aboutsummaryrefslogtreecommitdiffstats
path: root/contrib
diff options
context:
space:
mode:
authorsomov <somov@yandex-team.ru>2022-02-10 16:45:49 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:45:49 +0300
commit7489e4682331202b9c7d863c0898eb83d7b12c2b (patch)
tree9142afc54d335ea52910662635b898e79e192e49 /contrib
parenta5950576e397b1909261050b8c7da16db58f10b1 (diff)
downloadydb-7489e4682331202b9c7d863c0898eb83d7b12c2b.tar.gz
Restoring authorship annotation for <somov@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'contrib')
-rw-r--r--contrib/libs/antlr3_cpp_runtime/ya.make10
-rw-r--r--contrib/libs/base64/avx2/ya.make2
-rw-r--r--contrib/libs/base64/ssse3/ya.make8
-rw-r--r--contrib/libs/crcutil/LICENSE404
-rw-r--r--contrib/libs/crcutil/crc32c_sse4.cc4
-rw-r--r--contrib/libs/cxxsupp/builtins/LICENSE.os_version_check.c.patch.txt622
-rw-r--r--contrib/libs/cxxsupp/builtins/LICENSE.os_version_check.c.txt182
-rw-r--r--contrib/libs/cxxsupp/builtins/LICENSE.txt182
-rw-r--r--contrib/libs/cxxsupp/builtins/int_types.h2
-rw-r--r--contrib/libs/cxxsupp/builtins/ya.make120
-rw-r--r--contrib/libs/cxxsupp/libcxx/include/__config24
-rw-r--r--contrib/libs/cxxsupp/libcxx/include/__locale2
-rw-r--r--contrib/libs/cxxsupp/libcxx/include/__string8
-rw-r--r--contrib/libs/cxxsupp/libcxx/include/__support/android/locale_bionic.h6
-rw-r--r--contrib/libs/cxxsupp/libcxx/include/__support/win32/atomic_win32.h4
-rw-r--r--contrib/libs/cxxsupp/libcxx/include/__tuple34
-rw-r--r--contrib/libs/cxxsupp/libcxx/include/complex4
-rw-r--r--contrib/libs/cxxsupp/libcxx/include/cxxabi.h4
-rw-r--r--contrib/libs/cxxsupp/libcxx/include/span20
-rw-r--r--contrib/libs/cxxsupp/libcxx/include/unwind.h14
-rw-r--r--contrib/libs/cxxsupp/libcxx/include/version20
-rw-r--r--contrib/libs/cxxsupp/libcxx/src/support/runtime/exception_pointer_msvc.ipp12
-rw-r--r--contrib/libs/cxxsupp/libcxx/ya.make60
-rw-r--r--contrib/libs/cxxsupp/libcxxrt/cxxabi.h6
-rw-r--r--contrib/libs/cxxsupp/libcxxrt/exception.cc16
-rw-r--r--contrib/libs/cxxsupp/libcxxrt/ya.make8
-rw-r--r--contrib/libs/cxxsupp/libgcc/cxxabi.cpp26
-rw-r--r--contrib/libs/cxxsupp/libgcc/cxxabi.h12
-rw-r--r--contrib/libs/cxxsupp/libgcc/stdcxx_bits.cpp24
-rw-r--r--contrib/libs/cxxsupp/libgcc/stdcxx_bits.h22
-rw-r--r--contrib/libs/cxxsupp/libgcc/ya.make30
-rw-r--r--contrib/libs/cxxsupp/libsan/generate_symbolizer.py24
-rw-r--r--contrib/libs/cxxsupp/libsan/inject.c8
-rw-r--r--contrib/libs/cxxsupp/libsan/ya.make26
-rw-r--r--contrib/libs/cxxsupp/system_stl/include/stlfwd22
-rw-r--r--contrib/libs/cxxsupp/system_stl/ya.make18
-rw-r--r--contrib/libs/cxxsupp/ya.make28
-rw-r--r--contrib/libs/farmhash/COPYING38
-rw-r--r--contrib/libs/farmhash/IMPORT2
-rw-r--r--contrib/libs/farmhash/README326
-rw-r--r--contrib/libs/farmhash/arch/sse41/ya.make24
-rw-r--r--contrib/libs/farmhash/arch/sse42/ya.make32
-rw-r--r--contrib/libs/farmhash/arch/sse42_aesni/ya.make22
-rw-r--r--contrib/libs/farmhash/common.h824
-rw-r--r--contrib/libs/farmhash/farmhash.cc23662
-rw-r--r--contrib/libs/farmhash/farmhash.h656
-rw-r--r--contrib/libs/farmhash/farmhash_iface.cc212
-rw-r--r--contrib/libs/farmhash/farmhash_iface.h56
-rw-r--r--contrib/libs/farmhash/farmhashcc.cc628
-rw-r--r--contrib/libs/farmhash/farmhashmk.cc240
-rw-r--r--contrib/libs/farmhash/farmhashna.cc346
-rw-r--r--contrib/libs/farmhash/farmhashnt.cc62
-rw-r--r--contrib/libs/farmhash/farmhashsa.cc432
-rw-r--r--contrib/libs/farmhash/farmhashsu.cc452
-rw-r--r--contrib/libs/farmhash/farmhashte.cc476
-rw-r--r--contrib/libs/farmhash/farmhashuo.cc242
-rw-r--r--contrib/libs/farmhash/farmhashxo.cc142
-rwxr-xr-xcontrib/libs/farmhash/split.py148
-rw-r--r--contrib/libs/farmhash/test.cc19574
-rw-r--r--contrib/libs/farmhash/ut/ya.make20
-rw-r--r--contrib/libs/farmhash/ya.make46
-rw-r--r--contrib/libs/fastlz/LICENSE48
-rw-r--r--contrib/libs/grpc/src/python/grpcio/ya.make4
-rw-r--r--contrib/libs/grpc/ya.make2
-rw-r--r--contrib/libs/highwayhash/IMPORT2
-rw-r--r--contrib/libs/highwayhash/LICENSE406
-rw-r--r--contrib/libs/highwayhash/README.md700
-rw-r--r--contrib/libs/highwayhash/arch/avx2/ya.make34
-rw-r--r--contrib/libs/highwayhash/arch/sse41/ya.make32
-rw-r--r--contrib/libs/highwayhash/highwayhash/arch_specific.cc236
-rw-r--r--contrib/libs/highwayhash/highwayhash/arch_specific.h306
-rw-r--r--contrib/libs/highwayhash/highwayhash/benchmark.cc626
-rw-r--r--contrib/libs/highwayhash/highwayhash/c_bindings.cc70
-rw-r--r--contrib/libs/highwayhash/highwayhash/c_bindings.h110
-rw-r--r--contrib/libs/highwayhash/highwayhash/compiler_specific.h180
-rw-r--r--contrib/libs/highwayhash/highwayhash/data_parallel.h682
-rw-r--r--contrib/libs/highwayhash/highwayhash/data_parallel_benchmark.cc302
-rw-r--r--contrib/libs/highwayhash/highwayhash/data_parallel_test.cc350
-rw-r--r--contrib/libs/highwayhash/highwayhash/endianess.h216
-rw-r--r--contrib/libs/highwayhash/highwayhash/example.cc60
-rw-r--r--contrib/libs/highwayhash/highwayhash/hh_avx2.cc38
-rw-r--r--contrib/libs/highwayhash/highwayhash/hh_avx2.h766
-rw-r--r--contrib/libs/highwayhash/highwayhash/hh_buffer.h206
-rw-r--r--contrib/libs/highwayhash/highwayhash/hh_portable.cc38
-rw-r--r--contrib/libs/highwayhash/highwayhash/hh_portable.h602
-rw-r--r--contrib/libs/highwayhash/highwayhash/hh_sse41.cc38
-rw-r--r--contrib/libs/highwayhash/highwayhash/hh_sse41.h660
-rw-r--r--contrib/libs/highwayhash/highwayhash/hh_types.h100
-rw-r--r--contrib/libs/highwayhash/highwayhash/highwayhash.h404
-rw-r--r--contrib/libs/highwayhash/highwayhash/highwayhash_target.cc208
-rw-r--r--contrib/libs/highwayhash/highwayhash/highwayhash_target.h182
-rw-r--r--contrib/libs/highwayhash/highwayhash/highwayhash_test.cc776
-rw-r--r--contrib/libs/highwayhash/highwayhash/highwayhash_test_avx2.cc38
-rw-r--r--contrib/libs/highwayhash/highwayhash/highwayhash_test_portable.cc38
-rw-r--r--contrib/libs/highwayhash/highwayhash/highwayhash_test_sse41.cc38
-rw-r--r--contrib/libs/highwayhash/highwayhash/highwayhash_test_target.cc422
-rw-r--r--contrib/libs/highwayhash/highwayhash/highwayhash_test_target.h178
-rw-r--r--contrib/libs/highwayhash/highwayhash/iaca.h126
-rw-r--r--contrib/libs/highwayhash/highwayhash/instruction_sets.cc282
-rw-r--r--contrib/libs/highwayhash/highwayhash/instruction_sets.h176
-rw-r--r--contrib/libs/highwayhash/highwayhash/load3.h288
-rw-r--r--contrib/libs/highwayhash/highwayhash/nanobenchmark.cc874
-rw-r--r--contrib/libs/highwayhash/highwayhash/nanobenchmark.h316
-rw-r--r--contrib/libs/highwayhash/highwayhash/nanobenchmark_example.cc96
-rw-r--r--contrib/libs/highwayhash/highwayhash/os_specific.cc478
-rw-r--r--contrib/libs/highwayhash/highwayhash/os_specific.h108
-rw-r--r--contrib/libs/highwayhash/highwayhash/profiler.h1508
-rw-r--r--contrib/libs/highwayhash/highwayhash/profiler_example.cc194
-rw-r--r--contrib/libs/highwayhash/highwayhash/robust_statistics.h270
-rw-r--r--contrib/libs/highwayhash/highwayhash/scalar.h704
-rw-r--r--contrib/libs/highwayhash/highwayhash/scalar_sip_tree_hash.cc366
-rw-r--r--contrib/libs/highwayhash/highwayhash/scalar_sip_tree_hash.h74
-rw-r--r--contrib/libs/highwayhash/highwayhash/sip_hash.cc66
-rw-r--r--contrib/libs/highwayhash/highwayhash/sip_hash.h342
-rw-r--r--contrib/libs/highwayhash/highwayhash/sip_hash_test.cc300
-rw-r--r--contrib/libs/highwayhash/highwayhash/sip_tree_hash.cc454
-rw-r--r--contrib/libs/highwayhash/highwayhash/sip_tree_hash.h104
-rw-r--r--contrib/libs/highwayhash/highwayhash/state_helpers.h254
-rw-r--r--contrib/libs/highwayhash/highwayhash/tsc_timer.h408
-rw-r--r--contrib/libs/highwayhash/highwayhash/vector128.h1592
-rw-r--r--contrib/libs/highwayhash/highwayhash/vector256.h1516
-rw-r--r--contrib/libs/highwayhash/highwayhash/vector_test.cc118
-rw-r--r--contrib/libs/highwayhash/highwayhash/vector_test_avx2.cc38
-rw-r--r--contrib/libs/highwayhash/highwayhash/vector_test_portable.cc38
-rw-r--r--contrib/libs/highwayhash/highwayhash/vector_test_sse41.cc38
-rw-r--r--contrib/libs/highwayhash/highwayhash/vector_test_target.cc440
-rw-r--r--contrib/libs/highwayhash/highwayhash/vector_test_target.h74
-rw-r--r--contrib/libs/highwayhash/ya.make80
-rw-r--r--contrib/libs/jemalloc/reg_zone.cpp46
-rw-r--r--contrib/libs/jemalloc/src/jemalloc.c4
-rw-r--r--contrib/libs/jwt-cpp/picojson.h2
-rw-r--r--contrib/libs/libaio/COPYING1030
-rw-r--r--contrib/libs/libaio/ya.make6
-rw-r--r--contrib/libs/libc_compat/ubuntu_14/README.md182
-rw-r--r--contrib/libs/libc_compat/ubuntu_14/aligned_alloc.c12
-rw-r--r--contrib/libs/libc_compat/ubuntu_14/c16rtomb.c70
-rw-r--r--contrib/libs/libc_compat/ubuntu_14/c32rtomb.c14
-rw-r--r--contrib/libs/libc_compat/ubuntu_14/features.h10
-rw-r--r--contrib/libs/libc_compat/ubuntu_14/getauxval.cpp20
-rw-r--r--contrib/libs/libc_compat/ubuntu_14/glibc.cpp222
-rw-r--r--contrib/libs/libc_compat/ubuntu_14/glibc.h40
-rw-r--r--contrib/libs/libc_compat/ubuntu_14/mbrtoc16.c60
-rw-r--r--contrib/libs/libc_compat/ubuntu_14/mbrtoc32.c26
-rw-r--r--contrib/libs/libc_compat/ubuntu_14/secure_getenv.cpp24
-rw-r--r--contrib/libs/libc_compat/ubuntu_14/timespec_get.c20
-rw-r--r--contrib/libs/libc_compat/ubuntu_14/ya.make44
-rw-r--r--contrib/libs/libidn/COPYING.LIB1008
-rw-r--r--contrib/libs/libidn/stringprep.h2
-rw-r--r--contrib/libs/libunwind/src/Unwind-EHABI.cpp2
-rw-r--r--contrib/libs/libunwind/ut/libunwind_ut.cpp52
-rw-r--r--contrib/libs/libunwind/ut/ya.make16
-rw-r--r--contrib/libs/libxml/COPYING46
-rw-r--r--contrib/libs/libxml/ya.make4
-rw-r--r--contrib/libs/llvm12/include/llvm/Demangle/ItaniumDemangle.h16
-rw-r--r--contrib/libs/llvm12/lib/Demangle/ItaniumDemangle.cpp12
-rw-r--r--contrib/libs/lzmasdk/AesOpt.c20
-rw-r--r--contrib/libs/openssl/dynamic/ya.make10
-rw-r--r--contrib/libs/openssl/include/openssl/opensslconf-linux.h40
-rw-r--r--contrib/libs/openssl/ssl/ssl_cert.c10
-rw-r--r--contrib/libs/protoc/LICENSE62
-rw-r--r--contrib/libs/re2/re2/re2.cc4
-rw-r--r--contrib/libs/re2/re2/re2.h28
-rw-r--r--contrib/libs/re2/re2/stringpiece.h8
-rw-r--r--contrib/libs/sparsehash/ya.make4
-rw-r--r--contrib/libs/sqlite3/sqlite3.c2
-rw-r--r--contrib/libs/sqlite3/ya.make6
-rw-r--r--contrib/libs/t1ha/src/t1ha0.c2
-rw-r--r--contrib/libs/ya.make42
-rw-r--r--contrib/libs/zlib/gzguts.h4
-rw-r--r--contrib/python/cryptography/LICENSE8
-rw-r--r--contrib/python/cryptography/LICENSE.APACHE404
-rw-r--r--contrib/python/cryptography/LICENSE.BSD54
-rw-r--r--contrib/python/ya.make2
-rw-r--r--contrib/restricted/abseil-cpp-tstring/CONTRIBUTING.md6
-rw-r--r--contrib/restricted/abseil-cpp-tstring/README.md28
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/algorithm/algorithm.h8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/algorithm/container.h20
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/call_once.h36
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/casts.h12
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/config.h18
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/const_init.h12
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/atomic_hook.h4
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/atomic_hook_test_helper.h8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/cycleclock.cc8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/cycleclock.h4
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/direct_mmap.h10
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/endian.h10
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/exception_safety_testing.h78
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/exception_testing.h2
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/hide_ptr.h6
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/identity.h4
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/inline_variable.h12
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/inline_variable_testing.h6
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/invoke.h14
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/low_level_alloc.cc26
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/low_level_alloc.h10
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/low_level_alloc/ya.make10
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/low_level_scheduling.h8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/per_thread_tls.h2
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging.cc24
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging.h40
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/scheduling_mode.h4
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/scoped_set_env.cc8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/scoped_set_env.h12
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock.cc20
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock.h24
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_akaros.inc4
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_linux.inc6
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_posix.inc8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait.cc14
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait.h14
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait/ya.make2
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_win32.inc4
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/sysinfo.cc24
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/sysinfo.h6
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/thread_annotations.h2
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/thread_identity.cc18
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/thread_identity.h12
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/throw_delegate.cc28
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/throw_delegate.h26
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/throw_delegate/ya.make6
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/unaligned_access.h18
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/unscaledcycleclock.cc8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/unscaledcycleclock.h6
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity.cc12
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity.h42
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity/ya.make2
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/macros.h12
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/optimization.h2
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/options.h24
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/port.h6
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/thread_annotations.h8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/base/ya.make6
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/city/ya.make2
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/btree_map.h70
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/btree_set.h70
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/btree_test.h22
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/fixed_array.h38
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/flat_hash_map.h70
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/flat_hash_set.h74
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/inlined_vector.h68
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/btree.h102
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/btree_container.h34
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/common.h14
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/compressed_tuple.h50
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/container_memory.h60
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/counting_allocator.h4
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hash_function_defaults.h30
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hash_generator_testing.h28
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hash_policy_testing.h18
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hash_policy_traits.h8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hashtable_debug.h16
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hashtable_debug_hooks.h4
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hashtablez_sampler.cc20
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hashtablez_sampler.h20
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hashtablez_sampler_force_weak_definition.cc8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/inlined_vector.h14
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/layout.h48
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/node_hash_policy.h4
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/raw_hash_map.h14
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/raw_hash_set.cc8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/raw_hash_set.h94
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/raw_hash_set/ya.make36
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/test_instance_tracker.h14
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/tracked.h4
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_map_constructor_test.h12
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_map_lookup_test.h8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_map_members_test.h12
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_map_modifiers_test.h8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_set_constructor_test.h14
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_set_lookup_test.h8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_set_members_test.h12
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_set_modifiers_test.h8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/node_hash_map.h82
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/node_hash_set.h76
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/failure_signal_handler.cc40
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/failure_signal_handler.h14
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/address_is_readable.cc12
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/address_is_readable.h4
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/demangle.cc6
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/demangle.h4
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/elf_mem_image.cc8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/elf_mem_image.h4
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/examine_stack.cc18
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/examine_stack.h4
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stack_consumption.h4
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_aarch64-inl.inc20
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_arm-inl.inc10
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_config.h6
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_generic-inl.inc8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_powerpc-inl.inc28
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_unimplemented-inl.inc4
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_win32-inl.inc4
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_x86-inl.inc24
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/symbolize.h12
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/vdso_support.cc12
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/vdso_support.h8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/leak_check.cc10
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/leak_check.h4
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/leak_check/ya.make2
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/leak_check_disable/ya.make2
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/stacktrace.cc28
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/stacktrace.h24
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/stacktrace/ya.make8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize.cc8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize.h18
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize/ya.make16
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize_elf.inc20
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize_unimplemented.inc6
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize_win32.inc6
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/debugging/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/demangle/ya.make10
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/functional/function_ref.h44
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/functional/internal/function_ref.h12
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/hash/hash.h66
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/hash/hash_testing.h44
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/hash/internal/city.cc28
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/hash/internal/city.h4
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/hash/internal/hash.cc6
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/hash/internal/hash.h72
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/hash/internal/spy_hash_state.h34
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/memory/memory.h74
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/meta/type_traits.h32
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/numeric/int128.cc106
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/numeric/int128.h86
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/profiling/internal/exponential_biased.cc8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/profiling/internal/exponential_biased.h4
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/profiling/internal/periodic_sampler.cc4
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/profiling/internal/periodic_sampler.h6
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/ascii.cc20
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/ascii.h62
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/charconv.cc30
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/charconv.h10
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/escaping.cc134
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/escaping.h54
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/char_map.h8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/charconv_bigint.cc12
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/charconv_bigint.h16
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/charconv_parse.cc10
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/charconv_parse.h12
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/escaping_test_common.h10
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/memutil.cc10
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/memutil.h14
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/numbers_test_common.h6
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/ostringstream.cc6
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/ostringstream.h32
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/pow10_helper.h4
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/resize_uninitialized.h16
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/stl_type_traits.h56
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/arg.cc26
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/arg.h18
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/bind.cc40
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/bind.h42
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/checker.h8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/extension.cc8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/extension.h10
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/float_conversion.cc10
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/float_conversion.h6
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/output.cc6
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/output.h8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/parser.cc6
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/parser.h8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/ya.make14
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_join_internal.h66
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_split_internal.h102
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/utf8.cc6
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/utf8.h4
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/match.cc12
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/match.h18
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/numbers.cc60
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/numbers.h62
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_cat.cc58
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_cat.h98
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_format.h116
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_join.h116
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_replace.cc20
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_replace.h72
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_split.cc70
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_split.h158
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/string_view.cc8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/string_view.h74
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/strip.h40
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/substitute.cc42
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/substitute.h210
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/strings/ya.make12
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/barrier.cc10
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/barrier.h8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/blocking_counter.cc8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/blocking_counter.h8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/create_thread_identity.cc14
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/create_thread_identity.h10
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/graphcycles.cc16
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/graphcycles.h4
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/kernel_timeout.h30
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/per_thread_sem.cc26
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/per_thread_sem.h26
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/thread_pool.h18
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/waiter.cc16
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/waiter.h10
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/ya.make10
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/mutex.cc94
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/mutex.h72
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/notification.cc18
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/notification.h14
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/ya.make32
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/civil_time.cc36
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/civil_time.h232
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/civil_time/ya.make2
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/clock.cc62
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/clock.h20
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/duration.cc40
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/format.cc46
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/include/cctz/civil_time.h6
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/include/cctz/civil_time_detail.h4
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/include/cctz/time_zone.h26
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/include/cctz/zone_info_source.h22
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/civil_time_detail.cc6
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_fixed.cc12
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_fixed.h12
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_format.cc46
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_if.cc6
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_if.h14
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_impl.cc8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_impl.h20
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_info.cc34
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_info.h22
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_libc.cc16
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_libc.h10
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_lookup.cc12
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_posix.cc8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_posix.h14
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/zone_info_source.cc16
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/get_current_time_chrono.inc4
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/get_current_time_posix.inc8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/test_util.h8
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/time.cc130
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/time.h352
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/time_zone/ya.make2
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/time/ya.make18
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/types/any.h164
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_any_cast.cc10
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_any_cast.h24
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_any_cast/ya.make6
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_optional_access.cc10
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_optional_access.h20
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_optional_access/ya.make6
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_variant_access.cc12
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_variant_access.h24
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_variant_access/ya.make6
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/types/compare.h48
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/types/internal/optional.h48
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/types/internal/span.h22
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/types/internal/variant.h274
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/types/optional.h142
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/types/span.h134
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/types/variant.h246
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/utility/utility.h82
-rw-r--r--contrib/restricted/abseil-cpp-tstring/ya.make192
-rw-r--r--contrib/restricted/abseil-cpp/.yandex_meta/devtools.licenses.report10
-rw-r--r--contrib/restricted/abseil-cpp/.yandex_meta/licenses.list.txt514
-rw-r--r--contrib/restricted/abseil-cpp/absl/algorithm/.yandex_meta/licenses.list.txt32
-rw-r--r--contrib/restricted/abseil-cpp/absl/algorithm/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/base/.yandex_meta/licenses.list.txt52
-rw-r--r--contrib/restricted/abseil-cpp/absl/base/internal/low_level_alloc/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/base/internal/raw_logging/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/base/internal/scoped_set_env/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/base/internal/spinlock_wait/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/base/internal/strerror/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/base/internal/throw_delegate/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/base/log_severity/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/base/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/city/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/container/.yandex_meta/licenses.list.txt48
-rw-r--r--contrib/restricted/abseil-cpp/absl/container/internal/absl_hashtablez_sampler/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/container/internal/raw_hash_set/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/container/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/debugging/.yandex_meta/licenses.list.txt48
-rw-r--r--contrib/restricted/abseil-cpp/absl/debugging/failure_signal_handler/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/debugging/internal/.yandex_meta/licenses.list.txt76
-rw-r--r--contrib/restricted/abseil-cpp/absl/debugging/leak_check/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/debugging/leak_check_disable/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/debugging/stacktrace/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/debugging/symbolize/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/debugging/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/demangle/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/flags/.yandex_meta/licenses.list.txt40
-rw-r--r--contrib/restricted/abseil-cpp/absl/flags/commandlineflag/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/flags/internal/commandlineflag/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/flags/internal/flag/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/flags/internal/program_name/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/flags/internal/usage/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/flags/marshalling/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/flags/parse/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/flags/reflection/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/flags/usage/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/functional/.yandex_meta/licenses.list.txt40
-rw-r--r--contrib/restricted/abseil-cpp/absl/functional/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/hash/.yandex_meta/licenses.list.txt32
-rw-r--r--contrib/restricted/abseil-cpp/absl/hash/internal/.yandex_meta/licenses.list.txt68
-rw-r--r--contrib/restricted/abseil-cpp/absl/memory/.yandex_meta/licenses.list.txt32
-rw-r--r--contrib/restricted/abseil-cpp/absl/memory/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/meta/.yandex_meta/licenses.list.txt32
-rw-r--r--contrib/restricted/abseil-cpp/absl/meta/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/numeric/.yandex_meta/licenses.list.txt76
-rw-r--r--contrib/restricted/abseil-cpp/absl/numeric/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/profiling/internal/exponential_biased/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/profiling/internal/periodic_sampler/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/random/internal/absl_random_internal_distribution_test_util/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/random/internal/pool_urbg/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/random/internal/randen/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/random/internal/randen_detect/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/random/internal/randen_hwaes/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/random/internal/randen_round_keys/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/random/internal/randen_slow/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/random/seed_gen_exception/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/random/seed_sequences/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/status/.yandex_meta/licenses.list.txt40
-rw-r--r--contrib/restricted/abseil-cpp/absl/status/statusor/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/status/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/strings/.yandex_meta/licenses.list.txt84
-rw-r--r--contrib/restricted/abseil-cpp/absl/strings/cord/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/strings/internal/cordz_functions/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/strings/internal/cordz_handle/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/strings/internal/cordz_info/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/strings/internal/cordz_sample_token/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/strings/internal/str_format/.yandex_meta/licenses.list.txt40
-rw-r--r--contrib/restricted/abseil-cpp/absl/strings/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/synchronization/.yandex_meta/licenses.list.txt32
-rw-r--r--contrib/restricted/abseil-cpp/absl/synchronization/internal/.yandex_meta/licenses.list.txt68
-rw-r--r--contrib/restricted/abseil-cpp/absl/synchronization/internal/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/synchronization/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/time/.yandex_meta/licenses.list.txt84
-rw-r--r--contrib/restricted/abseil-cpp/absl/time/civil_time/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/time/time_zone/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/time/ya.make12
-rw-r--r--contrib/restricted/abseil-cpp/absl/types/.yandex_meta/licenses.list.txt40
-rw-r--r--contrib/restricted/abseil-cpp/absl/types/bad_any_cast/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/types/bad_optional_access/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/types/bad_variant_access/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/types/internal/.yandex_meta/licenses.list.txt48
-rw-r--r--contrib/restricted/abseil-cpp/absl/types/internal/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/types/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/absl/utility/.yandex_meta/licenses.list.txt32
-rw-r--r--contrib/restricted/abseil-cpp/absl/utility/ya.make4
-rw-r--r--contrib/restricted/abseil-cpp/ya.make6
-rw-r--r--contrib/restricted/aws/aws-c-cal/.yandex_meta/devtools.copyrights.report118
-rw-r--r--contrib/restricted/aws/aws-c-cal/.yandex_meta/devtools.licenses.report244
-rw-r--r--contrib/restricted/aws/aws-c-cal/.yandex_meta/licenses.list.txt394
-rw-r--r--contrib/restricted/aws/aws-c-cal/ya.make12
-rw-r--r--contrib/restricted/aws/aws-c-event-stream/.yandex_meta/devtools.copyrights.report130
-rw-r--r--contrib/restricted/aws/aws-c-event-stream/.yandex_meta/devtools.licenses.report256
-rw-r--r--contrib/restricted/aws/aws-c-event-stream/.yandex_meta/licenses.list.txt482
-rw-r--r--contrib/restricted/aws/aws-c-event-stream/ya.make4
-rw-r--r--contrib/restricted/aws/aws-c-io/.yandex_meta/devtools.copyrights.report176
-rw-r--r--contrib/restricted/aws/aws-c-io/.yandex_meta/devtools.licenses.report302
-rw-r--r--contrib/restricted/aws/aws-c-io/.yandex_meta/licenses.list.txt448
-rw-r--r--contrib/restricted/aws/aws-c-io/ya.make12
-rw-r--r--contrib/restricted/aws/aws-checksums/.yandex_meta/devtools.copyrights.report96
-rw-r--r--contrib/restricted/aws/aws-checksums/.yandex_meta/devtools.licenses.report120
-rw-r--r--contrib/restricted/aws/aws-checksums/.yandex_meta/licenses.list.txt418
-rw-r--r--contrib/restricted/aws/aws-checksums/ya.make4
-rw-r--r--contrib/restricted/boost/.yandex_meta/devtools.copyrights.report77090
-rw-r--r--contrib/restricted/boost/.yandex_meta/devtools.licenses.report38692
-rw-r--r--contrib/restricted/boost/.yandex_meta/licenses.list.txt20136
-rw-r--r--contrib/restricted/boost/LICENSE_1_0.txt46
-rw-r--r--contrib/restricted/boost/arcadia_test/ya.make4
-rw-r--r--contrib/restricted/boost/boost/concept/detail/msvc.hpp18
-rw-r--r--contrib/restricted/boost/boost/config/detail/select_compiler_config.hpp2
-rw-r--r--contrib/restricted/boost/boost/type_traits/type_with_alignment.hpp2
-rw-r--r--contrib/restricted/boost/libs/.yandex_meta/licenses.list.txt140
-rw-r--r--contrib/restricted/boost/libs/asio/ya.make14
-rw-r--r--contrib/restricted/boost/libs/atomic/.yandex_meta/licenses.list.txt78
-rw-r--r--contrib/restricted/boost/libs/atomic/ya.make14
-rw-r--r--contrib/restricted/boost/libs/chrono/.yandex_meta/licenses.list.txt172
-rw-r--r--contrib/restricted/boost/libs/chrono/ya.make14
-rw-r--r--contrib/restricted/boost/libs/container/.yandex_meta/licenses.list.txt130
-rw-r--r--contrib/restricted/boost/libs/container/ya.make22
-rw-r--r--contrib/restricted/boost/libs/context/.yandex_meta/licenses.list.txt182
-rw-r--r--contrib/restricted/boost/libs/context/ya.make22
-rw-r--r--contrib/restricted/boost/libs/coroutine/.yandex_meta/licenses.list.txt72
-rw-r--r--contrib/restricted/boost/libs/coroutine/ya.make16
-rw-r--r--contrib/restricted/boost/libs/date_time/.yandex_meta/licenses.list.txt98
-rw-r--r--contrib/restricted/boost/libs/date_time/ya.make14
-rw-r--r--contrib/restricted/boost/libs/exception/.yandex_meta/licenses.list.txt66
-rw-r--r--contrib/restricted/boost/libs/exception/ya.make14
-rw-r--r--contrib/restricted/boost/libs/filesystem/.yandex_meta/licenses.list.txt160
-rw-r--r--contrib/restricted/boost/libs/filesystem/ya.make28
-rw-r--r--contrib/restricted/boost/libs/iostreams/.yandex_meta/licenses.list.txt134
-rw-r--r--contrib/restricted/boost/libs/iostreams/ya.make22
-rw-r--r--contrib/restricted/boost/libs/locale/.yandex_meta/licenses.list.txt76
-rw-r--r--contrib/restricted/boost/libs/locale/ya.make22
-rw-r--r--contrib/restricted/boost/libs/log/.yandex_meta/licenses.list.txt132
-rw-r--r--contrib/restricted/boost/libs/log/ya.make18
-rw-r--r--contrib/restricted/boost/libs/program_options/.yandex_meta/licenses.list.txt110
-rw-r--r--contrib/restricted/boost/libs/program_options/ya.make14
-rw-r--r--contrib/restricted/boost/libs/python/.yandex_meta/licenses.list.txt238
-rw-r--r--contrib/restricted/boost/libs/python/arcadia_test/mod/ya.make26
-rw-r--r--contrib/restricted/boost/libs/python/arcadia_test/py2/ya.make20
-rw-r--r--contrib/restricted/boost/libs/python/arcadia_test/py3/ya.make20
-rw-r--r--contrib/restricted/boost/libs/python/ya.make14
-rw-r--r--contrib/restricted/boost/libs/random/.yandex_meta/licenses.list.txt86
-rw-r--r--contrib/restricted/boost/libs/random/ya.make20
-rw-r--r--contrib/restricted/boost/libs/regex/.yandex_meta/licenses.list.txt102
-rw-r--r--contrib/restricted/boost/libs/regex/ya.make16
-rw-r--r--contrib/restricted/boost/libs/serialization/.yandex_meta/licenses.list.txt174
-rw-r--r--contrib/restricted/boost/libs/serialization/ya.make14
-rw-r--r--contrib/restricted/boost/libs/system/.yandex_meta/licenses.list.txt72
-rw-r--r--contrib/restricted/boost/libs/system/ya.make14
-rw-r--r--contrib/restricted/boost/libs/test/targets/lib/ya.make14
-rw-r--r--contrib/restricted/boost/libs/test/targets/prog/ya.make14
-rw-r--r--contrib/restricted/boost/libs/test/targets/test/ya.make14
-rw-r--r--contrib/restricted/boost/libs/thread/.yandex_meta/licenses.list.txt232
-rw-r--r--contrib/restricted/boost/libs/thread/ya.make16
-rw-r--r--contrib/restricted/boost/libs/timer/.yandex_meta/licenses.list.txt84
-rw-r--r--contrib/restricted/boost/libs/timer/ya.make14
-rw-r--r--contrib/restricted/boost/libs/ya.make14
-rw-r--r--contrib/restricted/boost/ya.make34
-rw-r--r--contrib/restricted/cityhash-1.0.2/.yandex_meta/devtools.copyrights.report88
-rw-r--r--contrib/restricted/cityhash-1.0.2/.yandex_meta/devtools.licenses.report88
-rw-r--r--contrib/restricted/cityhash-1.0.2/.yandex_meta/licenses.list.txt44
-rw-r--r--contrib/restricted/cityhash-1.0.2/ya.make26
-rw-r--r--contrib/restricted/dragonbox/.yandex_meta/devtools.copyrights.report108
-rw-r--r--contrib/restricted/dragonbox/.yandex_meta/devtools.licenses.report672
-rw-r--r--contrib/restricted/dragonbox/.yandex_meta/licenses.list.txt1114
-rw-r--r--contrib/restricted/dragonbox/LICENSE-Apache2-LLVM436
-rw-r--r--contrib/restricted/dragonbox/LICENSE-Boost46
-rw-r--r--contrib/restricted/dragonbox/source/LICENSE-Apache2402
-rw-r--r--contrib/restricted/dragonbox/source/LICENSE-Boost46
-rw-r--r--contrib/restricted/dragonbox/ya.make28
-rw-r--r--contrib/restricted/fast_float/.yandex_meta/devtools.copyrights.report76
-rw-r--r--contrib/restricted/fast_float/.yandex_meta/devtools.licenses.report224
-rw-r--r--contrib/restricted/fast_float/.yandex_meta/licenses.list.txt516
-rw-r--r--contrib/restricted/fast_float/LICENSE-APACHE378
-rw-r--r--contrib/restricted/fast_float/ya.make2
-rw-r--r--contrib/restricted/googletest/googlemock/.yandex_meta/licenses.list.txt288
-rw-r--r--contrib/restricted/googletest/googlemock/gmock_main/.yandex_meta/licenses.list.txt192
-rw-r--r--contrib/restricted/googletest/googlemock/gmock_main/ya.make12
-rw-r--r--contrib/restricted/googletest/googlemock/include/gmock/gmock-actions.h1744
-rw-r--r--contrib/restricted/googletest/googlemock/include/gmock/gmock-cardinalities.h268
-rw-r--r--contrib/restricted/googletest/googlemock/include/gmock/gmock-matchers.h5910
-rw-r--r--contrib/restricted/googletest/googlemock/include/gmock/gmock-more-actions.h126
-rw-r--r--contrib/restricted/googletest/googlemock/include/gmock/gmock-more-matchers.h102
-rw-r--r--contrib/restricted/googletest/googlemock/include/gmock/gmock-spec-builders.h3152
-rw-r--r--contrib/restricted/googletest/googlemock/include/gmock/gmock.h12
-rw-r--r--contrib/restricted/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h2
-rw-r--r--contrib/restricted/googletest/googlemock/include/gmock/internal/custom/gmock-matchers.h62
-rw-r--r--contrib/restricted/googletest/googlemock/include/gmock/internal/custom/gmock-port.h66
-rw-r--r--contrib/restricted/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h626
-rw-r--r--contrib/restricted/googletest/googlemock/include/gmock/internal/gmock-port.h138
-rw-r--r--contrib/restricted/googletest/googlemock/src/gmock-all.cc90
-rw-r--r--contrib/restricted/googletest/googlemock/src/gmock-cardinalities.cc298
-rw-r--r--contrib/restricted/googletest/googlemock/src/gmock-internal-utils.cc320
-rw-r--r--contrib/restricted/googletest/googlemock/src/gmock-matchers.cc664
-rw-r--r--contrib/restricted/googletest/googlemock/src/gmock-spec-builders.cc1434
-rw-r--r--contrib/restricted/googletest/googlemock/src/gmock.cc342
-rw-r--r--contrib/restricted/googletest/googlemock/src/gmock_main.cc102
-rw-r--r--contrib/restricted/googletest/googlemock/ya.make30
-rw-r--r--contrib/restricted/googletest/googletest/.yandex_meta/licenses.list.txt298
-rw-r--r--contrib/restricted/googletest/googletest/gtest_main/.yandex_meta/licenses.list.txt192
-rw-r--r--contrib/restricted/googletest/googletest/gtest_main/ya.make12
-rw-r--r--contrib/restricted/googletest/googletest/include/gtest/gtest-death-test.h524
-rw-r--r--contrib/restricted/googletest/googletest/include/gtest/gtest-message.h408
-rw-r--r--contrib/restricted/googletest/googletest/include/gtest/gtest-param-test.h718
-rw-r--r--contrib/restricted/googletest/googletest/include/gtest/gtest-printers.h1102
-rw-r--r--contrib/restricted/googletest/googletest/include/gtest/gtest-spi.h446
-rw-r--r--contrib/restricted/googletest/googletest/include/gtest/gtest-test-part.h314
-rw-r--r--contrib/restricted/googletest/googletest/include/gtest/gtest-typed-test.h322
-rw-r--r--contrib/restricted/googletest/googletest/include/gtest/gtest.h3802
-rw-r--r--contrib/restricted/googletest/googletest/include/gtest/gtest_pred_impl.h630
-rw-r--r--contrib/restricted/googletest/googletest/include/gtest/gtest_prod.h96
-rw-r--r--contrib/restricted/googletest/googletest/include/gtest/internal/custom/gtest-port.h72
-rw-r--r--contrib/restricted/googletest/googletest/include/gtest/internal/custom/gtest-printers.h74
-rw-r--r--contrib/restricted/googletest/googletest/include/gtest/internal/custom/gtest.h66
-rw-r--r--contrib/restricted/googletest/googletest/include/gtest/internal/gtest-death-test-internal.h442
-rw-r--r--contrib/restricted/googletest/googletest/include/gtest/internal/gtest-filepath.h396
-rw-r--r--contrib/restricted/googletest/googletest/include/gtest/internal/gtest-internal.h1790
-rw-r--r--contrib/restricted/googletest/googletest/include/gtest/internal/gtest-param-util.h1100
-rw-r--r--contrib/restricted/googletest/googletest/include/gtest/internal/gtest-port-arch.h170
-rw-r--r--contrib/restricted/googletest/googletest/include/gtest/internal/gtest-port.h3736
-rw-r--r--contrib/restricted/googletest/googletest/include/gtest/internal/gtest-string.h300
-rw-r--r--contrib/restricted/googletest/googletest/include/gtest/internal/gtest-type-util.h178
-rw-r--r--contrib/restricted/googletest/googletest/src/gtest-all.cc90
-rw-r--r--contrib/restricted/googletest/googletest/src/gtest-death-test.cc2386
-rw-r--r--contrib/restricted/googletest/googletest/src/gtest-filepath.cc678
-rw-r--r--contrib/restricted/googletest/googletest/src/gtest-internal-inl.h2026
-rw-r--r--contrib/restricted/googletest/googletest/src/gtest-port.cc2186
-rw-r--r--contrib/restricted/googletest/googletest/src/gtest-printers.cc600
-rw-r--r--contrib/restricted/googletest/googletest/src/gtest-test-part.cc182
-rw-r--r--contrib/restricted/googletest/googletest/src/gtest-typed-test.cc198
-rw-r--r--contrib/restricted/googletest/googletest/src/gtest.cc8526
-rw-r--r--contrib/restricted/googletest/googletest/src/gtest_main.cc70
-rw-r--r--contrib/restricted/googletest/googletest/ya.make30
-rw-r--r--contrib/restricted/libffi/.yandex_meta/devtools.copyrights.report2104
-rw-r--r--contrib/restricted/libffi/.yandex_meta/devtools.licenses.report512
-rw-r--r--contrib/restricted/libffi/.yandex_meta/licenses.list.txt28864
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.bhaible/test-call/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.bhaible/test-callback/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/align_mixed/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/align_stdcall/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/err_bad_typedef/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/float/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/float1/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/float2/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/float3/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/float4/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/float_va/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/many/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/many2/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/many_double/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/many_mixed/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/negint/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/offsets/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/pr1172638/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/promotion/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/pyobjc-tc/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/return_dbl/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/return_dbl1/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/return_dbl2/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/return_fl/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/return_fl1/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/return_fl2/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/return_fl3/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/return_ldl/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/return_ll/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/return_ll1/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/return_sc/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/return_sl/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/return_uc/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/return_ul/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/strlen/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/strlen2/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/strlen3/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/strlen4/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/struct1/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/struct10/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/struct2/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/struct3/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/struct4/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/struct5/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/struct6/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/struct7/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/struct8/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/struct9/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/uninitialized/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/va_1/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/va_struct1/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/va_struct2/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.call/va_struct3/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/closure_fn0/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/closure_fn1/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/closure_fn2/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/closure_fn3/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/closure_fn4/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/closure_fn5/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/closure_fn6/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/closure_loc_fn0/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/closure_simple/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_12byte/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_16byte/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_18byte/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_19byte/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_1_1byte/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_20byte/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_20byte1/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_24byte/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_2byte/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_3_1byte/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_3byte1/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_3byte2/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_3float/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_4_1byte/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_4byte/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_5_1_byte/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_5byte/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_64byte/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_6_1_byte/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_6byte/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_7_1_byte/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_7byte/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_8byte/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_9byte1/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_9byte2/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_align_double/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_align_float/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_align_longdouble/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_align_longdouble_split/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_align_longdouble_split2/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_align_pointer/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_align_sint16/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_align_sint32/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_align_sint64/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_align_uint16/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_align_uint32/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_align_uint64/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_dbls_struct/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_double/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_double_va/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_float/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_longdouble/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_longdouble_va/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_many_mixed_args/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_many_mixed_float_double/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_multi_schar/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_multi_sshort/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_multi_sshortchar/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_multi_uchar/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_multi_ushort/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_multi_ushortchar/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_pointer/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_pointer_stack/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_schar/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_sint/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_sshort/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_struct_va1/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_uchar/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_uchar_va/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_uint/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_uint_va/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_ulong_va/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_ulonglong/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_ushort/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/cls_ushort_va/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/err_bad_abi/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/huge_struct/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/nested_struct/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/nested_struct1/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/nested_struct10/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/nested_struct11/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/nested_struct2/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/nested_struct3/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/nested_struct4/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/nested_struct5/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/nested_struct6/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/nested_struct7/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/nested_struct8/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/nested_struct9/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/problem1/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/stret_large/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/stret_large2/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/stret_medium/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/stret_medium2/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.closures/testclosure/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.complex/cls_align_complex_double/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.complex/cls_align_complex_float/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.complex/cls_align_complex_longdouble/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_double/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_float/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_longdouble/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_struct_double/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_struct_float/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_struct_longdouble/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_va_double/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_va_float/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_va_longdouble/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.complex/complex_double/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.complex/complex_float/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.complex/complex_int/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.complex/complex_longdouble/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.complex/many_complex_double/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.complex/many_complex_float/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.complex/many_complex_longdouble/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.complex/return_complex1_double/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.complex/return_complex1_float/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.complex/return_complex1_longdouble/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.complex/return_complex2_double/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.complex/return_complex2_float/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.complex/return_complex2_longdouble/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.complex/return_complex_double/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.complex/return_complex_float/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.complex/return_complex_longdouble/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.go/aa-direct/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/libffi.go/closure1/ya.make18
-rw-r--r--contrib/restricted/libffi/testsuite/ya.make2
-rw-r--r--contrib/restricted/libffi/ya.make20
-rw-r--r--contrib/restricted/thrift/.yandex_meta/devtools.copyrights.report174
-rw-r--r--contrib/restricted/thrift/.yandex_meta/devtools.licenses.report656
-rw-r--r--contrib/restricted/thrift/.yandex_meta/licenses.list.txt80
-rw-r--r--contrib/restricted/thrift/compiler/.yandex_meta/licenses.list.txt248
-rw-r--r--contrib/restricted/thrift/compiler/ya.make14
-rw-r--r--contrib/restricted/thrift/ya.make10
-rw-r--r--contrib/restricted/uriparser/tool/ya.make6
-rw-r--r--contrib/restricted/ya.make2
-rw-r--r--contrib/tools/bison/bison/src/parse-gram.c2
-rw-r--r--contrib/tools/bison/bison/src/parse-gram.y2
-rw-r--r--contrib/tools/bison/bison/src/print-xml.c2
-rw-r--r--contrib/tools/bison/bison/ya.make8
-rw-r--r--contrib/tools/bison/gnulib/src/clean-temp.c2
-rw-r--r--contrib/tools/bison/gnulib/src/closein.c2
-rw-r--r--contrib/tools/bison/gnulib/src/concat-filename.c2
-rw-r--r--contrib/tools/bison/gnulib/src/fflush.c2
-rw-r--r--contrib/tools/bison/gnulib/src/mbswidth.c2
-rw-r--r--contrib/tools/bison/gnulib/src/mkstemp-safer.c4
-rw-r--r--contrib/tools/bison/gnulib/src/obstack.h8
-rw-r--r--contrib/tools/bison/gnulib/src/obstack_printf.c4
-rw-r--r--contrib/tools/bison/gnulib/src/stdio--.h14
-rw-r--r--contrib/tools/bison/gnulib/src/stdlib--.h12
-rw-r--r--contrib/tools/bison/gnulib/src/strchrnul.c2
-rw-r--r--contrib/tools/bison/gnulib/src/string--.h18
-rw-r--r--contrib/tools/bison/gnulib/src/tempname.c2
-rw-r--r--contrib/tools/bison/gnulib/src/tmpdir.c2
-rw-r--r--contrib/tools/bison/gnulib/src/unistd--.h8
-rw-r--r--contrib/tools/bison/gnulib/src/wchar--.h14
-rw-r--r--contrib/tools/bison/gnulib/ya.make8
-rw-r--r--contrib/tools/python/LICENSE508
-rw-r--r--contrib/tools/python/src/Include/pyconfig.win32.h4
-rw-r--r--contrib/tools/python/ya.make4
-rw-r--r--contrib/tools/python3/src/Include/pytime.h4
-rw-r--r--contrib/tools/python3/src/Modules/_pickle.c18
-rw-r--r--contrib/tools/python3/src/Modules/_tracemalloc.c4
-rw-r--r--contrib/tools/python3/src/ya.make8
-rw-r--r--contrib/tools/yasm/config-osx-linux.h96
-rw-r--r--contrib/tools/yasm/config-win.h96
-rw-r--r--contrib/tools/yasm/config.h14
-rw-r--r--contrib/tools/yasm/frontends/tasm/license.c130
-rw-r--r--contrib/tools/yasm/frontends/tasm/tasm-options.c254
-rw-r--r--contrib/tools/yasm/frontends/tasm/tasm-options.h138
-rw-r--r--contrib/tools/yasm/frontends/tasm/tasm.c2018
-rw-r--r--contrib/tools/yasm/frontends/vsyasm/license.c130
-rw-r--r--contrib/tools/yasm/frontends/vsyasm/vsyasm.c2848
-rw-r--r--contrib/tools/yasm/frontends/yasm/license.c130
-rw-r--r--contrib/tools/yasm/frontends/yasm/yasm-options.c432
-rw-r--r--contrib/tools/yasm/frontends/yasm/yasm-options.h150
-rw-r--r--contrib/tools/yasm/frontends/yasm/yasm-plugin.c252
-rw-r--r--contrib/tools/yasm/frontends/yasm/yasm-plugin.h68
-rw-r--r--contrib/tools/yasm/frontends/yasm/yasm.c2834
-rw-r--r--contrib/tools/yasm/libyasm-stdint.h92
-rw-r--r--contrib/tools/yasm/libyasm.h150
-rw-r--r--contrib/tools/yasm/libyasm/arch.h990
-rw-r--r--contrib/tools/yasm/libyasm/assocdat.c276
-rw-r--r--contrib/tools/yasm/libyasm/assocdat.h152
-rw-r--r--contrib/tools/yasm/libyasm/bc-align.c490
-rw-r--r--contrib/tools/yasm/libyasm/bc-data.c1200
-rw-r--r--contrib/tools/yasm/libyasm/bc-incbin.c530
-rw-r--r--contrib/tools/yasm/libyasm/bc-org.c304
-rw-r--r--contrib/tools/yasm/libyasm/bc-reserve.c304
-rw-r--r--contrib/tools/yasm/libyasm/bitvect.c8090
-rw-r--r--contrib/tools/yasm/libyasm/bitvect.h1332
-rw-r--r--contrib/tools/yasm/libyasm/bytecode.c772
-rw-r--r--contrib/tools/yasm/libyasm/bytecode.h1276
-rw-r--r--contrib/tools/yasm/libyasm/cmake-module.c252
-rw-r--r--contrib/tools/yasm/libyasm/compat-queue.h912
-rw-r--r--contrib/tools/yasm/libyasm/coretype.h786
-rw-r--r--contrib/tools/yasm/libyasm/dbgfmt.h244
-rw-r--r--contrib/tools/yasm/libyasm/errwarn.c1058
-rw-r--r--contrib/tools/yasm/libyasm/errwarn.h696
-rw-r--r--contrib/tools/yasm/libyasm/expr.c3032
-rw-r--r--contrib/tools/yasm/libyasm/expr.h776
-rw-r--r--contrib/tools/yasm/libyasm/file.c1342
-rw-r--r--contrib/tools/yasm/libyasm/file.h1050
-rw-r--r--contrib/tools/yasm/libyasm/floatnum.c1520
-rw-r--r--contrib/tools/yasm/libyasm/floatnum.h262
-rw-r--r--contrib/tools/yasm/libyasm/genmodule.c456
-rw-r--r--contrib/tools/yasm/libyasm/hamt.c842
-rw-r--r--contrib/tools/yasm/libyasm/hamt.h246
-rw-r--r--contrib/tools/yasm/libyasm/insn.c590
-rw-r--r--contrib/tools/yasm/libyasm/insn.h538
-rw-r--r--contrib/tools/yasm/libyasm/intnum.c2192
-rw-r--r--contrib/tools/yasm/libyasm/intnum.h680
-rw-r--r--contrib/tools/yasm/libyasm/inttree.c1772
-rw-r--r--contrib/tools/yasm/libyasm/inttree.h140
-rw-r--r--contrib/tools/yasm/libyasm/linemap.c586
-rw-r--r--contrib/tools/yasm/libyasm/linemap.h282
-rw-r--r--contrib/tools/yasm/libyasm/listfmt.h248
-rw-r--r--contrib/tools/yasm/libyasm/md5.c616
-rw-r--r--contrib/tools/yasm/libyasm/md5.h64
-rw-r--r--contrib/tools/yasm/libyasm/mergesort.c722
-rw-r--r--contrib/tools/yasm/libyasm/module.h164
-rw-r--r--contrib/tools/yasm/libyasm/objfmt.h432
-rw-r--r--contrib/tools/yasm/libyasm/parser.h134
-rw-r--r--contrib/tools/yasm/libyasm/phash.c524
-rw-r--r--contrib/tools/yasm/libyasm/phash.h38
-rw-r--r--contrib/tools/yasm/libyasm/preproc.h420
-rw-r--r--contrib/tools/yasm/libyasm/section.c3162
-rw-r--r--contrib/tools/yasm/libyasm/section.h766
-rw-r--r--contrib/tools/yasm/libyasm/strcasecmp.c188
-rw-r--r--contrib/tools/yasm/libyasm/strsep.c164
-rw-r--r--contrib/tools/yasm/libyasm/symrec.c1428
-rw-r--r--contrib/tools/yasm/libyasm/symrec.h874
-rw-r--r--contrib/tools/yasm/libyasm/valparam.c770
-rw-r--r--contrib/tools/yasm/libyasm/valparam.h816
-rw-r--r--contrib/tools/yasm/libyasm/value.c1542
-rw-r--r--contrib/tools/yasm/libyasm/value.h344
-rw-r--r--contrib/tools/yasm/libyasm/xmalloc.c228
-rw-r--r--contrib/tools/yasm/libyasm/xstrdup.c136
-rw-r--r--contrib/tools/yasm/modules/arch/lc3b/lc3barch.c424
-rw-r--r--contrib/tools/yasm/modules/arch/lc3b/lc3barch.h140
-rw-r--r--contrib/tools/yasm/modules/arch/lc3b/lc3bbc.c498
-rw-r--r--contrib/tools/yasm/modules/arch/x86/x86arch.c1266
-rw-r--r--contrib/tools/yasm/modules/arch/x86/x86arch.h672
-rw-r--r--contrib/tools/yasm/modules/arch/x86/x86bc.c2124
-rw-r--r--contrib/tools/yasm/modules/arch/x86/x86expr.c2122
-rw-r--r--contrib/tools/yasm/modules/arch/x86/x86id.c3902
-rw-r--r--contrib/tools/yasm/modules/dbgfmts/codeview/cv-dbgfmt.c214
-rw-r--r--contrib/tools/yasm/modules/dbgfmts/codeview/cv-dbgfmt.h116
-rw-r--r--contrib/tools/yasm/modules/dbgfmts/codeview/cv-symline.c2204
-rw-r--r--contrib/tools/yasm/modules/dbgfmts/codeview/cv-type.c1556
-rw-r--r--contrib/tools/yasm/modules/dbgfmts/dwarf2/dwarf2-aranges.c250
-rw-r--r--contrib/tools/yasm/modules/dbgfmts/dwarf2/dwarf2-dbgfmt.c696
-rw-r--r--contrib/tools/yasm/modules/dbgfmts/dwarf2/dwarf2-dbgfmt.h262
-rw-r--r--contrib/tools/yasm/modules/dbgfmts/dwarf2/dwarf2-info.c854
-rw-r--r--contrib/tools/yasm/modules/dbgfmts/dwarf2/dwarf2-line.c2282
-rw-r--r--contrib/tools/yasm/modules/dbgfmts/null/null-dbgfmt.c128
-rw-r--r--contrib/tools/yasm/modules/dbgfmts/stabs/stabs-dbgfmt.c1020
-rw-r--r--contrib/tools/yasm/modules/gas-token.c2814
-rw-r--r--contrib/tools/yasm/modules/init_plugin.c132
-rw-r--r--contrib/tools/yasm/modules/lc3bid.c1830
-rw-r--r--contrib/tools/yasm/modules/listfmts/nasm/nasm-listfmt.c602
-rw-r--r--contrib/tools/yasm/modules/nasm-macros.c188
-rw-r--r--contrib/tools/yasm/modules/nasm-token.c6434
-rw-r--r--contrib/tools/yasm/modules/nasm-version.c30
-rw-r--r--contrib/tools/yasm/modules/objfmts/bin/bin-objfmt.c3944
-rw-r--r--contrib/tools/yasm/modules/objfmts/coff/coff-objfmt.c5032
-rw-r--r--contrib/tools/yasm/modules/objfmts/coff/coff-objfmt.h154
-rw-r--r--contrib/tools/yasm/modules/objfmts/coff/win64-except.c1118
-rw-r--r--contrib/tools/yasm/modules/objfmts/dbg/dbg-objfmt.c366
-rw-r--r--contrib/tools/yasm/modules/objfmts/elf/elf-machine.h216
-rw-r--r--contrib/tools/yasm/modules/objfmts/elf/elf-objfmt.c2782
-rw-r--r--contrib/tools/yasm/modules/objfmts/elf/elf-x86-amd64.c512
-rw-r--r--contrib/tools/yasm/modules/objfmts/elf/elf-x86-x32.c502
-rw-r--r--contrib/tools/yasm/modules/objfmts/elf/elf-x86-x86.c484
-rw-r--r--contrib/tools/yasm/modules/objfmts/elf/elf.c1920
-rw-r--r--contrib/tools/yasm/modules/objfmts/elf/elf.h1064
-rw-r--r--contrib/tools/yasm/modules/objfmts/macho/macho-objfmt.c3240
-rw-r--r--contrib/tools/yasm/modules/objfmts/rdf/rdf-objfmt.c2176
-rw-r--r--contrib/tools/yasm/modules/objfmts/xdf/xdf-objfmt.c1684
-rw-r--r--contrib/tools/yasm/modules/parsers/gas/gas-parse-intel.c180
-rw-r--r--contrib/tools/yasm/modules/parsers/gas/gas-parse.c3532
-rw-r--r--contrib/tools/yasm/modules/parsers/gas/gas-parser.c266
-rw-r--r--contrib/tools/yasm/modules/parsers/gas/gas-parser.h326
-rw-r--r--contrib/tools/yasm/modules/parsers/nasm/nasm-parse.c3360
-rw-r--r--contrib/tools/yasm/modules/parsers/nasm/nasm-parser-struct.h170
-rw-r--r--contrib/tools/yasm/modules/parsers/nasm/nasm-parser.c280
-rw-r--r--contrib/tools/yasm/modules/parsers/nasm/nasm-parser.h246
-rw-r--r--contrib/tools/yasm/modules/preprocs/cpp/cpp-preproc.c804
-rw-r--r--contrib/tools/yasm/modules/preprocs/gas/gas-eval.c886
-rw-r--r--contrib/tools/yasm/modules/preprocs/gas/gas-eval.h240
-rw-r--r--contrib/tools/yasm/modules/preprocs/gas/gas-preproc.c2814
-rw-r--r--contrib/tools/yasm/modules/preprocs/nasm/genversion.c162
-rw-r--r--contrib/tools/yasm/modules/preprocs/nasm/nasm-eval.c880
-rw-r--r--contrib/tools/yasm/modules/preprocs/nasm/nasm-eval.h36
-rw-r--r--contrib/tools/yasm/modules/preprocs/nasm/nasm-pp.c10618
-rw-r--r--contrib/tools/yasm/modules/preprocs/nasm/nasm-pp.h44
-rw-r--r--contrib/tools/yasm/modules/preprocs/nasm/nasm-preproc.c682
-rw-r--r--contrib/tools/yasm/modules/preprocs/nasm/nasm.h566
-rw-r--r--contrib/tools/yasm/modules/preprocs/nasm/nasmlib.c402
-rw-r--r--contrib/tools/yasm/modules/preprocs/nasm/nasmlib.h120
-rw-r--r--contrib/tools/yasm/modules/preprocs/raw/raw-preproc.c336
-rw-r--r--contrib/tools/yasm/modules/win64-gas.c130
-rw-r--r--contrib/tools/yasm/modules/win64-nasm.c130
-rw-r--r--contrib/tools/yasm/modules/x86cpu.c962
-rw-r--r--contrib/tools/yasm/modules/x86insn_gas.c4308
-rw-r--r--contrib/tools/yasm/modules/x86insn_nasm.c3012
-rw-r--r--contrib/tools/yasm/modules/x86insns.c4848
-rw-r--r--contrib/tools/yasm/modules/x86regtmod.c522
-rw-r--r--contrib/tools/yasm/util.h326
-rw-r--r--contrib/tools/yasm/ya.make20
1057 files changed, 238760 insertions, 238760 deletions
diff --git a/contrib/libs/antlr3_cpp_runtime/ya.make b/contrib/libs/antlr3_cpp_runtime/ya.make
index effaf1c085..5c019aa396 100644
--- a/contrib/libs/antlr3_cpp_runtime/ya.make
+++ b/contrib/libs/antlr3_cpp_runtime/ya.make
@@ -1,10 +1,10 @@
LIBRARY()
-# git repository: https://github.com/ibre5041/antlr3.git
-# XXX fork of: https://github.com/antlr/antlr3.git
-# directory: runtime/Cpp
-# revision: a4d1928e03b2b3f74579e54a6211cd1d695001b9
-
+# git repository: https://github.com/ibre5041/antlr3.git
+# XXX fork of: https://github.com/antlr/antlr3.git
+# directory: runtime/Cpp
+# revision: a4d1928e03b2b3f74579e54a6211cd1d695001b9
+
VERSION(2016-03-31-a4d1928e03b2b3f74579e54a6211cd1d695001b9)
LICENSE(
diff --git a/contrib/libs/base64/avx2/ya.make b/contrib/libs/base64/avx2/ya.make
index 173d3cef55..b0dc5ce772 100644
--- a/contrib/libs/base64/avx2/ya.make
+++ b/contrib/libs/base64/avx2/ya.make
@@ -24,7 +24,7 @@ IF (ARCH_X86_64 OR ARCH_I386)
IF (MSVC AND NOT CLANG_CL)
CONLYFLAGS(/D__AVX2__=1)
ELSEIF (CLANG_CL)
- CONLYFLAGS(-mavx2)
+ CONLYFLAGS(-mavx2)
ELSE()
CONLYFLAGS(
-mavx2
diff --git a/contrib/libs/base64/ssse3/ya.make b/contrib/libs/base64/ssse3/ya.make
index b9dde09e91..c9cf647001 100644
--- a/contrib/libs/base64/ssse3/ya.make
+++ b/contrib/libs/base64/ssse3/ya.make
@@ -21,11 +21,11 @@ SRCS(
)
IF (ARCH_X86_64 OR ARCH_I386)
- IF (MSVC AND NOT CLANG_CL)
- CONLYFLAGS(/D__SSSE3__=1)
+ IF (MSVC AND NOT CLANG_CL)
+ CONLYFLAGS(/D__SSSE3__=1)
ELSEIF (CLANG_CL)
- CONLYFLAGS(-mssse3)
- ELSE()
+ CONLYFLAGS(-mssse3)
+ ELSE()
CONLYFLAGS(
-mssse3
-std=c11
diff --git a/contrib/libs/crcutil/LICENSE b/contrib/libs/crcutil/LICENSE
index c0fd617439..d645695673 100644
--- a/contrib/libs/crcutil/LICENSE
+++ b/contrib/libs/crcutil/LICENSE
@@ -1,202 +1,202 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/contrib/libs/crcutil/crc32c_sse4.cc b/contrib/libs/crcutil/crc32c_sse4.cc
index 0ed23eb627..ed0f64410a 100644
--- a/contrib/libs/crcutil/crc32c_sse4.cc
+++ b/contrib/libs/crcutil/crc32c_sse4.cc
@@ -322,9 +322,9 @@ bool Crc32cSSE4::IsSSE42Available() {
uint32 edx;
__asm__ volatile(
#if HAVE_I386 && defined(__PIC__)
- "push %%ebx\n"
+ "push %%ebx\n"
"cpuid\n"
- "pop %%ebx\n"
+ "pop %%ebx\n"
#else
"cpuid\n"
#endif // HAVE_I386 && defined(__PIC__)
diff --git a/contrib/libs/cxxsupp/builtins/LICENSE.os_version_check.c.patch.txt b/contrib/libs/cxxsupp/builtins/LICENSE.os_version_check.c.patch.txt
index 5576656bf9..5a79a1b9d5 100644
--- a/contrib/libs/cxxsupp/builtins/LICENSE.os_version_check.c.patch.txt
+++ b/contrib/libs/cxxsupp/builtins/LICENSE.os_version_check.c.patch.txt
@@ -1,311 +1,311 @@
-==============================================================================
-The LLVM Project is under the Apache License v2.0 with LLVM Exceptions:
-==============================================================================
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
-
----- LLVM Exceptions to the Apache 2.0 License ----
-
-As an exception, if, as a result of your compiling your source code, portions
-of this Software are embedded into an Object form of such source code, you
-may redistribute such embedded portions in such Object form without complying
-with the conditions of Sections 4(a), 4(b) and 4(d) of the License.
-
-In addition, if you combine or link compiled forms of this Software with
-software that is licensed under the GPLv2 ("Combined Software") and if a
-court of competent jurisdiction determines that the patent provision (Section
-3), the indemnity provision (Section 9) or other Section of the License
-conflicts with the conditions of the GPLv2, you may retroactively and
-prospectively choose to deem waived or otherwise exclude such Section(s) of
-the License, but only in their entirety and only with respect to the Combined
-Software.
-
-==============================================================================
-Software from third parties included in the LLVM Project:
-==============================================================================
-The LLVM Project contains third party software which is under different license
-terms. All such code will be identified clearly using at least one of two
-mechanisms:
-1) It will be in a separate directory tree with its own `LICENSE.txt` or
- `LICENSE` file at the top containing the specific license and restrictions
- which apply to that software, or
-2) It will contain specific license and restriction terms at the top of every
- file.
-
-==============================================================================
-Legacy LLVM License (https://llvm.org/docs/DeveloperPolicy.html#legacy):
-==============================================================================
-
-The compiler_rt library is dual licensed under both the University of Illinois
-"BSD-Like" license and the MIT license. As a user of this code you may choose
-to use it under either license. As a contributor, you agree to allow your code
-to be used under both.
-
-Full text of the relevant licenses is included below.
-
-==============================================================================
-
-University of Illinois/NCSA
-Open Source License
-
-Copyright (c) 2009-2019 by the contributors listed in CREDITS.TXT
-
-All rights reserved.
-
-Developed by:
-
- LLVM Team
-
- University of Illinois at Urbana-Champaign
-
- http://llvm.org
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal with
-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:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimers.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimers in the
- documentation and/or other materials provided with the distribution.
-
- * Neither the names of the LLVM Team, University of Illinois at
- Urbana-Champaign, nor the names of its contributors may be used to
- endorse or promote products derived from this Software without specific
- prior written permission.
-
-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
-CONTRIBUTORS 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 WITH THE
-SOFTWARE.
-
-==============================================================================
-
-Copyright (c) 2009-2015 by the contributors listed in CREDITS.TXT
-
-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.
+==============================================================================
+The LLVM Project is under the Apache License v2.0 with LLVM Exceptions:
+==============================================================================
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+
+---- LLVM Exceptions to the Apache 2.0 License ----
+
+As an exception, if, as a result of your compiling your source code, portions
+of this Software are embedded into an Object form of such source code, you
+may redistribute such embedded portions in such Object form without complying
+with the conditions of Sections 4(a), 4(b) and 4(d) of the License.
+
+In addition, if you combine or link compiled forms of this Software with
+software that is licensed under the GPLv2 ("Combined Software") and if a
+court of competent jurisdiction determines that the patent provision (Section
+3), the indemnity provision (Section 9) or other Section of the License
+conflicts with the conditions of the GPLv2, you may retroactively and
+prospectively choose to deem waived or otherwise exclude such Section(s) of
+the License, but only in their entirety and only with respect to the Combined
+Software.
+
+==============================================================================
+Software from third parties included in the LLVM Project:
+==============================================================================
+The LLVM Project contains third party software which is under different license
+terms. All such code will be identified clearly using at least one of two
+mechanisms:
+1) It will be in a separate directory tree with its own `LICENSE.txt` or
+ `LICENSE` file at the top containing the specific license and restrictions
+ which apply to that software, or
+2) It will contain specific license and restriction terms at the top of every
+ file.
+
+==============================================================================
+Legacy LLVM License (https://llvm.org/docs/DeveloperPolicy.html#legacy):
+==============================================================================
+
+The compiler_rt library is dual licensed under both the University of Illinois
+"BSD-Like" license and the MIT license. As a user of this code you may choose
+to use it under either license. As a contributor, you agree to allow your code
+to be used under both.
+
+Full text of the relevant licenses is included below.
+
+==============================================================================
+
+University of Illinois/NCSA
+Open Source License
+
+Copyright (c) 2009-2019 by the contributors listed in CREDITS.TXT
+
+All rights reserved.
+
+Developed by:
+
+ LLVM Team
+
+ University of Illinois at Urbana-Champaign
+
+ http://llvm.org
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal with
+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:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimers.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimers in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the names of the LLVM Team, University of Illinois at
+ Urbana-Champaign, nor the names of its contributors may be used to
+ endorse or promote products derived from this Software without specific
+ prior written permission.
+
+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
+CONTRIBUTORS 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 WITH THE
+SOFTWARE.
+
+==============================================================================
+
+Copyright (c) 2009-2015 by the contributors listed in CREDITS.TXT
+
+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.
diff --git a/contrib/libs/cxxsupp/builtins/LICENSE.os_version_check.c.txt b/contrib/libs/cxxsupp/builtins/LICENSE.os_version_check.c.txt
index 8d1cc0fa53..0134694e4e 100644
--- a/contrib/libs/cxxsupp/builtins/LICENSE.os_version_check.c.txt
+++ b/contrib/libs/cxxsupp/builtins/LICENSE.os_version_check.c.txt
@@ -1,91 +1,91 @@
-==============================================================================
-compiler_rt License
-==============================================================================
-
-The compiler_rt library is dual licensed under both the University of Illinois
-"BSD-Like" license and the MIT license. As a user of this code you may choose
-to use it under either license. As a contributor, you agree to allow your code
-to be used under both.
-
-Full text of the relevant licenses is included below.
-
-==============================================================================
-
-University of Illinois/NCSA
-Open Source License
-
-Copyright (c) 2009-2018 by the contributors listed in CREDITS.TXT
-
-All rights reserved.
-
-Developed by:
-
- LLVM Team
-
- University of Illinois at Urbana-Champaign
-
- http://llvm.org
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal with
-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:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimers.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimers in the
- documentation and/or other materials provided with the distribution.
-
- * Neither the names of the LLVM Team, University of Illinois at
- Urbana-Champaign, nor the names of its contributors may be used to
- endorse or promote products derived from this Software without specific
- prior written permission.
-
-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
-CONTRIBUTORS 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 WITH THE
-SOFTWARE.
-
-==============================================================================
-
-Copyright (c) 2009-2015 by the contributors listed in CREDITS.TXT
-
-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.
-
-==============================================================================
-Copyrights and Licenses for Third Party Software Distributed with LLVM:
-==============================================================================
-The LLVM software contains code written by third parties. Such software will
-have its own individual LICENSE.TXT file in the directory in which it appears.
-This file will describe the copyrights, license, and restrictions which apply
-to that code.
-
-The disclaimer of warranty in the University of Illinois Open Source License
-applies to all code in the LLVM Distribution, and nothing in any of the
-other licenses gives permission to use the names of the LLVM Team or the
-University of Illinois to endorse or promote products derived from this
-Software.
-
+==============================================================================
+compiler_rt License
+==============================================================================
+
+The compiler_rt library is dual licensed under both the University of Illinois
+"BSD-Like" license and the MIT license. As a user of this code you may choose
+to use it under either license. As a contributor, you agree to allow your code
+to be used under both.
+
+Full text of the relevant licenses is included below.
+
+==============================================================================
+
+University of Illinois/NCSA
+Open Source License
+
+Copyright (c) 2009-2018 by the contributors listed in CREDITS.TXT
+
+All rights reserved.
+
+Developed by:
+
+ LLVM Team
+
+ University of Illinois at Urbana-Champaign
+
+ http://llvm.org
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal with
+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:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimers.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimers in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the names of the LLVM Team, University of Illinois at
+ Urbana-Champaign, nor the names of its contributors may be used to
+ endorse or promote products derived from this Software without specific
+ prior written permission.
+
+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
+CONTRIBUTORS 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 WITH THE
+SOFTWARE.
+
+==============================================================================
+
+Copyright (c) 2009-2015 by the contributors listed in CREDITS.TXT
+
+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.
+
+==============================================================================
+Copyrights and Licenses for Third Party Software Distributed with LLVM:
+==============================================================================
+The LLVM software contains code written by third parties. Such software will
+have its own individual LICENSE.TXT file in the directory in which it appears.
+This file will describe the copyrights, license, and restrictions which apply
+to that code.
+
+The disclaimer of warranty in the University of Illinois Open Source License
+applies to all code in the LLVM Distribution, and nothing in any of the
+other licenses gives permission to use the names of the LLVM Team or the
+University of Illinois to endorse or promote products derived from this
+Software.
+
diff --git a/contrib/libs/cxxsupp/builtins/LICENSE.txt b/contrib/libs/cxxsupp/builtins/LICENSE.txt
index 8f4608b1e7..aa4115e2a7 100644
--- a/contrib/libs/cxxsupp/builtins/LICENSE.txt
+++ b/contrib/libs/cxxsupp/builtins/LICENSE.txt
@@ -1,91 +1,91 @@
-==============================================================================
-compiler_rt License
-==============================================================================
-
-The compiler_rt library is dual licensed under both the University of Illinois
-"BSD-Like" license and the MIT license. As a user of this code you may choose
-to use it under either license. As a contributor, you agree to allow your code
-to be used under both.
-
-Full text of the relevant licenses is included below.
-
-==============================================================================
-
-University of Illinois/NCSA
-Open Source License
-
-Copyright (c) 2009-2015 by the contributors listed in CREDITS.TXT
-
-All rights reserved.
-
-Developed by:
-
- LLVM Team
-
- University of Illinois at Urbana-Champaign
-
- http://llvm.org
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal with
-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:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimers.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimers in the
- documentation and/or other materials provided with the distribution.
-
- * Neither the names of the LLVM Team, University of Illinois at
- Urbana-Champaign, nor the names of its contributors may be used to
- endorse or promote products derived from this Software without specific
- prior written permission.
-
-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
-CONTRIBUTORS 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 WITH THE
-SOFTWARE.
-
-==============================================================================
-
-Copyright (c) 2009-2015 by the contributors listed in CREDITS.TXT
-
-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.
-
-==============================================================================
-Copyrights and Licenses for Third Party Software Distributed with LLVM:
-==============================================================================
-The LLVM software contains code written by third parties. Such software will
-have its own individual LICENSE.TXT file in the directory in which it appears.
-This file will describe the copyrights, license, and restrictions which apply
-to that code.
-
-The disclaimer of warranty in the University of Illinois Open Source License
-applies to all code in the LLVM Distribution, and nothing in any of the
-other licenses gives permission to use the names of the LLVM Team or the
-University of Illinois to endorse or promote products derived from this
-Software.
-
+==============================================================================
+compiler_rt License
+==============================================================================
+
+The compiler_rt library is dual licensed under both the University of Illinois
+"BSD-Like" license and the MIT license. As a user of this code you may choose
+to use it under either license. As a contributor, you agree to allow your code
+to be used under both.
+
+Full text of the relevant licenses is included below.
+
+==============================================================================
+
+University of Illinois/NCSA
+Open Source License
+
+Copyright (c) 2009-2015 by the contributors listed in CREDITS.TXT
+
+All rights reserved.
+
+Developed by:
+
+ LLVM Team
+
+ University of Illinois at Urbana-Champaign
+
+ http://llvm.org
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal with
+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:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimers.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimers in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the names of the LLVM Team, University of Illinois at
+ Urbana-Champaign, nor the names of its contributors may be used to
+ endorse or promote products derived from this Software without specific
+ prior written permission.
+
+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
+CONTRIBUTORS 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 WITH THE
+SOFTWARE.
+
+==============================================================================
+
+Copyright (c) 2009-2015 by the contributors listed in CREDITS.TXT
+
+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.
+
+==============================================================================
+Copyrights and Licenses for Third Party Software Distributed with LLVM:
+==============================================================================
+The LLVM software contains code written by third parties. Such software will
+have its own individual LICENSE.TXT file in the directory in which it appears.
+This file will describe the copyrights, license, and restrictions which apply
+to that code.
+
+The disclaimer of warranty in the University of Illinois Open Source License
+applies to all code in the LLVM Distribution, and nothing in any of the
+other licenses gives permission to use the names of the LLVM Team or the
+University of Illinois to endorse or promote products derived from this
+Software.
+
diff --git a/contrib/libs/cxxsupp/builtins/int_types.h b/contrib/libs/cxxsupp/builtins/int_types.h
index 7e97794631..23065b89bd 100644
--- a/contrib/libs/cxxsupp/builtins/int_types.h
+++ b/contrib/libs/cxxsupp/builtins/int_types.h
@@ -61,7 +61,7 @@ typedef union
} udwords;
/* MIPS64 issue: PR 20098 */
-#if defined(__LP64__) && !(defined(__mips__) && defined(__clang__)) || (defined(_MSC_VER) && defined(__clang__))
+#if defined(__LP64__) && !(defined(__mips__) && defined(__clang__)) || (defined(_MSC_VER) && defined(__clang__))
#define CRT_HAS_128BIT
#endif
diff --git a/contrib/libs/cxxsupp/builtins/ya.make b/contrib/libs/cxxsupp/builtins/ya.make
index 5ac48cdd9f..d2c319c927 100644
--- a/contrib/libs/cxxsupp/builtins/ya.make
+++ b/contrib/libs/cxxsupp/builtins/ya.make
@@ -1,21 +1,21 @@
LIBRARY()
-# Part of compiler-rt LLVM subproject
-
-# git repository: https://github.com/llvm/llvm-project.git
-# directory: compiler-rt/lib/builtins
-# revision: 08f0372c351a57b01afee6c64066961203da28c5
-
-# os_version_check.c was taken from revision 81b89fd7bdddb7da66f2cdace97d6ede5f99d58a
-# os_version_check.c was patched from git repository https://github.com/apple/llvm-project.git revision a02454b91d2aec347b9ce03020656c445f3b2841
-
-LICENSE(
+# Part of compiler-rt LLVM subproject
+
+# git repository: https://github.com/llvm/llvm-project.git
+# directory: compiler-rt/lib/builtins
+# revision: 08f0372c351a57b01afee6c64066961203da28c5
+
+# os_version_check.c was taken from revision 81b89fd7bdddb7da66f2cdace97d6ede5f99d58a
+# os_version_check.c was patched from git repository https://github.com/apple/llvm-project.git revision a02454b91d2aec347b9ce03020656c445f3b2841
+
+LICENSE(
Apache-2.0 AND
Apache-2.0 WITH LLVM-exception AND
MIT AND
NCSA
-)
-
+)
+
LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
VERSION(2016-03-03-08f0372c351a57b01afee6c64066961203da28c5)
@@ -51,64 +51,64 @@ NO_PLATFORM()
NO_COMPILER_WARNINGS()
-IF (GCC OR CLANG)
- # Clang (maybe GCC too) LTO code generator leaves the builtin calls unresolved
- # even if they are available. After the code generation pass is done
- # a linker is forced to select original object files from this library again
- # as they contain unresolved symbols. But code generation is already done,
- # object files actually are not ELFs but an LLVM bytecode and we get
- # "member at xxxxx is not an ELF object" errors from the linker.
- # Just generate native code from the beginning.
- DISABLE(USE_LTO)
-ENDIF()
-
-SRCS(
- addtf3.c
+IF (GCC OR CLANG)
+ # Clang (maybe GCC too) LTO code generator leaves the builtin calls unresolved
+ # even if they are available. After the code generation pass is done
+ # a linker is forced to select original object files from this library again
+ # as they contain unresolved symbols. But code generation is already done,
+ # object files actually are not ELFs but an LLVM bytecode and we get
+ # "member at xxxxx is not an ELF object" errors from the linker.
+ # Just generate native code from the beginning.
+ DISABLE(USE_LTO)
+ENDIF()
+
+SRCS(
+ addtf3.c
ashlti3.c
- clzti2.c
- comparetf2.c
- divdc3.c
- divsc3.c
- divtf3.c
- divti3.c
- divxc3.c
- extenddftf2.c
- extendsftf2.c
- fixdfti.c
+ clzti2.c
+ comparetf2.c
+ divdc3.c
+ divsc3.c
+ divtf3.c
+ divti3.c
+ divxc3.c
+ extenddftf2.c
+ extendsftf2.c
+ fixdfti.c
fixsfti.c
- fixtfdi.c
- fixtfsi.c
+ fixtfdi.c
+ fixtfsi.c
fixunsdfti.c
fixunssfti.c
fixunstfdi.c
- fixunstfsi.c
+ fixunstfsi.c
fixunstfti.c
fixunsxfti.c
- floatditf.c
- floatsitf.c
- floattidf.c
- floattisf.c
- floatunditf.c
- floatunsitf.c
+ floatditf.c
+ floatsitf.c
+ floattidf.c
+ floattisf.c
+ floatunditf.c
+ floatunsitf.c
floatuntidf.c
floatuntisf.c
- gcc_personality_v0.c
- int_util.c
+ gcc_personality_v0.c
+ int_util.c
lshrti3.c
- modti3.c
- muldc3.c
- muloti4.c
- mulsc3.c
- multf3.c
- mulxc3.c
- popcountdi2.c
- subtf3.c
- trunctfdf2.c
- trunctfsf2.c
- udivmodti4.c
- udivti3.c
- umodti3.c
-)
+ modti3.c
+ muldc3.c
+ muloti4.c
+ mulsc3.c
+ multf3.c
+ mulxc3.c
+ popcountdi2.c
+ subtf3.c
+ trunctfdf2.c
+ trunctfsf2.c
+ udivmodti4.c
+ udivti3.c
+ umodti3.c
+)
IF (OS_DARWIN OR OS_IOS)
SRCS(
diff --git a/contrib/libs/cxxsupp/libcxx/include/__config b/contrib/libs/cxxsupp/libcxx/include/__config
index 64c5a00c48..bdc54b92d1 100644
--- a/contrib/libs/cxxsupp/libcxx/include/__config
+++ b/contrib/libs/cxxsupp/libcxx/include/__config
@@ -34,16 +34,16 @@
#elif defined(_MSC_VER)
#define _LIBCPP_COMPILER_MSVC
-#if _MSVC_LANG == 201705L
-# define _LIBCPP_STD_VER 20
-#elif _MSVC_LANG == 201703L
+#if _MSVC_LANG == 201705L
+# define _LIBCPP_STD_VER 20
+#elif _MSVC_LANG == 201703L
# define _LIBCPP_STD_VER 17
#else
# define _LIBCPP_STD_VER 14
#endif
-#define _LIBCPP_UCRT_INCLUDE(x) <Y_UCRT_INCLUDE/x>
-#define _LIBCPP_MSVC_INCLUDE(x) <Y_MSVC_INCLUDE/x>
+#define _LIBCPP_UCRT_INCLUDE(x) <Y_UCRT_INCLUDE/x>
+#define _LIBCPP_MSVC_INCLUDE(x) <Y_MSVC_INCLUDE/x>
#elif defined(__IBMCPP__)
#define _LIBCPP_COMPILER_IBM
#endif
@@ -1306,8 +1306,8 @@ extern "C" _LIBCPP_FUNC_VIS void __sanitizer_annotate_contiguous_container(
#endif
#if defined(_LIBCPP_ABI_MICROSOFT) && \
- (defined(_LIBCPP_COMPILER_MSVC) || __has_declspec_attribute(empty_bases)) && \
- !defined(__CUDACC__)
+ (defined(_LIBCPP_COMPILER_MSVC) || __has_declspec_attribute(empty_bases)) && \
+ !defined(__CUDACC__)
# define _LIBCPP_DECLSPEC_EMPTY_BASES __declspec(empty_bases)
#else
# define _LIBCPP_DECLSPEC_EMPTY_BASES
@@ -1336,11 +1336,11 @@ extern "C" _LIBCPP_FUNC_VIS void __sanitizer_annotate_contiguous_container(
#define _LIBCPP_HAS_NO_SPACESHIP_OPERATOR
#endif
-// Yandex-specific: We build our own libc++, so it has everything available
-#define _LIBCPP_DISABLE_AVAILABILITY
-// End of Yandex-specific
-
-#if defined(_LIBCPP_COMPILER_IBM) || defined(__CUDACC__)
+// Yandex-specific: We build our own libc++, so it has everything available
+#define _LIBCPP_DISABLE_AVAILABILITY
+// End of Yandex-specific
+
+#if defined(_LIBCPP_COMPILER_IBM) || defined(__CUDACC__)
#define _LIBCPP_HAS_NO_PRAGMA_PUSH_POP_MACRO
#endif
diff --git a/contrib/libs/cxxsupp/libcxx/include/__locale b/contrib/libs/cxxsupp/libcxx/include/__locale
index 3ca06c386a..38cb7a6f39 100644
--- a/contrib/libs/cxxsupp/libcxx/include/__locale
+++ b/contrib/libs/cxxsupp/libcxx/include/__locale
@@ -34,7 +34,7 @@
# include <__support/newlib/xlocale.h>
#elif defined(__OpenBSD__)
# include <__support/openbsd/xlocale.h>
-#elif (defined(__APPLE__) || defined(__FreeBSD__) \
+#elif (defined(__APPLE__) || defined(__FreeBSD__) \
|| defined(__EMSCRIPTEN__) || defined(__IBMCPP__))
# include <xlocale.h>
#elif defined(__Fuchsia__)
diff --git a/contrib/libs/cxxsupp/libcxx/include/__string b/contrib/libs/cxxsupp/libcxx/include/__string
index 161f7195d0..7074a73538 100644
--- a/contrib/libs/cxxsupp/libcxx/include/__string
+++ b/contrib/libs/cxxsupp/libcxx/include/__string
@@ -426,7 +426,7 @@ char_traits<char>::find(const char_type* __s, size_t __n, const char_type& __a)
{
if (__n == 0)
return nullptr;
-#if __has_feature(cxx_constexpr_string_builtins) && !defined(__CUDACC__)
+#if __has_feature(cxx_constexpr_string_builtins) && !defined(__CUDACC__)
return __builtin_char_memchr(__s, to_int_type(__a), __n);
#elif _LIBCPP_STD_VER <= 14
return (const char_type*) _VSTD::memchr(__s, to_int_type(__a), __n);
@@ -509,7 +509,7 @@ char_traits<wchar_t>::compare(const char_type* __s1, const char_type* __s2, size
{
if (__n == 0)
return 0;
-#if __has_feature(cxx_constexpr_string_builtins) && !defined(__CUDACC__)
+#if __has_feature(cxx_constexpr_string_builtins) && !defined(__CUDACC__)
return __builtin_wmemcmp(__s1, __s2, __n);
#elif _LIBCPP_STD_VER <= 14
return _VSTD::wmemcmp(__s1, __s2, __n);
@@ -529,7 +529,7 @@ inline _LIBCPP_CONSTEXPR_AFTER_CXX14
size_t
char_traits<wchar_t>::length(const char_type* __s) _NOEXCEPT
{
-#if __has_feature(cxx_constexpr_string_builtins) && !defined(__CUDACC__)
+#if __has_feature(cxx_constexpr_string_builtins) && !defined(__CUDACC__)
return __builtin_wcslen(__s);
#elif _LIBCPP_STD_VER <= 14
return _VSTD::wcslen(__s);
@@ -547,7 +547,7 @@ char_traits<wchar_t>::find(const char_type* __s, size_t __n, const char_type& __
{
if (__n == 0)
return nullptr;
-#if __has_feature(cxx_constexpr_string_builtins) && !defined(__CUDACC__)
+#if __has_feature(cxx_constexpr_string_builtins) && !defined(__CUDACC__)
return __builtin_wmemchr(__s, __a, __n);
#elif _LIBCPP_STD_VER <= 14
return _VSTD::wmemchr(__s, __a, __n);
diff --git a/contrib/libs/cxxsupp/libcxx/include/__support/android/locale_bionic.h b/contrib/libs/cxxsupp/libcxx/include/__support/android/locale_bionic.h
index 650683310c..733eb83642 100644
--- a/contrib/libs/cxxsupp/libcxx/include/__support/android/locale_bionic.h
+++ b/contrib/libs/cxxsupp/libcxx/include/__support/android/locale_bionic.h
@@ -26,9 +26,9 @@ extern "C" {
#if defined(__ANDROID__)
#include <android/api-level.h>
-#if defined(__has_include) && __has_include(<android/ndk-version.h>)
-# include <android/ndk-version.h>
-#endif
+#if defined(__has_include) && __has_include(<android/ndk-version.h>)
+# include <android/ndk-version.h>
+#endif
#if __ANDROID_API__ < 21
#include <__support/xlocale/__posix_l_fallback.h>
#endif
diff --git a/contrib/libs/cxxsupp/libcxx/include/__support/win32/atomic_win32.h b/contrib/libs/cxxsupp/libcxx/include/__support/win32/atomic_win32.h
index cc7bdeee63..e32bcf9073 100644
--- a/contrib/libs/cxxsupp/libcxx/include/__support/win32/atomic_win32.h
+++ b/contrib/libs/cxxsupp/libcxx/include/__support/win32/atomic_win32.h
@@ -64,9 +64,9 @@ static inline void __c11_atomic_init(_Atomic(_Tp)* __a, _Tp __val) {
}
static inline void __c11_atomic_thread_fence(int __order) {
- if (__order != static_cast<int>(memory_order_relaxed)) {
+ if (__order != static_cast<int>(memory_order_relaxed)) {
#if defined(_M_IX86) || defined(_M_X64)
- if (__order == static_cast<int>(memory_order_seq_cst)) {
+ if (__order == static_cast<int>(memory_order_seq_cst)) {
_MemoryBarrier;
} else {
_ReadWriteBarrier();
diff --git a/contrib/libs/cxxsupp/libcxx/include/__tuple b/contrib/libs/cxxsupp/libcxx/include/__tuple
index d52b88497a..08f4dd5efa 100644
--- a/contrib/libs/cxxsupp/libcxx/include/__tuple
+++ b/contrib/libs/cxxsupp/libcxx/include/__tuple
@@ -91,7 +91,7 @@ struct __integer_sequence {
using __to_tuple_indices = __tuple_indices<(_Values + _Sp)...>;
};
-#if defined(__CUDACC__) || !__has_builtin(__make_integer_seq) || defined(_LIBCPP_TESTING_FALLBACK_MAKE_INTEGER_SEQUENCE)
+#if defined(__CUDACC__) || !__has_builtin(__make_integer_seq) || defined(_LIBCPP_TESTING_FALLBACK_MAKE_INTEGER_SEQUENCE)
namespace __detail {
template<typename _Tp, size_t ..._Extra> struct __repeat;
@@ -133,7 +133,7 @@ template<> struct __parity<7> { template<size_t _Np> struct __pmake : __repeat<t
#endif // !__has_builtin(__make_integer_seq) || defined(_LIBCPP_TESTING_FALLBACK_MAKE_INTEGER_SEQUENCE)
-#if __has_builtin(__make_integer_seq) && !defined(__CUDACC__)
+#if __has_builtin(__make_integer_seq) && !defined(__CUDACC__)
template <size_t _Ep, size_t _Sp>
using __make_indices_imp =
typename __make_integer_seq<__integer_sequence, size_t, _Ep - _Sp>::template
@@ -264,7 +264,7 @@ __indexed<_Idx, _Tp> __at_index(__indexed<_Idx, _Tp> const&);
} // namespace __indexer_detail
-#if !defined(__CUDACC__) || !defined(_MSC_VER)
+#if !defined(__CUDACC__) || !defined(_MSC_VER)
template <size_t _Idx, class ..._Types>
using __type_pack_element _LIBCPP_NODEBUG = typename decltype(
__indexer_detail::__at_index<_Idx>(
@@ -274,20 +274,20 @@ using __type_pack_element _LIBCPP_NODEBUG = typename decltype(
>{})
)::type;
-#else // !defined(__CUDACC__) || !defined(_MSC_VER)
-template <size_t _Idx, class ..._Types>
-struct __y_type_pack_element {
- using __t1 = typename __make_tuple_indices<sizeof...(_Types)>::type;
- using __t2 = __indexer_detail::__indexer<__tuple_types<_Types...>, __t1>;
- using __t3 = decltype(__indexer_detail::__at_index<_Idx>(__t2{}));
- using __t4 = typename __t3::type;
-};
-
-template <size_t _Idx, class ..._Types>
-using __type_pack_element = typename __y_type_pack_element<_Idx, _Types...>::__t4;
-
-#endif // !defined(__CUDACC__) || !defined(_MSC_VER)
-
+#else // !defined(__CUDACC__) || !defined(_MSC_VER)
+template <size_t _Idx, class ..._Types>
+struct __y_type_pack_element {
+ using __t1 = typename __make_tuple_indices<sizeof...(_Types)>::type;
+ using __t2 = __indexer_detail::__indexer<__tuple_types<_Types...>, __t1>;
+ using __t3 = decltype(__indexer_detail::__at_index<_Idx>(__t2{}));
+ using __t4 = typename __t3::type;
+};
+
+template <size_t _Idx, class ..._Types>
+using __type_pack_element = typename __y_type_pack_element<_Idx, _Types...>::__t4;
+
+#endif // !defined(__CUDACC__) || !defined(_MSC_VER)
+
#endif // __has_builtin(__type_pack_element)
template <size_t _Ip, class ..._Types>
diff --git a/contrib/libs/cxxsupp/libcxx/include/complex b/contrib/libs/cxxsupp/libcxx/include/complex
index 5c44fdbf37..e4c59193bc 100644
--- a/contrib/libs/cxxsupp/libcxx/include/complex
+++ b/contrib/libs/cxxsupp/libcxx/include/complex
@@ -1475,7 +1475,7 @@ inline namespace literals
}
-#if !defined(__CUDACC__)
+#if !defined(__CUDACC__)
constexpr complex<float> operator""if(long double __im)
{
return { 0.0f, static_cast<float>(__im) };
@@ -1485,7 +1485,7 @@ inline namespace literals
{
return { 0.0f, static_cast<float>(__im) };
}
-#endif
+#endif
}
}
#endif
diff --git a/contrib/libs/cxxsupp/libcxx/include/cxxabi.h b/contrib/libs/cxxsupp/libcxx/include/cxxabi.h
index 155c6c846b..3b1edaf75a 100644
--- a/contrib/libs/cxxsupp/libcxx/include/cxxabi.h
+++ b/contrib/libs/cxxsupp/libcxx/include/cxxabi.h
@@ -1,9 +1,9 @@
#pragma once
-#if defined(__IOS__) || defined(__ANDROID__)
+#if defined(__IOS__) || defined(__ANDROID__)
#include_next <cxxabi.h>
#elif defined(_WIN32)
// pass
#else
#include <contrib/libs/cxxsupp/libcxxrt/cxxabi.h>
-#endif
+#endif
diff --git a/contrib/libs/cxxsupp/libcxx/include/span b/contrib/libs/cxxsupp/libcxx/include/span
index 1347fb0d64..5d57bd693c 100644
--- a/contrib/libs/cxxsupp/libcxx/include/span
+++ b/contrib/libs/cxxsupp/libcxx/include/span
@@ -591,23 +591,23 @@ public:
_LIBCPP_INLINE_VISIBILITY constexpr reverse_iterator rbegin() const noexcept { return reverse_iterator(end()); }
_LIBCPP_INLINE_VISIBILITY constexpr reverse_iterator rend() const noexcept { return reverse_iterator(begin()); }
- inline _LIBCPP_INLINE_VISIBILITY span<const byte, dynamic_extent> __as_bytes() const noexcept;
+ inline _LIBCPP_INLINE_VISIBILITY span<const byte, dynamic_extent> __as_bytes() const noexcept;
- inline _LIBCPP_INLINE_VISIBILITY span<byte, dynamic_extent> __as_writable_bytes() const noexcept;
+ inline _LIBCPP_INLINE_VISIBILITY span<byte, dynamic_extent> __as_writable_bytes() const noexcept;
private:
pointer __data;
size_type __size;
};
-template<typename _Tp>
-inline _LIBCPP_INLINE_VISIBILITY span<const byte, dynamic_extent> span<_Tp, dynamic_extent>::__as_bytes() const noexcept
-{ return {reinterpret_cast<const byte *>(data()), size_bytes()}; }
-
-template<typename _Tp>
-inline _LIBCPP_INLINE_VISIBILITY span<byte, dynamic_extent> span<_Tp, dynamic_extent>::__as_writable_bytes() const noexcept
-{ return {reinterpret_cast<byte *>(data()), size_bytes()}; }
-
+template<typename _Tp>
+inline _LIBCPP_INLINE_VISIBILITY span<const byte, dynamic_extent> span<_Tp, dynamic_extent>::__as_bytes() const noexcept
+{ return {reinterpret_cast<const byte *>(data()), size_bytes()}; }
+
+template<typename _Tp>
+inline _LIBCPP_INLINE_VISIBILITY span<byte, dynamic_extent> span<_Tp, dynamic_extent>::__as_writable_bytes() const noexcept
+{ return {reinterpret_cast<byte *>(data()), size_bytes()}; }
+
#if !defined(_LIBCPP_HAS_NO_RANGES)
template <class _Tp, size_t _Extent>
inline constexpr bool ranges::enable_borrowed_range<span<_Tp, _Extent> > = true;
diff --git a/contrib/libs/cxxsupp/libcxx/include/unwind.h b/contrib/libs/cxxsupp/libcxx/include/unwind.h
index 9120d3eaec..c608202230 100644
--- a/contrib/libs/cxxsupp/libcxx/include/unwind.h
+++ b/contrib/libs/cxxsupp/libcxx/include/unwind.h
@@ -1,7 +1,7 @@
-#pragma once
-
-#if defined(__IOS__)
-#include_next <unwind.h>
-#else
-#include <contrib/libs/cxxsupp/libcxxrt/unwind.h>
-#endif
+#pragma once
+
+#if defined(__IOS__)
+#include_next <unwind.h>
+#else
+#include <contrib/libs/cxxsupp/libcxxrt/unwind.h>
+#endif
diff --git a/contrib/libs/cxxsupp/libcxx/include/version b/contrib/libs/cxxsupp/libcxx/include/version
index 3190948aed..0e15cfad80 100644
--- a/contrib/libs/cxxsupp/libcxx/include/version
+++ b/contrib/libs/cxxsupp/libcxx/include/version
@@ -203,11 +203,11 @@ __cpp_lib_void_t 201411L <type_traits>
# define __cpp_lib_allocator_traits_is_always_equal 201411L
# define __cpp_lib_any 201606L
# define __cpp_lib_apply 201603L
-# if defined(_MSC_VER) && _MSC_VER >= 1926
-# define __cpp_lib_array_constexpr 201803L
-# else
-# define __cpp_lib_array_constexpr 201603L
-# endif
+# if defined(_MSC_VER) && _MSC_VER >= 1926
+# define __cpp_lib_array_constexpr 201803L
+# else
+# define __cpp_lib_array_constexpr 201603L
+# endif
# define __cpp_lib_as_const 201510L
# if !defined(_LIBCPP_HAS_NO_THREADS)
# define __cpp_lib_atomic_is_always_lock_free 201603L
@@ -250,11 +250,11 @@ __cpp_lib_void_t 201411L <type_traits>
# endif
# define __cpp_lib_shared_ptr_arrays 201611L
# define __cpp_lib_shared_ptr_weak_type 201606L
-# if defined(_MSC_VER) && _MSC_VER >= 1926
-# define __cpp_lib_string_view 201803L
-# else
-# define __cpp_lib_string_view 201606L
-# endif
+# if defined(_MSC_VER) && _MSC_VER >= 1926
+# define __cpp_lib_string_view 201803L
+# else
+# define __cpp_lib_string_view 201606L
+# endif
// # define __cpp_lib_to_chars 201611L
# undef __cpp_lib_transparent_operators
# define __cpp_lib_transparent_operators 201510L
diff --git a/contrib/libs/cxxsupp/libcxx/src/support/runtime/exception_pointer_msvc.ipp b/contrib/libs/cxxsupp/libcxx/src/support/runtime/exception_pointer_msvc.ipp
index 63126a5305..300acbf759 100644
--- a/contrib/libs/cxxsupp/libcxx/src/support/runtime/exception_pointer_msvc.ipp
+++ b/contrib/libs/cxxsupp/libcxx/src/support/runtime/exception_pointer_msvc.ipp
@@ -137,8 +137,8 @@ struct ExceptionPtr {
free(exception_object);
}
- // _bad_alloc_storage must be initialized before bad_alloc, so we declare and define it first.
- static std::bad_alloc _bad_alloc_storage;
+ // _bad_alloc_storage must be initialized before bad_alloc, so we declare and define it first.
+ static std::bad_alloc _bad_alloc_storage;
static ExceptionPtr bad_alloc;
//static ExceptionPtr bad_exception;
};
@@ -148,11 +148,11 @@ struct ExceptionPtr {
#pragma clang diagnostic ignored "-Waddress-of-temporary"
#endif
-std::bad_alloc ExceptionPtr::_bad_alloc_storage;
-
+std::bad_alloc ExceptionPtr::_bad_alloc_storage;
+
ExceptionPtr ExceptionPtr::bad_alloc(
- &ExceptionPtr::_bad_alloc_storage,
- reinterpret_cast<const EHThrowInfo*>(__GetExceptionInfo(ExceptionPtr::_bad_alloc_storage)));
+ &ExceptionPtr::_bad_alloc_storage,
+ reinterpret_cast<const EHThrowInfo*>(__GetExceptionInfo(ExceptionPtr::_bad_alloc_storage)));
/* ExceptionPtr
ExceptionPtr::bad_exception(&std::bad_exception(),
diff --git a/contrib/libs/cxxsupp/libcxx/ya.make b/contrib/libs/cxxsupp/libcxx/ya.make
index e22c5f2ef7..15403fe6d5 100644
--- a/contrib/libs/cxxsupp/libcxx/ya.make
+++ b/contrib/libs/cxxsupp/libcxx/ya.make
@@ -1,12 +1,12 @@
LIBRARY()
-LICENSE(
+LICENSE(
Apache-2.0 AND
Apache-2.0 WITH LLVM-exception AND
BSD-2-Clause AND
MIT AND
NCSA
-)
+)
LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
@@ -25,9 +25,9 @@ ADDINCL(
CXXFLAGS(-D_LIBCPP_BUILDING_LIBRARY)
-IF (OS_ANDROID)
- DEFAULT(CXX_RT "default")
- IF (ARCH_I686 OR ARCH_ARM7)
+IF (OS_ANDROID)
+ DEFAULT(CXX_RT "default")
+ IF (ARCH_I686 OR ARCH_ARM7)
# 32-bit architectures require additional libandroid_support.so to be linked
# We add --start-group / --end-group statements due to the issue in NDK < r22.
# See: https://github.com/android/ndk/issues/1130
@@ -41,7 +41,7 @@ IF (OS_ANDROID)
)
ELSE()
LDFLAGS(-lc++abi)
- ENDIF()
+ ENDIF()
CFLAGS(
-DLIBCXX_BUILDING_LIBCXXABI
)
@@ -83,13 +83,13 @@ ELSEIF (OS_WINDOWS)
GLOBAL -D_LIBCPP_VASPRINTF_DEFINED
GLOBAL -D_WCHAR_H_CPLUSPLUS_98_CONFORMANCE_
)
- IF (CLANG_CL)
+ IF (CLANG_CL)
PEERDIR(
contrib/libs/cxxsupp/builtins
)
- ENDIF()
+ ENDIF()
ELSE()
- DEFAULT(CXX_RT "glibcxx_static")
+ DEFAULT(CXX_RT "glibcxx_static")
CXXFLAGS(
-Wno-unknown-pragmas
-nostdinc++
@@ -104,20 +104,20 @@ IF (CLANG)
CFLAGS(
GLOBAL -nostdinc++
)
-ENDIF()
-
-# The CXX_RT variable controls which C++ runtime is used.
-# * libcxxrt - https://github.com/pathscale/libcxxrt library stored in Arcadia
-# * glibcxx - GNU C++ Library runtime with default (static) linkage
-# * glibcxx_static - GNU C++ Library runtime with static linkage
-# * glibcxx_dynamic - GNU C++ Library runtime with dynamic linkage
-# * glibcxx_driver - GNU C++ Library runtime provided by the compiler driver
-# * default - default C++ runtime provided by the compiler driver
-#
-# All glibcxx* runtimes are taken from system/compiler SDK
-
-DEFAULT(CXX_RT "default")
-
+ENDIF()
+
+# The CXX_RT variable controls which C++ runtime is used.
+# * libcxxrt - https://github.com/pathscale/libcxxrt library stored in Arcadia
+# * glibcxx - GNU C++ Library runtime with default (static) linkage
+# * glibcxx_static - GNU C++ Library runtime with static linkage
+# * glibcxx_dynamic - GNU C++ Library runtime with dynamic linkage
+# * glibcxx_driver - GNU C++ Library runtime provided by the compiler driver
+# * default - default C++ runtime provided by the compiler driver
+#
+# All glibcxx* runtimes are taken from system/compiler SDK
+
+DEFAULT(CXX_RT "default")
+
DISABLE(NEED_GLIBCXX_CXX17_SHIMS)
IF (CXX_RT == "libcxxrt")
@@ -143,7 +143,7 @@ ELSEIF (CXX_RT == "glibcxx" OR CXX_RT == "glibcxx_static")
-lgcc_eh
-Wl,-Bdynamic
)
- CXXFLAGS(-D__GLIBCXX__=1)
+ CXXFLAGS(-D__GLIBCXX__=1)
ENABLE(NEED_GLIBCXX_CXX17_SHIMS)
CFLAGS(
GLOBAL -DLIBCXX_BUILDING_LIBGCC
@@ -153,19 +153,19 @@ ELSEIF (CXX_RT == "glibcxx_dynamic")
-lgcc_s
-lstdc++
)
- CXXFLAGS(-D__GLIBCXX__=1)
+ CXXFLAGS(-D__GLIBCXX__=1)
CFLAGS(
GLOBAL -DLIBCXX_BUILDING_LIBGCC
)
ENABLE(NEED_GLIBCXX_CXX17_SHIMS)
ELSEIF (CXX_RT == "glibcxx_driver")
- CXXFLAGS(-D__GLIBCXX__=1)
+ CXXFLAGS(-D__GLIBCXX__=1)
ELSEIF (CXX_RT == "default")
- # Do nothing
-ELSE()
+ # Do nothing
+ELSE()
MESSAGE(FATAL_ERROR "Unexpected CXX_RT value: ${CXX_RT}")
-ENDIF()
-
+ENDIF()
+
IF (NEED_GLIBCXX_CXX17_SHIMS)
IF (GCC)
# Assume GCC is bundled with a modern enough version of C++ runtime
diff --git a/contrib/libs/cxxsupp/libcxxrt/cxxabi.h b/contrib/libs/cxxsupp/libcxxrt/cxxabi.h
index 6e33d33c03..7a8cb6745f 100644
--- a/contrib/libs/cxxsupp/libcxxrt/cxxabi.h
+++ b/contrib/libs/cxxsupp/libcxxrt/cxxabi.h
@@ -183,9 +183,9 @@ struct __cxa_eh_globals
*/
unsigned int uncaughtExceptions;
};
-
-#define Y_CXA_EH_GLOBALS_COMPLETE
-
+
+#define Y_CXA_EH_GLOBALS_COMPLETE
+
/**
* ABI function returning the __cxa_eh_globals structure.
*/
diff --git a/contrib/libs/cxxsupp/libcxxrt/exception.cc b/contrib/libs/cxxsupp/libcxxrt/exception.cc
index 95f05ed474..6baf428ead 100644
--- a/contrib/libs/cxxsupp/libcxxrt/exception.cc
+++ b/contrib/libs/cxxsupp/libcxxrt/exception.cc
@@ -652,14 +652,14 @@ static void free_exception(char *e)
}
}
-static constexpr size_t align_to(size_t size, size_t alignment) noexcept {
- return (size + alignment - 1) / alignment * alignment;
-}
-
-static_assert(align_to(15, 16) == 16);
-static_assert(align_to(16, 16) == 16);
-static_assert(align_to(17, 16) == 32);
-
+static constexpr size_t align_to(size_t size, size_t alignment) noexcept {
+ return (size + alignment - 1) / alignment * alignment;
+}
+
+static_assert(align_to(15, 16) == 16);
+static_assert(align_to(16, 16) == 16);
+static_assert(align_to(17, 16) == 32);
+
static constexpr size_t exception_size = align_to(sizeof(__cxa_exception), 16);
static constexpr size_t dependent_exception_size = align_to(sizeof(__cxa_dependent_exception), 16);
#ifdef _YNDX_LIBUNWIND_ENABLE_EXCEPTION_BACKTRACE
diff --git a/contrib/libs/cxxsupp/libcxxrt/ya.make b/contrib/libs/cxxsupp/libcxxrt/ya.make
index 735eeccaa4..12dccbd505 100644
--- a/contrib/libs/cxxsupp/libcxxrt/ya.make
+++ b/contrib/libs/cxxsupp/libcxxrt/ya.make
@@ -34,13 +34,13 @@ NO_RUNTIME()
CXXFLAGS(-nostdinc++)
IF (CXX_UNWIND == "glibcxx_dynamic" OR ARCH_PPC64LE)
- LDFLAGS(-lgcc_s)
-ELSE()
+ LDFLAGS(-lgcc_s)
+ELSE()
PEERDIR(
contrib/libs/libunwind
)
-ENDIF()
-
+ENDIF()
+
IF (SANITIZER_TYPE == undefined OR FUZZING)
NO_SANITIZE()
NO_SANITIZE_COVERAGE()
diff --git a/contrib/libs/cxxsupp/libgcc/cxxabi.cpp b/contrib/libs/cxxsupp/libgcc/cxxabi.cpp
index 025615bc4e..fdb85e15af 100644
--- a/contrib/libs/cxxsupp/libgcc/cxxabi.cpp
+++ b/contrib/libs/cxxsupp/libgcc/cxxabi.cpp
@@ -1,13 +1,13 @@
-#include "cxxabi.h"
-
-#include <new>
-
-extern "C" {
- void __cxa_throw_bad_array_length() {
- throw std::bad_alloc();
- }
-
- void __cxa_throw_bad_array_new_length() {
- throw std::bad_alloc();
- }
-}
+#include "cxxabi.h"
+
+#include <new>
+
+extern "C" {
+ void __cxa_throw_bad_array_length() {
+ throw std::bad_alloc();
+ }
+
+ void __cxa_throw_bad_array_new_length() {
+ throw std::bad_alloc();
+ }
+}
diff --git a/contrib/libs/cxxsupp/libgcc/cxxabi.h b/contrib/libs/cxxsupp/libgcc/cxxabi.h
index a67a082594..b63490423f 100644
--- a/contrib/libs/cxxsupp/libgcc/cxxabi.h
+++ b/contrib/libs/cxxsupp/libgcc/cxxabi.h
@@ -1,6 +1,6 @@
-#pragma once
-
-extern "C" {
- void __cxa_throw_bad_array_length() __attribute__((weak, noreturn));
- void __cxa_throw_bad_array_new_length() __attribute__((weak, noreturn));
-}
+#pragma once
+
+extern "C" {
+ void __cxa_throw_bad_array_length() __attribute__((weak, noreturn));
+ void __cxa_throw_bad_array_new_length() __attribute__((weak, noreturn));
+}
diff --git a/contrib/libs/cxxsupp/libgcc/stdcxx_bits.cpp b/contrib/libs/cxxsupp/libgcc/stdcxx_bits.cpp
index 01977e16d8..0a34ef50c4 100644
--- a/contrib/libs/cxxsupp/libgcc/stdcxx_bits.cpp
+++ b/contrib/libs/cxxsupp/libgcc/stdcxx_bits.cpp
@@ -1,12 +1,12 @@
-#include "stdcxx_bits.h"
-
-#include <stdexcept>
-
-namespace std {
-
-void __throw_out_of_range_fmt(const char* __fmt, ...) {
- (void)__fmt;
- throw std::out_of_range("__throw_out_of_range_fmt");
-}
-
-}
+#include "stdcxx_bits.h"
+
+#include <stdexcept>
+
+namespace std {
+
+void __throw_out_of_range_fmt(const char* __fmt, ...) {
+ (void)__fmt;
+ throw std::out_of_range("__throw_out_of_range_fmt");
+}
+
+}
diff --git a/contrib/libs/cxxsupp/libgcc/stdcxx_bits.h b/contrib/libs/cxxsupp/libgcc/stdcxx_bits.h
index c1a62b66ce..821ccb185c 100644
--- a/contrib/libs/cxxsupp/libgcc/stdcxx_bits.h
+++ b/contrib/libs/cxxsupp/libgcc/stdcxx_bits.h
@@ -1,11 +1,11 @@
-#pragma once
-
-namespace std {
-
-void __throw_out_of_range_fmt(const char*, ...)
- __attribute__((__noreturn__))
- __attribute__((__format__(__printf__, 1, 2)))
- __attribute__((__weak__))
-;
-
-}
+#pragma once
+
+namespace std {
+
+void __throw_out_of_range_fmt(const char*, ...)
+ __attribute__((__noreturn__))
+ __attribute__((__format__(__printf__, 1, 2)))
+ __attribute__((__weak__))
+;
+
+}
diff --git a/contrib/libs/cxxsupp/libgcc/ya.make b/contrib/libs/cxxsupp/libgcc/ya.make
index afe0f48ba3..d748a74846 100644
--- a/contrib/libs/cxxsupp/libgcc/ya.make
+++ b/contrib/libs/cxxsupp/libgcc/ya.make
@@ -1,24 +1,24 @@
-LIBRARY()
-
+LIBRARY()
+
WITHOUT_LICENSE_TEXTS()
LICENSE(YandexOpen)
-
-# Placeholders for new GCC 4.9.2 C++ ABI which is not present on older systems
-
-OWNER(
- somov
- g:contrib
- g:cpp-contrib
-)
-
+
+# Placeholders for new GCC 4.9.2 C++ ABI which is not present on older systems
+
+OWNER(
+ somov
+ g:contrib
+ g:cpp-contrib
+)
+
IF (NOT OS_WINDOWS)
SRCS(
cxxabi.cpp
stdcxx_bits.cpp
)
ENDIF()
-
-NO_UTIL()
-
-END()
+
+NO_UTIL()
+
+END()
diff --git a/contrib/libs/cxxsupp/libsan/generate_symbolizer.py b/contrib/libs/cxxsupp/libsan/generate_symbolizer.py
index 6d410023fb..d28c64bd92 100644
--- a/contrib/libs/cxxsupp/libsan/generate_symbolizer.py
+++ b/contrib/libs/cxxsupp/libsan/generate_symbolizer.py
@@ -1,12 +1,12 @@
-import os
-import sys
-
-
-def main():
- print 'const char* ya_get_symbolizer_gen() {'
- print ' return "{}";'.format(os.path.join(os.path.dirname(sys.argv[1]), 'llvm-symbolizer'))
- print '}'
-
-
-if __name__ == '__main__':
- main()
+import os
+import sys
+
+
+def main():
+ print 'const char* ya_get_symbolizer_gen() {'
+ print ' return "{}";'.format(os.path.join(os.path.dirname(sys.argv[1]), 'llvm-symbolizer'))
+ print '}'
+
+
+if __name__ == '__main__':
+ main()
diff --git a/contrib/libs/cxxsupp/libsan/inject.c b/contrib/libs/cxxsupp/libsan/inject.c
index a2642e6ec3..7790db5f36 100644
--- a/contrib/libs/cxxsupp/libsan/inject.c
+++ b/contrib/libs/cxxsupp/libsan/inject.c
@@ -1,8 +1,8 @@
#include <unistd.h>
-extern const char* ya_get_symbolizer_gen();
-
-const char* ya_get_symbolizer() {
+extern const char* ya_get_symbolizer_gen();
+
+const char* ya_get_symbolizer() {
const char* path = ya_get_symbolizer_gen();
return access(path, X_OK) ? NULL : path;
-}
+}
diff --git a/contrib/libs/cxxsupp/libsan/ya.make b/contrib/libs/cxxsupp/libsan/ya.make
index 01e38a451f..2fb16630be 100644
--- a/contrib/libs/cxxsupp/libsan/ya.make
+++ b/contrib/libs/cxxsupp/libsan/ya.make
@@ -1,26 +1,26 @@
-LIBRARY()
-
+LIBRARY()
+
WITHOUT_LICENSE_TEXTS()
LICENSE(YandexOpen)
-NO_PLATFORM()
+NO_PLATFORM()
-NO_SANITIZE()
+NO_SANITIZE()
NO_SANITIZE_COVERAGE()
-
+
OWNER(somov)
PYTHON(
generate_symbolizer.py ${CXX_COMPILER}
STDOUT symbolizer.c
)
-
-CFLAGS(-fPIC)
-
-SRCS(
- GLOBAL inject.c
-)
-
-END()
+
+CFLAGS(-fPIC)
+
+SRCS(
+ GLOBAL inject.c
+)
+
+END()
diff --git a/contrib/libs/cxxsupp/system_stl/include/stlfwd b/contrib/libs/cxxsupp/system_stl/include/stlfwd
index 07246ddca5..94e9c17f3f 100644
--- a/contrib/libs/cxxsupp/system_stl/include/stlfwd
+++ b/contrib/libs/cxxsupp/system_stl/include/stlfwd
@@ -1,14 +1,14 @@
-#pragma once
-
+#pragma once
+
// STL "forwarding" for the poor
-
-#include <cstddef>
-#include <string>
+
+#include <cstddef>
+#include <string>
#include <string_view>
-#include <utility>
-#include <vector>
-#include <list>
-#include <deque>
-#include <map>
-#include <set>
+#include <utility>
+#include <vector>
+#include <list>
+#include <deque>
+#include <map>
+#include <set>
#include <functional>
diff --git a/contrib/libs/cxxsupp/system_stl/ya.make b/contrib/libs/cxxsupp/system_stl/ya.make
index 41d48cd76d..75317898ac 100644
--- a/contrib/libs/cxxsupp/system_stl/ya.make
+++ b/contrib/libs/cxxsupp/system_stl/ya.make
@@ -1,5 +1,5 @@
-LIBRARY()
-
+LIBRARY()
+
WITHOUT_LICENSE_TEXTS()
LICENSE(YandexOpen)
@@ -9,11 +9,11 @@ OWNER(
g:cpp-contrib
somov
)
-
-NO_PLATFORM()
-
-ADDINCL(GLOBAL contrib/libs/cxxsupp/system_stl/include)
-
+
+NO_PLATFORM()
+
+ADDINCL(GLOBAL contrib/libs/cxxsupp/system_stl/include)
+
IF (OS_IOS OR OS_DARWIN)
LDFLAGS(-lc++)
ELSEIF (OS_ANDROID)
@@ -35,5 +35,5 @@ ELSE()
LDFLAGS(-lstdc++)
ENDIF()
ENDIF()
-
-END()
+
+END()
diff --git a/contrib/libs/cxxsupp/ya.make b/contrib/libs/cxxsupp/ya.make
index beceda98ab..6cd299ac8a 100644
--- a/contrib/libs/cxxsupp/ya.make
+++ b/contrib/libs/cxxsupp/ya.make
@@ -1,28 +1,28 @@
LIBRARY()
-
+
WITHOUT_LICENSE_TEXTS()
# Proxy library
-LICENSE(Not-Applicable)
-
+LICENSE(Not-Applicable)
+
OWNER(
g:contrib
g:cpp-contrib
)
-NO_PLATFORM()
+NO_PLATFORM()
DISABLE(OPENSOURCE_EXPORT)
-
-IF (NOT USE_STL_SYSTEM)
- PEERDIR(
+
+IF (NOT USE_STL_SYSTEM)
+ PEERDIR(
contrib/libs/cxxsupp/libcxx
- )
-ELSE()
- PEERDIR(
- contrib/libs/cxxsupp/system_stl
- )
-ENDIF()
-
+ )
+ELSE()
+ PEERDIR(
+ contrib/libs/cxxsupp/system_stl
+ )
+ENDIF()
+
END()
RECURSE(
diff --git a/contrib/libs/farmhash/COPYING b/contrib/libs/farmhash/COPYING
index ace09804a3..8176e66198 100644
--- a/contrib/libs/farmhash/COPYING
+++ b/contrib/libs/farmhash/COPYING
@@ -1,19 +1,19 @@
-// Copyright (c) 2014 Google, Inc.
-//
-// 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.
+// Copyright (c) 2014 Google, Inc.
+//
+// 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.
diff --git a/contrib/libs/farmhash/IMPORT b/contrib/libs/farmhash/IMPORT
index 82f14a4b01..a923a166bf 100644
--- a/contrib/libs/farmhash/IMPORT
+++ b/contrib/libs/farmhash/IMPORT
@@ -1 +1 @@
-Imported from https://github.com/google/farmhash commit 23eecfbe7e84ebf2e229bd02248f431c36e12f1a (master branch, 2017-06-26)
+Imported from https://github.com/google/farmhash commit 23eecfbe7e84ebf2e229bd02248f431c36e12f1a (master branch, 2017-06-26)
diff --git a/contrib/libs/farmhash/README b/contrib/libs/farmhash/README
index a0b2414a2c..146936d21a 100644
--- a/contrib/libs/farmhash/README
+++ b/contrib/libs/farmhash/README
@@ -1,163 +1,163 @@
-FarmHash, a family of hash functions.
-Version 1.1
-
-Introduction
-============
-
-A general overview of hash functions and their use is available in the file
-Understanding_Hash_Functions in this directory. It may be helpful to read it
-before using FarmHash.
-
-FarmHash provides hash functions for strings and other data. The functions
-mix the input bits thoroughly but are not suitable for cryptography. See
-"Hash Quality," below, for details on how FarmHash was tested and so on.
-
-We provide reference implementations in C++, with a friendly MIT license.
-
-All members of the FarmHash family were designed with heavy reliance on
-previous work by Jyrki Alakuijala, Austin Appleby, Bob Jenkins, and others.
-
-
-Recommended Usage
-=================
-
-Our belief is that the typical hash function is mostly used for in-memory hash
-tables and similar. That use case allows hash functions that differ on
-different platforms, and that change from time to time. For this, I recommend
-using wrapper functions in a .h file with comments such as, "may change from
-time to time, may differ on different platforms, and may change depending on
-NDEBUG."
-
-Some projects may also require a forever-fixed, portable hash function. Again
-we recommend using wrapper functions in a .h, but in this case the comments on
-them would be very different.
-
-We have provided a sample of these wrapper functions in src/farmhash.h. Our
-hope is that most people will need nothing more than src/farmhash.h and
-src/farmhash.cc. Those two files are a usable and relatively portable library.
-(One portability snag: if your compiler doesn't have __builtin_expect then
-you may need to define FARMHASH_NO_BUILTIN_EXPECT.) For those that prefer
-using a configure script (perhaps because they want to "make install" later),
-FarmHash has one, but for many people it's best to ignore it.
-
-Note that the wrapper functions such as Hash() in src/farmhash.h can select
-one of several hash functions. The selection is done at compile time, based
-on your machine architecture (e.g., sizeof(size_t)) and the availability of
-vector instructions (e.g., SSE4.1).
-
-To get the best performance from FarmHash, one will need to think a bit about
-when to use compiler flags that allow vector instructions and such: -maes,
--msse4.2, -mavx, etc., or their equivalents for other compilers. Those are
-the g++ flags that make g++ emit more types of machine instructions than it
-otherwise would. For example, if you are confident that you will only be
-using FarmHash on systems with SSE4.2 and/or AES, you may communicate that to
-the compiler as explained in src/farmhash.cc. If not, use -maes, -mavx, etc.,
-when you can, and the appropriate choices will be made by via conditional
-compilation in src/farmhash.cc.
-
-It may be beneficial to try -O3 or other compiler flags as well. I also have
-found feedback-directed optimization (FDO) to improve the speed of FarmHash.
-
-The "configure" script: creating config.h
-=========================================
-
-We provide reference implementations of several FarmHash functions, written in
-C++. The build system is based on autoconf. It defaults the C++ compiler
-flags to "-g -O2", which may or may not be best.
-
-If you are planning to use the configure script, I generally recommend
-trying this first, unless you know that your system lacks AVX and/or AESNI:
-
- ./configure CXXFLAGS="-g -mavx -maes -O3"
- make all check
-
-If that fails, you can retry with -mavx and/or -maes removed, or with -mavx replaced by
--msse4.1 or -msse4.2.
-
-Please see below for thoughts on cross-platform testing, if that is a concern.
-Finally, if you want to install a library, you may use
-
- make install
-
-Some useful flags for configure include:
-
- --enable-optional-builtin-expect: This causes __builtin_expect to be optional.
- If you don't use this flag, the assumption is that FarmHash will be compiled
- with compilers that provide __builtin_expect. In practice, some FarmHash
- variants may be slightly faster if __builtin_expect is available, but it
- isn't very important and affects speed only.
-
-Further Details
-===============
-
-The above instructions will produce a single source-level library that
-includes multiple hash functions. It will use conditional compilation, and
-perhaps GCC's multiversioning, to select among the functions. In addition,
-"make all check" will create an object file using your chosen compiler, and
-test it. The object file won't necessarily contain all the code that would be
-used if you were to compile the code on other platforms. The downside of this
-is obvious: the paths not tested may not actually work if and when you try
-them. The FarmHash developers try hard to prevent such problems; please let
-us know if you find bugs.
-
-To aid your cross-platform testing, for each relevant platform you may
-compile your program that uses farmhash.cc with the preprocessor flag
-FARMHASHSELFTEST equal to 1. This causes a FarmHash self test to run
-at program startup; the self test writes output to stdout and then
-calls std::exit(). You can see this in action by running "make check":
-see src/farm-test.cc for details.
-
-There's also a trivial workaround to force particular functions to be used:
-modify the wrapper functions in hash.h. You can prevent choices being made via
-conditional compilation or multiversioning by choosing FarmHash variants with
-names like farmhashaa::Hash32, farmhashab::Hash64, etc.: those compute the same
-hash function regardless of conditional compilation, multiversioning, or
-endianness. Consult their comments and ifdefs to learn their requirements: for
-example, they are not all guaranteed to work on all platforms.
-
-Known Issues
-============
-
-1) FarmHash was developed with little-endian architectures in mind. It should
-work on big-endian too, but less work has gone into optimizing for those
-platforms. To make FarmHash work properly on big-endian platforms you may
-need to modify the wrapper .h file and/or your compiler flags to arrange for
-FARMHASH_BIG_ENDIAN to be defined, though there is logic that tries to figure
-it out automatically.
-
-2) FarmHash's implementation is fairly complex.
-
-3) The techniques described in dev/INSTRUCTIONS to let hash function
-developers regenerate src/*.cc from dev/* are hacky and not so portable.
-
-Hash Quality
-============
-
-We like to test hash functions with SMHasher, among other things.
-SMHasher isn't perfect, but it seems to find almost any significant flaw.
-SMHasher is available at http://code.google.com/p/smhasher/
-
-SMHasher is designed to pass a 32-bit seed to the hash functions it tests.
-For our functions that accept a seed, we use the given seed directly (padded
-with zeroes as needed); for our functions that don't accept a seed, we hash
-the concatenation of the given seed and the input string.
-
-Some minor flaws in 32-bit and 64-bit functions are harmless, as we
-expect the primary use of these functions will be in hash tables. We
-may have gone slightly overboard in trying to please SMHasher and other
-similar tests, but we don't want anyone to choose a different hash function
-because of some minor issue reported by a quality test.
-
-If your setup is similar enough to mine, it's easy to use SMHasher and other
-tools yourself via the "builder" in the dev directory. See dev/INSTRUCTIONS.
-(Improvements to that directory are a relatively low priority, and code
-there is never going to be as portable as the other parts of FarmHash.)
-
-For more information
-====================
-
-http://code.google.com/p/farmhash/
-
-farmhash-discuss@googlegroups.com
-
-Please feel free to send us comments, questions, bug reports, or patches.
+FarmHash, a family of hash functions.
+Version 1.1
+
+Introduction
+============
+
+A general overview of hash functions and their use is available in the file
+Understanding_Hash_Functions in this directory. It may be helpful to read it
+before using FarmHash.
+
+FarmHash provides hash functions for strings and other data. The functions
+mix the input bits thoroughly but are not suitable for cryptography. See
+"Hash Quality," below, for details on how FarmHash was tested and so on.
+
+We provide reference implementations in C++, with a friendly MIT license.
+
+All members of the FarmHash family were designed with heavy reliance on
+previous work by Jyrki Alakuijala, Austin Appleby, Bob Jenkins, and others.
+
+
+Recommended Usage
+=================
+
+Our belief is that the typical hash function is mostly used for in-memory hash
+tables and similar. That use case allows hash functions that differ on
+different platforms, and that change from time to time. For this, I recommend
+using wrapper functions in a .h file with comments such as, "may change from
+time to time, may differ on different platforms, and may change depending on
+NDEBUG."
+
+Some projects may also require a forever-fixed, portable hash function. Again
+we recommend using wrapper functions in a .h, but in this case the comments on
+them would be very different.
+
+We have provided a sample of these wrapper functions in src/farmhash.h. Our
+hope is that most people will need nothing more than src/farmhash.h and
+src/farmhash.cc. Those two files are a usable and relatively portable library.
+(One portability snag: if your compiler doesn't have __builtin_expect then
+you may need to define FARMHASH_NO_BUILTIN_EXPECT.) For those that prefer
+using a configure script (perhaps because they want to "make install" later),
+FarmHash has one, but for many people it's best to ignore it.
+
+Note that the wrapper functions such as Hash() in src/farmhash.h can select
+one of several hash functions. The selection is done at compile time, based
+on your machine architecture (e.g., sizeof(size_t)) and the availability of
+vector instructions (e.g., SSE4.1).
+
+To get the best performance from FarmHash, one will need to think a bit about
+when to use compiler flags that allow vector instructions and such: -maes,
+-msse4.2, -mavx, etc., or their equivalents for other compilers. Those are
+the g++ flags that make g++ emit more types of machine instructions than it
+otherwise would. For example, if you are confident that you will only be
+using FarmHash on systems with SSE4.2 and/or AES, you may communicate that to
+the compiler as explained in src/farmhash.cc. If not, use -maes, -mavx, etc.,
+when you can, and the appropriate choices will be made by via conditional
+compilation in src/farmhash.cc.
+
+It may be beneficial to try -O3 or other compiler flags as well. I also have
+found feedback-directed optimization (FDO) to improve the speed of FarmHash.
+
+The "configure" script: creating config.h
+=========================================
+
+We provide reference implementations of several FarmHash functions, written in
+C++. The build system is based on autoconf. It defaults the C++ compiler
+flags to "-g -O2", which may or may not be best.
+
+If you are planning to use the configure script, I generally recommend
+trying this first, unless you know that your system lacks AVX and/or AESNI:
+
+ ./configure CXXFLAGS="-g -mavx -maes -O3"
+ make all check
+
+If that fails, you can retry with -mavx and/or -maes removed, or with -mavx replaced by
+-msse4.1 or -msse4.2.
+
+Please see below for thoughts on cross-platform testing, if that is a concern.
+Finally, if you want to install a library, you may use
+
+ make install
+
+Some useful flags for configure include:
+
+ --enable-optional-builtin-expect: This causes __builtin_expect to be optional.
+ If you don't use this flag, the assumption is that FarmHash will be compiled
+ with compilers that provide __builtin_expect. In practice, some FarmHash
+ variants may be slightly faster if __builtin_expect is available, but it
+ isn't very important and affects speed only.
+
+Further Details
+===============
+
+The above instructions will produce a single source-level library that
+includes multiple hash functions. It will use conditional compilation, and
+perhaps GCC's multiversioning, to select among the functions. In addition,
+"make all check" will create an object file using your chosen compiler, and
+test it. The object file won't necessarily contain all the code that would be
+used if you were to compile the code on other platforms. The downside of this
+is obvious: the paths not tested may not actually work if and when you try
+them. The FarmHash developers try hard to prevent such problems; please let
+us know if you find bugs.
+
+To aid your cross-platform testing, for each relevant platform you may
+compile your program that uses farmhash.cc with the preprocessor flag
+FARMHASHSELFTEST equal to 1. This causes a FarmHash self test to run
+at program startup; the self test writes output to stdout and then
+calls std::exit(). You can see this in action by running "make check":
+see src/farm-test.cc for details.
+
+There's also a trivial workaround to force particular functions to be used:
+modify the wrapper functions in hash.h. You can prevent choices being made via
+conditional compilation or multiversioning by choosing FarmHash variants with
+names like farmhashaa::Hash32, farmhashab::Hash64, etc.: those compute the same
+hash function regardless of conditional compilation, multiversioning, or
+endianness. Consult their comments and ifdefs to learn their requirements: for
+example, they are not all guaranteed to work on all platforms.
+
+Known Issues
+============
+
+1) FarmHash was developed with little-endian architectures in mind. It should
+work on big-endian too, but less work has gone into optimizing for those
+platforms. To make FarmHash work properly on big-endian platforms you may
+need to modify the wrapper .h file and/or your compiler flags to arrange for
+FARMHASH_BIG_ENDIAN to be defined, though there is logic that tries to figure
+it out automatically.
+
+2) FarmHash's implementation is fairly complex.
+
+3) The techniques described in dev/INSTRUCTIONS to let hash function
+developers regenerate src/*.cc from dev/* are hacky and not so portable.
+
+Hash Quality
+============
+
+We like to test hash functions with SMHasher, among other things.
+SMHasher isn't perfect, but it seems to find almost any significant flaw.
+SMHasher is available at http://code.google.com/p/smhasher/
+
+SMHasher is designed to pass a 32-bit seed to the hash functions it tests.
+For our functions that accept a seed, we use the given seed directly (padded
+with zeroes as needed); for our functions that don't accept a seed, we hash
+the concatenation of the given seed and the input string.
+
+Some minor flaws in 32-bit and 64-bit functions are harmless, as we
+expect the primary use of these functions will be in hash tables. We
+may have gone slightly overboard in trying to please SMHasher and other
+similar tests, but we don't want anyone to choose a different hash function
+because of some minor issue reported by a quality test.
+
+If your setup is similar enough to mine, it's easy to use SMHasher and other
+tools yourself via the "builder" in the dev directory. See dev/INSTRUCTIONS.
+(Improvements to that directory are a relatively low priority, and code
+there is never going to be as portable as the other parts of FarmHash.)
+
+For more information
+====================
+
+http://code.google.com/p/farmhash/
+
+farmhash-discuss@googlegroups.com
+
+Please feel free to send us comments, questions, bug reports, or patches.
diff --git a/contrib/libs/farmhash/arch/sse41/ya.make b/contrib/libs/farmhash/arch/sse41/ya.make
index 21dde59a82..b3b2964c99 100644
--- a/contrib/libs/farmhash/arch/sse41/ya.make
+++ b/contrib/libs/farmhash/arch/sse41/ya.make
@@ -1,21 +1,21 @@
-LIBRARY()
-
+LIBRARY()
+
WITHOUT_LICENSE_TEXTS()
LICENSE(MIT)
OWNER(somov)
-
-NO_COMPILER_WARNINGS()
-
+
+NO_COMPILER_WARNINGS()
+
IF (NOT MSVC OR CLANG_CL)
- CFLAGS(-msse4.1)
-ENDIF()
-
-SRCDIR(contrib/libs/farmhash)
-
+ CFLAGS(-msse4.1)
+ENDIF()
+
+SRCDIR(contrib/libs/farmhash)
+
SRCS(
farmhashnt.cc
)
-
-END()
+
+END()
diff --git a/contrib/libs/farmhash/arch/sse42/ya.make b/contrib/libs/farmhash/arch/sse42/ya.make
index fab89cdec9..6df471feb7 100644
--- a/contrib/libs/farmhash/arch/sse42/ya.make
+++ b/contrib/libs/farmhash/arch/sse42/ya.make
@@ -1,22 +1,22 @@
-LIBRARY()
-
+LIBRARY()
+
WITHOUT_LICENSE_TEXTS()
LICENSE(MIT)
OWNER(somov)
-
-NO_COMPILER_WARNINGS()
-
+
+NO_COMPILER_WARNINGS()
+
IF (NOT MSVC OR CLANG_CL)
- CFLAGS(-msse4.2)
-ENDIF()
-
-SRCDIR(contrib/libs/farmhash)
-
-SRCS(
- farmhashsa.cc
- farmhashte.cc
-)
-
-END()
+ CFLAGS(-msse4.2)
+ENDIF()
+
+SRCDIR(contrib/libs/farmhash)
+
+SRCS(
+ farmhashsa.cc
+ farmhashte.cc
+)
+
+END()
diff --git a/contrib/libs/farmhash/arch/sse42_aesni/ya.make b/contrib/libs/farmhash/arch/sse42_aesni/ya.make
index d403c5b4b5..4d558bc2a2 100644
--- a/contrib/libs/farmhash/arch/sse42_aesni/ya.make
+++ b/contrib/libs/farmhash/arch/sse42_aesni/ya.make
@@ -1,24 +1,24 @@
-LIBRARY()
-
+LIBRARY()
+
WITHOUT_LICENSE_TEXTS()
LICENSE(MIT)
OWNER(somov)
-
-NO_COMPILER_WARNINGS()
-
+
+NO_COMPILER_WARNINGS()
+
IF (NOT MSVC OR CLANG_CL)
CFLAGS(
-msse4.2
-maes
)
-ENDIF()
-
-SRCDIR(contrib/libs/farmhash)
-
+ENDIF()
+
+SRCDIR(contrib/libs/farmhash)
+
SRCS(
farmhashsu.cc
)
-
-END()
+
+END()
diff --git a/contrib/libs/farmhash/common.h b/contrib/libs/farmhash/common.h
index fc3a77db81..7c6acfee33 100644
--- a/contrib/libs/farmhash/common.h
+++ b/contrib/libs/farmhash/common.h
@@ -1,412 +1,412 @@
-#pragma once
-
-// Copyright (c) 2014 Google, Inc.
-//
-// 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.
-//
-// FarmHash, by Geoff Pike
-
-#include "farmhash.h"
-// FARMHASH ASSUMPTIONS: Modify as needed, or use -DFARMHASH_ASSUME_SSE42 etc.
-// Note that if you use -DFARMHASH_ASSUME_SSE42 you likely need -msse42
-// (or its equivalent for your compiler); if you use -DFARMHASH_ASSUME_AESNI
-// you likely need -maes (or its equivalent for your compiler).
-
-#ifdef FARMHASH_ASSUME_SSSE3
-#undef FARMHASH_ASSUME_SSSE3
-#define FARMHASH_ASSUME_SSSE3 1
-#endif
-
-#ifdef FARMHASH_ASSUME_SSE41
-#undef FARMHASH_ASSUME_SSE41
-#define FARMHASH_ASSUME_SSE41 1
-#endif
-
-#ifdef FARMHASH_ASSUME_SSE42
-#undef FARMHASH_ASSUME_SSE42
-#define FARMHASH_ASSUME_SSE42 1
-#endif
-
-#ifdef FARMHASH_ASSUME_AESNI
-#undef FARMHASH_ASSUME_AESNI
-#define FARMHASH_ASSUME_AESNI 1
-#endif
-
-#ifdef FARMHASH_ASSUME_AVX
-#undef FARMHASH_ASSUME_AVX
-#define FARMHASH_ASSUME_AVX 1
-#endif
-
-#if !defined(FARMHASH_CAN_USE_CXX11) && defined(LANG_CXX11)
-#define FARMHASH_CAN_USE_CXX11 1
-#else
-#undef FARMHASH_CAN_USE_CXX11
-#define FARMHASH_CAN_USE_CXX11 0
-#endif
-
-// FARMHASH PORTABILITY LAYER: Runtime error if misconfigured
-
-#ifndef FARMHASH_DIE_IF_MISCONFIGURED
-#define FARMHASH_DIE_IF_MISCONFIGURED do { *(char*)(len % 17) = 0; } while (0)
-#endif
-
-// FARMHASH PORTABILITY LAYER: "static inline" or similar
-
-#ifndef STATIC_INLINE
-#define STATIC_INLINE static inline
-#endif
-
-// FARMHASH PORTABILITY LAYER: LIKELY and UNLIKELY
-
-#if defined(_MSC_VER)
-# define FARMHASH_NO_BUILTIN_EXPECT
-#endif
-
-#if !defined(LIKELY)
-#if defined(FARMHASH_NO_BUILTIN_EXPECT) || (defined(FARMHASH_OPTIONAL_BUILTIN_EXPECT) && !defined(HAVE_BUILTIN_EXPECT))
-#define LIKELY(x) (x)
-#else
-#define LIKELY(x) (__builtin_expect(!!(x), 1))
-#endif
-#endif
-
-#undef UNLIKELY
-#define UNLIKELY(x) !LIKELY(!(x))
-
-// FARMHASH PORTABILITY LAYER: endianness and byteswapping functions
-
-#ifdef WORDS_BIGENDIAN
-#undef FARMHASH_BIG_ENDIAN
-#define FARMHASH_BIG_ENDIAN 1
-#endif
-
-#if defined(FARMHASH_LITTLE_ENDIAN) && defined(FARMHASH_BIG_ENDIAN)
-#error
-#endif
-
-#if !defined(FARMHASH_LITTLE_ENDIAN) && !defined(FARMHASH_BIG_ENDIAN)
-#define FARMHASH_UNKNOWN_ENDIAN 1
-#endif
-
-#if !defined(bswap_32) || !defined(bswap_64)
-#undef bswap_32
-#undef bswap_64
-
-#if defined(HAVE_BUILTIN_BSWAP) || defined(__clang__) || \
- (defined(__GNUC__) && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 8) || \
- __GNUC__ >= 5))
-// Easy case for bswap: no header file needed.
-#define bswap_32(x) __builtin_bswap32(x)
-#define bswap_64(x) __builtin_bswap64(x)
-#endif
-
-#endif
-
-#if defined(FARMHASH_UNKNOWN_ENDIAN) || !defined(bswap_64)
-
-#ifdef _MSC_VER
-
-#undef bswap_32
-#undef bswap_64
-#define bswap_32(x) _byteswap_ulong(x)
-#define bswap_64(x) _byteswap_uint64(x)
-
-#elif defined(__APPLE__)
-
-// Mac OS X / Darwin features
-#include <libkern/OSByteOrder.h>
-#undef bswap_32
-#undef bswap_64
-#define bswap_32(x) OSSwapInt32(x)
-#define bswap_64(x) OSSwapInt64(x)
-
-#elif defined(__sun) || defined(sun)
-
-#include <sys/byteorder.h>
-#undef bswap_32
-#undef bswap_64
-#define bswap_32(x) BSWAP_32(x)
-#define bswap_64(x) BSWAP_64(x)
-
-#elif defined(__FreeBSD__) || defined(__DragonFly__)
-
-#include <sys/endian.h>
-#undef bswap_32
-#undef bswap_64
-#define bswap_32(x) bswap32(x)
-#define bswap_64(x) bswap64(x)
-
-#elif defined(__OpenBSD__)
-
-#include <sys/types.h>
-#undef bswap_32
-#undef bswap_64
-#define bswap_32(x) swap32(x)
-#define bswap_64(x) swap64(x)
-
-#elif defined(__NetBSD__)
-
-#include <sys/types.h>
-#include <machine/bswap.h>
-#if defined(__BSWAP_RENAME) && !defined(__bswap_32)
-#undef bswap_32
-#undef bswap_64
-#define bswap_32(x) bswap32(x)
-#define bswap_64(x) bswap64(x)
-#endif
-
-#else
-
-#undef bswap_32
-#undef bswap_64
-#include <byteswap.h>
-
-#endif
-
-#ifdef WORDS_BIGENDIAN
-#define FARMHASH_BIG_ENDIAN 1
-#endif
-
-#endif
-
-#ifdef FARMHASH_BIG_ENDIAN
-#define uint32_in_expected_order(x) (bswap_32(x))
-#define uint64_in_expected_order(x) (bswap_64(x))
-#else
-#define uint32_in_expected_order(x) (x)
-#define uint64_in_expected_order(x) (x)
-#endif
-
-namespace NAMESPACE_FOR_HASH_FUNCTIONS {
-
-STATIC_INLINE uint64_t Fetch64(const char *p) {
- uint64_t result;
- memcpy(&result, p, sizeof(result));
- return uint64_in_expected_order(result);
-}
-
-STATIC_INLINE uint32_t Fetch32(const char *p) {
- uint32_t result;
- memcpy(&result, p, sizeof(result));
- return uint32_in_expected_order(result);
-}
-
-STATIC_INLINE uint32_t Bswap32(uint32_t val) { return bswap_32(val); }
-STATIC_INLINE uint64_t Bswap64(uint64_t val) { return bswap_64(val); }
-
-// FARMHASH PORTABILITY LAYER: bitwise rot
-
-STATIC_INLINE uint32_t BasicRotate32(uint32_t val, int shift) {
- // Avoid shifting by 32: doing so yields an undefined result.
- return shift == 0 ? val : ((val >> shift) | (val << (32 - shift)));
-}
-
-STATIC_INLINE uint64_t BasicRotate64(uint64_t val, int shift) {
- // Avoid shifting by 64: doing so yields an undefined result.
- return shift == 0 ? val : ((val >> shift) | (val << (64 - shift)));
-}
-
-#if defined(_MSC_VER) && defined(FARMHASH_ROTR)
-
-STATIC_INLINE uint32_t Rotate32(uint32_t val, int shift) {
- return sizeof(unsigned long) == sizeof(val) ?
- _lrotr(val, shift) :
- BasicRotate32(val, shift);
-}
-
-STATIC_INLINE uint64_t Rotate64(uint64_t val, int shift) {
- return sizeof(unsigned long) == sizeof(val) ?
- _lrotr(val, shift) :
- BasicRotate64(val, shift);
-}
-
-#else
-
-STATIC_INLINE uint32_t Rotate32(uint32_t val, int shift) {
- return BasicRotate32(val, shift);
-}
-STATIC_INLINE uint64_t Rotate64(uint64_t val, int shift) {
- return BasicRotate64(val, shift);
-}
-
-#endif
-
-} // namespace NAMESPACE_FOR_HASH_FUNCTIONS
-
-// FARMHASH PORTABILITY LAYER: debug mode or max speed?
-// One may use -DFARMHASH_DEBUG=1 or -DFARMHASH_DEBUG=0 to force the issue.
-
-#if !defined(FARMHASH_DEBUG) && (!defined(NDEBUG) || defined(_DEBUG))
-#define FARMHASH_DEBUG 1
-#endif
-
-#undef debug_mode
-#if FARMHASH_DEBUG
-#define debug_mode 1
-#else
-#define debug_mode 0
-#endif
-
-// PLATFORM-SPECIFIC FUNCTIONS AND MACROS
-
-#undef x86_64
-#if defined (__x86_64) || defined (__x86_64__)
-#define x86_64 1
-#else
-#define x86_64 0
-#endif
-
-#undef x86
-#if defined(__i386__) || defined(__i386) || defined(__X86__)
-#define x86 1
-#else
-#define x86 x86_64
-#endif
-
-#if !defined(is_64bit)
-#define is_64bit (x86_64 || (sizeof(void*) == 8))
-#endif
-
-#undef can_use_ssse3
-#if defined(__SSSE3__) || defined(FARMHASH_ASSUME_SSSE3)
-
-#include <immintrin.h>
-#define can_use_ssse3 1
-// Now we can use _mm_hsub_epi16 and so on.
-
-#else
-#define can_use_ssse3 0
-#endif
-
-#undef can_use_sse41
-#if defined(__SSE4_1__) || defined(FARMHASH_ASSUME_SSE41)
-
-#include <immintrin.h>
-#define can_use_sse41 1
-// Now we can use _mm_insert_epi64 and so on.
-
-#else
-#define can_use_sse41 0
-#endif
-
-#undef can_use_sse42
-#if defined(__SSE4_2__) || defined(FARMHASH_ASSUME_SSE42)
-
-#include <nmmintrin.h>
-#define can_use_sse42 1
-// Now we can use _mm_crc32_u{32,16,8}. And on 64-bit platforms, _mm_crc32_u64.
-
-#else
-#define can_use_sse42 0
-#endif
-
-#undef can_use_aesni
-#if defined(__AES__) || defined(FARMHASH_ASSUME_AESNI)
-
-#include <wmmintrin.h>
-#define can_use_aesni 1
-// Now we can use _mm_aesimc_si128 and so on.
-
-#else
-#define can_use_aesni 0
-#endif
-
-#undef can_use_avx
-#if defined(__AVX__) || defined(FARMHASH_ASSUME_AVX)
-
-#include <immintrin.h>
-#define can_use_avx 1
-
-#else
-#define can_use_avx 0
-#endif
-
-#if can_use_ssse3 || can_use_sse41 || can_use_sse42 || can_use_aesni || can_use_avx
-STATIC_INLINE __m128i Fetch128(const char* s) {
- return _mm_loadu_si128(reinterpret_cast<const __m128i*>(s));
-}
-#endif
-// Building blocks for hash functions
-
-// std::swap() was in <algorithm> but is in <utility> from C++11 on.
-#if !FARMHASH_CAN_USE_CXX11
-#include <algorithm>
-#endif
-
-#undef PERMUTE3
-#define PERMUTE3(a, b, c) do { std::swap(a, b); std::swap(a, c); } while (0)
-
-namespace NAMESPACE_FOR_HASH_FUNCTIONS {
-
-// Some primes between 2^63 and 2^64 for various uses.
-static const uint64_t k0 = 0xc3a5c85c97cb3127ULL;
-static const uint64_t k1 = 0xb492b66fbe98f273ULL;
-static const uint64_t k2 = 0x9ae16a3b2f90404fULL;
-
-// Magic numbers for 32-bit hashing. Copied from Murmur3.
-static const uint32_t c1 = 0xcc9e2d51;
-static const uint32_t c2 = 0x1b873593;
-
-// A 32-bit to 32-bit integer hash copied from Murmur3.
-STATIC_INLINE uint32_t fmix(uint32_t h)
-{
- h ^= h >> 16;
- h *= 0x85ebca6b;
- h ^= h >> 13;
- h *= 0xc2b2ae35;
- h ^= h >> 16;
- return h;
-}
-
-STATIC_INLINE uint32_t Mur(uint32_t a, uint32_t h) {
- // Helper from Murmur3 for combining two 32-bit values.
- a *= c1;
- a = Rotate32(a, 17);
- a *= c2;
- h ^= a;
- h = Rotate32(h, 19);
- return h * 5 + 0xe6546b64;
-}
-
-template <typename T> STATIC_INLINE T DebugTweak(T x) {
- if (debug_mode) {
- if (sizeof(x) == 4) {
- x = ~Bswap32(x * c1);
- } else {
- x = ~Bswap64(x * k1);
- }
- }
- return x;
-}
-
-template <> uint128_t DebugTweak(uint128_t x) {
- if (debug_mode) {
- uint64_t y = DebugTweak(Uint128Low64(x));
- uint64_t z = DebugTweak(Uint128High64(x));
- y += z;
- z += y;
- x = Uint128(y, z * k1);
- }
- return x;
-}
-
-} // namespace NAMESPACE_FOR_HASH_FUNCTIONS
-
-using namespace std;
-using namespace NAMESPACE_FOR_HASH_FUNCTIONS;
+#pragma once
+
+// Copyright (c) 2014 Google, Inc.
+//
+// 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.
+//
+// FarmHash, by Geoff Pike
+
+#include "farmhash.h"
+// FARMHASH ASSUMPTIONS: Modify as needed, or use -DFARMHASH_ASSUME_SSE42 etc.
+// Note that if you use -DFARMHASH_ASSUME_SSE42 you likely need -msse42
+// (or its equivalent for your compiler); if you use -DFARMHASH_ASSUME_AESNI
+// you likely need -maes (or its equivalent for your compiler).
+
+#ifdef FARMHASH_ASSUME_SSSE3
+#undef FARMHASH_ASSUME_SSSE3
+#define FARMHASH_ASSUME_SSSE3 1
+#endif
+
+#ifdef FARMHASH_ASSUME_SSE41
+#undef FARMHASH_ASSUME_SSE41
+#define FARMHASH_ASSUME_SSE41 1
+#endif
+
+#ifdef FARMHASH_ASSUME_SSE42
+#undef FARMHASH_ASSUME_SSE42
+#define FARMHASH_ASSUME_SSE42 1
+#endif
+
+#ifdef FARMHASH_ASSUME_AESNI
+#undef FARMHASH_ASSUME_AESNI
+#define FARMHASH_ASSUME_AESNI 1
+#endif
+
+#ifdef FARMHASH_ASSUME_AVX
+#undef FARMHASH_ASSUME_AVX
+#define FARMHASH_ASSUME_AVX 1
+#endif
+
+#if !defined(FARMHASH_CAN_USE_CXX11) && defined(LANG_CXX11)
+#define FARMHASH_CAN_USE_CXX11 1
+#else
+#undef FARMHASH_CAN_USE_CXX11
+#define FARMHASH_CAN_USE_CXX11 0
+#endif
+
+// FARMHASH PORTABILITY LAYER: Runtime error if misconfigured
+
+#ifndef FARMHASH_DIE_IF_MISCONFIGURED
+#define FARMHASH_DIE_IF_MISCONFIGURED do { *(char*)(len % 17) = 0; } while (0)
+#endif
+
+// FARMHASH PORTABILITY LAYER: "static inline" or similar
+
+#ifndef STATIC_INLINE
+#define STATIC_INLINE static inline
+#endif
+
+// FARMHASH PORTABILITY LAYER: LIKELY and UNLIKELY
+
+#if defined(_MSC_VER)
+# define FARMHASH_NO_BUILTIN_EXPECT
+#endif
+
+#if !defined(LIKELY)
+#if defined(FARMHASH_NO_BUILTIN_EXPECT) || (defined(FARMHASH_OPTIONAL_BUILTIN_EXPECT) && !defined(HAVE_BUILTIN_EXPECT))
+#define LIKELY(x) (x)
+#else
+#define LIKELY(x) (__builtin_expect(!!(x), 1))
+#endif
+#endif
+
+#undef UNLIKELY
+#define UNLIKELY(x) !LIKELY(!(x))
+
+// FARMHASH PORTABILITY LAYER: endianness and byteswapping functions
+
+#ifdef WORDS_BIGENDIAN
+#undef FARMHASH_BIG_ENDIAN
+#define FARMHASH_BIG_ENDIAN 1
+#endif
+
+#if defined(FARMHASH_LITTLE_ENDIAN) && defined(FARMHASH_BIG_ENDIAN)
+#error
+#endif
+
+#if !defined(FARMHASH_LITTLE_ENDIAN) && !defined(FARMHASH_BIG_ENDIAN)
+#define FARMHASH_UNKNOWN_ENDIAN 1
+#endif
+
+#if !defined(bswap_32) || !defined(bswap_64)
+#undef bswap_32
+#undef bswap_64
+
+#if defined(HAVE_BUILTIN_BSWAP) || defined(__clang__) || \
+ (defined(__GNUC__) && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 8) || \
+ __GNUC__ >= 5))
+// Easy case for bswap: no header file needed.
+#define bswap_32(x) __builtin_bswap32(x)
+#define bswap_64(x) __builtin_bswap64(x)
+#endif
+
+#endif
+
+#if defined(FARMHASH_UNKNOWN_ENDIAN) || !defined(bswap_64)
+
+#ifdef _MSC_VER
+
+#undef bswap_32
+#undef bswap_64
+#define bswap_32(x) _byteswap_ulong(x)
+#define bswap_64(x) _byteswap_uint64(x)
+
+#elif defined(__APPLE__)
+
+// Mac OS X / Darwin features
+#include <libkern/OSByteOrder.h>
+#undef bswap_32
+#undef bswap_64
+#define bswap_32(x) OSSwapInt32(x)
+#define bswap_64(x) OSSwapInt64(x)
+
+#elif defined(__sun) || defined(sun)
+
+#include <sys/byteorder.h>
+#undef bswap_32
+#undef bswap_64
+#define bswap_32(x) BSWAP_32(x)
+#define bswap_64(x) BSWAP_64(x)
+
+#elif defined(__FreeBSD__) || defined(__DragonFly__)
+
+#include <sys/endian.h>
+#undef bswap_32
+#undef bswap_64
+#define bswap_32(x) bswap32(x)
+#define bswap_64(x) bswap64(x)
+
+#elif defined(__OpenBSD__)
+
+#include <sys/types.h>
+#undef bswap_32
+#undef bswap_64
+#define bswap_32(x) swap32(x)
+#define bswap_64(x) swap64(x)
+
+#elif defined(__NetBSD__)
+
+#include <sys/types.h>
+#include <machine/bswap.h>
+#if defined(__BSWAP_RENAME) && !defined(__bswap_32)
+#undef bswap_32
+#undef bswap_64
+#define bswap_32(x) bswap32(x)
+#define bswap_64(x) bswap64(x)
+#endif
+
+#else
+
+#undef bswap_32
+#undef bswap_64
+#include <byteswap.h>
+
+#endif
+
+#ifdef WORDS_BIGENDIAN
+#define FARMHASH_BIG_ENDIAN 1
+#endif
+
+#endif
+
+#ifdef FARMHASH_BIG_ENDIAN
+#define uint32_in_expected_order(x) (bswap_32(x))
+#define uint64_in_expected_order(x) (bswap_64(x))
+#else
+#define uint32_in_expected_order(x) (x)
+#define uint64_in_expected_order(x) (x)
+#endif
+
+namespace NAMESPACE_FOR_HASH_FUNCTIONS {
+
+STATIC_INLINE uint64_t Fetch64(const char *p) {
+ uint64_t result;
+ memcpy(&result, p, sizeof(result));
+ return uint64_in_expected_order(result);
+}
+
+STATIC_INLINE uint32_t Fetch32(const char *p) {
+ uint32_t result;
+ memcpy(&result, p, sizeof(result));
+ return uint32_in_expected_order(result);
+}
+
+STATIC_INLINE uint32_t Bswap32(uint32_t val) { return bswap_32(val); }
+STATIC_INLINE uint64_t Bswap64(uint64_t val) { return bswap_64(val); }
+
+// FARMHASH PORTABILITY LAYER: bitwise rot
+
+STATIC_INLINE uint32_t BasicRotate32(uint32_t val, int shift) {
+ // Avoid shifting by 32: doing so yields an undefined result.
+ return shift == 0 ? val : ((val >> shift) | (val << (32 - shift)));
+}
+
+STATIC_INLINE uint64_t BasicRotate64(uint64_t val, int shift) {
+ // Avoid shifting by 64: doing so yields an undefined result.
+ return shift == 0 ? val : ((val >> shift) | (val << (64 - shift)));
+}
+
+#if defined(_MSC_VER) && defined(FARMHASH_ROTR)
+
+STATIC_INLINE uint32_t Rotate32(uint32_t val, int shift) {
+ return sizeof(unsigned long) == sizeof(val) ?
+ _lrotr(val, shift) :
+ BasicRotate32(val, shift);
+}
+
+STATIC_INLINE uint64_t Rotate64(uint64_t val, int shift) {
+ return sizeof(unsigned long) == sizeof(val) ?
+ _lrotr(val, shift) :
+ BasicRotate64(val, shift);
+}
+
+#else
+
+STATIC_INLINE uint32_t Rotate32(uint32_t val, int shift) {
+ return BasicRotate32(val, shift);
+}
+STATIC_INLINE uint64_t Rotate64(uint64_t val, int shift) {
+ return BasicRotate64(val, shift);
+}
+
+#endif
+
+} // namespace NAMESPACE_FOR_HASH_FUNCTIONS
+
+// FARMHASH PORTABILITY LAYER: debug mode or max speed?
+// One may use -DFARMHASH_DEBUG=1 or -DFARMHASH_DEBUG=0 to force the issue.
+
+#if !defined(FARMHASH_DEBUG) && (!defined(NDEBUG) || defined(_DEBUG))
+#define FARMHASH_DEBUG 1
+#endif
+
+#undef debug_mode
+#if FARMHASH_DEBUG
+#define debug_mode 1
+#else
+#define debug_mode 0
+#endif
+
+// PLATFORM-SPECIFIC FUNCTIONS AND MACROS
+
+#undef x86_64
+#if defined (__x86_64) || defined (__x86_64__)
+#define x86_64 1
+#else
+#define x86_64 0
+#endif
+
+#undef x86
+#if defined(__i386__) || defined(__i386) || defined(__X86__)
+#define x86 1
+#else
+#define x86 x86_64
+#endif
+
+#if !defined(is_64bit)
+#define is_64bit (x86_64 || (sizeof(void*) == 8))
+#endif
+
+#undef can_use_ssse3
+#if defined(__SSSE3__) || defined(FARMHASH_ASSUME_SSSE3)
+
+#include <immintrin.h>
+#define can_use_ssse3 1
+// Now we can use _mm_hsub_epi16 and so on.
+
+#else
+#define can_use_ssse3 0
+#endif
+
+#undef can_use_sse41
+#if defined(__SSE4_1__) || defined(FARMHASH_ASSUME_SSE41)
+
+#include <immintrin.h>
+#define can_use_sse41 1
+// Now we can use _mm_insert_epi64 and so on.
+
+#else
+#define can_use_sse41 0
+#endif
+
+#undef can_use_sse42
+#if defined(__SSE4_2__) || defined(FARMHASH_ASSUME_SSE42)
+
+#include <nmmintrin.h>
+#define can_use_sse42 1
+// Now we can use _mm_crc32_u{32,16,8}. And on 64-bit platforms, _mm_crc32_u64.
+
+#else
+#define can_use_sse42 0
+#endif
+
+#undef can_use_aesni
+#if defined(__AES__) || defined(FARMHASH_ASSUME_AESNI)
+
+#include <wmmintrin.h>
+#define can_use_aesni 1
+// Now we can use _mm_aesimc_si128 and so on.
+
+#else
+#define can_use_aesni 0
+#endif
+
+#undef can_use_avx
+#if defined(__AVX__) || defined(FARMHASH_ASSUME_AVX)
+
+#include <immintrin.h>
+#define can_use_avx 1
+
+#else
+#define can_use_avx 0
+#endif
+
+#if can_use_ssse3 || can_use_sse41 || can_use_sse42 || can_use_aesni || can_use_avx
+STATIC_INLINE __m128i Fetch128(const char* s) {
+ return _mm_loadu_si128(reinterpret_cast<const __m128i*>(s));
+}
+#endif
+// Building blocks for hash functions
+
+// std::swap() was in <algorithm> but is in <utility> from C++11 on.
+#if !FARMHASH_CAN_USE_CXX11
+#include <algorithm>
+#endif
+
+#undef PERMUTE3
+#define PERMUTE3(a, b, c) do { std::swap(a, b); std::swap(a, c); } while (0)
+
+namespace NAMESPACE_FOR_HASH_FUNCTIONS {
+
+// Some primes between 2^63 and 2^64 for various uses.
+static const uint64_t k0 = 0xc3a5c85c97cb3127ULL;
+static const uint64_t k1 = 0xb492b66fbe98f273ULL;
+static const uint64_t k2 = 0x9ae16a3b2f90404fULL;
+
+// Magic numbers for 32-bit hashing. Copied from Murmur3.
+static const uint32_t c1 = 0xcc9e2d51;
+static const uint32_t c2 = 0x1b873593;
+
+// A 32-bit to 32-bit integer hash copied from Murmur3.
+STATIC_INLINE uint32_t fmix(uint32_t h)
+{
+ h ^= h >> 16;
+ h *= 0x85ebca6b;
+ h ^= h >> 13;
+ h *= 0xc2b2ae35;
+ h ^= h >> 16;
+ return h;
+}
+
+STATIC_INLINE uint32_t Mur(uint32_t a, uint32_t h) {
+ // Helper from Murmur3 for combining two 32-bit values.
+ a *= c1;
+ a = Rotate32(a, 17);
+ a *= c2;
+ h ^= a;
+ h = Rotate32(h, 19);
+ return h * 5 + 0xe6546b64;
+}
+
+template <typename T> STATIC_INLINE T DebugTweak(T x) {
+ if (debug_mode) {
+ if (sizeof(x) == 4) {
+ x = ~Bswap32(x * c1);
+ } else {
+ x = ~Bswap64(x * k1);
+ }
+ }
+ return x;
+}
+
+template <> uint128_t DebugTweak(uint128_t x) {
+ if (debug_mode) {
+ uint64_t y = DebugTweak(Uint128Low64(x));
+ uint64_t z = DebugTweak(Uint128High64(x));
+ y += z;
+ z += y;
+ x = Uint128(y, z * k1);
+ }
+ return x;
+}
+
+} // namespace NAMESPACE_FOR_HASH_FUNCTIONS
+
+using namespace std;
+using namespace NAMESPACE_FOR_HASH_FUNCTIONS;
diff --git a/contrib/libs/farmhash/farmhash.cc b/contrib/libs/farmhash/farmhash.cc
index 7e3d393034..27b344fc65 100644
--- a/contrib/libs/farmhash/farmhash.cc
+++ b/contrib/libs/farmhash/farmhash.cc
@@ -1,11835 +1,11835 @@
-// Copyright (c) 2014 Google, Inc.
-//
-// 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.
-//
-// FarmHash, by Geoff Pike
-
+// Copyright (c) 2014 Google, Inc.
+//
+// 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.
+//
+// FarmHash, by Geoff Pike
+
#include <util/system/compiler.h>
-#include "farmhash.h"
-// FARMHASH ASSUMPTIONS: Modify as needed, or use -DFARMHASH_ASSUME_SSE42 etc.
-// Note that if you use -DFARMHASH_ASSUME_SSE42 you likely need -msse42
-// (or its equivalent for your compiler); if you use -DFARMHASH_ASSUME_AESNI
-// you likely need -maes (or its equivalent for your compiler).
-
-#ifdef FARMHASH_ASSUME_SSSE3
-#undef FARMHASH_ASSUME_SSSE3
-#define FARMHASH_ASSUME_SSSE3 1
-#endif
-
-#ifdef FARMHASH_ASSUME_SSE41
-#undef FARMHASH_ASSUME_SSE41
-#define FARMHASH_ASSUME_SSE41 1
-#endif
-
-#ifdef FARMHASH_ASSUME_SSE42
-#undef FARMHASH_ASSUME_SSE42
-#define FARMHASH_ASSUME_SSE42 1
-#endif
-
-#ifdef FARMHASH_ASSUME_AESNI
-#undef FARMHASH_ASSUME_AESNI
-#define FARMHASH_ASSUME_AESNI 1
-#endif
-
-#ifdef FARMHASH_ASSUME_AVX
-#undef FARMHASH_ASSUME_AVX
-#define FARMHASH_ASSUME_AVX 1
-#endif
-
-#if !defined(FARMHASH_CAN_USE_CXX11) && defined(LANG_CXX11)
-#define FARMHASH_CAN_USE_CXX11 1
-#else
-#undef FARMHASH_CAN_USE_CXX11
-#define FARMHASH_CAN_USE_CXX11 0
-#endif
-
-// FARMHASH PORTABILITY LAYER: Runtime error if misconfigured
-
-#ifndef FARMHASH_DIE_IF_MISCONFIGURED
-#define FARMHASH_DIE_IF_MISCONFIGURED do { *(char*)(len % 17) = 0; } while (0)
-#endif
-
-// FARMHASH PORTABILITY LAYER: "static inline" or similar
-
-#ifndef STATIC_INLINE
-#define STATIC_INLINE static inline
-#endif
-
-// FARMHASH PORTABILITY LAYER: LIKELY and UNLIKELY
-
-#if !defined(LIKELY)
-#if defined(FARMHASH_NO_BUILTIN_EXPECT) || (defined(FARMHASH_OPTIONAL_BUILTIN_EXPECT) && !defined(HAVE_BUILTIN_EXPECT))
-#define LIKELY(x) (x)
-#else
-#define LIKELY(x) (__builtin_expect(!!(x), 1))
-#endif
-#endif
-
-#undef UNLIKELY
-#define UNLIKELY(x) !LIKELY(!(x))
-
-// FARMHASH PORTABILITY LAYER: endianness and byteswapping functions
-
-#ifdef WORDS_BIGENDIAN
-#undef FARMHASH_BIG_ENDIAN
-#define FARMHASH_BIG_ENDIAN 1
-#endif
-
-#if defined(FARMHASH_LITTLE_ENDIAN) && defined(FARMHASH_BIG_ENDIAN)
-#error
-#endif
-
-#if !defined(FARMHASH_LITTLE_ENDIAN) && !defined(FARMHASH_BIG_ENDIAN)
-#define FARMHASH_UNKNOWN_ENDIAN 1
-#endif
-
-#if !defined(bswap_32) || !defined(bswap_64)
-#undef bswap_32
-#undef bswap_64
-
-#if defined(HAVE_BUILTIN_BSWAP) || defined(__clang__) || \
- (defined(__GNUC__) && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 8) || \
- __GNUC__ >= 5))
-// Easy case for bswap: no header file needed.
-#define bswap_32(x) __builtin_bswap32(x)
-#define bswap_64(x) __builtin_bswap64(x)
-#endif
-
-#endif
-
-#if defined(FARMHASH_UNKNOWN_ENDIAN) || !defined(bswap_64)
-
-#ifdef _MSC_VER
-
-#undef bswap_32
-#undef bswap_64
-#define bswap_32(x) _byteswap_ulong(x)
-#define bswap_64(x) _byteswap_uint64(x)
-
-#elif defined(__APPLE__)
-
-// Mac OS X / Darwin features
-#include <libkern/OSByteOrder.h>
-#undef bswap_32
-#undef bswap_64
-#define bswap_32(x) OSSwapInt32(x)
-#define bswap_64(x) OSSwapInt64(x)
-
-#elif defined(__sun) || defined(sun)
-
-#include <sys/byteorder.h>
-#undef bswap_32
-#undef bswap_64
-#define bswap_32(x) BSWAP_32(x)
-#define bswap_64(x) BSWAP_64(x)
-
-#elif defined(__FreeBSD__) || defined(__DragonFly__)
-
-#include <sys/endian.h>
-#undef bswap_32
-#undef bswap_64
-#define bswap_32(x) bswap32(x)
-#define bswap_64(x) bswap64(x)
-
-#elif defined(__OpenBSD__)
-
-#include <sys/types.h>
-#undef bswap_32
-#undef bswap_64
-#define bswap_32(x) swap32(x)
-#define bswap_64(x) swap64(x)
-
-#elif defined(__NetBSD__)
-
-#include <sys/types.h>
-#include <machine/bswap.h>
-#if defined(__BSWAP_RENAME) && !defined(__bswap_32)
-#undef bswap_32
-#undef bswap_64
-#define bswap_32(x) bswap32(x)
-#define bswap_64(x) bswap64(x)
-#endif
-
-#else
-
-#undef bswap_32
-#undef bswap_64
-#include <byteswap.h>
-
-#endif
-
-#ifdef WORDS_BIGENDIAN
-#define FARMHASH_BIG_ENDIAN 1
-#endif
-
-#endif
-
-#ifdef FARMHASH_BIG_ENDIAN
-#define uint32_in_expected_order(x) (bswap_32(x))
-#define uint64_in_expected_order(x) (bswap_64(x))
-#else
-#define uint32_in_expected_order(x) (x)
-#define uint64_in_expected_order(x) (x)
-#endif
-
-namespace NAMESPACE_FOR_HASH_FUNCTIONS {
-
-STATIC_INLINE uint64_t Fetch64(const char *p) {
- uint64_t result;
- memcpy(&result, p, sizeof(result));
- return uint64_in_expected_order(result);
-}
-
-STATIC_INLINE uint32_t Fetch32(const char *p) {
- uint32_t result;
- memcpy(&result, p, sizeof(result));
- return uint32_in_expected_order(result);
-}
-
-STATIC_INLINE uint32_t Bswap32(uint32_t val) { return bswap_32(val); }
-STATIC_INLINE uint64_t Bswap64(uint64_t val) { return bswap_64(val); }
-
-// FARMHASH PORTABILITY LAYER: bitwise rot
-
-STATIC_INLINE uint32_t BasicRotate32(uint32_t val, int shift) {
- // Avoid shifting by 32: doing so yields an undefined result.
- return shift == 0 ? val : ((val >> shift) | (val << (32 - shift)));
-}
-
-STATIC_INLINE uint64_t BasicRotate64(uint64_t val, int shift) {
- // Avoid shifting by 64: doing so yields an undefined result.
- return shift == 0 ? val : ((val >> shift) | (val << (64 - shift)));
-}
-
-#if defined(_MSC_VER) && defined(FARMHASH_ROTR)
-
-STATIC_INLINE uint32_t Rotate32(uint32_t val, int shift) {
- return sizeof(unsigned long) == sizeof(val) ?
- _lrotr(val, shift) :
- BasicRotate32(val, shift);
-}
-
-STATIC_INLINE uint64_t Rotate64(uint64_t val, int shift) {
- return sizeof(unsigned long) == sizeof(val) ?
- _lrotr(val, shift) :
- BasicRotate64(val, shift);
-}
-
-#else
-
-STATIC_INLINE uint32_t Rotate32(uint32_t val, int shift) {
- return BasicRotate32(val, shift);
-}
-STATIC_INLINE uint64_t Rotate64(uint64_t val, int shift) {
- return BasicRotate64(val, shift);
-}
-
-#endif
-
-} // namespace NAMESPACE_FOR_HASH_FUNCTIONS
-
-// FARMHASH PORTABILITY LAYER: debug mode or max speed?
-// One may use -DFARMHASH_DEBUG=1 or -DFARMHASH_DEBUG=0 to force the issue.
-
-#if !defined(FARMHASH_DEBUG) && (!defined(NDEBUG) || defined(_DEBUG))
-#define FARMHASH_DEBUG 1
-#endif
-
-#undef debug_mode
-#if FARMHASH_DEBUG
-#define debug_mode 1
-#else
-#define debug_mode 0
-#endif
-
-// PLATFORM-SPECIFIC FUNCTIONS AND MACROS
-
-#undef x86_64
-#if defined (__x86_64) || defined (__x86_64__)
-#define x86_64 1
-#else
-#define x86_64 0
-#endif
-
-#undef x86
-#if defined(__i386__) || defined(__i386) || defined(__X86__)
-#define x86 1
-#else
-#define x86 x86_64
-#endif
-
-#if !defined(is_64bit)
-#define is_64bit (x86_64 || (sizeof(void*) == 8))
-#endif
-
-#undef can_use_ssse3
-#if defined(__SSSE3__) || defined(FARMHASH_ASSUME_SSSE3)
-
-#include <immintrin.h>
-#define can_use_ssse3 1
-// Now we can use _mm_hsub_epi16 and so on.
-
-#else
-#define can_use_ssse3 0
-#endif
-
-#undef can_use_sse41
-#if defined(__SSE4_1__) || defined(FARMHASH_ASSUME_SSE41)
-
-#include <immintrin.h>
-#define can_use_sse41 1
-// Now we can use _mm_insert_epi64 and so on.
-
-#else
-#define can_use_sse41 0
-#endif
-
-#undef can_use_sse42
-#if defined(__SSE4_2__) || defined(FARMHASH_ASSUME_SSE42)
-
-#include <nmmintrin.h>
-#define can_use_sse42 1
-// Now we can use _mm_crc32_u{32,16,8}. And on 64-bit platforms, _mm_crc32_u64.
-
-#else
-#define can_use_sse42 0
-#endif
-
-#undef can_use_aesni
-#if defined(__AES__) || defined(FARMHASH_ASSUME_AESNI)
-
-#include <wmmintrin.h>
-#define can_use_aesni 1
-// Now we can use _mm_aesimc_si128 and so on.
-
-#else
-#define can_use_aesni 0
-#endif
-
-#undef can_use_avx
-#if defined(__AVX__) || defined(FARMHASH_ASSUME_AVX)
-
-#include <immintrin.h>
-#define can_use_avx 1
-
-#else
-#define can_use_avx 0
-#endif
-
-#if can_use_ssse3 || can_use_sse41 || can_use_sse42 || can_use_aesni || can_use_avx
-STATIC_INLINE __m128i Fetch128(const char* s) {
- return _mm_loadu_si128(reinterpret_cast<const __m128i*>(s));
-}
-#endif
-// Building blocks for hash functions
-
-// std::swap() was in <algorithm> but is in <utility> from C++11 on.
-#if !FARMHASH_CAN_USE_CXX11
-#include <algorithm>
-#endif
-
-#undef PERMUTE3
-#define PERMUTE3(a, b, c) do { std::swap(a, b); std::swap(a, c); } while (0)
-
-namespace NAMESPACE_FOR_HASH_FUNCTIONS {
-
-// Some primes between 2^63 and 2^64 for various uses.
-static const uint64_t k0 = 0xc3a5c85c97cb3127ULL;
-static const uint64_t k1 = 0xb492b66fbe98f273ULL;
-static const uint64_t k2 = 0x9ae16a3b2f90404fULL;
-
-// Magic numbers for 32-bit hashing. Copied from Murmur3.
-static const uint32_t c1 = 0xcc9e2d51;
-static const uint32_t c2 = 0x1b873593;
-
-// A 32-bit to 32-bit integer hash copied from Murmur3.
-STATIC_INLINE uint32_t fmix(uint32_t h)
-{
- h ^= h >> 16;
- h *= 0x85ebca6b;
- h ^= h >> 13;
- h *= 0xc2b2ae35;
- h ^= h >> 16;
- return h;
-}
-
-STATIC_INLINE uint32_t Mur(uint32_t a, uint32_t h) {
- // Helper from Murmur3 for combining two 32-bit values.
- a *= c1;
- a = Rotate32(a, 17);
- a *= c2;
- h ^= a;
- h = Rotate32(h, 19);
- return h * 5 + 0xe6546b64;
-}
-
-template <typename T> STATIC_INLINE T DebugTweak(T x) {
- if (debug_mode) {
- if (sizeof(x) == 4) {
- x = ~Bswap32(x * c1);
- } else {
- x = ~Bswap64(x * k1);
- }
- }
- return x;
-}
-
-template <> uint128_t DebugTweak(uint128_t x) {
- if (debug_mode) {
- uint64_t y = DebugTweak(Uint128Low64(x));
- uint64_t z = DebugTweak(Uint128High64(x));
- y += z;
- z += y;
- x = Uint128(y, z * k1);
- }
- return x;
-}
-
-} // namespace NAMESPACE_FOR_HASH_FUNCTIONS
-
-using namespace std;
-using namespace NAMESPACE_FOR_HASH_FUNCTIONS;
-namespace farmhashna {
-#undef Fetch
-#define Fetch Fetch64
-
-#undef Rotate
-#define Rotate Rotate64
-
-#undef Bswap
-#define Bswap Bswap64
-
-STATIC_INLINE uint64_t ShiftMix(uint64_t val) {
- return val ^ (val >> 47);
-}
-
-STATIC_INLINE uint64_t HashLen16(uint64_t u, uint64_t v) {
- return Hash128to64(Uint128(u, v));
-}
-
-STATIC_INLINE uint64_t HashLen16(uint64_t u, uint64_t v, uint64_t mul) {
- // Murmur-inspired hashing.
- uint64_t a = (u ^ v) * mul;
- a ^= (a >> 47);
- uint64_t b = (v ^ a) * mul;
- b ^= (b >> 47);
- b *= mul;
- return b;
-}
-
-STATIC_INLINE uint64_t HashLen0to16(const char *s, size_t len) {
- if (len >= 8) {
- uint64_t mul = k2 + len * 2;
- uint64_t a = Fetch(s) + k2;
- uint64_t b = Fetch(s + len - 8);
- uint64_t c = Rotate(b, 37) * mul + a;
- uint64_t d = (Rotate(a, 25) + b) * mul;
- return HashLen16(c, d, mul);
- }
- if (len >= 4) {
- uint64_t mul = k2 + len * 2;
- uint64_t a = Fetch32(s);
- return HashLen16(len + (a << 3), Fetch32(s + len - 4), mul);
- }
- if (len > 0) {
- uint8_t a = s[0];
- uint8_t b = s[len >> 1];
- uint8_t c = s[len - 1];
- uint32_t y = static_cast<uint32_t>(a) + (static_cast<uint32_t>(b) << 8);
- uint32_t z = len + (static_cast<uint32_t>(c) << 2);
- return ShiftMix(y * k2 ^ z * k0) * k2;
- }
- return k2;
-}
-
-// This probably works well for 16-byte strings as well, but it may be overkill
-// in that case.
-STATIC_INLINE uint64_t HashLen17to32(const char *s, size_t len) {
- uint64_t mul = k2 + len * 2;
- uint64_t a = Fetch(s) * k1;
- uint64_t b = Fetch(s + 8);
- uint64_t c = Fetch(s + len - 8) * mul;
- uint64_t d = Fetch(s + len - 16) * k2;
- return HashLen16(Rotate(a + b, 43) + Rotate(c, 30) + d,
- a + Rotate(b + k2, 18) + c, mul);
-}
-
-// Return a 16-byte hash for 48 bytes. Quick and dirty.
-// Callers do best to use "random-looking" values for a and b.
-STATIC_INLINE pair<uint64_t, uint64_t> WeakHashLen32WithSeeds(
- uint64_t w, uint64_t x, uint64_t y, uint64_t z, uint64_t a, uint64_t b) {
- a += w;
- b = Rotate(b + a + z, 21);
- uint64_t c = a;
- a += x;
- a += y;
- b += Rotate(a, 44);
- return make_pair(a + z, b + c);
-}
-
-// Return a 16-byte hash for s[0] ... s[31], a, and b. Quick and dirty.
-STATIC_INLINE pair<uint64_t, uint64_t> WeakHashLen32WithSeeds(
- const char* s, uint64_t a, uint64_t b) {
- return WeakHashLen32WithSeeds(Fetch(s),
- Fetch(s + 8),
- Fetch(s + 16),
- Fetch(s + 24),
- a,
- b);
-}
-
-// Return an 8-byte hash for 33 to 64 bytes.
-STATIC_INLINE uint64_t HashLen33to64(const char *s, size_t len) {
- uint64_t mul = k2 + len * 2;
- uint64_t a = Fetch(s) * k2;
- uint64_t b = Fetch(s + 8);
- uint64_t c = Fetch(s + len - 8) * mul;
- uint64_t d = Fetch(s + len - 16) * k2;
- uint64_t y = Rotate(a + b, 43) + Rotate(c, 30) + d;
- uint64_t z = HashLen16(y, a + Rotate(b + k2, 18) + c, mul);
- uint64_t e = Fetch(s + 16) * mul;
- uint64_t f = Fetch(s + 24);
- uint64_t g = (y + Fetch(s + len - 32)) * mul;
- uint64_t h = (z + Fetch(s + len - 24)) * mul;
- return HashLen16(Rotate(e + f, 43) + Rotate(g, 30) + h,
- e + Rotate(f + a, 18) + g, mul);
-}
-
-uint64_t Hash64(const char *s, size_t len) {
- const uint64_t seed = 81;
- if (len <= 32) {
- if (len <= 16) {
- return HashLen0to16(s, len);
- } else {
- return HashLen17to32(s, len);
- }
- } else if (len <= 64) {
- return HashLen33to64(s, len);
- }
-
- // For strings over 64 bytes we loop. Internal state consists of
- // 56 bytes: v, w, x, y, and z.
- uint64_t x = seed;
- uint64_t y = seed * k1 + 113;
- uint64_t z = ShiftMix(y * k2 + 113) * k2;
- pair<uint64_t, uint64_t> v = make_pair(0, 0);
- pair<uint64_t, uint64_t> w = make_pair(0, 0);
- x = x * k2 + Fetch(s);
-
- // Set end so that after the loop we have 1 to 64 bytes left to process.
- const char* end = s + ((len - 1) / 64) * 64;
- const char* last64 = end + ((len - 1) & 63) - 63;
- assert(s + len - 64 == last64);
- do {
- x = Rotate(x + y + v.first + Fetch(s + 8), 37) * k1;
- y = Rotate(y + v.second + Fetch(s + 48), 42) * k1;
- x ^= w.second;
- y += v.first + Fetch(s + 40);
- z = Rotate(z + w.first, 33) * k1;
- v = WeakHashLen32WithSeeds(s, v.second * k1, x + w.first);
- w = WeakHashLen32WithSeeds(s + 32, z + w.second, y + Fetch(s + 16));
- std::swap(z, x);
- s += 64;
- } while (s != end);
- uint64_t mul = k1 + ((z & 0xff) << 1);
- // Make s point to the last 64 bytes of input.
- s = last64;
- w.first += ((len - 1) & 63);
- v.first += w.first;
- w.first += v.first;
- x = Rotate(x + y + v.first + Fetch(s + 8), 37) * mul;
- y = Rotate(y + v.second + Fetch(s + 48), 42) * mul;
- x ^= w.second * 9;
- y += v.first * 9 + Fetch(s + 40);
- z = Rotate(z + w.first, 33) * mul;
- v = WeakHashLen32WithSeeds(s, v.second * mul, x + w.first);
- w = WeakHashLen32WithSeeds(s + 32, z + w.second, y + Fetch(s + 16));
- std::swap(z, x);
- return HashLen16(HashLen16(v.first, w.first, mul) + ShiftMix(y) * k0 + z,
- HashLen16(v.second, w.second, mul) + x,
- mul);
-}
-
-uint64_t Hash64WithSeeds(const char *s, size_t len, uint64_t seed0, uint64_t seed1);
-
-uint64_t Hash64WithSeed(const char *s, size_t len, uint64_t seed) {
- return Hash64WithSeeds(s, len, k2, seed);
-}
-
-uint64_t Hash64WithSeeds(const char *s, size_t len, uint64_t seed0, uint64_t seed1) {
- return HashLen16(Hash64(s, len) - seed0, seed1);
-}
-} // namespace farmhashna
-namespace farmhashuo {
-#undef Fetch
-#define Fetch Fetch64
-
-#undef Rotate
-#define Rotate Rotate64
-
-STATIC_INLINE uint64_t H(uint64_t x, uint64_t y, uint64_t mul, int r) {
- uint64_t a = (x ^ y) * mul;
- a ^= (a >> 47);
- uint64_t b = (y ^ a) * mul;
- return Rotate(b, r) * mul;
-}
-
-uint64_t Hash64WithSeeds(const char *s, size_t len,
- uint64_t seed0, uint64_t seed1) {
- if (len <= 64) {
- return farmhashna::Hash64WithSeeds(s, len, seed0, seed1);
- }
-
- // For strings over 64 bytes we loop. Internal state consists of
- // 64 bytes: u, v, w, x, y, and z.
- uint64_t x = seed0;
- uint64_t y = seed1 * k2 + 113;
- uint64_t z = farmhashna::ShiftMix(y * k2) * k2;
- pair<uint64_t, uint64_t> v = make_pair(seed0, seed1);
- pair<uint64_t, uint64_t> w = make_pair(0, 0);
- uint64_t u = x - z;
- x *= k2;
- uint64_t mul = k2 + (u & 0x82);
-
- // Set end so that after the loop we have 1 to 64 bytes left to process.
- const char* end = s + ((len - 1) / 64) * 64;
- const char* last64 = end + ((len - 1) & 63) - 63;
- assert(s + len - 64 == last64);
- do {
- uint64_t a0 = Fetch(s);
- uint64_t a1 = Fetch(s + 8);
- uint64_t a2 = Fetch(s + 16);
- uint64_t a3 = Fetch(s + 24);
- uint64_t a4 = Fetch(s + 32);
- uint64_t a5 = Fetch(s + 40);
- uint64_t a6 = Fetch(s + 48);
- uint64_t a7 = Fetch(s + 56);
- x += a0 + a1;
- y += a2;
- z += a3;
- v.first += a4;
- v.second += a5 + a1;
- w.first += a6;
- w.second += a7;
-
- x = Rotate(x, 26);
- x *= 9;
- y = Rotate(y, 29);
- z *= mul;
- v.first = Rotate(v.first, 33);
- v.second = Rotate(v.second, 30);
- w.first ^= x;
- w.first *= 9;
- z = Rotate(z, 32);
- z += w.second;
- w.second += z;
- z *= 9;
- std::swap(u, y);
-
- z += a0 + a6;
- v.first += a2;
- v.second += a3;
- w.first += a4;
- w.second += a5 + a6;
- x += a1;
- y += a7;
-
- y += v.first;
- v.first += x - y;
- v.second += w.first;
- w.first += v.second;
- w.second += x - y;
- x += w.second;
- w.second = Rotate(w.second, 34);
- std::swap(u, z);
- s += 64;
- } while (s != end);
- // Make s point to the last 64 bytes of input.
- s = last64;
- u *= 9;
- v.second = Rotate(v.second, 28);
- v.first = Rotate(v.first, 20);
- w.first += ((len - 1) & 63);
- u += y;
- y += u;
- x = Rotate(y - x + v.first + Fetch(s + 8), 37) * mul;
- y = Rotate(y ^ v.second ^ Fetch(s + 48), 42) * mul;
- x ^= w.second * 9;
- y += v.first + Fetch(s + 40);
- z = Rotate(z + w.first, 33) * mul;
- v = farmhashna::WeakHashLen32WithSeeds(s, v.second * mul, x + w.first);
- w = farmhashna::WeakHashLen32WithSeeds(s + 32, z + w.second, y + Fetch(s + 16));
- return H(farmhashna::HashLen16(v.first + x, w.first ^ y, mul) + z - u,
- H(v.second + y, w.second + z, k2, 30) ^ x,
- k2,
- 31);
-}
-
-uint64_t Hash64WithSeed(const char *s, size_t len, uint64_t seed) {
- return len <= 64 ? farmhashna::Hash64WithSeed(s, len, seed) :
- Hash64WithSeeds(s, len, 0, seed);
-}
-
-uint64_t Hash64(const char *s, size_t len) {
- return len <= 64 ? farmhashna::Hash64(s, len) :
- Hash64WithSeeds(s, len, 81, 0);
-}
-} // namespace farmhashuo
-namespace farmhashxo {
-#undef Fetch
-#define Fetch Fetch64
-
-#undef Rotate
-#define Rotate Rotate64
-
-STATIC_INLINE uint64_t H32(const char *s, size_t len, uint64_t mul,
- uint64_t seed0 = 0, uint64_t seed1 = 0) {
- uint64_t a = Fetch(s) * k1;
- uint64_t b = Fetch(s + 8);
- uint64_t c = Fetch(s + len - 8) * mul;
- uint64_t d = Fetch(s + len - 16) * k2;
- uint64_t u = Rotate(a + b, 43) + Rotate(c, 30) + d + seed0;
- uint64_t v = a + Rotate(b + k2, 18) + c + seed1;
- a = farmhashna::ShiftMix((u ^ v) * mul);
- b = farmhashna::ShiftMix((v ^ a) * mul);
- return b;
-}
-
-// Return an 8-byte hash for 33 to 64 bytes.
-STATIC_INLINE uint64_t HashLen33to64(const char *s, size_t len) {
- uint64_t mul0 = k2 - 30;
- uint64_t mul1 = k2 - 30 + 2 * len;
- uint64_t h0 = H32(s, 32, mul0);
- uint64_t h1 = H32(s + len - 32, 32, mul1);
- return ((h1 * mul1) + h0) * mul1;
-}
-
-// Return an 8-byte hash for 65 to 96 bytes.
-STATIC_INLINE uint64_t HashLen65to96(const char *s, size_t len) {
- uint64_t mul0 = k2 - 114;
- uint64_t mul1 = k2 - 114 + 2 * len;
- uint64_t h0 = H32(s, 32, mul0);
- uint64_t h1 = H32(s + 32, 32, mul1);
- uint64_t h2 = H32(s + len - 32, 32, mul1, h0, h1);
- return (h2 * 9 + (h0 >> 17) + (h1 >> 21)) * mul1;
-}
-
-uint64_t Hash64(const char *s, size_t len) {
- if (len <= 32) {
- if (len <= 16) {
- return farmhashna::HashLen0to16(s, len);
- } else {
- return farmhashna::HashLen17to32(s, len);
- }
- } else if (len <= 64) {
- return HashLen33to64(s, len);
- } else if (len <= 96) {
- return HashLen65to96(s, len);
- } else if (len <= 256) {
- return farmhashna::Hash64(s, len);
- } else {
- return farmhashuo::Hash64(s, len);
- }
-}
-
-uint64_t Hash64WithSeeds(const char *s, size_t len, uint64_t seed0, uint64_t seed1) {
- return farmhashuo::Hash64WithSeeds(s, len, seed0, seed1);
-}
-
-uint64_t Hash64WithSeed(const char *s, size_t len, uint64_t seed) {
- return farmhashuo::Hash64WithSeed(s, len, seed);
-}
-} // namespace farmhashxo
-namespace farmhashte {
-#if !can_use_sse41 || !x86_64
-
-uint64_t Hash64(const char *s, size_t len) {
- FARMHASH_DIE_IF_MISCONFIGURED;
- return s == NULL ? 0 : len;
-}
-
-uint64_t Hash64WithSeed(const char *s, size_t len, uint64_t seed) {
- FARMHASH_DIE_IF_MISCONFIGURED;
- return seed + Hash64(s, len);
-}
-
-uint64_t Hash64WithSeeds(const char *s, size_t len,
- uint64_t seed0, uint64_t seed1) {
- FARMHASH_DIE_IF_MISCONFIGURED;
- return seed0 + seed1 + Hash64(s, len);
-}
-
-#else
-
-#undef Fetch
-#define Fetch Fetch64
-
-#undef Rotate
-#define Rotate Rotate64
-
-#undef Bswap
-#define Bswap Bswap64
-
-// Helpers for data-parallel operations (1x 128 bits or 2x 64 or 4x 32).
-STATIC_INLINE __m128i Add(__m128i x, __m128i y) { return _mm_add_epi64(x, y); }
-STATIC_INLINE __m128i Xor(__m128i x, __m128i y) { return _mm_xor_si128(x, y); }
-STATIC_INLINE __m128i Mul(__m128i x, __m128i y) { return _mm_mullo_epi32(x, y); }
-STATIC_INLINE __m128i Shuf(__m128i x, __m128i y) { return _mm_shuffle_epi8(y, x); }
-
-// Requires n >= 256. Requires SSE4.1. Should be slightly faster if the
-// compiler uses AVX instructions (e.g., use the -mavx flag with GCC).
-STATIC_INLINE uint64_t Hash64Long(const char* s, size_t n,
- uint64_t seed0, uint64_t seed1) {
- const __m128i kShuf =
- _mm_set_epi8(4, 11, 10, 5, 8, 15, 6, 9, 12, 2, 14, 13, 0, 7, 3, 1);
- const __m128i kMult =
- _mm_set_epi8(0xbd, 0xd6, 0x33, 0x39, 0x45, 0x54, 0xfa, 0x03,
- 0x34, 0x3e, 0x33, 0xed, 0xcc, 0x9e, 0x2d, 0x51);
- uint64_t seed2 = (seed0 + 113) * (seed1 + 9);
- uint64_t seed3 = (Rotate(seed0, 23) + 27) * (Rotate(seed1, 30) + 111);
- __m128i d0 = _mm_cvtsi64_si128(seed0);
- __m128i d1 = _mm_cvtsi64_si128(seed1);
- __m128i d2 = Shuf(kShuf, d0);
- __m128i d3 = Shuf(kShuf, d1);
- __m128i d4 = Xor(d0, d1);
- __m128i d5 = Xor(d1, d2);
- __m128i d6 = Xor(d2, d4);
- __m128i d7 = _mm_set1_epi32(seed2 >> 32);
- __m128i d8 = Mul(kMult, d2);
- __m128i d9 = _mm_set1_epi32(seed3 >> 32);
- __m128i d10 = _mm_set1_epi32(seed3);
- __m128i d11 = Add(d2, _mm_set1_epi32(seed2));
- const char* end = s + (n & ~static_cast<size_t>(255));
- do {
- __m128i z;
- z = Fetch128(s);
- d0 = Add(d0, z);
- d1 = Shuf(kShuf, d1);
- d2 = Xor(d2, d0);
- d4 = Xor(d4, z);
- d4 = Xor(d4, d1);
- std::swap(d0, d6);
- z = Fetch128(s + 16);
- d5 = Add(d5, z);
- d6 = Shuf(kShuf, d6);
- d8 = Shuf(kShuf, d8);
- d7 = Xor(d7, d5);
- d0 = Xor(d0, z);
- d0 = Xor(d0, d6);
- std::swap(d5, d11);
- z = Fetch128(s + 32);
- d1 = Add(d1, z);
- d2 = Shuf(kShuf, d2);
- d4 = Shuf(kShuf, d4);
- d5 = Xor(d5, z);
- d5 = Xor(d5, d2);
- std::swap(d10, d4);
- z = Fetch128(s + 48);
- d6 = Add(d6, z);
- d7 = Shuf(kShuf, d7);
- d0 = Shuf(kShuf, d0);
- d8 = Xor(d8, d6);
- d1 = Xor(d1, z);
- d1 = Add(d1, d7);
- z = Fetch128(s + 64);
- d2 = Add(d2, z);
- d5 = Shuf(kShuf, d5);
- d4 = Add(d4, d2);
- d6 = Xor(d6, z);
- d6 = Xor(d6, d11);
- std::swap(d8, d2);
- z = Fetch128(s + 80);
- d7 = Xor(d7, z);
- d8 = Shuf(kShuf, d8);
- d1 = Shuf(kShuf, d1);
- d0 = Add(d0, d7);
- d2 = Add(d2, z);
- d2 = Add(d2, d8);
- std::swap(d1, d7);
- z = Fetch128(s + 96);
- d4 = Shuf(kShuf, d4);
- d6 = Shuf(kShuf, d6);
- d8 = Mul(kMult, d8);
- d5 = Xor(d5, d11);
- d7 = Xor(d7, z);
- d7 = Add(d7, d4);
- std::swap(d6, d0);
- z = Fetch128(s + 112);
- d8 = Add(d8, z);
- d0 = Shuf(kShuf, d0);
- d2 = Shuf(kShuf, d2);
- d1 = Xor(d1, d8);
- d10 = Xor(d10, z);
- d10 = Xor(d10, d0);
- std::swap(d11, d5);
- z = Fetch128(s + 128);
- d4 = Add(d4, z);
- d5 = Shuf(kShuf, d5);
- d7 = Shuf(kShuf, d7);
- d6 = Add(d6, d4);
- d8 = Xor(d8, z);
- d8 = Xor(d8, d5);
- std::swap(d4, d10);
- z = Fetch128(s + 144);
- d0 = Add(d0, z);
- d1 = Shuf(kShuf, d1);
- d2 = Add(d2, d0);
- d4 = Xor(d4, z);
- d4 = Xor(d4, d1);
- z = Fetch128(s + 160);
- d5 = Add(d5, z);
- d6 = Shuf(kShuf, d6);
- d8 = Shuf(kShuf, d8);
- d7 = Xor(d7, d5);
- d0 = Xor(d0, z);
- d0 = Xor(d0, d6);
- std::swap(d2, d8);
- z = Fetch128(s + 176);
- d1 = Add(d1, z);
- d2 = Shuf(kShuf, d2);
- d4 = Shuf(kShuf, d4);
- d5 = Mul(kMult, d5);
- d5 = Xor(d5, z);
- d5 = Xor(d5, d2);
- std::swap(d7, d1);
- z = Fetch128(s + 192);
- d6 = Add(d6, z);
- d7 = Shuf(kShuf, d7);
- d0 = Shuf(kShuf, d0);
- d8 = Add(d8, d6);
- d1 = Xor(d1, z);
- d1 = Xor(d1, d7);
- std::swap(d0, d6);
- z = Fetch128(s + 208);
- d2 = Add(d2, z);
- d5 = Shuf(kShuf, d5);
- d4 = Xor(d4, d2);
- d6 = Xor(d6, z);
- d6 = Xor(d6, d9);
- std::swap(d5, d11);
- z = Fetch128(s + 224);
- d7 = Add(d7, z);
- d8 = Shuf(kShuf, d8);
- d1 = Shuf(kShuf, d1);
- d0 = Xor(d0, d7);
- d2 = Xor(d2, z);
- d2 = Xor(d2, d8);
- std::swap(d10, d4);
- z = Fetch128(s + 240);
- d3 = Add(d3, z);
- d4 = Shuf(kShuf, d4);
- d6 = Shuf(kShuf, d6);
- d7 = Mul(kMult, d7);
- d5 = Add(d5, d3);
- d7 = Xor(d7, z);
- d7 = Xor(d7, d4);
- std::swap(d3, d9);
- s += 256;
- } while (s != end);
- d6 = Add(Mul(kMult, d6), _mm_cvtsi64_si128(n));
- if (n % 256 != 0) {
- d7 = Add(_mm_shuffle_epi32(d8, (0 << 6) + (3 << 4) + (2 << 2) + (1 << 0)), d7);
- d8 = Add(Mul(kMult, d8), _mm_cvtsi64_si128(farmhashxo::Hash64(s, n % 256)));
- }
- __m128i t[8];
- d0 = Mul(kMult, Shuf(kShuf, Mul(kMult, d0)));
- d3 = Mul(kMult, Shuf(kShuf, Mul(kMult, d3)));
- d9 = Mul(kMult, Shuf(kShuf, Mul(kMult, d9)));
- d1 = Mul(kMult, Shuf(kShuf, Mul(kMult, d1)));
- d0 = Add(d11, d0);
- d3 = Xor(d7, d3);
- d9 = Add(d8, d9);
- d1 = Add(d10, d1);
- d4 = Add(d3, d4);
- d5 = Add(d9, d5);
- d6 = Xor(d1, d6);
- d2 = Add(d0, d2);
- t[0] = d0;
- t[1] = d3;
- t[2] = d9;
- t[3] = d1;
- t[4] = d4;
- t[5] = d5;
- t[6] = d6;
- t[7] = d2;
- return farmhashxo::Hash64(reinterpret_cast<const char*>(t), sizeof(t));
-}
-
-uint64_t Hash64(const char *s, size_t len) {
- // Empirically, farmhashxo seems faster until length 512.
- return len >= 512 ? Hash64Long(s, len, k2, k1) : farmhashxo::Hash64(s, len);
-}
-
-uint64_t Hash64WithSeed(const char *s, size_t len, uint64_t seed) {
- return len >= 512 ? Hash64Long(s, len, k1, seed) :
- farmhashxo::Hash64WithSeed(s, len, seed);
-}
-
-uint64_t Hash64WithSeeds(const char *s, size_t len, uint64_t seed0, uint64_t seed1) {
- return len >= 512 ? Hash64Long(s, len, seed0, seed1) :
- farmhashxo::Hash64WithSeeds(s, len, seed0, seed1);
-}
-
-#endif
-} // namespace farmhashte
-namespace farmhashnt {
-#if !can_use_sse41 || !x86_64
-
-uint32_t Hash32(const char *s, size_t len) {
- FARMHASH_DIE_IF_MISCONFIGURED;
- return s == NULL ? 0 : len;
-}
-
-uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
- FARMHASH_DIE_IF_MISCONFIGURED;
- return seed + Hash32(s, len);
-}
-
-#else
-
-uint32_t Hash32(const char *s, size_t len) {
- return static_cast<uint32_t>(farmhashte::Hash64(s, len));
-}
-
-uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
- return static_cast<uint32_t>(farmhashte::Hash64WithSeed(s, len, seed));
-}
-
-#endif
-} // namespace farmhashnt
-namespace farmhashmk {
-#undef Fetch
-#define Fetch Fetch32
-
-#undef Rotate
-#define Rotate Rotate32
-
-#undef Bswap
-#define Bswap Bswap32
-
-STATIC_INLINE uint32_t Hash32Len13to24(const char *s, size_t len, uint32_t seed = 0) {
- uint32_t a = Fetch(s - 4 + (len >> 1));
- uint32_t b = Fetch(s + 4);
- uint32_t c = Fetch(s + len - 8);
- uint32_t d = Fetch(s + (len >> 1));
- uint32_t e = Fetch(s);
- uint32_t f = Fetch(s + len - 4);
- uint32_t h = d * c1 + len + seed;
- a = Rotate(a, 12) + f;
- h = Mur(c, h) + a;
- a = Rotate(a, 3) + c;
- h = Mur(e, h) + a;
- a = Rotate(a + f, 12) + d;
- h = Mur(b ^ seed, h) + a;
- return fmix(h);
-}
-
-STATIC_INLINE uint32_t Hash32Len0to4(const char *s, size_t len, uint32_t seed = 0) {
- uint32_t b = seed;
- uint32_t c = 9;
- for (size_t i = 0; i < len; i++) {
- signed char v = s[i];
- b = b * c1 + v;
- c ^= b;
- }
- return fmix(Mur(b, Mur(len, c)));
-}
-
-STATIC_INLINE uint32_t Hash32Len5to12(const char *s, size_t len, uint32_t seed = 0) {
- uint32_t a = len, b = len * 5, c = 9, d = b + seed;
- a += Fetch(s);
- b += Fetch(s + len - 4);
- c += Fetch(s + ((len >> 1) & 4));
- return fmix(seed ^ Mur(c, Mur(b, Mur(a, d))));
-}
-
-uint32_t Hash32(const char *s, size_t len) {
- if (len <= 24) {
- return len <= 12 ?
- (len <= 4 ? Hash32Len0to4(s, len) : Hash32Len5to12(s, len)) :
- Hash32Len13to24(s, len);
- }
-
- // len > 24
- uint32_t h = len, g = c1 * len, f = g;
- uint32_t a0 = Rotate(Fetch(s + len - 4) * c1, 17) * c2;
- uint32_t a1 = Rotate(Fetch(s + len - 8) * c1, 17) * c2;
- uint32_t a2 = Rotate(Fetch(s + len - 16) * c1, 17) * c2;
- uint32_t a3 = Rotate(Fetch(s + len - 12) * c1, 17) * c2;
- uint32_t a4 = Rotate(Fetch(s + len - 20) * c1, 17) * c2;
- h ^= a0;
- h = Rotate(h, 19);
- h = h * 5 + 0xe6546b64;
- h ^= a2;
- h = Rotate(h, 19);
- h = h * 5 + 0xe6546b64;
- g ^= a1;
- g = Rotate(g, 19);
- g = g * 5 + 0xe6546b64;
- g ^= a3;
- g = Rotate(g, 19);
- g = g * 5 + 0xe6546b64;
- f += a4;
- f = Rotate(f, 19) + 113;
- size_t iters = (len - 1) / 20;
- do {
- uint32_t a = Fetch(s);
- uint32_t b = Fetch(s + 4);
- uint32_t c = Fetch(s + 8);
- uint32_t d = Fetch(s + 12);
- uint32_t e = Fetch(s + 16);
- h += a;
- g += b;
- f += c;
- h = Mur(d, h) + e;
- g = Mur(c, g) + a;
- f = Mur(b + e * c1, f) + d;
- f += g;
- g += f;
- s += 20;
- } while (--iters != 0);
- g = Rotate(g, 11) * c1;
- g = Rotate(g, 17) * c1;
- f = Rotate(f, 11) * c1;
- f = Rotate(f, 17) * c1;
- h = Rotate(h + g, 19);
- h = h * 5 + 0xe6546b64;
- h = Rotate(h, 17) * c1;
- h = Rotate(h + f, 19);
- h = h * 5 + 0xe6546b64;
- h = Rotate(h, 17) * c1;
- return h;
-}
-
-uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
- if (len <= 24) {
- if (len >= 13) return Hash32Len13to24(s, len, seed * c1);
- else if (len >= 5) return Hash32Len5to12(s, len, seed);
- else return Hash32Len0to4(s, len, seed);
- }
- uint32_t h = Hash32Len13to24(s, 24, seed ^ len);
- return Mur(Hash32(s + 24, len - 24) + seed, h);
-}
-} // namespace farmhashmk
-namespace farmhashsu {
-#if !can_use_sse42 || !can_use_aesni
-
-uint32_t Hash32(const char *s, size_t len) {
- FARMHASH_DIE_IF_MISCONFIGURED;
- return s == NULL ? 0 : len;
-}
-
-uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
- FARMHASH_DIE_IF_MISCONFIGURED;
- return seed + Hash32(s, len);
-}
-
-#else
-
-#undef Fetch
-#define Fetch Fetch32
-
-#undef Rotate
-#define Rotate Rotate32
-
-#undef Bswap
-#define Bswap Bswap32
-
-// Helpers for data-parallel operations (4x 32-bits).
-STATIC_INLINE __m128i Add(__m128i x, __m128i y) { return _mm_add_epi32(x, y); }
-STATIC_INLINE __m128i Xor(__m128i x, __m128i y) { return _mm_xor_si128(x, y); }
-STATIC_INLINE __m128i Or(__m128i x, __m128i y) { return _mm_or_si128(x, y); }
-STATIC_INLINE __m128i Mul(__m128i x, __m128i y) { return _mm_mullo_epi32(x, y); }
-STATIC_INLINE __m128i Mul5(__m128i x) { return Add(x, _mm_slli_epi32(x, 2)); }
-STATIC_INLINE __m128i RotateLeft(__m128i x, int c) {
- return Or(_mm_slli_epi32(x, c),
- _mm_srli_epi32(x, 32 - c));
-}
-STATIC_INLINE __m128i Rol17(__m128i x) { return RotateLeft(x, 17); }
-STATIC_INLINE __m128i Rol19(__m128i x) { return RotateLeft(x, 19); }
-STATIC_INLINE __m128i Shuffle0321(__m128i x) {
- return _mm_shuffle_epi32(x, (0 << 6) + (3 << 4) + (2 << 2) + (1 << 0));
-}
-
-uint32_t Hash32(const char *s, size_t len) {
- const uint32_t seed = 81;
- if (len <= 24) {
- return len <= 12 ?
- (len <= 4 ?
- farmhashmk::Hash32Len0to4(s, len) :
- farmhashmk::Hash32Len5to12(s, len)) :
- farmhashmk::Hash32Len13to24(s, len);
- }
-
- if (len < 40) {
- uint32_t a = len, b = seed * c2, c = a + b;
- a += Fetch(s + len - 4);
- b += Fetch(s + len - 20);
- c += Fetch(s + len - 16);
- uint32_t d = a;
- a = NAMESPACE_FOR_HASH_FUNCTIONS::Rotate32(a, 21);
- a = Mur(a, Mur(b, _mm_crc32_u32(c, d)));
- a += Fetch(s + len - 12);
- b += Fetch(s + len - 8);
- d += a;
- a += d;
- b = Mur(b, d) * c2;
- a = _mm_crc32_u32(a, b + c);
- return farmhashmk::Hash32Len13to24(s, (len + 1) / 2, a) + b;
- }
-
-#undef Mulc1
-#define Mulc1(x) Mul((x), cc1)
-
-#undef Mulc2
-#define Mulc2(x) Mul((x), cc2)
-
-#undef Murk
-#define Murk(a, h) \
- Add(k, \
- Mul5( \
- Rol19( \
- Xor( \
- Mulc2( \
- Rol17( \
- Mulc1(a))), \
- (h)))))
-
- const __m128i cc1 = _mm_set1_epi32(c1);
- const __m128i cc2 = _mm_set1_epi32(c2);
- __m128i h = _mm_set1_epi32(seed);
- __m128i g = _mm_set1_epi32(c1 * seed);
- __m128i f = g;
- __m128i k = _mm_set1_epi32(0xe6546b64);
- __m128i q;
- if (len < 80) {
- __m128i a = Fetch128(s);
- __m128i b = Fetch128(s + 16);
- __m128i c = Fetch128(s + (len - 15) / 2);
- __m128i d = Fetch128(s + len - 32);
- __m128i e = Fetch128(s + len - 16);
- h = Add(h, a);
- g = Add(g, b);
- q = g;
- g = Shuffle0321(g);
- f = Add(f, c);
- __m128i be = Add(b, Mulc1(e));
- h = Add(h, f);
- f = Add(f, h);
- h = Add(Murk(d, h), e);
- k = Xor(k, _mm_shuffle_epi8(g, f));
- g = Add(Xor(c, g), a);
- f = Add(Xor(be, f), d);
- k = Add(k, be);
- k = Add(k, _mm_shuffle_epi8(f, h));
- f = Add(f, g);
- g = Add(g, f);
- g = Add(_mm_set1_epi32(len), Mulc1(g));
- } else {
- // len >= 80
- // The following is loosely modelled after farmhashmk::Hash32.
- size_t iters = (len - 1) / 80;
- len -= iters * 80;
-
-#undef Chunk
-#define Chunk() do { \
- __m128i a = Fetch128(s); \
- __m128i b = Fetch128(s + 16); \
- __m128i c = Fetch128(s + 32); \
- __m128i d = Fetch128(s + 48); \
- __m128i e = Fetch128(s + 64); \
- h = Add(h, a); \
- g = Add(g, b); \
- g = Shuffle0321(g); \
- f = Add(f, c); \
- __m128i be = Add(b, Mulc1(e)); \
- h = Add(h, f); \
- f = Add(f, h); \
- h = Add(h, d); \
- q = Add(q, e); \
- h = Rol17(h); \
- h = Mulc1(h); \
- k = Xor(k, _mm_shuffle_epi8(g, f)); \
- g = Add(Xor(c, g), a); \
- f = Add(Xor(be, f), d); \
- std::swap(f, q); \
- q = _mm_aesimc_si128(q); \
- k = Add(k, be); \
- k = Add(k, _mm_shuffle_epi8(f, h)); \
- f = Add(f, g); \
- g = Add(g, f); \
- f = Mulc1(f); \
-} while (0)
-
- q = g;
- while (iters-- != 0) {
- Chunk();
- s += 80;
- }
-
- if (len != 0) {
- h = Add(h, _mm_set1_epi32(len));
- s = s + len - 80;
- Chunk();
- }
- }
-
- g = Shuffle0321(g);
- k = Xor(k, g);
- k = Xor(k, q);
- h = Xor(h, q);
- f = Mulc1(f);
- k = Mulc2(k);
- g = Mulc1(g);
- h = Mulc2(h);
- k = Add(k, _mm_shuffle_epi8(g, f));
- h = Add(h, f);
- f = Add(f, h);
- g = Add(g, k);
- k = Add(k, g);
- k = Xor(k, _mm_shuffle_epi8(f, h));
- __m128i buf[4];
- buf[0] = f;
- buf[1] = g;
- buf[2] = k;
- buf[3] = h;
- s = reinterpret_cast<char*>(buf);
- uint32_t x = Fetch(s);
- uint32_t y = Fetch(s+4);
- uint32_t z = Fetch(s+8);
- x = _mm_crc32_u32(x, Fetch(s+12));
- y = _mm_crc32_u32(y, Fetch(s+16));
- z = _mm_crc32_u32(z * c1, Fetch(s+20));
- x = _mm_crc32_u32(x, Fetch(s+24));
- y = _mm_crc32_u32(y * c1, Fetch(s+28));
- uint32_t o = y;
- z = _mm_crc32_u32(z, Fetch(s+32));
- x = _mm_crc32_u32(x * c1, Fetch(s+36));
- y = _mm_crc32_u32(y, Fetch(s+40));
- z = _mm_crc32_u32(z * c1, Fetch(s+44));
- x = _mm_crc32_u32(x, Fetch(s+48));
- y = _mm_crc32_u32(y * c1, Fetch(s+52));
- z = _mm_crc32_u32(z, Fetch(s+56));
- x = _mm_crc32_u32(x, Fetch(s+60));
- return (o - x + y - z) * c1;
-}
-
-#undef Chunk
-#undef Murk
-#undef Mulc2
-#undef Mulc1
-
-uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
- if (len <= 24) {
- if (len >= 13) return farmhashmk::Hash32Len13to24(s, len, seed * c1);
- else if (len >= 5) return farmhashmk::Hash32Len5to12(s, len, seed);
- else return farmhashmk::Hash32Len0to4(s, len, seed);
- }
- uint32_t h = farmhashmk::Hash32Len13to24(s, 24, seed ^ len);
- return _mm_crc32_u32(Hash32(s + 24, len - 24) + seed, h);
-}
-
-#endif
-} // namespace farmhashsu
-namespace farmhashsa {
-#if !can_use_sse42
-
-uint32_t Hash32(const char *s, size_t len) {
- FARMHASH_DIE_IF_MISCONFIGURED;
- return s == NULL ? 0 : len;
-}
-
-uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
- FARMHASH_DIE_IF_MISCONFIGURED;
- return seed + Hash32(s, len);
-}
-
-#else
-
-#undef Fetch
-#define Fetch Fetch32
-
-#undef Rotate
-#define Rotate Rotate32
-
-#undef Bswap
-#define Bswap Bswap32
-
-// Helpers for data-parallel operations (4x 32-bits).
-STATIC_INLINE __m128i Add(__m128i x, __m128i y) { return _mm_add_epi32(x, y); }
-STATIC_INLINE __m128i Xor(__m128i x, __m128i y) { return _mm_xor_si128(x, y); }
-STATIC_INLINE __m128i Or(__m128i x, __m128i y) { return _mm_or_si128(x, y); }
-STATIC_INLINE __m128i Mul(__m128i x, __m128i y) { return _mm_mullo_epi32(x, y); }
-STATIC_INLINE __m128i Mul5(__m128i x) { return Add(x, _mm_slli_epi32(x, 2)); }
-STATIC_INLINE __m128i Rotate(__m128i x, int c) {
- return Or(_mm_slli_epi32(x, c),
- _mm_srli_epi32(x, 32 - c));
-}
-STATIC_INLINE __m128i Rot17(__m128i x) { return Rotate(x, 17); }
-STATIC_INLINE __m128i Rot19(__m128i x) { return Rotate(x, 19); }
-STATIC_INLINE __m128i Shuffle0321(__m128i x) {
- return _mm_shuffle_epi32(x, (0 << 6) + (3 << 4) + (2 << 2) + (1 << 0));
-}
-
-uint32_t Hash32(const char *s, size_t len) {
- const uint32_t seed = 81;
- if (len <= 24) {
- return len <= 12 ?
- (len <= 4 ?
- farmhashmk::Hash32Len0to4(s, len) :
- farmhashmk::Hash32Len5to12(s, len)) :
- farmhashmk::Hash32Len13to24(s, len);
- }
-
- if (len < 40) {
- uint32_t a = len, b = seed * c2, c = a + b;
- a += Fetch(s + len - 4);
- b += Fetch(s + len - 20);
- c += Fetch(s + len - 16);
- uint32_t d = a;
- a = NAMESPACE_FOR_HASH_FUNCTIONS::Rotate32(a, 21);
- a = Mur(a, Mur(b, Mur(c, d)));
- a += Fetch(s + len - 12);
- b += Fetch(s + len - 8);
- d += a;
- a += d;
- b = Mur(b, d) * c2;
- a = _mm_crc32_u32(a, b + c);
- return farmhashmk::Hash32Len13to24(s, (len + 1) / 2, a) + b;
- }
-
-#undef Mulc1
-#define Mulc1(x) Mul((x), cc1)
-
-#undef Mulc2
-#define Mulc2(x) Mul((x), cc2)
-
-#undef Murk
-#define Murk(a, h) \
- Add(k, \
- Mul5( \
- Rot19( \
- Xor( \
- Mulc2( \
- Rot17( \
- Mulc1(a))), \
- (h)))))
-
- const __m128i cc1 = _mm_set1_epi32(c1);
- const __m128i cc2 = _mm_set1_epi32(c2);
- __m128i h = _mm_set1_epi32(seed);
- __m128i g = _mm_set1_epi32(c1 * seed);
- __m128i f = g;
- __m128i k = _mm_set1_epi32(0xe6546b64);
- if (len < 80) {
- __m128i a = Fetch128(s);
- __m128i b = Fetch128(s + 16);
- __m128i c = Fetch128(s + (len - 15) / 2);
- __m128i d = Fetch128(s + len - 32);
- __m128i e = Fetch128(s + len - 16);
- h = Add(h, a);
- g = Add(g, b);
- g = Shuffle0321(g);
- f = Add(f, c);
- __m128i be = Add(b, Mulc1(e));
- h = Add(h, f);
- f = Add(f, h);
- h = Add(Murk(d, h), e);
- k = Xor(k, _mm_shuffle_epi8(g, f));
- g = Add(Xor(c, g), a);
- f = Add(Xor(be, f), d);
- k = Add(k, be);
- k = Add(k, _mm_shuffle_epi8(f, h));
- f = Add(f, g);
- g = Add(g, f);
- g = Add(_mm_set1_epi32(len), Mulc1(g));
- } else {
- // len >= 80
- // The following is loosely modelled after farmhashmk::Hash32.
- size_t iters = (len - 1) / 80;
- len -= iters * 80;
-
-#undef Chunk
-#define Chunk() do { \
- __m128i a = Fetch128(s); \
- __m128i b = Fetch128(s + 16); \
- __m128i c = Fetch128(s + 32); \
- __m128i d = Fetch128(s + 48); \
- __m128i e = Fetch128(s + 64); \
- h = Add(h, a); \
- g = Add(g, b); \
- g = Shuffle0321(g); \
- f = Add(f, c); \
- __m128i be = Add(b, Mulc1(e)); \
- h = Add(h, f); \
- f = Add(f, h); \
- h = Add(Murk(d, h), e); \
- k = Xor(k, _mm_shuffle_epi8(g, f)); \
- g = Add(Xor(c, g), a); \
- f = Add(Xor(be, f), d); \
- k = Add(k, be); \
- k = Add(k, _mm_shuffle_epi8(f, h)); \
- f = Add(f, g); \
- g = Add(g, f); \
- f = Mulc1(f); \
-} while (0)
-
- while (iters-- != 0) {
- Chunk();
- s += 80;
- }
-
- if (len != 0) {
- h = Add(h, _mm_set1_epi32(len));
- s = s + len - 80;
- Chunk();
- }
- }
-
- g = Shuffle0321(g);
- k = Xor(k, g);
- f = Mulc1(f);
- k = Mulc2(k);
- g = Mulc1(g);
- h = Mulc2(h);
- k = Add(k, _mm_shuffle_epi8(g, f));
- h = Add(h, f);
- f = Add(f, h);
- g = Add(g, k);
- k = Add(k, g);
- k = Xor(k, _mm_shuffle_epi8(f, h));
- __m128i buf[4];
- buf[0] = f;
- buf[1] = g;
- buf[2] = k;
- buf[3] = h;
- s = reinterpret_cast<char*>(buf);
- uint32_t x = Fetch(s);
- uint32_t y = Fetch(s+4);
- uint32_t z = Fetch(s+8);
- x = _mm_crc32_u32(x, Fetch(s+12));
- y = _mm_crc32_u32(y, Fetch(s+16));
- z = _mm_crc32_u32(z * c1, Fetch(s+20));
- x = _mm_crc32_u32(x, Fetch(s+24));
- y = _mm_crc32_u32(y * c1, Fetch(s+28));
- uint32_t o = y;
- z = _mm_crc32_u32(z, Fetch(s+32));
- x = _mm_crc32_u32(x * c1, Fetch(s+36));
- y = _mm_crc32_u32(y, Fetch(s+40));
- z = _mm_crc32_u32(z * c1, Fetch(s+44));
- x = _mm_crc32_u32(x, Fetch(s+48));
- y = _mm_crc32_u32(y * c1, Fetch(s+52));
- z = _mm_crc32_u32(z, Fetch(s+56));
- x = _mm_crc32_u32(x, Fetch(s+60));
- return (o - x + y - z) * c1;
-}
-
-#undef Chunk
-#undef Murk
-#undef Mulc2
-#undef Mulc1
-
-uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
- if (len <= 24) {
- if (len >= 13) return farmhashmk::Hash32Len13to24(s, len, seed * c1);
- else if (len >= 5) return farmhashmk::Hash32Len5to12(s, len, seed);
- else return farmhashmk::Hash32Len0to4(s, len, seed);
- }
- uint32_t h = farmhashmk::Hash32Len13to24(s, 24, seed ^ len);
- return _mm_crc32_u32(Hash32(s + 24, len - 24) + seed, h);
-}
-
-#endif
-} // namespace farmhashsa
-namespace farmhashcc {
-// This file provides a 32-bit hash equivalent to CityHash32 (v1.1.1)
-// and a 128-bit hash equivalent to CityHash128 (v1.1.1). It also provides
-// a seeded 32-bit hash function similar to CityHash32.
-
-#undef Fetch
-#define Fetch Fetch32
-
-#undef Rotate
-#define Rotate Rotate32
-
-#undef Bswap
-#define Bswap Bswap32
-
-STATIC_INLINE uint32_t Hash32Len13to24(const char *s, size_t len) {
- uint32_t a = Fetch(s - 4 + (len >> 1));
- uint32_t b = Fetch(s + 4);
- uint32_t c = Fetch(s + len - 8);
- uint32_t d = Fetch(s + (len >> 1));
- uint32_t e = Fetch(s);
- uint32_t f = Fetch(s + len - 4);
- uint32_t h = len;
-
- return fmix(Mur(f, Mur(e, Mur(d, Mur(c, Mur(b, Mur(a, h)))))));
-}
-
-STATIC_INLINE uint32_t Hash32Len0to4(const char *s, size_t len) {
- uint32_t b = 0;
- uint32_t c = 9;
- for (size_t i = 0; i < len; i++) {
- signed char v = s[i];
- b = b * c1 + v;
- c ^= b;
- }
- return fmix(Mur(b, Mur(len, c)));
-}
-
-STATIC_INLINE uint32_t Hash32Len5to12(const char *s, size_t len) {
- uint32_t a = len, b = len * 5, c = 9, d = b;
- a += Fetch(s);
- b += Fetch(s + len - 4);
- c += Fetch(s + ((len >> 1) & 4));
- return fmix(Mur(c, Mur(b, Mur(a, d))));
-}
-
+#include "farmhash.h"
+// FARMHASH ASSUMPTIONS: Modify as needed, or use -DFARMHASH_ASSUME_SSE42 etc.
+// Note that if you use -DFARMHASH_ASSUME_SSE42 you likely need -msse42
+// (or its equivalent for your compiler); if you use -DFARMHASH_ASSUME_AESNI
+// you likely need -maes (or its equivalent for your compiler).
+
+#ifdef FARMHASH_ASSUME_SSSE3
+#undef FARMHASH_ASSUME_SSSE3
+#define FARMHASH_ASSUME_SSSE3 1
+#endif
+
+#ifdef FARMHASH_ASSUME_SSE41
+#undef FARMHASH_ASSUME_SSE41
+#define FARMHASH_ASSUME_SSE41 1
+#endif
+
+#ifdef FARMHASH_ASSUME_SSE42
+#undef FARMHASH_ASSUME_SSE42
+#define FARMHASH_ASSUME_SSE42 1
+#endif
+
+#ifdef FARMHASH_ASSUME_AESNI
+#undef FARMHASH_ASSUME_AESNI
+#define FARMHASH_ASSUME_AESNI 1
+#endif
+
+#ifdef FARMHASH_ASSUME_AVX
+#undef FARMHASH_ASSUME_AVX
+#define FARMHASH_ASSUME_AVX 1
+#endif
+
+#if !defined(FARMHASH_CAN_USE_CXX11) && defined(LANG_CXX11)
+#define FARMHASH_CAN_USE_CXX11 1
+#else
+#undef FARMHASH_CAN_USE_CXX11
+#define FARMHASH_CAN_USE_CXX11 0
+#endif
+
+// FARMHASH PORTABILITY LAYER: Runtime error if misconfigured
+
+#ifndef FARMHASH_DIE_IF_MISCONFIGURED
+#define FARMHASH_DIE_IF_MISCONFIGURED do { *(char*)(len % 17) = 0; } while (0)
+#endif
+
+// FARMHASH PORTABILITY LAYER: "static inline" or similar
+
+#ifndef STATIC_INLINE
+#define STATIC_INLINE static inline
+#endif
+
+// FARMHASH PORTABILITY LAYER: LIKELY and UNLIKELY
+
+#if !defined(LIKELY)
+#if defined(FARMHASH_NO_BUILTIN_EXPECT) || (defined(FARMHASH_OPTIONAL_BUILTIN_EXPECT) && !defined(HAVE_BUILTIN_EXPECT))
+#define LIKELY(x) (x)
+#else
+#define LIKELY(x) (__builtin_expect(!!(x), 1))
+#endif
+#endif
+
+#undef UNLIKELY
+#define UNLIKELY(x) !LIKELY(!(x))
+
+// FARMHASH PORTABILITY LAYER: endianness and byteswapping functions
+
+#ifdef WORDS_BIGENDIAN
+#undef FARMHASH_BIG_ENDIAN
+#define FARMHASH_BIG_ENDIAN 1
+#endif
+
+#if defined(FARMHASH_LITTLE_ENDIAN) && defined(FARMHASH_BIG_ENDIAN)
+#error
+#endif
+
+#if !defined(FARMHASH_LITTLE_ENDIAN) && !defined(FARMHASH_BIG_ENDIAN)
+#define FARMHASH_UNKNOWN_ENDIAN 1
+#endif
+
+#if !defined(bswap_32) || !defined(bswap_64)
+#undef bswap_32
+#undef bswap_64
+
+#if defined(HAVE_BUILTIN_BSWAP) || defined(__clang__) || \
+ (defined(__GNUC__) && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 8) || \
+ __GNUC__ >= 5))
+// Easy case for bswap: no header file needed.
+#define bswap_32(x) __builtin_bswap32(x)
+#define bswap_64(x) __builtin_bswap64(x)
+#endif
+
+#endif
+
+#if defined(FARMHASH_UNKNOWN_ENDIAN) || !defined(bswap_64)
+
+#ifdef _MSC_VER
+
+#undef bswap_32
+#undef bswap_64
+#define bswap_32(x) _byteswap_ulong(x)
+#define bswap_64(x) _byteswap_uint64(x)
+
+#elif defined(__APPLE__)
+
+// Mac OS X / Darwin features
+#include <libkern/OSByteOrder.h>
+#undef bswap_32
+#undef bswap_64
+#define bswap_32(x) OSSwapInt32(x)
+#define bswap_64(x) OSSwapInt64(x)
+
+#elif defined(__sun) || defined(sun)
+
+#include <sys/byteorder.h>
+#undef bswap_32
+#undef bswap_64
+#define bswap_32(x) BSWAP_32(x)
+#define bswap_64(x) BSWAP_64(x)
+
+#elif defined(__FreeBSD__) || defined(__DragonFly__)
+
+#include <sys/endian.h>
+#undef bswap_32
+#undef bswap_64
+#define bswap_32(x) bswap32(x)
+#define bswap_64(x) bswap64(x)
+
+#elif defined(__OpenBSD__)
+
+#include <sys/types.h>
+#undef bswap_32
+#undef bswap_64
+#define bswap_32(x) swap32(x)
+#define bswap_64(x) swap64(x)
+
+#elif defined(__NetBSD__)
+
+#include <sys/types.h>
+#include <machine/bswap.h>
+#if defined(__BSWAP_RENAME) && !defined(__bswap_32)
+#undef bswap_32
+#undef bswap_64
+#define bswap_32(x) bswap32(x)
+#define bswap_64(x) bswap64(x)
+#endif
+
+#else
+
+#undef bswap_32
+#undef bswap_64
+#include <byteswap.h>
+
+#endif
+
+#ifdef WORDS_BIGENDIAN
+#define FARMHASH_BIG_ENDIAN 1
+#endif
+
+#endif
+
+#ifdef FARMHASH_BIG_ENDIAN
+#define uint32_in_expected_order(x) (bswap_32(x))
+#define uint64_in_expected_order(x) (bswap_64(x))
+#else
+#define uint32_in_expected_order(x) (x)
+#define uint64_in_expected_order(x) (x)
+#endif
+
+namespace NAMESPACE_FOR_HASH_FUNCTIONS {
+
+STATIC_INLINE uint64_t Fetch64(const char *p) {
+ uint64_t result;
+ memcpy(&result, p, sizeof(result));
+ return uint64_in_expected_order(result);
+}
+
+STATIC_INLINE uint32_t Fetch32(const char *p) {
+ uint32_t result;
+ memcpy(&result, p, sizeof(result));
+ return uint32_in_expected_order(result);
+}
+
+STATIC_INLINE uint32_t Bswap32(uint32_t val) { return bswap_32(val); }
+STATIC_INLINE uint64_t Bswap64(uint64_t val) { return bswap_64(val); }
+
+// FARMHASH PORTABILITY LAYER: bitwise rot
+
+STATIC_INLINE uint32_t BasicRotate32(uint32_t val, int shift) {
+ // Avoid shifting by 32: doing so yields an undefined result.
+ return shift == 0 ? val : ((val >> shift) | (val << (32 - shift)));
+}
+
+STATIC_INLINE uint64_t BasicRotate64(uint64_t val, int shift) {
+ // Avoid shifting by 64: doing so yields an undefined result.
+ return shift == 0 ? val : ((val >> shift) | (val << (64 - shift)));
+}
+
+#if defined(_MSC_VER) && defined(FARMHASH_ROTR)
+
+STATIC_INLINE uint32_t Rotate32(uint32_t val, int shift) {
+ return sizeof(unsigned long) == sizeof(val) ?
+ _lrotr(val, shift) :
+ BasicRotate32(val, shift);
+}
+
+STATIC_INLINE uint64_t Rotate64(uint64_t val, int shift) {
+ return sizeof(unsigned long) == sizeof(val) ?
+ _lrotr(val, shift) :
+ BasicRotate64(val, shift);
+}
+
+#else
+
+STATIC_INLINE uint32_t Rotate32(uint32_t val, int shift) {
+ return BasicRotate32(val, shift);
+}
+STATIC_INLINE uint64_t Rotate64(uint64_t val, int shift) {
+ return BasicRotate64(val, shift);
+}
+
+#endif
+
+} // namespace NAMESPACE_FOR_HASH_FUNCTIONS
+
+// FARMHASH PORTABILITY LAYER: debug mode or max speed?
+// One may use -DFARMHASH_DEBUG=1 or -DFARMHASH_DEBUG=0 to force the issue.
+
+#if !defined(FARMHASH_DEBUG) && (!defined(NDEBUG) || defined(_DEBUG))
+#define FARMHASH_DEBUG 1
+#endif
+
+#undef debug_mode
+#if FARMHASH_DEBUG
+#define debug_mode 1
+#else
+#define debug_mode 0
+#endif
+
+// PLATFORM-SPECIFIC FUNCTIONS AND MACROS
+
+#undef x86_64
+#if defined (__x86_64) || defined (__x86_64__)
+#define x86_64 1
+#else
+#define x86_64 0
+#endif
+
+#undef x86
+#if defined(__i386__) || defined(__i386) || defined(__X86__)
+#define x86 1
+#else
+#define x86 x86_64
+#endif
+
+#if !defined(is_64bit)
+#define is_64bit (x86_64 || (sizeof(void*) == 8))
+#endif
+
+#undef can_use_ssse3
+#if defined(__SSSE3__) || defined(FARMHASH_ASSUME_SSSE3)
+
+#include <immintrin.h>
+#define can_use_ssse3 1
+// Now we can use _mm_hsub_epi16 and so on.
+
+#else
+#define can_use_ssse3 0
+#endif
+
+#undef can_use_sse41
+#if defined(__SSE4_1__) || defined(FARMHASH_ASSUME_SSE41)
+
+#include <immintrin.h>
+#define can_use_sse41 1
+// Now we can use _mm_insert_epi64 and so on.
+
+#else
+#define can_use_sse41 0
+#endif
+
+#undef can_use_sse42
+#if defined(__SSE4_2__) || defined(FARMHASH_ASSUME_SSE42)
+
+#include <nmmintrin.h>
+#define can_use_sse42 1
+// Now we can use _mm_crc32_u{32,16,8}. And on 64-bit platforms, _mm_crc32_u64.
+
+#else
+#define can_use_sse42 0
+#endif
+
+#undef can_use_aesni
+#if defined(__AES__) || defined(FARMHASH_ASSUME_AESNI)
+
+#include <wmmintrin.h>
+#define can_use_aesni 1
+// Now we can use _mm_aesimc_si128 and so on.
+
+#else
+#define can_use_aesni 0
+#endif
+
+#undef can_use_avx
+#if defined(__AVX__) || defined(FARMHASH_ASSUME_AVX)
+
+#include <immintrin.h>
+#define can_use_avx 1
+
+#else
+#define can_use_avx 0
+#endif
+
+#if can_use_ssse3 || can_use_sse41 || can_use_sse42 || can_use_aesni || can_use_avx
+STATIC_INLINE __m128i Fetch128(const char* s) {
+ return _mm_loadu_si128(reinterpret_cast<const __m128i*>(s));
+}
+#endif
+// Building blocks for hash functions
+
+// std::swap() was in <algorithm> but is in <utility> from C++11 on.
+#if !FARMHASH_CAN_USE_CXX11
+#include <algorithm>
+#endif
+
+#undef PERMUTE3
+#define PERMUTE3(a, b, c) do { std::swap(a, b); std::swap(a, c); } while (0)
+
+namespace NAMESPACE_FOR_HASH_FUNCTIONS {
+
+// Some primes between 2^63 and 2^64 for various uses.
+static const uint64_t k0 = 0xc3a5c85c97cb3127ULL;
+static const uint64_t k1 = 0xb492b66fbe98f273ULL;
+static const uint64_t k2 = 0x9ae16a3b2f90404fULL;
+
+// Magic numbers for 32-bit hashing. Copied from Murmur3.
+static const uint32_t c1 = 0xcc9e2d51;
+static const uint32_t c2 = 0x1b873593;
+
+// A 32-bit to 32-bit integer hash copied from Murmur3.
+STATIC_INLINE uint32_t fmix(uint32_t h)
+{
+ h ^= h >> 16;
+ h *= 0x85ebca6b;
+ h ^= h >> 13;
+ h *= 0xc2b2ae35;
+ h ^= h >> 16;
+ return h;
+}
+
+STATIC_INLINE uint32_t Mur(uint32_t a, uint32_t h) {
+ // Helper from Murmur3 for combining two 32-bit values.
+ a *= c1;
+ a = Rotate32(a, 17);
+ a *= c2;
+ h ^= a;
+ h = Rotate32(h, 19);
+ return h * 5 + 0xe6546b64;
+}
+
+template <typename T> STATIC_INLINE T DebugTweak(T x) {
+ if (debug_mode) {
+ if (sizeof(x) == 4) {
+ x = ~Bswap32(x * c1);
+ } else {
+ x = ~Bswap64(x * k1);
+ }
+ }
+ return x;
+}
+
+template <> uint128_t DebugTweak(uint128_t x) {
+ if (debug_mode) {
+ uint64_t y = DebugTweak(Uint128Low64(x));
+ uint64_t z = DebugTweak(Uint128High64(x));
+ y += z;
+ z += y;
+ x = Uint128(y, z * k1);
+ }
+ return x;
+}
+
+} // namespace NAMESPACE_FOR_HASH_FUNCTIONS
+
+using namespace std;
+using namespace NAMESPACE_FOR_HASH_FUNCTIONS;
+namespace farmhashna {
+#undef Fetch
+#define Fetch Fetch64
+
+#undef Rotate
+#define Rotate Rotate64
+
+#undef Bswap
+#define Bswap Bswap64
+
+STATIC_INLINE uint64_t ShiftMix(uint64_t val) {
+ return val ^ (val >> 47);
+}
+
+STATIC_INLINE uint64_t HashLen16(uint64_t u, uint64_t v) {
+ return Hash128to64(Uint128(u, v));
+}
+
+STATIC_INLINE uint64_t HashLen16(uint64_t u, uint64_t v, uint64_t mul) {
+ // Murmur-inspired hashing.
+ uint64_t a = (u ^ v) * mul;
+ a ^= (a >> 47);
+ uint64_t b = (v ^ a) * mul;
+ b ^= (b >> 47);
+ b *= mul;
+ return b;
+}
+
+STATIC_INLINE uint64_t HashLen0to16(const char *s, size_t len) {
+ if (len >= 8) {
+ uint64_t mul = k2 + len * 2;
+ uint64_t a = Fetch(s) + k2;
+ uint64_t b = Fetch(s + len - 8);
+ uint64_t c = Rotate(b, 37) * mul + a;
+ uint64_t d = (Rotate(a, 25) + b) * mul;
+ return HashLen16(c, d, mul);
+ }
+ if (len >= 4) {
+ uint64_t mul = k2 + len * 2;
+ uint64_t a = Fetch32(s);
+ return HashLen16(len + (a << 3), Fetch32(s + len - 4), mul);
+ }
+ if (len > 0) {
+ uint8_t a = s[0];
+ uint8_t b = s[len >> 1];
+ uint8_t c = s[len - 1];
+ uint32_t y = static_cast<uint32_t>(a) + (static_cast<uint32_t>(b) << 8);
+ uint32_t z = len + (static_cast<uint32_t>(c) << 2);
+ return ShiftMix(y * k2 ^ z * k0) * k2;
+ }
+ return k2;
+}
+
+// This probably works well for 16-byte strings as well, but it may be overkill
+// in that case.
+STATIC_INLINE uint64_t HashLen17to32(const char *s, size_t len) {
+ uint64_t mul = k2 + len * 2;
+ uint64_t a = Fetch(s) * k1;
+ uint64_t b = Fetch(s + 8);
+ uint64_t c = Fetch(s + len - 8) * mul;
+ uint64_t d = Fetch(s + len - 16) * k2;
+ return HashLen16(Rotate(a + b, 43) + Rotate(c, 30) + d,
+ a + Rotate(b + k2, 18) + c, mul);
+}
+
+// Return a 16-byte hash for 48 bytes. Quick and dirty.
+// Callers do best to use "random-looking" values for a and b.
+STATIC_INLINE pair<uint64_t, uint64_t> WeakHashLen32WithSeeds(
+ uint64_t w, uint64_t x, uint64_t y, uint64_t z, uint64_t a, uint64_t b) {
+ a += w;
+ b = Rotate(b + a + z, 21);
+ uint64_t c = a;
+ a += x;
+ a += y;
+ b += Rotate(a, 44);
+ return make_pair(a + z, b + c);
+}
+
+// Return a 16-byte hash for s[0] ... s[31], a, and b. Quick and dirty.
+STATIC_INLINE pair<uint64_t, uint64_t> WeakHashLen32WithSeeds(
+ const char* s, uint64_t a, uint64_t b) {
+ return WeakHashLen32WithSeeds(Fetch(s),
+ Fetch(s + 8),
+ Fetch(s + 16),
+ Fetch(s + 24),
+ a,
+ b);
+}
+
+// Return an 8-byte hash for 33 to 64 bytes.
+STATIC_INLINE uint64_t HashLen33to64(const char *s, size_t len) {
+ uint64_t mul = k2 + len * 2;
+ uint64_t a = Fetch(s) * k2;
+ uint64_t b = Fetch(s + 8);
+ uint64_t c = Fetch(s + len - 8) * mul;
+ uint64_t d = Fetch(s + len - 16) * k2;
+ uint64_t y = Rotate(a + b, 43) + Rotate(c, 30) + d;
+ uint64_t z = HashLen16(y, a + Rotate(b + k2, 18) + c, mul);
+ uint64_t e = Fetch(s + 16) * mul;
+ uint64_t f = Fetch(s + 24);
+ uint64_t g = (y + Fetch(s + len - 32)) * mul;
+ uint64_t h = (z + Fetch(s + len - 24)) * mul;
+ return HashLen16(Rotate(e + f, 43) + Rotate(g, 30) + h,
+ e + Rotate(f + a, 18) + g, mul);
+}
+
+uint64_t Hash64(const char *s, size_t len) {
+ const uint64_t seed = 81;
+ if (len <= 32) {
+ if (len <= 16) {
+ return HashLen0to16(s, len);
+ } else {
+ return HashLen17to32(s, len);
+ }
+ } else if (len <= 64) {
+ return HashLen33to64(s, len);
+ }
+
+ // For strings over 64 bytes we loop. Internal state consists of
+ // 56 bytes: v, w, x, y, and z.
+ uint64_t x = seed;
+ uint64_t y = seed * k1 + 113;
+ uint64_t z = ShiftMix(y * k2 + 113) * k2;
+ pair<uint64_t, uint64_t> v = make_pair(0, 0);
+ pair<uint64_t, uint64_t> w = make_pair(0, 0);
+ x = x * k2 + Fetch(s);
+
+ // Set end so that after the loop we have 1 to 64 bytes left to process.
+ const char* end = s + ((len - 1) / 64) * 64;
+ const char* last64 = end + ((len - 1) & 63) - 63;
+ assert(s + len - 64 == last64);
+ do {
+ x = Rotate(x + y + v.first + Fetch(s + 8), 37) * k1;
+ y = Rotate(y + v.second + Fetch(s + 48), 42) * k1;
+ x ^= w.second;
+ y += v.first + Fetch(s + 40);
+ z = Rotate(z + w.first, 33) * k1;
+ v = WeakHashLen32WithSeeds(s, v.second * k1, x + w.first);
+ w = WeakHashLen32WithSeeds(s + 32, z + w.second, y + Fetch(s + 16));
+ std::swap(z, x);
+ s += 64;
+ } while (s != end);
+ uint64_t mul = k1 + ((z & 0xff) << 1);
+ // Make s point to the last 64 bytes of input.
+ s = last64;
+ w.first += ((len - 1) & 63);
+ v.first += w.first;
+ w.first += v.first;
+ x = Rotate(x + y + v.first + Fetch(s + 8), 37) * mul;
+ y = Rotate(y + v.second + Fetch(s + 48), 42) * mul;
+ x ^= w.second * 9;
+ y += v.first * 9 + Fetch(s + 40);
+ z = Rotate(z + w.first, 33) * mul;
+ v = WeakHashLen32WithSeeds(s, v.second * mul, x + w.first);
+ w = WeakHashLen32WithSeeds(s + 32, z + w.second, y + Fetch(s + 16));
+ std::swap(z, x);
+ return HashLen16(HashLen16(v.first, w.first, mul) + ShiftMix(y) * k0 + z,
+ HashLen16(v.second, w.second, mul) + x,
+ mul);
+}
+
+uint64_t Hash64WithSeeds(const char *s, size_t len, uint64_t seed0, uint64_t seed1);
+
+uint64_t Hash64WithSeed(const char *s, size_t len, uint64_t seed) {
+ return Hash64WithSeeds(s, len, k2, seed);
+}
+
+uint64_t Hash64WithSeeds(const char *s, size_t len, uint64_t seed0, uint64_t seed1) {
+ return HashLen16(Hash64(s, len) - seed0, seed1);
+}
+} // namespace farmhashna
+namespace farmhashuo {
+#undef Fetch
+#define Fetch Fetch64
+
+#undef Rotate
+#define Rotate Rotate64
+
+STATIC_INLINE uint64_t H(uint64_t x, uint64_t y, uint64_t mul, int r) {
+ uint64_t a = (x ^ y) * mul;
+ a ^= (a >> 47);
+ uint64_t b = (y ^ a) * mul;
+ return Rotate(b, r) * mul;
+}
+
+uint64_t Hash64WithSeeds(const char *s, size_t len,
+ uint64_t seed0, uint64_t seed1) {
+ if (len <= 64) {
+ return farmhashna::Hash64WithSeeds(s, len, seed0, seed1);
+ }
+
+ // For strings over 64 bytes we loop. Internal state consists of
+ // 64 bytes: u, v, w, x, y, and z.
+ uint64_t x = seed0;
+ uint64_t y = seed1 * k2 + 113;
+ uint64_t z = farmhashna::ShiftMix(y * k2) * k2;
+ pair<uint64_t, uint64_t> v = make_pair(seed0, seed1);
+ pair<uint64_t, uint64_t> w = make_pair(0, 0);
+ uint64_t u = x - z;
+ x *= k2;
+ uint64_t mul = k2 + (u & 0x82);
+
+ // Set end so that after the loop we have 1 to 64 bytes left to process.
+ const char* end = s + ((len - 1) / 64) * 64;
+ const char* last64 = end + ((len - 1) & 63) - 63;
+ assert(s + len - 64 == last64);
+ do {
+ uint64_t a0 = Fetch(s);
+ uint64_t a1 = Fetch(s + 8);
+ uint64_t a2 = Fetch(s + 16);
+ uint64_t a3 = Fetch(s + 24);
+ uint64_t a4 = Fetch(s + 32);
+ uint64_t a5 = Fetch(s + 40);
+ uint64_t a6 = Fetch(s + 48);
+ uint64_t a7 = Fetch(s + 56);
+ x += a0 + a1;
+ y += a2;
+ z += a3;
+ v.first += a4;
+ v.second += a5 + a1;
+ w.first += a6;
+ w.second += a7;
+
+ x = Rotate(x, 26);
+ x *= 9;
+ y = Rotate(y, 29);
+ z *= mul;
+ v.first = Rotate(v.first, 33);
+ v.second = Rotate(v.second, 30);
+ w.first ^= x;
+ w.first *= 9;
+ z = Rotate(z, 32);
+ z += w.second;
+ w.second += z;
+ z *= 9;
+ std::swap(u, y);
+
+ z += a0 + a6;
+ v.first += a2;
+ v.second += a3;
+ w.first += a4;
+ w.second += a5 + a6;
+ x += a1;
+ y += a7;
+
+ y += v.first;
+ v.first += x - y;
+ v.second += w.first;
+ w.first += v.second;
+ w.second += x - y;
+ x += w.second;
+ w.second = Rotate(w.second, 34);
+ std::swap(u, z);
+ s += 64;
+ } while (s != end);
+ // Make s point to the last 64 bytes of input.
+ s = last64;
+ u *= 9;
+ v.second = Rotate(v.second, 28);
+ v.first = Rotate(v.first, 20);
+ w.first += ((len - 1) & 63);
+ u += y;
+ y += u;
+ x = Rotate(y - x + v.first + Fetch(s + 8), 37) * mul;
+ y = Rotate(y ^ v.second ^ Fetch(s + 48), 42) * mul;
+ x ^= w.second * 9;
+ y += v.first + Fetch(s + 40);
+ z = Rotate(z + w.first, 33) * mul;
+ v = farmhashna::WeakHashLen32WithSeeds(s, v.second * mul, x + w.first);
+ w = farmhashna::WeakHashLen32WithSeeds(s + 32, z + w.second, y + Fetch(s + 16));
+ return H(farmhashna::HashLen16(v.first + x, w.first ^ y, mul) + z - u,
+ H(v.second + y, w.second + z, k2, 30) ^ x,
+ k2,
+ 31);
+}
+
+uint64_t Hash64WithSeed(const char *s, size_t len, uint64_t seed) {
+ return len <= 64 ? farmhashna::Hash64WithSeed(s, len, seed) :
+ Hash64WithSeeds(s, len, 0, seed);
+}
+
+uint64_t Hash64(const char *s, size_t len) {
+ return len <= 64 ? farmhashna::Hash64(s, len) :
+ Hash64WithSeeds(s, len, 81, 0);
+}
+} // namespace farmhashuo
+namespace farmhashxo {
+#undef Fetch
+#define Fetch Fetch64
+
+#undef Rotate
+#define Rotate Rotate64
+
+STATIC_INLINE uint64_t H32(const char *s, size_t len, uint64_t mul,
+ uint64_t seed0 = 0, uint64_t seed1 = 0) {
+ uint64_t a = Fetch(s) * k1;
+ uint64_t b = Fetch(s + 8);
+ uint64_t c = Fetch(s + len - 8) * mul;
+ uint64_t d = Fetch(s + len - 16) * k2;
+ uint64_t u = Rotate(a + b, 43) + Rotate(c, 30) + d + seed0;
+ uint64_t v = a + Rotate(b + k2, 18) + c + seed1;
+ a = farmhashna::ShiftMix((u ^ v) * mul);
+ b = farmhashna::ShiftMix((v ^ a) * mul);
+ return b;
+}
+
+// Return an 8-byte hash for 33 to 64 bytes.
+STATIC_INLINE uint64_t HashLen33to64(const char *s, size_t len) {
+ uint64_t mul0 = k2 - 30;
+ uint64_t mul1 = k2 - 30 + 2 * len;
+ uint64_t h0 = H32(s, 32, mul0);
+ uint64_t h1 = H32(s + len - 32, 32, mul1);
+ return ((h1 * mul1) + h0) * mul1;
+}
+
+// Return an 8-byte hash for 65 to 96 bytes.
+STATIC_INLINE uint64_t HashLen65to96(const char *s, size_t len) {
+ uint64_t mul0 = k2 - 114;
+ uint64_t mul1 = k2 - 114 + 2 * len;
+ uint64_t h0 = H32(s, 32, mul0);
+ uint64_t h1 = H32(s + 32, 32, mul1);
+ uint64_t h2 = H32(s + len - 32, 32, mul1, h0, h1);
+ return (h2 * 9 + (h0 >> 17) + (h1 >> 21)) * mul1;
+}
+
+uint64_t Hash64(const char *s, size_t len) {
+ if (len <= 32) {
+ if (len <= 16) {
+ return farmhashna::HashLen0to16(s, len);
+ } else {
+ return farmhashna::HashLen17to32(s, len);
+ }
+ } else if (len <= 64) {
+ return HashLen33to64(s, len);
+ } else if (len <= 96) {
+ return HashLen65to96(s, len);
+ } else if (len <= 256) {
+ return farmhashna::Hash64(s, len);
+ } else {
+ return farmhashuo::Hash64(s, len);
+ }
+}
+
+uint64_t Hash64WithSeeds(const char *s, size_t len, uint64_t seed0, uint64_t seed1) {
+ return farmhashuo::Hash64WithSeeds(s, len, seed0, seed1);
+}
+
+uint64_t Hash64WithSeed(const char *s, size_t len, uint64_t seed) {
+ return farmhashuo::Hash64WithSeed(s, len, seed);
+}
+} // namespace farmhashxo
+namespace farmhashte {
+#if !can_use_sse41 || !x86_64
+
+uint64_t Hash64(const char *s, size_t len) {
+ FARMHASH_DIE_IF_MISCONFIGURED;
+ return s == NULL ? 0 : len;
+}
+
+uint64_t Hash64WithSeed(const char *s, size_t len, uint64_t seed) {
+ FARMHASH_DIE_IF_MISCONFIGURED;
+ return seed + Hash64(s, len);
+}
+
+uint64_t Hash64WithSeeds(const char *s, size_t len,
+ uint64_t seed0, uint64_t seed1) {
+ FARMHASH_DIE_IF_MISCONFIGURED;
+ return seed0 + seed1 + Hash64(s, len);
+}
+
+#else
+
+#undef Fetch
+#define Fetch Fetch64
+
+#undef Rotate
+#define Rotate Rotate64
+
+#undef Bswap
+#define Bswap Bswap64
+
+// Helpers for data-parallel operations (1x 128 bits or 2x 64 or 4x 32).
+STATIC_INLINE __m128i Add(__m128i x, __m128i y) { return _mm_add_epi64(x, y); }
+STATIC_INLINE __m128i Xor(__m128i x, __m128i y) { return _mm_xor_si128(x, y); }
+STATIC_INLINE __m128i Mul(__m128i x, __m128i y) { return _mm_mullo_epi32(x, y); }
+STATIC_INLINE __m128i Shuf(__m128i x, __m128i y) { return _mm_shuffle_epi8(y, x); }
+
+// Requires n >= 256. Requires SSE4.1. Should be slightly faster if the
+// compiler uses AVX instructions (e.g., use the -mavx flag with GCC).
+STATIC_INLINE uint64_t Hash64Long(const char* s, size_t n,
+ uint64_t seed0, uint64_t seed1) {
+ const __m128i kShuf =
+ _mm_set_epi8(4, 11, 10, 5, 8, 15, 6, 9, 12, 2, 14, 13, 0, 7, 3, 1);
+ const __m128i kMult =
+ _mm_set_epi8(0xbd, 0xd6, 0x33, 0x39, 0x45, 0x54, 0xfa, 0x03,
+ 0x34, 0x3e, 0x33, 0xed, 0xcc, 0x9e, 0x2d, 0x51);
+ uint64_t seed2 = (seed0 + 113) * (seed1 + 9);
+ uint64_t seed3 = (Rotate(seed0, 23) + 27) * (Rotate(seed1, 30) + 111);
+ __m128i d0 = _mm_cvtsi64_si128(seed0);
+ __m128i d1 = _mm_cvtsi64_si128(seed1);
+ __m128i d2 = Shuf(kShuf, d0);
+ __m128i d3 = Shuf(kShuf, d1);
+ __m128i d4 = Xor(d0, d1);
+ __m128i d5 = Xor(d1, d2);
+ __m128i d6 = Xor(d2, d4);
+ __m128i d7 = _mm_set1_epi32(seed2 >> 32);
+ __m128i d8 = Mul(kMult, d2);
+ __m128i d9 = _mm_set1_epi32(seed3 >> 32);
+ __m128i d10 = _mm_set1_epi32(seed3);
+ __m128i d11 = Add(d2, _mm_set1_epi32(seed2));
+ const char* end = s + (n & ~static_cast<size_t>(255));
+ do {
+ __m128i z;
+ z = Fetch128(s);
+ d0 = Add(d0, z);
+ d1 = Shuf(kShuf, d1);
+ d2 = Xor(d2, d0);
+ d4 = Xor(d4, z);
+ d4 = Xor(d4, d1);
+ std::swap(d0, d6);
+ z = Fetch128(s + 16);
+ d5 = Add(d5, z);
+ d6 = Shuf(kShuf, d6);
+ d8 = Shuf(kShuf, d8);
+ d7 = Xor(d7, d5);
+ d0 = Xor(d0, z);
+ d0 = Xor(d0, d6);
+ std::swap(d5, d11);
+ z = Fetch128(s + 32);
+ d1 = Add(d1, z);
+ d2 = Shuf(kShuf, d2);
+ d4 = Shuf(kShuf, d4);
+ d5 = Xor(d5, z);
+ d5 = Xor(d5, d2);
+ std::swap(d10, d4);
+ z = Fetch128(s + 48);
+ d6 = Add(d6, z);
+ d7 = Shuf(kShuf, d7);
+ d0 = Shuf(kShuf, d0);
+ d8 = Xor(d8, d6);
+ d1 = Xor(d1, z);
+ d1 = Add(d1, d7);
+ z = Fetch128(s + 64);
+ d2 = Add(d2, z);
+ d5 = Shuf(kShuf, d5);
+ d4 = Add(d4, d2);
+ d6 = Xor(d6, z);
+ d6 = Xor(d6, d11);
+ std::swap(d8, d2);
+ z = Fetch128(s + 80);
+ d7 = Xor(d7, z);
+ d8 = Shuf(kShuf, d8);
+ d1 = Shuf(kShuf, d1);
+ d0 = Add(d0, d7);
+ d2 = Add(d2, z);
+ d2 = Add(d2, d8);
+ std::swap(d1, d7);
+ z = Fetch128(s + 96);
+ d4 = Shuf(kShuf, d4);
+ d6 = Shuf(kShuf, d6);
+ d8 = Mul(kMult, d8);
+ d5 = Xor(d5, d11);
+ d7 = Xor(d7, z);
+ d7 = Add(d7, d4);
+ std::swap(d6, d0);
+ z = Fetch128(s + 112);
+ d8 = Add(d8, z);
+ d0 = Shuf(kShuf, d0);
+ d2 = Shuf(kShuf, d2);
+ d1 = Xor(d1, d8);
+ d10 = Xor(d10, z);
+ d10 = Xor(d10, d0);
+ std::swap(d11, d5);
+ z = Fetch128(s + 128);
+ d4 = Add(d4, z);
+ d5 = Shuf(kShuf, d5);
+ d7 = Shuf(kShuf, d7);
+ d6 = Add(d6, d4);
+ d8 = Xor(d8, z);
+ d8 = Xor(d8, d5);
+ std::swap(d4, d10);
+ z = Fetch128(s + 144);
+ d0 = Add(d0, z);
+ d1 = Shuf(kShuf, d1);
+ d2 = Add(d2, d0);
+ d4 = Xor(d4, z);
+ d4 = Xor(d4, d1);
+ z = Fetch128(s + 160);
+ d5 = Add(d5, z);
+ d6 = Shuf(kShuf, d6);
+ d8 = Shuf(kShuf, d8);
+ d7 = Xor(d7, d5);
+ d0 = Xor(d0, z);
+ d0 = Xor(d0, d6);
+ std::swap(d2, d8);
+ z = Fetch128(s + 176);
+ d1 = Add(d1, z);
+ d2 = Shuf(kShuf, d2);
+ d4 = Shuf(kShuf, d4);
+ d5 = Mul(kMult, d5);
+ d5 = Xor(d5, z);
+ d5 = Xor(d5, d2);
+ std::swap(d7, d1);
+ z = Fetch128(s + 192);
+ d6 = Add(d6, z);
+ d7 = Shuf(kShuf, d7);
+ d0 = Shuf(kShuf, d0);
+ d8 = Add(d8, d6);
+ d1 = Xor(d1, z);
+ d1 = Xor(d1, d7);
+ std::swap(d0, d6);
+ z = Fetch128(s + 208);
+ d2 = Add(d2, z);
+ d5 = Shuf(kShuf, d5);
+ d4 = Xor(d4, d2);
+ d6 = Xor(d6, z);
+ d6 = Xor(d6, d9);
+ std::swap(d5, d11);
+ z = Fetch128(s + 224);
+ d7 = Add(d7, z);
+ d8 = Shuf(kShuf, d8);
+ d1 = Shuf(kShuf, d1);
+ d0 = Xor(d0, d7);
+ d2 = Xor(d2, z);
+ d2 = Xor(d2, d8);
+ std::swap(d10, d4);
+ z = Fetch128(s + 240);
+ d3 = Add(d3, z);
+ d4 = Shuf(kShuf, d4);
+ d6 = Shuf(kShuf, d6);
+ d7 = Mul(kMult, d7);
+ d5 = Add(d5, d3);
+ d7 = Xor(d7, z);
+ d7 = Xor(d7, d4);
+ std::swap(d3, d9);
+ s += 256;
+ } while (s != end);
+ d6 = Add(Mul(kMult, d6), _mm_cvtsi64_si128(n));
+ if (n % 256 != 0) {
+ d7 = Add(_mm_shuffle_epi32(d8, (0 << 6) + (3 << 4) + (2 << 2) + (1 << 0)), d7);
+ d8 = Add(Mul(kMult, d8), _mm_cvtsi64_si128(farmhashxo::Hash64(s, n % 256)));
+ }
+ __m128i t[8];
+ d0 = Mul(kMult, Shuf(kShuf, Mul(kMult, d0)));
+ d3 = Mul(kMult, Shuf(kShuf, Mul(kMult, d3)));
+ d9 = Mul(kMult, Shuf(kShuf, Mul(kMult, d9)));
+ d1 = Mul(kMult, Shuf(kShuf, Mul(kMult, d1)));
+ d0 = Add(d11, d0);
+ d3 = Xor(d7, d3);
+ d9 = Add(d8, d9);
+ d1 = Add(d10, d1);
+ d4 = Add(d3, d4);
+ d5 = Add(d9, d5);
+ d6 = Xor(d1, d6);
+ d2 = Add(d0, d2);
+ t[0] = d0;
+ t[1] = d3;
+ t[2] = d9;
+ t[3] = d1;
+ t[4] = d4;
+ t[5] = d5;
+ t[6] = d6;
+ t[7] = d2;
+ return farmhashxo::Hash64(reinterpret_cast<const char*>(t), sizeof(t));
+}
+
+uint64_t Hash64(const char *s, size_t len) {
+ // Empirically, farmhashxo seems faster until length 512.
+ return len >= 512 ? Hash64Long(s, len, k2, k1) : farmhashxo::Hash64(s, len);
+}
+
+uint64_t Hash64WithSeed(const char *s, size_t len, uint64_t seed) {
+ return len >= 512 ? Hash64Long(s, len, k1, seed) :
+ farmhashxo::Hash64WithSeed(s, len, seed);
+}
+
+uint64_t Hash64WithSeeds(const char *s, size_t len, uint64_t seed0, uint64_t seed1) {
+ return len >= 512 ? Hash64Long(s, len, seed0, seed1) :
+ farmhashxo::Hash64WithSeeds(s, len, seed0, seed1);
+}
+
+#endif
+} // namespace farmhashte
+namespace farmhashnt {
+#if !can_use_sse41 || !x86_64
+
+uint32_t Hash32(const char *s, size_t len) {
+ FARMHASH_DIE_IF_MISCONFIGURED;
+ return s == NULL ? 0 : len;
+}
+
+uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
+ FARMHASH_DIE_IF_MISCONFIGURED;
+ return seed + Hash32(s, len);
+}
+
+#else
+
+uint32_t Hash32(const char *s, size_t len) {
+ return static_cast<uint32_t>(farmhashte::Hash64(s, len));
+}
+
+uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
+ return static_cast<uint32_t>(farmhashte::Hash64WithSeed(s, len, seed));
+}
+
+#endif
+} // namespace farmhashnt
+namespace farmhashmk {
+#undef Fetch
+#define Fetch Fetch32
+
+#undef Rotate
+#define Rotate Rotate32
+
+#undef Bswap
+#define Bswap Bswap32
+
+STATIC_INLINE uint32_t Hash32Len13to24(const char *s, size_t len, uint32_t seed = 0) {
+ uint32_t a = Fetch(s - 4 + (len >> 1));
+ uint32_t b = Fetch(s + 4);
+ uint32_t c = Fetch(s + len - 8);
+ uint32_t d = Fetch(s + (len >> 1));
+ uint32_t e = Fetch(s);
+ uint32_t f = Fetch(s + len - 4);
+ uint32_t h = d * c1 + len + seed;
+ a = Rotate(a, 12) + f;
+ h = Mur(c, h) + a;
+ a = Rotate(a, 3) + c;
+ h = Mur(e, h) + a;
+ a = Rotate(a + f, 12) + d;
+ h = Mur(b ^ seed, h) + a;
+ return fmix(h);
+}
+
+STATIC_INLINE uint32_t Hash32Len0to4(const char *s, size_t len, uint32_t seed = 0) {
+ uint32_t b = seed;
+ uint32_t c = 9;
+ for (size_t i = 0; i < len; i++) {
+ signed char v = s[i];
+ b = b * c1 + v;
+ c ^= b;
+ }
+ return fmix(Mur(b, Mur(len, c)));
+}
+
+STATIC_INLINE uint32_t Hash32Len5to12(const char *s, size_t len, uint32_t seed = 0) {
+ uint32_t a = len, b = len * 5, c = 9, d = b + seed;
+ a += Fetch(s);
+ b += Fetch(s + len - 4);
+ c += Fetch(s + ((len >> 1) & 4));
+ return fmix(seed ^ Mur(c, Mur(b, Mur(a, d))));
+}
+
+uint32_t Hash32(const char *s, size_t len) {
+ if (len <= 24) {
+ return len <= 12 ?
+ (len <= 4 ? Hash32Len0to4(s, len) : Hash32Len5to12(s, len)) :
+ Hash32Len13to24(s, len);
+ }
+
+ // len > 24
+ uint32_t h = len, g = c1 * len, f = g;
+ uint32_t a0 = Rotate(Fetch(s + len - 4) * c1, 17) * c2;
+ uint32_t a1 = Rotate(Fetch(s + len - 8) * c1, 17) * c2;
+ uint32_t a2 = Rotate(Fetch(s + len - 16) * c1, 17) * c2;
+ uint32_t a3 = Rotate(Fetch(s + len - 12) * c1, 17) * c2;
+ uint32_t a4 = Rotate(Fetch(s + len - 20) * c1, 17) * c2;
+ h ^= a0;
+ h = Rotate(h, 19);
+ h = h * 5 + 0xe6546b64;
+ h ^= a2;
+ h = Rotate(h, 19);
+ h = h * 5 + 0xe6546b64;
+ g ^= a1;
+ g = Rotate(g, 19);
+ g = g * 5 + 0xe6546b64;
+ g ^= a3;
+ g = Rotate(g, 19);
+ g = g * 5 + 0xe6546b64;
+ f += a4;
+ f = Rotate(f, 19) + 113;
+ size_t iters = (len - 1) / 20;
+ do {
+ uint32_t a = Fetch(s);
+ uint32_t b = Fetch(s + 4);
+ uint32_t c = Fetch(s + 8);
+ uint32_t d = Fetch(s + 12);
+ uint32_t e = Fetch(s + 16);
+ h += a;
+ g += b;
+ f += c;
+ h = Mur(d, h) + e;
+ g = Mur(c, g) + a;
+ f = Mur(b + e * c1, f) + d;
+ f += g;
+ g += f;
+ s += 20;
+ } while (--iters != 0);
+ g = Rotate(g, 11) * c1;
+ g = Rotate(g, 17) * c1;
+ f = Rotate(f, 11) * c1;
+ f = Rotate(f, 17) * c1;
+ h = Rotate(h + g, 19);
+ h = h * 5 + 0xe6546b64;
+ h = Rotate(h, 17) * c1;
+ h = Rotate(h + f, 19);
+ h = h * 5 + 0xe6546b64;
+ h = Rotate(h, 17) * c1;
+ return h;
+}
+
+uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
+ if (len <= 24) {
+ if (len >= 13) return Hash32Len13to24(s, len, seed * c1);
+ else if (len >= 5) return Hash32Len5to12(s, len, seed);
+ else return Hash32Len0to4(s, len, seed);
+ }
+ uint32_t h = Hash32Len13to24(s, 24, seed ^ len);
+ return Mur(Hash32(s + 24, len - 24) + seed, h);
+}
+} // namespace farmhashmk
+namespace farmhashsu {
+#if !can_use_sse42 || !can_use_aesni
+
+uint32_t Hash32(const char *s, size_t len) {
+ FARMHASH_DIE_IF_MISCONFIGURED;
+ return s == NULL ? 0 : len;
+}
+
+uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
+ FARMHASH_DIE_IF_MISCONFIGURED;
+ return seed + Hash32(s, len);
+}
+
+#else
+
+#undef Fetch
+#define Fetch Fetch32
+
+#undef Rotate
+#define Rotate Rotate32
+
+#undef Bswap
+#define Bswap Bswap32
+
+// Helpers for data-parallel operations (4x 32-bits).
+STATIC_INLINE __m128i Add(__m128i x, __m128i y) { return _mm_add_epi32(x, y); }
+STATIC_INLINE __m128i Xor(__m128i x, __m128i y) { return _mm_xor_si128(x, y); }
+STATIC_INLINE __m128i Or(__m128i x, __m128i y) { return _mm_or_si128(x, y); }
+STATIC_INLINE __m128i Mul(__m128i x, __m128i y) { return _mm_mullo_epi32(x, y); }
+STATIC_INLINE __m128i Mul5(__m128i x) { return Add(x, _mm_slli_epi32(x, 2)); }
+STATIC_INLINE __m128i RotateLeft(__m128i x, int c) {
+ return Or(_mm_slli_epi32(x, c),
+ _mm_srli_epi32(x, 32 - c));
+}
+STATIC_INLINE __m128i Rol17(__m128i x) { return RotateLeft(x, 17); }
+STATIC_INLINE __m128i Rol19(__m128i x) { return RotateLeft(x, 19); }
+STATIC_INLINE __m128i Shuffle0321(__m128i x) {
+ return _mm_shuffle_epi32(x, (0 << 6) + (3 << 4) + (2 << 2) + (1 << 0));
+}
+
+uint32_t Hash32(const char *s, size_t len) {
+ const uint32_t seed = 81;
+ if (len <= 24) {
+ return len <= 12 ?
+ (len <= 4 ?
+ farmhashmk::Hash32Len0to4(s, len) :
+ farmhashmk::Hash32Len5to12(s, len)) :
+ farmhashmk::Hash32Len13to24(s, len);
+ }
+
+ if (len < 40) {
+ uint32_t a = len, b = seed * c2, c = a + b;
+ a += Fetch(s + len - 4);
+ b += Fetch(s + len - 20);
+ c += Fetch(s + len - 16);
+ uint32_t d = a;
+ a = NAMESPACE_FOR_HASH_FUNCTIONS::Rotate32(a, 21);
+ a = Mur(a, Mur(b, _mm_crc32_u32(c, d)));
+ a += Fetch(s + len - 12);
+ b += Fetch(s + len - 8);
+ d += a;
+ a += d;
+ b = Mur(b, d) * c2;
+ a = _mm_crc32_u32(a, b + c);
+ return farmhashmk::Hash32Len13to24(s, (len + 1) / 2, a) + b;
+ }
+
+#undef Mulc1
+#define Mulc1(x) Mul((x), cc1)
+
+#undef Mulc2
+#define Mulc2(x) Mul((x), cc2)
+
+#undef Murk
+#define Murk(a, h) \
+ Add(k, \
+ Mul5( \
+ Rol19( \
+ Xor( \
+ Mulc2( \
+ Rol17( \
+ Mulc1(a))), \
+ (h)))))
+
+ const __m128i cc1 = _mm_set1_epi32(c1);
+ const __m128i cc2 = _mm_set1_epi32(c2);
+ __m128i h = _mm_set1_epi32(seed);
+ __m128i g = _mm_set1_epi32(c1 * seed);
+ __m128i f = g;
+ __m128i k = _mm_set1_epi32(0xe6546b64);
+ __m128i q;
+ if (len < 80) {
+ __m128i a = Fetch128(s);
+ __m128i b = Fetch128(s + 16);
+ __m128i c = Fetch128(s + (len - 15) / 2);
+ __m128i d = Fetch128(s + len - 32);
+ __m128i e = Fetch128(s + len - 16);
+ h = Add(h, a);
+ g = Add(g, b);
+ q = g;
+ g = Shuffle0321(g);
+ f = Add(f, c);
+ __m128i be = Add(b, Mulc1(e));
+ h = Add(h, f);
+ f = Add(f, h);
+ h = Add(Murk(d, h), e);
+ k = Xor(k, _mm_shuffle_epi8(g, f));
+ g = Add(Xor(c, g), a);
+ f = Add(Xor(be, f), d);
+ k = Add(k, be);
+ k = Add(k, _mm_shuffle_epi8(f, h));
+ f = Add(f, g);
+ g = Add(g, f);
+ g = Add(_mm_set1_epi32(len), Mulc1(g));
+ } else {
+ // len >= 80
+ // The following is loosely modelled after farmhashmk::Hash32.
+ size_t iters = (len - 1) / 80;
+ len -= iters * 80;
+
+#undef Chunk
+#define Chunk() do { \
+ __m128i a = Fetch128(s); \
+ __m128i b = Fetch128(s + 16); \
+ __m128i c = Fetch128(s + 32); \
+ __m128i d = Fetch128(s + 48); \
+ __m128i e = Fetch128(s + 64); \
+ h = Add(h, a); \
+ g = Add(g, b); \
+ g = Shuffle0321(g); \
+ f = Add(f, c); \
+ __m128i be = Add(b, Mulc1(e)); \
+ h = Add(h, f); \
+ f = Add(f, h); \
+ h = Add(h, d); \
+ q = Add(q, e); \
+ h = Rol17(h); \
+ h = Mulc1(h); \
+ k = Xor(k, _mm_shuffle_epi8(g, f)); \
+ g = Add(Xor(c, g), a); \
+ f = Add(Xor(be, f), d); \
+ std::swap(f, q); \
+ q = _mm_aesimc_si128(q); \
+ k = Add(k, be); \
+ k = Add(k, _mm_shuffle_epi8(f, h)); \
+ f = Add(f, g); \
+ g = Add(g, f); \
+ f = Mulc1(f); \
+} while (0)
+
+ q = g;
+ while (iters-- != 0) {
+ Chunk();
+ s += 80;
+ }
+
+ if (len != 0) {
+ h = Add(h, _mm_set1_epi32(len));
+ s = s + len - 80;
+ Chunk();
+ }
+ }
+
+ g = Shuffle0321(g);
+ k = Xor(k, g);
+ k = Xor(k, q);
+ h = Xor(h, q);
+ f = Mulc1(f);
+ k = Mulc2(k);
+ g = Mulc1(g);
+ h = Mulc2(h);
+ k = Add(k, _mm_shuffle_epi8(g, f));
+ h = Add(h, f);
+ f = Add(f, h);
+ g = Add(g, k);
+ k = Add(k, g);
+ k = Xor(k, _mm_shuffle_epi8(f, h));
+ __m128i buf[4];
+ buf[0] = f;
+ buf[1] = g;
+ buf[2] = k;
+ buf[3] = h;
+ s = reinterpret_cast<char*>(buf);
+ uint32_t x = Fetch(s);
+ uint32_t y = Fetch(s+4);
+ uint32_t z = Fetch(s+8);
+ x = _mm_crc32_u32(x, Fetch(s+12));
+ y = _mm_crc32_u32(y, Fetch(s+16));
+ z = _mm_crc32_u32(z * c1, Fetch(s+20));
+ x = _mm_crc32_u32(x, Fetch(s+24));
+ y = _mm_crc32_u32(y * c1, Fetch(s+28));
+ uint32_t o = y;
+ z = _mm_crc32_u32(z, Fetch(s+32));
+ x = _mm_crc32_u32(x * c1, Fetch(s+36));
+ y = _mm_crc32_u32(y, Fetch(s+40));
+ z = _mm_crc32_u32(z * c1, Fetch(s+44));
+ x = _mm_crc32_u32(x, Fetch(s+48));
+ y = _mm_crc32_u32(y * c1, Fetch(s+52));
+ z = _mm_crc32_u32(z, Fetch(s+56));
+ x = _mm_crc32_u32(x, Fetch(s+60));
+ return (o - x + y - z) * c1;
+}
+
+#undef Chunk
+#undef Murk
+#undef Mulc2
+#undef Mulc1
+
+uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
+ if (len <= 24) {
+ if (len >= 13) return farmhashmk::Hash32Len13to24(s, len, seed * c1);
+ else if (len >= 5) return farmhashmk::Hash32Len5to12(s, len, seed);
+ else return farmhashmk::Hash32Len0to4(s, len, seed);
+ }
+ uint32_t h = farmhashmk::Hash32Len13to24(s, 24, seed ^ len);
+ return _mm_crc32_u32(Hash32(s + 24, len - 24) + seed, h);
+}
+
+#endif
+} // namespace farmhashsu
+namespace farmhashsa {
+#if !can_use_sse42
+
+uint32_t Hash32(const char *s, size_t len) {
+ FARMHASH_DIE_IF_MISCONFIGURED;
+ return s == NULL ? 0 : len;
+}
+
+uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
+ FARMHASH_DIE_IF_MISCONFIGURED;
+ return seed + Hash32(s, len);
+}
+
+#else
+
+#undef Fetch
+#define Fetch Fetch32
+
+#undef Rotate
+#define Rotate Rotate32
+
+#undef Bswap
+#define Bswap Bswap32
+
+// Helpers for data-parallel operations (4x 32-bits).
+STATIC_INLINE __m128i Add(__m128i x, __m128i y) { return _mm_add_epi32(x, y); }
+STATIC_INLINE __m128i Xor(__m128i x, __m128i y) { return _mm_xor_si128(x, y); }
+STATIC_INLINE __m128i Or(__m128i x, __m128i y) { return _mm_or_si128(x, y); }
+STATIC_INLINE __m128i Mul(__m128i x, __m128i y) { return _mm_mullo_epi32(x, y); }
+STATIC_INLINE __m128i Mul5(__m128i x) { return Add(x, _mm_slli_epi32(x, 2)); }
+STATIC_INLINE __m128i Rotate(__m128i x, int c) {
+ return Or(_mm_slli_epi32(x, c),
+ _mm_srli_epi32(x, 32 - c));
+}
+STATIC_INLINE __m128i Rot17(__m128i x) { return Rotate(x, 17); }
+STATIC_INLINE __m128i Rot19(__m128i x) { return Rotate(x, 19); }
+STATIC_INLINE __m128i Shuffle0321(__m128i x) {
+ return _mm_shuffle_epi32(x, (0 << 6) + (3 << 4) + (2 << 2) + (1 << 0));
+}
+
+uint32_t Hash32(const char *s, size_t len) {
+ const uint32_t seed = 81;
+ if (len <= 24) {
+ return len <= 12 ?
+ (len <= 4 ?
+ farmhashmk::Hash32Len0to4(s, len) :
+ farmhashmk::Hash32Len5to12(s, len)) :
+ farmhashmk::Hash32Len13to24(s, len);
+ }
+
+ if (len < 40) {
+ uint32_t a = len, b = seed * c2, c = a + b;
+ a += Fetch(s + len - 4);
+ b += Fetch(s + len - 20);
+ c += Fetch(s + len - 16);
+ uint32_t d = a;
+ a = NAMESPACE_FOR_HASH_FUNCTIONS::Rotate32(a, 21);
+ a = Mur(a, Mur(b, Mur(c, d)));
+ a += Fetch(s + len - 12);
+ b += Fetch(s + len - 8);
+ d += a;
+ a += d;
+ b = Mur(b, d) * c2;
+ a = _mm_crc32_u32(a, b + c);
+ return farmhashmk::Hash32Len13to24(s, (len + 1) / 2, a) + b;
+ }
+
+#undef Mulc1
+#define Mulc1(x) Mul((x), cc1)
+
+#undef Mulc2
+#define Mulc2(x) Mul((x), cc2)
+
+#undef Murk
+#define Murk(a, h) \
+ Add(k, \
+ Mul5( \
+ Rot19( \
+ Xor( \
+ Mulc2( \
+ Rot17( \
+ Mulc1(a))), \
+ (h)))))
+
+ const __m128i cc1 = _mm_set1_epi32(c1);
+ const __m128i cc2 = _mm_set1_epi32(c2);
+ __m128i h = _mm_set1_epi32(seed);
+ __m128i g = _mm_set1_epi32(c1 * seed);
+ __m128i f = g;
+ __m128i k = _mm_set1_epi32(0xe6546b64);
+ if (len < 80) {
+ __m128i a = Fetch128(s);
+ __m128i b = Fetch128(s + 16);
+ __m128i c = Fetch128(s + (len - 15) / 2);
+ __m128i d = Fetch128(s + len - 32);
+ __m128i e = Fetch128(s + len - 16);
+ h = Add(h, a);
+ g = Add(g, b);
+ g = Shuffle0321(g);
+ f = Add(f, c);
+ __m128i be = Add(b, Mulc1(e));
+ h = Add(h, f);
+ f = Add(f, h);
+ h = Add(Murk(d, h), e);
+ k = Xor(k, _mm_shuffle_epi8(g, f));
+ g = Add(Xor(c, g), a);
+ f = Add(Xor(be, f), d);
+ k = Add(k, be);
+ k = Add(k, _mm_shuffle_epi8(f, h));
+ f = Add(f, g);
+ g = Add(g, f);
+ g = Add(_mm_set1_epi32(len), Mulc1(g));
+ } else {
+ // len >= 80
+ // The following is loosely modelled after farmhashmk::Hash32.
+ size_t iters = (len - 1) / 80;
+ len -= iters * 80;
+
+#undef Chunk
+#define Chunk() do { \
+ __m128i a = Fetch128(s); \
+ __m128i b = Fetch128(s + 16); \
+ __m128i c = Fetch128(s + 32); \
+ __m128i d = Fetch128(s + 48); \
+ __m128i e = Fetch128(s + 64); \
+ h = Add(h, a); \
+ g = Add(g, b); \
+ g = Shuffle0321(g); \
+ f = Add(f, c); \
+ __m128i be = Add(b, Mulc1(e)); \
+ h = Add(h, f); \
+ f = Add(f, h); \
+ h = Add(Murk(d, h), e); \
+ k = Xor(k, _mm_shuffle_epi8(g, f)); \
+ g = Add(Xor(c, g), a); \
+ f = Add(Xor(be, f), d); \
+ k = Add(k, be); \
+ k = Add(k, _mm_shuffle_epi8(f, h)); \
+ f = Add(f, g); \
+ g = Add(g, f); \
+ f = Mulc1(f); \
+} while (0)
+
+ while (iters-- != 0) {
+ Chunk();
+ s += 80;
+ }
+
+ if (len != 0) {
+ h = Add(h, _mm_set1_epi32(len));
+ s = s + len - 80;
+ Chunk();
+ }
+ }
+
+ g = Shuffle0321(g);
+ k = Xor(k, g);
+ f = Mulc1(f);
+ k = Mulc2(k);
+ g = Mulc1(g);
+ h = Mulc2(h);
+ k = Add(k, _mm_shuffle_epi8(g, f));
+ h = Add(h, f);
+ f = Add(f, h);
+ g = Add(g, k);
+ k = Add(k, g);
+ k = Xor(k, _mm_shuffle_epi8(f, h));
+ __m128i buf[4];
+ buf[0] = f;
+ buf[1] = g;
+ buf[2] = k;
+ buf[3] = h;
+ s = reinterpret_cast<char*>(buf);
+ uint32_t x = Fetch(s);
+ uint32_t y = Fetch(s+4);
+ uint32_t z = Fetch(s+8);
+ x = _mm_crc32_u32(x, Fetch(s+12));
+ y = _mm_crc32_u32(y, Fetch(s+16));
+ z = _mm_crc32_u32(z * c1, Fetch(s+20));
+ x = _mm_crc32_u32(x, Fetch(s+24));
+ y = _mm_crc32_u32(y * c1, Fetch(s+28));
+ uint32_t o = y;
+ z = _mm_crc32_u32(z, Fetch(s+32));
+ x = _mm_crc32_u32(x * c1, Fetch(s+36));
+ y = _mm_crc32_u32(y, Fetch(s+40));
+ z = _mm_crc32_u32(z * c1, Fetch(s+44));
+ x = _mm_crc32_u32(x, Fetch(s+48));
+ y = _mm_crc32_u32(y * c1, Fetch(s+52));
+ z = _mm_crc32_u32(z, Fetch(s+56));
+ x = _mm_crc32_u32(x, Fetch(s+60));
+ return (o - x + y - z) * c1;
+}
+
+#undef Chunk
+#undef Murk
+#undef Mulc2
+#undef Mulc1
+
+uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
+ if (len <= 24) {
+ if (len >= 13) return farmhashmk::Hash32Len13to24(s, len, seed * c1);
+ else if (len >= 5) return farmhashmk::Hash32Len5to12(s, len, seed);
+ else return farmhashmk::Hash32Len0to4(s, len, seed);
+ }
+ uint32_t h = farmhashmk::Hash32Len13to24(s, 24, seed ^ len);
+ return _mm_crc32_u32(Hash32(s + 24, len - 24) + seed, h);
+}
+
+#endif
+} // namespace farmhashsa
+namespace farmhashcc {
+// This file provides a 32-bit hash equivalent to CityHash32 (v1.1.1)
+// and a 128-bit hash equivalent to CityHash128 (v1.1.1). It also provides
+// a seeded 32-bit hash function similar to CityHash32.
+
+#undef Fetch
+#define Fetch Fetch32
+
+#undef Rotate
+#define Rotate Rotate32
+
+#undef Bswap
+#define Bswap Bswap32
+
+STATIC_INLINE uint32_t Hash32Len13to24(const char *s, size_t len) {
+ uint32_t a = Fetch(s - 4 + (len >> 1));
+ uint32_t b = Fetch(s + 4);
+ uint32_t c = Fetch(s + len - 8);
+ uint32_t d = Fetch(s + (len >> 1));
+ uint32_t e = Fetch(s);
+ uint32_t f = Fetch(s + len - 4);
+ uint32_t h = len;
+
+ return fmix(Mur(f, Mur(e, Mur(d, Mur(c, Mur(b, Mur(a, h)))))));
+}
+
+STATIC_INLINE uint32_t Hash32Len0to4(const char *s, size_t len) {
+ uint32_t b = 0;
+ uint32_t c = 9;
+ for (size_t i = 0; i < len; i++) {
+ signed char v = s[i];
+ b = b * c1 + v;
+ c ^= b;
+ }
+ return fmix(Mur(b, Mur(len, c)));
+}
+
+STATIC_INLINE uint32_t Hash32Len5to12(const char *s, size_t len) {
+ uint32_t a = len, b = len * 5, c = 9, d = b;
+ a += Fetch(s);
+ b += Fetch(s + len - 4);
+ c += Fetch(s + ((len >> 1) & 4));
+ return fmix(Mur(c, Mur(b, Mur(a, d))));
+}
+
Y_PRAGMA_DIAGNOSTIC_PUSH
Y_PRAGMA_NO_WSHADOW
-uint32_t Hash32(const char *s, size_t len) {
- if (len <= 24) {
- return len <= 12 ?
- (len <= 4 ? Hash32Len0to4(s, len) : Hash32Len5to12(s, len)) :
- Hash32Len13to24(s, len);
- }
-
- // len > 24
- uint32_t h = len, g = c1 * len, f = g;
- uint32_t a0 = Rotate(Fetch(s + len - 4) * c1, 17) * c2;
- uint32_t a1 = Rotate(Fetch(s + len - 8) * c1, 17) * c2;
- uint32_t a2 = Rotate(Fetch(s + len - 16) * c1, 17) * c2;
- uint32_t a3 = Rotate(Fetch(s + len - 12) * c1, 17) * c2;
- uint32_t a4 = Rotate(Fetch(s + len - 20) * c1, 17) * c2;
- h ^= a0;
- h = Rotate(h, 19);
- h = h * 5 + 0xe6546b64;
- h ^= a2;
- h = Rotate(h, 19);
- h = h * 5 + 0xe6546b64;
- g ^= a1;
- g = Rotate(g, 19);
- g = g * 5 + 0xe6546b64;
- g ^= a3;
- g = Rotate(g, 19);
- g = g * 5 + 0xe6546b64;
- f += a4;
- f = Rotate(f, 19);
- f = f * 5 + 0xe6546b64;
- size_t iters = (len - 1) / 20;
- do {
- uint32_t a0 = Rotate(Fetch(s) * c1, 17) * c2;
- uint32_t a1 = Fetch(s + 4);
- uint32_t a2 = Rotate(Fetch(s + 8) * c1, 17) * c2;
- uint32_t a3 = Rotate(Fetch(s + 12) * c1, 17) * c2;
- uint32_t a4 = Fetch(s + 16);
- h ^= a0;
- h = Rotate(h, 18);
- h = h * 5 + 0xe6546b64;
- f += a1;
- f = Rotate(f, 19);
- f = f * c1;
- g += a2;
- g = Rotate(g, 18);
- g = g * 5 + 0xe6546b64;
- h ^= a3 + a1;
- h = Rotate(h, 19);
- h = h * 5 + 0xe6546b64;
- g ^= a4;
- g = Bswap(g) * 5;
- h += a4 * 5;
- h = Bswap(h);
- f += a0;
- PERMUTE3(f, h, g);
- s += 20;
- } while (--iters != 0);
- g = Rotate(g, 11) * c1;
- g = Rotate(g, 17) * c1;
- f = Rotate(f, 11) * c1;
- f = Rotate(f, 17) * c1;
- h = Rotate(h + g, 19);
- h = h * 5 + 0xe6546b64;
- h = Rotate(h, 17) * c1;
- h = Rotate(h + f, 19);
- h = h * 5 + 0xe6546b64;
- h = Rotate(h, 17) * c1;
- return h;
-}
+uint32_t Hash32(const char *s, size_t len) {
+ if (len <= 24) {
+ return len <= 12 ?
+ (len <= 4 ? Hash32Len0to4(s, len) : Hash32Len5to12(s, len)) :
+ Hash32Len13to24(s, len);
+ }
+
+ // len > 24
+ uint32_t h = len, g = c1 * len, f = g;
+ uint32_t a0 = Rotate(Fetch(s + len - 4) * c1, 17) * c2;
+ uint32_t a1 = Rotate(Fetch(s + len - 8) * c1, 17) * c2;
+ uint32_t a2 = Rotate(Fetch(s + len - 16) * c1, 17) * c2;
+ uint32_t a3 = Rotate(Fetch(s + len - 12) * c1, 17) * c2;
+ uint32_t a4 = Rotate(Fetch(s + len - 20) * c1, 17) * c2;
+ h ^= a0;
+ h = Rotate(h, 19);
+ h = h * 5 + 0xe6546b64;
+ h ^= a2;
+ h = Rotate(h, 19);
+ h = h * 5 + 0xe6546b64;
+ g ^= a1;
+ g = Rotate(g, 19);
+ g = g * 5 + 0xe6546b64;
+ g ^= a3;
+ g = Rotate(g, 19);
+ g = g * 5 + 0xe6546b64;
+ f += a4;
+ f = Rotate(f, 19);
+ f = f * 5 + 0xe6546b64;
+ size_t iters = (len - 1) / 20;
+ do {
+ uint32_t a0 = Rotate(Fetch(s) * c1, 17) * c2;
+ uint32_t a1 = Fetch(s + 4);
+ uint32_t a2 = Rotate(Fetch(s + 8) * c1, 17) * c2;
+ uint32_t a3 = Rotate(Fetch(s + 12) * c1, 17) * c2;
+ uint32_t a4 = Fetch(s + 16);
+ h ^= a0;
+ h = Rotate(h, 18);
+ h = h * 5 + 0xe6546b64;
+ f += a1;
+ f = Rotate(f, 19);
+ f = f * c1;
+ g += a2;
+ g = Rotate(g, 18);
+ g = g * 5 + 0xe6546b64;
+ h ^= a3 + a1;
+ h = Rotate(h, 19);
+ h = h * 5 + 0xe6546b64;
+ g ^= a4;
+ g = Bswap(g) * 5;
+ h += a4 * 5;
+ h = Bswap(h);
+ f += a0;
+ PERMUTE3(f, h, g);
+ s += 20;
+ } while (--iters != 0);
+ g = Rotate(g, 11) * c1;
+ g = Rotate(g, 17) * c1;
+ f = Rotate(f, 11) * c1;
+ f = Rotate(f, 17) * c1;
+ h = Rotate(h + g, 19);
+ h = h * 5 + 0xe6546b64;
+ h = Rotate(h, 17) * c1;
+ h = Rotate(h + f, 19);
+ h = h * 5 + 0xe6546b64;
+ h = Rotate(h, 17) * c1;
+ return h;
+}
Y_PRAGMA_DIAGNOSTIC_POP
-
-uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
- if (len <= 24) {
- if (len >= 13) return farmhashmk::Hash32Len13to24(s, len, seed * c1);
- else if (len >= 5) return farmhashmk::Hash32Len5to12(s, len, seed);
- else return farmhashmk::Hash32Len0to4(s, len, seed);
- }
- uint32_t h = farmhashmk::Hash32Len13to24(s, 24, seed ^ len);
- return Mur(Hash32(s + 24, len - 24) + seed, h);
-}
-
-#undef Fetch
-#define Fetch Fetch64
-
-#undef Rotate
-#define Rotate Rotate64
-
-#undef Bswap
-#define Bswap Bswap64
-
-STATIC_INLINE uint64_t ShiftMix(uint64_t val) {
- return val ^ (val >> 47);
-}
-
-STATIC_INLINE uint64_t HashLen16(uint64_t u, uint64_t v) {
- return Hash128to64(Uint128(u, v));
-}
-
-STATIC_INLINE uint64_t HashLen16(uint64_t u, uint64_t v, uint64_t mul) {
- // Murmur-inspired hashing.
- uint64_t a = (u ^ v) * mul;
- a ^= (a >> 47);
- uint64_t b = (v ^ a) * mul;
- b ^= (b >> 47);
- b *= mul;
- return b;
-}
-
-STATIC_INLINE uint64_t HashLen0to16(const char *s, size_t len) {
- if (len >= 8) {
- uint64_t mul = k2 + len * 2;
- uint64_t a = Fetch(s) + k2;
- uint64_t b = Fetch(s + len - 8);
- uint64_t c = Rotate(b, 37) * mul + a;
- uint64_t d = (Rotate(a, 25) + b) * mul;
- return HashLen16(c, d, mul);
- }
- if (len >= 4) {
- uint64_t mul = k2 + len * 2;
- uint64_t a = Fetch32(s);
- return HashLen16(len + (a << 3), Fetch32(s + len - 4), mul);
- }
- if (len > 0) {
- uint8_t a = s[0];
- uint8_t b = s[len >> 1];
- uint8_t c = s[len - 1];
- uint32_t y = static_cast<uint32_t>(a) + (static_cast<uint32_t>(b) << 8);
- uint32_t z = len + (static_cast<uint32_t>(c) << 2);
- return ShiftMix(y * k2 ^ z * k0) * k2;
- }
- return k2;
-}
-
-// Return a 16-byte hash for 48 bytes. Quick and dirty.
-// Callers do best to use "random-looking" values for a and b.
-STATIC_INLINE pair<uint64_t, uint64_t> WeakHashLen32WithSeeds(
- uint64_t w, uint64_t x, uint64_t y, uint64_t z, uint64_t a, uint64_t b) {
- a += w;
- b = Rotate(b + a + z, 21);
- uint64_t c = a;
- a += x;
- a += y;
- b += Rotate(a, 44);
- return make_pair(a + z, b + c);
-}
-
-// Return a 16-byte hash for s[0] ... s[31], a, and b. Quick and dirty.
-STATIC_INLINE pair<uint64_t, uint64_t> WeakHashLen32WithSeeds(
- const char* s, uint64_t a, uint64_t b) {
- return WeakHashLen32WithSeeds(Fetch(s),
- Fetch(s + 8),
- Fetch(s + 16),
- Fetch(s + 24),
- a,
- b);
-}
-
-
-
-// A subroutine for CityHash128(). Returns a decent 128-bit hash for strings
-// of any length representable in signed long. Based on City and Murmur.
-STATIC_INLINE uint128_t CityMurmur(const char *s, size_t len, uint128_t seed) {
- uint64_t a = Uint128Low64(seed);
- uint64_t b = Uint128High64(seed);
- uint64_t c = 0;
- uint64_t d = 0;
- signed long l = len - 16;
- if (l <= 0) { // len <= 16
- a = ShiftMix(a * k1) * k1;
- c = b * k1 + HashLen0to16(s, len);
- d = ShiftMix(a + (len >= 8 ? Fetch(s) : c));
- } else { // len > 16
- c = HashLen16(Fetch(s + len - 8) + k1, a);
- d = HashLen16(b + len, c + Fetch(s + len - 16));
- a += d;
- do {
- a ^= ShiftMix(Fetch(s) * k1) * k1;
- a *= k1;
- b ^= a;
- c ^= ShiftMix(Fetch(s + 8) * k1) * k1;
- c *= k1;
- d ^= c;
- s += 16;
- l -= 16;
- } while (l > 0);
- }
- a = HashLen16(a, c);
- b = HashLen16(d, b);
- return Uint128(a ^ b, HashLen16(b, a));
-}
-
-uint128_t CityHash128WithSeed(const char *s, size_t len, uint128_t seed) {
- if (len < 128) {
- return CityMurmur(s, len, seed);
- }
-
- // We expect len >= 128 to be the common case. Keep 56 bytes of state:
- // v, w, x, y, and z.
- pair<uint64_t, uint64_t> v, w;
- uint64_t x = Uint128Low64(seed);
- uint64_t y = Uint128High64(seed);
- uint64_t z = len * k1;
- v.first = Rotate(y ^ k1, 49) * k1 + Fetch(s);
- v.second = Rotate(v.first, 42) * k1 + Fetch(s + 8);
- w.first = Rotate(y + z, 35) * k1 + x;
- w.second = Rotate(x + Fetch(s + 88), 53) * k1;
-
- // This is the same inner loop as CityHash64(), manually unrolled.
- do {
- x = Rotate(x + y + v.first + Fetch(s + 8), 37) * k1;
- y = Rotate(y + v.second + Fetch(s + 48), 42) * k1;
- x ^= w.second;
- y += v.first + Fetch(s + 40);
- z = Rotate(z + w.first, 33) * k1;
- v = WeakHashLen32WithSeeds(s, v.second * k1, x + w.first);
- w = WeakHashLen32WithSeeds(s + 32, z + w.second, y + Fetch(s + 16));
- std::swap(z, x);
- s += 64;
- x = Rotate(x + y + v.first + Fetch(s + 8), 37) * k1;
- y = Rotate(y + v.second + Fetch(s + 48), 42) * k1;
- x ^= w.second;
- y += v.first + Fetch(s + 40);
- z = Rotate(z + w.first, 33) * k1;
- v = WeakHashLen32WithSeeds(s, v.second * k1, x + w.first);
- w = WeakHashLen32WithSeeds(s + 32, z + w.second, y + Fetch(s + 16));
- std::swap(z, x);
- s += 64;
- len -= 128;
- } while (LIKELY(len >= 128));
- x += Rotate(v.first + z, 49) * k0;
- y = y * k0 + Rotate(w.second, 37);
- z = z * k0 + Rotate(w.first, 27);
- w.first *= 9;
- v.first *= k0;
- // If 0 < len < 128, hash up to 4 chunks of 32 bytes each from the end of s.
- for (size_t tail_done = 0; tail_done < len; ) {
- tail_done += 32;
- y = Rotate(x + y, 42) * k0 + v.second;
- w.first += Fetch(s + len - tail_done + 16);
- x = x * k0 + w.first;
- z += w.second + Fetch(s + len - tail_done);
- w.second += v.first;
- v = WeakHashLen32WithSeeds(s + len - tail_done, v.first + z, v.second);
- v.first *= k0;
- }
- // At this point our 56 bytes of state should contain more than
- // enough information for a strong 128-bit hash. We use two
- // different 56-byte-to-8-byte hashes to get a 16-byte final result.
- x = HashLen16(x, v.first);
- y = HashLen16(y + z, w.first);
- return Uint128(HashLen16(x + v.second, w.second) + y,
- HashLen16(x + w.second, y + v.second));
-}
-
-STATIC_INLINE uint128_t CityHash128(const char *s, size_t len) {
- return len >= 16 ?
- CityHash128WithSeed(s + 16, len - 16,
- Uint128(Fetch(s), Fetch(s + 8) + k0)) :
- CityHash128WithSeed(s, len, Uint128(k0, k1));
-}
-
-uint128_t Fingerprint128(const char* s, size_t len) {
- return CityHash128(s, len);
-}
-} // namespace farmhashcc
-namespace NAMESPACE_FOR_HASH_FUNCTIONS {
-
-// BASIC STRING HASHING
-
-// Hash function for a byte array. See also Hash(), below.
-// May change from time to time, may differ on different platforms, may differ
-// depending on NDEBUG.
-uint32_t Hash32(const char* s, size_t len) {
- return DebugTweak(
- (can_use_sse41 & x86_64) ? farmhashnt::Hash32(s, len) :
- (can_use_sse42 & can_use_aesni) ? farmhashsu::Hash32(s, len) :
- can_use_sse42 ? farmhashsa::Hash32(s, len) :
- farmhashmk::Hash32(s, len));
-}
-
-// Hash function for a byte array. For convenience, a 32-bit seed is also
-// hashed into the result.
-// May change from time to time, may differ on different platforms, may differ
-// depending on NDEBUG.
-uint32_t Hash32WithSeed(const char* s, size_t len, uint32_t seed) {
- return DebugTweak(
- (can_use_sse41 & x86_64) ? farmhashnt::Hash32WithSeed(s, len, seed) :
- (can_use_sse42 & can_use_aesni) ? farmhashsu::Hash32WithSeed(s, len, seed) :
- can_use_sse42 ? farmhashsa::Hash32WithSeed(s, len, seed) :
- farmhashmk::Hash32WithSeed(s, len, seed));
-}
-
-// Hash function for a byte array. For convenience, a 64-bit seed is also
-// hashed into the result. See also Hash(), below.
-// May change from time to time, may differ on different platforms, may differ
-// depending on NDEBUG.
-uint64_t Hash64(const char* s, size_t len) {
- return DebugTweak(
- (can_use_sse42 & x86_64) ?
- farmhashte::Hash64(s, len) :
- farmhashxo::Hash64(s, len));
-}
-
-// Hash function for a byte array.
-// May change from time to time, may differ on different platforms, may differ
-// depending on NDEBUG.
-size_t Hash(const char* s, size_t len) {
- return sizeof(size_t) == 8 ? Hash64(s, len) : Hash32(s, len);
-}
-
-// Hash function for a byte array. For convenience, a 64-bit seed is also
-// hashed into the result.
-// May change from time to time, may differ on different platforms, may differ
-// depending on NDEBUG.
-uint64_t Hash64WithSeed(const char* s, size_t len, uint64_t seed) {
- return DebugTweak(farmhashna::Hash64WithSeed(s, len, seed));
-}
-
-// Hash function for a byte array. For convenience, two seeds are also
-// hashed into the result.
-// May change from time to time, may differ on different platforms, may differ
-// depending on NDEBUG.
-uint64_t Hash64WithSeeds(const char* s, size_t len, uint64_t seed0, uint64_t seed1) {
- return DebugTweak(farmhashna::Hash64WithSeeds(s, len, seed0, seed1));
-}
-
-// Hash function for a byte array.
-// May change from time to time, may differ on different platforms, may differ
-// depending on NDEBUG.
-uint128_t Hash128(const char* s, size_t len) {
- return DebugTweak(farmhashcc::Fingerprint128(s, len));
-}
-
-// Hash function for a byte array. For convenience, a 128-bit seed is also
-// hashed into the result.
-// May change from time to time, may differ on different platforms, may differ
-// depending on NDEBUG.
-uint128_t Hash128WithSeed(const char* s, size_t len, uint128_t seed) {
- return DebugTweak(farmhashcc::CityHash128WithSeed(s, len, seed));
-}
-
-// BASIC NON-STRING HASHING
-
-// FINGERPRINTING (i.e., good, portable, forever-fixed hash functions)
-
-// Fingerprint function for a byte array. Most useful in 32-bit binaries.
-uint32_t Fingerprint32(const char* s, size_t len) {
- return farmhashmk::Hash32(s, len);
-}
-
-// Fingerprint function for a byte array.
-uint64_t Fingerprint64(const char* s, size_t len) {
- return farmhashna::Hash64(s, len);
-}
-
-// Fingerprint function for a byte array.
-uint128_t Fingerprint128(const char* s, size_t len) {
- return farmhashcc::Fingerprint128(s, len);
-}
-
-// Older and still available but perhaps not as fast as the above:
-// farmhashns::Hash32{,WithSeed}()
-
-} // namespace NAMESPACE_FOR_HASH_FUNCTIONS
-
-#if FARMHASHSELFTEST
-
-#ifndef FARMHASH_SELF_TEST_GUARD
-#define FARMHASH_SELF_TEST_GUARD
-#include <cstdio>
-#include <iostream>
-#include <string.h>
-
-using std::cout;
-using std::cerr;
-using std::endl;
-using std::hex;
-
-static const uint64_t kSeed0 = 1234567;
-static const uint64_t kSeed1 = k0;
-static const int kDataSize = 1 << 20;
-static const int kTestSize = 300;
-#define kSeed128 Uint128(kSeed0, kSeed1)
-
-static char data[kDataSize];
-
-static int completed_self_tests = 0;
-static int errors = 0;
-
-// Initialize data to pseudorandom values.
-void Setup() {
- if (completed_self_tests == 0) {
- uint64_t a = 9;
- uint64_t b = 777;
- for (int i = 0; i < kDataSize; i++) {
- a += b;
- b += a;
- a = (a ^ (a >> 41)) * k0;
- b = (b ^ (b >> 41)) * k0 + i;
- uint8_t u = b >> 37;
- memcpy(data + i, &u, 1); // uint8_t -> char
- }
- }
-}
-
-int NoteErrors() {
-#define NUM_SELF_TESTS 9
- if (++completed_self_tests == NUM_SELF_TESTS)
- std::exit(errors > 0);
- return errors;
-}
-
-template <typename T> inline bool IsNonZero(T x) {
- return x != 0;
-}
-
-template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
- return x != Uint128(0, 0);
-}
-
-#endif // FARMHASH_SELF_TEST_GUARD
-
-namespace farmhashccTest {
-
-uint32_t CreateSeed(int offset, int salt) {
- uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h += static_cast<uint32_t>(offset & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- return h;
-}
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-#define SEED CreateSeed(offset, -1)
-#define SEED0 CreateSeed(offset, 0)
-#define SEED1 CreateSeed(offset, 1)
-
-#undef TESTING
-#define TESTING 1
-#if TESTING
-uint32_t expected[] = {
-4223616069u,
-3696677242u,
-1039179260u, 1690343979u, 1018511555u, 2464489001u,
-20368522u, 2663783964u, 175201532u, 1619210592u,
-4081014168u,
-2576519988u,
-3285042206u, 502478099u, 739479538u, 1500332790u,
-13754768u, 3789353455u, 3473868058u, 1909255088u,
-2212771159u,
-1112731063u,
-826915357u, 2893489933u, 118369799u, 1848668220u,
-1308219822u, 249416982u, 64306364u, 4221800195u,
-1020067935u,
-3955445564u,
-563346294u, 550236731u, 2339016688u, 1826259714u,
-3872358639u, 2295981050u, 1870005390u, 4015628802u,
-1451961420u,
-653440099u,
-1292493871u, 164377749u, 1717712483u, 463414587u,
-3924343675u, 1050492084u, 3566618804u, 2046983362u,
-31917516u,
-2957164615u,
-230718965u, 999595115u, 3534822176u, 2175709186u,
-965707431u, 441796222u, 2481718051u, 1827777486u,
-2590087362u,
-3879448744u,
-3515079898u, 1601433082u, 982764532u, 254808716u,
-1293372530u, 4205605817u, 947001462u, 1138890052u,
-176305566u,
-2447367541u,
-2973802542u, 4123621138u, 3083865840u, 1706367795u,
-792114347u, 2880110657u, 440613768u, 195054868u,
-1359016305u,
-3363804638u,
-649488537u, 1624045597u, 1441938215u, 3147758996u,
-3199173578u, 2597283203u, 2191333609u, 3763129144u,
-1117290165u,
-1062549743u,
-2565615889u, 1046361554u, 1581968261u, 1058773671u,
-1123053168u, 3807622275u, 1486749916u, 3900816089u,
-2437877004u,
-1894455839u,
-1912520953u, 1914997013u, 561048608u, 1643267444u,
-3671572006u, 194811086u, 1468911468u, 2179206286u,
-673206794u,
-3486923651u,
-3741426466u, 3292160512u, 697001377u, 1900763774u,
-3726097344u, 629282039u, 3578723715u, 2868028489u,
-3269862919u,
-2303349487u,
-3643953525u, 2307255916u, 849996280u, 732080434u,
-909961480u, 3542445214u, 2628347095u, 4236856917u,
-1380660650u,
-2631821908u,
-2007289004u, 3509705198u, 3788541675u, 789457322u,
-3090670546u, 638977894u, 3503881773u, 947102987u,
-1525325287u,
-1816697045u,
-2706647405u, 288763142u, 3505438495u, 481308609u,
-2882636782u, 3745162621u, 3503467033u, 428247823u,
-176408838u,
-333551502u,
-1001068721u, 1681483651u, 75380831u, 4191469679u,
-3627361839u, 2736617386u, 3120737438u, 1297502456u,
-864896482u,
-85674920u,
-2886047255u, 4119881331u, 2496990525u, 3442502055u,
-1806582817u, 3186345024u, 4099591287u, 2560171465u,
-3489229104u,
-3065015872u,
-2755089808u, 3098442882u, 378524719u, 2664097023u,
-1771960725u, 2901182183u, 55258521u, 1266621443u,
-581644891u,
-37790450u,
-1800731704u, 3601350920u, 53428754u, 2759476837u,
-3391093099u, 1496510311u, 2511119507u, 2636877410u,
-631613207u,
-1573846064u,
-260484875u, 1088212603u, 2369525206u, 322522428u,
-3191396600u, 2076543340u, 1552496658u, 2739811558u,
-3867875546u,
-2051584261u,
-2126250818u, 901517871u, 3651631165u, 1323139145u,
-1521111765u, 477802997u, 3508559783u, 383954241u,
-3804516756u,
-4250206331u,
-2655954340u, 2484996477u, 1417544845u, 1520282298u,
-2745204366u, 2869345147u, 1872738335u, 2592877343u,
-1619744564u,
-1804962124u,
-3458679890u, 423948620u, 273645618u, 4187865426u,
-376057175u, 2943431463u, 3581950599u, 1035398331u,
-1088213445u,
-861988903u,
-1323370244u, 777069428u, 506235917u, 369720851u,
-2789995854u, 230915180u, 1505086948u, 940361236u,
-3727873235u,
-1159167499u,
-1860302871u, 3456858862u, 3923555152u, 2131072714u,
-2910461068u, 3671950363u, 2010742682u, 4088068851u,
-3616470388u,
-2087714788u,
-221675509u, 1230154072u, 3450704646u, 1463226695u,
-1998357699u, 266026801u, 619568740u, 3560427266u,
-4148162586u,
-3150417316u,
-1356375822u, 2056097622u, 627905802u, 3881675638u,
-2309738053u, 971916703u, 3447805361u, 1673575328u,
-673084328u,
-3317849401u,
-2836362782u, 2377208890u, 3275350588u, 158350552u,
-2553241779u, 2497264995u, 3262882649u, 3897937187u,
-1598963653u,
-3068514414u,
-601541505u, 374517071u, 3380795976u, 235752573u,
-284670003u, 2990192160u, 904937105u, 2306579150u,
-2117362589u,
-1635274830u,
-3355572906u, 170799903u, 1226685528u, 664567688u,
-413219134u, 878324258u, 4026159448u, 3620649295u,
-1823625377u,
-3175888439u,
-1759344347u, 2640637095u, 3549558u, 2192984935u,
-978623493u, 804017880u, 3877562323u, 3843116489u,
-1641748342u,
-1853539444u,
-3001178468u, 3443560727u, 2685426077u, 1653064722u,
-349231508u, 2726789654u, 3136215581u, 768402830u,
-269384321u,
-531936536u,
-2592883487u, 1343156334u, 3628619802u, 1477143570u,
-4269458419u, 3285611028u, 959104925u, 2712290710u,
-3480237248u,
-835796333u,
-2020636251u, 1191914589u, 126521603u, 4288023938u,
-3731699932u, 2136758855u, 985780142u, 193807575u,
-1850544433u,
-653947619u,
-3929316796u, 381871169u, 950486363u, 1787262279u,
-360480382u, 1800636585u, 1039258631u, 3682073259u,
-1262819303u,
-1786000319u,
-1570627191u, 893065837u, 301304916u, 1478469809u,
-623018819u, 2742232545u, 2058913014u, 1706060059u,
-2421125401u,
-1315829592u,
-3208766775u, 1805586156u, 575853086u, 3085025513u,
-4010908260u, 2344058256u, 3814407434u, 1458485673u,
-2474514786u,
-3581895658u,
-2710719679u, 190812706u, 2135454262u, 2620080728u,
-3400757986u, 1669914857u, 1559978393u, 1629811331u,
-3096616493u,
-1391424435u,
-4158376003u, 1015657076u, 794783832u, 479952178u,
-1150290207u, 2497437906u, 231815090u, 755078067u,
-3832053281u,
-63649475u,
-2415822606u, 4105027719u, 1706992318u, 1106598740u,
-3941945667u, 1271300761u, 505882259u, 760186809u,
-2657183368u,
-1925422058u,
-1039773764u, 880219458u, 4275949176u, 1556833823u,
-925882132u, 4216310340u, 757497522u, 461833914u,
-3884002070u,
-2790957660u,
-2100050089u, 651959176u, 1380301291u, 1289124125u,
-452314403u, 226156280u, 3306924715u, 1750807758u,
-2290180542u,
-1953760569u,
-2253069096u, 3960924806u, 1786291620u, 60736185u,
-2569018293u, 3870479674u, 2247005661u, 2239850953u,
-4261808536u,
-3282975782u,
-780945879u, 3349849383u, 1579362556u, 2265045884u,
-905088740u, 725212379u, 3156479246u, 2501620391u,
-3062836263u,
-4070422690u,
-996797869u, 4082582315u, 976105756u, 303983602u,
-1862104804u, 3864508254u, 3383979677u, 2835500286u,
-2798364010u,
-519359476u,
-3447342725u, 194373889u, 3313466630u, 232399983u,
-2841787856u, 1672751454u, 3345183154u, 1805381384u,
-2226129336u,
-2847829057u,
-2350774567u, 2838540121u, 2757948482u, 1017002062u,
-2329150951u, 2171488196u, 3668619047u, 3874977844u,
-3287966998u,
-262346753u,
-2493054715u, 2298644430u, 2926101182u, 1528457638u,
-598656233u, 2615845874u, 989110727u, 820441411u,
-253617372u,
-2201077208u,
-2047569338u, 3114356329u, 3335563734u, 2967673540u,
-768438341u, 1417708203u, 3873718246u, 1538441843u,
-1279167650u,
-3917966776u,
-2218481734u, 1015935150u, 1957845042u, 1318150213u,
-3146423971u, 4218994877u, 1162470863u, 1519718292u,
-2594658906u,
-665870414u,
-3430347817u, 3933868731u, 1597041394u, 3138684682u,
-3398212027u, 1064647658u, 1576321132u, 14792918u,
-224938029u,
-3706456050u,
-847274786u, 2645698692u, 1743374687u, 2343133224u,
-3066596790u, 2857270120u, 200596308u, 452055528u,
-2319312082u,
-3488655402u,
-4146865894u, 608206438u, 2699777051u, 3687240713u,
-327957508u, 3664730153u, 568134564u, 2993484554u,
-4159860363u,
-4274533921u,
-1079994063u, 2360220210u, 3609597760u, 3639708902u,
-2836180437u, 1069910270u, 1892427666u, 1874729790u,
-1267712826u,
-121886940u,
-3572289214u, 2475945610u, 783779452u, 588827737u,
-1531395014u, 2085084212u, 2219189792u, 3981444548u,
-2218885336u,
-1691622694u,
-2053232885u, 1386558530u, 2182946189u, 2365247285u,
-1871081313u, 2935751853u, 38413723u, 543465863u,
-900691890u,
-2899905665u,
-575120562u, 93133904u, 457154948u, 2983705792u,
-4232229200u, 2038565963u, 614693984u, 3405328302u,
-4083090010u,
-2088004171u,
-244031209u, 1861889294u, 2417109253u, 3299562328u,
-4158642443u, 4199064449u, 3161611046u, 885015950u,
-3677904099u,
-2969861785u,
-772348805u, 1712263832u, 3219357614u, 484271305u,
-3645706114u, 2059620251u, 409557488u, 2278896731u,
-224475749u,
-3523022952u,
-2057140088u, 449131785u, 1149879244u, 4255363996u,
-3602720135u, 1690010854u, 2503998822u, 2750828466u,
-3340671802u,
-1447583863u,
-2649684943u, 2764747249u, 3046070595u, 3441726138u,
-3840332559u, 3156747501u, 1288666680u, 1472744459u,
-3452391933u,
-1617542784u,
-217869690u, 3718469527u, 348639731u, 590532355u,
-43789787u, 22606314u, 1621559290u, 2231743261u,
-2234620879u,
-544748955u,
-3169387920u, 203343594u, 3272552527u, 1078282365u,
-809576321u, 854207584u, 3625491053u, 1193737267u,
-1628966807u,
-2661421060u,
-2433442061u, 3886639039u, 2149304418u, 303000565u,
-1432830882u, 137378235u, 1135974068u, 318705754u,
-2491227157u,
-2627534472u,
-3520352233u, 2488397682u, 3969194920u, 3843962181u,
-2135981459u, 2611933220u, 799460731u, 2300968851u,
-3412851628u,
-3070914013u,
-3555224260u, 4125937572u, 240359903u, 722496673u,
-2061023600u, 3843919221u, 2759960043u, 1191155322u,
-1504041490u,
-3735253656u,
-1773124736u, 101110011u, 1627699578u, 2645634551u,
-263603947u, 1388368439u, 677146538u, 1644201982u,
-2625699644u,
-2403862553u,
-2426069017u, 3613511705u, 915141802u, 2981654265u,
-3474818167u, 2611101773u, 627891434u, 762754924u,
-2143021902u,
-51067670u,
-4017746573u, 2269879853u, 3037857950u, 2388899692u,
-582729171u, 1886116725u, 2281219772u, 264704948u,
-3509984037u,
-4078683368u,
-2172959411u, 1807195632u, 3357092302u, 2253764928u,
-2320369390u, 3076335959u, 2623583210u, 168378015u,
-1435562650u,
-1100977467u,
-3160490319u, 2550328495u, 2396855930u, 1347823908u,
-1617990918u, 3849653099u, 3224111576u, 1681539821u,
-4171542880u,
-552200045u,
-3562947778u, 1676237880u, 3747732307u, 2453332913u,
-865530667u, 3566636849u, 3485502777u, 336779723u,
-2535942410u,
-1685000184u,
-820545711u, 1893670486u, 1273910461u, 1193758569u,
-970365241u, 381205962u, 3612810852u, 1160577445u,
-541488143u,
-4005031080u,
-2333965236u, 2419855455u, 3484533538u, 3073937876u,
-908466956u, 661391539u, 2342122412u, 1467049112u,
-1785800827u,
-135343033u,
-139643209u, 2438375667u, 974654058u, 3216478230u,
-3807620420u, 779043363u, 2812846449u, 333254784u,
-1025244024u,
-2242303095u,
-2476683742u, 350018683u, 174652916u, 933097576u,
-826905896u, 559603581u, 2777181260u, 164915169u,
-4070353203u,
-1459055748u,
-297303985u, 3103837241u, 3812514233u, 232265137u,
-2032819099u, 1523091376u, 3531238208u, 1403510182u,
-2886832080u,
-2599705941u,
-2789695716u, 68437968u, 3823813791u, 1040994569u,
-3024194990u, 2461740520u, 3735391266u, 2042207153u,
-2461678616u,
-3519231840u,
-1344224923u, 411442756u, 1179779351u, 7661528u,
-778352196u, 3288808867u, 589356197u, 2627504511u,
-3374744599u,
-3312172905u,
-357423007u, 3539567796u, 4044452215u, 1445118403u,
-2937983820u, 184089910u, 346201845u, 2427295202u,
-1345448010u,
-2884434843u,
-3085001879u, 2640105409u, 315310640u, 3530289798u,
-3362974764u, 963602652u, 75228477u, 3509381180u,
-4012777756u,
-2380345941u,
-1073137836u, 2083960378u, 1220315185u, 3628720934u,
-3508867818u, 67148343u, 3558085158u, 1753943368u,
-863309561u,
-2844713625u,
-441921850u, 854732254u, 816793316u, 2555428747u,
-3440623414u, 1707304366u, 3189874375u, 1623229221u,
-1220335976u,
-806745430u,
-3909262947u, 1680369031u, 2926179486u, 3410391660u,
-3991630434u, 2876458763u, 1179167079u, 536360759u,
-1592117159u,
-1514343977u,
-1032622306u, 2057494855u, 784938958u, 178402996u,
-1152907972u, 2326185495u, 2939973666u, 4181120253u,
-552831733u,
-664251856u,
-1297139539u, 1969357631u, 1474065957u, 3055419017u,
-3395829380u, 3316562752u, 2168409017u, 614624786u,
-3585854336u,
-668291094u,
-1162889217u, 3773171307u, 2263271126u, 355089668u,
-3195850578u, 3396793277u, 3519870267u, 527857605u,
-3972392320u,
-2224315010u,
-4047225561u, 3271434798u, 3192704713u, 2798505213u,
-3932215896u, 3792924012u, 3796843756u, 453872975u,
-4050552799u,
-1056432676u,
-928166947u, 121311642u, 930989547u, 2087070683u,
-1288978057u, 1556325239u, 1812435626u, 1682385724u,
-1214364933u,
-904760776u,
-3957045528u, 3949822847u, 2411065880u, 3716420732u,
-3424837835u, 3833550693u, 1799375326u, 2012368921u,
-2768764136u,
-1786111037u,
-4055479315u, 3751639533u, 2808224623u, 3492656387u,
-1306824780u, 2624000170u, 3134795218u, 1778409297u,
-3900821801u,
-593336325u,
-2772069220u, 2980873673u, 3574497158u, 3994780459u,
-4246519854u, 3482758570u, 4228015183u, 33101083u,
-1769887734u,
-4158035314u,
-3690638998u, 1119035482u, 4134969651u, 2483207353u,
-3932823321u, 285829887u, 3485140138u, 1304815138u,
-995608264u,
-3133997465u,
-1195477617u, 2147693728u, 3506673112u, 4234467492u,
-1183174337u, 1395340482u, 769199343u, 193262308u,
-2798920256u,
-3827889422u,
-3399695609u, 3036045724u, 2999477386u, 3567001759u,
-2682864314u, 1414023907u, 3699872975u, 3369870701u,
-2662284872u,
-2179640019u,
-2485080099u, 3234415609u, 3755915606u, 1339453220u,
-1567403399u, 2076272391u, 293946298u, 3861962750u,
-1291949822u,
-2916864995u,
-132642326u, 2215117062u, 2205863575u, 2488805750u,
-405632860u, 3248129390u, 2952606864u, 896734759u,
-2047417173u,
-3865951392u,
-657296855u, 1328547532u, 3966511825u, 3959682388u,
-4171801020u, 2981416957u, 1868896247u, 790081075u,
-3143666398u,
-2950766549u,
-2065854887u, 2737081890u, 995061774u, 1510712611u,
-2865954809u, 565044286u, 1565631102u, 1500654931u,
-494822108u,
-2803515503u,
-1058154996u, 3506280187u, 856885925u, 4204610546u,
-800905649u, 1130711562u, 558146282u, 2053400666u,
-449794061u,
-2643520245u,
-2101248725u, 3123292429u, 3583524041u, 983372394u,
-1587743780u, 672870813u, 444833475u, 100741452u,
-366232251u,
-1717951248u,
-524144122u, 1362432726u, 1304947719u, 674306020u,
-405665887u, 4081931036u, 1580408204u, 2343242778u,
-3901654006u,
-2627173567u,
-3015148205u, 814686701u, 1327920712u, 1346494176u,
-2468632605u, 2259795544u, 2519278184u, 2129281928u,
-2860266380u,
-4001619412u,
-1154910973u, 2841022216u, 1199925485u, 1372200293u,
-2713179055u, 3609776550u, 2896463880u, 1056406892u,
-177413841u,
-40180172u,
-3274788406u, 660921784u, 1686225028u, 4003382965u,
-2532691887u, 4256809101u, 1186018983u, 667359096u,
-2375266493u,
-2760222015u,
-745187078u, 312264012u, 396822261u, 2588536966u,
-2026998998u, 1766454365u, 3218807676u, 3915487497u,
-2630550356u,
-4130063378u,
-4231937074u, 752212123u, 3085144349u, 3267186363u,
-4103872100u, 4193207863u, 1306401710u, 3014853131u,
-1067760598u,
-2306188342u,
-2437881506u, 4258185052u, 2506507580u, 130876929u,
-1076894205u, 4106981702u, 2799540844u, 945747327u,
-1436722291u,
-2499772225u,
-2571537041u, 2038830635u, 2066826058u, 2892892912u,
-524875858u, 3392572161u, 2869992096u, 1308273341u,
-923668994u,
-1980407857u,
-2275009652u, 240598096u, 2658376530u, 3505603048u,
-1022603789u, 582423424u, 846379327u, 4092636095u,
-4177298326u,
-1004173023u,
-2154027018u, 2993634669u, 1098364089u, 3035642175u,
-1335688126u, 1376393415u, 1252369770u, 3815033328u,
-1999309358u,
-1234054757u,
-1388595255u, 2859334775u, 366532860u, 3453410395u,
-4226967708u, 1321729870u, 2078463405u, 156766592u,
-3157683394u,
-3549293384u,
-3348214547u, 2879648344u, 1144813399u, 2758966254u,
-647753581u, 813615926u, 2035441590u, 1961053117u,
-600168686u,
-2192833387u,
-3156481401u, 3627320321u, 383550248u, 81209584u,
-2339331745u, 1284116690u, 1980144976u, 2955724163u,
-789301728u,
-3842040415u,
-1115881490u, 965249078u, 4098663322u, 1870257033u,
-2923150701u, 4217108433u, 183816559u, 2104089285u,
-2640095343u,
-3173757052u,
-927847464u, 2383114981u, 4287174363u, 1886129652u,
-70635161u, 1182924521u, 1121440038u, 4246220730u,
-3890583049u,
-975913757u,
-2436253031u, 1074894869u, 1301280627u, 992471939u,
-735658128u, 244441856u, 1541612456u, 3457776165u,
-3503534059u,
-1931651133u,
-349142786u, 3669028584u, 1828812038u, 99128389u,
-1364272849u, 1963678455u, 3971963311u, 2316950886u,
-1308901796u,
-2789591580u,
-1460494965u, 2380227479u, 1577190651u, 1755822080u,
-2911014607u, 859387544u, 13023113u, 2319243370u,
-2522582211u,
-2299110490u,
-3342378874u, 2589323490u, 1884430765u, 3739058655u,
-2419330954u, 355389916u, 273950915u, 3670136553u,
-410946824u,
-3174041420u,
-2609010298u, 3059091350u, 2300275014u, 725729828u,
-2548380995u, 1738849964u, 1257081412u, 79430455u,
-810321297u,
-3246190593u,
-1007937684u, 912115394u, 40880059u, 3450073327u,
-4289832174u, 2253485111u, 1065639151u, 2953189309u,
-124779113u,
-654299738u,
-115760833u, 1250932069u, 884995826u, 3998908281u,
-1382882981u, 1134187162u, 3202324501u, 487502928u,
-3032756345u,
-4057517628u,
-933197381u, 2319223127u, 2044528655u, 2554572663u,
-4049450620u, 1620812836u, 2832905391u, 2273005481u,
-1913090121u,
-1055456023u,
-510593296u, 3285343192u, 2912822536u, 1645225063u,
-638418430u, 452701300u, 1025483165u, 1639370512u,
-167948643u,
-2809842730u,
-2983135664u, 407521332u, 1543756616u, 3949773145u,
-4283462892u, 659962275u, 3878013463u, 1000748756u,
-4053212051u,
-4099239406u,
-3467581965u, 354635541u, 21301844u, 3831212473u,
-3189450571u, 2264401966u, 4096484849u, 1736448515u,
-3976926096u,
-3727194724u,
-2243487039u, 585209095u, 3143046007u, 969558123u,
-3037113502u, 3594170243u, 2835860223u, 3775493975u,
-2787220812u,
-2274252217u,
-2915380701u, 3077533278u, 1252871826u, 1519790952u,
-205297661u, 2950557658u, 3956882191u, 2724439401u,
-3694608025u,
-124028038u,
-216019153u, 1533010676u, 2259986336u, 2014061617u,
-2068617849u, 3078123052u, 2692046098u, 1582812948u,
-396916232u,
-1470894001u,
-1694309312u, 300268215u, 1553892743u, 671176040u,
-1544988994u, 2793402821u, 4194972569u, 2296476154u,
-748354332u,
-3491325898u,
-4261053291u, 1104998242u, 797816835u, 243564059u,
-2197717393u, 299029458u, 1675252188u, 3139770041u,
-583018574u,
-2532106100u,
-2099391658u, 3760526730u, 3422719327u, 3556917689u,
-2374009285u, 2130865894u, 3710563151u, 1437538307u,
-3938030842u,
-2006930694u,
-2151243336u, 1939741287u, 1957068175u, 2135147479u,
-649553342u, 1713643042u, 4188696599u, 1698739939u,
-3549427584u,
-1016382174u,
-322644378u, 2476164549u, 2037263020u, 88036019u,
-2548960923u, 539867919u, 2871157727u, 4031659929u,
-754087252u,
-972656559u,
-4246379429u, 3877308578u, 2059459630u, 3614934323u,
-1410565271u, 2102980459u, 215395636u, 1083393481u,
-3775523015u,
-2062750105u,
-2475645882u, 3041186774u, 3534315423u, 758607219u,
-1686100614u, 180500983u, 1155581185u, 1476664671u,
-2918661695u,
-3812731350u,
-4003853737u, 4148884881u, 1468469436u, 3278880418u,
-1045838071u, 1049161262u, 360450415u, 3158065524u,
-814443735u,
-3391401707u,
-729968410u, 738771593u, 3662738792u, 1672830580u,
-4199496163u, 188487238u, 219098233u, 2141731267u,
-3890250614u,
-2988780375u,
-4026279523u, 3489429375u, 2468433807u, 1178270701u,
-2685094218u, 2716621497u, 3718335529u, 2273344755u,
-701110882u,
-1925717409u,
-1515176562u, 2325460593u, 3954798930u, 784566105u,
-3769422266u, 1641530321u, 2703876862u, 2907480267u,
-1828076455u,
-1805635221u,
-3883381245u, 1476756210u, 2072514392u, 3658557081u,
-2003610746u, 2556845550u, 729594004u, 3303898266u,
-1968227254u,
-423204951u,
-231828688u, 4223697811u, 698619045u, 3636824418u,
-2738779239u, 2333529003u, 2833158642u, 580285428u,
-3038148234u,
-1012378004u,
-1113647298u, 1424593483u, 4053247723u, 1167152941u,
-2677383578u, 3419485379u, 2135673840u, 440478166u,
-1682229112u,
-3226724137u,
-1217439806u, 3828726923u, 3636576271u, 3467643156u,
-2005614908u, 2655346461u, 2345488441u, 1027557096u,
-3594084220u,
-1372306343u,
-2342583762u, 4291342905u, 4094931814u, 3254771759u,
-821978248u, 2404930117u, 1143937655u, 3156949255u,
-3460606610u,
-449701786u,
-3474906110u, 1932585294u, 2283357584u, 1808481478u,
-3522851029u, 3040164731u, 1530172182u, 2950426149u,
-1402416557u,
-756419859u,
-4132576145u, 724994790u, 2852015871u, 2177908339u,
-899914731u, 139675671u, 1423281870u, 3198458070u,
-807581308u,
-2021611521u,
-1801452575u, 1425984297u, 2833835949u, 1536827865u,
-3902351840u, 164546042u, 1872840974u, 3986194780u,
-792156290u,
-3378681896u,
-941547959u, 3931328334u, 3661060482u, 2386420777u,
-3920146272u, 3458621279u, 3348500844u, 2269586542u,
-797371473u,
-3188953649u,
-80514771u, 2913333490u, 1246325623u, 3253846094u,
-1723906239u, 1606413555u, 587500718u, 1412413859u,
-2310046829u,
-2113313263u,
-3855635608u, 47271944u, 1112281934u, 3440228404u,
-2633519166u, 425094457u, 307659635u, 67338587u,
-2412987939u,
-2363930989u,
-2853008596u, 2844637339u, 922568813u, 130379293u,
-2825204405u, 2904442145u, 1176875333u, 1511685505u,
-599177514u,
-1872681372u,
-682394826u, 1888849790u, 3635304282u, 1761257265u,
-1571292431u, 355247075u, 1177210823u, 1691529530u,
-3629531121u,
-3760474006u,
-1129340625u, 868116266u, 3908237785u, 1942124366u,
-1266630014u, 3214841995u, 334023850u, 1110037019u,
-369650727u,
-1288666741u,
-70535706u, 20230114u, 4284225520u, 727856157u,
-293696779u, 1244943770u, 3976592462u, 560421917u,
-4171688499u,
-2438786950u,
-1218144639u, 3809125983u, 1302395746u, 534542359u,
-2121993015u, 2899519374u, 3192177626u, 1761707794u,
-3101683464u,
-1555403906u,
-3225675390u, 1875263768u, 4278894569u, 651707603u,
-2111591484u, 3802716028u, 2900262228u, 1181469202u,
-3254743797u,
-1822684466u,
-860641829u, 3046128268u, 1284833012u, 1125261608u,
-461384524u, 2331344566u, 1274400010u, 990498321u,
-3462536298u,
-3796842585u,
-2346607194u, 279495949u, 3951194590u, 3522664971u,
-3169688303u, 726831706u, 1123875117u, 1816166599u,
-3759808754u,
-2918558151u,
-3713203220u, 3369939267u, 466047109u, 384042536u,
-587271104u, 2191634696u, 2449929095u, 1157932232u,
-2084466674u,
-841370485u,
-3241372562u, 4277738486u, 2150836793u, 1173569449u,
-778768930u, 2594706485u, 3065269405u, 3019263663u,
-2660146610u,
-2789946230u,
-77056913u, 728174395u, 3647185904u, 804562358u,
-2697276483u, 881311175u, 1178696435u, 2059173891u,
-2308303791u,
-221481230u,
-50241451u, 3689414100u, 1969074761u, 2732071529u,
-1900890356u, 840789500u, 2100609300u, 985565597u,
-1220850414u,
-2456636259u,
-223607678u, 1016310244u, 1937434395u, 85717256u,
-275058190u, 3712011133u, 171916016u, 2389569096u,
-3679765802u,
-3575358777u,
-3481108261u, 3178286380u, 2489642395u, 2931039055u,
-3086601621u, 3079518902u, 3027718495u, 2506894644u,
-2976869602u,
-2134336365u,
-2420172217u, 918054427u, 661522682u, 1403791357u,
-3587174388u, 2623673551u, 1355661457u, 4159477684u,
-1109013587u,
-3112183488u,
-2217849279u, 3500291996u, 2419603731u, 2929886201u,
-3854470013u, 1358382103u, 1357666555u, 21053566u,
-2716621233u,
-3094836862u,
-3309729704u, 57086558u, 839187419u, 2757944838u,
-3651040558u, 3607536716u, 3691257732u, 2312878285u,
-1202511724u,
-183479927u,
-2509829803u, 109313218u, 478173887u, 2072044014u,
-190631406u, 2495604975u, 1010416260u, 3679857586u,
-726566957u,
-258500881u,
-1805873908u, 3081447051u, 2352101327u, 534922207u,
-1584552873u, 813470716u, 255914637u, 249169434u,
-3193498057u,
-1038802706u,
-2590158653u, 3147907290u, 663060128u, 1156177857u,
-634616100u, 312879189u, 1545020368u, 2054634247u,
-3271451914u,
-3438291534u,
-2181454946u, 3864535432u, 2398586877u, 896491075u,
-2810631478u, 2770357487u, 3372930052u, 898070638u,
-2051007323u,
-392959778u,
-36645539u, 3743556044u, 4134529680u, 4124451188u,
-566806297u, 2936523982u, 1304761965u, 537399498u,
-1940818842u,
-40862381u,
-36288410u, 3063605629u, 2826611650u, 3961972098u,
-1871578006u, 2392095486u, 1136931591u, 513864488u,
-173276451u,
-3039055682u,
-3543322032u, 1943592006u, 657217094u, 1751698246u,
-2969618445u, 456616022u, 900309519u, 113892716u,
-1126392103u,
-1235651045u,
-1882073852u, 2136610853u, 2353639710u, 2819956700u,
-3980083530u, 828773559u, 224069850u, 902434120u,
-2802008036u,
-94358995u,
-2777723394u, 2812641403u, 2525832595u, 4157388110u,
-4235563782u, 937800324u, 141690749u, 568062536u,
-550123849u,
-1330316521u,
-1949488696u, 2296431366u, 1958465262u, 3564751729u,
-3748252207u, 120455129u, 1607318832u, 2525729790u,
-2640987481u,
-2332096657u,
-1775969159u, 1555085077u, 2913525137u, 1347085183u,
-2376253113u, 3194050574u, 1806090610u, 678641356u,
-1499146713u,
-383849715u,
-3299835823u, 2284860330u, 2614269636u, 3913628844u,
-2761334210u, 1959484587u, 529797021u, 239966995u,
-3102194829u,
-3602307804u,
-1122192627u, 3577510006u, 164486066u, 1680137310u,
-1473396395u, 1467801424u, 903493660u, 1185943071u,
-2798556505u,
-2306744492u,
-3167201310u, 3577947177u, 3067592134u, 2905506289u,
-1210366329u, 204484056u, 2347778932u, 3862374472u,
-3277439508u,
-4187414621u,
-1646699310u, 621385800u, 3934869089u, 3975491588u,
-3580085916u, 1925674500u, 2436305348u, 3983301539u,
-2739439523u,
-3291507446u,
-3395637920u, 3753389171u, 2955202032u, 2654255623u,
-3771089254u, 2140443405u, 2779834738u, 3261942805u,
-3526889244u,
-1842009139u,
-4048484340u, 2106218403u, 2161244271u, 772152700u,
-1158647659u, 3776791619u, 3882186721u, 699525237u,
-2954670460u,
-1007105869u,
-3359152025u, 1146388699u, 1401550303u, 2326582541u,
-4181783540u, 1085644043u, 1942143795u, 1038368308u,
-1526153809u,
-4042547244u,
-1891441000u, 2573991874u, 1281441253u, 3635098284u,
-1980545715u, 825985487u, 3934748116u, 4228386979u,
-1480870944u,
-1042194545u,
-2397771642u, 2248490001u, 3817869868u, 878654626u,
-3785629484u, 1672470870u, 3229367873u, 1894538933u,
-1010692731u,
-1733824268u,
-656620328u, 3048283803u, 3353340056u, 2324965120u,
-4192585951u, 2284524675u, 3483884368u, 1510168293u,
-1554942691u,
-1309709396u,
-1241133168u, 3162179280u, 4046378054u, 3171681593u,
-1165297136u, 3496703563u, 150437903u, 1948622072u,
-1076332463u,
-2292479143u,
-1464229958u, 3479738093u, 2328067598u, 2334503110u,
-833324834u, 3981605747u, 3002629155u, 2854644186u,
-2832201336u,
-95796957u,
-3269249397u, 2358313329u, 3411860910u, 4283292480u,
-2802208697u, 1305947955u, 2156803420u, 1991340283u,
-189678024u,
-447602599u,
-1055411517u, 1531748363u, 1555852656u, 412402681u,
-3774988152u, 20597551u, 2925024131u, 1423989620u,
-3749428061u,
-1541439448u,
-112270416u, 1936224776u, 132162941u, 3772011507u,
-3814102518u, 1908807815u, 444154079u, 823765347u,
-3362275567u,
-3419047430u,
-2108287005u, 2315102125u, 658593738u, 3195094029u,
-3721937534u, 3176229204u, 3398835373u, 1271898712u,
-1142546577u,
-3185986817u,
-3562705803u, 2046119567u, 912990621u, 1829977672u,
-3459576979u, 1118045834u, 1369529376u, 3320601076u,
-3954988953u,
-4002467635u,
-3359456351u, 1314849568u, 1766750942u, 2998874853u,
-1181800239u, 707328036u, 3314954697u, 2066721120u,
-598194215u,
-1124451278u,
-3156679616u, 3742684743u, 2960199690u, 2683497915u,
-2566077529u, 937014607u, 102095219u, 4262922475u,
-3132264275u,
-1262099830u,
-862722905u, 2717653494u, 3245583534u, 3427209989u,
-3220278124u, 85457091u, 2222333500u, 3513997967u,
-3522324951u,
-2830855552u,
-2215004781u, 3482411840u, 4227160614u, 2030964411u,
-1741393851u, 2643723748u, 942813508u, 403442675u,
-3112048748u,
-530556423u,
-3817755244u, 3543286628u, 2247276090u, 1532920842u,
-4101962711u, 1446540991u, 3297821473u, 1861255389u,
-1984398u,
-2366525138u,
-377589481u, 3549193828u, 1427765914u, 506831657u,
-277278988u, 1447652775u, 3214362239u, 3142198690u,
-2843087541u,
-468915015u,
-807895062u, 2198723907u, 4031145069u, 2417156212u,
-4027298697u, 637175947u, 1229254212u, 1773257887u,
-1659444818u,
-451148891u,
-2099741368u, 735351990u, 2534775713u, 3261804619u,
-712519954u, 3527962772u, 3758642738u, 4245823575u,
-1281314264u,
-1167866160u,
-1489546151u, 1197354389u, 1043278102u, 2563326586u,
-371937794u, 2320164817u, 3189512691u, 573685198u,
-4108603513u,
-3758899588u,
-3507030163u, 2947201212u, 2529492585u, 578234375u,
-3362349842u, 3318878925u, 3611203517u, 3059253190u,
-4270755916u,
-4291274625u,
-4237586791u, 4137422245u, 2927218651u, 2444687041u,
-797128811u, 2043057612u, 396533859u, 2665256178u,
-3346510674u,
-1779586176u,
-3076562062u, 1882746214u, 921095362u, 2026988397u,
-514514911u, 3886379478u, 4218272420u, 1480386793u,
-3900160816u,
-2292273451u,
-1276138356u, 1125461821u, 1912885715u, 3365266013u,
-1333211627u, 4085009861u, 1390530102u, 3347984752u,
-2721771301u,
-1419492325u,
-4066766256u, 3250852311u, 820111852u, 1382201318u,
-2366036798u, 938032241u, 3100979439u, 487048687u,
-2292851045u,
-3241399180u,
-3912670510u, 2416437067u, 2973194517u, 3507707986u,
-1935099406u, 2533441488u, 104616731u, 2892622820u,
-3801190339u,
-4239188808u,
-807238241u, 3300121546u, 2249406147u, 4032114017u,
-3713738189u, 3324425575u, 4275607376u, 3663120298u,
-4173658372u,
-3984289690u,
-1827636846u, 3264588778u, 3297165529u, 558623533u,
-2728945672u, 1566297318u, 3447249966u, 481719551u,
-1596842050u,
-1838185946u,
-265271620u, 1050246315u, 4046655705u, 1844193138u,
-3807563245u, 1075384804u, 1292554949u, 1506525927u,
-2921816148u,
-2051885269u,
-1930534041u, 3872721086u, 1564489377u, 2272482181u,
-2849358683u, 589618304u, 2262072443u, 290363051u,
-299168363u,
-3867603931u,
-2868688756u, 2545263115u, 1092098533u, 3885725603u,
-2352430409u, 1981595469u, 2047946646u, 1332642839u,
-793806516u,
-214858837u,
-1061484659u, 3192394476u, 1115054785u, 3690637234u,
-996792368u, 2023479706u, 3046498231u, 4205835102u,
-3870714754u,
-257472875u,
-3549864599u, 2040276129u, 2414778670u, 812235477u,
-2674248196u, 1864096101u, 2257492689u, 1332556794u,
-1079540713u,
-465530720u,
-2304763972u, 830724724u, 3354588920u, 2510713652u,
-3103749409u, 468835585u, 1707620787u, 3038024846u,
-1000303198u,
-3462270146u,
-2748698899u, 2100348093u, 511537258u, 1237187486u,
-102049383u, 2268226698u, 3162251739u, 4219404629u,
-838822407u,
-1481440623u,
-2989224077u, 2676681975u, 3246551821u, 3812079906u,
-370572963u, 2283154352u, 3084789986u, 1961085583u,
-1955640586u,
-2409348147u,
-2284780581u, 1634818716u, 4018221729u, 2320761377u,
-3566831899u, 1799560520u, 91431959u, 1754113747u,
-1459430477u,
-3613658517u,
-924489906u, 3406317699u, 866289774u, 3924821603u,
-1265394945u, 1870668109u, 151949856u, 2747006534u,
-3111906201u,
-64039467u,
-2314447545u, 2600195638u, 4095795204u, 4162096026u,
-1026756826u, 2460047982u, 52686887u, 823198739u,
-1518045160u,
-2867527376u,
-566410761u, 2200433819u, 2114146405u, 2893790965u,
-881504901u, 974783212u, 490815659u, 937300283u,
-1523735309u,
-2511976468u,
-2634644947u, 355119367u, 1373773092u, 309232995u,
-3088671051u, 787126032u, 3442836843u, 4289194567u,
-2177850062u,
-1174136430u,
-3248982914u, 3129039732u, 1166851580u, 2196451882u,
-469595580u, 2130837700u, 3783349021u, 3745262548u,
-1236930515u,
-3032131496u,
-1525591437u, 1823628217u, 1939019255u, 1950270463u,
-3659899927u, 3688643445u, 3004399289u, 1155199552u,
-357547234u,
-2213110526u,
-3122658210u, 2667800490u, 2718690333u, 3512372076u,
-1098611683u, 2657518392u, 4248458835u, 3109874532u,
-1592908438u,
-2864927516u,
-3635248840u, 1251777186u, 3797340158u, 3508496870u,
-303354834u, 1482394062u, 2087100120u, 1595931912u,
-608574156u,
-723367884u,
-907938402u, 3357047807u, 1619629851u, 3092082995u,
-89030300u, 916336992u, 1861180168u, 3436334155u,
-1375000544u,
-3472936241u,
-1321217853u, 791356402u, 2872410224u, 2326250297u,
-2657644088u, 1748314108u, 4146771421u, 2913114440u,
-2924821844u,
-2101101496u,
-3268017251u, 2109603066u, 690665520u, 1830067573u,
-951427661u, 2982533150u, 3884512506u, 2358657479u,
-2833210784u,
-3419798214u,
-3785893994u, 2103940206u, 86759766u, 4031230616u,
-3745237192u, 2739453927u, 497038072u, 3303159408u,
-1251537249u,
-1993408196u,
-3185905715u, 2885948408u, 3154277110u, 2444150313u,
-2505582079u, 2120610195u, 3266465773u, 1814611964u,
-3080050407u,
-1079915522u,
-1819346505u, 2529946763u, 892097374u, 3740257161u,
-3618100441u, 1079900094u, 3607172225u, 737863389u,
-360704560u,
-3341993089u,
-1139047381u, 3132219631u, 1248981859u, 1109338159u,
-2004908615u, 4022302594u, 4166640860u, 2959140950u,
-3949235962u,
-2832278473u,
-2200524012u, 2634933043u, 2495844522u, 2613799818u,
-4034096813u, 683271795u, 1673546817u, 1363163726u,
-1805395136u,
-511749501u,
-1231032599u, 2305979751u, 345737783u, 3339868854u,
-2931857933u, 2323251738u, 1332068477u, 51846558u,
-3927238177u,
-1387182179u,
-1701238601u, 1419275173u, 2580882268u, 3357874599u,
-1726558907u, 1292901039u, 1371322339u, 1311713044u,
-3526735232u,
-4017884184u,
-3366093428u, 77140994u, 2128996229u, 1357915765u,
-4019691901u, 483989024u, 2390311750u, 2766065288u,
-3938587520u,
-3064810344u,
-1054589198u, 1274997019u, 4040589616u, 1277751144u,
-2274907047u, 4170399945u, 2886368209u, 4168922115u,
-3901237033u,
-3252972311u,
-2205185840u, 3403097556u, 3385493699u, 2809751370u,
-555319628u, 399539034u, 2998971454u, 1521596214u,
-178870216u,
-1471733541u,
-519629198u, 514159209u, 1500582242u, 1928616587u,
-2686427928u, 4133138798u, 1225914083u, 1432713584u,
-3559310915u,
-3925489366u,
-1055613123u, 4126676029u, 2723867653u, 3290604111u,
-1377022957u, 2373608155u, 3615237379u, 594338683u,
-2645257602u,
-2408427260u,
-917033274u, 750455097u, 625657657u, 121713200u,
-2191273413u, 4043949724u, 3293146785u, 3809297972u,
-3947296919u,
-115456894u,
-1529576616u, 1459278275u, 2157117997u, 1747859293u,
-4106665903u, 996939232u, 2007976332u, 4274649009u,
-1017725787u,
-4244666096u,
-1219631331u, 3072426253u, 3547691720u, 1620822012u,
-1397717508u, 2031597325u, 3345983430u, 2459068000u,
-3645130467u,
-2308642742u,
-359955852u, 1348467968u, 1133123059u, 2435919062u,
-2800365907u, 4213217210u, 4056565603u, 2811666556u,
-2318007236u,
-3823652401u,
-3654086429u, 1273260424u, 1591610446u, 943349350u,
-3441227678u, 3779964757u, 233818224u, 3469971032u,
-3764095096u,
-4009204587u,
-678472092u, 1990559652u, 2583121088u, 2978143652u,
-2496370864u, 2139539656u, 4287972050u, 295832576u,
-3536742861u,
-2257466133u,
-2738052161u, 1988611898u, 2466189642u, 3294419573u,
-2311186273u, 474374532u, 3081964174u, 2515138278u,
-835731677u,
-1178182694u,
-3352119543u, 2884763225u, 3462399574u, 2900817210u,
-1993698511u, 2868445043u, 2746444849u, 1205258179u,
-2353442946u,
-4079040070u,
-3624133102u, 2907136076u, 2902521697u, 426813211u,
-1418185512u, 3711189488u, 1351506552u, 1934749519u,
-46595543u,
-401688809u,
-3514602124u, 1396852607u, 1951477943u, 2502249173u,
-3199695820u, 2890250638u, 4205072507u, 1715623846u,
-3266686789u,
-3218688128u,
-1697759742u, 851227671u, 2358709645u, 4174233268u,
-500583683u, 3805940955u, 736234120u, 2710563712u,
-1949664540u,
-3139414003u,
-4293073253u, 1284406972u, 1785182449u, 1051548274u,
-2994248357u, 2499882522u, 717208669u, 2039517285u,
-518424929u,
-143136433u,
-2303774671u, 1272930860u, 2286410920u, 788459311u,
-273225293u, 2439291703u, 2254505236u, 3446287701u,
-3655156558u,
-1546628787u,
-340081500u, 3285722006u, 1324810435u, 1053980860u,
-1779472859u, 2700355724u, 686005017u, 3762376315u,
-3963193100u,
-1370881135u,
-661300087u, 1152753704u, 2349891598u, 3910051187u,
-2109444785u, 1311123870u, 2639837565u, 1896770931u,
-1081414128u,
-869877586u,
-4284220400u, 63045374u, 235968615u, 184451062u,
-1271099822u, 1319179857u, 3274963209u, 4172272710u,
-3388797445u,
-2965973320u,
-3793110097u, 3327241723u, 2991804005u, 1199544355u,
-771553759u, 2031749842u, 2596517372u, 1199888213u,
-858347951u,
-3340178832u,
-2903875412u, 763490382u, 76949161u, 2056544406u,
-1145227689u, 998233136u, 2354530024u, 427713587u,
-3537837347u,
-604661755u,
-923986833u, 1023730418u, 798294227u, 432557449u,
-801802449u, 1861313429u, 3899128441u, 4068407979u,
-2352677083u,
-3783539925u,
-10731973u, 3390767975u, 3949540249u, 1920121661u,
-3248580201u, 641956426u, 2104847395u, 604835744u,
-1491663404u,
-4255204651u,
-1520970746u, 2845653368u, 3247412938u, 3730629005u,
-855569514u, 3073294700u, 2429691698u, 3818342476u,
-3938869985u,
-2731201328u,
-2335202643u, 778117742u, 13298408u, 228780590u,
-2871715314u, 3253688653u, 4150999702u, 3846220408u,
-930808u,
-1397128726u,
-1964216488u, 2781092828u, 116285375u, 2271239476u,
-3724347554u, 2931203895u, 3893169206u, 1883912528u,
-2093892660u,
-3658787024u,
-3095016046u, 1094059199u, 3640239610u, 558564267u,
-2102812456u, 464734873u, 925262247u, 1609838036u,
-588364741u,
-1731409233u,
-1576165139u, 3933979268u, 375316394u, 4247099643u,
-3670508019u, 4080496835u, 2371248533u, 183762693u,
-2078935389u,
-2699810414u,
-1491815683u, 2999180789u, 1831158425u, 1603373553u,
-2006136905u, 3210230591u, 416748595u, 1536971415u,
-3271869367u,
-1266062739u,
-2138414557u, 3337114778u, 1634586826u, 36472629u,
-4482244u, 568009609u, 2721216780u, 4037289545u,
-2235138807u,
-1789351460u,
-4067539527u, 1323062829u, 3864620647u, 4192026301u,
-4278901241u, 1399025382u, 2826652805u, 1363860382u,
-1801770651u,
-1613381526u,
-1165249276u, 4046576622u, 2535596946u, 3260388176u,
-1078898578u, 2259750862u, 643387587u, 237144235u,
-4199571427u,
-3440917581u,
-3067939258u, 2018625455u, 1460528353u, 3138629939u,
-1666223528u, 3841139376u, 2528281125u, 885565193u,
-2609492686u,
-2517257479u,
-560864620u, 2261471820u, 3491559165u, 1329620416u,
-622383582u, 1759597655u, 2877873893u, 584692817u,
-1901728399u,
-2599000260u,
-3169771644u, 296332336u, 774719455u, 4175920823u,
-2287316070u, 4115615023u, 1073335619u, 4240292725u,
-1359158837u,
-1960974237u,
-3173724597u, 1619084286u, 2876340752u, 4065675347u,
-480741335u, 1237329941u, 701055566u, 3729009837u,
-1314736422u,
-4003180069u,
-3118519317u, 3035354420u, 3380357671u, 4020909015u,
-253958714u, 3545798863u, 3008185002u, 2624719888u,
-3219955575u,
-3060719376u,
-573101682u, 1580316843u, 2610493412u, 3490983536u,
-3601975611u, 851470366u, 635384901u, 3427048824u,
-1470002757u,
-3592460087u,
-2265226856u, 4124282457u, 2106385486u, 3334305617u,
-4208282753u, 3798749815u, 225396466u, 118791182u,
-2523395972u,
-194595464u,
-2563824631u, 2521301383u, 4224409406u, 468670274u,
-1761966400u, 1300908277u, 2570709228u, 1847901526u,
-1470099163u,
-2690466752u,
-1472536718u, 2399279735u, 4150607803u, 1775080054u,
-2082537685u, 4080034578u, 1256001880u, 392967725u,
-2055838940u,
-3349115816u,
-1745947263u, 2213925887u, 1836572741u, 2417722792u,
-636223705u, 2423329294u, 3960951311u, 1543591052u,
-1547914361u,
-2760945653u,
-3519014111u, 313543871u, 4119598884u, 1071003714u,
-2192556597u, 1526995535u, 3929839778u, 536388591u,
-3040873792u,
-3752682932u,
-1640614237u, 2432794021u, 385337403u, 2794410617u,
-2386128075u, 1055206708u, 1422747714u, 3759330929u,
-2533597496u,
-30440955u,
-1482899460u, 3350385050u, 616259409u, 3980103795u,
-1211364140u, 1040071544u, 594746920u, 1645973936u,
-2547331531u,
-1097726368u,
-700666526u, 2976247482u, 1144906608u, 996506677u,
-1997130756u, 800321417u, 1392942823u, 1601662248u,
-2079778663u,
-529512908u,
-2925120134u, 4106433085u, 630221833u, 2423086156u,
-1119859778u, 1726827981u, 1870859181u, 2559832707u,
-1792284257u,
-2059356387u,
-3572353364u, 3229407475u, 575621095u, 3221893291u,
-2372428048u, 2020123035u, 961449593u, 2243824063u,
-3803906611u,
-3735348189u,
-2981620804u, 4180681078u, 1555330629u, 230736535u,
-2075526640u, 749652975u, 713664372u, 2152096659u,
-2142067223u,
-3322302242u,
-1421646830u, 2092832615u, 1213735101u, 3192136753u,
-1106723940u, 3455398230u, 2541685524u, 2529956739u,
-3789430647u,
-1950084508u,
-2157395621u, 850457360u, 2758902426u, 2848030169u,
-6506379u, 1162213157u, 2981459221u, 272690871u,
-3059420255u,
-4242691285u,
-588065598u, 1206949936u, 3968214184u, 566348532u,
-126142880u, 1480567086u, 2959621988u, 2050218418u,
-2242731195u,
-3833514449u,
-1898070331u, 3687399477u, 3891859374u, 868185955u,
-2335308774u, 3676335246u, 3871121805u, 2189032743u,
-3275728647u,
-860492892u,
-1590764344u, 4130384758u, 262871548u, 3004764525u,
-2685542071u, 991231482u, 435122019u, 3031116998u,
-2898921700u,
-2917932604u,
-4238665148u, 2459072654u, 3444612545u, 4207731740u,
-1808564313u, 2798532269u, 3944553556u, 3926395409u,
-1633200670u,
-4138335224u,
-2524878605u, 4184292650u, 3563398268u, 4288943552u,
-3802121210u, 957502058u, 2410820887u, 4227117506u,
-4018625153u,
-4284329158u,
-530216712u, 2978986531u, 863452221u, 1910162118u,
-4088211378u, 4091971261u, 3150811451u, 4200871487u,
-3794038652u,
-3041564310u,
-2045287082u, 887805614u, 2889167251u, 4120352181u,
-1699912580u, 3478922097u, 3211994687u, 3136177842u,
-1500806861u,
-3211881347u,
-2147976385u, 3342722260u, 3359650541u, 4197378460u,
-781354073u, 1533623029u, 2204677828u, 3228172832u,
-3248592437u,
-3355841359u,
-560815159u, 1144951236u, 4027015711u, 2882625391u,
-339363613u, 2354572719u, 1769831876u, 4238589331u,
-1519732871u,
-2185834614u,
-1601096831u, 129709881u, 39655633u, 367604993u,
-1737681770u, 3259114599u, 2767070452u, 872365177u,
-1574125529u,
-3405020189u,
-4181346685u, 1134030380u, 403769171u, 2193351164u,
-1426232618u, 2885309450u, 3033612627u, 924948363u,
-935514094u,
-3202053329u,
-912294839u, 1618472324u, 4159158431u, 3744999487u,
-777064358u, 3974213124u, 1990246048u, 309725290u,
-2449849392u,
-1943692420u,
-2288635750u, 2433793635u, 2168904061u, 683315308u,
-3081493019u, 3477759434u, 3815496269u, 2823504699u,
-586945121u,
-3088963200u,
-3492287335u, 636875049u, 1111206944u, 2037346120u,
-1282050044u, 1409681512u, 1786128584u, 755810950u,
-2332676758u,
-2178142310u,
-957827166u, 1014983590u, 1888800725u, 3608595803u,
-3200072714u, 2534008478u, 659336139u, 1281728287u,
-4060560529u,
-2915575125u,
-3521503774u, 2926487340u, 1096297674u, 653489861u,
-2352326980u, 2561136777u, 1224141198u, 1250479629u,
-1297625391u,
-2409997371u,
-1942483722u, 2481835750u, 1394715707u, 1673070941u,
-2456039704u, 3980558014u, 3547934764u, 1882038812u,
-1078160498u,
-2488279087u,
-1848235245u, 1211914722u, 2264928765u, 2807773070u,
-270145554u, 583747883u, 3826009010u, 2996618216u,
-425727157u,
-992726957u,
-3384462280u, 726650661u, 1955043265u, 1923879512u,
-1854693773u, 2987614542u, 2660044993u, 2457260810u,
-426299370u,
-2671892900u,
-1827308087u, 3083953443u, 1791749638u, 3265087416u,
-2119752201u, 2547122538u, 3990783236u, 1912713468u,
-3688865211u,
-1815780016u,
-303699291u, 2416763742u, 2690891610u, 1535193548u,
-1107803989u, 1504143133u, 2235270371u, 2545884083u,
-2276278682u,
-411724404u,
-3416925704u, 2565792091u, 3383911757u, 546058824u,
-3374654444u, 2364630415u, 2693473470u, 2622125691u,
-261864817u,
-55682470u,
-857617568u, 141304067u, 1885488541u, 155368182u,
-1281949051u, 3384522408u, 3254816901u, 1959816782u,
-1452224057u,
-2830267691u,
-3709231247u, 58988202u, 4218130458u, 2984061349u,
-1888707848u, 4223605071u, 4241442486u, 375269213u,
-3208327038u,
-2199916493u,
-550337252u, 2855061437u, 276088636u, 114362204u,
-2321163647u, 2127813633u, 3289403024u, 2686973202u,
-2717376797u,
-3593428039u,
-3648831666u, 890925902u, 3289404818u, 3289516821u,
-4248913260u, 1858916580u, 3303932308u, 1752797086u,
-1628149686u,
-3245893605u,
-1568537311u, 2844194502u, 1593855770u, 2408174109u,
-124797514u, 2085649512u, 3188565660u, 2264996276u,
-1926696513u,
-3053957740u,
-2238806881u, 2189050973u, 203685243u, 379855590u,
-3920271562u, 1058600179u, 3698061923u, 4255106849u,
-608401664u,
-1598041932u,
-3318266418u, 2535016555u, 852760884u, 1918098822u,
-2200437599u, 1532285043u, 3425662132u, 3561293706u,
-2231633206u,
-4108785088u,
-3359152801u, 173534780u, 208383607u, 2862988169u,
-2406642243u, 426814583u, 2777335795u, 3322703596u,
-954190623u,
-615093090u,
-4179102978u, 2452847930u, 100239619u, 42471741u,
-818352432u, 2190624654u, 504379960u, 3631619975u,
-633412456u,
-1018421783u,
-842645419u, 711808707u, 3424580813u, 2132457941u,
-1158335882u, 3567952480u, 2302183699u, 1145788151u,
-3474264138u,
-3105085243u,
-3115506027u, 2783713015u, 3871785309u, 539583269u,
-1400252405u, 3857849984u, 4231186588u, 1278653799u,
-1760227022u,
-761044088u,
-3838185417u, 2439542532u, 585283357u, 2055995220u,
-937117124u, 3831944855u, 1823586038u, 3287917855u,
-485082427u,
-3209172809u,
-1984570176u, 2818337297u, 2691869057u, 3790476953u,
-839035557u, 3203129010u, 669981176u, 4121157385u,
-3519870450u,
-3792633352u,
-3017650322u, 1603459507u, 4225677666u, 376555451u,
-473780127u, 2018786277u, 3299822439u, 1010254499u,
-2383887565u,
-3155009499u,
-3108110655u, 2641738274u, 3684908622u, 1606463047u,
-3311068174u, 52708046u, 754181455u, 1018079176u,
-3915670272u,
-3366999425u,
-1012880204u, 1339439715u, 466437962u, 1402662350u,
-2504046911u, 736323938u, 2037800124u, 1725908589u,
-716341840u,
-1750123474u,
-3366342464u, 1743666195u, 2975303189u, 3821364027u,
-3253707772u, 3635548377u, 3840413796u, 1955642085u,
-1018315169u,
-1258092848u,
-2095540656u, 1076256607u, 117289557u, 1311658655u,
-2118301000u, 68721550u, 2886814107u, 2712432819u,
-4201862886u,
-753807148u,
-1940229047u, 731347296u, 1068901393u, 3873155894u,
-2852787666u, 1973464853u, 79735652u, 3966380587u,
-3245740712u,
-2525773438u,
-734938109u, 3045656416u, 3335746354u, 4099732691u,
-1911896517u, 1697006473u, 1145487066u, 1605663299u,
-3053606724u,
-2386289465u,
-3821211369u, 1006215345u, 1256304829u, 1053001668u,
-1289194958u, 118761054u, 1853688730u, 2803418011u,
-188650809u,
-3763686458u,
-1006829556u, 2961984133u, 3390525025u, 2061199893u,
-141792681u, 2439893463u, 2652982650u, 1804942682u,
-1546510005u,
-1246961405u,
-2407577046u, 565772575u, 3751844810u, 2943166103u,
-3750052451u, 3022527280u, 25162928u, 397381043u,
-1818337632u,
-3447363730u,
-3936437150u, 2569420703u, 2215592390u, 2171555672u,
-3665571006u, 4021712412u, 2939158353u, 4057813172u,
-1823237318u,
-103999245u,
-3251978010u, 3591914940u, 3582495283u, 2519035265u,
-3905726135u, 3180393349u, 2743117123u, 55247368u,
-3325286701u,
-705195946u,
-1857526853u, 1480518550u, 3809990433u, 1398189338u,
-3126362926u, 3959531492u, 1503658285u, 1977847740u,
-3043964489u,
-2613086143u,
-1518119282u, 4238434900u, 3905746486u, 3064949667u,
-1028122931u, 3309119457u, 4071194920u, 3096098907u,
-4137180520u,
-494467959u,
-1231408687u, 1691606157u, 1793452569u, 2722196118u,
-3478603952u, 1059665738u, 2282032278u, 3990268388u,
-1719514651u,
-4248311578u,
-3799146721u, 898026304u, 3367808954u, 4162472815u,
-170495870u, 1308116609u, 3428285344u, 1714716475u,
-395576794u,
-4153638621u,
-2999745812u, 3483315953u, 304980828u, 595337120u,
-3486516729u, 2331563143u, 2583609459u, 1885928417u,
-3834283777u,
-979337825u,
-932057378u, 3124081189u, 1930356777u, 3865887996u,
-4178282217u, 4214219408u, 3669465884u, 1472413856u,
-3356866587u,
-1012769806u,
-3043639963u, 996996396u, 207308216u, 982967331u,
-2991319933u, 318066902u, 721489670u, 1249967713u,
-749240921u,
-591392325u,
-2379365192u, 2250868849u, 2163259329u, 143191325u,
-3778285606u, 982149096u, 3536906200u, 2244353244u,
-1443862317u,
-3161549210u,
-2183127464u, 2015409516u, 547003700u, 2032484282u,
-523677821u, 4275663308u, 3827205526u, 3903778273u,
-2444530525u,
-2543645801u,
-1173958423u, 784740616u, 2878693675u, 3127696736u,
-3832037316u, 3161002398u, 4084166400u, 4213346853u,
-223390424u,
-4273380883u,
-2130315482u, 3429606032u, 3367732613u, 1912357694u,
-422632590u, 1266957023u, 3437535648u, 736404240u,
-2281709372u,
-415859912u,
-212948797u, 351612650u, 3920561440u, 112963586u,
-2230727543u, 2851076612u, 1990662634u, 2264296857u,
-3131463650u,
-2704034623u,
-3541637839u, 2954232792u, 533986918u, 4158757533u,
-65174248u, 4232639593u, 865906667u, 1948225652u,
-779656112u,
-3873989249u,
-2372984749u, 2346988193u, 1104345713u, 1165654138u,
-4045762610u, 3588205178u, 461363991u, 1111215752u,
-1389675192u,
-2404325151u,
-2152228101u, 3808973622u, 1901235912u, 3458690696u,
-314513238u, 2539459143u, 2847998873u, 952026138u,
-2325705328u,
-407844712u,
-3727960715u, 2996448351u, 2374336760u, 3138756390u,
-2600015243u, 539980418u, 1876285352u, 1670330799u,
-1709360377u,
-2868531654u,
-494777964u, 2773053597u, 599486162u, 3962209577u,
-1871328846u, 2171933018u, 110279472u, 384074780u,
-4147021936u,
-2333589647u,
-4251778066u, 40493468u, 3099342316u, 4108779767u,
-2812424588u, 954542332u, 2040682331u, 2251152306u,
-45915516u,
-259525626u,
-1045384743u, 4134656562u, 749389261u, 874399445u,
-616549904u, 2200447504u, 436024539u, 78972290u,
-3210485762u,
-1907985531u,
-3013721395u, 4214533685u, 4198804243u, 534879265u,
-1517190881u, 3756787754u, 1152563554u, 1718750948u,
-777737463u,
-1402478860u,
-1824562784u, 1879401449u, 3515818786u, 513165201u,
-1423491227u, 2103067918u, 2291777410u, 1097943000u,
-};
-
-// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
-bool Test(int offset, int len = 0) {
-#undef Check
-#undef IsAlive
-
-#define Check(x) do { \
- const uint32_t actual = (x), e = expected[index++]; \
- bool ok = actual == e; \
- if (!ok) { \
- cerr << "expected " << hex << e << " but got " << actual << endl; \
- ++errors; \
- } \
- assert(ok); \
-} while (0)
-
-#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
-
- // After the following line is where the uses of "Check" and such will go.
- static int index = 0;
-if (offset == -1) { int alive = 0; IsAlive(farmhashcc::Hash32WithSeed(data, len++, SEED)); IsAlive(farmhashcc::Hash32(data, len++)); { uint128_t u = farmhashcc::Fingerprint128(data, len++); uint64_t h = Uint128Low64(u); IsAlive(h >> 32); IsAlive((h << 32) >> 32); h = Uint128High64(u); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } len -= 3; return alive > 0; }
-Check(farmhashcc::Hash32WithSeed(data + offset, len, SEED));
-Check(farmhashcc::Hash32(data + offset, len));
-{ uint128_t u = farmhashcc::Fingerprint128(data + offset, len); uint64_t h = Uint128Low64(u); Check(h >> 32); Check((h << 32) >> 32); h = Uint128High64(u); Check(h >> 32); Check((h << 32) >> 32); }
-{ uint128_t u = farmhashcc::CityHash128WithSeed(data + offset, len, Uint128(SEED0, SEED1)); uint64_t h = Uint128Low64(u); Check(h >> 32); Check((h << 32) >> 32); h = Uint128High64(u); Check(h >> 32); Check((h << 32) >> 32); }
-
- return true;
-#undef Check
-#undef IsAlive
-}
-
-int RunTest() {
- Setup();
- int i = 0;
- cout << "Running farmhashccTest";
- if (!Test(-1)) {
- cout << "... Unavailable\n";
- return NoteErrors();
- }
- // Good. The function is attempting to hash, so run the full test.
- int errors_prior_to_test = errors;
- for ( ; i < kTestSize - 1; i++) {
- Test(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- Test(0, i);
- }
- Test(0, kDataSize);
- cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
- return NoteErrors();
-}
-
-#else
-
-// After the following line is where the code to print hash codes will go.
-void Dump(int offset, int len) {
-cout << farmhashcc::Hash32WithSeed(data + offset, len, SEED) << "u," << endl;
-cout << farmhashcc::Hash32(data + offset, len) << "u," << endl;
-{ uint128_t u = farmhashcc::Fingerprint128(data + offset, len); uint64_t h = Uint128Low64(u); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u, "; h = Uint128High64(u); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
-{ uint128_t u = farmhashcc::CityHash128WithSeed(data + offset, len, Uint128(SEED0, SEED1)); uint64_t h = Uint128Low64(u); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u, "; h = Uint128High64(u); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
-}
-
-#endif
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-
-} // namespace farmhashccTest
-
-#if !TESTING
-int main(int argc, char** argv) {
- Setup();
- cout << "uint32_t expected[] = {\n";
- int i = 0;
- for ( ; i < kTestSize - 1; i++) {
- farmhashccTest::Dump(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- farmhashccTest::Dump(0, i);
- }
- farmhashccTest::Dump(0, kDataSize);
- cout << "};\n";
-}
-#endif
-#ifndef FARMHASH_SELF_TEST_GUARD
-#define FARMHASH_SELF_TEST_GUARD
-#include <cstdio>
-#include <iostream>
-#include <string.h>
-
-using std::cout;
-using std::cerr;
-using std::endl;
-using std::hex;
-
-static const uint64_t kSeed0 = 1234567;
-static const uint64_t kSeed1 = k0;
-static const int kDataSize = 1 << 20;
-static const int kTestSize = 300;
-#define kSeed128 Uint128(kSeed0, kSeed1)
-
-static char data[kDataSize];
-
-static int completed_self_tests = 0;
-static int errors = 0;
-
-// Initialize data to pseudorandom values.
-void Setup() {
- if (completed_self_tests == 0) {
- uint64_t a = 9;
- uint64_t b = 777;
- for (int i = 0; i < kDataSize; i++) {
- a += b;
- b += a;
- a = (a ^ (a >> 41)) * k0;
- b = (b ^ (b >> 41)) * k0 + i;
- uint8_t u = b >> 37;
- memcpy(data + i, &u, 1); // uint8_t -> char
- }
- }
-}
-
-int NoteErrors() {
-#define NUM_SELF_TESTS 9
- if (++completed_self_tests == NUM_SELF_TESTS)
- std::exit(errors > 0);
- return errors;
-}
-
-template <typename T> inline bool IsNonZero(T x) {
- return x != 0;
-}
-
-template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
- return x != Uint128(0, 0);
-}
-
-#endif // FARMHASH_SELF_TEST_GUARD
-
-namespace farmhashmkTest {
-
-uint32_t CreateSeed(int offset, int salt) {
- uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h += static_cast<uint32_t>(offset & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- return h;
-}
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-#define SEED CreateSeed(offset, -1)
-#define SEED0 CreateSeed(offset, 0)
-#define SEED1 CreateSeed(offset, 1)
-
-#undef TESTING
-#define TESTING 1
-#if TESTING
-uint32_t expected[] = {
-4223616069u,
-3696677242u,
-4081014168u,
-2576519988u,
-2212771159u,
-1112731063u,
-1020067935u,
-3955445564u,
-1451961420u,
-653440099u,
-31917516u,
-2957164615u,
-2590087362u,
-3879448744u,
-176305566u,
-2447367541u,
-1359016305u,
-3363804638u,
-1117290165u,
-1062549743u,
-2437877004u,
-1894455839u,
-673206794u,
-3486923651u,
-3269862919u,
-2303349487u,
-1380660650u,
-595525107u,
-1525325287u,
-2025609358u,
-176408838u,
-1592885012u,
-864896482u,
-2101378090u,
-3489229104u,
-2118965695u,
-581644891u,
-2718789079u,
-631613207u,
-4228658372u,
-3867875546u,
-3531368319u,
-3804516756u,
-3317755099u,
-1619744564u,
-2884717286u,
-1088213445u,
-2667691076u,
-3727873235u,
-2330406762u,
-3616470388u,
-967660719u,
-4148162586u,
-315219121u,
-673084328u,
-3047602355u,
-1598963653u,
-1267826661u,
-2117362589u,
-2861192253u,
-1823625377u,
-1380350078u,
-1641748342u,
-1176094482u,
-269384321u,
-2178982315u,
-3480237248u,
-2660755208u,
-1850544433u,
-3429699438u,
-1262819303u,
-640556464u,
-2421125401u,
-2188368608u,
-2612932825u,
-1474432581u,
-173790449u,
-2124882189u,
-831272654u,
-622960146u,
-4238751051u,
-3250317967u,
-2120810248u,
-1948231495u,
-1389029321u,
-2200398357u,
-2134232963u,
-2948072329u,
-617717625u,
-681164587u,
-114859387u,
-430545646u,
-57239089u,
-3163338012u,
-3482496399u,
-557662576u,
-1102441413u,
-2670159360u,
-991116729u,
-846014240u,
-4233741566u,
-1802317242u,
-3129528802u,
-1459456375u,
-1305643039u,
-3258671612u,
-1578285833u,
-868590079u,
-1631034517u,
-1695432937u,
-561078856u,
-1004115553u,
-3086090507u,
-3818348650u,
-731596645u,
-780926790u,
-2544205955u,
-158479164u,
-3983514188u,
-2004735250u,
-3436218400u,
-673684751u,
-1463431419u,
-2880490219u,
-3223748024u,
-2218318859u,
-1474466194u,
-2636437533u,
-2206794961u,
-140995728u,
-1186394086u,
-1805716888u,
-1640037724u,
-3942729099u,
-1944727013u,
-918951560u,
-498666871u,
-3486974657u,
-2967205462u,
-1167253804u,
-1884281041u,
-2866015002u,
-4158319270u,
-2627220079u,
-3733319624u,
-3317092271u,
-438323662u,
-3195868065u,
-3426606709u,
-360708338u,
-1905491012u,
-650004803u,
-1351266252u,
-3133279000u,
-3722811115u,
-2722412434u,
-918432408u,
-3678271248u,
-269599647u,
-621514057u,
-3117077855u,
-1545425390u,
-2597567410u,
-1221437820u,
-3493254589u,
-102787342u,
-918861168u,
-348795089u,
-3439883229u,
-2353641807u,
-2209585469u,
-4035884492u,
-2686995435u,
-1649888022u,
-3852893848u,
-3042700028u,
-314103172u,
-726977769u,
-2489830276u,
-2872753660u,
-1316214989u,
-1488801501u,
-1811420390u,
-639581627u,
-2362837215u,
-3634581834u,
-3648576802u,
-1257314182u,
-762118371u,
-4268447045u,
-730167096u,
-755561509u,
-882614845u,
-3696972894u,
-228263661u,
-1478636142u,
-2767751651u,
-1532617116u,
-3838657661u,
-1944359935u,
-1401102137u,
-3772933173u,
-1050098254u,
-1658079354u,
-1846025728u,
-2204244794u,
-2017217424u,
-1275162853u,
-1429816745u,
-2175565479u,
-1716109139u,
-1187506761u,
-2434641075u,
-2725597783u,
-1795687662u,
-1393312782u,
-3511565397u,
-627885430u,
-4145733164u,
-2519005353u,
-231414775u,
-1242015635u,
-2760723497u,
-2185540568u,
-727314436u,
-2358790354u,
-1186393454u,
-4234795645u,
-350567813u,
-866773875u,
-3145590392u,
-1158374055u,
-3903123687u,
-1862119793u,
-2204587556u,
-4266276976u,
-4151548555u,
-915250402u,
-2874695320u,
-2360311410u,
-1099212769u,
-1271542714u,
-3473148363u,
-1637325418u,
-1807795989u,
-2493819794u,
-3800917924u,
-4001205856u,
-2582153621u,
-3365872040u,
-2890146216u,
-2626363824u,
-3133351295u,
-4046827296u,
-3053118771u,
-4113026751u,
-884356716u,
-3828347401u,
-10608262u,
-830987972u,
-1841080500u,
-3202717763u,
-3561778749u,
-1906000052u,
-3058284660u,
-1432904514u,
-2567431677u,
-2550162530u,
-665557986u,
-936887821u,
-2101205308u,
-4253535847u,
-1662043545u,
-1253611611u,
-2091370094u,
-2635077370u,
-2602176041u,
-3624115809u,
-748442714u,
-2709749154u,
-1023493343u,
-860291012u,
-3924715584u,
-1536436740u,
-2551145800u,
-2391782865u,
-1467705048u,
-2583909796u,
-3616666170u,
-1162857372u,
-4228631071u,
-1510132376u,
-2739165009u,
-2656606142u,
-3454996358u,
-3155038853u,
-1022087316u,
-100044110u,
-494208296u,
-2746186477u,
-4216782431u,
-225448834u,
-3728320521u,
-335282866u,
-3148194874u,
-953503703u,
-1293353960u,
-202372387u,
-1326119870u,
-4045123735u,
-3819994846u,
-1629004186u,
-1081099186u,
-3591584153u,
-1670825804u,
-3404257979u,
-3262192301u,
-2572846095u,
-3714992543u,
-4264142572u,
-529616678u,
-2882154574u,
-3006354178u,
-3865969421u,
-2007174907u,
-308283107u,
-2629833703u,
-3159124075u,
-1146492131u,
-494104332u,
-493149727u,
-1342910585u,
-521642387u,
-2201695937u,
-2517980959u,
-2426821287u,
-777374655u,
-2228189792u,
-4027055486u,
-228976000u,
-3842083468u,
-1723920223u,
-1192126094u,
-787744493u,
-2740368380u,
-2284153001u,
-2773829458u,
-442000614u,
-387830783u,
-2169780670u,
-2253144627u,
-3532502484u,
-1969684059u,
-1165351416u,
-3055056536u,
-3582324253u,
-231419363u,
-770979865u,
-3213983597u,
-3690452836u,
-935794639u,
-3230602762u,
-2841762457u,
-407598927u,
-1164479891u,
-3721799696u,
-354738136u,
-1801566618u,
-3206038542u,
-2621379981u,
-1943487262u,
-3534745636u,
-1074424589u,
-1304517521u,
-4133400969u,
-2339317978u,
-2135116860u,
-4180643791u,
-2415309340u,
-1855926417u,
-3418648630u,
-1968113037u,
-597304222u,
-3668824865u,
-3810008716u,
-3014702569u,
-3151212026u,
-156057449u,
-373134533u,
-2068234004u,
-191580563u,
-3832754488u,
-2924104199u,
-2026044494u,
-4065780435u,
-122565840u,
-4194985167u,
-2744823717u,
-2494098735u,
-3753793370u,
-1885739217u,
-2488161225u,
-3643797615u,
-2653367310u,
-2494061477u,
-189968132u,
-899646597u,
-392100396u,
-4012318310u,
-3855777086u,
-3566860954u,
-2698574996u,
-2414249905u,
-1330623339u,
-1263222732u,
-1277741760u,
-2194959402u,
-1629656136u,
-120494320u,
-1072368005u,
-1084245077u,
-4011372748u,
-1366613353u,
-3108643228u,
-3332219532u,
-2114746095u,
-3964007334u,
-371687128u,
-1084813876u,
-126459896u,
-4292782331u,
-321283184u,
-398168499u,
-3604983506u,
-560701543u,
-2073961354u,
-4240841868u,
-4151211362u,
-1338986875u,
-4093476832u,
-2269279497u,
-3500846299u,
-2510225147u,
-598000444u,
-1330391422u,
-1432533385u,
-4171226231u,
-426821154u,
-2932270996u,
-3378981077u,
-2217871549u,
-1619647984u,
-4051608043u,
-3180237819u,
-12919578u,
-1375401767u,
-371320427u,
-2986640571u,
-2336669859u,
-3796464715u,
-1892383284u,
-306814912u,
-2125823211u,
-1863678891u,
-3249703818u,
-3840225752u,
-281579900u,
-264680257u,
-4266359110u,
-4182229890u,
-2239659703u,
-3627947372u,
-2373929191u,
-224082765u,
-4053639058u,
-1862360303u,
-3187739624u,
-3392706679u,
-948039509u,
-817505760u,
-1215842393u,
-3462222651u,
-536021853u,
-182346832u,
-2731944883u,
-2346674384u,
-2640961678u,
-3446695687u,
-2271722179u,
-1301069656u,
-2803881468u,
-2832614405u,
-1691544398u,
-698756814u,
-3980620906u,
-3565421410u,
-754769376u,
-4115923404u,
-3909962218u,
-2747614077u,
-2888289845u,
-1016920862u,
-2790946178u,
-3067070960u,
-3173251481u,
-1572132982u,
-255048203u,
-2996538818u,
-3405398987u,
-136106013u,
-3581605228u,
-4277437977u,
-2147300534u,
-3728426265u,
-3483629996u,
-1478452694u,
-20756076u,
-2774992067u,
-432987927u,
-1516771026u,
-3511588664u,
-2130994978u,
-509385406u,
-873090347u,
-2163904107u,
-4192239086u,
-2532489989u,
-1090772651u,
-3910797408u,
-3710882132u,
-155010959u,
-1369823531u,
-1599664937u,
-4035593587u,
-1212746925u,
-795822552u,
-116689518u,
-3674240941u,
-1135576664u,
-756750261u,
-1027431362u,
-390555140u,
-2228460216u,
-1506940482u,
-3733857700u,
-3048762971u,
-2511703196u,
-548609887u,
-1607354252u,
-659053982u,
-259884450u,
-1793130460u,
-4083364495u,
-3148555881u,
-1764350138u,
-2436485683u,
-4031563025u,
-3261860724u,
-2475833430u,
-2101726086u,
-3191176464u,
-2646658847u,
-2127042126u,
-771316100u,
-2115922959u,
-3208515045u,
-2355437783u,
-3621147793u,
-1580163615u,
-3211555675u,
-3299188490u,
-191613920u,
-466733956u,
-2939029038u,
-1509152039u,
-130591314u,
-1892874677u,
-1646908044u,
-3452406523u,
-3998376606u,
-1199243832u,
-2187108812u,
-3189230066u,
-4161151481u,
-3371454980u,
-3681788646u,
-180842187u,
-3685022399u,
-3058749895u,
-3250165163u,
-2895367943u,
-2627101723u,
-771755098u,
-1332921024u,
-3638871848u,
-514215135u,
-3591227378u,
-2300310870u,
-3689533503u,
-851607114u,
-114330368u,
-2709027386u,
-1743034877u,
-1013693860u,
-288169008u,
-3545190686u,
-1052165084u,
-3995862307u,
-96902755u,
-1097819851u,
-2645431442u,
-2184148618u,
-2151206566u,
-350979797u,
-3467920900u,
-421116779u,
-1246252u,
-4057835428u,
-329324407u,
-4104482417u,
-844624570u,
-3306265806u,
-3787625025u,
-4263241191u,
-3251413927u,
-2921204431u,
-2931915325u,
-992134330u,
-3986338354u,
-1327895216u,
-1458363596u,
-1480608532u,
-728594368u,
-3804366693u,
-794404223u,
-1643240863u,
-793417255u,
-4167916443u,
-2683488959u,
-3124925324u,
-4184843652u,
-3750971752u,
-308509829u,
-1054550805u,
-2797511972u,
-4043123412u,
-1587158240u,
-4050518606u,
-3030062190u,
-2589912753u,
-603440067u,
-937013191u,
-1071662315u,
-2100661456u,
-2602005741u,
-435516078u,
-2260470147u,
-1256268350u,
-3612035u,
-3368856141u,
-151516099u,
-3081868591u,
-3363755681u,
-2049963149u,
-2885320434u,
-84682005u,
-2411758308u,
-2695174275u,
-3099904644u,
-1787308684u,
-1132379308u,
-564634346u,
-510236510u,
-2804443681u,
-3931864252u,
-2064427949u,
-1893979229u,
-2916544974u,
-1885887717u,
-2978018250u,
-494192125u,
-2642662373u,
-901112508u,
-636035003u,
-1658643797u,
-172746975u,
-517504890u,
-3440019372u,
-4144498044u,
-1854755456u,
-3672653905u,
-4176892856u,
-382159097u,
-282871690u,
-3629300472u,
-2500754041u,
-1677659759u,
-1067175061u,
-161654075u,
-1672575536u,
-346120493u,
-2730229631u,
-203466442u,
-1244549529u,
-199761971u,
-2744895408u,
-3195315331u,
-2124618519u,
-3261045496u,
-985339699u,
-3385585455u,
-1545740710u,
-3636652160u,
-2167020081u,
-1207897204u,
-28752417u,
-2895834146u,
-3640845375u,
-3750293073u,
-548997850u,
-4207814196u,
-4183030708u,
-2462810989u,
-3929965401u,
-};
-
-// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
-bool Test(int offset, int len = 0) {
-#undef Check
-#undef IsAlive
-
-#define Check(x) do { \
- const uint32_t actual = (x), e = expected[index++]; \
- bool ok = actual == e; \
- if (!ok) { \
- cerr << "expected " << hex << e << " but got " << actual << endl; \
- ++errors; \
- } \
- assert(ok); \
-} while (0)
-
-#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
-
- // After the following line is where the uses of "Check" and such will go.
- static int index = 0;
-if (offset == -1) { int alive = 0; IsAlive(farmhashmk::Hash32WithSeed(data, len++, SEED)); IsAlive(farmhashmk::Hash32(data, len++)); IsAlive(farmhashmk::Hash32(data, len++)); len -= 3; return alive > 0; }
-Check(farmhashmk::Hash32WithSeed(data + offset, len, SEED));
-Check(farmhashmk::Hash32(data + offset, len));
-
- return true;
-#undef Check
-#undef IsAlive
-}
-
-int RunTest() {
- Setup();
- int i = 0;
- cout << "Running farmhashmkTest";
- if (!Test(-1)) {
- cout << "... Unavailable\n";
- return NoteErrors();
- }
- // Good. The function is attempting to hash, so run the full test.
- int errors_prior_to_test = errors;
- for ( ; i < kTestSize - 1; i++) {
- Test(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- Test(0, i);
- }
- Test(0, kDataSize);
- cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
- return NoteErrors();
-}
-
-#else
-
-// After the following line is where the code to print hash codes will go.
-void Dump(int offset, int len) {
-cout << farmhashmk::Hash32WithSeed(data + offset, len, SEED) << "u," << endl;
-cout << farmhashmk::Hash32(data + offset, len) << "u," << endl;
-}
-
-#endif
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-
-} // namespace farmhashmkTest
-
-#if !TESTING
-int main(int argc, char** argv) {
- Setup();
- cout << "uint32_t expected[] = {\n";
- int i = 0;
- for ( ; i < kTestSize - 1; i++) {
- farmhashmkTest::Dump(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- farmhashmkTest::Dump(0, i);
- }
- farmhashmkTest::Dump(0, kDataSize);
- cout << "};\n";
-}
-#endif
-#ifndef FARMHASH_SELF_TEST_GUARD
-#define FARMHASH_SELF_TEST_GUARD
-#include <cstdio>
-#include <iostream>
-#include <string.h>
-
-using std::cout;
-using std::cerr;
-using std::endl;
-using std::hex;
-
-static const uint64_t kSeed0 = 1234567;
-static const uint64_t kSeed1 = k0;
-static const int kDataSize = 1 << 20;
-static const int kTestSize = 300;
-#define kSeed128 Uint128(kSeed0, kSeed1)
-
-static char data[kDataSize];
-
-static int completed_self_tests = 0;
-static int errors = 0;
-
-// Initialize data to pseudorandom values.
-void Setup() {
- if (completed_self_tests == 0) {
- uint64_t a = 9;
- uint64_t b = 777;
- for (int i = 0; i < kDataSize; i++) {
- a += b;
- b += a;
- a = (a ^ (a >> 41)) * k0;
- b = (b ^ (b >> 41)) * k0 + i;
- uint8_t u = b >> 37;
- memcpy(data + i, &u, 1); // uint8_t -> char
- }
- }
-}
-
-int NoteErrors() {
-#define NUM_SELF_TESTS 9
- if (++completed_self_tests == NUM_SELF_TESTS)
- std::exit(errors > 0);
- return errors;
-}
-
-template <typename T> inline bool IsNonZero(T x) {
- return x != 0;
-}
-
-template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
- return x != Uint128(0, 0);
-}
-
-#endif // FARMHASH_SELF_TEST_GUARD
-
-namespace farmhashnaTest {
-
-uint32_t CreateSeed(int offset, int salt) {
- uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h += static_cast<uint32_t>(offset & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- return h;
-}
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-#define SEED CreateSeed(offset, -1)
-#define SEED0 CreateSeed(offset, 0)
-#define SEED1 CreateSeed(offset, 1)
-
-#undef TESTING
-#define TESTING 1
-#if TESTING
-uint32_t expected[] = {
-1140953930u, 861465670u,
-3277735313u, 2681724312u,
-2598464059u, 797982799u,
-890626835u, 800175912u,
-2603993599u, 921001710u,
-1410420968u, 2134990486u,
-3283896453u, 1867689945u,
-2914424215u, 2244477846u,
-255297188u, 2992121793u,
-1110588164u, 4186314283u,
-161451183u, 3943596029u,
-4019337850u, 452431531u,
-283198166u, 2741341286u,
-3379021470u, 2557197665u,
-299850021u, 2532580744u,
-452473466u, 1706958772u,
-1298374911u, 3099673830u,
-2199864459u, 3696623795u,
-236935126u, 2976578695u,
-4055299123u, 3281581178u,
-1053458494u, 1882212500u,
-2305012065u, 2169731866u,
-3456121707u, 275903667u,
-458884671u, 3033004529u,
-3058973506u, 2379411653u,
-1898235244u, 1402319660u,
-2700149065u, 2699376854u,
-147814787u, 720739346u,
-2433714046u, 4222949502u,
-4220361840u, 1712034059u,
-3425469811u, 3690733394u,
-4148372108u, 1330324210u,
-594028478u, 2921867846u,
-1635026870u, 192883107u,
-780716741u, 1728752234u,
-3280331829u, 326029180u,
-3969463346u, 1436364519u,
-393215742u, 3349570000u,
-3824583307u, 1612122221u,
-2859809759u, 3808705738u,
-1379537552u, 1646032583u,
-2233466664u, 1432476832u,
-4023053163u, 2650381482u,
-2052294713u, 3552092450u,
-1628777059u, 1499109081u,
-3476440786u, 3829307897u,
-2960536756u, 1554038301u,
-1145519619u, 3190844552u,
-2902102606u, 3600725550u,
-237495366u, 540224401u,
-65721842u, 489963606u,
-1448662590u, 397635823u,
-1596489240u, 1562872448u,
-1790705123u, 2128624475u,
-180854224u, 2604346966u,
-1435705557u, 1262831810u,
-155445229u, 1672724608u,
-1669465176u, 1341975128u,
-663607706u, 2077310004u,
-3610042449u, 1911523866u,
-1043692997u, 1454396064u,
-2563776023u, 294527927u,
-1099072299u, 1389770549u,
-703505868u, 678706990u,
-2952353448u, 2026137563u,
-3603803785u, 629449419u,
-1933894405u, 3043213226u,
-226132789u, 2489287368u,
-1552847036u, 645684964u,
-3828089804u, 3632594520u,
-187883449u, 230403464u,
-3151491850u, 3272648435u,
-3729087873u, 1303930448u,
-2002861219u, 165370827u,
-916494250u, 1230085527u,
-3103338579u, 3064290191u,
-3807265751u, 3628174014u,
-231181488u, 851743255u,
-2295806711u, 1781190011u,
-2988893883u, 1554380634u,
-1142264800u, 3667013118u,
-1968445277u, 315203929u,
-2638023604u, 2290487377u,
-732137533u, 1909203251u,
-440398219u, 1891630171u,
-1380301172u, 1498556724u,
-4072067757u, 4165088768u,
-4204318635u, 441430649u,
-3931792696u, 197618179u,
-956300927u, 914413116u,
-3010839769u, 2837339569u,
-2148126371u, 1913303225u,
-3074915312u, 3117299654u,
-4139181436u, 2993479124u,
-3178848746u, 1357272220u,
-1438494951u, 507436733u,
-667183474u, 2084369203u,
-3854939912u, 1413396341u,
-126024219u, 146044391u,
-1016656857u, 3022024459u,
-3254014218u, 429095991u,
-165589978u, 1578546616u,
-985653208u, 1718653828u,
-623071693u, 366414107u,
-249776086u, 1207522198u,
-3047342438u, 2991127487u,
-3120876698u, 1684583131u,
-46987739u, 1157614300u,
-863214540u, 1087193030u,
-199124911u, 520792961u,
-3614377032u, 586863115u,
-3331828431u, 1013201099u,
-1716848157u, 4033596884u,
-1164298657u, 4140791139u,
-1146169032u, 1434258493u,
-3824360466u, 3242407770u,
-3725511003u, 232064808u,
-872586426u, 762243036u,
-2736953692u, 816692935u,
-512845449u, 3748861010u,
-2266795890u, 3781899767u,
-4290630595u, 517646945u,
-22638523u, 648000590u,
-959214578u, 558910384u,
-1283799121u, 3047062993u,
-1024246061u, 4027776454u,
-3544509313u, 622325861u,
-834785312u, 382936554u,
-411505255u, 1973395102u,
-1825135056u, 2725923798u,
-580988377u, 2826990641u,
-3474970689u, 1029055034u,
-812546227u, 2506885666u,
-2584372201u, 1758123094u,
-589567754u, 325737734u,
-345313518u, 2022370576u,
-3886113119u, 3338548567u,
-257578986u, 3698087965u,
-1776047957u, 1771384107u,
-3604937815u, 3198590202u,
-2305332220u, 191910725u,
-4232136669u, 427759438u,
-4244322689u, 542201663u,
-3315355162u, 2135941665u,
-556609672u, 45845311u,
-1175961330u, 3948351189u,
-23075771u, 3252374102u,
-1634635545u, 4151937410u,
-713127376u, 1467786451u,
-663013031u, 3444053918u,
-2638154051u, 810082938u,
-3077742128u, 1062268187u,
-2115441882u, 4081398201u,
-3735739145u, 2794294783u,
-2335576331u, 2560479831u,
-1379288194u, 4225182569u,
-2442302747u, 3948961926u,
-3958366652u, 3067277639u,
-3667516477u, 1709989541u,
-1516711748u, 2339636583u,
-4188504038u, 59581167u,
-2725013602u, 3639843023u,
-2658147000u, 2643979752u,
-3758739543u, 4189944477u,
-2470483982u, 877580602u,
-2995362413u, 118817200u,
-3252925478u, 2062343506u,
-3981838403u, 3762572073u,
-1231633714u, 4168280671u,
-2931588131u, 3284356565u,
-1129162571u, 732225574u,
-4173605289u, 1407328702u,
-1677744031u, 3532596884u,
-3232041815u, 1652884780u,
-2256541290u, 3459463480u,
-3740979556u, 259034107u,
-2227121257u, 1426140634u,
-3606709555u, 3424793077u,
-315836068u, 3200749877u,
-1386256573u, 24035717u,
-2982018998u, 1811050648u,
-234531934u, 1115203611u,
-1598686658u, 3146815575u,
-1603559457u, 323296368u,
-2632963283u, 1778459926u,
-739944537u, 579625482u,
-3486330348u, 492621815u,
-1231665285u, 2457048126u,
-3903349120u, 389846205u,
-3355404249u, 3275550588u,
-1052645068u, 862072556u,
-2834153464u, 1481069623u,
-2657392572u, 4279236653u,
-1688445808u, 701920051u,
-3740748788u, 3388062747u,
-1873358321u, 2152785640u,
-883382081u, 1005815394u,
-1020177209u, 734239551u,
-2371453141u, 100326520u,
-3488500412u, 1279682138u,
-2610427744u, 49703572u,
-3026361211u, 605900428u,
-302392721u, 2509302188u,
-1416453607u, 2815915291u,
-1862819968u, 519710058u,
-2450888314u, 4017598378u,
-937074653u, 3035635454u,
-1590230729u, 3268013438u,
-2710029305u, 12886044u,
-3711259084u, 2627383582u,
-3895772404u, 648534979u,
-260307902u, 855990313u,
-3669691805u, 263366740u,
-2938543471u, 414331688u,
-3080542944u, 3405007814u,
-3565059103u, 1190977418u,
-390836981u, 1606450012u,
-2649808239u, 2514169310u,
-2747519432u, 4129538640u,
-1721522849u, 492099164u,
-792990594u, 3625507637u,
-2271095827u, 2993032712u,
-2302363854u, 4013112951u,
-1111617969u, 2183845740u,
-795918276u, 1116991810u,
-3110898804u, 3963062126u,
-2737064702u, 462795667u,
-937372240u, 1343017609u,
-1091041189u, 2790555455u,
-277024217u, 25485284u,
-1166522068u, 1623631848u,
-241727183u, 2836158787u,
-3112996740u, 573836428u,
-2721658101u, 1937681565u,
-4175169209u, 3190765433u,
-1970000788u, 1668258120u,
-114616703u, 954762543u,
-199237753u, 4094644498u,
-2522281978u, 732086117u,
-1756889687u, 2936126607u,
-2437031370u, 4103143808u,
-3883389541u, 3171090854u,
-2483004780u, 1927385370u,
-2360538162u, 2740855009u,
-4241185118u, 1492209542u,
-1672737098u, 2148675559u,
-1789864670u, 2434313103u,
-2319172611u, 2760941207u,
-2636210123u, 1338083267u,
-1128080590u, 822806371u,
-1199583556u, 314727461u,
-1335160250u, 2084630531u,
-1156261526u, 316766066u,
-112090465u, 3129033323u,
-2746885618u, 636616055u,
-2582210744u, 1721064910u,
-3468394263u, 470463518u,
-2076016059u, 408721884u,
-2121041886u, 378460278u,
-1915948002u, 357324860u,
-2301682622u, 2691859523u,
-1869756364u, 2429314418u,
-2193146527u, 1185564327u,
-2614088922u, 1975527044u,
-919067651u, 2855948894u,
-3662539576u, 1943802836u,
-3529473373u, 1490330107u,
-366036094u, 3384241033u,
-4276268604u, 448403661u,
-4271796078u, 1910401882u,
-3077107698u, 299427366u,
-2035665349u, 3201262636u,
-3738454258u, 2554452696u,
-3588997135u, 3363895827u,
-1267505995u, 1852004679u,
-2237827073u, 2803250686u,
-3468044908u, 2143572850u,
-1728158656u, 1022551180u,
-1996680960u, 839529273u,
-2400647871u, 2201096054u,
-3606433628u, 2597259793u,
-3544595875u, 3909443124u,
-819278607u, 3447346709u,
-806136613u, 2711436388u,
-3656063205u, 837475154u,
-694525336u, 4070212073u,
-4011303412u, 1068395209u,
-438095290u, 484603494u,
-2673730227u, 737767009u,
-642310823u, 3914002299u,
-308425103u, 268427550u,
-1334387085u, 4069797497u,
-4280783219u, 2914011058u,
-4243643405u, 2849988118u,
-2504230175u, 1817156623u,
-2804200483u, 3406991497u,
-2948254999u, 2102063419u,
-1071272117u, 514889942u,
-571972433u, 1246595599u,
-1735616066u, 1539151988u,
-1230831543u, 277987182u,
-4269526481u, 991511607u,
-95237878u, 2005032160u,
-1291113144u, 626619670u,
-3560835907u, 164940926u,
-1433635018u, 116647396u,
-3039097112u, 2868163232u,
-1141645918u, 1764165478u,
-881378302u, 2159170082u,
-2953647681u, 1011320066u,
-184856151u, 1723308975u,
-336034862u, 2017579106u,
-1476681709u, 147523618u,
-3896252223u, 2264728166u,
-944743644u, 1694443528u,
-2690700128u, 1947321519u,
-735478508u, 4058183171u,
-260177668u, 505662155u,
-2391691262u, 1920739747u,
-3216960415u, 1898176786u,
-3722741628u, 1511077569u,
-449636564u, 983350414u,
-2580237367u, 2055059789u,
-1103819072u, 2089123665u,
-3873755579u, 2718467458u,
-3124338704u, 3204250304u,
-2475035432u, 1120017626u,
-3873758287u, 1982999824u,
-2950794582u, 780634378u,
-2842141483u, 4029205195u,
-1656892865u, 3330993377u,
-80890710u, 1953796601u,
-3873078673u, 136118734u,
-2317676604u, 4199091610u,
-1864448181u, 3063437608u,
-1699452298u, 1403506686u,
-1513069466u, 2348491299u,
-4273657745u, 4055855649u,
-1805475756u, 2562064338u,
-973124563u, 4197091358u,
-172861513u, 2858726767u,
-4271866024u, 3071338162u,
-3590386266u, 2328277259u,
-1096050703u, 1189614342u,
-459509140u, 771592405u,
-817999971u, 3740825152u,
-520400189u, 1941874618u,
-185232757u, 4032960199u,
-3928245258u, 3527721294u,
-1301118856u, 752188080u,
-3512945009u, 308584855u,
-2105373972u, 752872278u,
-3823368815u, 3760952096u,
-4250142168u, 2565680167u,
-3646354146u, 1259957455u,
-1085857127u, 3471066607u,
-38924274u, 3770488806u,
-1083869477u, 3312508103u,
-71956383u, 3738784936u,
-3099963860u, 1255084262u,
-4286969992u, 3621849251u,
-1190908967u, 1831557743u,
-2363435042u, 54945052u,
-4059585566u, 4023974274u,
-1788578453u, 3442180039u,
-2534883189u, 2432427547u,
-3909757989u, 731996369u,
-4168347425u, 1356028512u,
-2741583197u, 1280920000u,
-312887059u, 3259015297u,
-3946278527u, 4135481831u,
-1281043691u, 1121403845u,
-3312292477u, 1819941269u,
-1741932545u, 3293015483u,
-2127558730u, 713121337u,
-2635469238u, 486003418u,
-4015067527u, 2976737859u,
-2108187161u, 927011680u,
-1970188338u, 4177613234u,
-1799789551u, 2118505126u,
-4134691985u, 1958963937u,
-1929210029u, 2555835851u,
-2768832862u, 910892050u,
-2567532373u, 4075249328u,
-86689814u, 3726640307u,
-1392137718u, 1240000030u,
-4104757832u, 3026358429u,
-313797689u, 1435798509u,
-3101500919u, 1241665335u,
-3573008472u, 3615577014u,
-3767659003u, 3134294021u,
-4063565523u, 2296824134u,
-1541946015u, 3087190425u,
-2693152531u, 2199672572u,
-2123763822u, 1034244398u,
-857839960u, 2515339233u,
-2228007483u, 1628096047u,
-2116502287u, 2502657424u,
-2809830736u, 460237542u,
-450205998u, 3646921704u,
-3818199357u, 1808504491u,
-1950698961u, 2069753399u,
-3657033172u, 3734547671u,
-4067859590u, 3292597295u,
-1106466069u, 356742959u,
-2469567432u, 3495418823u,
-183440071u, 3248055817u,
-3662626864u, 1750561299u,
-3926138664u, 4088592524u,
-567122118u, 3810297651u,
-992181339u, 3384018814u,
-3272124369u, 3177596743u,
-320086295u, 2316548367u,
-100741310u, 451656820u,
-4086604273u, 3759628395u,
-2553391092u, 1745659881u,
-3650357479u, 2390172694u,
-330172533u, 767377322u,
-526742034u, 4102497288u,
-2088767754u, 164402616u,
-2482632320u, 2352347393u,
-1873658044u, 3861555476u,
-2751052984u, 1767810825u,
-20037241u, 545143220u,
-2594532522u, 472304191u,
-3441135892u, 3323383489u,
-258785117u, 2977745165u,
-2781737565u, 2963590112u,
-2756998822u, 207428029u,
-2581558559u, 3824717027u,
-1258619503u, 3472047571u,
-2648427775u, 2360400900u,
-2393763818u, 2332399088u,
-3932701729u, 884421165u,
-1396468647u, 1377764574u,
-4061795938u, 1559119087u,
-3343596838u, 3604258095u,
-1435134775u, 1099809675u,
-908163739u, 1418405656u,
-368446627u, 3741651161u,
-3374512975u, 3542220540u,
-3244772570u, 200009340u,
-3198975081u, 2521038253u,
-4081637863u, 337070226u,
-3235259030u, 3897262827u,
-736956644u, 641040550u,
-644850146u, 1306761320u,
-4219448634u, 193750500u,
-3293278106u, 1383997679u,
-1242645122u, 4109252858u,
-450747727u, 3716617561u,
-362725793u, 2252520167u,
-3377483696u, 1788337208u,
-8130777u, 3226734120u,
-759239140u, 1012411364u,
-1658628529u, 2911512007u,
-1002580201u, 1681898320u,
-3039016929u, 4294520281u,
-367022558u, 3071359622u,
-3205848570u, 152989999u,
-3839042136u, 2357687350u,
-4273132307u, 3898950547u,
-1176841812u, 1314157485u,
-75443951u, 1027027239u,
-1858986613u, 2040551642u,
-36574105u, 2603059541u,
-3456147251u, 2137668425u,
-4077477194u, 3565689036u,
-491832241u, 363703593u,
-2579177168u, 3589545214u,
-265993036u, 1864569342u,
-4149035573u, 3189253455u,
-1072259310u, 3153745937u,
-923017956u, 490608221u,
-855846773u, 845706553u,
-1018226240u, 1604548872u,
-3833372385u, 3287246572u,
-2757959551u, 2452872151u,
-1553870564u, 1713154780u,
-2649450292u, 500120236u,
-84251717u, 661869670u,
-1444911517u, 2489716881u,
-2810524030u, 1561519055u,
-3884088359u, 2509890699u,
-4247155916u, 1005636939u,
-3224066062u, 2774151984u,
-2035978240u, 2514910366u,
-1478837908u, 3144450144u,
-2107011431u, 96459446u,
-3587732908u, 2389230590u,
-3287635953u, 250533792u,
-1235983679u, 4237425634u,
-3704645833u, 3882376657u,
-2976369049u, 1187061987u,
-276949224u, 4100839753u,
-1698347543u, 1629662314u,
-1556151829u, 3784939568u,
-427484362u, 4246879223u,
-3155311770u, 4285163791u,
-1693376813u, 124492786u,
-1858777639u, 3476334357u,
-1941442701u, 1121980173u,
-3485932087u, 820852908u,
-358032121u, 2511026735u,
-1873607283u, 2556067450u,
-2248275536u, 1528632094u,
-1535473864u, 556796152u,
-1499201704u, 1472623890u,
-1526518503u, 3692729434u,
-1476438092u, 2913077464u,
-335109599u, 2167614601u,
-4121131078u, 3158127917u,
-3051522276u, 4046477658u,
-2857717851u, 1863977403u,
-1341023343u, 692059110u,
-1802040304u, 990407433u,
-3285847572u, 319814144u,
-561105582u, 1540183799u,
-4052924496u, 2926590471u,
-2244539806u, 439121871u,
-3317903224u, 3178387550u,
-4265214507u, 82077489u,
-1978918971u, 4279668976u,
-128732476u, 2853224222u,
-464407878u, 4190838199u,
-997819001u, 3250520802u,
-2330081301u, 4095846095u,
-733509243u, 1583801700u,
-722314527u, 3552883023u,
-1403784280u, 432327540u,
-1877837196u, 3912423882u,
-505219998u, 696031431u,
-908238873u, 4189387259u,
-8759461u, 2540185277u,
-3385159748u, 381355877u,
-2519951681u, 1679786240u,
-2019419351u, 4051584612u,
-1933923923u, 3768201861u,
-1670133081u, 3454981037u,
-700836153u, 1675560450u,
-371560700u, 338262316u,
-847351840u, 2222395828u,
-3130433948u, 405251683u,
-3037574880u, 184098830u,
-453340528u, 1385561439u,
-2224044848u, 4071581802u,
-1431235296u, 5570097u,
-570114376u, 2287305551u,
-2272418128u, 803575837u,
-3943113491u, 414959787u,
-708083137u, 2452657767u,
-4019147902u, 3841480082u,
-3791794715u, 2965956183u,
-2763690963u, 2350937598u,
-3424361375u, 779434428u,
-1274947212u, 686105485u,
-3426668051u, 3692865672u,
-3057021940u, 2285701422u,
-349809124u, 1379278508u,
-3623750518u, 215970497u,
-1783152480u, 823305654u,
-216118434u, 1787189830u,
-3692048450u, 2272612521u,
-3032187389u, 4159715581u,
-1388133148u, 1611772864u,
-2544383526u, 552925303u,
-3420960112u, 3198900547u,
-3503230228u, 2603352423u,
-2318375898u, 4064071435u,
-3006227299u, 4194096960u,
-1283392422u, 1510460996u,
-174272138u, 3671038966u,
-1775955687u, 1719108984u,
-1763892006u, 1385029063u,
-4083790740u, 406757708u,
-684087286u, 531310503u,
-3329923157u, 3492083607u,
-1059031410u, 3037314475u,
-3105682208u, 3382290593u,
-2292208503u, 426380557u,
-97373678u, 3842309471u,
-777173623u, 3241407531u,
-303065016u, 1477104583u,
-4234905200u, 2512514774u,
-2649684057u, 1397502982u,
-1802596032u, 3973022223u,
-2543566442u, 3139578968u,
-3193669211u, 811750340u,
-4013496209u, 567361887u,
-4169410406u, 3622282782u,
-3403136990u, 2540585554u,
-895210040u, 3862229802u,
-1145435213u, 4146963980u,
-784952939u, 943914610u,
-573034522u, 464420660u,
-2356867109u, 3054347639u,
-3985088434u, 1911188923u,
-583391304u, 176468511u,
-2990150068u, 2338031599u,
-519948041u, 3181425568u,
-496106033u, 4110294665u,
-2736756930u, 1196757691u,
-1089679033u, 240953857u,
-3399092928u, 4040779538u,
-2843673626u, 240495962u,
-3017658263u, 3828377737u,
-4243717901u, 2448373688u,
-2759616657u, 2246245780u,
-308018483u, 4262383425u,
-2731780771u, 328023017u,
-2884443148u, 841480070u,
-3188015819u, 4051263539u,
-2298178908u, 2944209234u,
-1372958390u, 4164532914u,
-4074952232u, 1683612329u,
-2155036654u, 1872815858u,
-2041174279u, 2368092311u,
-206775997u, 2283918569u,
-645945606u, 115406202u,
-4206471368u, 3923500892u,
-2217060665u, 350160869u,
-706531239u, 2824302286u,
-509981657u, 1469342315u,
-140980u, 1891558063u,
-164887091u, 3094962711u,
-3437115622u, 13327420u,
-422986366u, 330624974u,
-3630863408u, 2425505046u,
-824008515u, 3543885677u,
-918718096u, 376390582u,
-3224043675u, 3724791476u,
-1837192976u, 2968738516u,
-3424344721u, 3187805406u,
-1550978788u, 1743089918u,
-4251270061u, 645016762u,
-3855037968u, 1928519266u,
-1373803416u, 2289007286u,
-1889218686u, 1610271373u,
-3059200728u, 2108753646u,
-582042641u, 812347242u,
-3188172418u, 191994904u,
-1343511943u, 2247006571u,
-463291708u, 2697254095u,
-1534175504u, 1106275740u,
-622521957u, 917121602u,
-4095777215u, 3955972648u,
-3852234638u, 2845309942u,
-3299763344u, 2864033668u,
-2554947496u, 799569078u,
-2551629074u, 1102873346u,
-2661022773u, 2006922227u,
-2900438444u, 1448194126u,
-1321567432u, 1983773590u,
-1237256330u, 3449066284u,
-1691553115u, 3274671549u,
-4271625619u, 2741371614u,
-3285899651u, 786322314u,
-1586632825u, 564385522u,
-2530557509u, 2974240289u,
-1244759631u, 3263135197u,
-3592389776u, 3570296884u,
-2749873561u, 521432811u,
-987586766u, 3206261120u,
-1327840078u, 4078716491u,
-1753812954u, 976892272u,
-1827135136u, 1781944746u,
-1328622957u, 1015377974u,
-3439601008u, 2209584557u,
-2482286699u, 1109175923u,
-874877499u, 2036083451u,
-483570344u, 1091877599u,
-4190721328u, 1129462471u,
-640035849u, 1867372700u,
-920761165u, 3273688770u,
-1623777358u, 3389003793u,
-3241132743u, 2734783008u,
-696674661u, 2502161880u,
-1646071378u, 1164309901u,
-350411888u, 1978005963u,
-2253937037u, 7371540u,
-989577914u, 3626554867u,
-3214796883u, 531343826u,
-398899695u, 1145247203u,
-1516846461u, 3656006011u,
-529303412u, 3318455811u,
-3062828129u, 1696355359u,
-3698796465u, 3155218919u,
-1457595996u, 3191404246u,
-1395609912u, 2917345728u,
-1237411891u, 1854985978u,
-1091884675u, 3504488111u,
-3109924189u, 1628881950u,
-3939149151u, 878608872u,
-778235395u, 1052990614u,
-903730231u, 2069566979u,
-2437686324u, 3163786257u,
-2257884264u, 2123173186u,
-939764916u, 2933010098u,
-1235300371u, 1256485167u,
-1950274665u, 2180372319u,
-2648400302u, 122035049u,
-1883344352u, 2083771672u,
-3712110541u, 321199441u,
-1896357377u, 508560958u,
-3066325351u, 2770847216u,
-3177982504u, 296902736u,
-1486926688u, 456842861u,
-601221482u, 3992583643u,
-2794121515u, 1533934172u,
-1706465470u, 4281971893u,
-2557027816u, 900741486u,
-227175484u, 550595824u,
-690918144u, 2825943628u,
-90375300u, 300318232u,
-1985329734u, 1440763373u,
-3670603707u, 2533900859u,
-3253901179u, 542270815u,
-3677388841u, 307706478u,
-2570910669u, 3320103693u,
-1273768482u, 1216399252u,
-1652924805u, 1043647584u,
-1120323676u, 639941430u,
-325675502u, 3652676161u,
-4241680335u, 1545838362u,
-1991398008u, 4100211814u,
-1097584090u, 3262252593u,
-2254324292u, 1765019121u,
-4060211241u, 2315856188u,
-3704419305u, 411263051u,
-238929055u, 3540688404u,
-3094544537u, 3250435765u,
-3460621305u, 1967599860u,
-2016157366u, 847389916u,
-1659615591u, 4020453639u,
-901109753u, 2682611693u,
-1661364280u, 177155177u,
-3210561911u, 3802058181u,
-797089608u, 3286110054u,
-2110358240u, 1353279028u,
-2479975820u, 471725410u,
-2219863904u, 3623364733u,
-3167128228u, 1052188336u,
-3656587111u, 721788662u,
-3061255808u, 1615375832u,
-924941453u, 2547780700u,
-3328169224u, 1310964134u,
-2701956286u, 4145497671u,
-1421461094u, 1221397398u,
-1589183618u, 1492533854u,
-449740816u, 2686506989u,
-3035198924u, 1682886232u,
-2529760244u, 3342031659u,
-1235084019u, 2151665147u,
-2315686577u, 3282027660u,
-1140138691u, 2754346599u,
-2091754612u, 1178454681u,
-4226896579u, 2942520471u,
-2122168506u, 3751680858u,
-3213794286u, 2601416506u,
-4142747914u, 3951404257u,
-4243249649u, 748595836u,
-4004834921u, 238887261u,
-1927321047u, 2217148444u,
-205977665u, 1885975275u,
-186020771u, 2367569534u,
-2941662631u, 2608559272u,
-3342096731u, 741809437u,
-1962659444u, 3539886328u,
-3036596491u, 2282550094u,
-2366462727u, 2748286642u,
-2144472852u, 1390394371u,
-1257385924u, 2205425874u,
-2119055686u, 46865323u,
-3597555910u, 3188438773u,
-2372320753u, 3641116924u,
-3116286108u, 2680722658u,
-3371014971u, 2058751609u,
-2966943726u, 2345078707u,
-2330535244u, 4013841927u,
-1169588594u, 857915866u,
-1875260989u, 3175831309u,
-3193475664u, 1955181430u,
-923161569u, 4068653043u,
-776445899u, 954196929u,
-61509556u, 4248237857u,
-3808667664u, 581227317u,
-2893240187u, 4159497403u,
-4212264930u, 3973886195u,
-2077539039u, 851579036u,
-2957587591u, 772351886u,
-1173659554u, 946748363u,
-2794103714u, 2094375930u,
-4234750213u, 3671645488u,
-2614250782u, 2620465358u,
-3122317317u, 2365436865u,
-3393973390u, 523513960u,
-3645735309u, 2766686992u,
-2023960931u, 2312244996u,
-1875932218u, 3253711056u,
-3622416881u, 3274929205u,
-612094988u, 1555465129u,
-2114270406u, 3553762793u,
-1832633644u, 1087551556u,
-3306195841u, 1702313921u,
-3675066046u, 1735998785u,
-1690923980u, 1482649756u,
-1171351291u, 2043136409u,
-1962596992u, 461214626u,
-3278253346u, 1392428048u,
-3744621107u, 1028502697u,
-3991171462u, 1014064003u,
-3642345425u, 3186995039u,
-6114625u, 3359104346u,
-414856965u, 2814387514u,
-3583605071u, 2497896367u,
-1024572712u, 1927582962u,
-2892797583u, 845302635u,
-328548052u, 1523379748u,
-3392622118u, 1347167673u,
-1012316581u, 37767602u,
-2647726017u, 1070326065u,
-2075035198u, 4202817168u,
-2502924707u, 2612406822u,
-2187115553u, 1180137213u,
-701024148u, 1481965992u,
-3223787553u, 2083541843u,
-203230202u, 3876887380u,
-1334816273u, 2870251538u,
-2186205850u, 3985213979u,
-333533378u, 806507642u,
-1010064531u, 713520765u,
-3084131515u, 2637421459u,
-1703168933u, 1517562266u,
-4089081247u, 3231042924u,
-3079916123u, 3154574447u,
-2253948262u, 1725190035u,
-2452539325u, 1343734533u,
-213706059u, 2519409656u,
-108055211u, 2916327746u,
-587001593u, 1917607088u,
-4202913084u, 926304016u,
-469255411u, 4042080256u,
-3498936874u, 246692543u,
-495780578u, 438717281u,
-2259272650u, 4011324645u,
-2836854664u, 2317249321u,
-946828752u, 1280403658u,
-1905648354u, 2034241661u,
-774652981u, 1285694082u,
-2200307766u, 2158671727u,
-1135162148u, 232040752u,
-397012087u, 1717527689u,
-1720414106u, 918797022u,
-2580119304u, 3568069742u,
-2904461070u, 3893453420u,
-973817938u, 667499332u,
-3785870412u, 2088861715u,
-1565179401u, 600903026u,
-591806775u, 3512242245u,
-997964515u, 2339605347u,
-1134342772u, 3234226304u,
-4084179455u, 302315791u,
-2445626811u, 2590372496u,
-345572299u, 2274770442u,
-3600587867u, 3706939009u,
-1430507980u, 2656330434u,
-1079209397u, 2122849632u,
-1423705223u, 3826321888u,
-3683385276u, 1057038163u,
-1242840526u, 3987000643u,
-2398253089u, 1538190921u,
-1295898647u, 3570196893u,
-3065138774u, 3111336863u,
-2524949549u, 4203895425u,
-3025864372u, 968800353u,
-1023721001u, 3763083325u,
-526350786u, 635552097u,
-2308118370u, 2166472723u,
-2196937373u, 2643841788u,
-3040011470u, 4010301879u,
-2782379560u, 3474682856u,
-4201389782u, 4223278891u,
-1457302296u, 2251842132u,
-1090062008u, 3188219189u,
-292733931u, 1424229089u,
-1590782640u, 1365212370u,
-3975957073u, 3982969588u,
-2927147928u, 1048291071u,
-2766680094u, 884908196u,
-35237839u, 2221180633u,
-2490333812u, 4098360768u,
-4029081103u, 3490831871u,
-2392516272u, 3455379186u,
-3948800722u, 335456628u,
-2105117968u, 4181629008u,
-1044201772u, 3335754111u,
-540133451u, 3313113759u,
-3786107905u, 2627207327u,
-3540337875u, 3473113388u,
-3430536378u, 2514123129u,
-2124531276u, 3872633376u,
-3272957388u, 3501994650u,
-2418881542u, 487365389u,
-3877672368u, 1512866656u,
-3486531087u, 2102955203u,
-1136054817u, 3004241477u,
-1549075351u, 1302002008u,
-3936430045u, 2258587644u,
-4109233936u, 3679809321u,
-3467083076u, 2484463221u,
-1594979755u, 529218470u,
-3527024461u, 1147434678u,
-106799023u, 1823161970u,
-1704656738u, 1675883700u,
-3308746763u, 1875093248u,
-1352868568u, 1898561846u,
-2508994984u, 3177750780u,
-4217929592u, 400784472u,
-80090315u, 3564414786u,
-3841585648u, 3379293868u,
-160353261u, 2413172925u,
-2378499279u, 673436726u,
-1505702418u, 1330977363u,
-1853298225u, 3201741245u,
-2135714208u, 4069554166u,
-3715612384u, 3692488887u,
-3680311316u, 4274382900u,
-914186796u, 2264886523u,
-3869634032u, 1254199592u,
-1131020455u, 194781179u,
-429923922u, 2763792336u,
-2052895198u, 3997373194u,
-3440090658u, 2165746386u,
-1575500242u, 3463310191u,
-2064974716u, 3779513671u,
-3106421434u, 880320527u,
-3281914119u, 286569042u,
-3909096631u, 122359727u,
-1429837716u, 252230074u,
-4111461225u, 762273136u,
-93658514u, 2766407143u,
-3623657004u, 3869801679u,
-3925695921u, 2390397316u,
-2499025338u, 2741806539u,
-2507199021u, 1659221866u,
-361292116u, 4048761557u,
-3797133396u, 1517903247u,
-3121647246u, 3884308578u,
-1697201500u, 1558800262u,
-4150812360u, 3161302278u,
-2610217849u, 641564641u,
-183814518u, 2075245419u,
-611996508u, 2223461433u,
-329123979u, 121860586u,
-860985829u, 1137889144u,
-4018949439u, 2904348960u,
-947795261u, 1992594155u,
-4255427501u, 2281583851u,
-2892637604u, 1478186924u,
-3050771207u, 2767035539u,
-373510582u, 1963520320u,
-3763848370u, 3756817798u,
-627269409u, 1806905031u,
-1814444610u, 3646665053u,
-1822693920u, 278515794u,
-584050483u, 4142579188u,
-2149745808u, 3193071606u,
-1179706341u, 2693495182u,
-3259749808u, 644172091u,
-880509048u, 3340630542u,
-3365160815u, 2384445068u,
-3053081915u, 2840648309u,
-1986990122u, 1084703471u,
-2370410550u, 1627743573u,
-2244943480u, 4057483496u,
-2611595995u, 2470013639u,
-4024732359u, 3987190386u,
-873421687u, 2447660175u,
-3226583022u, 767655877u,
-2528024413u, 1962070688u,
-1233635843u, 2163464207u,
-659054446u, 854207134u,
-258410943u, 4197831420u,
-2515400215u, 3100476924u,
-1961549594u, 2219491151u,
-3997658851u, 163850514u,
-470325051u, 2598261204u,
-3052145580u, 59836528u,
-1376188597u, 966733415u,
-850667549u, 3622479237u,
-1083731990u, 1525777459u,
-4005126532u, 1428155540u,
-2781907007u, 943739431u,
-1493961005u, 2839096988u,
-2000057832u, 1941829603u,
-1901484772u, 939810041u,
-3377407371u, 3090115837u,
-3310840540u, 2068409688u,
-3261383939u, 2212130277u,
-2594774045u, 2912652418u,
-4179816101u, 3534504531u,
-3349254805u, 2796552902u,
-1385421283u, 4259908631u,
-3714780837u, 3070073945u,
-3372846298u, 3835884044u,
-3047965714u, 3009018735u,
-744091167u, 1861124263u,
-2764936304u, 1338171648u,
-4222019554u, 1395200692u,
-1371426007u, 3338031581u,
-2525665319u, 4196233786u,
-2332743921u, 1474702008u,
-2274266301u, 4255175517u,
-2290169528u, 1793910997u,
-2188254024u, 354202001u,
-3864458796u, 4280290498u,
-1554419340u, 1733094688u,
-2010552302u, 1561807039u,
-664313606u, 2548990879u,
-1084699349u, 3233936866u,
-973895284u, 2386881969u,
-1831995860u, 2961465052u,
-1428704144u, 3269904970u,
-231648253u, 2602483763u,
-4125013173u, 3319187387u,
-3347011944u, 1892898231u,
-4019114049u, 868879116u,
-4085937045u, 2378411019u,
-1072588531u, 3547435717u,
-2208070766u, 1069899078u,
-3142980597u, 2337088907u,
-1593338562u, 919414554u,
-688077849u, 3625708135u,
-1472447348u, 1947711896u,
-3953006207u, 877438080u,
-845995820u, 3150361443u,
-3053496713u, 2484577841u,
-224271045u, 2914958001u,
-2682612949u, 806655563u,
-2436224507u, 1907729235u,
-2920583824u, 1251814062u,
-2070814520u, 4034325578u,
-497847539u, 2714317144u,
-385182008u, 640855184u,
-1327075087u, 1062468773u,
-1757405994u, 1374270191u,
-4263183176u, 3041193150u,
-1037871524u, 3633173991u,
-4231821821u, 2830131945u,
-3505072908u, 2830570613u,
-4195208715u, 575398021u,
-3992840257u, 3691788221u,
-1949847968u, 2999344380u,
-3183782163u, 3723754342u,
-759716128u, 3284107364u,
-1714496583u, 15918244u,
-820509475u, 2553936299u,
-2201876606u, 4237151697u,
-2605688266u, 3253705097u,
-1008333207u, 712158730u,
-1722280252u, 1933868287u,
-4152736859u, 2097020806u,
-584426382u, 2836501956u,
-2522777566u, 1996172430u,
-2122199776u, 1069285218u,
-1474209360u, 690831894u,
-107482532u, 3695525410u,
-670591796u, 768977505u,
-2412057331u, 3647886687u,
-3110327607u, 1072658422u,
-379861934u, 1557579480u,
-4124127129u, 2271365865u,
-3880613089u, 739218494u,
-547346027u, 388559045u,
-3147335977u, 176230425u,
-3094853730u, 2554321205u,
-1495176194u, 4093461535u,
-3521297827u, 4108148413u,
-1913727929u, 1177947623u,
-1911655402u, 1053371241u,
-3265708874u, 1266515850u,
-1045540427u, 3194420196u,
-3717104621u, 1144474110u,
-1464392345u, 52070157u,
-4144237690u, 3350490823u,
-4166253320u, 2747410691u,
-};
-
-// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
-bool Test(int offset, int len = 0) {
-#undef Check
-#undef IsAlive
-
-#define Check(x) do { \
- const uint32_t actual = (x), e = expected[index++]; \
- bool ok = actual == e; \
- if (!ok) { \
- cerr << "expected " << hex << e << " but got " << actual << endl; \
- ++errors; \
- } \
- assert(ok); \
-} while (0)
-
-#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
-
- // After the following line is where the uses of "Check" and such will go.
- static int index = 0;
-if (offset == -1) { int alive = 0; { uint64_t h = farmhashna::Hash64WithSeeds(data, len++, SEED0, SEED1); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } { uint64_t h = farmhashna::Hash64WithSeed(data, len++, SEED); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } { uint64_t h = farmhashna::Hash64(data, len++); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } len -= 3; return alive > 0; }
-{ uint64_t h = farmhashna::Hash64WithSeeds(data + offset, len, SEED0, SEED1); Check(h >> 32); Check((h << 32) >> 32); }
-{ uint64_t h = farmhashna::Hash64WithSeed(data + offset, len, SEED); Check(h >> 32); Check((h << 32) >> 32); }
-{ uint64_t h = farmhashna::Hash64(data + offset, len); Check(h >> 32); Check((h << 32) >> 32); }
-
- return true;
-#undef Check
-#undef IsAlive
-}
-
-int RunTest() {
- Setup();
- int i = 0;
- cout << "Running farmhashnaTest";
- if (!Test(-1)) {
- cout << "... Unavailable\n";
- return NoteErrors();
- }
- // Good. The function is attempting to hash, so run the full test.
- int errors_prior_to_test = errors;
- for ( ; i < kTestSize - 1; i++) {
- Test(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- Test(0, i);
- }
- Test(0, kDataSize);
- cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
- return NoteErrors();
-}
-
-#else
-
-// After the following line is where the code to print hash codes will go.
-void Dump(int offset, int len) {
-{ uint64_t h = farmhashna::Hash64WithSeeds(data + offset, len, SEED0, SEED1); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
-{ uint64_t h = farmhashna::Hash64WithSeed(data + offset, len, SEED); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
-{ uint64_t h = farmhashna::Hash64(data + offset, len); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
-}
-
-#endif
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-
-} // namespace farmhashnaTest
-
-#if !TESTING
-int main(int argc, char** argv) {
- Setup();
- cout << "uint32_t expected[] = {\n";
- int i = 0;
- for ( ; i < kTestSize - 1; i++) {
- farmhashnaTest::Dump(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- farmhashnaTest::Dump(0, i);
- }
- farmhashnaTest::Dump(0, kDataSize);
- cout << "};\n";
-}
-#endif
-#ifndef FARMHASH_SELF_TEST_GUARD
-#define FARMHASH_SELF_TEST_GUARD
-#include <cstdio>
-#include <iostream>
-#include <string.h>
-
-using std::cout;
-using std::cerr;
-using std::endl;
-using std::hex;
-
-static const uint64_t kSeed0 = 1234567;
-static const uint64_t kSeed1 = k0;
-static const int kDataSize = 1 << 20;
-static const int kTestSize = 300;
-#define kSeed128 Uint128(kSeed0, kSeed1)
-
-static char data[kDataSize];
-
-static int completed_self_tests = 0;
-static int errors = 0;
-
-// Initialize data to pseudorandom values.
-void Setup() {
- if (completed_self_tests == 0) {
- uint64_t a = 9;
- uint64_t b = 777;
- for (int i = 0; i < kDataSize; i++) {
- a += b;
- b += a;
- a = (a ^ (a >> 41)) * k0;
- b = (b ^ (b >> 41)) * k0 + i;
- uint8_t u = b >> 37;
- memcpy(data + i, &u, 1); // uint8_t -> char
- }
- }
-}
-
-int NoteErrors() {
-#define NUM_SELF_TESTS 9
- if (++completed_self_tests == NUM_SELF_TESTS)
- std::exit(errors > 0);
- return errors;
-}
-
-template <typename T> inline bool IsNonZero(T x) {
- return x != 0;
-}
-
-template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
- return x != Uint128(0, 0);
-}
-
-#endif // FARMHASH_SELF_TEST_GUARD
-
-namespace farmhashntTest {
-
-uint32_t CreateSeed(int offset, int salt) {
- uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h += static_cast<uint32_t>(offset & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- return h;
-}
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-#define SEED CreateSeed(offset, -1)
-#define SEED0 CreateSeed(offset, 0)
-#define SEED1 CreateSeed(offset, 1)
-
-#undef TESTING
-#define TESTING 1
-#if TESTING
-uint32_t expected[] = {
-2681724312u,
-797982799u,
-921001710u,
-2134990486u,
-2244477846u,
-2992121793u,
-3943596029u,
-452431531u,
-2557197665u,
-2532580744u,
-3099673830u,
-3696623795u,
-3281581178u,
-1882212500u,
-275903667u,
-3033004529u,
-1402319660u,
-2699376854u,
-4222949502u,
-1712034059u,
-1330324210u,
-2921867846u,
-1728752234u,
-326029180u,
-3349570000u,
-1612122221u,
-1646032583u,
-1432476832u,
-3552092450u,
-1499109081u,
-1554038301u,
-3190844552u,
-540224401u,
-489963606u,
-1562872448u,
-2128624475u,
-1262831810u,
-1672724608u,
-2077310004u,
-1911523866u,
-294527927u,
-1389770549u,
-2026137563u,
-629449419u,
-2489287368u,
-645684964u,
-230403464u,
-3272648435u,
-165370827u,
-1230085527u,
-3628174014u,
-851743255u,
-1554380634u,
-3667013118u,
-2290487377u,
-1909203251u,
-1498556724u,
-4165088768u,
-197618179u,
-914413116u,
-1913303225u,
-3117299654u,
-1357272220u,
-507436733u,
-1413396341u,
-146044391u,
-429095991u,
-3056862311u,
-366414107u,
-2293458109u,
-1684583131u,
-1170404994u,
-520792961u,
-1577421232u,
-4033596884u,
-4229339322u,
-3242407770u,
-2649785113u,
-816692935u,
-3555213933u,
-517646945u,
-2180594090u,
-3047062993u,
-2391606125u,
-382936554u,
-788479970u,
-2826990641u,
-3167748333u,
-1758123094u,
-389974094u,
-3338548567u,
-2583576230u,
-3198590202u,
-4155628142u,
-542201663u,
-2856634168u,
-3948351189u,
-4194218315u,
-1467786451u,
-2743592929u,
-1062268187u,
-3810665822u,
-2560479831u,
-997658837u,
-3067277639u,
-1211737169u,
-59581167u,
-1389679610u,
-4189944477u,
-100876854u,
-2062343506u,
-3088828656u,
-3284356565u,
-3130054947u,
-3532596884u,
-3887208531u,
-259034107u,
-3233195759u,
-3200749877u,
-760633989u,
-1115203611u,
-1516407838u,
-1778459926u,
-2146672889u,
-2457048126u,
-2217471853u,
-862072556u,
-3745267835u,
-701920051u,
-581695350u,
-1410111809u,
-3326135446u,
-2187968410u,
-4267859263u,
-479241367u,
-2868987960u,
-704325635u,
-1418509533u,
-735688735u,
-3283299459u,
-813690332u,
-1439630796u,
-3195309868u,
-1616408198u,
-3254795114u,
-2799925823u,
-3929484338u,
-1798536177u,
-4205965408u,
-1499475160u,
-4247675634u,
-3779953975u,
-785893184u,
-2778575413u,
-1160134629u,
-823113169u,
-4116162021u,
-4167766971u,
-2487440590u,
-4004655503u,
-4044418876u,
-1462554406u,
-2011102035u,
-4265993528u,
-576405853u,
-4038839101u,
-2425317635u,
-1401013391u,
-3062418115u,
-3167030094u,
-2602636307u,
-4264167741u,
-4017058800u,
-1029665228u,
-4036354071u,
-2670703363u,
-688472265u,
-1054670286u,
-338058159u,
-1539305024u,
-146827036u,
-4060134777u,
-2502815838u,
-1603444633u,
-2448966429u,
-3891353218u,
-1082330589u,
-201837927u,
-2848283092u,
-883849006u,
-1982110346u,
-541496720u,
-133643215u,
-3847827123u,
-4015671361u,
-2849988118u,
-3452457457u,
-2102063419u,
-3281002516u,
-1539151988u,
-1147951686u,
-2005032160u,
-2415262714u,
-116647396u,
-1029284767u,
-2159170082u,
-1919171906u,
-2017579106u,
-2473524405u,
-1694443528u,
-3671562289u,
-505662155u,
-1019936943u,
-1511077569u,
-773792826u,
-2089123665u,
-484732447u,
-1120017626u,
-2809286837u,
-4029205195u,
-1097806406u,
-136118734u,
-4017075736u,
-1403506686u,
-1516736273u,
-2562064338u,
-2984955003u,
-3071338162u,
-1923531348u,
-771592405u,
-2586632018u,
-4032960199u,
-2687561076u,
-308584855u,
-1692079268u,
-2565680167u,
-3674576684u,
-3770488806u,
-69201295u,
-1255084262u,
-3593730713u,
-54945052u,
-1939595371u,
-2432427547u,
-2295501078u,
-1280920000u,
-82177963u,
-1121403845u,
-2889101923u,
-713121337u,
-1747052377u,
-927011680u,
-4142246789u,
-1958963937u,
-1636932722u,
-4075249328u,
-2025886508u,
-3026358429u,
-1845587644u,
-3615577014u,
-1363253259u,
-3087190425u,
-341851980u,
-2515339233u,
-1276595523u,
-460237542u,
-4198897105u,
-2069753399u,
-4278599955u,
-356742959u,
-3735275001u,
-1750561299u,
-668829411u,
-3384018814u,
-4233785523u,
-451656820u,
-107312677u,
-2390172694u,
-1216645846u,
-164402616u,
-1689811113u,
-1767810825u,
-1397772514u,
-3323383489u,
-2986430557u,
-207428029u,
-2260498180u,
-2360400900u,
-1263709570u,
-1377764574u,
-4252610345u,
-1099809675u,
-2776960536u,
-3542220540u,
-3752806924u,
-337070226u,
-3267551635u,
-1306761320u,
-2220373824u,
-4109252858u,
-896322512u,
-1788337208u,
-1336556841u,
-2911512007u,
-3712582785u,
-3071359622u,
-2561488770u,
-3898950547u,
-536047554u,
-2040551642u,
-3528794619u,
-3565689036u,
-1197100813u,
-1864569342u,
-3329594980u,
-490608221u,
-1174785921u,
-3287246572u,
-2163330264u,
-500120236u,
-2520062970u,
-1561519055u,
-4042710240u,
-2774151984u,
-3160666939u,
-96459446u,
-1878067032u,
-4237425634u,
-2952135524u,
-4100839753u,
-1265237690u,
-4246879223u,
-834830418u,
-3476334357u,
-4277111759u,
-2511026735u,
-3065234219u,
-556796152u,
-198182691u,
-2913077464u,
-1535115487u,
-4046477658u,
-140762681u,
-990407433u,
-2198985327u,
-2926590471u,
-559702706u,
-82077489u,
-1096697687u,
-4190838199u,
-3046872820u,
-1583801700u,
-2185339100u,
-3912423882u,
-3703603898u,
-2540185277u,
-1446869792u,
-4051584612u,
-2719373510u,
-1675560450u,
-1996164093u,
-405251683u,
-2864244470u,
-4071581802u,
-2028708916u,
-803575837u,
-557660441u,
-3841480082u,
-255451671u,
-779434428u,
-3452203069u,
-2285701422u,
-1568745354u,
-823305654u,
-3184047862u,
-4159715581u,
-3160134214u,
-3198900547u,
-1566527339u,
-4194096960u,
-1496132623u,
-1719108984u,
-2584236470u,
-531310503u,
-3456882941u,
-3382290593u,
-467441309u,
-3241407531u,
-2540270567u,
-1397502982u,
-3348545480u,
-811750340u,
-1017047954u,
-2540585554u,
-3531646869u,
-943914610u,
-1903578924u,
-1911188923u,
-241574049u,
-3181425568u,
-3529565564u,
-240953857u,
-2964595704u,
-3828377737u,
-4260564140u,
-4262383425u,
-383233885u,
-4051263539u,
-919677938u,
-1683612329u,
-4204155962u,
-2283918569u,
-4153726847u,
-350160869u,
-1387233546u,
-1891558063u,
-740563169u,
-330624974u,
-2948665536u,
-376390582u,
-3799363969u,
-3187805406u,
-2263421398u,
-1928519266u,
-2746577402u,
-2108753646u,
-768287270u,
-2247006571u,
-212490675u,
-917121602u,
-2549835613u,
-2864033668u,
-3738062408u,
-2006922227u,
-2616619070u,
-3449066284u,
-431292293u,
-786322314u,
-1415970351u,
-3263135197u,
-2954777083u,
-3206261120u,
-2287507921u,
-1781944746u,
-4081586725u,
-1109175923u,
-1813855658u,
-1129462471u,
-1037031473u,
-3389003793u,
-3122687303u,
-1164309901u,
-3193251135u,
-3626554867u,
-3071568023u,
-3656006011u,
-1167681812u,
-3155218919u,
-2704165015u,
-1854985978u,
-1712976649u,
-878608872u,
-4155949943u,
-3163786257u,
-1626463554u,
-1256485167u,
-582664250u,
-2083771672u,
-804336148u,
-2770847216u,
-1674051445u,
-3992583643u,
-2966108111u,
-900741486u,
-4014551783u,
-300318232u,
-3517585534u,
-542270815u,
-760762191u,
-1216399252u,
-643179562u,
-3652676161u,
-2990167340u,
-3262252593u,
-2134299399u,
-411263051u,
-1342880802u,
-1967599860u,
-853593042u,
-2682611693u,
-850464484u,
-3286110054u,
-3842907484u,
-3623364733u,
-3693536939u,
-1615375832u,
-2318423400u,
-4145497671u,
-1728968857u,
-2686506989u,
-1502282913u,
-2151665147u,
-3651607391u,
-1178454681u,
-4146839064u,
-2601416506u,
-1448097974u,
-238887261u,
-4093725287u,
-2367569534u,
-679517009u,
-3539886328u,
-3086277222u,
-1390394371u,
-119173722u,
-1766260771u,
-751439914u,
-215917713u,
-2656990891u,
-1570750352u,
-3533987737u,
-3576119563u,
-963183826u,
-3796810515u,
-136547246u,
-2592925324u,
-427154472u,
-1228758574u,
-1464255968u,
-2984611177u,
-2001585786u,
-1525438381u,
-1348536411u,
-2861338018u,
-764077711u,
-3785343245u,
-457568934u,
-4104954272u,
-2381948487u,
-3148473363u,
-2180270337u,
-1387729170u,
-951677556u,
-2721005055u,
-66786703u,
-1149351924u,
-1895026827u,
-3711056516u,
-3638638708u,
-2263003308u,
-3448840877u,
-225333538u,
-3797521928u,
-3262952567u,
-2078619498u,
-1178073973u,
-3288261538u,
-1496966875u,
-2481012988u,
-114945840u,
-1632780103u,
-2087949619u,
-3787017905u,
-2575395164u,
-2971726178u,
-3642087909u,
-3894199764u,
-203853421u,
-425935223u,
-3565833278u,
-1748785729u,
-580966986u,
-2124704694u,
-1107045577u,
-1067532701u,
-1406028344u,
-18613994u,
-3476683808u,
-3762914298u,
-1844996900u,
-904215228u,
-1118521573u,
-3657647605u,
-3136157065u,
-2287683323u,
-126005630u,
-3555092974u,
-49515858u,
-1010661841u,
-1902040126u,
-1400735275u,
-2771676666u,
-2225229957u,
-3454177594u,
-2883475137u,
-4144472319u,
-1051332394u,
-542648229u,
-1669710469u,
-553041029u,
-584127807u,
-2993670925u,
-3587959456u,
-1745399498u,
-1404723176u,
-1334333531u,
-3239516985u,
-1275954779u,
-367320647u,
-3684418197u,
-4030809053u,
-484559105u,
-4255931645u,
-4271715616u,
-3171911678u,
-928543347u,
-2159512867u,
-313902234u,
-647086234u,
-577214736u,
-1130129573u,
-995791646u,
-1645086060u,
-4122335794u,
-1064648931u,
-2752145076u,
-3312498873u,
-4238535494u,
-1471227427u,
-633688562u,
-1959779970u,
-766642813u,
-1380896111u,
-3647601207u,
-1733961041u,
-521947915u,
-189164145u,
-486382294u,
-3770038872u,
-3235740744u,
-1912506671u,
-2276864677u,
-1588060152u,
-2504457929u,
-1471020554u,
-3623212998u,
-3026631806u,
-2342164722u,
-1674890530u,
-3011542850u,
-3549160092u,
-4290680005u,
-3943068002u,
-2273781461u,
-2127663659u,
-1646681121u,
-447810651u,
-2366308558u,
-970504950u,
-2008155560u,
-2695940969u,
-3444688454u,
-1739318893u,
-2683090634u,
-2774816580u,
-437560100u,
-512012738u,
-3305170944u,
-665292744u,
-3580039116u,
-1579404983u,
-3397891494u,
-710590371u,
-2514565805u,
-3624609754u,
-3516075816u,
-1314000850u,
-1935166880u,
-3257747610u,
-3776931214u,
-3183054185u,
-675129307u,
-3333261712u,
-1154611403u,
-2759854023u,
-1963228038u,
-505138315u,
-1803966773u,
-4032705384u,
-798395739u,
-3473799845u,
-476400898u,
-602972493u,
-3289878097u,
-2520311409u,
-3214794876u,
-748160407u,
-1326769504u,
-902775872u,
-1372805534u,
-1213925114u,
-3009384989u,
-3781981134u,
-2835608783u,
-2716786748u,
-1669490957u,
-1089334066u,
-250756920u,
-4041016629u,
-2495807367u,
-2008251381u,
-106212622u,
-1927268995u,
-2251978818u,
-3788056262u,
-3678660147u,
-2656772270u,
-1997584981u,
-2668998785u,
-2954162084u,
-845687881u,
-776018378u,
-2066910012u,
-918315064u,
-};
-
-// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
-bool Test(int offset, int len = 0) {
-#undef Check
-#undef IsAlive
-
-#define Check(x) do { \
- const uint32_t actual = (x), e = expected[index++]; \
- bool ok = actual == e; \
- if (!ok) { \
- cerr << "expected " << hex << e << " but got " << actual << endl; \
- ++errors; \
- } \
- assert(ok); \
-} while (0)
-
-#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
-
- // After the following line is where the uses of "Check" and such will go.
- static int index = 0;
-if (offset == -1) { int alive = 0; IsAlive(farmhashnt::Hash32WithSeed(data, len++, SEED)); IsAlive(farmhashnt::Hash32(data, len++)); IsAlive(farmhashnt::Hash32(data, len++)); len -= 3; return alive > 0; }
-Check(farmhashnt::Hash32WithSeed(data + offset, len, SEED));
-Check(farmhashnt::Hash32(data + offset, len));
-
- return true;
-#undef Check
-#undef IsAlive
-}
-
-int RunTest() {
- Setup();
- int i = 0;
- cout << "Running farmhashntTest";
- if (!Test(-1)) {
- cout << "... Unavailable\n";
- return NoteErrors();
- }
- // Good. The function is attempting to hash, so run the full test.
- int errors_prior_to_test = errors;
- for ( ; i < kTestSize - 1; i++) {
- Test(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- Test(0, i);
- }
- Test(0, kDataSize);
- cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
- return NoteErrors();
-}
-
-#else
-
-// After the following line is where the code to print hash codes will go.
-void Dump(int offset, int len) {
-cout << farmhashnt::Hash32WithSeed(data + offset, len, SEED) << "u," << endl;
-cout << farmhashnt::Hash32(data + offset, len) << "u," << endl;
-}
-
-#endif
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-
-} // namespace farmhashntTest
-
-#if !TESTING
-int main(int argc, char** argv) {
- Setup();
- cout << "uint32_t expected[] = {\n";
- int i = 0;
- for ( ; i < kTestSize - 1; i++) {
- farmhashntTest::Dump(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- farmhashntTest::Dump(0, i);
- }
- farmhashntTest::Dump(0, kDataSize);
- cout << "};\n";
-}
-#endif
-#ifndef FARMHASH_SELF_TEST_GUARD
-#define FARMHASH_SELF_TEST_GUARD
-#include <cstdio>
-#include <iostream>
-#include <string.h>
-
-using std::cout;
-using std::cerr;
-using std::endl;
-using std::hex;
-
-static const uint64_t kSeed0 = 1234567;
-static const uint64_t kSeed1 = k0;
-static const int kDataSize = 1 << 20;
-static const int kTestSize = 300;
-#define kSeed128 Uint128(kSeed0, kSeed1)
-
-static char data[kDataSize];
-
-static int completed_self_tests = 0;
-static int errors = 0;
-
-// Initialize data to pseudorandom values.
-void Setup() {
- if (completed_self_tests == 0) {
- uint64_t a = 9;
- uint64_t b = 777;
- for (int i = 0; i < kDataSize; i++) {
- a += b;
- b += a;
- a = (a ^ (a >> 41)) * k0;
- b = (b ^ (b >> 41)) * k0 + i;
- uint8_t u = b >> 37;
- memcpy(data + i, &u, 1); // uint8_t -> char
- }
- }
-}
-
-int NoteErrors() {
-#define NUM_SELF_TESTS 9
- if (++completed_self_tests == NUM_SELF_TESTS)
- std::exit(errors > 0);
- return errors;
-}
-
-template <typename T> inline bool IsNonZero(T x) {
- return x != 0;
-}
-
-template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
- return x != Uint128(0, 0);
-}
-
-#endif // FARMHASH_SELF_TEST_GUARD
-
-namespace farmhashsaTest {
-
-uint32_t CreateSeed(int offset, int salt) {
- uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h += static_cast<uint32_t>(offset & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- return h;
-}
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-#define SEED CreateSeed(offset, -1)
-#define SEED0 CreateSeed(offset, 0)
-#define SEED1 CreateSeed(offset, 1)
-
-#undef TESTING
-#define TESTING 1
-#if TESTING
-uint32_t expected[] = {
-4223616069u,
-3696677242u,
-4081014168u,
-2576519988u,
-2212771159u,
-1112731063u,
-1020067935u,
-3955445564u,
-1451961420u,
-653440099u,
-31917516u,
-2957164615u,
-2590087362u,
-3879448744u,
-176305566u,
-2447367541u,
-1359016305u,
-3363804638u,
-1117290165u,
-1062549743u,
-2437877004u,
-1894455839u,
-673206794u,
-3486923651u,
-3269862919u,
-2303349487u,
-1380660650u,
-595525107u,
-1525325287u,
-2025609358u,
-176408838u,
-1592885012u,
-864896482u,
-2101378090u,
-3489229104u,
-2118965695u,
-581644891u,
-2718789079u,
-631613207u,
-4228658372u,
-3867875546u,
-3531368319u,
-3804516756u,
-3317755099u,
-1619744564u,
-2884717286u,
-1088213445u,
-2667691076u,
-3727873235u,
-2330406762u,
-858590707u,
-123802208u,
-4150036245u,
-182283099u,
-1478882570u,
-3282617403u,
-819171187u,
-1172627392u,
-4254302102u,
-2957028020u,
-437030323u,
-2452147680u,
-2868246750u,
-3530169402u,
-3154852132u,
-215019192u,
-357580983u,
-1354454461u,
-1108813287u,
-2324008118u,
-2315997713u,
-4181601562u,
-1360882441u,
-92423273u,
-3048866755u,
-3369188505u,
-3664371439u,
-2920710428u,
-1027891570u,
-2653166430u,
-3461888315u,
-1475780447u,
-292769636u,
-1737473313u,
-4064110516u,
-4170160075u,
-762850927u,
-3630603695u,
-2803307356u,
-844987665u,
-460980967u,
-3005635467u,
-2802568977u,
-588668033u,
-2148940781u,
-3239099984u,
-1266953698u,
-3197808789u,
-3519942533u,
-2511995334u,
-2553810188u,
-871667697u,
-1358675720u,
-1499319171u,
-2044931270u,
-1210355103u,
-807152540u,
-3262320756u,
-2810214575u,
-1813386141u,
-4089465863u,
-903928165u,
-1388899322u,
-3209183659u,
-834536144u,
-2733354550u,
-2742289921u,
-3689042563u,
-2655593281u,
-4169686303u,
-415985561u,
-138892376u,
-516115393u,
-65683883u,
-4162865100u,
-889944635u,
-313566528u,
-3346420907u,
-1504303591u,
-2256809275u,
-742243229u,
-779775302u,
-3140940172u,
-2312556111u,
-2304095772u,
-1151741606u,
-2194712422u,
-1714084652u,
-3272736835u,
-1311540658u,
-191179665u,
-3996605106u,
-1657345233u,
-4205442903u,
-1553339212u,
-2351843044u,
-1647502006u,
-2525516233u,
-292202846u,
-1498646290u,
-1429323381u,
-974274898u,
-3759331561u,
-2881238887u,
-826787221u,
-1069622448u,
-221991032u,
-1462969082u,
-2799661508u,
-364022781u,
-2594244377u,
-797773898u,
-4097839290u,
-1529150125u,
-2456805570u,
-541503425u,
-3936326142u,
-3112719954u,
-775223581u,
-3074018423u,
-3198488875u,
-1772191849u,
-2456535211u,
-3154686028u,
-1520862019u,
-4005829426u,
-1306433767u,
-1943028506u,
-2246000782u,
-1057766454u,
-3761996982u,
-3441075333u,
-898641979u,
-3450209088u,
-3941329307u,
-3289922449u,
-3085075827u,
-1814193220u,
-690422997u,
-2627846676u,
-2653520704u,
-3739145533u,
-3996776010u,
-2287072592u,
-1346671698u,
-3082629900u,
-2298811274u,
-3639722036u,
-1729419228u,
-1836765953u,
-3708118742u,
-213436u,
-950223749u,
-3734247682u,
-2924575678u,
-1382024841u,
-2431637732u,
-3448846682u,
-1341301397u,
-4206956590u,
-1730650902u,
-2581075456u,
-1542359141u,
-707222542u,
-2925350541u,
-3846303536u,
-3579103295u,
-3932175763u,
-1339615732u,
-848825750u,
-1070170828u,
-1964973818u,
-577060344u,
-607721296u,
-4031023048u,
-406883794u,
-3991905552u,
-1198544082u,
-872468460u,
-1044847096u,
-3159976313u,
-3020028266u,
-2108700400u,
-3373767922u,
-264431841u,
-2817097007u,
-3700061048u,
-1733731531u,
-3459415893u,
-80378591u,
-1479875104u,
-19735612u,
-1382658977u,
-3416562245u,
-1959852842u,
-2384002344u,
-124683828u,
-3725782174u,
-2300301222u,
-393852269u,
-1302492002u,
-3623776492u,
-3787086417u,
-1730024749u,
-1710531361u,
-443700716u,
-1461987482u,
-671998131u,
-3018380746u,
-2592292305u,
-3390799372u,
-3945101155u,
-3743494852u,
-3716045582u,
-996005166u,
-320698449u,
-3420221765u,
-1518157951u,
-2555810666u,
-3381929684u,
-2019638523u,
-3088262796u,
-2072178906u,
-3433649364u,
-203906916u,
-34663784u,
-290301305u,
-1188021504u,
-3754681145u,
-3920313139u,
-2840496520u,
-1656802962u,
-2288475489u,
-3399185138u,
-1296000826u,
-2362384746u,
-309633360u,
-2719851778u,
-776035930u,
-3200733043u,
-365690832u,
-3326378243u,
-1500331457u,
-1625708592u,
-4230903462u,
-715344888u,
-3363777768u,
-2243620288u,
-2890765789u,
-553154234u,
-4044100108u,
-4056887320u,
-1185656496u,
-3671476744u,
-1064586897u,
-1154949698u,
-3493481974u,
-1294573722u,
-1869224012u,
-2530084956u,
-995321553u,
-833419249u,
-563815282u,
-250258043u,
-2970801822u,
-441007535u,
-42246961u,
-2820426655u,
-2878882436u,
-2363245780u,
-2138489282u,
-2972360481u,
-2312619393u,
-3598664848u,
-3071556076u,
-776990325u,
-3220427357u,
-2257939577u,
-3817305903u,
-1502979698u,
-3159755934u,
-3955997276u,
-2423850008u,
-1959927572u,
-1219782288u,
-4119776679u,
-1124253854u,
-3678052422u,
-2620644947u,
-1262408666u,
-3480072280u,
-2627137665u,
-807538749u,
-3276646337u,
-518510128u,
-1137828655u,
-1498449110u,
-3031692317u,
-1125635969u,
-1130096111u,
-780007336u,
-3111856399u,
-1014917264u,
-780877352u,
-2909458336u,
-4235949214u,
-2423879289u,
-275888892u,
-3891926795u,
-3538163953u,
-54815161u,
-162228302u,
-258154068u,
-3554455591u,
-1801469029u,
-2801563220u,
-726560058u,
-2450221940u,
-3677582978u,
-440993800u,
-424762443u,
-2624525253u,
-2587715329u,
-2292264424u,
-1074856749u,
-3294752007u,
-3164112672u,
-2399146799u,
-1920182465u,
-3858835361u,
-193755240u,
-3333610311u,
-1757504059u,
-2576027039u,
-2775253365u,
-2939191561u,
-1046147275u,
-235149906u,
-4262218222u,
-2900542726u,
-2260154702u,
-1019551635u,
-1194720570u,
-3519118691u,
-3039483153u,
-84918216u,
-3053381097u,
-2572396843u,
-3849763371u,
-2782686780u,
-3710049554u,
-3403430713u,
-2346080784u,
-2496307442u,
-1597281872u,
-696018239u,
-704625714u,
-623026921u,
-3182413559u,
-3794540330u,
-305497722u,
-1592680199u,
-2377854072u,
-3060601746u,
-3953057908u,
-3941551588u,
-1033716182u,
-2765716854u,
-1309699058u,
-3519400181u,
-3073370877u,
-115583008u,
-4032909296u,
-2944563574u,
-3762753718u,
-192842727u,
-1711348701u,
-3086147235u,
-1658229443u,
-1479783872u,
-3839977157u,
-225619117u,
-1349684817u,
-1964813173u,
-565753187u,
-2530252046u,
-840014353u,
-1645183704u,
-3668429078u,
-3438418557u,
-639704059u,
-360837811u,
-2531807958u,
-1572353913u,
-2116037299u,
-1948437512u,
-744553393u,
-2380697034u,
-3775234105u,
-3816065157u,
-301868653u,
-2960939561u,
-3306528247u,
-2389296549u,
-805918610u,
-1759358265u,
-1760876328u,
-2827601706u,
-2944594708u,
-3313666458u,
-2022601495u,
-730938791u,
-193539397u,
-2026103244u,
-802928398u,
-2630934308u,
-782805818u,
-3499326016u,
-293509489u,
-3646131514u,
-3182478647u,
-854800333u,
-2284531628u,
-438528022u,
-2339298129u,
-1692289216u,
-2427728723u,
-46501288u,
-350652353u,
-1355971222u,
-889682372u,
-944799254u,
-2763906061u,
-2807550612u,
-2683762637u,
-100870317u,
-2449357318u,
-2638348436u,
-4206088869u,
-1788948473u,
-3537588549u,
-2782490204u,
-134406470u,
-2409190528u,
-2362439849u,
-1861661528u,
-2101513194u,
-1424834765u,
-3581765745u,
-3185999525u,
-2057487100u,
-2303941176u,
-3639628788u,
-1180265315u,
-230437935u,
-2108319366u,
-1131685143u,
-1055685292u,
-1509007009u,
-1258485140u,
-560525005u,
-3598799040u,
-3835680585u,
-1851859628u,
-332858996u,
-641769248u,
-4252450037u,
-865386707u,
-720719117u,
-3133612164u,
-3833045874u,
-3492515435u,
-2465970289u,
-4234420011u,
-573859916u,
-252532886u,
-870392318u,
-4051320920u,
-894929092u,
-3748361688u,
-699355960u,
-1885212350u,
-1609756949u,
-461896870u,
-1337065461u,
-1775211059u,
-1786193749u,
-2815154643u,
-2128729882u,
-969639529u,
-3960427545u,
-859416958u,
-2739758802u,
-2698032197u,
-2813292418u,
-1985467524u,
-396604317u,
-4122172759u,
-1201259789u,
-4282051702u,
-3270018895u,
-961215209u,
-961075860u,
-4211926998u,
-4088374597u,
-577510509u,
-3058349487u,
-4025377754u,
-2815478438u,
-471023164u,
-3947959608u,
-4161486934u,
-2299888461u,
-1103571511u,
-2450153872u,
-1839939275u,
-108299608u,
-858086440u,
-1030152945u,
-3895328530u,
-3009080718u,
-3690840454u,
-3847025277u,
-152331362u,
-161365689u,
-831319961u,
-2166017294u,
-3945322722u,
-4059970216u,
-1420824131u,
-2770648308u,
-1567250186u,
-2181067149u,
-1939743488u,
-3080158120u,
-3435218248u,
-2495237495u,
-3814085102u,
-3180983013u,
-3199054292u,
-2204745908u,
-1140337267u,
-2213569784u,
-1941879842u,
-2105562605u,
-3618835614u,
-2247103645u,
-2492473487u,
-856414299u,
-166022030u,
-4080104712u,
-3218935344u,
-3284220561u,
-4261581452u,
-1206944836u,
-3496705432u,
-2215996876u,
-3154627465u,
-3384005496u,
-742170556u,
-1333047620u,
-802680366u,
-156833431u,
-2682100354u,
-2493654830u,
-584848366u,
-1691693131u,
-2169934170u,
-779968026u,
-2099545800u,
-1423039695u,
-4292110968u,
-4266576788u,
-149142597u,
-748501873u,
-3865014822u,
-1913588198u,
-130285614u,
-3500768879u,
-915458923u,
-3071792750u,
-1339986633u,
-4143929149u,
-4048379479u,
-725193827u,
-1375113643u,
-2425277412u,
-4144659274u,
-465714768u,
-226991589u,
-2212127704u,
-3936145258u,
-2891024846u,
-3816000225u,
-979331165u,
-1749907536u,
-53847318u,
-1462525833u,
-2961425455u,
-368859113u,
-3572721452u,
-453048644u,
-1628629918u,
-3497673923u,
-3619079585u,
-139870565u,
-1518176798u,
-3933074281u,
-1878623729u,
-2074035641u,
-3016759257u,
-1313053591u,
-2557706970u,
-2348296582u,
-962370022u,
-2337285014u,
-1618936717u,
-1915877085u,
-2743743122u,
-3250783882u,
-1346652536u,
-143311109u,
-2443788461u,
-1048248964u,
-2806619339u,
-3263266976u,
-1668146349u,
-3397428868u,
-3276188862u,
-1774196343u,
-1993847813u,
-2771079610u,
-476672419u,
-2119050359u,
-2918326659u,
-2245402721u,
-2692910474u,
-2374383269u,
-342400227u,
-2961437795u,
-3899230368u,
-337787132u,
-3664444935u,
-1269451153u,
-2971526729u,
-1486511182u,
-791070133u,
-2570319890u,
-3482497490u,
-2134230518u,
-4273391202u,
-1825511330u,
-3947753714u,
-1389755724u,
-3995075516u,
-2081052615u,
-3626343470u,
-4213603435u,
-2137917278u,
-2898987303u,
-3059215715u,
-3383237881u,
-3003674434u,
-409174425u,
-1911915604u,
-2087728055u,
-2942005882u,
-3386522440u,
-714936074u,
-261924004u,
-3268784033u,
-1141188757u,
-2413217552u,
-1515163433u,
-};
-
-// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
-bool Test(int offset, int len = 0) {
-#undef Check
-#undef IsAlive
-
-#define Check(x) do { \
- const uint32_t actual = (x), e = expected[index++]; \
- bool ok = actual == e; \
- if (!ok) { \
- cerr << "expected " << hex << e << " but got " << actual << endl; \
- ++errors; \
- } \
- assert(ok); \
-} while (0)
-
-#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
-
- // After the following line is where the uses of "Check" and such will go.
- static int index = 0;
-if (offset == -1) { int alive = 0; IsAlive(farmhashsa::Hash32WithSeed(data, len++, SEED)); IsAlive(farmhashsa::Hash32(data, len++)); IsAlive(farmhashsa::Hash32(data, len++)); len -= 3; return alive > 0; }
-Check(farmhashsa::Hash32WithSeed(data + offset, len, SEED));
-Check(farmhashsa::Hash32(data + offset, len));
-
- return true;
-#undef Check
-#undef IsAlive
-}
-
-int RunTest() {
- Setup();
- int i = 0;
- cout << "Running farmhashsaTest";
- if (!Test(-1)) {
- cout << "... Unavailable\n";
- return NoteErrors();
- }
- // Good. The function is attempting to hash, so run the full test.
- int errors_prior_to_test = errors;
- for ( ; i < kTestSize - 1; i++) {
- Test(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- Test(0, i);
- }
- Test(0, kDataSize);
- cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
- return NoteErrors();
-}
-
-#else
-
-// After the following line is where the code to print hash codes will go.
-void Dump(int offset, int len) {
-cout << farmhashsa::Hash32WithSeed(data + offset, len, SEED) << "u," << endl;
-cout << farmhashsa::Hash32(data + offset, len) << "u," << endl;
-}
-
-#endif
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-
-} // namespace farmhashsaTest
-
-#if !TESTING
-int main(int argc, char** argv) {
- Setup();
- cout << "uint32_t expected[] = {\n";
- int i = 0;
- for ( ; i < kTestSize - 1; i++) {
- farmhashsaTest::Dump(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- farmhashsaTest::Dump(0, i);
- }
- farmhashsaTest::Dump(0, kDataSize);
- cout << "};\n";
-}
-#endif
-#ifndef FARMHASH_SELF_TEST_GUARD
-#define FARMHASH_SELF_TEST_GUARD
-#include <cstdio>
-#include <iostream>
-#include <string.h>
-
-using std::cout;
-using std::cerr;
-using std::endl;
-using std::hex;
-
-static const uint64_t kSeed0 = 1234567;
-static const uint64_t kSeed1 = k0;
-static const int kDataSize = 1 << 20;
-static const int kTestSize = 300;
-#define kSeed128 Uint128(kSeed0, kSeed1)
-
-static char data[kDataSize];
-
-static int completed_self_tests = 0;
-static int errors = 0;
-
-// Initialize data to pseudorandom values.
-void Setup() {
- if (completed_self_tests == 0) {
- uint64_t a = 9;
- uint64_t b = 777;
- for (int i = 0; i < kDataSize; i++) {
- a += b;
- b += a;
- a = (a ^ (a >> 41)) * k0;
- b = (b ^ (b >> 41)) * k0 + i;
- uint8_t u = b >> 37;
- memcpy(data + i, &u, 1); // uint8_t -> char
- }
- }
-}
-
-int NoteErrors() {
-#define NUM_SELF_TESTS 9
- if (++completed_self_tests == NUM_SELF_TESTS)
- std::exit(errors > 0);
- return errors;
-}
-
-template <typename T> inline bool IsNonZero(T x) {
- return x != 0;
-}
-
-template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
- return x != Uint128(0, 0);
-}
-
-#endif // FARMHASH_SELF_TEST_GUARD
-
-namespace farmhashsuTest {
-
-uint32_t CreateSeed(int offset, int salt) {
- uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h += static_cast<uint32_t>(offset & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- return h;
-}
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-#define SEED CreateSeed(offset, -1)
-#define SEED0 CreateSeed(offset, 0)
-#define SEED1 CreateSeed(offset, 1)
-
-#undef TESTING
-#define TESTING 1
-#if TESTING
-uint32_t expected[] = {
-4223616069u,
-3696677242u,
-4081014168u,
-2576519988u,
-2212771159u,
-1112731063u,
-1020067935u,
-3955445564u,
-1451961420u,
-653440099u,
-31917516u,
-2957164615u,
-2590087362u,
-3879448744u,
-176305566u,
-2447367541u,
-1359016305u,
-3363804638u,
-1117290165u,
-1062549743u,
-2437877004u,
-1894455839u,
-673206794u,
-3486923651u,
-3269862919u,
-2303349487u,
-1380660650u,
-595525107u,
-1525325287u,
-2025609358u,
-176408838u,
-1592885012u,
-864896482u,
-2101378090u,
-3489229104u,
-2118965695u,
-581644891u,
-2718789079u,
-631613207u,
-4228658372u,
-3867875546u,
-3531368319u,
-3804516756u,
-3317755099u,
-1619744564u,
-2884717286u,
-1088213445u,
-2667691076u,
-3727873235u,
-2330406762u,
-858590707u,
-457744844u,
-4150036245u,
-2000404290u,
-1478882570u,
-901678172u,
-819171187u,
-195942998u,
-4254302102u,
-3967266927u,
-437030323u,
-4018009204u,
-2868246750u,
-3540087514u,
-3154852132u,
-3319116625u,
-357580983u,
-3177665294u,
-1108813287u,
-1253366798u,
-2315997713u,
-510718750u,
-1360882441u,
-2770216279u,
-3048866755u,
-3406961221u,
-3664371439u,
-1151145514u,
-1027891570u,
-2699067992u,
-3461888315u,
-198061905u,
-292769636u,
-1106771795u,
-4064110516u,
-3258279756u,
-762850927u,
-1818699721u,
-2803307356u,
-3919169404u,
-460980967u,
-3125535078u,
-2802568977u,
-3582546426u,
-2148940781u,
-3963274378u,
-1266953698u,
-204185123u,
-1100034381u,
-3009193601u,
-4200651967u,
-274889605u,
-2700589508u,
-952511689u,
-3765324859u,
-3465498478u,
-4014967037u,
-2070988082u,
-2972423530u,
-3068638223u,
-4156773651u,
-489509804u,
-1323863238u,
-3731914806u,
-2846098469u,
-2728930632u,
-346814072u,
-848146907u,
-551160669u,
-4165126521u,
-2039095001u,
-4179859388u,
-2434936359u,
-2764414551u,
-238491210u,
-732483969u,
-3366512764u,
-478307468u,
-4124179572u,
-4142733597u,
-1953448206u,
-4199329278u,
-865077060u,
-2627662116u,
-2802499360u,
-3141206831u,
-1959218197u,
-911371451u,
-125987200u,
-2821366175u,
-2530992747u,
-2409206225u,
-117991880u,
-2133402461u,
-895510531u,
-428719601u,
-3036014536u,
-1223783733u,
-733793540u,
-970650405u,
-547701766u,
-570764615u,
-3224485368u,
-3192714940u,
-319942831u,
-3940200341u,
-362056204u,
-2832368105u,
-1853281226u,
-3296434636u,
-3752508307u,
-604292768u,
-2231940616u,
-1204094681u,
-866194005u,
-2405201650u,
-2466384396u,
-380829379u,
-230033818u,
-2783417588u,
-4249886729u,
-829569301u,
-2988322580u,
-2299983554u,
-74748560u,
-737514425u,
-3153050211u,
-652642663u,
-1270205115u,
-227197032u,
-2773091790u,
-325849216u,
-49998791u,
-4043203010u,
-3662748068u,
-1709364383u,
-1179105165u,
-1478504366u,
-2980456610u,
-1167476429u,
-1590390732u,
-1306256496u,
-292008135u,
-374690995u,
-1809200819u,
-1680595904u,
-646040226u,
-1742445560u,
-2435776844u,
-3703683804u,
-478742495u,
-814967947u,
-2698190177u,
-1003617993u,
-1436118705u,
-217056304u,
-1412287094u,
-2738417466u,
-2933279339u,
-3461877733u,
-1203141205u,
-2119492857u,
-1134895723u,
-1560001021u,
-3786320122u,
-3748116258u,
-3486219595u,
-702138030u,
-1062984182u,
-232789133u,
-1566523968u,
-3885443778u,
-1820171888u,
-3655858585u,
-2316903005u,
-2678779620u,
-395625433u,
-1609107564u,
-3108726411u,
-2937837224u,
-3911907151u,
-557272509u,
-3893435978u,
-1542613576u,
-1079886893u,
-2624566322u,
-1413700616u,
-2796974006u,
-1922556114u,
-562820464u,
-2845409784u,
-54180312u,
-1898782464u,
-3681814953u,
-2417064617u,
-1815464483u,
-911626132u,
-2964575550u,
-1852696128u,
-2319647785u,
-1998904590u,
-619992689u,
-3073207513u,
-1238163512u,
-3199435982u,
-828667254u,
-3561155502u,
-3943095163u,
-1045711849u,
-2238679131u,
-2114975398u,
-713808403u,
-3871787494u,
-2572031161u,
-2360934075u,
-2337781107u,
-262596504u,
-693836699u,
-2129369850u,
-3543189427u,
-962205222u,
-3685581020u,
-692974477u,
-725182211u,
-646123906u,
-2368836544u,
-2505872733u,
-1999977610u,
-1639885802u,
-1475058032u,
-207023609u,
-2773581234u,
-3524857793u,
-3433371102u,
-3243027613u,
-1787668353u,
-985757946u,
-3896012929u,
-702356957u,
-3559331129u,
-884084870u,
-4009998120u,
-648888720u,
-1403349048u,
-1624342778u,
-1766674171u,
-2518582204u,
-3251243146u,
-792751003u,
-1377201813u,
-3629686054u,
-1583734324u,
-3647107626u,
-4258564381u,
-1469878609u,
-1940598241u,
-2755003690u,
-1907120418u,
-109916701u,
-775347954u,
-2090960874u,
-611281803u,
-3470490146u,
-3301663253u,
-1835412158u,
-1803066146u,
-591872433u,
-550703713u,
-1495089683u,
-826492808u,
-817200035u,
-4177474571u,
-688070143u,
-971427632u,
-1442499481u,
-3568640348u,
-2789993738u,
-85808128u,
-2058346726u,
-394058570u,
-3466511434u,
-318905230u,
-4149248030u,
-415308316u,
-165997598u,
-1219639412u,
-1648022659u,
-2857432523u,
-1422508004u,
-468095522u,
-296968649u,
-430250611u,
-1775562314u,
-2976361671u,
-1040036362u,
-1372510167u,
-292746272u,
-3408238954u,
-626061886u,
-1317637569u,
-1237775792u,
-1218490455u,
-2224234499u,
-590942419u,
-713995643u,
-3541889330u,
-4140218960u,
-3529791107u,
-354462673u,
-842607274u,
-365048533u,
-2638303414u,
-3560458014u,
-31621379u,
-4210854794u,
-1273118792u,
-2572743762u,
-3513175801u,
-402066986u,
-602524471u,
-565029192u,
-180576438u,
-1288605959u,
-2896244423u,
-1420543484u,
-1329862227u,
-1791567324u,
-4248690247u,
-12917038u,
-3483481310u,
-2082050731u,
-1611921143u,
-2443766548u,
-2216338811u,
-2528006095u,
-2984009021u,
-674210884u,
-2857608106u,
-2155534809u,
-1023105067u,
-2968955846u,
-3303624302u,
-2502112850u,
-245749006u,
-3175229091u,
-3342796184u,
-3613785362u,
-1614168851u,
-2582149283u,
-895403488u,
-416205023u,
-3792242000u,
-529397534u,
-299415203u,
-4284673348u,
-2096851282u,
-1864524731u,
-2012577738u,
-3426363316u,
-1387308508u,
-1143610148u,
-2027467219u,
-3772856163u,
-3453862623u,
-2661437174u,
-2047145955u,
-2533381447u,
-2059534115u,
-439426587u,
-1537543414u,
-2384289877u,
-3174229055u,
-2658017753u,
-2293148474u,
-2359450158u,
-3930242475u,
-1510302397u,
-3354288821u,
-920095603u,
-2415746928u,
-2729472638u,
-2261143371u,
-848667611u,
-919157153u,
-3322393117u,
-4103299943u,
-413569608u,
-68911216u,
-3334990170u,
-1228068652u,
-1570056373u,
-1905477543u,
-2622302276u,
-2935063895u,
-3224810004u,
-4211768578u,
-828688131u,
-3556122839u,
-1930935348u,
-2605825202u,
-1540993970u,
-3209115883u,
-122847500u,
-665638794u,
-506571051u,
-2691795295u,
-3996966556u,
-714660621u,
-3662432239u,
-470651837u,
-1807432621u,
-3755290953u,
-359878860u,
-2793081615u,
-4065031431u,
-904653062u,
-2317800777u,
-568501094u,
-3492871707u,
-2738806116u,
-2883859610u,
-3242080257u,
-364246691u,
-3601786516u,
-3159362524u,
-1578272201u,
-1283574375u,
-2912186103u,
-2256279032u,
-1540671086u,
-2356088973u,
-2892277779u,
-3441449267u,
-2225005503u,
-3846428419u,
-2014549218u,
-2290734767u,
-2126684614u,
-4235463487u,
-3811556204u,
-174739661u,
-767525888u,
-47684458u,
-4211168099u,
-889063422u,
-469864411u,
-767407110u,
-413337343u,
-1618456644u,
-2814499820u,
-2401124192u,
-632089437u,
-1234980238u,
-1288585402u,
-3153169944u,
-2917822069u,
-1843320264u,
-3794359132u,
-3074573530u,
-258629454u,
-3813357060u,
-3806887248u,
-1665524736u,
-3324533324u,
-3005091922u,
-793108368u,
-1529669805u,
-2332660395u,
-2217730223u,
-2634687611u,
-442806463u,
-1968135266u,
-454523002u,
-3177866230u,
-2808960136u,
-4259114138u,
-4103264843u,
-3103714075u,
-2462967542u,
-1466891491u,
-477973764u,
-834565647u,
-741089037u,
-218837573u,
-1710536528u,
-2469088212u,
-1229072375u,
-2828341u,
-176923431u,
-985763350u,
-4095477420u,
-1984145538u,
-1870791084u,
-674956677u,
-1978138947u,
-1296493993u,
-1818183554u,
-3443333721u,
-2124949983u,
-2549590262u,
-2700850794u,
-2662736367u,
-739638109u,
-4061447096u,
-2960078422u,
-2453781158u,
-929570940u,
-3200328383u,
-2406328791u,
-1419180666u,
-2152455739u,
-2805741044u,
-3305999074u,
-3183816361u,
-2303165050u,
-4922104u,
-63096005u,
-936656347u,
-3104453886u,
-1088673880u,
-1113407526u,
-1457890086u,
-453478383u,
-1107686695u,
-3626027824u,
-1159687359u,
-2248467888u,
-2004578380u,
-3274954621u,
-1787958646u,
-2628726704u,
-1138419798u,
-3735442315u,
-692385301u,
-313807213u,
-2329068673u,
-59375364u,
-3261084359u,
-2088644507u,
-2471153194u,
-788336435u,
-4024527246u,
-141504460u,
-2307553888u,
-1930559950u,
-48975711u,
-2745693338u,
-230161982u,
-3429230862u,
-1335968626u,
-609591304u,
-57435073u,
-4279281136u,
-3152151665u,
-3984484924u,
-3459883943u,
-397478330u,
-1738762229u,
-3033590066u,
-3611539498u,
-1363463523u,
-3319364965u,
-2671169141u,
-3819548561u,
-1691193757u,
-2423834608u,
-2820147055u,
-1378120632u,
-1240565187u,
-3180720050u,
-680831086u,
-3309658414u,
-1986166490u,
-762099827u,
-510883662u,
-2047373648u,
-3606742294u,
-3894965352u,
-2342078853u,
-1091255717u,
-776594727u,
-3217317445u,
-1574468485u,
-3844504016u,
-2819598918u,
-1037401010u,
-2550943503u,
-3867184001u,
-1687911772u,
-165313836u,
-1679575281u,
-2418947263u,
-2038774952u,
-3913543652u,
-3209155736u,
-149905221u,
-3859604717u,
-713919631u,
-4069810796u,
-1882959164u,
-1019939034u,
-2379867302u,
-3666323035u,
-1157389013u,
-2422300650u,
-3366777340u,
-2526452062u,
-1313747885u,
-1039617868u,
-1620553692u,
-2032976978u,
-578789528u,
-1592846839u,
-2270630604u,
-897850577u,
-1603294178u,
-3105664807u,
-1442670138u,
-1728019360u,
-79313861u,
-1683031101u,
-1913067024u,
-4070719870u,
-708986470u,
-2586453359u,
-3993348863u,
-3358251279u,
-3003552537u,
-750174793u,
-836888956u,
-4190747426u,
-4251291318u,
-4145164938u,
-1366883260u,
-1912910955u,
-510192669u,
-1851315039u,
-3574241274u,
-3220062924u,
-2821142039u,
-1317082195u,
-2274293302u,
-1839219569u,
-126586168u,
-3989293643u,
-2680178207u,
-347056948u,
-799681430u,
-2864517481u,
-3180404853u,
-213140045u,
-1956305184u,
-1474675286u,
-3085723423u,
-2841859626u,
-308421914u,
-3670309263u,
-1765052231u,
-245459238u,
-113434331u,
-4079521092u,
-2115235526u,
-2943408816u,
-1055476938u,
-1506442339u,
-2291296392u,
-3267864332u,
-1282145528u,
-3700108015u,
-1932843667u,
-2677701670u,
-6041177u,
-3889648557u,
-1461025478u,
-};
-
-// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
-bool Test(int offset, int len = 0) {
-#undef Check
-#undef IsAlive
-
-#define Check(x) do { \
- const uint32_t actual = (x), e = expected[index++]; \
- bool ok = actual == e; \
- if (!ok) { \
- cerr << "expected " << hex << e << " but got " << actual << endl; \
- ++errors; \
- } \
- assert(ok); \
-} while (0)
-
-#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
-
- // After the following line is where the uses of "Check" and such will go.
- static int index = 0;
-if (offset == -1) { int alive = 0; IsAlive(farmhashsu::Hash32WithSeed(data, len++, SEED)); IsAlive(farmhashsu::Hash32(data, len++)); IsAlive(farmhashsu::Hash32(data, len++)); len -= 3; return alive > 0; }
-Check(farmhashsu::Hash32WithSeed(data + offset, len, SEED));
-Check(farmhashsu::Hash32(data + offset, len));
-
- return true;
-#undef Check
-#undef IsAlive
-}
-
-int RunTest() {
- Setup();
- int i = 0;
- cout << "Running farmhashsuTest";
- if (!Test(-1)) {
- cout << "... Unavailable\n";
- return NoteErrors();
- }
- // Good. The function is attempting to hash, so run the full test.
- int errors_prior_to_test = errors;
- for ( ; i < kTestSize - 1; i++) {
- Test(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- Test(0, i);
- }
- Test(0, kDataSize);
- cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
- return NoteErrors();
-}
-
-#else
-
-// After the following line is where the code to print hash codes will go.
-void Dump(int offset, int len) {
-cout << farmhashsu::Hash32WithSeed(data + offset, len, SEED) << "u," << endl;
-cout << farmhashsu::Hash32(data + offset, len) << "u," << endl;
-}
-
-#endif
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-
-} // namespace farmhashsuTest
-
-#if !TESTING
-int main(int argc, char** argv) {
- Setup();
- cout << "uint32_t expected[] = {\n";
- int i = 0;
- for ( ; i < kTestSize - 1; i++) {
- farmhashsuTest::Dump(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- farmhashsuTest::Dump(0, i);
- }
- farmhashsuTest::Dump(0, kDataSize);
- cout << "};\n";
-}
-#endif
-#ifndef FARMHASH_SELF_TEST_GUARD
-#define FARMHASH_SELF_TEST_GUARD
-#include <cstdio>
-#include <iostream>
-#include <string.h>
-
-using std::cout;
-using std::cerr;
-using std::endl;
-using std::hex;
-
-static const uint64_t kSeed0 = 1234567;
-static const uint64_t kSeed1 = k0;
-static const int kDataSize = 1 << 20;
-static const int kTestSize = 300;
-#define kSeed128 Uint128(kSeed0, kSeed1)
-
-static char data[kDataSize];
-
-static int completed_self_tests = 0;
-static int errors = 0;
-
-// Initialize data to pseudorandom values.
-void Setup() {
- if (completed_self_tests == 0) {
- uint64_t a = 9;
- uint64_t b = 777;
- for (int i = 0; i < kDataSize; i++) {
- a += b;
- b += a;
- a = (a ^ (a >> 41)) * k0;
- b = (b ^ (b >> 41)) * k0 + i;
- uint8_t u = b >> 37;
- memcpy(data + i, &u, 1); // uint8_t -> char
- }
- }
-}
-
-int NoteErrors() {
-#define NUM_SELF_TESTS 9
- if (++completed_self_tests == NUM_SELF_TESTS)
- std::exit(errors > 0);
- return errors;
-}
-
-template <typename T> inline bool IsNonZero(T x) {
- return x != 0;
-}
-
-template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
- return x != Uint128(0, 0);
-}
-
-#endif // FARMHASH_SELF_TEST_GUARD
-
-namespace farmhashteTest {
-
-uint32_t CreateSeed(int offset, int salt) {
- uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h += static_cast<uint32_t>(offset & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- return h;
-}
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-#define SEED CreateSeed(offset, -1)
-#define SEED0 CreateSeed(offset, 0)
-#define SEED1 CreateSeed(offset, 1)
-
-#undef TESTING
-#define TESTING 1
-#if TESTING
-uint32_t expected[] = {
-1140953930u, 861465670u,
-3277735313u, 2681724312u,
-2598464059u, 797982799u,
-890626835u, 800175912u,
-2603993599u, 921001710u,
-1410420968u, 2134990486u,
-3283896453u, 1867689945u,
-2914424215u, 2244477846u,
-255297188u, 2992121793u,
-1110588164u, 4186314283u,
-161451183u, 3943596029u,
-4019337850u, 452431531u,
-283198166u, 2741341286u,
-3379021470u, 2557197665u,
-299850021u, 2532580744u,
-452473466u, 1706958772u,
-1298374911u, 3099673830u,
-2199864459u, 3696623795u,
-236935126u, 2976578695u,
-4055299123u, 3281581178u,
-1053458494u, 1882212500u,
-2305012065u, 2169731866u,
-3456121707u, 275903667u,
-458884671u, 3033004529u,
-3058973506u, 2379411653u,
-1898235244u, 1402319660u,
-2700149065u, 2699376854u,
-147814787u, 720739346u,
-2433714046u, 4222949502u,
-4220361840u, 1712034059u,
-3425469811u, 3690733394u,
-4148372108u, 1330324210u,
-594028478u, 2921867846u,
-1635026870u, 192883107u,
-780716741u, 1728752234u,
-3280331829u, 326029180u,
-3969463346u, 1436364519u,
-393215742u, 3349570000u,
-3824583307u, 1612122221u,
-2859809759u, 3808705738u,
-1379537552u, 1646032583u,
-2233466664u, 1432476832u,
-4023053163u, 2650381482u,
-2052294713u, 3552092450u,
-1628777059u, 1499109081u,
-3476440786u, 3829307897u,
-2960536756u, 1554038301u,
-1145519619u, 3190844552u,
-2902102606u, 3600725550u,
-237495366u, 540224401u,
-65721842u, 489963606u,
-1448662590u, 397635823u,
-1596489240u, 1562872448u,
-1790705123u, 2128624475u,
-180854224u, 2604346966u,
-1435705557u, 1262831810u,
-155445229u, 1672724608u,
-1669465176u, 1341975128u,
-663607706u, 2077310004u,
-3610042449u, 1911523866u,
-1043692997u, 1454396064u,
-2563776023u, 294527927u,
-1099072299u, 1389770549u,
-703505868u, 678706990u,
-2952353448u, 2026137563u,
-3603803785u, 629449419u,
-1933894405u, 3043213226u,
-226132789u, 2489287368u,
-1552847036u, 645684964u,
-3828089804u, 3632594520u,
-187883449u, 230403464u,
-3151491850u, 3272648435u,
-3729087873u, 1303930448u,
-2002861219u, 165370827u,
-916494250u, 1230085527u,
-3103338579u, 3064290191u,
-3807265751u, 3628174014u,
-231181488u, 851743255u,
-2295806711u, 1781190011u,
-2988893883u, 1554380634u,
-1142264800u, 3667013118u,
-1968445277u, 315203929u,
-2638023604u, 2290487377u,
-732137533u, 1909203251u,
-440398219u, 1891630171u,
-1380301172u, 1498556724u,
-4072067757u, 4165088768u,
-4204318635u, 441430649u,
-3931792696u, 197618179u,
-956300927u, 914413116u,
-3010839769u, 2837339569u,
-2148126371u, 1913303225u,
-3074915312u, 3117299654u,
-4139181436u, 2993479124u,
-3178848746u, 1357272220u,
-1438494951u, 507436733u,
-667183474u, 2084369203u,
-3854939912u, 1413396341u,
-126024219u, 146044391u,
-1016656857u, 3022024459u,
-3254014218u, 429095991u,
-990500595u, 3056862311u,
-985653208u, 1718653828u,
-623071693u, 366414107u,
-1771289760u, 2293458109u,
-3047342438u, 2991127487u,
-3120876698u, 1684583131u,
-3638043310u, 1170404994u,
-863214540u, 1087193030u,
-199124911u, 520792961u,
-3169775996u, 1577421232u,
-3331828431u, 1013201099u,
-1716848157u, 4033596884u,
-1770708857u, 4229339322u,
-1146169032u, 1434258493u,
-3824360466u, 3242407770u,
-1926419493u, 2649785113u,
-872586426u, 762243036u,
-2736953692u, 816692935u,
-1571283333u, 3555213933u,
-2266795890u, 3781899767u,
-4290630595u, 517646945u,
-3006163611u, 2180594090u,
-959214578u, 558910384u,
-1283799121u, 3047062993u,
-3830962609u, 2391606125u,
-3544509313u, 622325861u,
-834785312u, 382936554u,
-1421463872u, 788479970u,
-1825135056u, 2725923798u,
-580988377u, 2826990641u,
-247825043u, 3167748333u,
-812546227u, 2506885666u,
-2584372201u, 1758123094u,
-1891789696u, 389974094u,
-345313518u, 2022370576u,
-3886113119u, 3338548567u,
-1083486947u, 2583576230u,
-1776047957u, 1771384107u,
-3604937815u, 3198590202u,
-3027522813u, 4155628142u,
-4232136669u, 427759438u,
-4244322689u, 542201663u,
-1549591985u, 2856634168u,
-556609672u, 45845311u,
-1175961330u, 3948351189u,
-4165739882u, 4194218315u,
-1634635545u, 4151937410u,
-713127376u, 1467786451u,
-1327394015u, 2743592929u,
-2638154051u, 810082938u,
-3077742128u, 1062268187u,
-4084325664u, 3810665822u,
-3735739145u, 2794294783u,
-2335576331u, 2560479831u,
-690240711u, 997658837u,
-2442302747u, 3948961926u,
-3958366652u, 3067277639u,
-2059157774u, 1211737169u,
-1516711748u, 2339636583u,
-4188504038u, 59581167u,
-2767897792u, 1389679610u,
-2658147000u, 2643979752u,
-3758739543u, 4189944477u,
-1454470782u, 100876854u,
-2995362413u, 118817200u,
-3252925478u, 2062343506u,
-2804483644u, 3088828656u,
-1231633714u, 4168280671u,
-2931588131u, 3284356565u,
-1255909792u, 3130054947u,
-4173605289u, 1407328702u,
-1677744031u, 3532596884u,
-3162657845u, 3887208531u,
-2256541290u, 3459463480u,
-3740979556u, 259034107u,
-392987633u, 3233195759u,
-3606709555u, 3424793077u,
-315836068u, 3200749877u,
-4065431359u, 760633989u,
-2982018998u, 1811050648u,
-234531934u, 1115203611u,
-3897494162u, 1516407838u,
-1603559457u, 323296368u,
-2632963283u, 1778459926u,
-2879836826u, 2146672889u,
-3486330348u, 492621815u,
-1231665285u, 2457048126u,
-3438440082u, 2217471853u,
-3355404249u, 3275550588u,
-1052645068u, 862072556u,
-4110617119u, 3745267835u,
-2657392572u, 4279236653u,
-1688445808u, 701920051u,
-956734128u, 581695350u,
-3157862788u, 2585726058u,
-1192588249u, 1410111809u,
-1651193125u, 3326135446u,
-1073280453u, 97376972u,
-2513844237u, 2187968410u,
-3976859649u, 4267859263u,
-3429034542u, 564493077u,
-3000537321u, 479241367u,
-3845637831u, 2868987960u,
-51544337u, 1029173765u,
-393624922u, 704325635u,
-2357610553u, 1418509533u,
-2007814586u, 3866658271u,
-3082385053u, 735688735u,
-916110004u, 3283299459u,
-1051684175u, 1083796807u,
-4074716319u, 813690332u,
-144264390u, 1439630796u,
-1508556987u, 675582689u,
-3748881891u, 3195309868u,
-362884708u, 1616408198u,
-43233176u, 837301135u,
-881504822u, 3254795114u,
-1385506591u, 2799925823u,
-1469874582u, 3464841997u,
-497175391u, 3929484338u,
-3975771289u, 1798536177u,
-2926265846u, 1374242438u,
-3675707838u, 4205965408u,
-3153165629u, 1499475160u,
-187287713u, 548490821u,
-3255259608u, 4247675634u,
-1940181471u, 3779953975u,
-687167150u, 2319566715u,
-1742785722u, 785893184u,
-2296977392u, 2778575413u,
-1794720651u, 48131484u,
-4084891412u, 1160134629u,
-3737623280u, 823113169u,
-3423207646u, 3803213486u,
-710625654u, 4116162021u,
-3693420287u, 4167766971u,
-1666602807u, 295320990u,
-3513255468u, 2487440590u,
-234080704u, 4004655503u,
-2971762528u, 1479656873u,
-4090178629u, 4044418876u,
-391947536u, 1462554406u,
-3909295855u, 1239580330u,
-1515601363u, 2011102035u,
-1442068334u, 4265993528u,
-1191921695u, 2291355695u,
-4257172787u, 576405853u,
-314332944u, 4038839101u,
-55559918u, 2378985842u,
-711098718u, 2425317635u,
-1644327317u, 1401013391u,
-4193760037u, 2958260436u,
-3167371443u, 3062418115u,
-3800755475u, 3167030094u,
-3489648204u, 1405430357u,
-526177822u, 2602636307u,
-915406019u, 4264167741u,
-1484090483u, 3070944737u,
-254529415u, 4017058800u,
-1702710265u, 1029665228u,
-2000382906u, 3185573940u,
-1381258384u, 4036354071u,
-2900841028u, 2670703363u,
-2921748807u, 2899069938u,
-4130543625u, 688472265u,
-4186808827u, 1054670286u,
-1132985391u, 2840525968u,
-4175776103u, 338058159u,
-1735964501u, 1539305024u,
-3497121710u, 1568260669u,
-2227290760u, 146827036u,
-3977176001u, 4060134777u,
-857488494u, 250055052u,
-4284109679u, 2502815838u,
-2592281721u, 1603444633u,
-1390562014u, 1556658131u,
-616327404u, 2448966429u,
-3051191726u, 3891353218u,
-1213304082u, 762328245u,
-2239052397u, 1082330589u,
-2455957292u, 201837927u,
-405397452u, 3079886794u,
-2583939798u, 2848283092u,
-3750724631u, 883849006u,
-3204198988u, 3341327098u,
-1855234968u, 1982110346u,
-1485529487u, 541496720u,
-4117290321u, 3607433551u,
-2168864636u, 133643215u,
-1055817409u, 3847827123u,
-2960769387u, 4046101649u,
-1176127003u, 4015671361u,
-4243643405u, 2849988118u,
-517111221u, 1796672358u,
-2045051700u, 3452457457u,
-2948254999u, 2102063419u,
-1556410577u, 1536380876u,
-3776661467u, 3281002516u,
-1735616066u, 1539151988u,
-1087795162u, 3332431596u,
-685631442u, 1147951686u,
-95237878u, 2005032160u,
-4012206915u, 4224354805u,
-3204999386u, 2415262714u,
-1433635018u, 116647396u,
-83167836u, 2881562655u,
-2729416454u, 1029284767u,
-881378302u, 2159170082u,
-555057366u, 1169104445u,
-3963877000u, 1919171906u,
-336034862u, 2017579106u,
-4059340529u, 3020819343u,
-865146997u, 2473524405u,
-944743644u, 1694443528u,
-1804513294u, 2904752429u,
-617975720u, 3671562289u,
-260177668u, 505662155u,
-1885941445u, 2504509403u,
-2260041112u, 1019936943u,
-3722741628u, 1511077569u,
-3100701179u, 1379422864u,
-1535670711u, 773792826u,
-1103819072u, 2089123665u,
-1157547425u, 329152940u,
-4142587430u, 484732447u,
-2475035432u, 1120017626u,
-412145504u, 965125959u,
-324924679u, 2809286837u,
-2842141483u, 4029205195u,
-2974306813u, 515627448u,
-3791551981u, 1097806406u,
-3873078673u, 136118734u,
-1872130856u, 3632422367u,
-3574135531u, 4017075736u,
-1699452298u, 1403506686u,
-344414660u, 1189129691u,
-3487080616u, 1516736273u,
-1805475756u, 2562064338u,
-163335594u, 2732147834u,
-4077452507u, 2984955003u,
-4271866024u, 3071338162u,
-2347111903u, 873829983u,
-1948409509u, 1923531348u,
-459509140u, 771592405u,
-1750124750u, 2334938333u,
-213811117u, 2586632018u,
-185232757u, 4032960199u,
-2447383637u, 284777551u,
-1654276320u, 2687561076u,
-3512945009u, 308584855u,
-1861027147u, 4102279334u,
-3203802620u, 1692079268u,
-4250142168u, 2565680167u,
-1507046104u, 841195925u,
-520565830u, 3674576684u,
-38924274u, 3770488806u,
-2414430882u, 3978473838u,
-3703994407u, 69201295u,
-3099963860u, 1255084262u,
-690971838u, 3539996781u,
-3696902571u, 3593730713u,
-2363435042u, 54945052u,
-1785765213u, 184911581u,
-1586241476u, 1939595371u,
-2534883189u, 2432427547u,
-2374171993u, 2039128933u,
-2955715987u, 2295501078u,
-2741583197u, 1280920000u,
-686818699u, 1238742497u,
-3843660102u, 82177963u,
-1281043691u, 1121403845u,
-1697846708u, 284852964u,
-278661677u, 2889101923u,
-2127558730u, 713121337u,
-872502474u, 511142139u,
-1261140657u, 1747052377u,
-2108187161u, 927011680u,
-955328267u, 3821994995u,
-2707230761u, 4142246789u,
-4134691985u, 1958963937u,
-2498463509u, 1977988705u,
-1419293714u, 1636932722u,
-2567532373u, 4075249328u,
-240575705u, 1956681213u,
-2598802768u, 2025886508u,
-4104757832u, 3026358429u,
-3242615202u, 4026813725u,
-255108733u, 1845587644u,
-3573008472u, 3615577014u,
-1222733548u, 1205557630u,
-917608574u, 1363253259u,
-1541946015u, 3087190425u,
-1138008081u, 1444019663u,
-109793386u, 341851980u,
-857839960u, 2515339233u,
-156283211u, 1906768669u,
-3886713057u, 1276595523u,
-2809830736u, 460237542u,
-3420452099u, 142985419u,
-205970448u, 4198897105u,
-1950698961u, 2069753399u,
-1142216925u, 1113051162u,
-1033680610u, 4278599955u,
-1106466069u, 356742959u,
-531521052u, 3494863964u,
-225629455u, 3735275001u,
-3662626864u, 1750561299u,
-1012864651u, 2101846429u,
-1074553219u, 668829411u,
-992181339u, 3384018814u,
-3330664522u, 860966321u,
-1885071395u, 4233785523u,
-100741310u, 451656820u,
-2148187612u, 1063001151u,
-360256231u, 107312677u,
-3650357479u, 2390172694u,
-22452685u, 237319043u,
-3600462351u, 1216645846u,
-2088767754u, 164402616u,
-2418980170u, 926137824u,
-94638678u, 1689811113u,
-2751052984u, 1767810825u,
-271289013u, 3896132233u,
-103797041u, 1397772514u,
-3441135892u, 3323383489u,
-2491268371u, 1662561885u,
-1612872497u, 2986430557u,
-2756998822u, 207428029u,
-937973965u, 2791656726u,
-1949717207u, 2260498180u,
-2648427775u, 2360400900u,
-2080496169u, 486358863u,
-1582022990u, 1263709570u,
-1396468647u, 1377764574u,
-363008508u, 1293502429u,
-224580012u, 4252610345u,
-1435134775u, 1099809675u,
-533671980u, 1533438766u,
-1820532305u, 2776960536u,
-3374512975u, 3542220540u,
-822810075u, 3716663290u,
-1157398049u, 3752806924u,
-4081637863u, 337070226u,
-3866585976u, 359270190u,
-2110942730u, 3267551635u,
-644850146u, 1306761320u,
-746972907u, 934259457u,
-2341378668u, 2220373824u,
-1242645122u, 4109252858u,
-1625266099u, 1173698481u,
-383517064u, 896322512u,
-3377483696u, 1788337208u,
-455496839u, 3194373887u,
-1837689083u, 1336556841u,
-1658628529u, 2911512007u,
-3838343487u, 2757664765u,
-1537187340u, 3712582785u,
-367022558u, 3071359622u,
-3926147070u, 35432879u,
-3093195926u, 2561488770u,
-4273132307u, 3898950547u,
-2838251049u, 2103926083u,
-2549435227u, 536047554u,
-1858986613u, 2040551642u,
-1147412575u, 1972369852u,
-4166184983u, 3528794619u,
-4077477194u, 3565689036u,
-808048238u, 3826350461u,
-1359641525u, 1197100813u,
-265993036u, 1864569342u,
-725164342u, 2264788336u,
-1831223342u, 3329594980u,
-923017956u, 490608221u,
-3818634478u, 258154469u,
-1441714797u, 1174785921u,
-3833372385u, 3287246572u,
-1677395563u, 3569218731u,
-868981704u, 2163330264u,
-2649450292u, 500120236u,
-465161780u, 746438382u,
-1145009669u, 2520062970u,
-2810524030u, 1561519055u,
-1479878006u, 3864969305u,
-2686075657u, 4042710240u,
-3224066062u, 2774151984u,
-2226179547u, 1643626042u,
-2328730865u, 3160666939u,
-2107011431u, 96459446u,
-3920328742u, 3336407558u,
-829404209u, 1878067032u,
-1235983679u, 4237425634u,
-466519055u, 3870676863u,
-934312076u, 2952135524u,
-276949224u, 4100839753u,
-424001484u, 1955120893u,
-4015478120u, 1265237690u,
-427484362u, 4246879223u,
-3452969617u, 1724363362u,
-1553513184u, 834830418u,
-1858777639u, 3476334357u,
-4144030366u, 2450047160u,
-2950762705u, 4277111759u,
-358032121u, 2511026735u,
-167923105u, 2059208280u,
-251949572u, 3065234219u,
-1535473864u, 556796152u,
-1513237478u, 3150857516u,
-1103404394u, 198182691u,
-1476438092u, 2913077464u,
-207119516u, 3963810232u,
-2954651680u, 1535115487u,
-3051522276u, 4046477658u,
-917804636u, 864395565u,
-632704095u, 140762681u,
-1802040304u, 990407433u,
-3771506212u, 4106024923u,
-1287729497u, 2198985327u,
-4052924496u, 2926590471u,
-3084557148u, 1472898694u,
-1009870118u, 559702706u,
-4265214507u, 82077489u,
-3067891003u, 3295678907u,
-2402308151u, 1096697687u,
-464407878u, 4190838199u,
-4269578403u, 3060919438u,
-2899950405u, 3046872820u,
-733509243u, 1583801700u,
-40453902u, 3879773881u,
-1993425202u, 2185339100u,
-1877837196u, 3912423882u,
-3293122640u, 4104318469u,
-1679617763u, 3703603898u,
-8759461u, 2540185277u,
-1152198475u, 2038345882u,
-2503579743u, 1446869792u,
-2019419351u, 4051584612u,
-3178289407u, 3992503830u,
-2879018745u, 2719373510u,
-700836153u, 1675560450u,
-4121245793u, 2064715719u,
-343595772u, 1996164093u,
-3130433948u, 405251683u,
-2804817126u, 1607133689u,
-463852893u, 2864244470u,
-2224044848u, 4071581802u,
-2537107938u, 2246347953u,
-3207234525u, 2028708916u,
-2272418128u, 803575837u,
-38655481u, 2170452091u,
-3272166407u, 557660441u,
-4019147902u, 3841480082u,
-298459606u, 2600943364u,
-2440657523u, 255451671u,
-3424361375u, 779434428u,
-3088526123u, 490671625u,
-1322855877u, 3452203069u,
-3057021940u, 2285701422u,
-2014993457u, 2390431709u,
-2002090272u, 1568745354u,
-1783152480u, 823305654u,
-4053862835u, 2200236540u,
-3009412313u, 3184047862u,
-3032187389u, 4159715581u,
-2966902888u, 252986948u,
-1849329144u, 3160134214u,
-3420960112u, 3198900547u,
-749160960u, 379139040u,
-1208883495u, 1566527339u,
-3006227299u, 4194096960u,
-556075248u, 497404038u,
-1717327230u, 1496132623u,
-1775955687u, 1719108984u,
-1014328900u, 4189966956u,
-2108574735u, 2584236470u,
-684087286u, 531310503u,
-4264509527u, 773405691u,
-3088905079u, 3456882941u,
-3105682208u, 3382290593u,
-2289363624u, 3296306400u,
-4168438718u, 467441309u,
-777173623u, 3241407531u,
-1183994815u, 1132983260u,
-1610606159u, 2540270567u,
-2649684057u, 1397502982u,
-146657385u, 3318434267u,
-2109315753u, 3348545480u,
-3193669211u, 811750340u,
-1073256162u, 3571673088u,
-546596661u, 1017047954u,
-3403136990u, 2540585554u,
-1477047647u, 4145867423u,
-2826408201u, 3531646869u,
-784952939u, 943914610u,
-2717443875u, 3657384638u,
-1806867885u, 1903578924u,
-3985088434u, 1911188923u,
-1764002686u, 3672748083u,
-1832925325u, 241574049u,
-519948041u, 3181425568u,
-2939747257u, 1634174593u,
-3429894862u, 3529565564u,
-1089679033u, 240953857u,
-2025369941u, 2695166650u,
-517086873u, 2964595704u,
-3017658263u, 3828377737u,
-2144895011u, 994799311u,
-1184683823u, 4260564140u,
-308018483u, 4262383425u,
-1374752558u, 3431057723u,
-1572637805u, 383233885u,
-3188015819u, 4051263539u,
-233319221u, 3794788167u,
-2017406667u, 919677938u,
-4074952232u, 1683612329u,
-4213676186u, 327142514u,
-3032591014u, 4204155962u,
-206775997u, 2283918569u,
-2395147154u, 3427505379u,
-2211319468u, 4153726847u,
-2217060665u, 350160869u,
-2493667051u, 1648200185u,
-3441709766u, 1387233546u,
-140980u, 1891558063u,
-760080239u, 2088061981u,
-1580964938u, 740563169u,
-422986366u, 330624974u,
-4264507722u, 150928357u,
-2738323042u, 2948665536u,
-918718096u, 376390582u,
-3966098971u, 717653678u,
-3219466255u, 3799363969u,
-3424344721u, 3187805406u,
-375347278u, 3490350144u,
-1992212097u, 2263421398u,
-3855037968u, 1928519266u,
-3866327955u, 1129127000u,
-1782515131u, 2746577402u,
-3059200728u, 2108753646u,
-2738070963u, 1336849395u,
-1705302106u, 768287270u,
-1343511943u, 2247006571u,
-1956142255u, 1780259453u,
-3475618043u, 212490675u,
-622521957u, 917121602u,
-1852992332u, 1267987847u,
-3170016833u, 2549835613u,
-3299763344u, 2864033668u,
-3378768767u, 1236609378u,
-4169365948u, 3738062408u,
-2661022773u, 2006922227u,
-2760592161u, 3828932355u,
-2636387819u, 2616619070u,
-1237256330u, 3449066284u,
-2871755260u, 3729280948u,
-3862686086u, 431292293u,
-3285899651u, 786322314u,
-2531158535u, 724901242u,
-2377363130u, 1415970351u,
-1244759631u, 3263135197u,
-965248856u, 174024139u,
-2297418515u, 2954777083u,
-987586766u, 3206261120u,
-4059515114u, 3903854066u,
-1931934525u, 2287507921u,
-1827135136u, 1781944746u,
-574617451u, 2299034788u,
-2650140034u, 4081586725u,
-2482286699u, 1109175923u,
-458483596u, 618705848u,
-4059852729u, 1813855658u,
-4190721328u, 1129462471u,
-4089998050u, 3575732749u,
-2375584220u, 1037031473u,
-1623777358u, 3389003793u,
-546597541u, 352770237u,
-1383747654u, 3122687303u,
-1646071378u, 1164309901u,
-290870767u, 830691298u,
-929335420u, 3193251135u,
-989577914u, 3626554867u,
-591974737u, 3996958215u,
-3163711272u, 3071568023u,
-1516846461u, 3656006011u,
-2698625268u, 2510865430u,
-340274176u, 1167681812u,
-3698796465u, 3155218919u,
-4102288238u, 1673474350u,
-3069708839u, 2704165015u,
-1237411891u, 1854985978u,
-3646837503u, 3625406022u,
-921552000u, 1712976649u,
-3939149151u, 878608872u,
-3406359248u, 1068844551u,
-1834682077u, 4155949943u,
-2437686324u, 3163786257u,
-2645117577u, 1988168803u,
-747285578u, 1626463554u,
-1235300371u, 1256485167u,
-1914142538u, 4141546431u,
-3838102563u, 582664250u,
-1883344352u, 2083771672u,
-2611657933u, 2139079047u,
-2250573853u, 804336148u,
-3066325351u, 2770847216u,
-4275641370u, 1455750577u,
-3346357270u, 1674051445u,
-601221482u, 3992583643u,
-1402445097u, 3622527604u,
-2509017299u, 2966108111u,
-2557027816u, 900741486u,
-1790771021u, 2912643797u,
-2631381069u, 4014551783u,
-90375300u, 300318232u,
-3269968032u, 2679371729u,
-2664752123u, 3517585534u,
-3253901179u, 542270815u,
-1188641600u, 365479232u,
-2210121140u, 760762191u,
-1273768482u, 1216399252u,
-3484324231u, 4287337666u,
-16322182u, 643179562u,
-325675502u, 3652676161u,
-3120716054u, 3330259752u,
-1011990087u, 2990167340u,
-1097584090u, 3262252593u,
-1829409951u, 3665087267u,
-1214854475u, 2134299399u,
-3704419305u, 411263051u,
-1625446136u, 549838529u,
-4283196353u, 1342880802u,
-3460621305u, 1967599860u,
-4282843369u, 1275671016u,
-2544665755u, 853593042u,
-901109753u, 2682611693u,
-110631633u, 797487791u,
-1472073141u, 850464484u,
-797089608u, 3286110054u,
-350397471u, 2775631060u,
-366448238u, 3842907484u,
-2219863904u, 3623364733u,
-1850985302u, 4009616991u,
-294963924u, 3693536939u,
-3061255808u, 1615375832u,
-1920066675u, 4113028420u,
-4032223840u, 2318423400u,
-2701956286u, 4145497671u,
-3991532344u, 2536338351u,
-1679099863u, 1728968857u,
-449740816u, 2686506989u,
-685242457u, 97590863u,
-3258354115u, 1502282913u,
-1235084019u, 2151665147u,
-528459289u, 231097464u,
-2477280726u, 3651607391u,
-2091754612u, 1178454681u,
-980597335u, 1604483865u,
-1842333726u, 4146839064u,
-3213794286u, 2601416506u,
-754220096u, 3571436033u,
-488595746u, 1448097974u,
-4004834921u, 238887261u,
-3320337489u, 1416989070u,
-2928916831u, 4093725287u,
-186020771u, 2367569534u,
-3046087671u, 4090084518u,
-3548184546u, 679517009u,
-1962659444u, 3539886328u,
-4192003933u, 1678423485u,
-3827951761u, 3086277222u,
-2144472852u, 1390394371u,
-2976322029u, 1574517163u,
-3553313841u, 119173722u,
-1702434637u, 1766260771u,
-3629581771u, 1407497759u,
-895654784u, 751439914u,
-4008409498u, 215917713u,
-1482103833u, 695551833u,
-1288382231u, 2656990891u,
-2581779077u, 1570750352u,
-3710689053u, 1741390464u,
-2666411616u, 3533987737u,
-4289478316u, 3576119563u,
-4118694920u, 108199666u,
-3869794273u, 963183826u,
-2081410737u, 3796810515u,
-791123882u, 2525792704u,
-1036883117u, 136547246u,
-875691100u, 2592925324u,
-614302599u, 3013176417u,
-2689342539u, 427154472u,
-532957601u, 1228758574u,
-1898117151u, 1181643858u,
-1908591042u, 1464255968u,
-446980910u, 2984611177u,
-58509511u, 1046943619u,
-3508927906u, 2001585786u,
-2544767379u, 1525438381u,
-552181222u, 1959725830u,
-879448844u, 1348536411u,
-4242243590u, 2861338018u,
-1082052441u, 1034351453u,
-601175800u, 764077711u,
-530635011u, 3785343245u,
-2178026726u, 117256687u,
-2378297261u, 457568934u,
-76438221u, 4104954272u,
-956793873u, 3783168634u,
-2485968477u, 2381948487u,
-4226929450u, 3148473363u,
-2518273601u, 3569490233u,
-879369091u, 2180270337u,
-3674375989u, 1387729170u,
-977997984u, 4270646856u,
-568650985u, 951677556u,
-4213877384u, 2721005055u,
-1073364549u, 2563403831u,
-1678669911u, 66786703u,
-2273631661u, 1149351924u,
-3651298990u, 1581883443u,
-246723096u, 1895026827u,
-3810605772u, 3711056516u,
-4058833288u, 2193790614u,
-2080120290u, 3638638708u,
-2915672708u, 2263003308u,
-2361934197u, 4136767460u,
-1976115991u, 3448840877u,
-2019238520u, 225333538u,
-874340815u, 2976159827u,
-1555273378u, 3797521928u,
-1942347150u, 3262952567u,
-435997738u, 340403353u,
-2817830907u, 2078619498u,
-749534111u, 1178073973u,
-894654712u, 3361226032u,
-841092198u, 3288261538u,
-1696412169u, 1496966875u,
-697501571u, 1059158875u,
-3739946319u, 2481012988u,
-568983526u, 114945840u,
-1559249010u, 2218244008u,
-2841706923u, 1632780103u,
-4020169654u, 2087949619u,
-2438736103u, 24032648u,
-833416317u, 3787017905u,
-2373238993u, 2575395164u,
-3434544481u, 3228481067u,
-2542976862u, 2971726178u,
-2880371864u, 3642087909u,
-2407477975u, 2239080836u,
-1043714217u, 3894199764u,
-2235879182u, 203853421u,
-2933669448u, 2504940536u,
-834683330u, 425935223u,
-3560796393u, 3565833278u,
-1668000829u, 3683399154u,
-3414330886u, 1748785729u,
-1023171602u, 580966986u,
-2531038985u, 3227325488u,
-2657385925u, 2124704694u,
-233442446u, 1107045577u,
-3407293834u, 552770757u,
-3899097693u, 1067532701u,
-115667924u, 1406028344u,
-1707768231u, 3724015962u,
-2419657149u, 18613994u,
-2532882091u, 3476683808u,
-1560838678u, 811220224u,
-895961699u, 3762914298u,
-1328752423u, 1844996900u,
-1420427894u, 1848067707u,
-1210281744u, 904215228u,
-4055325594u, 1118521573u,
-2496554183u, 2579259919u,
-3996647489u, 3657647605u,
-325254059u, 3136157065u,
-3951522674u, 4052925250u,
-3341068436u, 2287683323u,
-1313073005u, 126005630u,
-2505120084u, 1194725057u,
-853746559u, 3555092974u,
-2689238752u, 49515858u,
-1244776042u, 1069300695u,
-61073168u, 1010661841u,
-1269521335u, 1902040126u,
-990632502u, 2378708922u,
-3858321250u, 1400735275u,
-2974699176u, 2771676666u,
-170995186u, 2877798589u,
-545726212u, 2225229957u,
-1086473152u, 3454177594u,
-3859483262u, 1499729584u,
-2088002891u, 2883475137u,
-3222194252u, 4144472319u,
-2212229854u, 4146740722u,
-567988835u, 1051332394u,
-3932046135u, 542648229u,
-3017852446u, 1277887997u,
-162888005u, 1669710469u,
-1492500905u, 553041029u,
-1434876932u, 533989516u,
-3817492747u, 584127807u,
-4147115982u, 2993670925u,
-4020312558u, 710021255u,
-3509733475u, 3587959456u,
-2088550465u, 1745399498u,
-2952242967u, 1259815443u,
-869648362u, 1404723176u,
-3947542735u, 1334333531u,
-3873471582u, 229399758u,
-59634866u, 3239516985u,
-3844250972u, 1275954779u,
-492891666u, 1029533080u,
-1552951157u, 367320647u,
-699480890u, 3684418197u,
-3707014310u, 471105777u,
-1824587258u, 4030809053u,
-3489914436u, 484559105u,
-1235750398u, 1428453396u,
-4230459084u, 4255931645u,
-1848597055u, 4271715616u,
-331780381u, 482425775u,
-2435323270u, 3171911678u,
-3507210587u, 928543347u,
-4197807526u, 3680046204u,
-2766042024u, 2159512867u,
-179373257u, 313902234u,
-4024837592u, 294795361u,
-1622282562u, 647086234u,
-2825039429u, 577214736u,
-4043412446u, 2426981244u,
-1277736097u, 1130129573u,
-2601395338u, 995791646u,
-36668922u, 3344746679u,
-1521532225u, 1645086060u,
-2622763015u, 4122335794u,
-2936887705u, 494465807u,
-2580840343u, 1064648931u,
-1247887787u, 2752145076u,
-1277612417u, 1249660507u,
-2288678613u, 3312498873u,
-2459273912u, 4238535494u,
-3117488020u, 2571979978u,
-2680188909u, 1471227427u,
-1616494033u, 633688562u,
-2268653416u, 3268237290u,
-3021962815u, 1959779970u,
-3321382074u, 766642813u,
-204429780u, 1323319858u,
-3676032891u, 1380896111u,
-4030639049u, 3647601207u,
-1830028502u, 2830263774u,
-1375962216u, 1733961041u,
-939765180u, 521947915u,
-3903267364u, 497472767u,
-1619700946u, 189164145u,
-3115593885u, 486382294u,
-1262445920u, 4062496162u,
-2464795849u, 3770038872u,
-4032121374u, 3235740744u,
-3757765258u, 1777199847u,
-2167243108u, 1912506671u,
-4180515317u, 2276864677u,
-536034089u, 2384915026u,
-162938278u, 1588060152u,
-4018349945u, 2504457929u,
-841450426u, 2790120722u,
-2719983588u, 1471020554u,
-1390856732u, 3623212998u,
-2506944218u, 1035080801u,
-348812127u, 3026631806u,
-746483541u, 2342164722u,
-122104390u, 4074122771u,
-3986865419u, 1674890530u,
-3693306023u, 3011542850u,
-1294951725u, 899303190u,
-3577146915u, 3549160092u,
-1241677652u, 4290680005u,
-3193053279u, 2029187390u,
-3298063095u, 3943068002u,
-3946220635u, 2273781461u,
-889053698u, 1376304022u,
-1486839612u, 2127663659u,
-344127443u, 1646681121u,
-2780117810u, 2142045764u,
-2694572773u, 447810651u,
-2185527146u, 2366308558u,
-290335413u, 584901173u,
-2012370276u, 970504950u,
-3258236042u, 2008155560u,
-3945579565u, 614796295u,
-24452072u, 2695940969u,
-3983727134u, 3444688454u,
-1327044473u, 3545633451u,
-1875293322u, 1739318893u,
-1707527799u, 2683090634u,
-2848082386u, 2814622471u,
-4111401777u, 2774816580u,
-3849839194u, 437560100u,
-2238350150u, 2462124836u,
-665017710u, 512012738u,
-2945294779u, 3305170944u,
-819477765u, 59419271u,
-155125658u, 665292744u,
-444722813u, 3580039116u,
-2355675635u, 663735032u,
-3247800169u, 1579404983u,
-1985115003u, 3397891494u,
-358696453u, 1474896279u,
-516388613u, 710590371u,
-3490497111u, 2514565805u,
-2386143445u, 477509654u,
-412854590u, 3624609754u,
-3214388668u, 3516075816u,
-2731288520u, 1369482895u,
-4033204378u, 1314000850u,
-829769325u, 1935166880u,
-1608191643u, 2607067237u,
-423820371u, 3257747610u,
-1355298041u, 3776931214u,
-4105054901u, 2107080812u,
-1911521879u, 3183054185u,
-3910177801u, 675129307u,
-1209358971u, 4205727791u,
-1435726287u, 3333261712u,
-1400982708u, 1154611403u,
-1663501483u, 2837596667u,
-3164734053u, 2759854023u,
-4012043629u, 1963228038u,
-3981675284u, 2677557877u,
-520119591u, 505138315u,
-897271356u, 1803966773u,
-1016663294u, 616691903u,
-2254742522u, 4032705384u,
-2468470796u, 798395739u,
-3025169002u, 3570037122u,
-1461093710u, 3473799845u,
-3702624858u, 476400898u,
-1043039728u, 2304070437u,
-181576948u, 602972493u,
-3996616030u, 3289878097u,
-2068516226u, 3922247304u,
-1299968266u, 2520311409u,
-1968824721u, 3214794876u,
-1581813122u, 2668800905u,
-3297613974u, 748160407u,
-1145536484u, 1326769504u,
-2973323521u, 3775262814u,
-3218653169u, 902775872u,
-3498603433u, 1372805534u,
-704686363u, 3626542352u,
-2271580579u, 1213925114u,
-46329775u, 3009384989u,
-1330254048u, 1194824134u,
-514204310u, 3781981134u,
-442526164u, 2835608783u,
-3460471867u, 510634034u,
-546406434u, 2716786748u,
-2840500021u, 1669490957u,
-2536189149u, 3251421224u,
-1358736072u, 1089334066u,
-3260749330u, 250756920u,
-2974806681u, 1513718866u,
-82635635u, 4041016629u,
-3391765744u, 2495807367u,
-3962674316u, 2822889695u,
-753413337u, 2008251381u,
-3123390177u, 106212622u,
-490570565u, 1684884205u,
-793892547u, 1927268995u,
-2344148164u, 2251978818u,
-437424236u, 2774023200u,
-2674940754u, 3788056262u,
-2597882666u, 3678660147u,
-3797434193u, 3838215866u,
-279687080u, 2656772270u,
-2190204787u, 1997584981u,
-3384401882u, 3160208845u,
-3629379425u, 2668998785u,
-1050036757u, 2954162084u,
-917091826u, 1744374041u,
-1454282570u, 845687881u,
-2997173625u, 776018378u,
-1137560602u, 1938378389u,
-1748082354u, 2066910012u,
-2677675207u, 918315064u,
-};
-
-// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
-bool Test(int offset, int len = 0) {
-#undef Check
-#undef IsAlive
-
-#define Check(x) do { \
- const uint32_t actual = (x), e = expected[index++]; \
- bool ok = actual == e; \
- if (!ok) { \
- cerr << "expected " << hex << e << " but got " << actual << endl; \
- ++errors; \
- } \
- assert(ok); \
-} while (0)
-
-#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
-
- // After the following line is where the uses of "Check" and such will go.
- static int index = 0;
-if (offset == -1) { int alive = 0; { uint64_t h = farmhashte::Hash64WithSeeds(data, len++, SEED0, SEED1); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } { uint64_t h = farmhashte::Hash64WithSeed(data, len++, SEED); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } { uint64_t h = farmhashte::Hash64(data, len++); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } len -= 3; return alive > 0; }
-{ uint64_t h = farmhashte::Hash64WithSeeds(data + offset, len, SEED0, SEED1); Check(h >> 32); Check((h << 32) >> 32); }
-{ uint64_t h = farmhashte::Hash64WithSeed(data + offset, len, SEED); Check(h >> 32); Check((h << 32) >> 32); }
-{ uint64_t h = farmhashte::Hash64(data + offset, len); Check(h >> 32); Check((h << 32) >> 32); }
-
- return true;
-#undef Check
-#undef IsAlive
-}
-
-int RunTest() {
- Setup();
- int i = 0;
- cout << "Running farmhashteTest";
- if (!Test(-1)) {
- cout << "... Unavailable\n";
- return NoteErrors();
- }
- // Good. The function is attempting to hash, so run the full test.
- int errors_prior_to_test = errors;
- for ( ; i < kTestSize - 1; i++) {
- Test(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- Test(0, i);
- }
- Test(0, kDataSize);
- cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
- return NoteErrors();
-}
-
-#else
-
-// After the following line is where the code to print hash codes will go.
-void Dump(int offset, int len) {
-{ uint64_t h = farmhashte::Hash64WithSeeds(data + offset, len, SEED0, SEED1); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
-{ uint64_t h = farmhashte::Hash64WithSeed(data + offset, len, SEED); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
-{ uint64_t h = farmhashte::Hash64(data + offset, len); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
-}
-
-#endif
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-
-} // namespace farmhashteTest
-
-#if !TESTING
-int main(int argc, char** argv) {
- Setup();
- cout << "uint32_t expected[] = {\n";
- int i = 0;
- for ( ; i < kTestSize - 1; i++) {
- farmhashteTest::Dump(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- farmhashteTest::Dump(0, i);
- }
- farmhashteTest::Dump(0, kDataSize);
- cout << "};\n";
-}
-#endif
-#ifndef FARMHASH_SELF_TEST_GUARD
-#define FARMHASH_SELF_TEST_GUARD
-#include <cstdio>
-#include <iostream>
-#include <string.h>
-
-using std::cout;
-using std::cerr;
-using std::endl;
-using std::hex;
-
-static const uint64_t kSeed0 = 1234567;
-static const uint64_t kSeed1 = k0;
-static const int kDataSize = 1 << 20;
-static const int kTestSize = 300;
-#define kSeed128 Uint128(kSeed0, kSeed1)
-
-static char data[kDataSize];
-
-static int completed_self_tests = 0;
-static int errors = 0;
-
-// Initialize data to pseudorandom values.
-void Setup() {
- if (completed_self_tests == 0) {
- uint64_t a = 9;
- uint64_t b = 777;
- for (int i = 0; i < kDataSize; i++) {
- a += b;
- b += a;
- a = (a ^ (a >> 41)) * k0;
- b = (b ^ (b >> 41)) * k0 + i;
- uint8_t u = b >> 37;
- memcpy(data + i, &u, 1); // uint8_t -> char
- }
- }
-}
-
-int NoteErrors() {
-#define NUM_SELF_TESTS 9
- if (++completed_self_tests == NUM_SELF_TESTS)
- std::exit(errors > 0);
- return errors;
-}
-
-template <typename T> inline bool IsNonZero(T x) {
- return x != 0;
-}
-
-template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
- return x != Uint128(0, 0);
-}
-
-#endif // FARMHASH_SELF_TEST_GUARD
-
-namespace farmhashuoTest {
-
-uint32_t CreateSeed(int offset, int salt) {
- uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h += static_cast<uint32_t>(offset & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- return h;
-}
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-#define SEED CreateSeed(offset, -1)
-#define SEED0 CreateSeed(offset, 0)
-#define SEED1 CreateSeed(offset, 1)
-
-#undef TESTING
-#define TESTING 1
-#if TESTING
-uint32_t expected[] = {
-3277735313u, 2681724312u,
-2598464059u, 797982799u,
-2603993599u, 921001710u,
-1410420968u, 2134990486u,
-2914424215u, 2244477846u,
-255297188u, 2992121793u,
-161451183u, 3943596029u,
-4019337850u, 452431531u,
-3379021470u, 2557197665u,
-299850021u, 2532580744u,
-1298374911u, 3099673830u,
-2199864459u, 3696623795u,
-4055299123u, 3281581178u,
-1053458494u, 1882212500u,
-3456121707u, 275903667u,
-458884671u, 3033004529u,
-1898235244u, 1402319660u,
-2700149065u, 2699376854u,
-2433714046u, 4222949502u,
-4220361840u, 1712034059u,
-4148372108u, 1330324210u,
-594028478u, 2921867846u,
-780716741u, 1728752234u,
-3280331829u, 326029180u,
-393215742u, 3349570000u,
-3824583307u, 1612122221u,
-1379537552u, 1646032583u,
-2233466664u, 1432476832u,
-2052294713u, 3552092450u,
-1628777059u, 1499109081u,
-2960536756u, 1554038301u,
-1145519619u, 3190844552u,
-237495366u, 540224401u,
-65721842u, 489963606u,
-1596489240u, 1562872448u,
-1790705123u, 2128624475u,
-1435705557u, 1262831810u,
-155445229u, 1672724608u,
-663607706u, 2077310004u,
-3610042449u, 1911523866u,
-2563776023u, 294527927u,
-1099072299u, 1389770549u,
-2952353448u, 2026137563u,
-3603803785u, 629449419u,
-226132789u, 2489287368u,
-1552847036u, 645684964u,
-187883449u, 230403464u,
-3151491850u, 3272648435u,
-2002861219u, 165370827u,
-916494250u, 1230085527u,
-3807265751u, 3628174014u,
-231181488u, 851743255u,
-2988893883u, 1554380634u,
-1142264800u, 3667013118u,
-2638023604u, 2290487377u,
-732137533u, 1909203251u,
-1380301172u, 1498556724u,
-4072067757u, 4165088768u,
-3931792696u, 197618179u,
-956300927u, 914413116u,
-2148126371u, 1913303225u,
-3074915312u, 3117299654u,
-3178848746u, 1357272220u,
-1438494951u, 507436733u,
-3854939912u, 1413396341u,
-126024219u, 146044391u,
-3254014218u, 429095991u,
-165589978u, 1578546616u,
-623071693u, 366414107u,
-249776086u, 1207522198u,
-3120876698u, 1684583131u,
-46987739u, 1157614300u,
-199124911u, 520792961u,
-3614377032u, 586863115u,
-1716848157u, 4033596884u,
-1164298657u, 4140791139u,
-3824360466u, 3242407770u,
-3725511003u, 232064808u,
-2736953692u, 816692935u,
-512845449u, 3748861010u,
-4290630595u, 517646945u,
-22638523u, 648000590u,
-1283799121u, 3047062993u,
-1024246061u, 4027776454u,
-834785312u, 382936554u,
-411505255u, 1973395102u,
-580988377u, 2826990641u,
-3474970689u, 1029055034u,
-2584372201u, 1758123094u,
-589567754u, 325737734u,
-3886113119u, 3338548567u,
-257578986u, 3698087965u,
-3604937815u, 3198590202u,
-2305332220u, 191910725u,
-4244322689u, 542201663u,
-3315355162u, 2135941665u,
-1175961330u, 3948351189u,
-23075771u, 3252374102u,
-713127376u, 1467786451u,
-663013031u, 3444053918u,
-3077742128u, 1062268187u,
-2115441882u, 4081398201u,
-2335576331u, 2560479831u,
-1379288194u, 4225182569u,
-3958366652u, 3067277639u,
-3667516477u, 1709989541u,
-4188504038u, 59581167u,
-2725013602u, 3639843023u,
-3758739543u, 4189944477u,
-2470483982u, 877580602u,
-3252925478u, 2062343506u,
-3981838403u, 3762572073u,
-2931588131u, 3284356565u,
-1129162571u, 732225574u,
-1677744031u, 3532596884u,
-3232041815u, 1652884780u,
-3740979556u, 259034107u,
-2227121257u, 1426140634u,
-315836068u, 3200749877u,
-1386256573u, 24035717u,
-234531934u, 1115203611u,
-1598686658u, 3146815575u,
-2632963283u, 1778459926u,
-739944537u, 579625482u,
-1231665285u, 2457048126u,
-3903349120u, 389846205u,
-1052645068u, 862072556u,
-2834153464u, 1481069623u,
-1688445808u, 701920051u,
-3740748788u, 3388062747u,
-1192588249u, 1410111809u,
-2633463887u, 4050419847u,
-2513844237u, 2187968410u,
-2951683019u, 3015806005u,
-3000537321u, 479241367u,
-252167538u, 1231057113u,
-393624922u, 704325635u,
-1467197045u, 2066433573u,
-3082385053u, 735688735u,
-956434529u, 4028590195u,
-4074716319u, 813690332u,
-2124740535u, 804073145u,
-3748881891u, 3195309868u,
-841856605u, 2585865274u,
-881504822u, 3254795114u,
-1241815736u, 970796142u,
-497175391u, 3929484338u,
-4264993211u, 1835322201u,
-3675707838u, 4205965408u,
-300298607u, 3858319990u,
-3255259608u, 4247675634u,
-1095823272u, 1197245408u,
-1742785722u, 785893184u,
-1702965674u, 850401405u,
-4084891412u, 1160134629u,
-2555998391u, 1972759056u,
-710625654u, 4116162021u,
-3352753742u, 85121177u,
-3513255468u, 2487440590u,
-2480032715u, 2287747045u,
-4090178629u, 4044418876u,
-1703944517u, 486290428u,
-1515601363u, 2011102035u,
-573985957u, 3536053779u,
-4257172787u, 576405853u,
-1523550693u, 1014952061u,
-711098718u, 2425317635u,
-3460807169u, 3688987163u,
-3167371443u, 3062418115u,
-3330028292u, 1713171303u,
-526177822u, 2602636307u,
-1245357025u, 3346699703u,
-254529415u, 4017058800u,
-1829738451u, 2164236533u,
-1381258384u, 4036354071u,
-1749181924u, 4118435443u,
-4130543625u, 688472265u,
-2731071299u, 2547657502u,
-4175776103u, 338058159u,
-3729582129u, 4181845558u,
-2227290760u, 146827036u,
-2459178427u, 1025353883u,
-4284109679u, 2502815838u,
-825124804u, 2533140036u,
-616327404u, 2448966429u,
-413992636u, 2334782461u,
-2239052397u, 1082330589u,
-3381164715u, 199381437u,
-2583939798u, 2848283092u,
-2300168091u, 2156336315u,
-1855234968u, 1982110346u,
-2482046810u, 3158163887u,
-2168864636u, 133643215u,
-3904021624u, 3646514568u,
-1176127003u, 4015671361u,
-100525019u, 3534706803u,
-2045051700u, 3452457457u,
-1492267772u, 2308393828u,
-3776661467u, 3281002516u,
-4246334524u, 743955039u,
-685631442u, 1147951686u,
-2040912376u, 2911148054u,
-3204999386u, 2415262714u,
-313209105u, 777065474u,
-2729416454u, 1029284767u,
-1632078298u, 1817552554u,
-3963877000u, 1919171906u,
-3843219958u, 3073580867u,
-865146997u, 2473524405u,
-2593817617u, 3643076308u,
-617975720u, 3671562289u,
-121812599u, 2902367378u,
-2260041112u, 1019936943u,
-320945955u, 2337845588u,
-1535670711u, 773792826u,
-3152195900u, 4090794518u,
-4142587430u, 484732447u,
-419191319u, 3377973345u,
-324924679u, 2809286837u,
-1562277603u, 1378362199u,
-3791551981u, 1097806406u,
-1386297408u, 2304900033u,
-3574135531u, 4017075736u,
-1161238398u, 1358056883u,
-3487080616u, 1516736273u,
-851615042u, 2927899494u,
-4077452507u, 2984955003u,
-3907754394u, 3578173844u,
-1948409509u, 1923531348u,
-3578472493u, 3710074193u,
-213811117u, 2586632018u,
-1922589216u, 274958014u,
-1654276320u, 2687561076u,
-2569061755u, 3122046057u,
-3203802620u, 1692079268u,
-477806878u, 140587742u,
-520565830u, 3674576684u,
-91246882u, 1010215946u,
-3703994407u, 69201295u,
-776213083u, 3677771507u,
-3696902571u, 3593730713u,
-2907901228u, 3239753796u,
-1586241476u, 1939595371u,
-2268396558u, 3468719670u,
-2955715987u, 2295501078u,
-2775848696u, 1358532390u,
-3843660102u, 82177963u,
-4094477877u, 191727221u,
-278661677u, 2889101923u,
-1352525614u, 2844977667u,
-1261140657u, 1747052377u,
-2334120653u, 645125282u,
-2707230761u, 4142246789u,
-1068639717u, 2288162940u,
-1419293714u, 1636932722u,
-3252686293u, 318543902u,
-2598802768u, 2025886508u,
-2250788464u, 2711763065u,
-255108733u, 1845587644u,
-3719270134u, 3940707863u,
-917608574u, 1363253259u,
-788659330u, 673256220u,
-109793386u, 341851980u,
-2698465479u, 3011229884u,
-3886713057u, 1276595523u,
-2439962760u, 2700515456u,
-205970448u, 4198897105u,
-875511891u, 371715572u,
-1033680610u, 4278599955u,
-3120038721u, 1256300069u,
-225629455u, 3735275001u,
-3961944123u, 1769389163u,
-1074553219u, 668829411u,
-1098679359u, 2573697509u,
-1885071395u, 4233785523u,
-2513878053u, 2030193788u,
-360256231u, 107312677u,
-310517502u, 2618936366u,
-3600462351u, 1216645846u,
-2970730323u, 4278812598u,
-94638678u, 1689811113u,
-4125738800u, 3103759730u,
-103797041u, 1397772514u,
-1669653333u, 572567964u,
-1612872497u, 2986430557u,
-214990655u, 3117607990u,
-1949717207u, 2260498180u,
-1493936866u, 3554860960u,
-1582022990u, 1263709570u,
-1244120487u, 3416600761u,
-224580012u, 4252610345u,
-286306391u, 814956796u,
-1820532305u, 2776960536u,
-3082703465u, 1659265982u,
-1157398049u, 3752806924u,
-3508246460u, 2902716664u,
-2110942730u, 3267551635u,
-902835431u, 405228165u,
-2341378668u, 2220373824u,
-3303626294u, 1175118221u,
-383517064u, 896322512u,
-1697257567u, 2202820683u,
-1837689083u, 1336556841u,
-914535232u, 3634083711u,
-1537187340u, 3712582785u,
-1088201893u, 3270984620u,
-3093195926u, 2561488770u,
-1962968100u, 236189500u,
-2549435227u, 536047554u,
-422609195u, 2958815818u,
-4166184983u, 3528794619u,
-1042329086u, 3914176886u,
-1359641525u, 1197100813u,
-1269739674u, 3301844628u,
-1831223342u, 3329594980u,
-2433669782u, 494908536u,
-1441714797u, 1174785921u,
-1933050423u, 958901065u,
-868981704u, 2163330264u,
-3243110680u, 1443133429u,
-1145009669u, 2520062970u,
-3851564853u, 2664619323u,
-2686075657u, 4042710240u,
-2125408249u, 4165697916u,
-2328730865u, 3160666939u,
-588683409u, 2126275847u,
-829404209u, 1878067032u,
-2567792910u, 897670516u,
-934312076u, 2952135524u,
-504832490u, 3312698056u,
-4015478120u, 1265237690u,
-3376133707u, 967674402u,
-1553513184u, 834830418u,
-2396504772u, 3278582098u,
-2950762705u, 4277111759u,
-4159211303u, 1290097509u,
-251949572u, 3065234219u,
-1832020534u, 312136369u,
-1103404394u, 198182691u,
-1369599600u, 3906710870u,
-2954651680u, 1535115487u,
-2389327507u, 1813520230u,
-632704095u, 140762681u,
-3123202913u, 3336005523u,
-1287729497u, 2198985327u,
-2470730783u, 3821758006u,
-1009870118u, 559702706u,
-4274686257u, 3187546567u,
-2402308151u, 1096697687u,
-678932329u, 3716363135u,
-2899950405u, 3046872820u,
-3754655641u, 2021741414u,
-1993425202u, 2185339100u,
-2838253700u, 3099212100u,
-1679617763u, 3703603898u,
-1135665833u, 3559875668u,
-2503579743u, 1446869792u,
-879818611u, 3788305533u,
-2879018745u, 2719373510u,
-3606051203u, 2166567748u,
-343595772u, 1996164093u,
-1577656121u, 475248376u,
-463852893u, 2864244470u,
-1332049663u, 3326459767u,
-3207234525u, 2028708916u,
-938916154u, 3115246264u,
-3272166407u, 557660441u,
-1265684026u, 245033807u,
-2440657523u, 255451671u,
-3811885130u, 1399880284u,
-1322855877u, 3452203069u,
-1324994449u, 3796404024u,
-2002090272u, 1568745354u,
-3700047753u, 31799506u,
-3009412313u, 3184047862u,
-728680761u, 3848624873u,
-1849329144u, 3160134214u,
-1272923193u, 1474278816u,
-1208883495u, 1566527339u,
-4136466541u, 630825649u,
-1717327230u, 1496132623u,
-2449386742u, 128106940u,
-2108574735u, 2584236470u,
-2872246579u, 397338552u,
-3088905079u, 3456882941u,
-1715915153u, 2940716269u,
-4168438718u, 467441309u,
-872996731u, 3206901319u,
-1610606159u, 2540270567u,
-1301658081u, 2379410194u,
-2109315753u, 3348545480u,
-2041927873u, 2644077493u,
-546596661u, 1017047954u,
-2596792972u, 2783958892u,
-2826408201u, 3531646869u,
-2219352672u, 4217451852u,
-1806867885u, 1903578924u,
-2076465705u, 2373061493u,
-1832925325u, 241574049u,
-1509517110u, 3703614272u,
-3429894862u, 3529565564u,
-4010000614u, 2256197939u,
-517086873u, 2964595704u,
-3501035294u, 4079457298u,
-1184683823u, 4260564140u,
-2339268412u, 3871564102u,
-1572637805u, 383233885u,
-3351411126u, 3419328182u,
-2017406667u, 919677938u,
-29804156u, 46276077u,
-3032591014u, 4204155962u,
-1172319502u, 969309871u,
-2211319468u, 4153726847u,
-3094193193u, 4240669441u,
-3441709766u, 1387233546u,
-4048882438u, 1217896566u,
-1580964938u, 740563169u,
-3691850348u, 3176426539u,
-2738323042u, 2948665536u,
-1474029445u, 3513354882u,
-3219466255u, 3799363969u,
-3961796122u, 1055550923u,
-1992212097u, 2263421398u,
-4289759174u, 2516844140u,
-1782515131u, 2746577402u,
-721928440u, 3529570984u,
-1705302106u, 768287270u,
-3474902815u, 4000011125u,
-3475618043u, 212490675u,
-549130471u, 2970128275u,
-3170016833u, 2549835613u,
-3691104824u, 2694324482u,
-4169365948u, 3738062408u,
-602930397u, 2148954730u,
-2636387819u, 2616619070u,
-301617872u, 374657036u,
-3862686086u, 431292293u,
-4225245165u, 1358580562u,
-2377363130u, 1415970351u,
-3885060756u, 1438379807u,
-2297418515u, 2954777083u,
-3970368221u, 1229801760u,
-1931934525u, 2287507921u,
-1713471510u, 2145608111u,
-2650140034u, 4081586725u,
-4196863572u, 1896558394u,
-4059852729u, 1813855658u,
-2618400836u, 1396056469u,
-2375584220u, 1037031473u,
-249284003u, 2450077637u,
-1383747654u, 3122687303u,
-2664431743u, 3855028730u,
-929335420u, 3193251135u,
-137313762u, 1850894384u,
-3163711272u, 3071568023u,
-418541677u, 3621223039u,
-340274176u, 1167681812u,
-4106647531u, 4022465625u,
-3069708839u, 2704165015u,
-2332023349u, 641449034u,
-921552000u, 1712976649u,
-1876484273u, 2343049860u,
-1834682077u, 4155949943u,
-2061821157u, 4240649383u,
-747285578u, 1626463554u,
-165503115u, 359629739u,
-3838102563u, 582664250u,
-3878924635u, 4117237498u,
-2250573853u, 804336148u,
-331393443u, 4242530387u,
-3346357270u, 1674051445u,
-3348019777u, 1722242971u,
-2509017299u, 2966108111u,
-4189102509u, 3323592310u,
-2631381069u, 4014551783u,
-4250787412u, 3448394212u,
-2664752123u, 3517585534u,
-3605365141u, 1669471183u,
-2210121140u, 760762191u,
-249697459u, 3416920106u,
-16322182u, 643179562u,
-1564226597u, 2134630675u,
-1011990087u, 2990167340u,
-2349550842u, 1642428946u,
-1214854475u, 2134299399u,
-2704221532u, 2104175211u,
-4283196353u, 1342880802u,
-198529755u, 2004468390u,
-2544665755u, 853593042u,
-2090611294u, 2970943872u,
-1472073141u, 850464484u,
-1407609278u, 3062461105u,
-366448238u, 3842907484u,
-488797416u, 1432670231u,
-294963924u, 3693536939u,
-3390549825u, 1583234720u,
-4032223840u, 2318423400u,
-2965642867u, 930822729u,
-1679099863u, 1728968857u,
-900822335u, 702309817u,
-3258354115u, 1502282913u,
-2811888503u, 3924947660u,
-2477280726u, 3651607391u,
-3788310204u, 1300369123u,
-1842333726u, 4146839064u,
-2468893861u, 4091095953u,
-488595746u, 1448097974u,
-1159634090u, 1738834113u,
-2928916831u, 4093725287u,
-530850094u, 291657799u,
-3548184546u, 679517009u,
-399175380u, 2658337143u,
-3827951761u, 3086277222u,
-2067718397u, 3632376023u,
-3553313841u, 119173722u,
-1702434637u, 1766260771u,
-895654784u, 751439914u,
-4008409498u, 215917713u,
-1288382231u, 2656990891u,
-2581779077u, 1570750352u,
-2666411616u, 3533987737u,
-4289478316u, 3576119563u,
-3869794273u, 963183826u,
-2081410737u, 3796810515u,
-1036883117u, 136547246u,
-875691100u, 2592925324u,
-2689342539u, 427154472u,
-532957601u, 1228758574u,
-1908591042u, 1464255968u,
-446980910u, 2984611177u,
-3508927906u, 2001585786u,
-2544767379u, 1525438381u,
-879448844u, 1348536411u,
-4242243590u, 2861338018u,
-601175800u, 764077711u,
-530635011u, 3785343245u,
-2378297261u, 457568934u,
-76438221u, 4104954272u,
-2485968477u, 2381948487u,
-4226929450u, 3148473363u,
-879369091u, 2180270337u,
-3674375989u, 1387729170u,
-568650985u, 951677556u,
-4213877384u, 2721005055u,
-1678669911u, 66786703u,
-2273631661u, 1149351924u,
-246723096u, 1895026827u,
-3810605772u, 3711056516u,
-2080120290u, 3638638708u,
-2915672708u, 2263003308u,
-1976115991u, 3448840877u,
-2019238520u, 225333538u,
-1555273378u, 3797521928u,
-1942347150u, 3262952567u,
-2817830907u, 2078619498u,
-749534111u, 1178073973u,
-841092198u, 3288261538u,
-1696412169u, 1496966875u,
-3739946319u, 2481012988u,
-568983526u, 114945840u,
-2841706923u, 1632780103u,
-4020169654u, 2087949619u,
-833416317u, 3787017905u,
-2373238993u, 2575395164u,
-2542976862u, 2971726178u,
-2880371864u, 3642087909u,
-1043714217u, 3894199764u,
-2235879182u, 203853421u,
-834683330u, 425935223u,
-3560796393u, 3565833278u,
-3414330886u, 1748785729u,
-1023171602u, 580966986u,
-2657385925u, 2124704694u,
-233442446u, 1107045577u,
-3899097693u, 1067532701u,
-115667924u, 1406028344u,
-2419657149u, 18613994u,
-2532882091u, 3476683808u,
-895961699u, 3762914298u,
-1328752423u, 1844996900u,
-1210281744u, 904215228u,
-4055325594u, 1118521573u,
-3996647489u, 3657647605u,
-325254059u, 3136157065u,
-3341068436u, 2287683323u,
-1313073005u, 126005630u,
-853746559u, 3555092974u,
-2689238752u, 49515858u,
-61073168u, 1010661841u,
-1269521335u, 1902040126u,
-3858321250u, 1400735275u,
-2974699176u, 2771676666u,
-545726212u, 2225229957u,
-1086473152u, 3454177594u,
-2088002891u, 2883475137u,
-3222194252u, 4144472319u,
-567988835u, 1051332394u,
-3932046135u, 542648229u,
-162888005u, 1669710469u,
-1492500905u, 553041029u,
-3817492747u, 584127807u,
-4147115982u, 2993670925u,
-3509733475u, 3587959456u,
-2088550465u, 1745399498u,
-869648362u, 1404723176u,
-3947542735u, 1334333531u,
-59634866u, 3239516985u,
-3844250972u, 1275954779u,
-2512155003u, 1685649437u,
-639306006u, 2524620206u,
-576786501u, 655707039u,
-2864351838u, 3736264674u,
-1200907897u, 2384379464u,
-15823708u, 206117476u,
-1193310960u, 1093099415u,
-3696538026u, 4112584792u,
-2069527017u, 547588820u,
-4178147211u, 2827259351u,
-940846775u, 1054995047u,
-2976960697u, 1934305529u,
-2199137382u, 1005722394u,
-1875867180u, 2064356511u,
-4019734130u, 3096333006u,
-2069509024u, 2906358341u,
-2232866485u, 1456016086u,
-1422674894u, 867282151u,
-1612503136u, 1739843072u,
-134947567u, 2978775774u,
-1284167756u, 1090844589u,
-831688783u, 2079216362u,
-1626991196u, 3644714163u,
-3678110059u, 898470030u,
-3916646913u, 3182422972u,
-3630426828u, 969847973u,
-3427164640u, 3463937250u,
-3044785046u, 897322257u,
-3443872170u, 4185408854u,
-2557463241u, 4080940424u,
-2048168570u, 2429169982u,
-3174690447u, 2513494106u,
-1213061732u, 3143736628u,
-3482268149u, 1250714337u,
-31648125u, 3872383625u,
-1565760579u, 36665130u,
-751041229u, 2257179590u,
-2915361862u, 280819225u,
-2907818413u, 4254297769u,
-3493178615u, 3755944354u,
-4043533423u, 1134196225u,
-4177134659u, 127246419u,
-2442615581u, 923049607u,
-1004426206u, 782768297u,
-2410586681u, 1430106871u,
-4103323427u, 3168399477u,
-3716682375u, 3616334719u,
-3413209549u, 656672786u,
-2876965944u, 182894450u,
-456581318u, 2683752067u,
-3877875910u, 3190666241u,
-3240336907u, 4024807233u,
-1681224377u, 1576191191u,
-3599250276u, 2381111980u,
-3495321877u, 3956024585u,
-1611608524u, 3815677453u,
-2062334396u, 1656117707u,
-5457134u, 3234118251u,
-470187419u, 2688566989u,
-3259870297u, 660100446u,
-442236198u, 2542452448u,
-493137955u, 392411099u,
-947967568u, 1234595917u,
-4230082284u, 2762976773u,
-2870085764u, 1455086530u,
-2762099647u, 4011882747u,
-1215981925u, 3227517889u,
-3269061963u, 4037515364u,
-3168911474u, 4255057396u,
-2026092260u, 1736192508u,
-3909727042u, 3114708966u,
-1938800693u, 680793595u,
-1525265867u, 2808224480u,
-2122290603u, 1211197714u,
-3520488321u, 3979192396u,
-3540779343u, 4192918639u,
-2736030448u, 1120335563u,
-1698949078u, 3993310631u,
-1966048551u, 2228221363u,
-597941119u, 3498018399u,
-393987327u, 454500547u,
-1222959566u, 567151340u,
-3774764786u, 1492844524u,
-3308300614u, 805568076u,
-868414882u, 177406999u,
-1608110313u, 642061169u,
-1027515771u, 3131251981u,
-2851936150u, 4272755262u,
-1532845092u, 709643652u,
-682573592u, 1244104217u,
-796769556u, 2500467040u,
-3002618826u, 1112998535u,
-1780193104u, 1243644607u,
-3691719535u, 2958853053u,
-466635014u, 2277292580u,
-4082276003u, 1030800045u,
-1750863246u, 379050598u,
-3576413281u, 731493104u,
-132259176u, 4115195437u,
-1769890695u, 2715470335u,
-1819263183u, 2028531518u,
-2154809766u, 3672399742u,
-76727603u, 4198182186u,
-2304993586u, 1666387627u,
-284366017u, 3359785538u,
-3469807328u, 2926494787u,
-3829072836u, 2493478921u,
-3738499303u, 3311304980u,
-932916545u, 2235559063u,
-2909742396u, 1765719309u,
-1456588655u, 508290328u,
-1490719640u, 3356513470u,
-2908490783u, 251085588u,
-830410677u, 3172220325u,
-3897208579u, 1940535730u,
-151909546u, 2384458112u,
-};
-
-// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
-bool Test(int offset, int len = 0) {
-#undef Check
-#undef IsAlive
-
-#define Check(x) do { \
- const uint32_t actual = (x), e = expected[index++]; \
- bool ok = actual == e; \
- if (!ok) { \
- cerr << "expected " << hex << e << " but got " << actual << endl; \
- ++errors; \
- } \
- assert(ok); \
-} while (0)
-
-#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
-
- // After the following line is where the uses of "Check" and such will go.
- static int index = 0;
-if (offset == -1) { int alive = 0; { uint64_t h = farmhashuo::Hash64WithSeed(data, len++, SEED); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } { uint64_t h = farmhashuo::Hash64(data, len++); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } { uint64_t h = farmhashuo::Hash64(data, len++); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } len -= 3; return alive > 0; }
-{ uint64_t h = farmhashuo::Hash64WithSeed(data + offset, len, SEED); Check(h >> 32); Check((h << 32) >> 32); }
-{ uint64_t h = farmhashuo::Hash64(data + offset, len); Check(h >> 32); Check((h << 32) >> 32); }
-
- return true;
-#undef Check
-#undef IsAlive
-}
-
-int RunTest() {
- Setup();
- int i = 0;
- cout << "Running farmhashuoTest";
- if (!Test(-1)) {
- cout << "... Unavailable\n";
- return NoteErrors();
- }
- // Good. The function is attempting to hash, so run the full test.
- int errors_prior_to_test = errors;
- for ( ; i < kTestSize - 1; i++) {
- Test(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- Test(0, i);
- }
- Test(0, kDataSize);
- cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
- return NoteErrors();
-}
-
-#else
-
-// After the following line is where the code to print hash codes will go.
-void Dump(int offset, int len) {
-{ uint64_t h = farmhashuo::Hash64WithSeed(data + offset, len, SEED); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
-{ uint64_t h = farmhashuo::Hash64(data + offset, len); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
-}
-
-#endif
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-
-} // namespace farmhashuoTest
-
-#if !TESTING
-int main(int argc, char** argv) {
- Setup();
- cout << "uint32_t expected[] = {\n";
- int i = 0;
- for ( ; i < kTestSize - 1; i++) {
- farmhashuoTest::Dump(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- farmhashuoTest::Dump(0, i);
- }
- farmhashuoTest::Dump(0, kDataSize);
- cout << "};\n";
-}
-#endif
-#ifndef FARMHASH_SELF_TEST_GUARD
-#define FARMHASH_SELF_TEST_GUARD
-#include <cstdio>
-#include <iostream>
-#include <string.h>
-
-using std::cout;
-using std::cerr;
-using std::endl;
-using std::hex;
-
-static const uint64_t kSeed0 = 1234567;
-static const uint64_t kSeed1 = k0;
-static const int kDataSize = 1 << 20;
-static const int kTestSize = 300;
-#define kSeed128 Uint128(kSeed0, kSeed1)
-
-static char data[kDataSize];
-
-static int completed_self_tests = 0;
-static int errors = 0;
-
-// Initialize data to pseudorandom values.
-void Setup() {
- if (completed_self_tests == 0) {
- uint64_t a = 9;
- uint64_t b = 777;
- for (int i = 0; i < kDataSize; i++) {
- a += b;
- b += a;
- a = (a ^ (a >> 41)) * k0;
- b = (b ^ (b >> 41)) * k0 + i;
- uint8_t u = b >> 37;
- memcpy(data + i, &u, 1); // uint8_t -> char
- }
- }
-}
-
-int NoteErrors() {
-#define NUM_SELF_TESTS 9
- if (++completed_self_tests == NUM_SELF_TESTS)
- std::exit(errors > 0);
- return errors;
-}
-
-template <typename T> inline bool IsNonZero(T x) {
- return x != 0;
-}
-
-template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
- return x != Uint128(0, 0);
-}
-
-#endif // FARMHASH_SELF_TEST_GUARD
-
-namespace farmhashxoTest {
-
-uint32_t CreateSeed(int offset, int salt) {
- uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h += static_cast<uint32_t>(offset & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- return h;
-}
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-#define SEED CreateSeed(offset, -1)
-#define SEED0 CreateSeed(offset, 0)
-#define SEED1 CreateSeed(offset, 1)
-
-#undef TESTING
-#define TESTING 1
-#if TESTING
-uint32_t expected[] = {
-1140953930u, 861465670u,
-3277735313u, 2681724312u,
-2598464059u, 797982799u,
-890626835u, 800175912u,
-2603993599u, 921001710u,
-1410420968u, 2134990486u,
-3283896453u, 1867689945u,
-2914424215u, 2244477846u,
-255297188u, 2992121793u,
-1110588164u, 4186314283u,
-161451183u, 3943596029u,
-4019337850u, 452431531u,
-283198166u, 2741341286u,
-3379021470u, 2557197665u,
-299850021u, 2532580744u,
-452473466u, 1706958772u,
-1298374911u, 3099673830u,
-2199864459u, 3696623795u,
-236935126u, 2976578695u,
-4055299123u, 3281581178u,
-1053458494u, 1882212500u,
-2305012065u, 2169731866u,
-3456121707u, 275903667u,
-458884671u, 3033004529u,
-3058973506u, 2379411653u,
-1898235244u, 1402319660u,
-2700149065u, 2699376854u,
-147814787u, 720739346u,
-2433714046u, 4222949502u,
-4220361840u, 1712034059u,
-3425469811u, 3690733394u,
-4148372108u, 1330324210u,
-594028478u, 2921867846u,
-1635026870u, 192883107u,
-780716741u, 1728752234u,
-3280331829u, 326029180u,
-3969463346u, 1436364519u,
-393215742u, 3349570000u,
-3824583307u, 1612122221u,
-2859809759u, 3808705738u,
-1379537552u, 1646032583u,
-2233466664u, 1432476832u,
-4023053163u, 2650381482u,
-2052294713u, 3552092450u,
-1628777059u, 1499109081u,
-3476440786u, 3829307897u,
-2960536756u, 1554038301u,
-1145519619u, 3190844552u,
-2902102606u, 3600725550u,
-237495366u, 540224401u,
-65721842u, 489963606u,
-1448662590u, 397635823u,
-1596489240u, 1562872448u,
-1790705123u, 2128624475u,
-180854224u, 2604346966u,
-1435705557u, 1262831810u,
-155445229u, 1672724608u,
-1669465176u, 1341975128u,
-663607706u, 2077310004u,
-3610042449u, 1911523866u,
-1043692997u, 1454396064u,
-2563776023u, 294527927u,
-1099072299u, 1389770549u,
-703505868u, 678706990u,
-2952353448u, 2026137563u,
-3603803785u, 629449419u,
-1933894405u, 3043213226u,
-226132789u, 2489287368u,
-1552847036u, 645684964u,
-3828089804u, 3632594520u,
-187883449u, 230403464u,
-3151491850u, 3272648435u,
-3729087873u, 1303930448u,
-2002861219u, 165370827u,
-916494250u, 1230085527u,
-3103338579u, 3064290191u,
-3807265751u, 3628174014u,
-231181488u, 851743255u,
-2295806711u, 1781190011u,
-2988893883u, 1554380634u,
-1142264800u, 3667013118u,
-1968445277u, 315203929u,
-2638023604u, 2290487377u,
-732137533u, 1909203251u,
-440398219u, 1891630171u,
-1380301172u, 1498556724u,
-4072067757u, 4165088768u,
-4204318635u, 441430649u,
-3931792696u, 197618179u,
-956300927u, 914413116u,
-3010839769u, 2837339569u,
-2148126371u, 1913303225u,
-3074915312u, 3117299654u,
-4139181436u, 2993479124u,
-3178848746u, 1357272220u,
-1438494951u, 507436733u,
-667183474u, 2084369203u,
-3854939912u, 1413396341u,
-126024219u, 146044391u,
-1016656857u, 3022024459u,
-3254014218u, 429095991u,
-990500595u, 3056862311u,
-985653208u, 1718653828u,
-623071693u, 366414107u,
-1771289760u, 2293458109u,
-3047342438u, 2991127487u,
-3120876698u, 1684583131u,
-3638043310u, 1170404994u,
-863214540u, 1087193030u,
-199124911u, 520792961u,
-3169775996u, 1577421232u,
-3331828431u, 1013201099u,
-1716848157u, 4033596884u,
-1770708857u, 4229339322u,
-1146169032u, 1434258493u,
-3824360466u, 3242407770u,
-1926419493u, 2649785113u,
-872586426u, 762243036u,
-2736953692u, 816692935u,
-1571283333u, 3555213933u,
-2266795890u, 3781899767u,
-4290630595u, 517646945u,
-3006163611u, 2180594090u,
-959214578u, 558910384u,
-1283799121u, 3047062993u,
-3830962609u, 2391606125u,
-3544509313u, 622325861u,
-834785312u, 382936554u,
-1421463872u, 788479970u,
-1825135056u, 2725923798u,
-580988377u, 2826990641u,
-247825043u, 3167748333u,
-812546227u, 2506885666u,
-2584372201u, 1758123094u,
-1891789696u, 389974094u,
-345313518u, 2022370576u,
-3886113119u, 3338548567u,
-1083486947u, 2583576230u,
-1776047957u, 1771384107u,
-3604937815u, 3198590202u,
-3027522813u, 4155628142u,
-4232136669u, 427759438u,
-4244322689u, 542201663u,
-1549591985u, 2856634168u,
-556609672u, 45845311u,
-1175961330u, 3948351189u,
-4165739882u, 4194218315u,
-1634635545u, 4151937410u,
-713127376u, 1467786451u,
-1327394015u, 2743592929u,
-2638154051u, 810082938u,
-3077742128u, 1062268187u,
-4084325664u, 3810665822u,
-3735739145u, 2794294783u,
-2335576331u, 2560479831u,
-690240711u, 997658837u,
-2442302747u, 3948961926u,
-3958366652u, 3067277639u,
-2059157774u, 1211737169u,
-1516711748u, 2339636583u,
-4188504038u, 59581167u,
-2767897792u, 1389679610u,
-2658147000u, 2643979752u,
-3758739543u, 4189944477u,
-1454470782u, 100876854u,
-2995362413u, 118817200u,
-3252925478u, 2062343506u,
-2804483644u, 3088828656u,
-1231633714u, 4168280671u,
-2931588131u, 3284356565u,
-1255909792u, 3130054947u,
-4173605289u, 1407328702u,
-1677744031u, 3532596884u,
-3162657845u, 3887208531u,
-2256541290u, 3459463480u,
-3740979556u, 259034107u,
-392987633u, 3233195759u,
-3606709555u, 3424793077u,
-315836068u, 3200749877u,
-4065431359u, 760633989u,
-2982018998u, 1811050648u,
-234531934u, 1115203611u,
-3897494162u, 1516407838u,
-1603559457u, 323296368u,
-2632963283u, 1778459926u,
-2879836826u, 2146672889u,
-3486330348u, 492621815u,
-1231665285u, 2457048126u,
-3438440082u, 2217471853u,
-3355404249u, 3275550588u,
-1052645068u, 862072556u,
-4110617119u, 3745267835u,
-2657392572u, 4279236653u,
-1688445808u, 701920051u,
-956734128u, 581695350u,
-3157862788u, 2585726058u,
-1192588249u, 1410111809u,
-1651193125u, 3326135446u,
-1073280453u, 97376972u,
-2513844237u, 2187968410u,
-3976859649u, 4267859263u,
-3429034542u, 564493077u,
-3000537321u, 479241367u,
-3845637831u, 2868987960u,
-51544337u, 1029173765u,
-393624922u, 704325635u,
-2357610553u, 1418509533u,
-2007814586u, 3866658271u,
-3082385053u, 735688735u,
-916110004u, 3283299459u,
-1051684175u, 1083796807u,
-4074716319u, 813690332u,
-144264390u, 1439630796u,
-1508556987u, 675582689u,
-3748881891u, 3195309868u,
-362884708u, 1616408198u,
-43233176u, 837301135u,
-881504822u, 3254795114u,
-1385506591u, 2799925823u,
-1469874582u, 3464841997u,
-497175391u, 3929484338u,
-3975771289u, 1798536177u,
-2926265846u, 1374242438u,
-3675707838u, 4205965408u,
-3153165629u, 1499475160u,
-187287713u, 548490821u,
-3255259608u, 4247675634u,
-1940181471u, 3779953975u,
-687167150u, 2319566715u,
-1742785722u, 785893184u,
-2296977392u, 2778575413u,
-1794720651u, 48131484u,
-4084891412u, 1160134629u,
-3737623280u, 823113169u,
-3423207646u, 3803213486u,
-710625654u, 4116162021u,
-3693420287u, 4167766971u,
-1666602807u, 295320990u,
-3513255468u, 2487440590u,
-234080704u, 4004655503u,
-2971762528u, 1479656873u,
-4090178629u, 4044418876u,
-391947536u, 1462554406u,
-3909295855u, 1239580330u,
-1515601363u, 2011102035u,
-1442068334u, 4265993528u,
-1191921695u, 2291355695u,
-4257172787u, 576405853u,
-314332944u, 4038839101u,
-55559918u, 2378985842u,
-711098718u, 2425317635u,
-1644327317u, 1401013391u,
-4193760037u, 2958260436u,
-3167371443u, 3062418115u,
-3800755475u, 3167030094u,
-3489648204u, 1405430357u,
-526177822u, 2602636307u,
-915406019u, 4264167741u,
-1484090483u, 3070944737u,
-254529415u, 4017058800u,
-1702710265u, 1029665228u,
-2000382906u, 3185573940u,
-1381258384u, 4036354071u,
-2900841028u, 2670703363u,
-2921748807u, 2899069938u,
-4130543625u, 688472265u,
-4186808827u, 1054670286u,
-1132985391u, 2840525968u,
-4175776103u, 338058159u,
-1735964501u, 1539305024u,
-3497121710u, 1568260669u,
-2227290760u, 146827036u,
-3977176001u, 4060134777u,
-857488494u, 250055052u,
-4284109679u, 2502815838u,
-2592281721u, 1603444633u,
-1390562014u, 1556658131u,
-616327404u, 2448966429u,
-3051191726u, 3891353218u,
-1213304082u, 762328245u,
-2239052397u, 1082330589u,
-2455957292u, 201837927u,
-405397452u, 3079886794u,
-2583939798u, 2848283092u,
-3750724631u, 883849006u,
-3204198988u, 3341327098u,
-1855234968u, 1982110346u,
-1485529487u, 541496720u,
-4117290321u, 3607433551u,
-2168864636u, 133643215u,
-1055817409u, 3847827123u,
-2960769387u, 4046101649u,
-1176127003u, 4015671361u,
-4243643405u, 2849988118u,
-517111221u, 1796672358u,
-2045051700u, 3452457457u,
-2948254999u, 2102063419u,
-1556410577u, 1536380876u,
-3776661467u, 3281002516u,
-1735616066u, 1539151988u,
-1087795162u, 3332431596u,
-685631442u, 1147951686u,
-95237878u, 2005032160u,
-4012206915u, 4224354805u,
-3204999386u, 2415262714u,
-1433635018u, 116647396u,
-83167836u, 2881562655u,
-2729416454u, 1029284767u,
-881378302u, 2159170082u,
-555057366u, 1169104445u,
-3963877000u, 1919171906u,
-336034862u, 2017579106u,
-4059340529u, 3020819343u,
-865146997u, 2473524405u,
-944743644u, 1694443528u,
-1804513294u, 2904752429u,
-617975720u, 3671562289u,
-260177668u, 505662155u,
-1885941445u, 2504509403u,
-2260041112u, 1019936943u,
-3722741628u, 1511077569u,
-3100701179u, 1379422864u,
-1535670711u, 773792826u,
-1103819072u, 2089123665u,
-1157547425u, 329152940u,
-4142587430u, 484732447u,
-2475035432u, 1120017626u,
-412145504u, 965125959u,
-324924679u, 2809286837u,
-2842141483u, 4029205195u,
-2974306813u, 515627448u,
-3791551981u, 1097806406u,
-3873078673u, 136118734u,
-1872130856u, 3632422367u,
-3574135531u, 4017075736u,
-1699452298u, 1403506686u,
-344414660u, 1189129691u,
-3487080616u, 1516736273u,
-1805475756u, 2562064338u,
-163335594u, 2732147834u,
-4077452507u, 2984955003u,
-4271866024u, 3071338162u,
-2347111903u, 873829983u,
-1948409509u, 1923531348u,
-459509140u, 771592405u,
-1750124750u, 2334938333u,
-213811117u, 2586632018u,
-185232757u, 4032960199u,
-2447383637u, 284777551u,
-1654276320u, 2687561076u,
-3512945009u, 308584855u,
-1861027147u, 4102279334u,
-3203802620u, 1692079268u,
-4250142168u, 2565680167u,
-1507046104u, 841195925u,
-520565830u, 3674576684u,
-38924274u, 3770488806u,
-2414430882u, 3978473838u,
-3703994407u, 69201295u,
-3099963860u, 1255084262u,
-690971838u, 3539996781u,
-3696902571u, 3593730713u,
-2363435042u, 54945052u,
-1785765213u, 184911581u,
-1586241476u, 1939595371u,
-2534883189u, 2432427547u,
-2374171993u, 2039128933u,
-2955715987u, 2295501078u,
-2741583197u, 1280920000u,
-686818699u, 1238742497u,
-3843660102u, 82177963u,
-1281043691u, 1121403845u,
-1697846708u, 284852964u,
-278661677u, 2889101923u,
-2127558730u, 713121337u,
-872502474u, 511142139u,
-1261140657u, 1747052377u,
-2108187161u, 927011680u,
-955328267u, 3821994995u,
-2707230761u, 4142246789u,
-4134691985u, 1958963937u,
-2498463509u, 1977988705u,
-1419293714u, 1636932722u,
-2567532373u, 4075249328u,
-240575705u, 1956681213u,
-2598802768u, 2025886508u,
-4104757832u, 3026358429u,
-3242615202u, 4026813725u,
-255108733u, 1845587644u,
-3573008472u, 3615577014u,
-1222733548u, 1205557630u,
-917608574u, 1363253259u,
-1541946015u, 3087190425u,
-1138008081u, 1444019663u,
-109793386u, 341851980u,
-857839960u, 2515339233u,
-156283211u, 1906768669u,
-3886713057u, 1276595523u,
-2809830736u, 460237542u,
-3420452099u, 142985419u,
-205970448u, 4198897105u,
-1950698961u, 2069753399u,
-1142216925u, 1113051162u,
-1033680610u, 4278599955u,
-1106466069u, 356742959u,
-531521052u, 3494863964u,
-225629455u, 3735275001u,
-3662626864u, 1750561299u,
-1012864651u, 2101846429u,
-1074553219u, 668829411u,
-992181339u, 3384018814u,
-3330664522u, 860966321u,
-1885071395u, 4233785523u,
-100741310u, 451656820u,
-2148187612u, 1063001151u,
-360256231u, 107312677u,
-3650357479u, 2390172694u,
-22452685u, 237319043u,
-3600462351u, 1216645846u,
-2088767754u, 164402616u,
-2418980170u, 926137824u,
-94638678u, 1689811113u,
-2751052984u, 1767810825u,
-271289013u, 3896132233u,
-103797041u, 1397772514u,
-3441135892u, 3323383489u,
-2491268371u, 1662561885u,
-1612872497u, 2986430557u,
-2756998822u, 207428029u,
-937973965u, 2791656726u,
-1949717207u, 2260498180u,
-2648427775u, 2360400900u,
-2080496169u, 486358863u,
-1582022990u, 1263709570u,
-1396468647u, 1377764574u,
-363008508u, 1293502429u,
-224580012u, 4252610345u,
-1435134775u, 1099809675u,
-533671980u, 1533438766u,
-1820532305u, 2776960536u,
-3374512975u, 3542220540u,
-822810075u, 3716663290u,
-1157398049u, 3752806924u,
-4081637863u, 337070226u,
-3866585976u, 359270190u,
-2110942730u, 3267551635u,
-644850146u, 1306761320u,
-746972907u, 934259457u,
-2341378668u, 2220373824u,
-1242645122u, 4109252858u,
-1625266099u, 1173698481u,
-383517064u, 896322512u,
-3377483696u, 1788337208u,
-455496839u, 3194373887u,
-1837689083u, 1336556841u,
-1658628529u, 2911512007u,
-3838343487u, 2757664765u,
-1537187340u, 3712582785u,
-367022558u, 3071359622u,
-3926147070u, 35432879u,
-3093195926u, 2561488770u,
-4273132307u, 3898950547u,
-2838251049u, 2103926083u,
-2549435227u, 536047554u,
-1858986613u, 2040551642u,
-1147412575u, 1972369852u,
-4166184983u, 3528794619u,
-4077477194u, 3565689036u,
-808048238u, 3826350461u,
-1359641525u, 1197100813u,
-265993036u, 1864569342u,
-725164342u, 2264788336u,
-1831223342u, 3329594980u,
-923017956u, 490608221u,
-3818634478u, 258154469u,
-1441714797u, 1174785921u,
-3833372385u, 3287246572u,
-1677395563u, 3569218731u,
-868981704u, 2163330264u,
-2649450292u, 500120236u,
-465161780u, 746438382u,
-1145009669u, 2520062970u,
-2810524030u, 1561519055u,
-1479878006u, 3864969305u,
-2686075657u, 4042710240u,
-3224066062u, 2774151984u,
-2226179547u, 1643626042u,
-2328730865u, 3160666939u,
-2107011431u, 96459446u,
-3920328742u, 3336407558u,
-829404209u, 1878067032u,
-1235983679u, 4237425634u,
-466519055u, 3870676863u,
-934312076u, 2952135524u,
-276949224u, 4100839753u,
-424001484u, 1955120893u,
-4015478120u, 1265237690u,
-427484362u, 4246879223u,
-3452969617u, 1724363362u,
-1553513184u, 834830418u,
-1858777639u, 3476334357u,
-4144030366u, 2450047160u,
-2950762705u, 4277111759u,
-358032121u, 2511026735u,
-167923105u, 2059208280u,
-251949572u, 3065234219u,
-1535473864u, 556796152u,
-1513237478u, 3150857516u,
-1103404394u, 198182691u,
-1476438092u, 2913077464u,
-207119516u, 3963810232u,
-2954651680u, 1535115487u,
-3051522276u, 4046477658u,
-917804636u, 864395565u,
-632704095u, 140762681u,
-1802040304u, 990407433u,
-3771506212u, 4106024923u,
-1287729497u, 2198985327u,
-4052924496u, 2926590471u,
-3084557148u, 1472898694u,
-1009870118u, 559702706u,
-4265214507u, 82077489u,
-3067891003u, 3295678907u,
-2402308151u, 1096697687u,
-464407878u, 4190838199u,
-4269578403u, 3060919438u,
-2899950405u, 3046872820u,
-733509243u, 1583801700u,
-40453902u, 3879773881u,
-1993425202u, 2185339100u,
-1877837196u, 3912423882u,
-3293122640u, 4104318469u,
-1679617763u, 3703603898u,
-8759461u, 2540185277u,
-1152198475u, 2038345882u,
-2503579743u, 1446869792u,
-2019419351u, 4051584612u,
-3178289407u, 3992503830u,
-2879018745u, 2719373510u,
-700836153u, 1675560450u,
-4121245793u, 2064715719u,
-343595772u, 1996164093u,
-3130433948u, 405251683u,
-2804817126u, 1607133689u,
-463852893u, 2864244470u,
-2224044848u, 4071581802u,
-2537107938u, 2246347953u,
-3207234525u, 2028708916u,
-2272418128u, 803575837u,
-38655481u, 2170452091u,
-3272166407u, 557660441u,
-4019147902u, 3841480082u,
-298459606u, 2600943364u,
-2440657523u, 255451671u,
-3424361375u, 779434428u,
-3088526123u, 490671625u,
-1322855877u, 3452203069u,
-3057021940u, 2285701422u,
-2014993457u, 2390431709u,
-2002090272u, 1568745354u,
-1783152480u, 823305654u,
-4053862835u, 2200236540u,
-3009412313u, 3184047862u,
-3032187389u, 4159715581u,
-2966902888u, 252986948u,
-1849329144u, 3160134214u,
-3420960112u, 3198900547u,
-749160960u, 379139040u,
-1208883495u, 1566527339u,
-3006227299u, 4194096960u,
-556075248u, 497404038u,
-1717327230u, 1496132623u,
-1775955687u, 1719108984u,
-1014328900u, 4189966956u,
-2108574735u, 2584236470u,
-684087286u, 531310503u,
-4264509527u, 773405691u,
-3088905079u, 3456882941u,
-3105682208u, 3382290593u,
-2289363624u, 3296306400u,
-4168438718u, 467441309u,
-777173623u, 3241407531u,
-1183994815u, 1132983260u,
-1610606159u, 2540270567u,
-2649684057u, 1397502982u,
-146657385u, 3318434267u,
-2109315753u, 3348545480u,
-3193669211u, 811750340u,
-1073256162u, 3571673088u,
-546596661u, 1017047954u,
-3403136990u, 2540585554u,
-1477047647u, 4145867423u,
-2826408201u, 3531646869u,
-784952939u, 943914610u,
-2717443875u, 3657384638u,
-1806867885u, 1903578924u,
-3985088434u, 1911188923u,
-1764002686u, 3672748083u,
-1832925325u, 241574049u,
-519948041u, 3181425568u,
-2939747257u, 1634174593u,
-3429894862u, 3529565564u,
-1089679033u, 240953857u,
-2025369941u, 2695166650u,
-517086873u, 2964595704u,
-3017658263u, 3828377737u,
-2144895011u, 994799311u,
-1184683823u, 4260564140u,
-308018483u, 4262383425u,
-1374752558u, 3431057723u,
-1572637805u, 383233885u,
-3188015819u, 4051263539u,
-233319221u, 3794788167u,
-2017406667u, 919677938u,
-4074952232u, 1683612329u,
-4213676186u, 327142514u,
-3032591014u, 4204155962u,
-206775997u, 2283918569u,
-2395147154u, 3427505379u,
-2211319468u, 4153726847u,
-2217060665u, 350160869u,
-2493667051u, 1648200185u,
-3441709766u, 1387233546u,
-140980u, 1891558063u,
-760080239u, 2088061981u,
-1580964938u, 740563169u,
-422986366u, 330624974u,
-4264507722u, 150928357u,
-2738323042u, 2948665536u,
-918718096u, 376390582u,
-3966098971u, 717653678u,
-3219466255u, 3799363969u,
-3424344721u, 3187805406u,
-375347278u, 3490350144u,
-1992212097u, 2263421398u,
-3855037968u, 1928519266u,
-3866327955u, 1129127000u,
-1782515131u, 2746577402u,
-3059200728u, 2108753646u,
-2738070963u, 1336849395u,
-1705302106u, 768287270u,
-1343511943u, 2247006571u,
-1956142255u, 1780259453u,
-3475618043u, 212490675u,
-622521957u, 917121602u,
-1852992332u, 1267987847u,
-3170016833u, 2549835613u,
-3299763344u, 2864033668u,
-3378768767u, 1236609378u,
-4169365948u, 3738062408u,
-2661022773u, 2006922227u,
-2760592161u, 3828932355u,
-2636387819u, 2616619070u,
-1237256330u, 3449066284u,
-2871755260u, 3729280948u,
-3862686086u, 431292293u,
-3285899651u, 786322314u,
-2531158535u, 724901242u,
-2377363130u, 1415970351u,
-1244759631u, 3263135197u,
-965248856u, 174024139u,
-2297418515u, 2954777083u,
-987586766u, 3206261120u,
-4059515114u, 3903854066u,
-1931934525u, 2287507921u,
-1827135136u, 1781944746u,
-574617451u, 2299034788u,
-2650140034u, 4081586725u,
-2482286699u, 1109175923u,
-458483596u, 618705848u,
-4059852729u, 1813855658u,
-4190721328u, 1129462471u,
-4089998050u, 3575732749u,
-2375584220u, 1037031473u,
-1623777358u, 3389003793u,
-546597541u, 352770237u,
-1383747654u, 3122687303u,
-1646071378u, 1164309901u,
-290870767u, 830691298u,
-929335420u, 3193251135u,
-989577914u, 3626554867u,
-591974737u, 3996958215u,
-3163711272u, 3071568023u,
-1516846461u, 3656006011u,
-2698625268u, 2510865430u,
-340274176u, 1167681812u,
-3698796465u, 3155218919u,
-4102288238u, 1673474350u,
-3069708839u, 2704165015u,
-1237411891u, 1854985978u,
-3646837503u, 3625406022u,
-921552000u, 1712976649u,
-3939149151u, 878608872u,
-3406359248u, 1068844551u,
-1834682077u, 4155949943u,
-2437686324u, 3163786257u,
-2645117577u, 1988168803u,
-747285578u, 1626463554u,
-1235300371u, 1256485167u,
-1914142538u, 4141546431u,
-3838102563u, 582664250u,
-1883344352u, 2083771672u,
-2611657933u, 2139079047u,
-2250573853u, 804336148u,
-3066325351u, 2770847216u,
-4275641370u, 1455750577u,
-3346357270u, 1674051445u,
-601221482u, 3992583643u,
-1402445097u, 3622527604u,
-2509017299u, 2966108111u,
-2557027816u, 900741486u,
-1790771021u, 2912643797u,
-2631381069u, 4014551783u,
-90375300u, 300318232u,
-3269968032u, 2679371729u,
-2664752123u, 3517585534u,
-3253901179u, 542270815u,
-1188641600u, 365479232u,
-2210121140u, 760762191u,
-1273768482u, 1216399252u,
-3484324231u, 4287337666u,
-16322182u, 643179562u,
-325675502u, 3652676161u,
-3120716054u, 3330259752u,
-1011990087u, 2990167340u,
-1097584090u, 3262252593u,
-1829409951u, 3665087267u,
-1214854475u, 2134299399u,
-3704419305u, 411263051u,
-1625446136u, 549838529u,
-4283196353u, 1342880802u,
-3460621305u, 1967599860u,
-4282843369u, 1275671016u,
-2544665755u, 853593042u,
-901109753u, 2682611693u,
-110631633u, 797487791u,
-1472073141u, 850464484u,
-797089608u, 3286110054u,
-350397471u, 2775631060u,
-366448238u, 3842907484u,
-2219863904u, 3623364733u,
-1850985302u, 4009616991u,
-294963924u, 3693536939u,
-3061255808u, 1615375832u,
-1920066675u, 4113028420u,
-4032223840u, 2318423400u,
-2701956286u, 4145497671u,
-3991532344u, 2536338351u,
-1679099863u, 1728968857u,
-449740816u, 2686506989u,
-685242457u, 97590863u,
-3258354115u, 1502282913u,
-1235084019u, 2151665147u,
-528459289u, 231097464u,
-2477280726u, 3651607391u,
-2091754612u, 1178454681u,
-980597335u, 1604483865u,
-1842333726u, 4146839064u,
-3213794286u, 2601416506u,
-754220096u, 3571436033u,
-488595746u, 1448097974u,
-4004834921u, 238887261u,
-3320337489u, 1416989070u,
-2928916831u, 4093725287u,
-186020771u, 2367569534u,
-3046087671u, 4090084518u,
-3548184546u, 679517009u,
-1962659444u, 3539886328u,
-4192003933u, 1678423485u,
-3827951761u, 3086277222u,
-2144472852u, 1390394371u,
-2976322029u, 1574517163u,
-3553313841u, 119173722u,
-1702434637u, 1766260771u,
-3629581771u, 1407497759u,
-895654784u, 751439914u,
-4008409498u, 215917713u,
-1482103833u, 695551833u,
-1288382231u, 2656990891u,
-2581779077u, 1570750352u,
-3710689053u, 1741390464u,
-2666411616u, 3533987737u,
-4289478316u, 3576119563u,
-4118694920u, 108199666u,
-3869794273u, 963183826u,
-2081410737u, 3796810515u,
-791123882u, 2525792704u,
-1036883117u, 136547246u,
-875691100u, 2592925324u,
-614302599u, 3013176417u,
-2689342539u, 427154472u,
-532957601u, 1228758574u,
-1898117151u, 1181643858u,
-1908591042u, 1464255968u,
-446980910u, 2984611177u,
-58509511u, 1046943619u,
-3508927906u, 2001585786u,
-2544767379u, 1525438381u,
-552181222u, 1959725830u,
-879448844u, 1348536411u,
-4242243590u, 2861338018u,
-1082052441u, 1034351453u,
-601175800u, 764077711u,
-530635011u, 3785343245u,
-2178026726u, 117256687u,
-2378297261u, 457568934u,
-76438221u, 4104954272u,
-956793873u, 3783168634u,
-2485968477u, 2381948487u,
-4226929450u, 3148473363u,
-2518273601u, 3569490233u,
-879369091u, 2180270337u,
-3674375989u, 1387729170u,
-977997984u, 4270646856u,
-568650985u, 951677556u,
-4213877384u, 2721005055u,
-1073364549u, 2563403831u,
-1678669911u, 66786703u,
-2273631661u, 1149351924u,
-3651298990u, 1581883443u,
-246723096u, 1895026827u,
-3810605772u, 3711056516u,
-4058833288u, 2193790614u,
-2080120290u, 3638638708u,
-2915672708u, 2263003308u,
-2361934197u, 4136767460u,
-1976115991u, 3448840877u,
-2019238520u, 225333538u,
-874340815u, 2976159827u,
-1555273378u, 3797521928u,
-1942347150u, 3262952567u,
-435997738u, 340403353u,
-2817830907u, 2078619498u,
-749534111u, 1178073973u,
-894654712u, 3361226032u,
-841092198u, 3288261538u,
-1696412169u, 1496966875u,
-697501571u, 1059158875u,
-3739946319u, 2481012988u,
-568983526u, 114945840u,
-1559249010u, 2218244008u,
-2841706923u, 1632780103u,
-4020169654u, 2087949619u,
-2438736103u, 24032648u,
-833416317u, 3787017905u,
-2373238993u, 2575395164u,
-3434544481u, 3228481067u,
-2542976862u, 2971726178u,
-2880371864u, 3642087909u,
-2407477975u, 2239080836u,
-1043714217u, 3894199764u,
-2235879182u, 203853421u,
-2933669448u, 2504940536u,
-834683330u, 425935223u,
-3560796393u, 3565833278u,
-1668000829u, 3683399154u,
-3414330886u, 1748785729u,
-1023171602u, 580966986u,
-2531038985u, 3227325488u,
-2657385925u, 2124704694u,
-233442446u, 1107045577u,
-3407293834u, 552770757u,
-3899097693u, 1067532701u,
-115667924u, 1406028344u,
-1707768231u, 3724015962u,
-2419657149u, 18613994u,
-2532882091u, 3476683808u,
-1560838678u, 811220224u,
-895961699u, 3762914298u,
-1328752423u, 1844996900u,
-1420427894u, 1848067707u,
-1210281744u, 904215228u,
-4055325594u, 1118521573u,
-2496554183u, 2579259919u,
-3996647489u, 3657647605u,
-325254059u, 3136157065u,
-3951522674u, 4052925250u,
-3341068436u, 2287683323u,
-1313073005u, 126005630u,
-2505120084u, 1194725057u,
-853746559u, 3555092974u,
-2689238752u, 49515858u,
-1244776042u, 1069300695u,
-61073168u, 1010661841u,
-1269521335u, 1902040126u,
-990632502u, 2378708922u,
-3858321250u, 1400735275u,
-2974699176u, 2771676666u,
-170995186u, 2877798589u,
-545726212u, 2225229957u,
-1086473152u, 3454177594u,
-3859483262u, 1499729584u,
-2088002891u, 2883475137u,
-3222194252u, 4144472319u,
-2212229854u, 4146740722u,
-567988835u, 1051332394u,
-3932046135u, 542648229u,
-3017852446u, 1277887997u,
-162888005u, 1669710469u,
-1492500905u, 553041029u,
-1434876932u, 533989516u,
-3817492747u, 584127807u,
-4147115982u, 2993670925u,
-4020312558u, 710021255u,
-3509733475u, 3587959456u,
-2088550465u, 1745399498u,
-2952242967u, 1259815443u,
-869648362u, 1404723176u,
-3947542735u, 1334333531u,
-3873471582u, 229399758u,
-59634866u, 3239516985u,
-3844250972u, 1275954779u,
-1385684948u, 2243700741u,
-2512155003u, 1685649437u,
-639306006u, 2524620206u,
-955360345u, 1646776457u,
-576786501u, 655707039u,
-2864351838u, 3736264674u,
-655621239u, 362070173u,
-1200907897u, 2384379464u,
-15823708u, 206117476u,
-3652870937u, 122927134u,
-1193310960u, 1093099415u,
-3696538026u, 4112584792u,
-1834541277u, 845639252u,
-2069527017u, 547588820u,
-4178147211u, 2827259351u,
-1764455305u, 3312003602u,
-940846775u, 1054995047u,
-2976960697u, 1934305529u,
-3095615046u, 3354962706u,
-2199137382u, 1005722394u,
-1875867180u, 2064356511u,
-3363633633u, 2688499147u,
-4019734130u, 3096333006u,
-2069509024u, 2906358341u,
-3247463123u, 4191788132u,
-2232866485u, 1456016086u,
-1422674894u, 867282151u,
-1851386407u, 1268304058u,
-1612503136u, 1739843072u,
-134947567u, 2978775774u,
-2051592101u, 1017127033u,
-1284167756u, 1090844589u,
-831688783u, 2079216362u,
-2079309682u, 1950585801u,
-1626991196u, 3644714163u,
-3678110059u, 898470030u,
-1117570988u, 2517572125u,
-3916646913u, 3182422972u,
-3630426828u, 969847973u,
-2835126238u, 53541366u,
-3427164640u, 3463937250u,
-3044785046u, 897322257u,
-103038235u, 3804506837u,
-3443872170u, 4185408854u,
-2557463241u, 4080940424u,
-3669923099u, 2789619871u,
-2048168570u, 2429169982u,
-3174690447u, 2513494106u,
-3099587829u, 2627855577u,
-1213061732u, 3143736628u,
-3482268149u, 1250714337u,
-3553412672u, 2689632914u,
-31648125u, 3872383625u,
-1565760579u, 36665130u,
-1282106920u, 359361724u,
-751041229u, 2257179590u,
-2915361862u, 280819225u,
-954406473u, 4101682199u,
-2907818413u, 4254297769u,
-3493178615u, 3755944354u,
-3539557658u, 3330196096u,
-4043533423u, 1134196225u,
-4177134659u, 127246419u,
-4213770762u, 1978302978u,
-2442615581u, 923049607u,
-1004426206u, 782768297u,
-2702745496u, 1880389457u,
-2410586681u, 1430106871u,
-4103323427u, 3168399477u,
-201787012u, 3105353527u,
-3716682375u, 3616334719u,
-3413209549u, 656672786u,
-526032790u, 2895072131u,
-2876965944u, 182894450u,
-456581318u, 2683752067u,
-1287916294u, 1270745752u,
-3877875910u, 3190666241u,
-3240336907u, 4024807233u,
-4227999465u, 2389301430u,
-1681224377u, 1576191191u,
-3599250276u, 2381111980u,
-3995044500u, 995595530u,
-3495321877u, 3956024585u,
-1611608524u, 3815677453u,
-1520987487u, 3669102590u,
-2062334396u, 1656117707u,
-5457134u, 3234118251u,
-4242065111u, 596879987u,
-470187419u, 2688566989u,
-3259870297u, 660100446u,
-1042378442u, 2206034096u,
-442236198u, 2542452448u,
-493137955u, 392411099u,
-3111186954u, 438250493u,
-947967568u, 1234595917u,
-4230082284u, 2762976773u,
-421203727u, 3728409592u,
-2870085764u, 1455086530u,
-2762099647u, 4011882747u,
-1785430706u, 3684427488u,
-1215981925u, 3227517889u,
-3269061963u, 4037515364u,
-1749401388u, 2167451566u,
-3168911474u, 4255057396u,
-2026092260u, 1736192508u,
-4123254745u, 2319366806u,
-3909727042u, 3114708966u,
-1938800693u, 680793595u,
-3933041672u, 616863613u,
-1525265867u, 2808224480u,
-2122290603u, 1211197714u,
-1186177814u, 2395325006u,
-3520488321u, 3979192396u,
-3540779343u, 4192918639u,
-1763872074u, 3402419930u,
-2736030448u, 1120335563u,
-1698949078u, 3993310631u,
-2947659998u, 1461045789u,
-1966048551u, 2228221363u,
-597941119u, 3498018399u,
-1441110751u, 2229999711u,
-393987327u, 454500547u,
-1222959566u, 567151340u,
-2496952483u, 1708770195u,
-3774764786u, 1492844524u,
-3308300614u, 805568076u,
-4068812294u, 3404648243u,
-868414882u, 177406999u,
-1608110313u, 642061169u,
-2093999089u, 222470301u,
-1027515771u, 3131251981u,
-2851936150u, 4272755262u,
-2763002551u, 1881527822u,
-1532845092u, 709643652u,
-682573592u, 1244104217u,
-440905170u, 1111321746u,
-796769556u, 2500467040u,
-3002618826u, 1112998535u,
-1188525643u, 4212674512u,
-1780193104u, 1243644607u,
-3691719535u, 2958853053u,
-2813437721u, 4036584207u,
-466635014u, 2277292580u,
-4082276003u, 1030800045u,
-1899531424u, 609466946u,
-1750863246u, 379050598u,
-3576413281u, 731493104u,
-2707384133u, 2289193651u,
-132259176u, 4115195437u,
-1769890695u, 2715470335u,
-3348954692u, 2166575624u,
-1819263183u, 2028531518u,
-2154809766u, 3672399742u,
-1142139448u, 88299682u,
-76727603u, 4198182186u,
-2304993586u, 1666387627u,
-2488475423u, 3832777692u,
-284366017u, 3359785538u,
-3469807328u, 2926494787u,
-1914195188u, 1134129972u,
-3829072836u, 2493478921u,
-3738499303u, 3311304980u,
-726951526u, 911080963u,
-932916545u, 2235559063u,
-2909742396u, 1765719309u,
-465269850u, 3803621553u,
-1456588655u, 508290328u,
-1490719640u, 3356513470u,
-2262196163u, 1451774941u,
-2908490783u, 251085588u,
-830410677u, 3172220325u,
-4039692645u, 1383603170u,
-3897208579u, 1940535730u,
-151909546u, 2384458112u,
-};
-
-// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
-bool Test(int offset, int len = 0) {
-#undef Check
-#undef IsAlive
-
-#define Check(x) do { \
- const uint32_t actual = (x), e = expected[index++]; \
- bool ok = actual == e; \
- if (!ok) { \
- cerr << "expected " << hex << e << " but got " << actual << endl; \
- ++errors; \
- } \
- assert(ok); \
-} while (0)
-
-#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
-
- // After the following line is where the uses of "Check" and such will go.
- static int index = 0;
-if (offset == -1) { int alive = 0; { uint64_t h = farmhashxo::Hash64WithSeeds(data, len++, SEED0, SEED1); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } { uint64_t h = farmhashxo::Hash64WithSeed(data, len++, SEED); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } { uint64_t h = farmhashxo::Hash64(data, len++); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } len -= 3; return alive > 0; }
-{ uint64_t h = farmhashxo::Hash64WithSeeds(data + offset, len, SEED0, SEED1); Check(h >> 32); Check((h << 32) >> 32); }
-{ uint64_t h = farmhashxo::Hash64WithSeed(data + offset, len, SEED); Check(h >> 32); Check((h << 32) >> 32); }
-{ uint64_t h = farmhashxo::Hash64(data + offset, len); Check(h >> 32); Check((h << 32) >> 32); }
-
- return true;
-#undef Check
-#undef IsAlive
-}
-
-int RunTest() {
- Setup();
- int i = 0;
- cout << "Running farmhashxoTest";
- if (!Test(-1)) {
- cout << "... Unavailable\n";
- return NoteErrors();
- }
- // Good. The function is attempting to hash, so run the full test.
- int errors_prior_to_test = errors;
- for ( ; i < kTestSize - 1; i++) {
- Test(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- Test(0, i);
- }
- Test(0, kDataSize);
- cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
- return NoteErrors();
-}
-
-#else
-
-// After the following line is where the code to print hash codes will go.
-void Dump(int offset, int len) {
-{ uint64_t h = farmhashxo::Hash64WithSeeds(data + offset, len, SEED0, SEED1); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
-{ uint64_t h = farmhashxo::Hash64WithSeed(data + offset, len, SEED); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
-{ uint64_t h = farmhashxo::Hash64(data + offset, len); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
-}
-
-#endif
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-
-} // namespace farmhashxoTest
-
-#if !TESTING
-int main(int argc, char** argv) {
- Setup();
- cout << "uint32_t expected[] = {\n";
- int i = 0;
- for ( ; i < kTestSize - 1; i++) {
- farmhashxoTest::Dump(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- farmhashxoTest::Dump(0, i);
- }
- farmhashxoTest::Dump(0, kDataSize);
- cout << "};\n";
-}
-#endif
-
-int main() {
- farmhashccTest::RunTest();
- farmhashmkTest::RunTest();
- farmhashnaTest::RunTest();
- farmhashntTest::RunTest();
- farmhashsaTest::RunTest();
- farmhashsuTest::RunTest();
- farmhashteTest::RunTest();
- farmhashuoTest::RunTest();
- farmhashxoTest::RunTest();
- __builtin_unreachable();
-}
-
-#endif // FARMHASHSELFTEST
+
+uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
+ if (len <= 24) {
+ if (len >= 13) return farmhashmk::Hash32Len13to24(s, len, seed * c1);
+ else if (len >= 5) return farmhashmk::Hash32Len5to12(s, len, seed);
+ else return farmhashmk::Hash32Len0to4(s, len, seed);
+ }
+ uint32_t h = farmhashmk::Hash32Len13to24(s, 24, seed ^ len);
+ return Mur(Hash32(s + 24, len - 24) + seed, h);
+}
+
+#undef Fetch
+#define Fetch Fetch64
+
+#undef Rotate
+#define Rotate Rotate64
+
+#undef Bswap
+#define Bswap Bswap64
+
+STATIC_INLINE uint64_t ShiftMix(uint64_t val) {
+ return val ^ (val >> 47);
+}
+
+STATIC_INLINE uint64_t HashLen16(uint64_t u, uint64_t v) {
+ return Hash128to64(Uint128(u, v));
+}
+
+STATIC_INLINE uint64_t HashLen16(uint64_t u, uint64_t v, uint64_t mul) {
+ // Murmur-inspired hashing.
+ uint64_t a = (u ^ v) * mul;
+ a ^= (a >> 47);
+ uint64_t b = (v ^ a) * mul;
+ b ^= (b >> 47);
+ b *= mul;
+ return b;
+}
+
+STATIC_INLINE uint64_t HashLen0to16(const char *s, size_t len) {
+ if (len >= 8) {
+ uint64_t mul = k2 + len * 2;
+ uint64_t a = Fetch(s) + k2;
+ uint64_t b = Fetch(s + len - 8);
+ uint64_t c = Rotate(b, 37) * mul + a;
+ uint64_t d = (Rotate(a, 25) + b) * mul;
+ return HashLen16(c, d, mul);
+ }
+ if (len >= 4) {
+ uint64_t mul = k2 + len * 2;
+ uint64_t a = Fetch32(s);
+ return HashLen16(len + (a << 3), Fetch32(s + len - 4), mul);
+ }
+ if (len > 0) {
+ uint8_t a = s[0];
+ uint8_t b = s[len >> 1];
+ uint8_t c = s[len - 1];
+ uint32_t y = static_cast<uint32_t>(a) + (static_cast<uint32_t>(b) << 8);
+ uint32_t z = len + (static_cast<uint32_t>(c) << 2);
+ return ShiftMix(y * k2 ^ z * k0) * k2;
+ }
+ return k2;
+}
+
+// Return a 16-byte hash for 48 bytes. Quick and dirty.
+// Callers do best to use "random-looking" values for a and b.
+STATIC_INLINE pair<uint64_t, uint64_t> WeakHashLen32WithSeeds(
+ uint64_t w, uint64_t x, uint64_t y, uint64_t z, uint64_t a, uint64_t b) {
+ a += w;
+ b = Rotate(b + a + z, 21);
+ uint64_t c = a;
+ a += x;
+ a += y;
+ b += Rotate(a, 44);
+ return make_pair(a + z, b + c);
+}
+
+// Return a 16-byte hash for s[0] ... s[31], a, and b. Quick and dirty.
+STATIC_INLINE pair<uint64_t, uint64_t> WeakHashLen32WithSeeds(
+ const char* s, uint64_t a, uint64_t b) {
+ return WeakHashLen32WithSeeds(Fetch(s),
+ Fetch(s + 8),
+ Fetch(s + 16),
+ Fetch(s + 24),
+ a,
+ b);
+}
+
+
+
+// A subroutine for CityHash128(). Returns a decent 128-bit hash for strings
+// of any length representable in signed long. Based on City and Murmur.
+STATIC_INLINE uint128_t CityMurmur(const char *s, size_t len, uint128_t seed) {
+ uint64_t a = Uint128Low64(seed);
+ uint64_t b = Uint128High64(seed);
+ uint64_t c = 0;
+ uint64_t d = 0;
+ signed long l = len - 16;
+ if (l <= 0) { // len <= 16
+ a = ShiftMix(a * k1) * k1;
+ c = b * k1 + HashLen0to16(s, len);
+ d = ShiftMix(a + (len >= 8 ? Fetch(s) : c));
+ } else { // len > 16
+ c = HashLen16(Fetch(s + len - 8) + k1, a);
+ d = HashLen16(b + len, c + Fetch(s + len - 16));
+ a += d;
+ do {
+ a ^= ShiftMix(Fetch(s) * k1) * k1;
+ a *= k1;
+ b ^= a;
+ c ^= ShiftMix(Fetch(s + 8) * k1) * k1;
+ c *= k1;
+ d ^= c;
+ s += 16;
+ l -= 16;
+ } while (l > 0);
+ }
+ a = HashLen16(a, c);
+ b = HashLen16(d, b);
+ return Uint128(a ^ b, HashLen16(b, a));
+}
+
+uint128_t CityHash128WithSeed(const char *s, size_t len, uint128_t seed) {
+ if (len < 128) {
+ return CityMurmur(s, len, seed);
+ }
+
+ // We expect len >= 128 to be the common case. Keep 56 bytes of state:
+ // v, w, x, y, and z.
+ pair<uint64_t, uint64_t> v, w;
+ uint64_t x = Uint128Low64(seed);
+ uint64_t y = Uint128High64(seed);
+ uint64_t z = len * k1;
+ v.first = Rotate(y ^ k1, 49) * k1 + Fetch(s);
+ v.second = Rotate(v.first, 42) * k1 + Fetch(s + 8);
+ w.first = Rotate(y + z, 35) * k1 + x;
+ w.second = Rotate(x + Fetch(s + 88), 53) * k1;
+
+ // This is the same inner loop as CityHash64(), manually unrolled.
+ do {
+ x = Rotate(x + y + v.first + Fetch(s + 8), 37) * k1;
+ y = Rotate(y + v.second + Fetch(s + 48), 42) * k1;
+ x ^= w.second;
+ y += v.first + Fetch(s + 40);
+ z = Rotate(z + w.first, 33) * k1;
+ v = WeakHashLen32WithSeeds(s, v.second * k1, x + w.first);
+ w = WeakHashLen32WithSeeds(s + 32, z + w.second, y + Fetch(s + 16));
+ std::swap(z, x);
+ s += 64;
+ x = Rotate(x + y + v.first + Fetch(s + 8), 37) * k1;
+ y = Rotate(y + v.second + Fetch(s + 48), 42) * k1;
+ x ^= w.second;
+ y += v.first + Fetch(s + 40);
+ z = Rotate(z + w.first, 33) * k1;
+ v = WeakHashLen32WithSeeds(s, v.second * k1, x + w.first);
+ w = WeakHashLen32WithSeeds(s + 32, z + w.second, y + Fetch(s + 16));
+ std::swap(z, x);
+ s += 64;
+ len -= 128;
+ } while (LIKELY(len >= 128));
+ x += Rotate(v.first + z, 49) * k0;
+ y = y * k0 + Rotate(w.second, 37);
+ z = z * k0 + Rotate(w.first, 27);
+ w.first *= 9;
+ v.first *= k0;
+ // If 0 < len < 128, hash up to 4 chunks of 32 bytes each from the end of s.
+ for (size_t tail_done = 0; tail_done < len; ) {
+ tail_done += 32;
+ y = Rotate(x + y, 42) * k0 + v.second;
+ w.first += Fetch(s + len - tail_done + 16);
+ x = x * k0 + w.first;
+ z += w.second + Fetch(s + len - tail_done);
+ w.second += v.first;
+ v = WeakHashLen32WithSeeds(s + len - tail_done, v.first + z, v.second);
+ v.first *= k0;
+ }
+ // At this point our 56 bytes of state should contain more than
+ // enough information for a strong 128-bit hash. We use two
+ // different 56-byte-to-8-byte hashes to get a 16-byte final result.
+ x = HashLen16(x, v.first);
+ y = HashLen16(y + z, w.first);
+ return Uint128(HashLen16(x + v.second, w.second) + y,
+ HashLen16(x + w.second, y + v.second));
+}
+
+STATIC_INLINE uint128_t CityHash128(const char *s, size_t len) {
+ return len >= 16 ?
+ CityHash128WithSeed(s + 16, len - 16,
+ Uint128(Fetch(s), Fetch(s + 8) + k0)) :
+ CityHash128WithSeed(s, len, Uint128(k0, k1));
+}
+
+uint128_t Fingerprint128(const char* s, size_t len) {
+ return CityHash128(s, len);
+}
+} // namespace farmhashcc
+namespace NAMESPACE_FOR_HASH_FUNCTIONS {
+
+// BASIC STRING HASHING
+
+// Hash function for a byte array. See also Hash(), below.
+// May change from time to time, may differ on different platforms, may differ
+// depending on NDEBUG.
+uint32_t Hash32(const char* s, size_t len) {
+ return DebugTweak(
+ (can_use_sse41 & x86_64) ? farmhashnt::Hash32(s, len) :
+ (can_use_sse42 & can_use_aesni) ? farmhashsu::Hash32(s, len) :
+ can_use_sse42 ? farmhashsa::Hash32(s, len) :
+ farmhashmk::Hash32(s, len));
+}
+
+// Hash function for a byte array. For convenience, a 32-bit seed is also
+// hashed into the result.
+// May change from time to time, may differ on different platforms, may differ
+// depending on NDEBUG.
+uint32_t Hash32WithSeed(const char* s, size_t len, uint32_t seed) {
+ return DebugTweak(
+ (can_use_sse41 & x86_64) ? farmhashnt::Hash32WithSeed(s, len, seed) :
+ (can_use_sse42 & can_use_aesni) ? farmhashsu::Hash32WithSeed(s, len, seed) :
+ can_use_sse42 ? farmhashsa::Hash32WithSeed(s, len, seed) :
+ farmhashmk::Hash32WithSeed(s, len, seed));
+}
+
+// Hash function for a byte array. For convenience, a 64-bit seed is also
+// hashed into the result. See also Hash(), below.
+// May change from time to time, may differ on different platforms, may differ
+// depending on NDEBUG.
+uint64_t Hash64(const char* s, size_t len) {
+ return DebugTweak(
+ (can_use_sse42 & x86_64) ?
+ farmhashte::Hash64(s, len) :
+ farmhashxo::Hash64(s, len));
+}
+
+// Hash function for a byte array.
+// May change from time to time, may differ on different platforms, may differ
+// depending on NDEBUG.
+size_t Hash(const char* s, size_t len) {
+ return sizeof(size_t) == 8 ? Hash64(s, len) : Hash32(s, len);
+}
+
+// Hash function for a byte array. For convenience, a 64-bit seed is also
+// hashed into the result.
+// May change from time to time, may differ on different platforms, may differ
+// depending on NDEBUG.
+uint64_t Hash64WithSeed(const char* s, size_t len, uint64_t seed) {
+ return DebugTweak(farmhashna::Hash64WithSeed(s, len, seed));
+}
+
+// Hash function for a byte array. For convenience, two seeds are also
+// hashed into the result.
+// May change from time to time, may differ on different platforms, may differ
+// depending on NDEBUG.
+uint64_t Hash64WithSeeds(const char* s, size_t len, uint64_t seed0, uint64_t seed1) {
+ return DebugTweak(farmhashna::Hash64WithSeeds(s, len, seed0, seed1));
+}
+
+// Hash function for a byte array.
+// May change from time to time, may differ on different platforms, may differ
+// depending on NDEBUG.
+uint128_t Hash128(const char* s, size_t len) {
+ return DebugTweak(farmhashcc::Fingerprint128(s, len));
+}
+
+// Hash function for a byte array. For convenience, a 128-bit seed is also
+// hashed into the result.
+// May change from time to time, may differ on different platforms, may differ
+// depending on NDEBUG.
+uint128_t Hash128WithSeed(const char* s, size_t len, uint128_t seed) {
+ return DebugTweak(farmhashcc::CityHash128WithSeed(s, len, seed));
+}
+
+// BASIC NON-STRING HASHING
+
+// FINGERPRINTING (i.e., good, portable, forever-fixed hash functions)
+
+// Fingerprint function for a byte array. Most useful in 32-bit binaries.
+uint32_t Fingerprint32(const char* s, size_t len) {
+ return farmhashmk::Hash32(s, len);
+}
+
+// Fingerprint function for a byte array.
+uint64_t Fingerprint64(const char* s, size_t len) {
+ return farmhashna::Hash64(s, len);
+}
+
+// Fingerprint function for a byte array.
+uint128_t Fingerprint128(const char* s, size_t len) {
+ return farmhashcc::Fingerprint128(s, len);
+}
+
+// Older and still available but perhaps not as fast as the above:
+// farmhashns::Hash32{,WithSeed}()
+
+} // namespace NAMESPACE_FOR_HASH_FUNCTIONS
+
+#if FARMHASHSELFTEST
+
+#ifndef FARMHASH_SELF_TEST_GUARD
+#define FARMHASH_SELF_TEST_GUARD
+#include <cstdio>
+#include <iostream>
+#include <string.h>
+
+using std::cout;
+using std::cerr;
+using std::endl;
+using std::hex;
+
+static const uint64_t kSeed0 = 1234567;
+static const uint64_t kSeed1 = k0;
+static const int kDataSize = 1 << 20;
+static const int kTestSize = 300;
+#define kSeed128 Uint128(kSeed0, kSeed1)
+
+static char data[kDataSize];
+
+static int completed_self_tests = 0;
+static int errors = 0;
+
+// Initialize data to pseudorandom values.
+void Setup() {
+ if (completed_self_tests == 0) {
+ uint64_t a = 9;
+ uint64_t b = 777;
+ for (int i = 0; i < kDataSize; i++) {
+ a += b;
+ b += a;
+ a = (a ^ (a >> 41)) * k0;
+ b = (b ^ (b >> 41)) * k0 + i;
+ uint8_t u = b >> 37;
+ memcpy(data + i, &u, 1); // uint8_t -> char
+ }
+ }
+}
+
+int NoteErrors() {
+#define NUM_SELF_TESTS 9
+ if (++completed_self_tests == NUM_SELF_TESTS)
+ std::exit(errors > 0);
+ return errors;
+}
+
+template <typename T> inline bool IsNonZero(T x) {
+ return x != 0;
+}
+
+template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
+ return x != Uint128(0, 0);
+}
+
+#endif // FARMHASH_SELF_TEST_GUARD
+
+namespace farmhashccTest {
+
+uint32_t CreateSeed(int offset, int salt) {
+ uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h += static_cast<uint32_t>(offset & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ return h;
+}
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+#define SEED CreateSeed(offset, -1)
+#define SEED0 CreateSeed(offset, 0)
+#define SEED1 CreateSeed(offset, 1)
+
+#undef TESTING
+#define TESTING 1
+#if TESTING
+uint32_t expected[] = {
+4223616069u,
+3696677242u,
+1039179260u, 1690343979u, 1018511555u, 2464489001u,
+20368522u, 2663783964u, 175201532u, 1619210592u,
+4081014168u,
+2576519988u,
+3285042206u, 502478099u, 739479538u, 1500332790u,
+13754768u, 3789353455u, 3473868058u, 1909255088u,
+2212771159u,
+1112731063u,
+826915357u, 2893489933u, 118369799u, 1848668220u,
+1308219822u, 249416982u, 64306364u, 4221800195u,
+1020067935u,
+3955445564u,
+563346294u, 550236731u, 2339016688u, 1826259714u,
+3872358639u, 2295981050u, 1870005390u, 4015628802u,
+1451961420u,
+653440099u,
+1292493871u, 164377749u, 1717712483u, 463414587u,
+3924343675u, 1050492084u, 3566618804u, 2046983362u,
+31917516u,
+2957164615u,
+230718965u, 999595115u, 3534822176u, 2175709186u,
+965707431u, 441796222u, 2481718051u, 1827777486u,
+2590087362u,
+3879448744u,
+3515079898u, 1601433082u, 982764532u, 254808716u,
+1293372530u, 4205605817u, 947001462u, 1138890052u,
+176305566u,
+2447367541u,
+2973802542u, 4123621138u, 3083865840u, 1706367795u,
+792114347u, 2880110657u, 440613768u, 195054868u,
+1359016305u,
+3363804638u,
+649488537u, 1624045597u, 1441938215u, 3147758996u,
+3199173578u, 2597283203u, 2191333609u, 3763129144u,
+1117290165u,
+1062549743u,
+2565615889u, 1046361554u, 1581968261u, 1058773671u,
+1123053168u, 3807622275u, 1486749916u, 3900816089u,
+2437877004u,
+1894455839u,
+1912520953u, 1914997013u, 561048608u, 1643267444u,
+3671572006u, 194811086u, 1468911468u, 2179206286u,
+673206794u,
+3486923651u,
+3741426466u, 3292160512u, 697001377u, 1900763774u,
+3726097344u, 629282039u, 3578723715u, 2868028489u,
+3269862919u,
+2303349487u,
+3643953525u, 2307255916u, 849996280u, 732080434u,
+909961480u, 3542445214u, 2628347095u, 4236856917u,
+1380660650u,
+2631821908u,
+2007289004u, 3509705198u, 3788541675u, 789457322u,
+3090670546u, 638977894u, 3503881773u, 947102987u,
+1525325287u,
+1816697045u,
+2706647405u, 288763142u, 3505438495u, 481308609u,
+2882636782u, 3745162621u, 3503467033u, 428247823u,
+176408838u,
+333551502u,
+1001068721u, 1681483651u, 75380831u, 4191469679u,
+3627361839u, 2736617386u, 3120737438u, 1297502456u,
+864896482u,
+85674920u,
+2886047255u, 4119881331u, 2496990525u, 3442502055u,
+1806582817u, 3186345024u, 4099591287u, 2560171465u,
+3489229104u,
+3065015872u,
+2755089808u, 3098442882u, 378524719u, 2664097023u,
+1771960725u, 2901182183u, 55258521u, 1266621443u,
+581644891u,
+37790450u,
+1800731704u, 3601350920u, 53428754u, 2759476837u,
+3391093099u, 1496510311u, 2511119507u, 2636877410u,
+631613207u,
+1573846064u,
+260484875u, 1088212603u, 2369525206u, 322522428u,
+3191396600u, 2076543340u, 1552496658u, 2739811558u,
+3867875546u,
+2051584261u,
+2126250818u, 901517871u, 3651631165u, 1323139145u,
+1521111765u, 477802997u, 3508559783u, 383954241u,
+3804516756u,
+4250206331u,
+2655954340u, 2484996477u, 1417544845u, 1520282298u,
+2745204366u, 2869345147u, 1872738335u, 2592877343u,
+1619744564u,
+1804962124u,
+3458679890u, 423948620u, 273645618u, 4187865426u,
+376057175u, 2943431463u, 3581950599u, 1035398331u,
+1088213445u,
+861988903u,
+1323370244u, 777069428u, 506235917u, 369720851u,
+2789995854u, 230915180u, 1505086948u, 940361236u,
+3727873235u,
+1159167499u,
+1860302871u, 3456858862u, 3923555152u, 2131072714u,
+2910461068u, 3671950363u, 2010742682u, 4088068851u,
+3616470388u,
+2087714788u,
+221675509u, 1230154072u, 3450704646u, 1463226695u,
+1998357699u, 266026801u, 619568740u, 3560427266u,
+4148162586u,
+3150417316u,
+1356375822u, 2056097622u, 627905802u, 3881675638u,
+2309738053u, 971916703u, 3447805361u, 1673575328u,
+673084328u,
+3317849401u,
+2836362782u, 2377208890u, 3275350588u, 158350552u,
+2553241779u, 2497264995u, 3262882649u, 3897937187u,
+1598963653u,
+3068514414u,
+601541505u, 374517071u, 3380795976u, 235752573u,
+284670003u, 2990192160u, 904937105u, 2306579150u,
+2117362589u,
+1635274830u,
+3355572906u, 170799903u, 1226685528u, 664567688u,
+413219134u, 878324258u, 4026159448u, 3620649295u,
+1823625377u,
+3175888439u,
+1759344347u, 2640637095u, 3549558u, 2192984935u,
+978623493u, 804017880u, 3877562323u, 3843116489u,
+1641748342u,
+1853539444u,
+3001178468u, 3443560727u, 2685426077u, 1653064722u,
+349231508u, 2726789654u, 3136215581u, 768402830u,
+269384321u,
+531936536u,
+2592883487u, 1343156334u, 3628619802u, 1477143570u,
+4269458419u, 3285611028u, 959104925u, 2712290710u,
+3480237248u,
+835796333u,
+2020636251u, 1191914589u, 126521603u, 4288023938u,
+3731699932u, 2136758855u, 985780142u, 193807575u,
+1850544433u,
+653947619u,
+3929316796u, 381871169u, 950486363u, 1787262279u,
+360480382u, 1800636585u, 1039258631u, 3682073259u,
+1262819303u,
+1786000319u,
+1570627191u, 893065837u, 301304916u, 1478469809u,
+623018819u, 2742232545u, 2058913014u, 1706060059u,
+2421125401u,
+1315829592u,
+3208766775u, 1805586156u, 575853086u, 3085025513u,
+4010908260u, 2344058256u, 3814407434u, 1458485673u,
+2474514786u,
+3581895658u,
+2710719679u, 190812706u, 2135454262u, 2620080728u,
+3400757986u, 1669914857u, 1559978393u, 1629811331u,
+3096616493u,
+1391424435u,
+4158376003u, 1015657076u, 794783832u, 479952178u,
+1150290207u, 2497437906u, 231815090u, 755078067u,
+3832053281u,
+63649475u,
+2415822606u, 4105027719u, 1706992318u, 1106598740u,
+3941945667u, 1271300761u, 505882259u, 760186809u,
+2657183368u,
+1925422058u,
+1039773764u, 880219458u, 4275949176u, 1556833823u,
+925882132u, 4216310340u, 757497522u, 461833914u,
+3884002070u,
+2790957660u,
+2100050089u, 651959176u, 1380301291u, 1289124125u,
+452314403u, 226156280u, 3306924715u, 1750807758u,
+2290180542u,
+1953760569u,
+2253069096u, 3960924806u, 1786291620u, 60736185u,
+2569018293u, 3870479674u, 2247005661u, 2239850953u,
+4261808536u,
+3282975782u,
+780945879u, 3349849383u, 1579362556u, 2265045884u,
+905088740u, 725212379u, 3156479246u, 2501620391u,
+3062836263u,
+4070422690u,
+996797869u, 4082582315u, 976105756u, 303983602u,
+1862104804u, 3864508254u, 3383979677u, 2835500286u,
+2798364010u,
+519359476u,
+3447342725u, 194373889u, 3313466630u, 232399983u,
+2841787856u, 1672751454u, 3345183154u, 1805381384u,
+2226129336u,
+2847829057u,
+2350774567u, 2838540121u, 2757948482u, 1017002062u,
+2329150951u, 2171488196u, 3668619047u, 3874977844u,
+3287966998u,
+262346753u,
+2493054715u, 2298644430u, 2926101182u, 1528457638u,
+598656233u, 2615845874u, 989110727u, 820441411u,
+253617372u,
+2201077208u,
+2047569338u, 3114356329u, 3335563734u, 2967673540u,
+768438341u, 1417708203u, 3873718246u, 1538441843u,
+1279167650u,
+3917966776u,
+2218481734u, 1015935150u, 1957845042u, 1318150213u,
+3146423971u, 4218994877u, 1162470863u, 1519718292u,
+2594658906u,
+665870414u,
+3430347817u, 3933868731u, 1597041394u, 3138684682u,
+3398212027u, 1064647658u, 1576321132u, 14792918u,
+224938029u,
+3706456050u,
+847274786u, 2645698692u, 1743374687u, 2343133224u,
+3066596790u, 2857270120u, 200596308u, 452055528u,
+2319312082u,
+3488655402u,
+4146865894u, 608206438u, 2699777051u, 3687240713u,
+327957508u, 3664730153u, 568134564u, 2993484554u,
+4159860363u,
+4274533921u,
+1079994063u, 2360220210u, 3609597760u, 3639708902u,
+2836180437u, 1069910270u, 1892427666u, 1874729790u,
+1267712826u,
+121886940u,
+3572289214u, 2475945610u, 783779452u, 588827737u,
+1531395014u, 2085084212u, 2219189792u, 3981444548u,
+2218885336u,
+1691622694u,
+2053232885u, 1386558530u, 2182946189u, 2365247285u,
+1871081313u, 2935751853u, 38413723u, 543465863u,
+900691890u,
+2899905665u,
+575120562u, 93133904u, 457154948u, 2983705792u,
+4232229200u, 2038565963u, 614693984u, 3405328302u,
+4083090010u,
+2088004171u,
+244031209u, 1861889294u, 2417109253u, 3299562328u,
+4158642443u, 4199064449u, 3161611046u, 885015950u,
+3677904099u,
+2969861785u,
+772348805u, 1712263832u, 3219357614u, 484271305u,
+3645706114u, 2059620251u, 409557488u, 2278896731u,
+224475749u,
+3523022952u,
+2057140088u, 449131785u, 1149879244u, 4255363996u,
+3602720135u, 1690010854u, 2503998822u, 2750828466u,
+3340671802u,
+1447583863u,
+2649684943u, 2764747249u, 3046070595u, 3441726138u,
+3840332559u, 3156747501u, 1288666680u, 1472744459u,
+3452391933u,
+1617542784u,
+217869690u, 3718469527u, 348639731u, 590532355u,
+43789787u, 22606314u, 1621559290u, 2231743261u,
+2234620879u,
+544748955u,
+3169387920u, 203343594u, 3272552527u, 1078282365u,
+809576321u, 854207584u, 3625491053u, 1193737267u,
+1628966807u,
+2661421060u,
+2433442061u, 3886639039u, 2149304418u, 303000565u,
+1432830882u, 137378235u, 1135974068u, 318705754u,
+2491227157u,
+2627534472u,
+3520352233u, 2488397682u, 3969194920u, 3843962181u,
+2135981459u, 2611933220u, 799460731u, 2300968851u,
+3412851628u,
+3070914013u,
+3555224260u, 4125937572u, 240359903u, 722496673u,
+2061023600u, 3843919221u, 2759960043u, 1191155322u,
+1504041490u,
+3735253656u,
+1773124736u, 101110011u, 1627699578u, 2645634551u,
+263603947u, 1388368439u, 677146538u, 1644201982u,
+2625699644u,
+2403862553u,
+2426069017u, 3613511705u, 915141802u, 2981654265u,
+3474818167u, 2611101773u, 627891434u, 762754924u,
+2143021902u,
+51067670u,
+4017746573u, 2269879853u, 3037857950u, 2388899692u,
+582729171u, 1886116725u, 2281219772u, 264704948u,
+3509984037u,
+4078683368u,
+2172959411u, 1807195632u, 3357092302u, 2253764928u,
+2320369390u, 3076335959u, 2623583210u, 168378015u,
+1435562650u,
+1100977467u,
+3160490319u, 2550328495u, 2396855930u, 1347823908u,
+1617990918u, 3849653099u, 3224111576u, 1681539821u,
+4171542880u,
+552200045u,
+3562947778u, 1676237880u, 3747732307u, 2453332913u,
+865530667u, 3566636849u, 3485502777u, 336779723u,
+2535942410u,
+1685000184u,
+820545711u, 1893670486u, 1273910461u, 1193758569u,
+970365241u, 381205962u, 3612810852u, 1160577445u,
+541488143u,
+4005031080u,
+2333965236u, 2419855455u, 3484533538u, 3073937876u,
+908466956u, 661391539u, 2342122412u, 1467049112u,
+1785800827u,
+135343033u,
+139643209u, 2438375667u, 974654058u, 3216478230u,
+3807620420u, 779043363u, 2812846449u, 333254784u,
+1025244024u,
+2242303095u,
+2476683742u, 350018683u, 174652916u, 933097576u,
+826905896u, 559603581u, 2777181260u, 164915169u,
+4070353203u,
+1459055748u,
+297303985u, 3103837241u, 3812514233u, 232265137u,
+2032819099u, 1523091376u, 3531238208u, 1403510182u,
+2886832080u,
+2599705941u,
+2789695716u, 68437968u, 3823813791u, 1040994569u,
+3024194990u, 2461740520u, 3735391266u, 2042207153u,
+2461678616u,
+3519231840u,
+1344224923u, 411442756u, 1179779351u, 7661528u,
+778352196u, 3288808867u, 589356197u, 2627504511u,
+3374744599u,
+3312172905u,
+357423007u, 3539567796u, 4044452215u, 1445118403u,
+2937983820u, 184089910u, 346201845u, 2427295202u,
+1345448010u,
+2884434843u,
+3085001879u, 2640105409u, 315310640u, 3530289798u,
+3362974764u, 963602652u, 75228477u, 3509381180u,
+4012777756u,
+2380345941u,
+1073137836u, 2083960378u, 1220315185u, 3628720934u,
+3508867818u, 67148343u, 3558085158u, 1753943368u,
+863309561u,
+2844713625u,
+441921850u, 854732254u, 816793316u, 2555428747u,
+3440623414u, 1707304366u, 3189874375u, 1623229221u,
+1220335976u,
+806745430u,
+3909262947u, 1680369031u, 2926179486u, 3410391660u,
+3991630434u, 2876458763u, 1179167079u, 536360759u,
+1592117159u,
+1514343977u,
+1032622306u, 2057494855u, 784938958u, 178402996u,
+1152907972u, 2326185495u, 2939973666u, 4181120253u,
+552831733u,
+664251856u,
+1297139539u, 1969357631u, 1474065957u, 3055419017u,
+3395829380u, 3316562752u, 2168409017u, 614624786u,
+3585854336u,
+668291094u,
+1162889217u, 3773171307u, 2263271126u, 355089668u,
+3195850578u, 3396793277u, 3519870267u, 527857605u,
+3972392320u,
+2224315010u,
+4047225561u, 3271434798u, 3192704713u, 2798505213u,
+3932215896u, 3792924012u, 3796843756u, 453872975u,
+4050552799u,
+1056432676u,
+928166947u, 121311642u, 930989547u, 2087070683u,
+1288978057u, 1556325239u, 1812435626u, 1682385724u,
+1214364933u,
+904760776u,
+3957045528u, 3949822847u, 2411065880u, 3716420732u,
+3424837835u, 3833550693u, 1799375326u, 2012368921u,
+2768764136u,
+1786111037u,
+4055479315u, 3751639533u, 2808224623u, 3492656387u,
+1306824780u, 2624000170u, 3134795218u, 1778409297u,
+3900821801u,
+593336325u,
+2772069220u, 2980873673u, 3574497158u, 3994780459u,
+4246519854u, 3482758570u, 4228015183u, 33101083u,
+1769887734u,
+4158035314u,
+3690638998u, 1119035482u, 4134969651u, 2483207353u,
+3932823321u, 285829887u, 3485140138u, 1304815138u,
+995608264u,
+3133997465u,
+1195477617u, 2147693728u, 3506673112u, 4234467492u,
+1183174337u, 1395340482u, 769199343u, 193262308u,
+2798920256u,
+3827889422u,
+3399695609u, 3036045724u, 2999477386u, 3567001759u,
+2682864314u, 1414023907u, 3699872975u, 3369870701u,
+2662284872u,
+2179640019u,
+2485080099u, 3234415609u, 3755915606u, 1339453220u,
+1567403399u, 2076272391u, 293946298u, 3861962750u,
+1291949822u,
+2916864995u,
+132642326u, 2215117062u, 2205863575u, 2488805750u,
+405632860u, 3248129390u, 2952606864u, 896734759u,
+2047417173u,
+3865951392u,
+657296855u, 1328547532u, 3966511825u, 3959682388u,
+4171801020u, 2981416957u, 1868896247u, 790081075u,
+3143666398u,
+2950766549u,
+2065854887u, 2737081890u, 995061774u, 1510712611u,
+2865954809u, 565044286u, 1565631102u, 1500654931u,
+494822108u,
+2803515503u,
+1058154996u, 3506280187u, 856885925u, 4204610546u,
+800905649u, 1130711562u, 558146282u, 2053400666u,
+449794061u,
+2643520245u,
+2101248725u, 3123292429u, 3583524041u, 983372394u,
+1587743780u, 672870813u, 444833475u, 100741452u,
+366232251u,
+1717951248u,
+524144122u, 1362432726u, 1304947719u, 674306020u,
+405665887u, 4081931036u, 1580408204u, 2343242778u,
+3901654006u,
+2627173567u,
+3015148205u, 814686701u, 1327920712u, 1346494176u,
+2468632605u, 2259795544u, 2519278184u, 2129281928u,
+2860266380u,
+4001619412u,
+1154910973u, 2841022216u, 1199925485u, 1372200293u,
+2713179055u, 3609776550u, 2896463880u, 1056406892u,
+177413841u,
+40180172u,
+3274788406u, 660921784u, 1686225028u, 4003382965u,
+2532691887u, 4256809101u, 1186018983u, 667359096u,
+2375266493u,
+2760222015u,
+745187078u, 312264012u, 396822261u, 2588536966u,
+2026998998u, 1766454365u, 3218807676u, 3915487497u,
+2630550356u,
+4130063378u,
+4231937074u, 752212123u, 3085144349u, 3267186363u,
+4103872100u, 4193207863u, 1306401710u, 3014853131u,
+1067760598u,
+2306188342u,
+2437881506u, 4258185052u, 2506507580u, 130876929u,
+1076894205u, 4106981702u, 2799540844u, 945747327u,
+1436722291u,
+2499772225u,
+2571537041u, 2038830635u, 2066826058u, 2892892912u,
+524875858u, 3392572161u, 2869992096u, 1308273341u,
+923668994u,
+1980407857u,
+2275009652u, 240598096u, 2658376530u, 3505603048u,
+1022603789u, 582423424u, 846379327u, 4092636095u,
+4177298326u,
+1004173023u,
+2154027018u, 2993634669u, 1098364089u, 3035642175u,
+1335688126u, 1376393415u, 1252369770u, 3815033328u,
+1999309358u,
+1234054757u,
+1388595255u, 2859334775u, 366532860u, 3453410395u,
+4226967708u, 1321729870u, 2078463405u, 156766592u,
+3157683394u,
+3549293384u,
+3348214547u, 2879648344u, 1144813399u, 2758966254u,
+647753581u, 813615926u, 2035441590u, 1961053117u,
+600168686u,
+2192833387u,
+3156481401u, 3627320321u, 383550248u, 81209584u,
+2339331745u, 1284116690u, 1980144976u, 2955724163u,
+789301728u,
+3842040415u,
+1115881490u, 965249078u, 4098663322u, 1870257033u,
+2923150701u, 4217108433u, 183816559u, 2104089285u,
+2640095343u,
+3173757052u,
+927847464u, 2383114981u, 4287174363u, 1886129652u,
+70635161u, 1182924521u, 1121440038u, 4246220730u,
+3890583049u,
+975913757u,
+2436253031u, 1074894869u, 1301280627u, 992471939u,
+735658128u, 244441856u, 1541612456u, 3457776165u,
+3503534059u,
+1931651133u,
+349142786u, 3669028584u, 1828812038u, 99128389u,
+1364272849u, 1963678455u, 3971963311u, 2316950886u,
+1308901796u,
+2789591580u,
+1460494965u, 2380227479u, 1577190651u, 1755822080u,
+2911014607u, 859387544u, 13023113u, 2319243370u,
+2522582211u,
+2299110490u,
+3342378874u, 2589323490u, 1884430765u, 3739058655u,
+2419330954u, 355389916u, 273950915u, 3670136553u,
+410946824u,
+3174041420u,
+2609010298u, 3059091350u, 2300275014u, 725729828u,
+2548380995u, 1738849964u, 1257081412u, 79430455u,
+810321297u,
+3246190593u,
+1007937684u, 912115394u, 40880059u, 3450073327u,
+4289832174u, 2253485111u, 1065639151u, 2953189309u,
+124779113u,
+654299738u,
+115760833u, 1250932069u, 884995826u, 3998908281u,
+1382882981u, 1134187162u, 3202324501u, 487502928u,
+3032756345u,
+4057517628u,
+933197381u, 2319223127u, 2044528655u, 2554572663u,
+4049450620u, 1620812836u, 2832905391u, 2273005481u,
+1913090121u,
+1055456023u,
+510593296u, 3285343192u, 2912822536u, 1645225063u,
+638418430u, 452701300u, 1025483165u, 1639370512u,
+167948643u,
+2809842730u,
+2983135664u, 407521332u, 1543756616u, 3949773145u,
+4283462892u, 659962275u, 3878013463u, 1000748756u,
+4053212051u,
+4099239406u,
+3467581965u, 354635541u, 21301844u, 3831212473u,
+3189450571u, 2264401966u, 4096484849u, 1736448515u,
+3976926096u,
+3727194724u,
+2243487039u, 585209095u, 3143046007u, 969558123u,
+3037113502u, 3594170243u, 2835860223u, 3775493975u,
+2787220812u,
+2274252217u,
+2915380701u, 3077533278u, 1252871826u, 1519790952u,
+205297661u, 2950557658u, 3956882191u, 2724439401u,
+3694608025u,
+124028038u,
+216019153u, 1533010676u, 2259986336u, 2014061617u,
+2068617849u, 3078123052u, 2692046098u, 1582812948u,
+396916232u,
+1470894001u,
+1694309312u, 300268215u, 1553892743u, 671176040u,
+1544988994u, 2793402821u, 4194972569u, 2296476154u,
+748354332u,
+3491325898u,
+4261053291u, 1104998242u, 797816835u, 243564059u,
+2197717393u, 299029458u, 1675252188u, 3139770041u,
+583018574u,
+2532106100u,
+2099391658u, 3760526730u, 3422719327u, 3556917689u,
+2374009285u, 2130865894u, 3710563151u, 1437538307u,
+3938030842u,
+2006930694u,
+2151243336u, 1939741287u, 1957068175u, 2135147479u,
+649553342u, 1713643042u, 4188696599u, 1698739939u,
+3549427584u,
+1016382174u,
+322644378u, 2476164549u, 2037263020u, 88036019u,
+2548960923u, 539867919u, 2871157727u, 4031659929u,
+754087252u,
+972656559u,
+4246379429u, 3877308578u, 2059459630u, 3614934323u,
+1410565271u, 2102980459u, 215395636u, 1083393481u,
+3775523015u,
+2062750105u,
+2475645882u, 3041186774u, 3534315423u, 758607219u,
+1686100614u, 180500983u, 1155581185u, 1476664671u,
+2918661695u,
+3812731350u,
+4003853737u, 4148884881u, 1468469436u, 3278880418u,
+1045838071u, 1049161262u, 360450415u, 3158065524u,
+814443735u,
+3391401707u,
+729968410u, 738771593u, 3662738792u, 1672830580u,
+4199496163u, 188487238u, 219098233u, 2141731267u,
+3890250614u,
+2988780375u,
+4026279523u, 3489429375u, 2468433807u, 1178270701u,
+2685094218u, 2716621497u, 3718335529u, 2273344755u,
+701110882u,
+1925717409u,
+1515176562u, 2325460593u, 3954798930u, 784566105u,
+3769422266u, 1641530321u, 2703876862u, 2907480267u,
+1828076455u,
+1805635221u,
+3883381245u, 1476756210u, 2072514392u, 3658557081u,
+2003610746u, 2556845550u, 729594004u, 3303898266u,
+1968227254u,
+423204951u,
+231828688u, 4223697811u, 698619045u, 3636824418u,
+2738779239u, 2333529003u, 2833158642u, 580285428u,
+3038148234u,
+1012378004u,
+1113647298u, 1424593483u, 4053247723u, 1167152941u,
+2677383578u, 3419485379u, 2135673840u, 440478166u,
+1682229112u,
+3226724137u,
+1217439806u, 3828726923u, 3636576271u, 3467643156u,
+2005614908u, 2655346461u, 2345488441u, 1027557096u,
+3594084220u,
+1372306343u,
+2342583762u, 4291342905u, 4094931814u, 3254771759u,
+821978248u, 2404930117u, 1143937655u, 3156949255u,
+3460606610u,
+449701786u,
+3474906110u, 1932585294u, 2283357584u, 1808481478u,
+3522851029u, 3040164731u, 1530172182u, 2950426149u,
+1402416557u,
+756419859u,
+4132576145u, 724994790u, 2852015871u, 2177908339u,
+899914731u, 139675671u, 1423281870u, 3198458070u,
+807581308u,
+2021611521u,
+1801452575u, 1425984297u, 2833835949u, 1536827865u,
+3902351840u, 164546042u, 1872840974u, 3986194780u,
+792156290u,
+3378681896u,
+941547959u, 3931328334u, 3661060482u, 2386420777u,
+3920146272u, 3458621279u, 3348500844u, 2269586542u,
+797371473u,
+3188953649u,
+80514771u, 2913333490u, 1246325623u, 3253846094u,
+1723906239u, 1606413555u, 587500718u, 1412413859u,
+2310046829u,
+2113313263u,
+3855635608u, 47271944u, 1112281934u, 3440228404u,
+2633519166u, 425094457u, 307659635u, 67338587u,
+2412987939u,
+2363930989u,
+2853008596u, 2844637339u, 922568813u, 130379293u,
+2825204405u, 2904442145u, 1176875333u, 1511685505u,
+599177514u,
+1872681372u,
+682394826u, 1888849790u, 3635304282u, 1761257265u,
+1571292431u, 355247075u, 1177210823u, 1691529530u,
+3629531121u,
+3760474006u,
+1129340625u, 868116266u, 3908237785u, 1942124366u,
+1266630014u, 3214841995u, 334023850u, 1110037019u,
+369650727u,
+1288666741u,
+70535706u, 20230114u, 4284225520u, 727856157u,
+293696779u, 1244943770u, 3976592462u, 560421917u,
+4171688499u,
+2438786950u,
+1218144639u, 3809125983u, 1302395746u, 534542359u,
+2121993015u, 2899519374u, 3192177626u, 1761707794u,
+3101683464u,
+1555403906u,
+3225675390u, 1875263768u, 4278894569u, 651707603u,
+2111591484u, 3802716028u, 2900262228u, 1181469202u,
+3254743797u,
+1822684466u,
+860641829u, 3046128268u, 1284833012u, 1125261608u,
+461384524u, 2331344566u, 1274400010u, 990498321u,
+3462536298u,
+3796842585u,
+2346607194u, 279495949u, 3951194590u, 3522664971u,
+3169688303u, 726831706u, 1123875117u, 1816166599u,
+3759808754u,
+2918558151u,
+3713203220u, 3369939267u, 466047109u, 384042536u,
+587271104u, 2191634696u, 2449929095u, 1157932232u,
+2084466674u,
+841370485u,
+3241372562u, 4277738486u, 2150836793u, 1173569449u,
+778768930u, 2594706485u, 3065269405u, 3019263663u,
+2660146610u,
+2789946230u,
+77056913u, 728174395u, 3647185904u, 804562358u,
+2697276483u, 881311175u, 1178696435u, 2059173891u,
+2308303791u,
+221481230u,
+50241451u, 3689414100u, 1969074761u, 2732071529u,
+1900890356u, 840789500u, 2100609300u, 985565597u,
+1220850414u,
+2456636259u,
+223607678u, 1016310244u, 1937434395u, 85717256u,
+275058190u, 3712011133u, 171916016u, 2389569096u,
+3679765802u,
+3575358777u,
+3481108261u, 3178286380u, 2489642395u, 2931039055u,
+3086601621u, 3079518902u, 3027718495u, 2506894644u,
+2976869602u,
+2134336365u,
+2420172217u, 918054427u, 661522682u, 1403791357u,
+3587174388u, 2623673551u, 1355661457u, 4159477684u,
+1109013587u,
+3112183488u,
+2217849279u, 3500291996u, 2419603731u, 2929886201u,
+3854470013u, 1358382103u, 1357666555u, 21053566u,
+2716621233u,
+3094836862u,
+3309729704u, 57086558u, 839187419u, 2757944838u,
+3651040558u, 3607536716u, 3691257732u, 2312878285u,
+1202511724u,
+183479927u,
+2509829803u, 109313218u, 478173887u, 2072044014u,
+190631406u, 2495604975u, 1010416260u, 3679857586u,
+726566957u,
+258500881u,
+1805873908u, 3081447051u, 2352101327u, 534922207u,
+1584552873u, 813470716u, 255914637u, 249169434u,
+3193498057u,
+1038802706u,
+2590158653u, 3147907290u, 663060128u, 1156177857u,
+634616100u, 312879189u, 1545020368u, 2054634247u,
+3271451914u,
+3438291534u,
+2181454946u, 3864535432u, 2398586877u, 896491075u,
+2810631478u, 2770357487u, 3372930052u, 898070638u,
+2051007323u,
+392959778u,
+36645539u, 3743556044u, 4134529680u, 4124451188u,
+566806297u, 2936523982u, 1304761965u, 537399498u,
+1940818842u,
+40862381u,
+36288410u, 3063605629u, 2826611650u, 3961972098u,
+1871578006u, 2392095486u, 1136931591u, 513864488u,
+173276451u,
+3039055682u,
+3543322032u, 1943592006u, 657217094u, 1751698246u,
+2969618445u, 456616022u, 900309519u, 113892716u,
+1126392103u,
+1235651045u,
+1882073852u, 2136610853u, 2353639710u, 2819956700u,
+3980083530u, 828773559u, 224069850u, 902434120u,
+2802008036u,
+94358995u,
+2777723394u, 2812641403u, 2525832595u, 4157388110u,
+4235563782u, 937800324u, 141690749u, 568062536u,
+550123849u,
+1330316521u,
+1949488696u, 2296431366u, 1958465262u, 3564751729u,
+3748252207u, 120455129u, 1607318832u, 2525729790u,
+2640987481u,
+2332096657u,
+1775969159u, 1555085077u, 2913525137u, 1347085183u,
+2376253113u, 3194050574u, 1806090610u, 678641356u,
+1499146713u,
+383849715u,
+3299835823u, 2284860330u, 2614269636u, 3913628844u,
+2761334210u, 1959484587u, 529797021u, 239966995u,
+3102194829u,
+3602307804u,
+1122192627u, 3577510006u, 164486066u, 1680137310u,
+1473396395u, 1467801424u, 903493660u, 1185943071u,
+2798556505u,
+2306744492u,
+3167201310u, 3577947177u, 3067592134u, 2905506289u,
+1210366329u, 204484056u, 2347778932u, 3862374472u,
+3277439508u,
+4187414621u,
+1646699310u, 621385800u, 3934869089u, 3975491588u,
+3580085916u, 1925674500u, 2436305348u, 3983301539u,
+2739439523u,
+3291507446u,
+3395637920u, 3753389171u, 2955202032u, 2654255623u,
+3771089254u, 2140443405u, 2779834738u, 3261942805u,
+3526889244u,
+1842009139u,
+4048484340u, 2106218403u, 2161244271u, 772152700u,
+1158647659u, 3776791619u, 3882186721u, 699525237u,
+2954670460u,
+1007105869u,
+3359152025u, 1146388699u, 1401550303u, 2326582541u,
+4181783540u, 1085644043u, 1942143795u, 1038368308u,
+1526153809u,
+4042547244u,
+1891441000u, 2573991874u, 1281441253u, 3635098284u,
+1980545715u, 825985487u, 3934748116u, 4228386979u,
+1480870944u,
+1042194545u,
+2397771642u, 2248490001u, 3817869868u, 878654626u,
+3785629484u, 1672470870u, 3229367873u, 1894538933u,
+1010692731u,
+1733824268u,
+656620328u, 3048283803u, 3353340056u, 2324965120u,
+4192585951u, 2284524675u, 3483884368u, 1510168293u,
+1554942691u,
+1309709396u,
+1241133168u, 3162179280u, 4046378054u, 3171681593u,
+1165297136u, 3496703563u, 150437903u, 1948622072u,
+1076332463u,
+2292479143u,
+1464229958u, 3479738093u, 2328067598u, 2334503110u,
+833324834u, 3981605747u, 3002629155u, 2854644186u,
+2832201336u,
+95796957u,
+3269249397u, 2358313329u, 3411860910u, 4283292480u,
+2802208697u, 1305947955u, 2156803420u, 1991340283u,
+189678024u,
+447602599u,
+1055411517u, 1531748363u, 1555852656u, 412402681u,
+3774988152u, 20597551u, 2925024131u, 1423989620u,
+3749428061u,
+1541439448u,
+112270416u, 1936224776u, 132162941u, 3772011507u,
+3814102518u, 1908807815u, 444154079u, 823765347u,
+3362275567u,
+3419047430u,
+2108287005u, 2315102125u, 658593738u, 3195094029u,
+3721937534u, 3176229204u, 3398835373u, 1271898712u,
+1142546577u,
+3185986817u,
+3562705803u, 2046119567u, 912990621u, 1829977672u,
+3459576979u, 1118045834u, 1369529376u, 3320601076u,
+3954988953u,
+4002467635u,
+3359456351u, 1314849568u, 1766750942u, 2998874853u,
+1181800239u, 707328036u, 3314954697u, 2066721120u,
+598194215u,
+1124451278u,
+3156679616u, 3742684743u, 2960199690u, 2683497915u,
+2566077529u, 937014607u, 102095219u, 4262922475u,
+3132264275u,
+1262099830u,
+862722905u, 2717653494u, 3245583534u, 3427209989u,
+3220278124u, 85457091u, 2222333500u, 3513997967u,
+3522324951u,
+2830855552u,
+2215004781u, 3482411840u, 4227160614u, 2030964411u,
+1741393851u, 2643723748u, 942813508u, 403442675u,
+3112048748u,
+530556423u,
+3817755244u, 3543286628u, 2247276090u, 1532920842u,
+4101962711u, 1446540991u, 3297821473u, 1861255389u,
+1984398u,
+2366525138u,
+377589481u, 3549193828u, 1427765914u, 506831657u,
+277278988u, 1447652775u, 3214362239u, 3142198690u,
+2843087541u,
+468915015u,
+807895062u, 2198723907u, 4031145069u, 2417156212u,
+4027298697u, 637175947u, 1229254212u, 1773257887u,
+1659444818u,
+451148891u,
+2099741368u, 735351990u, 2534775713u, 3261804619u,
+712519954u, 3527962772u, 3758642738u, 4245823575u,
+1281314264u,
+1167866160u,
+1489546151u, 1197354389u, 1043278102u, 2563326586u,
+371937794u, 2320164817u, 3189512691u, 573685198u,
+4108603513u,
+3758899588u,
+3507030163u, 2947201212u, 2529492585u, 578234375u,
+3362349842u, 3318878925u, 3611203517u, 3059253190u,
+4270755916u,
+4291274625u,
+4237586791u, 4137422245u, 2927218651u, 2444687041u,
+797128811u, 2043057612u, 396533859u, 2665256178u,
+3346510674u,
+1779586176u,
+3076562062u, 1882746214u, 921095362u, 2026988397u,
+514514911u, 3886379478u, 4218272420u, 1480386793u,
+3900160816u,
+2292273451u,
+1276138356u, 1125461821u, 1912885715u, 3365266013u,
+1333211627u, 4085009861u, 1390530102u, 3347984752u,
+2721771301u,
+1419492325u,
+4066766256u, 3250852311u, 820111852u, 1382201318u,
+2366036798u, 938032241u, 3100979439u, 487048687u,
+2292851045u,
+3241399180u,
+3912670510u, 2416437067u, 2973194517u, 3507707986u,
+1935099406u, 2533441488u, 104616731u, 2892622820u,
+3801190339u,
+4239188808u,
+807238241u, 3300121546u, 2249406147u, 4032114017u,
+3713738189u, 3324425575u, 4275607376u, 3663120298u,
+4173658372u,
+3984289690u,
+1827636846u, 3264588778u, 3297165529u, 558623533u,
+2728945672u, 1566297318u, 3447249966u, 481719551u,
+1596842050u,
+1838185946u,
+265271620u, 1050246315u, 4046655705u, 1844193138u,
+3807563245u, 1075384804u, 1292554949u, 1506525927u,
+2921816148u,
+2051885269u,
+1930534041u, 3872721086u, 1564489377u, 2272482181u,
+2849358683u, 589618304u, 2262072443u, 290363051u,
+299168363u,
+3867603931u,
+2868688756u, 2545263115u, 1092098533u, 3885725603u,
+2352430409u, 1981595469u, 2047946646u, 1332642839u,
+793806516u,
+214858837u,
+1061484659u, 3192394476u, 1115054785u, 3690637234u,
+996792368u, 2023479706u, 3046498231u, 4205835102u,
+3870714754u,
+257472875u,
+3549864599u, 2040276129u, 2414778670u, 812235477u,
+2674248196u, 1864096101u, 2257492689u, 1332556794u,
+1079540713u,
+465530720u,
+2304763972u, 830724724u, 3354588920u, 2510713652u,
+3103749409u, 468835585u, 1707620787u, 3038024846u,
+1000303198u,
+3462270146u,
+2748698899u, 2100348093u, 511537258u, 1237187486u,
+102049383u, 2268226698u, 3162251739u, 4219404629u,
+838822407u,
+1481440623u,
+2989224077u, 2676681975u, 3246551821u, 3812079906u,
+370572963u, 2283154352u, 3084789986u, 1961085583u,
+1955640586u,
+2409348147u,
+2284780581u, 1634818716u, 4018221729u, 2320761377u,
+3566831899u, 1799560520u, 91431959u, 1754113747u,
+1459430477u,
+3613658517u,
+924489906u, 3406317699u, 866289774u, 3924821603u,
+1265394945u, 1870668109u, 151949856u, 2747006534u,
+3111906201u,
+64039467u,
+2314447545u, 2600195638u, 4095795204u, 4162096026u,
+1026756826u, 2460047982u, 52686887u, 823198739u,
+1518045160u,
+2867527376u,
+566410761u, 2200433819u, 2114146405u, 2893790965u,
+881504901u, 974783212u, 490815659u, 937300283u,
+1523735309u,
+2511976468u,
+2634644947u, 355119367u, 1373773092u, 309232995u,
+3088671051u, 787126032u, 3442836843u, 4289194567u,
+2177850062u,
+1174136430u,
+3248982914u, 3129039732u, 1166851580u, 2196451882u,
+469595580u, 2130837700u, 3783349021u, 3745262548u,
+1236930515u,
+3032131496u,
+1525591437u, 1823628217u, 1939019255u, 1950270463u,
+3659899927u, 3688643445u, 3004399289u, 1155199552u,
+357547234u,
+2213110526u,
+3122658210u, 2667800490u, 2718690333u, 3512372076u,
+1098611683u, 2657518392u, 4248458835u, 3109874532u,
+1592908438u,
+2864927516u,
+3635248840u, 1251777186u, 3797340158u, 3508496870u,
+303354834u, 1482394062u, 2087100120u, 1595931912u,
+608574156u,
+723367884u,
+907938402u, 3357047807u, 1619629851u, 3092082995u,
+89030300u, 916336992u, 1861180168u, 3436334155u,
+1375000544u,
+3472936241u,
+1321217853u, 791356402u, 2872410224u, 2326250297u,
+2657644088u, 1748314108u, 4146771421u, 2913114440u,
+2924821844u,
+2101101496u,
+3268017251u, 2109603066u, 690665520u, 1830067573u,
+951427661u, 2982533150u, 3884512506u, 2358657479u,
+2833210784u,
+3419798214u,
+3785893994u, 2103940206u, 86759766u, 4031230616u,
+3745237192u, 2739453927u, 497038072u, 3303159408u,
+1251537249u,
+1993408196u,
+3185905715u, 2885948408u, 3154277110u, 2444150313u,
+2505582079u, 2120610195u, 3266465773u, 1814611964u,
+3080050407u,
+1079915522u,
+1819346505u, 2529946763u, 892097374u, 3740257161u,
+3618100441u, 1079900094u, 3607172225u, 737863389u,
+360704560u,
+3341993089u,
+1139047381u, 3132219631u, 1248981859u, 1109338159u,
+2004908615u, 4022302594u, 4166640860u, 2959140950u,
+3949235962u,
+2832278473u,
+2200524012u, 2634933043u, 2495844522u, 2613799818u,
+4034096813u, 683271795u, 1673546817u, 1363163726u,
+1805395136u,
+511749501u,
+1231032599u, 2305979751u, 345737783u, 3339868854u,
+2931857933u, 2323251738u, 1332068477u, 51846558u,
+3927238177u,
+1387182179u,
+1701238601u, 1419275173u, 2580882268u, 3357874599u,
+1726558907u, 1292901039u, 1371322339u, 1311713044u,
+3526735232u,
+4017884184u,
+3366093428u, 77140994u, 2128996229u, 1357915765u,
+4019691901u, 483989024u, 2390311750u, 2766065288u,
+3938587520u,
+3064810344u,
+1054589198u, 1274997019u, 4040589616u, 1277751144u,
+2274907047u, 4170399945u, 2886368209u, 4168922115u,
+3901237033u,
+3252972311u,
+2205185840u, 3403097556u, 3385493699u, 2809751370u,
+555319628u, 399539034u, 2998971454u, 1521596214u,
+178870216u,
+1471733541u,
+519629198u, 514159209u, 1500582242u, 1928616587u,
+2686427928u, 4133138798u, 1225914083u, 1432713584u,
+3559310915u,
+3925489366u,
+1055613123u, 4126676029u, 2723867653u, 3290604111u,
+1377022957u, 2373608155u, 3615237379u, 594338683u,
+2645257602u,
+2408427260u,
+917033274u, 750455097u, 625657657u, 121713200u,
+2191273413u, 4043949724u, 3293146785u, 3809297972u,
+3947296919u,
+115456894u,
+1529576616u, 1459278275u, 2157117997u, 1747859293u,
+4106665903u, 996939232u, 2007976332u, 4274649009u,
+1017725787u,
+4244666096u,
+1219631331u, 3072426253u, 3547691720u, 1620822012u,
+1397717508u, 2031597325u, 3345983430u, 2459068000u,
+3645130467u,
+2308642742u,
+359955852u, 1348467968u, 1133123059u, 2435919062u,
+2800365907u, 4213217210u, 4056565603u, 2811666556u,
+2318007236u,
+3823652401u,
+3654086429u, 1273260424u, 1591610446u, 943349350u,
+3441227678u, 3779964757u, 233818224u, 3469971032u,
+3764095096u,
+4009204587u,
+678472092u, 1990559652u, 2583121088u, 2978143652u,
+2496370864u, 2139539656u, 4287972050u, 295832576u,
+3536742861u,
+2257466133u,
+2738052161u, 1988611898u, 2466189642u, 3294419573u,
+2311186273u, 474374532u, 3081964174u, 2515138278u,
+835731677u,
+1178182694u,
+3352119543u, 2884763225u, 3462399574u, 2900817210u,
+1993698511u, 2868445043u, 2746444849u, 1205258179u,
+2353442946u,
+4079040070u,
+3624133102u, 2907136076u, 2902521697u, 426813211u,
+1418185512u, 3711189488u, 1351506552u, 1934749519u,
+46595543u,
+401688809u,
+3514602124u, 1396852607u, 1951477943u, 2502249173u,
+3199695820u, 2890250638u, 4205072507u, 1715623846u,
+3266686789u,
+3218688128u,
+1697759742u, 851227671u, 2358709645u, 4174233268u,
+500583683u, 3805940955u, 736234120u, 2710563712u,
+1949664540u,
+3139414003u,
+4293073253u, 1284406972u, 1785182449u, 1051548274u,
+2994248357u, 2499882522u, 717208669u, 2039517285u,
+518424929u,
+143136433u,
+2303774671u, 1272930860u, 2286410920u, 788459311u,
+273225293u, 2439291703u, 2254505236u, 3446287701u,
+3655156558u,
+1546628787u,
+340081500u, 3285722006u, 1324810435u, 1053980860u,
+1779472859u, 2700355724u, 686005017u, 3762376315u,
+3963193100u,
+1370881135u,
+661300087u, 1152753704u, 2349891598u, 3910051187u,
+2109444785u, 1311123870u, 2639837565u, 1896770931u,
+1081414128u,
+869877586u,
+4284220400u, 63045374u, 235968615u, 184451062u,
+1271099822u, 1319179857u, 3274963209u, 4172272710u,
+3388797445u,
+2965973320u,
+3793110097u, 3327241723u, 2991804005u, 1199544355u,
+771553759u, 2031749842u, 2596517372u, 1199888213u,
+858347951u,
+3340178832u,
+2903875412u, 763490382u, 76949161u, 2056544406u,
+1145227689u, 998233136u, 2354530024u, 427713587u,
+3537837347u,
+604661755u,
+923986833u, 1023730418u, 798294227u, 432557449u,
+801802449u, 1861313429u, 3899128441u, 4068407979u,
+2352677083u,
+3783539925u,
+10731973u, 3390767975u, 3949540249u, 1920121661u,
+3248580201u, 641956426u, 2104847395u, 604835744u,
+1491663404u,
+4255204651u,
+1520970746u, 2845653368u, 3247412938u, 3730629005u,
+855569514u, 3073294700u, 2429691698u, 3818342476u,
+3938869985u,
+2731201328u,
+2335202643u, 778117742u, 13298408u, 228780590u,
+2871715314u, 3253688653u, 4150999702u, 3846220408u,
+930808u,
+1397128726u,
+1964216488u, 2781092828u, 116285375u, 2271239476u,
+3724347554u, 2931203895u, 3893169206u, 1883912528u,
+2093892660u,
+3658787024u,
+3095016046u, 1094059199u, 3640239610u, 558564267u,
+2102812456u, 464734873u, 925262247u, 1609838036u,
+588364741u,
+1731409233u,
+1576165139u, 3933979268u, 375316394u, 4247099643u,
+3670508019u, 4080496835u, 2371248533u, 183762693u,
+2078935389u,
+2699810414u,
+1491815683u, 2999180789u, 1831158425u, 1603373553u,
+2006136905u, 3210230591u, 416748595u, 1536971415u,
+3271869367u,
+1266062739u,
+2138414557u, 3337114778u, 1634586826u, 36472629u,
+4482244u, 568009609u, 2721216780u, 4037289545u,
+2235138807u,
+1789351460u,
+4067539527u, 1323062829u, 3864620647u, 4192026301u,
+4278901241u, 1399025382u, 2826652805u, 1363860382u,
+1801770651u,
+1613381526u,
+1165249276u, 4046576622u, 2535596946u, 3260388176u,
+1078898578u, 2259750862u, 643387587u, 237144235u,
+4199571427u,
+3440917581u,
+3067939258u, 2018625455u, 1460528353u, 3138629939u,
+1666223528u, 3841139376u, 2528281125u, 885565193u,
+2609492686u,
+2517257479u,
+560864620u, 2261471820u, 3491559165u, 1329620416u,
+622383582u, 1759597655u, 2877873893u, 584692817u,
+1901728399u,
+2599000260u,
+3169771644u, 296332336u, 774719455u, 4175920823u,
+2287316070u, 4115615023u, 1073335619u, 4240292725u,
+1359158837u,
+1960974237u,
+3173724597u, 1619084286u, 2876340752u, 4065675347u,
+480741335u, 1237329941u, 701055566u, 3729009837u,
+1314736422u,
+4003180069u,
+3118519317u, 3035354420u, 3380357671u, 4020909015u,
+253958714u, 3545798863u, 3008185002u, 2624719888u,
+3219955575u,
+3060719376u,
+573101682u, 1580316843u, 2610493412u, 3490983536u,
+3601975611u, 851470366u, 635384901u, 3427048824u,
+1470002757u,
+3592460087u,
+2265226856u, 4124282457u, 2106385486u, 3334305617u,
+4208282753u, 3798749815u, 225396466u, 118791182u,
+2523395972u,
+194595464u,
+2563824631u, 2521301383u, 4224409406u, 468670274u,
+1761966400u, 1300908277u, 2570709228u, 1847901526u,
+1470099163u,
+2690466752u,
+1472536718u, 2399279735u, 4150607803u, 1775080054u,
+2082537685u, 4080034578u, 1256001880u, 392967725u,
+2055838940u,
+3349115816u,
+1745947263u, 2213925887u, 1836572741u, 2417722792u,
+636223705u, 2423329294u, 3960951311u, 1543591052u,
+1547914361u,
+2760945653u,
+3519014111u, 313543871u, 4119598884u, 1071003714u,
+2192556597u, 1526995535u, 3929839778u, 536388591u,
+3040873792u,
+3752682932u,
+1640614237u, 2432794021u, 385337403u, 2794410617u,
+2386128075u, 1055206708u, 1422747714u, 3759330929u,
+2533597496u,
+30440955u,
+1482899460u, 3350385050u, 616259409u, 3980103795u,
+1211364140u, 1040071544u, 594746920u, 1645973936u,
+2547331531u,
+1097726368u,
+700666526u, 2976247482u, 1144906608u, 996506677u,
+1997130756u, 800321417u, 1392942823u, 1601662248u,
+2079778663u,
+529512908u,
+2925120134u, 4106433085u, 630221833u, 2423086156u,
+1119859778u, 1726827981u, 1870859181u, 2559832707u,
+1792284257u,
+2059356387u,
+3572353364u, 3229407475u, 575621095u, 3221893291u,
+2372428048u, 2020123035u, 961449593u, 2243824063u,
+3803906611u,
+3735348189u,
+2981620804u, 4180681078u, 1555330629u, 230736535u,
+2075526640u, 749652975u, 713664372u, 2152096659u,
+2142067223u,
+3322302242u,
+1421646830u, 2092832615u, 1213735101u, 3192136753u,
+1106723940u, 3455398230u, 2541685524u, 2529956739u,
+3789430647u,
+1950084508u,
+2157395621u, 850457360u, 2758902426u, 2848030169u,
+6506379u, 1162213157u, 2981459221u, 272690871u,
+3059420255u,
+4242691285u,
+588065598u, 1206949936u, 3968214184u, 566348532u,
+126142880u, 1480567086u, 2959621988u, 2050218418u,
+2242731195u,
+3833514449u,
+1898070331u, 3687399477u, 3891859374u, 868185955u,
+2335308774u, 3676335246u, 3871121805u, 2189032743u,
+3275728647u,
+860492892u,
+1590764344u, 4130384758u, 262871548u, 3004764525u,
+2685542071u, 991231482u, 435122019u, 3031116998u,
+2898921700u,
+2917932604u,
+4238665148u, 2459072654u, 3444612545u, 4207731740u,
+1808564313u, 2798532269u, 3944553556u, 3926395409u,
+1633200670u,
+4138335224u,
+2524878605u, 4184292650u, 3563398268u, 4288943552u,
+3802121210u, 957502058u, 2410820887u, 4227117506u,
+4018625153u,
+4284329158u,
+530216712u, 2978986531u, 863452221u, 1910162118u,
+4088211378u, 4091971261u, 3150811451u, 4200871487u,
+3794038652u,
+3041564310u,
+2045287082u, 887805614u, 2889167251u, 4120352181u,
+1699912580u, 3478922097u, 3211994687u, 3136177842u,
+1500806861u,
+3211881347u,
+2147976385u, 3342722260u, 3359650541u, 4197378460u,
+781354073u, 1533623029u, 2204677828u, 3228172832u,
+3248592437u,
+3355841359u,
+560815159u, 1144951236u, 4027015711u, 2882625391u,
+339363613u, 2354572719u, 1769831876u, 4238589331u,
+1519732871u,
+2185834614u,
+1601096831u, 129709881u, 39655633u, 367604993u,
+1737681770u, 3259114599u, 2767070452u, 872365177u,
+1574125529u,
+3405020189u,
+4181346685u, 1134030380u, 403769171u, 2193351164u,
+1426232618u, 2885309450u, 3033612627u, 924948363u,
+935514094u,
+3202053329u,
+912294839u, 1618472324u, 4159158431u, 3744999487u,
+777064358u, 3974213124u, 1990246048u, 309725290u,
+2449849392u,
+1943692420u,
+2288635750u, 2433793635u, 2168904061u, 683315308u,
+3081493019u, 3477759434u, 3815496269u, 2823504699u,
+586945121u,
+3088963200u,
+3492287335u, 636875049u, 1111206944u, 2037346120u,
+1282050044u, 1409681512u, 1786128584u, 755810950u,
+2332676758u,
+2178142310u,
+957827166u, 1014983590u, 1888800725u, 3608595803u,
+3200072714u, 2534008478u, 659336139u, 1281728287u,
+4060560529u,
+2915575125u,
+3521503774u, 2926487340u, 1096297674u, 653489861u,
+2352326980u, 2561136777u, 1224141198u, 1250479629u,
+1297625391u,
+2409997371u,
+1942483722u, 2481835750u, 1394715707u, 1673070941u,
+2456039704u, 3980558014u, 3547934764u, 1882038812u,
+1078160498u,
+2488279087u,
+1848235245u, 1211914722u, 2264928765u, 2807773070u,
+270145554u, 583747883u, 3826009010u, 2996618216u,
+425727157u,
+992726957u,
+3384462280u, 726650661u, 1955043265u, 1923879512u,
+1854693773u, 2987614542u, 2660044993u, 2457260810u,
+426299370u,
+2671892900u,
+1827308087u, 3083953443u, 1791749638u, 3265087416u,
+2119752201u, 2547122538u, 3990783236u, 1912713468u,
+3688865211u,
+1815780016u,
+303699291u, 2416763742u, 2690891610u, 1535193548u,
+1107803989u, 1504143133u, 2235270371u, 2545884083u,
+2276278682u,
+411724404u,
+3416925704u, 2565792091u, 3383911757u, 546058824u,
+3374654444u, 2364630415u, 2693473470u, 2622125691u,
+261864817u,
+55682470u,
+857617568u, 141304067u, 1885488541u, 155368182u,
+1281949051u, 3384522408u, 3254816901u, 1959816782u,
+1452224057u,
+2830267691u,
+3709231247u, 58988202u, 4218130458u, 2984061349u,
+1888707848u, 4223605071u, 4241442486u, 375269213u,
+3208327038u,
+2199916493u,
+550337252u, 2855061437u, 276088636u, 114362204u,
+2321163647u, 2127813633u, 3289403024u, 2686973202u,
+2717376797u,
+3593428039u,
+3648831666u, 890925902u, 3289404818u, 3289516821u,
+4248913260u, 1858916580u, 3303932308u, 1752797086u,
+1628149686u,
+3245893605u,
+1568537311u, 2844194502u, 1593855770u, 2408174109u,
+124797514u, 2085649512u, 3188565660u, 2264996276u,
+1926696513u,
+3053957740u,
+2238806881u, 2189050973u, 203685243u, 379855590u,
+3920271562u, 1058600179u, 3698061923u, 4255106849u,
+608401664u,
+1598041932u,
+3318266418u, 2535016555u, 852760884u, 1918098822u,
+2200437599u, 1532285043u, 3425662132u, 3561293706u,
+2231633206u,
+4108785088u,
+3359152801u, 173534780u, 208383607u, 2862988169u,
+2406642243u, 426814583u, 2777335795u, 3322703596u,
+954190623u,
+615093090u,
+4179102978u, 2452847930u, 100239619u, 42471741u,
+818352432u, 2190624654u, 504379960u, 3631619975u,
+633412456u,
+1018421783u,
+842645419u, 711808707u, 3424580813u, 2132457941u,
+1158335882u, 3567952480u, 2302183699u, 1145788151u,
+3474264138u,
+3105085243u,
+3115506027u, 2783713015u, 3871785309u, 539583269u,
+1400252405u, 3857849984u, 4231186588u, 1278653799u,
+1760227022u,
+761044088u,
+3838185417u, 2439542532u, 585283357u, 2055995220u,
+937117124u, 3831944855u, 1823586038u, 3287917855u,
+485082427u,
+3209172809u,
+1984570176u, 2818337297u, 2691869057u, 3790476953u,
+839035557u, 3203129010u, 669981176u, 4121157385u,
+3519870450u,
+3792633352u,
+3017650322u, 1603459507u, 4225677666u, 376555451u,
+473780127u, 2018786277u, 3299822439u, 1010254499u,
+2383887565u,
+3155009499u,
+3108110655u, 2641738274u, 3684908622u, 1606463047u,
+3311068174u, 52708046u, 754181455u, 1018079176u,
+3915670272u,
+3366999425u,
+1012880204u, 1339439715u, 466437962u, 1402662350u,
+2504046911u, 736323938u, 2037800124u, 1725908589u,
+716341840u,
+1750123474u,
+3366342464u, 1743666195u, 2975303189u, 3821364027u,
+3253707772u, 3635548377u, 3840413796u, 1955642085u,
+1018315169u,
+1258092848u,
+2095540656u, 1076256607u, 117289557u, 1311658655u,
+2118301000u, 68721550u, 2886814107u, 2712432819u,
+4201862886u,
+753807148u,
+1940229047u, 731347296u, 1068901393u, 3873155894u,
+2852787666u, 1973464853u, 79735652u, 3966380587u,
+3245740712u,
+2525773438u,
+734938109u, 3045656416u, 3335746354u, 4099732691u,
+1911896517u, 1697006473u, 1145487066u, 1605663299u,
+3053606724u,
+2386289465u,
+3821211369u, 1006215345u, 1256304829u, 1053001668u,
+1289194958u, 118761054u, 1853688730u, 2803418011u,
+188650809u,
+3763686458u,
+1006829556u, 2961984133u, 3390525025u, 2061199893u,
+141792681u, 2439893463u, 2652982650u, 1804942682u,
+1546510005u,
+1246961405u,
+2407577046u, 565772575u, 3751844810u, 2943166103u,
+3750052451u, 3022527280u, 25162928u, 397381043u,
+1818337632u,
+3447363730u,
+3936437150u, 2569420703u, 2215592390u, 2171555672u,
+3665571006u, 4021712412u, 2939158353u, 4057813172u,
+1823237318u,
+103999245u,
+3251978010u, 3591914940u, 3582495283u, 2519035265u,
+3905726135u, 3180393349u, 2743117123u, 55247368u,
+3325286701u,
+705195946u,
+1857526853u, 1480518550u, 3809990433u, 1398189338u,
+3126362926u, 3959531492u, 1503658285u, 1977847740u,
+3043964489u,
+2613086143u,
+1518119282u, 4238434900u, 3905746486u, 3064949667u,
+1028122931u, 3309119457u, 4071194920u, 3096098907u,
+4137180520u,
+494467959u,
+1231408687u, 1691606157u, 1793452569u, 2722196118u,
+3478603952u, 1059665738u, 2282032278u, 3990268388u,
+1719514651u,
+4248311578u,
+3799146721u, 898026304u, 3367808954u, 4162472815u,
+170495870u, 1308116609u, 3428285344u, 1714716475u,
+395576794u,
+4153638621u,
+2999745812u, 3483315953u, 304980828u, 595337120u,
+3486516729u, 2331563143u, 2583609459u, 1885928417u,
+3834283777u,
+979337825u,
+932057378u, 3124081189u, 1930356777u, 3865887996u,
+4178282217u, 4214219408u, 3669465884u, 1472413856u,
+3356866587u,
+1012769806u,
+3043639963u, 996996396u, 207308216u, 982967331u,
+2991319933u, 318066902u, 721489670u, 1249967713u,
+749240921u,
+591392325u,
+2379365192u, 2250868849u, 2163259329u, 143191325u,
+3778285606u, 982149096u, 3536906200u, 2244353244u,
+1443862317u,
+3161549210u,
+2183127464u, 2015409516u, 547003700u, 2032484282u,
+523677821u, 4275663308u, 3827205526u, 3903778273u,
+2444530525u,
+2543645801u,
+1173958423u, 784740616u, 2878693675u, 3127696736u,
+3832037316u, 3161002398u, 4084166400u, 4213346853u,
+223390424u,
+4273380883u,
+2130315482u, 3429606032u, 3367732613u, 1912357694u,
+422632590u, 1266957023u, 3437535648u, 736404240u,
+2281709372u,
+415859912u,
+212948797u, 351612650u, 3920561440u, 112963586u,
+2230727543u, 2851076612u, 1990662634u, 2264296857u,
+3131463650u,
+2704034623u,
+3541637839u, 2954232792u, 533986918u, 4158757533u,
+65174248u, 4232639593u, 865906667u, 1948225652u,
+779656112u,
+3873989249u,
+2372984749u, 2346988193u, 1104345713u, 1165654138u,
+4045762610u, 3588205178u, 461363991u, 1111215752u,
+1389675192u,
+2404325151u,
+2152228101u, 3808973622u, 1901235912u, 3458690696u,
+314513238u, 2539459143u, 2847998873u, 952026138u,
+2325705328u,
+407844712u,
+3727960715u, 2996448351u, 2374336760u, 3138756390u,
+2600015243u, 539980418u, 1876285352u, 1670330799u,
+1709360377u,
+2868531654u,
+494777964u, 2773053597u, 599486162u, 3962209577u,
+1871328846u, 2171933018u, 110279472u, 384074780u,
+4147021936u,
+2333589647u,
+4251778066u, 40493468u, 3099342316u, 4108779767u,
+2812424588u, 954542332u, 2040682331u, 2251152306u,
+45915516u,
+259525626u,
+1045384743u, 4134656562u, 749389261u, 874399445u,
+616549904u, 2200447504u, 436024539u, 78972290u,
+3210485762u,
+1907985531u,
+3013721395u, 4214533685u, 4198804243u, 534879265u,
+1517190881u, 3756787754u, 1152563554u, 1718750948u,
+777737463u,
+1402478860u,
+1824562784u, 1879401449u, 3515818786u, 513165201u,
+1423491227u, 2103067918u, 2291777410u, 1097943000u,
+};
+
+// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
+bool Test(int offset, int len = 0) {
+#undef Check
+#undef IsAlive
+
+#define Check(x) do { \
+ const uint32_t actual = (x), e = expected[index++]; \
+ bool ok = actual == e; \
+ if (!ok) { \
+ cerr << "expected " << hex << e << " but got " << actual << endl; \
+ ++errors; \
+ } \
+ assert(ok); \
+} while (0)
+
+#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
+
+ // After the following line is where the uses of "Check" and such will go.
+ static int index = 0;
+if (offset == -1) { int alive = 0; IsAlive(farmhashcc::Hash32WithSeed(data, len++, SEED)); IsAlive(farmhashcc::Hash32(data, len++)); { uint128_t u = farmhashcc::Fingerprint128(data, len++); uint64_t h = Uint128Low64(u); IsAlive(h >> 32); IsAlive((h << 32) >> 32); h = Uint128High64(u); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } len -= 3; return alive > 0; }
+Check(farmhashcc::Hash32WithSeed(data + offset, len, SEED));
+Check(farmhashcc::Hash32(data + offset, len));
+{ uint128_t u = farmhashcc::Fingerprint128(data + offset, len); uint64_t h = Uint128Low64(u); Check(h >> 32); Check((h << 32) >> 32); h = Uint128High64(u); Check(h >> 32); Check((h << 32) >> 32); }
+{ uint128_t u = farmhashcc::CityHash128WithSeed(data + offset, len, Uint128(SEED0, SEED1)); uint64_t h = Uint128Low64(u); Check(h >> 32); Check((h << 32) >> 32); h = Uint128High64(u); Check(h >> 32); Check((h << 32) >> 32); }
+
+ return true;
+#undef Check
+#undef IsAlive
+}
+
+int RunTest() {
+ Setup();
+ int i = 0;
+ cout << "Running farmhashccTest";
+ if (!Test(-1)) {
+ cout << "... Unavailable\n";
+ return NoteErrors();
+ }
+ // Good. The function is attempting to hash, so run the full test.
+ int errors_prior_to_test = errors;
+ for ( ; i < kTestSize - 1; i++) {
+ Test(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ Test(0, i);
+ }
+ Test(0, kDataSize);
+ cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
+ return NoteErrors();
+}
+
+#else
+
+// After the following line is where the code to print hash codes will go.
+void Dump(int offset, int len) {
+cout << farmhashcc::Hash32WithSeed(data + offset, len, SEED) << "u," << endl;
+cout << farmhashcc::Hash32(data + offset, len) << "u," << endl;
+{ uint128_t u = farmhashcc::Fingerprint128(data + offset, len); uint64_t h = Uint128Low64(u); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u, "; h = Uint128High64(u); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
+{ uint128_t u = farmhashcc::CityHash128WithSeed(data + offset, len, Uint128(SEED0, SEED1)); uint64_t h = Uint128Low64(u); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u, "; h = Uint128High64(u); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
+}
+
+#endif
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+
+} // namespace farmhashccTest
+
+#if !TESTING
+int main(int argc, char** argv) {
+ Setup();
+ cout << "uint32_t expected[] = {\n";
+ int i = 0;
+ for ( ; i < kTestSize - 1; i++) {
+ farmhashccTest::Dump(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ farmhashccTest::Dump(0, i);
+ }
+ farmhashccTest::Dump(0, kDataSize);
+ cout << "};\n";
+}
+#endif
+#ifndef FARMHASH_SELF_TEST_GUARD
+#define FARMHASH_SELF_TEST_GUARD
+#include <cstdio>
+#include <iostream>
+#include <string.h>
+
+using std::cout;
+using std::cerr;
+using std::endl;
+using std::hex;
+
+static const uint64_t kSeed0 = 1234567;
+static const uint64_t kSeed1 = k0;
+static const int kDataSize = 1 << 20;
+static const int kTestSize = 300;
+#define kSeed128 Uint128(kSeed0, kSeed1)
+
+static char data[kDataSize];
+
+static int completed_self_tests = 0;
+static int errors = 0;
+
+// Initialize data to pseudorandom values.
+void Setup() {
+ if (completed_self_tests == 0) {
+ uint64_t a = 9;
+ uint64_t b = 777;
+ for (int i = 0; i < kDataSize; i++) {
+ a += b;
+ b += a;
+ a = (a ^ (a >> 41)) * k0;
+ b = (b ^ (b >> 41)) * k0 + i;
+ uint8_t u = b >> 37;
+ memcpy(data + i, &u, 1); // uint8_t -> char
+ }
+ }
+}
+
+int NoteErrors() {
+#define NUM_SELF_TESTS 9
+ if (++completed_self_tests == NUM_SELF_TESTS)
+ std::exit(errors > 0);
+ return errors;
+}
+
+template <typename T> inline bool IsNonZero(T x) {
+ return x != 0;
+}
+
+template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
+ return x != Uint128(0, 0);
+}
+
+#endif // FARMHASH_SELF_TEST_GUARD
+
+namespace farmhashmkTest {
+
+uint32_t CreateSeed(int offset, int salt) {
+ uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h += static_cast<uint32_t>(offset & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ return h;
+}
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+#define SEED CreateSeed(offset, -1)
+#define SEED0 CreateSeed(offset, 0)
+#define SEED1 CreateSeed(offset, 1)
+
+#undef TESTING
+#define TESTING 1
+#if TESTING
+uint32_t expected[] = {
+4223616069u,
+3696677242u,
+4081014168u,
+2576519988u,
+2212771159u,
+1112731063u,
+1020067935u,
+3955445564u,
+1451961420u,
+653440099u,
+31917516u,
+2957164615u,
+2590087362u,
+3879448744u,
+176305566u,
+2447367541u,
+1359016305u,
+3363804638u,
+1117290165u,
+1062549743u,
+2437877004u,
+1894455839u,
+673206794u,
+3486923651u,
+3269862919u,
+2303349487u,
+1380660650u,
+595525107u,
+1525325287u,
+2025609358u,
+176408838u,
+1592885012u,
+864896482u,
+2101378090u,
+3489229104u,
+2118965695u,
+581644891u,
+2718789079u,
+631613207u,
+4228658372u,
+3867875546u,
+3531368319u,
+3804516756u,
+3317755099u,
+1619744564u,
+2884717286u,
+1088213445u,
+2667691076u,
+3727873235u,
+2330406762u,
+3616470388u,
+967660719u,
+4148162586u,
+315219121u,
+673084328u,
+3047602355u,
+1598963653u,
+1267826661u,
+2117362589u,
+2861192253u,
+1823625377u,
+1380350078u,
+1641748342u,
+1176094482u,
+269384321u,
+2178982315u,
+3480237248u,
+2660755208u,
+1850544433u,
+3429699438u,
+1262819303u,
+640556464u,
+2421125401u,
+2188368608u,
+2612932825u,
+1474432581u,
+173790449u,
+2124882189u,
+831272654u,
+622960146u,
+4238751051u,
+3250317967u,
+2120810248u,
+1948231495u,
+1389029321u,
+2200398357u,
+2134232963u,
+2948072329u,
+617717625u,
+681164587u,
+114859387u,
+430545646u,
+57239089u,
+3163338012u,
+3482496399u,
+557662576u,
+1102441413u,
+2670159360u,
+991116729u,
+846014240u,
+4233741566u,
+1802317242u,
+3129528802u,
+1459456375u,
+1305643039u,
+3258671612u,
+1578285833u,
+868590079u,
+1631034517u,
+1695432937u,
+561078856u,
+1004115553u,
+3086090507u,
+3818348650u,
+731596645u,
+780926790u,
+2544205955u,
+158479164u,
+3983514188u,
+2004735250u,
+3436218400u,
+673684751u,
+1463431419u,
+2880490219u,
+3223748024u,
+2218318859u,
+1474466194u,
+2636437533u,
+2206794961u,
+140995728u,
+1186394086u,
+1805716888u,
+1640037724u,
+3942729099u,
+1944727013u,
+918951560u,
+498666871u,
+3486974657u,
+2967205462u,
+1167253804u,
+1884281041u,
+2866015002u,
+4158319270u,
+2627220079u,
+3733319624u,
+3317092271u,
+438323662u,
+3195868065u,
+3426606709u,
+360708338u,
+1905491012u,
+650004803u,
+1351266252u,
+3133279000u,
+3722811115u,
+2722412434u,
+918432408u,
+3678271248u,
+269599647u,
+621514057u,
+3117077855u,
+1545425390u,
+2597567410u,
+1221437820u,
+3493254589u,
+102787342u,
+918861168u,
+348795089u,
+3439883229u,
+2353641807u,
+2209585469u,
+4035884492u,
+2686995435u,
+1649888022u,
+3852893848u,
+3042700028u,
+314103172u,
+726977769u,
+2489830276u,
+2872753660u,
+1316214989u,
+1488801501u,
+1811420390u,
+639581627u,
+2362837215u,
+3634581834u,
+3648576802u,
+1257314182u,
+762118371u,
+4268447045u,
+730167096u,
+755561509u,
+882614845u,
+3696972894u,
+228263661u,
+1478636142u,
+2767751651u,
+1532617116u,
+3838657661u,
+1944359935u,
+1401102137u,
+3772933173u,
+1050098254u,
+1658079354u,
+1846025728u,
+2204244794u,
+2017217424u,
+1275162853u,
+1429816745u,
+2175565479u,
+1716109139u,
+1187506761u,
+2434641075u,
+2725597783u,
+1795687662u,
+1393312782u,
+3511565397u,
+627885430u,
+4145733164u,
+2519005353u,
+231414775u,
+1242015635u,
+2760723497u,
+2185540568u,
+727314436u,
+2358790354u,
+1186393454u,
+4234795645u,
+350567813u,
+866773875u,
+3145590392u,
+1158374055u,
+3903123687u,
+1862119793u,
+2204587556u,
+4266276976u,
+4151548555u,
+915250402u,
+2874695320u,
+2360311410u,
+1099212769u,
+1271542714u,
+3473148363u,
+1637325418u,
+1807795989u,
+2493819794u,
+3800917924u,
+4001205856u,
+2582153621u,
+3365872040u,
+2890146216u,
+2626363824u,
+3133351295u,
+4046827296u,
+3053118771u,
+4113026751u,
+884356716u,
+3828347401u,
+10608262u,
+830987972u,
+1841080500u,
+3202717763u,
+3561778749u,
+1906000052u,
+3058284660u,
+1432904514u,
+2567431677u,
+2550162530u,
+665557986u,
+936887821u,
+2101205308u,
+4253535847u,
+1662043545u,
+1253611611u,
+2091370094u,
+2635077370u,
+2602176041u,
+3624115809u,
+748442714u,
+2709749154u,
+1023493343u,
+860291012u,
+3924715584u,
+1536436740u,
+2551145800u,
+2391782865u,
+1467705048u,
+2583909796u,
+3616666170u,
+1162857372u,
+4228631071u,
+1510132376u,
+2739165009u,
+2656606142u,
+3454996358u,
+3155038853u,
+1022087316u,
+100044110u,
+494208296u,
+2746186477u,
+4216782431u,
+225448834u,
+3728320521u,
+335282866u,
+3148194874u,
+953503703u,
+1293353960u,
+202372387u,
+1326119870u,
+4045123735u,
+3819994846u,
+1629004186u,
+1081099186u,
+3591584153u,
+1670825804u,
+3404257979u,
+3262192301u,
+2572846095u,
+3714992543u,
+4264142572u,
+529616678u,
+2882154574u,
+3006354178u,
+3865969421u,
+2007174907u,
+308283107u,
+2629833703u,
+3159124075u,
+1146492131u,
+494104332u,
+493149727u,
+1342910585u,
+521642387u,
+2201695937u,
+2517980959u,
+2426821287u,
+777374655u,
+2228189792u,
+4027055486u,
+228976000u,
+3842083468u,
+1723920223u,
+1192126094u,
+787744493u,
+2740368380u,
+2284153001u,
+2773829458u,
+442000614u,
+387830783u,
+2169780670u,
+2253144627u,
+3532502484u,
+1969684059u,
+1165351416u,
+3055056536u,
+3582324253u,
+231419363u,
+770979865u,
+3213983597u,
+3690452836u,
+935794639u,
+3230602762u,
+2841762457u,
+407598927u,
+1164479891u,
+3721799696u,
+354738136u,
+1801566618u,
+3206038542u,
+2621379981u,
+1943487262u,
+3534745636u,
+1074424589u,
+1304517521u,
+4133400969u,
+2339317978u,
+2135116860u,
+4180643791u,
+2415309340u,
+1855926417u,
+3418648630u,
+1968113037u,
+597304222u,
+3668824865u,
+3810008716u,
+3014702569u,
+3151212026u,
+156057449u,
+373134533u,
+2068234004u,
+191580563u,
+3832754488u,
+2924104199u,
+2026044494u,
+4065780435u,
+122565840u,
+4194985167u,
+2744823717u,
+2494098735u,
+3753793370u,
+1885739217u,
+2488161225u,
+3643797615u,
+2653367310u,
+2494061477u,
+189968132u,
+899646597u,
+392100396u,
+4012318310u,
+3855777086u,
+3566860954u,
+2698574996u,
+2414249905u,
+1330623339u,
+1263222732u,
+1277741760u,
+2194959402u,
+1629656136u,
+120494320u,
+1072368005u,
+1084245077u,
+4011372748u,
+1366613353u,
+3108643228u,
+3332219532u,
+2114746095u,
+3964007334u,
+371687128u,
+1084813876u,
+126459896u,
+4292782331u,
+321283184u,
+398168499u,
+3604983506u,
+560701543u,
+2073961354u,
+4240841868u,
+4151211362u,
+1338986875u,
+4093476832u,
+2269279497u,
+3500846299u,
+2510225147u,
+598000444u,
+1330391422u,
+1432533385u,
+4171226231u,
+426821154u,
+2932270996u,
+3378981077u,
+2217871549u,
+1619647984u,
+4051608043u,
+3180237819u,
+12919578u,
+1375401767u,
+371320427u,
+2986640571u,
+2336669859u,
+3796464715u,
+1892383284u,
+306814912u,
+2125823211u,
+1863678891u,
+3249703818u,
+3840225752u,
+281579900u,
+264680257u,
+4266359110u,
+4182229890u,
+2239659703u,
+3627947372u,
+2373929191u,
+224082765u,
+4053639058u,
+1862360303u,
+3187739624u,
+3392706679u,
+948039509u,
+817505760u,
+1215842393u,
+3462222651u,
+536021853u,
+182346832u,
+2731944883u,
+2346674384u,
+2640961678u,
+3446695687u,
+2271722179u,
+1301069656u,
+2803881468u,
+2832614405u,
+1691544398u,
+698756814u,
+3980620906u,
+3565421410u,
+754769376u,
+4115923404u,
+3909962218u,
+2747614077u,
+2888289845u,
+1016920862u,
+2790946178u,
+3067070960u,
+3173251481u,
+1572132982u,
+255048203u,
+2996538818u,
+3405398987u,
+136106013u,
+3581605228u,
+4277437977u,
+2147300534u,
+3728426265u,
+3483629996u,
+1478452694u,
+20756076u,
+2774992067u,
+432987927u,
+1516771026u,
+3511588664u,
+2130994978u,
+509385406u,
+873090347u,
+2163904107u,
+4192239086u,
+2532489989u,
+1090772651u,
+3910797408u,
+3710882132u,
+155010959u,
+1369823531u,
+1599664937u,
+4035593587u,
+1212746925u,
+795822552u,
+116689518u,
+3674240941u,
+1135576664u,
+756750261u,
+1027431362u,
+390555140u,
+2228460216u,
+1506940482u,
+3733857700u,
+3048762971u,
+2511703196u,
+548609887u,
+1607354252u,
+659053982u,
+259884450u,
+1793130460u,
+4083364495u,
+3148555881u,
+1764350138u,
+2436485683u,
+4031563025u,
+3261860724u,
+2475833430u,
+2101726086u,
+3191176464u,
+2646658847u,
+2127042126u,
+771316100u,
+2115922959u,
+3208515045u,
+2355437783u,
+3621147793u,
+1580163615u,
+3211555675u,
+3299188490u,
+191613920u,
+466733956u,
+2939029038u,
+1509152039u,
+130591314u,
+1892874677u,
+1646908044u,
+3452406523u,
+3998376606u,
+1199243832u,
+2187108812u,
+3189230066u,
+4161151481u,
+3371454980u,
+3681788646u,
+180842187u,
+3685022399u,
+3058749895u,
+3250165163u,
+2895367943u,
+2627101723u,
+771755098u,
+1332921024u,
+3638871848u,
+514215135u,
+3591227378u,
+2300310870u,
+3689533503u,
+851607114u,
+114330368u,
+2709027386u,
+1743034877u,
+1013693860u,
+288169008u,
+3545190686u,
+1052165084u,
+3995862307u,
+96902755u,
+1097819851u,
+2645431442u,
+2184148618u,
+2151206566u,
+350979797u,
+3467920900u,
+421116779u,
+1246252u,
+4057835428u,
+329324407u,
+4104482417u,
+844624570u,
+3306265806u,
+3787625025u,
+4263241191u,
+3251413927u,
+2921204431u,
+2931915325u,
+992134330u,
+3986338354u,
+1327895216u,
+1458363596u,
+1480608532u,
+728594368u,
+3804366693u,
+794404223u,
+1643240863u,
+793417255u,
+4167916443u,
+2683488959u,
+3124925324u,
+4184843652u,
+3750971752u,
+308509829u,
+1054550805u,
+2797511972u,
+4043123412u,
+1587158240u,
+4050518606u,
+3030062190u,
+2589912753u,
+603440067u,
+937013191u,
+1071662315u,
+2100661456u,
+2602005741u,
+435516078u,
+2260470147u,
+1256268350u,
+3612035u,
+3368856141u,
+151516099u,
+3081868591u,
+3363755681u,
+2049963149u,
+2885320434u,
+84682005u,
+2411758308u,
+2695174275u,
+3099904644u,
+1787308684u,
+1132379308u,
+564634346u,
+510236510u,
+2804443681u,
+3931864252u,
+2064427949u,
+1893979229u,
+2916544974u,
+1885887717u,
+2978018250u,
+494192125u,
+2642662373u,
+901112508u,
+636035003u,
+1658643797u,
+172746975u,
+517504890u,
+3440019372u,
+4144498044u,
+1854755456u,
+3672653905u,
+4176892856u,
+382159097u,
+282871690u,
+3629300472u,
+2500754041u,
+1677659759u,
+1067175061u,
+161654075u,
+1672575536u,
+346120493u,
+2730229631u,
+203466442u,
+1244549529u,
+199761971u,
+2744895408u,
+3195315331u,
+2124618519u,
+3261045496u,
+985339699u,
+3385585455u,
+1545740710u,
+3636652160u,
+2167020081u,
+1207897204u,
+28752417u,
+2895834146u,
+3640845375u,
+3750293073u,
+548997850u,
+4207814196u,
+4183030708u,
+2462810989u,
+3929965401u,
+};
+
+// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
+bool Test(int offset, int len = 0) {
+#undef Check
+#undef IsAlive
+
+#define Check(x) do { \
+ const uint32_t actual = (x), e = expected[index++]; \
+ bool ok = actual == e; \
+ if (!ok) { \
+ cerr << "expected " << hex << e << " but got " << actual << endl; \
+ ++errors; \
+ } \
+ assert(ok); \
+} while (0)
+
+#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
+
+ // After the following line is where the uses of "Check" and such will go.
+ static int index = 0;
+if (offset == -1) { int alive = 0; IsAlive(farmhashmk::Hash32WithSeed(data, len++, SEED)); IsAlive(farmhashmk::Hash32(data, len++)); IsAlive(farmhashmk::Hash32(data, len++)); len -= 3; return alive > 0; }
+Check(farmhashmk::Hash32WithSeed(data + offset, len, SEED));
+Check(farmhashmk::Hash32(data + offset, len));
+
+ return true;
+#undef Check
+#undef IsAlive
+}
+
+int RunTest() {
+ Setup();
+ int i = 0;
+ cout << "Running farmhashmkTest";
+ if (!Test(-1)) {
+ cout << "... Unavailable\n";
+ return NoteErrors();
+ }
+ // Good. The function is attempting to hash, so run the full test.
+ int errors_prior_to_test = errors;
+ for ( ; i < kTestSize - 1; i++) {
+ Test(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ Test(0, i);
+ }
+ Test(0, kDataSize);
+ cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
+ return NoteErrors();
+}
+
+#else
+
+// After the following line is where the code to print hash codes will go.
+void Dump(int offset, int len) {
+cout << farmhashmk::Hash32WithSeed(data + offset, len, SEED) << "u," << endl;
+cout << farmhashmk::Hash32(data + offset, len) << "u," << endl;
+}
+
+#endif
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+
+} // namespace farmhashmkTest
+
+#if !TESTING
+int main(int argc, char** argv) {
+ Setup();
+ cout << "uint32_t expected[] = {\n";
+ int i = 0;
+ for ( ; i < kTestSize - 1; i++) {
+ farmhashmkTest::Dump(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ farmhashmkTest::Dump(0, i);
+ }
+ farmhashmkTest::Dump(0, kDataSize);
+ cout << "};\n";
+}
+#endif
+#ifndef FARMHASH_SELF_TEST_GUARD
+#define FARMHASH_SELF_TEST_GUARD
+#include <cstdio>
+#include <iostream>
+#include <string.h>
+
+using std::cout;
+using std::cerr;
+using std::endl;
+using std::hex;
+
+static const uint64_t kSeed0 = 1234567;
+static const uint64_t kSeed1 = k0;
+static const int kDataSize = 1 << 20;
+static const int kTestSize = 300;
+#define kSeed128 Uint128(kSeed0, kSeed1)
+
+static char data[kDataSize];
+
+static int completed_self_tests = 0;
+static int errors = 0;
+
+// Initialize data to pseudorandom values.
+void Setup() {
+ if (completed_self_tests == 0) {
+ uint64_t a = 9;
+ uint64_t b = 777;
+ for (int i = 0; i < kDataSize; i++) {
+ a += b;
+ b += a;
+ a = (a ^ (a >> 41)) * k0;
+ b = (b ^ (b >> 41)) * k0 + i;
+ uint8_t u = b >> 37;
+ memcpy(data + i, &u, 1); // uint8_t -> char
+ }
+ }
+}
+
+int NoteErrors() {
+#define NUM_SELF_TESTS 9
+ if (++completed_self_tests == NUM_SELF_TESTS)
+ std::exit(errors > 0);
+ return errors;
+}
+
+template <typename T> inline bool IsNonZero(T x) {
+ return x != 0;
+}
+
+template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
+ return x != Uint128(0, 0);
+}
+
+#endif // FARMHASH_SELF_TEST_GUARD
+
+namespace farmhashnaTest {
+
+uint32_t CreateSeed(int offset, int salt) {
+ uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h += static_cast<uint32_t>(offset & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ return h;
+}
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+#define SEED CreateSeed(offset, -1)
+#define SEED0 CreateSeed(offset, 0)
+#define SEED1 CreateSeed(offset, 1)
+
+#undef TESTING
+#define TESTING 1
+#if TESTING
+uint32_t expected[] = {
+1140953930u, 861465670u,
+3277735313u, 2681724312u,
+2598464059u, 797982799u,
+890626835u, 800175912u,
+2603993599u, 921001710u,
+1410420968u, 2134990486u,
+3283896453u, 1867689945u,
+2914424215u, 2244477846u,
+255297188u, 2992121793u,
+1110588164u, 4186314283u,
+161451183u, 3943596029u,
+4019337850u, 452431531u,
+283198166u, 2741341286u,
+3379021470u, 2557197665u,
+299850021u, 2532580744u,
+452473466u, 1706958772u,
+1298374911u, 3099673830u,
+2199864459u, 3696623795u,
+236935126u, 2976578695u,
+4055299123u, 3281581178u,
+1053458494u, 1882212500u,
+2305012065u, 2169731866u,
+3456121707u, 275903667u,
+458884671u, 3033004529u,
+3058973506u, 2379411653u,
+1898235244u, 1402319660u,
+2700149065u, 2699376854u,
+147814787u, 720739346u,
+2433714046u, 4222949502u,
+4220361840u, 1712034059u,
+3425469811u, 3690733394u,
+4148372108u, 1330324210u,
+594028478u, 2921867846u,
+1635026870u, 192883107u,
+780716741u, 1728752234u,
+3280331829u, 326029180u,
+3969463346u, 1436364519u,
+393215742u, 3349570000u,
+3824583307u, 1612122221u,
+2859809759u, 3808705738u,
+1379537552u, 1646032583u,
+2233466664u, 1432476832u,
+4023053163u, 2650381482u,
+2052294713u, 3552092450u,
+1628777059u, 1499109081u,
+3476440786u, 3829307897u,
+2960536756u, 1554038301u,
+1145519619u, 3190844552u,
+2902102606u, 3600725550u,
+237495366u, 540224401u,
+65721842u, 489963606u,
+1448662590u, 397635823u,
+1596489240u, 1562872448u,
+1790705123u, 2128624475u,
+180854224u, 2604346966u,
+1435705557u, 1262831810u,
+155445229u, 1672724608u,
+1669465176u, 1341975128u,
+663607706u, 2077310004u,
+3610042449u, 1911523866u,
+1043692997u, 1454396064u,
+2563776023u, 294527927u,
+1099072299u, 1389770549u,
+703505868u, 678706990u,
+2952353448u, 2026137563u,
+3603803785u, 629449419u,
+1933894405u, 3043213226u,
+226132789u, 2489287368u,
+1552847036u, 645684964u,
+3828089804u, 3632594520u,
+187883449u, 230403464u,
+3151491850u, 3272648435u,
+3729087873u, 1303930448u,
+2002861219u, 165370827u,
+916494250u, 1230085527u,
+3103338579u, 3064290191u,
+3807265751u, 3628174014u,
+231181488u, 851743255u,
+2295806711u, 1781190011u,
+2988893883u, 1554380634u,
+1142264800u, 3667013118u,
+1968445277u, 315203929u,
+2638023604u, 2290487377u,
+732137533u, 1909203251u,
+440398219u, 1891630171u,
+1380301172u, 1498556724u,
+4072067757u, 4165088768u,
+4204318635u, 441430649u,
+3931792696u, 197618179u,
+956300927u, 914413116u,
+3010839769u, 2837339569u,
+2148126371u, 1913303225u,
+3074915312u, 3117299654u,
+4139181436u, 2993479124u,
+3178848746u, 1357272220u,
+1438494951u, 507436733u,
+667183474u, 2084369203u,
+3854939912u, 1413396341u,
+126024219u, 146044391u,
+1016656857u, 3022024459u,
+3254014218u, 429095991u,
+165589978u, 1578546616u,
+985653208u, 1718653828u,
+623071693u, 366414107u,
+249776086u, 1207522198u,
+3047342438u, 2991127487u,
+3120876698u, 1684583131u,
+46987739u, 1157614300u,
+863214540u, 1087193030u,
+199124911u, 520792961u,
+3614377032u, 586863115u,
+3331828431u, 1013201099u,
+1716848157u, 4033596884u,
+1164298657u, 4140791139u,
+1146169032u, 1434258493u,
+3824360466u, 3242407770u,
+3725511003u, 232064808u,
+872586426u, 762243036u,
+2736953692u, 816692935u,
+512845449u, 3748861010u,
+2266795890u, 3781899767u,
+4290630595u, 517646945u,
+22638523u, 648000590u,
+959214578u, 558910384u,
+1283799121u, 3047062993u,
+1024246061u, 4027776454u,
+3544509313u, 622325861u,
+834785312u, 382936554u,
+411505255u, 1973395102u,
+1825135056u, 2725923798u,
+580988377u, 2826990641u,
+3474970689u, 1029055034u,
+812546227u, 2506885666u,
+2584372201u, 1758123094u,
+589567754u, 325737734u,
+345313518u, 2022370576u,
+3886113119u, 3338548567u,
+257578986u, 3698087965u,
+1776047957u, 1771384107u,
+3604937815u, 3198590202u,
+2305332220u, 191910725u,
+4232136669u, 427759438u,
+4244322689u, 542201663u,
+3315355162u, 2135941665u,
+556609672u, 45845311u,
+1175961330u, 3948351189u,
+23075771u, 3252374102u,
+1634635545u, 4151937410u,
+713127376u, 1467786451u,
+663013031u, 3444053918u,
+2638154051u, 810082938u,
+3077742128u, 1062268187u,
+2115441882u, 4081398201u,
+3735739145u, 2794294783u,
+2335576331u, 2560479831u,
+1379288194u, 4225182569u,
+2442302747u, 3948961926u,
+3958366652u, 3067277639u,
+3667516477u, 1709989541u,
+1516711748u, 2339636583u,
+4188504038u, 59581167u,
+2725013602u, 3639843023u,
+2658147000u, 2643979752u,
+3758739543u, 4189944477u,
+2470483982u, 877580602u,
+2995362413u, 118817200u,
+3252925478u, 2062343506u,
+3981838403u, 3762572073u,
+1231633714u, 4168280671u,
+2931588131u, 3284356565u,
+1129162571u, 732225574u,
+4173605289u, 1407328702u,
+1677744031u, 3532596884u,
+3232041815u, 1652884780u,
+2256541290u, 3459463480u,
+3740979556u, 259034107u,
+2227121257u, 1426140634u,
+3606709555u, 3424793077u,
+315836068u, 3200749877u,
+1386256573u, 24035717u,
+2982018998u, 1811050648u,
+234531934u, 1115203611u,
+1598686658u, 3146815575u,
+1603559457u, 323296368u,
+2632963283u, 1778459926u,
+739944537u, 579625482u,
+3486330348u, 492621815u,
+1231665285u, 2457048126u,
+3903349120u, 389846205u,
+3355404249u, 3275550588u,
+1052645068u, 862072556u,
+2834153464u, 1481069623u,
+2657392572u, 4279236653u,
+1688445808u, 701920051u,
+3740748788u, 3388062747u,
+1873358321u, 2152785640u,
+883382081u, 1005815394u,
+1020177209u, 734239551u,
+2371453141u, 100326520u,
+3488500412u, 1279682138u,
+2610427744u, 49703572u,
+3026361211u, 605900428u,
+302392721u, 2509302188u,
+1416453607u, 2815915291u,
+1862819968u, 519710058u,
+2450888314u, 4017598378u,
+937074653u, 3035635454u,
+1590230729u, 3268013438u,
+2710029305u, 12886044u,
+3711259084u, 2627383582u,
+3895772404u, 648534979u,
+260307902u, 855990313u,
+3669691805u, 263366740u,
+2938543471u, 414331688u,
+3080542944u, 3405007814u,
+3565059103u, 1190977418u,
+390836981u, 1606450012u,
+2649808239u, 2514169310u,
+2747519432u, 4129538640u,
+1721522849u, 492099164u,
+792990594u, 3625507637u,
+2271095827u, 2993032712u,
+2302363854u, 4013112951u,
+1111617969u, 2183845740u,
+795918276u, 1116991810u,
+3110898804u, 3963062126u,
+2737064702u, 462795667u,
+937372240u, 1343017609u,
+1091041189u, 2790555455u,
+277024217u, 25485284u,
+1166522068u, 1623631848u,
+241727183u, 2836158787u,
+3112996740u, 573836428u,
+2721658101u, 1937681565u,
+4175169209u, 3190765433u,
+1970000788u, 1668258120u,
+114616703u, 954762543u,
+199237753u, 4094644498u,
+2522281978u, 732086117u,
+1756889687u, 2936126607u,
+2437031370u, 4103143808u,
+3883389541u, 3171090854u,
+2483004780u, 1927385370u,
+2360538162u, 2740855009u,
+4241185118u, 1492209542u,
+1672737098u, 2148675559u,
+1789864670u, 2434313103u,
+2319172611u, 2760941207u,
+2636210123u, 1338083267u,
+1128080590u, 822806371u,
+1199583556u, 314727461u,
+1335160250u, 2084630531u,
+1156261526u, 316766066u,
+112090465u, 3129033323u,
+2746885618u, 636616055u,
+2582210744u, 1721064910u,
+3468394263u, 470463518u,
+2076016059u, 408721884u,
+2121041886u, 378460278u,
+1915948002u, 357324860u,
+2301682622u, 2691859523u,
+1869756364u, 2429314418u,
+2193146527u, 1185564327u,
+2614088922u, 1975527044u,
+919067651u, 2855948894u,
+3662539576u, 1943802836u,
+3529473373u, 1490330107u,
+366036094u, 3384241033u,
+4276268604u, 448403661u,
+4271796078u, 1910401882u,
+3077107698u, 299427366u,
+2035665349u, 3201262636u,
+3738454258u, 2554452696u,
+3588997135u, 3363895827u,
+1267505995u, 1852004679u,
+2237827073u, 2803250686u,
+3468044908u, 2143572850u,
+1728158656u, 1022551180u,
+1996680960u, 839529273u,
+2400647871u, 2201096054u,
+3606433628u, 2597259793u,
+3544595875u, 3909443124u,
+819278607u, 3447346709u,
+806136613u, 2711436388u,
+3656063205u, 837475154u,
+694525336u, 4070212073u,
+4011303412u, 1068395209u,
+438095290u, 484603494u,
+2673730227u, 737767009u,
+642310823u, 3914002299u,
+308425103u, 268427550u,
+1334387085u, 4069797497u,
+4280783219u, 2914011058u,
+4243643405u, 2849988118u,
+2504230175u, 1817156623u,
+2804200483u, 3406991497u,
+2948254999u, 2102063419u,
+1071272117u, 514889942u,
+571972433u, 1246595599u,
+1735616066u, 1539151988u,
+1230831543u, 277987182u,
+4269526481u, 991511607u,
+95237878u, 2005032160u,
+1291113144u, 626619670u,
+3560835907u, 164940926u,
+1433635018u, 116647396u,
+3039097112u, 2868163232u,
+1141645918u, 1764165478u,
+881378302u, 2159170082u,
+2953647681u, 1011320066u,
+184856151u, 1723308975u,
+336034862u, 2017579106u,
+1476681709u, 147523618u,
+3896252223u, 2264728166u,
+944743644u, 1694443528u,
+2690700128u, 1947321519u,
+735478508u, 4058183171u,
+260177668u, 505662155u,
+2391691262u, 1920739747u,
+3216960415u, 1898176786u,
+3722741628u, 1511077569u,
+449636564u, 983350414u,
+2580237367u, 2055059789u,
+1103819072u, 2089123665u,
+3873755579u, 2718467458u,
+3124338704u, 3204250304u,
+2475035432u, 1120017626u,
+3873758287u, 1982999824u,
+2950794582u, 780634378u,
+2842141483u, 4029205195u,
+1656892865u, 3330993377u,
+80890710u, 1953796601u,
+3873078673u, 136118734u,
+2317676604u, 4199091610u,
+1864448181u, 3063437608u,
+1699452298u, 1403506686u,
+1513069466u, 2348491299u,
+4273657745u, 4055855649u,
+1805475756u, 2562064338u,
+973124563u, 4197091358u,
+172861513u, 2858726767u,
+4271866024u, 3071338162u,
+3590386266u, 2328277259u,
+1096050703u, 1189614342u,
+459509140u, 771592405u,
+817999971u, 3740825152u,
+520400189u, 1941874618u,
+185232757u, 4032960199u,
+3928245258u, 3527721294u,
+1301118856u, 752188080u,
+3512945009u, 308584855u,
+2105373972u, 752872278u,
+3823368815u, 3760952096u,
+4250142168u, 2565680167u,
+3646354146u, 1259957455u,
+1085857127u, 3471066607u,
+38924274u, 3770488806u,
+1083869477u, 3312508103u,
+71956383u, 3738784936u,
+3099963860u, 1255084262u,
+4286969992u, 3621849251u,
+1190908967u, 1831557743u,
+2363435042u, 54945052u,
+4059585566u, 4023974274u,
+1788578453u, 3442180039u,
+2534883189u, 2432427547u,
+3909757989u, 731996369u,
+4168347425u, 1356028512u,
+2741583197u, 1280920000u,
+312887059u, 3259015297u,
+3946278527u, 4135481831u,
+1281043691u, 1121403845u,
+3312292477u, 1819941269u,
+1741932545u, 3293015483u,
+2127558730u, 713121337u,
+2635469238u, 486003418u,
+4015067527u, 2976737859u,
+2108187161u, 927011680u,
+1970188338u, 4177613234u,
+1799789551u, 2118505126u,
+4134691985u, 1958963937u,
+1929210029u, 2555835851u,
+2768832862u, 910892050u,
+2567532373u, 4075249328u,
+86689814u, 3726640307u,
+1392137718u, 1240000030u,
+4104757832u, 3026358429u,
+313797689u, 1435798509u,
+3101500919u, 1241665335u,
+3573008472u, 3615577014u,
+3767659003u, 3134294021u,
+4063565523u, 2296824134u,
+1541946015u, 3087190425u,
+2693152531u, 2199672572u,
+2123763822u, 1034244398u,
+857839960u, 2515339233u,
+2228007483u, 1628096047u,
+2116502287u, 2502657424u,
+2809830736u, 460237542u,
+450205998u, 3646921704u,
+3818199357u, 1808504491u,
+1950698961u, 2069753399u,
+3657033172u, 3734547671u,
+4067859590u, 3292597295u,
+1106466069u, 356742959u,
+2469567432u, 3495418823u,
+183440071u, 3248055817u,
+3662626864u, 1750561299u,
+3926138664u, 4088592524u,
+567122118u, 3810297651u,
+992181339u, 3384018814u,
+3272124369u, 3177596743u,
+320086295u, 2316548367u,
+100741310u, 451656820u,
+4086604273u, 3759628395u,
+2553391092u, 1745659881u,
+3650357479u, 2390172694u,
+330172533u, 767377322u,
+526742034u, 4102497288u,
+2088767754u, 164402616u,
+2482632320u, 2352347393u,
+1873658044u, 3861555476u,
+2751052984u, 1767810825u,
+20037241u, 545143220u,
+2594532522u, 472304191u,
+3441135892u, 3323383489u,
+258785117u, 2977745165u,
+2781737565u, 2963590112u,
+2756998822u, 207428029u,
+2581558559u, 3824717027u,
+1258619503u, 3472047571u,
+2648427775u, 2360400900u,
+2393763818u, 2332399088u,
+3932701729u, 884421165u,
+1396468647u, 1377764574u,
+4061795938u, 1559119087u,
+3343596838u, 3604258095u,
+1435134775u, 1099809675u,
+908163739u, 1418405656u,
+368446627u, 3741651161u,
+3374512975u, 3542220540u,
+3244772570u, 200009340u,
+3198975081u, 2521038253u,
+4081637863u, 337070226u,
+3235259030u, 3897262827u,
+736956644u, 641040550u,
+644850146u, 1306761320u,
+4219448634u, 193750500u,
+3293278106u, 1383997679u,
+1242645122u, 4109252858u,
+450747727u, 3716617561u,
+362725793u, 2252520167u,
+3377483696u, 1788337208u,
+8130777u, 3226734120u,
+759239140u, 1012411364u,
+1658628529u, 2911512007u,
+1002580201u, 1681898320u,
+3039016929u, 4294520281u,
+367022558u, 3071359622u,
+3205848570u, 152989999u,
+3839042136u, 2357687350u,
+4273132307u, 3898950547u,
+1176841812u, 1314157485u,
+75443951u, 1027027239u,
+1858986613u, 2040551642u,
+36574105u, 2603059541u,
+3456147251u, 2137668425u,
+4077477194u, 3565689036u,
+491832241u, 363703593u,
+2579177168u, 3589545214u,
+265993036u, 1864569342u,
+4149035573u, 3189253455u,
+1072259310u, 3153745937u,
+923017956u, 490608221u,
+855846773u, 845706553u,
+1018226240u, 1604548872u,
+3833372385u, 3287246572u,
+2757959551u, 2452872151u,
+1553870564u, 1713154780u,
+2649450292u, 500120236u,
+84251717u, 661869670u,
+1444911517u, 2489716881u,
+2810524030u, 1561519055u,
+3884088359u, 2509890699u,
+4247155916u, 1005636939u,
+3224066062u, 2774151984u,
+2035978240u, 2514910366u,
+1478837908u, 3144450144u,
+2107011431u, 96459446u,
+3587732908u, 2389230590u,
+3287635953u, 250533792u,
+1235983679u, 4237425634u,
+3704645833u, 3882376657u,
+2976369049u, 1187061987u,
+276949224u, 4100839753u,
+1698347543u, 1629662314u,
+1556151829u, 3784939568u,
+427484362u, 4246879223u,
+3155311770u, 4285163791u,
+1693376813u, 124492786u,
+1858777639u, 3476334357u,
+1941442701u, 1121980173u,
+3485932087u, 820852908u,
+358032121u, 2511026735u,
+1873607283u, 2556067450u,
+2248275536u, 1528632094u,
+1535473864u, 556796152u,
+1499201704u, 1472623890u,
+1526518503u, 3692729434u,
+1476438092u, 2913077464u,
+335109599u, 2167614601u,
+4121131078u, 3158127917u,
+3051522276u, 4046477658u,
+2857717851u, 1863977403u,
+1341023343u, 692059110u,
+1802040304u, 990407433u,
+3285847572u, 319814144u,
+561105582u, 1540183799u,
+4052924496u, 2926590471u,
+2244539806u, 439121871u,
+3317903224u, 3178387550u,
+4265214507u, 82077489u,
+1978918971u, 4279668976u,
+128732476u, 2853224222u,
+464407878u, 4190838199u,
+997819001u, 3250520802u,
+2330081301u, 4095846095u,
+733509243u, 1583801700u,
+722314527u, 3552883023u,
+1403784280u, 432327540u,
+1877837196u, 3912423882u,
+505219998u, 696031431u,
+908238873u, 4189387259u,
+8759461u, 2540185277u,
+3385159748u, 381355877u,
+2519951681u, 1679786240u,
+2019419351u, 4051584612u,
+1933923923u, 3768201861u,
+1670133081u, 3454981037u,
+700836153u, 1675560450u,
+371560700u, 338262316u,
+847351840u, 2222395828u,
+3130433948u, 405251683u,
+3037574880u, 184098830u,
+453340528u, 1385561439u,
+2224044848u, 4071581802u,
+1431235296u, 5570097u,
+570114376u, 2287305551u,
+2272418128u, 803575837u,
+3943113491u, 414959787u,
+708083137u, 2452657767u,
+4019147902u, 3841480082u,
+3791794715u, 2965956183u,
+2763690963u, 2350937598u,
+3424361375u, 779434428u,
+1274947212u, 686105485u,
+3426668051u, 3692865672u,
+3057021940u, 2285701422u,
+349809124u, 1379278508u,
+3623750518u, 215970497u,
+1783152480u, 823305654u,
+216118434u, 1787189830u,
+3692048450u, 2272612521u,
+3032187389u, 4159715581u,
+1388133148u, 1611772864u,
+2544383526u, 552925303u,
+3420960112u, 3198900547u,
+3503230228u, 2603352423u,
+2318375898u, 4064071435u,
+3006227299u, 4194096960u,
+1283392422u, 1510460996u,
+174272138u, 3671038966u,
+1775955687u, 1719108984u,
+1763892006u, 1385029063u,
+4083790740u, 406757708u,
+684087286u, 531310503u,
+3329923157u, 3492083607u,
+1059031410u, 3037314475u,
+3105682208u, 3382290593u,
+2292208503u, 426380557u,
+97373678u, 3842309471u,
+777173623u, 3241407531u,
+303065016u, 1477104583u,
+4234905200u, 2512514774u,
+2649684057u, 1397502982u,
+1802596032u, 3973022223u,
+2543566442u, 3139578968u,
+3193669211u, 811750340u,
+4013496209u, 567361887u,
+4169410406u, 3622282782u,
+3403136990u, 2540585554u,
+895210040u, 3862229802u,
+1145435213u, 4146963980u,
+784952939u, 943914610u,
+573034522u, 464420660u,
+2356867109u, 3054347639u,
+3985088434u, 1911188923u,
+583391304u, 176468511u,
+2990150068u, 2338031599u,
+519948041u, 3181425568u,
+496106033u, 4110294665u,
+2736756930u, 1196757691u,
+1089679033u, 240953857u,
+3399092928u, 4040779538u,
+2843673626u, 240495962u,
+3017658263u, 3828377737u,
+4243717901u, 2448373688u,
+2759616657u, 2246245780u,
+308018483u, 4262383425u,
+2731780771u, 328023017u,
+2884443148u, 841480070u,
+3188015819u, 4051263539u,
+2298178908u, 2944209234u,
+1372958390u, 4164532914u,
+4074952232u, 1683612329u,
+2155036654u, 1872815858u,
+2041174279u, 2368092311u,
+206775997u, 2283918569u,
+645945606u, 115406202u,
+4206471368u, 3923500892u,
+2217060665u, 350160869u,
+706531239u, 2824302286u,
+509981657u, 1469342315u,
+140980u, 1891558063u,
+164887091u, 3094962711u,
+3437115622u, 13327420u,
+422986366u, 330624974u,
+3630863408u, 2425505046u,
+824008515u, 3543885677u,
+918718096u, 376390582u,
+3224043675u, 3724791476u,
+1837192976u, 2968738516u,
+3424344721u, 3187805406u,
+1550978788u, 1743089918u,
+4251270061u, 645016762u,
+3855037968u, 1928519266u,
+1373803416u, 2289007286u,
+1889218686u, 1610271373u,
+3059200728u, 2108753646u,
+582042641u, 812347242u,
+3188172418u, 191994904u,
+1343511943u, 2247006571u,
+463291708u, 2697254095u,
+1534175504u, 1106275740u,
+622521957u, 917121602u,
+4095777215u, 3955972648u,
+3852234638u, 2845309942u,
+3299763344u, 2864033668u,
+2554947496u, 799569078u,
+2551629074u, 1102873346u,
+2661022773u, 2006922227u,
+2900438444u, 1448194126u,
+1321567432u, 1983773590u,
+1237256330u, 3449066284u,
+1691553115u, 3274671549u,
+4271625619u, 2741371614u,
+3285899651u, 786322314u,
+1586632825u, 564385522u,
+2530557509u, 2974240289u,
+1244759631u, 3263135197u,
+3592389776u, 3570296884u,
+2749873561u, 521432811u,
+987586766u, 3206261120u,
+1327840078u, 4078716491u,
+1753812954u, 976892272u,
+1827135136u, 1781944746u,
+1328622957u, 1015377974u,
+3439601008u, 2209584557u,
+2482286699u, 1109175923u,
+874877499u, 2036083451u,
+483570344u, 1091877599u,
+4190721328u, 1129462471u,
+640035849u, 1867372700u,
+920761165u, 3273688770u,
+1623777358u, 3389003793u,
+3241132743u, 2734783008u,
+696674661u, 2502161880u,
+1646071378u, 1164309901u,
+350411888u, 1978005963u,
+2253937037u, 7371540u,
+989577914u, 3626554867u,
+3214796883u, 531343826u,
+398899695u, 1145247203u,
+1516846461u, 3656006011u,
+529303412u, 3318455811u,
+3062828129u, 1696355359u,
+3698796465u, 3155218919u,
+1457595996u, 3191404246u,
+1395609912u, 2917345728u,
+1237411891u, 1854985978u,
+1091884675u, 3504488111u,
+3109924189u, 1628881950u,
+3939149151u, 878608872u,
+778235395u, 1052990614u,
+903730231u, 2069566979u,
+2437686324u, 3163786257u,
+2257884264u, 2123173186u,
+939764916u, 2933010098u,
+1235300371u, 1256485167u,
+1950274665u, 2180372319u,
+2648400302u, 122035049u,
+1883344352u, 2083771672u,
+3712110541u, 321199441u,
+1896357377u, 508560958u,
+3066325351u, 2770847216u,
+3177982504u, 296902736u,
+1486926688u, 456842861u,
+601221482u, 3992583643u,
+2794121515u, 1533934172u,
+1706465470u, 4281971893u,
+2557027816u, 900741486u,
+227175484u, 550595824u,
+690918144u, 2825943628u,
+90375300u, 300318232u,
+1985329734u, 1440763373u,
+3670603707u, 2533900859u,
+3253901179u, 542270815u,
+3677388841u, 307706478u,
+2570910669u, 3320103693u,
+1273768482u, 1216399252u,
+1652924805u, 1043647584u,
+1120323676u, 639941430u,
+325675502u, 3652676161u,
+4241680335u, 1545838362u,
+1991398008u, 4100211814u,
+1097584090u, 3262252593u,
+2254324292u, 1765019121u,
+4060211241u, 2315856188u,
+3704419305u, 411263051u,
+238929055u, 3540688404u,
+3094544537u, 3250435765u,
+3460621305u, 1967599860u,
+2016157366u, 847389916u,
+1659615591u, 4020453639u,
+901109753u, 2682611693u,
+1661364280u, 177155177u,
+3210561911u, 3802058181u,
+797089608u, 3286110054u,
+2110358240u, 1353279028u,
+2479975820u, 471725410u,
+2219863904u, 3623364733u,
+3167128228u, 1052188336u,
+3656587111u, 721788662u,
+3061255808u, 1615375832u,
+924941453u, 2547780700u,
+3328169224u, 1310964134u,
+2701956286u, 4145497671u,
+1421461094u, 1221397398u,
+1589183618u, 1492533854u,
+449740816u, 2686506989u,
+3035198924u, 1682886232u,
+2529760244u, 3342031659u,
+1235084019u, 2151665147u,
+2315686577u, 3282027660u,
+1140138691u, 2754346599u,
+2091754612u, 1178454681u,
+4226896579u, 2942520471u,
+2122168506u, 3751680858u,
+3213794286u, 2601416506u,
+4142747914u, 3951404257u,
+4243249649u, 748595836u,
+4004834921u, 238887261u,
+1927321047u, 2217148444u,
+205977665u, 1885975275u,
+186020771u, 2367569534u,
+2941662631u, 2608559272u,
+3342096731u, 741809437u,
+1962659444u, 3539886328u,
+3036596491u, 2282550094u,
+2366462727u, 2748286642u,
+2144472852u, 1390394371u,
+1257385924u, 2205425874u,
+2119055686u, 46865323u,
+3597555910u, 3188438773u,
+2372320753u, 3641116924u,
+3116286108u, 2680722658u,
+3371014971u, 2058751609u,
+2966943726u, 2345078707u,
+2330535244u, 4013841927u,
+1169588594u, 857915866u,
+1875260989u, 3175831309u,
+3193475664u, 1955181430u,
+923161569u, 4068653043u,
+776445899u, 954196929u,
+61509556u, 4248237857u,
+3808667664u, 581227317u,
+2893240187u, 4159497403u,
+4212264930u, 3973886195u,
+2077539039u, 851579036u,
+2957587591u, 772351886u,
+1173659554u, 946748363u,
+2794103714u, 2094375930u,
+4234750213u, 3671645488u,
+2614250782u, 2620465358u,
+3122317317u, 2365436865u,
+3393973390u, 523513960u,
+3645735309u, 2766686992u,
+2023960931u, 2312244996u,
+1875932218u, 3253711056u,
+3622416881u, 3274929205u,
+612094988u, 1555465129u,
+2114270406u, 3553762793u,
+1832633644u, 1087551556u,
+3306195841u, 1702313921u,
+3675066046u, 1735998785u,
+1690923980u, 1482649756u,
+1171351291u, 2043136409u,
+1962596992u, 461214626u,
+3278253346u, 1392428048u,
+3744621107u, 1028502697u,
+3991171462u, 1014064003u,
+3642345425u, 3186995039u,
+6114625u, 3359104346u,
+414856965u, 2814387514u,
+3583605071u, 2497896367u,
+1024572712u, 1927582962u,
+2892797583u, 845302635u,
+328548052u, 1523379748u,
+3392622118u, 1347167673u,
+1012316581u, 37767602u,
+2647726017u, 1070326065u,
+2075035198u, 4202817168u,
+2502924707u, 2612406822u,
+2187115553u, 1180137213u,
+701024148u, 1481965992u,
+3223787553u, 2083541843u,
+203230202u, 3876887380u,
+1334816273u, 2870251538u,
+2186205850u, 3985213979u,
+333533378u, 806507642u,
+1010064531u, 713520765u,
+3084131515u, 2637421459u,
+1703168933u, 1517562266u,
+4089081247u, 3231042924u,
+3079916123u, 3154574447u,
+2253948262u, 1725190035u,
+2452539325u, 1343734533u,
+213706059u, 2519409656u,
+108055211u, 2916327746u,
+587001593u, 1917607088u,
+4202913084u, 926304016u,
+469255411u, 4042080256u,
+3498936874u, 246692543u,
+495780578u, 438717281u,
+2259272650u, 4011324645u,
+2836854664u, 2317249321u,
+946828752u, 1280403658u,
+1905648354u, 2034241661u,
+774652981u, 1285694082u,
+2200307766u, 2158671727u,
+1135162148u, 232040752u,
+397012087u, 1717527689u,
+1720414106u, 918797022u,
+2580119304u, 3568069742u,
+2904461070u, 3893453420u,
+973817938u, 667499332u,
+3785870412u, 2088861715u,
+1565179401u, 600903026u,
+591806775u, 3512242245u,
+997964515u, 2339605347u,
+1134342772u, 3234226304u,
+4084179455u, 302315791u,
+2445626811u, 2590372496u,
+345572299u, 2274770442u,
+3600587867u, 3706939009u,
+1430507980u, 2656330434u,
+1079209397u, 2122849632u,
+1423705223u, 3826321888u,
+3683385276u, 1057038163u,
+1242840526u, 3987000643u,
+2398253089u, 1538190921u,
+1295898647u, 3570196893u,
+3065138774u, 3111336863u,
+2524949549u, 4203895425u,
+3025864372u, 968800353u,
+1023721001u, 3763083325u,
+526350786u, 635552097u,
+2308118370u, 2166472723u,
+2196937373u, 2643841788u,
+3040011470u, 4010301879u,
+2782379560u, 3474682856u,
+4201389782u, 4223278891u,
+1457302296u, 2251842132u,
+1090062008u, 3188219189u,
+292733931u, 1424229089u,
+1590782640u, 1365212370u,
+3975957073u, 3982969588u,
+2927147928u, 1048291071u,
+2766680094u, 884908196u,
+35237839u, 2221180633u,
+2490333812u, 4098360768u,
+4029081103u, 3490831871u,
+2392516272u, 3455379186u,
+3948800722u, 335456628u,
+2105117968u, 4181629008u,
+1044201772u, 3335754111u,
+540133451u, 3313113759u,
+3786107905u, 2627207327u,
+3540337875u, 3473113388u,
+3430536378u, 2514123129u,
+2124531276u, 3872633376u,
+3272957388u, 3501994650u,
+2418881542u, 487365389u,
+3877672368u, 1512866656u,
+3486531087u, 2102955203u,
+1136054817u, 3004241477u,
+1549075351u, 1302002008u,
+3936430045u, 2258587644u,
+4109233936u, 3679809321u,
+3467083076u, 2484463221u,
+1594979755u, 529218470u,
+3527024461u, 1147434678u,
+106799023u, 1823161970u,
+1704656738u, 1675883700u,
+3308746763u, 1875093248u,
+1352868568u, 1898561846u,
+2508994984u, 3177750780u,
+4217929592u, 400784472u,
+80090315u, 3564414786u,
+3841585648u, 3379293868u,
+160353261u, 2413172925u,
+2378499279u, 673436726u,
+1505702418u, 1330977363u,
+1853298225u, 3201741245u,
+2135714208u, 4069554166u,
+3715612384u, 3692488887u,
+3680311316u, 4274382900u,
+914186796u, 2264886523u,
+3869634032u, 1254199592u,
+1131020455u, 194781179u,
+429923922u, 2763792336u,
+2052895198u, 3997373194u,
+3440090658u, 2165746386u,
+1575500242u, 3463310191u,
+2064974716u, 3779513671u,
+3106421434u, 880320527u,
+3281914119u, 286569042u,
+3909096631u, 122359727u,
+1429837716u, 252230074u,
+4111461225u, 762273136u,
+93658514u, 2766407143u,
+3623657004u, 3869801679u,
+3925695921u, 2390397316u,
+2499025338u, 2741806539u,
+2507199021u, 1659221866u,
+361292116u, 4048761557u,
+3797133396u, 1517903247u,
+3121647246u, 3884308578u,
+1697201500u, 1558800262u,
+4150812360u, 3161302278u,
+2610217849u, 641564641u,
+183814518u, 2075245419u,
+611996508u, 2223461433u,
+329123979u, 121860586u,
+860985829u, 1137889144u,
+4018949439u, 2904348960u,
+947795261u, 1992594155u,
+4255427501u, 2281583851u,
+2892637604u, 1478186924u,
+3050771207u, 2767035539u,
+373510582u, 1963520320u,
+3763848370u, 3756817798u,
+627269409u, 1806905031u,
+1814444610u, 3646665053u,
+1822693920u, 278515794u,
+584050483u, 4142579188u,
+2149745808u, 3193071606u,
+1179706341u, 2693495182u,
+3259749808u, 644172091u,
+880509048u, 3340630542u,
+3365160815u, 2384445068u,
+3053081915u, 2840648309u,
+1986990122u, 1084703471u,
+2370410550u, 1627743573u,
+2244943480u, 4057483496u,
+2611595995u, 2470013639u,
+4024732359u, 3987190386u,
+873421687u, 2447660175u,
+3226583022u, 767655877u,
+2528024413u, 1962070688u,
+1233635843u, 2163464207u,
+659054446u, 854207134u,
+258410943u, 4197831420u,
+2515400215u, 3100476924u,
+1961549594u, 2219491151u,
+3997658851u, 163850514u,
+470325051u, 2598261204u,
+3052145580u, 59836528u,
+1376188597u, 966733415u,
+850667549u, 3622479237u,
+1083731990u, 1525777459u,
+4005126532u, 1428155540u,
+2781907007u, 943739431u,
+1493961005u, 2839096988u,
+2000057832u, 1941829603u,
+1901484772u, 939810041u,
+3377407371u, 3090115837u,
+3310840540u, 2068409688u,
+3261383939u, 2212130277u,
+2594774045u, 2912652418u,
+4179816101u, 3534504531u,
+3349254805u, 2796552902u,
+1385421283u, 4259908631u,
+3714780837u, 3070073945u,
+3372846298u, 3835884044u,
+3047965714u, 3009018735u,
+744091167u, 1861124263u,
+2764936304u, 1338171648u,
+4222019554u, 1395200692u,
+1371426007u, 3338031581u,
+2525665319u, 4196233786u,
+2332743921u, 1474702008u,
+2274266301u, 4255175517u,
+2290169528u, 1793910997u,
+2188254024u, 354202001u,
+3864458796u, 4280290498u,
+1554419340u, 1733094688u,
+2010552302u, 1561807039u,
+664313606u, 2548990879u,
+1084699349u, 3233936866u,
+973895284u, 2386881969u,
+1831995860u, 2961465052u,
+1428704144u, 3269904970u,
+231648253u, 2602483763u,
+4125013173u, 3319187387u,
+3347011944u, 1892898231u,
+4019114049u, 868879116u,
+4085937045u, 2378411019u,
+1072588531u, 3547435717u,
+2208070766u, 1069899078u,
+3142980597u, 2337088907u,
+1593338562u, 919414554u,
+688077849u, 3625708135u,
+1472447348u, 1947711896u,
+3953006207u, 877438080u,
+845995820u, 3150361443u,
+3053496713u, 2484577841u,
+224271045u, 2914958001u,
+2682612949u, 806655563u,
+2436224507u, 1907729235u,
+2920583824u, 1251814062u,
+2070814520u, 4034325578u,
+497847539u, 2714317144u,
+385182008u, 640855184u,
+1327075087u, 1062468773u,
+1757405994u, 1374270191u,
+4263183176u, 3041193150u,
+1037871524u, 3633173991u,
+4231821821u, 2830131945u,
+3505072908u, 2830570613u,
+4195208715u, 575398021u,
+3992840257u, 3691788221u,
+1949847968u, 2999344380u,
+3183782163u, 3723754342u,
+759716128u, 3284107364u,
+1714496583u, 15918244u,
+820509475u, 2553936299u,
+2201876606u, 4237151697u,
+2605688266u, 3253705097u,
+1008333207u, 712158730u,
+1722280252u, 1933868287u,
+4152736859u, 2097020806u,
+584426382u, 2836501956u,
+2522777566u, 1996172430u,
+2122199776u, 1069285218u,
+1474209360u, 690831894u,
+107482532u, 3695525410u,
+670591796u, 768977505u,
+2412057331u, 3647886687u,
+3110327607u, 1072658422u,
+379861934u, 1557579480u,
+4124127129u, 2271365865u,
+3880613089u, 739218494u,
+547346027u, 388559045u,
+3147335977u, 176230425u,
+3094853730u, 2554321205u,
+1495176194u, 4093461535u,
+3521297827u, 4108148413u,
+1913727929u, 1177947623u,
+1911655402u, 1053371241u,
+3265708874u, 1266515850u,
+1045540427u, 3194420196u,
+3717104621u, 1144474110u,
+1464392345u, 52070157u,
+4144237690u, 3350490823u,
+4166253320u, 2747410691u,
+};
+
+// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
+bool Test(int offset, int len = 0) {
+#undef Check
+#undef IsAlive
+
+#define Check(x) do { \
+ const uint32_t actual = (x), e = expected[index++]; \
+ bool ok = actual == e; \
+ if (!ok) { \
+ cerr << "expected " << hex << e << " but got " << actual << endl; \
+ ++errors; \
+ } \
+ assert(ok); \
+} while (0)
+
+#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
+
+ // After the following line is where the uses of "Check" and such will go.
+ static int index = 0;
+if (offset == -1) { int alive = 0; { uint64_t h = farmhashna::Hash64WithSeeds(data, len++, SEED0, SEED1); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } { uint64_t h = farmhashna::Hash64WithSeed(data, len++, SEED); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } { uint64_t h = farmhashna::Hash64(data, len++); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } len -= 3; return alive > 0; }
+{ uint64_t h = farmhashna::Hash64WithSeeds(data + offset, len, SEED0, SEED1); Check(h >> 32); Check((h << 32) >> 32); }
+{ uint64_t h = farmhashna::Hash64WithSeed(data + offset, len, SEED); Check(h >> 32); Check((h << 32) >> 32); }
+{ uint64_t h = farmhashna::Hash64(data + offset, len); Check(h >> 32); Check((h << 32) >> 32); }
+
+ return true;
+#undef Check
+#undef IsAlive
+}
+
+int RunTest() {
+ Setup();
+ int i = 0;
+ cout << "Running farmhashnaTest";
+ if (!Test(-1)) {
+ cout << "... Unavailable\n";
+ return NoteErrors();
+ }
+ // Good. The function is attempting to hash, so run the full test.
+ int errors_prior_to_test = errors;
+ for ( ; i < kTestSize - 1; i++) {
+ Test(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ Test(0, i);
+ }
+ Test(0, kDataSize);
+ cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
+ return NoteErrors();
+}
+
+#else
+
+// After the following line is where the code to print hash codes will go.
+void Dump(int offset, int len) {
+{ uint64_t h = farmhashna::Hash64WithSeeds(data + offset, len, SEED0, SEED1); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
+{ uint64_t h = farmhashna::Hash64WithSeed(data + offset, len, SEED); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
+{ uint64_t h = farmhashna::Hash64(data + offset, len); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
+}
+
+#endif
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+
+} // namespace farmhashnaTest
+
+#if !TESTING
+int main(int argc, char** argv) {
+ Setup();
+ cout << "uint32_t expected[] = {\n";
+ int i = 0;
+ for ( ; i < kTestSize - 1; i++) {
+ farmhashnaTest::Dump(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ farmhashnaTest::Dump(0, i);
+ }
+ farmhashnaTest::Dump(0, kDataSize);
+ cout << "};\n";
+}
+#endif
+#ifndef FARMHASH_SELF_TEST_GUARD
+#define FARMHASH_SELF_TEST_GUARD
+#include <cstdio>
+#include <iostream>
+#include <string.h>
+
+using std::cout;
+using std::cerr;
+using std::endl;
+using std::hex;
+
+static const uint64_t kSeed0 = 1234567;
+static const uint64_t kSeed1 = k0;
+static const int kDataSize = 1 << 20;
+static const int kTestSize = 300;
+#define kSeed128 Uint128(kSeed0, kSeed1)
+
+static char data[kDataSize];
+
+static int completed_self_tests = 0;
+static int errors = 0;
+
+// Initialize data to pseudorandom values.
+void Setup() {
+ if (completed_self_tests == 0) {
+ uint64_t a = 9;
+ uint64_t b = 777;
+ for (int i = 0; i < kDataSize; i++) {
+ a += b;
+ b += a;
+ a = (a ^ (a >> 41)) * k0;
+ b = (b ^ (b >> 41)) * k0 + i;
+ uint8_t u = b >> 37;
+ memcpy(data + i, &u, 1); // uint8_t -> char
+ }
+ }
+}
+
+int NoteErrors() {
+#define NUM_SELF_TESTS 9
+ if (++completed_self_tests == NUM_SELF_TESTS)
+ std::exit(errors > 0);
+ return errors;
+}
+
+template <typename T> inline bool IsNonZero(T x) {
+ return x != 0;
+}
+
+template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
+ return x != Uint128(0, 0);
+}
+
+#endif // FARMHASH_SELF_TEST_GUARD
+
+namespace farmhashntTest {
+
+uint32_t CreateSeed(int offset, int salt) {
+ uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h += static_cast<uint32_t>(offset & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ return h;
+}
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+#define SEED CreateSeed(offset, -1)
+#define SEED0 CreateSeed(offset, 0)
+#define SEED1 CreateSeed(offset, 1)
+
+#undef TESTING
+#define TESTING 1
+#if TESTING
+uint32_t expected[] = {
+2681724312u,
+797982799u,
+921001710u,
+2134990486u,
+2244477846u,
+2992121793u,
+3943596029u,
+452431531u,
+2557197665u,
+2532580744u,
+3099673830u,
+3696623795u,
+3281581178u,
+1882212500u,
+275903667u,
+3033004529u,
+1402319660u,
+2699376854u,
+4222949502u,
+1712034059u,
+1330324210u,
+2921867846u,
+1728752234u,
+326029180u,
+3349570000u,
+1612122221u,
+1646032583u,
+1432476832u,
+3552092450u,
+1499109081u,
+1554038301u,
+3190844552u,
+540224401u,
+489963606u,
+1562872448u,
+2128624475u,
+1262831810u,
+1672724608u,
+2077310004u,
+1911523866u,
+294527927u,
+1389770549u,
+2026137563u,
+629449419u,
+2489287368u,
+645684964u,
+230403464u,
+3272648435u,
+165370827u,
+1230085527u,
+3628174014u,
+851743255u,
+1554380634u,
+3667013118u,
+2290487377u,
+1909203251u,
+1498556724u,
+4165088768u,
+197618179u,
+914413116u,
+1913303225u,
+3117299654u,
+1357272220u,
+507436733u,
+1413396341u,
+146044391u,
+429095991u,
+3056862311u,
+366414107u,
+2293458109u,
+1684583131u,
+1170404994u,
+520792961u,
+1577421232u,
+4033596884u,
+4229339322u,
+3242407770u,
+2649785113u,
+816692935u,
+3555213933u,
+517646945u,
+2180594090u,
+3047062993u,
+2391606125u,
+382936554u,
+788479970u,
+2826990641u,
+3167748333u,
+1758123094u,
+389974094u,
+3338548567u,
+2583576230u,
+3198590202u,
+4155628142u,
+542201663u,
+2856634168u,
+3948351189u,
+4194218315u,
+1467786451u,
+2743592929u,
+1062268187u,
+3810665822u,
+2560479831u,
+997658837u,
+3067277639u,
+1211737169u,
+59581167u,
+1389679610u,
+4189944477u,
+100876854u,
+2062343506u,
+3088828656u,
+3284356565u,
+3130054947u,
+3532596884u,
+3887208531u,
+259034107u,
+3233195759u,
+3200749877u,
+760633989u,
+1115203611u,
+1516407838u,
+1778459926u,
+2146672889u,
+2457048126u,
+2217471853u,
+862072556u,
+3745267835u,
+701920051u,
+581695350u,
+1410111809u,
+3326135446u,
+2187968410u,
+4267859263u,
+479241367u,
+2868987960u,
+704325635u,
+1418509533u,
+735688735u,
+3283299459u,
+813690332u,
+1439630796u,
+3195309868u,
+1616408198u,
+3254795114u,
+2799925823u,
+3929484338u,
+1798536177u,
+4205965408u,
+1499475160u,
+4247675634u,
+3779953975u,
+785893184u,
+2778575413u,
+1160134629u,
+823113169u,
+4116162021u,
+4167766971u,
+2487440590u,
+4004655503u,
+4044418876u,
+1462554406u,
+2011102035u,
+4265993528u,
+576405853u,
+4038839101u,
+2425317635u,
+1401013391u,
+3062418115u,
+3167030094u,
+2602636307u,
+4264167741u,
+4017058800u,
+1029665228u,
+4036354071u,
+2670703363u,
+688472265u,
+1054670286u,
+338058159u,
+1539305024u,
+146827036u,
+4060134777u,
+2502815838u,
+1603444633u,
+2448966429u,
+3891353218u,
+1082330589u,
+201837927u,
+2848283092u,
+883849006u,
+1982110346u,
+541496720u,
+133643215u,
+3847827123u,
+4015671361u,
+2849988118u,
+3452457457u,
+2102063419u,
+3281002516u,
+1539151988u,
+1147951686u,
+2005032160u,
+2415262714u,
+116647396u,
+1029284767u,
+2159170082u,
+1919171906u,
+2017579106u,
+2473524405u,
+1694443528u,
+3671562289u,
+505662155u,
+1019936943u,
+1511077569u,
+773792826u,
+2089123665u,
+484732447u,
+1120017626u,
+2809286837u,
+4029205195u,
+1097806406u,
+136118734u,
+4017075736u,
+1403506686u,
+1516736273u,
+2562064338u,
+2984955003u,
+3071338162u,
+1923531348u,
+771592405u,
+2586632018u,
+4032960199u,
+2687561076u,
+308584855u,
+1692079268u,
+2565680167u,
+3674576684u,
+3770488806u,
+69201295u,
+1255084262u,
+3593730713u,
+54945052u,
+1939595371u,
+2432427547u,
+2295501078u,
+1280920000u,
+82177963u,
+1121403845u,
+2889101923u,
+713121337u,
+1747052377u,
+927011680u,
+4142246789u,
+1958963937u,
+1636932722u,
+4075249328u,
+2025886508u,
+3026358429u,
+1845587644u,
+3615577014u,
+1363253259u,
+3087190425u,
+341851980u,
+2515339233u,
+1276595523u,
+460237542u,
+4198897105u,
+2069753399u,
+4278599955u,
+356742959u,
+3735275001u,
+1750561299u,
+668829411u,
+3384018814u,
+4233785523u,
+451656820u,
+107312677u,
+2390172694u,
+1216645846u,
+164402616u,
+1689811113u,
+1767810825u,
+1397772514u,
+3323383489u,
+2986430557u,
+207428029u,
+2260498180u,
+2360400900u,
+1263709570u,
+1377764574u,
+4252610345u,
+1099809675u,
+2776960536u,
+3542220540u,
+3752806924u,
+337070226u,
+3267551635u,
+1306761320u,
+2220373824u,
+4109252858u,
+896322512u,
+1788337208u,
+1336556841u,
+2911512007u,
+3712582785u,
+3071359622u,
+2561488770u,
+3898950547u,
+536047554u,
+2040551642u,
+3528794619u,
+3565689036u,
+1197100813u,
+1864569342u,
+3329594980u,
+490608221u,
+1174785921u,
+3287246572u,
+2163330264u,
+500120236u,
+2520062970u,
+1561519055u,
+4042710240u,
+2774151984u,
+3160666939u,
+96459446u,
+1878067032u,
+4237425634u,
+2952135524u,
+4100839753u,
+1265237690u,
+4246879223u,
+834830418u,
+3476334357u,
+4277111759u,
+2511026735u,
+3065234219u,
+556796152u,
+198182691u,
+2913077464u,
+1535115487u,
+4046477658u,
+140762681u,
+990407433u,
+2198985327u,
+2926590471u,
+559702706u,
+82077489u,
+1096697687u,
+4190838199u,
+3046872820u,
+1583801700u,
+2185339100u,
+3912423882u,
+3703603898u,
+2540185277u,
+1446869792u,
+4051584612u,
+2719373510u,
+1675560450u,
+1996164093u,
+405251683u,
+2864244470u,
+4071581802u,
+2028708916u,
+803575837u,
+557660441u,
+3841480082u,
+255451671u,
+779434428u,
+3452203069u,
+2285701422u,
+1568745354u,
+823305654u,
+3184047862u,
+4159715581u,
+3160134214u,
+3198900547u,
+1566527339u,
+4194096960u,
+1496132623u,
+1719108984u,
+2584236470u,
+531310503u,
+3456882941u,
+3382290593u,
+467441309u,
+3241407531u,
+2540270567u,
+1397502982u,
+3348545480u,
+811750340u,
+1017047954u,
+2540585554u,
+3531646869u,
+943914610u,
+1903578924u,
+1911188923u,
+241574049u,
+3181425568u,
+3529565564u,
+240953857u,
+2964595704u,
+3828377737u,
+4260564140u,
+4262383425u,
+383233885u,
+4051263539u,
+919677938u,
+1683612329u,
+4204155962u,
+2283918569u,
+4153726847u,
+350160869u,
+1387233546u,
+1891558063u,
+740563169u,
+330624974u,
+2948665536u,
+376390582u,
+3799363969u,
+3187805406u,
+2263421398u,
+1928519266u,
+2746577402u,
+2108753646u,
+768287270u,
+2247006571u,
+212490675u,
+917121602u,
+2549835613u,
+2864033668u,
+3738062408u,
+2006922227u,
+2616619070u,
+3449066284u,
+431292293u,
+786322314u,
+1415970351u,
+3263135197u,
+2954777083u,
+3206261120u,
+2287507921u,
+1781944746u,
+4081586725u,
+1109175923u,
+1813855658u,
+1129462471u,
+1037031473u,
+3389003793u,
+3122687303u,
+1164309901u,
+3193251135u,
+3626554867u,
+3071568023u,
+3656006011u,
+1167681812u,
+3155218919u,
+2704165015u,
+1854985978u,
+1712976649u,
+878608872u,
+4155949943u,
+3163786257u,
+1626463554u,
+1256485167u,
+582664250u,
+2083771672u,
+804336148u,
+2770847216u,
+1674051445u,
+3992583643u,
+2966108111u,
+900741486u,
+4014551783u,
+300318232u,
+3517585534u,
+542270815u,
+760762191u,
+1216399252u,
+643179562u,
+3652676161u,
+2990167340u,
+3262252593u,
+2134299399u,
+411263051u,
+1342880802u,
+1967599860u,
+853593042u,
+2682611693u,
+850464484u,
+3286110054u,
+3842907484u,
+3623364733u,
+3693536939u,
+1615375832u,
+2318423400u,
+4145497671u,
+1728968857u,
+2686506989u,
+1502282913u,
+2151665147u,
+3651607391u,
+1178454681u,
+4146839064u,
+2601416506u,
+1448097974u,
+238887261u,
+4093725287u,
+2367569534u,
+679517009u,
+3539886328u,
+3086277222u,
+1390394371u,
+119173722u,
+1766260771u,
+751439914u,
+215917713u,
+2656990891u,
+1570750352u,
+3533987737u,
+3576119563u,
+963183826u,
+3796810515u,
+136547246u,
+2592925324u,
+427154472u,
+1228758574u,
+1464255968u,
+2984611177u,
+2001585786u,
+1525438381u,
+1348536411u,
+2861338018u,
+764077711u,
+3785343245u,
+457568934u,
+4104954272u,
+2381948487u,
+3148473363u,
+2180270337u,
+1387729170u,
+951677556u,
+2721005055u,
+66786703u,
+1149351924u,
+1895026827u,
+3711056516u,
+3638638708u,
+2263003308u,
+3448840877u,
+225333538u,
+3797521928u,
+3262952567u,
+2078619498u,
+1178073973u,
+3288261538u,
+1496966875u,
+2481012988u,
+114945840u,
+1632780103u,
+2087949619u,
+3787017905u,
+2575395164u,
+2971726178u,
+3642087909u,
+3894199764u,
+203853421u,
+425935223u,
+3565833278u,
+1748785729u,
+580966986u,
+2124704694u,
+1107045577u,
+1067532701u,
+1406028344u,
+18613994u,
+3476683808u,
+3762914298u,
+1844996900u,
+904215228u,
+1118521573u,
+3657647605u,
+3136157065u,
+2287683323u,
+126005630u,
+3555092974u,
+49515858u,
+1010661841u,
+1902040126u,
+1400735275u,
+2771676666u,
+2225229957u,
+3454177594u,
+2883475137u,
+4144472319u,
+1051332394u,
+542648229u,
+1669710469u,
+553041029u,
+584127807u,
+2993670925u,
+3587959456u,
+1745399498u,
+1404723176u,
+1334333531u,
+3239516985u,
+1275954779u,
+367320647u,
+3684418197u,
+4030809053u,
+484559105u,
+4255931645u,
+4271715616u,
+3171911678u,
+928543347u,
+2159512867u,
+313902234u,
+647086234u,
+577214736u,
+1130129573u,
+995791646u,
+1645086060u,
+4122335794u,
+1064648931u,
+2752145076u,
+3312498873u,
+4238535494u,
+1471227427u,
+633688562u,
+1959779970u,
+766642813u,
+1380896111u,
+3647601207u,
+1733961041u,
+521947915u,
+189164145u,
+486382294u,
+3770038872u,
+3235740744u,
+1912506671u,
+2276864677u,
+1588060152u,
+2504457929u,
+1471020554u,
+3623212998u,
+3026631806u,
+2342164722u,
+1674890530u,
+3011542850u,
+3549160092u,
+4290680005u,
+3943068002u,
+2273781461u,
+2127663659u,
+1646681121u,
+447810651u,
+2366308558u,
+970504950u,
+2008155560u,
+2695940969u,
+3444688454u,
+1739318893u,
+2683090634u,
+2774816580u,
+437560100u,
+512012738u,
+3305170944u,
+665292744u,
+3580039116u,
+1579404983u,
+3397891494u,
+710590371u,
+2514565805u,
+3624609754u,
+3516075816u,
+1314000850u,
+1935166880u,
+3257747610u,
+3776931214u,
+3183054185u,
+675129307u,
+3333261712u,
+1154611403u,
+2759854023u,
+1963228038u,
+505138315u,
+1803966773u,
+4032705384u,
+798395739u,
+3473799845u,
+476400898u,
+602972493u,
+3289878097u,
+2520311409u,
+3214794876u,
+748160407u,
+1326769504u,
+902775872u,
+1372805534u,
+1213925114u,
+3009384989u,
+3781981134u,
+2835608783u,
+2716786748u,
+1669490957u,
+1089334066u,
+250756920u,
+4041016629u,
+2495807367u,
+2008251381u,
+106212622u,
+1927268995u,
+2251978818u,
+3788056262u,
+3678660147u,
+2656772270u,
+1997584981u,
+2668998785u,
+2954162084u,
+845687881u,
+776018378u,
+2066910012u,
+918315064u,
+};
+
+// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
+bool Test(int offset, int len = 0) {
+#undef Check
+#undef IsAlive
+
+#define Check(x) do { \
+ const uint32_t actual = (x), e = expected[index++]; \
+ bool ok = actual == e; \
+ if (!ok) { \
+ cerr << "expected " << hex << e << " but got " << actual << endl; \
+ ++errors; \
+ } \
+ assert(ok); \
+} while (0)
+
+#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
+
+ // After the following line is where the uses of "Check" and such will go.
+ static int index = 0;
+if (offset == -1) { int alive = 0; IsAlive(farmhashnt::Hash32WithSeed(data, len++, SEED)); IsAlive(farmhashnt::Hash32(data, len++)); IsAlive(farmhashnt::Hash32(data, len++)); len -= 3; return alive > 0; }
+Check(farmhashnt::Hash32WithSeed(data + offset, len, SEED));
+Check(farmhashnt::Hash32(data + offset, len));
+
+ return true;
+#undef Check
+#undef IsAlive
+}
+
+int RunTest() {
+ Setup();
+ int i = 0;
+ cout << "Running farmhashntTest";
+ if (!Test(-1)) {
+ cout << "... Unavailable\n";
+ return NoteErrors();
+ }
+ // Good. The function is attempting to hash, so run the full test.
+ int errors_prior_to_test = errors;
+ for ( ; i < kTestSize - 1; i++) {
+ Test(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ Test(0, i);
+ }
+ Test(0, kDataSize);
+ cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
+ return NoteErrors();
+}
+
+#else
+
+// After the following line is where the code to print hash codes will go.
+void Dump(int offset, int len) {
+cout << farmhashnt::Hash32WithSeed(data + offset, len, SEED) << "u," << endl;
+cout << farmhashnt::Hash32(data + offset, len) << "u," << endl;
+}
+
+#endif
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+
+} // namespace farmhashntTest
+
+#if !TESTING
+int main(int argc, char** argv) {
+ Setup();
+ cout << "uint32_t expected[] = {\n";
+ int i = 0;
+ for ( ; i < kTestSize - 1; i++) {
+ farmhashntTest::Dump(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ farmhashntTest::Dump(0, i);
+ }
+ farmhashntTest::Dump(0, kDataSize);
+ cout << "};\n";
+}
+#endif
+#ifndef FARMHASH_SELF_TEST_GUARD
+#define FARMHASH_SELF_TEST_GUARD
+#include <cstdio>
+#include <iostream>
+#include <string.h>
+
+using std::cout;
+using std::cerr;
+using std::endl;
+using std::hex;
+
+static const uint64_t kSeed0 = 1234567;
+static const uint64_t kSeed1 = k0;
+static const int kDataSize = 1 << 20;
+static const int kTestSize = 300;
+#define kSeed128 Uint128(kSeed0, kSeed1)
+
+static char data[kDataSize];
+
+static int completed_self_tests = 0;
+static int errors = 0;
+
+// Initialize data to pseudorandom values.
+void Setup() {
+ if (completed_self_tests == 0) {
+ uint64_t a = 9;
+ uint64_t b = 777;
+ for (int i = 0; i < kDataSize; i++) {
+ a += b;
+ b += a;
+ a = (a ^ (a >> 41)) * k0;
+ b = (b ^ (b >> 41)) * k0 + i;
+ uint8_t u = b >> 37;
+ memcpy(data + i, &u, 1); // uint8_t -> char
+ }
+ }
+}
+
+int NoteErrors() {
+#define NUM_SELF_TESTS 9
+ if (++completed_self_tests == NUM_SELF_TESTS)
+ std::exit(errors > 0);
+ return errors;
+}
+
+template <typename T> inline bool IsNonZero(T x) {
+ return x != 0;
+}
+
+template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
+ return x != Uint128(0, 0);
+}
+
+#endif // FARMHASH_SELF_TEST_GUARD
+
+namespace farmhashsaTest {
+
+uint32_t CreateSeed(int offset, int salt) {
+ uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h += static_cast<uint32_t>(offset & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ return h;
+}
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+#define SEED CreateSeed(offset, -1)
+#define SEED0 CreateSeed(offset, 0)
+#define SEED1 CreateSeed(offset, 1)
+
+#undef TESTING
+#define TESTING 1
+#if TESTING
+uint32_t expected[] = {
+4223616069u,
+3696677242u,
+4081014168u,
+2576519988u,
+2212771159u,
+1112731063u,
+1020067935u,
+3955445564u,
+1451961420u,
+653440099u,
+31917516u,
+2957164615u,
+2590087362u,
+3879448744u,
+176305566u,
+2447367541u,
+1359016305u,
+3363804638u,
+1117290165u,
+1062549743u,
+2437877004u,
+1894455839u,
+673206794u,
+3486923651u,
+3269862919u,
+2303349487u,
+1380660650u,
+595525107u,
+1525325287u,
+2025609358u,
+176408838u,
+1592885012u,
+864896482u,
+2101378090u,
+3489229104u,
+2118965695u,
+581644891u,
+2718789079u,
+631613207u,
+4228658372u,
+3867875546u,
+3531368319u,
+3804516756u,
+3317755099u,
+1619744564u,
+2884717286u,
+1088213445u,
+2667691076u,
+3727873235u,
+2330406762u,
+858590707u,
+123802208u,
+4150036245u,
+182283099u,
+1478882570u,
+3282617403u,
+819171187u,
+1172627392u,
+4254302102u,
+2957028020u,
+437030323u,
+2452147680u,
+2868246750u,
+3530169402u,
+3154852132u,
+215019192u,
+357580983u,
+1354454461u,
+1108813287u,
+2324008118u,
+2315997713u,
+4181601562u,
+1360882441u,
+92423273u,
+3048866755u,
+3369188505u,
+3664371439u,
+2920710428u,
+1027891570u,
+2653166430u,
+3461888315u,
+1475780447u,
+292769636u,
+1737473313u,
+4064110516u,
+4170160075u,
+762850927u,
+3630603695u,
+2803307356u,
+844987665u,
+460980967u,
+3005635467u,
+2802568977u,
+588668033u,
+2148940781u,
+3239099984u,
+1266953698u,
+3197808789u,
+3519942533u,
+2511995334u,
+2553810188u,
+871667697u,
+1358675720u,
+1499319171u,
+2044931270u,
+1210355103u,
+807152540u,
+3262320756u,
+2810214575u,
+1813386141u,
+4089465863u,
+903928165u,
+1388899322u,
+3209183659u,
+834536144u,
+2733354550u,
+2742289921u,
+3689042563u,
+2655593281u,
+4169686303u,
+415985561u,
+138892376u,
+516115393u,
+65683883u,
+4162865100u,
+889944635u,
+313566528u,
+3346420907u,
+1504303591u,
+2256809275u,
+742243229u,
+779775302u,
+3140940172u,
+2312556111u,
+2304095772u,
+1151741606u,
+2194712422u,
+1714084652u,
+3272736835u,
+1311540658u,
+191179665u,
+3996605106u,
+1657345233u,
+4205442903u,
+1553339212u,
+2351843044u,
+1647502006u,
+2525516233u,
+292202846u,
+1498646290u,
+1429323381u,
+974274898u,
+3759331561u,
+2881238887u,
+826787221u,
+1069622448u,
+221991032u,
+1462969082u,
+2799661508u,
+364022781u,
+2594244377u,
+797773898u,
+4097839290u,
+1529150125u,
+2456805570u,
+541503425u,
+3936326142u,
+3112719954u,
+775223581u,
+3074018423u,
+3198488875u,
+1772191849u,
+2456535211u,
+3154686028u,
+1520862019u,
+4005829426u,
+1306433767u,
+1943028506u,
+2246000782u,
+1057766454u,
+3761996982u,
+3441075333u,
+898641979u,
+3450209088u,
+3941329307u,
+3289922449u,
+3085075827u,
+1814193220u,
+690422997u,
+2627846676u,
+2653520704u,
+3739145533u,
+3996776010u,
+2287072592u,
+1346671698u,
+3082629900u,
+2298811274u,
+3639722036u,
+1729419228u,
+1836765953u,
+3708118742u,
+213436u,
+950223749u,
+3734247682u,
+2924575678u,
+1382024841u,
+2431637732u,
+3448846682u,
+1341301397u,
+4206956590u,
+1730650902u,
+2581075456u,
+1542359141u,
+707222542u,
+2925350541u,
+3846303536u,
+3579103295u,
+3932175763u,
+1339615732u,
+848825750u,
+1070170828u,
+1964973818u,
+577060344u,
+607721296u,
+4031023048u,
+406883794u,
+3991905552u,
+1198544082u,
+872468460u,
+1044847096u,
+3159976313u,
+3020028266u,
+2108700400u,
+3373767922u,
+264431841u,
+2817097007u,
+3700061048u,
+1733731531u,
+3459415893u,
+80378591u,
+1479875104u,
+19735612u,
+1382658977u,
+3416562245u,
+1959852842u,
+2384002344u,
+124683828u,
+3725782174u,
+2300301222u,
+393852269u,
+1302492002u,
+3623776492u,
+3787086417u,
+1730024749u,
+1710531361u,
+443700716u,
+1461987482u,
+671998131u,
+3018380746u,
+2592292305u,
+3390799372u,
+3945101155u,
+3743494852u,
+3716045582u,
+996005166u,
+320698449u,
+3420221765u,
+1518157951u,
+2555810666u,
+3381929684u,
+2019638523u,
+3088262796u,
+2072178906u,
+3433649364u,
+203906916u,
+34663784u,
+290301305u,
+1188021504u,
+3754681145u,
+3920313139u,
+2840496520u,
+1656802962u,
+2288475489u,
+3399185138u,
+1296000826u,
+2362384746u,
+309633360u,
+2719851778u,
+776035930u,
+3200733043u,
+365690832u,
+3326378243u,
+1500331457u,
+1625708592u,
+4230903462u,
+715344888u,
+3363777768u,
+2243620288u,
+2890765789u,
+553154234u,
+4044100108u,
+4056887320u,
+1185656496u,
+3671476744u,
+1064586897u,
+1154949698u,
+3493481974u,
+1294573722u,
+1869224012u,
+2530084956u,
+995321553u,
+833419249u,
+563815282u,
+250258043u,
+2970801822u,
+441007535u,
+42246961u,
+2820426655u,
+2878882436u,
+2363245780u,
+2138489282u,
+2972360481u,
+2312619393u,
+3598664848u,
+3071556076u,
+776990325u,
+3220427357u,
+2257939577u,
+3817305903u,
+1502979698u,
+3159755934u,
+3955997276u,
+2423850008u,
+1959927572u,
+1219782288u,
+4119776679u,
+1124253854u,
+3678052422u,
+2620644947u,
+1262408666u,
+3480072280u,
+2627137665u,
+807538749u,
+3276646337u,
+518510128u,
+1137828655u,
+1498449110u,
+3031692317u,
+1125635969u,
+1130096111u,
+780007336u,
+3111856399u,
+1014917264u,
+780877352u,
+2909458336u,
+4235949214u,
+2423879289u,
+275888892u,
+3891926795u,
+3538163953u,
+54815161u,
+162228302u,
+258154068u,
+3554455591u,
+1801469029u,
+2801563220u,
+726560058u,
+2450221940u,
+3677582978u,
+440993800u,
+424762443u,
+2624525253u,
+2587715329u,
+2292264424u,
+1074856749u,
+3294752007u,
+3164112672u,
+2399146799u,
+1920182465u,
+3858835361u,
+193755240u,
+3333610311u,
+1757504059u,
+2576027039u,
+2775253365u,
+2939191561u,
+1046147275u,
+235149906u,
+4262218222u,
+2900542726u,
+2260154702u,
+1019551635u,
+1194720570u,
+3519118691u,
+3039483153u,
+84918216u,
+3053381097u,
+2572396843u,
+3849763371u,
+2782686780u,
+3710049554u,
+3403430713u,
+2346080784u,
+2496307442u,
+1597281872u,
+696018239u,
+704625714u,
+623026921u,
+3182413559u,
+3794540330u,
+305497722u,
+1592680199u,
+2377854072u,
+3060601746u,
+3953057908u,
+3941551588u,
+1033716182u,
+2765716854u,
+1309699058u,
+3519400181u,
+3073370877u,
+115583008u,
+4032909296u,
+2944563574u,
+3762753718u,
+192842727u,
+1711348701u,
+3086147235u,
+1658229443u,
+1479783872u,
+3839977157u,
+225619117u,
+1349684817u,
+1964813173u,
+565753187u,
+2530252046u,
+840014353u,
+1645183704u,
+3668429078u,
+3438418557u,
+639704059u,
+360837811u,
+2531807958u,
+1572353913u,
+2116037299u,
+1948437512u,
+744553393u,
+2380697034u,
+3775234105u,
+3816065157u,
+301868653u,
+2960939561u,
+3306528247u,
+2389296549u,
+805918610u,
+1759358265u,
+1760876328u,
+2827601706u,
+2944594708u,
+3313666458u,
+2022601495u,
+730938791u,
+193539397u,
+2026103244u,
+802928398u,
+2630934308u,
+782805818u,
+3499326016u,
+293509489u,
+3646131514u,
+3182478647u,
+854800333u,
+2284531628u,
+438528022u,
+2339298129u,
+1692289216u,
+2427728723u,
+46501288u,
+350652353u,
+1355971222u,
+889682372u,
+944799254u,
+2763906061u,
+2807550612u,
+2683762637u,
+100870317u,
+2449357318u,
+2638348436u,
+4206088869u,
+1788948473u,
+3537588549u,
+2782490204u,
+134406470u,
+2409190528u,
+2362439849u,
+1861661528u,
+2101513194u,
+1424834765u,
+3581765745u,
+3185999525u,
+2057487100u,
+2303941176u,
+3639628788u,
+1180265315u,
+230437935u,
+2108319366u,
+1131685143u,
+1055685292u,
+1509007009u,
+1258485140u,
+560525005u,
+3598799040u,
+3835680585u,
+1851859628u,
+332858996u,
+641769248u,
+4252450037u,
+865386707u,
+720719117u,
+3133612164u,
+3833045874u,
+3492515435u,
+2465970289u,
+4234420011u,
+573859916u,
+252532886u,
+870392318u,
+4051320920u,
+894929092u,
+3748361688u,
+699355960u,
+1885212350u,
+1609756949u,
+461896870u,
+1337065461u,
+1775211059u,
+1786193749u,
+2815154643u,
+2128729882u,
+969639529u,
+3960427545u,
+859416958u,
+2739758802u,
+2698032197u,
+2813292418u,
+1985467524u,
+396604317u,
+4122172759u,
+1201259789u,
+4282051702u,
+3270018895u,
+961215209u,
+961075860u,
+4211926998u,
+4088374597u,
+577510509u,
+3058349487u,
+4025377754u,
+2815478438u,
+471023164u,
+3947959608u,
+4161486934u,
+2299888461u,
+1103571511u,
+2450153872u,
+1839939275u,
+108299608u,
+858086440u,
+1030152945u,
+3895328530u,
+3009080718u,
+3690840454u,
+3847025277u,
+152331362u,
+161365689u,
+831319961u,
+2166017294u,
+3945322722u,
+4059970216u,
+1420824131u,
+2770648308u,
+1567250186u,
+2181067149u,
+1939743488u,
+3080158120u,
+3435218248u,
+2495237495u,
+3814085102u,
+3180983013u,
+3199054292u,
+2204745908u,
+1140337267u,
+2213569784u,
+1941879842u,
+2105562605u,
+3618835614u,
+2247103645u,
+2492473487u,
+856414299u,
+166022030u,
+4080104712u,
+3218935344u,
+3284220561u,
+4261581452u,
+1206944836u,
+3496705432u,
+2215996876u,
+3154627465u,
+3384005496u,
+742170556u,
+1333047620u,
+802680366u,
+156833431u,
+2682100354u,
+2493654830u,
+584848366u,
+1691693131u,
+2169934170u,
+779968026u,
+2099545800u,
+1423039695u,
+4292110968u,
+4266576788u,
+149142597u,
+748501873u,
+3865014822u,
+1913588198u,
+130285614u,
+3500768879u,
+915458923u,
+3071792750u,
+1339986633u,
+4143929149u,
+4048379479u,
+725193827u,
+1375113643u,
+2425277412u,
+4144659274u,
+465714768u,
+226991589u,
+2212127704u,
+3936145258u,
+2891024846u,
+3816000225u,
+979331165u,
+1749907536u,
+53847318u,
+1462525833u,
+2961425455u,
+368859113u,
+3572721452u,
+453048644u,
+1628629918u,
+3497673923u,
+3619079585u,
+139870565u,
+1518176798u,
+3933074281u,
+1878623729u,
+2074035641u,
+3016759257u,
+1313053591u,
+2557706970u,
+2348296582u,
+962370022u,
+2337285014u,
+1618936717u,
+1915877085u,
+2743743122u,
+3250783882u,
+1346652536u,
+143311109u,
+2443788461u,
+1048248964u,
+2806619339u,
+3263266976u,
+1668146349u,
+3397428868u,
+3276188862u,
+1774196343u,
+1993847813u,
+2771079610u,
+476672419u,
+2119050359u,
+2918326659u,
+2245402721u,
+2692910474u,
+2374383269u,
+342400227u,
+2961437795u,
+3899230368u,
+337787132u,
+3664444935u,
+1269451153u,
+2971526729u,
+1486511182u,
+791070133u,
+2570319890u,
+3482497490u,
+2134230518u,
+4273391202u,
+1825511330u,
+3947753714u,
+1389755724u,
+3995075516u,
+2081052615u,
+3626343470u,
+4213603435u,
+2137917278u,
+2898987303u,
+3059215715u,
+3383237881u,
+3003674434u,
+409174425u,
+1911915604u,
+2087728055u,
+2942005882u,
+3386522440u,
+714936074u,
+261924004u,
+3268784033u,
+1141188757u,
+2413217552u,
+1515163433u,
+};
+
+// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
+bool Test(int offset, int len = 0) {
+#undef Check
+#undef IsAlive
+
+#define Check(x) do { \
+ const uint32_t actual = (x), e = expected[index++]; \
+ bool ok = actual == e; \
+ if (!ok) { \
+ cerr << "expected " << hex << e << " but got " << actual << endl; \
+ ++errors; \
+ } \
+ assert(ok); \
+} while (0)
+
+#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
+
+ // After the following line is where the uses of "Check" and such will go.
+ static int index = 0;
+if (offset == -1) { int alive = 0; IsAlive(farmhashsa::Hash32WithSeed(data, len++, SEED)); IsAlive(farmhashsa::Hash32(data, len++)); IsAlive(farmhashsa::Hash32(data, len++)); len -= 3; return alive > 0; }
+Check(farmhashsa::Hash32WithSeed(data + offset, len, SEED));
+Check(farmhashsa::Hash32(data + offset, len));
+
+ return true;
+#undef Check
+#undef IsAlive
+}
+
+int RunTest() {
+ Setup();
+ int i = 0;
+ cout << "Running farmhashsaTest";
+ if (!Test(-1)) {
+ cout << "... Unavailable\n";
+ return NoteErrors();
+ }
+ // Good. The function is attempting to hash, so run the full test.
+ int errors_prior_to_test = errors;
+ for ( ; i < kTestSize - 1; i++) {
+ Test(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ Test(0, i);
+ }
+ Test(0, kDataSize);
+ cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
+ return NoteErrors();
+}
+
+#else
+
+// After the following line is where the code to print hash codes will go.
+void Dump(int offset, int len) {
+cout << farmhashsa::Hash32WithSeed(data + offset, len, SEED) << "u," << endl;
+cout << farmhashsa::Hash32(data + offset, len) << "u," << endl;
+}
+
+#endif
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+
+} // namespace farmhashsaTest
+
+#if !TESTING
+int main(int argc, char** argv) {
+ Setup();
+ cout << "uint32_t expected[] = {\n";
+ int i = 0;
+ for ( ; i < kTestSize - 1; i++) {
+ farmhashsaTest::Dump(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ farmhashsaTest::Dump(0, i);
+ }
+ farmhashsaTest::Dump(0, kDataSize);
+ cout << "};\n";
+}
+#endif
+#ifndef FARMHASH_SELF_TEST_GUARD
+#define FARMHASH_SELF_TEST_GUARD
+#include <cstdio>
+#include <iostream>
+#include <string.h>
+
+using std::cout;
+using std::cerr;
+using std::endl;
+using std::hex;
+
+static const uint64_t kSeed0 = 1234567;
+static const uint64_t kSeed1 = k0;
+static const int kDataSize = 1 << 20;
+static const int kTestSize = 300;
+#define kSeed128 Uint128(kSeed0, kSeed1)
+
+static char data[kDataSize];
+
+static int completed_self_tests = 0;
+static int errors = 0;
+
+// Initialize data to pseudorandom values.
+void Setup() {
+ if (completed_self_tests == 0) {
+ uint64_t a = 9;
+ uint64_t b = 777;
+ for (int i = 0; i < kDataSize; i++) {
+ a += b;
+ b += a;
+ a = (a ^ (a >> 41)) * k0;
+ b = (b ^ (b >> 41)) * k0 + i;
+ uint8_t u = b >> 37;
+ memcpy(data + i, &u, 1); // uint8_t -> char
+ }
+ }
+}
+
+int NoteErrors() {
+#define NUM_SELF_TESTS 9
+ if (++completed_self_tests == NUM_SELF_TESTS)
+ std::exit(errors > 0);
+ return errors;
+}
+
+template <typename T> inline bool IsNonZero(T x) {
+ return x != 0;
+}
+
+template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
+ return x != Uint128(0, 0);
+}
+
+#endif // FARMHASH_SELF_TEST_GUARD
+
+namespace farmhashsuTest {
+
+uint32_t CreateSeed(int offset, int salt) {
+ uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h += static_cast<uint32_t>(offset & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ return h;
+}
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+#define SEED CreateSeed(offset, -1)
+#define SEED0 CreateSeed(offset, 0)
+#define SEED1 CreateSeed(offset, 1)
+
+#undef TESTING
+#define TESTING 1
+#if TESTING
+uint32_t expected[] = {
+4223616069u,
+3696677242u,
+4081014168u,
+2576519988u,
+2212771159u,
+1112731063u,
+1020067935u,
+3955445564u,
+1451961420u,
+653440099u,
+31917516u,
+2957164615u,
+2590087362u,
+3879448744u,
+176305566u,
+2447367541u,
+1359016305u,
+3363804638u,
+1117290165u,
+1062549743u,
+2437877004u,
+1894455839u,
+673206794u,
+3486923651u,
+3269862919u,
+2303349487u,
+1380660650u,
+595525107u,
+1525325287u,
+2025609358u,
+176408838u,
+1592885012u,
+864896482u,
+2101378090u,
+3489229104u,
+2118965695u,
+581644891u,
+2718789079u,
+631613207u,
+4228658372u,
+3867875546u,
+3531368319u,
+3804516756u,
+3317755099u,
+1619744564u,
+2884717286u,
+1088213445u,
+2667691076u,
+3727873235u,
+2330406762u,
+858590707u,
+457744844u,
+4150036245u,
+2000404290u,
+1478882570u,
+901678172u,
+819171187u,
+195942998u,
+4254302102u,
+3967266927u,
+437030323u,
+4018009204u,
+2868246750u,
+3540087514u,
+3154852132u,
+3319116625u,
+357580983u,
+3177665294u,
+1108813287u,
+1253366798u,
+2315997713u,
+510718750u,
+1360882441u,
+2770216279u,
+3048866755u,
+3406961221u,
+3664371439u,
+1151145514u,
+1027891570u,
+2699067992u,
+3461888315u,
+198061905u,
+292769636u,
+1106771795u,
+4064110516u,
+3258279756u,
+762850927u,
+1818699721u,
+2803307356u,
+3919169404u,
+460980967u,
+3125535078u,
+2802568977u,
+3582546426u,
+2148940781u,
+3963274378u,
+1266953698u,
+204185123u,
+1100034381u,
+3009193601u,
+4200651967u,
+274889605u,
+2700589508u,
+952511689u,
+3765324859u,
+3465498478u,
+4014967037u,
+2070988082u,
+2972423530u,
+3068638223u,
+4156773651u,
+489509804u,
+1323863238u,
+3731914806u,
+2846098469u,
+2728930632u,
+346814072u,
+848146907u,
+551160669u,
+4165126521u,
+2039095001u,
+4179859388u,
+2434936359u,
+2764414551u,
+238491210u,
+732483969u,
+3366512764u,
+478307468u,
+4124179572u,
+4142733597u,
+1953448206u,
+4199329278u,
+865077060u,
+2627662116u,
+2802499360u,
+3141206831u,
+1959218197u,
+911371451u,
+125987200u,
+2821366175u,
+2530992747u,
+2409206225u,
+117991880u,
+2133402461u,
+895510531u,
+428719601u,
+3036014536u,
+1223783733u,
+733793540u,
+970650405u,
+547701766u,
+570764615u,
+3224485368u,
+3192714940u,
+319942831u,
+3940200341u,
+362056204u,
+2832368105u,
+1853281226u,
+3296434636u,
+3752508307u,
+604292768u,
+2231940616u,
+1204094681u,
+866194005u,
+2405201650u,
+2466384396u,
+380829379u,
+230033818u,
+2783417588u,
+4249886729u,
+829569301u,
+2988322580u,
+2299983554u,
+74748560u,
+737514425u,
+3153050211u,
+652642663u,
+1270205115u,
+227197032u,
+2773091790u,
+325849216u,
+49998791u,
+4043203010u,
+3662748068u,
+1709364383u,
+1179105165u,
+1478504366u,
+2980456610u,
+1167476429u,
+1590390732u,
+1306256496u,
+292008135u,
+374690995u,
+1809200819u,
+1680595904u,
+646040226u,
+1742445560u,
+2435776844u,
+3703683804u,
+478742495u,
+814967947u,
+2698190177u,
+1003617993u,
+1436118705u,
+217056304u,
+1412287094u,
+2738417466u,
+2933279339u,
+3461877733u,
+1203141205u,
+2119492857u,
+1134895723u,
+1560001021u,
+3786320122u,
+3748116258u,
+3486219595u,
+702138030u,
+1062984182u,
+232789133u,
+1566523968u,
+3885443778u,
+1820171888u,
+3655858585u,
+2316903005u,
+2678779620u,
+395625433u,
+1609107564u,
+3108726411u,
+2937837224u,
+3911907151u,
+557272509u,
+3893435978u,
+1542613576u,
+1079886893u,
+2624566322u,
+1413700616u,
+2796974006u,
+1922556114u,
+562820464u,
+2845409784u,
+54180312u,
+1898782464u,
+3681814953u,
+2417064617u,
+1815464483u,
+911626132u,
+2964575550u,
+1852696128u,
+2319647785u,
+1998904590u,
+619992689u,
+3073207513u,
+1238163512u,
+3199435982u,
+828667254u,
+3561155502u,
+3943095163u,
+1045711849u,
+2238679131u,
+2114975398u,
+713808403u,
+3871787494u,
+2572031161u,
+2360934075u,
+2337781107u,
+262596504u,
+693836699u,
+2129369850u,
+3543189427u,
+962205222u,
+3685581020u,
+692974477u,
+725182211u,
+646123906u,
+2368836544u,
+2505872733u,
+1999977610u,
+1639885802u,
+1475058032u,
+207023609u,
+2773581234u,
+3524857793u,
+3433371102u,
+3243027613u,
+1787668353u,
+985757946u,
+3896012929u,
+702356957u,
+3559331129u,
+884084870u,
+4009998120u,
+648888720u,
+1403349048u,
+1624342778u,
+1766674171u,
+2518582204u,
+3251243146u,
+792751003u,
+1377201813u,
+3629686054u,
+1583734324u,
+3647107626u,
+4258564381u,
+1469878609u,
+1940598241u,
+2755003690u,
+1907120418u,
+109916701u,
+775347954u,
+2090960874u,
+611281803u,
+3470490146u,
+3301663253u,
+1835412158u,
+1803066146u,
+591872433u,
+550703713u,
+1495089683u,
+826492808u,
+817200035u,
+4177474571u,
+688070143u,
+971427632u,
+1442499481u,
+3568640348u,
+2789993738u,
+85808128u,
+2058346726u,
+394058570u,
+3466511434u,
+318905230u,
+4149248030u,
+415308316u,
+165997598u,
+1219639412u,
+1648022659u,
+2857432523u,
+1422508004u,
+468095522u,
+296968649u,
+430250611u,
+1775562314u,
+2976361671u,
+1040036362u,
+1372510167u,
+292746272u,
+3408238954u,
+626061886u,
+1317637569u,
+1237775792u,
+1218490455u,
+2224234499u,
+590942419u,
+713995643u,
+3541889330u,
+4140218960u,
+3529791107u,
+354462673u,
+842607274u,
+365048533u,
+2638303414u,
+3560458014u,
+31621379u,
+4210854794u,
+1273118792u,
+2572743762u,
+3513175801u,
+402066986u,
+602524471u,
+565029192u,
+180576438u,
+1288605959u,
+2896244423u,
+1420543484u,
+1329862227u,
+1791567324u,
+4248690247u,
+12917038u,
+3483481310u,
+2082050731u,
+1611921143u,
+2443766548u,
+2216338811u,
+2528006095u,
+2984009021u,
+674210884u,
+2857608106u,
+2155534809u,
+1023105067u,
+2968955846u,
+3303624302u,
+2502112850u,
+245749006u,
+3175229091u,
+3342796184u,
+3613785362u,
+1614168851u,
+2582149283u,
+895403488u,
+416205023u,
+3792242000u,
+529397534u,
+299415203u,
+4284673348u,
+2096851282u,
+1864524731u,
+2012577738u,
+3426363316u,
+1387308508u,
+1143610148u,
+2027467219u,
+3772856163u,
+3453862623u,
+2661437174u,
+2047145955u,
+2533381447u,
+2059534115u,
+439426587u,
+1537543414u,
+2384289877u,
+3174229055u,
+2658017753u,
+2293148474u,
+2359450158u,
+3930242475u,
+1510302397u,
+3354288821u,
+920095603u,
+2415746928u,
+2729472638u,
+2261143371u,
+848667611u,
+919157153u,
+3322393117u,
+4103299943u,
+413569608u,
+68911216u,
+3334990170u,
+1228068652u,
+1570056373u,
+1905477543u,
+2622302276u,
+2935063895u,
+3224810004u,
+4211768578u,
+828688131u,
+3556122839u,
+1930935348u,
+2605825202u,
+1540993970u,
+3209115883u,
+122847500u,
+665638794u,
+506571051u,
+2691795295u,
+3996966556u,
+714660621u,
+3662432239u,
+470651837u,
+1807432621u,
+3755290953u,
+359878860u,
+2793081615u,
+4065031431u,
+904653062u,
+2317800777u,
+568501094u,
+3492871707u,
+2738806116u,
+2883859610u,
+3242080257u,
+364246691u,
+3601786516u,
+3159362524u,
+1578272201u,
+1283574375u,
+2912186103u,
+2256279032u,
+1540671086u,
+2356088973u,
+2892277779u,
+3441449267u,
+2225005503u,
+3846428419u,
+2014549218u,
+2290734767u,
+2126684614u,
+4235463487u,
+3811556204u,
+174739661u,
+767525888u,
+47684458u,
+4211168099u,
+889063422u,
+469864411u,
+767407110u,
+413337343u,
+1618456644u,
+2814499820u,
+2401124192u,
+632089437u,
+1234980238u,
+1288585402u,
+3153169944u,
+2917822069u,
+1843320264u,
+3794359132u,
+3074573530u,
+258629454u,
+3813357060u,
+3806887248u,
+1665524736u,
+3324533324u,
+3005091922u,
+793108368u,
+1529669805u,
+2332660395u,
+2217730223u,
+2634687611u,
+442806463u,
+1968135266u,
+454523002u,
+3177866230u,
+2808960136u,
+4259114138u,
+4103264843u,
+3103714075u,
+2462967542u,
+1466891491u,
+477973764u,
+834565647u,
+741089037u,
+218837573u,
+1710536528u,
+2469088212u,
+1229072375u,
+2828341u,
+176923431u,
+985763350u,
+4095477420u,
+1984145538u,
+1870791084u,
+674956677u,
+1978138947u,
+1296493993u,
+1818183554u,
+3443333721u,
+2124949983u,
+2549590262u,
+2700850794u,
+2662736367u,
+739638109u,
+4061447096u,
+2960078422u,
+2453781158u,
+929570940u,
+3200328383u,
+2406328791u,
+1419180666u,
+2152455739u,
+2805741044u,
+3305999074u,
+3183816361u,
+2303165050u,
+4922104u,
+63096005u,
+936656347u,
+3104453886u,
+1088673880u,
+1113407526u,
+1457890086u,
+453478383u,
+1107686695u,
+3626027824u,
+1159687359u,
+2248467888u,
+2004578380u,
+3274954621u,
+1787958646u,
+2628726704u,
+1138419798u,
+3735442315u,
+692385301u,
+313807213u,
+2329068673u,
+59375364u,
+3261084359u,
+2088644507u,
+2471153194u,
+788336435u,
+4024527246u,
+141504460u,
+2307553888u,
+1930559950u,
+48975711u,
+2745693338u,
+230161982u,
+3429230862u,
+1335968626u,
+609591304u,
+57435073u,
+4279281136u,
+3152151665u,
+3984484924u,
+3459883943u,
+397478330u,
+1738762229u,
+3033590066u,
+3611539498u,
+1363463523u,
+3319364965u,
+2671169141u,
+3819548561u,
+1691193757u,
+2423834608u,
+2820147055u,
+1378120632u,
+1240565187u,
+3180720050u,
+680831086u,
+3309658414u,
+1986166490u,
+762099827u,
+510883662u,
+2047373648u,
+3606742294u,
+3894965352u,
+2342078853u,
+1091255717u,
+776594727u,
+3217317445u,
+1574468485u,
+3844504016u,
+2819598918u,
+1037401010u,
+2550943503u,
+3867184001u,
+1687911772u,
+165313836u,
+1679575281u,
+2418947263u,
+2038774952u,
+3913543652u,
+3209155736u,
+149905221u,
+3859604717u,
+713919631u,
+4069810796u,
+1882959164u,
+1019939034u,
+2379867302u,
+3666323035u,
+1157389013u,
+2422300650u,
+3366777340u,
+2526452062u,
+1313747885u,
+1039617868u,
+1620553692u,
+2032976978u,
+578789528u,
+1592846839u,
+2270630604u,
+897850577u,
+1603294178u,
+3105664807u,
+1442670138u,
+1728019360u,
+79313861u,
+1683031101u,
+1913067024u,
+4070719870u,
+708986470u,
+2586453359u,
+3993348863u,
+3358251279u,
+3003552537u,
+750174793u,
+836888956u,
+4190747426u,
+4251291318u,
+4145164938u,
+1366883260u,
+1912910955u,
+510192669u,
+1851315039u,
+3574241274u,
+3220062924u,
+2821142039u,
+1317082195u,
+2274293302u,
+1839219569u,
+126586168u,
+3989293643u,
+2680178207u,
+347056948u,
+799681430u,
+2864517481u,
+3180404853u,
+213140045u,
+1956305184u,
+1474675286u,
+3085723423u,
+2841859626u,
+308421914u,
+3670309263u,
+1765052231u,
+245459238u,
+113434331u,
+4079521092u,
+2115235526u,
+2943408816u,
+1055476938u,
+1506442339u,
+2291296392u,
+3267864332u,
+1282145528u,
+3700108015u,
+1932843667u,
+2677701670u,
+6041177u,
+3889648557u,
+1461025478u,
+};
+
+// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
+bool Test(int offset, int len = 0) {
+#undef Check
+#undef IsAlive
+
+#define Check(x) do { \
+ const uint32_t actual = (x), e = expected[index++]; \
+ bool ok = actual == e; \
+ if (!ok) { \
+ cerr << "expected " << hex << e << " but got " << actual << endl; \
+ ++errors; \
+ } \
+ assert(ok); \
+} while (0)
+
+#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
+
+ // After the following line is where the uses of "Check" and such will go.
+ static int index = 0;
+if (offset == -1) { int alive = 0; IsAlive(farmhashsu::Hash32WithSeed(data, len++, SEED)); IsAlive(farmhashsu::Hash32(data, len++)); IsAlive(farmhashsu::Hash32(data, len++)); len -= 3; return alive > 0; }
+Check(farmhashsu::Hash32WithSeed(data + offset, len, SEED));
+Check(farmhashsu::Hash32(data + offset, len));
+
+ return true;
+#undef Check
+#undef IsAlive
+}
+
+int RunTest() {
+ Setup();
+ int i = 0;
+ cout << "Running farmhashsuTest";
+ if (!Test(-1)) {
+ cout << "... Unavailable\n";
+ return NoteErrors();
+ }
+ // Good. The function is attempting to hash, so run the full test.
+ int errors_prior_to_test = errors;
+ for ( ; i < kTestSize - 1; i++) {
+ Test(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ Test(0, i);
+ }
+ Test(0, kDataSize);
+ cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
+ return NoteErrors();
+}
+
+#else
+
+// After the following line is where the code to print hash codes will go.
+void Dump(int offset, int len) {
+cout << farmhashsu::Hash32WithSeed(data + offset, len, SEED) << "u," << endl;
+cout << farmhashsu::Hash32(data + offset, len) << "u," << endl;
+}
+
+#endif
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+
+} // namespace farmhashsuTest
+
+#if !TESTING
+int main(int argc, char** argv) {
+ Setup();
+ cout << "uint32_t expected[] = {\n";
+ int i = 0;
+ for ( ; i < kTestSize - 1; i++) {
+ farmhashsuTest::Dump(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ farmhashsuTest::Dump(0, i);
+ }
+ farmhashsuTest::Dump(0, kDataSize);
+ cout << "};\n";
+}
+#endif
+#ifndef FARMHASH_SELF_TEST_GUARD
+#define FARMHASH_SELF_TEST_GUARD
+#include <cstdio>
+#include <iostream>
+#include <string.h>
+
+using std::cout;
+using std::cerr;
+using std::endl;
+using std::hex;
+
+static const uint64_t kSeed0 = 1234567;
+static const uint64_t kSeed1 = k0;
+static const int kDataSize = 1 << 20;
+static const int kTestSize = 300;
+#define kSeed128 Uint128(kSeed0, kSeed1)
+
+static char data[kDataSize];
+
+static int completed_self_tests = 0;
+static int errors = 0;
+
+// Initialize data to pseudorandom values.
+void Setup() {
+ if (completed_self_tests == 0) {
+ uint64_t a = 9;
+ uint64_t b = 777;
+ for (int i = 0; i < kDataSize; i++) {
+ a += b;
+ b += a;
+ a = (a ^ (a >> 41)) * k0;
+ b = (b ^ (b >> 41)) * k0 + i;
+ uint8_t u = b >> 37;
+ memcpy(data + i, &u, 1); // uint8_t -> char
+ }
+ }
+}
+
+int NoteErrors() {
+#define NUM_SELF_TESTS 9
+ if (++completed_self_tests == NUM_SELF_TESTS)
+ std::exit(errors > 0);
+ return errors;
+}
+
+template <typename T> inline bool IsNonZero(T x) {
+ return x != 0;
+}
+
+template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
+ return x != Uint128(0, 0);
+}
+
+#endif // FARMHASH_SELF_TEST_GUARD
+
+namespace farmhashteTest {
+
+uint32_t CreateSeed(int offset, int salt) {
+ uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h += static_cast<uint32_t>(offset & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ return h;
+}
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+#define SEED CreateSeed(offset, -1)
+#define SEED0 CreateSeed(offset, 0)
+#define SEED1 CreateSeed(offset, 1)
+
+#undef TESTING
+#define TESTING 1
+#if TESTING
+uint32_t expected[] = {
+1140953930u, 861465670u,
+3277735313u, 2681724312u,
+2598464059u, 797982799u,
+890626835u, 800175912u,
+2603993599u, 921001710u,
+1410420968u, 2134990486u,
+3283896453u, 1867689945u,
+2914424215u, 2244477846u,
+255297188u, 2992121793u,
+1110588164u, 4186314283u,
+161451183u, 3943596029u,
+4019337850u, 452431531u,
+283198166u, 2741341286u,
+3379021470u, 2557197665u,
+299850021u, 2532580744u,
+452473466u, 1706958772u,
+1298374911u, 3099673830u,
+2199864459u, 3696623795u,
+236935126u, 2976578695u,
+4055299123u, 3281581178u,
+1053458494u, 1882212500u,
+2305012065u, 2169731866u,
+3456121707u, 275903667u,
+458884671u, 3033004529u,
+3058973506u, 2379411653u,
+1898235244u, 1402319660u,
+2700149065u, 2699376854u,
+147814787u, 720739346u,
+2433714046u, 4222949502u,
+4220361840u, 1712034059u,
+3425469811u, 3690733394u,
+4148372108u, 1330324210u,
+594028478u, 2921867846u,
+1635026870u, 192883107u,
+780716741u, 1728752234u,
+3280331829u, 326029180u,
+3969463346u, 1436364519u,
+393215742u, 3349570000u,
+3824583307u, 1612122221u,
+2859809759u, 3808705738u,
+1379537552u, 1646032583u,
+2233466664u, 1432476832u,
+4023053163u, 2650381482u,
+2052294713u, 3552092450u,
+1628777059u, 1499109081u,
+3476440786u, 3829307897u,
+2960536756u, 1554038301u,
+1145519619u, 3190844552u,
+2902102606u, 3600725550u,
+237495366u, 540224401u,
+65721842u, 489963606u,
+1448662590u, 397635823u,
+1596489240u, 1562872448u,
+1790705123u, 2128624475u,
+180854224u, 2604346966u,
+1435705557u, 1262831810u,
+155445229u, 1672724608u,
+1669465176u, 1341975128u,
+663607706u, 2077310004u,
+3610042449u, 1911523866u,
+1043692997u, 1454396064u,
+2563776023u, 294527927u,
+1099072299u, 1389770549u,
+703505868u, 678706990u,
+2952353448u, 2026137563u,
+3603803785u, 629449419u,
+1933894405u, 3043213226u,
+226132789u, 2489287368u,
+1552847036u, 645684964u,
+3828089804u, 3632594520u,
+187883449u, 230403464u,
+3151491850u, 3272648435u,
+3729087873u, 1303930448u,
+2002861219u, 165370827u,
+916494250u, 1230085527u,
+3103338579u, 3064290191u,
+3807265751u, 3628174014u,
+231181488u, 851743255u,
+2295806711u, 1781190011u,
+2988893883u, 1554380634u,
+1142264800u, 3667013118u,
+1968445277u, 315203929u,
+2638023604u, 2290487377u,
+732137533u, 1909203251u,
+440398219u, 1891630171u,
+1380301172u, 1498556724u,
+4072067757u, 4165088768u,
+4204318635u, 441430649u,
+3931792696u, 197618179u,
+956300927u, 914413116u,
+3010839769u, 2837339569u,
+2148126371u, 1913303225u,
+3074915312u, 3117299654u,
+4139181436u, 2993479124u,
+3178848746u, 1357272220u,
+1438494951u, 507436733u,
+667183474u, 2084369203u,
+3854939912u, 1413396341u,
+126024219u, 146044391u,
+1016656857u, 3022024459u,
+3254014218u, 429095991u,
+990500595u, 3056862311u,
+985653208u, 1718653828u,
+623071693u, 366414107u,
+1771289760u, 2293458109u,
+3047342438u, 2991127487u,
+3120876698u, 1684583131u,
+3638043310u, 1170404994u,
+863214540u, 1087193030u,
+199124911u, 520792961u,
+3169775996u, 1577421232u,
+3331828431u, 1013201099u,
+1716848157u, 4033596884u,
+1770708857u, 4229339322u,
+1146169032u, 1434258493u,
+3824360466u, 3242407770u,
+1926419493u, 2649785113u,
+872586426u, 762243036u,
+2736953692u, 816692935u,
+1571283333u, 3555213933u,
+2266795890u, 3781899767u,
+4290630595u, 517646945u,
+3006163611u, 2180594090u,
+959214578u, 558910384u,
+1283799121u, 3047062993u,
+3830962609u, 2391606125u,
+3544509313u, 622325861u,
+834785312u, 382936554u,
+1421463872u, 788479970u,
+1825135056u, 2725923798u,
+580988377u, 2826990641u,
+247825043u, 3167748333u,
+812546227u, 2506885666u,
+2584372201u, 1758123094u,
+1891789696u, 389974094u,
+345313518u, 2022370576u,
+3886113119u, 3338548567u,
+1083486947u, 2583576230u,
+1776047957u, 1771384107u,
+3604937815u, 3198590202u,
+3027522813u, 4155628142u,
+4232136669u, 427759438u,
+4244322689u, 542201663u,
+1549591985u, 2856634168u,
+556609672u, 45845311u,
+1175961330u, 3948351189u,
+4165739882u, 4194218315u,
+1634635545u, 4151937410u,
+713127376u, 1467786451u,
+1327394015u, 2743592929u,
+2638154051u, 810082938u,
+3077742128u, 1062268187u,
+4084325664u, 3810665822u,
+3735739145u, 2794294783u,
+2335576331u, 2560479831u,
+690240711u, 997658837u,
+2442302747u, 3948961926u,
+3958366652u, 3067277639u,
+2059157774u, 1211737169u,
+1516711748u, 2339636583u,
+4188504038u, 59581167u,
+2767897792u, 1389679610u,
+2658147000u, 2643979752u,
+3758739543u, 4189944477u,
+1454470782u, 100876854u,
+2995362413u, 118817200u,
+3252925478u, 2062343506u,
+2804483644u, 3088828656u,
+1231633714u, 4168280671u,
+2931588131u, 3284356565u,
+1255909792u, 3130054947u,
+4173605289u, 1407328702u,
+1677744031u, 3532596884u,
+3162657845u, 3887208531u,
+2256541290u, 3459463480u,
+3740979556u, 259034107u,
+392987633u, 3233195759u,
+3606709555u, 3424793077u,
+315836068u, 3200749877u,
+4065431359u, 760633989u,
+2982018998u, 1811050648u,
+234531934u, 1115203611u,
+3897494162u, 1516407838u,
+1603559457u, 323296368u,
+2632963283u, 1778459926u,
+2879836826u, 2146672889u,
+3486330348u, 492621815u,
+1231665285u, 2457048126u,
+3438440082u, 2217471853u,
+3355404249u, 3275550588u,
+1052645068u, 862072556u,
+4110617119u, 3745267835u,
+2657392572u, 4279236653u,
+1688445808u, 701920051u,
+956734128u, 581695350u,
+3157862788u, 2585726058u,
+1192588249u, 1410111809u,
+1651193125u, 3326135446u,
+1073280453u, 97376972u,
+2513844237u, 2187968410u,
+3976859649u, 4267859263u,
+3429034542u, 564493077u,
+3000537321u, 479241367u,
+3845637831u, 2868987960u,
+51544337u, 1029173765u,
+393624922u, 704325635u,
+2357610553u, 1418509533u,
+2007814586u, 3866658271u,
+3082385053u, 735688735u,
+916110004u, 3283299459u,
+1051684175u, 1083796807u,
+4074716319u, 813690332u,
+144264390u, 1439630796u,
+1508556987u, 675582689u,
+3748881891u, 3195309868u,
+362884708u, 1616408198u,
+43233176u, 837301135u,
+881504822u, 3254795114u,
+1385506591u, 2799925823u,
+1469874582u, 3464841997u,
+497175391u, 3929484338u,
+3975771289u, 1798536177u,
+2926265846u, 1374242438u,
+3675707838u, 4205965408u,
+3153165629u, 1499475160u,
+187287713u, 548490821u,
+3255259608u, 4247675634u,
+1940181471u, 3779953975u,
+687167150u, 2319566715u,
+1742785722u, 785893184u,
+2296977392u, 2778575413u,
+1794720651u, 48131484u,
+4084891412u, 1160134629u,
+3737623280u, 823113169u,
+3423207646u, 3803213486u,
+710625654u, 4116162021u,
+3693420287u, 4167766971u,
+1666602807u, 295320990u,
+3513255468u, 2487440590u,
+234080704u, 4004655503u,
+2971762528u, 1479656873u,
+4090178629u, 4044418876u,
+391947536u, 1462554406u,
+3909295855u, 1239580330u,
+1515601363u, 2011102035u,
+1442068334u, 4265993528u,
+1191921695u, 2291355695u,
+4257172787u, 576405853u,
+314332944u, 4038839101u,
+55559918u, 2378985842u,
+711098718u, 2425317635u,
+1644327317u, 1401013391u,
+4193760037u, 2958260436u,
+3167371443u, 3062418115u,
+3800755475u, 3167030094u,
+3489648204u, 1405430357u,
+526177822u, 2602636307u,
+915406019u, 4264167741u,
+1484090483u, 3070944737u,
+254529415u, 4017058800u,
+1702710265u, 1029665228u,
+2000382906u, 3185573940u,
+1381258384u, 4036354071u,
+2900841028u, 2670703363u,
+2921748807u, 2899069938u,
+4130543625u, 688472265u,
+4186808827u, 1054670286u,
+1132985391u, 2840525968u,
+4175776103u, 338058159u,
+1735964501u, 1539305024u,
+3497121710u, 1568260669u,
+2227290760u, 146827036u,
+3977176001u, 4060134777u,
+857488494u, 250055052u,
+4284109679u, 2502815838u,
+2592281721u, 1603444633u,
+1390562014u, 1556658131u,
+616327404u, 2448966429u,
+3051191726u, 3891353218u,
+1213304082u, 762328245u,
+2239052397u, 1082330589u,
+2455957292u, 201837927u,
+405397452u, 3079886794u,
+2583939798u, 2848283092u,
+3750724631u, 883849006u,
+3204198988u, 3341327098u,
+1855234968u, 1982110346u,
+1485529487u, 541496720u,
+4117290321u, 3607433551u,
+2168864636u, 133643215u,
+1055817409u, 3847827123u,
+2960769387u, 4046101649u,
+1176127003u, 4015671361u,
+4243643405u, 2849988118u,
+517111221u, 1796672358u,
+2045051700u, 3452457457u,
+2948254999u, 2102063419u,
+1556410577u, 1536380876u,
+3776661467u, 3281002516u,
+1735616066u, 1539151988u,
+1087795162u, 3332431596u,
+685631442u, 1147951686u,
+95237878u, 2005032160u,
+4012206915u, 4224354805u,
+3204999386u, 2415262714u,
+1433635018u, 116647396u,
+83167836u, 2881562655u,
+2729416454u, 1029284767u,
+881378302u, 2159170082u,
+555057366u, 1169104445u,
+3963877000u, 1919171906u,
+336034862u, 2017579106u,
+4059340529u, 3020819343u,
+865146997u, 2473524405u,
+944743644u, 1694443528u,
+1804513294u, 2904752429u,
+617975720u, 3671562289u,
+260177668u, 505662155u,
+1885941445u, 2504509403u,
+2260041112u, 1019936943u,
+3722741628u, 1511077569u,
+3100701179u, 1379422864u,
+1535670711u, 773792826u,
+1103819072u, 2089123665u,
+1157547425u, 329152940u,
+4142587430u, 484732447u,
+2475035432u, 1120017626u,
+412145504u, 965125959u,
+324924679u, 2809286837u,
+2842141483u, 4029205195u,
+2974306813u, 515627448u,
+3791551981u, 1097806406u,
+3873078673u, 136118734u,
+1872130856u, 3632422367u,
+3574135531u, 4017075736u,
+1699452298u, 1403506686u,
+344414660u, 1189129691u,
+3487080616u, 1516736273u,
+1805475756u, 2562064338u,
+163335594u, 2732147834u,
+4077452507u, 2984955003u,
+4271866024u, 3071338162u,
+2347111903u, 873829983u,
+1948409509u, 1923531348u,
+459509140u, 771592405u,
+1750124750u, 2334938333u,
+213811117u, 2586632018u,
+185232757u, 4032960199u,
+2447383637u, 284777551u,
+1654276320u, 2687561076u,
+3512945009u, 308584855u,
+1861027147u, 4102279334u,
+3203802620u, 1692079268u,
+4250142168u, 2565680167u,
+1507046104u, 841195925u,
+520565830u, 3674576684u,
+38924274u, 3770488806u,
+2414430882u, 3978473838u,
+3703994407u, 69201295u,
+3099963860u, 1255084262u,
+690971838u, 3539996781u,
+3696902571u, 3593730713u,
+2363435042u, 54945052u,
+1785765213u, 184911581u,
+1586241476u, 1939595371u,
+2534883189u, 2432427547u,
+2374171993u, 2039128933u,
+2955715987u, 2295501078u,
+2741583197u, 1280920000u,
+686818699u, 1238742497u,
+3843660102u, 82177963u,
+1281043691u, 1121403845u,
+1697846708u, 284852964u,
+278661677u, 2889101923u,
+2127558730u, 713121337u,
+872502474u, 511142139u,
+1261140657u, 1747052377u,
+2108187161u, 927011680u,
+955328267u, 3821994995u,
+2707230761u, 4142246789u,
+4134691985u, 1958963937u,
+2498463509u, 1977988705u,
+1419293714u, 1636932722u,
+2567532373u, 4075249328u,
+240575705u, 1956681213u,
+2598802768u, 2025886508u,
+4104757832u, 3026358429u,
+3242615202u, 4026813725u,
+255108733u, 1845587644u,
+3573008472u, 3615577014u,
+1222733548u, 1205557630u,
+917608574u, 1363253259u,
+1541946015u, 3087190425u,
+1138008081u, 1444019663u,
+109793386u, 341851980u,
+857839960u, 2515339233u,
+156283211u, 1906768669u,
+3886713057u, 1276595523u,
+2809830736u, 460237542u,
+3420452099u, 142985419u,
+205970448u, 4198897105u,
+1950698961u, 2069753399u,
+1142216925u, 1113051162u,
+1033680610u, 4278599955u,
+1106466069u, 356742959u,
+531521052u, 3494863964u,
+225629455u, 3735275001u,
+3662626864u, 1750561299u,
+1012864651u, 2101846429u,
+1074553219u, 668829411u,
+992181339u, 3384018814u,
+3330664522u, 860966321u,
+1885071395u, 4233785523u,
+100741310u, 451656820u,
+2148187612u, 1063001151u,
+360256231u, 107312677u,
+3650357479u, 2390172694u,
+22452685u, 237319043u,
+3600462351u, 1216645846u,
+2088767754u, 164402616u,
+2418980170u, 926137824u,
+94638678u, 1689811113u,
+2751052984u, 1767810825u,
+271289013u, 3896132233u,
+103797041u, 1397772514u,
+3441135892u, 3323383489u,
+2491268371u, 1662561885u,
+1612872497u, 2986430557u,
+2756998822u, 207428029u,
+937973965u, 2791656726u,
+1949717207u, 2260498180u,
+2648427775u, 2360400900u,
+2080496169u, 486358863u,
+1582022990u, 1263709570u,
+1396468647u, 1377764574u,
+363008508u, 1293502429u,
+224580012u, 4252610345u,
+1435134775u, 1099809675u,
+533671980u, 1533438766u,
+1820532305u, 2776960536u,
+3374512975u, 3542220540u,
+822810075u, 3716663290u,
+1157398049u, 3752806924u,
+4081637863u, 337070226u,
+3866585976u, 359270190u,
+2110942730u, 3267551635u,
+644850146u, 1306761320u,
+746972907u, 934259457u,
+2341378668u, 2220373824u,
+1242645122u, 4109252858u,
+1625266099u, 1173698481u,
+383517064u, 896322512u,
+3377483696u, 1788337208u,
+455496839u, 3194373887u,
+1837689083u, 1336556841u,
+1658628529u, 2911512007u,
+3838343487u, 2757664765u,
+1537187340u, 3712582785u,
+367022558u, 3071359622u,
+3926147070u, 35432879u,
+3093195926u, 2561488770u,
+4273132307u, 3898950547u,
+2838251049u, 2103926083u,
+2549435227u, 536047554u,
+1858986613u, 2040551642u,
+1147412575u, 1972369852u,
+4166184983u, 3528794619u,
+4077477194u, 3565689036u,
+808048238u, 3826350461u,
+1359641525u, 1197100813u,
+265993036u, 1864569342u,
+725164342u, 2264788336u,
+1831223342u, 3329594980u,
+923017956u, 490608221u,
+3818634478u, 258154469u,
+1441714797u, 1174785921u,
+3833372385u, 3287246572u,
+1677395563u, 3569218731u,
+868981704u, 2163330264u,
+2649450292u, 500120236u,
+465161780u, 746438382u,
+1145009669u, 2520062970u,
+2810524030u, 1561519055u,
+1479878006u, 3864969305u,
+2686075657u, 4042710240u,
+3224066062u, 2774151984u,
+2226179547u, 1643626042u,
+2328730865u, 3160666939u,
+2107011431u, 96459446u,
+3920328742u, 3336407558u,
+829404209u, 1878067032u,
+1235983679u, 4237425634u,
+466519055u, 3870676863u,
+934312076u, 2952135524u,
+276949224u, 4100839753u,
+424001484u, 1955120893u,
+4015478120u, 1265237690u,
+427484362u, 4246879223u,
+3452969617u, 1724363362u,
+1553513184u, 834830418u,
+1858777639u, 3476334357u,
+4144030366u, 2450047160u,
+2950762705u, 4277111759u,
+358032121u, 2511026735u,
+167923105u, 2059208280u,
+251949572u, 3065234219u,
+1535473864u, 556796152u,
+1513237478u, 3150857516u,
+1103404394u, 198182691u,
+1476438092u, 2913077464u,
+207119516u, 3963810232u,
+2954651680u, 1535115487u,
+3051522276u, 4046477658u,
+917804636u, 864395565u,
+632704095u, 140762681u,
+1802040304u, 990407433u,
+3771506212u, 4106024923u,
+1287729497u, 2198985327u,
+4052924496u, 2926590471u,
+3084557148u, 1472898694u,
+1009870118u, 559702706u,
+4265214507u, 82077489u,
+3067891003u, 3295678907u,
+2402308151u, 1096697687u,
+464407878u, 4190838199u,
+4269578403u, 3060919438u,
+2899950405u, 3046872820u,
+733509243u, 1583801700u,
+40453902u, 3879773881u,
+1993425202u, 2185339100u,
+1877837196u, 3912423882u,
+3293122640u, 4104318469u,
+1679617763u, 3703603898u,
+8759461u, 2540185277u,
+1152198475u, 2038345882u,
+2503579743u, 1446869792u,
+2019419351u, 4051584612u,
+3178289407u, 3992503830u,
+2879018745u, 2719373510u,
+700836153u, 1675560450u,
+4121245793u, 2064715719u,
+343595772u, 1996164093u,
+3130433948u, 405251683u,
+2804817126u, 1607133689u,
+463852893u, 2864244470u,
+2224044848u, 4071581802u,
+2537107938u, 2246347953u,
+3207234525u, 2028708916u,
+2272418128u, 803575837u,
+38655481u, 2170452091u,
+3272166407u, 557660441u,
+4019147902u, 3841480082u,
+298459606u, 2600943364u,
+2440657523u, 255451671u,
+3424361375u, 779434428u,
+3088526123u, 490671625u,
+1322855877u, 3452203069u,
+3057021940u, 2285701422u,
+2014993457u, 2390431709u,
+2002090272u, 1568745354u,
+1783152480u, 823305654u,
+4053862835u, 2200236540u,
+3009412313u, 3184047862u,
+3032187389u, 4159715581u,
+2966902888u, 252986948u,
+1849329144u, 3160134214u,
+3420960112u, 3198900547u,
+749160960u, 379139040u,
+1208883495u, 1566527339u,
+3006227299u, 4194096960u,
+556075248u, 497404038u,
+1717327230u, 1496132623u,
+1775955687u, 1719108984u,
+1014328900u, 4189966956u,
+2108574735u, 2584236470u,
+684087286u, 531310503u,
+4264509527u, 773405691u,
+3088905079u, 3456882941u,
+3105682208u, 3382290593u,
+2289363624u, 3296306400u,
+4168438718u, 467441309u,
+777173623u, 3241407531u,
+1183994815u, 1132983260u,
+1610606159u, 2540270567u,
+2649684057u, 1397502982u,
+146657385u, 3318434267u,
+2109315753u, 3348545480u,
+3193669211u, 811750340u,
+1073256162u, 3571673088u,
+546596661u, 1017047954u,
+3403136990u, 2540585554u,
+1477047647u, 4145867423u,
+2826408201u, 3531646869u,
+784952939u, 943914610u,
+2717443875u, 3657384638u,
+1806867885u, 1903578924u,
+3985088434u, 1911188923u,
+1764002686u, 3672748083u,
+1832925325u, 241574049u,
+519948041u, 3181425568u,
+2939747257u, 1634174593u,
+3429894862u, 3529565564u,
+1089679033u, 240953857u,
+2025369941u, 2695166650u,
+517086873u, 2964595704u,
+3017658263u, 3828377737u,
+2144895011u, 994799311u,
+1184683823u, 4260564140u,
+308018483u, 4262383425u,
+1374752558u, 3431057723u,
+1572637805u, 383233885u,
+3188015819u, 4051263539u,
+233319221u, 3794788167u,
+2017406667u, 919677938u,
+4074952232u, 1683612329u,
+4213676186u, 327142514u,
+3032591014u, 4204155962u,
+206775997u, 2283918569u,
+2395147154u, 3427505379u,
+2211319468u, 4153726847u,
+2217060665u, 350160869u,
+2493667051u, 1648200185u,
+3441709766u, 1387233546u,
+140980u, 1891558063u,
+760080239u, 2088061981u,
+1580964938u, 740563169u,
+422986366u, 330624974u,
+4264507722u, 150928357u,
+2738323042u, 2948665536u,
+918718096u, 376390582u,
+3966098971u, 717653678u,
+3219466255u, 3799363969u,
+3424344721u, 3187805406u,
+375347278u, 3490350144u,
+1992212097u, 2263421398u,
+3855037968u, 1928519266u,
+3866327955u, 1129127000u,
+1782515131u, 2746577402u,
+3059200728u, 2108753646u,
+2738070963u, 1336849395u,
+1705302106u, 768287270u,
+1343511943u, 2247006571u,
+1956142255u, 1780259453u,
+3475618043u, 212490675u,
+622521957u, 917121602u,
+1852992332u, 1267987847u,
+3170016833u, 2549835613u,
+3299763344u, 2864033668u,
+3378768767u, 1236609378u,
+4169365948u, 3738062408u,
+2661022773u, 2006922227u,
+2760592161u, 3828932355u,
+2636387819u, 2616619070u,
+1237256330u, 3449066284u,
+2871755260u, 3729280948u,
+3862686086u, 431292293u,
+3285899651u, 786322314u,
+2531158535u, 724901242u,
+2377363130u, 1415970351u,
+1244759631u, 3263135197u,
+965248856u, 174024139u,
+2297418515u, 2954777083u,
+987586766u, 3206261120u,
+4059515114u, 3903854066u,
+1931934525u, 2287507921u,
+1827135136u, 1781944746u,
+574617451u, 2299034788u,
+2650140034u, 4081586725u,
+2482286699u, 1109175923u,
+458483596u, 618705848u,
+4059852729u, 1813855658u,
+4190721328u, 1129462471u,
+4089998050u, 3575732749u,
+2375584220u, 1037031473u,
+1623777358u, 3389003793u,
+546597541u, 352770237u,
+1383747654u, 3122687303u,
+1646071378u, 1164309901u,
+290870767u, 830691298u,
+929335420u, 3193251135u,
+989577914u, 3626554867u,
+591974737u, 3996958215u,
+3163711272u, 3071568023u,
+1516846461u, 3656006011u,
+2698625268u, 2510865430u,
+340274176u, 1167681812u,
+3698796465u, 3155218919u,
+4102288238u, 1673474350u,
+3069708839u, 2704165015u,
+1237411891u, 1854985978u,
+3646837503u, 3625406022u,
+921552000u, 1712976649u,
+3939149151u, 878608872u,
+3406359248u, 1068844551u,
+1834682077u, 4155949943u,
+2437686324u, 3163786257u,
+2645117577u, 1988168803u,
+747285578u, 1626463554u,
+1235300371u, 1256485167u,
+1914142538u, 4141546431u,
+3838102563u, 582664250u,
+1883344352u, 2083771672u,
+2611657933u, 2139079047u,
+2250573853u, 804336148u,
+3066325351u, 2770847216u,
+4275641370u, 1455750577u,
+3346357270u, 1674051445u,
+601221482u, 3992583643u,
+1402445097u, 3622527604u,
+2509017299u, 2966108111u,
+2557027816u, 900741486u,
+1790771021u, 2912643797u,
+2631381069u, 4014551783u,
+90375300u, 300318232u,
+3269968032u, 2679371729u,
+2664752123u, 3517585534u,
+3253901179u, 542270815u,
+1188641600u, 365479232u,
+2210121140u, 760762191u,
+1273768482u, 1216399252u,
+3484324231u, 4287337666u,
+16322182u, 643179562u,
+325675502u, 3652676161u,
+3120716054u, 3330259752u,
+1011990087u, 2990167340u,
+1097584090u, 3262252593u,
+1829409951u, 3665087267u,
+1214854475u, 2134299399u,
+3704419305u, 411263051u,
+1625446136u, 549838529u,
+4283196353u, 1342880802u,
+3460621305u, 1967599860u,
+4282843369u, 1275671016u,
+2544665755u, 853593042u,
+901109753u, 2682611693u,
+110631633u, 797487791u,
+1472073141u, 850464484u,
+797089608u, 3286110054u,
+350397471u, 2775631060u,
+366448238u, 3842907484u,
+2219863904u, 3623364733u,
+1850985302u, 4009616991u,
+294963924u, 3693536939u,
+3061255808u, 1615375832u,
+1920066675u, 4113028420u,
+4032223840u, 2318423400u,
+2701956286u, 4145497671u,
+3991532344u, 2536338351u,
+1679099863u, 1728968857u,
+449740816u, 2686506989u,
+685242457u, 97590863u,
+3258354115u, 1502282913u,
+1235084019u, 2151665147u,
+528459289u, 231097464u,
+2477280726u, 3651607391u,
+2091754612u, 1178454681u,
+980597335u, 1604483865u,
+1842333726u, 4146839064u,
+3213794286u, 2601416506u,
+754220096u, 3571436033u,
+488595746u, 1448097974u,
+4004834921u, 238887261u,
+3320337489u, 1416989070u,
+2928916831u, 4093725287u,
+186020771u, 2367569534u,
+3046087671u, 4090084518u,
+3548184546u, 679517009u,
+1962659444u, 3539886328u,
+4192003933u, 1678423485u,
+3827951761u, 3086277222u,
+2144472852u, 1390394371u,
+2976322029u, 1574517163u,
+3553313841u, 119173722u,
+1702434637u, 1766260771u,
+3629581771u, 1407497759u,
+895654784u, 751439914u,
+4008409498u, 215917713u,
+1482103833u, 695551833u,
+1288382231u, 2656990891u,
+2581779077u, 1570750352u,
+3710689053u, 1741390464u,
+2666411616u, 3533987737u,
+4289478316u, 3576119563u,
+4118694920u, 108199666u,
+3869794273u, 963183826u,
+2081410737u, 3796810515u,
+791123882u, 2525792704u,
+1036883117u, 136547246u,
+875691100u, 2592925324u,
+614302599u, 3013176417u,
+2689342539u, 427154472u,
+532957601u, 1228758574u,
+1898117151u, 1181643858u,
+1908591042u, 1464255968u,
+446980910u, 2984611177u,
+58509511u, 1046943619u,
+3508927906u, 2001585786u,
+2544767379u, 1525438381u,
+552181222u, 1959725830u,
+879448844u, 1348536411u,
+4242243590u, 2861338018u,
+1082052441u, 1034351453u,
+601175800u, 764077711u,
+530635011u, 3785343245u,
+2178026726u, 117256687u,
+2378297261u, 457568934u,
+76438221u, 4104954272u,
+956793873u, 3783168634u,
+2485968477u, 2381948487u,
+4226929450u, 3148473363u,
+2518273601u, 3569490233u,
+879369091u, 2180270337u,
+3674375989u, 1387729170u,
+977997984u, 4270646856u,
+568650985u, 951677556u,
+4213877384u, 2721005055u,
+1073364549u, 2563403831u,
+1678669911u, 66786703u,
+2273631661u, 1149351924u,
+3651298990u, 1581883443u,
+246723096u, 1895026827u,
+3810605772u, 3711056516u,
+4058833288u, 2193790614u,
+2080120290u, 3638638708u,
+2915672708u, 2263003308u,
+2361934197u, 4136767460u,
+1976115991u, 3448840877u,
+2019238520u, 225333538u,
+874340815u, 2976159827u,
+1555273378u, 3797521928u,
+1942347150u, 3262952567u,
+435997738u, 340403353u,
+2817830907u, 2078619498u,
+749534111u, 1178073973u,
+894654712u, 3361226032u,
+841092198u, 3288261538u,
+1696412169u, 1496966875u,
+697501571u, 1059158875u,
+3739946319u, 2481012988u,
+568983526u, 114945840u,
+1559249010u, 2218244008u,
+2841706923u, 1632780103u,
+4020169654u, 2087949619u,
+2438736103u, 24032648u,
+833416317u, 3787017905u,
+2373238993u, 2575395164u,
+3434544481u, 3228481067u,
+2542976862u, 2971726178u,
+2880371864u, 3642087909u,
+2407477975u, 2239080836u,
+1043714217u, 3894199764u,
+2235879182u, 203853421u,
+2933669448u, 2504940536u,
+834683330u, 425935223u,
+3560796393u, 3565833278u,
+1668000829u, 3683399154u,
+3414330886u, 1748785729u,
+1023171602u, 580966986u,
+2531038985u, 3227325488u,
+2657385925u, 2124704694u,
+233442446u, 1107045577u,
+3407293834u, 552770757u,
+3899097693u, 1067532701u,
+115667924u, 1406028344u,
+1707768231u, 3724015962u,
+2419657149u, 18613994u,
+2532882091u, 3476683808u,
+1560838678u, 811220224u,
+895961699u, 3762914298u,
+1328752423u, 1844996900u,
+1420427894u, 1848067707u,
+1210281744u, 904215228u,
+4055325594u, 1118521573u,
+2496554183u, 2579259919u,
+3996647489u, 3657647605u,
+325254059u, 3136157065u,
+3951522674u, 4052925250u,
+3341068436u, 2287683323u,
+1313073005u, 126005630u,
+2505120084u, 1194725057u,
+853746559u, 3555092974u,
+2689238752u, 49515858u,
+1244776042u, 1069300695u,
+61073168u, 1010661841u,
+1269521335u, 1902040126u,
+990632502u, 2378708922u,
+3858321250u, 1400735275u,
+2974699176u, 2771676666u,
+170995186u, 2877798589u,
+545726212u, 2225229957u,
+1086473152u, 3454177594u,
+3859483262u, 1499729584u,
+2088002891u, 2883475137u,
+3222194252u, 4144472319u,
+2212229854u, 4146740722u,
+567988835u, 1051332394u,
+3932046135u, 542648229u,
+3017852446u, 1277887997u,
+162888005u, 1669710469u,
+1492500905u, 553041029u,
+1434876932u, 533989516u,
+3817492747u, 584127807u,
+4147115982u, 2993670925u,
+4020312558u, 710021255u,
+3509733475u, 3587959456u,
+2088550465u, 1745399498u,
+2952242967u, 1259815443u,
+869648362u, 1404723176u,
+3947542735u, 1334333531u,
+3873471582u, 229399758u,
+59634866u, 3239516985u,
+3844250972u, 1275954779u,
+492891666u, 1029533080u,
+1552951157u, 367320647u,
+699480890u, 3684418197u,
+3707014310u, 471105777u,
+1824587258u, 4030809053u,
+3489914436u, 484559105u,
+1235750398u, 1428453396u,
+4230459084u, 4255931645u,
+1848597055u, 4271715616u,
+331780381u, 482425775u,
+2435323270u, 3171911678u,
+3507210587u, 928543347u,
+4197807526u, 3680046204u,
+2766042024u, 2159512867u,
+179373257u, 313902234u,
+4024837592u, 294795361u,
+1622282562u, 647086234u,
+2825039429u, 577214736u,
+4043412446u, 2426981244u,
+1277736097u, 1130129573u,
+2601395338u, 995791646u,
+36668922u, 3344746679u,
+1521532225u, 1645086060u,
+2622763015u, 4122335794u,
+2936887705u, 494465807u,
+2580840343u, 1064648931u,
+1247887787u, 2752145076u,
+1277612417u, 1249660507u,
+2288678613u, 3312498873u,
+2459273912u, 4238535494u,
+3117488020u, 2571979978u,
+2680188909u, 1471227427u,
+1616494033u, 633688562u,
+2268653416u, 3268237290u,
+3021962815u, 1959779970u,
+3321382074u, 766642813u,
+204429780u, 1323319858u,
+3676032891u, 1380896111u,
+4030639049u, 3647601207u,
+1830028502u, 2830263774u,
+1375962216u, 1733961041u,
+939765180u, 521947915u,
+3903267364u, 497472767u,
+1619700946u, 189164145u,
+3115593885u, 486382294u,
+1262445920u, 4062496162u,
+2464795849u, 3770038872u,
+4032121374u, 3235740744u,
+3757765258u, 1777199847u,
+2167243108u, 1912506671u,
+4180515317u, 2276864677u,
+536034089u, 2384915026u,
+162938278u, 1588060152u,
+4018349945u, 2504457929u,
+841450426u, 2790120722u,
+2719983588u, 1471020554u,
+1390856732u, 3623212998u,
+2506944218u, 1035080801u,
+348812127u, 3026631806u,
+746483541u, 2342164722u,
+122104390u, 4074122771u,
+3986865419u, 1674890530u,
+3693306023u, 3011542850u,
+1294951725u, 899303190u,
+3577146915u, 3549160092u,
+1241677652u, 4290680005u,
+3193053279u, 2029187390u,
+3298063095u, 3943068002u,
+3946220635u, 2273781461u,
+889053698u, 1376304022u,
+1486839612u, 2127663659u,
+344127443u, 1646681121u,
+2780117810u, 2142045764u,
+2694572773u, 447810651u,
+2185527146u, 2366308558u,
+290335413u, 584901173u,
+2012370276u, 970504950u,
+3258236042u, 2008155560u,
+3945579565u, 614796295u,
+24452072u, 2695940969u,
+3983727134u, 3444688454u,
+1327044473u, 3545633451u,
+1875293322u, 1739318893u,
+1707527799u, 2683090634u,
+2848082386u, 2814622471u,
+4111401777u, 2774816580u,
+3849839194u, 437560100u,
+2238350150u, 2462124836u,
+665017710u, 512012738u,
+2945294779u, 3305170944u,
+819477765u, 59419271u,
+155125658u, 665292744u,
+444722813u, 3580039116u,
+2355675635u, 663735032u,
+3247800169u, 1579404983u,
+1985115003u, 3397891494u,
+358696453u, 1474896279u,
+516388613u, 710590371u,
+3490497111u, 2514565805u,
+2386143445u, 477509654u,
+412854590u, 3624609754u,
+3214388668u, 3516075816u,
+2731288520u, 1369482895u,
+4033204378u, 1314000850u,
+829769325u, 1935166880u,
+1608191643u, 2607067237u,
+423820371u, 3257747610u,
+1355298041u, 3776931214u,
+4105054901u, 2107080812u,
+1911521879u, 3183054185u,
+3910177801u, 675129307u,
+1209358971u, 4205727791u,
+1435726287u, 3333261712u,
+1400982708u, 1154611403u,
+1663501483u, 2837596667u,
+3164734053u, 2759854023u,
+4012043629u, 1963228038u,
+3981675284u, 2677557877u,
+520119591u, 505138315u,
+897271356u, 1803966773u,
+1016663294u, 616691903u,
+2254742522u, 4032705384u,
+2468470796u, 798395739u,
+3025169002u, 3570037122u,
+1461093710u, 3473799845u,
+3702624858u, 476400898u,
+1043039728u, 2304070437u,
+181576948u, 602972493u,
+3996616030u, 3289878097u,
+2068516226u, 3922247304u,
+1299968266u, 2520311409u,
+1968824721u, 3214794876u,
+1581813122u, 2668800905u,
+3297613974u, 748160407u,
+1145536484u, 1326769504u,
+2973323521u, 3775262814u,
+3218653169u, 902775872u,
+3498603433u, 1372805534u,
+704686363u, 3626542352u,
+2271580579u, 1213925114u,
+46329775u, 3009384989u,
+1330254048u, 1194824134u,
+514204310u, 3781981134u,
+442526164u, 2835608783u,
+3460471867u, 510634034u,
+546406434u, 2716786748u,
+2840500021u, 1669490957u,
+2536189149u, 3251421224u,
+1358736072u, 1089334066u,
+3260749330u, 250756920u,
+2974806681u, 1513718866u,
+82635635u, 4041016629u,
+3391765744u, 2495807367u,
+3962674316u, 2822889695u,
+753413337u, 2008251381u,
+3123390177u, 106212622u,
+490570565u, 1684884205u,
+793892547u, 1927268995u,
+2344148164u, 2251978818u,
+437424236u, 2774023200u,
+2674940754u, 3788056262u,
+2597882666u, 3678660147u,
+3797434193u, 3838215866u,
+279687080u, 2656772270u,
+2190204787u, 1997584981u,
+3384401882u, 3160208845u,
+3629379425u, 2668998785u,
+1050036757u, 2954162084u,
+917091826u, 1744374041u,
+1454282570u, 845687881u,
+2997173625u, 776018378u,
+1137560602u, 1938378389u,
+1748082354u, 2066910012u,
+2677675207u, 918315064u,
+};
+
+// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
+bool Test(int offset, int len = 0) {
+#undef Check
+#undef IsAlive
+
+#define Check(x) do { \
+ const uint32_t actual = (x), e = expected[index++]; \
+ bool ok = actual == e; \
+ if (!ok) { \
+ cerr << "expected " << hex << e << " but got " << actual << endl; \
+ ++errors; \
+ } \
+ assert(ok); \
+} while (0)
+
+#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
+
+ // After the following line is where the uses of "Check" and such will go.
+ static int index = 0;
+if (offset == -1) { int alive = 0; { uint64_t h = farmhashte::Hash64WithSeeds(data, len++, SEED0, SEED1); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } { uint64_t h = farmhashte::Hash64WithSeed(data, len++, SEED); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } { uint64_t h = farmhashte::Hash64(data, len++); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } len -= 3; return alive > 0; }
+{ uint64_t h = farmhashte::Hash64WithSeeds(data + offset, len, SEED0, SEED1); Check(h >> 32); Check((h << 32) >> 32); }
+{ uint64_t h = farmhashte::Hash64WithSeed(data + offset, len, SEED); Check(h >> 32); Check((h << 32) >> 32); }
+{ uint64_t h = farmhashte::Hash64(data + offset, len); Check(h >> 32); Check((h << 32) >> 32); }
+
+ return true;
+#undef Check
+#undef IsAlive
+}
+
+int RunTest() {
+ Setup();
+ int i = 0;
+ cout << "Running farmhashteTest";
+ if (!Test(-1)) {
+ cout << "... Unavailable\n";
+ return NoteErrors();
+ }
+ // Good. The function is attempting to hash, so run the full test.
+ int errors_prior_to_test = errors;
+ for ( ; i < kTestSize - 1; i++) {
+ Test(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ Test(0, i);
+ }
+ Test(0, kDataSize);
+ cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
+ return NoteErrors();
+}
+
+#else
+
+// After the following line is where the code to print hash codes will go.
+void Dump(int offset, int len) {
+{ uint64_t h = farmhashte::Hash64WithSeeds(data + offset, len, SEED0, SEED1); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
+{ uint64_t h = farmhashte::Hash64WithSeed(data + offset, len, SEED); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
+{ uint64_t h = farmhashte::Hash64(data + offset, len); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
+}
+
+#endif
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+
+} // namespace farmhashteTest
+
+#if !TESTING
+int main(int argc, char** argv) {
+ Setup();
+ cout << "uint32_t expected[] = {\n";
+ int i = 0;
+ for ( ; i < kTestSize - 1; i++) {
+ farmhashteTest::Dump(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ farmhashteTest::Dump(0, i);
+ }
+ farmhashteTest::Dump(0, kDataSize);
+ cout << "};\n";
+}
+#endif
+#ifndef FARMHASH_SELF_TEST_GUARD
+#define FARMHASH_SELF_TEST_GUARD
+#include <cstdio>
+#include <iostream>
+#include <string.h>
+
+using std::cout;
+using std::cerr;
+using std::endl;
+using std::hex;
+
+static const uint64_t kSeed0 = 1234567;
+static const uint64_t kSeed1 = k0;
+static const int kDataSize = 1 << 20;
+static const int kTestSize = 300;
+#define kSeed128 Uint128(kSeed0, kSeed1)
+
+static char data[kDataSize];
+
+static int completed_self_tests = 0;
+static int errors = 0;
+
+// Initialize data to pseudorandom values.
+void Setup() {
+ if (completed_self_tests == 0) {
+ uint64_t a = 9;
+ uint64_t b = 777;
+ for (int i = 0; i < kDataSize; i++) {
+ a += b;
+ b += a;
+ a = (a ^ (a >> 41)) * k0;
+ b = (b ^ (b >> 41)) * k0 + i;
+ uint8_t u = b >> 37;
+ memcpy(data + i, &u, 1); // uint8_t -> char
+ }
+ }
+}
+
+int NoteErrors() {
+#define NUM_SELF_TESTS 9
+ if (++completed_self_tests == NUM_SELF_TESTS)
+ std::exit(errors > 0);
+ return errors;
+}
+
+template <typename T> inline bool IsNonZero(T x) {
+ return x != 0;
+}
+
+template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
+ return x != Uint128(0, 0);
+}
+
+#endif // FARMHASH_SELF_TEST_GUARD
+
+namespace farmhashuoTest {
+
+uint32_t CreateSeed(int offset, int salt) {
+ uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h += static_cast<uint32_t>(offset & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ return h;
+}
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+#define SEED CreateSeed(offset, -1)
+#define SEED0 CreateSeed(offset, 0)
+#define SEED1 CreateSeed(offset, 1)
+
+#undef TESTING
+#define TESTING 1
+#if TESTING
+uint32_t expected[] = {
+3277735313u, 2681724312u,
+2598464059u, 797982799u,
+2603993599u, 921001710u,
+1410420968u, 2134990486u,
+2914424215u, 2244477846u,
+255297188u, 2992121793u,
+161451183u, 3943596029u,
+4019337850u, 452431531u,
+3379021470u, 2557197665u,
+299850021u, 2532580744u,
+1298374911u, 3099673830u,
+2199864459u, 3696623795u,
+4055299123u, 3281581178u,
+1053458494u, 1882212500u,
+3456121707u, 275903667u,
+458884671u, 3033004529u,
+1898235244u, 1402319660u,
+2700149065u, 2699376854u,
+2433714046u, 4222949502u,
+4220361840u, 1712034059u,
+4148372108u, 1330324210u,
+594028478u, 2921867846u,
+780716741u, 1728752234u,
+3280331829u, 326029180u,
+393215742u, 3349570000u,
+3824583307u, 1612122221u,
+1379537552u, 1646032583u,
+2233466664u, 1432476832u,
+2052294713u, 3552092450u,
+1628777059u, 1499109081u,
+2960536756u, 1554038301u,
+1145519619u, 3190844552u,
+237495366u, 540224401u,
+65721842u, 489963606u,
+1596489240u, 1562872448u,
+1790705123u, 2128624475u,
+1435705557u, 1262831810u,
+155445229u, 1672724608u,
+663607706u, 2077310004u,
+3610042449u, 1911523866u,
+2563776023u, 294527927u,
+1099072299u, 1389770549u,
+2952353448u, 2026137563u,
+3603803785u, 629449419u,
+226132789u, 2489287368u,
+1552847036u, 645684964u,
+187883449u, 230403464u,
+3151491850u, 3272648435u,
+2002861219u, 165370827u,
+916494250u, 1230085527u,
+3807265751u, 3628174014u,
+231181488u, 851743255u,
+2988893883u, 1554380634u,
+1142264800u, 3667013118u,
+2638023604u, 2290487377u,
+732137533u, 1909203251u,
+1380301172u, 1498556724u,
+4072067757u, 4165088768u,
+3931792696u, 197618179u,
+956300927u, 914413116u,
+2148126371u, 1913303225u,
+3074915312u, 3117299654u,
+3178848746u, 1357272220u,
+1438494951u, 507436733u,
+3854939912u, 1413396341u,
+126024219u, 146044391u,
+3254014218u, 429095991u,
+165589978u, 1578546616u,
+623071693u, 366414107u,
+249776086u, 1207522198u,
+3120876698u, 1684583131u,
+46987739u, 1157614300u,
+199124911u, 520792961u,
+3614377032u, 586863115u,
+1716848157u, 4033596884u,
+1164298657u, 4140791139u,
+3824360466u, 3242407770u,
+3725511003u, 232064808u,
+2736953692u, 816692935u,
+512845449u, 3748861010u,
+4290630595u, 517646945u,
+22638523u, 648000590u,
+1283799121u, 3047062993u,
+1024246061u, 4027776454u,
+834785312u, 382936554u,
+411505255u, 1973395102u,
+580988377u, 2826990641u,
+3474970689u, 1029055034u,
+2584372201u, 1758123094u,
+589567754u, 325737734u,
+3886113119u, 3338548567u,
+257578986u, 3698087965u,
+3604937815u, 3198590202u,
+2305332220u, 191910725u,
+4244322689u, 542201663u,
+3315355162u, 2135941665u,
+1175961330u, 3948351189u,
+23075771u, 3252374102u,
+713127376u, 1467786451u,
+663013031u, 3444053918u,
+3077742128u, 1062268187u,
+2115441882u, 4081398201u,
+2335576331u, 2560479831u,
+1379288194u, 4225182569u,
+3958366652u, 3067277639u,
+3667516477u, 1709989541u,
+4188504038u, 59581167u,
+2725013602u, 3639843023u,
+3758739543u, 4189944477u,
+2470483982u, 877580602u,
+3252925478u, 2062343506u,
+3981838403u, 3762572073u,
+2931588131u, 3284356565u,
+1129162571u, 732225574u,
+1677744031u, 3532596884u,
+3232041815u, 1652884780u,
+3740979556u, 259034107u,
+2227121257u, 1426140634u,
+315836068u, 3200749877u,
+1386256573u, 24035717u,
+234531934u, 1115203611u,
+1598686658u, 3146815575u,
+2632963283u, 1778459926u,
+739944537u, 579625482u,
+1231665285u, 2457048126u,
+3903349120u, 389846205u,
+1052645068u, 862072556u,
+2834153464u, 1481069623u,
+1688445808u, 701920051u,
+3740748788u, 3388062747u,
+1192588249u, 1410111809u,
+2633463887u, 4050419847u,
+2513844237u, 2187968410u,
+2951683019u, 3015806005u,
+3000537321u, 479241367u,
+252167538u, 1231057113u,
+393624922u, 704325635u,
+1467197045u, 2066433573u,
+3082385053u, 735688735u,
+956434529u, 4028590195u,
+4074716319u, 813690332u,
+2124740535u, 804073145u,
+3748881891u, 3195309868u,
+841856605u, 2585865274u,
+881504822u, 3254795114u,
+1241815736u, 970796142u,
+497175391u, 3929484338u,
+4264993211u, 1835322201u,
+3675707838u, 4205965408u,
+300298607u, 3858319990u,
+3255259608u, 4247675634u,
+1095823272u, 1197245408u,
+1742785722u, 785893184u,
+1702965674u, 850401405u,
+4084891412u, 1160134629u,
+2555998391u, 1972759056u,
+710625654u, 4116162021u,
+3352753742u, 85121177u,
+3513255468u, 2487440590u,
+2480032715u, 2287747045u,
+4090178629u, 4044418876u,
+1703944517u, 486290428u,
+1515601363u, 2011102035u,
+573985957u, 3536053779u,
+4257172787u, 576405853u,
+1523550693u, 1014952061u,
+711098718u, 2425317635u,
+3460807169u, 3688987163u,
+3167371443u, 3062418115u,
+3330028292u, 1713171303u,
+526177822u, 2602636307u,
+1245357025u, 3346699703u,
+254529415u, 4017058800u,
+1829738451u, 2164236533u,
+1381258384u, 4036354071u,
+1749181924u, 4118435443u,
+4130543625u, 688472265u,
+2731071299u, 2547657502u,
+4175776103u, 338058159u,
+3729582129u, 4181845558u,
+2227290760u, 146827036u,
+2459178427u, 1025353883u,
+4284109679u, 2502815838u,
+825124804u, 2533140036u,
+616327404u, 2448966429u,
+413992636u, 2334782461u,
+2239052397u, 1082330589u,
+3381164715u, 199381437u,
+2583939798u, 2848283092u,
+2300168091u, 2156336315u,
+1855234968u, 1982110346u,
+2482046810u, 3158163887u,
+2168864636u, 133643215u,
+3904021624u, 3646514568u,
+1176127003u, 4015671361u,
+100525019u, 3534706803u,
+2045051700u, 3452457457u,
+1492267772u, 2308393828u,
+3776661467u, 3281002516u,
+4246334524u, 743955039u,
+685631442u, 1147951686u,
+2040912376u, 2911148054u,
+3204999386u, 2415262714u,
+313209105u, 777065474u,
+2729416454u, 1029284767u,
+1632078298u, 1817552554u,
+3963877000u, 1919171906u,
+3843219958u, 3073580867u,
+865146997u, 2473524405u,
+2593817617u, 3643076308u,
+617975720u, 3671562289u,
+121812599u, 2902367378u,
+2260041112u, 1019936943u,
+320945955u, 2337845588u,
+1535670711u, 773792826u,
+3152195900u, 4090794518u,
+4142587430u, 484732447u,
+419191319u, 3377973345u,
+324924679u, 2809286837u,
+1562277603u, 1378362199u,
+3791551981u, 1097806406u,
+1386297408u, 2304900033u,
+3574135531u, 4017075736u,
+1161238398u, 1358056883u,
+3487080616u, 1516736273u,
+851615042u, 2927899494u,
+4077452507u, 2984955003u,
+3907754394u, 3578173844u,
+1948409509u, 1923531348u,
+3578472493u, 3710074193u,
+213811117u, 2586632018u,
+1922589216u, 274958014u,
+1654276320u, 2687561076u,
+2569061755u, 3122046057u,
+3203802620u, 1692079268u,
+477806878u, 140587742u,
+520565830u, 3674576684u,
+91246882u, 1010215946u,
+3703994407u, 69201295u,
+776213083u, 3677771507u,
+3696902571u, 3593730713u,
+2907901228u, 3239753796u,
+1586241476u, 1939595371u,
+2268396558u, 3468719670u,
+2955715987u, 2295501078u,
+2775848696u, 1358532390u,
+3843660102u, 82177963u,
+4094477877u, 191727221u,
+278661677u, 2889101923u,
+1352525614u, 2844977667u,
+1261140657u, 1747052377u,
+2334120653u, 645125282u,
+2707230761u, 4142246789u,
+1068639717u, 2288162940u,
+1419293714u, 1636932722u,
+3252686293u, 318543902u,
+2598802768u, 2025886508u,
+2250788464u, 2711763065u,
+255108733u, 1845587644u,
+3719270134u, 3940707863u,
+917608574u, 1363253259u,
+788659330u, 673256220u,
+109793386u, 341851980u,
+2698465479u, 3011229884u,
+3886713057u, 1276595523u,
+2439962760u, 2700515456u,
+205970448u, 4198897105u,
+875511891u, 371715572u,
+1033680610u, 4278599955u,
+3120038721u, 1256300069u,
+225629455u, 3735275001u,
+3961944123u, 1769389163u,
+1074553219u, 668829411u,
+1098679359u, 2573697509u,
+1885071395u, 4233785523u,
+2513878053u, 2030193788u,
+360256231u, 107312677u,
+310517502u, 2618936366u,
+3600462351u, 1216645846u,
+2970730323u, 4278812598u,
+94638678u, 1689811113u,
+4125738800u, 3103759730u,
+103797041u, 1397772514u,
+1669653333u, 572567964u,
+1612872497u, 2986430557u,
+214990655u, 3117607990u,
+1949717207u, 2260498180u,
+1493936866u, 3554860960u,
+1582022990u, 1263709570u,
+1244120487u, 3416600761u,
+224580012u, 4252610345u,
+286306391u, 814956796u,
+1820532305u, 2776960536u,
+3082703465u, 1659265982u,
+1157398049u, 3752806924u,
+3508246460u, 2902716664u,
+2110942730u, 3267551635u,
+902835431u, 405228165u,
+2341378668u, 2220373824u,
+3303626294u, 1175118221u,
+383517064u, 896322512u,
+1697257567u, 2202820683u,
+1837689083u, 1336556841u,
+914535232u, 3634083711u,
+1537187340u, 3712582785u,
+1088201893u, 3270984620u,
+3093195926u, 2561488770u,
+1962968100u, 236189500u,
+2549435227u, 536047554u,
+422609195u, 2958815818u,
+4166184983u, 3528794619u,
+1042329086u, 3914176886u,
+1359641525u, 1197100813u,
+1269739674u, 3301844628u,
+1831223342u, 3329594980u,
+2433669782u, 494908536u,
+1441714797u, 1174785921u,
+1933050423u, 958901065u,
+868981704u, 2163330264u,
+3243110680u, 1443133429u,
+1145009669u, 2520062970u,
+3851564853u, 2664619323u,
+2686075657u, 4042710240u,
+2125408249u, 4165697916u,
+2328730865u, 3160666939u,
+588683409u, 2126275847u,
+829404209u, 1878067032u,
+2567792910u, 897670516u,
+934312076u, 2952135524u,
+504832490u, 3312698056u,
+4015478120u, 1265237690u,
+3376133707u, 967674402u,
+1553513184u, 834830418u,
+2396504772u, 3278582098u,
+2950762705u, 4277111759u,
+4159211303u, 1290097509u,
+251949572u, 3065234219u,
+1832020534u, 312136369u,
+1103404394u, 198182691u,
+1369599600u, 3906710870u,
+2954651680u, 1535115487u,
+2389327507u, 1813520230u,
+632704095u, 140762681u,
+3123202913u, 3336005523u,
+1287729497u, 2198985327u,
+2470730783u, 3821758006u,
+1009870118u, 559702706u,
+4274686257u, 3187546567u,
+2402308151u, 1096697687u,
+678932329u, 3716363135u,
+2899950405u, 3046872820u,
+3754655641u, 2021741414u,
+1993425202u, 2185339100u,
+2838253700u, 3099212100u,
+1679617763u, 3703603898u,
+1135665833u, 3559875668u,
+2503579743u, 1446869792u,
+879818611u, 3788305533u,
+2879018745u, 2719373510u,
+3606051203u, 2166567748u,
+343595772u, 1996164093u,
+1577656121u, 475248376u,
+463852893u, 2864244470u,
+1332049663u, 3326459767u,
+3207234525u, 2028708916u,
+938916154u, 3115246264u,
+3272166407u, 557660441u,
+1265684026u, 245033807u,
+2440657523u, 255451671u,
+3811885130u, 1399880284u,
+1322855877u, 3452203069u,
+1324994449u, 3796404024u,
+2002090272u, 1568745354u,
+3700047753u, 31799506u,
+3009412313u, 3184047862u,
+728680761u, 3848624873u,
+1849329144u, 3160134214u,
+1272923193u, 1474278816u,
+1208883495u, 1566527339u,
+4136466541u, 630825649u,
+1717327230u, 1496132623u,
+2449386742u, 128106940u,
+2108574735u, 2584236470u,
+2872246579u, 397338552u,
+3088905079u, 3456882941u,
+1715915153u, 2940716269u,
+4168438718u, 467441309u,
+872996731u, 3206901319u,
+1610606159u, 2540270567u,
+1301658081u, 2379410194u,
+2109315753u, 3348545480u,
+2041927873u, 2644077493u,
+546596661u, 1017047954u,
+2596792972u, 2783958892u,
+2826408201u, 3531646869u,
+2219352672u, 4217451852u,
+1806867885u, 1903578924u,
+2076465705u, 2373061493u,
+1832925325u, 241574049u,
+1509517110u, 3703614272u,
+3429894862u, 3529565564u,
+4010000614u, 2256197939u,
+517086873u, 2964595704u,
+3501035294u, 4079457298u,
+1184683823u, 4260564140u,
+2339268412u, 3871564102u,
+1572637805u, 383233885u,
+3351411126u, 3419328182u,
+2017406667u, 919677938u,
+29804156u, 46276077u,
+3032591014u, 4204155962u,
+1172319502u, 969309871u,
+2211319468u, 4153726847u,
+3094193193u, 4240669441u,
+3441709766u, 1387233546u,
+4048882438u, 1217896566u,
+1580964938u, 740563169u,
+3691850348u, 3176426539u,
+2738323042u, 2948665536u,
+1474029445u, 3513354882u,
+3219466255u, 3799363969u,
+3961796122u, 1055550923u,
+1992212097u, 2263421398u,
+4289759174u, 2516844140u,
+1782515131u, 2746577402u,
+721928440u, 3529570984u,
+1705302106u, 768287270u,
+3474902815u, 4000011125u,
+3475618043u, 212490675u,
+549130471u, 2970128275u,
+3170016833u, 2549835613u,
+3691104824u, 2694324482u,
+4169365948u, 3738062408u,
+602930397u, 2148954730u,
+2636387819u, 2616619070u,
+301617872u, 374657036u,
+3862686086u, 431292293u,
+4225245165u, 1358580562u,
+2377363130u, 1415970351u,
+3885060756u, 1438379807u,
+2297418515u, 2954777083u,
+3970368221u, 1229801760u,
+1931934525u, 2287507921u,
+1713471510u, 2145608111u,
+2650140034u, 4081586725u,
+4196863572u, 1896558394u,
+4059852729u, 1813855658u,
+2618400836u, 1396056469u,
+2375584220u, 1037031473u,
+249284003u, 2450077637u,
+1383747654u, 3122687303u,
+2664431743u, 3855028730u,
+929335420u, 3193251135u,
+137313762u, 1850894384u,
+3163711272u, 3071568023u,
+418541677u, 3621223039u,
+340274176u, 1167681812u,
+4106647531u, 4022465625u,
+3069708839u, 2704165015u,
+2332023349u, 641449034u,
+921552000u, 1712976649u,
+1876484273u, 2343049860u,
+1834682077u, 4155949943u,
+2061821157u, 4240649383u,
+747285578u, 1626463554u,
+165503115u, 359629739u,
+3838102563u, 582664250u,
+3878924635u, 4117237498u,
+2250573853u, 804336148u,
+331393443u, 4242530387u,
+3346357270u, 1674051445u,
+3348019777u, 1722242971u,
+2509017299u, 2966108111u,
+4189102509u, 3323592310u,
+2631381069u, 4014551783u,
+4250787412u, 3448394212u,
+2664752123u, 3517585534u,
+3605365141u, 1669471183u,
+2210121140u, 760762191u,
+249697459u, 3416920106u,
+16322182u, 643179562u,
+1564226597u, 2134630675u,
+1011990087u, 2990167340u,
+2349550842u, 1642428946u,
+1214854475u, 2134299399u,
+2704221532u, 2104175211u,
+4283196353u, 1342880802u,
+198529755u, 2004468390u,
+2544665755u, 853593042u,
+2090611294u, 2970943872u,
+1472073141u, 850464484u,
+1407609278u, 3062461105u,
+366448238u, 3842907484u,
+488797416u, 1432670231u,
+294963924u, 3693536939u,
+3390549825u, 1583234720u,
+4032223840u, 2318423400u,
+2965642867u, 930822729u,
+1679099863u, 1728968857u,
+900822335u, 702309817u,
+3258354115u, 1502282913u,
+2811888503u, 3924947660u,
+2477280726u, 3651607391u,
+3788310204u, 1300369123u,
+1842333726u, 4146839064u,
+2468893861u, 4091095953u,
+488595746u, 1448097974u,
+1159634090u, 1738834113u,
+2928916831u, 4093725287u,
+530850094u, 291657799u,
+3548184546u, 679517009u,
+399175380u, 2658337143u,
+3827951761u, 3086277222u,
+2067718397u, 3632376023u,
+3553313841u, 119173722u,
+1702434637u, 1766260771u,
+895654784u, 751439914u,
+4008409498u, 215917713u,
+1288382231u, 2656990891u,
+2581779077u, 1570750352u,
+2666411616u, 3533987737u,
+4289478316u, 3576119563u,
+3869794273u, 963183826u,
+2081410737u, 3796810515u,
+1036883117u, 136547246u,
+875691100u, 2592925324u,
+2689342539u, 427154472u,
+532957601u, 1228758574u,
+1908591042u, 1464255968u,
+446980910u, 2984611177u,
+3508927906u, 2001585786u,
+2544767379u, 1525438381u,
+879448844u, 1348536411u,
+4242243590u, 2861338018u,
+601175800u, 764077711u,
+530635011u, 3785343245u,
+2378297261u, 457568934u,
+76438221u, 4104954272u,
+2485968477u, 2381948487u,
+4226929450u, 3148473363u,
+879369091u, 2180270337u,
+3674375989u, 1387729170u,
+568650985u, 951677556u,
+4213877384u, 2721005055u,
+1678669911u, 66786703u,
+2273631661u, 1149351924u,
+246723096u, 1895026827u,
+3810605772u, 3711056516u,
+2080120290u, 3638638708u,
+2915672708u, 2263003308u,
+1976115991u, 3448840877u,
+2019238520u, 225333538u,
+1555273378u, 3797521928u,
+1942347150u, 3262952567u,
+2817830907u, 2078619498u,
+749534111u, 1178073973u,
+841092198u, 3288261538u,
+1696412169u, 1496966875u,
+3739946319u, 2481012988u,
+568983526u, 114945840u,
+2841706923u, 1632780103u,
+4020169654u, 2087949619u,
+833416317u, 3787017905u,
+2373238993u, 2575395164u,
+2542976862u, 2971726178u,
+2880371864u, 3642087909u,
+1043714217u, 3894199764u,
+2235879182u, 203853421u,
+834683330u, 425935223u,
+3560796393u, 3565833278u,
+3414330886u, 1748785729u,
+1023171602u, 580966986u,
+2657385925u, 2124704694u,
+233442446u, 1107045577u,
+3899097693u, 1067532701u,
+115667924u, 1406028344u,
+2419657149u, 18613994u,
+2532882091u, 3476683808u,
+895961699u, 3762914298u,
+1328752423u, 1844996900u,
+1210281744u, 904215228u,
+4055325594u, 1118521573u,
+3996647489u, 3657647605u,
+325254059u, 3136157065u,
+3341068436u, 2287683323u,
+1313073005u, 126005630u,
+853746559u, 3555092974u,
+2689238752u, 49515858u,
+61073168u, 1010661841u,
+1269521335u, 1902040126u,
+3858321250u, 1400735275u,
+2974699176u, 2771676666u,
+545726212u, 2225229957u,
+1086473152u, 3454177594u,
+2088002891u, 2883475137u,
+3222194252u, 4144472319u,
+567988835u, 1051332394u,
+3932046135u, 542648229u,
+162888005u, 1669710469u,
+1492500905u, 553041029u,
+3817492747u, 584127807u,
+4147115982u, 2993670925u,
+3509733475u, 3587959456u,
+2088550465u, 1745399498u,
+869648362u, 1404723176u,
+3947542735u, 1334333531u,
+59634866u, 3239516985u,
+3844250972u, 1275954779u,
+2512155003u, 1685649437u,
+639306006u, 2524620206u,
+576786501u, 655707039u,
+2864351838u, 3736264674u,
+1200907897u, 2384379464u,
+15823708u, 206117476u,
+1193310960u, 1093099415u,
+3696538026u, 4112584792u,
+2069527017u, 547588820u,
+4178147211u, 2827259351u,
+940846775u, 1054995047u,
+2976960697u, 1934305529u,
+2199137382u, 1005722394u,
+1875867180u, 2064356511u,
+4019734130u, 3096333006u,
+2069509024u, 2906358341u,
+2232866485u, 1456016086u,
+1422674894u, 867282151u,
+1612503136u, 1739843072u,
+134947567u, 2978775774u,
+1284167756u, 1090844589u,
+831688783u, 2079216362u,
+1626991196u, 3644714163u,
+3678110059u, 898470030u,
+3916646913u, 3182422972u,
+3630426828u, 969847973u,
+3427164640u, 3463937250u,
+3044785046u, 897322257u,
+3443872170u, 4185408854u,
+2557463241u, 4080940424u,
+2048168570u, 2429169982u,
+3174690447u, 2513494106u,
+1213061732u, 3143736628u,
+3482268149u, 1250714337u,
+31648125u, 3872383625u,
+1565760579u, 36665130u,
+751041229u, 2257179590u,
+2915361862u, 280819225u,
+2907818413u, 4254297769u,
+3493178615u, 3755944354u,
+4043533423u, 1134196225u,
+4177134659u, 127246419u,
+2442615581u, 923049607u,
+1004426206u, 782768297u,
+2410586681u, 1430106871u,
+4103323427u, 3168399477u,
+3716682375u, 3616334719u,
+3413209549u, 656672786u,
+2876965944u, 182894450u,
+456581318u, 2683752067u,
+3877875910u, 3190666241u,
+3240336907u, 4024807233u,
+1681224377u, 1576191191u,
+3599250276u, 2381111980u,
+3495321877u, 3956024585u,
+1611608524u, 3815677453u,
+2062334396u, 1656117707u,
+5457134u, 3234118251u,
+470187419u, 2688566989u,
+3259870297u, 660100446u,
+442236198u, 2542452448u,
+493137955u, 392411099u,
+947967568u, 1234595917u,
+4230082284u, 2762976773u,
+2870085764u, 1455086530u,
+2762099647u, 4011882747u,
+1215981925u, 3227517889u,
+3269061963u, 4037515364u,
+3168911474u, 4255057396u,
+2026092260u, 1736192508u,
+3909727042u, 3114708966u,
+1938800693u, 680793595u,
+1525265867u, 2808224480u,
+2122290603u, 1211197714u,
+3520488321u, 3979192396u,
+3540779343u, 4192918639u,
+2736030448u, 1120335563u,
+1698949078u, 3993310631u,
+1966048551u, 2228221363u,
+597941119u, 3498018399u,
+393987327u, 454500547u,
+1222959566u, 567151340u,
+3774764786u, 1492844524u,
+3308300614u, 805568076u,
+868414882u, 177406999u,
+1608110313u, 642061169u,
+1027515771u, 3131251981u,
+2851936150u, 4272755262u,
+1532845092u, 709643652u,
+682573592u, 1244104217u,
+796769556u, 2500467040u,
+3002618826u, 1112998535u,
+1780193104u, 1243644607u,
+3691719535u, 2958853053u,
+466635014u, 2277292580u,
+4082276003u, 1030800045u,
+1750863246u, 379050598u,
+3576413281u, 731493104u,
+132259176u, 4115195437u,
+1769890695u, 2715470335u,
+1819263183u, 2028531518u,
+2154809766u, 3672399742u,
+76727603u, 4198182186u,
+2304993586u, 1666387627u,
+284366017u, 3359785538u,
+3469807328u, 2926494787u,
+3829072836u, 2493478921u,
+3738499303u, 3311304980u,
+932916545u, 2235559063u,
+2909742396u, 1765719309u,
+1456588655u, 508290328u,
+1490719640u, 3356513470u,
+2908490783u, 251085588u,
+830410677u, 3172220325u,
+3897208579u, 1940535730u,
+151909546u, 2384458112u,
+};
+
+// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
+bool Test(int offset, int len = 0) {
+#undef Check
+#undef IsAlive
+
+#define Check(x) do { \
+ const uint32_t actual = (x), e = expected[index++]; \
+ bool ok = actual == e; \
+ if (!ok) { \
+ cerr << "expected " << hex << e << " but got " << actual << endl; \
+ ++errors; \
+ } \
+ assert(ok); \
+} while (0)
+
+#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
+
+ // After the following line is where the uses of "Check" and such will go.
+ static int index = 0;
+if (offset == -1) { int alive = 0; { uint64_t h = farmhashuo::Hash64WithSeed(data, len++, SEED); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } { uint64_t h = farmhashuo::Hash64(data, len++); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } { uint64_t h = farmhashuo::Hash64(data, len++); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } len -= 3; return alive > 0; }
+{ uint64_t h = farmhashuo::Hash64WithSeed(data + offset, len, SEED); Check(h >> 32); Check((h << 32) >> 32); }
+{ uint64_t h = farmhashuo::Hash64(data + offset, len); Check(h >> 32); Check((h << 32) >> 32); }
+
+ return true;
+#undef Check
+#undef IsAlive
+}
+
+int RunTest() {
+ Setup();
+ int i = 0;
+ cout << "Running farmhashuoTest";
+ if (!Test(-1)) {
+ cout << "... Unavailable\n";
+ return NoteErrors();
+ }
+ // Good. The function is attempting to hash, so run the full test.
+ int errors_prior_to_test = errors;
+ for ( ; i < kTestSize - 1; i++) {
+ Test(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ Test(0, i);
+ }
+ Test(0, kDataSize);
+ cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
+ return NoteErrors();
+}
+
+#else
+
+// After the following line is where the code to print hash codes will go.
+void Dump(int offset, int len) {
+{ uint64_t h = farmhashuo::Hash64WithSeed(data + offset, len, SEED); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
+{ uint64_t h = farmhashuo::Hash64(data + offset, len); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
+}
+
+#endif
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+
+} // namespace farmhashuoTest
+
+#if !TESTING
+int main(int argc, char** argv) {
+ Setup();
+ cout << "uint32_t expected[] = {\n";
+ int i = 0;
+ for ( ; i < kTestSize - 1; i++) {
+ farmhashuoTest::Dump(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ farmhashuoTest::Dump(0, i);
+ }
+ farmhashuoTest::Dump(0, kDataSize);
+ cout << "};\n";
+}
+#endif
+#ifndef FARMHASH_SELF_TEST_GUARD
+#define FARMHASH_SELF_TEST_GUARD
+#include <cstdio>
+#include <iostream>
+#include <string.h>
+
+using std::cout;
+using std::cerr;
+using std::endl;
+using std::hex;
+
+static const uint64_t kSeed0 = 1234567;
+static const uint64_t kSeed1 = k0;
+static const int kDataSize = 1 << 20;
+static const int kTestSize = 300;
+#define kSeed128 Uint128(kSeed0, kSeed1)
+
+static char data[kDataSize];
+
+static int completed_self_tests = 0;
+static int errors = 0;
+
+// Initialize data to pseudorandom values.
+void Setup() {
+ if (completed_self_tests == 0) {
+ uint64_t a = 9;
+ uint64_t b = 777;
+ for (int i = 0; i < kDataSize; i++) {
+ a += b;
+ b += a;
+ a = (a ^ (a >> 41)) * k0;
+ b = (b ^ (b >> 41)) * k0 + i;
+ uint8_t u = b >> 37;
+ memcpy(data + i, &u, 1); // uint8_t -> char
+ }
+ }
+}
+
+int NoteErrors() {
+#define NUM_SELF_TESTS 9
+ if (++completed_self_tests == NUM_SELF_TESTS)
+ std::exit(errors > 0);
+ return errors;
+}
+
+template <typename T> inline bool IsNonZero(T x) {
+ return x != 0;
+}
+
+template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
+ return x != Uint128(0, 0);
+}
+
+#endif // FARMHASH_SELF_TEST_GUARD
+
+namespace farmhashxoTest {
+
+uint32_t CreateSeed(int offset, int salt) {
+ uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h += static_cast<uint32_t>(offset & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ return h;
+}
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+#define SEED CreateSeed(offset, -1)
+#define SEED0 CreateSeed(offset, 0)
+#define SEED1 CreateSeed(offset, 1)
+
+#undef TESTING
+#define TESTING 1
+#if TESTING
+uint32_t expected[] = {
+1140953930u, 861465670u,
+3277735313u, 2681724312u,
+2598464059u, 797982799u,
+890626835u, 800175912u,
+2603993599u, 921001710u,
+1410420968u, 2134990486u,
+3283896453u, 1867689945u,
+2914424215u, 2244477846u,
+255297188u, 2992121793u,
+1110588164u, 4186314283u,
+161451183u, 3943596029u,
+4019337850u, 452431531u,
+283198166u, 2741341286u,
+3379021470u, 2557197665u,
+299850021u, 2532580744u,
+452473466u, 1706958772u,
+1298374911u, 3099673830u,
+2199864459u, 3696623795u,
+236935126u, 2976578695u,
+4055299123u, 3281581178u,
+1053458494u, 1882212500u,
+2305012065u, 2169731866u,
+3456121707u, 275903667u,
+458884671u, 3033004529u,
+3058973506u, 2379411653u,
+1898235244u, 1402319660u,
+2700149065u, 2699376854u,
+147814787u, 720739346u,
+2433714046u, 4222949502u,
+4220361840u, 1712034059u,
+3425469811u, 3690733394u,
+4148372108u, 1330324210u,
+594028478u, 2921867846u,
+1635026870u, 192883107u,
+780716741u, 1728752234u,
+3280331829u, 326029180u,
+3969463346u, 1436364519u,
+393215742u, 3349570000u,
+3824583307u, 1612122221u,
+2859809759u, 3808705738u,
+1379537552u, 1646032583u,
+2233466664u, 1432476832u,
+4023053163u, 2650381482u,
+2052294713u, 3552092450u,
+1628777059u, 1499109081u,
+3476440786u, 3829307897u,
+2960536756u, 1554038301u,
+1145519619u, 3190844552u,
+2902102606u, 3600725550u,
+237495366u, 540224401u,
+65721842u, 489963606u,
+1448662590u, 397635823u,
+1596489240u, 1562872448u,
+1790705123u, 2128624475u,
+180854224u, 2604346966u,
+1435705557u, 1262831810u,
+155445229u, 1672724608u,
+1669465176u, 1341975128u,
+663607706u, 2077310004u,
+3610042449u, 1911523866u,
+1043692997u, 1454396064u,
+2563776023u, 294527927u,
+1099072299u, 1389770549u,
+703505868u, 678706990u,
+2952353448u, 2026137563u,
+3603803785u, 629449419u,
+1933894405u, 3043213226u,
+226132789u, 2489287368u,
+1552847036u, 645684964u,
+3828089804u, 3632594520u,
+187883449u, 230403464u,
+3151491850u, 3272648435u,
+3729087873u, 1303930448u,
+2002861219u, 165370827u,
+916494250u, 1230085527u,
+3103338579u, 3064290191u,
+3807265751u, 3628174014u,
+231181488u, 851743255u,
+2295806711u, 1781190011u,
+2988893883u, 1554380634u,
+1142264800u, 3667013118u,
+1968445277u, 315203929u,
+2638023604u, 2290487377u,
+732137533u, 1909203251u,
+440398219u, 1891630171u,
+1380301172u, 1498556724u,
+4072067757u, 4165088768u,
+4204318635u, 441430649u,
+3931792696u, 197618179u,
+956300927u, 914413116u,
+3010839769u, 2837339569u,
+2148126371u, 1913303225u,
+3074915312u, 3117299654u,
+4139181436u, 2993479124u,
+3178848746u, 1357272220u,
+1438494951u, 507436733u,
+667183474u, 2084369203u,
+3854939912u, 1413396341u,
+126024219u, 146044391u,
+1016656857u, 3022024459u,
+3254014218u, 429095991u,
+990500595u, 3056862311u,
+985653208u, 1718653828u,
+623071693u, 366414107u,
+1771289760u, 2293458109u,
+3047342438u, 2991127487u,
+3120876698u, 1684583131u,
+3638043310u, 1170404994u,
+863214540u, 1087193030u,
+199124911u, 520792961u,
+3169775996u, 1577421232u,
+3331828431u, 1013201099u,
+1716848157u, 4033596884u,
+1770708857u, 4229339322u,
+1146169032u, 1434258493u,
+3824360466u, 3242407770u,
+1926419493u, 2649785113u,
+872586426u, 762243036u,
+2736953692u, 816692935u,
+1571283333u, 3555213933u,
+2266795890u, 3781899767u,
+4290630595u, 517646945u,
+3006163611u, 2180594090u,
+959214578u, 558910384u,
+1283799121u, 3047062993u,
+3830962609u, 2391606125u,
+3544509313u, 622325861u,
+834785312u, 382936554u,
+1421463872u, 788479970u,
+1825135056u, 2725923798u,
+580988377u, 2826990641u,
+247825043u, 3167748333u,
+812546227u, 2506885666u,
+2584372201u, 1758123094u,
+1891789696u, 389974094u,
+345313518u, 2022370576u,
+3886113119u, 3338548567u,
+1083486947u, 2583576230u,
+1776047957u, 1771384107u,
+3604937815u, 3198590202u,
+3027522813u, 4155628142u,
+4232136669u, 427759438u,
+4244322689u, 542201663u,
+1549591985u, 2856634168u,
+556609672u, 45845311u,
+1175961330u, 3948351189u,
+4165739882u, 4194218315u,
+1634635545u, 4151937410u,
+713127376u, 1467786451u,
+1327394015u, 2743592929u,
+2638154051u, 810082938u,
+3077742128u, 1062268187u,
+4084325664u, 3810665822u,
+3735739145u, 2794294783u,
+2335576331u, 2560479831u,
+690240711u, 997658837u,
+2442302747u, 3948961926u,
+3958366652u, 3067277639u,
+2059157774u, 1211737169u,
+1516711748u, 2339636583u,
+4188504038u, 59581167u,
+2767897792u, 1389679610u,
+2658147000u, 2643979752u,
+3758739543u, 4189944477u,
+1454470782u, 100876854u,
+2995362413u, 118817200u,
+3252925478u, 2062343506u,
+2804483644u, 3088828656u,
+1231633714u, 4168280671u,
+2931588131u, 3284356565u,
+1255909792u, 3130054947u,
+4173605289u, 1407328702u,
+1677744031u, 3532596884u,
+3162657845u, 3887208531u,
+2256541290u, 3459463480u,
+3740979556u, 259034107u,
+392987633u, 3233195759u,
+3606709555u, 3424793077u,
+315836068u, 3200749877u,
+4065431359u, 760633989u,
+2982018998u, 1811050648u,
+234531934u, 1115203611u,
+3897494162u, 1516407838u,
+1603559457u, 323296368u,
+2632963283u, 1778459926u,
+2879836826u, 2146672889u,
+3486330348u, 492621815u,
+1231665285u, 2457048126u,
+3438440082u, 2217471853u,
+3355404249u, 3275550588u,
+1052645068u, 862072556u,
+4110617119u, 3745267835u,
+2657392572u, 4279236653u,
+1688445808u, 701920051u,
+956734128u, 581695350u,
+3157862788u, 2585726058u,
+1192588249u, 1410111809u,
+1651193125u, 3326135446u,
+1073280453u, 97376972u,
+2513844237u, 2187968410u,
+3976859649u, 4267859263u,
+3429034542u, 564493077u,
+3000537321u, 479241367u,
+3845637831u, 2868987960u,
+51544337u, 1029173765u,
+393624922u, 704325635u,
+2357610553u, 1418509533u,
+2007814586u, 3866658271u,
+3082385053u, 735688735u,
+916110004u, 3283299459u,
+1051684175u, 1083796807u,
+4074716319u, 813690332u,
+144264390u, 1439630796u,
+1508556987u, 675582689u,
+3748881891u, 3195309868u,
+362884708u, 1616408198u,
+43233176u, 837301135u,
+881504822u, 3254795114u,
+1385506591u, 2799925823u,
+1469874582u, 3464841997u,
+497175391u, 3929484338u,
+3975771289u, 1798536177u,
+2926265846u, 1374242438u,
+3675707838u, 4205965408u,
+3153165629u, 1499475160u,
+187287713u, 548490821u,
+3255259608u, 4247675634u,
+1940181471u, 3779953975u,
+687167150u, 2319566715u,
+1742785722u, 785893184u,
+2296977392u, 2778575413u,
+1794720651u, 48131484u,
+4084891412u, 1160134629u,
+3737623280u, 823113169u,
+3423207646u, 3803213486u,
+710625654u, 4116162021u,
+3693420287u, 4167766971u,
+1666602807u, 295320990u,
+3513255468u, 2487440590u,
+234080704u, 4004655503u,
+2971762528u, 1479656873u,
+4090178629u, 4044418876u,
+391947536u, 1462554406u,
+3909295855u, 1239580330u,
+1515601363u, 2011102035u,
+1442068334u, 4265993528u,
+1191921695u, 2291355695u,
+4257172787u, 576405853u,
+314332944u, 4038839101u,
+55559918u, 2378985842u,
+711098718u, 2425317635u,
+1644327317u, 1401013391u,
+4193760037u, 2958260436u,
+3167371443u, 3062418115u,
+3800755475u, 3167030094u,
+3489648204u, 1405430357u,
+526177822u, 2602636307u,
+915406019u, 4264167741u,
+1484090483u, 3070944737u,
+254529415u, 4017058800u,
+1702710265u, 1029665228u,
+2000382906u, 3185573940u,
+1381258384u, 4036354071u,
+2900841028u, 2670703363u,
+2921748807u, 2899069938u,
+4130543625u, 688472265u,
+4186808827u, 1054670286u,
+1132985391u, 2840525968u,
+4175776103u, 338058159u,
+1735964501u, 1539305024u,
+3497121710u, 1568260669u,
+2227290760u, 146827036u,
+3977176001u, 4060134777u,
+857488494u, 250055052u,
+4284109679u, 2502815838u,
+2592281721u, 1603444633u,
+1390562014u, 1556658131u,
+616327404u, 2448966429u,
+3051191726u, 3891353218u,
+1213304082u, 762328245u,
+2239052397u, 1082330589u,
+2455957292u, 201837927u,
+405397452u, 3079886794u,
+2583939798u, 2848283092u,
+3750724631u, 883849006u,
+3204198988u, 3341327098u,
+1855234968u, 1982110346u,
+1485529487u, 541496720u,
+4117290321u, 3607433551u,
+2168864636u, 133643215u,
+1055817409u, 3847827123u,
+2960769387u, 4046101649u,
+1176127003u, 4015671361u,
+4243643405u, 2849988118u,
+517111221u, 1796672358u,
+2045051700u, 3452457457u,
+2948254999u, 2102063419u,
+1556410577u, 1536380876u,
+3776661467u, 3281002516u,
+1735616066u, 1539151988u,
+1087795162u, 3332431596u,
+685631442u, 1147951686u,
+95237878u, 2005032160u,
+4012206915u, 4224354805u,
+3204999386u, 2415262714u,
+1433635018u, 116647396u,
+83167836u, 2881562655u,
+2729416454u, 1029284767u,
+881378302u, 2159170082u,
+555057366u, 1169104445u,
+3963877000u, 1919171906u,
+336034862u, 2017579106u,
+4059340529u, 3020819343u,
+865146997u, 2473524405u,
+944743644u, 1694443528u,
+1804513294u, 2904752429u,
+617975720u, 3671562289u,
+260177668u, 505662155u,
+1885941445u, 2504509403u,
+2260041112u, 1019936943u,
+3722741628u, 1511077569u,
+3100701179u, 1379422864u,
+1535670711u, 773792826u,
+1103819072u, 2089123665u,
+1157547425u, 329152940u,
+4142587430u, 484732447u,
+2475035432u, 1120017626u,
+412145504u, 965125959u,
+324924679u, 2809286837u,
+2842141483u, 4029205195u,
+2974306813u, 515627448u,
+3791551981u, 1097806406u,
+3873078673u, 136118734u,
+1872130856u, 3632422367u,
+3574135531u, 4017075736u,
+1699452298u, 1403506686u,
+344414660u, 1189129691u,
+3487080616u, 1516736273u,
+1805475756u, 2562064338u,
+163335594u, 2732147834u,
+4077452507u, 2984955003u,
+4271866024u, 3071338162u,
+2347111903u, 873829983u,
+1948409509u, 1923531348u,
+459509140u, 771592405u,
+1750124750u, 2334938333u,
+213811117u, 2586632018u,
+185232757u, 4032960199u,
+2447383637u, 284777551u,
+1654276320u, 2687561076u,
+3512945009u, 308584855u,
+1861027147u, 4102279334u,
+3203802620u, 1692079268u,
+4250142168u, 2565680167u,
+1507046104u, 841195925u,
+520565830u, 3674576684u,
+38924274u, 3770488806u,
+2414430882u, 3978473838u,
+3703994407u, 69201295u,
+3099963860u, 1255084262u,
+690971838u, 3539996781u,
+3696902571u, 3593730713u,
+2363435042u, 54945052u,
+1785765213u, 184911581u,
+1586241476u, 1939595371u,
+2534883189u, 2432427547u,
+2374171993u, 2039128933u,
+2955715987u, 2295501078u,
+2741583197u, 1280920000u,
+686818699u, 1238742497u,
+3843660102u, 82177963u,
+1281043691u, 1121403845u,
+1697846708u, 284852964u,
+278661677u, 2889101923u,
+2127558730u, 713121337u,
+872502474u, 511142139u,
+1261140657u, 1747052377u,
+2108187161u, 927011680u,
+955328267u, 3821994995u,
+2707230761u, 4142246789u,
+4134691985u, 1958963937u,
+2498463509u, 1977988705u,
+1419293714u, 1636932722u,
+2567532373u, 4075249328u,
+240575705u, 1956681213u,
+2598802768u, 2025886508u,
+4104757832u, 3026358429u,
+3242615202u, 4026813725u,
+255108733u, 1845587644u,
+3573008472u, 3615577014u,
+1222733548u, 1205557630u,
+917608574u, 1363253259u,
+1541946015u, 3087190425u,
+1138008081u, 1444019663u,
+109793386u, 341851980u,
+857839960u, 2515339233u,
+156283211u, 1906768669u,
+3886713057u, 1276595523u,
+2809830736u, 460237542u,
+3420452099u, 142985419u,
+205970448u, 4198897105u,
+1950698961u, 2069753399u,
+1142216925u, 1113051162u,
+1033680610u, 4278599955u,
+1106466069u, 356742959u,
+531521052u, 3494863964u,
+225629455u, 3735275001u,
+3662626864u, 1750561299u,
+1012864651u, 2101846429u,
+1074553219u, 668829411u,
+992181339u, 3384018814u,
+3330664522u, 860966321u,
+1885071395u, 4233785523u,
+100741310u, 451656820u,
+2148187612u, 1063001151u,
+360256231u, 107312677u,
+3650357479u, 2390172694u,
+22452685u, 237319043u,
+3600462351u, 1216645846u,
+2088767754u, 164402616u,
+2418980170u, 926137824u,
+94638678u, 1689811113u,
+2751052984u, 1767810825u,
+271289013u, 3896132233u,
+103797041u, 1397772514u,
+3441135892u, 3323383489u,
+2491268371u, 1662561885u,
+1612872497u, 2986430557u,
+2756998822u, 207428029u,
+937973965u, 2791656726u,
+1949717207u, 2260498180u,
+2648427775u, 2360400900u,
+2080496169u, 486358863u,
+1582022990u, 1263709570u,
+1396468647u, 1377764574u,
+363008508u, 1293502429u,
+224580012u, 4252610345u,
+1435134775u, 1099809675u,
+533671980u, 1533438766u,
+1820532305u, 2776960536u,
+3374512975u, 3542220540u,
+822810075u, 3716663290u,
+1157398049u, 3752806924u,
+4081637863u, 337070226u,
+3866585976u, 359270190u,
+2110942730u, 3267551635u,
+644850146u, 1306761320u,
+746972907u, 934259457u,
+2341378668u, 2220373824u,
+1242645122u, 4109252858u,
+1625266099u, 1173698481u,
+383517064u, 896322512u,
+3377483696u, 1788337208u,
+455496839u, 3194373887u,
+1837689083u, 1336556841u,
+1658628529u, 2911512007u,
+3838343487u, 2757664765u,
+1537187340u, 3712582785u,
+367022558u, 3071359622u,
+3926147070u, 35432879u,
+3093195926u, 2561488770u,
+4273132307u, 3898950547u,
+2838251049u, 2103926083u,
+2549435227u, 536047554u,
+1858986613u, 2040551642u,
+1147412575u, 1972369852u,
+4166184983u, 3528794619u,
+4077477194u, 3565689036u,
+808048238u, 3826350461u,
+1359641525u, 1197100813u,
+265993036u, 1864569342u,
+725164342u, 2264788336u,
+1831223342u, 3329594980u,
+923017956u, 490608221u,
+3818634478u, 258154469u,
+1441714797u, 1174785921u,
+3833372385u, 3287246572u,
+1677395563u, 3569218731u,
+868981704u, 2163330264u,
+2649450292u, 500120236u,
+465161780u, 746438382u,
+1145009669u, 2520062970u,
+2810524030u, 1561519055u,
+1479878006u, 3864969305u,
+2686075657u, 4042710240u,
+3224066062u, 2774151984u,
+2226179547u, 1643626042u,
+2328730865u, 3160666939u,
+2107011431u, 96459446u,
+3920328742u, 3336407558u,
+829404209u, 1878067032u,
+1235983679u, 4237425634u,
+466519055u, 3870676863u,
+934312076u, 2952135524u,
+276949224u, 4100839753u,
+424001484u, 1955120893u,
+4015478120u, 1265237690u,
+427484362u, 4246879223u,
+3452969617u, 1724363362u,
+1553513184u, 834830418u,
+1858777639u, 3476334357u,
+4144030366u, 2450047160u,
+2950762705u, 4277111759u,
+358032121u, 2511026735u,
+167923105u, 2059208280u,
+251949572u, 3065234219u,
+1535473864u, 556796152u,
+1513237478u, 3150857516u,
+1103404394u, 198182691u,
+1476438092u, 2913077464u,
+207119516u, 3963810232u,
+2954651680u, 1535115487u,
+3051522276u, 4046477658u,
+917804636u, 864395565u,
+632704095u, 140762681u,
+1802040304u, 990407433u,
+3771506212u, 4106024923u,
+1287729497u, 2198985327u,
+4052924496u, 2926590471u,
+3084557148u, 1472898694u,
+1009870118u, 559702706u,
+4265214507u, 82077489u,
+3067891003u, 3295678907u,
+2402308151u, 1096697687u,
+464407878u, 4190838199u,
+4269578403u, 3060919438u,
+2899950405u, 3046872820u,
+733509243u, 1583801700u,
+40453902u, 3879773881u,
+1993425202u, 2185339100u,
+1877837196u, 3912423882u,
+3293122640u, 4104318469u,
+1679617763u, 3703603898u,
+8759461u, 2540185277u,
+1152198475u, 2038345882u,
+2503579743u, 1446869792u,
+2019419351u, 4051584612u,
+3178289407u, 3992503830u,
+2879018745u, 2719373510u,
+700836153u, 1675560450u,
+4121245793u, 2064715719u,
+343595772u, 1996164093u,
+3130433948u, 405251683u,
+2804817126u, 1607133689u,
+463852893u, 2864244470u,
+2224044848u, 4071581802u,
+2537107938u, 2246347953u,
+3207234525u, 2028708916u,
+2272418128u, 803575837u,
+38655481u, 2170452091u,
+3272166407u, 557660441u,
+4019147902u, 3841480082u,
+298459606u, 2600943364u,
+2440657523u, 255451671u,
+3424361375u, 779434428u,
+3088526123u, 490671625u,
+1322855877u, 3452203069u,
+3057021940u, 2285701422u,
+2014993457u, 2390431709u,
+2002090272u, 1568745354u,
+1783152480u, 823305654u,
+4053862835u, 2200236540u,
+3009412313u, 3184047862u,
+3032187389u, 4159715581u,
+2966902888u, 252986948u,
+1849329144u, 3160134214u,
+3420960112u, 3198900547u,
+749160960u, 379139040u,
+1208883495u, 1566527339u,
+3006227299u, 4194096960u,
+556075248u, 497404038u,
+1717327230u, 1496132623u,
+1775955687u, 1719108984u,
+1014328900u, 4189966956u,
+2108574735u, 2584236470u,
+684087286u, 531310503u,
+4264509527u, 773405691u,
+3088905079u, 3456882941u,
+3105682208u, 3382290593u,
+2289363624u, 3296306400u,
+4168438718u, 467441309u,
+777173623u, 3241407531u,
+1183994815u, 1132983260u,
+1610606159u, 2540270567u,
+2649684057u, 1397502982u,
+146657385u, 3318434267u,
+2109315753u, 3348545480u,
+3193669211u, 811750340u,
+1073256162u, 3571673088u,
+546596661u, 1017047954u,
+3403136990u, 2540585554u,
+1477047647u, 4145867423u,
+2826408201u, 3531646869u,
+784952939u, 943914610u,
+2717443875u, 3657384638u,
+1806867885u, 1903578924u,
+3985088434u, 1911188923u,
+1764002686u, 3672748083u,
+1832925325u, 241574049u,
+519948041u, 3181425568u,
+2939747257u, 1634174593u,
+3429894862u, 3529565564u,
+1089679033u, 240953857u,
+2025369941u, 2695166650u,
+517086873u, 2964595704u,
+3017658263u, 3828377737u,
+2144895011u, 994799311u,
+1184683823u, 4260564140u,
+308018483u, 4262383425u,
+1374752558u, 3431057723u,
+1572637805u, 383233885u,
+3188015819u, 4051263539u,
+233319221u, 3794788167u,
+2017406667u, 919677938u,
+4074952232u, 1683612329u,
+4213676186u, 327142514u,
+3032591014u, 4204155962u,
+206775997u, 2283918569u,
+2395147154u, 3427505379u,
+2211319468u, 4153726847u,
+2217060665u, 350160869u,
+2493667051u, 1648200185u,
+3441709766u, 1387233546u,
+140980u, 1891558063u,
+760080239u, 2088061981u,
+1580964938u, 740563169u,
+422986366u, 330624974u,
+4264507722u, 150928357u,
+2738323042u, 2948665536u,
+918718096u, 376390582u,
+3966098971u, 717653678u,
+3219466255u, 3799363969u,
+3424344721u, 3187805406u,
+375347278u, 3490350144u,
+1992212097u, 2263421398u,
+3855037968u, 1928519266u,
+3866327955u, 1129127000u,
+1782515131u, 2746577402u,
+3059200728u, 2108753646u,
+2738070963u, 1336849395u,
+1705302106u, 768287270u,
+1343511943u, 2247006571u,
+1956142255u, 1780259453u,
+3475618043u, 212490675u,
+622521957u, 917121602u,
+1852992332u, 1267987847u,
+3170016833u, 2549835613u,
+3299763344u, 2864033668u,
+3378768767u, 1236609378u,
+4169365948u, 3738062408u,
+2661022773u, 2006922227u,
+2760592161u, 3828932355u,
+2636387819u, 2616619070u,
+1237256330u, 3449066284u,
+2871755260u, 3729280948u,
+3862686086u, 431292293u,
+3285899651u, 786322314u,
+2531158535u, 724901242u,
+2377363130u, 1415970351u,
+1244759631u, 3263135197u,
+965248856u, 174024139u,
+2297418515u, 2954777083u,
+987586766u, 3206261120u,
+4059515114u, 3903854066u,
+1931934525u, 2287507921u,
+1827135136u, 1781944746u,
+574617451u, 2299034788u,
+2650140034u, 4081586725u,
+2482286699u, 1109175923u,
+458483596u, 618705848u,
+4059852729u, 1813855658u,
+4190721328u, 1129462471u,
+4089998050u, 3575732749u,
+2375584220u, 1037031473u,
+1623777358u, 3389003793u,
+546597541u, 352770237u,
+1383747654u, 3122687303u,
+1646071378u, 1164309901u,
+290870767u, 830691298u,
+929335420u, 3193251135u,
+989577914u, 3626554867u,
+591974737u, 3996958215u,
+3163711272u, 3071568023u,
+1516846461u, 3656006011u,
+2698625268u, 2510865430u,
+340274176u, 1167681812u,
+3698796465u, 3155218919u,
+4102288238u, 1673474350u,
+3069708839u, 2704165015u,
+1237411891u, 1854985978u,
+3646837503u, 3625406022u,
+921552000u, 1712976649u,
+3939149151u, 878608872u,
+3406359248u, 1068844551u,
+1834682077u, 4155949943u,
+2437686324u, 3163786257u,
+2645117577u, 1988168803u,
+747285578u, 1626463554u,
+1235300371u, 1256485167u,
+1914142538u, 4141546431u,
+3838102563u, 582664250u,
+1883344352u, 2083771672u,
+2611657933u, 2139079047u,
+2250573853u, 804336148u,
+3066325351u, 2770847216u,
+4275641370u, 1455750577u,
+3346357270u, 1674051445u,
+601221482u, 3992583643u,
+1402445097u, 3622527604u,
+2509017299u, 2966108111u,
+2557027816u, 900741486u,
+1790771021u, 2912643797u,
+2631381069u, 4014551783u,
+90375300u, 300318232u,
+3269968032u, 2679371729u,
+2664752123u, 3517585534u,
+3253901179u, 542270815u,
+1188641600u, 365479232u,
+2210121140u, 760762191u,
+1273768482u, 1216399252u,
+3484324231u, 4287337666u,
+16322182u, 643179562u,
+325675502u, 3652676161u,
+3120716054u, 3330259752u,
+1011990087u, 2990167340u,
+1097584090u, 3262252593u,
+1829409951u, 3665087267u,
+1214854475u, 2134299399u,
+3704419305u, 411263051u,
+1625446136u, 549838529u,
+4283196353u, 1342880802u,
+3460621305u, 1967599860u,
+4282843369u, 1275671016u,
+2544665755u, 853593042u,
+901109753u, 2682611693u,
+110631633u, 797487791u,
+1472073141u, 850464484u,
+797089608u, 3286110054u,
+350397471u, 2775631060u,
+366448238u, 3842907484u,
+2219863904u, 3623364733u,
+1850985302u, 4009616991u,
+294963924u, 3693536939u,
+3061255808u, 1615375832u,
+1920066675u, 4113028420u,
+4032223840u, 2318423400u,
+2701956286u, 4145497671u,
+3991532344u, 2536338351u,
+1679099863u, 1728968857u,
+449740816u, 2686506989u,
+685242457u, 97590863u,
+3258354115u, 1502282913u,
+1235084019u, 2151665147u,
+528459289u, 231097464u,
+2477280726u, 3651607391u,
+2091754612u, 1178454681u,
+980597335u, 1604483865u,
+1842333726u, 4146839064u,
+3213794286u, 2601416506u,
+754220096u, 3571436033u,
+488595746u, 1448097974u,
+4004834921u, 238887261u,
+3320337489u, 1416989070u,
+2928916831u, 4093725287u,
+186020771u, 2367569534u,
+3046087671u, 4090084518u,
+3548184546u, 679517009u,
+1962659444u, 3539886328u,
+4192003933u, 1678423485u,
+3827951761u, 3086277222u,
+2144472852u, 1390394371u,
+2976322029u, 1574517163u,
+3553313841u, 119173722u,
+1702434637u, 1766260771u,
+3629581771u, 1407497759u,
+895654784u, 751439914u,
+4008409498u, 215917713u,
+1482103833u, 695551833u,
+1288382231u, 2656990891u,
+2581779077u, 1570750352u,
+3710689053u, 1741390464u,
+2666411616u, 3533987737u,
+4289478316u, 3576119563u,
+4118694920u, 108199666u,
+3869794273u, 963183826u,
+2081410737u, 3796810515u,
+791123882u, 2525792704u,
+1036883117u, 136547246u,
+875691100u, 2592925324u,
+614302599u, 3013176417u,
+2689342539u, 427154472u,
+532957601u, 1228758574u,
+1898117151u, 1181643858u,
+1908591042u, 1464255968u,
+446980910u, 2984611177u,
+58509511u, 1046943619u,
+3508927906u, 2001585786u,
+2544767379u, 1525438381u,
+552181222u, 1959725830u,
+879448844u, 1348536411u,
+4242243590u, 2861338018u,
+1082052441u, 1034351453u,
+601175800u, 764077711u,
+530635011u, 3785343245u,
+2178026726u, 117256687u,
+2378297261u, 457568934u,
+76438221u, 4104954272u,
+956793873u, 3783168634u,
+2485968477u, 2381948487u,
+4226929450u, 3148473363u,
+2518273601u, 3569490233u,
+879369091u, 2180270337u,
+3674375989u, 1387729170u,
+977997984u, 4270646856u,
+568650985u, 951677556u,
+4213877384u, 2721005055u,
+1073364549u, 2563403831u,
+1678669911u, 66786703u,
+2273631661u, 1149351924u,
+3651298990u, 1581883443u,
+246723096u, 1895026827u,
+3810605772u, 3711056516u,
+4058833288u, 2193790614u,
+2080120290u, 3638638708u,
+2915672708u, 2263003308u,
+2361934197u, 4136767460u,
+1976115991u, 3448840877u,
+2019238520u, 225333538u,
+874340815u, 2976159827u,
+1555273378u, 3797521928u,
+1942347150u, 3262952567u,
+435997738u, 340403353u,
+2817830907u, 2078619498u,
+749534111u, 1178073973u,
+894654712u, 3361226032u,
+841092198u, 3288261538u,
+1696412169u, 1496966875u,
+697501571u, 1059158875u,
+3739946319u, 2481012988u,
+568983526u, 114945840u,
+1559249010u, 2218244008u,
+2841706923u, 1632780103u,
+4020169654u, 2087949619u,
+2438736103u, 24032648u,
+833416317u, 3787017905u,
+2373238993u, 2575395164u,
+3434544481u, 3228481067u,
+2542976862u, 2971726178u,
+2880371864u, 3642087909u,
+2407477975u, 2239080836u,
+1043714217u, 3894199764u,
+2235879182u, 203853421u,
+2933669448u, 2504940536u,
+834683330u, 425935223u,
+3560796393u, 3565833278u,
+1668000829u, 3683399154u,
+3414330886u, 1748785729u,
+1023171602u, 580966986u,
+2531038985u, 3227325488u,
+2657385925u, 2124704694u,
+233442446u, 1107045577u,
+3407293834u, 552770757u,
+3899097693u, 1067532701u,
+115667924u, 1406028344u,
+1707768231u, 3724015962u,
+2419657149u, 18613994u,
+2532882091u, 3476683808u,
+1560838678u, 811220224u,
+895961699u, 3762914298u,
+1328752423u, 1844996900u,
+1420427894u, 1848067707u,
+1210281744u, 904215228u,
+4055325594u, 1118521573u,
+2496554183u, 2579259919u,
+3996647489u, 3657647605u,
+325254059u, 3136157065u,
+3951522674u, 4052925250u,
+3341068436u, 2287683323u,
+1313073005u, 126005630u,
+2505120084u, 1194725057u,
+853746559u, 3555092974u,
+2689238752u, 49515858u,
+1244776042u, 1069300695u,
+61073168u, 1010661841u,
+1269521335u, 1902040126u,
+990632502u, 2378708922u,
+3858321250u, 1400735275u,
+2974699176u, 2771676666u,
+170995186u, 2877798589u,
+545726212u, 2225229957u,
+1086473152u, 3454177594u,
+3859483262u, 1499729584u,
+2088002891u, 2883475137u,
+3222194252u, 4144472319u,
+2212229854u, 4146740722u,
+567988835u, 1051332394u,
+3932046135u, 542648229u,
+3017852446u, 1277887997u,
+162888005u, 1669710469u,
+1492500905u, 553041029u,
+1434876932u, 533989516u,
+3817492747u, 584127807u,
+4147115982u, 2993670925u,
+4020312558u, 710021255u,
+3509733475u, 3587959456u,
+2088550465u, 1745399498u,
+2952242967u, 1259815443u,
+869648362u, 1404723176u,
+3947542735u, 1334333531u,
+3873471582u, 229399758u,
+59634866u, 3239516985u,
+3844250972u, 1275954779u,
+1385684948u, 2243700741u,
+2512155003u, 1685649437u,
+639306006u, 2524620206u,
+955360345u, 1646776457u,
+576786501u, 655707039u,
+2864351838u, 3736264674u,
+655621239u, 362070173u,
+1200907897u, 2384379464u,
+15823708u, 206117476u,
+3652870937u, 122927134u,
+1193310960u, 1093099415u,
+3696538026u, 4112584792u,
+1834541277u, 845639252u,
+2069527017u, 547588820u,
+4178147211u, 2827259351u,
+1764455305u, 3312003602u,
+940846775u, 1054995047u,
+2976960697u, 1934305529u,
+3095615046u, 3354962706u,
+2199137382u, 1005722394u,
+1875867180u, 2064356511u,
+3363633633u, 2688499147u,
+4019734130u, 3096333006u,
+2069509024u, 2906358341u,
+3247463123u, 4191788132u,
+2232866485u, 1456016086u,
+1422674894u, 867282151u,
+1851386407u, 1268304058u,
+1612503136u, 1739843072u,
+134947567u, 2978775774u,
+2051592101u, 1017127033u,
+1284167756u, 1090844589u,
+831688783u, 2079216362u,
+2079309682u, 1950585801u,
+1626991196u, 3644714163u,
+3678110059u, 898470030u,
+1117570988u, 2517572125u,
+3916646913u, 3182422972u,
+3630426828u, 969847973u,
+2835126238u, 53541366u,
+3427164640u, 3463937250u,
+3044785046u, 897322257u,
+103038235u, 3804506837u,
+3443872170u, 4185408854u,
+2557463241u, 4080940424u,
+3669923099u, 2789619871u,
+2048168570u, 2429169982u,
+3174690447u, 2513494106u,
+3099587829u, 2627855577u,
+1213061732u, 3143736628u,
+3482268149u, 1250714337u,
+3553412672u, 2689632914u,
+31648125u, 3872383625u,
+1565760579u, 36665130u,
+1282106920u, 359361724u,
+751041229u, 2257179590u,
+2915361862u, 280819225u,
+954406473u, 4101682199u,
+2907818413u, 4254297769u,
+3493178615u, 3755944354u,
+3539557658u, 3330196096u,
+4043533423u, 1134196225u,
+4177134659u, 127246419u,
+4213770762u, 1978302978u,
+2442615581u, 923049607u,
+1004426206u, 782768297u,
+2702745496u, 1880389457u,
+2410586681u, 1430106871u,
+4103323427u, 3168399477u,
+201787012u, 3105353527u,
+3716682375u, 3616334719u,
+3413209549u, 656672786u,
+526032790u, 2895072131u,
+2876965944u, 182894450u,
+456581318u, 2683752067u,
+1287916294u, 1270745752u,
+3877875910u, 3190666241u,
+3240336907u, 4024807233u,
+4227999465u, 2389301430u,
+1681224377u, 1576191191u,
+3599250276u, 2381111980u,
+3995044500u, 995595530u,
+3495321877u, 3956024585u,
+1611608524u, 3815677453u,
+1520987487u, 3669102590u,
+2062334396u, 1656117707u,
+5457134u, 3234118251u,
+4242065111u, 596879987u,
+470187419u, 2688566989u,
+3259870297u, 660100446u,
+1042378442u, 2206034096u,
+442236198u, 2542452448u,
+493137955u, 392411099u,
+3111186954u, 438250493u,
+947967568u, 1234595917u,
+4230082284u, 2762976773u,
+421203727u, 3728409592u,
+2870085764u, 1455086530u,
+2762099647u, 4011882747u,
+1785430706u, 3684427488u,
+1215981925u, 3227517889u,
+3269061963u, 4037515364u,
+1749401388u, 2167451566u,
+3168911474u, 4255057396u,
+2026092260u, 1736192508u,
+4123254745u, 2319366806u,
+3909727042u, 3114708966u,
+1938800693u, 680793595u,
+3933041672u, 616863613u,
+1525265867u, 2808224480u,
+2122290603u, 1211197714u,
+1186177814u, 2395325006u,
+3520488321u, 3979192396u,
+3540779343u, 4192918639u,
+1763872074u, 3402419930u,
+2736030448u, 1120335563u,
+1698949078u, 3993310631u,
+2947659998u, 1461045789u,
+1966048551u, 2228221363u,
+597941119u, 3498018399u,
+1441110751u, 2229999711u,
+393987327u, 454500547u,
+1222959566u, 567151340u,
+2496952483u, 1708770195u,
+3774764786u, 1492844524u,
+3308300614u, 805568076u,
+4068812294u, 3404648243u,
+868414882u, 177406999u,
+1608110313u, 642061169u,
+2093999089u, 222470301u,
+1027515771u, 3131251981u,
+2851936150u, 4272755262u,
+2763002551u, 1881527822u,
+1532845092u, 709643652u,
+682573592u, 1244104217u,
+440905170u, 1111321746u,
+796769556u, 2500467040u,
+3002618826u, 1112998535u,
+1188525643u, 4212674512u,
+1780193104u, 1243644607u,
+3691719535u, 2958853053u,
+2813437721u, 4036584207u,
+466635014u, 2277292580u,
+4082276003u, 1030800045u,
+1899531424u, 609466946u,
+1750863246u, 379050598u,
+3576413281u, 731493104u,
+2707384133u, 2289193651u,
+132259176u, 4115195437u,
+1769890695u, 2715470335u,
+3348954692u, 2166575624u,
+1819263183u, 2028531518u,
+2154809766u, 3672399742u,
+1142139448u, 88299682u,
+76727603u, 4198182186u,
+2304993586u, 1666387627u,
+2488475423u, 3832777692u,
+284366017u, 3359785538u,
+3469807328u, 2926494787u,
+1914195188u, 1134129972u,
+3829072836u, 2493478921u,
+3738499303u, 3311304980u,
+726951526u, 911080963u,
+932916545u, 2235559063u,
+2909742396u, 1765719309u,
+465269850u, 3803621553u,
+1456588655u, 508290328u,
+1490719640u, 3356513470u,
+2262196163u, 1451774941u,
+2908490783u, 251085588u,
+830410677u, 3172220325u,
+4039692645u, 1383603170u,
+3897208579u, 1940535730u,
+151909546u, 2384458112u,
+};
+
+// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
+bool Test(int offset, int len = 0) {
+#undef Check
+#undef IsAlive
+
+#define Check(x) do { \
+ const uint32_t actual = (x), e = expected[index++]; \
+ bool ok = actual == e; \
+ if (!ok) { \
+ cerr << "expected " << hex << e << " but got " << actual << endl; \
+ ++errors; \
+ } \
+ assert(ok); \
+} while (0)
+
+#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
+
+ // After the following line is where the uses of "Check" and such will go.
+ static int index = 0;
+if (offset == -1) { int alive = 0; { uint64_t h = farmhashxo::Hash64WithSeeds(data, len++, SEED0, SEED1); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } { uint64_t h = farmhashxo::Hash64WithSeed(data, len++, SEED); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } { uint64_t h = farmhashxo::Hash64(data, len++); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } len -= 3; return alive > 0; }
+{ uint64_t h = farmhashxo::Hash64WithSeeds(data + offset, len, SEED0, SEED1); Check(h >> 32); Check((h << 32) >> 32); }
+{ uint64_t h = farmhashxo::Hash64WithSeed(data + offset, len, SEED); Check(h >> 32); Check((h << 32) >> 32); }
+{ uint64_t h = farmhashxo::Hash64(data + offset, len); Check(h >> 32); Check((h << 32) >> 32); }
+
+ return true;
+#undef Check
+#undef IsAlive
+}
+
+int RunTest() {
+ Setup();
+ int i = 0;
+ cout << "Running farmhashxoTest";
+ if (!Test(-1)) {
+ cout << "... Unavailable\n";
+ return NoteErrors();
+ }
+ // Good. The function is attempting to hash, so run the full test.
+ int errors_prior_to_test = errors;
+ for ( ; i < kTestSize - 1; i++) {
+ Test(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ Test(0, i);
+ }
+ Test(0, kDataSize);
+ cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
+ return NoteErrors();
+}
+
+#else
+
+// After the following line is where the code to print hash codes will go.
+void Dump(int offset, int len) {
+{ uint64_t h = farmhashxo::Hash64WithSeeds(data + offset, len, SEED0, SEED1); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
+{ uint64_t h = farmhashxo::Hash64WithSeed(data + offset, len, SEED); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
+{ uint64_t h = farmhashxo::Hash64(data + offset, len); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
+}
+
+#endif
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+
+} // namespace farmhashxoTest
+
+#if !TESTING
+int main(int argc, char** argv) {
+ Setup();
+ cout << "uint32_t expected[] = {\n";
+ int i = 0;
+ for ( ; i < kTestSize - 1; i++) {
+ farmhashxoTest::Dump(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ farmhashxoTest::Dump(0, i);
+ }
+ farmhashxoTest::Dump(0, kDataSize);
+ cout << "};\n";
+}
+#endif
+
+int main() {
+ farmhashccTest::RunTest();
+ farmhashmkTest::RunTest();
+ farmhashnaTest::RunTest();
+ farmhashntTest::RunTest();
+ farmhashsaTest::RunTest();
+ farmhashsuTest::RunTest();
+ farmhashteTest::RunTest();
+ farmhashuoTest::RunTest();
+ farmhashxoTest::RunTest();
+ __builtin_unreachable();
+}
+
+#endif // FARMHASHSELFTEST
diff --git a/contrib/libs/farmhash/farmhash.h b/contrib/libs/farmhash/farmhash.h
index 0f1802ea82..95388de696 100644
--- a/contrib/libs/farmhash/farmhash.h
+++ b/contrib/libs/farmhash/farmhash.h
@@ -1,328 +1,328 @@
-// Copyright (c) 2014 Google, Inc.
-//
-// 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.
-//
-// FarmHash, by Geoff Pike
-
-//
-// http://code.google.com/p/farmhash/
-//
-// This file provides a few functions for hashing strings and other
-// data. All of them are high-quality functions in the sense that
-// they do well on standard tests such as Austin Appleby's SMHasher.
-// They're also fast. FarmHash is the successor to CityHash.
-//
-// Functions in the FarmHash family are not suitable for cryptography.
-//
-// WARNING: This code has been only lightly tested on big-endian platforms!
-// It is known to work well on little-endian platforms that have a small penalty
-// for unaligned reads, such as current Intel and AMD moderate-to-high-end CPUs.
-// It should work on all 32-bit and 64-bit platforms that allow unaligned reads;
-// bug reports are welcome.
-//
-// By the way, for some hash functions, given strings a and b, the hash
-// of a+b is easily derived from the hashes of a and b. This property
-// doesn't hold for any hash functions in this file.
-
-#ifndef FARM_HASH_H_
-#define FARM_HASH_H_
-
-#include <assert.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <string.h> // for memcpy and memset
-#include <utility>
-
-#ifndef NAMESPACE_FOR_HASH_FUNCTIONS
-#define NAMESPACE_FOR_HASH_FUNCTIONS util
-#endif
-
-namespace NAMESPACE_FOR_HASH_FUNCTIONS {
-
-#if defined(FARMHASH_UINT128_T_DEFINED)
-#if defined(__clang__)
-#if !defined(uint128_t)
-#define uint128_t __uint128_t
-#endif
-#endif
-inline uint64_t Uint128Low64(const uint128_t x) {
- return static_cast<uint64_t>(x);
-}
-inline uint64_t Uint128High64(const uint128_t x) {
- return static_cast<uint64_t>(x >> 64);
-}
-inline uint128_t Uint128(uint64_t lo, uint64_t hi) {
- return lo + (((uint128_t)hi) << 64);
-}
-#else
-typedef std::pair<uint64_t, uint64_t> uint128_t;
-inline uint64_t Uint128Low64(const uint128_t x) { return x.first; }
-inline uint64_t Uint128High64(const uint128_t x) { return x.second; }
-inline uint128_t Uint128(uint64_t lo, uint64_t hi) { return uint128_t(lo, hi); }
-#endif
-
-
-// BASIC STRING HASHING
-
-// Hash function for a byte array.
-// May change from time to time, may differ on different platforms, may differ
-// depending on NDEBUG.
-size_t Hash(const char* s, size_t len);
-
-// Hash function for a byte array. Most useful in 32-bit binaries.
-// May change from time to time, may differ on different platforms, may differ
-// depending on NDEBUG.
-uint32_t Hash32(const char* s, size_t len);
-
-// Hash function for a byte array. For convenience, a 32-bit seed is also
-// hashed into the result.
-// May change from time to time, may differ on different platforms, may differ
-// depending on NDEBUG.
-uint32_t Hash32WithSeed(const char* s, size_t len, uint32_t seed);
-
-// Hash function for a byte array.
-// May change from time to time, may differ on different platforms, may differ
-// depending on NDEBUG.
-uint64_t Hash64(const char* s, size_t len);
-
-// Hash function for a byte array. For convenience, a 64-bit seed is also
-// hashed into the result.
-// May change from time to time, may differ on different platforms, may differ
-// depending on NDEBUG.
-uint64_t Hash64WithSeed(const char* s, size_t len, uint64_t seed);
-
-// Hash function for a byte array. For convenience, two seeds are also
-// hashed into the result.
-// May change from time to time, may differ on different platforms, may differ
-// depending on NDEBUG.
-uint64_t Hash64WithSeeds(const char* s, size_t len,
- uint64_t seed0, uint64_t seed1);
-
-// Hash function for a byte array.
-// May change from time to time, may differ on different platforms, may differ
-// depending on NDEBUG.
-uint128_t Hash128(const char* s, size_t len);
-
-// Hash function for a byte array. For convenience, a 128-bit seed is also
-// hashed into the result.
-// May change from time to time, may differ on different platforms, may differ
-// depending on NDEBUG.
-uint128_t Hash128WithSeed(const char* s, size_t len, uint128_t seed);
-
-// BASIC NON-STRING HASHING
-
-// Hash 128 input bits down to 64 bits of output.
-// This is intended to be a reasonably good hash function.
-// May change from time to time, may differ on different platforms, may differ
-// depending on NDEBUG.
-inline uint64_t Hash128to64(uint128_t x) {
- // Murmur-inspired hashing.
- const uint64_t kMul = 0x9ddfea08eb382d69ULL;
- uint64_t a = (Uint128Low64(x) ^ Uint128High64(x)) * kMul;
- a ^= (a >> 47);
- uint64_t b = (Uint128High64(x) ^ a) * kMul;
- b ^= (b >> 47);
- b *= kMul;
- return b;
-}
-
-// FINGERPRINTING (i.e., good, portable, forever-fixed hash functions)
-
-// Fingerprint function for a byte array. Most useful in 32-bit binaries.
-uint32_t Fingerprint32(const char* s, size_t len);
-
-// Fingerprint function for a byte array.
-uint64_t Fingerprint64(const char* s, size_t len);
-
-// Fingerprint function for a byte array.
-uint128_t Fingerprint128(const char* s, size_t len);
-
-// This is intended to be a good fingerprinting primitive.
-// See below for more overloads.
-inline uint64_t Fingerprint(uint128_t x) {
- // Murmur-inspired hashing.
- const uint64_t kMul = 0x9ddfea08eb382d69ULL;
- uint64_t a = (Uint128Low64(x) ^ Uint128High64(x)) * kMul;
- a ^= (a >> 47);
- uint64_t b = (Uint128High64(x) ^ a) * kMul;
- b ^= (b >> 44);
- b *= kMul;
- b ^= (b >> 41);
- b *= kMul;
- return b;
-}
-
-// This is intended to be a good fingerprinting primitive.
-inline uint64_t Fingerprint(uint64_t x) {
- // Murmur-inspired hashing.
- const uint64_t kMul = 0x9ddfea08eb382d69ULL;
- uint64_t b = x * kMul;
- b ^= (b >> 44);
- b *= kMul;
- b ^= (b >> 41);
- b *= kMul;
- return b;
-}
-
-#ifndef FARMHASH_NO_CXX_STRING
-
-// Convenience functions to hash or fingerprint C++ strings.
-// These require that Str::data() return a pointer to the first char
-// (as a const char*) and that Str::length() return the string's length;
-// they work with std::string, for example.
-
-// Hash function for a byte array.
-// May change from time to time, may differ on different platforms, may differ
-// depending on NDEBUG.
-template <typename Str>
-inline size_t Hash(const Str& s) {
- assert(sizeof(s[0]) == 1);
- return Hash(s.data(), s.length());
-}
-
-// Hash function for a byte array. Most useful in 32-bit binaries.
-// May change from time to time, may differ on different platforms, may differ
-// depending on NDEBUG.
-template <typename Str>
-inline uint32_t Hash32(const Str& s) {
- assert(sizeof(s[0]) == 1);
- return Hash32(s.data(), s.length());
-}
-
-// Hash function for a byte array. For convenience, a 32-bit seed is also
-// hashed into the result.
-// May change from time to time, may differ on different platforms, may differ
-// depending on NDEBUG.
-template <typename Str>
-inline uint32_t Hash32WithSeed(const Str& s, uint32_t seed) {
- assert(sizeof(s[0]) == 1);
- return Hash32WithSeed(s.data(), s.length(), seed);
-}
-
-// Hash 128 input bits down to 64 bits of output.
-// Hash function for a byte array.
-// May change from time to time, may differ on different platforms, may differ
-// depending on NDEBUG.
-template <typename Str>
-inline uint64_t Hash64(const Str& s) {
- assert(sizeof(s[0]) == 1);
- return Hash64(s.data(), s.length());
-}
-
-// Hash function for a byte array. For convenience, a 64-bit seed is also
-// hashed into the result.
-// May change from time to time, may differ on different platforms, may differ
-// depending on NDEBUG.
-template <typename Str>
-inline uint64_t Hash64WithSeed(const Str& s, uint64_t seed) {
- assert(sizeof(s[0]) == 1);
- return Hash64WithSeed(s.data(), s.length(), seed);
-}
-
-// Hash function for a byte array. For convenience, two seeds are also
-// hashed into the result.
-// May change from time to time, may differ on different platforms, may differ
-// depending on NDEBUG.
-template <typename Str>
-inline uint64_t Hash64WithSeeds(const Str& s, uint64_t seed0, uint64_t seed1) {
- assert(sizeof(s[0]) == 1);
- return Hash64WithSeeds(s.data(), s.length(), seed0, seed1);
-}
-
-// Hash function for a byte array.
-// May change from time to time, may differ on different platforms, may differ
-// depending on NDEBUG.
-template <typename Str>
-inline uint128_t Hash128(const Str& s) {
- assert(sizeof(s[0]) == 1);
- return Hash128(s.data(), s.length());
-}
-
-// Hash function for a byte array. For convenience, a 128-bit seed is also
-// hashed into the result.
-// May change from time to time, may differ on different platforms, may differ
-// depending on NDEBUG.
-template <typename Str>
-inline uint128_t Hash128WithSeed(const Str& s, uint128_t seed) {
- assert(sizeof(s[0]) == 1);
- return Hash128(s.data(), s.length(), seed);
-}
-
-// FINGERPRINTING (i.e., good, portable, forever-fixed hash functions)
-
-// Fingerprint function for a byte array. Most useful in 32-bit binaries.
-template <typename Str>
-inline uint32_t Fingerprint32(const Str& s) {
- assert(sizeof(s[0]) == 1);
- return Fingerprint32(s.data(), s.length());
-}
-
-// Fingerprint 128 input bits down to 64 bits of output.
-// Fingerprint function for a byte array.
-template <typename Str>
-inline uint64_t Fingerprint64(const Str& s) {
- assert(sizeof(s[0]) == 1);
- return Fingerprint64(s.data(), s.length());
-}
-
-// Fingerprint function for a byte array.
-template <typename Str>
-inline uint128_t Fingerprint128(const Str& s) {
- assert(sizeof(s[0]) == 1);
- return Fingerprint128(s.data(), s.length());
-}
-
-#endif
-
-} // namespace NAMESPACE_FOR_HASH_FUNCTIONS
-
-/* gently define FARMHASH_BIG_ENDIAN when detected big-endian machine */
-#if defined(__BIG_ENDIAN__)
- #if !defined(FARMHASH_BIG_ENDIAN)
- #define FARMHASH_BIG_ENDIAN
- #endif
-#elif defined(__LITTLE_ENDIAN__)
- // nothing for little-endian
-#elif defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && (__BYTE_ORDER == __ORDER_LITTLE_ENDIAN__)
- // nothing for little-endian
-#elif defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && (__BYTE_ORDER == __ORDER_BIG_ENDIAN__)
- #if !defined(FARMHASH_BIG_ENDIAN)
- #define FARMHASH_BIG_ENDIAN
- #endif
-#elif defined(__linux__) || defined(__CYGWIN__) || defined( __GNUC__ ) || defined( __GNU_LIBRARY__ )
- #include <endian.h> // libc6-dev, GLIBC
- #if BYTE_ORDER == BIG_ENDIAN
- #if !defined(FARMHASH_BIG_ENDIAN)
- #define FARMHASH_BIG_ENDIAN
- #endif
- #endif
-#elif defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__DragonFly__)
- #include <sys/endian.h>
- #if BYTE_ORDER == BIG_ENDIAN
- #if !defined(FARMHASH_BIG_ENDIAN)
- #define FARMHASH_BIG_ENDIAN
- #endif
- #endif
-#elif defined(_WIN32)
- // Windows is (currently) little-endian
-#else
- #error "Unable to determine endianness!"
-#endif /* __BIG_ENDIAN__ */
-
-#endif // FARM_HASH_H_
+// Copyright (c) 2014 Google, Inc.
+//
+// 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.
+//
+// FarmHash, by Geoff Pike
+
+//
+// http://code.google.com/p/farmhash/
+//
+// This file provides a few functions for hashing strings and other
+// data. All of them are high-quality functions in the sense that
+// they do well on standard tests such as Austin Appleby's SMHasher.
+// They're also fast. FarmHash is the successor to CityHash.
+//
+// Functions in the FarmHash family are not suitable for cryptography.
+//
+// WARNING: This code has been only lightly tested on big-endian platforms!
+// It is known to work well on little-endian platforms that have a small penalty
+// for unaligned reads, such as current Intel and AMD moderate-to-high-end CPUs.
+// It should work on all 32-bit and 64-bit platforms that allow unaligned reads;
+// bug reports are welcome.
+//
+// By the way, for some hash functions, given strings a and b, the hash
+// of a+b is easily derived from the hashes of a and b. This property
+// doesn't hold for any hash functions in this file.
+
+#ifndef FARM_HASH_H_
+#define FARM_HASH_H_
+
+#include <assert.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h> // for memcpy and memset
+#include <utility>
+
+#ifndef NAMESPACE_FOR_HASH_FUNCTIONS
+#define NAMESPACE_FOR_HASH_FUNCTIONS util
+#endif
+
+namespace NAMESPACE_FOR_HASH_FUNCTIONS {
+
+#if defined(FARMHASH_UINT128_T_DEFINED)
+#if defined(__clang__)
+#if !defined(uint128_t)
+#define uint128_t __uint128_t
+#endif
+#endif
+inline uint64_t Uint128Low64(const uint128_t x) {
+ return static_cast<uint64_t>(x);
+}
+inline uint64_t Uint128High64(const uint128_t x) {
+ return static_cast<uint64_t>(x >> 64);
+}
+inline uint128_t Uint128(uint64_t lo, uint64_t hi) {
+ return lo + (((uint128_t)hi) << 64);
+}
+#else
+typedef std::pair<uint64_t, uint64_t> uint128_t;
+inline uint64_t Uint128Low64(const uint128_t x) { return x.first; }
+inline uint64_t Uint128High64(const uint128_t x) { return x.second; }
+inline uint128_t Uint128(uint64_t lo, uint64_t hi) { return uint128_t(lo, hi); }
+#endif
+
+
+// BASIC STRING HASHING
+
+// Hash function for a byte array.
+// May change from time to time, may differ on different platforms, may differ
+// depending on NDEBUG.
+size_t Hash(const char* s, size_t len);
+
+// Hash function for a byte array. Most useful in 32-bit binaries.
+// May change from time to time, may differ on different platforms, may differ
+// depending on NDEBUG.
+uint32_t Hash32(const char* s, size_t len);
+
+// Hash function for a byte array. For convenience, a 32-bit seed is also
+// hashed into the result.
+// May change from time to time, may differ on different platforms, may differ
+// depending on NDEBUG.
+uint32_t Hash32WithSeed(const char* s, size_t len, uint32_t seed);
+
+// Hash function for a byte array.
+// May change from time to time, may differ on different platforms, may differ
+// depending on NDEBUG.
+uint64_t Hash64(const char* s, size_t len);
+
+// Hash function for a byte array. For convenience, a 64-bit seed is also
+// hashed into the result.
+// May change from time to time, may differ on different platforms, may differ
+// depending on NDEBUG.
+uint64_t Hash64WithSeed(const char* s, size_t len, uint64_t seed);
+
+// Hash function for a byte array. For convenience, two seeds are also
+// hashed into the result.
+// May change from time to time, may differ on different platforms, may differ
+// depending on NDEBUG.
+uint64_t Hash64WithSeeds(const char* s, size_t len,
+ uint64_t seed0, uint64_t seed1);
+
+// Hash function for a byte array.
+// May change from time to time, may differ on different platforms, may differ
+// depending on NDEBUG.
+uint128_t Hash128(const char* s, size_t len);
+
+// Hash function for a byte array. For convenience, a 128-bit seed is also
+// hashed into the result.
+// May change from time to time, may differ on different platforms, may differ
+// depending on NDEBUG.
+uint128_t Hash128WithSeed(const char* s, size_t len, uint128_t seed);
+
+// BASIC NON-STRING HASHING
+
+// Hash 128 input bits down to 64 bits of output.
+// This is intended to be a reasonably good hash function.
+// May change from time to time, may differ on different platforms, may differ
+// depending on NDEBUG.
+inline uint64_t Hash128to64(uint128_t x) {
+ // Murmur-inspired hashing.
+ const uint64_t kMul = 0x9ddfea08eb382d69ULL;
+ uint64_t a = (Uint128Low64(x) ^ Uint128High64(x)) * kMul;
+ a ^= (a >> 47);
+ uint64_t b = (Uint128High64(x) ^ a) * kMul;
+ b ^= (b >> 47);
+ b *= kMul;
+ return b;
+}
+
+// FINGERPRINTING (i.e., good, portable, forever-fixed hash functions)
+
+// Fingerprint function for a byte array. Most useful in 32-bit binaries.
+uint32_t Fingerprint32(const char* s, size_t len);
+
+// Fingerprint function for a byte array.
+uint64_t Fingerprint64(const char* s, size_t len);
+
+// Fingerprint function for a byte array.
+uint128_t Fingerprint128(const char* s, size_t len);
+
+// This is intended to be a good fingerprinting primitive.
+// See below for more overloads.
+inline uint64_t Fingerprint(uint128_t x) {
+ // Murmur-inspired hashing.
+ const uint64_t kMul = 0x9ddfea08eb382d69ULL;
+ uint64_t a = (Uint128Low64(x) ^ Uint128High64(x)) * kMul;
+ a ^= (a >> 47);
+ uint64_t b = (Uint128High64(x) ^ a) * kMul;
+ b ^= (b >> 44);
+ b *= kMul;
+ b ^= (b >> 41);
+ b *= kMul;
+ return b;
+}
+
+// This is intended to be a good fingerprinting primitive.
+inline uint64_t Fingerprint(uint64_t x) {
+ // Murmur-inspired hashing.
+ const uint64_t kMul = 0x9ddfea08eb382d69ULL;
+ uint64_t b = x * kMul;
+ b ^= (b >> 44);
+ b *= kMul;
+ b ^= (b >> 41);
+ b *= kMul;
+ return b;
+}
+
+#ifndef FARMHASH_NO_CXX_STRING
+
+// Convenience functions to hash or fingerprint C++ strings.
+// These require that Str::data() return a pointer to the first char
+// (as a const char*) and that Str::length() return the string's length;
+// they work with std::string, for example.
+
+// Hash function for a byte array.
+// May change from time to time, may differ on different platforms, may differ
+// depending on NDEBUG.
+template <typename Str>
+inline size_t Hash(const Str& s) {
+ assert(sizeof(s[0]) == 1);
+ return Hash(s.data(), s.length());
+}
+
+// Hash function for a byte array. Most useful in 32-bit binaries.
+// May change from time to time, may differ on different platforms, may differ
+// depending on NDEBUG.
+template <typename Str>
+inline uint32_t Hash32(const Str& s) {
+ assert(sizeof(s[0]) == 1);
+ return Hash32(s.data(), s.length());
+}
+
+// Hash function for a byte array. For convenience, a 32-bit seed is also
+// hashed into the result.
+// May change from time to time, may differ on different platforms, may differ
+// depending on NDEBUG.
+template <typename Str>
+inline uint32_t Hash32WithSeed(const Str& s, uint32_t seed) {
+ assert(sizeof(s[0]) == 1);
+ return Hash32WithSeed(s.data(), s.length(), seed);
+}
+
+// Hash 128 input bits down to 64 bits of output.
+// Hash function for a byte array.
+// May change from time to time, may differ on different platforms, may differ
+// depending on NDEBUG.
+template <typename Str>
+inline uint64_t Hash64(const Str& s) {
+ assert(sizeof(s[0]) == 1);
+ return Hash64(s.data(), s.length());
+}
+
+// Hash function for a byte array. For convenience, a 64-bit seed is also
+// hashed into the result.
+// May change from time to time, may differ on different platforms, may differ
+// depending on NDEBUG.
+template <typename Str>
+inline uint64_t Hash64WithSeed(const Str& s, uint64_t seed) {
+ assert(sizeof(s[0]) == 1);
+ return Hash64WithSeed(s.data(), s.length(), seed);
+}
+
+// Hash function for a byte array. For convenience, two seeds are also
+// hashed into the result.
+// May change from time to time, may differ on different platforms, may differ
+// depending on NDEBUG.
+template <typename Str>
+inline uint64_t Hash64WithSeeds(const Str& s, uint64_t seed0, uint64_t seed1) {
+ assert(sizeof(s[0]) == 1);
+ return Hash64WithSeeds(s.data(), s.length(), seed0, seed1);
+}
+
+// Hash function for a byte array.
+// May change from time to time, may differ on different platforms, may differ
+// depending on NDEBUG.
+template <typename Str>
+inline uint128_t Hash128(const Str& s) {
+ assert(sizeof(s[0]) == 1);
+ return Hash128(s.data(), s.length());
+}
+
+// Hash function for a byte array. For convenience, a 128-bit seed is also
+// hashed into the result.
+// May change from time to time, may differ on different platforms, may differ
+// depending on NDEBUG.
+template <typename Str>
+inline uint128_t Hash128WithSeed(const Str& s, uint128_t seed) {
+ assert(sizeof(s[0]) == 1);
+ return Hash128(s.data(), s.length(), seed);
+}
+
+// FINGERPRINTING (i.e., good, portable, forever-fixed hash functions)
+
+// Fingerprint function for a byte array. Most useful in 32-bit binaries.
+template <typename Str>
+inline uint32_t Fingerprint32(const Str& s) {
+ assert(sizeof(s[0]) == 1);
+ return Fingerprint32(s.data(), s.length());
+}
+
+// Fingerprint 128 input bits down to 64 bits of output.
+// Fingerprint function for a byte array.
+template <typename Str>
+inline uint64_t Fingerprint64(const Str& s) {
+ assert(sizeof(s[0]) == 1);
+ return Fingerprint64(s.data(), s.length());
+}
+
+// Fingerprint function for a byte array.
+template <typename Str>
+inline uint128_t Fingerprint128(const Str& s) {
+ assert(sizeof(s[0]) == 1);
+ return Fingerprint128(s.data(), s.length());
+}
+
+#endif
+
+} // namespace NAMESPACE_FOR_HASH_FUNCTIONS
+
+/* gently define FARMHASH_BIG_ENDIAN when detected big-endian machine */
+#if defined(__BIG_ENDIAN__)
+ #if !defined(FARMHASH_BIG_ENDIAN)
+ #define FARMHASH_BIG_ENDIAN
+ #endif
+#elif defined(__LITTLE_ENDIAN__)
+ // nothing for little-endian
+#elif defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && (__BYTE_ORDER == __ORDER_LITTLE_ENDIAN__)
+ // nothing for little-endian
+#elif defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && (__BYTE_ORDER == __ORDER_BIG_ENDIAN__)
+ #if !defined(FARMHASH_BIG_ENDIAN)
+ #define FARMHASH_BIG_ENDIAN
+ #endif
+#elif defined(__linux__) || defined(__CYGWIN__) || defined( __GNUC__ ) || defined( __GNU_LIBRARY__ )
+ #include <endian.h> // libc6-dev, GLIBC
+ #if BYTE_ORDER == BIG_ENDIAN
+ #if !defined(FARMHASH_BIG_ENDIAN)
+ #define FARMHASH_BIG_ENDIAN
+ #endif
+ #endif
+#elif defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__DragonFly__)
+ #include <sys/endian.h>
+ #if BYTE_ORDER == BIG_ENDIAN
+ #if !defined(FARMHASH_BIG_ENDIAN)
+ #define FARMHASH_BIG_ENDIAN
+ #endif
+ #endif
+#elif defined(_WIN32)
+ // Windows is (currently) little-endian
+#else
+ #error "Unable to determine endianness!"
+#endif /* __BIG_ENDIAN__ */
+
+#endif // FARM_HASH_H_
diff --git a/contrib/libs/farmhash/farmhash_iface.cc b/contrib/libs/farmhash/farmhash_iface.cc
index 0064662412..a9c3ca77f2 100644
--- a/contrib/libs/farmhash/farmhash_iface.cc
+++ b/contrib/libs/farmhash/farmhash_iface.cc
@@ -1,106 +1,106 @@
-#include "common.h"
-
-#include "farmhash_iface.h"
-
-#include <util/system/cpu_id.h>
-
-namespace NAMESPACE_FOR_HASH_FUNCTIONS {
-
-// BASIC STRING HASHING
-
-// Hash function for a byte array. See also Hash(), below.
-// May change from time to time, may differ on different platforms, may differ
-// depending on NDEBUG.
-uint32_t Hash32(const char* s, size_t len) {
- return DebugTweak(
- (NX86::CachedHaveSSE41() & x86_64) ? farmhashnt::Hash32(s, len) :
- (NX86::CachedHaveSSE42() & NX86::CachedHaveAES()) ? farmhashsu::Hash32(s, len) :
- NX86::CachedHaveSSE42() ? farmhashsa::Hash32(s, len) :
- farmhashmk::Hash32(s, len));
-}
-
-// Hash function for a byte array. For convenience, a 32-bit seed is also
-// hashed into the result.
-// May change from time to time, may differ on different platforms, may differ
-// depending on NDEBUG.
-uint32_t Hash32WithSeed(const char* s, size_t len, uint32_t seed) {
- return DebugTweak(
- (NX86::CachedHaveSSE41() & x86_64) ? farmhashnt::Hash32WithSeed(s, len, seed) :
- (NX86::CachedHaveSSE42() & NX86::CachedHaveAES()) ? farmhashsu::Hash32WithSeed(s, len, seed) :
- NX86::CachedHaveSSE42() ? farmhashsa::Hash32WithSeed(s, len, seed) :
- farmhashmk::Hash32WithSeed(s, len, seed));
-}
-
-// Hash function for a byte array. For convenience, a 64-bit seed is also
-// hashed into the result. See also Hash(), below.
-// May change from time to time, may differ on different platforms, may differ
-// depending on NDEBUG.
-uint64_t Hash64(const char* s, size_t len) {
- return DebugTweak(
- (NX86::CachedHaveSSE42() & x86_64) ?
- farmhashte::Hash64(s, len) :
- farmhashxo::Hash64(s, len));
-}
-
-// Hash function for a byte array.
-// May change from time to time, may differ on different platforms, may differ
-// depending on NDEBUG.
-size_t Hash(const char* s, size_t len) {
- return sizeof(size_t) == 8 ? Hash64(s, len) : Hash32(s, len);
-}
-
-// Hash function for a byte array. For convenience, a 64-bit seed is also
-// hashed into the result.
-// May change from time to time, may differ on different platforms, may differ
-// depending on NDEBUG.
-uint64_t Hash64WithSeed(const char* s, size_t len, uint64_t seed) {
- return DebugTweak(farmhashna::Hash64WithSeed(s, len, seed));
-}
-
-// Hash function for a byte array. For convenience, two seeds are also
-// hashed into the result.
-// May change from time to time, may differ on different platforms, may differ
-// depending on NDEBUG.
-uint64_t Hash64WithSeeds(const char* s, size_t len, uint64_t seed0, uint64_t seed1) {
- return DebugTweak(farmhashna::Hash64WithSeeds(s, len, seed0, seed1));
-}
-
-// Hash function for a byte array.
-// May change from time to time, may differ on different platforms, may differ
-// depending on NDEBUG.
-uint128_t Hash128(const char* s, size_t len) {
- return DebugTweak(farmhashcc::Fingerprint128(s, len));
-}
-
-// Hash function for a byte array. For convenience, a 128-bit seed is also
-// hashed into the result.
-// May change from time to time, may differ on different platforms, may differ
-// depending on NDEBUG.
-uint128_t Hash128WithSeed(const char* s, size_t len, uint128_t seed) {
- return DebugTweak(farmhashcc::CityHash128WithSeed(s, len, seed));
-}
-
-// BASIC NON-STRING HASHING
-
-// FINGERPRINTING (i.e., good, portable, forever-fixed hash functions)
-
-// Fingerprint function for a byte array. Most useful in 32-bit binaries.
-uint32_t Fingerprint32(const char* s, size_t len) {
- return farmhashmk::Hash32(s, len);
-}
-
-// Fingerprint function for a byte array.
-uint64_t Fingerprint64(const char* s, size_t len) {
- return farmhashna::Hash64(s, len);
-}
-
-// Fingerprint function for a byte array.
-uint128_t Fingerprint128(const char* s, size_t len) {
- return farmhashcc::Fingerprint128(s, len);
-}
-
-// Older and still available but perhaps not as fast as the above:
-// farmhashns::Hash32{,WithSeed}()
-
-} // namespace NAMESPACE_FOR_HASH_FUNCTIONS
-
+#include "common.h"
+
+#include "farmhash_iface.h"
+
+#include <util/system/cpu_id.h>
+
+namespace NAMESPACE_FOR_HASH_FUNCTIONS {
+
+// BASIC STRING HASHING
+
+// Hash function for a byte array. See also Hash(), below.
+// May change from time to time, may differ on different platforms, may differ
+// depending on NDEBUG.
+uint32_t Hash32(const char* s, size_t len) {
+ return DebugTweak(
+ (NX86::CachedHaveSSE41() & x86_64) ? farmhashnt::Hash32(s, len) :
+ (NX86::CachedHaveSSE42() & NX86::CachedHaveAES()) ? farmhashsu::Hash32(s, len) :
+ NX86::CachedHaveSSE42() ? farmhashsa::Hash32(s, len) :
+ farmhashmk::Hash32(s, len));
+}
+
+// Hash function for a byte array. For convenience, a 32-bit seed is also
+// hashed into the result.
+// May change from time to time, may differ on different platforms, may differ
+// depending on NDEBUG.
+uint32_t Hash32WithSeed(const char* s, size_t len, uint32_t seed) {
+ return DebugTweak(
+ (NX86::CachedHaveSSE41() & x86_64) ? farmhashnt::Hash32WithSeed(s, len, seed) :
+ (NX86::CachedHaveSSE42() & NX86::CachedHaveAES()) ? farmhashsu::Hash32WithSeed(s, len, seed) :
+ NX86::CachedHaveSSE42() ? farmhashsa::Hash32WithSeed(s, len, seed) :
+ farmhashmk::Hash32WithSeed(s, len, seed));
+}
+
+// Hash function for a byte array. For convenience, a 64-bit seed is also
+// hashed into the result. See also Hash(), below.
+// May change from time to time, may differ on different platforms, may differ
+// depending on NDEBUG.
+uint64_t Hash64(const char* s, size_t len) {
+ return DebugTweak(
+ (NX86::CachedHaveSSE42() & x86_64) ?
+ farmhashte::Hash64(s, len) :
+ farmhashxo::Hash64(s, len));
+}
+
+// Hash function for a byte array.
+// May change from time to time, may differ on different platforms, may differ
+// depending on NDEBUG.
+size_t Hash(const char* s, size_t len) {
+ return sizeof(size_t) == 8 ? Hash64(s, len) : Hash32(s, len);
+}
+
+// Hash function for a byte array. For convenience, a 64-bit seed is also
+// hashed into the result.
+// May change from time to time, may differ on different platforms, may differ
+// depending on NDEBUG.
+uint64_t Hash64WithSeed(const char* s, size_t len, uint64_t seed) {
+ return DebugTweak(farmhashna::Hash64WithSeed(s, len, seed));
+}
+
+// Hash function for a byte array. For convenience, two seeds are also
+// hashed into the result.
+// May change from time to time, may differ on different platforms, may differ
+// depending on NDEBUG.
+uint64_t Hash64WithSeeds(const char* s, size_t len, uint64_t seed0, uint64_t seed1) {
+ return DebugTweak(farmhashna::Hash64WithSeeds(s, len, seed0, seed1));
+}
+
+// Hash function for a byte array.
+// May change from time to time, may differ on different platforms, may differ
+// depending on NDEBUG.
+uint128_t Hash128(const char* s, size_t len) {
+ return DebugTweak(farmhashcc::Fingerprint128(s, len));
+}
+
+// Hash function for a byte array. For convenience, a 128-bit seed is also
+// hashed into the result.
+// May change from time to time, may differ on different platforms, may differ
+// depending on NDEBUG.
+uint128_t Hash128WithSeed(const char* s, size_t len, uint128_t seed) {
+ return DebugTweak(farmhashcc::CityHash128WithSeed(s, len, seed));
+}
+
+// BASIC NON-STRING HASHING
+
+// FINGERPRINTING (i.e., good, portable, forever-fixed hash functions)
+
+// Fingerprint function for a byte array. Most useful in 32-bit binaries.
+uint32_t Fingerprint32(const char* s, size_t len) {
+ return farmhashmk::Hash32(s, len);
+}
+
+// Fingerprint function for a byte array.
+uint64_t Fingerprint64(const char* s, size_t len) {
+ return farmhashna::Hash64(s, len);
+}
+
+// Fingerprint function for a byte array.
+uint128_t Fingerprint128(const char* s, size_t len) {
+ return farmhashcc::Fingerprint128(s, len);
+}
+
+// Older and still available but perhaps not as fast as the above:
+// farmhashns::Hash32{,WithSeed}()
+
+} // namespace NAMESPACE_FOR_HASH_FUNCTIONS
+
diff --git a/contrib/libs/farmhash/farmhash_iface.h b/contrib/libs/farmhash/farmhash_iface.h
index 9d5d0a5f9b..936aafd494 100644
--- a/contrib/libs/farmhash/farmhash_iface.h
+++ b/contrib/libs/farmhash/farmhash_iface.h
@@ -1,28 +1,28 @@
-#define FARMHASH_INTERFACE(name) namespace name { \
- uint32_t Hash32(const char* s, size_t len); \
- uint32_t Hash32WithSeed(const char* s, size_t len, uint32_t seed); \
- uint64_t Hash64(const char* s, size_t len); \
- uint64_t Hash64WithSeed(const char* s, size_t len, uint64_t seed); \
- uint64_t Hash64WithSeeds(const char* s, size_t len, uint64_t seed0, uint64_t seed1); \
- uint128_t Hash128(const char* s, size_t len); \
- uint128_t Hash128WithSeed(const char* s, size_t len, uint128_t seed); \
-}
-
-namespace farmhashcc {
- uint32_t Fingerprint32(const char* s, size_t len);
- uint64_t Fingerprint64(const char* s, size_t len);
- uint128_t Fingerprint128(const char* s, size_t len);
- uint128_t CityHash128WithSeed(const char* s, size_t len, uint128_t seed);
-}
-
-FARMHASH_INTERFACE(farmhashcc)
-FARMHASH_INTERFACE(farmhashsa)
-FARMHASH_INTERFACE(farmhashsu)
-FARMHASH_INTERFACE(farmhashmk)
-FARMHASH_INTERFACE(farmhashnt)
-FARMHASH_INTERFACE(farmhashte)
-FARMHASH_INTERFACE(farmhashxo)
-FARMHASH_INTERFACE(farmhashuo)
-FARMHASH_INTERFACE(farmhashna)
-
-#undef FARMHASH_INTERFACE
+#define FARMHASH_INTERFACE(name) namespace name { \
+ uint32_t Hash32(const char* s, size_t len); \
+ uint32_t Hash32WithSeed(const char* s, size_t len, uint32_t seed); \
+ uint64_t Hash64(const char* s, size_t len); \
+ uint64_t Hash64WithSeed(const char* s, size_t len, uint64_t seed); \
+ uint64_t Hash64WithSeeds(const char* s, size_t len, uint64_t seed0, uint64_t seed1); \
+ uint128_t Hash128(const char* s, size_t len); \
+ uint128_t Hash128WithSeed(const char* s, size_t len, uint128_t seed); \
+}
+
+namespace farmhashcc {
+ uint32_t Fingerprint32(const char* s, size_t len);
+ uint64_t Fingerprint64(const char* s, size_t len);
+ uint128_t Fingerprint128(const char* s, size_t len);
+ uint128_t CityHash128WithSeed(const char* s, size_t len, uint128_t seed);
+}
+
+FARMHASH_INTERFACE(farmhashcc)
+FARMHASH_INTERFACE(farmhashsa)
+FARMHASH_INTERFACE(farmhashsu)
+FARMHASH_INTERFACE(farmhashmk)
+FARMHASH_INTERFACE(farmhashnt)
+FARMHASH_INTERFACE(farmhashte)
+FARMHASH_INTERFACE(farmhashxo)
+FARMHASH_INTERFACE(farmhashuo)
+FARMHASH_INTERFACE(farmhashna)
+
+#undef FARMHASH_INTERFACE
diff --git a/contrib/libs/farmhash/farmhashcc.cc b/contrib/libs/farmhash/farmhashcc.cc
index 4fc2741048..d3e30af4c3 100644
--- a/contrib/libs/farmhash/farmhashcc.cc
+++ b/contrib/libs/farmhash/farmhashcc.cc
@@ -1,314 +1,314 @@
-#include "common.h"
-
-namespace {
- #include "farmhashsa.cc"
-}
-
-namespace farmhashcc {
-// This file provides a 32-bit hash equivalent to CityHash32 (v1.1.1)
-// and a 128-bit hash equivalent to CityHash128 (v1.1.1). It also provides
-// a seeded 32-bit hash function similar to CityHash32.
-
-#undef Fetch
-#define Fetch Fetch32
-
-#undef Rotate
-#define Rotate Rotate32
-
-#undef Bswap
-#define Bswap Bswap32
-
-STATIC_INLINE uint32_t Hash32Len13to24(const char *s, size_t len) {
- uint32_t a = Fetch(s - 4 + (len >> 1));
- uint32_t b = Fetch(s + 4);
- uint32_t c = Fetch(s + len - 8);
- uint32_t d = Fetch(s + (len >> 1));
- uint32_t e = Fetch(s);
- uint32_t f = Fetch(s + len - 4);
- uint32_t h = len;
-
- return fmix(Mur(f, Mur(e, Mur(d, Mur(c, Mur(b, Mur(a, h)))))));
-}
-
-STATIC_INLINE uint32_t Hash32Len0to4(const char *s, size_t len) {
- uint32_t b = 0;
- uint32_t c = 9;
- for (size_t i = 0; i < len; i++) {
- signed char v = s[i];
- b = b * c1 + v;
- c ^= b;
- }
- return fmix(Mur(b, Mur(len, c)));
-}
-
-STATIC_INLINE uint32_t Hash32Len5to12(const char *s, size_t len) {
- uint32_t a = len, b = len * 5, c = 9, d = b;
- a += Fetch(s);
- b += Fetch(s + len - 4);
- c += Fetch(s + ((len >> 1) & 4));
- return fmix(Mur(c, Mur(b, Mur(a, d))));
-}
-
-uint32_t Hash32(const char *s, size_t len) {
- if (len <= 24) {
- return len <= 12 ?
- (len <= 4 ? Hash32Len0to4(s, len) : Hash32Len5to12(s, len)) :
- Hash32Len13to24(s, len);
- }
-
- // len > 24
- uint32_t h = len, g = c1 * len, f = g;
- uint32_t a0 = Rotate(Fetch(s + len - 4) * c1, 17) * c2;
- uint32_t a1 = Rotate(Fetch(s + len - 8) * c1, 17) * c2;
- uint32_t a2 = Rotate(Fetch(s + len - 16) * c1, 17) * c2;
- uint32_t a3 = Rotate(Fetch(s + len - 12) * c1, 17) * c2;
- uint32_t a4 = Rotate(Fetch(s + len - 20) * c1, 17) * c2;
- h ^= a0;
- h = Rotate(h, 19);
- h = h * 5 + 0xe6546b64;
- h ^= a2;
- h = Rotate(h, 19);
- h = h * 5 + 0xe6546b64;
- g ^= a1;
- g = Rotate(g, 19);
- g = g * 5 + 0xe6546b64;
- g ^= a3;
- g = Rotate(g, 19);
- g = g * 5 + 0xe6546b64;
- f += a4;
- f = Rotate(f, 19);
- f = f * 5 + 0xe6546b64;
- size_t iters = (len - 1) / 20;
- do {
- uint32_t a0 = Rotate(Fetch(s) * c1, 17) * c2;
- uint32_t a1 = Fetch(s + 4);
- uint32_t a2 = Rotate(Fetch(s + 8) * c1, 17) * c2;
- uint32_t a3 = Rotate(Fetch(s + 12) * c1, 17) * c2;
- uint32_t a4 = Fetch(s + 16);
- h ^= a0;
- h = Rotate(h, 18);
- h = h * 5 + 0xe6546b64;
- f += a1;
- f = Rotate(f, 19);
- f = f * c1;
- g += a2;
- g = Rotate(g, 18);
- g = g * 5 + 0xe6546b64;
- h ^= a3 + a1;
- h = Rotate(h, 19);
- h = h * 5 + 0xe6546b64;
- g ^= a4;
- g = Bswap(g) * 5;
- h += a4 * 5;
- h = Bswap(h);
- f += a0;
- PERMUTE3(f, h, g);
- s += 20;
- } while (--iters != 0);
- g = Rotate(g, 11) * c1;
- g = Rotate(g, 17) * c1;
- f = Rotate(f, 11) * c1;
- f = Rotate(f, 17) * c1;
- h = Rotate(h + g, 19);
- h = h * 5 + 0xe6546b64;
- h = Rotate(h, 17) * c1;
- h = Rotate(h + f, 19);
- h = h * 5 + 0xe6546b64;
- h = Rotate(h, 17) * c1;
- return h;
-}
-
-uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
- if (len <= 24) {
- if (len >= 13) return farmhashmk::Hash32Len13to24(s, len, seed * c1);
- else if (len >= 5) return farmhashmk::Hash32Len5to12(s, len, seed);
- else return farmhashmk::Hash32Len0to4(s, len, seed);
- }
- uint32_t h = farmhashmk::Hash32Len13to24(s, 24, seed ^ len);
- return Mur(Hash32(s + 24, len - 24) + seed, h);
-}
-
-#undef Fetch
-#define Fetch Fetch64
-
-#undef Rotate
-#define Rotate Rotate64
-
-#undef Bswap
-#define Bswap Bswap64
-
-STATIC_INLINE uint64_t ShiftMix(uint64_t val) {
- return val ^ (val >> 47);
-}
-
-STATIC_INLINE uint64_t HashLen16(uint64_t u, uint64_t v) {
- return Hash128to64(Uint128(u, v));
-}
-
-STATIC_INLINE uint64_t HashLen16(uint64_t u, uint64_t v, uint64_t mul) {
- // Murmur-inspired hashing.
- uint64_t a = (u ^ v) * mul;
- a ^= (a >> 47);
- uint64_t b = (v ^ a) * mul;
- b ^= (b >> 47);
- b *= mul;
- return b;
-}
-
-STATIC_INLINE uint64_t HashLen0to16(const char *s, size_t len) {
- if (len >= 8) {
- uint64_t mul = k2 + len * 2;
- uint64_t a = Fetch(s) + k2;
- uint64_t b = Fetch(s + len - 8);
- uint64_t c = Rotate(b, 37) * mul + a;
- uint64_t d = (Rotate(a, 25) + b) * mul;
- return HashLen16(c, d, mul);
- }
- if (len >= 4) {
- uint64_t mul = k2 + len * 2;
- uint64_t a = Fetch32(s);
- return HashLen16(len + (a << 3), Fetch32(s + len - 4), mul);
- }
- if (len > 0) {
- uint8_t a = s[0];
- uint8_t b = s[len >> 1];
- uint8_t c = s[len - 1];
- uint32_t y = static_cast<uint32_t>(a) + (static_cast<uint32_t>(b) << 8);
- uint32_t z = len + (static_cast<uint32_t>(c) << 2);
- return ShiftMix(y * k2 ^ z * k0) * k2;
- }
- return k2;
-}
-
-// Return a 16-byte hash for 48 bytes. Quick and dirty.
-// Callers do best to use "random-looking" values for a and b.
-STATIC_INLINE pair<uint64_t, uint64_t> WeakHashLen32WithSeeds(
- uint64_t w, uint64_t x, uint64_t y, uint64_t z, uint64_t a, uint64_t b) {
- a += w;
- b = Rotate(b + a + z, 21);
- uint64_t c = a;
- a += x;
- a += y;
- b += Rotate(a, 44);
- return make_pair(a + z, b + c);
-}
-
-// Return a 16-byte hash for s[0] ... s[31], a, and b. Quick and dirty.
-STATIC_INLINE pair<uint64_t, uint64_t> WeakHashLen32WithSeeds(
- const char* s, uint64_t a, uint64_t b) {
- return WeakHashLen32WithSeeds(Fetch(s),
- Fetch(s + 8),
- Fetch(s + 16),
- Fetch(s + 24),
- a,
- b);
-}
-
-
-
-// A subroutine for CityHash128(). Returns a decent 128-bit hash for strings
-// of any length representable in signed long. Based on City and Murmur.
-STATIC_INLINE uint128_t CityMurmur(const char *s, size_t len, uint128_t seed) {
- uint64_t a = Uint128Low64(seed);
- uint64_t b = Uint128High64(seed);
- uint64_t c = 0;
- uint64_t d = 0;
- signed long l = len - 16;
- if (l <= 0) { // len <= 16
- a = ShiftMix(a * k1) * k1;
- c = b * k1 + HashLen0to16(s, len);
- d = ShiftMix(a + (len >= 8 ? Fetch(s) : c));
- } else { // len > 16
- c = HashLen16(Fetch(s + len - 8) + k1, a);
- d = HashLen16(b + len, c + Fetch(s + len - 16));
- a += d;
- do {
- a ^= ShiftMix(Fetch(s) * k1) * k1;
- a *= k1;
- b ^= a;
- c ^= ShiftMix(Fetch(s + 8) * k1) * k1;
- c *= k1;
- d ^= c;
- s += 16;
- l -= 16;
- } while (l > 0);
- }
- a = HashLen16(a, c);
- b = HashLen16(d, b);
- return Uint128(a ^ b, HashLen16(b, a));
-}
-
-uint128_t CityHash128WithSeed(const char *s, size_t len, uint128_t seed) {
- if (len < 128) {
- return CityMurmur(s, len, seed);
- }
-
- // We expect len >= 128 to be the common case. Keep 56 bytes of state:
- // v, w, x, y, and z.
- pair<uint64_t, uint64_t> v, w;
- uint64_t x = Uint128Low64(seed);
- uint64_t y = Uint128High64(seed);
- uint64_t z = len * k1;
- v.first = Rotate(y ^ k1, 49) * k1 + Fetch(s);
- v.second = Rotate(v.first, 42) * k1 + Fetch(s + 8);
- w.first = Rotate(y + z, 35) * k1 + x;
- w.second = Rotate(x + Fetch(s + 88), 53) * k1;
-
- // This is the same inner loop as CityHash64(), manually unrolled.
- do {
- x = Rotate(x + y + v.first + Fetch(s + 8), 37) * k1;
- y = Rotate(y + v.second + Fetch(s + 48), 42) * k1;
- x ^= w.second;
- y += v.first + Fetch(s + 40);
- z = Rotate(z + w.first, 33) * k1;
- v = WeakHashLen32WithSeeds(s, v.second * k1, x + w.first);
- w = WeakHashLen32WithSeeds(s + 32, z + w.second, y + Fetch(s + 16));
- std::swap(z, x);
- s += 64;
- x = Rotate(x + y + v.first + Fetch(s + 8), 37) * k1;
- y = Rotate(y + v.second + Fetch(s + 48), 42) * k1;
- x ^= w.second;
- y += v.first + Fetch(s + 40);
- z = Rotate(z + w.first, 33) * k1;
- v = WeakHashLen32WithSeeds(s, v.second * k1, x + w.first);
- w = WeakHashLen32WithSeeds(s + 32, z + w.second, y + Fetch(s + 16));
- std::swap(z, x);
- s += 64;
- len -= 128;
- } while (LIKELY(len >= 128));
- x += Rotate(v.first + z, 49) * k0;
- y = y * k0 + Rotate(w.second, 37);
- z = z * k0 + Rotate(w.first, 27);
- w.first *= 9;
- v.first *= k0;
- // If 0 < len < 128, hash up to 4 chunks of 32 bytes each from the end of s.
- for (size_t tail_done = 0; tail_done < len; ) {
- tail_done += 32;
- y = Rotate(x + y, 42) * k0 + v.second;
- w.first += Fetch(s + len - tail_done + 16);
- x = x * k0 + w.first;
- z += w.second + Fetch(s + len - tail_done);
- w.second += v.first;
- v = WeakHashLen32WithSeeds(s + len - tail_done, v.first + z, v.second);
- v.first *= k0;
- }
- // At this point our 56 bytes of state should contain more than
- // enough information for a strong 128-bit hash. We use two
- // different 56-byte-to-8-byte hashes to get a 16-byte final result.
- x = HashLen16(x, v.first);
- y = HashLen16(y + z, w.first);
- return Uint128(HashLen16(x + v.second, w.second) + y,
- HashLen16(x + w.second, y + v.second));
-}
-
-STATIC_INLINE uint128_t CityHash128(const char *s, size_t len) {
- return len >= 16 ?
- CityHash128WithSeed(s + 16, len - 16,
- Uint128(Fetch(s), Fetch(s + 8) + k0)) :
- CityHash128WithSeed(s, len, Uint128(k0, k1));
-}
-
-uint128_t Fingerprint128(const char* s, size_t len) {
- return CityHash128(s, len);
-}
-} // namespace farmhashcc
+#include "common.h"
+
+namespace {
+ #include "farmhashsa.cc"
+}
+
+namespace farmhashcc {
+// This file provides a 32-bit hash equivalent to CityHash32 (v1.1.1)
+// and a 128-bit hash equivalent to CityHash128 (v1.1.1). It also provides
+// a seeded 32-bit hash function similar to CityHash32.
+
+#undef Fetch
+#define Fetch Fetch32
+
+#undef Rotate
+#define Rotate Rotate32
+
+#undef Bswap
+#define Bswap Bswap32
+
+STATIC_INLINE uint32_t Hash32Len13to24(const char *s, size_t len) {
+ uint32_t a = Fetch(s - 4 + (len >> 1));
+ uint32_t b = Fetch(s + 4);
+ uint32_t c = Fetch(s + len - 8);
+ uint32_t d = Fetch(s + (len >> 1));
+ uint32_t e = Fetch(s);
+ uint32_t f = Fetch(s + len - 4);
+ uint32_t h = len;
+
+ return fmix(Mur(f, Mur(e, Mur(d, Mur(c, Mur(b, Mur(a, h)))))));
+}
+
+STATIC_INLINE uint32_t Hash32Len0to4(const char *s, size_t len) {
+ uint32_t b = 0;
+ uint32_t c = 9;
+ for (size_t i = 0; i < len; i++) {
+ signed char v = s[i];
+ b = b * c1 + v;
+ c ^= b;
+ }
+ return fmix(Mur(b, Mur(len, c)));
+}
+
+STATIC_INLINE uint32_t Hash32Len5to12(const char *s, size_t len) {
+ uint32_t a = len, b = len * 5, c = 9, d = b;
+ a += Fetch(s);
+ b += Fetch(s + len - 4);
+ c += Fetch(s + ((len >> 1) & 4));
+ return fmix(Mur(c, Mur(b, Mur(a, d))));
+}
+
+uint32_t Hash32(const char *s, size_t len) {
+ if (len <= 24) {
+ return len <= 12 ?
+ (len <= 4 ? Hash32Len0to4(s, len) : Hash32Len5to12(s, len)) :
+ Hash32Len13to24(s, len);
+ }
+
+ // len > 24
+ uint32_t h = len, g = c1 * len, f = g;
+ uint32_t a0 = Rotate(Fetch(s + len - 4) * c1, 17) * c2;
+ uint32_t a1 = Rotate(Fetch(s + len - 8) * c1, 17) * c2;
+ uint32_t a2 = Rotate(Fetch(s + len - 16) * c1, 17) * c2;
+ uint32_t a3 = Rotate(Fetch(s + len - 12) * c1, 17) * c2;
+ uint32_t a4 = Rotate(Fetch(s + len - 20) * c1, 17) * c2;
+ h ^= a0;
+ h = Rotate(h, 19);
+ h = h * 5 + 0xe6546b64;
+ h ^= a2;
+ h = Rotate(h, 19);
+ h = h * 5 + 0xe6546b64;
+ g ^= a1;
+ g = Rotate(g, 19);
+ g = g * 5 + 0xe6546b64;
+ g ^= a3;
+ g = Rotate(g, 19);
+ g = g * 5 + 0xe6546b64;
+ f += a4;
+ f = Rotate(f, 19);
+ f = f * 5 + 0xe6546b64;
+ size_t iters = (len - 1) / 20;
+ do {
+ uint32_t a0 = Rotate(Fetch(s) * c1, 17) * c2;
+ uint32_t a1 = Fetch(s + 4);
+ uint32_t a2 = Rotate(Fetch(s + 8) * c1, 17) * c2;
+ uint32_t a3 = Rotate(Fetch(s + 12) * c1, 17) * c2;
+ uint32_t a4 = Fetch(s + 16);
+ h ^= a0;
+ h = Rotate(h, 18);
+ h = h * 5 + 0xe6546b64;
+ f += a1;
+ f = Rotate(f, 19);
+ f = f * c1;
+ g += a2;
+ g = Rotate(g, 18);
+ g = g * 5 + 0xe6546b64;
+ h ^= a3 + a1;
+ h = Rotate(h, 19);
+ h = h * 5 + 0xe6546b64;
+ g ^= a4;
+ g = Bswap(g) * 5;
+ h += a4 * 5;
+ h = Bswap(h);
+ f += a0;
+ PERMUTE3(f, h, g);
+ s += 20;
+ } while (--iters != 0);
+ g = Rotate(g, 11) * c1;
+ g = Rotate(g, 17) * c1;
+ f = Rotate(f, 11) * c1;
+ f = Rotate(f, 17) * c1;
+ h = Rotate(h + g, 19);
+ h = h * 5 + 0xe6546b64;
+ h = Rotate(h, 17) * c1;
+ h = Rotate(h + f, 19);
+ h = h * 5 + 0xe6546b64;
+ h = Rotate(h, 17) * c1;
+ return h;
+}
+
+uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
+ if (len <= 24) {
+ if (len >= 13) return farmhashmk::Hash32Len13to24(s, len, seed * c1);
+ else if (len >= 5) return farmhashmk::Hash32Len5to12(s, len, seed);
+ else return farmhashmk::Hash32Len0to4(s, len, seed);
+ }
+ uint32_t h = farmhashmk::Hash32Len13to24(s, 24, seed ^ len);
+ return Mur(Hash32(s + 24, len - 24) + seed, h);
+}
+
+#undef Fetch
+#define Fetch Fetch64
+
+#undef Rotate
+#define Rotate Rotate64
+
+#undef Bswap
+#define Bswap Bswap64
+
+STATIC_INLINE uint64_t ShiftMix(uint64_t val) {
+ return val ^ (val >> 47);
+}
+
+STATIC_INLINE uint64_t HashLen16(uint64_t u, uint64_t v) {
+ return Hash128to64(Uint128(u, v));
+}
+
+STATIC_INLINE uint64_t HashLen16(uint64_t u, uint64_t v, uint64_t mul) {
+ // Murmur-inspired hashing.
+ uint64_t a = (u ^ v) * mul;
+ a ^= (a >> 47);
+ uint64_t b = (v ^ a) * mul;
+ b ^= (b >> 47);
+ b *= mul;
+ return b;
+}
+
+STATIC_INLINE uint64_t HashLen0to16(const char *s, size_t len) {
+ if (len >= 8) {
+ uint64_t mul = k2 + len * 2;
+ uint64_t a = Fetch(s) + k2;
+ uint64_t b = Fetch(s + len - 8);
+ uint64_t c = Rotate(b, 37) * mul + a;
+ uint64_t d = (Rotate(a, 25) + b) * mul;
+ return HashLen16(c, d, mul);
+ }
+ if (len >= 4) {
+ uint64_t mul = k2 + len * 2;
+ uint64_t a = Fetch32(s);
+ return HashLen16(len + (a << 3), Fetch32(s + len - 4), mul);
+ }
+ if (len > 0) {
+ uint8_t a = s[0];
+ uint8_t b = s[len >> 1];
+ uint8_t c = s[len - 1];
+ uint32_t y = static_cast<uint32_t>(a) + (static_cast<uint32_t>(b) << 8);
+ uint32_t z = len + (static_cast<uint32_t>(c) << 2);
+ return ShiftMix(y * k2 ^ z * k0) * k2;
+ }
+ return k2;
+}
+
+// Return a 16-byte hash for 48 bytes. Quick and dirty.
+// Callers do best to use "random-looking" values for a and b.
+STATIC_INLINE pair<uint64_t, uint64_t> WeakHashLen32WithSeeds(
+ uint64_t w, uint64_t x, uint64_t y, uint64_t z, uint64_t a, uint64_t b) {
+ a += w;
+ b = Rotate(b + a + z, 21);
+ uint64_t c = a;
+ a += x;
+ a += y;
+ b += Rotate(a, 44);
+ return make_pair(a + z, b + c);
+}
+
+// Return a 16-byte hash for s[0] ... s[31], a, and b. Quick and dirty.
+STATIC_INLINE pair<uint64_t, uint64_t> WeakHashLen32WithSeeds(
+ const char* s, uint64_t a, uint64_t b) {
+ return WeakHashLen32WithSeeds(Fetch(s),
+ Fetch(s + 8),
+ Fetch(s + 16),
+ Fetch(s + 24),
+ a,
+ b);
+}
+
+
+
+// A subroutine for CityHash128(). Returns a decent 128-bit hash for strings
+// of any length representable in signed long. Based on City and Murmur.
+STATIC_INLINE uint128_t CityMurmur(const char *s, size_t len, uint128_t seed) {
+ uint64_t a = Uint128Low64(seed);
+ uint64_t b = Uint128High64(seed);
+ uint64_t c = 0;
+ uint64_t d = 0;
+ signed long l = len - 16;
+ if (l <= 0) { // len <= 16
+ a = ShiftMix(a * k1) * k1;
+ c = b * k1 + HashLen0to16(s, len);
+ d = ShiftMix(a + (len >= 8 ? Fetch(s) : c));
+ } else { // len > 16
+ c = HashLen16(Fetch(s + len - 8) + k1, a);
+ d = HashLen16(b + len, c + Fetch(s + len - 16));
+ a += d;
+ do {
+ a ^= ShiftMix(Fetch(s) * k1) * k1;
+ a *= k1;
+ b ^= a;
+ c ^= ShiftMix(Fetch(s + 8) * k1) * k1;
+ c *= k1;
+ d ^= c;
+ s += 16;
+ l -= 16;
+ } while (l > 0);
+ }
+ a = HashLen16(a, c);
+ b = HashLen16(d, b);
+ return Uint128(a ^ b, HashLen16(b, a));
+}
+
+uint128_t CityHash128WithSeed(const char *s, size_t len, uint128_t seed) {
+ if (len < 128) {
+ return CityMurmur(s, len, seed);
+ }
+
+ // We expect len >= 128 to be the common case. Keep 56 bytes of state:
+ // v, w, x, y, and z.
+ pair<uint64_t, uint64_t> v, w;
+ uint64_t x = Uint128Low64(seed);
+ uint64_t y = Uint128High64(seed);
+ uint64_t z = len * k1;
+ v.first = Rotate(y ^ k1, 49) * k1 + Fetch(s);
+ v.second = Rotate(v.first, 42) * k1 + Fetch(s + 8);
+ w.first = Rotate(y + z, 35) * k1 + x;
+ w.second = Rotate(x + Fetch(s + 88), 53) * k1;
+
+ // This is the same inner loop as CityHash64(), manually unrolled.
+ do {
+ x = Rotate(x + y + v.first + Fetch(s + 8), 37) * k1;
+ y = Rotate(y + v.second + Fetch(s + 48), 42) * k1;
+ x ^= w.second;
+ y += v.first + Fetch(s + 40);
+ z = Rotate(z + w.first, 33) * k1;
+ v = WeakHashLen32WithSeeds(s, v.second * k1, x + w.first);
+ w = WeakHashLen32WithSeeds(s + 32, z + w.second, y + Fetch(s + 16));
+ std::swap(z, x);
+ s += 64;
+ x = Rotate(x + y + v.first + Fetch(s + 8), 37) * k1;
+ y = Rotate(y + v.second + Fetch(s + 48), 42) * k1;
+ x ^= w.second;
+ y += v.first + Fetch(s + 40);
+ z = Rotate(z + w.first, 33) * k1;
+ v = WeakHashLen32WithSeeds(s, v.second * k1, x + w.first);
+ w = WeakHashLen32WithSeeds(s + 32, z + w.second, y + Fetch(s + 16));
+ std::swap(z, x);
+ s += 64;
+ len -= 128;
+ } while (LIKELY(len >= 128));
+ x += Rotate(v.first + z, 49) * k0;
+ y = y * k0 + Rotate(w.second, 37);
+ z = z * k0 + Rotate(w.first, 27);
+ w.first *= 9;
+ v.first *= k0;
+ // If 0 < len < 128, hash up to 4 chunks of 32 bytes each from the end of s.
+ for (size_t tail_done = 0; tail_done < len; ) {
+ tail_done += 32;
+ y = Rotate(x + y, 42) * k0 + v.second;
+ w.first += Fetch(s + len - tail_done + 16);
+ x = x * k0 + w.first;
+ z += w.second + Fetch(s + len - tail_done);
+ w.second += v.first;
+ v = WeakHashLen32WithSeeds(s + len - tail_done, v.first + z, v.second);
+ v.first *= k0;
+ }
+ // At this point our 56 bytes of state should contain more than
+ // enough information for a strong 128-bit hash. We use two
+ // different 56-byte-to-8-byte hashes to get a 16-byte final result.
+ x = HashLen16(x, v.first);
+ y = HashLen16(y + z, w.first);
+ return Uint128(HashLen16(x + v.second, w.second) + y,
+ HashLen16(x + w.second, y + v.second));
+}
+
+STATIC_INLINE uint128_t CityHash128(const char *s, size_t len) {
+ return len >= 16 ?
+ CityHash128WithSeed(s + 16, len - 16,
+ Uint128(Fetch(s), Fetch(s + 8) + k0)) :
+ CityHash128WithSeed(s, len, Uint128(k0, k1));
+}
+
+uint128_t Fingerprint128(const char* s, size_t len) {
+ return CityHash128(s, len);
+}
+} // namespace farmhashcc
diff --git a/contrib/libs/farmhash/farmhashmk.cc b/contrib/libs/farmhash/farmhashmk.cc
index 1f9072f495..2580400292 100644
--- a/contrib/libs/farmhash/farmhashmk.cc
+++ b/contrib/libs/farmhash/farmhashmk.cc
@@ -1,120 +1,120 @@
-#include "common.h"
-
-namespace {
- #include "farmhashnt.cc"
-}
-
-namespace farmhashmk {
-#undef Fetch
-#define Fetch Fetch32
-
-#undef Rotate
-#define Rotate Rotate32
-
-#undef Bswap
-#define Bswap Bswap32
-
-STATIC_INLINE uint32_t Hash32Len13to24(const char *s, size_t len, uint32_t seed = 0) {
- uint32_t a = Fetch(s - 4 + (len >> 1));
- uint32_t b = Fetch(s + 4);
- uint32_t c = Fetch(s + len - 8);
- uint32_t d = Fetch(s + (len >> 1));
- uint32_t e = Fetch(s);
- uint32_t f = Fetch(s + len - 4);
- uint32_t h = d * c1 + len + seed;
- a = Rotate(a, 12) + f;
- h = Mur(c, h) + a;
- a = Rotate(a, 3) + c;
- h = Mur(e, h) + a;
- a = Rotate(a + f, 12) + d;
- h = Mur(b ^ seed, h) + a;
- return fmix(h);
-}
-
-STATIC_INLINE uint32_t Hash32Len0to4(const char *s, size_t len, uint32_t seed = 0) {
- uint32_t b = seed;
- uint32_t c = 9;
- for (size_t i = 0; i < len; i++) {
- signed char v = s[i];
- b = b * c1 + v;
- c ^= b;
- }
- return fmix(Mur(b, Mur(len, c)));
-}
-
-STATIC_INLINE uint32_t Hash32Len5to12(const char *s, size_t len, uint32_t seed = 0) {
- uint32_t a = len, b = len * 5, c = 9, d = b + seed;
- a += Fetch(s);
- b += Fetch(s + len - 4);
- c += Fetch(s + ((len >> 1) & 4));
- return fmix(seed ^ Mur(c, Mur(b, Mur(a, d))));
-}
-
-uint32_t Hash32(const char *s, size_t len) {
- if (len <= 24) {
- return len <= 12 ?
- (len <= 4 ? Hash32Len0to4(s, len) : Hash32Len5to12(s, len)) :
- Hash32Len13to24(s, len);
- }
-
- // len > 24
- uint32_t h = len, g = c1 * len, f = g;
- uint32_t a0 = Rotate(Fetch(s + len - 4) * c1, 17) * c2;
- uint32_t a1 = Rotate(Fetch(s + len - 8) * c1, 17) * c2;
- uint32_t a2 = Rotate(Fetch(s + len - 16) * c1, 17) * c2;
- uint32_t a3 = Rotate(Fetch(s + len - 12) * c1, 17) * c2;
- uint32_t a4 = Rotate(Fetch(s + len - 20) * c1, 17) * c2;
- h ^= a0;
- h = Rotate(h, 19);
- h = h * 5 + 0xe6546b64;
- h ^= a2;
- h = Rotate(h, 19);
- h = h * 5 + 0xe6546b64;
- g ^= a1;
- g = Rotate(g, 19);
- g = g * 5 + 0xe6546b64;
- g ^= a3;
- g = Rotate(g, 19);
- g = g * 5 + 0xe6546b64;
- f += a4;
- f = Rotate(f, 19) + 113;
- size_t iters = (len - 1) / 20;
- do {
- uint32_t a = Fetch(s);
- uint32_t b = Fetch(s + 4);
- uint32_t c = Fetch(s + 8);
- uint32_t d = Fetch(s + 12);
- uint32_t e = Fetch(s + 16);
- h += a;
- g += b;
- f += c;
- h = Mur(d, h) + e;
- g = Mur(c, g) + a;
- f = Mur(b + e * c1, f) + d;
- f += g;
- g += f;
- s += 20;
- } while (--iters != 0);
- g = Rotate(g, 11) * c1;
- g = Rotate(g, 17) * c1;
- f = Rotate(f, 11) * c1;
- f = Rotate(f, 17) * c1;
- h = Rotate(h + g, 19);
- h = h * 5 + 0xe6546b64;
- h = Rotate(h, 17) * c1;
- h = Rotate(h + f, 19);
- h = h * 5 + 0xe6546b64;
- h = Rotate(h, 17) * c1;
- return h;
-}
-
-uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
- if (len <= 24) {
- if (len >= 13) return Hash32Len13to24(s, len, seed * c1);
- else if (len >= 5) return Hash32Len5to12(s, len, seed);
- else return Hash32Len0to4(s, len, seed);
- }
- uint32_t h = Hash32Len13to24(s, 24, seed ^ len);
- return Mur(Hash32(s + 24, len - 24) + seed, h);
-}
-} // namespace farmhashmk
+#include "common.h"
+
+namespace {
+ #include "farmhashnt.cc"
+}
+
+namespace farmhashmk {
+#undef Fetch
+#define Fetch Fetch32
+
+#undef Rotate
+#define Rotate Rotate32
+
+#undef Bswap
+#define Bswap Bswap32
+
+STATIC_INLINE uint32_t Hash32Len13to24(const char *s, size_t len, uint32_t seed = 0) {
+ uint32_t a = Fetch(s - 4 + (len >> 1));
+ uint32_t b = Fetch(s + 4);
+ uint32_t c = Fetch(s + len - 8);
+ uint32_t d = Fetch(s + (len >> 1));
+ uint32_t e = Fetch(s);
+ uint32_t f = Fetch(s + len - 4);
+ uint32_t h = d * c1 + len + seed;
+ a = Rotate(a, 12) + f;
+ h = Mur(c, h) + a;
+ a = Rotate(a, 3) + c;
+ h = Mur(e, h) + a;
+ a = Rotate(a + f, 12) + d;
+ h = Mur(b ^ seed, h) + a;
+ return fmix(h);
+}
+
+STATIC_INLINE uint32_t Hash32Len0to4(const char *s, size_t len, uint32_t seed = 0) {
+ uint32_t b = seed;
+ uint32_t c = 9;
+ for (size_t i = 0; i < len; i++) {
+ signed char v = s[i];
+ b = b * c1 + v;
+ c ^= b;
+ }
+ return fmix(Mur(b, Mur(len, c)));
+}
+
+STATIC_INLINE uint32_t Hash32Len5to12(const char *s, size_t len, uint32_t seed = 0) {
+ uint32_t a = len, b = len * 5, c = 9, d = b + seed;
+ a += Fetch(s);
+ b += Fetch(s + len - 4);
+ c += Fetch(s + ((len >> 1) & 4));
+ return fmix(seed ^ Mur(c, Mur(b, Mur(a, d))));
+}
+
+uint32_t Hash32(const char *s, size_t len) {
+ if (len <= 24) {
+ return len <= 12 ?
+ (len <= 4 ? Hash32Len0to4(s, len) : Hash32Len5to12(s, len)) :
+ Hash32Len13to24(s, len);
+ }
+
+ // len > 24
+ uint32_t h = len, g = c1 * len, f = g;
+ uint32_t a0 = Rotate(Fetch(s + len - 4) * c1, 17) * c2;
+ uint32_t a1 = Rotate(Fetch(s + len - 8) * c1, 17) * c2;
+ uint32_t a2 = Rotate(Fetch(s + len - 16) * c1, 17) * c2;
+ uint32_t a3 = Rotate(Fetch(s + len - 12) * c1, 17) * c2;
+ uint32_t a4 = Rotate(Fetch(s + len - 20) * c1, 17) * c2;
+ h ^= a0;
+ h = Rotate(h, 19);
+ h = h * 5 + 0xe6546b64;
+ h ^= a2;
+ h = Rotate(h, 19);
+ h = h * 5 + 0xe6546b64;
+ g ^= a1;
+ g = Rotate(g, 19);
+ g = g * 5 + 0xe6546b64;
+ g ^= a3;
+ g = Rotate(g, 19);
+ g = g * 5 + 0xe6546b64;
+ f += a4;
+ f = Rotate(f, 19) + 113;
+ size_t iters = (len - 1) / 20;
+ do {
+ uint32_t a = Fetch(s);
+ uint32_t b = Fetch(s + 4);
+ uint32_t c = Fetch(s + 8);
+ uint32_t d = Fetch(s + 12);
+ uint32_t e = Fetch(s + 16);
+ h += a;
+ g += b;
+ f += c;
+ h = Mur(d, h) + e;
+ g = Mur(c, g) + a;
+ f = Mur(b + e * c1, f) + d;
+ f += g;
+ g += f;
+ s += 20;
+ } while (--iters != 0);
+ g = Rotate(g, 11) * c1;
+ g = Rotate(g, 17) * c1;
+ f = Rotate(f, 11) * c1;
+ f = Rotate(f, 17) * c1;
+ h = Rotate(h + g, 19);
+ h = h * 5 + 0xe6546b64;
+ h = Rotate(h, 17) * c1;
+ h = Rotate(h + f, 19);
+ h = h * 5 + 0xe6546b64;
+ h = Rotate(h, 17) * c1;
+ return h;
+}
+
+uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
+ if (len <= 24) {
+ if (len >= 13) return Hash32Len13to24(s, len, seed * c1);
+ else if (len >= 5) return Hash32Len5to12(s, len, seed);
+ else return Hash32Len0to4(s, len, seed);
+ }
+ uint32_t h = Hash32Len13to24(s, 24, seed ^ len);
+ return Mur(Hash32(s + 24, len - 24) + seed, h);
+}
+} // namespace farmhashmk
diff --git a/contrib/libs/farmhash/farmhashna.cc b/contrib/libs/farmhash/farmhashna.cc
index a2941aa535..76ef2a3168 100644
--- a/contrib/libs/farmhash/farmhashna.cc
+++ b/contrib/libs/farmhash/farmhashna.cc
@@ -1,173 +1,173 @@
-#include "common.h"
-
-namespace farmhashna {
-#undef Fetch
-#define Fetch Fetch64
-
-#undef Rotate
-#define Rotate Rotate64
-
-#undef Bswap
-#define Bswap Bswap64
-
-STATIC_INLINE uint64_t ShiftMix(uint64_t val) {
- return val ^ (val >> 47);
-}
-
-STATIC_INLINE uint64_t HashLen16(uint64_t u, uint64_t v) {
- return Hash128to64(Uint128(u, v));
-}
-
-STATIC_INLINE uint64_t HashLen16(uint64_t u, uint64_t v, uint64_t mul) {
- // Murmur-inspired hashing.
- uint64_t a = (u ^ v) * mul;
- a ^= (a >> 47);
- uint64_t b = (v ^ a) * mul;
- b ^= (b >> 47);
- b *= mul;
- return b;
-}
-
-STATIC_INLINE uint64_t HashLen0to16(const char *s, size_t len) {
- if (len >= 8) {
- uint64_t mul = k2 + len * 2;
- uint64_t a = Fetch(s) + k2;
- uint64_t b = Fetch(s + len - 8);
- uint64_t c = Rotate(b, 37) * mul + a;
- uint64_t d = (Rotate(a, 25) + b) * mul;
- return HashLen16(c, d, mul);
- }
- if (len >= 4) {
- uint64_t mul = k2 + len * 2;
- uint64_t a = Fetch32(s);
- return HashLen16(len + (a << 3), Fetch32(s + len - 4), mul);
- }
- if (len > 0) {
- uint8_t a = s[0];
- uint8_t b = s[len >> 1];
- uint8_t c = s[len - 1];
- uint32_t y = static_cast<uint32_t>(a) + (static_cast<uint32_t>(b) << 8);
- uint32_t z = len + (static_cast<uint32_t>(c) << 2);
- return ShiftMix(y * k2 ^ z * k0) * k2;
- }
- return k2;
-}
-
-// This probably works well for 16-byte strings as well, but it may be overkill
-// in that case.
-STATIC_INLINE uint64_t HashLen17to32(const char *s, size_t len) {
- uint64_t mul = k2 + len * 2;
- uint64_t a = Fetch(s) * k1;
- uint64_t b = Fetch(s + 8);
- uint64_t c = Fetch(s + len - 8) * mul;
- uint64_t d = Fetch(s + len - 16) * k2;
- return HashLen16(Rotate(a + b, 43) + Rotate(c, 30) + d,
- a + Rotate(b + k2, 18) + c, mul);
-}
-
-// Return a 16-byte hash for 48 bytes. Quick and dirty.
-// Callers do best to use "random-looking" values for a and b.
-STATIC_INLINE pair<uint64_t, uint64_t> WeakHashLen32WithSeeds(
- uint64_t w, uint64_t x, uint64_t y, uint64_t z, uint64_t a, uint64_t b) {
- a += w;
- b = Rotate(b + a + z, 21);
- uint64_t c = a;
- a += x;
- a += y;
- b += Rotate(a, 44);
- return make_pair(a + z, b + c);
-}
-
-// Return a 16-byte hash for s[0] ... s[31], a, and b. Quick and dirty.
-STATIC_INLINE pair<uint64_t, uint64_t> WeakHashLen32WithSeeds(
- const char* s, uint64_t a, uint64_t b) {
- return WeakHashLen32WithSeeds(Fetch(s),
- Fetch(s + 8),
- Fetch(s + 16),
- Fetch(s + 24),
- a,
- b);
-}
-
-// Return an 8-byte hash for 33 to 64 bytes.
-STATIC_INLINE uint64_t HashLen33to64(const char *s, size_t len) {
- uint64_t mul = k2 + len * 2;
- uint64_t a = Fetch(s) * k2;
- uint64_t b = Fetch(s + 8);
- uint64_t c = Fetch(s + len - 8) * mul;
- uint64_t d = Fetch(s + len - 16) * k2;
- uint64_t y = Rotate(a + b, 43) + Rotate(c, 30) + d;
- uint64_t z = HashLen16(y, a + Rotate(b + k2, 18) + c, mul);
- uint64_t e = Fetch(s + 16) * mul;
- uint64_t f = Fetch(s + 24);
- uint64_t g = (y + Fetch(s + len - 32)) * mul;
- uint64_t h = (z + Fetch(s + len - 24)) * mul;
- return HashLen16(Rotate(e + f, 43) + Rotate(g, 30) + h,
- e + Rotate(f + a, 18) + g, mul);
-}
-
-uint64_t Hash64(const char *s, size_t len) {
- const uint64_t seed = 81;
- if (len <= 32) {
- if (len <= 16) {
- return HashLen0to16(s, len);
- } else {
- return HashLen17to32(s, len);
- }
- } else if (len <= 64) {
- return HashLen33to64(s, len);
- }
-
- // For strings over 64 bytes we loop. Internal state consists of
- // 56 bytes: v, w, x, y, and z.
- uint64_t x = seed;
- uint64_t y = seed * k1 + 113;
- uint64_t z = ShiftMix(y * k2 + 113) * k2;
- pair<uint64_t, uint64_t> v = make_pair(0, 0);
- pair<uint64_t, uint64_t> w = make_pair(0, 0);
- x = x * k2 + Fetch(s);
-
- // Set end so that after the loop we have 1 to 64 bytes left to process.
- const char* end = s + ((len - 1) / 64) * 64;
- const char* last64 = end + ((len - 1) & 63) - 63;
- assert(s + len - 64 == last64);
- do {
- x = Rotate(x + y + v.first + Fetch(s + 8), 37) * k1;
- y = Rotate(y + v.second + Fetch(s + 48), 42) * k1;
- x ^= w.second;
- y += v.first + Fetch(s + 40);
- z = Rotate(z + w.first, 33) * k1;
- v = WeakHashLen32WithSeeds(s, v.second * k1, x + w.first);
- w = WeakHashLen32WithSeeds(s + 32, z + w.second, y + Fetch(s + 16));
- std::swap(z, x);
- s += 64;
- } while (s != end);
- uint64_t mul = k1 + ((z & 0xff) << 1);
- // Make s point to the last 64 bytes of input.
- s = last64;
- w.first += ((len - 1) & 63);
- v.first += w.first;
- w.first += v.first;
- x = Rotate(x + y + v.first + Fetch(s + 8), 37) * mul;
- y = Rotate(y + v.second + Fetch(s + 48), 42) * mul;
- x ^= w.second * 9;
- y += v.first * 9 + Fetch(s + 40);
- z = Rotate(z + w.first, 33) * mul;
- v = WeakHashLen32WithSeeds(s, v.second * mul, x + w.first);
- w = WeakHashLen32WithSeeds(s + 32, z + w.second, y + Fetch(s + 16));
- std::swap(z, x);
- return HashLen16(HashLen16(v.first, w.first, mul) + ShiftMix(y) * k0 + z,
- HashLen16(v.second, w.second, mul) + x,
- mul);
-}
-
-uint64_t Hash64WithSeeds(const char *s, size_t len, uint64_t seed0, uint64_t seed1);
-
-uint64_t Hash64WithSeed(const char *s, size_t len, uint64_t seed) {
- return Hash64WithSeeds(s, len, k2, seed);
-}
-
-uint64_t Hash64WithSeeds(const char *s, size_t len, uint64_t seed0, uint64_t seed1) {
- return HashLen16(Hash64(s, len) - seed0, seed1);
-}
-} // namespace farmhashna
+#include "common.h"
+
+namespace farmhashna {
+#undef Fetch
+#define Fetch Fetch64
+
+#undef Rotate
+#define Rotate Rotate64
+
+#undef Bswap
+#define Bswap Bswap64
+
+STATIC_INLINE uint64_t ShiftMix(uint64_t val) {
+ return val ^ (val >> 47);
+}
+
+STATIC_INLINE uint64_t HashLen16(uint64_t u, uint64_t v) {
+ return Hash128to64(Uint128(u, v));
+}
+
+STATIC_INLINE uint64_t HashLen16(uint64_t u, uint64_t v, uint64_t mul) {
+ // Murmur-inspired hashing.
+ uint64_t a = (u ^ v) * mul;
+ a ^= (a >> 47);
+ uint64_t b = (v ^ a) * mul;
+ b ^= (b >> 47);
+ b *= mul;
+ return b;
+}
+
+STATIC_INLINE uint64_t HashLen0to16(const char *s, size_t len) {
+ if (len >= 8) {
+ uint64_t mul = k2 + len * 2;
+ uint64_t a = Fetch(s) + k2;
+ uint64_t b = Fetch(s + len - 8);
+ uint64_t c = Rotate(b, 37) * mul + a;
+ uint64_t d = (Rotate(a, 25) + b) * mul;
+ return HashLen16(c, d, mul);
+ }
+ if (len >= 4) {
+ uint64_t mul = k2 + len * 2;
+ uint64_t a = Fetch32(s);
+ return HashLen16(len + (a << 3), Fetch32(s + len - 4), mul);
+ }
+ if (len > 0) {
+ uint8_t a = s[0];
+ uint8_t b = s[len >> 1];
+ uint8_t c = s[len - 1];
+ uint32_t y = static_cast<uint32_t>(a) + (static_cast<uint32_t>(b) << 8);
+ uint32_t z = len + (static_cast<uint32_t>(c) << 2);
+ return ShiftMix(y * k2 ^ z * k0) * k2;
+ }
+ return k2;
+}
+
+// This probably works well for 16-byte strings as well, but it may be overkill
+// in that case.
+STATIC_INLINE uint64_t HashLen17to32(const char *s, size_t len) {
+ uint64_t mul = k2 + len * 2;
+ uint64_t a = Fetch(s) * k1;
+ uint64_t b = Fetch(s + 8);
+ uint64_t c = Fetch(s + len - 8) * mul;
+ uint64_t d = Fetch(s + len - 16) * k2;
+ return HashLen16(Rotate(a + b, 43) + Rotate(c, 30) + d,
+ a + Rotate(b + k2, 18) + c, mul);
+}
+
+// Return a 16-byte hash for 48 bytes. Quick and dirty.
+// Callers do best to use "random-looking" values for a and b.
+STATIC_INLINE pair<uint64_t, uint64_t> WeakHashLen32WithSeeds(
+ uint64_t w, uint64_t x, uint64_t y, uint64_t z, uint64_t a, uint64_t b) {
+ a += w;
+ b = Rotate(b + a + z, 21);
+ uint64_t c = a;
+ a += x;
+ a += y;
+ b += Rotate(a, 44);
+ return make_pair(a + z, b + c);
+}
+
+// Return a 16-byte hash for s[0] ... s[31], a, and b. Quick and dirty.
+STATIC_INLINE pair<uint64_t, uint64_t> WeakHashLen32WithSeeds(
+ const char* s, uint64_t a, uint64_t b) {
+ return WeakHashLen32WithSeeds(Fetch(s),
+ Fetch(s + 8),
+ Fetch(s + 16),
+ Fetch(s + 24),
+ a,
+ b);
+}
+
+// Return an 8-byte hash for 33 to 64 bytes.
+STATIC_INLINE uint64_t HashLen33to64(const char *s, size_t len) {
+ uint64_t mul = k2 + len * 2;
+ uint64_t a = Fetch(s) * k2;
+ uint64_t b = Fetch(s + 8);
+ uint64_t c = Fetch(s + len - 8) * mul;
+ uint64_t d = Fetch(s + len - 16) * k2;
+ uint64_t y = Rotate(a + b, 43) + Rotate(c, 30) + d;
+ uint64_t z = HashLen16(y, a + Rotate(b + k2, 18) + c, mul);
+ uint64_t e = Fetch(s + 16) * mul;
+ uint64_t f = Fetch(s + 24);
+ uint64_t g = (y + Fetch(s + len - 32)) * mul;
+ uint64_t h = (z + Fetch(s + len - 24)) * mul;
+ return HashLen16(Rotate(e + f, 43) + Rotate(g, 30) + h,
+ e + Rotate(f + a, 18) + g, mul);
+}
+
+uint64_t Hash64(const char *s, size_t len) {
+ const uint64_t seed = 81;
+ if (len <= 32) {
+ if (len <= 16) {
+ return HashLen0to16(s, len);
+ } else {
+ return HashLen17to32(s, len);
+ }
+ } else if (len <= 64) {
+ return HashLen33to64(s, len);
+ }
+
+ // For strings over 64 bytes we loop. Internal state consists of
+ // 56 bytes: v, w, x, y, and z.
+ uint64_t x = seed;
+ uint64_t y = seed * k1 + 113;
+ uint64_t z = ShiftMix(y * k2 + 113) * k2;
+ pair<uint64_t, uint64_t> v = make_pair(0, 0);
+ pair<uint64_t, uint64_t> w = make_pair(0, 0);
+ x = x * k2 + Fetch(s);
+
+ // Set end so that after the loop we have 1 to 64 bytes left to process.
+ const char* end = s + ((len - 1) / 64) * 64;
+ const char* last64 = end + ((len - 1) & 63) - 63;
+ assert(s + len - 64 == last64);
+ do {
+ x = Rotate(x + y + v.first + Fetch(s + 8), 37) * k1;
+ y = Rotate(y + v.second + Fetch(s + 48), 42) * k1;
+ x ^= w.second;
+ y += v.first + Fetch(s + 40);
+ z = Rotate(z + w.first, 33) * k1;
+ v = WeakHashLen32WithSeeds(s, v.second * k1, x + w.first);
+ w = WeakHashLen32WithSeeds(s + 32, z + w.second, y + Fetch(s + 16));
+ std::swap(z, x);
+ s += 64;
+ } while (s != end);
+ uint64_t mul = k1 + ((z & 0xff) << 1);
+ // Make s point to the last 64 bytes of input.
+ s = last64;
+ w.first += ((len - 1) & 63);
+ v.first += w.first;
+ w.first += v.first;
+ x = Rotate(x + y + v.first + Fetch(s + 8), 37) * mul;
+ y = Rotate(y + v.second + Fetch(s + 48), 42) * mul;
+ x ^= w.second * 9;
+ y += v.first * 9 + Fetch(s + 40);
+ z = Rotate(z + w.first, 33) * mul;
+ v = WeakHashLen32WithSeeds(s, v.second * mul, x + w.first);
+ w = WeakHashLen32WithSeeds(s + 32, z + w.second, y + Fetch(s + 16));
+ std::swap(z, x);
+ return HashLen16(HashLen16(v.first, w.first, mul) + ShiftMix(y) * k0 + z,
+ HashLen16(v.second, w.second, mul) + x,
+ mul);
+}
+
+uint64_t Hash64WithSeeds(const char *s, size_t len, uint64_t seed0, uint64_t seed1);
+
+uint64_t Hash64WithSeed(const char *s, size_t len, uint64_t seed) {
+ return Hash64WithSeeds(s, len, k2, seed);
+}
+
+uint64_t Hash64WithSeeds(const char *s, size_t len, uint64_t seed0, uint64_t seed1) {
+ return HashLen16(Hash64(s, len) - seed0, seed1);
+}
+} // namespace farmhashna
diff --git a/contrib/libs/farmhash/farmhashnt.cc b/contrib/libs/farmhash/farmhashnt.cc
index 836ccfcc85..d397ad38fb 100644
--- a/contrib/libs/farmhash/farmhashnt.cc
+++ b/contrib/libs/farmhash/farmhashnt.cc
@@ -1,31 +1,31 @@
-#include "common.h"
-
-namespace {
- #include "farmhashte.cc"
-}
-
-namespace farmhashnt {
-#if !can_use_sse41 || !x86_64
-
-uint32_t Hash32(const char *s, size_t len) {
- FARMHASH_DIE_IF_MISCONFIGURED;
- return s == NULL ? 0 : len;
-}
-
-uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
- FARMHASH_DIE_IF_MISCONFIGURED;
- return seed + Hash32(s, len);
-}
-
-#else
-
-uint32_t Hash32(const char *s, size_t len) {
- return static_cast<uint32_t>(farmhashte::Hash64(s, len));
-}
-
-uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
- return static_cast<uint32_t>(farmhashte::Hash64WithSeed(s, len, seed));
-}
-
-#endif
-} // namespace farmhashnt
+#include "common.h"
+
+namespace {
+ #include "farmhashte.cc"
+}
+
+namespace farmhashnt {
+#if !can_use_sse41 || !x86_64
+
+uint32_t Hash32(const char *s, size_t len) {
+ FARMHASH_DIE_IF_MISCONFIGURED;
+ return s == NULL ? 0 : len;
+}
+
+uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
+ FARMHASH_DIE_IF_MISCONFIGURED;
+ return seed + Hash32(s, len);
+}
+
+#else
+
+uint32_t Hash32(const char *s, size_t len) {
+ return static_cast<uint32_t>(farmhashte::Hash64(s, len));
+}
+
+uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
+ return static_cast<uint32_t>(farmhashte::Hash64WithSeed(s, len, seed));
+}
+
+#endif
+} // namespace farmhashnt
diff --git a/contrib/libs/farmhash/farmhashsa.cc b/contrib/libs/farmhash/farmhashsa.cc
index aa1c24b55b..e6571cbb9a 100644
--- a/contrib/libs/farmhash/farmhashsa.cc
+++ b/contrib/libs/farmhash/farmhashsa.cc
@@ -1,216 +1,216 @@
-#include "common.h"
-
-namespace {
- #include "farmhashsu.cc"
-}
-
-namespace farmhashsa {
-#if !can_use_sse42
-
-uint32_t Hash32(const char *s, size_t len) {
- FARMHASH_DIE_IF_MISCONFIGURED;
- return s == NULL ? 0 : len;
-}
-
-uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
- FARMHASH_DIE_IF_MISCONFIGURED;
- return seed + Hash32(s, len);
-}
-
-#else
-
-#undef Fetch
-#define Fetch Fetch32
-
-#undef Rotate
-#define Rotate Rotate32
-
-#undef Bswap
-#define Bswap Bswap32
-
-// Helpers for data-parallel operations (4x 32-bits).
-STATIC_INLINE __m128i Add(__m128i x, __m128i y) { return _mm_add_epi32(x, y); }
-STATIC_INLINE __m128i Xor(__m128i x, __m128i y) { return _mm_xor_si128(x, y); }
-STATIC_INLINE __m128i Or(__m128i x, __m128i y) { return _mm_or_si128(x, y); }
-STATIC_INLINE __m128i Mul(__m128i x, __m128i y) { return _mm_mullo_epi32(x, y); }
-STATIC_INLINE __m128i Mul5(__m128i x) { return Add(x, _mm_slli_epi32(x, 2)); }
-STATIC_INLINE __m128i Rotate(__m128i x, int c) {
- return Or(_mm_slli_epi32(x, c),
- _mm_srli_epi32(x, 32 - c));
-}
-STATIC_INLINE __m128i Rot17(__m128i x) { return Rotate(x, 17); }
-STATIC_INLINE __m128i Rot19(__m128i x) { return Rotate(x, 19); }
-STATIC_INLINE __m128i Shuffle0321(__m128i x) {
- return _mm_shuffle_epi32(x, (0 << 6) + (3 << 4) + (2 << 2) + (1 << 0));
-}
-
-uint32_t Hash32(const char *s, size_t len) {
- const uint32_t seed = 81;
- if (len <= 24) {
- return len <= 12 ?
- (len <= 4 ?
- farmhashmk::Hash32Len0to4(s, len) :
- farmhashmk::Hash32Len5to12(s, len)) :
- farmhashmk::Hash32Len13to24(s, len);
- }
-
- if (len < 40) {
- uint32_t a = len, b = seed * c2, c = a + b;
- a += Fetch(s + len - 4);
- b += Fetch(s + len - 20);
- c += Fetch(s + len - 16);
- uint32_t d = a;
- a = NAMESPACE_FOR_HASH_FUNCTIONS::Rotate32(a, 21);
- a = Mur(a, Mur(b, Mur(c, d)));
- a += Fetch(s + len - 12);
- b += Fetch(s + len - 8);
- d += a;
- a += d;
- b = Mur(b, d) * c2;
- a = _mm_crc32_u32(a, b + c);
- return farmhashmk::Hash32Len13to24(s, (len + 1) / 2, a) + b;
- }
-
-#undef Mulc1
-#define Mulc1(x) Mul((x), cc1)
-
-#undef Mulc2
-#define Mulc2(x) Mul((x), cc2)
-
-#undef Murk
-#define Murk(a, h) \
- Add(k, \
- Mul5( \
- Rot19( \
- Xor( \
- Mulc2( \
- Rot17( \
- Mulc1(a))), \
- (h)))))
-
- const __m128i cc1 = _mm_set1_epi32(c1);
- const __m128i cc2 = _mm_set1_epi32(c2);
- __m128i h = _mm_set1_epi32(seed);
- __m128i g = _mm_set1_epi32(c1 * seed);
- __m128i f = g;
- __m128i k = _mm_set1_epi32(0xe6546b64);
- if (len < 80) {
- __m128i a = Fetch128(s);
- __m128i b = Fetch128(s + 16);
- __m128i c = Fetch128(s + (len - 15) / 2);
- __m128i d = Fetch128(s + len - 32);
- __m128i e = Fetch128(s + len - 16);
- h = Add(h, a);
- g = Add(g, b);
- g = Shuffle0321(g);
- f = Add(f, c);
- __m128i be = Add(b, Mulc1(e));
- h = Add(h, f);
- f = Add(f, h);
- h = Add(Murk(d, h), e);
- k = Xor(k, _mm_shuffle_epi8(g, f));
- g = Add(Xor(c, g), a);
- f = Add(Xor(be, f), d);
- k = Add(k, be);
- k = Add(k, _mm_shuffle_epi8(f, h));
- f = Add(f, g);
- g = Add(g, f);
- g = Add(_mm_set1_epi32(len), Mulc1(g));
- } else {
- // len >= 80
- // The following is loosely modelled after farmhashmk::Hash32.
- size_t iters = (len - 1) / 80;
- len -= iters * 80;
-
-#undef Chunk
-#define Chunk() do { \
- __m128i a = Fetch128(s); \
- __m128i b = Fetch128(s + 16); \
- __m128i c = Fetch128(s + 32); \
- __m128i d = Fetch128(s + 48); \
- __m128i e = Fetch128(s + 64); \
- h = Add(h, a); \
- g = Add(g, b); \
- g = Shuffle0321(g); \
- f = Add(f, c); \
- __m128i be = Add(b, Mulc1(e)); \
- h = Add(h, f); \
- f = Add(f, h); \
- h = Add(Murk(d, h), e); \
- k = Xor(k, _mm_shuffle_epi8(g, f)); \
- g = Add(Xor(c, g), a); \
- f = Add(Xor(be, f), d); \
- k = Add(k, be); \
- k = Add(k, _mm_shuffle_epi8(f, h)); \
- f = Add(f, g); \
- g = Add(g, f); \
- f = Mulc1(f); \
-} while (0)
-
- while (iters-- != 0) {
- Chunk();
- s += 80;
- }
-
- if (len != 0) {
- h = Add(h, _mm_set1_epi32(len));
- s = s + len - 80;
- Chunk();
- }
- }
-
- g = Shuffle0321(g);
- k = Xor(k, g);
- f = Mulc1(f);
- k = Mulc2(k);
- g = Mulc1(g);
- h = Mulc2(h);
- k = Add(k, _mm_shuffle_epi8(g, f));
- h = Add(h, f);
- f = Add(f, h);
- g = Add(g, k);
- k = Add(k, g);
- k = Xor(k, _mm_shuffle_epi8(f, h));
- __m128i buf[4];
- buf[0] = f;
- buf[1] = g;
- buf[2] = k;
- buf[3] = h;
- s = reinterpret_cast<char*>(buf);
- uint32_t x = Fetch(s);
- uint32_t y = Fetch(s+4);
- uint32_t z = Fetch(s+8);
- x = _mm_crc32_u32(x, Fetch(s+12));
- y = _mm_crc32_u32(y, Fetch(s+16));
- z = _mm_crc32_u32(z * c1, Fetch(s+20));
- x = _mm_crc32_u32(x, Fetch(s+24));
- y = _mm_crc32_u32(y * c1, Fetch(s+28));
- uint32_t o = y;
- z = _mm_crc32_u32(z, Fetch(s+32));
- x = _mm_crc32_u32(x * c1, Fetch(s+36));
- y = _mm_crc32_u32(y, Fetch(s+40));
- z = _mm_crc32_u32(z * c1, Fetch(s+44));
- x = _mm_crc32_u32(x, Fetch(s+48));
- y = _mm_crc32_u32(y * c1, Fetch(s+52));
- z = _mm_crc32_u32(z, Fetch(s+56));
- x = _mm_crc32_u32(x, Fetch(s+60));
- return (o - x + y - z) * c1;
-}
-
-#undef Chunk
-#undef Murk
-#undef Mulc2
-#undef Mulc1
-
-uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
- if (len <= 24) {
- if (len >= 13) return farmhashmk::Hash32Len13to24(s, len, seed * c1);
- else if (len >= 5) return farmhashmk::Hash32Len5to12(s, len, seed);
- else return farmhashmk::Hash32Len0to4(s, len, seed);
- }
- uint32_t h = farmhashmk::Hash32Len13to24(s, 24, seed ^ len);
- return _mm_crc32_u32(Hash32(s + 24, len - 24) + seed, h);
-}
-
-#endif
-} // namespace farmhashsa
+#include "common.h"
+
+namespace {
+ #include "farmhashsu.cc"
+}
+
+namespace farmhashsa {
+#if !can_use_sse42
+
+uint32_t Hash32(const char *s, size_t len) {
+ FARMHASH_DIE_IF_MISCONFIGURED;
+ return s == NULL ? 0 : len;
+}
+
+uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
+ FARMHASH_DIE_IF_MISCONFIGURED;
+ return seed + Hash32(s, len);
+}
+
+#else
+
+#undef Fetch
+#define Fetch Fetch32
+
+#undef Rotate
+#define Rotate Rotate32
+
+#undef Bswap
+#define Bswap Bswap32
+
+// Helpers for data-parallel operations (4x 32-bits).
+STATIC_INLINE __m128i Add(__m128i x, __m128i y) { return _mm_add_epi32(x, y); }
+STATIC_INLINE __m128i Xor(__m128i x, __m128i y) { return _mm_xor_si128(x, y); }
+STATIC_INLINE __m128i Or(__m128i x, __m128i y) { return _mm_or_si128(x, y); }
+STATIC_INLINE __m128i Mul(__m128i x, __m128i y) { return _mm_mullo_epi32(x, y); }
+STATIC_INLINE __m128i Mul5(__m128i x) { return Add(x, _mm_slli_epi32(x, 2)); }
+STATIC_INLINE __m128i Rotate(__m128i x, int c) {
+ return Or(_mm_slli_epi32(x, c),
+ _mm_srli_epi32(x, 32 - c));
+}
+STATIC_INLINE __m128i Rot17(__m128i x) { return Rotate(x, 17); }
+STATIC_INLINE __m128i Rot19(__m128i x) { return Rotate(x, 19); }
+STATIC_INLINE __m128i Shuffle0321(__m128i x) {
+ return _mm_shuffle_epi32(x, (0 << 6) + (3 << 4) + (2 << 2) + (1 << 0));
+}
+
+uint32_t Hash32(const char *s, size_t len) {
+ const uint32_t seed = 81;
+ if (len <= 24) {
+ return len <= 12 ?
+ (len <= 4 ?
+ farmhashmk::Hash32Len0to4(s, len) :
+ farmhashmk::Hash32Len5to12(s, len)) :
+ farmhashmk::Hash32Len13to24(s, len);
+ }
+
+ if (len < 40) {
+ uint32_t a = len, b = seed * c2, c = a + b;
+ a += Fetch(s + len - 4);
+ b += Fetch(s + len - 20);
+ c += Fetch(s + len - 16);
+ uint32_t d = a;
+ a = NAMESPACE_FOR_HASH_FUNCTIONS::Rotate32(a, 21);
+ a = Mur(a, Mur(b, Mur(c, d)));
+ a += Fetch(s + len - 12);
+ b += Fetch(s + len - 8);
+ d += a;
+ a += d;
+ b = Mur(b, d) * c2;
+ a = _mm_crc32_u32(a, b + c);
+ return farmhashmk::Hash32Len13to24(s, (len + 1) / 2, a) + b;
+ }
+
+#undef Mulc1
+#define Mulc1(x) Mul((x), cc1)
+
+#undef Mulc2
+#define Mulc2(x) Mul((x), cc2)
+
+#undef Murk
+#define Murk(a, h) \
+ Add(k, \
+ Mul5( \
+ Rot19( \
+ Xor( \
+ Mulc2( \
+ Rot17( \
+ Mulc1(a))), \
+ (h)))))
+
+ const __m128i cc1 = _mm_set1_epi32(c1);
+ const __m128i cc2 = _mm_set1_epi32(c2);
+ __m128i h = _mm_set1_epi32(seed);
+ __m128i g = _mm_set1_epi32(c1 * seed);
+ __m128i f = g;
+ __m128i k = _mm_set1_epi32(0xe6546b64);
+ if (len < 80) {
+ __m128i a = Fetch128(s);
+ __m128i b = Fetch128(s + 16);
+ __m128i c = Fetch128(s + (len - 15) / 2);
+ __m128i d = Fetch128(s + len - 32);
+ __m128i e = Fetch128(s + len - 16);
+ h = Add(h, a);
+ g = Add(g, b);
+ g = Shuffle0321(g);
+ f = Add(f, c);
+ __m128i be = Add(b, Mulc1(e));
+ h = Add(h, f);
+ f = Add(f, h);
+ h = Add(Murk(d, h), e);
+ k = Xor(k, _mm_shuffle_epi8(g, f));
+ g = Add(Xor(c, g), a);
+ f = Add(Xor(be, f), d);
+ k = Add(k, be);
+ k = Add(k, _mm_shuffle_epi8(f, h));
+ f = Add(f, g);
+ g = Add(g, f);
+ g = Add(_mm_set1_epi32(len), Mulc1(g));
+ } else {
+ // len >= 80
+ // The following is loosely modelled after farmhashmk::Hash32.
+ size_t iters = (len - 1) / 80;
+ len -= iters * 80;
+
+#undef Chunk
+#define Chunk() do { \
+ __m128i a = Fetch128(s); \
+ __m128i b = Fetch128(s + 16); \
+ __m128i c = Fetch128(s + 32); \
+ __m128i d = Fetch128(s + 48); \
+ __m128i e = Fetch128(s + 64); \
+ h = Add(h, a); \
+ g = Add(g, b); \
+ g = Shuffle0321(g); \
+ f = Add(f, c); \
+ __m128i be = Add(b, Mulc1(e)); \
+ h = Add(h, f); \
+ f = Add(f, h); \
+ h = Add(Murk(d, h), e); \
+ k = Xor(k, _mm_shuffle_epi8(g, f)); \
+ g = Add(Xor(c, g), a); \
+ f = Add(Xor(be, f), d); \
+ k = Add(k, be); \
+ k = Add(k, _mm_shuffle_epi8(f, h)); \
+ f = Add(f, g); \
+ g = Add(g, f); \
+ f = Mulc1(f); \
+} while (0)
+
+ while (iters-- != 0) {
+ Chunk();
+ s += 80;
+ }
+
+ if (len != 0) {
+ h = Add(h, _mm_set1_epi32(len));
+ s = s + len - 80;
+ Chunk();
+ }
+ }
+
+ g = Shuffle0321(g);
+ k = Xor(k, g);
+ f = Mulc1(f);
+ k = Mulc2(k);
+ g = Mulc1(g);
+ h = Mulc2(h);
+ k = Add(k, _mm_shuffle_epi8(g, f));
+ h = Add(h, f);
+ f = Add(f, h);
+ g = Add(g, k);
+ k = Add(k, g);
+ k = Xor(k, _mm_shuffle_epi8(f, h));
+ __m128i buf[4];
+ buf[0] = f;
+ buf[1] = g;
+ buf[2] = k;
+ buf[3] = h;
+ s = reinterpret_cast<char*>(buf);
+ uint32_t x = Fetch(s);
+ uint32_t y = Fetch(s+4);
+ uint32_t z = Fetch(s+8);
+ x = _mm_crc32_u32(x, Fetch(s+12));
+ y = _mm_crc32_u32(y, Fetch(s+16));
+ z = _mm_crc32_u32(z * c1, Fetch(s+20));
+ x = _mm_crc32_u32(x, Fetch(s+24));
+ y = _mm_crc32_u32(y * c1, Fetch(s+28));
+ uint32_t o = y;
+ z = _mm_crc32_u32(z, Fetch(s+32));
+ x = _mm_crc32_u32(x * c1, Fetch(s+36));
+ y = _mm_crc32_u32(y, Fetch(s+40));
+ z = _mm_crc32_u32(z * c1, Fetch(s+44));
+ x = _mm_crc32_u32(x, Fetch(s+48));
+ y = _mm_crc32_u32(y * c1, Fetch(s+52));
+ z = _mm_crc32_u32(z, Fetch(s+56));
+ x = _mm_crc32_u32(x, Fetch(s+60));
+ return (o - x + y - z) * c1;
+}
+
+#undef Chunk
+#undef Murk
+#undef Mulc2
+#undef Mulc1
+
+uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
+ if (len <= 24) {
+ if (len >= 13) return farmhashmk::Hash32Len13to24(s, len, seed * c1);
+ else if (len >= 5) return farmhashmk::Hash32Len5to12(s, len, seed);
+ else return farmhashmk::Hash32Len0to4(s, len, seed);
+ }
+ uint32_t h = farmhashmk::Hash32Len13to24(s, 24, seed ^ len);
+ return _mm_crc32_u32(Hash32(s + 24, len - 24) + seed, h);
+}
+
+#endif
+} // namespace farmhashsa
diff --git a/contrib/libs/farmhash/farmhashsu.cc b/contrib/libs/farmhash/farmhashsu.cc
index 49b48d5f3c..319ac35912 100644
--- a/contrib/libs/farmhash/farmhashsu.cc
+++ b/contrib/libs/farmhash/farmhashsu.cc
@@ -1,226 +1,226 @@
-#include "common.h"
-
-namespace {
- #include "farmhashmk.cc"
-}
-
-namespace farmhashsu {
-#if !can_use_sse42 || !can_use_aesni
-
-uint32_t Hash32(const char *s, size_t len) {
- FARMHASH_DIE_IF_MISCONFIGURED;
- return s == NULL ? 0 : len;
-}
-
-uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
- FARMHASH_DIE_IF_MISCONFIGURED;
- return seed + Hash32(s, len);
-}
-
-#else
-
-#undef Fetch
-#define Fetch Fetch32
-
-#undef Rotate
-#define Rotate Rotate32
-
-#undef Bswap
-#define Bswap Bswap32
-
-// Helpers for data-parallel operations (4x 32-bits).
-STATIC_INLINE __m128i Add(__m128i x, __m128i y) { return _mm_add_epi32(x, y); }
-STATIC_INLINE __m128i Xor(__m128i x, __m128i y) { return _mm_xor_si128(x, y); }
-STATIC_INLINE __m128i Or(__m128i x, __m128i y) { return _mm_or_si128(x, y); }
-STATIC_INLINE __m128i Mul(__m128i x, __m128i y) { return _mm_mullo_epi32(x, y); }
-STATIC_INLINE __m128i Mul5(__m128i x) { return Add(x, _mm_slli_epi32(x, 2)); }
-STATIC_INLINE __m128i RotateLeft(__m128i x, int c) {
- return Or(_mm_slli_epi32(x, c),
- _mm_srli_epi32(x, 32 - c));
-}
-STATIC_INLINE __m128i Rol17(__m128i x) { return RotateLeft(x, 17); }
-STATIC_INLINE __m128i Rol19(__m128i x) { return RotateLeft(x, 19); }
-STATIC_INLINE __m128i Shuffle0321(__m128i x) {
- return _mm_shuffle_epi32(x, (0 << 6) + (3 << 4) + (2 << 2) + (1 << 0));
-}
-
-uint32_t Hash32(const char *s, size_t len) {
- const uint32_t seed = 81;
- if (len <= 24) {
- return len <= 12 ?
- (len <= 4 ?
- farmhashmk::Hash32Len0to4(s, len) :
- farmhashmk::Hash32Len5to12(s, len)) :
- farmhashmk::Hash32Len13to24(s, len);
- }
-
- if (len < 40) {
- uint32_t a = len, b = seed * c2, c = a + b;
- a += Fetch(s + len - 4);
- b += Fetch(s + len - 20);
- c += Fetch(s + len - 16);
- uint32_t d = a;
- a = NAMESPACE_FOR_HASH_FUNCTIONS::Rotate32(a, 21);
- a = Mur(a, Mur(b, _mm_crc32_u32(c, d)));
- a += Fetch(s + len - 12);
- b += Fetch(s + len - 8);
- d += a;
- a += d;
- b = Mur(b, d) * c2;
- a = _mm_crc32_u32(a, b + c);
- return farmhashmk::Hash32Len13to24(s, (len + 1) / 2, a) + b;
- }
-
-#undef Mulc1
-#define Mulc1(x) Mul((x), cc1)
-
-#undef Mulc2
-#define Mulc2(x) Mul((x), cc2)
-
-#undef Murk
-#define Murk(a, h) \
- Add(k, \
- Mul5( \
- Rol19( \
- Xor( \
- Mulc2( \
- Rol17( \
- Mulc1(a))), \
- (h)))))
-
- const __m128i cc1 = _mm_set1_epi32(c1);
- const __m128i cc2 = _mm_set1_epi32(c2);
- __m128i h = _mm_set1_epi32(seed);
- __m128i g = _mm_set1_epi32(c1 * seed);
- __m128i f = g;
- __m128i k = _mm_set1_epi32(0xe6546b64);
- __m128i q;
- if (len < 80) {
- __m128i a = Fetch128(s);
- __m128i b = Fetch128(s + 16);
- __m128i c = Fetch128(s + (len - 15) / 2);
- __m128i d = Fetch128(s + len - 32);
- __m128i e = Fetch128(s + len - 16);
- h = Add(h, a);
- g = Add(g, b);
- q = g;
- g = Shuffle0321(g);
- f = Add(f, c);
- __m128i be = Add(b, Mulc1(e));
- h = Add(h, f);
- f = Add(f, h);
- h = Add(Murk(d, h), e);
- k = Xor(k, _mm_shuffle_epi8(g, f));
- g = Add(Xor(c, g), a);
- f = Add(Xor(be, f), d);
- k = Add(k, be);
- k = Add(k, _mm_shuffle_epi8(f, h));
- f = Add(f, g);
- g = Add(g, f);
- g = Add(_mm_set1_epi32(len), Mulc1(g));
- } else {
- // len >= 80
- // The following is loosely modelled after farmhashmk::Hash32.
- size_t iters = (len - 1) / 80;
- len -= iters * 80;
-
-#undef Chunk
-#define Chunk() do { \
- __m128i a = Fetch128(s); \
- __m128i b = Fetch128(s + 16); \
- __m128i c = Fetch128(s + 32); \
- __m128i d = Fetch128(s + 48); \
- __m128i e = Fetch128(s + 64); \
- h = Add(h, a); \
- g = Add(g, b); \
- g = Shuffle0321(g); \
- f = Add(f, c); \
- __m128i be = Add(b, Mulc1(e)); \
- h = Add(h, f); \
- f = Add(f, h); \
- h = Add(h, d); \
- q = Add(q, e); \
- h = Rol17(h); \
- h = Mulc1(h); \
- k = Xor(k, _mm_shuffle_epi8(g, f)); \
- g = Add(Xor(c, g), a); \
- f = Add(Xor(be, f), d); \
- std::swap(f, q); \
- q = _mm_aesimc_si128(q); \
- k = Add(k, be); \
- k = Add(k, _mm_shuffle_epi8(f, h)); \
- f = Add(f, g); \
- g = Add(g, f); \
- f = Mulc1(f); \
-} while (0)
-
- q = g;
- while (iters-- != 0) {
- Chunk();
- s += 80;
- }
-
- if (len != 0) {
- h = Add(h, _mm_set1_epi32(len));
- s = s + len - 80;
- Chunk();
- }
- }
-
- g = Shuffle0321(g);
- k = Xor(k, g);
- k = Xor(k, q);
- h = Xor(h, q);
- f = Mulc1(f);
- k = Mulc2(k);
- g = Mulc1(g);
- h = Mulc2(h);
- k = Add(k, _mm_shuffle_epi8(g, f));
- h = Add(h, f);
- f = Add(f, h);
- g = Add(g, k);
- k = Add(k, g);
- k = Xor(k, _mm_shuffle_epi8(f, h));
- __m128i buf[4];
- buf[0] = f;
- buf[1] = g;
- buf[2] = k;
- buf[3] = h;
- s = reinterpret_cast<char*>(buf);
- uint32_t x = Fetch(s);
- uint32_t y = Fetch(s+4);
- uint32_t z = Fetch(s+8);
- x = _mm_crc32_u32(x, Fetch(s+12));
- y = _mm_crc32_u32(y, Fetch(s+16));
- z = _mm_crc32_u32(z * c1, Fetch(s+20));
- x = _mm_crc32_u32(x, Fetch(s+24));
- y = _mm_crc32_u32(y * c1, Fetch(s+28));
- uint32_t o = y;
- z = _mm_crc32_u32(z, Fetch(s+32));
- x = _mm_crc32_u32(x * c1, Fetch(s+36));
- y = _mm_crc32_u32(y, Fetch(s+40));
- z = _mm_crc32_u32(z * c1, Fetch(s+44));
- x = _mm_crc32_u32(x, Fetch(s+48));
- y = _mm_crc32_u32(y * c1, Fetch(s+52));
- z = _mm_crc32_u32(z, Fetch(s+56));
- x = _mm_crc32_u32(x, Fetch(s+60));
- return (o - x + y - z) * c1;
-}
-
-#undef Chunk
-#undef Murk
-#undef Mulc2
-#undef Mulc1
-
-uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
- if (len <= 24) {
- if (len >= 13) return farmhashmk::Hash32Len13to24(s, len, seed * c1);
- else if (len >= 5) return farmhashmk::Hash32Len5to12(s, len, seed);
- else return farmhashmk::Hash32Len0to4(s, len, seed);
- }
- uint32_t h = farmhashmk::Hash32Len13to24(s, 24, seed ^ len);
- return _mm_crc32_u32(Hash32(s + 24, len - 24) + seed, h);
-}
-
-#endif
-} // namespace farmhashsu
+#include "common.h"
+
+namespace {
+ #include "farmhashmk.cc"
+}
+
+namespace farmhashsu {
+#if !can_use_sse42 || !can_use_aesni
+
+uint32_t Hash32(const char *s, size_t len) {
+ FARMHASH_DIE_IF_MISCONFIGURED;
+ return s == NULL ? 0 : len;
+}
+
+uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
+ FARMHASH_DIE_IF_MISCONFIGURED;
+ return seed + Hash32(s, len);
+}
+
+#else
+
+#undef Fetch
+#define Fetch Fetch32
+
+#undef Rotate
+#define Rotate Rotate32
+
+#undef Bswap
+#define Bswap Bswap32
+
+// Helpers for data-parallel operations (4x 32-bits).
+STATIC_INLINE __m128i Add(__m128i x, __m128i y) { return _mm_add_epi32(x, y); }
+STATIC_INLINE __m128i Xor(__m128i x, __m128i y) { return _mm_xor_si128(x, y); }
+STATIC_INLINE __m128i Or(__m128i x, __m128i y) { return _mm_or_si128(x, y); }
+STATIC_INLINE __m128i Mul(__m128i x, __m128i y) { return _mm_mullo_epi32(x, y); }
+STATIC_INLINE __m128i Mul5(__m128i x) { return Add(x, _mm_slli_epi32(x, 2)); }
+STATIC_INLINE __m128i RotateLeft(__m128i x, int c) {
+ return Or(_mm_slli_epi32(x, c),
+ _mm_srli_epi32(x, 32 - c));
+}
+STATIC_INLINE __m128i Rol17(__m128i x) { return RotateLeft(x, 17); }
+STATIC_INLINE __m128i Rol19(__m128i x) { return RotateLeft(x, 19); }
+STATIC_INLINE __m128i Shuffle0321(__m128i x) {
+ return _mm_shuffle_epi32(x, (0 << 6) + (3 << 4) + (2 << 2) + (1 << 0));
+}
+
+uint32_t Hash32(const char *s, size_t len) {
+ const uint32_t seed = 81;
+ if (len <= 24) {
+ return len <= 12 ?
+ (len <= 4 ?
+ farmhashmk::Hash32Len0to4(s, len) :
+ farmhashmk::Hash32Len5to12(s, len)) :
+ farmhashmk::Hash32Len13to24(s, len);
+ }
+
+ if (len < 40) {
+ uint32_t a = len, b = seed * c2, c = a + b;
+ a += Fetch(s + len - 4);
+ b += Fetch(s + len - 20);
+ c += Fetch(s + len - 16);
+ uint32_t d = a;
+ a = NAMESPACE_FOR_HASH_FUNCTIONS::Rotate32(a, 21);
+ a = Mur(a, Mur(b, _mm_crc32_u32(c, d)));
+ a += Fetch(s + len - 12);
+ b += Fetch(s + len - 8);
+ d += a;
+ a += d;
+ b = Mur(b, d) * c2;
+ a = _mm_crc32_u32(a, b + c);
+ return farmhashmk::Hash32Len13to24(s, (len + 1) / 2, a) + b;
+ }
+
+#undef Mulc1
+#define Mulc1(x) Mul((x), cc1)
+
+#undef Mulc2
+#define Mulc2(x) Mul((x), cc2)
+
+#undef Murk
+#define Murk(a, h) \
+ Add(k, \
+ Mul5( \
+ Rol19( \
+ Xor( \
+ Mulc2( \
+ Rol17( \
+ Mulc1(a))), \
+ (h)))))
+
+ const __m128i cc1 = _mm_set1_epi32(c1);
+ const __m128i cc2 = _mm_set1_epi32(c2);
+ __m128i h = _mm_set1_epi32(seed);
+ __m128i g = _mm_set1_epi32(c1 * seed);
+ __m128i f = g;
+ __m128i k = _mm_set1_epi32(0xe6546b64);
+ __m128i q;
+ if (len < 80) {
+ __m128i a = Fetch128(s);
+ __m128i b = Fetch128(s + 16);
+ __m128i c = Fetch128(s + (len - 15) / 2);
+ __m128i d = Fetch128(s + len - 32);
+ __m128i e = Fetch128(s + len - 16);
+ h = Add(h, a);
+ g = Add(g, b);
+ q = g;
+ g = Shuffle0321(g);
+ f = Add(f, c);
+ __m128i be = Add(b, Mulc1(e));
+ h = Add(h, f);
+ f = Add(f, h);
+ h = Add(Murk(d, h), e);
+ k = Xor(k, _mm_shuffle_epi8(g, f));
+ g = Add(Xor(c, g), a);
+ f = Add(Xor(be, f), d);
+ k = Add(k, be);
+ k = Add(k, _mm_shuffle_epi8(f, h));
+ f = Add(f, g);
+ g = Add(g, f);
+ g = Add(_mm_set1_epi32(len), Mulc1(g));
+ } else {
+ // len >= 80
+ // The following is loosely modelled after farmhashmk::Hash32.
+ size_t iters = (len - 1) / 80;
+ len -= iters * 80;
+
+#undef Chunk
+#define Chunk() do { \
+ __m128i a = Fetch128(s); \
+ __m128i b = Fetch128(s + 16); \
+ __m128i c = Fetch128(s + 32); \
+ __m128i d = Fetch128(s + 48); \
+ __m128i e = Fetch128(s + 64); \
+ h = Add(h, a); \
+ g = Add(g, b); \
+ g = Shuffle0321(g); \
+ f = Add(f, c); \
+ __m128i be = Add(b, Mulc1(e)); \
+ h = Add(h, f); \
+ f = Add(f, h); \
+ h = Add(h, d); \
+ q = Add(q, e); \
+ h = Rol17(h); \
+ h = Mulc1(h); \
+ k = Xor(k, _mm_shuffle_epi8(g, f)); \
+ g = Add(Xor(c, g), a); \
+ f = Add(Xor(be, f), d); \
+ std::swap(f, q); \
+ q = _mm_aesimc_si128(q); \
+ k = Add(k, be); \
+ k = Add(k, _mm_shuffle_epi8(f, h)); \
+ f = Add(f, g); \
+ g = Add(g, f); \
+ f = Mulc1(f); \
+} while (0)
+
+ q = g;
+ while (iters-- != 0) {
+ Chunk();
+ s += 80;
+ }
+
+ if (len != 0) {
+ h = Add(h, _mm_set1_epi32(len));
+ s = s + len - 80;
+ Chunk();
+ }
+ }
+
+ g = Shuffle0321(g);
+ k = Xor(k, g);
+ k = Xor(k, q);
+ h = Xor(h, q);
+ f = Mulc1(f);
+ k = Mulc2(k);
+ g = Mulc1(g);
+ h = Mulc2(h);
+ k = Add(k, _mm_shuffle_epi8(g, f));
+ h = Add(h, f);
+ f = Add(f, h);
+ g = Add(g, k);
+ k = Add(k, g);
+ k = Xor(k, _mm_shuffle_epi8(f, h));
+ __m128i buf[4];
+ buf[0] = f;
+ buf[1] = g;
+ buf[2] = k;
+ buf[3] = h;
+ s = reinterpret_cast<char*>(buf);
+ uint32_t x = Fetch(s);
+ uint32_t y = Fetch(s+4);
+ uint32_t z = Fetch(s+8);
+ x = _mm_crc32_u32(x, Fetch(s+12));
+ y = _mm_crc32_u32(y, Fetch(s+16));
+ z = _mm_crc32_u32(z * c1, Fetch(s+20));
+ x = _mm_crc32_u32(x, Fetch(s+24));
+ y = _mm_crc32_u32(y * c1, Fetch(s+28));
+ uint32_t o = y;
+ z = _mm_crc32_u32(z, Fetch(s+32));
+ x = _mm_crc32_u32(x * c1, Fetch(s+36));
+ y = _mm_crc32_u32(y, Fetch(s+40));
+ z = _mm_crc32_u32(z * c1, Fetch(s+44));
+ x = _mm_crc32_u32(x, Fetch(s+48));
+ y = _mm_crc32_u32(y * c1, Fetch(s+52));
+ z = _mm_crc32_u32(z, Fetch(s+56));
+ x = _mm_crc32_u32(x, Fetch(s+60));
+ return (o - x + y - z) * c1;
+}
+
+#undef Chunk
+#undef Murk
+#undef Mulc2
+#undef Mulc1
+
+uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
+ if (len <= 24) {
+ if (len >= 13) return farmhashmk::Hash32Len13to24(s, len, seed * c1);
+ else if (len >= 5) return farmhashmk::Hash32Len5to12(s, len, seed);
+ else return farmhashmk::Hash32Len0to4(s, len, seed);
+ }
+ uint32_t h = farmhashmk::Hash32Len13to24(s, 24, seed ^ len);
+ return _mm_crc32_u32(Hash32(s + 24, len - 24) + seed, h);
+}
+
+#endif
+} // namespace farmhashsu
diff --git a/contrib/libs/farmhash/farmhashte.cc b/contrib/libs/farmhash/farmhashte.cc
index c5df17f43a..709ba49898 100644
--- a/contrib/libs/farmhash/farmhashte.cc
+++ b/contrib/libs/farmhash/farmhashte.cc
@@ -1,238 +1,238 @@
-#include "common.h"
-
-namespace {
- #include "farmhashxo.cc"
-}
-
-namespace farmhashte {
-#if !can_use_sse41 || !x86_64
-
-uint64_t Hash64(const char *s, size_t len) {
- FARMHASH_DIE_IF_MISCONFIGURED;
- return s == NULL ? 0 : len;
-}
-
-uint64_t Hash64WithSeed(const char *s, size_t len, uint64_t seed) {
- FARMHASH_DIE_IF_MISCONFIGURED;
- return seed + Hash64(s, len);
-}
-
-uint64_t Hash64WithSeeds(const char *s, size_t len,
- uint64_t seed0, uint64_t seed1) {
- FARMHASH_DIE_IF_MISCONFIGURED;
- return seed0 + seed1 + Hash64(s, len);
-}
-
-#else
-
-#undef Fetch
-#define Fetch Fetch64
-
-#undef Rotate
-#define Rotate Rotate64
-
-#undef Bswap
-#define Bswap Bswap64
-
-// Helpers for data-parallel operations (1x 128 bits or 2x 64 or 4x 32).
-STATIC_INLINE __m128i Add(__m128i x, __m128i y) { return _mm_add_epi64(x, y); }
-STATIC_INLINE __m128i Xor(__m128i x, __m128i y) { return _mm_xor_si128(x, y); }
-STATIC_INLINE __m128i Mul(__m128i x, __m128i y) { return _mm_mullo_epi32(x, y); }
-STATIC_INLINE __m128i Shuf(__m128i x, __m128i y) { return _mm_shuffle_epi8(y, x); }
-
-// Requires n >= 256. Requires SSE4.1. Should be slightly faster if the
-// compiler uses AVX instructions (e.g., use the -mavx flag with GCC).
-STATIC_INLINE uint64_t Hash64Long(const char* s, size_t n,
- uint64_t seed0, uint64_t seed1) {
- const __m128i kShuf =
- _mm_set_epi8(4, 11, 10, 5, 8, 15, 6, 9, 12, 2, 14, 13, 0, 7, 3, 1);
- const __m128i kMult =
- _mm_set_epi8(0xbd, 0xd6, 0x33, 0x39, 0x45, 0x54, 0xfa, 0x03,
- 0x34, 0x3e, 0x33, 0xed, 0xcc, 0x9e, 0x2d, 0x51);
- uint64_t seed2 = (seed0 + 113) * (seed1 + 9);
- uint64_t seed3 = (Rotate(seed0, 23) + 27) * (Rotate(seed1, 30) + 111);
- __m128i d0 = _mm_cvtsi64_si128(seed0);
- __m128i d1 = _mm_cvtsi64_si128(seed1);
- __m128i d2 = Shuf(kShuf, d0);
- __m128i d3 = Shuf(kShuf, d1);
- __m128i d4 = Xor(d0, d1);
- __m128i d5 = Xor(d1, d2);
- __m128i d6 = Xor(d2, d4);
- __m128i d7 = _mm_set1_epi32(seed2 >> 32);
- __m128i d8 = Mul(kMult, d2);
- __m128i d9 = _mm_set1_epi32(seed3 >> 32);
- __m128i d10 = _mm_set1_epi32(seed3);
- __m128i d11 = Add(d2, _mm_set1_epi32(seed2));
- const char* end = s + (n & ~static_cast<size_t>(255));
- do {
- __m128i z;
- z = Fetch128(s);
- d0 = Add(d0, z);
- d1 = Shuf(kShuf, d1);
- d2 = Xor(d2, d0);
- d4 = Xor(d4, z);
- d4 = Xor(d4, d1);
- std::swap(d0, d6);
- z = Fetch128(s + 16);
- d5 = Add(d5, z);
- d6 = Shuf(kShuf, d6);
- d8 = Shuf(kShuf, d8);
- d7 = Xor(d7, d5);
- d0 = Xor(d0, z);
- d0 = Xor(d0, d6);
- std::swap(d5, d11);
- z = Fetch128(s + 32);
- d1 = Add(d1, z);
- d2 = Shuf(kShuf, d2);
- d4 = Shuf(kShuf, d4);
- d5 = Xor(d5, z);
- d5 = Xor(d5, d2);
- std::swap(d10, d4);
- z = Fetch128(s + 48);
- d6 = Add(d6, z);
- d7 = Shuf(kShuf, d7);
- d0 = Shuf(kShuf, d0);
- d8 = Xor(d8, d6);
- d1 = Xor(d1, z);
- d1 = Add(d1, d7);
- z = Fetch128(s + 64);
- d2 = Add(d2, z);
- d5 = Shuf(kShuf, d5);
- d4 = Add(d4, d2);
- d6 = Xor(d6, z);
- d6 = Xor(d6, d11);
- std::swap(d8, d2);
- z = Fetch128(s + 80);
- d7 = Xor(d7, z);
- d8 = Shuf(kShuf, d8);
- d1 = Shuf(kShuf, d1);
- d0 = Add(d0, d7);
- d2 = Add(d2, z);
- d2 = Add(d2, d8);
- std::swap(d1, d7);
- z = Fetch128(s + 96);
- d4 = Shuf(kShuf, d4);
- d6 = Shuf(kShuf, d6);
- d8 = Mul(kMult, d8);
- d5 = Xor(d5, d11);
- d7 = Xor(d7, z);
- d7 = Add(d7, d4);
- std::swap(d6, d0);
- z = Fetch128(s + 112);
- d8 = Add(d8, z);
- d0 = Shuf(kShuf, d0);
- d2 = Shuf(kShuf, d2);
- d1 = Xor(d1, d8);
- d10 = Xor(d10, z);
- d10 = Xor(d10, d0);
- std::swap(d11, d5);
- z = Fetch128(s + 128);
- d4 = Add(d4, z);
- d5 = Shuf(kShuf, d5);
- d7 = Shuf(kShuf, d7);
- d6 = Add(d6, d4);
- d8 = Xor(d8, z);
- d8 = Xor(d8, d5);
- std::swap(d4, d10);
- z = Fetch128(s + 144);
- d0 = Add(d0, z);
- d1 = Shuf(kShuf, d1);
- d2 = Add(d2, d0);
- d4 = Xor(d4, z);
- d4 = Xor(d4, d1);
- z = Fetch128(s + 160);
- d5 = Add(d5, z);
- d6 = Shuf(kShuf, d6);
- d8 = Shuf(kShuf, d8);
- d7 = Xor(d7, d5);
- d0 = Xor(d0, z);
- d0 = Xor(d0, d6);
- std::swap(d2, d8);
- z = Fetch128(s + 176);
- d1 = Add(d1, z);
- d2 = Shuf(kShuf, d2);
- d4 = Shuf(kShuf, d4);
- d5 = Mul(kMult, d5);
- d5 = Xor(d5, z);
- d5 = Xor(d5, d2);
- std::swap(d7, d1);
- z = Fetch128(s + 192);
- d6 = Add(d6, z);
- d7 = Shuf(kShuf, d7);
- d0 = Shuf(kShuf, d0);
- d8 = Add(d8, d6);
- d1 = Xor(d1, z);
- d1 = Xor(d1, d7);
- std::swap(d0, d6);
- z = Fetch128(s + 208);
- d2 = Add(d2, z);
- d5 = Shuf(kShuf, d5);
- d4 = Xor(d4, d2);
- d6 = Xor(d6, z);
- d6 = Xor(d6, d9);
- std::swap(d5, d11);
- z = Fetch128(s + 224);
- d7 = Add(d7, z);
- d8 = Shuf(kShuf, d8);
- d1 = Shuf(kShuf, d1);
- d0 = Xor(d0, d7);
- d2 = Xor(d2, z);
- d2 = Xor(d2, d8);
- std::swap(d10, d4);
- z = Fetch128(s + 240);
- d3 = Add(d3, z);
- d4 = Shuf(kShuf, d4);
- d6 = Shuf(kShuf, d6);
- d7 = Mul(kMult, d7);
- d5 = Add(d5, d3);
- d7 = Xor(d7, z);
- d7 = Xor(d7, d4);
- std::swap(d3, d9);
- s += 256;
- } while (s != end);
- d6 = Add(Mul(kMult, d6), _mm_cvtsi64_si128(n));
- if (n % 256 != 0) {
- d7 = Add(_mm_shuffle_epi32(d8, (0 << 6) + (3 << 4) + (2 << 2) + (1 << 0)), d7);
- d8 = Add(Mul(kMult, d8), _mm_cvtsi64_si128(farmhashxo::Hash64(s, n % 256)));
- }
- __m128i t[8];
- d0 = Mul(kMult, Shuf(kShuf, Mul(kMult, d0)));
- d3 = Mul(kMult, Shuf(kShuf, Mul(kMult, d3)));
- d9 = Mul(kMult, Shuf(kShuf, Mul(kMult, d9)));
- d1 = Mul(kMult, Shuf(kShuf, Mul(kMult, d1)));
- d0 = Add(d11, d0);
- d3 = Xor(d7, d3);
- d9 = Add(d8, d9);
- d1 = Add(d10, d1);
- d4 = Add(d3, d4);
- d5 = Add(d9, d5);
- d6 = Xor(d1, d6);
- d2 = Add(d0, d2);
- t[0] = d0;
- t[1] = d3;
- t[2] = d9;
- t[3] = d1;
- t[4] = d4;
- t[5] = d5;
- t[6] = d6;
- t[7] = d2;
- return farmhashxo::Hash64(reinterpret_cast<const char*>(t), sizeof(t));
-}
-
-uint64_t Hash64(const char *s, size_t len) {
- // Empirically, farmhashxo seems faster until length 512.
- return len >= 512 ? Hash64Long(s, len, k2, k1) : farmhashxo::Hash64(s, len);
-}
-
-uint64_t Hash64WithSeed(const char *s, size_t len, uint64_t seed) {
- return len >= 512 ? Hash64Long(s, len, k1, seed) :
- farmhashxo::Hash64WithSeed(s, len, seed);
-}
-
-uint64_t Hash64WithSeeds(const char *s, size_t len, uint64_t seed0, uint64_t seed1) {
- return len >= 512 ? Hash64Long(s, len, seed0, seed1) :
- farmhashxo::Hash64WithSeeds(s, len, seed0, seed1);
-}
-
-#endif
-} // namespace farmhashte
+#include "common.h"
+
+namespace {
+ #include "farmhashxo.cc"
+}
+
+namespace farmhashte {
+#if !can_use_sse41 || !x86_64
+
+uint64_t Hash64(const char *s, size_t len) {
+ FARMHASH_DIE_IF_MISCONFIGURED;
+ return s == NULL ? 0 : len;
+}
+
+uint64_t Hash64WithSeed(const char *s, size_t len, uint64_t seed) {
+ FARMHASH_DIE_IF_MISCONFIGURED;
+ return seed + Hash64(s, len);
+}
+
+uint64_t Hash64WithSeeds(const char *s, size_t len,
+ uint64_t seed0, uint64_t seed1) {
+ FARMHASH_DIE_IF_MISCONFIGURED;
+ return seed0 + seed1 + Hash64(s, len);
+}
+
+#else
+
+#undef Fetch
+#define Fetch Fetch64
+
+#undef Rotate
+#define Rotate Rotate64
+
+#undef Bswap
+#define Bswap Bswap64
+
+// Helpers for data-parallel operations (1x 128 bits or 2x 64 or 4x 32).
+STATIC_INLINE __m128i Add(__m128i x, __m128i y) { return _mm_add_epi64(x, y); }
+STATIC_INLINE __m128i Xor(__m128i x, __m128i y) { return _mm_xor_si128(x, y); }
+STATIC_INLINE __m128i Mul(__m128i x, __m128i y) { return _mm_mullo_epi32(x, y); }
+STATIC_INLINE __m128i Shuf(__m128i x, __m128i y) { return _mm_shuffle_epi8(y, x); }
+
+// Requires n >= 256. Requires SSE4.1. Should be slightly faster if the
+// compiler uses AVX instructions (e.g., use the -mavx flag with GCC).
+STATIC_INLINE uint64_t Hash64Long(const char* s, size_t n,
+ uint64_t seed0, uint64_t seed1) {
+ const __m128i kShuf =
+ _mm_set_epi8(4, 11, 10, 5, 8, 15, 6, 9, 12, 2, 14, 13, 0, 7, 3, 1);
+ const __m128i kMult =
+ _mm_set_epi8(0xbd, 0xd6, 0x33, 0x39, 0x45, 0x54, 0xfa, 0x03,
+ 0x34, 0x3e, 0x33, 0xed, 0xcc, 0x9e, 0x2d, 0x51);
+ uint64_t seed2 = (seed0 + 113) * (seed1 + 9);
+ uint64_t seed3 = (Rotate(seed0, 23) + 27) * (Rotate(seed1, 30) + 111);
+ __m128i d0 = _mm_cvtsi64_si128(seed0);
+ __m128i d1 = _mm_cvtsi64_si128(seed1);
+ __m128i d2 = Shuf(kShuf, d0);
+ __m128i d3 = Shuf(kShuf, d1);
+ __m128i d4 = Xor(d0, d1);
+ __m128i d5 = Xor(d1, d2);
+ __m128i d6 = Xor(d2, d4);
+ __m128i d7 = _mm_set1_epi32(seed2 >> 32);
+ __m128i d8 = Mul(kMult, d2);
+ __m128i d9 = _mm_set1_epi32(seed3 >> 32);
+ __m128i d10 = _mm_set1_epi32(seed3);
+ __m128i d11 = Add(d2, _mm_set1_epi32(seed2));
+ const char* end = s + (n & ~static_cast<size_t>(255));
+ do {
+ __m128i z;
+ z = Fetch128(s);
+ d0 = Add(d0, z);
+ d1 = Shuf(kShuf, d1);
+ d2 = Xor(d2, d0);
+ d4 = Xor(d4, z);
+ d4 = Xor(d4, d1);
+ std::swap(d0, d6);
+ z = Fetch128(s + 16);
+ d5 = Add(d5, z);
+ d6 = Shuf(kShuf, d6);
+ d8 = Shuf(kShuf, d8);
+ d7 = Xor(d7, d5);
+ d0 = Xor(d0, z);
+ d0 = Xor(d0, d6);
+ std::swap(d5, d11);
+ z = Fetch128(s + 32);
+ d1 = Add(d1, z);
+ d2 = Shuf(kShuf, d2);
+ d4 = Shuf(kShuf, d4);
+ d5 = Xor(d5, z);
+ d5 = Xor(d5, d2);
+ std::swap(d10, d4);
+ z = Fetch128(s + 48);
+ d6 = Add(d6, z);
+ d7 = Shuf(kShuf, d7);
+ d0 = Shuf(kShuf, d0);
+ d8 = Xor(d8, d6);
+ d1 = Xor(d1, z);
+ d1 = Add(d1, d7);
+ z = Fetch128(s + 64);
+ d2 = Add(d2, z);
+ d5 = Shuf(kShuf, d5);
+ d4 = Add(d4, d2);
+ d6 = Xor(d6, z);
+ d6 = Xor(d6, d11);
+ std::swap(d8, d2);
+ z = Fetch128(s + 80);
+ d7 = Xor(d7, z);
+ d8 = Shuf(kShuf, d8);
+ d1 = Shuf(kShuf, d1);
+ d0 = Add(d0, d7);
+ d2 = Add(d2, z);
+ d2 = Add(d2, d8);
+ std::swap(d1, d7);
+ z = Fetch128(s + 96);
+ d4 = Shuf(kShuf, d4);
+ d6 = Shuf(kShuf, d6);
+ d8 = Mul(kMult, d8);
+ d5 = Xor(d5, d11);
+ d7 = Xor(d7, z);
+ d7 = Add(d7, d4);
+ std::swap(d6, d0);
+ z = Fetch128(s + 112);
+ d8 = Add(d8, z);
+ d0 = Shuf(kShuf, d0);
+ d2 = Shuf(kShuf, d2);
+ d1 = Xor(d1, d8);
+ d10 = Xor(d10, z);
+ d10 = Xor(d10, d0);
+ std::swap(d11, d5);
+ z = Fetch128(s + 128);
+ d4 = Add(d4, z);
+ d5 = Shuf(kShuf, d5);
+ d7 = Shuf(kShuf, d7);
+ d6 = Add(d6, d4);
+ d8 = Xor(d8, z);
+ d8 = Xor(d8, d5);
+ std::swap(d4, d10);
+ z = Fetch128(s + 144);
+ d0 = Add(d0, z);
+ d1 = Shuf(kShuf, d1);
+ d2 = Add(d2, d0);
+ d4 = Xor(d4, z);
+ d4 = Xor(d4, d1);
+ z = Fetch128(s + 160);
+ d5 = Add(d5, z);
+ d6 = Shuf(kShuf, d6);
+ d8 = Shuf(kShuf, d8);
+ d7 = Xor(d7, d5);
+ d0 = Xor(d0, z);
+ d0 = Xor(d0, d6);
+ std::swap(d2, d8);
+ z = Fetch128(s + 176);
+ d1 = Add(d1, z);
+ d2 = Shuf(kShuf, d2);
+ d4 = Shuf(kShuf, d4);
+ d5 = Mul(kMult, d5);
+ d5 = Xor(d5, z);
+ d5 = Xor(d5, d2);
+ std::swap(d7, d1);
+ z = Fetch128(s + 192);
+ d6 = Add(d6, z);
+ d7 = Shuf(kShuf, d7);
+ d0 = Shuf(kShuf, d0);
+ d8 = Add(d8, d6);
+ d1 = Xor(d1, z);
+ d1 = Xor(d1, d7);
+ std::swap(d0, d6);
+ z = Fetch128(s + 208);
+ d2 = Add(d2, z);
+ d5 = Shuf(kShuf, d5);
+ d4 = Xor(d4, d2);
+ d6 = Xor(d6, z);
+ d6 = Xor(d6, d9);
+ std::swap(d5, d11);
+ z = Fetch128(s + 224);
+ d7 = Add(d7, z);
+ d8 = Shuf(kShuf, d8);
+ d1 = Shuf(kShuf, d1);
+ d0 = Xor(d0, d7);
+ d2 = Xor(d2, z);
+ d2 = Xor(d2, d8);
+ std::swap(d10, d4);
+ z = Fetch128(s + 240);
+ d3 = Add(d3, z);
+ d4 = Shuf(kShuf, d4);
+ d6 = Shuf(kShuf, d6);
+ d7 = Mul(kMult, d7);
+ d5 = Add(d5, d3);
+ d7 = Xor(d7, z);
+ d7 = Xor(d7, d4);
+ std::swap(d3, d9);
+ s += 256;
+ } while (s != end);
+ d6 = Add(Mul(kMult, d6), _mm_cvtsi64_si128(n));
+ if (n % 256 != 0) {
+ d7 = Add(_mm_shuffle_epi32(d8, (0 << 6) + (3 << 4) + (2 << 2) + (1 << 0)), d7);
+ d8 = Add(Mul(kMult, d8), _mm_cvtsi64_si128(farmhashxo::Hash64(s, n % 256)));
+ }
+ __m128i t[8];
+ d0 = Mul(kMult, Shuf(kShuf, Mul(kMult, d0)));
+ d3 = Mul(kMult, Shuf(kShuf, Mul(kMult, d3)));
+ d9 = Mul(kMult, Shuf(kShuf, Mul(kMult, d9)));
+ d1 = Mul(kMult, Shuf(kShuf, Mul(kMult, d1)));
+ d0 = Add(d11, d0);
+ d3 = Xor(d7, d3);
+ d9 = Add(d8, d9);
+ d1 = Add(d10, d1);
+ d4 = Add(d3, d4);
+ d5 = Add(d9, d5);
+ d6 = Xor(d1, d6);
+ d2 = Add(d0, d2);
+ t[0] = d0;
+ t[1] = d3;
+ t[2] = d9;
+ t[3] = d1;
+ t[4] = d4;
+ t[5] = d5;
+ t[6] = d6;
+ t[7] = d2;
+ return farmhashxo::Hash64(reinterpret_cast<const char*>(t), sizeof(t));
+}
+
+uint64_t Hash64(const char *s, size_t len) {
+ // Empirically, farmhashxo seems faster until length 512.
+ return len >= 512 ? Hash64Long(s, len, k2, k1) : farmhashxo::Hash64(s, len);
+}
+
+uint64_t Hash64WithSeed(const char *s, size_t len, uint64_t seed) {
+ return len >= 512 ? Hash64Long(s, len, k1, seed) :
+ farmhashxo::Hash64WithSeed(s, len, seed);
+}
+
+uint64_t Hash64WithSeeds(const char *s, size_t len, uint64_t seed0, uint64_t seed1) {
+ return len >= 512 ? Hash64Long(s, len, seed0, seed1) :
+ farmhashxo::Hash64WithSeeds(s, len, seed0, seed1);
+}
+
+#endif
+} // namespace farmhashte
diff --git a/contrib/libs/farmhash/farmhashuo.cc b/contrib/libs/farmhash/farmhashuo.cc
index ed190a44d5..66e84e44d2 100644
--- a/contrib/libs/farmhash/farmhashuo.cc
+++ b/contrib/libs/farmhash/farmhashuo.cc
@@ -1,121 +1,121 @@
-#include "common.h"
-
-namespace {
- #include "farmhashna.cc"
-}
-
-namespace farmhashuo {
-#undef Fetch
-#define Fetch Fetch64
-
-#undef Rotate
-#define Rotate Rotate64
-
-STATIC_INLINE uint64_t H(uint64_t x, uint64_t y, uint64_t mul, int r) {
- uint64_t a = (x ^ y) * mul;
- a ^= (a >> 47);
- uint64_t b = (y ^ a) * mul;
- return Rotate(b, r) * mul;
-}
-
-uint64_t Hash64WithSeeds(const char *s, size_t len,
- uint64_t seed0, uint64_t seed1) {
- if (len <= 64) {
- return farmhashna::Hash64WithSeeds(s, len, seed0, seed1);
- }
-
- // For strings over 64 bytes we loop. Internal state consists of
- // 64 bytes: u, v, w, x, y, and z.
- uint64_t x = seed0;
- uint64_t y = seed1 * k2 + 113;
- uint64_t z = farmhashna::ShiftMix(y * k2) * k2;
- pair<uint64_t, uint64_t> v = make_pair(seed0, seed1);
- pair<uint64_t, uint64_t> w = make_pair(0, 0);
- uint64_t u = x - z;
- x *= k2;
- uint64_t mul = k2 + (u & 0x82);
-
- // Set end so that after the loop we have 1 to 64 bytes left to process.
- const char* end = s + ((len - 1) / 64) * 64;
- const char* last64 = end + ((len - 1) & 63) - 63;
- assert(s + len - 64 == last64);
- do {
- uint64_t a0 = Fetch(s);
- uint64_t a1 = Fetch(s + 8);
- uint64_t a2 = Fetch(s + 16);
- uint64_t a3 = Fetch(s + 24);
- uint64_t a4 = Fetch(s + 32);
- uint64_t a5 = Fetch(s + 40);
- uint64_t a6 = Fetch(s + 48);
- uint64_t a7 = Fetch(s + 56);
- x += a0 + a1;
- y += a2;
- z += a3;
- v.first += a4;
- v.second += a5 + a1;
- w.first += a6;
- w.second += a7;
-
- x = Rotate(x, 26);
- x *= 9;
- y = Rotate(y, 29);
- z *= mul;
- v.first = Rotate(v.first, 33);
- v.second = Rotate(v.second, 30);
- w.first ^= x;
- w.first *= 9;
- z = Rotate(z, 32);
- z += w.second;
- w.second += z;
- z *= 9;
- std::swap(u, y);
-
- z += a0 + a6;
- v.first += a2;
- v.second += a3;
- w.first += a4;
- w.second += a5 + a6;
- x += a1;
- y += a7;
-
- y += v.first;
- v.first += x - y;
- v.second += w.first;
- w.first += v.second;
- w.second += x - y;
- x += w.second;
- w.second = Rotate(w.second, 34);
- std::swap(u, z);
- s += 64;
- } while (s != end);
- // Make s point to the last 64 bytes of input.
- s = last64;
- u *= 9;
- v.second = Rotate(v.second, 28);
- v.first = Rotate(v.first, 20);
- w.first += ((len - 1) & 63);
- u += y;
- y += u;
- x = Rotate(y - x + v.first + Fetch(s + 8), 37) * mul;
- y = Rotate(y ^ v.second ^ Fetch(s + 48), 42) * mul;
- x ^= w.second * 9;
- y += v.first + Fetch(s + 40);
- z = Rotate(z + w.first, 33) * mul;
- v = farmhashna::WeakHashLen32WithSeeds(s, v.second * mul, x + w.first);
- w = farmhashna::WeakHashLen32WithSeeds(s + 32, z + w.second, y + Fetch(s + 16));
- return H(farmhashna::HashLen16(v.first + x, w.first ^ y, mul) + z - u,
- H(v.second + y, w.second + z, k2, 30) ^ x,
- k2,
- 31);
-}
-
-uint64_t Hash64WithSeed(const char *s, size_t len, uint64_t seed) {
- return len <= 64 ? farmhashna::Hash64WithSeed(s, len, seed) :
- Hash64WithSeeds(s, len, 0, seed);
-}
-
-uint64_t Hash64(const char *s, size_t len) {
- return len <= 64 ? farmhashna::Hash64(s, len) :
- Hash64WithSeeds(s, len, 81, 0);
-}
-} // namespace farmhashuo
+#include "common.h"
+
+namespace {
+ #include "farmhashna.cc"
+}
+
+namespace farmhashuo {
+#undef Fetch
+#define Fetch Fetch64
+
+#undef Rotate
+#define Rotate Rotate64
+
+STATIC_INLINE uint64_t H(uint64_t x, uint64_t y, uint64_t mul, int r) {
+ uint64_t a = (x ^ y) * mul;
+ a ^= (a >> 47);
+ uint64_t b = (y ^ a) * mul;
+ return Rotate(b, r) * mul;
+}
+
+uint64_t Hash64WithSeeds(const char *s, size_t len,
+ uint64_t seed0, uint64_t seed1) {
+ if (len <= 64) {
+ return farmhashna::Hash64WithSeeds(s, len, seed0, seed1);
+ }
+
+ // For strings over 64 bytes we loop. Internal state consists of
+ // 64 bytes: u, v, w, x, y, and z.
+ uint64_t x = seed0;
+ uint64_t y = seed1 * k2 + 113;
+ uint64_t z = farmhashna::ShiftMix(y * k2) * k2;
+ pair<uint64_t, uint64_t> v = make_pair(seed0, seed1);
+ pair<uint64_t, uint64_t> w = make_pair(0, 0);
+ uint64_t u = x - z;
+ x *= k2;
+ uint64_t mul = k2 + (u & 0x82);
+
+ // Set end so that after the loop we have 1 to 64 bytes left to process.
+ const char* end = s + ((len - 1) / 64) * 64;
+ const char* last64 = end + ((len - 1) & 63) - 63;
+ assert(s + len - 64 == last64);
+ do {
+ uint64_t a0 = Fetch(s);
+ uint64_t a1 = Fetch(s + 8);
+ uint64_t a2 = Fetch(s + 16);
+ uint64_t a3 = Fetch(s + 24);
+ uint64_t a4 = Fetch(s + 32);
+ uint64_t a5 = Fetch(s + 40);
+ uint64_t a6 = Fetch(s + 48);
+ uint64_t a7 = Fetch(s + 56);
+ x += a0 + a1;
+ y += a2;
+ z += a3;
+ v.first += a4;
+ v.second += a5 + a1;
+ w.first += a6;
+ w.second += a7;
+
+ x = Rotate(x, 26);
+ x *= 9;
+ y = Rotate(y, 29);
+ z *= mul;
+ v.first = Rotate(v.first, 33);
+ v.second = Rotate(v.second, 30);
+ w.first ^= x;
+ w.first *= 9;
+ z = Rotate(z, 32);
+ z += w.second;
+ w.second += z;
+ z *= 9;
+ std::swap(u, y);
+
+ z += a0 + a6;
+ v.first += a2;
+ v.second += a3;
+ w.first += a4;
+ w.second += a5 + a6;
+ x += a1;
+ y += a7;
+
+ y += v.first;
+ v.first += x - y;
+ v.second += w.first;
+ w.first += v.second;
+ w.second += x - y;
+ x += w.second;
+ w.second = Rotate(w.second, 34);
+ std::swap(u, z);
+ s += 64;
+ } while (s != end);
+ // Make s point to the last 64 bytes of input.
+ s = last64;
+ u *= 9;
+ v.second = Rotate(v.second, 28);
+ v.first = Rotate(v.first, 20);
+ w.first += ((len - 1) & 63);
+ u += y;
+ y += u;
+ x = Rotate(y - x + v.first + Fetch(s + 8), 37) * mul;
+ y = Rotate(y ^ v.second ^ Fetch(s + 48), 42) * mul;
+ x ^= w.second * 9;
+ y += v.first + Fetch(s + 40);
+ z = Rotate(z + w.first, 33) * mul;
+ v = farmhashna::WeakHashLen32WithSeeds(s, v.second * mul, x + w.first);
+ w = farmhashna::WeakHashLen32WithSeeds(s + 32, z + w.second, y + Fetch(s + 16));
+ return H(farmhashna::HashLen16(v.first + x, w.first ^ y, mul) + z - u,
+ H(v.second + y, w.second + z, k2, 30) ^ x,
+ k2,
+ 31);
+}
+
+uint64_t Hash64WithSeed(const char *s, size_t len, uint64_t seed) {
+ return len <= 64 ? farmhashna::Hash64WithSeed(s, len, seed) :
+ Hash64WithSeeds(s, len, 0, seed);
+}
+
+uint64_t Hash64(const char *s, size_t len) {
+ return len <= 64 ? farmhashna::Hash64(s, len) :
+ Hash64WithSeeds(s, len, 81, 0);
+}
+} // namespace farmhashuo
diff --git a/contrib/libs/farmhash/farmhashxo.cc b/contrib/libs/farmhash/farmhashxo.cc
index 96ec226687..e9bf1fd797 100644
--- a/contrib/libs/farmhash/farmhashxo.cc
+++ b/contrib/libs/farmhash/farmhashxo.cc
@@ -1,71 +1,71 @@
-#include "common.h"
-
-namespace {
- #include "farmhashuo.cc"
-}
-
-namespace farmhashxo {
-#undef Fetch
-#define Fetch Fetch64
-
-#undef Rotate
-#define Rotate Rotate64
-
-STATIC_INLINE uint64_t H32(const char *s, size_t len, uint64_t mul,
- uint64_t seed0 = 0, uint64_t seed1 = 0) {
- uint64_t a = Fetch(s) * k1;
- uint64_t b = Fetch(s + 8);
- uint64_t c = Fetch(s + len - 8) * mul;
- uint64_t d = Fetch(s + len - 16) * k2;
- uint64_t u = Rotate(a + b, 43) + Rotate(c, 30) + d + seed0;
- uint64_t v = a + Rotate(b + k2, 18) + c + seed1;
- a = farmhashna::ShiftMix((u ^ v) * mul);
- b = farmhashna::ShiftMix((v ^ a) * mul);
- return b;
-}
-
-// Return an 8-byte hash for 33 to 64 bytes.
-STATIC_INLINE uint64_t HashLen33to64(const char *s, size_t len) {
- uint64_t mul0 = k2 - 30;
- uint64_t mul1 = k2 - 30 + 2 * len;
- uint64_t h0 = H32(s, 32, mul0);
- uint64_t h1 = H32(s + len - 32, 32, mul1);
- return ((h1 * mul1) + h0) * mul1;
-}
-
-// Return an 8-byte hash for 65 to 96 bytes.
-STATIC_INLINE uint64_t HashLen65to96(const char *s, size_t len) {
- uint64_t mul0 = k2 - 114;
- uint64_t mul1 = k2 - 114 + 2 * len;
- uint64_t h0 = H32(s, 32, mul0);
- uint64_t h1 = H32(s + 32, 32, mul1);
- uint64_t h2 = H32(s + len - 32, 32, mul1, h0, h1);
- return (h2 * 9 + (h0 >> 17) + (h1 >> 21)) * mul1;
-}
-
-uint64_t Hash64(const char *s, size_t len) {
- if (len <= 32) {
- if (len <= 16) {
- return farmhashna::HashLen0to16(s, len);
- } else {
- return farmhashna::HashLen17to32(s, len);
- }
- } else if (len <= 64) {
- return HashLen33to64(s, len);
- } else if (len <= 96) {
- return HashLen65to96(s, len);
- } else if (len <= 256) {
- return farmhashna::Hash64(s, len);
- } else {
- return farmhashuo::Hash64(s, len);
- }
-}
-
-uint64_t Hash64WithSeeds(const char *s, size_t len, uint64_t seed0, uint64_t seed1) {
- return farmhashuo::Hash64WithSeeds(s, len, seed0, seed1);
-}
-
-uint64_t Hash64WithSeed(const char *s, size_t len, uint64_t seed) {
- return farmhashuo::Hash64WithSeed(s, len, seed);
-}
-} // namespace farmhashxo
+#include "common.h"
+
+namespace {
+ #include "farmhashuo.cc"
+}
+
+namespace farmhashxo {
+#undef Fetch
+#define Fetch Fetch64
+
+#undef Rotate
+#define Rotate Rotate64
+
+STATIC_INLINE uint64_t H32(const char *s, size_t len, uint64_t mul,
+ uint64_t seed0 = 0, uint64_t seed1 = 0) {
+ uint64_t a = Fetch(s) * k1;
+ uint64_t b = Fetch(s + 8);
+ uint64_t c = Fetch(s + len - 8) * mul;
+ uint64_t d = Fetch(s + len - 16) * k2;
+ uint64_t u = Rotate(a + b, 43) + Rotate(c, 30) + d + seed0;
+ uint64_t v = a + Rotate(b + k2, 18) + c + seed1;
+ a = farmhashna::ShiftMix((u ^ v) * mul);
+ b = farmhashna::ShiftMix((v ^ a) * mul);
+ return b;
+}
+
+// Return an 8-byte hash for 33 to 64 bytes.
+STATIC_INLINE uint64_t HashLen33to64(const char *s, size_t len) {
+ uint64_t mul0 = k2 - 30;
+ uint64_t mul1 = k2 - 30 + 2 * len;
+ uint64_t h0 = H32(s, 32, mul0);
+ uint64_t h1 = H32(s + len - 32, 32, mul1);
+ return ((h1 * mul1) + h0) * mul1;
+}
+
+// Return an 8-byte hash for 65 to 96 bytes.
+STATIC_INLINE uint64_t HashLen65to96(const char *s, size_t len) {
+ uint64_t mul0 = k2 - 114;
+ uint64_t mul1 = k2 - 114 + 2 * len;
+ uint64_t h0 = H32(s, 32, mul0);
+ uint64_t h1 = H32(s + 32, 32, mul1);
+ uint64_t h2 = H32(s + len - 32, 32, mul1, h0, h1);
+ return (h2 * 9 + (h0 >> 17) + (h1 >> 21)) * mul1;
+}
+
+uint64_t Hash64(const char *s, size_t len) {
+ if (len <= 32) {
+ if (len <= 16) {
+ return farmhashna::HashLen0to16(s, len);
+ } else {
+ return farmhashna::HashLen17to32(s, len);
+ }
+ } else if (len <= 64) {
+ return HashLen33to64(s, len);
+ } else if (len <= 96) {
+ return HashLen65to96(s, len);
+ } else if (len <= 256) {
+ return farmhashna::Hash64(s, len);
+ } else {
+ return farmhashuo::Hash64(s, len);
+ }
+}
+
+uint64_t Hash64WithSeeds(const char *s, size_t len, uint64_t seed0, uint64_t seed1) {
+ return farmhashuo::Hash64WithSeeds(s, len, seed0, seed1);
+}
+
+uint64_t Hash64WithSeed(const char *s, size_t len, uint64_t seed) {
+ return farmhashuo::Hash64WithSeed(s, len, seed);
+}
+} // namespace farmhashxo
diff --git a/contrib/libs/farmhash/split.py b/contrib/libs/farmhash/split.py
index 083eae63f6..2939c75651 100755
--- a/contrib/libs/farmhash/split.py
+++ b/contrib/libs/farmhash/split.py
@@ -1,74 +1,74 @@
-#!/usr/bin/env python
-
-
-END_PREFIX = '} // namespace '
-TEST_PREFIX = '#if FARMHASHSELFTEST'
-
-
-def main():
- with open('farmhash.cc', 'rb') as input_file:
- lines = input_file.readlines()
-
- namespace_out = None
-
- prev_name = None
-
- output = open('common.h', 'wb')
- output.write('#pragma once\n\n')
-
- def write_common():
- output.write('#include "common.h"\n\n')
-
- def write_include(include):
- if include:
- output.write('namespace {\n')
- output.write(' ' + '#include "{}"\n'.format(include))
- output.write('}\n\n')
-
- write_test = False
-
- for line in lines:
-
- if line.startswith(TEST_PREFIX):
- write_test = True
- output.close()
- output = open('test.cc', 'wb')
- write_common()
- write_include('farmhash_iface.h')
-
- if write_test:
- output.write(line)
- continue
-
- elif line.startswith('namespace '):
- namespace = line.split(' ')[1]
-
- if namespace.startswith('farmhash'):
- filename = namespace + '.cc'
-
- output.close()
- output = open(filename, 'wb')
- write_common()
- write_include(prev_name)
-
- output.write(line)
- prev_name = filename
-
- else:
- if prev_name is not None:
- output.close()
- output = open('farmhash_iface.cc', 'wb')
- write_common()
- write_include(prev_name)
- prev_name = None
-
- output.write(line)
-
- else:
- output.write(line)
-
- output.close()
-
-
-if __name__ == '__main__':
- main()
+#!/usr/bin/env python
+
+
+END_PREFIX = '} // namespace '
+TEST_PREFIX = '#if FARMHASHSELFTEST'
+
+
+def main():
+ with open('farmhash.cc', 'rb') as input_file:
+ lines = input_file.readlines()
+
+ namespace_out = None
+
+ prev_name = None
+
+ output = open('common.h', 'wb')
+ output.write('#pragma once\n\n')
+
+ def write_common():
+ output.write('#include "common.h"\n\n')
+
+ def write_include(include):
+ if include:
+ output.write('namespace {\n')
+ output.write(' ' + '#include "{}"\n'.format(include))
+ output.write('}\n\n')
+
+ write_test = False
+
+ for line in lines:
+
+ if line.startswith(TEST_PREFIX):
+ write_test = True
+ output.close()
+ output = open('test.cc', 'wb')
+ write_common()
+ write_include('farmhash_iface.h')
+
+ if write_test:
+ output.write(line)
+ continue
+
+ elif line.startswith('namespace '):
+ namespace = line.split(' ')[1]
+
+ if namespace.startswith('farmhash'):
+ filename = namespace + '.cc'
+
+ output.close()
+ output = open(filename, 'wb')
+ write_common()
+ write_include(prev_name)
+
+ output.write(line)
+ prev_name = filename
+
+ else:
+ if prev_name is not None:
+ output.close()
+ output = open('farmhash_iface.cc', 'wb')
+ write_common()
+ write_include(prev_name)
+ prev_name = None
+
+ output.write(line)
+
+ else:
+ output.write(line)
+
+ output.close()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/contrib/libs/farmhash/test.cc b/contrib/libs/farmhash/test.cc
index e36b992b66..08d191ae7c 100644
--- a/contrib/libs/farmhash/test.cc
+++ b/contrib/libs/farmhash/test.cc
@@ -1,9872 +1,9872 @@
#include <library/cpp/testing/unittest/registar.h>
-
-#include "common.h"
-
-#include "farmhash_iface.h"
-
-#if FARMHASHSELFTEST
-
-#ifndef FARMHASH_SELF_TEST_GUARD
-#define FARMHASH_SELF_TEST_GUARD
-#include <cstdio>
-#include <iostream>
-#include <string.h>
-
-using std::cout;
-using std::cerr;
-using std::endl;
-using std::hex;
-
-static const uint64_t kSeed0 = 1234567;
-static const uint64_t kSeed1 = k0;
-static const int kDataSize = 1 << 20;
-static const int kTestSize = 300;
-#define kSeed128 Uint128(kSeed0, kSeed1)
-
+
+#include "common.h"
+
+#include "farmhash_iface.h"
+
+#if FARMHASHSELFTEST
+
+#ifndef FARMHASH_SELF_TEST_GUARD
+#define FARMHASH_SELF_TEST_GUARD
+#include <cstdio>
+#include <iostream>
+#include <string.h>
+
+using std::cout;
+using std::cerr;
+using std::endl;
+using std::hex;
+
+static const uint64_t kSeed0 = 1234567;
+static const uint64_t kSeed1 = k0;
+static const int kDataSize = 1 << 20;
+static const int kTestSize = 300;
+#define kSeed128 Uint128(kSeed0, kSeed1)
+
static char farm_hash_data[kDataSize];
-
-static int completed_self_tests = 0;
-static int errors = 0;
-
+
+static int completed_self_tests = 0;
+static int errors = 0;
+
// Initialize farm_hash_data to pseudorandom values.
-void Setup() {
- if (completed_self_tests == 0) {
- uint64_t a = 9;
- uint64_t b = 777;
- for (int i = 0; i < kDataSize; i++) {
- a += b;
- b += a;
- a = (a ^ (a >> 41)) * k0;
- b = (b ^ (b >> 41)) * k0 + i;
- uint8_t u = b >> 37;
+void Setup() {
+ if (completed_self_tests == 0) {
+ uint64_t a = 9;
+ uint64_t b = 777;
+ for (int i = 0; i < kDataSize; i++) {
+ a += b;
+ b += a;
+ a = (a ^ (a >> 41)) * k0;
+ b = (b ^ (b >> 41)) * k0 + i;
+ uint8_t u = b >> 37;
memcpy(farm_hash_data + i, &u, 1); // uint8_t -> char
- }
- }
-}
-
-int NoteErrors() {
-#define NUM_SELF_TESTS 9
- /* if (++completed_self_tests == NUM_SELF_TESTS)
- std::exit(errors > 0); */
- return errors;
-}
-
-template <typename T> inline bool IsNonZero(T x) {
- return x != 0;
-}
-
-template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
- return x != Uint128(0, 0);
-}
-
-#endif // FARMHASH_SELF_TEST_GUARD
-
-namespace farmhashccTest {
-
-uint32_t CreateSeed(int offset, int salt) {
- uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h += static_cast<uint32_t>(offset & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- return h;
-}
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-#define SEED CreateSeed(offset, -1)
-#define SEED0 CreateSeed(offset, 0)
-#define SEED1 CreateSeed(offset, 1)
-
-#undef TESTING
-#define TESTING 1
-#if TESTING
-uint32_t expected[] = {
-4223616069u,
-3696677242u,
-1039179260u, 1690343979u, 1018511555u, 2464489001u,
-20368522u, 2663783964u, 175201532u, 1619210592u,
-4081014168u,
-2576519988u,
-3285042206u, 502478099u, 739479538u, 1500332790u,
-13754768u, 3789353455u, 3473868058u, 1909255088u,
-2212771159u,
-1112731063u,
-826915357u, 2893489933u, 118369799u, 1848668220u,
-1308219822u, 249416982u, 64306364u, 4221800195u,
-1020067935u,
-3955445564u,
-563346294u, 550236731u, 2339016688u, 1826259714u,
-3872358639u, 2295981050u, 1870005390u, 4015628802u,
-1451961420u,
-653440099u,
-1292493871u, 164377749u, 1717712483u, 463414587u,
-3924343675u, 1050492084u, 3566618804u, 2046983362u,
-31917516u,
-2957164615u,
-230718965u, 999595115u, 3534822176u, 2175709186u,
-965707431u, 441796222u, 2481718051u, 1827777486u,
-2590087362u,
-3879448744u,
-3515079898u, 1601433082u, 982764532u, 254808716u,
-1293372530u, 4205605817u, 947001462u, 1138890052u,
-176305566u,
-2447367541u,
-2973802542u, 4123621138u, 3083865840u, 1706367795u,
-792114347u, 2880110657u, 440613768u, 195054868u,
-1359016305u,
-3363804638u,
-649488537u, 1624045597u, 1441938215u, 3147758996u,
-3199173578u, 2597283203u, 2191333609u, 3763129144u,
-1117290165u,
-1062549743u,
-2565615889u, 1046361554u, 1581968261u, 1058773671u,
-1123053168u, 3807622275u, 1486749916u, 3900816089u,
-2437877004u,
-1894455839u,
-1912520953u, 1914997013u, 561048608u, 1643267444u,
-3671572006u, 194811086u, 1468911468u, 2179206286u,
-673206794u,
-3486923651u,
-3741426466u, 3292160512u, 697001377u, 1900763774u,
-3726097344u, 629282039u, 3578723715u, 2868028489u,
-3269862919u,
-2303349487u,
-3643953525u, 2307255916u, 849996280u, 732080434u,
-909961480u, 3542445214u, 2628347095u, 4236856917u,
-1380660650u,
-2631821908u,
-2007289004u, 3509705198u, 3788541675u, 789457322u,
-3090670546u, 638977894u, 3503881773u, 947102987u,
-1525325287u,
-1816697045u,
-2706647405u, 288763142u, 3505438495u, 481308609u,
-2882636782u, 3745162621u, 3503467033u, 428247823u,
-176408838u,
-333551502u,
-1001068721u, 1681483651u, 75380831u, 4191469679u,
-3627361839u, 2736617386u, 3120737438u, 1297502456u,
-864896482u,
-85674920u,
-2886047255u, 4119881331u, 2496990525u, 3442502055u,
-1806582817u, 3186345024u, 4099591287u, 2560171465u,
-3489229104u,
-3065015872u,
-2755089808u, 3098442882u, 378524719u, 2664097023u,
-1771960725u, 2901182183u, 55258521u, 1266621443u,
-581644891u,
-37790450u,
-1800731704u, 3601350920u, 53428754u, 2759476837u,
-3391093099u, 1496510311u, 2511119507u, 2636877410u,
-631613207u,
-1573846064u,
-260484875u, 1088212603u, 2369525206u, 322522428u,
-3191396600u, 2076543340u, 1552496658u, 2739811558u,
-3867875546u,
-2051584261u,
-2126250818u, 901517871u, 3651631165u, 1323139145u,
-1521111765u, 477802997u, 3508559783u, 383954241u,
-3804516756u,
-4250206331u,
-2655954340u, 2484996477u, 1417544845u, 1520282298u,
-2745204366u, 2869345147u, 1872738335u, 2592877343u,
-1619744564u,
-1804962124u,
-3458679890u, 423948620u, 273645618u, 4187865426u,
-376057175u, 2943431463u, 3581950599u, 1035398331u,
-1088213445u,
-861988903u,
-1323370244u, 777069428u, 506235917u, 369720851u,
-2789995854u, 230915180u, 1505086948u, 940361236u,
-3727873235u,
-1159167499u,
-1860302871u, 3456858862u, 3923555152u, 2131072714u,
-2910461068u, 3671950363u, 2010742682u, 4088068851u,
-3616470388u,
-2087714788u,
-221675509u, 1230154072u, 3450704646u, 1463226695u,
-1998357699u, 266026801u, 619568740u, 3560427266u,
-4148162586u,
-3150417316u,
-1356375822u, 2056097622u, 627905802u, 3881675638u,
-2309738053u, 971916703u, 3447805361u, 1673575328u,
-673084328u,
-3317849401u,
-2836362782u, 2377208890u, 3275350588u, 158350552u,
-2553241779u, 2497264995u, 3262882649u, 3897937187u,
-1598963653u,
-3068514414u,
-601541505u, 374517071u, 3380795976u, 235752573u,
-284670003u, 2990192160u, 904937105u, 2306579150u,
-2117362589u,
-1635274830u,
-3355572906u, 170799903u, 1226685528u, 664567688u,
-413219134u, 878324258u, 4026159448u, 3620649295u,
-1823625377u,
-3175888439u,
-1759344347u, 2640637095u, 3549558u, 2192984935u,
-978623493u, 804017880u, 3877562323u, 3843116489u,
-1641748342u,
-1853539444u,
-3001178468u, 3443560727u, 2685426077u, 1653064722u,
-349231508u, 2726789654u, 3136215581u, 768402830u,
-269384321u,
-531936536u,
-2592883487u, 1343156334u, 3628619802u, 1477143570u,
-4269458419u, 3285611028u, 959104925u, 2712290710u,
-3480237248u,
-835796333u,
-2020636251u, 1191914589u, 126521603u, 4288023938u,
-3731699932u, 2136758855u, 985780142u, 193807575u,
-1850544433u,
-653947619u,
-3929316796u, 381871169u, 950486363u, 1787262279u,
-360480382u, 1800636585u, 1039258631u, 3682073259u,
-1262819303u,
-1786000319u,
-1570627191u, 893065837u, 301304916u, 1478469809u,
-623018819u, 2742232545u, 2058913014u, 1706060059u,
-2421125401u,
-1315829592u,
-3208766775u, 1805586156u, 575853086u, 3085025513u,
-4010908260u, 2344058256u, 3814407434u, 1458485673u,
-2474514786u,
-3581895658u,
-2710719679u, 190812706u, 2135454262u, 2620080728u,
-3400757986u, 1669914857u, 1559978393u, 1629811331u,
-3096616493u,
-1391424435u,
-4158376003u, 1015657076u, 794783832u, 479952178u,
-1150290207u, 2497437906u, 231815090u, 755078067u,
-3832053281u,
-63649475u,
-2415822606u, 4105027719u, 1706992318u, 1106598740u,
-3941945667u, 1271300761u, 505882259u, 760186809u,
-2657183368u,
-1925422058u,
-1039773764u, 880219458u, 4275949176u, 1556833823u,
-925882132u, 4216310340u, 757497522u, 461833914u,
-3884002070u,
-2790957660u,
-2100050089u, 651959176u, 1380301291u, 1289124125u,
-452314403u, 226156280u, 3306924715u, 1750807758u,
-2290180542u,
-1953760569u,
-2253069096u, 3960924806u, 1786291620u, 60736185u,
-2569018293u, 3870479674u, 2247005661u, 2239850953u,
-4261808536u,
-3282975782u,
-780945879u, 3349849383u, 1579362556u, 2265045884u,
-905088740u, 725212379u, 3156479246u, 2501620391u,
-3062836263u,
-4070422690u,
-996797869u, 4082582315u, 976105756u, 303983602u,
-1862104804u, 3864508254u, 3383979677u, 2835500286u,
-2798364010u,
-519359476u,
-3447342725u, 194373889u, 3313466630u, 232399983u,
-2841787856u, 1672751454u, 3345183154u, 1805381384u,
-2226129336u,
-2847829057u,
-2350774567u, 2838540121u, 2757948482u, 1017002062u,
-2329150951u, 2171488196u, 3668619047u, 3874977844u,
-3287966998u,
-262346753u,
-2493054715u, 2298644430u, 2926101182u, 1528457638u,
-598656233u, 2615845874u, 989110727u, 820441411u,
-253617372u,
-2201077208u,
-2047569338u, 3114356329u, 3335563734u, 2967673540u,
-768438341u, 1417708203u, 3873718246u, 1538441843u,
-1279167650u,
-3917966776u,
-2218481734u, 1015935150u, 1957845042u, 1318150213u,
-3146423971u, 4218994877u, 1162470863u, 1519718292u,
-2594658906u,
-665870414u,
-3430347817u, 3933868731u, 1597041394u, 3138684682u,
-3398212027u, 1064647658u, 1576321132u, 14792918u,
-224938029u,
-3706456050u,
-847274786u, 2645698692u, 1743374687u, 2343133224u,
-3066596790u, 2857270120u, 200596308u, 452055528u,
-2319312082u,
-3488655402u,
-4146865894u, 608206438u, 2699777051u, 3687240713u,
-327957508u, 3664730153u, 568134564u, 2993484554u,
-4159860363u,
-4274533921u,
-1079994063u, 2360220210u, 3609597760u, 3639708902u,
-2836180437u, 1069910270u, 1892427666u, 1874729790u,
-1267712826u,
-121886940u,
-3572289214u, 2475945610u, 783779452u, 588827737u,
-1531395014u, 2085084212u, 2219189792u, 3981444548u,
-2218885336u,
-1691622694u,
-2053232885u, 1386558530u, 2182946189u, 2365247285u,
-1871081313u, 2935751853u, 38413723u, 543465863u,
-900691890u,
-2899905665u,
-575120562u, 93133904u, 457154948u, 2983705792u,
-4232229200u, 2038565963u, 614693984u, 3405328302u,
-4083090010u,
-2088004171u,
-244031209u, 1861889294u, 2417109253u, 3299562328u,
-4158642443u, 4199064449u, 3161611046u, 885015950u,
-3677904099u,
-2969861785u,
-772348805u, 1712263832u, 3219357614u, 484271305u,
-3645706114u, 2059620251u, 409557488u, 2278896731u,
-224475749u,
-3523022952u,
-2057140088u, 449131785u, 1149879244u, 4255363996u,
-3602720135u, 1690010854u, 2503998822u, 2750828466u,
-3340671802u,
-1447583863u,
-2649684943u, 2764747249u, 3046070595u, 3441726138u,
-3840332559u, 3156747501u, 1288666680u, 1472744459u,
-3452391933u,
-1617542784u,
-217869690u, 3718469527u, 348639731u, 590532355u,
-43789787u, 22606314u, 1621559290u, 2231743261u,
-2234620879u,
-544748955u,
-3169387920u, 203343594u, 3272552527u, 1078282365u,
-809576321u, 854207584u, 3625491053u, 1193737267u,
-1628966807u,
-2661421060u,
-2433442061u, 3886639039u, 2149304418u, 303000565u,
-1432830882u, 137378235u, 1135974068u, 318705754u,
-2491227157u,
-2627534472u,
-3520352233u, 2488397682u, 3969194920u, 3843962181u,
-2135981459u, 2611933220u, 799460731u, 2300968851u,
-3412851628u,
-3070914013u,
-3555224260u, 4125937572u, 240359903u, 722496673u,
-2061023600u, 3843919221u, 2759960043u, 1191155322u,
-1504041490u,
-3735253656u,
-1773124736u, 101110011u, 1627699578u, 2645634551u,
-263603947u, 1388368439u, 677146538u, 1644201982u,
-2625699644u,
-2403862553u,
-2426069017u, 3613511705u, 915141802u, 2981654265u,
-3474818167u, 2611101773u, 627891434u, 762754924u,
-2143021902u,
-51067670u,
-4017746573u, 2269879853u, 3037857950u, 2388899692u,
-582729171u, 1886116725u, 2281219772u, 264704948u,
-3509984037u,
-4078683368u,
-2172959411u, 1807195632u, 3357092302u, 2253764928u,
-2320369390u, 3076335959u, 2623583210u, 168378015u,
-1435562650u,
-1100977467u,
-3160490319u, 2550328495u, 2396855930u, 1347823908u,
-1617990918u, 3849653099u, 3224111576u, 1681539821u,
-4171542880u,
-552200045u,
-3562947778u, 1676237880u, 3747732307u, 2453332913u,
-865530667u, 3566636849u, 3485502777u, 336779723u,
-2535942410u,
-1685000184u,
-820545711u, 1893670486u, 1273910461u, 1193758569u,
-970365241u, 381205962u, 3612810852u, 1160577445u,
-541488143u,
-4005031080u,
-2333965236u, 2419855455u, 3484533538u, 3073937876u,
-908466956u, 661391539u, 2342122412u, 1467049112u,
-1785800827u,
-135343033u,
-139643209u, 2438375667u, 974654058u, 3216478230u,
-3807620420u, 779043363u, 2812846449u, 333254784u,
-1025244024u,
-2242303095u,
-2476683742u, 350018683u, 174652916u, 933097576u,
-826905896u, 559603581u, 2777181260u, 164915169u,
-4070353203u,
-1459055748u,
-297303985u, 3103837241u, 3812514233u, 232265137u,
-2032819099u, 1523091376u, 3531238208u, 1403510182u,
-2886832080u,
-2599705941u,
-2789695716u, 68437968u, 3823813791u, 1040994569u,
-3024194990u, 2461740520u, 3735391266u, 2042207153u,
-2461678616u,
-3519231840u,
-1344224923u, 411442756u, 1179779351u, 7661528u,
-778352196u, 3288808867u, 589356197u, 2627504511u,
-3374744599u,
-3312172905u,
-357423007u, 3539567796u, 4044452215u, 1445118403u,
-2937983820u, 184089910u, 346201845u, 2427295202u,
-1345448010u,
-2884434843u,
-3085001879u, 2640105409u, 315310640u, 3530289798u,
-3362974764u, 963602652u, 75228477u, 3509381180u,
-4012777756u,
-2380345941u,
-1073137836u, 2083960378u, 1220315185u, 3628720934u,
-3508867818u, 67148343u, 3558085158u, 1753943368u,
-863309561u,
-2844713625u,
-441921850u, 854732254u, 816793316u, 2555428747u,
-3440623414u, 1707304366u, 3189874375u, 1623229221u,
-1220335976u,
-806745430u,
-3909262947u, 1680369031u, 2926179486u, 3410391660u,
-3991630434u, 2876458763u, 1179167079u, 536360759u,
-1592117159u,
-1514343977u,
-1032622306u, 2057494855u, 784938958u, 178402996u,
-1152907972u, 2326185495u, 2939973666u, 4181120253u,
-552831733u,
-664251856u,
-1297139539u, 1969357631u, 1474065957u, 3055419017u,
-3395829380u, 3316562752u, 2168409017u, 614624786u,
-3585854336u,
-668291094u,
-1162889217u, 3773171307u, 2263271126u, 355089668u,
-3195850578u, 3396793277u, 3519870267u, 527857605u,
-3972392320u,
-2224315010u,
-4047225561u, 3271434798u, 3192704713u, 2798505213u,
-3932215896u, 3792924012u, 3796843756u, 453872975u,
-4050552799u,
-1056432676u,
-928166947u, 121311642u, 930989547u, 2087070683u,
-1288978057u, 1556325239u, 1812435626u, 1682385724u,
-1214364933u,
-904760776u,
-3957045528u, 3949822847u, 2411065880u, 3716420732u,
-3424837835u, 3833550693u, 1799375326u, 2012368921u,
-2768764136u,
-1786111037u,
-4055479315u, 3751639533u, 2808224623u, 3492656387u,
-1306824780u, 2624000170u, 3134795218u, 1778409297u,
-3900821801u,
-593336325u,
-2772069220u, 2980873673u, 3574497158u, 3994780459u,
-4246519854u, 3482758570u, 4228015183u, 33101083u,
-1769887734u,
-4158035314u,
-3690638998u, 1119035482u, 4134969651u, 2483207353u,
-3932823321u, 285829887u, 3485140138u, 1304815138u,
-995608264u,
-3133997465u,
-1195477617u, 2147693728u, 3506673112u, 4234467492u,
-1183174337u, 1395340482u, 769199343u, 193262308u,
-2798920256u,
-3827889422u,
-3399695609u, 3036045724u, 2999477386u, 3567001759u,
-2682864314u, 1414023907u, 3699872975u, 3369870701u,
-2662284872u,
-2179640019u,
-2485080099u, 3234415609u, 3755915606u, 1339453220u,
-1567403399u, 2076272391u, 293946298u, 3861962750u,
-1291949822u,
-2916864995u,
-132642326u, 2215117062u, 2205863575u, 2488805750u,
-405632860u, 3248129390u, 2952606864u, 896734759u,
-2047417173u,
-3865951392u,
-657296855u, 1328547532u, 3966511825u, 3959682388u,
-4171801020u, 2981416957u, 1868896247u, 790081075u,
-3143666398u,
-2950766549u,
-2065854887u, 2737081890u, 995061774u, 1510712611u,
-2865954809u, 565044286u, 1565631102u, 1500654931u,
-494822108u,
-2803515503u,
-1058154996u, 3506280187u, 856885925u, 4204610546u,
-800905649u, 1130711562u, 558146282u, 2053400666u,
-449794061u,
-2643520245u,
-2101248725u, 3123292429u, 3583524041u, 983372394u,
-1587743780u, 672870813u, 444833475u, 100741452u,
-366232251u,
-1717951248u,
-524144122u, 1362432726u, 1304947719u, 674306020u,
-405665887u, 4081931036u, 1580408204u, 2343242778u,
-3901654006u,
-2627173567u,
-3015148205u, 814686701u, 1327920712u, 1346494176u,
-2468632605u, 2259795544u, 2519278184u, 2129281928u,
-2860266380u,
-4001619412u,
-1154910973u, 2841022216u, 1199925485u, 1372200293u,
-2713179055u, 3609776550u, 2896463880u, 1056406892u,
-177413841u,
-40180172u,
-3274788406u, 660921784u, 1686225028u, 4003382965u,
-2532691887u, 4256809101u, 1186018983u, 667359096u,
-2375266493u,
-2760222015u,
-745187078u, 312264012u, 396822261u, 2588536966u,
-2026998998u, 1766454365u, 3218807676u, 3915487497u,
-2630550356u,
-4130063378u,
-4231937074u, 752212123u, 3085144349u, 3267186363u,
-4103872100u, 4193207863u, 1306401710u, 3014853131u,
-1067760598u,
-2306188342u,
-2437881506u, 4258185052u, 2506507580u, 130876929u,
-1076894205u, 4106981702u, 2799540844u, 945747327u,
-1436722291u,
-2499772225u,
-2571537041u, 2038830635u, 2066826058u, 2892892912u,
-524875858u, 3392572161u, 2869992096u, 1308273341u,
-923668994u,
-1980407857u,
-2275009652u, 240598096u, 2658376530u, 3505603048u,
-1022603789u, 582423424u, 846379327u, 4092636095u,
-4177298326u,
-1004173023u,
-2154027018u, 2993634669u, 1098364089u, 3035642175u,
-1335688126u, 1376393415u, 1252369770u, 3815033328u,
-1999309358u,
-1234054757u,
-1388595255u, 2859334775u, 366532860u, 3453410395u,
-4226967708u, 1321729870u, 2078463405u, 156766592u,
-3157683394u,
-3549293384u,
-3348214547u, 2879648344u, 1144813399u, 2758966254u,
-647753581u, 813615926u, 2035441590u, 1961053117u,
-600168686u,
-2192833387u,
-3156481401u, 3627320321u, 383550248u, 81209584u,
-2339331745u, 1284116690u, 1980144976u, 2955724163u,
-789301728u,
-3842040415u,
-1115881490u, 965249078u, 4098663322u, 1870257033u,
-2923150701u, 4217108433u, 183816559u, 2104089285u,
-2640095343u,
-3173757052u,
-927847464u, 2383114981u, 4287174363u, 1886129652u,
-70635161u, 1182924521u, 1121440038u, 4246220730u,
-3890583049u,
-975913757u,
-2436253031u, 1074894869u, 1301280627u, 992471939u,
-735658128u, 244441856u, 1541612456u, 3457776165u,
-3503534059u,
-1931651133u,
-349142786u, 3669028584u, 1828812038u, 99128389u,
-1364272849u, 1963678455u, 3971963311u, 2316950886u,
-1308901796u,
-2789591580u,
-1460494965u, 2380227479u, 1577190651u, 1755822080u,
-2911014607u, 859387544u, 13023113u, 2319243370u,
-2522582211u,
-2299110490u,
-3342378874u, 2589323490u, 1884430765u, 3739058655u,
-2419330954u, 355389916u, 273950915u, 3670136553u,
-410946824u,
-3174041420u,
-2609010298u, 3059091350u, 2300275014u, 725729828u,
-2548380995u, 1738849964u, 1257081412u, 79430455u,
-810321297u,
-3246190593u,
-1007937684u, 912115394u, 40880059u, 3450073327u,
-4289832174u, 2253485111u, 1065639151u, 2953189309u,
-124779113u,
-654299738u,
-115760833u, 1250932069u, 884995826u, 3998908281u,
-1382882981u, 1134187162u, 3202324501u, 487502928u,
-3032756345u,
-4057517628u,
-933197381u, 2319223127u, 2044528655u, 2554572663u,
-4049450620u, 1620812836u, 2832905391u, 2273005481u,
-1913090121u,
-1055456023u,
-510593296u, 3285343192u, 2912822536u, 1645225063u,
-638418430u, 452701300u, 1025483165u, 1639370512u,
-167948643u,
-2809842730u,
-2983135664u, 407521332u, 1543756616u, 3949773145u,
-4283462892u, 659962275u, 3878013463u, 1000748756u,
-4053212051u,
-4099239406u,
-3467581965u, 354635541u, 21301844u, 3831212473u,
-3189450571u, 2264401966u, 4096484849u, 1736448515u,
-3976926096u,
-3727194724u,
-2243487039u, 585209095u, 3143046007u, 969558123u,
-3037113502u, 3594170243u, 2835860223u, 3775493975u,
-2787220812u,
-2274252217u,
-2915380701u, 3077533278u, 1252871826u, 1519790952u,
-205297661u, 2950557658u, 3956882191u, 2724439401u,
-3694608025u,
-124028038u,
-216019153u, 1533010676u, 2259986336u, 2014061617u,
-2068617849u, 3078123052u, 2692046098u, 1582812948u,
-396916232u,
-1470894001u,
-1694309312u, 300268215u, 1553892743u, 671176040u,
-1544988994u, 2793402821u, 4194972569u, 2296476154u,
-748354332u,
-3491325898u,
-4261053291u, 1104998242u, 797816835u, 243564059u,
-2197717393u, 299029458u, 1675252188u, 3139770041u,
-583018574u,
-2532106100u,
-2099391658u, 3760526730u, 3422719327u, 3556917689u,
-2374009285u, 2130865894u, 3710563151u, 1437538307u,
-3938030842u,
-2006930694u,
-2151243336u, 1939741287u, 1957068175u, 2135147479u,
-649553342u, 1713643042u, 4188696599u, 1698739939u,
-3549427584u,
-1016382174u,
-322644378u, 2476164549u, 2037263020u, 88036019u,
-2548960923u, 539867919u, 2871157727u, 4031659929u,
-754087252u,
-972656559u,
-4246379429u, 3877308578u, 2059459630u, 3614934323u,
-1410565271u, 2102980459u, 215395636u, 1083393481u,
-3775523015u,
-2062750105u,
-2475645882u, 3041186774u, 3534315423u, 758607219u,
-1686100614u, 180500983u, 1155581185u, 1476664671u,
-2918661695u,
-3812731350u,
-4003853737u, 4148884881u, 1468469436u, 3278880418u,
-1045838071u, 1049161262u, 360450415u, 3158065524u,
-814443735u,
-3391401707u,
-729968410u, 738771593u, 3662738792u, 1672830580u,
-4199496163u, 188487238u, 219098233u, 2141731267u,
-3890250614u,
-2988780375u,
-4026279523u, 3489429375u, 2468433807u, 1178270701u,
-2685094218u, 2716621497u, 3718335529u, 2273344755u,
-701110882u,
-1925717409u,
-1515176562u, 2325460593u, 3954798930u, 784566105u,
-3769422266u, 1641530321u, 2703876862u, 2907480267u,
-1828076455u,
-1805635221u,
-3883381245u, 1476756210u, 2072514392u, 3658557081u,
-2003610746u, 2556845550u, 729594004u, 3303898266u,
-1968227254u,
-423204951u,
-231828688u, 4223697811u, 698619045u, 3636824418u,
-2738779239u, 2333529003u, 2833158642u, 580285428u,
-3038148234u,
-1012378004u,
-1113647298u, 1424593483u, 4053247723u, 1167152941u,
-2677383578u, 3419485379u, 2135673840u, 440478166u,
-1682229112u,
-3226724137u,
-1217439806u, 3828726923u, 3636576271u, 3467643156u,
-2005614908u, 2655346461u, 2345488441u, 1027557096u,
-3594084220u,
-1372306343u,
-2342583762u, 4291342905u, 4094931814u, 3254771759u,
-821978248u, 2404930117u, 1143937655u, 3156949255u,
-3460606610u,
-449701786u,
-3474906110u, 1932585294u, 2283357584u, 1808481478u,
-3522851029u, 3040164731u, 1530172182u, 2950426149u,
-1402416557u,
-756419859u,
-4132576145u, 724994790u, 2852015871u, 2177908339u,
-899914731u, 139675671u, 1423281870u, 3198458070u,
-807581308u,
-2021611521u,
-1801452575u, 1425984297u, 2833835949u, 1536827865u,
-3902351840u, 164546042u, 1872840974u, 3986194780u,
-792156290u,
-3378681896u,
-941547959u, 3931328334u, 3661060482u, 2386420777u,
-3920146272u, 3458621279u, 3348500844u, 2269586542u,
-797371473u,
-3188953649u,
-80514771u, 2913333490u, 1246325623u, 3253846094u,
-1723906239u, 1606413555u, 587500718u, 1412413859u,
-2310046829u,
-2113313263u,
-3855635608u, 47271944u, 1112281934u, 3440228404u,
-2633519166u, 425094457u, 307659635u, 67338587u,
-2412987939u,
-2363930989u,
-2853008596u, 2844637339u, 922568813u, 130379293u,
-2825204405u, 2904442145u, 1176875333u, 1511685505u,
-599177514u,
-1872681372u,
-682394826u, 1888849790u, 3635304282u, 1761257265u,
-1571292431u, 355247075u, 1177210823u, 1691529530u,
-3629531121u,
-3760474006u,
-1129340625u, 868116266u, 3908237785u, 1942124366u,
-1266630014u, 3214841995u, 334023850u, 1110037019u,
-369650727u,
-1288666741u,
-70535706u, 20230114u, 4284225520u, 727856157u,
-293696779u, 1244943770u, 3976592462u, 560421917u,
-4171688499u,
-2438786950u,
-1218144639u, 3809125983u, 1302395746u, 534542359u,
-2121993015u, 2899519374u, 3192177626u, 1761707794u,
-3101683464u,
-1555403906u,
-3225675390u, 1875263768u, 4278894569u, 651707603u,
-2111591484u, 3802716028u, 2900262228u, 1181469202u,
-3254743797u,
-1822684466u,
-860641829u, 3046128268u, 1284833012u, 1125261608u,
-461384524u, 2331344566u, 1274400010u, 990498321u,
-3462536298u,
-3796842585u,
-2346607194u, 279495949u, 3951194590u, 3522664971u,
-3169688303u, 726831706u, 1123875117u, 1816166599u,
-3759808754u,
-2918558151u,
-3713203220u, 3369939267u, 466047109u, 384042536u,
-587271104u, 2191634696u, 2449929095u, 1157932232u,
-2084466674u,
-841370485u,
-3241372562u, 4277738486u, 2150836793u, 1173569449u,
-778768930u, 2594706485u, 3065269405u, 3019263663u,
-2660146610u,
-2789946230u,
-77056913u, 728174395u, 3647185904u, 804562358u,
-2697276483u, 881311175u, 1178696435u, 2059173891u,
-2308303791u,
-221481230u,
-50241451u, 3689414100u, 1969074761u, 2732071529u,
-1900890356u, 840789500u, 2100609300u, 985565597u,
-1220850414u,
-2456636259u,
-223607678u, 1016310244u, 1937434395u, 85717256u,
-275058190u, 3712011133u, 171916016u, 2389569096u,
-3679765802u,
-3575358777u,
-3481108261u, 3178286380u, 2489642395u, 2931039055u,
-3086601621u, 3079518902u, 3027718495u, 2506894644u,
-2976869602u,
-2134336365u,
-2420172217u, 918054427u, 661522682u, 1403791357u,
-3587174388u, 2623673551u, 1355661457u, 4159477684u,
-1109013587u,
-3112183488u,
-2217849279u, 3500291996u, 2419603731u, 2929886201u,
-3854470013u, 1358382103u, 1357666555u, 21053566u,
-2716621233u,
-3094836862u,
-3309729704u, 57086558u, 839187419u, 2757944838u,
-3651040558u, 3607536716u, 3691257732u, 2312878285u,
-1202511724u,
-183479927u,
-2509829803u, 109313218u, 478173887u, 2072044014u,
-190631406u, 2495604975u, 1010416260u, 3679857586u,
-726566957u,
-258500881u,
-1805873908u, 3081447051u, 2352101327u, 534922207u,
-1584552873u, 813470716u, 255914637u, 249169434u,
-3193498057u,
-1038802706u,
-2590158653u, 3147907290u, 663060128u, 1156177857u,
-634616100u, 312879189u, 1545020368u, 2054634247u,
-3271451914u,
-3438291534u,
-2181454946u, 3864535432u, 2398586877u, 896491075u,
-2810631478u, 2770357487u, 3372930052u, 898070638u,
-2051007323u,
-392959778u,
-36645539u, 3743556044u, 4134529680u, 4124451188u,
-566806297u, 2936523982u, 1304761965u, 537399498u,
-1940818842u,
-40862381u,
-36288410u, 3063605629u, 2826611650u, 3961972098u,
-1871578006u, 2392095486u, 1136931591u, 513864488u,
-173276451u,
-3039055682u,
-3543322032u, 1943592006u, 657217094u, 1751698246u,
-2969618445u, 456616022u, 900309519u, 113892716u,
-1126392103u,
-1235651045u,
-1882073852u, 2136610853u, 2353639710u, 2819956700u,
-3980083530u, 828773559u, 224069850u, 902434120u,
-2802008036u,
-94358995u,
-2777723394u, 2812641403u, 2525832595u, 4157388110u,
-4235563782u, 937800324u, 141690749u, 568062536u,
-550123849u,
-1330316521u,
-1949488696u, 2296431366u, 1958465262u, 3564751729u,
-3748252207u, 120455129u, 1607318832u, 2525729790u,
-2640987481u,
-2332096657u,
-1775969159u, 1555085077u, 2913525137u, 1347085183u,
-2376253113u, 3194050574u, 1806090610u, 678641356u,
-1499146713u,
-383849715u,
-3299835823u, 2284860330u, 2614269636u, 3913628844u,
-2761334210u, 1959484587u, 529797021u, 239966995u,
-3102194829u,
-3602307804u,
-1122192627u, 3577510006u, 164486066u, 1680137310u,
-1473396395u, 1467801424u, 903493660u, 1185943071u,
-2798556505u,
-2306744492u,
-3167201310u, 3577947177u, 3067592134u, 2905506289u,
-1210366329u, 204484056u, 2347778932u, 3862374472u,
-3277439508u,
-4187414621u,
-1646699310u, 621385800u, 3934869089u, 3975491588u,
-3580085916u, 1925674500u, 2436305348u, 3983301539u,
-2739439523u,
-3291507446u,
-3395637920u, 3753389171u, 2955202032u, 2654255623u,
-3771089254u, 2140443405u, 2779834738u, 3261942805u,
-3526889244u,
-1842009139u,
-4048484340u, 2106218403u, 2161244271u, 772152700u,
-1158647659u, 3776791619u, 3882186721u, 699525237u,
-2954670460u,
-1007105869u,
-3359152025u, 1146388699u, 1401550303u, 2326582541u,
-4181783540u, 1085644043u, 1942143795u, 1038368308u,
-1526153809u,
-4042547244u,
-1891441000u, 2573991874u, 1281441253u, 3635098284u,
-1980545715u, 825985487u, 3934748116u, 4228386979u,
-1480870944u,
-1042194545u,
-2397771642u, 2248490001u, 3817869868u, 878654626u,
-3785629484u, 1672470870u, 3229367873u, 1894538933u,
-1010692731u,
-1733824268u,
-656620328u, 3048283803u, 3353340056u, 2324965120u,
-4192585951u, 2284524675u, 3483884368u, 1510168293u,
-1554942691u,
-1309709396u,
-1241133168u, 3162179280u, 4046378054u, 3171681593u,
-1165297136u, 3496703563u, 150437903u, 1948622072u,
-1076332463u,
-2292479143u,
-1464229958u, 3479738093u, 2328067598u, 2334503110u,
-833324834u, 3981605747u, 3002629155u, 2854644186u,
-2832201336u,
-95796957u,
-3269249397u, 2358313329u, 3411860910u, 4283292480u,
-2802208697u, 1305947955u, 2156803420u, 1991340283u,
-189678024u,
-447602599u,
-1055411517u, 1531748363u, 1555852656u, 412402681u,
-3774988152u, 20597551u, 2925024131u, 1423989620u,
-3749428061u,
-1541439448u,
-112270416u, 1936224776u, 132162941u, 3772011507u,
-3814102518u, 1908807815u, 444154079u, 823765347u,
-3362275567u,
-3419047430u,
-2108287005u, 2315102125u, 658593738u, 3195094029u,
-3721937534u, 3176229204u, 3398835373u, 1271898712u,
-1142546577u,
-3185986817u,
-3562705803u, 2046119567u, 912990621u, 1829977672u,
-3459576979u, 1118045834u, 1369529376u, 3320601076u,
-3954988953u,
-4002467635u,
-3359456351u, 1314849568u, 1766750942u, 2998874853u,
-1181800239u, 707328036u, 3314954697u, 2066721120u,
-598194215u,
-1124451278u,
-3156679616u, 3742684743u, 2960199690u, 2683497915u,
-2566077529u, 937014607u, 102095219u, 4262922475u,
-3132264275u,
-1262099830u,
-862722905u, 2717653494u, 3245583534u, 3427209989u,
-3220278124u, 85457091u, 2222333500u, 3513997967u,
-3522324951u,
-2830855552u,
-2215004781u, 3482411840u, 4227160614u, 2030964411u,
-1741393851u, 2643723748u, 942813508u, 403442675u,
-3112048748u,
-530556423u,
-3817755244u, 3543286628u, 2247276090u, 1532920842u,
-4101962711u, 1446540991u, 3297821473u, 1861255389u,
-1984398u,
-2366525138u,
-377589481u, 3549193828u, 1427765914u, 506831657u,
-277278988u, 1447652775u, 3214362239u, 3142198690u,
-2843087541u,
-468915015u,
-807895062u, 2198723907u, 4031145069u, 2417156212u,
-4027298697u, 637175947u, 1229254212u, 1773257887u,
-1659444818u,
-451148891u,
-2099741368u, 735351990u, 2534775713u, 3261804619u,
-712519954u, 3527962772u, 3758642738u, 4245823575u,
-1281314264u,
-1167866160u,
-1489546151u, 1197354389u, 1043278102u, 2563326586u,
-371937794u, 2320164817u, 3189512691u, 573685198u,
-4108603513u,
-3758899588u,
-3507030163u, 2947201212u, 2529492585u, 578234375u,
-3362349842u, 3318878925u, 3611203517u, 3059253190u,
-4270755916u,
-4291274625u,
-4237586791u, 4137422245u, 2927218651u, 2444687041u,
-797128811u, 2043057612u, 396533859u, 2665256178u,
-3346510674u,
-1779586176u,
-3076562062u, 1882746214u, 921095362u, 2026988397u,
-514514911u, 3886379478u, 4218272420u, 1480386793u,
-3900160816u,
-2292273451u,
-1276138356u, 1125461821u, 1912885715u, 3365266013u,
-1333211627u, 4085009861u, 1390530102u, 3347984752u,
-2721771301u,
-1419492325u,
-4066766256u, 3250852311u, 820111852u, 1382201318u,
-2366036798u, 938032241u, 3100979439u, 487048687u,
-2292851045u,
-3241399180u,
-3912670510u, 2416437067u, 2973194517u, 3507707986u,
-1935099406u, 2533441488u, 104616731u, 2892622820u,
-3801190339u,
-4239188808u,
-807238241u, 3300121546u, 2249406147u, 4032114017u,
-3713738189u, 3324425575u, 4275607376u, 3663120298u,
-4173658372u,
-3984289690u,
-1827636846u, 3264588778u, 3297165529u, 558623533u,
-2728945672u, 1566297318u, 3447249966u, 481719551u,
-1596842050u,
-1838185946u,
-265271620u, 1050246315u, 4046655705u, 1844193138u,
-3807563245u, 1075384804u, 1292554949u, 1506525927u,
-2921816148u,
-2051885269u,
-1930534041u, 3872721086u, 1564489377u, 2272482181u,
-2849358683u, 589618304u, 2262072443u, 290363051u,
-299168363u,
-3867603931u,
-2868688756u, 2545263115u, 1092098533u, 3885725603u,
-2352430409u, 1981595469u, 2047946646u, 1332642839u,
-793806516u,
-214858837u,
-1061484659u, 3192394476u, 1115054785u, 3690637234u,
-996792368u, 2023479706u, 3046498231u, 4205835102u,
-3870714754u,
-257472875u,
-3549864599u, 2040276129u, 2414778670u, 812235477u,
-2674248196u, 1864096101u, 2257492689u, 1332556794u,
-1079540713u,
-465530720u,
-2304763972u, 830724724u, 3354588920u, 2510713652u,
-3103749409u, 468835585u, 1707620787u, 3038024846u,
-1000303198u,
-3462270146u,
-2748698899u, 2100348093u, 511537258u, 1237187486u,
-102049383u, 2268226698u, 3162251739u, 4219404629u,
-838822407u,
-1481440623u,
-2989224077u, 2676681975u, 3246551821u, 3812079906u,
-370572963u, 2283154352u, 3084789986u, 1961085583u,
-1955640586u,
-2409348147u,
-2284780581u, 1634818716u, 4018221729u, 2320761377u,
-3566831899u, 1799560520u, 91431959u, 1754113747u,
-1459430477u,
-3613658517u,
-924489906u, 3406317699u, 866289774u, 3924821603u,
-1265394945u, 1870668109u, 151949856u, 2747006534u,
-3111906201u,
-64039467u,
-2314447545u, 2600195638u, 4095795204u, 4162096026u,
-1026756826u, 2460047982u, 52686887u, 823198739u,
-1518045160u,
-2867527376u,
-566410761u, 2200433819u, 2114146405u, 2893790965u,
-881504901u, 974783212u, 490815659u, 937300283u,
-1523735309u,
-2511976468u,
-2634644947u, 355119367u, 1373773092u, 309232995u,
-3088671051u, 787126032u, 3442836843u, 4289194567u,
-2177850062u,
-1174136430u,
-3248982914u, 3129039732u, 1166851580u, 2196451882u,
-469595580u, 2130837700u, 3783349021u, 3745262548u,
-1236930515u,
-3032131496u,
-1525591437u, 1823628217u, 1939019255u, 1950270463u,
-3659899927u, 3688643445u, 3004399289u, 1155199552u,
-357547234u,
-2213110526u,
-3122658210u, 2667800490u, 2718690333u, 3512372076u,
-1098611683u, 2657518392u, 4248458835u, 3109874532u,
-1592908438u,
-2864927516u,
-3635248840u, 1251777186u, 3797340158u, 3508496870u,
-303354834u, 1482394062u, 2087100120u, 1595931912u,
-608574156u,
-723367884u,
-907938402u, 3357047807u, 1619629851u, 3092082995u,
-89030300u, 916336992u, 1861180168u, 3436334155u,
-1375000544u,
-3472936241u,
-1321217853u, 791356402u, 2872410224u, 2326250297u,
-2657644088u, 1748314108u, 4146771421u, 2913114440u,
-2924821844u,
-2101101496u,
-3268017251u, 2109603066u, 690665520u, 1830067573u,
-951427661u, 2982533150u, 3884512506u, 2358657479u,
-2833210784u,
-3419798214u,
-3785893994u, 2103940206u, 86759766u, 4031230616u,
-3745237192u, 2739453927u, 497038072u, 3303159408u,
-1251537249u,
-1993408196u,
-3185905715u, 2885948408u, 3154277110u, 2444150313u,
-2505582079u, 2120610195u, 3266465773u, 1814611964u,
-3080050407u,
-1079915522u,
-1819346505u, 2529946763u, 892097374u, 3740257161u,
-3618100441u, 1079900094u, 3607172225u, 737863389u,
-360704560u,
-3341993089u,
-1139047381u, 3132219631u, 1248981859u, 1109338159u,
-2004908615u, 4022302594u, 4166640860u, 2959140950u,
-3949235962u,
-2832278473u,
-2200524012u, 2634933043u, 2495844522u, 2613799818u,
-4034096813u, 683271795u, 1673546817u, 1363163726u,
-1805395136u,
-511749501u,
-1231032599u, 2305979751u, 345737783u, 3339868854u,
-2931857933u, 2323251738u, 1332068477u, 51846558u,
-3927238177u,
-1387182179u,
-1701238601u, 1419275173u, 2580882268u, 3357874599u,
-1726558907u, 1292901039u, 1371322339u, 1311713044u,
-3526735232u,
-4017884184u,
-3366093428u, 77140994u, 2128996229u, 1357915765u,
-4019691901u, 483989024u, 2390311750u, 2766065288u,
-3938587520u,
-3064810344u,
-1054589198u, 1274997019u, 4040589616u, 1277751144u,
-2274907047u, 4170399945u, 2886368209u, 4168922115u,
-3901237033u,
-3252972311u,
-2205185840u, 3403097556u, 3385493699u, 2809751370u,
-555319628u, 399539034u, 2998971454u, 1521596214u,
-178870216u,
-1471733541u,
-519629198u, 514159209u, 1500582242u, 1928616587u,
-2686427928u, 4133138798u, 1225914083u, 1432713584u,
-3559310915u,
-3925489366u,
-1055613123u, 4126676029u, 2723867653u, 3290604111u,
-1377022957u, 2373608155u, 3615237379u, 594338683u,
-2645257602u,
-2408427260u,
-917033274u, 750455097u, 625657657u, 121713200u,
-2191273413u, 4043949724u, 3293146785u, 3809297972u,
-3947296919u,
-115456894u,
-1529576616u, 1459278275u, 2157117997u, 1747859293u,
-4106665903u, 996939232u, 2007976332u, 4274649009u,
-1017725787u,
-4244666096u,
-1219631331u, 3072426253u, 3547691720u, 1620822012u,
-1397717508u, 2031597325u, 3345983430u, 2459068000u,
-3645130467u,
-2308642742u,
-359955852u, 1348467968u, 1133123059u, 2435919062u,
-2800365907u, 4213217210u, 4056565603u, 2811666556u,
-2318007236u,
-3823652401u,
-3654086429u, 1273260424u, 1591610446u, 943349350u,
-3441227678u, 3779964757u, 233818224u, 3469971032u,
-3764095096u,
-4009204587u,
-678472092u, 1990559652u, 2583121088u, 2978143652u,
-2496370864u, 2139539656u, 4287972050u, 295832576u,
-3536742861u,
-2257466133u,
-2738052161u, 1988611898u, 2466189642u, 3294419573u,
-2311186273u, 474374532u, 3081964174u, 2515138278u,
-835731677u,
-1178182694u,
-3352119543u, 2884763225u, 3462399574u, 2900817210u,
-1993698511u, 2868445043u, 2746444849u, 1205258179u,
-2353442946u,
-4079040070u,
-3624133102u, 2907136076u, 2902521697u, 426813211u,
-1418185512u, 3711189488u, 1351506552u, 1934749519u,
-46595543u,
-401688809u,
-3514602124u, 1396852607u, 1951477943u, 2502249173u,
-3199695820u, 2890250638u, 4205072507u, 1715623846u,
-3266686789u,
-3218688128u,
-1697759742u, 851227671u, 2358709645u, 4174233268u,
-500583683u, 3805940955u, 736234120u, 2710563712u,
-1949664540u,
-3139414003u,
-4293073253u, 1284406972u, 1785182449u, 1051548274u,
-2994248357u, 2499882522u, 717208669u, 2039517285u,
-518424929u,
-143136433u,
-2303774671u, 1272930860u, 2286410920u, 788459311u,
-273225293u, 2439291703u, 2254505236u, 3446287701u,
-3655156558u,
-1546628787u,
-340081500u, 3285722006u, 1324810435u, 1053980860u,
-1779472859u, 2700355724u, 686005017u, 3762376315u,
-3963193100u,
-1370881135u,
-661300087u, 1152753704u, 2349891598u, 3910051187u,
-2109444785u, 1311123870u, 2639837565u, 1896770931u,
-1081414128u,
-869877586u,
-4284220400u, 63045374u, 235968615u, 184451062u,
-1271099822u, 1319179857u, 3274963209u, 4172272710u,
-3388797445u,
-2965973320u,
-3793110097u, 3327241723u, 2991804005u, 1199544355u,
-771553759u, 2031749842u, 2596517372u, 1199888213u,
-858347951u,
-3340178832u,
-2903875412u, 763490382u, 76949161u, 2056544406u,
-1145227689u, 998233136u, 2354530024u, 427713587u,
-3537837347u,
-604661755u,
-923986833u, 1023730418u, 798294227u, 432557449u,
-801802449u, 1861313429u, 3899128441u, 4068407979u,
-2352677083u,
-3783539925u,
-10731973u, 3390767975u, 3949540249u, 1920121661u,
-3248580201u, 641956426u, 2104847395u, 604835744u,
-1491663404u,
-4255204651u,
-1520970746u, 2845653368u, 3247412938u, 3730629005u,
-855569514u, 3073294700u, 2429691698u, 3818342476u,
-3938869985u,
-2731201328u,
-2335202643u, 778117742u, 13298408u, 228780590u,
-2871715314u, 3253688653u, 4150999702u, 3846220408u,
-930808u,
-1397128726u,
-1964216488u, 2781092828u, 116285375u, 2271239476u,
-3724347554u, 2931203895u, 3893169206u, 1883912528u,
-2093892660u,
-3658787024u,
-3095016046u, 1094059199u, 3640239610u, 558564267u,
-2102812456u, 464734873u, 925262247u, 1609838036u,
-588364741u,
-1731409233u,
-1576165139u, 3933979268u, 375316394u, 4247099643u,
-3670508019u, 4080496835u, 2371248533u, 183762693u,
-2078935389u,
-2699810414u,
-1491815683u, 2999180789u, 1831158425u, 1603373553u,
-2006136905u, 3210230591u, 416748595u, 1536971415u,
-3271869367u,
-1266062739u,
-2138414557u, 3337114778u, 1634586826u, 36472629u,
-4482244u, 568009609u, 2721216780u, 4037289545u,
-2235138807u,
-1789351460u,
-4067539527u, 1323062829u, 3864620647u, 4192026301u,
-4278901241u, 1399025382u, 2826652805u, 1363860382u,
-1801770651u,
-1613381526u,
-1165249276u, 4046576622u, 2535596946u, 3260388176u,
-1078898578u, 2259750862u, 643387587u, 237144235u,
-4199571427u,
-3440917581u,
-3067939258u, 2018625455u, 1460528353u, 3138629939u,
-1666223528u, 3841139376u, 2528281125u, 885565193u,
-2609492686u,
-2517257479u,
-560864620u, 2261471820u, 3491559165u, 1329620416u,
-622383582u, 1759597655u, 2877873893u, 584692817u,
-1901728399u,
-2599000260u,
-3169771644u, 296332336u, 774719455u, 4175920823u,
-2287316070u, 4115615023u, 1073335619u, 4240292725u,
-1359158837u,
-1960974237u,
-3173724597u, 1619084286u, 2876340752u, 4065675347u,
-480741335u, 1237329941u, 701055566u, 3729009837u,
-1314736422u,
-4003180069u,
-3118519317u, 3035354420u, 3380357671u, 4020909015u,
-253958714u, 3545798863u, 3008185002u, 2624719888u,
-3219955575u,
-3060719376u,
-573101682u, 1580316843u, 2610493412u, 3490983536u,
-3601975611u, 851470366u, 635384901u, 3427048824u,
-1470002757u,
-3592460087u,
-2265226856u, 4124282457u, 2106385486u, 3334305617u,
-4208282753u, 3798749815u, 225396466u, 118791182u,
-2523395972u,
-194595464u,
-2563824631u, 2521301383u, 4224409406u, 468670274u,
-1761966400u, 1300908277u, 2570709228u, 1847901526u,
-1470099163u,
-2690466752u,
-1472536718u, 2399279735u, 4150607803u, 1775080054u,
-2082537685u, 4080034578u, 1256001880u, 392967725u,
-2055838940u,
-3349115816u,
-1745947263u, 2213925887u, 1836572741u, 2417722792u,
-636223705u, 2423329294u, 3960951311u, 1543591052u,
-1547914361u,
-2760945653u,
-3519014111u, 313543871u, 4119598884u, 1071003714u,
-2192556597u, 1526995535u, 3929839778u, 536388591u,
-3040873792u,
-3752682932u,
-1640614237u, 2432794021u, 385337403u, 2794410617u,
-2386128075u, 1055206708u, 1422747714u, 3759330929u,
-2533597496u,
-30440955u,
-1482899460u, 3350385050u, 616259409u, 3980103795u,
-1211364140u, 1040071544u, 594746920u, 1645973936u,
-2547331531u,
-1097726368u,
-700666526u, 2976247482u, 1144906608u, 996506677u,
-1997130756u, 800321417u, 1392942823u, 1601662248u,
-2079778663u,
-529512908u,
-2925120134u, 4106433085u, 630221833u, 2423086156u,
-1119859778u, 1726827981u, 1870859181u, 2559832707u,
-1792284257u,
-2059356387u,
-3572353364u, 3229407475u, 575621095u, 3221893291u,
-2372428048u, 2020123035u, 961449593u, 2243824063u,
-3803906611u,
-3735348189u,
-2981620804u, 4180681078u, 1555330629u, 230736535u,
-2075526640u, 749652975u, 713664372u, 2152096659u,
-2142067223u,
-3322302242u,
-1421646830u, 2092832615u, 1213735101u, 3192136753u,
-1106723940u, 3455398230u, 2541685524u, 2529956739u,
-3789430647u,
-1950084508u,
-2157395621u, 850457360u, 2758902426u, 2848030169u,
-6506379u, 1162213157u, 2981459221u, 272690871u,
-3059420255u,
-4242691285u,
-588065598u, 1206949936u, 3968214184u, 566348532u,
-126142880u, 1480567086u, 2959621988u, 2050218418u,
-2242731195u,
-3833514449u,
-1898070331u, 3687399477u, 3891859374u, 868185955u,
-2335308774u, 3676335246u, 3871121805u, 2189032743u,
-3275728647u,
-860492892u,
-1590764344u, 4130384758u, 262871548u, 3004764525u,
-2685542071u, 991231482u, 435122019u, 3031116998u,
-2898921700u,
-2917932604u,
-4238665148u, 2459072654u, 3444612545u, 4207731740u,
-1808564313u, 2798532269u, 3944553556u, 3926395409u,
-1633200670u,
-4138335224u,
-2524878605u, 4184292650u, 3563398268u, 4288943552u,
-3802121210u, 957502058u, 2410820887u, 4227117506u,
-4018625153u,
-4284329158u,
-530216712u, 2978986531u, 863452221u, 1910162118u,
-4088211378u, 4091971261u, 3150811451u, 4200871487u,
-3794038652u,
-3041564310u,
-2045287082u, 887805614u, 2889167251u, 4120352181u,
-1699912580u, 3478922097u, 3211994687u, 3136177842u,
-1500806861u,
-3211881347u,
-2147976385u, 3342722260u, 3359650541u, 4197378460u,
-781354073u, 1533623029u, 2204677828u, 3228172832u,
-3248592437u,
-3355841359u,
-560815159u, 1144951236u, 4027015711u, 2882625391u,
-339363613u, 2354572719u, 1769831876u, 4238589331u,
-1519732871u,
-2185834614u,
-1601096831u, 129709881u, 39655633u, 367604993u,
-1737681770u, 3259114599u, 2767070452u, 872365177u,
-1574125529u,
-3405020189u,
-4181346685u, 1134030380u, 403769171u, 2193351164u,
-1426232618u, 2885309450u, 3033612627u, 924948363u,
-935514094u,
-3202053329u,
-912294839u, 1618472324u, 4159158431u, 3744999487u,
-777064358u, 3974213124u, 1990246048u, 309725290u,
-2449849392u,
-1943692420u,
-2288635750u, 2433793635u, 2168904061u, 683315308u,
-3081493019u, 3477759434u, 3815496269u, 2823504699u,
-586945121u,
-3088963200u,
-3492287335u, 636875049u, 1111206944u, 2037346120u,
-1282050044u, 1409681512u, 1786128584u, 755810950u,
-2332676758u,
-2178142310u,
-957827166u, 1014983590u, 1888800725u, 3608595803u,
-3200072714u, 2534008478u, 659336139u, 1281728287u,
-4060560529u,
-2915575125u,
-3521503774u, 2926487340u, 1096297674u, 653489861u,
-2352326980u, 2561136777u, 1224141198u, 1250479629u,
-1297625391u,
-2409997371u,
-1942483722u, 2481835750u, 1394715707u, 1673070941u,
-2456039704u, 3980558014u, 3547934764u, 1882038812u,
-1078160498u,
-2488279087u,
-1848235245u, 1211914722u, 2264928765u, 2807773070u,
-270145554u, 583747883u, 3826009010u, 2996618216u,
-425727157u,
-992726957u,
-3384462280u, 726650661u, 1955043265u, 1923879512u,
-1854693773u, 2987614542u, 2660044993u, 2457260810u,
-426299370u,
-2671892900u,
-1827308087u, 3083953443u, 1791749638u, 3265087416u,
-2119752201u, 2547122538u, 3990783236u, 1912713468u,
-3688865211u,
-1815780016u,
-303699291u, 2416763742u, 2690891610u, 1535193548u,
-1107803989u, 1504143133u, 2235270371u, 2545884083u,
-2276278682u,
-411724404u,
-3416925704u, 2565792091u, 3383911757u, 546058824u,
-3374654444u, 2364630415u, 2693473470u, 2622125691u,
-261864817u,
-55682470u,
-857617568u, 141304067u, 1885488541u, 155368182u,
-1281949051u, 3384522408u, 3254816901u, 1959816782u,
-1452224057u,
-2830267691u,
-3709231247u, 58988202u, 4218130458u, 2984061349u,
-1888707848u, 4223605071u, 4241442486u, 375269213u,
-3208327038u,
-2199916493u,
-550337252u, 2855061437u, 276088636u, 114362204u,
-2321163647u, 2127813633u, 3289403024u, 2686973202u,
-2717376797u,
-3593428039u,
-3648831666u, 890925902u, 3289404818u, 3289516821u,
-4248913260u, 1858916580u, 3303932308u, 1752797086u,
-1628149686u,
-3245893605u,
-1568537311u, 2844194502u, 1593855770u, 2408174109u,
-124797514u, 2085649512u, 3188565660u, 2264996276u,
-1926696513u,
-3053957740u,
-2238806881u, 2189050973u, 203685243u, 379855590u,
-3920271562u, 1058600179u, 3698061923u, 4255106849u,
-608401664u,
-1598041932u,
-3318266418u, 2535016555u, 852760884u, 1918098822u,
-2200437599u, 1532285043u, 3425662132u, 3561293706u,
-2231633206u,
-4108785088u,
-3359152801u, 173534780u, 208383607u, 2862988169u,
-2406642243u, 426814583u, 2777335795u, 3322703596u,
-954190623u,
-615093090u,
-4179102978u, 2452847930u, 100239619u, 42471741u,
-818352432u, 2190624654u, 504379960u, 3631619975u,
-633412456u,
-1018421783u,
-842645419u, 711808707u, 3424580813u, 2132457941u,
-1158335882u, 3567952480u, 2302183699u, 1145788151u,
-3474264138u,
-3105085243u,
-3115506027u, 2783713015u, 3871785309u, 539583269u,
-1400252405u, 3857849984u, 4231186588u, 1278653799u,
-1760227022u,
-761044088u,
-3838185417u, 2439542532u, 585283357u, 2055995220u,
-937117124u, 3831944855u, 1823586038u, 3287917855u,
-485082427u,
-3209172809u,
-1984570176u, 2818337297u, 2691869057u, 3790476953u,
-839035557u, 3203129010u, 669981176u, 4121157385u,
-3519870450u,
-3792633352u,
-3017650322u, 1603459507u, 4225677666u, 376555451u,
-473780127u, 2018786277u, 3299822439u, 1010254499u,
-2383887565u,
-3155009499u,
-3108110655u, 2641738274u, 3684908622u, 1606463047u,
-3311068174u, 52708046u, 754181455u, 1018079176u,
-3915670272u,
-3366999425u,
-1012880204u, 1339439715u, 466437962u, 1402662350u,
-2504046911u, 736323938u, 2037800124u, 1725908589u,
-716341840u,
-1750123474u,
-3366342464u, 1743666195u, 2975303189u, 3821364027u,
-3253707772u, 3635548377u, 3840413796u, 1955642085u,
-1018315169u,
-1258092848u,
-2095540656u, 1076256607u, 117289557u, 1311658655u,
-2118301000u, 68721550u, 2886814107u, 2712432819u,
-4201862886u,
-753807148u,
-1940229047u, 731347296u, 1068901393u, 3873155894u,
-2852787666u, 1973464853u, 79735652u, 3966380587u,
-3245740712u,
-2525773438u,
-734938109u, 3045656416u, 3335746354u, 4099732691u,
-1911896517u, 1697006473u, 1145487066u, 1605663299u,
-3053606724u,
-2386289465u,
-3821211369u, 1006215345u, 1256304829u, 1053001668u,
-1289194958u, 118761054u, 1853688730u, 2803418011u,
-188650809u,
-3763686458u,
-1006829556u, 2961984133u, 3390525025u, 2061199893u,
-141792681u, 2439893463u, 2652982650u, 1804942682u,
-1546510005u,
-1246961405u,
-2407577046u, 565772575u, 3751844810u, 2943166103u,
-3750052451u, 3022527280u, 25162928u, 397381043u,
-1818337632u,
-3447363730u,
-3936437150u, 2569420703u, 2215592390u, 2171555672u,
-3665571006u, 4021712412u, 2939158353u, 4057813172u,
-1823237318u,
-103999245u,
-3251978010u, 3591914940u, 3582495283u, 2519035265u,
-3905726135u, 3180393349u, 2743117123u, 55247368u,
-3325286701u,
-705195946u,
-1857526853u, 1480518550u, 3809990433u, 1398189338u,
-3126362926u, 3959531492u, 1503658285u, 1977847740u,
-3043964489u,
-2613086143u,
-1518119282u, 4238434900u, 3905746486u, 3064949667u,
-1028122931u, 3309119457u, 4071194920u, 3096098907u,
-4137180520u,
-494467959u,
-1231408687u, 1691606157u, 1793452569u, 2722196118u,
-3478603952u, 1059665738u, 2282032278u, 3990268388u,
-1719514651u,
-4248311578u,
-3799146721u, 898026304u, 3367808954u, 4162472815u,
-170495870u, 1308116609u, 3428285344u, 1714716475u,
-395576794u,
-4153638621u,
-2999745812u, 3483315953u, 304980828u, 595337120u,
-3486516729u, 2331563143u, 2583609459u, 1885928417u,
-3834283777u,
-979337825u,
-932057378u, 3124081189u, 1930356777u, 3865887996u,
-4178282217u, 4214219408u, 3669465884u, 1472413856u,
-3356866587u,
-1012769806u,
-3043639963u, 996996396u, 207308216u, 982967331u,
-2991319933u, 318066902u, 721489670u, 1249967713u,
-749240921u,
-591392325u,
-2379365192u, 2250868849u, 2163259329u, 143191325u,
-3778285606u, 982149096u, 3536906200u, 2244353244u,
-1443862317u,
-3161549210u,
-2183127464u, 2015409516u, 547003700u, 2032484282u,
-523677821u, 4275663308u, 3827205526u, 3903778273u,
-2444530525u,
-2543645801u,
-1173958423u, 784740616u, 2878693675u, 3127696736u,
-3832037316u, 3161002398u, 4084166400u, 4213346853u,
-223390424u,
-4273380883u,
-2130315482u, 3429606032u, 3367732613u, 1912357694u,
-422632590u, 1266957023u, 3437535648u, 736404240u,
-2281709372u,
-415859912u,
-212948797u, 351612650u, 3920561440u, 112963586u,
-2230727543u, 2851076612u, 1990662634u, 2264296857u,
-3131463650u,
-2704034623u,
-3541637839u, 2954232792u, 533986918u, 4158757533u,
-65174248u, 4232639593u, 865906667u, 1948225652u,
-779656112u,
-3873989249u,
-2372984749u, 2346988193u, 1104345713u, 1165654138u,
-4045762610u, 3588205178u, 461363991u, 1111215752u,
-1389675192u,
-2404325151u,
-2152228101u, 3808973622u, 1901235912u, 3458690696u,
-314513238u, 2539459143u, 2847998873u, 952026138u,
-2325705328u,
-407844712u,
-3727960715u, 2996448351u, 2374336760u, 3138756390u,
-2600015243u, 539980418u, 1876285352u, 1670330799u,
-1709360377u,
-2868531654u,
-494777964u, 2773053597u, 599486162u, 3962209577u,
-1871328846u, 2171933018u, 110279472u, 384074780u,
-4147021936u,
-2333589647u,
-4251778066u, 40493468u, 3099342316u, 4108779767u,
-2812424588u, 954542332u, 2040682331u, 2251152306u,
-45915516u,
-259525626u,
-1045384743u, 4134656562u, 749389261u, 874399445u,
-616549904u, 2200447504u, 436024539u, 78972290u,
-3210485762u,
-1907985531u,
-3013721395u, 4214533685u, 4198804243u, 534879265u,
-1517190881u, 3756787754u, 1152563554u, 1718750948u,
-777737463u,
-1402478860u,
-1824562784u, 1879401449u, 3515818786u, 513165201u,
-1423491227u, 2103067918u, 2291777410u, 1097943000u,
-};
-
-// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
-bool Test(int offset, int len = 0) {
-#undef Check
-#undef IsAlive
-
-#define Check(x) do { \
- const uint32_t actual = (x), e = expected[index++]; \
- bool ok = actual == e; \
- if (!ok) { \
- cerr << "expected " << hex << e << " but got " << actual << endl; \
- ++errors; \
- } \
- assert(ok); \
-} while (0)
-
-#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
-
- // After the following line is where the uses of "Check" and such will go.
- static int index = 0;
+ }
+ }
+}
+
+int NoteErrors() {
+#define NUM_SELF_TESTS 9
+ /* if (++completed_self_tests == NUM_SELF_TESTS)
+ std::exit(errors > 0); */
+ return errors;
+}
+
+template <typename T> inline bool IsNonZero(T x) {
+ return x != 0;
+}
+
+template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
+ return x != Uint128(0, 0);
+}
+
+#endif // FARMHASH_SELF_TEST_GUARD
+
+namespace farmhashccTest {
+
+uint32_t CreateSeed(int offset, int salt) {
+ uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h += static_cast<uint32_t>(offset & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ return h;
+}
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+#define SEED CreateSeed(offset, -1)
+#define SEED0 CreateSeed(offset, 0)
+#define SEED1 CreateSeed(offset, 1)
+
+#undef TESTING
+#define TESTING 1
+#if TESTING
+uint32_t expected[] = {
+4223616069u,
+3696677242u,
+1039179260u, 1690343979u, 1018511555u, 2464489001u,
+20368522u, 2663783964u, 175201532u, 1619210592u,
+4081014168u,
+2576519988u,
+3285042206u, 502478099u, 739479538u, 1500332790u,
+13754768u, 3789353455u, 3473868058u, 1909255088u,
+2212771159u,
+1112731063u,
+826915357u, 2893489933u, 118369799u, 1848668220u,
+1308219822u, 249416982u, 64306364u, 4221800195u,
+1020067935u,
+3955445564u,
+563346294u, 550236731u, 2339016688u, 1826259714u,
+3872358639u, 2295981050u, 1870005390u, 4015628802u,
+1451961420u,
+653440099u,
+1292493871u, 164377749u, 1717712483u, 463414587u,
+3924343675u, 1050492084u, 3566618804u, 2046983362u,
+31917516u,
+2957164615u,
+230718965u, 999595115u, 3534822176u, 2175709186u,
+965707431u, 441796222u, 2481718051u, 1827777486u,
+2590087362u,
+3879448744u,
+3515079898u, 1601433082u, 982764532u, 254808716u,
+1293372530u, 4205605817u, 947001462u, 1138890052u,
+176305566u,
+2447367541u,
+2973802542u, 4123621138u, 3083865840u, 1706367795u,
+792114347u, 2880110657u, 440613768u, 195054868u,
+1359016305u,
+3363804638u,
+649488537u, 1624045597u, 1441938215u, 3147758996u,
+3199173578u, 2597283203u, 2191333609u, 3763129144u,
+1117290165u,
+1062549743u,
+2565615889u, 1046361554u, 1581968261u, 1058773671u,
+1123053168u, 3807622275u, 1486749916u, 3900816089u,
+2437877004u,
+1894455839u,
+1912520953u, 1914997013u, 561048608u, 1643267444u,
+3671572006u, 194811086u, 1468911468u, 2179206286u,
+673206794u,
+3486923651u,
+3741426466u, 3292160512u, 697001377u, 1900763774u,
+3726097344u, 629282039u, 3578723715u, 2868028489u,
+3269862919u,
+2303349487u,
+3643953525u, 2307255916u, 849996280u, 732080434u,
+909961480u, 3542445214u, 2628347095u, 4236856917u,
+1380660650u,
+2631821908u,
+2007289004u, 3509705198u, 3788541675u, 789457322u,
+3090670546u, 638977894u, 3503881773u, 947102987u,
+1525325287u,
+1816697045u,
+2706647405u, 288763142u, 3505438495u, 481308609u,
+2882636782u, 3745162621u, 3503467033u, 428247823u,
+176408838u,
+333551502u,
+1001068721u, 1681483651u, 75380831u, 4191469679u,
+3627361839u, 2736617386u, 3120737438u, 1297502456u,
+864896482u,
+85674920u,
+2886047255u, 4119881331u, 2496990525u, 3442502055u,
+1806582817u, 3186345024u, 4099591287u, 2560171465u,
+3489229104u,
+3065015872u,
+2755089808u, 3098442882u, 378524719u, 2664097023u,
+1771960725u, 2901182183u, 55258521u, 1266621443u,
+581644891u,
+37790450u,
+1800731704u, 3601350920u, 53428754u, 2759476837u,
+3391093099u, 1496510311u, 2511119507u, 2636877410u,
+631613207u,
+1573846064u,
+260484875u, 1088212603u, 2369525206u, 322522428u,
+3191396600u, 2076543340u, 1552496658u, 2739811558u,
+3867875546u,
+2051584261u,
+2126250818u, 901517871u, 3651631165u, 1323139145u,
+1521111765u, 477802997u, 3508559783u, 383954241u,
+3804516756u,
+4250206331u,
+2655954340u, 2484996477u, 1417544845u, 1520282298u,
+2745204366u, 2869345147u, 1872738335u, 2592877343u,
+1619744564u,
+1804962124u,
+3458679890u, 423948620u, 273645618u, 4187865426u,
+376057175u, 2943431463u, 3581950599u, 1035398331u,
+1088213445u,
+861988903u,
+1323370244u, 777069428u, 506235917u, 369720851u,
+2789995854u, 230915180u, 1505086948u, 940361236u,
+3727873235u,
+1159167499u,
+1860302871u, 3456858862u, 3923555152u, 2131072714u,
+2910461068u, 3671950363u, 2010742682u, 4088068851u,
+3616470388u,
+2087714788u,
+221675509u, 1230154072u, 3450704646u, 1463226695u,
+1998357699u, 266026801u, 619568740u, 3560427266u,
+4148162586u,
+3150417316u,
+1356375822u, 2056097622u, 627905802u, 3881675638u,
+2309738053u, 971916703u, 3447805361u, 1673575328u,
+673084328u,
+3317849401u,
+2836362782u, 2377208890u, 3275350588u, 158350552u,
+2553241779u, 2497264995u, 3262882649u, 3897937187u,
+1598963653u,
+3068514414u,
+601541505u, 374517071u, 3380795976u, 235752573u,
+284670003u, 2990192160u, 904937105u, 2306579150u,
+2117362589u,
+1635274830u,
+3355572906u, 170799903u, 1226685528u, 664567688u,
+413219134u, 878324258u, 4026159448u, 3620649295u,
+1823625377u,
+3175888439u,
+1759344347u, 2640637095u, 3549558u, 2192984935u,
+978623493u, 804017880u, 3877562323u, 3843116489u,
+1641748342u,
+1853539444u,
+3001178468u, 3443560727u, 2685426077u, 1653064722u,
+349231508u, 2726789654u, 3136215581u, 768402830u,
+269384321u,
+531936536u,
+2592883487u, 1343156334u, 3628619802u, 1477143570u,
+4269458419u, 3285611028u, 959104925u, 2712290710u,
+3480237248u,
+835796333u,
+2020636251u, 1191914589u, 126521603u, 4288023938u,
+3731699932u, 2136758855u, 985780142u, 193807575u,
+1850544433u,
+653947619u,
+3929316796u, 381871169u, 950486363u, 1787262279u,
+360480382u, 1800636585u, 1039258631u, 3682073259u,
+1262819303u,
+1786000319u,
+1570627191u, 893065837u, 301304916u, 1478469809u,
+623018819u, 2742232545u, 2058913014u, 1706060059u,
+2421125401u,
+1315829592u,
+3208766775u, 1805586156u, 575853086u, 3085025513u,
+4010908260u, 2344058256u, 3814407434u, 1458485673u,
+2474514786u,
+3581895658u,
+2710719679u, 190812706u, 2135454262u, 2620080728u,
+3400757986u, 1669914857u, 1559978393u, 1629811331u,
+3096616493u,
+1391424435u,
+4158376003u, 1015657076u, 794783832u, 479952178u,
+1150290207u, 2497437906u, 231815090u, 755078067u,
+3832053281u,
+63649475u,
+2415822606u, 4105027719u, 1706992318u, 1106598740u,
+3941945667u, 1271300761u, 505882259u, 760186809u,
+2657183368u,
+1925422058u,
+1039773764u, 880219458u, 4275949176u, 1556833823u,
+925882132u, 4216310340u, 757497522u, 461833914u,
+3884002070u,
+2790957660u,
+2100050089u, 651959176u, 1380301291u, 1289124125u,
+452314403u, 226156280u, 3306924715u, 1750807758u,
+2290180542u,
+1953760569u,
+2253069096u, 3960924806u, 1786291620u, 60736185u,
+2569018293u, 3870479674u, 2247005661u, 2239850953u,
+4261808536u,
+3282975782u,
+780945879u, 3349849383u, 1579362556u, 2265045884u,
+905088740u, 725212379u, 3156479246u, 2501620391u,
+3062836263u,
+4070422690u,
+996797869u, 4082582315u, 976105756u, 303983602u,
+1862104804u, 3864508254u, 3383979677u, 2835500286u,
+2798364010u,
+519359476u,
+3447342725u, 194373889u, 3313466630u, 232399983u,
+2841787856u, 1672751454u, 3345183154u, 1805381384u,
+2226129336u,
+2847829057u,
+2350774567u, 2838540121u, 2757948482u, 1017002062u,
+2329150951u, 2171488196u, 3668619047u, 3874977844u,
+3287966998u,
+262346753u,
+2493054715u, 2298644430u, 2926101182u, 1528457638u,
+598656233u, 2615845874u, 989110727u, 820441411u,
+253617372u,
+2201077208u,
+2047569338u, 3114356329u, 3335563734u, 2967673540u,
+768438341u, 1417708203u, 3873718246u, 1538441843u,
+1279167650u,
+3917966776u,
+2218481734u, 1015935150u, 1957845042u, 1318150213u,
+3146423971u, 4218994877u, 1162470863u, 1519718292u,
+2594658906u,
+665870414u,
+3430347817u, 3933868731u, 1597041394u, 3138684682u,
+3398212027u, 1064647658u, 1576321132u, 14792918u,
+224938029u,
+3706456050u,
+847274786u, 2645698692u, 1743374687u, 2343133224u,
+3066596790u, 2857270120u, 200596308u, 452055528u,
+2319312082u,
+3488655402u,
+4146865894u, 608206438u, 2699777051u, 3687240713u,
+327957508u, 3664730153u, 568134564u, 2993484554u,
+4159860363u,
+4274533921u,
+1079994063u, 2360220210u, 3609597760u, 3639708902u,
+2836180437u, 1069910270u, 1892427666u, 1874729790u,
+1267712826u,
+121886940u,
+3572289214u, 2475945610u, 783779452u, 588827737u,
+1531395014u, 2085084212u, 2219189792u, 3981444548u,
+2218885336u,
+1691622694u,
+2053232885u, 1386558530u, 2182946189u, 2365247285u,
+1871081313u, 2935751853u, 38413723u, 543465863u,
+900691890u,
+2899905665u,
+575120562u, 93133904u, 457154948u, 2983705792u,
+4232229200u, 2038565963u, 614693984u, 3405328302u,
+4083090010u,
+2088004171u,
+244031209u, 1861889294u, 2417109253u, 3299562328u,
+4158642443u, 4199064449u, 3161611046u, 885015950u,
+3677904099u,
+2969861785u,
+772348805u, 1712263832u, 3219357614u, 484271305u,
+3645706114u, 2059620251u, 409557488u, 2278896731u,
+224475749u,
+3523022952u,
+2057140088u, 449131785u, 1149879244u, 4255363996u,
+3602720135u, 1690010854u, 2503998822u, 2750828466u,
+3340671802u,
+1447583863u,
+2649684943u, 2764747249u, 3046070595u, 3441726138u,
+3840332559u, 3156747501u, 1288666680u, 1472744459u,
+3452391933u,
+1617542784u,
+217869690u, 3718469527u, 348639731u, 590532355u,
+43789787u, 22606314u, 1621559290u, 2231743261u,
+2234620879u,
+544748955u,
+3169387920u, 203343594u, 3272552527u, 1078282365u,
+809576321u, 854207584u, 3625491053u, 1193737267u,
+1628966807u,
+2661421060u,
+2433442061u, 3886639039u, 2149304418u, 303000565u,
+1432830882u, 137378235u, 1135974068u, 318705754u,
+2491227157u,
+2627534472u,
+3520352233u, 2488397682u, 3969194920u, 3843962181u,
+2135981459u, 2611933220u, 799460731u, 2300968851u,
+3412851628u,
+3070914013u,
+3555224260u, 4125937572u, 240359903u, 722496673u,
+2061023600u, 3843919221u, 2759960043u, 1191155322u,
+1504041490u,
+3735253656u,
+1773124736u, 101110011u, 1627699578u, 2645634551u,
+263603947u, 1388368439u, 677146538u, 1644201982u,
+2625699644u,
+2403862553u,
+2426069017u, 3613511705u, 915141802u, 2981654265u,
+3474818167u, 2611101773u, 627891434u, 762754924u,
+2143021902u,
+51067670u,
+4017746573u, 2269879853u, 3037857950u, 2388899692u,
+582729171u, 1886116725u, 2281219772u, 264704948u,
+3509984037u,
+4078683368u,
+2172959411u, 1807195632u, 3357092302u, 2253764928u,
+2320369390u, 3076335959u, 2623583210u, 168378015u,
+1435562650u,
+1100977467u,
+3160490319u, 2550328495u, 2396855930u, 1347823908u,
+1617990918u, 3849653099u, 3224111576u, 1681539821u,
+4171542880u,
+552200045u,
+3562947778u, 1676237880u, 3747732307u, 2453332913u,
+865530667u, 3566636849u, 3485502777u, 336779723u,
+2535942410u,
+1685000184u,
+820545711u, 1893670486u, 1273910461u, 1193758569u,
+970365241u, 381205962u, 3612810852u, 1160577445u,
+541488143u,
+4005031080u,
+2333965236u, 2419855455u, 3484533538u, 3073937876u,
+908466956u, 661391539u, 2342122412u, 1467049112u,
+1785800827u,
+135343033u,
+139643209u, 2438375667u, 974654058u, 3216478230u,
+3807620420u, 779043363u, 2812846449u, 333254784u,
+1025244024u,
+2242303095u,
+2476683742u, 350018683u, 174652916u, 933097576u,
+826905896u, 559603581u, 2777181260u, 164915169u,
+4070353203u,
+1459055748u,
+297303985u, 3103837241u, 3812514233u, 232265137u,
+2032819099u, 1523091376u, 3531238208u, 1403510182u,
+2886832080u,
+2599705941u,
+2789695716u, 68437968u, 3823813791u, 1040994569u,
+3024194990u, 2461740520u, 3735391266u, 2042207153u,
+2461678616u,
+3519231840u,
+1344224923u, 411442756u, 1179779351u, 7661528u,
+778352196u, 3288808867u, 589356197u, 2627504511u,
+3374744599u,
+3312172905u,
+357423007u, 3539567796u, 4044452215u, 1445118403u,
+2937983820u, 184089910u, 346201845u, 2427295202u,
+1345448010u,
+2884434843u,
+3085001879u, 2640105409u, 315310640u, 3530289798u,
+3362974764u, 963602652u, 75228477u, 3509381180u,
+4012777756u,
+2380345941u,
+1073137836u, 2083960378u, 1220315185u, 3628720934u,
+3508867818u, 67148343u, 3558085158u, 1753943368u,
+863309561u,
+2844713625u,
+441921850u, 854732254u, 816793316u, 2555428747u,
+3440623414u, 1707304366u, 3189874375u, 1623229221u,
+1220335976u,
+806745430u,
+3909262947u, 1680369031u, 2926179486u, 3410391660u,
+3991630434u, 2876458763u, 1179167079u, 536360759u,
+1592117159u,
+1514343977u,
+1032622306u, 2057494855u, 784938958u, 178402996u,
+1152907972u, 2326185495u, 2939973666u, 4181120253u,
+552831733u,
+664251856u,
+1297139539u, 1969357631u, 1474065957u, 3055419017u,
+3395829380u, 3316562752u, 2168409017u, 614624786u,
+3585854336u,
+668291094u,
+1162889217u, 3773171307u, 2263271126u, 355089668u,
+3195850578u, 3396793277u, 3519870267u, 527857605u,
+3972392320u,
+2224315010u,
+4047225561u, 3271434798u, 3192704713u, 2798505213u,
+3932215896u, 3792924012u, 3796843756u, 453872975u,
+4050552799u,
+1056432676u,
+928166947u, 121311642u, 930989547u, 2087070683u,
+1288978057u, 1556325239u, 1812435626u, 1682385724u,
+1214364933u,
+904760776u,
+3957045528u, 3949822847u, 2411065880u, 3716420732u,
+3424837835u, 3833550693u, 1799375326u, 2012368921u,
+2768764136u,
+1786111037u,
+4055479315u, 3751639533u, 2808224623u, 3492656387u,
+1306824780u, 2624000170u, 3134795218u, 1778409297u,
+3900821801u,
+593336325u,
+2772069220u, 2980873673u, 3574497158u, 3994780459u,
+4246519854u, 3482758570u, 4228015183u, 33101083u,
+1769887734u,
+4158035314u,
+3690638998u, 1119035482u, 4134969651u, 2483207353u,
+3932823321u, 285829887u, 3485140138u, 1304815138u,
+995608264u,
+3133997465u,
+1195477617u, 2147693728u, 3506673112u, 4234467492u,
+1183174337u, 1395340482u, 769199343u, 193262308u,
+2798920256u,
+3827889422u,
+3399695609u, 3036045724u, 2999477386u, 3567001759u,
+2682864314u, 1414023907u, 3699872975u, 3369870701u,
+2662284872u,
+2179640019u,
+2485080099u, 3234415609u, 3755915606u, 1339453220u,
+1567403399u, 2076272391u, 293946298u, 3861962750u,
+1291949822u,
+2916864995u,
+132642326u, 2215117062u, 2205863575u, 2488805750u,
+405632860u, 3248129390u, 2952606864u, 896734759u,
+2047417173u,
+3865951392u,
+657296855u, 1328547532u, 3966511825u, 3959682388u,
+4171801020u, 2981416957u, 1868896247u, 790081075u,
+3143666398u,
+2950766549u,
+2065854887u, 2737081890u, 995061774u, 1510712611u,
+2865954809u, 565044286u, 1565631102u, 1500654931u,
+494822108u,
+2803515503u,
+1058154996u, 3506280187u, 856885925u, 4204610546u,
+800905649u, 1130711562u, 558146282u, 2053400666u,
+449794061u,
+2643520245u,
+2101248725u, 3123292429u, 3583524041u, 983372394u,
+1587743780u, 672870813u, 444833475u, 100741452u,
+366232251u,
+1717951248u,
+524144122u, 1362432726u, 1304947719u, 674306020u,
+405665887u, 4081931036u, 1580408204u, 2343242778u,
+3901654006u,
+2627173567u,
+3015148205u, 814686701u, 1327920712u, 1346494176u,
+2468632605u, 2259795544u, 2519278184u, 2129281928u,
+2860266380u,
+4001619412u,
+1154910973u, 2841022216u, 1199925485u, 1372200293u,
+2713179055u, 3609776550u, 2896463880u, 1056406892u,
+177413841u,
+40180172u,
+3274788406u, 660921784u, 1686225028u, 4003382965u,
+2532691887u, 4256809101u, 1186018983u, 667359096u,
+2375266493u,
+2760222015u,
+745187078u, 312264012u, 396822261u, 2588536966u,
+2026998998u, 1766454365u, 3218807676u, 3915487497u,
+2630550356u,
+4130063378u,
+4231937074u, 752212123u, 3085144349u, 3267186363u,
+4103872100u, 4193207863u, 1306401710u, 3014853131u,
+1067760598u,
+2306188342u,
+2437881506u, 4258185052u, 2506507580u, 130876929u,
+1076894205u, 4106981702u, 2799540844u, 945747327u,
+1436722291u,
+2499772225u,
+2571537041u, 2038830635u, 2066826058u, 2892892912u,
+524875858u, 3392572161u, 2869992096u, 1308273341u,
+923668994u,
+1980407857u,
+2275009652u, 240598096u, 2658376530u, 3505603048u,
+1022603789u, 582423424u, 846379327u, 4092636095u,
+4177298326u,
+1004173023u,
+2154027018u, 2993634669u, 1098364089u, 3035642175u,
+1335688126u, 1376393415u, 1252369770u, 3815033328u,
+1999309358u,
+1234054757u,
+1388595255u, 2859334775u, 366532860u, 3453410395u,
+4226967708u, 1321729870u, 2078463405u, 156766592u,
+3157683394u,
+3549293384u,
+3348214547u, 2879648344u, 1144813399u, 2758966254u,
+647753581u, 813615926u, 2035441590u, 1961053117u,
+600168686u,
+2192833387u,
+3156481401u, 3627320321u, 383550248u, 81209584u,
+2339331745u, 1284116690u, 1980144976u, 2955724163u,
+789301728u,
+3842040415u,
+1115881490u, 965249078u, 4098663322u, 1870257033u,
+2923150701u, 4217108433u, 183816559u, 2104089285u,
+2640095343u,
+3173757052u,
+927847464u, 2383114981u, 4287174363u, 1886129652u,
+70635161u, 1182924521u, 1121440038u, 4246220730u,
+3890583049u,
+975913757u,
+2436253031u, 1074894869u, 1301280627u, 992471939u,
+735658128u, 244441856u, 1541612456u, 3457776165u,
+3503534059u,
+1931651133u,
+349142786u, 3669028584u, 1828812038u, 99128389u,
+1364272849u, 1963678455u, 3971963311u, 2316950886u,
+1308901796u,
+2789591580u,
+1460494965u, 2380227479u, 1577190651u, 1755822080u,
+2911014607u, 859387544u, 13023113u, 2319243370u,
+2522582211u,
+2299110490u,
+3342378874u, 2589323490u, 1884430765u, 3739058655u,
+2419330954u, 355389916u, 273950915u, 3670136553u,
+410946824u,
+3174041420u,
+2609010298u, 3059091350u, 2300275014u, 725729828u,
+2548380995u, 1738849964u, 1257081412u, 79430455u,
+810321297u,
+3246190593u,
+1007937684u, 912115394u, 40880059u, 3450073327u,
+4289832174u, 2253485111u, 1065639151u, 2953189309u,
+124779113u,
+654299738u,
+115760833u, 1250932069u, 884995826u, 3998908281u,
+1382882981u, 1134187162u, 3202324501u, 487502928u,
+3032756345u,
+4057517628u,
+933197381u, 2319223127u, 2044528655u, 2554572663u,
+4049450620u, 1620812836u, 2832905391u, 2273005481u,
+1913090121u,
+1055456023u,
+510593296u, 3285343192u, 2912822536u, 1645225063u,
+638418430u, 452701300u, 1025483165u, 1639370512u,
+167948643u,
+2809842730u,
+2983135664u, 407521332u, 1543756616u, 3949773145u,
+4283462892u, 659962275u, 3878013463u, 1000748756u,
+4053212051u,
+4099239406u,
+3467581965u, 354635541u, 21301844u, 3831212473u,
+3189450571u, 2264401966u, 4096484849u, 1736448515u,
+3976926096u,
+3727194724u,
+2243487039u, 585209095u, 3143046007u, 969558123u,
+3037113502u, 3594170243u, 2835860223u, 3775493975u,
+2787220812u,
+2274252217u,
+2915380701u, 3077533278u, 1252871826u, 1519790952u,
+205297661u, 2950557658u, 3956882191u, 2724439401u,
+3694608025u,
+124028038u,
+216019153u, 1533010676u, 2259986336u, 2014061617u,
+2068617849u, 3078123052u, 2692046098u, 1582812948u,
+396916232u,
+1470894001u,
+1694309312u, 300268215u, 1553892743u, 671176040u,
+1544988994u, 2793402821u, 4194972569u, 2296476154u,
+748354332u,
+3491325898u,
+4261053291u, 1104998242u, 797816835u, 243564059u,
+2197717393u, 299029458u, 1675252188u, 3139770041u,
+583018574u,
+2532106100u,
+2099391658u, 3760526730u, 3422719327u, 3556917689u,
+2374009285u, 2130865894u, 3710563151u, 1437538307u,
+3938030842u,
+2006930694u,
+2151243336u, 1939741287u, 1957068175u, 2135147479u,
+649553342u, 1713643042u, 4188696599u, 1698739939u,
+3549427584u,
+1016382174u,
+322644378u, 2476164549u, 2037263020u, 88036019u,
+2548960923u, 539867919u, 2871157727u, 4031659929u,
+754087252u,
+972656559u,
+4246379429u, 3877308578u, 2059459630u, 3614934323u,
+1410565271u, 2102980459u, 215395636u, 1083393481u,
+3775523015u,
+2062750105u,
+2475645882u, 3041186774u, 3534315423u, 758607219u,
+1686100614u, 180500983u, 1155581185u, 1476664671u,
+2918661695u,
+3812731350u,
+4003853737u, 4148884881u, 1468469436u, 3278880418u,
+1045838071u, 1049161262u, 360450415u, 3158065524u,
+814443735u,
+3391401707u,
+729968410u, 738771593u, 3662738792u, 1672830580u,
+4199496163u, 188487238u, 219098233u, 2141731267u,
+3890250614u,
+2988780375u,
+4026279523u, 3489429375u, 2468433807u, 1178270701u,
+2685094218u, 2716621497u, 3718335529u, 2273344755u,
+701110882u,
+1925717409u,
+1515176562u, 2325460593u, 3954798930u, 784566105u,
+3769422266u, 1641530321u, 2703876862u, 2907480267u,
+1828076455u,
+1805635221u,
+3883381245u, 1476756210u, 2072514392u, 3658557081u,
+2003610746u, 2556845550u, 729594004u, 3303898266u,
+1968227254u,
+423204951u,
+231828688u, 4223697811u, 698619045u, 3636824418u,
+2738779239u, 2333529003u, 2833158642u, 580285428u,
+3038148234u,
+1012378004u,
+1113647298u, 1424593483u, 4053247723u, 1167152941u,
+2677383578u, 3419485379u, 2135673840u, 440478166u,
+1682229112u,
+3226724137u,
+1217439806u, 3828726923u, 3636576271u, 3467643156u,
+2005614908u, 2655346461u, 2345488441u, 1027557096u,
+3594084220u,
+1372306343u,
+2342583762u, 4291342905u, 4094931814u, 3254771759u,
+821978248u, 2404930117u, 1143937655u, 3156949255u,
+3460606610u,
+449701786u,
+3474906110u, 1932585294u, 2283357584u, 1808481478u,
+3522851029u, 3040164731u, 1530172182u, 2950426149u,
+1402416557u,
+756419859u,
+4132576145u, 724994790u, 2852015871u, 2177908339u,
+899914731u, 139675671u, 1423281870u, 3198458070u,
+807581308u,
+2021611521u,
+1801452575u, 1425984297u, 2833835949u, 1536827865u,
+3902351840u, 164546042u, 1872840974u, 3986194780u,
+792156290u,
+3378681896u,
+941547959u, 3931328334u, 3661060482u, 2386420777u,
+3920146272u, 3458621279u, 3348500844u, 2269586542u,
+797371473u,
+3188953649u,
+80514771u, 2913333490u, 1246325623u, 3253846094u,
+1723906239u, 1606413555u, 587500718u, 1412413859u,
+2310046829u,
+2113313263u,
+3855635608u, 47271944u, 1112281934u, 3440228404u,
+2633519166u, 425094457u, 307659635u, 67338587u,
+2412987939u,
+2363930989u,
+2853008596u, 2844637339u, 922568813u, 130379293u,
+2825204405u, 2904442145u, 1176875333u, 1511685505u,
+599177514u,
+1872681372u,
+682394826u, 1888849790u, 3635304282u, 1761257265u,
+1571292431u, 355247075u, 1177210823u, 1691529530u,
+3629531121u,
+3760474006u,
+1129340625u, 868116266u, 3908237785u, 1942124366u,
+1266630014u, 3214841995u, 334023850u, 1110037019u,
+369650727u,
+1288666741u,
+70535706u, 20230114u, 4284225520u, 727856157u,
+293696779u, 1244943770u, 3976592462u, 560421917u,
+4171688499u,
+2438786950u,
+1218144639u, 3809125983u, 1302395746u, 534542359u,
+2121993015u, 2899519374u, 3192177626u, 1761707794u,
+3101683464u,
+1555403906u,
+3225675390u, 1875263768u, 4278894569u, 651707603u,
+2111591484u, 3802716028u, 2900262228u, 1181469202u,
+3254743797u,
+1822684466u,
+860641829u, 3046128268u, 1284833012u, 1125261608u,
+461384524u, 2331344566u, 1274400010u, 990498321u,
+3462536298u,
+3796842585u,
+2346607194u, 279495949u, 3951194590u, 3522664971u,
+3169688303u, 726831706u, 1123875117u, 1816166599u,
+3759808754u,
+2918558151u,
+3713203220u, 3369939267u, 466047109u, 384042536u,
+587271104u, 2191634696u, 2449929095u, 1157932232u,
+2084466674u,
+841370485u,
+3241372562u, 4277738486u, 2150836793u, 1173569449u,
+778768930u, 2594706485u, 3065269405u, 3019263663u,
+2660146610u,
+2789946230u,
+77056913u, 728174395u, 3647185904u, 804562358u,
+2697276483u, 881311175u, 1178696435u, 2059173891u,
+2308303791u,
+221481230u,
+50241451u, 3689414100u, 1969074761u, 2732071529u,
+1900890356u, 840789500u, 2100609300u, 985565597u,
+1220850414u,
+2456636259u,
+223607678u, 1016310244u, 1937434395u, 85717256u,
+275058190u, 3712011133u, 171916016u, 2389569096u,
+3679765802u,
+3575358777u,
+3481108261u, 3178286380u, 2489642395u, 2931039055u,
+3086601621u, 3079518902u, 3027718495u, 2506894644u,
+2976869602u,
+2134336365u,
+2420172217u, 918054427u, 661522682u, 1403791357u,
+3587174388u, 2623673551u, 1355661457u, 4159477684u,
+1109013587u,
+3112183488u,
+2217849279u, 3500291996u, 2419603731u, 2929886201u,
+3854470013u, 1358382103u, 1357666555u, 21053566u,
+2716621233u,
+3094836862u,
+3309729704u, 57086558u, 839187419u, 2757944838u,
+3651040558u, 3607536716u, 3691257732u, 2312878285u,
+1202511724u,
+183479927u,
+2509829803u, 109313218u, 478173887u, 2072044014u,
+190631406u, 2495604975u, 1010416260u, 3679857586u,
+726566957u,
+258500881u,
+1805873908u, 3081447051u, 2352101327u, 534922207u,
+1584552873u, 813470716u, 255914637u, 249169434u,
+3193498057u,
+1038802706u,
+2590158653u, 3147907290u, 663060128u, 1156177857u,
+634616100u, 312879189u, 1545020368u, 2054634247u,
+3271451914u,
+3438291534u,
+2181454946u, 3864535432u, 2398586877u, 896491075u,
+2810631478u, 2770357487u, 3372930052u, 898070638u,
+2051007323u,
+392959778u,
+36645539u, 3743556044u, 4134529680u, 4124451188u,
+566806297u, 2936523982u, 1304761965u, 537399498u,
+1940818842u,
+40862381u,
+36288410u, 3063605629u, 2826611650u, 3961972098u,
+1871578006u, 2392095486u, 1136931591u, 513864488u,
+173276451u,
+3039055682u,
+3543322032u, 1943592006u, 657217094u, 1751698246u,
+2969618445u, 456616022u, 900309519u, 113892716u,
+1126392103u,
+1235651045u,
+1882073852u, 2136610853u, 2353639710u, 2819956700u,
+3980083530u, 828773559u, 224069850u, 902434120u,
+2802008036u,
+94358995u,
+2777723394u, 2812641403u, 2525832595u, 4157388110u,
+4235563782u, 937800324u, 141690749u, 568062536u,
+550123849u,
+1330316521u,
+1949488696u, 2296431366u, 1958465262u, 3564751729u,
+3748252207u, 120455129u, 1607318832u, 2525729790u,
+2640987481u,
+2332096657u,
+1775969159u, 1555085077u, 2913525137u, 1347085183u,
+2376253113u, 3194050574u, 1806090610u, 678641356u,
+1499146713u,
+383849715u,
+3299835823u, 2284860330u, 2614269636u, 3913628844u,
+2761334210u, 1959484587u, 529797021u, 239966995u,
+3102194829u,
+3602307804u,
+1122192627u, 3577510006u, 164486066u, 1680137310u,
+1473396395u, 1467801424u, 903493660u, 1185943071u,
+2798556505u,
+2306744492u,
+3167201310u, 3577947177u, 3067592134u, 2905506289u,
+1210366329u, 204484056u, 2347778932u, 3862374472u,
+3277439508u,
+4187414621u,
+1646699310u, 621385800u, 3934869089u, 3975491588u,
+3580085916u, 1925674500u, 2436305348u, 3983301539u,
+2739439523u,
+3291507446u,
+3395637920u, 3753389171u, 2955202032u, 2654255623u,
+3771089254u, 2140443405u, 2779834738u, 3261942805u,
+3526889244u,
+1842009139u,
+4048484340u, 2106218403u, 2161244271u, 772152700u,
+1158647659u, 3776791619u, 3882186721u, 699525237u,
+2954670460u,
+1007105869u,
+3359152025u, 1146388699u, 1401550303u, 2326582541u,
+4181783540u, 1085644043u, 1942143795u, 1038368308u,
+1526153809u,
+4042547244u,
+1891441000u, 2573991874u, 1281441253u, 3635098284u,
+1980545715u, 825985487u, 3934748116u, 4228386979u,
+1480870944u,
+1042194545u,
+2397771642u, 2248490001u, 3817869868u, 878654626u,
+3785629484u, 1672470870u, 3229367873u, 1894538933u,
+1010692731u,
+1733824268u,
+656620328u, 3048283803u, 3353340056u, 2324965120u,
+4192585951u, 2284524675u, 3483884368u, 1510168293u,
+1554942691u,
+1309709396u,
+1241133168u, 3162179280u, 4046378054u, 3171681593u,
+1165297136u, 3496703563u, 150437903u, 1948622072u,
+1076332463u,
+2292479143u,
+1464229958u, 3479738093u, 2328067598u, 2334503110u,
+833324834u, 3981605747u, 3002629155u, 2854644186u,
+2832201336u,
+95796957u,
+3269249397u, 2358313329u, 3411860910u, 4283292480u,
+2802208697u, 1305947955u, 2156803420u, 1991340283u,
+189678024u,
+447602599u,
+1055411517u, 1531748363u, 1555852656u, 412402681u,
+3774988152u, 20597551u, 2925024131u, 1423989620u,
+3749428061u,
+1541439448u,
+112270416u, 1936224776u, 132162941u, 3772011507u,
+3814102518u, 1908807815u, 444154079u, 823765347u,
+3362275567u,
+3419047430u,
+2108287005u, 2315102125u, 658593738u, 3195094029u,
+3721937534u, 3176229204u, 3398835373u, 1271898712u,
+1142546577u,
+3185986817u,
+3562705803u, 2046119567u, 912990621u, 1829977672u,
+3459576979u, 1118045834u, 1369529376u, 3320601076u,
+3954988953u,
+4002467635u,
+3359456351u, 1314849568u, 1766750942u, 2998874853u,
+1181800239u, 707328036u, 3314954697u, 2066721120u,
+598194215u,
+1124451278u,
+3156679616u, 3742684743u, 2960199690u, 2683497915u,
+2566077529u, 937014607u, 102095219u, 4262922475u,
+3132264275u,
+1262099830u,
+862722905u, 2717653494u, 3245583534u, 3427209989u,
+3220278124u, 85457091u, 2222333500u, 3513997967u,
+3522324951u,
+2830855552u,
+2215004781u, 3482411840u, 4227160614u, 2030964411u,
+1741393851u, 2643723748u, 942813508u, 403442675u,
+3112048748u,
+530556423u,
+3817755244u, 3543286628u, 2247276090u, 1532920842u,
+4101962711u, 1446540991u, 3297821473u, 1861255389u,
+1984398u,
+2366525138u,
+377589481u, 3549193828u, 1427765914u, 506831657u,
+277278988u, 1447652775u, 3214362239u, 3142198690u,
+2843087541u,
+468915015u,
+807895062u, 2198723907u, 4031145069u, 2417156212u,
+4027298697u, 637175947u, 1229254212u, 1773257887u,
+1659444818u,
+451148891u,
+2099741368u, 735351990u, 2534775713u, 3261804619u,
+712519954u, 3527962772u, 3758642738u, 4245823575u,
+1281314264u,
+1167866160u,
+1489546151u, 1197354389u, 1043278102u, 2563326586u,
+371937794u, 2320164817u, 3189512691u, 573685198u,
+4108603513u,
+3758899588u,
+3507030163u, 2947201212u, 2529492585u, 578234375u,
+3362349842u, 3318878925u, 3611203517u, 3059253190u,
+4270755916u,
+4291274625u,
+4237586791u, 4137422245u, 2927218651u, 2444687041u,
+797128811u, 2043057612u, 396533859u, 2665256178u,
+3346510674u,
+1779586176u,
+3076562062u, 1882746214u, 921095362u, 2026988397u,
+514514911u, 3886379478u, 4218272420u, 1480386793u,
+3900160816u,
+2292273451u,
+1276138356u, 1125461821u, 1912885715u, 3365266013u,
+1333211627u, 4085009861u, 1390530102u, 3347984752u,
+2721771301u,
+1419492325u,
+4066766256u, 3250852311u, 820111852u, 1382201318u,
+2366036798u, 938032241u, 3100979439u, 487048687u,
+2292851045u,
+3241399180u,
+3912670510u, 2416437067u, 2973194517u, 3507707986u,
+1935099406u, 2533441488u, 104616731u, 2892622820u,
+3801190339u,
+4239188808u,
+807238241u, 3300121546u, 2249406147u, 4032114017u,
+3713738189u, 3324425575u, 4275607376u, 3663120298u,
+4173658372u,
+3984289690u,
+1827636846u, 3264588778u, 3297165529u, 558623533u,
+2728945672u, 1566297318u, 3447249966u, 481719551u,
+1596842050u,
+1838185946u,
+265271620u, 1050246315u, 4046655705u, 1844193138u,
+3807563245u, 1075384804u, 1292554949u, 1506525927u,
+2921816148u,
+2051885269u,
+1930534041u, 3872721086u, 1564489377u, 2272482181u,
+2849358683u, 589618304u, 2262072443u, 290363051u,
+299168363u,
+3867603931u,
+2868688756u, 2545263115u, 1092098533u, 3885725603u,
+2352430409u, 1981595469u, 2047946646u, 1332642839u,
+793806516u,
+214858837u,
+1061484659u, 3192394476u, 1115054785u, 3690637234u,
+996792368u, 2023479706u, 3046498231u, 4205835102u,
+3870714754u,
+257472875u,
+3549864599u, 2040276129u, 2414778670u, 812235477u,
+2674248196u, 1864096101u, 2257492689u, 1332556794u,
+1079540713u,
+465530720u,
+2304763972u, 830724724u, 3354588920u, 2510713652u,
+3103749409u, 468835585u, 1707620787u, 3038024846u,
+1000303198u,
+3462270146u,
+2748698899u, 2100348093u, 511537258u, 1237187486u,
+102049383u, 2268226698u, 3162251739u, 4219404629u,
+838822407u,
+1481440623u,
+2989224077u, 2676681975u, 3246551821u, 3812079906u,
+370572963u, 2283154352u, 3084789986u, 1961085583u,
+1955640586u,
+2409348147u,
+2284780581u, 1634818716u, 4018221729u, 2320761377u,
+3566831899u, 1799560520u, 91431959u, 1754113747u,
+1459430477u,
+3613658517u,
+924489906u, 3406317699u, 866289774u, 3924821603u,
+1265394945u, 1870668109u, 151949856u, 2747006534u,
+3111906201u,
+64039467u,
+2314447545u, 2600195638u, 4095795204u, 4162096026u,
+1026756826u, 2460047982u, 52686887u, 823198739u,
+1518045160u,
+2867527376u,
+566410761u, 2200433819u, 2114146405u, 2893790965u,
+881504901u, 974783212u, 490815659u, 937300283u,
+1523735309u,
+2511976468u,
+2634644947u, 355119367u, 1373773092u, 309232995u,
+3088671051u, 787126032u, 3442836843u, 4289194567u,
+2177850062u,
+1174136430u,
+3248982914u, 3129039732u, 1166851580u, 2196451882u,
+469595580u, 2130837700u, 3783349021u, 3745262548u,
+1236930515u,
+3032131496u,
+1525591437u, 1823628217u, 1939019255u, 1950270463u,
+3659899927u, 3688643445u, 3004399289u, 1155199552u,
+357547234u,
+2213110526u,
+3122658210u, 2667800490u, 2718690333u, 3512372076u,
+1098611683u, 2657518392u, 4248458835u, 3109874532u,
+1592908438u,
+2864927516u,
+3635248840u, 1251777186u, 3797340158u, 3508496870u,
+303354834u, 1482394062u, 2087100120u, 1595931912u,
+608574156u,
+723367884u,
+907938402u, 3357047807u, 1619629851u, 3092082995u,
+89030300u, 916336992u, 1861180168u, 3436334155u,
+1375000544u,
+3472936241u,
+1321217853u, 791356402u, 2872410224u, 2326250297u,
+2657644088u, 1748314108u, 4146771421u, 2913114440u,
+2924821844u,
+2101101496u,
+3268017251u, 2109603066u, 690665520u, 1830067573u,
+951427661u, 2982533150u, 3884512506u, 2358657479u,
+2833210784u,
+3419798214u,
+3785893994u, 2103940206u, 86759766u, 4031230616u,
+3745237192u, 2739453927u, 497038072u, 3303159408u,
+1251537249u,
+1993408196u,
+3185905715u, 2885948408u, 3154277110u, 2444150313u,
+2505582079u, 2120610195u, 3266465773u, 1814611964u,
+3080050407u,
+1079915522u,
+1819346505u, 2529946763u, 892097374u, 3740257161u,
+3618100441u, 1079900094u, 3607172225u, 737863389u,
+360704560u,
+3341993089u,
+1139047381u, 3132219631u, 1248981859u, 1109338159u,
+2004908615u, 4022302594u, 4166640860u, 2959140950u,
+3949235962u,
+2832278473u,
+2200524012u, 2634933043u, 2495844522u, 2613799818u,
+4034096813u, 683271795u, 1673546817u, 1363163726u,
+1805395136u,
+511749501u,
+1231032599u, 2305979751u, 345737783u, 3339868854u,
+2931857933u, 2323251738u, 1332068477u, 51846558u,
+3927238177u,
+1387182179u,
+1701238601u, 1419275173u, 2580882268u, 3357874599u,
+1726558907u, 1292901039u, 1371322339u, 1311713044u,
+3526735232u,
+4017884184u,
+3366093428u, 77140994u, 2128996229u, 1357915765u,
+4019691901u, 483989024u, 2390311750u, 2766065288u,
+3938587520u,
+3064810344u,
+1054589198u, 1274997019u, 4040589616u, 1277751144u,
+2274907047u, 4170399945u, 2886368209u, 4168922115u,
+3901237033u,
+3252972311u,
+2205185840u, 3403097556u, 3385493699u, 2809751370u,
+555319628u, 399539034u, 2998971454u, 1521596214u,
+178870216u,
+1471733541u,
+519629198u, 514159209u, 1500582242u, 1928616587u,
+2686427928u, 4133138798u, 1225914083u, 1432713584u,
+3559310915u,
+3925489366u,
+1055613123u, 4126676029u, 2723867653u, 3290604111u,
+1377022957u, 2373608155u, 3615237379u, 594338683u,
+2645257602u,
+2408427260u,
+917033274u, 750455097u, 625657657u, 121713200u,
+2191273413u, 4043949724u, 3293146785u, 3809297972u,
+3947296919u,
+115456894u,
+1529576616u, 1459278275u, 2157117997u, 1747859293u,
+4106665903u, 996939232u, 2007976332u, 4274649009u,
+1017725787u,
+4244666096u,
+1219631331u, 3072426253u, 3547691720u, 1620822012u,
+1397717508u, 2031597325u, 3345983430u, 2459068000u,
+3645130467u,
+2308642742u,
+359955852u, 1348467968u, 1133123059u, 2435919062u,
+2800365907u, 4213217210u, 4056565603u, 2811666556u,
+2318007236u,
+3823652401u,
+3654086429u, 1273260424u, 1591610446u, 943349350u,
+3441227678u, 3779964757u, 233818224u, 3469971032u,
+3764095096u,
+4009204587u,
+678472092u, 1990559652u, 2583121088u, 2978143652u,
+2496370864u, 2139539656u, 4287972050u, 295832576u,
+3536742861u,
+2257466133u,
+2738052161u, 1988611898u, 2466189642u, 3294419573u,
+2311186273u, 474374532u, 3081964174u, 2515138278u,
+835731677u,
+1178182694u,
+3352119543u, 2884763225u, 3462399574u, 2900817210u,
+1993698511u, 2868445043u, 2746444849u, 1205258179u,
+2353442946u,
+4079040070u,
+3624133102u, 2907136076u, 2902521697u, 426813211u,
+1418185512u, 3711189488u, 1351506552u, 1934749519u,
+46595543u,
+401688809u,
+3514602124u, 1396852607u, 1951477943u, 2502249173u,
+3199695820u, 2890250638u, 4205072507u, 1715623846u,
+3266686789u,
+3218688128u,
+1697759742u, 851227671u, 2358709645u, 4174233268u,
+500583683u, 3805940955u, 736234120u, 2710563712u,
+1949664540u,
+3139414003u,
+4293073253u, 1284406972u, 1785182449u, 1051548274u,
+2994248357u, 2499882522u, 717208669u, 2039517285u,
+518424929u,
+143136433u,
+2303774671u, 1272930860u, 2286410920u, 788459311u,
+273225293u, 2439291703u, 2254505236u, 3446287701u,
+3655156558u,
+1546628787u,
+340081500u, 3285722006u, 1324810435u, 1053980860u,
+1779472859u, 2700355724u, 686005017u, 3762376315u,
+3963193100u,
+1370881135u,
+661300087u, 1152753704u, 2349891598u, 3910051187u,
+2109444785u, 1311123870u, 2639837565u, 1896770931u,
+1081414128u,
+869877586u,
+4284220400u, 63045374u, 235968615u, 184451062u,
+1271099822u, 1319179857u, 3274963209u, 4172272710u,
+3388797445u,
+2965973320u,
+3793110097u, 3327241723u, 2991804005u, 1199544355u,
+771553759u, 2031749842u, 2596517372u, 1199888213u,
+858347951u,
+3340178832u,
+2903875412u, 763490382u, 76949161u, 2056544406u,
+1145227689u, 998233136u, 2354530024u, 427713587u,
+3537837347u,
+604661755u,
+923986833u, 1023730418u, 798294227u, 432557449u,
+801802449u, 1861313429u, 3899128441u, 4068407979u,
+2352677083u,
+3783539925u,
+10731973u, 3390767975u, 3949540249u, 1920121661u,
+3248580201u, 641956426u, 2104847395u, 604835744u,
+1491663404u,
+4255204651u,
+1520970746u, 2845653368u, 3247412938u, 3730629005u,
+855569514u, 3073294700u, 2429691698u, 3818342476u,
+3938869985u,
+2731201328u,
+2335202643u, 778117742u, 13298408u, 228780590u,
+2871715314u, 3253688653u, 4150999702u, 3846220408u,
+930808u,
+1397128726u,
+1964216488u, 2781092828u, 116285375u, 2271239476u,
+3724347554u, 2931203895u, 3893169206u, 1883912528u,
+2093892660u,
+3658787024u,
+3095016046u, 1094059199u, 3640239610u, 558564267u,
+2102812456u, 464734873u, 925262247u, 1609838036u,
+588364741u,
+1731409233u,
+1576165139u, 3933979268u, 375316394u, 4247099643u,
+3670508019u, 4080496835u, 2371248533u, 183762693u,
+2078935389u,
+2699810414u,
+1491815683u, 2999180789u, 1831158425u, 1603373553u,
+2006136905u, 3210230591u, 416748595u, 1536971415u,
+3271869367u,
+1266062739u,
+2138414557u, 3337114778u, 1634586826u, 36472629u,
+4482244u, 568009609u, 2721216780u, 4037289545u,
+2235138807u,
+1789351460u,
+4067539527u, 1323062829u, 3864620647u, 4192026301u,
+4278901241u, 1399025382u, 2826652805u, 1363860382u,
+1801770651u,
+1613381526u,
+1165249276u, 4046576622u, 2535596946u, 3260388176u,
+1078898578u, 2259750862u, 643387587u, 237144235u,
+4199571427u,
+3440917581u,
+3067939258u, 2018625455u, 1460528353u, 3138629939u,
+1666223528u, 3841139376u, 2528281125u, 885565193u,
+2609492686u,
+2517257479u,
+560864620u, 2261471820u, 3491559165u, 1329620416u,
+622383582u, 1759597655u, 2877873893u, 584692817u,
+1901728399u,
+2599000260u,
+3169771644u, 296332336u, 774719455u, 4175920823u,
+2287316070u, 4115615023u, 1073335619u, 4240292725u,
+1359158837u,
+1960974237u,
+3173724597u, 1619084286u, 2876340752u, 4065675347u,
+480741335u, 1237329941u, 701055566u, 3729009837u,
+1314736422u,
+4003180069u,
+3118519317u, 3035354420u, 3380357671u, 4020909015u,
+253958714u, 3545798863u, 3008185002u, 2624719888u,
+3219955575u,
+3060719376u,
+573101682u, 1580316843u, 2610493412u, 3490983536u,
+3601975611u, 851470366u, 635384901u, 3427048824u,
+1470002757u,
+3592460087u,
+2265226856u, 4124282457u, 2106385486u, 3334305617u,
+4208282753u, 3798749815u, 225396466u, 118791182u,
+2523395972u,
+194595464u,
+2563824631u, 2521301383u, 4224409406u, 468670274u,
+1761966400u, 1300908277u, 2570709228u, 1847901526u,
+1470099163u,
+2690466752u,
+1472536718u, 2399279735u, 4150607803u, 1775080054u,
+2082537685u, 4080034578u, 1256001880u, 392967725u,
+2055838940u,
+3349115816u,
+1745947263u, 2213925887u, 1836572741u, 2417722792u,
+636223705u, 2423329294u, 3960951311u, 1543591052u,
+1547914361u,
+2760945653u,
+3519014111u, 313543871u, 4119598884u, 1071003714u,
+2192556597u, 1526995535u, 3929839778u, 536388591u,
+3040873792u,
+3752682932u,
+1640614237u, 2432794021u, 385337403u, 2794410617u,
+2386128075u, 1055206708u, 1422747714u, 3759330929u,
+2533597496u,
+30440955u,
+1482899460u, 3350385050u, 616259409u, 3980103795u,
+1211364140u, 1040071544u, 594746920u, 1645973936u,
+2547331531u,
+1097726368u,
+700666526u, 2976247482u, 1144906608u, 996506677u,
+1997130756u, 800321417u, 1392942823u, 1601662248u,
+2079778663u,
+529512908u,
+2925120134u, 4106433085u, 630221833u, 2423086156u,
+1119859778u, 1726827981u, 1870859181u, 2559832707u,
+1792284257u,
+2059356387u,
+3572353364u, 3229407475u, 575621095u, 3221893291u,
+2372428048u, 2020123035u, 961449593u, 2243824063u,
+3803906611u,
+3735348189u,
+2981620804u, 4180681078u, 1555330629u, 230736535u,
+2075526640u, 749652975u, 713664372u, 2152096659u,
+2142067223u,
+3322302242u,
+1421646830u, 2092832615u, 1213735101u, 3192136753u,
+1106723940u, 3455398230u, 2541685524u, 2529956739u,
+3789430647u,
+1950084508u,
+2157395621u, 850457360u, 2758902426u, 2848030169u,
+6506379u, 1162213157u, 2981459221u, 272690871u,
+3059420255u,
+4242691285u,
+588065598u, 1206949936u, 3968214184u, 566348532u,
+126142880u, 1480567086u, 2959621988u, 2050218418u,
+2242731195u,
+3833514449u,
+1898070331u, 3687399477u, 3891859374u, 868185955u,
+2335308774u, 3676335246u, 3871121805u, 2189032743u,
+3275728647u,
+860492892u,
+1590764344u, 4130384758u, 262871548u, 3004764525u,
+2685542071u, 991231482u, 435122019u, 3031116998u,
+2898921700u,
+2917932604u,
+4238665148u, 2459072654u, 3444612545u, 4207731740u,
+1808564313u, 2798532269u, 3944553556u, 3926395409u,
+1633200670u,
+4138335224u,
+2524878605u, 4184292650u, 3563398268u, 4288943552u,
+3802121210u, 957502058u, 2410820887u, 4227117506u,
+4018625153u,
+4284329158u,
+530216712u, 2978986531u, 863452221u, 1910162118u,
+4088211378u, 4091971261u, 3150811451u, 4200871487u,
+3794038652u,
+3041564310u,
+2045287082u, 887805614u, 2889167251u, 4120352181u,
+1699912580u, 3478922097u, 3211994687u, 3136177842u,
+1500806861u,
+3211881347u,
+2147976385u, 3342722260u, 3359650541u, 4197378460u,
+781354073u, 1533623029u, 2204677828u, 3228172832u,
+3248592437u,
+3355841359u,
+560815159u, 1144951236u, 4027015711u, 2882625391u,
+339363613u, 2354572719u, 1769831876u, 4238589331u,
+1519732871u,
+2185834614u,
+1601096831u, 129709881u, 39655633u, 367604993u,
+1737681770u, 3259114599u, 2767070452u, 872365177u,
+1574125529u,
+3405020189u,
+4181346685u, 1134030380u, 403769171u, 2193351164u,
+1426232618u, 2885309450u, 3033612627u, 924948363u,
+935514094u,
+3202053329u,
+912294839u, 1618472324u, 4159158431u, 3744999487u,
+777064358u, 3974213124u, 1990246048u, 309725290u,
+2449849392u,
+1943692420u,
+2288635750u, 2433793635u, 2168904061u, 683315308u,
+3081493019u, 3477759434u, 3815496269u, 2823504699u,
+586945121u,
+3088963200u,
+3492287335u, 636875049u, 1111206944u, 2037346120u,
+1282050044u, 1409681512u, 1786128584u, 755810950u,
+2332676758u,
+2178142310u,
+957827166u, 1014983590u, 1888800725u, 3608595803u,
+3200072714u, 2534008478u, 659336139u, 1281728287u,
+4060560529u,
+2915575125u,
+3521503774u, 2926487340u, 1096297674u, 653489861u,
+2352326980u, 2561136777u, 1224141198u, 1250479629u,
+1297625391u,
+2409997371u,
+1942483722u, 2481835750u, 1394715707u, 1673070941u,
+2456039704u, 3980558014u, 3547934764u, 1882038812u,
+1078160498u,
+2488279087u,
+1848235245u, 1211914722u, 2264928765u, 2807773070u,
+270145554u, 583747883u, 3826009010u, 2996618216u,
+425727157u,
+992726957u,
+3384462280u, 726650661u, 1955043265u, 1923879512u,
+1854693773u, 2987614542u, 2660044993u, 2457260810u,
+426299370u,
+2671892900u,
+1827308087u, 3083953443u, 1791749638u, 3265087416u,
+2119752201u, 2547122538u, 3990783236u, 1912713468u,
+3688865211u,
+1815780016u,
+303699291u, 2416763742u, 2690891610u, 1535193548u,
+1107803989u, 1504143133u, 2235270371u, 2545884083u,
+2276278682u,
+411724404u,
+3416925704u, 2565792091u, 3383911757u, 546058824u,
+3374654444u, 2364630415u, 2693473470u, 2622125691u,
+261864817u,
+55682470u,
+857617568u, 141304067u, 1885488541u, 155368182u,
+1281949051u, 3384522408u, 3254816901u, 1959816782u,
+1452224057u,
+2830267691u,
+3709231247u, 58988202u, 4218130458u, 2984061349u,
+1888707848u, 4223605071u, 4241442486u, 375269213u,
+3208327038u,
+2199916493u,
+550337252u, 2855061437u, 276088636u, 114362204u,
+2321163647u, 2127813633u, 3289403024u, 2686973202u,
+2717376797u,
+3593428039u,
+3648831666u, 890925902u, 3289404818u, 3289516821u,
+4248913260u, 1858916580u, 3303932308u, 1752797086u,
+1628149686u,
+3245893605u,
+1568537311u, 2844194502u, 1593855770u, 2408174109u,
+124797514u, 2085649512u, 3188565660u, 2264996276u,
+1926696513u,
+3053957740u,
+2238806881u, 2189050973u, 203685243u, 379855590u,
+3920271562u, 1058600179u, 3698061923u, 4255106849u,
+608401664u,
+1598041932u,
+3318266418u, 2535016555u, 852760884u, 1918098822u,
+2200437599u, 1532285043u, 3425662132u, 3561293706u,
+2231633206u,
+4108785088u,
+3359152801u, 173534780u, 208383607u, 2862988169u,
+2406642243u, 426814583u, 2777335795u, 3322703596u,
+954190623u,
+615093090u,
+4179102978u, 2452847930u, 100239619u, 42471741u,
+818352432u, 2190624654u, 504379960u, 3631619975u,
+633412456u,
+1018421783u,
+842645419u, 711808707u, 3424580813u, 2132457941u,
+1158335882u, 3567952480u, 2302183699u, 1145788151u,
+3474264138u,
+3105085243u,
+3115506027u, 2783713015u, 3871785309u, 539583269u,
+1400252405u, 3857849984u, 4231186588u, 1278653799u,
+1760227022u,
+761044088u,
+3838185417u, 2439542532u, 585283357u, 2055995220u,
+937117124u, 3831944855u, 1823586038u, 3287917855u,
+485082427u,
+3209172809u,
+1984570176u, 2818337297u, 2691869057u, 3790476953u,
+839035557u, 3203129010u, 669981176u, 4121157385u,
+3519870450u,
+3792633352u,
+3017650322u, 1603459507u, 4225677666u, 376555451u,
+473780127u, 2018786277u, 3299822439u, 1010254499u,
+2383887565u,
+3155009499u,
+3108110655u, 2641738274u, 3684908622u, 1606463047u,
+3311068174u, 52708046u, 754181455u, 1018079176u,
+3915670272u,
+3366999425u,
+1012880204u, 1339439715u, 466437962u, 1402662350u,
+2504046911u, 736323938u, 2037800124u, 1725908589u,
+716341840u,
+1750123474u,
+3366342464u, 1743666195u, 2975303189u, 3821364027u,
+3253707772u, 3635548377u, 3840413796u, 1955642085u,
+1018315169u,
+1258092848u,
+2095540656u, 1076256607u, 117289557u, 1311658655u,
+2118301000u, 68721550u, 2886814107u, 2712432819u,
+4201862886u,
+753807148u,
+1940229047u, 731347296u, 1068901393u, 3873155894u,
+2852787666u, 1973464853u, 79735652u, 3966380587u,
+3245740712u,
+2525773438u,
+734938109u, 3045656416u, 3335746354u, 4099732691u,
+1911896517u, 1697006473u, 1145487066u, 1605663299u,
+3053606724u,
+2386289465u,
+3821211369u, 1006215345u, 1256304829u, 1053001668u,
+1289194958u, 118761054u, 1853688730u, 2803418011u,
+188650809u,
+3763686458u,
+1006829556u, 2961984133u, 3390525025u, 2061199893u,
+141792681u, 2439893463u, 2652982650u, 1804942682u,
+1546510005u,
+1246961405u,
+2407577046u, 565772575u, 3751844810u, 2943166103u,
+3750052451u, 3022527280u, 25162928u, 397381043u,
+1818337632u,
+3447363730u,
+3936437150u, 2569420703u, 2215592390u, 2171555672u,
+3665571006u, 4021712412u, 2939158353u, 4057813172u,
+1823237318u,
+103999245u,
+3251978010u, 3591914940u, 3582495283u, 2519035265u,
+3905726135u, 3180393349u, 2743117123u, 55247368u,
+3325286701u,
+705195946u,
+1857526853u, 1480518550u, 3809990433u, 1398189338u,
+3126362926u, 3959531492u, 1503658285u, 1977847740u,
+3043964489u,
+2613086143u,
+1518119282u, 4238434900u, 3905746486u, 3064949667u,
+1028122931u, 3309119457u, 4071194920u, 3096098907u,
+4137180520u,
+494467959u,
+1231408687u, 1691606157u, 1793452569u, 2722196118u,
+3478603952u, 1059665738u, 2282032278u, 3990268388u,
+1719514651u,
+4248311578u,
+3799146721u, 898026304u, 3367808954u, 4162472815u,
+170495870u, 1308116609u, 3428285344u, 1714716475u,
+395576794u,
+4153638621u,
+2999745812u, 3483315953u, 304980828u, 595337120u,
+3486516729u, 2331563143u, 2583609459u, 1885928417u,
+3834283777u,
+979337825u,
+932057378u, 3124081189u, 1930356777u, 3865887996u,
+4178282217u, 4214219408u, 3669465884u, 1472413856u,
+3356866587u,
+1012769806u,
+3043639963u, 996996396u, 207308216u, 982967331u,
+2991319933u, 318066902u, 721489670u, 1249967713u,
+749240921u,
+591392325u,
+2379365192u, 2250868849u, 2163259329u, 143191325u,
+3778285606u, 982149096u, 3536906200u, 2244353244u,
+1443862317u,
+3161549210u,
+2183127464u, 2015409516u, 547003700u, 2032484282u,
+523677821u, 4275663308u, 3827205526u, 3903778273u,
+2444530525u,
+2543645801u,
+1173958423u, 784740616u, 2878693675u, 3127696736u,
+3832037316u, 3161002398u, 4084166400u, 4213346853u,
+223390424u,
+4273380883u,
+2130315482u, 3429606032u, 3367732613u, 1912357694u,
+422632590u, 1266957023u, 3437535648u, 736404240u,
+2281709372u,
+415859912u,
+212948797u, 351612650u, 3920561440u, 112963586u,
+2230727543u, 2851076612u, 1990662634u, 2264296857u,
+3131463650u,
+2704034623u,
+3541637839u, 2954232792u, 533986918u, 4158757533u,
+65174248u, 4232639593u, 865906667u, 1948225652u,
+779656112u,
+3873989249u,
+2372984749u, 2346988193u, 1104345713u, 1165654138u,
+4045762610u, 3588205178u, 461363991u, 1111215752u,
+1389675192u,
+2404325151u,
+2152228101u, 3808973622u, 1901235912u, 3458690696u,
+314513238u, 2539459143u, 2847998873u, 952026138u,
+2325705328u,
+407844712u,
+3727960715u, 2996448351u, 2374336760u, 3138756390u,
+2600015243u, 539980418u, 1876285352u, 1670330799u,
+1709360377u,
+2868531654u,
+494777964u, 2773053597u, 599486162u, 3962209577u,
+1871328846u, 2171933018u, 110279472u, 384074780u,
+4147021936u,
+2333589647u,
+4251778066u, 40493468u, 3099342316u, 4108779767u,
+2812424588u, 954542332u, 2040682331u, 2251152306u,
+45915516u,
+259525626u,
+1045384743u, 4134656562u, 749389261u, 874399445u,
+616549904u, 2200447504u, 436024539u, 78972290u,
+3210485762u,
+1907985531u,
+3013721395u, 4214533685u, 4198804243u, 534879265u,
+1517190881u, 3756787754u, 1152563554u, 1718750948u,
+777737463u,
+1402478860u,
+1824562784u, 1879401449u, 3515818786u, 513165201u,
+1423491227u, 2103067918u, 2291777410u, 1097943000u,
+};
+
+// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
+bool Test(int offset, int len = 0) {
+#undef Check
+#undef IsAlive
+
+#define Check(x) do { \
+ const uint32_t actual = (x), e = expected[index++]; \
+ bool ok = actual == e; \
+ if (!ok) { \
+ cerr << "expected " << hex << e << " but got " << actual << endl; \
+ ++errors; \
+ } \
+ assert(ok); \
+} while (0)
+
+#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
+
+ // After the following line is where the uses of "Check" and such will go.
+ static int index = 0;
if (offset == -1) { int alive = 0; IsAlive(farmhashcc::Hash32WithSeed(farm_hash_data, len++, SEED)); IsAlive(farmhashcc::Hash32(farm_hash_data, len++)); { uint128_t u = farmhashcc::Fingerprint128(farm_hash_data, len++); uint64_t h = Uint128Low64(u); IsAlive(h >> 32); IsAlive((h << 32) >> 32); h = Uint128High64(u); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } len -= 3; return alive > 0; }
Check(farmhashcc::Hash32WithSeed(farm_hash_data + offset, len, SEED));
Check(farmhashcc::Hash32(farm_hash_data + offset, len));
{ uint128_t u = farmhashcc::Fingerprint128(farm_hash_data + offset, len); uint64_t h = Uint128Low64(u); Check(h >> 32); Check((h << 32) >> 32); h = Uint128High64(u); Check(h >> 32); Check((h << 32) >> 32); }
{ uint128_t u = farmhashcc::CityHash128WithSeed(farm_hash_data + offset, len, Uint128(SEED0, SEED1)); uint64_t h = Uint128Low64(u); Check(h >> 32); Check((h << 32) >> 32); h = Uint128High64(u); Check(h >> 32); Check((h << 32) >> 32); }
-
- return true;
-#undef Check
-#undef IsAlive
-}
-
-int RunTest() {
- Setup();
- int i = 0;
- cout << "Running farmhashccTest";
- if (!Test(-1)) {
- cout << "... Unavailable\n";
- return NoteErrors();
- }
- // Good. The function is attempting to hash, so run the full test.
- int errors_prior_to_test = errors;
- for ( ; i < kTestSize - 1; i++) {
- Test(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- Test(0, i);
- }
- Test(0, kDataSize);
- cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
- return NoteErrors();
-}
-
-#else
-
-// After the following line is where the code to print hash codes will go.
-void Dump(int offset, int len) {
+
+ return true;
+#undef Check
+#undef IsAlive
+}
+
+int RunTest() {
+ Setup();
+ int i = 0;
+ cout << "Running farmhashccTest";
+ if (!Test(-1)) {
+ cout << "... Unavailable\n";
+ return NoteErrors();
+ }
+ // Good. The function is attempting to hash, so run the full test.
+ int errors_prior_to_test = errors;
+ for ( ; i < kTestSize - 1; i++) {
+ Test(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ Test(0, i);
+ }
+ Test(0, kDataSize);
+ cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
+ return NoteErrors();
+}
+
+#else
+
+// After the following line is where the code to print hash codes will go.
+void Dump(int offset, int len) {
cout << farmhashcc::Hash32WithSeed(farm_hash_data + offset, len, SEED) << "u," << endl;
cout << farmhashcc::Hash32(farm_hash_data + offset, len) << "u," << endl;
{ uint128_t u = farmhashcc::Fingerprint128(farm_hash_data + offset, len); uint64_t h = Uint128Low64(u); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u, "; h = Uint128High64(u); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
{ uint128_t u = farmhashcc::CityHash128WithSeed(farm_hash_data + offset, len, Uint128(SEED0, SEED1)); uint64_t h = Uint128Low64(u); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u, "; h = Uint128High64(u); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
-}
-
-#endif
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-
-} // namespace farmhashccTest
-
-#if !TESTING
-int main(int argc, char** argv) {
- Setup();
- cout << "uint32_t expected[] = {\n";
- int i = 0;
- for ( ; i < kTestSize - 1; i++) {
- farmhashccTest::Dump(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- farmhashccTest::Dump(0, i);
- }
- farmhashccTest::Dump(0, kDataSize);
- cout << "};\n";
-}
-#endif
-#ifndef FARMHASH_SELF_TEST_GUARD
-#define FARMHASH_SELF_TEST_GUARD
-#include <cstdio>
-#include <iostream>
-#include <string.h>
-
-using std::cout;
-using std::cerr;
-using std::endl;
-using std::hex;
-
-static const uint64_t kSeed0 = 1234567;
-static const uint64_t kSeed1 = k0;
-static const int kDataSize = 1 << 20;
-static const int kTestSize = 300;
-#define kSeed128 Uint128(kSeed0, kSeed1)
-
+}
+
+#endif
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+
+} // namespace farmhashccTest
+
+#if !TESTING
+int main(int argc, char** argv) {
+ Setup();
+ cout << "uint32_t expected[] = {\n";
+ int i = 0;
+ for ( ; i < kTestSize - 1; i++) {
+ farmhashccTest::Dump(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ farmhashccTest::Dump(0, i);
+ }
+ farmhashccTest::Dump(0, kDataSize);
+ cout << "};\n";
+}
+#endif
+#ifndef FARMHASH_SELF_TEST_GUARD
+#define FARMHASH_SELF_TEST_GUARD
+#include <cstdio>
+#include <iostream>
+#include <string.h>
+
+using std::cout;
+using std::cerr;
+using std::endl;
+using std::hex;
+
+static const uint64_t kSeed0 = 1234567;
+static const uint64_t kSeed1 = k0;
+static const int kDataSize = 1 << 20;
+static const int kTestSize = 300;
+#define kSeed128 Uint128(kSeed0, kSeed1)
+
static char farm_hash_data[kDataSize];
-
-static int completed_self_tests = 0;
-static int errors = 0;
-
+
+static int completed_self_tests = 0;
+static int errors = 0;
+
// Initialize farm_hash_data to pseudorandom values.
-void Setup() {
- if (completed_self_tests == 0) {
- uint64_t a = 9;
- uint64_t b = 777;
- for (int i = 0; i < kDataSize; i++) {
- a += b;
- b += a;
- a = (a ^ (a >> 41)) * k0;
- b = (b ^ (b >> 41)) * k0 + i;
- uint8_t u = b >> 37;
+void Setup() {
+ if (completed_self_tests == 0) {
+ uint64_t a = 9;
+ uint64_t b = 777;
+ for (int i = 0; i < kDataSize; i++) {
+ a += b;
+ b += a;
+ a = (a ^ (a >> 41)) * k0;
+ b = (b ^ (b >> 41)) * k0 + i;
+ uint8_t u = b >> 37;
memcpy(farm_hash_data + i, &u, 1); // uint8_t -> char
- }
- }
-}
-
-int NoteErrors() {
-#define NUM_SELF_TESTS 9
- if (++completed_self_tests == NUM_SELF_TESTS)
- std::exit(errors > 0);
- return errors;
-}
-
-template <typename T> inline bool IsNonZero(T x) {
- return x != 0;
-}
-
-template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
- return x != Uint128(0, 0);
-}
-
-#endif // FARMHASH_SELF_TEST_GUARD
-
-namespace farmhashmkTest {
-
-uint32_t CreateSeed(int offset, int salt) {
- uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h += static_cast<uint32_t>(offset & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- return h;
-}
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-#define SEED CreateSeed(offset, -1)
-#define SEED0 CreateSeed(offset, 0)
-#define SEED1 CreateSeed(offset, 1)
-
-#undef TESTING
-#define TESTING 1
-#if TESTING
-uint32_t expected[] = {
-4223616069u,
-3696677242u,
-4081014168u,
-2576519988u,
-2212771159u,
-1112731063u,
-1020067935u,
-3955445564u,
-1451961420u,
-653440099u,
-31917516u,
-2957164615u,
-2590087362u,
-3879448744u,
-176305566u,
-2447367541u,
-1359016305u,
-3363804638u,
-1117290165u,
-1062549743u,
-2437877004u,
-1894455839u,
-673206794u,
-3486923651u,
-3269862919u,
-2303349487u,
-1380660650u,
-595525107u,
-1525325287u,
-2025609358u,
-176408838u,
-1592885012u,
-864896482u,
-2101378090u,
-3489229104u,
-2118965695u,
-581644891u,
-2718789079u,
-631613207u,
-4228658372u,
-3867875546u,
-3531368319u,
-3804516756u,
-3317755099u,
-1619744564u,
-2884717286u,
-1088213445u,
-2667691076u,
-3727873235u,
-2330406762u,
-3616470388u,
-967660719u,
-4148162586u,
-315219121u,
-673084328u,
-3047602355u,
-1598963653u,
-1267826661u,
-2117362589u,
-2861192253u,
-1823625377u,
-1380350078u,
-1641748342u,
-1176094482u,
-269384321u,
-2178982315u,
-3480237248u,
-2660755208u,
-1850544433u,
-3429699438u,
-1262819303u,
-640556464u,
-2421125401u,
-2188368608u,
-2612932825u,
-1474432581u,
-173790449u,
-2124882189u,
-831272654u,
-622960146u,
-4238751051u,
-3250317967u,
-2120810248u,
-1948231495u,
-1389029321u,
-2200398357u,
-2134232963u,
-2948072329u,
-617717625u,
-681164587u,
-114859387u,
-430545646u,
-57239089u,
-3163338012u,
-3482496399u,
-557662576u,
-1102441413u,
-2670159360u,
-991116729u,
-846014240u,
-4233741566u,
-1802317242u,
-3129528802u,
-1459456375u,
-1305643039u,
-3258671612u,
-1578285833u,
-868590079u,
-1631034517u,
-1695432937u,
-561078856u,
-1004115553u,
-3086090507u,
-3818348650u,
-731596645u,
-780926790u,
-2544205955u,
-158479164u,
-3983514188u,
-2004735250u,
-3436218400u,
-673684751u,
-1463431419u,
-2880490219u,
-3223748024u,
-2218318859u,
-1474466194u,
-2636437533u,
-2206794961u,
-140995728u,
-1186394086u,
-1805716888u,
-1640037724u,
-3942729099u,
-1944727013u,
-918951560u,
-498666871u,
-3486974657u,
-2967205462u,
-1167253804u,
-1884281041u,
-2866015002u,
-4158319270u,
-2627220079u,
-3733319624u,
-3317092271u,
-438323662u,
-3195868065u,
-3426606709u,
-360708338u,
-1905491012u,
-650004803u,
-1351266252u,
-3133279000u,
-3722811115u,
-2722412434u,
-918432408u,
-3678271248u,
-269599647u,
-621514057u,
-3117077855u,
-1545425390u,
-2597567410u,
-1221437820u,
-3493254589u,
-102787342u,
-918861168u,
-348795089u,
-3439883229u,
-2353641807u,
-2209585469u,
-4035884492u,
-2686995435u,
-1649888022u,
-3852893848u,
-3042700028u,
-314103172u,
-726977769u,
-2489830276u,
-2872753660u,
-1316214989u,
-1488801501u,
-1811420390u,
-639581627u,
-2362837215u,
-3634581834u,
-3648576802u,
-1257314182u,
-762118371u,
-4268447045u,
-730167096u,
-755561509u,
-882614845u,
-3696972894u,
-228263661u,
-1478636142u,
-2767751651u,
-1532617116u,
-3838657661u,
-1944359935u,
-1401102137u,
-3772933173u,
-1050098254u,
-1658079354u,
-1846025728u,
-2204244794u,
-2017217424u,
-1275162853u,
-1429816745u,
-2175565479u,
-1716109139u,
-1187506761u,
-2434641075u,
-2725597783u,
-1795687662u,
-1393312782u,
-3511565397u,
-627885430u,
-4145733164u,
-2519005353u,
-231414775u,
-1242015635u,
-2760723497u,
-2185540568u,
-727314436u,
-2358790354u,
-1186393454u,
-4234795645u,
-350567813u,
-866773875u,
-3145590392u,
-1158374055u,
-3903123687u,
-1862119793u,
-2204587556u,
-4266276976u,
-4151548555u,
-915250402u,
-2874695320u,
-2360311410u,
-1099212769u,
-1271542714u,
-3473148363u,
-1637325418u,
-1807795989u,
-2493819794u,
-3800917924u,
-4001205856u,
-2582153621u,
-3365872040u,
-2890146216u,
-2626363824u,
-3133351295u,
-4046827296u,
-3053118771u,
-4113026751u,
-884356716u,
-3828347401u,
-10608262u,
-830987972u,
-1841080500u,
-3202717763u,
-3561778749u,
-1906000052u,
-3058284660u,
-1432904514u,
-2567431677u,
-2550162530u,
-665557986u,
-936887821u,
-2101205308u,
-4253535847u,
-1662043545u,
-1253611611u,
-2091370094u,
-2635077370u,
-2602176041u,
-3624115809u,
-748442714u,
-2709749154u,
-1023493343u,
-860291012u,
-3924715584u,
-1536436740u,
-2551145800u,
-2391782865u,
-1467705048u,
-2583909796u,
-3616666170u,
-1162857372u,
-4228631071u,
-1510132376u,
-2739165009u,
-2656606142u,
-3454996358u,
-3155038853u,
-1022087316u,
-100044110u,
-494208296u,
-2746186477u,
-4216782431u,
-225448834u,
-3728320521u,
-335282866u,
-3148194874u,
-953503703u,
-1293353960u,
-202372387u,
-1326119870u,
-4045123735u,
-3819994846u,
-1629004186u,
-1081099186u,
-3591584153u,
-1670825804u,
-3404257979u,
-3262192301u,
-2572846095u,
-3714992543u,
-4264142572u,
-529616678u,
-2882154574u,
-3006354178u,
-3865969421u,
-2007174907u,
-308283107u,
-2629833703u,
-3159124075u,
-1146492131u,
-494104332u,
-493149727u,
-1342910585u,
-521642387u,
-2201695937u,
-2517980959u,
-2426821287u,
-777374655u,
-2228189792u,
-4027055486u,
-228976000u,
-3842083468u,
-1723920223u,
-1192126094u,
-787744493u,
-2740368380u,
-2284153001u,
-2773829458u,
-442000614u,
-387830783u,
-2169780670u,
-2253144627u,
-3532502484u,
-1969684059u,
-1165351416u,
-3055056536u,
-3582324253u,
-231419363u,
-770979865u,
-3213983597u,
-3690452836u,
-935794639u,
-3230602762u,
-2841762457u,
-407598927u,
-1164479891u,
-3721799696u,
-354738136u,
-1801566618u,
-3206038542u,
-2621379981u,
-1943487262u,
-3534745636u,
-1074424589u,
-1304517521u,
-4133400969u,
-2339317978u,
-2135116860u,
-4180643791u,
-2415309340u,
-1855926417u,
-3418648630u,
-1968113037u,
-597304222u,
-3668824865u,
-3810008716u,
-3014702569u,
-3151212026u,
-156057449u,
-373134533u,
-2068234004u,
-191580563u,
-3832754488u,
-2924104199u,
-2026044494u,
-4065780435u,
-122565840u,
-4194985167u,
-2744823717u,
-2494098735u,
-3753793370u,
-1885739217u,
-2488161225u,
-3643797615u,
-2653367310u,
-2494061477u,
-189968132u,
-899646597u,
-392100396u,
-4012318310u,
-3855777086u,
-3566860954u,
-2698574996u,
-2414249905u,
-1330623339u,
-1263222732u,
-1277741760u,
-2194959402u,
-1629656136u,
-120494320u,
-1072368005u,
-1084245077u,
-4011372748u,
-1366613353u,
-3108643228u,
-3332219532u,
-2114746095u,
-3964007334u,
-371687128u,
-1084813876u,
-126459896u,
-4292782331u,
-321283184u,
-398168499u,
-3604983506u,
-560701543u,
-2073961354u,
-4240841868u,
-4151211362u,
-1338986875u,
-4093476832u,
-2269279497u,
-3500846299u,
-2510225147u,
-598000444u,
-1330391422u,
-1432533385u,
-4171226231u,
-426821154u,
-2932270996u,
-3378981077u,
-2217871549u,
-1619647984u,
-4051608043u,
-3180237819u,
-12919578u,
-1375401767u,
-371320427u,
-2986640571u,
-2336669859u,
-3796464715u,
-1892383284u,
-306814912u,
-2125823211u,
-1863678891u,
-3249703818u,
-3840225752u,
-281579900u,
-264680257u,
-4266359110u,
-4182229890u,
-2239659703u,
-3627947372u,
-2373929191u,
-224082765u,
-4053639058u,
-1862360303u,
-3187739624u,
-3392706679u,
-948039509u,
-817505760u,
-1215842393u,
-3462222651u,
-536021853u,
-182346832u,
-2731944883u,
-2346674384u,
-2640961678u,
-3446695687u,
-2271722179u,
-1301069656u,
-2803881468u,
-2832614405u,
-1691544398u,
-698756814u,
-3980620906u,
-3565421410u,
-754769376u,
-4115923404u,
-3909962218u,
-2747614077u,
-2888289845u,
-1016920862u,
-2790946178u,
-3067070960u,
-3173251481u,
-1572132982u,
-255048203u,
-2996538818u,
-3405398987u,
-136106013u,
-3581605228u,
-4277437977u,
-2147300534u,
-3728426265u,
-3483629996u,
-1478452694u,
-20756076u,
-2774992067u,
-432987927u,
-1516771026u,
-3511588664u,
-2130994978u,
-509385406u,
-873090347u,
-2163904107u,
-4192239086u,
-2532489989u,
-1090772651u,
-3910797408u,
-3710882132u,
-155010959u,
-1369823531u,
-1599664937u,
-4035593587u,
-1212746925u,
-795822552u,
-116689518u,
-3674240941u,
-1135576664u,
-756750261u,
-1027431362u,
-390555140u,
-2228460216u,
-1506940482u,
-3733857700u,
-3048762971u,
-2511703196u,
-548609887u,
-1607354252u,
-659053982u,
-259884450u,
-1793130460u,
-4083364495u,
-3148555881u,
-1764350138u,
-2436485683u,
-4031563025u,
-3261860724u,
-2475833430u,
-2101726086u,
-3191176464u,
-2646658847u,
-2127042126u,
-771316100u,
-2115922959u,
-3208515045u,
-2355437783u,
-3621147793u,
-1580163615u,
-3211555675u,
-3299188490u,
-191613920u,
-466733956u,
-2939029038u,
-1509152039u,
-130591314u,
-1892874677u,
-1646908044u,
-3452406523u,
-3998376606u,
-1199243832u,
-2187108812u,
-3189230066u,
-4161151481u,
-3371454980u,
-3681788646u,
-180842187u,
-3685022399u,
-3058749895u,
-3250165163u,
-2895367943u,
-2627101723u,
-771755098u,
-1332921024u,
-3638871848u,
-514215135u,
-3591227378u,
-2300310870u,
-3689533503u,
-851607114u,
-114330368u,
-2709027386u,
-1743034877u,
-1013693860u,
-288169008u,
-3545190686u,
-1052165084u,
-3995862307u,
-96902755u,
-1097819851u,
-2645431442u,
-2184148618u,
-2151206566u,
-350979797u,
-3467920900u,
-421116779u,
-1246252u,
-4057835428u,
-329324407u,
-4104482417u,
-844624570u,
-3306265806u,
-3787625025u,
-4263241191u,
-3251413927u,
-2921204431u,
-2931915325u,
-992134330u,
-3986338354u,
-1327895216u,
-1458363596u,
-1480608532u,
-728594368u,
-3804366693u,
-794404223u,
-1643240863u,
-793417255u,
-4167916443u,
-2683488959u,
-3124925324u,
-4184843652u,
-3750971752u,
-308509829u,
-1054550805u,
-2797511972u,
-4043123412u,
-1587158240u,
-4050518606u,
-3030062190u,
-2589912753u,
-603440067u,
-937013191u,
-1071662315u,
-2100661456u,
-2602005741u,
-435516078u,
-2260470147u,
-1256268350u,
-3612035u,
-3368856141u,
-151516099u,
-3081868591u,
-3363755681u,
-2049963149u,
-2885320434u,
-84682005u,
-2411758308u,
-2695174275u,
-3099904644u,
-1787308684u,
-1132379308u,
-564634346u,
-510236510u,
-2804443681u,
-3931864252u,
-2064427949u,
-1893979229u,
-2916544974u,
-1885887717u,
-2978018250u,
-494192125u,
-2642662373u,
-901112508u,
-636035003u,
-1658643797u,
-172746975u,
-517504890u,
-3440019372u,
-4144498044u,
-1854755456u,
-3672653905u,
-4176892856u,
-382159097u,
-282871690u,
-3629300472u,
-2500754041u,
-1677659759u,
-1067175061u,
-161654075u,
-1672575536u,
-346120493u,
-2730229631u,
-203466442u,
-1244549529u,
-199761971u,
-2744895408u,
-3195315331u,
-2124618519u,
-3261045496u,
-985339699u,
-3385585455u,
-1545740710u,
-3636652160u,
-2167020081u,
-1207897204u,
-28752417u,
-2895834146u,
-3640845375u,
-3750293073u,
-548997850u,
-4207814196u,
-4183030708u,
-2462810989u,
-3929965401u,
-};
-
-// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
-bool Test(int offset, int len = 0) {
-#undef Check
-#undef IsAlive
-
-#define Check(x) do { \
- const uint32_t actual = (x), e = expected[index++]; \
- bool ok = actual == e; \
- if (!ok) { \
- cerr << "expected " << hex << e << " but got " << actual << endl; \
- ++errors; \
- } \
- assert(ok); \
-} while (0)
-
-#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
-
- // After the following line is where the uses of "Check" and such will go.
- static int index = 0;
+ }
+ }
+}
+
+int NoteErrors() {
+#define NUM_SELF_TESTS 9
+ if (++completed_self_tests == NUM_SELF_TESTS)
+ std::exit(errors > 0);
+ return errors;
+}
+
+template <typename T> inline bool IsNonZero(T x) {
+ return x != 0;
+}
+
+template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
+ return x != Uint128(0, 0);
+}
+
+#endif // FARMHASH_SELF_TEST_GUARD
+
+namespace farmhashmkTest {
+
+uint32_t CreateSeed(int offset, int salt) {
+ uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h += static_cast<uint32_t>(offset & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ return h;
+}
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+#define SEED CreateSeed(offset, -1)
+#define SEED0 CreateSeed(offset, 0)
+#define SEED1 CreateSeed(offset, 1)
+
+#undef TESTING
+#define TESTING 1
+#if TESTING
+uint32_t expected[] = {
+4223616069u,
+3696677242u,
+4081014168u,
+2576519988u,
+2212771159u,
+1112731063u,
+1020067935u,
+3955445564u,
+1451961420u,
+653440099u,
+31917516u,
+2957164615u,
+2590087362u,
+3879448744u,
+176305566u,
+2447367541u,
+1359016305u,
+3363804638u,
+1117290165u,
+1062549743u,
+2437877004u,
+1894455839u,
+673206794u,
+3486923651u,
+3269862919u,
+2303349487u,
+1380660650u,
+595525107u,
+1525325287u,
+2025609358u,
+176408838u,
+1592885012u,
+864896482u,
+2101378090u,
+3489229104u,
+2118965695u,
+581644891u,
+2718789079u,
+631613207u,
+4228658372u,
+3867875546u,
+3531368319u,
+3804516756u,
+3317755099u,
+1619744564u,
+2884717286u,
+1088213445u,
+2667691076u,
+3727873235u,
+2330406762u,
+3616470388u,
+967660719u,
+4148162586u,
+315219121u,
+673084328u,
+3047602355u,
+1598963653u,
+1267826661u,
+2117362589u,
+2861192253u,
+1823625377u,
+1380350078u,
+1641748342u,
+1176094482u,
+269384321u,
+2178982315u,
+3480237248u,
+2660755208u,
+1850544433u,
+3429699438u,
+1262819303u,
+640556464u,
+2421125401u,
+2188368608u,
+2612932825u,
+1474432581u,
+173790449u,
+2124882189u,
+831272654u,
+622960146u,
+4238751051u,
+3250317967u,
+2120810248u,
+1948231495u,
+1389029321u,
+2200398357u,
+2134232963u,
+2948072329u,
+617717625u,
+681164587u,
+114859387u,
+430545646u,
+57239089u,
+3163338012u,
+3482496399u,
+557662576u,
+1102441413u,
+2670159360u,
+991116729u,
+846014240u,
+4233741566u,
+1802317242u,
+3129528802u,
+1459456375u,
+1305643039u,
+3258671612u,
+1578285833u,
+868590079u,
+1631034517u,
+1695432937u,
+561078856u,
+1004115553u,
+3086090507u,
+3818348650u,
+731596645u,
+780926790u,
+2544205955u,
+158479164u,
+3983514188u,
+2004735250u,
+3436218400u,
+673684751u,
+1463431419u,
+2880490219u,
+3223748024u,
+2218318859u,
+1474466194u,
+2636437533u,
+2206794961u,
+140995728u,
+1186394086u,
+1805716888u,
+1640037724u,
+3942729099u,
+1944727013u,
+918951560u,
+498666871u,
+3486974657u,
+2967205462u,
+1167253804u,
+1884281041u,
+2866015002u,
+4158319270u,
+2627220079u,
+3733319624u,
+3317092271u,
+438323662u,
+3195868065u,
+3426606709u,
+360708338u,
+1905491012u,
+650004803u,
+1351266252u,
+3133279000u,
+3722811115u,
+2722412434u,
+918432408u,
+3678271248u,
+269599647u,
+621514057u,
+3117077855u,
+1545425390u,
+2597567410u,
+1221437820u,
+3493254589u,
+102787342u,
+918861168u,
+348795089u,
+3439883229u,
+2353641807u,
+2209585469u,
+4035884492u,
+2686995435u,
+1649888022u,
+3852893848u,
+3042700028u,
+314103172u,
+726977769u,
+2489830276u,
+2872753660u,
+1316214989u,
+1488801501u,
+1811420390u,
+639581627u,
+2362837215u,
+3634581834u,
+3648576802u,
+1257314182u,
+762118371u,
+4268447045u,
+730167096u,
+755561509u,
+882614845u,
+3696972894u,
+228263661u,
+1478636142u,
+2767751651u,
+1532617116u,
+3838657661u,
+1944359935u,
+1401102137u,
+3772933173u,
+1050098254u,
+1658079354u,
+1846025728u,
+2204244794u,
+2017217424u,
+1275162853u,
+1429816745u,
+2175565479u,
+1716109139u,
+1187506761u,
+2434641075u,
+2725597783u,
+1795687662u,
+1393312782u,
+3511565397u,
+627885430u,
+4145733164u,
+2519005353u,
+231414775u,
+1242015635u,
+2760723497u,
+2185540568u,
+727314436u,
+2358790354u,
+1186393454u,
+4234795645u,
+350567813u,
+866773875u,
+3145590392u,
+1158374055u,
+3903123687u,
+1862119793u,
+2204587556u,
+4266276976u,
+4151548555u,
+915250402u,
+2874695320u,
+2360311410u,
+1099212769u,
+1271542714u,
+3473148363u,
+1637325418u,
+1807795989u,
+2493819794u,
+3800917924u,
+4001205856u,
+2582153621u,
+3365872040u,
+2890146216u,
+2626363824u,
+3133351295u,
+4046827296u,
+3053118771u,
+4113026751u,
+884356716u,
+3828347401u,
+10608262u,
+830987972u,
+1841080500u,
+3202717763u,
+3561778749u,
+1906000052u,
+3058284660u,
+1432904514u,
+2567431677u,
+2550162530u,
+665557986u,
+936887821u,
+2101205308u,
+4253535847u,
+1662043545u,
+1253611611u,
+2091370094u,
+2635077370u,
+2602176041u,
+3624115809u,
+748442714u,
+2709749154u,
+1023493343u,
+860291012u,
+3924715584u,
+1536436740u,
+2551145800u,
+2391782865u,
+1467705048u,
+2583909796u,
+3616666170u,
+1162857372u,
+4228631071u,
+1510132376u,
+2739165009u,
+2656606142u,
+3454996358u,
+3155038853u,
+1022087316u,
+100044110u,
+494208296u,
+2746186477u,
+4216782431u,
+225448834u,
+3728320521u,
+335282866u,
+3148194874u,
+953503703u,
+1293353960u,
+202372387u,
+1326119870u,
+4045123735u,
+3819994846u,
+1629004186u,
+1081099186u,
+3591584153u,
+1670825804u,
+3404257979u,
+3262192301u,
+2572846095u,
+3714992543u,
+4264142572u,
+529616678u,
+2882154574u,
+3006354178u,
+3865969421u,
+2007174907u,
+308283107u,
+2629833703u,
+3159124075u,
+1146492131u,
+494104332u,
+493149727u,
+1342910585u,
+521642387u,
+2201695937u,
+2517980959u,
+2426821287u,
+777374655u,
+2228189792u,
+4027055486u,
+228976000u,
+3842083468u,
+1723920223u,
+1192126094u,
+787744493u,
+2740368380u,
+2284153001u,
+2773829458u,
+442000614u,
+387830783u,
+2169780670u,
+2253144627u,
+3532502484u,
+1969684059u,
+1165351416u,
+3055056536u,
+3582324253u,
+231419363u,
+770979865u,
+3213983597u,
+3690452836u,
+935794639u,
+3230602762u,
+2841762457u,
+407598927u,
+1164479891u,
+3721799696u,
+354738136u,
+1801566618u,
+3206038542u,
+2621379981u,
+1943487262u,
+3534745636u,
+1074424589u,
+1304517521u,
+4133400969u,
+2339317978u,
+2135116860u,
+4180643791u,
+2415309340u,
+1855926417u,
+3418648630u,
+1968113037u,
+597304222u,
+3668824865u,
+3810008716u,
+3014702569u,
+3151212026u,
+156057449u,
+373134533u,
+2068234004u,
+191580563u,
+3832754488u,
+2924104199u,
+2026044494u,
+4065780435u,
+122565840u,
+4194985167u,
+2744823717u,
+2494098735u,
+3753793370u,
+1885739217u,
+2488161225u,
+3643797615u,
+2653367310u,
+2494061477u,
+189968132u,
+899646597u,
+392100396u,
+4012318310u,
+3855777086u,
+3566860954u,
+2698574996u,
+2414249905u,
+1330623339u,
+1263222732u,
+1277741760u,
+2194959402u,
+1629656136u,
+120494320u,
+1072368005u,
+1084245077u,
+4011372748u,
+1366613353u,
+3108643228u,
+3332219532u,
+2114746095u,
+3964007334u,
+371687128u,
+1084813876u,
+126459896u,
+4292782331u,
+321283184u,
+398168499u,
+3604983506u,
+560701543u,
+2073961354u,
+4240841868u,
+4151211362u,
+1338986875u,
+4093476832u,
+2269279497u,
+3500846299u,
+2510225147u,
+598000444u,
+1330391422u,
+1432533385u,
+4171226231u,
+426821154u,
+2932270996u,
+3378981077u,
+2217871549u,
+1619647984u,
+4051608043u,
+3180237819u,
+12919578u,
+1375401767u,
+371320427u,
+2986640571u,
+2336669859u,
+3796464715u,
+1892383284u,
+306814912u,
+2125823211u,
+1863678891u,
+3249703818u,
+3840225752u,
+281579900u,
+264680257u,
+4266359110u,
+4182229890u,
+2239659703u,
+3627947372u,
+2373929191u,
+224082765u,
+4053639058u,
+1862360303u,
+3187739624u,
+3392706679u,
+948039509u,
+817505760u,
+1215842393u,
+3462222651u,
+536021853u,
+182346832u,
+2731944883u,
+2346674384u,
+2640961678u,
+3446695687u,
+2271722179u,
+1301069656u,
+2803881468u,
+2832614405u,
+1691544398u,
+698756814u,
+3980620906u,
+3565421410u,
+754769376u,
+4115923404u,
+3909962218u,
+2747614077u,
+2888289845u,
+1016920862u,
+2790946178u,
+3067070960u,
+3173251481u,
+1572132982u,
+255048203u,
+2996538818u,
+3405398987u,
+136106013u,
+3581605228u,
+4277437977u,
+2147300534u,
+3728426265u,
+3483629996u,
+1478452694u,
+20756076u,
+2774992067u,
+432987927u,
+1516771026u,
+3511588664u,
+2130994978u,
+509385406u,
+873090347u,
+2163904107u,
+4192239086u,
+2532489989u,
+1090772651u,
+3910797408u,
+3710882132u,
+155010959u,
+1369823531u,
+1599664937u,
+4035593587u,
+1212746925u,
+795822552u,
+116689518u,
+3674240941u,
+1135576664u,
+756750261u,
+1027431362u,
+390555140u,
+2228460216u,
+1506940482u,
+3733857700u,
+3048762971u,
+2511703196u,
+548609887u,
+1607354252u,
+659053982u,
+259884450u,
+1793130460u,
+4083364495u,
+3148555881u,
+1764350138u,
+2436485683u,
+4031563025u,
+3261860724u,
+2475833430u,
+2101726086u,
+3191176464u,
+2646658847u,
+2127042126u,
+771316100u,
+2115922959u,
+3208515045u,
+2355437783u,
+3621147793u,
+1580163615u,
+3211555675u,
+3299188490u,
+191613920u,
+466733956u,
+2939029038u,
+1509152039u,
+130591314u,
+1892874677u,
+1646908044u,
+3452406523u,
+3998376606u,
+1199243832u,
+2187108812u,
+3189230066u,
+4161151481u,
+3371454980u,
+3681788646u,
+180842187u,
+3685022399u,
+3058749895u,
+3250165163u,
+2895367943u,
+2627101723u,
+771755098u,
+1332921024u,
+3638871848u,
+514215135u,
+3591227378u,
+2300310870u,
+3689533503u,
+851607114u,
+114330368u,
+2709027386u,
+1743034877u,
+1013693860u,
+288169008u,
+3545190686u,
+1052165084u,
+3995862307u,
+96902755u,
+1097819851u,
+2645431442u,
+2184148618u,
+2151206566u,
+350979797u,
+3467920900u,
+421116779u,
+1246252u,
+4057835428u,
+329324407u,
+4104482417u,
+844624570u,
+3306265806u,
+3787625025u,
+4263241191u,
+3251413927u,
+2921204431u,
+2931915325u,
+992134330u,
+3986338354u,
+1327895216u,
+1458363596u,
+1480608532u,
+728594368u,
+3804366693u,
+794404223u,
+1643240863u,
+793417255u,
+4167916443u,
+2683488959u,
+3124925324u,
+4184843652u,
+3750971752u,
+308509829u,
+1054550805u,
+2797511972u,
+4043123412u,
+1587158240u,
+4050518606u,
+3030062190u,
+2589912753u,
+603440067u,
+937013191u,
+1071662315u,
+2100661456u,
+2602005741u,
+435516078u,
+2260470147u,
+1256268350u,
+3612035u,
+3368856141u,
+151516099u,
+3081868591u,
+3363755681u,
+2049963149u,
+2885320434u,
+84682005u,
+2411758308u,
+2695174275u,
+3099904644u,
+1787308684u,
+1132379308u,
+564634346u,
+510236510u,
+2804443681u,
+3931864252u,
+2064427949u,
+1893979229u,
+2916544974u,
+1885887717u,
+2978018250u,
+494192125u,
+2642662373u,
+901112508u,
+636035003u,
+1658643797u,
+172746975u,
+517504890u,
+3440019372u,
+4144498044u,
+1854755456u,
+3672653905u,
+4176892856u,
+382159097u,
+282871690u,
+3629300472u,
+2500754041u,
+1677659759u,
+1067175061u,
+161654075u,
+1672575536u,
+346120493u,
+2730229631u,
+203466442u,
+1244549529u,
+199761971u,
+2744895408u,
+3195315331u,
+2124618519u,
+3261045496u,
+985339699u,
+3385585455u,
+1545740710u,
+3636652160u,
+2167020081u,
+1207897204u,
+28752417u,
+2895834146u,
+3640845375u,
+3750293073u,
+548997850u,
+4207814196u,
+4183030708u,
+2462810989u,
+3929965401u,
+};
+
+// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
+bool Test(int offset, int len = 0) {
+#undef Check
+#undef IsAlive
+
+#define Check(x) do { \
+ const uint32_t actual = (x), e = expected[index++]; \
+ bool ok = actual == e; \
+ if (!ok) { \
+ cerr << "expected " << hex << e << " but got " << actual << endl; \
+ ++errors; \
+ } \
+ assert(ok); \
+} while (0)
+
+#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
+
+ // After the following line is where the uses of "Check" and such will go.
+ static int index = 0;
if (offset == -1) { int alive = 0; IsAlive(farmhashmk::Hash32WithSeed(farm_hash_data, len++, SEED)); IsAlive(farmhashmk::Hash32(farm_hash_data, len++)); IsAlive(farmhashmk::Hash32(farm_hash_data, len++)); len -= 3; return alive > 0; }
Check(farmhashmk::Hash32WithSeed(farm_hash_data + offset, len, SEED));
Check(farmhashmk::Hash32(farm_hash_data + offset, len));
-
- return true;
-#undef Check
-#undef IsAlive
-}
-
-int RunTest() {
- Setup();
- int i = 0;
- cout << "Running farmhashmkTest";
- if (!Test(-1)) {
- cout << "... Unavailable\n";
- return NoteErrors();
- }
- // Good. The function is attempting to hash, so run the full test.
- int errors_prior_to_test = errors;
- for ( ; i < kTestSize - 1; i++) {
- Test(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- Test(0, i);
- }
- Test(0, kDataSize);
- cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
- return NoteErrors();
-}
-
-#else
-
-// After the following line is where the code to print hash codes will go.
-void Dump(int offset, int len) {
+
+ return true;
+#undef Check
+#undef IsAlive
+}
+
+int RunTest() {
+ Setup();
+ int i = 0;
+ cout << "Running farmhashmkTest";
+ if (!Test(-1)) {
+ cout << "... Unavailable\n";
+ return NoteErrors();
+ }
+ // Good. The function is attempting to hash, so run the full test.
+ int errors_prior_to_test = errors;
+ for ( ; i < kTestSize - 1; i++) {
+ Test(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ Test(0, i);
+ }
+ Test(0, kDataSize);
+ cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
+ return NoteErrors();
+}
+
+#else
+
+// After the following line is where the code to print hash codes will go.
+void Dump(int offset, int len) {
cout << farmhashmk::Hash32WithSeed(farm_hash_data + offset, len, SEED) << "u," << endl;
cout << farmhashmk::Hash32(farm_hash_data + offset, len) << "u," << endl;
-}
-
-#endif
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-
-} // namespace farmhashmkTest
-
-#if !TESTING
-int main(int argc, char** argv) {
- Setup();
- cout << "uint32_t expected[] = {\n";
- int i = 0;
- for ( ; i < kTestSize - 1; i++) {
- farmhashmkTest::Dump(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- farmhashmkTest::Dump(0, i);
- }
- farmhashmkTest::Dump(0, kDataSize);
- cout << "};\n";
-}
-#endif
-#ifndef FARMHASH_SELF_TEST_GUARD
-#define FARMHASH_SELF_TEST_GUARD
-#include <cstdio>
-#include <iostream>
-#include <string.h>
-
-using std::cout;
-using std::cerr;
-using std::endl;
-using std::hex;
-
-static const uint64_t kSeed0 = 1234567;
-static const uint64_t kSeed1 = k0;
-static const int kDataSize = 1 << 20;
-static const int kTestSize = 300;
-#define kSeed128 Uint128(kSeed0, kSeed1)
-
+}
+
+#endif
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+
+} // namespace farmhashmkTest
+
+#if !TESTING
+int main(int argc, char** argv) {
+ Setup();
+ cout << "uint32_t expected[] = {\n";
+ int i = 0;
+ for ( ; i < kTestSize - 1; i++) {
+ farmhashmkTest::Dump(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ farmhashmkTest::Dump(0, i);
+ }
+ farmhashmkTest::Dump(0, kDataSize);
+ cout << "};\n";
+}
+#endif
+#ifndef FARMHASH_SELF_TEST_GUARD
+#define FARMHASH_SELF_TEST_GUARD
+#include <cstdio>
+#include <iostream>
+#include <string.h>
+
+using std::cout;
+using std::cerr;
+using std::endl;
+using std::hex;
+
+static const uint64_t kSeed0 = 1234567;
+static const uint64_t kSeed1 = k0;
+static const int kDataSize = 1 << 20;
+static const int kTestSize = 300;
+#define kSeed128 Uint128(kSeed0, kSeed1)
+
static char farm_hash_data[kDataSize];
-
-static int completed_self_tests = 0;
-static int errors = 0;
-
+
+static int completed_self_tests = 0;
+static int errors = 0;
+
// Initialize farm_hash_data to pseudorandom values.
-void Setup() {
- if (completed_self_tests == 0) {
- uint64_t a = 9;
- uint64_t b = 777;
- for (int i = 0; i < kDataSize; i++) {
- a += b;
- b += a;
- a = (a ^ (a >> 41)) * k0;
- b = (b ^ (b >> 41)) * k0 + i;
- uint8_t u = b >> 37;
+void Setup() {
+ if (completed_self_tests == 0) {
+ uint64_t a = 9;
+ uint64_t b = 777;
+ for (int i = 0; i < kDataSize; i++) {
+ a += b;
+ b += a;
+ a = (a ^ (a >> 41)) * k0;
+ b = (b ^ (b >> 41)) * k0 + i;
+ uint8_t u = b >> 37;
memcpy(farm_hash_data + i, &u, 1); // uint8_t -> char
- }
- }
-}
-
-int NoteErrors() {
-#define NUM_SELF_TESTS 9
- if (++completed_self_tests == NUM_SELF_TESTS)
- std::exit(errors > 0);
- return errors;
-}
-
-template <typename T> inline bool IsNonZero(T x) {
- return x != 0;
-}
-
-template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
- return x != Uint128(0, 0);
-}
-
-#endif // FARMHASH_SELF_TEST_GUARD
-
-namespace farmhashnaTest {
-
-uint32_t CreateSeed(int offset, int salt) {
- uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h += static_cast<uint32_t>(offset & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- return h;
-}
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-#define SEED CreateSeed(offset, -1)
-#define SEED0 CreateSeed(offset, 0)
-#define SEED1 CreateSeed(offset, 1)
-
-#undef TESTING
-#define TESTING 1
-#if TESTING
-uint32_t expected[] = {
-1140953930u, 861465670u,
-3277735313u, 2681724312u,
-2598464059u, 797982799u,
-890626835u, 800175912u,
-2603993599u, 921001710u,
-1410420968u, 2134990486u,
-3283896453u, 1867689945u,
-2914424215u, 2244477846u,
-255297188u, 2992121793u,
-1110588164u, 4186314283u,
-161451183u, 3943596029u,
-4019337850u, 452431531u,
-283198166u, 2741341286u,
-3379021470u, 2557197665u,
-299850021u, 2532580744u,
-452473466u, 1706958772u,
-1298374911u, 3099673830u,
-2199864459u, 3696623795u,
-236935126u, 2976578695u,
-4055299123u, 3281581178u,
-1053458494u, 1882212500u,
-2305012065u, 2169731866u,
-3456121707u, 275903667u,
-458884671u, 3033004529u,
-3058973506u, 2379411653u,
-1898235244u, 1402319660u,
-2700149065u, 2699376854u,
-147814787u, 720739346u,
-2433714046u, 4222949502u,
-4220361840u, 1712034059u,
-3425469811u, 3690733394u,
-4148372108u, 1330324210u,
-594028478u, 2921867846u,
-1635026870u, 192883107u,
-780716741u, 1728752234u,
-3280331829u, 326029180u,
-3969463346u, 1436364519u,
-393215742u, 3349570000u,
-3824583307u, 1612122221u,
-2859809759u, 3808705738u,
-1379537552u, 1646032583u,
-2233466664u, 1432476832u,
-4023053163u, 2650381482u,
-2052294713u, 3552092450u,
-1628777059u, 1499109081u,
-3476440786u, 3829307897u,
-2960536756u, 1554038301u,
-1145519619u, 3190844552u,
-2902102606u, 3600725550u,
-237495366u, 540224401u,
-65721842u, 489963606u,
-1448662590u, 397635823u,
-1596489240u, 1562872448u,
-1790705123u, 2128624475u,
-180854224u, 2604346966u,
-1435705557u, 1262831810u,
-155445229u, 1672724608u,
-1669465176u, 1341975128u,
-663607706u, 2077310004u,
-3610042449u, 1911523866u,
-1043692997u, 1454396064u,
-2563776023u, 294527927u,
-1099072299u, 1389770549u,
-703505868u, 678706990u,
-2952353448u, 2026137563u,
-3603803785u, 629449419u,
-1933894405u, 3043213226u,
-226132789u, 2489287368u,
-1552847036u, 645684964u,
-3828089804u, 3632594520u,
-187883449u, 230403464u,
-3151491850u, 3272648435u,
-3729087873u, 1303930448u,
-2002861219u, 165370827u,
-916494250u, 1230085527u,
-3103338579u, 3064290191u,
-3807265751u, 3628174014u,
-231181488u, 851743255u,
-2295806711u, 1781190011u,
-2988893883u, 1554380634u,
-1142264800u, 3667013118u,
-1968445277u, 315203929u,
-2638023604u, 2290487377u,
-732137533u, 1909203251u,
-440398219u, 1891630171u,
-1380301172u, 1498556724u,
-4072067757u, 4165088768u,
-4204318635u, 441430649u,
-3931792696u, 197618179u,
-956300927u, 914413116u,
-3010839769u, 2837339569u,
-2148126371u, 1913303225u,
-3074915312u, 3117299654u,
-4139181436u, 2993479124u,
-3178848746u, 1357272220u,
-1438494951u, 507436733u,
-667183474u, 2084369203u,
-3854939912u, 1413396341u,
-126024219u, 146044391u,
-1016656857u, 3022024459u,
-3254014218u, 429095991u,
-165589978u, 1578546616u,
-985653208u, 1718653828u,
-623071693u, 366414107u,
-249776086u, 1207522198u,
-3047342438u, 2991127487u,
-3120876698u, 1684583131u,
-46987739u, 1157614300u,
-863214540u, 1087193030u,
-199124911u, 520792961u,
-3614377032u, 586863115u,
-3331828431u, 1013201099u,
-1716848157u, 4033596884u,
-1164298657u, 4140791139u,
-1146169032u, 1434258493u,
-3824360466u, 3242407770u,
-3725511003u, 232064808u,
-872586426u, 762243036u,
-2736953692u, 816692935u,
-512845449u, 3748861010u,
-2266795890u, 3781899767u,
-4290630595u, 517646945u,
-22638523u, 648000590u,
-959214578u, 558910384u,
-1283799121u, 3047062993u,
-1024246061u, 4027776454u,
-3544509313u, 622325861u,
-834785312u, 382936554u,
-411505255u, 1973395102u,
-1825135056u, 2725923798u,
-580988377u, 2826990641u,
-3474970689u, 1029055034u,
-812546227u, 2506885666u,
-2584372201u, 1758123094u,
-589567754u, 325737734u,
-345313518u, 2022370576u,
-3886113119u, 3338548567u,
-257578986u, 3698087965u,
-1776047957u, 1771384107u,
-3604937815u, 3198590202u,
-2305332220u, 191910725u,
-4232136669u, 427759438u,
-4244322689u, 542201663u,
-3315355162u, 2135941665u,
-556609672u, 45845311u,
-1175961330u, 3948351189u,
-23075771u, 3252374102u,
-1634635545u, 4151937410u,
-713127376u, 1467786451u,
-663013031u, 3444053918u,
-2638154051u, 810082938u,
-3077742128u, 1062268187u,
-2115441882u, 4081398201u,
-3735739145u, 2794294783u,
-2335576331u, 2560479831u,
-1379288194u, 4225182569u,
-2442302747u, 3948961926u,
-3958366652u, 3067277639u,
-3667516477u, 1709989541u,
-1516711748u, 2339636583u,
-4188504038u, 59581167u,
-2725013602u, 3639843023u,
-2658147000u, 2643979752u,
-3758739543u, 4189944477u,
-2470483982u, 877580602u,
-2995362413u, 118817200u,
-3252925478u, 2062343506u,
-3981838403u, 3762572073u,
-1231633714u, 4168280671u,
-2931588131u, 3284356565u,
-1129162571u, 732225574u,
-4173605289u, 1407328702u,
-1677744031u, 3532596884u,
-3232041815u, 1652884780u,
-2256541290u, 3459463480u,
-3740979556u, 259034107u,
-2227121257u, 1426140634u,
-3606709555u, 3424793077u,
-315836068u, 3200749877u,
-1386256573u, 24035717u,
-2982018998u, 1811050648u,
-234531934u, 1115203611u,
-1598686658u, 3146815575u,
-1603559457u, 323296368u,
-2632963283u, 1778459926u,
-739944537u, 579625482u,
-3486330348u, 492621815u,
-1231665285u, 2457048126u,
-3903349120u, 389846205u,
-3355404249u, 3275550588u,
-1052645068u, 862072556u,
-2834153464u, 1481069623u,
-2657392572u, 4279236653u,
-1688445808u, 701920051u,
-3740748788u, 3388062747u,
-1873358321u, 2152785640u,
-883382081u, 1005815394u,
-1020177209u, 734239551u,
-2371453141u, 100326520u,
-3488500412u, 1279682138u,
-2610427744u, 49703572u,
-3026361211u, 605900428u,
-302392721u, 2509302188u,
-1416453607u, 2815915291u,
-1862819968u, 519710058u,
-2450888314u, 4017598378u,
-937074653u, 3035635454u,
-1590230729u, 3268013438u,
-2710029305u, 12886044u,
-3711259084u, 2627383582u,
-3895772404u, 648534979u,
-260307902u, 855990313u,
-3669691805u, 263366740u,
-2938543471u, 414331688u,
-3080542944u, 3405007814u,
-3565059103u, 1190977418u,
-390836981u, 1606450012u,
-2649808239u, 2514169310u,
-2747519432u, 4129538640u,
-1721522849u, 492099164u,
-792990594u, 3625507637u,
-2271095827u, 2993032712u,
-2302363854u, 4013112951u,
-1111617969u, 2183845740u,
-795918276u, 1116991810u,
-3110898804u, 3963062126u,
-2737064702u, 462795667u,
-937372240u, 1343017609u,
-1091041189u, 2790555455u,
-277024217u, 25485284u,
-1166522068u, 1623631848u,
-241727183u, 2836158787u,
-3112996740u, 573836428u,
-2721658101u, 1937681565u,
-4175169209u, 3190765433u,
-1970000788u, 1668258120u,
-114616703u, 954762543u,
-199237753u, 4094644498u,
-2522281978u, 732086117u,
-1756889687u, 2936126607u,
-2437031370u, 4103143808u,
-3883389541u, 3171090854u,
-2483004780u, 1927385370u,
-2360538162u, 2740855009u,
-4241185118u, 1492209542u,
-1672737098u, 2148675559u,
-1789864670u, 2434313103u,
-2319172611u, 2760941207u,
-2636210123u, 1338083267u,
-1128080590u, 822806371u,
-1199583556u, 314727461u,
-1335160250u, 2084630531u,
-1156261526u, 316766066u,
-112090465u, 3129033323u,
-2746885618u, 636616055u,
-2582210744u, 1721064910u,
-3468394263u, 470463518u,
-2076016059u, 408721884u,
-2121041886u, 378460278u,
-1915948002u, 357324860u,
-2301682622u, 2691859523u,
-1869756364u, 2429314418u,
-2193146527u, 1185564327u,
-2614088922u, 1975527044u,
-919067651u, 2855948894u,
-3662539576u, 1943802836u,
-3529473373u, 1490330107u,
-366036094u, 3384241033u,
-4276268604u, 448403661u,
-4271796078u, 1910401882u,
-3077107698u, 299427366u,
-2035665349u, 3201262636u,
-3738454258u, 2554452696u,
-3588997135u, 3363895827u,
-1267505995u, 1852004679u,
-2237827073u, 2803250686u,
-3468044908u, 2143572850u,
-1728158656u, 1022551180u,
-1996680960u, 839529273u,
-2400647871u, 2201096054u,
-3606433628u, 2597259793u,
-3544595875u, 3909443124u,
-819278607u, 3447346709u,
-806136613u, 2711436388u,
-3656063205u, 837475154u,
-694525336u, 4070212073u,
-4011303412u, 1068395209u,
-438095290u, 484603494u,
-2673730227u, 737767009u,
-642310823u, 3914002299u,
-308425103u, 268427550u,
-1334387085u, 4069797497u,
-4280783219u, 2914011058u,
-4243643405u, 2849988118u,
-2504230175u, 1817156623u,
-2804200483u, 3406991497u,
-2948254999u, 2102063419u,
-1071272117u, 514889942u,
-571972433u, 1246595599u,
-1735616066u, 1539151988u,
-1230831543u, 277987182u,
-4269526481u, 991511607u,
-95237878u, 2005032160u,
-1291113144u, 626619670u,
-3560835907u, 164940926u,
-1433635018u, 116647396u,
-3039097112u, 2868163232u,
-1141645918u, 1764165478u,
-881378302u, 2159170082u,
-2953647681u, 1011320066u,
-184856151u, 1723308975u,
-336034862u, 2017579106u,
-1476681709u, 147523618u,
-3896252223u, 2264728166u,
-944743644u, 1694443528u,
-2690700128u, 1947321519u,
-735478508u, 4058183171u,
-260177668u, 505662155u,
-2391691262u, 1920739747u,
-3216960415u, 1898176786u,
-3722741628u, 1511077569u,
-449636564u, 983350414u,
-2580237367u, 2055059789u,
-1103819072u, 2089123665u,
-3873755579u, 2718467458u,
-3124338704u, 3204250304u,
-2475035432u, 1120017626u,
-3873758287u, 1982999824u,
-2950794582u, 780634378u,
-2842141483u, 4029205195u,
-1656892865u, 3330993377u,
-80890710u, 1953796601u,
-3873078673u, 136118734u,
-2317676604u, 4199091610u,
-1864448181u, 3063437608u,
-1699452298u, 1403506686u,
-1513069466u, 2348491299u,
-4273657745u, 4055855649u,
-1805475756u, 2562064338u,
-973124563u, 4197091358u,
-172861513u, 2858726767u,
-4271866024u, 3071338162u,
-3590386266u, 2328277259u,
-1096050703u, 1189614342u,
-459509140u, 771592405u,
-817999971u, 3740825152u,
-520400189u, 1941874618u,
-185232757u, 4032960199u,
-3928245258u, 3527721294u,
-1301118856u, 752188080u,
-3512945009u, 308584855u,
-2105373972u, 752872278u,
-3823368815u, 3760952096u,
-4250142168u, 2565680167u,
-3646354146u, 1259957455u,
-1085857127u, 3471066607u,
-38924274u, 3770488806u,
-1083869477u, 3312508103u,
-71956383u, 3738784936u,
-3099963860u, 1255084262u,
-4286969992u, 3621849251u,
-1190908967u, 1831557743u,
-2363435042u, 54945052u,
-4059585566u, 4023974274u,
-1788578453u, 3442180039u,
-2534883189u, 2432427547u,
-3909757989u, 731996369u,
-4168347425u, 1356028512u,
-2741583197u, 1280920000u,
-312887059u, 3259015297u,
-3946278527u, 4135481831u,
-1281043691u, 1121403845u,
-3312292477u, 1819941269u,
-1741932545u, 3293015483u,
-2127558730u, 713121337u,
-2635469238u, 486003418u,
-4015067527u, 2976737859u,
-2108187161u, 927011680u,
-1970188338u, 4177613234u,
-1799789551u, 2118505126u,
-4134691985u, 1958963937u,
-1929210029u, 2555835851u,
-2768832862u, 910892050u,
-2567532373u, 4075249328u,
-86689814u, 3726640307u,
-1392137718u, 1240000030u,
-4104757832u, 3026358429u,
-313797689u, 1435798509u,
-3101500919u, 1241665335u,
-3573008472u, 3615577014u,
-3767659003u, 3134294021u,
-4063565523u, 2296824134u,
-1541946015u, 3087190425u,
-2693152531u, 2199672572u,
-2123763822u, 1034244398u,
-857839960u, 2515339233u,
-2228007483u, 1628096047u,
-2116502287u, 2502657424u,
-2809830736u, 460237542u,
-450205998u, 3646921704u,
-3818199357u, 1808504491u,
-1950698961u, 2069753399u,
-3657033172u, 3734547671u,
-4067859590u, 3292597295u,
-1106466069u, 356742959u,
-2469567432u, 3495418823u,
-183440071u, 3248055817u,
-3662626864u, 1750561299u,
-3926138664u, 4088592524u,
-567122118u, 3810297651u,
-992181339u, 3384018814u,
-3272124369u, 3177596743u,
-320086295u, 2316548367u,
-100741310u, 451656820u,
-4086604273u, 3759628395u,
-2553391092u, 1745659881u,
-3650357479u, 2390172694u,
-330172533u, 767377322u,
-526742034u, 4102497288u,
-2088767754u, 164402616u,
-2482632320u, 2352347393u,
-1873658044u, 3861555476u,
-2751052984u, 1767810825u,
-20037241u, 545143220u,
-2594532522u, 472304191u,
-3441135892u, 3323383489u,
-258785117u, 2977745165u,
-2781737565u, 2963590112u,
-2756998822u, 207428029u,
-2581558559u, 3824717027u,
-1258619503u, 3472047571u,
-2648427775u, 2360400900u,
-2393763818u, 2332399088u,
-3932701729u, 884421165u,
-1396468647u, 1377764574u,
-4061795938u, 1559119087u,
-3343596838u, 3604258095u,
-1435134775u, 1099809675u,
-908163739u, 1418405656u,
-368446627u, 3741651161u,
-3374512975u, 3542220540u,
-3244772570u, 200009340u,
-3198975081u, 2521038253u,
-4081637863u, 337070226u,
-3235259030u, 3897262827u,
-736956644u, 641040550u,
-644850146u, 1306761320u,
-4219448634u, 193750500u,
-3293278106u, 1383997679u,
-1242645122u, 4109252858u,
-450747727u, 3716617561u,
-362725793u, 2252520167u,
-3377483696u, 1788337208u,
-8130777u, 3226734120u,
-759239140u, 1012411364u,
-1658628529u, 2911512007u,
-1002580201u, 1681898320u,
-3039016929u, 4294520281u,
-367022558u, 3071359622u,
-3205848570u, 152989999u,
-3839042136u, 2357687350u,
-4273132307u, 3898950547u,
-1176841812u, 1314157485u,
-75443951u, 1027027239u,
-1858986613u, 2040551642u,
-36574105u, 2603059541u,
-3456147251u, 2137668425u,
-4077477194u, 3565689036u,
-491832241u, 363703593u,
-2579177168u, 3589545214u,
-265993036u, 1864569342u,
-4149035573u, 3189253455u,
-1072259310u, 3153745937u,
-923017956u, 490608221u,
-855846773u, 845706553u,
-1018226240u, 1604548872u,
-3833372385u, 3287246572u,
-2757959551u, 2452872151u,
-1553870564u, 1713154780u,
-2649450292u, 500120236u,
-84251717u, 661869670u,
-1444911517u, 2489716881u,
-2810524030u, 1561519055u,
-3884088359u, 2509890699u,
-4247155916u, 1005636939u,
-3224066062u, 2774151984u,
-2035978240u, 2514910366u,
-1478837908u, 3144450144u,
-2107011431u, 96459446u,
-3587732908u, 2389230590u,
-3287635953u, 250533792u,
-1235983679u, 4237425634u,
-3704645833u, 3882376657u,
-2976369049u, 1187061987u,
-276949224u, 4100839753u,
-1698347543u, 1629662314u,
-1556151829u, 3784939568u,
-427484362u, 4246879223u,
-3155311770u, 4285163791u,
-1693376813u, 124492786u,
-1858777639u, 3476334357u,
-1941442701u, 1121980173u,
-3485932087u, 820852908u,
-358032121u, 2511026735u,
-1873607283u, 2556067450u,
-2248275536u, 1528632094u,
-1535473864u, 556796152u,
-1499201704u, 1472623890u,
-1526518503u, 3692729434u,
-1476438092u, 2913077464u,
-335109599u, 2167614601u,
-4121131078u, 3158127917u,
-3051522276u, 4046477658u,
-2857717851u, 1863977403u,
-1341023343u, 692059110u,
-1802040304u, 990407433u,
-3285847572u, 319814144u,
-561105582u, 1540183799u,
-4052924496u, 2926590471u,
-2244539806u, 439121871u,
-3317903224u, 3178387550u,
-4265214507u, 82077489u,
-1978918971u, 4279668976u,
-128732476u, 2853224222u,
-464407878u, 4190838199u,
-997819001u, 3250520802u,
-2330081301u, 4095846095u,
-733509243u, 1583801700u,
-722314527u, 3552883023u,
-1403784280u, 432327540u,
-1877837196u, 3912423882u,
-505219998u, 696031431u,
-908238873u, 4189387259u,
-8759461u, 2540185277u,
-3385159748u, 381355877u,
-2519951681u, 1679786240u,
-2019419351u, 4051584612u,
-1933923923u, 3768201861u,
-1670133081u, 3454981037u,
-700836153u, 1675560450u,
-371560700u, 338262316u,
-847351840u, 2222395828u,
-3130433948u, 405251683u,
-3037574880u, 184098830u,
-453340528u, 1385561439u,
-2224044848u, 4071581802u,
-1431235296u, 5570097u,
-570114376u, 2287305551u,
-2272418128u, 803575837u,
-3943113491u, 414959787u,
-708083137u, 2452657767u,
-4019147902u, 3841480082u,
-3791794715u, 2965956183u,
-2763690963u, 2350937598u,
-3424361375u, 779434428u,
-1274947212u, 686105485u,
-3426668051u, 3692865672u,
-3057021940u, 2285701422u,
-349809124u, 1379278508u,
-3623750518u, 215970497u,
-1783152480u, 823305654u,
-216118434u, 1787189830u,
-3692048450u, 2272612521u,
-3032187389u, 4159715581u,
-1388133148u, 1611772864u,
-2544383526u, 552925303u,
-3420960112u, 3198900547u,
-3503230228u, 2603352423u,
-2318375898u, 4064071435u,
-3006227299u, 4194096960u,
-1283392422u, 1510460996u,
-174272138u, 3671038966u,
-1775955687u, 1719108984u,
-1763892006u, 1385029063u,
-4083790740u, 406757708u,
-684087286u, 531310503u,
-3329923157u, 3492083607u,
-1059031410u, 3037314475u,
-3105682208u, 3382290593u,
-2292208503u, 426380557u,
-97373678u, 3842309471u,
-777173623u, 3241407531u,
-303065016u, 1477104583u,
-4234905200u, 2512514774u,
-2649684057u, 1397502982u,
-1802596032u, 3973022223u,
-2543566442u, 3139578968u,
-3193669211u, 811750340u,
-4013496209u, 567361887u,
-4169410406u, 3622282782u,
-3403136990u, 2540585554u,
-895210040u, 3862229802u,
-1145435213u, 4146963980u,
-784952939u, 943914610u,
-573034522u, 464420660u,
-2356867109u, 3054347639u,
-3985088434u, 1911188923u,
-583391304u, 176468511u,
-2990150068u, 2338031599u,
-519948041u, 3181425568u,
-496106033u, 4110294665u,
-2736756930u, 1196757691u,
-1089679033u, 240953857u,
-3399092928u, 4040779538u,
-2843673626u, 240495962u,
-3017658263u, 3828377737u,
-4243717901u, 2448373688u,
-2759616657u, 2246245780u,
-308018483u, 4262383425u,
-2731780771u, 328023017u,
-2884443148u, 841480070u,
-3188015819u, 4051263539u,
-2298178908u, 2944209234u,
-1372958390u, 4164532914u,
-4074952232u, 1683612329u,
-2155036654u, 1872815858u,
-2041174279u, 2368092311u,
-206775997u, 2283918569u,
-645945606u, 115406202u,
-4206471368u, 3923500892u,
-2217060665u, 350160869u,
-706531239u, 2824302286u,
-509981657u, 1469342315u,
-140980u, 1891558063u,
-164887091u, 3094962711u,
-3437115622u, 13327420u,
-422986366u, 330624974u,
-3630863408u, 2425505046u,
-824008515u, 3543885677u,
-918718096u, 376390582u,
-3224043675u, 3724791476u,
-1837192976u, 2968738516u,
-3424344721u, 3187805406u,
-1550978788u, 1743089918u,
-4251270061u, 645016762u,
-3855037968u, 1928519266u,
-1373803416u, 2289007286u,
-1889218686u, 1610271373u,
-3059200728u, 2108753646u,
-582042641u, 812347242u,
-3188172418u, 191994904u,
-1343511943u, 2247006571u,
-463291708u, 2697254095u,
-1534175504u, 1106275740u,
-622521957u, 917121602u,
-4095777215u, 3955972648u,
-3852234638u, 2845309942u,
-3299763344u, 2864033668u,
-2554947496u, 799569078u,
-2551629074u, 1102873346u,
-2661022773u, 2006922227u,
-2900438444u, 1448194126u,
-1321567432u, 1983773590u,
-1237256330u, 3449066284u,
-1691553115u, 3274671549u,
-4271625619u, 2741371614u,
-3285899651u, 786322314u,
-1586632825u, 564385522u,
-2530557509u, 2974240289u,
-1244759631u, 3263135197u,
-3592389776u, 3570296884u,
-2749873561u, 521432811u,
-987586766u, 3206261120u,
-1327840078u, 4078716491u,
-1753812954u, 976892272u,
-1827135136u, 1781944746u,
-1328622957u, 1015377974u,
-3439601008u, 2209584557u,
-2482286699u, 1109175923u,
-874877499u, 2036083451u,
-483570344u, 1091877599u,
-4190721328u, 1129462471u,
-640035849u, 1867372700u,
-920761165u, 3273688770u,
-1623777358u, 3389003793u,
-3241132743u, 2734783008u,
-696674661u, 2502161880u,
-1646071378u, 1164309901u,
-350411888u, 1978005963u,
-2253937037u, 7371540u,
-989577914u, 3626554867u,
-3214796883u, 531343826u,
-398899695u, 1145247203u,
-1516846461u, 3656006011u,
-529303412u, 3318455811u,
-3062828129u, 1696355359u,
-3698796465u, 3155218919u,
-1457595996u, 3191404246u,
-1395609912u, 2917345728u,
-1237411891u, 1854985978u,
-1091884675u, 3504488111u,
-3109924189u, 1628881950u,
-3939149151u, 878608872u,
-778235395u, 1052990614u,
-903730231u, 2069566979u,
-2437686324u, 3163786257u,
-2257884264u, 2123173186u,
-939764916u, 2933010098u,
-1235300371u, 1256485167u,
-1950274665u, 2180372319u,
-2648400302u, 122035049u,
-1883344352u, 2083771672u,
-3712110541u, 321199441u,
-1896357377u, 508560958u,
-3066325351u, 2770847216u,
-3177982504u, 296902736u,
-1486926688u, 456842861u,
-601221482u, 3992583643u,
-2794121515u, 1533934172u,
-1706465470u, 4281971893u,
-2557027816u, 900741486u,
-227175484u, 550595824u,
-690918144u, 2825943628u,
-90375300u, 300318232u,
-1985329734u, 1440763373u,
-3670603707u, 2533900859u,
-3253901179u, 542270815u,
-3677388841u, 307706478u,
-2570910669u, 3320103693u,
-1273768482u, 1216399252u,
-1652924805u, 1043647584u,
-1120323676u, 639941430u,
-325675502u, 3652676161u,
-4241680335u, 1545838362u,
-1991398008u, 4100211814u,
-1097584090u, 3262252593u,
-2254324292u, 1765019121u,
-4060211241u, 2315856188u,
-3704419305u, 411263051u,
-238929055u, 3540688404u,
-3094544537u, 3250435765u,
-3460621305u, 1967599860u,
-2016157366u, 847389916u,
-1659615591u, 4020453639u,
-901109753u, 2682611693u,
-1661364280u, 177155177u,
-3210561911u, 3802058181u,
-797089608u, 3286110054u,
-2110358240u, 1353279028u,
-2479975820u, 471725410u,
-2219863904u, 3623364733u,
-3167128228u, 1052188336u,
-3656587111u, 721788662u,
-3061255808u, 1615375832u,
-924941453u, 2547780700u,
-3328169224u, 1310964134u,
-2701956286u, 4145497671u,
-1421461094u, 1221397398u,
-1589183618u, 1492533854u,
-449740816u, 2686506989u,
-3035198924u, 1682886232u,
-2529760244u, 3342031659u,
-1235084019u, 2151665147u,
-2315686577u, 3282027660u,
-1140138691u, 2754346599u,
-2091754612u, 1178454681u,
-4226896579u, 2942520471u,
-2122168506u, 3751680858u,
-3213794286u, 2601416506u,
-4142747914u, 3951404257u,
-4243249649u, 748595836u,
-4004834921u, 238887261u,
-1927321047u, 2217148444u,
-205977665u, 1885975275u,
-186020771u, 2367569534u,
-2941662631u, 2608559272u,
-3342096731u, 741809437u,
-1962659444u, 3539886328u,
-3036596491u, 2282550094u,
-2366462727u, 2748286642u,
-2144472852u, 1390394371u,
-1257385924u, 2205425874u,
-2119055686u, 46865323u,
-3597555910u, 3188438773u,
-2372320753u, 3641116924u,
-3116286108u, 2680722658u,
-3371014971u, 2058751609u,
-2966943726u, 2345078707u,
-2330535244u, 4013841927u,
-1169588594u, 857915866u,
-1875260989u, 3175831309u,
-3193475664u, 1955181430u,
-923161569u, 4068653043u,
-776445899u, 954196929u,
-61509556u, 4248237857u,
-3808667664u, 581227317u,
-2893240187u, 4159497403u,
-4212264930u, 3973886195u,
-2077539039u, 851579036u,
-2957587591u, 772351886u,
-1173659554u, 946748363u,
-2794103714u, 2094375930u,
-4234750213u, 3671645488u,
-2614250782u, 2620465358u,
-3122317317u, 2365436865u,
-3393973390u, 523513960u,
-3645735309u, 2766686992u,
-2023960931u, 2312244996u,
-1875932218u, 3253711056u,
-3622416881u, 3274929205u,
-612094988u, 1555465129u,
-2114270406u, 3553762793u,
-1832633644u, 1087551556u,
-3306195841u, 1702313921u,
-3675066046u, 1735998785u,
-1690923980u, 1482649756u,
-1171351291u, 2043136409u,
-1962596992u, 461214626u,
-3278253346u, 1392428048u,
-3744621107u, 1028502697u,
-3991171462u, 1014064003u,
-3642345425u, 3186995039u,
-6114625u, 3359104346u,
-414856965u, 2814387514u,
-3583605071u, 2497896367u,
-1024572712u, 1927582962u,
-2892797583u, 845302635u,
-328548052u, 1523379748u,
-3392622118u, 1347167673u,
-1012316581u, 37767602u,
-2647726017u, 1070326065u,
-2075035198u, 4202817168u,
-2502924707u, 2612406822u,
-2187115553u, 1180137213u,
-701024148u, 1481965992u,
-3223787553u, 2083541843u,
-203230202u, 3876887380u,
-1334816273u, 2870251538u,
-2186205850u, 3985213979u,
-333533378u, 806507642u,
-1010064531u, 713520765u,
-3084131515u, 2637421459u,
-1703168933u, 1517562266u,
-4089081247u, 3231042924u,
-3079916123u, 3154574447u,
-2253948262u, 1725190035u,
-2452539325u, 1343734533u,
-213706059u, 2519409656u,
-108055211u, 2916327746u,
-587001593u, 1917607088u,
-4202913084u, 926304016u,
-469255411u, 4042080256u,
-3498936874u, 246692543u,
-495780578u, 438717281u,
-2259272650u, 4011324645u,
-2836854664u, 2317249321u,
-946828752u, 1280403658u,
-1905648354u, 2034241661u,
-774652981u, 1285694082u,
-2200307766u, 2158671727u,
-1135162148u, 232040752u,
-397012087u, 1717527689u,
-1720414106u, 918797022u,
-2580119304u, 3568069742u,
-2904461070u, 3893453420u,
-973817938u, 667499332u,
-3785870412u, 2088861715u,
-1565179401u, 600903026u,
-591806775u, 3512242245u,
-997964515u, 2339605347u,
-1134342772u, 3234226304u,
-4084179455u, 302315791u,
-2445626811u, 2590372496u,
-345572299u, 2274770442u,
-3600587867u, 3706939009u,
-1430507980u, 2656330434u,
-1079209397u, 2122849632u,
-1423705223u, 3826321888u,
-3683385276u, 1057038163u,
-1242840526u, 3987000643u,
-2398253089u, 1538190921u,
-1295898647u, 3570196893u,
-3065138774u, 3111336863u,
-2524949549u, 4203895425u,
-3025864372u, 968800353u,
-1023721001u, 3763083325u,
-526350786u, 635552097u,
-2308118370u, 2166472723u,
-2196937373u, 2643841788u,
-3040011470u, 4010301879u,
-2782379560u, 3474682856u,
-4201389782u, 4223278891u,
-1457302296u, 2251842132u,
-1090062008u, 3188219189u,
-292733931u, 1424229089u,
-1590782640u, 1365212370u,
-3975957073u, 3982969588u,
-2927147928u, 1048291071u,
-2766680094u, 884908196u,
-35237839u, 2221180633u,
-2490333812u, 4098360768u,
-4029081103u, 3490831871u,
-2392516272u, 3455379186u,
-3948800722u, 335456628u,
-2105117968u, 4181629008u,
-1044201772u, 3335754111u,
-540133451u, 3313113759u,
-3786107905u, 2627207327u,
-3540337875u, 3473113388u,
-3430536378u, 2514123129u,
-2124531276u, 3872633376u,
-3272957388u, 3501994650u,
-2418881542u, 487365389u,
-3877672368u, 1512866656u,
-3486531087u, 2102955203u,
-1136054817u, 3004241477u,
-1549075351u, 1302002008u,
-3936430045u, 2258587644u,
-4109233936u, 3679809321u,
-3467083076u, 2484463221u,
-1594979755u, 529218470u,
-3527024461u, 1147434678u,
-106799023u, 1823161970u,
-1704656738u, 1675883700u,
-3308746763u, 1875093248u,
-1352868568u, 1898561846u,
-2508994984u, 3177750780u,
-4217929592u, 400784472u,
-80090315u, 3564414786u,
-3841585648u, 3379293868u,
-160353261u, 2413172925u,
-2378499279u, 673436726u,
-1505702418u, 1330977363u,
-1853298225u, 3201741245u,
-2135714208u, 4069554166u,
-3715612384u, 3692488887u,
-3680311316u, 4274382900u,
-914186796u, 2264886523u,
-3869634032u, 1254199592u,
-1131020455u, 194781179u,
-429923922u, 2763792336u,
-2052895198u, 3997373194u,
-3440090658u, 2165746386u,
-1575500242u, 3463310191u,
-2064974716u, 3779513671u,
-3106421434u, 880320527u,
-3281914119u, 286569042u,
-3909096631u, 122359727u,
-1429837716u, 252230074u,
-4111461225u, 762273136u,
-93658514u, 2766407143u,
-3623657004u, 3869801679u,
-3925695921u, 2390397316u,
-2499025338u, 2741806539u,
-2507199021u, 1659221866u,
-361292116u, 4048761557u,
-3797133396u, 1517903247u,
-3121647246u, 3884308578u,
-1697201500u, 1558800262u,
-4150812360u, 3161302278u,
-2610217849u, 641564641u,
-183814518u, 2075245419u,
-611996508u, 2223461433u,
-329123979u, 121860586u,
-860985829u, 1137889144u,
-4018949439u, 2904348960u,
-947795261u, 1992594155u,
-4255427501u, 2281583851u,
-2892637604u, 1478186924u,
-3050771207u, 2767035539u,
-373510582u, 1963520320u,
-3763848370u, 3756817798u,
-627269409u, 1806905031u,
-1814444610u, 3646665053u,
-1822693920u, 278515794u,
-584050483u, 4142579188u,
-2149745808u, 3193071606u,
-1179706341u, 2693495182u,
-3259749808u, 644172091u,
-880509048u, 3340630542u,
-3365160815u, 2384445068u,
-3053081915u, 2840648309u,
-1986990122u, 1084703471u,
-2370410550u, 1627743573u,
-2244943480u, 4057483496u,
-2611595995u, 2470013639u,
-4024732359u, 3987190386u,
-873421687u, 2447660175u,
-3226583022u, 767655877u,
-2528024413u, 1962070688u,
-1233635843u, 2163464207u,
-659054446u, 854207134u,
-258410943u, 4197831420u,
-2515400215u, 3100476924u,
-1961549594u, 2219491151u,
-3997658851u, 163850514u,
-470325051u, 2598261204u,
-3052145580u, 59836528u,
-1376188597u, 966733415u,
-850667549u, 3622479237u,
-1083731990u, 1525777459u,
-4005126532u, 1428155540u,
-2781907007u, 943739431u,
-1493961005u, 2839096988u,
-2000057832u, 1941829603u,
-1901484772u, 939810041u,
-3377407371u, 3090115837u,
-3310840540u, 2068409688u,
-3261383939u, 2212130277u,
-2594774045u, 2912652418u,
-4179816101u, 3534504531u,
-3349254805u, 2796552902u,
-1385421283u, 4259908631u,
-3714780837u, 3070073945u,
-3372846298u, 3835884044u,
-3047965714u, 3009018735u,
-744091167u, 1861124263u,
-2764936304u, 1338171648u,
-4222019554u, 1395200692u,
-1371426007u, 3338031581u,
-2525665319u, 4196233786u,
-2332743921u, 1474702008u,
-2274266301u, 4255175517u,
-2290169528u, 1793910997u,
-2188254024u, 354202001u,
-3864458796u, 4280290498u,
-1554419340u, 1733094688u,
-2010552302u, 1561807039u,
-664313606u, 2548990879u,
-1084699349u, 3233936866u,
-973895284u, 2386881969u,
-1831995860u, 2961465052u,
-1428704144u, 3269904970u,
-231648253u, 2602483763u,
-4125013173u, 3319187387u,
-3347011944u, 1892898231u,
-4019114049u, 868879116u,
-4085937045u, 2378411019u,
-1072588531u, 3547435717u,
-2208070766u, 1069899078u,
-3142980597u, 2337088907u,
-1593338562u, 919414554u,
-688077849u, 3625708135u,
-1472447348u, 1947711896u,
-3953006207u, 877438080u,
-845995820u, 3150361443u,
-3053496713u, 2484577841u,
-224271045u, 2914958001u,
-2682612949u, 806655563u,
-2436224507u, 1907729235u,
-2920583824u, 1251814062u,
-2070814520u, 4034325578u,
-497847539u, 2714317144u,
-385182008u, 640855184u,
-1327075087u, 1062468773u,
-1757405994u, 1374270191u,
-4263183176u, 3041193150u,
-1037871524u, 3633173991u,
-4231821821u, 2830131945u,
-3505072908u, 2830570613u,
-4195208715u, 575398021u,
-3992840257u, 3691788221u,
-1949847968u, 2999344380u,
-3183782163u, 3723754342u,
-759716128u, 3284107364u,
-1714496583u, 15918244u,
-820509475u, 2553936299u,
-2201876606u, 4237151697u,
-2605688266u, 3253705097u,
-1008333207u, 712158730u,
-1722280252u, 1933868287u,
-4152736859u, 2097020806u,
-584426382u, 2836501956u,
-2522777566u, 1996172430u,
-2122199776u, 1069285218u,
-1474209360u, 690831894u,
-107482532u, 3695525410u,
-670591796u, 768977505u,
-2412057331u, 3647886687u,
-3110327607u, 1072658422u,
-379861934u, 1557579480u,
-4124127129u, 2271365865u,
-3880613089u, 739218494u,
-547346027u, 388559045u,
-3147335977u, 176230425u,
-3094853730u, 2554321205u,
-1495176194u, 4093461535u,
-3521297827u, 4108148413u,
-1913727929u, 1177947623u,
-1911655402u, 1053371241u,
-3265708874u, 1266515850u,
-1045540427u, 3194420196u,
-3717104621u, 1144474110u,
-1464392345u, 52070157u,
-4144237690u, 3350490823u,
-4166253320u, 2747410691u,
-};
-
-// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
-bool Test(int offset, int len = 0) {
-#undef Check
-#undef IsAlive
-
-#define Check(x) do { \
- const uint32_t actual = (x), e = expected[index++]; \
- bool ok = actual == e; \
- if (!ok) { \
- cerr << "expected " << hex << e << " but got " << actual << endl; \
- ++errors; \
- } \
- assert(ok); \
-} while (0)
-
-#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
-
- // After the following line is where the uses of "Check" and such will go.
- static int index = 0;
+ }
+ }
+}
+
+int NoteErrors() {
+#define NUM_SELF_TESTS 9
+ if (++completed_self_tests == NUM_SELF_TESTS)
+ std::exit(errors > 0);
+ return errors;
+}
+
+template <typename T> inline bool IsNonZero(T x) {
+ return x != 0;
+}
+
+template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
+ return x != Uint128(0, 0);
+}
+
+#endif // FARMHASH_SELF_TEST_GUARD
+
+namespace farmhashnaTest {
+
+uint32_t CreateSeed(int offset, int salt) {
+ uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h += static_cast<uint32_t>(offset & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ return h;
+}
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+#define SEED CreateSeed(offset, -1)
+#define SEED0 CreateSeed(offset, 0)
+#define SEED1 CreateSeed(offset, 1)
+
+#undef TESTING
+#define TESTING 1
+#if TESTING
+uint32_t expected[] = {
+1140953930u, 861465670u,
+3277735313u, 2681724312u,
+2598464059u, 797982799u,
+890626835u, 800175912u,
+2603993599u, 921001710u,
+1410420968u, 2134990486u,
+3283896453u, 1867689945u,
+2914424215u, 2244477846u,
+255297188u, 2992121793u,
+1110588164u, 4186314283u,
+161451183u, 3943596029u,
+4019337850u, 452431531u,
+283198166u, 2741341286u,
+3379021470u, 2557197665u,
+299850021u, 2532580744u,
+452473466u, 1706958772u,
+1298374911u, 3099673830u,
+2199864459u, 3696623795u,
+236935126u, 2976578695u,
+4055299123u, 3281581178u,
+1053458494u, 1882212500u,
+2305012065u, 2169731866u,
+3456121707u, 275903667u,
+458884671u, 3033004529u,
+3058973506u, 2379411653u,
+1898235244u, 1402319660u,
+2700149065u, 2699376854u,
+147814787u, 720739346u,
+2433714046u, 4222949502u,
+4220361840u, 1712034059u,
+3425469811u, 3690733394u,
+4148372108u, 1330324210u,
+594028478u, 2921867846u,
+1635026870u, 192883107u,
+780716741u, 1728752234u,
+3280331829u, 326029180u,
+3969463346u, 1436364519u,
+393215742u, 3349570000u,
+3824583307u, 1612122221u,
+2859809759u, 3808705738u,
+1379537552u, 1646032583u,
+2233466664u, 1432476832u,
+4023053163u, 2650381482u,
+2052294713u, 3552092450u,
+1628777059u, 1499109081u,
+3476440786u, 3829307897u,
+2960536756u, 1554038301u,
+1145519619u, 3190844552u,
+2902102606u, 3600725550u,
+237495366u, 540224401u,
+65721842u, 489963606u,
+1448662590u, 397635823u,
+1596489240u, 1562872448u,
+1790705123u, 2128624475u,
+180854224u, 2604346966u,
+1435705557u, 1262831810u,
+155445229u, 1672724608u,
+1669465176u, 1341975128u,
+663607706u, 2077310004u,
+3610042449u, 1911523866u,
+1043692997u, 1454396064u,
+2563776023u, 294527927u,
+1099072299u, 1389770549u,
+703505868u, 678706990u,
+2952353448u, 2026137563u,
+3603803785u, 629449419u,
+1933894405u, 3043213226u,
+226132789u, 2489287368u,
+1552847036u, 645684964u,
+3828089804u, 3632594520u,
+187883449u, 230403464u,
+3151491850u, 3272648435u,
+3729087873u, 1303930448u,
+2002861219u, 165370827u,
+916494250u, 1230085527u,
+3103338579u, 3064290191u,
+3807265751u, 3628174014u,
+231181488u, 851743255u,
+2295806711u, 1781190011u,
+2988893883u, 1554380634u,
+1142264800u, 3667013118u,
+1968445277u, 315203929u,
+2638023604u, 2290487377u,
+732137533u, 1909203251u,
+440398219u, 1891630171u,
+1380301172u, 1498556724u,
+4072067757u, 4165088768u,
+4204318635u, 441430649u,
+3931792696u, 197618179u,
+956300927u, 914413116u,
+3010839769u, 2837339569u,
+2148126371u, 1913303225u,
+3074915312u, 3117299654u,
+4139181436u, 2993479124u,
+3178848746u, 1357272220u,
+1438494951u, 507436733u,
+667183474u, 2084369203u,
+3854939912u, 1413396341u,
+126024219u, 146044391u,
+1016656857u, 3022024459u,
+3254014218u, 429095991u,
+165589978u, 1578546616u,
+985653208u, 1718653828u,
+623071693u, 366414107u,
+249776086u, 1207522198u,
+3047342438u, 2991127487u,
+3120876698u, 1684583131u,
+46987739u, 1157614300u,
+863214540u, 1087193030u,
+199124911u, 520792961u,
+3614377032u, 586863115u,
+3331828431u, 1013201099u,
+1716848157u, 4033596884u,
+1164298657u, 4140791139u,
+1146169032u, 1434258493u,
+3824360466u, 3242407770u,
+3725511003u, 232064808u,
+872586426u, 762243036u,
+2736953692u, 816692935u,
+512845449u, 3748861010u,
+2266795890u, 3781899767u,
+4290630595u, 517646945u,
+22638523u, 648000590u,
+959214578u, 558910384u,
+1283799121u, 3047062993u,
+1024246061u, 4027776454u,
+3544509313u, 622325861u,
+834785312u, 382936554u,
+411505255u, 1973395102u,
+1825135056u, 2725923798u,
+580988377u, 2826990641u,
+3474970689u, 1029055034u,
+812546227u, 2506885666u,
+2584372201u, 1758123094u,
+589567754u, 325737734u,
+345313518u, 2022370576u,
+3886113119u, 3338548567u,
+257578986u, 3698087965u,
+1776047957u, 1771384107u,
+3604937815u, 3198590202u,
+2305332220u, 191910725u,
+4232136669u, 427759438u,
+4244322689u, 542201663u,
+3315355162u, 2135941665u,
+556609672u, 45845311u,
+1175961330u, 3948351189u,
+23075771u, 3252374102u,
+1634635545u, 4151937410u,
+713127376u, 1467786451u,
+663013031u, 3444053918u,
+2638154051u, 810082938u,
+3077742128u, 1062268187u,
+2115441882u, 4081398201u,
+3735739145u, 2794294783u,
+2335576331u, 2560479831u,
+1379288194u, 4225182569u,
+2442302747u, 3948961926u,
+3958366652u, 3067277639u,
+3667516477u, 1709989541u,
+1516711748u, 2339636583u,
+4188504038u, 59581167u,
+2725013602u, 3639843023u,
+2658147000u, 2643979752u,
+3758739543u, 4189944477u,
+2470483982u, 877580602u,
+2995362413u, 118817200u,
+3252925478u, 2062343506u,
+3981838403u, 3762572073u,
+1231633714u, 4168280671u,
+2931588131u, 3284356565u,
+1129162571u, 732225574u,
+4173605289u, 1407328702u,
+1677744031u, 3532596884u,
+3232041815u, 1652884780u,
+2256541290u, 3459463480u,
+3740979556u, 259034107u,
+2227121257u, 1426140634u,
+3606709555u, 3424793077u,
+315836068u, 3200749877u,
+1386256573u, 24035717u,
+2982018998u, 1811050648u,
+234531934u, 1115203611u,
+1598686658u, 3146815575u,
+1603559457u, 323296368u,
+2632963283u, 1778459926u,
+739944537u, 579625482u,
+3486330348u, 492621815u,
+1231665285u, 2457048126u,
+3903349120u, 389846205u,
+3355404249u, 3275550588u,
+1052645068u, 862072556u,
+2834153464u, 1481069623u,
+2657392572u, 4279236653u,
+1688445808u, 701920051u,
+3740748788u, 3388062747u,
+1873358321u, 2152785640u,
+883382081u, 1005815394u,
+1020177209u, 734239551u,
+2371453141u, 100326520u,
+3488500412u, 1279682138u,
+2610427744u, 49703572u,
+3026361211u, 605900428u,
+302392721u, 2509302188u,
+1416453607u, 2815915291u,
+1862819968u, 519710058u,
+2450888314u, 4017598378u,
+937074653u, 3035635454u,
+1590230729u, 3268013438u,
+2710029305u, 12886044u,
+3711259084u, 2627383582u,
+3895772404u, 648534979u,
+260307902u, 855990313u,
+3669691805u, 263366740u,
+2938543471u, 414331688u,
+3080542944u, 3405007814u,
+3565059103u, 1190977418u,
+390836981u, 1606450012u,
+2649808239u, 2514169310u,
+2747519432u, 4129538640u,
+1721522849u, 492099164u,
+792990594u, 3625507637u,
+2271095827u, 2993032712u,
+2302363854u, 4013112951u,
+1111617969u, 2183845740u,
+795918276u, 1116991810u,
+3110898804u, 3963062126u,
+2737064702u, 462795667u,
+937372240u, 1343017609u,
+1091041189u, 2790555455u,
+277024217u, 25485284u,
+1166522068u, 1623631848u,
+241727183u, 2836158787u,
+3112996740u, 573836428u,
+2721658101u, 1937681565u,
+4175169209u, 3190765433u,
+1970000788u, 1668258120u,
+114616703u, 954762543u,
+199237753u, 4094644498u,
+2522281978u, 732086117u,
+1756889687u, 2936126607u,
+2437031370u, 4103143808u,
+3883389541u, 3171090854u,
+2483004780u, 1927385370u,
+2360538162u, 2740855009u,
+4241185118u, 1492209542u,
+1672737098u, 2148675559u,
+1789864670u, 2434313103u,
+2319172611u, 2760941207u,
+2636210123u, 1338083267u,
+1128080590u, 822806371u,
+1199583556u, 314727461u,
+1335160250u, 2084630531u,
+1156261526u, 316766066u,
+112090465u, 3129033323u,
+2746885618u, 636616055u,
+2582210744u, 1721064910u,
+3468394263u, 470463518u,
+2076016059u, 408721884u,
+2121041886u, 378460278u,
+1915948002u, 357324860u,
+2301682622u, 2691859523u,
+1869756364u, 2429314418u,
+2193146527u, 1185564327u,
+2614088922u, 1975527044u,
+919067651u, 2855948894u,
+3662539576u, 1943802836u,
+3529473373u, 1490330107u,
+366036094u, 3384241033u,
+4276268604u, 448403661u,
+4271796078u, 1910401882u,
+3077107698u, 299427366u,
+2035665349u, 3201262636u,
+3738454258u, 2554452696u,
+3588997135u, 3363895827u,
+1267505995u, 1852004679u,
+2237827073u, 2803250686u,
+3468044908u, 2143572850u,
+1728158656u, 1022551180u,
+1996680960u, 839529273u,
+2400647871u, 2201096054u,
+3606433628u, 2597259793u,
+3544595875u, 3909443124u,
+819278607u, 3447346709u,
+806136613u, 2711436388u,
+3656063205u, 837475154u,
+694525336u, 4070212073u,
+4011303412u, 1068395209u,
+438095290u, 484603494u,
+2673730227u, 737767009u,
+642310823u, 3914002299u,
+308425103u, 268427550u,
+1334387085u, 4069797497u,
+4280783219u, 2914011058u,
+4243643405u, 2849988118u,
+2504230175u, 1817156623u,
+2804200483u, 3406991497u,
+2948254999u, 2102063419u,
+1071272117u, 514889942u,
+571972433u, 1246595599u,
+1735616066u, 1539151988u,
+1230831543u, 277987182u,
+4269526481u, 991511607u,
+95237878u, 2005032160u,
+1291113144u, 626619670u,
+3560835907u, 164940926u,
+1433635018u, 116647396u,
+3039097112u, 2868163232u,
+1141645918u, 1764165478u,
+881378302u, 2159170082u,
+2953647681u, 1011320066u,
+184856151u, 1723308975u,
+336034862u, 2017579106u,
+1476681709u, 147523618u,
+3896252223u, 2264728166u,
+944743644u, 1694443528u,
+2690700128u, 1947321519u,
+735478508u, 4058183171u,
+260177668u, 505662155u,
+2391691262u, 1920739747u,
+3216960415u, 1898176786u,
+3722741628u, 1511077569u,
+449636564u, 983350414u,
+2580237367u, 2055059789u,
+1103819072u, 2089123665u,
+3873755579u, 2718467458u,
+3124338704u, 3204250304u,
+2475035432u, 1120017626u,
+3873758287u, 1982999824u,
+2950794582u, 780634378u,
+2842141483u, 4029205195u,
+1656892865u, 3330993377u,
+80890710u, 1953796601u,
+3873078673u, 136118734u,
+2317676604u, 4199091610u,
+1864448181u, 3063437608u,
+1699452298u, 1403506686u,
+1513069466u, 2348491299u,
+4273657745u, 4055855649u,
+1805475756u, 2562064338u,
+973124563u, 4197091358u,
+172861513u, 2858726767u,
+4271866024u, 3071338162u,
+3590386266u, 2328277259u,
+1096050703u, 1189614342u,
+459509140u, 771592405u,
+817999971u, 3740825152u,
+520400189u, 1941874618u,
+185232757u, 4032960199u,
+3928245258u, 3527721294u,
+1301118856u, 752188080u,
+3512945009u, 308584855u,
+2105373972u, 752872278u,
+3823368815u, 3760952096u,
+4250142168u, 2565680167u,
+3646354146u, 1259957455u,
+1085857127u, 3471066607u,
+38924274u, 3770488806u,
+1083869477u, 3312508103u,
+71956383u, 3738784936u,
+3099963860u, 1255084262u,
+4286969992u, 3621849251u,
+1190908967u, 1831557743u,
+2363435042u, 54945052u,
+4059585566u, 4023974274u,
+1788578453u, 3442180039u,
+2534883189u, 2432427547u,
+3909757989u, 731996369u,
+4168347425u, 1356028512u,
+2741583197u, 1280920000u,
+312887059u, 3259015297u,
+3946278527u, 4135481831u,
+1281043691u, 1121403845u,
+3312292477u, 1819941269u,
+1741932545u, 3293015483u,
+2127558730u, 713121337u,
+2635469238u, 486003418u,
+4015067527u, 2976737859u,
+2108187161u, 927011680u,
+1970188338u, 4177613234u,
+1799789551u, 2118505126u,
+4134691985u, 1958963937u,
+1929210029u, 2555835851u,
+2768832862u, 910892050u,
+2567532373u, 4075249328u,
+86689814u, 3726640307u,
+1392137718u, 1240000030u,
+4104757832u, 3026358429u,
+313797689u, 1435798509u,
+3101500919u, 1241665335u,
+3573008472u, 3615577014u,
+3767659003u, 3134294021u,
+4063565523u, 2296824134u,
+1541946015u, 3087190425u,
+2693152531u, 2199672572u,
+2123763822u, 1034244398u,
+857839960u, 2515339233u,
+2228007483u, 1628096047u,
+2116502287u, 2502657424u,
+2809830736u, 460237542u,
+450205998u, 3646921704u,
+3818199357u, 1808504491u,
+1950698961u, 2069753399u,
+3657033172u, 3734547671u,
+4067859590u, 3292597295u,
+1106466069u, 356742959u,
+2469567432u, 3495418823u,
+183440071u, 3248055817u,
+3662626864u, 1750561299u,
+3926138664u, 4088592524u,
+567122118u, 3810297651u,
+992181339u, 3384018814u,
+3272124369u, 3177596743u,
+320086295u, 2316548367u,
+100741310u, 451656820u,
+4086604273u, 3759628395u,
+2553391092u, 1745659881u,
+3650357479u, 2390172694u,
+330172533u, 767377322u,
+526742034u, 4102497288u,
+2088767754u, 164402616u,
+2482632320u, 2352347393u,
+1873658044u, 3861555476u,
+2751052984u, 1767810825u,
+20037241u, 545143220u,
+2594532522u, 472304191u,
+3441135892u, 3323383489u,
+258785117u, 2977745165u,
+2781737565u, 2963590112u,
+2756998822u, 207428029u,
+2581558559u, 3824717027u,
+1258619503u, 3472047571u,
+2648427775u, 2360400900u,
+2393763818u, 2332399088u,
+3932701729u, 884421165u,
+1396468647u, 1377764574u,
+4061795938u, 1559119087u,
+3343596838u, 3604258095u,
+1435134775u, 1099809675u,
+908163739u, 1418405656u,
+368446627u, 3741651161u,
+3374512975u, 3542220540u,
+3244772570u, 200009340u,
+3198975081u, 2521038253u,
+4081637863u, 337070226u,
+3235259030u, 3897262827u,
+736956644u, 641040550u,
+644850146u, 1306761320u,
+4219448634u, 193750500u,
+3293278106u, 1383997679u,
+1242645122u, 4109252858u,
+450747727u, 3716617561u,
+362725793u, 2252520167u,
+3377483696u, 1788337208u,
+8130777u, 3226734120u,
+759239140u, 1012411364u,
+1658628529u, 2911512007u,
+1002580201u, 1681898320u,
+3039016929u, 4294520281u,
+367022558u, 3071359622u,
+3205848570u, 152989999u,
+3839042136u, 2357687350u,
+4273132307u, 3898950547u,
+1176841812u, 1314157485u,
+75443951u, 1027027239u,
+1858986613u, 2040551642u,
+36574105u, 2603059541u,
+3456147251u, 2137668425u,
+4077477194u, 3565689036u,
+491832241u, 363703593u,
+2579177168u, 3589545214u,
+265993036u, 1864569342u,
+4149035573u, 3189253455u,
+1072259310u, 3153745937u,
+923017956u, 490608221u,
+855846773u, 845706553u,
+1018226240u, 1604548872u,
+3833372385u, 3287246572u,
+2757959551u, 2452872151u,
+1553870564u, 1713154780u,
+2649450292u, 500120236u,
+84251717u, 661869670u,
+1444911517u, 2489716881u,
+2810524030u, 1561519055u,
+3884088359u, 2509890699u,
+4247155916u, 1005636939u,
+3224066062u, 2774151984u,
+2035978240u, 2514910366u,
+1478837908u, 3144450144u,
+2107011431u, 96459446u,
+3587732908u, 2389230590u,
+3287635953u, 250533792u,
+1235983679u, 4237425634u,
+3704645833u, 3882376657u,
+2976369049u, 1187061987u,
+276949224u, 4100839753u,
+1698347543u, 1629662314u,
+1556151829u, 3784939568u,
+427484362u, 4246879223u,
+3155311770u, 4285163791u,
+1693376813u, 124492786u,
+1858777639u, 3476334357u,
+1941442701u, 1121980173u,
+3485932087u, 820852908u,
+358032121u, 2511026735u,
+1873607283u, 2556067450u,
+2248275536u, 1528632094u,
+1535473864u, 556796152u,
+1499201704u, 1472623890u,
+1526518503u, 3692729434u,
+1476438092u, 2913077464u,
+335109599u, 2167614601u,
+4121131078u, 3158127917u,
+3051522276u, 4046477658u,
+2857717851u, 1863977403u,
+1341023343u, 692059110u,
+1802040304u, 990407433u,
+3285847572u, 319814144u,
+561105582u, 1540183799u,
+4052924496u, 2926590471u,
+2244539806u, 439121871u,
+3317903224u, 3178387550u,
+4265214507u, 82077489u,
+1978918971u, 4279668976u,
+128732476u, 2853224222u,
+464407878u, 4190838199u,
+997819001u, 3250520802u,
+2330081301u, 4095846095u,
+733509243u, 1583801700u,
+722314527u, 3552883023u,
+1403784280u, 432327540u,
+1877837196u, 3912423882u,
+505219998u, 696031431u,
+908238873u, 4189387259u,
+8759461u, 2540185277u,
+3385159748u, 381355877u,
+2519951681u, 1679786240u,
+2019419351u, 4051584612u,
+1933923923u, 3768201861u,
+1670133081u, 3454981037u,
+700836153u, 1675560450u,
+371560700u, 338262316u,
+847351840u, 2222395828u,
+3130433948u, 405251683u,
+3037574880u, 184098830u,
+453340528u, 1385561439u,
+2224044848u, 4071581802u,
+1431235296u, 5570097u,
+570114376u, 2287305551u,
+2272418128u, 803575837u,
+3943113491u, 414959787u,
+708083137u, 2452657767u,
+4019147902u, 3841480082u,
+3791794715u, 2965956183u,
+2763690963u, 2350937598u,
+3424361375u, 779434428u,
+1274947212u, 686105485u,
+3426668051u, 3692865672u,
+3057021940u, 2285701422u,
+349809124u, 1379278508u,
+3623750518u, 215970497u,
+1783152480u, 823305654u,
+216118434u, 1787189830u,
+3692048450u, 2272612521u,
+3032187389u, 4159715581u,
+1388133148u, 1611772864u,
+2544383526u, 552925303u,
+3420960112u, 3198900547u,
+3503230228u, 2603352423u,
+2318375898u, 4064071435u,
+3006227299u, 4194096960u,
+1283392422u, 1510460996u,
+174272138u, 3671038966u,
+1775955687u, 1719108984u,
+1763892006u, 1385029063u,
+4083790740u, 406757708u,
+684087286u, 531310503u,
+3329923157u, 3492083607u,
+1059031410u, 3037314475u,
+3105682208u, 3382290593u,
+2292208503u, 426380557u,
+97373678u, 3842309471u,
+777173623u, 3241407531u,
+303065016u, 1477104583u,
+4234905200u, 2512514774u,
+2649684057u, 1397502982u,
+1802596032u, 3973022223u,
+2543566442u, 3139578968u,
+3193669211u, 811750340u,
+4013496209u, 567361887u,
+4169410406u, 3622282782u,
+3403136990u, 2540585554u,
+895210040u, 3862229802u,
+1145435213u, 4146963980u,
+784952939u, 943914610u,
+573034522u, 464420660u,
+2356867109u, 3054347639u,
+3985088434u, 1911188923u,
+583391304u, 176468511u,
+2990150068u, 2338031599u,
+519948041u, 3181425568u,
+496106033u, 4110294665u,
+2736756930u, 1196757691u,
+1089679033u, 240953857u,
+3399092928u, 4040779538u,
+2843673626u, 240495962u,
+3017658263u, 3828377737u,
+4243717901u, 2448373688u,
+2759616657u, 2246245780u,
+308018483u, 4262383425u,
+2731780771u, 328023017u,
+2884443148u, 841480070u,
+3188015819u, 4051263539u,
+2298178908u, 2944209234u,
+1372958390u, 4164532914u,
+4074952232u, 1683612329u,
+2155036654u, 1872815858u,
+2041174279u, 2368092311u,
+206775997u, 2283918569u,
+645945606u, 115406202u,
+4206471368u, 3923500892u,
+2217060665u, 350160869u,
+706531239u, 2824302286u,
+509981657u, 1469342315u,
+140980u, 1891558063u,
+164887091u, 3094962711u,
+3437115622u, 13327420u,
+422986366u, 330624974u,
+3630863408u, 2425505046u,
+824008515u, 3543885677u,
+918718096u, 376390582u,
+3224043675u, 3724791476u,
+1837192976u, 2968738516u,
+3424344721u, 3187805406u,
+1550978788u, 1743089918u,
+4251270061u, 645016762u,
+3855037968u, 1928519266u,
+1373803416u, 2289007286u,
+1889218686u, 1610271373u,
+3059200728u, 2108753646u,
+582042641u, 812347242u,
+3188172418u, 191994904u,
+1343511943u, 2247006571u,
+463291708u, 2697254095u,
+1534175504u, 1106275740u,
+622521957u, 917121602u,
+4095777215u, 3955972648u,
+3852234638u, 2845309942u,
+3299763344u, 2864033668u,
+2554947496u, 799569078u,
+2551629074u, 1102873346u,
+2661022773u, 2006922227u,
+2900438444u, 1448194126u,
+1321567432u, 1983773590u,
+1237256330u, 3449066284u,
+1691553115u, 3274671549u,
+4271625619u, 2741371614u,
+3285899651u, 786322314u,
+1586632825u, 564385522u,
+2530557509u, 2974240289u,
+1244759631u, 3263135197u,
+3592389776u, 3570296884u,
+2749873561u, 521432811u,
+987586766u, 3206261120u,
+1327840078u, 4078716491u,
+1753812954u, 976892272u,
+1827135136u, 1781944746u,
+1328622957u, 1015377974u,
+3439601008u, 2209584557u,
+2482286699u, 1109175923u,
+874877499u, 2036083451u,
+483570344u, 1091877599u,
+4190721328u, 1129462471u,
+640035849u, 1867372700u,
+920761165u, 3273688770u,
+1623777358u, 3389003793u,
+3241132743u, 2734783008u,
+696674661u, 2502161880u,
+1646071378u, 1164309901u,
+350411888u, 1978005963u,
+2253937037u, 7371540u,
+989577914u, 3626554867u,
+3214796883u, 531343826u,
+398899695u, 1145247203u,
+1516846461u, 3656006011u,
+529303412u, 3318455811u,
+3062828129u, 1696355359u,
+3698796465u, 3155218919u,
+1457595996u, 3191404246u,
+1395609912u, 2917345728u,
+1237411891u, 1854985978u,
+1091884675u, 3504488111u,
+3109924189u, 1628881950u,
+3939149151u, 878608872u,
+778235395u, 1052990614u,
+903730231u, 2069566979u,
+2437686324u, 3163786257u,
+2257884264u, 2123173186u,
+939764916u, 2933010098u,
+1235300371u, 1256485167u,
+1950274665u, 2180372319u,
+2648400302u, 122035049u,
+1883344352u, 2083771672u,
+3712110541u, 321199441u,
+1896357377u, 508560958u,
+3066325351u, 2770847216u,
+3177982504u, 296902736u,
+1486926688u, 456842861u,
+601221482u, 3992583643u,
+2794121515u, 1533934172u,
+1706465470u, 4281971893u,
+2557027816u, 900741486u,
+227175484u, 550595824u,
+690918144u, 2825943628u,
+90375300u, 300318232u,
+1985329734u, 1440763373u,
+3670603707u, 2533900859u,
+3253901179u, 542270815u,
+3677388841u, 307706478u,
+2570910669u, 3320103693u,
+1273768482u, 1216399252u,
+1652924805u, 1043647584u,
+1120323676u, 639941430u,
+325675502u, 3652676161u,
+4241680335u, 1545838362u,
+1991398008u, 4100211814u,
+1097584090u, 3262252593u,
+2254324292u, 1765019121u,
+4060211241u, 2315856188u,
+3704419305u, 411263051u,
+238929055u, 3540688404u,
+3094544537u, 3250435765u,
+3460621305u, 1967599860u,
+2016157366u, 847389916u,
+1659615591u, 4020453639u,
+901109753u, 2682611693u,
+1661364280u, 177155177u,
+3210561911u, 3802058181u,
+797089608u, 3286110054u,
+2110358240u, 1353279028u,
+2479975820u, 471725410u,
+2219863904u, 3623364733u,
+3167128228u, 1052188336u,
+3656587111u, 721788662u,
+3061255808u, 1615375832u,
+924941453u, 2547780700u,
+3328169224u, 1310964134u,
+2701956286u, 4145497671u,
+1421461094u, 1221397398u,
+1589183618u, 1492533854u,
+449740816u, 2686506989u,
+3035198924u, 1682886232u,
+2529760244u, 3342031659u,
+1235084019u, 2151665147u,
+2315686577u, 3282027660u,
+1140138691u, 2754346599u,
+2091754612u, 1178454681u,
+4226896579u, 2942520471u,
+2122168506u, 3751680858u,
+3213794286u, 2601416506u,
+4142747914u, 3951404257u,
+4243249649u, 748595836u,
+4004834921u, 238887261u,
+1927321047u, 2217148444u,
+205977665u, 1885975275u,
+186020771u, 2367569534u,
+2941662631u, 2608559272u,
+3342096731u, 741809437u,
+1962659444u, 3539886328u,
+3036596491u, 2282550094u,
+2366462727u, 2748286642u,
+2144472852u, 1390394371u,
+1257385924u, 2205425874u,
+2119055686u, 46865323u,
+3597555910u, 3188438773u,
+2372320753u, 3641116924u,
+3116286108u, 2680722658u,
+3371014971u, 2058751609u,
+2966943726u, 2345078707u,
+2330535244u, 4013841927u,
+1169588594u, 857915866u,
+1875260989u, 3175831309u,
+3193475664u, 1955181430u,
+923161569u, 4068653043u,
+776445899u, 954196929u,
+61509556u, 4248237857u,
+3808667664u, 581227317u,
+2893240187u, 4159497403u,
+4212264930u, 3973886195u,
+2077539039u, 851579036u,
+2957587591u, 772351886u,
+1173659554u, 946748363u,
+2794103714u, 2094375930u,
+4234750213u, 3671645488u,
+2614250782u, 2620465358u,
+3122317317u, 2365436865u,
+3393973390u, 523513960u,
+3645735309u, 2766686992u,
+2023960931u, 2312244996u,
+1875932218u, 3253711056u,
+3622416881u, 3274929205u,
+612094988u, 1555465129u,
+2114270406u, 3553762793u,
+1832633644u, 1087551556u,
+3306195841u, 1702313921u,
+3675066046u, 1735998785u,
+1690923980u, 1482649756u,
+1171351291u, 2043136409u,
+1962596992u, 461214626u,
+3278253346u, 1392428048u,
+3744621107u, 1028502697u,
+3991171462u, 1014064003u,
+3642345425u, 3186995039u,
+6114625u, 3359104346u,
+414856965u, 2814387514u,
+3583605071u, 2497896367u,
+1024572712u, 1927582962u,
+2892797583u, 845302635u,
+328548052u, 1523379748u,
+3392622118u, 1347167673u,
+1012316581u, 37767602u,
+2647726017u, 1070326065u,
+2075035198u, 4202817168u,
+2502924707u, 2612406822u,
+2187115553u, 1180137213u,
+701024148u, 1481965992u,
+3223787553u, 2083541843u,
+203230202u, 3876887380u,
+1334816273u, 2870251538u,
+2186205850u, 3985213979u,
+333533378u, 806507642u,
+1010064531u, 713520765u,
+3084131515u, 2637421459u,
+1703168933u, 1517562266u,
+4089081247u, 3231042924u,
+3079916123u, 3154574447u,
+2253948262u, 1725190035u,
+2452539325u, 1343734533u,
+213706059u, 2519409656u,
+108055211u, 2916327746u,
+587001593u, 1917607088u,
+4202913084u, 926304016u,
+469255411u, 4042080256u,
+3498936874u, 246692543u,
+495780578u, 438717281u,
+2259272650u, 4011324645u,
+2836854664u, 2317249321u,
+946828752u, 1280403658u,
+1905648354u, 2034241661u,
+774652981u, 1285694082u,
+2200307766u, 2158671727u,
+1135162148u, 232040752u,
+397012087u, 1717527689u,
+1720414106u, 918797022u,
+2580119304u, 3568069742u,
+2904461070u, 3893453420u,
+973817938u, 667499332u,
+3785870412u, 2088861715u,
+1565179401u, 600903026u,
+591806775u, 3512242245u,
+997964515u, 2339605347u,
+1134342772u, 3234226304u,
+4084179455u, 302315791u,
+2445626811u, 2590372496u,
+345572299u, 2274770442u,
+3600587867u, 3706939009u,
+1430507980u, 2656330434u,
+1079209397u, 2122849632u,
+1423705223u, 3826321888u,
+3683385276u, 1057038163u,
+1242840526u, 3987000643u,
+2398253089u, 1538190921u,
+1295898647u, 3570196893u,
+3065138774u, 3111336863u,
+2524949549u, 4203895425u,
+3025864372u, 968800353u,
+1023721001u, 3763083325u,
+526350786u, 635552097u,
+2308118370u, 2166472723u,
+2196937373u, 2643841788u,
+3040011470u, 4010301879u,
+2782379560u, 3474682856u,
+4201389782u, 4223278891u,
+1457302296u, 2251842132u,
+1090062008u, 3188219189u,
+292733931u, 1424229089u,
+1590782640u, 1365212370u,
+3975957073u, 3982969588u,
+2927147928u, 1048291071u,
+2766680094u, 884908196u,
+35237839u, 2221180633u,
+2490333812u, 4098360768u,
+4029081103u, 3490831871u,
+2392516272u, 3455379186u,
+3948800722u, 335456628u,
+2105117968u, 4181629008u,
+1044201772u, 3335754111u,
+540133451u, 3313113759u,
+3786107905u, 2627207327u,
+3540337875u, 3473113388u,
+3430536378u, 2514123129u,
+2124531276u, 3872633376u,
+3272957388u, 3501994650u,
+2418881542u, 487365389u,
+3877672368u, 1512866656u,
+3486531087u, 2102955203u,
+1136054817u, 3004241477u,
+1549075351u, 1302002008u,
+3936430045u, 2258587644u,
+4109233936u, 3679809321u,
+3467083076u, 2484463221u,
+1594979755u, 529218470u,
+3527024461u, 1147434678u,
+106799023u, 1823161970u,
+1704656738u, 1675883700u,
+3308746763u, 1875093248u,
+1352868568u, 1898561846u,
+2508994984u, 3177750780u,
+4217929592u, 400784472u,
+80090315u, 3564414786u,
+3841585648u, 3379293868u,
+160353261u, 2413172925u,
+2378499279u, 673436726u,
+1505702418u, 1330977363u,
+1853298225u, 3201741245u,
+2135714208u, 4069554166u,
+3715612384u, 3692488887u,
+3680311316u, 4274382900u,
+914186796u, 2264886523u,
+3869634032u, 1254199592u,
+1131020455u, 194781179u,
+429923922u, 2763792336u,
+2052895198u, 3997373194u,
+3440090658u, 2165746386u,
+1575500242u, 3463310191u,
+2064974716u, 3779513671u,
+3106421434u, 880320527u,
+3281914119u, 286569042u,
+3909096631u, 122359727u,
+1429837716u, 252230074u,
+4111461225u, 762273136u,
+93658514u, 2766407143u,
+3623657004u, 3869801679u,
+3925695921u, 2390397316u,
+2499025338u, 2741806539u,
+2507199021u, 1659221866u,
+361292116u, 4048761557u,
+3797133396u, 1517903247u,
+3121647246u, 3884308578u,
+1697201500u, 1558800262u,
+4150812360u, 3161302278u,
+2610217849u, 641564641u,
+183814518u, 2075245419u,
+611996508u, 2223461433u,
+329123979u, 121860586u,
+860985829u, 1137889144u,
+4018949439u, 2904348960u,
+947795261u, 1992594155u,
+4255427501u, 2281583851u,
+2892637604u, 1478186924u,
+3050771207u, 2767035539u,
+373510582u, 1963520320u,
+3763848370u, 3756817798u,
+627269409u, 1806905031u,
+1814444610u, 3646665053u,
+1822693920u, 278515794u,
+584050483u, 4142579188u,
+2149745808u, 3193071606u,
+1179706341u, 2693495182u,
+3259749808u, 644172091u,
+880509048u, 3340630542u,
+3365160815u, 2384445068u,
+3053081915u, 2840648309u,
+1986990122u, 1084703471u,
+2370410550u, 1627743573u,
+2244943480u, 4057483496u,
+2611595995u, 2470013639u,
+4024732359u, 3987190386u,
+873421687u, 2447660175u,
+3226583022u, 767655877u,
+2528024413u, 1962070688u,
+1233635843u, 2163464207u,
+659054446u, 854207134u,
+258410943u, 4197831420u,
+2515400215u, 3100476924u,
+1961549594u, 2219491151u,
+3997658851u, 163850514u,
+470325051u, 2598261204u,
+3052145580u, 59836528u,
+1376188597u, 966733415u,
+850667549u, 3622479237u,
+1083731990u, 1525777459u,
+4005126532u, 1428155540u,
+2781907007u, 943739431u,
+1493961005u, 2839096988u,
+2000057832u, 1941829603u,
+1901484772u, 939810041u,
+3377407371u, 3090115837u,
+3310840540u, 2068409688u,
+3261383939u, 2212130277u,
+2594774045u, 2912652418u,
+4179816101u, 3534504531u,
+3349254805u, 2796552902u,
+1385421283u, 4259908631u,
+3714780837u, 3070073945u,
+3372846298u, 3835884044u,
+3047965714u, 3009018735u,
+744091167u, 1861124263u,
+2764936304u, 1338171648u,
+4222019554u, 1395200692u,
+1371426007u, 3338031581u,
+2525665319u, 4196233786u,
+2332743921u, 1474702008u,
+2274266301u, 4255175517u,
+2290169528u, 1793910997u,
+2188254024u, 354202001u,
+3864458796u, 4280290498u,
+1554419340u, 1733094688u,
+2010552302u, 1561807039u,
+664313606u, 2548990879u,
+1084699349u, 3233936866u,
+973895284u, 2386881969u,
+1831995860u, 2961465052u,
+1428704144u, 3269904970u,
+231648253u, 2602483763u,
+4125013173u, 3319187387u,
+3347011944u, 1892898231u,
+4019114049u, 868879116u,
+4085937045u, 2378411019u,
+1072588531u, 3547435717u,
+2208070766u, 1069899078u,
+3142980597u, 2337088907u,
+1593338562u, 919414554u,
+688077849u, 3625708135u,
+1472447348u, 1947711896u,
+3953006207u, 877438080u,
+845995820u, 3150361443u,
+3053496713u, 2484577841u,
+224271045u, 2914958001u,
+2682612949u, 806655563u,
+2436224507u, 1907729235u,
+2920583824u, 1251814062u,
+2070814520u, 4034325578u,
+497847539u, 2714317144u,
+385182008u, 640855184u,
+1327075087u, 1062468773u,
+1757405994u, 1374270191u,
+4263183176u, 3041193150u,
+1037871524u, 3633173991u,
+4231821821u, 2830131945u,
+3505072908u, 2830570613u,
+4195208715u, 575398021u,
+3992840257u, 3691788221u,
+1949847968u, 2999344380u,
+3183782163u, 3723754342u,
+759716128u, 3284107364u,
+1714496583u, 15918244u,
+820509475u, 2553936299u,
+2201876606u, 4237151697u,
+2605688266u, 3253705097u,
+1008333207u, 712158730u,
+1722280252u, 1933868287u,
+4152736859u, 2097020806u,
+584426382u, 2836501956u,
+2522777566u, 1996172430u,
+2122199776u, 1069285218u,
+1474209360u, 690831894u,
+107482532u, 3695525410u,
+670591796u, 768977505u,
+2412057331u, 3647886687u,
+3110327607u, 1072658422u,
+379861934u, 1557579480u,
+4124127129u, 2271365865u,
+3880613089u, 739218494u,
+547346027u, 388559045u,
+3147335977u, 176230425u,
+3094853730u, 2554321205u,
+1495176194u, 4093461535u,
+3521297827u, 4108148413u,
+1913727929u, 1177947623u,
+1911655402u, 1053371241u,
+3265708874u, 1266515850u,
+1045540427u, 3194420196u,
+3717104621u, 1144474110u,
+1464392345u, 52070157u,
+4144237690u, 3350490823u,
+4166253320u, 2747410691u,
+};
+
+// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
+bool Test(int offset, int len = 0) {
+#undef Check
+#undef IsAlive
+
+#define Check(x) do { \
+ const uint32_t actual = (x), e = expected[index++]; \
+ bool ok = actual == e; \
+ if (!ok) { \
+ cerr << "expected " << hex << e << " but got " << actual << endl; \
+ ++errors; \
+ } \
+ assert(ok); \
+} while (0)
+
+#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
+
+ // After the following line is where the uses of "Check" and such will go.
+ static int index = 0;
if (offset == -1) { int alive = 0; { uint64_t h = farmhashna::Hash64WithSeeds(farm_hash_data, len++, SEED0, SEED1); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } { uint64_t h = farmhashna::Hash64WithSeed(farm_hash_data, len++, SEED); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } { uint64_t h = farmhashna::Hash64(farm_hash_data, len++); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } len -= 3; return alive > 0; }
{ uint64_t h = farmhashna::Hash64WithSeeds(farm_hash_data + offset, len, SEED0, SEED1); Check(h >> 32); Check((h << 32) >> 32); }
{ uint64_t h = farmhashna::Hash64WithSeed(farm_hash_data + offset, len, SEED); Check(h >> 32); Check((h << 32) >> 32); }
{ uint64_t h = farmhashna::Hash64(farm_hash_data + offset, len); Check(h >> 32); Check((h << 32) >> 32); }
-
- return true;
-#undef Check
-#undef IsAlive
-}
-
-int RunTest() {
- Setup();
- int i = 0;
- cout << "Running farmhashnaTest";
- if (!Test(-1)) {
- cout << "... Unavailable\n";
- return NoteErrors();
- }
- // Good. The function is attempting to hash, so run the full test.
- int errors_prior_to_test = errors;
- for ( ; i < kTestSize - 1; i++) {
- Test(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- Test(0, i);
- }
- Test(0, kDataSize);
- cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
- return NoteErrors();
-}
-
-#else
-
-// After the following line is where the code to print hash codes will go.
-void Dump(int offset, int len) {
+
+ return true;
+#undef Check
+#undef IsAlive
+}
+
+int RunTest() {
+ Setup();
+ int i = 0;
+ cout << "Running farmhashnaTest";
+ if (!Test(-1)) {
+ cout << "... Unavailable\n";
+ return NoteErrors();
+ }
+ // Good. The function is attempting to hash, so run the full test.
+ int errors_prior_to_test = errors;
+ for ( ; i < kTestSize - 1; i++) {
+ Test(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ Test(0, i);
+ }
+ Test(0, kDataSize);
+ cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
+ return NoteErrors();
+}
+
+#else
+
+// After the following line is where the code to print hash codes will go.
+void Dump(int offset, int len) {
{ uint64_t h = farmhashna::Hash64WithSeeds(farm_hash_data + offset, len, SEED0, SEED1); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
{ uint64_t h = farmhashna::Hash64WithSeed(farm_hash_data + offset, len, SEED); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
{ uint64_t h = farmhashna::Hash64(farm_hash_data + offset, len); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
-}
-
-#endif
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-
-} // namespace farmhashnaTest
-
-#if !TESTING
-int main(int argc, char** argv) {
- Setup();
- cout << "uint32_t expected[] = {\n";
- int i = 0;
- for ( ; i < kTestSize - 1; i++) {
- farmhashnaTest::Dump(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- farmhashnaTest::Dump(0, i);
- }
- farmhashnaTest::Dump(0, kDataSize);
- cout << "};\n";
-}
-#endif
-#ifndef FARMHASH_SELF_TEST_GUARD
-#define FARMHASH_SELF_TEST_GUARD
-#include <cstdio>
-#include <iostream>
-#include <string.h>
-
-using std::cout;
-using std::cerr;
-using std::endl;
-using std::hex;
-
-static const uint64_t kSeed0 = 1234567;
-static const uint64_t kSeed1 = k0;
-static const int kDataSize = 1 << 20;
-static const int kTestSize = 300;
-#define kSeed128 Uint128(kSeed0, kSeed1)
-
+}
+
+#endif
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+
+} // namespace farmhashnaTest
+
+#if !TESTING
+int main(int argc, char** argv) {
+ Setup();
+ cout << "uint32_t expected[] = {\n";
+ int i = 0;
+ for ( ; i < kTestSize - 1; i++) {
+ farmhashnaTest::Dump(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ farmhashnaTest::Dump(0, i);
+ }
+ farmhashnaTest::Dump(0, kDataSize);
+ cout << "};\n";
+}
+#endif
+#ifndef FARMHASH_SELF_TEST_GUARD
+#define FARMHASH_SELF_TEST_GUARD
+#include <cstdio>
+#include <iostream>
+#include <string.h>
+
+using std::cout;
+using std::cerr;
+using std::endl;
+using std::hex;
+
+static const uint64_t kSeed0 = 1234567;
+static const uint64_t kSeed1 = k0;
+static const int kDataSize = 1 << 20;
+static const int kTestSize = 300;
+#define kSeed128 Uint128(kSeed0, kSeed1)
+
static char farm_hash_data[kDataSize];
-
-static int completed_self_tests = 0;
-static int errors = 0;
-
+
+static int completed_self_tests = 0;
+static int errors = 0;
+
// Initialize farm_hash_data to pseudorandom values.
-void Setup() {
- if (completed_self_tests == 0) {
- uint64_t a = 9;
- uint64_t b = 777;
- for (int i = 0; i < kDataSize; i++) {
- a += b;
- b += a;
- a = (a ^ (a >> 41)) * k0;
- b = (b ^ (b >> 41)) * k0 + i;
- uint8_t u = b >> 37;
+void Setup() {
+ if (completed_self_tests == 0) {
+ uint64_t a = 9;
+ uint64_t b = 777;
+ for (int i = 0; i < kDataSize; i++) {
+ a += b;
+ b += a;
+ a = (a ^ (a >> 41)) * k0;
+ b = (b ^ (b >> 41)) * k0 + i;
+ uint8_t u = b >> 37;
memcpy(farm_hash_data + i, &u, 1); // uint8_t -> char
- }
- }
-}
-
-int NoteErrors() {
-#define NUM_SELF_TESTS 9
- if (++completed_self_tests == NUM_SELF_TESTS)
- std::exit(errors > 0);
- return errors;
-}
-
-template <typename T> inline bool IsNonZero(T x) {
- return x != 0;
-}
-
-template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
- return x != Uint128(0, 0);
-}
-
-#endif // FARMHASH_SELF_TEST_GUARD
-
-namespace farmhashntTest {
-
-uint32_t CreateSeed(int offset, int salt) {
- uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h += static_cast<uint32_t>(offset & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- return h;
-}
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-#define SEED CreateSeed(offset, -1)
-#define SEED0 CreateSeed(offset, 0)
-#define SEED1 CreateSeed(offset, 1)
-
-#undef TESTING
-#define TESTING 1
-#if TESTING
-uint32_t expected[] = {
-2681724312u,
-797982799u,
-921001710u,
-2134990486u,
-2244477846u,
-2992121793u,
-3943596029u,
-452431531u,
-2557197665u,
-2532580744u,
-3099673830u,
-3696623795u,
-3281581178u,
-1882212500u,
-275903667u,
-3033004529u,
-1402319660u,
-2699376854u,
-4222949502u,
-1712034059u,
-1330324210u,
-2921867846u,
-1728752234u,
-326029180u,
-3349570000u,
-1612122221u,
-1646032583u,
-1432476832u,
-3552092450u,
-1499109081u,
-1554038301u,
-3190844552u,
-540224401u,
-489963606u,
-1562872448u,
-2128624475u,
-1262831810u,
-1672724608u,
-2077310004u,
-1911523866u,
-294527927u,
-1389770549u,
-2026137563u,
-629449419u,
-2489287368u,
-645684964u,
-230403464u,
-3272648435u,
-165370827u,
-1230085527u,
-3628174014u,
-851743255u,
-1554380634u,
-3667013118u,
-2290487377u,
-1909203251u,
-1498556724u,
-4165088768u,
-197618179u,
-914413116u,
-1913303225u,
-3117299654u,
-1357272220u,
-507436733u,
-1413396341u,
-146044391u,
-429095991u,
-3056862311u,
-366414107u,
-2293458109u,
-1684583131u,
-1170404994u,
-520792961u,
-1577421232u,
-4033596884u,
-4229339322u,
-3242407770u,
-2649785113u,
-816692935u,
-3555213933u,
-517646945u,
-2180594090u,
-3047062993u,
-2391606125u,
-382936554u,
-788479970u,
-2826990641u,
-3167748333u,
-1758123094u,
-389974094u,
-3338548567u,
-2583576230u,
-3198590202u,
-4155628142u,
-542201663u,
-2856634168u,
-3948351189u,
-4194218315u,
-1467786451u,
-2743592929u,
-1062268187u,
-3810665822u,
-2560479831u,
-997658837u,
-3067277639u,
-1211737169u,
-59581167u,
-1389679610u,
-4189944477u,
-100876854u,
-2062343506u,
-3088828656u,
-3284356565u,
-3130054947u,
-3532596884u,
-3887208531u,
-259034107u,
-3233195759u,
-3200749877u,
-760633989u,
-1115203611u,
-1516407838u,
-1778459926u,
-2146672889u,
-2457048126u,
-2217471853u,
-862072556u,
-3745267835u,
-701920051u,
-581695350u,
-1410111809u,
-3326135446u,
-2187968410u,
-4267859263u,
-479241367u,
-2868987960u,
-704325635u,
-1418509533u,
-735688735u,
-3283299459u,
-813690332u,
-1439630796u,
-3195309868u,
-1616408198u,
-3254795114u,
-2799925823u,
-3929484338u,
-1798536177u,
-4205965408u,
-1499475160u,
-4247675634u,
-3779953975u,
-785893184u,
-2778575413u,
-1160134629u,
-823113169u,
-4116162021u,
-4167766971u,
-2487440590u,
-4004655503u,
-4044418876u,
-1462554406u,
-2011102035u,
-4265993528u,
-576405853u,
-4038839101u,
-2425317635u,
-1401013391u,
-3062418115u,
-3167030094u,
-2602636307u,
-4264167741u,
-4017058800u,
-1029665228u,
-4036354071u,
-2670703363u,
-688472265u,
-1054670286u,
-338058159u,
-1539305024u,
-146827036u,
-4060134777u,
-2502815838u,
-1603444633u,
-2448966429u,
-3891353218u,
-1082330589u,
-201837927u,
-2848283092u,
-883849006u,
-1982110346u,
-541496720u,
-133643215u,
-3847827123u,
-4015671361u,
-2849988118u,
-3452457457u,
-2102063419u,
-3281002516u,
-1539151988u,
-1147951686u,
-2005032160u,
-2415262714u,
-116647396u,
-1029284767u,
-2159170082u,
-1919171906u,
-2017579106u,
-2473524405u,
-1694443528u,
-3671562289u,
-505662155u,
-1019936943u,
-1511077569u,
-773792826u,
-2089123665u,
-484732447u,
-1120017626u,
-2809286837u,
-4029205195u,
-1097806406u,
-136118734u,
-4017075736u,
-1403506686u,
-1516736273u,
-2562064338u,
-2984955003u,
-3071338162u,
-1923531348u,
-771592405u,
-2586632018u,
-4032960199u,
-2687561076u,
-308584855u,
-1692079268u,
-2565680167u,
-3674576684u,
-3770488806u,
-69201295u,
-1255084262u,
-3593730713u,
-54945052u,
-1939595371u,
-2432427547u,
-2295501078u,
-1280920000u,
-82177963u,
-1121403845u,
-2889101923u,
-713121337u,
-1747052377u,
-927011680u,
-4142246789u,
-1958963937u,
-1636932722u,
-4075249328u,
-2025886508u,
-3026358429u,
-1845587644u,
-3615577014u,
-1363253259u,
-3087190425u,
-341851980u,
-2515339233u,
-1276595523u,
-460237542u,
-4198897105u,
-2069753399u,
-4278599955u,
-356742959u,
-3735275001u,
-1750561299u,
-668829411u,
-3384018814u,
-4233785523u,
-451656820u,
-107312677u,
-2390172694u,
-1216645846u,
-164402616u,
-1689811113u,
-1767810825u,
-1397772514u,
-3323383489u,
-2986430557u,
-207428029u,
-2260498180u,
-2360400900u,
-1263709570u,
-1377764574u,
-4252610345u,
-1099809675u,
-2776960536u,
-3542220540u,
-3752806924u,
-337070226u,
-3267551635u,
-1306761320u,
-2220373824u,
-4109252858u,
-896322512u,
-1788337208u,
-1336556841u,
-2911512007u,
-3712582785u,
-3071359622u,
-2561488770u,
-3898950547u,
-536047554u,
-2040551642u,
-3528794619u,
-3565689036u,
-1197100813u,
-1864569342u,
-3329594980u,
-490608221u,
-1174785921u,
-3287246572u,
-2163330264u,
-500120236u,
-2520062970u,
-1561519055u,
-4042710240u,
-2774151984u,
-3160666939u,
-96459446u,
-1878067032u,
-4237425634u,
-2952135524u,
-4100839753u,
-1265237690u,
-4246879223u,
-834830418u,
-3476334357u,
-4277111759u,
-2511026735u,
-3065234219u,
-556796152u,
-198182691u,
-2913077464u,
-1535115487u,
-4046477658u,
-140762681u,
-990407433u,
-2198985327u,
-2926590471u,
-559702706u,
-82077489u,
-1096697687u,
-4190838199u,
-3046872820u,
-1583801700u,
-2185339100u,
-3912423882u,
-3703603898u,
-2540185277u,
-1446869792u,
-4051584612u,
-2719373510u,
-1675560450u,
-1996164093u,
-405251683u,
-2864244470u,
-4071581802u,
-2028708916u,
-803575837u,
-557660441u,
-3841480082u,
-255451671u,
-779434428u,
-3452203069u,
-2285701422u,
-1568745354u,
-823305654u,
-3184047862u,
-4159715581u,
-3160134214u,
-3198900547u,
-1566527339u,
-4194096960u,
-1496132623u,
-1719108984u,
-2584236470u,
-531310503u,
-3456882941u,
-3382290593u,
-467441309u,
-3241407531u,
-2540270567u,
-1397502982u,
-3348545480u,
-811750340u,
-1017047954u,
-2540585554u,
-3531646869u,
-943914610u,
-1903578924u,
-1911188923u,
-241574049u,
-3181425568u,
-3529565564u,
-240953857u,
-2964595704u,
-3828377737u,
-4260564140u,
-4262383425u,
-383233885u,
-4051263539u,
-919677938u,
-1683612329u,
-4204155962u,
-2283918569u,
-4153726847u,
-350160869u,
-1387233546u,
-1891558063u,
-740563169u,
-330624974u,
-2948665536u,
-376390582u,
-3799363969u,
-3187805406u,
-2263421398u,
-1928519266u,
-2746577402u,
-2108753646u,
-768287270u,
-2247006571u,
-212490675u,
-917121602u,
-2549835613u,
-2864033668u,
-3738062408u,
-2006922227u,
-2616619070u,
-3449066284u,
-431292293u,
-786322314u,
-1415970351u,
-3263135197u,
-2954777083u,
-3206261120u,
-2287507921u,
-1781944746u,
-4081586725u,
-1109175923u,
-1813855658u,
-1129462471u,
-1037031473u,
-3389003793u,
-3122687303u,
-1164309901u,
-3193251135u,
-3626554867u,
-3071568023u,
-3656006011u,
-1167681812u,
-3155218919u,
-2704165015u,
-1854985978u,
-1712976649u,
-878608872u,
-4155949943u,
-3163786257u,
-1626463554u,
-1256485167u,
-582664250u,
-2083771672u,
-804336148u,
-2770847216u,
-1674051445u,
-3992583643u,
-2966108111u,
-900741486u,
-4014551783u,
-300318232u,
-3517585534u,
-542270815u,
-760762191u,
-1216399252u,
-643179562u,
-3652676161u,
-2990167340u,
-3262252593u,
-2134299399u,
-411263051u,
-1342880802u,
-1967599860u,
-853593042u,
-2682611693u,
-850464484u,
-3286110054u,
-3842907484u,
-3623364733u,
-3693536939u,
-1615375832u,
-2318423400u,
-4145497671u,
-1728968857u,
-2686506989u,
-1502282913u,
-2151665147u,
-3651607391u,
-1178454681u,
-4146839064u,
-2601416506u,
-1448097974u,
-238887261u,
-4093725287u,
-2367569534u,
-679517009u,
-3539886328u,
-3086277222u,
-1390394371u,
-119173722u,
-1766260771u,
-751439914u,
-215917713u,
-2656990891u,
-1570750352u,
-3533987737u,
-3576119563u,
-963183826u,
-3796810515u,
-136547246u,
-2592925324u,
-427154472u,
-1228758574u,
-1464255968u,
-2984611177u,
-2001585786u,
-1525438381u,
-1348536411u,
-2861338018u,
-764077711u,
-3785343245u,
-457568934u,
-4104954272u,
-2381948487u,
-3148473363u,
-2180270337u,
-1387729170u,
-951677556u,
-2721005055u,
-66786703u,
-1149351924u,
-1895026827u,
-3711056516u,
-3638638708u,
-2263003308u,
-3448840877u,
-225333538u,
-3797521928u,
-3262952567u,
-2078619498u,
-1178073973u,
-3288261538u,
-1496966875u,
-2481012988u,
-114945840u,
-1632780103u,
-2087949619u,
-3787017905u,
-2575395164u,
-2971726178u,
-3642087909u,
-3894199764u,
-203853421u,
-425935223u,
-3565833278u,
-1748785729u,
-580966986u,
-2124704694u,
-1107045577u,
-1067532701u,
-1406028344u,
-18613994u,
-3476683808u,
-3762914298u,
-1844996900u,
-904215228u,
-1118521573u,
-3657647605u,
-3136157065u,
-2287683323u,
-126005630u,
-3555092974u,
-49515858u,
-1010661841u,
-1902040126u,
-1400735275u,
-2771676666u,
-2225229957u,
-3454177594u,
-2883475137u,
-4144472319u,
-1051332394u,
-542648229u,
-1669710469u,
-553041029u,
-584127807u,
-2993670925u,
-3587959456u,
-1745399498u,
-1404723176u,
-1334333531u,
-3239516985u,
-1275954779u,
-367320647u,
-3684418197u,
-4030809053u,
-484559105u,
-4255931645u,
-4271715616u,
-3171911678u,
-928543347u,
-2159512867u,
-313902234u,
-647086234u,
-577214736u,
-1130129573u,
-995791646u,
-1645086060u,
-4122335794u,
-1064648931u,
-2752145076u,
-3312498873u,
-4238535494u,
-1471227427u,
-633688562u,
-1959779970u,
-766642813u,
-1380896111u,
-3647601207u,
-1733961041u,
-521947915u,
-189164145u,
-486382294u,
-3770038872u,
-3235740744u,
-1912506671u,
-2276864677u,
-1588060152u,
-2504457929u,
-1471020554u,
-3623212998u,
-3026631806u,
-2342164722u,
-1674890530u,
-3011542850u,
-3549160092u,
-4290680005u,
-3943068002u,
-2273781461u,
-2127663659u,
-1646681121u,
-447810651u,
-2366308558u,
-970504950u,
-2008155560u,
-2695940969u,
-3444688454u,
-1739318893u,
-2683090634u,
-2774816580u,
-437560100u,
-512012738u,
-3305170944u,
-665292744u,
-3580039116u,
-1579404983u,
-3397891494u,
-710590371u,
-2514565805u,
-3624609754u,
-3516075816u,
-1314000850u,
-1935166880u,
-3257747610u,
-3776931214u,
-3183054185u,
-675129307u,
-3333261712u,
-1154611403u,
-2759854023u,
-1963228038u,
-505138315u,
-1803966773u,
-4032705384u,
-798395739u,
-3473799845u,
-476400898u,
-602972493u,
-3289878097u,
-2520311409u,
-3214794876u,
-748160407u,
-1326769504u,
-902775872u,
-1372805534u,
-1213925114u,
-3009384989u,
-3781981134u,
-2835608783u,
-2716786748u,
-1669490957u,
-1089334066u,
-250756920u,
-4041016629u,
-2495807367u,
-2008251381u,
-106212622u,
-1927268995u,
-2251978818u,
-3788056262u,
-3678660147u,
-2656772270u,
-1997584981u,
-2668998785u,
-2954162084u,
-845687881u,
-776018378u,
-2066910012u,
-918315064u,
-};
-
-// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
-bool Test(int offset, int len = 0) {
-#undef Check
-#undef IsAlive
-
-#define Check(x) do { \
- const uint32_t actual = (x), e = expected[index++]; \
- bool ok = actual == e; \
- if (!ok) { \
- cerr << "expected " << hex << e << " but got " << actual << endl; \
- ++errors; \
- } \
- assert(ok); \
-} while (0)
-
-#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
-
- // After the following line is where the uses of "Check" and such will go.
- static int index = 0;
+ }
+ }
+}
+
+int NoteErrors() {
+#define NUM_SELF_TESTS 9
+ if (++completed_self_tests == NUM_SELF_TESTS)
+ std::exit(errors > 0);
+ return errors;
+}
+
+template <typename T> inline bool IsNonZero(T x) {
+ return x != 0;
+}
+
+template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
+ return x != Uint128(0, 0);
+}
+
+#endif // FARMHASH_SELF_TEST_GUARD
+
+namespace farmhashntTest {
+
+uint32_t CreateSeed(int offset, int salt) {
+ uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h += static_cast<uint32_t>(offset & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ return h;
+}
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+#define SEED CreateSeed(offset, -1)
+#define SEED0 CreateSeed(offset, 0)
+#define SEED1 CreateSeed(offset, 1)
+
+#undef TESTING
+#define TESTING 1
+#if TESTING
+uint32_t expected[] = {
+2681724312u,
+797982799u,
+921001710u,
+2134990486u,
+2244477846u,
+2992121793u,
+3943596029u,
+452431531u,
+2557197665u,
+2532580744u,
+3099673830u,
+3696623795u,
+3281581178u,
+1882212500u,
+275903667u,
+3033004529u,
+1402319660u,
+2699376854u,
+4222949502u,
+1712034059u,
+1330324210u,
+2921867846u,
+1728752234u,
+326029180u,
+3349570000u,
+1612122221u,
+1646032583u,
+1432476832u,
+3552092450u,
+1499109081u,
+1554038301u,
+3190844552u,
+540224401u,
+489963606u,
+1562872448u,
+2128624475u,
+1262831810u,
+1672724608u,
+2077310004u,
+1911523866u,
+294527927u,
+1389770549u,
+2026137563u,
+629449419u,
+2489287368u,
+645684964u,
+230403464u,
+3272648435u,
+165370827u,
+1230085527u,
+3628174014u,
+851743255u,
+1554380634u,
+3667013118u,
+2290487377u,
+1909203251u,
+1498556724u,
+4165088768u,
+197618179u,
+914413116u,
+1913303225u,
+3117299654u,
+1357272220u,
+507436733u,
+1413396341u,
+146044391u,
+429095991u,
+3056862311u,
+366414107u,
+2293458109u,
+1684583131u,
+1170404994u,
+520792961u,
+1577421232u,
+4033596884u,
+4229339322u,
+3242407770u,
+2649785113u,
+816692935u,
+3555213933u,
+517646945u,
+2180594090u,
+3047062993u,
+2391606125u,
+382936554u,
+788479970u,
+2826990641u,
+3167748333u,
+1758123094u,
+389974094u,
+3338548567u,
+2583576230u,
+3198590202u,
+4155628142u,
+542201663u,
+2856634168u,
+3948351189u,
+4194218315u,
+1467786451u,
+2743592929u,
+1062268187u,
+3810665822u,
+2560479831u,
+997658837u,
+3067277639u,
+1211737169u,
+59581167u,
+1389679610u,
+4189944477u,
+100876854u,
+2062343506u,
+3088828656u,
+3284356565u,
+3130054947u,
+3532596884u,
+3887208531u,
+259034107u,
+3233195759u,
+3200749877u,
+760633989u,
+1115203611u,
+1516407838u,
+1778459926u,
+2146672889u,
+2457048126u,
+2217471853u,
+862072556u,
+3745267835u,
+701920051u,
+581695350u,
+1410111809u,
+3326135446u,
+2187968410u,
+4267859263u,
+479241367u,
+2868987960u,
+704325635u,
+1418509533u,
+735688735u,
+3283299459u,
+813690332u,
+1439630796u,
+3195309868u,
+1616408198u,
+3254795114u,
+2799925823u,
+3929484338u,
+1798536177u,
+4205965408u,
+1499475160u,
+4247675634u,
+3779953975u,
+785893184u,
+2778575413u,
+1160134629u,
+823113169u,
+4116162021u,
+4167766971u,
+2487440590u,
+4004655503u,
+4044418876u,
+1462554406u,
+2011102035u,
+4265993528u,
+576405853u,
+4038839101u,
+2425317635u,
+1401013391u,
+3062418115u,
+3167030094u,
+2602636307u,
+4264167741u,
+4017058800u,
+1029665228u,
+4036354071u,
+2670703363u,
+688472265u,
+1054670286u,
+338058159u,
+1539305024u,
+146827036u,
+4060134777u,
+2502815838u,
+1603444633u,
+2448966429u,
+3891353218u,
+1082330589u,
+201837927u,
+2848283092u,
+883849006u,
+1982110346u,
+541496720u,
+133643215u,
+3847827123u,
+4015671361u,
+2849988118u,
+3452457457u,
+2102063419u,
+3281002516u,
+1539151988u,
+1147951686u,
+2005032160u,
+2415262714u,
+116647396u,
+1029284767u,
+2159170082u,
+1919171906u,
+2017579106u,
+2473524405u,
+1694443528u,
+3671562289u,
+505662155u,
+1019936943u,
+1511077569u,
+773792826u,
+2089123665u,
+484732447u,
+1120017626u,
+2809286837u,
+4029205195u,
+1097806406u,
+136118734u,
+4017075736u,
+1403506686u,
+1516736273u,
+2562064338u,
+2984955003u,
+3071338162u,
+1923531348u,
+771592405u,
+2586632018u,
+4032960199u,
+2687561076u,
+308584855u,
+1692079268u,
+2565680167u,
+3674576684u,
+3770488806u,
+69201295u,
+1255084262u,
+3593730713u,
+54945052u,
+1939595371u,
+2432427547u,
+2295501078u,
+1280920000u,
+82177963u,
+1121403845u,
+2889101923u,
+713121337u,
+1747052377u,
+927011680u,
+4142246789u,
+1958963937u,
+1636932722u,
+4075249328u,
+2025886508u,
+3026358429u,
+1845587644u,
+3615577014u,
+1363253259u,
+3087190425u,
+341851980u,
+2515339233u,
+1276595523u,
+460237542u,
+4198897105u,
+2069753399u,
+4278599955u,
+356742959u,
+3735275001u,
+1750561299u,
+668829411u,
+3384018814u,
+4233785523u,
+451656820u,
+107312677u,
+2390172694u,
+1216645846u,
+164402616u,
+1689811113u,
+1767810825u,
+1397772514u,
+3323383489u,
+2986430557u,
+207428029u,
+2260498180u,
+2360400900u,
+1263709570u,
+1377764574u,
+4252610345u,
+1099809675u,
+2776960536u,
+3542220540u,
+3752806924u,
+337070226u,
+3267551635u,
+1306761320u,
+2220373824u,
+4109252858u,
+896322512u,
+1788337208u,
+1336556841u,
+2911512007u,
+3712582785u,
+3071359622u,
+2561488770u,
+3898950547u,
+536047554u,
+2040551642u,
+3528794619u,
+3565689036u,
+1197100813u,
+1864569342u,
+3329594980u,
+490608221u,
+1174785921u,
+3287246572u,
+2163330264u,
+500120236u,
+2520062970u,
+1561519055u,
+4042710240u,
+2774151984u,
+3160666939u,
+96459446u,
+1878067032u,
+4237425634u,
+2952135524u,
+4100839753u,
+1265237690u,
+4246879223u,
+834830418u,
+3476334357u,
+4277111759u,
+2511026735u,
+3065234219u,
+556796152u,
+198182691u,
+2913077464u,
+1535115487u,
+4046477658u,
+140762681u,
+990407433u,
+2198985327u,
+2926590471u,
+559702706u,
+82077489u,
+1096697687u,
+4190838199u,
+3046872820u,
+1583801700u,
+2185339100u,
+3912423882u,
+3703603898u,
+2540185277u,
+1446869792u,
+4051584612u,
+2719373510u,
+1675560450u,
+1996164093u,
+405251683u,
+2864244470u,
+4071581802u,
+2028708916u,
+803575837u,
+557660441u,
+3841480082u,
+255451671u,
+779434428u,
+3452203069u,
+2285701422u,
+1568745354u,
+823305654u,
+3184047862u,
+4159715581u,
+3160134214u,
+3198900547u,
+1566527339u,
+4194096960u,
+1496132623u,
+1719108984u,
+2584236470u,
+531310503u,
+3456882941u,
+3382290593u,
+467441309u,
+3241407531u,
+2540270567u,
+1397502982u,
+3348545480u,
+811750340u,
+1017047954u,
+2540585554u,
+3531646869u,
+943914610u,
+1903578924u,
+1911188923u,
+241574049u,
+3181425568u,
+3529565564u,
+240953857u,
+2964595704u,
+3828377737u,
+4260564140u,
+4262383425u,
+383233885u,
+4051263539u,
+919677938u,
+1683612329u,
+4204155962u,
+2283918569u,
+4153726847u,
+350160869u,
+1387233546u,
+1891558063u,
+740563169u,
+330624974u,
+2948665536u,
+376390582u,
+3799363969u,
+3187805406u,
+2263421398u,
+1928519266u,
+2746577402u,
+2108753646u,
+768287270u,
+2247006571u,
+212490675u,
+917121602u,
+2549835613u,
+2864033668u,
+3738062408u,
+2006922227u,
+2616619070u,
+3449066284u,
+431292293u,
+786322314u,
+1415970351u,
+3263135197u,
+2954777083u,
+3206261120u,
+2287507921u,
+1781944746u,
+4081586725u,
+1109175923u,
+1813855658u,
+1129462471u,
+1037031473u,
+3389003793u,
+3122687303u,
+1164309901u,
+3193251135u,
+3626554867u,
+3071568023u,
+3656006011u,
+1167681812u,
+3155218919u,
+2704165015u,
+1854985978u,
+1712976649u,
+878608872u,
+4155949943u,
+3163786257u,
+1626463554u,
+1256485167u,
+582664250u,
+2083771672u,
+804336148u,
+2770847216u,
+1674051445u,
+3992583643u,
+2966108111u,
+900741486u,
+4014551783u,
+300318232u,
+3517585534u,
+542270815u,
+760762191u,
+1216399252u,
+643179562u,
+3652676161u,
+2990167340u,
+3262252593u,
+2134299399u,
+411263051u,
+1342880802u,
+1967599860u,
+853593042u,
+2682611693u,
+850464484u,
+3286110054u,
+3842907484u,
+3623364733u,
+3693536939u,
+1615375832u,
+2318423400u,
+4145497671u,
+1728968857u,
+2686506989u,
+1502282913u,
+2151665147u,
+3651607391u,
+1178454681u,
+4146839064u,
+2601416506u,
+1448097974u,
+238887261u,
+4093725287u,
+2367569534u,
+679517009u,
+3539886328u,
+3086277222u,
+1390394371u,
+119173722u,
+1766260771u,
+751439914u,
+215917713u,
+2656990891u,
+1570750352u,
+3533987737u,
+3576119563u,
+963183826u,
+3796810515u,
+136547246u,
+2592925324u,
+427154472u,
+1228758574u,
+1464255968u,
+2984611177u,
+2001585786u,
+1525438381u,
+1348536411u,
+2861338018u,
+764077711u,
+3785343245u,
+457568934u,
+4104954272u,
+2381948487u,
+3148473363u,
+2180270337u,
+1387729170u,
+951677556u,
+2721005055u,
+66786703u,
+1149351924u,
+1895026827u,
+3711056516u,
+3638638708u,
+2263003308u,
+3448840877u,
+225333538u,
+3797521928u,
+3262952567u,
+2078619498u,
+1178073973u,
+3288261538u,
+1496966875u,
+2481012988u,
+114945840u,
+1632780103u,
+2087949619u,
+3787017905u,
+2575395164u,
+2971726178u,
+3642087909u,
+3894199764u,
+203853421u,
+425935223u,
+3565833278u,
+1748785729u,
+580966986u,
+2124704694u,
+1107045577u,
+1067532701u,
+1406028344u,
+18613994u,
+3476683808u,
+3762914298u,
+1844996900u,
+904215228u,
+1118521573u,
+3657647605u,
+3136157065u,
+2287683323u,
+126005630u,
+3555092974u,
+49515858u,
+1010661841u,
+1902040126u,
+1400735275u,
+2771676666u,
+2225229957u,
+3454177594u,
+2883475137u,
+4144472319u,
+1051332394u,
+542648229u,
+1669710469u,
+553041029u,
+584127807u,
+2993670925u,
+3587959456u,
+1745399498u,
+1404723176u,
+1334333531u,
+3239516985u,
+1275954779u,
+367320647u,
+3684418197u,
+4030809053u,
+484559105u,
+4255931645u,
+4271715616u,
+3171911678u,
+928543347u,
+2159512867u,
+313902234u,
+647086234u,
+577214736u,
+1130129573u,
+995791646u,
+1645086060u,
+4122335794u,
+1064648931u,
+2752145076u,
+3312498873u,
+4238535494u,
+1471227427u,
+633688562u,
+1959779970u,
+766642813u,
+1380896111u,
+3647601207u,
+1733961041u,
+521947915u,
+189164145u,
+486382294u,
+3770038872u,
+3235740744u,
+1912506671u,
+2276864677u,
+1588060152u,
+2504457929u,
+1471020554u,
+3623212998u,
+3026631806u,
+2342164722u,
+1674890530u,
+3011542850u,
+3549160092u,
+4290680005u,
+3943068002u,
+2273781461u,
+2127663659u,
+1646681121u,
+447810651u,
+2366308558u,
+970504950u,
+2008155560u,
+2695940969u,
+3444688454u,
+1739318893u,
+2683090634u,
+2774816580u,
+437560100u,
+512012738u,
+3305170944u,
+665292744u,
+3580039116u,
+1579404983u,
+3397891494u,
+710590371u,
+2514565805u,
+3624609754u,
+3516075816u,
+1314000850u,
+1935166880u,
+3257747610u,
+3776931214u,
+3183054185u,
+675129307u,
+3333261712u,
+1154611403u,
+2759854023u,
+1963228038u,
+505138315u,
+1803966773u,
+4032705384u,
+798395739u,
+3473799845u,
+476400898u,
+602972493u,
+3289878097u,
+2520311409u,
+3214794876u,
+748160407u,
+1326769504u,
+902775872u,
+1372805534u,
+1213925114u,
+3009384989u,
+3781981134u,
+2835608783u,
+2716786748u,
+1669490957u,
+1089334066u,
+250756920u,
+4041016629u,
+2495807367u,
+2008251381u,
+106212622u,
+1927268995u,
+2251978818u,
+3788056262u,
+3678660147u,
+2656772270u,
+1997584981u,
+2668998785u,
+2954162084u,
+845687881u,
+776018378u,
+2066910012u,
+918315064u,
+};
+
+// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
+bool Test(int offset, int len = 0) {
+#undef Check
+#undef IsAlive
+
+#define Check(x) do { \
+ const uint32_t actual = (x), e = expected[index++]; \
+ bool ok = actual == e; \
+ if (!ok) { \
+ cerr << "expected " << hex << e << " but got " << actual << endl; \
+ ++errors; \
+ } \
+ assert(ok); \
+} while (0)
+
+#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
+
+ // After the following line is where the uses of "Check" and such will go.
+ static int index = 0;
if (offset == -1) { int alive = 0; IsAlive(farmhashnt::Hash32WithSeed(farm_hash_data, len++, SEED)); IsAlive(farmhashnt::Hash32(farm_hash_data, len++)); IsAlive(farmhashnt::Hash32(farm_hash_data, len++)); len -= 3; return alive > 0; }
Check(farmhashnt::Hash32WithSeed(farm_hash_data + offset, len, SEED));
Check(farmhashnt::Hash32(farm_hash_data + offset, len));
-
- return true;
-#undef Check
-#undef IsAlive
-}
-
-int RunTest() {
- Setup();
- int i = 0;
- cout << "Running farmhashntTest";
- if (!Test(-1)) {
- cout << "... Unavailable\n";
- return NoteErrors();
- }
- // Good. The function is attempting to hash, so run the full test.
- int errors_prior_to_test = errors;
- for ( ; i < kTestSize - 1; i++) {
- Test(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- Test(0, i);
- }
- Test(0, kDataSize);
- cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
- return NoteErrors();
-}
-
-#else
-
-// After the following line is where the code to print hash codes will go.
-void Dump(int offset, int len) {
+
+ return true;
+#undef Check
+#undef IsAlive
+}
+
+int RunTest() {
+ Setup();
+ int i = 0;
+ cout << "Running farmhashntTest";
+ if (!Test(-1)) {
+ cout << "... Unavailable\n";
+ return NoteErrors();
+ }
+ // Good. The function is attempting to hash, so run the full test.
+ int errors_prior_to_test = errors;
+ for ( ; i < kTestSize - 1; i++) {
+ Test(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ Test(0, i);
+ }
+ Test(0, kDataSize);
+ cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
+ return NoteErrors();
+}
+
+#else
+
+// After the following line is where the code to print hash codes will go.
+void Dump(int offset, int len) {
cout << farmhashnt::Hash32WithSeed(farm_hash_data + offset, len, SEED) << "u," << endl;
cout << farmhashnt::Hash32(farm_hash_data + offset, len) << "u," << endl;
-}
-
-#endif
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-
-} // namespace farmhashntTest
-
-#if !TESTING
-int main(int argc, char** argv) {
- Setup();
- cout << "uint32_t expected[] = {\n";
- int i = 0;
- for ( ; i < kTestSize - 1; i++) {
- farmhashntTest::Dump(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- farmhashntTest::Dump(0, i);
- }
- farmhashntTest::Dump(0, kDataSize);
- cout << "};\n";
-}
-#endif
-#ifndef FARMHASH_SELF_TEST_GUARD
-#define FARMHASH_SELF_TEST_GUARD
-#include <cstdio>
-#include <iostream>
-#include <string.h>
-
-using std::cout;
-using std::cerr;
-using std::endl;
-using std::hex;
-
-static const uint64_t kSeed0 = 1234567;
-static const uint64_t kSeed1 = k0;
-static const int kDataSize = 1 << 20;
-static const int kTestSize = 300;
-#define kSeed128 Uint128(kSeed0, kSeed1)
-
+}
+
+#endif
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+
+} // namespace farmhashntTest
+
+#if !TESTING
+int main(int argc, char** argv) {
+ Setup();
+ cout << "uint32_t expected[] = {\n";
+ int i = 0;
+ for ( ; i < kTestSize - 1; i++) {
+ farmhashntTest::Dump(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ farmhashntTest::Dump(0, i);
+ }
+ farmhashntTest::Dump(0, kDataSize);
+ cout << "};\n";
+}
+#endif
+#ifndef FARMHASH_SELF_TEST_GUARD
+#define FARMHASH_SELF_TEST_GUARD
+#include <cstdio>
+#include <iostream>
+#include <string.h>
+
+using std::cout;
+using std::cerr;
+using std::endl;
+using std::hex;
+
+static const uint64_t kSeed0 = 1234567;
+static const uint64_t kSeed1 = k0;
+static const int kDataSize = 1 << 20;
+static const int kTestSize = 300;
+#define kSeed128 Uint128(kSeed0, kSeed1)
+
static char farm_hash_data[kDataSize];
-
-static int completed_self_tests = 0;
-static int errors = 0;
-
+
+static int completed_self_tests = 0;
+static int errors = 0;
+
// Initialize farm_hash_data to pseudorandom values.
-void Setup() {
- if (completed_self_tests == 0) {
- uint64_t a = 9;
- uint64_t b = 777;
- for (int i = 0; i < kDataSize; i++) {
- a += b;
- b += a;
- a = (a ^ (a >> 41)) * k0;
- b = (b ^ (b >> 41)) * k0 + i;
- uint8_t u = b >> 37;
+void Setup() {
+ if (completed_self_tests == 0) {
+ uint64_t a = 9;
+ uint64_t b = 777;
+ for (int i = 0; i < kDataSize; i++) {
+ a += b;
+ b += a;
+ a = (a ^ (a >> 41)) * k0;
+ b = (b ^ (b >> 41)) * k0 + i;
+ uint8_t u = b >> 37;
memcpy(farm_hash_data + i, &u, 1); // uint8_t -> char
- }
- }
-}
-
-int NoteErrors() {
-#define NUM_SELF_TESTS 9
- if (++completed_self_tests == NUM_SELF_TESTS)
- std::exit(errors > 0);
- return errors;
-}
-
-template <typename T> inline bool IsNonZero(T x) {
- return x != 0;
-}
-
-template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
- return x != Uint128(0, 0);
-}
-
-#endif // FARMHASH_SELF_TEST_GUARD
-
-namespace farmhashsaTest {
-
-uint32_t CreateSeed(int offset, int salt) {
- uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h += static_cast<uint32_t>(offset & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- return h;
-}
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-#define SEED CreateSeed(offset, -1)
-#define SEED0 CreateSeed(offset, 0)
-#define SEED1 CreateSeed(offset, 1)
-
-#undef TESTING
-#define TESTING 1
-#if TESTING
-uint32_t expected[] = {
-4223616069u,
-3696677242u,
-4081014168u,
-2576519988u,
-2212771159u,
-1112731063u,
-1020067935u,
-3955445564u,
-1451961420u,
-653440099u,
-31917516u,
-2957164615u,
-2590087362u,
-3879448744u,
-176305566u,
-2447367541u,
-1359016305u,
-3363804638u,
-1117290165u,
-1062549743u,
-2437877004u,
-1894455839u,
-673206794u,
-3486923651u,
-3269862919u,
-2303349487u,
-1380660650u,
-595525107u,
-1525325287u,
-2025609358u,
-176408838u,
-1592885012u,
-864896482u,
-2101378090u,
-3489229104u,
-2118965695u,
-581644891u,
-2718789079u,
-631613207u,
-4228658372u,
-3867875546u,
-3531368319u,
-3804516756u,
-3317755099u,
-1619744564u,
-2884717286u,
-1088213445u,
-2667691076u,
-3727873235u,
-2330406762u,
-858590707u,
-123802208u,
-4150036245u,
-182283099u,
-1478882570u,
-3282617403u,
-819171187u,
-1172627392u,
-4254302102u,
-2957028020u,
-437030323u,
-2452147680u,
-2868246750u,
-3530169402u,
-3154852132u,
-215019192u,
-357580983u,
-1354454461u,
-1108813287u,
-2324008118u,
-2315997713u,
-4181601562u,
-1360882441u,
-92423273u,
-3048866755u,
-3369188505u,
-3664371439u,
-2920710428u,
-1027891570u,
-2653166430u,
-3461888315u,
-1475780447u,
-292769636u,
-1737473313u,
-4064110516u,
-4170160075u,
-762850927u,
-3630603695u,
-2803307356u,
-844987665u,
-460980967u,
-3005635467u,
-2802568977u,
-588668033u,
-2148940781u,
-3239099984u,
-1266953698u,
-3197808789u,
-3519942533u,
-2511995334u,
-2553810188u,
-871667697u,
-1358675720u,
-1499319171u,
-2044931270u,
-1210355103u,
-807152540u,
-3262320756u,
-2810214575u,
-1813386141u,
-4089465863u,
-903928165u,
-1388899322u,
-3209183659u,
-834536144u,
-2733354550u,
-2742289921u,
-3689042563u,
-2655593281u,
-4169686303u,
-415985561u,
-138892376u,
-516115393u,
-65683883u,
-4162865100u,
-889944635u,
-313566528u,
-3346420907u,
-1504303591u,
-2256809275u,
-742243229u,
-779775302u,
-3140940172u,
-2312556111u,
-2304095772u,
-1151741606u,
-2194712422u,
-1714084652u,
-3272736835u,
-1311540658u,
-191179665u,
-3996605106u,
-1657345233u,
-4205442903u,
-1553339212u,
-2351843044u,
-1647502006u,
-2525516233u,
-292202846u,
-1498646290u,
-1429323381u,
-974274898u,
-3759331561u,
-2881238887u,
-826787221u,
-1069622448u,
-221991032u,
-1462969082u,
-2799661508u,
-364022781u,
-2594244377u,
-797773898u,
-4097839290u,
-1529150125u,
-2456805570u,
-541503425u,
-3936326142u,
-3112719954u,
-775223581u,
-3074018423u,
-3198488875u,
-1772191849u,
-2456535211u,
-3154686028u,
-1520862019u,
-4005829426u,
-1306433767u,
-1943028506u,
-2246000782u,
-1057766454u,
-3761996982u,
-3441075333u,
-898641979u,
-3450209088u,
-3941329307u,
-3289922449u,
-3085075827u,
-1814193220u,
-690422997u,
-2627846676u,
-2653520704u,
-3739145533u,
-3996776010u,
-2287072592u,
-1346671698u,
-3082629900u,
-2298811274u,
-3639722036u,
-1729419228u,
-1836765953u,
-3708118742u,
-213436u,
-950223749u,
-3734247682u,
-2924575678u,
-1382024841u,
-2431637732u,
-3448846682u,
-1341301397u,
-4206956590u,
-1730650902u,
-2581075456u,
-1542359141u,
-707222542u,
-2925350541u,
-3846303536u,
-3579103295u,
-3932175763u,
-1339615732u,
-848825750u,
-1070170828u,
-1964973818u,
-577060344u,
-607721296u,
-4031023048u,
-406883794u,
-3991905552u,
-1198544082u,
-872468460u,
-1044847096u,
-3159976313u,
-3020028266u,
-2108700400u,
-3373767922u,
-264431841u,
-2817097007u,
-3700061048u,
-1733731531u,
-3459415893u,
-80378591u,
-1479875104u,
-19735612u,
-1382658977u,
-3416562245u,
-1959852842u,
-2384002344u,
-124683828u,
-3725782174u,
-2300301222u,
-393852269u,
-1302492002u,
-3623776492u,
-3787086417u,
-1730024749u,
-1710531361u,
-443700716u,
-1461987482u,
-671998131u,
-3018380746u,
-2592292305u,
-3390799372u,
-3945101155u,
-3743494852u,
-3716045582u,
-996005166u,
-320698449u,
-3420221765u,
-1518157951u,
-2555810666u,
-3381929684u,
-2019638523u,
-3088262796u,
-2072178906u,
-3433649364u,
-203906916u,
-34663784u,
-290301305u,
-1188021504u,
-3754681145u,
-3920313139u,
-2840496520u,
-1656802962u,
-2288475489u,
-3399185138u,
-1296000826u,
-2362384746u,
-309633360u,
-2719851778u,
-776035930u,
-3200733043u,
-365690832u,
-3326378243u,
-1500331457u,
-1625708592u,
-4230903462u,
-715344888u,
-3363777768u,
-2243620288u,
-2890765789u,
-553154234u,
-4044100108u,
-4056887320u,
-1185656496u,
-3671476744u,
-1064586897u,
-1154949698u,
-3493481974u,
-1294573722u,
-1869224012u,
-2530084956u,
-995321553u,
-833419249u,
-563815282u,
-250258043u,
-2970801822u,
-441007535u,
-42246961u,
-2820426655u,
-2878882436u,
-2363245780u,
-2138489282u,
-2972360481u,
-2312619393u,
-3598664848u,
-3071556076u,
-776990325u,
-3220427357u,
-2257939577u,
-3817305903u,
-1502979698u,
-3159755934u,
-3955997276u,
-2423850008u,
-1959927572u,
-1219782288u,
-4119776679u,
-1124253854u,
-3678052422u,
-2620644947u,
-1262408666u,
-3480072280u,
-2627137665u,
-807538749u,
-3276646337u,
-518510128u,
-1137828655u,
-1498449110u,
-3031692317u,
-1125635969u,
-1130096111u,
-780007336u,
-3111856399u,
-1014917264u,
-780877352u,
-2909458336u,
-4235949214u,
-2423879289u,
-275888892u,
-3891926795u,
-3538163953u,
-54815161u,
-162228302u,
-258154068u,
-3554455591u,
-1801469029u,
-2801563220u,
-726560058u,
-2450221940u,
-3677582978u,
-440993800u,
-424762443u,
-2624525253u,
-2587715329u,
-2292264424u,
-1074856749u,
-3294752007u,
-3164112672u,
-2399146799u,
-1920182465u,
-3858835361u,
-193755240u,
-3333610311u,
-1757504059u,
-2576027039u,
-2775253365u,
-2939191561u,
-1046147275u,
-235149906u,
-4262218222u,
-2900542726u,
-2260154702u,
-1019551635u,
-1194720570u,
-3519118691u,
-3039483153u,
-84918216u,
-3053381097u,
-2572396843u,
-3849763371u,
-2782686780u,
-3710049554u,
-3403430713u,
-2346080784u,
-2496307442u,
-1597281872u,
-696018239u,
-704625714u,
-623026921u,
-3182413559u,
-3794540330u,
-305497722u,
-1592680199u,
-2377854072u,
-3060601746u,
-3953057908u,
-3941551588u,
-1033716182u,
-2765716854u,
-1309699058u,
-3519400181u,
-3073370877u,
-115583008u,
-4032909296u,
-2944563574u,
-3762753718u,
-192842727u,
-1711348701u,
-3086147235u,
-1658229443u,
-1479783872u,
-3839977157u,
-225619117u,
-1349684817u,
-1964813173u,
-565753187u,
-2530252046u,
-840014353u,
-1645183704u,
-3668429078u,
-3438418557u,
-639704059u,
-360837811u,
-2531807958u,
-1572353913u,
-2116037299u,
-1948437512u,
-744553393u,
-2380697034u,
-3775234105u,
-3816065157u,
-301868653u,
-2960939561u,
-3306528247u,
-2389296549u,
-805918610u,
-1759358265u,
-1760876328u,
-2827601706u,
-2944594708u,
-3313666458u,
-2022601495u,
-730938791u,
-193539397u,
-2026103244u,
-802928398u,
-2630934308u,
-782805818u,
-3499326016u,
-293509489u,
-3646131514u,
-3182478647u,
-854800333u,
-2284531628u,
-438528022u,
-2339298129u,
-1692289216u,
-2427728723u,
-46501288u,
-350652353u,
-1355971222u,
-889682372u,
-944799254u,
-2763906061u,
-2807550612u,
-2683762637u,
-100870317u,
-2449357318u,
-2638348436u,
-4206088869u,
-1788948473u,
-3537588549u,
-2782490204u,
-134406470u,
-2409190528u,
-2362439849u,
-1861661528u,
-2101513194u,
-1424834765u,
-3581765745u,
-3185999525u,
-2057487100u,
-2303941176u,
-3639628788u,
-1180265315u,
-230437935u,
-2108319366u,
-1131685143u,
-1055685292u,
-1509007009u,
-1258485140u,
-560525005u,
-3598799040u,
-3835680585u,
-1851859628u,
-332858996u,
-641769248u,
-4252450037u,
-865386707u,
-720719117u,
-3133612164u,
-3833045874u,
-3492515435u,
-2465970289u,
-4234420011u,
-573859916u,
-252532886u,
-870392318u,
-4051320920u,
-894929092u,
-3748361688u,
-699355960u,
-1885212350u,
-1609756949u,
-461896870u,
-1337065461u,
-1775211059u,
-1786193749u,
-2815154643u,
-2128729882u,
-969639529u,
-3960427545u,
-859416958u,
-2739758802u,
-2698032197u,
-2813292418u,
-1985467524u,
-396604317u,
-4122172759u,
-1201259789u,
-4282051702u,
-3270018895u,
-961215209u,
-961075860u,
-4211926998u,
-4088374597u,
-577510509u,
-3058349487u,
-4025377754u,
-2815478438u,
-471023164u,
-3947959608u,
-4161486934u,
-2299888461u,
-1103571511u,
-2450153872u,
-1839939275u,
-108299608u,
-858086440u,
-1030152945u,
-3895328530u,
-3009080718u,
-3690840454u,
-3847025277u,
-152331362u,
-161365689u,
-831319961u,
-2166017294u,
-3945322722u,
-4059970216u,
-1420824131u,
-2770648308u,
-1567250186u,
-2181067149u,
-1939743488u,
-3080158120u,
-3435218248u,
-2495237495u,
-3814085102u,
-3180983013u,
-3199054292u,
-2204745908u,
-1140337267u,
-2213569784u,
-1941879842u,
-2105562605u,
-3618835614u,
-2247103645u,
-2492473487u,
-856414299u,
-166022030u,
-4080104712u,
-3218935344u,
-3284220561u,
-4261581452u,
-1206944836u,
-3496705432u,
-2215996876u,
-3154627465u,
-3384005496u,
-742170556u,
-1333047620u,
-802680366u,
-156833431u,
-2682100354u,
-2493654830u,
-584848366u,
-1691693131u,
-2169934170u,
-779968026u,
-2099545800u,
-1423039695u,
-4292110968u,
-4266576788u,
-149142597u,
-748501873u,
-3865014822u,
-1913588198u,
-130285614u,
-3500768879u,
-915458923u,
-3071792750u,
-1339986633u,
-4143929149u,
-4048379479u,
-725193827u,
-1375113643u,
-2425277412u,
-4144659274u,
-465714768u,
-226991589u,
-2212127704u,
-3936145258u,
-2891024846u,
-3816000225u,
-979331165u,
-1749907536u,
-53847318u,
-1462525833u,
-2961425455u,
-368859113u,
-3572721452u,
-453048644u,
-1628629918u,
-3497673923u,
-3619079585u,
-139870565u,
-1518176798u,
-3933074281u,
-1878623729u,
-2074035641u,
-3016759257u,
-1313053591u,
-2557706970u,
-2348296582u,
-962370022u,
-2337285014u,
-1618936717u,
-1915877085u,
-2743743122u,
-3250783882u,
-1346652536u,
-143311109u,
-2443788461u,
-1048248964u,
-2806619339u,
-3263266976u,
-1668146349u,
-3397428868u,
-3276188862u,
-1774196343u,
-1993847813u,
-2771079610u,
-476672419u,
-2119050359u,
-2918326659u,
-2245402721u,
-2692910474u,
-2374383269u,
-342400227u,
-2961437795u,
-3899230368u,
-337787132u,
-3664444935u,
-1269451153u,
-2971526729u,
-1486511182u,
-791070133u,
-2570319890u,
-3482497490u,
-2134230518u,
-4273391202u,
-1825511330u,
-3947753714u,
-1389755724u,
-3995075516u,
-2081052615u,
-3626343470u,
-4213603435u,
-2137917278u,
-2898987303u,
-3059215715u,
-3383237881u,
-3003674434u,
-409174425u,
-1911915604u,
-2087728055u,
-2942005882u,
-3386522440u,
-714936074u,
-261924004u,
-3268784033u,
-1141188757u,
-2413217552u,
-1515163433u,
-};
-
-// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
-bool Test(int offset, int len = 0) {
-#undef Check
-#undef IsAlive
-
-#define Check(x) do { \
- const uint32_t actual = (x), e = expected[index++]; \
- bool ok = actual == e; \
- if (!ok) { \
- cerr << "expected " << hex << e << " but got " << actual << endl; \
- ++errors; \
- } \
- assert(ok); \
-} while (0)
-
-#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
-
- // After the following line is where the uses of "Check" and such will go.
- static int index = 0;
+ }
+ }
+}
+
+int NoteErrors() {
+#define NUM_SELF_TESTS 9
+ if (++completed_self_tests == NUM_SELF_TESTS)
+ std::exit(errors > 0);
+ return errors;
+}
+
+template <typename T> inline bool IsNonZero(T x) {
+ return x != 0;
+}
+
+template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
+ return x != Uint128(0, 0);
+}
+
+#endif // FARMHASH_SELF_TEST_GUARD
+
+namespace farmhashsaTest {
+
+uint32_t CreateSeed(int offset, int salt) {
+ uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h += static_cast<uint32_t>(offset & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ return h;
+}
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+#define SEED CreateSeed(offset, -1)
+#define SEED0 CreateSeed(offset, 0)
+#define SEED1 CreateSeed(offset, 1)
+
+#undef TESTING
+#define TESTING 1
+#if TESTING
+uint32_t expected[] = {
+4223616069u,
+3696677242u,
+4081014168u,
+2576519988u,
+2212771159u,
+1112731063u,
+1020067935u,
+3955445564u,
+1451961420u,
+653440099u,
+31917516u,
+2957164615u,
+2590087362u,
+3879448744u,
+176305566u,
+2447367541u,
+1359016305u,
+3363804638u,
+1117290165u,
+1062549743u,
+2437877004u,
+1894455839u,
+673206794u,
+3486923651u,
+3269862919u,
+2303349487u,
+1380660650u,
+595525107u,
+1525325287u,
+2025609358u,
+176408838u,
+1592885012u,
+864896482u,
+2101378090u,
+3489229104u,
+2118965695u,
+581644891u,
+2718789079u,
+631613207u,
+4228658372u,
+3867875546u,
+3531368319u,
+3804516756u,
+3317755099u,
+1619744564u,
+2884717286u,
+1088213445u,
+2667691076u,
+3727873235u,
+2330406762u,
+858590707u,
+123802208u,
+4150036245u,
+182283099u,
+1478882570u,
+3282617403u,
+819171187u,
+1172627392u,
+4254302102u,
+2957028020u,
+437030323u,
+2452147680u,
+2868246750u,
+3530169402u,
+3154852132u,
+215019192u,
+357580983u,
+1354454461u,
+1108813287u,
+2324008118u,
+2315997713u,
+4181601562u,
+1360882441u,
+92423273u,
+3048866755u,
+3369188505u,
+3664371439u,
+2920710428u,
+1027891570u,
+2653166430u,
+3461888315u,
+1475780447u,
+292769636u,
+1737473313u,
+4064110516u,
+4170160075u,
+762850927u,
+3630603695u,
+2803307356u,
+844987665u,
+460980967u,
+3005635467u,
+2802568977u,
+588668033u,
+2148940781u,
+3239099984u,
+1266953698u,
+3197808789u,
+3519942533u,
+2511995334u,
+2553810188u,
+871667697u,
+1358675720u,
+1499319171u,
+2044931270u,
+1210355103u,
+807152540u,
+3262320756u,
+2810214575u,
+1813386141u,
+4089465863u,
+903928165u,
+1388899322u,
+3209183659u,
+834536144u,
+2733354550u,
+2742289921u,
+3689042563u,
+2655593281u,
+4169686303u,
+415985561u,
+138892376u,
+516115393u,
+65683883u,
+4162865100u,
+889944635u,
+313566528u,
+3346420907u,
+1504303591u,
+2256809275u,
+742243229u,
+779775302u,
+3140940172u,
+2312556111u,
+2304095772u,
+1151741606u,
+2194712422u,
+1714084652u,
+3272736835u,
+1311540658u,
+191179665u,
+3996605106u,
+1657345233u,
+4205442903u,
+1553339212u,
+2351843044u,
+1647502006u,
+2525516233u,
+292202846u,
+1498646290u,
+1429323381u,
+974274898u,
+3759331561u,
+2881238887u,
+826787221u,
+1069622448u,
+221991032u,
+1462969082u,
+2799661508u,
+364022781u,
+2594244377u,
+797773898u,
+4097839290u,
+1529150125u,
+2456805570u,
+541503425u,
+3936326142u,
+3112719954u,
+775223581u,
+3074018423u,
+3198488875u,
+1772191849u,
+2456535211u,
+3154686028u,
+1520862019u,
+4005829426u,
+1306433767u,
+1943028506u,
+2246000782u,
+1057766454u,
+3761996982u,
+3441075333u,
+898641979u,
+3450209088u,
+3941329307u,
+3289922449u,
+3085075827u,
+1814193220u,
+690422997u,
+2627846676u,
+2653520704u,
+3739145533u,
+3996776010u,
+2287072592u,
+1346671698u,
+3082629900u,
+2298811274u,
+3639722036u,
+1729419228u,
+1836765953u,
+3708118742u,
+213436u,
+950223749u,
+3734247682u,
+2924575678u,
+1382024841u,
+2431637732u,
+3448846682u,
+1341301397u,
+4206956590u,
+1730650902u,
+2581075456u,
+1542359141u,
+707222542u,
+2925350541u,
+3846303536u,
+3579103295u,
+3932175763u,
+1339615732u,
+848825750u,
+1070170828u,
+1964973818u,
+577060344u,
+607721296u,
+4031023048u,
+406883794u,
+3991905552u,
+1198544082u,
+872468460u,
+1044847096u,
+3159976313u,
+3020028266u,
+2108700400u,
+3373767922u,
+264431841u,
+2817097007u,
+3700061048u,
+1733731531u,
+3459415893u,
+80378591u,
+1479875104u,
+19735612u,
+1382658977u,
+3416562245u,
+1959852842u,
+2384002344u,
+124683828u,
+3725782174u,
+2300301222u,
+393852269u,
+1302492002u,
+3623776492u,
+3787086417u,
+1730024749u,
+1710531361u,
+443700716u,
+1461987482u,
+671998131u,
+3018380746u,
+2592292305u,
+3390799372u,
+3945101155u,
+3743494852u,
+3716045582u,
+996005166u,
+320698449u,
+3420221765u,
+1518157951u,
+2555810666u,
+3381929684u,
+2019638523u,
+3088262796u,
+2072178906u,
+3433649364u,
+203906916u,
+34663784u,
+290301305u,
+1188021504u,
+3754681145u,
+3920313139u,
+2840496520u,
+1656802962u,
+2288475489u,
+3399185138u,
+1296000826u,
+2362384746u,
+309633360u,
+2719851778u,
+776035930u,
+3200733043u,
+365690832u,
+3326378243u,
+1500331457u,
+1625708592u,
+4230903462u,
+715344888u,
+3363777768u,
+2243620288u,
+2890765789u,
+553154234u,
+4044100108u,
+4056887320u,
+1185656496u,
+3671476744u,
+1064586897u,
+1154949698u,
+3493481974u,
+1294573722u,
+1869224012u,
+2530084956u,
+995321553u,
+833419249u,
+563815282u,
+250258043u,
+2970801822u,
+441007535u,
+42246961u,
+2820426655u,
+2878882436u,
+2363245780u,
+2138489282u,
+2972360481u,
+2312619393u,
+3598664848u,
+3071556076u,
+776990325u,
+3220427357u,
+2257939577u,
+3817305903u,
+1502979698u,
+3159755934u,
+3955997276u,
+2423850008u,
+1959927572u,
+1219782288u,
+4119776679u,
+1124253854u,
+3678052422u,
+2620644947u,
+1262408666u,
+3480072280u,
+2627137665u,
+807538749u,
+3276646337u,
+518510128u,
+1137828655u,
+1498449110u,
+3031692317u,
+1125635969u,
+1130096111u,
+780007336u,
+3111856399u,
+1014917264u,
+780877352u,
+2909458336u,
+4235949214u,
+2423879289u,
+275888892u,
+3891926795u,
+3538163953u,
+54815161u,
+162228302u,
+258154068u,
+3554455591u,
+1801469029u,
+2801563220u,
+726560058u,
+2450221940u,
+3677582978u,
+440993800u,
+424762443u,
+2624525253u,
+2587715329u,
+2292264424u,
+1074856749u,
+3294752007u,
+3164112672u,
+2399146799u,
+1920182465u,
+3858835361u,
+193755240u,
+3333610311u,
+1757504059u,
+2576027039u,
+2775253365u,
+2939191561u,
+1046147275u,
+235149906u,
+4262218222u,
+2900542726u,
+2260154702u,
+1019551635u,
+1194720570u,
+3519118691u,
+3039483153u,
+84918216u,
+3053381097u,
+2572396843u,
+3849763371u,
+2782686780u,
+3710049554u,
+3403430713u,
+2346080784u,
+2496307442u,
+1597281872u,
+696018239u,
+704625714u,
+623026921u,
+3182413559u,
+3794540330u,
+305497722u,
+1592680199u,
+2377854072u,
+3060601746u,
+3953057908u,
+3941551588u,
+1033716182u,
+2765716854u,
+1309699058u,
+3519400181u,
+3073370877u,
+115583008u,
+4032909296u,
+2944563574u,
+3762753718u,
+192842727u,
+1711348701u,
+3086147235u,
+1658229443u,
+1479783872u,
+3839977157u,
+225619117u,
+1349684817u,
+1964813173u,
+565753187u,
+2530252046u,
+840014353u,
+1645183704u,
+3668429078u,
+3438418557u,
+639704059u,
+360837811u,
+2531807958u,
+1572353913u,
+2116037299u,
+1948437512u,
+744553393u,
+2380697034u,
+3775234105u,
+3816065157u,
+301868653u,
+2960939561u,
+3306528247u,
+2389296549u,
+805918610u,
+1759358265u,
+1760876328u,
+2827601706u,
+2944594708u,
+3313666458u,
+2022601495u,
+730938791u,
+193539397u,
+2026103244u,
+802928398u,
+2630934308u,
+782805818u,
+3499326016u,
+293509489u,
+3646131514u,
+3182478647u,
+854800333u,
+2284531628u,
+438528022u,
+2339298129u,
+1692289216u,
+2427728723u,
+46501288u,
+350652353u,
+1355971222u,
+889682372u,
+944799254u,
+2763906061u,
+2807550612u,
+2683762637u,
+100870317u,
+2449357318u,
+2638348436u,
+4206088869u,
+1788948473u,
+3537588549u,
+2782490204u,
+134406470u,
+2409190528u,
+2362439849u,
+1861661528u,
+2101513194u,
+1424834765u,
+3581765745u,
+3185999525u,
+2057487100u,
+2303941176u,
+3639628788u,
+1180265315u,
+230437935u,
+2108319366u,
+1131685143u,
+1055685292u,
+1509007009u,
+1258485140u,
+560525005u,
+3598799040u,
+3835680585u,
+1851859628u,
+332858996u,
+641769248u,
+4252450037u,
+865386707u,
+720719117u,
+3133612164u,
+3833045874u,
+3492515435u,
+2465970289u,
+4234420011u,
+573859916u,
+252532886u,
+870392318u,
+4051320920u,
+894929092u,
+3748361688u,
+699355960u,
+1885212350u,
+1609756949u,
+461896870u,
+1337065461u,
+1775211059u,
+1786193749u,
+2815154643u,
+2128729882u,
+969639529u,
+3960427545u,
+859416958u,
+2739758802u,
+2698032197u,
+2813292418u,
+1985467524u,
+396604317u,
+4122172759u,
+1201259789u,
+4282051702u,
+3270018895u,
+961215209u,
+961075860u,
+4211926998u,
+4088374597u,
+577510509u,
+3058349487u,
+4025377754u,
+2815478438u,
+471023164u,
+3947959608u,
+4161486934u,
+2299888461u,
+1103571511u,
+2450153872u,
+1839939275u,
+108299608u,
+858086440u,
+1030152945u,
+3895328530u,
+3009080718u,
+3690840454u,
+3847025277u,
+152331362u,
+161365689u,
+831319961u,
+2166017294u,
+3945322722u,
+4059970216u,
+1420824131u,
+2770648308u,
+1567250186u,
+2181067149u,
+1939743488u,
+3080158120u,
+3435218248u,
+2495237495u,
+3814085102u,
+3180983013u,
+3199054292u,
+2204745908u,
+1140337267u,
+2213569784u,
+1941879842u,
+2105562605u,
+3618835614u,
+2247103645u,
+2492473487u,
+856414299u,
+166022030u,
+4080104712u,
+3218935344u,
+3284220561u,
+4261581452u,
+1206944836u,
+3496705432u,
+2215996876u,
+3154627465u,
+3384005496u,
+742170556u,
+1333047620u,
+802680366u,
+156833431u,
+2682100354u,
+2493654830u,
+584848366u,
+1691693131u,
+2169934170u,
+779968026u,
+2099545800u,
+1423039695u,
+4292110968u,
+4266576788u,
+149142597u,
+748501873u,
+3865014822u,
+1913588198u,
+130285614u,
+3500768879u,
+915458923u,
+3071792750u,
+1339986633u,
+4143929149u,
+4048379479u,
+725193827u,
+1375113643u,
+2425277412u,
+4144659274u,
+465714768u,
+226991589u,
+2212127704u,
+3936145258u,
+2891024846u,
+3816000225u,
+979331165u,
+1749907536u,
+53847318u,
+1462525833u,
+2961425455u,
+368859113u,
+3572721452u,
+453048644u,
+1628629918u,
+3497673923u,
+3619079585u,
+139870565u,
+1518176798u,
+3933074281u,
+1878623729u,
+2074035641u,
+3016759257u,
+1313053591u,
+2557706970u,
+2348296582u,
+962370022u,
+2337285014u,
+1618936717u,
+1915877085u,
+2743743122u,
+3250783882u,
+1346652536u,
+143311109u,
+2443788461u,
+1048248964u,
+2806619339u,
+3263266976u,
+1668146349u,
+3397428868u,
+3276188862u,
+1774196343u,
+1993847813u,
+2771079610u,
+476672419u,
+2119050359u,
+2918326659u,
+2245402721u,
+2692910474u,
+2374383269u,
+342400227u,
+2961437795u,
+3899230368u,
+337787132u,
+3664444935u,
+1269451153u,
+2971526729u,
+1486511182u,
+791070133u,
+2570319890u,
+3482497490u,
+2134230518u,
+4273391202u,
+1825511330u,
+3947753714u,
+1389755724u,
+3995075516u,
+2081052615u,
+3626343470u,
+4213603435u,
+2137917278u,
+2898987303u,
+3059215715u,
+3383237881u,
+3003674434u,
+409174425u,
+1911915604u,
+2087728055u,
+2942005882u,
+3386522440u,
+714936074u,
+261924004u,
+3268784033u,
+1141188757u,
+2413217552u,
+1515163433u,
+};
+
+// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
+bool Test(int offset, int len = 0) {
+#undef Check
+#undef IsAlive
+
+#define Check(x) do { \
+ const uint32_t actual = (x), e = expected[index++]; \
+ bool ok = actual == e; \
+ if (!ok) { \
+ cerr << "expected " << hex << e << " but got " << actual << endl; \
+ ++errors; \
+ } \
+ assert(ok); \
+} while (0)
+
+#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
+
+ // After the following line is where the uses of "Check" and such will go.
+ static int index = 0;
if (offset == -1) { int alive = 0; IsAlive(farmhashsa::Hash32WithSeed(farm_hash_data, len++, SEED)); IsAlive(farmhashsa::Hash32(farm_hash_data, len++)); IsAlive(farmhashsa::Hash32(farm_hash_data, len++)); len -= 3; return alive > 0; }
Check(farmhashsa::Hash32WithSeed(farm_hash_data + offset, len, SEED));
Check(farmhashsa::Hash32(farm_hash_data + offset, len));
-
- return true;
-#undef Check
-#undef IsAlive
-}
-
-int RunTest() {
- Setup();
- int i = 0;
- cout << "Running farmhashsaTest";
- if (!Test(-1)) {
- cout << "... Unavailable\n";
- return NoteErrors();
- }
- // Good. The function is attempting to hash, so run the full test.
- int errors_prior_to_test = errors;
- for ( ; i < kTestSize - 1; i++) {
- Test(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- Test(0, i);
- }
- Test(0, kDataSize);
- cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
- return NoteErrors();
-}
-
-#else
-
-// After the following line is where the code to print hash codes will go.
-void Dump(int offset, int len) {
+
+ return true;
+#undef Check
+#undef IsAlive
+}
+
+int RunTest() {
+ Setup();
+ int i = 0;
+ cout << "Running farmhashsaTest";
+ if (!Test(-1)) {
+ cout << "... Unavailable\n";
+ return NoteErrors();
+ }
+ // Good. The function is attempting to hash, so run the full test.
+ int errors_prior_to_test = errors;
+ for ( ; i < kTestSize - 1; i++) {
+ Test(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ Test(0, i);
+ }
+ Test(0, kDataSize);
+ cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
+ return NoteErrors();
+}
+
+#else
+
+// After the following line is where the code to print hash codes will go.
+void Dump(int offset, int len) {
cout << farmhashsa::Hash32WithSeed(farm_hash_data + offset, len, SEED) << "u," << endl;
cout << farmhashsa::Hash32(farm_hash_data + offset, len) << "u," << endl;
-}
-
-#endif
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-
-} // namespace farmhashsaTest
-
-#if !TESTING
-int main(int argc, char** argv) {
- Setup();
- cout << "uint32_t expected[] = {\n";
- int i = 0;
- for ( ; i < kTestSize - 1; i++) {
- farmhashsaTest::Dump(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- farmhashsaTest::Dump(0, i);
- }
- farmhashsaTest::Dump(0, kDataSize);
- cout << "};\n";
-}
-#endif
-#ifndef FARMHASH_SELF_TEST_GUARD
-#define FARMHASH_SELF_TEST_GUARD
-#include <cstdio>
-#include <iostream>
-#include <string.h>
-
-using std::cout;
-using std::cerr;
-using std::endl;
-using std::hex;
-
-static const uint64_t kSeed0 = 1234567;
-static const uint64_t kSeed1 = k0;
-static const int kDataSize = 1 << 20;
-static const int kTestSize = 300;
-#define kSeed128 Uint128(kSeed0, kSeed1)
-
+}
+
+#endif
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+
+} // namespace farmhashsaTest
+
+#if !TESTING
+int main(int argc, char** argv) {
+ Setup();
+ cout << "uint32_t expected[] = {\n";
+ int i = 0;
+ for ( ; i < kTestSize - 1; i++) {
+ farmhashsaTest::Dump(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ farmhashsaTest::Dump(0, i);
+ }
+ farmhashsaTest::Dump(0, kDataSize);
+ cout << "};\n";
+}
+#endif
+#ifndef FARMHASH_SELF_TEST_GUARD
+#define FARMHASH_SELF_TEST_GUARD
+#include <cstdio>
+#include <iostream>
+#include <string.h>
+
+using std::cout;
+using std::cerr;
+using std::endl;
+using std::hex;
+
+static const uint64_t kSeed0 = 1234567;
+static const uint64_t kSeed1 = k0;
+static const int kDataSize = 1 << 20;
+static const int kTestSize = 300;
+#define kSeed128 Uint128(kSeed0, kSeed1)
+
static char farm_hash_data[kDataSize];
-
-static int completed_self_tests = 0;
-static int errors = 0;
-
+
+static int completed_self_tests = 0;
+static int errors = 0;
+
// Initialize farm_hash_data to pseudorandom values.
-void Setup() {
- if (completed_self_tests == 0) {
- uint64_t a = 9;
- uint64_t b = 777;
- for (int i = 0; i < kDataSize; i++) {
- a += b;
- b += a;
- a = (a ^ (a >> 41)) * k0;
- b = (b ^ (b >> 41)) * k0 + i;
- uint8_t u = b >> 37;
+void Setup() {
+ if (completed_self_tests == 0) {
+ uint64_t a = 9;
+ uint64_t b = 777;
+ for (int i = 0; i < kDataSize; i++) {
+ a += b;
+ b += a;
+ a = (a ^ (a >> 41)) * k0;
+ b = (b ^ (b >> 41)) * k0 + i;
+ uint8_t u = b >> 37;
memcpy(farm_hash_data + i, &u, 1); // uint8_t -> char
- }
- }
-}
-
-int NoteErrors() {
-#define NUM_SELF_TESTS 9
- if (++completed_self_tests == NUM_SELF_TESTS)
- std::exit(errors > 0);
- return errors;
-}
-
-template <typename T> inline bool IsNonZero(T x) {
- return x != 0;
-}
-
-template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
- return x != Uint128(0, 0);
-}
-
-#endif // FARMHASH_SELF_TEST_GUARD
-
-namespace farmhashsuTest {
-
-uint32_t CreateSeed(int offset, int salt) {
- uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h += static_cast<uint32_t>(offset & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- return h;
-}
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-#define SEED CreateSeed(offset, -1)
-#define SEED0 CreateSeed(offset, 0)
-#define SEED1 CreateSeed(offset, 1)
-
-#undef TESTING
-#define TESTING 1
-#if TESTING
-uint32_t expected[] = {
-4223616069u,
-3696677242u,
-4081014168u,
-2576519988u,
-2212771159u,
-1112731063u,
-1020067935u,
-3955445564u,
-1451961420u,
-653440099u,
-31917516u,
-2957164615u,
-2590087362u,
-3879448744u,
-176305566u,
-2447367541u,
-1359016305u,
-3363804638u,
-1117290165u,
-1062549743u,
-2437877004u,
-1894455839u,
-673206794u,
-3486923651u,
-3269862919u,
-2303349487u,
-1380660650u,
-595525107u,
-1525325287u,
-2025609358u,
-176408838u,
-1592885012u,
-864896482u,
-2101378090u,
-3489229104u,
-2118965695u,
-581644891u,
-2718789079u,
-631613207u,
-4228658372u,
-3867875546u,
-3531368319u,
-3804516756u,
-3317755099u,
-1619744564u,
-2884717286u,
-1088213445u,
-2667691076u,
-3727873235u,
-2330406762u,
-858590707u,
-457744844u,
-4150036245u,
-2000404290u,
-1478882570u,
-901678172u,
-819171187u,
-195942998u,
-4254302102u,
-3967266927u,
-437030323u,
-4018009204u,
-2868246750u,
-3540087514u,
-3154852132u,
-3319116625u,
-357580983u,
-3177665294u,
-1108813287u,
-1253366798u,
-2315997713u,
-510718750u,
-1360882441u,
-2770216279u,
-3048866755u,
-3406961221u,
-3664371439u,
-1151145514u,
-1027891570u,
-2699067992u,
-3461888315u,
-198061905u,
-292769636u,
-1106771795u,
-4064110516u,
-3258279756u,
-762850927u,
-1818699721u,
-2803307356u,
-3919169404u,
-460980967u,
-3125535078u,
-2802568977u,
-3582546426u,
-2148940781u,
-3963274378u,
-1266953698u,
-204185123u,
-1100034381u,
-3009193601u,
-4200651967u,
-274889605u,
-2700589508u,
-952511689u,
-3765324859u,
-3465498478u,
-4014967037u,
-2070988082u,
-2972423530u,
-3068638223u,
-4156773651u,
-489509804u,
-1323863238u,
-3731914806u,
-2846098469u,
-2728930632u,
-346814072u,
-848146907u,
-551160669u,
-4165126521u,
-2039095001u,
-4179859388u,
-2434936359u,
-2764414551u,
-238491210u,
-732483969u,
-3366512764u,
-478307468u,
-4124179572u,
-4142733597u,
-1953448206u,
-4199329278u,
-865077060u,
-2627662116u,
-2802499360u,
-3141206831u,
-1959218197u,
-911371451u,
-125987200u,
-2821366175u,
-2530992747u,
-2409206225u,
-117991880u,
-2133402461u,
-895510531u,
-428719601u,
-3036014536u,
-1223783733u,
-733793540u,
-970650405u,
-547701766u,
-570764615u,
-3224485368u,
-3192714940u,
-319942831u,
-3940200341u,
-362056204u,
-2832368105u,
-1853281226u,
-3296434636u,
-3752508307u,
-604292768u,
-2231940616u,
-1204094681u,
-866194005u,
-2405201650u,
-2466384396u,
-380829379u,
-230033818u,
-2783417588u,
-4249886729u,
-829569301u,
-2988322580u,
-2299983554u,
-74748560u,
-737514425u,
-3153050211u,
-652642663u,
-1270205115u,
-227197032u,
-2773091790u,
-325849216u,
-49998791u,
-4043203010u,
-3662748068u,
-1709364383u,
-1179105165u,
-1478504366u,
-2980456610u,
-1167476429u,
-1590390732u,
-1306256496u,
-292008135u,
-374690995u,
-1809200819u,
-1680595904u,
-646040226u,
-1742445560u,
-2435776844u,
-3703683804u,
-478742495u,
-814967947u,
-2698190177u,
-1003617993u,
-1436118705u,
-217056304u,
-1412287094u,
-2738417466u,
-2933279339u,
-3461877733u,
-1203141205u,
-2119492857u,
-1134895723u,
-1560001021u,
-3786320122u,
-3748116258u,
-3486219595u,
-702138030u,
-1062984182u,
-232789133u,
-1566523968u,
-3885443778u,
-1820171888u,
-3655858585u,
-2316903005u,
-2678779620u,
-395625433u,
-1609107564u,
-3108726411u,
-2937837224u,
-3911907151u,
-557272509u,
-3893435978u,
-1542613576u,
-1079886893u,
-2624566322u,
-1413700616u,
-2796974006u,
-1922556114u,
-562820464u,
-2845409784u,
-54180312u,
-1898782464u,
-3681814953u,
-2417064617u,
-1815464483u,
-911626132u,
-2964575550u,
-1852696128u,
-2319647785u,
-1998904590u,
-619992689u,
-3073207513u,
-1238163512u,
-3199435982u,
-828667254u,
-3561155502u,
-3943095163u,
-1045711849u,
-2238679131u,
-2114975398u,
-713808403u,
-3871787494u,
-2572031161u,
-2360934075u,
-2337781107u,
-262596504u,
-693836699u,
-2129369850u,
-3543189427u,
-962205222u,
-3685581020u,
-692974477u,
-725182211u,
-646123906u,
-2368836544u,
-2505872733u,
-1999977610u,
-1639885802u,
-1475058032u,
-207023609u,
-2773581234u,
-3524857793u,
-3433371102u,
-3243027613u,
-1787668353u,
-985757946u,
-3896012929u,
-702356957u,
-3559331129u,
-884084870u,
-4009998120u,
-648888720u,
-1403349048u,
-1624342778u,
-1766674171u,
-2518582204u,
-3251243146u,
-792751003u,
-1377201813u,
-3629686054u,
-1583734324u,
-3647107626u,
-4258564381u,
-1469878609u,
-1940598241u,
-2755003690u,
-1907120418u,
-109916701u,
-775347954u,
-2090960874u,
-611281803u,
-3470490146u,
-3301663253u,
-1835412158u,
-1803066146u,
-591872433u,
-550703713u,
-1495089683u,
-826492808u,
-817200035u,
-4177474571u,
-688070143u,
-971427632u,
-1442499481u,
-3568640348u,
-2789993738u,
-85808128u,
-2058346726u,
-394058570u,
-3466511434u,
-318905230u,
-4149248030u,
-415308316u,
-165997598u,
-1219639412u,
-1648022659u,
-2857432523u,
-1422508004u,
-468095522u,
-296968649u,
-430250611u,
-1775562314u,
-2976361671u,
-1040036362u,
-1372510167u,
-292746272u,
-3408238954u,
-626061886u,
-1317637569u,
-1237775792u,
-1218490455u,
-2224234499u,
-590942419u,
-713995643u,
-3541889330u,
-4140218960u,
-3529791107u,
-354462673u,
-842607274u,
-365048533u,
-2638303414u,
-3560458014u,
-31621379u,
-4210854794u,
-1273118792u,
-2572743762u,
-3513175801u,
-402066986u,
-602524471u,
-565029192u,
-180576438u,
-1288605959u,
-2896244423u,
-1420543484u,
-1329862227u,
-1791567324u,
-4248690247u,
-12917038u,
-3483481310u,
-2082050731u,
-1611921143u,
-2443766548u,
-2216338811u,
-2528006095u,
-2984009021u,
-674210884u,
-2857608106u,
-2155534809u,
-1023105067u,
-2968955846u,
-3303624302u,
-2502112850u,
-245749006u,
-3175229091u,
-3342796184u,
-3613785362u,
-1614168851u,
-2582149283u,
-895403488u,
-416205023u,
-3792242000u,
-529397534u,
-299415203u,
-4284673348u,
-2096851282u,
-1864524731u,
-2012577738u,
-3426363316u,
-1387308508u,
-1143610148u,
-2027467219u,
-3772856163u,
-3453862623u,
-2661437174u,
-2047145955u,
-2533381447u,
-2059534115u,
-439426587u,
-1537543414u,
-2384289877u,
-3174229055u,
-2658017753u,
-2293148474u,
-2359450158u,
-3930242475u,
-1510302397u,
-3354288821u,
-920095603u,
-2415746928u,
-2729472638u,
-2261143371u,
-848667611u,
-919157153u,
-3322393117u,
-4103299943u,
-413569608u,
-68911216u,
-3334990170u,
-1228068652u,
-1570056373u,
-1905477543u,
-2622302276u,
-2935063895u,
-3224810004u,
-4211768578u,
-828688131u,
-3556122839u,
-1930935348u,
-2605825202u,
-1540993970u,
-3209115883u,
-122847500u,
-665638794u,
-506571051u,
-2691795295u,
-3996966556u,
-714660621u,
-3662432239u,
-470651837u,
-1807432621u,
-3755290953u,
-359878860u,
-2793081615u,
-4065031431u,
-904653062u,
-2317800777u,
-568501094u,
-3492871707u,
-2738806116u,
-2883859610u,
-3242080257u,
-364246691u,
-3601786516u,
-3159362524u,
-1578272201u,
-1283574375u,
-2912186103u,
-2256279032u,
-1540671086u,
-2356088973u,
-2892277779u,
-3441449267u,
-2225005503u,
-3846428419u,
-2014549218u,
-2290734767u,
-2126684614u,
-4235463487u,
-3811556204u,
-174739661u,
-767525888u,
-47684458u,
-4211168099u,
-889063422u,
-469864411u,
-767407110u,
-413337343u,
-1618456644u,
-2814499820u,
-2401124192u,
-632089437u,
-1234980238u,
-1288585402u,
-3153169944u,
-2917822069u,
-1843320264u,
-3794359132u,
-3074573530u,
-258629454u,
-3813357060u,
-3806887248u,
-1665524736u,
-3324533324u,
-3005091922u,
-793108368u,
-1529669805u,
-2332660395u,
-2217730223u,
-2634687611u,
-442806463u,
-1968135266u,
-454523002u,
-3177866230u,
-2808960136u,
-4259114138u,
-4103264843u,
-3103714075u,
-2462967542u,
-1466891491u,
-477973764u,
-834565647u,
-741089037u,
-218837573u,
-1710536528u,
-2469088212u,
-1229072375u,
-2828341u,
-176923431u,
-985763350u,
-4095477420u,
-1984145538u,
-1870791084u,
-674956677u,
-1978138947u,
-1296493993u,
-1818183554u,
-3443333721u,
-2124949983u,
-2549590262u,
-2700850794u,
-2662736367u,
-739638109u,
-4061447096u,
-2960078422u,
-2453781158u,
-929570940u,
-3200328383u,
-2406328791u,
-1419180666u,
-2152455739u,
-2805741044u,
-3305999074u,
-3183816361u,
-2303165050u,
-4922104u,
-63096005u,
-936656347u,
-3104453886u,
-1088673880u,
-1113407526u,
-1457890086u,
-453478383u,
-1107686695u,
-3626027824u,
-1159687359u,
-2248467888u,
-2004578380u,
-3274954621u,
-1787958646u,
-2628726704u,
-1138419798u,
-3735442315u,
-692385301u,
-313807213u,
-2329068673u,
-59375364u,
-3261084359u,
-2088644507u,
-2471153194u,
-788336435u,
-4024527246u,
-141504460u,
-2307553888u,
-1930559950u,
-48975711u,
-2745693338u,
-230161982u,
-3429230862u,
-1335968626u,
-609591304u,
-57435073u,
-4279281136u,
-3152151665u,
-3984484924u,
-3459883943u,
-397478330u,
-1738762229u,
-3033590066u,
-3611539498u,
-1363463523u,
-3319364965u,
-2671169141u,
-3819548561u,
-1691193757u,
-2423834608u,
-2820147055u,
-1378120632u,
-1240565187u,
-3180720050u,
-680831086u,
-3309658414u,
-1986166490u,
-762099827u,
-510883662u,
-2047373648u,
-3606742294u,
-3894965352u,
-2342078853u,
-1091255717u,
-776594727u,
-3217317445u,
-1574468485u,
-3844504016u,
-2819598918u,
-1037401010u,
-2550943503u,
-3867184001u,
-1687911772u,
-165313836u,
-1679575281u,
-2418947263u,
-2038774952u,
-3913543652u,
-3209155736u,
-149905221u,
-3859604717u,
-713919631u,
-4069810796u,
-1882959164u,
-1019939034u,
-2379867302u,
-3666323035u,
-1157389013u,
-2422300650u,
-3366777340u,
-2526452062u,
-1313747885u,
-1039617868u,
-1620553692u,
-2032976978u,
-578789528u,
-1592846839u,
-2270630604u,
-897850577u,
-1603294178u,
-3105664807u,
-1442670138u,
-1728019360u,
-79313861u,
-1683031101u,
-1913067024u,
-4070719870u,
-708986470u,
-2586453359u,
-3993348863u,
-3358251279u,
-3003552537u,
-750174793u,
-836888956u,
-4190747426u,
-4251291318u,
-4145164938u,
-1366883260u,
-1912910955u,
-510192669u,
-1851315039u,
-3574241274u,
-3220062924u,
-2821142039u,
-1317082195u,
-2274293302u,
-1839219569u,
-126586168u,
-3989293643u,
-2680178207u,
-347056948u,
-799681430u,
-2864517481u,
-3180404853u,
-213140045u,
-1956305184u,
-1474675286u,
-3085723423u,
-2841859626u,
-308421914u,
-3670309263u,
-1765052231u,
-245459238u,
-113434331u,
-4079521092u,
-2115235526u,
-2943408816u,
-1055476938u,
-1506442339u,
-2291296392u,
-3267864332u,
-1282145528u,
-3700108015u,
-1932843667u,
-2677701670u,
-6041177u,
-3889648557u,
-1461025478u,
-};
-
-// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
-bool Test(int offset, int len = 0) {
-#undef Check
-#undef IsAlive
-
-#define Check(x) do { \
- const uint32_t actual = (x), e = expected[index++]; \
- bool ok = actual == e; \
- if (!ok) { \
- cerr << "expected " << hex << e << " but got " << actual << endl; \
- ++errors; \
- } \
- assert(ok); \
-} while (0)
-
-#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
-
- // After the following line is where the uses of "Check" and such will go.
- static int index = 0;
+ }
+ }
+}
+
+int NoteErrors() {
+#define NUM_SELF_TESTS 9
+ if (++completed_self_tests == NUM_SELF_TESTS)
+ std::exit(errors > 0);
+ return errors;
+}
+
+template <typename T> inline bool IsNonZero(T x) {
+ return x != 0;
+}
+
+template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
+ return x != Uint128(0, 0);
+}
+
+#endif // FARMHASH_SELF_TEST_GUARD
+
+namespace farmhashsuTest {
+
+uint32_t CreateSeed(int offset, int salt) {
+ uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h += static_cast<uint32_t>(offset & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ return h;
+}
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+#define SEED CreateSeed(offset, -1)
+#define SEED0 CreateSeed(offset, 0)
+#define SEED1 CreateSeed(offset, 1)
+
+#undef TESTING
+#define TESTING 1
+#if TESTING
+uint32_t expected[] = {
+4223616069u,
+3696677242u,
+4081014168u,
+2576519988u,
+2212771159u,
+1112731063u,
+1020067935u,
+3955445564u,
+1451961420u,
+653440099u,
+31917516u,
+2957164615u,
+2590087362u,
+3879448744u,
+176305566u,
+2447367541u,
+1359016305u,
+3363804638u,
+1117290165u,
+1062549743u,
+2437877004u,
+1894455839u,
+673206794u,
+3486923651u,
+3269862919u,
+2303349487u,
+1380660650u,
+595525107u,
+1525325287u,
+2025609358u,
+176408838u,
+1592885012u,
+864896482u,
+2101378090u,
+3489229104u,
+2118965695u,
+581644891u,
+2718789079u,
+631613207u,
+4228658372u,
+3867875546u,
+3531368319u,
+3804516756u,
+3317755099u,
+1619744564u,
+2884717286u,
+1088213445u,
+2667691076u,
+3727873235u,
+2330406762u,
+858590707u,
+457744844u,
+4150036245u,
+2000404290u,
+1478882570u,
+901678172u,
+819171187u,
+195942998u,
+4254302102u,
+3967266927u,
+437030323u,
+4018009204u,
+2868246750u,
+3540087514u,
+3154852132u,
+3319116625u,
+357580983u,
+3177665294u,
+1108813287u,
+1253366798u,
+2315997713u,
+510718750u,
+1360882441u,
+2770216279u,
+3048866755u,
+3406961221u,
+3664371439u,
+1151145514u,
+1027891570u,
+2699067992u,
+3461888315u,
+198061905u,
+292769636u,
+1106771795u,
+4064110516u,
+3258279756u,
+762850927u,
+1818699721u,
+2803307356u,
+3919169404u,
+460980967u,
+3125535078u,
+2802568977u,
+3582546426u,
+2148940781u,
+3963274378u,
+1266953698u,
+204185123u,
+1100034381u,
+3009193601u,
+4200651967u,
+274889605u,
+2700589508u,
+952511689u,
+3765324859u,
+3465498478u,
+4014967037u,
+2070988082u,
+2972423530u,
+3068638223u,
+4156773651u,
+489509804u,
+1323863238u,
+3731914806u,
+2846098469u,
+2728930632u,
+346814072u,
+848146907u,
+551160669u,
+4165126521u,
+2039095001u,
+4179859388u,
+2434936359u,
+2764414551u,
+238491210u,
+732483969u,
+3366512764u,
+478307468u,
+4124179572u,
+4142733597u,
+1953448206u,
+4199329278u,
+865077060u,
+2627662116u,
+2802499360u,
+3141206831u,
+1959218197u,
+911371451u,
+125987200u,
+2821366175u,
+2530992747u,
+2409206225u,
+117991880u,
+2133402461u,
+895510531u,
+428719601u,
+3036014536u,
+1223783733u,
+733793540u,
+970650405u,
+547701766u,
+570764615u,
+3224485368u,
+3192714940u,
+319942831u,
+3940200341u,
+362056204u,
+2832368105u,
+1853281226u,
+3296434636u,
+3752508307u,
+604292768u,
+2231940616u,
+1204094681u,
+866194005u,
+2405201650u,
+2466384396u,
+380829379u,
+230033818u,
+2783417588u,
+4249886729u,
+829569301u,
+2988322580u,
+2299983554u,
+74748560u,
+737514425u,
+3153050211u,
+652642663u,
+1270205115u,
+227197032u,
+2773091790u,
+325849216u,
+49998791u,
+4043203010u,
+3662748068u,
+1709364383u,
+1179105165u,
+1478504366u,
+2980456610u,
+1167476429u,
+1590390732u,
+1306256496u,
+292008135u,
+374690995u,
+1809200819u,
+1680595904u,
+646040226u,
+1742445560u,
+2435776844u,
+3703683804u,
+478742495u,
+814967947u,
+2698190177u,
+1003617993u,
+1436118705u,
+217056304u,
+1412287094u,
+2738417466u,
+2933279339u,
+3461877733u,
+1203141205u,
+2119492857u,
+1134895723u,
+1560001021u,
+3786320122u,
+3748116258u,
+3486219595u,
+702138030u,
+1062984182u,
+232789133u,
+1566523968u,
+3885443778u,
+1820171888u,
+3655858585u,
+2316903005u,
+2678779620u,
+395625433u,
+1609107564u,
+3108726411u,
+2937837224u,
+3911907151u,
+557272509u,
+3893435978u,
+1542613576u,
+1079886893u,
+2624566322u,
+1413700616u,
+2796974006u,
+1922556114u,
+562820464u,
+2845409784u,
+54180312u,
+1898782464u,
+3681814953u,
+2417064617u,
+1815464483u,
+911626132u,
+2964575550u,
+1852696128u,
+2319647785u,
+1998904590u,
+619992689u,
+3073207513u,
+1238163512u,
+3199435982u,
+828667254u,
+3561155502u,
+3943095163u,
+1045711849u,
+2238679131u,
+2114975398u,
+713808403u,
+3871787494u,
+2572031161u,
+2360934075u,
+2337781107u,
+262596504u,
+693836699u,
+2129369850u,
+3543189427u,
+962205222u,
+3685581020u,
+692974477u,
+725182211u,
+646123906u,
+2368836544u,
+2505872733u,
+1999977610u,
+1639885802u,
+1475058032u,
+207023609u,
+2773581234u,
+3524857793u,
+3433371102u,
+3243027613u,
+1787668353u,
+985757946u,
+3896012929u,
+702356957u,
+3559331129u,
+884084870u,
+4009998120u,
+648888720u,
+1403349048u,
+1624342778u,
+1766674171u,
+2518582204u,
+3251243146u,
+792751003u,
+1377201813u,
+3629686054u,
+1583734324u,
+3647107626u,
+4258564381u,
+1469878609u,
+1940598241u,
+2755003690u,
+1907120418u,
+109916701u,
+775347954u,
+2090960874u,
+611281803u,
+3470490146u,
+3301663253u,
+1835412158u,
+1803066146u,
+591872433u,
+550703713u,
+1495089683u,
+826492808u,
+817200035u,
+4177474571u,
+688070143u,
+971427632u,
+1442499481u,
+3568640348u,
+2789993738u,
+85808128u,
+2058346726u,
+394058570u,
+3466511434u,
+318905230u,
+4149248030u,
+415308316u,
+165997598u,
+1219639412u,
+1648022659u,
+2857432523u,
+1422508004u,
+468095522u,
+296968649u,
+430250611u,
+1775562314u,
+2976361671u,
+1040036362u,
+1372510167u,
+292746272u,
+3408238954u,
+626061886u,
+1317637569u,
+1237775792u,
+1218490455u,
+2224234499u,
+590942419u,
+713995643u,
+3541889330u,
+4140218960u,
+3529791107u,
+354462673u,
+842607274u,
+365048533u,
+2638303414u,
+3560458014u,
+31621379u,
+4210854794u,
+1273118792u,
+2572743762u,
+3513175801u,
+402066986u,
+602524471u,
+565029192u,
+180576438u,
+1288605959u,
+2896244423u,
+1420543484u,
+1329862227u,
+1791567324u,
+4248690247u,
+12917038u,
+3483481310u,
+2082050731u,
+1611921143u,
+2443766548u,
+2216338811u,
+2528006095u,
+2984009021u,
+674210884u,
+2857608106u,
+2155534809u,
+1023105067u,
+2968955846u,
+3303624302u,
+2502112850u,
+245749006u,
+3175229091u,
+3342796184u,
+3613785362u,
+1614168851u,
+2582149283u,
+895403488u,
+416205023u,
+3792242000u,
+529397534u,
+299415203u,
+4284673348u,
+2096851282u,
+1864524731u,
+2012577738u,
+3426363316u,
+1387308508u,
+1143610148u,
+2027467219u,
+3772856163u,
+3453862623u,
+2661437174u,
+2047145955u,
+2533381447u,
+2059534115u,
+439426587u,
+1537543414u,
+2384289877u,
+3174229055u,
+2658017753u,
+2293148474u,
+2359450158u,
+3930242475u,
+1510302397u,
+3354288821u,
+920095603u,
+2415746928u,
+2729472638u,
+2261143371u,
+848667611u,
+919157153u,
+3322393117u,
+4103299943u,
+413569608u,
+68911216u,
+3334990170u,
+1228068652u,
+1570056373u,
+1905477543u,
+2622302276u,
+2935063895u,
+3224810004u,
+4211768578u,
+828688131u,
+3556122839u,
+1930935348u,
+2605825202u,
+1540993970u,
+3209115883u,
+122847500u,
+665638794u,
+506571051u,
+2691795295u,
+3996966556u,
+714660621u,
+3662432239u,
+470651837u,
+1807432621u,
+3755290953u,
+359878860u,
+2793081615u,
+4065031431u,
+904653062u,
+2317800777u,
+568501094u,
+3492871707u,
+2738806116u,
+2883859610u,
+3242080257u,
+364246691u,
+3601786516u,
+3159362524u,
+1578272201u,
+1283574375u,
+2912186103u,
+2256279032u,
+1540671086u,
+2356088973u,
+2892277779u,
+3441449267u,
+2225005503u,
+3846428419u,
+2014549218u,
+2290734767u,
+2126684614u,
+4235463487u,
+3811556204u,
+174739661u,
+767525888u,
+47684458u,
+4211168099u,
+889063422u,
+469864411u,
+767407110u,
+413337343u,
+1618456644u,
+2814499820u,
+2401124192u,
+632089437u,
+1234980238u,
+1288585402u,
+3153169944u,
+2917822069u,
+1843320264u,
+3794359132u,
+3074573530u,
+258629454u,
+3813357060u,
+3806887248u,
+1665524736u,
+3324533324u,
+3005091922u,
+793108368u,
+1529669805u,
+2332660395u,
+2217730223u,
+2634687611u,
+442806463u,
+1968135266u,
+454523002u,
+3177866230u,
+2808960136u,
+4259114138u,
+4103264843u,
+3103714075u,
+2462967542u,
+1466891491u,
+477973764u,
+834565647u,
+741089037u,
+218837573u,
+1710536528u,
+2469088212u,
+1229072375u,
+2828341u,
+176923431u,
+985763350u,
+4095477420u,
+1984145538u,
+1870791084u,
+674956677u,
+1978138947u,
+1296493993u,
+1818183554u,
+3443333721u,
+2124949983u,
+2549590262u,
+2700850794u,
+2662736367u,
+739638109u,
+4061447096u,
+2960078422u,
+2453781158u,
+929570940u,
+3200328383u,
+2406328791u,
+1419180666u,
+2152455739u,
+2805741044u,
+3305999074u,
+3183816361u,
+2303165050u,
+4922104u,
+63096005u,
+936656347u,
+3104453886u,
+1088673880u,
+1113407526u,
+1457890086u,
+453478383u,
+1107686695u,
+3626027824u,
+1159687359u,
+2248467888u,
+2004578380u,
+3274954621u,
+1787958646u,
+2628726704u,
+1138419798u,
+3735442315u,
+692385301u,
+313807213u,
+2329068673u,
+59375364u,
+3261084359u,
+2088644507u,
+2471153194u,
+788336435u,
+4024527246u,
+141504460u,
+2307553888u,
+1930559950u,
+48975711u,
+2745693338u,
+230161982u,
+3429230862u,
+1335968626u,
+609591304u,
+57435073u,
+4279281136u,
+3152151665u,
+3984484924u,
+3459883943u,
+397478330u,
+1738762229u,
+3033590066u,
+3611539498u,
+1363463523u,
+3319364965u,
+2671169141u,
+3819548561u,
+1691193757u,
+2423834608u,
+2820147055u,
+1378120632u,
+1240565187u,
+3180720050u,
+680831086u,
+3309658414u,
+1986166490u,
+762099827u,
+510883662u,
+2047373648u,
+3606742294u,
+3894965352u,
+2342078853u,
+1091255717u,
+776594727u,
+3217317445u,
+1574468485u,
+3844504016u,
+2819598918u,
+1037401010u,
+2550943503u,
+3867184001u,
+1687911772u,
+165313836u,
+1679575281u,
+2418947263u,
+2038774952u,
+3913543652u,
+3209155736u,
+149905221u,
+3859604717u,
+713919631u,
+4069810796u,
+1882959164u,
+1019939034u,
+2379867302u,
+3666323035u,
+1157389013u,
+2422300650u,
+3366777340u,
+2526452062u,
+1313747885u,
+1039617868u,
+1620553692u,
+2032976978u,
+578789528u,
+1592846839u,
+2270630604u,
+897850577u,
+1603294178u,
+3105664807u,
+1442670138u,
+1728019360u,
+79313861u,
+1683031101u,
+1913067024u,
+4070719870u,
+708986470u,
+2586453359u,
+3993348863u,
+3358251279u,
+3003552537u,
+750174793u,
+836888956u,
+4190747426u,
+4251291318u,
+4145164938u,
+1366883260u,
+1912910955u,
+510192669u,
+1851315039u,
+3574241274u,
+3220062924u,
+2821142039u,
+1317082195u,
+2274293302u,
+1839219569u,
+126586168u,
+3989293643u,
+2680178207u,
+347056948u,
+799681430u,
+2864517481u,
+3180404853u,
+213140045u,
+1956305184u,
+1474675286u,
+3085723423u,
+2841859626u,
+308421914u,
+3670309263u,
+1765052231u,
+245459238u,
+113434331u,
+4079521092u,
+2115235526u,
+2943408816u,
+1055476938u,
+1506442339u,
+2291296392u,
+3267864332u,
+1282145528u,
+3700108015u,
+1932843667u,
+2677701670u,
+6041177u,
+3889648557u,
+1461025478u,
+};
+
+// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
+bool Test(int offset, int len = 0) {
+#undef Check
+#undef IsAlive
+
+#define Check(x) do { \
+ const uint32_t actual = (x), e = expected[index++]; \
+ bool ok = actual == e; \
+ if (!ok) { \
+ cerr << "expected " << hex << e << " but got " << actual << endl; \
+ ++errors; \
+ } \
+ assert(ok); \
+} while (0)
+
+#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
+
+ // After the following line is where the uses of "Check" and such will go.
+ static int index = 0;
if (offset == -1) { int alive = 0; IsAlive(farmhashsu::Hash32WithSeed(farm_hash_data, len++, SEED)); IsAlive(farmhashsu::Hash32(farm_hash_data, len++)); IsAlive(farmhashsu::Hash32(farm_hash_data, len++)); len -= 3; return alive > 0; }
Check(farmhashsu::Hash32WithSeed(farm_hash_data + offset, len, SEED));
Check(farmhashsu::Hash32(farm_hash_data + offset, len));
-
- return true;
-#undef Check
-#undef IsAlive
-}
-
-int RunTest() {
- Setup();
- int i = 0;
- cout << "Running farmhashsuTest";
- if (!Test(-1)) {
- cout << "... Unavailable\n";
- return NoteErrors();
- }
- // Good. The function is attempting to hash, so run the full test.
- int errors_prior_to_test = errors;
- for ( ; i < kTestSize - 1; i++) {
- Test(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- Test(0, i);
- }
- Test(0, kDataSize);
- cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
- return NoteErrors();
-}
-
-#else
-
-// After the following line is where the code to print hash codes will go.
-void Dump(int offset, int len) {
+
+ return true;
+#undef Check
+#undef IsAlive
+}
+
+int RunTest() {
+ Setup();
+ int i = 0;
+ cout << "Running farmhashsuTest";
+ if (!Test(-1)) {
+ cout << "... Unavailable\n";
+ return NoteErrors();
+ }
+ // Good. The function is attempting to hash, so run the full test.
+ int errors_prior_to_test = errors;
+ for ( ; i < kTestSize - 1; i++) {
+ Test(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ Test(0, i);
+ }
+ Test(0, kDataSize);
+ cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
+ return NoteErrors();
+}
+
+#else
+
+// After the following line is where the code to print hash codes will go.
+void Dump(int offset, int len) {
cout << farmhashsu::Hash32WithSeed(farm_hash_data + offset, len, SEED) << "u," << endl;
cout << farmhashsu::Hash32(farm_hash_data + offset, len) << "u," << endl;
-}
-
-#endif
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-
-} // namespace farmhashsuTest
-
-#if !TESTING
-int main(int argc, char** argv) {
- Setup();
- cout << "uint32_t expected[] = {\n";
- int i = 0;
- for ( ; i < kTestSize - 1; i++) {
- farmhashsuTest::Dump(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- farmhashsuTest::Dump(0, i);
- }
- farmhashsuTest::Dump(0, kDataSize);
- cout << "};\n";
-}
-#endif
-#ifndef FARMHASH_SELF_TEST_GUARD
-#define FARMHASH_SELF_TEST_GUARD
-#include <cstdio>
-#include <iostream>
-#include <string.h>
-
-using std::cout;
-using std::cerr;
-using std::endl;
-using std::hex;
-
-static const uint64_t kSeed0 = 1234567;
-static const uint64_t kSeed1 = k0;
-static const int kDataSize = 1 << 20;
-static const int kTestSize = 300;
-#define kSeed128 Uint128(kSeed0, kSeed1)
-
+}
+
+#endif
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+
+} // namespace farmhashsuTest
+
+#if !TESTING
+int main(int argc, char** argv) {
+ Setup();
+ cout << "uint32_t expected[] = {\n";
+ int i = 0;
+ for ( ; i < kTestSize - 1; i++) {
+ farmhashsuTest::Dump(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ farmhashsuTest::Dump(0, i);
+ }
+ farmhashsuTest::Dump(0, kDataSize);
+ cout << "};\n";
+}
+#endif
+#ifndef FARMHASH_SELF_TEST_GUARD
+#define FARMHASH_SELF_TEST_GUARD
+#include <cstdio>
+#include <iostream>
+#include <string.h>
+
+using std::cout;
+using std::cerr;
+using std::endl;
+using std::hex;
+
+static const uint64_t kSeed0 = 1234567;
+static const uint64_t kSeed1 = k0;
+static const int kDataSize = 1 << 20;
+static const int kTestSize = 300;
+#define kSeed128 Uint128(kSeed0, kSeed1)
+
static char farm_hash_data[kDataSize];
-
-static int completed_self_tests = 0;
-static int errors = 0;
-
+
+static int completed_self_tests = 0;
+static int errors = 0;
+
// Initialize farm_hash_data to pseudorandom values.
-void Setup() {
- if (completed_self_tests == 0) {
- uint64_t a = 9;
- uint64_t b = 777;
- for (int i = 0; i < kDataSize; i++) {
- a += b;
- b += a;
- a = (a ^ (a >> 41)) * k0;
- b = (b ^ (b >> 41)) * k0 + i;
- uint8_t u = b >> 37;
+void Setup() {
+ if (completed_self_tests == 0) {
+ uint64_t a = 9;
+ uint64_t b = 777;
+ for (int i = 0; i < kDataSize; i++) {
+ a += b;
+ b += a;
+ a = (a ^ (a >> 41)) * k0;
+ b = (b ^ (b >> 41)) * k0 + i;
+ uint8_t u = b >> 37;
memcpy(farm_hash_data + i, &u, 1); // uint8_t -> char
- }
- }
-}
-
-int NoteErrors() {
-#define NUM_SELF_TESTS 9
- if (++completed_self_tests == NUM_SELF_TESTS)
- std::exit(errors > 0);
- return errors;
-}
-
-template <typename T> inline bool IsNonZero(T x) {
- return x != 0;
-}
-
-template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
- return x != Uint128(0, 0);
-}
-
-#endif // FARMHASH_SELF_TEST_GUARD
-
-namespace farmhashteTest {
-
-uint32_t CreateSeed(int offset, int salt) {
- uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h += static_cast<uint32_t>(offset & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- return h;
-}
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-#define SEED CreateSeed(offset, -1)
-#define SEED0 CreateSeed(offset, 0)
-#define SEED1 CreateSeed(offset, 1)
-
-#undef TESTING
-#define TESTING 1
-#if TESTING
-uint32_t expected[] = {
-1140953930u, 861465670u,
-3277735313u, 2681724312u,
-2598464059u, 797982799u,
-890626835u, 800175912u,
-2603993599u, 921001710u,
-1410420968u, 2134990486u,
-3283896453u, 1867689945u,
-2914424215u, 2244477846u,
-255297188u, 2992121793u,
-1110588164u, 4186314283u,
-161451183u, 3943596029u,
-4019337850u, 452431531u,
-283198166u, 2741341286u,
-3379021470u, 2557197665u,
-299850021u, 2532580744u,
-452473466u, 1706958772u,
-1298374911u, 3099673830u,
-2199864459u, 3696623795u,
-236935126u, 2976578695u,
-4055299123u, 3281581178u,
-1053458494u, 1882212500u,
-2305012065u, 2169731866u,
-3456121707u, 275903667u,
-458884671u, 3033004529u,
-3058973506u, 2379411653u,
-1898235244u, 1402319660u,
-2700149065u, 2699376854u,
-147814787u, 720739346u,
-2433714046u, 4222949502u,
-4220361840u, 1712034059u,
-3425469811u, 3690733394u,
-4148372108u, 1330324210u,
-594028478u, 2921867846u,
-1635026870u, 192883107u,
-780716741u, 1728752234u,
-3280331829u, 326029180u,
-3969463346u, 1436364519u,
-393215742u, 3349570000u,
-3824583307u, 1612122221u,
-2859809759u, 3808705738u,
-1379537552u, 1646032583u,
-2233466664u, 1432476832u,
-4023053163u, 2650381482u,
-2052294713u, 3552092450u,
-1628777059u, 1499109081u,
-3476440786u, 3829307897u,
-2960536756u, 1554038301u,
-1145519619u, 3190844552u,
-2902102606u, 3600725550u,
-237495366u, 540224401u,
-65721842u, 489963606u,
-1448662590u, 397635823u,
-1596489240u, 1562872448u,
-1790705123u, 2128624475u,
-180854224u, 2604346966u,
-1435705557u, 1262831810u,
-155445229u, 1672724608u,
-1669465176u, 1341975128u,
-663607706u, 2077310004u,
-3610042449u, 1911523866u,
-1043692997u, 1454396064u,
-2563776023u, 294527927u,
-1099072299u, 1389770549u,
-703505868u, 678706990u,
-2952353448u, 2026137563u,
-3603803785u, 629449419u,
-1933894405u, 3043213226u,
-226132789u, 2489287368u,
-1552847036u, 645684964u,
-3828089804u, 3632594520u,
-187883449u, 230403464u,
-3151491850u, 3272648435u,
-3729087873u, 1303930448u,
-2002861219u, 165370827u,
-916494250u, 1230085527u,
-3103338579u, 3064290191u,
-3807265751u, 3628174014u,
-231181488u, 851743255u,
-2295806711u, 1781190011u,
-2988893883u, 1554380634u,
-1142264800u, 3667013118u,
-1968445277u, 315203929u,
-2638023604u, 2290487377u,
-732137533u, 1909203251u,
-440398219u, 1891630171u,
-1380301172u, 1498556724u,
-4072067757u, 4165088768u,
-4204318635u, 441430649u,
-3931792696u, 197618179u,
-956300927u, 914413116u,
-3010839769u, 2837339569u,
-2148126371u, 1913303225u,
-3074915312u, 3117299654u,
-4139181436u, 2993479124u,
-3178848746u, 1357272220u,
-1438494951u, 507436733u,
-667183474u, 2084369203u,
-3854939912u, 1413396341u,
-126024219u, 146044391u,
-1016656857u, 3022024459u,
-3254014218u, 429095991u,
-990500595u, 3056862311u,
-985653208u, 1718653828u,
-623071693u, 366414107u,
-1771289760u, 2293458109u,
-3047342438u, 2991127487u,
-3120876698u, 1684583131u,
-3638043310u, 1170404994u,
-863214540u, 1087193030u,
-199124911u, 520792961u,
-3169775996u, 1577421232u,
-3331828431u, 1013201099u,
-1716848157u, 4033596884u,
-1770708857u, 4229339322u,
-1146169032u, 1434258493u,
-3824360466u, 3242407770u,
-1926419493u, 2649785113u,
-872586426u, 762243036u,
-2736953692u, 816692935u,
-1571283333u, 3555213933u,
-2266795890u, 3781899767u,
-4290630595u, 517646945u,
-3006163611u, 2180594090u,
-959214578u, 558910384u,
-1283799121u, 3047062993u,
-3830962609u, 2391606125u,
-3544509313u, 622325861u,
-834785312u, 382936554u,
-1421463872u, 788479970u,
-1825135056u, 2725923798u,
-580988377u, 2826990641u,
-247825043u, 3167748333u,
-812546227u, 2506885666u,
-2584372201u, 1758123094u,
-1891789696u, 389974094u,
-345313518u, 2022370576u,
-3886113119u, 3338548567u,
-1083486947u, 2583576230u,
-1776047957u, 1771384107u,
-3604937815u, 3198590202u,
-3027522813u, 4155628142u,
-4232136669u, 427759438u,
-4244322689u, 542201663u,
-1549591985u, 2856634168u,
-556609672u, 45845311u,
-1175961330u, 3948351189u,
-4165739882u, 4194218315u,
-1634635545u, 4151937410u,
-713127376u, 1467786451u,
-1327394015u, 2743592929u,
-2638154051u, 810082938u,
-3077742128u, 1062268187u,
-4084325664u, 3810665822u,
-3735739145u, 2794294783u,
-2335576331u, 2560479831u,
-690240711u, 997658837u,
-2442302747u, 3948961926u,
-3958366652u, 3067277639u,
-2059157774u, 1211737169u,
-1516711748u, 2339636583u,
-4188504038u, 59581167u,
-2767897792u, 1389679610u,
-2658147000u, 2643979752u,
-3758739543u, 4189944477u,
-1454470782u, 100876854u,
-2995362413u, 118817200u,
-3252925478u, 2062343506u,
-2804483644u, 3088828656u,
-1231633714u, 4168280671u,
-2931588131u, 3284356565u,
-1255909792u, 3130054947u,
-4173605289u, 1407328702u,
-1677744031u, 3532596884u,
-3162657845u, 3887208531u,
-2256541290u, 3459463480u,
-3740979556u, 259034107u,
-392987633u, 3233195759u,
-3606709555u, 3424793077u,
-315836068u, 3200749877u,
-4065431359u, 760633989u,
-2982018998u, 1811050648u,
-234531934u, 1115203611u,
-3897494162u, 1516407838u,
-1603559457u, 323296368u,
-2632963283u, 1778459926u,
-2879836826u, 2146672889u,
-3486330348u, 492621815u,
-1231665285u, 2457048126u,
-3438440082u, 2217471853u,
-3355404249u, 3275550588u,
-1052645068u, 862072556u,
-4110617119u, 3745267835u,
-2657392572u, 4279236653u,
-1688445808u, 701920051u,
-956734128u, 581695350u,
-3157862788u, 2585726058u,
-1192588249u, 1410111809u,
-1651193125u, 3326135446u,
-1073280453u, 97376972u,
-2513844237u, 2187968410u,
-3976859649u, 4267859263u,
-3429034542u, 564493077u,
-3000537321u, 479241367u,
-3845637831u, 2868987960u,
-51544337u, 1029173765u,
-393624922u, 704325635u,
-2357610553u, 1418509533u,
-2007814586u, 3866658271u,
-3082385053u, 735688735u,
-916110004u, 3283299459u,
-1051684175u, 1083796807u,
-4074716319u, 813690332u,
-144264390u, 1439630796u,
-1508556987u, 675582689u,
-3748881891u, 3195309868u,
-362884708u, 1616408198u,
-43233176u, 837301135u,
-881504822u, 3254795114u,
-1385506591u, 2799925823u,
-1469874582u, 3464841997u,
-497175391u, 3929484338u,
-3975771289u, 1798536177u,
-2926265846u, 1374242438u,
-3675707838u, 4205965408u,
-3153165629u, 1499475160u,
-187287713u, 548490821u,
-3255259608u, 4247675634u,
-1940181471u, 3779953975u,
-687167150u, 2319566715u,
-1742785722u, 785893184u,
-2296977392u, 2778575413u,
-1794720651u, 48131484u,
-4084891412u, 1160134629u,
-3737623280u, 823113169u,
-3423207646u, 3803213486u,
-710625654u, 4116162021u,
-3693420287u, 4167766971u,
-1666602807u, 295320990u,
-3513255468u, 2487440590u,
-234080704u, 4004655503u,
-2971762528u, 1479656873u,
-4090178629u, 4044418876u,
-391947536u, 1462554406u,
-3909295855u, 1239580330u,
-1515601363u, 2011102035u,
-1442068334u, 4265993528u,
-1191921695u, 2291355695u,
-4257172787u, 576405853u,
-314332944u, 4038839101u,
-55559918u, 2378985842u,
-711098718u, 2425317635u,
-1644327317u, 1401013391u,
-4193760037u, 2958260436u,
-3167371443u, 3062418115u,
-3800755475u, 3167030094u,
-3489648204u, 1405430357u,
-526177822u, 2602636307u,
-915406019u, 4264167741u,
-1484090483u, 3070944737u,
-254529415u, 4017058800u,
-1702710265u, 1029665228u,
-2000382906u, 3185573940u,
-1381258384u, 4036354071u,
-2900841028u, 2670703363u,
-2921748807u, 2899069938u,
-4130543625u, 688472265u,
-4186808827u, 1054670286u,
-1132985391u, 2840525968u,
-4175776103u, 338058159u,
-1735964501u, 1539305024u,
-3497121710u, 1568260669u,
-2227290760u, 146827036u,
-3977176001u, 4060134777u,
-857488494u, 250055052u,
-4284109679u, 2502815838u,
-2592281721u, 1603444633u,
-1390562014u, 1556658131u,
-616327404u, 2448966429u,
-3051191726u, 3891353218u,
-1213304082u, 762328245u,
-2239052397u, 1082330589u,
-2455957292u, 201837927u,
-405397452u, 3079886794u,
-2583939798u, 2848283092u,
-3750724631u, 883849006u,
-3204198988u, 3341327098u,
-1855234968u, 1982110346u,
-1485529487u, 541496720u,
-4117290321u, 3607433551u,
-2168864636u, 133643215u,
-1055817409u, 3847827123u,
-2960769387u, 4046101649u,
-1176127003u, 4015671361u,
-4243643405u, 2849988118u,
-517111221u, 1796672358u,
-2045051700u, 3452457457u,
-2948254999u, 2102063419u,
-1556410577u, 1536380876u,
-3776661467u, 3281002516u,
-1735616066u, 1539151988u,
-1087795162u, 3332431596u,
-685631442u, 1147951686u,
-95237878u, 2005032160u,
-4012206915u, 4224354805u,
-3204999386u, 2415262714u,
-1433635018u, 116647396u,
-83167836u, 2881562655u,
-2729416454u, 1029284767u,
-881378302u, 2159170082u,
-555057366u, 1169104445u,
-3963877000u, 1919171906u,
-336034862u, 2017579106u,
-4059340529u, 3020819343u,
-865146997u, 2473524405u,
-944743644u, 1694443528u,
-1804513294u, 2904752429u,
-617975720u, 3671562289u,
-260177668u, 505662155u,
-1885941445u, 2504509403u,
-2260041112u, 1019936943u,
-3722741628u, 1511077569u,
-3100701179u, 1379422864u,
-1535670711u, 773792826u,
-1103819072u, 2089123665u,
-1157547425u, 329152940u,
-4142587430u, 484732447u,
-2475035432u, 1120017626u,
-412145504u, 965125959u,
-324924679u, 2809286837u,
-2842141483u, 4029205195u,
-2974306813u, 515627448u,
-3791551981u, 1097806406u,
-3873078673u, 136118734u,
-1872130856u, 3632422367u,
-3574135531u, 4017075736u,
-1699452298u, 1403506686u,
-344414660u, 1189129691u,
-3487080616u, 1516736273u,
-1805475756u, 2562064338u,
-163335594u, 2732147834u,
-4077452507u, 2984955003u,
-4271866024u, 3071338162u,
-2347111903u, 873829983u,
-1948409509u, 1923531348u,
-459509140u, 771592405u,
-1750124750u, 2334938333u,
-213811117u, 2586632018u,
-185232757u, 4032960199u,
-2447383637u, 284777551u,
-1654276320u, 2687561076u,
-3512945009u, 308584855u,
-1861027147u, 4102279334u,
-3203802620u, 1692079268u,
-4250142168u, 2565680167u,
-1507046104u, 841195925u,
-520565830u, 3674576684u,
-38924274u, 3770488806u,
-2414430882u, 3978473838u,
-3703994407u, 69201295u,
-3099963860u, 1255084262u,
-690971838u, 3539996781u,
-3696902571u, 3593730713u,
-2363435042u, 54945052u,
-1785765213u, 184911581u,
-1586241476u, 1939595371u,
-2534883189u, 2432427547u,
-2374171993u, 2039128933u,
-2955715987u, 2295501078u,
-2741583197u, 1280920000u,
-686818699u, 1238742497u,
-3843660102u, 82177963u,
-1281043691u, 1121403845u,
-1697846708u, 284852964u,
-278661677u, 2889101923u,
-2127558730u, 713121337u,
-872502474u, 511142139u,
-1261140657u, 1747052377u,
-2108187161u, 927011680u,
-955328267u, 3821994995u,
-2707230761u, 4142246789u,
-4134691985u, 1958963937u,
-2498463509u, 1977988705u,
-1419293714u, 1636932722u,
-2567532373u, 4075249328u,
-240575705u, 1956681213u,
-2598802768u, 2025886508u,
-4104757832u, 3026358429u,
-3242615202u, 4026813725u,
-255108733u, 1845587644u,
-3573008472u, 3615577014u,
-1222733548u, 1205557630u,
-917608574u, 1363253259u,
-1541946015u, 3087190425u,
-1138008081u, 1444019663u,
-109793386u, 341851980u,
-857839960u, 2515339233u,
-156283211u, 1906768669u,
-3886713057u, 1276595523u,
-2809830736u, 460237542u,
-3420452099u, 142985419u,
-205970448u, 4198897105u,
-1950698961u, 2069753399u,
-1142216925u, 1113051162u,
-1033680610u, 4278599955u,
-1106466069u, 356742959u,
-531521052u, 3494863964u,
-225629455u, 3735275001u,
-3662626864u, 1750561299u,
-1012864651u, 2101846429u,
-1074553219u, 668829411u,
-992181339u, 3384018814u,
-3330664522u, 860966321u,
-1885071395u, 4233785523u,
-100741310u, 451656820u,
-2148187612u, 1063001151u,
-360256231u, 107312677u,
-3650357479u, 2390172694u,
-22452685u, 237319043u,
-3600462351u, 1216645846u,
-2088767754u, 164402616u,
-2418980170u, 926137824u,
-94638678u, 1689811113u,
-2751052984u, 1767810825u,
-271289013u, 3896132233u,
-103797041u, 1397772514u,
-3441135892u, 3323383489u,
-2491268371u, 1662561885u,
-1612872497u, 2986430557u,
-2756998822u, 207428029u,
-937973965u, 2791656726u,
-1949717207u, 2260498180u,
-2648427775u, 2360400900u,
-2080496169u, 486358863u,
-1582022990u, 1263709570u,
-1396468647u, 1377764574u,
-363008508u, 1293502429u,
-224580012u, 4252610345u,
-1435134775u, 1099809675u,
-533671980u, 1533438766u,
-1820532305u, 2776960536u,
-3374512975u, 3542220540u,
-822810075u, 3716663290u,
-1157398049u, 3752806924u,
-4081637863u, 337070226u,
-3866585976u, 359270190u,
-2110942730u, 3267551635u,
-644850146u, 1306761320u,
-746972907u, 934259457u,
-2341378668u, 2220373824u,
-1242645122u, 4109252858u,
-1625266099u, 1173698481u,
-383517064u, 896322512u,
-3377483696u, 1788337208u,
-455496839u, 3194373887u,
-1837689083u, 1336556841u,
-1658628529u, 2911512007u,
-3838343487u, 2757664765u,
-1537187340u, 3712582785u,
-367022558u, 3071359622u,
-3926147070u, 35432879u,
-3093195926u, 2561488770u,
-4273132307u, 3898950547u,
-2838251049u, 2103926083u,
-2549435227u, 536047554u,
-1858986613u, 2040551642u,
-1147412575u, 1972369852u,
-4166184983u, 3528794619u,
-4077477194u, 3565689036u,
-808048238u, 3826350461u,
-1359641525u, 1197100813u,
-265993036u, 1864569342u,
-725164342u, 2264788336u,
-1831223342u, 3329594980u,
-923017956u, 490608221u,
-3818634478u, 258154469u,
-1441714797u, 1174785921u,
-3833372385u, 3287246572u,
-1677395563u, 3569218731u,
-868981704u, 2163330264u,
-2649450292u, 500120236u,
-465161780u, 746438382u,
-1145009669u, 2520062970u,
-2810524030u, 1561519055u,
-1479878006u, 3864969305u,
-2686075657u, 4042710240u,
-3224066062u, 2774151984u,
-2226179547u, 1643626042u,
-2328730865u, 3160666939u,
-2107011431u, 96459446u,
-3920328742u, 3336407558u,
-829404209u, 1878067032u,
-1235983679u, 4237425634u,
-466519055u, 3870676863u,
-934312076u, 2952135524u,
-276949224u, 4100839753u,
-424001484u, 1955120893u,
-4015478120u, 1265237690u,
-427484362u, 4246879223u,
-3452969617u, 1724363362u,
-1553513184u, 834830418u,
-1858777639u, 3476334357u,
-4144030366u, 2450047160u,
-2950762705u, 4277111759u,
-358032121u, 2511026735u,
-167923105u, 2059208280u,
-251949572u, 3065234219u,
-1535473864u, 556796152u,
-1513237478u, 3150857516u,
-1103404394u, 198182691u,
-1476438092u, 2913077464u,
-207119516u, 3963810232u,
-2954651680u, 1535115487u,
-3051522276u, 4046477658u,
-917804636u, 864395565u,
-632704095u, 140762681u,
-1802040304u, 990407433u,
-3771506212u, 4106024923u,
-1287729497u, 2198985327u,
-4052924496u, 2926590471u,
-3084557148u, 1472898694u,
-1009870118u, 559702706u,
-4265214507u, 82077489u,
-3067891003u, 3295678907u,
-2402308151u, 1096697687u,
-464407878u, 4190838199u,
-4269578403u, 3060919438u,
-2899950405u, 3046872820u,
-733509243u, 1583801700u,
-40453902u, 3879773881u,
-1993425202u, 2185339100u,
-1877837196u, 3912423882u,
-3293122640u, 4104318469u,
-1679617763u, 3703603898u,
-8759461u, 2540185277u,
-1152198475u, 2038345882u,
-2503579743u, 1446869792u,
-2019419351u, 4051584612u,
-3178289407u, 3992503830u,
-2879018745u, 2719373510u,
-700836153u, 1675560450u,
-4121245793u, 2064715719u,
-343595772u, 1996164093u,
-3130433948u, 405251683u,
-2804817126u, 1607133689u,
-463852893u, 2864244470u,
-2224044848u, 4071581802u,
-2537107938u, 2246347953u,
-3207234525u, 2028708916u,
-2272418128u, 803575837u,
-38655481u, 2170452091u,
-3272166407u, 557660441u,
-4019147902u, 3841480082u,
-298459606u, 2600943364u,
-2440657523u, 255451671u,
-3424361375u, 779434428u,
-3088526123u, 490671625u,
-1322855877u, 3452203069u,
-3057021940u, 2285701422u,
-2014993457u, 2390431709u,
-2002090272u, 1568745354u,
-1783152480u, 823305654u,
-4053862835u, 2200236540u,
-3009412313u, 3184047862u,
-3032187389u, 4159715581u,
-2966902888u, 252986948u,
-1849329144u, 3160134214u,
-3420960112u, 3198900547u,
-749160960u, 379139040u,
-1208883495u, 1566527339u,
-3006227299u, 4194096960u,
-556075248u, 497404038u,
-1717327230u, 1496132623u,
-1775955687u, 1719108984u,
-1014328900u, 4189966956u,
-2108574735u, 2584236470u,
-684087286u, 531310503u,
-4264509527u, 773405691u,
-3088905079u, 3456882941u,
-3105682208u, 3382290593u,
-2289363624u, 3296306400u,
-4168438718u, 467441309u,
-777173623u, 3241407531u,
-1183994815u, 1132983260u,
-1610606159u, 2540270567u,
-2649684057u, 1397502982u,
-146657385u, 3318434267u,
-2109315753u, 3348545480u,
-3193669211u, 811750340u,
-1073256162u, 3571673088u,
-546596661u, 1017047954u,
-3403136990u, 2540585554u,
-1477047647u, 4145867423u,
-2826408201u, 3531646869u,
-784952939u, 943914610u,
-2717443875u, 3657384638u,
-1806867885u, 1903578924u,
-3985088434u, 1911188923u,
-1764002686u, 3672748083u,
-1832925325u, 241574049u,
-519948041u, 3181425568u,
-2939747257u, 1634174593u,
-3429894862u, 3529565564u,
-1089679033u, 240953857u,
-2025369941u, 2695166650u,
-517086873u, 2964595704u,
-3017658263u, 3828377737u,
-2144895011u, 994799311u,
-1184683823u, 4260564140u,
-308018483u, 4262383425u,
-1374752558u, 3431057723u,
-1572637805u, 383233885u,
-3188015819u, 4051263539u,
-233319221u, 3794788167u,
-2017406667u, 919677938u,
-4074952232u, 1683612329u,
-4213676186u, 327142514u,
-3032591014u, 4204155962u,
-206775997u, 2283918569u,
-2395147154u, 3427505379u,
-2211319468u, 4153726847u,
-2217060665u, 350160869u,
-2493667051u, 1648200185u,
-3441709766u, 1387233546u,
-140980u, 1891558063u,
-760080239u, 2088061981u,
-1580964938u, 740563169u,
-422986366u, 330624974u,
-4264507722u, 150928357u,
-2738323042u, 2948665536u,
-918718096u, 376390582u,
-3966098971u, 717653678u,
-3219466255u, 3799363969u,
-3424344721u, 3187805406u,
-375347278u, 3490350144u,
-1992212097u, 2263421398u,
-3855037968u, 1928519266u,
-3866327955u, 1129127000u,
-1782515131u, 2746577402u,
-3059200728u, 2108753646u,
-2738070963u, 1336849395u,
-1705302106u, 768287270u,
-1343511943u, 2247006571u,
-1956142255u, 1780259453u,
-3475618043u, 212490675u,
-622521957u, 917121602u,
-1852992332u, 1267987847u,
-3170016833u, 2549835613u,
-3299763344u, 2864033668u,
-3378768767u, 1236609378u,
-4169365948u, 3738062408u,
-2661022773u, 2006922227u,
-2760592161u, 3828932355u,
-2636387819u, 2616619070u,
-1237256330u, 3449066284u,
-2871755260u, 3729280948u,
-3862686086u, 431292293u,
-3285899651u, 786322314u,
-2531158535u, 724901242u,
-2377363130u, 1415970351u,
-1244759631u, 3263135197u,
-965248856u, 174024139u,
-2297418515u, 2954777083u,
-987586766u, 3206261120u,
-4059515114u, 3903854066u,
-1931934525u, 2287507921u,
-1827135136u, 1781944746u,
-574617451u, 2299034788u,
-2650140034u, 4081586725u,
-2482286699u, 1109175923u,
-458483596u, 618705848u,
-4059852729u, 1813855658u,
-4190721328u, 1129462471u,
-4089998050u, 3575732749u,
-2375584220u, 1037031473u,
-1623777358u, 3389003793u,
-546597541u, 352770237u,
-1383747654u, 3122687303u,
-1646071378u, 1164309901u,
-290870767u, 830691298u,
-929335420u, 3193251135u,
-989577914u, 3626554867u,
-591974737u, 3996958215u,
-3163711272u, 3071568023u,
-1516846461u, 3656006011u,
-2698625268u, 2510865430u,
-340274176u, 1167681812u,
-3698796465u, 3155218919u,
-4102288238u, 1673474350u,
-3069708839u, 2704165015u,
-1237411891u, 1854985978u,
-3646837503u, 3625406022u,
-921552000u, 1712976649u,
-3939149151u, 878608872u,
-3406359248u, 1068844551u,
-1834682077u, 4155949943u,
-2437686324u, 3163786257u,
-2645117577u, 1988168803u,
-747285578u, 1626463554u,
-1235300371u, 1256485167u,
-1914142538u, 4141546431u,
-3838102563u, 582664250u,
-1883344352u, 2083771672u,
-2611657933u, 2139079047u,
-2250573853u, 804336148u,
-3066325351u, 2770847216u,
-4275641370u, 1455750577u,
-3346357270u, 1674051445u,
-601221482u, 3992583643u,
-1402445097u, 3622527604u,
-2509017299u, 2966108111u,
-2557027816u, 900741486u,
-1790771021u, 2912643797u,
-2631381069u, 4014551783u,
-90375300u, 300318232u,
-3269968032u, 2679371729u,
-2664752123u, 3517585534u,
-3253901179u, 542270815u,
-1188641600u, 365479232u,
-2210121140u, 760762191u,
-1273768482u, 1216399252u,
-3484324231u, 4287337666u,
-16322182u, 643179562u,
-325675502u, 3652676161u,
-3120716054u, 3330259752u,
-1011990087u, 2990167340u,
-1097584090u, 3262252593u,
-1829409951u, 3665087267u,
-1214854475u, 2134299399u,
-3704419305u, 411263051u,
-1625446136u, 549838529u,
-4283196353u, 1342880802u,
-3460621305u, 1967599860u,
-4282843369u, 1275671016u,
-2544665755u, 853593042u,
-901109753u, 2682611693u,
-110631633u, 797487791u,
-1472073141u, 850464484u,
-797089608u, 3286110054u,
-350397471u, 2775631060u,
-366448238u, 3842907484u,
-2219863904u, 3623364733u,
-1850985302u, 4009616991u,
-294963924u, 3693536939u,
-3061255808u, 1615375832u,
-1920066675u, 4113028420u,
-4032223840u, 2318423400u,
-2701956286u, 4145497671u,
-3991532344u, 2536338351u,
-1679099863u, 1728968857u,
-449740816u, 2686506989u,
-685242457u, 97590863u,
-3258354115u, 1502282913u,
-1235084019u, 2151665147u,
-528459289u, 231097464u,
-2477280726u, 3651607391u,
-2091754612u, 1178454681u,
-980597335u, 1604483865u,
-1842333726u, 4146839064u,
-3213794286u, 2601416506u,
-754220096u, 3571436033u,
-488595746u, 1448097974u,
-4004834921u, 238887261u,
-3320337489u, 1416989070u,
-2928916831u, 4093725287u,
-186020771u, 2367569534u,
-3046087671u, 4090084518u,
-3548184546u, 679517009u,
-1962659444u, 3539886328u,
-4192003933u, 1678423485u,
-3827951761u, 3086277222u,
-2144472852u, 1390394371u,
-2976322029u, 1574517163u,
-3553313841u, 119173722u,
-1702434637u, 1766260771u,
-3629581771u, 1407497759u,
-895654784u, 751439914u,
-4008409498u, 215917713u,
-1482103833u, 695551833u,
-1288382231u, 2656990891u,
-2581779077u, 1570750352u,
-3710689053u, 1741390464u,
-2666411616u, 3533987737u,
-4289478316u, 3576119563u,
-4118694920u, 108199666u,
-3869794273u, 963183826u,
-2081410737u, 3796810515u,
-791123882u, 2525792704u,
-1036883117u, 136547246u,
-875691100u, 2592925324u,
-614302599u, 3013176417u,
-2689342539u, 427154472u,
-532957601u, 1228758574u,
-1898117151u, 1181643858u,
-1908591042u, 1464255968u,
-446980910u, 2984611177u,
-58509511u, 1046943619u,
-3508927906u, 2001585786u,
-2544767379u, 1525438381u,
-552181222u, 1959725830u,
-879448844u, 1348536411u,
-4242243590u, 2861338018u,
-1082052441u, 1034351453u,
-601175800u, 764077711u,
-530635011u, 3785343245u,
-2178026726u, 117256687u,
-2378297261u, 457568934u,
-76438221u, 4104954272u,
-956793873u, 3783168634u,
-2485968477u, 2381948487u,
-4226929450u, 3148473363u,
-2518273601u, 3569490233u,
-879369091u, 2180270337u,
-3674375989u, 1387729170u,
-977997984u, 4270646856u,
-568650985u, 951677556u,
-4213877384u, 2721005055u,
-1073364549u, 2563403831u,
-1678669911u, 66786703u,
-2273631661u, 1149351924u,
-3651298990u, 1581883443u,
-246723096u, 1895026827u,
-3810605772u, 3711056516u,
-4058833288u, 2193790614u,
-2080120290u, 3638638708u,
-2915672708u, 2263003308u,
-2361934197u, 4136767460u,
-1976115991u, 3448840877u,
-2019238520u, 225333538u,
-874340815u, 2976159827u,
-1555273378u, 3797521928u,
-1942347150u, 3262952567u,
-435997738u, 340403353u,
-2817830907u, 2078619498u,
-749534111u, 1178073973u,
-894654712u, 3361226032u,
-841092198u, 3288261538u,
-1696412169u, 1496966875u,
-697501571u, 1059158875u,
-3739946319u, 2481012988u,
-568983526u, 114945840u,
-1559249010u, 2218244008u,
-2841706923u, 1632780103u,
-4020169654u, 2087949619u,
-2438736103u, 24032648u,
-833416317u, 3787017905u,
-2373238993u, 2575395164u,
-3434544481u, 3228481067u,
-2542976862u, 2971726178u,
-2880371864u, 3642087909u,
-2407477975u, 2239080836u,
-1043714217u, 3894199764u,
-2235879182u, 203853421u,
-2933669448u, 2504940536u,
-834683330u, 425935223u,
-3560796393u, 3565833278u,
-1668000829u, 3683399154u,
-3414330886u, 1748785729u,
-1023171602u, 580966986u,
-2531038985u, 3227325488u,
-2657385925u, 2124704694u,
-233442446u, 1107045577u,
-3407293834u, 552770757u,
-3899097693u, 1067532701u,
-115667924u, 1406028344u,
-1707768231u, 3724015962u,
-2419657149u, 18613994u,
-2532882091u, 3476683808u,
-1560838678u, 811220224u,
-895961699u, 3762914298u,
-1328752423u, 1844996900u,
-1420427894u, 1848067707u,
-1210281744u, 904215228u,
-4055325594u, 1118521573u,
-2496554183u, 2579259919u,
-3996647489u, 3657647605u,
-325254059u, 3136157065u,
-3951522674u, 4052925250u,
-3341068436u, 2287683323u,
-1313073005u, 126005630u,
-2505120084u, 1194725057u,
-853746559u, 3555092974u,
-2689238752u, 49515858u,
-1244776042u, 1069300695u,
-61073168u, 1010661841u,
-1269521335u, 1902040126u,
-990632502u, 2378708922u,
-3858321250u, 1400735275u,
-2974699176u, 2771676666u,
-170995186u, 2877798589u,
-545726212u, 2225229957u,
-1086473152u, 3454177594u,
-3859483262u, 1499729584u,
-2088002891u, 2883475137u,
-3222194252u, 4144472319u,
-2212229854u, 4146740722u,
-567988835u, 1051332394u,
-3932046135u, 542648229u,
-3017852446u, 1277887997u,
-162888005u, 1669710469u,
-1492500905u, 553041029u,
-1434876932u, 533989516u,
-3817492747u, 584127807u,
-4147115982u, 2993670925u,
-4020312558u, 710021255u,
-3509733475u, 3587959456u,
-2088550465u, 1745399498u,
-2952242967u, 1259815443u,
-869648362u, 1404723176u,
-3947542735u, 1334333531u,
-3873471582u, 229399758u,
-59634866u, 3239516985u,
-3844250972u, 1275954779u,
-492891666u, 1029533080u,
-1552951157u, 367320647u,
-699480890u, 3684418197u,
-3707014310u, 471105777u,
-1824587258u, 4030809053u,
-3489914436u, 484559105u,
-1235750398u, 1428453396u,
-4230459084u, 4255931645u,
-1848597055u, 4271715616u,
-331780381u, 482425775u,
-2435323270u, 3171911678u,
-3507210587u, 928543347u,
-4197807526u, 3680046204u,
-2766042024u, 2159512867u,
-179373257u, 313902234u,
-4024837592u, 294795361u,
-1622282562u, 647086234u,
-2825039429u, 577214736u,
-4043412446u, 2426981244u,
-1277736097u, 1130129573u,
-2601395338u, 995791646u,
-36668922u, 3344746679u,
-1521532225u, 1645086060u,
-2622763015u, 4122335794u,
-2936887705u, 494465807u,
-2580840343u, 1064648931u,
-1247887787u, 2752145076u,
-1277612417u, 1249660507u,
-2288678613u, 3312498873u,
-2459273912u, 4238535494u,
-3117488020u, 2571979978u,
-2680188909u, 1471227427u,
-1616494033u, 633688562u,
-2268653416u, 3268237290u,
-3021962815u, 1959779970u,
-3321382074u, 766642813u,
-204429780u, 1323319858u,
-3676032891u, 1380896111u,
-4030639049u, 3647601207u,
-1830028502u, 2830263774u,
-1375962216u, 1733961041u,
-939765180u, 521947915u,
-3903267364u, 497472767u,
-1619700946u, 189164145u,
-3115593885u, 486382294u,
-1262445920u, 4062496162u,
-2464795849u, 3770038872u,
-4032121374u, 3235740744u,
-3757765258u, 1777199847u,
-2167243108u, 1912506671u,
-4180515317u, 2276864677u,
-536034089u, 2384915026u,
-162938278u, 1588060152u,
-4018349945u, 2504457929u,
-841450426u, 2790120722u,
-2719983588u, 1471020554u,
-1390856732u, 3623212998u,
-2506944218u, 1035080801u,
-348812127u, 3026631806u,
-746483541u, 2342164722u,
-122104390u, 4074122771u,
-3986865419u, 1674890530u,
-3693306023u, 3011542850u,
-1294951725u, 899303190u,
-3577146915u, 3549160092u,
-1241677652u, 4290680005u,
-3193053279u, 2029187390u,
-3298063095u, 3943068002u,
-3946220635u, 2273781461u,
-889053698u, 1376304022u,
-1486839612u, 2127663659u,
-344127443u, 1646681121u,
-2780117810u, 2142045764u,
-2694572773u, 447810651u,
-2185527146u, 2366308558u,
-290335413u, 584901173u,
-2012370276u, 970504950u,
-3258236042u, 2008155560u,
-3945579565u, 614796295u,
-24452072u, 2695940969u,
-3983727134u, 3444688454u,
-1327044473u, 3545633451u,
-1875293322u, 1739318893u,
-1707527799u, 2683090634u,
-2848082386u, 2814622471u,
-4111401777u, 2774816580u,
-3849839194u, 437560100u,
-2238350150u, 2462124836u,
-665017710u, 512012738u,
-2945294779u, 3305170944u,
-819477765u, 59419271u,
-155125658u, 665292744u,
-444722813u, 3580039116u,
-2355675635u, 663735032u,
-3247800169u, 1579404983u,
-1985115003u, 3397891494u,
-358696453u, 1474896279u,
-516388613u, 710590371u,
-3490497111u, 2514565805u,
-2386143445u, 477509654u,
-412854590u, 3624609754u,
-3214388668u, 3516075816u,
-2731288520u, 1369482895u,
-4033204378u, 1314000850u,
-829769325u, 1935166880u,
-1608191643u, 2607067237u,
-423820371u, 3257747610u,
-1355298041u, 3776931214u,
-4105054901u, 2107080812u,
-1911521879u, 3183054185u,
-3910177801u, 675129307u,
-1209358971u, 4205727791u,
-1435726287u, 3333261712u,
-1400982708u, 1154611403u,
-1663501483u, 2837596667u,
-3164734053u, 2759854023u,
-4012043629u, 1963228038u,
-3981675284u, 2677557877u,
-520119591u, 505138315u,
-897271356u, 1803966773u,
-1016663294u, 616691903u,
-2254742522u, 4032705384u,
-2468470796u, 798395739u,
-3025169002u, 3570037122u,
-1461093710u, 3473799845u,
-3702624858u, 476400898u,
-1043039728u, 2304070437u,
-181576948u, 602972493u,
-3996616030u, 3289878097u,
-2068516226u, 3922247304u,
-1299968266u, 2520311409u,
-1968824721u, 3214794876u,
-1581813122u, 2668800905u,
-3297613974u, 748160407u,
-1145536484u, 1326769504u,
-2973323521u, 3775262814u,
-3218653169u, 902775872u,
-3498603433u, 1372805534u,
-704686363u, 3626542352u,
-2271580579u, 1213925114u,
-46329775u, 3009384989u,
-1330254048u, 1194824134u,
-514204310u, 3781981134u,
-442526164u, 2835608783u,
-3460471867u, 510634034u,
-546406434u, 2716786748u,
-2840500021u, 1669490957u,
-2536189149u, 3251421224u,
-1358736072u, 1089334066u,
-3260749330u, 250756920u,
-2974806681u, 1513718866u,
-82635635u, 4041016629u,
-3391765744u, 2495807367u,
-3962674316u, 2822889695u,
-753413337u, 2008251381u,
-3123390177u, 106212622u,
-490570565u, 1684884205u,
-793892547u, 1927268995u,
-2344148164u, 2251978818u,
-437424236u, 2774023200u,
-2674940754u, 3788056262u,
-2597882666u, 3678660147u,
-3797434193u, 3838215866u,
-279687080u, 2656772270u,
-2190204787u, 1997584981u,
-3384401882u, 3160208845u,
-3629379425u, 2668998785u,
-1050036757u, 2954162084u,
-917091826u, 1744374041u,
-1454282570u, 845687881u,
-2997173625u, 776018378u,
-1137560602u, 1938378389u,
-1748082354u, 2066910012u,
-2677675207u, 918315064u,
-};
-
-// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
-bool Test(int offset, int len = 0) {
-#undef Check
-#undef IsAlive
-
-#define Check(x) do { \
- const uint32_t actual = (x), e = expected[index++]; \
- bool ok = actual == e; \
- if (!ok) { \
- cerr << "expected " << hex << e << " but got " << actual << endl; \
- ++errors; \
- } \
- assert(ok); \
-} while (0)
-
-#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
-
- // After the following line is where the uses of "Check" and such will go.
- static int index = 0;
+ }
+ }
+}
+
+int NoteErrors() {
+#define NUM_SELF_TESTS 9
+ if (++completed_self_tests == NUM_SELF_TESTS)
+ std::exit(errors > 0);
+ return errors;
+}
+
+template <typename T> inline bool IsNonZero(T x) {
+ return x != 0;
+}
+
+template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
+ return x != Uint128(0, 0);
+}
+
+#endif // FARMHASH_SELF_TEST_GUARD
+
+namespace farmhashteTest {
+
+uint32_t CreateSeed(int offset, int salt) {
+ uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h += static_cast<uint32_t>(offset & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ return h;
+}
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+#define SEED CreateSeed(offset, -1)
+#define SEED0 CreateSeed(offset, 0)
+#define SEED1 CreateSeed(offset, 1)
+
+#undef TESTING
+#define TESTING 1
+#if TESTING
+uint32_t expected[] = {
+1140953930u, 861465670u,
+3277735313u, 2681724312u,
+2598464059u, 797982799u,
+890626835u, 800175912u,
+2603993599u, 921001710u,
+1410420968u, 2134990486u,
+3283896453u, 1867689945u,
+2914424215u, 2244477846u,
+255297188u, 2992121793u,
+1110588164u, 4186314283u,
+161451183u, 3943596029u,
+4019337850u, 452431531u,
+283198166u, 2741341286u,
+3379021470u, 2557197665u,
+299850021u, 2532580744u,
+452473466u, 1706958772u,
+1298374911u, 3099673830u,
+2199864459u, 3696623795u,
+236935126u, 2976578695u,
+4055299123u, 3281581178u,
+1053458494u, 1882212500u,
+2305012065u, 2169731866u,
+3456121707u, 275903667u,
+458884671u, 3033004529u,
+3058973506u, 2379411653u,
+1898235244u, 1402319660u,
+2700149065u, 2699376854u,
+147814787u, 720739346u,
+2433714046u, 4222949502u,
+4220361840u, 1712034059u,
+3425469811u, 3690733394u,
+4148372108u, 1330324210u,
+594028478u, 2921867846u,
+1635026870u, 192883107u,
+780716741u, 1728752234u,
+3280331829u, 326029180u,
+3969463346u, 1436364519u,
+393215742u, 3349570000u,
+3824583307u, 1612122221u,
+2859809759u, 3808705738u,
+1379537552u, 1646032583u,
+2233466664u, 1432476832u,
+4023053163u, 2650381482u,
+2052294713u, 3552092450u,
+1628777059u, 1499109081u,
+3476440786u, 3829307897u,
+2960536756u, 1554038301u,
+1145519619u, 3190844552u,
+2902102606u, 3600725550u,
+237495366u, 540224401u,
+65721842u, 489963606u,
+1448662590u, 397635823u,
+1596489240u, 1562872448u,
+1790705123u, 2128624475u,
+180854224u, 2604346966u,
+1435705557u, 1262831810u,
+155445229u, 1672724608u,
+1669465176u, 1341975128u,
+663607706u, 2077310004u,
+3610042449u, 1911523866u,
+1043692997u, 1454396064u,
+2563776023u, 294527927u,
+1099072299u, 1389770549u,
+703505868u, 678706990u,
+2952353448u, 2026137563u,
+3603803785u, 629449419u,
+1933894405u, 3043213226u,
+226132789u, 2489287368u,
+1552847036u, 645684964u,
+3828089804u, 3632594520u,
+187883449u, 230403464u,
+3151491850u, 3272648435u,
+3729087873u, 1303930448u,
+2002861219u, 165370827u,
+916494250u, 1230085527u,
+3103338579u, 3064290191u,
+3807265751u, 3628174014u,
+231181488u, 851743255u,
+2295806711u, 1781190011u,
+2988893883u, 1554380634u,
+1142264800u, 3667013118u,
+1968445277u, 315203929u,
+2638023604u, 2290487377u,
+732137533u, 1909203251u,
+440398219u, 1891630171u,
+1380301172u, 1498556724u,
+4072067757u, 4165088768u,
+4204318635u, 441430649u,
+3931792696u, 197618179u,
+956300927u, 914413116u,
+3010839769u, 2837339569u,
+2148126371u, 1913303225u,
+3074915312u, 3117299654u,
+4139181436u, 2993479124u,
+3178848746u, 1357272220u,
+1438494951u, 507436733u,
+667183474u, 2084369203u,
+3854939912u, 1413396341u,
+126024219u, 146044391u,
+1016656857u, 3022024459u,
+3254014218u, 429095991u,
+990500595u, 3056862311u,
+985653208u, 1718653828u,
+623071693u, 366414107u,
+1771289760u, 2293458109u,
+3047342438u, 2991127487u,
+3120876698u, 1684583131u,
+3638043310u, 1170404994u,
+863214540u, 1087193030u,
+199124911u, 520792961u,
+3169775996u, 1577421232u,
+3331828431u, 1013201099u,
+1716848157u, 4033596884u,
+1770708857u, 4229339322u,
+1146169032u, 1434258493u,
+3824360466u, 3242407770u,
+1926419493u, 2649785113u,
+872586426u, 762243036u,
+2736953692u, 816692935u,
+1571283333u, 3555213933u,
+2266795890u, 3781899767u,
+4290630595u, 517646945u,
+3006163611u, 2180594090u,
+959214578u, 558910384u,
+1283799121u, 3047062993u,
+3830962609u, 2391606125u,
+3544509313u, 622325861u,
+834785312u, 382936554u,
+1421463872u, 788479970u,
+1825135056u, 2725923798u,
+580988377u, 2826990641u,
+247825043u, 3167748333u,
+812546227u, 2506885666u,
+2584372201u, 1758123094u,
+1891789696u, 389974094u,
+345313518u, 2022370576u,
+3886113119u, 3338548567u,
+1083486947u, 2583576230u,
+1776047957u, 1771384107u,
+3604937815u, 3198590202u,
+3027522813u, 4155628142u,
+4232136669u, 427759438u,
+4244322689u, 542201663u,
+1549591985u, 2856634168u,
+556609672u, 45845311u,
+1175961330u, 3948351189u,
+4165739882u, 4194218315u,
+1634635545u, 4151937410u,
+713127376u, 1467786451u,
+1327394015u, 2743592929u,
+2638154051u, 810082938u,
+3077742128u, 1062268187u,
+4084325664u, 3810665822u,
+3735739145u, 2794294783u,
+2335576331u, 2560479831u,
+690240711u, 997658837u,
+2442302747u, 3948961926u,
+3958366652u, 3067277639u,
+2059157774u, 1211737169u,
+1516711748u, 2339636583u,
+4188504038u, 59581167u,
+2767897792u, 1389679610u,
+2658147000u, 2643979752u,
+3758739543u, 4189944477u,
+1454470782u, 100876854u,
+2995362413u, 118817200u,
+3252925478u, 2062343506u,
+2804483644u, 3088828656u,
+1231633714u, 4168280671u,
+2931588131u, 3284356565u,
+1255909792u, 3130054947u,
+4173605289u, 1407328702u,
+1677744031u, 3532596884u,
+3162657845u, 3887208531u,
+2256541290u, 3459463480u,
+3740979556u, 259034107u,
+392987633u, 3233195759u,
+3606709555u, 3424793077u,
+315836068u, 3200749877u,
+4065431359u, 760633989u,
+2982018998u, 1811050648u,
+234531934u, 1115203611u,
+3897494162u, 1516407838u,
+1603559457u, 323296368u,
+2632963283u, 1778459926u,
+2879836826u, 2146672889u,
+3486330348u, 492621815u,
+1231665285u, 2457048126u,
+3438440082u, 2217471853u,
+3355404249u, 3275550588u,
+1052645068u, 862072556u,
+4110617119u, 3745267835u,
+2657392572u, 4279236653u,
+1688445808u, 701920051u,
+956734128u, 581695350u,
+3157862788u, 2585726058u,
+1192588249u, 1410111809u,
+1651193125u, 3326135446u,
+1073280453u, 97376972u,
+2513844237u, 2187968410u,
+3976859649u, 4267859263u,
+3429034542u, 564493077u,
+3000537321u, 479241367u,
+3845637831u, 2868987960u,
+51544337u, 1029173765u,
+393624922u, 704325635u,
+2357610553u, 1418509533u,
+2007814586u, 3866658271u,
+3082385053u, 735688735u,
+916110004u, 3283299459u,
+1051684175u, 1083796807u,
+4074716319u, 813690332u,
+144264390u, 1439630796u,
+1508556987u, 675582689u,
+3748881891u, 3195309868u,
+362884708u, 1616408198u,
+43233176u, 837301135u,
+881504822u, 3254795114u,
+1385506591u, 2799925823u,
+1469874582u, 3464841997u,
+497175391u, 3929484338u,
+3975771289u, 1798536177u,
+2926265846u, 1374242438u,
+3675707838u, 4205965408u,
+3153165629u, 1499475160u,
+187287713u, 548490821u,
+3255259608u, 4247675634u,
+1940181471u, 3779953975u,
+687167150u, 2319566715u,
+1742785722u, 785893184u,
+2296977392u, 2778575413u,
+1794720651u, 48131484u,
+4084891412u, 1160134629u,
+3737623280u, 823113169u,
+3423207646u, 3803213486u,
+710625654u, 4116162021u,
+3693420287u, 4167766971u,
+1666602807u, 295320990u,
+3513255468u, 2487440590u,
+234080704u, 4004655503u,
+2971762528u, 1479656873u,
+4090178629u, 4044418876u,
+391947536u, 1462554406u,
+3909295855u, 1239580330u,
+1515601363u, 2011102035u,
+1442068334u, 4265993528u,
+1191921695u, 2291355695u,
+4257172787u, 576405853u,
+314332944u, 4038839101u,
+55559918u, 2378985842u,
+711098718u, 2425317635u,
+1644327317u, 1401013391u,
+4193760037u, 2958260436u,
+3167371443u, 3062418115u,
+3800755475u, 3167030094u,
+3489648204u, 1405430357u,
+526177822u, 2602636307u,
+915406019u, 4264167741u,
+1484090483u, 3070944737u,
+254529415u, 4017058800u,
+1702710265u, 1029665228u,
+2000382906u, 3185573940u,
+1381258384u, 4036354071u,
+2900841028u, 2670703363u,
+2921748807u, 2899069938u,
+4130543625u, 688472265u,
+4186808827u, 1054670286u,
+1132985391u, 2840525968u,
+4175776103u, 338058159u,
+1735964501u, 1539305024u,
+3497121710u, 1568260669u,
+2227290760u, 146827036u,
+3977176001u, 4060134777u,
+857488494u, 250055052u,
+4284109679u, 2502815838u,
+2592281721u, 1603444633u,
+1390562014u, 1556658131u,
+616327404u, 2448966429u,
+3051191726u, 3891353218u,
+1213304082u, 762328245u,
+2239052397u, 1082330589u,
+2455957292u, 201837927u,
+405397452u, 3079886794u,
+2583939798u, 2848283092u,
+3750724631u, 883849006u,
+3204198988u, 3341327098u,
+1855234968u, 1982110346u,
+1485529487u, 541496720u,
+4117290321u, 3607433551u,
+2168864636u, 133643215u,
+1055817409u, 3847827123u,
+2960769387u, 4046101649u,
+1176127003u, 4015671361u,
+4243643405u, 2849988118u,
+517111221u, 1796672358u,
+2045051700u, 3452457457u,
+2948254999u, 2102063419u,
+1556410577u, 1536380876u,
+3776661467u, 3281002516u,
+1735616066u, 1539151988u,
+1087795162u, 3332431596u,
+685631442u, 1147951686u,
+95237878u, 2005032160u,
+4012206915u, 4224354805u,
+3204999386u, 2415262714u,
+1433635018u, 116647396u,
+83167836u, 2881562655u,
+2729416454u, 1029284767u,
+881378302u, 2159170082u,
+555057366u, 1169104445u,
+3963877000u, 1919171906u,
+336034862u, 2017579106u,
+4059340529u, 3020819343u,
+865146997u, 2473524405u,
+944743644u, 1694443528u,
+1804513294u, 2904752429u,
+617975720u, 3671562289u,
+260177668u, 505662155u,
+1885941445u, 2504509403u,
+2260041112u, 1019936943u,
+3722741628u, 1511077569u,
+3100701179u, 1379422864u,
+1535670711u, 773792826u,
+1103819072u, 2089123665u,
+1157547425u, 329152940u,
+4142587430u, 484732447u,
+2475035432u, 1120017626u,
+412145504u, 965125959u,
+324924679u, 2809286837u,
+2842141483u, 4029205195u,
+2974306813u, 515627448u,
+3791551981u, 1097806406u,
+3873078673u, 136118734u,
+1872130856u, 3632422367u,
+3574135531u, 4017075736u,
+1699452298u, 1403506686u,
+344414660u, 1189129691u,
+3487080616u, 1516736273u,
+1805475756u, 2562064338u,
+163335594u, 2732147834u,
+4077452507u, 2984955003u,
+4271866024u, 3071338162u,
+2347111903u, 873829983u,
+1948409509u, 1923531348u,
+459509140u, 771592405u,
+1750124750u, 2334938333u,
+213811117u, 2586632018u,
+185232757u, 4032960199u,
+2447383637u, 284777551u,
+1654276320u, 2687561076u,
+3512945009u, 308584855u,
+1861027147u, 4102279334u,
+3203802620u, 1692079268u,
+4250142168u, 2565680167u,
+1507046104u, 841195925u,
+520565830u, 3674576684u,
+38924274u, 3770488806u,
+2414430882u, 3978473838u,
+3703994407u, 69201295u,
+3099963860u, 1255084262u,
+690971838u, 3539996781u,
+3696902571u, 3593730713u,
+2363435042u, 54945052u,
+1785765213u, 184911581u,
+1586241476u, 1939595371u,
+2534883189u, 2432427547u,
+2374171993u, 2039128933u,
+2955715987u, 2295501078u,
+2741583197u, 1280920000u,
+686818699u, 1238742497u,
+3843660102u, 82177963u,
+1281043691u, 1121403845u,
+1697846708u, 284852964u,
+278661677u, 2889101923u,
+2127558730u, 713121337u,
+872502474u, 511142139u,
+1261140657u, 1747052377u,
+2108187161u, 927011680u,
+955328267u, 3821994995u,
+2707230761u, 4142246789u,
+4134691985u, 1958963937u,
+2498463509u, 1977988705u,
+1419293714u, 1636932722u,
+2567532373u, 4075249328u,
+240575705u, 1956681213u,
+2598802768u, 2025886508u,
+4104757832u, 3026358429u,
+3242615202u, 4026813725u,
+255108733u, 1845587644u,
+3573008472u, 3615577014u,
+1222733548u, 1205557630u,
+917608574u, 1363253259u,
+1541946015u, 3087190425u,
+1138008081u, 1444019663u,
+109793386u, 341851980u,
+857839960u, 2515339233u,
+156283211u, 1906768669u,
+3886713057u, 1276595523u,
+2809830736u, 460237542u,
+3420452099u, 142985419u,
+205970448u, 4198897105u,
+1950698961u, 2069753399u,
+1142216925u, 1113051162u,
+1033680610u, 4278599955u,
+1106466069u, 356742959u,
+531521052u, 3494863964u,
+225629455u, 3735275001u,
+3662626864u, 1750561299u,
+1012864651u, 2101846429u,
+1074553219u, 668829411u,
+992181339u, 3384018814u,
+3330664522u, 860966321u,
+1885071395u, 4233785523u,
+100741310u, 451656820u,
+2148187612u, 1063001151u,
+360256231u, 107312677u,
+3650357479u, 2390172694u,
+22452685u, 237319043u,
+3600462351u, 1216645846u,
+2088767754u, 164402616u,
+2418980170u, 926137824u,
+94638678u, 1689811113u,
+2751052984u, 1767810825u,
+271289013u, 3896132233u,
+103797041u, 1397772514u,
+3441135892u, 3323383489u,
+2491268371u, 1662561885u,
+1612872497u, 2986430557u,
+2756998822u, 207428029u,
+937973965u, 2791656726u,
+1949717207u, 2260498180u,
+2648427775u, 2360400900u,
+2080496169u, 486358863u,
+1582022990u, 1263709570u,
+1396468647u, 1377764574u,
+363008508u, 1293502429u,
+224580012u, 4252610345u,
+1435134775u, 1099809675u,
+533671980u, 1533438766u,
+1820532305u, 2776960536u,
+3374512975u, 3542220540u,
+822810075u, 3716663290u,
+1157398049u, 3752806924u,
+4081637863u, 337070226u,
+3866585976u, 359270190u,
+2110942730u, 3267551635u,
+644850146u, 1306761320u,
+746972907u, 934259457u,
+2341378668u, 2220373824u,
+1242645122u, 4109252858u,
+1625266099u, 1173698481u,
+383517064u, 896322512u,
+3377483696u, 1788337208u,
+455496839u, 3194373887u,
+1837689083u, 1336556841u,
+1658628529u, 2911512007u,
+3838343487u, 2757664765u,
+1537187340u, 3712582785u,
+367022558u, 3071359622u,
+3926147070u, 35432879u,
+3093195926u, 2561488770u,
+4273132307u, 3898950547u,
+2838251049u, 2103926083u,
+2549435227u, 536047554u,
+1858986613u, 2040551642u,
+1147412575u, 1972369852u,
+4166184983u, 3528794619u,
+4077477194u, 3565689036u,
+808048238u, 3826350461u,
+1359641525u, 1197100813u,
+265993036u, 1864569342u,
+725164342u, 2264788336u,
+1831223342u, 3329594980u,
+923017956u, 490608221u,
+3818634478u, 258154469u,
+1441714797u, 1174785921u,
+3833372385u, 3287246572u,
+1677395563u, 3569218731u,
+868981704u, 2163330264u,
+2649450292u, 500120236u,
+465161780u, 746438382u,
+1145009669u, 2520062970u,
+2810524030u, 1561519055u,
+1479878006u, 3864969305u,
+2686075657u, 4042710240u,
+3224066062u, 2774151984u,
+2226179547u, 1643626042u,
+2328730865u, 3160666939u,
+2107011431u, 96459446u,
+3920328742u, 3336407558u,
+829404209u, 1878067032u,
+1235983679u, 4237425634u,
+466519055u, 3870676863u,
+934312076u, 2952135524u,
+276949224u, 4100839753u,
+424001484u, 1955120893u,
+4015478120u, 1265237690u,
+427484362u, 4246879223u,
+3452969617u, 1724363362u,
+1553513184u, 834830418u,
+1858777639u, 3476334357u,
+4144030366u, 2450047160u,
+2950762705u, 4277111759u,
+358032121u, 2511026735u,
+167923105u, 2059208280u,
+251949572u, 3065234219u,
+1535473864u, 556796152u,
+1513237478u, 3150857516u,
+1103404394u, 198182691u,
+1476438092u, 2913077464u,
+207119516u, 3963810232u,
+2954651680u, 1535115487u,
+3051522276u, 4046477658u,
+917804636u, 864395565u,
+632704095u, 140762681u,
+1802040304u, 990407433u,
+3771506212u, 4106024923u,
+1287729497u, 2198985327u,
+4052924496u, 2926590471u,
+3084557148u, 1472898694u,
+1009870118u, 559702706u,
+4265214507u, 82077489u,
+3067891003u, 3295678907u,
+2402308151u, 1096697687u,
+464407878u, 4190838199u,
+4269578403u, 3060919438u,
+2899950405u, 3046872820u,
+733509243u, 1583801700u,
+40453902u, 3879773881u,
+1993425202u, 2185339100u,
+1877837196u, 3912423882u,
+3293122640u, 4104318469u,
+1679617763u, 3703603898u,
+8759461u, 2540185277u,
+1152198475u, 2038345882u,
+2503579743u, 1446869792u,
+2019419351u, 4051584612u,
+3178289407u, 3992503830u,
+2879018745u, 2719373510u,
+700836153u, 1675560450u,
+4121245793u, 2064715719u,
+343595772u, 1996164093u,
+3130433948u, 405251683u,
+2804817126u, 1607133689u,
+463852893u, 2864244470u,
+2224044848u, 4071581802u,
+2537107938u, 2246347953u,
+3207234525u, 2028708916u,
+2272418128u, 803575837u,
+38655481u, 2170452091u,
+3272166407u, 557660441u,
+4019147902u, 3841480082u,
+298459606u, 2600943364u,
+2440657523u, 255451671u,
+3424361375u, 779434428u,
+3088526123u, 490671625u,
+1322855877u, 3452203069u,
+3057021940u, 2285701422u,
+2014993457u, 2390431709u,
+2002090272u, 1568745354u,
+1783152480u, 823305654u,
+4053862835u, 2200236540u,
+3009412313u, 3184047862u,
+3032187389u, 4159715581u,
+2966902888u, 252986948u,
+1849329144u, 3160134214u,
+3420960112u, 3198900547u,
+749160960u, 379139040u,
+1208883495u, 1566527339u,
+3006227299u, 4194096960u,
+556075248u, 497404038u,
+1717327230u, 1496132623u,
+1775955687u, 1719108984u,
+1014328900u, 4189966956u,
+2108574735u, 2584236470u,
+684087286u, 531310503u,
+4264509527u, 773405691u,
+3088905079u, 3456882941u,
+3105682208u, 3382290593u,
+2289363624u, 3296306400u,
+4168438718u, 467441309u,
+777173623u, 3241407531u,
+1183994815u, 1132983260u,
+1610606159u, 2540270567u,
+2649684057u, 1397502982u,
+146657385u, 3318434267u,
+2109315753u, 3348545480u,
+3193669211u, 811750340u,
+1073256162u, 3571673088u,
+546596661u, 1017047954u,
+3403136990u, 2540585554u,
+1477047647u, 4145867423u,
+2826408201u, 3531646869u,
+784952939u, 943914610u,
+2717443875u, 3657384638u,
+1806867885u, 1903578924u,
+3985088434u, 1911188923u,
+1764002686u, 3672748083u,
+1832925325u, 241574049u,
+519948041u, 3181425568u,
+2939747257u, 1634174593u,
+3429894862u, 3529565564u,
+1089679033u, 240953857u,
+2025369941u, 2695166650u,
+517086873u, 2964595704u,
+3017658263u, 3828377737u,
+2144895011u, 994799311u,
+1184683823u, 4260564140u,
+308018483u, 4262383425u,
+1374752558u, 3431057723u,
+1572637805u, 383233885u,
+3188015819u, 4051263539u,
+233319221u, 3794788167u,
+2017406667u, 919677938u,
+4074952232u, 1683612329u,
+4213676186u, 327142514u,
+3032591014u, 4204155962u,
+206775997u, 2283918569u,
+2395147154u, 3427505379u,
+2211319468u, 4153726847u,
+2217060665u, 350160869u,
+2493667051u, 1648200185u,
+3441709766u, 1387233546u,
+140980u, 1891558063u,
+760080239u, 2088061981u,
+1580964938u, 740563169u,
+422986366u, 330624974u,
+4264507722u, 150928357u,
+2738323042u, 2948665536u,
+918718096u, 376390582u,
+3966098971u, 717653678u,
+3219466255u, 3799363969u,
+3424344721u, 3187805406u,
+375347278u, 3490350144u,
+1992212097u, 2263421398u,
+3855037968u, 1928519266u,
+3866327955u, 1129127000u,
+1782515131u, 2746577402u,
+3059200728u, 2108753646u,
+2738070963u, 1336849395u,
+1705302106u, 768287270u,
+1343511943u, 2247006571u,
+1956142255u, 1780259453u,
+3475618043u, 212490675u,
+622521957u, 917121602u,
+1852992332u, 1267987847u,
+3170016833u, 2549835613u,
+3299763344u, 2864033668u,
+3378768767u, 1236609378u,
+4169365948u, 3738062408u,
+2661022773u, 2006922227u,
+2760592161u, 3828932355u,
+2636387819u, 2616619070u,
+1237256330u, 3449066284u,
+2871755260u, 3729280948u,
+3862686086u, 431292293u,
+3285899651u, 786322314u,
+2531158535u, 724901242u,
+2377363130u, 1415970351u,
+1244759631u, 3263135197u,
+965248856u, 174024139u,
+2297418515u, 2954777083u,
+987586766u, 3206261120u,
+4059515114u, 3903854066u,
+1931934525u, 2287507921u,
+1827135136u, 1781944746u,
+574617451u, 2299034788u,
+2650140034u, 4081586725u,
+2482286699u, 1109175923u,
+458483596u, 618705848u,
+4059852729u, 1813855658u,
+4190721328u, 1129462471u,
+4089998050u, 3575732749u,
+2375584220u, 1037031473u,
+1623777358u, 3389003793u,
+546597541u, 352770237u,
+1383747654u, 3122687303u,
+1646071378u, 1164309901u,
+290870767u, 830691298u,
+929335420u, 3193251135u,
+989577914u, 3626554867u,
+591974737u, 3996958215u,
+3163711272u, 3071568023u,
+1516846461u, 3656006011u,
+2698625268u, 2510865430u,
+340274176u, 1167681812u,
+3698796465u, 3155218919u,
+4102288238u, 1673474350u,
+3069708839u, 2704165015u,
+1237411891u, 1854985978u,
+3646837503u, 3625406022u,
+921552000u, 1712976649u,
+3939149151u, 878608872u,
+3406359248u, 1068844551u,
+1834682077u, 4155949943u,
+2437686324u, 3163786257u,
+2645117577u, 1988168803u,
+747285578u, 1626463554u,
+1235300371u, 1256485167u,
+1914142538u, 4141546431u,
+3838102563u, 582664250u,
+1883344352u, 2083771672u,
+2611657933u, 2139079047u,
+2250573853u, 804336148u,
+3066325351u, 2770847216u,
+4275641370u, 1455750577u,
+3346357270u, 1674051445u,
+601221482u, 3992583643u,
+1402445097u, 3622527604u,
+2509017299u, 2966108111u,
+2557027816u, 900741486u,
+1790771021u, 2912643797u,
+2631381069u, 4014551783u,
+90375300u, 300318232u,
+3269968032u, 2679371729u,
+2664752123u, 3517585534u,
+3253901179u, 542270815u,
+1188641600u, 365479232u,
+2210121140u, 760762191u,
+1273768482u, 1216399252u,
+3484324231u, 4287337666u,
+16322182u, 643179562u,
+325675502u, 3652676161u,
+3120716054u, 3330259752u,
+1011990087u, 2990167340u,
+1097584090u, 3262252593u,
+1829409951u, 3665087267u,
+1214854475u, 2134299399u,
+3704419305u, 411263051u,
+1625446136u, 549838529u,
+4283196353u, 1342880802u,
+3460621305u, 1967599860u,
+4282843369u, 1275671016u,
+2544665755u, 853593042u,
+901109753u, 2682611693u,
+110631633u, 797487791u,
+1472073141u, 850464484u,
+797089608u, 3286110054u,
+350397471u, 2775631060u,
+366448238u, 3842907484u,
+2219863904u, 3623364733u,
+1850985302u, 4009616991u,
+294963924u, 3693536939u,
+3061255808u, 1615375832u,
+1920066675u, 4113028420u,
+4032223840u, 2318423400u,
+2701956286u, 4145497671u,
+3991532344u, 2536338351u,
+1679099863u, 1728968857u,
+449740816u, 2686506989u,
+685242457u, 97590863u,
+3258354115u, 1502282913u,
+1235084019u, 2151665147u,
+528459289u, 231097464u,
+2477280726u, 3651607391u,
+2091754612u, 1178454681u,
+980597335u, 1604483865u,
+1842333726u, 4146839064u,
+3213794286u, 2601416506u,
+754220096u, 3571436033u,
+488595746u, 1448097974u,
+4004834921u, 238887261u,
+3320337489u, 1416989070u,
+2928916831u, 4093725287u,
+186020771u, 2367569534u,
+3046087671u, 4090084518u,
+3548184546u, 679517009u,
+1962659444u, 3539886328u,
+4192003933u, 1678423485u,
+3827951761u, 3086277222u,
+2144472852u, 1390394371u,
+2976322029u, 1574517163u,
+3553313841u, 119173722u,
+1702434637u, 1766260771u,
+3629581771u, 1407497759u,
+895654784u, 751439914u,
+4008409498u, 215917713u,
+1482103833u, 695551833u,
+1288382231u, 2656990891u,
+2581779077u, 1570750352u,
+3710689053u, 1741390464u,
+2666411616u, 3533987737u,
+4289478316u, 3576119563u,
+4118694920u, 108199666u,
+3869794273u, 963183826u,
+2081410737u, 3796810515u,
+791123882u, 2525792704u,
+1036883117u, 136547246u,
+875691100u, 2592925324u,
+614302599u, 3013176417u,
+2689342539u, 427154472u,
+532957601u, 1228758574u,
+1898117151u, 1181643858u,
+1908591042u, 1464255968u,
+446980910u, 2984611177u,
+58509511u, 1046943619u,
+3508927906u, 2001585786u,
+2544767379u, 1525438381u,
+552181222u, 1959725830u,
+879448844u, 1348536411u,
+4242243590u, 2861338018u,
+1082052441u, 1034351453u,
+601175800u, 764077711u,
+530635011u, 3785343245u,
+2178026726u, 117256687u,
+2378297261u, 457568934u,
+76438221u, 4104954272u,
+956793873u, 3783168634u,
+2485968477u, 2381948487u,
+4226929450u, 3148473363u,
+2518273601u, 3569490233u,
+879369091u, 2180270337u,
+3674375989u, 1387729170u,
+977997984u, 4270646856u,
+568650985u, 951677556u,
+4213877384u, 2721005055u,
+1073364549u, 2563403831u,
+1678669911u, 66786703u,
+2273631661u, 1149351924u,
+3651298990u, 1581883443u,
+246723096u, 1895026827u,
+3810605772u, 3711056516u,
+4058833288u, 2193790614u,
+2080120290u, 3638638708u,
+2915672708u, 2263003308u,
+2361934197u, 4136767460u,
+1976115991u, 3448840877u,
+2019238520u, 225333538u,
+874340815u, 2976159827u,
+1555273378u, 3797521928u,
+1942347150u, 3262952567u,
+435997738u, 340403353u,
+2817830907u, 2078619498u,
+749534111u, 1178073973u,
+894654712u, 3361226032u,
+841092198u, 3288261538u,
+1696412169u, 1496966875u,
+697501571u, 1059158875u,
+3739946319u, 2481012988u,
+568983526u, 114945840u,
+1559249010u, 2218244008u,
+2841706923u, 1632780103u,
+4020169654u, 2087949619u,
+2438736103u, 24032648u,
+833416317u, 3787017905u,
+2373238993u, 2575395164u,
+3434544481u, 3228481067u,
+2542976862u, 2971726178u,
+2880371864u, 3642087909u,
+2407477975u, 2239080836u,
+1043714217u, 3894199764u,
+2235879182u, 203853421u,
+2933669448u, 2504940536u,
+834683330u, 425935223u,
+3560796393u, 3565833278u,
+1668000829u, 3683399154u,
+3414330886u, 1748785729u,
+1023171602u, 580966986u,
+2531038985u, 3227325488u,
+2657385925u, 2124704694u,
+233442446u, 1107045577u,
+3407293834u, 552770757u,
+3899097693u, 1067532701u,
+115667924u, 1406028344u,
+1707768231u, 3724015962u,
+2419657149u, 18613994u,
+2532882091u, 3476683808u,
+1560838678u, 811220224u,
+895961699u, 3762914298u,
+1328752423u, 1844996900u,
+1420427894u, 1848067707u,
+1210281744u, 904215228u,
+4055325594u, 1118521573u,
+2496554183u, 2579259919u,
+3996647489u, 3657647605u,
+325254059u, 3136157065u,
+3951522674u, 4052925250u,
+3341068436u, 2287683323u,
+1313073005u, 126005630u,
+2505120084u, 1194725057u,
+853746559u, 3555092974u,
+2689238752u, 49515858u,
+1244776042u, 1069300695u,
+61073168u, 1010661841u,
+1269521335u, 1902040126u,
+990632502u, 2378708922u,
+3858321250u, 1400735275u,
+2974699176u, 2771676666u,
+170995186u, 2877798589u,
+545726212u, 2225229957u,
+1086473152u, 3454177594u,
+3859483262u, 1499729584u,
+2088002891u, 2883475137u,
+3222194252u, 4144472319u,
+2212229854u, 4146740722u,
+567988835u, 1051332394u,
+3932046135u, 542648229u,
+3017852446u, 1277887997u,
+162888005u, 1669710469u,
+1492500905u, 553041029u,
+1434876932u, 533989516u,
+3817492747u, 584127807u,
+4147115982u, 2993670925u,
+4020312558u, 710021255u,
+3509733475u, 3587959456u,
+2088550465u, 1745399498u,
+2952242967u, 1259815443u,
+869648362u, 1404723176u,
+3947542735u, 1334333531u,
+3873471582u, 229399758u,
+59634866u, 3239516985u,
+3844250972u, 1275954779u,
+492891666u, 1029533080u,
+1552951157u, 367320647u,
+699480890u, 3684418197u,
+3707014310u, 471105777u,
+1824587258u, 4030809053u,
+3489914436u, 484559105u,
+1235750398u, 1428453396u,
+4230459084u, 4255931645u,
+1848597055u, 4271715616u,
+331780381u, 482425775u,
+2435323270u, 3171911678u,
+3507210587u, 928543347u,
+4197807526u, 3680046204u,
+2766042024u, 2159512867u,
+179373257u, 313902234u,
+4024837592u, 294795361u,
+1622282562u, 647086234u,
+2825039429u, 577214736u,
+4043412446u, 2426981244u,
+1277736097u, 1130129573u,
+2601395338u, 995791646u,
+36668922u, 3344746679u,
+1521532225u, 1645086060u,
+2622763015u, 4122335794u,
+2936887705u, 494465807u,
+2580840343u, 1064648931u,
+1247887787u, 2752145076u,
+1277612417u, 1249660507u,
+2288678613u, 3312498873u,
+2459273912u, 4238535494u,
+3117488020u, 2571979978u,
+2680188909u, 1471227427u,
+1616494033u, 633688562u,
+2268653416u, 3268237290u,
+3021962815u, 1959779970u,
+3321382074u, 766642813u,
+204429780u, 1323319858u,
+3676032891u, 1380896111u,
+4030639049u, 3647601207u,
+1830028502u, 2830263774u,
+1375962216u, 1733961041u,
+939765180u, 521947915u,
+3903267364u, 497472767u,
+1619700946u, 189164145u,
+3115593885u, 486382294u,
+1262445920u, 4062496162u,
+2464795849u, 3770038872u,
+4032121374u, 3235740744u,
+3757765258u, 1777199847u,
+2167243108u, 1912506671u,
+4180515317u, 2276864677u,
+536034089u, 2384915026u,
+162938278u, 1588060152u,
+4018349945u, 2504457929u,
+841450426u, 2790120722u,
+2719983588u, 1471020554u,
+1390856732u, 3623212998u,
+2506944218u, 1035080801u,
+348812127u, 3026631806u,
+746483541u, 2342164722u,
+122104390u, 4074122771u,
+3986865419u, 1674890530u,
+3693306023u, 3011542850u,
+1294951725u, 899303190u,
+3577146915u, 3549160092u,
+1241677652u, 4290680005u,
+3193053279u, 2029187390u,
+3298063095u, 3943068002u,
+3946220635u, 2273781461u,
+889053698u, 1376304022u,
+1486839612u, 2127663659u,
+344127443u, 1646681121u,
+2780117810u, 2142045764u,
+2694572773u, 447810651u,
+2185527146u, 2366308558u,
+290335413u, 584901173u,
+2012370276u, 970504950u,
+3258236042u, 2008155560u,
+3945579565u, 614796295u,
+24452072u, 2695940969u,
+3983727134u, 3444688454u,
+1327044473u, 3545633451u,
+1875293322u, 1739318893u,
+1707527799u, 2683090634u,
+2848082386u, 2814622471u,
+4111401777u, 2774816580u,
+3849839194u, 437560100u,
+2238350150u, 2462124836u,
+665017710u, 512012738u,
+2945294779u, 3305170944u,
+819477765u, 59419271u,
+155125658u, 665292744u,
+444722813u, 3580039116u,
+2355675635u, 663735032u,
+3247800169u, 1579404983u,
+1985115003u, 3397891494u,
+358696453u, 1474896279u,
+516388613u, 710590371u,
+3490497111u, 2514565805u,
+2386143445u, 477509654u,
+412854590u, 3624609754u,
+3214388668u, 3516075816u,
+2731288520u, 1369482895u,
+4033204378u, 1314000850u,
+829769325u, 1935166880u,
+1608191643u, 2607067237u,
+423820371u, 3257747610u,
+1355298041u, 3776931214u,
+4105054901u, 2107080812u,
+1911521879u, 3183054185u,
+3910177801u, 675129307u,
+1209358971u, 4205727791u,
+1435726287u, 3333261712u,
+1400982708u, 1154611403u,
+1663501483u, 2837596667u,
+3164734053u, 2759854023u,
+4012043629u, 1963228038u,
+3981675284u, 2677557877u,
+520119591u, 505138315u,
+897271356u, 1803966773u,
+1016663294u, 616691903u,
+2254742522u, 4032705384u,
+2468470796u, 798395739u,
+3025169002u, 3570037122u,
+1461093710u, 3473799845u,
+3702624858u, 476400898u,
+1043039728u, 2304070437u,
+181576948u, 602972493u,
+3996616030u, 3289878097u,
+2068516226u, 3922247304u,
+1299968266u, 2520311409u,
+1968824721u, 3214794876u,
+1581813122u, 2668800905u,
+3297613974u, 748160407u,
+1145536484u, 1326769504u,
+2973323521u, 3775262814u,
+3218653169u, 902775872u,
+3498603433u, 1372805534u,
+704686363u, 3626542352u,
+2271580579u, 1213925114u,
+46329775u, 3009384989u,
+1330254048u, 1194824134u,
+514204310u, 3781981134u,
+442526164u, 2835608783u,
+3460471867u, 510634034u,
+546406434u, 2716786748u,
+2840500021u, 1669490957u,
+2536189149u, 3251421224u,
+1358736072u, 1089334066u,
+3260749330u, 250756920u,
+2974806681u, 1513718866u,
+82635635u, 4041016629u,
+3391765744u, 2495807367u,
+3962674316u, 2822889695u,
+753413337u, 2008251381u,
+3123390177u, 106212622u,
+490570565u, 1684884205u,
+793892547u, 1927268995u,
+2344148164u, 2251978818u,
+437424236u, 2774023200u,
+2674940754u, 3788056262u,
+2597882666u, 3678660147u,
+3797434193u, 3838215866u,
+279687080u, 2656772270u,
+2190204787u, 1997584981u,
+3384401882u, 3160208845u,
+3629379425u, 2668998785u,
+1050036757u, 2954162084u,
+917091826u, 1744374041u,
+1454282570u, 845687881u,
+2997173625u, 776018378u,
+1137560602u, 1938378389u,
+1748082354u, 2066910012u,
+2677675207u, 918315064u,
+};
+
+// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
+bool Test(int offset, int len = 0) {
+#undef Check
+#undef IsAlive
+
+#define Check(x) do { \
+ const uint32_t actual = (x), e = expected[index++]; \
+ bool ok = actual == e; \
+ if (!ok) { \
+ cerr << "expected " << hex << e << " but got " << actual << endl; \
+ ++errors; \
+ } \
+ assert(ok); \
+} while (0)
+
+#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
+
+ // After the following line is where the uses of "Check" and such will go.
+ static int index = 0;
if (offset == -1) { int alive = 0; { uint64_t h = farmhashte::Hash64WithSeeds(farm_hash_data, len++, SEED0, SEED1); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } { uint64_t h = farmhashte::Hash64WithSeed(farm_hash_data, len++, SEED); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } { uint64_t h = farmhashte::Hash64(farm_hash_data, len++); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } len -= 3; return alive > 0; }
{ uint64_t h = farmhashte::Hash64WithSeeds(farm_hash_data + offset, len, SEED0, SEED1); Check(h >> 32); Check((h << 32) >> 32); }
{ uint64_t h = farmhashte::Hash64WithSeed(farm_hash_data + offset, len, SEED); Check(h >> 32); Check((h << 32) >> 32); }
{ uint64_t h = farmhashte::Hash64(farm_hash_data + offset, len); Check(h >> 32); Check((h << 32) >> 32); }
-
- return true;
-#undef Check
-#undef IsAlive
-}
-
-int RunTest() {
- Setup();
- int i = 0;
- cout << "Running farmhashteTest";
- if (!Test(-1)) {
- cout << "... Unavailable\n";
- return NoteErrors();
- }
- // Good. The function is attempting to hash, so run the full test.
- int errors_prior_to_test = errors;
- for ( ; i < kTestSize - 1; i++) {
- Test(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- Test(0, i);
- }
- Test(0, kDataSize);
- cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
- return NoteErrors();
-}
-
-#else
-
-// After the following line is where the code to print hash codes will go.
-void Dump(int offset, int len) {
+
+ return true;
+#undef Check
+#undef IsAlive
+}
+
+int RunTest() {
+ Setup();
+ int i = 0;
+ cout << "Running farmhashteTest";
+ if (!Test(-1)) {
+ cout << "... Unavailable\n";
+ return NoteErrors();
+ }
+ // Good. The function is attempting to hash, so run the full test.
+ int errors_prior_to_test = errors;
+ for ( ; i < kTestSize - 1; i++) {
+ Test(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ Test(0, i);
+ }
+ Test(0, kDataSize);
+ cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
+ return NoteErrors();
+}
+
+#else
+
+// After the following line is where the code to print hash codes will go.
+void Dump(int offset, int len) {
{ uint64_t h = farmhashte::Hash64WithSeeds(farm_hash_data + offset, len, SEED0, SEED1); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
{ uint64_t h = farmhashte::Hash64WithSeed(farm_hash_data + offset, len, SEED); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
{ uint64_t h = farmhashte::Hash64(farm_hash_data + offset, len); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
-}
-
-#endif
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-
-} // namespace farmhashteTest
-
-#if !TESTING
-int main(int argc, char** argv) {
- Setup();
- cout << "uint32_t expected[] = {\n";
- int i = 0;
- for ( ; i < kTestSize - 1; i++) {
- farmhashteTest::Dump(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- farmhashteTest::Dump(0, i);
- }
- farmhashteTest::Dump(0, kDataSize);
- cout << "};\n";
-}
-#endif
-#ifndef FARMHASH_SELF_TEST_GUARD
-#define FARMHASH_SELF_TEST_GUARD
-#include <cstdio>
-#include <iostream>
-#include <string.h>
-
-using std::cout;
-using std::cerr;
-using std::endl;
-using std::hex;
-
-static const uint64_t kSeed0 = 1234567;
-static const uint64_t kSeed1 = k0;
-static const int kDataSize = 1 << 20;
-static const int kTestSize = 300;
-#define kSeed128 Uint128(kSeed0, kSeed1)
-
+}
+
+#endif
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+
+} // namespace farmhashteTest
+
+#if !TESTING
+int main(int argc, char** argv) {
+ Setup();
+ cout << "uint32_t expected[] = {\n";
+ int i = 0;
+ for ( ; i < kTestSize - 1; i++) {
+ farmhashteTest::Dump(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ farmhashteTest::Dump(0, i);
+ }
+ farmhashteTest::Dump(0, kDataSize);
+ cout << "};\n";
+}
+#endif
+#ifndef FARMHASH_SELF_TEST_GUARD
+#define FARMHASH_SELF_TEST_GUARD
+#include <cstdio>
+#include <iostream>
+#include <string.h>
+
+using std::cout;
+using std::cerr;
+using std::endl;
+using std::hex;
+
+static const uint64_t kSeed0 = 1234567;
+static const uint64_t kSeed1 = k0;
+static const int kDataSize = 1 << 20;
+static const int kTestSize = 300;
+#define kSeed128 Uint128(kSeed0, kSeed1)
+
static char farm_hash_data[kDataSize];
-
-static int completed_self_tests = 0;
-static int errors = 0;
-
+
+static int completed_self_tests = 0;
+static int errors = 0;
+
// Initialize farm_hash_data to pseudorandom values.
-void Setup() {
- if (completed_self_tests == 0) {
- uint64_t a = 9;
- uint64_t b = 777;
- for (int i = 0; i < kDataSize; i++) {
- a += b;
- b += a;
- a = (a ^ (a >> 41)) * k0;
- b = (b ^ (b >> 41)) * k0 + i;
- uint8_t u = b >> 37;
+void Setup() {
+ if (completed_self_tests == 0) {
+ uint64_t a = 9;
+ uint64_t b = 777;
+ for (int i = 0; i < kDataSize; i++) {
+ a += b;
+ b += a;
+ a = (a ^ (a >> 41)) * k0;
+ b = (b ^ (b >> 41)) * k0 + i;
+ uint8_t u = b >> 37;
memcpy(farm_hash_data + i, &u, 1); // uint8_t -> char
- }
- }
-}
-
-int NoteErrors() {
-#define NUM_SELF_TESTS 9
- if (++completed_self_tests == NUM_SELF_TESTS)
- std::exit(errors > 0);
- return errors;
-}
-
-template <typename T> inline bool IsNonZero(T x) {
- return x != 0;
-}
-
-template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
- return x != Uint128(0, 0);
-}
-
-#endif // FARMHASH_SELF_TEST_GUARD
-
-namespace farmhashuoTest {
-
-uint32_t CreateSeed(int offset, int salt) {
- uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h += static_cast<uint32_t>(offset & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- return h;
-}
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-#define SEED CreateSeed(offset, -1)
-#define SEED0 CreateSeed(offset, 0)
-#define SEED1 CreateSeed(offset, 1)
-
-#undef TESTING
-#define TESTING 1
-#if TESTING
-uint32_t expected[] = {
-3277735313u, 2681724312u,
-2598464059u, 797982799u,
-2603993599u, 921001710u,
-1410420968u, 2134990486u,
-2914424215u, 2244477846u,
-255297188u, 2992121793u,
-161451183u, 3943596029u,
-4019337850u, 452431531u,
-3379021470u, 2557197665u,
-299850021u, 2532580744u,
-1298374911u, 3099673830u,
-2199864459u, 3696623795u,
-4055299123u, 3281581178u,
-1053458494u, 1882212500u,
-3456121707u, 275903667u,
-458884671u, 3033004529u,
-1898235244u, 1402319660u,
-2700149065u, 2699376854u,
-2433714046u, 4222949502u,
-4220361840u, 1712034059u,
-4148372108u, 1330324210u,
-594028478u, 2921867846u,
-780716741u, 1728752234u,
-3280331829u, 326029180u,
-393215742u, 3349570000u,
-3824583307u, 1612122221u,
-1379537552u, 1646032583u,
-2233466664u, 1432476832u,
-2052294713u, 3552092450u,
-1628777059u, 1499109081u,
-2960536756u, 1554038301u,
-1145519619u, 3190844552u,
-237495366u, 540224401u,
-65721842u, 489963606u,
-1596489240u, 1562872448u,
-1790705123u, 2128624475u,
-1435705557u, 1262831810u,
-155445229u, 1672724608u,
-663607706u, 2077310004u,
-3610042449u, 1911523866u,
-2563776023u, 294527927u,
-1099072299u, 1389770549u,
-2952353448u, 2026137563u,
-3603803785u, 629449419u,
-226132789u, 2489287368u,
-1552847036u, 645684964u,
-187883449u, 230403464u,
-3151491850u, 3272648435u,
-2002861219u, 165370827u,
-916494250u, 1230085527u,
-3807265751u, 3628174014u,
-231181488u, 851743255u,
-2988893883u, 1554380634u,
-1142264800u, 3667013118u,
-2638023604u, 2290487377u,
-732137533u, 1909203251u,
-1380301172u, 1498556724u,
-4072067757u, 4165088768u,
-3931792696u, 197618179u,
-956300927u, 914413116u,
-2148126371u, 1913303225u,
-3074915312u, 3117299654u,
-3178848746u, 1357272220u,
-1438494951u, 507436733u,
-3854939912u, 1413396341u,
-126024219u, 146044391u,
-3254014218u, 429095991u,
-165589978u, 1578546616u,
-623071693u, 366414107u,
-249776086u, 1207522198u,
-3120876698u, 1684583131u,
-46987739u, 1157614300u,
-199124911u, 520792961u,
-3614377032u, 586863115u,
-1716848157u, 4033596884u,
-1164298657u, 4140791139u,
-3824360466u, 3242407770u,
-3725511003u, 232064808u,
-2736953692u, 816692935u,
-512845449u, 3748861010u,
-4290630595u, 517646945u,
-22638523u, 648000590u,
-1283799121u, 3047062993u,
-1024246061u, 4027776454u,
-834785312u, 382936554u,
-411505255u, 1973395102u,
-580988377u, 2826990641u,
-3474970689u, 1029055034u,
-2584372201u, 1758123094u,
-589567754u, 325737734u,
-3886113119u, 3338548567u,
-257578986u, 3698087965u,
-3604937815u, 3198590202u,
-2305332220u, 191910725u,
-4244322689u, 542201663u,
-3315355162u, 2135941665u,
-1175961330u, 3948351189u,
-23075771u, 3252374102u,
-713127376u, 1467786451u,
-663013031u, 3444053918u,
-3077742128u, 1062268187u,
-2115441882u, 4081398201u,
-2335576331u, 2560479831u,
-1379288194u, 4225182569u,
-3958366652u, 3067277639u,
-3667516477u, 1709989541u,
-4188504038u, 59581167u,
-2725013602u, 3639843023u,
-3758739543u, 4189944477u,
-2470483982u, 877580602u,
-3252925478u, 2062343506u,
-3981838403u, 3762572073u,
-2931588131u, 3284356565u,
-1129162571u, 732225574u,
-1677744031u, 3532596884u,
-3232041815u, 1652884780u,
-3740979556u, 259034107u,
-2227121257u, 1426140634u,
-315836068u, 3200749877u,
-1386256573u, 24035717u,
-234531934u, 1115203611u,
-1598686658u, 3146815575u,
-2632963283u, 1778459926u,
-739944537u, 579625482u,
-1231665285u, 2457048126u,
-3903349120u, 389846205u,
-1052645068u, 862072556u,
-2834153464u, 1481069623u,
-1688445808u, 701920051u,
-3740748788u, 3388062747u,
-1192588249u, 1410111809u,
-2633463887u, 4050419847u,
-2513844237u, 2187968410u,
-2951683019u, 3015806005u,
-3000537321u, 479241367u,
-252167538u, 1231057113u,
-393624922u, 704325635u,
-1467197045u, 2066433573u,
-3082385053u, 735688735u,
-956434529u, 4028590195u,
-4074716319u, 813690332u,
-2124740535u, 804073145u,
-3748881891u, 3195309868u,
-841856605u, 2585865274u,
-881504822u, 3254795114u,
-1241815736u, 970796142u,
-497175391u, 3929484338u,
-4264993211u, 1835322201u,
-3675707838u, 4205965408u,
-300298607u, 3858319990u,
-3255259608u, 4247675634u,
-1095823272u, 1197245408u,
-1742785722u, 785893184u,
-1702965674u, 850401405u,
-4084891412u, 1160134629u,
-2555998391u, 1972759056u,
-710625654u, 4116162021u,
-3352753742u, 85121177u,
-3513255468u, 2487440590u,
-2480032715u, 2287747045u,
-4090178629u, 4044418876u,
-1703944517u, 486290428u,
-1515601363u, 2011102035u,
-573985957u, 3536053779u,
-4257172787u, 576405853u,
-1523550693u, 1014952061u,
-711098718u, 2425317635u,
-3460807169u, 3688987163u,
-3167371443u, 3062418115u,
-3330028292u, 1713171303u,
-526177822u, 2602636307u,
-1245357025u, 3346699703u,
-254529415u, 4017058800u,
-1829738451u, 2164236533u,
-1381258384u, 4036354071u,
-1749181924u, 4118435443u,
-4130543625u, 688472265u,
-2731071299u, 2547657502u,
-4175776103u, 338058159u,
-3729582129u, 4181845558u,
-2227290760u, 146827036u,
-2459178427u, 1025353883u,
-4284109679u, 2502815838u,
-825124804u, 2533140036u,
-616327404u, 2448966429u,
-413992636u, 2334782461u,
-2239052397u, 1082330589u,
-3381164715u, 199381437u,
-2583939798u, 2848283092u,
-2300168091u, 2156336315u,
-1855234968u, 1982110346u,
-2482046810u, 3158163887u,
-2168864636u, 133643215u,
-3904021624u, 3646514568u,
-1176127003u, 4015671361u,
-100525019u, 3534706803u,
-2045051700u, 3452457457u,
-1492267772u, 2308393828u,
-3776661467u, 3281002516u,
-4246334524u, 743955039u,
-685631442u, 1147951686u,
-2040912376u, 2911148054u,
-3204999386u, 2415262714u,
-313209105u, 777065474u,
-2729416454u, 1029284767u,
-1632078298u, 1817552554u,
-3963877000u, 1919171906u,
-3843219958u, 3073580867u,
-865146997u, 2473524405u,
-2593817617u, 3643076308u,
-617975720u, 3671562289u,
-121812599u, 2902367378u,
-2260041112u, 1019936943u,
-320945955u, 2337845588u,
-1535670711u, 773792826u,
-3152195900u, 4090794518u,
-4142587430u, 484732447u,
-419191319u, 3377973345u,
-324924679u, 2809286837u,
-1562277603u, 1378362199u,
-3791551981u, 1097806406u,
-1386297408u, 2304900033u,
-3574135531u, 4017075736u,
-1161238398u, 1358056883u,
-3487080616u, 1516736273u,
-851615042u, 2927899494u,
-4077452507u, 2984955003u,
-3907754394u, 3578173844u,
-1948409509u, 1923531348u,
-3578472493u, 3710074193u,
-213811117u, 2586632018u,
-1922589216u, 274958014u,
-1654276320u, 2687561076u,
-2569061755u, 3122046057u,
-3203802620u, 1692079268u,
-477806878u, 140587742u,
-520565830u, 3674576684u,
-91246882u, 1010215946u,
-3703994407u, 69201295u,
-776213083u, 3677771507u,
-3696902571u, 3593730713u,
-2907901228u, 3239753796u,
-1586241476u, 1939595371u,
-2268396558u, 3468719670u,
-2955715987u, 2295501078u,
-2775848696u, 1358532390u,
-3843660102u, 82177963u,
-4094477877u, 191727221u,
-278661677u, 2889101923u,
-1352525614u, 2844977667u,
-1261140657u, 1747052377u,
-2334120653u, 645125282u,
-2707230761u, 4142246789u,
-1068639717u, 2288162940u,
-1419293714u, 1636932722u,
-3252686293u, 318543902u,
-2598802768u, 2025886508u,
-2250788464u, 2711763065u,
-255108733u, 1845587644u,
-3719270134u, 3940707863u,
-917608574u, 1363253259u,
-788659330u, 673256220u,
-109793386u, 341851980u,
-2698465479u, 3011229884u,
-3886713057u, 1276595523u,
-2439962760u, 2700515456u,
-205970448u, 4198897105u,
-875511891u, 371715572u,
-1033680610u, 4278599955u,
-3120038721u, 1256300069u,
-225629455u, 3735275001u,
-3961944123u, 1769389163u,
-1074553219u, 668829411u,
-1098679359u, 2573697509u,
-1885071395u, 4233785523u,
-2513878053u, 2030193788u,
-360256231u, 107312677u,
-310517502u, 2618936366u,
-3600462351u, 1216645846u,
-2970730323u, 4278812598u,
-94638678u, 1689811113u,
-4125738800u, 3103759730u,
-103797041u, 1397772514u,
-1669653333u, 572567964u,
-1612872497u, 2986430557u,
-214990655u, 3117607990u,
-1949717207u, 2260498180u,
-1493936866u, 3554860960u,
-1582022990u, 1263709570u,
-1244120487u, 3416600761u,
-224580012u, 4252610345u,
-286306391u, 814956796u,
-1820532305u, 2776960536u,
-3082703465u, 1659265982u,
-1157398049u, 3752806924u,
-3508246460u, 2902716664u,
-2110942730u, 3267551635u,
-902835431u, 405228165u,
-2341378668u, 2220373824u,
-3303626294u, 1175118221u,
-383517064u, 896322512u,
-1697257567u, 2202820683u,
-1837689083u, 1336556841u,
-914535232u, 3634083711u,
-1537187340u, 3712582785u,
-1088201893u, 3270984620u,
-3093195926u, 2561488770u,
-1962968100u, 236189500u,
-2549435227u, 536047554u,
-422609195u, 2958815818u,
-4166184983u, 3528794619u,
-1042329086u, 3914176886u,
-1359641525u, 1197100813u,
-1269739674u, 3301844628u,
-1831223342u, 3329594980u,
-2433669782u, 494908536u,
-1441714797u, 1174785921u,
-1933050423u, 958901065u,
-868981704u, 2163330264u,
-3243110680u, 1443133429u,
-1145009669u, 2520062970u,
-3851564853u, 2664619323u,
-2686075657u, 4042710240u,
-2125408249u, 4165697916u,
-2328730865u, 3160666939u,
-588683409u, 2126275847u,
-829404209u, 1878067032u,
-2567792910u, 897670516u,
-934312076u, 2952135524u,
-504832490u, 3312698056u,
-4015478120u, 1265237690u,
-3376133707u, 967674402u,
-1553513184u, 834830418u,
-2396504772u, 3278582098u,
-2950762705u, 4277111759u,
-4159211303u, 1290097509u,
-251949572u, 3065234219u,
-1832020534u, 312136369u,
-1103404394u, 198182691u,
-1369599600u, 3906710870u,
-2954651680u, 1535115487u,
-2389327507u, 1813520230u,
-632704095u, 140762681u,
-3123202913u, 3336005523u,
-1287729497u, 2198985327u,
-2470730783u, 3821758006u,
-1009870118u, 559702706u,
-4274686257u, 3187546567u,
-2402308151u, 1096697687u,
-678932329u, 3716363135u,
-2899950405u, 3046872820u,
-3754655641u, 2021741414u,
-1993425202u, 2185339100u,
-2838253700u, 3099212100u,
-1679617763u, 3703603898u,
-1135665833u, 3559875668u,
-2503579743u, 1446869792u,
-879818611u, 3788305533u,
-2879018745u, 2719373510u,
-3606051203u, 2166567748u,
-343595772u, 1996164093u,
-1577656121u, 475248376u,
-463852893u, 2864244470u,
-1332049663u, 3326459767u,
-3207234525u, 2028708916u,
-938916154u, 3115246264u,
-3272166407u, 557660441u,
-1265684026u, 245033807u,
-2440657523u, 255451671u,
-3811885130u, 1399880284u,
-1322855877u, 3452203069u,
-1324994449u, 3796404024u,
-2002090272u, 1568745354u,
-3700047753u, 31799506u,
-3009412313u, 3184047862u,
-728680761u, 3848624873u,
-1849329144u, 3160134214u,
-1272923193u, 1474278816u,
-1208883495u, 1566527339u,
-4136466541u, 630825649u,
-1717327230u, 1496132623u,
-2449386742u, 128106940u,
-2108574735u, 2584236470u,
-2872246579u, 397338552u,
-3088905079u, 3456882941u,
-1715915153u, 2940716269u,
-4168438718u, 467441309u,
-872996731u, 3206901319u,
-1610606159u, 2540270567u,
-1301658081u, 2379410194u,
-2109315753u, 3348545480u,
-2041927873u, 2644077493u,
-546596661u, 1017047954u,
-2596792972u, 2783958892u,
-2826408201u, 3531646869u,
-2219352672u, 4217451852u,
-1806867885u, 1903578924u,
-2076465705u, 2373061493u,
-1832925325u, 241574049u,
-1509517110u, 3703614272u,
-3429894862u, 3529565564u,
-4010000614u, 2256197939u,
-517086873u, 2964595704u,
-3501035294u, 4079457298u,
-1184683823u, 4260564140u,
-2339268412u, 3871564102u,
-1572637805u, 383233885u,
-3351411126u, 3419328182u,
-2017406667u, 919677938u,
-29804156u, 46276077u,
-3032591014u, 4204155962u,
-1172319502u, 969309871u,
-2211319468u, 4153726847u,
-3094193193u, 4240669441u,
-3441709766u, 1387233546u,
-4048882438u, 1217896566u,
-1580964938u, 740563169u,
-3691850348u, 3176426539u,
-2738323042u, 2948665536u,
-1474029445u, 3513354882u,
-3219466255u, 3799363969u,
-3961796122u, 1055550923u,
-1992212097u, 2263421398u,
-4289759174u, 2516844140u,
-1782515131u, 2746577402u,
-721928440u, 3529570984u,
-1705302106u, 768287270u,
-3474902815u, 4000011125u,
-3475618043u, 212490675u,
-549130471u, 2970128275u,
-3170016833u, 2549835613u,
-3691104824u, 2694324482u,
-4169365948u, 3738062408u,
-602930397u, 2148954730u,
-2636387819u, 2616619070u,
-301617872u, 374657036u,
-3862686086u, 431292293u,
-4225245165u, 1358580562u,
-2377363130u, 1415970351u,
-3885060756u, 1438379807u,
-2297418515u, 2954777083u,
-3970368221u, 1229801760u,
-1931934525u, 2287507921u,
-1713471510u, 2145608111u,
-2650140034u, 4081586725u,
-4196863572u, 1896558394u,
-4059852729u, 1813855658u,
-2618400836u, 1396056469u,
-2375584220u, 1037031473u,
-249284003u, 2450077637u,
-1383747654u, 3122687303u,
-2664431743u, 3855028730u,
-929335420u, 3193251135u,
-137313762u, 1850894384u,
-3163711272u, 3071568023u,
-418541677u, 3621223039u,
-340274176u, 1167681812u,
-4106647531u, 4022465625u,
-3069708839u, 2704165015u,
-2332023349u, 641449034u,
-921552000u, 1712976649u,
-1876484273u, 2343049860u,
-1834682077u, 4155949943u,
-2061821157u, 4240649383u,
-747285578u, 1626463554u,
-165503115u, 359629739u,
-3838102563u, 582664250u,
-3878924635u, 4117237498u,
-2250573853u, 804336148u,
-331393443u, 4242530387u,
-3346357270u, 1674051445u,
-3348019777u, 1722242971u,
-2509017299u, 2966108111u,
-4189102509u, 3323592310u,
-2631381069u, 4014551783u,
-4250787412u, 3448394212u,
-2664752123u, 3517585534u,
-3605365141u, 1669471183u,
-2210121140u, 760762191u,
-249697459u, 3416920106u,
-16322182u, 643179562u,
-1564226597u, 2134630675u,
-1011990087u, 2990167340u,
-2349550842u, 1642428946u,
-1214854475u, 2134299399u,
-2704221532u, 2104175211u,
-4283196353u, 1342880802u,
-198529755u, 2004468390u,
-2544665755u, 853593042u,
-2090611294u, 2970943872u,
-1472073141u, 850464484u,
-1407609278u, 3062461105u,
-366448238u, 3842907484u,
-488797416u, 1432670231u,
-294963924u, 3693536939u,
-3390549825u, 1583234720u,
-4032223840u, 2318423400u,
-2965642867u, 930822729u,
-1679099863u, 1728968857u,
-900822335u, 702309817u,
-3258354115u, 1502282913u,
-2811888503u, 3924947660u,
-2477280726u, 3651607391u,
-3788310204u, 1300369123u,
-1842333726u, 4146839064u,
-2468893861u, 4091095953u,
-488595746u, 1448097974u,
-1159634090u, 1738834113u,
-2928916831u, 4093725287u,
-530850094u, 291657799u,
-3548184546u, 679517009u,
-399175380u, 2658337143u,
-3827951761u, 3086277222u,
-2067718397u, 3632376023u,
-3553313841u, 119173722u,
-1702434637u, 1766260771u,
-895654784u, 751439914u,
-4008409498u, 215917713u,
-1288382231u, 2656990891u,
-2581779077u, 1570750352u,
-2666411616u, 3533987737u,
-4289478316u, 3576119563u,
-3869794273u, 963183826u,
-2081410737u, 3796810515u,
-1036883117u, 136547246u,
-875691100u, 2592925324u,
-2689342539u, 427154472u,
-532957601u, 1228758574u,
-1908591042u, 1464255968u,
-446980910u, 2984611177u,
-3508927906u, 2001585786u,
-2544767379u, 1525438381u,
-879448844u, 1348536411u,
-4242243590u, 2861338018u,
-601175800u, 764077711u,
-530635011u, 3785343245u,
-2378297261u, 457568934u,
-76438221u, 4104954272u,
-2485968477u, 2381948487u,
-4226929450u, 3148473363u,
-879369091u, 2180270337u,
-3674375989u, 1387729170u,
-568650985u, 951677556u,
-4213877384u, 2721005055u,
-1678669911u, 66786703u,
-2273631661u, 1149351924u,
-246723096u, 1895026827u,
-3810605772u, 3711056516u,
-2080120290u, 3638638708u,
-2915672708u, 2263003308u,
-1976115991u, 3448840877u,
-2019238520u, 225333538u,
-1555273378u, 3797521928u,
-1942347150u, 3262952567u,
-2817830907u, 2078619498u,
-749534111u, 1178073973u,
-841092198u, 3288261538u,
-1696412169u, 1496966875u,
-3739946319u, 2481012988u,
-568983526u, 114945840u,
-2841706923u, 1632780103u,
-4020169654u, 2087949619u,
-833416317u, 3787017905u,
-2373238993u, 2575395164u,
-2542976862u, 2971726178u,
-2880371864u, 3642087909u,
-1043714217u, 3894199764u,
-2235879182u, 203853421u,
-834683330u, 425935223u,
-3560796393u, 3565833278u,
-3414330886u, 1748785729u,
-1023171602u, 580966986u,
-2657385925u, 2124704694u,
-233442446u, 1107045577u,
-3899097693u, 1067532701u,
-115667924u, 1406028344u,
-2419657149u, 18613994u,
-2532882091u, 3476683808u,
-895961699u, 3762914298u,
-1328752423u, 1844996900u,
-1210281744u, 904215228u,
-4055325594u, 1118521573u,
-3996647489u, 3657647605u,
-325254059u, 3136157065u,
-3341068436u, 2287683323u,
-1313073005u, 126005630u,
-853746559u, 3555092974u,
-2689238752u, 49515858u,
-61073168u, 1010661841u,
-1269521335u, 1902040126u,
-3858321250u, 1400735275u,
-2974699176u, 2771676666u,
-545726212u, 2225229957u,
-1086473152u, 3454177594u,
-2088002891u, 2883475137u,
-3222194252u, 4144472319u,
-567988835u, 1051332394u,
-3932046135u, 542648229u,
-162888005u, 1669710469u,
-1492500905u, 553041029u,
-3817492747u, 584127807u,
-4147115982u, 2993670925u,
-3509733475u, 3587959456u,
-2088550465u, 1745399498u,
-869648362u, 1404723176u,
-3947542735u, 1334333531u,
-59634866u, 3239516985u,
-3844250972u, 1275954779u,
-2512155003u, 1685649437u,
-639306006u, 2524620206u,
-576786501u, 655707039u,
-2864351838u, 3736264674u,
-1200907897u, 2384379464u,
-15823708u, 206117476u,
-1193310960u, 1093099415u,
-3696538026u, 4112584792u,
-2069527017u, 547588820u,
-4178147211u, 2827259351u,
-940846775u, 1054995047u,
-2976960697u, 1934305529u,
-2199137382u, 1005722394u,
-1875867180u, 2064356511u,
-4019734130u, 3096333006u,
-2069509024u, 2906358341u,
-2232866485u, 1456016086u,
-1422674894u, 867282151u,
-1612503136u, 1739843072u,
-134947567u, 2978775774u,
-1284167756u, 1090844589u,
-831688783u, 2079216362u,
-1626991196u, 3644714163u,
-3678110059u, 898470030u,
-3916646913u, 3182422972u,
-3630426828u, 969847973u,
-3427164640u, 3463937250u,
-3044785046u, 897322257u,
-3443872170u, 4185408854u,
-2557463241u, 4080940424u,
-2048168570u, 2429169982u,
-3174690447u, 2513494106u,
-1213061732u, 3143736628u,
-3482268149u, 1250714337u,
-31648125u, 3872383625u,
-1565760579u, 36665130u,
-751041229u, 2257179590u,
-2915361862u, 280819225u,
-2907818413u, 4254297769u,
-3493178615u, 3755944354u,
-4043533423u, 1134196225u,
-4177134659u, 127246419u,
-2442615581u, 923049607u,
-1004426206u, 782768297u,
-2410586681u, 1430106871u,
-4103323427u, 3168399477u,
-3716682375u, 3616334719u,
-3413209549u, 656672786u,
-2876965944u, 182894450u,
-456581318u, 2683752067u,
-3877875910u, 3190666241u,
-3240336907u, 4024807233u,
-1681224377u, 1576191191u,
-3599250276u, 2381111980u,
-3495321877u, 3956024585u,
-1611608524u, 3815677453u,
-2062334396u, 1656117707u,
-5457134u, 3234118251u,
-470187419u, 2688566989u,
-3259870297u, 660100446u,
-442236198u, 2542452448u,
-493137955u, 392411099u,
-947967568u, 1234595917u,
-4230082284u, 2762976773u,
-2870085764u, 1455086530u,
-2762099647u, 4011882747u,
-1215981925u, 3227517889u,
-3269061963u, 4037515364u,
-3168911474u, 4255057396u,
-2026092260u, 1736192508u,
-3909727042u, 3114708966u,
-1938800693u, 680793595u,
-1525265867u, 2808224480u,
-2122290603u, 1211197714u,
-3520488321u, 3979192396u,
-3540779343u, 4192918639u,
-2736030448u, 1120335563u,
-1698949078u, 3993310631u,
-1966048551u, 2228221363u,
-597941119u, 3498018399u,
-393987327u, 454500547u,
-1222959566u, 567151340u,
-3774764786u, 1492844524u,
-3308300614u, 805568076u,
-868414882u, 177406999u,
-1608110313u, 642061169u,
-1027515771u, 3131251981u,
-2851936150u, 4272755262u,
-1532845092u, 709643652u,
-682573592u, 1244104217u,
-796769556u, 2500467040u,
-3002618826u, 1112998535u,
-1780193104u, 1243644607u,
-3691719535u, 2958853053u,
-466635014u, 2277292580u,
-4082276003u, 1030800045u,
-1750863246u, 379050598u,
-3576413281u, 731493104u,
-132259176u, 4115195437u,
-1769890695u, 2715470335u,
-1819263183u, 2028531518u,
-2154809766u, 3672399742u,
-76727603u, 4198182186u,
-2304993586u, 1666387627u,
-284366017u, 3359785538u,
-3469807328u, 2926494787u,
-3829072836u, 2493478921u,
-3738499303u, 3311304980u,
-932916545u, 2235559063u,
-2909742396u, 1765719309u,
-1456588655u, 508290328u,
-1490719640u, 3356513470u,
-2908490783u, 251085588u,
-830410677u, 3172220325u,
-3897208579u, 1940535730u,
-151909546u, 2384458112u,
-};
-
-// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
-bool Test(int offset, int len = 0) {
-#undef Check
-#undef IsAlive
-
-#define Check(x) do { \
- const uint32_t actual = (x), e = expected[index++]; \
- bool ok = actual == e; \
- if (!ok) { \
- cerr << "expected " << hex << e << " but got " << actual << endl; \
- ++errors; \
- } \
- assert(ok); \
-} while (0)
-
-#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
-
- // After the following line is where the uses of "Check" and such will go.
- static int index = 0;
+ }
+ }
+}
+
+int NoteErrors() {
+#define NUM_SELF_TESTS 9
+ if (++completed_self_tests == NUM_SELF_TESTS)
+ std::exit(errors > 0);
+ return errors;
+}
+
+template <typename T> inline bool IsNonZero(T x) {
+ return x != 0;
+}
+
+template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
+ return x != Uint128(0, 0);
+}
+
+#endif // FARMHASH_SELF_TEST_GUARD
+
+namespace farmhashuoTest {
+
+uint32_t CreateSeed(int offset, int salt) {
+ uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h += static_cast<uint32_t>(offset & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ return h;
+}
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+#define SEED CreateSeed(offset, -1)
+#define SEED0 CreateSeed(offset, 0)
+#define SEED1 CreateSeed(offset, 1)
+
+#undef TESTING
+#define TESTING 1
+#if TESTING
+uint32_t expected[] = {
+3277735313u, 2681724312u,
+2598464059u, 797982799u,
+2603993599u, 921001710u,
+1410420968u, 2134990486u,
+2914424215u, 2244477846u,
+255297188u, 2992121793u,
+161451183u, 3943596029u,
+4019337850u, 452431531u,
+3379021470u, 2557197665u,
+299850021u, 2532580744u,
+1298374911u, 3099673830u,
+2199864459u, 3696623795u,
+4055299123u, 3281581178u,
+1053458494u, 1882212500u,
+3456121707u, 275903667u,
+458884671u, 3033004529u,
+1898235244u, 1402319660u,
+2700149065u, 2699376854u,
+2433714046u, 4222949502u,
+4220361840u, 1712034059u,
+4148372108u, 1330324210u,
+594028478u, 2921867846u,
+780716741u, 1728752234u,
+3280331829u, 326029180u,
+393215742u, 3349570000u,
+3824583307u, 1612122221u,
+1379537552u, 1646032583u,
+2233466664u, 1432476832u,
+2052294713u, 3552092450u,
+1628777059u, 1499109081u,
+2960536756u, 1554038301u,
+1145519619u, 3190844552u,
+237495366u, 540224401u,
+65721842u, 489963606u,
+1596489240u, 1562872448u,
+1790705123u, 2128624475u,
+1435705557u, 1262831810u,
+155445229u, 1672724608u,
+663607706u, 2077310004u,
+3610042449u, 1911523866u,
+2563776023u, 294527927u,
+1099072299u, 1389770549u,
+2952353448u, 2026137563u,
+3603803785u, 629449419u,
+226132789u, 2489287368u,
+1552847036u, 645684964u,
+187883449u, 230403464u,
+3151491850u, 3272648435u,
+2002861219u, 165370827u,
+916494250u, 1230085527u,
+3807265751u, 3628174014u,
+231181488u, 851743255u,
+2988893883u, 1554380634u,
+1142264800u, 3667013118u,
+2638023604u, 2290487377u,
+732137533u, 1909203251u,
+1380301172u, 1498556724u,
+4072067757u, 4165088768u,
+3931792696u, 197618179u,
+956300927u, 914413116u,
+2148126371u, 1913303225u,
+3074915312u, 3117299654u,
+3178848746u, 1357272220u,
+1438494951u, 507436733u,
+3854939912u, 1413396341u,
+126024219u, 146044391u,
+3254014218u, 429095991u,
+165589978u, 1578546616u,
+623071693u, 366414107u,
+249776086u, 1207522198u,
+3120876698u, 1684583131u,
+46987739u, 1157614300u,
+199124911u, 520792961u,
+3614377032u, 586863115u,
+1716848157u, 4033596884u,
+1164298657u, 4140791139u,
+3824360466u, 3242407770u,
+3725511003u, 232064808u,
+2736953692u, 816692935u,
+512845449u, 3748861010u,
+4290630595u, 517646945u,
+22638523u, 648000590u,
+1283799121u, 3047062993u,
+1024246061u, 4027776454u,
+834785312u, 382936554u,
+411505255u, 1973395102u,
+580988377u, 2826990641u,
+3474970689u, 1029055034u,
+2584372201u, 1758123094u,
+589567754u, 325737734u,
+3886113119u, 3338548567u,
+257578986u, 3698087965u,
+3604937815u, 3198590202u,
+2305332220u, 191910725u,
+4244322689u, 542201663u,
+3315355162u, 2135941665u,
+1175961330u, 3948351189u,
+23075771u, 3252374102u,
+713127376u, 1467786451u,
+663013031u, 3444053918u,
+3077742128u, 1062268187u,
+2115441882u, 4081398201u,
+2335576331u, 2560479831u,
+1379288194u, 4225182569u,
+3958366652u, 3067277639u,
+3667516477u, 1709989541u,
+4188504038u, 59581167u,
+2725013602u, 3639843023u,
+3758739543u, 4189944477u,
+2470483982u, 877580602u,
+3252925478u, 2062343506u,
+3981838403u, 3762572073u,
+2931588131u, 3284356565u,
+1129162571u, 732225574u,
+1677744031u, 3532596884u,
+3232041815u, 1652884780u,
+3740979556u, 259034107u,
+2227121257u, 1426140634u,
+315836068u, 3200749877u,
+1386256573u, 24035717u,
+234531934u, 1115203611u,
+1598686658u, 3146815575u,
+2632963283u, 1778459926u,
+739944537u, 579625482u,
+1231665285u, 2457048126u,
+3903349120u, 389846205u,
+1052645068u, 862072556u,
+2834153464u, 1481069623u,
+1688445808u, 701920051u,
+3740748788u, 3388062747u,
+1192588249u, 1410111809u,
+2633463887u, 4050419847u,
+2513844237u, 2187968410u,
+2951683019u, 3015806005u,
+3000537321u, 479241367u,
+252167538u, 1231057113u,
+393624922u, 704325635u,
+1467197045u, 2066433573u,
+3082385053u, 735688735u,
+956434529u, 4028590195u,
+4074716319u, 813690332u,
+2124740535u, 804073145u,
+3748881891u, 3195309868u,
+841856605u, 2585865274u,
+881504822u, 3254795114u,
+1241815736u, 970796142u,
+497175391u, 3929484338u,
+4264993211u, 1835322201u,
+3675707838u, 4205965408u,
+300298607u, 3858319990u,
+3255259608u, 4247675634u,
+1095823272u, 1197245408u,
+1742785722u, 785893184u,
+1702965674u, 850401405u,
+4084891412u, 1160134629u,
+2555998391u, 1972759056u,
+710625654u, 4116162021u,
+3352753742u, 85121177u,
+3513255468u, 2487440590u,
+2480032715u, 2287747045u,
+4090178629u, 4044418876u,
+1703944517u, 486290428u,
+1515601363u, 2011102035u,
+573985957u, 3536053779u,
+4257172787u, 576405853u,
+1523550693u, 1014952061u,
+711098718u, 2425317635u,
+3460807169u, 3688987163u,
+3167371443u, 3062418115u,
+3330028292u, 1713171303u,
+526177822u, 2602636307u,
+1245357025u, 3346699703u,
+254529415u, 4017058800u,
+1829738451u, 2164236533u,
+1381258384u, 4036354071u,
+1749181924u, 4118435443u,
+4130543625u, 688472265u,
+2731071299u, 2547657502u,
+4175776103u, 338058159u,
+3729582129u, 4181845558u,
+2227290760u, 146827036u,
+2459178427u, 1025353883u,
+4284109679u, 2502815838u,
+825124804u, 2533140036u,
+616327404u, 2448966429u,
+413992636u, 2334782461u,
+2239052397u, 1082330589u,
+3381164715u, 199381437u,
+2583939798u, 2848283092u,
+2300168091u, 2156336315u,
+1855234968u, 1982110346u,
+2482046810u, 3158163887u,
+2168864636u, 133643215u,
+3904021624u, 3646514568u,
+1176127003u, 4015671361u,
+100525019u, 3534706803u,
+2045051700u, 3452457457u,
+1492267772u, 2308393828u,
+3776661467u, 3281002516u,
+4246334524u, 743955039u,
+685631442u, 1147951686u,
+2040912376u, 2911148054u,
+3204999386u, 2415262714u,
+313209105u, 777065474u,
+2729416454u, 1029284767u,
+1632078298u, 1817552554u,
+3963877000u, 1919171906u,
+3843219958u, 3073580867u,
+865146997u, 2473524405u,
+2593817617u, 3643076308u,
+617975720u, 3671562289u,
+121812599u, 2902367378u,
+2260041112u, 1019936943u,
+320945955u, 2337845588u,
+1535670711u, 773792826u,
+3152195900u, 4090794518u,
+4142587430u, 484732447u,
+419191319u, 3377973345u,
+324924679u, 2809286837u,
+1562277603u, 1378362199u,
+3791551981u, 1097806406u,
+1386297408u, 2304900033u,
+3574135531u, 4017075736u,
+1161238398u, 1358056883u,
+3487080616u, 1516736273u,
+851615042u, 2927899494u,
+4077452507u, 2984955003u,
+3907754394u, 3578173844u,
+1948409509u, 1923531348u,
+3578472493u, 3710074193u,
+213811117u, 2586632018u,
+1922589216u, 274958014u,
+1654276320u, 2687561076u,
+2569061755u, 3122046057u,
+3203802620u, 1692079268u,
+477806878u, 140587742u,
+520565830u, 3674576684u,
+91246882u, 1010215946u,
+3703994407u, 69201295u,
+776213083u, 3677771507u,
+3696902571u, 3593730713u,
+2907901228u, 3239753796u,
+1586241476u, 1939595371u,
+2268396558u, 3468719670u,
+2955715987u, 2295501078u,
+2775848696u, 1358532390u,
+3843660102u, 82177963u,
+4094477877u, 191727221u,
+278661677u, 2889101923u,
+1352525614u, 2844977667u,
+1261140657u, 1747052377u,
+2334120653u, 645125282u,
+2707230761u, 4142246789u,
+1068639717u, 2288162940u,
+1419293714u, 1636932722u,
+3252686293u, 318543902u,
+2598802768u, 2025886508u,
+2250788464u, 2711763065u,
+255108733u, 1845587644u,
+3719270134u, 3940707863u,
+917608574u, 1363253259u,
+788659330u, 673256220u,
+109793386u, 341851980u,
+2698465479u, 3011229884u,
+3886713057u, 1276595523u,
+2439962760u, 2700515456u,
+205970448u, 4198897105u,
+875511891u, 371715572u,
+1033680610u, 4278599955u,
+3120038721u, 1256300069u,
+225629455u, 3735275001u,
+3961944123u, 1769389163u,
+1074553219u, 668829411u,
+1098679359u, 2573697509u,
+1885071395u, 4233785523u,
+2513878053u, 2030193788u,
+360256231u, 107312677u,
+310517502u, 2618936366u,
+3600462351u, 1216645846u,
+2970730323u, 4278812598u,
+94638678u, 1689811113u,
+4125738800u, 3103759730u,
+103797041u, 1397772514u,
+1669653333u, 572567964u,
+1612872497u, 2986430557u,
+214990655u, 3117607990u,
+1949717207u, 2260498180u,
+1493936866u, 3554860960u,
+1582022990u, 1263709570u,
+1244120487u, 3416600761u,
+224580012u, 4252610345u,
+286306391u, 814956796u,
+1820532305u, 2776960536u,
+3082703465u, 1659265982u,
+1157398049u, 3752806924u,
+3508246460u, 2902716664u,
+2110942730u, 3267551635u,
+902835431u, 405228165u,
+2341378668u, 2220373824u,
+3303626294u, 1175118221u,
+383517064u, 896322512u,
+1697257567u, 2202820683u,
+1837689083u, 1336556841u,
+914535232u, 3634083711u,
+1537187340u, 3712582785u,
+1088201893u, 3270984620u,
+3093195926u, 2561488770u,
+1962968100u, 236189500u,
+2549435227u, 536047554u,
+422609195u, 2958815818u,
+4166184983u, 3528794619u,
+1042329086u, 3914176886u,
+1359641525u, 1197100813u,
+1269739674u, 3301844628u,
+1831223342u, 3329594980u,
+2433669782u, 494908536u,
+1441714797u, 1174785921u,
+1933050423u, 958901065u,
+868981704u, 2163330264u,
+3243110680u, 1443133429u,
+1145009669u, 2520062970u,
+3851564853u, 2664619323u,
+2686075657u, 4042710240u,
+2125408249u, 4165697916u,
+2328730865u, 3160666939u,
+588683409u, 2126275847u,
+829404209u, 1878067032u,
+2567792910u, 897670516u,
+934312076u, 2952135524u,
+504832490u, 3312698056u,
+4015478120u, 1265237690u,
+3376133707u, 967674402u,
+1553513184u, 834830418u,
+2396504772u, 3278582098u,
+2950762705u, 4277111759u,
+4159211303u, 1290097509u,
+251949572u, 3065234219u,
+1832020534u, 312136369u,
+1103404394u, 198182691u,
+1369599600u, 3906710870u,
+2954651680u, 1535115487u,
+2389327507u, 1813520230u,
+632704095u, 140762681u,
+3123202913u, 3336005523u,
+1287729497u, 2198985327u,
+2470730783u, 3821758006u,
+1009870118u, 559702706u,
+4274686257u, 3187546567u,
+2402308151u, 1096697687u,
+678932329u, 3716363135u,
+2899950405u, 3046872820u,
+3754655641u, 2021741414u,
+1993425202u, 2185339100u,
+2838253700u, 3099212100u,
+1679617763u, 3703603898u,
+1135665833u, 3559875668u,
+2503579743u, 1446869792u,
+879818611u, 3788305533u,
+2879018745u, 2719373510u,
+3606051203u, 2166567748u,
+343595772u, 1996164093u,
+1577656121u, 475248376u,
+463852893u, 2864244470u,
+1332049663u, 3326459767u,
+3207234525u, 2028708916u,
+938916154u, 3115246264u,
+3272166407u, 557660441u,
+1265684026u, 245033807u,
+2440657523u, 255451671u,
+3811885130u, 1399880284u,
+1322855877u, 3452203069u,
+1324994449u, 3796404024u,
+2002090272u, 1568745354u,
+3700047753u, 31799506u,
+3009412313u, 3184047862u,
+728680761u, 3848624873u,
+1849329144u, 3160134214u,
+1272923193u, 1474278816u,
+1208883495u, 1566527339u,
+4136466541u, 630825649u,
+1717327230u, 1496132623u,
+2449386742u, 128106940u,
+2108574735u, 2584236470u,
+2872246579u, 397338552u,
+3088905079u, 3456882941u,
+1715915153u, 2940716269u,
+4168438718u, 467441309u,
+872996731u, 3206901319u,
+1610606159u, 2540270567u,
+1301658081u, 2379410194u,
+2109315753u, 3348545480u,
+2041927873u, 2644077493u,
+546596661u, 1017047954u,
+2596792972u, 2783958892u,
+2826408201u, 3531646869u,
+2219352672u, 4217451852u,
+1806867885u, 1903578924u,
+2076465705u, 2373061493u,
+1832925325u, 241574049u,
+1509517110u, 3703614272u,
+3429894862u, 3529565564u,
+4010000614u, 2256197939u,
+517086873u, 2964595704u,
+3501035294u, 4079457298u,
+1184683823u, 4260564140u,
+2339268412u, 3871564102u,
+1572637805u, 383233885u,
+3351411126u, 3419328182u,
+2017406667u, 919677938u,
+29804156u, 46276077u,
+3032591014u, 4204155962u,
+1172319502u, 969309871u,
+2211319468u, 4153726847u,
+3094193193u, 4240669441u,
+3441709766u, 1387233546u,
+4048882438u, 1217896566u,
+1580964938u, 740563169u,
+3691850348u, 3176426539u,
+2738323042u, 2948665536u,
+1474029445u, 3513354882u,
+3219466255u, 3799363969u,
+3961796122u, 1055550923u,
+1992212097u, 2263421398u,
+4289759174u, 2516844140u,
+1782515131u, 2746577402u,
+721928440u, 3529570984u,
+1705302106u, 768287270u,
+3474902815u, 4000011125u,
+3475618043u, 212490675u,
+549130471u, 2970128275u,
+3170016833u, 2549835613u,
+3691104824u, 2694324482u,
+4169365948u, 3738062408u,
+602930397u, 2148954730u,
+2636387819u, 2616619070u,
+301617872u, 374657036u,
+3862686086u, 431292293u,
+4225245165u, 1358580562u,
+2377363130u, 1415970351u,
+3885060756u, 1438379807u,
+2297418515u, 2954777083u,
+3970368221u, 1229801760u,
+1931934525u, 2287507921u,
+1713471510u, 2145608111u,
+2650140034u, 4081586725u,
+4196863572u, 1896558394u,
+4059852729u, 1813855658u,
+2618400836u, 1396056469u,
+2375584220u, 1037031473u,
+249284003u, 2450077637u,
+1383747654u, 3122687303u,
+2664431743u, 3855028730u,
+929335420u, 3193251135u,
+137313762u, 1850894384u,
+3163711272u, 3071568023u,
+418541677u, 3621223039u,
+340274176u, 1167681812u,
+4106647531u, 4022465625u,
+3069708839u, 2704165015u,
+2332023349u, 641449034u,
+921552000u, 1712976649u,
+1876484273u, 2343049860u,
+1834682077u, 4155949943u,
+2061821157u, 4240649383u,
+747285578u, 1626463554u,
+165503115u, 359629739u,
+3838102563u, 582664250u,
+3878924635u, 4117237498u,
+2250573853u, 804336148u,
+331393443u, 4242530387u,
+3346357270u, 1674051445u,
+3348019777u, 1722242971u,
+2509017299u, 2966108111u,
+4189102509u, 3323592310u,
+2631381069u, 4014551783u,
+4250787412u, 3448394212u,
+2664752123u, 3517585534u,
+3605365141u, 1669471183u,
+2210121140u, 760762191u,
+249697459u, 3416920106u,
+16322182u, 643179562u,
+1564226597u, 2134630675u,
+1011990087u, 2990167340u,
+2349550842u, 1642428946u,
+1214854475u, 2134299399u,
+2704221532u, 2104175211u,
+4283196353u, 1342880802u,
+198529755u, 2004468390u,
+2544665755u, 853593042u,
+2090611294u, 2970943872u,
+1472073141u, 850464484u,
+1407609278u, 3062461105u,
+366448238u, 3842907484u,
+488797416u, 1432670231u,
+294963924u, 3693536939u,
+3390549825u, 1583234720u,
+4032223840u, 2318423400u,
+2965642867u, 930822729u,
+1679099863u, 1728968857u,
+900822335u, 702309817u,
+3258354115u, 1502282913u,
+2811888503u, 3924947660u,
+2477280726u, 3651607391u,
+3788310204u, 1300369123u,
+1842333726u, 4146839064u,
+2468893861u, 4091095953u,
+488595746u, 1448097974u,
+1159634090u, 1738834113u,
+2928916831u, 4093725287u,
+530850094u, 291657799u,
+3548184546u, 679517009u,
+399175380u, 2658337143u,
+3827951761u, 3086277222u,
+2067718397u, 3632376023u,
+3553313841u, 119173722u,
+1702434637u, 1766260771u,
+895654784u, 751439914u,
+4008409498u, 215917713u,
+1288382231u, 2656990891u,
+2581779077u, 1570750352u,
+2666411616u, 3533987737u,
+4289478316u, 3576119563u,
+3869794273u, 963183826u,
+2081410737u, 3796810515u,
+1036883117u, 136547246u,
+875691100u, 2592925324u,
+2689342539u, 427154472u,
+532957601u, 1228758574u,
+1908591042u, 1464255968u,
+446980910u, 2984611177u,
+3508927906u, 2001585786u,
+2544767379u, 1525438381u,
+879448844u, 1348536411u,
+4242243590u, 2861338018u,
+601175800u, 764077711u,
+530635011u, 3785343245u,
+2378297261u, 457568934u,
+76438221u, 4104954272u,
+2485968477u, 2381948487u,
+4226929450u, 3148473363u,
+879369091u, 2180270337u,
+3674375989u, 1387729170u,
+568650985u, 951677556u,
+4213877384u, 2721005055u,
+1678669911u, 66786703u,
+2273631661u, 1149351924u,
+246723096u, 1895026827u,
+3810605772u, 3711056516u,
+2080120290u, 3638638708u,
+2915672708u, 2263003308u,
+1976115991u, 3448840877u,
+2019238520u, 225333538u,
+1555273378u, 3797521928u,
+1942347150u, 3262952567u,
+2817830907u, 2078619498u,
+749534111u, 1178073973u,
+841092198u, 3288261538u,
+1696412169u, 1496966875u,
+3739946319u, 2481012988u,
+568983526u, 114945840u,
+2841706923u, 1632780103u,
+4020169654u, 2087949619u,
+833416317u, 3787017905u,
+2373238993u, 2575395164u,
+2542976862u, 2971726178u,
+2880371864u, 3642087909u,
+1043714217u, 3894199764u,
+2235879182u, 203853421u,
+834683330u, 425935223u,
+3560796393u, 3565833278u,
+3414330886u, 1748785729u,
+1023171602u, 580966986u,
+2657385925u, 2124704694u,
+233442446u, 1107045577u,
+3899097693u, 1067532701u,
+115667924u, 1406028344u,
+2419657149u, 18613994u,
+2532882091u, 3476683808u,
+895961699u, 3762914298u,
+1328752423u, 1844996900u,
+1210281744u, 904215228u,
+4055325594u, 1118521573u,
+3996647489u, 3657647605u,
+325254059u, 3136157065u,
+3341068436u, 2287683323u,
+1313073005u, 126005630u,
+853746559u, 3555092974u,
+2689238752u, 49515858u,
+61073168u, 1010661841u,
+1269521335u, 1902040126u,
+3858321250u, 1400735275u,
+2974699176u, 2771676666u,
+545726212u, 2225229957u,
+1086473152u, 3454177594u,
+2088002891u, 2883475137u,
+3222194252u, 4144472319u,
+567988835u, 1051332394u,
+3932046135u, 542648229u,
+162888005u, 1669710469u,
+1492500905u, 553041029u,
+3817492747u, 584127807u,
+4147115982u, 2993670925u,
+3509733475u, 3587959456u,
+2088550465u, 1745399498u,
+869648362u, 1404723176u,
+3947542735u, 1334333531u,
+59634866u, 3239516985u,
+3844250972u, 1275954779u,
+2512155003u, 1685649437u,
+639306006u, 2524620206u,
+576786501u, 655707039u,
+2864351838u, 3736264674u,
+1200907897u, 2384379464u,
+15823708u, 206117476u,
+1193310960u, 1093099415u,
+3696538026u, 4112584792u,
+2069527017u, 547588820u,
+4178147211u, 2827259351u,
+940846775u, 1054995047u,
+2976960697u, 1934305529u,
+2199137382u, 1005722394u,
+1875867180u, 2064356511u,
+4019734130u, 3096333006u,
+2069509024u, 2906358341u,
+2232866485u, 1456016086u,
+1422674894u, 867282151u,
+1612503136u, 1739843072u,
+134947567u, 2978775774u,
+1284167756u, 1090844589u,
+831688783u, 2079216362u,
+1626991196u, 3644714163u,
+3678110059u, 898470030u,
+3916646913u, 3182422972u,
+3630426828u, 969847973u,
+3427164640u, 3463937250u,
+3044785046u, 897322257u,
+3443872170u, 4185408854u,
+2557463241u, 4080940424u,
+2048168570u, 2429169982u,
+3174690447u, 2513494106u,
+1213061732u, 3143736628u,
+3482268149u, 1250714337u,
+31648125u, 3872383625u,
+1565760579u, 36665130u,
+751041229u, 2257179590u,
+2915361862u, 280819225u,
+2907818413u, 4254297769u,
+3493178615u, 3755944354u,
+4043533423u, 1134196225u,
+4177134659u, 127246419u,
+2442615581u, 923049607u,
+1004426206u, 782768297u,
+2410586681u, 1430106871u,
+4103323427u, 3168399477u,
+3716682375u, 3616334719u,
+3413209549u, 656672786u,
+2876965944u, 182894450u,
+456581318u, 2683752067u,
+3877875910u, 3190666241u,
+3240336907u, 4024807233u,
+1681224377u, 1576191191u,
+3599250276u, 2381111980u,
+3495321877u, 3956024585u,
+1611608524u, 3815677453u,
+2062334396u, 1656117707u,
+5457134u, 3234118251u,
+470187419u, 2688566989u,
+3259870297u, 660100446u,
+442236198u, 2542452448u,
+493137955u, 392411099u,
+947967568u, 1234595917u,
+4230082284u, 2762976773u,
+2870085764u, 1455086530u,
+2762099647u, 4011882747u,
+1215981925u, 3227517889u,
+3269061963u, 4037515364u,
+3168911474u, 4255057396u,
+2026092260u, 1736192508u,
+3909727042u, 3114708966u,
+1938800693u, 680793595u,
+1525265867u, 2808224480u,
+2122290603u, 1211197714u,
+3520488321u, 3979192396u,
+3540779343u, 4192918639u,
+2736030448u, 1120335563u,
+1698949078u, 3993310631u,
+1966048551u, 2228221363u,
+597941119u, 3498018399u,
+393987327u, 454500547u,
+1222959566u, 567151340u,
+3774764786u, 1492844524u,
+3308300614u, 805568076u,
+868414882u, 177406999u,
+1608110313u, 642061169u,
+1027515771u, 3131251981u,
+2851936150u, 4272755262u,
+1532845092u, 709643652u,
+682573592u, 1244104217u,
+796769556u, 2500467040u,
+3002618826u, 1112998535u,
+1780193104u, 1243644607u,
+3691719535u, 2958853053u,
+466635014u, 2277292580u,
+4082276003u, 1030800045u,
+1750863246u, 379050598u,
+3576413281u, 731493104u,
+132259176u, 4115195437u,
+1769890695u, 2715470335u,
+1819263183u, 2028531518u,
+2154809766u, 3672399742u,
+76727603u, 4198182186u,
+2304993586u, 1666387627u,
+284366017u, 3359785538u,
+3469807328u, 2926494787u,
+3829072836u, 2493478921u,
+3738499303u, 3311304980u,
+932916545u, 2235559063u,
+2909742396u, 1765719309u,
+1456588655u, 508290328u,
+1490719640u, 3356513470u,
+2908490783u, 251085588u,
+830410677u, 3172220325u,
+3897208579u, 1940535730u,
+151909546u, 2384458112u,
+};
+
+// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
+bool Test(int offset, int len = 0) {
+#undef Check
+#undef IsAlive
+
+#define Check(x) do { \
+ const uint32_t actual = (x), e = expected[index++]; \
+ bool ok = actual == e; \
+ if (!ok) { \
+ cerr << "expected " << hex << e << " but got " << actual << endl; \
+ ++errors; \
+ } \
+ assert(ok); \
+} while (0)
+
+#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
+
+ // After the following line is where the uses of "Check" and such will go.
+ static int index = 0;
if (offset == -1) { int alive = 0; { uint64_t h = farmhashuo::Hash64WithSeed(farm_hash_data, len++, SEED); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } { uint64_t h = farmhashuo::Hash64(farm_hash_data, len++); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } { uint64_t h = farmhashuo::Hash64(farm_hash_data, len++); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } len -= 3; return alive > 0; }
{ uint64_t h = farmhashuo::Hash64WithSeed(farm_hash_data + offset, len, SEED); Check(h >> 32); Check((h << 32) >> 32); }
{ uint64_t h = farmhashuo::Hash64(farm_hash_data + offset, len); Check(h >> 32); Check((h << 32) >> 32); }
-
- return true;
-#undef Check
-#undef IsAlive
-}
-
-int RunTest() {
- Setup();
- int i = 0;
- cout << "Running farmhashuoTest";
- if (!Test(-1)) {
- cout << "... Unavailable\n";
- return NoteErrors();
- }
- // Good. The function is attempting to hash, so run the full test.
- int errors_prior_to_test = errors;
- for ( ; i < kTestSize - 1; i++) {
- Test(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- Test(0, i);
- }
- Test(0, kDataSize);
- cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
- return NoteErrors();
-}
-
-#else
-
-// After the following line is where the code to print hash codes will go.
-void Dump(int offset, int len) {
+
+ return true;
+#undef Check
+#undef IsAlive
+}
+
+int RunTest() {
+ Setup();
+ int i = 0;
+ cout << "Running farmhashuoTest";
+ if (!Test(-1)) {
+ cout << "... Unavailable\n";
+ return NoteErrors();
+ }
+ // Good. The function is attempting to hash, so run the full test.
+ int errors_prior_to_test = errors;
+ for ( ; i < kTestSize - 1; i++) {
+ Test(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ Test(0, i);
+ }
+ Test(0, kDataSize);
+ cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
+ return NoteErrors();
+}
+
+#else
+
+// After the following line is where the code to print hash codes will go.
+void Dump(int offset, int len) {
{ uint64_t h = farmhashuo::Hash64WithSeed(farm_hash_data + offset, len, SEED); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
{ uint64_t h = farmhashuo::Hash64(farm_hash_data + offset, len); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
-}
-
-#endif
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-
-} // namespace farmhashuoTest
-
-#if !TESTING
-int main(int argc, char** argv) {
- Setup();
- cout << "uint32_t expected[] = {\n";
- int i = 0;
- for ( ; i < kTestSize - 1; i++) {
- farmhashuoTest::Dump(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- farmhashuoTest::Dump(0, i);
- }
- farmhashuoTest::Dump(0, kDataSize);
- cout << "};\n";
-}
-#endif
-#ifndef FARMHASH_SELF_TEST_GUARD
-#define FARMHASH_SELF_TEST_GUARD
-#include <cstdio>
-#include <iostream>
-#include <string.h>
-
-using std::cout;
-using std::cerr;
-using std::endl;
-using std::hex;
-
-static const uint64_t kSeed0 = 1234567;
-static const uint64_t kSeed1 = k0;
-static const int kDataSize = 1 << 20;
-static const int kTestSize = 300;
-#define kSeed128 Uint128(kSeed0, kSeed1)
-
+}
+
+#endif
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+
+} // namespace farmhashuoTest
+
+#if !TESTING
+int main(int argc, char** argv) {
+ Setup();
+ cout << "uint32_t expected[] = {\n";
+ int i = 0;
+ for ( ; i < kTestSize - 1; i++) {
+ farmhashuoTest::Dump(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ farmhashuoTest::Dump(0, i);
+ }
+ farmhashuoTest::Dump(0, kDataSize);
+ cout << "};\n";
+}
+#endif
+#ifndef FARMHASH_SELF_TEST_GUARD
+#define FARMHASH_SELF_TEST_GUARD
+#include <cstdio>
+#include <iostream>
+#include <string.h>
+
+using std::cout;
+using std::cerr;
+using std::endl;
+using std::hex;
+
+static const uint64_t kSeed0 = 1234567;
+static const uint64_t kSeed1 = k0;
+static const int kDataSize = 1 << 20;
+static const int kTestSize = 300;
+#define kSeed128 Uint128(kSeed0, kSeed1)
+
static char farm_hash_data[kDataSize];
-
-static int completed_self_tests = 0;
-static int errors = 0;
-
+
+static int completed_self_tests = 0;
+static int errors = 0;
+
// Initialize farm_hash_data to pseudorandom values.
-void Setup() {
- if (completed_self_tests == 0) {
- uint64_t a = 9;
- uint64_t b = 777;
- for (int i = 0; i < kDataSize; i++) {
- a += b;
- b += a;
- a = (a ^ (a >> 41)) * k0;
- b = (b ^ (b >> 41)) * k0 + i;
- uint8_t u = b >> 37;
+void Setup() {
+ if (completed_self_tests == 0) {
+ uint64_t a = 9;
+ uint64_t b = 777;
+ for (int i = 0; i < kDataSize; i++) {
+ a += b;
+ b += a;
+ a = (a ^ (a >> 41)) * k0;
+ b = (b ^ (b >> 41)) * k0 + i;
+ uint8_t u = b >> 37;
memcpy(farm_hash_data + i, &u, 1); // uint8_t -> char
- }
- }
-}
-
-int NoteErrors() {
-#define NUM_SELF_TESTS 9
- if (++completed_self_tests == NUM_SELF_TESTS)
- std::exit(errors > 0);
- return errors;
-}
-
-template <typename T> inline bool IsNonZero(T x) {
- return x != 0;
-}
-
-template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
- return x != Uint128(0, 0);
-}
-
-#endif // FARMHASH_SELF_TEST_GUARD
-
-namespace farmhashxoTest {
-
-uint32_t CreateSeed(int offset, int salt) {
- uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h += static_cast<uint32_t>(offset & 0xffffffff);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- h = h * c1;
- h ^= (h >> 17);
- return h;
-}
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-#define SEED CreateSeed(offset, -1)
-#define SEED0 CreateSeed(offset, 0)
-#define SEED1 CreateSeed(offset, 1)
-
-#undef TESTING
-#define TESTING 1
-#if TESTING
-uint32_t expected[] = {
-1140953930u, 861465670u,
-3277735313u, 2681724312u,
-2598464059u, 797982799u,
-890626835u, 800175912u,
-2603993599u, 921001710u,
-1410420968u, 2134990486u,
-3283896453u, 1867689945u,
-2914424215u, 2244477846u,
-255297188u, 2992121793u,
-1110588164u, 4186314283u,
-161451183u, 3943596029u,
-4019337850u, 452431531u,
-283198166u, 2741341286u,
-3379021470u, 2557197665u,
-299850021u, 2532580744u,
-452473466u, 1706958772u,
-1298374911u, 3099673830u,
-2199864459u, 3696623795u,
-236935126u, 2976578695u,
-4055299123u, 3281581178u,
-1053458494u, 1882212500u,
-2305012065u, 2169731866u,
-3456121707u, 275903667u,
-458884671u, 3033004529u,
-3058973506u, 2379411653u,
-1898235244u, 1402319660u,
-2700149065u, 2699376854u,
-147814787u, 720739346u,
-2433714046u, 4222949502u,
-4220361840u, 1712034059u,
-3425469811u, 3690733394u,
-4148372108u, 1330324210u,
-594028478u, 2921867846u,
-1635026870u, 192883107u,
-780716741u, 1728752234u,
-3280331829u, 326029180u,
-3969463346u, 1436364519u,
-393215742u, 3349570000u,
-3824583307u, 1612122221u,
-2859809759u, 3808705738u,
-1379537552u, 1646032583u,
-2233466664u, 1432476832u,
-4023053163u, 2650381482u,
-2052294713u, 3552092450u,
-1628777059u, 1499109081u,
-3476440786u, 3829307897u,
-2960536756u, 1554038301u,
-1145519619u, 3190844552u,
-2902102606u, 3600725550u,
-237495366u, 540224401u,
-65721842u, 489963606u,
-1448662590u, 397635823u,
-1596489240u, 1562872448u,
-1790705123u, 2128624475u,
-180854224u, 2604346966u,
-1435705557u, 1262831810u,
-155445229u, 1672724608u,
-1669465176u, 1341975128u,
-663607706u, 2077310004u,
-3610042449u, 1911523866u,
-1043692997u, 1454396064u,
-2563776023u, 294527927u,
-1099072299u, 1389770549u,
-703505868u, 678706990u,
-2952353448u, 2026137563u,
-3603803785u, 629449419u,
-1933894405u, 3043213226u,
-226132789u, 2489287368u,
-1552847036u, 645684964u,
-3828089804u, 3632594520u,
-187883449u, 230403464u,
-3151491850u, 3272648435u,
-3729087873u, 1303930448u,
-2002861219u, 165370827u,
-916494250u, 1230085527u,
-3103338579u, 3064290191u,
-3807265751u, 3628174014u,
-231181488u, 851743255u,
-2295806711u, 1781190011u,
-2988893883u, 1554380634u,
-1142264800u, 3667013118u,
-1968445277u, 315203929u,
-2638023604u, 2290487377u,
-732137533u, 1909203251u,
-440398219u, 1891630171u,
-1380301172u, 1498556724u,
-4072067757u, 4165088768u,
-4204318635u, 441430649u,
-3931792696u, 197618179u,
-956300927u, 914413116u,
-3010839769u, 2837339569u,
-2148126371u, 1913303225u,
-3074915312u, 3117299654u,
-4139181436u, 2993479124u,
-3178848746u, 1357272220u,
-1438494951u, 507436733u,
-667183474u, 2084369203u,
-3854939912u, 1413396341u,
-126024219u, 146044391u,
-1016656857u, 3022024459u,
-3254014218u, 429095991u,
-990500595u, 3056862311u,
-985653208u, 1718653828u,
-623071693u, 366414107u,
-1771289760u, 2293458109u,
-3047342438u, 2991127487u,
-3120876698u, 1684583131u,
-3638043310u, 1170404994u,
-863214540u, 1087193030u,
-199124911u, 520792961u,
-3169775996u, 1577421232u,
-3331828431u, 1013201099u,
-1716848157u, 4033596884u,
-1770708857u, 4229339322u,
-1146169032u, 1434258493u,
-3824360466u, 3242407770u,
-1926419493u, 2649785113u,
-872586426u, 762243036u,
-2736953692u, 816692935u,
-1571283333u, 3555213933u,
-2266795890u, 3781899767u,
-4290630595u, 517646945u,
-3006163611u, 2180594090u,
-959214578u, 558910384u,
-1283799121u, 3047062993u,
-3830962609u, 2391606125u,
-3544509313u, 622325861u,
-834785312u, 382936554u,
-1421463872u, 788479970u,
-1825135056u, 2725923798u,
-580988377u, 2826990641u,
-247825043u, 3167748333u,
-812546227u, 2506885666u,
-2584372201u, 1758123094u,
-1891789696u, 389974094u,
-345313518u, 2022370576u,
-3886113119u, 3338548567u,
-1083486947u, 2583576230u,
-1776047957u, 1771384107u,
-3604937815u, 3198590202u,
-3027522813u, 4155628142u,
-4232136669u, 427759438u,
-4244322689u, 542201663u,
-1549591985u, 2856634168u,
-556609672u, 45845311u,
-1175961330u, 3948351189u,
-4165739882u, 4194218315u,
-1634635545u, 4151937410u,
-713127376u, 1467786451u,
-1327394015u, 2743592929u,
-2638154051u, 810082938u,
-3077742128u, 1062268187u,
-4084325664u, 3810665822u,
-3735739145u, 2794294783u,
-2335576331u, 2560479831u,
-690240711u, 997658837u,
-2442302747u, 3948961926u,
-3958366652u, 3067277639u,
-2059157774u, 1211737169u,
-1516711748u, 2339636583u,
-4188504038u, 59581167u,
-2767897792u, 1389679610u,
-2658147000u, 2643979752u,
-3758739543u, 4189944477u,
-1454470782u, 100876854u,
-2995362413u, 118817200u,
-3252925478u, 2062343506u,
-2804483644u, 3088828656u,
-1231633714u, 4168280671u,
-2931588131u, 3284356565u,
-1255909792u, 3130054947u,
-4173605289u, 1407328702u,
-1677744031u, 3532596884u,
-3162657845u, 3887208531u,
-2256541290u, 3459463480u,
-3740979556u, 259034107u,
-392987633u, 3233195759u,
-3606709555u, 3424793077u,
-315836068u, 3200749877u,
-4065431359u, 760633989u,
-2982018998u, 1811050648u,
-234531934u, 1115203611u,
-3897494162u, 1516407838u,
-1603559457u, 323296368u,
-2632963283u, 1778459926u,
-2879836826u, 2146672889u,
-3486330348u, 492621815u,
-1231665285u, 2457048126u,
-3438440082u, 2217471853u,
-3355404249u, 3275550588u,
-1052645068u, 862072556u,
-4110617119u, 3745267835u,
-2657392572u, 4279236653u,
-1688445808u, 701920051u,
-956734128u, 581695350u,
-3157862788u, 2585726058u,
-1192588249u, 1410111809u,
-1651193125u, 3326135446u,
-1073280453u, 97376972u,
-2513844237u, 2187968410u,
-3976859649u, 4267859263u,
-3429034542u, 564493077u,
-3000537321u, 479241367u,
-3845637831u, 2868987960u,
-51544337u, 1029173765u,
-393624922u, 704325635u,
-2357610553u, 1418509533u,
-2007814586u, 3866658271u,
-3082385053u, 735688735u,
-916110004u, 3283299459u,
-1051684175u, 1083796807u,
-4074716319u, 813690332u,
-144264390u, 1439630796u,
-1508556987u, 675582689u,
-3748881891u, 3195309868u,
-362884708u, 1616408198u,
-43233176u, 837301135u,
-881504822u, 3254795114u,
-1385506591u, 2799925823u,
-1469874582u, 3464841997u,
-497175391u, 3929484338u,
-3975771289u, 1798536177u,
-2926265846u, 1374242438u,
-3675707838u, 4205965408u,
-3153165629u, 1499475160u,
-187287713u, 548490821u,
-3255259608u, 4247675634u,
-1940181471u, 3779953975u,
-687167150u, 2319566715u,
-1742785722u, 785893184u,
-2296977392u, 2778575413u,
-1794720651u, 48131484u,
-4084891412u, 1160134629u,
-3737623280u, 823113169u,
-3423207646u, 3803213486u,
-710625654u, 4116162021u,
-3693420287u, 4167766971u,
-1666602807u, 295320990u,
-3513255468u, 2487440590u,
-234080704u, 4004655503u,
-2971762528u, 1479656873u,
-4090178629u, 4044418876u,
-391947536u, 1462554406u,
-3909295855u, 1239580330u,
-1515601363u, 2011102035u,
-1442068334u, 4265993528u,
-1191921695u, 2291355695u,
-4257172787u, 576405853u,
-314332944u, 4038839101u,
-55559918u, 2378985842u,
-711098718u, 2425317635u,
-1644327317u, 1401013391u,
-4193760037u, 2958260436u,
-3167371443u, 3062418115u,
-3800755475u, 3167030094u,
-3489648204u, 1405430357u,
-526177822u, 2602636307u,
-915406019u, 4264167741u,
-1484090483u, 3070944737u,
-254529415u, 4017058800u,
-1702710265u, 1029665228u,
-2000382906u, 3185573940u,
-1381258384u, 4036354071u,
-2900841028u, 2670703363u,
-2921748807u, 2899069938u,
-4130543625u, 688472265u,
-4186808827u, 1054670286u,
-1132985391u, 2840525968u,
-4175776103u, 338058159u,
-1735964501u, 1539305024u,
-3497121710u, 1568260669u,
-2227290760u, 146827036u,
-3977176001u, 4060134777u,
-857488494u, 250055052u,
-4284109679u, 2502815838u,
-2592281721u, 1603444633u,
-1390562014u, 1556658131u,
-616327404u, 2448966429u,
-3051191726u, 3891353218u,
-1213304082u, 762328245u,
-2239052397u, 1082330589u,
-2455957292u, 201837927u,
-405397452u, 3079886794u,
-2583939798u, 2848283092u,
-3750724631u, 883849006u,
-3204198988u, 3341327098u,
-1855234968u, 1982110346u,
-1485529487u, 541496720u,
-4117290321u, 3607433551u,
-2168864636u, 133643215u,
-1055817409u, 3847827123u,
-2960769387u, 4046101649u,
-1176127003u, 4015671361u,
-4243643405u, 2849988118u,
-517111221u, 1796672358u,
-2045051700u, 3452457457u,
-2948254999u, 2102063419u,
-1556410577u, 1536380876u,
-3776661467u, 3281002516u,
-1735616066u, 1539151988u,
-1087795162u, 3332431596u,
-685631442u, 1147951686u,
-95237878u, 2005032160u,
-4012206915u, 4224354805u,
-3204999386u, 2415262714u,
-1433635018u, 116647396u,
-83167836u, 2881562655u,
-2729416454u, 1029284767u,
-881378302u, 2159170082u,
-555057366u, 1169104445u,
-3963877000u, 1919171906u,
-336034862u, 2017579106u,
-4059340529u, 3020819343u,
-865146997u, 2473524405u,
-944743644u, 1694443528u,
-1804513294u, 2904752429u,
-617975720u, 3671562289u,
-260177668u, 505662155u,
-1885941445u, 2504509403u,
-2260041112u, 1019936943u,
-3722741628u, 1511077569u,
-3100701179u, 1379422864u,
-1535670711u, 773792826u,
-1103819072u, 2089123665u,
-1157547425u, 329152940u,
-4142587430u, 484732447u,
-2475035432u, 1120017626u,
-412145504u, 965125959u,
-324924679u, 2809286837u,
-2842141483u, 4029205195u,
-2974306813u, 515627448u,
-3791551981u, 1097806406u,
-3873078673u, 136118734u,
-1872130856u, 3632422367u,
-3574135531u, 4017075736u,
-1699452298u, 1403506686u,
-344414660u, 1189129691u,
-3487080616u, 1516736273u,
-1805475756u, 2562064338u,
-163335594u, 2732147834u,
-4077452507u, 2984955003u,
-4271866024u, 3071338162u,
-2347111903u, 873829983u,
-1948409509u, 1923531348u,
-459509140u, 771592405u,
-1750124750u, 2334938333u,
-213811117u, 2586632018u,
-185232757u, 4032960199u,
-2447383637u, 284777551u,
-1654276320u, 2687561076u,
-3512945009u, 308584855u,
-1861027147u, 4102279334u,
-3203802620u, 1692079268u,
-4250142168u, 2565680167u,
-1507046104u, 841195925u,
-520565830u, 3674576684u,
-38924274u, 3770488806u,
-2414430882u, 3978473838u,
-3703994407u, 69201295u,
-3099963860u, 1255084262u,
-690971838u, 3539996781u,
-3696902571u, 3593730713u,
-2363435042u, 54945052u,
-1785765213u, 184911581u,
-1586241476u, 1939595371u,
-2534883189u, 2432427547u,
-2374171993u, 2039128933u,
-2955715987u, 2295501078u,
-2741583197u, 1280920000u,
-686818699u, 1238742497u,
-3843660102u, 82177963u,
-1281043691u, 1121403845u,
-1697846708u, 284852964u,
-278661677u, 2889101923u,
-2127558730u, 713121337u,
-872502474u, 511142139u,
-1261140657u, 1747052377u,
-2108187161u, 927011680u,
-955328267u, 3821994995u,
-2707230761u, 4142246789u,
-4134691985u, 1958963937u,
-2498463509u, 1977988705u,
-1419293714u, 1636932722u,
-2567532373u, 4075249328u,
-240575705u, 1956681213u,
-2598802768u, 2025886508u,
-4104757832u, 3026358429u,
-3242615202u, 4026813725u,
-255108733u, 1845587644u,
-3573008472u, 3615577014u,
-1222733548u, 1205557630u,
-917608574u, 1363253259u,
-1541946015u, 3087190425u,
-1138008081u, 1444019663u,
-109793386u, 341851980u,
-857839960u, 2515339233u,
-156283211u, 1906768669u,
-3886713057u, 1276595523u,
-2809830736u, 460237542u,
-3420452099u, 142985419u,
-205970448u, 4198897105u,
-1950698961u, 2069753399u,
-1142216925u, 1113051162u,
-1033680610u, 4278599955u,
-1106466069u, 356742959u,
-531521052u, 3494863964u,
-225629455u, 3735275001u,
-3662626864u, 1750561299u,
-1012864651u, 2101846429u,
-1074553219u, 668829411u,
-992181339u, 3384018814u,
-3330664522u, 860966321u,
-1885071395u, 4233785523u,
-100741310u, 451656820u,
-2148187612u, 1063001151u,
-360256231u, 107312677u,
-3650357479u, 2390172694u,
-22452685u, 237319043u,
-3600462351u, 1216645846u,
-2088767754u, 164402616u,
-2418980170u, 926137824u,
-94638678u, 1689811113u,
-2751052984u, 1767810825u,
-271289013u, 3896132233u,
-103797041u, 1397772514u,
-3441135892u, 3323383489u,
-2491268371u, 1662561885u,
-1612872497u, 2986430557u,
-2756998822u, 207428029u,
-937973965u, 2791656726u,
-1949717207u, 2260498180u,
-2648427775u, 2360400900u,
-2080496169u, 486358863u,
-1582022990u, 1263709570u,
-1396468647u, 1377764574u,
-363008508u, 1293502429u,
-224580012u, 4252610345u,
-1435134775u, 1099809675u,
-533671980u, 1533438766u,
-1820532305u, 2776960536u,
-3374512975u, 3542220540u,
-822810075u, 3716663290u,
-1157398049u, 3752806924u,
-4081637863u, 337070226u,
-3866585976u, 359270190u,
-2110942730u, 3267551635u,
-644850146u, 1306761320u,
-746972907u, 934259457u,
-2341378668u, 2220373824u,
-1242645122u, 4109252858u,
-1625266099u, 1173698481u,
-383517064u, 896322512u,
-3377483696u, 1788337208u,
-455496839u, 3194373887u,
-1837689083u, 1336556841u,
-1658628529u, 2911512007u,
-3838343487u, 2757664765u,
-1537187340u, 3712582785u,
-367022558u, 3071359622u,
-3926147070u, 35432879u,
-3093195926u, 2561488770u,
-4273132307u, 3898950547u,
-2838251049u, 2103926083u,
-2549435227u, 536047554u,
-1858986613u, 2040551642u,
-1147412575u, 1972369852u,
-4166184983u, 3528794619u,
-4077477194u, 3565689036u,
-808048238u, 3826350461u,
-1359641525u, 1197100813u,
-265993036u, 1864569342u,
-725164342u, 2264788336u,
-1831223342u, 3329594980u,
-923017956u, 490608221u,
-3818634478u, 258154469u,
-1441714797u, 1174785921u,
-3833372385u, 3287246572u,
-1677395563u, 3569218731u,
-868981704u, 2163330264u,
-2649450292u, 500120236u,
-465161780u, 746438382u,
-1145009669u, 2520062970u,
-2810524030u, 1561519055u,
-1479878006u, 3864969305u,
-2686075657u, 4042710240u,
-3224066062u, 2774151984u,
-2226179547u, 1643626042u,
-2328730865u, 3160666939u,
-2107011431u, 96459446u,
-3920328742u, 3336407558u,
-829404209u, 1878067032u,
-1235983679u, 4237425634u,
-466519055u, 3870676863u,
-934312076u, 2952135524u,
-276949224u, 4100839753u,
-424001484u, 1955120893u,
-4015478120u, 1265237690u,
-427484362u, 4246879223u,
-3452969617u, 1724363362u,
-1553513184u, 834830418u,
-1858777639u, 3476334357u,
-4144030366u, 2450047160u,
-2950762705u, 4277111759u,
-358032121u, 2511026735u,
-167923105u, 2059208280u,
-251949572u, 3065234219u,
-1535473864u, 556796152u,
-1513237478u, 3150857516u,
-1103404394u, 198182691u,
-1476438092u, 2913077464u,
-207119516u, 3963810232u,
-2954651680u, 1535115487u,
-3051522276u, 4046477658u,
-917804636u, 864395565u,
-632704095u, 140762681u,
-1802040304u, 990407433u,
-3771506212u, 4106024923u,
-1287729497u, 2198985327u,
-4052924496u, 2926590471u,
-3084557148u, 1472898694u,
-1009870118u, 559702706u,
-4265214507u, 82077489u,
-3067891003u, 3295678907u,
-2402308151u, 1096697687u,
-464407878u, 4190838199u,
-4269578403u, 3060919438u,
-2899950405u, 3046872820u,
-733509243u, 1583801700u,
-40453902u, 3879773881u,
-1993425202u, 2185339100u,
-1877837196u, 3912423882u,
-3293122640u, 4104318469u,
-1679617763u, 3703603898u,
-8759461u, 2540185277u,
-1152198475u, 2038345882u,
-2503579743u, 1446869792u,
-2019419351u, 4051584612u,
-3178289407u, 3992503830u,
-2879018745u, 2719373510u,
-700836153u, 1675560450u,
-4121245793u, 2064715719u,
-343595772u, 1996164093u,
-3130433948u, 405251683u,
-2804817126u, 1607133689u,
-463852893u, 2864244470u,
-2224044848u, 4071581802u,
-2537107938u, 2246347953u,
-3207234525u, 2028708916u,
-2272418128u, 803575837u,
-38655481u, 2170452091u,
-3272166407u, 557660441u,
-4019147902u, 3841480082u,
-298459606u, 2600943364u,
-2440657523u, 255451671u,
-3424361375u, 779434428u,
-3088526123u, 490671625u,
-1322855877u, 3452203069u,
-3057021940u, 2285701422u,
-2014993457u, 2390431709u,
-2002090272u, 1568745354u,
-1783152480u, 823305654u,
-4053862835u, 2200236540u,
-3009412313u, 3184047862u,
-3032187389u, 4159715581u,
-2966902888u, 252986948u,
-1849329144u, 3160134214u,
-3420960112u, 3198900547u,
-749160960u, 379139040u,
-1208883495u, 1566527339u,
-3006227299u, 4194096960u,
-556075248u, 497404038u,
-1717327230u, 1496132623u,
-1775955687u, 1719108984u,
-1014328900u, 4189966956u,
-2108574735u, 2584236470u,
-684087286u, 531310503u,
-4264509527u, 773405691u,
-3088905079u, 3456882941u,
-3105682208u, 3382290593u,
-2289363624u, 3296306400u,
-4168438718u, 467441309u,
-777173623u, 3241407531u,
-1183994815u, 1132983260u,
-1610606159u, 2540270567u,
-2649684057u, 1397502982u,
-146657385u, 3318434267u,
-2109315753u, 3348545480u,
-3193669211u, 811750340u,
-1073256162u, 3571673088u,
-546596661u, 1017047954u,
-3403136990u, 2540585554u,
-1477047647u, 4145867423u,
-2826408201u, 3531646869u,
-784952939u, 943914610u,
-2717443875u, 3657384638u,
-1806867885u, 1903578924u,
-3985088434u, 1911188923u,
-1764002686u, 3672748083u,
-1832925325u, 241574049u,
-519948041u, 3181425568u,
-2939747257u, 1634174593u,
-3429894862u, 3529565564u,
-1089679033u, 240953857u,
-2025369941u, 2695166650u,
-517086873u, 2964595704u,
-3017658263u, 3828377737u,
-2144895011u, 994799311u,
-1184683823u, 4260564140u,
-308018483u, 4262383425u,
-1374752558u, 3431057723u,
-1572637805u, 383233885u,
-3188015819u, 4051263539u,
-233319221u, 3794788167u,
-2017406667u, 919677938u,
-4074952232u, 1683612329u,
-4213676186u, 327142514u,
-3032591014u, 4204155962u,
-206775997u, 2283918569u,
-2395147154u, 3427505379u,
-2211319468u, 4153726847u,
-2217060665u, 350160869u,
-2493667051u, 1648200185u,
-3441709766u, 1387233546u,
-140980u, 1891558063u,
-760080239u, 2088061981u,
-1580964938u, 740563169u,
-422986366u, 330624974u,
-4264507722u, 150928357u,
-2738323042u, 2948665536u,
-918718096u, 376390582u,
-3966098971u, 717653678u,
-3219466255u, 3799363969u,
-3424344721u, 3187805406u,
-375347278u, 3490350144u,
-1992212097u, 2263421398u,
-3855037968u, 1928519266u,
-3866327955u, 1129127000u,
-1782515131u, 2746577402u,
-3059200728u, 2108753646u,
-2738070963u, 1336849395u,
-1705302106u, 768287270u,
-1343511943u, 2247006571u,
-1956142255u, 1780259453u,
-3475618043u, 212490675u,
-622521957u, 917121602u,
-1852992332u, 1267987847u,
-3170016833u, 2549835613u,
-3299763344u, 2864033668u,
-3378768767u, 1236609378u,
-4169365948u, 3738062408u,
-2661022773u, 2006922227u,
-2760592161u, 3828932355u,
-2636387819u, 2616619070u,
-1237256330u, 3449066284u,
-2871755260u, 3729280948u,
-3862686086u, 431292293u,
-3285899651u, 786322314u,
-2531158535u, 724901242u,
-2377363130u, 1415970351u,
-1244759631u, 3263135197u,
-965248856u, 174024139u,
-2297418515u, 2954777083u,
-987586766u, 3206261120u,
-4059515114u, 3903854066u,
-1931934525u, 2287507921u,
-1827135136u, 1781944746u,
-574617451u, 2299034788u,
-2650140034u, 4081586725u,
-2482286699u, 1109175923u,
-458483596u, 618705848u,
-4059852729u, 1813855658u,
-4190721328u, 1129462471u,
-4089998050u, 3575732749u,
-2375584220u, 1037031473u,
-1623777358u, 3389003793u,
-546597541u, 352770237u,
-1383747654u, 3122687303u,
-1646071378u, 1164309901u,
-290870767u, 830691298u,
-929335420u, 3193251135u,
-989577914u, 3626554867u,
-591974737u, 3996958215u,
-3163711272u, 3071568023u,
-1516846461u, 3656006011u,
-2698625268u, 2510865430u,
-340274176u, 1167681812u,
-3698796465u, 3155218919u,
-4102288238u, 1673474350u,
-3069708839u, 2704165015u,
-1237411891u, 1854985978u,
-3646837503u, 3625406022u,
-921552000u, 1712976649u,
-3939149151u, 878608872u,
-3406359248u, 1068844551u,
-1834682077u, 4155949943u,
-2437686324u, 3163786257u,
-2645117577u, 1988168803u,
-747285578u, 1626463554u,
-1235300371u, 1256485167u,
-1914142538u, 4141546431u,
-3838102563u, 582664250u,
-1883344352u, 2083771672u,
-2611657933u, 2139079047u,
-2250573853u, 804336148u,
-3066325351u, 2770847216u,
-4275641370u, 1455750577u,
-3346357270u, 1674051445u,
-601221482u, 3992583643u,
-1402445097u, 3622527604u,
-2509017299u, 2966108111u,
-2557027816u, 900741486u,
-1790771021u, 2912643797u,
-2631381069u, 4014551783u,
-90375300u, 300318232u,
-3269968032u, 2679371729u,
-2664752123u, 3517585534u,
-3253901179u, 542270815u,
-1188641600u, 365479232u,
-2210121140u, 760762191u,
-1273768482u, 1216399252u,
-3484324231u, 4287337666u,
-16322182u, 643179562u,
-325675502u, 3652676161u,
-3120716054u, 3330259752u,
-1011990087u, 2990167340u,
-1097584090u, 3262252593u,
-1829409951u, 3665087267u,
-1214854475u, 2134299399u,
-3704419305u, 411263051u,
-1625446136u, 549838529u,
-4283196353u, 1342880802u,
-3460621305u, 1967599860u,
-4282843369u, 1275671016u,
-2544665755u, 853593042u,
-901109753u, 2682611693u,
-110631633u, 797487791u,
-1472073141u, 850464484u,
-797089608u, 3286110054u,
-350397471u, 2775631060u,
-366448238u, 3842907484u,
-2219863904u, 3623364733u,
-1850985302u, 4009616991u,
-294963924u, 3693536939u,
-3061255808u, 1615375832u,
-1920066675u, 4113028420u,
-4032223840u, 2318423400u,
-2701956286u, 4145497671u,
-3991532344u, 2536338351u,
-1679099863u, 1728968857u,
-449740816u, 2686506989u,
-685242457u, 97590863u,
-3258354115u, 1502282913u,
-1235084019u, 2151665147u,
-528459289u, 231097464u,
-2477280726u, 3651607391u,
-2091754612u, 1178454681u,
-980597335u, 1604483865u,
-1842333726u, 4146839064u,
-3213794286u, 2601416506u,
-754220096u, 3571436033u,
-488595746u, 1448097974u,
-4004834921u, 238887261u,
-3320337489u, 1416989070u,
-2928916831u, 4093725287u,
-186020771u, 2367569534u,
-3046087671u, 4090084518u,
-3548184546u, 679517009u,
-1962659444u, 3539886328u,
-4192003933u, 1678423485u,
-3827951761u, 3086277222u,
-2144472852u, 1390394371u,
-2976322029u, 1574517163u,
-3553313841u, 119173722u,
-1702434637u, 1766260771u,
-3629581771u, 1407497759u,
-895654784u, 751439914u,
-4008409498u, 215917713u,
-1482103833u, 695551833u,
-1288382231u, 2656990891u,
-2581779077u, 1570750352u,
-3710689053u, 1741390464u,
-2666411616u, 3533987737u,
-4289478316u, 3576119563u,
-4118694920u, 108199666u,
-3869794273u, 963183826u,
-2081410737u, 3796810515u,
-791123882u, 2525792704u,
-1036883117u, 136547246u,
-875691100u, 2592925324u,
-614302599u, 3013176417u,
-2689342539u, 427154472u,
-532957601u, 1228758574u,
-1898117151u, 1181643858u,
-1908591042u, 1464255968u,
-446980910u, 2984611177u,
-58509511u, 1046943619u,
-3508927906u, 2001585786u,
-2544767379u, 1525438381u,
-552181222u, 1959725830u,
-879448844u, 1348536411u,
-4242243590u, 2861338018u,
-1082052441u, 1034351453u,
-601175800u, 764077711u,
-530635011u, 3785343245u,
-2178026726u, 117256687u,
-2378297261u, 457568934u,
-76438221u, 4104954272u,
-956793873u, 3783168634u,
-2485968477u, 2381948487u,
-4226929450u, 3148473363u,
-2518273601u, 3569490233u,
-879369091u, 2180270337u,
-3674375989u, 1387729170u,
-977997984u, 4270646856u,
-568650985u, 951677556u,
-4213877384u, 2721005055u,
-1073364549u, 2563403831u,
-1678669911u, 66786703u,
-2273631661u, 1149351924u,
-3651298990u, 1581883443u,
-246723096u, 1895026827u,
-3810605772u, 3711056516u,
-4058833288u, 2193790614u,
-2080120290u, 3638638708u,
-2915672708u, 2263003308u,
-2361934197u, 4136767460u,
-1976115991u, 3448840877u,
-2019238520u, 225333538u,
-874340815u, 2976159827u,
-1555273378u, 3797521928u,
-1942347150u, 3262952567u,
-435997738u, 340403353u,
-2817830907u, 2078619498u,
-749534111u, 1178073973u,
-894654712u, 3361226032u,
-841092198u, 3288261538u,
-1696412169u, 1496966875u,
-697501571u, 1059158875u,
-3739946319u, 2481012988u,
-568983526u, 114945840u,
-1559249010u, 2218244008u,
-2841706923u, 1632780103u,
-4020169654u, 2087949619u,
-2438736103u, 24032648u,
-833416317u, 3787017905u,
-2373238993u, 2575395164u,
-3434544481u, 3228481067u,
-2542976862u, 2971726178u,
-2880371864u, 3642087909u,
-2407477975u, 2239080836u,
-1043714217u, 3894199764u,
-2235879182u, 203853421u,
-2933669448u, 2504940536u,
-834683330u, 425935223u,
-3560796393u, 3565833278u,
-1668000829u, 3683399154u,
-3414330886u, 1748785729u,
-1023171602u, 580966986u,
-2531038985u, 3227325488u,
-2657385925u, 2124704694u,
-233442446u, 1107045577u,
-3407293834u, 552770757u,
-3899097693u, 1067532701u,
-115667924u, 1406028344u,
-1707768231u, 3724015962u,
-2419657149u, 18613994u,
-2532882091u, 3476683808u,
-1560838678u, 811220224u,
-895961699u, 3762914298u,
-1328752423u, 1844996900u,
-1420427894u, 1848067707u,
-1210281744u, 904215228u,
-4055325594u, 1118521573u,
-2496554183u, 2579259919u,
-3996647489u, 3657647605u,
-325254059u, 3136157065u,
-3951522674u, 4052925250u,
-3341068436u, 2287683323u,
-1313073005u, 126005630u,
-2505120084u, 1194725057u,
-853746559u, 3555092974u,
-2689238752u, 49515858u,
-1244776042u, 1069300695u,
-61073168u, 1010661841u,
-1269521335u, 1902040126u,
-990632502u, 2378708922u,
-3858321250u, 1400735275u,
-2974699176u, 2771676666u,
-170995186u, 2877798589u,
-545726212u, 2225229957u,
-1086473152u, 3454177594u,
-3859483262u, 1499729584u,
-2088002891u, 2883475137u,
-3222194252u, 4144472319u,
-2212229854u, 4146740722u,
-567988835u, 1051332394u,
-3932046135u, 542648229u,
-3017852446u, 1277887997u,
-162888005u, 1669710469u,
-1492500905u, 553041029u,
-1434876932u, 533989516u,
-3817492747u, 584127807u,
-4147115982u, 2993670925u,
-4020312558u, 710021255u,
-3509733475u, 3587959456u,
-2088550465u, 1745399498u,
-2952242967u, 1259815443u,
-869648362u, 1404723176u,
-3947542735u, 1334333531u,
-3873471582u, 229399758u,
-59634866u, 3239516985u,
-3844250972u, 1275954779u,
-1385684948u, 2243700741u,
-2512155003u, 1685649437u,
-639306006u, 2524620206u,
-955360345u, 1646776457u,
-576786501u, 655707039u,
-2864351838u, 3736264674u,
-655621239u, 362070173u,
-1200907897u, 2384379464u,
-15823708u, 206117476u,
-3652870937u, 122927134u,
-1193310960u, 1093099415u,
-3696538026u, 4112584792u,
-1834541277u, 845639252u,
-2069527017u, 547588820u,
-4178147211u, 2827259351u,
-1764455305u, 3312003602u,
-940846775u, 1054995047u,
-2976960697u, 1934305529u,
-3095615046u, 3354962706u,
-2199137382u, 1005722394u,
-1875867180u, 2064356511u,
-3363633633u, 2688499147u,
-4019734130u, 3096333006u,
-2069509024u, 2906358341u,
-3247463123u, 4191788132u,
-2232866485u, 1456016086u,
-1422674894u, 867282151u,
-1851386407u, 1268304058u,
-1612503136u, 1739843072u,
-134947567u, 2978775774u,
-2051592101u, 1017127033u,
-1284167756u, 1090844589u,
-831688783u, 2079216362u,
-2079309682u, 1950585801u,
-1626991196u, 3644714163u,
-3678110059u, 898470030u,
-1117570988u, 2517572125u,
-3916646913u, 3182422972u,
-3630426828u, 969847973u,
-2835126238u, 53541366u,
-3427164640u, 3463937250u,
-3044785046u, 897322257u,
-103038235u, 3804506837u,
-3443872170u, 4185408854u,
-2557463241u, 4080940424u,
-3669923099u, 2789619871u,
-2048168570u, 2429169982u,
-3174690447u, 2513494106u,
-3099587829u, 2627855577u,
-1213061732u, 3143736628u,
-3482268149u, 1250714337u,
-3553412672u, 2689632914u,
-31648125u, 3872383625u,
-1565760579u, 36665130u,
-1282106920u, 359361724u,
-751041229u, 2257179590u,
-2915361862u, 280819225u,
-954406473u, 4101682199u,
-2907818413u, 4254297769u,
-3493178615u, 3755944354u,
-3539557658u, 3330196096u,
-4043533423u, 1134196225u,
-4177134659u, 127246419u,
-4213770762u, 1978302978u,
-2442615581u, 923049607u,
-1004426206u, 782768297u,
-2702745496u, 1880389457u,
-2410586681u, 1430106871u,
-4103323427u, 3168399477u,
-201787012u, 3105353527u,
-3716682375u, 3616334719u,
-3413209549u, 656672786u,
-526032790u, 2895072131u,
-2876965944u, 182894450u,
-456581318u, 2683752067u,
-1287916294u, 1270745752u,
-3877875910u, 3190666241u,
-3240336907u, 4024807233u,
-4227999465u, 2389301430u,
-1681224377u, 1576191191u,
-3599250276u, 2381111980u,
-3995044500u, 995595530u,
-3495321877u, 3956024585u,
-1611608524u, 3815677453u,
-1520987487u, 3669102590u,
-2062334396u, 1656117707u,
-5457134u, 3234118251u,
-4242065111u, 596879987u,
-470187419u, 2688566989u,
-3259870297u, 660100446u,
-1042378442u, 2206034096u,
-442236198u, 2542452448u,
-493137955u, 392411099u,
-3111186954u, 438250493u,
-947967568u, 1234595917u,
-4230082284u, 2762976773u,
-421203727u, 3728409592u,
-2870085764u, 1455086530u,
-2762099647u, 4011882747u,
-1785430706u, 3684427488u,
-1215981925u, 3227517889u,
-3269061963u, 4037515364u,
-1749401388u, 2167451566u,
-3168911474u, 4255057396u,
-2026092260u, 1736192508u,
-4123254745u, 2319366806u,
-3909727042u, 3114708966u,
-1938800693u, 680793595u,
-3933041672u, 616863613u,
-1525265867u, 2808224480u,
-2122290603u, 1211197714u,
-1186177814u, 2395325006u,
-3520488321u, 3979192396u,
-3540779343u, 4192918639u,
-1763872074u, 3402419930u,
-2736030448u, 1120335563u,
-1698949078u, 3993310631u,
-2947659998u, 1461045789u,
-1966048551u, 2228221363u,
-597941119u, 3498018399u,
-1441110751u, 2229999711u,
-393987327u, 454500547u,
-1222959566u, 567151340u,
-2496952483u, 1708770195u,
-3774764786u, 1492844524u,
-3308300614u, 805568076u,
-4068812294u, 3404648243u,
-868414882u, 177406999u,
-1608110313u, 642061169u,
-2093999089u, 222470301u,
-1027515771u, 3131251981u,
-2851936150u, 4272755262u,
-2763002551u, 1881527822u,
-1532845092u, 709643652u,
-682573592u, 1244104217u,
-440905170u, 1111321746u,
-796769556u, 2500467040u,
-3002618826u, 1112998535u,
-1188525643u, 4212674512u,
-1780193104u, 1243644607u,
-3691719535u, 2958853053u,
-2813437721u, 4036584207u,
-466635014u, 2277292580u,
-4082276003u, 1030800045u,
-1899531424u, 609466946u,
-1750863246u, 379050598u,
-3576413281u, 731493104u,
-2707384133u, 2289193651u,
-132259176u, 4115195437u,
-1769890695u, 2715470335u,
-3348954692u, 2166575624u,
-1819263183u, 2028531518u,
-2154809766u, 3672399742u,
-1142139448u, 88299682u,
-76727603u, 4198182186u,
-2304993586u, 1666387627u,
-2488475423u, 3832777692u,
-284366017u, 3359785538u,
-3469807328u, 2926494787u,
-1914195188u, 1134129972u,
-3829072836u, 2493478921u,
-3738499303u, 3311304980u,
-726951526u, 911080963u,
-932916545u, 2235559063u,
-2909742396u, 1765719309u,
-465269850u, 3803621553u,
-1456588655u, 508290328u,
-1490719640u, 3356513470u,
-2262196163u, 1451774941u,
-2908490783u, 251085588u,
-830410677u, 3172220325u,
-4039692645u, 1383603170u,
-3897208579u, 1940535730u,
-151909546u, 2384458112u,
-};
-
-// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
-bool Test(int offset, int len = 0) {
-#undef Check
-#undef IsAlive
-
-#define Check(x) do { \
- const uint32_t actual = (x), e = expected[index++]; \
- bool ok = actual == e; \
- if (!ok) { \
- cerr << "expected " << hex << e << " but got " << actual << endl; \
- ++errors; \
- } \
- assert(ok); \
-} while (0)
-
-#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
-
- // After the following line is where the uses of "Check" and such will go.
- static int index = 0;
+ }
+ }
+}
+
+int NoteErrors() {
+#define NUM_SELF_TESTS 9
+ if (++completed_self_tests == NUM_SELF_TESTS)
+ std::exit(errors > 0);
+ return errors;
+}
+
+template <typename T> inline bool IsNonZero(T x) {
+ return x != 0;
+}
+
+template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
+ return x != Uint128(0, 0);
+}
+
+#endif // FARMHASH_SELF_TEST_GUARD
+
+namespace farmhashxoTest {
+
+uint32_t CreateSeed(int offset, int salt) {
+ uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h += static_cast<uint32_t>(offset & 0xffffffff);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ h = h * c1;
+ h ^= (h >> 17);
+ return h;
+}
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+#define SEED CreateSeed(offset, -1)
+#define SEED0 CreateSeed(offset, 0)
+#define SEED1 CreateSeed(offset, 1)
+
+#undef TESTING
+#define TESTING 1
+#if TESTING
+uint32_t expected[] = {
+1140953930u, 861465670u,
+3277735313u, 2681724312u,
+2598464059u, 797982799u,
+890626835u, 800175912u,
+2603993599u, 921001710u,
+1410420968u, 2134990486u,
+3283896453u, 1867689945u,
+2914424215u, 2244477846u,
+255297188u, 2992121793u,
+1110588164u, 4186314283u,
+161451183u, 3943596029u,
+4019337850u, 452431531u,
+283198166u, 2741341286u,
+3379021470u, 2557197665u,
+299850021u, 2532580744u,
+452473466u, 1706958772u,
+1298374911u, 3099673830u,
+2199864459u, 3696623795u,
+236935126u, 2976578695u,
+4055299123u, 3281581178u,
+1053458494u, 1882212500u,
+2305012065u, 2169731866u,
+3456121707u, 275903667u,
+458884671u, 3033004529u,
+3058973506u, 2379411653u,
+1898235244u, 1402319660u,
+2700149065u, 2699376854u,
+147814787u, 720739346u,
+2433714046u, 4222949502u,
+4220361840u, 1712034059u,
+3425469811u, 3690733394u,
+4148372108u, 1330324210u,
+594028478u, 2921867846u,
+1635026870u, 192883107u,
+780716741u, 1728752234u,
+3280331829u, 326029180u,
+3969463346u, 1436364519u,
+393215742u, 3349570000u,
+3824583307u, 1612122221u,
+2859809759u, 3808705738u,
+1379537552u, 1646032583u,
+2233466664u, 1432476832u,
+4023053163u, 2650381482u,
+2052294713u, 3552092450u,
+1628777059u, 1499109081u,
+3476440786u, 3829307897u,
+2960536756u, 1554038301u,
+1145519619u, 3190844552u,
+2902102606u, 3600725550u,
+237495366u, 540224401u,
+65721842u, 489963606u,
+1448662590u, 397635823u,
+1596489240u, 1562872448u,
+1790705123u, 2128624475u,
+180854224u, 2604346966u,
+1435705557u, 1262831810u,
+155445229u, 1672724608u,
+1669465176u, 1341975128u,
+663607706u, 2077310004u,
+3610042449u, 1911523866u,
+1043692997u, 1454396064u,
+2563776023u, 294527927u,
+1099072299u, 1389770549u,
+703505868u, 678706990u,
+2952353448u, 2026137563u,
+3603803785u, 629449419u,
+1933894405u, 3043213226u,
+226132789u, 2489287368u,
+1552847036u, 645684964u,
+3828089804u, 3632594520u,
+187883449u, 230403464u,
+3151491850u, 3272648435u,
+3729087873u, 1303930448u,
+2002861219u, 165370827u,
+916494250u, 1230085527u,
+3103338579u, 3064290191u,
+3807265751u, 3628174014u,
+231181488u, 851743255u,
+2295806711u, 1781190011u,
+2988893883u, 1554380634u,
+1142264800u, 3667013118u,
+1968445277u, 315203929u,
+2638023604u, 2290487377u,
+732137533u, 1909203251u,
+440398219u, 1891630171u,
+1380301172u, 1498556724u,
+4072067757u, 4165088768u,
+4204318635u, 441430649u,
+3931792696u, 197618179u,
+956300927u, 914413116u,
+3010839769u, 2837339569u,
+2148126371u, 1913303225u,
+3074915312u, 3117299654u,
+4139181436u, 2993479124u,
+3178848746u, 1357272220u,
+1438494951u, 507436733u,
+667183474u, 2084369203u,
+3854939912u, 1413396341u,
+126024219u, 146044391u,
+1016656857u, 3022024459u,
+3254014218u, 429095991u,
+990500595u, 3056862311u,
+985653208u, 1718653828u,
+623071693u, 366414107u,
+1771289760u, 2293458109u,
+3047342438u, 2991127487u,
+3120876698u, 1684583131u,
+3638043310u, 1170404994u,
+863214540u, 1087193030u,
+199124911u, 520792961u,
+3169775996u, 1577421232u,
+3331828431u, 1013201099u,
+1716848157u, 4033596884u,
+1770708857u, 4229339322u,
+1146169032u, 1434258493u,
+3824360466u, 3242407770u,
+1926419493u, 2649785113u,
+872586426u, 762243036u,
+2736953692u, 816692935u,
+1571283333u, 3555213933u,
+2266795890u, 3781899767u,
+4290630595u, 517646945u,
+3006163611u, 2180594090u,
+959214578u, 558910384u,
+1283799121u, 3047062993u,
+3830962609u, 2391606125u,
+3544509313u, 622325861u,
+834785312u, 382936554u,
+1421463872u, 788479970u,
+1825135056u, 2725923798u,
+580988377u, 2826990641u,
+247825043u, 3167748333u,
+812546227u, 2506885666u,
+2584372201u, 1758123094u,
+1891789696u, 389974094u,
+345313518u, 2022370576u,
+3886113119u, 3338548567u,
+1083486947u, 2583576230u,
+1776047957u, 1771384107u,
+3604937815u, 3198590202u,
+3027522813u, 4155628142u,
+4232136669u, 427759438u,
+4244322689u, 542201663u,
+1549591985u, 2856634168u,
+556609672u, 45845311u,
+1175961330u, 3948351189u,
+4165739882u, 4194218315u,
+1634635545u, 4151937410u,
+713127376u, 1467786451u,
+1327394015u, 2743592929u,
+2638154051u, 810082938u,
+3077742128u, 1062268187u,
+4084325664u, 3810665822u,
+3735739145u, 2794294783u,
+2335576331u, 2560479831u,
+690240711u, 997658837u,
+2442302747u, 3948961926u,
+3958366652u, 3067277639u,
+2059157774u, 1211737169u,
+1516711748u, 2339636583u,
+4188504038u, 59581167u,
+2767897792u, 1389679610u,
+2658147000u, 2643979752u,
+3758739543u, 4189944477u,
+1454470782u, 100876854u,
+2995362413u, 118817200u,
+3252925478u, 2062343506u,
+2804483644u, 3088828656u,
+1231633714u, 4168280671u,
+2931588131u, 3284356565u,
+1255909792u, 3130054947u,
+4173605289u, 1407328702u,
+1677744031u, 3532596884u,
+3162657845u, 3887208531u,
+2256541290u, 3459463480u,
+3740979556u, 259034107u,
+392987633u, 3233195759u,
+3606709555u, 3424793077u,
+315836068u, 3200749877u,
+4065431359u, 760633989u,
+2982018998u, 1811050648u,
+234531934u, 1115203611u,
+3897494162u, 1516407838u,
+1603559457u, 323296368u,
+2632963283u, 1778459926u,
+2879836826u, 2146672889u,
+3486330348u, 492621815u,
+1231665285u, 2457048126u,
+3438440082u, 2217471853u,
+3355404249u, 3275550588u,
+1052645068u, 862072556u,
+4110617119u, 3745267835u,
+2657392572u, 4279236653u,
+1688445808u, 701920051u,
+956734128u, 581695350u,
+3157862788u, 2585726058u,
+1192588249u, 1410111809u,
+1651193125u, 3326135446u,
+1073280453u, 97376972u,
+2513844237u, 2187968410u,
+3976859649u, 4267859263u,
+3429034542u, 564493077u,
+3000537321u, 479241367u,
+3845637831u, 2868987960u,
+51544337u, 1029173765u,
+393624922u, 704325635u,
+2357610553u, 1418509533u,
+2007814586u, 3866658271u,
+3082385053u, 735688735u,
+916110004u, 3283299459u,
+1051684175u, 1083796807u,
+4074716319u, 813690332u,
+144264390u, 1439630796u,
+1508556987u, 675582689u,
+3748881891u, 3195309868u,
+362884708u, 1616408198u,
+43233176u, 837301135u,
+881504822u, 3254795114u,
+1385506591u, 2799925823u,
+1469874582u, 3464841997u,
+497175391u, 3929484338u,
+3975771289u, 1798536177u,
+2926265846u, 1374242438u,
+3675707838u, 4205965408u,
+3153165629u, 1499475160u,
+187287713u, 548490821u,
+3255259608u, 4247675634u,
+1940181471u, 3779953975u,
+687167150u, 2319566715u,
+1742785722u, 785893184u,
+2296977392u, 2778575413u,
+1794720651u, 48131484u,
+4084891412u, 1160134629u,
+3737623280u, 823113169u,
+3423207646u, 3803213486u,
+710625654u, 4116162021u,
+3693420287u, 4167766971u,
+1666602807u, 295320990u,
+3513255468u, 2487440590u,
+234080704u, 4004655503u,
+2971762528u, 1479656873u,
+4090178629u, 4044418876u,
+391947536u, 1462554406u,
+3909295855u, 1239580330u,
+1515601363u, 2011102035u,
+1442068334u, 4265993528u,
+1191921695u, 2291355695u,
+4257172787u, 576405853u,
+314332944u, 4038839101u,
+55559918u, 2378985842u,
+711098718u, 2425317635u,
+1644327317u, 1401013391u,
+4193760037u, 2958260436u,
+3167371443u, 3062418115u,
+3800755475u, 3167030094u,
+3489648204u, 1405430357u,
+526177822u, 2602636307u,
+915406019u, 4264167741u,
+1484090483u, 3070944737u,
+254529415u, 4017058800u,
+1702710265u, 1029665228u,
+2000382906u, 3185573940u,
+1381258384u, 4036354071u,
+2900841028u, 2670703363u,
+2921748807u, 2899069938u,
+4130543625u, 688472265u,
+4186808827u, 1054670286u,
+1132985391u, 2840525968u,
+4175776103u, 338058159u,
+1735964501u, 1539305024u,
+3497121710u, 1568260669u,
+2227290760u, 146827036u,
+3977176001u, 4060134777u,
+857488494u, 250055052u,
+4284109679u, 2502815838u,
+2592281721u, 1603444633u,
+1390562014u, 1556658131u,
+616327404u, 2448966429u,
+3051191726u, 3891353218u,
+1213304082u, 762328245u,
+2239052397u, 1082330589u,
+2455957292u, 201837927u,
+405397452u, 3079886794u,
+2583939798u, 2848283092u,
+3750724631u, 883849006u,
+3204198988u, 3341327098u,
+1855234968u, 1982110346u,
+1485529487u, 541496720u,
+4117290321u, 3607433551u,
+2168864636u, 133643215u,
+1055817409u, 3847827123u,
+2960769387u, 4046101649u,
+1176127003u, 4015671361u,
+4243643405u, 2849988118u,
+517111221u, 1796672358u,
+2045051700u, 3452457457u,
+2948254999u, 2102063419u,
+1556410577u, 1536380876u,
+3776661467u, 3281002516u,
+1735616066u, 1539151988u,
+1087795162u, 3332431596u,
+685631442u, 1147951686u,
+95237878u, 2005032160u,
+4012206915u, 4224354805u,
+3204999386u, 2415262714u,
+1433635018u, 116647396u,
+83167836u, 2881562655u,
+2729416454u, 1029284767u,
+881378302u, 2159170082u,
+555057366u, 1169104445u,
+3963877000u, 1919171906u,
+336034862u, 2017579106u,
+4059340529u, 3020819343u,
+865146997u, 2473524405u,
+944743644u, 1694443528u,
+1804513294u, 2904752429u,
+617975720u, 3671562289u,
+260177668u, 505662155u,
+1885941445u, 2504509403u,
+2260041112u, 1019936943u,
+3722741628u, 1511077569u,
+3100701179u, 1379422864u,
+1535670711u, 773792826u,
+1103819072u, 2089123665u,
+1157547425u, 329152940u,
+4142587430u, 484732447u,
+2475035432u, 1120017626u,
+412145504u, 965125959u,
+324924679u, 2809286837u,
+2842141483u, 4029205195u,
+2974306813u, 515627448u,
+3791551981u, 1097806406u,
+3873078673u, 136118734u,
+1872130856u, 3632422367u,
+3574135531u, 4017075736u,
+1699452298u, 1403506686u,
+344414660u, 1189129691u,
+3487080616u, 1516736273u,
+1805475756u, 2562064338u,
+163335594u, 2732147834u,
+4077452507u, 2984955003u,
+4271866024u, 3071338162u,
+2347111903u, 873829983u,
+1948409509u, 1923531348u,
+459509140u, 771592405u,
+1750124750u, 2334938333u,
+213811117u, 2586632018u,
+185232757u, 4032960199u,
+2447383637u, 284777551u,
+1654276320u, 2687561076u,
+3512945009u, 308584855u,
+1861027147u, 4102279334u,
+3203802620u, 1692079268u,
+4250142168u, 2565680167u,
+1507046104u, 841195925u,
+520565830u, 3674576684u,
+38924274u, 3770488806u,
+2414430882u, 3978473838u,
+3703994407u, 69201295u,
+3099963860u, 1255084262u,
+690971838u, 3539996781u,
+3696902571u, 3593730713u,
+2363435042u, 54945052u,
+1785765213u, 184911581u,
+1586241476u, 1939595371u,
+2534883189u, 2432427547u,
+2374171993u, 2039128933u,
+2955715987u, 2295501078u,
+2741583197u, 1280920000u,
+686818699u, 1238742497u,
+3843660102u, 82177963u,
+1281043691u, 1121403845u,
+1697846708u, 284852964u,
+278661677u, 2889101923u,
+2127558730u, 713121337u,
+872502474u, 511142139u,
+1261140657u, 1747052377u,
+2108187161u, 927011680u,
+955328267u, 3821994995u,
+2707230761u, 4142246789u,
+4134691985u, 1958963937u,
+2498463509u, 1977988705u,
+1419293714u, 1636932722u,
+2567532373u, 4075249328u,
+240575705u, 1956681213u,
+2598802768u, 2025886508u,
+4104757832u, 3026358429u,
+3242615202u, 4026813725u,
+255108733u, 1845587644u,
+3573008472u, 3615577014u,
+1222733548u, 1205557630u,
+917608574u, 1363253259u,
+1541946015u, 3087190425u,
+1138008081u, 1444019663u,
+109793386u, 341851980u,
+857839960u, 2515339233u,
+156283211u, 1906768669u,
+3886713057u, 1276595523u,
+2809830736u, 460237542u,
+3420452099u, 142985419u,
+205970448u, 4198897105u,
+1950698961u, 2069753399u,
+1142216925u, 1113051162u,
+1033680610u, 4278599955u,
+1106466069u, 356742959u,
+531521052u, 3494863964u,
+225629455u, 3735275001u,
+3662626864u, 1750561299u,
+1012864651u, 2101846429u,
+1074553219u, 668829411u,
+992181339u, 3384018814u,
+3330664522u, 860966321u,
+1885071395u, 4233785523u,
+100741310u, 451656820u,
+2148187612u, 1063001151u,
+360256231u, 107312677u,
+3650357479u, 2390172694u,
+22452685u, 237319043u,
+3600462351u, 1216645846u,
+2088767754u, 164402616u,
+2418980170u, 926137824u,
+94638678u, 1689811113u,
+2751052984u, 1767810825u,
+271289013u, 3896132233u,
+103797041u, 1397772514u,
+3441135892u, 3323383489u,
+2491268371u, 1662561885u,
+1612872497u, 2986430557u,
+2756998822u, 207428029u,
+937973965u, 2791656726u,
+1949717207u, 2260498180u,
+2648427775u, 2360400900u,
+2080496169u, 486358863u,
+1582022990u, 1263709570u,
+1396468647u, 1377764574u,
+363008508u, 1293502429u,
+224580012u, 4252610345u,
+1435134775u, 1099809675u,
+533671980u, 1533438766u,
+1820532305u, 2776960536u,
+3374512975u, 3542220540u,
+822810075u, 3716663290u,
+1157398049u, 3752806924u,
+4081637863u, 337070226u,
+3866585976u, 359270190u,
+2110942730u, 3267551635u,
+644850146u, 1306761320u,
+746972907u, 934259457u,
+2341378668u, 2220373824u,
+1242645122u, 4109252858u,
+1625266099u, 1173698481u,
+383517064u, 896322512u,
+3377483696u, 1788337208u,
+455496839u, 3194373887u,
+1837689083u, 1336556841u,
+1658628529u, 2911512007u,
+3838343487u, 2757664765u,
+1537187340u, 3712582785u,
+367022558u, 3071359622u,
+3926147070u, 35432879u,
+3093195926u, 2561488770u,
+4273132307u, 3898950547u,
+2838251049u, 2103926083u,
+2549435227u, 536047554u,
+1858986613u, 2040551642u,
+1147412575u, 1972369852u,
+4166184983u, 3528794619u,
+4077477194u, 3565689036u,
+808048238u, 3826350461u,
+1359641525u, 1197100813u,
+265993036u, 1864569342u,
+725164342u, 2264788336u,
+1831223342u, 3329594980u,
+923017956u, 490608221u,
+3818634478u, 258154469u,
+1441714797u, 1174785921u,
+3833372385u, 3287246572u,
+1677395563u, 3569218731u,
+868981704u, 2163330264u,
+2649450292u, 500120236u,
+465161780u, 746438382u,
+1145009669u, 2520062970u,
+2810524030u, 1561519055u,
+1479878006u, 3864969305u,
+2686075657u, 4042710240u,
+3224066062u, 2774151984u,
+2226179547u, 1643626042u,
+2328730865u, 3160666939u,
+2107011431u, 96459446u,
+3920328742u, 3336407558u,
+829404209u, 1878067032u,
+1235983679u, 4237425634u,
+466519055u, 3870676863u,
+934312076u, 2952135524u,
+276949224u, 4100839753u,
+424001484u, 1955120893u,
+4015478120u, 1265237690u,
+427484362u, 4246879223u,
+3452969617u, 1724363362u,
+1553513184u, 834830418u,
+1858777639u, 3476334357u,
+4144030366u, 2450047160u,
+2950762705u, 4277111759u,
+358032121u, 2511026735u,
+167923105u, 2059208280u,
+251949572u, 3065234219u,
+1535473864u, 556796152u,
+1513237478u, 3150857516u,
+1103404394u, 198182691u,
+1476438092u, 2913077464u,
+207119516u, 3963810232u,
+2954651680u, 1535115487u,
+3051522276u, 4046477658u,
+917804636u, 864395565u,
+632704095u, 140762681u,
+1802040304u, 990407433u,
+3771506212u, 4106024923u,
+1287729497u, 2198985327u,
+4052924496u, 2926590471u,
+3084557148u, 1472898694u,
+1009870118u, 559702706u,
+4265214507u, 82077489u,
+3067891003u, 3295678907u,
+2402308151u, 1096697687u,
+464407878u, 4190838199u,
+4269578403u, 3060919438u,
+2899950405u, 3046872820u,
+733509243u, 1583801700u,
+40453902u, 3879773881u,
+1993425202u, 2185339100u,
+1877837196u, 3912423882u,
+3293122640u, 4104318469u,
+1679617763u, 3703603898u,
+8759461u, 2540185277u,
+1152198475u, 2038345882u,
+2503579743u, 1446869792u,
+2019419351u, 4051584612u,
+3178289407u, 3992503830u,
+2879018745u, 2719373510u,
+700836153u, 1675560450u,
+4121245793u, 2064715719u,
+343595772u, 1996164093u,
+3130433948u, 405251683u,
+2804817126u, 1607133689u,
+463852893u, 2864244470u,
+2224044848u, 4071581802u,
+2537107938u, 2246347953u,
+3207234525u, 2028708916u,
+2272418128u, 803575837u,
+38655481u, 2170452091u,
+3272166407u, 557660441u,
+4019147902u, 3841480082u,
+298459606u, 2600943364u,
+2440657523u, 255451671u,
+3424361375u, 779434428u,
+3088526123u, 490671625u,
+1322855877u, 3452203069u,
+3057021940u, 2285701422u,
+2014993457u, 2390431709u,
+2002090272u, 1568745354u,
+1783152480u, 823305654u,
+4053862835u, 2200236540u,
+3009412313u, 3184047862u,
+3032187389u, 4159715581u,
+2966902888u, 252986948u,
+1849329144u, 3160134214u,
+3420960112u, 3198900547u,
+749160960u, 379139040u,
+1208883495u, 1566527339u,
+3006227299u, 4194096960u,
+556075248u, 497404038u,
+1717327230u, 1496132623u,
+1775955687u, 1719108984u,
+1014328900u, 4189966956u,
+2108574735u, 2584236470u,
+684087286u, 531310503u,
+4264509527u, 773405691u,
+3088905079u, 3456882941u,
+3105682208u, 3382290593u,
+2289363624u, 3296306400u,
+4168438718u, 467441309u,
+777173623u, 3241407531u,
+1183994815u, 1132983260u,
+1610606159u, 2540270567u,
+2649684057u, 1397502982u,
+146657385u, 3318434267u,
+2109315753u, 3348545480u,
+3193669211u, 811750340u,
+1073256162u, 3571673088u,
+546596661u, 1017047954u,
+3403136990u, 2540585554u,
+1477047647u, 4145867423u,
+2826408201u, 3531646869u,
+784952939u, 943914610u,
+2717443875u, 3657384638u,
+1806867885u, 1903578924u,
+3985088434u, 1911188923u,
+1764002686u, 3672748083u,
+1832925325u, 241574049u,
+519948041u, 3181425568u,
+2939747257u, 1634174593u,
+3429894862u, 3529565564u,
+1089679033u, 240953857u,
+2025369941u, 2695166650u,
+517086873u, 2964595704u,
+3017658263u, 3828377737u,
+2144895011u, 994799311u,
+1184683823u, 4260564140u,
+308018483u, 4262383425u,
+1374752558u, 3431057723u,
+1572637805u, 383233885u,
+3188015819u, 4051263539u,
+233319221u, 3794788167u,
+2017406667u, 919677938u,
+4074952232u, 1683612329u,
+4213676186u, 327142514u,
+3032591014u, 4204155962u,
+206775997u, 2283918569u,
+2395147154u, 3427505379u,
+2211319468u, 4153726847u,
+2217060665u, 350160869u,
+2493667051u, 1648200185u,
+3441709766u, 1387233546u,
+140980u, 1891558063u,
+760080239u, 2088061981u,
+1580964938u, 740563169u,
+422986366u, 330624974u,
+4264507722u, 150928357u,
+2738323042u, 2948665536u,
+918718096u, 376390582u,
+3966098971u, 717653678u,
+3219466255u, 3799363969u,
+3424344721u, 3187805406u,
+375347278u, 3490350144u,
+1992212097u, 2263421398u,
+3855037968u, 1928519266u,
+3866327955u, 1129127000u,
+1782515131u, 2746577402u,
+3059200728u, 2108753646u,
+2738070963u, 1336849395u,
+1705302106u, 768287270u,
+1343511943u, 2247006571u,
+1956142255u, 1780259453u,
+3475618043u, 212490675u,
+622521957u, 917121602u,
+1852992332u, 1267987847u,
+3170016833u, 2549835613u,
+3299763344u, 2864033668u,
+3378768767u, 1236609378u,
+4169365948u, 3738062408u,
+2661022773u, 2006922227u,
+2760592161u, 3828932355u,
+2636387819u, 2616619070u,
+1237256330u, 3449066284u,
+2871755260u, 3729280948u,
+3862686086u, 431292293u,
+3285899651u, 786322314u,
+2531158535u, 724901242u,
+2377363130u, 1415970351u,
+1244759631u, 3263135197u,
+965248856u, 174024139u,
+2297418515u, 2954777083u,
+987586766u, 3206261120u,
+4059515114u, 3903854066u,
+1931934525u, 2287507921u,
+1827135136u, 1781944746u,
+574617451u, 2299034788u,
+2650140034u, 4081586725u,
+2482286699u, 1109175923u,
+458483596u, 618705848u,
+4059852729u, 1813855658u,
+4190721328u, 1129462471u,
+4089998050u, 3575732749u,
+2375584220u, 1037031473u,
+1623777358u, 3389003793u,
+546597541u, 352770237u,
+1383747654u, 3122687303u,
+1646071378u, 1164309901u,
+290870767u, 830691298u,
+929335420u, 3193251135u,
+989577914u, 3626554867u,
+591974737u, 3996958215u,
+3163711272u, 3071568023u,
+1516846461u, 3656006011u,
+2698625268u, 2510865430u,
+340274176u, 1167681812u,
+3698796465u, 3155218919u,
+4102288238u, 1673474350u,
+3069708839u, 2704165015u,
+1237411891u, 1854985978u,
+3646837503u, 3625406022u,
+921552000u, 1712976649u,
+3939149151u, 878608872u,
+3406359248u, 1068844551u,
+1834682077u, 4155949943u,
+2437686324u, 3163786257u,
+2645117577u, 1988168803u,
+747285578u, 1626463554u,
+1235300371u, 1256485167u,
+1914142538u, 4141546431u,
+3838102563u, 582664250u,
+1883344352u, 2083771672u,
+2611657933u, 2139079047u,
+2250573853u, 804336148u,
+3066325351u, 2770847216u,
+4275641370u, 1455750577u,
+3346357270u, 1674051445u,
+601221482u, 3992583643u,
+1402445097u, 3622527604u,
+2509017299u, 2966108111u,
+2557027816u, 900741486u,
+1790771021u, 2912643797u,
+2631381069u, 4014551783u,
+90375300u, 300318232u,
+3269968032u, 2679371729u,
+2664752123u, 3517585534u,
+3253901179u, 542270815u,
+1188641600u, 365479232u,
+2210121140u, 760762191u,
+1273768482u, 1216399252u,
+3484324231u, 4287337666u,
+16322182u, 643179562u,
+325675502u, 3652676161u,
+3120716054u, 3330259752u,
+1011990087u, 2990167340u,
+1097584090u, 3262252593u,
+1829409951u, 3665087267u,
+1214854475u, 2134299399u,
+3704419305u, 411263051u,
+1625446136u, 549838529u,
+4283196353u, 1342880802u,
+3460621305u, 1967599860u,
+4282843369u, 1275671016u,
+2544665755u, 853593042u,
+901109753u, 2682611693u,
+110631633u, 797487791u,
+1472073141u, 850464484u,
+797089608u, 3286110054u,
+350397471u, 2775631060u,
+366448238u, 3842907484u,
+2219863904u, 3623364733u,
+1850985302u, 4009616991u,
+294963924u, 3693536939u,
+3061255808u, 1615375832u,
+1920066675u, 4113028420u,
+4032223840u, 2318423400u,
+2701956286u, 4145497671u,
+3991532344u, 2536338351u,
+1679099863u, 1728968857u,
+449740816u, 2686506989u,
+685242457u, 97590863u,
+3258354115u, 1502282913u,
+1235084019u, 2151665147u,
+528459289u, 231097464u,
+2477280726u, 3651607391u,
+2091754612u, 1178454681u,
+980597335u, 1604483865u,
+1842333726u, 4146839064u,
+3213794286u, 2601416506u,
+754220096u, 3571436033u,
+488595746u, 1448097974u,
+4004834921u, 238887261u,
+3320337489u, 1416989070u,
+2928916831u, 4093725287u,
+186020771u, 2367569534u,
+3046087671u, 4090084518u,
+3548184546u, 679517009u,
+1962659444u, 3539886328u,
+4192003933u, 1678423485u,
+3827951761u, 3086277222u,
+2144472852u, 1390394371u,
+2976322029u, 1574517163u,
+3553313841u, 119173722u,
+1702434637u, 1766260771u,
+3629581771u, 1407497759u,
+895654784u, 751439914u,
+4008409498u, 215917713u,
+1482103833u, 695551833u,
+1288382231u, 2656990891u,
+2581779077u, 1570750352u,
+3710689053u, 1741390464u,
+2666411616u, 3533987737u,
+4289478316u, 3576119563u,
+4118694920u, 108199666u,
+3869794273u, 963183826u,
+2081410737u, 3796810515u,
+791123882u, 2525792704u,
+1036883117u, 136547246u,
+875691100u, 2592925324u,
+614302599u, 3013176417u,
+2689342539u, 427154472u,
+532957601u, 1228758574u,
+1898117151u, 1181643858u,
+1908591042u, 1464255968u,
+446980910u, 2984611177u,
+58509511u, 1046943619u,
+3508927906u, 2001585786u,
+2544767379u, 1525438381u,
+552181222u, 1959725830u,
+879448844u, 1348536411u,
+4242243590u, 2861338018u,
+1082052441u, 1034351453u,
+601175800u, 764077711u,
+530635011u, 3785343245u,
+2178026726u, 117256687u,
+2378297261u, 457568934u,
+76438221u, 4104954272u,
+956793873u, 3783168634u,
+2485968477u, 2381948487u,
+4226929450u, 3148473363u,
+2518273601u, 3569490233u,
+879369091u, 2180270337u,
+3674375989u, 1387729170u,
+977997984u, 4270646856u,
+568650985u, 951677556u,
+4213877384u, 2721005055u,
+1073364549u, 2563403831u,
+1678669911u, 66786703u,
+2273631661u, 1149351924u,
+3651298990u, 1581883443u,
+246723096u, 1895026827u,
+3810605772u, 3711056516u,
+4058833288u, 2193790614u,
+2080120290u, 3638638708u,
+2915672708u, 2263003308u,
+2361934197u, 4136767460u,
+1976115991u, 3448840877u,
+2019238520u, 225333538u,
+874340815u, 2976159827u,
+1555273378u, 3797521928u,
+1942347150u, 3262952567u,
+435997738u, 340403353u,
+2817830907u, 2078619498u,
+749534111u, 1178073973u,
+894654712u, 3361226032u,
+841092198u, 3288261538u,
+1696412169u, 1496966875u,
+697501571u, 1059158875u,
+3739946319u, 2481012988u,
+568983526u, 114945840u,
+1559249010u, 2218244008u,
+2841706923u, 1632780103u,
+4020169654u, 2087949619u,
+2438736103u, 24032648u,
+833416317u, 3787017905u,
+2373238993u, 2575395164u,
+3434544481u, 3228481067u,
+2542976862u, 2971726178u,
+2880371864u, 3642087909u,
+2407477975u, 2239080836u,
+1043714217u, 3894199764u,
+2235879182u, 203853421u,
+2933669448u, 2504940536u,
+834683330u, 425935223u,
+3560796393u, 3565833278u,
+1668000829u, 3683399154u,
+3414330886u, 1748785729u,
+1023171602u, 580966986u,
+2531038985u, 3227325488u,
+2657385925u, 2124704694u,
+233442446u, 1107045577u,
+3407293834u, 552770757u,
+3899097693u, 1067532701u,
+115667924u, 1406028344u,
+1707768231u, 3724015962u,
+2419657149u, 18613994u,
+2532882091u, 3476683808u,
+1560838678u, 811220224u,
+895961699u, 3762914298u,
+1328752423u, 1844996900u,
+1420427894u, 1848067707u,
+1210281744u, 904215228u,
+4055325594u, 1118521573u,
+2496554183u, 2579259919u,
+3996647489u, 3657647605u,
+325254059u, 3136157065u,
+3951522674u, 4052925250u,
+3341068436u, 2287683323u,
+1313073005u, 126005630u,
+2505120084u, 1194725057u,
+853746559u, 3555092974u,
+2689238752u, 49515858u,
+1244776042u, 1069300695u,
+61073168u, 1010661841u,
+1269521335u, 1902040126u,
+990632502u, 2378708922u,
+3858321250u, 1400735275u,
+2974699176u, 2771676666u,
+170995186u, 2877798589u,
+545726212u, 2225229957u,
+1086473152u, 3454177594u,
+3859483262u, 1499729584u,
+2088002891u, 2883475137u,
+3222194252u, 4144472319u,
+2212229854u, 4146740722u,
+567988835u, 1051332394u,
+3932046135u, 542648229u,
+3017852446u, 1277887997u,
+162888005u, 1669710469u,
+1492500905u, 553041029u,
+1434876932u, 533989516u,
+3817492747u, 584127807u,
+4147115982u, 2993670925u,
+4020312558u, 710021255u,
+3509733475u, 3587959456u,
+2088550465u, 1745399498u,
+2952242967u, 1259815443u,
+869648362u, 1404723176u,
+3947542735u, 1334333531u,
+3873471582u, 229399758u,
+59634866u, 3239516985u,
+3844250972u, 1275954779u,
+1385684948u, 2243700741u,
+2512155003u, 1685649437u,
+639306006u, 2524620206u,
+955360345u, 1646776457u,
+576786501u, 655707039u,
+2864351838u, 3736264674u,
+655621239u, 362070173u,
+1200907897u, 2384379464u,
+15823708u, 206117476u,
+3652870937u, 122927134u,
+1193310960u, 1093099415u,
+3696538026u, 4112584792u,
+1834541277u, 845639252u,
+2069527017u, 547588820u,
+4178147211u, 2827259351u,
+1764455305u, 3312003602u,
+940846775u, 1054995047u,
+2976960697u, 1934305529u,
+3095615046u, 3354962706u,
+2199137382u, 1005722394u,
+1875867180u, 2064356511u,
+3363633633u, 2688499147u,
+4019734130u, 3096333006u,
+2069509024u, 2906358341u,
+3247463123u, 4191788132u,
+2232866485u, 1456016086u,
+1422674894u, 867282151u,
+1851386407u, 1268304058u,
+1612503136u, 1739843072u,
+134947567u, 2978775774u,
+2051592101u, 1017127033u,
+1284167756u, 1090844589u,
+831688783u, 2079216362u,
+2079309682u, 1950585801u,
+1626991196u, 3644714163u,
+3678110059u, 898470030u,
+1117570988u, 2517572125u,
+3916646913u, 3182422972u,
+3630426828u, 969847973u,
+2835126238u, 53541366u,
+3427164640u, 3463937250u,
+3044785046u, 897322257u,
+103038235u, 3804506837u,
+3443872170u, 4185408854u,
+2557463241u, 4080940424u,
+3669923099u, 2789619871u,
+2048168570u, 2429169982u,
+3174690447u, 2513494106u,
+3099587829u, 2627855577u,
+1213061732u, 3143736628u,
+3482268149u, 1250714337u,
+3553412672u, 2689632914u,
+31648125u, 3872383625u,
+1565760579u, 36665130u,
+1282106920u, 359361724u,
+751041229u, 2257179590u,
+2915361862u, 280819225u,
+954406473u, 4101682199u,
+2907818413u, 4254297769u,
+3493178615u, 3755944354u,
+3539557658u, 3330196096u,
+4043533423u, 1134196225u,
+4177134659u, 127246419u,
+4213770762u, 1978302978u,
+2442615581u, 923049607u,
+1004426206u, 782768297u,
+2702745496u, 1880389457u,
+2410586681u, 1430106871u,
+4103323427u, 3168399477u,
+201787012u, 3105353527u,
+3716682375u, 3616334719u,
+3413209549u, 656672786u,
+526032790u, 2895072131u,
+2876965944u, 182894450u,
+456581318u, 2683752067u,
+1287916294u, 1270745752u,
+3877875910u, 3190666241u,
+3240336907u, 4024807233u,
+4227999465u, 2389301430u,
+1681224377u, 1576191191u,
+3599250276u, 2381111980u,
+3995044500u, 995595530u,
+3495321877u, 3956024585u,
+1611608524u, 3815677453u,
+1520987487u, 3669102590u,
+2062334396u, 1656117707u,
+5457134u, 3234118251u,
+4242065111u, 596879987u,
+470187419u, 2688566989u,
+3259870297u, 660100446u,
+1042378442u, 2206034096u,
+442236198u, 2542452448u,
+493137955u, 392411099u,
+3111186954u, 438250493u,
+947967568u, 1234595917u,
+4230082284u, 2762976773u,
+421203727u, 3728409592u,
+2870085764u, 1455086530u,
+2762099647u, 4011882747u,
+1785430706u, 3684427488u,
+1215981925u, 3227517889u,
+3269061963u, 4037515364u,
+1749401388u, 2167451566u,
+3168911474u, 4255057396u,
+2026092260u, 1736192508u,
+4123254745u, 2319366806u,
+3909727042u, 3114708966u,
+1938800693u, 680793595u,
+3933041672u, 616863613u,
+1525265867u, 2808224480u,
+2122290603u, 1211197714u,
+1186177814u, 2395325006u,
+3520488321u, 3979192396u,
+3540779343u, 4192918639u,
+1763872074u, 3402419930u,
+2736030448u, 1120335563u,
+1698949078u, 3993310631u,
+2947659998u, 1461045789u,
+1966048551u, 2228221363u,
+597941119u, 3498018399u,
+1441110751u, 2229999711u,
+393987327u, 454500547u,
+1222959566u, 567151340u,
+2496952483u, 1708770195u,
+3774764786u, 1492844524u,
+3308300614u, 805568076u,
+4068812294u, 3404648243u,
+868414882u, 177406999u,
+1608110313u, 642061169u,
+2093999089u, 222470301u,
+1027515771u, 3131251981u,
+2851936150u, 4272755262u,
+2763002551u, 1881527822u,
+1532845092u, 709643652u,
+682573592u, 1244104217u,
+440905170u, 1111321746u,
+796769556u, 2500467040u,
+3002618826u, 1112998535u,
+1188525643u, 4212674512u,
+1780193104u, 1243644607u,
+3691719535u, 2958853053u,
+2813437721u, 4036584207u,
+466635014u, 2277292580u,
+4082276003u, 1030800045u,
+1899531424u, 609466946u,
+1750863246u, 379050598u,
+3576413281u, 731493104u,
+2707384133u, 2289193651u,
+132259176u, 4115195437u,
+1769890695u, 2715470335u,
+3348954692u, 2166575624u,
+1819263183u, 2028531518u,
+2154809766u, 3672399742u,
+1142139448u, 88299682u,
+76727603u, 4198182186u,
+2304993586u, 1666387627u,
+2488475423u, 3832777692u,
+284366017u, 3359785538u,
+3469807328u, 2926494787u,
+1914195188u, 1134129972u,
+3829072836u, 2493478921u,
+3738499303u, 3311304980u,
+726951526u, 911080963u,
+932916545u, 2235559063u,
+2909742396u, 1765719309u,
+465269850u, 3803621553u,
+1456588655u, 508290328u,
+1490719640u, 3356513470u,
+2262196163u, 1451774941u,
+2908490783u, 251085588u,
+830410677u, 3172220325u,
+4039692645u, 1383603170u,
+3897208579u, 1940535730u,
+151909546u, 2384458112u,
+};
+
+// Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
+bool Test(int offset, int len = 0) {
+#undef Check
+#undef IsAlive
+
+#define Check(x) do { \
+ const uint32_t actual = (x), e = expected[index++]; \
+ bool ok = actual == e; \
+ if (!ok) { \
+ cerr << "expected " << hex << e << " but got " << actual << endl; \
+ ++errors; \
+ } \
+ assert(ok); \
+} while (0)
+
+#define IsAlive(x) do { alive += IsNonZero(x); } while (0)
+
+ // After the following line is where the uses of "Check" and such will go.
+ static int index = 0;
if (offset == -1) { int alive = 0; { uint64_t h = farmhashxo::Hash64WithSeeds(farm_hash_data, len++, SEED0, SEED1); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } { uint64_t h = farmhashxo::Hash64WithSeed(farm_hash_data, len++, SEED); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } { uint64_t h = farmhashxo::Hash64(farm_hash_data, len++); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } len -= 3; return alive > 0; }
{ uint64_t h = farmhashxo::Hash64WithSeeds(farm_hash_data + offset, len, SEED0, SEED1); Check(h >> 32); Check((h << 32) >> 32); }
{ uint64_t h = farmhashxo::Hash64WithSeed(farm_hash_data + offset, len, SEED); Check(h >> 32); Check((h << 32) >> 32); }
{ uint64_t h = farmhashxo::Hash64(farm_hash_data + offset, len); Check(h >> 32); Check((h << 32) >> 32); }
-
- return true;
-#undef Check
-#undef IsAlive
-}
-
-int RunTest() {
- Setup();
- int i = 0;
- cout << "Running farmhashxoTest";
- if (!Test(-1)) {
- cout << "... Unavailable\n";
- return NoteErrors();
- }
- // Good. The function is attempting to hash, so run the full test.
- int errors_prior_to_test = errors;
- for ( ; i < kTestSize - 1; i++) {
- Test(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- Test(0, i);
- }
- Test(0, kDataSize);
- cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
- return NoteErrors();
-}
-
-#else
-
-// After the following line is where the code to print hash codes will go.
-void Dump(int offset, int len) {
+
+ return true;
+#undef Check
+#undef IsAlive
+}
+
+int RunTest() {
+ Setup();
+ int i = 0;
+ cout << "Running farmhashxoTest";
+ if (!Test(-1)) {
+ cout << "... Unavailable\n";
+ return NoteErrors();
+ }
+ // Good. The function is attempting to hash, so run the full test.
+ int errors_prior_to_test = errors;
+ for ( ; i < kTestSize - 1; i++) {
+ Test(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ Test(0, i);
+ }
+ Test(0, kDataSize);
+ cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
+ return NoteErrors();
+}
+
+#else
+
+// After the following line is where the code to print hash codes will go.
+void Dump(int offset, int len) {
{ uint64_t h = farmhashxo::Hash64WithSeeds(farm_hash_data + offset, len, SEED0, SEED1); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
{ uint64_t h = farmhashxo::Hash64WithSeed(farm_hash_data + offset, len, SEED); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
{ uint64_t h = farmhashxo::Hash64(farm_hash_data + offset, len); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
-}
-
-#endif
-
-#undef SEED
-#undef SEED1
-#undef SEED0
-
-} // namespace farmhashxoTest
-
-#if !TESTING
-int main(int argc, char** argv) {
- Setup();
- cout << "uint32_t expected[] = {\n";
- int i = 0;
- for ( ; i < kTestSize - 1; i++) {
- farmhashxoTest::Dump(i * i, i);
- }
- for ( ; i < kDataSize; i += i / 7) {
- farmhashxoTest::Dump(0, i);
- }
- farmhashxoTest::Dump(0, kDataSize);
- cout << "};\n";
-}
-#endif
-
+}
+
+#endif
+
+#undef SEED
+#undef SEED1
+#undef SEED0
+
+} // namespace farmhashxoTest
+
+#if !TESTING
+int main(int argc, char** argv) {
+ Setup();
+ cout << "uint32_t expected[] = {\n";
+ int i = 0;
+ for ( ; i < kTestSize - 1; i++) {
+ farmhashxoTest::Dump(i * i, i);
+ }
+ for ( ; i < kDataSize; i += i / 7) {
+ farmhashxoTest::Dump(0, i);
+ }
+ farmhashxoTest::Dump(0, kDataSize);
+ cout << "};\n";
+}
+#endif
+
Y_UNIT_TEST_SUITE(FarmhashTest) {
Y_UNIT_TEST(Test) {
- UNIT_ASSERT(farmhashccTest::RunTest() == 0);
- UNIT_ASSERT(farmhashmkTest::RunTest() == 0);
- UNIT_ASSERT(farmhashnaTest::RunTest() == 0);
- UNIT_ASSERT(farmhashntTest::RunTest() == 0);
- UNIT_ASSERT(farmhashsaTest::RunTest() == 0);
- UNIT_ASSERT(farmhashsuTest::RunTest() == 0);
- UNIT_ASSERT(farmhashteTest::RunTest() == 0);
- UNIT_ASSERT(farmhashuoTest::RunTest() == 0);
- UNIT_ASSERT(farmhashxoTest::RunTest() == 0);
- }
-}
-
-#endif // FARMHASHSELFTEST
+ UNIT_ASSERT(farmhashccTest::RunTest() == 0);
+ UNIT_ASSERT(farmhashmkTest::RunTest() == 0);
+ UNIT_ASSERT(farmhashnaTest::RunTest() == 0);
+ UNIT_ASSERT(farmhashntTest::RunTest() == 0);
+ UNIT_ASSERT(farmhashsaTest::RunTest() == 0);
+ UNIT_ASSERT(farmhashsuTest::RunTest() == 0);
+ UNIT_ASSERT(farmhashteTest::RunTest() == 0);
+ UNIT_ASSERT(farmhashuoTest::RunTest() == 0);
+ UNIT_ASSERT(farmhashxoTest::RunTest() == 0);
+ }
+}
+
+#endif // FARMHASHSELFTEST
diff --git a/contrib/libs/farmhash/ut/ya.make b/contrib/libs/farmhash/ut/ya.make
index a7f689f8c5..94c6d15208 100644
--- a/contrib/libs/farmhash/ut/ya.make
+++ b/contrib/libs/farmhash/ut/ya.make
@@ -1,13 +1,13 @@
-UNITTEST_FOR(contrib/libs/farmhash)
-
+UNITTEST_FOR(contrib/libs/farmhash)
+
OWNER(
somov
)
-
-NO_COMPILER_WARNINGS()
-
-CFLAGS(-DFARMHASHSELFTEST)
-
-SRCS(test.cc)
-
-END()
+
+NO_COMPILER_WARNINGS()
+
+CFLAGS(-DFARMHASHSELFTEST)
+
+SRCS(test.cc)
+
+END()
diff --git a/contrib/libs/farmhash/ya.make b/contrib/libs/farmhash/ya.make
index 8348d45d32..5e1a631819 100644
--- a/contrib/libs/farmhash/ya.make
+++ b/contrib/libs/farmhash/ya.make
@@ -1,30 +1,30 @@
-LIBRARY()
-
-LICENSE(MIT)
-
+LIBRARY()
+
+LICENSE(MIT)
+
LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
VERSION(2017-06-26-23eecfbe7e84ebf2e229bd02248f431c36e12f1a)
OWNER(somov)
-
+
ADDINCL(GLOBAL contrib/libs/farmhash/include)
-PEERDIR(
- contrib/libs/farmhash/arch/sse41
- contrib/libs/farmhash/arch/sse42
- contrib/libs/farmhash/arch/sse42_aesni
-)
-
-NO_COMPILER_WARNINGS()
-
-SRCS(
- farmhashuo.cc
- farmhashxo.cc
- farmhashna.cc
- farmhashmk.cc
- farmhashcc.cc
- farmhash_iface.cc
-)
-
-END()
+PEERDIR(
+ contrib/libs/farmhash/arch/sse41
+ contrib/libs/farmhash/arch/sse42
+ contrib/libs/farmhash/arch/sse42_aesni
+)
+
+NO_COMPILER_WARNINGS()
+
+SRCS(
+ farmhashuo.cc
+ farmhashxo.cc
+ farmhashna.cc
+ farmhashmk.cc
+ farmhashcc.cc
+ farmhash_iface.cc
+)
+
+END()
diff --git a/contrib/libs/fastlz/LICENSE b/contrib/libs/fastlz/LICENSE
index 8381d113a4..4a6abd6acb 100644
--- a/contrib/libs/fastlz/LICENSE
+++ b/contrib/libs/fastlz/LICENSE
@@ -1,24 +1,24 @@
-FastLZ - lightning-fast lossless compression library
-
-Copyright (C) 2007 Ariya Hidayat (ariya@kde.org)
-Copyright (C) 2006 Ariya Hidayat (ariya@kde.org)
-Copyright (C) 2005 Ariya Hidayat (ariya@kde.org)
-
-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.
-
+FastLZ - lightning-fast lossless compression library
+
+Copyright (C) 2007 Ariya Hidayat (ariya@kde.org)
+Copyright (C) 2006 Ariya Hidayat (ariya@kde.org)
+Copyright (C) 2005 Ariya Hidayat (ariya@kde.org)
+
+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.
+
diff --git a/contrib/libs/grpc/src/python/grpcio/ya.make b/contrib/libs/grpc/src/python/grpcio/ya.make
index bef1e7f43f..5cdb0230c4 100644
--- a/contrib/libs/grpc/src/python/grpcio/ya.make
+++ b/contrib/libs/grpc/src/python/grpcio/ya.make
@@ -1,7 +1,7 @@
PY23_LIBRARY()
-LICENSE(Apache-2.0)
-
+LICENSE(Apache-2.0)
+
LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
OWNER(
diff --git a/contrib/libs/grpc/ya.make b/contrib/libs/grpc/ya.make
index 4f26dbf992..29848d23ea 100644
--- a/contrib/libs/grpc/ya.make
+++ b/contrib/libs/grpc/ya.make
@@ -57,7 +57,7 @@ RECURSE(
RECURSE_FOR_TESTS(
src/proto/grpc/testing
src/proto/grpc/testing/duplicate
- src/proto/grpc/testing/xds
+ src/proto/grpc/testing/xds
src/python/grpcio_tests
test/core/util
test/cpp/end2end
diff --git a/contrib/libs/highwayhash/IMPORT b/contrib/libs/highwayhash/IMPORT
index 7b70d9300b..c1b4084ec0 100644
--- a/contrib/libs/highwayhash/IMPORT
+++ b/contrib/libs/highwayhash/IMPORT
@@ -1 +1 @@
-Imported from https://github.com/google/highwayhash commit 2b666ae078292b01024453d01480f3b362a2a012 (master branch, 2017-05-08)
+Imported from https://github.com/google/highwayhash commit 2b666ae078292b01024453d01480f3b362a2a012 (master branch, 2017-05-08)
diff --git a/contrib/libs/highwayhash/LICENSE b/contrib/libs/highwayhash/LICENSE
index 4d581db0a5..6b0b1270ff 100644
--- a/contrib/libs/highwayhash/LICENSE
+++ b/contrib/libs/highwayhash/LICENSE
@@ -1,203 +1,203 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
diff --git a/contrib/libs/highwayhash/README.md b/contrib/libs/highwayhash/README.md
index 4d120be2a2..2d311c66c1 100644
--- a/contrib/libs/highwayhash/README.md
+++ b/contrib/libs/highwayhash/README.md
@@ -1,350 +1,350 @@
-Strong (well-distributed and unpredictable) hashes:
-
-* Portable implementation of
- [SipHash](https://www.131002.net/siphash/siphash.pdf)
-* HighwayHash, a 5x faster SIMD hash with [security
- claims](https://arxiv.org/abs/1612.06257)
-
-## Quick Start
-
-To build on a Linux or Mac platform, simply run `make`. For Windows, we provide
-a Visual Studio 2015 project in the `msvc` subdirectory.
-
-Run `benchmark` for speed measurements. `sip_hash_test` and `highwayhash_test`
-ensure the implementations return known-good values for a given set of inputs.
-
-64-bit SipHash for any CPU:
-
- #include "highwayhash/sip_hash.h"
- using namespace highwayhash;
- const HH_U64 key2[2] HH_ALIGNAS(16) = {1234, 5678};
- char in[8] = {1};
- return SipHash(key2, in, 8);
-
-64, 128 or 256 bit HighwayHash for the CPU determined by compiler flags:
-
- #include "highwayhash/highwayhash.h"
- using namespace highwayhash;
- const HHKey key HH_ALIGNAS(32) = {1, 2, 3, 4};
- char in[8] = {1};
- HHResult64 result; // or HHResult128 or HHResult256
- HHStateT<HH_TARGET> state(key);
- HighwayHashT(&state, in, 8, &result);
-
-64, 128 or 256 bit HighwayHash for the CPU on which we're currently running:
-
- #include "highwayhash/highwayhash_target.h"
- #include "highwayhash/instruction_sets.h"
- using namespace highwayhash;
- const HHKey key HH_ALIGNAS(32) = {1, 2, 3, 4};
- char in[8] = {1};
- HHResult64 result; // or HHResult128 or HHResult256
- InstructionSets::Run<HighwayHash>(key, in, 8, &result);
-
-C-callable 64-bit HighwayHash for the CPU on which we're currently running:
-
- #include "highwayhash/c_bindings.h"
- const uint64_t key[4] = {1, 2, 3, 4};
- char in[8] = {1};
- return HighwayHash64(key, in, 8);
-
-## Introduction
-
-Hash functions are widely used, so it is desirable to increase their speed and
-security. This package provides two 'strong' (well-distributed and
-unpredictable) hash functions: a faster version of SipHash, and an even faster
-algorithm we call HighwayHash.
-
-SipHash is a fast but 'cryptographically strong' pseudo-random function by
-Aumasson and Bernstein [https://www.131002.net/siphash/siphash.pdf].
-
-HighwayHash is a new way of mixing inputs which may inspire new
-cryptographically strong hashes. Large inputs are processed at a rate of 0.24
-cycles per byte, and latency remains low even for small inputs. HighwayHash is
-faster than SipHash for all input sizes, with 5 times higher throughput at 1
-KiB. We discuss design choices and provide statistical analysis and preliminary
-cryptanalysis in https://arxiv.org/abs/1612.06257.
-
-## Applications
-
-Unlike prior strong hashes, these functions are fast enough to be recommended
-as safer replacements for weak hashes in many applications. The additional CPU
-cost appears affordable, based on profiling data indicating C++ hash functions
-account for less than 0.25% of CPU usage.
-
-Hash-based selection of random subsets is useful for A/B experiments and similar
-applications. Such random generators are idempotent (repeatable and
-deterministic), which is helpful for parallel algorithms and testing. To avoid
-bias, it is important that the hash function be unpredictable and
-indistinguishable from a uniform random generator. We have verified the bit
-distribution and avalanche properties of SipHash and HighwayHash.
-
-64-bit hashes are also useful for authenticating short-lived messages such as
-network/RPC packets. This requires that the hash function withstand
-differential, length extension and other attacks. We have published a formal
-security analysis for HighwayHash. New cryptanalysis tools may still need to be
-developed for further analysis.
-
-Strong hashes are also important parts of methods for protecting hash tables
-against unacceptable worst-case behavior and denial of service attacks
-(see "hash flooding" below).
-
-## SipHash
-
-Our SipHash implementation is a fast and portable drop-in replacement for
-the reference C code. Outputs are identical for the given test cases (messages
-between 0 and 63 bytes).
-
-Interestingly, it is about twice as fast as a SIMD implementation using SSE4.1
-(https://goo.gl/80GBSD). This is presumably due to the lack of SIMD bit rotate
-instructions.
-
-SipHash13 is a faster but weaker variant with one mixing round per update and
-three during finalization.
-
-We also provide a data-parallel 'tree hash' variant that enables efficient SIMD
-while retaining safety guarantees. This is about twice as fast as SipHash, but
-does not return the same results.
-
-## HighwayHash
-
-We have devised a new way of mixing inputs with AVX2 multiply and permute
-instructions. The multiplications are 32x32 -> 64 bits and therefore infeasible
-to reverse. Permuting equalizes the distribution of the resulting bytes.
-
-The internal state occupies four 256-bit AVX2 registers. Due to limitations of
-the instruction set, the registers are partitioned into two 512-bit halves that
-remain independent until the reduce phase. The algorithm outputs 64 bit digests
-or up to 256 bits at no extra cost.
-
-In addition to high throughput, the algorithm is designed for low finalization
-cost. The result is more than twice as fast as SipTreeHash.
-
-For older CPUs, we also provide an SSE4.1 version (80% as fast for large inputs
-and 95% as fast for short inputs) and a portable version (10% as fast).
-
-Statistical analyses and preliminary cryptanalysis are given in
-https://arxiv.org/abs/1612.06257.
-
-## Versioning and stability
-
-SipHash and HighwayHash 1.0 are 'fingerprint functions' whose input -> hash
-mapping will not change. This is important for applications that write hashes to
-persistent storage.
-
-HighwayHash has not yet reached 1.0 and may still change in the near future. We
-will announce when it is frozen.
-
-## Speed measurements
-
-To measure the CPU cost of a hash function, we can either create an artificial
-'microbenchmark' (easier to control, but probably not representative of the
-actual runtime), or insert instrumentation directly into an application (risks
-influencing the results through observer overhead). We provide novel variants of
-both approaches that mitigate their respective disadvantages.
-
-profiler.h uses software write-combining to stream program traces to memory
-with minimal overhead. These can be analyzed offline, or when memory is full,
-to learn how much time was spent in each (possibly nested) zone.
-
-nanobenchmark.h enables cycle-accurate measurements of very short functions.
-It uses CPU fences and robust statistics to minimize variability, and also
-avoids unrealistic branch prediction effects.
-
-We compile the C++ implementations with a patched GCC 4.9 and run on a single
-core of a Xeon E5-2690 v3 clocked at 2.6 GHz. CPU cost is measured as cycles per
-byte for various input sizes:
-
-Algorithm | 8 | 31 | 32 | 63 | 64 | 1024
----------------- | ----- | ---- | ---- | ---- | ---- | ----
-HighwayHashAVX2 | 7.34 | 1.81 | 1.71 | 1.04 | 0.95 | 0.24
-HighwayHashSSE41 | 8.00 | 2.11 | 1.75 | 1.13 | 0.96 | 0.30
-SipTreeHash | 16.51 | 4.57 | 4.09 | 2.22 | 2.29 | 0.57
-SipTreeHash13 | 12.33 | 3.47 | 3.06 | 1.68 | 1.63 | 0.33
-SipHash | 8.13 | 2.58 | 2.73 | 1.87 | 1.93 | 1.26
-SipHash13 | 6.96 | 2.09 | 2.12 | 1.32 | 1.33 | 0.68
-
-SipTreeHash is slower than SipHash for small inputs because it processes blocks
-of 32 bytes. AVX2 and SSE4.1 HighwayHash are faster than SipHash for all input
-sizes due to their highly optimized handling of partial vectors.
-
-Note that previous measurements included the initialization of their input,
-which dramatically increased timings especially for small inputs.
-
-## CPU requirements
-
-SipTreeHash[13] requires an AVX2-capable CPU (e.g. Haswell). HighwayHash
-includes a dispatcher that chooses the best available (AVX2, SSE4.1 or portable)
-implementation at runtime, as well as a directly callable function template that
-can only run on the CPU for which it was built. SipHash[13] and
-ScalarSipTreeHash[13] have no particular CPU requirements.
-
-Our implementations use custom AVX2 vector classes with overloaded operators
-(e.g. `const V4x64U a = b + c`) for type-safety and improved readability vs.
-compiler intrinsics (e.g. `const __m256i a = _mm256_add_epi64(b, c)`).
-
-We intend to port HighwayHash to other SIMD-capable platforms, especially ARM.
-
-Our instruction_sets dispatcher avoids running newer instructions on older CPUs
-that do not support them. However, intrinsics, and therefore also any vector
-classes that use them, require a compiler flag that also enables the compiler to
-generate code for that CPU. This means the intrinsics must be placed in separate
-translation units that are compiled with the required flags. It is important
-that these source files and their headers not define any inline functions,
-because that might break the one definition rule and cause crashes.
-
-To minimize dispatch overhead when hashes are computed often (e.g. in a loop),
-we can inline the hash function into its caller using templates. The dispatch
-overhead will only be paid once (e.g. before the loop). The template mechanism
-also avoids duplicating code in each CPU-specific implementation.
-
-## Defending against hash flooding
-
-To mitigate hash flooding attacks, we need to take both the hash function and
-the data structure into account.
-
-We wish to defend (web) services that utilize hash sets/maps against
-denial-of-service attacks. Such data structures assign attacker-controlled
-input messages `m` to a hash table bin `b` by computing the hash `H(s, m)`
-using a hash function `H` seeded by `s`, and mapping it to a bin with some
-narrowing function `b = R(h)`, discussed below.
-
-Attackers may attempt to trigger 'flooding' (excessive work in insertions or
-lookups) by finding multiple `m` that map to the same bin. If the attacker has
-local access, they can do far worse, so we assume the attacker can only issue
-remote requests. If the attacker is able to send large numbers of requests,
-they can already deny service, so we need only ensure the attacker's cost is
-sufficiently large compared to the service's provisioning.
-
-If the hash function is 'weak', attackers can easily generate 'hash collisions'
-(inputs mapping to the same hash values) that are independent of the seed. In
-other words, certain input messages will cause collisions regardless of the seed
-value. The author of SipHash has published C++ programs to generate such
-'universal (key-independent) multicollisions' for CityHash and Murmur. Similar
-'differential' attacks are likely possible for any hash function consisting only
-of reversible operations (e.g. addition/multiplication/rotation) with a constant
-operand. `n` requests with such inputs cause `n^2` work for an unprotected hash
-table, which is unacceptable.
-
-By contrast, 'strong' hashes such as SipHash or HighwayHash require infeasible
-attacker effort to find a hash collision (an expected 2^32 guesses of `m` per
-the birthday paradox) or recover the seed (2^63 requests). These security claims
-assume the seed is secret. It is reasonable to suppose `s` is initially unknown
-to attackers, e.g. generated on startup or even per-connection. A timing attack
-by Wool/Bar-Yosef recovers 13-bit seeds by testing all 8K possibilities using
-millions of requests, which takes several days (even assuming unrealistic 150 us
-round-trip times). It appears infeasible to recover 64-bit seeds in this way.
-
-However, attackers are only looking for multiple `m` mapping to the same bin
-rather than identical hash values. We assume they know or are able to discover
-the hash table size `p`. It is common to choose `p = 2^i` to enable an efficient
-`R(h) := h & (p - 1)`, which simply retains the lower hash bits. It may be
-easier for attackers to compute partial collisions where only the lower `i` bits
-match. This can be prevented by choosing a prime `p` so that `R(h) := h % p`
-incorporates all hash bits. The costly modulo operation can be avoided by
-multiplying with the inverse (https://goo.gl/l7ASm8). An interesting alternative
-suggested by Kyoung Jae Seo chooses a random subset of the `h` bits. Such an `R`
-function can be computed in just 3 cycles using PEXT from the BMI2 instruction
-set. This is expected to defend against SAT-solver attacks on the hash bits at a
-slightly lower cost than the multiplicative inverse method, and still allows
-power-of-two table sizes.
-
-Summary thus far: given a strong hash function and secret seed, it appears
-infeasible for attackers to generate hash collisions because `s` and/or `R` are
-unknown. However, they can still observe the timings of data structure
-operations for various `m`. With typical table sizes of 2^10 to 2^17 entries,
-attackers can detect some 'bin collisions' (inputs mapping to the same bin).
-Although this will be costly for the attacker, they can then send many instances
-of such inputs, so we need to limit the resulting work for our data structure.
-
-Hash tables with separate chaining typically store bin entries in a linked list,
-so worst-case inputs lead to unacceptable linear-time lookup cost. We instead
-seek optimal asymptotic worst-case complexity for each operation (insertion,
-deletion and lookups), which is a constant factor times the logarithm of the
-data structure size. This naturally leads to a tree-like data structure for each
-bin. The Java8 HashMap only replaces its linked list with trees when needed.
-This leads to additional cost and complexity for deciding whether a bin is a
-list or tree.
-
-Our first proposal (suggested by Github user funny-falcon) avoids this overhead
-by always storing one tree per bin. It may also be worthwhile to store the first
-entry directly in the bin, which avoids allocating any tree nodes in the common
-case where bins are sparsely populated. What kind of tree should be used?
-Scapegoat and splay trees only offer amortized complexity guarantees, whereas
-treaps require an entropy source and have higher constant factors in practice.
-Self-balancing structures such as 2-3 or red-black trees require additional
-bookkeeping information. We can hope to reduce rebalancing cost by realizing
-that the output bits of strong `H` functions are uniformly distributed. When
-using them as keys instead of the original message `m`, recent relaxed balancing
-schemes such as left-leaning red-black or weak AVL trees may require fewer tree
-rotations to maintain their invariants. Note that `H` already determines the
-bin, so we should only use the remaining bits. 64-bit hashes are likely
-sufficient for this purpose, and HighwayHash generates up to 256 bits. It seems
-unlikely that attackers can craft inputs resulting in worst cases for both the
-bin index and tree key without being able to generate hash collisions, which
-would contradict the security claims of strong hashes. Even if they succeed, the
-relaxed tree balancing still guarantees an upper bound on height and therefore
-the worst-case operation cost. For the AVL variant, the constant factors are
-slightly lower than for red-black trees.
-
-The second proposed approach uses augmented/de-amortized cuckoo hash tables
-(https://goo.gl/PFwwkx). These guarantee worst-case `log n` bounds for all
-operations, but only if the hash function is 'indistinguishable from random'
-(uniformly distributed regardless of the input distribution), which is claimed
-for SipHash and HighwayHash but certainly not for weak hashes.
-
-Both alternatives retain good average case performance and defend against
-flooding by limiting the amount of extra work an attacker can cause. The first
-approach guarantees an upper bound of `log n` additional work even if the hash
-function is compromised.
-
-In summary, a strong hash function is not, by itself, sufficient to protect a
-chained hash table from flooding attacks. However, strong hash functions are
-important parts of two schemes for preventing denial of service. Using weak hash
-functions can slightly accelerate the best-case and average-case performance of
-a service, but at the risk of greatly reduced attack costs and worst-case
-performance.
-
-## Third-party implementations / bindings
-
-Thanks to Damian Gryski for making us aware of these third-party
-implementations or bindings. Please feel free to get in touch or
-raise an issue and we'll add yours as well.
-
-By | Language | URL
---- | --- | ---
-Damian Gryski | Go and SSE | https://github.com/dgryski/go-highway/
-Lovell Fuller | node.js bindings | https://github.com/lovell/highwayhash
-Vinzent Steinberg | Rust bindings | https://github.com/vks/highwayhash-rs
-
-## Modules
-
-### Hashes
-
-* c_bindings.h declares C-callable versions of SipHash/HighwayHash.
-* sip_hash.cc is the compatible implementation of SipHash, and also provides
- the final reduction for sip_tree_hash.
-* sip_tree_hash.cc is the faster but incompatible SIMD j-lanes tree hash.
-* scalar_sip_tree_hash.cc is a non-SIMD version.
-* state_helpers.h simplifies the implementation of the SipHash variants.
-* highwayhash.h is our new, fast hash function.
-* hh_avx2.h, hh_sse41.h and hh_portable.h are its various implementations.
-* highwayhash_target.h chooses the best available implementation at runtime.
-
-### Infrastructure
-
-* arch_specific.h offers byte swapping and CPUID detection.
-* compiler_specific.h defines some compiler-dependent language extensions.
-* data_parallel.h provides a C++11 ThreadPool and PerThread (similar to
- OpenMP).
-* instruction_sets.h and targets.h enable efficient CPU-specific dispatching.
-* nanobenchmark.h measures elapsed times with < 1 cycle variability.
-* os_specific.h sets thread affinity and priority for benchmarking.
-* profiler.h is a low-overhead, deterministic hierarchical profiler.
-* tsc_timer.h obtains high-resolution timestamps without CPU reordering.
-* vector256.h and vector128.h contain wrapper classes for AVX2 and SSE4.1.
-
-By Jan Wassenberg <jan.wassenberg@gmail.com> and Jyrki Alakuijala
-<jyrki.alakuijala@gmail.com>, updated 2017-02-07
-
-This is not an official Google product.
+Strong (well-distributed and unpredictable) hashes:
+
+* Portable implementation of
+ [SipHash](https://www.131002.net/siphash/siphash.pdf)
+* HighwayHash, a 5x faster SIMD hash with [security
+ claims](https://arxiv.org/abs/1612.06257)
+
+## Quick Start
+
+To build on a Linux or Mac platform, simply run `make`. For Windows, we provide
+a Visual Studio 2015 project in the `msvc` subdirectory.
+
+Run `benchmark` for speed measurements. `sip_hash_test` and `highwayhash_test`
+ensure the implementations return known-good values for a given set of inputs.
+
+64-bit SipHash for any CPU:
+
+ #include "highwayhash/sip_hash.h"
+ using namespace highwayhash;
+ const HH_U64 key2[2] HH_ALIGNAS(16) = {1234, 5678};
+ char in[8] = {1};
+ return SipHash(key2, in, 8);
+
+64, 128 or 256 bit HighwayHash for the CPU determined by compiler flags:
+
+ #include "highwayhash/highwayhash.h"
+ using namespace highwayhash;
+ const HHKey key HH_ALIGNAS(32) = {1, 2, 3, 4};
+ char in[8] = {1};
+ HHResult64 result; // or HHResult128 or HHResult256
+ HHStateT<HH_TARGET> state(key);
+ HighwayHashT(&state, in, 8, &result);
+
+64, 128 or 256 bit HighwayHash for the CPU on which we're currently running:
+
+ #include "highwayhash/highwayhash_target.h"
+ #include "highwayhash/instruction_sets.h"
+ using namespace highwayhash;
+ const HHKey key HH_ALIGNAS(32) = {1, 2, 3, 4};
+ char in[8] = {1};
+ HHResult64 result; // or HHResult128 or HHResult256
+ InstructionSets::Run<HighwayHash>(key, in, 8, &result);
+
+C-callable 64-bit HighwayHash for the CPU on which we're currently running:
+
+ #include "highwayhash/c_bindings.h"
+ const uint64_t key[4] = {1, 2, 3, 4};
+ char in[8] = {1};
+ return HighwayHash64(key, in, 8);
+
+## Introduction
+
+Hash functions are widely used, so it is desirable to increase their speed and
+security. This package provides two 'strong' (well-distributed and
+unpredictable) hash functions: a faster version of SipHash, and an even faster
+algorithm we call HighwayHash.
+
+SipHash is a fast but 'cryptographically strong' pseudo-random function by
+Aumasson and Bernstein [https://www.131002.net/siphash/siphash.pdf].
+
+HighwayHash is a new way of mixing inputs which may inspire new
+cryptographically strong hashes. Large inputs are processed at a rate of 0.24
+cycles per byte, and latency remains low even for small inputs. HighwayHash is
+faster than SipHash for all input sizes, with 5 times higher throughput at 1
+KiB. We discuss design choices and provide statistical analysis and preliminary
+cryptanalysis in https://arxiv.org/abs/1612.06257.
+
+## Applications
+
+Unlike prior strong hashes, these functions are fast enough to be recommended
+as safer replacements for weak hashes in many applications. The additional CPU
+cost appears affordable, based on profiling data indicating C++ hash functions
+account for less than 0.25% of CPU usage.
+
+Hash-based selection of random subsets is useful for A/B experiments and similar
+applications. Such random generators are idempotent (repeatable and
+deterministic), which is helpful for parallel algorithms and testing. To avoid
+bias, it is important that the hash function be unpredictable and
+indistinguishable from a uniform random generator. We have verified the bit
+distribution and avalanche properties of SipHash and HighwayHash.
+
+64-bit hashes are also useful for authenticating short-lived messages such as
+network/RPC packets. This requires that the hash function withstand
+differential, length extension and other attacks. We have published a formal
+security analysis for HighwayHash. New cryptanalysis tools may still need to be
+developed for further analysis.
+
+Strong hashes are also important parts of methods for protecting hash tables
+against unacceptable worst-case behavior and denial of service attacks
+(see "hash flooding" below).
+
+## SipHash
+
+Our SipHash implementation is a fast and portable drop-in replacement for
+the reference C code. Outputs are identical for the given test cases (messages
+between 0 and 63 bytes).
+
+Interestingly, it is about twice as fast as a SIMD implementation using SSE4.1
+(https://goo.gl/80GBSD). This is presumably due to the lack of SIMD bit rotate
+instructions.
+
+SipHash13 is a faster but weaker variant with one mixing round per update and
+three during finalization.
+
+We also provide a data-parallel 'tree hash' variant that enables efficient SIMD
+while retaining safety guarantees. This is about twice as fast as SipHash, but
+does not return the same results.
+
+## HighwayHash
+
+We have devised a new way of mixing inputs with AVX2 multiply and permute
+instructions. The multiplications are 32x32 -> 64 bits and therefore infeasible
+to reverse. Permuting equalizes the distribution of the resulting bytes.
+
+The internal state occupies four 256-bit AVX2 registers. Due to limitations of
+the instruction set, the registers are partitioned into two 512-bit halves that
+remain independent until the reduce phase. The algorithm outputs 64 bit digests
+or up to 256 bits at no extra cost.
+
+In addition to high throughput, the algorithm is designed for low finalization
+cost. The result is more than twice as fast as SipTreeHash.
+
+For older CPUs, we also provide an SSE4.1 version (80% as fast for large inputs
+and 95% as fast for short inputs) and a portable version (10% as fast).
+
+Statistical analyses and preliminary cryptanalysis are given in
+https://arxiv.org/abs/1612.06257.
+
+## Versioning and stability
+
+SipHash and HighwayHash 1.0 are 'fingerprint functions' whose input -> hash
+mapping will not change. This is important for applications that write hashes to
+persistent storage.
+
+HighwayHash has not yet reached 1.0 and may still change in the near future. We
+will announce when it is frozen.
+
+## Speed measurements
+
+To measure the CPU cost of a hash function, we can either create an artificial
+'microbenchmark' (easier to control, but probably not representative of the
+actual runtime), or insert instrumentation directly into an application (risks
+influencing the results through observer overhead). We provide novel variants of
+both approaches that mitigate their respective disadvantages.
+
+profiler.h uses software write-combining to stream program traces to memory
+with minimal overhead. These can be analyzed offline, or when memory is full,
+to learn how much time was spent in each (possibly nested) zone.
+
+nanobenchmark.h enables cycle-accurate measurements of very short functions.
+It uses CPU fences and robust statistics to minimize variability, and also
+avoids unrealistic branch prediction effects.
+
+We compile the C++ implementations with a patched GCC 4.9 and run on a single
+core of a Xeon E5-2690 v3 clocked at 2.6 GHz. CPU cost is measured as cycles per
+byte for various input sizes:
+
+Algorithm | 8 | 31 | 32 | 63 | 64 | 1024
+---------------- | ----- | ---- | ---- | ---- | ---- | ----
+HighwayHashAVX2 | 7.34 | 1.81 | 1.71 | 1.04 | 0.95 | 0.24
+HighwayHashSSE41 | 8.00 | 2.11 | 1.75 | 1.13 | 0.96 | 0.30
+SipTreeHash | 16.51 | 4.57 | 4.09 | 2.22 | 2.29 | 0.57
+SipTreeHash13 | 12.33 | 3.47 | 3.06 | 1.68 | 1.63 | 0.33
+SipHash | 8.13 | 2.58 | 2.73 | 1.87 | 1.93 | 1.26
+SipHash13 | 6.96 | 2.09 | 2.12 | 1.32 | 1.33 | 0.68
+
+SipTreeHash is slower than SipHash for small inputs because it processes blocks
+of 32 bytes. AVX2 and SSE4.1 HighwayHash are faster than SipHash for all input
+sizes due to their highly optimized handling of partial vectors.
+
+Note that previous measurements included the initialization of their input,
+which dramatically increased timings especially for small inputs.
+
+## CPU requirements
+
+SipTreeHash[13] requires an AVX2-capable CPU (e.g. Haswell). HighwayHash
+includes a dispatcher that chooses the best available (AVX2, SSE4.1 or portable)
+implementation at runtime, as well as a directly callable function template that
+can only run on the CPU for which it was built. SipHash[13] and
+ScalarSipTreeHash[13] have no particular CPU requirements.
+
+Our implementations use custom AVX2 vector classes with overloaded operators
+(e.g. `const V4x64U a = b + c`) for type-safety and improved readability vs.
+compiler intrinsics (e.g. `const __m256i a = _mm256_add_epi64(b, c)`).
+
+We intend to port HighwayHash to other SIMD-capable platforms, especially ARM.
+
+Our instruction_sets dispatcher avoids running newer instructions on older CPUs
+that do not support them. However, intrinsics, and therefore also any vector
+classes that use them, require a compiler flag that also enables the compiler to
+generate code for that CPU. This means the intrinsics must be placed in separate
+translation units that are compiled with the required flags. It is important
+that these source files and their headers not define any inline functions,
+because that might break the one definition rule and cause crashes.
+
+To minimize dispatch overhead when hashes are computed often (e.g. in a loop),
+we can inline the hash function into its caller using templates. The dispatch
+overhead will only be paid once (e.g. before the loop). The template mechanism
+also avoids duplicating code in each CPU-specific implementation.
+
+## Defending against hash flooding
+
+To mitigate hash flooding attacks, we need to take both the hash function and
+the data structure into account.
+
+We wish to defend (web) services that utilize hash sets/maps against
+denial-of-service attacks. Such data structures assign attacker-controlled
+input messages `m` to a hash table bin `b` by computing the hash `H(s, m)`
+using a hash function `H` seeded by `s`, and mapping it to a bin with some
+narrowing function `b = R(h)`, discussed below.
+
+Attackers may attempt to trigger 'flooding' (excessive work in insertions or
+lookups) by finding multiple `m` that map to the same bin. If the attacker has
+local access, they can do far worse, so we assume the attacker can only issue
+remote requests. If the attacker is able to send large numbers of requests,
+they can already deny service, so we need only ensure the attacker's cost is
+sufficiently large compared to the service's provisioning.
+
+If the hash function is 'weak', attackers can easily generate 'hash collisions'
+(inputs mapping to the same hash values) that are independent of the seed. In
+other words, certain input messages will cause collisions regardless of the seed
+value. The author of SipHash has published C++ programs to generate such
+'universal (key-independent) multicollisions' for CityHash and Murmur. Similar
+'differential' attacks are likely possible for any hash function consisting only
+of reversible operations (e.g. addition/multiplication/rotation) with a constant
+operand. `n` requests with such inputs cause `n^2` work for an unprotected hash
+table, which is unacceptable.
+
+By contrast, 'strong' hashes such as SipHash or HighwayHash require infeasible
+attacker effort to find a hash collision (an expected 2^32 guesses of `m` per
+the birthday paradox) or recover the seed (2^63 requests). These security claims
+assume the seed is secret. It is reasonable to suppose `s` is initially unknown
+to attackers, e.g. generated on startup or even per-connection. A timing attack
+by Wool/Bar-Yosef recovers 13-bit seeds by testing all 8K possibilities using
+millions of requests, which takes several days (even assuming unrealistic 150 us
+round-trip times). It appears infeasible to recover 64-bit seeds in this way.
+
+However, attackers are only looking for multiple `m` mapping to the same bin
+rather than identical hash values. We assume they know or are able to discover
+the hash table size `p`. It is common to choose `p = 2^i` to enable an efficient
+`R(h) := h & (p - 1)`, which simply retains the lower hash bits. It may be
+easier for attackers to compute partial collisions where only the lower `i` bits
+match. This can be prevented by choosing a prime `p` so that `R(h) := h % p`
+incorporates all hash bits. The costly modulo operation can be avoided by
+multiplying with the inverse (https://goo.gl/l7ASm8). An interesting alternative
+suggested by Kyoung Jae Seo chooses a random subset of the `h` bits. Such an `R`
+function can be computed in just 3 cycles using PEXT from the BMI2 instruction
+set. This is expected to defend against SAT-solver attacks on the hash bits at a
+slightly lower cost than the multiplicative inverse method, and still allows
+power-of-two table sizes.
+
+Summary thus far: given a strong hash function and secret seed, it appears
+infeasible for attackers to generate hash collisions because `s` and/or `R` are
+unknown. However, they can still observe the timings of data structure
+operations for various `m`. With typical table sizes of 2^10 to 2^17 entries,
+attackers can detect some 'bin collisions' (inputs mapping to the same bin).
+Although this will be costly for the attacker, they can then send many instances
+of such inputs, so we need to limit the resulting work for our data structure.
+
+Hash tables with separate chaining typically store bin entries in a linked list,
+so worst-case inputs lead to unacceptable linear-time lookup cost. We instead
+seek optimal asymptotic worst-case complexity for each operation (insertion,
+deletion and lookups), which is a constant factor times the logarithm of the
+data structure size. This naturally leads to a tree-like data structure for each
+bin. The Java8 HashMap only replaces its linked list with trees when needed.
+This leads to additional cost and complexity for deciding whether a bin is a
+list or tree.
+
+Our first proposal (suggested by Github user funny-falcon) avoids this overhead
+by always storing one tree per bin. It may also be worthwhile to store the first
+entry directly in the bin, which avoids allocating any tree nodes in the common
+case where bins are sparsely populated. What kind of tree should be used?
+Scapegoat and splay trees only offer amortized complexity guarantees, whereas
+treaps require an entropy source and have higher constant factors in practice.
+Self-balancing structures such as 2-3 or red-black trees require additional
+bookkeeping information. We can hope to reduce rebalancing cost by realizing
+that the output bits of strong `H` functions are uniformly distributed. When
+using them as keys instead of the original message `m`, recent relaxed balancing
+schemes such as left-leaning red-black or weak AVL trees may require fewer tree
+rotations to maintain their invariants. Note that `H` already determines the
+bin, so we should only use the remaining bits. 64-bit hashes are likely
+sufficient for this purpose, and HighwayHash generates up to 256 bits. It seems
+unlikely that attackers can craft inputs resulting in worst cases for both the
+bin index and tree key without being able to generate hash collisions, which
+would contradict the security claims of strong hashes. Even if they succeed, the
+relaxed tree balancing still guarantees an upper bound on height and therefore
+the worst-case operation cost. For the AVL variant, the constant factors are
+slightly lower than for red-black trees.
+
+The second proposed approach uses augmented/de-amortized cuckoo hash tables
+(https://goo.gl/PFwwkx). These guarantee worst-case `log n` bounds for all
+operations, but only if the hash function is 'indistinguishable from random'
+(uniformly distributed regardless of the input distribution), which is claimed
+for SipHash and HighwayHash but certainly not for weak hashes.
+
+Both alternatives retain good average case performance and defend against
+flooding by limiting the amount of extra work an attacker can cause. The first
+approach guarantees an upper bound of `log n` additional work even if the hash
+function is compromised.
+
+In summary, a strong hash function is not, by itself, sufficient to protect a
+chained hash table from flooding attacks. However, strong hash functions are
+important parts of two schemes for preventing denial of service. Using weak hash
+functions can slightly accelerate the best-case and average-case performance of
+a service, but at the risk of greatly reduced attack costs and worst-case
+performance.
+
+## Third-party implementations / bindings
+
+Thanks to Damian Gryski for making us aware of these third-party
+implementations or bindings. Please feel free to get in touch or
+raise an issue and we'll add yours as well.
+
+By | Language | URL
+--- | --- | ---
+Damian Gryski | Go and SSE | https://github.com/dgryski/go-highway/
+Lovell Fuller | node.js bindings | https://github.com/lovell/highwayhash
+Vinzent Steinberg | Rust bindings | https://github.com/vks/highwayhash-rs
+
+## Modules
+
+### Hashes
+
+* c_bindings.h declares C-callable versions of SipHash/HighwayHash.
+* sip_hash.cc is the compatible implementation of SipHash, and also provides
+ the final reduction for sip_tree_hash.
+* sip_tree_hash.cc is the faster but incompatible SIMD j-lanes tree hash.
+* scalar_sip_tree_hash.cc is a non-SIMD version.
+* state_helpers.h simplifies the implementation of the SipHash variants.
+* highwayhash.h is our new, fast hash function.
+* hh_avx2.h, hh_sse41.h and hh_portable.h are its various implementations.
+* highwayhash_target.h chooses the best available implementation at runtime.
+
+### Infrastructure
+
+* arch_specific.h offers byte swapping and CPUID detection.
+* compiler_specific.h defines some compiler-dependent language extensions.
+* data_parallel.h provides a C++11 ThreadPool and PerThread (similar to
+ OpenMP).
+* instruction_sets.h and targets.h enable efficient CPU-specific dispatching.
+* nanobenchmark.h measures elapsed times with < 1 cycle variability.
+* os_specific.h sets thread affinity and priority for benchmarking.
+* profiler.h is a low-overhead, deterministic hierarchical profiler.
+* tsc_timer.h obtains high-resolution timestamps without CPU reordering.
+* vector256.h and vector128.h contain wrapper classes for AVX2 and SSE4.1.
+
+By Jan Wassenberg <jan.wassenberg@gmail.com> and Jyrki Alakuijala
+<jyrki.alakuijala@gmail.com>, updated 2017-02-07
+
+This is not an official Google product.
diff --git a/contrib/libs/highwayhash/arch/avx2/ya.make b/contrib/libs/highwayhash/arch/avx2/ya.make
index df09ac249e..3084a352d8 100644
--- a/contrib/libs/highwayhash/arch/avx2/ya.make
+++ b/contrib/libs/highwayhash/arch/avx2/ya.make
@@ -1,22 +1,22 @@
-LIBRARY()
-
+LIBRARY()
+
WITHOUT_LICENSE_TEXTS()
LICENSE(Apache-2.0)
OWNER(somov)
-
-ADDINCL(contrib/libs/highwayhash)
-
-SRCDIR(contrib/libs/highwayhash/highwayhash)
-
-CFLAGS(-mavx2)
-
-NO_COMPILER_WARNINGS()
-
-SRCS(
- sip_tree_hash.cc
- hh_avx2.cc
-)
-
-END()
+
+ADDINCL(contrib/libs/highwayhash)
+
+SRCDIR(contrib/libs/highwayhash/highwayhash)
+
+CFLAGS(-mavx2)
+
+NO_COMPILER_WARNINGS()
+
+SRCS(
+ sip_tree_hash.cc
+ hh_avx2.cc
+)
+
+END()
diff --git a/contrib/libs/highwayhash/arch/sse41/ya.make b/contrib/libs/highwayhash/arch/sse41/ya.make
index e56731ef9a..d94ad97038 100644
--- a/contrib/libs/highwayhash/arch/sse41/ya.make
+++ b/contrib/libs/highwayhash/arch/sse41/ya.make
@@ -1,21 +1,21 @@
-LIBRARY()
-
+LIBRARY()
+
WITHOUT_LICENSE_TEXTS()
LICENSE(Apache-2.0)
OWNER(somov)
-
-ADDINCL(contrib/libs/highwayhash)
-
-SRCDIR(contrib/libs/highwayhash/highwayhash)
-
-CFLAGS(-msse4.1)
-
-NO_COMPILER_WARNINGS()
-
-SRCS(
- hh_sse41.cc
-)
-
-END()
+
+ADDINCL(contrib/libs/highwayhash)
+
+SRCDIR(contrib/libs/highwayhash/highwayhash)
+
+CFLAGS(-msse4.1)
+
+NO_COMPILER_WARNINGS()
+
+SRCS(
+ hh_sse41.cc
+)
+
+END()
diff --git a/contrib/libs/highwayhash/highwayhash/arch_specific.cc b/contrib/libs/highwayhash/highwayhash/arch_specific.cc
index b8048e46ee..1ab839f58b 100644
--- a/contrib/libs/highwayhash/highwayhash/arch_specific.cc
+++ b/contrib/libs/highwayhash/highwayhash/arch_specific.cc
@@ -1,118 +1,118 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "highwayhash/arch_specific.h"
-
-#include <stdint.h>
-
-#if HH_ARCH_X64 && !HH_MSC_VERSION
-# include <cpuid.h>
-#endif
-
-#include <string.h> // memcpy
-#include <string>
-
-namespace highwayhash {
-
-const char* TargetName(const TargetBits target_bit) {
- switch (target_bit) {
- case HH_TARGET_Portable:
- return "Portable";
- case HH_TARGET_SSE41:
- return "SSE41";
- case HH_TARGET_AVX2:
- return "AVX2";
- default:
- return nullptr; // zero, multiple, or unknown bits
- }
-}
-
-#if HH_ARCH_X64
-
-void Cpuid(const uint32_t level, const uint32_t count,
- uint32_t* HH_RESTRICT abcd) {
-#if HH_MSC_VERSION
- int regs[4];
- __cpuidex(regs, level, count);
- for (int i = 0; i < 4; ++i) {
- abcd[i] = regs[i];
- }
-#else
- uint32_t a, b, c, d;
- __cpuid_count(level, count, a, b, c, d);
- abcd[0] = a;
- abcd[1] = b;
- abcd[2] = c;
- abcd[3] = d;
-#endif
-}
-
-uint32_t ApicId() {
- uint32_t abcd[4];
- Cpuid(1, 0, abcd);
- return abcd[1] >> 24; // ebx
-}
-
-namespace {
-
-std::string BrandString() {
- char brand_string[49];
- uint32_t abcd[4];
-
- // Check if brand string is supported (it is on all reasonable Intel/AMD)
- Cpuid(0x80000000U, 0, abcd);
- if (abcd[0] < 0x80000004U) {
- return std::string();
- }
-
- for (int i = 0; i < 3; ++i) {
- Cpuid(0x80000002U + i, 0, abcd);
- memcpy(brand_string + i * 16, &abcd, sizeof(abcd));
- }
- brand_string[48] = 0;
- return brand_string;
-}
-
-double DetectInvariantCyclesPerSecond() {
- const std::string& brand_string = BrandString();
- // Brand strings include the maximum configured frequency. These prefixes are
- // defined by Intel CPUID documentation.
- const char* prefixes[3] = {"MHz", "GHz", "THz"};
- const double multipliers[3] = {1E6, 1E9, 1E12};
- for (size_t i = 0; i < 3; ++i) {
- const size_t pos_prefix = brand_string.find(prefixes[i]);
- if (pos_prefix != std::string::npos) {
- const size_t pos_space = brand_string.rfind(' ', pos_prefix - 1);
- if (pos_space != std::string::npos) {
- const std::string digits =
- brand_string.substr(pos_space + 1, pos_prefix - pos_space - 1);
- return std::stod(digits) * multipliers[i];
- }
- }
- }
-
- return 0.0;
-}
-
-} // namespace
-
-double InvariantCyclesPerSecond() {
- // Thread-safe caching - this is called several times.
- static const double cycles_per_second = DetectInvariantCyclesPerSecond();
- return cycles_per_second;
-}
-
-#endif // HH_ARCH_X64
-
-} // namespace highwayhash
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "highwayhash/arch_specific.h"
+
+#include <stdint.h>
+
+#if HH_ARCH_X64 && !HH_MSC_VERSION
+# include <cpuid.h>
+#endif
+
+#include <string.h> // memcpy
+#include <string>
+
+namespace highwayhash {
+
+const char* TargetName(const TargetBits target_bit) {
+ switch (target_bit) {
+ case HH_TARGET_Portable:
+ return "Portable";
+ case HH_TARGET_SSE41:
+ return "SSE41";
+ case HH_TARGET_AVX2:
+ return "AVX2";
+ default:
+ return nullptr; // zero, multiple, or unknown bits
+ }
+}
+
+#if HH_ARCH_X64
+
+void Cpuid(const uint32_t level, const uint32_t count,
+ uint32_t* HH_RESTRICT abcd) {
+#if HH_MSC_VERSION
+ int regs[4];
+ __cpuidex(regs, level, count);
+ for (int i = 0; i < 4; ++i) {
+ abcd[i] = regs[i];
+ }
+#else
+ uint32_t a, b, c, d;
+ __cpuid_count(level, count, a, b, c, d);
+ abcd[0] = a;
+ abcd[1] = b;
+ abcd[2] = c;
+ abcd[3] = d;
+#endif
+}
+
+uint32_t ApicId() {
+ uint32_t abcd[4];
+ Cpuid(1, 0, abcd);
+ return abcd[1] >> 24; // ebx
+}
+
+namespace {
+
+std::string BrandString() {
+ char brand_string[49];
+ uint32_t abcd[4];
+
+ // Check if brand string is supported (it is on all reasonable Intel/AMD)
+ Cpuid(0x80000000U, 0, abcd);
+ if (abcd[0] < 0x80000004U) {
+ return std::string();
+ }
+
+ for (int i = 0; i < 3; ++i) {
+ Cpuid(0x80000002U + i, 0, abcd);
+ memcpy(brand_string + i * 16, &abcd, sizeof(abcd));
+ }
+ brand_string[48] = 0;
+ return brand_string;
+}
+
+double DetectInvariantCyclesPerSecond() {
+ const std::string& brand_string = BrandString();
+ // Brand strings include the maximum configured frequency. These prefixes are
+ // defined by Intel CPUID documentation.
+ const char* prefixes[3] = {"MHz", "GHz", "THz"};
+ const double multipliers[3] = {1E6, 1E9, 1E12};
+ for (size_t i = 0; i < 3; ++i) {
+ const size_t pos_prefix = brand_string.find(prefixes[i]);
+ if (pos_prefix != std::string::npos) {
+ const size_t pos_space = brand_string.rfind(' ', pos_prefix - 1);
+ if (pos_space != std::string::npos) {
+ const std::string digits =
+ brand_string.substr(pos_space + 1, pos_prefix - pos_space - 1);
+ return std::stod(digits) * multipliers[i];
+ }
+ }
+ }
+
+ return 0.0;
+}
+
+} // namespace
+
+double InvariantCyclesPerSecond() {
+ // Thread-safe caching - this is called several times.
+ static const double cycles_per_second = DetectInvariantCyclesPerSecond();
+ return cycles_per_second;
+}
+
+#endif // HH_ARCH_X64
+
+} // namespace highwayhash
diff --git a/contrib/libs/highwayhash/highwayhash/arch_specific.h b/contrib/libs/highwayhash/highwayhash/arch_specific.h
index 9fce08bd85..7419d8ebbc 100644
--- a/contrib/libs/highwayhash/highwayhash/arch_specific.h
+++ b/contrib/libs/highwayhash/highwayhash/arch_specific.h
@@ -1,153 +1,153 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef HIGHWAYHASH_ARCH_SPECIFIC_H_
-#define HIGHWAYHASH_ARCH_SPECIFIC_H_
-
-// WARNING: this is a "restricted" header because it is included from
-// translation units compiled with different flags. This header and its
-// dependencies must not define any function unless it is static inline and/or
-// within namespace HH_TARGET_NAME.
-//
-// Background: older GCC/Clang require flags such as -mavx2 before AVX2 SIMD
-// intrinsics can be used. These intrinsics are only used within blocks that
-// first verify CPU capabilities. However, the flag also allows the compiler to
-// generate AVX2 code in other places. This can violate the One Definition Rule,
-// which requires multiple instances of a function with external linkage
-// (e.g. extern inline in a header) to be "equivalent". To prevent the resulting
-// crashes on non-AVX2 CPUs, any header (transitively) included from a
-// translation unit compiled with different flags is "restricted". This means
-// all function definitions must have internal linkage (e.g. static inline), or
-// reside in namespace HH_TARGET_NAME, which expands to a name unique to the
-// current compiler flags.
-//
-// Most C system headers are safe to include, but C++ headers should generally
-// be avoided because they often do not specify static linkage and cannot
-// reliably be wrapped in a namespace.
-
-#include "highwayhash/compiler_specific.h"
-
-#include <stdint.h>
-
-#if HH_MSC_VERSION
-#include <intrin.h> // _byteswap_*
-#endif
-
-namespace highwayhash {
-
-#if defined(__x86_64__) || defined(_M_X64)
-#define HH_ARCH_X64 1
-#else
-#define HH_ARCH_X64 0
-#endif
-
-#ifdef __aarch64__
-#define HH_ARCH_AARCH64 1
-#else
-#define HH_ARCH_AARCH64 0
-#endif
-
-#if defined(__powerpc64__) || defined(_M_PPC)
-#define HH_ARCH_PPC 1
-#else
-#define HH_ARCH_PPC 0
-#endif
-
-// Target := instruction set extension(s) such as SSE41. A translation unit can
-// only provide a single target-specific implementation because they require
-// different compiler flags.
-
-// Either the build system specifies the target by defining HH_TARGET_NAME
-// (which is necessary for Portable on X64, and SSE41 on MSVC), or we'll choose
-// the most efficient one that can be compiled given the current flags:
-#ifndef HH_TARGET_NAME
-
-// To avoid excessive code size and dispatch overhead, we only support a few
-// groups of extensions, e.g. FMA+BMI2+AVX+AVX2 =: "AVX2". These names must
-// match the HH_TARGET_* suffixes below.
-#ifdef __AVX2__
-#define HH_TARGET_NAME AVX2
-#elif defined(__SSE4_1__)
-#define HH_TARGET_NAME SSE41
-#else
-#define HH_TARGET_NAME Portable
-#endif
-
-#endif // HH_TARGET_NAME
-
-#define HH_CONCAT(first, second) first##second
-// Required due to macro expansion rules.
-#define HH_EXPAND_CONCAT(first, second) HH_CONCAT(first, second)
-// Appends HH_TARGET_NAME to "identifier_prefix".
-#define HH_ADD_TARGET_SUFFIX(identifier_prefix) \
- HH_EXPAND_CONCAT(identifier_prefix, HH_TARGET_NAME)
-
-// HH_TARGET expands to an integer constant. Typical usage: HHStateT<HH_TARGET>.
-// This ensures your code will work correctly when compiler flags are changed,
-// and benefit from subsequently added targets/specializations.
-#define HH_TARGET HH_ADD_TARGET_SUFFIX(HH_TARGET_)
-
-// Deprecated former name of HH_TARGET; please use HH_TARGET instead.
-#define HH_TARGET_PREFERRED HH_TARGET
-
-// Associate targets with integer literals so the preprocessor can compare them
-// with HH_TARGET. Do not instantiate templates with these values - use
-// HH_TARGET instead. Must be unique powers of two, see TargetBits. Always
-// defined even if unavailable on this HH_ARCH to allow calling TargetName.
-// The suffixes must match the HH_TARGET_NAME identifiers.
-#define HH_TARGET_Portable 1
-#define HH_TARGET_SSE41 2
-#define HH_TARGET_AVX2 4
-
-// Bit array for one or more HH_TARGET_*. Used to indicate which target(s) are
-// supported or were called by InstructionSets::RunAll.
-using TargetBits = unsigned;
-
-namespace HH_TARGET_NAME {
-
-// Calls func(bit_value) for every nonzero bit in "bits".
-template <class Func>
-void ForeachTarget(TargetBits bits, const Func& func) {
- while (bits != 0) {
- const TargetBits lowest = bits & (~bits + 1);
- func(lowest);
- bits &= ~lowest;
- }
-}
-
-} // namespace HH_TARGET_NAME
-
-// Returns a brief human-readable string literal identifying one of the above
-// bits, or nullptr if zero, multiple, or unknown bits are set.
-const char* TargetName(const TargetBits target_bit);
-
-#if HH_ARCH_X64
-
-// Calls CPUID instruction with eax=level and ecx=count and returns the result
-// in abcd array where abcd = {eax, ebx, ecx, edx} (hence the name abcd).
-void Cpuid(const uint32_t level, const uint32_t count,
- uint32_t* HH_RESTRICT abcd);
-
-// Returns the APIC ID of the CPU on which we're currently running.
-uint32_t ApicId();
-
-// Returns nominal CPU clock frequency for converting tsc_timer cycles to
-// seconds. This is unaffected by CPU throttling ("invariant"). Thread-safe.
-double InvariantCyclesPerSecond();
-
-#endif // HH_ARCH_X64
-
-} // namespace highwayhash
-
-#endif // HIGHWAYHASH_ARCH_SPECIFIC_H_
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef HIGHWAYHASH_ARCH_SPECIFIC_H_
+#define HIGHWAYHASH_ARCH_SPECIFIC_H_
+
+// WARNING: this is a "restricted" header because it is included from
+// translation units compiled with different flags. This header and its
+// dependencies must not define any function unless it is static inline and/or
+// within namespace HH_TARGET_NAME.
+//
+// Background: older GCC/Clang require flags such as -mavx2 before AVX2 SIMD
+// intrinsics can be used. These intrinsics are only used within blocks that
+// first verify CPU capabilities. However, the flag also allows the compiler to
+// generate AVX2 code in other places. This can violate the One Definition Rule,
+// which requires multiple instances of a function with external linkage
+// (e.g. extern inline in a header) to be "equivalent". To prevent the resulting
+// crashes on non-AVX2 CPUs, any header (transitively) included from a
+// translation unit compiled with different flags is "restricted". This means
+// all function definitions must have internal linkage (e.g. static inline), or
+// reside in namespace HH_TARGET_NAME, which expands to a name unique to the
+// current compiler flags.
+//
+// Most C system headers are safe to include, but C++ headers should generally
+// be avoided because they often do not specify static linkage and cannot
+// reliably be wrapped in a namespace.
+
+#include "highwayhash/compiler_specific.h"
+
+#include <stdint.h>
+
+#if HH_MSC_VERSION
+#include <intrin.h> // _byteswap_*
+#endif
+
+namespace highwayhash {
+
+#if defined(__x86_64__) || defined(_M_X64)
+#define HH_ARCH_X64 1
+#else
+#define HH_ARCH_X64 0
+#endif
+
+#ifdef __aarch64__
+#define HH_ARCH_AARCH64 1
+#else
+#define HH_ARCH_AARCH64 0
+#endif
+
+#if defined(__powerpc64__) || defined(_M_PPC)
+#define HH_ARCH_PPC 1
+#else
+#define HH_ARCH_PPC 0
+#endif
+
+// Target := instruction set extension(s) such as SSE41. A translation unit can
+// only provide a single target-specific implementation because they require
+// different compiler flags.
+
+// Either the build system specifies the target by defining HH_TARGET_NAME
+// (which is necessary for Portable on X64, and SSE41 on MSVC), or we'll choose
+// the most efficient one that can be compiled given the current flags:
+#ifndef HH_TARGET_NAME
+
+// To avoid excessive code size and dispatch overhead, we only support a few
+// groups of extensions, e.g. FMA+BMI2+AVX+AVX2 =: "AVX2". These names must
+// match the HH_TARGET_* suffixes below.
+#ifdef __AVX2__
+#define HH_TARGET_NAME AVX2
+#elif defined(__SSE4_1__)
+#define HH_TARGET_NAME SSE41
+#else
+#define HH_TARGET_NAME Portable
+#endif
+
+#endif // HH_TARGET_NAME
+
+#define HH_CONCAT(first, second) first##second
+// Required due to macro expansion rules.
+#define HH_EXPAND_CONCAT(first, second) HH_CONCAT(first, second)
+// Appends HH_TARGET_NAME to "identifier_prefix".
+#define HH_ADD_TARGET_SUFFIX(identifier_prefix) \
+ HH_EXPAND_CONCAT(identifier_prefix, HH_TARGET_NAME)
+
+// HH_TARGET expands to an integer constant. Typical usage: HHStateT<HH_TARGET>.
+// This ensures your code will work correctly when compiler flags are changed,
+// and benefit from subsequently added targets/specializations.
+#define HH_TARGET HH_ADD_TARGET_SUFFIX(HH_TARGET_)
+
+// Deprecated former name of HH_TARGET; please use HH_TARGET instead.
+#define HH_TARGET_PREFERRED HH_TARGET
+
+// Associate targets with integer literals so the preprocessor can compare them
+// with HH_TARGET. Do not instantiate templates with these values - use
+// HH_TARGET instead. Must be unique powers of two, see TargetBits. Always
+// defined even if unavailable on this HH_ARCH to allow calling TargetName.
+// The suffixes must match the HH_TARGET_NAME identifiers.
+#define HH_TARGET_Portable 1
+#define HH_TARGET_SSE41 2
+#define HH_TARGET_AVX2 4
+
+// Bit array for one or more HH_TARGET_*. Used to indicate which target(s) are
+// supported or were called by InstructionSets::RunAll.
+using TargetBits = unsigned;
+
+namespace HH_TARGET_NAME {
+
+// Calls func(bit_value) for every nonzero bit in "bits".
+template <class Func>
+void ForeachTarget(TargetBits bits, const Func& func) {
+ while (bits != 0) {
+ const TargetBits lowest = bits & (~bits + 1);
+ func(lowest);
+ bits &= ~lowest;
+ }
+}
+
+} // namespace HH_TARGET_NAME
+
+// Returns a brief human-readable string literal identifying one of the above
+// bits, or nullptr if zero, multiple, or unknown bits are set.
+const char* TargetName(const TargetBits target_bit);
+
+#if HH_ARCH_X64
+
+// Calls CPUID instruction with eax=level and ecx=count and returns the result
+// in abcd array where abcd = {eax, ebx, ecx, edx} (hence the name abcd).
+void Cpuid(const uint32_t level, const uint32_t count,
+ uint32_t* HH_RESTRICT abcd);
+
+// Returns the APIC ID of the CPU on which we're currently running.
+uint32_t ApicId();
+
+// Returns nominal CPU clock frequency for converting tsc_timer cycles to
+// seconds. This is unaffected by CPU throttling ("invariant"). Thread-safe.
+double InvariantCyclesPerSecond();
+
+#endif // HH_ARCH_X64
+
+} // namespace highwayhash
+
+#endif // HIGHWAYHASH_ARCH_SPECIFIC_H_
diff --git a/contrib/libs/highwayhash/highwayhash/benchmark.cc b/contrib/libs/highwayhash/highwayhash/benchmark.cc
index 7279b295b9..0422690872 100644
--- a/contrib/libs/highwayhash/highwayhash/benchmark.cc
+++ b/contrib/libs/highwayhash/highwayhash/benchmark.cc
@@ -1,313 +1,313 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Measures hash function throughput for various input sizes.
-
-#include <algorithm>
-#include <cassert>
-#include <cstddef>
-#include <cstdio>
-#include <cstdlib>
-#include <map>
-#include <string>
-#include <utility>
-#include <vector>
-
-#include "highwayhash/compiler_specific.h"
-#include "highwayhash/instruction_sets.h"
-#include "highwayhash/nanobenchmark.h"
-#include "highwayhash/os_specific.h"
-#include "highwayhash/robust_statistics.h"
-
-// Which functions to enable (includes check for compiler support)
-#define BENCHMARK_SIP 0
-#define BENCHMARK_SIP_TREE 0
-#define BENCHMARK_HIGHWAY 1
-#define BENCHMARK_HIGHWAY_CAT 1
-#define BENCHMARK_FARM 0
-
-#include "highwayhash/highwayhash_test_target.h"
-#if BENCHMARK_SIP
-#include "highwayhash/sip_hash.h"
-#endif
-#if BENCHMARK_SIP_TREE
-#include "highwayhash/scalar_sip_tree_hash.h"
-#include "highwayhash/sip_tree_hash.h"
-#endif
-#if BENCHMARK_FARM
-#include "third_party/farmhash/src/farmhash.h"
-#endif
-
-namespace highwayhash {
-namespace {
-
-// Stores time measurements from benchmarks, with support for printing them
-// as LaTeX figures or tables.
-class Measurements {
- public:
- void Add(const char* caption, const size_t bytes, const double cycles) {
- const float cpb = static_cast<float>(cycles / bytes);
- results_.emplace_back(caption, static_cast<int>(bytes), cpb);
- }
-
- // Prints results as a LaTeX table (only for in_sizes matching the
- // desired values).
- void PrintTable(const std::vector<size_t>& in_sizes) {
- std::vector<size_t> unique = in_sizes;
- std::sort(unique.begin(), unique.end());
- unique.erase(std::unique(unique.begin(), unique.end()), unique.end());
-
- printf("\\begin{tabular}{");
- for (size_t i = 0; i < unique.size() + 1; ++i) {
- printf("%s", i == 0 ? "r" : "|r");
- }
- printf("}\n\\toprule\nAlgorithm");
- for (const size_t in_size : unique) {
- printf(" & %zu", in_size);
- }
- printf("\\\\\n\\midrule\n");
-
- const SpeedsForCaption cpb_for_caption = SortByCaptionFilterBySize(unique);
- for (const auto& item : cpb_for_caption) {
- printf("%22s", item.first.c_str());
- for (const float cpb : item.second) {
- printf(" & %5.2f", cpb);
- }
- printf("\\\\\n");
- }
- }
-
- // Prints results suitable for pgfplots.
- void PrintPlots() {
- const SpeedsForCaption cpb_for_caption = SortByCaption();
- assert(!cpb_for_caption.empty());
- const size_t num_sizes = cpb_for_caption.begin()->second.size();
-
- printf("Size ");
- // Flatten per-caption vectors into one iterator.
- std::vector<std::vector<float>::const_iterator> iterators;
- for (const auto& item : cpb_for_caption) {
- printf("%21s ", item.first.c_str());
- assert(item.second.size() == num_sizes);
- iterators.push_back(item.second.begin());
- }
- printf("\n");
-
- const std::vector<int>& sizes = UniqueSizes();
- assert(num_sizes == sizes.size());
- for (int i = 0; i < static_cast<int>(num_sizes); ++i) {
- printf("%d ", sizes[i]);
- for (auto& it : iterators) {
- printf("%5.2f ", 1.0f / *it); // bytes per cycle
- ++it;
- }
- printf("\n");
- }
- }
-
- private:
- struct Result {
- Result(const char* caption, const int in_size, const float cpb)
- : caption(caption), in_size(in_size), cpb(cpb) {}
-
- // Algorithm name.
- std::string caption;
- // Size of the input data [bytes].
- int in_size;
- // Measured throughput [cycles per byte].
- float cpb;
- };
-
- // Returns set of all input sizes for the first column of a size/speed plot.
- std::vector<int> UniqueSizes() {
- std::vector<int> sizes;
- sizes.reserve(results_.size());
- for (const Result& result : results_) {
- sizes.push_back(result.in_size);
- }
- std::sort(sizes.begin(), sizes.end());
- sizes.erase(std::unique(sizes.begin(), sizes.end()), sizes.end());
- return sizes;
- }
-
- using SpeedsForCaption = std::map<std::string, std::vector<float>>;
-
- SpeedsForCaption SortByCaption() const {
- SpeedsForCaption cpb_for_caption;
- for (const Result& result : results_) {
- cpb_for_caption[result.caption].push_back(result.cpb);
- }
- return cpb_for_caption;
- }
-
- // Only includes measurement results matching one of the given sizes.
- SpeedsForCaption SortByCaptionFilterBySize(
- const std::vector<size_t>& in_sizes) const {
- SpeedsForCaption cpb_for_caption;
- for (const Result& result : results_) {
- for (const size_t in_size : in_sizes) {
- if (result.in_size == static_cast<int>(in_size)) {
- cpb_for_caption[result.caption].push_back(result.cpb);
- }
- }
- }
- return cpb_for_caption;
- }
-
- std::vector<Result> results_;
-};
-
-void AddMeasurements(DurationsForInputs* input_map, const char* caption,
- Measurements* measurements) {
- for (size_t i = 0; i < input_map->num_items; ++i) {
- const DurationsForInputs::Item& item = input_map->items[i];
- std::vector<float> durations(item.durations,
- item.durations + item.num_durations);
- const float median = Median(&durations);
- const float variability = MedianAbsoluteDeviation(durations, median);
- printf("%s %4zu: median=%6.1f cycles; median L1 norm =%4.1f cycles\n",
- caption, item.input, median, variability);
- measurements->Add(caption, item.input, median);
- }
- input_map->num_items = 0;
-}
-
-#if BENCHMARK_SIP || BENCHMARK_FARM || (BENCHMARK_SIP_TREE && defined(__AVX2__))
-
-void MeasureAndAdd(DurationsForInputs* input_map, const char* caption,
- const Func func, Measurements* measurements) {
- MeasureDurations(func, input_map);
- AddMeasurements(input_map, caption, measurements);
-}
-
-#endif
-
-// InstructionSets::RunAll callback.
-void AddMeasurementsWithPrefix(const char* prefix, const char* target_name,
- DurationsForInputs* input_map, void* context) {
- std::string caption(prefix);
- caption += target_name;
- AddMeasurements(input_map, caption.c_str(),
- static_cast<Measurements*>(context));
-}
-
-#if BENCHMARK_SIP
-
-uint64_t RunSip(const size_t size) {
- const HH_U64 key2[2] HH_ALIGNAS(16) = {0, 1};
- char in[kMaxBenchmarkInputSize];
- memcpy(in, &size, sizeof(size));
- return SipHash(key2, in, size);
-}
-
-uint64_t RunSip13(const size_t size) {
- const HH_U64 key2[2] HH_ALIGNAS(16) = {0, 1};
- char in[kMaxBenchmarkInputSize];
- memcpy(in, &size, sizeof(size));
- return SipHash13(key2, in, size);
-}
-
-#endif
-
-#if BENCHMARK_SIP_TREE
-
-uint64_t RunSipTree(const size_t size) {
- const HH_U64 key4[4] HH_ALIGNAS(32) = {0, 1, 2, 3};
- char in[kMaxBenchmarkInputSize];
- memcpy(in, &size, sizeof(size));
- return SipTreeHash(key4, in, size);
-}
-
-uint64_t RunSipTree13(const size_t size) {
- const HH_U64 key4[4] HH_ALIGNAS(32) = {0, 1, 2, 3};
- char in[kMaxBenchmarkInputSize];
- memcpy(in, &size, sizeof(size));
- return SipTreeHash13(key4, in, size);
-}
-
-#endif
-
-#if BENCHMARK_FARM
-
-uint64_t RunFarm(const size_t size) {
- char in[kMaxBenchmarkInputSize];
- memcpy(in, &size, sizeof(size));
- return farmhash::Fingerprint64(reinterpret_cast<const char*>(in), size);
-}
-
-#endif
-
-void AddMeasurements(const std::vector<size_t>& in_sizes,
- Measurements* measurements) {
- DurationsForInputs input_map(in_sizes.data(), in_sizes.size(), 40);
-#if BENCHMARK_SIP
- MeasureAndAdd(&input_map, "SipHash", RunSip, measurements);
- MeasureAndAdd(&input_map, "SipHash13", RunSip13, measurements);
-#endif
-
-#if BENCHMARK_SIP_TREE && defined(__AVX2__)
- MeasureAndAdd(&input_map, "SipTreeHash", RunSipTree, measurements);
- MeasureAndAdd(&input_map, "SipTreeHash13", RunSipTree13, measurements);
-#endif
-
-#if BENCHMARK_FARM
- MeasureAndAdd(&input_map, "Farm", &RunFarm, measurements);
-#endif
-
-#if BENCHMARK_HIGHWAY
- InstructionSets::RunAll<HighwayHashBenchmark>(
- &input_map, &AddMeasurementsWithPrefix, measurements);
-#endif
-
-#if BENCHMARK_HIGHWAY_CAT
- InstructionSets::RunAll<HighwayHashCatBenchmark>(
- &input_map, &AddMeasurementsWithPrefix, measurements);
-#endif
-}
-
-void PrintTable() {
- const std::vector<size_t> in_sizes = {
- 7, 8, 31, 32, 63, 64, kMaxBenchmarkInputSize};
- Measurements measurements;
- AddMeasurements(in_sizes, &measurements);
- measurements.PrintTable(in_sizes);
-}
-
-void PrintPlots() {
- std::vector<size_t> in_sizes;
- for (int num_vectors = 0; num_vectors < 12; ++num_vectors) {
- for (int remainder : {0, 9, 18, 27}) {
- in_sizes.push_back(num_vectors * 32 + remainder);
- assert(in_sizes.back() <= kMaxBenchmarkInputSize);
- }
- }
-
- Measurements measurements;
- AddMeasurements(in_sizes, &measurements);
- measurements.PrintPlots();
-}
-
-} // namespace
-} // namespace highwayhash
-
-int main(int argc, char* argv[]) {
- highwayhash::PinThreadToRandomCPU();
- // No argument or t => table
- if (argc < 2 || argv[1][0] == 't') {
- highwayhash::PrintTable();
- } else if (argv[1][0] == 'p') {
- highwayhash::PrintPlots();
- }
- return 0;
-}
+// Copyright 2016 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Measures hash function throughput for various input sizes.
+
+#include <algorithm>
+#include <cassert>
+#include <cstddef>
+#include <cstdio>
+#include <cstdlib>
+#include <map>
+#include <string>
+#include <utility>
+#include <vector>
+
+#include "highwayhash/compiler_specific.h"
+#include "highwayhash/instruction_sets.h"
+#include "highwayhash/nanobenchmark.h"
+#include "highwayhash/os_specific.h"
+#include "highwayhash/robust_statistics.h"
+
+// Which functions to enable (includes check for compiler support)
+#define BENCHMARK_SIP 0
+#define BENCHMARK_SIP_TREE 0
+#define BENCHMARK_HIGHWAY 1
+#define BENCHMARK_HIGHWAY_CAT 1
+#define BENCHMARK_FARM 0
+
+#include "highwayhash/highwayhash_test_target.h"
+#if BENCHMARK_SIP
+#include "highwayhash/sip_hash.h"
+#endif
+#if BENCHMARK_SIP_TREE
+#include "highwayhash/scalar_sip_tree_hash.h"
+#include "highwayhash/sip_tree_hash.h"
+#endif
+#if BENCHMARK_FARM
+#include "third_party/farmhash/src/farmhash.h"
+#endif
+
+namespace highwayhash {
+namespace {
+
+// Stores time measurements from benchmarks, with support for printing them
+// as LaTeX figures or tables.
+class Measurements {
+ public:
+ void Add(const char* caption, const size_t bytes, const double cycles) {
+ const float cpb = static_cast<float>(cycles / bytes);
+ results_.emplace_back(caption, static_cast<int>(bytes), cpb);
+ }
+
+ // Prints results as a LaTeX table (only for in_sizes matching the
+ // desired values).
+ void PrintTable(const std::vector<size_t>& in_sizes) {
+ std::vector<size_t> unique = in_sizes;
+ std::sort(unique.begin(), unique.end());
+ unique.erase(std::unique(unique.begin(), unique.end()), unique.end());
+
+ printf("\\begin{tabular}{");
+ for (size_t i = 0; i < unique.size() + 1; ++i) {
+ printf("%s", i == 0 ? "r" : "|r");
+ }
+ printf("}\n\\toprule\nAlgorithm");
+ for (const size_t in_size : unique) {
+ printf(" & %zu", in_size);
+ }
+ printf("\\\\\n\\midrule\n");
+
+ const SpeedsForCaption cpb_for_caption = SortByCaptionFilterBySize(unique);
+ for (const auto& item : cpb_for_caption) {
+ printf("%22s", item.first.c_str());
+ for (const float cpb : item.second) {
+ printf(" & %5.2f", cpb);
+ }
+ printf("\\\\\n");
+ }
+ }
+
+ // Prints results suitable for pgfplots.
+ void PrintPlots() {
+ const SpeedsForCaption cpb_for_caption = SortByCaption();
+ assert(!cpb_for_caption.empty());
+ const size_t num_sizes = cpb_for_caption.begin()->second.size();
+
+ printf("Size ");
+ // Flatten per-caption vectors into one iterator.
+ std::vector<std::vector<float>::const_iterator> iterators;
+ for (const auto& item : cpb_for_caption) {
+ printf("%21s ", item.first.c_str());
+ assert(item.second.size() == num_sizes);
+ iterators.push_back(item.second.begin());
+ }
+ printf("\n");
+
+ const std::vector<int>& sizes = UniqueSizes();
+ assert(num_sizes == sizes.size());
+ for (int i = 0; i < static_cast<int>(num_sizes); ++i) {
+ printf("%d ", sizes[i]);
+ for (auto& it : iterators) {
+ printf("%5.2f ", 1.0f / *it); // bytes per cycle
+ ++it;
+ }
+ printf("\n");
+ }
+ }
+
+ private:
+ struct Result {
+ Result(const char* caption, const int in_size, const float cpb)
+ : caption(caption), in_size(in_size), cpb(cpb) {}
+
+ // Algorithm name.
+ std::string caption;
+ // Size of the input data [bytes].
+ int in_size;
+ // Measured throughput [cycles per byte].
+ float cpb;
+ };
+
+ // Returns set of all input sizes for the first column of a size/speed plot.
+ std::vector<int> UniqueSizes() {
+ std::vector<int> sizes;
+ sizes.reserve(results_.size());
+ for (const Result& result : results_) {
+ sizes.push_back(result.in_size);
+ }
+ std::sort(sizes.begin(), sizes.end());
+ sizes.erase(std::unique(sizes.begin(), sizes.end()), sizes.end());
+ return sizes;
+ }
+
+ using SpeedsForCaption = std::map<std::string, std::vector<float>>;
+
+ SpeedsForCaption SortByCaption() const {
+ SpeedsForCaption cpb_for_caption;
+ for (const Result& result : results_) {
+ cpb_for_caption[result.caption].push_back(result.cpb);
+ }
+ return cpb_for_caption;
+ }
+
+ // Only includes measurement results matching one of the given sizes.
+ SpeedsForCaption SortByCaptionFilterBySize(
+ const std::vector<size_t>& in_sizes) const {
+ SpeedsForCaption cpb_for_caption;
+ for (const Result& result : results_) {
+ for (const size_t in_size : in_sizes) {
+ if (result.in_size == static_cast<int>(in_size)) {
+ cpb_for_caption[result.caption].push_back(result.cpb);
+ }
+ }
+ }
+ return cpb_for_caption;
+ }
+
+ std::vector<Result> results_;
+};
+
+void AddMeasurements(DurationsForInputs* input_map, const char* caption,
+ Measurements* measurements) {
+ for (size_t i = 0; i < input_map->num_items; ++i) {
+ const DurationsForInputs::Item& item = input_map->items[i];
+ std::vector<float> durations(item.durations,
+ item.durations + item.num_durations);
+ const float median = Median(&durations);
+ const float variability = MedianAbsoluteDeviation(durations, median);
+ printf("%s %4zu: median=%6.1f cycles; median L1 norm =%4.1f cycles\n",
+ caption, item.input, median, variability);
+ measurements->Add(caption, item.input, median);
+ }
+ input_map->num_items = 0;
+}
+
+#if BENCHMARK_SIP || BENCHMARK_FARM || (BENCHMARK_SIP_TREE && defined(__AVX2__))
+
+void MeasureAndAdd(DurationsForInputs* input_map, const char* caption,
+ const Func func, Measurements* measurements) {
+ MeasureDurations(func, input_map);
+ AddMeasurements(input_map, caption, measurements);
+}
+
+#endif
+
+// InstructionSets::RunAll callback.
+void AddMeasurementsWithPrefix(const char* prefix, const char* target_name,
+ DurationsForInputs* input_map, void* context) {
+ std::string caption(prefix);
+ caption += target_name;
+ AddMeasurements(input_map, caption.c_str(),
+ static_cast<Measurements*>(context));
+}
+
+#if BENCHMARK_SIP
+
+uint64_t RunSip(const size_t size) {
+ const HH_U64 key2[2] HH_ALIGNAS(16) = {0, 1};
+ char in[kMaxBenchmarkInputSize];
+ memcpy(in, &size, sizeof(size));
+ return SipHash(key2, in, size);
+}
+
+uint64_t RunSip13(const size_t size) {
+ const HH_U64 key2[2] HH_ALIGNAS(16) = {0, 1};
+ char in[kMaxBenchmarkInputSize];
+ memcpy(in, &size, sizeof(size));
+ return SipHash13(key2, in, size);
+}
+
+#endif
+
+#if BENCHMARK_SIP_TREE
+
+uint64_t RunSipTree(const size_t size) {
+ const HH_U64 key4[4] HH_ALIGNAS(32) = {0, 1, 2, 3};
+ char in[kMaxBenchmarkInputSize];
+ memcpy(in, &size, sizeof(size));
+ return SipTreeHash(key4, in, size);
+}
+
+uint64_t RunSipTree13(const size_t size) {
+ const HH_U64 key4[4] HH_ALIGNAS(32) = {0, 1, 2, 3};
+ char in[kMaxBenchmarkInputSize];
+ memcpy(in, &size, sizeof(size));
+ return SipTreeHash13(key4, in, size);
+}
+
+#endif
+
+#if BENCHMARK_FARM
+
+uint64_t RunFarm(const size_t size) {
+ char in[kMaxBenchmarkInputSize];
+ memcpy(in, &size, sizeof(size));
+ return farmhash::Fingerprint64(reinterpret_cast<const char*>(in), size);
+}
+
+#endif
+
+void AddMeasurements(const std::vector<size_t>& in_sizes,
+ Measurements* measurements) {
+ DurationsForInputs input_map(in_sizes.data(), in_sizes.size(), 40);
+#if BENCHMARK_SIP
+ MeasureAndAdd(&input_map, "SipHash", RunSip, measurements);
+ MeasureAndAdd(&input_map, "SipHash13", RunSip13, measurements);
+#endif
+
+#if BENCHMARK_SIP_TREE && defined(__AVX2__)
+ MeasureAndAdd(&input_map, "SipTreeHash", RunSipTree, measurements);
+ MeasureAndAdd(&input_map, "SipTreeHash13", RunSipTree13, measurements);
+#endif
+
+#if BENCHMARK_FARM
+ MeasureAndAdd(&input_map, "Farm", &RunFarm, measurements);
+#endif
+
+#if BENCHMARK_HIGHWAY
+ InstructionSets::RunAll<HighwayHashBenchmark>(
+ &input_map, &AddMeasurementsWithPrefix, measurements);
+#endif
+
+#if BENCHMARK_HIGHWAY_CAT
+ InstructionSets::RunAll<HighwayHashCatBenchmark>(
+ &input_map, &AddMeasurementsWithPrefix, measurements);
+#endif
+}
+
+void PrintTable() {
+ const std::vector<size_t> in_sizes = {
+ 7, 8, 31, 32, 63, 64, kMaxBenchmarkInputSize};
+ Measurements measurements;
+ AddMeasurements(in_sizes, &measurements);
+ measurements.PrintTable(in_sizes);
+}
+
+void PrintPlots() {
+ std::vector<size_t> in_sizes;
+ for (int num_vectors = 0; num_vectors < 12; ++num_vectors) {
+ for (int remainder : {0, 9, 18, 27}) {
+ in_sizes.push_back(num_vectors * 32 + remainder);
+ assert(in_sizes.back() <= kMaxBenchmarkInputSize);
+ }
+ }
+
+ Measurements measurements;
+ AddMeasurements(in_sizes, &measurements);
+ measurements.PrintPlots();
+}
+
+} // namespace
+} // namespace highwayhash
+
+int main(int argc, char* argv[]) {
+ highwayhash::PinThreadToRandomCPU();
+ // No argument or t => table
+ if (argc < 2 || argv[1][0] == 't') {
+ highwayhash::PrintTable();
+ } else if (argv[1][0] == 'p') {
+ highwayhash::PrintPlots();
+ }
+ return 0;
+}
diff --git a/contrib/libs/highwayhash/highwayhash/c_bindings.cc b/contrib/libs/highwayhash/highwayhash/c_bindings.cc
index 21d5c3652d..7e0488fb46 100644
--- a/contrib/libs/highwayhash/highwayhash/c_bindings.cc
+++ b/contrib/libs/highwayhash/highwayhash/c_bindings.cc
@@ -1,35 +1,35 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "highwayhash/c_bindings.h"
-
-#include "highwayhash/highwayhash_target.h"
-#include "highwayhash/instruction_sets.h"
-
-using highwayhash::InstructionSets;
-using highwayhash::HighwayHash;
-
-extern "C" {
-
-// Ideally this would reside in highwayhash_target.cc, but that file is
-// compiled multiple times and we must only define this function once.
-uint64_t HighwayHash64(const HHKey key, const char* bytes,
- const uint64_t size) {
- HHResult64 result;
- InstructionSets::Run<HighwayHash>(*reinterpret_cast<const HHKey*>(key), bytes,
- size, &result);
- return result;
-}
-
-} // extern "C"
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "highwayhash/c_bindings.h"
+
+#include "highwayhash/highwayhash_target.h"
+#include "highwayhash/instruction_sets.h"
+
+using highwayhash::InstructionSets;
+using highwayhash::HighwayHash;
+
+extern "C" {
+
+// Ideally this would reside in highwayhash_target.cc, but that file is
+// compiled multiple times and we must only define this function once.
+uint64_t HighwayHash64(const HHKey key, const char* bytes,
+ const uint64_t size) {
+ HHResult64 result;
+ InstructionSets::Run<HighwayHash>(*reinterpret_cast<const HHKey*>(key), bytes,
+ size, &result);
+ return result;
+}
+
+} // extern "C"
diff --git a/contrib/libs/highwayhash/highwayhash/c_bindings.h b/contrib/libs/highwayhash/highwayhash/c_bindings.h
index dd24019041..7d52de7d75 100644
--- a/contrib/libs/highwayhash/highwayhash/c_bindings.h
+++ b/contrib/libs/highwayhash/highwayhash/c_bindings.h
@@ -1,55 +1,55 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef HIGHWAYHASH_HIGHWAYHASH_C_BINDINGS_H_
-#define HIGHWAYHASH_HIGHWAYHASH_C_BINDINGS_H_
-
-// C-callable function prototypes, documented in the other header files.
-
-#include <stdint.h>
-
-#include "hh_types.h"
-
-#ifdef __cplusplus
-extern "C" {
-
-// Bring the symbols out of the namespace.
-using highwayhash::HHKey;
-using highwayhash::HHPacket;
-using highwayhash::HHResult64;
-using highwayhash::HHResult128;
-using highwayhash::HHResult256;
-#endif
-
-uint64_t SipHashC(const uint64_t* key, const char* bytes, const uint64_t size);
-uint64_t SipHash13C(const uint64_t* key, const char* bytes,
- const uint64_t size);
-
-// Uses the best implementation of HighwayHash for the current CPU and
-// calculates 64-bit hash of given data.
-uint64_t HighwayHash64(const HHKey key, const char* bytes, const uint64_t size);
-
-// Defined by highwayhash_target.cc, which requires a _Target* suffix.
-uint64_t HighwayHash64_TargetPortable(const HHKey key, const char* bytes,
- const uint64_t size);
-uint64_t HighwayHash64_TargetSSE41(const HHKey key, const char* bytes,
- const uint64_t size);
-uint64_t HighwayHash64_TargetAVX2(const HHKey key, const char* bytes,
- const uint64_t size);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // HIGHWAYHASH_HIGHWAYHASH_C_BINDINGS_H_
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef HIGHWAYHASH_HIGHWAYHASH_C_BINDINGS_H_
+#define HIGHWAYHASH_HIGHWAYHASH_C_BINDINGS_H_
+
+// C-callable function prototypes, documented in the other header files.
+
+#include <stdint.h>
+
+#include "hh_types.h"
+
+#ifdef __cplusplus
+extern "C" {
+
+// Bring the symbols out of the namespace.
+using highwayhash::HHKey;
+using highwayhash::HHPacket;
+using highwayhash::HHResult64;
+using highwayhash::HHResult128;
+using highwayhash::HHResult256;
+#endif
+
+uint64_t SipHashC(const uint64_t* key, const char* bytes, const uint64_t size);
+uint64_t SipHash13C(const uint64_t* key, const char* bytes,
+ const uint64_t size);
+
+// Uses the best implementation of HighwayHash for the current CPU and
+// calculates 64-bit hash of given data.
+uint64_t HighwayHash64(const HHKey key, const char* bytes, const uint64_t size);
+
+// Defined by highwayhash_target.cc, which requires a _Target* suffix.
+uint64_t HighwayHash64_TargetPortable(const HHKey key, const char* bytes,
+ const uint64_t size);
+uint64_t HighwayHash64_TargetSSE41(const HHKey key, const char* bytes,
+ const uint64_t size);
+uint64_t HighwayHash64_TargetAVX2(const HHKey key, const char* bytes,
+ const uint64_t size);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // HIGHWAYHASH_HIGHWAYHASH_C_BINDINGS_H_
diff --git a/contrib/libs/highwayhash/highwayhash/compiler_specific.h b/contrib/libs/highwayhash/highwayhash/compiler_specific.h
index 958cb6849e..4789f9a610 100644
--- a/contrib/libs/highwayhash/highwayhash/compiler_specific.h
+++ b/contrib/libs/highwayhash/highwayhash/compiler_specific.h
@@ -1,90 +1,90 @@
-// Copyright 2015 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef HIGHWAYHASH_COMPILER_SPECIFIC_H_
-#define HIGHWAYHASH_COMPILER_SPECIFIC_H_
-
-// WARNING: this is a "restricted" header because it is included from
-// translation units compiled with different flags. This header and its
-// dependencies must not define any function unless it is static inline and/or
-// within namespace HH_TARGET_NAME. See arch_specific.h for details.
-
-// Compiler
-
-// #if is shorter and safer than #ifdef. *_VERSION are zero if not detected,
-// otherwise 100 * major + minor version. Note that other packages check for
-// #ifdef COMPILER_MSVC, so we cannot use that same name.
-
-#ifdef _MSC_VER
-#define HH_MSC_VERSION _MSC_VER
-#else
-#define HH_MSC_VERSION 0
-#endif
-
-#ifdef __GNUC__
-#define HH_GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
-#else
-#define HH_GCC_VERSION 0
-#endif
-
-#ifdef __clang__
-#define HH_CLANG_VERSION (__clang_major__ * 100 + __clang_minor__)
-#else
-#define HH_CLANG_VERSION 0
-#endif
-
-//-----------------------------------------------------------------------------
-
-#if HH_GCC_VERSION && HH_GCC_VERSION < 408
-#define HH_ALIGNAS(multiple) __attribute__((aligned(multiple)))
-#else
-#define HH_ALIGNAS(multiple) alignas(multiple) // C++11
-#endif
-
-#if HH_MSC_VERSION
-#define HH_RESTRICT __restrict
-#elif HH_GCC_VERSION
-#define HH_RESTRICT __restrict__
-#else
-#define HH_RESTRICT
-#endif
-
-#if HH_MSC_VERSION
-#define HH_INLINE __forceinline
-#define HH_NOINLINE __declspec(noinline)
-#else
-#define HH_INLINE inline
-#define HH_NOINLINE __attribute__((noinline))
-#endif
-
-#if HH_MSC_VERSION
-// Unsupported, __assume is not the same.
-#define HH_LIKELY(expr) expr
-#define HH_UNLIKELY(expr) expr
-#else
-#define HH_LIKELY(expr) __builtin_expect(!!(expr), 1)
-#define HH_UNLIKELY(expr) __builtin_expect(!!(expr), 0)
-#endif
-
-#if HH_MSC_VERSION
-#include <intrin.h>
-#pragma intrinsic(_ReadWriteBarrier)
-#define HH_COMPILER_FENCE _ReadWriteBarrier()
-#elif HH_GCC_VERSION
-#define HH_COMPILER_FENCE asm volatile("" : : : "memory")
-#else
-#define HH_COMPILER_FENCE
-#endif
-
-#endif // HIGHWAYHASH_COMPILER_SPECIFIC_H_
+// Copyright 2015 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef HIGHWAYHASH_COMPILER_SPECIFIC_H_
+#define HIGHWAYHASH_COMPILER_SPECIFIC_H_
+
+// WARNING: this is a "restricted" header because it is included from
+// translation units compiled with different flags. This header and its
+// dependencies must not define any function unless it is static inline and/or
+// within namespace HH_TARGET_NAME. See arch_specific.h for details.
+
+// Compiler
+
+// #if is shorter and safer than #ifdef. *_VERSION are zero if not detected,
+// otherwise 100 * major + minor version. Note that other packages check for
+// #ifdef COMPILER_MSVC, so we cannot use that same name.
+
+#ifdef _MSC_VER
+#define HH_MSC_VERSION _MSC_VER
+#else
+#define HH_MSC_VERSION 0
+#endif
+
+#ifdef __GNUC__
+#define HH_GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
+#else
+#define HH_GCC_VERSION 0
+#endif
+
+#ifdef __clang__
+#define HH_CLANG_VERSION (__clang_major__ * 100 + __clang_minor__)
+#else
+#define HH_CLANG_VERSION 0
+#endif
+
+//-----------------------------------------------------------------------------
+
+#if HH_GCC_VERSION && HH_GCC_VERSION < 408
+#define HH_ALIGNAS(multiple) __attribute__((aligned(multiple)))
+#else
+#define HH_ALIGNAS(multiple) alignas(multiple) // C++11
+#endif
+
+#if HH_MSC_VERSION
+#define HH_RESTRICT __restrict
+#elif HH_GCC_VERSION
+#define HH_RESTRICT __restrict__
+#else
+#define HH_RESTRICT
+#endif
+
+#if HH_MSC_VERSION
+#define HH_INLINE __forceinline
+#define HH_NOINLINE __declspec(noinline)
+#else
+#define HH_INLINE inline
+#define HH_NOINLINE __attribute__((noinline))
+#endif
+
+#if HH_MSC_VERSION
+// Unsupported, __assume is not the same.
+#define HH_LIKELY(expr) expr
+#define HH_UNLIKELY(expr) expr
+#else
+#define HH_LIKELY(expr) __builtin_expect(!!(expr), 1)
+#define HH_UNLIKELY(expr) __builtin_expect(!!(expr), 0)
+#endif
+
+#if HH_MSC_VERSION
+#include <intrin.h>
+#pragma intrinsic(_ReadWriteBarrier)
+#define HH_COMPILER_FENCE _ReadWriteBarrier()
+#elif HH_GCC_VERSION
+#define HH_COMPILER_FENCE asm volatile("" : : : "memory")
+#else
+#define HH_COMPILER_FENCE
+#endif
+
+#endif // HIGHWAYHASH_COMPILER_SPECIFIC_H_
diff --git a/contrib/libs/highwayhash/highwayhash/data_parallel.h b/contrib/libs/highwayhash/highwayhash/data_parallel.h
index 72d6a47e24..d72afc953e 100644
--- a/contrib/libs/highwayhash/highwayhash/data_parallel.h
+++ b/contrib/libs/highwayhash/highwayhash/data_parallel.h
@@ -1,341 +1,341 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef HIGHWAYHASH_DATA_PARALLEL_H_
-#define HIGHWAYHASH_DATA_PARALLEL_H_
-
-// Portable C++11 alternative to OpenMP for data-parallel computations:
-// provides low-overhead ThreadPool, plus PerThread with support for reduction.
-
-#include <stdio.h>
-#include <algorithm> // find_if
-#include <atomic>
-#include <condition_variable> //NOLINT
-#include <cstdint>
-#include <cstdlib>
-#include <functional>
-#include <memory>
-#include <mutex> //NOLINT
-#include <thread> //NOLINT
-#include <utility>
-#include <vector>
-
-#define DATA_PARALLEL_CHECK(condition) \
- while (!(condition)) { \
- printf("data_parallel check failed at line %d\n", __LINE__); \
- abort(); \
- }
-
-namespace highwayhash {
-
-// Highly scalable thread pool, especially suitable for data-parallel
-// computations in the fork-join model, where clients need to know when all
-// tasks have completed.
-//
-// Thread pools usually store small numbers of heterogeneous tasks in a queue.
-// When tasks are identical or differ only by an integer input parameter, it is
-// much faster to store just one function of an integer parameter and call it
-// for each value.
-//
-// This thread pool can efficiently load-balance millions of tasks using an
-// atomic counter, thus avoiding per-task syscalls. With 48 hyperthreads and
-// 1M tasks that add to an atomic counter, overall runtime is 10-20x higher
-// when using std::async, and up to 200x for a queue-based ThreadPool.
-//
-// Usage:
-// ThreadPool pool;
-// pool.Run(0, 1000000, [](const int i) { Func1(i); });
-// // When Run returns, all of its tasks have finished.
-//
-// pool.RunTasks({Func2, Func3, Func4});
-// // The destructor waits until all worker threads have exited cleanly.
-class ThreadPool {
- public:
- // Starts the given number of worker threads and blocks until they are ready.
- // "num_threads" defaults to one per hyperthread.
- explicit ThreadPool(
- const int num_threads = std::thread::hardware_concurrency())
- : num_threads_(num_threads) {
- DATA_PARALLEL_CHECK(num_threads_ > 0);
- threads_.reserve(num_threads_);
- for (int i = 0; i < num_threads_; ++i) {
- threads_.emplace_back(ThreadFunc, this);
- }
-
- padding_[0] = 0; // avoid unused member warning.
-
- WorkersReadyBarrier();
- }
-
- ThreadPool(const ThreadPool&) = delete;
- ThreadPool& operator&(const ThreadPool&) = delete;
-
- // Waits for all threads to exit.
- ~ThreadPool() {
- StartWorkers(kWorkerExit);
-
- for (std::thread& thread : threads_) {
- thread.join();
- }
- }
-
- // Runs func(i) on worker thread(s) for every i in [begin, end).
- // Not thread-safe - no two calls to Run and RunTasks may overlap.
- // Subsequent calls will reuse the same threads.
- //
- // Precondition: 0 <= begin <= end.
- template <class Func>
- void Run(const int begin, const int end, const Func& func) {
- DATA_PARALLEL_CHECK(0 <= begin && begin <= end);
- if (begin == end) {
- return;
- }
- const WorkerCommand worker_command = (WorkerCommand(end) << 32) + begin;
- // Ensure the inputs do not result in a reserved command.
- DATA_PARALLEL_CHECK(worker_command != kWorkerWait);
- DATA_PARALLEL_CHECK(worker_command != kWorkerExit);
-
- // If Func is large (many captures), this will allocate memory, but it is
- // still slower to use a std::ref wrapper.
- task_ = func;
- num_reserved_.store(0);
-
- StartWorkers(worker_command);
- WorkersReadyBarrier();
- }
-
- // Runs each task (closure, typically a lambda function) on worker thread(s).
- // Not thread-safe - no two calls to Run and RunTasks may overlap.
- // Subsequent calls will reuse the same threads.
- //
- // This is a more conventional interface for heterogeneous tasks that may be
- // independent/unrelated.
- void RunTasks(const std::vector<std::function<void(void)>>& tasks) {
- Run(0, static_cast<int>(tasks.size()),
- [&tasks](const int i) { tasks[i](); });
- }
-
- // Statically (and deterministically) splits [begin, end) into ranges and
- // calls "func" for each of them. Useful when "func" involves some overhead
- // (e.g. for PerThread::Get or random seeding) that should be amortized over
- // a range of values. "func" is void(int chunk, uint32_t begin, uint32_t end).
- template <class Func>
- void RunRanges(const uint32_t begin, const uint32_t end, const Func& func) {
- const uint32_t length = end - begin;
-
- // Use constant rather than num_threads_ for machine-independent splitting.
- const uint32_t chunk = std::max(1U, (length + 127) / 128);
- std::vector<std::pair<uint32_t, uint32_t>> ranges; // begin/end
- ranges.reserve(length / chunk + 1);
- for (uint32_t i = 0; i < length; i += chunk) {
- ranges.emplace_back(begin + i, begin + std::min(i + chunk, length));
- }
-
- Run(0, static_cast<int>(ranges.size()), [&ranges, func](const int i) {
- func(i, ranges[i].first, ranges[i].second);
- });
- }
-
- private:
- // After construction and between calls to Run, workers are "ready", i.e.
- // waiting on worker_start_cv_. They are "started" by sending a "command"
- // and notifying all worker_start_cv_ waiters. (That is why all workers
- // must be ready/waiting - otherwise, the notification will not reach all of
- // them and the main thread waits in vain for them to report readiness.)
- using WorkerCommand = uint64_t;
-
- // Special values; all others encode the begin/end parameters.
- static constexpr WorkerCommand kWorkerWait = 0;
- static constexpr WorkerCommand kWorkerExit = ~0ULL;
-
- void WorkersReadyBarrier() {
- std::unique_lock<std::mutex> lock(mutex_);
- workers_ready_cv_.wait(lock,
- [this]() { return workers_ready_ == num_threads_; });
- workers_ready_ = 0;
- }
-
- // Precondition: all workers are ready.
- void StartWorkers(const WorkerCommand worker_command) {
- std::unique_lock<std::mutex> lock(mutex_);
- worker_start_command_ = worker_command;
- // Workers will need this lock, so release it before they wake up.
- lock.unlock();
- worker_start_cv_.notify_all();
- }
-
- // Attempts to reserve and perform some work from the global range of tasks,
- // which is encoded within "command". Returns after all tasks are reserved.
- static void RunRange(ThreadPool* self, const WorkerCommand command) {
- const int begin = command & 0xFFFFFFFF;
- const int end = command >> 32;
- const int num_tasks = end - begin;
-
- // OpenMP introduced several "schedule" strategies:
- // "single" (static assignment of exactly one chunk per thread): slower.
- // "dynamic" (allocates k tasks at a time): competitive for well-chosen k.
- // "guided" (allocates k tasks, decreases k): computing k = remaining/n
- // is faster than halving k each iteration. We prefer this strategy
- // because it avoids user-specified parameters.
-
- for (;;) {
- const int num_reserved = self->num_reserved_.load();
- const int num_remaining = num_tasks - num_reserved;
- const int my_size = std::max(num_remaining / (self->num_threads_ * 2), 1);
- const int my_begin = begin + self->num_reserved_.fetch_add(my_size);
- const int my_end = std::min(my_begin + my_size, begin + num_tasks);
- // Another thread already reserved the last task.
- if (my_begin >= my_end) {
- break;
- }
- for (int i = my_begin; i < my_end; ++i) {
- self->task_(i);
- }
- }
- }
-
- static void ThreadFunc(ThreadPool* self) {
- // Until kWorkerExit command received:
- for (;;) {
- std::unique_lock<std::mutex> lock(self->mutex_);
- // Notify main thread that this thread is ready.
- if (++self->workers_ready_ == self->num_threads_) {
- self->workers_ready_cv_.notify_one();
- }
- RESUME_WAIT:
- // Wait for a command.
- self->worker_start_cv_.wait(lock);
- const WorkerCommand command = self->worker_start_command_;
- switch (command) {
- case kWorkerWait: // spurious wakeup:
- goto RESUME_WAIT; // lock still held, avoid incrementing ready.
- case kWorkerExit:
- return; // exits thread
- }
-
- lock.unlock();
- RunRange(self, command);
- }
- }
-
- const int num_threads_;
-
- // Unmodified after ctor, but cannot be const because we call thread::join().
- std::vector<std::thread> threads_;
-
- std::mutex mutex_; // guards both cv and their variables.
- std::condition_variable workers_ready_cv_;
- int workers_ready_ = 0;
- std::condition_variable worker_start_cv_;
- WorkerCommand worker_start_command_;
-
- // Written by main thread, read by workers (after mutex lock/unlock).
- std::function<void(int)> task_;
-
- // Updated by workers; alignment/padding avoids false sharing.
- alignas(64) std::atomic<int> num_reserved_{0};
- int padding_[15];
-};
-
-// Thread-local storage with support for reduction (combining into one result).
-// The "T" type must be unique to the call site because the list of threads'
-// copies is a static member. (With knowledge of the underlying threads, we
-// could eliminate this list and T allocations, but that is difficult to
-// arrange and we prefer this to be usable independently of ThreadPool.)
-//
-// Usage:
-// for (int i = 0; i < N; ++i) {
-// // in each thread:
-// T& my_copy = PerThread<T>::Get();
-// my_copy.Modify();
-//
-// // single-threaded:
-// T& combined = PerThread<T>::Reduce();
-// Use(combined);
-// PerThread<T>::Destroy();
-// }
-//
-// T is duck-typed and implements the following interface:
-//
-// // Returns true if T is default-initialized or Destroy was called without
-// // any subsequent re-initialization.
-// bool IsNull() const;
-//
-// // Releases any resources. Postcondition: IsNull() == true.
-// void Destroy();
-//
-// // Merges in data from "victim". Precondition: !IsNull() && !victim.IsNull().
-// void Assimilate(const T& victim);
-template <class T>
-class PerThread {
- public:
- // Returns reference to this thread's T instance (dynamically allocated,
- // so its address is unique). Callers are responsible for any initialization
- // beyond the default ctor.
- static T& Get() {
- static thread_local T* t;
- if (t == nullptr) {
- t = new T;
- static std::mutex mutex;
- std::lock_guard<std::mutex> lock(mutex);
- Threads().push_back(t);
- }
- return *t;
- }
-
- // Returns vector of all per-thread T. Used inside Reduce() or by clients
- // that require direct access to T instead of Assimilating them.
- // Function wrapper avoids separate static member variable definition.
- static std::vector<T*>& Threads() {
- static std::vector<T*> threads;
- return threads;
- }
-
- // Returns the first non-null T after assimilating all other threads' T
- // into it. Precondition: at least one non-null T exists (caller must have
- // called Get() and initialized the result).
- static T& Reduce() {
- std::vector<T*>& threads = Threads();
-
- // Find first non-null T
- const auto it = std::find_if(threads.begin(), threads.end(),
- [](const T* t) { return !t->IsNull(); });
- if (it == threads.end()) {
- abort();
- }
- T* const first = *it;
-
- for (const T* t : threads) {
- if (t != first && !t->IsNull()) {
- first->Assimilate(*t);
- }
- }
- return *first;
- }
-
- // Calls each thread's T::Destroy to release resources and/or prepare for
- // reuse by the same threads/ThreadPool. Note that all T remain allocated
- // (we need thread-independent pointers for iterating over each thread's T,
- // and deleting them would leave dangling pointers in each thread, which is
- // unacceptable because the same thread may call Get() again later.)
- static void Destroy() {
- for (T* t : Threads()) {
- t->Destroy();
- }
- }
-};
-
-} // namespace highwayhash
-
-#endif // HIGHWAYHASH_DATA_PARALLEL_H_
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef HIGHWAYHASH_DATA_PARALLEL_H_
+#define HIGHWAYHASH_DATA_PARALLEL_H_
+
+// Portable C++11 alternative to OpenMP for data-parallel computations:
+// provides low-overhead ThreadPool, plus PerThread with support for reduction.
+
+#include <stdio.h>
+#include <algorithm> // find_if
+#include <atomic>
+#include <condition_variable> //NOLINT
+#include <cstdint>
+#include <cstdlib>
+#include <functional>
+#include <memory>
+#include <mutex> //NOLINT
+#include <thread> //NOLINT
+#include <utility>
+#include <vector>
+
+#define DATA_PARALLEL_CHECK(condition) \
+ while (!(condition)) { \
+ printf("data_parallel check failed at line %d\n", __LINE__); \
+ abort(); \
+ }
+
+namespace highwayhash {
+
+// Highly scalable thread pool, especially suitable for data-parallel
+// computations in the fork-join model, where clients need to know when all
+// tasks have completed.
+//
+// Thread pools usually store small numbers of heterogeneous tasks in a queue.
+// When tasks are identical or differ only by an integer input parameter, it is
+// much faster to store just one function of an integer parameter and call it
+// for each value.
+//
+// This thread pool can efficiently load-balance millions of tasks using an
+// atomic counter, thus avoiding per-task syscalls. With 48 hyperthreads and
+// 1M tasks that add to an atomic counter, overall runtime is 10-20x higher
+// when using std::async, and up to 200x for a queue-based ThreadPool.
+//
+// Usage:
+// ThreadPool pool;
+// pool.Run(0, 1000000, [](const int i) { Func1(i); });
+// // When Run returns, all of its tasks have finished.
+//
+// pool.RunTasks({Func2, Func3, Func4});
+// // The destructor waits until all worker threads have exited cleanly.
+class ThreadPool {
+ public:
+ // Starts the given number of worker threads and blocks until they are ready.
+ // "num_threads" defaults to one per hyperthread.
+ explicit ThreadPool(
+ const int num_threads = std::thread::hardware_concurrency())
+ : num_threads_(num_threads) {
+ DATA_PARALLEL_CHECK(num_threads_ > 0);
+ threads_.reserve(num_threads_);
+ for (int i = 0; i < num_threads_; ++i) {
+ threads_.emplace_back(ThreadFunc, this);
+ }
+
+ padding_[0] = 0; // avoid unused member warning.
+
+ WorkersReadyBarrier();
+ }
+
+ ThreadPool(const ThreadPool&) = delete;
+ ThreadPool& operator&(const ThreadPool&) = delete;
+
+ // Waits for all threads to exit.
+ ~ThreadPool() {
+ StartWorkers(kWorkerExit);
+
+ for (std::thread& thread : threads_) {
+ thread.join();
+ }
+ }
+
+ // Runs func(i) on worker thread(s) for every i in [begin, end).
+ // Not thread-safe - no two calls to Run and RunTasks may overlap.
+ // Subsequent calls will reuse the same threads.
+ //
+ // Precondition: 0 <= begin <= end.
+ template <class Func>
+ void Run(const int begin, const int end, const Func& func) {
+ DATA_PARALLEL_CHECK(0 <= begin && begin <= end);
+ if (begin == end) {
+ return;
+ }
+ const WorkerCommand worker_command = (WorkerCommand(end) << 32) + begin;
+ // Ensure the inputs do not result in a reserved command.
+ DATA_PARALLEL_CHECK(worker_command != kWorkerWait);
+ DATA_PARALLEL_CHECK(worker_command != kWorkerExit);
+
+ // If Func is large (many captures), this will allocate memory, but it is
+ // still slower to use a std::ref wrapper.
+ task_ = func;
+ num_reserved_.store(0);
+
+ StartWorkers(worker_command);
+ WorkersReadyBarrier();
+ }
+
+ // Runs each task (closure, typically a lambda function) on worker thread(s).
+ // Not thread-safe - no two calls to Run and RunTasks may overlap.
+ // Subsequent calls will reuse the same threads.
+ //
+ // This is a more conventional interface for heterogeneous tasks that may be
+ // independent/unrelated.
+ void RunTasks(const std::vector<std::function<void(void)>>& tasks) {
+ Run(0, static_cast<int>(tasks.size()),
+ [&tasks](const int i) { tasks[i](); });
+ }
+
+ // Statically (and deterministically) splits [begin, end) into ranges and
+ // calls "func" for each of them. Useful when "func" involves some overhead
+ // (e.g. for PerThread::Get or random seeding) that should be amortized over
+ // a range of values. "func" is void(int chunk, uint32_t begin, uint32_t end).
+ template <class Func>
+ void RunRanges(const uint32_t begin, const uint32_t end, const Func& func) {
+ const uint32_t length = end - begin;
+
+ // Use constant rather than num_threads_ for machine-independent splitting.
+ const uint32_t chunk = std::max(1U, (length + 127) / 128);
+ std::vector<std::pair<uint32_t, uint32_t>> ranges; // begin/end
+ ranges.reserve(length / chunk + 1);
+ for (uint32_t i = 0; i < length; i += chunk) {
+ ranges.emplace_back(begin + i, begin + std::min(i + chunk, length));
+ }
+
+ Run(0, static_cast<int>(ranges.size()), [&ranges, func](const int i) {
+ func(i, ranges[i].first, ranges[i].second);
+ });
+ }
+
+ private:
+ // After construction and between calls to Run, workers are "ready", i.e.
+ // waiting on worker_start_cv_. They are "started" by sending a "command"
+ // and notifying all worker_start_cv_ waiters. (That is why all workers
+ // must be ready/waiting - otherwise, the notification will not reach all of
+ // them and the main thread waits in vain for them to report readiness.)
+ using WorkerCommand = uint64_t;
+
+ // Special values; all others encode the begin/end parameters.
+ static constexpr WorkerCommand kWorkerWait = 0;
+ static constexpr WorkerCommand kWorkerExit = ~0ULL;
+
+ void WorkersReadyBarrier() {
+ std::unique_lock<std::mutex> lock(mutex_);
+ workers_ready_cv_.wait(lock,
+ [this]() { return workers_ready_ == num_threads_; });
+ workers_ready_ = 0;
+ }
+
+ // Precondition: all workers are ready.
+ void StartWorkers(const WorkerCommand worker_command) {
+ std::unique_lock<std::mutex> lock(mutex_);
+ worker_start_command_ = worker_command;
+ // Workers will need this lock, so release it before they wake up.
+ lock.unlock();
+ worker_start_cv_.notify_all();
+ }
+
+ // Attempts to reserve and perform some work from the global range of tasks,
+ // which is encoded within "command". Returns after all tasks are reserved.
+ static void RunRange(ThreadPool* self, const WorkerCommand command) {
+ const int begin = command & 0xFFFFFFFF;
+ const int end = command >> 32;
+ const int num_tasks = end - begin;
+
+ // OpenMP introduced several "schedule" strategies:
+ // "single" (static assignment of exactly one chunk per thread): slower.
+ // "dynamic" (allocates k tasks at a time): competitive for well-chosen k.
+ // "guided" (allocates k tasks, decreases k): computing k = remaining/n
+ // is faster than halving k each iteration. We prefer this strategy
+ // because it avoids user-specified parameters.
+
+ for (;;) {
+ const int num_reserved = self->num_reserved_.load();
+ const int num_remaining = num_tasks - num_reserved;
+ const int my_size = std::max(num_remaining / (self->num_threads_ * 2), 1);
+ const int my_begin = begin + self->num_reserved_.fetch_add(my_size);
+ const int my_end = std::min(my_begin + my_size, begin + num_tasks);
+ // Another thread already reserved the last task.
+ if (my_begin >= my_end) {
+ break;
+ }
+ for (int i = my_begin; i < my_end; ++i) {
+ self->task_(i);
+ }
+ }
+ }
+
+ static void ThreadFunc(ThreadPool* self) {
+ // Until kWorkerExit command received:
+ for (;;) {
+ std::unique_lock<std::mutex> lock(self->mutex_);
+ // Notify main thread that this thread is ready.
+ if (++self->workers_ready_ == self->num_threads_) {
+ self->workers_ready_cv_.notify_one();
+ }
+ RESUME_WAIT:
+ // Wait for a command.
+ self->worker_start_cv_.wait(lock);
+ const WorkerCommand command = self->worker_start_command_;
+ switch (command) {
+ case kWorkerWait: // spurious wakeup:
+ goto RESUME_WAIT; // lock still held, avoid incrementing ready.
+ case kWorkerExit:
+ return; // exits thread
+ }
+
+ lock.unlock();
+ RunRange(self, command);
+ }
+ }
+
+ const int num_threads_;
+
+ // Unmodified after ctor, but cannot be const because we call thread::join().
+ std::vector<std::thread> threads_;
+
+ std::mutex mutex_; // guards both cv and their variables.
+ std::condition_variable workers_ready_cv_;
+ int workers_ready_ = 0;
+ std::condition_variable worker_start_cv_;
+ WorkerCommand worker_start_command_;
+
+ // Written by main thread, read by workers (after mutex lock/unlock).
+ std::function<void(int)> task_;
+
+ // Updated by workers; alignment/padding avoids false sharing.
+ alignas(64) std::atomic<int> num_reserved_{0};
+ int padding_[15];
+};
+
+// Thread-local storage with support for reduction (combining into one result).
+// The "T" type must be unique to the call site because the list of threads'
+// copies is a static member. (With knowledge of the underlying threads, we
+// could eliminate this list and T allocations, but that is difficult to
+// arrange and we prefer this to be usable independently of ThreadPool.)
+//
+// Usage:
+// for (int i = 0; i < N; ++i) {
+// // in each thread:
+// T& my_copy = PerThread<T>::Get();
+// my_copy.Modify();
+//
+// // single-threaded:
+// T& combined = PerThread<T>::Reduce();
+// Use(combined);
+// PerThread<T>::Destroy();
+// }
+//
+// T is duck-typed and implements the following interface:
+//
+// // Returns true if T is default-initialized or Destroy was called without
+// // any subsequent re-initialization.
+// bool IsNull() const;
+//
+// // Releases any resources. Postcondition: IsNull() == true.
+// void Destroy();
+//
+// // Merges in data from "victim". Precondition: !IsNull() && !victim.IsNull().
+// void Assimilate(const T& victim);
+template <class T>
+class PerThread {
+ public:
+ // Returns reference to this thread's T instance (dynamically allocated,
+ // so its address is unique). Callers are responsible for any initialization
+ // beyond the default ctor.
+ static T& Get() {
+ static thread_local T* t;
+ if (t == nullptr) {
+ t = new T;
+ static std::mutex mutex;
+ std::lock_guard<std::mutex> lock(mutex);
+ Threads().push_back(t);
+ }
+ return *t;
+ }
+
+ // Returns vector of all per-thread T. Used inside Reduce() or by clients
+ // that require direct access to T instead of Assimilating them.
+ // Function wrapper avoids separate static member variable definition.
+ static std::vector<T*>& Threads() {
+ static std::vector<T*> threads;
+ return threads;
+ }
+
+ // Returns the first non-null T after assimilating all other threads' T
+ // into it. Precondition: at least one non-null T exists (caller must have
+ // called Get() and initialized the result).
+ static T& Reduce() {
+ std::vector<T*>& threads = Threads();
+
+ // Find first non-null T
+ const auto it = std::find_if(threads.begin(), threads.end(),
+ [](const T* t) { return !t->IsNull(); });
+ if (it == threads.end()) {
+ abort();
+ }
+ T* const first = *it;
+
+ for (const T* t : threads) {
+ if (t != first && !t->IsNull()) {
+ first->Assimilate(*t);
+ }
+ }
+ return *first;
+ }
+
+ // Calls each thread's T::Destroy to release resources and/or prepare for
+ // reuse by the same threads/ThreadPool. Note that all T remain allocated
+ // (we need thread-independent pointers for iterating over each thread's T,
+ // and deleting them would leave dangling pointers in each thread, which is
+ // unacceptable because the same thread may call Get() again later.)
+ static void Destroy() {
+ for (T* t : Threads()) {
+ t->Destroy();
+ }
+ }
+};
+
+} // namespace highwayhash
+
+#endif // HIGHWAYHASH_DATA_PARALLEL_H_
diff --git a/contrib/libs/highwayhash/highwayhash/data_parallel_benchmark.cc b/contrib/libs/highwayhash/highwayhash/data_parallel_benchmark.cc
index fafdd93dbd..ddc88b067f 100644
--- a/contrib/libs/highwayhash/highwayhash/data_parallel_benchmark.cc
+++ b/contrib/libs/highwayhash/highwayhash/data_parallel_benchmark.cc
@@ -1,151 +1,151 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <cmath>
-#include <cstdio>
-#include <future> //NOLINT
-#include <set>
-#include "testing/base/public/gunit.h"
-#include "highwayhash/arch_specific.h"
-#include "highwayhash/data_parallel.h"
-#include "thread/threadpool.h"
-
-namespace highwayhash {
-namespace {
-
-constexpr int kBenchmarkTasks = 1000000;
-
-// Returns elapsed time [nanoseconds] for std::async.
-double BenchmarkAsync(uint64_t* total) {
- const base::Time t0 = base::Now();
- std::atomic<uint64_t> sum1{0};
- std::atomic<uint64_t> sum2{0};
-
- std::vector<std::future<void>> futures;
- futures.reserve(kBenchmarkTasks);
- for (int i = 0; i < kBenchmarkTasks; ++i) {
- futures.push_back(std::async(
- [&sum1, &sum2](const int i) {
- sum1.fetch_add(i);
- sum2.fetch_add(1);
- },
- i));
- }
-
- for (auto& future : futures) {
- future.get();
- }
-
- const base::Time t1 = base::Now();
- *total = sum1.load() + sum2.load();
- return base::ToDoubleNanoseconds(t1 - t0);
-}
-
-// Returns elapsed time [nanoseconds] for (atomic) ThreadPool.
-double BenchmarkPoolA(uint64_t* total) {
- const base::Time t0 = base::Now();
- std::atomic<uint64_t> sum1{0};
- std::atomic<uint64_t> sum2{0};
-
- ThreadPool pool;
- pool.Run(0, kBenchmarkTasks, [&sum1, &sum2](const int i) {
- sum1.fetch_add(i);
- sum2.fetch_add(1);
- });
-
- const base::Time t1 = base::Now();
- *total = sum1.load() + sum2.load();
- return base::ToDoubleNanoseconds(t1 - t0);
-}
-
-// Returns elapsed time [nanoseconds] for ::ThreadPool.
-double BenchmarkPoolG(uint64_t* total) {
- const base::Time t0 = base::Now();
- std::atomic<uint64_t> sum1{0};
- std::atomic<uint64_t> sum2{0};
-
- {
- ::ThreadPool pool(std::thread::hardware_concurrency());
- pool.StartWorkers();
- for (int i = 0; i < kBenchmarkTasks; ++i) {
- pool.Schedule([&sum1, &sum2, i]() {
- sum1.fetch_add(i);
- sum2.fetch_add(1);
- });
- }
- }
-
- const base::Time t1 = base::Now();
- *total = sum1.load() + sum2.load();
- return base::ToDoubleNanoseconds(t1 - t0);
-}
-
-// Compares ThreadPool speed to std::async and ::ThreadPool.
-TEST(DataParallelTest, Benchmarks) {
- uint64_t sum1, sum2, sum3;
- const double async_ns = BenchmarkAsync(&sum1);
- const double poolA_ns = BenchmarkPoolA(&sum2);
- const double poolG_ns = BenchmarkPoolG(&sum3);
-
- printf("Async %11.0f ns\nPoolA %11.0f ns\nPoolG %11.0f ns\n", async_ns,
- poolA_ns, poolG_ns);
- // baseline 20x, 10x with asan or msan, 5x with tsan
- EXPECT_GT(async_ns, poolA_ns * 4);
- // baseline 200x, 180x with asan, 70x with msan, 50x with tsan.
- EXPECT_GT(poolG_ns, poolA_ns * 20);
-
- // Should reach same result.
- EXPECT_EQ(sum1, sum2);
- EXPECT_EQ(sum2, sum3);
-}
-
-// Ensures multiple hardware threads are used (decided by the OS scheduler).
-TEST(DataParallelTest, TestApicIds) {
- for (int num_threads = 1; num_threads <= std::thread::hardware_concurrency();
- ++num_threads) {
- ThreadPool pool(num_threads);
-
- std::mutex mutex;
- std::set<unsigned> ids;
- double total = 0.0;
- pool.Run(0, 2 * num_threads, [&mutex, &ids, &total](const int i) {
- // Useless computations to keep the processor busy so that threads
- // can't just reuse the same processor.
- double sum = 0.0;
- for (int rep = 0; rep < 900 * (i + 30); ++rep) {
- sum += pow(rep, 0.5);
- }
-
- mutex.lock();
- ids.insert(ApicId());
- total += sum;
- mutex.unlock();
- });
-
- // No core ID / APIC ID available
- if (num_threads > 1 && ids.size() == 1) {
- EXPECT_EQ(0, *ids.begin());
- } else {
- // (The Linux scheduler doesn't use all available HTs, but the
- // computations should at least keep most cores busy.)
- EXPECT_GT(ids.size() + 2, num_threads / 4);
- }
-
- // (Ensure the busy-work is not elided.)
- EXPECT_GT(total, 1E4);
- }
-}
-
-} // namespace
-} // namespace highwayhash
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include <cmath>
+#include <cstdio>
+#include <future> //NOLINT
+#include <set>
+#include "testing/base/public/gunit.h"
+#include "highwayhash/arch_specific.h"
+#include "highwayhash/data_parallel.h"
+#include "thread/threadpool.h"
+
+namespace highwayhash {
+namespace {
+
+constexpr int kBenchmarkTasks = 1000000;
+
+// Returns elapsed time [nanoseconds] for std::async.
+double BenchmarkAsync(uint64_t* total) {
+ const base::Time t0 = base::Now();
+ std::atomic<uint64_t> sum1{0};
+ std::atomic<uint64_t> sum2{0};
+
+ std::vector<std::future<void>> futures;
+ futures.reserve(kBenchmarkTasks);
+ for (int i = 0; i < kBenchmarkTasks; ++i) {
+ futures.push_back(std::async(
+ [&sum1, &sum2](const int i) {
+ sum1.fetch_add(i);
+ sum2.fetch_add(1);
+ },
+ i));
+ }
+
+ for (auto& future : futures) {
+ future.get();
+ }
+
+ const base::Time t1 = base::Now();
+ *total = sum1.load() + sum2.load();
+ return base::ToDoubleNanoseconds(t1 - t0);
+}
+
+// Returns elapsed time [nanoseconds] for (atomic) ThreadPool.
+double BenchmarkPoolA(uint64_t* total) {
+ const base::Time t0 = base::Now();
+ std::atomic<uint64_t> sum1{0};
+ std::atomic<uint64_t> sum2{0};
+
+ ThreadPool pool;
+ pool.Run(0, kBenchmarkTasks, [&sum1, &sum2](const int i) {
+ sum1.fetch_add(i);
+ sum2.fetch_add(1);
+ });
+
+ const base::Time t1 = base::Now();
+ *total = sum1.load() + sum2.load();
+ return base::ToDoubleNanoseconds(t1 - t0);
+}
+
+// Returns elapsed time [nanoseconds] for ::ThreadPool.
+double BenchmarkPoolG(uint64_t* total) {
+ const base::Time t0 = base::Now();
+ std::atomic<uint64_t> sum1{0};
+ std::atomic<uint64_t> sum2{0};
+
+ {
+ ::ThreadPool pool(std::thread::hardware_concurrency());
+ pool.StartWorkers();
+ for (int i = 0; i < kBenchmarkTasks; ++i) {
+ pool.Schedule([&sum1, &sum2, i]() {
+ sum1.fetch_add(i);
+ sum2.fetch_add(1);
+ });
+ }
+ }
+
+ const base::Time t1 = base::Now();
+ *total = sum1.load() + sum2.load();
+ return base::ToDoubleNanoseconds(t1 - t0);
+}
+
+// Compares ThreadPool speed to std::async and ::ThreadPool.
+TEST(DataParallelTest, Benchmarks) {
+ uint64_t sum1, sum2, sum3;
+ const double async_ns = BenchmarkAsync(&sum1);
+ const double poolA_ns = BenchmarkPoolA(&sum2);
+ const double poolG_ns = BenchmarkPoolG(&sum3);
+
+ printf("Async %11.0f ns\nPoolA %11.0f ns\nPoolG %11.0f ns\n", async_ns,
+ poolA_ns, poolG_ns);
+ // baseline 20x, 10x with asan or msan, 5x with tsan
+ EXPECT_GT(async_ns, poolA_ns * 4);
+ // baseline 200x, 180x with asan, 70x with msan, 50x with tsan.
+ EXPECT_GT(poolG_ns, poolA_ns * 20);
+
+ // Should reach same result.
+ EXPECT_EQ(sum1, sum2);
+ EXPECT_EQ(sum2, sum3);
+}
+
+// Ensures multiple hardware threads are used (decided by the OS scheduler).
+TEST(DataParallelTest, TestApicIds) {
+ for (int num_threads = 1; num_threads <= std::thread::hardware_concurrency();
+ ++num_threads) {
+ ThreadPool pool(num_threads);
+
+ std::mutex mutex;
+ std::set<unsigned> ids;
+ double total = 0.0;
+ pool.Run(0, 2 * num_threads, [&mutex, &ids, &total](const int i) {
+ // Useless computations to keep the processor busy so that threads
+ // can't just reuse the same processor.
+ double sum = 0.0;
+ for (int rep = 0; rep < 900 * (i + 30); ++rep) {
+ sum += pow(rep, 0.5);
+ }
+
+ mutex.lock();
+ ids.insert(ApicId());
+ total += sum;
+ mutex.unlock();
+ });
+
+ // No core ID / APIC ID available
+ if (num_threads > 1 && ids.size() == 1) {
+ EXPECT_EQ(0, *ids.begin());
+ } else {
+ // (The Linux scheduler doesn't use all available HTs, but the
+ // computations should at least keep most cores busy.)
+ EXPECT_GT(ids.size() + 2, num_threads / 4);
+ }
+
+ // (Ensure the busy-work is not elided.)
+ EXPECT_GT(total, 1E4);
+ }
+}
+
+} // namespace
+} // namespace highwayhash
diff --git a/contrib/libs/highwayhash/highwayhash/data_parallel_test.cc b/contrib/libs/highwayhash/highwayhash/data_parallel_test.cc
index d733620099..2728b7d3ad 100644
--- a/contrib/libs/highwayhash/highwayhash/data_parallel_test.cc
+++ b/contrib/libs/highwayhash/highwayhash/data_parallel_test.cc
@@ -1,175 +1,175 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <unistd.h>
-#include <cstdint>
-
-#include "testing/base/public/gunit.h"
-#include "highwayhash/data_parallel.h"
-
-namespace highwayhash {
-namespace {
-
-int PopulationCount(uint64_t bits) {
- int num_set = 0;
- while (bits != 0) {
- num_set += bits & 1;
- bits >>= 1;
- }
- return num_set;
-}
-
-std::atomic<int> func_counts{0};
-
-void Func2() {
- usleep(200000);
- func_counts.fetch_add(4);
-}
-
-void Func3() {
- usleep(300000);
- func_counts.fetch_add(16);
-}
-
-void Func4() {
- usleep(400000);
- func_counts.fetch_add(256);
-}
-
-// Exercises the RunTasks feature (running arbitrary tasks/closures)
-TEST(DataParallelTest, TestRunTasks) {
- ThreadPool pool(4);
- pool.RunTasks({Func2, Func3, Func4});
- EXPECT_EQ(276, func_counts.load());
-}
-
-// Ensures task parameter is in bounds, every parameter is reached,
-// pool can be reused (multiple consecutive Run calls), pool can be destroyed
-// (joining with its threads).
-TEST(DataParallelTest, TestPool) {
- for (int num_threads = 1; num_threads <= 18; ++num_threads) {
- ThreadPool pool(num_threads);
- for (int num_tasks = 0; num_tasks < 32; ++num_tasks) {
- std::vector<int> mementos(num_tasks, 0);
- for (int begin = 0; begin < 32; ++begin) {
- std::fill(mementos.begin(), mementos.end(), 0);
- pool.Run(begin, begin + num_tasks,
- [begin, num_tasks, &mementos](const int i) {
- // Parameter is in the given range
- EXPECT_GE(i, begin);
- EXPECT_LT(i, begin + num_tasks);
-
- // Store mementos to be sure we visited each i.
- mementos.at(i - begin) = 1000 + i;
- });
- for (int i = begin; i < begin + num_tasks; ++i) {
- EXPECT_EQ(1000 + i, mementos.at(i - begin));
- }
- }
- }
- }
-}
-
-TEST(DataParallelTest, TestRunRanges) {
- for (int num_threads = 1; num_threads <= 18; ++num_threads) {
- ThreadPool pool(num_threads);
- for (int num_tasks = 0; num_tasks < 32; ++num_tasks) {
- std::vector<int> mementos(num_tasks, 0);
- for (int begin = 0; begin < 32; ++begin) {
- std::fill(mementos.begin(), mementos.end(), 0);
- pool.RunRanges(begin, begin + num_tasks,
- [begin, num_tasks, &mementos](const int chunk,
- const uint32_t my_begin,
- const uint32_t my_end) {
- for (uint32_t i = my_begin; i < my_end; ++i) {
- // Parameter is in the given range
- EXPECT_GE(i, begin);
- EXPECT_LT(i, begin + num_tasks);
-
- // Store mementos to be sure we visited each i.
- mementos.at(i - begin) = 1000 + i;
- }
- });
- for (int i = begin; i < begin + num_tasks; ++i) {
- EXPECT_EQ(1000 + i, mementos.at(i - begin));
- }
- }
- }
- }
-}
-
-// Ensures each of N threads processes exactly 1 of N tasks, i.e. the
-// work distribution is perfectly fair for small counts.
-TEST(DataParallelTest, TestSmallAssignments) {
- for (int num_threads = 1; num_threads <= 64; ++num_threads) {
- ThreadPool pool(num_threads);
-
- std::atomic<int> counter{0};
- // (Avoid mutex because it may perturb the worker thread scheduling)
- std::atomic<uint64_t> id_bits{0};
-
- pool.Run(0, num_threads, [&counter, num_threads, &id_bits](const int i) {
- const int id = counter.fetch_add(1);
- EXPECT_LT(id, num_threads);
- uint64_t bits = id_bits.load(std::memory_order_relaxed);
- while (!id_bits.compare_exchange_weak(bits, bits | (1ULL << id))) {
- }
- });
-
- const int num_participants = PopulationCount(id_bits.load());
- EXPECT_EQ(num_threads, num_participants);
- }
-}
-
-// Test payload for PerThread.
-struct CheckUniqueIDs {
- bool IsNull() const { return false; }
- void Destroy() { id_bits = 0; }
- void Assimilate(const CheckUniqueIDs& victim) {
- // Cannot overlap because each PerThread has unique bits.
- EXPECT_EQ(0, id_bits & victim.id_bits);
- id_bits |= victim.id_bits;
- }
-
- uint64_t id_bits = 0;
-};
-
-// Ensures each thread has a PerThread instance, that they are successfully
-// combined/reduced into a single result, and that reuse is possible after
-// Destroy().
-TEST(DataParallelTest, TestPerThread) {
- // We use a uint64_t bit array for convenience => no more than 64 threads.
- const int max_threads = std::min(64U, std::thread::hardware_concurrency());
- for (int num_threads = 1; num_threads <= max_threads; ++num_threads) {
- ThreadPool pool(num_threads);
-
- std::atomic<int> counter{0};
- pool.Run(0, num_threads, [&counter, num_threads](const int i) {
- const int id = counter.fetch_add(1);
- EXPECT_LT(id, num_threads);
- PerThread<CheckUniqueIDs>::Get().id_bits |= 1ULL << id;
- });
-
- // Verify each thread's bit is set.
- const uint64_t all_bits = PerThread<CheckUniqueIDs>::Reduce().id_bits;
- // Avoid shifting by 64 (undefined).
- const uint64_t expected =
- num_threads == 64 ? ~0ULL : (1ULL << num_threads) - 1;
- EXPECT_EQ(expected, all_bits);
- PerThread<CheckUniqueIDs>::Destroy();
- }
-}
-
-} // namespace
-} // namespace highwayhash
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include <unistd.h>
+#include <cstdint>
+
+#include "testing/base/public/gunit.h"
+#include "highwayhash/data_parallel.h"
+
+namespace highwayhash {
+namespace {
+
+int PopulationCount(uint64_t bits) {
+ int num_set = 0;
+ while (bits != 0) {
+ num_set += bits & 1;
+ bits >>= 1;
+ }
+ return num_set;
+}
+
+std::atomic<int> func_counts{0};
+
+void Func2() {
+ usleep(200000);
+ func_counts.fetch_add(4);
+}
+
+void Func3() {
+ usleep(300000);
+ func_counts.fetch_add(16);
+}
+
+void Func4() {
+ usleep(400000);
+ func_counts.fetch_add(256);
+}
+
+// Exercises the RunTasks feature (running arbitrary tasks/closures)
+TEST(DataParallelTest, TestRunTasks) {
+ ThreadPool pool(4);
+ pool.RunTasks({Func2, Func3, Func4});
+ EXPECT_EQ(276, func_counts.load());
+}
+
+// Ensures task parameter is in bounds, every parameter is reached,
+// pool can be reused (multiple consecutive Run calls), pool can be destroyed
+// (joining with its threads).
+TEST(DataParallelTest, TestPool) {
+ for (int num_threads = 1; num_threads <= 18; ++num_threads) {
+ ThreadPool pool(num_threads);
+ for (int num_tasks = 0; num_tasks < 32; ++num_tasks) {
+ std::vector<int> mementos(num_tasks, 0);
+ for (int begin = 0; begin < 32; ++begin) {
+ std::fill(mementos.begin(), mementos.end(), 0);
+ pool.Run(begin, begin + num_tasks,
+ [begin, num_tasks, &mementos](const int i) {
+ // Parameter is in the given range
+ EXPECT_GE(i, begin);
+ EXPECT_LT(i, begin + num_tasks);
+
+ // Store mementos to be sure we visited each i.
+ mementos.at(i - begin) = 1000 + i;
+ });
+ for (int i = begin; i < begin + num_tasks; ++i) {
+ EXPECT_EQ(1000 + i, mementos.at(i - begin));
+ }
+ }
+ }
+ }
+}
+
+TEST(DataParallelTest, TestRunRanges) {
+ for (int num_threads = 1; num_threads <= 18; ++num_threads) {
+ ThreadPool pool(num_threads);
+ for (int num_tasks = 0; num_tasks < 32; ++num_tasks) {
+ std::vector<int> mementos(num_tasks, 0);
+ for (int begin = 0; begin < 32; ++begin) {
+ std::fill(mementos.begin(), mementos.end(), 0);
+ pool.RunRanges(begin, begin + num_tasks,
+ [begin, num_tasks, &mementos](const int chunk,
+ const uint32_t my_begin,
+ const uint32_t my_end) {
+ for (uint32_t i = my_begin; i < my_end; ++i) {
+ // Parameter is in the given range
+ EXPECT_GE(i, begin);
+ EXPECT_LT(i, begin + num_tasks);
+
+ // Store mementos to be sure we visited each i.
+ mementos.at(i - begin) = 1000 + i;
+ }
+ });
+ for (int i = begin; i < begin + num_tasks; ++i) {
+ EXPECT_EQ(1000 + i, mementos.at(i - begin));
+ }
+ }
+ }
+ }
+}
+
+// Ensures each of N threads processes exactly 1 of N tasks, i.e. the
+// work distribution is perfectly fair for small counts.
+TEST(DataParallelTest, TestSmallAssignments) {
+ for (int num_threads = 1; num_threads <= 64; ++num_threads) {
+ ThreadPool pool(num_threads);
+
+ std::atomic<int> counter{0};
+ // (Avoid mutex because it may perturb the worker thread scheduling)
+ std::atomic<uint64_t> id_bits{0};
+
+ pool.Run(0, num_threads, [&counter, num_threads, &id_bits](const int i) {
+ const int id = counter.fetch_add(1);
+ EXPECT_LT(id, num_threads);
+ uint64_t bits = id_bits.load(std::memory_order_relaxed);
+ while (!id_bits.compare_exchange_weak(bits, bits | (1ULL << id))) {
+ }
+ });
+
+ const int num_participants = PopulationCount(id_bits.load());
+ EXPECT_EQ(num_threads, num_participants);
+ }
+}
+
+// Test payload for PerThread.
+struct CheckUniqueIDs {
+ bool IsNull() const { return false; }
+ void Destroy() { id_bits = 0; }
+ void Assimilate(const CheckUniqueIDs& victim) {
+ // Cannot overlap because each PerThread has unique bits.
+ EXPECT_EQ(0, id_bits & victim.id_bits);
+ id_bits |= victim.id_bits;
+ }
+
+ uint64_t id_bits = 0;
+};
+
+// Ensures each thread has a PerThread instance, that they are successfully
+// combined/reduced into a single result, and that reuse is possible after
+// Destroy().
+TEST(DataParallelTest, TestPerThread) {
+ // We use a uint64_t bit array for convenience => no more than 64 threads.
+ const int max_threads = std::min(64U, std::thread::hardware_concurrency());
+ for (int num_threads = 1; num_threads <= max_threads; ++num_threads) {
+ ThreadPool pool(num_threads);
+
+ std::atomic<int> counter{0};
+ pool.Run(0, num_threads, [&counter, num_threads](const int i) {
+ const int id = counter.fetch_add(1);
+ EXPECT_LT(id, num_threads);
+ PerThread<CheckUniqueIDs>::Get().id_bits |= 1ULL << id;
+ });
+
+ // Verify each thread's bit is set.
+ const uint64_t all_bits = PerThread<CheckUniqueIDs>::Reduce().id_bits;
+ // Avoid shifting by 64 (undefined).
+ const uint64_t expected =
+ num_threads == 64 ? ~0ULL : (1ULL << num_threads) - 1;
+ EXPECT_EQ(expected, all_bits);
+ PerThread<CheckUniqueIDs>::Destroy();
+ }
+}
+
+} // namespace
+} // namespace highwayhash
diff --git a/contrib/libs/highwayhash/highwayhash/endianess.h b/contrib/libs/highwayhash/highwayhash/endianess.h
index 6c82d6e50c..776a02fa21 100644
--- a/contrib/libs/highwayhash/highwayhash/endianess.h
+++ b/contrib/libs/highwayhash/highwayhash/endianess.h
@@ -1,108 +1,108 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef HIGHWAYHASH_ENDIANESS_H_
-#define HIGHWAYHASH_ENDIANESS_H_
-
-// WARNING: this is a "restricted" header because it is included from
-// translation units compiled with different flags. This header and its
-// dependencies must not define any function unless it is static inline and/or
-// within namespace HH_TARGET_NAME. See arch_specific.h for details.
-
-#include <stdint.h>
-
-#if defined(BYTE_ORDER) && defined(LITTLE_ENDIAN) && defined(BIG_ENDIAN)
-
- /* Someone has already included <endian.h> or equivalent. */
-
-#elif defined(__LITTLE_ENDIAN__)
-
-# define HH_IS_LITTLE_ENDIAN 1
-# define HH_IS_BIG_ENDIAN 0
-# ifdef __BIG_ENDIAN__
-# error "Platform is both little and big endian?"
-# endif
-
-#elif defined(__BIG_ENDIAN__)
-
-# define HH_IS_LITTLE_ENDIAN 0
-# define HH_IS_BIG_ENDIAN 1
-
-#elif defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && \
- defined(__ORDER_LITTLE_ENDIAN__)
-
-# define HH_IS_LITTLE_ENDIAN (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
-# define HH_IS_BIG_ENDIAN (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
-
-#elif defined(__linux__) || defined(__CYGWIN__) || defined( __GNUC__ ) || \
- defined( __GNU_LIBRARY__ )
-
-# include <endian.h>
-
-#elif defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || \
- defined(__DragonFly__)
-
-# include <sys/endian.h>
-
-#elif defined(_WIN32)
-
-#define HH_IS_LITTLE_ENDIAN 1
-#define HH_IS_BIG_ENDIAN 0
-
-#else
-
-# error "Unsupported platform. Cannot determine byte order."
-
-#endif
-
-
-#ifndef HH_IS_LITTLE_ENDIAN
-# define HH_IS_LITTLE_ENDIAN (BYTE_ORDER == LITTLE_ENDIAN)
-# define HH_IS_BIG_ENDIAN (BYTE_ORDER == BIG_ENDIAN)
-#endif
-
-
-namespace highwayhash {
-
-#if HH_IS_LITTLE_ENDIAN
-
-static inline uint32_t le32_from_host(uint32_t x) { return x; }
-static inline uint32_t host_from_le32(uint32_t x) { return x; }
-static inline uint64_t le64_from_host(uint64_t x) { return x; }
-static inline uint64_t host_from_le64(uint64_t x) { return x; }
-
-#elif !HH_IS_BIG_ENDIAN
-
-# error "Unsupported byte order."
-
-#elif defined(_WIN16) || defined(_WIN32) || defined(_WIN64)
-
-#include <intrin.h>
-static inline uint32_t host_from_le32(uint32_t x) { return _byteswap_ulong(x); }
-static inline uint32_t le32_from_host(uint32_t x) { return _byteswap_ulong(x); }
-static inline uint64_t host_from_le64(uint64_t x) { return _byteswap_uint64(x);}
-static inline uint64_t le64_from_host(uint64_t x) { return _byteswap_uint64(x);}
-
-#else
-
-static inline uint32_t host_from_le32(uint32_t x) {return __builtin_bswap32(x);}
-static inline uint32_t le32_from_host(uint32_t x) {return __builtin_bswap32(x);}
-static inline uint64_t host_from_le64(uint64_t x) {return __builtin_bswap64(x);}
-static inline uint64_t le64_from_host(uint64_t x) {return __builtin_bswap64(x);}
-
-#endif
-
-} // namespace highwayhash
-
-#endif // HIGHWAYHASH_ENDIANESS_H_
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef HIGHWAYHASH_ENDIANESS_H_
+#define HIGHWAYHASH_ENDIANESS_H_
+
+// WARNING: this is a "restricted" header because it is included from
+// translation units compiled with different flags. This header and its
+// dependencies must not define any function unless it is static inline and/or
+// within namespace HH_TARGET_NAME. See arch_specific.h for details.
+
+#include <stdint.h>
+
+#if defined(BYTE_ORDER) && defined(LITTLE_ENDIAN) && defined(BIG_ENDIAN)
+
+ /* Someone has already included <endian.h> or equivalent. */
+
+#elif defined(__LITTLE_ENDIAN__)
+
+# define HH_IS_LITTLE_ENDIAN 1
+# define HH_IS_BIG_ENDIAN 0
+# ifdef __BIG_ENDIAN__
+# error "Platform is both little and big endian?"
+# endif
+
+#elif defined(__BIG_ENDIAN__)
+
+# define HH_IS_LITTLE_ENDIAN 0
+# define HH_IS_BIG_ENDIAN 1
+
+#elif defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && \
+ defined(__ORDER_LITTLE_ENDIAN__)
+
+# define HH_IS_LITTLE_ENDIAN (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
+# define HH_IS_BIG_ENDIAN (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
+
+#elif defined(__linux__) || defined(__CYGWIN__) || defined( __GNUC__ ) || \
+ defined( __GNU_LIBRARY__ )
+
+# include <endian.h>
+
+#elif defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || \
+ defined(__DragonFly__)
+
+# include <sys/endian.h>
+
+#elif defined(_WIN32)
+
+#define HH_IS_LITTLE_ENDIAN 1
+#define HH_IS_BIG_ENDIAN 0
+
+#else
+
+# error "Unsupported platform. Cannot determine byte order."
+
+#endif
+
+
+#ifndef HH_IS_LITTLE_ENDIAN
+# define HH_IS_LITTLE_ENDIAN (BYTE_ORDER == LITTLE_ENDIAN)
+# define HH_IS_BIG_ENDIAN (BYTE_ORDER == BIG_ENDIAN)
+#endif
+
+
+namespace highwayhash {
+
+#if HH_IS_LITTLE_ENDIAN
+
+static inline uint32_t le32_from_host(uint32_t x) { return x; }
+static inline uint32_t host_from_le32(uint32_t x) { return x; }
+static inline uint64_t le64_from_host(uint64_t x) { return x; }
+static inline uint64_t host_from_le64(uint64_t x) { return x; }
+
+#elif !HH_IS_BIG_ENDIAN
+
+# error "Unsupported byte order."
+
+#elif defined(_WIN16) || defined(_WIN32) || defined(_WIN64)
+
+#include <intrin.h>
+static inline uint32_t host_from_le32(uint32_t x) { return _byteswap_ulong(x); }
+static inline uint32_t le32_from_host(uint32_t x) { return _byteswap_ulong(x); }
+static inline uint64_t host_from_le64(uint64_t x) { return _byteswap_uint64(x);}
+static inline uint64_t le64_from_host(uint64_t x) { return _byteswap_uint64(x);}
+
+#else
+
+static inline uint32_t host_from_le32(uint32_t x) {return __builtin_bswap32(x);}
+static inline uint32_t le32_from_host(uint32_t x) {return __builtin_bswap32(x);}
+static inline uint64_t host_from_le64(uint64_t x) {return __builtin_bswap64(x);}
+static inline uint64_t le64_from_host(uint64_t x) {return __builtin_bswap64(x);}
+
+#endif
+
+} // namespace highwayhash
+
+#endif // HIGHWAYHASH_ENDIANESS_H_
diff --git a/contrib/libs/highwayhash/highwayhash/example.cc b/contrib/libs/highwayhash/highwayhash/example.cc
index ed7c6a3173..587e3c5985 100644
--- a/contrib/libs/highwayhash/highwayhash/example.cc
+++ b/contrib/libs/highwayhash/highwayhash/example.cc
@@ -1,30 +1,30 @@
-// Minimal usage example: prints a hash. Tested on x86, ppc, arm.
-
-#include "highwayhash/highwayhash.h"
-
-#include <algorithm>
-#include <iostream>
-
-using namespace highwayhash;
-
-int main(int argc, char* argv[]) {
- // Please use a different key to ensure your hashes aren't identical.
- const HHKey key HH_ALIGNAS(32) = {1, 2, 3, 4};
- // Aligning inputs to 32 bytes may help but is not required.
- const char in[] = "bytes_to_hash";
- // Type determines the hash size; can also be HHResult128 or HHResult256.
- HHResult64 result;
- // HH_TARGET_PREFERRED expands to the best specialization available for the
- // CPU detected via compiler flags (e.g. AVX2 #ifdef __AVX2__).
- HHStateT<HH_TARGET_PREFERRED> state(key);
- // Using argc prevents the compiler from eliding the hash computations.
- const size_t size = std::min(sizeof(in), static_cast<size_t>(argc));
- HighwayHashT(&state, in, size, &result);
- std::cout << "Hash : " << result << std::endl;
-
- HighwayHashCatT<HH_TARGET_PREFERRED> cat(key);
- cat.Append(in, size);
- cat.Finalize(&result);
- std::cout << "HashCat: " << result << std::endl;
- return 0;
-}
+// Minimal usage example: prints a hash. Tested on x86, ppc, arm.
+
+#include "highwayhash/highwayhash.h"
+
+#include <algorithm>
+#include <iostream>
+
+using namespace highwayhash;
+
+int main(int argc, char* argv[]) {
+ // Please use a different key to ensure your hashes aren't identical.
+ const HHKey key HH_ALIGNAS(32) = {1, 2, 3, 4};
+ // Aligning inputs to 32 bytes may help but is not required.
+ const char in[] = "bytes_to_hash";
+ // Type determines the hash size; can also be HHResult128 or HHResult256.
+ HHResult64 result;
+ // HH_TARGET_PREFERRED expands to the best specialization available for the
+ // CPU detected via compiler flags (e.g. AVX2 #ifdef __AVX2__).
+ HHStateT<HH_TARGET_PREFERRED> state(key);
+ // Using argc prevents the compiler from eliding the hash computations.
+ const size_t size = std::min(sizeof(in), static_cast<size_t>(argc));
+ HighwayHashT(&state, in, size, &result);
+ std::cout << "Hash : " << result << std::endl;
+
+ HighwayHashCatT<HH_TARGET_PREFERRED> cat(key);
+ cat.Append(in, size);
+ cat.Finalize(&result);
+ std::cout << "HashCat: " << result << std::endl;
+ return 0;
+}
diff --git a/contrib/libs/highwayhash/highwayhash/hh_avx2.cc b/contrib/libs/highwayhash/highwayhash/hh_avx2.cc
index b4477ad2e2..7e3ddff0d4 100644
--- a/contrib/libs/highwayhash/highwayhash/hh_avx2.cc
+++ b/contrib/libs/highwayhash/highwayhash/hh_avx2.cc
@@ -1,19 +1,19 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// WARNING: this is a "restricted" source file; avoid including any headers
-// unless they are also restricted. See arch_specific.h for details.
-
-#define HH_TARGET_NAME AVX2
-#include "highwayhash/highwayhash_target.cc"
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// WARNING: this is a "restricted" source file; avoid including any headers
+// unless they are also restricted. See arch_specific.h for details.
+
+#define HH_TARGET_NAME AVX2
+#include "highwayhash/highwayhash_target.cc"
diff --git a/contrib/libs/highwayhash/highwayhash/hh_avx2.h b/contrib/libs/highwayhash/highwayhash/hh_avx2.h
index dfb85ab32a..2912a31b11 100644
--- a/contrib/libs/highwayhash/highwayhash/hh_avx2.h
+++ b/contrib/libs/highwayhash/highwayhash/hh_avx2.h
@@ -1,383 +1,383 @@
-// Copyright 2015-2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef HIGHWAYHASH_HH_AVX2_H_
-#define HIGHWAYHASH_HH_AVX2_H_
-
-// WARNING: this is a "restricted" header because it is included from
-// translation units compiled with different flags. This header and its
-// dependencies must not define any function unless it is static inline and/or
-// within namespace HH_TARGET_NAME. See arch_specific.h for details.
-
-#include "highwayhash/arch_specific.h"
-#include "highwayhash/compiler_specific.h"
-#include "highwayhash/hh_buffer.h"
-#include "highwayhash/hh_types.h"
-#include "highwayhash/load3.h"
-#include "highwayhash/vector128.h"
-#include "highwayhash/vector256.h"
-
-// For auto-dependency generation, we need to include all headers but not their
-// contents (otherwise compilation fails because -mavx2 is not specified).
-#ifndef HH_DISABLE_TARGET_SPECIFIC
-
-namespace highwayhash {
-// See vector128.h for why this namespace is necessary; matching it here makes
-// it easier use the vector128 symbols, but requires textual inclusion.
-namespace HH_TARGET_NAME {
-
-class HHStateAVX2 {
- public:
- explicit HH_INLINE HHStateAVX2(const HHKey key_lanes) { Reset(key_lanes); }
-
- HH_INLINE void Reset(const HHKey key_lanes) {
- // "Nothing up my sleeve" numbers, concatenated hex digits of Pi from
- // http://www.numberworld.org/digits/Pi/, retrieved Feb 22, 2016.
- //
- // We use this python code to generate the fourth number to have
- // more even mixture of bits:
- /*
-def x(a,b,c):
- retval = 0
- for i in range(64):
- count = ((a >> i) & 1) + ((b >> i) & 1) + ((c >> i) & 1)
- if (count <= 1):
- retval |= 1 << i
- return retval
- */
- const V4x64U init0(0x243f6a8885a308d3ull, 0x13198a2e03707344ull,
- 0xa4093822299f31d0ull, 0xdbe6d5d5fe4cce2full);
- const V4x64U init1(0x452821e638d01377ull, 0xbe5466cf34e90c6cull,
- 0xc0acf169b5f18a8cull, 0x3bd39e10cb0ef593ull);
- const V4x64U key = LoadUnaligned<V4x64U>(key_lanes);
- v0 = key ^ init0;
- v1 = Rotate64By32(key) ^ init1;
- mul0 = init0;
- mul1 = init1;
- }
-
- HH_INLINE void Update(const HHPacket& packet_bytes) {
- const uint64_t* HH_RESTRICT packet =
- reinterpret_cast<const uint64_t * HH_RESTRICT>(packet_bytes);
- Update(LoadUnaligned<V4x64U>(packet));
- }
-
- HH_INLINE void UpdateRemainder(const char* bytes, const size_t size_mod32) {
- // 'Length padding' differentiates zero-valued inputs that have the same
- // size/32. mod32 is sufficient because each Update behaves as if a
- // counter were injected, because the state is large and mixed thoroughly.
- const V8x32U size256(
- _mm256_broadcastd_epi32(_mm_cvtsi64_si128(size_mod32)));
- // Equivalent to storing size_mod32 in packet.
- v0 += V4x64U(size256);
- // Boosts the avalanche effect of mod32.
- v1 = Rotate32By(v1, size256);
-
- const char* remainder = bytes + (size_mod32 & ~3);
- const size_t size_mod4 = size_mod32 & 3;
-
- const V4x32U size(_mm256_castsi256_si128(size256));
-
- // (Branching is faster than a single _mm256_maskload_epi32.)
- if (HH_UNLIKELY(size_mod32 & 16)) { // 16..31 bytes left
- const V4x32U packetL =
- LoadUnaligned<V4x32U>(reinterpret_cast<const uint32_t*>(bytes));
-
- const V4x32U int_mask = IntMask<16>()(size);
- const V4x32U int_lanes = MaskedLoadInt(bytes + 16, int_mask);
- const uint32_t last4 =
- Load3()(Load3::AllowReadBeforeAndReturn(), remainder, size_mod4);
-
- // The upper four bytes of packetH are zero, so insert there.
- const V4x32U packetH(_mm_insert_epi32(int_lanes, last4, 3));
- Update(packetH, packetL);
- } else { // size_mod32 < 16
- const V4x32U int_mask = IntMask<0>()(size);
- const V4x32U packetL = MaskedLoadInt(bytes, int_mask);
- const uint64_t last3 =
- Load3()(Load3::AllowUnordered(), remainder, size_mod4);
-
- // Rather than insert into packetL[3], it is faster to initialize
- // the otherwise empty packetH.
- const V4x32U packetH(_mm_cvtsi64_si128(last3));
- Update(packetH, packetL);
- }
- }
-
- HH_INLINE void Finalize(HHResult64* HH_RESTRICT result) {
- // Mix together all lanes. It is slightly better to permute v0 than v1;
- // it will be added to v1.
- Update(Permute(v0));
- Update(Permute(v0));
- Update(Permute(v0));
- Update(Permute(v0));
-
- const V2x64U sum0(_mm256_castsi256_si128(v0 + mul0));
- const V2x64U sum1(_mm256_castsi256_si128(v1 + mul1));
- const V2x64U hash = sum0 + sum1;
- // Each lane is sufficiently mixed, so just truncate to 64 bits.
- _mm_storel_epi64(reinterpret_cast<__m128i*>(result), hash);
- }
-
- HH_INLINE void Finalize(HHResult128* HH_RESTRICT result) {
- Update(Permute(v0));
- Update(Permute(v0));
- Update(Permute(v0));
- Update(Permute(v0));
-
- const V2x64U sum0(_mm256_castsi256_si128(v0 + mul0));
- const V2x64U sum1(_mm256_extracti128_si256(v1 + mul1, 1));
- const V2x64U hash = sum0 + sum1;
- _mm_storeu_si128(reinterpret_cast<__m128i*>(result), hash);
- }
-
- HH_INLINE void Finalize(HHResult256* HH_RESTRICT result) {
- Update(Permute(v0));
- Update(Permute(v0));
- Update(Permute(v0));
- Update(Permute(v0));
-
- const V4x64U sum0 = v0 + mul0;
- const V4x64U sum1 = v1 + mul1;
- const V4x64U hash = ModularReduction(sum1, sum0);
- StoreUnaligned(hash, &(*result)[0]);
- }
-
- // "buffer" must be 32-byte aligned.
- static HH_INLINE void ZeroInitialize(char* HH_RESTRICT buffer) {
- const __m256i zero = _mm256_setzero_si256();
- _mm256_store_si256(reinterpret_cast<__m256i*>(buffer), zero);
- }
-
- // "buffer" must be 32-byte aligned.
- static HH_INLINE void CopyPartial(const char* HH_RESTRICT from,
- const size_t size_mod32,
- char* HH_RESTRICT buffer) {
- const V4x32U size(size_mod32);
- const uint32_t* const HH_RESTRICT from_u32 =
- reinterpret_cast<const uint32_t * HH_RESTRICT>(from);
- uint32_t* const HH_RESTRICT buffer_u32 =
- reinterpret_cast<uint32_t * HH_RESTRICT>(buffer);
- if (HH_UNLIKELY(size_mod32 & 16)) { // Copying 16..31 bytes
- const V4x32U inL = LoadUnaligned<V4x32U>(from_u32);
- Store(inL, buffer_u32);
- const V4x32U inH = Load0To16<16, Load3::AllowReadBefore>(
- from + 16, size_mod32 - 16, size);
- Store(inH, buffer_u32 + V4x32U::N);
- } else { // Copying 0..15 bytes
- const V4x32U inL = Load0To16<>(from, size_mod32, size);
- Store(inL, buffer_u32);
- // No need to change upper 16 bytes of buffer.
- }
- }
-
- // "buffer" must be 32-byte aligned.
- static HH_INLINE void AppendPartial(const char* HH_RESTRICT from,
- const size_t size_mod32,
- char* HH_RESTRICT buffer,
- const size_t buffer_valid) {
- const V4x32U size(size_mod32);
- uint32_t* const HH_RESTRICT buffer_u32 =
- reinterpret_cast<uint32_t * HH_RESTRICT>(buffer);
- // buffer_valid + size <= 32 => appending 0..16 bytes inside upper 16 bytes.
- if (HH_UNLIKELY(buffer_valid & 16)) {
- const V4x32U suffix = Load0To16<>(from, size_mod32, size);
- const V4x32U bufferH = Load<V4x32U>(buffer_u32 + V4x32U::N);
- const V4x32U outH = Concatenate(bufferH, buffer_valid - 16, suffix);
- Store(outH, buffer_u32 + V4x32U::N);
- } else { // Appending 0..32 bytes starting at offset 0..15.
- const V4x32U bufferL = Load<V4x32U>(buffer_u32);
- const V4x32U suffixL = Load0To16<>(from, size_mod32, size);
- const V4x32U outL = Concatenate(bufferL, buffer_valid, suffixL);
- Store(outL, buffer_u32);
- const size_t offsetH = sizeof(V4x32U) - buffer_valid;
- // Do we have enough input to start filling the upper 16 buffer bytes?
- if (size_mod32 > offsetH) {
- const size_t sizeH = size_mod32 - offsetH;
- const V4x32U outH = Load0To16<>(from + offsetH, sizeH, V4x32U(sizeH));
- Store(outH, buffer_u32 + V4x32U::N);
- }
- }
- }
-
- // "buffer" must be 32-byte aligned.
- HH_INLINE void AppendAndUpdate(const char* HH_RESTRICT from,
- const size_t size_mod32,
- const char* HH_RESTRICT buffer,
- const size_t buffer_valid) {
- const V4x32U size(size_mod32);
- const uint32_t* const HH_RESTRICT buffer_u32 =
- reinterpret_cast<const uint32_t * HH_RESTRICT>(buffer);
- // buffer_valid + size <= 32 => appending 0..16 bytes inside upper 16 bytes.
- if (HH_UNLIKELY(buffer_valid & 16)) {
- const V4x32U suffix = Load0To16<>(from, size_mod32, size);
- const V4x32U packetL = Load<V4x32U>(buffer_u32);
- const V4x32U bufferH = Load<V4x32U>(buffer_u32 + V4x32U::N);
- const V4x32U packetH = Concatenate(bufferH, buffer_valid - 16, suffix);
- Update(packetH, packetL);
- } else { // Appending 0..32 bytes starting at offset 0..15.
- const V4x32U bufferL = Load<V4x32U>(buffer_u32);
- const V4x32U suffixL = Load0To16<>(from, size_mod32, size);
- const V4x32U packetL = Concatenate(bufferL, buffer_valid, suffixL);
- const size_t offsetH = sizeof(V4x32U) - buffer_valid;
- V4x32U packetH = packetL - packetL;
- // Do we have enough input to start filling the upper 16 packet bytes?
- if (size_mod32 > offsetH) {
- const size_t sizeH = size_mod32 - offsetH;
- packetH = Load0To16<>(from + offsetH, sizeH, V4x32U(sizeH));
- }
-
- Update(packetH, packetL);
- }
- }
-
- private:
- static HH_INLINE V4x32U MaskedLoadInt(const char* from,
- const V4x32U& int_mask) {
- // No faults will be raised when reading n=0..3 ints from "from" provided
- // int_mask[n] = 0.
- const int* HH_RESTRICT int_from = reinterpret_cast<const int*>(from);
- return V4x32U(_mm_maskload_epi32(int_from, int_mask));
- }
-
- // Loads <= 16 bytes without accessing any byte outside [from, from + size).
- // from[i] is loaded into lane i; from[i >= size] is undefined.
- template <uint32_t kSizeOffset = 0, class Load3Policy = Load3::AllowNone>
- static HH_INLINE V4x32U Load0To16(const char* from, const size_t size_mod32,
- const V4x32U& size) {
- const char* remainder = from + (size_mod32 & ~3);
- const uint64_t last3 = Load3()(Load3Policy(), remainder, size_mod32 & 3);
- const V4x32U int_mask = IntMask<kSizeOffset>()(size);
- const V4x32U int_lanes = MaskedLoadInt(from, int_mask);
- return Insert4AboveMask(last3, int_mask, int_lanes);
- }
-
- static HH_INLINE V4x64U Rotate64By32(const V4x64U& v) {
- return V4x64U(_mm256_shuffle_epi32(v, _MM_SHUFFLE(2, 3, 0, 1)));
- }
-
- // Rotates 32-bit lanes by "count" bits.
- static HH_INLINE V4x64U Rotate32By(const V4x64U& v, const V8x32U& count) {
- // Use variable shifts because sll_epi32 has 4 cycle latency (presumably
- // to broadcast the shift count).
- const V4x64U shifted_left(_mm256_sllv_epi32(v, count));
- const V4x64U shifted_right(_mm256_srlv_epi32(v, V8x32U(32) - count));
- return shifted_left | shifted_right;
- }
-
- static HH_INLINE V4x64U Permute(const V4x64U& v) {
- // For complete mixing, we need to swap the upper and lower 128-bit halves;
- // we also swap all 32-bit halves. This is faster than extracti128 plus
- // inserti128 followed by Rotate64By32.
- const V4x64U indices(0x0000000200000003ull, 0x0000000000000001ull,
- 0x0000000600000007ull, 0x0000000400000005ull);
- return V4x64U(_mm256_permutevar8x32_epi32(v, indices));
- }
-
- static HH_INLINE V4x64U MulLow32(const V4x64U& a, const V4x64U& b) {
- return V4x64U(_mm256_mul_epu32(a, b));
- }
-
- static HH_INLINE V4x64U ZipperMerge(const V4x64U& v) {
- // Multiplication mixes/scrambles bytes 0-7 of the 64-bit result to
- // varying degrees. In descending order of goodness, bytes
- // 3 4 2 5 1 6 0 7 have quality 228 224 164 160 100 96 36 32.
- // As expected, the upper and lower bytes are much worse.
- // For each 64-bit lane, our objectives are:
- // 1) maximizing and equalizing total goodness across the four lanes.
- // 2) mixing with bytes from the neighboring lane (AVX-2 makes it difficult
- // to cross the 128-bit wall, but PermuteAndUpdate takes care of that);
- // 3) placing the worst bytes in the upper 32 bits because those will not
- // be used in the next 32x32 multiplication.
- const uint64_t hi = 0x070806090D0A040Bull;
- const uint64_t lo = 0x000F010E05020C03ull;
- return V4x64U(_mm256_shuffle_epi8(v, V4x64U(hi, lo, hi, lo)));
- }
-
- // Updates four hash lanes in parallel by injecting four 64-bit packets.
- HH_INLINE void Update(const V4x64U& packet) {
- v1 += packet;
- v1 += mul0;
- mul0 ^= MulLow32(v1, v0 >> 32);
- HH_COMPILER_FENCE;
- v0 += mul1;
- mul1 ^= MulLow32(v0, v1 >> 32);
- HH_COMPILER_FENCE;
- v0 += ZipperMerge(v1);
- v1 += ZipperMerge(v0);
- }
-
- HH_INLINE void Update(const V4x32U& packetH, const V4x32U& packetL) {
- const __m256i packetL256 = _mm256_castsi128_si256(packetL);
- Update(V4x64U(_mm256_inserti128_si256(packetL256, packetH, 1)));
- }
-
- // XORs a << 1 and a << 2 into *out after clearing the upper two bits of a.
- // Also does the same for the upper 128 bit lane "b". Bit shifts are only
- // possible on independent 64-bit lanes. We therefore insert the upper bits
- // of a[0] that were lost into a[1]. Thanks to D. Lemire for helpful comments!
- static HH_INLINE void XorByShift128Left12(const V4x64U& ba,
- V4x64U* HH_RESTRICT out) {
- const V4x64U zero = ba ^ ba;
- const V4x64U top_bits2 = ba >> (64 - 2);
- const V4x64U ones = ba == ba; // FF .. FF
- const V4x64U shifted1_unmasked = ba + ba; // (avoids needing port0)
- HH_COMPILER_FENCE;
-
- // Only the lower halves of top_bits1's 128 bit lanes will be used, so we
- // can compute it before clearing the upper two bits of ba.
- const V4x64U top_bits1 = ba >> (64 - 1);
- const V4x64U upper_8bytes(_mm256_slli_si256(ones, 8)); // F 0 F 0
- const V4x64U shifted2 = shifted1_unmasked + shifted1_unmasked;
- HH_COMPILER_FENCE;
-
- const V4x64U upper_bit_of_128 = upper_8bytes << 63; // 80..00 80..00
- const V4x64U new_low_bits2(_mm256_unpacklo_epi64(zero, top_bits2));
- *out ^= shifted2;
- HH_COMPILER_FENCE;
-
- // The result must be as if the upper two bits of the input had been clear,
- // otherwise we're no longer computing a reduction.
- const V4x64U shifted1 = AndNot(upper_bit_of_128, shifted1_unmasked);
- *out ^= new_low_bits2;
- HH_COMPILER_FENCE;
-
- const V4x64U new_low_bits1(_mm256_unpacklo_epi64(zero, top_bits1));
- *out ^= shifted1;
-
- *out ^= new_low_bits1;
- }
-
- // Modular reduction by the irreducible polynomial (x^128 + x^2 + x).
- // Input: two 256-bit numbers a3210 and b3210, interleaved in 2 vectors.
- // The upper and lower 128-bit halves are processed independently.
- static HH_INLINE V4x64U ModularReduction(const V4x64U& b32a32,
- const V4x64U& b10a10) {
- // See Lemire, https://arxiv.org/pdf/1503.03465v8.pdf.
- V4x64U out = b10a10;
- XorByShift128Left12(b32a32, &out);
- return out;
- }
-
- V4x64U v0;
- V4x64U v1;
- V4x64U mul0;
- V4x64U mul1;
-};
-
-} // namespace HH_TARGET_NAME
-} // namespace highwayhash
-
-#endif // HH_DISABLE_TARGET_SPECIFIC
-#endif // HIGHWAYHASH_HH_AVX2_H_
+// Copyright 2015-2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef HIGHWAYHASH_HH_AVX2_H_
+#define HIGHWAYHASH_HH_AVX2_H_
+
+// WARNING: this is a "restricted" header because it is included from
+// translation units compiled with different flags. This header and its
+// dependencies must not define any function unless it is static inline and/or
+// within namespace HH_TARGET_NAME. See arch_specific.h for details.
+
+#include "highwayhash/arch_specific.h"
+#include "highwayhash/compiler_specific.h"
+#include "highwayhash/hh_buffer.h"
+#include "highwayhash/hh_types.h"
+#include "highwayhash/load3.h"
+#include "highwayhash/vector128.h"
+#include "highwayhash/vector256.h"
+
+// For auto-dependency generation, we need to include all headers but not their
+// contents (otherwise compilation fails because -mavx2 is not specified).
+#ifndef HH_DISABLE_TARGET_SPECIFIC
+
+namespace highwayhash {
+// See vector128.h for why this namespace is necessary; matching it here makes
+// it easier use the vector128 symbols, but requires textual inclusion.
+namespace HH_TARGET_NAME {
+
+class HHStateAVX2 {
+ public:
+ explicit HH_INLINE HHStateAVX2(const HHKey key_lanes) { Reset(key_lanes); }
+
+ HH_INLINE void Reset(const HHKey key_lanes) {
+ // "Nothing up my sleeve" numbers, concatenated hex digits of Pi from
+ // http://www.numberworld.org/digits/Pi/, retrieved Feb 22, 2016.
+ //
+ // We use this python code to generate the fourth number to have
+ // more even mixture of bits:
+ /*
+def x(a,b,c):
+ retval = 0
+ for i in range(64):
+ count = ((a >> i) & 1) + ((b >> i) & 1) + ((c >> i) & 1)
+ if (count <= 1):
+ retval |= 1 << i
+ return retval
+ */
+ const V4x64U init0(0x243f6a8885a308d3ull, 0x13198a2e03707344ull,
+ 0xa4093822299f31d0ull, 0xdbe6d5d5fe4cce2full);
+ const V4x64U init1(0x452821e638d01377ull, 0xbe5466cf34e90c6cull,
+ 0xc0acf169b5f18a8cull, 0x3bd39e10cb0ef593ull);
+ const V4x64U key = LoadUnaligned<V4x64U>(key_lanes);
+ v0 = key ^ init0;
+ v1 = Rotate64By32(key) ^ init1;
+ mul0 = init0;
+ mul1 = init1;
+ }
+
+ HH_INLINE void Update(const HHPacket& packet_bytes) {
+ const uint64_t* HH_RESTRICT packet =
+ reinterpret_cast<const uint64_t * HH_RESTRICT>(packet_bytes);
+ Update(LoadUnaligned<V4x64U>(packet));
+ }
+
+ HH_INLINE void UpdateRemainder(const char* bytes, const size_t size_mod32) {
+ // 'Length padding' differentiates zero-valued inputs that have the same
+ // size/32. mod32 is sufficient because each Update behaves as if a
+ // counter were injected, because the state is large and mixed thoroughly.
+ const V8x32U size256(
+ _mm256_broadcastd_epi32(_mm_cvtsi64_si128(size_mod32)));
+ // Equivalent to storing size_mod32 in packet.
+ v0 += V4x64U(size256);
+ // Boosts the avalanche effect of mod32.
+ v1 = Rotate32By(v1, size256);
+
+ const char* remainder = bytes + (size_mod32 & ~3);
+ const size_t size_mod4 = size_mod32 & 3;
+
+ const V4x32U size(_mm256_castsi256_si128(size256));
+
+ // (Branching is faster than a single _mm256_maskload_epi32.)
+ if (HH_UNLIKELY(size_mod32 & 16)) { // 16..31 bytes left
+ const V4x32U packetL =
+ LoadUnaligned<V4x32U>(reinterpret_cast<const uint32_t*>(bytes));
+
+ const V4x32U int_mask = IntMask<16>()(size);
+ const V4x32U int_lanes = MaskedLoadInt(bytes + 16, int_mask);
+ const uint32_t last4 =
+ Load3()(Load3::AllowReadBeforeAndReturn(), remainder, size_mod4);
+
+ // The upper four bytes of packetH are zero, so insert there.
+ const V4x32U packetH(_mm_insert_epi32(int_lanes, last4, 3));
+ Update(packetH, packetL);
+ } else { // size_mod32 < 16
+ const V4x32U int_mask = IntMask<0>()(size);
+ const V4x32U packetL = MaskedLoadInt(bytes, int_mask);
+ const uint64_t last3 =
+ Load3()(Load3::AllowUnordered(), remainder, size_mod4);
+
+ // Rather than insert into packetL[3], it is faster to initialize
+ // the otherwise empty packetH.
+ const V4x32U packetH(_mm_cvtsi64_si128(last3));
+ Update(packetH, packetL);
+ }
+ }
+
+ HH_INLINE void Finalize(HHResult64* HH_RESTRICT result) {
+ // Mix together all lanes. It is slightly better to permute v0 than v1;
+ // it will be added to v1.
+ Update(Permute(v0));
+ Update(Permute(v0));
+ Update(Permute(v0));
+ Update(Permute(v0));
+
+ const V2x64U sum0(_mm256_castsi256_si128(v0 + mul0));
+ const V2x64U sum1(_mm256_castsi256_si128(v1 + mul1));
+ const V2x64U hash = sum0 + sum1;
+ // Each lane is sufficiently mixed, so just truncate to 64 bits.
+ _mm_storel_epi64(reinterpret_cast<__m128i*>(result), hash);
+ }
+
+ HH_INLINE void Finalize(HHResult128* HH_RESTRICT result) {
+ Update(Permute(v0));
+ Update(Permute(v0));
+ Update(Permute(v0));
+ Update(Permute(v0));
+
+ const V2x64U sum0(_mm256_castsi256_si128(v0 + mul0));
+ const V2x64U sum1(_mm256_extracti128_si256(v1 + mul1, 1));
+ const V2x64U hash = sum0 + sum1;
+ _mm_storeu_si128(reinterpret_cast<__m128i*>(result), hash);
+ }
+
+ HH_INLINE void Finalize(HHResult256* HH_RESTRICT result) {
+ Update(Permute(v0));
+ Update(Permute(v0));
+ Update(Permute(v0));
+ Update(Permute(v0));
+
+ const V4x64U sum0 = v0 + mul0;
+ const V4x64U sum1 = v1 + mul1;
+ const V4x64U hash = ModularReduction(sum1, sum0);
+ StoreUnaligned(hash, &(*result)[0]);
+ }
+
+ // "buffer" must be 32-byte aligned.
+ static HH_INLINE void ZeroInitialize(char* HH_RESTRICT buffer) {
+ const __m256i zero = _mm256_setzero_si256();
+ _mm256_store_si256(reinterpret_cast<__m256i*>(buffer), zero);
+ }
+
+ // "buffer" must be 32-byte aligned.
+ static HH_INLINE void CopyPartial(const char* HH_RESTRICT from,
+ const size_t size_mod32,
+ char* HH_RESTRICT buffer) {
+ const V4x32U size(size_mod32);
+ const uint32_t* const HH_RESTRICT from_u32 =
+ reinterpret_cast<const uint32_t * HH_RESTRICT>(from);
+ uint32_t* const HH_RESTRICT buffer_u32 =
+ reinterpret_cast<uint32_t * HH_RESTRICT>(buffer);
+ if (HH_UNLIKELY(size_mod32 & 16)) { // Copying 16..31 bytes
+ const V4x32U inL = LoadUnaligned<V4x32U>(from_u32);
+ Store(inL, buffer_u32);
+ const V4x32U inH = Load0To16<16, Load3::AllowReadBefore>(
+ from + 16, size_mod32 - 16, size);
+ Store(inH, buffer_u32 + V4x32U::N);
+ } else { // Copying 0..15 bytes
+ const V4x32U inL = Load0To16<>(from, size_mod32, size);
+ Store(inL, buffer_u32);
+ // No need to change upper 16 bytes of buffer.
+ }
+ }
+
+ // "buffer" must be 32-byte aligned.
+ static HH_INLINE void AppendPartial(const char* HH_RESTRICT from,
+ const size_t size_mod32,
+ char* HH_RESTRICT buffer,
+ const size_t buffer_valid) {
+ const V4x32U size(size_mod32);
+ uint32_t* const HH_RESTRICT buffer_u32 =
+ reinterpret_cast<uint32_t * HH_RESTRICT>(buffer);
+ // buffer_valid + size <= 32 => appending 0..16 bytes inside upper 16 bytes.
+ if (HH_UNLIKELY(buffer_valid & 16)) {
+ const V4x32U suffix = Load0To16<>(from, size_mod32, size);
+ const V4x32U bufferH = Load<V4x32U>(buffer_u32 + V4x32U::N);
+ const V4x32U outH = Concatenate(bufferH, buffer_valid - 16, suffix);
+ Store(outH, buffer_u32 + V4x32U::N);
+ } else { // Appending 0..32 bytes starting at offset 0..15.
+ const V4x32U bufferL = Load<V4x32U>(buffer_u32);
+ const V4x32U suffixL = Load0To16<>(from, size_mod32, size);
+ const V4x32U outL = Concatenate(bufferL, buffer_valid, suffixL);
+ Store(outL, buffer_u32);
+ const size_t offsetH = sizeof(V4x32U) - buffer_valid;
+ // Do we have enough input to start filling the upper 16 buffer bytes?
+ if (size_mod32 > offsetH) {
+ const size_t sizeH = size_mod32 - offsetH;
+ const V4x32U outH = Load0To16<>(from + offsetH, sizeH, V4x32U(sizeH));
+ Store(outH, buffer_u32 + V4x32U::N);
+ }
+ }
+ }
+
+ // "buffer" must be 32-byte aligned.
+ HH_INLINE void AppendAndUpdate(const char* HH_RESTRICT from,
+ const size_t size_mod32,
+ const char* HH_RESTRICT buffer,
+ const size_t buffer_valid) {
+ const V4x32U size(size_mod32);
+ const uint32_t* const HH_RESTRICT buffer_u32 =
+ reinterpret_cast<const uint32_t * HH_RESTRICT>(buffer);
+ // buffer_valid + size <= 32 => appending 0..16 bytes inside upper 16 bytes.
+ if (HH_UNLIKELY(buffer_valid & 16)) {
+ const V4x32U suffix = Load0To16<>(from, size_mod32, size);
+ const V4x32U packetL = Load<V4x32U>(buffer_u32);
+ const V4x32U bufferH = Load<V4x32U>(buffer_u32 + V4x32U::N);
+ const V4x32U packetH = Concatenate(bufferH, buffer_valid - 16, suffix);
+ Update(packetH, packetL);
+ } else { // Appending 0..32 bytes starting at offset 0..15.
+ const V4x32U bufferL = Load<V4x32U>(buffer_u32);
+ const V4x32U suffixL = Load0To16<>(from, size_mod32, size);
+ const V4x32U packetL = Concatenate(bufferL, buffer_valid, suffixL);
+ const size_t offsetH = sizeof(V4x32U) - buffer_valid;
+ V4x32U packetH = packetL - packetL;
+ // Do we have enough input to start filling the upper 16 packet bytes?
+ if (size_mod32 > offsetH) {
+ const size_t sizeH = size_mod32 - offsetH;
+ packetH = Load0To16<>(from + offsetH, sizeH, V4x32U(sizeH));
+ }
+
+ Update(packetH, packetL);
+ }
+ }
+
+ private:
+ static HH_INLINE V4x32U MaskedLoadInt(const char* from,
+ const V4x32U& int_mask) {
+ // No faults will be raised when reading n=0..3 ints from "from" provided
+ // int_mask[n] = 0.
+ const int* HH_RESTRICT int_from = reinterpret_cast<const int*>(from);
+ return V4x32U(_mm_maskload_epi32(int_from, int_mask));
+ }
+
+ // Loads <= 16 bytes without accessing any byte outside [from, from + size).
+ // from[i] is loaded into lane i; from[i >= size] is undefined.
+ template <uint32_t kSizeOffset = 0, class Load3Policy = Load3::AllowNone>
+ static HH_INLINE V4x32U Load0To16(const char* from, const size_t size_mod32,
+ const V4x32U& size) {
+ const char* remainder = from + (size_mod32 & ~3);
+ const uint64_t last3 = Load3()(Load3Policy(), remainder, size_mod32 & 3);
+ const V4x32U int_mask = IntMask<kSizeOffset>()(size);
+ const V4x32U int_lanes = MaskedLoadInt(from, int_mask);
+ return Insert4AboveMask(last3, int_mask, int_lanes);
+ }
+
+ static HH_INLINE V4x64U Rotate64By32(const V4x64U& v) {
+ return V4x64U(_mm256_shuffle_epi32(v, _MM_SHUFFLE(2, 3, 0, 1)));
+ }
+
+ // Rotates 32-bit lanes by "count" bits.
+ static HH_INLINE V4x64U Rotate32By(const V4x64U& v, const V8x32U& count) {
+ // Use variable shifts because sll_epi32 has 4 cycle latency (presumably
+ // to broadcast the shift count).
+ const V4x64U shifted_left(_mm256_sllv_epi32(v, count));
+ const V4x64U shifted_right(_mm256_srlv_epi32(v, V8x32U(32) - count));
+ return shifted_left | shifted_right;
+ }
+
+ static HH_INLINE V4x64U Permute(const V4x64U& v) {
+ // For complete mixing, we need to swap the upper and lower 128-bit halves;
+ // we also swap all 32-bit halves. This is faster than extracti128 plus
+ // inserti128 followed by Rotate64By32.
+ const V4x64U indices(0x0000000200000003ull, 0x0000000000000001ull,
+ 0x0000000600000007ull, 0x0000000400000005ull);
+ return V4x64U(_mm256_permutevar8x32_epi32(v, indices));
+ }
+
+ static HH_INLINE V4x64U MulLow32(const V4x64U& a, const V4x64U& b) {
+ return V4x64U(_mm256_mul_epu32(a, b));
+ }
+
+ static HH_INLINE V4x64U ZipperMerge(const V4x64U& v) {
+ // Multiplication mixes/scrambles bytes 0-7 of the 64-bit result to
+ // varying degrees. In descending order of goodness, bytes
+ // 3 4 2 5 1 6 0 7 have quality 228 224 164 160 100 96 36 32.
+ // As expected, the upper and lower bytes are much worse.
+ // For each 64-bit lane, our objectives are:
+ // 1) maximizing and equalizing total goodness across the four lanes.
+ // 2) mixing with bytes from the neighboring lane (AVX-2 makes it difficult
+ // to cross the 128-bit wall, but PermuteAndUpdate takes care of that);
+ // 3) placing the worst bytes in the upper 32 bits because those will not
+ // be used in the next 32x32 multiplication.
+ const uint64_t hi = 0x070806090D0A040Bull;
+ const uint64_t lo = 0x000F010E05020C03ull;
+ return V4x64U(_mm256_shuffle_epi8(v, V4x64U(hi, lo, hi, lo)));
+ }
+
+ // Updates four hash lanes in parallel by injecting four 64-bit packets.
+ HH_INLINE void Update(const V4x64U& packet) {
+ v1 += packet;
+ v1 += mul0;
+ mul0 ^= MulLow32(v1, v0 >> 32);
+ HH_COMPILER_FENCE;
+ v0 += mul1;
+ mul1 ^= MulLow32(v0, v1 >> 32);
+ HH_COMPILER_FENCE;
+ v0 += ZipperMerge(v1);
+ v1 += ZipperMerge(v0);
+ }
+
+ HH_INLINE void Update(const V4x32U& packetH, const V4x32U& packetL) {
+ const __m256i packetL256 = _mm256_castsi128_si256(packetL);
+ Update(V4x64U(_mm256_inserti128_si256(packetL256, packetH, 1)));
+ }
+
+ // XORs a << 1 and a << 2 into *out after clearing the upper two bits of a.
+ // Also does the same for the upper 128 bit lane "b". Bit shifts are only
+ // possible on independent 64-bit lanes. We therefore insert the upper bits
+ // of a[0] that were lost into a[1]. Thanks to D. Lemire for helpful comments!
+ static HH_INLINE void XorByShift128Left12(const V4x64U& ba,
+ V4x64U* HH_RESTRICT out) {
+ const V4x64U zero = ba ^ ba;
+ const V4x64U top_bits2 = ba >> (64 - 2);
+ const V4x64U ones = ba == ba; // FF .. FF
+ const V4x64U shifted1_unmasked = ba + ba; // (avoids needing port0)
+ HH_COMPILER_FENCE;
+
+ // Only the lower halves of top_bits1's 128 bit lanes will be used, so we
+ // can compute it before clearing the upper two bits of ba.
+ const V4x64U top_bits1 = ba >> (64 - 1);
+ const V4x64U upper_8bytes(_mm256_slli_si256(ones, 8)); // F 0 F 0
+ const V4x64U shifted2 = shifted1_unmasked + shifted1_unmasked;
+ HH_COMPILER_FENCE;
+
+ const V4x64U upper_bit_of_128 = upper_8bytes << 63; // 80..00 80..00
+ const V4x64U new_low_bits2(_mm256_unpacklo_epi64(zero, top_bits2));
+ *out ^= shifted2;
+ HH_COMPILER_FENCE;
+
+ // The result must be as if the upper two bits of the input had been clear,
+ // otherwise we're no longer computing a reduction.
+ const V4x64U shifted1 = AndNot(upper_bit_of_128, shifted1_unmasked);
+ *out ^= new_low_bits2;
+ HH_COMPILER_FENCE;
+
+ const V4x64U new_low_bits1(_mm256_unpacklo_epi64(zero, top_bits1));
+ *out ^= shifted1;
+
+ *out ^= new_low_bits1;
+ }
+
+ // Modular reduction by the irreducible polynomial (x^128 + x^2 + x).
+ // Input: two 256-bit numbers a3210 and b3210, interleaved in 2 vectors.
+ // The upper and lower 128-bit halves are processed independently.
+ static HH_INLINE V4x64U ModularReduction(const V4x64U& b32a32,
+ const V4x64U& b10a10) {
+ // See Lemire, https://arxiv.org/pdf/1503.03465v8.pdf.
+ V4x64U out = b10a10;
+ XorByShift128Left12(b32a32, &out);
+ return out;
+ }
+
+ V4x64U v0;
+ V4x64U v1;
+ V4x64U mul0;
+ V4x64U mul1;
+};
+
+} // namespace HH_TARGET_NAME
+} // namespace highwayhash
+
+#endif // HH_DISABLE_TARGET_SPECIFIC
+#endif // HIGHWAYHASH_HH_AVX2_H_
diff --git a/contrib/libs/highwayhash/highwayhash/hh_buffer.h b/contrib/libs/highwayhash/highwayhash/hh_buffer.h
index 83b0fa6b8e..5b1c83f95b 100644
--- a/contrib/libs/highwayhash/highwayhash/hh_buffer.h
+++ b/contrib/libs/highwayhash/highwayhash/hh_buffer.h
@@ -1,103 +1,103 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef HIGHWAYHASH_HH_BUFFER_H_
-#define HIGHWAYHASH_HH_BUFFER_H_
-
-// Helper functions used by hh_avx2 and hh_sse41.
-
-// WARNING: this is a "restricted" header because it is included from
-// translation units compiled with different flags. This header and its
-// dependencies must not define any function unless it is static inline and/or
-// within namespace HH_TARGET_NAME. See arch_specific.h for details.
-
-#include "highwayhash/vector128.h"
-
-// For auto-dependency generation, we need to include all headers but not their
-// contents (otherwise compilation fails because -msse4.1 is not specified).
-#ifndef HH_DISABLE_TARGET_SPECIFIC
-
-namespace highwayhash {
-// To prevent ODR violations when including this from multiple translation
-// units (TU) that are compiled with different flags, the contents must reside
-// in a namespace whose name is unique to the TU. NOTE: this behavior is
-// incompatible with precompiled modules and requires textual inclusion instead.
-namespace HH_TARGET_NAME {
-
-template <uint32_t kSizeOffset>
-struct IntMask {}; // primary template
-
-template <>
-struct IntMask<0> {
- // Returns 32-bit lanes : ~0U if that lane can be loaded given "size" bytes.
- // Typical case: size = 0..16, nothing deducted.
- HH_INLINE V4x32U operator()(const V4x32U& size) const {
- // Lane n is valid if size >= (n + 1) * 4; subtract one because we only have
- // greater-than comparisons and don't want a negated mask.
- return V4x32U(_mm_cmpgt_epi32(size, V4x32U(15, 11, 7, 3)));
- }
-};
-
-template <>
-struct IntMask<16> {
- // "size" is 16..31; this is for loading the upper half of a packet, so
- // effectively deduct 16 from size by changing the comparands.
- HH_INLINE V4x32U operator()(const V4x32U& size) const {
- return V4x32U(_mm_cmpgt_epi32(size, V4x32U(31, 27, 23, 19)));
- }
-};
-
-// Inserts "bytes4" into "prev" at the lowest i such that mask[i] = 0.
-// Assumes prev[j] == 0 if mask[j] = 0.
-HH_INLINE V4x32U Insert4AboveMask(const uint32_t bytes4, const V4x32U& mask,
- const V4x32U& prev) {
- // There is no 128-bit shift by a variable count. Using shuffle_epi8 with a
- // control mask requires a table lookup. We know the shift count is a
- // multiple of 4 bytes, so we can broadcastd_epi32 and clear all lanes except
- // those where mask != 0. This works because any upper output lanes need not
- // be zero.
- return prev | AndNot(mask, V4x32U(bytes4));
-}
-
-// Shifts "suffix" left by "prefix_len" = 0..15 bytes, clears upper bytes of
-// "prefix", and returns the merged/concatenated bytes.
-HH_INLINE V4x32U Concatenate(const V4x32U& prefix, const size_t prefix_len,
- const V4x32U& suffix) {
- static const uint64_t table[V16x8U::N][V2x64U::N] = {
- {0x0706050403020100ull, 0x0F0E0D0C0B0A0908ull},
- {0x06050403020100FFull, 0x0E0D0C0B0A090807ull},
- {0x050403020100FFFFull, 0x0D0C0B0A09080706ull},
- {0x0403020100FFFFFFull, 0x0C0B0A0908070605ull},
- {0x03020100FFFFFFFFull, 0x0B0A090807060504ull},
- {0x020100FFFFFFFFFFull, 0x0A09080706050403ull},
- {0x0100FFFFFFFFFFFFull, 0x0908070605040302ull},
- {0x00FFFFFFFFFFFFFFull, 0x0807060504030201ull},
- {0xFFFFFFFFFFFFFFFFull, 0x0706050403020100ull},
- {0xFFFFFFFFFFFFFFFFull, 0x06050403020100FFull},
- {0xFFFFFFFFFFFFFFFFull, 0x050403020100FFFFull},
- {0xFFFFFFFFFFFFFFFFull, 0x0403020100FFFFFFull},
- {0xFFFFFFFFFFFFFFFFull, 0x03020100FFFFFFFFull},
- {0xFFFFFFFFFFFFFFFFull, 0x020100FFFFFFFFFFull},
- {0xFFFFFFFFFFFFFFFFull, 0x0100FFFFFFFFFFFFull},
- {0xFFFFFFFFFFFFFFFFull, 0x00FFFFFFFFFFFFFFull}};
- const V2x64U control = Load<V2x64U>(&table[prefix_len][0]);
- const V2x64U shifted_suffix(_mm_shuffle_epi8(suffix, control));
- return V4x32U(_mm_blendv_epi8(shifted_suffix, prefix, control));
-}
-
-} // namespace HH_TARGET_NAME
-} // namespace highwayhash
-
-#endif // HH_DISABLE_TARGET_SPECIFIC
-#endif // HIGHWAYHASH_HH_BUFFER_H_
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef HIGHWAYHASH_HH_BUFFER_H_
+#define HIGHWAYHASH_HH_BUFFER_H_
+
+// Helper functions used by hh_avx2 and hh_sse41.
+
+// WARNING: this is a "restricted" header because it is included from
+// translation units compiled with different flags. This header and its
+// dependencies must not define any function unless it is static inline and/or
+// within namespace HH_TARGET_NAME. See arch_specific.h for details.
+
+#include "highwayhash/vector128.h"
+
+// For auto-dependency generation, we need to include all headers but not their
+// contents (otherwise compilation fails because -msse4.1 is not specified).
+#ifndef HH_DISABLE_TARGET_SPECIFIC
+
+namespace highwayhash {
+// To prevent ODR violations when including this from multiple translation
+// units (TU) that are compiled with different flags, the contents must reside
+// in a namespace whose name is unique to the TU. NOTE: this behavior is
+// incompatible with precompiled modules and requires textual inclusion instead.
+namespace HH_TARGET_NAME {
+
+template <uint32_t kSizeOffset>
+struct IntMask {}; // primary template
+
+template <>
+struct IntMask<0> {
+ // Returns 32-bit lanes : ~0U if that lane can be loaded given "size" bytes.
+ // Typical case: size = 0..16, nothing deducted.
+ HH_INLINE V4x32U operator()(const V4x32U& size) const {
+ // Lane n is valid if size >= (n + 1) * 4; subtract one because we only have
+ // greater-than comparisons and don't want a negated mask.
+ return V4x32U(_mm_cmpgt_epi32(size, V4x32U(15, 11, 7, 3)));
+ }
+};
+
+template <>
+struct IntMask<16> {
+ // "size" is 16..31; this is for loading the upper half of a packet, so
+ // effectively deduct 16 from size by changing the comparands.
+ HH_INLINE V4x32U operator()(const V4x32U& size) const {
+ return V4x32U(_mm_cmpgt_epi32(size, V4x32U(31, 27, 23, 19)));
+ }
+};
+
+// Inserts "bytes4" into "prev" at the lowest i such that mask[i] = 0.
+// Assumes prev[j] == 0 if mask[j] = 0.
+HH_INLINE V4x32U Insert4AboveMask(const uint32_t bytes4, const V4x32U& mask,
+ const V4x32U& prev) {
+ // There is no 128-bit shift by a variable count. Using shuffle_epi8 with a
+ // control mask requires a table lookup. We know the shift count is a
+ // multiple of 4 bytes, so we can broadcastd_epi32 and clear all lanes except
+ // those where mask != 0. This works because any upper output lanes need not
+ // be zero.
+ return prev | AndNot(mask, V4x32U(bytes4));
+}
+
+// Shifts "suffix" left by "prefix_len" = 0..15 bytes, clears upper bytes of
+// "prefix", and returns the merged/concatenated bytes.
+HH_INLINE V4x32U Concatenate(const V4x32U& prefix, const size_t prefix_len,
+ const V4x32U& suffix) {
+ static const uint64_t table[V16x8U::N][V2x64U::N] = {
+ {0x0706050403020100ull, 0x0F0E0D0C0B0A0908ull},
+ {0x06050403020100FFull, 0x0E0D0C0B0A090807ull},
+ {0x050403020100FFFFull, 0x0D0C0B0A09080706ull},
+ {0x0403020100FFFFFFull, 0x0C0B0A0908070605ull},
+ {0x03020100FFFFFFFFull, 0x0B0A090807060504ull},
+ {0x020100FFFFFFFFFFull, 0x0A09080706050403ull},
+ {0x0100FFFFFFFFFFFFull, 0x0908070605040302ull},
+ {0x00FFFFFFFFFFFFFFull, 0x0807060504030201ull},
+ {0xFFFFFFFFFFFFFFFFull, 0x0706050403020100ull},
+ {0xFFFFFFFFFFFFFFFFull, 0x06050403020100FFull},
+ {0xFFFFFFFFFFFFFFFFull, 0x050403020100FFFFull},
+ {0xFFFFFFFFFFFFFFFFull, 0x0403020100FFFFFFull},
+ {0xFFFFFFFFFFFFFFFFull, 0x03020100FFFFFFFFull},
+ {0xFFFFFFFFFFFFFFFFull, 0x020100FFFFFFFFFFull},
+ {0xFFFFFFFFFFFFFFFFull, 0x0100FFFFFFFFFFFFull},
+ {0xFFFFFFFFFFFFFFFFull, 0x00FFFFFFFFFFFFFFull}};
+ const V2x64U control = Load<V2x64U>(&table[prefix_len][0]);
+ const V2x64U shifted_suffix(_mm_shuffle_epi8(suffix, control));
+ return V4x32U(_mm_blendv_epi8(shifted_suffix, prefix, control));
+}
+
+} // namespace HH_TARGET_NAME
+} // namespace highwayhash
+
+#endif // HH_DISABLE_TARGET_SPECIFIC
+#endif // HIGHWAYHASH_HH_BUFFER_H_
diff --git a/contrib/libs/highwayhash/highwayhash/hh_portable.cc b/contrib/libs/highwayhash/highwayhash/hh_portable.cc
index 1c8072aebe..3e0de9ed9c 100644
--- a/contrib/libs/highwayhash/highwayhash/hh_portable.cc
+++ b/contrib/libs/highwayhash/highwayhash/hh_portable.cc
@@ -1,19 +1,19 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// WARNING: this is a "restricted" source file; avoid including any headers
-// unless they are also restricted. See arch_specific.h for details.
-
-#define HH_TARGET_NAME Portable
-#include "highwayhash/highwayhash_target.cc"
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// WARNING: this is a "restricted" source file; avoid including any headers
+// unless they are also restricted. See arch_specific.h for details.
+
+#define HH_TARGET_NAME Portable
+#include "highwayhash/highwayhash_target.cc"
diff --git a/contrib/libs/highwayhash/highwayhash/hh_portable.h b/contrib/libs/highwayhash/highwayhash/hh_portable.h
index 150ecdee7c..11284deae8 100644
--- a/contrib/libs/highwayhash/highwayhash/hh_portable.h
+++ b/contrib/libs/highwayhash/highwayhash/hh_portable.h
@@ -1,301 +1,301 @@
-// Copyright 2015-2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef HIGHWAYHASH_HH_PORTABLE_H_
-#define HIGHWAYHASH_HH_PORTABLE_H_
-
-// WARNING: this is a "restricted" header because it is included from
-// translation units compiled with different flags. This header and its
-// dependencies must not define any function unless it is static inline and/or
-// within namespace HH_TARGET_NAME. See arch_specific.h for details.
-
-#include "highwayhash/arch_specific.h"
-#include "highwayhash/compiler_specific.h"
-#include "highwayhash/endianess.h"
-#include "highwayhash/hh_types.h"
-#include "highwayhash/load3.h"
-
-namespace highwayhash {
-// See vector128.h for why this namespace is necessary; we match it here for
-// consistency. As a result, this header requires textual inclusion.
-namespace HH_TARGET_NAME {
-
-class HHStatePortable {
- public:
- static const int kNumLanes = 4;
- using Lanes = uint64_t[kNumLanes];
-
- explicit HH_INLINE HHStatePortable(const HHKey keys) { Reset(keys); }
-
- HH_INLINE void Reset(const HHKey keys) {
- static const Lanes init0 = {0xdbe6d5d5fe4cce2full, 0xa4093822299f31d0ull,
- 0x13198a2e03707344ull, 0x243f6a8885a308d3ull};
- static const Lanes init1 = {0x3bd39e10cb0ef593ull, 0xc0acf169b5f18a8cull,
- 0xbe5466cf34e90c6cull, 0x452821e638d01377ull};
- Lanes rotated_keys;
- Rotate64By32(keys, &rotated_keys);
- Copy(init0, &mul0);
- Copy(init1, &mul1);
- Xor(init0, keys, &v0);
- Xor(init1, rotated_keys, &v1);
- }
-
- HH_INLINE void Update(const HHPacket& packet) {
- Lanes packet_lanes;
- CopyPartial(&packet[0], sizeof(HHPacket),
- reinterpret_cast<char*>(&packet_lanes));
- for (int lane = 0; lane < kNumLanes; ++lane) {
- packet_lanes[lane] = host_from_le64(packet_lanes[lane]);
- }
- Update(packet_lanes);
- }
-
- HH_INLINE void UpdateRemainder(const char* bytes, const size_t size_mod32) {
- // 'Length padding' differentiates zero-valued inputs that have the same
- // size/32. mod32 is sufficient because each Update behaves as if a
- // counter were injected, because the state is large and mixed thoroughly.
- const uint64_t mod32_pair = (size_mod32 << 32) + size_mod32;
- for (int lane = 0; lane < kNumLanes; ++lane) {
- v0[lane] += mod32_pair;
- }
- Rotate32By(reinterpret_cast<uint32_t*>(&v1), size_mod32);
-
- const size_t size_mod4 = size_mod32 & 3;
- const char* remainder = bytes + (size_mod32 & ~3);
-
- HHPacket packet HH_ALIGNAS(32) = {0};
- CopyPartial(bytes, remainder - bytes, &packet[0]);
-
- if (size_mod32 & 16) { // 16..31 bytes left
- // Read the last 0..3 bytes and previous 1..4 into the upper bits.
- // Insert into the upper four bytes of packet, which are zero.
- uint32_t last4 =
- Load3()(Load3::AllowReadBeforeAndReturn(), remainder, size_mod4);
- CopyPartial(reinterpret_cast<const char*>(&last4), 4, &packet[28]);
- } else { // size_mod32 < 16
- uint64_t last4 = Load3()(Load3::AllowUnordered(), remainder, size_mod4);
-
- // Rather than insert at packet + 28, it is faster to initialize
- // the otherwise empty packet + 16 with up to 64 bits of padding.
- CopyPartial(reinterpret_cast<const char*>(&last4), sizeof(last4),
- &packet[16]);
- }
- Update(packet);
- }
-
- HH_INLINE void Finalize(HHResult64* HH_RESTRICT result) {
- PermuteAndUpdate();
- PermuteAndUpdate();
- PermuteAndUpdate();
- PermuteAndUpdate();
-
- *result = v0[0] + v1[0] + mul0[0] + mul1[0];
- }
-
- HH_INLINE void Finalize(HHResult128* HH_RESTRICT result) {
- PermuteAndUpdate();
- PermuteAndUpdate();
- PermuteAndUpdate();
- PermuteAndUpdate();
-
- (*result)[0] = v0[0] + mul0[0] + v1[2] + mul1[2];
- (*result)[1] = v0[1] + mul0[1] + v1[3] + mul1[3];
- }
-
- HH_INLINE void Finalize(HHResult256* HH_RESTRICT result) {
- PermuteAndUpdate();
- PermuteAndUpdate();
- PermuteAndUpdate();
- PermuteAndUpdate();
-
- ModularReduction(v1[1] + mul1[1], v1[0] + mul1[0], v0[1] + mul0[1],
- v0[0] + mul0[0], &(*result)[1], &(*result)[0]);
- ModularReduction(v1[3] + mul1[3], v1[2] + mul1[2], v0[3] + mul0[3],
- v0[2] + mul0[2], &(*result)[3], &(*result)[2]);
- }
-
- static HH_INLINE void ZeroInitialize(char* HH_RESTRICT buffer) {
- for (size_t i = 0; i < sizeof(HHPacket); ++i) {
- buffer[i] = 0;
- }
- }
-
- static HH_INLINE void CopyPartial(const char* HH_RESTRICT from,
- const size_t size_mod32,
- char* HH_RESTRICT buffer) {
- for (size_t i = 0; i < size_mod32; ++i) {
- buffer[i] = from[i];
- }
- }
-
- static HH_INLINE void AppendPartial(const char* HH_RESTRICT from,
- const size_t size_mod32,
- char* HH_RESTRICT buffer,
- const size_t buffer_valid) {
- for (size_t i = 0; i < size_mod32; ++i) {
- buffer[buffer_valid + i] = from[i];
- }
- }
-
- HH_INLINE void AppendAndUpdate(const char* HH_RESTRICT from,
- const size_t size_mod32,
- const char* HH_RESTRICT buffer,
- const size_t buffer_valid) {
- HHPacket tmp HH_ALIGNAS(32);
- for (size_t i = 0; i < buffer_valid; ++i) {
- tmp[i] = buffer[i];
- }
- for (size_t i = 0; i < size_mod32; ++i) {
- tmp[buffer_valid + i] = from[i];
- }
- Update(tmp);
- }
-
- private:
- static HH_INLINE void Copy(const Lanes& source, Lanes* HH_RESTRICT dest) {
- for (int lane = 0; lane < kNumLanes; ++lane) {
- (*dest)[lane] = source[lane];
- }
- }
-
- static HH_INLINE void Add(const Lanes& source, Lanes* HH_RESTRICT dest) {
- for (int lane = 0; lane < kNumLanes; ++lane) {
- (*dest)[lane] += source[lane];
- }
- }
-
- template <typename LanesOrPointer>
- static HH_INLINE void Xor(const Lanes& op1, const LanesOrPointer& op2,
- Lanes* HH_RESTRICT dest) {
- for (int lane = 0; lane < kNumLanes; ++lane) {
- (*dest)[lane] = op1[lane] ^ op2[lane];
- }
- }
-
-// Clears all bits except one byte at the given offset.
-#define MASK(v, bytes) ((v) & (0xFFull << ((bytes)*8)))
-
- // 16-byte permutation; shifting is about 10% faster than byte loads.
- // Adds zipper-merge result to add*.
- static HH_INLINE void ZipperMergeAndAdd(const uint64_t v1, const uint64_t v0,
- uint64_t* HH_RESTRICT add1,
- uint64_t* HH_RESTRICT add0) {
- *add0 += ((MASK(v0, 3) + MASK(v1, 4)) >> 24) +
- ((MASK(v0, 5) + MASK(v1, 6)) >> 16) + MASK(v0, 2) +
- (MASK(v0, 1) << 32) + (MASK(v1, 7) >> 8) + (v0 << 56);
-
- *add1 += ((MASK(v1, 3) + MASK(v0, 4)) >> 24) + MASK(v1, 2) +
- (MASK(v1, 5) >> 16) + (MASK(v1, 1) << 24) + (MASK(v0, 6) >> 8) +
- (MASK(v1, 0) << 48) + MASK(v0, 7);
- }
-
-#undef MASK
-
- // For inputs that are already in native byte order (e.g. PermuteAndAdd)
- HH_INLINE void Update(const Lanes& packet_lanes) {
- Add(packet_lanes, &v1);
- Add(mul0, &v1);
-
- // (Loop is faster than unrolling)
- for (int lane = 0; lane < kNumLanes; ++lane) {
- const uint32_t v1_32 = static_cast<uint32_t>(v1[lane]);
- mul0[lane] ^= v1_32 * (v0[lane] >> 32);
- v0[lane] += mul1[lane];
- const uint32_t v0_32 = static_cast<uint32_t>(v0[lane]);
- mul1[lane] ^= v0_32 * (v1[lane] >> 32);
- }
-
- ZipperMergeAndAdd(v1[1], v1[0], &v0[1], &v0[0]);
- ZipperMergeAndAdd(v1[3], v1[2], &v0[3], &v0[2]);
-
- ZipperMergeAndAdd(v0[1], v0[0], &v1[1], &v1[0]);
- ZipperMergeAndAdd(v0[3], v0[2], &v1[3], &v1[2]);
- }
-
- static HH_INLINE uint64_t Rotate64By32(const uint64_t x) {
- return (x >> 32) | (x << 32);
- }
-
- template <typename LanesOrPointer>
- static HH_INLINE void Rotate64By32(const LanesOrPointer& v,
- Lanes* HH_RESTRICT rotated) {
- for (int i = 0; i < kNumLanes; ++i) {
- (*rotated)[i] = Rotate64By32(v[i]);
- }
- }
-
- static HH_INLINE void Rotate32By(uint32_t* halves, const uint64_t count) {
- for (int i = 0; i < 2 * kNumLanes; ++i) {
- const uint32_t x = halves[i];
- halves[i] = (x << count) | (x >> (32 - count));
- }
- }
-
- static HH_INLINE void Permute(const Lanes& v, Lanes* HH_RESTRICT permuted) {
- (*permuted)[0] = Rotate64By32(v[2]);
- (*permuted)[1] = Rotate64By32(v[3]);
- (*permuted)[2] = Rotate64By32(v[0]);
- (*permuted)[3] = Rotate64By32(v[1]);
- }
-
- HH_INLINE void PermuteAndUpdate() {
- Lanes permuted;
- Permute(v0, &permuted);
- Update(permuted);
- }
-
- // Computes a << kBits for 128-bit a = (a1, a0).
- // Bit shifts are only possible on independent 64-bit lanes. We therefore
- // insert the upper bits of a0 that were lost into a1. This is slightly
- // shorter than Lemire's (a << 1) | (((a >> 8) << 1) << 8) approach.
- template <int kBits>
- static HH_INLINE void Shift128Left(uint64_t* HH_RESTRICT a1,
- uint64_t* HH_RESTRICT a0) {
- const uint64_t shifted1 = (*a1) << kBits;
- const uint64_t top_bits = (*a0) >> (64 - kBits);
- *a0 <<= kBits;
- *a1 = shifted1 | top_bits;
- }
-
- // Modular reduction by the irreducible polynomial (x^128 + x^2 + x).
- // Input: a 256-bit number a3210.
- static HH_INLINE void ModularReduction(const uint64_t a3_unmasked,
- const uint64_t a2, const uint64_t a1,
- const uint64_t a0,
- uint64_t* HH_RESTRICT m1,
- uint64_t* HH_RESTRICT m0) {
- // The upper two bits must be clear, otherwise a3 << 2 would lose bits,
- // in which case we're no longer computing a reduction.
- const uint64_t a3 = a3_unmasked & 0x3FFFFFFFFFFFFFFFull;
- // See Lemire, https://arxiv.org/pdf/1503.03465v8.pdf.
- uint64_t a3_shl1 = a3;
- uint64_t a2_shl1 = a2;
- uint64_t a3_shl2 = a3;
- uint64_t a2_shl2 = a2;
- Shift128Left<1>(&a3_shl1, &a2_shl1);
- Shift128Left<2>(&a3_shl2, &a2_shl2);
- *m1 = a1 ^ a3_shl1 ^ a3_shl2;
- *m0 = a0 ^ a2_shl1 ^ a2_shl2;
- }
-
- Lanes v0;
- Lanes v1;
- Lanes mul0;
- Lanes mul1;
-};
-
-} // namespace HH_TARGET_NAME
-} // namespace highwayhash
-
-#endif // HIGHWAYHASH_HH_PORTABLE_H_
+// Copyright 2015-2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef HIGHWAYHASH_HH_PORTABLE_H_
+#define HIGHWAYHASH_HH_PORTABLE_H_
+
+// WARNING: this is a "restricted" header because it is included from
+// translation units compiled with different flags. This header and its
+// dependencies must not define any function unless it is static inline and/or
+// within namespace HH_TARGET_NAME. See arch_specific.h for details.
+
+#include "highwayhash/arch_specific.h"
+#include "highwayhash/compiler_specific.h"
+#include "highwayhash/endianess.h"
+#include "highwayhash/hh_types.h"
+#include "highwayhash/load3.h"
+
+namespace highwayhash {
+// See vector128.h for why this namespace is necessary; we match it here for
+// consistency. As a result, this header requires textual inclusion.
+namespace HH_TARGET_NAME {
+
+class HHStatePortable {
+ public:
+ static const int kNumLanes = 4;
+ using Lanes = uint64_t[kNumLanes];
+
+ explicit HH_INLINE HHStatePortable(const HHKey keys) { Reset(keys); }
+
+ HH_INLINE void Reset(const HHKey keys) {
+ static const Lanes init0 = {0xdbe6d5d5fe4cce2full, 0xa4093822299f31d0ull,
+ 0x13198a2e03707344ull, 0x243f6a8885a308d3ull};
+ static const Lanes init1 = {0x3bd39e10cb0ef593ull, 0xc0acf169b5f18a8cull,
+ 0xbe5466cf34e90c6cull, 0x452821e638d01377ull};
+ Lanes rotated_keys;
+ Rotate64By32(keys, &rotated_keys);
+ Copy(init0, &mul0);
+ Copy(init1, &mul1);
+ Xor(init0, keys, &v0);
+ Xor(init1, rotated_keys, &v1);
+ }
+
+ HH_INLINE void Update(const HHPacket& packet) {
+ Lanes packet_lanes;
+ CopyPartial(&packet[0], sizeof(HHPacket),
+ reinterpret_cast<char*>(&packet_lanes));
+ for (int lane = 0; lane < kNumLanes; ++lane) {
+ packet_lanes[lane] = host_from_le64(packet_lanes[lane]);
+ }
+ Update(packet_lanes);
+ }
+
+ HH_INLINE void UpdateRemainder(const char* bytes, const size_t size_mod32) {
+ // 'Length padding' differentiates zero-valued inputs that have the same
+ // size/32. mod32 is sufficient because each Update behaves as if a
+ // counter were injected, because the state is large and mixed thoroughly.
+ const uint64_t mod32_pair = (size_mod32 << 32) + size_mod32;
+ for (int lane = 0; lane < kNumLanes; ++lane) {
+ v0[lane] += mod32_pair;
+ }
+ Rotate32By(reinterpret_cast<uint32_t*>(&v1), size_mod32);
+
+ const size_t size_mod4 = size_mod32 & 3;
+ const char* remainder = bytes + (size_mod32 & ~3);
+
+ HHPacket packet HH_ALIGNAS(32) = {0};
+ CopyPartial(bytes, remainder - bytes, &packet[0]);
+
+ if (size_mod32 & 16) { // 16..31 bytes left
+ // Read the last 0..3 bytes and previous 1..4 into the upper bits.
+ // Insert into the upper four bytes of packet, which are zero.
+ uint32_t last4 =
+ Load3()(Load3::AllowReadBeforeAndReturn(), remainder, size_mod4);
+ CopyPartial(reinterpret_cast<const char*>(&last4), 4, &packet[28]);
+ } else { // size_mod32 < 16
+ uint64_t last4 = Load3()(Load3::AllowUnordered(), remainder, size_mod4);
+
+ // Rather than insert at packet + 28, it is faster to initialize
+ // the otherwise empty packet + 16 with up to 64 bits of padding.
+ CopyPartial(reinterpret_cast<const char*>(&last4), sizeof(last4),
+ &packet[16]);
+ }
+ Update(packet);
+ }
+
+ HH_INLINE void Finalize(HHResult64* HH_RESTRICT result) {
+ PermuteAndUpdate();
+ PermuteAndUpdate();
+ PermuteAndUpdate();
+ PermuteAndUpdate();
+
+ *result = v0[0] + v1[0] + mul0[0] + mul1[0];
+ }
+
+ HH_INLINE void Finalize(HHResult128* HH_RESTRICT result) {
+ PermuteAndUpdate();
+ PermuteAndUpdate();
+ PermuteAndUpdate();
+ PermuteAndUpdate();
+
+ (*result)[0] = v0[0] + mul0[0] + v1[2] + mul1[2];
+ (*result)[1] = v0[1] + mul0[1] + v1[3] + mul1[3];
+ }
+
+ HH_INLINE void Finalize(HHResult256* HH_RESTRICT result) {
+ PermuteAndUpdate();
+ PermuteAndUpdate();
+ PermuteAndUpdate();
+ PermuteAndUpdate();
+
+ ModularReduction(v1[1] + mul1[1], v1[0] + mul1[0], v0[1] + mul0[1],
+ v0[0] + mul0[0], &(*result)[1], &(*result)[0]);
+ ModularReduction(v1[3] + mul1[3], v1[2] + mul1[2], v0[3] + mul0[3],
+ v0[2] + mul0[2], &(*result)[3], &(*result)[2]);
+ }
+
+ static HH_INLINE void ZeroInitialize(char* HH_RESTRICT buffer) {
+ for (size_t i = 0; i < sizeof(HHPacket); ++i) {
+ buffer[i] = 0;
+ }
+ }
+
+ static HH_INLINE void CopyPartial(const char* HH_RESTRICT from,
+ const size_t size_mod32,
+ char* HH_RESTRICT buffer) {
+ for (size_t i = 0; i < size_mod32; ++i) {
+ buffer[i] = from[i];
+ }
+ }
+
+ static HH_INLINE void AppendPartial(const char* HH_RESTRICT from,
+ const size_t size_mod32,
+ char* HH_RESTRICT buffer,
+ const size_t buffer_valid) {
+ for (size_t i = 0; i < size_mod32; ++i) {
+ buffer[buffer_valid + i] = from[i];
+ }
+ }
+
+ HH_INLINE void AppendAndUpdate(const char* HH_RESTRICT from,
+ const size_t size_mod32,
+ const char* HH_RESTRICT buffer,
+ const size_t buffer_valid) {
+ HHPacket tmp HH_ALIGNAS(32);
+ for (size_t i = 0; i < buffer_valid; ++i) {
+ tmp[i] = buffer[i];
+ }
+ for (size_t i = 0; i < size_mod32; ++i) {
+ tmp[buffer_valid + i] = from[i];
+ }
+ Update(tmp);
+ }
+
+ private:
+ static HH_INLINE void Copy(const Lanes& source, Lanes* HH_RESTRICT dest) {
+ for (int lane = 0; lane < kNumLanes; ++lane) {
+ (*dest)[lane] = source[lane];
+ }
+ }
+
+ static HH_INLINE void Add(const Lanes& source, Lanes* HH_RESTRICT dest) {
+ for (int lane = 0; lane < kNumLanes; ++lane) {
+ (*dest)[lane] += source[lane];
+ }
+ }
+
+ template <typename LanesOrPointer>
+ static HH_INLINE void Xor(const Lanes& op1, const LanesOrPointer& op2,
+ Lanes* HH_RESTRICT dest) {
+ for (int lane = 0; lane < kNumLanes; ++lane) {
+ (*dest)[lane] = op1[lane] ^ op2[lane];
+ }
+ }
+
+// Clears all bits except one byte at the given offset.
+#define MASK(v, bytes) ((v) & (0xFFull << ((bytes)*8)))
+
+ // 16-byte permutation; shifting is about 10% faster than byte loads.
+ // Adds zipper-merge result to add*.
+ static HH_INLINE void ZipperMergeAndAdd(const uint64_t v1, const uint64_t v0,
+ uint64_t* HH_RESTRICT add1,
+ uint64_t* HH_RESTRICT add0) {
+ *add0 += ((MASK(v0, 3) + MASK(v1, 4)) >> 24) +
+ ((MASK(v0, 5) + MASK(v1, 6)) >> 16) + MASK(v0, 2) +
+ (MASK(v0, 1) << 32) + (MASK(v1, 7) >> 8) + (v0 << 56);
+
+ *add1 += ((MASK(v1, 3) + MASK(v0, 4)) >> 24) + MASK(v1, 2) +
+ (MASK(v1, 5) >> 16) + (MASK(v1, 1) << 24) + (MASK(v0, 6) >> 8) +
+ (MASK(v1, 0) << 48) + MASK(v0, 7);
+ }
+
+#undef MASK
+
+ // For inputs that are already in native byte order (e.g. PermuteAndAdd)
+ HH_INLINE void Update(const Lanes& packet_lanes) {
+ Add(packet_lanes, &v1);
+ Add(mul0, &v1);
+
+ // (Loop is faster than unrolling)
+ for (int lane = 0; lane < kNumLanes; ++lane) {
+ const uint32_t v1_32 = static_cast<uint32_t>(v1[lane]);
+ mul0[lane] ^= v1_32 * (v0[lane] >> 32);
+ v0[lane] += mul1[lane];
+ const uint32_t v0_32 = static_cast<uint32_t>(v0[lane]);
+ mul1[lane] ^= v0_32 * (v1[lane] >> 32);
+ }
+
+ ZipperMergeAndAdd(v1[1], v1[0], &v0[1], &v0[0]);
+ ZipperMergeAndAdd(v1[3], v1[2], &v0[3], &v0[2]);
+
+ ZipperMergeAndAdd(v0[1], v0[0], &v1[1], &v1[0]);
+ ZipperMergeAndAdd(v0[3], v0[2], &v1[3], &v1[2]);
+ }
+
+ static HH_INLINE uint64_t Rotate64By32(const uint64_t x) {
+ return (x >> 32) | (x << 32);
+ }
+
+ template <typename LanesOrPointer>
+ static HH_INLINE void Rotate64By32(const LanesOrPointer& v,
+ Lanes* HH_RESTRICT rotated) {
+ for (int i = 0; i < kNumLanes; ++i) {
+ (*rotated)[i] = Rotate64By32(v[i]);
+ }
+ }
+
+ static HH_INLINE void Rotate32By(uint32_t* halves, const uint64_t count) {
+ for (int i = 0; i < 2 * kNumLanes; ++i) {
+ const uint32_t x = halves[i];
+ halves[i] = (x << count) | (x >> (32 - count));
+ }
+ }
+
+ static HH_INLINE void Permute(const Lanes& v, Lanes* HH_RESTRICT permuted) {
+ (*permuted)[0] = Rotate64By32(v[2]);
+ (*permuted)[1] = Rotate64By32(v[3]);
+ (*permuted)[2] = Rotate64By32(v[0]);
+ (*permuted)[3] = Rotate64By32(v[1]);
+ }
+
+ HH_INLINE void PermuteAndUpdate() {
+ Lanes permuted;
+ Permute(v0, &permuted);
+ Update(permuted);
+ }
+
+ // Computes a << kBits for 128-bit a = (a1, a0).
+ // Bit shifts are only possible on independent 64-bit lanes. We therefore
+ // insert the upper bits of a0 that were lost into a1. This is slightly
+ // shorter than Lemire's (a << 1) | (((a >> 8) << 1) << 8) approach.
+ template <int kBits>
+ static HH_INLINE void Shift128Left(uint64_t* HH_RESTRICT a1,
+ uint64_t* HH_RESTRICT a0) {
+ const uint64_t shifted1 = (*a1) << kBits;
+ const uint64_t top_bits = (*a0) >> (64 - kBits);
+ *a0 <<= kBits;
+ *a1 = shifted1 | top_bits;
+ }
+
+ // Modular reduction by the irreducible polynomial (x^128 + x^2 + x).
+ // Input: a 256-bit number a3210.
+ static HH_INLINE void ModularReduction(const uint64_t a3_unmasked,
+ const uint64_t a2, const uint64_t a1,
+ const uint64_t a0,
+ uint64_t* HH_RESTRICT m1,
+ uint64_t* HH_RESTRICT m0) {
+ // The upper two bits must be clear, otherwise a3 << 2 would lose bits,
+ // in which case we're no longer computing a reduction.
+ const uint64_t a3 = a3_unmasked & 0x3FFFFFFFFFFFFFFFull;
+ // See Lemire, https://arxiv.org/pdf/1503.03465v8.pdf.
+ uint64_t a3_shl1 = a3;
+ uint64_t a2_shl1 = a2;
+ uint64_t a3_shl2 = a3;
+ uint64_t a2_shl2 = a2;
+ Shift128Left<1>(&a3_shl1, &a2_shl1);
+ Shift128Left<2>(&a3_shl2, &a2_shl2);
+ *m1 = a1 ^ a3_shl1 ^ a3_shl2;
+ *m0 = a0 ^ a2_shl1 ^ a2_shl2;
+ }
+
+ Lanes v0;
+ Lanes v1;
+ Lanes mul0;
+ Lanes mul1;
+};
+
+} // namespace HH_TARGET_NAME
+} // namespace highwayhash
+
+#endif // HIGHWAYHASH_HH_PORTABLE_H_
diff --git a/contrib/libs/highwayhash/highwayhash/hh_sse41.cc b/contrib/libs/highwayhash/highwayhash/hh_sse41.cc
index 0bf13ab4f5..9d6a0b968f 100644
--- a/contrib/libs/highwayhash/highwayhash/hh_sse41.cc
+++ b/contrib/libs/highwayhash/highwayhash/hh_sse41.cc
@@ -1,19 +1,19 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// WARNING: this is a "restricted" source file; avoid including any headers
-// unless they are also restricted. See arch_specific.h for details.
-
-#define HH_TARGET_NAME SSE41
-#include "highwayhash/highwayhash_target.cc"
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// WARNING: this is a "restricted" source file; avoid including any headers
+// unless they are also restricted. See arch_specific.h for details.
+
+#define HH_TARGET_NAME SSE41
+#include "highwayhash/highwayhash_target.cc"
diff --git a/contrib/libs/highwayhash/highwayhash/hh_sse41.h b/contrib/libs/highwayhash/highwayhash/hh_sse41.h
index c4d56697e2..a2a86da9b6 100644
--- a/contrib/libs/highwayhash/highwayhash/hh_sse41.h
+++ b/contrib/libs/highwayhash/highwayhash/hh_sse41.h
@@ -1,330 +1,330 @@
-// Copyright 2015-2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef HIGHWAYHASH_HH_SSE41_H_
-#define HIGHWAYHASH_HH_SSE41_H_
-
-// WARNING: this is a "restricted" header because it is included from
-// translation units compiled with different flags. This header and its
-// dependencies must not define any function unless it is static inline and/or
-// within namespace HH_TARGET_NAME. See arch_specific.h for details.
-
-#include "highwayhash/arch_specific.h"
-#include "highwayhash/compiler_specific.h"
-#include "highwayhash/hh_buffer.h"
-#include "highwayhash/hh_types.h"
-#include "highwayhash/load3.h"
-#include "highwayhash/vector128.h"
-
-// For auto-dependency generation, we need to include all headers but not their
-// contents (otherwise compilation fails because -msse4.1 is not specified).
-#ifndef HH_DISABLE_TARGET_SPECIFIC
-
-namespace highwayhash {
-// See vector128.h for why this namespace is necessary; matching it here makes
-// it easier use the vector128 symbols, but requires textual inclusion.
-namespace HH_TARGET_NAME {
-
-// J-lanes tree hashing: see http://dx.doi.org/10.4236/jis.2014.53010
-// Uses pairs of SSE4.1 instructions to emulate the AVX-2 algorithm.
-class HHStateSSE41 {
- public:
- explicit HH_INLINE HHStateSSE41(const HHKey key) { Reset(key); }
-
- HH_INLINE void Reset(const HHKey key) {
- // "Nothing up my sleeve numbers"; see HHStateTAVX2.
- const V2x64U init0L(0xa4093822299f31d0ull, 0xdbe6d5d5fe4cce2full);
- const V2x64U init0H(0x243f6a8885a308d3ull, 0x13198a2e03707344ull);
- const V2x64U init1L(0xc0acf169b5f18a8cull, 0x3bd39e10cb0ef593ull);
- const V2x64U init1H(0x452821e638d01377ull, 0xbe5466cf34e90c6cull);
- const V2x64U keyL = LoadUnaligned<V2x64U>(key + 0);
- const V2x64U keyH = LoadUnaligned<V2x64U>(key + 2);
- v0L = keyL ^ init0L;
- v0H = keyH ^ init0H;
- v1L = Rotate64By32(keyL) ^ init1L;
- v1H = Rotate64By32(keyH) ^ init1H;
- mul0L = init0L;
- mul0H = init0H;
- mul1L = init1L;
- mul1H = init1H;
- }
-
- HH_INLINE void Update(const HHPacket& packet_bytes) {
- const uint64_t* HH_RESTRICT packet =
- reinterpret_cast<const uint64_t * HH_RESTRICT>(packet_bytes);
- const V2x64U packetL = LoadUnaligned<V2x64U>(packet + 0);
- const V2x64U packetH = LoadUnaligned<V2x64U>(packet + 2);
- Update(packetH, packetL);
- }
-
- HH_INLINE void UpdateRemainder(const char* bytes, const size_t size_mod32) {
- // 'Length padding' differentiates zero-valued inputs that have the same
- // size/32. mod32 is sufficient because each Update behaves as if a
- // counter were injected, because the state is large and mixed thoroughly.
- const V4x32U vsize_mod32(static_cast<uint32_t>(size_mod32));
- // Equivalent to storing size_mod32 in packet.
- v0L += V2x64U(vsize_mod32);
- v0H += V2x64U(vsize_mod32);
- // Boosts the avalanche effect of mod32.
- Rotate32By(&v1H, &v1L, size_mod32);
-
- const size_t size_mod4 = size_mod32 & 3;
- const char* HH_RESTRICT remainder = bytes + (size_mod32 & ~3);
-
- if (HH_UNLIKELY(size_mod32 & 16)) { // 16..31 bytes left
- const V2x64U packetL =
- LoadUnaligned<V2x64U>(reinterpret_cast<const uint64_t*>(bytes));
-
- V2x64U packetH = LoadMultipleOfFour(bytes + 16, size_mod32);
-
- const uint32_t last4 =
- Load3()(Load3::AllowReadBeforeAndReturn(), remainder, size_mod4);
-
- // The upper four bytes of packetH are zero, so insert there.
- packetH = V2x64U(_mm_insert_epi32(packetH, last4, 3));
- Update(packetH, packetL);
- } else { // size_mod32 < 16
- const V2x64U packetL = LoadMultipleOfFour(bytes, size_mod32);
-
- const uint64_t last4 =
- Load3()(Load3::AllowUnordered(), remainder, size_mod4);
-
- // Rather than insert into packetL[3], it is faster to initialize
- // the otherwise empty packetH.
- const V2x64U packetH(_mm_cvtsi64_si128(last4));
- Update(packetH, packetL);
- }
- }
-
- HH_INLINE void Finalize(HHResult64* HH_RESTRICT result) {
- // Mix together all lanes.
- PermuteAndUpdate();
- PermuteAndUpdate();
- PermuteAndUpdate();
- PermuteAndUpdate();
-
- const V2x64U sum0 = v0L + mul0L;
- const V2x64U sum1 = v1L + mul1L;
- const V2x64U hash = sum0 + sum1;
- _mm_storel_epi64(reinterpret_cast<__m128i*>(result), hash);
- }
-
- HH_INLINE void Finalize(HHResult128* HH_RESTRICT result) {
- PermuteAndUpdate();
- PermuteAndUpdate();
- PermuteAndUpdate();
- PermuteAndUpdate();
-
- const V2x64U sum0 = v0L + mul0L;
- const V2x64U sum1 = v1H + mul1H;
- const V2x64U hash = sum0 + sum1;
- StoreUnaligned(hash, &(*result)[0]);
- }
-
- HH_INLINE void Finalize(HHResult256* HH_RESTRICT result) {
- PermuteAndUpdate();
- PermuteAndUpdate();
- PermuteAndUpdate();
- PermuteAndUpdate();
-
- const V2x64U sum0L = v0L + mul0L;
- const V2x64U sum1L = v1L + mul1L;
- const V2x64U sum0H = v0H + mul0H;
- const V2x64U sum1H = v1H + mul1H;
- const V2x64U hashL = ModularReduction(sum1L, sum0L);
- const V2x64U hashH = ModularReduction(sum1H, sum0H);
- StoreUnaligned(hashL, &(*result)[0]);
- StoreUnaligned(hashH, &(*result)[2]);
- }
-
- static HH_INLINE void ZeroInitialize(char* HH_RESTRICT buffer_bytes) {
- __m128i* buffer = reinterpret_cast<__m128i*>(buffer_bytes);
- const __m128i zero = _mm_setzero_si128();
- _mm_store_si128(buffer + 0, zero);
- _mm_store_si128(buffer + 1, zero);
- }
-
- static HH_INLINE void CopyPartial(const char* HH_RESTRICT from,
- const size_t size_mod32,
- char* HH_RESTRICT buffer) {
- for (size_t i = 0; i < size_mod32; ++i) {
- buffer[i] = from[i];
- }
- }
-
- static HH_INLINE void AppendPartial(const char* HH_RESTRICT from,
- const size_t size_mod32,
- char* HH_RESTRICT buffer,
- const size_t buffer_valid) {
- for (size_t i = 0; i < size_mod32; ++i) {
- buffer[buffer_valid + i] = from[i];
- }
- }
-
- HH_INLINE void AppendAndUpdate(const char* HH_RESTRICT from,
- const size_t size_mod32,
- const char* HH_RESTRICT buffer,
- const size_t buffer_valid) {
- HHPacket tmp HH_ALIGNAS(32);
- for (size_t i = 0; i < buffer_valid; ++i) {
- tmp[i] = buffer[i];
- }
- for (size_t i = 0; i < size_mod32; ++i) {
- tmp[buffer_valid + i] = from[i];
- }
- Update(tmp);
- }
-
- private:
- // Swap 32-bit halves of each lane (caller swaps 128-bit halves)
- static HH_INLINE V2x64U Rotate64By32(const V2x64U& v) {
- return V2x64U(_mm_shuffle_epi32(v, _MM_SHUFFLE(2, 3, 0, 1)));
- }
-
- // Rotates 32-bit lanes by "count" bits.
- static HH_INLINE void Rotate32By(V2x64U* HH_RESTRICT vH,
- V2x64U* HH_RESTRICT vL,
- const uint64_t count) {
- // WARNING: the shift count is 64 bits, so we can't reuse vsize_mod32,
- // which is broadcast into 32-bit lanes.
- const __m128i count_left = _mm_cvtsi64_si128(count);
- const __m128i count_right = _mm_cvtsi64_si128(32 - count);
- const V2x64U shifted_leftL(_mm_sll_epi32(*vL, count_left));
- const V2x64U shifted_leftH(_mm_sll_epi32(*vH, count_left));
- const V2x64U shifted_rightL(_mm_srl_epi32(*vL, count_right));
- const V2x64U shifted_rightH(_mm_srl_epi32(*vH, count_right));
- *vL = shifted_leftL | shifted_rightL;
- *vH = shifted_leftH | shifted_rightH;
- }
-
- static HH_INLINE V2x64U ZipperMerge(const V2x64U& v) {
- // Multiplication mixes/scrambles bytes 0-7 of the 64-bit result to
- // varying degrees. In descending order of goodness, bytes
- // 3 4 2 5 1 6 0 7 have quality 228 224 164 160 100 96 36 32.
- // As expected, the upper and lower bytes are much worse.
- // For each 64-bit lane, our objectives are:
- // 1) maximizing and equalizing total goodness across each lane's bytes;
- // 2) mixing with bytes from the neighboring lane;
- // 3) placing the worst bytes in the upper 32 bits because those will not
- // be used in the next 32x32 multiplication.
- const uint64_t hi = 0x070806090D0A040Bull;
- const uint64_t lo = 0x000F010E05020C03ull;
- return V2x64U(_mm_shuffle_epi8(v, V2x64U(hi, lo)));
- }
-
- HH_INLINE void Update(const V2x64U& packetH, const V2x64U& packetL) {
- v1L += packetL;
- v1H += packetH;
- v1L += mul0L;
- v1H += mul0H;
- mul0L ^= V2x64U(_mm_mul_epu32(v1L, Rotate64By32(v0L)));
- mul0H ^= V2x64U(_mm_mul_epu32(v1H, v0H >> 32));
- v0L += mul1L;
- v0H += mul1H;
- mul1L ^= V2x64U(_mm_mul_epu32(v0L, Rotate64By32(v1L)));
- mul1H ^= V2x64U(_mm_mul_epu32(v0H, v1H >> 32));
- v0L += ZipperMerge(v1L);
- v0H += ZipperMerge(v1H);
- v1L += ZipperMerge(v0L);
- v1H += ZipperMerge(v0H);
- }
-
- HH_INLINE void PermuteAndUpdate() {
- // It is slightly better to permute v0 than v1; it will be added to v1.
- // AVX-2 Permute also swaps 128-bit halves, so swap input operands.
- Update(Rotate64By32(v0L), Rotate64By32(v0H));
- }
-
- // Returns zero-initialized vector with the lower "size" = 0, 4, 8 or 12
- // bytes loaded from "bytes". Serves as a replacement for AVX2 maskload_epi32.
- static HH_INLINE V2x64U LoadMultipleOfFour(const char* bytes,
- const size_t size) {
- const uint32_t* words = reinterpret_cast<const uint32_t*>(bytes);
- // Mask of 1-bits where the final 4 bytes should be inserted (replacement
- // for variable shift/insert using broadcast+blend).
- V2x64U mask4(_mm_cvtsi64_si128(0xFFFFFFFFULL)); // 'insert' into lane 0
- V2x64U ret(0);
- if (size & 8) {
- ret = V2x64U(_mm_loadl_epi64(reinterpret_cast<const __m128i*>(words)));
- // mask4 = 0 ~0 0 0 ('insert' into lane 2)
- mask4 = V2x64U(_mm_slli_si128(mask4, 8));
- words += 2;
- }
- // Final 4 (possibly after the 8 above); 'insert' into lane 0 or 2 of ret.
- if (size & 4) {
- const __m128i word2 = _mm_cvtsi32_si128(words[0]);
- // = 0 word2 0 word2; mask4 will select which lane to keep.
- const V2x64U broadcast(_mm_shuffle_epi32(word2, 0x00));
- // (slightly faster than blendv_epi8)
- ret |= V2x64U(broadcast & mask4);
- }
- return ret;
- }
-
- // XORs x << 1 and x << 2 into *out after clearing the upper two bits of x.
- // Bit shifts are only possible on independent 64-bit lanes. We therefore
- // insert the upper bits of x[0] that were lost into x[1].
- // Thanks to D. Lemire for helpful comments!
- static HH_INLINE void XorByShift128Left12(const V2x64U& x,
- V2x64U* HH_RESTRICT out) {
- const V2x64U zero(_mm_setzero_si128());
- const V2x64U sign_bit128(_mm_insert_epi32(zero, 0x80000000u, 3));
- const V2x64U top_bits2 = x >> (64 - 2);
- HH_COMPILER_FENCE;
- const V2x64U shifted1_unmasked = x + x; // (avoids needing port0)
-
- // Only the lower half of top_bits1 will be used, so we
- // can compute it before clearing the upper two bits of x.
- const V2x64U top_bits1 = x >> (64 - 1);
- const V2x64U shifted2 = shifted1_unmasked + shifted1_unmasked;
- HH_COMPILER_FENCE;
-
- const V2x64U new_low_bits2(_mm_slli_si128(top_bits2, 8));
- *out ^= shifted2;
- // The result must be as if the upper two bits of the input had been clear,
- // otherwise we're no longer computing a reduction.
- const V2x64U shifted1 = AndNot(sign_bit128, shifted1_unmasked);
- HH_COMPILER_FENCE;
-
- const V2x64U new_low_bits1(_mm_slli_si128(top_bits1, 8));
- *out ^= new_low_bits2;
- *out ^= shifted1;
- *out ^= new_low_bits1;
- }
-
- // Modular reduction by the irreducible polynomial (x^128 + x^2 + x).
- // Input: a 256-bit number a3210.
- static HH_INLINE V2x64U ModularReduction(const V2x64U& a32_unmasked,
- const V2x64U& a10) {
- // See Lemire, https://arxiv.org/pdf/1503.03465v8.pdf.
- V2x64U out = a10;
- XorByShift128Left12(a32_unmasked, &out);
- return out;
- }
-
- V2x64U v0L;
- V2x64U v0H;
- V2x64U v1L;
- V2x64U v1H;
- V2x64U mul0L;
- V2x64U mul0H;
- V2x64U mul1L;
- V2x64U mul1H;
-};
-
-} // namespace HH_TARGET_NAME
-} // namespace highwayhash
-
-#endif // HH_DISABLE_TARGET_SPECIFIC
-#endif // HIGHWAYHASH_HH_SSE41_H_
+// Copyright 2015-2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef HIGHWAYHASH_HH_SSE41_H_
+#define HIGHWAYHASH_HH_SSE41_H_
+
+// WARNING: this is a "restricted" header because it is included from
+// translation units compiled with different flags. This header and its
+// dependencies must not define any function unless it is static inline and/or
+// within namespace HH_TARGET_NAME. See arch_specific.h for details.
+
+#include "highwayhash/arch_specific.h"
+#include "highwayhash/compiler_specific.h"
+#include "highwayhash/hh_buffer.h"
+#include "highwayhash/hh_types.h"
+#include "highwayhash/load3.h"
+#include "highwayhash/vector128.h"
+
+// For auto-dependency generation, we need to include all headers but not their
+// contents (otherwise compilation fails because -msse4.1 is not specified).
+#ifndef HH_DISABLE_TARGET_SPECIFIC
+
+namespace highwayhash {
+// See vector128.h for why this namespace is necessary; matching it here makes
+// it easier use the vector128 symbols, but requires textual inclusion.
+namespace HH_TARGET_NAME {
+
+// J-lanes tree hashing: see http://dx.doi.org/10.4236/jis.2014.53010
+// Uses pairs of SSE4.1 instructions to emulate the AVX-2 algorithm.
+class HHStateSSE41 {
+ public:
+ explicit HH_INLINE HHStateSSE41(const HHKey key) { Reset(key); }
+
+ HH_INLINE void Reset(const HHKey key) {
+ // "Nothing up my sleeve numbers"; see HHStateTAVX2.
+ const V2x64U init0L(0xa4093822299f31d0ull, 0xdbe6d5d5fe4cce2full);
+ const V2x64U init0H(0x243f6a8885a308d3ull, 0x13198a2e03707344ull);
+ const V2x64U init1L(0xc0acf169b5f18a8cull, 0x3bd39e10cb0ef593ull);
+ const V2x64U init1H(0x452821e638d01377ull, 0xbe5466cf34e90c6cull);
+ const V2x64U keyL = LoadUnaligned<V2x64U>(key + 0);
+ const V2x64U keyH = LoadUnaligned<V2x64U>(key + 2);
+ v0L = keyL ^ init0L;
+ v0H = keyH ^ init0H;
+ v1L = Rotate64By32(keyL) ^ init1L;
+ v1H = Rotate64By32(keyH) ^ init1H;
+ mul0L = init0L;
+ mul0H = init0H;
+ mul1L = init1L;
+ mul1H = init1H;
+ }
+
+ HH_INLINE void Update(const HHPacket& packet_bytes) {
+ const uint64_t* HH_RESTRICT packet =
+ reinterpret_cast<const uint64_t * HH_RESTRICT>(packet_bytes);
+ const V2x64U packetL = LoadUnaligned<V2x64U>(packet + 0);
+ const V2x64U packetH = LoadUnaligned<V2x64U>(packet + 2);
+ Update(packetH, packetL);
+ }
+
+ HH_INLINE void UpdateRemainder(const char* bytes, const size_t size_mod32) {
+ // 'Length padding' differentiates zero-valued inputs that have the same
+ // size/32. mod32 is sufficient because each Update behaves as if a
+ // counter were injected, because the state is large and mixed thoroughly.
+ const V4x32U vsize_mod32(static_cast<uint32_t>(size_mod32));
+ // Equivalent to storing size_mod32 in packet.
+ v0L += V2x64U(vsize_mod32);
+ v0H += V2x64U(vsize_mod32);
+ // Boosts the avalanche effect of mod32.
+ Rotate32By(&v1H, &v1L, size_mod32);
+
+ const size_t size_mod4 = size_mod32 & 3;
+ const char* HH_RESTRICT remainder = bytes + (size_mod32 & ~3);
+
+ if (HH_UNLIKELY(size_mod32 & 16)) { // 16..31 bytes left
+ const V2x64U packetL =
+ LoadUnaligned<V2x64U>(reinterpret_cast<const uint64_t*>(bytes));
+
+ V2x64U packetH = LoadMultipleOfFour(bytes + 16, size_mod32);
+
+ const uint32_t last4 =
+ Load3()(Load3::AllowReadBeforeAndReturn(), remainder, size_mod4);
+
+ // The upper four bytes of packetH are zero, so insert there.
+ packetH = V2x64U(_mm_insert_epi32(packetH, last4, 3));
+ Update(packetH, packetL);
+ } else { // size_mod32 < 16
+ const V2x64U packetL = LoadMultipleOfFour(bytes, size_mod32);
+
+ const uint64_t last4 =
+ Load3()(Load3::AllowUnordered(), remainder, size_mod4);
+
+ // Rather than insert into packetL[3], it is faster to initialize
+ // the otherwise empty packetH.
+ const V2x64U packetH(_mm_cvtsi64_si128(last4));
+ Update(packetH, packetL);
+ }
+ }
+
+ HH_INLINE void Finalize(HHResult64* HH_RESTRICT result) {
+ // Mix together all lanes.
+ PermuteAndUpdate();
+ PermuteAndUpdate();
+ PermuteAndUpdate();
+ PermuteAndUpdate();
+
+ const V2x64U sum0 = v0L + mul0L;
+ const V2x64U sum1 = v1L + mul1L;
+ const V2x64U hash = sum0 + sum1;
+ _mm_storel_epi64(reinterpret_cast<__m128i*>(result), hash);
+ }
+
+ HH_INLINE void Finalize(HHResult128* HH_RESTRICT result) {
+ PermuteAndUpdate();
+ PermuteAndUpdate();
+ PermuteAndUpdate();
+ PermuteAndUpdate();
+
+ const V2x64U sum0 = v0L + mul0L;
+ const V2x64U sum1 = v1H + mul1H;
+ const V2x64U hash = sum0 + sum1;
+ StoreUnaligned(hash, &(*result)[0]);
+ }
+
+ HH_INLINE void Finalize(HHResult256* HH_RESTRICT result) {
+ PermuteAndUpdate();
+ PermuteAndUpdate();
+ PermuteAndUpdate();
+ PermuteAndUpdate();
+
+ const V2x64U sum0L = v0L + mul0L;
+ const V2x64U sum1L = v1L + mul1L;
+ const V2x64U sum0H = v0H + mul0H;
+ const V2x64U sum1H = v1H + mul1H;
+ const V2x64U hashL = ModularReduction(sum1L, sum0L);
+ const V2x64U hashH = ModularReduction(sum1H, sum0H);
+ StoreUnaligned(hashL, &(*result)[0]);
+ StoreUnaligned(hashH, &(*result)[2]);
+ }
+
+ static HH_INLINE void ZeroInitialize(char* HH_RESTRICT buffer_bytes) {
+ __m128i* buffer = reinterpret_cast<__m128i*>(buffer_bytes);
+ const __m128i zero = _mm_setzero_si128();
+ _mm_store_si128(buffer + 0, zero);
+ _mm_store_si128(buffer + 1, zero);
+ }
+
+ static HH_INLINE void CopyPartial(const char* HH_RESTRICT from,
+ const size_t size_mod32,
+ char* HH_RESTRICT buffer) {
+ for (size_t i = 0; i < size_mod32; ++i) {
+ buffer[i] = from[i];
+ }
+ }
+
+ static HH_INLINE void AppendPartial(const char* HH_RESTRICT from,
+ const size_t size_mod32,
+ char* HH_RESTRICT buffer,
+ const size_t buffer_valid) {
+ for (size_t i = 0; i < size_mod32; ++i) {
+ buffer[buffer_valid + i] = from[i];
+ }
+ }
+
+ HH_INLINE void AppendAndUpdate(const char* HH_RESTRICT from,
+ const size_t size_mod32,
+ const char* HH_RESTRICT buffer,
+ const size_t buffer_valid) {
+ HHPacket tmp HH_ALIGNAS(32);
+ for (size_t i = 0; i < buffer_valid; ++i) {
+ tmp[i] = buffer[i];
+ }
+ for (size_t i = 0; i < size_mod32; ++i) {
+ tmp[buffer_valid + i] = from[i];
+ }
+ Update(tmp);
+ }
+
+ private:
+ // Swap 32-bit halves of each lane (caller swaps 128-bit halves)
+ static HH_INLINE V2x64U Rotate64By32(const V2x64U& v) {
+ return V2x64U(_mm_shuffle_epi32(v, _MM_SHUFFLE(2, 3, 0, 1)));
+ }
+
+ // Rotates 32-bit lanes by "count" bits.
+ static HH_INLINE void Rotate32By(V2x64U* HH_RESTRICT vH,
+ V2x64U* HH_RESTRICT vL,
+ const uint64_t count) {
+ // WARNING: the shift count is 64 bits, so we can't reuse vsize_mod32,
+ // which is broadcast into 32-bit lanes.
+ const __m128i count_left = _mm_cvtsi64_si128(count);
+ const __m128i count_right = _mm_cvtsi64_si128(32 - count);
+ const V2x64U shifted_leftL(_mm_sll_epi32(*vL, count_left));
+ const V2x64U shifted_leftH(_mm_sll_epi32(*vH, count_left));
+ const V2x64U shifted_rightL(_mm_srl_epi32(*vL, count_right));
+ const V2x64U shifted_rightH(_mm_srl_epi32(*vH, count_right));
+ *vL = shifted_leftL | shifted_rightL;
+ *vH = shifted_leftH | shifted_rightH;
+ }
+
+ static HH_INLINE V2x64U ZipperMerge(const V2x64U& v) {
+ // Multiplication mixes/scrambles bytes 0-7 of the 64-bit result to
+ // varying degrees. In descending order of goodness, bytes
+ // 3 4 2 5 1 6 0 7 have quality 228 224 164 160 100 96 36 32.
+ // As expected, the upper and lower bytes are much worse.
+ // For each 64-bit lane, our objectives are:
+ // 1) maximizing and equalizing total goodness across each lane's bytes;
+ // 2) mixing with bytes from the neighboring lane;
+ // 3) placing the worst bytes in the upper 32 bits because those will not
+ // be used in the next 32x32 multiplication.
+ const uint64_t hi = 0x070806090D0A040Bull;
+ const uint64_t lo = 0x000F010E05020C03ull;
+ return V2x64U(_mm_shuffle_epi8(v, V2x64U(hi, lo)));
+ }
+
+ HH_INLINE void Update(const V2x64U& packetH, const V2x64U& packetL) {
+ v1L += packetL;
+ v1H += packetH;
+ v1L += mul0L;
+ v1H += mul0H;
+ mul0L ^= V2x64U(_mm_mul_epu32(v1L, Rotate64By32(v0L)));
+ mul0H ^= V2x64U(_mm_mul_epu32(v1H, v0H >> 32));
+ v0L += mul1L;
+ v0H += mul1H;
+ mul1L ^= V2x64U(_mm_mul_epu32(v0L, Rotate64By32(v1L)));
+ mul1H ^= V2x64U(_mm_mul_epu32(v0H, v1H >> 32));
+ v0L += ZipperMerge(v1L);
+ v0H += ZipperMerge(v1H);
+ v1L += ZipperMerge(v0L);
+ v1H += ZipperMerge(v0H);
+ }
+
+ HH_INLINE void PermuteAndUpdate() {
+ // It is slightly better to permute v0 than v1; it will be added to v1.
+ // AVX-2 Permute also swaps 128-bit halves, so swap input operands.
+ Update(Rotate64By32(v0L), Rotate64By32(v0H));
+ }
+
+ // Returns zero-initialized vector with the lower "size" = 0, 4, 8 or 12
+ // bytes loaded from "bytes". Serves as a replacement for AVX2 maskload_epi32.
+ static HH_INLINE V2x64U LoadMultipleOfFour(const char* bytes,
+ const size_t size) {
+ const uint32_t* words = reinterpret_cast<const uint32_t*>(bytes);
+ // Mask of 1-bits where the final 4 bytes should be inserted (replacement
+ // for variable shift/insert using broadcast+blend).
+ V2x64U mask4(_mm_cvtsi64_si128(0xFFFFFFFFULL)); // 'insert' into lane 0
+ V2x64U ret(0);
+ if (size & 8) {
+ ret = V2x64U(_mm_loadl_epi64(reinterpret_cast<const __m128i*>(words)));
+ // mask4 = 0 ~0 0 0 ('insert' into lane 2)
+ mask4 = V2x64U(_mm_slli_si128(mask4, 8));
+ words += 2;
+ }
+ // Final 4 (possibly after the 8 above); 'insert' into lane 0 or 2 of ret.
+ if (size & 4) {
+ const __m128i word2 = _mm_cvtsi32_si128(words[0]);
+ // = 0 word2 0 word2; mask4 will select which lane to keep.
+ const V2x64U broadcast(_mm_shuffle_epi32(word2, 0x00));
+ // (slightly faster than blendv_epi8)
+ ret |= V2x64U(broadcast & mask4);
+ }
+ return ret;
+ }
+
+ // XORs x << 1 and x << 2 into *out after clearing the upper two bits of x.
+ // Bit shifts are only possible on independent 64-bit lanes. We therefore
+ // insert the upper bits of x[0] that were lost into x[1].
+ // Thanks to D. Lemire for helpful comments!
+ static HH_INLINE void XorByShift128Left12(const V2x64U& x,
+ V2x64U* HH_RESTRICT out) {
+ const V2x64U zero(_mm_setzero_si128());
+ const V2x64U sign_bit128(_mm_insert_epi32(zero, 0x80000000u, 3));
+ const V2x64U top_bits2 = x >> (64 - 2);
+ HH_COMPILER_FENCE;
+ const V2x64U shifted1_unmasked = x + x; // (avoids needing port0)
+
+ // Only the lower half of top_bits1 will be used, so we
+ // can compute it before clearing the upper two bits of x.
+ const V2x64U top_bits1 = x >> (64 - 1);
+ const V2x64U shifted2 = shifted1_unmasked + shifted1_unmasked;
+ HH_COMPILER_FENCE;
+
+ const V2x64U new_low_bits2(_mm_slli_si128(top_bits2, 8));
+ *out ^= shifted2;
+ // The result must be as if the upper two bits of the input had been clear,
+ // otherwise we're no longer computing a reduction.
+ const V2x64U shifted1 = AndNot(sign_bit128, shifted1_unmasked);
+ HH_COMPILER_FENCE;
+
+ const V2x64U new_low_bits1(_mm_slli_si128(top_bits1, 8));
+ *out ^= new_low_bits2;
+ *out ^= shifted1;
+ *out ^= new_low_bits1;
+ }
+
+ // Modular reduction by the irreducible polynomial (x^128 + x^2 + x).
+ // Input: a 256-bit number a3210.
+ static HH_INLINE V2x64U ModularReduction(const V2x64U& a32_unmasked,
+ const V2x64U& a10) {
+ // See Lemire, https://arxiv.org/pdf/1503.03465v8.pdf.
+ V2x64U out = a10;
+ XorByShift128Left12(a32_unmasked, &out);
+ return out;
+ }
+
+ V2x64U v0L;
+ V2x64U v0H;
+ V2x64U v1L;
+ V2x64U v1H;
+ V2x64U mul0L;
+ V2x64U mul0H;
+ V2x64U mul1L;
+ V2x64U mul1H;
+};
+
+} // namespace HH_TARGET_NAME
+} // namespace highwayhash
+
+#endif // HH_DISABLE_TARGET_SPECIFIC
+#endif // HIGHWAYHASH_HH_SSE41_H_
diff --git a/contrib/libs/highwayhash/highwayhash/hh_types.h b/contrib/libs/highwayhash/highwayhash/hh_types.h
index e5b0430f17..f350d70f65 100644
--- a/contrib/libs/highwayhash/highwayhash/hh_types.h
+++ b/contrib/libs/highwayhash/highwayhash/hh_types.h
@@ -1,50 +1,50 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef HIGHWAYHASH_HH_TYPES_H_
-#define HIGHWAYHASH_HH_TYPES_H_
-
-// WARNING: included from c_bindings => must be C-compatible.
-// WARNING: this is a "restricted" header because it is included from
-// translation units compiled with different flags. This header and its
-// dependencies must not define any function unless it is static inline and/or
-// within namespace HH_TARGET_NAME. See arch_specific.h for details.
-
-#include <stddef.h> // size_t
-#include <stdint.h>
-
-#ifdef __cplusplus
-namespace highwayhash {
-#endif
-
-// 256-bit secret key that should remain unknown to attackers.
-// We recommend initializing it to a random value.
-typedef uint64_t HHKey[4];
-
-// How much input is hashed by one call to HHStateT::Update.
-typedef char HHPacket[32];
-
-// Hash 'return' types.
-typedef uint64_t HHResult64; // returned directly
-typedef uint64_t HHResult128[2];
-typedef uint64_t HHResult256[4];
-
-// Called if a test fails, indicating which target and size.
-typedef void (*HHNotify)(const char*, size_t);
-
-#ifdef __cplusplus
-} // namespace highwayhash
-#endif
-
-#endif // HIGHWAYHASH_HH_TYPES_H_
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef HIGHWAYHASH_HH_TYPES_H_
+#define HIGHWAYHASH_HH_TYPES_H_
+
+// WARNING: included from c_bindings => must be C-compatible.
+// WARNING: this is a "restricted" header because it is included from
+// translation units compiled with different flags. This header and its
+// dependencies must not define any function unless it is static inline and/or
+// within namespace HH_TARGET_NAME. See arch_specific.h for details.
+
+#include <stddef.h> // size_t
+#include <stdint.h>
+
+#ifdef __cplusplus
+namespace highwayhash {
+#endif
+
+// 256-bit secret key that should remain unknown to attackers.
+// We recommend initializing it to a random value.
+typedef uint64_t HHKey[4];
+
+// How much input is hashed by one call to HHStateT::Update.
+typedef char HHPacket[32];
+
+// Hash 'return' types.
+typedef uint64_t HHResult64; // returned directly
+typedef uint64_t HHResult128[2];
+typedef uint64_t HHResult256[4];
+
+// Called if a test fails, indicating which target and size.
+typedef void (*HHNotify)(const char*, size_t);
+
+#ifdef __cplusplus
+} // namespace highwayhash
+#endif
+
+#endif // HIGHWAYHASH_HH_TYPES_H_
diff --git a/contrib/libs/highwayhash/highwayhash/highwayhash.h b/contrib/libs/highwayhash/highwayhash/highwayhash.h
index 0cebc841fe..cee1c31ba4 100644
--- a/contrib/libs/highwayhash/highwayhash/highwayhash.h
+++ b/contrib/libs/highwayhash/highwayhash/highwayhash.h
@@ -1,202 +1,202 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef HIGHWAYHASH_HIGHWAYHASH_H_
-#define HIGHWAYHASH_HIGHWAYHASH_H_
-
-// This header's templates are useful for inlining into other CPU-specific code:
-// template<TargetBits Target> CodeUsingHash() { HighwayHashT<Target>(...); },
-// and can also be instantiated with HH_TARGET when callers don't care about the
-// exact implementation. Otherwise, they are implementation details of the
-// highwayhash_target wrapper. Use that instead if you need to detect the best
-// available implementation at runtime.
-
-// WARNING: this is a "restricted" header because it is included from
-// translation units compiled with different flags. This header and its
-// dependencies must not define any function unless it is static inline and/or
-// within namespace HH_TARGET_NAME. See arch_specific.h for details.
-
-#include "highwayhash/arch_specific.h"
-#include "highwayhash/compiler_specific.h"
-#include "highwayhash/hh_types.h"
-#include "highwayhash/iaca.h"
-
-// Include exactly one (see arch_specific.h) header, which defines a state
-// object in a target-specific namespace, e.g. AVX2::HHStateAVX2.
-// Attempts to use "computed includes" (#define MACRO "path/or_just_filename",
-// #include MACRO) fail with 'file not found', so we need an #if chain.
-#if HH_TARGET == HH_TARGET_AVX2
-#include "highwayhash/hh_avx2.h"
-#elif HH_TARGET == HH_TARGET_SSE41
-#include "highwayhash/hh_sse41.h"
-#elif HH_TARGET == HH_TARGET_Portable
-#include "highwayhash/hh_portable.h"
-#else
-#error "Unknown target, add its hh_*.h include here."
-#endif
-
-#ifndef HH_DISABLE_TARGET_SPECIFIC
-namespace highwayhash {
-
-// Alias templates (HHStateT) cannot be specialized, so we need a helper struct.
-// Note that hh_*.h don't just specialize HHStateT directly because vector128.h
-// must reside in a distinct namespace (to allow including it from multiple
-// translation units), and it is easier if its users, i.e. the concrete HHState,
-// also reside in that same namespace, which precludes specialization.
-template <TargetBits Target>
-struct HHStateForTarget {};
-
-template <>
-struct HHStateForTarget<HH_TARGET> {
- // (The namespace is sufficient and the additional HH_TARGET_NAME suffix is
- // technically redundant, but it makes searching easier.)
- using type = HH_TARGET_NAME::HH_ADD_TARGET_SUFFIX(HHState);
-};
-
-// Typically used as HHStateT<HH_TARGET>. It would be easier to just have a
-// concrete type HH_STATE, but this alias template is required by the
-// templates in highwayhash_target.cc.
-template <TargetBits Target>
-using HHStateT = typename HHStateForTarget<Target>::type;
-
-// Computes HighwayHash of "bytes" using the implementation chosen by "State".
-//
-// "state" is a HHStateT<> initialized with a key.
-// "bytes" is the data to hash (possibly unaligned).
-// "size" is the number of bytes to hash; we do not read any additional bytes.
-// "hash" is a HHResult* (either 64, 128 or 256 bits).
-//
-// HighwayHash is a strong pseudorandom function with security claims
-// [https://arxiv.org/abs/1612.06257]. It is intended as a safer general-purpose
-// hash, about 4x faster than SipHash and 10x faster than BLAKE2.
-//
-// This template allows callers (e.g. tests) to invoke a specific
-// implementation. It must be compiled with the flags required by the desired
-// implementation. If the entire program cannot be built with these flags, use
-// the wrapper in highwayhash_target.h instead.
-//
-// Callers wanting to hash multiple pieces of data should duplicate this
-// function, calling HHStateT::Update for each input and only Finalizing once.
-template <class State, typename Result>
-HH_INLINE void HighwayHashT(State* HH_RESTRICT state,
- const char* HH_RESTRICT bytes, const size_t size,
- Result* HH_RESTRICT hash) {
- // BeginIACA();
- const size_t remainder = size & (sizeof(HHPacket) - 1);
- const size_t truncated = size & ~(sizeof(HHPacket) - 1);
- for (size_t offset = 0; offset < truncated; offset += sizeof(HHPacket)) {
- state->Update(*reinterpret_cast<const HHPacket*>(bytes + offset));
- }
-
- if (remainder != 0) {
- state->UpdateRemainder(bytes + truncated, remainder);
- }
-
- state->Finalize(hash);
- // EndIACA();
-}
-
-// Wrapper class for incrementally hashing a series of data ranges. The final
-// result is the same as HighwayHashT of the concatenation of all the ranges.
-// This is useful for computing the hash of cords, iovecs, and similar
-// data structures.
-template <TargetBits Target>
-class HighwayHashCatT {
- public:
- HH_INLINE HighwayHashCatT(const HHKey& key) : state_(key) {
- // Avoids msan uninitialized-memory warnings.
- HHStateT<Target>::ZeroInitialize(buffer_);
- }
-
- // Resets the state of the hasher so it can be used to hash a new string.
- HH_INLINE void Reset(const HHKey& key) {
- state_.Reset(key);
- buffer_usage_ = 0;
- }
-
- // Adds "bytes" to the internal buffer, feeding it to HHStateT::Update as
- // required. Call this as often as desired. Only reads bytes within the
- // interval [bytes, bytes + num_bytes). "num_bytes" == 0 has no effect.
- // There are no alignment requirements.
- HH_INLINE void Append(const char* HH_RESTRICT bytes, size_t num_bytes) {
- // BeginIACA();
- const size_t capacity = sizeof(HHPacket) - buffer_usage_;
- // New bytes fit within buffer, but still not enough to Update.
- if (HH_UNLIKELY(num_bytes < capacity)) {
- HHStateT<Target>::AppendPartial(bytes, num_bytes, buffer_, buffer_usage_);
- buffer_usage_ += num_bytes;
- return;
- }
-
- // HACK: ensures the state is kept in SIMD registers; otherwise, Update
- // constantly load/stores its operands, which is much slower.
- // Restrict-qualified pointers to external state or the state_ member are
- // not sufficient for keeping this in registers.
- HHStateT<Target> state_copy = state_;
-
- // Have prior bytes to flush.
- const size_t buffer_usage = buffer_usage_;
- if (HH_LIKELY(buffer_usage != 0)) {
- // Calls update with prior buffer contents plus new data. Does not modify
- // the buffer because some implementations can load into SIMD registers
- // and Append to them directly.
- state_copy.AppendAndUpdate(bytes, capacity, buffer_, buffer_usage);
- bytes += capacity;
- num_bytes -= capacity;
- }
-
- // Buffer currently empty => Update directly from the source.
- while (num_bytes >= sizeof(HHPacket)) {
- state_copy.Update(*reinterpret_cast<const HHPacket*>(bytes));
- bytes += sizeof(HHPacket);
- num_bytes -= sizeof(HHPacket);
- }
-
- // Unconditionally assign even if zero because we didn't reset to zero
- // after the AppendAndUpdate above.
- buffer_usage_ = num_bytes;
-
- state_ = state_copy;
-
- // Store any remainders in buffer, no-op if multiple of a packet.
- if (HH_LIKELY(num_bytes != 0)) {
- HHStateT<Target>::CopyPartial(bytes, num_bytes, buffer_);
- }
- // EndIACA();
- }
-
- // Stores the resulting 64, 128 or 256-bit hash of all data passed to Append.
- // Must be called exactly once, or after a prior Reset.
- template <typename Result> // HHResult*
- HH_INLINE void Finalize(Result* HH_RESTRICT hash) {
- // BeginIACA();
- HHStateT<Target> state_copy = state_;
- const size_t buffer_usage = buffer_usage_;
- if (HH_LIKELY(buffer_usage != 0)) {
- state_copy.UpdateRemainder(buffer_, buffer_usage);
- }
- state_copy.Finalize(hash);
- // EndIACA();
- }
-
- private:
- HHPacket buffer_ HH_ALIGNAS(64);
- HHStateT<Target> state_ HH_ALIGNAS(32);
- // How many bytes in buffer_ (starting with offset 0) are valid.
- size_t buffer_usage_ = 0;
-};
-
-} // namespace highwayhash
-#endif // HH_DISABLE_TARGET_SPECIFIC
-#endif // HIGHWAYHASH_HIGHWAYHASH_H_
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef HIGHWAYHASH_HIGHWAYHASH_H_
+#define HIGHWAYHASH_HIGHWAYHASH_H_
+
+// This header's templates are useful for inlining into other CPU-specific code:
+// template<TargetBits Target> CodeUsingHash() { HighwayHashT<Target>(...); },
+// and can also be instantiated with HH_TARGET when callers don't care about the
+// exact implementation. Otherwise, they are implementation details of the
+// highwayhash_target wrapper. Use that instead if you need to detect the best
+// available implementation at runtime.
+
+// WARNING: this is a "restricted" header because it is included from
+// translation units compiled with different flags. This header and its
+// dependencies must not define any function unless it is static inline and/or
+// within namespace HH_TARGET_NAME. See arch_specific.h for details.
+
+#include "highwayhash/arch_specific.h"
+#include "highwayhash/compiler_specific.h"
+#include "highwayhash/hh_types.h"
+#include "highwayhash/iaca.h"
+
+// Include exactly one (see arch_specific.h) header, which defines a state
+// object in a target-specific namespace, e.g. AVX2::HHStateAVX2.
+// Attempts to use "computed includes" (#define MACRO "path/or_just_filename",
+// #include MACRO) fail with 'file not found', so we need an #if chain.
+#if HH_TARGET == HH_TARGET_AVX2
+#include "highwayhash/hh_avx2.h"
+#elif HH_TARGET == HH_TARGET_SSE41
+#include "highwayhash/hh_sse41.h"
+#elif HH_TARGET == HH_TARGET_Portable
+#include "highwayhash/hh_portable.h"
+#else
+#error "Unknown target, add its hh_*.h include here."
+#endif
+
+#ifndef HH_DISABLE_TARGET_SPECIFIC
+namespace highwayhash {
+
+// Alias templates (HHStateT) cannot be specialized, so we need a helper struct.
+// Note that hh_*.h don't just specialize HHStateT directly because vector128.h
+// must reside in a distinct namespace (to allow including it from multiple
+// translation units), and it is easier if its users, i.e. the concrete HHState,
+// also reside in that same namespace, which precludes specialization.
+template <TargetBits Target>
+struct HHStateForTarget {};
+
+template <>
+struct HHStateForTarget<HH_TARGET> {
+ // (The namespace is sufficient and the additional HH_TARGET_NAME suffix is
+ // technically redundant, but it makes searching easier.)
+ using type = HH_TARGET_NAME::HH_ADD_TARGET_SUFFIX(HHState);
+};
+
+// Typically used as HHStateT<HH_TARGET>. It would be easier to just have a
+// concrete type HH_STATE, but this alias template is required by the
+// templates in highwayhash_target.cc.
+template <TargetBits Target>
+using HHStateT = typename HHStateForTarget<Target>::type;
+
+// Computes HighwayHash of "bytes" using the implementation chosen by "State".
+//
+// "state" is a HHStateT<> initialized with a key.
+// "bytes" is the data to hash (possibly unaligned).
+// "size" is the number of bytes to hash; we do not read any additional bytes.
+// "hash" is a HHResult* (either 64, 128 or 256 bits).
+//
+// HighwayHash is a strong pseudorandom function with security claims
+// [https://arxiv.org/abs/1612.06257]. It is intended as a safer general-purpose
+// hash, about 4x faster than SipHash and 10x faster than BLAKE2.
+//
+// This template allows callers (e.g. tests) to invoke a specific
+// implementation. It must be compiled with the flags required by the desired
+// implementation. If the entire program cannot be built with these flags, use
+// the wrapper in highwayhash_target.h instead.
+//
+// Callers wanting to hash multiple pieces of data should duplicate this
+// function, calling HHStateT::Update for each input and only Finalizing once.
+template <class State, typename Result>
+HH_INLINE void HighwayHashT(State* HH_RESTRICT state,
+ const char* HH_RESTRICT bytes, const size_t size,
+ Result* HH_RESTRICT hash) {
+ // BeginIACA();
+ const size_t remainder = size & (sizeof(HHPacket) - 1);
+ const size_t truncated = size & ~(sizeof(HHPacket) - 1);
+ for (size_t offset = 0; offset < truncated; offset += sizeof(HHPacket)) {
+ state->Update(*reinterpret_cast<const HHPacket*>(bytes + offset));
+ }
+
+ if (remainder != 0) {
+ state->UpdateRemainder(bytes + truncated, remainder);
+ }
+
+ state->Finalize(hash);
+ // EndIACA();
+}
+
+// Wrapper class for incrementally hashing a series of data ranges. The final
+// result is the same as HighwayHashT of the concatenation of all the ranges.
+// This is useful for computing the hash of cords, iovecs, and similar
+// data structures.
+template <TargetBits Target>
+class HighwayHashCatT {
+ public:
+ HH_INLINE HighwayHashCatT(const HHKey& key) : state_(key) {
+ // Avoids msan uninitialized-memory warnings.
+ HHStateT<Target>::ZeroInitialize(buffer_);
+ }
+
+ // Resets the state of the hasher so it can be used to hash a new string.
+ HH_INLINE void Reset(const HHKey& key) {
+ state_.Reset(key);
+ buffer_usage_ = 0;
+ }
+
+ // Adds "bytes" to the internal buffer, feeding it to HHStateT::Update as
+ // required. Call this as often as desired. Only reads bytes within the
+ // interval [bytes, bytes + num_bytes). "num_bytes" == 0 has no effect.
+ // There are no alignment requirements.
+ HH_INLINE void Append(const char* HH_RESTRICT bytes, size_t num_bytes) {
+ // BeginIACA();
+ const size_t capacity = sizeof(HHPacket) - buffer_usage_;
+ // New bytes fit within buffer, but still not enough to Update.
+ if (HH_UNLIKELY(num_bytes < capacity)) {
+ HHStateT<Target>::AppendPartial(bytes, num_bytes, buffer_, buffer_usage_);
+ buffer_usage_ += num_bytes;
+ return;
+ }
+
+ // HACK: ensures the state is kept in SIMD registers; otherwise, Update
+ // constantly load/stores its operands, which is much slower.
+ // Restrict-qualified pointers to external state or the state_ member are
+ // not sufficient for keeping this in registers.
+ HHStateT<Target> state_copy = state_;
+
+ // Have prior bytes to flush.
+ const size_t buffer_usage = buffer_usage_;
+ if (HH_LIKELY(buffer_usage != 0)) {
+ // Calls update with prior buffer contents plus new data. Does not modify
+ // the buffer because some implementations can load into SIMD registers
+ // and Append to them directly.
+ state_copy.AppendAndUpdate(bytes, capacity, buffer_, buffer_usage);
+ bytes += capacity;
+ num_bytes -= capacity;
+ }
+
+ // Buffer currently empty => Update directly from the source.
+ while (num_bytes >= sizeof(HHPacket)) {
+ state_copy.Update(*reinterpret_cast<const HHPacket*>(bytes));
+ bytes += sizeof(HHPacket);
+ num_bytes -= sizeof(HHPacket);
+ }
+
+ // Unconditionally assign even if zero because we didn't reset to zero
+ // after the AppendAndUpdate above.
+ buffer_usage_ = num_bytes;
+
+ state_ = state_copy;
+
+ // Store any remainders in buffer, no-op if multiple of a packet.
+ if (HH_LIKELY(num_bytes != 0)) {
+ HHStateT<Target>::CopyPartial(bytes, num_bytes, buffer_);
+ }
+ // EndIACA();
+ }
+
+ // Stores the resulting 64, 128 or 256-bit hash of all data passed to Append.
+ // Must be called exactly once, or after a prior Reset.
+ template <typename Result> // HHResult*
+ HH_INLINE void Finalize(Result* HH_RESTRICT hash) {
+ // BeginIACA();
+ HHStateT<Target> state_copy = state_;
+ const size_t buffer_usage = buffer_usage_;
+ if (HH_LIKELY(buffer_usage != 0)) {
+ state_copy.UpdateRemainder(buffer_, buffer_usage);
+ }
+ state_copy.Finalize(hash);
+ // EndIACA();
+ }
+
+ private:
+ HHPacket buffer_ HH_ALIGNAS(64);
+ HHStateT<Target> state_ HH_ALIGNAS(32);
+ // How many bytes in buffer_ (starting with offset 0) are valid.
+ size_t buffer_usage_ = 0;
+};
+
+} // namespace highwayhash
+#endif // HH_DISABLE_TARGET_SPECIFIC
+#endif // HIGHWAYHASH_HIGHWAYHASH_H_
diff --git a/contrib/libs/highwayhash/highwayhash/highwayhash_target.cc b/contrib/libs/highwayhash/highwayhash/highwayhash_target.cc
index f7dc4a0d54..74022f64bf 100644
--- a/contrib/libs/highwayhash/highwayhash/highwayhash_target.cc
+++ b/contrib/libs/highwayhash/highwayhash/highwayhash_target.cc
@@ -1,104 +1,104 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// WARNING: this is a "restricted" source file; avoid including any headers
-// unless they are also restricted. See arch_specific.h for details.
-
-#include "highwayhash/highwayhash_target.h"
-
-#include "highwayhash/highwayhash.h"
-
-#ifndef HH_DISABLE_TARGET_SPECIFIC
-namespace highwayhash {
-
-extern "C" {
-uint64_t HH_ADD_TARGET_SUFFIX(HighwayHash64_)(const HHKey key,
- const char* bytes,
- const uint64_t size) {
- HHStateT<HH_TARGET> state(key);
- HHResult64 result;
- HighwayHashT(&state, bytes, size, &result);
- return result;
-}
-} // extern "C"
-
-template <TargetBits Target>
-void HighwayHash<Target>::operator()(const HHKey& key,
- const char* HH_RESTRICT bytes,
- const size_t size,
- HHResult64* HH_RESTRICT hash) const {
- HHStateT<Target> state(key);
- HighwayHashT(&state, bytes, size, hash);
-}
-
-template <TargetBits Target>
-void HighwayHash<Target>::operator()(const HHKey& key,
- const char* HH_RESTRICT bytes,
- const size_t size,
- HHResult128* HH_RESTRICT hash) const {
- HHStateT<Target> state(key);
- HighwayHashT(&state, bytes, size, hash);
-}
-
-template <TargetBits Target>
-void HighwayHash<Target>::operator()(const HHKey& key,
- const char* HH_RESTRICT bytes,
- const size_t size,
- HHResult256* HH_RESTRICT hash) const {
- HHStateT<Target> state(key);
- HighwayHashT(&state, bytes, size, hash);
-}
-
-template <TargetBits Target>
-void HighwayHashCat<Target>::operator()(const HHKey& key,
- const StringView* HH_RESTRICT fragments,
- const size_t num_fragments,
- HHResult64* HH_RESTRICT hash) const {
- HighwayHashCatT<Target> cat(key);
- for (size_t i = 0; i < num_fragments; ++i) {
- cat.Append(fragments[i].data, fragments[i].num_bytes);
- }
- cat.Finalize(hash);
-}
-
-template <TargetBits Target>
-void HighwayHashCat<Target>::operator()(const HHKey& key,
- const StringView* HH_RESTRICT fragments,
- const size_t num_fragments,
- HHResult128* HH_RESTRICT hash) const {
- HighwayHashCatT<Target> cat(key);
- for (size_t i = 0; i < num_fragments; ++i) {
- cat.Append(fragments[i].data, fragments[i].num_bytes);
- }
- cat.Finalize(hash);
-}
-
-template <TargetBits Target>
-void HighwayHashCat<Target>::operator()(const HHKey& key,
- const StringView* HH_RESTRICT fragments,
- const size_t num_fragments,
- HHResult256* HH_RESTRICT hash) const {
- HighwayHashCatT<Target> cat(key);
- for (size_t i = 0; i < num_fragments; ++i) {
- cat.Append(fragments[i].data, fragments[i].num_bytes);
- }
- cat.Finalize(hash);
-}
-
-// Instantiate for the current target.
-template struct HighwayHash<HH_TARGET>;
-template struct HighwayHashCat<HH_TARGET>;
-
-} // namespace highwayhash
-#endif // HH_DISABLE_TARGET_SPECIFIC
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// WARNING: this is a "restricted" source file; avoid including any headers
+// unless they are also restricted. See arch_specific.h for details.
+
+#include "highwayhash/highwayhash_target.h"
+
+#include "highwayhash/highwayhash.h"
+
+#ifndef HH_DISABLE_TARGET_SPECIFIC
+namespace highwayhash {
+
+extern "C" {
+uint64_t HH_ADD_TARGET_SUFFIX(HighwayHash64_)(const HHKey key,
+ const char* bytes,
+ const uint64_t size) {
+ HHStateT<HH_TARGET> state(key);
+ HHResult64 result;
+ HighwayHashT(&state, bytes, size, &result);
+ return result;
+}
+} // extern "C"
+
+template <TargetBits Target>
+void HighwayHash<Target>::operator()(const HHKey& key,
+ const char* HH_RESTRICT bytes,
+ const size_t size,
+ HHResult64* HH_RESTRICT hash) const {
+ HHStateT<Target> state(key);
+ HighwayHashT(&state, bytes, size, hash);
+}
+
+template <TargetBits Target>
+void HighwayHash<Target>::operator()(const HHKey& key,
+ const char* HH_RESTRICT bytes,
+ const size_t size,
+ HHResult128* HH_RESTRICT hash) const {
+ HHStateT<Target> state(key);
+ HighwayHashT(&state, bytes, size, hash);
+}
+
+template <TargetBits Target>
+void HighwayHash<Target>::operator()(const HHKey& key,
+ const char* HH_RESTRICT bytes,
+ const size_t size,
+ HHResult256* HH_RESTRICT hash) const {
+ HHStateT<Target> state(key);
+ HighwayHashT(&state, bytes, size, hash);
+}
+
+template <TargetBits Target>
+void HighwayHashCat<Target>::operator()(const HHKey& key,
+ const StringView* HH_RESTRICT fragments,
+ const size_t num_fragments,
+ HHResult64* HH_RESTRICT hash) const {
+ HighwayHashCatT<Target> cat(key);
+ for (size_t i = 0; i < num_fragments; ++i) {
+ cat.Append(fragments[i].data, fragments[i].num_bytes);
+ }
+ cat.Finalize(hash);
+}
+
+template <TargetBits Target>
+void HighwayHashCat<Target>::operator()(const HHKey& key,
+ const StringView* HH_RESTRICT fragments,
+ const size_t num_fragments,
+ HHResult128* HH_RESTRICT hash) const {
+ HighwayHashCatT<Target> cat(key);
+ for (size_t i = 0; i < num_fragments; ++i) {
+ cat.Append(fragments[i].data, fragments[i].num_bytes);
+ }
+ cat.Finalize(hash);
+}
+
+template <TargetBits Target>
+void HighwayHashCat<Target>::operator()(const HHKey& key,
+ const StringView* HH_RESTRICT fragments,
+ const size_t num_fragments,
+ HHResult256* HH_RESTRICT hash) const {
+ HighwayHashCatT<Target> cat(key);
+ for (size_t i = 0; i < num_fragments; ++i) {
+ cat.Append(fragments[i].data, fragments[i].num_bytes);
+ }
+ cat.Finalize(hash);
+}
+
+// Instantiate for the current target.
+template struct HighwayHash<HH_TARGET>;
+template struct HighwayHashCat<HH_TARGET>;
+
+} // namespace highwayhash
+#endif // HH_DISABLE_TARGET_SPECIFIC
diff --git a/contrib/libs/highwayhash/highwayhash/highwayhash_target.h b/contrib/libs/highwayhash/highwayhash/highwayhash_target.h
index 3d6f33f236..08b803f191 100644
--- a/contrib/libs/highwayhash/highwayhash/highwayhash_target.h
+++ b/contrib/libs/highwayhash/highwayhash/highwayhash_target.h
@@ -1,91 +1,91 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef HIGHWAYHASH_HIGHWAYHASH_TARGET_H_
-#define HIGHWAYHASH_HIGHWAYHASH_TARGET_H_
-
-// Adapter for the InstructionSets::Run dispatcher, which invokes the best
-// implementations available on the current CPU.
-
-// WARNING: this is a "restricted" header because it is included from
-// translation units compiled with different flags. This header and its
-// dependencies must not define any function unless it is static inline and/or
-// within namespace HH_TARGET_NAME. See arch_specific.h for details.
-
-#include "highwayhash/arch_specific.h"
-#include "highwayhash/compiler_specific.h"
-#include "highwayhash/hh_types.h"
-
-namespace highwayhash {
-
-// Usage: InstructionSets::Run<HighwayHash>(key, bytes, size, hash).
-// This incurs some small dispatch overhead. If the entire program is compiled
-// for the target CPU, you can instead call HighwayHashT directly to avoid any
-// overhead. This template is instantiated in the source file, which is
-// compiled once for every target with the required flags (e.g. -mavx2).
-template <TargetBits Target>
-struct HighwayHash {
- // Stores a 64/128/256 bit hash of "bytes" using the HighwayHashT
- // implementation for the "Target" CPU. The hash result is identical
- // regardless of which implementation is used.
- //
- // "key" is a (randomly generated or hard-coded) HHKey.
- // "bytes" is the data to hash (possibly unaligned).
- // "size" is the number of bytes to hash; we do not read any additional bytes.
- // "hash" is a HHResult* (either 64, 128 or 256 bits).
- //
- // HighwayHash is a strong pseudorandom function with security claims
- // [https://arxiv.org/abs/1612.06257]. It is intended as a safer
- // general-purpose hash, 5x faster than SipHash and 10x faster than BLAKE2.
- void operator()(const HHKey& key, const char* HH_RESTRICT bytes,
- const size_t size, HHResult64* HH_RESTRICT hash) const;
- void operator()(const HHKey& key, const char* HH_RESTRICT bytes,
- const size_t size, HHResult128* HH_RESTRICT hash) const;
- void operator()(const HHKey& key, const char* HH_RESTRICT bytes,
- const size_t size, HHResult256* HH_RESTRICT hash) const;
-};
-
-// Replacement for C++17 std::string_view that avoids dependencies.
-// A struct requires fewer allocations when calling HighwayHashCat with
-// non-const "num_fragments".
-struct StringView {
- const char* data; // not necessarily aligned/padded
- size_t num_bytes; // possibly zero
-};
-
-// Note: this interface avoids dispatch overhead per fragment.
-template <TargetBits Target>
-struct HighwayHashCat {
- // Stores a 64/128/256 bit hash of all "num_fragments" "fragments" using the
- // HighwayHashCatT implementation for "Target". The hash result is identical
- // to HighwayHash of the flattened data, regardless of Target.
- //
- // "key" is a (randomly generated or hard-coded) HHKey.
- // "fragments" contain unaligned pointers and the number of valid bytes.
- // "num_fragments" indicates the number of entries in "fragments".
- // "hash" is a HHResult* (either 64, 128 or 256 bits).
- void operator()(const HHKey& key, const StringView* HH_RESTRICT fragments,
- const size_t num_fragments,
- HHResult64* HH_RESTRICT hash) const;
- void operator()(const HHKey& key, const StringView* HH_RESTRICT fragments,
- const size_t num_fragments,
- HHResult128* HH_RESTRICT hash) const;
- void operator()(const HHKey& key, const StringView* HH_RESTRICT fragments,
- const size_t num_fragments,
- HHResult256* HH_RESTRICT hash) const;
-};
-
-} // namespace highwayhash
-
-#endif // HIGHWAYHASH_HIGHWAYHASH_TARGET_H_
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef HIGHWAYHASH_HIGHWAYHASH_TARGET_H_
+#define HIGHWAYHASH_HIGHWAYHASH_TARGET_H_
+
+// Adapter for the InstructionSets::Run dispatcher, which invokes the best
+// implementations available on the current CPU.
+
+// WARNING: this is a "restricted" header because it is included from
+// translation units compiled with different flags. This header and its
+// dependencies must not define any function unless it is static inline and/or
+// within namespace HH_TARGET_NAME. See arch_specific.h for details.
+
+#include "highwayhash/arch_specific.h"
+#include "highwayhash/compiler_specific.h"
+#include "highwayhash/hh_types.h"
+
+namespace highwayhash {
+
+// Usage: InstructionSets::Run<HighwayHash>(key, bytes, size, hash).
+// This incurs some small dispatch overhead. If the entire program is compiled
+// for the target CPU, you can instead call HighwayHashT directly to avoid any
+// overhead. This template is instantiated in the source file, which is
+// compiled once for every target with the required flags (e.g. -mavx2).
+template <TargetBits Target>
+struct HighwayHash {
+ // Stores a 64/128/256 bit hash of "bytes" using the HighwayHashT
+ // implementation for the "Target" CPU. The hash result is identical
+ // regardless of which implementation is used.
+ //
+ // "key" is a (randomly generated or hard-coded) HHKey.
+ // "bytes" is the data to hash (possibly unaligned).
+ // "size" is the number of bytes to hash; we do not read any additional bytes.
+ // "hash" is a HHResult* (either 64, 128 or 256 bits).
+ //
+ // HighwayHash is a strong pseudorandom function with security claims
+ // [https://arxiv.org/abs/1612.06257]. It is intended as a safer
+ // general-purpose hash, 5x faster than SipHash and 10x faster than BLAKE2.
+ void operator()(const HHKey& key, const char* HH_RESTRICT bytes,
+ const size_t size, HHResult64* HH_RESTRICT hash) const;
+ void operator()(const HHKey& key, const char* HH_RESTRICT bytes,
+ const size_t size, HHResult128* HH_RESTRICT hash) const;
+ void operator()(const HHKey& key, const char* HH_RESTRICT bytes,
+ const size_t size, HHResult256* HH_RESTRICT hash) const;
+};
+
+// Replacement for C++17 std::string_view that avoids dependencies.
+// A struct requires fewer allocations when calling HighwayHashCat with
+// non-const "num_fragments".
+struct StringView {
+ const char* data; // not necessarily aligned/padded
+ size_t num_bytes; // possibly zero
+};
+
+// Note: this interface avoids dispatch overhead per fragment.
+template <TargetBits Target>
+struct HighwayHashCat {
+ // Stores a 64/128/256 bit hash of all "num_fragments" "fragments" using the
+ // HighwayHashCatT implementation for "Target". The hash result is identical
+ // to HighwayHash of the flattened data, regardless of Target.
+ //
+ // "key" is a (randomly generated or hard-coded) HHKey.
+ // "fragments" contain unaligned pointers and the number of valid bytes.
+ // "num_fragments" indicates the number of entries in "fragments".
+ // "hash" is a HHResult* (either 64, 128 or 256 bits).
+ void operator()(const HHKey& key, const StringView* HH_RESTRICT fragments,
+ const size_t num_fragments,
+ HHResult64* HH_RESTRICT hash) const;
+ void operator()(const HHKey& key, const StringView* HH_RESTRICT fragments,
+ const size_t num_fragments,
+ HHResult128* HH_RESTRICT hash) const;
+ void operator()(const HHKey& key, const StringView* HH_RESTRICT fragments,
+ const size_t num_fragments,
+ HHResult256* HH_RESTRICT hash) const;
+};
+
+} // namespace highwayhash
+
+#endif // HIGHWAYHASH_HIGHWAYHASH_TARGET_H_
diff --git a/contrib/libs/highwayhash/highwayhash/highwayhash_test.cc b/contrib/libs/highwayhash/highwayhash/highwayhash_test.cc
index d7f914af78..b0f8b88712 100644
--- a/contrib/libs/highwayhash/highwayhash/highwayhash_test.cc
+++ b/contrib/libs/highwayhash/highwayhash/highwayhash_test.cc
@@ -1,388 +1,388 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Ensures each implementation of HighwayHash returns consistent and unchanging
-// hash values.
-
-#include "highwayhash/highwayhash_test_target.h"
-
-#include <stddef.h>
-#include <atomic>
-#include <cstdio>
-#include <cstdlib>
-#include <vector>
-
-#ifdef HH_GOOGLETEST
-#include "testing/base/public/gunit.h"
-#endif
-
-#include "highwayhash/data_parallel.h"
-#include "highwayhash/instruction_sets.h"
-
-// Define to nonzero in order to print the (new) golden outputs.
-#define PRINT_RESULTS 0
-
-namespace highwayhash {
-namespace {
-
-// Known-good outputs are verified for all lengths in [0, 64].
-const size_t kMaxSize = 64;
-
-#if PRINT_RESULTS
-void Print(const HHResult64 result) { printf("0x%016lXull,\n", result); }
-
-// For HHResult128/256.
-template <int kNumLanes>
-void Print(const HHResult64 (&result)[kNumLanes]) {
- printf("{ ");
- for (int i = 0; i < kNumLanes; ++i) {
- if (i != 0) {
- printf(", ");
- }
- printf("0x%016lXull", result[i]);
- }
- printf("},\n");
-}
-#endif // PRINT_RESULTS
-
-// Called when any test fails; exits immediately because one mismatch usually
-// implies many others.
-void OnFailure(const char* target_name, const size_t size) {
- printf("Mismatch at size %zu\n", size);
-#ifdef HH_GOOGLETEST
- EXPECT_TRUE(false);
-#endif
- exit(1);
-}
-
-// Verifies every combination of implementation and input size. Returns which
-// targets were run/verified.
-template <typename Result>
-TargetBits VerifyImplementations(const Result (&known_good)[kMaxSize + 1]) {
- const HHKey key = {0x0706050403020100ULL, 0x0F0E0D0C0B0A0908ULL,
- 0x1716151413121110ULL, 0x1F1E1D1C1B1A1918ULL};
-
- TargetBits targets = ~0U;
-
- // For each test input: empty string, 00, 00 01, ...
- char in[kMaxSize + 1] = {0};
- // Fast enough that we don't need a thread pool.
- for (uint64_t size = 0; size <= kMaxSize; ++size) {
- in[size] = static_cast<char>(size);
-#if PRINT_RESULTS
- Result actual;
- targets &= InstructionSets::Run<HighwayHash>(key, in, size, &actual);
- Print(actual);
-#else
- const Result* expected = &known_good[size];
- targets &= InstructionSets::RunAll<HighwayHashTest>(key, in, size, expected,
- &OnFailure);
-#endif
- }
- return targets;
-}
-
-// Cat
-
-void OnCatFailure(const char* target_name, const size_t size) {
- printf("Cat mismatch at size %zu\n", size);
-#ifdef HH_GOOGLETEST
- EXPECT_TRUE(false);
-#endif
- exit(1);
-}
-
-// Returns which targets were run/verified.
-template <typename Result>
-TargetBits VerifyCat(ThreadPool* pool) {
- // Reversed order vs prior test.
- const HHKey key = {0x1F1E1D1C1B1A1918ULL, 0x1716151413121110ULL,
- 0x0F0E0D0C0B0A0908ULL, 0x0706050403020100ULL};
-
- const size_t kMaxSize = 3 * 35;
- std::vector<char> flat;
- flat.reserve(kMaxSize);
- srand(129);
- for (size_t size = 0; size < kMaxSize; ++size) {
- flat.push_back(static_cast<char>(rand() & 0xFF));
- }
-
- std::atomic<TargetBits> targets{~0U};
-
- pool->Run(0, kMaxSize, [&key, &flat, &targets](const uint32_t i) {
- Result dummy;
- targets.fetch_and(InstructionSets::RunAll<HighwayHashCatTest>(
- key, flat.data(), i, &dummy, &OnCatFailure));
- });
- return targets.load();
-}
-
-const HHResult64 kExpected64[kMaxSize + 1] = {
- 0x907A56DE22C26E53ull, 0x7EAB43AAC7CDDD78ull, 0xB8D0569AB0B53D62ull,
- 0x5C6BEFAB8A463D80ull, 0xF205A46893007EDAull, 0x2B8A1668E4A94541ull,
- 0xBD4CCC325BEFCA6Full, 0x4D02AE1738F59482ull, 0xE1205108E55F3171ull,
- 0x32D2644EC77A1584ull, 0xF6E10ACDB103A90Bull, 0xC3BBF4615B415C15ull,
- 0x243CC2040063FA9Cull, 0xA89A58CE65E641FFull, 0x24B031A348455A23ull,
- 0x40793F86A449F33Bull, 0xCFAB3489F97EB832ull, 0x19FE67D2C8C5C0E2ull,
- 0x04DD90A69C565CC2ull, 0x75D9518E2371C504ull, 0x38AD9B1141D3DD16ull,
- 0x0264432CCD8A70E0ull, 0xA9DB5A6288683390ull, 0xD7B05492003F028Cull,
- 0x205F615AEA59E51Eull, 0xEEE0C89621052884ull, 0x1BFC1A93A7284F4Full,
- 0x512175B5B70DA91Dull, 0xF71F8976A0A2C639ull, 0xAE093FEF1F84E3E7ull,
- 0x22CA92B01161860Full, 0x9FC7007CCF035A68ull, 0xA0C964D9ECD580FCull,
- 0x2C90F73CA03181FCull, 0x185CF84E5691EB9Eull, 0x4FC1F5EF2752AA9Bull,
- 0xF5B7391A5E0A33EBull, 0xB9B84B83B4E96C9Cull, 0x5E42FE712A5CD9B4ull,
- 0xA150F2F90C3F97DCull, 0x7FA522D75E2D637Dull, 0x181AD0CC0DFFD32Bull,
- 0x3889ED981E854028ull, 0xFB4297E8C586EE2Dull, 0x6D064A45BB28059Cull,
- 0x90563609B3EC860Cull, 0x7AA4FCE94097C666ull, 0x1326BAC06B911E08ull,
- 0xB926168D2B154F34ull, 0x9919848945B1948Dull, 0xA2A98FC534825EBEull,
- 0xE9809095213EF0B6ull, 0x582E5483707BC0E9ull, 0x086E9414A88A6AF5ull,
- 0xEE86B98D20F6743Dull, 0xF89B7FF609B1C0A7ull, 0x4C7D9CC19E22C3E8ull,
- 0x9A97005024562A6Full, 0x5DD41CF423E6EBEFull, 0xDF13609C0468E227ull,
- 0x6E0DA4F64188155Aull, 0xB755BA4B50D7D4A1ull, 0x887A3484647479BDull,
- 0xAB8EEBE9BF2139A0ull, 0x75542C5D4CD2A6FFull};
-
-const HHResult128 kExpected128[kMaxSize + 1] = {
- {0x0679D1E884C28A7Cull, 0x2BCA2547F904748Dull},
- {0x7F3A39BCC2D897B9ull, 0x4A7E113CA064D91Full},
- {0x6AB34B92C5AB85BFull, 0xED7AC546689D76C2ull},
- {0xAC6AF8405A4A7DBEull, 0xD78FB7953256C3E1ull},
- {0x5A6E8CF789B86448ull, 0x834EF47C1BEDC218ull},
- {0x8EBFE0B573F425A3ull, 0xBCFCC410CB84325Aull},
- {0xA1E19717CAB8F1D6ull, 0x2AA50671881F877Dull},
- {0x0B595302950DA1ECull, 0x46932DE27204B388ull},
- {0x02FB033F200F89D4ull, 0xFEC3D7BB3B421F92ull},
- {0x0A5479D46CC1EADEull, 0x0C16A2D5A0F1C3DEull},
- {0xF759E41DDD621106ull, 0xB43D70116E004750ull},
- {0x980010BC36A4E98Full, 0x27479317AE00BBD1ull},
- {0x3BABF3B23761A379ull, 0xACCDC28E0256F326ull},
- {0x5780CD04269E142Eull, 0xBB70EE3F23BDEDA9ull},
- {0x4A401F1937E99EC3ull, 0x4B3D1385D6B4E214ull},
- {0x045C6EDE080E2CB0ull, 0x7327B45D2132DC89ull},
- {0x97E1624BEB1C1756ull, 0xB7137E1B69D45024ull},
- {0x31DBA8E3DB0BF012ull, 0x3E66E6A78A729B16ull},
- {0x34D6DF1B5D8AF2A7ull, 0x4F1A47FCBC39EB55ull},
- {0xE2C6BE2D47E5DCBCull, 0xD2FF85284E307C1Full},
- {0xDA681E06098EC892ull, 0x71AD98355019FED1ull},
- {0xC4FBD72B1F2FC30Bull, 0x327549B6C9FDEDD5ull},
- {0x14F429D1C20F0EB5ull, 0x228B40C92F3FA369ull},
- {0xF5C9535333206D01ull, 0xB6FC46FCCA65F9CCull},
- {0x3049FAD9DB729D2Dull, 0xB84C931C45F781EAull},
- {0x7C6FFE6F3706DC04ull, 0x4F94583806AE3C62ull},
- {0x9EF95EB28BE1CCE0ull, 0xAD9D5B96A0D15BFEull},
- {0x63D0ED54AF2985E6ull, 0xDFAFB1B6485C1B01ull},
- {0xA46C8A2FE498D46Cull, 0xF4DBAEC0FF03BAD6ull},
- {0xED978A0FBB3E5158ull, 0x060D144D57FBE6FDull},
- {0x53F1D80C8922E4E5ull, 0x1324880D932140C9ull},
- {0xDD363B03563870CEull, 0x0DFDB79F4F34184Bull},
- {0x4E702701AE65DB38ull, 0x1B67E0A2E2DBFB04ull},
- {0x240DA388551D0822ull, 0x2FF1BB584AC4BD61ull},
- {0x3FAFB8B7C26499ABull, 0x072516308E889132ull},
- {0x0AB452339406AB22ull, 0x751DBB7FF9472D42ull},
- {0x83BA782DB6EB1186ull, 0x4391544D9318DC29ull},
- {0x25077ECDAAB201E8ull, 0x695E0E95446D63A2ull},
- {0x1AF0BF12F91F17D4ull, 0x5BB8FF299368D22Cull},
- {0x338C09CBAF701E38ull, 0xA7D24D5E7C06DC78ull},
- {0x5AB58D6555D28B56ull, 0xE781413A9AE1310Full},
- {0xB0281CD10BCA7B89ull, 0xF49873B45C0F7274ull},
- {0x67EEBD6D71E57B06ull, 0x9421CB1DB54EEDDFull},
- {0x00DAB867E37EDA65ull, 0x6477E454191E213Full},
- {0x9AF9C4817C24C82Eull, 0xAE3A73522F311EEBull},
- {0xD8A334E30D23C6E6ull, 0xAF57EF86CCCF12FFull},
- {0x0353A48FC9E139DDull, 0x27D5626170A7DD0Full},
- {0x0DA12E888EB61876ull, 0x67B17DF10CB365CDull},
- {0x967CD764883A5E85ull, 0x570D7C9A774A6AB4ull},
- {0xA8DF13980C81E533ull, 0x9C33FE4797F87F1Aull},
- {0xCABB59F53AE75FF2ull, 0x6D25512E77172E7Aull},
- {0xB24E7F0C7DA62BE7ull, 0x2442F94890F57D89ull},
- {0x7DCBA0A5B9689BBDull, 0x700FC8D13DA4CC60ull},
- {0x1E8E014B97A9F828ull, 0xF858EFCA33E8A502ull},
- {0x4DAF4E31F34D10C7ull, 0x47E382D0A5A8C613ull},
- {0x577CAB4EF626BB28ull, 0xF6ED27E594C5795Full},
- {0x989188C958586C96ull, 0x8B3A2CB0D5B48FD9ull},
- {0x13CC58F5A076C088ull, 0x932A0FD21D4B422Cull},
- {0xD067380DAD885647ull, 0xC1020E396B31BB4Aull},
- {0x47D05A73072758D0ull, 0x5CF6075A0AEB5D78ull},
- {0x54441D7AE94E2D4Eull, 0x3B4F67953ABD3EA4ull},
- {0xEDD4250C3733EEBCull, 0x26E365AA1167C723ull},
- {0x92D02D2A641DA598ull, 0x3DAF5EB24A0C2A94ull},
- {0xAE6CF7FE2D76CA56ull, 0xC7918532A42D2F5Dull},
- {0xAD24762A08D96F1Bull, 0x729083EC59FA8DF7ull}};
-
-const HHResult256 kExpected256[kMaxSize + 1] = {
- {0xC6DC0C823434863Full, 0x6A42CCB644CBFAD9ull, 0x18DEF6A60EA5D873ull,
- 0x3596F663D00D1225ull},
- {0x00518B3D2BD22424ull, 0xE5791619BF612E97ull, 0xF4DAF07017FAF99Dull,
- 0xE36AE62C5509B5D6ull},
- {0x81021CC5067D8526ull, 0xBEEFC1BC87A6911Aull, 0xE2AEC605F80657FEull,
- 0x3C6576B5DF982327ull},
- {0x118D72C0B5DB2C70ull, 0x0BE2E64BF538CA74ull, 0x667B33FE41DDAA74ull,
- 0xB6199539303E13E1ull},
- {0x4AC9B8B2E4FD873Bull, 0xDE0FE265A45FFC97ull, 0x1FC1476F896ADA3Bull,
- 0x7680B4AE30B371E7ull},
- {0x518ABC6B5E88214Full, 0xFD62A05B2B06026Bull, 0x9C978E8B38DBE795ull,
- 0x41412401886FF054ull},
- {0x2DEDEF0832BEA7D9ull, 0x44EFE0AEAB7944FCull, 0x09AA7C9374A1E980ull,
- 0x714DB8B507C507FBull},
- {0x6FA2135DE3D3D3AAull, 0xC0EEA9A890E36156ull, 0xFAC1DB8C817DB095ull,
- 0x7B42789096836327ull},
- {0x27257C518B1FFC5Cull, 0x26CC8E669DA1AB0Full, 0xCD7B17C661A0A680ull,
- 0x31D0A7EC0AA3B9BFull},
- {0xB91869900A1AF26Cull, 0x95B0D74B7FF20B43ull, 0x2A6CABF6F931B575ull,
- 0x69734DC9E66A1965ull},
- {0xDD7DA31F5C4DD30Full, 0x08940D249A0A7B69ull, 0xAE7D3AD1C5EA81F2ull,
- 0x96701DB5C6602B21ull},
- {0x2E4A230847E64687ull, 0xF96176C38E48B038ull, 0x9ED0B88A3026E1BCull,
- 0x9AAB5DCA46FCFE19ull},
- {0x3E5CF04BFBAC2642ull, 0x591A3581001709DFull, 0xA0288F5FA63C10A2ull,
- 0x85B94D3641A2C108ull},
- {0x454A95FAD8901350ull, 0x5546E8E75D2AC833ull, 0xCF5FF2ACB4B5F2C1ull,
- 0x14F314318028D62Eull},
- {0x0DED251FB81F34A9ull, 0xC42111DB31618AA6ull, 0xC1C3352B70B00C5Dull,
- 0xDC8947DBC398F0C2ull},
- {0xC591A100AB4E9E72ull, 0x4CCFD2A7B0D8D911ull, 0x6FEDFDDE1BA3F770ull,
- 0x03E5C5A2F6E708A1ull},
- {0x537C42CC5E7B448Aull, 0xA7343E04249B2231ull, 0x2CB51D697EFE9B6Dull,
- 0x589D83141A699A97ull},
- {0x3F7E6EA60343B870ull, 0x4E27E907E296D4D7ull, 0x87525BF1AABBF794ull,
- 0x6B03C4DC206EC628ull},
- {0x741BA4D7A856E03Cull, 0x3798422CB64C9AFAull, 0xB1D89C9720D33FDDull,
- 0x08DE607FC4E3B5C3ull},
- {0x77D77342C85BA466ull, 0xA01C603C58F6D97Eull, 0x342AF0A7309EA4EAull,
- 0x9C958EB3F6A64B94ull},
- {0x9EDCADDD1FFC763Full, 0xBD9BAA6E9BE936EFull, 0xAAB0F78F1A4A94F7ull,
- 0xE71D9CA601DA4C02ull},
- {0xE3AA0D0A422BF888ull, 0x07734C8173411035ull, 0x8A085019DE545AF6ull,
- 0xBC3C520B1221A779ull},
- {0x16170C02C5E5439Dull, 0x45C6004513BFC174ull, 0x35CF3AD65D225EC8ull,
- 0xE10BAA702D37C90Eull},
- {0x6BD63B47EA43ABC6ull, 0xCC08BE8A651E24C0ull, 0xB564F0FC6FF8998Aull,
- 0x3EE409A34232E589ull},
- {0xD6CEE5574355BB81ull, 0x8E31FF40B271A16Dull, 0xC3ECEDBEEACCCAE9ull,
- 0x19386CD3A23B92E9ull},
- {0x32475E05D248DBB1ull, 0xF2396A122830E72Cull, 0xB88395678C0DB899ull,
- 0x8BD410A22A247066ull},
- {0x0BFA3B3C4775EB43ull, 0x496596C36FB2A200ull, 0xA00F533EF150D7DDull,
- 0xB5D70BBCABB572C4ull},
- {0x932B0ED33ED691B1ull, 0xB58394EDCEA3C53Dull, 0xB935E0786B132755ull,
- 0x3E0998322B3F74BAull},
- {0xE21F2CE1BDD156A7ull, 0x764518A56E1363B5ull, 0x461251D3EC39B93Full,
- 0x33C1FE46C9664CC4ull},
- {0x8ABD3F6184C9CD7Dull, 0x8195816637017FC0ull, 0x284B3E93524765DEull,
- 0x56147BDBA9362D0Eull},
- {0x1F050672342807B6ull, 0x9B0AD1091A83910Dull, 0xF23AD4A58C3B1E21ull,
- 0xCC986EC0BEA16781ull},
- {0x053164DEF96B10CEull, 0x1D5ADA15E36D8F6Cull, 0x06FB43534C0472EFull,
- 0x021C0ED1FDEA0948ull},
- {0xF62BA4C5A665E602ull, 0x490D89FD89430C56ull, 0x18F423BE8A9B7E3Cull,
- 0x769E5DDA4DCAC619ull},
- {0xDABD25FAF07A6684ull, 0xACA85CD21536B927ull, 0xAC05E050B4E3D3D1ull,
- 0xBE427B2475CCD981ull},
- {0x89A2B35A34F89F8Cull, 0x1A0E51B2875D34E6ull, 0xBA573CF45E123919ull,
- 0x1C50815B08F1138Aull},
- {0x3390CCBE60F2AFF7ull, 0xD9E2D245643E79C2ull, 0x1104A78F85D3CDF5ull,
- 0x7E55F38F9C53A58Full},
- {0xC189AE1A9D456C0Eull, 0x06AA4C3D4204A40Full, 0x4B383405A9D451A9ull,
- 0x7EA34CBCAEF0C31Eull},
- {0xB45FA7CC19AE4DDFull, 0x306C418E9BA67420ull, 0xDF16D80D4D48C096ull,
- 0xD3169E50BC8D75CCull},
- {0x5894367013710C89ull, 0xD39EE6D584E76AF3ull, 0x5C55A414BCDDE505ull,
- 0x8FA97D561CB174BFull},
- {0x87355749D59F39DDull, 0x26B8B311E72C50F4ull, 0x1911A8CBCE53E37Bull,
- 0x5C256452C39B95F6ull},
- {0x8B9E87C9ABC82821ull, 0x12A5FC06B69CDC2Dull, 0xF95104FF805E5E1Dull,
- 0xE5D4D2257AD5592Eull},
- {0x5A89242B02E1E048ull, 0x771602AAD1880A7Eull, 0x0F34507608387843ull,
- 0x7AFB45F3EA4F0F24ull},
- {0x3BE3800150FDDE00ull, 0x7871908FF91AD81Aull, 0xA00E07F351BB15C1ull,
- 0x429658E7FD10D11Aull},
- {0x2B2B1A6CD1BA454Cull, 0xF19E8CA5C022308Aull, 0xAEFA0EB6F7C3CF74ull,
- 0x21F4330A5258E7C7ull},
- {0xD1C806622910A9BEull, 0xFE224EF598F541B1ull, 0xB95A435AEC4DD849ull,
- 0xD942A277AB57E68Eull},
- {0x16BF7116E8D2B328ull, 0xB37DC98EA931FC13ull, 0x18E8859A592C8C11ull,
- 0x11590F16C4C61716ull},
- {0xD046122D4C7B24AEull, 0xBD0899DFD7345611ull, 0x91AAECB50DE6DFF9ull,
- 0x6EDC4896BAA90FFAull},
- {0x2FE97B8135EA956Dull, 0xFBA50900FB4EF23Cull, 0x0BC907363F7EA368ull,
- 0xA5C982D3094BCEE2ull},
- {0x247BFB5BA3A0F245ull, 0x6ACBDD4AFFDB03EBull, 0xA4237427D373B619ull,
- 0xFA9C041D302B728Cull},
- {0xF93109909D6B80EFull, 0xD1321A6BEE302794ull, 0xD63E1E7985C458D3ull,
- 0x644CD44F6C6FDE95ull},
- {0xD0522C663FBE65B0ull, 0x78F366F302EA33F5ull, 0xB9ED66D1CB87C891ull,
- 0x0CEB2298BA9D1C1Aull},
- {0x60D60E9B569264E8ull, 0xE34447A5741417EAull, 0x04522108BDF3AFC3ull,
- 0x90F4FE2D585B25FAull},
- {0xAF411662AAB81B12ull, 0x3AD58EBBA1BA2F39ull, 0x73E0E8EB5879E37Dull,
- 0xCE0E8F8F613D3FC5ull},
- {0xCA756CB9E1FDF1C6ull, 0x89731D81712D34BDull, 0xBF520B2D830959C2ull,
- 0xD35ED12BB24CE9EFull},
- {0x5FB2B65ABF038045ull, 0x3F2D32F8532E14D6ull, 0x06443CC95CDD58C8ull,
- 0x30FC6FBE8CCE8EB8ull},
- {0x94A9774F02848D73ull, 0x83F9AFC4C0B48768ull, 0xDB7BF5FBD9B25A26ull,
- 0x7F7D50266FFA639Bull},
- {0x352A775C646259DDull, 0xB2B532B472539832ull, 0x9981AE050A2FB38Cull,
- 0xE13641E804F6DC00ull},
- {0x080E005A04E73352ull, 0x0314F6EA196A210Cull, 0x29EA80869CE307A4ull,
- 0x4FABEB9ADE04BE00ull},
- {0x5674A4A533335ADFull, 0x3C7C0650FF6C585Bull, 0x384E4F8246446812ull,
- 0xAE2DADA5E0EB6D81ull},
- {0xB6CE794A89B0A1F7ull, 0x0DC2B87EC9473CDDull, 0x349A006CA2899C88ull,
- 0x4B411CB7DF6BF33Cull},
- {0xD79BB5606CE6BDAFull, 0x4040EA447818A5C1ull, 0x53D58C5710475284ull,
- 0x3DA8730E092608BAull},
- {0x5900A2DAA12E085Cull, 0x80D490C510C493DDull, 0x4BDF17B0247C8D1Bull,
- 0xA8649490D6CFCE67ull},
- {0xFBDAB07B10180D47ull, 0xED6C196BDC43E292ull, 0xE7D494077FA2791Dull,
- 0xC7108D4FD01BBF85ull},
- {0x4365D6236E6AE467ull, 0xB3D540909D4308A5ull, 0xE38207ABD4588D68ull,
- 0xBBD42849A8C92313ull},
- {0x064DB5FE415126F5ull, 0x248AF8FB29A9C595ull, 0x508633A742B3FFF7ull,
- 0x24CFDCA800C34770ull}};
-
-void RunTests() {
- // TODO(janwas): detect number of cores.
- ThreadPool pool(4);
-
- TargetBits tested = ~0U;
- tested &= VerifyImplementations(kExpected64);
- tested &= VerifyImplementations(kExpected128);
- tested &= VerifyImplementations(kExpected256);
- // Any failure causes immediate exit, so apparently all succeeded.
- HH_TARGET_NAME::ForeachTarget(tested, [](const TargetBits target) {
- printf("%10s: OK\n", TargetName(target));
- });
-
- tested = ~0U;
- tested &= VerifyCat<HHResult64>(&pool);
- tested &= VerifyCat<HHResult128>(&pool);
- tested &= VerifyCat<HHResult256>(&pool);
- HH_TARGET_NAME::ForeachTarget(tested, [](const TargetBits target) {
- printf("%10sCat: OK\n", TargetName(target));
- });
-}
-
-#ifdef HH_GOOGLETEST
-TEST(HighwayhashTest, OutputMatchesExpectations) { RunTests(); }
-#endif
-
-} // namespace
-} // namespace highwayhash
-
-#ifndef HH_GOOGLETEST
-int main(int argc, char* argv[]) {
- highwayhash::RunTests();
- return 0;
-}
-#endif
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Ensures each implementation of HighwayHash returns consistent and unchanging
+// hash values.
+
+#include "highwayhash/highwayhash_test_target.h"
+
+#include <stddef.h>
+#include <atomic>
+#include <cstdio>
+#include <cstdlib>
+#include <vector>
+
+#ifdef HH_GOOGLETEST
+#include "testing/base/public/gunit.h"
+#endif
+
+#include "highwayhash/data_parallel.h"
+#include "highwayhash/instruction_sets.h"
+
+// Define to nonzero in order to print the (new) golden outputs.
+#define PRINT_RESULTS 0
+
+namespace highwayhash {
+namespace {
+
+// Known-good outputs are verified for all lengths in [0, 64].
+const size_t kMaxSize = 64;
+
+#if PRINT_RESULTS
+void Print(const HHResult64 result) { printf("0x%016lXull,\n", result); }
+
+// For HHResult128/256.
+template <int kNumLanes>
+void Print(const HHResult64 (&result)[kNumLanes]) {
+ printf("{ ");
+ for (int i = 0; i < kNumLanes; ++i) {
+ if (i != 0) {
+ printf(", ");
+ }
+ printf("0x%016lXull", result[i]);
+ }
+ printf("},\n");
+}
+#endif // PRINT_RESULTS
+
+// Called when any test fails; exits immediately because one mismatch usually
+// implies many others.
+void OnFailure(const char* target_name, const size_t size) {
+ printf("Mismatch at size %zu\n", size);
+#ifdef HH_GOOGLETEST
+ EXPECT_TRUE(false);
+#endif
+ exit(1);
+}
+
+// Verifies every combination of implementation and input size. Returns which
+// targets were run/verified.
+template <typename Result>
+TargetBits VerifyImplementations(const Result (&known_good)[kMaxSize + 1]) {
+ const HHKey key = {0x0706050403020100ULL, 0x0F0E0D0C0B0A0908ULL,
+ 0x1716151413121110ULL, 0x1F1E1D1C1B1A1918ULL};
+
+ TargetBits targets = ~0U;
+
+ // For each test input: empty string, 00, 00 01, ...
+ char in[kMaxSize + 1] = {0};
+ // Fast enough that we don't need a thread pool.
+ for (uint64_t size = 0; size <= kMaxSize; ++size) {
+ in[size] = static_cast<char>(size);
+#if PRINT_RESULTS
+ Result actual;
+ targets &= InstructionSets::Run<HighwayHash>(key, in, size, &actual);
+ Print(actual);
+#else
+ const Result* expected = &known_good[size];
+ targets &= InstructionSets::RunAll<HighwayHashTest>(key, in, size, expected,
+ &OnFailure);
+#endif
+ }
+ return targets;
+}
+
+// Cat
+
+void OnCatFailure(const char* target_name, const size_t size) {
+ printf("Cat mismatch at size %zu\n", size);
+#ifdef HH_GOOGLETEST
+ EXPECT_TRUE(false);
+#endif
+ exit(1);
+}
+
+// Returns which targets were run/verified.
+template <typename Result>
+TargetBits VerifyCat(ThreadPool* pool) {
+ // Reversed order vs prior test.
+ const HHKey key = {0x1F1E1D1C1B1A1918ULL, 0x1716151413121110ULL,
+ 0x0F0E0D0C0B0A0908ULL, 0x0706050403020100ULL};
+
+ const size_t kMaxSize = 3 * 35;
+ std::vector<char> flat;
+ flat.reserve(kMaxSize);
+ srand(129);
+ for (size_t size = 0; size < kMaxSize; ++size) {
+ flat.push_back(static_cast<char>(rand() & 0xFF));
+ }
+
+ std::atomic<TargetBits> targets{~0U};
+
+ pool->Run(0, kMaxSize, [&key, &flat, &targets](const uint32_t i) {
+ Result dummy;
+ targets.fetch_and(InstructionSets::RunAll<HighwayHashCatTest>(
+ key, flat.data(), i, &dummy, &OnCatFailure));
+ });
+ return targets.load();
+}
+
+const HHResult64 kExpected64[kMaxSize + 1] = {
+ 0x907A56DE22C26E53ull, 0x7EAB43AAC7CDDD78ull, 0xB8D0569AB0B53D62ull,
+ 0x5C6BEFAB8A463D80ull, 0xF205A46893007EDAull, 0x2B8A1668E4A94541ull,
+ 0xBD4CCC325BEFCA6Full, 0x4D02AE1738F59482ull, 0xE1205108E55F3171ull,
+ 0x32D2644EC77A1584ull, 0xF6E10ACDB103A90Bull, 0xC3BBF4615B415C15ull,
+ 0x243CC2040063FA9Cull, 0xA89A58CE65E641FFull, 0x24B031A348455A23ull,
+ 0x40793F86A449F33Bull, 0xCFAB3489F97EB832ull, 0x19FE67D2C8C5C0E2ull,
+ 0x04DD90A69C565CC2ull, 0x75D9518E2371C504ull, 0x38AD9B1141D3DD16ull,
+ 0x0264432CCD8A70E0ull, 0xA9DB5A6288683390ull, 0xD7B05492003F028Cull,
+ 0x205F615AEA59E51Eull, 0xEEE0C89621052884ull, 0x1BFC1A93A7284F4Full,
+ 0x512175B5B70DA91Dull, 0xF71F8976A0A2C639ull, 0xAE093FEF1F84E3E7ull,
+ 0x22CA92B01161860Full, 0x9FC7007CCF035A68ull, 0xA0C964D9ECD580FCull,
+ 0x2C90F73CA03181FCull, 0x185CF84E5691EB9Eull, 0x4FC1F5EF2752AA9Bull,
+ 0xF5B7391A5E0A33EBull, 0xB9B84B83B4E96C9Cull, 0x5E42FE712A5CD9B4ull,
+ 0xA150F2F90C3F97DCull, 0x7FA522D75E2D637Dull, 0x181AD0CC0DFFD32Bull,
+ 0x3889ED981E854028ull, 0xFB4297E8C586EE2Dull, 0x6D064A45BB28059Cull,
+ 0x90563609B3EC860Cull, 0x7AA4FCE94097C666ull, 0x1326BAC06B911E08ull,
+ 0xB926168D2B154F34ull, 0x9919848945B1948Dull, 0xA2A98FC534825EBEull,
+ 0xE9809095213EF0B6ull, 0x582E5483707BC0E9ull, 0x086E9414A88A6AF5ull,
+ 0xEE86B98D20F6743Dull, 0xF89B7FF609B1C0A7ull, 0x4C7D9CC19E22C3E8ull,
+ 0x9A97005024562A6Full, 0x5DD41CF423E6EBEFull, 0xDF13609C0468E227ull,
+ 0x6E0DA4F64188155Aull, 0xB755BA4B50D7D4A1ull, 0x887A3484647479BDull,
+ 0xAB8EEBE9BF2139A0ull, 0x75542C5D4CD2A6FFull};
+
+const HHResult128 kExpected128[kMaxSize + 1] = {
+ {0x0679D1E884C28A7Cull, 0x2BCA2547F904748Dull},
+ {0x7F3A39BCC2D897B9ull, 0x4A7E113CA064D91Full},
+ {0x6AB34B92C5AB85BFull, 0xED7AC546689D76C2ull},
+ {0xAC6AF8405A4A7DBEull, 0xD78FB7953256C3E1ull},
+ {0x5A6E8CF789B86448ull, 0x834EF47C1BEDC218ull},
+ {0x8EBFE0B573F425A3ull, 0xBCFCC410CB84325Aull},
+ {0xA1E19717CAB8F1D6ull, 0x2AA50671881F877Dull},
+ {0x0B595302950DA1ECull, 0x46932DE27204B388ull},
+ {0x02FB033F200F89D4ull, 0xFEC3D7BB3B421F92ull},
+ {0x0A5479D46CC1EADEull, 0x0C16A2D5A0F1C3DEull},
+ {0xF759E41DDD621106ull, 0xB43D70116E004750ull},
+ {0x980010BC36A4E98Full, 0x27479317AE00BBD1ull},
+ {0x3BABF3B23761A379ull, 0xACCDC28E0256F326ull},
+ {0x5780CD04269E142Eull, 0xBB70EE3F23BDEDA9ull},
+ {0x4A401F1937E99EC3ull, 0x4B3D1385D6B4E214ull},
+ {0x045C6EDE080E2CB0ull, 0x7327B45D2132DC89ull},
+ {0x97E1624BEB1C1756ull, 0xB7137E1B69D45024ull},
+ {0x31DBA8E3DB0BF012ull, 0x3E66E6A78A729B16ull},
+ {0x34D6DF1B5D8AF2A7ull, 0x4F1A47FCBC39EB55ull},
+ {0xE2C6BE2D47E5DCBCull, 0xD2FF85284E307C1Full},
+ {0xDA681E06098EC892ull, 0x71AD98355019FED1ull},
+ {0xC4FBD72B1F2FC30Bull, 0x327549B6C9FDEDD5ull},
+ {0x14F429D1C20F0EB5ull, 0x228B40C92F3FA369ull},
+ {0xF5C9535333206D01ull, 0xB6FC46FCCA65F9CCull},
+ {0x3049FAD9DB729D2Dull, 0xB84C931C45F781EAull},
+ {0x7C6FFE6F3706DC04ull, 0x4F94583806AE3C62ull},
+ {0x9EF95EB28BE1CCE0ull, 0xAD9D5B96A0D15BFEull},
+ {0x63D0ED54AF2985E6ull, 0xDFAFB1B6485C1B01ull},
+ {0xA46C8A2FE498D46Cull, 0xF4DBAEC0FF03BAD6ull},
+ {0xED978A0FBB3E5158ull, 0x060D144D57FBE6FDull},
+ {0x53F1D80C8922E4E5ull, 0x1324880D932140C9ull},
+ {0xDD363B03563870CEull, 0x0DFDB79F4F34184Bull},
+ {0x4E702701AE65DB38ull, 0x1B67E0A2E2DBFB04ull},
+ {0x240DA388551D0822ull, 0x2FF1BB584AC4BD61ull},
+ {0x3FAFB8B7C26499ABull, 0x072516308E889132ull},
+ {0x0AB452339406AB22ull, 0x751DBB7FF9472D42ull},
+ {0x83BA782DB6EB1186ull, 0x4391544D9318DC29ull},
+ {0x25077ECDAAB201E8ull, 0x695E0E95446D63A2ull},
+ {0x1AF0BF12F91F17D4ull, 0x5BB8FF299368D22Cull},
+ {0x338C09CBAF701E38ull, 0xA7D24D5E7C06DC78ull},
+ {0x5AB58D6555D28B56ull, 0xE781413A9AE1310Full},
+ {0xB0281CD10BCA7B89ull, 0xF49873B45C0F7274ull},
+ {0x67EEBD6D71E57B06ull, 0x9421CB1DB54EEDDFull},
+ {0x00DAB867E37EDA65ull, 0x6477E454191E213Full},
+ {0x9AF9C4817C24C82Eull, 0xAE3A73522F311EEBull},
+ {0xD8A334E30D23C6E6ull, 0xAF57EF86CCCF12FFull},
+ {0x0353A48FC9E139DDull, 0x27D5626170A7DD0Full},
+ {0x0DA12E888EB61876ull, 0x67B17DF10CB365CDull},
+ {0x967CD764883A5E85ull, 0x570D7C9A774A6AB4ull},
+ {0xA8DF13980C81E533ull, 0x9C33FE4797F87F1Aull},
+ {0xCABB59F53AE75FF2ull, 0x6D25512E77172E7Aull},
+ {0xB24E7F0C7DA62BE7ull, 0x2442F94890F57D89ull},
+ {0x7DCBA0A5B9689BBDull, 0x700FC8D13DA4CC60ull},
+ {0x1E8E014B97A9F828ull, 0xF858EFCA33E8A502ull},
+ {0x4DAF4E31F34D10C7ull, 0x47E382D0A5A8C613ull},
+ {0x577CAB4EF626BB28ull, 0xF6ED27E594C5795Full},
+ {0x989188C958586C96ull, 0x8B3A2CB0D5B48FD9ull},
+ {0x13CC58F5A076C088ull, 0x932A0FD21D4B422Cull},
+ {0xD067380DAD885647ull, 0xC1020E396B31BB4Aull},
+ {0x47D05A73072758D0ull, 0x5CF6075A0AEB5D78ull},
+ {0x54441D7AE94E2D4Eull, 0x3B4F67953ABD3EA4ull},
+ {0xEDD4250C3733EEBCull, 0x26E365AA1167C723ull},
+ {0x92D02D2A641DA598ull, 0x3DAF5EB24A0C2A94ull},
+ {0xAE6CF7FE2D76CA56ull, 0xC7918532A42D2F5Dull},
+ {0xAD24762A08D96F1Bull, 0x729083EC59FA8DF7ull}};
+
+const HHResult256 kExpected256[kMaxSize + 1] = {
+ {0xC6DC0C823434863Full, 0x6A42CCB644CBFAD9ull, 0x18DEF6A60EA5D873ull,
+ 0x3596F663D00D1225ull},
+ {0x00518B3D2BD22424ull, 0xE5791619BF612E97ull, 0xF4DAF07017FAF99Dull,
+ 0xE36AE62C5509B5D6ull},
+ {0x81021CC5067D8526ull, 0xBEEFC1BC87A6911Aull, 0xE2AEC605F80657FEull,
+ 0x3C6576B5DF982327ull},
+ {0x118D72C0B5DB2C70ull, 0x0BE2E64BF538CA74ull, 0x667B33FE41DDAA74ull,
+ 0xB6199539303E13E1ull},
+ {0x4AC9B8B2E4FD873Bull, 0xDE0FE265A45FFC97ull, 0x1FC1476F896ADA3Bull,
+ 0x7680B4AE30B371E7ull},
+ {0x518ABC6B5E88214Full, 0xFD62A05B2B06026Bull, 0x9C978E8B38DBE795ull,
+ 0x41412401886FF054ull},
+ {0x2DEDEF0832BEA7D9ull, 0x44EFE0AEAB7944FCull, 0x09AA7C9374A1E980ull,
+ 0x714DB8B507C507FBull},
+ {0x6FA2135DE3D3D3AAull, 0xC0EEA9A890E36156ull, 0xFAC1DB8C817DB095ull,
+ 0x7B42789096836327ull},
+ {0x27257C518B1FFC5Cull, 0x26CC8E669DA1AB0Full, 0xCD7B17C661A0A680ull,
+ 0x31D0A7EC0AA3B9BFull},
+ {0xB91869900A1AF26Cull, 0x95B0D74B7FF20B43ull, 0x2A6CABF6F931B575ull,
+ 0x69734DC9E66A1965ull},
+ {0xDD7DA31F5C4DD30Full, 0x08940D249A0A7B69ull, 0xAE7D3AD1C5EA81F2ull,
+ 0x96701DB5C6602B21ull},
+ {0x2E4A230847E64687ull, 0xF96176C38E48B038ull, 0x9ED0B88A3026E1BCull,
+ 0x9AAB5DCA46FCFE19ull},
+ {0x3E5CF04BFBAC2642ull, 0x591A3581001709DFull, 0xA0288F5FA63C10A2ull,
+ 0x85B94D3641A2C108ull},
+ {0x454A95FAD8901350ull, 0x5546E8E75D2AC833ull, 0xCF5FF2ACB4B5F2C1ull,
+ 0x14F314318028D62Eull},
+ {0x0DED251FB81F34A9ull, 0xC42111DB31618AA6ull, 0xC1C3352B70B00C5Dull,
+ 0xDC8947DBC398F0C2ull},
+ {0xC591A100AB4E9E72ull, 0x4CCFD2A7B0D8D911ull, 0x6FEDFDDE1BA3F770ull,
+ 0x03E5C5A2F6E708A1ull},
+ {0x537C42CC5E7B448Aull, 0xA7343E04249B2231ull, 0x2CB51D697EFE9B6Dull,
+ 0x589D83141A699A97ull},
+ {0x3F7E6EA60343B870ull, 0x4E27E907E296D4D7ull, 0x87525BF1AABBF794ull,
+ 0x6B03C4DC206EC628ull},
+ {0x741BA4D7A856E03Cull, 0x3798422CB64C9AFAull, 0xB1D89C9720D33FDDull,
+ 0x08DE607FC4E3B5C3ull},
+ {0x77D77342C85BA466ull, 0xA01C603C58F6D97Eull, 0x342AF0A7309EA4EAull,
+ 0x9C958EB3F6A64B94ull},
+ {0x9EDCADDD1FFC763Full, 0xBD9BAA6E9BE936EFull, 0xAAB0F78F1A4A94F7ull,
+ 0xE71D9CA601DA4C02ull},
+ {0xE3AA0D0A422BF888ull, 0x07734C8173411035ull, 0x8A085019DE545AF6ull,
+ 0xBC3C520B1221A779ull},
+ {0x16170C02C5E5439Dull, 0x45C6004513BFC174ull, 0x35CF3AD65D225EC8ull,
+ 0xE10BAA702D37C90Eull},
+ {0x6BD63B47EA43ABC6ull, 0xCC08BE8A651E24C0ull, 0xB564F0FC6FF8998Aull,
+ 0x3EE409A34232E589ull},
+ {0xD6CEE5574355BB81ull, 0x8E31FF40B271A16Dull, 0xC3ECEDBEEACCCAE9ull,
+ 0x19386CD3A23B92E9ull},
+ {0x32475E05D248DBB1ull, 0xF2396A122830E72Cull, 0xB88395678C0DB899ull,
+ 0x8BD410A22A247066ull},
+ {0x0BFA3B3C4775EB43ull, 0x496596C36FB2A200ull, 0xA00F533EF150D7DDull,
+ 0xB5D70BBCABB572C4ull},
+ {0x932B0ED33ED691B1ull, 0xB58394EDCEA3C53Dull, 0xB935E0786B132755ull,
+ 0x3E0998322B3F74BAull},
+ {0xE21F2CE1BDD156A7ull, 0x764518A56E1363B5ull, 0x461251D3EC39B93Full,
+ 0x33C1FE46C9664CC4ull},
+ {0x8ABD3F6184C9CD7Dull, 0x8195816637017FC0ull, 0x284B3E93524765DEull,
+ 0x56147BDBA9362D0Eull},
+ {0x1F050672342807B6ull, 0x9B0AD1091A83910Dull, 0xF23AD4A58C3B1E21ull,
+ 0xCC986EC0BEA16781ull},
+ {0x053164DEF96B10CEull, 0x1D5ADA15E36D8F6Cull, 0x06FB43534C0472EFull,
+ 0x021C0ED1FDEA0948ull},
+ {0xF62BA4C5A665E602ull, 0x490D89FD89430C56ull, 0x18F423BE8A9B7E3Cull,
+ 0x769E5DDA4DCAC619ull},
+ {0xDABD25FAF07A6684ull, 0xACA85CD21536B927ull, 0xAC05E050B4E3D3D1ull,
+ 0xBE427B2475CCD981ull},
+ {0x89A2B35A34F89F8Cull, 0x1A0E51B2875D34E6ull, 0xBA573CF45E123919ull,
+ 0x1C50815B08F1138Aull},
+ {0x3390CCBE60F2AFF7ull, 0xD9E2D245643E79C2ull, 0x1104A78F85D3CDF5ull,
+ 0x7E55F38F9C53A58Full},
+ {0xC189AE1A9D456C0Eull, 0x06AA4C3D4204A40Full, 0x4B383405A9D451A9ull,
+ 0x7EA34CBCAEF0C31Eull},
+ {0xB45FA7CC19AE4DDFull, 0x306C418E9BA67420ull, 0xDF16D80D4D48C096ull,
+ 0xD3169E50BC8D75CCull},
+ {0x5894367013710C89ull, 0xD39EE6D584E76AF3ull, 0x5C55A414BCDDE505ull,
+ 0x8FA97D561CB174BFull},
+ {0x87355749D59F39DDull, 0x26B8B311E72C50F4ull, 0x1911A8CBCE53E37Bull,
+ 0x5C256452C39B95F6ull},
+ {0x8B9E87C9ABC82821ull, 0x12A5FC06B69CDC2Dull, 0xF95104FF805E5E1Dull,
+ 0xE5D4D2257AD5592Eull},
+ {0x5A89242B02E1E048ull, 0x771602AAD1880A7Eull, 0x0F34507608387843ull,
+ 0x7AFB45F3EA4F0F24ull},
+ {0x3BE3800150FDDE00ull, 0x7871908FF91AD81Aull, 0xA00E07F351BB15C1ull,
+ 0x429658E7FD10D11Aull},
+ {0x2B2B1A6CD1BA454Cull, 0xF19E8CA5C022308Aull, 0xAEFA0EB6F7C3CF74ull,
+ 0x21F4330A5258E7C7ull},
+ {0xD1C806622910A9BEull, 0xFE224EF598F541B1ull, 0xB95A435AEC4DD849ull,
+ 0xD942A277AB57E68Eull},
+ {0x16BF7116E8D2B328ull, 0xB37DC98EA931FC13ull, 0x18E8859A592C8C11ull,
+ 0x11590F16C4C61716ull},
+ {0xD046122D4C7B24AEull, 0xBD0899DFD7345611ull, 0x91AAECB50DE6DFF9ull,
+ 0x6EDC4896BAA90FFAull},
+ {0x2FE97B8135EA956Dull, 0xFBA50900FB4EF23Cull, 0x0BC907363F7EA368ull,
+ 0xA5C982D3094BCEE2ull},
+ {0x247BFB5BA3A0F245ull, 0x6ACBDD4AFFDB03EBull, 0xA4237427D373B619ull,
+ 0xFA9C041D302B728Cull},
+ {0xF93109909D6B80EFull, 0xD1321A6BEE302794ull, 0xD63E1E7985C458D3ull,
+ 0x644CD44F6C6FDE95ull},
+ {0xD0522C663FBE65B0ull, 0x78F366F302EA33F5ull, 0xB9ED66D1CB87C891ull,
+ 0x0CEB2298BA9D1C1Aull},
+ {0x60D60E9B569264E8ull, 0xE34447A5741417EAull, 0x04522108BDF3AFC3ull,
+ 0x90F4FE2D585B25FAull},
+ {0xAF411662AAB81B12ull, 0x3AD58EBBA1BA2F39ull, 0x73E0E8EB5879E37Dull,
+ 0xCE0E8F8F613D3FC5ull},
+ {0xCA756CB9E1FDF1C6ull, 0x89731D81712D34BDull, 0xBF520B2D830959C2ull,
+ 0xD35ED12BB24CE9EFull},
+ {0x5FB2B65ABF038045ull, 0x3F2D32F8532E14D6ull, 0x06443CC95CDD58C8ull,
+ 0x30FC6FBE8CCE8EB8ull},
+ {0x94A9774F02848D73ull, 0x83F9AFC4C0B48768ull, 0xDB7BF5FBD9B25A26ull,
+ 0x7F7D50266FFA639Bull},
+ {0x352A775C646259DDull, 0xB2B532B472539832ull, 0x9981AE050A2FB38Cull,
+ 0xE13641E804F6DC00ull},
+ {0x080E005A04E73352ull, 0x0314F6EA196A210Cull, 0x29EA80869CE307A4ull,
+ 0x4FABEB9ADE04BE00ull},
+ {0x5674A4A533335ADFull, 0x3C7C0650FF6C585Bull, 0x384E4F8246446812ull,
+ 0xAE2DADA5E0EB6D81ull},
+ {0xB6CE794A89B0A1F7ull, 0x0DC2B87EC9473CDDull, 0x349A006CA2899C88ull,
+ 0x4B411CB7DF6BF33Cull},
+ {0xD79BB5606CE6BDAFull, 0x4040EA447818A5C1ull, 0x53D58C5710475284ull,
+ 0x3DA8730E092608BAull},
+ {0x5900A2DAA12E085Cull, 0x80D490C510C493DDull, 0x4BDF17B0247C8D1Bull,
+ 0xA8649490D6CFCE67ull},
+ {0xFBDAB07B10180D47ull, 0xED6C196BDC43E292ull, 0xE7D494077FA2791Dull,
+ 0xC7108D4FD01BBF85ull},
+ {0x4365D6236E6AE467ull, 0xB3D540909D4308A5ull, 0xE38207ABD4588D68ull,
+ 0xBBD42849A8C92313ull},
+ {0x064DB5FE415126F5ull, 0x248AF8FB29A9C595ull, 0x508633A742B3FFF7ull,
+ 0x24CFDCA800C34770ull}};
+
+void RunTests() {
+ // TODO(janwas): detect number of cores.
+ ThreadPool pool(4);
+
+ TargetBits tested = ~0U;
+ tested &= VerifyImplementations(kExpected64);
+ tested &= VerifyImplementations(kExpected128);
+ tested &= VerifyImplementations(kExpected256);
+ // Any failure causes immediate exit, so apparently all succeeded.
+ HH_TARGET_NAME::ForeachTarget(tested, [](const TargetBits target) {
+ printf("%10s: OK\n", TargetName(target));
+ });
+
+ tested = ~0U;
+ tested &= VerifyCat<HHResult64>(&pool);
+ tested &= VerifyCat<HHResult128>(&pool);
+ tested &= VerifyCat<HHResult256>(&pool);
+ HH_TARGET_NAME::ForeachTarget(tested, [](const TargetBits target) {
+ printf("%10sCat: OK\n", TargetName(target));
+ });
+}
+
+#ifdef HH_GOOGLETEST
+TEST(HighwayhashTest, OutputMatchesExpectations) { RunTests(); }
+#endif
+
+} // namespace
+} // namespace highwayhash
+
+#ifndef HH_GOOGLETEST
+int main(int argc, char* argv[]) {
+ highwayhash::RunTests();
+ return 0;
+}
+#endif
diff --git a/contrib/libs/highwayhash/highwayhash/highwayhash_test_avx2.cc b/contrib/libs/highwayhash/highwayhash/highwayhash_test_avx2.cc
index 6e12132e8c..f1efe0b5f0 100644
--- a/contrib/libs/highwayhash/highwayhash/highwayhash_test_avx2.cc
+++ b/contrib/libs/highwayhash/highwayhash/highwayhash_test_avx2.cc
@@ -1,19 +1,19 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// WARNING: this is a "restricted" source file; avoid including any headers
-// unless they are also restricted. See arch_specific.h for details.
-
-#define HH_TARGET_NAME AVX2
-#include "highwayhash/highwayhash_test_target.cc"
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// WARNING: this is a "restricted" source file; avoid including any headers
+// unless they are also restricted. See arch_specific.h for details.
+
+#define HH_TARGET_NAME AVX2
+#include "highwayhash/highwayhash_test_target.cc"
diff --git a/contrib/libs/highwayhash/highwayhash/highwayhash_test_portable.cc b/contrib/libs/highwayhash/highwayhash/highwayhash_test_portable.cc
index e5bee564a7..04930a7e12 100644
--- a/contrib/libs/highwayhash/highwayhash/highwayhash_test_portable.cc
+++ b/contrib/libs/highwayhash/highwayhash/highwayhash_test_portable.cc
@@ -1,19 +1,19 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// WARNING: this is a "restricted" source file; avoid including any headers
-// unless they are also restricted. See arch_specific.h for details.
-
-#define HH_TARGET_NAME Portable
-#include "highwayhash/highwayhash_test_target.cc"
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// WARNING: this is a "restricted" source file; avoid including any headers
+// unless they are also restricted. See arch_specific.h for details.
+
+#define HH_TARGET_NAME Portable
+#include "highwayhash/highwayhash_test_target.cc"
diff --git a/contrib/libs/highwayhash/highwayhash/highwayhash_test_sse41.cc b/contrib/libs/highwayhash/highwayhash/highwayhash_test_sse41.cc
index 1ae43bcca9..2d6e83d66f 100644
--- a/contrib/libs/highwayhash/highwayhash/highwayhash_test_sse41.cc
+++ b/contrib/libs/highwayhash/highwayhash/highwayhash_test_sse41.cc
@@ -1,19 +1,19 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// WARNING: this is a "restricted" source file; avoid including any headers
-// unless they are also restricted. See arch_specific.h for details.
-
-#define HH_TARGET_NAME SSE41
-#include "highwayhash/highwayhash_test_target.cc"
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// WARNING: this is a "restricted" source file; avoid including any headers
+// unless they are also restricted. See arch_specific.h for details.
+
+#define HH_TARGET_NAME SSE41
+#include "highwayhash/highwayhash_test_target.cc"
diff --git a/contrib/libs/highwayhash/highwayhash/highwayhash_test_target.cc b/contrib/libs/highwayhash/highwayhash/highwayhash_test_target.cc
index b00704b83c..701c14b927 100644
--- a/contrib/libs/highwayhash/highwayhash/highwayhash_test_target.cc
+++ b/contrib/libs/highwayhash/highwayhash/highwayhash_test_target.cc
@@ -1,211 +1,211 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// WARNING: this is a "restricted" source file; avoid including any headers
-// unless they are also restricted. See arch_specific.h for details.
-
-#include "highwayhash/highwayhash_test_target.h"
-
-#include "highwayhash/highwayhash.h"
-
-#ifndef HH_DISABLE_TARGET_SPECIFIC
-namespace highwayhash {
-namespace {
-
-void NotifyIfUnequal(const size_t size, const HHResult64& expected,
- const HHResult64& actual, const HHNotify notify) {
- if (expected != actual) {
- (*notify)(TargetName(HH_TARGET), size);
- }
-}
-
-// Overload for HHResult128 or HHResult256 (arrays).
-template <size_t kNumLanes>
-void NotifyIfUnequal(const size_t size, const uint64_t (&expected)[kNumLanes],
- const uint64_t (&actual)[kNumLanes],
- const HHNotify notify) {
- for (size_t i = 0; i < kNumLanes; ++i) {
- if (expected[i] != actual[i]) {
- (*notify)(TargetName(HH_TARGET), size);
- return;
- }
- }
-}
-
-// Shared logic for all HighwayHashTest::operator() overloads.
-template <typename Result>
-void TestHighwayHash(HHStateT<HH_TARGET>* HH_RESTRICT state,
- const char* HH_RESTRICT bytes, const size_t size,
- const Result* expected, const HHNotify notify) {
- Result actual;
- HighwayHashT(state, bytes, size, &actual);
- NotifyIfUnequal(size, *expected, actual, notify);
-}
-
-// Shared logic for all HighwayHashCatTest::operator() overloads.
-template <typename Result>
-void TestHighwayHashCat(const HHKey& key, const char* HH_RESTRICT bytes,
- const size_t size, const Result* expected,
- const HHNotify notify) {
- // Slightly faster to compute the expected prefix hashes only once.
- // Use new instead of vector to avoid headers with inline functions.
- Result* results = new Result[size + 1];
- for (size_t i = 0; i <= size; ++i) {
- HHStateT<HH_TARGET> state_flat(key);
- HighwayHashT(&state_flat, bytes, i, &results[i]);
- }
-
- // Splitting into three fragments/Append should cover all codepaths.
- const size_t max_fragment_size = size / 3;
- for (size_t size1 = 0; size1 < max_fragment_size; ++size1) {
- for (size_t size2 = 0; size2 < max_fragment_size; ++size2) {
- for (size_t size3 = 0; size3 < max_fragment_size; ++size3) {
- HighwayHashCatT<HH_TARGET> cat(key);
- const char* pos = bytes;
- cat.Append(pos, size1);
- pos += size1;
- cat.Append(pos, size2);
- pos += size2;
- cat.Append(pos, size3);
- pos += size3;
-
- Result result_cat;
- cat.Finalize(&result_cat);
-
- const size_t total_size = pos - bytes;
- NotifyIfUnequal(total_size, results[total_size], result_cat, notify);
- }
- }
- }
-
- delete[] results;
-}
-
-} // namespace
-
-template <TargetBits Target>
-void HighwayHashTest<Target>::operator()(const HHKey& key,
- const char* HH_RESTRICT bytes,
- const size_t size,
- const HHResult64* expected,
- const HHNotify notify) const {
- HHStateT<Target> state(key);
- TestHighwayHash(&state, bytes, size, expected, notify);
-}
-
-template <TargetBits Target>
-void HighwayHashTest<Target>::operator()(const HHKey& key,
- const char* HH_RESTRICT bytes,
- const size_t size,
- const HHResult128* expected,
- const HHNotify notify) const {
- HHStateT<Target> state(key);
- TestHighwayHash(&state, bytes, size, expected, notify);
-}
-
-template <TargetBits Target>
-void HighwayHashTest<Target>::operator()(const HHKey& key,
- const char* HH_RESTRICT bytes,
- const size_t size,
- const HHResult256* expected,
- const HHNotify notify) const {
- HHStateT<Target> state(key);
- TestHighwayHash(&state, bytes, size, expected, notify);
-}
-
-template <TargetBits Target>
-void HighwayHashCatTest<Target>::operator()(const HHKey& key,
- const char* HH_RESTRICT bytes,
- const uint64_t size,
- const HHResult64* expected,
- const HHNotify notify) const {
- TestHighwayHashCat(key, bytes, size, expected, notify);
-}
-
-template <TargetBits Target>
-void HighwayHashCatTest<Target>::operator()(const HHKey& key,
- const char* HH_RESTRICT bytes,
- const uint64_t size,
- const HHResult128* expected,
- const HHNotify notify) const {
- TestHighwayHashCat(key, bytes, size, expected, notify);
-}
-
-template <TargetBits Target>
-void HighwayHashCatTest<Target>::operator()(const HHKey& key,
- const char* HH_RESTRICT bytes,
- const uint64_t size,
- const HHResult256* expected,
- const HHNotify notify) const {
- TestHighwayHashCat(key, bytes, size, expected, notify);
-}
-
-// Instantiate for the current target.
-template struct HighwayHashTest<HH_TARGET>;
-template struct HighwayHashCatTest<HH_TARGET>;
-
-//-----------------------------------------------------------------------------
-// benchmark
-
-namespace {
-
-template <TargetBits Target>
-uint64_t RunHighway(const size_t size) {
- static const HHKey key HH_ALIGNAS(32) = {0, 1, 2, 3};
- char in[kMaxBenchmarkInputSize];
- in[0] = static_cast<char>(size & 0xFF);
- HHResult64 result;
- HHStateT<Target> state(key);
- HighwayHashT(&state, in, size, &result);
- return result;
-}
-
-template <TargetBits Target>
-uint64_t RunHighwayCat(const size_t size) {
- static const HHKey key HH_ALIGNAS(32) = {0, 1, 2, 3};
- HH_ALIGNAS(64) HighwayHashCatT<Target> cat(key);
- char in[kMaxBenchmarkInputSize];
- in[0] = static_cast<char>(size & 0xFF);
- const size_t half_size = size / 2;
- cat.Append(in, half_size);
- cat.Append(in + half_size, size - half_size);
- HHResult64 result;
- cat.Finalize(&result);
- return result;
-}
-
-} // namespace
-
-template <TargetBits Target>
-void HighwayHashBenchmark<Target>::operator()(DurationsForInputs* input_map,
- NotifyBenchmark notify,
- void* context) const {
- MeasureDurations(&RunHighway<Target>, input_map);
- notify("HighwayHash", TargetName(Target), input_map, context);
-}
-
-template <TargetBits Target>
-void HighwayHashCatBenchmark<Target>::operator()(DurationsForInputs* input_map,
- NotifyBenchmark notify,
- void* context) const {
- MeasureDurations(&RunHighwayCat<Target>, input_map);
- notify("HighwayHashCat", TargetName(Target), input_map, context);
-}
-
-// Instantiate for the current target.
-template struct HighwayHashBenchmark<HH_TARGET>;
-template struct HighwayHashCatBenchmark<HH_TARGET>;
-
-} // namespace highwayhash
-#endif // HH_DISABLE_TARGET_SPECIFIC
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// WARNING: this is a "restricted" source file; avoid including any headers
+// unless they are also restricted. See arch_specific.h for details.
+
+#include "highwayhash/highwayhash_test_target.h"
+
+#include "highwayhash/highwayhash.h"
+
+#ifndef HH_DISABLE_TARGET_SPECIFIC
+namespace highwayhash {
+namespace {
+
+void NotifyIfUnequal(const size_t size, const HHResult64& expected,
+ const HHResult64& actual, const HHNotify notify) {
+ if (expected != actual) {
+ (*notify)(TargetName(HH_TARGET), size);
+ }
+}
+
+// Overload for HHResult128 or HHResult256 (arrays).
+template <size_t kNumLanes>
+void NotifyIfUnequal(const size_t size, const uint64_t (&expected)[kNumLanes],
+ const uint64_t (&actual)[kNumLanes],
+ const HHNotify notify) {
+ for (size_t i = 0; i < kNumLanes; ++i) {
+ if (expected[i] != actual[i]) {
+ (*notify)(TargetName(HH_TARGET), size);
+ return;
+ }
+ }
+}
+
+// Shared logic for all HighwayHashTest::operator() overloads.
+template <typename Result>
+void TestHighwayHash(HHStateT<HH_TARGET>* HH_RESTRICT state,
+ const char* HH_RESTRICT bytes, const size_t size,
+ const Result* expected, const HHNotify notify) {
+ Result actual;
+ HighwayHashT(state, bytes, size, &actual);
+ NotifyIfUnequal(size, *expected, actual, notify);
+}
+
+// Shared logic for all HighwayHashCatTest::operator() overloads.
+template <typename Result>
+void TestHighwayHashCat(const HHKey& key, const char* HH_RESTRICT bytes,
+ const size_t size, const Result* expected,
+ const HHNotify notify) {
+ // Slightly faster to compute the expected prefix hashes only once.
+ // Use new instead of vector to avoid headers with inline functions.
+ Result* results = new Result[size + 1];
+ for (size_t i = 0; i <= size; ++i) {
+ HHStateT<HH_TARGET> state_flat(key);
+ HighwayHashT(&state_flat, bytes, i, &results[i]);
+ }
+
+ // Splitting into three fragments/Append should cover all codepaths.
+ const size_t max_fragment_size = size / 3;
+ for (size_t size1 = 0; size1 < max_fragment_size; ++size1) {
+ for (size_t size2 = 0; size2 < max_fragment_size; ++size2) {
+ for (size_t size3 = 0; size3 < max_fragment_size; ++size3) {
+ HighwayHashCatT<HH_TARGET> cat(key);
+ const char* pos = bytes;
+ cat.Append(pos, size1);
+ pos += size1;
+ cat.Append(pos, size2);
+ pos += size2;
+ cat.Append(pos, size3);
+ pos += size3;
+
+ Result result_cat;
+ cat.Finalize(&result_cat);
+
+ const size_t total_size = pos - bytes;
+ NotifyIfUnequal(total_size, results[total_size], result_cat, notify);
+ }
+ }
+ }
+
+ delete[] results;
+}
+
+} // namespace
+
+template <TargetBits Target>
+void HighwayHashTest<Target>::operator()(const HHKey& key,
+ const char* HH_RESTRICT bytes,
+ const size_t size,
+ const HHResult64* expected,
+ const HHNotify notify) const {
+ HHStateT<Target> state(key);
+ TestHighwayHash(&state, bytes, size, expected, notify);
+}
+
+template <TargetBits Target>
+void HighwayHashTest<Target>::operator()(const HHKey& key,
+ const char* HH_RESTRICT bytes,
+ const size_t size,
+ const HHResult128* expected,
+ const HHNotify notify) const {
+ HHStateT<Target> state(key);
+ TestHighwayHash(&state, bytes, size, expected, notify);
+}
+
+template <TargetBits Target>
+void HighwayHashTest<Target>::operator()(const HHKey& key,
+ const char* HH_RESTRICT bytes,
+ const size_t size,
+ const HHResult256* expected,
+ const HHNotify notify) const {
+ HHStateT<Target> state(key);
+ TestHighwayHash(&state, bytes, size, expected, notify);
+}
+
+template <TargetBits Target>
+void HighwayHashCatTest<Target>::operator()(const HHKey& key,
+ const char* HH_RESTRICT bytes,
+ const uint64_t size,
+ const HHResult64* expected,
+ const HHNotify notify) const {
+ TestHighwayHashCat(key, bytes, size, expected, notify);
+}
+
+template <TargetBits Target>
+void HighwayHashCatTest<Target>::operator()(const HHKey& key,
+ const char* HH_RESTRICT bytes,
+ const uint64_t size,
+ const HHResult128* expected,
+ const HHNotify notify) const {
+ TestHighwayHashCat(key, bytes, size, expected, notify);
+}
+
+template <TargetBits Target>
+void HighwayHashCatTest<Target>::operator()(const HHKey& key,
+ const char* HH_RESTRICT bytes,
+ const uint64_t size,
+ const HHResult256* expected,
+ const HHNotify notify) const {
+ TestHighwayHashCat(key, bytes, size, expected, notify);
+}
+
+// Instantiate for the current target.
+template struct HighwayHashTest<HH_TARGET>;
+template struct HighwayHashCatTest<HH_TARGET>;
+
+//-----------------------------------------------------------------------------
+// benchmark
+
+namespace {
+
+template <TargetBits Target>
+uint64_t RunHighway(const size_t size) {
+ static const HHKey key HH_ALIGNAS(32) = {0, 1, 2, 3};
+ char in[kMaxBenchmarkInputSize];
+ in[0] = static_cast<char>(size & 0xFF);
+ HHResult64 result;
+ HHStateT<Target> state(key);
+ HighwayHashT(&state, in, size, &result);
+ return result;
+}
+
+template <TargetBits Target>
+uint64_t RunHighwayCat(const size_t size) {
+ static const HHKey key HH_ALIGNAS(32) = {0, 1, 2, 3};
+ HH_ALIGNAS(64) HighwayHashCatT<Target> cat(key);
+ char in[kMaxBenchmarkInputSize];
+ in[0] = static_cast<char>(size & 0xFF);
+ const size_t half_size = size / 2;
+ cat.Append(in, half_size);
+ cat.Append(in + half_size, size - half_size);
+ HHResult64 result;
+ cat.Finalize(&result);
+ return result;
+}
+
+} // namespace
+
+template <TargetBits Target>
+void HighwayHashBenchmark<Target>::operator()(DurationsForInputs* input_map,
+ NotifyBenchmark notify,
+ void* context) const {
+ MeasureDurations(&RunHighway<Target>, input_map);
+ notify("HighwayHash", TargetName(Target), input_map, context);
+}
+
+template <TargetBits Target>
+void HighwayHashCatBenchmark<Target>::operator()(DurationsForInputs* input_map,
+ NotifyBenchmark notify,
+ void* context) const {
+ MeasureDurations(&RunHighwayCat<Target>, input_map);
+ notify("HighwayHashCat", TargetName(Target), input_map, context);
+}
+
+// Instantiate for the current target.
+template struct HighwayHashBenchmark<HH_TARGET>;
+template struct HighwayHashCatBenchmark<HH_TARGET>;
+
+} // namespace highwayhash
+#endif // HH_DISABLE_TARGET_SPECIFIC
diff --git a/contrib/libs/highwayhash/highwayhash/highwayhash_test_target.h b/contrib/libs/highwayhash/highwayhash/highwayhash_test_target.h
index 88cca8c168..b89695d346 100644
--- a/contrib/libs/highwayhash/highwayhash/highwayhash_test_target.h
+++ b/contrib/libs/highwayhash/highwayhash/highwayhash_test_target.h
@@ -1,89 +1,89 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef HIGHWAYHASH_HIGHWAYHASH_TARGET_H_
-#define HIGHWAYHASH_HIGHWAYHASH_TARGET_H_
-
-// Tests called by InstructionSets::RunAll, so we can verify all
-// implementations supported by the current CPU.
-
-// WARNING: this is a "restricted" header because it is included from
-// translation units compiled with different flags. This header and its
-// dependencies must not define any function unless it is static inline and/or
-// within namespace HH_TARGET_NAME. See arch_specific.h for details.
-
-#include <stddef.h>
-
-#include "highwayhash/arch_specific.h"
-#include "highwayhash/compiler_specific.h"
-#include "highwayhash/hh_types.h"
-#include "highwayhash/nanobenchmark.h"
-
-namespace highwayhash {
-
-// Verifies the hash result matches "expected" and calls "notify" if not.
-template <TargetBits Target>
-struct HighwayHashTest {
- void operator()(const HHKey& key, const char* HH_RESTRICT bytes,
- const size_t size, const HHResult64* expected,
- const HHNotify notify) const;
- void operator()(const HHKey& key, const char* HH_RESTRICT bytes,
- const size_t size, const HHResult128* expected,
- const HHNotify notify) const;
- void operator()(const HHKey& key, const char* HH_RESTRICT bytes,
- const size_t size, const HHResult256* expected,
- const HHNotify notify) const;
-};
-
-// For every possible partition of "bytes" into zero to three fragments,
-// verifies HighwayHashCat returns the same result as HighwayHashT of the
-// concatenated fragments, and calls "notify" if not. The value of "expected"
-// is ignored; it is only used for overloading.
-template <TargetBits Target>
-struct HighwayHashCatTest {
- void operator()(const HHKey& key, const char* HH_RESTRICT bytes,
- const uint64_t size, const HHResult64* expected,
- const HHNotify notify) const;
- void operator()(const HHKey& key, const char* HH_RESTRICT bytes,
- const uint64_t size, const HHResult128* expected,
- const HHNotify notify) const;
- void operator()(const HHKey& key, const char* HH_RESTRICT bytes,
- const uint64_t size, const HHResult256* expected,
- const HHNotify notify) const;
-};
-
-// Called by benchmark with prefix, target_name, input_map, context.
-// This function must set input_map->num_items to 0.
-using NotifyBenchmark = void (*)(const char*, const char*, DurationsForInputs*,
- void*);
-
-constexpr size_t kMaxBenchmarkInputSize = 1024;
-
-// Calls "notify" with benchmark results for the input sizes specified by
-// "input_map" (<= kMaxBenchmarkInputSize) plus a "context" parameter.
-template <TargetBits Target>
-struct HighwayHashBenchmark {
- void operator()(DurationsForInputs* input_map, NotifyBenchmark notify,
- void* context) const;
-};
-
-template <TargetBits Target>
-struct HighwayHashCatBenchmark {
- void operator()(DurationsForInputs* input_map, NotifyBenchmark notify,
- void* context) const;
-};
-
-} // namespace highwayhash
-
-#endif // HIGHWAYHASH_HIGHWAYHASH_TARGET_H_
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef HIGHWAYHASH_HIGHWAYHASH_TARGET_H_
+#define HIGHWAYHASH_HIGHWAYHASH_TARGET_H_
+
+// Tests called by InstructionSets::RunAll, so we can verify all
+// implementations supported by the current CPU.
+
+// WARNING: this is a "restricted" header because it is included from
+// translation units compiled with different flags. This header and its
+// dependencies must not define any function unless it is static inline and/or
+// within namespace HH_TARGET_NAME. See arch_specific.h for details.
+
+#include <stddef.h>
+
+#include "highwayhash/arch_specific.h"
+#include "highwayhash/compiler_specific.h"
+#include "highwayhash/hh_types.h"
+#include "highwayhash/nanobenchmark.h"
+
+namespace highwayhash {
+
+// Verifies the hash result matches "expected" and calls "notify" if not.
+template <TargetBits Target>
+struct HighwayHashTest {
+ void operator()(const HHKey& key, const char* HH_RESTRICT bytes,
+ const size_t size, const HHResult64* expected,
+ const HHNotify notify) const;
+ void operator()(const HHKey& key, const char* HH_RESTRICT bytes,
+ const size_t size, const HHResult128* expected,
+ const HHNotify notify) const;
+ void operator()(const HHKey& key, const char* HH_RESTRICT bytes,
+ const size_t size, const HHResult256* expected,
+ const HHNotify notify) const;
+};
+
+// For every possible partition of "bytes" into zero to three fragments,
+// verifies HighwayHashCat returns the same result as HighwayHashT of the
+// concatenated fragments, and calls "notify" if not. The value of "expected"
+// is ignored; it is only used for overloading.
+template <TargetBits Target>
+struct HighwayHashCatTest {
+ void operator()(const HHKey& key, const char* HH_RESTRICT bytes,
+ const uint64_t size, const HHResult64* expected,
+ const HHNotify notify) const;
+ void operator()(const HHKey& key, const char* HH_RESTRICT bytes,
+ const uint64_t size, const HHResult128* expected,
+ const HHNotify notify) const;
+ void operator()(const HHKey& key, const char* HH_RESTRICT bytes,
+ const uint64_t size, const HHResult256* expected,
+ const HHNotify notify) const;
+};
+
+// Called by benchmark with prefix, target_name, input_map, context.
+// This function must set input_map->num_items to 0.
+using NotifyBenchmark = void (*)(const char*, const char*, DurationsForInputs*,
+ void*);
+
+constexpr size_t kMaxBenchmarkInputSize = 1024;
+
+// Calls "notify" with benchmark results for the input sizes specified by
+// "input_map" (<= kMaxBenchmarkInputSize) plus a "context" parameter.
+template <TargetBits Target>
+struct HighwayHashBenchmark {
+ void operator()(DurationsForInputs* input_map, NotifyBenchmark notify,
+ void* context) const;
+};
+
+template <TargetBits Target>
+struct HighwayHashCatBenchmark {
+ void operator()(DurationsForInputs* input_map, NotifyBenchmark notify,
+ void* context) const;
+};
+
+} // namespace highwayhash
+
+#endif // HIGHWAYHASH_HIGHWAYHASH_TARGET_H_
diff --git a/contrib/libs/highwayhash/highwayhash/iaca.h b/contrib/libs/highwayhash/highwayhash/iaca.h
index 3a075544d4..80e1013ae0 100644
--- a/contrib/libs/highwayhash/highwayhash/iaca.h
+++ b/contrib/libs/highwayhash/highwayhash/iaca.h
@@ -1,63 +1,63 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef HIGHWAYHASH_IACA_H_
-#define HIGHWAYHASH_IACA_H_
-
-// WARNING: this is a "restricted" header because it is included from
-// translation units compiled with different flags. This header and its
-// dependencies must not define any function unless it is static inline and/or
-// within namespace HH_TARGET_NAME. See arch_specific.h for details.
-
-#include "highwayhash/compiler_specific.h"
-
-// IACA (Intel's Code Analyzer, go/intel-iaca) analyzes instruction latencies,
-// but only for code between special markers. These functions embed such markers
-// in an executable, but only for reading via IACA - they deliberately trigger
-// a crash if executed to ensure they are removed in normal builds.
-
-// Default off; callers must `#define HH_ENABLE_IACA 1` before including this.
-#ifndef HH_ENABLE_IACA
-#define HH_ENABLE_IACA 0
-#endif
-
-namespace highwayhash {
-
-#if HH_ENABLE_IACA && (HH_GCC_VERSION || HH_CLANG_VERSION)
-
-// Call before the region of interest. Fences hopefully prevent reordering.
-static HH_INLINE void BeginIACA() {
- HH_COMPILER_FENCE;
- asm volatile(
- ".byte 0x0F, 0x0B\n\t" // UD2
- "movl $111, %ebx\n\t"
- ".byte 0x64, 0x67, 0x90\n\t");
- HH_COMPILER_FENCE;
-}
-
-// Call after the region of interest. Fences hopefully prevent reordering.
-static HH_INLINE void EndIACA() {
- HH_COMPILER_FENCE;
- asm volatile(
- "movl $222, %ebx\n\t"
- ".byte 0x64, 0x67, 0x90\n\t"
- ".byte 0x0F, 0x0B\n\t"); // UD2
- HH_COMPILER_FENCE;
-}
-
-#endif
-
-} // namespace highwayhash
-
-#endif // HIGHWAYHASH_IACA_H_
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef HIGHWAYHASH_IACA_H_
+#define HIGHWAYHASH_IACA_H_
+
+// WARNING: this is a "restricted" header because it is included from
+// translation units compiled with different flags. This header and its
+// dependencies must not define any function unless it is static inline and/or
+// within namespace HH_TARGET_NAME. See arch_specific.h for details.
+
+#include "highwayhash/compiler_specific.h"
+
+// IACA (Intel's Code Analyzer, go/intel-iaca) analyzes instruction latencies,
+// but only for code between special markers. These functions embed such markers
+// in an executable, but only for reading via IACA - they deliberately trigger
+// a crash if executed to ensure they are removed in normal builds.
+
+// Default off; callers must `#define HH_ENABLE_IACA 1` before including this.
+#ifndef HH_ENABLE_IACA
+#define HH_ENABLE_IACA 0
+#endif
+
+namespace highwayhash {
+
+#if HH_ENABLE_IACA && (HH_GCC_VERSION || HH_CLANG_VERSION)
+
+// Call before the region of interest. Fences hopefully prevent reordering.
+static HH_INLINE void BeginIACA() {
+ HH_COMPILER_FENCE;
+ asm volatile(
+ ".byte 0x0F, 0x0B\n\t" // UD2
+ "movl $111, %ebx\n\t"
+ ".byte 0x64, 0x67, 0x90\n\t");
+ HH_COMPILER_FENCE;
+}
+
+// Call after the region of interest. Fences hopefully prevent reordering.
+static HH_INLINE void EndIACA() {
+ HH_COMPILER_FENCE;
+ asm volatile(
+ "movl $222, %ebx\n\t"
+ ".byte 0x64, 0x67, 0x90\n\t"
+ ".byte 0x0F, 0x0B\n\t"); // UD2
+ HH_COMPILER_FENCE;
+}
+
+#endif
+
+} // namespace highwayhash
+
+#endif // HIGHWAYHASH_IACA_H_
diff --git a/contrib/libs/highwayhash/highwayhash/instruction_sets.cc b/contrib/libs/highwayhash/highwayhash/instruction_sets.cc
index 5760cd6303..a02e1f81d9 100644
--- a/contrib/libs/highwayhash/highwayhash/instruction_sets.cc
+++ b/contrib/libs/highwayhash/highwayhash/instruction_sets.cc
@@ -1,141 +1,141 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "highwayhash/instruction_sets.h"
-#include "highwayhash/arch_specific.h"
-
-// Currently there are only specialized targets for X64; other architectures
-// only use HH_TARGET_Portable, in which case Supported() just returns that.
-#if HH_ARCH_X64
-
-#include <atomic>
-
-namespace highwayhash {
-
-namespace {
-
-bool IsBitSet(const uint32_t reg, const int index) {
- return (reg & (1U << index)) != 0;
-}
-
-// Returns the lower 32 bits of extended control register 0.
-// Requires CPU support for "OSXSAVE" (see below).
-uint32_t ReadXCR0() {
-#if HH_MSC_VERSION
- return static_cast<uint32_t>(_xgetbv(0));
-#else
- uint32_t xcr0, xcr0_high;
- const uint32_t index = 0;
- asm volatile(".byte 0x0F, 0x01, 0xD0"
- : "=a"(xcr0), "=d"(xcr0_high)
- : "c"(index));
- return xcr0;
-#endif
-}
-
-// 0 iff not yet initialized by Supported().
-// Not function-local => no compiler-generated locking.
-std::atomic<TargetBits> supported_{0};
-
-// Bits indicating which instruction set extensions are supported.
-enum {
- kBitSSE = 1 << 0,
- kBitSSE2 = 1 << 1,
- kBitSSE3 = 1 << 2,
- kBitSSSE3 = 1 << 3,
- kBitSSE41 = 1 << 4,
- kBitSSE42 = 1 << 5,
- kBitAVX = 1 << 6,
- kBitAVX2 = 1 << 7,
- kBitFMA = 1 << 8,
- kBitLZCNT = 1 << 9,
- kBitBMI = 1 << 10,
- kBitBMI2 = 1 << 11,
-
- kGroupAVX2 = kBitAVX | kBitAVX2 | kBitFMA | kBitLZCNT | kBitBMI | kBitBMI2,
- kGroupSSE41 = kBitSSE | kBitSSE2 | kBitSSE3 | kBitSSSE3 | kBitSSE41
-};
-
-} // namespace
-
-TargetBits InstructionSets::Supported() {
- TargetBits supported = supported_.load(std::memory_order_acquire);
- // Already initialized, return that.
- if (HH_LIKELY(supported)) {
- return supported;
- }
-
- uint32_t flags = 0;
- uint32_t abcd[4];
-
- Cpuid(0, 0, abcd);
- const uint32_t max_level = abcd[0];
-
- // Standard feature flags
- Cpuid(1, 0, abcd);
- flags |= IsBitSet(abcd[3], 25) ? kBitSSE : 0;
- flags |= IsBitSet(abcd[3], 26) ? kBitSSE2 : 0;
- flags |= IsBitSet(abcd[2], 0) ? kBitSSE3 : 0;
- flags |= IsBitSet(abcd[2], 9) ? kBitSSSE3 : 0;
- flags |= IsBitSet(abcd[2], 19) ? kBitSSE41 : 0;
- flags |= IsBitSet(abcd[2], 20) ? kBitSSE42 : 0;
- flags |= IsBitSet(abcd[2], 12) ? kBitFMA : 0;
- flags |= IsBitSet(abcd[2], 28) ? kBitAVX : 0;
- const bool has_osxsave = IsBitSet(abcd[2], 27);
-
- // Extended feature flags
- Cpuid(0x80000001U, 0, abcd);
- flags |= IsBitSet(abcd[2], 5) ? kBitLZCNT : 0;
-
- // Extended features
- if (max_level >= 7) {
- Cpuid(7, 0, abcd);
- flags |= IsBitSet(abcd[1], 3) ? kBitBMI : 0;
- flags |= IsBitSet(abcd[1], 5) ? kBitAVX2 : 0;
- flags |= IsBitSet(abcd[1], 8) ? kBitBMI2 : 0;
- }
-
- // Verify OS support for XSAVE, without which XMM/YMM registers are not
- // preserved across context switches and are not safe to use.
- if (has_osxsave) {
- const uint32_t xcr0 = ReadXCR0();
- // XMM
- if ((xcr0 & 2) == 0) {
- flags &= ~(kBitSSE | kBitSSE2 | kBitSSE3 | kBitSSSE3 | kBitSSE41 |
- kBitSSE42 | kBitAVX | kBitAVX2 | kBitFMA);
- }
- // YMM
- if ((xcr0 & 4) == 0) {
- flags &= ~(kBitAVX | kBitAVX2);
- }
- }
-
- // Also indicates "supported" has been initialized.
- supported = HH_TARGET_Portable;
-
- // Set target bit(s) if all their group's flags are all set.
- if ((flags & kGroupAVX2) == kGroupAVX2) {
- supported |= HH_TARGET_AVX2;
- }
- if ((flags & kGroupSSE41) == kGroupSSE41) {
- supported |= HH_TARGET_SSE41;
- }
-
- supported_.store(supported, std::memory_order_release);
- return supported;
-}
-
-} // namespace highwayhash
-
-#endif // HH_ARCH_X64
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "highwayhash/instruction_sets.h"
+#include "highwayhash/arch_specific.h"
+
+// Currently there are only specialized targets for X64; other architectures
+// only use HH_TARGET_Portable, in which case Supported() just returns that.
+#if HH_ARCH_X64
+
+#include <atomic>
+
+namespace highwayhash {
+
+namespace {
+
+bool IsBitSet(const uint32_t reg, const int index) {
+ return (reg & (1U << index)) != 0;
+}
+
+// Returns the lower 32 bits of extended control register 0.
+// Requires CPU support for "OSXSAVE" (see below).
+uint32_t ReadXCR0() {
+#if HH_MSC_VERSION
+ return static_cast<uint32_t>(_xgetbv(0));
+#else
+ uint32_t xcr0, xcr0_high;
+ const uint32_t index = 0;
+ asm volatile(".byte 0x0F, 0x01, 0xD0"
+ : "=a"(xcr0), "=d"(xcr0_high)
+ : "c"(index));
+ return xcr0;
+#endif
+}
+
+// 0 iff not yet initialized by Supported().
+// Not function-local => no compiler-generated locking.
+std::atomic<TargetBits> supported_{0};
+
+// Bits indicating which instruction set extensions are supported.
+enum {
+ kBitSSE = 1 << 0,
+ kBitSSE2 = 1 << 1,
+ kBitSSE3 = 1 << 2,
+ kBitSSSE3 = 1 << 3,
+ kBitSSE41 = 1 << 4,
+ kBitSSE42 = 1 << 5,
+ kBitAVX = 1 << 6,
+ kBitAVX2 = 1 << 7,
+ kBitFMA = 1 << 8,
+ kBitLZCNT = 1 << 9,
+ kBitBMI = 1 << 10,
+ kBitBMI2 = 1 << 11,
+
+ kGroupAVX2 = kBitAVX | kBitAVX2 | kBitFMA | kBitLZCNT | kBitBMI | kBitBMI2,
+ kGroupSSE41 = kBitSSE | kBitSSE2 | kBitSSE3 | kBitSSSE3 | kBitSSE41
+};
+
+} // namespace
+
+TargetBits InstructionSets::Supported() {
+ TargetBits supported = supported_.load(std::memory_order_acquire);
+ // Already initialized, return that.
+ if (HH_LIKELY(supported)) {
+ return supported;
+ }
+
+ uint32_t flags = 0;
+ uint32_t abcd[4];
+
+ Cpuid(0, 0, abcd);
+ const uint32_t max_level = abcd[0];
+
+ // Standard feature flags
+ Cpuid(1, 0, abcd);
+ flags |= IsBitSet(abcd[3], 25) ? kBitSSE : 0;
+ flags |= IsBitSet(abcd[3], 26) ? kBitSSE2 : 0;
+ flags |= IsBitSet(abcd[2], 0) ? kBitSSE3 : 0;
+ flags |= IsBitSet(abcd[2], 9) ? kBitSSSE3 : 0;
+ flags |= IsBitSet(abcd[2], 19) ? kBitSSE41 : 0;
+ flags |= IsBitSet(abcd[2], 20) ? kBitSSE42 : 0;
+ flags |= IsBitSet(abcd[2], 12) ? kBitFMA : 0;
+ flags |= IsBitSet(abcd[2], 28) ? kBitAVX : 0;
+ const bool has_osxsave = IsBitSet(abcd[2], 27);
+
+ // Extended feature flags
+ Cpuid(0x80000001U, 0, abcd);
+ flags |= IsBitSet(abcd[2], 5) ? kBitLZCNT : 0;
+
+ // Extended features
+ if (max_level >= 7) {
+ Cpuid(7, 0, abcd);
+ flags |= IsBitSet(abcd[1], 3) ? kBitBMI : 0;
+ flags |= IsBitSet(abcd[1], 5) ? kBitAVX2 : 0;
+ flags |= IsBitSet(abcd[1], 8) ? kBitBMI2 : 0;
+ }
+
+ // Verify OS support for XSAVE, without which XMM/YMM registers are not
+ // preserved across context switches and are not safe to use.
+ if (has_osxsave) {
+ const uint32_t xcr0 = ReadXCR0();
+ // XMM
+ if ((xcr0 & 2) == 0) {
+ flags &= ~(kBitSSE | kBitSSE2 | kBitSSE3 | kBitSSSE3 | kBitSSE41 |
+ kBitSSE42 | kBitAVX | kBitAVX2 | kBitFMA);
+ }
+ // YMM
+ if ((xcr0 & 4) == 0) {
+ flags &= ~(kBitAVX | kBitAVX2);
+ }
+ }
+
+ // Also indicates "supported" has been initialized.
+ supported = HH_TARGET_Portable;
+
+ // Set target bit(s) if all their group's flags are all set.
+ if ((flags & kGroupAVX2) == kGroupAVX2) {
+ supported |= HH_TARGET_AVX2;
+ }
+ if ((flags & kGroupSSE41) == kGroupSSE41) {
+ supported |= HH_TARGET_SSE41;
+ }
+
+ supported_.store(supported, std::memory_order_release);
+ return supported;
+}
+
+} // namespace highwayhash
+
+#endif // HH_ARCH_X64
diff --git a/contrib/libs/highwayhash/highwayhash/instruction_sets.h b/contrib/libs/highwayhash/highwayhash/instruction_sets.h
index 5d2251b654..88bc1bc374 100644
--- a/contrib/libs/highwayhash/highwayhash/instruction_sets.h
+++ b/contrib/libs/highwayhash/highwayhash/instruction_sets.h
@@ -1,88 +1,88 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef HIGHWAYHASH_INSTRUCTION_SETS_H_
-#define HIGHWAYHASH_INSTRUCTION_SETS_H_
-
-// Calls the best specialization of a template supported by the current CPU.
-//
-// Usage: for each dispatch site, declare a Functor template with a 'Target'
-// argument, add a source file defining its operator() and instantiating
-// Functor<HH_TARGET>, add a cc_library_for_targets rule for that source file,
-// and call InstructionSets::Run<Functor>(/*args*/).
-
-#include <utility> // std::forward
-
-#include "highwayhash/arch_specific.h" // HH_TARGET_*
-#include "highwayhash/compiler_specific.h"
-
-namespace highwayhash {
-
-// Detects TargetBits and calls specializations of a user-defined functor.
-class InstructionSets {
- public:
-// Returns bit array of HH_TARGET_* supported by the current CPU.
-// The HH_TARGET_Portable bit is guaranteed to be set.
-#if HH_ARCH_X64
- static TargetBits Supported();
-#else
- static HH_INLINE TargetBits Supported() { return HH_TARGET_Portable; }
-#endif
-
- // Chooses the best available "Target" for the current CPU, runs the
- // corresponding Func<Target>::operator()(args) and returns that Target
- // (a single bit). The overhead of dispatching is low, about 4 cycles, but
- // this should only be called infrequently (e.g. hoisting it out of loops).
- template <template <TargetBits> class Func, typename... Args>
- static HH_INLINE TargetBits Run(Args&&... args) {
-#if HH_ARCH_X64
- const TargetBits supported = Supported();
- if (supported & HH_TARGET_AVX2) {
- Func<HH_TARGET_AVX2>()(std::forward<Args>(args)...);
- return HH_TARGET_AVX2;
- }
- if (supported & HH_TARGET_SSE41) {
- Func<HH_TARGET_SSE41>()(std::forward<Args>(args)...);
- return HH_TARGET_SSE41;
- }
-#endif // HH_ARCH_X64
-
- Func<HH_TARGET_Portable>()(std::forward<Args>(args)...);
- return HH_TARGET_Portable;
- }
-
- // Calls Func<Target>::operator()(args) for all Target supported by the
- // current CPU, and returns their HH_TARGET_* bits.
- template <template <TargetBits> class Func, typename... Args>
- static HH_INLINE TargetBits RunAll(Args&&... args) {
-#if HH_ARCH_X64
- const TargetBits supported = Supported();
- if (supported & HH_TARGET_AVX2) {
- Func<HH_TARGET_AVX2>()(std::forward<Args>(args)...);
- }
- if (supported & HH_TARGET_SSE41) {
- Func<HH_TARGET_SSE41>()(std::forward<Args>(args)...);
- }
-#else
- const TargetBits supported = HH_TARGET_Portable;
-#endif // HH_ARCH_X64
-
- Func<HH_TARGET_Portable>()(std::forward<Args>(args)...);
- return supported; // i.e. all that were run
- }
-};
-
-} // namespace highwayhash
-
-#endif // HIGHWAYHASH_INSTRUCTION_SETS_H_
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef HIGHWAYHASH_INSTRUCTION_SETS_H_
+#define HIGHWAYHASH_INSTRUCTION_SETS_H_
+
+// Calls the best specialization of a template supported by the current CPU.
+//
+// Usage: for each dispatch site, declare a Functor template with a 'Target'
+// argument, add a source file defining its operator() and instantiating
+// Functor<HH_TARGET>, add a cc_library_for_targets rule for that source file,
+// and call InstructionSets::Run<Functor>(/*args*/).
+
+#include <utility> // std::forward
+
+#include "highwayhash/arch_specific.h" // HH_TARGET_*
+#include "highwayhash/compiler_specific.h"
+
+namespace highwayhash {
+
+// Detects TargetBits and calls specializations of a user-defined functor.
+class InstructionSets {
+ public:
+// Returns bit array of HH_TARGET_* supported by the current CPU.
+// The HH_TARGET_Portable bit is guaranteed to be set.
+#if HH_ARCH_X64
+ static TargetBits Supported();
+#else
+ static HH_INLINE TargetBits Supported() { return HH_TARGET_Portable; }
+#endif
+
+ // Chooses the best available "Target" for the current CPU, runs the
+ // corresponding Func<Target>::operator()(args) and returns that Target
+ // (a single bit). The overhead of dispatching is low, about 4 cycles, but
+ // this should only be called infrequently (e.g. hoisting it out of loops).
+ template <template <TargetBits> class Func, typename... Args>
+ static HH_INLINE TargetBits Run(Args&&... args) {
+#if HH_ARCH_X64
+ const TargetBits supported = Supported();
+ if (supported & HH_TARGET_AVX2) {
+ Func<HH_TARGET_AVX2>()(std::forward<Args>(args)...);
+ return HH_TARGET_AVX2;
+ }
+ if (supported & HH_TARGET_SSE41) {
+ Func<HH_TARGET_SSE41>()(std::forward<Args>(args)...);
+ return HH_TARGET_SSE41;
+ }
+#endif // HH_ARCH_X64
+
+ Func<HH_TARGET_Portable>()(std::forward<Args>(args)...);
+ return HH_TARGET_Portable;
+ }
+
+ // Calls Func<Target>::operator()(args) for all Target supported by the
+ // current CPU, and returns their HH_TARGET_* bits.
+ template <template <TargetBits> class Func, typename... Args>
+ static HH_INLINE TargetBits RunAll(Args&&... args) {
+#if HH_ARCH_X64
+ const TargetBits supported = Supported();
+ if (supported & HH_TARGET_AVX2) {
+ Func<HH_TARGET_AVX2>()(std::forward<Args>(args)...);
+ }
+ if (supported & HH_TARGET_SSE41) {
+ Func<HH_TARGET_SSE41>()(std::forward<Args>(args)...);
+ }
+#else
+ const TargetBits supported = HH_TARGET_Portable;
+#endif // HH_ARCH_X64
+
+ Func<HH_TARGET_Portable>()(std::forward<Args>(args)...);
+ return supported; // i.e. all that were run
+ }
+};
+
+} // namespace highwayhash
+
+#endif // HIGHWAYHASH_INSTRUCTION_SETS_H_
diff --git a/contrib/libs/highwayhash/highwayhash/load3.h b/contrib/libs/highwayhash/highwayhash/load3.h
index 0bf0da9c4d..e226b19520 100644
--- a/contrib/libs/highwayhash/highwayhash/load3.h
+++ b/contrib/libs/highwayhash/highwayhash/load3.h
@@ -1,144 +1,144 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef HIGHWAYHASH_HH_LOAD3_H_
-#define HIGHWAYHASH_HH_LOAD3_H_
-
-// WARNING: this is a "restricted" header because it is included from
-// translation units compiled with different flags. This header and its
-// dependencies must not define any function unless it is static inline and/or
-// within namespace HH_TARGET_NAME. See arch_specific.h for details.
-
-#include <stddef.h>
-#include <stdint.h>
-
-#include "highwayhash/arch_specific.h"
-#include "highwayhash/compiler_specific.h"
-#include "highwayhash/endianess.h"
-
-namespace highwayhash {
-// To prevent ODR violations when including this from multiple translation
-// units (TU) that are compiled with different flags, the contents must reside
-// in a namespace whose name is unique to the TU. NOTE: this behavior is
-// incompatible with precompiled modules and requires textual inclusion instead.
-namespace HH_TARGET_NAME {
-
-// Loads 0 to 3 bytes from a given location using one of several policies.
-// These are potentially faster than 8-bit loads, but require certain additional
-// promises by the caller: that 'out of bounds' memory accesses are allowed,
-// and/or that the bytes may be permuted or duplicated.
-class Load3 {
- public:
- // In increasing order of complexity:
- struct AllowReadBeforeAndReturn {};
- struct AllowReadBefore {};
- struct AllowUnordered {};
- struct AllowNone {};
-
- // Up to 4 preceding bytes may be read and returned along with the 0..3
- // valid bytes. The valid bytes are in little-endian order, except that the
- // preceding bytes occupy the least-significant bytes.
- HH_INLINE uint32_t operator()(AllowReadBeforeAndReturn, const char* from,
- const size_t size_mod4) {
- // It's safe to read before "from", so we can load 32 bits, which is faster
- // than individual byte loads. We assume little-endian byte order, so
- // big-endian platforms will need to swap. Type punning can generate
- // incorrect code if compiled with strict aliasing; the only safe
- // alternatives are memcpy and reading through char*. We must avoid memcpy
- // because string.h must not be included per the warning above. On GCC and
- // Clang, we can use a builtin instead.
- uint32_t last4;
- Copy(from + size_mod4 - 4, 4, reinterpret_cast<char*>(&last4));
- return host_from_le32(last4);
- }
-
- // As above, but preceding bytes are removed and upper byte(s) are zero.
- HH_INLINE uint64_t operator()(AllowReadBefore, const char* from,
- const size_t size_mod4) {
- // Shift 0..3 valid bytes into LSB as if loaded in little-endian order.
- // 64-bit type enables 32-bit shift when size_mod4 == 0.
- uint64_t last3 = operator()(AllowReadBeforeAndReturn(), from, size_mod4);
- last3 >>= 32 - (size_mod4 * 8);
- return last3;
- }
-
- // The bytes need not be loaded in little-endian order. This particular order
- // (and the duplication of some bytes depending on "size_mod4") was chosen for
- // computational convenience and can no longer be changed because it is part
- // of the HighwayHash length padding definition.
- HH_INLINE uint64_t operator()(AllowUnordered, const char* from,
- const size_t size_mod4) {
- uint64_t last3 = 0;
- // Not allowed to read any bytes; early-out is faster than reading from a
- // constant array of zeros.
- if (size_mod4 == 0) {
- return last3;
- }
-
- // These indices are chosen as an easy-to-compute sequence containing the
- // same elements as [0, size), but repeated and/or reordered. This enables
- // unconditional loads, which outperform conditional 8 or 16+8 bit loads.
- const uint64_t idx0 = 0;
- const uint64_t idx1 = size_mod4 >> 1;
- const uint64_t idx2 = size_mod4 - 1;
- // Store into least significant bytes (avoids one shift).
- last3 = static_cast<uint64_t>(from[idx0]);
- last3 += static_cast<uint64_t>(from[idx1]) << 8;
- last3 += static_cast<uint64_t>(from[idx2]) << 16;
- return last3;
- }
-
- // Must read exactly [0, size) bytes in little-endian order.
- HH_INLINE uint64_t operator()(AllowNone, const char* from,
- const size_t size_mod4) {
- // We need to load in little-endian order without accessing anything outside
- // [from, from + size_mod4). Unrolling is faster than looping backwards.
- uint64_t last3 = 0;
- if (size_mod4 >= 1) {
- last3 += U64FromChar(from[0]);
- }
- if (size_mod4 >= 2) {
- last3 += U64FromChar(from[1]) << 8;
- }
- if (size_mod4 == 3) {
- last3 += U64FromChar(from[2]) << 16;
- }
- return last3;
- }
-
- private:
- static HH_INLINE uint32_t U32FromChar(const char c) {
- return static_cast<uint32_t>(static_cast<unsigned char>(c));
- }
-
- static HH_INLINE uint64_t U64FromChar(const char c) {
- return static_cast<uint64_t>(static_cast<unsigned char>(c));
- }
-
- static HH_INLINE void Copy(const char* HH_RESTRICT from, const size_t size,
- char* HH_RESTRICT to) {
-#if HH_MSC_VERSION
- for (size_t i = 0; i < size; ++i) {
- to[i] = from[i];
- }
-#else
- __builtin_memcpy(to, from, size);
-#endif
- }
-};
-
-} // namespace HH_TARGET_NAME
-} // namespace highwayhash
-
-#endif // HIGHWAYHASH_LOAD3_H_
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef HIGHWAYHASH_HH_LOAD3_H_
+#define HIGHWAYHASH_HH_LOAD3_H_
+
+// WARNING: this is a "restricted" header because it is included from
+// translation units compiled with different flags. This header and its
+// dependencies must not define any function unless it is static inline and/or
+// within namespace HH_TARGET_NAME. See arch_specific.h for details.
+
+#include <stddef.h>
+#include <stdint.h>
+
+#include "highwayhash/arch_specific.h"
+#include "highwayhash/compiler_specific.h"
+#include "highwayhash/endianess.h"
+
+namespace highwayhash {
+// To prevent ODR violations when including this from multiple translation
+// units (TU) that are compiled with different flags, the contents must reside
+// in a namespace whose name is unique to the TU. NOTE: this behavior is
+// incompatible with precompiled modules and requires textual inclusion instead.
+namespace HH_TARGET_NAME {
+
+// Loads 0 to 3 bytes from a given location using one of several policies.
+// These are potentially faster than 8-bit loads, but require certain additional
+// promises by the caller: that 'out of bounds' memory accesses are allowed,
+// and/or that the bytes may be permuted or duplicated.
+class Load3 {
+ public:
+ // In increasing order of complexity:
+ struct AllowReadBeforeAndReturn {};
+ struct AllowReadBefore {};
+ struct AllowUnordered {};
+ struct AllowNone {};
+
+ // Up to 4 preceding bytes may be read and returned along with the 0..3
+ // valid bytes. The valid bytes are in little-endian order, except that the
+ // preceding bytes occupy the least-significant bytes.
+ HH_INLINE uint32_t operator()(AllowReadBeforeAndReturn, const char* from,
+ const size_t size_mod4) {
+ // It's safe to read before "from", so we can load 32 bits, which is faster
+ // than individual byte loads. We assume little-endian byte order, so
+ // big-endian platforms will need to swap. Type punning can generate
+ // incorrect code if compiled with strict aliasing; the only safe
+ // alternatives are memcpy and reading through char*. We must avoid memcpy
+ // because string.h must not be included per the warning above. On GCC and
+ // Clang, we can use a builtin instead.
+ uint32_t last4;
+ Copy(from + size_mod4 - 4, 4, reinterpret_cast<char*>(&last4));
+ return host_from_le32(last4);
+ }
+
+ // As above, but preceding bytes are removed and upper byte(s) are zero.
+ HH_INLINE uint64_t operator()(AllowReadBefore, const char* from,
+ const size_t size_mod4) {
+ // Shift 0..3 valid bytes into LSB as if loaded in little-endian order.
+ // 64-bit type enables 32-bit shift when size_mod4 == 0.
+ uint64_t last3 = operator()(AllowReadBeforeAndReturn(), from, size_mod4);
+ last3 >>= 32 - (size_mod4 * 8);
+ return last3;
+ }
+
+ // The bytes need not be loaded in little-endian order. This particular order
+ // (and the duplication of some bytes depending on "size_mod4") was chosen for
+ // computational convenience and can no longer be changed because it is part
+ // of the HighwayHash length padding definition.
+ HH_INLINE uint64_t operator()(AllowUnordered, const char* from,
+ const size_t size_mod4) {
+ uint64_t last3 = 0;
+ // Not allowed to read any bytes; early-out is faster than reading from a
+ // constant array of zeros.
+ if (size_mod4 == 0) {
+ return last3;
+ }
+
+ // These indices are chosen as an easy-to-compute sequence containing the
+ // same elements as [0, size), but repeated and/or reordered. This enables
+ // unconditional loads, which outperform conditional 8 or 16+8 bit loads.
+ const uint64_t idx0 = 0;
+ const uint64_t idx1 = size_mod4 >> 1;
+ const uint64_t idx2 = size_mod4 - 1;
+ // Store into least significant bytes (avoids one shift).
+ last3 = static_cast<uint64_t>(from[idx0]);
+ last3 += static_cast<uint64_t>(from[idx1]) << 8;
+ last3 += static_cast<uint64_t>(from[idx2]) << 16;
+ return last3;
+ }
+
+ // Must read exactly [0, size) bytes in little-endian order.
+ HH_INLINE uint64_t operator()(AllowNone, const char* from,
+ const size_t size_mod4) {
+ // We need to load in little-endian order without accessing anything outside
+ // [from, from + size_mod4). Unrolling is faster than looping backwards.
+ uint64_t last3 = 0;
+ if (size_mod4 >= 1) {
+ last3 += U64FromChar(from[0]);
+ }
+ if (size_mod4 >= 2) {
+ last3 += U64FromChar(from[1]) << 8;
+ }
+ if (size_mod4 == 3) {
+ last3 += U64FromChar(from[2]) << 16;
+ }
+ return last3;
+ }
+
+ private:
+ static HH_INLINE uint32_t U32FromChar(const char c) {
+ return static_cast<uint32_t>(static_cast<unsigned char>(c));
+ }
+
+ static HH_INLINE uint64_t U64FromChar(const char c) {
+ return static_cast<uint64_t>(static_cast<unsigned char>(c));
+ }
+
+ static HH_INLINE void Copy(const char* HH_RESTRICT from, const size_t size,
+ char* HH_RESTRICT to) {
+#if HH_MSC_VERSION
+ for (size_t i = 0; i < size; ++i) {
+ to[i] = from[i];
+ }
+#else
+ __builtin_memcpy(to, from, size);
+#endif
+ }
+};
+
+} // namespace HH_TARGET_NAME
+} // namespace highwayhash
+
+#endif // HIGHWAYHASH_LOAD3_H_
diff --git a/contrib/libs/highwayhash/highwayhash/nanobenchmark.cc b/contrib/libs/highwayhash/highwayhash/nanobenchmark.cc
index 5929016f6f..f0ba6ad35b 100644
--- a/contrib/libs/highwayhash/highwayhash/nanobenchmark.cc
+++ b/contrib/libs/highwayhash/highwayhash/nanobenchmark.cc
@@ -1,437 +1,437 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "highwayhash/nanobenchmark.h"
-
-#include <algorithm>
-#include <cmath>
-#include <cstdio>
-#include <map>
-#include <random>
-#include <vector>
-
-#include <stddef.h>
-
-#include "highwayhash/os_specific.h"
-#include "highwayhash/robust_statistics.h"
-#include "highwayhash/tsc_timer.h"
-
-namespace highwayhash {
-namespace {
-
-// Enables sanity checks that verify correct operation at the cost of
-// longer benchmark runs.
-#ifndef NANOBENCHMARK_ENABLE_CHECKS
-#define NANOBENCHMARK_ENABLE_CHECKS 0
-#endif
-
-#define NANOBENCHMARK_CHECK_ALWAYS(condition) \
- while (!(condition)) { \
- printf("Nanobenchmark check failed at line %d\n", __LINE__); \
- abort(); \
- }
-
-#if NANOBENCHMARK_ENABLE_CHECKS
-#define NANOBENCHMARK_CHECK(condition) NANOBENCHMARK_CHECK_ALWAYS(condition)
-#else
-#define NANOBENCHMARK_CHECK(condition)
-#endif
-
-#if HH_MSC_VERSION
-
-// MSVC does not support inline assembly anymore (and never supported GCC's
-// RTL constraints used below).
-#pragma optimize("", off)
-// Self-assignment with #pragma optimize("off") might be expected to prevent
-// elision, but it does not with MSVC 2015.
-void UseCharPointer(volatile const char*) {}
-#pragma optimize("", on)
-
-template <class T>
-inline void PreventElision(T&& output) {
- UseCharPointer(reinterpret_cast<volatile const char*>(&output));
-}
-
-#else
-
-// Prevents the compiler from eliding the computations that led to "output".
-// Works by indicating to the compiler that "output" is being read and modified.
-// The +r constraint avoids unnecessary writes to memory, but only works for
-// FuncOutput.
-template <class T>
-inline void PreventElision(T&& output) {
- asm volatile("" : "+r"(output) : : "memory");
-}
-
-#endif
-
-HH_NOINLINE FuncOutput Func1(const FuncInput input) { return input + 1; }
-HH_NOINLINE FuncOutput Func2(const FuncInput input) { return input + 2; }
-
-// Cycles elapsed = difference between two cycle counts. Must be unsigned to
-// ensure wraparound on overflow.
-using Duration = uint32_t;
-
-// Even with high-priority pinned threads and frequency throttling disabled,
-// elapsed times are noisy due to interrupts or SMM operations. It might help
-// to detect such events via transactions and omit affected measurements.
-// Unfortunately, TSX is currently unavailable due to a bug. We achieve
-// repeatable results with a robust measure of the central tendency ("mode").
-
-// Returns time elapsed between timer Start/Stop.
-Duration EstimateResolutionOnCurrentCPU(const Func func) {
- // Even 128K samples are not enough to achieve repeatable results when
- // throttling is enabled; the caller must perform additional aggregation.
- const size_t kNumSamples = 512;
- Duration samples[kNumSamples];
- for (size_t i = 0; i < kNumSamples; ++i) {
- const volatile Duration t0 = Start<Duration>();
- PreventElision(func(i));
- const volatile Duration t1 = Stop<Duration>();
- NANOBENCHMARK_CHECK(t0 <= t1);
- samples[i] = t1 - t0;
- }
- CountingSort(samples, samples + kNumSamples);
- const Duration resolution = Mode(samples, kNumSamples);
- NANOBENCHMARK_CHECK(resolution != 0);
- return resolution;
-}
-
-// Returns mode of EstimateResolutionOnCurrentCPU across all CPUs. This
-// increases repeatability because some CPUs may be throttled or slowed down by
-// interrupts.
-Duration EstimateResolution(const Func func_to_measure) {
- Func func = (func_to_measure == &Func2) ? &Func1 : &Func2;
-
- const size_t kNumSamples = 512;
- std::vector<Duration> resolutions;
- resolutions.reserve(kNumSamples);
-
- const auto cpus = AvailableCPUs();
- const size_t repetitions_per_cpu = kNumSamples / cpus.size();
-
- auto affinity = GetThreadAffinity();
- for (const int cpu : cpus) {
- PinThreadToCPU(cpu);
- for (size_t i = 0; i < repetitions_per_cpu; ++i) {
- resolutions.push_back(EstimateResolutionOnCurrentCPU(func));
- }
- }
- SetThreadAffinity(affinity);
- free(affinity);
-
- Duration* const begin = resolutions.data();
- CountingSort(begin, begin + resolutions.size());
- const Duration resolution = Mode(begin, resolutions.size());
- printf("Resolution %lu\n", long(resolution));
- return resolution;
-}
-
-// Returns cycles elapsed when running an empty region, i.e. the timer
-// resolution/overhead, which will be deducted from other measurements and
-// also used by InitReplicas.
-Duration Resolution(const Func func) {
- // Initialization is expensive and should only happen once.
- static const Duration resolution = EstimateResolution(func);
- return resolution;
-}
-
-// Returns cycles elapsed when passing each of "inputs" (after in-place
-// shuffling) to "func", which must return something it has computed
-// so the compiler does not optimize it away.
-Duration CyclesElapsed(const Duration resolution, const Func func,
- std::vector<FuncInput>* inputs) {
- // This benchmark attempts to measure the performance of "func" when
- // called with realistic inputs, which we assume are randomly drawn
- // from the given "inputs" distribution, so we shuffle those values.
- std::random_shuffle(inputs->begin(), inputs->end());
-
- const Duration t0 = Start<Duration>();
- for (const FuncInput input : *inputs) {
- PreventElision(func(input));
- }
- const Duration t1 = Stop<Duration>();
- const Duration elapsed = t1 - t0;
- NANOBENCHMARK_CHECK(elapsed > resolution);
- return elapsed - resolution;
-}
-
-// Stores input values for a series of calls to the function to measure.
-// We assume inputs are drawn from a known discrete probability distribution,
-// modeled as a vector<FuncInput> v. The probability of a value X
-// in v is count(v.begin(), v.end(), X) / v.size().
-class Inputs {
- Inputs(const Inputs&) = delete;
- Inputs& operator=(const Inputs&) = delete;
-
- public:
- Inputs(const Duration resolution, const std::vector<FuncInput>& distribution,
- const Func func)
- : unique_(InitUnique(distribution)),
- replicas_(InitReplicas(distribution, resolution, func)),
- num_replicas_(replicas_.size() / distribution.size()) {
- printf("NumReplicas %zu\n", num_replicas_);
- }
-
- // Returns vector of the unique values from the input distribution.
- const std::vector<FuncInput>& Unique() const { return unique_; }
-
- // Returns how many instances of "distribution" are in "replicas_", i.e.
- // the number of occurrences of an input value that occurred only once
- // in the distribution. This is the divisor for computing the duration
- // of a single call.
- size_t NumReplicas() const { return num_replicas_; }
-
- // Returns the (replicated) input distribution. Modified by caller
- // (shuffled in-place) => not thread-safe.
- std::vector<FuncInput>& Replicas() { return replicas_; }
-
- // Returns a copy of Replicas() with NumReplicas() occurrences of "input"
- // removed. Used for the leave-one-out measurement.
- std::vector<FuncInput> Without(const FuncInput input_to_remove) const {
- // "input_to_remove" should be in the original distribution.
- NANOBENCHMARK_CHECK(std::find(unique_.begin(), unique_.end(),
- input_to_remove) != unique_.end());
-
- std::vector<FuncInput> copy = replicas_;
- auto pos = std::partition(copy.begin(), copy.end(),
- [input_to_remove](const FuncInput input) {
- return input_to_remove != input;
- });
- // Must occur at least num_replicas_ times.
- NANOBENCHMARK_CHECK(copy.end() - pos >= num_replicas_);
- // (Avoids unused-variable warning.)
- PreventElision(&*pos);
- copy.resize(copy.size() - num_replicas_);
- return copy;
- }
-
- private:
- // Returns a copy with any duplicate values removed. Initializing unique_
- // through this function allows it to be const.
- static std::vector<FuncInput> InitUnique(
- const std::vector<FuncInput>& distribution) {
- std::vector<FuncInput> unique = distribution;
- std::sort(unique.begin(), unique.end());
- unique.erase(std::unique(unique.begin(), unique.end()), unique.end());
- // Our leave-one-out measurement technique only makes sense when
- // there are multiple input values.
- NANOBENCHMARK_CHECK(unique.size() >= 2);
- return unique;
- }
-
- // Returns how many replicas of "distribution" are required before
- // CyclesElapsed is large enough compared to the timer resolution.
- static std::vector<FuncInput> InitReplicas(
- const std::vector<FuncInput>& distribution, const Duration resolution,
- const Func func) {
- // We compute the difference in duration for inputs = Replicas() vs.
- // Without(). Dividing this by num_replicas must yield a value where the
- // quantization error (from the timer resolution) is sufficiently small.
- const uint64_t min_elapsed = distribution.size() * resolution * 400;
-
- std::vector<FuncInput> replicas;
- for (;;) {
- AppendReplica(distribution, &replicas);
-
-#if NANOBENCHMARK_ENABLE_CHECKS
- const uint64_t t0 = Start64();
-#endif
- const Duration elapsed = CyclesElapsed(resolution, func, &replicas);
-#if NANOBENCHMARK_ENABLE_CHECKS
- const uint64_t t1 = Stop64();
-#endif
- // Ensure the 32-bit timer didn't and won't overflow.
- NANOBENCHMARK_CHECK((t1 - t0) < (1ULL << 30));
-
- if (elapsed >= min_elapsed) {
- return replicas;
- }
- }
- }
-
- // Appends all values in "distribution" to "replicas".
- static void AppendReplica(const std::vector<FuncInput>& distribution,
- std::vector<FuncInput>* replicas) {
- replicas->reserve(replicas->size() + distribution.size());
- for (const FuncInput input : distribution) {
- replicas->push_back(input);
- }
- }
-
- const std::vector<FuncInput> unique_;
-
- // Modified by caller (shuffled in-place) => non-const.
- std::vector<FuncInput> replicas_;
-
- // Initialized from replicas_.
- const size_t num_replicas_;
-};
-
-// Holds samples of measured durations, and (robustly) reduces them to a
-// single result for each unique input value.
-class DurationSamples {
- public:
- DurationSamples(const std::vector<FuncInput>& unique_inputs,
- const size_t num_samples)
- : num_samples_(num_samples) {
- // Preallocate storage.
- for (const FuncInput input : unique_inputs) {
- samples_for_input_[input].reserve(num_samples);
- }
- }
-
- void Add(const FuncInput input, const Duration sample) {
- // "input" should be one of the values passed to the ctor.
- NANOBENCHMARK_CHECK(samples_for_input_.find(input) !=
- samples_for_input_.end());
-
- samples_for_input_[input].push_back(sample);
- }
-
- // Invokes "lambda" for each (input, duration) pair. The per-call duration
- // is the central tendency (the mode) of the samples.
- template <class Lambda>
- void Reduce(const Lambda& lambda) {
- for (auto& input_and_samples : samples_for_input_) {
- const FuncInput input = input_and_samples.first;
- std::vector<Duration>& samples = input_and_samples.second;
-
- NANOBENCHMARK_CHECK(samples.size() <= num_samples_);
- std::sort(samples.begin(), samples.end());
- const Duration duration = Mode(samples.data(), samples.size());
- lambda(input, duration);
- }
- }
-
- private:
- const size_t num_samples_;
- std::map<FuncInput, std::vector<Duration>> samples_for_input_;
-};
-
-// Gathers "num_samples" durations via repeated leave-one-out measurements.
-DurationSamples GatherDurationSamples(const Duration resolution, Inputs& inputs,
- const Func func,
- const size_t num_samples) {
- DurationSamples samples(inputs.Unique(), num_samples);
- for (size_t i = 0; i < num_samples; ++i) {
- // Total duration for all shuffled input values. This may change over time,
- // so recompute it for each sample.
- const Duration total = CyclesElapsed(resolution, func, &inputs.Replicas());
-
- for (const FuncInput input : inputs.Unique()) {
- // To isolate the durations of the calls with this input value,
- // we measure the duration without those values and subtract that
- // from the total, and later divide by NumReplicas.
- std::vector<FuncInput> without = inputs.Without(input);
- for (int rep = 0; rep < 3; ++rep) {
- const Duration elapsed = CyclesElapsed(resolution, func, &without);
- if (elapsed < total) {
- samples.Add(input, total - elapsed);
- break;
- }
- }
- }
- }
- return samples;
-}
-
-} // namespace
-
-DurationsForInputs::DurationsForInputs(const FuncInput* inputs,
- const size_t num_inputs,
- const size_t max_durations)
- : num_items(0),
- inputs_(inputs),
- num_inputs_(num_inputs),
- max_durations_(max_durations),
- all_durations_(new float[num_inputs * max_durations]) {
- NANOBENCHMARK_CHECK(num_inputs != 0);
- NANOBENCHMARK_CHECK(max_durations != 0);
-
- items = new Item[num_inputs];
- for (size_t i = 0; i < num_inputs_; ++i) {
- items[i].input = 0; // initialized later
- items[i].num_durations = 0;
- items[i].durations = all_durations_ + i * max_durations;
- }
-}
-
-DurationsForInputs::~DurationsForInputs() {
- delete[] all_durations_;
- delete[] items;
-}
-
-void DurationsForInputs::AddItem(const FuncInput input, const float sample) {
- for (size_t i = 0; i < num_items; ++i) {
- NANOBENCHMARK_CHECK(items[i].input != input);
- }
- Item& item = items[num_items];
- item.input = input;
- item.num_durations = 1;
- item.durations[0] = sample;
- ++num_items;
-}
-
-void DurationsForInputs::AddSample(const FuncInput input, const float sample) {
- for (size_t i = 0; i < num_items; ++i) {
- Item& item = items[i];
- if (item.input == input) {
- item.durations[item.num_durations] = sample;
- ++item.num_durations;
- return;
- }
- }
- NANOBENCHMARK_CHECK(!"Item not found");
-}
-
-void DurationsForInputs::Item::PrintMedianAndVariability() {
- // Copy so that Median can modify.
- std::vector<float> duration_vec(durations, durations + num_durations);
- const float median = Median(&duration_vec);
- const float variability = MedianAbsoluteDeviation(duration_vec, median);
- printf("%5zu: median=%5.1f cycles; median abs. deviation=%4.1f cycles\n",
- input, median, variability);
-}
-
-void MeasureDurations(const Func func, DurationsForInputs* input_map) {
- const Duration resolution = Resolution(func);
-
- // Adds enough 'replicas' of the distribution to measure "func" given
- // the timer resolution.
- const std::vector<FuncInput> distribution(
- input_map->inputs_, input_map->inputs_ + input_map->num_inputs_);
- Inputs inputs(resolution, distribution, func);
- const double per_call = 1.0 / static_cast<int>(inputs.NumReplicas());
-
- // First iteration: populate input_map items.
- auto samples = GatherDurationSamples(resolution, inputs, func, 512);
- samples.Reduce(
- [per_call, input_map](const FuncInput input, const Duration duration) {
- const float sample = static_cast<float>(duration * per_call);
- input_map->AddItem(input, sample);
- });
-
- // Subsequent iteration(s): append to input_map items' array.
- for (size_t rep = 1; rep < input_map->max_durations_; ++rep) {
- auto samples = GatherDurationSamples(resolution, inputs, func, 512);
- samples.Reduce(
- [per_call, input_map](const FuncInput input, const Duration duration) {
- const float sample = static_cast<float>(duration * per_call);
- input_map->AddSample(input, sample);
- });
- }
-}
-
-} // namespace highwayhash
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "highwayhash/nanobenchmark.h"
+
+#include <algorithm>
+#include <cmath>
+#include <cstdio>
+#include <map>
+#include <random>
+#include <vector>
+
+#include <stddef.h>
+
+#include "highwayhash/os_specific.h"
+#include "highwayhash/robust_statistics.h"
+#include "highwayhash/tsc_timer.h"
+
+namespace highwayhash {
+namespace {
+
+// Enables sanity checks that verify correct operation at the cost of
+// longer benchmark runs.
+#ifndef NANOBENCHMARK_ENABLE_CHECKS
+#define NANOBENCHMARK_ENABLE_CHECKS 0
+#endif
+
+#define NANOBENCHMARK_CHECK_ALWAYS(condition) \
+ while (!(condition)) { \
+ printf("Nanobenchmark check failed at line %d\n", __LINE__); \
+ abort(); \
+ }
+
+#if NANOBENCHMARK_ENABLE_CHECKS
+#define NANOBENCHMARK_CHECK(condition) NANOBENCHMARK_CHECK_ALWAYS(condition)
+#else
+#define NANOBENCHMARK_CHECK(condition)
+#endif
+
+#if HH_MSC_VERSION
+
+// MSVC does not support inline assembly anymore (and never supported GCC's
+// RTL constraints used below).
+#pragma optimize("", off)
+// Self-assignment with #pragma optimize("off") might be expected to prevent
+// elision, but it does not with MSVC 2015.
+void UseCharPointer(volatile const char*) {}
+#pragma optimize("", on)
+
+template <class T>
+inline void PreventElision(T&& output) {
+ UseCharPointer(reinterpret_cast<volatile const char*>(&output));
+}
+
+#else
+
+// Prevents the compiler from eliding the computations that led to "output".
+// Works by indicating to the compiler that "output" is being read and modified.
+// The +r constraint avoids unnecessary writes to memory, but only works for
+// FuncOutput.
+template <class T>
+inline void PreventElision(T&& output) {
+ asm volatile("" : "+r"(output) : : "memory");
+}
+
+#endif
+
+HH_NOINLINE FuncOutput Func1(const FuncInput input) { return input + 1; }
+HH_NOINLINE FuncOutput Func2(const FuncInput input) { return input + 2; }
+
+// Cycles elapsed = difference between two cycle counts. Must be unsigned to
+// ensure wraparound on overflow.
+using Duration = uint32_t;
+
+// Even with high-priority pinned threads and frequency throttling disabled,
+// elapsed times are noisy due to interrupts or SMM operations. It might help
+// to detect such events via transactions and omit affected measurements.
+// Unfortunately, TSX is currently unavailable due to a bug. We achieve
+// repeatable results with a robust measure of the central tendency ("mode").
+
+// Returns time elapsed between timer Start/Stop.
+Duration EstimateResolutionOnCurrentCPU(const Func func) {
+ // Even 128K samples are not enough to achieve repeatable results when
+ // throttling is enabled; the caller must perform additional aggregation.
+ const size_t kNumSamples = 512;
+ Duration samples[kNumSamples];
+ for (size_t i = 0; i < kNumSamples; ++i) {
+ const volatile Duration t0 = Start<Duration>();
+ PreventElision(func(i));
+ const volatile Duration t1 = Stop<Duration>();
+ NANOBENCHMARK_CHECK(t0 <= t1);
+ samples[i] = t1 - t0;
+ }
+ CountingSort(samples, samples + kNumSamples);
+ const Duration resolution = Mode(samples, kNumSamples);
+ NANOBENCHMARK_CHECK(resolution != 0);
+ return resolution;
+}
+
+// Returns mode of EstimateResolutionOnCurrentCPU across all CPUs. This
+// increases repeatability because some CPUs may be throttled or slowed down by
+// interrupts.
+Duration EstimateResolution(const Func func_to_measure) {
+ Func func = (func_to_measure == &Func2) ? &Func1 : &Func2;
+
+ const size_t kNumSamples = 512;
+ std::vector<Duration> resolutions;
+ resolutions.reserve(kNumSamples);
+
+ const auto cpus = AvailableCPUs();
+ const size_t repetitions_per_cpu = kNumSamples / cpus.size();
+
+ auto affinity = GetThreadAffinity();
+ for (const int cpu : cpus) {
+ PinThreadToCPU(cpu);
+ for (size_t i = 0; i < repetitions_per_cpu; ++i) {
+ resolutions.push_back(EstimateResolutionOnCurrentCPU(func));
+ }
+ }
+ SetThreadAffinity(affinity);
+ free(affinity);
+
+ Duration* const begin = resolutions.data();
+ CountingSort(begin, begin + resolutions.size());
+ const Duration resolution = Mode(begin, resolutions.size());
+ printf("Resolution %lu\n", long(resolution));
+ return resolution;
+}
+
+// Returns cycles elapsed when running an empty region, i.e. the timer
+// resolution/overhead, which will be deducted from other measurements and
+// also used by InitReplicas.
+Duration Resolution(const Func func) {
+ // Initialization is expensive and should only happen once.
+ static const Duration resolution = EstimateResolution(func);
+ return resolution;
+}
+
+// Returns cycles elapsed when passing each of "inputs" (after in-place
+// shuffling) to "func", which must return something it has computed
+// so the compiler does not optimize it away.
+Duration CyclesElapsed(const Duration resolution, const Func func,
+ std::vector<FuncInput>* inputs) {
+ // This benchmark attempts to measure the performance of "func" when
+ // called with realistic inputs, which we assume are randomly drawn
+ // from the given "inputs" distribution, so we shuffle those values.
+ std::random_shuffle(inputs->begin(), inputs->end());
+
+ const Duration t0 = Start<Duration>();
+ for (const FuncInput input : *inputs) {
+ PreventElision(func(input));
+ }
+ const Duration t1 = Stop<Duration>();
+ const Duration elapsed = t1 - t0;
+ NANOBENCHMARK_CHECK(elapsed > resolution);
+ return elapsed - resolution;
+}
+
+// Stores input values for a series of calls to the function to measure.
+// We assume inputs are drawn from a known discrete probability distribution,
+// modeled as a vector<FuncInput> v. The probability of a value X
+// in v is count(v.begin(), v.end(), X) / v.size().
+class Inputs {
+ Inputs(const Inputs&) = delete;
+ Inputs& operator=(const Inputs&) = delete;
+
+ public:
+ Inputs(const Duration resolution, const std::vector<FuncInput>& distribution,
+ const Func func)
+ : unique_(InitUnique(distribution)),
+ replicas_(InitReplicas(distribution, resolution, func)),
+ num_replicas_(replicas_.size() / distribution.size()) {
+ printf("NumReplicas %zu\n", num_replicas_);
+ }
+
+ // Returns vector of the unique values from the input distribution.
+ const std::vector<FuncInput>& Unique() const { return unique_; }
+
+ // Returns how many instances of "distribution" are in "replicas_", i.e.
+ // the number of occurrences of an input value that occurred only once
+ // in the distribution. This is the divisor for computing the duration
+ // of a single call.
+ size_t NumReplicas() const { return num_replicas_; }
+
+ // Returns the (replicated) input distribution. Modified by caller
+ // (shuffled in-place) => not thread-safe.
+ std::vector<FuncInput>& Replicas() { return replicas_; }
+
+ // Returns a copy of Replicas() with NumReplicas() occurrences of "input"
+ // removed. Used for the leave-one-out measurement.
+ std::vector<FuncInput> Without(const FuncInput input_to_remove) const {
+ // "input_to_remove" should be in the original distribution.
+ NANOBENCHMARK_CHECK(std::find(unique_.begin(), unique_.end(),
+ input_to_remove) != unique_.end());
+
+ std::vector<FuncInput> copy = replicas_;
+ auto pos = std::partition(copy.begin(), copy.end(),
+ [input_to_remove](const FuncInput input) {
+ return input_to_remove != input;
+ });
+ // Must occur at least num_replicas_ times.
+ NANOBENCHMARK_CHECK(copy.end() - pos >= num_replicas_);
+ // (Avoids unused-variable warning.)
+ PreventElision(&*pos);
+ copy.resize(copy.size() - num_replicas_);
+ return copy;
+ }
+
+ private:
+ // Returns a copy with any duplicate values removed. Initializing unique_
+ // through this function allows it to be const.
+ static std::vector<FuncInput> InitUnique(
+ const std::vector<FuncInput>& distribution) {
+ std::vector<FuncInput> unique = distribution;
+ std::sort(unique.begin(), unique.end());
+ unique.erase(std::unique(unique.begin(), unique.end()), unique.end());
+ // Our leave-one-out measurement technique only makes sense when
+ // there are multiple input values.
+ NANOBENCHMARK_CHECK(unique.size() >= 2);
+ return unique;
+ }
+
+ // Returns how many replicas of "distribution" are required before
+ // CyclesElapsed is large enough compared to the timer resolution.
+ static std::vector<FuncInput> InitReplicas(
+ const std::vector<FuncInput>& distribution, const Duration resolution,
+ const Func func) {
+ // We compute the difference in duration for inputs = Replicas() vs.
+ // Without(). Dividing this by num_replicas must yield a value where the
+ // quantization error (from the timer resolution) is sufficiently small.
+ const uint64_t min_elapsed = distribution.size() * resolution * 400;
+
+ std::vector<FuncInput> replicas;
+ for (;;) {
+ AppendReplica(distribution, &replicas);
+
+#if NANOBENCHMARK_ENABLE_CHECKS
+ const uint64_t t0 = Start64();
+#endif
+ const Duration elapsed = CyclesElapsed(resolution, func, &replicas);
+#if NANOBENCHMARK_ENABLE_CHECKS
+ const uint64_t t1 = Stop64();
+#endif
+ // Ensure the 32-bit timer didn't and won't overflow.
+ NANOBENCHMARK_CHECK((t1 - t0) < (1ULL << 30));
+
+ if (elapsed >= min_elapsed) {
+ return replicas;
+ }
+ }
+ }
+
+ // Appends all values in "distribution" to "replicas".
+ static void AppendReplica(const std::vector<FuncInput>& distribution,
+ std::vector<FuncInput>* replicas) {
+ replicas->reserve(replicas->size() + distribution.size());
+ for (const FuncInput input : distribution) {
+ replicas->push_back(input);
+ }
+ }
+
+ const std::vector<FuncInput> unique_;
+
+ // Modified by caller (shuffled in-place) => non-const.
+ std::vector<FuncInput> replicas_;
+
+ // Initialized from replicas_.
+ const size_t num_replicas_;
+};
+
+// Holds samples of measured durations, and (robustly) reduces them to a
+// single result for each unique input value.
+class DurationSamples {
+ public:
+ DurationSamples(const std::vector<FuncInput>& unique_inputs,
+ const size_t num_samples)
+ : num_samples_(num_samples) {
+ // Preallocate storage.
+ for (const FuncInput input : unique_inputs) {
+ samples_for_input_[input].reserve(num_samples);
+ }
+ }
+
+ void Add(const FuncInput input, const Duration sample) {
+ // "input" should be one of the values passed to the ctor.
+ NANOBENCHMARK_CHECK(samples_for_input_.find(input) !=
+ samples_for_input_.end());
+
+ samples_for_input_[input].push_back(sample);
+ }
+
+ // Invokes "lambda" for each (input, duration) pair. The per-call duration
+ // is the central tendency (the mode) of the samples.
+ template <class Lambda>
+ void Reduce(const Lambda& lambda) {
+ for (auto& input_and_samples : samples_for_input_) {
+ const FuncInput input = input_and_samples.first;
+ std::vector<Duration>& samples = input_and_samples.second;
+
+ NANOBENCHMARK_CHECK(samples.size() <= num_samples_);
+ std::sort(samples.begin(), samples.end());
+ const Duration duration = Mode(samples.data(), samples.size());
+ lambda(input, duration);
+ }
+ }
+
+ private:
+ const size_t num_samples_;
+ std::map<FuncInput, std::vector<Duration>> samples_for_input_;
+};
+
+// Gathers "num_samples" durations via repeated leave-one-out measurements.
+DurationSamples GatherDurationSamples(const Duration resolution, Inputs& inputs,
+ const Func func,
+ const size_t num_samples) {
+ DurationSamples samples(inputs.Unique(), num_samples);
+ for (size_t i = 0; i < num_samples; ++i) {
+ // Total duration for all shuffled input values. This may change over time,
+ // so recompute it for each sample.
+ const Duration total = CyclesElapsed(resolution, func, &inputs.Replicas());
+
+ for (const FuncInput input : inputs.Unique()) {
+ // To isolate the durations of the calls with this input value,
+ // we measure the duration without those values and subtract that
+ // from the total, and later divide by NumReplicas.
+ std::vector<FuncInput> without = inputs.Without(input);
+ for (int rep = 0; rep < 3; ++rep) {
+ const Duration elapsed = CyclesElapsed(resolution, func, &without);
+ if (elapsed < total) {
+ samples.Add(input, total - elapsed);
+ break;
+ }
+ }
+ }
+ }
+ return samples;
+}
+
+} // namespace
+
+DurationsForInputs::DurationsForInputs(const FuncInput* inputs,
+ const size_t num_inputs,
+ const size_t max_durations)
+ : num_items(0),
+ inputs_(inputs),
+ num_inputs_(num_inputs),
+ max_durations_(max_durations),
+ all_durations_(new float[num_inputs * max_durations]) {
+ NANOBENCHMARK_CHECK(num_inputs != 0);
+ NANOBENCHMARK_CHECK(max_durations != 0);
+
+ items = new Item[num_inputs];
+ for (size_t i = 0; i < num_inputs_; ++i) {
+ items[i].input = 0; // initialized later
+ items[i].num_durations = 0;
+ items[i].durations = all_durations_ + i * max_durations;
+ }
+}
+
+DurationsForInputs::~DurationsForInputs() {
+ delete[] all_durations_;
+ delete[] items;
+}
+
+void DurationsForInputs::AddItem(const FuncInput input, const float sample) {
+ for (size_t i = 0; i < num_items; ++i) {
+ NANOBENCHMARK_CHECK(items[i].input != input);
+ }
+ Item& item = items[num_items];
+ item.input = input;
+ item.num_durations = 1;
+ item.durations[0] = sample;
+ ++num_items;
+}
+
+void DurationsForInputs::AddSample(const FuncInput input, const float sample) {
+ for (size_t i = 0; i < num_items; ++i) {
+ Item& item = items[i];
+ if (item.input == input) {
+ item.durations[item.num_durations] = sample;
+ ++item.num_durations;
+ return;
+ }
+ }
+ NANOBENCHMARK_CHECK(!"Item not found");
+}
+
+void DurationsForInputs::Item::PrintMedianAndVariability() {
+ // Copy so that Median can modify.
+ std::vector<float> duration_vec(durations, durations + num_durations);
+ const float median = Median(&duration_vec);
+ const float variability = MedianAbsoluteDeviation(duration_vec, median);
+ printf("%5zu: median=%5.1f cycles; median abs. deviation=%4.1f cycles\n",
+ input, median, variability);
+}
+
+void MeasureDurations(const Func func, DurationsForInputs* input_map) {
+ const Duration resolution = Resolution(func);
+
+ // Adds enough 'replicas' of the distribution to measure "func" given
+ // the timer resolution.
+ const std::vector<FuncInput> distribution(
+ input_map->inputs_, input_map->inputs_ + input_map->num_inputs_);
+ Inputs inputs(resolution, distribution, func);
+ const double per_call = 1.0 / static_cast<int>(inputs.NumReplicas());
+
+ // First iteration: populate input_map items.
+ auto samples = GatherDurationSamples(resolution, inputs, func, 512);
+ samples.Reduce(
+ [per_call, input_map](const FuncInput input, const Duration duration) {
+ const float sample = static_cast<float>(duration * per_call);
+ input_map->AddItem(input, sample);
+ });
+
+ // Subsequent iteration(s): append to input_map items' array.
+ for (size_t rep = 1; rep < input_map->max_durations_; ++rep) {
+ auto samples = GatherDurationSamples(resolution, inputs, func, 512);
+ samples.Reduce(
+ [per_call, input_map](const FuncInput input, const Duration duration) {
+ const float sample = static_cast<float>(duration * per_call);
+ input_map->AddSample(input, sample);
+ });
+ }
+}
+
+} // namespace highwayhash
diff --git a/contrib/libs/highwayhash/highwayhash/nanobenchmark.h b/contrib/libs/highwayhash/highwayhash/nanobenchmark.h
index ba4ca5a9bb..1cf6426e0f 100644
--- a/contrib/libs/highwayhash/highwayhash/nanobenchmark.h
+++ b/contrib/libs/highwayhash/highwayhash/nanobenchmark.h
@@ -1,158 +1,158 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef HIGHWAYHASH_NANOBENCHMARK_H_
-#define HIGHWAYHASH_NANOBENCHMARK_H_
-
-// Benchmarks functions of a single integer argument with realistic branch
-// prediction hit rates. Uses a robust estimator to summarize the measurements.
-// Measurements are precise to about 0.2 cycles.
-//
-// Example:
-// #include "highwayhash/nanobenchmark.h"
-// using namespace highwayhash;
-//
-// uint64_t RegionToMeasure(size_t size) {
-// char from[8] = {static_cast<char>(size)};
-// char to[8];
-// memcpy(to, from, size);
-// return to[0];
-// }
-//
-// PinThreadToRandomCPU();
-//
-// static const size_t distribution[] = {3, 3, 4, 4, 7, 7, 8, 8};
-// DurationsForInputs input_map = MakeDurationsForInputs(distribution, 10);
-// MeasureDurations(&RegionToMeasure, &input_map);
-// for (size_t i = 0; i < input_map.num_items; ++i) {
-// input_map.items[i].PrintMedianAndVariability();
-// }
-//
-// Output:
-// 3: median= 25.2 cycles; median abs. deviation= 0.1 cycles
-// 4: median= 13.5 cycles; median abs. deviation= 0.1 cycles
-// 7: median= 13.5 cycles; median abs. deviation= 0.1 cycles
-// 8: median= 27.5 cycles; median abs. deviation= 0.2 cycles
-// (7 is presumably faster because it can use two unaligned 32-bit load/stores.)
-//
-// Background: Microbenchmarks such as http://github.com/google/benchmark
-// can measure elapsed times on the order of a microsecond. Shorter functions
-// are typically measured by repeating them thousands of times and dividing
-// the total elapsed time by this count. Unfortunately, repetition (especially
-// with the same input parameter!) influences the runtime. In time-critical
-// code, it is reasonable to expect warm instruction/data caches and TLBs,
-// but a perfect record of which branches will be taken is unrealistic.
-// Unless the application also repeatedly invokes the measured function with
-// the same parameter, the benchmark is measuring something very different -
-// a best-case result, almost as if the parameter were made a compile-time
-// constant. This may lead to erroneous conclusions about branch-heavy
-// algorithms outperforming branch-free alternatives.
-//
-// Our approach differs in three ways. Adding fences to the timer functions
-// reduces variability due to instruction reordering, improving the timer
-// resolution to about 10 nanoseconds. However, shorter functions must still
-// be invoked repeatedly. For more realistic branch prediction performance,
-// we vary the input parameter according to a user-specified distribution.
-// Thus, instead of VaryInputs(Measure(Repeat(func))), we change the
-// loop nesting to Measure(Repeat(VaryInputs(func))). We also estimate the
-// central tendency of the measurement samples with the "half sample mode",
-// which is more robust to outliers and skewed data than the mean or median.
-
-// WARNING: this is a "restricted" header because it is included from
-// translation units compiled with different flags. This header and its
-// dependencies must not define any function unless it is static inline and/or
-// within namespace HH_TARGET_NAME. See arch_specific.h for details.
-
-#include <stddef.h>
-#include <stdint.h>
-#include "highwayhash/arch_specific.h"
-#include "highwayhash/compiler_specific.h"
-
-namespace highwayhash {
-
-// Argument to the function being measured (e.g. number of bytes to copy).
-using FuncInput = size_t;
-
-// "Proof of work" returned by the function to ensure it is not elided.
-using FuncOutput = uint64_t;
-
-// Function to measure (cannot use std::function in a restricted header).
-using Func = FuncOutput (*)(FuncInput);
-
-// Flat map of input -> durations[].
-class DurationsForInputs {
- public:
- struct Item {
- void PrintMedianAndVariability();
-
- FuncInput input; // read-only (set by AddItem).
- size_t num_durations; // written so far: [0, max_durations).
- float* durations; // max_durations entries; points into all_durations.
- };
-
- // "inputs" is an array of "num_inputs" (not necessarily unique) arguments to
- // "func". The values are chosen to maximize coverage of "func". The pointer
- // must remain valid until after MeasureDurations. This represents a
- // distribution, so a value's frequency should reflect its probability in the
- // real application. Order does not matter; for example, a uniform
- // distribution over [0, 4) could be represented as {3,0,2,1}. Repeating each
- // value at least once ensures the leave-one-out distribution is closer to the
- // original distribution, leading to more realistic results.
- //
- // "max_durations" is the number of duration samples to measure for each
- // unique input value. Larger values decrease variability.
- //
- // Runtime is proportional to "num_inputs" * #unique * "max_durations".
- DurationsForInputs(const FuncInput* inputs, const size_t num_inputs,
- const size_t max_durations);
- ~DurationsForInputs();
-
- // Adds an item with the given "input" and "sample". Must only be called once
- // per unique "input" value.
- void AddItem(const FuncInput input, const float sample);
-
- // Adds "sample" to an already existing Item with the given "input".
- void AddSample(const FuncInput input, const float sample);
-
- // Allow direct inspection of items[0..num_items-1] because accessor or
- // ForeachItem functions are unsafe in a restricted header.
- Item* items; // owned by this class, do not allocate/free.
- size_t num_items; // safe to reset to zero.
-
- private:
- friend void MeasureDurations(Func, DurationsForInputs*);
-
- const FuncInput* const inputs_;
- const size_t num_inputs_;
- const size_t max_durations_;
- float* const all_durations_;
-};
-
-// Helper function to detect num_inputs from arrays.
-template <size_t N>
-static HH_INLINE DurationsForInputs MakeDurationsForInputs(
- const FuncInput (&inputs)[N], const size_t max_durations) {
- return DurationsForInputs(&inputs[0], N, max_durations);
-}
-
-// Returns precise measurements of the cycles elapsed when calling "func" with
-// each unique input value in "input_map", taking special care to maintain
-// realistic branch prediction hit rates.
-//
-// "func" returns a 'proof of work' to ensure its computations are not elided.
-void MeasureDurations(const Func func, DurationsForInputs* input_map);
-
-} // namespace highwayhash
-
-#endif // HIGHWAYHASH_NANOBENCHMARK_H_
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef HIGHWAYHASH_NANOBENCHMARK_H_
+#define HIGHWAYHASH_NANOBENCHMARK_H_
+
+// Benchmarks functions of a single integer argument with realistic branch
+// prediction hit rates. Uses a robust estimator to summarize the measurements.
+// Measurements are precise to about 0.2 cycles.
+//
+// Example:
+// #include "highwayhash/nanobenchmark.h"
+// using namespace highwayhash;
+//
+// uint64_t RegionToMeasure(size_t size) {
+// char from[8] = {static_cast<char>(size)};
+// char to[8];
+// memcpy(to, from, size);
+// return to[0];
+// }
+//
+// PinThreadToRandomCPU();
+//
+// static const size_t distribution[] = {3, 3, 4, 4, 7, 7, 8, 8};
+// DurationsForInputs input_map = MakeDurationsForInputs(distribution, 10);
+// MeasureDurations(&RegionToMeasure, &input_map);
+// for (size_t i = 0; i < input_map.num_items; ++i) {
+// input_map.items[i].PrintMedianAndVariability();
+// }
+//
+// Output:
+// 3: median= 25.2 cycles; median abs. deviation= 0.1 cycles
+// 4: median= 13.5 cycles; median abs. deviation= 0.1 cycles
+// 7: median= 13.5 cycles; median abs. deviation= 0.1 cycles
+// 8: median= 27.5 cycles; median abs. deviation= 0.2 cycles
+// (7 is presumably faster because it can use two unaligned 32-bit load/stores.)
+//
+// Background: Microbenchmarks such as http://github.com/google/benchmark
+// can measure elapsed times on the order of a microsecond. Shorter functions
+// are typically measured by repeating them thousands of times and dividing
+// the total elapsed time by this count. Unfortunately, repetition (especially
+// with the same input parameter!) influences the runtime. In time-critical
+// code, it is reasonable to expect warm instruction/data caches and TLBs,
+// but a perfect record of which branches will be taken is unrealistic.
+// Unless the application also repeatedly invokes the measured function with
+// the same parameter, the benchmark is measuring something very different -
+// a best-case result, almost as if the parameter were made a compile-time
+// constant. This may lead to erroneous conclusions about branch-heavy
+// algorithms outperforming branch-free alternatives.
+//
+// Our approach differs in three ways. Adding fences to the timer functions
+// reduces variability due to instruction reordering, improving the timer
+// resolution to about 10 nanoseconds. However, shorter functions must still
+// be invoked repeatedly. For more realistic branch prediction performance,
+// we vary the input parameter according to a user-specified distribution.
+// Thus, instead of VaryInputs(Measure(Repeat(func))), we change the
+// loop nesting to Measure(Repeat(VaryInputs(func))). We also estimate the
+// central tendency of the measurement samples with the "half sample mode",
+// which is more robust to outliers and skewed data than the mean or median.
+
+// WARNING: this is a "restricted" header because it is included from
+// translation units compiled with different flags. This header and its
+// dependencies must not define any function unless it is static inline and/or
+// within namespace HH_TARGET_NAME. See arch_specific.h for details.
+
+#include <stddef.h>
+#include <stdint.h>
+#include "highwayhash/arch_specific.h"
+#include "highwayhash/compiler_specific.h"
+
+namespace highwayhash {
+
+// Argument to the function being measured (e.g. number of bytes to copy).
+using FuncInput = size_t;
+
+// "Proof of work" returned by the function to ensure it is not elided.
+using FuncOutput = uint64_t;
+
+// Function to measure (cannot use std::function in a restricted header).
+using Func = FuncOutput (*)(FuncInput);
+
+// Flat map of input -> durations[].
+class DurationsForInputs {
+ public:
+ struct Item {
+ void PrintMedianAndVariability();
+
+ FuncInput input; // read-only (set by AddItem).
+ size_t num_durations; // written so far: [0, max_durations).
+ float* durations; // max_durations entries; points into all_durations.
+ };
+
+ // "inputs" is an array of "num_inputs" (not necessarily unique) arguments to
+ // "func". The values are chosen to maximize coverage of "func". The pointer
+ // must remain valid until after MeasureDurations. This represents a
+ // distribution, so a value's frequency should reflect its probability in the
+ // real application. Order does not matter; for example, a uniform
+ // distribution over [0, 4) could be represented as {3,0,2,1}. Repeating each
+ // value at least once ensures the leave-one-out distribution is closer to the
+ // original distribution, leading to more realistic results.
+ //
+ // "max_durations" is the number of duration samples to measure for each
+ // unique input value. Larger values decrease variability.
+ //
+ // Runtime is proportional to "num_inputs" * #unique * "max_durations".
+ DurationsForInputs(const FuncInput* inputs, const size_t num_inputs,
+ const size_t max_durations);
+ ~DurationsForInputs();
+
+ // Adds an item with the given "input" and "sample". Must only be called once
+ // per unique "input" value.
+ void AddItem(const FuncInput input, const float sample);
+
+ // Adds "sample" to an already existing Item with the given "input".
+ void AddSample(const FuncInput input, const float sample);
+
+ // Allow direct inspection of items[0..num_items-1] because accessor or
+ // ForeachItem functions are unsafe in a restricted header.
+ Item* items; // owned by this class, do not allocate/free.
+ size_t num_items; // safe to reset to zero.
+
+ private:
+ friend void MeasureDurations(Func, DurationsForInputs*);
+
+ const FuncInput* const inputs_;
+ const size_t num_inputs_;
+ const size_t max_durations_;
+ float* const all_durations_;
+};
+
+// Helper function to detect num_inputs from arrays.
+template <size_t N>
+static HH_INLINE DurationsForInputs MakeDurationsForInputs(
+ const FuncInput (&inputs)[N], const size_t max_durations) {
+ return DurationsForInputs(&inputs[0], N, max_durations);
+}
+
+// Returns precise measurements of the cycles elapsed when calling "func" with
+// each unique input value in "input_map", taking special care to maintain
+// realistic branch prediction hit rates.
+//
+// "func" returns a 'proof of work' to ensure its computations are not elided.
+void MeasureDurations(const Func func, DurationsForInputs* input_map);
+
+} // namespace highwayhash
+
+#endif // HIGHWAYHASH_NANOBENCHMARK_H_
diff --git a/contrib/libs/highwayhash/highwayhash/nanobenchmark_example.cc b/contrib/libs/highwayhash/highwayhash/nanobenchmark_example.cc
index f7b2269311..d95acf144a 100644
--- a/contrib/libs/highwayhash/highwayhash/nanobenchmark_example.cc
+++ b/contrib/libs/highwayhash/highwayhash/nanobenchmark_example.cc
@@ -1,48 +1,48 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <cstddef>
-#include <cstring>
-#include <vector>
-
-#include "highwayhash/nanobenchmark.h"
-#include "highwayhash/os_specific.h"
-
-namespace highwayhash {
-namespace {
-
-uint64_t RegionToMeasure(FuncInput size) {
- char from[8] = {static_cast<char>(size)};
- char to[8];
- memcpy(to, from, size);
- return to[0];
-}
-
-void TestMemcpy() {
- PinThreadToRandomCPU();
- static const size_t distribution[] = {3, 3, 4, 4, 7, 7, 8, 8};
- DurationsForInputs input_map = MakeDurationsForInputs(distribution, 10);
- MeasureDurations(&RegionToMeasure, &input_map);
- for (size_t i = 0; i < input_map.num_items; ++i) {
- input_map.items[i].PrintMedianAndVariability();
- }
-}
-
-} // namespace
-} // namespace highwayhash
-
-int main(int argc, char* argv[]) {
- highwayhash::TestMemcpy();
- return 0;
-}
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include <cstddef>
+#include <cstring>
+#include <vector>
+
+#include "highwayhash/nanobenchmark.h"
+#include "highwayhash/os_specific.h"
+
+namespace highwayhash {
+namespace {
+
+uint64_t RegionToMeasure(FuncInput size) {
+ char from[8] = {static_cast<char>(size)};
+ char to[8];
+ memcpy(to, from, size);
+ return to[0];
+}
+
+void TestMemcpy() {
+ PinThreadToRandomCPU();
+ static const size_t distribution[] = {3, 3, 4, 4, 7, 7, 8, 8};
+ DurationsForInputs input_map = MakeDurationsForInputs(distribution, 10);
+ MeasureDurations(&RegionToMeasure, &input_map);
+ for (size_t i = 0; i < input_map.num_items; ++i) {
+ input_map.items[i].PrintMedianAndVariability();
+ }
+}
+
+} // namespace
+} // namespace highwayhash
+
+int main(int argc, char* argv[]) {
+ highwayhash::TestMemcpy();
+ return 0;
+}
diff --git a/contrib/libs/highwayhash/highwayhash/os_specific.cc b/contrib/libs/highwayhash/highwayhash/os_specific.cc
index 5c877bc709..c28b2c1ae3 100644
--- a/contrib/libs/highwayhash/highwayhash/os_specific.cc
+++ b/contrib/libs/highwayhash/highwayhash/os_specific.cc
@@ -1,244 +1,244 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "highwayhash/os_specific.h"
-
-#include <algorithm>
-#include <cstddef>
-#include <cstdint>
-#include <cstdio>
-#include <cstdlib>
-#include <ctime>
-#include <random>
-
-#include "highwayhash/arch_specific.h"
-
-#if defined(_WIN32) || defined(_WIN64)
-#define OS_WIN 1
-#define NOMINMAX
-#include <windows.h>
-#else
-#define OS_WIN 0
-#endif
-
-#ifdef __linux__
-#define OS_LINUX 1
-#include <sched.h>
-#include <sys/time.h>
-#else
-#define OS_LINUX 0
-#endif
-
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "highwayhash/os_specific.h"
+
+#include <algorithm>
+#include <cstddef>
+#include <cstdint>
+#include <cstdio>
+#include <cstdlib>
+#include <ctime>
+#include <random>
+
+#include "highwayhash/arch_specific.h"
+
+#if defined(_WIN32) || defined(_WIN64)
+#define OS_WIN 1
+#define NOMINMAX
+#include <windows.h>
+#else
+#define OS_WIN 0
+#endif
+
+#ifdef __linux__
+#define OS_LINUX 1
+#include <sched.h>
+#include <sys/time.h>
+#else
+#define OS_LINUX 0
+#endif
+
#if defined(__MACH__) || defined(__APPLE__)
-#define OS_MAC 1
-#include <mach/mach.h>
-#include <mach/mach_time.h>
-#else
-#define OS_MAC 0
-#endif
-
-#ifdef __FreeBSD__
-#define OS_FREEBSD 1
-#include <sys/cpuset.h>
-#include <sys/param.h>
-#include <unistd.h>
-#else
-#define OS_FREEBSD 0
-#endif
-
-namespace highwayhash {
-
-#define CHECK(condition) \
- while (!(condition)) { \
- printf("os_specific CHECK failed at line %d\n", __LINE__); \
- abort(); \
- }
-
-double Now() {
-#if OS_WIN
- LARGE_INTEGER counter;
- (void)QueryPerformanceCounter(&counter);
- static const double rcp_freq = []() {
- LARGE_INTEGER freq;
- (void)QueryPerformanceFrequency(&freq);
- return 1.0 / freq.QuadPart;
- }();
- return counter.QuadPart * rcp_freq;
-#elif OS_MAC
- const auto t = mach_absolute_time();
- // On OSX/iOS platform the elapsed time is cpu time unit
- // We have to query the time base information to convert it back
- // See https://developer.apple.com/library/mac/qa/qa1398/_index.html
- static mach_timebase_info_data_t timebase;
- if (timebase.denom == 0) {
- (void)mach_timebase_info(&timebase);
- }
- return double(t) * timebase.numer / timebase.denom * 1E-9;
-#else
- timespec t;
- clock_gettime(CLOCK_REALTIME, &t);
- return t.tv_sec + t.tv_nsec * 1E-9;
-#endif
-}
-
-void RaiseThreadPriority() {
-#if OS_WIN
- BOOL ok = SetPriorityClass(GetCurrentProcess(), HIGH_PRIORITY_CLASS);
- CHECK(ok);
- SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_HIGHEST);
- CHECK(ok);
-#elif OS_LINUX
- // omit: SCHED_RR and SCHED_FIFO with sched_priority max, max-1 and max/2
- // lead to 2-3x runtime and higher variability!
-#elif OS_FREEBSD
+#define OS_MAC 1
+#include <mach/mach.h>
+#include <mach/mach_time.h>
+#else
+#define OS_MAC 0
+#endif
+
+#ifdef __FreeBSD__
+#define OS_FREEBSD 1
+#include <sys/cpuset.h>
+#include <sys/param.h>
+#include <unistd.h>
+#else
+#define OS_FREEBSD 0
+#endif
+
+namespace highwayhash {
+
+#define CHECK(condition) \
+ while (!(condition)) { \
+ printf("os_specific CHECK failed at line %d\n", __LINE__); \
+ abort(); \
+ }
+
+double Now() {
+#if OS_WIN
+ LARGE_INTEGER counter;
+ (void)QueryPerformanceCounter(&counter);
+ static const double rcp_freq = []() {
+ LARGE_INTEGER freq;
+ (void)QueryPerformanceFrequency(&freq);
+ return 1.0 / freq.QuadPart;
+ }();
+ return counter.QuadPart * rcp_freq;
#elif OS_MAC
-#else
-#error "port"
-#endif
-}
-
-struct ThreadAffinity {
-#if OS_WIN
- DWORD_PTR mask;
-#elif OS_LINUX
- cpu_set_t set;
-#elif OS_FREEBSD
- cpuset_t set;
-#endif
-};
-
-ThreadAffinity* GetThreadAffinity() {
- ThreadAffinity* affinity =
- static_cast<ThreadAffinity*>(malloc(sizeof(ThreadAffinity)));
-#if OS_WIN
- DWORD_PTR system_affinity;
- const BOOL ok = GetProcessAffinityMask(GetCurrentProcess(), &affinity->mask,
- &system_affinity);
- CHECK(ok);
-#elif OS_LINUX
- const pid_t pid = 0; // current thread
- const int err = sched_getaffinity(pid, sizeof(cpu_set_t), &affinity->set);
- CHECK(err == 0);
-#elif OS_FREEBSD
- const pid_t pid = getpid(); // current thread
- const int err = cpuset_getaffinity(CPU_LEVEL_WHICH, CPU_WHICH_PID, pid,
- sizeof(cpuset_t), &affinity->set);
- CHECK(err == 0);
-#endif
- return affinity;
-}
-
-namespace {
-
-ThreadAffinity* OriginalThreadAffinity() {
- static ThreadAffinity* original = GetThreadAffinity();
- return original;
-}
-
-} // namespace
-
-void SetThreadAffinity(ThreadAffinity* affinity) {
- // Ensure original is initialized before changing.
- const ThreadAffinity* const original = OriginalThreadAffinity();
- CHECK(original != nullptr);
-
-#if OS_WIN
- const HANDLE hThread = GetCurrentThread();
- const DWORD_PTR prev = SetThreadAffinityMask(hThread, affinity->mask);
- CHECK(prev != 0);
-#elif OS_LINUX
- const pid_t pid = 0; // current thread
- const int err = sched_setaffinity(pid, sizeof(cpu_set_t), &affinity->set);
- CHECK(err == 0);
-#elif OS_FREEBSD
- const pid_t pid = getpid(); // current thread
- const int err = cpuset_setaffinity(CPU_LEVEL_WHICH, CPU_WHICH_PID, pid,
- sizeof(cpuset_t), &affinity->set);
- CHECK(err == 0);
+ const auto t = mach_absolute_time();
+ // On OSX/iOS platform the elapsed time is cpu time unit
+ // We have to query the time base information to convert it back
+ // See https://developer.apple.com/library/mac/qa/qa1398/_index.html
+ static mach_timebase_info_data_t timebase;
+ if (timebase.denom == 0) {
+ (void)mach_timebase_info(&timebase);
+ }
+ return double(t) * timebase.numer / timebase.denom * 1E-9;
+#else
+ timespec t;
+ clock_gettime(CLOCK_REALTIME, &t);
+ return t.tv_sec + t.tv_nsec * 1E-9;
+#endif
+}
+
+void RaiseThreadPriority() {
+#if OS_WIN
+ BOOL ok = SetPriorityClass(GetCurrentProcess(), HIGH_PRIORITY_CLASS);
+ CHECK(ok);
+ SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_HIGHEST);
+ CHECK(ok);
+#elif OS_LINUX
+ // omit: SCHED_RR and SCHED_FIFO with sched_priority max, max-1 and max/2
+ // lead to 2-3x runtime and higher variability!
+#elif OS_FREEBSD
#elif OS_MAC
-#else
-#error "port"
-#endif
-}
-
-std::vector<int> AvailableCPUs() {
- std::vector<int> cpus;
- cpus.reserve(64);
- const ThreadAffinity* const affinity = OriginalThreadAffinity();
-#if OS_WIN
- for (int cpu = 0; cpu < 64; ++cpu) {
- if (affinity->mask & (1ULL << cpu)) {
- cpus.push_back(cpu);
- }
- }
-#elif OS_LINUX
- for (size_t cpu = 0; cpu < sizeof(cpu_set_t) * 8; ++cpu) {
- if (CPU_ISSET(cpu, &affinity->set)) {
- cpus.push_back(cpu);
- }
- }
-#elif OS_FREEBSD
- for (size_t cpu = 0; cpu < sizeof(cpuset_t) * 8; ++cpu) {
- if (CPU_ISSET(cpu, &affinity->set)) {
- cpus.push_back(cpu);
- }
- }
+#else
+#error "port"
+#endif
+}
+
+struct ThreadAffinity {
+#if OS_WIN
+ DWORD_PTR mask;
+#elif OS_LINUX
+ cpu_set_t set;
+#elif OS_FREEBSD
+ cpuset_t set;
+#endif
+};
+
+ThreadAffinity* GetThreadAffinity() {
+ ThreadAffinity* affinity =
+ static_cast<ThreadAffinity*>(malloc(sizeof(ThreadAffinity)));
+#if OS_WIN
+ DWORD_PTR system_affinity;
+ const BOOL ok = GetProcessAffinityMask(GetCurrentProcess(), &affinity->mask,
+ &system_affinity);
+ CHECK(ok);
+#elif OS_LINUX
+ const pid_t pid = 0; // current thread
+ const int err = sched_getaffinity(pid, sizeof(cpu_set_t), &affinity->set);
+ CHECK(err == 0);
+#elif OS_FREEBSD
+ const pid_t pid = getpid(); // current thread
+ const int err = cpuset_getaffinity(CPU_LEVEL_WHICH, CPU_WHICH_PID, pid,
+ sizeof(cpuset_t), &affinity->set);
+ CHECK(err == 0);
+#endif
+ return affinity;
+}
+
+namespace {
+
+ThreadAffinity* OriginalThreadAffinity() {
+ static ThreadAffinity* original = GetThreadAffinity();
+ return original;
+}
+
+} // namespace
+
+void SetThreadAffinity(ThreadAffinity* affinity) {
+ // Ensure original is initialized before changing.
+ const ThreadAffinity* const original = OriginalThreadAffinity();
+ CHECK(original != nullptr);
+
+#if OS_WIN
+ const HANDLE hThread = GetCurrentThread();
+ const DWORD_PTR prev = SetThreadAffinityMask(hThread, affinity->mask);
+ CHECK(prev != 0);
+#elif OS_LINUX
+ const pid_t pid = 0; // current thread
+ const int err = sched_setaffinity(pid, sizeof(cpu_set_t), &affinity->set);
+ CHECK(err == 0);
+#elif OS_FREEBSD
+ const pid_t pid = getpid(); // current thread
+ const int err = cpuset_setaffinity(CPU_LEVEL_WHICH, CPU_WHICH_PID, pid,
+ sizeof(cpuset_t), &affinity->set);
+ CHECK(err == 0);
#elif OS_MAC
-#else
-#error "port"
-#endif
- return cpus;
-}
-
-void PinThreadToCPU(const int cpu) {
- ThreadAffinity affinity;
-#if OS_WIN
- affinity.mask = 1ULL << cpu;
-#elif OS_LINUX
- CPU_ZERO(&affinity.set);
- CPU_SET(cpu, &affinity.set);
-#elif OS_FREEBSD
- CPU_ZERO(&affinity.set);
- CPU_SET(cpu, &affinity.set);
+#else
+#error "port"
+#endif
+}
+
+std::vector<int> AvailableCPUs() {
+ std::vector<int> cpus;
+ cpus.reserve(64);
+ const ThreadAffinity* const affinity = OriginalThreadAffinity();
+#if OS_WIN
+ for (int cpu = 0; cpu < 64; ++cpu) {
+ if (affinity->mask & (1ULL << cpu)) {
+ cpus.push_back(cpu);
+ }
+ }
+#elif OS_LINUX
+ for (size_t cpu = 0; cpu < sizeof(cpu_set_t) * 8; ++cpu) {
+ if (CPU_ISSET(cpu, &affinity->set)) {
+ cpus.push_back(cpu);
+ }
+ }
+#elif OS_FREEBSD
+ for (size_t cpu = 0; cpu < sizeof(cpuset_t) * 8; ++cpu) {
+ if (CPU_ISSET(cpu, &affinity->set)) {
+ cpus.push_back(cpu);
+ }
+ }
#elif OS_MAC
-#else
-#error "port"
-#endif
- SetThreadAffinity(&affinity);
-}
-
-void PinThreadToRandomCPU() {
- std::vector<int> cpus = AvailableCPUs();
-
- // Remove first two CPUs because interrupts are often pinned to them.
- CHECK(cpus.size() > 2);
- cpus.erase(cpus.begin(), cpus.begin() + 2);
-
- // Random choice to prevent burning up the same core.
- std::random_device device;
- std::ranlux48 generator(device());
- std::shuffle(cpus.begin(), cpus.end(), generator);
- const int cpu = cpus.front();
-
- PinThreadToCPU(cpu);
-
-#if HH_ARCH_X64
- // After setting affinity, we should be running on the desired CPU.
- printf("Running on CPU #%d, APIC ID %02x\n", cpu, ApicId());
-#else
- printf("Running on CPU #%d\n", cpu);
-#endif
-}
-
-} // namespace highwayhash
+#else
+#error "port"
+#endif
+ return cpus;
+}
+
+void PinThreadToCPU(const int cpu) {
+ ThreadAffinity affinity;
+#if OS_WIN
+ affinity.mask = 1ULL << cpu;
+#elif OS_LINUX
+ CPU_ZERO(&affinity.set);
+ CPU_SET(cpu, &affinity.set);
+#elif OS_FREEBSD
+ CPU_ZERO(&affinity.set);
+ CPU_SET(cpu, &affinity.set);
+#elif OS_MAC
+#else
+#error "port"
+#endif
+ SetThreadAffinity(&affinity);
+}
+
+void PinThreadToRandomCPU() {
+ std::vector<int> cpus = AvailableCPUs();
+
+ // Remove first two CPUs because interrupts are often pinned to them.
+ CHECK(cpus.size() > 2);
+ cpus.erase(cpus.begin(), cpus.begin() + 2);
+
+ // Random choice to prevent burning up the same core.
+ std::random_device device;
+ std::ranlux48 generator(device());
+ std::shuffle(cpus.begin(), cpus.end(), generator);
+ const int cpu = cpus.front();
+
+ PinThreadToCPU(cpu);
+
+#if HH_ARCH_X64
+ // After setting affinity, we should be running on the desired CPU.
+ printf("Running on CPU #%d, APIC ID %02x\n", cpu, ApicId());
+#else
+ printf("Running on CPU #%d\n", cpu);
+#endif
+}
+
+} // namespace highwayhash
diff --git a/contrib/libs/highwayhash/highwayhash/os_specific.h b/contrib/libs/highwayhash/highwayhash/os_specific.h
index cefd3628e4..46f3c3e3ef 100644
--- a/contrib/libs/highwayhash/highwayhash/os_specific.h
+++ b/contrib/libs/highwayhash/highwayhash/os_specific.h
@@ -1,54 +1,54 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef HIGHWAYHASH_OS_SPECIFIC_H_
-#define HIGHWAYHASH_OS_SPECIFIC_H_
-
-#include <vector>
-
-namespace highwayhash {
-
-// Returns current wall-clock time [seconds].
-double Now();
-
-// Sets this thread's priority to the maximum. This should not be called on
-// single-core systems. Requires elevated permissions. No effect on Linux
-// because it increases runtime and variability (issue #19).
-void RaiseThreadPriority();
-
-// Returns CPU numbers in [0, N), where N is the number of bits in the
-// thread's initial affinity (unaffected by any SetThreadAffinity).
-std::vector<int> AvailableCPUs();
-
-// Opaque.
-struct ThreadAffinity;
-
-// Caller must free() the return value.
-ThreadAffinity* GetThreadAffinity();
-
-// Restores a previous affinity returned by GetThreadAffinity.
-void SetThreadAffinity(ThreadAffinity* affinity);
-
-// Ensures the thread is running on the specified cpu, and no others.
-// Useful for reducing nanobenchmark variability (fewer context switches).
-// Uses SetThreadAffinity.
-void PinThreadToCPU(const int cpu);
-
-// Random choice of CPU avoids overloading any one core.
-// Uses SetThreadAffinity.
-void PinThreadToRandomCPU();
-
-} // namespace highwayhash
-
-#endif // HIGHWAYHASH_OS_SPECIFIC_H_
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef HIGHWAYHASH_OS_SPECIFIC_H_
+#define HIGHWAYHASH_OS_SPECIFIC_H_
+
+#include <vector>
+
+namespace highwayhash {
+
+// Returns current wall-clock time [seconds].
+double Now();
+
+// Sets this thread's priority to the maximum. This should not be called on
+// single-core systems. Requires elevated permissions. No effect on Linux
+// because it increases runtime and variability (issue #19).
+void RaiseThreadPriority();
+
+// Returns CPU numbers in [0, N), where N is the number of bits in the
+// thread's initial affinity (unaffected by any SetThreadAffinity).
+std::vector<int> AvailableCPUs();
+
+// Opaque.
+struct ThreadAffinity;
+
+// Caller must free() the return value.
+ThreadAffinity* GetThreadAffinity();
+
+// Restores a previous affinity returned by GetThreadAffinity.
+void SetThreadAffinity(ThreadAffinity* affinity);
+
+// Ensures the thread is running on the specified cpu, and no others.
+// Useful for reducing nanobenchmark variability (fewer context switches).
+// Uses SetThreadAffinity.
+void PinThreadToCPU(const int cpu);
+
+// Random choice of CPU avoids overloading any one core.
+// Uses SetThreadAffinity.
+void PinThreadToRandomCPU();
+
+} // namespace highwayhash
+
+#endif // HIGHWAYHASH_OS_SPECIFIC_H_
diff --git a/contrib/libs/highwayhash/highwayhash/profiler.h b/contrib/libs/highwayhash/highwayhash/profiler.h
index 9e8f5f6958..09da7e71a5 100644
--- a/contrib/libs/highwayhash/highwayhash/profiler.h
+++ b/contrib/libs/highwayhash/highwayhash/profiler.h
@@ -1,754 +1,754 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef HIGHWAYHASH_PROFILER_H_
-#define HIGHWAYHASH_PROFILER_H_
-
-// High precision, low overhead time measurements. Returns exact call counts and
-// total elapsed time for user-defined 'zones' (code regions, i.e. C++ scopes).
-//
-// Usage: add this header to BUILD srcs; instrument regions of interest:
-// { PROFILER_ZONE("name"); /*code*/ } or
-// void FuncToMeasure() { PROFILER_FUNC; /*code*/ }.
-// After all threads have exited any zones, invoke PROFILER_PRINT_RESULTS() to
-// print call counts and average durations [CPU cycles] to stdout, sorted in
-// descending order of total duration.
-
-// Configuration settings:
-
-// If zero, this file has no effect and no measurements will be recorded.
-#ifndef PROFILER_ENABLED
-#define PROFILER_ENABLED 1
-#endif
-
-// How many mebibytes to allocate (if PROFILER_ENABLED) per thread that
-// enters at least one zone. Once this buffer is full, the thread will analyze
-// and discard packets, thus temporarily adding some observer overhead.
-// Each zone occupies 16 bytes.
-#ifndef PROFILER_THREAD_STORAGE
-#define PROFILER_THREAD_STORAGE 200ULL
-#endif
-
-#if PROFILER_ENABLED
-
-#include <algorithm> // min/max
-#include <atomic>
-#include <cassert>
-#include <cstddef> // ptrdiff_t
-#include <cstdint>
-#include <cstdio>
-#include <cstdlib>
-#include <cstring> // memcpy
-#include <new>
-
-#include "highwayhash/arch_specific.h"
-#include "highwayhash/compiler_specific.h"
-
-// Non-portable aspects:
-// - SSE2 128-bit load/store (write-combining, UpdateOrAdd)
-// - RDTSCP timestamps (serializing, high-resolution)
-// - assumes string literals are stored within an 8 MiB range
-// - compiler-specific annotations (restrict, alignment, fences)
-#if HH_ARCH_X64
-#include <emmintrin.h>
-#if HH_MSC_VERSION
-#include <intrin.h>
-#else
-#include <x86intrin.h>
-#endif
-#endif
-
-#include "highwayhash/robust_statistics.h"
-#include "highwayhash/tsc_timer.h"
-
-#define PROFILER_CHECK(condition) \
- while (!(condition)) { \
- printf("Profiler check failed at line %d\n", __LINE__); \
- abort(); \
- }
-
-namespace highwayhash {
-
-// Upper bounds for various fixed-size data structures (guarded via assert):
-
-// How many threads can actually enter a zone (those that don't do not count).
-// Memory use is about kMaxThreads * PROFILER_THREAD_STORAGE MiB.
-// WARNING: a fiber library can spawn hundreds of threads.
-static constexpr size_t kMaxThreads = 128;
-
-// Maximum nesting of zones.
-static constexpr size_t kMaxDepth = 64;
-
-// Total number of zones.
-static constexpr size_t kMaxZones = 256;
-
-// Functions that depend on the cache line size.
-class CacheAligned {
- public:
- static constexpr size_t kPointerSize = sizeof(void*);
- static constexpr size_t kCacheLineSize = 64;
-
- static void* Allocate(const size_t bytes) {
- char* const allocated = static_cast<char*>(malloc(bytes + kCacheLineSize));
- if (allocated == nullptr) {
- return nullptr;
- }
- const uintptr_t misalignment =
- reinterpret_cast<uintptr_t>(allocated) & (kCacheLineSize - 1);
- // malloc is at least kPointerSize aligned, so we can store the "allocated"
- // pointer immediately before the aligned memory.
- assert(misalignment % kPointerSize == 0);
- char* const aligned = allocated + kCacheLineSize - misalignment;
- memcpy(aligned - kPointerSize, &allocated, kPointerSize);
- return aligned;
- }
-
- // Template allows freeing pointer-to-const.
- template <typename T>
- static void Free(T* aligned_pointer) {
- if (aligned_pointer == nullptr) {
- return;
- }
- const char* const aligned = reinterpret_cast<const char*>(aligned_pointer);
- assert(reinterpret_cast<uintptr_t>(aligned) % kCacheLineSize == 0);
- char* allocated;
- memcpy(&allocated, aligned - kPointerSize, kPointerSize);
- assert(allocated <= aligned - kPointerSize);
- assert(allocated >= aligned - kCacheLineSize);
- free(allocated);
- }
-
-#if HH_ARCH_X64
- // Overwrites "to" without loading it into the cache (read-for-ownership).
- template <typename T>
- static void StreamCacheLine(const T* from_items, T* to_items) {
- const __m128i* const from = reinterpret_cast<const __m128i*>(from_items);
- __m128i* const to = reinterpret_cast<__m128i*>(to_items);
- HH_COMPILER_FENCE;
- const __m128i v0 = _mm_load_si128(from + 0);
- const __m128i v1 = _mm_load_si128(from + 1);
- const __m128i v2 = _mm_load_si128(from + 2);
- const __m128i v3 = _mm_load_si128(from + 3);
- // Fences prevent the compiler from reordering loads/stores, which may
- // interfere with write-combining.
- HH_COMPILER_FENCE;
- _mm_stream_si128(to + 0, v0);
- _mm_stream_si128(to + 1, v1);
- _mm_stream_si128(to + 2, v2);
- _mm_stream_si128(to + 3, v3);
- HH_COMPILER_FENCE;
- }
-#endif
-};
-
-// Represents zone entry/exit events. Stores a full-resolution timestamp plus
-// an offset (representing zone name or identifying exit packets). POD.
-class Packet {
- public:
- // If offsets do not fit, UpdateOrAdd will overrun our heap allocation
- // (governed by kMaxZones). We have seen multi-megabyte offsets.
- static constexpr size_t kOffsetBits = 25;
- static constexpr uint64_t kOffsetBias = 1ULL << (kOffsetBits - 1);
-
- // We need full-resolution timestamps; at an effective rate of 4 GHz,
- // this permits 1 minute zone durations (for longer durations, split into
- // multiple zones). Wraparound is handled by masking.
- static constexpr size_t kTimestampBits = 64 - kOffsetBits;
- static constexpr uint64_t kTimestampMask = (1ULL << kTimestampBits) - 1;
-
- static Packet Make(const size_t biased_offset, const uint64_t timestamp) {
- assert(biased_offset < (1ULL << kOffsetBits));
-
- Packet packet;
- packet.bits_ =
- (biased_offset << kTimestampBits) + (timestamp & kTimestampMask);
- return packet;
- }
-
- uint64_t Timestamp() const { return bits_ & kTimestampMask; }
-
- size_t BiasedOffset() const { return (bits_ >> kTimestampBits); }
-
- private:
- uint64_t bits_;
-};
-static_assert(sizeof(Packet) == 8, "Wrong Packet size");
-
-// Returns the address of a string literal. Assuming zone names are also
-// literals and stored nearby, we can represent them as offsets, which are
-// faster to compute than hashes or even a static index.
-//
-// This function must not be static - each call (even from other translation
-// units) must return the same value.
-inline const char* StringOrigin() {
- // Chosen such that no zone name is a prefix nor suffix of this string
- // to ensure they aren't merged (offset 0 identifies zone-exit packets).
- static const char* string_origin = "__#__";
- return string_origin - Packet::kOffsetBias;
-}
-
-// Representation of an active zone, stored in a stack. Used to deduct
-// child duration from the parent's self time. POD.
-struct Node {
- Packet packet;
- uint64_t child_total;
-};
-
-// Holds statistics for all zones with the same name. POD.
-struct Accumulator {
- static constexpr size_t kNumCallBits = 64 - Packet::kOffsetBits;
-
- uint64_t BiasedOffset() const { return num_calls >> kNumCallBits; }
- uint64_t NumCalls() const { return num_calls & ((1ULL << kNumCallBits) - 1); }
-
- // UpdateOrAdd relies upon this layout.
- uint64_t num_calls = 0; // upper bits = biased_offset.
- uint64_t total_duration = 0;
-};
-#if HH_ARCH_X64
-static_assert(sizeof(Accumulator) == sizeof(__m128i), "Wrong Accumulator size");
-#endif
-
-template <typename T>
-inline T ClampedSubtract(const T minuend, const T subtrahend) {
- if (subtrahend > minuend) {
- return 0;
- }
- return minuend - subtrahend;
-}
-
-// Per-thread call graph (stack) and Accumulator for each zone.
-class Results {
- public:
- Results() {
- // Zero-initialize first accumulator to avoid a check for num_zones_ == 0.
- memset(zones_, 0, sizeof(Accumulator));
- }
-
- // Used for computing overhead when this thread encounters its first Zone.
- // This has no observable effect apart from increasing "analyze_elapsed_".
- uint64_t ZoneDuration(const Packet* packets) {
- PROFILER_CHECK(depth_ == 0);
- PROFILER_CHECK(num_zones_ == 0);
- AnalyzePackets(packets, 2);
- const uint64_t duration = zones_[0].total_duration;
- zones_[0].num_calls = 0;
- zones_[0].total_duration = 0;
- PROFILER_CHECK(depth_ == 0);
- num_zones_ = 0;
- return duration;
- }
-
- void SetSelfOverhead(const uint64_t self_overhead) {
- self_overhead_ = self_overhead;
- }
-
- void SetChildOverhead(const uint64_t child_overhead) {
- child_overhead_ = child_overhead;
- }
-
- // Draw all required information from the packets, which can be discarded
- // afterwards. Called whenever this thread's storage is full.
- void AnalyzePackets(const Packet* packets, const size_t num_packets) {
- const uint64_t t0 = Start<uint64_t>();
-
- for (size_t i = 0; i < num_packets; ++i) {
- const Packet p = packets[i];
- // Entering a zone
- if (p.BiasedOffset() != Packet::kOffsetBias) {
- assert(depth_ < kMaxDepth);
- nodes_[depth_].packet = p;
- nodes_[depth_].child_total = 0;
- ++depth_;
- continue;
- }
-
- assert(depth_ != 0);
- const Node& node = nodes_[depth_ - 1];
- // Masking correctly handles unsigned wraparound.
- const uint64_t duration =
- (p.Timestamp() - node.packet.Timestamp()) & Packet::kTimestampMask;
- const uint64_t self_duration = ClampedSubtract(
- duration, self_overhead_ + child_overhead_ + node.child_total);
-
- UpdateOrAdd(node.packet.BiasedOffset(), self_duration);
- --depth_;
-
- // Deduct this nested node's time from its parent's self_duration.
- if (depth_ != 0) {
- nodes_[depth_ - 1].child_total += duration + child_overhead_;
- }
- }
-
- const uint64_t t1 = Stop<uint64_t>();
- analyze_elapsed_ += t1 - t0;
- }
-
- // Incorporates results from another thread. Call after all threads have
- // exited any zones.
- void Assimilate(const Results& other) {
- const uint64_t t0 = Start<uint64_t>();
- assert(depth_ == 0);
- assert(other.depth_ == 0);
-
- for (size_t i = 0; i < other.num_zones_; ++i) {
- const Accumulator& zone = other.zones_[i];
- UpdateOrAdd(zone.BiasedOffset(), zone.total_duration);
- }
- const uint64_t t1 = Stop<uint64_t>();
- analyze_elapsed_ += t1 - t0 + other.analyze_elapsed_;
- }
-
- // Single-threaded.
- void Print() {
- const uint64_t t0 = Start<uint64_t>();
- MergeDuplicates();
-
- // Sort by decreasing total (self) cost.
- std::sort(zones_, zones_ + num_zones_,
- [](const Accumulator& r1, const Accumulator& r2) {
- return r1.total_duration > r2.total_duration;
- });
-
- const char* string_origin = StringOrigin();
- for (size_t i = 0; i < num_zones_; ++i) {
- const Accumulator& r = zones_[i];
- const uint64_t num_calls = r.NumCalls();
- printf("%40s: %10zu x %15zu = %15zu\n", string_origin + r.BiasedOffset(),
- num_calls, r.total_duration / num_calls, r.total_duration);
- }
-
- const uint64_t t1 = Stop<uint64_t>();
- analyze_elapsed_ += t1 - t0;
- printf("Total clocks during analysis: %zu\n", analyze_elapsed_);
- }
-
- private:
-#if HH_ARCH_X64
- static bool SameOffset(const __m128i& zone, const size_t biased_offset) {
- const uint64_t num_calls = _mm_cvtsi128_si64(zone);
- return (num_calls >> Accumulator::kNumCallBits) == biased_offset;
- }
-#endif
-
- // Updates an existing Accumulator (uniquely identified by biased_offset) or
- // adds one if this is the first time this thread analyzed that zone.
- // Uses a self-organizing list data structure, which avoids dynamic memory
- // allocations and is far faster than unordered_map. Loads, updates and
- // stores the entire Accumulator with vector instructions.
- void UpdateOrAdd(const size_t biased_offset, const uint64_t duration) {
- assert(biased_offset < (1ULL << Packet::kOffsetBits));
-
-#if HH_ARCH_X64
- const __m128i one_64 = _mm_set1_epi64x(1);
- const __m128i duration_64 = _mm_cvtsi64_si128(duration);
- const __m128i add_duration_call = _mm_unpacklo_epi64(one_64, duration_64);
-
- __m128i* const HH_RESTRICT zones = reinterpret_cast<__m128i*>(zones_);
-
- // Special case for first zone: (maybe) update, without swapping.
- __m128i prev = _mm_load_si128(zones);
- if (SameOffset(prev, biased_offset)) {
- prev = _mm_add_epi64(prev, add_duration_call);
- assert(SameOffset(prev, biased_offset));
- _mm_store_si128(zones, prev);
- return;
- }
-
- // Look for a zone with the same offset.
- for (size_t i = 1; i < num_zones_; ++i) {
- __m128i zone = _mm_load_si128(zones + i);
- if (SameOffset(zone, biased_offset)) {
- zone = _mm_add_epi64(zone, add_duration_call);
- assert(SameOffset(zone, biased_offset));
- // Swap with predecessor (more conservative than move to front,
- // but at least as successful).
- _mm_store_si128(zones + i - 1, zone);
- _mm_store_si128(zones + i, prev);
- return;
- }
- prev = zone;
- }
-
- // Not found; create a new Accumulator.
- const __m128i biased_offset_64 = _mm_slli_epi64(
- _mm_cvtsi64_si128(biased_offset), Accumulator::kNumCallBits);
- const __m128i zone = _mm_add_epi64(biased_offset_64, add_duration_call);
- assert(SameOffset(zone, biased_offset));
-
- assert(num_zones_ < kMaxZones);
- _mm_store_si128(zones + num_zones_, zone);
- ++num_zones_;
-#else
- // Special case for first zone: (maybe) update, without swapping.
- if (zones_[0].BiasedOffset() == biased_offset) {
- zones_[0].total_duration += duration;
- zones_[0].num_calls += 1;
- assert(zones_[0].BiasedOffset() == biased_offset);
- return;
- }
-
- // Look for a zone with the same offset.
- for (size_t i = 1; i < num_zones_; ++i) {
- if (zones_[i].BiasedOffset() == biased_offset) {
- zones_[i].total_duration += duration;
- zones_[i].num_calls += 1;
- assert(zones_[i].BiasedOffset() == biased_offset);
- // Swap with predecessor (more conservative than move to front,
- // but at least as successful).
- const Accumulator prev = zones_[i - 1];
- zones_[i - 1] = zones_[i];
- zones_[i] = prev;
- return;
- }
- }
-
- // Not found; create a new Accumulator.
- assert(num_zones_ < kMaxZones);
- Accumulator* HH_RESTRICT zone = zones_ + num_zones_;
- zone->num_calls = (biased_offset << Accumulator::kNumCallBits) + 1;
- zone->total_duration = duration;
- assert(zone->BiasedOffset() == biased_offset);
- ++num_zones_;
-#endif
- }
-
- // Each instantiation of a function template seems to get its own copy of
- // __func__ and GCC doesn't merge them. An N^2 search for duplicates is
- // acceptable because we only expect a few dozen zones.
- void MergeDuplicates() {
- const char* string_origin = StringOrigin();
- for (size_t i = 0; i < num_zones_; ++i) {
- const size_t biased_offset = zones_[i].BiasedOffset();
- const char* name = string_origin + biased_offset;
- // Separate num_calls from biased_offset so we can add them together.
- uint64_t num_calls = zones_[i].NumCalls();
-
- // Add any subsequent duplicates to num_calls and total_duration.
- for (size_t j = i + 1; j < num_zones_;) {
- if (!strcmp(name, string_origin + zones_[j].BiasedOffset())) {
- num_calls += zones_[j].NumCalls();
- zones_[i].total_duration += zones_[j].total_duration;
- // Fill hole with last item.
- zones_[j] = zones_[--num_zones_];
- } else { // Name differed, try next Accumulator.
- ++j;
- }
- }
-
- assert(num_calls < (1ULL << Accumulator::kNumCallBits));
-
- // Re-pack regardless of whether any duplicates were found.
- zones_[i].num_calls =
- (biased_offset << Accumulator::kNumCallBits) + num_calls;
- }
- }
-
- uint64_t analyze_elapsed_ = 0;
- uint64_t self_overhead_ = 0;
- uint64_t child_overhead_ = 0;
-
- size_t depth_ = 0; // Number of active zones.
- size_t num_zones_ = 0; // Number of retired zones.
-
- HH_ALIGNAS(64) Node nodes_[kMaxDepth]; // Stack
- HH_ALIGNAS(64) Accumulator zones_[kMaxZones]; // Self-organizing list
-};
-
-// Per-thread packet storage, allocated via CacheAligned.
-class ThreadSpecific {
- static constexpr size_t kBufferCapacity =
- CacheAligned::kCacheLineSize / sizeof(Packet);
-
- public:
- // "name" is used to sanity-check offsets fit in kOffsetBits.
- explicit ThreadSpecific(const char* name)
- : packets_(static_cast<Packet*>(
- CacheAligned::Allocate(PROFILER_THREAD_STORAGE << 20))),
- num_packets_(0),
- max_packets_(PROFILER_THREAD_STORAGE << 17),
- string_origin_(StringOrigin()) {
- // Even in optimized builds (with NDEBUG), verify that this zone's name
- // offset fits within the allotted space. If not, UpdateOrAdd is likely to
- // overrun zones_[]. We also assert(), but users often do not run debug
- // builds. Checking here on the cold path (only reached once per thread)
- // is cheap, but it only covers one zone.
- const size_t biased_offset = name - string_origin_;
- PROFILER_CHECK(biased_offset <= (1ULL << Packet::kOffsetBits));
- }
-
- ~ThreadSpecific() { CacheAligned::Free(packets_); }
-
- // Depends on Zone => defined below.
- void ComputeOverhead();
-
- void WriteEntry(const char* name, const uint64_t timestamp) {
- const size_t biased_offset = name - string_origin_;
- Write(Packet::Make(biased_offset, timestamp));
- }
-
- void WriteExit(const uint64_t timestamp) {
- const size_t biased_offset = Packet::kOffsetBias;
- Write(Packet::Make(biased_offset, timestamp));
- }
-
- void AnalyzeRemainingPackets() {
-#if HH_ARCH_X64
- // Ensures prior weakly-ordered streaming stores are globally visible.
- _mm_sfence();
-
- // Storage full => empty it.
- if (num_packets_ + buffer_size_ > max_packets_) {
- results_.AnalyzePackets(packets_, num_packets_);
- num_packets_ = 0;
- }
- memcpy(packets_ + num_packets_, buffer_, buffer_size_ * sizeof(Packet));
- num_packets_ += buffer_size_;
-#endif
-
- results_.AnalyzePackets(packets_, num_packets_);
- num_packets_ = 0;
- }
-
- Results& GetResults() { return results_; }
-
- private:
- // Write packet to buffer/storage, emptying them as needed.
- void Write(const Packet packet) {
-#if HH_ARCH_X64
- // Buffer full => copy to storage.
- if (buffer_size_ == kBufferCapacity) {
- // Storage full => empty it.
- if (num_packets_ + kBufferCapacity > max_packets_) {
- results_.AnalyzePackets(packets_, num_packets_);
- num_packets_ = 0;
- }
- // This buffering halves observer overhead and decreases the overall
- // runtime by about 3%.
- CacheAligned::StreamCacheLine(buffer_, packets_ + num_packets_);
- num_packets_ += kBufferCapacity;
- buffer_size_ = 0;
- }
- buffer_[buffer_size_] = packet;
- ++buffer_size_;
-#else
- // Write directly to storage.
- if (num_packets_ >= max_packets_) {
- results_.AnalyzePackets(packets_, num_packets_);
- num_packets_ = 0;
- }
- packets_[num_packets_] = packet;
- ++num_packets_;
-#endif
- }
-
- // Write-combining buffer to avoid cache pollution. Must be the first
- // non-static member to ensure cache-line alignment.
-#if HH_ARCH_X64
- Packet buffer_[kBufferCapacity];
- size_t buffer_size_ = 0;
-#endif
-
- // Contiguous storage for zone enter/exit packets.
- Packet* const HH_RESTRICT packets_;
- size_t num_packets_;
- const size_t max_packets_;
- // Cached here because we already read this cache line on zone entry/exit.
- const char* HH_RESTRICT string_origin_;
- Results results_;
-};
-
-class ThreadList {
- public:
- // Thread-safe.
- void Add(ThreadSpecific* const ts) {
- const uint32_t index = num_threads_.fetch_add(1);
- PROFILER_CHECK(index < kMaxThreads);
- threads_[index] = ts;
- }
-
- // Single-threaded.
- void PrintResults() {
- const uint32_t num_threads = num_threads_.load();
- for (uint32_t i = 0; i < num_threads; ++i) {
- threads_[i]->AnalyzeRemainingPackets();
- }
-
- // Combine all threads into a single Result.
- for (uint32_t i = 1; i < num_threads; ++i) {
- threads_[0]->GetResults().Assimilate(threads_[i]->GetResults());
- }
-
- if (num_threads != 0) {
- threads_[0]->GetResults().Print();
- }
- }
-
- private:
- // Owning pointers.
- HH_ALIGNAS(64) ThreadSpecific* threads_[kMaxThreads];
- std::atomic<uint32_t> num_threads_{0};
-};
-
-// RAII zone enter/exit recorder constructed by the ZONE macro; also
-// responsible for initializing ThreadSpecific.
-class Zone {
- public:
- // "name" must be a string literal (see StringOrigin).
- HH_NOINLINE explicit Zone(const char* name) {
- HH_COMPILER_FENCE;
- ThreadSpecific* HH_RESTRICT thread_specific = StaticThreadSpecific();
- if (HH_UNLIKELY(thread_specific == nullptr)) {
- void* mem = CacheAligned::Allocate(sizeof(ThreadSpecific));
- thread_specific = new (mem) ThreadSpecific(name);
- // Must happen before ComputeOverhead, which re-enters this ctor.
- Threads().Add(thread_specific);
- StaticThreadSpecific() = thread_specific;
- thread_specific->ComputeOverhead();
- }
-
- // (Capture timestamp ASAP, not inside WriteEntry.)
- HH_COMPILER_FENCE;
- const uint64_t timestamp = Start<uint64_t>();
- thread_specific->WriteEntry(name, timestamp);
- }
-
- HH_NOINLINE ~Zone() {
- HH_COMPILER_FENCE;
- const uint64_t timestamp = Stop<uint64_t>();
- StaticThreadSpecific()->WriteExit(timestamp);
- HH_COMPILER_FENCE;
- }
-
- // Call exactly once after all threads have exited all zones.
- static void PrintResults() { Threads().PrintResults(); }
-
- private:
- // Returns reference to the thread's ThreadSpecific pointer (initially null).
- // Function-local static avoids needing a separate definition.
- static ThreadSpecific*& StaticThreadSpecific() {
- static thread_local ThreadSpecific* thread_specific;
- return thread_specific;
- }
-
- // Returns the singleton ThreadList. Non time-critical.
- static ThreadList& Threads() {
- static ThreadList threads_;
- return threads_;
- }
-};
-
-// Creates a zone starting from here until the end of the current scope.
-// Timestamps will be recorded when entering and exiting the zone.
-// "name" must be a string literal, which is ensured by merging with "".
-#define PROFILER_ZONE(name) \
- HH_COMPILER_FENCE; \
- const Zone zone("" name); \
- HH_COMPILER_FENCE
-
-// Creates a zone for an entire function (when placed at its beginning).
-// Shorter/more convenient than ZONE.
-#define PROFILER_FUNC \
- HH_COMPILER_FENCE; \
- const Zone zone(__func__); \
- HH_COMPILER_FENCE
-
-#define PROFILER_PRINT_RESULTS Zone::PrintResults
-
-inline void ThreadSpecific::ComputeOverhead() {
- // Delay after capturing timestamps before/after the actual zone runs. Even
- // with frequency throttling disabled, this has a multimodal distribution,
- // including 32, 34, 48, 52, 59, 62.
- uint64_t self_overhead;
- {
- const size_t kNumSamples = 32;
- uint32_t samples[kNumSamples];
- for (size_t idx_sample = 0; idx_sample < kNumSamples; ++idx_sample) {
- const size_t kNumDurations = 1024;
- uint32_t durations[kNumDurations];
-
- for (size_t idx_duration = 0; idx_duration < kNumDurations;
- ++idx_duration) {
- { PROFILER_ZONE("Dummy Zone (never shown)"); }
-#if HH_ARCH_X64
- const uint64_t duration = results_.ZoneDuration(buffer_);
- buffer_size_ = 0;
-#else
- const uint64_t duration = results_.ZoneDuration(packets_);
- num_packets_ = 0;
-#endif
- durations[idx_duration] = static_cast<uint32_t>(duration);
- PROFILER_CHECK(num_packets_ == 0);
- }
- CountingSort(durations, durations + kNumDurations);
- samples[idx_sample] = Mode(durations, kNumDurations);
- }
- // Median.
- CountingSort(samples, samples + kNumSamples);
- self_overhead = samples[kNumSamples / 2];
- printf("Overhead: %zu\n", self_overhead);
- results_.SetSelfOverhead(self_overhead);
- }
-
- // Delay before capturing start timestamp / after end timestamp.
- const size_t kNumSamples = 32;
- uint32_t samples[kNumSamples];
- for (size_t idx_sample = 0; idx_sample < kNumSamples; ++idx_sample) {
- const size_t kNumDurations = 16;
- uint32_t durations[kNumDurations];
- for (size_t idx_duration = 0; idx_duration < kNumDurations;
- ++idx_duration) {
- const size_t kReps = 10000;
- // Analysis time should not be included => must fit within buffer.
- PROFILER_CHECK(kReps * 2 < max_packets_);
-#if HH_ARCH_X64
- _mm_mfence();
-#endif
- const uint64_t t0 = Start<uint64_t>();
- for (size_t i = 0; i < kReps; ++i) {
- PROFILER_ZONE("Dummy");
- }
-#if HH_ARCH_X64
- _mm_sfence();
-#endif
- const uint64_t t1 = Stop<uint64_t>();
-#if HH_ARCH_X64
- PROFILER_CHECK(num_packets_ + buffer_size_ == kReps * 2);
- buffer_size_ = 0;
-#else
- PROFILER_CHECK(num_packets_ == kReps * 2);
-#endif
- num_packets_ = 0;
- const uint64_t avg_duration = (t1 - t0 + kReps / 2) / kReps;
- durations[idx_duration] =
- static_cast<uint32_t>(ClampedSubtract(avg_duration, self_overhead));
- }
- CountingSort(durations, durations + kNumDurations);
- samples[idx_sample] = Mode(durations, kNumDurations);
- }
- CountingSort(samples, samples + kNumSamples);
- const uint64_t child_overhead = samples[9 * kNumSamples / 10];
- printf("Child overhead: %zu\n", child_overhead);
- results_.SetChildOverhead(child_overhead);
-}
-
-} // namespace highwayhash
-
-#else // !PROFILER_ENABLED
-#define PROFILER_ZONE(name)
-#define PROFILER_FUNC
-#define PROFILER_PRINT_RESULTS()
-#endif
-
-#endif // HIGHWAYHASH_PROFILER_H_
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef HIGHWAYHASH_PROFILER_H_
+#define HIGHWAYHASH_PROFILER_H_
+
+// High precision, low overhead time measurements. Returns exact call counts and
+// total elapsed time for user-defined 'zones' (code regions, i.e. C++ scopes).
+//
+// Usage: add this header to BUILD srcs; instrument regions of interest:
+// { PROFILER_ZONE("name"); /*code*/ } or
+// void FuncToMeasure() { PROFILER_FUNC; /*code*/ }.
+// After all threads have exited any zones, invoke PROFILER_PRINT_RESULTS() to
+// print call counts and average durations [CPU cycles] to stdout, sorted in
+// descending order of total duration.
+
+// Configuration settings:
+
+// If zero, this file has no effect and no measurements will be recorded.
+#ifndef PROFILER_ENABLED
+#define PROFILER_ENABLED 1
+#endif
+
+// How many mebibytes to allocate (if PROFILER_ENABLED) per thread that
+// enters at least one zone. Once this buffer is full, the thread will analyze
+// and discard packets, thus temporarily adding some observer overhead.
+// Each zone occupies 16 bytes.
+#ifndef PROFILER_THREAD_STORAGE
+#define PROFILER_THREAD_STORAGE 200ULL
+#endif
+
+#if PROFILER_ENABLED
+
+#include <algorithm> // min/max
+#include <atomic>
+#include <cassert>
+#include <cstddef> // ptrdiff_t
+#include <cstdint>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring> // memcpy
+#include <new>
+
+#include "highwayhash/arch_specific.h"
+#include "highwayhash/compiler_specific.h"
+
+// Non-portable aspects:
+// - SSE2 128-bit load/store (write-combining, UpdateOrAdd)
+// - RDTSCP timestamps (serializing, high-resolution)
+// - assumes string literals are stored within an 8 MiB range
+// - compiler-specific annotations (restrict, alignment, fences)
+#if HH_ARCH_X64
+#include <emmintrin.h>
+#if HH_MSC_VERSION
+#include <intrin.h>
+#else
+#include <x86intrin.h>
+#endif
+#endif
+
+#include "highwayhash/robust_statistics.h"
+#include "highwayhash/tsc_timer.h"
+
+#define PROFILER_CHECK(condition) \
+ while (!(condition)) { \
+ printf("Profiler check failed at line %d\n", __LINE__); \
+ abort(); \
+ }
+
+namespace highwayhash {
+
+// Upper bounds for various fixed-size data structures (guarded via assert):
+
+// How many threads can actually enter a zone (those that don't do not count).
+// Memory use is about kMaxThreads * PROFILER_THREAD_STORAGE MiB.
+// WARNING: a fiber library can spawn hundreds of threads.
+static constexpr size_t kMaxThreads = 128;
+
+// Maximum nesting of zones.
+static constexpr size_t kMaxDepth = 64;
+
+// Total number of zones.
+static constexpr size_t kMaxZones = 256;
+
+// Functions that depend on the cache line size.
+class CacheAligned {
+ public:
+ static constexpr size_t kPointerSize = sizeof(void*);
+ static constexpr size_t kCacheLineSize = 64;
+
+ static void* Allocate(const size_t bytes) {
+ char* const allocated = static_cast<char*>(malloc(bytes + kCacheLineSize));
+ if (allocated == nullptr) {
+ return nullptr;
+ }
+ const uintptr_t misalignment =
+ reinterpret_cast<uintptr_t>(allocated) & (kCacheLineSize - 1);
+ // malloc is at least kPointerSize aligned, so we can store the "allocated"
+ // pointer immediately before the aligned memory.
+ assert(misalignment % kPointerSize == 0);
+ char* const aligned = allocated + kCacheLineSize - misalignment;
+ memcpy(aligned - kPointerSize, &allocated, kPointerSize);
+ return aligned;
+ }
+
+ // Template allows freeing pointer-to-const.
+ template <typename T>
+ static void Free(T* aligned_pointer) {
+ if (aligned_pointer == nullptr) {
+ return;
+ }
+ const char* const aligned = reinterpret_cast<const char*>(aligned_pointer);
+ assert(reinterpret_cast<uintptr_t>(aligned) % kCacheLineSize == 0);
+ char* allocated;
+ memcpy(&allocated, aligned - kPointerSize, kPointerSize);
+ assert(allocated <= aligned - kPointerSize);
+ assert(allocated >= aligned - kCacheLineSize);
+ free(allocated);
+ }
+
+#if HH_ARCH_X64
+ // Overwrites "to" without loading it into the cache (read-for-ownership).
+ template <typename T>
+ static void StreamCacheLine(const T* from_items, T* to_items) {
+ const __m128i* const from = reinterpret_cast<const __m128i*>(from_items);
+ __m128i* const to = reinterpret_cast<__m128i*>(to_items);
+ HH_COMPILER_FENCE;
+ const __m128i v0 = _mm_load_si128(from + 0);
+ const __m128i v1 = _mm_load_si128(from + 1);
+ const __m128i v2 = _mm_load_si128(from + 2);
+ const __m128i v3 = _mm_load_si128(from + 3);
+ // Fences prevent the compiler from reordering loads/stores, which may
+ // interfere with write-combining.
+ HH_COMPILER_FENCE;
+ _mm_stream_si128(to + 0, v0);
+ _mm_stream_si128(to + 1, v1);
+ _mm_stream_si128(to + 2, v2);
+ _mm_stream_si128(to + 3, v3);
+ HH_COMPILER_FENCE;
+ }
+#endif
+};
+
+// Represents zone entry/exit events. Stores a full-resolution timestamp plus
+// an offset (representing zone name or identifying exit packets). POD.
+class Packet {
+ public:
+ // If offsets do not fit, UpdateOrAdd will overrun our heap allocation
+ // (governed by kMaxZones). We have seen multi-megabyte offsets.
+ static constexpr size_t kOffsetBits = 25;
+ static constexpr uint64_t kOffsetBias = 1ULL << (kOffsetBits - 1);
+
+ // We need full-resolution timestamps; at an effective rate of 4 GHz,
+ // this permits 1 minute zone durations (for longer durations, split into
+ // multiple zones). Wraparound is handled by masking.
+ static constexpr size_t kTimestampBits = 64 - kOffsetBits;
+ static constexpr uint64_t kTimestampMask = (1ULL << kTimestampBits) - 1;
+
+ static Packet Make(const size_t biased_offset, const uint64_t timestamp) {
+ assert(biased_offset < (1ULL << kOffsetBits));
+
+ Packet packet;
+ packet.bits_ =
+ (biased_offset << kTimestampBits) + (timestamp & kTimestampMask);
+ return packet;
+ }
+
+ uint64_t Timestamp() const { return bits_ & kTimestampMask; }
+
+ size_t BiasedOffset() const { return (bits_ >> kTimestampBits); }
+
+ private:
+ uint64_t bits_;
+};
+static_assert(sizeof(Packet) == 8, "Wrong Packet size");
+
+// Returns the address of a string literal. Assuming zone names are also
+// literals and stored nearby, we can represent them as offsets, which are
+// faster to compute than hashes or even a static index.
+//
+// This function must not be static - each call (even from other translation
+// units) must return the same value.
+inline const char* StringOrigin() {
+ // Chosen such that no zone name is a prefix nor suffix of this string
+ // to ensure they aren't merged (offset 0 identifies zone-exit packets).
+ static const char* string_origin = "__#__";
+ return string_origin - Packet::kOffsetBias;
+}
+
+// Representation of an active zone, stored in a stack. Used to deduct
+// child duration from the parent's self time. POD.
+struct Node {
+ Packet packet;
+ uint64_t child_total;
+};
+
+// Holds statistics for all zones with the same name. POD.
+struct Accumulator {
+ static constexpr size_t kNumCallBits = 64 - Packet::kOffsetBits;
+
+ uint64_t BiasedOffset() const { return num_calls >> kNumCallBits; }
+ uint64_t NumCalls() const { return num_calls & ((1ULL << kNumCallBits) - 1); }
+
+ // UpdateOrAdd relies upon this layout.
+ uint64_t num_calls = 0; // upper bits = biased_offset.
+ uint64_t total_duration = 0;
+};
+#if HH_ARCH_X64
+static_assert(sizeof(Accumulator) == sizeof(__m128i), "Wrong Accumulator size");
+#endif
+
+template <typename T>
+inline T ClampedSubtract(const T minuend, const T subtrahend) {
+ if (subtrahend > minuend) {
+ return 0;
+ }
+ return minuend - subtrahend;
+}
+
+// Per-thread call graph (stack) and Accumulator for each zone.
+class Results {
+ public:
+ Results() {
+ // Zero-initialize first accumulator to avoid a check for num_zones_ == 0.
+ memset(zones_, 0, sizeof(Accumulator));
+ }
+
+ // Used for computing overhead when this thread encounters its first Zone.
+ // This has no observable effect apart from increasing "analyze_elapsed_".
+ uint64_t ZoneDuration(const Packet* packets) {
+ PROFILER_CHECK(depth_ == 0);
+ PROFILER_CHECK(num_zones_ == 0);
+ AnalyzePackets(packets, 2);
+ const uint64_t duration = zones_[0].total_duration;
+ zones_[0].num_calls = 0;
+ zones_[0].total_duration = 0;
+ PROFILER_CHECK(depth_ == 0);
+ num_zones_ = 0;
+ return duration;
+ }
+
+ void SetSelfOverhead(const uint64_t self_overhead) {
+ self_overhead_ = self_overhead;
+ }
+
+ void SetChildOverhead(const uint64_t child_overhead) {
+ child_overhead_ = child_overhead;
+ }
+
+ // Draw all required information from the packets, which can be discarded
+ // afterwards. Called whenever this thread's storage is full.
+ void AnalyzePackets(const Packet* packets, const size_t num_packets) {
+ const uint64_t t0 = Start<uint64_t>();
+
+ for (size_t i = 0; i < num_packets; ++i) {
+ const Packet p = packets[i];
+ // Entering a zone
+ if (p.BiasedOffset() != Packet::kOffsetBias) {
+ assert(depth_ < kMaxDepth);
+ nodes_[depth_].packet = p;
+ nodes_[depth_].child_total = 0;
+ ++depth_;
+ continue;
+ }
+
+ assert(depth_ != 0);
+ const Node& node = nodes_[depth_ - 1];
+ // Masking correctly handles unsigned wraparound.
+ const uint64_t duration =
+ (p.Timestamp() - node.packet.Timestamp()) & Packet::kTimestampMask;
+ const uint64_t self_duration = ClampedSubtract(
+ duration, self_overhead_ + child_overhead_ + node.child_total);
+
+ UpdateOrAdd(node.packet.BiasedOffset(), self_duration);
+ --depth_;
+
+ // Deduct this nested node's time from its parent's self_duration.
+ if (depth_ != 0) {
+ nodes_[depth_ - 1].child_total += duration + child_overhead_;
+ }
+ }
+
+ const uint64_t t1 = Stop<uint64_t>();
+ analyze_elapsed_ += t1 - t0;
+ }
+
+ // Incorporates results from another thread. Call after all threads have
+ // exited any zones.
+ void Assimilate(const Results& other) {
+ const uint64_t t0 = Start<uint64_t>();
+ assert(depth_ == 0);
+ assert(other.depth_ == 0);
+
+ for (size_t i = 0; i < other.num_zones_; ++i) {
+ const Accumulator& zone = other.zones_[i];
+ UpdateOrAdd(zone.BiasedOffset(), zone.total_duration);
+ }
+ const uint64_t t1 = Stop<uint64_t>();
+ analyze_elapsed_ += t1 - t0 + other.analyze_elapsed_;
+ }
+
+ // Single-threaded.
+ void Print() {
+ const uint64_t t0 = Start<uint64_t>();
+ MergeDuplicates();
+
+ // Sort by decreasing total (self) cost.
+ std::sort(zones_, zones_ + num_zones_,
+ [](const Accumulator& r1, const Accumulator& r2) {
+ return r1.total_duration > r2.total_duration;
+ });
+
+ const char* string_origin = StringOrigin();
+ for (size_t i = 0; i < num_zones_; ++i) {
+ const Accumulator& r = zones_[i];
+ const uint64_t num_calls = r.NumCalls();
+ printf("%40s: %10zu x %15zu = %15zu\n", string_origin + r.BiasedOffset(),
+ num_calls, r.total_duration / num_calls, r.total_duration);
+ }
+
+ const uint64_t t1 = Stop<uint64_t>();
+ analyze_elapsed_ += t1 - t0;
+ printf("Total clocks during analysis: %zu\n", analyze_elapsed_);
+ }
+
+ private:
+#if HH_ARCH_X64
+ static bool SameOffset(const __m128i& zone, const size_t biased_offset) {
+ const uint64_t num_calls = _mm_cvtsi128_si64(zone);
+ return (num_calls >> Accumulator::kNumCallBits) == biased_offset;
+ }
+#endif
+
+ // Updates an existing Accumulator (uniquely identified by biased_offset) or
+ // adds one if this is the first time this thread analyzed that zone.
+ // Uses a self-organizing list data structure, which avoids dynamic memory
+ // allocations and is far faster than unordered_map. Loads, updates and
+ // stores the entire Accumulator with vector instructions.
+ void UpdateOrAdd(const size_t biased_offset, const uint64_t duration) {
+ assert(biased_offset < (1ULL << Packet::kOffsetBits));
+
+#if HH_ARCH_X64
+ const __m128i one_64 = _mm_set1_epi64x(1);
+ const __m128i duration_64 = _mm_cvtsi64_si128(duration);
+ const __m128i add_duration_call = _mm_unpacklo_epi64(one_64, duration_64);
+
+ __m128i* const HH_RESTRICT zones = reinterpret_cast<__m128i*>(zones_);
+
+ // Special case for first zone: (maybe) update, without swapping.
+ __m128i prev = _mm_load_si128(zones);
+ if (SameOffset(prev, biased_offset)) {
+ prev = _mm_add_epi64(prev, add_duration_call);
+ assert(SameOffset(prev, biased_offset));
+ _mm_store_si128(zones, prev);
+ return;
+ }
+
+ // Look for a zone with the same offset.
+ for (size_t i = 1; i < num_zones_; ++i) {
+ __m128i zone = _mm_load_si128(zones + i);
+ if (SameOffset(zone, biased_offset)) {
+ zone = _mm_add_epi64(zone, add_duration_call);
+ assert(SameOffset(zone, biased_offset));
+ // Swap with predecessor (more conservative than move to front,
+ // but at least as successful).
+ _mm_store_si128(zones + i - 1, zone);
+ _mm_store_si128(zones + i, prev);
+ return;
+ }
+ prev = zone;
+ }
+
+ // Not found; create a new Accumulator.
+ const __m128i biased_offset_64 = _mm_slli_epi64(
+ _mm_cvtsi64_si128(biased_offset), Accumulator::kNumCallBits);
+ const __m128i zone = _mm_add_epi64(biased_offset_64, add_duration_call);
+ assert(SameOffset(zone, biased_offset));
+
+ assert(num_zones_ < kMaxZones);
+ _mm_store_si128(zones + num_zones_, zone);
+ ++num_zones_;
+#else
+ // Special case for first zone: (maybe) update, without swapping.
+ if (zones_[0].BiasedOffset() == biased_offset) {
+ zones_[0].total_duration += duration;
+ zones_[0].num_calls += 1;
+ assert(zones_[0].BiasedOffset() == biased_offset);
+ return;
+ }
+
+ // Look for a zone with the same offset.
+ for (size_t i = 1; i < num_zones_; ++i) {
+ if (zones_[i].BiasedOffset() == biased_offset) {
+ zones_[i].total_duration += duration;
+ zones_[i].num_calls += 1;
+ assert(zones_[i].BiasedOffset() == biased_offset);
+ // Swap with predecessor (more conservative than move to front,
+ // but at least as successful).
+ const Accumulator prev = zones_[i - 1];
+ zones_[i - 1] = zones_[i];
+ zones_[i] = prev;
+ return;
+ }
+ }
+
+ // Not found; create a new Accumulator.
+ assert(num_zones_ < kMaxZones);
+ Accumulator* HH_RESTRICT zone = zones_ + num_zones_;
+ zone->num_calls = (biased_offset << Accumulator::kNumCallBits) + 1;
+ zone->total_duration = duration;
+ assert(zone->BiasedOffset() == biased_offset);
+ ++num_zones_;
+#endif
+ }
+
+ // Each instantiation of a function template seems to get its own copy of
+ // __func__ and GCC doesn't merge them. An N^2 search for duplicates is
+ // acceptable because we only expect a few dozen zones.
+ void MergeDuplicates() {
+ const char* string_origin = StringOrigin();
+ for (size_t i = 0; i < num_zones_; ++i) {
+ const size_t biased_offset = zones_[i].BiasedOffset();
+ const char* name = string_origin + biased_offset;
+ // Separate num_calls from biased_offset so we can add them together.
+ uint64_t num_calls = zones_[i].NumCalls();
+
+ // Add any subsequent duplicates to num_calls and total_duration.
+ for (size_t j = i + 1; j < num_zones_;) {
+ if (!strcmp(name, string_origin + zones_[j].BiasedOffset())) {
+ num_calls += zones_[j].NumCalls();
+ zones_[i].total_duration += zones_[j].total_duration;
+ // Fill hole with last item.
+ zones_[j] = zones_[--num_zones_];
+ } else { // Name differed, try next Accumulator.
+ ++j;
+ }
+ }
+
+ assert(num_calls < (1ULL << Accumulator::kNumCallBits));
+
+ // Re-pack regardless of whether any duplicates were found.
+ zones_[i].num_calls =
+ (biased_offset << Accumulator::kNumCallBits) + num_calls;
+ }
+ }
+
+ uint64_t analyze_elapsed_ = 0;
+ uint64_t self_overhead_ = 0;
+ uint64_t child_overhead_ = 0;
+
+ size_t depth_ = 0; // Number of active zones.
+ size_t num_zones_ = 0; // Number of retired zones.
+
+ HH_ALIGNAS(64) Node nodes_[kMaxDepth]; // Stack
+ HH_ALIGNAS(64) Accumulator zones_[kMaxZones]; // Self-organizing list
+};
+
+// Per-thread packet storage, allocated via CacheAligned.
+class ThreadSpecific {
+ static constexpr size_t kBufferCapacity =
+ CacheAligned::kCacheLineSize / sizeof(Packet);
+
+ public:
+ // "name" is used to sanity-check offsets fit in kOffsetBits.
+ explicit ThreadSpecific(const char* name)
+ : packets_(static_cast<Packet*>(
+ CacheAligned::Allocate(PROFILER_THREAD_STORAGE << 20))),
+ num_packets_(0),
+ max_packets_(PROFILER_THREAD_STORAGE << 17),
+ string_origin_(StringOrigin()) {
+ // Even in optimized builds (with NDEBUG), verify that this zone's name
+ // offset fits within the allotted space. If not, UpdateOrAdd is likely to
+ // overrun zones_[]. We also assert(), but users often do not run debug
+ // builds. Checking here on the cold path (only reached once per thread)
+ // is cheap, but it only covers one zone.
+ const size_t biased_offset = name - string_origin_;
+ PROFILER_CHECK(biased_offset <= (1ULL << Packet::kOffsetBits));
+ }
+
+ ~ThreadSpecific() { CacheAligned::Free(packets_); }
+
+ // Depends on Zone => defined below.
+ void ComputeOverhead();
+
+ void WriteEntry(const char* name, const uint64_t timestamp) {
+ const size_t biased_offset = name - string_origin_;
+ Write(Packet::Make(biased_offset, timestamp));
+ }
+
+ void WriteExit(const uint64_t timestamp) {
+ const size_t biased_offset = Packet::kOffsetBias;
+ Write(Packet::Make(biased_offset, timestamp));
+ }
+
+ void AnalyzeRemainingPackets() {
+#if HH_ARCH_X64
+ // Ensures prior weakly-ordered streaming stores are globally visible.
+ _mm_sfence();
+
+ // Storage full => empty it.
+ if (num_packets_ + buffer_size_ > max_packets_) {
+ results_.AnalyzePackets(packets_, num_packets_);
+ num_packets_ = 0;
+ }
+ memcpy(packets_ + num_packets_, buffer_, buffer_size_ * sizeof(Packet));
+ num_packets_ += buffer_size_;
+#endif
+
+ results_.AnalyzePackets(packets_, num_packets_);
+ num_packets_ = 0;
+ }
+
+ Results& GetResults() { return results_; }
+
+ private:
+ // Write packet to buffer/storage, emptying them as needed.
+ void Write(const Packet packet) {
+#if HH_ARCH_X64
+ // Buffer full => copy to storage.
+ if (buffer_size_ == kBufferCapacity) {
+ // Storage full => empty it.
+ if (num_packets_ + kBufferCapacity > max_packets_) {
+ results_.AnalyzePackets(packets_, num_packets_);
+ num_packets_ = 0;
+ }
+ // This buffering halves observer overhead and decreases the overall
+ // runtime by about 3%.
+ CacheAligned::StreamCacheLine(buffer_, packets_ + num_packets_);
+ num_packets_ += kBufferCapacity;
+ buffer_size_ = 0;
+ }
+ buffer_[buffer_size_] = packet;
+ ++buffer_size_;
+#else
+ // Write directly to storage.
+ if (num_packets_ >= max_packets_) {
+ results_.AnalyzePackets(packets_, num_packets_);
+ num_packets_ = 0;
+ }
+ packets_[num_packets_] = packet;
+ ++num_packets_;
+#endif
+ }
+
+ // Write-combining buffer to avoid cache pollution. Must be the first
+ // non-static member to ensure cache-line alignment.
+#if HH_ARCH_X64
+ Packet buffer_[kBufferCapacity];
+ size_t buffer_size_ = 0;
+#endif
+
+ // Contiguous storage for zone enter/exit packets.
+ Packet* const HH_RESTRICT packets_;
+ size_t num_packets_;
+ const size_t max_packets_;
+ // Cached here because we already read this cache line on zone entry/exit.
+ const char* HH_RESTRICT string_origin_;
+ Results results_;
+};
+
+class ThreadList {
+ public:
+ // Thread-safe.
+ void Add(ThreadSpecific* const ts) {
+ const uint32_t index = num_threads_.fetch_add(1);
+ PROFILER_CHECK(index < kMaxThreads);
+ threads_[index] = ts;
+ }
+
+ // Single-threaded.
+ void PrintResults() {
+ const uint32_t num_threads = num_threads_.load();
+ for (uint32_t i = 0; i < num_threads; ++i) {
+ threads_[i]->AnalyzeRemainingPackets();
+ }
+
+ // Combine all threads into a single Result.
+ for (uint32_t i = 1; i < num_threads; ++i) {
+ threads_[0]->GetResults().Assimilate(threads_[i]->GetResults());
+ }
+
+ if (num_threads != 0) {
+ threads_[0]->GetResults().Print();
+ }
+ }
+
+ private:
+ // Owning pointers.
+ HH_ALIGNAS(64) ThreadSpecific* threads_[kMaxThreads];
+ std::atomic<uint32_t> num_threads_{0};
+};
+
+// RAII zone enter/exit recorder constructed by the ZONE macro; also
+// responsible for initializing ThreadSpecific.
+class Zone {
+ public:
+ // "name" must be a string literal (see StringOrigin).
+ HH_NOINLINE explicit Zone(const char* name) {
+ HH_COMPILER_FENCE;
+ ThreadSpecific* HH_RESTRICT thread_specific = StaticThreadSpecific();
+ if (HH_UNLIKELY(thread_specific == nullptr)) {
+ void* mem = CacheAligned::Allocate(sizeof(ThreadSpecific));
+ thread_specific = new (mem) ThreadSpecific(name);
+ // Must happen before ComputeOverhead, which re-enters this ctor.
+ Threads().Add(thread_specific);
+ StaticThreadSpecific() = thread_specific;
+ thread_specific->ComputeOverhead();
+ }
+
+ // (Capture timestamp ASAP, not inside WriteEntry.)
+ HH_COMPILER_FENCE;
+ const uint64_t timestamp = Start<uint64_t>();
+ thread_specific->WriteEntry(name, timestamp);
+ }
+
+ HH_NOINLINE ~Zone() {
+ HH_COMPILER_FENCE;
+ const uint64_t timestamp = Stop<uint64_t>();
+ StaticThreadSpecific()->WriteExit(timestamp);
+ HH_COMPILER_FENCE;
+ }
+
+ // Call exactly once after all threads have exited all zones.
+ static void PrintResults() { Threads().PrintResults(); }
+
+ private:
+ // Returns reference to the thread's ThreadSpecific pointer (initially null).
+ // Function-local static avoids needing a separate definition.
+ static ThreadSpecific*& StaticThreadSpecific() {
+ static thread_local ThreadSpecific* thread_specific;
+ return thread_specific;
+ }
+
+ // Returns the singleton ThreadList. Non time-critical.
+ static ThreadList& Threads() {
+ static ThreadList threads_;
+ return threads_;
+ }
+};
+
+// Creates a zone starting from here until the end of the current scope.
+// Timestamps will be recorded when entering and exiting the zone.
+// "name" must be a string literal, which is ensured by merging with "".
+#define PROFILER_ZONE(name) \
+ HH_COMPILER_FENCE; \
+ const Zone zone("" name); \
+ HH_COMPILER_FENCE
+
+// Creates a zone for an entire function (when placed at its beginning).
+// Shorter/more convenient than ZONE.
+#define PROFILER_FUNC \
+ HH_COMPILER_FENCE; \
+ const Zone zone(__func__); \
+ HH_COMPILER_FENCE
+
+#define PROFILER_PRINT_RESULTS Zone::PrintResults
+
+inline void ThreadSpecific::ComputeOverhead() {
+ // Delay after capturing timestamps before/after the actual zone runs. Even
+ // with frequency throttling disabled, this has a multimodal distribution,
+ // including 32, 34, 48, 52, 59, 62.
+ uint64_t self_overhead;
+ {
+ const size_t kNumSamples = 32;
+ uint32_t samples[kNumSamples];
+ for (size_t idx_sample = 0; idx_sample < kNumSamples; ++idx_sample) {
+ const size_t kNumDurations = 1024;
+ uint32_t durations[kNumDurations];
+
+ for (size_t idx_duration = 0; idx_duration < kNumDurations;
+ ++idx_duration) {
+ { PROFILER_ZONE("Dummy Zone (never shown)"); }
+#if HH_ARCH_X64
+ const uint64_t duration = results_.ZoneDuration(buffer_);
+ buffer_size_ = 0;
+#else
+ const uint64_t duration = results_.ZoneDuration(packets_);
+ num_packets_ = 0;
+#endif
+ durations[idx_duration] = static_cast<uint32_t>(duration);
+ PROFILER_CHECK(num_packets_ == 0);
+ }
+ CountingSort(durations, durations + kNumDurations);
+ samples[idx_sample] = Mode(durations, kNumDurations);
+ }
+ // Median.
+ CountingSort(samples, samples + kNumSamples);
+ self_overhead = samples[kNumSamples / 2];
+ printf("Overhead: %zu\n", self_overhead);
+ results_.SetSelfOverhead(self_overhead);
+ }
+
+ // Delay before capturing start timestamp / after end timestamp.
+ const size_t kNumSamples = 32;
+ uint32_t samples[kNumSamples];
+ for (size_t idx_sample = 0; idx_sample < kNumSamples; ++idx_sample) {
+ const size_t kNumDurations = 16;
+ uint32_t durations[kNumDurations];
+ for (size_t idx_duration = 0; idx_duration < kNumDurations;
+ ++idx_duration) {
+ const size_t kReps = 10000;
+ // Analysis time should not be included => must fit within buffer.
+ PROFILER_CHECK(kReps * 2 < max_packets_);
+#if HH_ARCH_X64
+ _mm_mfence();
+#endif
+ const uint64_t t0 = Start<uint64_t>();
+ for (size_t i = 0; i < kReps; ++i) {
+ PROFILER_ZONE("Dummy");
+ }
+#if HH_ARCH_X64
+ _mm_sfence();
+#endif
+ const uint64_t t1 = Stop<uint64_t>();
+#if HH_ARCH_X64
+ PROFILER_CHECK(num_packets_ + buffer_size_ == kReps * 2);
+ buffer_size_ = 0;
+#else
+ PROFILER_CHECK(num_packets_ == kReps * 2);
+#endif
+ num_packets_ = 0;
+ const uint64_t avg_duration = (t1 - t0 + kReps / 2) / kReps;
+ durations[idx_duration] =
+ static_cast<uint32_t>(ClampedSubtract(avg_duration, self_overhead));
+ }
+ CountingSort(durations, durations + kNumDurations);
+ samples[idx_sample] = Mode(durations, kNumDurations);
+ }
+ CountingSort(samples, samples + kNumSamples);
+ const uint64_t child_overhead = samples[9 * kNumSamples / 10];
+ printf("Child overhead: %zu\n", child_overhead);
+ results_.SetChildOverhead(child_overhead);
+}
+
+} // namespace highwayhash
+
+#else // !PROFILER_ENABLED
+#define PROFILER_ZONE(name)
+#define PROFILER_FUNC
+#define PROFILER_PRINT_RESULTS()
+#endif
+
+#endif // HIGHWAYHASH_PROFILER_H_
diff --git a/contrib/libs/highwayhash/highwayhash/profiler_example.cc b/contrib/libs/highwayhash/highwayhash/profiler_example.cc
index 9d97066ec9..999cc4581f 100644
--- a/contrib/libs/highwayhash/highwayhash/profiler_example.cc
+++ b/contrib/libs/highwayhash/highwayhash/profiler_example.cc
@@ -1,97 +1,97 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <cassert>
-#include <cmath>
-#include <cstdlib>
-
-#include "highwayhash/os_specific.h"
-#include "highwayhash/profiler.h"
-
-namespace highwayhash {
-namespace {
-
-void Spin(const double min_time) {
- const double t0 = Now();
- for (;;) {
- const double elapsed = Now() - t0;
- if (elapsed > min_time) {
- break;
- }
- }
-}
-
-void Spin10() {
- PROFILER_FUNC;
- Spin(10E-6);
-}
-
-void Spin20() {
- PROFILER_FUNC;
- Spin(20E-6);
-}
-
-void Spin3060() {
- {
- PROFILER_ZONE("spin30");
- Spin(30E-6);
- }
- {
- PROFILER_ZONE("spin60");
- Spin(60E-6);
- }
-}
-
-void Level3() {
- PROFILER_FUNC;
- for (int rep = 0; rep < 10; ++rep) {
- double total = 0.0;
- for (int i = 0; i < 100 - rep; ++i) {
- total += pow(0.9, i);
- }
- if (std::abs(total - 9.999) > 1E-2) {
- abort();
- }
- }
-}
-
-void Level2() {
- PROFILER_FUNC;
- Level3();
-}
-
-void Level1() {
- PROFILER_FUNC;
- Level2();
-}
-
-void ProfilerExample() {
- PinThreadToRandomCPU();
- {
- PROFILER_FUNC;
- Spin10();
- Spin20();
- Spin3060();
- Level1();
- }
- PROFILER_PRINT_RESULTS();
-}
-
-} // namespace
-} // namespace highwayhash
-
-int main(int argc, char* argv[]) {
- highwayhash::ProfilerExample();
- return 0;
-}
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include <cassert>
+#include <cmath>
+#include <cstdlib>
+
+#include "highwayhash/os_specific.h"
+#include "highwayhash/profiler.h"
+
+namespace highwayhash {
+namespace {
+
+void Spin(const double min_time) {
+ const double t0 = Now();
+ for (;;) {
+ const double elapsed = Now() - t0;
+ if (elapsed > min_time) {
+ break;
+ }
+ }
+}
+
+void Spin10() {
+ PROFILER_FUNC;
+ Spin(10E-6);
+}
+
+void Spin20() {
+ PROFILER_FUNC;
+ Spin(20E-6);
+}
+
+void Spin3060() {
+ {
+ PROFILER_ZONE("spin30");
+ Spin(30E-6);
+ }
+ {
+ PROFILER_ZONE("spin60");
+ Spin(60E-6);
+ }
+}
+
+void Level3() {
+ PROFILER_FUNC;
+ for (int rep = 0; rep < 10; ++rep) {
+ double total = 0.0;
+ for (int i = 0; i < 100 - rep; ++i) {
+ total += pow(0.9, i);
+ }
+ if (std::abs(total - 9.999) > 1E-2) {
+ abort();
+ }
+ }
+}
+
+void Level2() {
+ PROFILER_FUNC;
+ Level3();
+}
+
+void Level1() {
+ PROFILER_FUNC;
+ Level2();
+}
+
+void ProfilerExample() {
+ PinThreadToRandomCPU();
+ {
+ PROFILER_FUNC;
+ Spin10();
+ Spin20();
+ Spin3060();
+ Level1();
+ }
+ PROFILER_PRINT_RESULTS();
+}
+
+} // namespace
+} // namespace highwayhash
+
+int main(int argc, char* argv[]) {
+ highwayhash::ProfilerExample();
+ return 0;
+}
diff --git a/contrib/libs/highwayhash/highwayhash/robust_statistics.h b/contrib/libs/highwayhash/highwayhash/robust_statistics.h
index 9c4a0b4cd5..4e45494f9b 100644
--- a/contrib/libs/highwayhash/highwayhash/robust_statistics.h
+++ b/contrib/libs/highwayhash/highwayhash/robust_statistics.h
@@ -1,135 +1,135 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef HIGHWAYHASH_ROBUST_STATISTICS_H_
-#define HIGHWAYHASH_ROBUST_STATISTICS_H_
-
-// Robust statistics: Mode, Median, MedianAbsoluteDeviation.
-
-#include <stddef.h>
-#include <algorithm>
-#include <cassert>
-#include <cmath>
-#include <limits>
-#include <vector>
-
-#include "highwayhash/arch_specific.h"
-#include "highwayhash/compiler_specific.h"
-
-namespace highwayhash {
-
-// @return i in [idx_begin, idx_begin + half_count) that minimizes
-// sorted[i + half_count] - sorted[i].
-template <typename T>
-size_t MinRange(const T* const HH_RESTRICT sorted, const size_t idx_begin,
- const size_t half_count) {
- T min_range = std::numeric_limits<T>::max();
- size_t min_idx = 0;
-
- for (size_t idx = idx_begin; idx < idx_begin + half_count; ++idx) {
- assert(sorted[idx] <= sorted[idx + half_count]);
- const T range = sorted[idx + half_count] - sorted[idx];
- if (range < min_range) {
- min_range = range;
- min_idx = idx;
- }
- }
-
- return min_idx;
-}
-
-// Returns an estimate of the mode by calling MinRange on successively
-// halved intervals. "sorted" must be in ascending order. This is the
-// Half Sample Mode estimator proposed by Bickel in "On a fast, robust
-// estimator of the mode", with complexity O(N log N). The mode is less
-// affected by outliers in highly-skewed distributions than the median.
-// The averaging operation below assumes "T" is an unsigned integer type.
-template <typename T>
-T Mode(const T* const HH_RESTRICT sorted, const size_t num_values) {
- size_t idx_begin = 0;
- size_t half_count = num_values / 2;
- while (half_count > 1) {
- idx_begin = MinRange(sorted, idx_begin, half_count);
- half_count >>= 1;
- }
-
- const T x = sorted[idx_begin + 0];
- if (half_count == 0) {
- return x;
- }
- assert(half_count == 1);
- const T average = (x + sorted[idx_begin + 1] + 1) / 2;
- return average;
-}
-
-// Sorts integral values in ascending order. About 3x faster than std::sort for
-// input distributions with very few unique values.
-template <class T>
-void CountingSort(T* begin, T* end) {
- // Unique values and their frequency (similar to flat_map).
- using Unique = std::pair<T, int>;
- std::vector<Unique> unique;
- for (const T* p = begin; p != end; ++p) {
- const T value = *p;
- const auto pos =
- std::find_if(unique.begin(), unique.end(),
- [value](const Unique& u) { return u.first == value; });
- if (pos == unique.end()) {
- unique.push_back(std::make_pair(*p, 1));
- } else {
- ++pos->second;
- }
- }
-
- // Sort in ascending order of value (pair.first).
- std::sort(unique.begin(), unique.end());
-
- // Write that many copies of each unique value to the array.
- T* HH_RESTRICT p = begin;
- for (const auto& value_count : unique) {
- std::fill(p, p + value_count.second, value_count.first);
- p += value_count.second;
- }
- assert(p == end);
-}
-
-// Returns the median value. Side effect: sorts "samples".
-template <typename T>
-T Median(std::vector<T>* samples) {
- assert(!samples->empty());
- std::sort(samples->begin(), samples->end());
- const size_t half = samples->size() / 2;
- // Odd count: return middle
- if (samples->size() % 2) {
- return (*samples)[half];
- }
- // Even count: return average of middle two.
- return ((*samples)[half] + (*samples)[half - 1]) / 2;
-}
-
-// Returns a robust measure of variability.
-template <typename T>
-T MedianAbsoluteDeviation(const std::vector<T>& samples, const T median) {
- assert(!samples.empty());
- std::vector<T> abs_deviations;
- abs_deviations.reserve(samples.size());
- for (const T sample : samples) {
- abs_deviations.push_back(std::abs(sample - median));
- }
- return Median(&abs_deviations);
-}
-
-} // namespace highwayhash
-
-#endif // HIGHWAYHASH_ROBUST_STATISTICS_H_
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef HIGHWAYHASH_ROBUST_STATISTICS_H_
+#define HIGHWAYHASH_ROBUST_STATISTICS_H_
+
+// Robust statistics: Mode, Median, MedianAbsoluteDeviation.
+
+#include <stddef.h>
+#include <algorithm>
+#include <cassert>
+#include <cmath>
+#include <limits>
+#include <vector>
+
+#include "highwayhash/arch_specific.h"
+#include "highwayhash/compiler_specific.h"
+
+namespace highwayhash {
+
+// @return i in [idx_begin, idx_begin + half_count) that minimizes
+// sorted[i + half_count] - sorted[i].
+template <typename T>
+size_t MinRange(const T* const HH_RESTRICT sorted, const size_t idx_begin,
+ const size_t half_count) {
+ T min_range = std::numeric_limits<T>::max();
+ size_t min_idx = 0;
+
+ for (size_t idx = idx_begin; idx < idx_begin + half_count; ++idx) {
+ assert(sorted[idx] <= sorted[idx + half_count]);
+ const T range = sorted[idx + half_count] - sorted[idx];
+ if (range < min_range) {
+ min_range = range;
+ min_idx = idx;
+ }
+ }
+
+ return min_idx;
+}
+
+// Returns an estimate of the mode by calling MinRange on successively
+// halved intervals. "sorted" must be in ascending order. This is the
+// Half Sample Mode estimator proposed by Bickel in "On a fast, robust
+// estimator of the mode", with complexity O(N log N). The mode is less
+// affected by outliers in highly-skewed distributions than the median.
+// The averaging operation below assumes "T" is an unsigned integer type.
+template <typename T>
+T Mode(const T* const HH_RESTRICT sorted, const size_t num_values) {
+ size_t idx_begin = 0;
+ size_t half_count = num_values / 2;
+ while (half_count > 1) {
+ idx_begin = MinRange(sorted, idx_begin, half_count);
+ half_count >>= 1;
+ }
+
+ const T x = sorted[idx_begin + 0];
+ if (half_count == 0) {
+ return x;
+ }
+ assert(half_count == 1);
+ const T average = (x + sorted[idx_begin + 1] + 1) / 2;
+ return average;
+}
+
+// Sorts integral values in ascending order. About 3x faster than std::sort for
+// input distributions with very few unique values.
+template <class T>
+void CountingSort(T* begin, T* end) {
+ // Unique values and their frequency (similar to flat_map).
+ using Unique = std::pair<T, int>;
+ std::vector<Unique> unique;
+ for (const T* p = begin; p != end; ++p) {
+ const T value = *p;
+ const auto pos =
+ std::find_if(unique.begin(), unique.end(),
+ [value](const Unique& u) { return u.first == value; });
+ if (pos == unique.end()) {
+ unique.push_back(std::make_pair(*p, 1));
+ } else {
+ ++pos->second;
+ }
+ }
+
+ // Sort in ascending order of value (pair.first).
+ std::sort(unique.begin(), unique.end());
+
+ // Write that many copies of each unique value to the array.
+ T* HH_RESTRICT p = begin;
+ for (const auto& value_count : unique) {
+ std::fill(p, p + value_count.second, value_count.first);
+ p += value_count.second;
+ }
+ assert(p == end);
+}
+
+// Returns the median value. Side effect: sorts "samples".
+template <typename T>
+T Median(std::vector<T>* samples) {
+ assert(!samples->empty());
+ std::sort(samples->begin(), samples->end());
+ const size_t half = samples->size() / 2;
+ // Odd count: return middle
+ if (samples->size() % 2) {
+ return (*samples)[half];
+ }
+ // Even count: return average of middle two.
+ return ((*samples)[half] + (*samples)[half - 1]) / 2;
+}
+
+// Returns a robust measure of variability.
+template <typename T>
+T MedianAbsoluteDeviation(const std::vector<T>& samples, const T median) {
+ assert(!samples.empty());
+ std::vector<T> abs_deviations;
+ abs_deviations.reserve(samples.size());
+ for (const T sample : samples) {
+ abs_deviations.push_back(std::abs(sample - median));
+ }
+ return Median(&abs_deviations);
+}
+
+} // namespace highwayhash
+
+#endif // HIGHWAYHASH_ROBUST_STATISTICS_H_
diff --git a/contrib/libs/highwayhash/highwayhash/scalar.h b/contrib/libs/highwayhash/highwayhash/scalar.h
index eb7bac9c1d..72ccae727e 100644
--- a/contrib/libs/highwayhash/highwayhash/scalar.h
+++ b/contrib/libs/highwayhash/highwayhash/scalar.h
@@ -1,352 +1,352 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef HIGHWAYHASH_SCALAR_H_
-#define HIGHWAYHASH_SCALAR_H_
-
-// WARNING: this is a "restricted" header because it is included from
-// translation units compiled with different flags. This header and its
-// dependencies must not define any function unless it is static inline and/or
-// within namespace HH_TARGET_NAME. See arch_specific.h for details.
-
-#include <stddef.h> // size_t
-#include <stdint.h>
-
-#include "highwayhash/arch_specific.h"
-#include "highwayhash/compiler_specific.h"
-
-namespace highwayhash {
-// To prevent ODR violations when including this from multiple translation
-// units (TU) that are compiled with different flags, the contents must reside
-// in a namespace whose name is unique to the TU. NOTE: this behavior is
-// incompatible with precompiled modules and requires textual inclusion instead.
-namespace HH_TARGET_NAME {
-
-// Single-lane "vector" type with the same interface as V128/Scalar. Allows the
-// same client template to generate both SIMD and portable code.
-template <typename Type>
-class Scalar {
- public:
- struct Intrinsic {
- Type t;
- };
-
- using T = Type;
- static constexpr size_t N = 1;
-
- // Leaves v_ uninitialized - typically used for output parameters.
- HH_INLINE Scalar() {}
-
- HH_INLINE explicit Scalar(const T t) : v_(t) {}
-
- HH_INLINE Scalar(const Scalar<T>& other) : v_(other.v_) {}
-
- HH_INLINE Scalar& operator=(const Scalar<T>& other) {
- v_ = other.v_;
- return *this;
- }
-
- // Convert from/to intrinsics.
- HH_INLINE Scalar(const Intrinsic& v) : v_(v.t) {}
- HH_INLINE Scalar& operator=(const Intrinsic& v) {
- v_ = v.t;
- return *this;
- }
- HH_INLINE operator Intrinsic() const { return {v_}; }
-
- HH_INLINE Scalar operator==(const Scalar& other) const {
- Scalar eq;
- eq.FillWithByte(v_ == other.v_ ? 0xFF : 0x00);
- return eq;
- }
- HH_INLINE Scalar operator<(const Scalar& other) const {
- Scalar lt;
- lt.FillWithByte(v_ < other.v_ ? 0xFF : 0x00);
- return lt;
- }
- HH_INLINE Scalar operator>(const Scalar& other) const {
- Scalar gt;
- gt.FillWithByte(v_ > other.v_ ? 0xFF : 0x00);
- return gt;
- }
-
- HH_INLINE Scalar& operator*=(const Scalar& other) {
- v_ *= other.v_;
- return *this;
- }
- HH_INLINE Scalar& operator/=(const Scalar& other) {
- v_ /= other.v_;
- return *this;
- }
- HH_INLINE Scalar& operator+=(const Scalar& other) {
- v_ += other.v_;
- return *this;
- }
- HH_INLINE Scalar& operator-=(const Scalar& other) {
- v_ -= other.v_;
- return *this;
- }
-
- HH_INLINE Scalar& operator&=(const Scalar& other) {
- v_ &= other.v_;
- return *this;
- }
- HH_INLINE Scalar& operator|=(const Scalar& other) {
- v_ |= other.v_;
- return *this;
- }
- HH_INLINE Scalar& operator^=(const Scalar& other) {
- v_ ^= other.v_;
- return *this;
- }
-
- HH_INLINE Scalar& operator<<=(const int count) {
- // In C, int64_t << 64 is undefined, but we want to match the sensible
- // behavior of SSE2 (zeroing).
- if (count >= sizeof(T) * 8) {
- v_ = 0;
- } else {
- v_ <<= count;
- }
- return *this;
- }
-
- HH_INLINE Scalar& operator>>=(const int count) {
- if (count >= sizeof(T) * 8) {
- v_ = 0;
- } else {
- v_ >>= count;
- }
- return *this;
- }
-
- // For internal use only. We need to avoid memcpy/memset because this is a
- // restricted header.
- void FillWithByte(const unsigned char value) {
- unsigned char* bytes = reinterpret_cast<unsigned char*>(&v_);
- for (size_t i = 0; i < sizeof(T); ++i) {
- bytes[i] = value;
- }
- }
-
- void CopyTo(unsigned char* HH_RESTRICT to_bytes) const {
- const unsigned char* from_bytes =
- reinterpret_cast<const unsigned char*>(&v_);
- for (size_t i = 0; i < sizeof(T); ++i) {
- to_bytes[i] = from_bytes[i];
- }
- }
-
- private:
- T v_;
-};
-
-// Non-member operators.
-
-template <typename T>
-HH_INLINE Scalar<T> operator*(const Scalar<T>& left, const Scalar<T>& right) {
- Scalar<T> t(left);
- return t *= right;
-}
-
-template <typename T>
-HH_INLINE Scalar<T> operator/(const Scalar<T>& left, const Scalar<T>& right) {
- Scalar<T> t(left);
- return t /= right;
-}
-
-template <typename T>
-HH_INLINE Scalar<T> operator+(const Scalar<T>& left, const Scalar<T>& right) {
- Scalar<T> t(left);
- return t += right;
-}
-
-template <typename T>
-HH_INLINE Scalar<T> operator-(const Scalar<T>& left, const Scalar<T>& right) {
- Scalar<T> t(left);
- return t -= right;
-}
-
-template <typename T>
-HH_INLINE Scalar<T> operator&(const Scalar<T>& left, const Scalar<T>& right) {
- Scalar<T> t(left);
- return t &= right;
-}
-
-template <typename T>
-HH_INLINE Scalar<T> operator|(const Scalar<T> left, const Scalar<T>& right) {
- Scalar<T> t(left);
- return t |= right;
-}
-
-template <typename T>
-HH_INLINE Scalar<T> operator^(const Scalar<T>& left, const Scalar<T>& right) {
- Scalar<T> t(left);
- return t ^= right;
-}
-
-template <typename T>
-HH_INLINE Scalar<T> operator<<(const Scalar<T>& v, const int count) {
- Scalar<T> t(v);
- return t <<= count;
-}
-
-template <typename T>
-HH_INLINE Scalar<T> operator>>(const Scalar<T>& v, const int count) {
- Scalar<T> t(v);
- return t >>= count;
-}
-
-using V1x8U = Scalar<uint8_t>;
-using V1x16U = Scalar<uint16_t>;
-using V1x16I = Scalar<int16_t>;
-using V1x32U = Scalar<uint32_t>;
-using V1x32I = Scalar<int32_t>;
-using V1x64U = Scalar<uint64_t>;
-using V1x32F = Scalar<float>;
-using V1x64F = Scalar<double>;
-
-// Load/Store.
-
-// We differentiate between targets' vector types via template specialization.
-// Calling Load<V>(floats) is more natural than Load(V8x32F(), floats) and may
-// generate better code in unoptimized builds. Only declare the primary
-// templates to avoid needing mutual exclusion with vector128/256.
-template <class V>
-HH_INLINE V Load(const typename V::T* const HH_RESTRICT from);
-template <class V>
-HH_INLINE V LoadUnaligned(const typename V::T* const HH_RESTRICT from);
-
-template <>
-HH_INLINE V1x8U Load<V1x8U>(const V1x8U::T* const HH_RESTRICT from) {
- return V1x8U(*from);
-}
-template <>
-HH_INLINE V1x16U Load<V1x16U>(const V1x16U::T* const HH_RESTRICT from) {
- return V1x16U(*from);
-}
-template <>
-HH_INLINE V1x16I Load<V1x16I>(const V1x16I::T* const HH_RESTRICT from) {
- return V1x16I(*from);
-}
-template <>
-HH_INLINE V1x32U Load<V1x32U>(const V1x32U::T* const HH_RESTRICT from) {
- return V1x32U(*from);
-}
-template <>
-HH_INLINE V1x32I Load<V1x32I>(const V1x32I::T* const HH_RESTRICT from) {
- return V1x32I(*from);
-}
-template <>
-HH_INLINE V1x64U Load<V1x64U>(const V1x64U::T* const HH_RESTRICT from) {
- return V1x64U(*from);
-}
-template <>
-HH_INLINE V1x32F Load<V1x32F>(const V1x32F::T* const HH_RESTRICT from) {
- return V1x32F(*from);
-}
-template <>
-HH_INLINE V1x64F Load<V1x64F>(const V1x64F::T* const HH_RESTRICT from) {
- return V1x64F(*from);
-}
-
-template <>
-HH_INLINE V1x8U LoadUnaligned<V1x8U>(const V1x8U::T* const HH_RESTRICT from) {
- return V1x8U(*from);
-}
-template <>
-HH_INLINE V1x16U
-LoadUnaligned<V1x16U>(const V1x16U::T* const HH_RESTRICT from) {
- return V1x16U(*from);
-}
-template <>
-HH_INLINE V1x16I
-LoadUnaligned<V1x16I>(const V1x16I::T* const HH_RESTRICT from) {
- return V1x16I(*from);
-}
-template <>
-HH_INLINE V1x32U
-LoadUnaligned<V1x32U>(const V1x32U::T* const HH_RESTRICT from) {
- return V1x32U(*from);
-}
-template <>
-HH_INLINE V1x32I
-LoadUnaligned<V1x32I>(const V1x32I::T* const HH_RESTRICT from) {
- return V1x32I(*from);
-}
-template <>
-HH_INLINE V1x64U
-LoadUnaligned<V1x64U>(const V1x64U::T* const HH_RESTRICT from) {
- return V1x64U(*from);
-}
-template <>
-HH_INLINE V1x32F
-LoadUnaligned<V1x32F>(const V1x32F::T* const HH_RESTRICT from) {
- return V1x32F(*from);
-}
-template <>
-HH_INLINE V1x64F
-LoadUnaligned<V1x64F>(const V1x64F::T* const HH_RESTRICT from) {
- return V1x64F(*from);
-}
-
-template <typename T>
-HH_INLINE void Store(const Scalar<T>& v, T* const HH_RESTRICT to) {
- v.CopyTo(reinterpret_cast<unsigned char*>(to));
-}
-
-template <typename T>
-HH_INLINE void StoreUnaligned(const Scalar<T>& v, T* const HH_RESTRICT to) {
- v.CopyTo(reinterpret_cast<unsigned char*>(to));
-}
-
-template <typename T>
-HH_INLINE void Stream(const Scalar<T>& v, T* const HH_RESTRICT to) {
- v.CopyTo(reinterpret_cast<unsigned char*>(to));
-}
-
-// Miscellaneous functions.
-
-template <typename T>
-HH_INLINE Scalar<T> RotateLeft(const Scalar<T>& v, const int count) {
- constexpr size_t num_bits = sizeof(T) * 8;
- return (v << count) | (v >> (num_bits - count));
-}
-
-template <typename T>
-HH_INLINE Scalar<T> AndNot(const Scalar<T>& neg_mask, const Scalar<T>& values) {
- return values & ~neg_mask;
-}
-
-template <typename T>
-HH_INLINE Scalar<T> Select(const Scalar<T>& a, const Scalar<T>& b,
- const Scalar<T>& mask) {
- const char* mask_bytes = reinterpret_cast<const char*>(&mask);
- return (mask_bytes[sizeof(T) - 1] & 0x80) ? b : a;
-}
-
-template <typename T>
-HH_INLINE Scalar<T> Min(const Scalar<T>& v0, const Scalar<T>& v1) {
- return (v0 < v1) ? v0 : v1;
-}
-
-template <typename T>
-HH_INLINE Scalar<T> Max(const Scalar<T>& v0, const Scalar<T>& v1) {
- return (v0 < v1) ? v1 : v0;
-}
-
-} // namespace HH_TARGET_NAME
-} // namespace highwayhash
-
-#endif // HIGHWAYHASH_SCALAR_H_
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef HIGHWAYHASH_SCALAR_H_
+#define HIGHWAYHASH_SCALAR_H_
+
+// WARNING: this is a "restricted" header because it is included from
+// translation units compiled with different flags. This header and its
+// dependencies must not define any function unless it is static inline and/or
+// within namespace HH_TARGET_NAME. See arch_specific.h for details.
+
+#include <stddef.h> // size_t
+#include <stdint.h>
+
+#include "highwayhash/arch_specific.h"
+#include "highwayhash/compiler_specific.h"
+
+namespace highwayhash {
+// To prevent ODR violations when including this from multiple translation
+// units (TU) that are compiled with different flags, the contents must reside
+// in a namespace whose name is unique to the TU. NOTE: this behavior is
+// incompatible with precompiled modules and requires textual inclusion instead.
+namespace HH_TARGET_NAME {
+
+// Single-lane "vector" type with the same interface as V128/Scalar. Allows the
+// same client template to generate both SIMD and portable code.
+template <typename Type>
+class Scalar {
+ public:
+ struct Intrinsic {
+ Type t;
+ };
+
+ using T = Type;
+ static constexpr size_t N = 1;
+
+ // Leaves v_ uninitialized - typically used for output parameters.
+ HH_INLINE Scalar() {}
+
+ HH_INLINE explicit Scalar(const T t) : v_(t) {}
+
+ HH_INLINE Scalar(const Scalar<T>& other) : v_(other.v_) {}
+
+ HH_INLINE Scalar& operator=(const Scalar<T>& other) {
+ v_ = other.v_;
+ return *this;
+ }
+
+ // Convert from/to intrinsics.
+ HH_INLINE Scalar(const Intrinsic& v) : v_(v.t) {}
+ HH_INLINE Scalar& operator=(const Intrinsic& v) {
+ v_ = v.t;
+ return *this;
+ }
+ HH_INLINE operator Intrinsic() const { return {v_}; }
+
+ HH_INLINE Scalar operator==(const Scalar& other) const {
+ Scalar eq;
+ eq.FillWithByte(v_ == other.v_ ? 0xFF : 0x00);
+ return eq;
+ }
+ HH_INLINE Scalar operator<(const Scalar& other) const {
+ Scalar lt;
+ lt.FillWithByte(v_ < other.v_ ? 0xFF : 0x00);
+ return lt;
+ }
+ HH_INLINE Scalar operator>(const Scalar& other) const {
+ Scalar gt;
+ gt.FillWithByte(v_ > other.v_ ? 0xFF : 0x00);
+ return gt;
+ }
+
+ HH_INLINE Scalar& operator*=(const Scalar& other) {
+ v_ *= other.v_;
+ return *this;
+ }
+ HH_INLINE Scalar& operator/=(const Scalar& other) {
+ v_ /= other.v_;
+ return *this;
+ }
+ HH_INLINE Scalar& operator+=(const Scalar& other) {
+ v_ += other.v_;
+ return *this;
+ }
+ HH_INLINE Scalar& operator-=(const Scalar& other) {
+ v_ -= other.v_;
+ return *this;
+ }
+
+ HH_INLINE Scalar& operator&=(const Scalar& other) {
+ v_ &= other.v_;
+ return *this;
+ }
+ HH_INLINE Scalar& operator|=(const Scalar& other) {
+ v_ |= other.v_;
+ return *this;
+ }
+ HH_INLINE Scalar& operator^=(const Scalar& other) {
+ v_ ^= other.v_;
+ return *this;
+ }
+
+ HH_INLINE Scalar& operator<<=(const int count) {
+ // In C, int64_t << 64 is undefined, but we want to match the sensible
+ // behavior of SSE2 (zeroing).
+ if (count >= sizeof(T) * 8) {
+ v_ = 0;
+ } else {
+ v_ <<= count;
+ }
+ return *this;
+ }
+
+ HH_INLINE Scalar& operator>>=(const int count) {
+ if (count >= sizeof(T) * 8) {
+ v_ = 0;
+ } else {
+ v_ >>= count;
+ }
+ return *this;
+ }
+
+ // For internal use only. We need to avoid memcpy/memset because this is a
+ // restricted header.
+ void FillWithByte(const unsigned char value) {
+ unsigned char* bytes = reinterpret_cast<unsigned char*>(&v_);
+ for (size_t i = 0; i < sizeof(T); ++i) {
+ bytes[i] = value;
+ }
+ }
+
+ void CopyTo(unsigned char* HH_RESTRICT to_bytes) const {
+ const unsigned char* from_bytes =
+ reinterpret_cast<const unsigned char*>(&v_);
+ for (size_t i = 0; i < sizeof(T); ++i) {
+ to_bytes[i] = from_bytes[i];
+ }
+ }
+
+ private:
+ T v_;
+};
+
+// Non-member operators.
+
+template <typename T>
+HH_INLINE Scalar<T> operator*(const Scalar<T>& left, const Scalar<T>& right) {
+ Scalar<T> t(left);
+ return t *= right;
+}
+
+template <typename T>
+HH_INLINE Scalar<T> operator/(const Scalar<T>& left, const Scalar<T>& right) {
+ Scalar<T> t(left);
+ return t /= right;
+}
+
+template <typename T>
+HH_INLINE Scalar<T> operator+(const Scalar<T>& left, const Scalar<T>& right) {
+ Scalar<T> t(left);
+ return t += right;
+}
+
+template <typename T>
+HH_INLINE Scalar<T> operator-(const Scalar<T>& left, const Scalar<T>& right) {
+ Scalar<T> t(left);
+ return t -= right;
+}
+
+template <typename T>
+HH_INLINE Scalar<T> operator&(const Scalar<T>& left, const Scalar<T>& right) {
+ Scalar<T> t(left);
+ return t &= right;
+}
+
+template <typename T>
+HH_INLINE Scalar<T> operator|(const Scalar<T> left, const Scalar<T>& right) {
+ Scalar<T> t(left);
+ return t |= right;
+}
+
+template <typename T>
+HH_INLINE Scalar<T> operator^(const Scalar<T>& left, const Scalar<T>& right) {
+ Scalar<T> t(left);
+ return t ^= right;
+}
+
+template <typename T>
+HH_INLINE Scalar<T> operator<<(const Scalar<T>& v, const int count) {
+ Scalar<T> t(v);
+ return t <<= count;
+}
+
+template <typename T>
+HH_INLINE Scalar<T> operator>>(const Scalar<T>& v, const int count) {
+ Scalar<T> t(v);
+ return t >>= count;
+}
+
+using V1x8U = Scalar<uint8_t>;
+using V1x16U = Scalar<uint16_t>;
+using V1x16I = Scalar<int16_t>;
+using V1x32U = Scalar<uint32_t>;
+using V1x32I = Scalar<int32_t>;
+using V1x64U = Scalar<uint64_t>;
+using V1x32F = Scalar<float>;
+using V1x64F = Scalar<double>;
+
+// Load/Store.
+
+// We differentiate between targets' vector types via template specialization.
+// Calling Load<V>(floats) is more natural than Load(V8x32F(), floats) and may
+// generate better code in unoptimized builds. Only declare the primary
+// templates to avoid needing mutual exclusion with vector128/256.
+template <class V>
+HH_INLINE V Load(const typename V::T* const HH_RESTRICT from);
+template <class V>
+HH_INLINE V LoadUnaligned(const typename V::T* const HH_RESTRICT from);
+
+template <>
+HH_INLINE V1x8U Load<V1x8U>(const V1x8U::T* const HH_RESTRICT from) {
+ return V1x8U(*from);
+}
+template <>
+HH_INLINE V1x16U Load<V1x16U>(const V1x16U::T* const HH_RESTRICT from) {
+ return V1x16U(*from);
+}
+template <>
+HH_INLINE V1x16I Load<V1x16I>(const V1x16I::T* const HH_RESTRICT from) {
+ return V1x16I(*from);
+}
+template <>
+HH_INLINE V1x32U Load<V1x32U>(const V1x32U::T* const HH_RESTRICT from) {
+ return V1x32U(*from);
+}
+template <>
+HH_INLINE V1x32I Load<V1x32I>(const V1x32I::T* const HH_RESTRICT from) {
+ return V1x32I(*from);
+}
+template <>
+HH_INLINE V1x64U Load<V1x64U>(const V1x64U::T* const HH_RESTRICT from) {
+ return V1x64U(*from);
+}
+template <>
+HH_INLINE V1x32F Load<V1x32F>(const V1x32F::T* const HH_RESTRICT from) {
+ return V1x32F(*from);
+}
+template <>
+HH_INLINE V1x64F Load<V1x64F>(const V1x64F::T* const HH_RESTRICT from) {
+ return V1x64F(*from);
+}
+
+template <>
+HH_INLINE V1x8U LoadUnaligned<V1x8U>(const V1x8U::T* const HH_RESTRICT from) {
+ return V1x8U(*from);
+}
+template <>
+HH_INLINE V1x16U
+LoadUnaligned<V1x16U>(const V1x16U::T* const HH_RESTRICT from) {
+ return V1x16U(*from);
+}
+template <>
+HH_INLINE V1x16I
+LoadUnaligned<V1x16I>(const V1x16I::T* const HH_RESTRICT from) {
+ return V1x16I(*from);
+}
+template <>
+HH_INLINE V1x32U
+LoadUnaligned<V1x32U>(const V1x32U::T* const HH_RESTRICT from) {
+ return V1x32U(*from);
+}
+template <>
+HH_INLINE V1x32I
+LoadUnaligned<V1x32I>(const V1x32I::T* const HH_RESTRICT from) {
+ return V1x32I(*from);
+}
+template <>
+HH_INLINE V1x64U
+LoadUnaligned<V1x64U>(const V1x64U::T* const HH_RESTRICT from) {
+ return V1x64U(*from);
+}
+template <>
+HH_INLINE V1x32F
+LoadUnaligned<V1x32F>(const V1x32F::T* const HH_RESTRICT from) {
+ return V1x32F(*from);
+}
+template <>
+HH_INLINE V1x64F
+LoadUnaligned<V1x64F>(const V1x64F::T* const HH_RESTRICT from) {
+ return V1x64F(*from);
+}
+
+template <typename T>
+HH_INLINE void Store(const Scalar<T>& v, T* const HH_RESTRICT to) {
+ v.CopyTo(reinterpret_cast<unsigned char*>(to));
+}
+
+template <typename T>
+HH_INLINE void StoreUnaligned(const Scalar<T>& v, T* const HH_RESTRICT to) {
+ v.CopyTo(reinterpret_cast<unsigned char*>(to));
+}
+
+template <typename T>
+HH_INLINE void Stream(const Scalar<T>& v, T* const HH_RESTRICT to) {
+ v.CopyTo(reinterpret_cast<unsigned char*>(to));
+}
+
+// Miscellaneous functions.
+
+template <typename T>
+HH_INLINE Scalar<T> RotateLeft(const Scalar<T>& v, const int count) {
+ constexpr size_t num_bits = sizeof(T) * 8;
+ return (v << count) | (v >> (num_bits - count));
+}
+
+template <typename T>
+HH_INLINE Scalar<T> AndNot(const Scalar<T>& neg_mask, const Scalar<T>& values) {
+ return values & ~neg_mask;
+}
+
+template <typename T>
+HH_INLINE Scalar<T> Select(const Scalar<T>& a, const Scalar<T>& b,
+ const Scalar<T>& mask) {
+ const char* mask_bytes = reinterpret_cast<const char*>(&mask);
+ return (mask_bytes[sizeof(T) - 1] & 0x80) ? b : a;
+}
+
+template <typename T>
+HH_INLINE Scalar<T> Min(const Scalar<T>& v0, const Scalar<T>& v1) {
+ return (v0 < v1) ? v0 : v1;
+}
+
+template <typename T>
+HH_INLINE Scalar<T> Max(const Scalar<T>& v0, const Scalar<T>& v1) {
+ return (v0 < v1) ? v1 : v0;
+}
+
+} // namespace HH_TARGET_NAME
+} // namespace highwayhash
+
+#endif // HIGHWAYHASH_SCALAR_H_
diff --git a/contrib/libs/highwayhash/highwayhash/scalar_sip_tree_hash.cc b/contrib/libs/highwayhash/highwayhash/scalar_sip_tree_hash.cc
index 136f2769a1..9ddeca64e6 100644
--- a/contrib/libs/highwayhash/highwayhash/scalar_sip_tree_hash.cc
+++ b/contrib/libs/highwayhash/highwayhash/scalar_sip_tree_hash.cc
@@ -1,183 +1,183 @@
-// Copyright 2015 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "highwayhash/scalar_sip_tree_hash.h"
-
-#include <cstddef>
-#include <cstring> // memcpy
-
-#include "highwayhash/compiler_specific.h"
-#include "highwayhash/sip_hash.h"
-
-namespace highwayhash {
-namespace {
-
-// Paper: https://www.131002.net/siphash/siphash.pdf
-// SSE41 implementation: https://goo.gl/80GBSD
-// Tree hash extension: http://dx.doi.org/10.4236/jis.2014.53010
-
-// The hash state is updated by injecting 4x8-byte packets;
-// XORing together all state vectors yields 32 bytes that are
-// reduced to 64 bits via 8-byte SipHash.
-
-const int kNumLanes = 4;
-using Lanes = HH_U64[kNumLanes];
-const int kPacketSize = sizeof(Lanes);
-
-template <int kUpdateRounds, int kFinalizeRounds>
-class ScalarSipTreeHashState {
- public:
- HH_INLINE ScalarSipTreeHashState(const Lanes& keys, const int lane) {
- const HH_U64 key = keys[lane] ^ (kNumLanes | lane);
- v0 = 0x736f6d6570736575ull ^ key;
- v1 = 0x646f72616e646f6dull ^ key;
- v2 = 0x6c7967656e657261ull ^ key;
- v3 = 0x7465646279746573ull ^ key;
- }
-
- HH_INLINE void Update(const HH_U64& packet) {
- v3 ^= packet;
-
- Compress<kUpdateRounds>();
-
- v0 ^= packet;
- }
-
- HH_INLINE HH_U64 Finalize() {
- // Mix in bits to avoid leaking the key if all packets were zero.
- v2 ^= 0xFF;
-
- Compress<kFinalizeRounds>();
-
- return (v0 ^ v1) ^ (v2 ^ v3);
- }
-
- private:
- // Rotate a 64-bit value "v" left by N bits.
- template <HH_U64 bits>
- static HH_INLINE HH_U64 RotateLeft(const HH_U64 v) {
- const HH_U64 left = v << bits;
- const HH_U64 right = v >> (64 - bits);
- return left | right;
- }
-
- template <int kRounds>
- HH_INLINE void Compress() {
- for (int i = 0; i < kRounds; ++i) {
- // ARX network: add, rotate, exclusive-or.
- v0 += v1;
- v2 += v3;
- v1 = RotateLeft<13>(v1);
- v3 = RotateLeft<16>(v3);
- v1 ^= v0;
- v3 ^= v2;
-
- v0 = RotateLeft<32>(v0);
-
- v2 += v1;
- v0 += v3;
- v1 = RotateLeft<17>(v1);
- v3 = RotateLeft<21>(v3);
- v1 ^= v2;
- v3 ^= v0;
-
- v2 = RotateLeft<32>(v2);
- }
- }
-
- HH_U64 v0;
- HH_U64 v1;
- HH_U64 v2;
- HH_U64 v3;
-};
-
-} // namespace
-
-template <size_t kUpdateRounds, size_t kFinalizeRounds>
-HH_U64 ScalarSipTreeHashT(const Lanes& key, const char* bytes,
- const HH_U64 size) {
- // "j-lanes" tree hashing interleaves 8-byte input packets.
- using State = ScalarSipTreeHashState<kUpdateRounds, kFinalizeRounds>;
- State state[kNumLanes] = {State(key, 0), State(key, 1), State(key, 2),
- State(key, 3)};
-
- // Hash entire 32-byte packets.
- const size_t remainder = size & (kPacketSize - 1);
- const size_t truncated_size = size - remainder;
- const HH_U64* packets = reinterpret_cast<const HH_U64*>(bytes);
- for (size_t i = 0; i < truncated_size / kPacketSize; ++i) {
- for (int lane = 0; lane < kNumLanes; ++lane) {
- const HH_U64 packet = *packets++;
- state[lane].Update(packet);
- }
- }
-
- // Update with final 32-byte packet.
- const size_t remainder_mod4 = remainder & 3;
- uint32_t packet4 = static_cast<uint32_t>(remainder << 24);
- const char* final_bytes = bytes + size - remainder_mod4;
- for (size_t i = 0; i < remainder_mod4; ++i) {
- const uint32_t byte = static_cast<unsigned char>(final_bytes[i]);
- packet4 += byte << (i * 8);
- }
-
- char final_packet[kPacketSize] = {0};
- memcpy(final_packet, bytes + truncated_size, remainder - remainder_mod4);
- memcpy(final_packet + kPacketSize - 4, &packet4, sizeof(packet4));
- packets = reinterpret_cast<const HH_U64*>(final_packet);
- for (int lane = 0; lane < kNumLanes; ++lane) {
- state[lane].Update(packets[lane]);
- }
-
- // Store the resulting hashes.
- uint64_t hashes[4];
- for (int lane = 0; lane < kNumLanes; ++lane) {
- hashes[lane] = state[lane].Finalize();
- }
-
- typename SipHashStateT<kUpdateRounds, kFinalizeRounds>::Key reduce_key;
- memcpy(&reduce_key, &key, sizeof(reduce_key));
- return ReduceSipTreeHash<kNumLanes, kUpdateRounds, kFinalizeRounds>(
- reduce_key, hashes);
-}
-
-HH_U64 ScalarSipTreeHash(const Lanes& key, const char* bytes,
- const HH_U64 size) {
- return ScalarSipTreeHashT<2, 4>(key, bytes, size);
-}
-
-HH_U64 ScalarSipTreeHash13(const Lanes& key, const char* bytes,
- const HH_U64 size) {
- return ScalarSipTreeHashT<1, 3>(key, bytes, size);
-}
-} // namespace highwayhash
-
-using highwayhash::HH_U64;
-using highwayhash::ScalarSipTreeHash;
-using highwayhash::ScalarSipTreeHash13;
-using Key = HH_U64[4];
-
-extern "C" {
-
-HH_U64 ScalarSipTreeHashC(const HH_U64* key, const char* bytes,
- const HH_U64 size) {
- return ScalarSipTreeHash(*reinterpret_cast<const Key*>(key), bytes, size);
-}
-
-HH_U64 ScalarSipTreeHash13C(const HH_U64* key, const char* bytes,
- const HH_U64 size) {
- return ScalarSipTreeHash13(*reinterpret_cast<const Key*>(key), bytes, size);
-}
-
-} // extern "C"
+// Copyright 2015 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "highwayhash/scalar_sip_tree_hash.h"
+
+#include <cstddef>
+#include <cstring> // memcpy
+
+#include "highwayhash/compiler_specific.h"
+#include "highwayhash/sip_hash.h"
+
+namespace highwayhash {
+namespace {
+
+// Paper: https://www.131002.net/siphash/siphash.pdf
+// SSE41 implementation: https://goo.gl/80GBSD
+// Tree hash extension: http://dx.doi.org/10.4236/jis.2014.53010
+
+// The hash state is updated by injecting 4x8-byte packets;
+// XORing together all state vectors yields 32 bytes that are
+// reduced to 64 bits via 8-byte SipHash.
+
+const int kNumLanes = 4;
+using Lanes = HH_U64[kNumLanes];
+const int kPacketSize = sizeof(Lanes);
+
+template <int kUpdateRounds, int kFinalizeRounds>
+class ScalarSipTreeHashState {
+ public:
+ HH_INLINE ScalarSipTreeHashState(const Lanes& keys, const int lane) {
+ const HH_U64 key = keys[lane] ^ (kNumLanes | lane);
+ v0 = 0x736f6d6570736575ull ^ key;
+ v1 = 0x646f72616e646f6dull ^ key;
+ v2 = 0x6c7967656e657261ull ^ key;
+ v3 = 0x7465646279746573ull ^ key;
+ }
+
+ HH_INLINE void Update(const HH_U64& packet) {
+ v3 ^= packet;
+
+ Compress<kUpdateRounds>();
+
+ v0 ^= packet;
+ }
+
+ HH_INLINE HH_U64 Finalize() {
+ // Mix in bits to avoid leaking the key if all packets were zero.
+ v2 ^= 0xFF;
+
+ Compress<kFinalizeRounds>();
+
+ return (v0 ^ v1) ^ (v2 ^ v3);
+ }
+
+ private:
+ // Rotate a 64-bit value "v" left by N bits.
+ template <HH_U64 bits>
+ static HH_INLINE HH_U64 RotateLeft(const HH_U64 v) {
+ const HH_U64 left = v << bits;
+ const HH_U64 right = v >> (64 - bits);
+ return left | right;
+ }
+
+ template <int kRounds>
+ HH_INLINE void Compress() {
+ for (int i = 0; i < kRounds; ++i) {
+ // ARX network: add, rotate, exclusive-or.
+ v0 += v1;
+ v2 += v3;
+ v1 = RotateLeft<13>(v1);
+ v3 = RotateLeft<16>(v3);
+ v1 ^= v0;
+ v3 ^= v2;
+
+ v0 = RotateLeft<32>(v0);
+
+ v2 += v1;
+ v0 += v3;
+ v1 = RotateLeft<17>(v1);
+ v3 = RotateLeft<21>(v3);
+ v1 ^= v2;
+ v3 ^= v0;
+
+ v2 = RotateLeft<32>(v2);
+ }
+ }
+
+ HH_U64 v0;
+ HH_U64 v1;
+ HH_U64 v2;
+ HH_U64 v3;
+};
+
+} // namespace
+
+template <size_t kUpdateRounds, size_t kFinalizeRounds>
+HH_U64 ScalarSipTreeHashT(const Lanes& key, const char* bytes,
+ const HH_U64 size) {
+ // "j-lanes" tree hashing interleaves 8-byte input packets.
+ using State = ScalarSipTreeHashState<kUpdateRounds, kFinalizeRounds>;
+ State state[kNumLanes] = {State(key, 0), State(key, 1), State(key, 2),
+ State(key, 3)};
+
+ // Hash entire 32-byte packets.
+ const size_t remainder = size & (kPacketSize - 1);
+ const size_t truncated_size = size - remainder;
+ const HH_U64* packets = reinterpret_cast<const HH_U64*>(bytes);
+ for (size_t i = 0; i < truncated_size / kPacketSize; ++i) {
+ for (int lane = 0; lane < kNumLanes; ++lane) {
+ const HH_U64 packet = *packets++;
+ state[lane].Update(packet);
+ }
+ }
+
+ // Update with final 32-byte packet.
+ const size_t remainder_mod4 = remainder & 3;
+ uint32_t packet4 = static_cast<uint32_t>(remainder << 24);
+ const char* final_bytes = bytes + size - remainder_mod4;
+ for (size_t i = 0; i < remainder_mod4; ++i) {
+ const uint32_t byte = static_cast<unsigned char>(final_bytes[i]);
+ packet4 += byte << (i * 8);
+ }
+
+ char final_packet[kPacketSize] = {0};
+ memcpy(final_packet, bytes + truncated_size, remainder - remainder_mod4);
+ memcpy(final_packet + kPacketSize - 4, &packet4, sizeof(packet4));
+ packets = reinterpret_cast<const HH_U64*>(final_packet);
+ for (int lane = 0; lane < kNumLanes; ++lane) {
+ state[lane].Update(packets[lane]);
+ }
+
+ // Store the resulting hashes.
+ uint64_t hashes[4];
+ for (int lane = 0; lane < kNumLanes; ++lane) {
+ hashes[lane] = state[lane].Finalize();
+ }
+
+ typename SipHashStateT<kUpdateRounds, kFinalizeRounds>::Key reduce_key;
+ memcpy(&reduce_key, &key, sizeof(reduce_key));
+ return ReduceSipTreeHash<kNumLanes, kUpdateRounds, kFinalizeRounds>(
+ reduce_key, hashes);
+}
+
+HH_U64 ScalarSipTreeHash(const Lanes& key, const char* bytes,
+ const HH_U64 size) {
+ return ScalarSipTreeHashT<2, 4>(key, bytes, size);
+}
+
+HH_U64 ScalarSipTreeHash13(const Lanes& key, const char* bytes,
+ const HH_U64 size) {
+ return ScalarSipTreeHashT<1, 3>(key, bytes, size);
+}
+} // namespace highwayhash
+
+using highwayhash::HH_U64;
+using highwayhash::ScalarSipTreeHash;
+using highwayhash::ScalarSipTreeHash13;
+using Key = HH_U64[4];
+
+extern "C" {
+
+HH_U64 ScalarSipTreeHashC(const HH_U64* key, const char* bytes,
+ const HH_U64 size) {
+ return ScalarSipTreeHash(*reinterpret_cast<const Key*>(key), bytes, size);
+}
+
+HH_U64 ScalarSipTreeHash13C(const HH_U64* key, const char* bytes,
+ const HH_U64 size) {
+ return ScalarSipTreeHash13(*reinterpret_cast<const Key*>(key), bytes, size);
+}
+
+} // extern "C"
diff --git a/contrib/libs/highwayhash/highwayhash/scalar_sip_tree_hash.h b/contrib/libs/highwayhash/highwayhash/scalar_sip_tree_hash.h
index f882be89d2..2f79f3a010 100644
--- a/contrib/libs/highwayhash/highwayhash/scalar_sip_tree_hash.h
+++ b/contrib/libs/highwayhash/highwayhash/scalar_sip_tree_hash.h
@@ -1,37 +1,37 @@
-// Copyright 2015 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef HIGHWAYHASH_SCALAR_SIP_TREE_HASH_H_
-#define HIGHWAYHASH_SCALAR_SIP_TREE_HASH_H_
-
-// Scalar (non-vector/SIMD) version for comparison purposes.
-
-#include "highwayhash/state_helpers.h"
-
-#ifdef __cplusplus
-namespace highwayhash {
-extern "C" {
-#endif
-
-HH_U64 ScalarSipTreeHash(const HH_U64 (&key)[4], const char* bytes,
- const HH_U64 size);
-HH_U64 ScalarSipTreeHash13(const HH_U64 (&key)[4], const char* bytes,
- const HH_U64 size);
-
-#ifdef __cplusplus
-} // extern "C"
-} // namespace highwayhash
-#endif
-
-#endif // HIGHWAYHASH_SCALAR_SIP_TREE_HASH_H_
+// Copyright 2015 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef HIGHWAYHASH_SCALAR_SIP_TREE_HASH_H_
+#define HIGHWAYHASH_SCALAR_SIP_TREE_HASH_H_
+
+// Scalar (non-vector/SIMD) version for comparison purposes.
+
+#include "highwayhash/state_helpers.h"
+
+#ifdef __cplusplus
+namespace highwayhash {
+extern "C" {
+#endif
+
+HH_U64 ScalarSipTreeHash(const HH_U64 (&key)[4], const char* bytes,
+ const HH_U64 size);
+HH_U64 ScalarSipTreeHash13(const HH_U64 (&key)[4], const char* bytes,
+ const HH_U64 size);
+
+#ifdef __cplusplus
+} // extern "C"
+} // namespace highwayhash
+#endif
+
+#endif // HIGHWAYHASH_SCALAR_SIP_TREE_HASH_H_
diff --git a/contrib/libs/highwayhash/highwayhash/sip_hash.cc b/contrib/libs/highwayhash/highwayhash/sip_hash.cc
index 3d73a0bcdd..1c08533544 100644
--- a/contrib/libs/highwayhash/highwayhash/sip_hash.cc
+++ b/contrib/libs/highwayhash/highwayhash/sip_hash.cc
@@ -1,33 +1,33 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "highwayhash/sip_hash.h"
-
-using highwayhash::HH_U64;
-using highwayhash::SipHash;
-using highwayhash::SipHash13;
-using Key = highwayhash::SipHashState::Key;
-using Key13 = highwayhash::SipHash13State::Key;
-
-extern "C" {
-
-HH_U64 SipHashC(const HH_U64* key, const char* bytes, const HH_U64 size) {
- return SipHash(*reinterpret_cast<const Key*>(key), bytes, size);
-}
-
-HH_U64 SipHash13C(const HH_U64* key, const char* bytes, const HH_U64 size) {
- return SipHash13(*reinterpret_cast<const Key13*>(key), bytes, size);
-}
-
-} // extern "C"
+// Copyright 2016 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "highwayhash/sip_hash.h"
+
+using highwayhash::HH_U64;
+using highwayhash::SipHash;
+using highwayhash::SipHash13;
+using Key = highwayhash::SipHashState::Key;
+using Key13 = highwayhash::SipHash13State::Key;
+
+extern "C" {
+
+HH_U64 SipHashC(const HH_U64* key, const char* bytes, const HH_U64 size) {
+ return SipHash(*reinterpret_cast<const Key*>(key), bytes, size);
+}
+
+HH_U64 SipHash13C(const HH_U64* key, const char* bytes, const HH_U64 size) {
+ return SipHash13(*reinterpret_cast<const Key13*>(key), bytes, size);
+}
+
+} // extern "C"
diff --git a/contrib/libs/highwayhash/highwayhash/sip_hash.h b/contrib/libs/highwayhash/highwayhash/sip_hash.h
index 24a5cf4f22..eebe3dc944 100644
--- a/contrib/libs/highwayhash/highwayhash/sip_hash.h
+++ b/contrib/libs/highwayhash/highwayhash/sip_hash.h
@@ -1,171 +1,171 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef HIGHWAYHASH_SIP_HASH_H_
-#define HIGHWAYHASH_SIP_HASH_H_
-
-// Portable but fast SipHash implementation.
-
-#include <cstddef>
-#include <cstring> // memcpy
-
-#include "highwayhash/arch_specific.h"
-#include "highwayhash/compiler_specific.h"
-#include "highwayhash/endianess.h"
-#include "highwayhash/state_helpers.h"
-
-namespace highwayhash {
-
-// Paper: https://www.131002.net/siphash/siphash.pdf
-template <int kUpdateIters, int kFinalizeIters>
-class SipHashStateT {
- public:
- using Key = HH_U64[2];
- static const size_t kPacketSize = sizeof(HH_U64);
-
- explicit HH_INLINE SipHashStateT(const Key& key) {
- v0 = 0x736f6d6570736575ull ^ key[0];
- v1 = 0x646f72616e646f6dull ^ key[1];
- v2 = 0x6c7967656e657261ull ^ key[0];
- v3 = 0x7465646279746573ull ^ key[1];
- }
-
- HH_INLINE void Update(const char* bytes) {
- HH_U64 packet;
- memcpy(&packet, bytes, sizeof(packet));
- packet = host_from_le64(packet);
-
- v3 ^= packet;
-
- Compress<kUpdateIters>();
-
- v0 ^= packet;
- }
-
- HH_INLINE HH_U64 Finalize() {
- // Mix in bits to avoid leaking the key if all packets were zero.
- v2 ^= 0xFF;
-
- Compress<kFinalizeIters>();
-
- return (v0 ^ v1) ^ (v2 ^ v3);
- }
- private:
- // Rotate a 64-bit value "v" left by N bits.
- template <HH_U64 bits>
- static HH_INLINE HH_U64 RotateLeft(const HH_U64 v) {
- const HH_U64 left = v << bits;
- const HH_U64 right = v >> (64 - bits);
- return left | right;
- }
-
- template <size_t rounds>
- HH_INLINE void Compress() {
- for (size_t i = 0; i < rounds; ++i) {
- // ARX network: add, rotate, exclusive-or.
- v0 += v1;
- v2 += v3;
- v1 = RotateLeft<13>(v1);
- v3 = RotateLeft<16>(v3);
- v1 ^= v0;
- v3 ^= v2;
-
- v0 = RotateLeft<32>(v0);
-
- v2 += v1;
- v0 += v3;
- v1 = RotateLeft<17>(v1);
- v3 = RotateLeft<21>(v3);
- v1 ^= v2;
- v3 ^= v0;
-
- v2 = RotateLeft<32>(v2);
- }
- }
-
- HH_U64 v0;
- HH_U64 v1;
- HH_U64 v2;
- HH_U64 v3;
-};
-
-using SipHashState = SipHashStateT<2, 4>;
-using SipHash13State = SipHashStateT<1, 3>;
-
-// Override the HighwayTreeHash padding scheme with that of SipHash so that
-// the hash output matches the known-good values in sip_hash_test.
-template <>
-HH_INLINE void PaddedUpdate<SipHashState>(const HH_U64 size,
- const char* remaining_bytes,
- const HH_U64 remaining_size,
- SipHashState* state) {
- // Copy to avoid overrunning the input buffer.
- char final_packet[SipHashState::kPacketSize] = {0};
- memcpy(final_packet, remaining_bytes, remaining_size);
- final_packet[SipHashState::kPacketSize - 1] = static_cast<char>(size & 0xFF);
- state->Update(final_packet);
-}
-
-template <>
-HH_INLINE void PaddedUpdate<SipHash13State>(const HH_U64 size,
- const char* remaining_bytes,
- const HH_U64 remaining_size,
- SipHash13State* state) {
- // Copy to avoid overrunning the input buffer.
- char final_packet[SipHash13State::kPacketSize] = {0};
- memcpy(final_packet, remaining_bytes, remaining_size);
- final_packet[SipHash13State::kPacketSize - 1] =
- static_cast<char>(size & 0xFF);
- state->Update(final_packet);
-}
-
-// Fast, cryptographically strong pseudo-random function, e.g. for
-// deterministic/idempotent 'random' number generation. See also
-// README.md for information on resisting hash flooding attacks.
-//
-// Robust versus timing attacks because memory accesses are sequential
-// and the algorithm is branch-free. Compute time is proportional to the
-// number of 8-byte packets and about twice as fast as an sse41 implementation.
-//
-// "key" is a secret 128-bit key unknown to attackers.
-// "bytes" is the data to hash; ceil(size / 8) * 8 bytes are read.
-// Returns a 64-bit hash of the given data bytes, which are swapped on
-// big-endian CPUs so the return value is the same as on little-endian CPUs.
-static HH_INLINE HH_U64 SipHash(const SipHashState::Key& key, const char* bytes,
- const HH_U64 size) {
- return ComputeHash<SipHashState>(key, bytes, size);
-}
-
-// Round-reduced SipHash version (1 update and 3 finalization rounds).
-static HH_INLINE HH_U64 SipHash13(const SipHash13State::Key& key,
- const char* bytes, const HH_U64 size) {
- return ComputeHash<SipHash13State>(key, bytes, size);
-}
-
-template <int kNumLanes, int kUpdateIters, int kFinalizeIters>
-static HH_INLINE HH_U64 ReduceSipTreeHash(
- const typename SipHashStateT<kUpdateIters, kFinalizeIters>::Key& key,
- const uint64_t (&hashes)[kNumLanes]) {
- SipHashStateT<kUpdateIters, kFinalizeIters> state(key);
-
- for (int i = 0; i < kNumLanes; ++i) {
- state.Update(reinterpret_cast<const char*>(&hashes[i]));
- }
-
- return state.Finalize();
-}
-
-} // namespace highwayhash
-
-#endif // HIGHWAYHASH_SIP_HASH_H_
+// Copyright 2016 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef HIGHWAYHASH_SIP_HASH_H_
+#define HIGHWAYHASH_SIP_HASH_H_
+
+// Portable but fast SipHash implementation.
+
+#include <cstddef>
+#include <cstring> // memcpy
+
+#include "highwayhash/arch_specific.h"
+#include "highwayhash/compiler_specific.h"
+#include "highwayhash/endianess.h"
+#include "highwayhash/state_helpers.h"
+
+namespace highwayhash {
+
+// Paper: https://www.131002.net/siphash/siphash.pdf
+template <int kUpdateIters, int kFinalizeIters>
+class SipHashStateT {
+ public:
+ using Key = HH_U64[2];
+ static const size_t kPacketSize = sizeof(HH_U64);
+
+ explicit HH_INLINE SipHashStateT(const Key& key) {
+ v0 = 0x736f6d6570736575ull ^ key[0];
+ v1 = 0x646f72616e646f6dull ^ key[1];
+ v2 = 0x6c7967656e657261ull ^ key[0];
+ v3 = 0x7465646279746573ull ^ key[1];
+ }
+
+ HH_INLINE void Update(const char* bytes) {
+ HH_U64 packet;
+ memcpy(&packet, bytes, sizeof(packet));
+ packet = host_from_le64(packet);
+
+ v3 ^= packet;
+
+ Compress<kUpdateIters>();
+
+ v0 ^= packet;
+ }
+
+ HH_INLINE HH_U64 Finalize() {
+ // Mix in bits to avoid leaking the key if all packets were zero.
+ v2 ^= 0xFF;
+
+ Compress<kFinalizeIters>();
+
+ return (v0 ^ v1) ^ (v2 ^ v3);
+ }
+ private:
+ // Rotate a 64-bit value "v" left by N bits.
+ template <HH_U64 bits>
+ static HH_INLINE HH_U64 RotateLeft(const HH_U64 v) {
+ const HH_U64 left = v << bits;
+ const HH_U64 right = v >> (64 - bits);
+ return left | right;
+ }
+
+ template <size_t rounds>
+ HH_INLINE void Compress() {
+ for (size_t i = 0; i < rounds; ++i) {
+ // ARX network: add, rotate, exclusive-or.
+ v0 += v1;
+ v2 += v3;
+ v1 = RotateLeft<13>(v1);
+ v3 = RotateLeft<16>(v3);
+ v1 ^= v0;
+ v3 ^= v2;
+
+ v0 = RotateLeft<32>(v0);
+
+ v2 += v1;
+ v0 += v3;
+ v1 = RotateLeft<17>(v1);
+ v3 = RotateLeft<21>(v3);
+ v1 ^= v2;
+ v3 ^= v0;
+
+ v2 = RotateLeft<32>(v2);
+ }
+ }
+
+ HH_U64 v0;
+ HH_U64 v1;
+ HH_U64 v2;
+ HH_U64 v3;
+};
+
+using SipHashState = SipHashStateT<2, 4>;
+using SipHash13State = SipHashStateT<1, 3>;
+
+// Override the HighwayTreeHash padding scheme with that of SipHash so that
+// the hash output matches the known-good values in sip_hash_test.
+template <>
+HH_INLINE void PaddedUpdate<SipHashState>(const HH_U64 size,
+ const char* remaining_bytes,
+ const HH_U64 remaining_size,
+ SipHashState* state) {
+ // Copy to avoid overrunning the input buffer.
+ char final_packet[SipHashState::kPacketSize] = {0};
+ memcpy(final_packet, remaining_bytes, remaining_size);
+ final_packet[SipHashState::kPacketSize - 1] = static_cast<char>(size & 0xFF);
+ state->Update(final_packet);
+}
+
+template <>
+HH_INLINE void PaddedUpdate<SipHash13State>(const HH_U64 size,
+ const char* remaining_bytes,
+ const HH_U64 remaining_size,
+ SipHash13State* state) {
+ // Copy to avoid overrunning the input buffer.
+ char final_packet[SipHash13State::kPacketSize] = {0};
+ memcpy(final_packet, remaining_bytes, remaining_size);
+ final_packet[SipHash13State::kPacketSize - 1] =
+ static_cast<char>(size & 0xFF);
+ state->Update(final_packet);
+}
+
+// Fast, cryptographically strong pseudo-random function, e.g. for
+// deterministic/idempotent 'random' number generation. See also
+// README.md for information on resisting hash flooding attacks.
+//
+// Robust versus timing attacks because memory accesses are sequential
+// and the algorithm is branch-free. Compute time is proportional to the
+// number of 8-byte packets and about twice as fast as an sse41 implementation.
+//
+// "key" is a secret 128-bit key unknown to attackers.
+// "bytes" is the data to hash; ceil(size / 8) * 8 bytes are read.
+// Returns a 64-bit hash of the given data bytes, which are swapped on
+// big-endian CPUs so the return value is the same as on little-endian CPUs.
+static HH_INLINE HH_U64 SipHash(const SipHashState::Key& key, const char* bytes,
+ const HH_U64 size) {
+ return ComputeHash<SipHashState>(key, bytes, size);
+}
+
+// Round-reduced SipHash version (1 update and 3 finalization rounds).
+static HH_INLINE HH_U64 SipHash13(const SipHash13State::Key& key,
+ const char* bytes, const HH_U64 size) {
+ return ComputeHash<SipHash13State>(key, bytes, size);
+}
+
+template <int kNumLanes, int kUpdateIters, int kFinalizeIters>
+static HH_INLINE HH_U64 ReduceSipTreeHash(
+ const typename SipHashStateT<kUpdateIters, kFinalizeIters>::Key& key,
+ const uint64_t (&hashes)[kNumLanes]) {
+ SipHashStateT<kUpdateIters, kFinalizeIters> state(key);
+
+ for (int i = 0; i < kNumLanes; ++i) {
+ state.Update(reinterpret_cast<const char*>(&hashes[i]));
+ }
+
+ return state.Finalize();
+}
+
+} // namespace highwayhash
+
+#endif // HIGHWAYHASH_SIP_HASH_H_
diff --git a/contrib/libs/highwayhash/highwayhash/sip_hash_test.cc b/contrib/libs/highwayhash/highwayhash/sip_hash_test.cc
index 8da79cf058..425dfea93c 100644
--- a/contrib/libs/highwayhash/highwayhash/sip_hash_test.cc
+++ b/contrib/libs/highwayhash/highwayhash/sip_hash_test.cc
@@ -1,150 +1,150 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "highwayhash/sip_hash.h"
-
-#include <cassert>
-#include <numeric>
-#include <stdio.h>
-#include <stdlib.h>
-
-#ifdef HH_GOOGLETEST
-#include "base/integral_types.h"
-#include "testing/base/public/benchmark.h"
-#include "testing/base/public/gunit.h"
-#endif
-#include "highwayhash/scalar_sip_tree_hash.h"
-#include "highwayhash/sip_tree_hash.h"
-
-namespace highwayhash {
-namespace {
-
-void VerifySipHash() {
- const int kMaxSize = 64;
- char in[kMaxSize]; // empty string, 00, 00 01, ...
- const HH_U64 key[2] = {0x0706050403020100ULL, 0x0F0E0D0C0B0A0908ULL};
-
- // Known-good SipHash-2-4 output from D. Bernstein.
- const HH_U64 kSipHashOutput[64] = {
- 0x726FDB47DD0E0E31, 0x74F839C593DC67FD, 0x0D6C8009D9A94F5A,
- 0x85676696D7FB7E2D, 0xCF2794E0277187B7, 0x18765564CD99A68D,
- 0xCBC9466E58FEE3CE, 0xAB0200F58B01D137, 0x93F5F5799A932462,
- 0x9E0082DF0BA9E4B0, 0x7A5DBBC594DDB9F3, 0xF4B32F46226BADA7,
- 0x751E8FBC860EE5FB, 0x14EA5627C0843D90, 0xF723CA908E7AF2EE,
- 0xA129CA6149BE45E5, 0x3F2ACC7F57C29BDB, 0x699AE9F52CBE4794,
- 0x4BC1B3F0968DD39C, 0xBB6DC91DA77961BD, 0xBED65CF21AA2EE98,
- 0xD0F2CBB02E3B67C7, 0x93536795E3A33E88, 0xA80C038CCD5CCEC8,
- 0xB8AD50C6F649AF94, 0xBCE192DE8A85B8EA, 0x17D835B85BBB15F3,
- 0x2F2E6163076BCFAD, 0xDE4DAAACA71DC9A5, 0xA6A2506687956571,
- 0xAD87A3535C49EF28, 0x32D892FAD841C342, 0x7127512F72F27CCE,
- 0xA7F32346F95978E3, 0x12E0B01ABB051238, 0x15E034D40FA197AE,
- 0x314DFFBE0815A3B4, 0x027990F029623981, 0xCADCD4E59EF40C4D,
- 0x9ABFD8766A33735C, 0x0E3EA96B5304A7D0, 0xAD0C42D6FC585992,
- 0x187306C89BC215A9, 0xD4A60ABCF3792B95, 0xF935451DE4F21DF2,
- 0xA9538F0419755787, 0xDB9ACDDFF56CA510, 0xD06C98CD5C0975EB,
- 0xE612A3CB9ECBA951, 0xC766E62CFCADAF96, 0xEE64435A9752FE72,
- 0xA192D576B245165A, 0x0A8787BF8ECB74B2, 0x81B3E73D20B49B6F,
- 0x7FA8220BA3B2ECEA, 0x245731C13CA42499, 0xB78DBFAF3A8D83BD,
- 0xEA1AD565322A1A0B, 0x60E61C23A3795013, 0x6606D7E446282B93,
- 0x6CA4ECB15C5F91E1, 0x9F626DA15C9625F3, 0xE51B38608EF25F57,
- 0x958A324CEB064572};
-
- for (int size = 0; size < kMaxSize; ++size) {
- in[size] = static_cast<char>(size);
- const HH_U64 hash = highwayhash::SipHash(key, in, size);
-#ifdef HH_GOOGLETEST
- EXPECT_EQ(kSipHashOutput[size], hash) << "Mismatch at length " << size;
-#else
- if (hash != kSipHashOutput[size]) {
- printf("Mismatch at length %d\n", size);
- abort();
- }
-#endif
- }
-}
-
-#ifdef HH_GOOGLETEST
-TEST(SipHashTest, OutputMatchesExpectations) { VerifySipHash(); }
-
-namespace bm {
-/* Run with:
- blaze run -c opt --cpu=haswell third_party/highwayhash:sip_hash_test -- \
- --benchmarks=all --benchmark_min_iters=1 --benchmark_min_time=0.25
-*/
-
-// Returns a pointer to memory of at least size bytes long to be used as hashing
-// input.
-char* GetInput(size_t size) {
- static constexpr size_t kMaxSize = 100 << 20;
- assert(size <= kMaxSize);
- static auto* res = []() {
- auto* res = new char[kMaxSize];
- std::iota(res, res + kMaxSize, 0);
- return res;
- }();
- return res;
-}
-
-template <class Hasher>
-void BM(int iters, int size) {
- StopBenchmarkTiming();
- auto* input = GetInput(size);
- const HH_U64 keys[4] = {0x0706050403020100ULL, 0x0F0E0D0C0B0A0908ULL,
- 0x1716151413121110ULL, 0x1F1E1D1C1B1A1918ULL};
- Hasher hasher(keys);
- StartBenchmarkTiming();
- for (int i = 0; i < iters; ++i) {
- testing::DoNotOptimize(hasher(input, size));
- }
- StopBenchmarkTiming();
- SetBenchmarkBytesProcessed(static_cast<int64>(iters) * size);
-}
-
-void Args(::testing::Benchmark* bm) {
- bm->DenseRange(1, 16)->Range(32, 100 << 20);
-}
-
-#define DEFINE_HASHER(hashfn, num_keys) \
- struct hashfn##er { \
- hashfn##er(const HH_U64* k) { memcpy(keys, k, sizeof(keys)); } \
- HH_U64 operator()(const char* input, size_t size) { \
- return highwayhash::hashfn(keys, input, size); \
- } \
- HH_U64 keys[num_keys]; \
- }
-
-DEFINE_HASHER(SipHash, 2);
-BENCHMARK(BM<SipHasher>)->Apply(Args);
-
-DEFINE_HASHER(ScalarSipTreeHash, 4);
-BENCHMARK(BM<ScalarSipTreeHasher>)->Apply(Args);
-
-#ifdef __AVX2__
-DEFINE_HASHER(SipTreeHash, 4);
-BENCHMARK(BM<SipTreeHasher>)->Apply(Args);
-#endif
-
-} // namespace bm
-#endif // HH_GOOGLETEST
-
-} // namespace
-} // namespace highwayhash
-
-#ifndef HH_GOOGLETEST
-int main(int argc, char* argv[]) {
- highwayhash::VerifySipHash();
- printf("VerifySipHash succeeded.\n");
- return 0;
-}
-#endif
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "highwayhash/sip_hash.h"
+
+#include <cassert>
+#include <numeric>
+#include <stdio.h>
+#include <stdlib.h>
+
+#ifdef HH_GOOGLETEST
+#include "base/integral_types.h"
+#include "testing/base/public/benchmark.h"
+#include "testing/base/public/gunit.h"
+#endif
+#include "highwayhash/scalar_sip_tree_hash.h"
+#include "highwayhash/sip_tree_hash.h"
+
+namespace highwayhash {
+namespace {
+
+void VerifySipHash() {
+ const int kMaxSize = 64;
+ char in[kMaxSize]; // empty string, 00, 00 01, ...
+ const HH_U64 key[2] = {0x0706050403020100ULL, 0x0F0E0D0C0B0A0908ULL};
+
+ // Known-good SipHash-2-4 output from D. Bernstein.
+ const HH_U64 kSipHashOutput[64] = {
+ 0x726FDB47DD0E0E31, 0x74F839C593DC67FD, 0x0D6C8009D9A94F5A,
+ 0x85676696D7FB7E2D, 0xCF2794E0277187B7, 0x18765564CD99A68D,
+ 0xCBC9466E58FEE3CE, 0xAB0200F58B01D137, 0x93F5F5799A932462,
+ 0x9E0082DF0BA9E4B0, 0x7A5DBBC594DDB9F3, 0xF4B32F46226BADA7,
+ 0x751E8FBC860EE5FB, 0x14EA5627C0843D90, 0xF723CA908E7AF2EE,
+ 0xA129CA6149BE45E5, 0x3F2ACC7F57C29BDB, 0x699AE9F52CBE4794,
+ 0x4BC1B3F0968DD39C, 0xBB6DC91DA77961BD, 0xBED65CF21AA2EE98,
+ 0xD0F2CBB02E3B67C7, 0x93536795E3A33E88, 0xA80C038CCD5CCEC8,
+ 0xB8AD50C6F649AF94, 0xBCE192DE8A85B8EA, 0x17D835B85BBB15F3,
+ 0x2F2E6163076BCFAD, 0xDE4DAAACA71DC9A5, 0xA6A2506687956571,
+ 0xAD87A3535C49EF28, 0x32D892FAD841C342, 0x7127512F72F27CCE,
+ 0xA7F32346F95978E3, 0x12E0B01ABB051238, 0x15E034D40FA197AE,
+ 0x314DFFBE0815A3B4, 0x027990F029623981, 0xCADCD4E59EF40C4D,
+ 0x9ABFD8766A33735C, 0x0E3EA96B5304A7D0, 0xAD0C42D6FC585992,
+ 0x187306C89BC215A9, 0xD4A60ABCF3792B95, 0xF935451DE4F21DF2,
+ 0xA9538F0419755787, 0xDB9ACDDFF56CA510, 0xD06C98CD5C0975EB,
+ 0xE612A3CB9ECBA951, 0xC766E62CFCADAF96, 0xEE64435A9752FE72,
+ 0xA192D576B245165A, 0x0A8787BF8ECB74B2, 0x81B3E73D20B49B6F,
+ 0x7FA8220BA3B2ECEA, 0x245731C13CA42499, 0xB78DBFAF3A8D83BD,
+ 0xEA1AD565322A1A0B, 0x60E61C23A3795013, 0x6606D7E446282B93,
+ 0x6CA4ECB15C5F91E1, 0x9F626DA15C9625F3, 0xE51B38608EF25F57,
+ 0x958A324CEB064572};
+
+ for (int size = 0; size < kMaxSize; ++size) {
+ in[size] = static_cast<char>(size);
+ const HH_U64 hash = highwayhash::SipHash(key, in, size);
+#ifdef HH_GOOGLETEST
+ EXPECT_EQ(kSipHashOutput[size], hash) << "Mismatch at length " << size;
+#else
+ if (hash != kSipHashOutput[size]) {
+ printf("Mismatch at length %d\n", size);
+ abort();
+ }
+#endif
+ }
+}
+
+#ifdef HH_GOOGLETEST
+TEST(SipHashTest, OutputMatchesExpectations) { VerifySipHash(); }
+
+namespace bm {
+/* Run with:
+ blaze run -c opt --cpu=haswell third_party/highwayhash:sip_hash_test -- \
+ --benchmarks=all --benchmark_min_iters=1 --benchmark_min_time=0.25
+*/
+
+// Returns a pointer to memory of at least size bytes long to be used as hashing
+// input.
+char* GetInput(size_t size) {
+ static constexpr size_t kMaxSize = 100 << 20;
+ assert(size <= kMaxSize);
+ static auto* res = []() {
+ auto* res = new char[kMaxSize];
+ std::iota(res, res + kMaxSize, 0);
+ return res;
+ }();
+ return res;
+}
+
+template <class Hasher>
+void BM(int iters, int size) {
+ StopBenchmarkTiming();
+ auto* input = GetInput(size);
+ const HH_U64 keys[4] = {0x0706050403020100ULL, 0x0F0E0D0C0B0A0908ULL,
+ 0x1716151413121110ULL, 0x1F1E1D1C1B1A1918ULL};
+ Hasher hasher(keys);
+ StartBenchmarkTiming();
+ for (int i = 0; i < iters; ++i) {
+ testing::DoNotOptimize(hasher(input, size));
+ }
+ StopBenchmarkTiming();
+ SetBenchmarkBytesProcessed(static_cast<int64>(iters) * size);
+}
+
+void Args(::testing::Benchmark* bm) {
+ bm->DenseRange(1, 16)->Range(32, 100 << 20);
+}
+
+#define DEFINE_HASHER(hashfn, num_keys) \
+ struct hashfn##er { \
+ hashfn##er(const HH_U64* k) { memcpy(keys, k, sizeof(keys)); } \
+ HH_U64 operator()(const char* input, size_t size) { \
+ return highwayhash::hashfn(keys, input, size); \
+ } \
+ HH_U64 keys[num_keys]; \
+ }
+
+DEFINE_HASHER(SipHash, 2);
+BENCHMARK(BM<SipHasher>)->Apply(Args);
+
+DEFINE_HASHER(ScalarSipTreeHash, 4);
+BENCHMARK(BM<ScalarSipTreeHasher>)->Apply(Args);
+
+#ifdef __AVX2__
+DEFINE_HASHER(SipTreeHash, 4);
+BENCHMARK(BM<SipTreeHasher>)->Apply(Args);
+#endif
+
+} // namespace bm
+#endif // HH_GOOGLETEST
+
+} // namespace
+} // namespace highwayhash
+
+#ifndef HH_GOOGLETEST
+int main(int argc, char* argv[]) {
+ highwayhash::VerifySipHash();
+ printf("VerifySipHash succeeded.\n");
+ return 0;
+}
+#endif
diff --git a/contrib/libs/highwayhash/highwayhash/sip_tree_hash.cc b/contrib/libs/highwayhash/highwayhash/sip_tree_hash.cc
index 2dc4ce78e4..18c56d7907 100644
--- a/contrib/libs/highwayhash/highwayhash/sip_tree_hash.cc
+++ b/contrib/libs/highwayhash/highwayhash/sip_tree_hash.cc
@@ -1,227 +1,227 @@
-// Copyright 2015 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "highwayhash/sip_tree_hash.h"
-
-#include <cstring> // memcpy
-
-#include "highwayhash/arch_specific.h"
-#include "highwayhash/compiler_specific.h"
-#include "highwayhash/sip_hash.h"
-
-#if HH_TARGET == HH_TARGET_AVX2
-#include "highwayhash/vector256.h"
-namespace highwayhash {
-namespace HH_TARGET_NAME {
-namespace {
-
-// Paper: https://www.131002.net/siphash/siphash.pdf
-// SSE41 implementation: https://goo.gl/80GBSD
-// Tree hash extension: http://dx.doi.org/10.4236/jis.2014.53010
-
-// The hash state is updated by injecting 4x8-byte packets;
-// XORing together all state vectors yields 32 bytes that are
-// reduced to 64 bits via 8-byte SipHash.
-
-const int kPacketSize = 32;
-const int kNumLanes = kPacketSize / sizeof(HH_U64);
-
-// 32 bytes key. Parameters are hardwired to c=2, d=4 [rounds].
-template <int kUpdateRounds, int kFinalizeRounds>
-class SipTreeHashStateT {
- public:
- explicit HH_INLINE SipTreeHashStateT(const HH_U64 (&keys)[kNumLanes]) {
- const V4x64U init(0x7465646279746573ull, 0x6c7967656e657261ull,
- 0x646f72616e646f6dull, 0x736f6d6570736575ull);
- const V4x64U lanes(kNumLanes | 3, kNumLanes | 2, kNumLanes | 1,
- kNumLanes | 0);
- const V4x64U key =
- LoadUnaligned<V4x64U>(reinterpret_cast<const uint64_t*>(keys)) ^ lanes;
- v0 = V4x64U(_mm256_permute4x64_epi64(init, 0x00)) ^ key;
- v1 = V4x64U(_mm256_permute4x64_epi64(init, 0x55)) ^ key;
- v2 = V4x64U(_mm256_permute4x64_epi64(init, 0xAA)) ^ key;
- v3 = V4x64U(_mm256_permute4x64_epi64(init, 0xFF)) ^ key;
- }
-
- HH_INLINE void Update(const V4x64U& packet) {
- v3 ^= packet;
-
- Compress<kUpdateRounds>();
-
- v0 ^= packet;
- }
-
- HH_INLINE V4x64U Finalize() {
- // Mix in bits to avoid leaking the key if all packets were zero.
- v2 ^= V4x64U(0xFF);
-
- Compress<kFinalizeRounds>();
-
- return (v0 ^ v1) ^ (v2 ^ v3);
- }
-
- private:
- static HH_INLINE V4x64U RotateLeft16(const V4x64U& v) {
- const V4x64U control(0x0D0C0B0A09080F0EULL, 0x0504030201000706ULL,
- 0x0D0C0B0A09080F0EULL, 0x0504030201000706ULL);
- return V4x64U(_mm256_shuffle_epi8(v, control));
- }
-
- // Rotates each 64-bit element of "v" left by N bits.
- template <HH_U64 bits>
- static HH_INLINE V4x64U RotateLeft(const V4x64U& v) {
- const V4x64U left = v << bits;
- const V4x64U right = v >> (64 - bits);
- return left | right;
- }
-
- static HH_INLINE V4x64U Rotate32(const V4x64U& v) {
- return V4x64U(_mm256_shuffle_epi32(v, _MM_SHUFFLE(2, 3, 0, 1)));
- }
-
- template <int kRounds>
- HH_INLINE void Compress() {
- // Loop is faster than unrolling!
- for (int i = 0; i < kRounds; ++i) {
- // ARX network: add, rotate, exclusive-or.
- v0 += v1;
- v2 += v3;
- v1 = RotateLeft<13>(v1);
- v3 = RotateLeft16(v3);
- v1 ^= v0;
- v3 ^= v2;
-
- v0 = Rotate32(v0);
-
- v2 += v1;
- v0 += v3;
- v1 = RotateLeft<17>(v1);
- v3 = RotateLeft<21>(v3);
- v1 ^= v2;
- v3 ^= v0;
-
- v2 = Rotate32(v2);
- }
- }
-
- V4x64U v0;
- V4x64U v1;
- V4x64U v2;
- V4x64U v3;
-};
-
-// Returns 32-byte packet by loading the remaining 0..31 bytes, storing
-// "remainder" in the upper byte, and zeroing any intervening bytes.
-// "remainder" is the number of accessible/remaining bytes (size % 32).
-// Loading past the end of the input risks page fault exceptions which even
-// LDDQU cannot prevent.
-static HH_INLINE V4x64U LoadFinalPacket32(const char* bytes, const HH_U64 size,
- const HH_U64 remainder) {
- // Copying into an aligned buffer incurs a store-to-load-forwarding stall.
- // Instead, we use masked loads to read any remaining whole uint32_t
- // without incurring page faults for the others.
- const size_t remaining_32 = remainder >> 2; // 0..7
-
- // mask[32*i+31] := uint32_t #i valid/accessible ? 1 : 0.
- // To avoid large lookup tables, we pack uint32_t lanes into bytes,
- // compute the packed mask by shifting, and then sign-extend 0xFF to
- // 0xFFFFFFFF (although only the MSB needs to be set).
- // remaining_32 = 0 => mask = 00000000; remaining_32 = 7 => mask = 01111111.
- const HH_U64 packed_mask = 0x00FFFFFFFFFFFFFFULL >> ((7 - remaining_32) * 8);
- const V4x64U mask(_mm256_cvtepi8_epi32(_mm_cvtsi64_si128(packed_mask)));
- // Load 0..7 remaining (potentially unaligned) uint32_t.
- const V4x64U packet28(
- _mm256_maskload_epi32(reinterpret_cast<const int*>(bytes), mask));
-
- // Load any remaining bytes individually and combine into a uint32_t.
- const int remainder_mod4 = remainder & 3;
- // Length padding ensures that zero-valued buffers of different lengths
- // result in different hashes.
- uint32_t packet4 = static_cast<uint32_t>(remainder << 24);
- const char* final_bytes = bytes + (remaining_32 * 4);
- for (int i = 0; i < remainder_mod4; ++i) {
- const uint32_t byte = static_cast<unsigned char>(final_bytes[i]);
- packet4 += byte << (i * 8);
- }
-
- // The upper 4 bytes of packet28 are zero; replace with packet4 to
- // obtain the (length-padded) 32-byte packet.
- const __m256i v4 = _mm256_broadcastd_epi32(_mm_cvtsi32_si128(packet4));
- const V4x64U packet(_mm256_blend_epi32(packet28, v4, 0x80));
- return packet;
-}
-
-} // namespace
-} // namespace HH_TARGET_NAME
-
-template <size_t kUpdateRounds, size_t kFinalizeRounds>
-HH_U64 SipTreeHashT(const HH_U64 (&key)[4], const char* bytes,
- const HH_U64 size) {
- using namespace HH_TARGET_NAME;
- SipTreeHashStateT<kUpdateRounds, kFinalizeRounds> state(key);
-
- const size_t remainder = size & (kPacketSize - 1);
- const size_t truncated_size = size - remainder;
- const HH_U64* packets = reinterpret_cast<const HH_U64*>(bytes);
- for (size_t i = 0; i < truncated_size / sizeof(HH_U64); i += kNumLanes) {
- const V4x64U packet =
- LoadUnaligned<V4x64U>(reinterpret_cast<const uint64_t*>(packets) + i);
- state.Update(packet);
- }
-
- const V4x64U final_packet =
- LoadFinalPacket32(bytes + truncated_size, size, remainder);
-
- state.Update(final_packet);
-
- // Faster than passing __m256i and extracting.
- HH_ALIGNAS(32) uint64_t hashes[kNumLanes];
- Store(state.Finalize(), hashes);
-
- typename SipHashStateT<kUpdateRounds, kFinalizeRounds>::Key reduce_key;
- memcpy(&reduce_key, &key, sizeof(reduce_key));
- return ReduceSipTreeHash<kNumLanes, kUpdateRounds, kFinalizeRounds>(
- reduce_key, hashes);
-}
-
-HH_U64 SipTreeHash(const HH_U64 (&key)[4], const char* bytes,
- const HH_U64 size) {
- return SipTreeHashT<2, 4>(key, bytes, size);
-}
-
-HH_U64 SipTreeHash13(const HH_U64 (&key)[4], const char* bytes,
- const HH_U64 size) {
- return SipTreeHashT<1, 3>(key, bytes, size);
-}
-
-} // namespace highwayhash
-
-using highwayhash::HH_U64;
-using highwayhash::SipTreeHash;
-using highwayhash::SipTreeHash13;
-using Key = HH_U64[4];
-
-extern "C" {
-
-HH_U64 SipTreeHashC(const HH_U64* key, const char* bytes, const HH_U64 size) {
- return SipTreeHash(*reinterpret_cast<const Key*>(key), bytes, size);
-}
-
-HH_U64 SipTreeHash13C(const HH_U64* key, const char* bytes, const HH_U64 size) {
- return SipTreeHash13(*reinterpret_cast<const Key*>(key), bytes, size);
-}
-
-} // extern "C"
-
-#endif // HH_TARGET == HH_TARGET_AVX2
+// Copyright 2015 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "highwayhash/sip_tree_hash.h"
+
+#include <cstring> // memcpy
+
+#include "highwayhash/arch_specific.h"
+#include "highwayhash/compiler_specific.h"
+#include "highwayhash/sip_hash.h"
+
+#if HH_TARGET == HH_TARGET_AVX2
+#include "highwayhash/vector256.h"
+namespace highwayhash {
+namespace HH_TARGET_NAME {
+namespace {
+
+// Paper: https://www.131002.net/siphash/siphash.pdf
+// SSE41 implementation: https://goo.gl/80GBSD
+// Tree hash extension: http://dx.doi.org/10.4236/jis.2014.53010
+
+// The hash state is updated by injecting 4x8-byte packets;
+// XORing together all state vectors yields 32 bytes that are
+// reduced to 64 bits via 8-byte SipHash.
+
+const int kPacketSize = 32;
+const int kNumLanes = kPacketSize / sizeof(HH_U64);
+
+// 32 bytes key. Parameters are hardwired to c=2, d=4 [rounds].
+template <int kUpdateRounds, int kFinalizeRounds>
+class SipTreeHashStateT {
+ public:
+ explicit HH_INLINE SipTreeHashStateT(const HH_U64 (&keys)[kNumLanes]) {
+ const V4x64U init(0x7465646279746573ull, 0x6c7967656e657261ull,
+ 0x646f72616e646f6dull, 0x736f6d6570736575ull);
+ const V4x64U lanes(kNumLanes | 3, kNumLanes | 2, kNumLanes | 1,
+ kNumLanes | 0);
+ const V4x64U key =
+ LoadUnaligned<V4x64U>(reinterpret_cast<const uint64_t*>(keys)) ^ lanes;
+ v0 = V4x64U(_mm256_permute4x64_epi64(init, 0x00)) ^ key;
+ v1 = V4x64U(_mm256_permute4x64_epi64(init, 0x55)) ^ key;
+ v2 = V4x64U(_mm256_permute4x64_epi64(init, 0xAA)) ^ key;
+ v3 = V4x64U(_mm256_permute4x64_epi64(init, 0xFF)) ^ key;
+ }
+
+ HH_INLINE void Update(const V4x64U& packet) {
+ v3 ^= packet;
+
+ Compress<kUpdateRounds>();
+
+ v0 ^= packet;
+ }
+
+ HH_INLINE V4x64U Finalize() {
+ // Mix in bits to avoid leaking the key if all packets were zero.
+ v2 ^= V4x64U(0xFF);
+
+ Compress<kFinalizeRounds>();
+
+ return (v0 ^ v1) ^ (v2 ^ v3);
+ }
+
+ private:
+ static HH_INLINE V4x64U RotateLeft16(const V4x64U& v) {
+ const V4x64U control(0x0D0C0B0A09080F0EULL, 0x0504030201000706ULL,
+ 0x0D0C0B0A09080F0EULL, 0x0504030201000706ULL);
+ return V4x64U(_mm256_shuffle_epi8(v, control));
+ }
+
+ // Rotates each 64-bit element of "v" left by N bits.
+ template <HH_U64 bits>
+ static HH_INLINE V4x64U RotateLeft(const V4x64U& v) {
+ const V4x64U left = v << bits;
+ const V4x64U right = v >> (64 - bits);
+ return left | right;
+ }
+
+ static HH_INLINE V4x64U Rotate32(const V4x64U& v) {
+ return V4x64U(_mm256_shuffle_epi32(v, _MM_SHUFFLE(2, 3, 0, 1)));
+ }
+
+ template <int kRounds>
+ HH_INLINE void Compress() {
+ // Loop is faster than unrolling!
+ for (int i = 0; i < kRounds; ++i) {
+ // ARX network: add, rotate, exclusive-or.
+ v0 += v1;
+ v2 += v3;
+ v1 = RotateLeft<13>(v1);
+ v3 = RotateLeft16(v3);
+ v1 ^= v0;
+ v3 ^= v2;
+
+ v0 = Rotate32(v0);
+
+ v2 += v1;
+ v0 += v3;
+ v1 = RotateLeft<17>(v1);
+ v3 = RotateLeft<21>(v3);
+ v1 ^= v2;
+ v3 ^= v0;
+
+ v2 = Rotate32(v2);
+ }
+ }
+
+ V4x64U v0;
+ V4x64U v1;
+ V4x64U v2;
+ V4x64U v3;
+};
+
+// Returns 32-byte packet by loading the remaining 0..31 bytes, storing
+// "remainder" in the upper byte, and zeroing any intervening bytes.
+// "remainder" is the number of accessible/remaining bytes (size % 32).
+// Loading past the end of the input risks page fault exceptions which even
+// LDDQU cannot prevent.
+static HH_INLINE V4x64U LoadFinalPacket32(const char* bytes, const HH_U64 size,
+ const HH_U64 remainder) {
+ // Copying into an aligned buffer incurs a store-to-load-forwarding stall.
+ // Instead, we use masked loads to read any remaining whole uint32_t
+ // without incurring page faults for the others.
+ const size_t remaining_32 = remainder >> 2; // 0..7
+
+ // mask[32*i+31] := uint32_t #i valid/accessible ? 1 : 0.
+ // To avoid large lookup tables, we pack uint32_t lanes into bytes,
+ // compute the packed mask by shifting, and then sign-extend 0xFF to
+ // 0xFFFFFFFF (although only the MSB needs to be set).
+ // remaining_32 = 0 => mask = 00000000; remaining_32 = 7 => mask = 01111111.
+ const HH_U64 packed_mask = 0x00FFFFFFFFFFFFFFULL >> ((7 - remaining_32) * 8);
+ const V4x64U mask(_mm256_cvtepi8_epi32(_mm_cvtsi64_si128(packed_mask)));
+ // Load 0..7 remaining (potentially unaligned) uint32_t.
+ const V4x64U packet28(
+ _mm256_maskload_epi32(reinterpret_cast<const int*>(bytes), mask));
+
+ // Load any remaining bytes individually and combine into a uint32_t.
+ const int remainder_mod4 = remainder & 3;
+ // Length padding ensures that zero-valued buffers of different lengths
+ // result in different hashes.
+ uint32_t packet4 = static_cast<uint32_t>(remainder << 24);
+ const char* final_bytes = bytes + (remaining_32 * 4);
+ for (int i = 0; i < remainder_mod4; ++i) {
+ const uint32_t byte = static_cast<unsigned char>(final_bytes[i]);
+ packet4 += byte << (i * 8);
+ }
+
+ // The upper 4 bytes of packet28 are zero; replace with packet4 to
+ // obtain the (length-padded) 32-byte packet.
+ const __m256i v4 = _mm256_broadcastd_epi32(_mm_cvtsi32_si128(packet4));
+ const V4x64U packet(_mm256_blend_epi32(packet28, v4, 0x80));
+ return packet;
+}
+
+} // namespace
+} // namespace HH_TARGET_NAME
+
+template <size_t kUpdateRounds, size_t kFinalizeRounds>
+HH_U64 SipTreeHashT(const HH_U64 (&key)[4], const char* bytes,
+ const HH_U64 size) {
+ using namespace HH_TARGET_NAME;
+ SipTreeHashStateT<kUpdateRounds, kFinalizeRounds> state(key);
+
+ const size_t remainder = size & (kPacketSize - 1);
+ const size_t truncated_size = size - remainder;
+ const HH_U64* packets = reinterpret_cast<const HH_U64*>(bytes);
+ for (size_t i = 0; i < truncated_size / sizeof(HH_U64); i += kNumLanes) {
+ const V4x64U packet =
+ LoadUnaligned<V4x64U>(reinterpret_cast<const uint64_t*>(packets) + i);
+ state.Update(packet);
+ }
+
+ const V4x64U final_packet =
+ LoadFinalPacket32(bytes + truncated_size, size, remainder);
+
+ state.Update(final_packet);
+
+ // Faster than passing __m256i and extracting.
+ HH_ALIGNAS(32) uint64_t hashes[kNumLanes];
+ Store(state.Finalize(), hashes);
+
+ typename SipHashStateT<kUpdateRounds, kFinalizeRounds>::Key reduce_key;
+ memcpy(&reduce_key, &key, sizeof(reduce_key));
+ return ReduceSipTreeHash<kNumLanes, kUpdateRounds, kFinalizeRounds>(
+ reduce_key, hashes);
+}
+
+HH_U64 SipTreeHash(const HH_U64 (&key)[4], const char* bytes,
+ const HH_U64 size) {
+ return SipTreeHashT<2, 4>(key, bytes, size);
+}
+
+HH_U64 SipTreeHash13(const HH_U64 (&key)[4], const char* bytes,
+ const HH_U64 size) {
+ return SipTreeHashT<1, 3>(key, bytes, size);
+}
+
+} // namespace highwayhash
+
+using highwayhash::HH_U64;
+using highwayhash::SipTreeHash;
+using highwayhash::SipTreeHash13;
+using Key = HH_U64[4];
+
+extern "C" {
+
+HH_U64 SipTreeHashC(const HH_U64* key, const char* bytes, const HH_U64 size) {
+ return SipTreeHash(*reinterpret_cast<const Key*>(key), bytes, size);
+}
+
+HH_U64 SipTreeHash13C(const HH_U64* key, const char* bytes, const HH_U64 size) {
+ return SipTreeHash13(*reinterpret_cast<const Key*>(key), bytes, size);
+}
+
+} // extern "C"
+
+#endif // HH_TARGET == HH_TARGET_AVX2
diff --git a/contrib/libs/highwayhash/highwayhash/sip_tree_hash.h b/contrib/libs/highwayhash/highwayhash/sip_tree_hash.h
index 788aa8025b..ee5a42340e 100644
--- a/contrib/libs/highwayhash/highwayhash/sip_tree_hash.h
+++ b/contrib/libs/highwayhash/highwayhash/sip_tree_hash.h
@@ -1,52 +1,52 @@
-// Copyright 2015 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef HIGHWAYHASH_SIP_TREE_HASH_H_
-#define HIGHWAYHASH_SIP_TREE_HASH_H_
-
-#include "highwayhash/state_helpers.h"
-
-#ifdef __cplusplus
-namespace highwayhash {
-extern "C" {
-#endif
-
-// Fast, cryptographically strong pseudo-random function. Useful for:
-// . hash tables holding attacker-controlled data. This function is
-// immune to hash flooding DOS attacks because multi-collisions are
-// infeasible to compute, provided the key remains secret.
-// . deterministic/idempotent 'random' number generation, e.g. for
-// choosing a subset of items based on their contents.
-//
-// Robust versus timing attacks because memory accesses are sequential
-// and the algorithm is branch-free. Compute time is proportional to the
-// number of 8-byte packets and 1.5x faster than an sse41 implementation.
-// Requires an AVX-2 capable CPU.
-//
-// "key" is a secret 256-bit key unknown to attackers.
-// "bytes" is the data to hash (possibly unaligned).
-// "size" is the number of bytes to hash; exactly that many bytes are read.
-// Returns a 64-bit hash of the given data bytes.
-HH_U64 SipTreeHash(const HH_U64 (&key)[4], const char* bytes,
- const HH_U64 size);
-
-HH_U64 SipTreeHash13(const HH_U64 (&key)[4], const char* bytes,
- const HH_U64 size);
-
-#ifdef __cplusplus
-} // extern "C"
-} // namespace highwayhash
-#endif
-
-#endif // HIGHWAYHASH_SIP_TREE_HASH_H_
+// Copyright 2015 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef HIGHWAYHASH_SIP_TREE_HASH_H_
+#define HIGHWAYHASH_SIP_TREE_HASH_H_
+
+#include "highwayhash/state_helpers.h"
+
+#ifdef __cplusplus
+namespace highwayhash {
+extern "C" {
+#endif
+
+// Fast, cryptographically strong pseudo-random function. Useful for:
+// . hash tables holding attacker-controlled data. This function is
+// immune to hash flooding DOS attacks because multi-collisions are
+// infeasible to compute, provided the key remains secret.
+// . deterministic/idempotent 'random' number generation, e.g. for
+// choosing a subset of items based on their contents.
+//
+// Robust versus timing attacks because memory accesses are sequential
+// and the algorithm is branch-free. Compute time is proportional to the
+// number of 8-byte packets and 1.5x faster than an sse41 implementation.
+// Requires an AVX-2 capable CPU.
+//
+// "key" is a secret 256-bit key unknown to attackers.
+// "bytes" is the data to hash (possibly unaligned).
+// "size" is the number of bytes to hash; exactly that many bytes are read.
+// Returns a 64-bit hash of the given data bytes.
+HH_U64 SipTreeHash(const HH_U64 (&key)[4], const char* bytes,
+ const HH_U64 size);
+
+HH_U64 SipTreeHash13(const HH_U64 (&key)[4], const char* bytes,
+ const HH_U64 size);
+
+#ifdef __cplusplus
+} // extern "C"
+} // namespace highwayhash
+#endif
+
+#endif // HIGHWAYHASH_SIP_TREE_HASH_H_
diff --git a/contrib/libs/highwayhash/highwayhash/state_helpers.h b/contrib/libs/highwayhash/highwayhash/state_helpers.h
index 88e31a4509..4dd651260f 100644
--- a/contrib/libs/highwayhash/highwayhash/state_helpers.h
+++ b/contrib/libs/highwayhash/highwayhash/state_helpers.h
@@ -1,128 +1,128 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef HIGHWAYHASH_STATE_H_
-#define HIGHWAYHASH_STATE_H_
-
-// Helper functions to split inputs into packets and call State::Update on each.
-
-#include <stdint.h>
-#include <cstddef>
-#include <cstring>
-#include <memory>
-
-#include "highwayhash/compiler_specific.h"
-
-namespace highwayhash {
-
-// uint64_t is unsigned long on Linux; we need 'unsigned long long'
-// for interoperability with TensorFlow.
-typedef unsigned long long HH_U64; // NOLINT
-
-// Copies the remaining bytes to a zero-padded buffer, sets the upper byte to
-// size % 256 (always possible because this should only be called if the
-// total size is not a multiple of the packet size) and updates hash state.
-//
-// The padding scheme is essentially from SipHash, but permuted for the
-// convenience of AVX-2 masked loads. This function must use the same layout so
-// that the vector and scalar HighwayTreeHash have the same result.
-//
-// "remaining_size" is the number of accessible/remaining bytes
-// (size % kPacketSize).
-//
-// Primary template; the specialization for AVX-2 is faster. Intended as an
-// implementation detail, do not call directly.
-template <class State>
-HH_INLINE void PaddedUpdate(const HH_U64 size, const char* remaining_bytes,
- const HH_U64 remaining_size, State* state) {
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef HIGHWAYHASH_STATE_H_
+#define HIGHWAYHASH_STATE_H_
+
+// Helper functions to split inputs into packets and call State::Update on each.
+
+#include <stdint.h>
+#include <cstddef>
+#include <cstring>
+#include <memory>
+
+#include "highwayhash/compiler_specific.h"
+
+namespace highwayhash {
+
+// uint64_t is unsigned long on Linux; we need 'unsigned long long'
+// for interoperability with TensorFlow.
+typedef unsigned long long HH_U64; // NOLINT
+
+// Copies the remaining bytes to a zero-padded buffer, sets the upper byte to
+// size % 256 (always possible because this should only be called if the
+// total size is not a multiple of the packet size) and updates hash state.
+//
+// The padding scheme is essentially from SipHash, but permuted for the
+// convenience of AVX-2 masked loads. This function must use the same layout so
+// that the vector and scalar HighwayTreeHash have the same result.
+//
+// "remaining_size" is the number of accessible/remaining bytes
+// (size % kPacketSize).
+//
+// Primary template; the specialization for AVX-2 is faster. Intended as an
+// implementation detail, do not call directly.
+template <class State>
+HH_INLINE void PaddedUpdate(const HH_U64 size, const char* remaining_bytes,
+ const HH_U64 remaining_size, State* state) {
HH_ALIGNAS(32) char final_packet[State::kPacketSize] = {0};
-
- // This layout matches the AVX-2 specialization in highway_tree_hash.h.
- uint32_t packet4 = static_cast<uint32_t>(size) << 24;
-
- const size_t remainder_mod4 = remaining_size & 3;
- if (remainder_mod4 != 0) {
- const char* final_bytes = remaining_bytes + remaining_size - remainder_mod4;
- packet4 += static_cast<uint32_t>(final_bytes[0]);
- const int idx1 = remainder_mod4 >> 1;
- const int idx2 = remainder_mod4 - 1;
- packet4 += static_cast<uint32_t>(final_bytes[idx1]) << 8;
- packet4 += static_cast<uint32_t>(final_bytes[idx2]) << 16;
- }
-
- memcpy(final_packet, remaining_bytes, remaining_size - remainder_mod4);
- memcpy(final_packet + State::kPacketSize - 4, &packet4, sizeof(packet4));
-
- state->Update(final_packet);
-}
-
-// Updates hash state for every whole packet, and once more for the final
-// padded packet.
-template <class State>
-HH_INLINE void UpdateState(const char* bytes, const HH_U64 size, State* state) {
- // Feed entire packets.
- const int kPacketSize = State::kPacketSize;
- static_assert((kPacketSize & (kPacketSize - 1)) == 0, "Size must be 2^i.");
- const size_t remainder = size & (kPacketSize - 1);
- const size_t truncated_size = size - remainder;
- for (size_t i = 0; i < truncated_size; i += kPacketSize) {
- state->Update(bytes + i);
- }
-
- PaddedUpdate(size, bytes + truncated_size, remainder, state);
-}
-
-// Convenience function for updating with the bytes of a string.
-template <class String, class State>
-HH_INLINE void UpdateState(const String& s, State* state) {
- const char* bytes = reinterpret_cast<const char*>(s.data());
- const size_t size = s.length() * sizeof(typename String::value_type);
- UpdateState(bytes, size, state);
-}
-
-// Computes a hash of a byte array using the given hash State class.
-//
-// Example: const SipHashState::Key key = { 1, 2 }; char data[4];
-// ComputeHash<SipHashState>(key, data, sizeof(data));
-//
-// This function avoids duplicating Update/Finalize in every call site.
-// Callers wanting to combine multiple hashes should repeatedly UpdateState()
-// and only call State::Finalize once.
-template <class State>
-HH_U64 ComputeHash(const typename State::Key& key, const char* bytes,
- const HH_U64 size) {
- State state(key);
- UpdateState(bytes, size, &state);
- return state.Finalize();
-}
-
-// Computes a hash of a string's bytes using the given hash State class.
-//
-// Example: const SipHashState::Key key = { 1, 2 };
-// StringHasher<SipHashState>()(key, std::u16string(u"abc"));
-//
-// A struct with nested function template enables deduction of the String type.
-template <class State>
-struct StringHasher {
- template <class String>
- HH_U64 operator()(const typename State::Key& key, const String& s) {
- State state(key);
- UpdateState(s, &state);
- return state.Finalize();
- }
-};
-
-} // namespace highwayhash
-
-#endif // HIGHWAYHASH_STATE_H_
+
+ // This layout matches the AVX-2 specialization in highway_tree_hash.h.
+ uint32_t packet4 = static_cast<uint32_t>(size) << 24;
+
+ const size_t remainder_mod4 = remaining_size & 3;
+ if (remainder_mod4 != 0) {
+ const char* final_bytes = remaining_bytes + remaining_size - remainder_mod4;
+ packet4 += static_cast<uint32_t>(final_bytes[0]);
+ const int idx1 = remainder_mod4 >> 1;
+ const int idx2 = remainder_mod4 - 1;
+ packet4 += static_cast<uint32_t>(final_bytes[idx1]) << 8;
+ packet4 += static_cast<uint32_t>(final_bytes[idx2]) << 16;
+ }
+
+ memcpy(final_packet, remaining_bytes, remaining_size - remainder_mod4);
+ memcpy(final_packet + State::kPacketSize - 4, &packet4, sizeof(packet4));
+
+ state->Update(final_packet);
+}
+
+// Updates hash state for every whole packet, and once more for the final
+// padded packet.
+template <class State>
+HH_INLINE void UpdateState(const char* bytes, const HH_U64 size, State* state) {
+ // Feed entire packets.
+ const int kPacketSize = State::kPacketSize;
+ static_assert((kPacketSize & (kPacketSize - 1)) == 0, "Size must be 2^i.");
+ const size_t remainder = size & (kPacketSize - 1);
+ const size_t truncated_size = size - remainder;
+ for (size_t i = 0; i < truncated_size; i += kPacketSize) {
+ state->Update(bytes + i);
+ }
+
+ PaddedUpdate(size, bytes + truncated_size, remainder, state);
+}
+
+// Convenience function for updating with the bytes of a string.
+template <class String, class State>
+HH_INLINE void UpdateState(const String& s, State* state) {
+ const char* bytes = reinterpret_cast<const char*>(s.data());
+ const size_t size = s.length() * sizeof(typename String::value_type);
+ UpdateState(bytes, size, state);
+}
+
+// Computes a hash of a byte array using the given hash State class.
+//
+// Example: const SipHashState::Key key = { 1, 2 }; char data[4];
+// ComputeHash<SipHashState>(key, data, sizeof(data));
+//
+// This function avoids duplicating Update/Finalize in every call site.
+// Callers wanting to combine multiple hashes should repeatedly UpdateState()
+// and only call State::Finalize once.
+template <class State>
+HH_U64 ComputeHash(const typename State::Key& key, const char* bytes,
+ const HH_U64 size) {
+ State state(key);
+ UpdateState(bytes, size, &state);
+ return state.Finalize();
+}
+
+// Computes a hash of a string's bytes using the given hash State class.
+//
+// Example: const SipHashState::Key key = { 1, 2 };
+// StringHasher<SipHashState>()(key, std::u16string(u"abc"));
+//
+// A struct with nested function template enables deduction of the String type.
+template <class State>
+struct StringHasher {
+ template <class String>
+ HH_U64 operator()(const typename State::Key& key, const String& s) {
+ State state(key);
+ UpdateState(s, &state);
+ return state.Finalize();
+ }
+};
+
+} // namespace highwayhash
+
+#endif // HIGHWAYHASH_STATE_H_
diff --git a/contrib/libs/highwayhash/highwayhash/tsc_timer.h b/contrib/libs/highwayhash/highwayhash/tsc_timer.h
index 6a4b4a4bdb..4a88c0f8e6 100644
--- a/contrib/libs/highwayhash/highwayhash/tsc_timer.h
+++ b/contrib/libs/highwayhash/highwayhash/tsc_timer.h
@@ -1,204 +1,204 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef HIGHWAYHASH_TSC_TIMER_H_
-#define HIGHWAYHASH_TSC_TIMER_H_
-
-// High-resolution (~10 ns) timestamps, using fences to prevent reordering and
-// ensure exactly the desired regions are measured.
-
-#include <stdint.h>
-
-#include "highwayhash/arch_specific.h"
-#include "highwayhash/compiler_specific.h"
-
-#if HH_ARCH_X64 && HH_MSC_VERSION
-#include <emmintrin.h> // _mm_lfence
-#include <intrin.h>
-#endif
-
-namespace highwayhash {
-
-// Start/Stop return absolute timestamps and must be placed immediately before
-// and after the region to measure. We provide separate Start/Stop functions
-// because they use different fences.
-//
-// Background: RDTSC is not 'serializing'; earlier instructions may complete
-// after it, and/or later instructions may complete before it. 'Fences' ensure
-// regions' elapsed times are independent of such reordering. The only
-// documented unprivileged serializing instruction is CPUID, which acts as a
-// full fence (no reordering across it in either direction). Unfortunately
-// the latency of CPUID varies wildly (perhaps made worse by not initializing
-// its EAX input). Because it cannot reliably be deducted from the region's
-// elapsed time, it must not be included in the region to measure (i.e.
-// between the two RDTSC).
-//
-// The newer RDTSCP is sometimes described as serializing, but it actually
-// only serves as a half-fence with release semantics. Although all
-// instructions in the region will complete before the final timestamp is
-// captured, subsequent instructions may leak into the region and increase the
-// elapsed time. Inserting another fence after the final RDTSCP would prevent
-// such reordering without affecting the measured region.
-//
-// Fortunately, such a fence exists. The LFENCE instruction is only documented
-// to delay later loads until earlier loads are visible. However, Intel's
-// reference manual says it acts as a full fence (waiting until all earlier
-// instructions have completed, and delaying later instructions until it
-// completes). AMD assigns the same behavior to MFENCE.
-//
-// We need a fence before the initial RDTSC to prevent earlier instructions
-// from leaking into the region, and arguably another after RDTSC to avoid
-// region instructions from completing before the timestamp is recorded.
-// When surrounded by fences, the additional RDTSCP half-fence provides no
-// benefit, so the initial timestamp can be recorded via RDTSC, which has
-// lower overhead than RDTSCP because it does not read TSC_AUX. In summary,
-// we define Start = LFENCE/RDTSC/LFENCE; Stop = RDTSCP/LFENCE.
-//
-// Using Start+Start leads to higher variance and overhead than Stop+Stop.
-// However, Stop+Stop includes an LFENCE in the region measurements, which
-// adds a delay dependent on earlier loads. The combination of Start+Stop
-// is faster than Start+Start and more consistent than Stop+Stop because
-// the first LFENCE already delayed subsequent loads before the measured
-// region. This combination seems not to have been considered in prior work:
-// http://akaros.cs.berkeley.edu/lxr/akaros/kern/arch/x86/rdtsc_test.c
-//
-// Note: performance counters can measure 'exact' instructions-retired or
-// (unhalted) cycle counts. The RDPMC instruction is not serializing and also
-// requires fences. Unfortunately, it is not accessible on all OSes and we
-// prefer to avoid kernel-mode drivers. Performance counters are also affected
-// by several under/over-count errata, so we use the TSC instead.
-
-// Primary templates; must use one of the specializations.
-template <typename T>
-inline T Start();
-
-template <typename T>
-inline T Stop();
-
-template <>
-inline uint64_t Start<uint64_t>() {
- uint64_t t;
-#if HH_ARCH_PPC
- asm volatile("mfspr %0, %1" : "=r"(t) : "i"(268));
-#elif HH_ARCH_AARCH64
- asm volatile("mrs %0, cntvct_el0" : "=r"(t));
-#elif HH_ARCH_X64 && HH_MSC_VERSION
- _mm_lfence();
- HH_COMPILER_FENCE;
- t = __rdtsc();
- _mm_lfence();
- HH_COMPILER_FENCE;
-#elif HH_ARCH_X64 && (HH_CLANG_VERSION || HH_GCC_VERSION)
- asm volatile(
- "lfence\n\t"
- "rdtsc\n\t"
- "shl $32, %%rdx\n\t"
- "or %%rdx, %0\n\t"
- "lfence"
- : "=a"(t)
- :
- // "memory" avoids reordering. rdx = TSC >> 32.
- // "cc" = flags modified by SHL.
- : "rdx", "memory", "cc");
-#else
-#error "Port"
-#endif
- return t;
-}
-
-template <>
-inline uint64_t Stop<uint64_t>() {
- uint64_t t;
-#if HH_ARCH_PPC
- asm volatile("mfspr %0, %1" : "=r"(t) : "i"(268));
-#elif HH_ARCH_AARCH64
- asm volatile("mrs %0, cntvct_el0" : "=r"(t));
-#elif HH_ARCH_X64 && HH_MSC_VERSION
- HH_COMPILER_FENCE;
- unsigned aux;
- t = __rdtscp(&aux);
- _mm_lfence();
- HH_COMPILER_FENCE;
-#elif HH_ARCH_X64 && (HH_CLANG_VERSION || HH_GCC_VERSION)
- // Use inline asm because __rdtscp generates code to store TSC_AUX (ecx).
- asm volatile(
- "rdtscp\n\t"
- "shl $32, %%rdx\n\t"
- "or %%rdx, %0\n\t"
- "lfence"
- : "=a"(t)
- :
- // "memory" avoids reordering. rcx = TSC_AUX. rdx = TSC >> 32.
- // "cc" = flags modified by SHL.
- : "rcx", "rdx", "memory", "cc");
-#else
-#error "Port"
-#endif
- return t;
-}
-
-// Returns a 32-bit timestamp with about 4 cycles less overhead than
-// Start<uint64_t>. Only suitable for measuring very short regions because the
-// timestamp overflows about once a second.
-template <>
-inline uint32_t Start<uint32_t>() {
- uint32_t t;
-#if HH_ARCH_X64 && HH_MSC_VERSION
- _mm_lfence();
- HH_COMPILER_FENCE;
- t = static_cast<uint32_t>(__rdtsc());
- _mm_lfence();
- HH_COMPILER_FENCE;
-#elif HH_ARCH_X64 && (HH_CLANG_VERSION || HH_GCC_VERSION)
- asm volatile(
- "lfence\n\t"
- "rdtsc\n\t"
- "lfence"
- : "=a"(t)
- :
- // "memory" avoids reordering. rdx = TSC >> 32.
- : "rdx", "memory");
-#else
- t = static_cast<uint32_t>(Start<uint64_t>());
-#endif
- return t;
-}
-
-template <>
-inline uint32_t Stop<uint32_t>() {
- uint32_t t;
-#if HH_ARCH_X64 && HH_MSC_VERSION
- HH_COMPILER_FENCE;
- unsigned aux;
- t = static_cast<uint32_t>(__rdtscp(&aux));
- _mm_lfence();
- HH_COMPILER_FENCE;
-#elif HH_ARCH_X64 && (HH_CLANG_VERSION || HH_GCC_VERSION)
- // Use inline asm because __rdtscp generates code to store TSC_AUX (ecx).
- asm volatile(
- "rdtscp\n\t"
- "lfence"
- : "=a"(t)
- :
- // "memory" avoids reordering. rcx = TSC_AUX. rdx = TSC >> 32.
- : "rcx", "rdx", "memory");
-#else
- t = static_cast<uint32_t>(Stop<uint64_t>());
-#endif
- return t;
-}
-
-} // namespace highwayhash
-
-#endif // HIGHWAYHASH_TSC_TIMER_H_
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef HIGHWAYHASH_TSC_TIMER_H_
+#define HIGHWAYHASH_TSC_TIMER_H_
+
+// High-resolution (~10 ns) timestamps, using fences to prevent reordering and
+// ensure exactly the desired regions are measured.
+
+#include <stdint.h>
+
+#include "highwayhash/arch_specific.h"
+#include "highwayhash/compiler_specific.h"
+
+#if HH_ARCH_X64 && HH_MSC_VERSION
+#include <emmintrin.h> // _mm_lfence
+#include <intrin.h>
+#endif
+
+namespace highwayhash {
+
+// Start/Stop return absolute timestamps and must be placed immediately before
+// and after the region to measure. We provide separate Start/Stop functions
+// because they use different fences.
+//
+// Background: RDTSC is not 'serializing'; earlier instructions may complete
+// after it, and/or later instructions may complete before it. 'Fences' ensure
+// regions' elapsed times are independent of such reordering. The only
+// documented unprivileged serializing instruction is CPUID, which acts as a
+// full fence (no reordering across it in either direction). Unfortunately
+// the latency of CPUID varies wildly (perhaps made worse by not initializing
+// its EAX input). Because it cannot reliably be deducted from the region's
+// elapsed time, it must not be included in the region to measure (i.e.
+// between the two RDTSC).
+//
+// The newer RDTSCP is sometimes described as serializing, but it actually
+// only serves as a half-fence with release semantics. Although all
+// instructions in the region will complete before the final timestamp is
+// captured, subsequent instructions may leak into the region and increase the
+// elapsed time. Inserting another fence after the final RDTSCP would prevent
+// such reordering without affecting the measured region.
+//
+// Fortunately, such a fence exists. The LFENCE instruction is only documented
+// to delay later loads until earlier loads are visible. However, Intel's
+// reference manual says it acts as a full fence (waiting until all earlier
+// instructions have completed, and delaying later instructions until it
+// completes). AMD assigns the same behavior to MFENCE.
+//
+// We need a fence before the initial RDTSC to prevent earlier instructions
+// from leaking into the region, and arguably another after RDTSC to avoid
+// region instructions from completing before the timestamp is recorded.
+// When surrounded by fences, the additional RDTSCP half-fence provides no
+// benefit, so the initial timestamp can be recorded via RDTSC, which has
+// lower overhead than RDTSCP because it does not read TSC_AUX. In summary,
+// we define Start = LFENCE/RDTSC/LFENCE; Stop = RDTSCP/LFENCE.
+//
+// Using Start+Start leads to higher variance and overhead than Stop+Stop.
+// However, Stop+Stop includes an LFENCE in the region measurements, which
+// adds a delay dependent on earlier loads. The combination of Start+Stop
+// is faster than Start+Start and more consistent than Stop+Stop because
+// the first LFENCE already delayed subsequent loads before the measured
+// region. This combination seems not to have been considered in prior work:
+// http://akaros.cs.berkeley.edu/lxr/akaros/kern/arch/x86/rdtsc_test.c
+//
+// Note: performance counters can measure 'exact' instructions-retired or
+// (unhalted) cycle counts. The RDPMC instruction is not serializing and also
+// requires fences. Unfortunately, it is not accessible on all OSes and we
+// prefer to avoid kernel-mode drivers. Performance counters are also affected
+// by several under/over-count errata, so we use the TSC instead.
+
+// Primary templates; must use one of the specializations.
+template <typename T>
+inline T Start();
+
+template <typename T>
+inline T Stop();
+
+template <>
+inline uint64_t Start<uint64_t>() {
+ uint64_t t;
+#if HH_ARCH_PPC
+ asm volatile("mfspr %0, %1" : "=r"(t) : "i"(268));
+#elif HH_ARCH_AARCH64
+ asm volatile("mrs %0, cntvct_el0" : "=r"(t));
+#elif HH_ARCH_X64 && HH_MSC_VERSION
+ _mm_lfence();
+ HH_COMPILER_FENCE;
+ t = __rdtsc();
+ _mm_lfence();
+ HH_COMPILER_FENCE;
+#elif HH_ARCH_X64 && (HH_CLANG_VERSION || HH_GCC_VERSION)
+ asm volatile(
+ "lfence\n\t"
+ "rdtsc\n\t"
+ "shl $32, %%rdx\n\t"
+ "or %%rdx, %0\n\t"
+ "lfence"
+ : "=a"(t)
+ :
+ // "memory" avoids reordering. rdx = TSC >> 32.
+ // "cc" = flags modified by SHL.
+ : "rdx", "memory", "cc");
+#else
+#error "Port"
+#endif
+ return t;
+}
+
+template <>
+inline uint64_t Stop<uint64_t>() {
+ uint64_t t;
+#if HH_ARCH_PPC
+ asm volatile("mfspr %0, %1" : "=r"(t) : "i"(268));
+#elif HH_ARCH_AARCH64
+ asm volatile("mrs %0, cntvct_el0" : "=r"(t));
+#elif HH_ARCH_X64 && HH_MSC_VERSION
+ HH_COMPILER_FENCE;
+ unsigned aux;
+ t = __rdtscp(&aux);
+ _mm_lfence();
+ HH_COMPILER_FENCE;
+#elif HH_ARCH_X64 && (HH_CLANG_VERSION || HH_GCC_VERSION)
+ // Use inline asm because __rdtscp generates code to store TSC_AUX (ecx).
+ asm volatile(
+ "rdtscp\n\t"
+ "shl $32, %%rdx\n\t"
+ "or %%rdx, %0\n\t"
+ "lfence"
+ : "=a"(t)
+ :
+ // "memory" avoids reordering. rcx = TSC_AUX. rdx = TSC >> 32.
+ // "cc" = flags modified by SHL.
+ : "rcx", "rdx", "memory", "cc");
+#else
+#error "Port"
+#endif
+ return t;
+}
+
+// Returns a 32-bit timestamp with about 4 cycles less overhead than
+// Start<uint64_t>. Only suitable for measuring very short regions because the
+// timestamp overflows about once a second.
+template <>
+inline uint32_t Start<uint32_t>() {
+ uint32_t t;
+#if HH_ARCH_X64 && HH_MSC_VERSION
+ _mm_lfence();
+ HH_COMPILER_FENCE;
+ t = static_cast<uint32_t>(__rdtsc());
+ _mm_lfence();
+ HH_COMPILER_FENCE;
+#elif HH_ARCH_X64 && (HH_CLANG_VERSION || HH_GCC_VERSION)
+ asm volatile(
+ "lfence\n\t"
+ "rdtsc\n\t"
+ "lfence"
+ : "=a"(t)
+ :
+ // "memory" avoids reordering. rdx = TSC >> 32.
+ : "rdx", "memory");
+#else
+ t = static_cast<uint32_t>(Start<uint64_t>());
+#endif
+ return t;
+}
+
+template <>
+inline uint32_t Stop<uint32_t>() {
+ uint32_t t;
+#if HH_ARCH_X64 && HH_MSC_VERSION
+ HH_COMPILER_FENCE;
+ unsigned aux;
+ t = static_cast<uint32_t>(__rdtscp(&aux));
+ _mm_lfence();
+ HH_COMPILER_FENCE;
+#elif HH_ARCH_X64 && (HH_CLANG_VERSION || HH_GCC_VERSION)
+ // Use inline asm because __rdtscp generates code to store TSC_AUX (ecx).
+ asm volatile(
+ "rdtscp\n\t"
+ "lfence"
+ : "=a"(t)
+ :
+ // "memory" avoids reordering. rcx = TSC_AUX. rdx = TSC >> 32.
+ : "rcx", "rdx", "memory");
+#else
+ t = static_cast<uint32_t>(Stop<uint64_t>());
+#endif
+ return t;
+}
+
+} // namespace highwayhash
+
+#endif // HIGHWAYHASH_TSC_TIMER_H_
diff --git a/contrib/libs/highwayhash/highwayhash/vector128.h b/contrib/libs/highwayhash/highwayhash/vector128.h
index 24c30859cd..53eb9f164c 100644
--- a/contrib/libs/highwayhash/highwayhash/vector128.h
+++ b/contrib/libs/highwayhash/highwayhash/vector128.h
@@ -1,796 +1,796 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef HIGHWAYHASH_VECTOR128_H_
-#define HIGHWAYHASH_VECTOR128_H_
-
-// Defines SIMD vector classes ("V2x64U") with overloaded arithmetic operators:
-// const V2x64U masked_sum = (a + b) & m;
-// This is shorter and more readable than compiler intrinsics:
-// const __m128i masked_sum = _mm_and_si128(_mm_add_epi64(a, b), m);
-// There is typically no runtime cost for these abstractions.
-//
-// The naming convention is VNxBBT where N is the number of lanes, BB the
-// number of bits per lane and T is the lane type: unsigned integer (U),
-// signed integer (I), or floating-point (F).
-
-// WARNING: this is a "restricted" header because it is included from
-// translation units compiled with different flags. This header and its
-// dependencies must not define any function unless it is static inline and/or
-// within namespace HH_TARGET_NAME. See arch_specific.h for details.
-
-#include <stddef.h>
-#include <stdint.h>
-
-#include "highwayhash/arch_specific.h"
-#include "highwayhash/compiler_specific.h"
-
-// For auto-dependency generation, we need to include all headers but not their
-// contents (otherwise compilation fails because -msse4.1 is not specified).
-#ifndef HH_DISABLE_TARGET_SPECIFIC
-
-// WARNING: smmintrin.h will also be included through immintrin.h in the AVX2
-// translation unit, which is compiled with different flags. This risks ODR
-// violations, and can cause crashes when functions are not inlined and the
-// linker selects the AVX2 version. Unfortunately this include cannot reside
-// within a namespace due to conflicts with other system headers. We need to
-// assume all the intrinsic functions (defined as static inline by Clang's
-// library and as extern inline by GCC) are in fact inlined. targets.bzl
-// generates a test that verifies this by detecting duplicate symbols.
-#include <smmintrin.h> // SSE4.1
-
-namespace highwayhash {
-// To prevent ODR violations when including this from multiple translation
-// units (TU) that are compiled with different flags, the contents must reside
-// in a namespace whose name is unique to the TU. NOTE: this behavior is
-// incompatible with precompiled modules and requires textual inclusion instead.
-namespace HH_TARGET_NAME {
-
-// Primary template for 128-bit SSE4.1 vectors; only specializations are used.
-template <typename T>
-class V128 {};
-
-template <>
-class V128<uint8_t> {
- public:
- using Intrinsic = __m128i;
- using T = uint8_t;
- static constexpr size_t N = 16;
-
- // Leaves v_ uninitialized - typically used for output parameters.
- HH_INLINE V128() {}
-
- // Broadcasts i to all lanes (usually by loading from memory).
- HH_INLINE explicit V128(T i) : v_(_mm_set1_epi8(i)) {}
-
- // Copy from other vector.
- HH_INLINE explicit V128(const V128& other) : v_(other.v_) {}
- template <typename U>
- HH_INLINE explicit V128(const V128<U>& other) : v_(other) {}
- HH_INLINE V128& operator=(const V128& other) {
- v_ = other.v_;
- return *this;
- }
-
- // Convert from/to intrinsics.
- HH_INLINE V128(const Intrinsic& v) : v_(v) {}
- HH_INLINE V128& operator=(const Intrinsic& v) {
- v_ = v;
- return *this;
- }
- HH_INLINE operator Intrinsic() const { return v_; }
-
- // There are no greater-than comparison instructions for unsigned T.
- HH_INLINE V128 operator==(const V128& other) const {
- return V128(_mm_cmpeq_epi8(v_, other.v_));
- }
-
- HH_INLINE V128& operator+=(const V128& other) {
- v_ = _mm_add_epi8(v_, other.v_);
- return *this;
- }
- HH_INLINE V128& operator-=(const V128& other) {
- v_ = _mm_sub_epi8(v_, other.v_);
- return *this;
- }
-
- HH_INLINE V128& operator&=(const V128& other) {
- v_ = _mm_and_si128(v_, other.v_);
- return *this;
- }
- HH_INLINE V128& operator|=(const V128& other) {
- v_ = _mm_or_si128(v_, other.v_);
- return *this;
- }
- HH_INLINE V128& operator^=(const V128& other) {
- v_ = _mm_xor_si128(v_, other.v_);
- return *this;
- }
-
- private:
- Intrinsic v_;
-};
-
-template <>
-class V128<uint16_t> {
- public:
- using Intrinsic = __m128i;
- using T = uint16_t;
- static constexpr size_t N = 8;
-
- // Leaves v_ uninitialized - typically used for output parameters.
- HH_INLINE V128() {}
-
- // Lane 0 (p_0) is the lowest.
- HH_INLINE V128(T p_7, T p_6, T p_5, T p_4, T p_3, T p_2, T p_1, T p_0)
- : v_(_mm_set_epi16(p_7, p_6, p_5, p_4, p_3, p_2, p_1, p_0)) {}
-
- // Broadcasts i to all lanes (usually by loading from memory).
- HH_INLINE explicit V128(T i) : v_(_mm_set1_epi16(i)) {}
-
- // Copy from other vector.
- HH_INLINE explicit V128(const V128& other) : v_(other.v_) {}
- template <typename U>
- HH_INLINE explicit V128(const V128<U>& other) : v_(other) {}
- HH_INLINE V128& operator=(const V128& other) {
- v_ = other.v_;
- return *this;
- }
-
- // Convert from/to intrinsics.
- HH_INLINE V128(const Intrinsic& v) : v_(v) {}
- HH_INLINE V128& operator=(const Intrinsic& v) {
- v_ = v;
- return *this;
- }
- HH_INLINE operator Intrinsic() const { return v_; }
-
- // There are no greater-than comparison instructions for unsigned T.
- HH_INLINE V128 operator==(const V128& other) const {
- return V128(_mm_cmpeq_epi16(v_, other.v_));
- }
-
- HH_INLINE V128& operator+=(const V128& other) {
- v_ = _mm_add_epi16(v_, other.v_);
- return *this;
- }
- HH_INLINE V128& operator-=(const V128& other) {
- v_ = _mm_sub_epi16(v_, other.v_);
- return *this;
- }
-
- HH_INLINE V128& operator&=(const V128& other) {
- v_ = _mm_and_si128(v_, other.v_);
- return *this;
- }
- HH_INLINE V128& operator|=(const V128& other) {
- v_ = _mm_or_si128(v_, other.v_);
- return *this;
- }
- HH_INLINE V128& operator^=(const V128& other) {
- v_ = _mm_xor_si128(v_, other.v_);
- return *this;
- }
-
- HH_INLINE V128& operator<<=(const int count) {
- v_ = _mm_slli_epi16(v_, count);
- return *this;
- }
- HH_INLINE V128& operator<<=(const Intrinsic& count) {
- v_ = _mm_sll_epi16(v_, count);
- return *this;
- }
-
- HH_INLINE V128& operator>>=(const int count) {
- v_ = _mm_srli_epi16(v_, count);
- return *this;
- }
- HH_INLINE V128& operator>>=(const Intrinsic& count) {
- v_ = _mm_srl_epi16(v_, count);
- return *this;
- }
-
- private:
- Intrinsic v_;
-};
-
-template <>
-class V128<uint32_t> {
- public:
- using Intrinsic = __m128i;
- using T = uint32_t;
- static constexpr size_t N = 4;
-
- // Leaves v_ uninitialized - typically used for output parameters.
- HH_INLINE V128() {}
-
- // Lane 0 (p_0) is the lowest.
- HH_INLINE V128(T p_3, T p_2, T p_1, T p_0)
- : v_(_mm_set_epi32(p_3, p_2, p_1, p_0)) {}
-
- // Broadcasts i to all lanes (usually by loading from memory).
- HH_INLINE explicit V128(T i) : v_(_mm_set1_epi32(i)) {}
-
- // Copy from other vector.
- HH_INLINE explicit V128(const V128& other) : v_(other.v_) {}
- template <typename U>
- HH_INLINE explicit V128(const V128<U>& other) : v_(other) {}
- HH_INLINE V128& operator=(const V128& other) {
- v_ = other.v_;
- return *this;
- }
-
- // Convert from/to intrinsics.
- HH_INLINE V128(const Intrinsic& v) : v_(v) {}
- HH_INLINE V128& operator=(const Intrinsic& v) {
- v_ = v;
- return *this;
- }
- HH_INLINE operator Intrinsic() const { return v_; }
-
- // There are no greater-than comparison instructions for unsigned T.
- HH_INLINE V128 operator==(const V128& other) const {
- return V128(_mm_cmpeq_epi32(v_, other.v_));
- }
-
- HH_INLINE V128& operator+=(const V128& other) {
- v_ = _mm_add_epi32(v_, other.v_);
- return *this;
- }
- HH_INLINE V128& operator-=(const V128& other) {
- v_ = _mm_sub_epi32(v_, other.v_);
- return *this;
- }
-
- HH_INLINE V128& operator&=(const V128& other) {
- v_ = _mm_and_si128(v_, other.v_);
- return *this;
- }
- HH_INLINE V128& operator|=(const V128& other) {
- v_ = _mm_or_si128(v_, other.v_);
- return *this;
- }
- HH_INLINE V128& operator^=(const V128& other) {
- v_ = _mm_xor_si128(v_, other.v_);
- return *this;
- }
-
- HH_INLINE V128& operator<<=(const int count) {
- v_ = _mm_slli_epi32(v_, count);
- return *this;
- }
- HH_INLINE V128& operator<<=(const Intrinsic& count) {
- v_ = _mm_sll_epi32(v_, count);
- return *this;
- }
-
- HH_INLINE V128& operator>>=(const int count) {
- v_ = _mm_srli_epi32(v_, count);
- return *this;
- }
- HH_INLINE V128& operator>>=(const Intrinsic& count) {
- v_ = _mm_srl_epi32(v_, count);
- return *this;
- }
-
- private:
- Intrinsic v_;
-};
-
-template <>
-class V128<uint64_t> {
- public:
- using Intrinsic = __m128i;
- using T = uint64_t;
- static constexpr size_t N = 2;
-
- // Leaves v_ uninitialized - typically used for output parameters.
- HH_INLINE V128() {}
-
- // Lane 0 (p_0) is the lowest.
- HH_INLINE V128(T p_1, T p_0) : v_(_mm_set_epi64x(p_1, p_0)) {}
-
- // Broadcasts i to all lanes (usually by loading from memory).
- HH_INLINE explicit V128(T i) : v_(_mm_set_epi64x(i, i)) {}
-
- // Copy from other vector.
- HH_INLINE explicit V128(const V128& other) : v_(other.v_) {}
- template <typename U>
- HH_INLINE explicit V128(const V128<U>& other) : v_(other) {}
- HH_INLINE V128& operator=(const V128& other) {
- v_ = other.v_;
- return *this;
- }
-
- // Convert from/to intrinsics.
- HH_INLINE V128(const Intrinsic& v) : v_(v) {}
- HH_INLINE V128& operator=(const Intrinsic& v) {
- v_ = v;
- return *this;
- }
- HH_INLINE operator Intrinsic() const { return v_; }
-
- // There are no greater-than comparison instructions for unsigned T.
- HH_INLINE V128 operator==(const V128& other) const {
- return V128(_mm_cmpeq_epi64(v_, other.v_));
- }
-
- HH_INLINE V128& operator+=(const V128& other) {
- v_ = _mm_add_epi64(v_, other.v_);
- return *this;
- }
- HH_INLINE V128& operator-=(const V128& other) {
- v_ = _mm_sub_epi64(v_, other.v_);
- return *this;
- }
-
- HH_INLINE V128& operator&=(const V128& other) {
- v_ = _mm_and_si128(v_, other.v_);
- return *this;
- }
- HH_INLINE V128& operator|=(const V128& other) {
- v_ = _mm_or_si128(v_, other.v_);
- return *this;
- }
- HH_INLINE V128& operator^=(const V128& other) {
- v_ = _mm_xor_si128(v_, other.v_);
- return *this;
- }
-
- HH_INLINE V128& operator<<=(const int count) {
- v_ = _mm_slli_epi64(v_, count);
- return *this;
- }
- HH_INLINE V128& operator<<=(const Intrinsic& count) {
- v_ = _mm_sll_epi64(v_, count);
- return *this;
- }
-
- HH_INLINE V128& operator>>=(const int count) {
- v_ = _mm_srli_epi64(v_, count);
- return *this;
- }
- HH_INLINE V128& operator>>=(const Intrinsic& count) {
- v_ = _mm_srl_epi64(v_, count);
- return *this;
- }
-
- private:
- Intrinsic v_;
-};
-
-template <>
-class V128<float> {
- public:
- using Intrinsic = __m128;
- using T = float;
- static constexpr size_t N = 4;
-
- // Leaves v_ uninitialized - typically used for output parameters.
- HH_INLINE V128() {}
-
- // Lane 0 (p_0) is the lowest.
- HH_INLINE V128(T p_3, T p_2, T p_1, T p_0)
- : v_(_mm_set_ps(p_3, p_2, p_1, p_0)) {}
-
- // Broadcasts to all lanes.
- HH_INLINE explicit V128(T f) : v_(_mm_set1_ps(f)) {}
-
- // Copy from other vector.
- HH_INLINE explicit V128(const V128& other) : v_(other.v_) {}
- template <typename U>
- HH_INLINE explicit V128(const V128<U>& other) : v_(other) {}
- HH_INLINE V128& operator=(const V128& other) {
- v_ = other.v_;
- return *this;
- }
-
- // Convert from/to intrinsics.
- HH_INLINE V128(const Intrinsic& v) : v_(v) {}
- HH_INLINE V128& operator=(const Intrinsic& v) {
- v_ = v;
- return *this;
- }
- HH_INLINE operator Intrinsic() const { return v_; }
-
- HH_INLINE V128 operator==(const V128& other) const {
- return V128(_mm_cmpeq_ps(v_, other.v_));
- }
- HH_INLINE V128 operator<(const V128& other) const {
- return V128(_mm_cmplt_ps(v_, other.v_));
- }
- HH_INLINE V128 operator>(const V128& other) const {
- return V128(_mm_cmplt_ps(other.v_, v_));
- }
-
- HH_INLINE V128& operator*=(const V128& other) {
- v_ = _mm_mul_ps(v_, other.v_);
- return *this;
- }
- HH_INLINE V128& operator/=(const V128& other) {
- v_ = _mm_div_ps(v_, other.v_);
- return *this;
- }
- HH_INLINE V128& operator+=(const V128& other) {
- v_ = _mm_add_ps(v_, other.v_);
- return *this;
- }
- HH_INLINE V128& operator-=(const V128& other) {
- v_ = _mm_sub_ps(v_, other.v_);
- return *this;
- }
-
- HH_INLINE V128& operator&=(const V128& other) {
- v_ = _mm_and_ps(v_, other.v_);
- return *this;
- }
- HH_INLINE V128& operator|=(const V128& other) {
- v_ = _mm_or_ps(v_, other.v_);
- return *this;
- }
- HH_INLINE V128& operator^=(const V128& other) {
- v_ = _mm_xor_ps(v_, other.v_);
- return *this;
- }
-
- private:
- Intrinsic v_;
-};
-
-template <>
-class V128<double> {
- public:
- using Intrinsic = __m128d;
- using T = double;
- static constexpr size_t N = 2;
-
- // Leaves v_ uninitialized - typically used for output parameters.
- HH_INLINE V128() {}
-
- // Lane 0 (p_0) is the lowest.
- HH_INLINE V128(T p_1, T p_0) : v_(_mm_set_pd(p_1, p_0)) {}
-
- // Broadcasts to all lanes.
- HH_INLINE explicit V128(T f) : v_(_mm_set1_pd(f)) {}
-
- // Copy from other vector.
- HH_INLINE explicit V128(const V128& other) : v_(other.v_) {}
- template <typename U>
- HH_INLINE explicit V128(const V128<U>& other) : v_(other) {}
- HH_INLINE V128& operator=(const V128& other) {
- v_ = other.v_;
- return *this;
- }
-
- // Convert from/to intrinsics.
- HH_INLINE V128(const Intrinsic& v) : v_(v) {}
- HH_INLINE V128& operator=(const Intrinsic& v) {
- v_ = v;
- return *this;
- }
- HH_INLINE operator Intrinsic() const { return v_; }
-
- HH_INLINE V128 operator==(const V128& other) const {
- return V128(_mm_cmpeq_pd(v_, other.v_));
- }
- HH_INLINE V128 operator<(const V128& other) const {
- return V128(_mm_cmplt_pd(v_, other.v_));
- }
- HH_INLINE V128 operator>(const V128& other) const {
- return V128(_mm_cmplt_pd(other.v_, v_));
- }
-
- HH_INLINE V128& operator*=(const V128& other) {
- v_ = _mm_mul_pd(v_, other.v_);
- return *this;
- }
- HH_INLINE V128& operator/=(const V128& other) {
- v_ = _mm_div_pd(v_, other.v_);
- return *this;
- }
- HH_INLINE V128& operator+=(const V128& other) {
- v_ = _mm_add_pd(v_, other.v_);
- return *this;
- }
- HH_INLINE V128& operator-=(const V128& other) {
- v_ = _mm_sub_pd(v_, other.v_);
- return *this;
- }
-
- HH_INLINE V128& operator&=(const V128& other) {
- v_ = _mm_and_pd(v_, other.v_);
- return *this;
- }
- HH_INLINE V128& operator|=(const V128& other) {
- v_ = _mm_or_pd(v_, other.v_);
- return *this;
- }
- HH_INLINE V128& operator^=(const V128& other) {
- v_ = _mm_xor_pd(v_, other.v_);
- return *this;
- }
-
- private:
- Intrinsic v_;
-};
-
-// Nonmember functions for any V128 via member functions.
-
-template <typename T>
-HH_INLINE V128<T> operator*(const V128<T>& left, const V128<T>& right) {
- V128<T> t(left);
- return t *= right;
-}
-
-template <typename T>
-HH_INLINE V128<T> operator/(const V128<T>& left, const V128<T>& right) {
- V128<T> t(left);
- return t /= right;
-}
-
-template <typename T>
-HH_INLINE V128<T> operator+(const V128<T>& left, const V128<T>& right) {
- V128<T> t(left);
- return t += right;
-}
-
-template <typename T>
-HH_INLINE V128<T> operator-(const V128<T>& left, const V128<T>& right) {
- V128<T> t(left);
- return t -= right;
-}
-
-template <typename T>
-HH_INLINE V128<T> operator&(const V128<T>& left, const V128<T>& right) {
- V128<T> t(left);
- return t &= right;
-}
-
-template <typename T>
-HH_INLINE V128<T> operator|(const V128<T>& left, const V128<T>& right) {
- V128<T> t(left);
- return t |= right;
-}
-
-template <typename T>
-HH_INLINE V128<T> operator^(const V128<T>& left, const V128<T>& right) {
- V128<T> t(left);
- return t ^= right;
-}
-
-template <typename T>
-HH_INLINE V128<T> operator<<(const V128<T>& v, const int count) {
- V128<T> t(v);
- return t <<= count;
-}
-
-template <typename T>
-HH_INLINE V128<T> operator>>(const V128<T>& v, const int count) {
- V128<T> t(v);
- return t >>= count;
-}
-
-template <typename T>
-HH_INLINE V128<T> operator<<(const V128<T>& v, const __m128i& count) {
- V128<T> t(v);
- return t <<= count;
-}
-
-template <typename T>
-HH_INLINE V128<T> operator>>(const V128<T>& v, const __m128i& count) {
- V128<T> t(v);
- return t >>= count;
-}
-
-using V16x8U = V128<uint8_t>;
-using V8x16U = V128<uint16_t>;
-using V4x32U = V128<uint32_t>;
-using V2x64U = V128<uint64_t>;
-using V4x32F = V128<float>;
-using V2x64F = V128<double>;
-
-// Load/Store for any V128.
-
-// We differentiate between targets' vector types via template specialization.
-// Calling Load<V>(floats) is more natural than Load(V8x32F(), floats) and may
-// generate better code in unoptimized builds. Only declare the primary
-// templates to avoid needing mutual exclusion with vector256.
-
-template <class V>
-HH_INLINE V Load(const typename V::T* const HH_RESTRICT from);
-
-template <class V>
-HH_INLINE V LoadUnaligned(const typename V::T* const HH_RESTRICT from);
-
-// "from" must be vector-aligned.
-template <>
-HH_INLINE V16x8U Load<V16x8U>(const V16x8U::T* const HH_RESTRICT from) {
- const __m128i* const HH_RESTRICT p = reinterpret_cast<const __m128i*>(from);
- return V16x8U(_mm_load_si128(p));
-}
-template <>
-HH_INLINE V8x16U Load<V8x16U>(const V8x16U::T* const HH_RESTRICT from) {
- const __m128i* const HH_RESTRICT p = reinterpret_cast<const __m128i*>(from);
- return V8x16U(_mm_load_si128(p));
-}
-template <>
-HH_INLINE V4x32U Load<V4x32U>(const V4x32U::T* const HH_RESTRICT from) {
- const __m128i* const HH_RESTRICT p = reinterpret_cast<const __m128i*>(from);
- return V4x32U(_mm_load_si128(p));
-}
-template <>
-HH_INLINE V2x64U Load<V2x64U>(const V2x64U::T* const HH_RESTRICT from) {
- const __m128i* const HH_RESTRICT p = reinterpret_cast<const __m128i*>(from);
- return V2x64U(_mm_load_si128(p));
-}
-template <>
-HH_INLINE V4x32F Load<V4x32F>(const V4x32F::T* const HH_RESTRICT from) {
- return V4x32F(_mm_load_ps(from));
-}
-template <>
-HH_INLINE V2x64F Load<V2x64F>(const V2x64F::T* const HH_RESTRICT from) {
- return V2x64F(_mm_load_pd(from));
-}
-
-template <>
-HH_INLINE V16x8U
-LoadUnaligned<V16x8U>(const V16x8U::T* const HH_RESTRICT from) {
- const __m128i* const HH_RESTRICT p = reinterpret_cast<const __m128i*>(from);
- return V16x8U(_mm_loadu_si128(p));
-}
-template <>
-HH_INLINE V8x16U
-LoadUnaligned<V8x16U>(const V8x16U::T* const HH_RESTRICT from) {
- const __m128i* const HH_RESTRICT p = reinterpret_cast<const __m128i*>(from);
- return V8x16U(_mm_loadu_si128(p));
-}
-template <>
-HH_INLINE V4x32U
-LoadUnaligned<V4x32U>(const V4x32U::T* const HH_RESTRICT from) {
- const __m128i* const HH_RESTRICT p = reinterpret_cast<const __m128i*>(from);
- return V4x32U(_mm_loadu_si128(p));
-}
-template <>
-HH_INLINE V2x64U
-LoadUnaligned<V2x64U>(const V2x64U::T* const HH_RESTRICT from) {
- const __m128i* const HH_RESTRICT p = reinterpret_cast<const __m128i*>(from);
- return V2x64U(_mm_loadu_si128(p));
-}
-template <>
-HH_INLINE V4x32F
-LoadUnaligned<V4x32F>(const V4x32F::T* const HH_RESTRICT from) {
- return V4x32F(_mm_loadu_ps(from));
-}
-template <>
-HH_INLINE V2x64F
-LoadUnaligned<V2x64F>(const V2x64F::T* const HH_RESTRICT from) {
- return V2x64F(_mm_loadu_pd(from));
-}
-
-// "to" must be vector-aligned.
-template <typename T>
-HH_INLINE void Store(const V128<T>& v, T* const HH_RESTRICT to) {
- _mm_store_si128(reinterpret_cast<__m128i * HH_RESTRICT>(to), v);
-}
-HH_INLINE void Store(const V128<float>& v, float* const HH_RESTRICT to) {
- _mm_store_ps(to, v);
-}
-HH_INLINE void Store(const V128<double>& v, double* const HH_RESTRICT to) {
- _mm_store_pd(to, v);
-}
-
-template <typename T>
-HH_INLINE void StoreUnaligned(const V128<T>& v, T* const HH_RESTRICT to) {
- _mm_storeu_si128(reinterpret_cast<__m128i * HH_RESTRICT>(to), v);
-}
-HH_INLINE void StoreUnaligned(const V128<float>& v,
- float* const HH_RESTRICT to) {
- _mm_storeu_ps(to, v);
-}
-HH_INLINE void StoreUnaligned(const V128<double>& v,
- double* const HH_RESTRICT to) {
- _mm_storeu_pd(to, v);
-}
-
-// Writes directly to (aligned) memory, bypassing the cache. This is useful for
-// data that will not be read again in the near future.
-template <typename T>
-HH_INLINE void Stream(const V128<T>& v, T* const HH_RESTRICT to) {
- _mm_stream_si128(reinterpret_cast<__m128i * HH_RESTRICT>(to), v);
-}
-HH_INLINE void Stream(const V128<float>& v, float* const HH_RESTRICT to) {
- _mm_stream_ps(to, v);
-}
-HH_INLINE void Stream(const V128<double>& v, double* const HH_RESTRICT to) {
- _mm_stream_pd(to, v);
-}
-
-// Miscellaneous functions.
-
-template <typename T>
-HH_INLINE V128<T> RotateLeft(const V128<T>& v, const int count) {
- constexpr size_t num_bits = sizeof(T) * 8;
- return (v << count) | (v >> (num_bits - count));
-}
-
-template <typename T>
-HH_INLINE V128<T> AndNot(const V128<T>& neg_mask, const V128<T>& values) {
- return V128<T>(_mm_andnot_si128(neg_mask, values));
-}
-template <>
-HH_INLINE V128<float> AndNot(const V128<float>& neg_mask,
- const V128<float>& values) {
- return V128<float>(_mm_andnot_ps(neg_mask, values));
-}
-template <>
-HH_INLINE V128<double> AndNot(const V128<double>& neg_mask,
- const V128<double>& values) {
- return V128<double>(_mm_andnot_pd(neg_mask, values));
-}
-
-HH_INLINE V4x32F Select(const V4x32F& a, const V4x32F& b, const V4x32F& mask) {
- return V4x32F(_mm_blendv_ps(a, b, mask));
-}
-
-HH_INLINE V2x64F Select(const V2x64F& a, const V2x64F& b, const V2x64F& mask) {
- return V2x64F(_mm_blendv_pd(a, b, mask));
-}
-
-// Min/Max
-
-HH_INLINE V16x8U Min(const V16x8U& v0, const V16x8U& v1) {
- return V16x8U(_mm_min_epu8(v0, v1));
-}
-
-HH_INLINE V16x8U Max(const V16x8U& v0, const V16x8U& v1) {
- return V16x8U(_mm_max_epu8(v0, v1));
-}
-
-HH_INLINE V8x16U Min(const V8x16U& v0, const V8x16U& v1) {
- return V8x16U(_mm_min_epu16(v0, v1));
-}
-
-HH_INLINE V8x16U Max(const V8x16U& v0, const V8x16U& v1) {
- return V8x16U(_mm_max_epu16(v0, v1));
-}
-
-HH_INLINE V4x32U Min(const V4x32U& v0, const V4x32U& v1) {
- return V4x32U(_mm_min_epu32(v0, v1));
-}
-
-HH_INLINE V4x32U Max(const V4x32U& v0, const V4x32U& v1) {
- return V4x32U(_mm_max_epu32(v0, v1));
-}
-
-HH_INLINE V4x32F Min(const V4x32F& v0, const V4x32F& v1) {
- return V4x32F(_mm_min_ps(v0, v1));
-}
-
-HH_INLINE V4x32F Max(const V4x32F& v0, const V4x32F& v1) {
- return V4x32F(_mm_max_ps(v0, v1));
-}
-
-HH_INLINE V2x64F Min(const V2x64F& v0, const V2x64F& v1) {
- return V2x64F(_mm_min_pd(v0, v1));
-}
-
-HH_INLINE V2x64F Max(const V2x64F& v0, const V2x64F& v1) {
- return V2x64F(_mm_max_pd(v0, v1));
-}
-
-} // namespace HH_TARGET_NAME
-} // namespace highwayhash
-
-#endif // HH_DISABLE_TARGET_SPECIFIC
-#endif // HIGHWAYHASH_VECTOR128_H_
+// Copyright 2016 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef HIGHWAYHASH_VECTOR128_H_
+#define HIGHWAYHASH_VECTOR128_H_
+
+// Defines SIMD vector classes ("V2x64U") with overloaded arithmetic operators:
+// const V2x64U masked_sum = (a + b) & m;
+// This is shorter and more readable than compiler intrinsics:
+// const __m128i masked_sum = _mm_and_si128(_mm_add_epi64(a, b), m);
+// There is typically no runtime cost for these abstractions.
+//
+// The naming convention is VNxBBT where N is the number of lanes, BB the
+// number of bits per lane and T is the lane type: unsigned integer (U),
+// signed integer (I), or floating-point (F).
+
+// WARNING: this is a "restricted" header because it is included from
+// translation units compiled with different flags. This header and its
+// dependencies must not define any function unless it is static inline and/or
+// within namespace HH_TARGET_NAME. See arch_specific.h for details.
+
+#include <stddef.h>
+#include <stdint.h>
+
+#include "highwayhash/arch_specific.h"
+#include "highwayhash/compiler_specific.h"
+
+// For auto-dependency generation, we need to include all headers but not their
+// contents (otherwise compilation fails because -msse4.1 is not specified).
+#ifndef HH_DISABLE_TARGET_SPECIFIC
+
+// WARNING: smmintrin.h will also be included through immintrin.h in the AVX2
+// translation unit, which is compiled with different flags. This risks ODR
+// violations, and can cause crashes when functions are not inlined and the
+// linker selects the AVX2 version. Unfortunately this include cannot reside
+// within a namespace due to conflicts with other system headers. We need to
+// assume all the intrinsic functions (defined as static inline by Clang's
+// library and as extern inline by GCC) are in fact inlined. targets.bzl
+// generates a test that verifies this by detecting duplicate symbols.
+#include <smmintrin.h> // SSE4.1
+
+namespace highwayhash {
+// To prevent ODR violations when including this from multiple translation
+// units (TU) that are compiled with different flags, the contents must reside
+// in a namespace whose name is unique to the TU. NOTE: this behavior is
+// incompatible with precompiled modules and requires textual inclusion instead.
+namespace HH_TARGET_NAME {
+
+// Primary template for 128-bit SSE4.1 vectors; only specializations are used.
+template <typename T>
+class V128 {};
+
+template <>
+class V128<uint8_t> {
+ public:
+ using Intrinsic = __m128i;
+ using T = uint8_t;
+ static constexpr size_t N = 16;
+
+ // Leaves v_ uninitialized - typically used for output parameters.
+ HH_INLINE V128() {}
+
+ // Broadcasts i to all lanes (usually by loading from memory).
+ HH_INLINE explicit V128(T i) : v_(_mm_set1_epi8(i)) {}
+
+ // Copy from other vector.
+ HH_INLINE explicit V128(const V128& other) : v_(other.v_) {}
+ template <typename U>
+ HH_INLINE explicit V128(const V128<U>& other) : v_(other) {}
+ HH_INLINE V128& operator=(const V128& other) {
+ v_ = other.v_;
+ return *this;
+ }
+
+ // Convert from/to intrinsics.
+ HH_INLINE V128(const Intrinsic& v) : v_(v) {}
+ HH_INLINE V128& operator=(const Intrinsic& v) {
+ v_ = v;
+ return *this;
+ }
+ HH_INLINE operator Intrinsic() const { return v_; }
+
+ // There are no greater-than comparison instructions for unsigned T.
+ HH_INLINE V128 operator==(const V128& other) const {
+ return V128(_mm_cmpeq_epi8(v_, other.v_));
+ }
+
+ HH_INLINE V128& operator+=(const V128& other) {
+ v_ = _mm_add_epi8(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V128& operator-=(const V128& other) {
+ v_ = _mm_sub_epi8(v_, other.v_);
+ return *this;
+ }
+
+ HH_INLINE V128& operator&=(const V128& other) {
+ v_ = _mm_and_si128(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V128& operator|=(const V128& other) {
+ v_ = _mm_or_si128(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V128& operator^=(const V128& other) {
+ v_ = _mm_xor_si128(v_, other.v_);
+ return *this;
+ }
+
+ private:
+ Intrinsic v_;
+};
+
+template <>
+class V128<uint16_t> {
+ public:
+ using Intrinsic = __m128i;
+ using T = uint16_t;
+ static constexpr size_t N = 8;
+
+ // Leaves v_ uninitialized - typically used for output parameters.
+ HH_INLINE V128() {}
+
+ // Lane 0 (p_0) is the lowest.
+ HH_INLINE V128(T p_7, T p_6, T p_5, T p_4, T p_3, T p_2, T p_1, T p_0)
+ : v_(_mm_set_epi16(p_7, p_6, p_5, p_4, p_3, p_2, p_1, p_0)) {}
+
+ // Broadcasts i to all lanes (usually by loading from memory).
+ HH_INLINE explicit V128(T i) : v_(_mm_set1_epi16(i)) {}
+
+ // Copy from other vector.
+ HH_INLINE explicit V128(const V128& other) : v_(other.v_) {}
+ template <typename U>
+ HH_INLINE explicit V128(const V128<U>& other) : v_(other) {}
+ HH_INLINE V128& operator=(const V128& other) {
+ v_ = other.v_;
+ return *this;
+ }
+
+ // Convert from/to intrinsics.
+ HH_INLINE V128(const Intrinsic& v) : v_(v) {}
+ HH_INLINE V128& operator=(const Intrinsic& v) {
+ v_ = v;
+ return *this;
+ }
+ HH_INLINE operator Intrinsic() const { return v_; }
+
+ // There are no greater-than comparison instructions for unsigned T.
+ HH_INLINE V128 operator==(const V128& other) const {
+ return V128(_mm_cmpeq_epi16(v_, other.v_));
+ }
+
+ HH_INLINE V128& operator+=(const V128& other) {
+ v_ = _mm_add_epi16(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V128& operator-=(const V128& other) {
+ v_ = _mm_sub_epi16(v_, other.v_);
+ return *this;
+ }
+
+ HH_INLINE V128& operator&=(const V128& other) {
+ v_ = _mm_and_si128(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V128& operator|=(const V128& other) {
+ v_ = _mm_or_si128(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V128& operator^=(const V128& other) {
+ v_ = _mm_xor_si128(v_, other.v_);
+ return *this;
+ }
+
+ HH_INLINE V128& operator<<=(const int count) {
+ v_ = _mm_slli_epi16(v_, count);
+ return *this;
+ }
+ HH_INLINE V128& operator<<=(const Intrinsic& count) {
+ v_ = _mm_sll_epi16(v_, count);
+ return *this;
+ }
+
+ HH_INLINE V128& operator>>=(const int count) {
+ v_ = _mm_srli_epi16(v_, count);
+ return *this;
+ }
+ HH_INLINE V128& operator>>=(const Intrinsic& count) {
+ v_ = _mm_srl_epi16(v_, count);
+ return *this;
+ }
+
+ private:
+ Intrinsic v_;
+};
+
+template <>
+class V128<uint32_t> {
+ public:
+ using Intrinsic = __m128i;
+ using T = uint32_t;
+ static constexpr size_t N = 4;
+
+ // Leaves v_ uninitialized - typically used for output parameters.
+ HH_INLINE V128() {}
+
+ // Lane 0 (p_0) is the lowest.
+ HH_INLINE V128(T p_3, T p_2, T p_1, T p_0)
+ : v_(_mm_set_epi32(p_3, p_2, p_1, p_0)) {}
+
+ // Broadcasts i to all lanes (usually by loading from memory).
+ HH_INLINE explicit V128(T i) : v_(_mm_set1_epi32(i)) {}
+
+ // Copy from other vector.
+ HH_INLINE explicit V128(const V128& other) : v_(other.v_) {}
+ template <typename U>
+ HH_INLINE explicit V128(const V128<U>& other) : v_(other) {}
+ HH_INLINE V128& operator=(const V128& other) {
+ v_ = other.v_;
+ return *this;
+ }
+
+ // Convert from/to intrinsics.
+ HH_INLINE V128(const Intrinsic& v) : v_(v) {}
+ HH_INLINE V128& operator=(const Intrinsic& v) {
+ v_ = v;
+ return *this;
+ }
+ HH_INLINE operator Intrinsic() const { return v_; }
+
+ // There are no greater-than comparison instructions for unsigned T.
+ HH_INLINE V128 operator==(const V128& other) const {
+ return V128(_mm_cmpeq_epi32(v_, other.v_));
+ }
+
+ HH_INLINE V128& operator+=(const V128& other) {
+ v_ = _mm_add_epi32(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V128& operator-=(const V128& other) {
+ v_ = _mm_sub_epi32(v_, other.v_);
+ return *this;
+ }
+
+ HH_INLINE V128& operator&=(const V128& other) {
+ v_ = _mm_and_si128(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V128& operator|=(const V128& other) {
+ v_ = _mm_or_si128(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V128& operator^=(const V128& other) {
+ v_ = _mm_xor_si128(v_, other.v_);
+ return *this;
+ }
+
+ HH_INLINE V128& operator<<=(const int count) {
+ v_ = _mm_slli_epi32(v_, count);
+ return *this;
+ }
+ HH_INLINE V128& operator<<=(const Intrinsic& count) {
+ v_ = _mm_sll_epi32(v_, count);
+ return *this;
+ }
+
+ HH_INLINE V128& operator>>=(const int count) {
+ v_ = _mm_srli_epi32(v_, count);
+ return *this;
+ }
+ HH_INLINE V128& operator>>=(const Intrinsic& count) {
+ v_ = _mm_srl_epi32(v_, count);
+ return *this;
+ }
+
+ private:
+ Intrinsic v_;
+};
+
+template <>
+class V128<uint64_t> {
+ public:
+ using Intrinsic = __m128i;
+ using T = uint64_t;
+ static constexpr size_t N = 2;
+
+ // Leaves v_ uninitialized - typically used for output parameters.
+ HH_INLINE V128() {}
+
+ // Lane 0 (p_0) is the lowest.
+ HH_INLINE V128(T p_1, T p_0) : v_(_mm_set_epi64x(p_1, p_0)) {}
+
+ // Broadcasts i to all lanes (usually by loading from memory).
+ HH_INLINE explicit V128(T i) : v_(_mm_set_epi64x(i, i)) {}
+
+ // Copy from other vector.
+ HH_INLINE explicit V128(const V128& other) : v_(other.v_) {}
+ template <typename U>
+ HH_INLINE explicit V128(const V128<U>& other) : v_(other) {}
+ HH_INLINE V128& operator=(const V128& other) {
+ v_ = other.v_;
+ return *this;
+ }
+
+ // Convert from/to intrinsics.
+ HH_INLINE V128(const Intrinsic& v) : v_(v) {}
+ HH_INLINE V128& operator=(const Intrinsic& v) {
+ v_ = v;
+ return *this;
+ }
+ HH_INLINE operator Intrinsic() const { return v_; }
+
+ // There are no greater-than comparison instructions for unsigned T.
+ HH_INLINE V128 operator==(const V128& other) const {
+ return V128(_mm_cmpeq_epi64(v_, other.v_));
+ }
+
+ HH_INLINE V128& operator+=(const V128& other) {
+ v_ = _mm_add_epi64(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V128& operator-=(const V128& other) {
+ v_ = _mm_sub_epi64(v_, other.v_);
+ return *this;
+ }
+
+ HH_INLINE V128& operator&=(const V128& other) {
+ v_ = _mm_and_si128(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V128& operator|=(const V128& other) {
+ v_ = _mm_or_si128(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V128& operator^=(const V128& other) {
+ v_ = _mm_xor_si128(v_, other.v_);
+ return *this;
+ }
+
+ HH_INLINE V128& operator<<=(const int count) {
+ v_ = _mm_slli_epi64(v_, count);
+ return *this;
+ }
+ HH_INLINE V128& operator<<=(const Intrinsic& count) {
+ v_ = _mm_sll_epi64(v_, count);
+ return *this;
+ }
+
+ HH_INLINE V128& operator>>=(const int count) {
+ v_ = _mm_srli_epi64(v_, count);
+ return *this;
+ }
+ HH_INLINE V128& operator>>=(const Intrinsic& count) {
+ v_ = _mm_srl_epi64(v_, count);
+ return *this;
+ }
+
+ private:
+ Intrinsic v_;
+};
+
+template <>
+class V128<float> {
+ public:
+ using Intrinsic = __m128;
+ using T = float;
+ static constexpr size_t N = 4;
+
+ // Leaves v_ uninitialized - typically used for output parameters.
+ HH_INLINE V128() {}
+
+ // Lane 0 (p_0) is the lowest.
+ HH_INLINE V128(T p_3, T p_2, T p_1, T p_0)
+ : v_(_mm_set_ps(p_3, p_2, p_1, p_0)) {}
+
+ // Broadcasts to all lanes.
+ HH_INLINE explicit V128(T f) : v_(_mm_set1_ps(f)) {}
+
+ // Copy from other vector.
+ HH_INLINE explicit V128(const V128& other) : v_(other.v_) {}
+ template <typename U>
+ HH_INLINE explicit V128(const V128<U>& other) : v_(other) {}
+ HH_INLINE V128& operator=(const V128& other) {
+ v_ = other.v_;
+ return *this;
+ }
+
+ // Convert from/to intrinsics.
+ HH_INLINE V128(const Intrinsic& v) : v_(v) {}
+ HH_INLINE V128& operator=(const Intrinsic& v) {
+ v_ = v;
+ return *this;
+ }
+ HH_INLINE operator Intrinsic() const { return v_; }
+
+ HH_INLINE V128 operator==(const V128& other) const {
+ return V128(_mm_cmpeq_ps(v_, other.v_));
+ }
+ HH_INLINE V128 operator<(const V128& other) const {
+ return V128(_mm_cmplt_ps(v_, other.v_));
+ }
+ HH_INLINE V128 operator>(const V128& other) const {
+ return V128(_mm_cmplt_ps(other.v_, v_));
+ }
+
+ HH_INLINE V128& operator*=(const V128& other) {
+ v_ = _mm_mul_ps(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V128& operator/=(const V128& other) {
+ v_ = _mm_div_ps(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V128& operator+=(const V128& other) {
+ v_ = _mm_add_ps(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V128& operator-=(const V128& other) {
+ v_ = _mm_sub_ps(v_, other.v_);
+ return *this;
+ }
+
+ HH_INLINE V128& operator&=(const V128& other) {
+ v_ = _mm_and_ps(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V128& operator|=(const V128& other) {
+ v_ = _mm_or_ps(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V128& operator^=(const V128& other) {
+ v_ = _mm_xor_ps(v_, other.v_);
+ return *this;
+ }
+
+ private:
+ Intrinsic v_;
+};
+
+template <>
+class V128<double> {
+ public:
+ using Intrinsic = __m128d;
+ using T = double;
+ static constexpr size_t N = 2;
+
+ // Leaves v_ uninitialized - typically used for output parameters.
+ HH_INLINE V128() {}
+
+ // Lane 0 (p_0) is the lowest.
+ HH_INLINE V128(T p_1, T p_0) : v_(_mm_set_pd(p_1, p_0)) {}
+
+ // Broadcasts to all lanes.
+ HH_INLINE explicit V128(T f) : v_(_mm_set1_pd(f)) {}
+
+ // Copy from other vector.
+ HH_INLINE explicit V128(const V128& other) : v_(other.v_) {}
+ template <typename U>
+ HH_INLINE explicit V128(const V128<U>& other) : v_(other) {}
+ HH_INLINE V128& operator=(const V128& other) {
+ v_ = other.v_;
+ return *this;
+ }
+
+ // Convert from/to intrinsics.
+ HH_INLINE V128(const Intrinsic& v) : v_(v) {}
+ HH_INLINE V128& operator=(const Intrinsic& v) {
+ v_ = v;
+ return *this;
+ }
+ HH_INLINE operator Intrinsic() const { return v_; }
+
+ HH_INLINE V128 operator==(const V128& other) const {
+ return V128(_mm_cmpeq_pd(v_, other.v_));
+ }
+ HH_INLINE V128 operator<(const V128& other) const {
+ return V128(_mm_cmplt_pd(v_, other.v_));
+ }
+ HH_INLINE V128 operator>(const V128& other) const {
+ return V128(_mm_cmplt_pd(other.v_, v_));
+ }
+
+ HH_INLINE V128& operator*=(const V128& other) {
+ v_ = _mm_mul_pd(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V128& operator/=(const V128& other) {
+ v_ = _mm_div_pd(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V128& operator+=(const V128& other) {
+ v_ = _mm_add_pd(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V128& operator-=(const V128& other) {
+ v_ = _mm_sub_pd(v_, other.v_);
+ return *this;
+ }
+
+ HH_INLINE V128& operator&=(const V128& other) {
+ v_ = _mm_and_pd(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V128& operator|=(const V128& other) {
+ v_ = _mm_or_pd(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V128& operator^=(const V128& other) {
+ v_ = _mm_xor_pd(v_, other.v_);
+ return *this;
+ }
+
+ private:
+ Intrinsic v_;
+};
+
+// Nonmember functions for any V128 via member functions.
+
+template <typename T>
+HH_INLINE V128<T> operator*(const V128<T>& left, const V128<T>& right) {
+ V128<T> t(left);
+ return t *= right;
+}
+
+template <typename T>
+HH_INLINE V128<T> operator/(const V128<T>& left, const V128<T>& right) {
+ V128<T> t(left);
+ return t /= right;
+}
+
+template <typename T>
+HH_INLINE V128<T> operator+(const V128<T>& left, const V128<T>& right) {
+ V128<T> t(left);
+ return t += right;
+}
+
+template <typename T>
+HH_INLINE V128<T> operator-(const V128<T>& left, const V128<T>& right) {
+ V128<T> t(left);
+ return t -= right;
+}
+
+template <typename T>
+HH_INLINE V128<T> operator&(const V128<T>& left, const V128<T>& right) {
+ V128<T> t(left);
+ return t &= right;
+}
+
+template <typename T>
+HH_INLINE V128<T> operator|(const V128<T>& left, const V128<T>& right) {
+ V128<T> t(left);
+ return t |= right;
+}
+
+template <typename T>
+HH_INLINE V128<T> operator^(const V128<T>& left, const V128<T>& right) {
+ V128<T> t(left);
+ return t ^= right;
+}
+
+template <typename T>
+HH_INLINE V128<T> operator<<(const V128<T>& v, const int count) {
+ V128<T> t(v);
+ return t <<= count;
+}
+
+template <typename T>
+HH_INLINE V128<T> operator>>(const V128<T>& v, const int count) {
+ V128<T> t(v);
+ return t >>= count;
+}
+
+template <typename T>
+HH_INLINE V128<T> operator<<(const V128<T>& v, const __m128i& count) {
+ V128<T> t(v);
+ return t <<= count;
+}
+
+template <typename T>
+HH_INLINE V128<T> operator>>(const V128<T>& v, const __m128i& count) {
+ V128<T> t(v);
+ return t >>= count;
+}
+
+using V16x8U = V128<uint8_t>;
+using V8x16U = V128<uint16_t>;
+using V4x32U = V128<uint32_t>;
+using V2x64U = V128<uint64_t>;
+using V4x32F = V128<float>;
+using V2x64F = V128<double>;
+
+// Load/Store for any V128.
+
+// We differentiate between targets' vector types via template specialization.
+// Calling Load<V>(floats) is more natural than Load(V8x32F(), floats) and may
+// generate better code in unoptimized builds. Only declare the primary
+// templates to avoid needing mutual exclusion with vector256.
+
+template <class V>
+HH_INLINE V Load(const typename V::T* const HH_RESTRICT from);
+
+template <class V>
+HH_INLINE V LoadUnaligned(const typename V::T* const HH_RESTRICT from);
+
+// "from" must be vector-aligned.
+template <>
+HH_INLINE V16x8U Load<V16x8U>(const V16x8U::T* const HH_RESTRICT from) {
+ const __m128i* const HH_RESTRICT p = reinterpret_cast<const __m128i*>(from);
+ return V16x8U(_mm_load_si128(p));
+}
+template <>
+HH_INLINE V8x16U Load<V8x16U>(const V8x16U::T* const HH_RESTRICT from) {
+ const __m128i* const HH_RESTRICT p = reinterpret_cast<const __m128i*>(from);
+ return V8x16U(_mm_load_si128(p));
+}
+template <>
+HH_INLINE V4x32U Load<V4x32U>(const V4x32U::T* const HH_RESTRICT from) {
+ const __m128i* const HH_RESTRICT p = reinterpret_cast<const __m128i*>(from);
+ return V4x32U(_mm_load_si128(p));
+}
+template <>
+HH_INLINE V2x64U Load<V2x64U>(const V2x64U::T* const HH_RESTRICT from) {
+ const __m128i* const HH_RESTRICT p = reinterpret_cast<const __m128i*>(from);
+ return V2x64U(_mm_load_si128(p));
+}
+template <>
+HH_INLINE V4x32F Load<V4x32F>(const V4x32F::T* const HH_RESTRICT from) {
+ return V4x32F(_mm_load_ps(from));
+}
+template <>
+HH_INLINE V2x64F Load<V2x64F>(const V2x64F::T* const HH_RESTRICT from) {
+ return V2x64F(_mm_load_pd(from));
+}
+
+template <>
+HH_INLINE V16x8U
+LoadUnaligned<V16x8U>(const V16x8U::T* const HH_RESTRICT from) {
+ const __m128i* const HH_RESTRICT p = reinterpret_cast<const __m128i*>(from);
+ return V16x8U(_mm_loadu_si128(p));
+}
+template <>
+HH_INLINE V8x16U
+LoadUnaligned<V8x16U>(const V8x16U::T* const HH_RESTRICT from) {
+ const __m128i* const HH_RESTRICT p = reinterpret_cast<const __m128i*>(from);
+ return V8x16U(_mm_loadu_si128(p));
+}
+template <>
+HH_INLINE V4x32U
+LoadUnaligned<V4x32U>(const V4x32U::T* const HH_RESTRICT from) {
+ const __m128i* const HH_RESTRICT p = reinterpret_cast<const __m128i*>(from);
+ return V4x32U(_mm_loadu_si128(p));
+}
+template <>
+HH_INLINE V2x64U
+LoadUnaligned<V2x64U>(const V2x64U::T* const HH_RESTRICT from) {
+ const __m128i* const HH_RESTRICT p = reinterpret_cast<const __m128i*>(from);
+ return V2x64U(_mm_loadu_si128(p));
+}
+template <>
+HH_INLINE V4x32F
+LoadUnaligned<V4x32F>(const V4x32F::T* const HH_RESTRICT from) {
+ return V4x32F(_mm_loadu_ps(from));
+}
+template <>
+HH_INLINE V2x64F
+LoadUnaligned<V2x64F>(const V2x64F::T* const HH_RESTRICT from) {
+ return V2x64F(_mm_loadu_pd(from));
+}
+
+// "to" must be vector-aligned.
+template <typename T>
+HH_INLINE void Store(const V128<T>& v, T* const HH_RESTRICT to) {
+ _mm_store_si128(reinterpret_cast<__m128i * HH_RESTRICT>(to), v);
+}
+HH_INLINE void Store(const V128<float>& v, float* const HH_RESTRICT to) {
+ _mm_store_ps(to, v);
+}
+HH_INLINE void Store(const V128<double>& v, double* const HH_RESTRICT to) {
+ _mm_store_pd(to, v);
+}
+
+template <typename T>
+HH_INLINE void StoreUnaligned(const V128<T>& v, T* const HH_RESTRICT to) {
+ _mm_storeu_si128(reinterpret_cast<__m128i * HH_RESTRICT>(to), v);
+}
+HH_INLINE void StoreUnaligned(const V128<float>& v,
+ float* const HH_RESTRICT to) {
+ _mm_storeu_ps(to, v);
+}
+HH_INLINE void StoreUnaligned(const V128<double>& v,
+ double* const HH_RESTRICT to) {
+ _mm_storeu_pd(to, v);
+}
+
+// Writes directly to (aligned) memory, bypassing the cache. This is useful for
+// data that will not be read again in the near future.
+template <typename T>
+HH_INLINE void Stream(const V128<T>& v, T* const HH_RESTRICT to) {
+ _mm_stream_si128(reinterpret_cast<__m128i * HH_RESTRICT>(to), v);
+}
+HH_INLINE void Stream(const V128<float>& v, float* const HH_RESTRICT to) {
+ _mm_stream_ps(to, v);
+}
+HH_INLINE void Stream(const V128<double>& v, double* const HH_RESTRICT to) {
+ _mm_stream_pd(to, v);
+}
+
+// Miscellaneous functions.
+
+template <typename T>
+HH_INLINE V128<T> RotateLeft(const V128<T>& v, const int count) {
+ constexpr size_t num_bits = sizeof(T) * 8;
+ return (v << count) | (v >> (num_bits - count));
+}
+
+template <typename T>
+HH_INLINE V128<T> AndNot(const V128<T>& neg_mask, const V128<T>& values) {
+ return V128<T>(_mm_andnot_si128(neg_mask, values));
+}
+template <>
+HH_INLINE V128<float> AndNot(const V128<float>& neg_mask,
+ const V128<float>& values) {
+ return V128<float>(_mm_andnot_ps(neg_mask, values));
+}
+template <>
+HH_INLINE V128<double> AndNot(const V128<double>& neg_mask,
+ const V128<double>& values) {
+ return V128<double>(_mm_andnot_pd(neg_mask, values));
+}
+
+HH_INLINE V4x32F Select(const V4x32F& a, const V4x32F& b, const V4x32F& mask) {
+ return V4x32F(_mm_blendv_ps(a, b, mask));
+}
+
+HH_INLINE V2x64F Select(const V2x64F& a, const V2x64F& b, const V2x64F& mask) {
+ return V2x64F(_mm_blendv_pd(a, b, mask));
+}
+
+// Min/Max
+
+HH_INLINE V16x8U Min(const V16x8U& v0, const V16x8U& v1) {
+ return V16x8U(_mm_min_epu8(v0, v1));
+}
+
+HH_INLINE V16x8U Max(const V16x8U& v0, const V16x8U& v1) {
+ return V16x8U(_mm_max_epu8(v0, v1));
+}
+
+HH_INLINE V8x16U Min(const V8x16U& v0, const V8x16U& v1) {
+ return V8x16U(_mm_min_epu16(v0, v1));
+}
+
+HH_INLINE V8x16U Max(const V8x16U& v0, const V8x16U& v1) {
+ return V8x16U(_mm_max_epu16(v0, v1));
+}
+
+HH_INLINE V4x32U Min(const V4x32U& v0, const V4x32U& v1) {
+ return V4x32U(_mm_min_epu32(v0, v1));
+}
+
+HH_INLINE V4x32U Max(const V4x32U& v0, const V4x32U& v1) {
+ return V4x32U(_mm_max_epu32(v0, v1));
+}
+
+HH_INLINE V4x32F Min(const V4x32F& v0, const V4x32F& v1) {
+ return V4x32F(_mm_min_ps(v0, v1));
+}
+
+HH_INLINE V4x32F Max(const V4x32F& v0, const V4x32F& v1) {
+ return V4x32F(_mm_max_ps(v0, v1));
+}
+
+HH_INLINE V2x64F Min(const V2x64F& v0, const V2x64F& v1) {
+ return V2x64F(_mm_min_pd(v0, v1));
+}
+
+HH_INLINE V2x64F Max(const V2x64F& v0, const V2x64F& v1) {
+ return V2x64F(_mm_max_pd(v0, v1));
+}
+
+} // namespace HH_TARGET_NAME
+} // namespace highwayhash
+
+#endif // HH_DISABLE_TARGET_SPECIFIC
+#endif // HIGHWAYHASH_VECTOR128_H_
diff --git a/contrib/libs/highwayhash/highwayhash/vector256.h b/contrib/libs/highwayhash/highwayhash/vector256.h
index 29199ddf00..d1ccec49ef 100644
--- a/contrib/libs/highwayhash/highwayhash/vector256.h
+++ b/contrib/libs/highwayhash/highwayhash/vector256.h
@@ -1,758 +1,758 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef HIGHWAYHASH_VECTOR256_H_
-#define HIGHWAYHASH_VECTOR256_H_
-
-// Defines SIMD vector classes ("V4x64U") with overloaded arithmetic operators:
-// const V4x64U masked_sum = (a + b) & m;
-// This is shorter and more readable than compiler intrinsics:
-// const __m256i masked_sum = _mm256_and_si256(_mm256_add_epi64(a, b), m);
-// There is typically no runtime cost for these abstractions.
-//
-// The naming convention is VNxBBT where N is the number of lanes, BB the
-// number of bits per lane and T is the lane type: unsigned integer (U),
-// signed integer (I), or floating-point (F).
-
-// WARNING: this is a "restricted" header because it is included from
-// translation units compiled with different flags. This header and its
-// dependencies must not define any function unless it is static inline and/or
-// within namespace HH_TARGET_NAME. See arch_specific.h for details.
-
-#include <stddef.h>
-#include <stdint.h>
-
-#include "highwayhash/arch_specific.h"
-#include "highwayhash/compiler_specific.h"
-
-// For auto-dependency generation, we need to include all headers but not their
-// contents (otherwise compilation fails because -mavx2 is not specified).
-#ifndef HH_DISABLE_TARGET_SPECIFIC
-
-// (This include cannot be moved within a namespace due to conflicts with
-// other system headers; see the comment in hh_sse41.h.)
-#include <immintrin.h>
-
-namespace highwayhash {
-// To prevent ODR violations when including this from multiple translation
-// units (TU) that are compiled with different flags, the contents must reside
-// in a namespace whose name is unique to the TU. NOTE: this behavior is
-// incompatible with precompiled modules and requires textual inclusion instead.
-namespace HH_TARGET_NAME {
-
-// Primary template for 256-bit AVX2 vectors; only specializations are used.
-template <typename T>
-class V256 {};
-
-template <>
-class V256<uint8_t> {
- public:
- using Intrinsic = __m256i;
- using T = uint8_t;
- static constexpr size_t N = 32;
-
- // Leaves v_ uninitialized - typically used for output parameters.
- HH_INLINE V256() {}
-
- // Broadcasts i to all lanes.
- HH_INLINE explicit V256(T i)
- : v_(_mm256_broadcastb_epi8(_mm_cvtsi32_si128(i))) {}
-
- // Copy from other vector.
- HH_INLINE explicit V256(const V256& other) : v_(other.v_) {}
- template <typename U>
- HH_INLINE explicit V256(const V256<U>& other) : v_(other) {}
- HH_INLINE V256& operator=(const V256& other) {
- v_ = other.v_;
- return *this;
- }
-
- // Convert from/to intrinsics.
- HH_INLINE V256(const Intrinsic& v) : v_(v) {}
- HH_INLINE V256& operator=(const Intrinsic& v) {
- v_ = v;
- return *this;
- }
- HH_INLINE operator Intrinsic() const { return v_; }
-
- // There are no greater-than comparison instructions for unsigned T.
- HH_INLINE V256 operator==(const V256& other) const {
- return V256(_mm256_cmpeq_epi8(v_, other.v_));
- }
-
- HH_INLINE V256& operator+=(const V256& other) {
- v_ = _mm256_add_epi8(v_, other.v_);
- return *this;
- }
- HH_INLINE V256& operator-=(const V256& other) {
- v_ = _mm256_sub_epi8(v_, other.v_);
- return *this;
- }
-
- HH_INLINE V256& operator&=(const V256& other) {
- v_ = _mm256_and_si256(v_, other.v_);
- return *this;
- }
- HH_INLINE V256& operator|=(const V256& other) {
- v_ = _mm256_or_si256(v_, other.v_);
- return *this;
- }
- HH_INLINE V256& operator^=(const V256& other) {
- v_ = _mm256_xor_si256(v_, other.v_);
- return *this;
- }
-
- private:
- Intrinsic v_;
-};
-
-template <>
-class V256<uint16_t> {
- public:
- using Intrinsic = __m256i;
- using T = uint16_t;
- static constexpr size_t N = 16;
-
- // Leaves v_ uninitialized - typically used for output parameters.
- HH_INLINE V256() {}
-
- // Lane 0 (p_0) is the lowest.
- HH_INLINE V256(T p_F, T p_E, T p_D, T p_C, T p_B, T p_A, T p_9, T p_8, T p_7,
- T p_6, T p_5, T p_4, T p_3, T p_2, T p_1, T p_0)
- : v_(_mm256_set_epi16(p_F, p_E, p_D, p_C, p_B, p_A, p_9, p_8, p_7, p_6,
- p_5, p_4, p_3, p_2, p_1, p_0)) {}
-
- // Broadcasts i to all lanes.
- HH_INLINE explicit V256(T i)
- : v_(_mm256_broadcastw_epi16(_mm_cvtsi32_si128(i))) {}
-
- // Copy from other vector.
- HH_INLINE explicit V256(const V256& other) : v_(other.v_) {}
- template <typename U>
- HH_INLINE explicit V256(const V256<U>& other) : v_(other) {}
- HH_INLINE V256& operator=(const V256& other) {
- v_ = other.v_;
- return *this;
- }
-
- // Convert from/to intrinsics.
- HH_INLINE V256(const Intrinsic& v) : v_(v) {}
- HH_INLINE V256& operator=(const Intrinsic& v) {
- v_ = v;
- return *this;
- }
- HH_INLINE operator Intrinsic() const { return v_; }
-
- // There are no greater-than comparison instructions for unsigned T.
- HH_INLINE V256 operator==(const V256& other) const {
- return V256(_mm256_cmpeq_epi16(v_, other.v_));
- }
-
- HH_INLINE V256& operator+=(const V256& other) {
- v_ = _mm256_add_epi16(v_, other.v_);
- return *this;
- }
- HH_INLINE V256& operator-=(const V256& other) {
- v_ = _mm256_sub_epi16(v_, other.v_);
- return *this;
- }
-
- HH_INLINE V256& operator&=(const V256& other) {
- v_ = _mm256_and_si256(v_, other.v_);
- return *this;
- }
- HH_INLINE V256& operator|=(const V256& other) {
- v_ = _mm256_or_si256(v_, other.v_);
- return *this;
- }
- HH_INLINE V256& operator^=(const V256& other) {
- v_ = _mm256_xor_si256(v_, other.v_);
- return *this;
- }
-
- HH_INLINE V256& operator<<=(const int count) {
- v_ = _mm256_slli_epi16(v_, count);
- return *this;
- }
-
- HH_INLINE V256& operator>>=(const int count) {
- v_ = _mm256_srli_epi16(v_, count);
- return *this;
- }
-
- private:
- Intrinsic v_;
-};
-
-template <>
-class V256<uint32_t> {
- public:
- using Intrinsic = __m256i;
- using T = uint32_t;
- static constexpr size_t N = 8;
-
- // Leaves v_ uninitialized - typically used for output parameters.
- HH_INLINE V256() {}
-
- // Lane 0 (p_0) is the lowest.
- HH_INLINE V256(T p_7, T p_6, T p_5, T p_4, T p_3, T p_2, T p_1, T p_0)
- : v_(_mm256_set_epi32(p_7, p_6, p_5, p_4, p_3, p_2, p_1, p_0)) {}
-
- // Broadcasts i to all lanes.
- HH_INLINE explicit V256(T i)
- : v_(_mm256_broadcastd_epi32(_mm_cvtsi32_si128(i))) {}
-
- // Copy from other vector.
- HH_INLINE explicit V256(const V256& other) : v_(other.v_) {}
- template <typename U>
- HH_INLINE explicit V256(const V256<U>& other) : v_(other) {}
- HH_INLINE V256& operator=(const V256& other) {
- v_ = other.v_;
- return *this;
- }
-
- // Convert from/to intrinsics.
- HH_INLINE V256(const Intrinsic& v) : v_(v) {}
- HH_INLINE V256& operator=(const Intrinsic& v) {
- v_ = v;
- return *this;
- }
- HH_INLINE operator Intrinsic() const { return v_; }
-
- // There are no greater-than comparison instructions for unsigned T.
- HH_INLINE V256 operator==(const V256& other) const {
- return V256(_mm256_cmpeq_epi32(v_, other.v_));
- }
-
- HH_INLINE V256& operator+=(const V256& other) {
- v_ = _mm256_add_epi32(v_, other.v_);
- return *this;
- }
- HH_INLINE V256& operator-=(const V256& other) {
- v_ = _mm256_sub_epi32(v_, other.v_);
- return *this;
- }
-
- HH_INLINE V256& operator&=(const V256& other) {
- v_ = _mm256_and_si256(v_, other.v_);
- return *this;
- }
- HH_INLINE V256& operator|=(const V256& other) {
- v_ = _mm256_or_si256(v_, other.v_);
- return *this;
- }
- HH_INLINE V256& operator^=(const V256& other) {
- v_ = _mm256_xor_si256(v_, other.v_);
- return *this;
- }
-
- HH_INLINE V256& operator<<=(const int count) {
- v_ = _mm256_slli_epi32(v_, count);
- return *this;
- }
-
- HH_INLINE V256& operator>>=(const int count) {
- v_ = _mm256_srli_epi32(v_, count);
- return *this;
- }
-
- private:
- Intrinsic v_;
-};
-
-template <>
-class V256<uint64_t> {
- public:
- using Intrinsic = __m256i;
- using T = uint64_t;
- static constexpr size_t N = 4;
-
- // Leaves v_ uninitialized - typically used for output parameters.
- HH_INLINE V256() {}
-
- // Lane 0 (p_0) is the lowest.
- HH_INLINE V256(T p_3, T p_2, T p_1, T p_0)
- : v_(_mm256_set_epi64x(p_3, p_2, p_1, p_0)) {}
-
- // Broadcasts i to all lanes.
- HH_INLINE explicit V256(T i)
- : v_(_mm256_broadcastq_epi64(_mm_cvtsi64_si128(i))) {}
-
- // Copy from other vector.
- HH_INLINE explicit V256(const V256& other) : v_(other.v_) {}
- template <typename U>
- HH_INLINE explicit V256(const V256<U>& other) : v_(other) {}
- HH_INLINE V256& operator=(const V256& other) {
- v_ = other.v_;
- return *this;
- }
-
- // Convert from/to intrinsics.
- HH_INLINE V256(const Intrinsic& v) : v_(v) {}
- HH_INLINE V256& operator=(const Intrinsic& v) {
- v_ = v;
- return *this;
- }
- HH_INLINE operator Intrinsic() const { return v_; }
-
- // There are no greater-than comparison instructions for unsigned T.
- HH_INLINE V256 operator==(const V256& other) const {
- return V256(_mm256_cmpeq_epi64(v_, other.v_));
- }
-
- HH_INLINE V256& operator+=(const V256& other) {
- v_ = _mm256_add_epi64(v_, other.v_);
- return *this;
- }
- HH_INLINE V256& operator-=(const V256& other) {
- v_ = _mm256_sub_epi64(v_, other.v_);
- return *this;
- }
-
- HH_INLINE V256& operator&=(const V256& other) {
- v_ = _mm256_and_si256(v_, other.v_);
- return *this;
- }
- HH_INLINE V256& operator|=(const V256& other) {
- v_ = _mm256_or_si256(v_, other.v_);
- return *this;
- }
- HH_INLINE V256& operator^=(const V256& other) {
- v_ = _mm256_xor_si256(v_, other.v_);
- return *this;
- }
-
- HH_INLINE V256& operator<<=(const int count) {
- v_ = _mm256_slli_epi64(v_, count);
- return *this;
- }
-
- HH_INLINE V256& operator>>=(const int count) {
- v_ = _mm256_srli_epi64(v_, count);
- return *this;
- }
-
- private:
- Intrinsic v_;
-};
-
-template <>
-class V256<float> {
- public:
- using Intrinsic = __m256;
- using T = float;
- static constexpr size_t N = 8;
-
- // Leaves v_ uninitialized - typically used for output parameters.
- HH_INLINE V256() {}
-
- // Lane 0 (p_0) is the lowest.
- HH_INLINE V256(T p_7, T p_6, T p_5, T p_4, T p_3, T p_2, T p_1, T p_0)
- : v_(_mm256_set_ps(p_7, p_6, p_5, p_4, p_3, p_2, p_1, p_0)) {}
-
- // Broadcasts to all lanes.
- HH_INLINE explicit V256(T f) : v_(_mm256_set1_ps(f)) {}
-
- // Copy from other vector.
- HH_INLINE explicit V256(const V256& other) : v_(other.v_) {}
- template <typename U>
- HH_INLINE explicit V256(const V256<U>& other) : v_(other) {}
- HH_INLINE V256& operator=(const V256& other) {
- v_ = other.v_;
- return *this;
- }
-
- // Convert from/to intrinsics.
- HH_INLINE V256(const Intrinsic& v) : v_(v) {}
- HH_INLINE V256& operator=(const Intrinsic& v) {
- v_ = v;
- return *this;
- }
- HH_INLINE operator Intrinsic() const { return v_; }
-
- HH_INLINE V256 operator==(const V256& other) const {
- return V256(_mm256_cmp_ps(v_, other.v_, 0));
- }
- HH_INLINE V256 operator<(const V256& other) const {
- return V256(_mm256_cmp_ps(v_, other.v_, 1));
- }
- HH_INLINE V256 operator>(const V256& other) const {
- return V256(_mm256_cmp_ps(other.v_, v_, 1));
- }
-
- HH_INLINE V256& operator*=(const V256& other) {
- v_ = _mm256_mul_ps(v_, other.v_);
- return *this;
- }
- HH_INLINE V256& operator/=(const V256& other) {
- v_ = _mm256_div_ps(v_, other.v_);
- return *this;
- }
- HH_INLINE V256& operator+=(const V256& other) {
- v_ = _mm256_add_ps(v_, other.v_);
- return *this;
- }
- HH_INLINE V256& operator-=(const V256& other) {
- v_ = _mm256_sub_ps(v_, other.v_);
- return *this;
- }
-
- HH_INLINE V256& operator&=(const V256& other) {
- v_ = _mm256_and_ps(v_, other.v_);
- return *this;
- }
- HH_INLINE V256& operator|=(const V256& other) {
- v_ = _mm256_or_ps(v_, other.v_);
- return *this;
- }
- HH_INLINE V256& operator^=(const V256& other) {
- v_ = _mm256_xor_ps(v_, other.v_);
- return *this;
- }
-
- private:
- Intrinsic v_;
-};
-
-template <>
-class V256<double> {
- public:
- using Intrinsic = __m256d;
- using T = double;
- static constexpr size_t N = 4;
-
- // Leaves v_ uninitialized - typically used for output parameters.
- HH_INLINE V256() {}
-
- // Lane 0 (p_0) is the lowest.
- HH_INLINE V256(T p_3, T p_2, T p_1, T p_0)
- : v_(_mm256_set_pd(p_3, p_2, p_1, p_0)) {}
-
- // Broadcasts to all lanes.
- HH_INLINE explicit V256(T f) : v_(_mm256_set1_pd(f)) {}
-
- // Copy from other vector.
- HH_INLINE explicit V256(const V256& other) : v_(other.v_) {}
- template <typename U>
- HH_INLINE explicit V256(const V256<U>& other) : v_(other) {}
- HH_INLINE V256& operator=(const V256& other) {
- v_ = other.v_;
- return *this;
- }
-
- // Convert from/to intrinsics.
- HH_INLINE V256(const Intrinsic& v) : v_(v) {}
- HH_INLINE V256& operator=(const Intrinsic& v) {
- v_ = v;
- return *this;
- }
- HH_INLINE operator Intrinsic() const { return v_; }
-
- HH_INLINE V256 operator==(const V256& other) const {
- return V256(_mm256_cmp_pd(v_, other.v_, 0));
- }
- HH_INLINE V256 operator<(const V256& other) const {
- return V256(_mm256_cmp_pd(v_, other.v_, 1));
- }
- HH_INLINE V256 operator>(const V256& other) const {
- return V256(_mm256_cmp_pd(other.v_, v_, 1));
- }
-
- HH_INLINE V256& operator*=(const V256& other) {
- v_ = _mm256_mul_pd(v_, other.v_);
- return *this;
- }
- HH_INLINE V256& operator/=(const V256& other) {
- v_ = _mm256_div_pd(v_, other.v_);
- return *this;
- }
- HH_INLINE V256& operator+=(const V256& other) {
- v_ = _mm256_add_pd(v_, other.v_);
- return *this;
- }
- HH_INLINE V256& operator-=(const V256& other) {
- v_ = _mm256_sub_pd(v_, other.v_);
- return *this;
- }
-
- HH_INLINE V256& operator&=(const V256& other) {
- v_ = _mm256_and_pd(v_, other.v_);
- return *this;
- }
- HH_INLINE V256& operator|=(const V256& other) {
- v_ = _mm256_or_pd(v_, other.v_);
- return *this;
- }
- HH_INLINE V256& operator^=(const V256& other) {
- v_ = _mm256_xor_pd(v_, other.v_);
- return *this;
- }
-
- private:
- Intrinsic v_;
-};
-
-// Nonmember functions for any V256 via member functions.
-
-template <typename T>
-HH_INLINE V256<T> operator*(const V256<T>& left, const V256<T>& right) {
- V256<T> t(left);
- return t *= right;
-}
-
-template <typename T>
-HH_INLINE V256<T> operator/(const V256<T>& left, const V256<T>& right) {
- V256<T> t(left);
- return t /= right;
-}
-
-template <typename T>
-HH_INLINE V256<T> operator+(const V256<T>& left, const V256<T>& right) {
- V256<T> t(left);
- return t += right;
-}
-
-template <typename T>
-HH_INLINE V256<T> operator-(const V256<T>& left, const V256<T>& right) {
- V256<T> t(left);
- return t -= right;
-}
-
-template <typename T>
-HH_INLINE V256<T> operator&(const V256<T>& left, const V256<T>& right) {
- V256<T> t(left);
- return t &= right;
-}
-
-template <typename T>
-HH_INLINE V256<T> operator|(const V256<T> left, const V256<T>& right) {
- V256<T> t(left);
- return t |= right;
-}
-
-template <typename T>
-HH_INLINE V256<T> operator^(const V256<T>& left, const V256<T>& right) {
- V256<T> t(left);
- return t ^= right;
-}
-
-template <typename T>
-HH_INLINE V256<T> operator<<(const V256<T>& v, const int count) {
- V256<T> t(v);
- return t <<= count;
-}
-
-template <typename T>
-HH_INLINE V256<T> operator>>(const V256<T>& v, const int count) {
- V256<T> t(v);
- return t >>= count;
-}
-
-// We do not provide operator<<(V, __m128i) because it has 4 cycle latency
-// (to broadcast the shift count). It is faster to use sllv_epi64 etc. instead.
-
-using V32x8U = V256<uint8_t>;
-using V16x16U = V256<uint16_t>;
-using V8x32U = V256<uint32_t>;
-using V4x64U = V256<uint64_t>;
-using V8x32F = V256<float>;
-using V4x64F = V256<double>;
-
-// Load/Store for any V256.
-
-// We differentiate between targets' vector types via template specialization.
-// Calling Load<V>(floats) is more natural than Load(V8x32F(), floats) and may
-// generate better code in unoptimized builds. Only declare the primary
-// templates to avoid needing mutual exclusion with vector128.
-
-template <class V>
-HH_INLINE V Load(const typename V::T* const HH_RESTRICT from);
-
-template <class V>
-HH_INLINE V LoadUnaligned(const typename V::T* const HH_RESTRICT from);
-
-template <>
-HH_INLINE V32x8U Load(const V32x8U::T* const HH_RESTRICT from) {
- const __m256i* const HH_RESTRICT p = reinterpret_cast<const __m256i*>(from);
- return V32x8U(_mm256_load_si256(p));
-}
-template <>
-HH_INLINE V16x16U Load(const V16x16U::T* const HH_RESTRICT from) {
- const __m256i* const HH_RESTRICT p = reinterpret_cast<const __m256i*>(from);
- return V16x16U(_mm256_load_si256(p));
-}
-template <>
-HH_INLINE V8x32U Load(const V8x32U::T* const HH_RESTRICT from) {
- const __m256i* const HH_RESTRICT p = reinterpret_cast<const __m256i*>(from);
- return V8x32U(_mm256_load_si256(p));
-}
-template <>
-HH_INLINE V4x64U Load(const V4x64U::T* const HH_RESTRICT from) {
- const __m256i* const HH_RESTRICT p = reinterpret_cast<const __m256i*>(from);
- return V4x64U(_mm256_load_si256(p));
-}
-template <>
-HH_INLINE V8x32F Load(const V8x32F::T* const HH_RESTRICT from) {
- return V8x32F(_mm256_load_ps(from));
-}
-template <>
-HH_INLINE V4x64F Load(const V4x64F::T* const HH_RESTRICT from) {
- return V4x64F(_mm256_load_pd(from));
-}
-
-template <>
-HH_INLINE V32x8U LoadUnaligned(const V32x8U::T* const HH_RESTRICT from) {
- const __m256i* const HH_RESTRICT p = reinterpret_cast<const __m256i*>(from);
- return V32x8U(_mm256_loadu_si256(p));
-}
-template <>
-HH_INLINE V16x16U LoadUnaligned(const V16x16U::T* const HH_RESTRICT from) {
- const __m256i* const HH_RESTRICT p = reinterpret_cast<const __m256i*>(from);
- return V16x16U(_mm256_loadu_si256(p));
-}
-template <>
-HH_INLINE V8x32U LoadUnaligned(const V8x32U::T* const HH_RESTRICT from) {
- const __m256i* const HH_RESTRICT p = reinterpret_cast<const __m256i*>(from);
- return V8x32U(_mm256_loadu_si256(p));
-}
-template <>
-HH_INLINE V4x64U LoadUnaligned(const V4x64U::T* const HH_RESTRICT from) {
- const __m256i* const HH_RESTRICT p = reinterpret_cast<const __m256i*>(from);
- return V4x64U(_mm256_loadu_si256(p));
-}
-template <>
-HH_INLINE V8x32F LoadUnaligned(const V8x32F::T* const HH_RESTRICT from) {
- return V8x32F(_mm256_loadu_ps(from));
-}
-template <>
-HH_INLINE V4x64F LoadUnaligned(const V4x64F::T* const HH_RESTRICT from) {
- return V4x64F(_mm256_loadu_pd(from));
-}
-
-// "to" must be vector-aligned.
-template <typename T>
-HH_INLINE void Store(const V256<T>& v, T* const HH_RESTRICT to) {
- _mm256_store_si256(reinterpret_cast<__m256i * HH_RESTRICT>(to), v);
-}
-HH_INLINE void Store(const V256<float>& v, float* const HH_RESTRICT to) {
- _mm256_store_ps(to, v);
-}
-HH_INLINE void Store(const V256<double>& v, double* const HH_RESTRICT to) {
- _mm256_store_pd(to, v);
-}
-
-template <typename T>
-HH_INLINE void StoreUnaligned(const V256<T>& v, T* const HH_RESTRICT to) {
- _mm256_storeu_si256(reinterpret_cast<__m256i * HH_RESTRICT>(to), v);
-}
-HH_INLINE void StoreUnaligned(const V256<float>& v,
- float* const HH_RESTRICT to) {
- _mm256_storeu_ps(to, v);
-}
-HH_INLINE void StoreUnaligned(const V256<double>& v,
- double* const HH_RESTRICT to) {
- _mm256_storeu_pd(to, v);
-}
-
-// Writes directly to (aligned) memory, bypassing the cache. This is useful for
-// data that will not be read again in the near future.
-template <typename T>
-HH_INLINE void Stream(const V256<T>& v, T* const HH_RESTRICT to) {
- _mm256_stream_si256(reinterpret_cast<__m256i * HH_RESTRICT>(to), v);
-}
-HH_INLINE void Stream(const V256<float>& v, float* const HH_RESTRICT to) {
- _mm256_stream_ps(to, v);
-}
-HH_INLINE void Stream(const V256<double>& v, double* const HH_RESTRICT to) {
- _mm256_stream_pd(to, v);
-}
-
-// Miscellaneous functions.
-
-template <typename T>
-HH_INLINE V256<T> RotateLeft(const V256<T>& v, const int count) {
- constexpr size_t num_bits = sizeof(T) * 8;
- return (v << count) | (v >> (num_bits - count));
-}
-
-template <typename T>
-HH_INLINE V256<T> AndNot(const V256<T>& neg_mask, const V256<T>& values) {
- return V256<T>(_mm256_andnot_si256(neg_mask, values));
-}
-template <>
-HH_INLINE V256<float> AndNot(const V256<float>& neg_mask,
- const V256<float>& values) {
- return V256<float>(_mm256_andnot_ps(neg_mask, values));
-}
-template <>
-HH_INLINE V256<double> AndNot(const V256<double>& neg_mask,
- const V256<double>& values) {
- return V256<double>(_mm256_andnot_pd(neg_mask, values));
-}
-
-HH_INLINE V8x32F Select(const V8x32F& a, const V8x32F& b, const V8x32F& mask) {
- return V8x32F(_mm256_blendv_ps(a, b, mask));
-}
-
-HH_INLINE V4x64F Select(const V4x64F& a, const V4x64F& b, const V4x64F& mask) {
- return V4x64F(_mm256_blendv_pd(a, b, mask));
-}
-
-// Min/Max
-
-HH_INLINE V32x8U Min(const V32x8U& v0, const V32x8U& v1) {
- return V32x8U(_mm256_min_epu8(v0, v1));
-}
-
-HH_INLINE V32x8U Max(const V32x8U& v0, const V32x8U& v1) {
- return V32x8U(_mm256_max_epu8(v0, v1));
-}
-
-HH_INLINE V16x16U Min(const V16x16U& v0, const V16x16U& v1) {
- return V16x16U(_mm256_min_epu16(v0, v1));
-}
-
-HH_INLINE V16x16U Max(const V16x16U& v0, const V16x16U& v1) {
- return V16x16U(_mm256_max_epu16(v0, v1));
-}
-
-HH_INLINE V8x32U Min(const V8x32U& v0, const V8x32U& v1) {
- return V8x32U(_mm256_min_epu32(v0, v1));
-}
-
-HH_INLINE V8x32U Max(const V8x32U& v0, const V8x32U& v1) {
- return V8x32U(_mm256_max_epu32(v0, v1));
-}
-
-HH_INLINE V8x32F Min(const V8x32F& v0, const V8x32F& v1) {
- return V8x32F(_mm256_min_ps(v0, v1));
-}
-
-HH_INLINE V8x32F Max(const V8x32F& v0, const V8x32F& v1) {
- return V8x32F(_mm256_max_ps(v0, v1));
-}
-
-HH_INLINE V4x64F Min(const V4x64F& v0, const V4x64F& v1) {
- return V4x64F(_mm256_min_pd(v0, v1));
-}
-
-HH_INLINE V4x64F Max(const V4x64F& v0, const V4x64F& v1) {
- return V4x64F(_mm256_max_pd(v0, v1));
-}
-
-} // namespace HH_TARGET_NAME
-} // namespace highwayhash
-
-#endif // HH_DISABLE_TARGET_SPECIFIC
-#endif // HIGHWAYHASH_VECTOR256_H_
+// Copyright 2016 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef HIGHWAYHASH_VECTOR256_H_
+#define HIGHWAYHASH_VECTOR256_H_
+
+// Defines SIMD vector classes ("V4x64U") with overloaded arithmetic operators:
+// const V4x64U masked_sum = (a + b) & m;
+// This is shorter and more readable than compiler intrinsics:
+// const __m256i masked_sum = _mm256_and_si256(_mm256_add_epi64(a, b), m);
+// There is typically no runtime cost for these abstractions.
+//
+// The naming convention is VNxBBT where N is the number of lanes, BB the
+// number of bits per lane and T is the lane type: unsigned integer (U),
+// signed integer (I), or floating-point (F).
+
+// WARNING: this is a "restricted" header because it is included from
+// translation units compiled with different flags. This header and its
+// dependencies must not define any function unless it is static inline and/or
+// within namespace HH_TARGET_NAME. See arch_specific.h for details.
+
+#include <stddef.h>
+#include <stdint.h>
+
+#include "highwayhash/arch_specific.h"
+#include "highwayhash/compiler_specific.h"
+
+// For auto-dependency generation, we need to include all headers but not their
+// contents (otherwise compilation fails because -mavx2 is not specified).
+#ifndef HH_DISABLE_TARGET_SPECIFIC
+
+// (This include cannot be moved within a namespace due to conflicts with
+// other system headers; see the comment in hh_sse41.h.)
+#include <immintrin.h>
+
+namespace highwayhash {
+// To prevent ODR violations when including this from multiple translation
+// units (TU) that are compiled with different flags, the contents must reside
+// in a namespace whose name is unique to the TU. NOTE: this behavior is
+// incompatible with precompiled modules and requires textual inclusion instead.
+namespace HH_TARGET_NAME {
+
+// Primary template for 256-bit AVX2 vectors; only specializations are used.
+template <typename T>
+class V256 {};
+
+template <>
+class V256<uint8_t> {
+ public:
+ using Intrinsic = __m256i;
+ using T = uint8_t;
+ static constexpr size_t N = 32;
+
+ // Leaves v_ uninitialized - typically used for output parameters.
+ HH_INLINE V256() {}
+
+ // Broadcasts i to all lanes.
+ HH_INLINE explicit V256(T i)
+ : v_(_mm256_broadcastb_epi8(_mm_cvtsi32_si128(i))) {}
+
+ // Copy from other vector.
+ HH_INLINE explicit V256(const V256& other) : v_(other.v_) {}
+ template <typename U>
+ HH_INLINE explicit V256(const V256<U>& other) : v_(other) {}
+ HH_INLINE V256& operator=(const V256& other) {
+ v_ = other.v_;
+ return *this;
+ }
+
+ // Convert from/to intrinsics.
+ HH_INLINE V256(const Intrinsic& v) : v_(v) {}
+ HH_INLINE V256& operator=(const Intrinsic& v) {
+ v_ = v;
+ return *this;
+ }
+ HH_INLINE operator Intrinsic() const { return v_; }
+
+ // There are no greater-than comparison instructions for unsigned T.
+ HH_INLINE V256 operator==(const V256& other) const {
+ return V256(_mm256_cmpeq_epi8(v_, other.v_));
+ }
+
+ HH_INLINE V256& operator+=(const V256& other) {
+ v_ = _mm256_add_epi8(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V256& operator-=(const V256& other) {
+ v_ = _mm256_sub_epi8(v_, other.v_);
+ return *this;
+ }
+
+ HH_INLINE V256& operator&=(const V256& other) {
+ v_ = _mm256_and_si256(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V256& operator|=(const V256& other) {
+ v_ = _mm256_or_si256(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V256& operator^=(const V256& other) {
+ v_ = _mm256_xor_si256(v_, other.v_);
+ return *this;
+ }
+
+ private:
+ Intrinsic v_;
+};
+
+template <>
+class V256<uint16_t> {
+ public:
+ using Intrinsic = __m256i;
+ using T = uint16_t;
+ static constexpr size_t N = 16;
+
+ // Leaves v_ uninitialized - typically used for output parameters.
+ HH_INLINE V256() {}
+
+ // Lane 0 (p_0) is the lowest.
+ HH_INLINE V256(T p_F, T p_E, T p_D, T p_C, T p_B, T p_A, T p_9, T p_8, T p_7,
+ T p_6, T p_5, T p_4, T p_3, T p_2, T p_1, T p_0)
+ : v_(_mm256_set_epi16(p_F, p_E, p_D, p_C, p_B, p_A, p_9, p_8, p_7, p_6,
+ p_5, p_4, p_3, p_2, p_1, p_0)) {}
+
+ // Broadcasts i to all lanes.
+ HH_INLINE explicit V256(T i)
+ : v_(_mm256_broadcastw_epi16(_mm_cvtsi32_si128(i))) {}
+
+ // Copy from other vector.
+ HH_INLINE explicit V256(const V256& other) : v_(other.v_) {}
+ template <typename U>
+ HH_INLINE explicit V256(const V256<U>& other) : v_(other) {}
+ HH_INLINE V256& operator=(const V256& other) {
+ v_ = other.v_;
+ return *this;
+ }
+
+ // Convert from/to intrinsics.
+ HH_INLINE V256(const Intrinsic& v) : v_(v) {}
+ HH_INLINE V256& operator=(const Intrinsic& v) {
+ v_ = v;
+ return *this;
+ }
+ HH_INLINE operator Intrinsic() const { return v_; }
+
+ // There are no greater-than comparison instructions for unsigned T.
+ HH_INLINE V256 operator==(const V256& other) const {
+ return V256(_mm256_cmpeq_epi16(v_, other.v_));
+ }
+
+ HH_INLINE V256& operator+=(const V256& other) {
+ v_ = _mm256_add_epi16(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V256& operator-=(const V256& other) {
+ v_ = _mm256_sub_epi16(v_, other.v_);
+ return *this;
+ }
+
+ HH_INLINE V256& operator&=(const V256& other) {
+ v_ = _mm256_and_si256(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V256& operator|=(const V256& other) {
+ v_ = _mm256_or_si256(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V256& operator^=(const V256& other) {
+ v_ = _mm256_xor_si256(v_, other.v_);
+ return *this;
+ }
+
+ HH_INLINE V256& operator<<=(const int count) {
+ v_ = _mm256_slli_epi16(v_, count);
+ return *this;
+ }
+
+ HH_INLINE V256& operator>>=(const int count) {
+ v_ = _mm256_srli_epi16(v_, count);
+ return *this;
+ }
+
+ private:
+ Intrinsic v_;
+};
+
+template <>
+class V256<uint32_t> {
+ public:
+ using Intrinsic = __m256i;
+ using T = uint32_t;
+ static constexpr size_t N = 8;
+
+ // Leaves v_ uninitialized - typically used for output parameters.
+ HH_INLINE V256() {}
+
+ // Lane 0 (p_0) is the lowest.
+ HH_INLINE V256(T p_7, T p_6, T p_5, T p_4, T p_3, T p_2, T p_1, T p_0)
+ : v_(_mm256_set_epi32(p_7, p_6, p_5, p_4, p_3, p_2, p_1, p_0)) {}
+
+ // Broadcasts i to all lanes.
+ HH_INLINE explicit V256(T i)
+ : v_(_mm256_broadcastd_epi32(_mm_cvtsi32_si128(i))) {}
+
+ // Copy from other vector.
+ HH_INLINE explicit V256(const V256& other) : v_(other.v_) {}
+ template <typename U>
+ HH_INLINE explicit V256(const V256<U>& other) : v_(other) {}
+ HH_INLINE V256& operator=(const V256& other) {
+ v_ = other.v_;
+ return *this;
+ }
+
+ // Convert from/to intrinsics.
+ HH_INLINE V256(const Intrinsic& v) : v_(v) {}
+ HH_INLINE V256& operator=(const Intrinsic& v) {
+ v_ = v;
+ return *this;
+ }
+ HH_INLINE operator Intrinsic() const { return v_; }
+
+ // There are no greater-than comparison instructions for unsigned T.
+ HH_INLINE V256 operator==(const V256& other) const {
+ return V256(_mm256_cmpeq_epi32(v_, other.v_));
+ }
+
+ HH_INLINE V256& operator+=(const V256& other) {
+ v_ = _mm256_add_epi32(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V256& operator-=(const V256& other) {
+ v_ = _mm256_sub_epi32(v_, other.v_);
+ return *this;
+ }
+
+ HH_INLINE V256& operator&=(const V256& other) {
+ v_ = _mm256_and_si256(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V256& operator|=(const V256& other) {
+ v_ = _mm256_or_si256(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V256& operator^=(const V256& other) {
+ v_ = _mm256_xor_si256(v_, other.v_);
+ return *this;
+ }
+
+ HH_INLINE V256& operator<<=(const int count) {
+ v_ = _mm256_slli_epi32(v_, count);
+ return *this;
+ }
+
+ HH_INLINE V256& operator>>=(const int count) {
+ v_ = _mm256_srli_epi32(v_, count);
+ return *this;
+ }
+
+ private:
+ Intrinsic v_;
+};
+
+template <>
+class V256<uint64_t> {
+ public:
+ using Intrinsic = __m256i;
+ using T = uint64_t;
+ static constexpr size_t N = 4;
+
+ // Leaves v_ uninitialized - typically used for output parameters.
+ HH_INLINE V256() {}
+
+ // Lane 0 (p_0) is the lowest.
+ HH_INLINE V256(T p_3, T p_2, T p_1, T p_0)
+ : v_(_mm256_set_epi64x(p_3, p_2, p_1, p_0)) {}
+
+ // Broadcasts i to all lanes.
+ HH_INLINE explicit V256(T i)
+ : v_(_mm256_broadcastq_epi64(_mm_cvtsi64_si128(i))) {}
+
+ // Copy from other vector.
+ HH_INLINE explicit V256(const V256& other) : v_(other.v_) {}
+ template <typename U>
+ HH_INLINE explicit V256(const V256<U>& other) : v_(other) {}
+ HH_INLINE V256& operator=(const V256& other) {
+ v_ = other.v_;
+ return *this;
+ }
+
+ // Convert from/to intrinsics.
+ HH_INLINE V256(const Intrinsic& v) : v_(v) {}
+ HH_INLINE V256& operator=(const Intrinsic& v) {
+ v_ = v;
+ return *this;
+ }
+ HH_INLINE operator Intrinsic() const { return v_; }
+
+ // There are no greater-than comparison instructions for unsigned T.
+ HH_INLINE V256 operator==(const V256& other) const {
+ return V256(_mm256_cmpeq_epi64(v_, other.v_));
+ }
+
+ HH_INLINE V256& operator+=(const V256& other) {
+ v_ = _mm256_add_epi64(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V256& operator-=(const V256& other) {
+ v_ = _mm256_sub_epi64(v_, other.v_);
+ return *this;
+ }
+
+ HH_INLINE V256& operator&=(const V256& other) {
+ v_ = _mm256_and_si256(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V256& operator|=(const V256& other) {
+ v_ = _mm256_or_si256(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V256& operator^=(const V256& other) {
+ v_ = _mm256_xor_si256(v_, other.v_);
+ return *this;
+ }
+
+ HH_INLINE V256& operator<<=(const int count) {
+ v_ = _mm256_slli_epi64(v_, count);
+ return *this;
+ }
+
+ HH_INLINE V256& operator>>=(const int count) {
+ v_ = _mm256_srli_epi64(v_, count);
+ return *this;
+ }
+
+ private:
+ Intrinsic v_;
+};
+
+template <>
+class V256<float> {
+ public:
+ using Intrinsic = __m256;
+ using T = float;
+ static constexpr size_t N = 8;
+
+ // Leaves v_ uninitialized - typically used for output parameters.
+ HH_INLINE V256() {}
+
+ // Lane 0 (p_0) is the lowest.
+ HH_INLINE V256(T p_7, T p_6, T p_5, T p_4, T p_3, T p_2, T p_1, T p_0)
+ : v_(_mm256_set_ps(p_7, p_6, p_5, p_4, p_3, p_2, p_1, p_0)) {}
+
+ // Broadcasts to all lanes.
+ HH_INLINE explicit V256(T f) : v_(_mm256_set1_ps(f)) {}
+
+ // Copy from other vector.
+ HH_INLINE explicit V256(const V256& other) : v_(other.v_) {}
+ template <typename U>
+ HH_INLINE explicit V256(const V256<U>& other) : v_(other) {}
+ HH_INLINE V256& operator=(const V256& other) {
+ v_ = other.v_;
+ return *this;
+ }
+
+ // Convert from/to intrinsics.
+ HH_INLINE V256(const Intrinsic& v) : v_(v) {}
+ HH_INLINE V256& operator=(const Intrinsic& v) {
+ v_ = v;
+ return *this;
+ }
+ HH_INLINE operator Intrinsic() const { return v_; }
+
+ HH_INLINE V256 operator==(const V256& other) const {
+ return V256(_mm256_cmp_ps(v_, other.v_, 0));
+ }
+ HH_INLINE V256 operator<(const V256& other) const {
+ return V256(_mm256_cmp_ps(v_, other.v_, 1));
+ }
+ HH_INLINE V256 operator>(const V256& other) const {
+ return V256(_mm256_cmp_ps(other.v_, v_, 1));
+ }
+
+ HH_INLINE V256& operator*=(const V256& other) {
+ v_ = _mm256_mul_ps(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V256& operator/=(const V256& other) {
+ v_ = _mm256_div_ps(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V256& operator+=(const V256& other) {
+ v_ = _mm256_add_ps(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V256& operator-=(const V256& other) {
+ v_ = _mm256_sub_ps(v_, other.v_);
+ return *this;
+ }
+
+ HH_INLINE V256& operator&=(const V256& other) {
+ v_ = _mm256_and_ps(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V256& operator|=(const V256& other) {
+ v_ = _mm256_or_ps(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V256& operator^=(const V256& other) {
+ v_ = _mm256_xor_ps(v_, other.v_);
+ return *this;
+ }
+
+ private:
+ Intrinsic v_;
+};
+
+template <>
+class V256<double> {
+ public:
+ using Intrinsic = __m256d;
+ using T = double;
+ static constexpr size_t N = 4;
+
+ // Leaves v_ uninitialized - typically used for output parameters.
+ HH_INLINE V256() {}
+
+ // Lane 0 (p_0) is the lowest.
+ HH_INLINE V256(T p_3, T p_2, T p_1, T p_0)
+ : v_(_mm256_set_pd(p_3, p_2, p_1, p_0)) {}
+
+ // Broadcasts to all lanes.
+ HH_INLINE explicit V256(T f) : v_(_mm256_set1_pd(f)) {}
+
+ // Copy from other vector.
+ HH_INLINE explicit V256(const V256& other) : v_(other.v_) {}
+ template <typename U>
+ HH_INLINE explicit V256(const V256<U>& other) : v_(other) {}
+ HH_INLINE V256& operator=(const V256& other) {
+ v_ = other.v_;
+ return *this;
+ }
+
+ // Convert from/to intrinsics.
+ HH_INLINE V256(const Intrinsic& v) : v_(v) {}
+ HH_INLINE V256& operator=(const Intrinsic& v) {
+ v_ = v;
+ return *this;
+ }
+ HH_INLINE operator Intrinsic() const { return v_; }
+
+ HH_INLINE V256 operator==(const V256& other) const {
+ return V256(_mm256_cmp_pd(v_, other.v_, 0));
+ }
+ HH_INLINE V256 operator<(const V256& other) const {
+ return V256(_mm256_cmp_pd(v_, other.v_, 1));
+ }
+ HH_INLINE V256 operator>(const V256& other) const {
+ return V256(_mm256_cmp_pd(other.v_, v_, 1));
+ }
+
+ HH_INLINE V256& operator*=(const V256& other) {
+ v_ = _mm256_mul_pd(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V256& operator/=(const V256& other) {
+ v_ = _mm256_div_pd(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V256& operator+=(const V256& other) {
+ v_ = _mm256_add_pd(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V256& operator-=(const V256& other) {
+ v_ = _mm256_sub_pd(v_, other.v_);
+ return *this;
+ }
+
+ HH_INLINE V256& operator&=(const V256& other) {
+ v_ = _mm256_and_pd(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V256& operator|=(const V256& other) {
+ v_ = _mm256_or_pd(v_, other.v_);
+ return *this;
+ }
+ HH_INLINE V256& operator^=(const V256& other) {
+ v_ = _mm256_xor_pd(v_, other.v_);
+ return *this;
+ }
+
+ private:
+ Intrinsic v_;
+};
+
+// Nonmember functions for any V256 via member functions.
+
+template <typename T>
+HH_INLINE V256<T> operator*(const V256<T>& left, const V256<T>& right) {
+ V256<T> t(left);
+ return t *= right;
+}
+
+template <typename T>
+HH_INLINE V256<T> operator/(const V256<T>& left, const V256<T>& right) {
+ V256<T> t(left);
+ return t /= right;
+}
+
+template <typename T>
+HH_INLINE V256<T> operator+(const V256<T>& left, const V256<T>& right) {
+ V256<T> t(left);
+ return t += right;
+}
+
+template <typename T>
+HH_INLINE V256<T> operator-(const V256<T>& left, const V256<T>& right) {
+ V256<T> t(left);
+ return t -= right;
+}
+
+template <typename T>
+HH_INLINE V256<T> operator&(const V256<T>& left, const V256<T>& right) {
+ V256<T> t(left);
+ return t &= right;
+}
+
+template <typename T>
+HH_INLINE V256<T> operator|(const V256<T> left, const V256<T>& right) {
+ V256<T> t(left);
+ return t |= right;
+}
+
+template <typename T>
+HH_INLINE V256<T> operator^(const V256<T>& left, const V256<T>& right) {
+ V256<T> t(left);
+ return t ^= right;
+}
+
+template <typename T>
+HH_INLINE V256<T> operator<<(const V256<T>& v, const int count) {
+ V256<T> t(v);
+ return t <<= count;
+}
+
+template <typename T>
+HH_INLINE V256<T> operator>>(const V256<T>& v, const int count) {
+ V256<T> t(v);
+ return t >>= count;
+}
+
+// We do not provide operator<<(V, __m128i) because it has 4 cycle latency
+// (to broadcast the shift count). It is faster to use sllv_epi64 etc. instead.
+
+using V32x8U = V256<uint8_t>;
+using V16x16U = V256<uint16_t>;
+using V8x32U = V256<uint32_t>;
+using V4x64U = V256<uint64_t>;
+using V8x32F = V256<float>;
+using V4x64F = V256<double>;
+
+// Load/Store for any V256.
+
+// We differentiate between targets' vector types via template specialization.
+// Calling Load<V>(floats) is more natural than Load(V8x32F(), floats) and may
+// generate better code in unoptimized builds. Only declare the primary
+// templates to avoid needing mutual exclusion with vector128.
+
+template <class V>
+HH_INLINE V Load(const typename V::T* const HH_RESTRICT from);
+
+template <class V>
+HH_INLINE V LoadUnaligned(const typename V::T* const HH_RESTRICT from);
+
+template <>
+HH_INLINE V32x8U Load(const V32x8U::T* const HH_RESTRICT from) {
+ const __m256i* const HH_RESTRICT p = reinterpret_cast<const __m256i*>(from);
+ return V32x8U(_mm256_load_si256(p));
+}
+template <>
+HH_INLINE V16x16U Load(const V16x16U::T* const HH_RESTRICT from) {
+ const __m256i* const HH_RESTRICT p = reinterpret_cast<const __m256i*>(from);
+ return V16x16U(_mm256_load_si256(p));
+}
+template <>
+HH_INLINE V8x32U Load(const V8x32U::T* const HH_RESTRICT from) {
+ const __m256i* const HH_RESTRICT p = reinterpret_cast<const __m256i*>(from);
+ return V8x32U(_mm256_load_si256(p));
+}
+template <>
+HH_INLINE V4x64U Load(const V4x64U::T* const HH_RESTRICT from) {
+ const __m256i* const HH_RESTRICT p = reinterpret_cast<const __m256i*>(from);
+ return V4x64U(_mm256_load_si256(p));
+}
+template <>
+HH_INLINE V8x32F Load(const V8x32F::T* const HH_RESTRICT from) {
+ return V8x32F(_mm256_load_ps(from));
+}
+template <>
+HH_INLINE V4x64F Load(const V4x64F::T* const HH_RESTRICT from) {
+ return V4x64F(_mm256_load_pd(from));
+}
+
+template <>
+HH_INLINE V32x8U LoadUnaligned(const V32x8U::T* const HH_RESTRICT from) {
+ const __m256i* const HH_RESTRICT p = reinterpret_cast<const __m256i*>(from);
+ return V32x8U(_mm256_loadu_si256(p));
+}
+template <>
+HH_INLINE V16x16U LoadUnaligned(const V16x16U::T* const HH_RESTRICT from) {
+ const __m256i* const HH_RESTRICT p = reinterpret_cast<const __m256i*>(from);
+ return V16x16U(_mm256_loadu_si256(p));
+}
+template <>
+HH_INLINE V8x32U LoadUnaligned(const V8x32U::T* const HH_RESTRICT from) {
+ const __m256i* const HH_RESTRICT p = reinterpret_cast<const __m256i*>(from);
+ return V8x32U(_mm256_loadu_si256(p));
+}
+template <>
+HH_INLINE V4x64U LoadUnaligned(const V4x64U::T* const HH_RESTRICT from) {
+ const __m256i* const HH_RESTRICT p = reinterpret_cast<const __m256i*>(from);
+ return V4x64U(_mm256_loadu_si256(p));
+}
+template <>
+HH_INLINE V8x32F LoadUnaligned(const V8x32F::T* const HH_RESTRICT from) {
+ return V8x32F(_mm256_loadu_ps(from));
+}
+template <>
+HH_INLINE V4x64F LoadUnaligned(const V4x64F::T* const HH_RESTRICT from) {
+ return V4x64F(_mm256_loadu_pd(from));
+}
+
+// "to" must be vector-aligned.
+template <typename T>
+HH_INLINE void Store(const V256<T>& v, T* const HH_RESTRICT to) {
+ _mm256_store_si256(reinterpret_cast<__m256i * HH_RESTRICT>(to), v);
+}
+HH_INLINE void Store(const V256<float>& v, float* const HH_RESTRICT to) {
+ _mm256_store_ps(to, v);
+}
+HH_INLINE void Store(const V256<double>& v, double* const HH_RESTRICT to) {
+ _mm256_store_pd(to, v);
+}
+
+template <typename T>
+HH_INLINE void StoreUnaligned(const V256<T>& v, T* const HH_RESTRICT to) {
+ _mm256_storeu_si256(reinterpret_cast<__m256i * HH_RESTRICT>(to), v);
+}
+HH_INLINE void StoreUnaligned(const V256<float>& v,
+ float* const HH_RESTRICT to) {
+ _mm256_storeu_ps(to, v);
+}
+HH_INLINE void StoreUnaligned(const V256<double>& v,
+ double* const HH_RESTRICT to) {
+ _mm256_storeu_pd(to, v);
+}
+
+// Writes directly to (aligned) memory, bypassing the cache. This is useful for
+// data that will not be read again in the near future.
+template <typename T>
+HH_INLINE void Stream(const V256<T>& v, T* const HH_RESTRICT to) {
+ _mm256_stream_si256(reinterpret_cast<__m256i * HH_RESTRICT>(to), v);
+}
+HH_INLINE void Stream(const V256<float>& v, float* const HH_RESTRICT to) {
+ _mm256_stream_ps(to, v);
+}
+HH_INLINE void Stream(const V256<double>& v, double* const HH_RESTRICT to) {
+ _mm256_stream_pd(to, v);
+}
+
+// Miscellaneous functions.
+
+template <typename T>
+HH_INLINE V256<T> RotateLeft(const V256<T>& v, const int count) {
+ constexpr size_t num_bits = sizeof(T) * 8;
+ return (v << count) | (v >> (num_bits - count));
+}
+
+template <typename T>
+HH_INLINE V256<T> AndNot(const V256<T>& neg_mask, const V256<T>& values) {
+ return V256<T>(_mm256_andnot_si256(neg_mask, values));
+}
+template <>
+HH_INLINE V256<float> AndNot(const V256<float>& neg_mask,
+ const V256<float>& values) {
+ return V256<float>(_mm256_andnot_ps(neg_mask, values));
+}
+template <>
+HH_INLINE V256<double> AndNot(const V256<double>& neg_mask,
+ const V256<double>& values) {
+ return V256<double>(_mm256_andnot_pd(neg_mask, values));
+}
+
+HH_INLINE V8x32F Select(const V8x32F& a, const V8x32F& b, const V8x32F& mask) {
+ return V8x32F(_mm256_blendv_ps(a, b, mask));
+}
+
+HH_INLINE V4x64F Select(const V4x64F& a, const V4x64F& b, const V4x64F& mask) {
+ return V4x64F(_mm256_blendv_pd(a, b, mask));
+}
+
+// Min/Max
+
+HH_INLINE V32x8U Min(const V32x8U& v0, const V32x8U& v1) {
+ return V32x8U(_mm256_min_epu8(v0, v1));
+}
+
+HH_INLINE V32x8U Max(const V32x8U& v0, const V32x8U& v1) {
+ return V32x8U(_mm256_max_epu8(v0, v1));
+}
+
+HH_INLINE V16x16U Min(const V16x16U& v0, const V16x16U& v1) {
+ return V16x16U(_mm256_min_epu16(v0, v1));
+}
+
+HH_INLINE V16x16U Max(const V16x16U& v0, const V16x16U& v1) {
+ return V16x16U(_mm256_max_epu16(v0, v1));
+}
+
+HH_INLINE V8x32U Min(const V8x32U& v0, const V8x32U& v1) {
+ return V8x32U(_mm256_min_epu32(v0, v1));
+}
+
+HH_INLINE V8x32U Max(const V8x32U& v0, const V8x32U& v1) {
+ return V8x32U(_mm256_max_epu32(v0, v1));
+}
+
+HH_INLINE V8x32F Min(const V8x32F& v0, const V8x32F& v1) {
+ return V8x32F(_mm256_min_ps(v0, v1));
+}
+
+HH_INLINE V8x32F Max(const V8x32F& v0, const V8x32F& v1) {
+ return V8x32F(_mm256_max_ps(v0, v1));
+}
+
+HH_INLINE V4x64F Min(const V4x64F& v0, const V4x64F& v1) {
+ return V4x64F(_mm256_min_pd(v0, v1));
+}
+
+HH_INLINE V4x64F Max(const V4x64F& v0, const V4x64F& v1) {
+ return V4x64F(_mm256_max_pd(v0, v1));
+}
+
+} // namespace HH_TARGET_NAME
+} // namespace highwayhash
+
+#endif // HH_DISABLE_TARGET_SPECIFIC
+#endif // HIGHWAYHASH_VECTOR256_H_
diff --git a/contrib/libs/highwayhash/highwayhash/vector_test.cc b/contrib/libs/highwayhash/highwayhash/vector_test.cc
index a8bdfacac2..d9f02567be 100644
--- a/contrib/libs/highwayhash/highwayhash/vector_test.cc
+++ b/contrib/libs/highwayhash/highwayhash/vector_test.cc
@@ -1,59 +1,59 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <stdio.h>
-
-#ifdef HH_GOOGLETEST
-#include "testing/base/public/gmock.h"
-#include "testing/base/public/gunit.h"
-#endif
-
-#include "highwayhash/instruction_sets.h"
-#include "highwayhash/vector_test_target.h"
-
-namespace highwayhash {
-namespace {
-
-void NotifyFailure(const char* target, const size_t size) {
- const size_t lane_bits = (size & 0xFF) * 8;
- const size_t lane_index = size >> 8;
-#ifdef HH_GOOGLETEST
- EXPECT_TRUE(false) << "VectorTest failed for " << target << " T=" << lane_bits
- << ", lane " << lane_index;
-#else
- printf("VectorTest failed for %10s T=%zu, lane=%zu\n", target, lane_bits,
- lane_index);
-#endif
-}
-
-void RunTests() {
- const TargetBits tested = InstructionSets::RunAll<VectorTest>(&NotifyFailure);
- HH_TARGET_NAME::ForeachTarget(tested, [](const TargetBits target) {
- printf("%10s: done\n", TargetName(target));
- });
-}
-
-#ifdef HH_GOOGLETEST
-TEST(VectorTest, Run) { RunTests(); }
-#endif
-
-} // namespace
-} // namespace highwayhash
-
-#ifndef HH_GOOGLETEST
-int main(int argc, char* argv[]) {
- highwayhash::RunTests();
- return 0;
-}
-#endif
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include <stdio.h>
+
+#ifdef HH_GOOGLETEST
+#include "testing/base/public/gmock.h"
+#include "testing/base/public/gunit.h"
+#endif
+
+#include "highwayhash/instruction_sets.h"
+#include "highwayhash/vector_test_target.h"
+
+namespace highwayhash {
+namespace {
+
+void NotifyFailure(const char* target, const size_t size) {
+ const size_t lane_bits = (size & 0xFF) * 8;
+ const size_t lane_index = size >> 8;
+#ifdef HH_GOOGLETEST
+ EXPECT_TRUE(false) << "VectorTest failed for " << target << " T=" << lane_bits
+ << ", lane " << lane_index;
+#else
+ printf("VectorTest failed for %10s T=%zu, lane=%zu\n", target, lane_bits,
+ lane_index);
+#endif
+}
+
+void RunTests() {
+ const TargetBits tested = InstructionSets::RunAll<VectorTest>(&NotifyFailure);
+ HH_TARGET_NAME::ForeachTarget(tested, [](const TargetBits target) {
+ printf("%10s: done\n", TargetName(target));
+ });
+}
+
+#ifdef HH_GOOGLETEST
+TEST(VectorTest, Run) { RunTests(); }
+#endif
+
+} // namespace
+} // namespace highwayhash
+
+#ifndef HH_GOOGLETEST
+int main(int argc, char* argv[]) {
+ highwayhash::RunTests();
+ return 0;
+}
+#endif
diff --git a/contrib/libs/highwayhash/highwayhash/vector_test_avx2.cc b/contrib/libs/highwayhash/highwayhash/vector_test_avx2.cc
index 86a017f7f5..30ce2c992c 100644
--- a/contrib/libs/highwayhash/highwayhash/vector_test_avx2.cc
+++ b/contrib/libs/highwayhash/highwayhash/vector_test_avx2.cc
@@ -1,19 +1,19 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// WARNING: this is a "restricted" source file; avoid including any headers
-// unless they are also restricted. See arch_specific.h for details.
-
-#define HH_TARGET_NAME AVX2
-#include "highwayhash/vector_test_target.cc"
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// WARNING: this is a "restricted" source file; avoid including any headers
+// unless they are also restricted. See arch_specific.h for details.
+
+#define HH_TARGET_NAME AVX2
+#include "highwayhash/vector_test_target.cc"
diff --git a/contrib/libs/highwayhash/highwayhash/vector_test_portable.cc b/contrib/libs/highwayhash/highwayhash/vector_test_portable.cc
index df23c28070..a742b4be80 100644
--- a/contrib/libs/highwayhash/highwayhash/vector_test_portable.cc
+++ b/contrib/libs/highwayhash/highwayhash/vector_test_portable.cc
@@ -1,19 +1,19 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// WARNING: this is a "restricted" source file; avoid including any headers
-// unless they are also restricted. See arch_specific.h for details.
-
-#define HH_TARGET_NAME Portable
-#include "highwayhash/vector_test_target.cc"
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// WARNING: this is a "restricted" source file; avoid including any headers
+// unless they are also restricted. See arch_specific.h for details.
+
+#define HH_TARGET_NAME Portable
+#include "highwayhash/vector_test_target.cc"
diff --git a/contrib/libs/highwayhash/highwayhash/vector_test_sse41.cc b/contrib/libs/highwayhash/highwayhash/vector_test_sse41.cc
index 4d6fbee2b4..80e11b5d9c 100644
--- a/contrib/libs/highwayhash/highwayhash/vector_test_sse41.cc
+++ b/contrib/libs/highwayhash/highwayhash/vector_test_sse41.cc
@@ -1,19 +1,19 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// WARNING: this is a "restricted" source file; avoid including any headers
-// unless they are also restricted. See arch_specific.h for details.
-
-#define HH_TARGET_NAME SSE41
-#include "highwayhash/vector_test_target.cc"
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// WARNING: this is a "restricted" source file; avoid including any headers
+// unless they are also restricted. See arch_specific.h for details.
+
+#define HH_TARGET_NAME SSE41
+#include "highwayhash/vector_test_target.cc"
diff --git a/contrib/libs/highwayhash/highwayhash/vector_test_target.cc b/contrib/libs/highwayhash/highwayhash/vector_test_target.cc
index 16d6ef1825..f9eed7f59a 100644
--- a/contrib/libs/highwayhash/highwayhash/vector_test_target.cc
+++ b/contrib/libs/highwayhash/highwayhash/vector_test_target.cc
@@ -1,220 +1,220 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// WARNING: this is a "restricted" source file; avoid including any headers
-// unless they are also restricted. See arch_specific.h for details.
-
-#include "highwayhash/vector_test_target.h"
-
-#include "highwayhash/arch_specific.h"
-
-#if HH_TARGET == HH_TARGET_AVX2
-#include "highwayhash/vector256.h"
-#elif HH_TARGET == HH_TARGET_SSE41
-#include "highwayhash/vector128.h"
-#elif HH_TARGET == HH_TARGET_Portable
-#include "highwayhash/scalar.h"
-#else
-#error "Unknown target, add its include here."
-#endif
-
-#ifndef HH_DISABLE_TARGET_SPECIFIC
-namespace highwayhash {
-namespace HH_TARGET_NAME {
-namespace {
-
-#if HH_TARGET == HH_TARGET_AVX2
-template <typename T>
-using V = V256<T>;
-#elif HH_TARGET == HH_TARGET_SSE41
-template <typename T>
-using V = V128<T>;
-#elif HH_TARGET == HH_TARGET_Portable
-template <typename T>
-using V = Scalar<T>;
-#else
-#error "Unknown target, add its vector typedef here."
-#endif
-
-template <class T>
-void NotifyIfUnequal(const V<T>& v, const T expected, const HHNotify notify) {
- T lanes[V<T>::N] HH_ALIGNAS(32);
- Store(v, lanes);
- for (size_t i = 0; i < V<T>::N; ++i) {
- if (lanes[i] != expected) {
- notify(TargetName(HH_TARGET), (i << 8) | sizeof(T));
- }
- }
-}
-
-template <class T>
-void NotifyIfUnequal(const T& t, const T expected, const HHNotify notify) {
- if (t != expected) {
- notify(TargetName(HH_TARGET), sizeof(T));
- }
-}
-
-// MaxValue<T>()() replaces std::numeric_limits<T>::max().
-template <typename T>
-struct MaxValue;
-template <>
-struct MaxValue<uint8_t> {
- constexpr uint8_t operator()() const { return 0xFFu; }
-};
-template <>
-struct MaxValue<uint16_t> {
- constexpr uint16_t operator()() const { return 0xFFFFu; }
-};
-template <>
-struct MaxValue<uint32_t> {
- constexpr uint32_t operator()() const { return 0xFFFFFFFFu; }
-};
-template <>
-struct MaxValue<uint64_t> {
- constexpr uint64_t operator()() const { return 0xFFFFFFFFFFFFFFFFull; }
-};
-
-template <typename T>
-void TestMembersAndBinaryOperatorsExceptShifts(const HHNotify notify) {
- // uninitialized
- V<T> v;
-
- // broadcast
- const V<T> v2(2);
- NotifyIfUnequal(v2, T(2), notify);
-
- // assign from V
- const V<T> v3(3);
- V<T> v3b;
- v3b = v3;
- NotifyIfUnequal(v3b, T(3), notify);
-
- // equal
- const V<T> veq(v3 == v3b);
- NotifyIfUnequal(veq, MaxValue<T>()(), notify);
-
- // Copying to, and constructing from intrinsic yields same result.
- typename V<T>::Intrinsic nv2 = v2;
- V<T> v2b(nv2);
- NotifyIfUnequal(v2b, T(2), notify);
-
- // .. assignment also works.
- V<T> v2c;
- v2c = nv2;
- NotifyIfUnequal(v2c, T(2), notify);
-
- const V<T> add = v2 + v3;
- NotifyIfUnequal(add, T(5), notify);
-
- const V<T> sub = v3 - v2;
- NotifyIfUnequal(sub, T(1), notify);
-
- const V<T> vand = v3 & v2;
- NotifyIfUnequal(vand, T(2), notify);
-
- const V<T> vor = add | v2;
- NotifyIfUnequal(vor, T(7), notify);
-
- const V<T> vxor = v3 ^ v2;
- NotifyIfUnequal(vxor, T(1), notify);
-}
-
-// SSE does not allow shifting uint8_t, so instantiate for all other types.
-template <class T>
-void TestShifts(const HHNotify notify) {
- const V<T> v1(1);
- // Shifting out of right side => zero
- NotifyIfUnequal(v1 >> 1, T(0), notify);
-
- // Simple left shift
- NotifyIfUnequal(v1 << 1, T(2), notify);
-
- // Sign bit
- constexpr int kSign = (sizeof(T) * 8) - 1;
- constexpr T max = MaxValue<T>()();
- constexpr T sign = ~(max >> 1);
- NotifyIfUnequal(v1 << kSign, sign, notify);
-
- // Shifting out of left side => zero
- NotifyIfUnequal(v1 << (kSign + 1), T(0), notify);
-}
-
-template <class T>
-void TestLoadStore(const HHNotify notify) {
- const size_t n = V<T>::N;
- T lanes[2 * n] HH_ALIGNAS(32);
- for (size_t i = 0; i < n; ++i) {
- lanes[i] = 4;
- }
- for (size_t i = n; i < 2 * n; ++i) {
- lanes[i] = 5;
- }
- // Aligned load
- const V<T> v4 = Load<V<T>>(lanes);
- NotifyIfUnequal(v4, T(4), notify);
-
- // Aligned store
- T lanes4[n] HH_ALIGNAS(32);
- Store(v4, lanes4);
- NotifyIfUnequal(Load<V<T>>(lanes4), T(4), notify);
-
- // Unaligned load
- const V<T> vu = LoadUnaligned<V<T>>(lanes + 1);
- Store(vu, lanes4);
- NotifyIfUnequal(lanes4[n - 1], T(5), notify);
- for (size_t i = 1; i < n - 1; ++i) {
- NotifyIfUnequal(lanes4[i], T(4), notify);
- }
-
- // Unaligned store
- StoreUnaligned(v4, lanes + n / 2);
- size_t i;
- for (i = 0; i < 3 * n / 2; ++i) {
- NotifyIfUnequal(lanes[i], T(4), notify);
- }
- // Subsequent values remain unchanged.
- for (; i < 2 * n; ++i) {
- NotifyIfUnequal(lanes[i], T(5), notify);
- }
-}
-
-void TestAll(const HHNotify notify) {
- TestMembersAndBinaryOperatorsExceptShifts<uint8_t>(notify);
- TestMembersAndBinaryOperatorsExceptShifts<uint16_t>(notify);
- TestMembersAndBinaryOperatorsExceptShifts<uint32_t>(notify);
- TestMembersAndBinaryOperatorsExceptShifts<uint64_t>(notify);
-
- TestShifts<uint16_t>(notify);
- TestShifts<uint32_t>(notify);
- TestShifts<uint64_t>(notify);
-
- TestLoadStore<uint8_t>(notify);
- TestLoadStore<uint16_t>(notify);
- TestLoadStore<uint32_t>(notify);
- TestLoadStore<uint64_t>(notify);
-}
-
-} // namespace
-} // namespace HH_TARGET_NAME
-
-template <TargetBits Target>
-void VectorTest<Target>::operator()(const HHNotify notify) const {
- HH_TARGET_NAME::TestAll(notify);
-}
-
-// Instantiate for the current target.
-template struct VectorTest<HH_TARGET>;
-
-} // namespace highwayhash
-#endif // HH_DISABLE_TARGET_SPECIFIC
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// WARNING: this is a "restricted" source file; avoid including any headers
+// unless they are also restricted. See arch_specific.h for details.
+
+#include "highwayhash/vector_test_target.h"
+
+#include "highwayhash/arch_specific.h"
+
+#if HH_TARGET == HH_TARGET_AVX2
+#include "highwayhash/vector256.h"
+#elif HH_TARGET == HH_TARGET_SSE41
+#include "highwayhash/vector128.h"
+#elif HH_TARGET == HH_TARGET_Portable
+#include "highwayhash/scalar.h"
+#else
+#error "Unknown target, add its include here."
+#endif
+
+#ifndef HH_DISABLE_TARGET_SPECIFIC
+namespace highwayhash {
+namespace HH_TARGET_NAME {
+namespace {
+
+#if HH_TARGET == HH_TARGET_AVX2
+template <typename T>
+using V = V256<T>;
+#elif HH_TARGET == HH_TARGET_SSE41
+template <typename T>
+using V = V128<T>;
+#elif HH_TARGET == HH_TARGET_Portable
+template <typename T>
+using V = Scalar<T>;
+#else
+#error "Unknown target, add its vector typedef here."
+#endif
+
+template <class T>
+void NotifyIfUnequal(const V<T>& v, const T expected, const HHNotify notify) {
+ T lanes[V<T>::N] HH_ALIGNAS(32);
+ Store(v, lanes);
+ for (size_t i = 0; i < V<T>::N; ++i) {
+ if (lanes[i] != expected) {
+ notify(TargetName(HH_TARGET), (i << 8) | sizeof(T));
+ }
+ }
+}
+
+template <class T>
+void NotifyIfUnequal(const T& t, const T expected, const HHNotify notify) {
+ if (t != expected) {
+ notify(TargetName(HH_TARGET), sizeof(T));
+ }
+}
+
+// MaxValue<T>()() replaces std::numeric_limits<T>::max().
+template <typename T>
+struct MaxValue;
+template <>
+struct MaxValue<uint8_t> {
+ constexpr uint8_t operator()() const { return 0xFFu; }
+};
+template <>
+struct MaxValue<uint16_t> {
+ constexpr uint16_t operator()() const { return 0xFFFFu; }
+};
+template <>
+struct MaxValue<uint32_t> {
+ constexpr uint32_t operator()() const { return 0xFFFFFFFFu; }
+};
+template <>
+struct MaxValue<uint64_t> {
+ constexpr uint64_t operator()() const { return 0xFFFFFFFFFFFFFFFFull; }
+};
+
+template <typename T>
+void TestMembersAndBinaryOperatorsExceptShifts(const HHNotify notify) {
+ // uninitialized
+ V<T> v;
+
+ // broadcast
+ const V<T> v2(2);
+ NotifyIfUnequal(v2, T(2), notify);
+
+ // assign from V
+ const V<T> v3(3);
+ V<T> v3b;
+ v3b = v3;
+ NotifyIfUnequal(v3b, T(3), notify);
+
+ // equal
+ const V<T> veq(v3 == v3b);
+ NotifyIfUnequal(veq, MaxValue<T>()(), notify);
+
+ // Copying to, and constructing from intrinsic yields same result.
+ typename V<T>::Intrinsic nv2 = v2;
+ V<T> v2b(nv2);
+ NotifyIfUnequal(v2b, T(2), notify);
+
+ // .. assignment also works.
+ V<T> v2c;
+ v2c = nv2;
+ NotifyIfUnequal(v2c, T(2), notify);
+
+ const V<T> add = v2 + v3;
+ NotifyIfUnequal(add, T(5), notify);
+
+ const V<T> sub = v3 - v2;
+ NotifyIfUnequal(sub, T(1), notify);
+
+ const V<T> vand = v3 & v2;
+ NotifyIfUnequal(vand, T(2), notify);
+
+ const V<T> vor = add | v2;
+ NotifyIfUnequal(vor, T(7), notify);
+
+ const V<T> vxor = v3 ^ v2;
+ NotifyIfUnequal(vxor, T(1), notify);
+}
+
+// SSE does not allow shifting uint8_t, so instantiate for all other types.
+template <class T>
+void TestShifts(const HHNotify notify) {
+ const V<T> v1(1);
+ // Shifting out of right side => zero
+ NotifyIfUnequal(v1 >> 1, T(0), notify);
+
+ // Simple left shift
+ NotifyIfUnequal(v1 << 1, T(2), notify);
+
+ // Sign bit
+ constexpr int kSign = (sizeof(T) * 8) - 1;
+ constexpr T max = MaxValue<T>()();
+ constexpr T sign = ~(max >> 1);
+ NotifyIfUnequal(v1 << kSign, sign, notify);
+
+ // Shifting out of left side => zero
+ NotifyIfUnequal(v1 << (kSign + 1), T(0), notify);
+}
+
+template <class T>
+void TestLoadStore(const HHNotify notify) {
+ const size_t n = V<T>::N;
+ T lanes[2 * n] HH_ALIGNAS(32);
+ for (size_t i = 0; i < n; ++i) {
+ lanes[i] = 4;
+ }
+ for (size_t i = n; i < 2 * n; ++i) {
+ lanes[i] = 5;
+ }
+ // Aligned load
+ const V<T> v4 = Load<V<T>>(lanes);
+ NotifyIfUnequal(v4, T(4), notify);
+
+ // Aligned store
+ T lanes4[n] HH_ALIGNAS(32);
+ Store(v4, lanes4);
+ NotifyIfUnequal(Load<V<T>>(lanes4), T(4), notify);
+
+ // Unaligned load
+ const V<T> vu = LoadUnaligned<V<T>>(lanes + 1);
+ Store(vu, lanes4);
+ NotifyIfUnequal(lanes4[n - 1], T(5), notify);
+ for (size_t i = 1; i < n - 1; ++i) {
+ NotifyIfUnequal(lanes4[i], T(4), notify);
+ }
+
+ // Unaligned store
+ StoreUnaligned(v4, lanes + n / 2);
+ size_t i;
+ for (i = 0; i < 3 * n / 2; ++i) {
+ NotifyIfUnequal(lanes[i], T(4), notify);
+ }
+ // Subsequent values remain unchanged.
+ for (; i < 2 * n; ++i) {
+ NotifyIfUnequal(lanes[i], T(5), notify);
+ }
+}
+
+void TestAll(const HHNotify notify) {
+ TestMembersAndBinaryOperatorsExceptShifts<uint8_t>(notify);
+ TestMembersAndBinaryOperatorsExceptShifts<uint16_t>(notify);
+ TestMembersAndBinaryOperatorsExceptShifts<uint32_t>(notify);
+ TestMembersAndBinaryOperatorsExceptShifts<uint64_t>(notify);
+
+ TestShifts<uint16_t>(notify);
+ TestShifts<uint32_t>(notify);
+ TestShifts<uint64_t>(notify);
+
+ TestLoadStore<uint8_t>(notify);
+ TestLoadStore<uint16_t>(notify);
+ TestLoadStore<uint32_t>(notify);
+ TestLoadStore<uint64_t>(notify);
+}
+
+} // namespace
+} // namespace HH_TARGET_NAME
+
+template <TargetBits Target>
+void VectorTest<Target>::operator()(const HHNotify notify) const {
+ HH_TARGET_NAME::TestAll(notify);
+}
+
+// Instantiate for the current target.
+template struct VectorTest<HH_TARGET>;
+
+} // namespace highwayhash
+#endif // HH_DISABLE_TARGET_SPECIFIC
diff --git a/contrib/libs/highwayhash/highwayhash/vector_test_target.h b/contrib/libs/highwayhash/highwayhash/vector_test_target.h
index c26f876912..f1ff6382dc 100644
--- a/contrib/libs/highwayhash/highwayhash/vector_test_target.h
+++ b/contrib/libs/highwayhash/highwayhash/vector_test_target.h
@@ -1,37 +1,37 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef HIGHWAYHASH_VECTOR_TEST_TARGET_H_
-#define HIGHWAYHASH_VECTOR_TEST_TARGET_H_
-
-// WARNING: this is a "restricted" header because it is included from
-// translation units compiled with different flags. This header and its
-// dependencies must not define any function unless it is static inline and/or
-// within namespace HH_TARGET_NAME. See arch_specific.h for details.
-
-#include "highwayhash/arch_specific.h"
-#include "highwayhash/hh_types.h"
-
-namespace highwayhash {
-
-// Usage: InstructionSets::RunAll<VectorTest>(). Calls "notify" for each test
-// failure.
-template <TargetBits Target>
-struct VectorTest {
- void operator()(const HHNotify notify) const;
-};
-
-} // namespace highwayhash
-
-#endif // HIGHWAYHASH_VECTOR_TEST_TARGET_H_
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef HIGHWAYHASH_VECTOR_TEST_TARGET_H_
+#define HIGHWAYHASH_VECTOR_TEST_TARGET_H_
+
+// WARNING: this is a "restricted" header because it is included from
+// translation units compiled with different flags. This header and its
+// dependencies must not define any function unless it is static inline and/or
+// within namespace HH_TARGET_NAME. See arch_specific.h for details.
+
+#include "highwayhash/arch_specific.h"
+#include "highwayhash/hh_types.h"
+
+namespace highwayhash {
+
+// Usage: InstructionSets::RunAll<VectorTest>(). Calls "notify" for each test
+// failure.
+template <TargetBits Target>
+struct VectorTest {
+ void operator()(const HHNotify notify) const;
+};
+
+} // namespace highwayhash
+
+#endif // HIGHWAYHASH_VECTOR_TEST_TARGET_H_
diff --git a/contrib/libs/highwayhash/ya.make b/contrib/libs/highwayhash/ya.make
index aec086bdcb..4f6dad6193 100644
--- a/contrib/libs/highwayhash/ya.make
+++ b/contrib/libs/highwayhash/ya.make
@@ -1,46 +1,46 @@
-LIBRARY()
-
-LICENSE(Apache-2.0)
-
+LIBRARY()
+
+LICENSE(Apache-2.0)
+
LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
VERSION(2017-05-08-2b666ae078292b01024453d01480f3b362a2a012)
OWNER(somov)
-
-NO_COMPILER_WARNINGS()
-
+
+NO_COMPILER_WARNINGS()
+
ADDINCL(GLOBAL contrib/libs/highwayhash)
-
-SRCDIR(contrib/libs/highwayhash/highwayhash)
-
-SRCS(
- # Dispatcher
- arch_specific.cc
- instruction_sets.cc
- nanobenchmark.cc
- os_specific.cc
- # SipHash
- sip_hash.cc
- scalar_sip_tree_hash.cc
- # sip_tree_hash.cc with AVX2 if available
- # HighwayHash
- hh_portable.cc
- # hh_avx2.cc with AVX2
- # hh_sse41.cc with SSE4.1
- # Library
- c_bindings.cc
-)
-
-IF (ARCH_X86_64)
- PEERDIR(
- contrib/libs/highwayhash/arch/avx2
- contrib/libs/highwayhash/arch/sse41
- )
-ELSE()
- SRCS(
- sip_tree_hash.cc
- )
-ENDIF()
-
-END()
+
+SRCDIR(contrib/libs/highwayhash/highwayhash)
+
+SRCS(
+ # Dispatcher
+ arch_specific.cc
+ instruction_sets.cc
+ nanobenchmark.cc
+ os_specific.cc
+ # SipHash
+ sip_hash.cc
+ scalar_sip_tree_hash.cc
+ # sip_tree_hash.cc with AVX2 if available
+ # HighwayHash
+ hh_portable.cc
+ # hh_avx2.cc with AVX2
+ # hh_sse41.cc with SSE4.1
+ # Library
+ c_bindings.cc
+)
+
+IF (ARCH_X86_64)
+ PEERDIR(
+ contrib/libs/highwayhash/arch/avx2
+ contrib/libs/highwayhash/arch/sse41
+ )
+ELSE()
+ SRCS(
+ sip_tree_hash.cc
+ )
+ENDIF()
+
+END()
diff --git a/contrib/libs/jemalloc/reg_zone.cpp b/contrib/libs/jemalloc/reg_zone.cpp
index 8503cd48f7..6a7b9d69e1 100644
--- a/contrib/libs/jemalloc/reg_zone.cpp
+++ b/contrib/libs/jemalloc/reg_zone.cpp
@@ -1,33 +1,33 @@
-#include <util/system/compiler.h>
-
+#include <util/system/compiler.h>
+
extern "C" void je_zone_register();
-static volatile bool initialized = false;
-
+static volatile bool initialized = false;
+
namespace {
- struct TInit {
+ struct TInit {
inline TInit() {
- if (!initialized) {
+ if (!initialized) {
je_zone_register();
- initialized = true;
- }
+ initialized = true;
+ }
}
- };
-
+ };
+
void zone_register() {
- static TInit init;
- }
+ static TInit init;
+ }
}
-
-extern "C" {
+
+extern "C" {
void je_assure_zone_register() {
- if (Y_LIKELY(initialized)) {
- return;
- }
-
- // Even if we have read false "initialized", real init will be syncronized once by
- // Meyers singleton in <anonymous>::register_zone(). We could do a few
- // redundant "initialized" and singleton creation checks, but no more than that.
+ if (Y_LIKELY(initialized)) {
+ return;
+ }
+
+ // Even if we have read false "initialized", real init will be syncronized once by
+ // Meyers singleton in <anonymous>::register_zone(). We could do a few
+ // redundant "initialized" and singleton creation checks, but no more than that.
zone_register();
- }
-}
+ }
+}
diff --git a/contrib/libs/jemalloc/src/jemalloc.c b/contrib/libs/jemalloc/src/jemalloc.c
index 5dd1f3ac46..63ff26b656 100644
--- a/contrib/libs/jemalloc/src/jemalloc.c
+++ b/contrib/libs/jemalloc/src/jemalloc.c
@@ -1894,7 +1894,7 @@ struct dynamic_opts_s {
unsigned tcache_ind;
unsigned arena_ind;
};
-
+
JEMALLOC_ALWAYS_INLINE void
dynamic_opts_init(dynamic_opts_t *dynamic_opts) {
dynamic_opts->result = NULL;
@@ -1906,7 +1906,7 @@ dynamic_opts_init(dynamic_opts_t *dynamic_opts) {
dynamic_opts->tcache_ind = TCACHE_IND_AUTOMATIC;
dynamic_opts->arena_ind = ARENA_IND_AUTOMATIC;
}
-
+
/* ind is ignored if dopts->alignment > 0. */
JEMALLOC_ALWAYS_INLINE void *
imalloc_no_sample(static_opts_t *sopts, dynamic_opts_t *dopts, tsd_t *tsd,
diff --git a/contrib/libs/jwt-cpp/picojson.h b/contrib/libs/jwt-cpp/picojson.h
index f462e67531..c2321e9728 100644
--- a/contrib/libs/jwt-cpp/picojson.h
+++ b/contrib/libs/jwt-cpp/picojson.h
@@ -241,7 +241,7 @@ inline value::value(int64_t i) : type_(int64_type), u_() {
inline value::value(double n) : type_(number_type), u_() {
if (
-#if defined(_MSC_VER) && !defined(__clang__)
+#if defined(_MSC_VER) && !defined(__clang__)
!_finite(n)
#elif __cplusplus >= 201103L
std::isnan(n) || std::isinf(n)
diff --git a/contrib/libs/libaio/COPYING b/contrib/libs/libaio/COPYING
index 3c3a852d96..c4792dd27a 100644
--- a/contrib/libs/libaio/COPYING
+++ b/contrib/libs/libaio/COPYING
@@ -1,515 +1,515 @@
-
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL. It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
- This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it. You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations
-below.
-
- When we speak of free software, we are referring to freedom of use,
-not price. Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
- To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights. These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
- To protect each distributor, we want to make it very clear that
-there is no warranty for the free library. Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-^L
- Finally, software patents pose a constant threat to the existence of
-any free program. We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder. Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
- Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License. This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License. We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
- When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library. The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom. The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
- We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License. It also provides other free software developers Less
-of an advantage over competing non-free programs. These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries. However, the Lesser license provides advantages in certain
-special circumstances.
-
- For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it
-becomes
-a de-facto standard. To achieve this, non-free programs must be
-allowed to use the library. A more frequent case is that a free
-library does the same job as widely used non-free libraries. In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
- In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software. For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
- Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-^L
- GNU LESSER GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control
-compilation
-and installation of the library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
- You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
- 2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-^L
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
- If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-^L
- 6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (1) uses at run time a
- copy of the library already present on the user's computer system,
- rather than copying library functions into the executable, and (2)
- will operate properly with a modified version of the library, if
- the user installs one, as long as the modified version is
- interface-compatible with the version that the work was made with.
-
- c) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- d) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- e) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-^L
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License. However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
- 9. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-^L
- 11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply, and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License
-may add an explicit geographical distribution limitation excluding those
-countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation. If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-^L
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission. For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this. Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
- NO WARRANTY
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
- END OF TERMS AND CONDITIONS
-^L
- How to Apply These Terms to Your New Libraries
-
- If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change. You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms
-of the ordinary General Public License).
-
- To apply these terms, attach the following notices to the library.
-It is safest to attach them to the start of each source file to most
-effectively convey the exclusion of warranty; and each file should
-have at least the "copyright" line and a pointer to where the full
-notice is found.
-
-
- <one line to give the library's name and a brief idea of what it
-does.>
- Copyright (C) <year> <name of author>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-Also add information on how to contact you by electronic and paper
-mail.
-
-You should also get your employer (if you work as a programmer) or
-your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the
- library `Frob' (a library for tweaking knobs) written by James
-Random Hacker.
-
- <signature of Ty Coon>, 1 April 1990
- Ty Coon, President of Vice
-
-That's all there is to it!
-
-
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations
+below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+^L
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it
+becomes
+a de-facto standard. To achieve this, non-free programs must be
+allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+^L
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control
+compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+^L
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+^L
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+^L
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+^L
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply, and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License
+may add an explicit geographical distribution limitation excluding those
+countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+^L
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+^L
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms
+of the ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library.
+It is safest to attach them to the start of each source file to most
+effectively convey the exclusion of warranty; and each file should
+have at least the "copyright" line and a pointer to where the full
+notice is found.
+
+
+ <one line to give the library's name and a brief idea of what it
+does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Also add information on how to contact you by electronic and paper
+mail.
+
+You should also get your employer (if you work as a programmer) or
+your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James
+Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/contrib/libs/libaio/ya.make b/contrib/libs/libaio/ya.make
index 95b6fdf3bd..3eb09b549b 100644
--- a/contrib/libs/libaio/ya.make
+++ b/contrib/libs/libaio/ya.make
@@ -1,8 +1,8 @@
LIBRARY()
-# git repository: https://pagure.io/libaio.git
-# revision: 5a546a834c36070648158d19dd564762d59f8eb8
-
+# git repository: https://pagure.io/libaio.git
+# revision: 5a546a834c36070648158d19dd564762d59f8eb8
+
LICENSE(Service-Dll-Harness)
WITHOUT_LICENSE_TEXTS()
diff --git a/contrib/libs/libc_compat/ubuntu_14/README.md b/contrib/libs/libc_compat/ubuntu_14/README.md
index 63dd8a22d9..f7b17a40cc 100644
--- a/contrib/libs/libc_compat/ubuntu_14/README.md
+++ b/contrib/libs/libc_compat/ubuntu_14/README.md
@@ -1,91 +1,91 @@
-## Общие соображения
-
-В библиотеку добавлены реализации символов, появившихся в `libc.so.6` Ubuntu
-14.04 с момента Ubuntu 12.04.
-
-Если какой-либо объектный файл ссылается на один из таких символов, то при
-компоновке этот символ будет взят из нашей библиотеки. В противном случае,
-компоновщик сослался бы на такой символ из `libc.so.6`, добавив к исполняемому
-файлу зависимость от новой версии динамической библиотеки (`GLIBC_2.16`,
-`GLIBC_2.17` или `GLIBC_2.18`). Такой исполняемый файл не может быть запущен на
-Ubuntu 12.04, даже если ни один из новых символов не используется в runtime.
-
-На Ubuntu 14.04 или более новых, в случае если процесс загружает `libc.so.6`, мы
-будем в runtime иметь две реализации символов, нашу и libc. Но все добавленные
-функции не имеют какого-либо состояния и никакими деталями внутренней реализации
-не связаны с другими. Нет разницы, какую из реализаций использовать, и даже
-попеременное использование различных реализаций в одном и том же контексте не
-должно приводить к некорректной работе.
-
-В какой-то момент этот слой совместимости будет отключен: https://st.yandex-team.ru/DEVTOOLS-7436
-
-### Разделяемая реализация
-
-Была идея оформить новые реализации так, чтобы в случае их наличия и в
-загруженной libc динамический компоновщик выбирал для всех ссылок одну
-реализацию.
-
-По всей видимости, для этого требуется собирать исполняемый файл как PIE. Только
-в этом случае для наших реализаций будут сгенерированы дополнительные PLT
-прослойки и вызовы наших реализаций будут проходить через них.
-
-Но в этом случае вообще все вызовы будут происходить таким образом и это
-повлияет на производительность. Ухудшения производительности, наверное, можно
-избежать, явно указав, какие символы в исполняемом файле должны быть публичными,
-но сейчас нет способа сделать это в одном месте, учитывая, что в некоторых
-случаях этот список должен дополняться.
-
-## `getauxval` и `secure_getenv`
-
-Функция `getauxval` требует загрузки и хранения «Auxiliary Vector» (см.
-[здесь](https://refspecs.linuxfoundation.org/LSB_1.3.0/IA64/spec/auxiliaryvector.html)).
-
-Эти данные доступны в момент запуска процесса. libc из новых Ubuntu сохраняет
-эти данные и предоставляет реализацию `getauxval`. В этом случае наша реализация
-перенаправляет вызовы `getauxval` в libc, получив при старте исполняемого файла
-соответствующий указатель.
-
-Если реализация libc недоступна (на старых Ubuntu или если libc не загружена),
-то эти данные можно получить, прочитав `/proc/self/auxv`. Это также делается
-один раз при старте.
-
-В обоих случаях, статически инициализируется синглтон `NUbuntuCompat::TGlibc`,
-который производит эти действия в конструкторе.
-
-`secure_getenv` использует одно из значений `getauxval`, поэтому к нему всё это
-также относится.
-
-Каждый метод новой libc реализован в отдельном объектом файле. `TGlibc` также
-находится в отдельном файле, и ссылки на неё стоят только в местах использования.
-Если при компоновке не понадобились ни `getauxval`, ни `secure_getenv`, то
-объектный файл с `TGlibc` тоже не будет выбран компоновщиком, и в этом случае
-никакой лишней статической инициализации выполняться не будет.
-
-## Патч libc.so
-
-Чтобы иметь возможность использовать `getauxval` (точнее его реализацию
-`__getauxval`) из новой libc, если таковая уже используется процессом,
-библиотека совместимости объявляет этот символ у себя как внешний и слабый. При
-загрузке динамический компоновщик устанавливает значение этого символа из libc
-или `nullptr`, если его там нет. Наша реализация `getauxval` проверяет
-доступность реализации libc, просто сравнивая указатель с `nullptr`.
-
-В Аркадии также есть код, который подобным образом работает с символом
-`__cxa_thread_atexit_impl`.
-
-Однако, если компоновать такую программу с использованием новой libc, то к таким
-символам и самой программе будет приписано требование соответствующей (новой)
-версии libc. Чтобы этого не произошло, при сборке с этой библиотекой
-совместимости используется патченный вариант `libc.so.6`, где у таких символов
-удалена версия.
-
-Также, файлы, проверяющие, что доступна реализация из libc, должны быть собраны
-как PIC. В противном случае вместо значения, заполненного динамическим
-компоновщиком, компилятор ещё на стадии компиляции использует `nullptr` и
-проверка никогда не срабатывает.
-
-## Упоминания
-
-Идея о возможности добавить слой совместимости была взята из ClickHouse.
-* [https://clickhouse.tech/](https://clickhouse.tech/)
-* [https://wiki.yandex-team.ru/clickhouse/](https://wiki.yandex-team.ru/clickhouse/)
+## Общие соображения
+
+В библиотеку добавлены реализации символов, появившихся в `libc.so.6` Ubuntu
+14.04 с момента Ubuntu 12.04.
+
+Если какой-либо объектный файл ссылается на один из таких символов, то при
+компоновке этот символ будет взят из нашей библиотеки. В противном случае,
+компоновщик сослался бы на такой символ из `libc.so.6`, добавив к исполняемому
+файлу зависимость от новой версии динамической библиотеки (`GLIBC_2.16`,
+`GLIBC_2.17` или `GLIBC_2.18`). Такой исполняемый файл не может быть запущен на
+Ubuntu 12.04, даже если ни один из новых символов не используется в runtime.
+
+На Ubuntu 14.04 или более новых, в случае если процесс загружает `libc.so.6`, мы
+будем в runtime иметь две реализации символов, нашу и libc. Но все добавленные
+функции не имеют какого-либо состояния и никакими деталями внутренней реализации
+не связаны с другими. Нет разницы, какую из реализаций использовать, и даже
+попеременное использование различных реализаций в одном и том же контексте не
+должно приводить к некорректной работе.
+
+В какой-то момент этот слой совместимости будет отключен: https://st.yandex-team.ru/DEVTOOLS-7436
+
+### Разделяемая реализация
+
+Была идея оформить новые реализации так, чтобы в случае их наличия и в
+загруженной libc динамический компоновщик выбирал для всех ссылок одну
+реализацию.
+
+По всей видимости, для этого требуется собирать исполняемый файл как PIE. Только
+в этом случае для наших реализаций будут сгенерированы дополнительные PLT
+прослойки и вызовы наших реализаций будут проходить через них.
+
+Но в этом случае вообще все вызовы будут происходить таким образом и это
+повлияет на производительность. Ухудшения производительности, наверное, можно
+избежать, явно указав, какие символы в исполняемом файле должны быть публичными,
+но сейчас нет способа сделать это в одном месте, учитывая, что в некоторых
+случаях этот список должен дополняться.
+
+## `getauxval` и `secure_getenv`
+
+Функция `getauxval` требует загрузки и хранения «Auxiliary Vector» (см.
+[здесь](https://refspecs.linuxfoundation.org/LSB_1.3.0/IA64/spec/auxiliaryvector.html)).
+
+Эти данные доступны в момент запуска процесса. libc из новых Ubuntu сохраняет
+эти данные и предоставляет реализацию `getauxval`. В этом случае наша реализация
+перенаправляет вызовы `getauxval` в libc, получив при старте исполняемого файла
+соответствующий указатель.
+
+Если реализация libc недоступна (на старых Ubuntu или если libc не загружена),
+то эти данные можно получить, прочитав `/proc/self/auxv`. Это также делается
+один раз при старте.
+
+В обоих случаях, статически инициализируется синглтон `NUbuntuCompat::TGlibc`,
+который производит эти действия в конструкторе.
+
+`secure_getenv` использует одно из значений `getauxval`, поэтому к нему всё это
+также относится.
+
+Каждый метод новой libc реализован в отдельном объектом файле. `TGlibc` также
+находится в отдельном файле, и ссылки на неё стоят только в местах использования.
+Если при компоновке не понадобились ни `getauxval`, ни `secure_getenv`, то
+объектный файл с `TGlibc` тоже не будет выбран компоновщиком, и в этом случае
+никакой лишней статической инициализации выполняться не будет.
+
+## Патч libc.so
+
+Чтобы иметь возможность использовать `getauxval` (точнее его реализацию
+`__getauxval`) из новой libc, если таковая уже используется процессом,
+библиотека совместимости объявляет этот символ у себя как внешний и слабый. При
+загрузке динамический компоновщик устанавливает значение этого символа из libc
+или `nullptr`, если его там нет. Наша реализация `getauxval` проверяет
+доступность реализации libc, просто сравнивая указатель с `nullptr`.
+
+В Аркадии также есть код, который подобным образом работает с символом
+`__cxa_thread_atexit_impl`.
+
+Однако, если компоновать такую программу с использованием новой libc, то к таким
+символам и самой программе будет приписано требование соответствующей (новой)
+версии libc. Чтобы этого не произошло, при сборке с этой библиотекой
+совместимости используется патченный вариант `libc.so.6`, где у таких символов
+удалена версия.
+
+Также, файлы, проверяющие, что доступна реализация из libc, должны быть собраны
+как PIC. В противном случае вместо значения, заполненного динамическим
+компоновщиком, компилятор ещё на стадии компиляции использует `nullptr` и
+проверка никогда не срабатывает.
+
+## Упоминания
+
+Идея о возможности добавить слой совместимости была взята из ClickHouse.
+* [https://clickhouse.tech/](https://clickhouse.tech/)
+* [https://wiki.yandex-team.ru/clickhouse/](https://wiki.yandex-team.ru/clickhouse/)
diff --git a/contrib/libs/libc_compat/ubuntu_14/aligned_alloc.c b/contrib/libs/libc_compat/ubuntu_14/aligned_alloc.c
index 880babd32a..c4a1378624 100644
--- a/contrib/libs/libc_compat/ubuntu_14/aligned_alloc.c
+++ b/contrib/libs/libc_compat/ubuntu_14/aligned_alloc.c
@@ -1,6 +1,6 @@
-#include <malloc.h>
-#include <stdlib.h>
-
-__attribute__((weak)) void* aligned_alloc(size_t alignment, size_t size) {
- return memalign(alignment, size);
-}
+#include <malloc.h>
+#include <stdlib.h>
+
+__attribute__((weak)) void* aligned_alloc(size_t alignment, size_t size) {
+ return memalign(alignment, size);
+}
diff --git a/contrib/libs/libc_compat/ubuntu_14/c16rtomb.c b/contrib/libs/libc_compat/ubuntu_14/c16rtomb.c
index 18bc92c36c..39ca3758fa 100644
--- a/contrib/libs/libc_compat/ubuntu_14/c16rtomb.c
+++ b/contrib/libs/libc_compat/ubuntu_14/c16rtomb.c
@@ -1,35 +1,35 @@
-#include <uchar.h>
-#include <errno.h>
-#include <wchar.h>
-
-size_t c16rtomb(char *restrict s, char16_t c16, mbstate_t *restrict ps)
-{
- static unsigned internal_state;
- if (!ps) ps = (void *)&internal_state;
- unsigned *x = (unsigned *)ps;
- wchar_t wc;
-
- if (!s) {
- if (*x) goto ilseq;
- return 1;
- }
-
- if (!*x && c16 - 0xd800u < 0x400) {
- *x = c16 - 0xd7c0 << 10;
- return 0;
- }
-
- if (*x) {
- if (c16 - 0xdc00u >= 0x400) goto ilseq;
- else wc = *x + c16 - 0xdc00;
- *x = 0;
- } else {
- wc = c16;
- }
- return wcrtomb(s, wc, 0);
-
-ilseq:
- *x = 0;
- errno = EILSEQ;
- return -1;
-}
+#include <uchar.h>
+#include <errno.h>
+#include <wchar.h>
+
+size_t c16rtomb(char *restrict s, char16_t c16, mbstate_t *restrict ps)
+{
+ static unsigned internal_state;
+ if (!ps) ps = (void *)&internal_state;
+ unsigned *x = (unsigned *)ps;
+ wchar_t wc;
+
+ if (!s) {
+ if (*x) goto ilseq;
+ return 1;
+ }
+
+ if (!*x && c16 - 0xd800u < 0x400) {
+ *x = c16 - 0xd7c0 << 10;
+ return 0;
+ }
+
+ if (*x) {
+ if (c16 - 0xdc00u >= 0x400) goto ilseq;
+ else wc = *x + c16 - 0xdc00;
+ *x = 0;
+ } else {
+ wc = c16;
+ }
+ return wcrtomb(s, wc, 0);
+
+ilseq:
+ *x = 0;
+ errno = EILSEQ;
+ return -1;
+}
diff --git a/contrib/libs/libc_compat/ubuntu_14/c32rtomb.c b/contrib/libs/libc_compat/ubuntu_14/c32rtomb.c
index 9fccc0fafd..67851328e8 100644
--- a/contrib/libs/libc_compat/ubuntu_14/c32rtomb.c
+++ b/contrib/libs/libc_compat/ubuntu_14/c32rtomb.c
@@ -1,7 +1,7 @@
-#include <uchar.h>
-#include <wchar.h>
-
-size_t c32rtomb(char *restrict s, char32_t c32, mbstate_t *restrict ps)
-{
- return wcrtomb(s, c32, ps);
-}
+#include <uchar.h>
+#include <wchar.h>
+
+size_t c32rtomb(char *restrict s, char32_t c32, mbstate_t *restrict ps)
+{
+ return wcrtomb(s, c32, ps);
+}
diff --git a/contrib/libs/libc_compat/ubuntu_14/features.h b/contrib/libs/libc_compat/ubuntu_14/features.h
index 2930bdf967..9fbab45ab5 100644
--- a/contrib/libs/libc_compat/ubuntu_14/features.h
+++ b/contrib/libs/libc_compat/ubuntu_14/features.h
@@ -1,5 +1,5 @@
-#pragma once
-
-#define weak __attribute__((__weak__))
-#define weak_alias(old, new) \
- extern __typeof(old) new __attribute__((__weak__, __alias__(#old)))
+#pragma once
+
+#define weak __attribute__((__weak__))
+#define weak_alias(old, new) \
+ extern __typeof(old) new __attribute__((__weak__, __alias__(#old)))
diff --git a/contrib/libs/libc_compat/ubuntu_14/getauxval.cpp b/contrib/libs/libc_compat/ubuntu_14/getauxval.cpp
index 702abf3bbb..9f20dd0195 100644
--- a/contrib/libs/libc_compat/ubuntu_14/getauxval.cpp
+++ b/contrib/libs/libc_compat/ubuntu_14/getauxval.cpp
@@ -1,10 +1,10 @@
-#include <sys/auxv.h>
-
-#include "glibc.h"
-#include "features.h"
-
-extern "C" {
- unsigned long getauxval(unsigned long item) noexcept {
- return NUbuntuCompat::GetGlibc().GetAuxVal(item);
- }
-}
+#include <sys/auxv.h>
+
+#include "glibc.h"
+#include "features.h"
+
+extern "C" {
+ unsigned long getauxval(unsigned long item) noexcept {
+ return NUbuntuCompat::GetGlibc().GetAuxVal(item);
+ }
+}
diff --git a/contrib/libs/libc_compat/ubuntu_14/glibc.cpp b/contrib/libs/libc_compat/ubuntu_14/glibc.cpp
index b2c6098dd8..1cc444bce1 100644
--- a/contrib/libs/libc_compat/ubuntu_14/glibc.cpp
+++ b/contrib/libs/libc_compat/ubuntu_14/glibc.cpp
@@ -1,111 +1,111 @@
-#include <elf.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <unistd.h>
-
-#include "glibc.h"
-#include "features.h"
-
-namespace {
- void ReadAuxVector(Elf64_auxv_t** begin, Elf64_auxv_t** end) noexcept {
- int fd = open("/proc/self/auxv", O_RDONLY | O_CLOEXEC);
- if (fd == -1) {
- return;
- }
-
- constexpr size_t item_size = sizeof(Elf64_auxv_t);
- constexpr size_t block_size = item_size * 32;
-
- size_t bytes_read = 0;
- size_t size = 0;
-
- struct TBuffer {
- ~TBuffer() {
- free(Pointer);
- }
- char* Pointer = nullptr;
- } buffer;
-
- while (true) {
- size_t bytes_left = size - bytes_read;
-
- if (!bytes_left) {
- size += block_size;
- char* new_buffer = (char*)realloc(buffer.Pointer, size);
- if (!new_buffer) {
- return;
- }
- buffer.Pointer = new_buffer;
- continue;
- }
-
- ssize_t r = read(fd, buffer.Pointer + bytes_read, bytes_left);
- if (!r) {
- break;
- } else if (r < 0) {
- if (errno == EINTR) {
- continue;
- } else {
- return;
- }
- }
-
- bytes_read += r;
- }
-
- size_t item_count = bytes_read / item_size;
- *begin = (Elf64_auxv_t*)buffer.Pointer;
- *end = (Elf64_auxv_t*)(buffer.Pointer + item_count * item_size);
- buffer.Pointer = nullptr;
- }
-}
-
-extern "C" {
- weak unsigned long __getauxval(unsigned long item);
-}
-
-namespace NUbuntuCompat {
-
- TGlibc::TGlibc() noexcept
- : AuxVectorBegin(nullptr)
- , AuxVectorEnd(nullptr)
- {
- if (!__getauxval) {
- ReadAuxVector((Elf64_auxv_t**)&AuxVectorBegin, (Elf64_auxv_t**)&AuxVectorEnd);
- }
-
- Secure = (bool)GetAuxVal(AT_SECURE);
- }
-
- TGlibc::~TGlibc() noexcept {
- free(AuxVectorBegin);
- }
-
- unsigned long TGlibc::GetAuxVal(unsigned long item) noexcept {
- if (__getauxval) {
- return __getauxval(item);
- }
-
- for (Elf64_auxv_t* p = (Elf64_auxv_t*)AuxVectorBegin; p < (Elf64_auxv_t*)AuxVectorEnd; ++p) {
- if (p->a_type == item) {
- return p->a_un.a_val;
- }
- }
-
- errno = ENOENT;
- return 0;
- }
-
- bool TGlibc::IsSecure() noexcept {
- return Secure;
- }
-
- static TGlibc __attribute__((__init_priority__(101))) GlibcInstance;
-
- TGlibc& GetGlibc() noexcept {
- return GlibcInstance;
- }
-}
+#include <elf.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#include "glibc.h"
+#include "features.h"
+
+namespace {
+ void ReadAuxVector(Elf64_auxv_t** begin, Elf64_auxv_t** end) noexcept {
+ int fd = open("/proc/self/auxv", O_RDONLY | O_CLOEXEC);
+ if (fd == -1) {
+ return;
+ }
+
+ constexpr size_t item_size = sizeof(Elf64_auxv_t);
+ constexpr size_t block_size = item_size * 32;
+
+ size_t bytes_read = 0;
+ size_t size = 0;
+
+ struct TBuffer {
+ ~TBuffer() {
+ free(Pointer);
+ }
+ char* Pointer = nullptr;
+ } buffer;
+
+ while (true) {
+ size_t bytes_left = size - bytes_read;
+
+ if (!bytes_left) {
+ size += block_size;
+ char* new_buffer = (char*)realloc(buffer.Pointer, size);
+ if (!new_buffer) {
+ return;
+ }
+ buffer.Pointer = new_buffer;
+ continue;
+ }
+
+ ssize_t r = read(fd, buffer.Pointer + bytes_read, bytes_left);
+ if (!r) {
+ break;
+ } else if (r < 0) {
+ if (errno == EINTR) {
+ continue;
+ } else {
+ return;
+ }
+ }
+
+ bytes_read += r;
+ }
+
+ size_t item_count = bytes_read / item_size;
+ *begin = (Elf64_auxv_t*)buffer.Pointer;
+ *end = (Elf64_auxv_t*)(buffer.Pointer + item_count * item_size);
+ buffer.Pointer = nullptr;
+ }
+}
+
+extern "C" {
+ weak unsigned long __getauxval(unsigned long item);
+}
+
+namespace NUbuntuCompat {
+
+ TGlibc::TGlibc() noexcept
+ : AuxVectorBegin(nullptr)
+ , AuxVectorEnd(nullptr)
+ {
+ if (!__getauxval) {
+ ReadAuxVector((Elf64_auxv_t**)&AuxVectorBegin, (Elf64_auxv_t**)&AuxVectorEnd);
+ }
+
+ Secure = (bool)GetAuxVal(AT_SECURE);
+ }
+
+ TGlibc::~TGlibc() noexcept {
+ free(AuxVectorBegin);
+ }
+
+ unsigned long TGlibc::GetAuxVal(unsigned long item) noexcept {
+ if (__getauxval) {
+ return __getauxval(item);
+ }
+
+ for (Elf64_auxv_t* p = (Elf64_auxv_t*)AuxVectorBegin; p < (Elf64_auxv_t*)AuxVectorEnd; ++p) {
+ if (p->a_type == item) {
+ return p->a_un.a_val;
+ }
+ }
+
+ errno = ENOENT;
+ return 0;
+ }
+
+ bool TGlibc::IsSecure() noexcept {
+ return Secure;
+ }
+
+ static TGlibc __attribute__((__init_priority__(101))) GlibcInstance;
+
+ TGlibc& GetGlibc() noexcept {
+ return GlibcInstance;
+ }
+}
diff --git a/contrib/libs/libc_compat/ubuntu_14/glibc.h b/contrib/libs/libc_compat/ubuntu_14/glibc.h
index e651371878..fa8f7dd013 100644
--- a/contrib/libs/libc_compat/ubuntu_14/glibc.h
+++ b/contrib/libs/libc_compat/ubuntu_14/glibc.h
@@ -1,20 +1,20 @@
-#pragma once
-
-typedef unsigned long (*TGetAuxVal)(unsigned long);
-
-namespace NUbuntuCompat {
- class TGlibc {
- public:
- TGlibc() noexcept;
- ~TGlibc() noexcept;
- unsigned long GetAuxVal(unsigned long item) noexcept;
- bool IsSecure() noexcept;
-
- private:
- void* AuxVectorBegin;
- void* AuxVectorEnd;
- bool Secure;
- };
-
- TGlibc& GetGlibc() noexcept;
-};
+#pragma once
+
+typedef unsigned long (*TGetAuxVal)(unsigned long);
+
+namespace NUbuntuCompat {
+ class TGlibc {
+ public:
+ TGlibc() noexcept;
+ ~TGlibc() noexcept;
+ unsigned long GetAuxVal(unsigned long item) noexcept;
+ bool IsSecure() noexcept;
+
+ private:
+ void* AuxVectorBegin;
+ void* AuxVectorEnd;
+ bool Secure;
+ };
+
+ TGlibc& GetGlibc() noexcept;
+};
diff --git a/contrib/libs/libc_compat/ubuntu_14/mbrtoc16.c b/contrib/libs/libc_compat/ubuntu_14/mbrtoc16.c
index 160b8686c9..765ff9037c 100644
--- a/contrib/libs/libc_compat/ubuntu_14/mbrtoc16.c
+++ b/contrib/libs/libc_compat/ubuntu_14/mbrtoc16.c
@@ -1,30 +1,30 @@
-#include <uchar.h>
-#include <wchar.h>
-
-size_t mbrtoc16(char16_t *restrict pc16, const char *restrict s, size_t n, mbstate_t *restrict ps)
-{
- static unsigned internal_state;
- if (!ps) ps = (void *)&internal_state;
- unsigned *pending = (unsigned *)ps;
-
- if (!s) return mbrtoc16(0, "", 1, ps);
-
- /* mbrtowc states for partial UTF-8 characters have the high bit set;
- * we use nonzero states without high bit for pending surrogates. */
- if ((int)*pending > 0) {
- if (pc16) *pc16 = *pending;
- *pending = 0;
- return -3;
- }
-
- wchar_t wc;
- size_t ret = mbrtowc(&wc, s, n, ps);
- if (ret <= 4) {
- if (wc >= 0x10000) {
- *pending = (wc & 0x3ff) + 0xdc00;
- wc = 0xd7c0 + (wc >> 10);
- }
- if (pc16) *pc16 = wc;
- }
- return ret;
-}
+#include <uchar.h>
+#include <wchar.h>
+
+size_t mbrtoc16(char16_t *restrict pc16, const char *restrict s, size_t n, mbstate_t *restrict ps)
+{
+ static unsigned internal_state;
+ if (!ps) ps = (void *)&internal_state;
+ unsigned *pending = (unsigned *)ps;
+
+ if (!s) return mbrtoc16(0, "", 1, ps);
+
+ /* mbrtowc states for partial UTF-8 characters have the high bit set;
+ * we use nonzero states without high bit for pending surrogates. */
+ if ((int)*pending > 0) {
+ if (pc16) *pc16 = *pending;
+ *pending = 0;
+ return -3;
+ }
+
+ wchar_t wc;
+ size_t ret = mbrtowc(&wc, s, n, ps);
+ if (ret <= 4) {
+ if (wc >= 0x10000) {
+ *pending = (wc & 0x3ff) + 0xdc00;
+ wc = 0xd7c0 + (wc >> 10);
+ }
+ if (pc16) *pc16 = wc;
+ }
+ return ret;
+}
diff --git a/contrib/libs/libc_compat/ubuntu_14/mbrtoc32.c b/contrib/libs/libc_compat/ubuntu_14/mbrtoc32.c
index e7189170c4..9b6b236739 100644
--- a/contrib/libs/libc_compat/ubuntu_14/mbrtoc32.c
+++ b/contrib/libs/libc_compat/ubuntu_14/mbrtoc32.c
@@ -1,13 +1,13 @@
-#include <uchar.h>
-#include <wchar.h>
-
-size_t mbrtoc32(char32_t *restrict pc32, const char *restrict s, size_t n, mbstate_t *restrict ps)
-{
- static unsigned internal_state;
- if (!ps) ps = (void *)&internal_state;
- if (!s) return mbrtoc32(0, "", 1, ps);
- wchar_t wc;
- size_t ret = mbrtowc(&wc, s, n, ps);
- if (ret <= 4 && pc32) *pc32 = wc;
- return ret;
-}
+#include <uchar.h>
+#include <wchar.h>
+
+size_t mbrtoc32(char32_t *restrict pc32, const char *restrict s, size_t n, mbstate_t *restrict ps)
+{
+ static unsigned internal_state;
+ if (!ps) ps = (void *)&internal_state;
+ if (!s) return mbrtoc32(0, "", 1, ps);
+ wchar_t wc;
+ size_t ret = mbrtowc(&wc, s, n, ps);
+ if (ret <= 4 && pc32) *pc32 = wc;
+ return ret;
+}
diff --git a/contrib/libs/libc_compat/ubuntu_14/secure_getenv.cpp b/contrib/libs/libc_compat/ubuntu_14/secure_getenv.cpp
index 947fc3eb5a..14e3e90906 100644
--- a/contrib/libs/libc_compat/ubuntu_14/secure_getenv.cpp
+++ b/contrib/libs/libc_compat/ubuntu_14/secure_getenv.cpp
@@ -1,12 +1,12 @@
-#include <stdlib.h>
-
-#include "glibc.h"
-
-extern "C" {
- char *secure_getenv(const char *name) noexcept {
- if (NUbuntuCompat::GetGlibc().IsSecure()) {
- return nullptr;
- }
- return getenv(name);
- }
-}
+#include <stdlib.h>
+
+#include "glibc.h"
+
+extern "C" {
+ char *secure_getenv(const char *name) noexcept {
+ if (NUbuntuCompat::GetGlibc().IsSecure()) {
+ return nullptr;
+ }
+ return getenv(name);
+ }
+}
diff --git a/contrib/libs/libc_compat/ubuntu_14/timespec_get.c b/contrib/libs/libc_compat/ubuntu_14/timespec_get.c
index 806d87f3d8..742b62ec84 100644
--- a/contrib/libs/libc_compat/ubuntu_14/timespec_get.c
+++ b/contrib/libs/libc_compat/ubuntu_14/timespec_get.c
@@ -1,10 +1,10 @@
-#include <time.h>
-
-/* There is no other implemented value than TIME_UTC; all other values
- * are considered erroneous. */
-int timespec_get(struct timespec * ts, int base)
-{
- if (base != TIME_UTC) return 0;
- int ret = clock_gettime(CLOCK_REALTIME, ts);
- return ret < 0 ? 0 : base;
-}
+#include <time.h>
+
+/* There is no other implemented value than TIME_UTC; all other values
+ * are considered erroneous. */
+int timespec_get(struct timespec * ts, int base)
+{
+ if (base != TIME_UTC) return 0;
+ int ret = clock_gettime(CLOCK_REALTIME, ts);
+ return ret < 0 ? 0 : base;
+}
diff --git a/contrib/libs/libc_compat/ubuntu_14/ya.make b/contrib/libs/libc_compat/ubuntu_14/ya.make
index fc770dd4b4..7355c4ad9d 100644
--- a/contrib/libs/libc_compat/ubuntu_14/ya.make
+++ b/contrib/libs/libc_compat/ubuntu_14/ya.make
@@ -1,5 +1,5 @@
-LIBRARY()
-
+LIBRARY()
+
WITHOUT_LICENSE_TEXTS()
LICENSE(BSD-3-Clause)
@@ -9,34 +9,34 @@ OWNER(
g:contrib
g:cpp-contrib
)
-
-NO_PLATFORM()
-NO_RUNTIME()
+NO_PLATFORM()
+
+NO_RUNTIME()
+
+NO_UTIL()
-NO_UTIL()
-
-DISABLE(NEED_PLATFORM_PEERDIRS)
+DISABLE(NEED_PLATFORM_PEERDIRS)
DISABLE(OPENSOURCE_EXPORT)
-
+
IF (OS_SDK == "ubuntu-14")
PEERDIR(
build/platform/linux_sdk
)
- SRCS(
- aligned_alloc.c
- c16rtomb.c
- c32rtomb.c
- getauxval.cpp
- mbrtoc16.c
- mbrtoc32.c
- secure_getenv.cpp
- timespec_get.c
- )
+ SRCS(
+ aligned_alloc.c
+ c16rtomb.c
+ c32rtomb.c
+ getauxval.cpp
+ mbrtoc16.c
+ mbrtoc32.c
+ secure_getenv.cpp
+ timespec_get.c
+ )
SRC_CPP_PIC(
glibc.cpp
-fno-lto
)
-ENDIF()
-
-END()
+ENDIF()
+
+END()
diff --git a/contrib/libs/libidn/COPYING.LIB b/contrib/libs/libidn/COPYING.LIB
index 8f7d8cdfef..8add30ad59 100644
--- a/contrib/libs/libidn/COPYING.LIB
+++ b/contrib/libs/libidn/COPYING.LIB
@@ -1,504 +1,504 @@
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
- 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL. It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
- This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it. You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
- When we speak of free software, we are referring to freedom of use,
-not price. Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
- To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights. These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
- To protect each distributor, we want to make it very clear that
-there is no warranty for the free library. Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
- Finally, software patents pose a constant threat to the existence of
-any free program. We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder. Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
- Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License. This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License. We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
- When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library. The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom. The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
- We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License. It also provides other free software developers Less
-of an advantage over competing non-free programs. These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries. However, the Lesser license provides advantages in certain
-special circumstances.
-
- For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard. To achieve this, non-free programs must be
-allowed to use the library. A more frequent case is that a free
-library does the same job as widely used non-free libraries. In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
- In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software. For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
- Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
- GNU LESSER GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
- You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
- 2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
- If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
- 6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (1) uses at run time a
- copy of the library already present on the user's computer system,
- rather than copying library functions into the executable, and (2)
- will operate properly with a modified version of the library, if
- the user installs one, as long as the modified version is
- interface-compatible with the version that the work was made with.
-
- c) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- d) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- e) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License. However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
- 9. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
- 11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded. In such case, this License incorporates the limitation as if
-written in the body of this License.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation. If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission. For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this. Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
- NO WARRANTY
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Libraries
-
- If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change. You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
- To apply these terms, attach the following notices to the library. It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
- <one line to give the library's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the
- library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
- <signature of Ty Coon>, 1 April 1990
- Ty Coon, President of Vice
-
-That's all there is to it!
-
-
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard. To achieve this, non-free programs must be
+allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/contrib/libs/libidn/stringprep.h b/contrib/libs/libidn/stringprep.h
index 687adc5ca1..9b977d3142 100644
--- a/contrib/libs/libidn/stringprep.h
+++ b/contrib/libs/libidn/stringprep.h
@@ -46,7 +46,7 @@ extern "C"
#endif
#define STRINGPREP_VERSION "1.9"
-#define LIBIDN_STATIC
+#define LIBIDN_STATIC
/* Libidn Windows DLL */
#ifndef LIBIDN_API
diff --git a/contrib/libs/libunwind/src/Unwind-EHABI.cpp b/contrib/libs/libunwind/src/Unwind-EHABI.cpp
index ded98ac4eb..21c8b2777b 100644
--- a/contrib/libs/libunwind/src/Unwind-EHABI.cpp
+++ b/contrib/libs/libunwind/src/Unwind-EHABI.cpp
@@ -884,7 +884,7 @@ _Unwind_GetLanguageSpecificData(struct _Unwind_Context *context) {
return result;
}
-[[maybe_unused]] static uint64_t ValueAsBitPattern(_Unwind_VRS_DataRepresentation representation,
+[[maybe_unused]] static uint64_t ValueAsBitPattern(_Unwind_VRS_DataRepresentation representation,
void* valuep) {
uint64_t value = 0;
switch (representation) {
diff --git a/contrib/libs/libunwind/ut/libunwind_ut.cpp b/contrib/libs/libunwind/ut/libunwind_ut.cpp
index 711e0f115a..93767c50c8 100644
--- a/contrib/libs/libunwind/ut/libunwind_ut.cpp
+++ b/contrib/libs/libunwind/ut/libunwind_ut.cpp
@@ -1,29 +1,29 @@
#include <library/cpp/testing/unittest/registar.h>
-
-#include <util/system/compiler.h>
-
-#include <exception>
-#include <vector>
-
-Y_NO_INLINE void Except(int arg, ...) {
- (void)arg;
- throw std::exception();
-}
-
+
+#include <util/system/compiler.h>
+
+#include <exception>
+#include <vector>
+
+Y_NO_INLINE void Except(int arg, ...) {
+ (void)arg;
+ throw std::exception();
+}
+
Y_UNIT_TEST_SUITE(LibunwindSuite) {
- static void Y_NO_INLINE DoTestVarargs() {
- std::vector<int> v;
- v.push_back(0);
- Except(0x11, 0x22, 0x33, 0x44, 0xAA, 0xBB, 0xCC, 0xDD);
- }
-
+ static void Y_NO_INLINE DoTestVarargs() {
+ std::vector<int> v;
+ v.push_back(0);
+ Except(0x11, 0x22, 0x33, 0x44, 0xAA, 0xBB, 0xCC, 0xDD);
+ }
+
Y_UNIT_TEST(TestVarargs) {
- try {
- DoTestVarargs();
- } catch (const std::exception& e) {
- return;
- }
-
- UNIT_FAIL("Should not be here");
- }
-}
+ try {
+ DoTestVarargs();
+ } catch (const std::exception& e) {
+ return;
+ }
+
+ UNIT_FAIL("Should not be here");
+ }
+}
diff --git a/contrib/libs/libunwind/ut/ya.make b/contrib/libs/libunwind/ut/ya.make
index f0026a0c42..a608aee8a4 100644
--- a/contrib/libs/libunwind/ut/ya.make
+++ b/contrib/libs/libunwind/ut/ya.make
@@ -1,11 +1,11 @@
-UNITTEST()
-
+UNITTEST()
+
WITHOUT_LICENSE_TEXTS()
-
+
OWNER(somov)
-SRCS(
- libunwind_ut.cpp
-)
-
-END()
+SRCS(
+ libunwind_ut.cpp
+)
+
+END()
diff --git a/contrib/libs/libxml/COPYING b/contrib/libs/libxml/COPYING
index 61034c5d19..d61318502c 100644
--- a/contrib/libs/libxml/COPYING
+++ b/contrib/libs/libxml/COPYING
@@ -1,23 +1,23 @@
-Except where otherwise noted in the source code (e.g. the files hash.c,
-list.c and the trio files, which are covered by a similar licence but
-with different Copyright notices) all the files are:
-
- Copyright (C) 1998-2012 Daniel Veillard. All Rights Reserved.
-
-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 fur-
-nished 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, FIT-
-NESS 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.
+Except where otherwise noted in the source code (e.g. the files hash.c,
+list.c and the trio files, which are covered by a similar licence but
+with different Copyright notices) all the files are:
+
+ Copyright (C) 1998-2012 Daniel Veillard. All Rights Reserved.
+
+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 fur-
+nished 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, FIT-
+NESS 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.
diff --git a/contrib/libs/libxml/ya.make b/contrib/libs/libxml/ya.make
index b64b9e9973..b7ee2eb058 100644
--- a/contrib/libs/libxml/ya.make
+++ b/contrib/libs/libxml/ya.make
@@ -6,7 +6,7 @@ OWNER(
g:cpp-contrib
g:yandex_io
)
-
+
VERSION(2.9.10)
ORIGINAL_SOURCE(http://xmlsoft.org/sources/libxml2-2.9.10.tar.gz)
@@ -22,7 +22,7 @@ PEERDIR(
contrib/libs/libiconv
contrib/libs/zlib
)
-
+
ADDINCL(
GLOBAL contrib/libs/libxml/include
contrib/libs/libiconv/include
diff --git a/contrib/libs/llvm12/include/llvm/Demangle/ItaniumDemangle.h b/contrib/libs/llvm12/include/llvm/Demangle/ItaniumDemangle.h
index e0a8cfcf13..09d4e42b85 100644
--- a/contrib/libs/llvm12/include/llvm/Demangle/ItaniumDemangle.h
+++ b/contrib/libs/llvm12/include/llvm/Demangle/ItaniumDemangle.h
@@ -217,13 +217,13 @@ public:
#endif
};
-class IASTProcessor {
-public:
- virtual void Process(const Node*) = 0;
-};
-
-void demangleAST(const char *MangledName, IASTProcessor *Processor);
-
+class IASTProcessor {
+public:
+ virtual void Process(const Node*) = 0;
+};
+
+void demangleAST(const char *MangledName, IASTProcessor *Processor);
+
class NodeArray {
Node **Elements;
size_t NumElements;
@@ -5596,7 +5596,7 @@ Node *AbstractManglingParser<Derived, Alloc>::parseTemplateArg() {
return nullptr;
return Arg;
}
- case 'I': // 'I' here is an old GCC mangling ABI. It is common in outside binaries.
+ case 'I': // 'I' here is an old GCC mangling ABI. It is common in outside binaries.
case 'J': {
++First;
size_t ArgsBegin = Names.size();
diff --git a/contrib/libs/llvm12/lib/Demangle/ItaniumDemangle.cpp b/contrib/libs/llvm12/lib/Demangle/ItaniumDemangle.cpp
index 60cab24031..6dfd931e83 100644
--- a/contrib/libs/llvm12/lib/Demangle/ItaniumDemangle.cpp
+++ b/contrib/libs/llvm12/lib/Demangle/ItaniumDemangle.cpp
@@ -323,12 +323,12 @@ public:
using Demangler = itanium_demangle::ManglingParser<DefaultAllocator>;
-void llvm::itanium_demangle::demangleAST(const char *MangledName, IASTProcessor *Processor) {
- Demangler Parser(MangledName, MangledName + std::strlen(MangledName));
- Node* node = Parser.parse();
- Processor->Process(node);
-}
-
+void llvm::itanium_demangle::demangleAST(const char *MangledName, IASTProcessor *Processor) {
+ Demangler Parser(MangledName, MangledName + std::strlen(MangledName));
+ Node* node = Parser.parse();
+ Processor->Process(node);
+}
+
char *llvm::itaniumDemangle(const char *MangledName, char *Buf,
size_t *N, int *Status) {
if (MangledName == nullptr || (Buf != nullptr && N == nullptr)) {
diff --git a/contrib/libs/lzmasdk/AesOpt.c b/contrib/libs/lzmasdk/AesOpt.c
index db59d7d152..00291288ba 100644
--- a/contrib/libs/lzmasdk/AesOpt.c
+++ b/contrib/libs/lzmasdk/AesOpt.c
@@ -13,15 +13,15 @@
#ifdef USE_INTEL_AES
-#if defined(__clang__)
-#define TARGET_AES __attribute__((__target__("aes")))
-#else
-#define TARGET_AES
-#endif
-
+#if defined(__clang__)
+#define TARGET_AES __attribute__((__target__("aes")))
+#else
+#define TARGET_AES
+#endif
+
#include <wmmintrin.h>
-void TARGET_AES MY_FAST_CALL AesCbc_Encode_Intel(__m128i *p, __m128i *data, size_t numBlocks)
+void TARGET_AES MY_FAST_CALL AesCbc_Encode_Intel(__m128i *p, __m128i *data, size_t numBlocks)
{
__m128i m = *p;
for (; numBlocks != 0; numBlocks--, data++)
@@ -58,7 +58,7 @@ void TARGET_AES MY_FAST_CALL AesCbc_Encode_Intel(__m128i *p, __m128i *data, size
#define AES_ENC(n) AES_OP_W(_mm_aesenc_si128, n)
#define AES_ENC_LAST(n) AES_OP_W(_mm_aesenclast_si128, n)
-void TARGET_AES MY_FAST_CALL AesCbc_Decode_Intel(__m128i *p, __m128i *data, size_t numBlocks)
+void TARGET_AES MY_FAST_CALL AesCbc_Decode_Intel(__m128i *p, __m128i *data, size_t numBlocks)
{
__m128i iv = *p;
for (; numBlocks >= NUM_WAYS; numBlocks -= NUM_WAYS, data += NUM_WAYS)
@@ -113,10 +113,10 @@ void TARGET_AES MY_FAST_CALL AesCbc_Decode_Intel(__m128i *p, __m128i *data, size
*p = iv;
}
-void TARGET_AES MY_FAST_CALL AesCtr_Code_Intel(__m128i *p, __m128i *data, size_t numBlocks)
+void TARGET_AES MY_FAST_CALL AesCtr_Code_Intel(__m128i *p, __m128i *data, size_t numBlocks)
{
__m128i ctr = *p;
- __m128i one = _mm_set_epi64x(1, 0);
+ __m128i one = _mm_set_epi64x(1, 0);
for (; numBlocks >= NUM_WAYS; numBlocks -= NUM_WAYS, data += NUM_WAYS)
{
UInt32 numRounds2 = *(const UInt32 *)(p + 1) - 1;
diff --git a/contrib/libs/openssl/dynamic/ya.make b/contrib/libs/openssl/dynamic/ya.make
index 906559980c..d68bbe8c4c 100644
--- a/contrib/libs/openssl/dynamic/ya.make
+++ b/contrib/libs/openssl/dynamic/ya.make
@@ -1,8 +1,8 @@
DLL_FOR(contrib/libs/openssl)
-
-OWNER(
- somov
- elantsev
+
+OWNER(
+ somov
+ elantsev
g:contrib
g:cpp-contrib
-)
+)
diff --git a/contrib/libs/openssl/include/openssl/opensslconf-linux.h b/contrib/libs/openssl/include/openssl/opensslconf-linux.h
index ab11275318..e5e3a76622 100644
--- a/contrib/libs/openssl/include/openssl/opensslconf-linux.h
+++ b/contrib/libs/openssl/include/openssl/opensslconf-linux.h
@@ -72,19 +72,19 @@ extern "C" {
#ifndef OPENSSL_NO_SSL_TRACE
# define OPENSSL_NO_SSL_TRACE
#endif
-
-// https://st.yandex-team.ru/DEVTOOLS-5331
-#define Y_OPENSSL_ENABLE_DEPRECATED
-
-#if !defined(Y_OPENSSL_ENABLE_DEPRECATED)
-# ifndef OPENSSL_NO_SSL3
-# define OPENSSL_NO_SSL3
-# endif
-# ifndef OPENSSL_NO_SSL3_METHOD
-# define OPENSSL_NO_SSL3_METHOD
-# endif
-#endif
-
+
+// https://st.yandex-team.ru/DEVTOOLS-5331
+#define Y_OPENSSL_ENABLE_DEPRECATED
+
+#if !defined(Y_OPENSSL_ENABLE_DEPRECATED)
+# ifndef OPENSSL_NO_SSL3
+# define OPENSSL_NO_SSL3
+# endif
+# ifndef OPENSSL_NO_SSL3_METHOD
+# define OPENSSL_NO_SSL3_METHOD
+# endif
+#endif
+
#ifndef OPENSSL_NO_TESTS
# define OPENSSL_NO_TESTS
#endif
@@ -94,14 +94,14 @@ extern "C" {
#ifndef OPENSSL_NO_UNIT_TEST
# define OPENSSL_NO_UNIT_TEST
#endif
-
-// https://st.yandex-team.ru/DEVTOOLS-5331
-#if !defined(Y_OPENSSL_ENABLE_DEPRECATED)
-# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
-# define OPENSSL_NO_WEAK_SSL_CIPHERS
-# endif
+
+// https://st.yandex-team.ru/DEVTOOLS-5331
+#if !defined(Y_OPENSSL_ENABLE_DEPRECATED)
+# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
+# define OPENSSL_NO_WEAK_SSL_CIPHERS
+# endif
#endif
-
+
#ifndef OPENSSL_NO_DYNAMIC_ENGINE
# define OPENSSL_NO_DYNAMIC_ENGINE
#endif
diff --git a/contrib/libs/openssl/ssl/ssl_cert.c b/contrib/libs/openssl/ssl/ssl_cert.c
index d657e668c3..a592e3382f 100644
--- a/contrib/libs/openssl/ssl/ssl_cert.c
+++ b/contrib/libs/openssl/ssl/ssl_cert.c
@@ -926,14 +926,14 @@ static int ssl_security_default_callback(const SSL *s, const SSL_CTX *ctx,
/* No unauthenticated ciphersuites */
if (c->algorithm_auth & SSL_aNULL)
return 0;
-
- // https://st.yandex-team.ru/DEVTOOLS-5331
-#if !defined(Y_OPENSSL_ENABLE_DEPRECATED)
+
+ // https://st.yandex-team.ru/DEVTOOLS-5331
+#if !defined(Y_OPENSSL_ENABLE_DEPRECATED)
/* No MD5 mac ciphersuites */
if (c->algorithm_mac & SSL_MD5)
return 0;
-#endif
-
+#endif
+
/* SHA1 HMAC is 160 bits of security */
if (minbits > 160 && c->algorithm_mac & SSL_SHA1)
return 0;
diff --git a/contrib/libs/protoc/LICENSE b/contrib/libs/protoc/LICENSE
index 81c8e50b73..19b305b000 100644
--- a/contrib/libs/protoc/LICENSE
+++ b/contrib/libs/protoc/LICENSE
@@ -1,32 +1,32 @@
Copyright 2008 Google Inc. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
- * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-Code generated by the Protocol Buffer compiler is owned by the owner
-of the input file used when generating it. This code is not
-standalone and requires a support library to be linked with it. This
-support library is itself covered by the above license.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+ * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Code generated by the Protocol Buffer compiler is owned by the owner
+of the input file used when generating it. This code is not
+standalone and requires a support library to be linked with it. This
+support library is itself covered by the above license.
diff --git a/contrib/libs/re2/re2/re2.cc b/contrib/libs/re2/re2/re2.cc
index 4637322b08..47fb385e4e 100644
--- a/contrib/libs/re2/re2/re2.cc
+++ b/contrib/libs/re2/re2/re2.cc
@@ -1050,14 +1050,14 @@ bool Parse(const char* str, size_t n, std::string* dest) {
return true;
}
-#if defined(ARCADIA_ROOT)
+#if defined(ARCADIA_ROOT)
template <>
bool Parse(const char* str, size_t n, TString* dest) {
if (dest == NULL) return true;
dest->assign(str, n);
return true;
}
-#endif
+#endif
template <>
bool Parse(const char* str, size_t n, StringPiece* dest) {
diff --git a/contrib/libs/re2/re2/re2.h b/contrib/libs/re2/re2/re2.h
index 28c3fc708f..f8f8043daf 100644
--- a/contrib/libs/re2/re2/re2.h
+++ b/contrib/libs/re2/re2/re2.h
@@ -210,9 +210,9 @@
#include <string>
#include <type_traits>
#include <vector>
-#if defined(ARCADIA_ROOT)
+#if defined(ARCADIA_ROOT)
#include <util/generic/string.h>
-#endif
+#endif
#if defined(__APPLE__)
#include <TargetConditionals.h>
@@ -283,10 +283,10 @@ class RE2 {
#endif
RE2(const StringPiece& pattern);
RE2(const StringPiece& pattern, const Options& options);
-#if defined(ARCADIA_ROOT)
+#if defined(ARCADIA_ROOT)
// ambiguity resolution.
RE2(const TString& pattern) : RE2(StringPiece(pattern)) {}
-#endif
+#endif
~RE2();
// Returns whether RE2 was created properly.
@@ -464,7 +464,7 @@ class RE2 {
static bool Replace(std::string* str,
const RE2& re,
const StringPiece& rewrite);
-#if defined(ARCADIA_ROOT)
+#if defined(ARCADIA_ROOT)
static bool Replace(TString *str,
const RE2& pattern,
const StringPiece& rewrite) {
@@ -473,7 +473,7 @@ class RE2 {
*str = tmp;
return res;
}
-#endif
+#endif
// Like Replace(), except replaces successive non-overlapping occurrences
// of the pattern in the string with the rewrite. E.g.
@@ -492,7 +492,7 @@ class RE2 {
const RE2& re,
const StringPiece& rewrite);
-#if defined(ARCADIA_ROOT)
+#if defined(ARCADIA_ROOT)
static int GlobalReplace(TString* str,
const RE2& pattern,
const StringPiece& rewrite) {
@@ -501,7 +501,7 @@ class RE2 {
*str = tmp;
return res;
}
-#endif
+#endif
// Like Replace, except that if the pattern matches, "rewrite"
// is copied into "out" with substitutions. The non-matching
@@ -516,7 +516,7 @@ class RE2 {
const StringPiece& rewrite,
std::string* out);
-#if defined(ARCADIA_ROOT)
+#if defined(ARCADIA_ROOT)
static bool Extract(const StringPiece& text,
const RE2& pattern,
const StringPiece& rewrite,
@@ -526,7 +526,7 @@ class RE2 {
*out = tmp;
return res;
}
-#endif
+#endif
// Escapes all potentially meaningful regexp characters in
// 'unquoted'. The returned string, used as a regular expression,
@@ -621,7 +621,7 @@ class RE2 {
return CheckRewriteString(rewrite, static_cast<std::string*>(error));
}
-#if defined(ARCADIA_ROOT)
+#if defined(ARCADIA_ROOT)
bool CheckRewriteString(const StringPiece& rewrite, TString* error) const {
if (error) {
std::string tmp;
@@ -632,7 +632,7 @@ class RE2 {
return CheckRewriteString(rewrite, nullptr);
}
}
-#endif
+#endif
// Returns the maximum submatch needed for the rewrite to be done by
// Replace(). E.g. if rewrite == "foo \\2,\\1", returns 2.
@@ -847,9 +847,9 @@ template <typename T> struct Parse3ary : public std::false_type {};
template <> struct Parse3ary<void> : public std::true_type {};
template <> struct Parse3ary<std::string> : public std::true_type {};
template <> struct Parse3ary<StringPiece> : public std::true_type {};
-#if defined(ARCADIA_ROOT)
+#if defined(ARCADIA_ROOT)
template <> struct Parse3ary<TString> : public std::true_type {};
-#endif
+#endif
template <> struct Parse3ary<char> : public std::true_type {};
template <> struct Parse3ary<signed char> : public std::true_type {};
template <> struct Parse3ary<unsigned char> : public std::true_type {};
diff --git a/contrib/libs/re2/re2/stringpiece.h b/contrib/libs/re2/re2/stringpiece.h
index aeec0490d4..ef73683401 100644
--- a/contrib/libs/re2/re2/stringpiece.h
+++ b/contrib/libs/re2/re2/stringpiece.h
@@ -33,9 +33,9 @@
#if __has_include(<string_view>) && __cplusplus >= 201703L
#include <string_view>
#endif
-#if defined(ARCADIA_ROOT)
+#if defined(ARCADIA_ROOT)
#include <util/generic/string.h>
-#endif
+#endif
namespace re2 {
@@ -70,10 +70,10 @@ class StringPiece {
: data_(str), size_(str == NULL ? 0 : strlen(str)) {}
StringPiece(const char* str, size_type len)
: data_(str), size_(len) {}
-#if defined(ARCADIA_ROOT)
+#if defined(ARCADIA_ROOT)
StringPiece(const TString& str)
: StringPiece(str.data(), str.size()) {}
-#endif
+#endif
const_iterator begin() const { return data_; }
const_iterator end() const { return data_ + size_; }
diff --git a/contrib/libs/sparsehash/ya.make b/contrib/libs/sparsehash/ya.make
index cd32cf679c..d12785158a 100644
--- a/contrib/libs/sparsehash/ya.make
+++ b/contrib/libs/sparsehash/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-LICENSE(BSD-3-Clause)
-
+LICENSE(BSD-3-Clause)
+
LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
OWNER(g:cpp-contrib)
diff --git a/contrib/libs/sqlite3/sqlite3.c b/contrib/libs/sqlite3/sqlite3.c
index e4c477615e..3b763874be 100644
--- a/contrib/libs/sqlite3/sqlite3.c
+++ b/contrib/libs/sqlite3/sqlite3.c
@@ -27181,7 +27181,7 @@ SQLITE_PRIVATE sqlite3_mutex_methods const *sqlite3NoopMutex(void){
** is used regardless of the run-time threadsafety setting.
*/
#ifdef SQLITE_MUTEX_NOOP
-#error Are you sure you want this?
+#error Are you sure you want this?
SQLITE_PRIVATE sqlite3_mutex_methods const *sqlite3DefaultMutex(void){
return sqlite3NoopMutex();
}
diff --git a/contrib/libs/sqlite3/ya.make b/contrib/libs/sqlite3/ya.make
index 6b950529ad..e6b26dccc3 100644
--- a/contrib/libs/sqlite3/ya.make
+++ b/contrib/libs/sqlite3/ya.make
@@ -55,12 +55,12 @@ IF (OS_WINDOWS)
CFLAGS(
-DSQLITE_OS_WIN
)
-ELSE()
+ELSE()
CFLAGS(
-DSQLITE_OS_UNIX
)
-ENDIF()
-
+ENDIF()
+
SRCS(
sqlite3.c
test_multiplex.c
diff --git a/contrib/libs/t1ha/src/t1ha0.c b/contrib/libs/t1ha/src/t1ha0.c
index c07cc10576..bde71299cb 100644
--- a/contrib/libs/t1ha/src/t1ha0.c
+++ b/contrib/libs/t1ha/src/t1ha0.c
@@ -361,7 +361,7 @@ uint64_t t1ha0_32be(const void *data, size_t len, uint64_t seed) {
__cold uint64_t t1ha_ia32cpu_features(void) {
uint32_t features = 0;
uint32_t extended = 0;
-#if defined(__GNUC__) || defined(__clang__)
+#if defined(__GNUC__) || defined(__clang__)
uint32_t eax, ebx, ecx, edx;
const unsigned cpuid_max = __get_cpuid_max(0, NULL);
if (cpuid_max >= 1) {
diff --git a/contrib/libs/ya.make b/contrib/libs/ya.make
index 21e14a9788..9c4640fdcf 100644
--- a/contrib/libs/ya.make
+++ b/contrib/libs/ya.make
@@ -60,15 +60,15 @@ RECURSE(
eigen
expat
falconn
- farmhash
- farmhash/ut
+ farmhash
+ farmhash/ut
faster-rnnlm
fastlz
fastops
fcgi
- ffmpeg-3
- ffmpeg-3.4.1
- fft
+ ffmpeg-3
+ ffmpeg-3.4.1
+ fft
flatbuffers
flatbuffers64
flatbuffers64/flatc
@@ -76,7 +76,7 @@ RECURSE(
fmath
fmt
fontconfig
- fp16
+ fp16
freetype
fuse
fxdiv
@@ -101,7 +101,7 @@ RECURSE(
harfbuzz
hdf5
hdr_histogram
- highwayhash
+ highwayhash
hiredis
httpd24
hwloc
@@ -147,7 +147,7 @@ RECURSE(
libev
libevent
libexslt
- libfdk-aac
+ libfdk-aac
libfuzzer12
libgeotiff
libgit2
@@ -191,12 +191,12 @@ RECURSE(
libunwind
liburing
libuv
- libvorbis
- libvorbis/libvorbisenc
- libvpx
+ libvorbis
+ libvorbis/libvorbisenc
+ libvpx
libwebp
- libx264
- libx265
+ libx264
+ libx265
libxml
libxml/dynamic
libxslt
@@ -242,7 +242,7 @@ RECURSE(
node_nan
nsync
numa
- nvidia
+ nvidia
odpi
onnx
opencl-headers
@@ -254,7 +254,7 @@ RECURSE(
openjpeg
openldap
openldap/libraries
- openmp
+ openmp
openssl
opentracing-cpp
opus
@@ -289,7 +289,7 @@ RECURSE(
python/ut
qhull
quicklz
- r-lang
+ r-lang
re2
regional-units/library
regional-units/library/ut
@@ -328,11 +328,11 @@ RECURSE(
tcmalloc/dynamic
tensorboard
termbox
- tf
- tf/samples
- tf/tensorflow
- tf/tensorflow/compiler
- tf/tests
+ tf
+ tf/samples
+ tf/tensorflow
+ tf/tensorflow/compiler
+ tf/tests
tf-2.4
tf-2.4/sample_python
tf-2.4/tensorflow/python
diff --git a/contrib/libs/zlib/gzguts.h b/contrib/libs/zlib/gzguts.h
index 2715c956e1..2b7382f654 100644
--- a/contrib/libs/zlib/gzguts.h
+++ b/contrib/libs/zlib/gzguts.h
@@ -33,8 +33,8 @@
#ifdef _WIN32
# include <stddef.h>
-#else
-# include <unistd.h>
+#else
+# include <unistd.h>
#endif
#if defined(__TURBOC__) || defined(_MSC_VER) || defined(_WIN32)
diff --git a/contrib/python/cryptography/LICENSE b/contrib/python/cryptography/LICENSE
index 33415e69fb..07074259b6 100644
--- a/contrib/python/cryptography/LICENSE
+++ b/contrib/python/cryptography/LICENSE
@@ -1,6 +1,6 @@
-This software is made available under the terms of *either* of the licenses
-found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made
-under the terms of *both* these licenses.
-
+This software is made available under the terms of *either* of the licenses
+found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made
+under the terms of *both* these licenses.
+
The code used in the OS random engine is derived from CPython, and is licensed
under the terms of the PSF License Agreement.
diff --git a/contrib/python/cryptography/LICENSE.APACHE b/contrib/python/cryptography/LICENSE.APACHE
index 1c29264a1a..62589edd12 100644
--- a/contrib/python/cryptography/LICENSE.APACHE
+++ b/contrib/python/cryptography/LICENSE.APACHE
@@ -1,202 +1,202 @@
-
- Apache License
- Version 2.0, January 2004
- https://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- https://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
+
+ Apache License
+ Version 2.0, January 2004
+ https://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/contrib/python/cryptography/LICENSE.BSD b/contrib/python/cryptography/LICENSE.BSD
index f8bfb4f1c6..ec1a29d34d 100644
--- a/contrib/python/cryptography/LICENSE.BSD
+++ b/contrib/python/cryptography/LICENSE.BSD
@@ -1,27 +1,27 @@
-Copyright (c) Individual contributors.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- 3. Neither the name of PyCA Cryptography nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+Copyright (c) Individual contributors.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ 3. Neither the name of PyCA Cryptography nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/contrib/python/ya.make b/contrib/python/ya.make
index 5743187247..d01ced9f3a 100644
--- a/contrib/python/ya.make
+++ b/contrib/python/ya.make
@@ -148,7 +148,7 @@ RECURSE(
CherryPy
cherrypy-cors
ciso8601
- clang
+ clang
clang/example
cli-helpers
click
diff --git a/contrib/restricted/abseil-cpp-tstring/CONTRIBUTING.md b/contrib/restricted/abseil-cpp-tstring/CONTRIBUTING.md
index b21998774a..a252cfac31 100644
--- a/contrib/restricted/abseil-cpp-tstring/CONTRIBUTING.md
+++ b/contrib/restricted/abseil-cpp-tstring/CONTRIBUTING.md
@@ -39,16 +39,16 @@ of the following criteria:
of the libraries we've released have tens of thousands of users.
* **Anticipated widespread usage** - Pre-adoption of some standard-compliant
APIs may not have broad adoption initially but can be expected to pick up
- usage when it replaces legacy APIs. `y_absl::from_chars`, for example,
+ usage when it replaces legacy APIs. `y_absl::from_chars`, for example,
replaces existing code that converts strings to numbers and will therefore
likely see usage growth.
* **High impact** - APIs that provide a key solution to a specific problem,
- such as `y_absl::FixedArray`, have higher impact than usage numbers may signal
+ such as `y_absl::FixedArray`, have higher impact than usage numbers may signal
and are released because of their importance.
* **Direct support for a library that falls under one of the above** - When we
want access to a smaller library as an implementation detail for a
higher-priority library we plan to release, we may release it, as we did
- with portions of `y_absl/meta/type_traits.h`. One consequence of this is that
+ with portions of `y_absl/meta/type_traits.h`. One consequence of this is that
the presence of a library in Abseil does not necessarily mean that other
similar libraries would be a high priority.
diff --git a/contrib/restricted/abseil-cpp-tstring/README.md b/contrib/restricted/abseil-cpp-tstring/README.md
index b88f7c69e4..a63901a422 100644
--- a/contrib/restricted/abseil-cpp-tstring/README.md
+++ b/contrib/restricted/abseil-cpp-tstring/README.md
@@ -65,32 +65,32 @@ supported operating systems, compilers, CPUs, etc.
Abseil contains the following C++ library components:
-* [`base`](y_absl/base/) Abseil Fundamentals
+* [`base`](y_absl/base/) Abseil Fundamentals
<br /> The `base` library contains initialization code and other code which
all other Abseil code depends on. Code within `base` may not depend on any
other code (other than the C++ standard library).
-* [`algorithm`](y_absl/algorithm/)
+* [`algorithm`](y_absl/algorithm/)
<br /> The `algorithm` library contains additions to the C++ `<algorithm>`
library and container-based versions of such algorithms.
* [`cleanup`](y_absl/cleanup/)
<br /> The `cleanup` library contains the control-flow-construct-like type
`y_absl::Cleanup` which is used for executing a callback on scope exit.
-* [`container`](y_absl/container/)
+* [`container`](y_absl/container/)
<br /> The `container` library contains additional STL-style containers,
including Abseil's unordered "Swiss table" containers.
-* [`debugging`](y_absl/debugging/)
+* [`debugging`](y_absl/debugging/)
<br /> The `debugging` library contains code useful for enabling leak
checks, and stacktrace and symbolization utilities.
-* [`hash`](y_absl/hash/)
+* [`hash`](y_absl/hash/)
<br /> The `hash` library contains the hashing framework and default hash
functor implementations for hashable types in Abseil.
-* [`memory`](y_absl/memory/)
+* [`memory`](y_absl/memory/)
<br /> The `memory` library contains C++11-compatible versions of
`std::make_unique()` and related memory management facilities.
-* [`meta`](y_absl/meta/)
+* [`meta`](y_absl/meta/)
<br /> The `meta` library contains C++11-compatible versions of type checks
available within C++14 and C++17 versions of the C++ `<type_traits>` library.
-* [`numeric`](y_absl/numeric/)
+* [`numeric`](y_absl/numeric/)
<br /> The `numeric` library contains C++11-compatible 128-bit integers.
* [`profiling`](y_absl/profiling/)
<br /> The `profiling` library contains utility code for profiling C++
@@ -98,22 +98,22 @@ Abseil contains the following C++ library components:
* [`status`](y_absl/status/)
<br /> The `status` contains abstractions for error handling, specifically
`y_absl::Status` and `y_absl::StatusOr<T>`.
-* [`strings`](y_absl/strings/)
+* [`strings`](y_absl/strings/)
<br /> The `strings` library contains a variety of strings routines and
utilities, including a C++11-compatible version of the C++17
`std::string_view` type.
-* [`synchronization`](y_absl/synchronization/)
+* [`synchronization`](y_absl/synchronization/)
<br /> The `synchronization` library contains concurrency primitives (Abseil's
- `y_absl::Mutex` class, an alternative to `std::mutex`) and a variety of
+ `y_absl::Mutex` class, an alternative to `std::mutex`) and a variety of
synchronization abstractions.
-* [`time`](y_absl/time/)
+* [`time`](y_absl/time/)
<br /> The `time` library contains abstractions for computing with absolute
points in time, durations of time, and formatting and parsing time within
time zones.
-* [`types`](y_absl/types/)
+* [`types`](y_absl/types/)
<br /> The `types` library contains non-container utility types, like a
C++11-compatible version of the C++17 `std::optional` type.
-* [`utility`](y_absl/utility/)
+* [`utility`](y_absl/utility/)
<br /> The `utility` library contains utility and helper code.
## Releases
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/algorithm/algorithm.h b/contrib/restricted/abseil-cpp-tstring/y_absl/algorithm/algorithm.h
index 6ef61e5b33..b1003bd0a9 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/algorithm/algorithm.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/algorithm/algorithm.h
@@ -28,7 +28,7 @@
#include "y_absl/base/config.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace algorithm_internal {
@@ -114,7 +114,7 @@ bool equal(InputIter1 first1, InputIter1 last1, InputIter2 first2,
template <typename InputIter1, typename InputIter2>
bool equal(InputIter1 first1, InputIter1 last1, InputIter2 first2,
InputIter2 last2) {
- return y_absl::equal(first1, last1, first2, last2,
+ return y_absl::equal(first1, last1, first2, last2,
algorithm_internal::EqualTo{});
}
@@ -142,7 +142,7 @@ bool linear_search(InputIterator first, InputIterator last,
// <= 4.9 where `std::rotate` returns `void` instead of an iterator.
//
// The complexity of this algorithm is the same as that of `std::rotate`, but if
-// `ForwardIterator` is not a random-access iterator, then `y_absl::rotate`
+// `ForwardIterator` is not a random-access iterator, then `y_absl::rotate`
// performs an additional pass over the range to construct the return value.
template <typename ForwardIterator>
ForwardIterator rotate(ForwardIterator first, ForwardIterator middle,
@@ -154,6 +154,6 @@ ForwardIterator rotate(ForwardIterator first, ForwardIterator middle,
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_ALGORITHM_ALGORITHM_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/algorithm/container.h b/contrib/restricted/abseil-cpp-tstring/y_absl/algorithm/container.h
index 6591e9599f..d6bf385964 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/algorithm/container.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/algorithm/container.h
@@ -28,7 +28,7 @@
// within this API operate on containers, though many return iterator ranges.
//
// All functions within this API are named with a `c_` prefix. Calls such as
-// `y_absl::c_xx(container, ...) are equivalent to std:: functions such as
+// `y_absl::c_xx(container, ...) are equivalent to std:: functions such as
// `std::xx(std::begin(cont), std::end(cont), ...)`. Functions that act on
// iterators but not conceptually on iterator ranges (e.g. `std::iter_swap`)
// have no equivalent here.
@@ -50,11 +50,11 @@
#include <utility>
#include <vector>
-#include "y_absl/algorithm/algorithm.h"
-#include "y_absl/base/macros.h"
-#include "y_absl/meta/type_traits.h"
+#include "y_absl/algorithm/algorithm.h"
+#include "y_absl/base/macros.h"
+#include "y_absl/meta/type_traits.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_algorithm_internal {
@@ -135,7 +135,7 @@ constexpr std::size_t c_size(T (&)[N]) {
// c_linear_search()
//
-// Container-based version of y_absl::linear_search() for performing a linear
+// Container-based version of y_absl::linear_search() for performing a linear
// search within a container.
template <typename C, typename EqualityComparable>
bool c_linear_search(const C& c, EqualityComparable&& value) {
@@ -785,7 +785,7 @@ OutputIterator c_reverse_copy(const C& sequence, OutputIterator result) {
template <typename C,
typename Iterator = container_algorithm_internal::ContainerIter<C>>
Iterator c_rotate(C& sequence, Iterator middle) {
- return y_absl::rotate(container_algorithm_internal::c_begin(sequence), middle,
+ return y_absl::rotate(container_algorithm_internal::c_begin(sequence), middle,
container_algorithm_internal::c_end(sequence));
}
@@ -1671,7 +1671,7 @@ void c_iota(Sequence& sequence, T&& value) {
// accumulation by value.
//
// Note: Due to a language technicality this function has return type
-// y_absl::decay_t<T>. As a user of this function you can casually read
+// y_absl::decay_t<T>. As a user of this function you can casually read
// this as "returns T by value" and assume it does the right thing.
template <typename Sequence, typename T>
decay_t<T> c_accumulate(const Sequence& sequence, T&& init) {
@@ -1697,7 +1697,7 @@ decay_t<T> c_accumulate(const Sequence& sequence, T&& init,
// to compute the cumulative inner product of container element pairs.
//
// Note: Due to a language technicality this function has return type
-// y_absl::decay_t<T>. As a user of this function you can casually read
+// y_absl::decay_t<T>. As a user of this function you can casually read
// this as "returns T by value" and assume it does the right thing.
template <typename Sequence1, typename Sequence2, typename T>
decay_t<T> c_inner_product(const Sequence1& factors1, const Sequence2& factors2,
@@ -1769,6 +1769,6 @@ OutputIt c_partial_sum(const InputSequence& input, OutputIt output_first,
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_ALGORITHM_CONTAINER_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/call_once.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/call_once.h
index 68ab3210ec..5d80e4e7ca 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/call_once.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/call_once.h
@@ -31,22 +31,22 @@
#include <type_traits>
#include <utility>
-#include "y_absl/base/internal/invoke.h"
-#include "y_absl/base/internal/low_level_scheduling.h"
-#include "y_absl/base/internal/raw_logging.h"
-#include "y_absl/base/internal/scheduling_mode.h"
-#include "y_absl/base/internal/spinlock_wait.h"
-#include "y_absl/base/macros.h"
-#include "y_absl/base/optimization.h"
-#include "y_absl/base/port.h"
-
-namespace y_absl {
+#include "y_absl/base/internal/invoke.h"
+#include "y_absl/base/internal/low_level_scheduling.h"
+#include "y_absl/base/internal/raw_logging.h"
+#include "y_absl/base/internal/scheduling_mode.h"
+#include "y_absl/base/internal/spinlock_wait.h"
+#include "y_absl/base/macros.h"
+#include "y_absl/base/optimization.h"
+#include "y_absl/base/port.h"
+
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
class once_flag;
namespace base_internal {
-std::atomic<uint32_t>* ControlWord(y_absl::once_flag* flag);
+std::atomic<uint32_t>* ControlWord(y_absl::once_flag* flag);
} // namespace base_internal
// call_once()
@@ -66,15 +66,15 @@ std::atomic<uint32_t>* ControlWord(y_absl::once_flag* flag);
// class MyInitClass {
// public:
// ...
-// mutable y_absl::once_flag once_;
+// mutable y_absl::once_flag once_;
//
// MyInitClass* init() const {
-// y_absl::call_once(once_, &MyInitClass::Init, this);
+// y_absl::call_once(once_, &MyInitClass::Init, this);
// return ptr_;
// }
//
template <typename Callable, typename... Args>
-void call_once(y_absl::once_flag& flag, Callable&& fn, Args&&... args);
+void call_once(y_absl::once_flag& flag, Callable&& fn, Args&&... args);
// once_flag
//
@@ -103,7 +103,7 @@ namespace base_internal {
// Like call_once, but uses KERNEL_ONLY scheduling. Intended to be used to
// initialize entities used by the scheduler implementation.
template <typename Callable, typename... Args>
-void LowLevelCallOnce(y_absl::once_flag* flag, Callable&& fn, Args&&... args);
+void LowLevelCallOnce(y_absl::once_flag* flag, Callable&& fn, Args&&... args);
// Disables scheduling while on stack when scheduling mode is non-cooperative.
// No effect for cooperative scheduling modes.
@@ -190,7 +190,7 @@ inline std::atomic<uint32_t>* ControlWord(once_flag* flag) {
}
template <typename Callable, typename... Args>
-void LowLevelCallOnce(y_absl::once_flag* flag, Callable&& fn, Args&&... args) {
+void LowLevelCallOnce(y_absl::once_flag* flag, Callable&& fn, Args&&... args) {
std::atomic<uint32_t>* once = base_internal::ControlWord(flag);
uint32_t s = once->load(std::memory_order_acquire);
if (ABSL_PREDICT_FALSE(s != base_internal::kOnceDone)) {
@@ -203,7 +203,7 @@ void LowLevelCallOnce(y_absl::once_flag* flag, Callable&& fn, Args&&... args) {
} // namespace base_internal
template <typename Callable, typename... Args>
-void call_once(y_absl::once_flag& flag, Callable&& fn, Args&&... args) {
+void call_once(y_absl::once_flag& flag, Callable&& fn, Args&&... args) {
std::atomic<uint32_t>* once = base_internal::ControlWord(&flag);
uint32_t s = once->load(std::memory_order_acquire);
if (ABSL_PREDICT_FALSE(s != base_internal::kOnceDone)) {
@@ -214,6 +214,6 @@ void call_once(y_absl::once_flag& flag, Callable&& fn, Args&&... args) {
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_BASE_CALL_ONCE_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/casts.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/casts.h
index 515b1b66f8..6270ede21e 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/casts.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/casts.h
@@ -29,11 +29,11 @@
#include <type_traits>
#include <utility>
-#include "y_absl/base/internal/identity.h"
-#include "y_absl/base/macros.h"
-#include "y_absl/meta/type_traits.h"
+#include "y_absl/base/internal/identity.h"
+#include "y_absl/base/macros.h"
+#include "y_absl/meta/type_traits.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace internal_casts {
@@ -99,7 +99,7 @@ struct is_bitcastable
//
// Such implicit cast chaining may be useful within template logic.
template <typename To>
-constexpr To implicit_cast(typename y_absl::internal::identity_t<To> to) {
+constexpr To implicit_cast(typename y_absl::internal::identity_t<To> to) {
return to;
}
@@ -182,6 +182,6 @@ inline Dest bit_cast(const Source& source) {
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_BASE_CASTS_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/config.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/config.h
index e8e3fd1b32..162843aa00 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/config.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/config.h
@@ -33,7 +33,7 @@
// selectively include the `mmap.h` header and bracket code using that feature
// in the macro:
//
-// #include "y_absl/base/config.h"
+// #include "y_absl/base/config.h"
//
// #ifdef ABSL_HAVE_MMAP
// #include "sys/mman.h"
@@ -63,8 +63,8 @@
#include <TargetConditionals.h>
#endif
-#include "y_absl/base/options.h"
-#include "y_absl/base/policy_checks.h"
+#include "y_absl/base/options.h"
+#include "y_absl/base/policy_checks.h"
// Abseil long-term support (LTS) releases will define
// `ABSL_LTS_RELEASE_VERSION` to the integer representing the date string of the
@@ -261,7 +261,7 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
// ABSL_HAVE_SOURCE_LOCATION_CURRENT
//
-// Indicates whether `y_absl::SourceLocation::current()` will return useful
+// Indicates whether `y_absl::SourceLocation::current()` will return useful
// information in some contexts.
#ifndef ABSL_HAVE_SOURCE_LOCATION_CURRENT
#if ABSL_INTERNAL_HAS_KEYWORD(__builtin_LINE) && \
@@ -517,7 +517,7 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
#elif defined(_WIN32)
#define ABSL_IS_LITTLE_ENDIAN 1
#else
-#error "y_absl endian detection needs to be set up for your compiler"
+#error "y_absl endian detection needs to be set up for your compiler"
#endif
// macOS 10.13 and iOS 10.11 don't let you use <any>, <optional>, or <variant>
@@ -610,7 +610,7 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
// ABSL_USES_STD_ANY
//
-// Indicates whether y_absl::any is an alias for std::any.
+// Indicates whether y_absl::any is an alias for std::any.
#if !defined(ABSL_OPTION_USE_STD_ANY)
#error options.h is misconfigured.
#elif ABSL_OPTION_USE_STD_ANY == 0 || \
@@ -625,7 +625,7 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
// ABSL_USES_STD_OPTIONAL
//
-// Indicates whether y_absl::optional is an alias for std::optional.
+// Indicates whether y_absl::optional is an alias for std::optional.
#if !defined(ABSL_OPTION_USE_STD_OPTIONAL)
#error options.h is misconfigured.
#elif ABSL_OPTION_USE_STD_OPTIONAL == 0 || \
@@ -640,7 +640,7 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
// ABSL_USES_STD_VARIANT
//
-// Indicates whether y_absl::variant is an alias for std::variant.
+// Indicates whether y_absl::variant is an alias for std::variant.
#if !defined(ABSL_OPTION_USE_STD_VARIANT)
#error options.h is misconfigured.
#elif ABSL_OPTION_USE_STD_VARIANT == 0 || \
@@ -655,7 +655,7 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
// ABSL_USES_STD_STRING_VIEW
//
-// Indicates whether y_absl::string_view is an alias for std::string_view.
+// Indicates whether y_absl::string_view is an alias for std::string_view.
#if !defined(ABSL_OPTION_USE_STD_STRING_VIEW)
#error options.h is misconfigured.
#elif ABSL_OPTION_USE_STD_STRING_VIEW == 0 || \
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/const_init.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/const_init.h
index 6dd29294fd..4bab055dda 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/const_init.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/const_init.h
@@ -51,19 +51,19 @@
//
// For a few core Abseil classes, we make a best effort to allow for safe global
// instances, even though these classes have non-trivial destructors. These
-// objects can be created with the y_absl::kConstInit tag. For example:
-// ABSL_CONST_INIT y_absl::Mutex global_mutex(y_absl::kConstInit);
+// objects can be created with the y_absl::kConstInit tag. For example:
+// ABSL_CONST_INIT y_absl::Mutex global_mutex(y_absl::kConstInit);
//
-// The line above declares a global variable of type y_absl::Mutex which can be
+// The line above declares a global variable of type y_absl::Mutex which can be
// accessed at any point during startup or shutdown. global_mutex's destructor
// will still run, but will not invalidate the object. Note that C++ specifies
// that accessing an object after its destructor has run results in undefined
// behavior, but this pattern works on the toolchains we support.
//
-// The y_absl::kConstInit tag should only be used to define objects with static
+// The y_absl::kConstInit tag should only be used to define objects with static
// or thread_local storage duration.
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
enum ConstInitType {
@@ -71,6 +71,6 @@ enum ConstInitType {
};
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_BASE_CONST_INIT_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/atomic_hook.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/atomic_hook.h
index 9923de44f7..5bdf360a57 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/atomic_hook.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/atomic_hook.h
@@ -35,7 +35,7 @@
#define ABSL_HAVE_WORKING_ATOMIC_POINTER 1
#endif
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace base_internal {
@@ -195,6 +195,6 @@ class AtomicHook<ReturnType (*)(Args...)> {
} // namespace base_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_BASE_INTERNAL_ATOMIC_HOOK_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/atomic_hook_test_helper.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/atomic_hook_test_helper.h
index 0d64d626e7..e600d27f4f 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/atomic_hook_test_helper.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/atomic_hook_test_helper.h
@@ -15,20 +15,20 @@
#ifndef ABSL_BASE_ATOMIC_HOOK_TEST_HELPER_H_
#define ABSL_BASE_ATOMIC_HOOK_TEST_HELPER_H_
-#include "y_absl/base/internal/atomic_hook.h"
+#include "y_absl/base/internal/atomic_hook.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace atomic_hook_internal {
using VoidF = void (*)();
-extern y_absl::base_internal::AtomicHook<VoidF> func;
+extern y_absl::base_internal::AtomicHook<VoidF> func;
extern int default_func_calls;
void DefaultFunc();
void RegisterFunc(VoidF func);
} // namespace atomic_hook_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_BASE_ATOMIC_HOOK_TEST_HELPER_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/cycleclock.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/cycleclock.cc
index dfb79fb656..6b43f7c184 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/cycleclock.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/cycleclock.cc
@@ -20,14 +20,14 @@
// with modifications by m3b. See also
// https://setisvn.ssl.berkeley.edu/svn/lib/fftw-3.0.1/kernel/cycle.h
-#include "y_absl/base/internal/cycleclock.h"
+#include "y_absl/base/internal/cycleclock.h"
#include <atomic>
#include <chrono> // NOLINT(build/c++11)
-#include "y_absl/base/internal/unscaledcycleclock.h"
+#include "y_absl/base/internal/unscaledcycleclock.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace base_internal {
@@ -104,4 +104,4 @@ double CycleClock::Frequency() {
} // namespace base_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/cycleclock.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/cycleclock.h
index 1ebe79b0d1..389c9093e3 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/cycleclock.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/cycleclock.h
@@ -46,7 +46,7 @@
#include "y_absl/base/config.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace base_internal {
@@ -89,6 +89,6 @@ class CycleClockSource {
} // namespace base_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_BASE_INTERNAL_CYCLECLOCK_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/direct_mmap.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/direct_mmap.h
index f129dfa49b..82be9f94ab 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/direct_mmap.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/direct_mmap.h
@@ -18,7 +18,7 @@
#ifndef ABSL_BASE_INTERNAL_DIRECT_MMAP_H_
#define ABSL_BASE_INTERNAL_DIRECT_MMAP_H_
-#include "y_absl/base/config.h"
+#include "y_absl/base/config.h"
#if ABSL_HAVE_MMAP
@@ -65,7 +65,7 @@ extern "C" void* __mmap2(void*, size_t, int, int, int, size_t);
#define SYS_mmap2 __NR_mmap2
#endif
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace base_internal {
@@ -138,14 +138,14 @@ inline int DirectMunmap(void* start, size_t length) {
} // namespace base_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#else // !__linux__
// For non-linux platforms where we have mmap, just dispatch directly to the
// actual mmap()/munmap() methods.
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace base_internal {
@@ -160,7 +160,7 @@ inline int DirectMunmap(void* start, size_t length) {
} // namespace base_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // __linux__
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/endian.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/endian.h
index 70a2c25f29..0f7adb8bf6 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/endian.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/endian.h
@@ -27,11 +27,11 @@
#include <cstdint>
#include "y_absl/base/casts.h"
-#include "y_absl/base/config.h"
-#include "y_absl/base/internal/unaligned_access.h"
-#include "y_absl/base/port.h"
+#include "y_absl/base/config.h"
+#include "y_absl/base/internal/unaligned_access.h"
+#include "y_absl/base/port.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// Use compiler byte-swapping intrinsics if they are available. 32-bit
@@ -322,6 +322,6 @@ inline void Store64(void *p, uint64_t v) {
} // namespace big_endian
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_BASE_INTERNAL_ENDIAN_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/exception_safety_testing.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/exception_safety_testing.h
index 5f28af8acb..3009f17875 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/exception_safety_testing.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/exception_safety_testing.h
@@ -17,7 +17,7 @@
#ifndef ABSL_BASE_INTERNAL_EXCEPTION_SAFETY_TESTING_H_
#define ABSL_BASE_INTERNAL_EXCEPTION_SAFETY_TESTING_H_
-#include "y_absl/base/config.h"
+#include "y_absl/base/config.h"
#ifdef ABSL_HAVE_EXCEPTIONS
@@ -31,12 +31,12 @@
#include <unordered_map>
#include "gtest/gtest.h"
-#include "y_absl/base/internal/pretty_function.h"
-#include "y_absl/memory/memory.h"
-#include "y_absl/meta/type_traits.h"
-#include "y_absl/strings/string_view.h"
-#include "y_absl/strings/substitute.h"
-#include "y_absl/utility/utility.h"
+#include "y_absl/base/internal/pretty_function.h"
+#include "y_absl/memory/memory.h"
+#include "y_absl/meta/type_traits.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/strings/substitute.h"
+#include "y_absl/utility/utility.h"
namespace testing {
@@ -44,29 +44,29 @@ enum class TypeSpec;
enum class AllocSpec;
constexpr TypeSpec operator|(TypeSpec a, TypeSpec b) {
- using T = y_absl::underlying_type_t<TypeSpec>;
+ using T = y_absl::underlying_type_t<TypeSpec>;
return static_cast<TypeSpec>(static_cast<T>(a) | static_cast<T>(b));
}
constexpr TypeSpec operator&(TypeSpec a, TypeSpec b) {
- using T = y_absl::underlying_type_t<TypeSpec>;
+ using T = y_absl::underlying_type_t<TypeSpec>;
return static_cast<TypeSpec>(static_cast<T>(a) & static_cast<T>(b));
}
constexpr AllocSpec operator|(AllocSpec a, AllocSpec b) {
- using T = y_absl::underlying_type_t<AllocSpec>;
+ using T = y_absl::underlying_type_t<AllocSpec>;
return static_cast<AllocSpec>(static_cast<T>(a) | static_cast<T>(b));
}
constexpr AllocSpec operator&(AllocSpec a, AllocSpec b) {
- using T = y_absl::underlying_type_t<AllocSpec>;
+ using T = y_absl::underlying_type_t<AllocSpec>;
return static_cast<AllocSpec>(static_cast<T>(a) & static_cast<T>(b));
}
namespace exceptions_internal {
-TString GetSpecString(TypeSpec);
-TString GetSpecString(AllocSpec);
+TString GetSpecString(TypeSpec);
+TString GetSpecString(AllocSpec);
struct NoThrowTag {};
struct StrongGuaranteeTagType {};
@@ -75,12 +75,12 @@ struct StrongGuaranteeTagType {};
// exceptions specifically thrown by ThrowingValue.
class TestException {
public:
- explicit TestException(y_absl::string_view msg) : msg_(msg) {}
+ explicit TestException(y_absl::string_view msg) : msg_(msg) {}
virtual ~TestException() {}
virtual const char* what() const noexcept { return msg_.c_str(); }
private:
- TString msg_;
+ TString msg_;
};
// TestBadAllocException exists because allocation functions must throw an
@@ -90,7 +90,7 @@ class TestException {
// bad_alloc exception in TestExceptionSafety.
class TestBadAllocException : public std::bad_alloc, public TestException {
public:
- explicit TestBadAllocException(y_absl::string_view msg) : TestException(msg) {}
+ explicit TestBadAllocException(y_absl::string_view msg) : TestException(msg) {}
using TestException::what;
};
@@ -102,14 +102,14 @@ inline void SetCountdown(int i = 0) { countdown = i; }
// Sets the countdown to the terminal value -1
inline void UnsetCountdown() { SetCountdown(-1); }
-void MaybeThrow(y_absl::string_view msg, bool throw_bad_alloc = false);
+void MaybeThrow(y_absl::string_view msg, bool throw_bad_alloc = false);
testing::AssertionResult FailureMessage(const TestException& e,
int countdown) noexcept;
struct TrackedAddress {
bool is_alive;
- TString description;
+ TString description;
};
// Inspects the constructions and destructions of anything inheriting from
@@ -136,7 +136,7 @@ class ConstructorTracker {
}
}
- static void ObjectConstructed(void* address, TString description) {
+ static void ObjectConstructed(void* address, TString description) {
if (!CurrentlyTracking()) return;
TrackedAddress& tracked_address =
@@ -172,11 +172,11 @@ class ConstructorTracker {
return current_tracker_instance_ != nullptr;
}
- static TString ErrorMessage(void* address,
- const TString& address_description,
+ static TString ErrorMessage(void* address,
+ const TString& address_description,
int countdown,
- const TString& error_description) {
- return y_absl::Substitute(
+ const TString& error_description) {
+ return y_absl::Substitute(
"With coundtown at $0:\n"
" $1\n"
" Object originally constructed by $2\n"
@@ -196,7 +196,7 @@ class TrackedObject {
TrackedObject(TrackedObject&&) = delete;
protected:
- explicit TrackedObject(TString description) {
+ explicit TrackedObject(TString description) {
ConstructorTracker::ObjectConstructed(this, std::move(description));
}
@@ -294,7 +294,7 @@ class ThrowingValue : private exceptions_internal::TrackedObject {
ThrowingValue(int i, exceptions_internal::NoThrowTag) noexcept
: TrackedObject(GetInstanceString(i)), dummy_(i) {}
- // y_absl expects nothrow destructors
+ // y_absl expects nothrow destructors
~ThrowingValue() noexcept = default;
ThrowingValue& operator=(const ThrowingValue& other) noexcept(
@@ -592,8 +592,8 @@ class ThrowingValue : private exceptions_internal::TrackedObject {
const int& Get() const noexcept { return dummy_; }
private:
- static TString GetInstanceString(int dummy) {
- return y_absl::StrCat("ThrowingValue<",
+ static TString GetInstanceString(int dummy) {
+ return y_absl::StrCat("ThrowingValue<",
exceptions_internal::GetSpecString(Spec), ">(", dummy,
")");
}
@@ -753,8 +753,8 @@ class ThrowingAllocator : private exceptions_internal::TrackedObject {
friend class ThrowingAllocator;
private:
- static TString GetInstanceString(int dummy) {
- return y_absl::StrCat("ThrowingAllocator<",
+ static TString GetInstanceString(int dummy) {
+ return y_absl::StrCat("ThrowingAllocator<",
exceptions_internal::GetSpecString(Spec), ">(", dummy,
")");
}
@@ -768,10 +768,10 @@ class ThrowingAllocator : private exceptions_internal::TrackedObject {
if (*dummy_ < 0) std::abort();
}
- void ReadStateAndMaybeThrow(y_absl::string_view msg) const {
+ void ReadStateAndMaybeThrow(y_absl::string_view msg) const {
if (!IsSpecified(AllocSpec::kNoThrowAllocate)) {
exceptions_internal::MaybeThrow(
- y_absl::Substitute("Allocator id $0 threw from $1", *dummy_, msg));
+ y_absl::Substitute("Allocator id $0 threw from $1", *dummy_, msg));
}
}
@@ -834,7 +834,7 @@ template <typename T>
class DefaultFactory {
public:
explicit DefaultFactory(const T& t) : t_(t) {}
- std::unique_ptr<T> operator()() const { return y_absl::make_unique<T>(t_); }
+ std::unique_ptr<T> operator()() const { return y_absl::make_unique<T>(t_); }
private:
T t_;
@@ -842,7 +842,7 @@ class DefaultFactory {
template <size_t LazyContractsCount, typename LazyFactory,
typename LazyOperation>
-using EnableIfTestable = typename y_absl::enable_if_t<
+using EnableIfTestable = typename y_absl::enable_if_t<
LazyContractsCount != 0 &&
!std::is_same<LazyFactory, UninitializedT>::value &&
!std::is_same<LazyOperation, UninitializedT>::value>;
@@ -994,7 +994,7 @@ class ExceptionSafetyTestBuilder {
* method tester.WithInitialValue(...).
*/
template <typename NewFactory>
- ExceptionSafetyTestBuilder<y_absl::decay_t<NewFactory>, Operation, Contracts...>
+ ExceptionSafetyTestBuilder<y_absl::decay_t<NewFactory>, Operation, Contracts...>
WithFactory(const NewFactory& new_factory) const {
return {new_factory, operation_, contracts_};
}
@@ -1005,7 +1005,7 @@ class ExceptionSafetyTestBuilder {
* newly created tester.
*/
template <typename NewOperation>
- ExceptionSafetyTestBuilder<Factory, y_absl::decay_t<NewOperation>, Contracts...>
+ ExceptionSafetyTestBuilder<Factory, y_absl::decay_t<NewOperation>, Contracts...>
WithOperation(const NewOperation& new_operation) const {
return {factory_, new_operation, contracts_};
}
@@ -1025,11 +1025,11 @@ class ExceptionSafetyTestBuilder {
*/
template <typename... MoreContracts>
ExceptionSafetyTestBuilder<Factory, Operation, Contracts...,
- y_absl::decay_t<MoreContracts>...>
+ y_absl::decay_t<MoreContracts>...>
WithContracts(const MoreContracts&... more_contracts) const {
return {
factory_, operation_,
- std::tuple_cat(contracts_, std::tuple<y_absl::decay_t<MoreContracts>...>(
+ std::tuple_cat(contracts_, std::tuple<y_absl::decay_t<MoreContracts>...>(
more_contracts...))};
}
@@ -1053,7 +1053,7 @@ class ExceptionSafetyTestBuilder {
typename NewOperation,
typename = EnableIfTestable<sizeof...(Contracts), Factory, NewOperation>>
testing::AssertionResult Test(const NewOperation& new_operation) const {
- return TestImpl(new_operation, y_absl::index_sequence_for<Contracts...>());
+ return TestImpl(new_operation, y_absl::index_sequence_for<Contracts...>());
}
/*
@@ -1089,7 +1089,7 @@ class ExceptionSafetyTestBuilder {
template <typename SelectedOperation, size_t... Indices>
testing::AssertionResult TestImpl(SelectedOperation selected_operation,
- y_absl::index_sequence<Indices...>) const {
+ y_absl::index_sequence<Indices...>) const {
return ExceptionSafetyTest<FactoryElementType<Factory>>(
factory_, selected_operation, std::get<Indices>(contracts_)...)
.Test();
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/exception_testing.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/exception_testing.h
index 8d29682c06..f2dd04b9d6 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/exception_testing.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/exception_testing.h
@@ -18,7 +18,7 @@
#define ABSL_BASE_INTERNAL_EXCEPTION_TESTING_H_
#include "gtest/gtest.h"
-#include "y_absl/base/config.h"
+#include "y_absl/base/config.h"
// ABSL_BASE_INTERNAL_EXPECT_FAIL tests either for a specified thrown exception
// if exceptions are enabled, or for death with a specified text in the error
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/hide_ptr.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/hide_ptr.h
index d956570954..ccdad25cb7 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/hide_ptr.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/hide_ptr.h
@@ -19,7 +19,7 @@
#include "y_absl/base/config.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace base_internal {
@@ -30,7 +30,7 @@ constexpr uintptr_t HideMask() {
}
// Hide a pointer from the leak checker. For internal use only.
-// Differs from y_absl::IgnoreLeak(ptr) in that y_absl::IgnoreLeak(ptr) causes ptr
+// Differs from y_absl::IgnoreLeak(ptr) in that y_absl::IgnoreLeak(ptr) causes ptr
// and all objects reachable from ptr to be ignored by the leak checker.
template <class T>
inline uintptr_t HidePtr(T* ptr) {
@@ -46,6 +46,6 @@ inline T* UnhidePtr(uintptr_t hidden) {
} // namespace base_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_BASE_INTERNAL_HIDE_PTR_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/identity.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/identity.h
index ef4cac601d..2360afeed2 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/identity.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/identity.h
@@ -18,7 +18,7 @@
#include "y_absl/base/config.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace internal {
@@ -32,6 +32,6 @@ using identity_t = typename identity<T>::type;
} // namespace internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_BASE_INTERNAL_IDENTITY_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/inline_variable.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/inline_variable.h
index d608fe41a3..38799c5722 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/inline_variable.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/inline_variable.h
@@ -17,7 +17,7 @@
#include <type_traits>
-#include "y_absl/base/internal/identity.h"
+#include "y_absl/base/internal/identity.h"
// File:
// This file define a macro that allows the creation of or emulation of C++17
@@ -68,7 +68,7 @@
// types, etc..
#if defined(__clang__)
#define ABSL_INTERNAL_EXTERN_DECL(type, name) \
- extern const ::y_absl::internal::identity_t<type> name;
+ extern const ::y_absl::internal::identity_t<type> name;
#else // Otherwise, just define the macro to do nothing.
#define ABSL_INTERNAL_EXTERN_DECL(type, name)
#endif // defined(__clang__)
@@ -76,7 +76,7 @@
// See above comment at top of file for details.
#define ABSL_INTERNAL_INLINE_CONSTEXPR(type, name, init) \
ABSL_INTERNAL_EXTERN_DECL(type, name) \
- inline constexpr ::y_absl::internal::identity_t<type> name = init
+ inline constexpr ::y_absl::internal::identity_t<type> name = init
#else
@@ -89,14 +89,14 @@
#define ABSL_INTERNAL_INLINE_CONSTEXPR(var_type, name, init) \
template <class /*AbslInternalDummy*/ = void> \
struct AbslInternalInlineVariableHolder##name { \
- static constexpr ::y_absl::internal::identity_t<var_type> kInstance = init; \
+ static constexpr ::y_absl::internal::identity_t<var_type> kInstance = init; \
}; \
\
template <class AbslInternalDummy> \
- constexpr ::y_absl::internal::identity_t<var_type> \
+ constexpr ::y_absl::internal::identity_t<var_type> \
AbslInternalInlineVariableHolder##name<AbslInternalDummy>::kInstance; \
\
- static constexpr const ::y_absl::internal::identity_t<var_type>& \
+ static constexpr const ::y_absl::internal::identity_t<var_type>& \
name = /* NOLINT */ \
AbslInternalInlineVariableHolder##name<>::kInstance; \
static_assert(sizeof(void (*)(decltype(name))) != 0, \
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/inline_variable_testing.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/inline_variable_testing.h
index bc4f469ff0..190e74e643 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/inline_variable_testing.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/inline_variable_testing.h
@@ -15,9 +15,9 @@
#ifndef ABSL_BASE_INLINE_VARIABLE_TESTING_H_
#define ABSL_BASE_INLINE_VARIABLE_TESTING_H_
-#include "y_absl/base/internal/inline_variable.h"
+#include "y_absl/base/internal/inline_variable.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace inline_variable_testing_internal {
@@ -41,6 +41,6 @@ const int& get_int_b();
} // namespace inline_variable_testing_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_BASE_INLINE_VARIABLE_TESTING_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/invoke.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/invoke.h
index 8b505a9365..928666ff44 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/invoke.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/invoke.h
@@ -39,12 +39,12 @@
#include <type_traits>
#include <utility>
-#include "y_absl/meta/type_traits.h"
+#include "y_absl/meta/type_traits.h"
// The following code is internal implementation detail. See the comment at the
// top of this file for the API documentation.
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace base_internal {
@@ -73,7 +73,7 @@ struct MemFunAndRef : StrippedAccept<MemFunAndRef> {
template <typename MemFunType, typename C, typename Obj, typename... Args>
struct AcceptImpl<MemFunType C::*, Obj, Args...>
: std::integral_constant<bool, std::is_base_of<C, Obj>::value &&
- y_absl::is_function<MemFunType>::value> {
+ y_absl::is_function<MemFunType>::value> {
};
template <typename MemFun, typename Obj, typename... Args>
@@ -94,7 +94,7 @@ struct MemFunAndPtr : StrippedAccept<MemFunAndPtr> {
template <typename MemFunType, typename C, typename Ptr, typename... Args>
struct AcceptImpl<MemFunType C::*, Ptr, Args...>
: std::integral_constant<bool, !std::is_base_of<C, Ptr>::value &&
- y_absl::is_function<MemFunType>::value> {
+ y_absl::is_function<MemFunType>::value> {
};
template <typename MemFun, typename Ptr, typename... Args>
@@ -116,7 +116,7 @@ struct DataMemAndRef : StrippedAccept<DataMemAndRef> {
template <typename R, typename C, typename Obj>
struct AcceptImpl<R C::*, Obj>
: std::integral_constant<bool, std::is_base_of<C, Obj>::value &&
- !y_absl::is_function<R>::value> {};
+ !y_absl::is_function<R>::value> {};
template <typename DataMem, typename Ref>
static decltype(std::declval<Ref>().*std::declval<DataMem>()) Invoke(
@@ -134,7 +134,7 @@ struct DataMemAndPtr : StrippedAccept<DataMemAndPtr> {
template <typename R, typename C, typename Ptr>
struct AcceptImpl<R C::*, Ptr>
: std::integral_constant<bool, !std::is_base_of<C, Ptr>::value &&
- !y_absl::is_function<R>::value> {};
+ !y_absl::is_function<R>::value> {};
template <typename DataMem, typename Ptr>
static decltype((*std::declval<Ptr>()).*std::declval<DataMem>()) Invoke(
@@ -182,6 +182,6 @@ invoke_result_t<F, Args...> invoke(F&& f, Args&&... args) {
}
} // namespace base_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_BASE_INTERNAL_INVOKE_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/low_level_alloc.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/low_level_alloc.cc
index 8d39bec9e1..0c477d1b28 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/low_level_alloc.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/low_level_alloc.cc
@@ -17,16 +17,16 @@
// This allocator is slow and wasteful of memory;
// it should not be used when performance is key.
-#include "y_absl/base/internal/low_level_alloc.h"
+#include "y_absl/base/internal/low_level_alloc.h"
#include <type_traits>
-#include "y_absl/base/call_once.h"
-#include "y_absl/base/config.h"
-#include "y_absl/base/internal/direct_mmap.h"
-#include "y_absl/base/internal/scheduling_mode.h"
-#include "y_absl/base/macros.h"
-#include "y_absl/base/thread_annotations.h"
+#include "y_absl/base/call_once.h"
+#include "y_absl/base/config.h"
+#include "y_absl/base/internal/direct_mmap.h"
+#include "y_absl/base/internal/scheduling_mode.h"
+#include "y_absl/base/macros.h"
+#include "y_absl/base/thread_annotations.h"
// LowLevelAlloc requires that the platform support low-level
// allocation of virtual memory. Platforms lacking this cannot use
@@ -49,9 +49,9 @@
#include <cstddef>
#include <new> // for placement-new
-#include "y_absl/base/dynamic_annotations.h"
-#include "y_absl/base/internal/raw_logging.h"
-#include "y_absl/base/internal/spinlock.h"
+#include "y_absl/base/dynamic_annotations.h"
+#include "y_absl/base/internal/raw_logging.h"
+#include "y_absl/base/internal/spinlock.h"
// MAP_ANONYMOUS
#if defined(__APPLE__)
@@ -62,7 +62,7 @@
#endif // !MAP_ANONYMOUS
#endif // __APPLE__
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace base_internal {
@@ -235,7 +235,7 @@ alignas(
// We must use LowLevelCallOnce here to construct the global arenas, rather than
// using function-level statics, to avoid recursively invoking the scheduler.
-y_absl::once_flag create_globals_once;
+y_absl::once_flag create_globals_once;
void CreateGlobalArenas() {
new (&default_arena_storage)
@@ -615,6 +615,6 @@ void *LowLevelAlloc::AllocWithArena(size_t request, Arena *arena) {
} // namespace base_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_LOW_LEVEL_ALLOC_MISSING
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/low_level_alloc.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/low_level_alloc.h
index 0354b1585c..fa109d53ec 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/low_level_alloc.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/low_level_alloc.h
@@ -28,8 +28,8 @@
#include <cstdint>
-#include "y_absl/base/attributes.h"
-#include "y_absl/base/config.h"
+#include "y_absl/base/attributes.h"
+#include "y_absl/base/config.h"
// LowLevelAlloc requires that the platform support low-level
// allocation of virtual memory. Platforms lacking this cannot use
@@ -52,9 +52,9 @@
#include <cstddef>
-#include "y_absl/base/port.h"
+#include "y_absl/base/port.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace base_internal {
@@ -121,6 +121,6 @@ class LowLevelAlloc {
} // namespace base_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_BASE_INTERNAL_LOW_LEVEL_ALLOC_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/low_level_alloc/ya.make b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/low_level_alloc/ya.make
index 39d05b98ea..fabba74677 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/low_level_alloc/ya.make
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/low_level_alloc/ya.make
@@ -12,10 +12,10 @@ OWNER(
LICENSE(Apache-2.0)
PEERDIR(
- contrib/restricted/abseil-cpp-tstring/y_absl/base
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait
- contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
+ contrib/restricted/abseil-cpp-tstring/y_absl/base
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
)
ADDINCL(
@@ -24,7 +24,7 @@ ADDINCL(
NO_COMPILER_WARNINGS()
-SRCDIR(contrib/restricted/abseil-cpp-tstring/y_absl/base/internal)
+SRCDIR(contrib/restricted/abseil-cpp-tstring/y_absl/base/internal)
SRCS(
low_level_alloc.cc
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/low_level_scheduling.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/low_level_scheduling.h
index 01d26e0002..61eb4ac643 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/low_level_scheduling.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/low_level_scheduling.h
@@ -19,8 +19,8 @@
#define ABSL_BASE_INTERNAL_LOW_LEVEL_SCHEDULING_H_
#include "y_absl/base/internal/raw_logging.h"
-#include "y_absl/base/internal/scheduling_mode.h"
-#include "y_absl/base/macros.h"
+#include "y_absl/base/internal/scheduling_mode.h"
+#include "y_absl/base/macros.h"
// The following two declarations exist so SchedulingGuard may friend them with
// the appropriate language linkage. These callbacks allow libc internals, such
@@ -28,7 +28,7 @@
extern "C" bool __google_disable_rescheduling(void);
extern "C" void __google_enable_rescheduling(bool disable_result);
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
class CondVar;
class Mutex;
@@ -129,6 +129,6 @@ inline SchedulingGuard::ScopedEnable::~ScopedEnable() {
} // namespace base_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_BASE_INTERNAL_LOW_LEVEL_SCHEDULING_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/per_thread_tls.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/per_thread_tls.h
index bdea411548..943f72a433 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/per_thread_tls.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/per_thread_tls.h
@@ -32,7 +32,7 @@
// GCC supports it if the appropriate version of glibc is available,
// which the programmer can indicate by defining ABSL_HAVE_TLS
-#include "y_absl/base/port.h" // For ABSL_HAVE_TLS
+#include "y_absl/base/port.h" // For ABSL_HAVE_TLS
#if defined(ABSL_PER_THREAD_TLS)
#error ABSL_PER_THREAD_TLS cannot be directly set
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging.cc
index 8413ca0adf..ea9a48c2c0 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging.cc
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/base/internal/raw_logging.h"
+#include "y_absl/base/internal/raw_logging.h"
#include <stddef.h>
#include <cstdarg>
@@ -20,10 +20,10 @@
#include <cstdlib>
#include <cstring>
-#include "y_absl/base/attributes.h"
-#include "y_absl/base/config.h"
-#include "y_absl/base/internal/atomic_hook.h"
-#include "y_absl/base/log_severity.h"
+#include "y_absl/base/attributes.h"
+#include "y_absl/base/config.h"
+#include "y_absl/base/internal/atomic_hook.h"
+#include "y_absl/base/log_severity.h"
// We know how to perform low-level writes to stderr in POSIX and Windows. For
// these platforms, we define the token ABSL_LOW_LEVEL_WRITE_SUPPORTED.
@@ -130,9 +130,9 @@ bool DoRawLog(char** buf, int* size, const char* format, ...) {
return true;
}
-void RawLogVA(y_absl::LogSeverity severity, const char* file, int line,
+void RawLogVA(y_absl::LogSeverity severity, const char* file, int line,
const char* format, va_list ap) ABSL_PRINTF_ATTRIBUTE(4, 0);
-void RawLogVA(y_absl::LogSeverity severity, const char* file, int line,
+void RawLogVA(y_absl::LogSeverity severity, const char* file, int line,
const char* format, va_list ap) {
char buffer[kLogBufSize];
char* buf = buffer;
@@ -144,8 +144,8 @@ void RawLogVA(y_absl::LogSeverity severity, const char* file, int line,
#endif
#ifdef ABSL_MIN_LOG_LEVEL
- if (severity < static_cast<y_absl::LogSeverity>(ABSL_MIN_LOG_LEVEL) &&
- severity < y_absl::LogSeverity::kFatal) {
+ if (severity < static_cast<y_absl::LogSeverity>(ABSL_MIN_LOG_LEVEL) &&
+ severity < y_absl::LogSeverity::kFatal) {
enabled = false;
}
#endif
@@ -177,7 +177,7 @@ void RawLogVA(y_absl::LogSeverity severity, const char* file, int line,
// Abort the process after logging a FATAL message, even if the output itself
// was suppressed.
- if (severity == y_absl::LogSeverity::kFatal) {
+ if (severity == y_absl::LogSeverity::kFatal) {
abort_hook(file, line, buffer, prefix_end, buffer + kLogBufSize);
abort();
}
@@ -209,7 +209,7 @@ void SafeWriteToStderr(const char *s, size_t len) {
#endif
}
-void RawLog(y_absl::LogSeverity severity, const char* file, int line,
+void RawLog(y_absl::LogSeverity severity, const char* file, int line,
const char* format, ...) {
va_list ap;
va_start(ap, format);
@@ -239,4 +239,4 @@ void RegisterInternalLogFunction(InternalLogFunction func) {
} // namespace raw_logging_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging.h
index 2839288651..4d5c77003f 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging.h
@@ -21,13 +21,13 @@
#include <util/generic/string.h>
-#include "y_absl/base/attributes.h"
+#include "y_absl/base/attributes.h"
#include "y_absl/base/config.h"
-#include "y_absl/base/internal/atomic_hook.h"
-#include "y_absl/base/log_severity.h"
-#include "y_absl/base/macros.h"
+#include "y_absl/base/internal/atomic_hook.h"
+#include "y_absl/base/log_severity.h"
+#include "y_absl/base/macros.h"
#include "y_absl/base/optimization.h"
-#include "y_absl/base/port.h"
+#include "y_absl/base/port.h"
// This is similar to LOG(severity) << format..., but
// * it is to be used ONLY by low-level modules that can't use normal LOG()
@@ -44,9 +44,9 @@
#define ABSL_RAW_LOG(severity, ...) \
do { \
constexpr const char* absl_raw_logging_internal_basename = \
- ::y_absl::raw_logging_internal::Basename(__FILE__, \
+ ::y_absl::raw_logging_internal::Basename(__FILE__, \
sizeof(__FILE__) - 1); \
- ::y_absl::raw_logging_internal::RawLog(ABSL_RAW_LOGGING_INTERNAL_##severity, \
+ ::y_absl::raw_logging_internal::RawLog(ABSL_RAW_LOGGING_INTERNAL_##severity, \
absl_raw_logging_internal_basename, \
__LINE__, __VA_ARGS__); \
} while (0)
@@ -85,20 +85,20 @@
#define ABSL_INTERNAL_CHECK(condition, message) \
do { \
if (ABSL_PREDICT_FALSE(!(condition))) { \
- TString death_message = "Check " #condition " failed: "; \
- death_message += TString(message); \
+ TString death_message = "Check " #condition " failed: "; \
+ death_message += TString(message); \
ABSL_INTERNAL_LOG(FATAL, death_message); \
} \
} while (0)
-#define ABSL_RAW_LOGGING_INTERNAL_INFO ::y_absl::LogSeverity::kInfo
-#define ABSL_RAW_LOGGING_INTERNAL_WARNING ::y_absl::LogSeverity::kWarning
-#define ABSL_RAW_LOGGING_INTERNAL_ERROR ::y_absl::LogSeverity::kError
-#define ABSL_RAW_LOGGING_INTERNAL_FATAL ::y_absl::LogSeverity::kFatal
+#define ABSL_RAW_LOGGING_INTERNAL_INFO ::y_absl::LogSeverity::kInfo
+#define ABSL_RAW_LOGGING_INTERNAL_WARNING ::y_absl::LogSeverity::kWarning
+#define ABSL_RAW_LOGGING_INTERNAL_ERROR ::y_absl::LogSeverity::kError
+#define ABSL_RAW_LOGGING_INTERNAL_FATAL ::y_absl::LogSeverity::kFatal
#define ABSL_RAW_LOGGING_INTERNAL_LEVEL(severity) \
- ::y_absl::NormalizeLogSeverity(severity)
+ ::y_absl::NormalizeLogSeverity(severity)
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace raw_logging_internal {
@@ -106,7 +106,7 @@ namespace raw_logging_internal {
// Logs format... at "severity" level, reporting it
// as called from file:line.
// This does not allocate memory or acquire locks.
-void RawLog(y_absl::LogSeverity severity, const char* file, int line,
+void RawLog(y_absl::LogSeverity severity, const char* file, int line,
const char* format, ...) ABSL_PRINTF_ATTRIBUTE(4, 5);
// Writes the provided buffer directly to stderr, in a safe, low-level manner.
@@ -151,7 +151,7 @@ bool RawLoggingFullySupported();
// 'buffer' and 'buf_size' are pointers to the buffer and buffer size. If the
// hook writes a prefix, it must increment *buffer and decrement *buf_size
// accordingly.
-using LogPrefixHook = bool (*)(y_absl::LogSeverity severity, const char* file,
+using LogPrefixHook = bool (*)(y_absl::LogSeverity severity, const char* file,
int line, char** buffer, int* buf_size);
// Function type for a raw_logging customization hook called to abort a process
@@ -170,9 +170,9 @@ using AbortHook = void (*)(const char* file, int line, const char* buf_start,
//
// TODO(gfalcon): When string_view no longer depends on base, change this
// interface to take its message as a string_view instead.
-using InternalLogFunction = void (*)(y_absl::LogSeverity severity,
+using InternalLogFunction = void (*)(y_absl::LogSeverity severity,
const char* file, int line,
- const TString& message);
+ const TString& message);
ABSL_INTERNAL_ATOMIC_HOOK_ATTRIBUTES ABSL_DLL extern base_internal::AtomicHook<
InternalLogFunction>
@@ -190,6 +190,6 @@ void RegisterInternalLogFunction(InternalLogFunction func);
} // namespace raw_logging_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_BASE_INTERNAL_RAW_LOGGING_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging/ya.make b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging/ya.make
index 08f768c777..e7cfe7d216 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging/ya.make
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging/ya.make
@@ -12,7 +12,7 @@ OWNER(
LICENSE(Apache-2.0)
PEERDIR(
- contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
)
ADDINCL(
@@ -21,7 +21,7 @@ ADDINCL(
NO_COMPILER_WARNINGS()
-SRCDIR(contrib/restricted/abseil-cpp-tstring/y_absl/base/internal)
+SRCDIR(contrib/restricted/abseil-cpp-tstring/y_absl/base/internal)
SRCS(
raw_logging.cc
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/scheduling_mode.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/scheduling_mode.h
index 9c7af08a42..0165e7233b 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/scheduling_mode.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/scheduling_mode.h
@@ -20,7 +20,7 @@
#include "y_absl/base/config.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace base_internal {
@@ -53,6 +53,6 @@ enum SchedulingMode {
} // namespace base_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_BASE_INTERNAL_SCHEDULING_MODE_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/scoped_set_env.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/scoped_set_env.cc
index 7968f02db7..e489272b45 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/scoped_set_env.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/scoped_set_env.cc
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/base/internal/scoped_set_env.h"
+#include "y_absl/base/internal/scoped_set_env.h"
#ifdef _WIN32
#include <windows.h>
@@ -20,9 +20,9 @@
#include <cstdlib>
-#include "y_absl/base/internal/raw_logging.h"
+#include "y_absl/base/internal/raw_logging.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace base_internal {
@@ -78,4 +78,4 @@ ScopedSetEnv::~ScopedSetEnv() {
} // namespace base_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/scoped_set_env.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/scoped_set_env.h
index 69ba53e1fe..5641562f1b 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/scoped_set_env.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/scoped_set_env.h
@@ -17,11 +17,11 @@
#ifndef ABSL_BASE_INTERNAL_SCOPED_SET_ENV_H_
#define ABSL_BASE_INTERNAL_SCOPED_SET_ENV_H_
-#include <util/generic/string.h>
-
+#include <util/generic/string.h>
+
#include "y_absl/base/config.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace base_internal {
@@ -31,8 +31,8 @@ class ScopedSetEnv {
~ScopedSetEnv();
private:
- TString var_name_;
- TString old_value_;
+ TString var_name_;
+ TString old_value_;
// True if the environment variable was initially not set.
bool was_unset_;
@@ -40,6 +40,6 @@ class ScopedSetEnv {
} // namespace base_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_BASE_INTERNAL_SCOPED_SET_ENV_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock.cc
index 23bbdac64d..2ee7cde432 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock.cc
@@ -12,18 +12,18 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/base/internal/spinlock.h"
+#include "y_absl/base/internal/spinlock.h"
#include <algorithm>
#include <atomic>
#include <limits>
-#include "y_absl/base/attributes.h"
-#include "y_absl/base/internal/atomic_hook.h"
-#include "y_absl/base/internal/cycleclock.h"
-#include "y_absl/base/internal/spinlock_wait.h"
-#include "y_absl/base/internal/sysinfo.h" /* For NumCPUs() */
-#include "y_absl/base/call_once.h"
+#include "y_absl/base/attributes.h"
+#include "y_absl/base/internal/atomic_hook.h"
+#include "y_absl/base/internal/cycleclock.h"
+#include "y_absl/base/internal/spinlock_wait.h"
+#include "y_absl/base/internal/sysinfo.h" /* For NumCPUs() */
+#include "y_absl/base/call_once.h"
// Description of lock-word:
// 31..00: [............................3][2][1][0]
@@ -53,7 +53,7 @@
// Otherwise, bits [31..3] represent the time spent by the current lock
// holder to acquire the lock. There may be outstanding waiter(s).
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace base_internal {
@@ -85,7 +85,7 @@ SpinLock::SpinLock(base_internal::SchedulingMode mode)
uint32_t SpinLock::SpinLoop() {
// We are already in the slow path of SpinLock, initialize the
// adaptive_spin_count here.
- ABSL_CONST_INIT static y_absl::once_flag init_adaptive_spin_count;
+ ABSL_CONST_INIT static y_absl::once_flag init_adaptive_spin_count;
ABSL_CONST_INIT static int adaptive_spin_count = 0;
base_internal::LowLevelCallOnce(&init_adaptive_spin_count, []() {
adaptive_spin_count = base_internal::NumCPUs() > 1 ? 1000 : 1;
@@ -226,4 +226,4 @@ uint64_t SpinLock::DecodeWaitCycles(uint32_t lock_value) {
} // namespace base_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock.h
index 0c6d685966..ef88cb52c0 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock.h
@@ -34,18 +34,18 @@
#include <atomic>
-#include "y_absl/base/attributes.h"
+#include "y_absl/base/attributes.h"
#include "y_absl/base/const_init.h"
-#include "y_absl/base/dynamic_annotations.h"
-#include "y_absl/base/internal/low_level_scheduling.h"
-#include "y_absl/base/internal/raw_logging.h"
-#include "y_absl/base/internal/scheduling_mode.h"
-#include "y_absl/base/internal/tsan_mutex_interface.h"
-#include "y_absl/base/macros.h"
-#include "y_absl/base/port.h"
-#include "y_absl/base/thread_annotations.h"
-
-namespace y_absl {
+#include "y_absl/base/dynamic_annotations.h"
+#include "y_absl/base/internal/low_level_scheduling.h"
+#include "y_absl/base/internal/raw_logging.h"
+#include "y_absl/base/internal/scheduling_mode.h"
+#include "y_absl/base/internal/tsan_mutex_interface.h"
+#include "y_absl/base/macros.h"
+#include "y_absl/base/port.h"
+#include "y_absl/base/thread_annotations.h"
+
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace base_internal {
@@ -243,6 +243,6 @@ inline uint32_t SpinLock::TryLockInternal(uint32_t lock_value,
} // namespace base_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_BASE_INTERNAL_SPINLOCK_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_akaros.inc b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_akaros.inc
index f893337e0c..69955dc765 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_akaros.inc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_akaros.inc
@@ -16,13 +16,13 @@
#include <atomic>
-#include "y_absl/base/internal/scheduling_mode.h"
+#include "y_absl/base/internal/scheduling_mode.h"
extern "C" {
ABSL_ATTRIBUTE_WEAK void ABSL_INTERNAL_C_SYMBOL(AbslInternalSpinLockDelay)(
std::atomic<uint32_t>* /* lock_word */, uint32_t /* value */,
- int /* loop */, y_absl::base_internal::SchedulingMode /* mode */) {
+ int /* loop */, y_absl::base_internal::SchedulingMode /* mode */) {
// In Akaros, one must take care not to call anything that could cause a
// malloc(), a blocking system call, or a uthread_yield() while holding a
// spinlock. Our callers assume will not call into libraries or other
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_linux.inc b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_linux.inc
index 4a1e285590..5b4480d133 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_linux.inc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_linux.inc
@@ -23,7 +23,7 @@
#include <cstdint>
#include <ctime>
-#include "y_absl/base/attributes.h"
+#include "y_absl/base/attributes.h"
#include "y_absl/base/internal/errno_saver.h"
// The SpinLock lockword is `std::atomic<uint32_t>`. Here we assert that
@@ -58,11 +58,11 @@ extern "C" {
ABSL_ATTRIBUTE_WEAK void ABSL_INTERNAL_C_SYMBOL(AbslInternalSpinLockDelay)(
std::atomic<uint32_t> *w, uint32_t value, int loop,
- y_absl::base_internal::SchedulingMode) {
+ y_absl::base_internal::SchedulingMode) {
y_absl::base_internal::ErrnoSaver errno_saver;
struct timespec tm;
tm.tv_sec = 0;
- tm.tv_nsec = y_absl::base_internal::SpinLockSuggestedDelayNS(loop);
+ tm.tv_nsec = y_absl::base_internal::SpinLockSuggestedDelayNS(loop);
syscall(SYS_futex, w, FUTEX_WAIT | FUTEX_PRIVATE_FLAG, value, &tm);
}
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_posix.inc b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_posix.inc
index 5f057ab085..12a9b86599 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_posix.inc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_posix.inc
@@ -20,14 +20,14 @@
#include <ctime>
#include "y_absl/base/internal/errno_saver.h"
-#include "y_absl/base/internal/scheduling_mode.h"
-#include "y_absl/base/port.h"
+#include "y_absl/base/internal/scheduling_mode.h"
+#include "y_absl/base/port.h"
extern "C" {
ABSL_ATTRIBUTE_WEAK void ABSL_INTERNAL_C_SYMBOL(AbslInternalSpinLockDelay)(
std::atomic<uint32_t>* /* lock_word */, uint32_t /* value */, int loop,
- y_absl::base_internal::SchedulingMode /* mode */) {
+ y_absl::base_internal::SchedulingMode /* mode */) {
y_absl::base_internal::ErrnoSaver errno_saver;
if (loop == 0) {
} else if (loop == 1) {
@@ -35,7 +35,7 @@ ABSL_ATTRIBUTE_WEAK void ABSL_INTERNAL_C_SYMBOL(AbslInternalSpinLockDelay)(
} else {
struct timespec tm;
tm.tv_sec = 0;
- tm.tv_nsec = y_absl::base_internal::SpinLockSuggestedDelayNS(loop);
+ tm.tv_nsec = y_absl::base_internal::SpinLockSuggestedDelayNS(loop);
nanosleep(&tm, nullptr);
}
}
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait.cc
index 1b726d2c0e..138cb3c5f0 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait.cc
@@ -19,19 +19,19 @@
#include <atomic>
#include <cstdint>
-#include "y_absl/base/internal/spinlock_wait.h"
+#include "y_absl/base/internal/spinlock_wait.h"
#if defined(_WIN32)
-#include "y_absl/base/internal/spinlock_win32.inc"
+#include "y_absl/base/internal/spinlock_win32.inc"
#elif defined(__linux__)
-#include "y_absl/base/internal/spinlock_linux.inc"
+#include "y_absl/base/internal/spinlock_linux.inc"
#elif defined(__akaros__)
-#include "y_absl/base/internal/spinlock_akaros.inc"
+#include "y_absl/base/internal/spinlock_akaros.inc"
#else
-#include "y_absl/base/internal/spinlock_posix.inc"
+#include "y_absl/base/internal/spinlock_posix.inc"
#endif
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace base_internal {
@@ -78,4 +78,4 @@ int SpinLockSuggestedDelayNS(int loop) {
} // namespace base_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait.h
index e994951ebb..2e34d7026b 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait.h
@@ -21,9 +21,9 @@
#include <stdint.h>
#include <atomic>
-#include "y_absl/base/internal/scheduling_mode.h"
+#include "y_absl/base/internal/scheduling_mode.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace base_internal {
@@ -64,7 +64,7 @@ int SpinLockSuggestedDelayNS(int loop);
} // namespace base_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
// In some build configurations we pass --detect-odr-violations to the
// gold linker. This causes it to flag weak symbol overrides as ODR
@@ -77,17 +77,17 @@ void ABSL_INTERNAL_C_SYMBOL(AbslInternalSpinLockWake)(std::atomic<uint32_t> *w,
bool all);
void ABSL_INTERNAL_C_SYMBOL(AbslInternalSpinLockDelay)(
std::atomic<uint32_t> *w, uint32_t value, int loop,
- y_absl::base_internal::SchedulingMode scheduling_mode);
+ y_absl::base_internal::SchedulingMode scheduling_mode);
}
-inline void y_absl::base_internal::SpinLockWake(std::atomic<uint32_t> *w,
+inline void y_absl::base_internal::SpinLockWake(std::atomic<uint32_t> *w,
bool all) {
ABSL_INTERNAL_C_SYMBOL(AbslInternalSpinLockWake)(w, all);
}
-inline void y_absl::base_internal::SpinLockDelay(
+inline void y_absl::base_internal::SpinLockDelay(
std::atomic<uint32_t> *w, uint32_t value, int loop,
- y_absl::base_internal::SchedulingMode scheduling_mode) {
+ y_absl::base_internal::SchedulingMode scheduling_mode) {
ABSL_INTERNAL_C_SYMBOL(AbslInternalSpinLockDelay)
(w, value, loop, scheduling_mode);
}
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait/ya.make b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait/ya.make
index b90bdb19de..902ffe394f 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait/ya.make
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait/ya.make
@@ -17,7 +17,7 @@ ADDINCL(
NO_COMPILER_WARNINGS()
-SRCDIR(contrib/restricted/abseil-cpp-tstring/y_absl/base/internal)
+SRCDIR(contrib/restricted/abseil-cpp-tstring/y_absl/base/internal)
SRCS(
spinlock_wait.cc
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_win32.inc b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_win32.inc
index 6ea69285cd..648f74134f 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_win32.inc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_win32.inc
@@ -16,7 +16,7 @@
#include <windows.h>
#include <atomic>
-#include "y_absl/base/internal/scheduling_mode.h"
+#include "y_absl/base/internal/scheduling_mode.h"
extern "C" {
@@ -27,7 +27,7 @@ void ABSL_INTERNAL_C_SYMBOL(AbslInternalSpinLockDelay)(
} else if (loop == 1) {
Sleep(0);
} else {
- Sleep(y_absl::base_internal::SpinLockSuggestedDelayNS(loop) / 1000000);
+ Sleep(y_absl::base_internal::SpinLockSuggestedDelayNS(loop) / 1000000);
}
}
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/sysinfo.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/sysinfo.cc
index 204860e3fb..9eb0cf3f8c 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/sysinfo.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/sysinfo.cc
@@ -12,9 +12,9 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/base/internal/sysinfo.h"
+#include "y_absl/base/internal/sysinfo.h"
-#include "y_absl/base/attributes.h"
+#include "y_absl/base/attributes.h"
#ifdef _WIN32
#include <windows.h>
@@ -50,14 +50,14 @@
#include <utility>
#include <vector>
-#include "y_absl/base/call_once.h"
+#include "y_absl/base/call_once.h"
#include "y_absl/base/config.h"
-#include "y_absl/base/internal/raw_logging.h"
-#include "y_absl/base/internal/spinlock.h"
-#include "y_absl/base/internal/unscaledcycleclock.h"
+#include "y_absl/base/internal/raw_logging.h"
+#include "y_absl/base/internal/spinlock.h"
+#include "y_absl/base/internal/unscaledcycleclock.h"
#include "y_absl/base/thread_annotations.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace base_internal {
@@ -432,7 +432,7 @@ static void FreeTID(void *v) {
intptr_t tid = reinterpret_cast<intptr_t>(v);
int word = tid / kBitsPerWord;
uint32_t mask = ~(1u << (tid % kBitsPerWord));
- y_absl::base_internal::SpinLockHolder lock(&tid_lock);
+ y_absl::base_internal::SpinLockHolder lock(&tid_lock);
assert(0 <= word && static_cast<size_t>(word) < tid_array->size());
(*tid_array)[word] &= mask;
}
@@ -445,14 +445,14 @@ static void InitGetTID() {
}
// Initialize tid_array.
- y_absl::base_internal::SpinLockHolder lock(&tid_lock);
+ y_absl::base_internal::SpinLockHolder lock(&tid_lock);
tid_array = new std::vector<uint32_t>(1);
(*tid_array)[0] = 1; // ID 0 is never-allocated.
}
// Return a per-thread small integer ID from pthread's thread-specific data.
pid_t GetTID() {
- y_absl::call_once(tid_once, InitGetTID);
+ y_absl::call_once(tid_once, InitGetTID);
intptr_t tid = reinterpret_cast<intptr_t>(pthread_getspecific(tid_key));
if (tid != 0) {
@@ -463,7 +463,7 @@ pid_t GetTID() {
size_t word;
{
// Search for the first unused ID.
- y_absl::base_internal::SpinLockHolder lock(&tid_lock);
+ y_absl::base_internal::SpinLockHolder lock(&tid_lock);
// First search for a word in the array that is not all ones.
word = 0;
while (word < tid_array->size() && ~(*tid_array)[word] == 0) {
@@ -505,4 +505,4 @@ pid_t GetCachedTID() {
} // namespace base_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/sysinfo.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/sysinfo.h
index e1d1819f62..0fd7207a38 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/sysinfo.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/sysinfo.h
@@ -31,9 +31,9 @@
#include <cstdint>
#include "y_absl/base/config.h"
-#include "y_absl/base/port.h"
+#include "y_absl/base/port.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace base_internal {
@@ -69,6 +69,6 @@ pid_t GetCachedTID();
} // namespace base_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_BASE_INTERNAL_SYSINFO_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/thread_annotations.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/thread_annotations.h
index e2b490e5b8..b4b01a8fb4 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/thread_annotations.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/thread_annotations.h
@@ -18,7 +18,7 @@
//
// WARNING: This is a backwards compatible header and it will be removed after
// the migration to prefixed thread annotations is finished; please include
-// "y_absl/base/thread_annotations.h".
+// "y_absl/base/thread_annotations.h".
//
// This header file contains macro definitions for thread safety annotations
// that allow developers to document the locking policies of multi-threaded
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/thread_identity.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/thread_identity.cc
index c9d49f47bd..b5e88ae302 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/thread_identity.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/thread_identity.cc
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/base/internal/thread_identity.h"
+#include "y_absl/base/internal/thread_identity.h"
#ifndef _WIN32
#include <pthread.h>
@@ -24,18 +24,18 @@
#include <memory>
#include "y_absl/base/attributes.h"
-#include "y_absl/base/call_once.h"
-#include "y_absl/base/internal/raw_logging.h"
-#include "y_absl/base/internal/spinlock.h"
+#include "y_absl/base/call_once.h"
+#include "y_absl/base/internal/raw_logging.h"
+#include "y_absl/base/internal/spinlock.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace base_internal {
#if ABSL_THREAD_IDENTITY_MODE != ABSL_THREAD_IDENTITY_MODE_USE_CPP11
namespace {
// Used to co-ordinate one-time creation of our pthread_key
-y_absl::once_flag init_thread_identity_key_once;
+y_absl::once_flag init_thread_identity_key_once;
pthread_key_t thread_identity_pthread_key;
std::atomic<bool> pthread_key_initialized(false);
@@ -75,7 +75,7 @@ void SetCurrentThreadIdentity(
// barrier to CurrentThreadIdentity() always being async signal safe.
#if ABSL_THREAD_IDENTITY_MODE == ABSL_THREAD_IDENTITY_MODE_USE_POSIX_SETSPECIFIC
// NOTE: Not async-safe. But can be open-coded.
- y_absl::call_once(init_thread_identity_key_once, AllocateThreadIdentityKey,
+ y_absl::call_once(init_thread_identity_key_once, AllocateThreadIdentityKey,
reclaimer);
#if defined(__EMSCRIPTEN__) || defined(__MINGW32__)
@@ -102,7 +102,7 @@ void SetCurrentThreadIdentity(
#elif ABSL_THREAD_IDENTITY_MODE == ABSL_THREAD_IDENTITY_MODE_USE_TLS
// NOTE: Not async-safe. But can be open-coded.
- y_absl::call_once(init_thread_identity_key_once, AllocateThreadIdentityKey,
+ y_absl::call_once(init_thread_identity_key_once, AllocateThreadIdentityKey,
reclaimer);
pthread_setspecific(thread_identity_pthread_key,
reinterpret_cast<void*>(identity));
@@ -152,4 +152,4 @@ ThreadIdentity* CurrentThreadIdentityIfPresent() {
} // namespace base_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/thread_identity.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/thread_identity.h
index e641f0036d..09a6c0bce1 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/thread_identity.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/thread_identity.h
@@ -31,10 +31,10 @@
#include <cstdint>
#include "y_absl/base/config.h"
-#include "y_absl/base/internal/per_thread_tls.h"
+#include "y_absl/base/internal/per_thread_tls.h"
#include "y_absl/base/optimization.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
struct SynchLocksHeld;
@@ -45,9 +45,9 @@ namespace base_internal {
class SpinLock;
struct ThreadIdentity;
-// Used by the implementation of y_absl::Mutex and y_absl::CondVar.
+// Used by the implementation of y_absl::Mutex and y_absl::CondVar.
struct PerThreadSynch {
- // The internal representation of y_absl::Mutex and y_absl::CondVar rely
+ // The internal representation of y_absl::Mutex and y_absl::CondVar rely
// on the alignment of PerThreadSynch. Both store the address of the
// PerThreadSynch in the high-order bits of their internal state,
// which means the low kLowZeroBits of the address of PerThreadSynch
@@ -141,7 +141,7 @@ struct ThreadIdentity {
// ThreadIdentity itself.
PerThreadSynch per_thread_synch;
- // Private: Reserved for y_absl::synchronization_internal::Waiter.
+ // Private: Reserved for y_absl::synchronization_internal::Waiter.
struct WaiterState {
alignas(void*) char data[128];
} waiter_state;
@@ -260,6 +260,6 @@ inline ThreadIdentity* CurrentThreadIdentityIfPresent() {
} // namespace base_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_BASE_INTERNAL_THREAD_IDENTITY_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/throw_delegate.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/throw_delegate.cc
index 388465500d..dcce5aedc3 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/throw_delegate.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/throw_delegate.cc
@@ -12,17 +12,17 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/base/internal/throw_delegate.h"
+#include "y_absl/base/internal/throw_delegate.h"
#include <cstdlib>
#include <functional>
#include <new>
#include <stdexcept>
-#include "y_absl/base/config.h"
-#include "y_absl/base/internal/raw_logging.h"
+#include "y_absl/base/config.h"
+#include "y_absl/base/internal/raw_logging.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace base_internal {
@@ -39,7 +39,7 @@ template <typename T>
#endif
} // namespace
-void ThrowStdLogicError(const TString& what_arg) {
+void ThrowStdLogicError(const TString& what_arg) {
#ifdef ABSL_HAVE_EXCEPTIONS
Throw(std::logic_error(what_arg));
#else
@@ -55,7 +55,7 @@ void ThrowStdLogicError(const char* what_arg) {
std::abort();
#endif
}
-void ThrowStdInvalidArgument(const TString& what_arg) {
+void ThrowStdInvalidArgument(const TString& what_arg) {
#ifdef ABSL_HAVE_EXCEPTIONS
Throw(std::invalid_argument(what_arg));
#else
@@ -72,7 +72,7 @@ void ThrowStdInvalidArgument(const char* what_arg) {
#endif
}
-void ThrowStdDomainError(const TString& what_arg) {
+void ThrowStdDomainError(const TString& what_arg) {
#ifdef ABSL_HAVE_EXCEPTIONS
Throw(std::domain_error(what_arg));
#else
@@ -89,7 +89,7 @@ void ThrowStdDomainError(const char* what_arg) {
#endif
}
-void ThrowStdLengthError(const TString& what_arg) {
+void ThrowStdLengthError(const TString& what_arg) {
#ifdef ABSL_HAVE_EXCEPTIONS
Throw(std::length_error(what_arg));
#else
@@ -106,7 +106,7 @@ void ThrowStdLengthError(const char* what_arg) {
#endif
}
-void ThrowStdOutOfRange(const TString& what_arg) {
+void ThrowStdOutOfRange(const TString& what_arg) {
#ifdef ABSL_HAVE_EXCEPTIONS
Throw(std::out_of_range(what_arg));
#else
@@ -123,7 +123,7 @@ void ThrowStdOutOfRange(const char* what_arg) {
#endif
}
-void ThrowStdRuntimeError(const TString& what_arg) {
+void ThrowStdRuntimeError(const TString& what_arg) {
#ifdef ABSL_HAVE_EXCEPTIONS
Throw(std::runtime_error(what_arg));
#else
@@ -140,7 +140,7 @@ void ThrowStdRuntimeError(const char* what_arg) {
#endif
}
-void ThrowStdRangeError(const TString& what_arg) {
+void ThrowStdRangeError(const TString& what_arg) {
#ifdef ABSL_HAVE_EXCEPTIONS
Throw(std::range_error(what_arg));
#else
@@ -157,7 +157,7 @@ void ThrowStdRangeError(const char* what_arg) {
#endif
}
-void ThrowStdOverflowError(const TString& what_arg) {
+void ThrowStdOverflowError(const TString& what_arg) {
#ifdef ABSL_HAVE_EXCEPTIONS
Throw(std::overflow_error(what_arg));
#else
@@ -174,7 +174,7 @@ void ThrowStdOverflowError(const char* what_arg) {
#endif
}
-void ThrowStdUnderflowError(const TString& what_arg) {
+void ThrowStdUnderflowError(const TString& what_arg) {
#ifdef ABSL_HAVE_EXCEPTIONS
Throw(std::underflow_error(what_arg));
#else
@@ -209,4 +209,4 @@ void ThrowStdBadAlloc() {
} // namespace base_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/throw_delegate.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/throw_delegate.h
index d66384a3c8..fda03a5db3 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/throw_delegate.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/throw_delegate.h
@@ -17,11 +17,11 @@
#ifndef ABSL_BASE_INTERNAL_THROW_DELEGATE_H_
#define ABSL_BASE_INTERNAL_THROW_DELEGATE_H_
-#include <util/generic/string.h>
-
+#include <util/generic/string.h>
+
#include "y_absl/base/config.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace base_internal {
@@ -39,23 +39,23 @@ namespace base_internal {
// both with and without exceptions and you need to conform to an interface
// that uses exceptions.
-[[noreturn]] void ThrowStdLogicError(const TString& what_arg);
+[[noreturn]] void ThrowStdLogicError(const TString& what_arg);
[[noreturn]] void ThrowStdLogicError(const char* what_arg);
-[[noreturn]] void ThrowStdInvalidArgument(const TString& what_arg);
+[[noreturn]] void ThrowStdInvalidArgument(const TString& what_arg);
[[noreturn]] void ThrowStdInvalidArgument(const char* what_arg);
-[[noreturn]] void ThrowStdDomainError(const TString& what_arg);
+[[noreturn]] void ThrowStdDomainError(const TString& what_arg);
[[noreturn]] void ThrowStdDomainError(const char* what_arg);
-[[noreturn]] void ThrowStdLengthError(const TString& what_arg);
+[[noreturn]] void ThrowStdLengthError(const TString& what_arg);
[[noreturn]] void ThrowStdLengthError(const char* what_arg);
-[[noreturn]] void ThrowStdOutOfRange(const TString& what_arg);
+[[noreturn]] void ThrowStdOutOfRange(const TString& what_arg);
[[noreturn]] void ThrowStdOutOfRange(const char* what_arg);
-[[noreturn]] void ThrowStdRuntimeError(const TString& what_arg);
+[[noreturn]] void ThrowStdRuntimeError(const TString& what_arg);
[[noreturn]] void ThrowStdRuntimeError(const char* what_arg);
-[[noreturn]] void ThrowStdRangeError(const TString& what_arg);
+[[noreturn]] void ThrowStdRangeError(const TString& what_arg);
[[noreturn]] void ThrowStdRangeError(const char* what_arg);
-[[noreturn]] void ThrowStdOverflowError(const TString& what_arg);
+[[noreturn]] void ThrowStdOverflowError(const TString& what_arg);
[[noreturn]] void ThrowStdOverflowError(const char* what_arg);
-[[noreturn]] void ThrowStdUnderflowError(const TString& what_arg);
+[[noreturn]] void ThrowStdUnderflowError(const TString& what_arg);
[[noreturn]] void ThrowStdUnderflowError(const char* what_arg);
[[noreturn]] void ThrowStdBadFunctionCall();
@@ -70,6 +70,6 @@ namespace base_internal {
} // namespace base_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_BASE_INTERNAL_THROW_DELEGATE_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/throw_delegate/ya.make b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/throw_delegate/ya.make
index 107f21cc6c..1b956ad494 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/throw_delegate/ya.make
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/throw_delegate/ya.make
@@ -12,8 +12,8 @@ OWNER(
LICENSE(Apache-2.0)
PEERDIR(
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
- contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
)
ADDINCL(
@@ -22,7 +22,7 @@ ADDINCL(
NO_COMPILER_WARNINGS()
-SRCDIR(contrib/restricted/abseil-cpp-tstring/y_absl/base/internal)
+SRCDIR(contrib/restricted/abseil-cpp-tstring/y_absl/base/internal)
SRCS(
throw_delegate.cc
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/unaligned_access.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/unaligned_access.h
index b882631a53..7dbb23b1de 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/unaligned_access.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/unaligned_access.h
@@ -21,7 +21,7 @@
#include <cstdint>
-#include "y_absl/base/attributes.h"
+#include "y_absl/base/attributes.h"
#include "y_absl/base/config.h"
// unaligned APIs
@@ -31,7 +31,7 @@
// The unaligned API is C++ only. The declarations use C++ features
// (namespaces, inline) which are absent or incompatible in C.
#if defined(__cplusplus)
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace base_internal {
@@ -61,21 +61,21 @@ inline void UnalignedStore64(void *p, uint64_t v) { memcpy(p, &v, sizeof v); }
} // namespace base_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#define ABSL_INTERNAL_UNALIGNED_LOAD16(_p) \
- (y_absl::base_internal::UnalignedLoad16(_p))
+ (y_absl::base_internal::UnalignedLoad16(_p))
#define ABSL_INTERNAL_UNALIGNED_LOAD32(_p) \
- (y_absl::base_internal::UnalignedLoad32(_p))
+ (y_absl::base_internal::UnalignedLoad32(_p))
#define ABSL_INTERNAL_UNALIGNED_LOAD64(_p) \
- (y_absl::base_internal::UnalignedLoad64(_p))
+ (y_absl::base_internal::UnalignedLoad64(_p))
#define ABSL_INTERNAL_UNALIGNED_STORE16(_p, _val) \
- (y_absl::base_internal::UnalignedStore16(_p, _val))
+ (y_absl::base_internal::UnalignedStore16(_p, _val))
#define ABSL_INTERNAL_UNALIGNED_STORE32(_p, _val) \
- (y_absl::base_internal::UnalignedStore32(_p, _val))
+ (y_absl::base_internal::UnalignedStore32(_p, _val))
#define ABSL_INTERNAL_UNALIGNED_STORE64(_p, _val) \
- (y_absl::base_internal::UnalignedStore64(_p, _val))
+ (y_absl::base_internal::UnalignedStore64(_p, _val))
#endif // defined(__cplusplus), end of unaligned API
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/unscaledcycleclock.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/unscaledcycleclock.cc
index 4dabba4549..072a9852fa 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/unscaledcycleclock.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/unscaledcycleclock.cc
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/base/internal/unscaledcycleclock.h"
+#include "y_absl/base/internal/unscaledcycleclock.h"
#if ABSL_USE_UNSCALED_CYCLECLOCK
@@ -29,9 +29,9 @@
#endif
#endif
-#include "y_absl/base/internal/sysinfo.h"
+#include "y_absl/base/internal/sysinfo.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace base_internal {
@@ -149,6 +149,6 @@ double UnscaledCycleClock::Frequency() {
} // namespace base_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_USE_UNSCALED_CYCLECLOCK
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/unscaledcycleclock.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/unscaledcycleclock.h
index 686349cee7..618c5c7e73 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/unscaledcycleclock.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/unscaledcycleclock.h
@@ -42,7 +42,7 @@
#include <TargetConditionals.h>
#endif
-#include "y_absl/base/port.h"
+#include "y_absl/base/port.h"
// The following platforms have an implementation of a hardware counter.
#if defined(__i386__) || defined(__x86_64__) || defined(__aarch64__) || \
@@ -85,7 +85,7 @@
#define ABSL_INTERNAL_UNSCALED_CYCLECLOCK_FREQUENCY_IS_CPU_FREQUENCY
#endif
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace time_internal {
class UnscaledCycleClockWrapperForGetCurrentTime;
@@ -117,7 +117,7 @@ class UnscaledCycleClock {
} // namespace base_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_USE_UNSCALED_CYCLECLOCK
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity.cc
index d4d5e02531..2ae8c75aec 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity.cc
@@ -12,16 +12,16 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/base/log_severity.h"
+#include "y_absl/base/log_severity.h"
#include <ostream>
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
-std::ostream& operator<<(std::ostream& os, y_absl::LogSeverity s) {
- if (s == y_absl::NormalizeLogSeverity(s)) return os << y_absl::LogSeverityName(s);
- return os << "y_absl::LogSeverity(" << static_cast<int>(s) << ")";
+std::ostream& operator<<(std::ostream& os, y_absl::LogSeverity s) {
+ if (s == y_absl::NormalizeLogSeverity(s)) return os << y_absl::LogSeverityName(s);
+ return os << "y_absl::LogSeverity(" << static_cast<int>(s) << ")";
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity.h
index c9e6ccb389..26f20ad8e1 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity.h
@@ -18,10 +18,10 @@
#include <array>
#include <ostream>
-#include "y_absl/base/attributes.h"
+#include "y_absl/base/attributes.h"
#include "y_absl/base/config.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// y_absl::LogSeverity
@@ -64,7 +64,7 @@ ABSL_NAMESPACE_BEGIN
// --my_log_level=info
// --my_log_level=0
//
-// Unparsing a flag produces the same result as `y_absl::LogSeverityName()` for
+// Unparsing a flag produces the same result as `y_absl::LogSeverityName()` for
// the standard levels and a base-ten integer otherwise.
enum class LogSeverity : int {
kInfo = 0,
@@ -75,47 +75,47 @@ enum class LogSeverity : int {
// LogSeverities()
//
-// Returns an iterable of all standard `y_absl::LogSeverity` values, ordered from
+// Returns an iterable of all standard `y_absl::LogSeverity` values, ordered from
// least to most severe.
-constexpr std::array<y_absl::LogSeverity, 4> LogSeverities() {
- return {{y_absl::LogSeverity::kInfo, y_absl::LogSeverity::kWarning,
- y_absl::LogSeverity::kError, y_absl::LogSeverity::kFatal}};
+constexpr std::array<y_absl::LogSeverity, 4> LogSeverities() {
+ return {{y_absl::LogSeverity::kInfo, y_absl::LogSeverity::kWarning,
+ y_absl::LogSeverity::kError, y_absl::LogSeverity::kFatal}};
}
// LogSeverityName()
//
// Returns the all-caps string representation (e.g. "INFO") of the specified
// severity level if it is one of the standard levels and "UNKNOWN" otherwise.
-constexpr const char* LogSeverityName(y_absl::LogSeverity s) {
- return s == y_absl::LogSeverity::kInfo
+constexpr const char* LogSeverityName(y_absl::LogSeverity s) {
+ return s == y_absl::LogSeverity::kInfo
? "INFO"
- : s == y_absl::LogSeverity::kWarning
+ : s == y_absl::LogSeverity::kWarning
? "WARNING"
- : s == y_absl::LogSeverity::kError
+ : s == y_absl::LogSeverity::kError
? "ERROR"
- : s == y_absl::LogSeverity::kFatal ? "FATAL" : "UNKNOWN";
+ : s == y_absl::LogSeverity::kFatal ? "FATAL" : "UNKNOWN";
}
// NormalizeLogSeverity()
//
// Values less than `kInfo` normalize to `kInfo`; values greater than `kFatal`
// normalize to `kError` (**NOT** `kFatal`).
-constexpr y_absl::LogSeverity NormalizeLogSeverity(y_absl::LogSeverity s) {
- return s < y_absl::LogSeverity::kInfo
- ? y_absl::LogSeverity::kInfo
- : s > y_absl::LogSeverity::kFatal ? y_absl::LogSeverity::kError : s;
+constexpr y_absl::LogSeverity NormalizeLogSeverity(y_absl::LogSeverity s) {
+ return s < y_absl::LogSeverity::kInfo
+ ? y_absl::LogSeverity::kInfo
+ : s > y_absl::LogSeverity::kFatal ? y_absl::LogSeverity::kError : s;
}
-constexpr y_absl::LogSeverity NormalizeLogSeverity(int s) {
- return y_absl::NormalizeLogSeverity(static_cast<y_absl::LogSeverity>(s));
+constexpr y_absl::LogSeverity NormalizeLogSeverity(int s) {
+ return y_absl::NormalizeLogSeverity(static_cast<y_absl::LogSeverity>(s));
}
// operator<<
//
-// The exact representation of a streamed `y_absl::LogSeverity` is deliberately
+// The exact representation of a streamed `y_absl::LogSeverity` is deliberately
// unspecified; do not rely on it.
-std::ostream& operator<<(std::ostream& os, y_absl::LogSeverity s);
+std::ostream& operator<<(std::ostream& os, y_absl::LogSeverity s);
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_BASE_LOG_SEVERITY_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity/ya.make b/contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity/ya.make
index b0c1b5a23f..3e4b5634c2 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity/ya.make
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity/ya.make
@@ -17,7 +17,7 @@ ADDINCL(
NO_COMPILER_WARNINGS()
-SRCDIR(contrib/restricted/abseil-cpp-tstring/y_absl/base)
+SRCDIR(contrib/restricted/abseil-cpp-tstring/y_absl/base)
SRCS(
log_severity.cc
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/macros.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/macros.h
index 7aba6ddfeb..b09a81877d 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/macros.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/macros.h
@@ -19,7 +19,7 @@
//
// This header file defines the set of language macros used within Abseil code.
// For the set of macros used to determine supported compilers and platforms,
-// see y_absl/base/config.h instead.
+// see y_absl/base/config.h instead.
//
// This code is compiled directly on many platforms, including client
// platforms like Windows, Mac, and embedded systems. Before making
@@ -33,8 +33,8 @@
#include "y_absl/base/attributes.h"
#include "y_absl/base/config.h"
-#include "y_absl/base/optimization.h"
-#include "y_absl/base/port.h"
+#include "y_absl/base/optimization.h"
+#include "y_absl/base/port.h"
// ABSL_ARRAYSIZE()
//
@@ -42,9 +42,9 @@
// can be used in defining new arrays. If you use this macro on a pointer by
// mistake, you will get a compile-time error.
#define ABSL_ARRAYSIZE(array) \
- (sizeof(::y_absl::macros_internal::ArraySizeHelper(array)))
+ (sizeof(::y_absl::macros_internal::ArraySizeHelper(array)))
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace macros_internal {
// Note: this internal template function declaration is used by ABSL_ARRAYSIZE.
@@ -53,7 +53,7 @@ template <typename T, size_t N>
auto ArraySizeHelper(const T (&array)[N]) -> char (&)[N];
} // namespace macros_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
// ABSL_BAD_CALL_IF()
//
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/optimization.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/optimization.h
index d9ae379293..501530ae30 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/optimization.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/optimization.h
@@ -24,7 +24,7 @@
#include <assert.h>
-#include "y_absl/base/config.h"
+#include "y_absl/base/config.h"
// ABSL_BLOCK_TAIL_CALL_OPTIMIZATION
//
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/options.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/options.h
index d09c3a5c11..906310cde0 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/options.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/options.h
@@ -79,7 +79,7 @@
//
// ABSL_OPTION_USE_STD_ANY
//
-// This option controls whether y_absl::any is implemented as an alias to
+// This option controls whether y_absl::any is implemented as an alias to
// std::any, or as an independent implementation.
//
// A value of 0 means to use Abseil's implementation. This requires only C++11
@@ -93,19 +93,19 @@
// useful when you are building your entire program, including all of its
// dependencies, from source. It should not be used otherwise -- for example,
// if you are distributing Abseil in a binary package manager -- since in
-// mode 2, y_absl::any will name a different type, with a different mangled name
+// mode 2, y_absl::any will name a different type, with a different mangled name
// and binary layout, depending on the compiler flags passed by the end user.
// For more info, see https://abseil.io/about/design/dropin-types.
//
// User code should not inspect this macro. To check in the preprocessor if
-// y_absl::any is a typedef of std::any, use the feature macro ABSL_USES_STD_ANY.
+// y_absl::any is a typedef of std::any, use the feature macro ABSL_USES_STD_ANY.
#define ABSL_OPTION_USE_STD_ANY 2
// ABSL_OPTION_USE_STD_OPTIONAL
//
-// This option controls whether y_absl::optional is implemented as an alias to
+// This option controls whether y_absl::optional is implemented as an alias to
// std::optional, or as an independent implementation.
//
// A value of 0 means to use Abseil's implementation. This requires only C++11
@@ -118,13 +118,13 @@
// and use an alias only if a working std::optional is available. This option
// is useful when you are building your program from source. It should not be
// used otherwise -- for example, if you are distributing Abseil in a binary
-// package manager -- since in mode 2, y_absl::optional will name a different
+// package manager -- since in mode 2, y_absl::optional will name a different
// type, with a different mangled name and binary layout, depending on the
// compiler flags passed by the end user. For more info, see
// https://abseil.io/about/design/dropin-types.
// User code should not inspect this macro. To check in the preprocessor if
-// y_absl::optional is a typedef of std::optional, use the feature macro
+// y_absl::optional is a typedef of std::optional, use the feature macro
// ABSL_USES_STD_OPTIONAL.
#define ABSL_OPTION_USE_STD_OPTIONAL 2
@@ -132,7 +132,7 @@
// ABSL_OPTION_USE_STD_STRING_VIEW
//
-// This option controls whether y_absl::string_view is implemented as an alias to
+// This option controls whether y_absl::string_view is implemented as an alias to
// std::string_view, or as an independent implementation.
//
// A value of 0 means to use Abseil's implementation. This requires only C++11
@@ -145,20 +145,20 @@
// and use an alias only if a working std::string_view is available. This
// option is useful when you are building your program from source. It should
// not be used otherwise -- for example, if you are distributing Abseil in a
-// binary package manager -- since in mode 2, y_absl::string_view will name a
+// binary package manager -- since in mode 2, y_absl::string_view will name a
// different type, with a different mangled name and binary layout, depending on
// the compiler flags passed by the end user. For more info, see
// https://abseil.io/about/design/dropin-types.
//
// User code should not inspect this macro. To check in the preprocessor if
-// y_absl::string_view is a typedef of std::string_view, use the feature macro
+// y_absl::string_view is a typedef of std::string_view, use the feature macro
// ABSL_USES_STD_STRING_VIEW.
#define ABSL_OPTION_USE_STD_STRING_VIEW 2
// ABSL_OPTION_USE_STD_VARIANT
//
-// This option controls whether y_absl::variant is implemented as an alias to
+// This option controls whether y_absl::variant is implemented as an alias to
// std::variant, or as an independent implementation.
//
// A value of 0 means to use Abseil's implementation. This requires only C++11
@@ -171,13 +171,13 @@
// and use an alias only if a working std::variant is available. This option
// is useful when you are building your program from source. It should not be
// used otherwise -- for example, if you are distributing Abseil in a binary
-// package manager -- since in mode 2, y_absl::variant will name a different
+// package manager -- since in mode 2, y_absl::variant will name a different
// type, with a different mangled name and binary layout, depending on the
// compiler flags passed by the end user. For more info, see
// https://abseil.io/about/design/dropin-types.
//
// User code should not inspect this macro. To check in the preprocessor if
-// y_absl::variant is a typedef of std::variant, use the feature macro
+// y_absl::variant is a typedef of std::variant, use the feature macro
// ABSL_USES_STD_VARIANT.
#define ABSL_OPTION_USE_STD_VARIANT 2
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/port.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/port.h
index 607fb87d57..69ec795d46 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/port.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/port.h
@@ -18,8 +18,8 @@
#ifndef ABSL_BASE_PORT_H_
#define ABSL_BASE_PORT_H_
-#include "y_absl/base/attributes.h"
-#include "y_absl/base/config.h"
-#include "y_absl/base/optimization.h"
+#include "y_absl/base/attributes.h"
+#include "y_absl/base/config.h"
+#include "y_absl/base/optimization.h"
#endif // ABSL_BASE_PORT_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/thread_annotations.h b/contrib/restricted/abseil-cpp-tstring/y_absl/base/thread_annotations.h
index 2713086a77..aba5d58dc3 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/thread_annotations.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/thread_annotations.h
@@ -37,7 +37,7 @@
#include "y_absl/base/attributes.h"
#include "y_absl/base/config.h"
// TODO(mbonadei): Remove after the backward compatibility period.
-#include "y_absl/base/internal/thread_annotations.h" // IWYU pragma: export
+#include "y_absl/base/internal/thread_annotations.h" // IWYU pragma: export
// ABSL_GUARDED_BY()
//
@@ -309,9 +309,9 @@
// Disables warnings for a single read operation. This can be used to avoid
// warnings when it is known that the read is not actually involved in a race,
// but the compiler cannot confirm that.
-#define ABSL_TS_UNCHECKED_READ(x) y_absl::base_internal::ts_unchecked_read(x)
+#define ABSL_TS_UNCHECKED_READ(x) y_absl::base_internal::ts_unchecked_read(x)
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace base_internal {
@@ -330,6 +330,6 @@ inline T& ts_unchecked_read(T& v) ABSL_NO_THREAD_SAFETY_ANALYSIS {
} // namespace base_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_BASE_THREAD_ANNOTATIONS_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/base/ya.make b/contrib/restricted/abseil-cpp-tstring/y_absl/base/ya.make
index 6f97c8cb44..9e0d53060e 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/base/ya.make
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/base/ya.make
@@ -12,9 +12,9 @@ LICENSE(Apache-2.0)
LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
PEERDIR(
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait
- contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
)
ADDINCL(
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/city/ya.make b/contrib/restricted/abseil-cpp-tstring/y_absl/city/ya.make
index 389e1168b0..7fc856d796 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/city/ya.make
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/city/ya.make
@@ -24,7 +24,7 @@ ADDINCL(
NO_COMPILER_WARNINGS()
-SRCDIR(contrib/restricted/abseil-cpp-tstring/y_absl/hash/internal)
+SRCDIR(contrib/restricted/abseil-cpp-tstring/y_absl/hash/internal)
SRCS(
city.cc
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/btree_map.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/btree_map.h
index e70caa303f..3f46c541b8 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/btree_map.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/btree_map.h
@@ -19,8 +19,8 @@
// This header file defines B-tree maps: sorted associative containers mapping
// keys to values.
//
-// * `y_absl::btree_map<>`
-// * `y_absl::btree_multimap<>`
+// * `y_absl::btree_map<>`
+// * `y_absl::btree_multimap<>`
//
// These B-tree types are similar to the corresponding types in the STL
// (`std::map` and `std::multimap`) and generally conform to the STL interfaces
@@ -47,26 +47,26 @@
#ifndef ABSL_CONTAINER_BTREE_MAP_H_
#define ABSL_CONTAINER_BTREE_MAP_H_
-#include "y_absl/container/internal/btree.h" // IWYU pragma: export
-#include "y_absl/container/internal/btree_container.h" // IWYU pragma: export
+#include "y_absl/container/internal/btree.h" // IWYU pragma: export
+#include "y_absl/container/internal/btree_container.h" // IWYU pragma: export
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
-// y_absl::btree_map<>
+// y_absl::btree_map<>
//
-// An `y_absl::btree_map<K, V>` is an ordered associative container of
+// An `y_absl::btree_map<K, V>` is an ordered associative container of
// unique keys and associated values designed to be a more efficient replacement
// for `std::map` (in most cases).
//
// Keys are sorted using an (optional) comparison function, which defaults to
// `std::less<K>`.
//
-// An `y_absl::btree_map<K, V>` uses a default allocator of
+// An `y_absl::btree_map<K, V>` uses a default allocator of
// `std::allocator<std::pair<const K, V>>` to allocate (and deallocate)
// nodes, and construct and destruct values within those nodes. You may
// instead specify a custom allocator `A` (which in turn requires specifying a
-// custom comparator `C`) as in `y_absl::btree_map<K, V, C, A>`.
+// custom comparator `C`) as in `y_absl::btree_map<K, V, C, A>`.
//
template <typename Key, typename Value, typename Compare = std::less<Key>,
typename Alloc = std::allocator<std::pair<const Key, Value>>>
@@ -85,37 +85,37 @@ class btree_map
//
// * Default constructor
//
- // y_absl::btree_map<int, TString> map1;
+ // y_absl::btree_map<int, TString> map1;
//
// * Initializer List constructor
//
- // y_absl::btree_map<int, TString> map2 =
+ // y_absl::btree_map<int, TString> map2 =
// {{1, "huey"}, {2, "dewey"}, {3, "louie"},};
//
// * Copy constructor
//
- // y_absl::btree_map<int, TString> map3(map2);
+ // y_absl::btree_map<int, TString> map3(map2);
//
// * Copy assignment operator
//
- // y_absl::btree_map<int, TString> map4;
+ // y_absl::btree_map<int, TString> map4;
// map4 = map3;
//
// * Move constructor
//
// // Move is guaranteed efficient
- // y_absl::btree_map<int, TString> map5(std::move(map4));
+ // y_absl::btree_map<int, TString> map5(std::move(map4));
//
// * Move assignment operator
//
// // May be efficient if allocators are compatible
- // y_absl::btree_map<int, TString> map6;
+ // y_absl::btree_map<int, TString> map6;
// map6 = std::move(map5);
//
// * Range constructor
//
- // std::vector<std::pair<int, TString>> v = {{1, "a"}, {2, "b"}};
- // y_absl::btree_map<int, TString> map7(v.begin(), v.end());
+ // std::vector<std::pair<int, TString>> v = {{1, "a"}, {2, "b"}};
+ // y_absl::btree_map<int, TString> map7(v.begin(), v.end());
btree_map() {}
using Base::Base;
@@ -456,9 +456,9 @@ class btree_map
using Base::value_comp;
};
-// y_absl::swap(y_absl::btree_map<>, y_absl::btree_map<>)
+// y_absl::swap(y_absl::btree_map<>, y_absl::btree_map<>)
//
-// Swaps the contents of two `y_absl::btree_map` containers.
+// Swaps the contents of two `y_absl::btree_map` containers.
template <typename K, typename V, typename C, typename A>
void swap(btree_map<K, V, C, A> &x, btree_map<K, V, C, A> &y) {
return x.swap(y);
@@ -478,21 +478,21 @@ void erase_if(btree_map<K, V, C, A> &map, Pred pred) {
}
}
-// y_absl::btree_multimap
+// y_absl::btree_multimap
//
-// An `y_absl::btree_multimap<K, V>` is an ordered associative container of
+// An `y_absl::btree_multimap<K, V>` is an ordered associative container of
// keys and associated values designed to be a more efficient replacement for
-// `std::multimap` (in most cases). Unlike `y_absl::btree_map`, a B-tree multimap
+// `std::multimap` (in most cases). Unlike `y_absl::btree_map`, a B-tree multimap
// allows multiple elements with equivalent keys.
//
// Keys are sorted using an (optional) comparison function, which defaults to
// `std::less<K>`.
//
-// An `y_absl::btree_multimap<K, V>` uses a default allocator of
+// An `y_absl::btree_multimap<K, V>` uses a default allocator of
// `std::allocator<std::pair<const K, V>>` to allocate (and deallocate)
// nodes, and construct and destruct values within those nodes. You may
// instead specify a custom allocator `A` (which in turn requires specifying a
-// custom comparator `C`) as in `y_absl::btree_multimap<K, V, C, A>`.
+// custom comparator `C`) as in `y_absl::btree_multimap<K, V, C, A>`.
//
template <typename Key, typename Value, typename Compare = std::less<Key>,
typename Alloc = std::allocator<std::pair<const Key, Value>>>
@@ -511,37 +511,37 @@ class btree_multimap
//
// * Default constructor
//
- // y_absl::btree_multimap<int, TString> map1;
+ // y_absl::btree_multimap<int, TString> map1;
//
// * Initializer List constructor
//
- // y_absl::btree_multimap<int, TString> map2 =
+ // y_absl::btree_multimap<int, TString> map2 =
// {{1, "huey"}, {2, "dewey"}, {3, "louie"},};
//
// * Copy constructor
//
- // y_absl::btree_multimap<int, TString> map3(map2);
+ // y_absl::btree_multimap<int, TString> map3(map2);
//
// * Copy assignment operator
//
- // y_absl::btree_multimap<int, TString> map4;
+ // y_absl::btree_multimap<int, TString> map4;
// map4 = map3;
//
// * Move constructor
//
// // Move is guaranteed efficient
- // y_absl::btree_multimap<int, TString> map5(std::move(map4));
+ // y_absl::btree_multimap<int, TString> map5(std::move(map4));
//
// * Move assignment operator
//
// // May be efficient if allocators are compatible
- // y_absl::btree_multimap<int, TString> map6;
+ // y_absl::btree_multimap<int, TString> map6;
// map6 = std::move(map5);
//
// * Range constructor
//
- // std::vector<std::pair<int, TString>> v = {{1, "a"}, {2, "b"}};
- // y_absl::btree_multimap<int, TString> map7(v.begin(), v.end());
+ // std::vector<std::pair<int, TString>> v = {{1, "a"}, {2, "b"}};
+ // y_absl::btree_multimap<int, TString> map7(v.begin(), v.end());
btree_multimap() {}
using Base::Base;
@@ -787,9 +787,9 @@ class btree_multimap
using Base::value_comp;
};
-// y_absl::swap(y_absl::btree_multimap<>, y_absl::btree_multimap<>)
+// y_absl::swap(y_absl::btree_multimap<>, y_absl::btree_multimap<>)
//
-// Swaps the contents of two `y_absl::btree_multimap` containers.
+// Swaps the contents of two `y_absl::btree_multimap` containers.
template <typename K, typename V, typename C, typename A>
void swap(btree_multimap<K, V, C, A> &x, btree_multimap<K, V, C, A> &y) {
return x.swap(y);
@@ -810,6 +810,6 @@ void erase_if(btree_multimap<K, V, C, A> &map, Pred pred) {
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_BTREE_MAP_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/btree_set.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/btree_set.h
index 807547d180..905fb8e964 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/btree_set.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/btree_set.h
@@ -19,8 +19,8 @@
// This header file defines B-tree sets: sorted associative containers of
// values.
//
-// * `y_absl::btree_set<>`
-// * `y_absl::btree_multiset<>`
+// * `y_absl::btree_set<>`
+// * `y_absl::btree_multiset<>`
//
// These B-tree types are similar to the corresponding types in the STL
// (`std::set` and `std::multiset`) and generally conform to the STL interfaces
@@ -47,26 +47,26 @@
#ifndef ABSL_CONTAINER_BTREE_SET_H_
#define ABSL_CONTAINER_BTREE_SET_H_
-#include "y_absl/container/internal/btree.h" // IWYU pragma: export
-#include "y_absl/container/internal/btree_container.h" // IWYU pragma: export
+#include "y_absl/container/internal/btree.h" // IWYU pragma: export
+#include "y_absl/container/internal/btree_container.h" // IWYU pragma: export
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
-// y_absl::btree_set<>
+// y_absl::btree_set<>
//
-// An `y_absl::btree_set<K>` is an ordered associative container of unique key
+// An `y_absl::btree_set<K>` is an ordered associative container of unique key
// values designed to be a more efficient replacement for `std::set` (in most
// cases).
//
// Keys are sorted using an (optional) comparison function, which defaults to
// `std::less<K>`.
//
-// An `y_absl::btree_set<K>` uses a default allocator of `std::allocator<K>` to
+// An `y_absl::btree_set<K>` uses a default allocator of `std::allocator<K>` to
// allocate (and deallocate) nodes, and construct and destruct values within
// those nodes. You may instead specify a custom allocator `A` (which in turn
// requires specifying a custom comparator `C`) as in
-// `y_absl::btree_set<K, C, A>`.
+// `y_absl::btree_set<K, C, A>`.
//
template <typename Key, typename Compare = std::less<Key>,
typename Alloc = std::allocator<Key>>
@@ -85,37 +85,37 @@ class btree_set
//
// * Default constructor
//
- // y_absl::btree_set<TString> set1;
+ // y_absl::btree_set<TString> set1;
//
// * Initializer List constructor
//
- // y_absl::btree_set<TString> set2 =
+ // y_absl::btree_set<TString> set2 =
// {{"huey"}, {"dewey"}, {"louie"},};
//
// * Copy constructor
//
- // y_absl::btree_set<TString> set3(set2);
+ // y_absl::btree_set<TString> set3(set2);
//
// * Copy assignment operator
//
- // y_absl::btree_set<TString> set4;
+ // y_absl::btree_set<TString> set4;
// set4 = set3;
//
// * Move constructor
//
// // Move is guaranteed efficient
- // y_absl::btree_set<TString> set5(std::move(set4));
+ // y_absl::btree_set<TString> set5(std::move(set4));
//
// * Move assignment operator
//
// // May be efficient if allocators are compatible
- // y_absl::btree_set<TString> set6;
+ // y_absl::btree_set<TString> set6;
// set6 = std::move(set5);
//
// * Range constructor
//
- // std::vector<TString> v = {"a", "b"};
- // y_absl::btree_set<TString> set7(v.begin(), v.end());
+ // std::vector<TString> v = {"a", "b"};
+ // y_absl::btree_set<TString> set7(v.begin(), v.end());
btree_set() {}
using Base::Base;
@@ -374,9 +374,9 @@ class btree_set
using Base::value_comp;
};
-// y_absl::swap(y_absl::btree_set<>, y_absl::btree_set<>)
+// y_absl::swap(y_absl::btree_set<>, y_absl::btree_set<>)
//
-// Swaps the contents of two `y_absl::btree_set` containers.
+// Swaps the contents of two `y_absl::btree_set` containers.
template <typename K, typename C, typename A>
void swap(btree_set<K, C, A> &x, btree_set<K, C, A> &y) {
return x.swap(y);
@@ -396,21 +396,21 @@ void erase_if(btree_set<K, C, A> &set, Pred pred) {
}
}
-// y_absl::btree_multiset<>
+// y_absl::btree_multiset<>
//
-// An `y_absl::btree_multiset<K>` is an ordered associative container of
+// An `y_absl::btree_multiset<K>` is an ordered associative container of
// keys and associated values designed to be a more efficient replacement
-// for `std::multiset` (in most cases). Unlike `y_absl::btree_set`, a B-tree
+// for `std::multiset` (in most cases). Unlike `y_absl::btree_set`, a B-tree
// multiset allows equivalent elements.
//
// Keys are sorted using an (optional) comparison function, which defaults to
// `std::less<K>`.
//
-// An `y_absl::btree_multiset<K>` uses a default allocator of `std::allocator<K>`
+// An `y_absl::btree_multiset<K>` uses a default allocator of `std::allocator<K>`
// to allocate (and deallocate) nodes, and construct and destruct values within
// those nodes. You may instead specify a custom allocator `A` (which in turn
// requires specifying a custom comparator `C`) as in
-// `y_absl::btree_multiset<K, C, A>`.
+// `y_absl::btree_multiset<K, C, A>`.
//
template <typename Key, typename Compare = std::less<Key>,
typename Alloc = std::allocator<Key>>
@@ -429,37 +429,37 @@ class btree_multiset
//
// * Default constructor
//
- // y_absl::btree_multiset<TString> set1;
+ // y_absl::btree_multiset<TString> set1;
//
// * Initializer List constructor
//
- // y_absl::btree_multiset<TString> set2 =
+ // y_absl::btree_multiset<TString> set2 =
// {{"huey"}, {"dewey"}, {"louie"},};
//
// * Copy constructor
//
- // y_absl::btree_multiset<TString> set3(set2);
+ // y_absl::btree_multiset<TString> set3(set2);
//
// * Copy assignment operator
//
- // y_absl::btree_multiset<TString> set4;
+ // y_absl::btree_multiset<TString> set4;
// set4 = set3;
//
// * Move constructor
//
// // Move is guaranteed efficient
- // y_absl::btree_multiset<TString> set5(std::move(set4));
+ // y_absl::btree_multiset<TString> set5(std::move(set4));
//
// * Move assignment operator
//
// // May be efficient if allocators are compatible
- // y_absl::btree_multiset<TString> set6;
+ // y_absl::btree_multiset<TString> set6;
// set6 = std::move(set5);
//
// * Range constructor
//
- // std::vector<TString> v = {"a", "b"};
- // y_absl::btree_multiset<TString> set7(v.begin(), v.end());
+ // std::vector<TString> v = {"a", "b"};
+ // y_absl::btree_multiset<TString> set7(v.begin(), v.end());
btree_multiset() {}
using Base::Base;
@@ -700,9 +700,9 @@ class btree_multiset
using Base::value_comp;
};
-// y_absl::swap(y_absl::btree_multiset<>, y_absl::btree_multiset<>)
+// y_absl::swap(y_absl::btree_multiset<>, y_absl::btree_multiset<>)
//
-// Swaps the contents of two `y_absl::btree_multiset` containers.
+// Swaps the contents of two `y_absl::btree_multiset` containers.
template <typename K, typename C, typename A>
void swap(btree_multiset<K, C, A> &x, btree_multiset<K, C, A> &y) {
return x.swap(y);
@@ -723,6 +723,6 @@ void erase_if(btree_multiset<K, C, A> &set, Pred pred) {
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_BTREE_SET_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/btree_test.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/btree_test.h
index 44d5d834a3..97ed054ce8 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/btree_test.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/btree_test.h
@@ -22,13 +22,13 @@
#include <utility>
#include <vector>
-#include "y_absl/container/btree_map.h"
-#include "y_absl/container/btree_set.h"
-#include "y_absl/container/flat_hash_set.h"
+#include "y_absl/container/btree_map.h"
+#include "y_absl/container/btree_set.h"
+#include "y_absl/container/flat_hash_set.h"
#include "y_absl/strings/cord.h"
-#include "y_absl/time/time.h"
+#include "y_absl/time/time.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
@@ -85,17 +85,17 @@ struct Generator {
};
template <>
-struct Generator<y_absl::Time> {
+struct Generator<y_absl::Time> {
int maxval;
explicit Generator(int m) : maxval(m) {}
- y_absl::Time operator()(int i) const { return y_absl::FromUnixMillis(i); }
+ y_absl::Time operator()(int i) const { return y_absl::FromUnixMillis(i); }
};
template <>
-struct Generator<TString> {
+struct Generator<TString> {
int maxval;
explicit Generator(int m) : maxval(m) {}
- TString operator()(int i) const {
+ TString operator()(int i) const {
char buf[16];
return GenerateDigits(buf, i, maxval);
}
@@ -130,7 +130,7 @@ inline std::vector<int> GenerateNumbersWithSeed(int n, int maxval, int seed) {
std::minstd_rand0 rng(seed);
std::vector<int> values;
- y_absl::flat_hash_set<int> unique_values;
+ y_absl::flat_hash_set<int> unique_values;
if (values.size() < n) {
for (int i = values.size(); i < n; i++) {
int value;
@@ -161,6 +161,6 @@ std::vector<V> GenerateValuesWithSeed(int n, int maxval, int seed) {
} // namespace container_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_BTREE_TEST_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/fixed_array.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/fixed_array.h
index e0deb30efc..33b6caf00d 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/fixed_array.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/fixed_array.h
@@ -40,17 +40,17 @@
#include <new>
#include <type_traits>
-#include "y_absl/algorithm/algorithm.h"
+#include "y_absl/algorithm/algorithm.h"
#include "y_absl/base/config.h"
-#include "y_absl/base/dynamic_annotations.h"
-#include "y_absl/base/internal/throw_delegate.h"
-#include "y_absl/base/macros.h"
-#include "y_absl/base/optimization.h"
-#include "y_absl/base/port.h"
-#include "y_absl/container/internal/compressed_tuple.h"
-#include "y_absl/memory/memory.h"
-
-namespace y_absl {
+#include "y_absl/base/dynamic_annotations.h"
+#include "y_absl/base/internal/throw_delegate.h"
+#include "y_absl/base/macros.h"
+#include "y_absl/base/optimization.h"
+#include "y_absl/base/port.h"
+#include "y_absl/container/internal/compressed_tuple.h"
+#include "y_absl/memory/memory.h"
+
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
constexpr static auto kFixedArrayUseDefault = static_cast<size_t>(-1);
@@ -85,19 +85,19 @@ class FixedArray {
// std::iterator_traits isn't guaranteed to be SFINAE-friendly until C++17,
// but this seems to be mostly pedantic.
template <typename Iterator>
- using EnableIfForwardIterator = y_absl::enable_if_t<std::is_convertible<
+ using EnableIfForwardIterator = y_absl::enable_if_t<std::is_convertible<
typename std::iterator_traits<Iterator>::iterator_category,
std::forward_iterator_tag>::value>;
static constexpr bool NoexceptCopyable() {
return std::is_nothrow_copy_constructible<StorageElement>::value &&
- y_absl::allocator_is_nothrow<allocator_type>::value;
+ y_absl::allocator_is_nothrow<allocator_type>::value;
}
static constexpr bool NoexceptMovable() {
return std::is_nothrow_move_constructible<StorageElement>::value &&
- y_absl::allocator_is_nothrow<allocator_type>::value;
+ y_absl::allocator_is_nothrow<allocator_type>::value;
}
static constexpr bool DefaultConstructorIsNonTrivial() {
- return !y_absl::is_trivially_default_constructible<StorageElement>::value;
+ return !y_absl::is_trivially_default_constructible<StorageElement>::value;
}
public:
@@ -343,7 +343,7 @@ class FixedArray {
// Relational operators. Equality operators are elementwise using
// `operator==`, while order operators order FixedArrays lexicographically.
friend bool operator==(const FixedArray& lhs, const FixedArray& rhs) {
- return y_absl::equal(lhs.begin(), lhs.end(), rhs.begin(), rhs.end());
+ return y_absl::equal(lhs.begin(), lhs.end(), rhs.begin(), rhs.end());
}
friend bool operator!=(const FixedArray& lhs, const FixedArray& rhs) {
@@ -394,14 +394,14 @@ class FixedArray {
// error: call to int __builtin___sprintf_chk(etc...)
// will always overflow destination buffer [-Werror]
//
- template <typename OuterT, typename InnerT = y_absl::remove_extent_t<OuterT>,
+ template <typename OuterT, typename InnerT = y_absl::remove_extent_t<OuterT>,
size_t InnerN = std::extent<OuterT>::value>
struct StorageElementWrapper {
InnerT array[InnerN];
};
using StorageElement =
- y_absl::conditional_t<std::is_array<value_type>::value,
+ y_absl::conditional_t<std::is_array<value_type>::value,
StorageElementWrapper<value_type>, value_type>;
static pointer AsValueType(pointer ptr) { return ptr; }
@@ -437,7 +437,7 @@ class FixedArray {
};
using InlinedStorage =
- y_absl::conditional_t<inline_elements == 0, EmptyInlinedStorage,
+ y_absl::conditional_t<inline_elements == 0, EmptyInlinedStorage,
NonEmptyInlinedStorage>;
// Storage
@@ -522,6 +522,6 @@ void FixedArray<T, N, A>::NonEmptyInlinedStorage::AnnotateDestruct(
static_cast<void>(n); // Mark used when not in asan mode
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_FIXED_ARRAY_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/flat_hash_map.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/flat_hash_map.h
index 9c771831b0..eb3f09f06d 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/flat_hash_map.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/flat_hash_map.h
@@ -16,7 +16,7 @@
// File: flat_hash_map.h
// -----------------------------------------------------------------------------
//
-// An `y_absl::flat_hash_map<K, V>` is an unordered associative container of
+// An `y_absl::flat_hash_map<K, V>` is an unordered associative container of
// unique keys and associated values designed to be a more efficient replacement
// for `std::unordered_map`. Like `unordered_map`, search, insertion, and
// deletion of map elements can be done as an `O(1)` operation. However,
@@ -35,13 +35,13 @@
#include <type_traits>
#include <utility>
-#include "y_absl/algorithm/container.h"
-#include "y_absl/container/internal/container_memory.h"
-#include "y_absl/container/internal/hash_function_defaults.h" // IWYU pragma: export
-#include "y_absl/container/internal/raw_hash_map.h" // IWYU pragma: export
-#include "y_absl/memory/memory.h"
+#include "y_absl/algorithm/container.h"
+#include "y_absl/container/internal/container_memory.h"
+#include "y_absl/container/internal/hash_function_defaults.h" // IWYU pragma: export
+#include "y_absl/container/internal/raw_hash_map.h" // IWYU pragma: export
+#include "y_absl/memory/memory.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
template <class K, class V>
@@ -49,10 +49,10 @@ struct FlatHashMapPolicy;
} // namespace container_internal
// -----------------------------------------------------------------------------
-// y_absl::flat_hash_map
+// y_absl::flat_hash_map
// -----------------------------------------------------------------------------
//
-// An `y_absl::flat_hash_map<K, V>` is an unordered associative container which
+// An `y_absl::flat_hash_map<K, V>` is an unordered associative container which
// has been optimized for both speed and memory footprint in most common use
// cases. Its interface is similar to that of `std::unordered_map<K, V>` with
// the following notable differences:
@@ -68,25 +68,25 @@ struct FlatHashMapPolicy;
// slots (open, deleted, and empty) within the hash map.
// * Returns `void` from the `erase(iterator)` overload.
//
-// By default, `flat_hash_map` uses the `y_absl::Hash` hashing framework.
-// All fundamental and Abseil types that support the `y_absl::Hash` framework have
+// By default, `flat_hash_map` uses the `y_absl::Hash` hashing framework.
+// All fundamental and Abseil types that support the `y_absl::Hash` framework have
// a compatible equality operator for comparing insertions into `flat_hash_map`.
-// If your type is not yet supported by the `y_absl::Hash` framework, see
-// y_absl/hash/hash.h for information on extending Abseil hashing to user-defined
+// If your type is not yet supported by the `y_absl::Hash` framework, see
+// y_absl/hash/hash.h for information on extending Abseil hashing to user-defined
// types.
//
// NOTE: A `flat_hash_map` stores its value types directly inside its
// implementation array to avoid memory indirection. Because a `flat_hash_map`
// is designed to move data when rehashed, map values will not retain pointer
// stability. If you require pointer stability, or if your values are large,
-// consider using `y_absl::flat_hash_map<Key, std::unique_ptr<Value>>` instead.
+// consider using `y_absl::flat_hash_map<Key, std::unique_ptr<Value>>` instead.
// If your types are not moveable or you require pointer stability for keys,
-// consider `y_absl::node_hash_map`.
+// consider `y_absl::node_hash_map`.
//
// Example:
//
// // Create a flat hash map of three strings (that map to strings)
-// y_absl::flat_hash_map<TString, TString> ducks =
+// y_absl::flat_hash_map<TString, TString> ducks =
// {{"a", "huey"}, {"b", "dewey"}, {"c", "louie"}};
//
// // Insert a new element into the flat hash map
@@ -96,17 +96,17 @@ struct FlatHashMapPolicy;
// ducks.rehash(0);
//
// // Find the element with the key "b"
-// TString search_key = "b";
+// TString search_key = "b";
// auto result = ducks.find(search_key);
// if (result != ducks.end()) {
// std::cout << "Result: " << result->second << std::endl;
// }
template <class K, class V,
- class Hash = y_absl::container_internal::hash_default_hash<K>,
- class Eq = y_absl::container_internal::hash_default_eq<K>,
+ class Hash = y_absl::container_internal::hash_default_hash<K>,
+ class Eq = y_absl::container_internal::hash_default_eq<K>,
class Allocator = std::allocator<std::pair<const K, V>>>
-class flat_hash_map : public y_absl::container_internal::raw_hash_map<
- y_absl::container_internal::FlatHashMapPolicy<K, V>,
+class flat_hash_map : public y_absl::container_internal::raw_hash_map<
+ y_absl::container_internal::FlatHashMapPolicy<K, V>,
Hash, Eq, Allocator> {
using Base = typename flat_hash_map::raw_hash_map;
@@ -119,38 +119,38 @@ class flat_hash_map : public y_absl::container_internal::raw_hash_map<
// * Default constructor
//
// // No allocation for the table's elements is made.
- // y_absl::flat_hash_map<int, TString> map1;
+ // y_absl::flat_hash_map<int, TString> map1;
//
// * Initializer List constructor
//
- // y_absl::flat_hash_map<int, TString> map2 =
+ // y_absl::flat_hash_map<int, TString> map2 =
// {{1, "huey"}, {2, "dewey"}, {3, "louie"},};
//
// * Copy constructor
//
- // y_absl::flat_hash_map<int, TString> map3(map2);
+ // y_absl::flat_hash_map<int, TString> map3(map2);
//
// * Copy assignment operator
//
// // Hash functor and Comparator are copied as well
- // y_absl::flat_hash_map<int, TString> map4;
+ // y_absl::flat_hash_map<int, TString> map4;
// map4 = map3;
//
// * Move constructor
//
// // Move is guaranteed efficient
- // y_absl::flat_hash_map<int, TString> map5(std::move(map4));
+ // y_absl::flat_hash_map<int, TString> map5(std::move(map4));
//
// * Move assignment operator
//
// // May be efficient if allocators are compatible
- // y_absl::flat_hash_map<int, TString> map6;
+ // y_absl::flat_hash_map<int, TString> map6;
// map6 = std::move(map5);
//
// * Range constructor
//
- // std::vector<std::pair<int, TString>> v = {{1, "a"}, {2, "b"}};
- // y_absl::flat_hash_map<int, TString> map7(v.begin(), v.end());
+ // std::vector<std::pair<int, TString>> v = {{1, "a"}, {2, "b"}};
+ // y_absl::flat_hash_map<int, TString> map7(v.begin(), v.end());
flat_hash_map() {}
using Base::Base;
@@ -179,7 +179,7 @@ class flat_hash_map : public y_absl::container_internal::raw_hash_map<
// Returns the number of element slots (assigned, deleted, and empty)
// available within the `flat_hash_map`.
//
- // NOTE: this member function is particular to `y_absl::flat_hash_map` and is
+ // NOTE: this member function is particular to `y_absl::flat_hash_map` and is
// not provided in the `std::unordered_map` API.
using Base::capacity;
@@ -574,10 +574,10 @@ struct FlatHashMapPolicy {
}
template <class F, class... Args>
- static decltype(y_absl::container_internal::DecomposePair(
+ static decltype(y_absl::container_internal::DecomposePair(
std::declval<F>(), std::declval<Args>()...))
apply(F&& f, Args&&... args) {
- return y_absl::container_internal::DecomposePair(std::forward<F>(f),
+ return y_absl::container_internal::DecomposePair(std::forward<F>(f),
std::forward<Args>(args)...);
}
@@ -593,14 +593,14 @@ struct FlatHashMapPolicy {
namespace container_algorithm_internal {
-// Specialization of trait in y_absl/algorithm/container.h
+// Specialization of trait in y_absl/algorithm/container.h
template <class Key, class T, class Hash, class KeyEqual, class Allocator>
struct IsUnorderedContainer<
- y_absl::flat_hash_map<Key, T, Hash, KeyEqual, Allocator>> : std::true_type {};
+ y_absl::flat_hash_map<Key, T, Hash, KeyEqual, Allocator>> : std::true_type {};
} // namespace container_algorithm_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_FLAT_HASH_MAP_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/flat_hash_set.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/flat_hash_set.h
index b9117dfd7a..23fe02a950 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/flat_hash_set.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/flat_hash_set.h
@@ -16,7 +16,7 @@
// File: flat_hash_set.h
// -----------------------------------------------------------------------------
//
-// An `y_absl::flat_hash_set<T>` is an unordered associative container designed to
+// An `y_absl::flat_hash_set<T>` is an unordered associative container designed to
// be a more efficient replacement for `std::unordered_set`. Like
// `unordered_set`, search, insertion, and deletion of set elements can be done
// as an `O(1)` operation. However, `flat_hash_set` (and other unordered
@@ -32,14 +32,14 @@
#include <type_traits>
#include <utility>
-#include "y_absl/algorithm/container.h"
-#include "y_absl/base/macros.h"
-#include "y_absl/container/internal/container_memory.h"
-#include "y_absl/container/internal/hash_function_defaults.h" // IWYU pragma: export
-#include "y_absl/container/internal/raw_hash_set.h" // IWYU pragma: export
-#include "y_absl/memory/memory.h"
+#include "y_absl/algorithm/container.h"
+#include "y_absl/base/macros.h"
+#include "y_absl/container/internal/container_memory.h"
+#include "y_absl/container/internal/hash_function_defaults.h" // IWYU pragma: export
+#include "y_absl/container/internal/raw_hash_set.h" // IWYU pragma: export
+#include "y_absl/memory/memory.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
template <typename T>
@@ -47,10 +47,10 @@ struct FlatHashSetPolicy;
} // namespace container_internal
// -----------------------------------------------------------------------------
-// y_absl::flat_hash_set
+// y_absl::flat_hash_set
// -----------------------------------------------------------------------------
//
-// An `y_absl::flat_hash_set<T>` is an unordered associative container which has
+// An `y_absl::flat_hash_set<T>` is an unordered associative container which has
// been optimized for both speed and memory footprint in most common use cases.
// Its interface is similar to that of `std::unordered_set<T>` with the
// following notable differences:
@@ -65,24 +65,24 @@ struct FlatHashSetPolicy;
// slots (open, deleted, and empty) within the hash set.
// * Returns `void` from the `erase(iterator)` overload.
//
-// By default, `flat_hash_set` uses the `y_absl::Hash` hashing framework. All
-// fundamental and Abseil types that support the `y_absl::Hash` framework have a
+// By default, `flat_hash_set` uses the `y_absl::Hash` hashing framework. All
+// fundamental and Abseil types that support the `y_absl::Hash` framework have a
// compatible equality operator for comparing insertions into `flat_hash_map`.
-// If your type is not yet supported by the `y_absl::Hash` framework, see
-// y_absl/hash/hash.h for information on extending Abseil hashing to user-defined
+// If your type is not yet supported by the `y_absl::Hash` framework, see
+// y_absl/hash/hash.h for information on extending Abseil hashing to user-defined
// types.
//
// NOTE: A `flat_hash_set` stores its keys directly inside its implementation
// array to avoid memory indirection. Because a `flat_hash_set` is designed to
// move data when rehashed, set keys will not retain pointer stability. If you
// require pointer stability, consider using
-// `y_absl::flat_hash_set<std::unique_ptr<T>>`. If your type is not moveable and
-// you require pointer stability, consider `y_absl::node_hash_set` instead.
+// `y_absl::flat_hash_set<std::unique_ptr<T>>`. If your type is not moveable and
+// you require pointer stability, consider `y_absl::node_hash_set` instead.
//
// Example:
//
// // Create a flat hash set of three strings
-// y_absl::flat_hash_set<TString> ducks =
+// y_absl::flat_hash_set<TString> ducks =
// {"huey", "dewey", "louie"};
//
// // Insert a new element into the flat hash set
@@ -95,12 +95,12 @@ struct FlatHashSetPolicy;
// if (ducks.contains("dewey")) {
// std::cout << "We found dewey!" << std::endl;
// }
-template <class T, class Hash = y_absl::container_internal::hash_default_hash<T>,
- class Eq = y_absl::container_internal::hash_default_eq<T>,
+template <class T, class Hash = y_absl::container_internal::hash_default_hash<T>,
+ class Eq = y_absl::container_internal::hash_default_eq<T>,
class Allocator = std::allocator<T>>
class flat_hash_set
- : public y_absl::container_internal::raw_hash_set<
- y_absl::container_internal::FlatHashSetPolicy<T>, Hash, Eq, Allocator> {
+ : public y_absl::container_internal::raw_hash_set<
+ y_absl::container_internal::FlatHashSetPolicy<T>, Hash, Eq, Allocator> {
using Base = typename flat_hash_set::raw_hash_set;
public:
@@ -112,38 +112,38 @@ class flat_hash_set
// * Default constructor
//
// // No allocation for the table's elements is made.
- // y_absl::flat_hash_set<TString> set1;
+ // y_absl::flat_hash_set<TString> set1;
//
// * Initializer List constructor
//
- // y_absl::flat_hash_set<TString> set2 =
+ // y_absl::flat_hash_set<TString> set2 =
// {{"huey"}, {"dewey"}, {"louie"},};
//
// * Copy constructor
//
- // y_absl::flat_hash_set<TString> set3(set2);
+ // y_absl::flat_hash_set<TString> set3(set2);
//
// * Copy assignment operator
//
// // Hash functor and Comparator are copied as well
- // y_absl::flat_hash_set<TString> set4;
+ // y_absl::flat_hash_set<TString> set4;
// set4 = set3;
//
// * Move constructor
//
// // Move is guaranteed efficient
- // y_absl::flat_hash_set<TString> set5(std::move(set4));
+ // y_absl::flat_hash_set<TString> set5(std::move(set4));
//
// * Move assignment operator
//
// // May be efficient if allocators are compatible
- // y_absl::flat_hash_set<TString> set6;
+ // y_absl::flat_hash_set<TString> set6;
// set6 = std::move(set5);
//
// * Range constructor
//
- // std::vector<TString> v = {"a", "b"};
- // y_absl::flat_hash_set<TString> set7(v.begin(), v.end());
+ // std::vector<TString> v = {"a", "b"};
+ // y_absl::flat_hash_set<TString> set7(v.begin(), v.end());
flat_hash_set() {}
using Base::Base;
@@ -172,7 +172,7 @@ class flat_hash_set
// Returns the number of element slots (assigned, deleted, and empty)
// available within the `flat_hash_set`.
//
- // NOTE: this member function is particular to `y_absl::flat_hash_set` and is
+ // NOTE: this member function is particular to `y_absl::flat_hash_set` and is
// not provided in the `std::unordered_map` API.
using Base::capacity;
@@ -459,13 +459,13 @@ struct FlatHashSetPolicy {
template <class Allocator, class... Args>
static void construct(Allocator* alloc, slot_type* slot, Args&&... args) {
- y_absl::allocator_traits<Allocator>::construct(*alloc, slot,
+ y_absl::allocator_traits<Allocator>::construct(*alloc, slot,
std::forward<Args>(args)...);
}
template <class Allocator>
static void destroy(Allocator* alloc, slot_type* slot) {
- y_absl::allocator_traits<Allocator>::destroy(*alloc, slot);
+ y_absl::allocator_traits<Allocator>::destroy(*alloc, slot);
}
template <class Allocator>
@@ -478,10 +478,10 @@ struct FlatHashSetPolicy {
static T& element(slot_type* slot) { return *slot; }
template <class F, class... Args>
- static decltype(y_absl::container_internal::DecomposeValue(
+ static decltype(y_absl::container_internal::DecomposeValue(
std::declval<F>(), std::declval<Args>()...))
apply(F&& f, Args&&... args) {
- return y_absl::container_internal::DecomposeValue(
+ return y_absl::container_internal::DecomposeValue(
std::forward<F>(f), std::forward<Args>(args)...);
}
@@ -491,14 +491,14 @@ struct FlatHashSetPolicy {
namespace container_algorithm_internal {
-// Specialization of trait in y_absl/algorithm/container.h
+// Specialization of trait in y_absl/algorithm/container.h
template <class Key, class Hash, class KeyEqual, class Allocator>
-struct IsUnorderedContainer<y_absl::flat_hash_set<Key, Hash, KeyEqual, Allocator>>
+struct IsUnorderedContainer<y_absl::flat_hash_set<Key, Hash, KeyEqual, Allocator>>
: std::true_type {};
} // namespace container_algorithm_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_FLAT_HASH_SET_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/inlined_vector.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/inlined_vector.h
index 5f82d8a9e2..34af121cf7 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/inlined_vector.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/inlined_vector.h
@@ -21,16 +21,16 @@
// that storage for small sequences of the vector are provided inline without
// requiring any heap allocation.
//
-// An `y_absl::InlinedVector<T, N>` specifies the default capacity `N` as one of
+// An `y_absl::InlinedVector<T, N>` specifies the default capacity `N` as one of
// its template parameters. Instances where `size() <= N` hold contained
// elements in inline space. Typically `N` is very small so that sequences that
// are expected to be short do not require allocations.
//
-// An `y_absl::InlinedVector` does not usually require a specific allocator. If
+// An `y_absl::InlinedVector` does not usually require a specific allocator. If
// the inlined vector grows beyond its initial constraints, it will need to
// allocate (as any normal `std::vector` would). This is usually performed with
// the default allocator (defined as `std::allocator<T>`). Optionally, a custom
-// allocator type may be specified as `A` in `y_absl::InlinedVector<T, N, A>`.
+// allocator type may be specified as `A` in `y_absl::InlinedVector<T, N, A>`.
#ifndef ABSL_CONTAINER_INLINED_VECTOR_H_
#define ABSL_CONTAINER_INLINED_VECTOR_H_
@@ -46,21 +46,21 @@
#include <type_traits>
#include <utility>
-#include "y_absl/algorithm/algorithm.h"
-#include "y_absl/base/internal/throw_delegate.h"
+#include "y_absl/algorithm/algorithm.h"
+#include "y_absl/base/internal/throw_delegate.h"
#include "y_absl/base/macros.h"
-#include "y_absl/base/optimization.h"
-#include "y_absl/base/port.h"
-#include "y_absl/container/internal/inlined_vector.h"
-#include "y_absl/memory/memory.h"
+#include "y_absl/base/optimization.h"
+#include "y_absl/base/port.h"
+#include "y_absl/container/internal/inlined_vector.h"
+#include "y_absl/memory/memory.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// -----------------------------------------------------------------------------
// InlinedVector
// -----------------------------------------------------------------------------
//
-// An `y_absl::InlinedVector` is designed to be a drop-in replacement for
+// An `y_absl::InlinedVector` is designed to be a drop-in replacement for
// `std::vector` for use cases where the vector's size is sufficiently small
// that it can be inlined. If the inlined vector does grow beyond its estimated
// capacity, it will trigger an initial allocation on the heap, and will behave
@@ -68,7 +68,7 @@ ABSL_NAMESPACE_BEGIN
// designed to cover the same API footprint as covered by `std::vector`.
template <typename T, size_t N, typename A = std::allocator<T>>
class InlinedVector {
- static_assert(N > 0, "`y_absl::InlinedVector` requires an inlined capacity.");
+ static_assert(N > 0, "`y_absl::InlinedVector` requires an inlined capacity.");
using Storage = inlined_vector_internal::Storage<T, N, A>;
@@ -89,10 +89,10 @@ class InlinedVector {
inlined_vector_internal::DefaultValueAdapter<TheA>;
template <typename Iterator>
- using EnableIfAtLeastForwardIterator = y_absl::enable_if_t<
+ using EnableIfAtLeastForwardIterator = y_absl::enable_if_t<
inlined_vector_internal::IsAtLeastForwardIterator<Iterator>::value, int>;
template <typename Iterator>
- using DisableIfAtLeastForwardIterator = y_absl::enable_if_t<
+ using DisableIfAtLeastForwardIterator = y_absl::enable_if_t<
!inlined_vector_internal::IsAtLeastForwardIterator<Iterator>::value, int>;
public:
@@ -199,7 +199,7 @@ class InlinedVector {
// Thus, the move constructor is non-throwing if the allocator is non-throwing
// or `value_type`'s move constructor is specified as `noexcept`.
InlinedVector(InlinedVector&& other) noexcept(
- y_absl::allocator_is_nothrow<allocator_type>::value ||
+ y_absl::allocator_is_nothrow<allocator_type>::value ||
std::is_nothrow_move_constructible<value_type>::value)
: storage_(other.storage_.GetAllocator()) {
if (IsMemcpyOk<A>::value) {
@@ -758,7 +758,7 @@ class InlinedVector {
private:
template <typename H, typename TheT, size_t TheN, typename TheA>
- friend H AbslHashValue(H h, const y_absl::InlinedVector<TheT, TheN, TheA>& a);
+ friend H AbslHashValue(H h, const y_absl::InlinedVector<TheT, TheN, TheA>& a);
Storage storage_;
};
@@ -771,8 +771,8 @@ class InlinedVector {
//
// Swaps the contents of two inlined vectors.
template <typename T, size_t N, typename A>
-void swap(y_absl::InlinedVector<T, N, A>& a,
- y_absl::InlinedVector<T, N, A>& b) noexcept(noexcept(a.swap(b))) {
+void swap(y_absl::InlinedVector<T, N, A>& a,
+ y_absl::InlinedVector<T, N, A>& b) noexcept(noexcept(a.swap(b))) {
a.swap(b);
}
@@ -780,19 +780,19 @@ void swap(y_absl::InlinedVector<T, N, A>& a,
//
// Tests for value-equality of two inlined vectors.
template <typename T, size_t N, typename A>
-bool operator==(const y_absl::InlinedVector<T, N, A>& a,
- const y_absl::InlinedVector<T, N, A>& b) {
+bool operator==(const y_absl::InlinedVector<T, N, A>& a,
+ const y_absl::InlinedVector<T, N, A>& b) {
auto a_data = a.data();
auto b_data = b.data();
- return y_absl::equal(a_data, a_data + a.size(), b_data, b_data + b.size());
+ return y_absl::equal(a_data, a_data + a.size(), b_data, b_data + b.size());
}
// `operator!=(...)`
//
// Tests for value-inequality of two inlined vectors.
template <typename T, size_t N, typename A>
-bool operator!=(const y_absl::InlinedVector<T, N, A>& a,
- const y_absl::InlinedVector<T, N, A>& b) {
+bool operator!=(const y_absl::InlinedVector<T, N, A>& a,
+ const y_absl::InlinedVector<T, N, A>& b) {
return !(a == b);
}
@@ -801,8 +801,8 @@ bool operator!=(const y_absl::InlinedVector<T, N, A>& a,
// Tests whether the value of an inlined vector is less than the value of
// another inlined vector using a lexicographical comparison algorithm.
template <typename T, size_t N, typename A>
-bool operator<(const y_absl::InlinedVector<T, N, A>& a,
- const y_absl::InlinedVector<T, N, A>& b) {
+bool operator<(const y_absl::InlinedVector<T, N, A>& a,
+ const y_absl::InlinedVector<T, N, A>& b) {
auto a_data = a.data();
auto b_data = b.data();
return std::lexicographical_compare(a_data, a_data + a.size(), b_data,
@@ -814,8 +814,8 @@ bool operator<(const y_absl::InlinedVector<T, N, A>& a,
// Tests whether the value of an inlined vector is greater than the value of
// another inlined vector using a lexicographical comparison algorithm.
template <typename T, size_t N, typename A>
-bool operator>(const y_absl::InlinedVector<T, N, A>& a,
- const y_absl::InlinedVector<T, N, A>& b) {
+bool operator>(const y_absl::InlinedVector<T, N, A>& a,
+ const y_absl::InlinedVector<T, N, A>& b) {
return b < a;
}
@@ -824,8 +824,8 @@ bool operator>(const y_absl::InlinedVector<T, N, A>& a,
// Tests whether the value of an inlined vector is less than or equal to the
// value of another inlined vector using a lexicographical comparison algorithm.
template <typename T, size_t N, typename A>
-bool operator<=(const y_absl::InlinedVector<T, N, A>& a,
- const y_absl::InlinedVector<T, N, A>& b) {
+bool operator<=(const y_absl::InlinedVector<T, N, A>& a,
+ const y_absl::InlinedVector<T, N, A>& b) {
return !(b < a);
}
@@ -834,22 +834,22 @@ bool operator<=(const y_absl::InlinedVector<T, N, A>& a,
// Tests whether the value of an inlined vector is greater than or equal to the
// value of another inlined vector using a lexicographical comparison algorithm.
template <typename T, size_t N, typename A>
-bool operator>=(const y_absl::InlinedVector<T, N, A>& a,
- const y_absl::InlinedVector<T, N, A>& b) {
+bool operator>=(const y_absl::InlinedVector<T, N, A>& a,
+ const y_absl::InlinedVector<T, N, A>& b) {
return !(a < b);
}
// `AbslHashValue(...)`
//
-// Provides `y_absl::Hash` support for `y_absl::InlinedVector`. It is uncommon to
+// Provides `y_absl::Hash` support for `y_absl::InlinedVector`. It is uncommon to
// call this directly.
template <typename H, typename T, size_t N, typename A>
-H AbslHashValue(H h, const y_absl::InlinedVector<T, N, A>& a) {
+H AbslHashValue(H h, const y_absl::InlinedVector<T, N, A>& a) {
auto size = a.size();
return H::combine(H::combine_contiguous(std::move(h), a.data(), size), size);
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_INLINED_VECTOR_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/btree.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/btree.h
index d0834c4ebc..a249260811 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/btree.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/btree.h
@@ -58,19 +58,19 @@
#include <type_traits>
#include <utility>
-#include "y_absl/base/macros.h"
-#include "y_absl/container/internal/common.h"
-#include "y_absl/container/internal/compressed_tuple.h"
-#include "y_absl/container/internal/container_memory.h"
-#include "y_absl/container/internal/layout.h"
-#include "y_absl/memory/memory.h"
-#include "y_absl/meta/type_traits.h"
+#include "y_absl/base/macros.h"
+#include "y_absl/container/internal/common.h"
+#include "y_absl/container/internal/compressed_tuple.h"
+#include "y_absl/container/internal/container_memory.h"
+#include "y_absl/container/internal/layout.h"
+#include "y_absl/memory/memory.h"
+#include "y_absl/meta/type_traits.h"
#include "y_absl/strings/cord.h"
-#include "y_absl/strings/string_view.h"
-#include "y_absl/types/compare.h"
-#include "y_absl/utility/utility.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/compare.h"
+#include "y_absl/utility/utility.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
@@ -78,8 +78,8 @@ namespace container_internal {
// comparator.
template <typename Compare, typename T>
using btree_is_key_compare_to =
- std::is_convertible<y_absl::result_of_t<Compare(const T &, const T &)>,
- y_absl::weak_ordering>;
+ std::is_convertible<y_absl::result_of_t<Compare(const T &, const T &)>,
+ y_absl::weak_ordering>;
struct StringBtreeDefaultLess {
using is_transparent = void;
@@ -87,7 +87,7 @@ struct StringBtreeDefaultLess {
StringBtreeDefaultLess() = default;
// Compatibility constructor.
- StringBtreeDefaultLess(std::less<TString>) {} // NOLINT
+ StringBtreeDefaultLess(std::less<TString>) {} // NOLINT
StringBtreeDefaultLess(std::less<y_absl::string_view>) {} // NOLINT
// Allow converting to std::less for use in key_comp()/value_comp().
@@ -95,8 +95,8 @@ struct StringBtreeDefaultLess {
explicit operator std::less<y_absl::string_view>() const { return {}; }
explicit operator std::less<y_absl::Cord>() const { return {}; }
- y_absl::weak_ordering operator()(y_absl::string_view lhs,
- y_absl::string_view rhs) const {
+ y_absl::weak_ordering operator()(y_absl::string_view lhs,
+ y_absl::string_view rhs) const {
return compare_internal::compare_result_as_ordering(lhs.compare(rhs));
}
StringBtreeDefaultLess(std::less<y_absl::Cord>) {} // NOLINT
@@ -119,7 +119,7 @@ struct StringBtreeDefaultGreater {
StringBtreeDefaultGreater() = default;
- StringBtreeDefaultGreater(std::greater<TString>) {} // NOLINT
+ StringBtreeDefaultGreater(std::greater<TString>) {} // NOLINT
StringBtreeDefaultGreater(std::greater<y_absl::string_view>) {} // NOLINT
// Allow converting to std::greater for use in key_comp()/value_comp().
@@ -127,8 +127,8 @@ struct StringBtreeDefaultGreater {
explicit operator std::greater<y_absl::string_view>() const { return {}; }
explicit operator std::greater<y_absl::Cord>() const { return {}; }
- y_absl::weak_ordering operator()(y_absl::string_view lhs,
- y_absl::string_view rhs) const {
+ y_absl::weak_ordering operator()(y_absl::string_view lhs,
+ y_absl::string_view rhs) const {
return compare_internal::compare_result_as_ordering(rhs.compare(lhs));
}
StringBtreeDefaultGreater(std::greater<y_absl::Cord>) {} // NOLINT
@@ -148,7 +148,7 @@ struct StringBtreeDefaultGreater {
// A helper class to convert a boolean comparison into a three-way "compare-to"
// comparison that returns an `y_absl::weak_ordering`. This helper
-// class is specialized for less<TString>, greater<TString>,
+// class is specialized for less<TString>, greater<TString>,
// less<string_view>, greater<string_view>, less<y_absl::Cord>, and
// greater<y_absl::Cord>.
//
@@ -163,22 +163,22 @@ struct key_compare_to_adapter {
};
template <>
-struct key_compare_to_adapter<std::less<TString>> {
+struct key_compare_to_adapter<std::less<TString>> {
using type = StringBtreeDefaultLess;
};
template <>
-struct key_compare_to_adapter<std::greater<TString>> {
+struct key_compare_to_adapter<std::greater<TString>> {
using type = StringBtreeDefaultGreater;
};
template <>
-struct key_compare_to_adapter<std::less<y_absl::string_view>> {
+struct key_compare_to_adapter<std::less<y_absl::string_view>> {
using type = StringBtreeDefaultLess;
};
template <>
-struct key_compare_to_adapter<std::greater<y_absl::string_view>> {
+struct key_compare_to_adapter<std::greater<y_absl::string_view>> {
using type = StringBtreeDefaultGreater;
};
@@ -280,7 +280,7 @@ struct common_params {
// This is an integral type large enough to hold as many
// ValueSize-values as will fit a node of TargetNodeSize bytes.
using node_count_type =
- y_absl::conditional_t<(kNodeValueSpace / sizeof(value_type) >
+ y_absl::conditional_t<(kNodeValueSpace / sizeof(value_type) >
(std::numeric_limits<uint8_t>::max)()),
uint16_t, uint8_t>; // NOLINT
@@ -363,7 +363,7 @@ struct map_params : common_params<Key, Compare, Alloc, TargetNodeSize, Multi,
};
// This type implements the necessary functions from the
-// y_absl::container_internal::slot_type interface.
+// y_absl::container_internal::slot_type interface.
template <typename Key>
struct set_slot_policy {
using slot_type = Key;
@@ -375,18 +375,18 @@ struct set_slot_policy {
template <typename Alloc, class... Args>
static void construct(Alloc *alloc, slot_type *slot, Args &&... args) {
- y_absl::allocator_traits<Alloc>::construct(*alloc, slot,
+ y_absl::allocator_traits<Alloc>::construct(*alloc, slot,
std::forward<Args>(args)...);
}
template <typename Alloc>
static void construct(Alloc *alloc, slot_type *slot, slot_type *other) {
- y_absl::allocator_traits<Alloc>::construct(*alloc, slot, std::move(*other));
+ y_absl::allocator_traits<Alloc>::construct(*alloc, slot, std::move(*other));
}
template <typename Alloc>
static void destroy(Alloc *alloc, slot_type *slot) {
- y_absl::allocator_traits<Alloc>::destroy(*alloc, slot);
+ y_absl::allocator_traits<Alloc>::destroy(*alloc, slot);
}
template <typename Alloc>
@@ -553,7 +553,7 @@ class btree_node {
btree_node() = default;
private:
- using layout_type = y_absl::container_internal::Layout<btree_node *, field_type,
+ using layout_type = y_absl::container_internal::Layout<btree_node *, field_type,
slot_type, btree_node *>;
constexpr static size_type SizeWithNSlots(size_type n) {
return layout_type(/*parent*/ 1,
@@ -695,10 +695,10 @@ class btree_node {
btree_node *start_child() const { return child(start()); }
btree_node *&mutable_child(int i) { return GetField<3>()[i]; }
void clear_child(int i) {
- y_absl::container_internal::SanitizerPoisonObject(&mutable_child(i));
+ y_absl::container_internal::SanitizerPoisonObject(&mutable_child(i));
}
void set_child(int i, btree_node *c) {
- y_absl::container_internal::SanitizerUnpoisonObject(&mutable_child(i));
+ y_absl::container_internal::SanitizerUnpoisonObject(&mutable_child(i));
mutable_child(i) = c;
c->set_position(i);
}
@@ -758,7 +758,7 @@ class btree_node {
const K &k, int s, const int e, const Compare &comp,
std::true_type /* IsCompareTo */) const {
while (s < e) {
- const y_absl::weak_ordering c = comp(key(s), k);
+ const y_absl::weak_ordering c = comp(key(s), k);
if (c == 0) {
return {s, MatchKind::kEq};
} else if (c > 0) {
@@ -796,7 +796,7 @@ class btree_node {
MatchKind exact_match = MatchKind::kNe;
while (s != e) {
const int mid = (s + e) >> 1;
- const y_absl::weak_ordering c = comp(key(mid), k);
+ const y_absl::weak_ordering c = comp(key(mid), k);
if (c < 0) {
s = mid + 1;
} else {
@@ -813,7 +813,7 @@ class btree_node {
} else { // Can't have multiple equivalent keys.
while (s != e) {
const int mid = (s + e) >> 1;
- const y_absl::weak_ordering c = comp(key(mid), k);
+ const y_absl::weak_ordering c = comp(key(mid), k);
if (c < 0) {
s = mid + 1;
} else if (c > 0) {
@@ -856,7 +856,7 @@ class btree_node {
set_start(0);
set_finish(0);
set_max_count(max_count);
- y_absl::container_internal::SanitizerPoisonMemoryRegion(
+ y_absl::container_internal::SanitizerPoisonMemoryRegion(
start_slot(), max_count * sizeof(slot_type));
}
void init_internal(btree_node *parent) {
@@ -864,7 +864,7 @@ class btree_node {
// Set `max_count` to a sentinel value to indicate that this node is
// internal.
set_max_count(kInternalNodeMaxCount);
- y_absl::container_internal::SanitizerPoisonMemoryRegion(
+ y_absl::container_internal::SanitizerPoisonMemoryRegion(
&mutable_child(start()), (kNodeSlots + 1) * sizeof(btree_node *));
}
@@ -879,12 +879,12 @@ class btree_node {
private:
template <typename... Args>
void value_init(const field_type i, allocator_type *alloc, Args &&... args) {
- y_absl::container_internal::SanitizerUnpoisonObject(slot(i));
+ y_absl::container_internal::SanitizerUnpoisonObject(slot(i));
params_type::construct(alloc, slot(i), std::forward<Args>(args)...);
}
void value_destroy(const field_type i, allocator_type *alloc) {
params_type::destroy(alloc, slot(i));
- y_absl::container_internal::SanitizerPoisonObject(slot(i));
+ y_absl::container_internal::SanitizerPoisonObject(slot(i));
}
void value_destroy_n(const field_type i, const field_type n,
allocator_type *alloc) {
@@ -975,7 +975,7 @@ struct btree_iterator {
// const_iterator, but it specifically avoids hiding the copy constructor so
// that the trivial one will be used when possible.
template <typename N, typename R, typename P,
- y_absl::enable_if_t<
+ y_absl::enable_if_t<
std::is_same<btree_iterator<N, R, P>, iterator>::value &&
std::is_same<btree_iterator, const_iterator>::value,
int> = 0>
@@ -988,7 +988,7 @@ struct btree_iterator {
// NOTE: the const_cast is safe because this constructor is only called by
// non-const methods and the container owns the nodes.
template <typename N, typename R, typename P,
- y_absl::enable_if_t<
+ y_absl::enable_if_t<
std::is_same<btree_iterator<N, R, P>, const_iterator>::value &&
std::is_same<btree_iterator, iterator>::value,
int> = 0>
@@ -1462,7 +1462,7 @@ class btree {
// allocator.
node_type *allocate(const size_type size) {
return reinterpret_cast<node_type *>(
- y_absl::container_internal::Allocate<node_type::Alignment()>(
+ y_absl::container_internal::Allocate<node_type::Alignment()>(
mutable_allocator(), size));
}
@@ -1566,7 +1566,7 @@ class btree {
// We use compressed tuple in order to save space because key_compare and
// allocator_type are usually empty.
- y_absl::container_internal::CompressedTuple<key_compare, allocator_type,
+ y_absl::container_internal::CompressedTuple<key_compare, allocator_type,
node_type *>
root_;
@@ -1920,13 +1920,13 @@ constexpr bool btree<P>::static_assert_validation() {
kNodeSlots < (1 << (8 * sizeof(typename node_type::field_type))),
"target node size too large");
- // Verify that key_compare returns an y_absl::{weak,strong}_ordering or bool.
+ // Verify that key_compare returns an y_absl::{weak,strong}_ordering or bool.
using compare_result_type =
- y_absl::result_of_t<key_compare(key_type, key_type)>;
+ y_absl::result_of_t<key_compare(key_type, key_type)>;
static_assert(
std::is_same<compare_result_type, bool>::value ||
- std::is_convertible<compare_result_type, y_absl::weak_ordering>::value,
- "key comparison function must return y_absl::{weak,strong}_ordering or "
+ std::is_convertible<compare_result_type, y_absl::weak_ordering>::value,
+ "key comparison function must return y_absl::{weak,strong}_ordering or "
"bool.");
// Test the assumption made in setting kNodeValueSpace.
@@ -2096,7 +2096,7 @@ auto btree<P>::operator=(const btree &other) -> btree & {
clear();
*mutable_key_comp() = other.key_comp();
- if (y_absl::allocator_traits<
+ if (y_absl::allocator_traits<
allocator_type>::propagate_on_container_copy_assignment::value) {
*mutable_allocator() = other.allocator();
}
@@ -2112,7 +2112,7 @@ auto btree<P>::operator=(btree &&other) noexcept -> btree & {
clear();
using std::swap;
- if (y_absl::allocator_traits<
+ if (y_absl::allocator_traits<
allocator_type>::propagate_on_container_copy_assignment::value) {
// Note: `root_` also contains the allocator and the key comparator.
swap(root_, other.root_);
@@ -2267,7 +2267,7 @@ void btree<P>::clear() {
template <typename P>
void btree<P>::swap(btree &other) {
using std::swap;
- if (y_absl::allocator_traits<
+ if (y_absl::allocator_traits<
allocator_type>::propagate_on_container_swap::value) {
// Note: `root_` also contains the allocator and the key comparator.
swap(root_, other.root_);
@@ -2636,6 +2636,6 @@ int btree<P>::internal_verify(const node_type *node, const key_type *lo,
} // namespace container_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_INTERNAL_BTREE_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/btree_container.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/btree_container.h
index 167d907bd8..d23feff31b 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/btree_container.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/btree_container.h
@@ -21,13 +21,13 @@
#include <utility>
#include "y_absl/base/attributes.h"
-#include "y_absl/base/internal/throw_delegate.h"
-#include "y_absl/container/internal/btree.h" // IWYU pragma: export
-#include "y_absl/container/internal/common.h"
+#include "y_absl/base/internal/throw_delegate.h"
+#include "y_absl/container/internal/btree.h" // IWYU pragma: export
+#include "y_absl/container/internal/common.h"
#include "y_absl/memory/memory.h"
-#include "y_absl/meta/type_traits.h"
+#include "y_absl/meta/type_traits.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
@@ -218,7 +218,7 @@ class btree_container {
key_compare key_comp() const { return key_compare(tree_.key_comp()); }
value_compare value_comp() const { return tree_.value_comp(); }
- // Support y_absl::Hash.
+ // Support y_absl::Hash.
template <typename State>
friend State AbslHashValue(State h, const btree_container &b) {
for (const auto &v : b) {
@@ -353,8 +353,8 @@ class btree_set_container : public btree_container<Tree> {
// `this`, it is left unmodified in `src`.
template <
typename T,
- typename y_absl::enable_if_t<
- y_absl::conjunction<
+ typename y_absl::enable_if_t<
+ y_absl::conjunction<
std::is_same<value_type, typename T::value_type>,
std::is_same<allocator_type, typename T::allocator_type>,
std::is_same<typename params_type::is_map_container,
@@ -372,8 +372,8 @@ class btree_set_container : public btree_container<Tree> {
template <
typename T,
- typename y_absl::enable_if_t<
- y_absl::conjunction<
+ typename y_absl::enable_if_t<
+ y_absl::conjunction<
std::is_same<value_type, typename T::value_type>,
std::is_same<allocator_type, typename T::allocator_type>,
std::is_same<typename params_type::is_map_container,
@@ -483,14 +483,14 @@ class btree_map_container : public btree_set_container<Tree> {
mapped_type &at(const key_arg<K> &key) {
auto it = this->find(key);
if (it == this->end())
- base_internal::ThrowStdOutOfRange("y_absl::btree_map::at");
+ base_internal::ThrowStdOutOfRange("y_absl::btree_map::at");
return it->second;
}
template <typename K = key_type>
const mapped_type &at(const key_arg<K> &key) const {
auto it = this->find(key);
if (it == this->end())
- base_internal::ThrowStdOutOfRange("y_absl::btree_map::at");
+ base_internal::ThrowStdOutOfRange("y_absl::btree_map::at");
return it->second;
}
@@ -634,8 +634,8 @@ class btree_multiset_container : public btree_container<Tree> {
// Moves all elements from `src` into `this`.
template <
typename T,
- typename y_absl::enable_if_t<
- y_absl::conjunction<
+ typename y_absl::enable_if_t<
+ y_absl::conjunction<
std::is_same<value_type, typename T::value_type>,
std::is_same<allocator_type, typename T::allocator_type>,
std::is_same<typename params_type::is_map_container,
@@ -650,8 +650,8 @@ class btree_multiset_container : public btree_container<Tree> {
template <
typename T,
- typename y_absl::enable_if_t<
- y_absl::conjunction<
+ typename y_absl::enable_if_t<
+ y_absl::conjunction<
std::is_same<value_type, typename T::value_type>,
std::is_same<allocator_type, typename T::allocator_type>,
std::is_same<typename params_type::is_map_container,
@@ -678,6 +678,6 @@ class btree_multimap_container : public btree_multiset_container<Tree> {
} // namespace container_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_INTERNAL_BTREE_CONTAINER_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/common.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/common.h
index fff41f3501..ec84f975e5 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/common.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/common.h
@@ -18,17 +18,17 @@
#include <cassert>
#include <type_traits>
-#include "y_absl/meta/type_traits.h"
-#include "y_absl/types/optional.h"
+#include "y_absl/meta/type_traits.h"
+#include "y_absl/types/optional.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
template <class, class = void>
struct IsTransparent : std::false_type {};
template <class T>
-struct IsTransparent<T, y_absl::void_t<typename T::is_transparent>>
+struct IsTransparent<T, y_absl::void_t<typename T::is_transparent>>
: std::true_type {};
template <bool is_transparent>
@@ -99,7 +99,7 @@ class node_handle_base {
void reset() {
assert(alloc_.has_value());
- alloc_ = y_absl::nullopt;
+ alloc_ = y_absl::nullopt;
}
slot_type* slot() const {
@@ -135,7 +135,7 @@ class node_handle : public node_handle_base<PolicyTraits, Alloc> {
// For maps.
template <typename Policy, typename PolicyTraits, typename Alloc>
class node_handle<Policy, PolicyTraits, Alloc,
- y_absl::void_t<typename Policy::mapped_type>>
+ y_absl::void_t<typename Policy::mapped_type>>
: public node_handle_base<PolicyTraits, Alloc> {
using Base = node_handle_base<PolicyTraits, Alloc>;
using slot_type = typename PolicyTraits::slot_type;
@@ -201,6 +201,6 @@ struct InsertReturnType {
} // namespace container_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_INTERNAL_CONTAINER_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/compressed_tuple.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/compressed_tuple.h
index 16c901c4d2..735b738a9b 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/compressed_tuple.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/compressed_tuple.h
@@ -20,7 +20,7 @@
// To access the members, use member get<N>() function.
//
// Eg:
-// y_absl::container_internal::CompressedTuple<int, T1, T2, T3> value(7, t1, t2,
+// y_absl::container_internal::CompressedTuple<int, T1, T2, T3> value(7, t1, t2,
// t3);
// assert(value.get<0>() == 7);
// T1& t1 = value.get<1>();
@@ -37,7 +37,7 @@
#include <type_traits>
#include <utility>
-#include "y_absl/utility/utility.h"
+#include "y_absl/utility/utility.h"
#if defined(_MSC_VER) && !defined(__NVCC__)
// We need to mark these classes with this declspec to ensure that
@@ -47,7 +47,7 @@
#define ABSL_INTERNAL_COMPRESSED_TUPLE_DECLSPEC
#endif
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
@@ -104,11 +104,11 @@ struct Storage {
T value;
constexpr Storage() = default;
template <typename V>
- explicit constexpr Storage(y_absl::in_place_t, V&& v)
- : value(y_absl::forward<V>(v)) {}
+ explicit constexpr Storage(y_absl::in_place_t, V&& v)
+ : value(y_absl::forward<V>(v)) {}
constexpr const T& get() const& { return value; }
T& get() & { return value; }
- constexpr const T&& get() const&& { return y_absl::move(*this).value; }
+ constexpr const T&& get() const&& { return y_absl::move(*this).value; }
T&& get() && { return std::move(*this).value; }
};
@@ -117,12 +117,12 @@ struct ABSL_INTERNAL_COMPRESSED_TUPLE_DECLSPEC Storage<T, I, true> : T {
constexpr Storage() = default;
template <typename V>
- explicit constexpr Storage(y_absl::in_place_t, V&& v)
- : T(y_absl::forward<V>(v)) {}
+ explicit constexpr Storage(y_absl::in_place_t, V&& v)
+ : T(y_absl::forward<V>(v)) {}
constexpr const T& get() const& { return *this; }
T& get() & { return *this; }
- constexpr const T&& get() const&& { return y_absl::move(*this); }
+ constexpr const T&& get() const&& { return y_absl::move(*this); }
T&& get() && { return std::move(*this); }
};
@@ -131,7 +131,7 @@ struct ABSL_INTERNAL_COMPRESSED_TUPLE_DECLSPEC CompressedTupleImpl;
template <typename... Ts, size_t... I, bool ShouldAnyUseBase>
struct ABSL_INTERNAL_COMPRESSED_TUPLE_DECLSPEC CompressedTupleImpl<
- CompressedTuple<Ts...>, y_absl::index_sequence<I...>, ShouldAnyUseBase>
+ CompressedTuple<Ts...>, y_absl::index_sequence<I...>, ShouldAnyUseBase>
// We use the dummy identity function through std::integral_constant to
// convince MSVC of accepting and expanding I in that context. Without it
// you would get:
@@ -140,20 +140,20 @@ struct ABSL_INTERNAL_COMPRESSED_TUPLE_DECLSPEC CompressedTupleImpl<
Storage<Ts, std::integral_constant<size_t, I>::value>... {
constexpr CompressedTupleImpl() = default;
template <typename... Vs>
- explicit constexpr CompressedTupleImpl(y_absl::in_place_t, Vs&&... args)
- : Storage<Ts, I>(y_absl::in_place, y_absl::forward<Vs>(args))... {}
+ explicit constexpr CompressedTupleImpl(y_absl::in_place_t, Vs&&... args)
+ : Storage<Ts, I>(y_absl::in_place, y_absl::forward<Vs>(args))... {}
friend CompressedTuple<Ts...>;
};
template <typename... Ts, size_t... I>
struct ABSL_INTERNAL_COMPRESSED_TUPLE_DECLSPEC CompressedTupleImpl<
- CompressedTuple<Ts...>, y_absl::index_sequence<I...>, false>
+ CompressedTuple<Ts...>, y_absl::index_sequence<I...>, false>
// We use the dummy identity function as above...
: Storage<Ts, std::integral_constant<size_t, I>::value, false>... {
constexpr CompressedTupleImpl() = default;
template <typename... Vs>
- explicit constexpr CompressedTupleImpl(y_absl::in_place_t, Vs&&... args)
- : Storage<Ts, I, false>(y_absl::in_place, y_absl::forward<Vs>(args))... {}
+ explicit constexpr CompressedTupleImpl(y_absl::in_place_t, Vs&&... args)
+ : Storage<Ts, I, false>(y_absl::in_place, y_absl::forward<Vs>(args))... {}
friend CompressedTuple<Ts...>;
};
@@ -209,7 +209,7 @@ struct TupleItemsMoveConstructible
// To access the members, use member .get<N>() function.
//
// Eg:
-// y_absl::container_internal::CompressedTuple<int, T1, T2, T3> value(7, t1, t2,
+// y_absl::container_internal::CompressedTuple<int, T1, T2, T3> value(7, t1, t2,
// t3);
// assert(value.get<0>() == 7);
// T1& t1 = value.get<1>();
@@ -220,7 +220,7 @@ struct TupleItemsMoveConstructible
template <typename... Ts>
class ABSL_INTERNAL_COMPRESSED_TUPLE_DECLSPEC CompressedTuple
: private internal_compressed_tuple::CompressedTupleImpl<
- CompressedTuple<Ts...>, y_absl::index_sequence_for<Ts...>,
+ CompressedTuple<Ts...>, y_absl::index_sequence_for<Ts...>,
internal_compressed_tuple::ShouldAnyUseBase<Ts...>()> {
private:
template <int I>
@@ -239,21 +239,21 @@ class ABSL_INTERNAL_COMPRESSED_TUPLE_DECLSPEC CompressedTuple
constexpr CompressedTuple() = default;
#endif
explicit constexpr CompressedTuple(const Ts&... base)
- : CompressedTuple::CompressedTupleImpl(y_absl::in_place, base...) {}
+ : CompressedTuple::CompressedTupleImpl(y_absl::in_place, base...) {}
template <typename First, typename... Vs,
- y_absl::enable_if_t<
- y_absl::conjunction<
+ y_absl::enable_if_t<
+ y_absl::conjunction<
// Ensure we are not hiding default copy/move constructors.
- y_absl::negation<std::is_same<void(CompressedTuple),
+ y_absl::negation<std::is_same<void(CompressedTuple),
void(y_absl::decay_t<First>)>>,
internal_compressed_tuple::TupleItemsMoveConstructible<
CompressedTuple<Ts...>, First, Vs...>>::value,
bool> = true>
explicit constexpr CompressedTuple(First&& first, Vs&&... base)
- : CompressedTuple::CompressedTupleImpl(y_absl::in_place,
+ : CompressedTuple::CompressedTupleImpl(y_absl::in_place,
y_absl::forward<First>(first),
- y_absl::forward<Vs>(base)...) {}
+ y_absl::forward<Vs>(base)...) {}
template <int I>
ElemT<I>& get() & {
@@ -272,7 +272,7 @@ class ABSL_INTERNAL_COMPRESSED_TUPLE_DECLSPEC CompressedTuple
template <int I>
constexpr const ElemT<I>&& get() const&& {
- return y_absl::move(*this).StorageT<I>::get();
+ return y_absl::move(*this).StorageT<I>::get();
}
};
@@ -283,7 +283,7 @@ class ABSL_INTERNAL_COMPRESSED_TUPLE_DECLSPEC CompressedTuple<> {};
} // namespace container_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#undef ABSL_INTERNAL_COMPRESSED_TUPLE_DECLSPEC
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/container_memory.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/container_memory.h
index c15b0e49ba..348bc8c0d0 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/container_memory.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/container_memory.h
@@ -24,9 +24,9 @@
#include <utility>
#include "y_absl/base/config.h"
-#include "y_absl/memory/memory.h"
+#include "y_absl/memory/memory.h"
#include "y_absl/meta/type_traits.h"
-#include "y_absl/utility/utility.h"
+#include "y_absl/utility/utility.h"
#ifdef ABSL_HAVE_ADDRESS_SANITIZER
#include <sanitizer/asan_interface.h>
@@ -36,7 +36,7 @@
#include <sanitizer/msan_interface.h>
#endif
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
@@ -55,8 +55,8 @@ void* Allocate(Alloc* alloc, size_t n) {
static_assert(Alignment > 0, "");
assert(n && "n must be positive");
using M = AlignedType<Alignment>;
- using A = typename y_absl::allocator_traits<Alloc>::template rebind_alloc<M>;
- using AT = typename y_absl::allocator_traits<Alloc>::template rebind_traits<M>;
+ using A = typename y_absl::allocator_traits<Alloc>::template rebind_alloc<M>;
+ using AT = typename y_absl::allocator_traits<Alloc>::template rebind_traits<M>;
// On macOS, "mem_alloc" is a #define with one argument defined in
// rpc/types.h, so we can't name the variable "mem_alloc" and initialize it
// with the "foo(bar)" syntax.
@@ -74,8 +74,8 @@ void Deallocate(Alloc* alloc, void* p, size_t n) {
static_assert(Alignment > 0, "");
assert(n && "n must be positive");
using M = AlignedType<Alignment>;
- using A = typename y_absl::allocator_traits<Alloc>::template rebind_alloc<M>;
- using AT = typename y_absl::allocator_traits<Alloc>::template rebind_traits<M>;
+ using A = typename y_absl::allocator_traits<Alloc>::template rebind_alloc<M>;
+ using AT = typename y_absl::allocator_traits<Alloc>::template rebind_traits<M>;
// On macOS, "mem_alloc" is a #define with one argument defined in
// rpc/types.h, so we can't name the variable "mem_alloc" and initialize it
// with the "foo(bar)" syntax.
@@ -90,8 +90,8 @@ namespace memory_internal {
// specified in the tuple.
template <class Alloc, class T, class Tuple, size_t... I>
void ConstructFromTupleImpl(Alloc* alloc, T* ptr, Tuple&& t,
- y_absl::index_sequence<I...>) {
- y_absl::allocator_traits<Alloc>::construct(
+ y_absl::index_sequence<I...>) {
+ y_absl::allocator_traits<Alloc>::construct(
*alloc, ptr, std::get<I>(std::forward<Tuple>(t))...);
}
@@ -107,13 +107,13 @@ struct WithConstructedImplF {
template <class T, class Tuple, size_t... Is, class F>
decltype(std::declval<F>()(std::declval<T>())) WithConstructedImpl(
- Tuple&& t, y_absl::index_sequence<Is...>, F&& f) {
+ Tuple&& t, y_absl::index_sequence<Is...>, F&& f) {
return WithConstructedImplF<T, F>{std::forward<F>(f)}(
std::get<Is>(std::forward<Tuple>(t))...);
}
template <class T, size_t... Is>
-auto TupleRefImpl(T&& t, y_absl::index_sequence<Is...>)
+auto TupleRefImpl(T&& t, y_absl::index_sequence<Is...>)
-> decltype(std::forward_as_tuple(std::get<Is>(std::forward<T>(t))...)) {
return std::forward_as_tuple(std::get<Is>(std::forward<T>(t))...);
}
@@ -123,11 +123,11 @@ auto TupleRefImpl(T&& t, y_absl::index_sequence<Is...>)
template <class T>
auto TupleRef(T&& t) -> decltype(
TupleRefImpl(std::forward<T>(t),
- y_absl::make_index_sequence<
+ y_absl::make_index_sequence<
std::tuple_size<typename std::decay<T>::type>::value>())) {
return TupleRefImpl(
std::forward<T>(t),
- y_absl::make_index_sequence<
+ y_absl::make_index_sequence<
std::tuple_size<typename std::decay<T>::type>::value>());
}
@@ -148,7 +148,7 @@ template <class Alloc, class T, class Tuple>
void ConstructFromTuple(Alloc* alloc, T* ptr, Tuple&& t) {
memory_internal::ConstructFromTupleImpl(
alloc, ptr, std::forward<Tuple>(t),
- y_absl::make_index_sequence<
+ y_absl::make_index_sequence<
std::tuple_size<typename std::decay<Tuple>::type>::value>());
}
@@ -159,7 +159,7 @@ decltype(std::declval<F>()(std::declval<T>())) WithConstructed(
Tuple&& t, F&& f) {
return memory_internal::WithConstructedImpl<T>(
std::forward<Tuple>(t),
- y_absl::make_index_sequence<
+ y_absl::make_index_sequence<
std::tuple_size<typename std::decay<Tuple>::type>::value>(),
std::forward<F>(f));
}
@@ -381,10 +381,10 @@ struct map_slot_policy {
static void construct(Allocator* alloc, slot_type* slot, Args&&... args) {
emplace(slot);
if (kMutableKeys::value) {
- y_absl::allocator_traits<Allocator>::construct(*alloc, &slot->mutable_value,
+ y_absl::allocator_traits<Allocator>::construct(*alloc, &slot->mutable_value,
std::forward<Args>(args)...);
} else {
- y_absl::allocator_traits<Allocator>::construct(*alloc, &slot->value,
+ y_absl::allocator_traits<Allocator>::construct(*alloc, &slot->value,
std::forward<Args>(args)...);
}
}
@@ -394,10 +394,10 @@ struct map_slot_policy {
static void construct(Allocator* alloc, slot_type* slot, slot_type* other) {
emplace(slot);
if (kMutableKeys::value) {
- y_absl::allocator_traits<Allocator>::construct(
+ y_absl::allocator_traits<Allocator>::construct(
*alloc, &slot->mutable_value, std::move(other->mutable_value));
} else {
- y_absl::allocator_traits<Allocator>::construct(*alloc, &slot->value,
+ y_absl::allocator_traits<Allocator>::construct(*alloc, &slot->value,
std::move(other->value));
}
}
@@ -405,9 +405,9 @@ struct map_slot_policy {
template <class Allocator>
static void destroy(Allocator* alloc, slot_type* slot) {
if (kMutableKeys::value) {
- y_absl::allocator_traits<Allocator>::destroy(*alloc, &slot->mutable_value);
+ y_absl::allocator_traits<Allocator>::destroy(*alloc, &slot->mutable_value);
} else {
- y_absl::allocator_traits<Allocator>::destroy(*alloc, &slot->value);
+ y_absl::allocator_traits<Allocator>::destroy(*alloc, &slot->value);
}
}
@@ -416,10 +416,10 @@ struct map_slot_policy {
slot_type* old_slot) {
emplace(new_slot);
if (kMutableKeys::value) {
- y_absl::allocator_traits<Allocator>::construct(
+ y_absl::allocator_traits<Allocator>::construct(
*alloc, &new_slot->mutable_value, std::move(old_slot->mutable_value));
} else {
- y_absl::allocator_traits<Allocator>::construct(*alloc, &new_slot->value,
+ y_absl::allocator_traits<Allocator>::construct(*alloc, &new_slot->value,
std::move(old_slot->value));
}
destroy(alloc, old_slot);
@@ -432,11 +432,11 @@ struct map_slot_policy {
swap(a->mutable_value, b->mutable_value);
} else {
value_type tmp = std::move(a->value);
- y_absl::allocator_traits<Allocator>::destroy(*alloc, &a->value);
- y_absl::allocator_traits<Allocator>::construct(*alloc, &a->value,
+ y_absl::allocator_traits<Allocator>::destroy(*alloc, &a->value);
+ y_absl::allocator_traits<Allocator>::construct(*alloc, &a->value,
std::move(b->value));
- y_absl::allocator_traits<Allocator>::destroy(*alloc, &b->value);
- y_absl::allocator_traits<Allocator>::construct(*alloc, &b->value,
+ y_absl::allocator_traits<Allocator>::destroy(*alloc, &b->value);
+ y_absl::allocator_traits<Allocator>::construct(*alloc, &b->value,
std::move(tmp));
}
}
@@ -446,8 +446,8 @@ struct map_slot_policy {
if (kMutableKeys::value) {
dest->mutable_value = std::move(src->mutable_value);
} else {
- y_absl::allocator_traits<Allocator>::destroy(*alloc, &dest->value);
- y_absl::allocator_traits<Allocator>::construct(*alloc, &dest->value,
+ y_absl::allocator_traits<Allocator>::destroy(*alloc, &dest->value);
+ y_absl::allocator_traits<Allocator>::construct(*alloc, &dest->value,
std::move(src->value));
}
}
@@ -455,6 +455,6 @@ struct map_slot_policy {
} // namespace container_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_INTERNAL_CONTAINER_MEMORY_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/counting_allocator.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/counting_allocator.h
index d9ce35a180..c8975dbd90 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/counting_allocator.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/counting_allocator.h
@@ -20,7 +20,7 @@
#include "y_absl/base/config.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
@@ -109,6 +109,6 @@ class CountingAllocator {
} // namespace container_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_INTERNAL_COUNTING_ALLOCATOR_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hash_function_defaults.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hash_function_defaults.h
index dd867bed4a..68a18058d1 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hash_function_defaults.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hash_function_defaults.h
@@ -39,7 +39,7 @@
// equal functions are still bound to T. This is important because some type U
// can be hashed by/tested for equality differently depending on T. A notable
// example is `const char*`. `const char*` is treated as a c-style string when
-// the hash function is hash<TString> but as a pointer when the hash
+// the hash function is hash<TString> but as a pointer when the hash
// function is hash<void*>.
//
#ifndef ABSL_CONTAINER_INTERNAL_HASH_FUNCTION_DEFAULTS_H_
@@ -51,27 +51,27 @@
#include <util/generic/string.h>
#include <type_traits>
-#include "y_absl/base/config.h"
-#include "y_absl/hash/hash.h"
+#include "y_absl/base/config.h"
+#include "y_absl/hash/hash.h"
#include "y_absl/strings/cord.h"
-#include "y_absl/strings/string_view.h"
+#include "y_absl/strings/string_view.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
-// The hash of an object of type T is computed by using y_absl::Hash.
+// The hash of an object of type T is computed by using y_absl::Hash.
template <class T, class E = void>
struct HashEq {
- using Hash = y_absl::Hash<T>;
+ using Hash = y_absl::Hash<T>;
using Eq = std::equal_to<T>;
};
struct StringHash {
using is_transparent = void;
- size_t operator()(y_absl::string_view v) const {
- return y_absl::Hash<y_absl::string_view>{}(v);
+ size_t operator()(y_absl::string_view v) const {
+ return y_absl::Hash<y_absl::string_view>{}(v);
}
size_t operator()(const y_absl::Cord& v) const {
return y_absl::Hash<y_absl::Cord>{}(v);
@@ -101,9 +101,9 @@ struct StringHashEq {
};
template <>
-struct HashEq<TString> : StringHashEq {};
+struct HashEq<TString> : StringHashEq {};
template <>
-struct HashEq<y_absl::string_view> : StringHashEq {};
+struct HashEq<y_absl::string_view> : StringHashEq {};
template <>
struct HashEq<y_absl::Cord> : StringHashEq {};
@@ -114,7 +114,7 @@ struct HashEq<T*> {
using is_transparent = void;
template <class U>
size_t operator()(const U& ptr) const {
- return y_absl::Hash<const T*>{}(HashEq::ToPtr(ptr));
+ return y_absl::Hash<const T*>{}(HashEq::ToPtr(ptr));
}
};
struct Eq {
@@ -145,19 +145,19 @@ struct HashEq<std::shared_ptr<T>> : HashEq<T*> {};
// This header's visibility is restricted. If you need to access the default
// hasher please use the container's ::hasher alias instead.
//
-// Example: typename Hash = typename y_absl::flat_hash_map<K, V>::hasher
+// Example: typename Hash = typename y_absl::flat_hash_map<K, V>::hasher
template <class T>
using hash_default_hash = typename container_internal::HashEq<T>::Hash;
// This header's visibility is restricted. If you need to access the default
// key equal please use the container's ::key_equal alias instead.
//
-// Example: typename Eq = typename y_absl::flat_hash_map<K, V, Hash>::key_equal
+// Example: typename Eq = typename y_absl::flat_hash_map<K, V, Hash>::key_equal
template <class T>
using hash_default_eq = typename container_internal::HashEq<T>::Eq;
} // namespace container_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_INTERNAL_HASH_FUNCTION_DEFAULTS_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hash_generator_testing.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hash_generator_testing.h
index 7aa160f26c..79b215465e 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hash_generator_testing.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hash_generator_testing.h
@@ -29,12 +29,12 @@
#include <utility>
#include <vector>
-#include "y_absl/container/internal/hash_policy_testing.h"
-#include "y_absl/memory/memory.h"
-#include "y_absl/meta/type_traits.h"
-#include "y_absl/strings/string_view.h"
+#include "y_absl/container/internal/hash_policy_testing.h"
+#include "y_absl/memory/memory.h"
+#include "y_absl/meta/type_traits.h"
+#include "y_absl/strings/string_view.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
namespace hash_internal {
@@ -44,7 +44,7 @@ template <class Container, class = void>
struct IsMap : std::false_type {};
template <class Map>
-struct IsMap<Map, y_absl::void_t<typename Map::mapped_type>> : std::true_type {};
+struct IsMap<Map, y_absl::void_t<typename Map::mapped_type>> : std::true_type {};
} // namespace generator_internal
@@ -103,19 +103,19 @@ struct Generator<EnumClass> {
};
template <>
-struct Generator<TString> {
- TString operator()() const;
+struct Generator<TString> {
+ TString operator()() const;
};
template <>
-struct Generator<y_absl::string_view> {
- y_absl::string_view operator()() const;
+struct Generator<y_absl::string_view> {
+ y_absl::string_view operator()() const;
};
template <>
struct Generator<NonStandardLayout> {
NonStandardLayout operator()() const {
- return NonStandardLayout(Generator<TString>()());
+ return NonStandardLayout(Generator<TString>()());
}
};
@@ -137,12 +137,12 @@ struct Generator<std::tuple<Ts...>> {
template <class T>
struct Generator<std::unique_ptr<T>> {
std::unique_ptr<T> operator()() const {
- return y_absl::make_unique<T>(Generator<T>()());
+ return y_absl::make_unique<T>(Generator<T>()());
}
};
template <class U>
-struct Generator<U, y_absl::void_t<decltype(std::declval<U&>().key()),
+struct Generator<U, y_absl::void_t<decltype(std::declval<U&>().key()),
decltype(std::declval<U&>().value())>>
: Generator<std::pair<
typename std::decay<decltype(std::declval<U&>().key())>::type,
@@ -177,6 +177,6 @@ struct UniqueGenerator {
} // namespace hash_internal
} // namespace container_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_INTERNAL_HASH_GENERATOR_TESTING_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hash_policy_testing.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hash_policy_testing.h
index 024d9670d0..baa367eee6 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hash_policy_testing.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hash_policy_testing.h
@@ -26,10 +26,10 @@
#include <utility>
#include <vector>
-#include "y_absl/hash/hash.h"
-#include "y_absl/strings/string_view.h"
+#include "y_absl/hash/hash.h"
+#include "y_absl/strings/string_view.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
namespace hash_testing_internal {
@@ -74,7 +74,7 @@ struct WithId {
struct NonStandardLayout {
NonStandardLayout() {}
- explicit NonStandardLayout(TString s) : value(std::move(s)) {}
+ explicit NonStandardLayout(TString s) : value(std::move(s)) {}
virtual ~NonStandardLayout() {}
friend bool operator==(const NonStandardLayout& a,
@@ -91,20 +91,20 @@ struct NonStandardLayout {
return H::combine(std::move(h), v.value);
}
- TString value;
+ TString value;
};
struct StatefulTestingHash
- : y_absl::container_internal::hash_testing_internal::WithId<
+ : y_absl::container_internal::hash_testing_internal::WithId<
StatefulTestingHash> {
template <class T>
size_t operator()(const T& t) const {
- return y_absl::Hash<T>{}(t);
+ return y_absl::Hash<T>{}(t);
}
};
struct StatefulTestingEqual
- : y_absl::container_internal::hash_testing_internal::WithId<
+ : y_absl::container_internal::hash_testing_internal::WithId<
StatefulTestingEqual> {
template <class T, class U>
bool operator()(const T& t, const U& u) const {
@@ -164,7 +164,7 @@ auto keys(const Set& s)
} // namespace container_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
// ABSL_UNORDERED_SUPPORTS_ALLOC_CTORS is false for glibcxx versions
// where the unordered containers are missing certain constructors that
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hash_policy_traits.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hash_policy_traits.h
index fc03816897..33f704fc4b 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hash_policy_traits.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hash_policy_traits.h
@@ -21,9 +21,9 @@
#include <type_traits>
#include <utility>
-#include "y_absl/meta/type_traits.h"
+#include "y_absl/meta/type_traits.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
@@ -65,7 +65,7 @@ struct hash_policy_traits {
struct ConstantIteratorsImpl : std::false_type {};
template <class P>
- struct ConstantIteratorsImpl<P, y_absl::void_t<typename P::constant_iterators>>
+ struct ConstantIteratorsImpl<P, y_absl::void_t<typename P::constant_iterators>>
: P::constant_iterators {};
public:
@@ -203,6 +203,6 @@ struct hash_policy_traits {
} // namespace container_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_INTERNAL_HASH_POLICY_TRAITS_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hashtable_debug.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hashtable_debug.h
index ddc8fb9543..2be9db2297 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hashtable_debug.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hashtable_debug.h
@@ -25,7 +25,7 @@
// well in a different one.
//
// This library supports std::unordered_{set,map}, dense_hash_{set,map} and
-// y_absl::{flat,node,string}_hash_{set,map}.
+// y_absl::{flat,node,string}_hash_{set,map}.
#ifndef ABSL_CONTAINER_INTERNAL_HASHTABLE_DEBUG_H_
#define ABSL_CONTAINER_INTERNAL_HASHTABLE_DEBUG_H_
@@ -35,9 +35,9 @@
#include <type_traits>
#include <vector>
-#include "y_absl/container/internal/hashtable_debug_hooks.h"
+#include "y_absl/container/internal/hashtable_debug_hooks.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
@@ -48,7 +48,7 @@ namespace container_internal {
template <typename C>
size_t GetHashtableDebugNumProbes(
const C& c, const typename C::key_type& key) {
- return y_absl::container_internal::hashtable_debug_internal::
+ return y_absl::container_internal::hashtable_debug_internal::
HashtableDebugAccess<C>::GetNumProbes(c, key);
}
@@ -60,7 +60,7 @@ std::vector<size_t> GetHashtableDebugNumProbesHistogram(const C& container) {
for (auto it = container.begin(); it != container.end(); ++it) {
size_t num_probes = GetHashtableDebugNumProbes(
container,
- y_absl::container_internal::hashtable_debug_internal::GetKey<C>(*it, 0));
+ y_absl::container_internal::hashtable_debug_internal::GetKey<C>(*it, 0));
v.resize((std::max)(v.size(), num_probes + 1));
v[num_probes]++;
}
@@ -91,7 +91,7 @@ HashtableDebugProbeSummary GetHashtableDebugProbeSummary(const C& container) {
// and not freed.
template <typename C>
size_t AllocatedByteSize(const C& c) {
- return y_absl::container_internal::hashtable_debug_internal::
+ return y_absl::container_internal::hashtable_debug_internal::
HashtableDebugAccess<C>::AllocatedByteSize(c);
}
@@ -99,12 +99,12 @@ size_t AllocatedByteSize(const C& c) {
// and `c.size()` is equal to `num_elements`.
template <typename C>
size_t LowerBoundAllocatedByteSize(size_t num_elements) {
- return y_absl::container_internal::hashtable_debug_internal::
+ return y_absl::container_internal::hashtable_debug_internal::
HashtableDebugAccess<C>::LowerBoundAllocatedByteSize(num_elements);
}
} // namespace container_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_INTERNAL_HASHTABLE_DEBUG_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hashtable_debug_hooks.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hashtable_debug_hooks.h
index 889e10b5a5..ec8c0fd29d 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hashtable_debug_hooks.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hashtable_debug_hooks.h
@@ -25,7 +25,7 @@
#include "y_absl/base/config.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
namespace hashtable_debug_internal {
@@ -80,6 +80,6 @@ struct HashtableDebugAccess {
} // namespace hashtable_debug_internal
} // namespace container_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_INTERNAL_HASHTABLE_DEBUG_HOOKS_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hashtablez_sampler.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hashtablez_sampler.cc
index e91c70632d..6017ac9bb0 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hashtablez_sampler.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hashtablez_sampler.cc
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/container/internal/hashtablez_sampler.h"
+#include "y_absl/container/internal/hashtablez_sampler.h"
#include <atomic>
#include <cassert>
@@ -20,15 +20,15 @@
#include <functional>
#include <limits>
-#include "y_absl/base/attributes.h"
-#include "y_absl/container/internal/have_sse.h"
-#include "y_absl/debugging/stacktrace.h"
-#include "y_absl/memory/memory.h"
+#include "y_absl/base/attributes.h"
+#include "y_absl/container/internal/have_sse.h"
+#include "y_absl/debugging/stacktrace.h"
+#include "y_absl/memory/memory.h"
#include "y_absl/profiling/internal/exponential_biased.h"
#include "y_absl/profiling/internal/sample_recorder.h"
-#include "y_absl/synchronization/mutex.h"
+#include "y_absl/synchronization/mutex.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
constexpr int HashtablezInfo::kMaxStackDepth;
@@ -73,11 +73,11 @@ void HashtablezInfo::PrepareForSampling() {
hashes_bitwise_xor.store(0, std::memory_order_relaxed);
max_reserve.store(0, std::memory_order_relaxed);
- create_time = y_absl::Now();
+ create_time = y_absl::Now();
// The inliner makes hardcoded skip_count difficult (especially when combined
// with LTO). We use the ability to exclude stacks by regex when encoding
// instead.
- depth = y_absl::GetStackTrace(stack, HashtablezInfo::kMaxStackDepth,
+ depth = y_absl::GetStackTrace(stack, HashtablezInfo::kMaxStackDepth,
/* skip_count= */ 0);
}
@@ -187,4 +187,4 @@ void SetHashtablezMaxSamples(int32_t max) {
} // namespace container_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hashtablez_sampler.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hashtablez_sampler.h
index c739963ea3..8521ee754a 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hashtablez_sampler.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hashtablez_sampler.h
@@ -44,14 +44,14 @@
#include <memory>
#include <vector>
-#include "y_absl/base/internal/per_thread_tls.h"
-#include "y_absl/base/optimization.h"
-#include "y_absl/container/internal/have_sse.h"
+#include "y_absl/base/internal/per_thread_tls.h"
+#include "y_absl/base/optimization.h"
+#include "y_absl/container/internal/have_sse.h"
#include "y_absl/profiling/internal/sample_recorder.h"
-#include "y_absl/synchronization/mutex.h"
-#include "y_absl/utility/utility.h"
+#include "y_absl/synchronization/mutex.h"
+#include "y_absl/utility/utility.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
@@ -88,7 +88,7 @@ struct HashtablezInfo : public profiling_internal::Sample<HashtablezInfo> {
// can only read them during `HashtablezSampler::Iterate` which will hold the
// lock.
static constexpr int kMaxStackDepth = 64;
- y_absl::Time create_time;
+ y_absl::Time create_time;
int32_t depth;
void* stack[kMaxStackDepth];
size_t inline_element_size;
@@ -165,12 +165,12 @@ class HashtablezInfoHandle {
HashtablezInfoHandle& operator=(const HashtablezInfoHandle&) = delete;
HashtablezInfoHandle(HashtablezInfoHandle&& o) noexcept
- : info_(y_absl::exchange(o.info_, nullptr)) {}
+ : info_(y_absl::exchange(o.info_, nullptr)) {}
HashtablezInfoHandle& operator=(HashtablezInfoHandle&& o) noexcept {
if (ABSL_PREDICT_FALSE(info_ != nullptr)) {
UnsampleSlow(info_);
}
- info_ = y_absl::exchange(o.info_, nullptr);
+ info_ = y_absl::exchange(o.info_, nullptr);
return *this;
}
@@ -276,6 +276,6 @@ extern "C" bool ABSL_INTERNAL_C_SYMBOL(AbslContainerInternalSampleEverything)();
} // namespace container_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_INTERNAL_HASHTABLEZ_SAMPLER_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hashtablez_sampler_force_weak_definition.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hashtablez_sampler_force_weak_definition.cc
index 3aa4b3ccfe..79a3122981 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hashtablez_sampler_force_weak_definition.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/hashtablez_sampler_force_weak_definition.cc
@@ -12,11 +12,11 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/container/internal/hashtablez_sampler.h"
+#include "y_absl/container/internal/hashtablez_sampler.h"
-#include "y_absl/base/attributes.h"
+#include "y_absl/base/attributes.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
@@ -28,4 +28,4 @@ extern "C" ABSL_ATTRIBUTE_WEAK bool ABSL_INTERNAL_C_SYMBOL(
} // namespace container_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/inlined_vector.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/inlined_vector.h
index 1efa60e82e..e6488e843e 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/inlined_vector.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/inlined_vector.h
@@ -26,13 +26,13 @@
#include <utility>
#include "y_absl/base/attributes.h"
-#include "y_absl/base/macros.h"
-#include "y_absl/container/internal/compressed_tuple.h"
-#include "y_absl/memory/memory.h"
-#include "y_absl/meta/type_traits.h"
-#include "y_absl/types/span.h"
+#include "y_absl/base/macros.h"
+#include "y_absl/container/internal/compressed_tuple.h"
+#include "y_absl/memory/memory.h"
+#include "y_absl/meta/type_traits.h"
+#include "y_absl/types/span.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace inlined_vector_internal {
@@ -927,6 +927,6 @@ auto Storage<T, N, A>::Swap(Storage* other_storage_ptr) -> void {
} // namespace inlined_vector_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_INTERNAL_INLINED_VECTOR_INTERNAL_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/layout.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/layout.h
index c2070d2349..4c3f668943 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/layout.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/layout.h
@@ -172,10 +172,10 @@
#include <utility>
#include "y_absl/base/config.h"
-#include "y_absl/meta/type_traits.h"
-#include "y_absl/strings/str_cat.h"
-#include "y_absl/types/span.h"
-#include "y_absl/utility/utility.h"
+#include "y_absl/meta/type_traits.h"
+#include "y_absl/strings/str_cat.h"
+#include "y_absl/types/span.h"
+#include "y_absl/utility/utility.h"
#ifdef ABSL_HAVE_ADDRESS_SANITIZER
#include <sanitizer/asan_interface.h>
@@ -189,7 +189,7 @@
#include <cxxabi.h>
#endif
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
@@ -250,13 +250,13 @@ struct AlignOf<Aligned<T, N>> {
// Does `Ts...` contain `T`?
template <class T, class... Ts>
-using Contains = y_absl::disjunction<std::is_same<T, Ts>...>;
+using Contains = y_absl::disjunction<std::is_same<T, Ts>...>;
template <class From, class To>
using CopyConst =
typename std::conditional<std::is_const<From>::value, const To, To>::type;
-// Note: We're not qualifying this with y_absl:: because it doesn't compile under
+// Note: We're not qualifying this with y_absl:: because it doesn't compile under
// MSVC.
template <class T>
using SliceType = Span<T>;
@@ -292,19 +292,19 @@ constexpr size_t Max(size_t a, size_t b, Ts... rest) {
}
template <class T>
-TString TypeName() {
- TString out;
+TString TypeName() {
+ TString out;
int status = 0;
char* demangled = nullptr;
#ifdef ABSL_INTERNAL_HAS_CXA_DEMANGLE
demangled = abi::__cxa_demangle(typeid(T).name(), nullptr, nullptr, &status);
#endif
if (status == 0 && demangled != nullptr) { // Demangling succeeded.
- y_absl::StrAppend(&out, "<", demangled, ">");
+ y_absl::StrAppend(&out, "<", demangled, ">");
free(demangled);
} else {
#if defined(__GXX_RTTI) || defined(_CPPRTTI)
- y_absl::StrAppend(&out, "<", typeid(T).name(), ">");
+ y_absl::StrAppend(&out, "<", typeid(T).name(), ">");
#endif
}
return out;
@@ -338,11 +338,11 @@ class LayoutImpl;
// `Min(sizeof...(Elements), NumSizes + 1)` (the number of arrays for which we
// can compute offsets).
template <class... Elements, size_t... SizeSeq, size_t... OffsetSeq>
-class LayoutImpl<std::tuple<Elements...>, y_absl::index_sequence<SizeSeq...>,
- y_absl::index_sequence<OffsetSeq...>> {
+class LayoutImpl<std::tuple<Elements...>, y_absl::index_sequence<SizeSeq...>,
+ y_absl::index_sequence<OffsetSeq...>> {
private:
static_assert(sizeof...(Elements) > 0, "At least one field is required");
- static_assert(y_absl::conjunction<IsLegalElementType<Elements>...>::value,
+ static_assert(y_absl::conjunction<IsLegalElementType<Elements>...>::value,
"Invalid element type (see IsLegalElementType)");
enum {
@@ -643,21 +643,21 @@ class LayoutImpl<std::tuple<Elements...>, y_absl::index_sequence<SizeSeq...>,
// be missing (as in the example above). Only fields with known offsets are
// described. Type names may differ across platforms: one compiler might
// produce "unsigned*" where another produces "unsigned int *".
- TString DebugString() const {
+ TString DebugString() const {
const auto offsets = Offsets();
const size_t sizes[] = {SizeOf<ElementType<OffsetSeq>>::value...};
- const TString types[] = {
+ const TString types[] = {
adl_barrier::TypeName<ElementType<OffsetSeq>>()...};
- TString res = y_absl::StrCat("@0", types[0], "(", sizes[0], ")");
+ TString res = y_absl::StrCat("@0", types[0], "(", sizes[0], ")");
for (size_t i = 0; i != NumOffsets - 1; ++i) {
- y_absl::StrAppend(&res, "[", size_[i], "]; @", offsets[i + 1], types[i + 1],
+ y_absl::StrAppend(&res, "[", size_[i], "]; @", offsets[i + 1], types[i + 1],
"(", sizes[i + 1], ")");
}
// NumSizes is a constant that may be zero. Some compilers cannot see that
// inside the if statement "size_[NumSizes - 1]" must be valid.
int last = static_cast<int>(NumSizes) - 1;
if (NumTypes == NumSizes && last >= 0) {
- y_absl::StrAppend(&res, "[", size_[last], "]");
+ y_absl::StrAppend(&res, "[", size_[last], "]");
}
return res;
}
@@ -669,8 +669,8 @@ class LayoutImpl<std::tuple<Elements...>, y_absl::index_sequence<SizeSeq...>,
template <size_t NumSizes, class... Ts>
using LayoutType = LayoutImpl<
- std::tuple<Ts...>, y_absl::make_index_sequence<NumSizes>,
- y_absl::make_index_sequence<adl_barrier::Min(sizeof...(Ts), NumSizes + 1)>>;
+ std::tuple<Ts...>, y_absl::make_index_sequence<NumSizes>,
+ y_absl::make_index_sequence<adl_barrier::Min(sizeof...(Ts), NumSizes + 1)>>;
} // namespace internal_layout
@@ -685,7 +685,7 @@ class Layout : public internal_layout::LayoutType<sizeof...(Ts), Ts...> {
public:
static_assert(sizeof...(Ts) > 0, "At least one field is required");
static_assert(
- y_absl::conjunction<internal_layout::IsLegalElementType<Ts>...>::value,
+ y_absl::conjunction<internal_layout::IsLegalElementType<Ts>...>::value,
"Invalid element type (see IsLegalElementType)");
// The result type of `Partial()` with `NumSizes` arguments.
@@ -721,7 +721,7 @@ class Layout : public internal_layout::LayoutType<sizeof...(Ts), Ts...> {
template <class... Sizes>
static constexpr PartialType<sizeof...(Sizes)> Partial(Sizes&&... sizes) {
static_assert(sizeof...(Sizes) <= sizeof...(Ts), "");
- return PartialType<sizeof...(Sizes)>(y_absl::forward<Sizes>(sizes)...);
+ return PartialType<sizeof...(Sizes)>(y_absl::forward<Sizes>(sizes)...);
}
// Creates a layout with the sizes of all arrays specified. If you know
@@ -738,6 +738,6 @@ class Layout : public internal_layout::LayoutType<sizeof...(Ts), Ts...> {
} // namespace container_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_INTERNAL_LAYOUT_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/node_hash_policy.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/node_hash_policy.h
index 7d83cf5f60..24d0eaf5ee 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/node_hash_policy.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/node_hash_policy.h
@@ -41,7 +41,7 @@
#include "y_absl/base/config.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
@@ -87,6 +87,6 @@ struct node_hash_policy {
} // namespace container_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_INTERNAL_NODE_HASH_POLICY_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/raw_hash_map.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/raw_hash_map.h
index b523226084..8a0591f581 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/raw_hash_map.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/raw_hash_map.h
@@ -19,11 +19,11 @@
#include <type_traits>
#include <utility>
-#include "y_absl/base/internal/throw_delegate.h"
-#include "y_absl/container/internal/container_memory.h"
-#include "y_absl/container/internal/raw_hash_set.h" // IWYU pragma: export
+#include "y_absl/base/internal/throw_delegate.h"
+#include "y_absl/container/internal/container_memory.h"
+#include "y_absl/container/internal/raw_hash_set.h" // IWYU pragma: export
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
@@ -144,7 +144,7 @@ class raw_hash_map : public raw_hash_set<Policy, Hash, Eq, Alloc> {
auto it = this->find(key);
if (it == this->end()) {
base_internal::ThrowStdOutOfRange(
- "y_absl::container_internal::raw_hash_map<>::at");
+ "y_absl::container_internal::raw_hash_map<>::at");
}
return Policy::value(&*it);
}
@@ -154,7 +154,7 @@ class raw_hash_map : public raw_hash_set<Policy, Hash, Eq, Alloc> {
auto it = this->find(key);
if (it == this->end()) {
base_internal::ThrowStdOutOfRange(
- "y_absl::container_internal::raw_hash_map<>::at");
+ "y_absl::container_internal::raw_hash_map<>::at");
}
return Policy::value(&*it);
}
@@ -193,6 +193,6 @@ class raw_hash_map : public raw_hash_set<Policy, Hash, Eq, Alloc> {
} // namespace container_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_INTERNAL_RAW_HASH_MAP_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/raw_hash_set.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/raw_hash_set.cc
index f5b29c21a4..bf2a15a678 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/raw_hash_set.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/raw_hash_set.cc
@@ -12,14 +12,14 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/container/internal/raw_hash_set.h"
+#include "y_absl/container/internal/raw_hash_set.h"
#include <atomic>
#include <cstddef>
-#include "y_absl/base/config.h"
+#include "y_absl/base/config.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
@@ -64,4 +64,4 @@ template FindInfo find_first_non_full(const ctrl_t*, size_t, size_t);
} // namespace container_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/raw_hash_set.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/raw_hash_set.h
index ac04c9c56f..8f45559b31 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/raw_hash_set.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/raw_hash_set.h
@@ -113,22 +113,22 @@
#include <type_traits>
#include <utility>
-#include "y_absl/base/internal/endian.h"
+#include "y_absl/base/internal/endian.h"
#include "y_absl/base/optimization.h"
-#include "y_absl/base/port.h"
-#include "y_absl/container/internal/common.h"
-#include "y_absl/container/internal/compressed_tuple.h"
-#include "y_absl/container/internal/container_memory.h"
-#include "y_absl/container/internal/hash_policy_traits.h"
-#include "y_absl/container/internal/hashtable_debug_hooks.h"
-#include "y_absl/container/internal/hashtablez_sampler.h"
-#include "y_absl/container/internal/have_sse.h"
-#include "y_absl/memory/memory.h"
-#include "y_absl/meta/type_traits.h"
+#include "y_absl/base/port.h"
+#include "y_absl/container/internal/common.h"
+#include "y_absl/container/internal/compressed_tuple.h"
+#include "y_absl/container/internal/container_memory.h"
+#include "y_absl/container/internal/hash_policy_traits.h"
+#include "y_absl/container/internal/hashtable_debug_hooks.h"
+#include "y_absl/container/internal/hashtablez_sampler.h"
+#include "y_absl/container/internal/have_sse.h"
+#include "y_absl/memory/memory.h"
+#include "y_absl/meta/type_traits.h"
#include "y_absl/numeric/bits.h"
-#include "y_absl/utility/utility.h"
+#include "y_absl/utility/utility.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
@@ -182,7 +182,7 @@ struct IsDecomposable : std::false_type {};
template <class Policy, class Hash, class Eq, class... Ts>
struct IsDecomposable<
- y_absl::void_t<decltype(
+ y_absl::void_t<decltype(
Policy::apply(RequireUsableKey<typename Policy::key_type, Hash, Eq>(),
std::declval<Ts>()...))>,
Policy, Hash, Eq, Ts...> : std::true_type {};
@@ -694,9 +694,9 @@ class raw_hash_set {
using value_type = typename PolicyTraits::value_type;
using reference = value_type&;
using const_reference = const value_type&;
- using pointer = typename y_absl::allocator_traits<
+ using pointer = typename y_absl::allocator_traits<
allocator_type>::template rebind_traits<value_type>::pointer;
- using const_pointer = typename y_absl::allocator_traits<
+ using const_pointer = typename y_absl::allocator_traits<
allocator_type>::template rebind_traits<value_type>::const_pointer;
// Alias used for heterogeneous lookup functions.
@@ -711,10 +711,10 @@ class raw_hash_set {
auto KeyTypeCanBeHashed(const Hash& h, const key_type& k) -> decltype(h(k));
auto KeyTypeCanBeEq(const Eq& eq, const key_type& k) -> decltype(eq(k, k));
- using AllocTraits = y_absl::allocator_traits<allocator_type>;
- using SlotAlloc = typename y_absl::allocator_traits<
+ using AllocTraits = y_absl::allocator_traits<allocator_type>;
+ using SlotAlloc = typename y_absl::allocator_traits<
allocator_type>::template rebind_alloc<slot_type>;
- using SlotAllocTraits = typename y_absl::allocator_traits<
+ using SlotAllocTraits = typename y_absl::allocator_traits<
allocator_type>::template rebind_traits<slot_type>;
static_assert(std::is_lvalue_reference<reference>::value,
@@ -734,7 +734,7 @@ class raw_hash_set {
// cases.
template <class T>
using RequiresInsertable = typename std::enable_if<
- y_absl::disjunction<std::is_convertible<T, init_type>,
+ y_absl::disjunction<std::is_convertible<T, init_type>,
SameAsElementReference<T>>::value,
int>::type;
@@ -760,9 +760,9 @@ class raw_hash_set {
using iterator_category = std::forward_iterator_tag;
using value_type = typename raw_hash_set::value_type;
using reference =
- y_absl::conditional_t<PolicyTraits::constant_iterators::value,
+ y_absl::conditional_t<PolicyTraits::constant_iterators::value,
const value_type&, value_type&>;
- using pointer = y_absl::remove_reference_t<reference>*;
+ using pointer = y_absl::remove_reference_t<reference>*;
using difference_type = typename raw_hash_set::difference_type;
iterator() {}
@@ -918,20 +918,20 @@ class raw_hash_set {
// that accept std::initializer_list<T> and std::initializer_list<init_type>.
// This is advantageous for performance.
//
- // // Turns {"abc", "def"} into std::initializer_list<TString>, then
+ // // Turns {"abc", "def"} into std::initializer_list<TString>, then
// // copies the strings into the set.
- // std::unordered_set<TString> s = {"abc", "def"};
+ // std::unordered_set<TString> s = {"abc", "def"};
//
// // Turns {"abc", "def"} into std::initializer_list<const char*>, then
// // copies the strings into the set.
- // y_absl::flat_hash_set<TString> s = {"abc", "def"};
+ // y_absl::flat_hash_set<TString> s = {"abc", "def"};
//
// The same trick is used in insert().
//
// The enabler is necessary to prevent this constructor from triggering where
// the copy constructor is meant to be called.
//
- // y_absl::flat_hash_set<int> a, b{a};
+ // y_absl::flat_hash_set<int> a, b{a};
//
// RequiresNotInit<T> is a workaround for gcc prior to 7.1.
template <class T, RequiresNotInit<T> = 0, RequiresInsertable<T> = 0>
@@ -996,10 +996,10 @@ class raw_hash_set {
std::is_nothrow_copy_constructible<hasher>::value&&
std::is_nothrow_copy_constructible<key_equal>::value&&
std::is_nothrow_copy_constructible<allocator_type>::value)
- : ctrl_(y_absl::exchange(that.ctrl_, EmptyGroup())),
- slots_(y_absl::exchange(that.slots_, nullptr)),
- size_(y_absl::exchange(that.size_, 0)),
- capacity_(y_absl::exchange(that.capacity_, 0)),
+ : ctrl_(y_absl::exchange(that.ctrl_, EmptyGroup())),
+ slots_(y_absl::exchange(that.slots_, nullptr)),
+ size_(y_absl::exchange(that.size_, 0)),
+ capacity_(y_absl::exchange(that.capacity_, 0)),
// Hash, equality and allocator are copied instead of moved because
// `that` must be left valid. If Hash is std::function<Key>, moving it
// would create a nullptr functor that cannot be called.
@@ -1039,7 +1039,7 @@ class raw_hash_set {
}
raw_hash_set& operator=(raw_hash_set&& that) noexcept(
- y_absl::allocator_traits<allocator_type>::is_always_equal::value&&
+ y_absl::allocator_traits<allocator_type>::is_always_equal::value&&
std::is_nothrow_move_assignable<hasher>::value&&
std::is_nothrow_move_assignable<key_equal>::value) {
// TODO(sbenza): We should only use the operations from the noexcept clause
@@ -1099,7 +1099,7 @@ class raw_hash_set {
// This overload kicks in when the argument is an rvalue of insertable and
// decomposable type other than init_type.
//
- // flat_hash_map<TString, int> m;
+ // flat_hash_map<TString, int> m;
// m.insert(std::make_pair("abc", 42));
// TODO(cheshire): A type alias T2 is introduced as a workaround for the nvcc
// bug.
@@ -1118,7 +1118,7 @@ class raw_hash_set {
// flat_hash_set<int> s;
// s.insert(n);
//
- // flat_hash_set<TString> s;
+ // flat_hash_set<TString> s;
// const char* p = "hello";
// s.insert(p);
//
@@ -1135,7 +1135,7 @@ class raw_hash_set {
// This overload kicks in when the argument is an rvalue of init_type. Its
// purpose is to handle brace-init-list arguments.
//
- // flat_hash_map<TString, int> s;
+ // flat_hash_map<TString, int> s;
// s.insert({"abc", 42});
std::pair<iterator, bool> insert(init_type&& value) {
return emplace(std::move(value));
@@ -1204,8 +1204,8 @@ class raw_hash_set {
//
// For example:
//
- // flat_hash_map<TString, TString> m = {{"abc", "def"}};
- // // Creates no TString copies and makes no heap allocations.
+ // flat_hash_map<TString, TString> m = {{"abc", "def"}};
+ // // Creates no TString copies and makes no heap allocations.
// m.emplace("abc", "xyz");
template <class... Args, typename std::enable_if<
IsDecomposable<Args...>::value, int>::type = 0>
@@ -1291,12 +1291,12 @@ class raw_hash_set {
// Extension API: support for heterogeneous keys.
//
- // std::unordered_set<TString> s;
- // // Turns "abc" into TString.
+ // std::unordered_set<TString> s;
+ // // Turns "abc" into TString.
// s.erase("abc");
//
- // flat_hash_set<TString> s;
- // // Uses "abc" directly without copying it into TString.
+ // flat_hash_set<TString> s;
+ // // Uses "abc" directly without copying it into TString.
// s.erase("abc");
template <class K = key_type>
size_type erase(const key_arg<K>& key) {
@@ -1425,12 +1425,12 @@ class raw_hash_set {
// Extension API: support for heterogeneous keys.
//
- // std::unordered_set<TString> s;
- // // Turns "abc" into TString.
+ // std::unordered_set<TString> s;
+ // // Turns "abc" into TString.
// s.count("abc");
//
- // ch_set<TString> s;
- // // Uses "abc" directly without copying it into TString.
+ // ch_set<TString> s;
+ // // Uses "abc" directly without copying it into TString.
// s.count("abc");
template <class K = key_type>
size_t count(const key_arg<K>& key) const {
@@ -1545,7 +1545,7 @@ class raw_hash_set {
private:
template <class Container, typename Enabler>
- friend struct y_absl::container_internal::hashtable_debug_internal::
+ friend struct y_absl::container_internal::hashtable_debug_internal::
HashtableDebugAccess;
struct FindElement {
@@ -1970,7 +1970,7 @@ void EraseIf(Predicate& pred, raw_hash_set<P, H, E, A>* c) {
namespace hashtable_debug_internal {
template <typename Set>
-struct HashtableDebugAccess<Set, y_absl::void_t<typename Set::raw_hash_set>> {
+struct HashtableDebugAccess<Set, y_absl::void_t<typename Set::raw_hash_set>> {
using Traits = typename Set::PolicyTraits;
using Slot = typename Traits::slot_type;
@@ -2029,6 +2029,6 @@ struct HashtableDebugAccess<Set, y_absl::void_t<typename Set::raw_hash_set>> {
} // namespace hashtable_debug_internal
} // namespace container_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_INTERNAL_RAW_HASH_SET_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/raw_hash_set/ya.make b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/raw_hash_set/ya.make
index a7b0814eed..d636929b87 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/raw_hash_set/ya.make
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/raw_hash_set/ya.make
@@ -12,28 +12,28 @@ OWNER(
LICENSE(Apache-2.0)
PEERDIR(
- contrib/restricted/abseil-cpp-tstring/y_absl/base
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/low_level_alloc
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/throw_delegate
- contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
+ contrib/restricted/abseil-cpp-tstring/y_absl/base
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/low_level_alloc
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/throw_delegate
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/absl_hashtablez_sampler
- contrib/restricted/abseil-cpp-tstring/y_absl/debugging
- contrib/restricted/abseil-cpp-tstring/y_absl/debugging/stacktrace
- contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize
- contrib/restricted/abseil-cpp-tstring/y_absl/demangle
+ contrib/restricted/abseil-cpp-tstring/y_absl/debugging
+ contrib/restricted/abseil-cpp-tstring/y_absl/debugging/stacktrace
+ contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize
+ contrib/restricted/abseil-cpp-tstring/y_absl/demangle
contrib/restricted/abseil-cpp-tstring/y_absl/hash
- contrib/restricted/abseil-cpp-tstring/y_absl/numeric
+ contrib/restricted/abseil-cpp-tstring/y_absl/numeric
contrib/restricted/abseil-cpp-tstring/y_absl/profiling/internal/exponential_biased
- contrib/restricted/abseil-cpp-tstring/y_absl/strings
+ contrib/restricted/abseil-cpp-tstring/y_absl/strings
contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/absl_strings_internal
- contrib/restricted/abseil-cpp-tstring/y_absl/synchronization
- contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal
- contrib/restricted/abseil-cpp-tstring/y_absl/time
- contrib/restricted/abseil-cpp-tstring/y_absl/time/civil_time
- contrib/restricted/abseil-cpp-tstring/y_absl/time/time_zone
- contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_optional_access
+ contrib/restricted/abseil-cpp-tstring/y_absl/synchronization
+ contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal
+ contrib/restricted/abseil-cpp-tstring/y_absl/time
+ contrib/restricted/abseil-cpp-tstring/y_absl/time/civil_time
+ contrib/restricted/abseil-cpp-tstring/y_absl/time/time_zone
+ contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_optional_access
contrib/restricted/abseil-cpp-tstring/y_absl/types
)
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/test_instance_tracker.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/test_instance_tracker.h
index 192f61c5bb..49dcaf5d21 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/test_instance_tracker.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/test_instance_tracker.h
@@ -18,9 +18,9 @@
#include <cstdlib>
#include <ostream>
-#include "y_absl/types/compare.h"
+#include "y_absl/types/compare.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace test_internal {
@@ -99,12 +99,12 @@ class BaseCountedInstance {
return value_ >= x.value_;
}
- y_absl::weak_ordering compare(const BaseCountedInstance& x) const {
+ y_absl::weak_ordering compare(const BaseCountedInstance& x) const {
++num_comparisons_;
return value_ < x.value_
- ? y_absl::weak_ordering::less
- : value_ == x.value_ ? y_absl::weak_ordering::equivalent
- : y_absl::weak_ordering::greater;
+ ? y_absl::weak_ordering::less
+ : value_ == x.value_ ? y_absl::weak_ordering::equivalent
+ : y_absl::weak_ordering::greater;
}
int value() const {
@@ -269,6 +269,6 @@ class MovableOnlyInstance : public BaseCountedInstance {
} // namespace test_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_INTERNAL_TEST_INSTANCE_TRACKER_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/tracked.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/tracked.h
index cafd451fbf..8765ee5ea6 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/tracked.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/tracked.h
@@ -22,7 +22,7 @@
#include "y_absl/base/config.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
@@ -78,6 +78,6 @@ class Tracked {
} // namespace container_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_INTERNAL_TRACKED_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_map_constructor_test.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_map_constructor_test.h
index f3258b429a..f55d6293ae 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_map_constructor_test.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_map_constructor_test.h
@@ -21,10 +21,10 @@
#include "gmock/gmock.h"
#include "gtest/gtest.h"
-#include "y_absl/container/internal/hash_generator_testing.h"
-#include "y_absl/container/internal/hash_policy_testing.h"
+#include "y_absl/container/internal/hash_generator_testing.h"
+#include "y_absl/container/internal/hash_policy_testing.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
@@ -99,7 +99,7 @@ using has_cxx14_std_apis = std::false_type;
template <typename T>
using expect_cxx14_apis =
- y_absl::disjunction<y_absl::negation<is_std_unordered_map<T>>,
+ y_absl::disjunction<y_absl::negation<is_std_unordered_map<T>>,
has_cxx14_std_apis>;
template <typename TypeParam>
@@ -149,7 +149,7 @@ using has_alloc_std_constructors = std::false_type;
template <typename T>
using expect_alloc_constructors =
- y_absl::disjunction<y_absl::negation<is_std_unordered_map<T>>,
+ y_absl::disjunction<y_absl::negation<is_std_unordered_map<T>>,
has_alloc_std_constructors>;
template <typename TypeParam>
@@ -489,6 +489,6 @@ REGISTER_TYPED_TEST_CASE_P(
} // namespace container_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_INTERNAL_UNORDERED_MAP_CONSTRUCTOR_TEST_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_map_lookup_test.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_map_lookup_test.h
index f47958b2f1..251f49aea2 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_map_lookup_test.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_map_lookup_test.h
@@ -17,10 +17,10 @@
#include "gmock/gmock.h"
#include "gtest/gtest.h"
-#include "y_absl/container/internal/hash_generator_testing.h"
-#include "y_absl/container/internal/hash_policy_testing.h"
+#include "y_absl/container/internal/hash_generator_testing.h"
+#include "y_absl/container/internal/hash_policy_testing.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
@@ -112,6 +112,6 @@ REGISTER_TYPED_TEST_CASE_P(LookupTest, At, OperatorBracket, Count, Find,
} // namespace container_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_INTERNAL_UNORDERED_MAP_LOOKUP_TEST_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_map_members_test.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_map_members_test.h
index 080d1fe954..1c9dc8c6be 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_map_members_test.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_map_members_test.h
@@ -18,9 +18,9 @@
#include <type_traits>
#include "gmock/gmock.h"
#include "gtest/gtest.h"
-#include "y_absl/meta/type_traits.h"
+#include "y_absl/meta/type_traits.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
@@ -36,10 +36,10 @@ TYPED_TEST_P(MembersTest, Typedefs) {
EXPECT_TRUE((std::is_same<std::pair<const typename TypeParam::key_type,
typename TypeParam::mapped_type>,
typename TypeParam::value_type>()));
- EXPECT_TRUE((y_absl::conjunction<
- y_absl::negation<std::is_signed<typename TypeParam::size_type>>,
+ EXPECT_TRUE((y_absl::conjunction<
+ y_absl::negation<std::is_signed<typename TypeParam::size_type>>,
std::is_integral<typename TypeParam::size_type>>()));
- EXPECT_TRUE((y_absl::conjunction<
+ EXPECT_TRUE((y_absl::conjunction<
std::is_signed<typename TypeParam::difference_type>,
std::is_integral<typename TypeParam::difference_type>>()));
EXPECT_TRUE((std::is_convertible<
@@ -82,6 +82,6 @@ REGISTER_TYPED_TEST_SUITE_P(MembersTest, Typedefs, SimpleFunctions, BeginEnd);
} // namespace container_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_INTERNAL_UNORDERED_MAP_MEMBERS_TEST_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_map_modifiers_test.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_map_modifiers_test.h
index 65f1d4a5b8..725cfdc345 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_map_modifiers_test.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_map_modifiers_test.h
@@ -19,10 +19,10 @@
#include "gmock/gmock.h"
#include "gtest/gtest.h"
-#include "y_absl/container/internal/hash_generator_testing.h"
-#include "y_absl/container/internal/hash_policy_testing.h"
+#include "y_absl/container/internal/hash_generator_testing.h"
+#include "y_absl/container/internal/hash_policy_testing.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
@@ -346,6 +346,6 @@ REGISTER_TYPED_TEST_SUITE_P(UniquePtrModifiersTest, TryEmplace);
} // namespace container_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_INTERNAL_UNORDERED_MAP_MODIFIERS_TEST_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_set_constructor_test.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_set_constructor_test.h
index 8dff59c546..1404f44916 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_set_constructor_test.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_set_constructor_test.h
@@ -21,11 +21,11 @@
#include "gmock/gmock.h"
#include "gtest/gtest.h"
-#include "y_absl/container/internal/hash_generator_testing.h"
-#include "y_absl/container/internal/hash_policy_testing.h"
-#include "y_absl/meta/type_traits.h"
+#include "y_absl/container/internal/hash_generator_testing.h"
+#include "y_absl/container/internal/hash_policy_testing.h"
+#include "y_absl/meta/type_traits.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
@@ -108,7 +108,7 @@ using has_cxx14_std_apis = std::false_type;
template <typename T>
using expect_cxx14_apis =
- y_absl::disjunction<y_absl::negation<is_std_unordered_set<T>>,
+ y_absl::disjunction<y_absl::negation<is_std_unordered_set<T>>,
has_cxx14_std_apis>;
template <typename TypeParam>
@@ -158,7 +158,7 @@ using has_alloc_std_constructors = std::false_type;
template <typename T>
using expect_alloc_constructors =
- y_absl::disjunction<y_absl::negation<is_std_unordered_set<T>>,
+ y_absl::disjunction<y_absl::negation<is_std_unordered_set<T>>,
has_alloc_std_constructors>;
template <typename TypeParam>
@@ -491,6 +491,6 @@ REGISTER_TYPED_TEST_CASE_P(
} // namespace container_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_INTERNAL_UNORDERED_SET_CONSTRUCTOR_TEST_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_set_lookup_test.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_set_lookup_test.h
index 6eda801538..05579173d1 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_set_lookup_test.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_set_lookup_test.h
@@ -17,10 +17,10 @@
#include "gmock/gmock.h"
#include "gtest/gtest.h"
-#include "y_absl/container/internal/hash_generator_testing.h"
-#include "y_absl/container/internal/hash_policy_testing.h"
+#include "y_absl/container/internal/hash_generator_testing.h"
+#include "y_absl/container/internal/hash_policy_testing.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
@@ -86,6 +86,6 @@ REGISTER_TYPED_TEST_CASE_P(LookupTest, Count, Find, EqualRange);
} // namespace container_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_INTERNAL_UNORDERED_SET_LOOKUP_TEST_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_set_members_test.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_set_members_test.h
index 9e1d20db10..ad1c88d8b2 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_set_members_test.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_set_members_test.h
@@ -18,9 +18,9 @@
#include <type_traits>
#include "gmock/gmock.h"
#include "gtest/gtest.h"
-#include "y_absl/meta/type_traits.h"
+#include "y_absl/meta/type_traits.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
@@ -35,10 +35,10 @@ void UseType() {}
TYPED_TEST_P(MembersTest, Typedefs) {
EXPECT_TRUE((std::is_same<typename TypeParam::key_type,
typename TypeParam::value_type>()));
- EXPECT_TRUE((y_absl::conjunction<
- y_absl::negation<std::is_signed<typename TypeParam::size_type>>,
+ EXPECT_TRUE((y_absl::conjunction<
+ y_absl::negation<std::is_signed<typename TypeParam::size_type>>,
std::is_integral<typename TypeParam::size_type>>()));
- EXPECT_TRUE((y_absl::conjunction<
+ EXPECT_TRUE((y_absl::conjunction<
std::is_signed<typename TypeParam::difference_type>,
std::is_integral<typename TypeParam::difference_type>>()));
EXPECT_TRUE((std::is_convertible<
@@ -81,6 +81,6 @@ REGISTER_TYPED_TEST_SUITE_P(MembersTest, Typedefs, SimpleFunctions, BeginEnd);
} // namespace container_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_INTERNAL_UNORDERED_SET_MEMBERS_TEST_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_set_modifiers_test.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_set_modifiers_test.h
index d895c138d7..2f96a0197b 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_set_modifiers_test.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/unordered_set_modifiers_test.h
@@ -17,10 +17,10 @@
#include "gmock/gmock.h"
#include "gtest/gtest.h"
-#include "y_absl/container/internal/hash_generator_testing.h"
-#include "y_absl/container/internal/hash_policy_testing.h"
+#include "y_absl/container/internal/hash_generator_testing.h"
+#include "y_absl/container/internal/hash_policy_testing.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
@@ -216,6 +216,6 @@ REGISTER_TYPED_TEST_CASE_P(ModifiersTest, Clear, Insert, InsertHint,
} // namespace container_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_INTERNAL_UNORDERED_SET_MODIFIERS_TEST_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/node_hash_map.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/node_hash_map.h
index 8ff7775b99..07e26def79 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/node_hash_map.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/node_hash_map.h
@@ -16,7 +16,7 @@
// File: node_hash_map.h
// -----------------------------------------------------------------------------
//
-// An `y_absl::node_hash_map<K, V>` is an unordered associative container of
+// An `y_absl::node_hash_map<K, V>` is an unordered associative container of
// unique keys and associated values designed to be a more efficient replacement
// for `std::unordered_map`. Like `unordered_map`, search, insertion, and
// deletion of map elements can be done as an `O(1)` operation. However,
@@ -40,14 +40,14 @@
#include <type_traits>
#include <utility>
-#include "y_absl/algorithm/container.h"
-#include "y_absl/container/internal/container_memory.h"
-#include "y_absl/container/internal/hash_function_defaults.h" // IWYU pragma: export
-#include "y_absl/container/internal/node_hash_policy.h"
-#include "y_absl/container/internal/raw_hash_map.h" // IWYU pragma: export
-#include "y_absl/memory/memory.h"
+#include "y_absl/algorithm/container.h"
+#include "y_absl/container/internal/container_memory.h"
+#include "y_absl/container/internal/hash_function_defaults.h" // IWYU pragma: export
+#include "y_absl/container/internal/node_hash_policy.h"
+#include "y_absl/container/internal/raw_hash_map.h" // IWYU pragma: export
+#include "y_absl/memory/memory.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
template <class Key, class Value>
@@ -55,10 +55,10 @@ class NodeHashMapPolicy;
} // namespace container_internal
// -----------------------------------------------------------------------------
-// y_absl::node_hash_map
+// y_absl::node_hash_map
// -----------------------------------------------------------------------------
//
-// An `y_absl::node_hash_map<K, V>` is an unordered associative container which
+// An `y_absl::node_hash_map<K, V>` is an unordered associative container which
// has been optimized for both speed and memory footprint in most common use
// cases. Its interface is similar to that of `std::unordered_map<K, V>` with
// the following notable differences:
@@ -70,17 +70,17 @@ class NodeHashMapPolicy;
// slots (open, deleted, and empty) within the hash map.
// * Returns `void` from the `erase(iterator)` overload.
//
-// By default, `node_hash_map` uses the `y_absl::Hash` hashing framework.
-// All fundamental and Abseil types that support the `y_absl::Hash` framework have
+// By default, `node_hash_map` uses the `y_absl::Hash` hashing framework.
+// All fundamental and Abseil types that support the `y_absl::Hash` framework have
// a compatible equality operator for comparing insertions into `node_hash_map`.
-// If your type is not yet supported by the `y_absl::Hash` framework, see
-// y_absl/hash/hash.h for information on extending Abseil hashing to user-defined
+// If your type is not yet supported by the `y_absl::Hash` framework, see
+// y_absl/hash/hash.h for information on extending Abseil hashing to user-defined
// types.
//
// Example:
//
// // Create a node hash map of three strings (that map to strings)
-// y_absl::node_hash_map<TString, TString> ducks =
+// y_absl::node_hash_map<TString, TString> ducks =
// {{"a", "huey"}, {"b", "dewey"}, {"c", "louie"}};
//
// // Insert a new element into the node hash map
@@ -90,18 +90,18 @@ class NodeHashMapPolicy;
// ducks.rehash(0);
//
// // Find the element with the key "b"
-// TString search_key = "b";
+// TString search_key = "b";
// auto result = ducks.find(search_key);
// if (result != ducks.end()) {
// std::cout << "Result: " << result->second << std::endl;
// }
template <class Key, class Value,
- class Hash = y_absl::container_internal::hash_default_hash<Key>,
- class Eq = y_absl::container_internal::hash_default_eq<Key>,
+ class Hash = y_absl::container_internal::hash_default_hash<Key>,
+ class Eq = y_absl::container_internal::hash_default_eq<Key>,
class Alloc = std::allocator<std::pair<const Key, Value>>>
class node_hash_map
- : public y_absl::container_internal::raw_hash_map<
- y_absl::container_internal::NodeHashMapPolicy<Key, Value>, Hash, Eq,
+ : public y_absl::container_internal::raw_hash_map<
+ y_absl::container_internal::NodeHashMapPolicy<Key, Value>, Hash, Eq,
Alloc> {
using Base = typename node_hash_map::raw_hash_map;
@@ -114,38 +114,38 @@ class node_hash_map
// * Default constructor
//
// // No allocation for the table's elements is made.
- // y_absl::node_hash_map<int, TString> map1;
+ // y_absl::node_hash_map<int, TString> map1;
//
// * Initializer List constructor
//
- // y_absl::node_hash_map<int, TString> map2 =
+ // y_absl::node_hash_map<int, TString> map2 =
// {{1, "huey"}, {2, "dewey"}, {3, "louie"},};
//
// * Copy constructor
//
- // y_absl::node_hash_map<int, TString> map3(map2);
+ // y_absl::node_hash_map<int, TString> map3(map2);
//
// * Copy assignment operator
//
// // Hash functor and Comparator are copied as well
- // y_absl::node_hash_map<int, TString> map4;
+ // y_absl::node_hash_map<int, TString> map4;
// map4 = map3;
//
// * Move constructor
//
// // Move is guaranteed efficient
- // y_absl::node_hash_map<int, TString> map5(std::move(map4));
+ // y_absl::node_hash_map<int, TString> map5(std::move(map4));
//
// * Move assignment operator
//
// // May be efficient if allocators are compatible
- // y_absl::node_hash_map<int, TString> map6;
+ // y_absl::node_hash_map<int, TString> map6;
// map6 = std::move(map5);
//
// * Range constructor
//
- // std::vector<std::pair<int, TString>> v = {{1, "a"}, {2, "b"}};
- // y_absl::node_hash_map<int, TString> map7(v.begin(), v.end());
+ // std::vector<std::pair<int, TString>> v = {{1, "a"}, {2, "b"}};
+ // y_absl::node_hash_map<int, TString> map7(v.begin(), v.end());
node_hash_map() {}
using Base::Base;
@@ -174,7 +174,7 @@ class node_hash_map
// Returns the number of element slots (assigned, deleted, and empty)
// available within the `node_hash_map`.
//
- // NOTE: this member function is particular to `y_absl::node_hash_map` and is
+ // NOTE: this member function is particular to `y_absl::node_hash_map` and is
// not provided in the `std::unordered_map` API.
using Base::capacity;
@@ -535,7 +535,7 @@ namespace container_internal {
template <class Key, class Value>
class NodeHashMapPolicy
- : public y_absl::container_internal::node_hash_policy<
+ : public y_absl::container_internal::node_hash_policy<
std::pair<const Key, Value>&, NodeHashMapPolicy<Key, Value>> {
using value_type = std::pair<const Key, Value>;
@@ -546,30 +546,30 @@ class NodeHashMapPolicy
template <class Allocator, class... Args>
static value_type* new_element(Allocator* alloc, Args&&... args) {
- using PairAlloc = typename y_absl::allocator_traits<
+ using PairAlloc = typename y_absl::allocator_traits<
Allocator>::template rebind_alloc<value_type>;
PairAlloc pair_alloc(*alloc);
value_type* res =
- y_absl::allocator_traits<PairAlloc>::allocate(pair_alloc, 1);
- y_absl::allocator_traits<PairAlloc>::construct(pair_alloc, res,
+ y_absl::allocator_traits<PairAlloc>::allocate(pair_alloc, 1);
+ y_absl::allocator_traits<PairAlloc>::construct(pair_alloc, res,
std::forward<Args>(args)...);
return res;
}
template <class Allocator>
static void delete_element(Allocator* alloc, value_type* pair) {
- using PairAlloc = typename y_absl::allocator_traits<
+ using PairAlloc = typename y_absl::allocator_traits<
Allocator>::template rebind_alloc<value_type>;
PairAlloc pair_alloc(*alloc);
- y_absl::allocator_traits<PairAlloc>::destroy(pair_alloc, pair);
- y_absl::allocator_traits<PairAlloc>::deallocate(pair_alloc, pair, 1);
+ y_absl::allocator_traits<PairAlloc>::destroy(pair_alloc, pair);
+ y_absl::allocator_traits<PairAlloc>::deallocate(pair_alloc, pair, 1);
}
template <class F, class... Args>
- static decltype(y_absl::container_internal::DecomposePair(
+ static decltype(y_absl::container_internal::DecomposePair(
std::declval<F>(), std::declval<Args>()...))
apply(F&& f, Args&&... args) {
- return y_absl::container_internal::DecomposePair(std::forward<F>(f),
+ return y_absl::container_internal::DecomposePair(std::forward<F>(f),
std::forward<Args>(args)...);
}
@@ -584,14 +584,14 @@ class NodeHashMapPolicy
namespace container_algorithm_internal {
-// Specialization of trait in y_absl/algorithm/container.h
+// Specialization of trait in y_absl/algorithm/container.h
template <class Key, class T, class Hash, class KeyEqual, class Allocator>
struct IsUnorderedContainer<
- y_absl::node_hash_map<Key, T, Hash, KeyEqual, Allocator>> : std::true_type {};
+ y_absl::node_hash_map<Key, T, Hash, KeyEqual, Allocator>> : std::true_type {};
} // namespace container_algorithm_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_NODE_HASH_MAP_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/node_hash_set.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/node_hash_set.h
index 2561cfb7d8..aa98bb29b8 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/container/node_hash_set.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/node_hash_set.h
@@ -16,7 +16,7 @@
// File: node_hash_set.h
// -----------------------------------------------------------------------------
//
-// An `y_absl::node_hash_set<T>` is an unordered associative container designed to
+// An `y_absl::node_hash_set<T>` is an unordered associative container designed to
// be a more efficient replacement for `std::unordered_set`. Like
// `unordered_set`, search, insertion, and deletion of set elements can be done
// as an `O(1)` operation. However, `node_hash_set` (and other unordered
@@ -37,13 +37,13 @@
#include <type_traits>
-#include "y_absl/algorithm/container.h"
-#include "y_absl/container/internal/hash_function_defaults.h" // IWYU pragma: export
-#include "y_absl/container/internal/node_hash_policy.h"
-#include "y_absl/container/internal/raw_hash_set.h" // IWYU pragma: export
-#include "y_absl/memory/memory.h"
+#include "y_absl/algorithm/container.h"
+#include "y_absl/container/internal/hash_function_defaults.h" // IWYU pragma: export
+#include "y_absl/container/internal/node_hash_policy.h"
+#include "y_absl/container/internal/raw_hash_set.h" // IWYU pragma: export
+#include "y_absl/memory/memory.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace container_internal {
template <typename T>
@@ -51,10 +51,10 @@ struct NodeHashSetPolicy;
} // namespace container_internal
// -----------------------------------------------------------------------------
-// y_absl::node_hash_set
+// y_absl::node_hash_set
// -----------------------------------------------------------------------------
//
-// An `y_absl::node_hash_set<T>` is an unordered associative container which
+// An `y_absl::node_hash_set<T>` is an unordered associative container which
// has been optimized for both speed and memory footprint in most common use
// cases. Its interface is similar to that of `std::unordered_set<T>` with the
// following notable differences:
@@ -66,11 +66,11 @@ struct NodeHashSetPolicy;
// slots (open, deleted, and empty) within the hash set.
// * Returns `void` from the `erase(iterator)` overload.
//
-// By default, `node_hash_set` uses the `y_absl::Hash` hashing framework.
-// All fundamental and Abseil types that support the `y_absl::Hash` framework have
+// By default, `node_hash_set` uses the `y_absl::Hash` hashing framework.
+// All fundamental and Abseil types that support the `y_absl::Hash` framework have
// a compatible equality operator for comparing insertions into `node_hash_set`.
-// If your type is not yet supported by the `y_absl::Hash` framework, see
-// y_absl/hash/hash.h for information on extending Abseil hashing to user-defined
+// If your type is not yet supported by the `y_absl::Hash` framework, see
+// y_absl/hash/hash.h for information on extending Abseil hashing to user-defined
// types.
//
// Example:
@@ -89,12 +89,12 @@ struct NodeHashSetPolicy;
// if (ducks.contains("dewey")) {
// std::cout << "We found dewey!" << std::endl;
// }
-template <class T, class Hash = y_absl::container_internal::hash_default_hash<T>,
- class Eq = y_absl::container_internal::hash_default_eq<T>,
+template <class T, class Hash = y_absl::container_internal::hash_default_hash<T>,
+ class Eq = y_absl::container_internal::hash_default_eq<T>,
class Alloc = std::allocator<T>>
class node_hash_set
- : public y_absl::container_internal::raw_hash_set<
- y_absl::container_internal::NodeHashSetPolicy<T>, Hash, Eq, Alloc> {
+ : public y_absl::container_internal::raw_hash_set<
+ y_absl::container_internal::NodeHashSetPolicy<T>, Hash, Eq, Alloc> {
using Base = typename node_hash_set::raw_hash_set;
public:
@@ -106,38 +106,38 @@ class node_hash_set
// * Default constructor
//
// // No allocation for the table's elements is made.
- // y_absl::node_hash_set<TString> set1;
+ // y_absl::node_hash_set<TString> set1;
//
// * Initializer List constructor
//
- // y_absl::node_hash_set<TString> set2 =
+ // y_absl::node_hash_set<TString> set2 =
// {{"huey"}, {"dewey"}, {"louie"}};
//
// * Copy constructor
//
- // y_absl::node_hash_set<TString> set3(set2);
+ // y_absl::node_hash_set<TString> set3(set2);
//
// * Copy assignment operator
//
// // Hash functor and Comparator are copied as well
- // y_absl::node_hash_set<TString> set4;
+ // y_absl::node_hash_set<TString> set4;
// set4 = set3;
//
// * Move constructor
//
// // Move is guaranteed efficient
- // y_absl::node_hash_set<TString> set5(std::move(set4));
+ // y_absl::node_hash_set<TString> set5(std::move(set4));
//
// * Move assignment operator
//
// // May be efficient if allocators are compatible
- // y_absl::node_hash_set<TString> set6;
+ // y_absl::node_hash_set<TString> set6;
// set6 = std::move(set5);
//
// * Range constructor
//
- // std::vector<TString> v = {"a", "b"};
- // y_absl::node_hash_set<TString> set7(v.begin(), v.end());
+ // std::vector<TString> v = {"a", "b"};
+ // y_absl::node_hash_set<TString> set7(v.begin(), v.end());
node_hash_set() {}
using Base::Base;
@@ -166,7 +166,7 @@ class node_hash_set
// Returns the number of element slots (assigned, deleted, and empty)
// available within the `node_hash_set`.
//
- // NOTE: this member function is particular to `y_absl::node_hash_set` and is
+ // NOTE: this member function is particular to `y_absl::node_hash_set` and is
// not provided in the `std::unordered_set` API.
using Base::capacity;
@@ -442,7 +442,7 @@ namespace container_internal {
template <class T>
struct NodeHashSetPolicy
- : y_absl::container_internal::node_hash_policy<T&, NodeHashSetPolicy<T>> {
+ : y_absl::container_internal::node_hash_policy<T&, NodeHashSetPolicy<T>> {
using key_type = T;
using init_type = T;
using constant_iterators = std::true_type;
@@ -450,10 +450,10 @@ struct NodeHashSetPolicy
template <class Allocator, class... Args>
static T* new_element(Allocator* alloc, Args&&... args) {
using ValueAlloc =
- typename y_absl::allocator_traits<Allocator>::template rebind_alloc<T>;
+ typename y_absl::allocator_traits<Allocator>::template rebind_alloc<T>;
ValueAlloc value_alloc(*alloc);
- T* res = y_absl::allocator_traits<ValueAlloc>::allocate(value_alloc, 1);
- y_absl::allocator_traits<ValueAlloc>::construct(value_alloc, res,
+ T* res = y_absl::allocator_traits<ValueAlloc>::allocate(value_alloc, 1);
+ y_absl::allocator_traits<ValueAlloc>::construct(value_alloc, res,
std::forward<Args>(args)...);
return res;
}
@@ -461,17 +461,17 @@ struct NodeHashSetPolicy
template <class Allocator>
static void delete_element(Allocator* alloc, T* elem) {
using ValueAlloc =
- typename y_absl::allocator_traits<Allocator>::template rebind_alloc<T>;
+ typename y_absl::allocator_traits<Allocator>::template rebind_alloc<T>;
ValueAlloc value_alloc(*alloc);
- y_absl::allocator_traits<ValueAlloc>::destroy(value_alloc, elem);
- y_absl::allocator_traits<ValueAlloc>::deallocate(value_alloc, elem, 1);
+ y_absl::allocator_traits<ValueAlloc>::destroy(value_alloc, elem);
+ y_absl::allocator_traits<ValueAlloc>::deallocate(value_alloc, elem, 1);
}
template <class F, class... Args>
- static decltype(y_absl::container_internal::DecomposeValue(
+ static decltype(y_absl::container_internal::DecomposeValue(
std::declval<F>(), std::declval<Args>()...))
apply(F&& f, Args&&... args) {
- return y_absl::container_internal::DecomposeValue(
+ return y_absl::container_internal::DecomposeValue(
std::forward<F>(f), std::forward<Args>(args)...);
}
@@ -481,13 +481,13 @@ struct NodeHashSetPolicy
namespace container_algorithm_internal {
-// Specialization of trait in y_absl/algorithm/container.h
+// Specialization of trait in y_absl/algorithm/container.h
template <class Key, class Hash, class KeyEqual, class Allocator>
-struct IsUnorderedContainer<y_absl::node_hash_set<Key, Hash, KeyEqual, Allocator>>
+struct IsUnorderedContainer<y_absl::node_hash_set<Key, Hash, KeyEqual, Allocator>>
: std::true_type {};
} // namespace container_algorithm_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_CONTAINER_NODE_HASH_SET_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/failure_signal_handler.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/failure_signal_handler.cc
index 02bf678650..fa6e30f935 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/failure_signal_handler.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/failure_signal_handler.cc
@@ -14,9 +14,9 @@
// limitations under the License.
//
-#include "y_absl/debugging/failure_signal_handler.h"
+#include "y_absl/debugging/failure_signal_handler.h"
-#include "y_absl/base/config.h"
+#include "y_absl/base/config.h"
#ifdef _WIN32
#include <windows.h>
@@ -41,12 +41,12 @@
#include <cstring>
#include <ctime>
-#include "y_absl/base/attributes.h"
+#include "y_absl/base/attributes.h"
#include "y_absl/base/internal/errno_saver.h"
-#include "y_absl/base/internal/raw_logging.h"
-#include "y_absl/base/internal/sysinfo.h"
-#include "y_absl/debugging/internal/examine_stack.h"
-#include "y_absl/debugging/stacktrace.h"
+#include "y_absl/base/internal/raw_logging.h"
+#include "y_absl/base/internal/sysinfo.h"
+#include "y_absl/debugging/internal/examine_stack.h"
+#include "y_absl/debugging/stacktrace.h"
#ifndef _WIN32
#define ABSL_HAVE_SIGACTION
@@ -57,7 +57,7 @@
#endif
#endif
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
ABSL_CONST_INIT static FailureSignalHandlerOptions fsh_options;
@@ -218,7 +218,7 @@ static void InstallOneFailureHandler(FailureSignalData* data,
static void WriteToStderr(const char* data) {
y_absl::base_internal::ErrnoSaver errno_saver;
- y_absl::raw_logging_internal::SafeWriteToStderr(data, strlen(data));
+ y_absl::raw_logging_internal::SafeWriteToStderr(data, strlen(data));
}
static void WriteSignalMessage(int signo, int cpu,
@@ -248,7 +248,7 @@ struct WriterFnStruct {
void (*writerfn)(const char*);
};
-// Many of the y_absl::debugging_internal::Dump* functions in
+// Many of the y_absl::debugging_internal::Dump* functions in
// examine_stack.h take a writer function pointer that has a void* arg
// for historical reasons. failure_signal_handler_writer only takes a
// data pointer. This function converts between these types.
@@ -266,12 +266,12 @@ ABSL_ATTRIBUTE_NOINLINE static void WriteStackTrace(
void* stack[kNumStackFrames];
int frame_sizes[kNumStackFrames];
int min_dropped_frames;
- int depth = y_absl::GetStackFramesWithContext(
+ int depth = y_absl::GetStackFramesWithContext(
stack, frame_sizes, kNumStackFrames,
1, // Do not include this function in stack trace.
ucontext, &min_dropped_frames);
- y_absl::debugging_internal::DumpPCAndFrameSizesAndStackTrace(
- y_absl::debugging_internal::GetProgramCounter(ucontext), stack, frame_sizes,
+ y_absl::debugging_internal::DumpPCAndFrameSizesAndStackTrace(
+ y_absl::debugging_internal::GetProgramCounter(ucontext), stack, frame_sizes,
depth, min_dropped_frames, symbolize_stacktrace, writerfn, writerfn_arg);
}
@@ -286,7 +286,7 @@ static void WriteFailureInfo(int signo, void* ucontext, int cpu,
&writerfn_struct);
}
-// y_absl::SleepFor() can't be used here since AbslInternalSleepFor()
+// y_absl::SleepFor() can't be used here since AbslInternalSleepFor()
// may be overridden to do something that isn't async-signal-safe on
// some platforms.
static void PortableSleepForSeconds(int seconds) {
@@ -311,9 +311,9 @@ static void ImmediateAbortSignalHandler(int) {
}
#endif
-// y_absl::base_internal::GetTID() returns pid_t on most platforms, but
-// returns y_absl::base_internal::pid_t on Windows.
-using GetTidType = decltype(y_absl::base_internal::GetTID());
+// y_absl::base_internal::GetTID() returns pid_t on most platforms, but
+// returns y_absl::base_internal::pid_t on Windows.
+using GetTidType = decltype(y_absl::base_internal::GetTID());
ABSL_CONST_INIT static std::atomic<GetTidType> failed_tid(0);
#ifndef ABSL_HAVE_SIGACTION
@@ -323,7 +323,7 @@ static void AbslFailureSignalHandler(int signo) {
static void AbslFailureSignalHandler(int signo, siginfo_t*, void* ucontext) {
#endif
- const GetTidType this_tid = y_absl::base_internal::GetTID();
+ const GetTidType this_tid = y_absl::base_internal::GetTID();
GetTidType previous_failed_tid = 0;
if (!failed_tid.compare_exchange_strong(
previous_failed_tid, static_cast<intptr_t>(this_tid),
@@ -331,7 +331,7 @@ static void AbslFailureSignalHandler(int signo, siginfo_t*, void* ucontext) {
ABSL_RAW_LOG(
ERROR,
"Signal %d raised at PC=%p while already in AbslFailureSignalHandler()",
- signo, y_absl::debugging_internal::GetProgramCounter(ucontext));
+ signo, y_absl::debugging_internal::GetProgramCounter(ucontext));
if (this_tid != previous_failed_tid) {
// Another thread is already in AbslFailureSignalHandler(), so wait
// a bit for it to finish. If the other thread doesn't kill us,
@@ -385,4 +385,4 @@ void InstallFailureSignalHandler(const FailureSignalHandlerOptions& options) {
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/failure_signal_handler.h b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/failure_signal_handler.h
index cb6db66d88..879df3c434 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/failure_signal_handler.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/failure_signal_handler.h
@@ -19,15 +19,15 @@
// This file configures the Abseil *failure signal handler* to capture and dump
// useful debugging information (such as a stacktrace) upon program failure.
//
-// To use the failure signal handler, call `y_absl::InstallFailureSignalHandler()`
+// To use the failure signal handler, call `y_absl::InstallFailureSignalHandler()`
// very early in your program, usually in the first few lines of main():
//
// int main(int argc, char** argv) {
// // Initialize the symbolizer to get a human-readable stack trace
-// y_absl::InitializeSymbolizer(argv[0]);
+// y_absl::InitializeSymbolizer(argv[0]);
//
-// y_absl::FailureSignalHandlerOptions options;
-// y_absl::InstallFailureSignalHandler(options);
+// y_absl::FailureSignalHandlerOptions options;
+// y_absl::InstallFailureSignalHandler(options);
// DoSomethingInteresting();
// return 0;
// }
@@ -46,12 +46,12 @@
#include "y_absl/base/config.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// FailureSignalHandlerOptions
//
-// Struct for holding `y_absl::InstallFailureSignalHandler()` configuration
+// Struct for holding `y_absl::InstallFailureSignalHandler()` configuration
// options.
struct FailureSignalHandlerOptions {
// If true, try to symbolize the stacktrace emitted on failure, provided that
@@ -116,6 +116,6 @@ const char* FailureSignalToString(int signo);
} // namespace debugging_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_DEBUGGING_FAILURE_SIGNAL_HANDLER_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/address_is_readable.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/address_is_readable.cc
index 8c7ad66c63..df217335ea 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/address_is_readable.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/address_is_readable.cc
@@ -15,11 +15,11 @@
// base::AddressIsReadable() probes an address to see whether it is readable,
// without faulting.
-#include "y_absl/debugging/internal/address_is_readable.h"
+#include "y_absl/debugging/internal/address_is_readable.h"
#if !defined(__linux__) || defined(__ANDROID__)
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace debugging_internal {
@@ -28,7 +28,7 @@ bool AddressIsReadable(const void* /* addr */) { return true; }
} // namespace debugging_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#else
@@ -41,9 +41,9 @@ ABSL_NAMESPACE_END
#include <cstdint>
#include "y_absl/base/internal/errno_saver.h"
-#include "y_absl/base/internal/raw_logging.h"
+#include "y_absl/base/internal/raw_logging.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace debugging_internal {
@@ -134,6 +134,6 @@ bool AddressIsReadable(const void *addr) {
} // namespace debugging_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/address_is_readable.h b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/address_is_readable.h
index 6bd751a7ae..279dcc640b 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/address_is_readable.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/address_is_readable.h
@@ -17,7 +17,7 @@
#include "y_absl/base/config.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace debugging_internal {
@@ -27,6 +27,6 @@ bool AddressIsReadable(const void *addr);
} // namespace debugging_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_DEBUGGING_INTERNAL_ADDRESS_IS_READABLE_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/demangle.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/demangle.cc
index 973360147a..0a4daa2f5c 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/demangle.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/demangle.cc
@@ -17,13 +17,13 @@
//
// Note that we only have partial C++11 support yet.
-#include "y_absl/debugging/internal/demangle.h"
+#include "y_absl/debugging/internal/demangle.h"
#include <cstdint>
#include <cstdio>
#include <limits>
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace debugging_internal {
@@ -1956,4 +1956,4 @@ bool Demangle(const char *mangled, char *out, int out_size) {
} // namespace debugging_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/demangle.h b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/demangle.h
index ac26059915..a9b42edb45 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/demangle.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/demangle.h
@@ -55,7 +55,7 @@
#include "y_absl/base/config.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace debugging_internal {
@@ -66,6 +66,6 @@ bool Demangle(const char *mangled, char *out, int out_size);
} // namespace debugging_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_DEBUGGING_INTERNAL_DEMANGLE_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/elf_mem_image.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/elf_mem_image.cc
index 3c179a7db3..ba4bbc3855 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/elf_mem_image.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/elf_mem_image.cc
@@ -15,7 +15,7 @@
// Allow dynamic symbol lookup in an in-memory Elf image.
//
-#include "y_absl/debugging/internal/elf_mem_image.h"
+#include "y_absl/debugging/internal/elf_mem_image.h"
#ifdef ABSL_HAVE_ELF_MEM_IMAGE // defined in elf_mem_image.h
@@ -23,7 +23,7 @@
#include <cassert>
#include <cstddef>
#include "y_absl/base/config.h"
-#include "y_absl/base/internal/raw_logging.h"
+#include "y_absl/base/internal/raw_logging.h"
// From binutils/include/elf/common.h (this doesn't appear to be documented
// anywhere else).
@@ -38,7 +38,7 @@
#define VERSYM_VERSION 0x7fff
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace debugging_internal {
@@ -378,6 +378,6 @@ void ElfMemImage::SymbolIterator::Update(int increment) {
} // namespace debugging_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_HAVE_ELF_MEM_IMAGE
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/elf_mem_image.h b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/elf_mem_image.h
index 24dc09f7a3..13a6b2e664 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/elf_mem_image.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/elf_mem_image.h
@@ -44,7 +44,7 @@
#define ElfW(x) __ElfN(x)
#endif
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace debugging_internal {
@@ -131,7 +131,7 @@ class ElfMemImage {
} // namespace debugging_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_HAVE_ELF_MEM_IMAGE
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/examine_stack.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/examine_stack.cc
index b074255bd5..c59d92b6a3 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/examine_stack.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/examine_stack.cc
@@ -14,7 +14,7 @@
// limitations under the License.
//
-#include "y_absl/debugging/internal/examine_stack.h"
+#include "y_absl/debugging/internal/examine_stack.h"
#ifndef _WIN32
#include <unistd.h>
@@ -27,13 +27,13 @@
#include <csignal>
#include <cstdio>
-#include "y_absl/base/attributes.h"
-#include "y_absl/base/internal/raw_logging.h"
-#include "y_absl/base/macros.h"
-#include "y_absl/debugging/stacktrace.h"
-#include "y_absl/debugging/symbolize.h"
+#include "y_absl/base/attributes.h"
+#include "y_absl/base/internal/raw_logging.h"
+#include "y_absl/base/macros.h"
+#include "y_absl/debugging/stacktrace.h"
+#include "y_absl/debugging/symbolize.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace debugging_internal {
@@ -134,7 +134,7 @@ static void DumpPCAndFrameSizeAndSymbol(void (*writerfn)(const char*, void*),
const char* const prefix) {
char tmp[1024];
const char* symbol = "(unknown)";
- if (y_absl::Symbolize(symbolize_pc, tmp, sizeof(tmp))) {
+ if (y_absl::Symbolize(symbolize_pc, tmp, sizeof(tmp))) {
symbol = tmp;
}
char buf[1024];
@@ -200,4 +200,4 @@ void DumpPCAndFrameSizesAndStackTrace(
} // namespace debugging_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/examine_stack.h b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/examine_stack.h
index ce2e8c9735..32892a1150 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/examine_stack.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/examine_stack.h
@@ -19,7 +19,7 @@
#include "y_absl/base/config.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace debugging_internal {
@@ -37,6 +37,6 @@ void DumpPCAndFrameSizesAndStackTrace(
} // namespace debugging_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_DEBUGGING_INTERNAL_EXAMINE_STACK_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stack_consumption.h b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stack_consumption.h
index a7d602a342..80137ad0eb 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stack_consumption.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stack_consumption.h
@@ -29,7 +29,7 @@
defined(__aarch64__) || defined(__riscv))
#define ABSL_INTERNAL_HAVE_DEBUGGING_STACK_CONSUMPTION 1
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace debugging_internal {
@@ -43,7 +43,7 @@ int GetSignalHandlerStackConsumption(void (*signal_handler)(int));
} // namespace debugging_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_INTERNAL_HAVE_DEBUGGING_STACK_CONSUMPTION
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_aarch64-inl.inc b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_aarch64-inl.inc
index 682f58108f..700f607488 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_aarch64-inl.inc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_aarch64-inl.inc
@@ -14,10 +14,10 @@
#include <cstdint>
#include <iostream>
-#include "y_absl/base/attributes.h"
-#include "y_absl/debugging/internal/address_is_readable.h"
-#include "y_absl/debugging/internal/vdso_support.h" // a no-op on non-elf or non-glibc systems
-#include "y_absl/debugging/stacktrace.h"
+#include "y_absl/base/attributes.h"
+#include "y_absl/debugging/internal/address_is_readable.h"
+#include "y_absl/debugging/internal/vdso_support.h" // a no-op on non-elf or non-glibc systems
+#include "y_absl/debugging/stacktrace.h"
static const uintptr_t kUnknownFrameSize = 0;
@@ -34,9 +34,9 @@ static const unsigned char* GetKernelRtSigreturnAddress() {
address = reinterpret_cast<uintptr_t>(nullptr);
#ifdef ABSL_HAVE_VDSO_SUPPORT
- y_absl::debugging_internal::VDSOSupport vdso;
+ y_absl::debugging_internal::VDSOSupport vdso;
if (vdso.IsPresent()) {
- y_absl::debugging_internal::VDSOSupport::SymbolInfo symbol_info;
+ y_absl::debugging_internal::VDSOSupport::SymbolInfo symbol_info;
auto lookup = [&](int type) {
return vdso.LookupSymbol("__kernel_rt_sigreturn", "LINUX_2.6.39", type,
&symbol_info);
@@ -96,7 +96,7 @@ static void **NextStackFrame(void **old_frame_pointer, const void *uc) {
// Check that alleged frame pointer is actually readable. This is to
// prevent "double fault" in case we hit the first fault due to e.g.
// stack corruption.
- if (!y_absl::debugging_internal::AddressIsReadable(
+ if (!y_absl::debugging_internal::AddressIsReadable(
pre_signal_frame_pointer))
return nullptr;
@@ -152,7 +152,7 @@ static int UnwindImpl(void** result, int* sizes, int max_depth, int skip_count,
void* prev_return_address = nullptr;
while (frame_pointer && n < max_depth) {
- // The y_absl::GetStackFrames routine is called when we are in some
+ // The y_absl::GetStackFrames routine is called when we are in some
// informational context (the failure signal handler for example).
// Use the non-strict unwinding rules to produce a stack trace
// that is as complete as possible (even if it contains a few bogus
@@ -186,7 +186,7 @@ static int UnwindImpl(void** result, int* sizes, int max_depth, int skip_count,
return n;
}
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace debugging_internal {
bool StackTraceWorksForTest() {
@@ -194,6 +194,6 @@ bool StackTraceWorksForTest() {
}
} // namespace debugging_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_DEBUGGING_INTERNAL_STACKTRACE_AARCH64_INL_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_arm-inl.inc b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_arm-inl.inc
index fc59d0e628..b73307120e 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_arm-inl.inc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_arm-inl.inc
@@ -19,7 +19,7 @@
#include <cstdint>
-#include "y_absl/debugging/stacktrace.h"
+#include "y_absl/debugging/stacktrace.h"
// WARNING:
// This only works if all your code is in either ARM or THUMB mode. With
@@ -58,7 +58,7 @@ static void **NextStackFrame(void **old_sp) {
return new_sp;
}
-// This ensures that y_absl::GetStackTrace sets up the Link Register properly.
+// This ensures that y_absl::GetStackTrace sets up the Link Register properly.
#ifdef __GNUC__
void StacktraceArmDummyFunction() __attribute__((noinline));
void StacktraceArmDummyFunction() { __asm__ volatile(""); }
@@ -84,7 +84,7 @@ static int UnwindImpl(void** result, int* sizes, int max_depth, int skip_count,
int n = 0;
while (sp && n < max_depth) {
- // The y_absl::GetStackFrames routine is called when we are in some
+ // The y_absl::GetStackFrames routine is called when we are in some
// informational context (the failure signal handler for example).
// Use the non-strict unwinding rules to produce a stack trace
// that is as complete as possible (even if it contains a few bogus
@@ -121,7 +121,7 @@ static int UnwindImpl(void** result, int* sizes, int max_depth, int skip_count,
return n;
}
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace debugging_internal {
bool StackTraceWorksForTest() {
@@ -129,6 +129,6 @@ bool StackTraceWorksForTest() {
}
} // namespace debugging_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_DEBUGGING_INTERNAL_STACKTRACE_ARM_INL_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_config.h b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_config.h
index 56d7cbf359..7ba212ab03 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_config.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_config.h
@@ -28,7 +28,7 @@
#elif defined(_WIN32)
#define ABSL_STACKTRACE_INL_HEADER \
- "y_absl/debugging/internal/stacktrace_win32-inl.inc"
+ "y_absl/debugging/internal/stacktrace_win32-inl.inc"
#elif defined(__APPLE__)
#ifdef ABSL_HAVE_THREAD_LOCAL
@@ -54,7 +54,7 @@
#if __has_include(<execinfo.h>)
// Note: When using glibc this may require -funwind-tables to function properly.
#define ABSL_STACKTRACE_INL_HEADER \
- "y_absl/debugging/internal/stacktrace_generic-inl.inc"
+ "y_absl/debugging/internal/stacktrace_generic-inl.inc"
#endif // __has_include(<execinfo.h>)
#elif defined(__i386__) || defined(__x86_64__)
#define ABSL_STACKTRACE_INL_HEADER \
@@ -81,7 +81,7 @@
// Fallback to the empty implementation.
#if !defined(ABSL_STACKTRACE_INL_HEADER)
#define ABSL_STACKTRACE_INL_HEADER \
- "y_absl/debugging/internal/stacktrace_unimplemented-inl.inc"
+ "y_absl/debugging/internal/stacktrace_unimplemented-inl.inc"
#endif
#endif // ABSL_DEBUGGING_INTERNAL_STACKTRACE_CONFIG_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_generic-inl.inc b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_generic-inl.inc
index 684cd0c339..fa623aa954 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_generic-inl.inc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_generic-inl.inc
@@ -24,8 +24,8 @@
#include <atomic>
#include <cstring>
-#include "y_absl/debugging/stacktrace.h"
-#include "y_absl/base/attributes.h"
+#include "y_absl/debugging/stacktrace.h"
+#include "y_absl/base/attributes.h"
// Sometimes, we can try to get a stack trace from within a stack
// trace, because we don't block signals inside this code (which would be too
@@ -95,7 +95,7 @@ static int UnwindImpl(void** result, int* sizes, int max_depth, int skip_count,
return result_count;
}
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace debugging_internal {
bool StackTraceWorksForTest() {
@@ -103,6 +103,6 @@ bool StackTraceWorksForTest() {
}
} // namespace debugging_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_DEBUGGING_INTERNAL_STACKTRACE_GENERIC_INL_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_powerpc-inl.inc b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_powerpc-inl.inc
index f8a7c0c2d7..1e41c4ebf2 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_powerpc-inl.inc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_powerpc-inl.inc
@@ -31,12 +31,12 @@
#include <cstdint>
#include <cstdio>
-#include "y_absl/base/attributes.h"
-#include "y_absl/base/optimization.h"
-#include "y_absl/base/port.h"
-#include "y_absl/debugging/stacktrace.h"
-#include "y_absl/debugging/internal/address_is_readable.h"
-#include "y_absl/debugging/internal/vdso_support.h" // a no-op on non-elf or non-glibc systems
+#include "y_absl/base/attributes.h"
+#include "y_absl/base/optimization.h"
+#include "y_absl/base/port.h"
+#include "y_absl/debugging/stacktrace.h"
+#include "y_absl/debugging/internal/address_is_readable.h"
+#include "y_absl/debugging/internal/vdso_support.h" // a no-op on non-elf or non-glibc systems
// Given a stack pointer, return the saved link register value.
// Note that this is the link register for a callee.
@@ -101,13 +101,13 @@ static void **NextStackFrame(void **old_sp, const void *uc) {
// possibly be there.
static const unsigned char *kernel_sigtramp_rt64_address = nullptr;
if (kernel_symbol_status == kNotInitialized) {
- y_absl::debugging_internal::VDSOSupport vdso;
+ y_absl::debugging_internal::VDSOSupport vdso;
if (vdso.IsPresent()) {
- y_absl::debugging_internal::VDSOSupport::SymbolInfo
+ y_absl::debugging_internal::VDSOSupport::SymbolInfo
sigtramp_rt64_symbol_info;
if (!vdso.LookupSymbol(
"__kernel_sigtramp_rt64", "LINUX_2.6.15",
- y_absl::debugging_internal::VDSOSupport::kVDSOSymbolType,
+ y_absl::debugging_internal::VDSOSupport::kVDSOSymbolType,
&sigtramp_rt64_symbol_info) ||
sigtramp_rt64_symbol_info.address == nullptr) {
// Unexpected: VDSO is present, yet the expected symbol is missing
@@ -144,7 +144,7 @@ static void **NextStackFrame(void **old_sp, const void *uc) {
// Check that alleged stack pointer is actually readable. This is to
// prevent a "double fault" in case we hit the first fault due to e.g.
// a stack corruption.
- if (y_absl::debugging_internal::AddressIsReadable(sp_before_signal)) {
+ if (y_absl::debugging_internal::AddressIsReadable(sp_before_signal)) {
// Alleged stack pointer is readable, use it for further unwinding.
new_sp = sp_before_signal;
}
@@ -156,7 +156,7 @@ static void **NextStackFrame(void **old_sp, const void *uc) {
return new_sp;
}
-// This ensures that y_absl::GetStackTrace sets up the Link Register properly.
+// This ensures that y_absl::GetStackTrace sets up the Link Register properly.
ABSL_ATTRIBUTE_NOINLINE static void AbslStacktracePowerPCDummyFunction() {
ABSL_BLOCK_TAIL_CALL_OPTIMIZATION();
}
@@ -200,7 +200,7 @@ static int UnwindImpl(void** result, int* sizes, int max_depth, int skip_count,
// The outermost frame is set up by runtimes and it does not have a
// caller frame, so it is skipped.
- // The y_absl::GetStackFrames routine is called when we are in some
+ // The y_absl::GetStackFrames routine is called when we are in some
// informational context (the failure signal handler for example).
// Use the non-strict unwinding rules to produce a stack trace
// that is as complete as possible (even if it contains a few
@@ -240,7 +240,7 @@ static int UnwindImpl(void** result, int* sizes, int max_depth, int skip_count,
return n;
}
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace debugging_internal {
bool StackTraceWorksForTest() {
@@ -248,6 +248,6 @@ bool StackTraceWorksForTest() {
}
} // namespace debugging_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_DEBUGGING_INTERNAL_STACKTRACE_POWERPC_INL_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_unimplemented-inl.inc b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_unimplemented-inl.inc
index 01a964c902..54dccaeae9 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_unimplemented-inl.inc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_unimplemented-inl.inc
@@ -11,7 +11,7 @@ static int UnwindImpl(void** /* result */, int* /* sizes */,
return 0;
}
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace debugging_internal {
bool StackTraceWorksForTest() {
@@ -19,6 +19,6 @@ bool StackTraceWorksForTest() {
}
} // namespace debugging_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_DEBUGGING_INTERNAL_STACKTRACE_UNIMPLEMENTED_INL_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_win32-inl.inc b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_win32-inl.inc
index 012af44b85..69bd7e3f2f 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_win32-inl.inc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_win32-inl.inc
@@ -80,7 +80,7 @@ static int UnwindImpl(void** result, int* sizes, int max_depth, int skip_count,
return n;
}
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace debugging_internal {
bool StackTraceWorksForTest() {
@@ -88,6 +88,6 @@ bool StackTraceWorksForTest() {
}
} // namespace debugging_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_DEBUGGING_INTERNAL_STACKTRACE_WIN32_INL_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_x86-inl.inc b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_x86-inl.inc
index 86dcce5eea..8936f8ca70 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_x86-inl.inc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/stacktrace_x86-inl.inc
@@ -29,15 +29,15 @@
#include <cstdint>
#include <limits>
-#include "y_absl/base/macros.h"
-#include "y_absl/base/port.h"
-#include "y_absl/debugging/internal/address_is_readable.h"
-#include "y_absl/debugging/internal/vdso_support.h" // a no-op on non-elf or non-glibc systems
-#include "y_absl/debugging/stacktrace.h"
+#include "y_absl/base/macros.h"
+#include "y_absl/base/port.h"
+#include "y_absl/debugging/internal/address_is_readable.h"
+#include "y_absl/debugging/internal/vdso_support.h" // a no-op on non-elf or non-glibc systems
+#include "y_absl/debugging/stacktrace.h"
-#include "y_absl/base/internal/raw_logging.h"
+#include "y_absl/base/internal/raw_logging.h"
-using y_absl::debugging_internal::AddressIsReadable;
+using y_absl::debugging_internal::AddressIsReadable;
#if defined(__linux__) && defined(__i386__)
// Count "push %reg" instructions in VDSO __kernel_vsyscall(),
@@ -175,11 +175,11 @@ static void **NextStackFrame(void **old_fp, const void *uc,
static const unsigned char *kernel_vsyscall_address = nullptr;
if (num_push_instructions == -1) {
#ifdef ABSL_HAVE_VDSO_SUPPORT
- y_absl::debugging_internal::VDSOSupport vdso;
+ y_absl::debugging_internal::VDSOSupport vdso;
if (vdso.IsPresent()) {
- y_absl::debugging_internal::VDSOSupport::SymbolInfo
+ y_absl::debugging_internal::VDSOSupport::SymbolInfo
rt_sigreturn_symbol_info;
- y_absl::debugging_internal::VDSOSupport::SymbolInfo vsyscall_symbol_info;
+ y_absl::debugging_internal::VDSOSupport::SymbolInfo vsyscall_symbol_info;
if (!vdso.LookupSymbol("__kernel_rt_sigreturn", "LINUX_2.5", STT_FUNC,
&rt_sigreturn_symbol_info) ||
!vdso.LookupSymbol("__kernel_vsyscall", "LINUX_2.5", STT_FUNC,
@@ -351,7 +351,7 @@ static int UnwindImpl(void **result, int *sizes, int max_depth, int skip_count,
return n;
}
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace debugging_internal {
bool StackTraceWorksForTest() {
@@ -359,6 +359,6 @@ bool StackTraceWorksForTest() {
}
} // namespace debugging_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_DEBUGGING_INTERNAL_STACKTRACE_X86_INL_INC_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/symbolize.h b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/symbolize.h
index c26fe4af7a..e6e2b0724a 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/symbolize.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/symbolize.h
@@ -35,9 +35,9 @@
#include <elf.h>
#include <link.h> // For ElfW() macro.
#include <functional>
-#include <util/generic/string.h>
-
-namespace y_absl {
+#include <util/generic/string.h>
+
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace debugging_internal {
@@ -58,7 +58,7 @@ bool GetSectionHeaderByName(int fd, const char *name, size_t name_len,
} // namespace debugging_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_INTERNAL_HAVE_ELF_SYMBOLIZE
@@ -74,7 +74,7 @@ ABSL_NAMESPACE_END
#define ABSL_INTERNAL_HAVE_EMSCRIPTEN_SYMBOLIZE 1
#endif
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace debugging_internal {
@@ -136,7 +136,7 @@ bool GetFileMappingHint(const void** start, const void** end, uint64_t* offset,
} // namespace debugging_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // __cplusplus
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/vdso_support.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/vdso_support.cc
index 056e983778..7905eba32f 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/vdso_support.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/vdso_support.cc
@@ -16,7 +16,7 @@
//
// VDSOSupport -- a class representing kernel VDSO (if present).
-#include "y_absl/debugging/internal/vdso_support.h"
+#include "y_absl/debugging/internal/vdso_support.h"
#ifdef ABSL_HAVE_VDSO_SUPPORT // defined in vdso_support.h
@@ -42,9 +42,9 @@
#include <sys/auxv.h>
#endif
-#include "y_absl/base/dynamic_annotations.h"
-#include "y_absl/base/internal/raw_logging.h"
-#include "y_absl/base/port.h"
+#include "y_absl/base/dynamic_annotations.h"
+#include "y_absl/base/internal/raw_logging.h"
+#include "y_absl/base/port.h"
#ifndef AT_SYSINFO_EHDR
#define AT_SYSINFO_EHDR 33 // for crosstoolv10
@@ -55,7 +55,7 @@ using Elf64_auxv_t = Elf64_Auxinfo;
using Elf32_auxv_t = Elf32_Auxinfo;
#endif
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace debugging_internal {
@@ -186,6 +186,6 @@ int GetCPU() {
} // namespace debugging_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_HAVE_VDSO_SUPPORT
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/vdso_support.h b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/vdso_support.h
index c6888f7d46..c0064b9fe1 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/vdso_support.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal/vdso_support.h
@@ -41,8 +41,8 @@
#include <atomic>
-#include "y_absl/base/attributes.h"
-#include "y_absl/debugging/internal/elf_mem_image.h"
+#include "y_absl/base/attributes.h"
+#include "y_absl/debugging/internal/elf_mem_image.h"
#ifdef ABSL_HAVE_ELF_MEM_IMAGE
@@ -52,7 +52,7 @@
#define ABSL_HAVE_VDSO_SUPPORT 1
#endif
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace debugging_internal {
@@ -151,7 +151,7 @@ int GetCPU();
} // namespace debugging_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_HAVE_ELF_MEM_IMAGE
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/leak_check.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/leak_check.cc
index 236a644812..ae5cf79fe2 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/leak_check.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/leak_check.cc
@@ -17,11 +17,11 @@
// therefore Abseil code which depends on these functions is conditioned on the
// definition of LEAK_SANITIZER.
#include "y_absl/base/attributes.h"
-#include "y_absl/debugging/leak_check.h"
+#include "y_absl/debugging/leak_check.h"
#ifndef LEAK_SANITIZER
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
bool HaveLeakSanitizer() { return false; }
bool LeakCheckerIsActive() { return false; }
@@ -31,7 +31,7 @@ void UnRegisterLivePointers(const void*, size_t) { }
LeakCheckDisabler::LeakCheckDisabler() { }
LeakCheckDisabler::~LeakCheckDisabler() { }
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#else
@@ -41,7 +41,7 @@ ABSL_NAMESPACE_END
extern "C" ABSL_ATTRIBUTE_WEAK int __lsan_is_turned_off();
#endif
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
bool HaveLeakSanitizer() { return true; }
@@ -64,6 +64,6 @@ void UnRegisterLivePointers(const void* ptr, size_t size) {
LeakCheckDisabler::LeakCheckDisabler() { __lsan_disable(); }
LeakCheckDisabler::~LeakCheckDisabler() { __lsan_enable(); }
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // LEAK_SANITIZER
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/leak_check.h b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/leak_check.h
index d939637d6b..d69f08f248 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/leak_check.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/leak_check.h
@@ -34,7 +34,7 @@
#include "y_absl/base/config.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// HaveLeakSanitizer()
@@ -128,6 +128,6 @@ void RegisterLivePointers(const void* ptr, size_t size);
void UnRegisterLivePointers(const void* ptr, size_t size);
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_DEBUGGING_LEAK_CHECK_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/leak_check/ya.make b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/leak_check/ya.make
index a7f423e394..f22152ef8a 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/leak_check/ya.make
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/leak_check/ya.make
@@ -17,7 +17,7 @@ ADDINCL(
NO_COMPILER_WARNINGS()
-SRCDIR(contrib/restricted/abseil-cpp-tstring/y_absl/debugging)
+SRCDIR(contrib/restricted/abseil-cpp-tstring/y_absl/debugging)
SRCS(
leak_check.cc
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/leak_check_disable/ya.make b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/leak_check_disable/ya.make
index 269d307c17..41792f1bc6 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/leak_check_disable/ya.make
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/leak_check_disable/ya.make
@@ -17,7 +17,7 @@ ADDINCL(
NO_COMPILER_WARNINGS()
-SRCDIR(contrib/restricted/abseil-cpp-tstring/y_absl/debugging)
+SRCDIR(contrib/restricted/abseil-cpp-tstring/y_absl/debugging)
SRCS(
leak_check_disable.cc
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/stacktrace.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/stacktrace.cc
index 6de1f01a93..9263d6a2a8 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/stacktrace.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/stacktrace.cc
@@ -31,34 +31,34 @@
// trying to use the unwinder to instrument malloc().
//
// Note: if you add a new implementation here, make sure it works
-// correctly when y_absl::GetStackTrace() is called with max_depth == 0.
+// correctly when y_absl::GetStackTrace() is called with max_depth == 0.
// Some code may do that.
-#include "y_absl/debugging/stacktrace.h"
+#include "y_absl/debugging/stacktrace.h"
#include <atomic>
-#include "y_absl/base/attributes.h"
-#include "y_absl/base/port.h"
-#include "y_absl/debugging/internal/stacktrace_config.h"
+#include "y_absl/base/attributes.h"
+#include "y_absl/base/port.h"
+#include "y_absl/debugging/internal/stacktrace_config.h"
#if defined(ABSL_STACKTRACE_INL_HEADER)
#include ABSL_STACKTRACE_INL_HEADER
#else
# error Cannot calculate stack trace: will need to write for your environment
-# include "y_absl/debugging/internal/stacktrace_aarch64-inl.inc"
-# include "y_absl/debugging/internal/stacktrace_arm-inl.inc"
+# include "y_absl/debugging/internal/stacktrace_aarch64-inl.inc"
+# include "y_absl/debugging/internal/stacktrace_arm-inl.inc"
# include "y_absl/debugging/internal/stacktrace_emscripten-inl.inc"
-# include "y_absl/debugging/internal/stacktrace_generic-inl.inc"
-# include "y_absl/debugging/internal/stacktrace_powerpc-inl.inc"
+# include "y_absl/debugging/internal/stacktrace_generic-inl.inc"
+# include "y_absl/debugging/internal/stacktrace_powerpc-inl.inc"
# include "y_absl/debugging/internal/stacktrace_riscv-inl.inc"
-# include "y_absl/debugging/internal/stacktrace_unimplemented-inl.inc"
-# include "y_absl/debugging/internal/stacktrace_win32-inl.inc"
-# include "y_absl/debugging/internal/stacktrace_x86-inl.inc"
+# include "y_absl/debugging/internal/stacktrace_unimplemented-inl.inc"
+# include "y_absl/debugging/internal/stacktrace_win32-inl.inc"
+# include "y_absl/debugging/internal/stacktrace_x86-inl.inc"
#endif
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace {
@@ -139,4 +139,4 @@ int DefaultStackUnwinder(void** pcs, int* sizes, int depth, int skip,
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/stacktrace.h b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/stacktrace.h
index 10dd5a7315..cbd48b986b 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/stacktrace.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/stacktrace.h
@@ -33,7 +33,7 @@
#include "y_absl/base/config.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// GetStackFrames()
@@ -41,7 +41,7 @@ ABSL_NAMESPACE_BEGIN
// Records program counter values for up to `max_depth` frames, skipping the
// most recent `skip_count` stack frames, stores their corresponding values
// and sizes in `results` and `sizes` buffers, and returns the number of frames
-// stored. (Note that the frame generated for the `y_absl::GetStackFrames()`
+// stored. (Note that the frame generated for the `y_absl::GetStackFrames()`
// routine itself is also skipped.)
//
// Example:
@@ -51,7 +51,7 @@ ABSL_NAMESPACE_BEGIN
// bar() {
// void* result[10];
// int sizes[10];
-// int depth = y_absl::GetStackFrames(result, sizes, 10, 1);
+// int depth = y_absl::GetStackFrames(result, sizes, 10, 1);
// }
//
// The current stack frame would consist of three function calls: `bar()`,
@@ -87,7 +87,7 @@ extern int GetStackFrames(void** result, int* sizes, int max_depth,
// program counter values for up to `max_depth` frames, skipping the most recent
// `skip_count` stack frames, stores their corresponding values and sizes in
// `results` and `sizes` buffers, and returns the number of frames stored. (Note
-// that the frame generated for the `y_absl::GetStackFramesWithContext()` routine
+// that the frame generated for the `y_absl::GetStackFramesWithContext()` routine
// itself is also skipped.)
//
// The `uc` parameter, if non-null, should be a pointer to a `ucontext_t` value
@@ -111,7 +111,7 @@ extern int GetStackFramesWithContext(void** result, int* sizes, int max_depth,
// Records program counter values for up to `max_depth` frames, skipping the
// most recent `skip_count` stack frames, stores their corresponding values
// in `results`, and returns the number of frames
-// stored. Note that this function is similar to `y_absl::GetStackFrames()`
+// stored. Note that this function is similar to `y_absl::GetStackFrames()`
// except that it returns the stack trace only, and not stack frame sizes.
//
// Example:
@@ -120,7 +120,7 @@ extern int GetStackFramesWithContext(void** result, int* sizes, int max_depth,
// foo() { bar(); }
// bar() {
// void* result[10];
-// int depth = y_absl::GetStackTrace(result, 10, 1);
+// int depth = y_absl::GetStackTrace(result, 10, 1);
// }
//
// This produces:
@@ -138,7 +138,7 @@ extern int GetStackTrace(void** result, int max_depth, int skip_count);
// program counter values for up to `max_depth` frames, skipping the most recent
// `skip_count` stack frames, stores their corresponding values in `results`,
// and returns the number of frames stored. (Note that the frame generated for
-// the `y_absl::GetStackFramesWithContext()` routine itself is also skipped.)
+// the `y_absl::GetStackFramesWithContext()` routine itself is also skipped.)
//
// The `uc` parameter, if non-null, should be a pointer to a `ucontext_t` value
// passed to a signal handler registered via the `sa_sigaction` field of a
@@ -163,7 +163,7 @@ extern int GetStackTraceWithContext(void** result, int max_depth,
// GetStack{Frames,Trace}{,WithContext}() functions above.
//
// The arguments passed to the unwinder function will match the
-// arguments passed to `y_absl::GetStackFramesWithContext()` except that sizes
+// arguments passed to `y_absl::GetStackFramesWithContext()` except that sizes
// will be non-null iff the caller is interested in frame sizes.
//
// If unwinder is set to null, we revert to the default stack-tracing behavior.
@@ -172,9 +172,9 @@ extern int GetStackTraceWithContext(void** result, int max_depth,
// WARNING
// *****************************************************************************
//
-// y_absl::SetStackUnwinder is not suitable for general purpose use. It is
+// y_absl::SetStackUnwinder is not suitable for general purpose use. It is
// provided for custom runtimes.
-// Some things to watch out for when calling `y_absl::SetStackUnwinder()`:
+// Some things to watch out for when calling `y_absl::SetStackUnwinder()`:
//
// (a) The unwinder may be called from within signal handlers and
// therefore must be async-signal-safe.
@@ -207,7 +207,7 @@ extern void SetStackUnwinder(int (*unwinder)(void** pcs, int* sizes,
// be null when called.
//
// The semantics are the same as the corresponding `GetStack*()` function in the
-// case where `y_absl::SetStackUnwinder()` was never called. Equivalents are:
+// case where `y_absl::SetStackUnwinder()` was never called. Equivalents are:
//
// null sizes | non-nullptr sizes
// |==========================================================|
@@ -226,6 +226,6 @@ namespace debugging_internal {
extern bool StackTraceWorksForTest();
} // namespace debugging_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_DEBUGGING_STACKTRACE_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/stacktrace/ya.make b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/stacktrace/ya.make
index 2337a8c6c1..a56bdc8a4c 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/stacktrace/ya.make
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/stacktrace/ya.make
@@ -12,9 +12,9 @@ OWNER(
LICENSE(Apache-2.0)
PEERDIR(
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
- contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
- contrib/restricted/abseil-cpp-tstring/y_absl/debugging
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
+ contrib/restricted/abseil-cpp-tstring/y_absl/debugging
)
ADDINCL(
@@ -23,7 +23,7 @@ ADDINCL(
NO_COMPILER_WARNINGS()
-SRCDIR(contrib/restricted/abseil-cpp-tstring/y_absl/debugging)
+SRCDIR(contrib/restricted/abseil-cpp-tstring/y_absl/debugging)
SRCS(
stacktrace.cc
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize.cc
index f2722db9c8..88c92a19ea 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize.cc
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/debugging/symbolize.h"
+#include "y_absl/debugging/symbolize.h"
#ifdef _WIN32
#include <winapifamily.h>
@@ -24,15 +24,15 @@
#endif
#if defined(ABSL_INTERNAL_HAVE_ELF_SYMBOLIZE)
-#include "y_absl/debugging/symbolize_elf.inc"
+#include "y_absl/debugging/symbolize_elf.inc"
#elif defined(ABSL_INTERNAL_HAVE_SYMBOLIZE_WIN32)
// The Windows Symbolizer only works if PDB files containing the debug info
// are available to the program at runtime.
-#include "y_absl/debugging/symbolize_win32.inc"
+#include "y_absl/debugging/symbolize_win32.inc"
#elif defined(__APPLE__)
#include "y_absl/debugging/symbolize_darwin.inc"
#elif defined(__EMSCRIPTEN__)
#include "y_absl/debugging/symbolize_emscripten.inc"
#else
-#include "y_absl/debugging/symbolize_unimplemented.inc"
+#include "y_absl/debugging/symbolize_unimplemented.inc"
#endif
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize.h b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize.h
index f8eaff7527..2a99f65c83 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize.h
@@ -25,7 +25,7 @@
// * Implicitly, through the installation of an Abseil failure signal handler.
// (See failure_signal_handler.h for more information.)
// * By calling `Symbolize()` directly on a program counter you obtain through
-// `y_absl::GetStackTrace()` or `y_absl::GetStackFrames()`. (See stacktrace.h
+// `y_absl::GetStackTrace()` or `y_absl::GetStackFrames()`. (See stacktrace.h
// for more information.
// * By calling `Symbolize()` directly on a program counter you obtain through
// other means (which would be platform-dependent).
@@ -38,11 +38,11 @@
//
// int main(int argc, char** argv) {
// // Initialize the Symbolizer before installing the failure signal handler
-// y_absl::InitializeSymbolizer(argv[0]);
+// y_absl::InitializeSymbolizer(argv[0]);
//
// // Now you may install the failure signal handler
-// y_absl::FailureSignalHandlerOptions options;
-// y_absl::InstallFailureSignalHandler(options);
+// y_absl::FailureSignalHandlerOptions options;
+// y_absl::InstallFailureSignalHandler(options);
//
// // Start running your main program
// ...
@@ -52,9 +52,9 @@
#ifndef ABSL_DEBUGGING_SYMBOLIZE_H_
#define ABSL_DEBUGGING_SYMBOLIZE_H_
-#include "y_absl/debugging/internal/symbolize.h"
+#include "y_absl/debugging/internal/symbolize.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// InitializeSymbolizer()
@@ -67,7 +67,7 @@ ABSL_NAMESPACE_BEGIN
// Example:
//
// int main(int argc, char *argv[]) {
-// y_absl::InitializeSymbolizer(argv[0]);
+// y_absl::InitializeSymbolizer(argv[0]);
// // Now you can use the symbolizer
// }
void InitializeSymbolizer(const char* argv0);
@@ -86,7 +86,7 @@ void InitializeSymbolizer(const char* argv0);
// static void DumpPCAndSymbol(void *pc) {
// char tmp[1024];
// const char *symbol = "(unknown)";
-// if (y_absl::Symbolize(pc, tmp, sizeof(tmp))) {
+// if (y_absl::Symbolize(pc, tmp, sizeof(tmp))) {
// symbol = tmp;
// }
// y_absl::PrintF("%p %s\n", pc, symbol);
@@ -94,6 +94,6 @@ void InitializeSymbolizer(const char* argv0);
bool Symbolize(const void *pc, char *out, int out_size);
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_DEBUGGING_SYMBOLIZE_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize/ya.make b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize/ya.make
index f500ff06c8..58f9d70682 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize/ya.make
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize/ya.make
@@ -12,14 +12,14 @@ OWNER(
LICENSE(Apache-2.0)
PEERDIR(
- contrib/restricted/abseil-cpp-tstring/y_absl/base
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/low_level_alloc
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait
+ contrib/restricted/abseil-cpp-tstring/y_absl/base
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/low_level_alloc
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait
contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/throw_delegate
- contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
- contrib/restricted/abseil-cpp-tstring/y_absl/debugging
- contrib/restricted/abseil-cpp-tstring/y_absl/demangle
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
+ contrib/restricted/abseil-cpp-tstring/y_absl/debugging
+ contrib/restricted/abseil-cpp-tstring/y_absl/demangle
contrib/restricted/abseil-cpp-tstring/y_absl/numeric
contrib/restricted/abseil-cpp-tstring/y_absl/strings
contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/absl_strings_internal
@@ -31,7 +31,7 @@ ADDINCL(
NO_COMPILER_WARNINGS()
-SRCDIR(contrib/restricted/abseil-cpp-tstring/y_absl/debugging)
+SRCDIR(contrib/restricted/abseil-cpp-tstring/y_absl/debugging)
SRCS(
symbolize.cc
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize_elf.inc b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize_elf.inc
index 515f825981..18297405e3 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize_elf.inc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize_elf.inc
@@ -67,21 +67,21 @@
#include <cstdlib>
#include <cstring>
-#include "y_absl/base/casts.h"
-#include "y_absl/base/dynamic_annotations.h"
-#include "y_absl/base/internal/low_level_alloc.h"
-#include "y_absl/base/internal/raw_logging.h"
-#include "y_absl/base/internal/spinlock.h"
-#include "y_absl/base/port.h"
-#include "y_absl/debugging/internal/demangle.h"
-#include "y_absl/debugging/internal/vdso_support.h"
+#include "y_absl/base/casts.h"
+#include "y_absl/base/dynamic_annotations.h"
+#include "y_absl/base/internal/low_level_alloc.h"
+#include "y_absl/base/internal/raw_logging.h"
+#include "y_absl/base/internal/spinlock.h"
+#include "y_absl/base/port.h"
+#include "y_absl/debugging/internal/demangle.h"
+#include "y_absl/debugging/internal/vdso_support.h"
#include "y_absl/strings/string_view.h"
#if defined(__FreeBSD__) && !defined(ElfW)
#define ElfW(x) __ElfN(x)
#endif
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// Value of argv[0]. Used by MaybeInitializeObjFile().
@@ -1564,7 +1564,7 @@ bool Symbolize(const void *pc, char *out, int out_size) {
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
extern "C" bool YAbslInternalGetFileMappingHint(const void **start,
const void **end, uint64_t *offset,
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize_unimplemented.inc b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize_unimplemented.inc
index 779e171dcd..4e55ed122f 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize_unimplemented.inc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize_unimplemented.inc
@@ -14,9 +14,9 @@
#include <cstdint>
-#include "y_absl/base/internal/raw_logging.h"
+#include "y_absl/base/internal/raw_logging.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace debugging_internal {
@@ -37,4 +37,4 @@ void InitializeSymbolizer(const char*) {}
bool Symbolize(const void *, char *, int) { return false; }
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize_win32.inc b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize_win32.inc
index dacf49ea7a..81e0473f88 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize_win32.inc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize_win32.inc
@@ -28,9 +28,9 @@
#include <algorithm>
#include <cstring>
-#include "y_absl/base/internal/raw_logging.h"
+#include "y_absl/base/internal/raw_logging.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
static HANDLE process = NULL;
@@ -78,4 +78,4 @@ bool Symbolize(const void* pc, char* out, int out_size) {
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/ya.make b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/ya.make
index 521c9e76c0..d768f195c2 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/ya.make
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/debugging/ya.make
@@ -12,8 +12,8 @@ LICENSE(Apache-2.0)
LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
PEERDIR(
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
- contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
)
ADDINCL(
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/demangle/ya.make b/contrib/restricted/abseil-cpp-tstring/y_absl/demangle/ya.make
index 04af5c3bd3..a1abc9f615 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/demangle/ya.make
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/demangle/ya.make
@@ -12,10 +12,10 @@ OWNER(
LICENSE(Apache-2.0)
PEERDIR(
- contrib/restricted/abseil-cpp-tstring/y_absl/base
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait
- contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
+ contrib/restricted/abseil-cpp-tstring/y_absl/base
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
)
ADDINCL(
@@ -24,7 +24,7 @@ ADDINCL(
NO_COMPILER_WARNINGS()
-SRCDIR(contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal)
+SRCDIR(contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal)
SRCS(
demangle.cc
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/functional/function_ref.h b/contrib/restricted/abseil-cpp-tstring/y_absl/functional/function_ref.h
index 718638dac4..6ae4c63c9e 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/functional/function_ref.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/functional/function_ref.h
@@ -16,15 +16,15 @@
// File: function_ref.h
// -----------------------------------------------------------------------------
//
-// This header file defines the `y_absl::FunctionRef` type for holding a
+// This header file defines the `y_absl::FunctionRef` type for holding a
// non-owning reference to an object of any invocable type. This function
// reference is typically most useful as a type-erased argument type for
// accepting function types that neither take ownership nor copy the type; using
// the reference type in this case avoids a copy and an allocation. Best
// practices of other non-owning reference-like objects (such as
-// `y_absl::string_view`) apply here.
+// `y_absl::string_view`) apply here.
//
-// An `y_absl::FunctionRef` is similar in usage to a `std::function` but has the
+// An `y_absl::FunctionRef` is similar in usage to a `std::function` but has the
// following differences:
//
// * It doesn't own the underlying object.
@@ -33,10 +33,10 @@
// * It's much faster and cheaper to construct.
// * It's trivially copyable and destructable.
//
-// Generally, `y_absl::FunctionRef` should not be used as a return value, data
+// Generally, `y_absl::FunctionRef` should not be used as a return value, data
// member, or to initialize a `std::function`. Such usages will often lead to
// problematic lifetime issues. Once you convert something to an
-// `y_absl::FunctionRef` you cannot make a deep copy later.
+// `y_absl::FunctionRef` you cannot make a deep copy later.
//
// This class is suitable for use wherever a "const std::function<>&"
// would be used without making a copy. ForEach functions and other versions of
@@ -51,10 +51,10 @@
#include <type_traits>
#include "y_absl/base/attributes.h"
-#include "y_absl/functional/internal/function_ref.h"
-#include "y_absl/meta/type_traits.h"
+#include "y_absl/functional/internal/function_ref.h"
+#include "y_absl/meta/type_traits.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// FunctionRef
@@ -66,8 +66,8 @@ class FunctionRef;
// FunctionRef
//
-// An `y_absl::FunctionRef` is a lightweight wrapper to any invokable object with
-// a compatible signature. Generally, an `y_absl::FunctionRef` should only be used
+// An `y_absl::FunctionRef` is a lightweight wrapper to any invokable object with
+// a compatible signature. Generally, an `y_absl::FunctionRef` should only be used
// as an argument type and should be preferred as an argument over a const
// reference to a `std::function`.
//
@@ -75,15 +75,15 @@ class FunctionRef;
//
// // The following function takes a function callback by const reference
// bool Visitor(const std::function<void(my_proto&,
-// y_absl::string_view)>& callback);
+// y_absl::string_view)>& callback);
//
// // Assuming that the function is not stored or otherwise copied, it can be
-// // replaced by an `y_absl::FunctionRef`:
-// bool Visitor(y_absl::FunctionRef<void(my_proto&, y_absl::string_view)>
+// // replaced by an `y_absl::FunctionRef`:
+// bool Visitor(y_absl::FunctionRef<void(my_proto&, y_absl::string_view)>
// callback);
//
-// Note: the assignment operator within an `y_absl::FunctionRef` is intentionally
-// deleted to prevent misuse; because the `y_absl::FunctionRef` does not own the
+// Note: the assignment operator within an `y_absl::FunctionRef` is intentionally
+// deleted to prevent misuse; because the `y_absl::FunctionRef` does not own the
// underlying type, assignment likely indicates misuse.
template <typename R, typename... Args>
class FunctionRef<R(Args...)> {
@@ -101,8 +101,8 @@ class FunctionRef<R(Args...)> {
template <typename F, typename = EnableIfCompatible<const F&>>
// NOLINTNEXTLINE(runtime/explicit)
FunctionRef(const F& f ABSL_ATTRIBUTE_LIFETIME_BOUND)
- : invoker_(&y_absl::functional_internal::InvokeObject<F, R, Args...>) {
- y_absl::functional_internal::AssertNonNull(f);
+ : invoker_(&y_absl::functional_internal::InvokeObject<F, R, Args...>) {
+ y_absl::functional_internal::AssertNonNull(f);
ptr_.obj = &f;
}
@@ -114,9 +114,9 @@ class FunctionRef<R(Args...)> {
// functions can decay to function pointers implicitly.
template <
typename F, typename = EnableIfCompatible<F*>,
- y_absl::functional_internal::EnableIf<y_absl::is_function<F>::value> = 0>
+ y_absl::functional_internal::EnableIf<y_absl::is_function<F>::value> = 0>
FunctionRef(F* f) // NOLINT(runtime/explicit)
- : invoker_(&y_absl::functional_internal::InvokeFunction<F*, R, Args...>) {
+ : invoker_(&y_absl::functional_internal::InvokeFunction<F*, R, Args...>) {
assert(f != nullptr);
ptr_.fun = reinterpret_cast<decltype(ptr_.fun)>(f);
}
@@ -132,11 +132,11 @@ class FunctionRef<R(Args...)> {
}
private:
- y_absl::functional_internal::VoidPtr ptr_;
- y_absl::functional_internal::Invoker<R, Args...> invoker_;
+ y_absl::functional_internal::VoidPtr ptr_;
+ y_absl::functional_internal::Invoker<R, Args...> invoker_;
};
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_FUNCTIONAL_FUNCTION_REF_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/functional/internal/function_ref.h b/contrib/restricted/abseil-cpp-tstring/y_absl/functional/internal/function_ref.h
index 8a1193dd0f..1ba81ee96a 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/functional/internal/function_ref.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/functional/internal/function_ref.h
@@ -19,10 +19,10 @@
#include <functional>
#include <type_traits>
-#include "y_absl/base/internal/invoke.h"
-#include "y_absl/meta/type_traits.h"
+#include "y_absl/base/internal/invoke.h"
+#include "y_absl/meta/type_traits.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace functional_internal {
@@ -43,8 +43,8 @@ union VoidPtr {
template <typename T>
constexpr bool PassByValue() {
return !std::is_lvalue_reference<T>::value &&
- y_absl::is_trivially_copy_constructible<T>::value &&
- y_absl::is_trivially_copy_assignable<
+ y_absl::is_trivially_copy_constructible<T>::value &&
+ y_absl::is_trivially_copy_assignable<
typename std::remove_cv<T>::type>::value &&
std::is_trivially_destructible<T>::value &&
sizeof(T) <= 2 * sizeof(void*);
@@ -101,6 +101,6 @@ using EnableIf = typename ::std::enable_if<C, int>::type;
} // namespace functional_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_FUNCTIONAL_INTERNAL_FUNCTION_REF_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/hash/hash.h b/contrib/restricted/abseil-cpp-tstring/y_absl/hash/hash.h
index cea1fa5ba5..1e93ee96d9 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/hash/hash.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/hash/hash.h
@@ -19,8 +19,8 @@
// This header file defines the Abseil `hash` library and the Abseil hashing
// framework. This framework consists of the following:
//
-// * The `y_absl::Hash` functor, which is used to invoke the hasher within the
-// Abseil hashing framework. `y_absl::Hash<T>` supports most basic types and
+// * The `y_absl::Hash` functor, which is used to invoke the hasher within the
+// Abseil hashing framework. `y_absl::Hash<T>` supports most basic types and
// a number of Abseil types out of the box.
// * `AbslHashValue`, an extension point that allows you to extend types to
// support Abseil hashing without requiring you to define a hashing
@@ -34,7 +34,7 @@
// provides most of its utility by abstracting away the hash algorithm (and its
// implementation) entirely. Instead, a type invokes the Abseil hashing
// framework by simply combining its state with the state of known, hashable
-// types. Hashing of that combined state is separately done by `y_absl::Hash`.
+// types. Hashing of that combined state is separately done by `y_absl::Hash`.
//
// One should assume that a hash algorithm is chosen randomly at the start of
// each process. E.g., `y_absl::Hash<int>{}(9)` in one process and
@@ -68,23 +68,23 @@
// ...
// };
//
-// For more information, see Adding Type Support to `y_absl::Hash` below.
+// For more information, see Adding Type Support to `y_absl::Hash` below.
//
#ifndef ABSL_HASH_HASH_H_
#define ABSL_HASH_HASH_H_
#include <tuple>
-#include "y_absl/hash/internal/hash.h"
+#include "y_absl/hash/internal/hash.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// -----------------------------------------------------------------------------
-// `y_absl::Hash`
+// `y_absl::Hash`
// -----------------------------------------------------------------------------
//
-// `y_absl::Hash<T>` is a convenient general-purpose hash functor for any type `T`
+// `y_absl::Hash<T>` is a convenient general-purpose hash functor for any type `T`
// satisfying any of the following conditions (in order):
//
// * T is an arithmetic or pointer type
@@ -92,7 +92,7 @@ ABSL_NAMESPACE_BEGIN
// hash state `H`.
// - T defines a specialization of `std::hash<T>`
//
-// `y_absl::Hash` intrinsically supports the following types:
+// `y_absl::Hash` intrinsically supports the following types:
//
// * All integral types (including bool)
// * All enum types
@@ -103,32 +103,32 @@ ABSL_NAMESPACE_BEGIN
// * std::unique_ptr and std::shared_ptr
// * All string-like types including:
// * y_absl::Cord
-// * TString
+// * TString
// * std::string_view (as well as any instance of std::basic_string that
// uses char and std::char_traits)
// * All the standard sequence containers (provided the elements are hashable)
// * All the standard ordered associative containers (provided the elements are
// hashable)
-// * y_absl types such as the following:
-// * y_absl::string_view
-// * y_absl::InlinedVector
-// * y_absl::FixedArray
-// * y_absl::uint128
-// * y_absl::Time, y_absl::Duration, and y_absl::TimeZone
+// * y_absl types such as the following:
+// * y_absl::string_view
+// * y_absl::InlinedVector
+// * y_absl::FixedArray
+// * y_absl::uint128
+// * y_absl::Time, y_absl::Duration, and y_absl::TimeZone
//
// Note: the list above is not meant to be exhaustive. Additional type support
// may be added, in which case the above list will be updated.
//
// -----------------------------------------------------------------------------
-// y_absl::Hash Invocation Evaluation
+// y_absl::Hash Invocation Evaluation
// -----------------------------------------------------------------------------
//
-// When invoked, `y_absl::Hash<T>` searches for supplied hash functions in the
+// When invoked, `y_absl::Hash<T>` searches for supplied hash functions in the
// following order:
//
// * Natively supported types out of the box (see above)
// * Types for which an `AbslHashValue()` overload is provided (such as
-// user-defined types). See "Adding Type Support to `y_absl::Hash`" below.
+// user-defined types). See "Adding Type Support to `y_absl::Hash`" below.
// * Types which define a `std::hash<T>` specialization
//
// The fallback to legacy hash functions exists mainly for backwards
@@ -139,17 +139,17 @@ ABSL_NAMESPACE_BEGIN
// The Hash State Concept, and using `HashState` for Type Erasure
// -----------------------------------------------------------------------------
//
-// The `y_absl::Hash` framework relies on the Concept of a "hash state." Such a
+// The `y_absl::Hash` framework relies on the Concept of a "hash state." Such a
// hash state is used in several places:
//
-// * Within existing implementations of `y_absl::Hash<T>` to store the hashed
+// * Within existing implementations of `y_absl::Hash<T>` to store the hashed
// state of an object. Note that it is up to the implementation how it stores
// such state. A hash table, for example, may mix the state to produce an
// integer value; a testing framework may simply hold a vector of that state.
// * Within implementations of `AbslHashValue()` used to extend user-defined
-// types. (See "Adding Type Support to y_absl::Hash" below.)
+// types. (See "Adding Type Support to y_absl::Hash" below.)
// * Inside a `HashState`, providing type erasure for the concept of a hash
-// state, which you can use to extend the `y_absl::Hash` framework for types
+// state, which you can use to extend the `y_absl::Hash` framework for types
// that are otherwise difficult to extend using `AbslHashValue()`. (See the
// `HashState` class below.)
//
@@ -188,7 +188,7 @@ ABSL_NAMESPACE_BEGIN
// loop instead.
//
// -----------------------------------------------------------------------------
-// Adding Type Support to `y_absl::Hash`
+// Adding Type Support to `y_absl::Hash`
// -----------------------------------------------------------------------------
//
// To add support for your user-defined type, add a proper `AbslHashValue()`
@@ -210,11 +210,11 @@ ABSL_NAMESPACE_BEGIN
// file and namespace as said type. The proper `AbslHashValue` implementation
// for a given type will be discovered via ADL.
//
-// Note: unlike `std::hash', `y_absl::Hash` should never be specialized. It must
+// Note: unlike `std::hash', `y_absl::Hash` should never be specialized. It must
// only be extended by adding `AbslHashValue()` overloads.
//
template <typename T>
-using Hash = y_absl::hash_internal::Hash<T>;
+using Hash = y_absl::hash_internal::Hash<T>;
// HashOf
//
@@ -250,7 +250,7 @@ size_t HashOf(const Types&... values) {
// provided by the wrapped class.
//
// Users of this class should still define a template `AbslHashValue` function,
-// but can use `y_absl::HashState::Create(&state)` to erase the type of the hash
+// but can use `y_absl::HashState::Create(&state)` to erase the type of the hash
// state and dispatch to their private hashing logic.
//
// This state can be used like any other hash state. In particular, you can call
@@ -263,20 +263,20 @@ size_t HashOf(const Types&... values) {
// template <typename H>
// friend H AbslHashValue(H state, const Interface& value) {
// state = H::combine(std::move(state), std::type_index(typeid(*this)));
-// value.HashValue(y_absl::HashState::Create(&state));
+// value.HashValue(y_absl::HashState::Create(&state));
// return state;
// }
// private:
-// virtual void HashValue(y_absl::HashState state) const = 0;
+// virtual void HashValue(y_absl::HashState state) const = 0;
// };
//
// class Impl : Interface {
// private:
-// void HashValue(y_absl::HashState state) const override {
-// y_absl::HashState::combine(std::move(state), v1_, v2_);
+// void HashValue(y_absl::HashState state) const override {
+// y_absl::HashState::combine(std::move(state), v1_, v2_);
// }
// int v1_;
-// TString v2_;
+// TString v2_;
// };
class HashState : public hash_internal::HashStateBase<HashState> {
public:
@@ -342,6 +342,6 @@ class HashState : public hash_internal::HashStateBase<HashState> {
};
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_HASH_HASH_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/hash/hash_testing.h b/contrib/restricted/abseil-cpp-tstring/y_absl/hash/hash_testing.h
index d32e21ccd6..2f22d37039 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/hash/hash_testing.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/hash/hash_testing.h
@@ -22,15 +22,15 @@
#include "gmock/gmock.h"
#include "gtest/gtest.h"
-#include "y_absl/hash/internal/spy_hash_state.h"
-#include "y_absl/meta/type_traits.h"
-#include "y_absl/strings/str_cat.h"
-#include "y_absl/types/variant.h"
+#include "y_absl/hash/internal/spy_hash_state.h"
+#include "y_absl/meta/type_traits.h"
+#include "y_absl/strings/str_cat.h"
+#include "y_absl/types/variant.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
-// Run the y_absl::Hash algorithm over all the elements passed in and verify that
+// Run the y_absl::Hash algorithm over all the elements passed in and verify that
// their hash expansion is congruent with their `==` operator.
//
// It is used in conjunction with EXPECT_TRUE. Failures will output information
@@ -39,17 +39,17 @@ ABSL_NAMESPACE_BEGIN
// Users should pass a collection of types as either an initializer list or a
// container of cases.
//
-// EXPECT_TRUE(y_absl::VerifyTypeImplementsAbslHashCorrectly(
+// EXPECT_TRUE(y_absl::VerifyTypeImplementsAbslHashCorrectly(
// {v1, v2, ..., vN}));
//
// std::vector<MyType> cases;
// // Fill cases...
-// EXPECT_TRUE(y_absl::VerifyTypeImplementsAbslHashCorrectly(cases));
+// EXPECT_TRUE(y_absl::VerifyTypeImplementsAbslHashCorrectly(cases));
//
// Users can pass a variety of types for testing heterogeneous lookup with
// `std::make_tuple`:
//
-// EXPECT_TRUE(y_absl::VerifyTypeImplementsAbslHashCorrectly(
+// EXPECT_TRUE(y_absl::VerifyTypeImplementsAbslHashCorrectly(
// std::make_tuple(v1, v2, ..., vN)));
//
//
@@ -63,7 +63,7 @@ ABSL_NAMESPACE_BEGIN
//
// Usage:
//
-// EXPECT_TRUE(y_absl::VerifyTypeImplementsAbslHashCorrectly(
+// EXPECT_TRUE(y_absl::VerifyTypeImplementsAbslHashCorrectly(
// std::make_tuple(v1, v2, ..., vN), MyCustomEq{}));
//
// It checks the following requirements:
@@ -128,7 +128,7 @@ ABSL_NAMESPACE_BEGIN
// }
// friend bool operator==(Bad4 x, Bad4 y) {
// // Compare two ranges for equality. C++14 code can instead use std::equal.
-// return y_absl::equal(x.p, x.p + x.size, y.p, y.p + y.size);
+// return y_absl::equal(x.p, x.p + x.size, y.p, y.p + y.size);
// }
// };
//
@@ -162,8 +162,8 @@ namespace hash_internal {
struct PrintVisitor {
size_t index;
template <typename T>
- TString operator()(const T* value) const {
- return y_absl::StrCat("#", index, "(", testing::PrintToString(*value), ")");
+ TString operator()(const T* value) const {
+ return y_absl::StrCat("#", index, "(", testing::PrintToString(*value), ")");
}
};
@@ -191,10 +191,10 @@ VerifyTypeImplementsAbslHashCorrectly(const Container& values, Eq equals) {
struct Info {
const V& value;
size_t index;
- TString ToString() const {
- return y_absl::visit(PrintVisitor{index}, value);
+ TString ToString() const {
+ return y_absl::visit(PrintVisitor{index}, value);
}
- SpyHashState expand() const { return y_absl::visit(ExpandVisitor{}, value); }
+ SpyHashState expand() const { return y_absl::visit(ExpandVisitor{}, value); }
};
using EqClass = std::vector<Info>;
@@ -205,7 +205,7 @@ VerifyTypeImplementsAbslHashCorrectly(const Container& values, Eq equals) {
for (const auto& value : values) {
EqClass* c = nullptr;
for (auto& eqclass : classes) {
- if (y_absl::visit(EqVisitor<Eq>{equals}, value, eqclass[0].value)) {
+ if (y_absl::visit(EqVisitor<Eq>{equals}, value, eqclass[0].value)) {
c = &eqclass;
break;
}
@@ -297,11 +297,11 @@ struct MakeTypeSet<T, Ts...> : MakeTypeSet<Ts...>::template Insert<T>::type {};
template <typename... T>
using VariantForTypes = typename MakeTypeSet<
- const typename std::decay<T>::type*...>::template apply<y_absl::variant>;
+ const typename std::decay<T>::type*...>::template apply<y_absl::variant>;
template <typename Container>
struct ContainerAsVector {
- using V = y_absl::variant<const typename Container::value_type*>;
+ using V = y_absl::variant<const typename Container::value_type*>;
using Out = std::vector<V>;
static Out Do(const Container& values) {
@@ -317,12 +317,12 @@ struct ContainerAsVector<std::tuple<T...>> {
using Out = std::vector<V>;
template <size_t... I>
- static Out DoImpl(const std::tuple<T...>& tuple, y_absl::index_sequence<I...>) {
+ static Out DoImpl(const std::tuple<T...>& tuple, y_absl::index_sequence<I...>) {
return Out{&std::get<I>(tuple)...};
}
static Out Do(const std::tuple<T...>& values) {
- return DoImpl(values, y_absl::index_sequence_for<T...>());
+ return DoImpl(values, y_absl::index_sequence_for<T...>());
}
};
@@ -373,6 +373,6 @@ VerifyTypeImplementsAbslHashCorrectly(std::initializer_list<T> values,
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_HASH_HASH_TESTING_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/hash/internal/city.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/hash/internal/city.cc
index 9416ed5c86..5f1b655e7e 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/hash/internal/city.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/hash/internal/city.cc
@@ -19,23 +19,23 @@
// possible hash functions, by using SIMD instructions, or by
// compromising on hash quality.
-#include "y_absl/hash/internal/city.h"
+#include "y_absl/hash/internal/city.h"
#include <string.h> // for memcpy and memset
#include <algorithm>
-#include "y_absl/base/config.h"
-#include "y_absl/base/internal/endian.h"
-#include "y_absl/base/internal/unaligned_access.h"
-#include "y_absl/base/optimization.h"
+#include "y_absl/base/config.h"
+#include "y_absl/base/internal/endian.h"
+#include "y_absl/base/internal/unaligned_access.h"
+#include "y_absl/base/optimization.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace hash_internal {
#ifdef ABSL_IS_BIG_ENDIAN
-#define uint32_in_expected_order(x) (y_absl::gbswap_32(x))
-#define uint64_in_expected_order(x) (y_absl::gbswap_64(x))
+#define uint32_in_expected_order(x) (y_absl::gbswap_32(x))
+#define uint64_in_expected_order(x) (y_absl::gbswap_64(x))
#else
#define uint32_in_expected_order(x) (x)
#define uint64_in_expected_order(x) (x)
@@ -171,9 +171,9 @@ uint32_t CityHash32(const char *s, size_t len) {
h = Rotate32(h, 19);
h = h * 5 + 0xe6546b64;
g ^= b4;
- g = y_absl::gbswap_32(g) * 5;
+ g = y_absl::gbswap_32(g) * 5;
h += b4 * 5;
- h = y_absl::gbswap_32(h);
+ h = y_absl::gbswap_32(h);
f += b0;
PERMUTE3(f, h, g);
s += 20;
@@ -286,11 +286,11 @@ static uint64_t HashLen33to64(const char *s, size_t len) {
uint64_t h = Fetch64(s + len - 16) * mul;
uint64_t u = Rotate(a + g, 43) + (Rotate(b, 30) + c) * 9;
uint64_t v = ((a + g) ^ d) + f + 1;
- uint64_t w = y_absl::gbswap_64((u + v) * mul) + h;
+ uint64_t w = y_absl::gbswap_64((u + v) * mul) + h;
uint64_t x = Rotate(e + f, 42) + c;
- uint64_t y = (y_absl::gbswap_64((v + w) * mul) + g) * mul;
+ uint64_t y = (y_absl::gbswap_64((v + w) * mul) + g) * mul;
uint64_t z = e + f + c;
- a = y_absl::gbswap_64((x + z) * mul + y) + b;
+ a = y_absl::gbswap_64((x + z) * mul + y) + b;
b = ShiftMix((z + a) * mul + d + h) * mul;
return b + x;
}
@@ -346,4 +346,4 @@ uint64_t CityHash64WithSeeds(const char *s, size_t len, uint64_t seed0,
} // namespace hash_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/hash/internal/city.h b/contrib/restricted/abseil-cpp-tstring/y_absl/hash/internal/city.h
index c506887906..d2b32f0068 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/hash/internal/city.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/hash/internal/city.h
@@ -52,7 +52,7 @@
#include "y_absl/base/config.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace hash_internal {
@@ -73,6 +73,6 @@ uint32_t CityHash32(const char *s, size_t len);
} // namespace hash_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_HASH_INTERNAL_CITY_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/hash/internal/hash.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/hash/internal/hash.cc
index f3feb09171..fe075de43a 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/hash/internal/hash.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/hash/internal/hash.cc
@@ -12,9 +12,9 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/hash/internal/hash.h"
+#include "y_absl/hash/internal/hash.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace hash_internal {
@@ -66,4 +66,4 @@ uint64_t MixingHashState::LowLevelHashImpl(const unsigned char* data,
} // namespace hash_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/hash/internal/hash.h b/contrib/restricted/abseil-cpp-tstring/y_absl/hash/internal/hash.h
index 531ea87573..fcbe43accd 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/hash/internal/hash.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/hash/internal/hash.h
@@ -41,18 +41,18 @@
#include "y_absl/base/config.h"
#include "y_absl/base/internal/unaligned_access.h"
-#include "y_absl/base/port.h"
-#include "y_absl/container/fixed_array.h"
+#include "y_absl/base/port.h"
+#include "y_absl/container/fixed_array.h"
#include "y_absl/hash/internal/city.h"
#include "y_absl/hash/internal/low_level_hash.h"
-#include "y_absl/meta/type_traits.h"
-#include "y_absl/numeric/int128.h"
-#include "y_absl/strings/string_view.h"
-#include "y_absl/types/optional.h"
-#include "y_absl/types/variant.h"
-#include "y_absl/utility/utility.h"
-
-namespace y_absl {
+#include "y_absl/meta/type_traits.h"
+#include "y_absl/numeric/int128.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+#include "y_absl/types/variant.h"
+#include "y_absl/utility/utility.h"
+
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace hash_internal {
@@ -120,7 +120,7 @@ class PiecewiseCombiner {
// A hash state object represents an intermediate state in the computation
// of an unspecified hash algorithm. `HashStateBase` provides a CRTP style
// base class for hash state implementations. Developers adding type support
-// for `y_absl::Hash` should not rely on any parts of the state object other than
+// for `y_absl::Hash` should not rely on any parts of the state object other than
// the following member functions:
//
// * HashStateBase::combine()
@@ -352,7 +352,7 @@ H AbslHashValue(H hash_state, std::nullptr_t) {
// is_hashable()
//
-// Trait class which returns true if T is hashable by the y_absl::Hash framework.
+// Trait class which returns true if T is hashable by the y_absl::Hash framework.
// Used for the AbslHashValue implementations for composite types below.
template <typename T>
struct is_hashable;
@@ -370,7 +370,7 @@ AbslHashValue(H hash_state, const std::pair<T1, T2>& p) {
// Helper function for hashing a tuple. The third argument should
// be an index_sequence running from 0 to tuple_size<Tuple> - 1.
template <typename H, typename Tuple, size_t... Is>
-H hash_tuple(H hash_state, const Tuple& t, y_absl::index_sequence<Is...>) {
+H hash_tuple(H hash_state, const Tuple& t, y_absl::index_sequence<Is...>) {
return H::combine(std::move(hash_state), std::get<Is>(t)...);
}
@@ -381,11 +381,11 @@ template <typename H, typename... Ts>
// for now.
H
#else // _MSC_VER
-typename std::enable_if<y_absl::conjunction<is_hashable<Ts>...>::value, H>::type
+typename std::enable_if<y_absl::conjunction<is_hashable<Ts>...>::value, H>::type
#endif // _MSC_VER
AbslHashValue(H hash_state, const std::tuple<Ts...>& t) {
return hash_internal::hash_tuple(std::move(hash_state), t,
- y_absl::make_index_sequence<sizeof...(Ts)>());
+ y_absl::make_index_sequence<sizeof...(Ts)>());
}
// -----------------------------------------------------------------------------
@@ -414,16 +414,16 @@ H AbslHashValue(H hash_state, const std::shared_ptr<T>& ptr) {
// the same character sequence. These types are:
//
// - `y_absl::Cord`
-// - `TString` (and std::basic_string<char, std::char_traits<char>, A> for
+// - `TString` (and std::basic_string<char, std::char_traits<char>, A> for
// any allocator A)
-// - `y_absl::string_view` and `std::string_view`
+// - `y_absl::string_view` and `std::string_view`
//
// For simplicity, we currently support only `char` strings. This support may
// be broadened, if necessary, but with some caution - this overload would
// misbehave in cases where the traits' `eq()` member isn't equivalent to `==`
// on the underlying character type.
template <typename H>
-H AbslHashValue(H hash_state, y_absl::string_view str) {
+H AbslHashValue(H hash_state, y_absl::string_view str) {
return H::combine(
H::combine_contiguous(std::move(hash_state), str.data(), str.size()),
str.size());
@@ -431,7 +431,7 @@ H AbslHashValue(H hash_state, y_absl::string_view str) {
// Support std::wstring, std::u16string and std::u32string.
template <typename Char, typename Alloc, typename H,
- typename = y_absl::enable_if_t<std::is_same<Char, wchar_t>::value ||
+ typename = y_absl::enable_if_t<std::is_same<Char, wchar_t>::value ||
std::is_same<Char, char16_t>::value ||
std::is_same<Char, char32_t>::value>>
H AbslHashValue(
@@ -583,10 +583,10 @@ typename std::enable_if<is_hashable<T>::value, H>::type AbslHashValue(
return H::combine(std::move(hash_state), opt.get());
}
-// AbslHashValue for hashing y_absl::optional
+// AbslHashValue for hashing y_absl::optional
template <typename H, typename T>
typename std::enable_if<is_hashable<T>::value, H>::type AbslHashValue(
- H hash_state, const y_absl::optional<T>& opt) {
+ H hash_state, const y_absl::optional<T>& opt) {
if (opt) hash_state = H::combine(std::move(hash_state), *opt);
return H::combine(std::move(hash_state), opt.has_value());
}
@@ -601,12 +601,12 @@ struct VariantVisitor {
}
};
-// AbslHashValue for hashing y_absl::variant
+// AbslHashValue for hashing y_absl::variant
template <typename H, typename... T>
typename std::enable_if<conjunction<is_hashable<T>...>::value, H>::type
-AbslHashValue(H hash_state, const y_absl::variant<T...>& v) {
+AbslHashValue(H hash_state, const y_absl::variant<T...>& v) {
if (!v.valueless_by_exception()) {
- hash_state = y_absl::visit(VariantVisitor<H>{std::move(hash_state)}, v);
+ hash_state = y_absl::visit(VariantVisitor<H>{std::move(hash_state)}, v);
}
return H::combine(std::move(hash_state), v.index());
}
@@ -689,14 +689,14 @@ struct HashSelect {
struct UniquelyRepresentedProbe {
template <typename H, typename T>
static auto Invoke(H state, const T& value)
- -> y_absl::enable_if_t<is_uniquely_represented<T>::value, H> {
+ -> y_absl::enable_if_t<is_uniquely_represented<T>::value, H> {
return hash_internal::hash_bytes(std::move(state), value);
}
};
struct HashValueProbe {
template <typename H, typename T>
- static auto Invoke(H state, const T& value) -> y_absl::enable_if_t<
+ static auto Invoke(H state, const T& value) -> y_absl::enable_if_t<
std::is_same<H,
decltype(AbslHashValue(std::move(state), value))>::value,
H> {
@@ -707,7 +707,7 @@ struct HashSelect {
struct LegacyHashProbe {
#if ABSL_HASH_INTERNAL_SUPPORT_LEGACY_HASH_
template <typename H, typename T>
- static auto Invoke(H state, const T& value) -> y_absl::enable_if_t<
+ static auto Invoke(H state, const T& value) -> y_absl::enable_if_t<
std::is_convertible<
decltype(ABSL_INTERNAL_LEGACY_HASH_NAMESPACE::hash<T>()(value)),
size_t>::value,
@@ -722,7 +722,7 @@ struct HashSelect {
struct StdHashProbe {
template <typename H, typename T>
static auto Invoke(H state, const T& value)
- -> y_absl::enable_if_t<type_traits_internal::IsHashable<T>::value, H> {
+ -> y_absl::enable_if_t<type_traits_internal::IsHashable<T>::value, H> {
return hash_internal::hash_bytes(std::move(state), std::hash<T>{}(value));
}
};
@@ -744,7 +744,7 @@ struct HashSelect {
// Probe each implementation in order.
// disjunction provides short circuiting wrt instantiation.
template <typename T>
- using Apply = y_absl::disjunction< //
+ using Apply = y_absl::disjunction< //
Probe<UniquelyRepresentedProbe, T>, //
Probe<HashValueProbe, T>, //
Probe<LegacyHashProbe, T>, //
@@ -758,12 +758,12 @@ struct is_hashable
// MixingHashState
class ABSL_DLL MixingHashState : public HashStateBase<MixingHashState> {
- // y_absl::uint128 is not an alias or a thin wrapper around the intrinsic.
+ // y_absl::uint128 is not an alias or a thin wrapper around the intrinsic.
// We use the intrinsic when available to improve performance.
#ifdef ABSL_HAVE_INTRINSIC_INT128
using uint128 = __uint128_t;
#else // ABSL_HAVE_INTRINSIC_INT128
- using uint128 = y_absl::uint128;
+ using uint128 = y_absl::uint128;
#endif // ABSL_HAVE_INTRINSIC_INT128
static constexpr uint64_t kMul =
@@ -799,13 +799,13 @@ class ABSL_DLL MixingHashState : public HashStateBase<MixingHashState> {
// Otherwise we would be instantiating and calling dozens of functions for
// something that is just one multiplication and a couple xor's.
// The result should be the same as running the whole algorithm, but faster.
- template <typename T, y_absl::enable_if_t<IntegralFastPath<T>::value, int> = 0>
+ template <typename T, y_absl::enable_if_t<IntegralFastPath<T>::value, int> = 0>
static size_t hash(T value) {
return static_cast<size_t>(Mix(Seed(), static_cast<uint64_t>(value)));
}
// Overload of MixingHashState::hash()
- template <typename T, y_absl::enable_if_t<!IntegralFastPath<T>::value, int> = 0>
+ template <typename T, y_absl::enable_if_t<!IntegralFastPath<T>::value, int> = 0>
static size_t hash(const T& value) {
return static_cast<size_t>(combine(MixingHashState{}, value).state_);
}
@@ -905,7 +905,7 @@ class ABSL_DLL MixingHashState : public HashStateBase<MixingHashState> {
using MultType = uint64_t;
#else
using MultType =
- y_absl::conditional_t<sizeof(size_t) == 4, uint64_t, uint128>;
+ y_absl::conditional_t<sizeof(size_t) == 4, uint64_t, uint128>;
#endif
// We do the addition in 64-bit space to make sure the 128-bit
// multiplication is fast. If we were to do it as MultType the compiler has
@@ -1032,7 +1032,7 @@ struct HashImpl {
template <typename T>
struct Hash
- : y_absl::conditional_t<is_hashable<T>::value, HashImpl<T>, PoisonedHash> {};
+ : y_absl::conditional_t<is_hashable<T>::value, HashImpl<T>, PoisonedHash> {};
template <typename H>
template <typename T, typename... Ts>
@@ -1091,6 +1091,6 @@ H PiecewiseCombiner::finalize(H state) {
} // namespace hash_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_HASH_INTERNAL_HASH_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/hash/internal/spy_hash_state.h b/contrib/restricted/abseil-cpp-tstring/y_absl/hash/internal/spy_hash_state.h
index 0172a14f6d..520cbf904f 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/hash/internal/spy_hash_state.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/hash/internal/spy_hash_state.h
@@ -19,12 +19,12 @@
#include <util/generic/string.h>
#include <vector>
-#include "y_absl/hash/hash.h"
-#include "y_absl/strings/match.h"
-#include "y_absl/strings/str_format.h"
-#include "y_absl/strings/str_join.h"
+#include "y_absl/hash/hash.h"
+#include "y_absl/strings/match.h"
+#include "y_absl/strings/str_format.h"
+#include "y_absl/strings/str_join.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace hash_internal {
@@ -40,7 +40,7 @@ namespace hash_internal {
template <typename T>
class SpyHashStateImpl : public HashStateBase<SpyHashStateImpl<T>> {
public:
- SpyHashStateImpl() : error_(std::make_shared<y_absl::optional<TString>>()) {
+ SpyHashStateImpl() : error_(std::make_shared<y_absl::optional<TString>>()) {
static_assert(std::is_void<T>::value, "");
}
@@ -112,11 +112,11 @@ class SpyHashStateImpl : public HashStateBase<SpyHashStateImpl<T>> {
static CompareResult Compare(const SpyHashStateImpl& a,
const SpyHashStateImpl& b) {
- const TString a_flat = y_absl::StrJoin(a.hash_representation_, "");
- const TString b_flat = y_absl::StrJoin(b.hash_representation_, "");
+ const TString a_flat = y_absl::StrJoin(a.hash_representation_, "");
+ const TString b_flat = y_absl::StrJoin(b.hash_representation_, "");
if (a_flat == b_flat) return CompareResult::kEqual;
- if (y_absl::EndsWith(a_flat, b_flat)) return CompareResult::kBSuffixA;
- if (y_absl::EndsWith(b_flat, a_flat)) return CompareResult::kASuffixB;
+ if (y_absl::EndsWith(a_flat, b_flat)) return CompareResult::kBSuffixA;
+ if (y_absl::EndsWith(b_flat, a_flat)) return CompareResult::kASuffixB;
return CompareResult::kUnequal;
}
@@ -129,12 +129,12 @@ class SpyHashStateImpl : public HashStateBase<SpyHashStateImpl<T>> {
size_t offset = 0;
for (char c : s) {
if (offset % 16 == 0) {
- out << y_absl::StreamFormat("\n0x%04x: ", offset);
+ out << y_absl::StreamFormat("\n0x%04x: ", offset);
}
if (offset % 2 == 0) {
out << " ";
}
- out << y_absl::StreamFormat("%02x", c);
+ out << y_absl::StreamFormat("%02x", c);
++offset;
}
out << "\n";
@@ -167,7 +167,7 @@ class SpyHashStateImpl : public HashStateBase<SpyHashStateImpl<T>> {
using SpyHashStateImpl::HashStateBase::combine_contiguous;
- y_absl::optional<TString> error() const {
+ y_absl::optional<TString> error() const {
if (moved_from_) {
return "Returned a moved-from instance of the hash state object.";
}
@@ -183,11 +183,11 @@ class SpyHashStateImpl : public HashStateBase<SpyHashStateImpl<T>> {
// AbslHashValue directly (because the hash state type does not match).
static bool direct_absl_hash_value_error_;
- std::vector<TString> hash_representation_;
+ std::vector<TString> hash_representation_;
// This is a shared_ptr because we want all instances of the particular
// SpyHashState run to share the field. This way we can set the error for
// use-after-move and all the copies will see it.
- std::shared_ptr<y_absl::optional<TString>> error_;
+ std::shared_ptr<y_absl::optional<TString>> error_;
bool moved_from_ = false;
};
@@ -212,7 +212,7 @@ bool RunOnStartup<f>::run = (f(), true);
template <
typename T, typename U,
// Only trigger for when (T != U),
- typename = y_absl::enable_if_t<!std::is_same<T, U>::value>,
+ typename = y_absl::enable_if_t<!std::is_same<T, U>::value>,
// This statement works in two ways:
// - First, it instantiates RunOnStartup and forces the initialization of
// `run`, which set the global variable.
@@ -226,6 +226,6 @@ using SpyHashState = SpyHashStateImpl<void>;
} // namespace hash_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_HASH_INTERNAL_SPY_HASH_STATE_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/memory/memory.h b/contrib/restricted/abseil-cpp-tstring/y_absl/memory/memory.h
index 2287be3331..134a614b33 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/memory/memory.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/memory/memory.h
@@ -30,10 +30,10 @@
#include <type_traits>
#include <utility>
-#include "y_absl/base/macros.h"
-#include "y_absl/meta/type_traits.h"
+#include "y_absl/base/macros.h"
+#include "y_absl/meta/type_traits.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// -----------------------------------------------------------------------------
@@ -57,15 +57,15 @@ ABSL_NAMESPACE_BEGIN
// - or -
// std::unique_ptr<X> x(NewX(1, 2));
//
-// While `y_absl::WrapUnique` is useful for capturing the output of a raw
-// pointer factory, prefer 'y_absl::make_unique<T>(args...)' over
-// 'y_absl::WrapUnique(new T(args...))'.
+// While `y_absl::WrapUnique` is useful for capturing the output of a raw
+// pointer factory, prefer 'y_absl::make_unique<T>(args...)' over
+// 'y_absl::WrapUnique(new T(args...))'.
//
// auto x = WrapUnique(new X(1, 2)); // works, but nonideal.
// auto x = make_unique<X>(1, 2); // safer, standard, avoids raw 'new'.
//
-// Note that `y_absl::WrapUnique(p)` is valid only if `delete p` is a valid
-// expression. In particular, `y_absl::WrapUnique()` cannot wrap pointers to
+// Note that `y_absl::WrapUnique(p)` is valid only if `delete p` is a valid
+// expression. In particular, `y_absl::WrapUnique()` cannot wrap pointers to
// arrays, functions or void, and it must not be used to capture pointers
// obtained from array-new expressions (even though that would compile!).
template <typename T>
@@ -77,7 +77,7 @@ std::unique_ptr<T> WrapUnique(T* ptr) {
namespace memory_internal {
-// Traits to select proper overload and return type for `y_absl::make_unique<>`.
+// Traits to select proper overload and return type for `y_absl::make_unique<>`.
template <typename T>
struct MakeUniqueResult {
using scalar = std::unique_ptr<T>;
@@ -105,12 +105,12 @@ using std::make_unique;
// -----------------------------------------------------------------------------
//
// Creates a `std::unique_ptr<>`, while avoiding issues creating temporaries
-// during the construction process. `y_absl::make_unique<>` also avoids redundant
+// during the construction process. `y_absl::make_unique<>` also avoids redundant
// type declarations, by avoiding the need to explicitly use the `new` operator.
//
-// This implementation of `y_absl::make_unique<>` is designed for C++11 code and
+// This implementation of `y_absl::make_unique<>` is designed for C++11 code and
// will be replaced in C++14 by the equivalent `std::make_unique<>` abstraction.
-// `y_absl::make_unique<>` is designed to be 100% compatible with
+// `y_absl::make_unique<>` is designed to be 100% compatible with
// `std::make_unique<>` so that the eventual migration will involve a simple
// rename operation.
//
@@ -124,7 +124,7 @@ using std::make_unique;
// auto p = make_unique<X>(args...); // 'p' is a std::unique_ptr<X>
// auto pa = make_unique<X[]>(5); // 'pa' is a std::unique_ptr<X[]>
//
-// Three overloads of `y_absl::make_unique` are required:
+// Three overloads of `y_absl::make_unique` are required:
//
// - For non-array T:
//
@@ -134,7 +134,7 @@ using std::make_unique;
//
// - For an array of unknown bounds T[]:
//
-// `y_absl::make_unique<>` will allocate an array T of type U[] with
+// `y_absl::make_unique<>` will allocate an array T of type U[] with
// `new U[n]()` and return a `std::unique_ptr<U[]>` owning that array.
//
// Note that 'U[n]()' is different from 'U[n]', and elements will be
@@ -145,40 +145,40 @@ using std::make_unique;
// NOTE: an array of unknown bounds T[] may still be (and often will be)
// initialized to have a size, and will still use this overload. E.g:
//
-// auto my_array = y_absl::make_unique<int[]>(10);
+// auto my_array = y_absl::make_unique<int[]>(10);
//
// - For an array of known bounds T[N]:
//
-// `y_absl::make_unique<>` is deleted (like with `std::make_unique<>`) as
+// `y_absl::make_unique<>` is deleted (like with `std::make_unique<>`) as
// this overload is not useful.
//
// NOTE: an array of known bounds T[N] is not considered a useful
// construction, and may cause undefined behavior in templates. E.g:
//
-// auto my_array = y_absl::make_unique<int[10]>();
+// auto my_array = y_absl::make_unique<int[10]>();
//
// In those cases, of course, you can still use the overload above and
// simply initialize it to its desired size:
//
-// auto my_array = y_absl::make_unique<int[]>(10);
+// auto my_array = y_absl::make_unique<int[]>(10);
-// `y_absl::make_unique` overload for non-array types.
+// `y_absl::make_unique` overload for non-array types.
template <typename T, typename... Args>
typename memory_internal::MakeUniqueResult<T>::scalar make_unique(
Args&&... args) {
return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
}
-// `y_absl::make_unique` overload for an array T[] of unknown bounds.
+// `y_absl::make_unique` overload for an array T[] of unknown bounds.
// The array allocation needs to use the `new T[size]` form and cannot take
// element constructor arguments. The `std::unique_ptr` will manage destructing
// these array elements.
template <typename T>
typename memory_internal::MakeUniqueResult<T>::array make_unique(size_t n) {
- return std::unique_ptr<T>(new typename y_absl::remove_extent_t<T>[n]());
+ return std::unique_ptr<T>(new typename y_absl::remove_extent_t<T>[n]());
}
-// `y_absl::make_unique` overload for an array T[N] of known bounds.
+// `y_absl::make_unique` overload for an array T[N] of known bounds.
// This construction will be rejected.
template <typename T, typename... Args>
typename memory_internal::MakeUniqueResult<T>::invalid make_unique(
@@ -189,7 +189,7 @@ typename memory_internal::MakeUniqueResult<T>::invalid make_unique(
// Function Template: RawPtr()
// -----------------------------------------------------------------------------
//
-// Extracts the raw pointer from a pointer-like value `ptr`. `y_absl::RawPtr` is
+// Extracts the raw pointer from a pointer-like value `ptr`. `y_absl::RawPtr` is
// useful within templates that need to handle a complement of raw pointers,
// `std::nullptr_t`, and smart pointers.
template <typename T>
@@ -209,8 +209,8 @@ inline std::nullptr_t RawPtr(std::nullptr_t) { return nullptr; }
//
// Example:
//
-// auto up = y_absl::make_unique<int>(10);
-// auto sp = y_absl::ShareUniquePtr(std::move(up)); // shared_ptr<int>
+// auto up = y_absl::make_unique<int>(10);
+// auto sp = y_absl::ShareUniquePtr(std::move(up)); // shared_ptr<int>
// CHECK_EQ(*sp, 10);
// CHECK(up == nullptr);
//
@@ -237,7 +237,7 @@ std::shared_ptr<T> ShareUniquePtr(std::unique_ptr<T, D>&& ptr) {
// Example:
//
// auto sp = std::make_shared<int>(10);
-// auto wp = y_absl::WeakenPtr(sp);
+// auto wp = y_absl::WeakenPtr(sp);
// CHECK_EQ(sp.get(), wp.lock().get());
// sp.reset();
// CHECK(wp.lock() == nullptr);
@@ -437,32 +437,32 @@ struct allocator_traits {
// const_pointer:
// Alloc::const_pointer if present, otherwise
- // y_absl::pointer_traits<pointer>::rebind<const value_type>
+ // y_absl::pointer_traits<pointer>::rebind<const value_type>
using const_pointer =
memory_internal::ExtractOrT<memory_internal::GetConstPointer, Alloc,
- typename y_absl::pointer_traits<pointer>::
+ typename y_absl::pointer_traits<pointer>::
template rebind<const value_type>>;
// void_pointer:
// Alloc::void_pointer if present, otherwise
- // y_absl::pointer_traits<pointer>::rebind<void>
+ // y_absl::pointer_traits<pointer>::rebind<void>
using void_pointer = memory_internal::ExtractOrT<
memory_internal::GetVoidPointer, Alloc,
- typename y_absl::pointer_traits<pointer>::template rebind<void>>;
+ typename y_absl::pointer_traits<pointer>::template rebind<void>>;
// const_void_pointer:
// Alloc::const_void_pointer if present, otherwise
- // y_absl::pointer_traits<pointer>::rebind<const void>
+ // y_absl::pointer_traits<pointer>::rebind<const void>
using const_void_pointer = memory_internal::ExtractOrT<
memory_internal::GetConstVoidPointer, Alloc,
- typename y_absl::pointer_traits<pointer>::template rebind<const void>>;
+ typename y_absl::pointer_traits<pointer>::template rebind<const void>>;
// difference_type:
// Alloc::difference_type if present, otherwise
- // y_absl::pointer_traits<pointer>::difference_type
+ // y_absl::pointer_traits<pointer>::difference_type
using difference_type = memory_internal::ExtractOrT<
memory_internal::GetDifferenceType, Alloc,
- typename y_absl::pointer_traits<pointer>::difference_type>;
+ typename y_absl::pointer_traits<pointer>::difference_type>;
// size_type:
// Alloc::size_type if present, otherwise
@@ -504,9 +504,9 @@ struct allocator_traits {
using rebind_alloc = typename memory_internal::RebindAlloc<Alloc, T>::type;
// rebind_traits:
- // y_absl::allocator_traits<rebind_alloc<T>>
+ // y_absl::allocator_traits<rebind_alloc<T>>
template <typename T>
- using rebind_traits = y_absl::allocator_traits<rebind_alloc<T>>;
+ using rebind_traits = y_absl::allocator_traits<rebind_alloc<T>>;
// allocate(Alloc& a, size_type n):
// Calls a.allocate(n)
@@ -693,6 +693,6 @@ void CopyRange(Allocator& alloc, Iterator destination, InputIterator first,
}
} // namespace memory_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_MEMORY_MEMORY_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/meta/type_traits.h b/contrib/restricted/abseil-cpp-tstring/y_absl/meta/type_traits.h
index 9275412b7b..eb9649060b 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/meta/type_traits.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/meta/type_traits.h
@@ -39,7 +39,7 @@
#include <functional>
#include <type_traits>
-#include "y_absl/base/config.h"
+#include "y_absl/base/config.h"
// MSVC constructibility traits do not detect destructor properties and so our
// implementations should not use them as a source-of-truth.
@@ -55,7 +55,7 @@
#define ABSL_INTERNAL_DEFAULT_NEW_ALIGNMENT alignof(std::max_align_t)
#endif // defined(__STDCPP_DEFAULT_NEW_ALIGNMENT__)
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// Defined and documented later on in this file.
@@ -103,11 +103,11 @@ struct IsTriviallyMoveAssignableReference : std::false_type {};
template <class T>
struct IsTriviallyMoveAssignableReference<T&>
- : y_absl::is_trivially_move_assignable<T>::type {};
+ : y_absl::is_trivially_move_assignable<T>::type {};
template <class T>
struct IsTriviallyMoveAssignableReference<T&&>
- : y_absl::is_trivially_move_assignable<T>::type {};
+ : y_absl::is_trivially_move_assignable<T>::type {};
template <typename... Ts>
struct VoidTImpl {
@@ -211,7 +211,7 @@ struct is_move_assignable : type_traits_internal::is_detected<
// This metafunction is designed to be a drop-in replacement for the C++17
// `std::void_t` metafunction.
//
-// NOTE: `y_absl::void_t` does not use the standard-specified implementation so
+// NOTE: `y_absl::void_t` does not use the standard-specified implementation so
// that it can remain compatible with gcc < 5.1. This can introduce slightly
// different behavior, such as when ordering partial specializations.
template <typename... Ts>
@@ -492,7 +492,7 @@ template <typename T>
struct is_trivially_copy_assignable
: std::integral_constant<
bool, __has_trivial_assign(typename std::remove_reference<T>::type) &&
- y_absl::is_copy_assignable<T>::value> {
+ y_absl::is_copy_assignable<T>::value> {
#ifdef ABSL_HAVE_STD_IS_TRIVIALLY_ASSIGNABLE
private:
static constexpr bool compliant =
@@ -543,7 +543,7 @@ namespace type_traits_internal {
// one non-deleted copy/move constructor/assignment operator, and T is trivially
// destructible. Arrays of trivially copyable types are trivially copyable.
//
-// We expose this metafunction only for internal use within y_absl.
+// We expose this metafunction only for internal use within y_absl.
template <typename T>
class is_trivially_copyable_impl {
using ExtentsRemoved = typename std::remove_all_extents<T>::type;
@@ -551,8 +551,8 @@ class is_trivially_copyable_impl {
std::is_copy_constructible<ExtentsRemoved>::value ||
std::is_move_constructible<ExtentsRemoved>::value;
static constexpr bool kIsCopyOrMoveAssignable =
- y_absl::is_copy_assignable<ExtentsRemoved>::value ||
- y_absl::is_move_assignable<ExtentsRemoved>::value;
+ y_absl::is_copy_assignable<ExtentsRemoved>::value ||
+ y_absl::is_move_assignable<ExtentsRemoved>::value;
public:
static constexpr bool kValue =
@@ -679,7 +679,7 @@ struct IsHashable : std::false_type {};
template <typename Key>
struct IsHashable<
Key,
- y_absl::enable_if_t<std::is_convertible<
+ y_absl::enable_if_t<std::is_convertible<
decltype(std::declval<std::hash<Key>&>()(std::declval<Key const&>())),
std::size_t>::value>> : std::true_type {};
#endif // !ABSL_META_INTERNAL_STD_HASH_SFINAE_FRIENDLY_
@@ -705,7 +705,7 @@ struct AssertHashEnabledHelper {
static_assert(
std::is_copy_constructible<std::hash<Key>>::value,
"std::hash<Key> must be copy constructible when it is enabled");
- static_assert(y_absl::is_copy_assignable<std::hash<Key>>::value,
+ static_assert(y_absl::is_copy_assignable<std::hash<Key>>::value,
"std::hash<Key> must be copy assignable when it is enabled");
// is_destructible is unchecked as it's implied by each of the
// is_constructible checks.
@@ -735,7 +735,7 @@ namespace swap_internal {
// Necessary for the traits.
using std::swap;
-// This declaration prevents global `swap` and `y_absl::swap` overloads from being
+// This declaration prevents global `swap` and `y_absl::swap` overloads from being
// considered unless ADL picks them up.
void swap();
@@ -754,7 +754,7 @@ using IsNothrowSwappableImpl = typename std::enable_if<IsNoexcept::value>::type;
// arguments of type `T`.
template <class T>
struct IsSwappable
- : y_absl::type_traits_internal::is_detected<IsSwappableImpl, T> {};
+ : y_absl::type_traits_internal::is_detected<IsSwappableImpl, T> {};
// IsNothrowSwappable
//
@@ -762,13 +762,13 @@ struct IsSwappable
// arguments of type `T` and is noexcept.
template <class T>
struct IsNothrowSwappable
- : y_absl::type_traits_internal::is_detected<IsNothrowSwappableImpl, T> {};
+ : y_absl::type_traits_internal::is_detected<IsNothrowSwappableImpl, T> {};
// Swap()
//
// Performs the swap idiom from a namespace where valid candidates may only be
// found in `std` or via ADL.
-template <class T, y_absl::enable_if_t<IsSwappable<T>::value, int> = 0>
+template <class T, y_absl::enable_if_t<IsSwappable<T>::value, int> = 0>
void Swap(T& lhs, T& rhs) noexcept(IsNothrowSwappable<T>::value) {
swap(lhs, rhs);
}
@@ -792,6 +792,6 @@ using swap_internal::StdSwapIsUnconstrained;
} // namespace type_traits_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_META_TYPE_TRAITS_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/numeric/int128.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/numeric/int128.cc
index 514399def4..6172372d75 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/numeric/int128.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/numeric/int128.cc
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/numeric/int128.h"
+#include "y_absl/numeric/int128.h"
#include <stddef.h>
@@ -26,7 +26,7 @@
#include "y_absl/base/optimization.h"
#include "y_absl/numeric/bits.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
ABSL_DLL const uint128 kuint128max = MakeUint128(
@@ -156,7 +156,7 @@ uint128 operator%(uint128 lhs, uint128 rhs) {
namespace {
-TString Uint128ToFormattedString(uint128 v, std::ios_base::fmtflags flags) {
+TString Uint128ToFormattedString(uint128 v, std::ios_base::fmtflags flags) {
// Select a divisor which is the largest power of the base < 2^64.
uint128 div;
int div_base_log;
@@ -204,7 +204,7 @@ TString Uint128ToFormattedString(uint128 v, std::ios_base::fmtflags flags) {
std::ostream& operator<<(std::ostream& os, uint128 v) {
std::ios_base::fmtflags flags = os.flags();
- TString rep = Uint128ToFormattedString(v, flags);
+ TString rep = Uint128ToFormattedString(v, flags);
// Add the requisite padding.
std::streamsize width = os.width(0);
@@ -286,7 +286,7 @@ int128 operator%(int128 lhs, int128 rhs) {
std::ostream& operator<<(std::ostream& os, int128 v) {
std::ios_base::fmtflags flags = os.flags();
- TString rep;
+ TString rep;
// Add the sign if needed.
bool print_as_decimal =
@@ -330,54 +330,54 @@ std::ostream& operator<<(std::ostream& os, int128 v) {
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
namespace std {
-constexpr bool numeric_limits<y_absl::uint128>::is_specialized;
-constexpr bool numeric_limits<y_absl::uint128>::is_signed;
-constexpr bool numeric_limits<y_absl::uint128>::is_integer;
-constexpr bool numeric_limits<y_absl::uint128>::is_exact;
-constexpr bool numeric_limits<y_absl::uint128>::has_infinity;
-constexpr bool numeric_limits<y_absl::uint128>::has_quiet_NaN;
-constexpr bool numeric_limits<y_absl::uint128>::has_signaling_NaN;
-constexpr float_denorm_style numeric_limits<y_absl::uint128>::has_denorm;
-constexpr bool numeric_limits<y_absl::uint128>::has_denorm_loss;
-constexpr float_round_style numeric_limits<y_absl::uint128>::round_style;
-constexpr bool numeric_limits<y_absl::uint128>::is_iec559;
-constexpr bool numeric_limits<y_absl::uint128>::is_bounded;
-constexpr bool numeric_limits<y_absl::uint128>::is_modulo;
-constexpr int numeric_limits<y_absl::uint128>::digits;
-constexpr int numeric_limits<y_absl::uint128>::digits10;
-constexpr int numeric_limits<y_absl::uint128>::max_digits10;
-constexpr int numeric_limits<y_absl::uint128>::radix;
-constexpr int numeric_limits<y_absl::uint128>::min_exponent;
-constexpr int numeric_limits<y_absl::uint128>::min_exponent10;
-constexpr int numeric_limits<y_absl::uint128>::max_exponent;
-constexpr int numeric_limits<y_absl::uint128>::max_exponent10;
-constexpr bool numeric_limits<y_absl::uint128>::traps;
-constexpr bool numeric_limits<y_absl::uint128>::tinyness_before;
-
-constexpr bool numeric_limits<y_absl::int128>::is_specialized;
-constexpr bool numeric_limits<y_absl::int128>::is_signed;
-constexpr bool numeric_limits<y_absl::int128>::is_integer;
-constexpr bool numeric_limits<y_absl::int128>::is_exact;
-constexpr bool numeric_limits<y_absl::int128>::has_infinity;
-constexpr bool numeric_limits<y_absl::int128>::has_quiet_NaN;
-constexpr bool numeric_limits<y_absl::int128>::has_signaling_NaN;
-constexpr float_denorm_style numeric_limits<y_absl::int128>::has_denorm;
-constexpr bool numeric_limits<y_absl::int128>::has_denorm_loss;
-constexpr float_round_style numeric_limits<y_absl::int128>::round_style;
-constexpr bool numeric_limits<y_absl::int128>::is_iec559;
-constexpr bool numeric_limits<y_absl::int128>::is_bounded;
-constexpr bool numeric_limits<y_absl::int128>::is_modulo;
-constexpr int numeric_limits<y_absl::int128>::digits;
-constexpr int numeric_limits<y_absl::int128>::digits10;
-constexpr int numeric_limits<y_absl::int128>::max_digits10;
-constexpr int numeric_limits<y_absl::int128>::radix;
-constexpr int numeric_limits<y_absl::int128>::min_exponent;
-constexpr int numeric_limits<y_absl::int128>::min_exponent10;
-constexpr int numeric_limits<y_absl::int128>::max_exponent;
-constexpr int numeric_limits<y_absl::int128>::max_exponent10;
-constexpr bool numeric_limits<y_absl::int128>::traps;
-constexpr bool numeric_limits<y_absl::int128>::tinyness_before;
+constexpr bool numeric_limits<y_absl::uint128>::is_specialized;
+constexpr bool numeric_limits<y_absl::uint128>::is_signed;
+constexpr bool numeric_limits<y_absl::uint128>::is_integer;
+constexpr bool numeric_limits<y_absl::uint128>::is_exact;
+constexpr bool numeric_limits<y_absl::uint128>::has_infinity;
+constexpr bool numeric_limits<y_absl::uint128>::has_quiet_NaN;
+constexpr bool numeric_limits<y_absl::uint128>::has_signaling_NaN;
+constexpr float_denorm_style numeric_limits<y_absl::uint128>::has_denorm;
+constexpr bool numeric_limits<y_absl::uint128>::has_denorm_loss;
+constexpr float_round_style numeric_limits<y_absl::uint128>::round_style;
+constexpr bool numeric_limits<y_absl::uint128>::is_iec559;
+constexpr bool numeric_limits<y_absl::uint128>::is_bounded;
+constexpr bool numeric_limits<y_absl::uint128>::is_modulo;
+constexpr int numeric_limits<y_absl::uint128>::digits;
+constexpr int numeric_limits<y_absl::uint128>::digits10;
+constexpr int numeric_limits<y_absl::uint128>::max_digits10;
+constexpr int numeric_limits<y_absl::uint128>::radix;
+constexpr int numeric_limits<y_absl::uint128>::min_exponent;
+constexpr int numeric_limits<y_absl::uint128>::min_exponent10;
+constexpr int numeric_limits<y_absl::uint128>::max_exponent;
+constexpr int numeric_limits<y_absl::uint128>::max_exponent10;
+constexpr bool numeric_limits<y_absl::uint128>::traps;
+constexpr bool numeric_limits<y_absl::uint128>::tinyness_before;
+
+constexpr bool numeric_limits<y_absl::int128>::is_specialized;
+constexpr bool numeric_limits<y_absl::int128>::is_signed;
+constexpr bool numeric_limits<y_absl::int128>::is_integer;
+constexpr bool numeric_limits<y_absl::int128>::is_exact;
+constexpr bool numeric_limits<y_absl::int128>::has_infinity;
+constexpr bool numeric_limits<y_absl::int128>::has_quiet_NaN;
+constexpr bool numeric_limits<y_absl::int128>::has_signaling_NaN;
+constexpr float_denorm_style numeric_limits<y_absl::int128>::has_denorm;
+constexpr bool numeric_limits<y_absl::int128>::has_denorm_loss;
+constexpr float_round_style numeric_limits<y_absl::int128>::round_style;
+constexpr bool numeric_limits<y_absl::int128>::is_iec559;
+constexpr bool numeric_limits<y_absl::int128>::is_bounded;
+constexpr bool numeric_limits<y_absl::int128>::is_modulo;
+constexpr int numeric_limits<y_absl::int128>::digits;
+constexpr int numeric_limits<y_absl::int128>::digits10;
+constexpr int numeric_limits<y_absl::int128>::max_digits10;
+constexpr int numeric_limits<y_absl::int128>::radix;
+constexpr int numeric_limits<y_absl::int128>::min_exponent;
+constexpr int numeric_limits<y_absl::int128>::min_exponent10;
+constexpr int numeric_limits<y_absl::int128>::max_exponent;
+constexpr int numeric_limits<y_absl::int128>::max_exponent10;
+constexpr bool numeric_limits<y_absl::int128>::traps;
+constexpr bool numeric_limits<y_absl::int128>::tinyness_before;
} // namespace std
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/numeric/int128.h b/contrib/restricted/abseil-cpp-tstring/y_absl/numeric/int128.h
index 86688ad7bf..b54d614ce9 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/numeric/int128.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/numeric/int128.h
@@ -34,9 +34,9 @@
#include <limits>
#include <utility>
-#include "y_absl/base/config.h"
-#include "y_absl/base/macros.h"
-#include "y_absl/base/port.h"
+#include "y_absl/base/config.h"
+#include "y_absl/base/macros.h"
+#include "y_absl/base/port.h"
#if defined(_MSC_VER)
// In very old versions of MSVC and when the /Zc:wchar_t flag is off, wchar_t is
@@ -52,7 +52,7 @@
#define ABSL_INTERNAL_WCHAR_T wchar_t
#endif // defined(_MSC_VER)
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
class int128;
@@ -94,10 +94,10 @@ class int128;
//
// Example:
//
-// float y = y_absl::Uint128Max(); // Error. uint128 cannot be implicitly
+// float y = y_absl::Uint128Max(); // Error. uint128 cannot be implicitly
// // converted to float.
//
-// y_absl::uint128 v;
+// y_absl::uint128 v;
// uint64_t i = v; // Error
// uint64_t i = static_cast<uint64_t>(v); // OK
//
@@ -203,7 +203,7 @@ class
//
// Example:
//
- // y_absl::uint128 big = y_absl::MakeUint128(1, 0);
+ // y_absl::uint128 big = y_absl::MakeUint128(1, 0);
friend constexpr uint128 MakeUint128(uint64_t high, uint64_t low);
// Uint128Max()
@@ -211,7 +211,7 @@ class
// Returns the highest value for a 128-bit unsigned integer.
friend constexpr uint128 Uint128Max();
- // Support for y_absl::Hash.
+ // Support for y_absl::Hash.
template <typename H>
friend H AbslHashValue(H h, uint128 v) {
return H::combine(std::move(h), Uint128High64(v), Uint128Low64(v));
@@ -237,7 +237,7 @@ class
// Prefer to use the constexpr `Uint128Max()`.
//
-// TODO(y_absl-team) deprecate kuint128max once migration tool is released.
+// TODO(y_absl-team) deprecate kuint128max once migration tool is released.
ABSL_DLL extern const uint128 kuint128max;
// allow uint128 to be logged
@@ -251,12 +251,12 @@ constexpr uint128 Uint128Max() {
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
// Specialized numeric_limits for uint128.
namespace std {
template <>
-class numeric_limits<y_absl::uint128> {
+class numeric_limits<y_absl::uint128> {
public:
static constexpr bool is_specialized = true;
static constexpr bool is_signed = false;
@@ -286,19 +286,19 @@ class numeric_limits<y_absl::uint128> {
#endif // ABSL_HAVE_INTRINSIC_INT128
static constexpr bool tinyness_before = false;
- static constexpr y_absl::uint128 (min)() { return 0; }
- static constexpr y_absl::uint128 lowest() { return 0; }
- static constexpr y_absl::uint128 (max)() { return y_absl::Uint128Max(); }
- static constexpr y_absl::uint128 epsilon() { return 0; }
- static constexpr y_absl::uint128 round_error() { return 0; }
- static constexpr y_absl::uint128 infinity() { return 0; }
- static constexpr y_absl::uint128 quiet_NaN() { return 0; }
- static constexpr y_absl::uint128 signaling_NaN() { return 0; }
- static constexpr y_absl::uint128 denorm_min() { return 0; }
+ static constexpr y_absl::uint128 (min)() { return 0; }
+ static constexpr y_absl::uint128 lowest() { return 0; }
+ static constexpr y_absl::uint128 (max)() { return y_absl::Uint128Max(); }
+ static constexpr y_absl::uint128 epsilon() { return 0; }
+ static constexpr y_absl::uint128 round_error() { return 0; }
+ static constexpr y_absl::uint128 infinity() { return 0; }
+ static constexpr y_absl::uint128 quiet_NaN() { return 0; }
+ static constexpr y_absl::uint128 signaling_NaN() { return 0; }
+ static constexpr y_absl::uint128 denorm_min() { return 0; }
};
} // namespace std
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// int128
@@ -328,10 +328,10 @@ ABSL_NAMESPACE_BEGIN
//
// Example:
//
-// float y = y_absl::int128(17); // Error. int128 cannot be implicitly
+// float y = y_absl::int128(17); // Error. int128 cannot be implicitly
// // converted to float.
//
-// y_absl::int128 v;
+// y_absl::int128 v;
// int64_t i = v; // Error
// int64_t i = static_cast<int64_t>(v); // OK
//
@@ -427,15 +427,15 @@ class int128 {
// Constructs a `int128` numeric value from two 64-bit integers. Note that
// signedness is conveyed in the upper `high` value.
//
- // (y_absl::int128(1) << 64) * high + low
+ // (y_absl::int128(1) << 64) * high + low
//
// Note that this factory function is the only way to construct a `int128`
// from integer values greater than 2^64 or less than -2^64.
//
// Example:
//
- // y_absl::int128 big = y_absl::MakeInt128(1, 0);
- // y_absl::int128 big_n = y_absl::MakeInt128(-1, 0);
+ // y_absl::int128 big = y_absl::MakeInt128(1, 0);
+ // y_absl::int128 big_n = y_absl::MakeInt128(-1, 0);
friend constexpr int128 MakeInt128(int64_t high, uint64_t low);
// Int128Max()
@@ -448,7 +448,7 @@ class int128 {
// Returns the minimum value for a 128-bit signed integer.
friend constexpr int128 Int128Min();
- // Support for y_absl::Hash.
+ // Support for y_absl::Hash.
template <typename H>
friend H AbslHashValue(H h, int128 v) {
return H::combine(std::move(h), Int128High64(v), Int128Low64(v));
@@ -474,7 +474,7 @@ class int128 {
std::ostream& operator<<(std::ostream& os, int128 v);
-// TODO(y_absl-team) add operator>>(std::istream&, int128)
+// TODO(y_absl-team) add operator>>(std::istream&, int128)
constexpr int128 Int128Max() {
return int128((std::numeric_limits<int64_t>::max)(),
@@ -486,12 +486,12 @@ constexpr int128 Int128Min() {
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
// Specialized numeric_limits for int128.
namespace std {
template <>
-class numeric_limits<y_absl::int128> {
+class numeric_limits<y_absl::int128> {
public:
static constexpr bool is_specialized = true;
static constexpr bool is_signed = true;
@@ -521,22 +521,22 @@ class numeric_limits<y_absl::int128> {
#endif // ABSL_HAVE_INTRINSIC_INT128
static constexpr bool tinyness_before = false;
- static constexpr y_absl::int128 (min)() { return y_absl::Int128Min(); }
- static constexpr y_absl::int128 lowest() { return y_absl::Int128Min(); }
- static constexpr y_absl::int128 (max)() { return y_absl::Int128Max(); }
- static constexpr y_absl::int128 epsilon() { return 0; }
- static constexpr y_absl::int128 round_error() { return 0; }
- static constexpr y_absl::int128 infinity() { return 0; }
- static constexpr y_absl::int128 quiet_NaN() { return 0; }
- static constexpr y_absl::int128 signaling_NaN() { return 0; }
- static constexpr y_absl::int128 denorm_min() { return 0; }
+ static constexpr y_absl::int128 (min)() { return y_absl::Int128Min(); }
+ static constexpr y_absl::int128 lowest() { return y_absl::Int128Min(); }
+ static constexpr y_absl::int128 (max)() { return y_absl::Int128Max(); }
+ static constexpr y_absl::int128 epsilon() { return 0; }
+ static constexpr y_absl::int128 round_error() { return 0; }
+ static constexpr y_absl::int128 infinity() { return 0; }
+ static constexpr y_absl::int128 quiet_NaN() { return 0; }
+ static constexpr y_absl::int128 signaling_NaN() { return 0; }
+ static constexpr y_absl::int128 denorm_min() { return 0; }
};
} // namespace std
// --------------------------------------------------------------------------
// Implementation details follow
// --------------------------------------------------------------------------
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
constexpr uint128 MakeUint128(uint64_t high, uint64_t low) {
@@ -1152,13 +1152,13 @@ constexpr int64_t BitCastToSigned(uint64_t v) {
} // namespace int128_internal
#if defined(ABSL_HAVE_INTRINSIC_INT128)
-#include "y_absl/numeric/int128_have_intrinsic.inc" // IWYU pragma: export
+#include "y_absl/numeric/int128_have_intrinsic.inc" // IWYU pragma: export
#else // ABSL_HAVE_INTRINSIC_INT128
-#include "y_absl/numeric/int128_no_intrinsic.inc" // IWYU pragma: export
+#include "y_absl/numeric/int128_no_intrinsic.inc" // IWYU pragma: export
#endif // ABSL_HAVE_INTRINSIC_INT128
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#undef ABSL_INTERNAL_WCHAR_T
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/profiling/internal/exponential_biased.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/profiling/internal/exponential_biased.cc
index 3855e2cf8d..02f5dfd9da 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/profiling/internal/exponential_biased.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/profiling/internal/exponential_biased.cc
@@ -21,10 +21,10 @@
#include <cmath>
#include <limits>
-#include "y_absl/base/attributes.h"
-#include "y_absl/base/optimization.h"
+#include "y_absl/base/attributes.h"
+#include "y_absl/base/optimization.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace profiling_internal {
@@ -90,4 +90,4 @@ void ExponentialBiased::Initialize() {
} // namespace profiling_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/profiling/internal/exponential_biased.h b/contrib/restricted/abseil-cpp-tstring/y_absl/profiling/internal/exponential_biased.h
index 857ae6f93f..ee7954a535 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/profiling/internal/exponential_biased.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/profiling/internal/exponential_biased.h
@@ -20,7 +20,7 @@
#include "y_absl/base/config.h"
#include "y_absl/base/macros.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace profiling_internal {
@@ -125,6 +125,6 @@ inline uint64_t ExponentialBiased::NextRandom(uint64_t rnd) {
} // namespace profiling_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_PROFILING_INTERNAL_EXPONENTIAL_BIASED_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/profiling/internal/periodic_sampler.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/profiling/internal/periodic_sampler.cc
index 4b97fa10bb..39fb3660f0 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/profiling/internal/periodic_sampler.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/profiling/internal/periodic_sampler.cc
@@ -18,7 +18,7 @@
#include "y_absl/profiling/internal/exponential_biased.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace profiling_internal {
@@ -50,4 +50,4 @@ bool PeriodicSamplerBase::SubtleConfirmSample() noexcept {
} // namespace profiling_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/profiling/internal/periodic_sampler.h b/contrib/restricted/abseil-cpp-tstring/y_absl/profiling/internal/periodic_sampler.h
index 7d14c62d34..37796a9e00 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/profiling/internal/periodic_sampler.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/profiling/internal/periodic_sampler.h
@@ -19,10 +19,10 @@
#include <atomic>
-#include "y_absl/base/optimization.h"
+#include "y_absl/base/optimization.h"
#include "y_absl/profiling/internal/exponential_biased.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace profiling_internal {
@@ -206,6 +206,6 @@ std::atomic<int> PeriodicSampler<Tag, default_period>::period_(default_period);
} // namespace profiling_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_PROFILING_INTERNAL_PERIODIC_SAMPLER_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/ascii.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/ascii.cc
index 45e3ea43c3..959d6c27ff 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/ascii.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/ascii.cc
@@ -12,9 +12,9 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/strings/ascii.h"
+#include "y_absl/strings/ascii.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace ascii_internal {
@@ -155,19 +155,19 @@ ABSL_DLL const char kToUpper[256] = {
} // namespace ascii_internal
-void AsciiStrToLower(TString* s) {
+void AsciiStrToLower(TString* s) {
for (auto& ch : *s) {
- ch = y_absl::ascii_tolower(ch);
+ ch = y_absl::ascii_tolower(ch);
}
}
-void AsciiStrToUpper(TString* s) {
+void AsciiStrToUpper(TString* s) {
for (auto& ch : *s) {
- ch = y_absl::ascii_toupper(ch);
+ ch = y_absl::ascii_toupper(ch);
}
}
-void RemoveExtraAsciiWhitespace(TString* str) {
+void RemoveExtraAsciiWhitespace(TString* str) {
auto stripped = StripAsciiWhitespace(*str);
if (stripped.empty()) {
@@ -183,10 +183,10 @@ void RemoveExtraAsciiWhitespace(TString* str) {
for (; input_it < input_end; ++input_it) {
if (is_ws) {
// Consecutive whitespace? Keep only the last.
- is_ws = y_absl::ascii_isspace(*input_it);
+ is_ws = y_absl::ascii_isspace(*input_it);
if (is_ws) --output_it;
} else {
- is_ws = y_absl::ascii_isspace(*input_it);
+ is_ws = y_absl::ascii_isspace(*input_it);
}
*output_it = *input_it;
@@ -197,4 +197,4 @@ void RemoveExtraAsciiWhitespace(TString* str) {
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/ascii.h b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/ascii.h
index efe3c4f38f..bc04710d8c 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/ascii.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/ascii.h
@@ -55,11 +55,11 @@
#include <algorithm>
#include <util/generic/string.h>
-#include "y_absl/base/attributes.h"
+#include "y_absl/base/attributes.h"
#include "y_absl/base/config.h"
-#include "y_absl/strings/string_view.h"
+#include "y_absl/strings/string_view.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace ascii_internal {
@@ -165,12 +165,12 @@ inline char ascii_tolower(unsigned char c) {
}
// Converts the characters in `s` to lowercase, changing the contents of `s`.
-void AsciiStrToLower(TString* s);
+void AsciiStrToLower(TString* s);
-// Creates a lowercase string from a given y_absl::string_view.
-ABSL_MUST_USE_RESULT inline TString AsciiStrToLower(y_absl::string_view s) {
- TString result(s);
- y_absl::AsciiStrToLower(&result);
+// Creates a lowercase string from a given y_absl::string_view.
+ABSL_MUST_USE_RESULT inline TString AsciiStrToLower(y_absl::string_view s) {
+ TString result(s);
+ y_absl::AsciiStrToLower(&result);
return result;
}
@@ -183,60 +183,60 @@ inline char ascii_toupper(unsigned char c) {
}
// Converts the characters in `s` to uppercase, changing the contents of `s`.
-void AsciiStrToUpper(TString* s);
+void AsciiStrToUpper(TString* s);
-// Creates an uppercase string from a given y_absl::string_view.
-ABSL_MUST_USE_RESULT inline TString AsciiStrToUpper(y_absl::string_view s) {
- TString result(s);
- y_absl::AsciiStrToUpper(&result);
+// Creates an uppercase string from a given y_absl::string_view.
+ABSL_MUST_USE_RESULT inline TString AsciiStrToUpper(y_absl::string_view s) {
+ TString result(s);
+ y_absl::AsciiStrToUpper(&result);
return result;
}
-// Returns y_absl::string_view with whitespace stripped from the beginning of the
+// Returns y_absl::string_view with whitespace stripped from the beginning of the
// given string_view.
-ABSL_MUST_USE_RESULT inline y_absl::string_view StripLeadingAsciiWhitespace(
- y_absl::string_view str) {
- auto it = std::find_if_not(str.begin(), str.end(), y_absl::ascii_isspace);
+ABSL_MUST_USE_RESULT inline y_absl::string_view StripLeadingAsciiWhitespace(
+ y_absl::string_view str) {
+ auto it = std::find_if_not(str.begin(), str.end(), y_absl::ascii_isspace);
return str.substr(it - str.begin());
}
// Strips in place whitespace from the beginning of the given string.
-inline void StripLeadingAsciiWhitespace(TString* str) {
- auto it = std::find_if_not(str->cbegin(), str->cend(), y_absl::ascii_isspace);
+inline void StripLeadingAsciiWhitespace(TString* str) {
+ auto it = std::find_if_not(str->cbegin(), str->cend(), y_absl::ascii_isspace);
str->erase(str->begin(), it);
}
-// Returns y_absl::string_view with whitespace stripped from the end of the given
+// Returns y_absl::string_view with whitespace stripped from the end of the given
// string_view.
-ABSL_MUST_USE_RESULT inline y_absl::string_view StripTrailingAsciiWhitespace(
- y_absl::string_view str) {
- auto it = std::find_if_not(str.rbegin(), str.rend(), y_absl::ascii_isspace);
+ABSL_MUST_USE_RESULT inline y_absl::string_view StripTrailingAsciiWhitespace(
+ y_absl::string_view str) {
+ auto it = std::find_if_not(str.rbegin(), str.rend(), y_absl::ascii_isspace);
return str.substr(0, str.rend() - it);
}
// Strips in place whitespace from the end of the given string
-inline void StripTrailingAsciiWhitespace(TString* str) {
- auto it = std::find_if_not(str->rbegin(), str->rend(), y_absl::ascii_isspace);
+inline void StripTrailingAsciiWhitespace(TString* str) {
+ auto it = std::find_if_not(str->rbegin(), str->rend(), y_absl::ascii_isspace);
str->erase(str->rend() - it);
}
-// Returns y_absl::string_view with whitespace stripped from both ends of the
+// Returns y_absl::string_view with whitespace stripped from both ends of the
// given string_view.
-ABSL_MUST_USE_RESULT inline y_absl::string_view StripAsciiWhitespace(
- y_absl::string_view str) {
+ABSL_MUST_USE_RESULT inline y_absl::string_view StripAsciiWhitespace(
+ y_absl::string_view str) {
return StripTrailingAsciiWhitespace(StripLeadingAsciiWhitespace(str));
}
// Strips in place whitespace from both ends of the given string
-inline void StripAsciiWhitespace(TString* str) {
+inline void StripAsciiWhitespace(TString* str) {
StripTrailingAsciiWhitespace(str);
StripLeadingAsciiWhitespace(str);
}
// Removes leading, trailing, and consecutive internal whitespace.
-void RemoveExtraAsciiWhitespace(TString*);
+void RemoveExtraAsciiWhitespace(TString*);
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_STRINGS_ASCII_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/charconv.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/charconv.cc
index ff906ea64f..9515ca24dd 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/charconv.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/charconv.cc
@@ -12,18 +12,18 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/strings/charconv.h"
+#include "y_absl/strings/charconv.h"
#include <algorithm>
#include <cassert>
#include <cmath>
#include <cstring>
-#include "y_absl/base/casts.h"
+#include "y_absl/base/casts.h"
#include "y_absl/numeric/bits.h"
-#include "y_absl/numeric/int128.h"
-#include "y_absl/strings/internal/charconv_bigint.h"
-#include "y_absl/strings/internal/charconv_parse.h"
+#include "y_absl/numeric/int128.h"
+#include "y_absl/strings/internal/charconv_bigint.h"
+#include "y_absl/strings/internal/charconv_parse.h"
// The macro ABSL_BIT_PACK_FLOATS is defined on x86-64, where IEEE floating
// point numbers have the same endianness in memory as a bitfield struct
@@ -56,7 +56,7 @@
// end result normally has the 53rd bit set. It represents subnormals by using
// narrower mantissas.
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace {
@@ -124,7 +124,7 @@ struct FloatTraits<double> {
assert(exponent == kMinNormalExponent);
}
dbl += mantissa;
- return y_absl::bit_cast<double>(dbl);
+ return y_absl::bit_cast<double>(dbl);
#endif // ABSL_BIT_PACK_FLOATS
}
};
@@ -164,7 +164,7 @@ struct FloatTraits<float> {
assert(exponent == kMinNormalExponent);
}
flt += mantissa;
- return y_absl::bit_cast<float>(flt);
+ return y_absl::bit_cast<float>(flt);
#endif // ABSL_BIT_PACK_FLOATS
}
};
@@ -326,7 +326,7 @@ bool HandleEdgeCase(const strings_internal::ParsedFloat& input, bool negative,
// number is stored in *value.
template <typename FloatType>
void EncodeResult(const CalculatedFloat& calculated, bool negative,
- y_absl::from_chars_result* result, FloatType* value) {
+ y_absl::from_chars_result* result, FloatType* value) {
if (calculated.exponent == kOverflow) {
result->ec = std::errc::result_out_of_range;
*value = negative ? -std::numeric_limits<FloatType>::max()
@@ -432,7 +432,7 @@ bool MustRoundUp(uint64_t guess_mantissa, int guess_exponent,
// better limit dynamically based on the value of parsed_decimal.exponent.
// This would optimize pathological input cases only. (Sane inputs won't have
// hundreds of digits of mantissa.)
- y_absl::strings_internal::BigUnsigned<84> exact_mantissa;
+ y_absl::strings_internal::BigUnsigned<84> exact_mantissa;
int exact_exponent = exact_mantissa.ReadFloatMantissa(parsed_decimal, 768);
// Adjust the `guess` arguments to be halfway between A and B.
@@ -446,11 +446,11 @@ bool MustRoundUp(uint64_t guess_mantissa, int guess_exponent,
//
// Because we are doing integer math, we can't directly deal with negative
// exponents. We instead move these to the other side of the inequality.
- y_absl::strings_internal::BigUnsigned<84>& lhs = exact_mantissa;
+ y_absl::strings_internal::BigUnsigned<84>& lhs = exact_mantissa;
int comparison;
if (exact_exponent >= 0) {
lhs.MultiplyByFiveToTheNth(exact_exponent);
- y_absl::strings_internal::BigUnsigned<84> rhs(guess_mantissa);
+ y_absl::strings_internal::BigUnsigned<84> rhs(guess_mantissa);
// There are powers of 2 on both sides of the inequality; reduce this to
// a single bit-shift.
if (exact_exponent > guess_exponent) {
@@ -463,8 +463,8 @@ bool MustRoundUp(uint64_t guess_mantissa, int guess_exponent,
// Move the power of 5 to the other side of the equation, giving us:
// lhs = exact_mantissa * 2**exact_exponent
// rhs = guess_mantissa * 5**(-exact_exponent) * 2**guess_exponent
- y_absl::strings_internal::BigUnsigned<84> rhs =
- y_absl::strings_internal::BigUnsigned<84>::FiveToTheNth(-exact_exponent);
+ y_absl::strings_internal::BigUnsigned<84> rhs =
+ y_absl::strings_internal::BigUnsigned<84>::FiveToTheNth(-exact_exponent);
rhs.MultiplyBy(guess_mantissa);
if (exact_exponent > guess_exponent) {
lhs.ShiftLeft(exact_exponent - guess_exponent);
@@ -981,4 +981,4 @@ const int16_t kPower10ExponentTable[] = {
} // namespace
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/charconv.h b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/charconv.h
index a80092f504..1a115aa251 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/charconv.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/charconv.h
@@ -19,12 +19,12 @@
#include "y_absl/base/config.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// Workalike compatibilty version of std::chars_format from C++17.
//
-// This is an bitfield enumerator which can be passed to y_absl::from_chars to
+// This is an bitfield enumerator which can be passed to y_absl::from_chars to
// configure the string-to-float conversion.
enum class chars_format {
scientific = 1,
@@ -76,11 +76,11 @@ struct from_chars_result {
// format that strtod() accepts, except that a "0x" prefix is NOT matched.
// (In particular, in `hex` mode, the input "0xff" results in the largest
// matching pattern "0".)
-y_absl::from_chars_result from_chars(const char* first, const char* last,
+y_absl::from_chars_result from_chars(const char* first, const char* last,
double& value, // NOLINT
chars_format fmt = chars_format::general);
-y_absl::from_chars_result from_chars(const char* first, const char* last,
+y_absl::from_chars_result from_chars(const char* first, const char* last,
float& value, // NOLINT
chars_format fmt = chars_format::general);
@@ -115,6 +115,6 @@ inline chars_format& operator^=(chars_format& lhs, chars_format rhs) {
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_STRINGS_CHARCONV_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/escaping.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/escaping.cc
index 4461d83a85..8c82740608 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/escaping.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/escaping.cc
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/strings/escaping.h"
+#include "y_absl/strings/escaping.h"
#include <algorithm>
#include <cassert>
@@ -22,18 +22,18 @@
#include <limits>
#include <util/generic/string.h>
-#include "y_absl/base/internal/endian.h"
-#include "y_absl/base/internal/raw_logging.h"
-#include "y_absl/base/internal/unaligned_access.h"
-#include "y_absl/strings/internal/char_map.h"
+#include "y_absl/base/internal/endian.h"
+#include "y_absl/base/internal/raw_logging.h"
+#include "y_absl/base/internal/unaligned_access.h"
+#include "y_absl/strings/internal/char_map.h"
#include "y_absl/strings/internal/escaping.h"
-#include "y_absl/strings/internal/resize_uninitialized.h"
-#include "y_absl/strings/internal/utf8.h"
-#include "y_absl/strings/str_cat.h"
-#include "y_absl/strings/str_join.h"
-#include "y_absl/strings/string_view.h"
+#include "y_absl/strings/internal/resize_uninitialized.h"
+#include "y_absl/strings/internal/utf8.h"
+#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/str_join.h"
+#include "y_absl/strings/string_view.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace {
@@ -45,7 +45,7 @@ inline bool is_octal_digit(char c) { return ('0' <= c) && (c <= '7'); }
inline int hex_digit_to_int(char c) {
static_assert('0' == 0x30 && 'A' == 0x41 && 'a' == 0x61,
"Character set must be ASCII.");
- assert(y_absl::ascii_isxdigit(c));
+ assert(y_absl::ascii_isxdigit(c));
int x = static_cast<unsigned char>(c);
if (x > '9') {
x += 9;
@@ -53,10 +53,10 @@ inline int hex_digit_to_int(char c) {
return x & 0xf;
}
-inline bool IsSurrogate(char32_t c, y_absl::string_view src, TString* error) {
+inline bool IsSurrogate(char32_t c, y_absl::string_view src, TString* error) {
if (c >= 0xD800 && c <= 0xDFFF) {
if (error) {
- *error = y_absl::StrCat("invalid surrogate character (0xD800-DFFF): \\",
+ *error = y_absl::StrCat("invalid surrogate character (0xD800-DFFF): \\",
src);
}
return true;
@@ -81,8 +81,8 @@ inline bool IsSurrogate(char32_t c, y_absl::string_view src, TString* error) {
// NOTE: any changes to this function must also be reflected in the older
// UnescapeCEscapeSequences().
// ----------------------------------------------------------------------
-bool CUnescapeInternal(y_absl::string_view source, bool leave_nulls_escaped,
- char* dest, ptrdiff_t* dest_len, TString* error) {
+bool CUnescapeInternal(y_absl::string_view source, bool leave_nulls_escaped,
+ char* dest, ptrdiff_t* dest_len, TString* error) {
char* d = dest;
const char* p = source.data();
const char* end = p + source.size();
@@ -128,7 +128,7 @@ bool CUnescapeInternal(y_absl::string_view source, bool leave_nulls_escaped,
if (ch > 0xff) {
if (error) {
*error = "Value of \\" +
- TString(octal_start, p + 1 - octal_start) +
+ TString(octal_start, p + 1 - octal_start) +
" exceeds 0xff";
}
return false;
@@ -149,19 +149,19 @@ bool CUnescapeInternal(y_absl::string_view source, bool leave_nulls_escaped,
if (p >= last_byte) {
if (error) *error = "String cannot end with \\x";
return false;
- } else if (!y_absl::ascii_isxdigit(p[1])) {
+ } else if (!y_absl::ascii_isxdigit(p[1])) {
if (error) *error = "\\x cannot be followed by a non-hex digit";
return false;
}
unsigned int ch = 0;
const char* hex_start = p;
- while (p < last_byte && y_absl::ascii_isxdigit(p[1]))
+ while (p < last_byte && y_absl::ascii_isxdigit(p[1]))
// Arbitrarily many hex digits
ch = (ch << 4) + hex_digit_to_int(*++p);
if (ch > 0xFF) {
if (error) {
*error = "Value of \\" +
- TString(hex_start, p + 1 - hex_start) +
+ TString(hex_start, p + 1 - hex_start) +
" exceeds 0xff";
}
return false;
@@ -184,18 +184,18 @@ bool CUnescapeInternal(y_absl::string_view source, bool leave_nulls_escaped,
if (p + 4 >= end) {
if (error) {
*error = "\\u must be followed by 4 hex digits: \\" +
- TString(hex_start, p + 1 - hex_start);
+ TString(hex_start, p + 1 - hex_start);
}
return false;
}
for (int i = 0; i < 4; ++i) {
// Look one char ahead.
- if (y_absl::ascii_isxdigit(p[1])) {
+ if (y_absl::ascii_isxdigit(p[1])) {
rune = (rune << 4) + hex_digit_to_int(*++p); // Advance p.
} else {
if (error) {
*error = "\\u must be followed by 4 hex digits: \\" +
- TString(hex_start, p + 1 - hex_start);
+ TString(hex_start, p + 1 - hex_start);
}
return false;
}
@@ -207,7 +207,7 @@ bool CUnescapeInternal(y_absl::string_view source, bool leave_nulls_escaped,
d += 5;
break;
}
- if (IsSurrogate(rune, y_absl::string_view(hex_start, 5), error)) {
+ if (IsSurrogate(rune, y_absl::string_view(hex_start, 5), error)) {
return false;
}
d += strings_internal::EncodeUTF8Char(d, rune);
@@ -220,20 +220,20 @@ bool CUnescapeInternal(y_absl::string_view source, bool leave_nulls_escaped,
if (p + 8 >= end) {
if (error) {
*error = "\\U must be followed by 8 hex digits: \\" +
- TString(hex_start, p + 1 - hex_start);
+ TString(hex_start, p + 1 - hex_start);
}
return false;
}
for (int i = 0; i < 8; ++i) {
// Look one char ahead.
- if (y_absl::ascii_isxdigit(p[1])) {
+ if (y_absl::ascii_isxdigit(p[1])) {
// Don't change rune until we're sure this
// is within the Unicode limit, but do advance p.
uint32_t newrune = (rune << 4) + hex_digit_to_int(*++p);
if (newrune > 0x10FFFF) {
if (error) {
*error = "Value of \\" +
- TString(hex_start, p + 1 - hex_start) +
+ TString(hex_start, p + 1 - hex_start) +
" exceeds Unicode limit (0x10FFFF)";
}
return false;
@@ -243,7 +243,7 @@ bool CUnescapeInternal(y_absl::string_view source, bool leave_nulls_escaped,
} else {
if (error) {
*error = "\\U must be followed by 8 hex digits: \\" +
- TString(hex_start, p + 1 - hex_start);
+ TString(hex_start, p + 1 - hex_start);
}
return false;
}
@@ -255,14 +255,14 @@ bool CUnescapeInternal(y_absl::string_view source, bool leave_nulls_escaped,
d += 9;
break;
}
- if (IsSurrogate(rune, y_absl::string_view(hex_start, 9), error)) {
+ if (IsSurrogate(rune, y_absl::string_view(hex_start, 9), error)) {
return false;
}
d += strings_internal::EncodeUTF8Char(d, rune);
break;
}
default: {
- if (error) *error = TString("Unknown escape sequence: \\") + *p;
+ if (error) *error = TString("Unknown escape sequence: \\") + *p;
return false;
}
}
@@ -276,11 +276,11 @@ bool CUnescapeInternal(y_absl::string_view source, bool leave_nulls_escaped,
// ----------------------------------------------------------------------
// CUnescapeInternal()
//
-// Same as above but uses a TString for output. 'source' and 'dest'
+// Same as above but uses a TString for output. 'source' and 'dest'
// may be the same.
// ----------------------------------------------------------------------
-bool CUnescapeInternal(y_absl::string_view source, bool leave_nulls_escaped,
- TString* dest, TString* error) {
+bool CUnescapeInternal(y_absl::string_view source, bool leave_nulls_escaped,
+ TString* dest, TString* error) {
strings_internal::STLStringResizeUninitialized(dest, source.size());
ptrdiff_t dest_size;
@@ -304,11 +304,11 @@ bool CUnescapeInternal(y_absl::string_view source, bool leave_nulls_escaped,
// preparing query flags. The 'Hex' version uses hexadecimal rather than
// octal sequences. The 'Utf8Safe' version does not touch UTF-8 bytes.
//
-// Escaped chars: \n, \r, \t, ", ', \, and !y_absl::ascii_isprint().
+// Escaped chars: \n, \r, \t, ", ', \, and !y_absl::ascii_isprint().
// ----------------------------------------------------------------------
-TString CEscapeInternal(y_absl::string_view src, bool use_hex,
+TString CEscapeInternal(y_absl::string_view src, bool use_hex,
bool utf8_safe) {
- TString dest;
+ TString dest;
bool last_hex_escape = false; // true if last output char was \xNN.
for (unsigned char c : src) {
@@ -325,8 +325,8 @@ TString CEscapeInternal(y_absl::string_view src, bool use_hex,
// digit then that digit must be escaped too to prevent it being
// interpreted as part of the character code by C.
if ((!utf8_safe || c < 0x80) &&
- (!y_absl::ascii_isprint(c) ||
- (last_hex_escape && y_absl::ascii_isxdigit(c)))) {
+ (!y_absl::ascii_isprint(c) ||
+ (last_hex_escape && y_absl::ascii_isxdigit(c)))) {
if (use_hex) {
dest.append("\\" "x");
dest.push_back(numbers_internal::kHexChar[c / 16]);
@@ -373,13 +373,13 @@ constexpr char c_escaped_len[256] = {
// Calculates the length of the C-style escaped version of 'src'.
// Assumes that non-printable characters are escaped using octal sequences, and
// that UTF-8 bytes are not handled specially.
-inline size_t CEscapedLength(y_absl::string_view src) {
+inline size_t CEscapedLength(y_absl::string_view src) {
size_t escaped_len = 0;
for (unsigned char c : src) escaped_len += c_escaped_len[c];
return escaped_len;
}
-void CEscapeAndAppendInternal(y_absl::string_view src, TString* dest) {
+void CEscapeAndAppendInternal(y_absl::string_view src, TString* dest) {
size_t escaped_len = CEscapedLength(src);
if (escaped_len == src.size()) {
dest->append(src.data(), src.size());
@@ -460,7 +460,7 @@ bool Base64UnescapeInternal(const char* src_param, size_t szsrc, char* dest,
ch = *src++; \
decode = unbase64[ch]; \
if (decode < 0) { \
- if (y_absl::ascii_isspace(ch) && szsrc >= remain) goto label; \
+ if (y_absl::ascii_isspace(ch) && szsrc >= remain) goto label; \
state = 4 - remain; \
break; \
}
@@ -550,7 +550,7 @@ bool Base64UnescapeInternal(const char* src_param, size_t szsrc, char* dest,
// if the loop terminated because we read a bad character, return
// now.
if (decode < 0 && ch != kPad64Equals && ch != kPad64Dot &&
- !y_absl::ascii_isspace(ch))
+ !y_absl::ascii_isspace(ch))
return false;
if (ch == kPad64Equals || ch == kPad64Dot) {
@@ -569,7 +569,7 @@ bool Base64UnescapeInternal(const char* src_param, size_t szsrc, char* dest,
ch = *src++;
decode = unbase64[ch];
if (decode < 0) {
- if (y_absl::ascii_isspace(ch)) {
+ if (y_absl::ascii_isspace(ch)) {
continue;
} else if (ch == kPad64Equals || ch == kPad64Dot) {
// back up one character; we'll read it again when we check
@@ -653,7 +653,7 @@ bool Base64UnescapeInternal(const char* src_param, size_t szsrc, char* dest,
while (szsrc > 0) {
if (*src == kPad64Equals || *src == kPad64Dot)
++equals;
- else if (!y_absl::ascii_isspace(*src))
+ else if (!y_absl::ascii_isspace(*src))
return false;
--szsrc;
++src;
@@ -829,7 +829,7 @@ void HexStringToBytesInternal(const char* from, T to, ptrdiff_t num) {
}
// This is a templated function so that T can be either a char* or a
-// TString.
+// TString.
template <typename T>
void BytesToHexStringInternal(const unsigned char* src, T dest, ptrdiff_t num) {
auto dest_ptr = &dest[0];
@@ -846,26 +846,26 @@ void BytesToHexStringInternal(const unsigned char* src, T dest, ptrdiff_t num) {
//
// See CUnescapeInternal() for implementation details.
// ----------------------------------------------------------------------
-bool CUnescape(y_absl::string_view source, TString* dest,
- TString* error) {
+bool CUnescape(y_absl::string_view source, TString* dest,
+ TString* error) {
return CUnescapeInternal(source, kUnescapeNulls, dest, error);
}
-TString CEscape(y_absl::string_view src) {
- TString dest;
+TString CEscape(y_absl::string_view src) {
+ TString dest;
CEscapeAndAppendInternal(src, &dest);
return dest;
}
-TString CHexEscape(y_absl::string_view src) {
+TString CHexEscape(y_absl::string_view src) {
return CEscapeInternal(src, true, false);
}
-TString Utf8SafeCEscape(y_absl::string_view src) {
+TString Utf8SafeCEscape(y_absl::string_view src) {
return CEscapeInternal(src, false, true);
}
-TString Utf8SafeCHexEscape(y_absl::string_view src) {
+TString Utf8SafeCHexEscape(y_absl::string_view src) {
return CEscapeInternal(src, true, true);
}
@@ -893,57 +893,57 @@ TString Utf8SafeCHexEscape(y_absl::string_view src) {
// indicate that the text was not an integer multiple of three bytes long.
// ----------------------------------------------------------------------
-bool Base64Unescape(y_absl::string_view src, TString* dest) {
+bool Base64Unescape(y_absl::string_view src, TString* dest) {
return Base64UnescapeInternal(src.data(), src.size(), dest, kUnBase64);
}
-bool WebSafeBase64Unescape(y_absl::string_view src, TString* dest) {
+bool WebSafeBase64Unescape(y_absl::string_view src, TString* dest) {
return Base64UnescapeInternal(src.data(), src.size(), dest, kUnWebSafeBase64);
}
-void Base64Escape(y_absl::string_view src, TString* dest) {
+void Base64Escape(y_absl::string_view src, TString* dest) {
strings_internal::Base64EscapeInternal(
reinterpret_cast<const unsigned char*>(src.data()), src.size(), dest,
true, strings_internal::kBase64Chars);
}
-void WebSafeBase64Escape(y_absl::string_view src, TString* dest) {
+void WebSafeBase64Escape(y_absl::string_view src, TString* dest) {
strings_internal::Base64EscapeInternal(
reinterpret_cast<const unsigned char*>(src.data()), src.size(), dest,
false, kWebSafeBase64Chars);
}
-TString Base64Escape(y_absl::string_view src) {
- TString dest;
+TString Base64Escape(y_absl::string_view src) {
+ TString dest;
strings_internal::Base64EscapeInternal(
reinterpret_cast<const unsigned char*>(src.data()), src.size(), &dest,
true, strings_internal::kBase64Chars);
return dest;
}
-TString WebSafeBase64Escape(y_absl::string_view src) {
- TString dest;
+TString WebSafeBase64Escape(y_absl::string_view src) {
+ TString dest;
strings_internal::Base64EscapeInternal(
reinterpret_cast<const unsigned char*>(src.data()), src.size(), &dest,
false, kWebSafeBase64Chars);
return dest;
}
-TString HexStringToBytes(y_absl::string_view from) {
- TString result;
+TString HexStringToBytes(y_absl::string_view from) {
+ TString result;
const auto num = from.size() / 2;
strings_internal::STLStringResizeUninitialized(&result, num);
- y_absl::HexStringToBytesInternal<TString&>(from.data(), result, num);
+ y_absl::HexStringToBytesInternal<TString&>(from.data(), result, num);
return result;
}
-TString BytesToHexString(y_absl::string_view from) {
- TString result;
+TString BytesToHexString(y_absl::string_view from) {
+ TString result;
strings_internal::STLStringResizeUninitialized(&result, 2 * from.size());
- y_absl::BytesToHexStringInternal<TString&>(
+ y_absl::BytesToHexStringInternal<TString&>(
reinterpret_cast<const unsigned char*>(from.data()), result, from.size());
return result;
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/escaping.h b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/escaping.h
index 098fb91d36..8868b87879 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/escaping.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/escaping.h
@@ -27,12 +27,12 @@
#include <util/generic/string.h>
#include <vector>
-#include "y_absl/base/macros.h"
-#include "y_absl/strings/ascii.h"
-#include "y_absl/strings/str_join.h"
-#include "y_absl/strings/string_view.h"
+#include "y_absl/base/macros.h"
+#include "y_absl/strings/ascii.h"
+#include "y_absl/strings/str_join.h"
+#include "y_absl/strings/string_view.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// CUnescape()
@@ -63,16 +63,16 @@ ABSL_NAMESPACE_BEGIN
//
// Example:
//
-// TString s = "foo\\rbar\\nbaz\\t";
-// TString unescaped_s;
-// if (!y_absl::CUnescape(s, &unescaped_s) {
+// TString s = "foo\\rbar\\nbaz\\t";
+// TString unescaped_s;
+// if (!y_absl::CUnescape(s, &unescaped_s) {
// ...
// }
// EXPECT_EQ(unescaped_s, "foo\rbar\nbaz\t");
-bool CUnescape(y_absl::string_view source, TString* dest, TString* error);
+bool CUnescape(y_absl::string_view source, TString* dest, TString* error);
// Overload of `CUnescape()` with no error reporting.
-inline bool CUnescape(y_absl::string_view source, TString* dest) {
+inline bool CUnescape(y_absl::string_view source, TString* dest) {
return CUnescape(source, dest, nullptr);
}
@@ -84,10 +84,10 @@ inline bool CUnescape(y_absl::string_view source, TString* dest) {
//
// Example:
//
-// TString s = "foo\rbar\tbaz\010\011\012\013\014\x0d\n";
-// TString escaped_s = y_absl::CEscape(s);
+// TString s = "foo\rbar\tbaz\010\011\012\013\014\x0d\n";
+// TString escaped_s = y_absl::CEscape(s);
// EXPECT_EQ(escaped_s, "foo\\rbar\\tbaz\\010\\t\\n\\013\\014\\r\\n");
-TString CEscape(y_absl::string_view src);
+TString CEscape(y_absl::string_view src);
// CHexEscape()
//
@@ -97,10 +97,10 @@ TString CEscape(y_absl::string_view src);
//
// Example:
//
-// TString s = "foo\rbar\tbaz\010\011\012\013\014\x0d\n";
-// TString escaped_s = y_absl::CHexEscape(s);
+// TString s = "foo\rbar\tbaz\010\011\012\013\014\x0d\n";
+// TString escaped_s = y_absl::CHexEscape(s);
// EXPECT_EQ(escaped_s, "foo\\rbar\\tbaz\\x08\\t\\n\\x0b\\x0c\\r\\n");
-TString CHexEscape(y_absl::string_view src);
+TString CHexEscape(y_absl::string_view src);
// Utf8SafeCEscape()
//
@@ -108,57 +108,57 @@ TString CHexEscape(y_absl::string_view src);
// octal sequences, and passing through UTF-8 characters without conversion.
// I.e., when encountering any bytes with their high bit set, this function
// will not escape those values, whether or not they are valid UTF-8.
-TString Utf8SafeCEscape(y_absl::string_view src);
+TString Utf8SafeCEscape(y_absl::string_view src);
// Utf8SafeCHexEscape()
//
// Escapes a 'src' string using C-style escape sequences, escaping bytes as
// hexadecimal sequences, and passing through UTF-8 characters without
// conversion.
-TString Utf8SafeCHexEscape(y_absl::string_view src);
+TString Utf8SafeCHexEscape(y_absl::string_view src);
// Base64Unescape()
//
// Converts a `src` string encoded in Base64 to its binary equivalent, writing
// it to a `dest` buffer, returning `true` on success. If `src` contains invalid
// characters, `dest` is cleared and returns `false`.
-bool Base64Unescape(y_absl::string_view src, TString* dest);
+bool Base64Unescape(y_absl::string_view src, TString* dest);
// WebSafeBase64Unescape()
//
// Converts a `src` string encoded in Base64 to its binary equivalent, writing
// it to a `dest` buffer, but using '-' instead of '+', and '_' instead of '/'.
// If `src` contains invalid characters, `dest` is cleared and returns `false`.
-bool WebSafeBase64Unescape(y_absl::string_view src, TString* dest);
+bool WebSafeBase64Unescape(y_absl::string_view src, TString* dest);
// Base64Escape()
//
// Encodes a `src` string into a base64-encoded string, with padding characters.
// This function conforms with RFC 4648 section 4 (base64).
-void Base64Escape(y_absl::string_view src, TString* dest);
-TString Base64Escape(y_absl::string_view src);
+void Base64Escape(y_absl::string_view src, TString* dest);
+TString Base64Escape(y_absl::string_view src);
// WebSafeBase64Escape()
//
// Encodes a `src` string into a base64-like string, using '-' instead of '+'
// and '_' instead of '/', and without padding. This function conforms with RFC
// 4648 section 5 (base64url).
-void WebSafeBase64Escape(y_absl::string_view src, TString* dest);
-TString WebSafeBase64Escape(y_absl::string_view src);
+void WebSafeBase64Escape(y_absl::string_view src, TString* dest);
+TString WebSafeBase64Escape(y_absl::string_view src);
// HexStringToBytes()
//
// Converts an ASCII hex string into bytes, returning binary data of length
// `from.size()/2`.
-TString HexStringToBytes(y_absl::string_view from);
+TString HexStringToBytes(y_absl::string_view from);
// BytesToHexString()
//
// Converts binary data into an ASCII text string, returning a string of size
// `2*from.size()`.
-TString BytesToHexString(y_absl::string_view from);
+TString BytesToHexString(y_absl::string_view from);
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_STRINGS_ESCAPING_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/char_map.h b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/char_map.h
index b8badd7901..25428e304c 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/char_map.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/char_map.h
@@ -24,10 +24,10 @@
#include <cstdint>
#include <cstring>
-#include "y_absl/base/macros.h"
-#include "y_absl/base/port.h"
+#include "y_absl/base/macros.h"
+#include "y_absl/base/port.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace strings_internal {
@@ -151,6 +151,6 @@ constexpr Charmap PunctCharmap() { return GraphCharmap() & ~AlnumCharmap(); }
} // namespace strings_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_STRINGS_INTERNAL_CHAR_MAP_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/charconv_bigint.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/charconv_bigint.cc
index f47fecbf1f..72a4fa188b 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/charconv_bigint.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/charconv_bigint.cc
@@ -12,13 +12,13 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/strings/internal/charconv_bigint.h"
+#include "y_absl/strings/internal/charconv_bigint.h"
#include <algorithm>
#include <cassert>
#include <util/generic/string.h>
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace strings_internal {
@@ -336,9 +336,9 @@ void BigUnsigned<max_words>::MultiplyStep(int original_size,
}
template <int max_words>
-TString BigUnsigned<max_words>::ToString() const {
+TString BigUnsigned<max_words>::ToString() const {
BigUnsigned<max_words> copy = *this;
- TString result;
+ TString result;
// Build result in reverse order
while (copy.size() > 0) {
int next_digit = copy.DivMod<10>();
@@ -347,7 +347,7 @@ TString BigUnsigned<max_words>::ToString() const {
if (result.empty()) {
result.push_back('0');
}
- std::reverse(result.begin(), result.vend());
+ std::reverse(result.begin(), result.vend());
return result;
}
@@ -356,4 +356,4 @@ template class BigUnsigned<84>;
} // namespace strings_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/charconv_bigint.h b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/charconv_bigint.h
index 13b1d5db44..a77aab14dd 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/charconv_bigint.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/charconv_bigint.h
@@ -21,11 +21,11 @@
#include <util/generic/string.h>
#include "y_absl/base/config.h"
-#include "y_absl/strings/ascii.h"
-#include "y_absl/strings/internal/charconv_parse.h"
-#include "y_absl/strings/string_view.h"
+#include "y_absl/strings/ascii.h"
+#include "y_absl/strings/internal/charconv_parse.h"
+#include "y_absl/strings/string_view.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace strings_internal {
@@ -41,7 +41,7 @@ ABSL_DLL extern const uint32_t kTenToNth[kMaxSmallPowerOfTen + 1];
// Large, fixed-width unsigned integer.
//
// Exact rounding for decimal-to-binary floating point conversion requires very
-// large integer math, but a design goal of y_absl::from_chars is to avoid
+// large integer math, but a design goal of y_absl::from_chars is to avoid
// allocating memory. The integer precision needed for decimal-to-binary
// conversions is large but bounded, so a huge fixed-width integer class
// suffices.
@@ -68,7 +68,7 @@ class BigUnsigned {
// Constructs a BigUnsigned from the given string_view containing a decimal
// value. If the input string is not a decimal integer, constructs a 0
// instead.
- explicit BigUnsigned(y_absl::string_view sv) : size_(0), words_{} {
+ explicit BigUnsigned(y_absl::string_view sv) : size_(0), words_{} {
// Check for valid input, returning a 0 otherwise. This is reasonable
// behavior only because this constructor is for unit tests.
if (std::find_if_not(sv.begin(), sv.end(), ascii_isdigit) != sv.end() ||
@@ -212,7 +212,7 @@ class BigUnsigned {
// Returns this integer as a decimal string. This is not used in the decimal-
// to-binary conversion; it is intended to aid in testing.
- TString ToString() const;
+ TString ToString() const;
int size() const { return size_; }
const uint32_t* words() const { return words_; }
@@ -418,6 +418,6 @@ extern template class BigUnsigned<84>;
} // namespace strings_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_STRINGS_INTERNAL_CHARCONV_BIGINT_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/charconv_parse.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/charconv_parse.cc
index d13dc938ef..f0f78eb68c 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/charconv_parse.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/charconv_parse.cc
@@ -12,16 +12,16 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/strings/internal/charconv_parse.h"
-#include "y_absl/strings/charconv.h"
+#include "y_absl/strings/internal/charconv_parse.h"
+#include "y_absl/strings/charconv.h"
#include <cassert>
#include <cstdint>
#include <limits>
-#include "y_absl/strings/internal/memutil.h"
+#include "y_absl/strings/internal/memutil.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace {
@@ -501,4 +501,4 @@ template ParsedFloat ParseFloat<16>(const char* begin, const char* end,
} // namespace strings_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/charconv_parse.h b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/charconv_parse.h
index 31239d9ab4..3f942cd4cb 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/charconv_parse.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/charconv_parse.h
@@ -18,9 +18,9 @@
#include <cstdint>
#include "y_absl/base/config.h"
-#include "y_absl/strings/charconv.h"
+#include "y_absl/strings/charconv.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace strings_internal {
@@ -86,14 +86,14 @@ struct ParsedFloat {
// *not* consumed. The `hex` bit from format_flags is ignored by ParseFloat.
template <int base>
ParsedFloat ParseFloat(const char* begin, const char* end,
- y_absl::chars_format format_flags);
+ y_absl::chars_format format_flags);
extern template ParsedFloat ParseFloat<10>(const char* begin, const char* end,
- y_absl::chars_format format_flags);
+ y_absl::chars_format format_flags);
extern template ParsedFloat ParseFloat<16>(const char* begin, const char* end,
- y_absl::chars_format format_flags);
+ y_absl::chars_format format_flags);
} // namespace strings_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_STRINGS_INTERNAL_CHARCONV_PARSE_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/escaping_test_common.h b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/escaping_test_common.h
index c9f4351692..f145127225 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/escaping_test_common.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/escaping_test_common.h
@@ -19,15 +19,15 @@
#define ABSL_STRINGS_INTERNAL_ESCAPING_TEST_COMMON_H_
#include <array>
-#include "y_absl/strings/string_view.h"
+#include "y_absl/strings/string_view.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace strings_internal {
struct base64_testcase {
- y_absl::string_view plaintext;
- y_absl::string_view cyphertext;
+ y_absl::string_view plaintext;
+ y_absl::string_view cyphertext;
};
inline const std::array<base64_testcase, 5>& base64_strings() {
@@ -128,6 +128,6 @@ inline const std::array<base64_testcase, 5>& base64_strings() {
} // namespace strings_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_STRINGS_INTERNAL_ESCAPING_TEST_COMMON_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/memutil.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/memutil.cc
index 801181e3fc..0ba6574fdb 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/memutil.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/memutil.cc
@@ -12,11 +12,11 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/strings/internal/memutil.h"
+#include "y_absl/strings/internal/memutil.h"
#include <cstdlib>
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace strings_internal {
@@ -26,8 +26,8 @@ int memcasecmp(const char* s1, const char* s2, size_t len) {
for (size_t i = 0; i < len; i++) {
const int diff =
- int{static_cast<unsigned char>(y_absl::ascii_tolower(us1[i]))} -
- int{static_cast<unsigned char>(y_absl::ascii_tolower(us2[i]))};
+ int{static_cast<unsigned char>(y_absl::ascii_tolower(us1[i]))} -
+ int{static_cast<unsigned char>(y_absl::ascii_tolower(us2[i]))};
if (diff != 0) return diff;
}
return 0;
@@ -109,4 +109,4 @@ const char* memmatch(const char* phaystack, size_t haylen, const char* pneedle,
} // namespace strings_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/memutil.h b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/memutil.h
index fb6a48ebad..ee442fe25f 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/memutil.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/memutil.h
@@ -24,7 +24,7 @@
// The difference between the mem and str versions is the mem version
// takes a pointer and a length, rather than a '\0'-terminated string.
// The memcase* routines defined here assume the locale is "C"
-// (they use y_absl::ascii_tolower instead of tolower).
+// (they use y_absl::ascii_tolower instead of tolower).
//
// These routines are based on the BSD library.
//
@@ -65,10 +65,10 @@
#include <cstddef>
#include <cstring>
-#include "y_absl/base/port.h" // disable some warnings on Windows
-#include "y_absl/strings/ascii.h" // for y_absl::ascii_tolower
+#include "y_absl/base/port.h" // disable some warnings on Windows
+#include "y_absl/strings/ascii.h" // for y_absl::ascii_tolower
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace strings_internal {
@@ -98,10 +98,10 @@ const char* int_memmatch(const char* haystack, size_t haylen,
for (; haystack < hayend; ++haystack) {
char hay = case_sensitive
? *haystack
- : y_absl::ascii_tolower(static_cast<unsigned char>(*haystack));
+ : y_absl::ascii_tolower(static_cast<unsigned char>(*haystack));
char nee = case_sensitive
? *needle
- : y_absl::ascii_tolower(static_cast<unsigned char>(*needle));
+ : y_absl::ascii_tolower(static_cast<unsigned char>(*needle));
if (hay == nee) {
if (++needle == needleend) {
return haystack + 1 - neelen;
@@ -143,6 +143,6 @@ const char* memmatch(const char* phaystack, size_t haylen, const char* pneedle,
} // namespace strings_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_STRINGS_INTERNAL_MEMUTIL_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/numbers_test_common.h b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/numbers_test_common.h
index ef07171c41..12aec3ac11 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/numbers_test_common.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/numbers_test_common.h
@@ -25,12 +25,12 @@
#include "y_absl/base/config.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace strings_internal {
template <typename IntType>
-inline bool Itoa(IntType value, int base, TString* destination) {
+inline bool Itoa(IntType value, int base, TString* destination) {
destination->clear();
if (base <= 1 || base > 36) {
return false;
@@ -179,6 +179,6 @@ inline const std::array<uint64_test_case, 34>& strtouint64_test_cases() {
} // namespace strings_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_STRINGS_INTERNAL_NUMBERS_TEST_COMMON_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/ostringstream.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/ostringstream.cc
index df891f0533..ba18857d83 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/ostringstream.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/ostringstream.cc
@@ -12,9 +12,9 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/strings/internal/ostringstream.h"
+#include "y_absl/strings/internal/ostringstream.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace strings_internal {
@@ -33,4 +33,4 @@ std::streamsize OStringStream::xsputn(const char* s, std::streamsize n) {
} // namespace strings_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/ostringstream.h b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/ostringstream.h
index aa1d8d6658..d00cef9c23 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/ostringstream.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/ostringstream.h
@@ -20,24 +20,24 @@
#include <streambuf>
#include <util/generic/string.h>
-#include "y_absl/base/port.h"
+#include "y_absl/base/port.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace strings_internal {
-// The same as std::ostringstream but appends to a user-specified TString,
+// The same as std::ostringstream but appends to a user-specified TString,
// and is faster. It is ~70% faster to create, ~50% faster to write to, and
-// completely free to extract the result TString.
+// completely free to extract the result TString.
//
-// TString s;
+// TString s;
// OStringStream strm(&s);
// strm << 42 << ' ' << 3.14; // appends to `s`
//
// The stream object doesn't have to be named. Starting from C++11 operator<<
// works with rvalues of std::ostream.
//
-// TString s;
+// TString s;
// OStringStream(&s) << 42 << ' ' << 3.14; // appends to `s`
//
// OStringStream is faster to create than std::ostringstream but it's still
@@ -46,14 +46,14 @@ namespace strings_internal {
//
// Creates unnecessary instances of OStringStream: slow.
//
-// TString s;
+// TString s;
// OStringStream(&s) << 42;
// OStringStream(&s) << ' ';
// OStringStream(&s) << 3.14;
//
// Creates a single instance of OStringStream and reuses it: fast.
//
-// TString s;
+// TString s;
// OStringStream strm(&s);
// strm << 42;
// strm << ' ';
@@ -65,13 +65,13 @@ class OStringStream : private std::basic_streambuf<char>, public std::ostream {
// The argument can be null, in which case you'll need to call str(p) with a
// non-null argument before you can write to the stream.
//
- // The destructor of OStringStream doesn't use the TString. It's OK to
- // destroy the TString before the stream.
- explicit OStringStream(TString* s) : std::ostream(this), s_(s) {}
+ // The destructor of OStringStream doesn't use the TString. It's OK to
+ // destroy the TString before the stream.
+ explicit OStringStream(TString* s) : std::ostream(this), s_(s) {}
- TString* str() { return s_; }
- const TString* str() const { return s_; }
- void str(TString* s) { s_ = s; }
+ TString* str() { return s_; }
+ const TString* str() const { return s_; }
+ void str(TString* s) { s_ = s; }
private:
using Buf = std::basic_streambuf<char>;
@@ -79,11 +79,11 @@ class OStringStream : private std::basic_streambuf<char>, public std::ostream {
Buf::int_type overflow(int c) override;
std::streamsize xsputn(const char* s, std::streamsize n) override;
- TString* s_;
+ TString* s_;
};
} // namespace strings_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_STRINGS_INTERNAL_OSTRINGSTREAM_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/pow10_helper.h b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/pow10_helper.h
index b4a9b1c3db..e4d41d7e4e 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/pow10_helper.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/pow10_helper.h
@@ -24,7 +24,7 @@
#include "y_absl/base/config.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace strings_internal {
@@ -35,6 +35,6 @@ double Pow10(int exp);
} // namespace strings_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_STRINGS_INTERNAL_POW10_HELPER_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/resize_uninitialized.h b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/resize_uninitialized.h
index 9ed8ca2063..14860bb237 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/resize_uninitialized.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/resize_uninitialized.h
@@ -22,10 +22,10 @@
#include <type_traits>
#include <utility>
-#include "y_absl/base/port.h"
-#include "y_absl/meta/type_traits.h" // for void_t
+#include "y_absl/base/port.h"
+#include "y_absl/meta/type_traits.h" // for void_t
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace strings_internal {
@@ -41,7 +41,7 @@ struct ResizeUninitializedTraits {
// __resize_default_init is provided by libc++ >= 8.0
template <typename string_type>
struct ResizeUninitializedTraits<
- string_type, y_absl::void_t<decltype(std::declval<string_type&>()
+ string_type, y_absl::void_t<decltype(std::declval<string_type&>()
.__resize_default_init(237))> > {
using HasMember = std::true_type;
static void Resize(string_type* s, size_t new_size) {
@@ -49,8 +49,8 @@ struct ResizeUninitializedTraits<
}
};
-// Returns true if the TString implementation supports a resize where
-// the new characters added to the TString are left untouched.
+// Returns true if the TString implementation supports a resize where
+// the new characters added to the TString are left untouched.
//
// (A better name might be "STLStringSupportsUninitializedResize", alluding to
// the previous function.)
@@ -62,7 +62,7 @@ inline constexpr bool STLStringSupportsNontrashingResize(string_type*) {
// Like str->resize(new_size), except any new characters added to "*str" as a
// result of resizing may be left uninitialized, rather than being filled with
// '0' bytes. Typically used when code is then going to overwrite the backing
-// store of the TString with known data.
+// store of the TString with known data.
template <typename string_type, typename = void>
inline void STLStringResizeUninitialized(string_type* s, size_t new_size) {
ResizeUninitializedTraits<string_type>::Resize(s, new_size);
@@ -114,6 +114,6 @@ void STLStringResizeUninitializedAmortized(string_type* s, size_t new_size) {
} // namespace strings_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_STRINGS_INTERNAL_RESIZE_UNINITIALIZED_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/stl_type_traits.h b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/stl_type_traits.h
index c082ae4443..db8d4635d0 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/stl_type_traits.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/stl_type_traits.h
@@ -18,9 +18,9 @@
// wrappers of STL containers.
//
// DO NOT INCLUDE THIS FILE DIRECTLY. Use this file by including
-// y_absl/strings/str_split.h.
+// y_absl/strings/str_split.h.
//
-// IWYU pragma: private, include "y_absl/strings/str_split.h"
+// IWYU pragma: private, include "y_absl/strings/str_split.h"
#ifndef ABSL_STRINGS_INTERNAL_STL_TYPE_TRAITS_H_
#define ABSL_STRINGS_INTERNAL_STL_TYPE_TRAITS_H_
@@ -37,9 +37,9 @@
#include <unordered_set>
#include <vector>
-#include "y_absl/meta/type_traits.h"
+#include "y_absl/meta/type_traits.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace strings_internal {
@@ -48,25 +48,25 @@ struct IsSpecializationImpl : std::false_type {};
template <template <typename...> class T, typename... Args>
struct IsSpecializationImpl<T<Args...>, T> : std::true_type {};
template <typename C, template <typename...> class T>
-using IsSpecialization = IsSpecializationImpl<y_absl::decay_t<C>, T>;
+using IsSpecialization = IsSpecializationImpl<y_absl::decay_t<C>, T>;
template <typename C>
struct IsArrayImpl : std::false_type {};
template <template <typename, size_t> class A, typename T, size_t N>
struct IsArrayImpl<A<T, N>> : std::is_same<A<T, N>, std::array<T, N>> {};
template <typename C>
-using IsArray = IsArrayImpl<y_absl::decay_t<C>>;
+using IsArray = IsArrayImpl<y_absl::decay_t<C>>;
template <typename C>
struct IsBitsetImpl : std::false_type {};
template <template <size_t> class B, size_t N>
struct IsBitsetImpl<B<N>> : std::is_same<B<N>, std::bitset<N>> {};
template <typename C>
-using IsBitset = IsBitsetImpl<y_absl::decay_t<C>>;
+using IsBitset = IsBitsetImpl<y_absl::decay_t<C>>;
template <typename C>
struct IsSTLContainer
- : y_absl::disjunction<
+ : y_absl::disjunction<
IsArray<C>, IsBitset<C>, IsSpecialization<C, std::deque>,
IsSpecialization<C, std::forward_list>,
IsSpecialization<C, std::list>, IsSpecialization<C, std::map>,
@@ -85,20 +85,20 @@ struct IsBaseOfSpecializationImpl : std::false_type {};
// template.
template <typename C, template <typename, typename> class T>
struct IsBaseOfSpecializationImpl<
- C, T, y_absl::void_t<typename C::value_type, typename C::allocator_type>>
+ C, T, y_absl::void_t<typename C::value_type, typename C::allocator_type>>
: std::is_base_of<C,
T<typename C::value_type, typename C::allocator_type>> {};
template <typename C, template <typename, typename, typename> class T>
struct IsBaseOfSpecializationImpl<
C, T,
- y_absl::void_t<typename C::key_type, typename C::key_compare,
+ y_absl::void_t<typename C::key_type, typename C::key_compare,
typename C::allocator_type>>
: std::is_base_of<C, T<typename C::key_type, typename C::key_compare,
typename C::allocator_type>> {};
template <typename C, template <typename, typename, typename, typename> class T>
struct IsBaseOfSpecializationImpl<
C, T,
- y_absl::void_t<typename C::key_type, typename C::mapped_type,
+ y_absl::void_t<typename C::key_type, typename C::mapped_type,
typename C::key_compare, typename C::allocator_type>>
: std::is_base_of<C,
T<typename C::key_type, typename C::mapped_type,
@@ -107,7 +107,7 @@ struct IsBaseOfSpecializationImpl<
template <typename C, template <typename, typename, typename, typename> class T>
struct IsBaseOfSpecializationImpl<
C, T,
- y_absl::void_t<typename C::key_type, typename C::hasher,
+ y_absl::void_t<typename C::key_type, typename C::hasher,
typename C::key_equal, typename C::allocator_type>>
: std::is_base_of<C, T<typename C::key_type, typename C::hasher,
typename C::key_equal, typename C::allocator_type>> {
@@ -116,14 +116,14 @@ template <typename C,
template <typename, typename, typename, typename, typename> class T>
struct IsBaseOfSpecializationImpl<
C, T,
- y_absl::void_t<typename C::key_type, typename C::mapped_type,
+ y_absl::void_t<typename C::key_type, typename C::mapped_type,
typename C::hasher, typename C::key_equal,
typename C::allocator_type>>
: std::is_base_of<C, T<typename C::key_type, typename C::mapped_type,
typename C::hasher, typename C::key_equal,
typename C::allocator_type>> {};
template <typename C, template <typename...> class T>
-using IsBaseOfSpecialization = IsBaseOfSpecializationImpl<y_absl::decay_t<C>, T>;
+using IsBaseOfSpecialization = IsBaseOfSpecializationImpl<y_absl::decay_t<C>, T>;
template <typename C>
struct IsBaseOfArrayImpl : std::false_type {};
@@ -131,18 +131,18 @@ template <template <typename, size_t> class A, typename T, size_t N>
struct IsBaseOfArrayImpl<A<T, N>> : std::is_base_of<A<T, N>, std::array<T, N>> {
};
template <typename C>
-using IsBaseOfArray = IsBaseOfArrayImpl<y_absl::decay_t<C>>;
+using IsBaseOfArray = IsBaseOfArrayImpl<y_absl::decay_t<C>>;
template <typename C>
struct IsBaseOfBitsetImpl : std::false_type {};
template <template <size_t> class B, size_t N>
struct IsBaseOfBitsetImpl<B<N>> : std::is_base_of<B<N>, std::bitset<N>> {};
template <typename C>
-using IsBaseOfBitset = IsBaseOfBitsetImpl<y_absl::decay_t<C>>;
+using IsBaseOfBitset = IsBaseOfBitsetImpl<y_absl::decay_t<C>>;
template <typename C>
struct IsBaseOfSTLContainer
- : y_absl::disjunction<IsBaseOfArray<C>, IsBaseOfBitset<C>,
+ : y_absl::disjunction<IsBaseOfArray<C>, IsBaseOfBitset<C>,
IsBaseOfSpecialization<C, std::deque>,
IsBaseOfSpecialization<C, std::forward_list>,
IsBaseOfSpecialization<C, std::list>,
@@ -163,20 +163,20 @@ struct IsConvertibleToSpecializationImpl : std::false_type {};
// STL template.
template <typename C, template <typename, typename> class T>
struct IsConvertibleToSpecializationImpl<
- C, T, y_absl::void_t<typename C::value_type, typename C::allocator_type>>
+ C, T, y_absl::void_t<typename C::value_type, typename C::allocator_type>>
: std::is_convertible<
C, T<typename C::value_type, typename C::allocator_type>> {};
template <typename C, template <typename, typename, typename> class T>
struct IsConvertibleToSpecializationImpl<
C, T,
- y_absl::void_t<typename C::key_type, typename C::key_compare,
+ y_absl::void_t<typename C::key_type, typename C::key_compare,
typename C::allocator_type>>
: std::is_convertible<C, T<typename C::key_type, typename C::key_compare,
typename C::allocator_type>> {};
template <typename C, template <typename, typename, typename, typename> class T>
struct IsConvertibleToSpecializationImpl<
C, T,
- y_absl::void_t<typename C::key_type, typename C::mapped_type,
+ y_absl::void_t<typename C::key_type, typename C::mapped_type,
typename C::key_compare, typename C::allocator_type>>
: std::is_convertible<
C, T<typename C::key_type, typename C::mapped_type,
@@ -184,7 +184,7 @@ struct IsConvertibleToSpecializationImpl<
template <typename C, template <typename, typename, typename, typename> class T>
struct IsConvertibleToSpecializationImpl<
C, T,
- y_absl::void_t<typename C::key_type, typename C::hasher,
+ y_absl::void_t<typename C::key_type, typename C::hasher,
typename C::key_equal, typename C::allocator_type>>
: std::is_convertible<
C, T<typename C::key_type, typename C::hasher, typename C::key_equal,
@@ -193,7 +193,7 @@ template <typename C,
template <typename, typename, typename, typename, typename> class T>
struct IsConvertibleToSpecializationImpl<
C, T,
- y_absl::void_t<typename C::key_type, typename C::mapped_type,
+ y_absl::void_t<typename C::key_type, typename C::mapped_type,
typename C::hasher, typename C::key_equal,
typename C::allocator_type>>
: std::is_convertible<C, T<typename C::key_type, typename C::mapped_type,
@@ -201,7 +201,7 @@ struct IsConvertibleToSpecializationImpl<
typename C::allocator_type>> {};
template <typename C, template <typename...> class T>
using IsConvertibleToSpecialization =
- IsConvertibleToSpecializationImpl<y_absl::decay_t<C>, T>;
+ IsConvertibleToSpecializationImpl<y_absl::decay_t<C>, T>;
template <typename C>
struct IsConvertibleToArrayImpl : std::false_type {};
@@ -209,7 +209,7 @@ template <template <typename, size_t> class A, typename T, size_t N>
struct IsConvertibleToArrayImpl<A<T, N>>
: std::is_convertible<A<T, N>, std::array<T, N>> {};
template <typename C>
-using IsConvertibleToArray = IsConvertibleToArrayImpl<y_absl::decay_t<C>>;
+using IsConvertibleToArray = IsConvertibleToArrayImpl<y_absl::decay_t<C>>;
template <typename C>
struct IsConvertibleToBitsetImpl : std::false_type {};
@@ -217,11 +217,11 @@ template <template <size_t> class B, size_t N>
struct IsConvertibleToBitsetImpl<B<N>>
: std::is_convertible<B<N>, std::bitset<N>> {};
template <typename C>
-using IsConvertibleToBitset = IsConvertibleToBitsetImpl<y_absl::decay_t<C>>;
+using IsConvertibleToBitset = IsConvertibleToBitsetImpl<y_absl::decay_t<C>>;
template <typename C>
struct IsConvertibleToSTLContainer
- : y_absl::disjunction<
+ : y_absl::disjunction<
IsConvertibleToArray<C>, IsConvertibleToBitset<C>,
IsConvertibleToSpecialization<C, std::deque>,
IsConvertibleToSpecialization<C, std::forward_list>,
@@ -238,11 +238,11 @@ struct IsConvertibleToSTLContainer
template <typename C>
struct IsStrictlyBaseOfAndConvertibleToSTLContainer
- : y_absl::conjunction<y_absl::negation<IsSTLContainer<C>>,
+ : y_absl::conjunction<y_absl::negation<IsSTLContainer<C>>,
IsBaseOfSTLContainer<C>,
IsConvertibleToSTLContainer<C>> {};
} // namespace strings_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_STRINGS_INTERNAL_STL_TYPE_TRAITS_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/arg.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/arg.cc
index cc80be14e4..8d5c3b61ac 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/arg.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/arg.cc
@@ -16,7 +16,7 @@
// POSIX spec:
// http://pubs.opengroup.org/onlinepubs/009695399/functions/fprintf.html
//
-#include "y_absl/strings/internal/str_format/arg.h"
+#include "y_absl/strings/internal/str_format/arg.h"
#include <cassert>
#include <cerrno>
@@ -24,11 +24,11 @@
#include <util/generic/string.h>
#include <type_traits>
-#include "y_absl/base/port.h"
-#include "y_absl/strings/internal/str_format/float_conversion.h"
+#include "y_absl/base/port.h"
+#include "y_absl/strings/internal/str_format/float_conversion.h"
#include "y_absl/strings/numbers.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace str_format_internal {
namespace {
@@ -46,20 +46,20 @@ void ReducePadding(size_t n, size_t *capacity) {
template <typename T>
struct MakeUnsigned : std::make_unsigned<T> {};
template <>
-struct MakeUnsigned<y_absl::int128> {
- using type = y_absl::uint128;
+struct MakeUnsigned<y_absl::int128> {
+ using type = y_absl::uint128;
};
template <>
-struct MakeUnsigned<y_absl::uint128> {
- using type = y_absl::uint128;
+struct MakeUnsigned<y_absl::uint128> {
+ using type = y_absl::uint128;
};
template <typename T>
struct IsSigned : std::is_signed<T> {};
template <>
-struct IsSigned<y_absl::int128> : std::true_type {};
+struct IsSigned<y_absl::int128> : std::true_type {};
template <>
-struct IsSigned<y_absl::uint128> : std::false_type {};
+struct IsSigned<y_absl::uint128> : std::false_type {};
// Integral digit printer.
// Call one of the PrintAs* routines after construction once.
@@ -467,12 +467,12 @@ IntegralConvertResult FormatConvertImpl(unsigned long long v, // NOLINT
FormatSinkImpl *sink) {
return {ConvertIntArg(v, conv, sink)};
}
-IntegralConvertResult FormatConvertImpl(y_absl::int128 v,
+IntegralConvertResult FormatConvertImpl(y_absl::int128 v,
const FormatConversionSpecImpl conv,
FormatSinkImpl *sink) {
return {ConvertIntArg(v, conv, sink)};
}
-IntegralConvertResult FormatConvertImpl(y_absl::uint128 v,
+IntegralConvertResult FormatConvertImpl(y_absl::uint128 v,
const FormatConversionSpecImpl conv,
FormatSinkImpl *sink) {
return {ConvertIntArg(v, conv, sink)};
@@ -485,4 +485,4 @@ ABSL_INTERNAL_FORMAT_DISPATCH_OVERLOADS_EXPAND_();
} // namespace str_format_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/arg.h b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/arg.h
index 3ea87a3c30..59b7bcc727 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/arg.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/arg.h
@@ -27,13 +27,13 @@
#include <util/stream/str.h>
#include <type_traits>
-#include "y_absl/base/port.h"
-#include "y_absl/meta/type_traits.h"
-#include "y_absl/numeric/int128.h"
-#include "y_absl/strings/internal/str_format/extension.h"
-#include "y_absl/strings/string_view.h"
+#include "y_absl/base/port.h"
+#include "y_absl/meta/type_traits.h"
+#include "y_absl/numeric/int128.h"
+#include "y_absl/strings/internal/str_format/extension.h"
+#include "y_absl/strings/string_view.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
class Cord;
@@ -261,7 +261,7 @@ struct FormatCountCaptureHelper {
static ArgConvertResult<FormatConversionCharSetInternal::n> ConvertHelper(
const FormatCountCapture& v, FormatConversionSpecImpl conv,
FormatSinkImpl* sink) {
- const y_absl::enable_if_t<sizeof(T) != 0, FormatCountCapture>& v2 = v;
+ const y_absl::enable_if_t<sizeof(T) != 0, FormatCountCapture>& v2 = v;
if (conv.conversion_char() !=
str_format_internal::FormatConversionCharInternal::n) {
@@ -515,7 +515,7 @@ class FormatArgImpl {
ABSL_INTERNAL_FORMAT_DISPATCH_INSTANTIATE_(double, __VA_ARGS__); \
ABSL_INTERNAL_FORMAT_DISPATCH_INSTANTIATE_(long double, __VA_ARGS__); \
ABSL_INTERNAL_FORMAT_DISPATCH_INSTANTIATE_(const char*, __VA_ARGS__); \
- ABSL_INTERNAL_FORMAT_DISPATCH_INSTANTIATE_(TString, __VA_ARGS__); \
+ ABSL_INTERNAL_FORMAT_DISPATCH_INSTANTIATE_(TString, __VA_ARGS__); \
ABSL_INTERNAL_FORMAT_DISPATCH_INSTANTIATE_(string_view, __VA_ARGS__)
ABSL_INTERNAL_FORMAT_DISPATCH_OVERLOADS_EXPAND_(extern);
@@ -523,6 +523,6 @@ ABSL_INTERNAL_FORMAT_DISPATCH_OVERLOADS_EXPAND_(extern);
} // namespace str_format_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_STRINGS_INTERNAL_STR_FORMAT_ARG_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/bind.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/bind.cc
index a728a33344..211ce25dea 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/bind.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/bind.cc
@@ -12,21 +12,21 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/strings/internal/str_format/bind.h"
+#include "y_absl/strings/internal/str_format/bind.h"
#include <cerrno>
#include <limits>
#include <sstream>
#include <util/generic/string.h>
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace str_format_internal {
namespace {
inline bool BindFromPosition(int position, int* value,
- y_absl::Span<const FormatArgImpl> pack) {
+ y_absl::Span<const FormatArgImpl> pack) {
assert(position > 0);
if (static_cast<size_t>(position) > pack.size()) {
return false;
@@ -37,7 +37,7 @@ inline bool BindFromPosition(int position, int* value,
class ArgContext {
public:
- explicit ArgContext(y_absl::Span<const FormatArgImpl> pack) : pack_(pack) {}
+ explicit ArgContext(y_absl::Span<const FormatArgImpl> pack) : pack_(pack) {}
// Fill 'bound' with the results of applying the context's argument pack
// to the specified 'unbound'. We synthesize a BoundConversion by
@@ -48,7 +48,7 @@ class ArgContext {
bool Bind(const UnboundConversion* unbound, BoundConversion* bound);
private:
- y_absl::Span<const FormatArgImpl> pack_;
+ y_absl::Span<const FormatArgImpl> pack_;
};
inline bool ArgContext::Bind(const UnboundConversion* unbound,
@@ -102,7 +102,7 @@ inline bool ArgContext::Bind(const UnboundConversion* unbound,
template <typename Converter>
class ConverterConsumer {
public:
- ConverterConsumer(Converter converter, y_absl::Span<const FormatArgImpl> pack)
+ ConverterConsumer(Converter converter, y_absl::Span<const FormatArgImpl> pack)
: converter_(converter), arg_context_(pack) {}
bool Append(string_view s) {
@@ -122,7 +122,7 @@ class ConverterConsumer {
template <typename Converter>
bool ConvertAll(const UntypedFormatSpecImpl format,
- y_absl::Span<const FormatArgImpl> args, Converter converter) {
+ y_absl::Span<const FormatArgImpl> args, Converter converter) {
if (format.has_parsed_conversion()) {
return format.parsed_conversion()->ProcessFormat(
ConverterConsumer<Converter>(converter, args));
@@ -172,15 +172,15 @@ class SummarizingConverter {
} // namespace
bool BindWithPack(const UnboundConversion* props,
- y_absl::Span<const FormatArgImpl> pack,
+ y_absl::Span<const FormatArgImpl> pack,
BoundConversion* bound) {
return ArgContext(pack).Bind(props, bound);
}
-TString Summarize(const UntypedFormatSpecImpl format,
- y_absl::Span<const FormatArgImpl> args) {
+TString Summarize(const UntypedFormatSpecImpl format,
+ y_absl::Span<const FormatArgImpl> args) {
typedef SummarizingConverter Converter;
- TString out;
+ TString out;
{
// inner block to destroy sink before returning out. It ensures a last
// flush.
@@ -194,7 +194,7 @@ TString Summarize(const UntypedFormatSpecImpl format,
bool FormatUntyped(FormatRawSinkImpl raw_sink,
const UntypedFormatSpecImpl format,
- y_absl::Span<const FormatArgImpl> args) {
+ y_absl::Span<const FormatArgImpl> args) {
FormatSinkImpl sink(raw_sink);
using Converter = DefaultConverter;
return ConvertAll(format, args, Converter(&sink));
@@ -205,8 +205,8 @@ std::ostream& Streamable::Print(std::ostream& os) const {
return os;
}
-TString& AppendPack(TString* out, const UntypedFormatSpecImpl format,
- y_absl::Span<const FormatArgImpl> args) {
+TString& AppendPack(TString* out, const UntypedFormatSpecImpl format,
+ y_absl::Span<const FormatArgImpl> args) {
size_t orig = out->size();
if (ABSL_PREDICT_FALSE(!FormatUntyped(out, format, args))) {
out->erase(orig);
@@ -214,9 +214,9 @@ TString& AppendPack(TString* out, const UntypedFormatSpecImpl format,
return *out;
}
-TString FormatPack(const UntypedFormatSpecImpl format,
- y_absl::Span<const FormatArgImpl> args) {
- TString out;
+TString FormatPack(const UntypedFormatSpecImpl format,
+ y_absl::Span<const FormatArgImpl> args) {
+ TString out;
if (ABSL_PREDICT_FALSE(!FormatUntyped(&out, format, args))) {
out.clear();
}
@@ -224,7 +224,7 @@ TString FormatPack(const UntypedFormatSpecImpl format,
}
int FprintF(std::FILE* output, const UntypedFormatSpecImpl format,
- y_absl::Span<const FormatArgImpl> args) {
+ y_absl::Span<const FormatArgImpl> args) {
FILERawSink sink(output);
if (!FormatUntyped(&sink, format, args)) {
errno = EINVAL;
@@ -242,7 +242,7 @@ int FprintF(std::FILE* output, const UntypedFormatSpecImpl format,
}
int SnprintF(char* output, size_t size, const UntypedFormatSpecImpl format,
- y_absl::Span<const FormatArgImpl> args) {
+ y_absl::Span<const FormatArgImpl> args) {
BufferRawSink sink(output, size ? size - 1 : 0);
if (!FormatUntyped(&sink, format, args)) {
errno = EINVAL;
@@ -255,4 +255,4 @@ int SnprintF(char* output, size_t size, const UntypedFormatSpecImpl format,
} // namespace str_format_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/bind.h b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/bind.h
index b2e4326b5d..3966610710 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/bind.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/bind.h
@@ -20,13 +20,13 @@
#include <sstream>
#include <util/generic/string.h>
-#include "y_absl/base/port.h"
-#include "y_absl/strings/internal/str_format/arg.h"
-#include "y_absl/strings/internal/str_format/checker.h"
-#include "y_absl/strings/internal/str_format/parser.h"
-#include "y_absl/types/span.h"
+#include "y_absl/base/port.h"
+#include "y_absl/strings/internal/str_format/arg.h"
+#include "y_absl/strings/internal/str_format/checker.h"
+#include "y_absl/strings/internal/str_format/parser.h"
+#include "y_absl/types/span.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
class UntypedFormatSpec;
@@ -145,13 +145,13 @@ class FormatSpecTemplate
class Streamable {
public:
Streamable(const UntypedFormatSpecImpl& format,
- y_absl::Span<const FormatArgImpl> args)
+ y_absl::Span<const FormatArgImpl> args)
: format_(format) {
if (args.size() <= ABSL_ARRAYSIZE(few_args_)) {
for (size_t i = 0; i < args.size(); ++i) {
few_args_[i] = args[i];
}
- args_ = y_absl::MakeSpan(few_args_, args.size());
+ args_ = y_absl::MakeSpan(few_args_, args.size());
} else {
many_args_.assign(args.begin(), args.end());
args_ = many_args_;
@@ -166,7 +166,7 @@ class Streamable {
private:
const UntypedFormatSpecImpl& format_;
- y_absl::Span<const FormatArgImpl> args_;
+ y_absl::Span<const FormatArgImpl> args_;
// if args_.size() is 4 or less:
FormatArgImpl few_args_[4] = {FormatArgImpl(0), FormatArgImpl(0),
FormatArgImpl(0), FormatArgImpl(0)};
@@ -175,27 +175,27 @@ class Streamable {
};
// for testing
-TString Summarize(UntypedFormatSpecImpl format,
- y_absl::Span<const FormatArgImpl> args);
+TString Summarize(UntypedFormatSpecImpl format,
+ y_absl::Span<const FormatArgImpl> args);
bool BindWithPack(const UnboundConversion* props,
- y_absl::Span<const FormatArgImpl> pack, BoundConversion* bound);
+ y_absl::Span<const FormatArgImpl> pack, BoundConversion* bound);
bool FormatUntyped(FormatRawSinkImpl raw_sink,
UntypedFormatSpecImpl format,
- y_absl::Span<const FormatArgImpl> args);
+ y_absl::Span<const FormatArgImpl> args);
-TString& AppendPack(TString* out, UntypedFormatSpecImpl format,
- y_absl::Span<const FormatArgImpl> args);
+TString& AppendPack(TString* out, UntypedFormatSpecImpl format,
+ y_absl::Span<const FormatArgImpl> args);
-TString FormatPack(const UntypedFormatSpecImpl format,
- y_absl::Span<const FormatArgImpl> args);
+TString FormatPack(const UntypedFormatSpecImpl format,
+ y_absl::Span<const FormatArgImpl> args);
int FprintF(std::FILE* output, UntypedFormatSpecImpl format,
- y_absl::Span<const FormatArgImpl> args);
+ y_absl::Span<const FormatArgImpl> args);
int SnprintF(char* output, size_t size, UntypedFormatSpecImpl format,
- y_absl::Span<const FormatArgImpl> args);
+ y_absl::Span<const FormatArgImpl> args);
-// Returned by Streamed(v). Converts via '%s' to the TString created
+// Returned by Streamed(v). Converts via '%s' to the TString created
// by std::ostream << v.
template <typename T>
class StreamedWrapper {
@@ -212,6 +212,6 @@ class StreamedWrapper {
} // namespace str_format_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_STRINGS_INTERNAL_STR_FORMAT_BIND_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/checker.h b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/checker.h
index 8ec89dd294..7c530d2507 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/checker.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/checker.h
@@ -16,8 +16,8 @@
#define ABSL_STRINGS_INTERNAL_STR_FORMAT_CHECKER_H_
#include "y_absl/base/attributes.h"
-#include "y_absl/strings/internal/str_format/arg.h"
-#include "y_absl/strings/internal/str_format/extension.h"
+#include "y_absl/strings/internal/str_format/arg.h"
+#include "y_absl/strings/internal/str_format/extension.h"
// Compile time check support for entry points.
@@ -27,7 +27,7 @@
#endif // ABSL_HAVE_ATTRIBUTE(enable_if) && !defined(__native_client__)
#endif // ABSL_INTERNAL_ENABLE_FORMAT_CHECKER
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace str_format_internal {
@@ -328,6 +328,6 @@ constexpr bool ValidFormatImpl(string_view format) {
} // namespace str_format_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_STRINGS_INTERNAL_STR_FORMAT_CHECKER_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/extension.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/extension.cc
index efc93c046c..f2a4169ae7 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/extension.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/extension.cc
@@ -13,18 +13,18 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/strings/internal/str_format/extension.h"
+#include "y_absl/strings/internal/str_format/extension.h"
#include <errno.h>
#include <algorithm>
#include <util/generic/string.h>
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace str_format_internal {
TString FlagsToString(Flags v) {
- TString s;
+ TString s;
s.append(FlagsContains(v, Flags::kLeft) ? "-" : "");
s.append(FlagsContains(v, Flags::kShowPos) ? "+" : "");
s.append(FlagsContains(v, Flags::kSignCol) ? " " : "");
@@ -72,4 +72,4 @@ bool FormatSinkImpl::PutPaddedString(string_view value, int width,
} // namespace str_format_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/extension.h b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/extension.h
index 02697a1324..e5de5cb6a1 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/extension.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/extension.h
@@ -23,12 +23,12 @@
#include <ostream>
#include "y_absl/base/config.h"
-#include "y_absl/base/port.h"
+#include "y_absl/base/port.h"
#include "y_absl/meta/type_traits.h"
-#include "y_absl/strings/internal/str_format/output.h"
-#include "y_absl/strings/string_view.h"
+#include "y_absl/strings/internal/str_format/output.h"
+#include "y_absl/strings/string_view.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
enum class FormatConversionChar : uint8_t;
@@ -440,6 +440,6 @@ inline size_t Excess(size_t used, size_t capacity) {
} // namespace str_format_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_STRINGS_INTERNAL_STR_FORMAT_EXTENSION_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/float_conversion.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/float_conversion.cc
index c56af14d5c..c49062538d 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/float_conversion.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/float_conversion.cc
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/strings/internal/str_format/float_conversion.h"
+#include "y_absl/strings/internal/str_format/float_conversion.h"
#include <string.h>
@@ -23,7 +23,7 @@
#include <util/generic/string.h>
#include "y_absl/base/attributes.h"
-#include "y_absl/base/config.h"
+#include "y_absl/base/config.h"
#include "y_absl/base/optimization.h"
#include "y_absl/functional/function_ref.h"
#include "y_absl/meta/type_traits.h"
@@ -34,7 +34,7 @@
#include "y_absl/types/optional.h"
#include "y_absl/types/span.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace str_format_internal {
@@ -955,7 +955,7 @@ bool FallbackToSnprintf(const Float v, const FormatConversionSpecImpl &conv,
*fp = 0;
assert(fp < fmt + sizeof(fmt));
}
- TString space(512, '\0');
+ TString space(512, '\0');
y_absl::string_view result;
while (true) {
int n = snprintf(&space[0], space.size(), fmt, w, p, v);
@@ -1420,4 +1420,4 @@ bool ConvertFloatImpl(double v, const FormatConversionSpecImpl &conv,
} // namespace str_format_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/float_conversion.h b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/float_conversion.h
index 78c57edf1b..d93a415756 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/float_conversion.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/float_conversion.h
@@ -15,9 +15,9 @@
#ifndef ABSL_STRINGS_INTERNAL_STR_FORMAT_FLOAT_CONVERSION_H_
#define ABSL_STRINGS_INTERNAL_STR_FORMAT_FLOAT_CONVERSION_H_
-#include "y_absl/strings/internal/str_format/extension.h"
+#include "y_absl/strings/internal/str_format/extension.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace str_format_internal {
@@ -32,6 +32,6 @@ bool ConvertFloatImpl(long double v, const FormatConversionSpecImpl &conv,
} // namespace str_format_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_STRINGS_INTERNAL_STR_FORMAT_FLOAT_CONVERSION_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/output.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/output.cc
index cbe31f2d94..ade3f67ef2 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/output.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/output.cc
@@ -12,12 +12,12 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/strings/internal/str_format/output.h"
+#include "y_absl/strings/internal/str_format/output.h"
#include <errno.h>
#include <cstring>
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace str_format_internal {
@@ -69,4 +69,4 @@ void FILERawSink::Write(string_view v) {
} // namespace str_format_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/output.h b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/output.h
index 5ff7c5435a..8fc46fbafa 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/output.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/output.h
@@ -25,8 +25,8 @@
#include <ostream>
#include <util/generic/string.h>
-#include "y_absl/base/port.h"
-#include "y_absl/strings/string_view.h"
+#include "y_absl/base/port.h"
+#include "y_absl/strings/string_view.h"
namespace y_absl {
ABSL_NAMESPACE_BEGIN
@@ -67,7 +67,7 @@ class FILERawSink {
};
// Provide RawSink integration with common types from the STL.
-inline void AbslFormatFlush(TString* out, string_view s) {
+inline void AbslFormatFlush(TString* out, string_view s) {
out->append(s.data(), s.size());
}
inline void AbslFormatFlush(std::ostream* out, string_view s) {
@@ -91,6 +91,6 @@ auto InvokeFlush(T* out, string_view s) -> decltype(AbslFormatFlush(out, s)) {
} // namespace str_format_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_STRINGS_INTERNAL_STR_FORMAT_OUTPUT_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/parser.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/parser.cc
index 56e52a214c..af07e32fe5 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/parser.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/parser.cc
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/strings/internal/str_format/parser.h"
+#include "y_absl/strings/internal/str_format/parser.h"
#include <assert.h>
#include <string.h>
@@ -27,7 +27,7 @@
#include <util/generic/string.h>
#include <unordered_set>
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace str_format_internal {
@@ -336,4 +336,4 @@ bool ParsedFormatBase::MatchesConversions(
} // namespace str_format_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/parser.h b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/parser.h
index e8beb3c5e7..ba614bb8b4 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/parser.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/parser.h
@@ -28,10 +28,10 @@
#include <util/generic/string.h>
#include <vector>
-#include "y_absl/strings/internal/str_format/checker.h"
-#include "y_absl/strings/internal/str_format/extension.h"
+#include "y_absl/strings/internal/str_format/checker.h"
+#include "y_absl/strings/internal/str_format/extension.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace str_format_internal {
@@ -352,6 +352,6 @@ class ExtendedParsedFormat : public str_format_internal::ParsedFormatBase {
};
} // namespace str_format_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_STRINGS_INTERNAL_STR_FORMAT_PARSER_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/ya.make b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/ya.make
index 2cf0a66cd3..ff8069cd0f 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/ya.make
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format/ya.make
@@ -12,13 +12,13 @@ LICENSE(Apache-2.0)
LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
PEERDIR(
- contrib/restricted/abseil-cpp-tstring/y_absl/base
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/throw_delegate
- contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
- contrib/restricted/abseil-cpp-tstring/y_absl/numeric
- contrib/restricted/abseil-cpp-tstring/y_absl/strings
+ contrib/restricted/abseil-cpp-tstring/y_absl/base
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/throw_delegate
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
+ contrib/restricted/abseil-cpp-tstring/y_absl/numeric
+ contrib/restricted/abseil-cpp-tstring/y_absl/strings
contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/absl_strings_internal
)
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_join_internal.h b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_join_internal.h
index 33f875c913..0a220fa33d 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_join_internal.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_join_internal.h
@@ -24,9 +24,9 @@
// - JoinTuple()
//
// DO NOT INCLUDE THIS FILE DIRECTLY. Use this file by including
-// y_absl/strings/str_join.h
+// y_absl/strings/str_join.h
//
-// IWYU pragma: private, include "y_absl/strings/str_join.h"
+// IWYU pragma: private, include "y_absl/strings/str_join.h"
#ifndef ABSL_STRINGS_INTERNAL_STR_JOIN_INTERNAL_H_
#define ABSL_STRINGS_INTERNAL_STR_JOIN_INTERNAL_H_
@@ -38,11 +38,11 @@
#include <type_traits>
#include <utility>
-#include "y_absl/strings/internal/ostringstream.h"
-#include "y_absl/strings/internal/resize_uninitialized.h"
-#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/internal/ostringstream.h"
+#include "y_absl/strings/internal/resize_uninitialized.h"
+#include "y_absl/strings/str_cat.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace strings_internal {
@@ -59,11 +59,11 @@ struct AlphaNumFormatterImpl {
// This template is needed in order to support passing in a dereferenced
// vector<bool>::iterator
template <typename T>
- void operator()(TString* out, const T& t) const {
+ void operator()(TString* out, const T& t) const {
StrAppend(out, AlphaNum(t));
}
- void operator()(TString* out, const AlphaNum& t) const {
+ void operator()(TString* out, const AlphaNum& t) const {
StrAppend(out, t);
}
};
@@ -80,7 +80,7 @@ class StreamFormatterImpl {
// The method isn't const because it mutates state. Making it const will
// render StreamFormatterImpl thread-hostile.
template <typename T>
- void operator()(TString* out, const T& t) {
+ void operator()(TString* out, const T& t) {
// The stream is created lazily to avoid paying the relatively high cost
// of its construction when joining an empty range.
if (strm_) {
@@ -101,18 +101,18 @@ class StreamFormatterImpl {
template <typename F1, typename F2>
class PairFormatterImpl {
public:
- PairFormatterImpl(F1 f1, y_absl::string_view sep, F2 f2)
+ PairFormatterImpl(F1 f1, y_absl::string_view sep, F2 f2)
: f1_(std::move(f1)), sep_(sep), f2_(std::move(f2)) {}
template <typename T>
- void operator()(TString* out, const T& p) {
+ void operator()(TString* out, const T& p) {
f1_(out, p.first);
out->append(sep_);
f2_(out, p.second);
}
template <typename T>
- void operator()(TString* out, const T& p) const {
+ void operator()(TString* out, const T& p) const {
f1_(out, p.first);
out->append(sep_);
f2_(out, p.second);
@@ -120,7 +120,7 @@ class PairFormatterImpl {
private:
F1 f1_;
- TString sep_;
+ TString sep_;
F2 f2_;
};
@@ -135,12 +135,12 @@ class DereferenceFormatterImpl {
: f_(std::forward<Formatter>(f)) {}
template <typename T>
- void operator()(TString* out, const T& t) {
+ void operator()(TString* out, const T& t) {
f_(out, *t);
}
template <typename T>
- void operator()(TString* out, const T& t) const {
+ void operator()(TString* out, const T& t) const {
f_(out, *t);
}
@@ -168,11 +168,11 @@ struct DefaultFormatter<char*> {
typedef AlphaNumFormatterImpl Type;
};
template <>
-struct DefaultFormatter<TString> {
+struct DefaultFormatter<TString> {
typedef NoFormatter Type;
};
template <>
-struct DefaultFormatter<y_absl::string_view> {
+struct DefaultFormatter<y_absl::string_view> {
typedef NoFormatter Type;
};
template <typename ValueType>
@@ -193,10 +193,10 @@ struct DefaultFormatter<std::unique_ptr<ValueType>>
// iterator range, each separated by the given separator, into an output string,
// and formats each element using the provided Formatter object.
template <typename Iterator, typename Formatter>
-TString JoinAlgorithm(Iterator start, Iterator end, y_absl::string_view s,
+TString JoinAlgorithm(Iterator start, Iterator end, y_absl::string_view s,
Formatter&& f) {
- TString result;
- y_absl::string_view sep("");
+ TString result;
+ y_absl::string_view sep("");
for (Iterator it = start; it != end; ++it) {
result.append(sep.data(), sep.size());
f(&result, *it);
@@ -208,12 +208,12 @@ TString JoinAlgorithm(Iterator start, Iterator end, y_absl::string_view s,
// A joining algorithm that's optimized for a forward iterator range of
// string-like objects that do not need any additional formatting. This is to
// optimize the common case of joining, say, a std::vector<string> or a
-// std::vector<y_absl::string_view>.
+// std::vector<y_absl::string_view>.
//
// This is an overload of the previous JoinAlgorithm() function. Here the
// Formatter argument is of type NoFormatter. Since NoFormatter is an internal
// type, this overload is only invoked when strings::Join() is called with a
-// range of string-like objects (e.g., TString, y_absl::string_view), and an
+// range of string-like objects (e.g., TString, y_absl::string_view), and an
// explicit Formatter argument was NOT specified.
//
// The optimization is that the needed space will be reserved in the output
@@ -224,9 +224,9 @@ template <typename Iterator,
typename = typename std::enable_if<std::is_convertible<
typename std::iterator_traits<Iterator>::iterator_category,
std::forward_iterator_tag>::value>::type>
-TString JoinAlgorithm(Iterator start, Iterator end, y_absl::string_view s,
+TString JoinAlgorithm(Iterator start, Iterator end, y_absl::string_view s,
NoFormatter) {
- TString result;
+ TString result;
if (start != end) {
// Sums size
size_t result_size = start->size();
@@ -262,7 +262,7 @@ TString JoinAlgorithm(Iterator start, Iterator end, y_absl::string_view s,
template <size_t I, size_t N>
struct JoinTupleLoop {
template <typename Tup, typename Formatter>
- void operator()(TString* out, const Tup& tup, y_absl::string_view sep,
+ void operator()(TString* out, const Tup& tup, y_absl::string_view sep,
Formatter&& fmt) {
if (I > 0) out->append(sep.data(), sep.size());
fmt(out, std::get<I>(tup));
@@ -272,20 +272,20 @@ struct JoinTupleLoop {
template <size_t N>
struct JoinTupleLoop<N, N> {
template <typename Tup, typename Formatter>
- void operator()(TString*, const Tup&, y_absl::string_view, Formatter&&) {}
+ void operator()(TString*, const Tup&, y_absl::string_view, Formatter&&) {}
};
template <typename... T, typename Formatter>
-TString JoinAlgorithm(const std::tuple<T...>& tup, y_absl::string_view sep,
+TString JoinAlgorithm(const std::tuple<T...>& tup, y_absl::string_view sep,
Formatter&& fmt) {
- TString result;
+ TString result;
JoinTupleLoop<0, sizeof...(T)>()(&result, tup, sep, fmt);
return result;
}
template <typename Iterator>
-TString JoinRange(Iterator first, Iterator last,
- y_absl::string_view separator) {
+TString JoinRange(Iterator first, Iterator last,
+ y_absl::string_view separator) {
// No formatter was explicitly given, so a default must be chosen.
typedef typename std::iterator_traits<Iterator>::value_type ValueType;
typedef typename DefaultFormatter<ValueType>::Type Formatter;
@@ -293,7 +293,7 @@ TString JoinRange(Iterator first, Iterator last,
}
template <typename Range, typename Formatter>
-TString JoinRange(const Range& range, y_absl::string_view separator,
+TString JoinRange(const Range& range, y_absl::string_view separator,
Formatter&& fmt) {
using std::begin;
using std::end;
@@ -301,7 +301,7 @@ TString JoinRange(const Range& range, y_absl::string_view separator,
}
template <typename Range>
-TString JoinRange(const Range& range, y_absl::string_view separator) {
+TString JoinRange(const Range& range, y_absl::string_view separator) {
using std::begin;
using std::end;
return JoinRange(begin(range), end(range), separator);
@@ -309,6 +309,6 @@ TString JoinRange(const Range& range, y_absl::string_view separator) {
} // namespace strings_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_STRINGS_INTERNAL_STR_JOIN_INTERNAL_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_split_internal.h b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_split_internal.h
index 0f787b1bdc..237864c0ed 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_split_internal.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_split_internal.h
@@ -22,9 +22,9 @@
// - Splitter<>
//
// DO NOT INCLUDE THIS FILE DIRECTLY. Use this file by including
-// y_absl/strings/str_split.h.
+// y_absl/strings/str_split.h.
//
-// IWYU pragma: private, include "y_absl/strings/str_split.h"
+// IWYU pragma: private, include "y_absl/strings/str_split.h"
#ifndef ABSL_STRINGS_INTERNAL_STR_SPLIT_INTERNAL_H_
#define ABSL_STRINGS_INTERNAL_STR_SPLIT_INTERNAL_H_
@@ -37,20 +37,20 @@
#include <utility>
#include <vector>
-#include "y_absl/base/macros.h"
-#include "y_absl/base/port.h"
-#include "y_absl/meta/type_traits.h"
-#include "y_absl/strings/string_view.h"
+#include "y_absl/base/macros.h"
+#include "y_absl/base/port.h"
+#include "y_absl/meta/type_traits.h"
+#include "y_absl/strings/string_view.h"
#ifdef _GLIBCXX_DEBUG
-#include "y_absl/strings/internal/stl_type_traits.h"
+#include "y_absl/strings/internal/stl_type_traits.h"
#endif // _GLIBCXX_DEBUG
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace strings_internal {
-// This class is implicitly constructible from everything that y_absl::string_view
+// This class is implicitly constructible from everything that y_absl::string_view
// is implicitly constructible from, except for rvalue strings. This means it
// can be used as a function parameter in places where passing a temporary
// string might cause memory lifetime issues.
@@ -59,19 +59,19 @@ class ConvertibleToStringView {
ConvertibleToStringView(const char* s) // NOLINT(runtime/explicit)
: value_(s) {}
ConvertibleToStringView(char* s) : value_(s) {} // NOLINT(runtime/explicit)
- ConvertibleToStringView(y_absl::string_view s) // NOLINT(runtime/explicit)
+ ConvertibleToStringView(y_absl::string_view s) // NOLINT(runtime/explicit)
: value_(s) {}
- ConvertibleToStringView(const TString& s) // NOLINT(runtime/explicit)
+ ConvertibleToStringView(const TString& s) // NOLINT(runtime/explicit)
: value_(s) {}
// Disable conversion from rvalue strings.
ConvertibleToStringView(TString&& s) = delete;
ConvertibleToStringView(const TString&& s) = delete;
- y_absl::string_view value() const { return value_; }
+ y_absl::string_view value() const { return value_; }
private:
- y_absl::string_view value_;
+ y_absl::string_view value_;
};
// An iterator that enumerates the parts of a string from a Splitter. The text
@@ -84,7 +84,7 @@ template <typename Splitter>
class SplitIterator {
public:
using iterator_category = std::input_iterator_tag;
- using value_type = y_absl::string_view;
+ using value_type = y_absl::string_view;
using difference_type = ptrdiff_t;
using pointer = const value_type*;
using reference = const value_type&;
@@ -97,14 +97,14 @@ class SplitIterator {
delimiter_(splitter->delimiter()),
predicate_(splitter->predicate()) {
// Hack to maintain backward compatibility. This one block makes it so an
- // empty y_absl::string_view whose .data() happens to be nullptr behaves
- // *differently* from an otherwise empty y_absl::string_view whose .data() is
+ // empty y_absl::string_view whose .data() happens to be nullptr behaves
+ // *differently* from an otherwise empty y_absl::string_view whose .data() is
// not nullptr. This is an undesirable difference in general, but this
// behavior is maintained to avoid breaking existing code that happens to
// depend on this old behavior/bug. Perhaps it will be fixed one day. The
// difference in behavior is as follows:
- // Split(y_absl::string_view(""), '-'); // {""}
- // Split(y_absl::string_view(), '-'); // {}
+ // Split(y_absl::string_view(""), '-'); // {""}
+ // Split(y_absl::string_view(), '-'); // {}
if (splitter_->text().data() == nullptr) {
state_ = kEndState;
pos_ = splitter_->text().size();
@@ -129,8 +129,8 @@ class SplitIterator {
state_ = kEndState;
return *this;
}
- const y_absl::string_view text = splitter_->text();
- const y_absl::string_view d = delimiter_.Find(text, pos_);
+ const y_absl::string_view text = splitter_->text();
+ const y_absl::string_view d = delimiter_.Find(text, pos_);
if (d.data() == text.data() + text.size()) state_ = kLastState;
curr_ = text.substr(pos_, d.data() - (text.data() + pos_));
pos_ += curr_.size() + d.size();
@@ -155,7 +155,7 @@ class SplitIterator {
private:
size_t pos_;
State state_;
- y_absl::string_view curr_;
+ y_absl::string_view curr_;
const Splitter* splitter_;
typename Splitter::DelimiterType delimiter_;
typename Splitter::PredicateType predicate_;
@@ -165,21 +165,21 @@ class SplitIterator {
template <typename T, typename = void>
struct HasMappedType : std::false_type {};
template <typename T>
-struct HasMappedType<T, y_absl::void_t<typename T::mapped_type>>
+struct HasMappedType<T, y_absl::void_t<typename T::mapped_type>>
: std::true_type {};
// HasValueType<T>::value is true iff there exists a type T::value_type.
template <typename T, typename = void>
struct HasValueType : std::false_type {};
template <typename T>
-struct HasValueType<T, y_absl::void_t<typename T::value_type>> : std::true_type {
+struct HasValueType<T, y_absl::void_t<typename T::value_type>> : std::true_type {
};
// HasConstIterator<T>::value is true iff there exists a type T::const_iterator.
template <typename T, typename = void>
struct HasConstIterator : std::false_type {};
template <typename T>
-struct HasConstIterator<T, y_absl::void_t<typename T::const_iterator>>
+struct HasConstIterator<T, y_absl::void_t<typename T::const_iterator>>
: std::true_type {};
// HasEmplace<T>::value is true iff there exists a method T::emplace().
@@ -213,13 +213,13 @@ struct SplitterIsConvertibleToImpl : std::false_type {};
template <typename C>
struct SplitterIsConvertibleToImpl<C, true, false>
- : std::is_constructible<typename C::value_type, y_absl::string_view> {};
+ : std::is_constructible<typename C::value_type, y_absl::string_view> {};
template <typename C>
struct SplitterIsConvertibleToImpl<C, true, true>
- : y_absl::conjunction<
- std::is_constructible<typename C::key_type, y_absl::string_view>,
- std::is_constructible<typename C::mapped_type, y_absl::string_view>> {};
+ : y_absl::conjunction<
+ std::is_constructible<typename C::key_type, y_absl::string_view>,
+ std::is_constructible<typename C::mapped_type, y_absl::string_view>> {};
template <typename C>
struct SplitterIsConvertibleTo
@@ -234,7 +234,7 @@ struct SplitterIsConvertibleTo
HasMappedType<C>::value> {
};
-// This class implements the range that is returned by y_absl::StrSplit(). This
+// This class implements the range that is returned by y_absl::StrSplit(). This
// class has templated conversion operators that allow it to be implicitly
// converted to a variety of types that the caller may have specified on the
// left-hand side of an assignment.
@@ -245,11 +245,11 @@ struct SplitterIsConvertibleTo
// within a range-for loop.
//
// Output containers can be collections of any type that is constructible from
-// an y_absl::string_view.
+// an y_absl::string_view.
//
// An Predicate functor may be supplied. This predicate will be used to filter
// the split strings: only strings for which the predicate returns true will be
-// kept. A Predicate object is any unary functor that takes an y_absl::string_view
+// kept. A Predicate object is any unary functor that takes an y_absl::string_view
// and returns bool.
//
// The StringType parameter can be either string_view or string, depending on
@@ -272,7 +272,7 @@ class Splitter {
const Delimiter& delimiter() const { return delimiter_; }
const Predicate& predicate() const { return predicate_; }
- // Range functions that iterate the split substrings as y_absl::string_view
+ // Range functions that iterate the split substrings as y_absl::string_view
// objects. These methods enable a Splitter to be used in a range-based for
// loop.
const_iterator begin() const { return {const_iterator::kInitState, this}; }
@@ -294,7 +294,7 @@ class Splitter {
// corresponding value.
template <typename First, typename Second>
operator std::pair<First, Second>() const { // NOLINT(runtime/explicit)
- y_absl::string_view first, second;
+ y_absl::string_view first, second;
auto it = begin();
if (it != end()) {
first = *it;
@@ -325,24 +325,24 @@ class Splitter {
}
};
- // Partial specialization for a std::vector<y_absl::string_view>.
+ // Partial specialization for a std::vector<y_absl::string_view>.
//
// Optimized for the common case of splitting to a
- // std::vector<y_absl::string_view>. In this case we first split the results to
- // a small array of y_absl::string_view on the stack, to reduce reallocations.
+ // std::vector<y_absl::string_view>. In this case we first split the results to
+ // a small array of y_absl::string_view on the stack, to reduce reallocations.
template <typename A>
- struct ConvertToContainer<std::vector<y_absl::string_view, A>,
- y_absl::string_view, false> {
- std::vector<y_absl::string_view, A> operator()(
+ struct ConvertToContainer<std::vector<y_absl::string_view, A>,
+ y_absl::string_view, false> {
+ std::vector<y_absl::string_view, A> operator()(
const Splitter& splitter) const {
struct raw_view {
const char* data;
size_t size;
- operator y_absl::string_view() const { // NOLINT(runtime/explicit)
+ operator y_absl::string_view() const { // NOLINT(runtime/explicit)
return {data, size};
}
};
- std::vector<y_absl::string_view, A> v;
+ std::vector<y_absl::string_view, A> v;
std::array<raw_view, 16> ar;
for (auto it = splitter.begin(); !it.at_end();) {
size_t index = 0;
@@ -357,17 +357,17 @@ class Splitter {
}
};
- // Partial specialization for a std::vector<TString>.
+ // Partial specialization for a std::vector<TString>.
//
- // Optimized for the common case of splitting to a std::vector<TString>.
- // In this case we first split the results to a std::vector<y_absl::string_view>
- // so the returned std::vector<TString> can have space reserved to avoid
- // TString moves.
+ // Optimized for the common case of splitting to a std::vector<TString>.
+ // In this case we first split the results to a std::vector<y_absl::string_view>
+ // so the returned std::vector<TString> can have space reserved to avoid
+ // TString moves.
template <typename A>
- struct ConvertToContainer<std::vector<TString, A>, TString, false> {
- std::vector<TString, A> operator()(const Splitter& splitter) const {
- const std::vector<y_absl::string_view> v = splitter;
- return std::vector<TString, A>(v.begin(), v.end());
+ struct ConvertToContainer<std::vector<TString, A>, TString, false> {
+ std::vector<TString, A> operator()(const Splitter& splitter) const {
+ const std::vector<y_absl::string_view> v = splitter;
+ return std::vector<TString, A>(v.begin(), v.end());
}
};
@@ -425,6 +425,6 @@ class Splitter {
} // namespace strings_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_STRINGS_INTERNAL_STR_SPLIT_INTERNAL_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/utf8.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/utf8.cc
index a33b67d1a8..06b1cae79d 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/utf8.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/utf8.cc
@@ -14,9 +14,9 @@
// UTF8 utilities, implemented to reduce dependencies.
-#include "y_absl/strings/internal/utf8.h"
+#include "y_absl/strings/internal/utf8.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace strings_internal {
@@ -50,4 +50,4 @@ size_t EncodeUTF8Char(char *buffer, char32_t utf8_char) {
} // namespace strings_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/utf8.h b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/utf8.h
index e51e407a5a..1b2d6abd51 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/utf8.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/utf8.h
@@ -22,7 +22,7 @@
#include "y_absl/base/config.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace strings_internal {
@@ -45,6 +45,6 @@ size_t EncodeUTF8Char(char *buffer, char32_t utf8_char);
} // namespace strings_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_STRINGS_INTERNAL_UTF8_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/match.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/match.cc
index c84ac9ce47..3197bdf432 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/match.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/match.cc
@@ -12,19 +12,19 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/strings/match.h"
+#include "y_absl/strings/match.h"
-#include "y_absl/strings/internal/memutil.h"
+#include "y_absl/strings/internal/memutil.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
bool EqualsIgnoreCase(y_absl::string_view piece1,
y_absl::string_view piece2) noexcept {
return (piece1.size() == piece2.size() &&
- 0 == y_absl::strings_internal::memcasecmp(piece1.data(), piece2.data(),
+ 0 == y_absl::strings_internal::memcasecmp(piece1.data(), piece2.data(),
piece1.size()));
- // memcasecmp uses y_absl::ascii_tolower().
+ // memcasecmp uses y_absl::ascii_tolower().
}
bool StartsWithIgnoreCase(y_absl::string_view text,
@@ -40,4 +40,4 @@ bool EndsWithIgnoreCase(y_absl::string_view text,
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/match.h b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/match.h
index 133eae9c63..4709abc93f 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/match.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/match.h
@@ -18,26 +18,26 @@
// -----------------------------------------------------------------------------
//
// This file contains simple utilities for performing string matching checks.
-// All of these function parameters are specified as `y_absl::string_view`,
-// meaning that these functions can accept `TString`, `y_absl::string_view` or
+// All of these function parameters are specified as `y_absl::string_view`,
+// meaning that these functions can accept `TString`, `y_absl::string_view` or
// NUL-terminated C-style strings.
//
// Examples:
-// TString s = "foo";
-// y_absl::string_view sv = "f";
-// assert(y_absl::StrContains(s, sv));
+// TString s = "foo";
+// y_absl::string_view sv = "f";
+// assert(y_absl::StrContains(s, sv));
//
// Note: The order of parameters in these functions is designed to mimic the
// order an equivalent member function would exhibit;
-// e.g. `s.Contains(x)` ==> `y_absl::StrContains(s, x).
+// e.g. `s.Contains(x)` ==> `y_absl::StrContains(s, x).
#ifndef ABSL_STRINGS_MATCH_H_
#define ABSL_STRINGS_MATCH_H_
#include <cstring>
-#include "y_absl/strings/string_view.h"
+#include "y_absl/strings/string_view.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// StrContains()
@@ -95,6 +95,6 @@ bool EndsWithIgnoreCase(y_absl::string_view text,
y_absl::string_view suffix) noexcept;
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_STRINGS_MATCH_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/numbers.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/numbers.cc
index 30db79a678..528d044fa6 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/numbers.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/numbers.cc
@@ -15,7 +15,7 @@
// This file contains string processing functions related to
// numeric values.
-#include "y_absl/strings/numbers.h"
+#include "y_absl/strings/numbers.h"
#include <algorithm>
#include <cassert>
@@ -31,19 +31,19 @@
#include <utility>
#include "y_absl/base/attributes.h"
-#include "y_absl/base/internal/raw_logging.h"
+#include "y_absl/base/internal/raw_logging.h"
#include "y_absl/numeric/bits.h"
-#include "y_absl/strings/ascii.h"
-#include "y_absl/strings/charconv.h"
-#include "y_absl/strings/escaping.h"
-#include "y_absl/strings/internal/memutil.h"
-#include "y_absl/strings/match.h"
-#include "y_absl/strings/str_cat.h"
-
-namespace y_absl {
+#include "y_absl/strings/ascii.h"
+#include "y_absl/strings/charconv.h"
+#include "y_absl/strings/escaping.h"
+#include "y_absl/strings/internal/memutil.h"
+#include "y_absl/strings/match.h"
+#include "y_absl/strings/str_cat.h"
+
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
-bool SimpleAtof(y_absl::string_view str, float* out) {
+bool SimpleAtof(y_absl::string_view str, float* out) {
*out = 0.0;
str = StripAsciiWhitespace(str);
// std::from_chars doesn't accept an initial +, but SimpleAtof does, so if one
@@ -54,7 +54,7 @@ bool SimpleAtof(y_absl::string_view str, float* out) {
return false;
}
}
- auto result = y_absl::from_chars(str.data(), str.data() + str.size(), *out);
+ auto result = y_absl::from_chars(str.data(), str.data() + str.size(), *out);
if (result.ec == std::errc::invalid_argument) {
return false;
}
@@ -74,7 +74,7 @@ bool SimpleAtof(y_absl::string_view str, float* out) {
return true;
}
-bool SimpleAtod(y_absl::string_view str, double* out) {
+bool SimpleAtod(y_absl::string_view str, double* out) {
*out = 0.0;
str = StripAsciiWhitespace(str);
// std::from_chars doesn't accept an initial +, but SimpleAtod does, so if one
@@ -85,7 +85,7 @@ bool SimpleAtod(y_absl::string_view str, double* out) {
return false;
}
}
- auto result = y_absl::from_chars(str.data(), str.data() + str.size(), *out);
+ auto result = y_absl::from_chars(str.data(), str.data() + str.size(), *out);
if (result.ec == std::errc::invalid_argument) {
return false;
}
@@ -105,7 +105,7 @@ bool SimpleAtod(y_absl::string_view str, double* out) {
return true;
}
-bool SimpleAtob(y_absl::string_view str, bool* out) {
+bool SimpleAtob(y_absl::string_view str, bool* out) {
ABSL_RAW_CHECK(out != nullptr, "Output pointer must not be nullptr.");
if (EqualsIgnoreCase(str, "true") || EqualsIgnoreCase(str, "t") ||
EqualsIgnoreCase(str, "yes") || EqualsIgnoreCase(str, "y") ||
@@ -630,7 +630,7 @@ static const int8_t kAsciiToInt[256] = {
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36};
// Parse the sign and optional hex or oct prefix in text.
-inline bool safe_parse_sign_and_base(y_absl::string_view* text /*inout*/,
+inline bool safe_parse_sign_and_base(y_absl::string_view* text /*inout*/,
int* base_ptr /*inout*/,
bool* negative_ptr /*output*/) {
if (text->data() == nullptr) {
@@ -642,10 +642,10 @@ inline bool safe_parse_sign_and_base(y_absl::string_view* text /*inout*/,
int base = *base_ptr;
// Consume whitespace.
- while (start < end && y_absl::ascii_isspace(start[0])) {
+ while (start < end && y_absl::ascii_isspace(start[0])) {
++start;
}
- while (start < end && y_absl::ascii_isspace(end[-1])) {
+ while (start < end && y_absl::ascii_isspace(end[-1])) {
--end;
}
if (start >= end) {
@@ -694,7 +694,7 @@ inline bool safe_parse_sign_and_base(y_absl::string_view* text /*inout*/,
} else {
return false;
}
- *text = y_absl::string_view(start, end - start);
+ *text = y_absl::string_view(start, end - start);
*base_ptr = base;
return true;
}
@@ -914,7 +914,7 @@ const IntType LookupTables<IntType>::kVminOverBase[] =
#undef X_OVER_BASE_INITIALIZER
template <typename IntType>
-inline bool safe_parse_positive_int(y_absl::string_view text, int base,
+inline bool safe_parse_positive_int(y_absl::string_view text, int base,
IntType* value_p) {
IntType value = 0;
const IntType vmax = std::numeric_limits<IntType>::max();
@@ -950,7 +950,7 @@ inline bool safe_parse_positive_int(y_absl::string_view text, int base,
}
template <typename IntType>
-inline bool safe_parse_negative_int(y_absl::string_view text, int base,
+inline bool safe_parse_negative_int(y_absl::string_view text, int base,
IntType* value_p) {
IntType value = 0;
const IntType vmin = std::numeric_limits<IntType>::min();
@@ -995,7 +995,7 @@ inline bool safe_parse_negative_int(y_absl::string_view text, int base,
// Input format based on POSIX.1-2008 strtol
// http://pubs.opengroup.org/onlinepubs/9699919799/functions/strtol.html
template <typename IntType>
-inline bool safe_int_internal(y_absl::string_view text, IntType* value_p,
+inline bool safe_int_internal(y_absl::string_view text, IntType* value_p,
int base) {
*value_p = 0;
bool negative;
@@ -1010,7 +1010,7 @@ inline bool safe_int_internal(y_absl::string_view text, IntType* value_p,
}
template <typename IntType>
-inline bool safe_uint_internal(y_absl::string_view text, IntType* value_p,
+inline bool safe_uint_internal(y_absl::string_view text, IntType* value_p,
int base) {
*value_p = 0;
bool negative;
@@ -1064,11 +1064,11 @@ ABSL_CONST_INIT ABSL_DLL const char two_ASCII_digits[100][2] = {
{'9', '0'}, {'9', '1'}, {'9', '2'}, {'9', '3'}, {'9', '4'}, {'9', '5'},
{'9', '6'}, {'9', '7'}, {'9', '8'}, {'9', '9'}};
-bool safe_strto32_base(y_absl::string_view text, int32_t* value, int base) {
+bool safe_strto32_base(y_absl::string_view text, int32_t* value, int base) {
return safe_int_internal<int32_t>(text, value, base);
}
-bool safe_strto64_base(y_absl::string_view text, int64_t* value, int base) {
+bool safe_strto64_base(y_absl::string_view text, int64_t* value, int base) {
return safe_int_internal<int64_t>(text, value, base);
}
@@ -1076,18 +1076,18 @@ bool safe_strto128_base(y_absl::string_view text, int128* value, int base) {
return safe_int_internal<y_absl::int128>(text, value, base);
}
-bool safe_strtou32_base(y_absl::string_view text, uint32_t* value, int base) {
+bool safe_strtou32_base(y_absl::string_view text, uint32_t* value, int base) {
return safe_uint_internal<uint32_t>(text, value, base);
}
-bool safe_strtou64_base(y_absl::string_view text, uint64_t* value, int base) {
+bool safe_strtou64_base(y_absl::string_view text, uint64_t* value, int base) {
return safe_uint_internal<uint64_t>(text, value, base);
}
-bool safe_strtou128_base(y_absl::string_view text, uint128* value, int base) {
- return safe_uint_internal<y_absl::uint128>(text, value, base);
+bool safe_strtou128_base(y_absl::string_view text, uint128* value, int base) {
+ return safe_uint_internal<y_absl::uint128>(text, value, base);
}
} // namespace numbers_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/numbers.h b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/numbers.h
index b1832e8f3c..ce181d8eb1 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/numbers.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/numbers.h
@@ -23,11 +23,11 @@
#ifndef ABSL_STRINGS_NUMBERS_H_
#define ABSL_STRINGS_NUMBERS_H_
-#if defined(__SSE4_2__) && !defined(__CUDACC__)
-#define _Y__SSE4_2__
-#endif
-
-#ifdef _Y__SSE4_2__
+#if defined(__SSE4_2__) && !defined(__CUDACC__)
+#define _Y__SSE4_2__
+#endif
+
+#ifdef _Y__SSE4_2__
#ifdef _MSC_VER
#include <intrin.h>
#else
@@ -44,21 +44,21 @@
#include <type_traits>
#include "y_absl/base/config.h"
-#ifdef _Y__SSE4_2__
+#ifdef _Y__SSE4_2__
// TODO(jorg): Remove this when we figure out the right way
// to swap bytes on SSE 4.2 that works with the compilers
// we claim to support. Also, add tests for the compiler
// that doesn't support the Intel _bswap64 intrinsic but
// does support all the SSE 4.2 intrinsics
-#include "y_absl/base/internal/endian.h"
+#include "y_absl/base/internal/endian.h"
#endif
-#include "y_absl/base/macros.h"
-#include "y_absl/base/port.h"
+#include "y_absl/base/macros.h"
+#include "y_absl/base/port.h"
#include "y_absl/numeric/bits.h"
-#include "y_absl/numeric/int128.h"
-#include "y_absl/strings/string_view.h"
+#include "y_absl/numeric/int128.h"
+#include "y_absl/strings/string_view.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// SimpleAtoi()
@@ -70,7 +70,7 @@ ABSL_NAMESPACE_BEGIN
// encountered, this function returns `false`, leaving `out` in an unspecified
// state.
template <typename int_type>
-ABSL_MUST_USE_RESULT bool SimpleAtoi(y_absl::string_view str, int_type* out);
+ABSL_MUST_USE_RESULT bool SimpleAtoi(y_absl::string_view str, int_type* out);
// SimpleAtof()
//
@@ -81,7 +81,7 @@ ABSL_MUST_USE_RESULT bool SimpleAtoi(y_absl::string_view str, int_type* out);
// allowed formats for `str`, except SimpleAtof() is locale-independent and will
// always use the "C" locale. If any errors are encountered, this function
// returns `false`, leaving `out` in an unspecified state.
-ABSL_MUST_USE_RESULT bool SimpleAtof(y_absl::string_view str, float* out);
+ABSL_MUST_USE_RESULT bool SimpleAtof(y_absl::string_view str, float* out);
// SimpleAtod()
//
@@ -92,7 +92,7 @@ ABSL_MUST_USE_RESULT bool SimpleAtof(y_absl::string_view str, float* out);
// allowed formats for `str`, except SimpleAtod is locale-independent and will
// always use the "C" locale. If any errors are encountered, this function
// returns `false`, leaving `out` in an unspecified state.
-ABSL_MUST_USE_RESULT bool SimpleAtod(y_absl::string_view str, double* out);
+ABSL_MUST_USE_RESULT bool SimpleAtod(y_absl::string_view str, double* out);
// SimpleAtob()
//
@@ -102,7 +102,7 @@ ABSL_MUST_USE_RESULT bool SimpleAtod(y_absl::string_view str, double* out);
// are interpreted as boolean `false`: "false", "f", "no", "n", "0". If any
// errors are encountered, this function returns `false`, leaving `out` in an
// unspecified state.
-ABSL_MUST_USE_RESULT bool SimpleAtob(y_absl::string_view str, bool* out);
+ABSL_MUST_USE_RESULT bool SimpleAtob(y_absl::string_view str, bool* out);
// SimpleHexAtoi()
//
@@ -124,11 +124,11 @@ ABSL_MUST_USE_RESULT inline bool SimpleHexAtoi(y_absl::string_view str,
y_absl::uint128* out);
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
// End of public API. Implementation details follow.
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace numbers_internal {
@@ -152,13 +152,13 @@ inline void PutTwoDigits(size_t i, char* buf) {
// safe_strto?() functions for implementing SimpleAtoi()
-bool safe_strto32_base(y_absl::string_view text, int32_t* value, int base);
-bool safe_strto64_base(y_absl::string_view text, int64_t* value, int base);
+bool safe_strto32_base(y_absl::string_view text, int32_t* value, int base);
+bool safe_strto64_base(y_absl::string_view text, int64_t* value, int base);
bool safe_strto128_base(y_absl::string_view text, y_absl::int128* value,
int base);
-bool safe_strtou32_base(y_absl::string_view text, uint32_t* value, int base);
-bool safe_strtou64_base(y_absl::string_view text, uint64_t* value, int base);
-bool safe_strtou128_base(y_absl::string_view text, y_absl::uint128* value,
+bool safe_strtou32_base(y_absl::string_view text, uint32_t* value, int base);
+bool safe_strtou64_base(y_absl::string_view text, uint64_t* value, int base);
+bool safe_strtou128_base(y_absl::string_view text, y_absl::uint128* value,
int base);
static const int kFastToBufferSize = 32;
@@ -207,7 +207,7 @@ char* FastIntToBuffer(int_type i, char* buffer) {
// Implementation of SimpleAtoi, generalized to support arbitrary base (used
// with base different from 10 elsewhere in Abseil implementation).
template <typename int_type>
-ABSL_MUST_USE_RESULT bool safe_strtoi_base(y_absl::string_view s, int_type* out,
+ABSL_MUST_USE_RESULT bool safe_strtoi_base(y_absl::string_view s, int_type* out,
int base) {
static_assert(sizeof(*out) == 4 || sizeof(*out) == 8,
"SimpleAtoi works only with 32-bit or 64-bit integers.");
@@ -248,8 +248,8 @@ ABSL_MUST_USE_RESULT bool safe_strtoi_base(y_absl::string_view s, int_type* out,
// Returns the number of non-pad digits of the output (it can never be zero
// since 0 has one digit).
inline size_t FastHexToBufferZeroPad16(uint64_t val, char* out) {
-#ifdef _Y__SSE4_2__
- uint64_t be = y_absl::big_endian::FromHost64(val);
+#ifdef _Y__SSE4_2__
+ uint64_t be = y_absl::big_endian::FromHost64(val);
const auto kNibbleMask = _mm_set1_epi8(0xf);
const auto kHexDigits = _mm_setr_epi8('0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', 'a', 'b', 'c', 'd', 'e', 'f');
@@ -262,7 +262,7 @@ inline size_t FastHexToBufferZeroPad16(uint64_t val, char* out) {
#else
for (int i = 0; i < 8; ++i) {
auto byte = (val >> (56 - 8 * i)) & 0xFF;
- auto* hex = &y_absl::numbers_internal::kHexTable[byte * 2];
+ auto* hex = &y_absl::numbers_internal::kHexTable[byte * 2];
std::memcpy(out + 2 * i, hex, 2);
}
#endif
@@ -273,17 +273,17 @@ inline size_t FastHexToBufferZeroPad16(uint64_t val, char* out) {
} // namespace numbers_internal
template <typename int_type>
-ABSL_MUST_USE_RESULT bool SimpleAtoi(y_absl::string_view str, int_type* out) {
+ABSL_MUST_USE_RESULT bool SimpleAtoi(y_absl::string_view str, int_type* out) {
return numbers_internal::safe_strtoi_base(str, out, 10);
}
-ABSL_MUST_USE_RESULT inline bool SimpleAtoi(y_absl::string_view str,
+ABSL_MUST_USE_RESULT inline bool SimpleAtoi(y_absl::string_view str,
y_absl::int128* out) {
return numbers_internal::safe_strto128_base(str, out, 10);
}
ABSL_MUST_USE_RESULT inline bool SimpleAtoi(y_absl::string_view str,
- y_absl::uint128* out) {
+ y_absl::uint128* out) {
return numbers_internal::safe_strtou128_base(str, out, 10);
}
@@ -303,6 +303,6 @@ ABSL_MUST_USE_RESULT inline bool SimpleHexAtoi(y_absl::string_view str,
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_STRINGS_NUMBERS_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_cat.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_cat.cc
index f29ba3c877..9e11702eae 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_cat.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_cat.cc
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/str_cat.h"
#include <assert.h>
@@ -20,11 +20,11 @@
#include <cstdint>
#include <cstring>
-#include "y_absl/strings/ascii.h"
-#include "y_absl/strings/internal/resize_uninitialized.h"
-#include "y_absl/strings/numbers.h"
+#include "y_absl/strings/ascii.h"
+#include "y_absl/strings/internal/resize_uninitialized.h"
+#include "y_absl/strings/numbers.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
AlphaNum::AlphaNum(Hex hex) {
@@ -32,16 +32,16 @@ AlphaNum::AlphaNum(Hex hex) {
"This function only works when output buffer >= 32 bytes long");
char* const end = &digits_[numbers_internal::kFastToBufferSize];
auto real_width =
- y_absl::numbers_internal::FastHexToBufferZeroPad16(hex.value, end - 16);
+ y_absl::numbers_internal::FastHexToBufferZeroPad16(hex.value, end - 16);
if (real_width >= hex.width) {
- piece_ = y_absl::string_view(end - real_width, real_width);
+ piece_ = y_absl::string_view(end - real_width, real_width);
} else {
// Pad first 16 chars because FastHexToBufferZeroPad16 pads only to 16 and
// max pad width can be up to 20.
std::memset(end - 32, hex.fill, 16);
// Patch up everything else up to the real_width.
std::memset(end - real_width - 16, hex.fill, 16);
- piece_ = y_absl::string_view(end - hex.width, hex.width);
+ piece_ = y_absl::string_view(end - hex.width, hex.width);
}
}
@@ -73,7 +73,7 @@ AlphaNum::AlphaNum(Dec dec) {
if (add_sign_again) *--writer = '-';
}
- piece_ = y_absl::string_view(writer, end - writer);
+ piece_ = y_absl::string_view(writer, end - writer);
}
// ----------------------------------------------------------------------
@@ -95,9 +95,9 @@ static char* Append(char* out, const AlphaNum& x) {
return after;
}
-TString StrCat(const AlphaNum& a, const AlphaNum& b) {
- TString result;
- y_absl::strings_internal::STLStringResizeUninitialized(&result,
+TString StrCat(const AlphaNum& a, const AlphaNum& b) {
+ TString result;
+ y_absl::strings_internal::STLStringResizeUninitialized(&result,
a.size() + b.size());
char* const begin = &result[0];
char* out = begin;
@@ -107,8 +107,8 @@ TString StrCat(const AlphaNum& a, const AlphaNum& b) {
return result;
}
-TString StrCat(const AlphaNum& a, const AlphaNum& b, const AlphaNum& c) {
- TString result;
+TString StrCat(const AlphaNum& a, const AlphaNum& b, const AlphaNum& c) {
+ TString result;
strings_internal::STLStringResizeUninitialized(
&result, a.size() + b.size() + c.size());
char* const begin = &result[0];
@@ -120,9 +120,9 @@ TString StrCat(const AlphaNum& a, const AlphaNum& b, const AlphaNum& c) {
return result;
}
-TString StrCat(const AlphaNum& a, const AlphaNum& b, const AlphaNum& c,
+TString StrCat(const AlphaNum& a, const AlphaNum& b, const AlphaNum& c,
const AlphaNum& d) {
- TString result;
+ TString result;
strings_internal::STLStringResizeUninitialized(
&result, a.size() + b.size() + c.size() + d.size());
char* const begin = &result[0];
@@ -138,8 +138,8 @@ TString StrCat(const AlphaNum& a, const AlphaNum& b, const AlphaNum& c,
namespace strings_internal {
// Do not call directly - these are not part of the public API.
-TString CatPieces(std::initializer_list<y_absl::string_view> pieces) {
- TString result;
+TString CatPieces(std::initializer_list<y_absl::string_view> pieces) {
+ TString result;
size_t total_size = 0;
for (const y_absl::string_view& piece : pieces) total_size += piece.size();
strings_internal::STLStringResizeUninitialized(&result, total_size);
@@ -157,7 +157,7 @@ TString CatPieces(std::initializer_list<y_absl::string_view> pieces) {
return result;
}
-// It's possible to call StrAppend with an y_absl::string_view that is itself a
+// It's possible to call StrAppend with an y_absl::string_view that is itself a
// fragment of the string we're appending to. However the results of this are
// random. Therefore, check for this in debug mode. Use unsigned math so we
// only have to do one comparison. Note, there's an exception case: appending an
@@ -166,8 +166,8 @@ TString CatPieces(std::initializer_list<y_absl::string_view> pieces) {
assert(((src).size() == 0) || \
(uintptr_t((src).data() - (dest).data()) > uintptr_t((dest).size())))
-void AppendPieces(TString* dest,
- std::initializer_list<y_absl::string_view> pieces) {
+void AppendPieces(TString* dest,
+ std::initializer_list<y_absl::string_view> pieces) {
size_t old_size = dest->size();
size_t total_size = old_size;
for (const y_absl::string_view& piece : pieces) {
@@ -190,15 +190,15 @@ void AppendPieces(TString* dest,
} // namespace strings_internal
-void StrAppend(TString* dest, const AlphaNum& a) {
+void StrAppend(TString* dest, const AlphaNum& a) {
ASSERT_NO_OVERLAP(*dest, a);
dest->append(a.data(), a.size());
}
-void StrAppend(TString* dest, const AlphaNum& a, const AlphaNum& b) {
+void StrAppend(TString* dest, const AlphaNum& a, const AlphaNum& b) {
ASSERT_NO_OVERLAP(*dest, a);
ASSERT_NO_OVERLAP(*dest, b);
- TString::size_type old_size = dest->size();
+ TString::size_type old_size = dest->size();
strings_internal::STLStringResizeUninitializedAmortized(
dest, old_size + a.size() + b.size());
char* const begin = &(*dest)[0];
@@ -208,12 +208,12 @@ void StrAppend(TString* dest, const AlphaNum& a, const AlphaNum& b) {
assert(out == begin + dest->size());
}
-void StrAppend(TString* dest, const AlphaNum& a, const AlphaNum& b,
+void StrAppend(TString* dest, const AlphaNum& a, const AlphaNum& b,
const AlphaNum& c) {
ASSERT_NO_OVERLAP(*dest, a);
ASSERT_NO_OVERLAP(*dest, b);
ASSERT_NO_OVERLAP(*dest, c);
- TString::size_type old_size = dest->size();
+ TString::size_type old_size = dest->size();
strings_internal::STLStringResizeUninitializedAmortized(
dest, old_size + a.size() + b.size() + c.size());
char* const begin = &(*dest)[0];
@@ -224,13 +224,13 @@ void StrAppend(TString* dest, const AlphaNum& a, const AlphaNum& b,
assert(out == begin + dest->size());
}
-void StrAppend(TString* dest, const AlphaNum& a, const AlphaNum& b,
+void StrAppend(TString* dest, const AlphaNum& a, const AlphaNum& b,
const AlphaNum& c, const AlphaNum& d) {
ASSERT_NO_OVERLAP(*dest, a);
ASSERT_NO_OVERLAP(*dest, b);
ASSERT_NO_OVERLAP(*dest, c);
ASSERT_NO_OVERLAP(*dest, d);
- TString::size_type old_size = dest->size();
+ TString::size_type old_size = dest->size();
strings_internal::STLStringResizeUninitializedAmortized(
dest, old_size + a.size() + b.size() + c.size() + d.size());
char* const begin = &(*dest)[0];
@@ -243,4 +243,4 @@ void StrAppend(TString* dest, const AlphaNum& a, const AlphaNum& b,
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_cat.h b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_cat.h
index a214ac0ba6..a77c9ae906 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_cat.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_cat.h
@@ -28,7 +28,7 @@
// to your function, your callers will automagically convert bools, integers,
// and floating point values to strings for you.
//
-// NOTE: Use of `AlphaNum` outside of the //y_absl/strings package is unsupported
+// NOTE: Use of `AlphaNum` outside of the //y_absl/strings package is unsupported
// except for the specific case of function parameters of type `AlphaNum` or
// `const AlphaNum &`. In particular, instantiating `AlphaNum` directly as a
// stack variable is not supported.
@@ -59,17 +59,17 @@
#include <type_traits>
#include <vector>
-#include "y_absl/base/port.h"
-#include "y_absl/strings/numbers.h"
-#include "y_absl/strings/string_view.h"
+#include "y_absl/base/port.h"
+#include "y_absl/strings/numbers.h"
+#include "y_absl/strings/string_view.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace strings_internal {
// AlphaNumBuffer allows a way to pass a string to StrCat without having to do
// memory allocation. It is simply a pair of a fixed-size character array, and
-// a size. Please don't use outside of y_absl, yet.
+// a size. Please don't use outside of y_absl, yet.
template <size_t max_size>
struct AlphaNumBuffer {
std::array<char, max_size> data;
@@ -138,40 +138,40 @@ struct Hex {
template <typename Int>
explicit Hex(
- Int v, PadSpec spec = y_absl::kNoPad,
+ Int v, PadSpec spec = y_absl::kNoPad,
typename std::enable_if<sizeof(Int) == 1 &&
!std::is_pointer<Int>::value>::type* = nullptr)
: Hex(spec, static_cast<uint8_t>(v)) {}
template <typename Int>
explicit Hex(
- Int v, PadSpec spec = y_absl::kNoPad,
+ Int v, PadSpec spec = y_absl::kNoPad,
typename std::enable_if<sizeof(Int) == 2 &&
!std::is_pointer<Int>::value>::type* = nullptr)
: Hex(spec, static_cast<uint16_t>(v)) {}
template <typename Int>
explicit Hex(
- Int v, PadSpec spec = y_absl::kNoPad,
+ Int v, PadSpec spec = y_absl::kNoPad,
typename std::enable_if<sizeof(Int) == 4 &&
!std::is_pointer<Int>::value>::type* = nullptr)
: Hex(spec, static_cast<uint32_t>(v)) {}
template <typename Int>
explicit Hex(
- Int v, PadSpec spec = y_absl::kNoPad,
+ Int v, PadSpec spec = y_absl::kNoPad,
typename std::enable_if<sizeof(Int) == 8 &&
!std::is_pointer<Int>::value>::type* = nullptr)
: Hex(spec, static_cast<uint64_t>(v)) {}
template <typename Pointee>
- explicit Hex(Pointee* v, PadSpec spec = y_absl::kNoPad)
+ explicit Hex(Pointee* v, PadSpec spec = y_absl::kNoPad)
: Hex(spec, reinterpret_cast<uintptr_t>(v)) {}
private:
Hex(PadSpec spec, uint64_t v)
: value(v),
- width(spec == y_absl::kNoPad
+ width(spec == y_absl::kNoPad
? 1
- : spec >= y_absl::kSpacePad2 ? spec - y_absl::kSpacePad2 + 2
- : spec - y_absl::kZeroPad2 + 2),
- fill(spec >= y_absl::kSpacePad2 ? ' ' : '0') {}
+ : spec >= y_absl::kSpacePad2 ? spec - y_absl::kSpacePad2 + 2
+ : spec - y_absl::kZeroPad2 + 2),
+ fill(spec >= y_absl::kSpacePad2 ? ' ' : '0') {}
};
// -----------------------------------------------------------------------------
@@ -188,15 +188,15 @@ struct Dec {
bool neg;
template <typename Int>
- explicit Dec(Int v, PadSpec spec = y_absl::kNoPad,
+ explicit Dec(Int v, PadSpec spec = y_absl::kNoPad,
typename std::enable_if<(sizeof(Int) <= 8)>::type* = nullptr)
: value(v >= 0 ? static_cast<uint64_t>(v)
: uint64_t{0} - static_cast<uint64_t>(v)),
- width(spec == y_absl::kNoPad
+ width(spec == y_absl::kNoPad
? 1
- : spec >= y_absl::kSpacePad2 ? spec - y_absl::kSpacePad2 + 2
- : spec - y_absl::kZeroPad2 + 2),
- fill(spec >= y_absl::kSpacePad2 ? ' ' : '0'),
+ : spec >= y_absl::kSpacePad2 ? spec - y_absl::kSpacePad2 + 2
+ : spec - y_absl::kZeroPad2 + 2),
+ fill(spec >= y_absl::kSpacePad2 ? ' ' : '0'),
neg(v < 0) {}
};
@@ -246,25 +246,25 @@ class AlphaNum {
: piece_(&buf.data[0], buf.size) {}
AlphaNum(const char* c_str) : piece_(c_str) {} // NOLINT(runtime/explicit)
- AlphaNum(y_absl::string_view pc) : piece_(pc) {} // NOLINT(runtime/explicit)
+ AlphaNum(y_absl::string_view pc) : piece_(pc) {} // NOLINT(runtime/explicit)
template <typename Allocator>
AlphaNum( // NOLINT(runtime/explicit)
const std::basic_string<char, std::char_traits<char>, Allocator>& str)
: piece_(str) {}
- AlphaNum(const TString& str)
- : piece_(str.data(), str.size()) {}
-
+ AlphaNum(const TString& str)
+ : piece_(str.data(), str.size()) {}
+
// Use string literals ":" instead of character literals ':'.
AlphaNum(char c) = delete; // NOLINT(runtime/explicit)
AlphaNum(const AlphaNum&) = delete;
AlphaNum& operator=(const AlphaNum&) = delete;
- y_absl::string_view::size_type size() const { return piece_.size(); }
+ y_absl::string_view::size_type size() const { return piece_.size(); }
const char* data() const { return piece_.data(); }
- y_absl::string_view Piece() const { return piece_; }
+ y_absl::string_view Piece() const { return piece_; }
// Normal enums are already handled by the integer formatters.
// This overload matches only scoped enums.
@@ -286,7 +286,7 @@ class AlphaNum {
AlphaNum(T e) : AlphaNum(static_cast<bool>(e)) {} // NOLINT(runtime/explicit)
private:
- y_absl::string_view piece_;
+ y_absl::string_view piece_;
char digits_[numbers_internal::kFastToBufferSize];
};
@@ -321,27 +321,27 @@ class AlphaNum {
namespace strings_internal {
// Do not call directly - this is not part of the public API.
-TString CatPieces(std::initializer_list<y_absl::string_view> pieces);
-void AppendPieces(TString* dest,
- std::initializer_list<y_absl::string_view> pieces);
+TString CatPieces(std::initializer_list<y_absl::string_view> pieces);
+void AppendPieces(TString* dest,
+ std::initializer_list<y_absl::string_view> pieces);
} // namespace strings_internal
-ABSL_MUST_USE_RESULT inline TString StrCat() { return TString(); }
+ABSL_MUST_USE_RESULT inline TString StrCat() { return TString(); }
-ABSL_MUST_USE_RESULT inline TString StrCat(const AlphaNum& a) {
- return TString(a.data(), a.size());
+ABSL_MUST_USE_RESULT inline TString StrCat(const AlphaNum& a) {
+ return TString(a.data(), a.size());
}
-ABSL_MUST_USE_RESULT TString StrCat(const AlphaNum& a, const AlphaNum& b);
-ABSL_MUST_USE_RESULT TString StrCat(const AlphaNum& a, const AlphaNum& b,
+ABSL_MUST_USE_RESULT TString StrCat(const AlphaNum& a, const AlphaNum& b);
+ABSL_MUST_USE_RESULT TString StrCat(const AlphaNum& a, const AlphaNum& b,
const AlphaNum& c);
-ABSL_MUST_USE_RESULT TString StrCat(const AlphaNum& a, const AlphaNum& b,
+ABSL_MUST_USE_RESULT TString StrCat(const AlphaNum& a, const AlphaNum& b,
const AlphaNum& c, const AlphaNum& d);
// Support 5 or more arguments
template <typename... AV>
-ABSL_MUST_USE_RESULT inline TString StrCat(
+ABSL_MUST_USE_RESULT inline TString StrCat(
const AlphaNum& a, const AlphaNum& b, const AlphaNum& c, const AlphaNum& d,
const AlphaNum& e, const AV&... args) {
return strings_internal::CatPieces(
@@ -361,32 +361,32 @@ ABSL_MUST_USE_RESULT inline TString StrCat(
// not try to check each of its input arguments to be sure that they are not
// a subset of the string being appended to. That is, while this will work:
//
-// TString s = "foo";
+// TString s = "foo";
// s += s;
//
// This output is undefined:
//
-// TString s = "foo";
+// TString s = "foo";
// StrAppend(&s, s);
//
-// This output is undefined as well, since `y_absl::string_view` does not own its
+// This output is undefined as well, since `y_absl::string_view` does not own its
// data:
//
-// TString s = "foobar";
-// y_absl::string_view p = s;
+// TString s = "foobar";
+// y_absl::string_view p = s;
// StrAppend(&s, p);
-inline void StrAppend(TString*) {}
-void StrAppend(TString* dest, const AlphaNum& a);
-void StrAppend(TString* dest, const AlphaNum& a, const AlphaNum& b);
-void StrAppend(TString* dest, const AlphaNum& a, const AlphaNum& b,
+inline void StrAppend(TString*) {}
+void StrAppend(TString* dest, const AlphaNum& a);
+void StrAppend(TString* dest, const AlphaNum& a, const AlphaNum& b);
+void StrAppend(TString* dest, const AlphaNum& a, const AlphaNum& b,
const AlphaNum& c);
-void StrAppend(TString* dest, const AlphaNum& a, const AlphaNum& b,
+void StrAppend(TString* dest, const AlphaNum& a, const AlphaNum& b,
const AlphaNum& c, const AlphaNum& d);
// Support 5 or more arguments
template <typename... AV>
-inline void StrAppend(TString* dest, const AlphaNum& a, const AlphaNum& b,
+inline void StrAppend(TString* dest, const AlphaNum& a, const AlphaNum& b,
const AlphaNum& c, const AlphaNum& d, const AlphaNum& e,
const AV&... args) {
strings_internal::AppendPieces(
@@ -406,6 +406,6 @@ SixDigits(double d) {
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_STRINGS_STR_CAT_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_format.h b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_format.h
index ba6e332450..4079f38fb4 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_format.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_format.h
@@ -25,17 +25,17 @@
//
// Example:
//
-// TString s = y_absl::StrFormat(
+// TString s = y_absl::StrFormat(
// "%s %s You have $%d!", "Hello", name, dollars);
//
// The library consists of the following basic utilities:
//
-// * `y_absl::StrFormat()`, a type-safe replacement for `std::sprintf()`, to
+// * `y_absl::StrFormat()`, a type-safe replacement for `std::sprintf()`, to
// write a format string to a `string` value.
-// * `y_absl::StrAppendFormat()` to append a format string to a `string`
-// * `y_absl::StreamFormat()` to more efficiently write a format string to a
+// * `y_absl::StrAppendFormat()` to append a format string to a `string`
+// * `y_absl::StreamFormat()` to more efficiently write a format string to a
// stream, such as`std::cout`.
-// * `y_absl::PrintF()`, `y_absl::FPrintF()` and `y_absl::SNPrintF()` as
+// * `y_absl::PrintF()`, `y_absl::FPrintF()` and `y_absl::SNPrintF()` as
// replacements for `std::printf()`, `std::fprintf()` and `std::snprintf()`.
//
// Note: a version of `std::sprintf()` is not supported as it is
@@ -73,13 +73,13 @@
#include <cstdio>
#include <util/generic/string.h>
-#include "y_absl/strings/internal/str_format/arg.h" // IWYU pragma: export
-#include "y_absl/strings/internal/str_format/bind.h" // IWYU pragma: export
-#include "y_absl/strings/internal/str_format/checker.h" // IWYU pragma: export
-#include "y_absl/strings/internal/str_format/extension.h" // IWYU pragma: export
-#include "y_absl/strings/internal/str_format/parser.h" // IWYU pragma: export
+#include "y_absl/strings/internal/str_format/arg.h" // IWYU pragma: export
+#include "y_absl/strings/internal/str_format/bind.h" // IWYU pragma: export
+#include "y_absl/strings/internal/str_format/checker.h" // IWYU pragma: export
+#include "y_absl/strings/internal/str_format/extension.h" // IWYU pragma: export
+#include "y_absl/strings/internal/str_format/parser.h" // IWYU pragma: export
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// UntypedFormatSpec
@@ -90,9 +90,9 @@ ABSL_NAMESPACE_BEGIN
//
// Example:
//
-// y_absl::UntypedFormatSpec format("%d");
-// TString out;
-// CHECK(y_absl::FormatUntyped(&out, format, {y_absl::FormatArg(1)}));
+// y_absl::UntypedFormatSpec format("%d");
+// TString out;
+// CHECK(y_absl::FormatUntyped(&out, format, {y_absl::FormatArg(1)}));
class UntypedFormatSpec {
public:
UntypedFormatSpec() = delete;
@@ -118,7 +118,7 @@ class UntypedFormatSpec {
//
// Example:
//
-// y_absl::StrFormat("%s", y_absl::FormatStreamed(obj));
+// y_absl::StrFormat("%s", y_absl::FormatStreamed(obj));
template <typename T>
str_format_internal::StreamedWrapper<T> FormatStreamed(const T& v) {
return str_format_internal::StreamedWrapper<T>(v);
@@ -137,8 +137,8 @@ str_format_internal::StreamedWrapper<T> FormatStreamed(const T& v) {
// Example:
//
// int n = 0;
-// TString s = y_absl::StrFormat("%s%d%n", "hello", 123,
-// y_absl::FormatCountCapture(&n));
+// TString s = y_absl::StrFormat("%s%d%n", "hello", 123,
+// y_absl::FormatCountCapture(&n));
// EXPECT_EQ(8, n);
class FormatCountCapture {
public:
@@ -171,7 +171,7 @@ class FormatCountCapture {
// For a `FormatSpec` to be valid at compile-time, it must be provided as
// either:
//
-// * A `constexpr` literal or `y_absl::string_view`, which is how it most often
+// * A `constexpr` literal or `y_absl::string_view`, which is how it most often
// used.
// * A `ParsedFormat` instantiation, which ensures the format string is
// valid before use. (See below.)
@@ -179,16 +179,16 @@ class FormatCountCapture {
// Example:
//
// // Provided as a string literal.
-// y_absl::StrFormat("Welcome to %s, Number %d!", "The Village", 6);
+// y_absl::StrFormat("Welcome to %s, Number %d!", "The Village", 6);
//
-// // Provided as a constexpr y_absl::string_view.
-// constexpr y_absl::string_view formatString = "Welcome to %s, Number %d!";
-// y_absl::StrFormat(formatString, "The Village", 6);
+// // Provided as a constexpr y_absl::string_view.
+// constexpr y_absl::string_view formatString = "Welcome to %s, Number %d!";
+// y_absl::StrFormat(formatString, "The Village", 6);
//
// // Provided as a pre-compiled ParsedFormat object.
// // Note that this example is useful only for illustration purposes.
-// y_absl::ParsedFormat<'s', 'd'> formatString("Welcome to %s, Number %d!");
-// y_absl::StrFormat(formatString, "TheVillage", 6);
+// y_absl::ParsedFormat<'s', 'd'> formatString("Welcome to %s, Number %d!");
+// y_absl::StrFormat(formatString, "TheVillage", 6);
//
// A format string generally follows the POSIX syntax as used within the POSIX
// `printf` specification.
@@ -210,7 +210,7 @@ class FormatCountCapture {
// * `p` for pointer address values
// * `n` for the special case of writing out the number of characters
// written to this point. The resulting value must be captured within an
-// `y_absl::FormatCountCapture` type.
+// `y_absl::FormatCountCapture` type.
//
// Implementation-defined behavior:
// * A null pointer provided to "%s" or "%p" is output as "(nil)".
@@ -224,7 +224,7 @@ class FormatCountCapture {
// "%c", 'a' -> "a"
// "%c", 32 -> " "
// "%s", "C" -> "C"
-// "%s", TString("C++") -> "C++"
+// "%s", TString("C++") -> "C++"
// "%d", -10 -> "-10"
// "%o", 10 -> "12"
// "%x", 16 -> "10"
@@ -235,8 +235,8 @@ class FormatCountCapture {
// "%p", (void*)&value -> "0x7ffdeb6ad2a4"
//
// int n = 0;
-// TString s = y_absl::StrFormat(
-// "%s%d%n", "hello", 123, y_absl::FormatCountCapture(&n));
+// TString s = y_absl::StrFormat(
+// "%s%d%n", "hello", 123, y_absl::FormatCountCapture(&n));
// EXPECT_EQ(8, n);
//
// The `FormatSpec` intrinsically supports all of these fundamental C++ types:
@@ -248,7 +248,7 @@ class FormatCountCapture {
//
// However, in the `str_format` library, a format conversion specifies a broader
// C++ conceptual category instead of an exact type. For example, `%s` binds to
-// any string-like argument, so `TString`, `y_absl::string_view`, and
+// any string-like argument, so `TString`, `y_absl::string_view`, and
// `const char*` are all accepted. Likewise, `%d` accepts any integer-like
// argument, etc.
@@ -271,13 +271,13 @@ using FormatSpec = str_format_internal::FormatSpecTemplate<
// Example:
//
// // Verified at compile time.
-// y_absl::ParsedFormat<'s', 'd'> formatString("Welcome to %s, Number %d!");
-// y_absl::StrFormat(formatString, "TheVillage", 6);
+// y_absl::ParsedFormat<'s', 'd'> formatString("Welcome to %s, Number %d!");
+// y_absl::StrFormat(formatString, "TheVillage", 6);
//
// // Verified at runtime.
-// auto format_runtime = y_absl::ParsedFormat<'d'>::New(format_string);
+// auto format_runtime = y_absl::ParsedFormat<'d'>::New(format_string);
// if (format_runtime) {
-// value = y_absl::StrFormat(*format_runtime, i);
+// value = y_absl::StrFormat(*format_runtime, i);
// } else {
// ... error case ...
// }
@@ -329,13 +329,13 @@ using ParsedFormat = str_format_internal::ExtendedParsedFormat<
//
// Example:
//
-// TString s = y_absl::StrFormat(
+// TString s = y_absl::StrFormat(
// "Welcome to %s, Number %d!", "The Village", 6);
// EXPECT_EQ("Welcome to The Village, Number 6!", s);
//
// Returns an empty string in case of error.
template <typename... Args>
-ABSL_MUST_USE_RESULT TString StrFormat(const FormatSpec<Args...>& format,
+ABSL_MUST_USE_RESULT TString StrFormat(const FormatSpec<Args...>& format,
const Args&... args) {
return str_format_internal::FormatPack(
str_format_internal::UntypedFormatSpecImpl::Extract(format),
@@ -350,10 +350,10 @@ ABSL_MUST_USE_RESULT TString StrFormat(const FormatSpec<Args...>& format,
//
// Example:
//
-// TString orig("For example PI is approximately ");
+// TString orig("For example PI is approximately ");
// std::cout << StrAppendFormat(&orig, "%12.6f", 3.14);
template <typename... Args>
-TString& StrAppendFormat(TString* dst,
+TString& StrAppendFormat(TString* dst,
const FormatSpec<Args...>& format,
const Args&... args) {
return str_format_internal::AppendPack(
@@ -365,7 +365,7 @@ TString& StrAppendFormat(TString* dst,
//
// Writes to an output stream given a format string and zero or more arguments,
// generally in a manner that is more efficient than streaming the result of
-// `y_absl:: StrFormat()`. The returned object must be streamed before the full
+// `y_absl:: StrFormat()`. The returned object must be streamed before the full
// expression ends.
//
// Example:
@@ -383,12 +383,12 @@ ABSL_MUST_USE_RESULT str_format_internal::Streamable StreamFormat(
//
// Writes to stdout given a format string and zero or more arguments. This
// function is functionally equivalent to `std::printf()` (and type-safe);
-// prefer `y_absl::PrintF()` over `std::printf()`.
+// prefer `y_absl::PrintF()` over `std::printf()`.
//
// Example:
//
// std::string_view s = "Ulaanbaatar";
-// y_absl::PrintF("The capital of Mongolia is %s", s);
+// y_absl::PrintF("The capital of Mongolia is %s", s);
//
// Outputs: "The capital of Mongolia is Ulaanbaatar"
//
@@ -403,12 +403,12 @@ int PrintF(const FormatSpec<Args...>& format, const Args&... args) {
//
// Writes to a file given a format string and zero or more arguments. This
// function is functionally equivalent to `std::fprintf()` (and type-safe);
-// prefer `y_absl::FPrintF()` over `std::fprintf()`.
+// prefer `y_absl::FPrintF()` over `std::fprintf()`.
//
// Example:
//
// std::string_view s = "Ulaanbaatar";
-// y_absl::FPrintF(stdout, "The capital of Mongolia is %s", s);
+// y_absl::FPrintF(stdout, "The capital of Mongolia is %s", s);
//
// Outputs: "The capital of Mongolia is Ulaanbaatar"
//
@@ -424,9 +424,9 @@ int FPrintF(std::FILE* output, const FormatSpec<Args...>& format,
//
// Writes to a sized buffer given a format string and zero or more arguments.
// This function is functionally equivalent to `std::snprintf()` (and
-// type-safe); prefer `y_absl::SNPrintF()` over `std::snprintf()`.
+// type-safe); prefer `y_absl::SNPrintF()` over `std::snprintf()`.
//
-// In particular, a successful call to `y_absl::SNPrintF()` writes at most `size`
+// In particular, a successful call to `y_absl::SNPrintF()` writes at most `size`
// bytes of the formatted output to `output`, including a NUL-terminator, and
// returns the number of bytes that would have been written if truncation did
// not occur. In the event of an error, a negative value is returned and `errno`
@@ -436,7 +436,7 @@ int FPrintF(std::FILE* output, const FormatSpec<Args...>& format,
//
// std::string_view s = "Ulaanbaatar";
// char output[128];
-// y_absl::SNPrintF(output, sizeof(output),
+// y_absl::SNPrintF(output, sizeof(output),
// "The capital of Mongolia is %s", s);
//
// Post-condition: output == "The capital of Mongolia is Ulaanbaatar"
@@ -487,7 +487,7 @@ class FormatRawSink {
// Format()
//
// Writes a formatted string to an arbitrary sink object (implementing the
-// `y_absl::FormatRawSink` interface), using a format string and zero or more
+// `y_absl::FormatRawSink` interface), using a format string and zero or more
// additional arguments.
//
// By default, `TString`, `std::ostream`, and `y_absl::Cord` are supported as
@@ -522,7 +522,7 @@ using FormatArg = str_format_internal::FormatArgImpl;
// FormatUntyped()
//
// Writes a formatted string to an arbitrary sink object (implementing the
-// `y_absl::FormatRawSink` interface), using an `UntypedFormatSpec` and zero or
+// `y_absl::FormatRawSink` interface), using an `UntypedFormatSpec` and zero or
// more additional arguments.
//
// This function acts as the most generic formatting function in the
@@ -533,26 +533,26 @@ using FormatArg = str_format_internal::FormatArgImpl;
// On failure, this function returns `false` and the state of the sink is
// unspecified.
//
-// The arguments are provided in an `y_absl::Span<const y_absl::FormatArg>`.
-// Each `y_absl::FormatArg` object binds to a single argument and keeps a
+// The arguments are provided in an `y_absl::Span<const y_absl::FormatArg>`.
+// Each `y_absl::FormatArg` object binds to a single argument and keeps a
// reference to it. The values used to create the `FormatArg` objects must
// outlive this function call.
//
// Example:
//
-// std::optional<TString> FormatDynamic(
-// const TString& in_format,
-// const vector<TString>& in_args) {
-// TString out;
-// std::vector<y_absl::FormatArg> args;
+// std::optional<TString> FormatDynamic(
+// const TString& in_format,
+// const vector<TString>& in_args) {
+// TString out;
+// std::vector<y_absl::FormatArg> args;
// for (const auto& v : in_args) {
// // It is important that 'v' is a reference to the objects in in_args.
// // The values we pass to FormatArg must outlive the call to
// // FormatUntyped.
// args.emplace_back(v);
// }
-// y_absl::UntypedFormatSpec format(in_format);
-// if (!y_absl::FormatUntyped(&out, format, args)) {
+// y_absl::UntypedFormatSpec format(in_format);
+// if (!y_absl::FormatUntyped(&out, format, args)) {
// return std::nullopt;
// }
// return std::move(out);
@@ -560,7 +560,7 @@ using FormatArg = str_format_internal::FormatArgImpl;
//
ABSL_MUST_USE_RESULT inline bool FormatUntyped(
FormatRawSink raw_sink, const UntypedFormatSpec& format,
- y_absl::Span<const FormatArg> args) {
+ y_absl::Span<const FormatArg> args) {
return str_format_internal::FormatUntyped(
str_format_internal::FormatRawSinkImpl::Extract(raw_sink),
str_format_internal::UntypedFormatSpecImpl::Extract(format), args);
@@ -807,6 +807,6 @@ struct FormatConvertResult {
};
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_STRINGS_STR_FORMAT_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_join.h b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_join.h
index 41d3205da7..46a0323c6e 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_join.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_join.h
@@ -18,30 +18,30 @@
// -----------------------------------------------------------------------------
//
// This header file contains functions for joining a range of elements and
-// returning the result as a TString. StrJoin operations are specified by
+// returning the result as a TString. StrJoin operations are specified by
// passing a range, a separator string to use between the elements joined, and
// an optional Formatter responsible for converting each argument in the range
// to a string. If omitted, a default `AlphaNumFormatter()` is called on the
-// elements to be joined, using the same formatting that `y_absl::StrCat()` uses.
+// elements to be joined, using the same formatting that `y_absl::StrCat()` uses.
// This package defines a number of default formatters, and you can define your
// own implementations.
//
// Ranges are specified by passing a container with `std::begin()` and
// `std::end()` iterators, container-specific `begin()` and `end()` iterators, a
// brace-initialized `std::initializer_list`, or a `std::tuple` of heterogeneous
-// objects. The separator string is specified as an `y_absl::string_view`.
+// objects. The separator string is specified as an `y_absl::string_view`.
//
-// Because the default formatter uses the `y_absl::AlphaNum` class,
-// `y_absl::StrJoin()`, like `y_absl::StrCat()`, will work out-of-the-box on
+// Because the default formatter uses the `y_absl::AlphaNum` class,
+// `y_absl::StrJoin()`, like `y_absl::StrCat()`, will work out-of-the-box on
// collections of strings, ints, floats, doubles, etc.
//
// Example:
//
-// std::vector<TString> v = {"foo", "bar", "baz"};
-// TString s = y_absl::StrJoin(v, "-");
+// std::vector<TString> v = {"foo", "bar", "baz"};
+// TString s = y_absl::StrJoin(v, "-");
// EXPECT_EQ("foo-bar-baz", s);
//
-// See comments on the `y_absl::StrJoin()` function for more examples.
+// See comments on the `y_absl::StrJoin()` function for more examples.
#ifndef ABSL_STRINGS_STR_JOIN_H_
#define ABSL_STRINGS_STR_JOIN_H_
@@ -55,11 +55,11 @@
#include <type_traits>
#include <utility>
-#include "y_absl/base/macros.h"
-#include "y_absl/strings/internal/str_join_internal.h"
-#include "y_absl/strings/string_view.h"
+#include "y_absl/base/macros.h"
+#include "y_absl/strings/internal/str_join_internal.h"
+#include "y_absl/strings/string_view.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// -----------------------------------------------------------------------------
@@ -67,25 +67,25 @@ ABSL_NAMESPACE_BEGIN
// -----------------------------------------------------------------------------
//
// A Formatter is a function object that is responsible for formatting its
-// argument as a string and appending it to a given output TString.
+// argument as a string and appending it to a given output TString.
// Formatters may be implemented as function objects, lambdas, or normal
-// functions. You may provide your own Formatter to enable `y_absl::StrJoin()` to
+// functions. You may provide your own Formatter to enable `y_absl::StrJoin()` to
// work with arbitrary types.
//
// The following is an example of a custom Formatter that simply uses
-// `std::to_string()` to format an integer as a TString.
+// `std::to_string()` to format an integer as a TString.
//
// struct MyFormatter {
-// void operator()(TString* out, int i) const {
+// void operator()(TString* out, int i) const {
// out->append(std::to_string(i));
// }
// };
//
// You would use the above formatter by passing an instance of it as the final
-// argument to `y_absl::StrJoin()`:
+// argument to `y_absl::StrJoin()`:
//
// std::vector<int> v = {1, 2, 3, 4};
-// TString s = y_absl::StrJoin(v, "-", MyFormatter());
+// TString s = y_absl::StrJoin(v, "-", MyFormatter());
// EXPECT_EQ("1-2-3-4", s);
//
// The following standard formatters are provided within this file:
@@ -97,7 +97,7 @@ ABSL_NAMESPACE_BEGIN
// AlphaNumFormatter()
//
-// Default formatter used if none is specified. Uses `y_absl::AlphaNum` to convert
+// Default formatter used if none is specified. Uses `y_absl::AlphaNum` to convert
// numeric arguments to strings.
inline strings_internal::AlphaNumFormatterImpl AlphaNumFormatter() {
return strings_internal::AlphaNumFormatterImpl();
@@ -110,14 +110,14 @@ inline strings_internal::StreamFormatterImpl StreamFormatter() {
return strings_internal::StreamFormatterImpl();
}
-// Function Template: PairFormatter(Formatter, y_absl::string_view, Formatter)
+// Function Template: PairFormatter(Formatter, y_absl::string_view, Formatter)
//
// Formats a `std::pair` by putting a given separator between the pair's
// `.first` and `.second` members. This formatter allows you to specify
// custom Formatters for both the first and second member of each pair.
template <typename FirstFormatter, typename SecondFormatter>
inline strings_internal::PairFormatterImpl<FirstFormatter, SecondFormatter>
-PairFormatter(FirstFormatter f1, y_absl::string_view sep, SecondFormatter f2) {
+PairFormatter(FirstFormatter f1, y_absl::string_view sep, SecondFormatter f2) {
return strings_internal::PairFormatterImpl<FirstFormatter, SecondFormatter>(
std::move(f1), sep, std::move(f2));
}
@@ -127,7 +127,7 @@ PairFormatter(FirstFormatter f1, y_absl::string_view sep, SecondFormatter f2) {
inline strings_internal::PairFormatterImpl<
strings_internal::AlphaNumFormatterImpl,
strings_internal::AlphaNumFormatterImpl>
-PairFormatter(y_absl::string_view sep) {
+PairFormatter(y_absl::string_view sep) {
return PairFormatter(AlphaNumFormatter(), sep, AlphaNumFormatter());
}
@@ -157,8 +157,8 @@ DereferenceFormatter() {
// StrJoin()
// -----------------------------------------------------------------------------
//
-// Joins a range of elements and returns the result as a TString.
-// `y_absl::StrJoin()` takes a range, a separator string to use between the
+// Joins a range of elements and returns the result as a TString.
+// `y_absl::StrJoin()` takes a range, a separator string to use between the
// elements joined, and an optional Formatter responsible for converting each
// argument in the range to a string.
//
@@ -167,23 +167,23 @@ DereferenceFormatter() {
//
// Example 1:
// // Joins a collection of strings. This pattern also works with a collection
-// // of `y_absl::string_view` or even `const char*`.
-// std::vector<TString> v = {"foo", "bar", "baz"};
-// TString s = y_absl::StrJoin(v, "-");
+// // of `y_absl::string_view` or even `const char*`.
+// std::vector<TString> v = {"foo", "bar", "baz"};
+// TString s = y_absl::StrJoin(v, "-");
// EXPECT_EQ("foo-bar-baz", s);
//
// Example 2:
// // Joins the values in the given `std::initializer_list<>` specified using
// // brace initialization. This pattern also works with an initializer_list
-// // of ints or `y_absl::string_view` -- any `AlphaNum`-compatible type.
-// TString s = y_absl::StrJoin({"foo", "bar", "baz"}, "-");
+// // of ints or `y_absl::string_view` -- any `AlphaNum`-compatible type.
+// TString s = y_absl::StrJoin({"foo", "bar", "baz"}, "-");
// EXPECT_EQ("foo-bar-baz", s);
//
// Example 3:
// // Joins a collection of ints. This pattern also works with floats,
// // doubles, int64s -- any `StrCat()`-compatible type.
// std::vector<int> v = {1, 2, 3, -4};
-// TString s = y_absl::StrJoin(v, "-");
+// TString s = y_absl::StrJoin(v, "-");
// EXPECT_EQ("1-2-3--4", s);
//
// Example 4:
@@ -194,7 +194,7 @@ DereferenceFormatter() {
// // `std::vector<int*>`.
// int x = 1, y = 2, z = 3;
// std::vector<int*> v = {&x, &y, &z};
-// TString s = y_absl::StrJoin(v, "-");
+// TString s = y_absl::StrJoin(v, "-");
// EXPECT_EQ("1-2-3", s);
//
// Example 5:
@@ -203,91 +203,91 @@ DereferenceFormatter() {
// v.emplace_back(new int(1));
// v.emplace_back(new int(2));
// v.emplace_back(new int(3));
-// TString s = y_absl::StrJoin(v, "-");
+// TString s = y_absl::StrJoin(v, "-");
// EXPECT_EQ("1-2-3", s);
//
// Example 6:
// // Joins a `std::map`, with each key-value pair separated by an equals
// // sign. This pattern would also work with, say, a
// // `std::vector<std::pair<>>`.
-// std::map<TString, int> m = {
+// std::map<TString, int> m = {
// std::make_pair("a", 1),
// std::make_pair("b", 2),
// std::make_pair("c", 3)};
-// TString s = y_absl::StrJoin(m, ",", y_absl::PairFormatter("="));
+// TString s = y_absl::StrJoin(m, ",", y_absl::PairFormatter("="));
// EXPECT_EQ("a=1,b=2,c=3", s);
//
// Example 7:
-// // These examples show how `y_absl::StrJoin()` handles a few common edge
+// // These examples show how `y_absl::StrJoin()` handles a few common edge
// // cases:
-// std::vector<TString> v_empty;
-// EXPECT_EQ("", y_absl::StrJoin(v_empty, "-"));
+// std::vector<TString> v_empty;
+// EXPECT_EQ("", y_absl::StrJoin(v_empty, "-"));
//
-// std::vector<TString> v_one_item = {"foo"};
-// EXPECT_EQ("foo", y_absl::StrJoin(v_one_item, "-"));
+// std::vector<TString> v_one_item = {"foo"};
+// EXPECT_EQ("foo", y_absl::StrJoin(v_one_item, "-"));
//
-// std::vector<TString> v_empty_string = {""};
-// EXPECT_EQ("", y_absl::StrJoin(v_empty_string, "-"));
+// std::vector<TString> v_empty_string = {""};
+// EXPECT_EQ("", y_absl::StrJoin(v_empty_string, "-"));
//
-// std::vector<TString> v_one_item_empty_string = {"a", ""};
-// EXPECT_EQ("a-", y_absl::StrJoin(v_one_item_empty_string, "-"));
+// std::vector<TString> v_one_item_empty_string = {"a", ""};
+// EXPECT_EQ("a-", y_absl::StrJoin(v_one_item_empty_string, "-"));
//
-// std::vector<TString> v_two_empty_string = {"", ""};
-// EXPECT_EQ("-", y_absl::StrJoin(v_two_empty_string, "-"));
+// std::vector<TString> v_two_empty_string = {"", ""};
+// EXPECT_EQ("-", y_absl::StrJoin(v_two_empty_string, "-"));
//
// Example 8:
// // Joins a `std::tuple<T...>` of heterogeneous types, converting each to
-// // a TString using the `y_absl::AlphaNum` class.
-// TString s = y_absl::StrJoin(std::make_tuple(123, "abc", 0.456), "-");
+// // a TString using the `y_absl::AlphaNum` class.
+// TString s = y_absl::StrJoin(std::make_tuple(123, "abc", 0.456), "-");
// EXPECT_EQ("123-abc-0.456", s);
template <typename Iterator, typename Formatter>
-TString StrJoin(Iterator start, Iterator end, y_absl::string_view sep,
+TString StrJoin(Iterator start, Iterator end, y_absl::string_view sep,
Formatter&& fmt) {
return strings_internal::JoinAlgorithm(start, end, sep, fmt);
}
template <typename Range, typename Formatter>
-TString StrJoin(const Range& range, y_absl::string_view separator,
+TString StrJoin(const Range& range, y_absl::string_view separator,
Formatter&& fmt) {
return strings_internal::JoinRange(range, separator, fmt);
}
template <typename T, typename Formatter>
-TString StrJoin(std::initializer_list<T> il, y_absl::string_view separator,
+TString StrJoin(std::initializer_list<T> il, y_absl::string_view separator,
Formatter&& fmt) {
return strings_internal::JoinRange(il, separator, fmt);
}
template <typename... T, typename Formatter>
-TString StrJoin(const std::tuple<T...>& value, y_absl::string_view separator,
+TString StrJoin(const std::tuple<T...>& value, y_absl::string_view separator,
Formatter&& fmt) {
return strings_internal::JoinAlgorithm(value, separator, fmt);
}
template <typename Iterator>
-TString StrJoin(Iterator start, Iterator end, y_absl::string_view separator) {
+TString StrJoin(Iterator start, Iterator end, y_absl::string_view separator) {
return strings_internal::JoinRange(start, end, separator);
}
template <typename Range>
-TString StrJoin(const Range& range, y_absl::string_view separator) {
+TString StrJoin(const Range& range, y_absl::string_view separator) {
return strings_internal::JoinRange(range, separator);
}
template <typename T>
-TString StrJoin(std::initializer_list<T> il,
- y_absl::string_view separator) {
+TString StrJoin(std::initializer_list<T> il,
+ y_absl::string_view separator) {
return strings_internal::JoinRange(il, separator);
}
template <typename... T>
-TString StrJoin(const std::tuple<T...>& value,
- y_absl::string_view separator) {
+TString StrJoin(const std::tuple<T...>& value,
+ y_absl::string_view separator) {
return strings_internal::JoinAlgorithm(value, separator, AlphaNumFormatter());
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_STRINGS_STR_JOIN_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_replace.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_replace.cc
index e6e3c9eba8..77b78c6c16 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_replace.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_replace.cc
@@ -12,24 +12,24 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/strings/str_replace.h"
+#include "y_absl/strings/str_replace.h"
-#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/str_cat.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace strings_internal {
using FixedMapping =
- std::initializer_list<std::pair<y_absl::string_view, y_absl::string_view>>;
+ std::initializer_list<std::pair<y_absl::string_view, y_absl::string_view>>;
-// Applies the ViableSubstitutions in subs_ptr to the y_absl::string_view s, and
+// Applies the ViableSubstitutions in subs_ptr to the y_absl::string_view s, and
// stores the result in *result_ptr. Returns the number of substitutions that
// occurred.
int ApplySubstitutions(
- y_absl::string_view s,
+ y_absl::string_view s,
std::vector<strings_internal::ViableSubstitution>* subs_ptr,
- TString* result_ptr) {
+ TString* result_ptr) {
auto& subs = *subs_ptr;
int substitutions = 0;
size_t pos = 0;
@@ -68,15 +68,15 @@ int ApplySubstitutions(
// Note that we implement them here, rather than in the header, so that they
// aren't inlined.
-TString StrReplaceAll(y_absl::string_view s,
+TString StrReplaceAll(y_absl::string_view s,
strings_internal::FixedMapping replacements) {
return StrReplaceAll<strings_internal::FixedMapping>(s, replacements);
}
int StrReplaceAll(strings_internal::FixedMapping replacements,
- TString* target) {
+ TString* target) {
return StrReplaceAll<strings_internal::FixedMapping>(replacements, target);
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_replace.h b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_replace.h
index c9019646d7..42c85616a0 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_replace.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_replace.h
@@ -17,7 +17,7 @@
// File: str_replace.h
// -----------------------------------------------------------------------------
//
-// This file defines `y_absl::StrReplaceAll()`, a general-purpose string
+// This file defines `y_absl::StrReplaceAll()`, a general-purpose string
// replacement function designed for large, arbitrary text substitutions,
// especially on strings which you are receiving from some other system for
// further processing (e.g. processing regular expressions, escaping HTML
@@ -25,11 +25,11 @@
// one substitution is being performed, or when substitution is rare.
//
// If the string being modified is known at compile-time, and the substitutions
-// vary, `y_absl::Substitute()` may be a better choice.
+// vary, `y_absl::Substitute()` may be a better choice.
//
// Example:
//
-// TString html_escaped = y_absl::StrReplaceAll(user_input, {
+// TString html_escaped = y_absl::StrReplaceAll(user_input, {
// {"&", "&amp;"},
// {"<", "&lt;"},
// {">", "&gt;"},
@@ -42,10 +42,10 @@
#include <utility>
#include <vector>
-#include "y_absl/base/attributes.h"
-#include "y_absl/strings/string_view.h"
+#include "y_absl/base/attributes.h"
+#include "y_absl/strings/string_view.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// StrReplaceAll()
@@ -59,15 +59,15 @@ ABSL_NAMESPACE_BEGIN
//
// Example:
//
-// TString s = y_absl::StrReplaceAll(
+// TString s = y_absl::StrReplaceAll(
// "$who bought $count #Noun. Thanks $who!",
-// {{"$count", y_absl::StrCat(5)},
+// {{"$count", y_absl::StrCat(5)},
// {"$who", "Bob"},
// {"#Noun", "Apples"}});
// EXPECT_EQ("Bob bought 5 Apples. Thanks Bob!", s);
-ABSL_MUST_USE_RESULT TString StrReplaceAll(
- y_absl::string_view s,
- std::initializer_list<std::pair<y_absl::string_view, y_absl::string_view>>
+ABSL_MUST_USE_RESULT TString StrReplaceAll(
+ y_absl::string_view s,
+ std::initializer_list<std::pair<y_absl::string_view, y_absl::string_view>>
replacements);
// Overload of `StrReplaceAll()` to accept a container of key/value replacement
@@ -76,25 +76,25 @@ ABSL_MUST_USE_RESULT TString StrReplaceAll(
//
// Examples:
//
-// std::map<const y_absl::string_view, const y_absl::string_view> replacements;
+// std::map<const y_absl::string_view, const y_absl::string_view> replacements;
// replacements["$who"] = "Bob";
// replacements["$count"] = "5";
// replacements["#Noun"] = "Apples";
-// TString s = y_absl::StrReplaceAll(
+// TString s = y_absl::StrReplaceAll(
// "$who bought $count #Noun. Thanks $who!",
// replacements);
// EXPECT_EQ("Bob bought 5 Apples. Thanks Bob!", s);
//
// // A std::vector of std::pair elements can be more efficient.
-// std::vector<std::pair<const y_absl::string_view, TString>> replacements;
+// std::vector<std::pair<const y_absl::string_view, TString>> replacements;
// replacements.push_back({"&", "&amp;"});
// replacements.push_back({"<", "&lt;"});
// replacements.push_back({">", "&gt;"});
-// TString s = y_absl::StrReplaceAll("if (ptr < &foo)",
+// TString s = y_absl::StrReplaceAll("if (ptr < &foo)",
// replacements);
// EXPECT_EQ("if (ptr &lt; &amp;foo)", s);
template <typename StrToStrMapping>
-TString StrReplaceAll(y_absl::string_view s,
+TString StrReplaceAll(y_absl::string_view s,
const StrToStrMapping& replacements);
// Overload of `StrReplaceAll()` to replace character sequences within a given
@@ -103,17 +103,17 @@ TString StrReplaceAll(y_absl::string_view s,
//
// Example:
//
-// TString s = TString("$who bought $count #Noun. Thanks $who!");
+// TString s = TString("$who bought $count #Noun. Thanks $who!");
// int count;
-// count = y_absl::StrReplaceAll({{"$count", y_absl::StrCat(5)},
+// count = y_absl::StrReplaceAll({{"$count", y_absl::StrCat(5)},
// {"$who", "Bob"},
// {"#Noun", "Apples"}}, &s);
// EXPECT_EQ(count, 4);
// EXPECT_EQ("Bob bought 5 Apples. Thanks Bob!", s);
int StrReplaceAll(
- std::initializer_list<std::pair<y_absl::string_view, y_absl::string_view>>
+ std::initializer_list<std::pair<y_absl::string_view, y_absl::string_view>>
replacements,
- TString* target);
+ TString* target);
// Overload of `StrReplaceAll()` to replace patterns within a given output
// string *in place* with replacements provided within a container of key/value
@@ -121,25 +121,25 @@ int StrReplaceAll(
//
// Example:
//
-// TString s = TString("if (ptr < &foo)");
-// int count = y_absl::StrReplaceAll({{"&", "&amp;"},
+// TString s = TString("if (ptr < &foo)");
+// int count = y_absl::StrReplaceAll({{"&", "&amp;"},
// {"<", "&lt;"},
// {">", "&gt;"}}, &s);
// EXPECT_EQ(count, 2);
// EXPECT_EQ("if (ptr &lt; &amp;foo)", s);
template <typename StrToStrMapping>
-int StrReplaceAll(const StrToStrMapping& replacements, TString* target);
+int StrReplaceAll(const StrToStrMapping& replacements, TString* target);
// Implementation details only, past this point.
namespace strings_internal {
struct ViableSubstitution {
- y_absl::string_view old;
- y_absl::string_view replacement;
+ y_absl::string_view old;
+ y_absl::string_view replacement;
size_t offset;
- ViableSubstitution(y_absl::string_view old_str,
- y_absl::string_view replacement_str, size_t offset_val)
+ ViableSubstitution(y_absl::string_view old_str,
+ y_absl::string_view replacement_str, size_t offset_val)
: old(old_str), replacement(replacement_str), offset(offset_val) {}
// One substitution occurs "before" another (takes priority) if either
@@ -156,13 +156,13 @@ struct ViableSubstitution {
// overhead of such a queue isn't worth it.
template <typename StrToStrMapping>
std::vector<ViableSubstitution> FindSubstitutions(
- y_absl::string_view s, const StrToStrMapping& replacements) {
+ y_absl::string_view s, const StrToStrMapping& replacements) {
std::vector<ViableSubstitution> subs;
subs.reserve(replacements.size());
for (const auto& rep : replacements) {
using std::get;
- y_absl::string_view old(get<0>(rep));
+ y_absl::string_view old(get<0>(rep));
size_t pos = s.find(old);
if (pos == s.npos) continue;
@@ -184,28 +184,28 @@ std::vector<ViableSubstitution> FindSubstitutions(
return subs;
}
-int ApplySubstitutions(y_absl::string_view s,
+int ApplySubstitutions(y_absl::string_view s,
std::vector<ViableSubstitution>* subs_ptr,
- TString* result_ptr);
+ TString* result_ptr);
} // namespace strings_internal
template <typename StrToStrMapping>
-TString StrReplaceAll(y_absl::string_view s,
+TString StrReplaceAll(y_absl::string_view s,
const StrToStrMapping& replacements) {
auto subs = strings_internal::FindSubstitutions(s, replacements);
- TString result;
+ TString result;
result.reserve(s.size());
strings_internal::ApplySubstitutions(s, &subs, &result);
return result;
}
template <typename StrToStrMapping>
-int StrReplaceAll(const StrToStrMapping& replacements, TString* target) {
+int StrReplaceAll(const StrToStrMapping& replacements, TString* target) {
auto subs = strings_internal::FindSubstitutions(*target, replacements);
if (subs.empty()) return 0;
- TString result;
+ TString result;
result.reserve(target->size());
int substitutions =
strings_internal::ApplySubstitutions(*target, &subs, &result);
@@ -214,6 +214,6 @@ int StrReplaceAll(const StrToStrMapping& replacements, TString* target) {
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_STRINGS_STR_REPLACE_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_split.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_split.cc
index bf37503357..5f9193e6ba 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_split.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_split.cc
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/strings/str_split.h"
+#include "y_absl/strings/str_split.h"
#include <algorithm>
#include <cassert>
@@ -23,10 +23,10 @@
#include <limits>
#include <memory>
-#include "y_absl/base/internal/raw_logging.h"
-#include "y_absl/strings/ascii.h"
+#include "y_absl/base/internal/raw_logging.h"
+#include "y_absl/strings/ascii.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace {
@@ -35,44 +35,44 @@ namespace {
// shared between the ByString and ByAnyChar delimiters. The FindPolicy
// template parameter allows each delimiter to customize the actual find
// function to use and the length of the found delimiter. For example, the
-// Literal delimiter will ultimately use y_absl::string_view::find(), and the
-// AnyOf delimiter will use y_absl::string_view::find_first_of().
+// Literal delimiter will ultimately use y_absl::string_view::find(), and the
+// AnyOf delimiter will use y_absl::string_view::find_first_of().
template <typename FindPolicy>
-y_absl::string_view GenericFind(y_absl::string_view text,
- y_absl::string_view delimiter, size_t pos,
+y_absl::string_view GenericFind(y_absl::string_view text,
+ y_absl::string_view delimiter, size_t pos,
FindPolicy find_policy) {
if (delimiter.empty() && text.length() > 0) {
// Special case for empty string delimiters: always return a zero-length
- // y_absl::string_view referring to the item at position 1 past pos.
- return y_absl::string_view(text.data() + pos + 1, 0);
+ // y_absl::string_view referring to the item at position 1 past pos.
+ return y_absl::string_view(text.data() + pos + 1, 0);
}
- size_t found_pos = y_absl::string_view::npos;
- y_absl::string_view found(text.data() + text.size(),
+ size_t found_pos = y_absl::string_view::npos;
+ y_absl::string_view found(text.data() + text.size(),
0); // By default, not found
found_pos = find_policy.Find(text, delimiter, pos);
- if (found_pos != y_absl::string_view::npos) {
- found = y_absl::string_view(text.data() + found_pos,
+ if (found_pos != y_absl::string_view::npos) {
+ found = y_absl::string_view(text.data() + found_pos,
find_policy.Length(delimiter));
}
return found;
}
-// Finds using y_absl::string_view::find(), therefore the length of the found
+// Finds using y_absl::string_view::find(), therefore the length of the found
// delimiter is delimiter.length().
struct LiteralPolicy {
- size_t Find(y_absl::string_view text, y_absl::string_view delimiter, size_t pos) {
+ size_t Find(y_absl::string_view text, y_absl::string_view delimiter, size_t pos) {
return text.find(delimiter, pos);
}
- size_t Length(y_absl::string_view delimiter) { return delimiter.length(); }
+ size_t Length(y_absl::string_view delimiter) { return delimiter.length(); }
};
-// Finds using y_absl::string_view::find_first_of(), therefore the length of the
+// Finds using y_absl::string_view::find_first_of(), therefore the length of the
// found delimiter is 1.
struct AnyOfPolicy {
- size_t Find(y_absl::string_view text, y_absl::string_view delimiter, size_t pos) {
+ size_t Find(y_absl::string_view text, y_absl::string_view delimiter, size_t pos) {
return text.find_first_of(delimiter, pos);
}
- size_t Length(y_absl::string_view /* delimiter */) { return 1; }
+ size_t Length(y_absl::string_view /* delimiter */) { return 1; }
};
} // namespace
@@ -81,15 +81,15 @@ struct AnyOfPolicy {
// ByString
//
-ByString::ByString(y_absl::string_view sp) : delimiter_(sp) {}
+ByString::ByString(y_absl::string_view sp) : delimiter_(sp) {}
-y_absl::string_view ByString::Find(y_absl::string_view text, size_t pos) const {
+y_absl::string_view ByString::Find(y_absl::string_view text, size_t pos) const {
if (delimiter_.length() == 1) {
// Much faster to call find on a single character than on an
- // y_absl::string_view.
+ // y_absl::string_view.
size_t found_pos = text.find(delimiter_[0], pos);
- if (found_pos == y_absl::string_view::npos)
- return y_absl::string_view(text.data() + text.size(), 0);
+ if (found_pos == y_absl::string_view::npos)
+ return y_absl::string_view(text.data() + text.size(), 0);
return text.substr(found_pos, 1);
}
return GenericFind(text, delimiter_, pos, LiteralPolicy());
@@ -99,10 +99,10 @@ y_absl::string_view ByString::Find(y_absl::string_view text, size_t pos) const {
// ByChar
//
-y_absl::string_view ByChar::Find(y_absl::string_view text, size_t pos) const {
+y_absl::string_view ByChar::Find(y_absl::string_view text, size_t pos) const {
size_t found_pos = text.find(c_, pos);
- if (found_pos == y_absl::string_view::npos)
- return y_absl::string_view(text.data() + text.size(), 0);
+ if (found_pos == y_absl::string_view::npos)
+ return y_absl::string_view(text.data() + text.size(), 0);
return text.substr(found_pos, 1);
}
@@ -110,9 +110,9 @@ y_absl::string_view ByChar::Find(y_absl::string_view text, size_t pos) const {
// ByAnyChar
//
-ByAnyChar::ByAnyChar(y_absl::string_view sp) : delimiters_(sp) {}
+ByAnyChar::ByAnyChar(y_absl::string_view sp) : delimiters_(sp) {}
-y_absl::string_view ByAnyChar::Find(y_absl::string_view text, size_t pos) const {
+y_absl::string_view ByAnyChar::Find(y_absl::string_view text, size_t pos) const {
return GenericFind(text, delimiters_, pos, AnyOfPolicy());
}
@@ -123,17 +123,17 @@ ByLength::ByLength(ptrdiff_t length) : length_(length) {
ABSL_RAW_CHECK(length > 0, "");
}
-y_absl::string_view ByLength::Find(y_absl::string_view text,
+y_absl::string_view ByLength::Find(y_absl::string_view text,
size_t pos) const {
pos = std::min(pos, text.size()); // truncate `pos`
- y_absl::string_view substr = text.substr(pos);
+ y_absl::string_view substr = text.substr(pos);
// If the string is shorter than the chunk size we say we
// "can't find the delimiter" so this will be the last chunk.
if (substr.length() <= static_cast<size_t>(length_))
- return y_absl::string_view(text.data() + text.size(), 0);
+ return y_absl::string_view(text.data() + text.size(), 0);
- return y_absl::string_view(substr.data() + length_, 0);
+ return y_absl::string_view(substr.data() + length_, 0);
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_split.h b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_split.h
index 22176e418d..d32d54813e 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_split.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/str_split.h
@@ -27,7 +27,7 @@
//
// // Splits the given string on commas. Returns the results in a
// // vector of strings.
-// std::vector<TString> v = y_absl::StrSplit("a,b,c", ',');
+// std::vector<TString> v = y_absl::StrSplit("a,b,c", ',');
// // Can also use ","
// // v[0] == "a", v[1] == "b", v[2] == "c"
//
@@ -43,13 +43,13 @@
#include <utility>
#include <vector>
-#include "y_absl/base/internal/raw_logging.h"
+#include "y_absl/base/internal/raw_logging.h"
#include "y_absl/base/macros.h"
-#include "y_absl/strings/internal/str_split_internal.h"
-#include "y_absl/strings/string_view.h"
-#include "y_absl/strings/strip.h"
+#include "y_absl/strings/internal/str_split_internal.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/strings/strip.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
//------------------------------------------------------------------------------
@@ -58,12 +58,12 @@ ABSL_NAMESPACE_BEGIN
//
// `StrSplit()` uses delimiters to define the boundaries between elements in the
// provided input. Several `Delimiter` types are defined below. If a string
-// (`const char*`, `TString`, or `y_absl::string_view`) is passed in place of
+// (`const char*`, `TString`, or `y_absl::string_view`) is passed in place of
// an explicit `Delimiter` object, `StrSplit()` treats it the same way as if it
// were passed a `ByString` delimiter.
//
// A `Delimiter` is an object with a `Find()` function that knows how to find
-// the first occurrence of itself in a given `y_absl::string_view`.
+// the first occurrence of itself in a given `y_absl::string_view`.
//
// The following `Delimiter` types are available for use within `StrSplit()`:
//
@@ -75,16 +75,16 @@ ABSL_NAMESPACE_BEGIN
//
// A Delimiter's `Find()` member function will be passed an input `text` that is
// to be split and a position (`pos`) to begin searching for the next delimiter
-// in `text`. The returned y_absl::string_view should refer to the next occurrence
-// (after `pos`) of the represented delimiter; this returned y_absl::string_view
+// in `text`. The returned y_absl::string_view should refer to the next occurrence
+// (after `pos`) of the represented delimiter; this returned y_absl::string_view
// represents the next location where the input `text` should be broken.
//
-// The returned y_absl::string_view may be zero-length if the Delimiter does not
+// The returned y_absl::string_view may be zero-length if the Delimiter does not
// represent a part of the string (e.g., a fixed-length delimiter). If no
-// delimiter is found in the input `text`, a zero-length y_absl::string_view
+// delimiter is found in the input `text`, a zero-length y_absl::string_view
// referring to `text.end()` should be returned (e.g.,
// `text.substr(text.size())`). It is important that the returned
-// y_absl::string_view always be within the bounds of the input `text` given as an
+// y_absl::string_view always be within the bounds of the input `text` given as an
// argument--it must not refer to a string that is physically located outside of
// the given string.
//
@@ -95,9 +95,9 @@ ABSL_NAMESPACE_BEGIN
// struct SimpleDelimiter {
// const char c_;
// explicit SimpleDelimiter(char c) : c_(c) {}
-// y_absl::string_view Find(y_absl::string_view text, size_t pos) {
+// y_absl::string_view Find(y_absl::string_view text, size_t pos) {
// auto found = text.find(c_, pos);
-// if (found == y_absl::string_view::npos)
+// if (found == y_absl::string_view::npos)
// return text.substr(text.size());
//
// return text.substr(found, 1);
@@ -112,22 +112,22 @@ ABSL_NAMESPACE_BEGIN
//
// Example:
//
-// // Because a string literal is converted to an `y_absl::ByString`,
+// // Because a string literal is converted to an `y_absl::ByString`,
// // the following two splits are equivalent.
//
-// std::vector<TString> v1 = y_absl::StrSplit("a, b, c", ", ");
+// std::vector<TString> v1 = y_absl::StrSplit("a, b, c", ", ");
//
-// using y_absl::ByString;
-// std::vector<TString> v2 = y_absl::StrSplit("a, b, c",
+// using y_absl::ByString;
+// std::vector<TString> v2 = y_absl::StrSplit("a, b, c",
// ByString(", "));
// // v[0] == "a", v[1] == "b", v[2] == "c"
class ByString {
public:
- explicit ByString(y_absl::string_view sp);
- y_absl::string_view Find(y_absl::string_view text, size_t pos) const;
+ explicit ByString(y_absl::string_view sp);
+ y_absl::string_view Find(y_absl::string_view text, size_t pos) const;
private:
- const TString delimiter_;
+ const TString delimiter_;
};
// ByChar
@@ -137,26 +137,26 @@ class ByString {
//
// Example:
//
-// // Because a char literal is converted to a y_absl::ByChar,
+// // Because a char literal is converted to a y_absl::ByChar,
// // the following two splits are equivalent.
-// std::vector<TString> v1 = y_absl::StrSplit("a,b,c", ',');
-// using y_absl::ByChar;
-// std::vector<TString> v2 = y_absl::StrSplit("a,b,c", ByChar(','));
+// std::vector<TString> v1 = y_absl::StrSplit("a,b,c", ',');
+// using y_absl::ByChar;
+// std::vector<TString> v2 = y_absl::StrSplit("a,b,c", ByChar(','));
// // v[0] == "a", v[1] == "b", v[2] == "c"
//
// `ByChar` is also the default delimiter if a single character is given
// as the delimiter to `StrSplit()`. For example, the following calls are
// equivalent:
//
-// std::vector<TString> v = y_absl::StrSplit("a-b", '-');
+// std::vector<TString> v = y_absl::StrSplit("a-b", '-');
//
-// using y_absl::ByChar;
-// std::vector<TString> v = y_absl::StrSplit("a-b", ByChar('-'));
+// using y_absl::ByChar;
+// std::vector<TString> v = y_absl::StrSplit("a-b", ByChar('-'));
//
class ByChar {
public:
explicit ByChar(char c) : c_(c) {}
- y_absl::string_view Find(y_absl::string_view text, size_t pos) const;
+ y_absl::string_view Find(y_absl::string_view text, size_t pos) const;
private:
char c_;
@@ -172,8 +172,8 @@ class ByChar {
//
// Example:
//
-// using y_absl::ByAnyChar;
-// std::vector<TString> v = y_absl::StrSplit("a,b=c", ByAnyChar(",="));
+// using y_absl::ByAnyChar;
+// std::vector<TString> v = y_absl::StrSplit("a,b=c", ByAnyChar(",="));
// // v[0] == "a", v[1] == "b", v[2] == "c"
//
// If `ByAnyChar` is given the empty string, it behaves exactly like
@@ -181,11 +181,11 @@ class ByChar {
//
class ByAnyChar {
public:
- explicit ByAnyChar(y_absl::string_view sp);
- y_absl::string_view Find(y_absl::string_view text, size_t pos) const;
+ explicit ByAnyChar(y_absl::string_view sp);
+ y_absl::string_view Find(y_absl::string_view text, size_t pos) const;
private:
- const TString delimiters_;
+ const TString delimiters_;
};
// ByLength
@@ -198,22 +198,22 @@ class ByAnyChar {
//
// Example:
//
-// using y_absl::ByLength;
-// std::vector<TString> v = y_absl::StrSplit("123456789", ByLength(3));
+// using y_absl::ByLength;
+// std::vector<TString> v = y_absl::StrSplit("123456789", ByLength(3));
// // v[0] == "123", v[1] == "456", v[2] == "789"
//
// Note that the string does not have to be a multiple of the fixed split
// length. In such a case, the last substring will be shorter.
//
-// using y_absl::ByLength;
-// std::vector<TString> v = y_absl::StrSplit("12345", ByLength(2));
+// using y_absl::ByLength;
+// std::vector<TString> v = y_absl::StrSplit("12345", ByLength(2));
//
// // v[0] == "12", v[1] == "34", v[2] == "5"
class ByLength {
public:
explicit ByLength(ptrdiff_t length);
- y_absl::string_view Find(y_absl::string_view text, size_t pos) const;
+ y_absl::string_view Find(y_absl::string_view text, size_t pos) const;
private:
const ptrdiff_t length_;
@@ -225,7 +225,7 @@ namespace strings_internal {
// for a particular Delimiter type. The base case simply exposes type Delimiter
// itself as the delimiter's Type. However, there are specializations for
// string-like objects that map them to the ByString delimiter object.
-// This allows functions like y_absl::StrSplit() and y_absl::MaxSplits() to accept
+// This allows functions like y_absl::StrSplit() and y_absl::MaxSplits() to accept
// string-like objects (e.g., ',') as delimiter arguments but they will be
// treated as if a ByString delimiter was given.
template <typename Delimiter>
@@ -246,11 +246,11 @@ struct SelectDelimiter<const char*> {
using type = ByString;
};
template <>
-struct SelectDelimiter<y_absl::string_view> {
+struct SelectDelimiter<y_absl::string_view> {
using type = ByString;
};
template <>
-struct SelectDelimiter<TString> {
+struct SelectDelimiter<TString> {
using type = ByString;
};
@@ -260,9 +260,9 @@ class MaxSplitsImpl {
public:
MaxSplitsImpl(Delimiter delimiter, int limit)
: delimiter_(delimiter), limit_(limit), count_(0) {}
- y_absl::string_view Find(y_absl::string_view text, size_t pos) {
+ y_absl::string_view Find(y_absl::string_view text, size_t pos) {
if (count_++ == limit_) {
- return y_absl::string_view(text.data() + text.size(),
+ return y_absl::string_view(text.data() + text.size(),
0); // No more matches.
}
return delimiter_.Find(text, pos);
@@ -284,8 +284,8 @@ class MaxSplitsImpl {
// The collection will contain at most `limit` + 1 elements.
// Example:
//
-// using y_absl::MaxSplits;
-// std::vector<TString> v = y_absl::StrSplit("a,b,c", MaxSplits(',', 1));
+// using y_absl::MaxSplits;
+// std::vector<TString> v = y_absl::StrSplit("a,b,c", MaxSplits(',', 1));
//
// // v[0] == "a", v[1] == "b,c"
template <typename Delimiter>
@@ -307,7 +307,7 @@ MaxSplits(Delimiter delimiter, int limit) {
// as an optional third argument to the `StrSplit()` function.
//
// Predicates are unary functions (or functors) that take a single
-// `y_absl::string_view` argument and return a bool indicating whether the
+// `y_absl::string_view` argument and return a bool indicating whether the
// argument should be included (`true`) or excluded (`false`).
//
// Predicates are useful when filtering out empty substrings. By default, empty
@@ -323,21 +323,21 @@ MaxSplits(Delimiter delimiter, int limit) {
//
// Example:
//
-// std::vector<TString> v = y_absl::StrSplit(" a , ,,b,", ',', AllowEmpty());
+// std::vector<TString> v = y_absl::StrSplit(" a , ,,b,", ',', AllowEmpty());
//
// // v[0] == " a ", v[1] == " ", v[2] == "", v[3] = "b", v[4] == ""
struct AllowEmpty {
- bool operator()(y_absl::string_view) const { return true; }
+ bool operator()(y_absl::string_view) const { return true; }
};
// SkipEmpty()
//
-// Returns `false` if the given `y_absl::string_view` is empty, indicating that
+// Returns `false` if the given `y_absl::string_view` is empty, indicating that
// `StrSplit()` should omit the empty string.
//
// Example:
//
-// std::vector<TString> v = y_absl::StrSplit(",a,,b,", ',', SkipEmpty());
+// std::vector<TString> v = y_absl::StrSplit(",a,,b,", ',', SkipEmpty());
//
// // v[0] == "a", v[1] == "b"
//
@@ -345,26 +345,26 @@ struct AllowEmpty {
// to be empty. To skip such whitespace as well, use the `SkipWhitespace()`
// predicate.
struct SkipEmpty {
- bool operator()(y_absl::string_view sp) const { return !sp.empty(); }
+ bool operator()(y_absl::string_view sp) const { return !sp.empty(); }
};
// SkipWhitespace()
//
-// Returns `false` if the given `y_absl::string_view` is empty *or* contains only
+// Returns `false` if the given `y_absl::string_view` is empty *or* contains only
// whitespace, indicating that `StrSplit()` should omit the string.
//
// Example:
//
-// std::vector<TString> v = y_absl::StrSplit(" a , ,,b,",
+// std::vector<TString> v = y_absl::StrSplit(" a , ,,b,",
// ',', SkipWhitespace());
// // v[0] == " a ", v[1] == "b"
//
// // SkipEmpty() would return whitespace elements
-// std::vector<TString> v = y_absl::StrSplit(" a , ,,b,", ',', SkipEmpty());
+// std::vector<TString> v = y_absl::StrSplit(" a , ,,b,", ',', SkipEmpty());
// // v[0] == " a ", v[1] == " ", v[2] == "b"
struct SkipWhitespace {
- bool operator()(y_absl::string_view sp) const {
- sp = y_absl::StripAsciiWhitespace(sp);
+ bool operator()(y_absl::string_view sp) const {
+ sp = y_absl::StripAsciiWhitespace(sp);
return !sp.empty();
}
};
@@ -389,15 +389,15 @@ using EnableSplitIfString =
//
// Example:
//
-// std::vector<TString> v = y_absl::StrSplit("a,b,c,d", ',');
+// std::vector<TString> v = y_absl::StrSplit("a,b,c,d", ',');
// // v[0] == "a", v[1] == "b", v[2] == "c", v[3] == "d"
//
// You can also provide an explicit `Delimiter` object:
//
// Example:
//
-// using y_absl::ByAnyChar;
-// std::vector<TString> v = y_absl::StrSplit("a,b=c", ByAnyChar(",="));
+// using y_absl::ByAnyChar;
+// std::vector<TString> v = y_absl::StrSplit("a,b=c", ByAnyChar(",="));
// // v[0] == "a", v[1] == "b", v[2] == "c"
//
// See above for more information on delimiters.
@@ -408,7 +408,7 @@ using EnableSplitIfString =
//
// Example:
//
-// std::vector<TString> v = y_absl::StrSplit(" a , ,,b,",
+// std::vector<TString> v = y_absl::StrSplit(" a , ,,b,",
// ',', SkipWhitespace());
// // v[0] == " a ", v[1] == "b"
//
@@ -420,9 +420,9 @@ using EnableSplitIfString =
//
// The `StrSplit()` function adapts the returned collection to the collection
// specified by the caller (e.g. `std::vector` above). The returned collections
-// may contain `TString`, `y_absl::string_view` (in which case the original
+// may contain `TString`, `y_absl::string_view` (in which case the original
// string being split must ensure that it outlives the collection), or any
-// object that can be explicitly created from an `y_absl::string_view`. This
+// object that can be explicitly created from an `y_absl::string_view`. This
// behavior works for:
//
// 1) All standard STL containers including `std::vector`, `std::list`,
@@ -431,19 +431,19 @@ using EnableSplitIfString =
//
// Example:
//
-// // The results are returned as `y_absl::string_view` objects. Note that we
+// // The results are returned as `y_absl::string_view` objects. Note that we
// // have to ensure that the input string outlives any results.
-// std::vector<y_absl::string_view> v = y_absl::StrSplit("a,b,c", ',');
+// std::vector<y_absl::string_view> v = y_absl::StrSplit("a,b,c", ',');
//
-// // Stores results in a std::set<TString>, which also performs
+// // Stores results in a std::set<TString>, which also performs
// // de-duplication and orders the elements in ascending order.
-// std::set<TString> a = y_absl::StrSplit("b,a,c,a,b", ',');
+// std::set<TString> a = y_absl::StrSplit("b,a,c,a,b", ',');
// // v[0] == "a", v[1] == "b", v[2] = "c"
//
// // `StrSplit()` can be used within a range-based for loop, in which case
-// // each element will be of type `y_absl::string_view`.
-// std::vector<TString> v;
-// for (const auto sv : y_absl::StrSplit("a,b,c", ',')) {
+// // each element will be of type `y_absl::string_view`.
+// std::vector<TString> v;
+// for (const auto sv : y_absl::StrSplit("a,b,c", ',')) {
// if (sv != "b") v.emplace_back(sv);
// }
// // v[0] == "a", v[1] == "c"
@@ -453,7 +453,7 @@ using EnableSplitIfString =
// // resulting from the split will be stored as a key to the 1st element. If
// // an odd number of elements are resolved, the last element is paired with
// // a default-constructed value (e.g., empty string).
-// std::map<TString, TString> m = y_absl::StrSplit("a,b,c", ',');
+// std::map<TString, TString> m = y_absl::StrSplit("a,b,c", ',');
// // m["a"] == "b", m["c"] == "" // last component value equals ""
//
// Splitting to `std::pair` is an interesting case because it can hold only two
@@ -467,7 +467,7 @@ using EnableSplitIfString =
// Example:
//
// // Stores first two split strings as the members in a std::pair.
-// std::pair<TString, TString> p = y_absl::StrSplit("a,b,c", ',');
+// std::pair<TString, TString> p = y_absl::StrSplit("a,b,c", ',');
// // p.first == "a", p.second == "b" // "c" is omitted.
//
// The `StrSplit()` function can be used multiple times to perform more
@@ -477,9 +477,9 @@ using EnableSplitIfString =
//
// // The input string "a=b=c,d=e,f=,g" becomes
// // { "a" => "b=c", "d" => "e", "f" => "", "g" => "" }
-// std::map<TString, TString> m;
-// for (y_absl::string_view sp : y_absl::StrSplit("a=b=c,d=e,f=,g", ',')) {
-// m.insert(y_absl::StrSplit(sp, y_absl::MaxSplits('=', 1)));
+// std::map<TString, TString> m;
+// for (y_absl::string_view sp : y_absl::StrSplit("a=b=c,d=e,f=,g", ',')) {
+// m.insert(y_absl::StrSplit(sp, y_absl::MaxSplits('=', 1)));
// }
// EXPECT_EQ("b=c", m.find("a")->second);
// EXPECT_EQ("e", m.find("d")->second);
@@ -489,8 +489,8 @@ using EnableSplitIfString =
// WARNING: Due to a legacy bug that is maintained for backward compatibility,
// splitting the following empty string_views produces different results:
//
-// y_absl::StrSplit(y_absl::string_view(""), '-'); // {""}
-// y_absl::StrSplit(y_absl::string_view(), '-'); // {}, but should be {""}
+// y_absl::StrSplit(y_absl::string_view(""), '-'); // {""}
+// y_absl::StrSplit(y_absl::string_view(), '-'); // {}, but should be {""}
//
// Try not to depend on this distinction because the bug may one day be fixed.
template <typename Delimiter>
@@ -543,6 +543,6 @@ StrSplit(StringType&& text, Delimiter d, Predicate p) {
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_STRINGS_STR_SPLIT_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/string_view.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/string_view.cc
index aa7fcc318b..9893c7ab99 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/string_view.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/string_view.cc
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/strings/string_view.h"
+#include "y_absl/strings/string_view.h"
#ifndef ABSL_USES_STD_STRING_VIEW
@@ -21,9 +21,9 @@
#include <cstring>
#include <ostream>
-#include "y_absl/strings/internal/memutil.h"
+#include "y_absl/strings/internal/memutil.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace {
@@ -225,6 +225,6 @@ ABSL_STRING_VIEW_SELECTANY
constexpr string_view::size_type string_view::kMaxSize;
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_USES_STD_STRING_VIEW
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/string_view.h b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/string_view.h
index d1369e2d08..c3906fe1c5 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/string_view.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/string_view.h
@@ -17,12 +17,12 @@
// File: string_view.h
// -----------------------------------------------------------------------------
//
-// This file contains the definition of the `y_absl::string_view` class. A
+// This file contains the definition of the `y_absl::string_view` class. A
// `string_view` points to a contiguous span of characters, often part or all of
-// another `TString`, double-quoted string literal, character array, or even
+// another `TString`, double-quoted string literal, character array, or even
// another `string_view`.
//
-// This `y_absl::string_view` abstraction is designed to be a drop-in
+// This `y_absl::string_view` abstraction is designed to be a drop-in
// replacement for the C++17 `std::string_view` abstraction.
#ifndef ABSL_STRINGS_STRING_VIEW_H_
#define ABSL_STRINGS_STRING_VIEW_H_
@@ -37,7 +37,7 @@
#include <util/generic/string.h>
#include "y_absl/base/attributes.h"
-#include "y_absl/base/config.h"
+#include "y_absl/base/config.h"
#include "y_absl/base/internal/throw_delegate.h"
#include "y_absl/base/macros.h"
#include "y_absl/base/optimization.h"
@@ -47,16 +47,16 @@
#include <string_view> // IWYU pragma: export
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
using string_view = std::string_view;
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#else // ABSL_USES_STD_STRING_VIEW
-#error "std::string_view should be used in all configurations"
-
+#error "std::string_view should be used in all configurations"
+
#if ABSL_HAVE_BUILTIN(__builtin_memcmp) || \
(defined(__GNUC__) && !defined(__clang__))
#define ABSL_INTERNAL_STRING_VIEW_MEMCMP __builtin_memcmp
@@ -70,29 +70,29 @@ ABSL_NAMESPACE_END
#define ABSL_INTERNAL_STRING_VIEW_CXX14_CONSTEXPR
#endif
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
-// y_absl::string_view
+// y_absl::string_view
//
// A `string_view` provides a lightweight view into the string data provided by
-// a `TString`, double-quoted string literal, character array, or even
+// a `TString`, double-quoted string literal, character array, or even
// another `string_view`. A `string_view` does *not* own the string to which it
// points, and that data cannot be modified through the view.
//
// You can use `string_view` as a function or method parameter anywhere a
// parameter can receive a double-quoted string literal, `const char*`,
-// `TString`, or another `y_absl::string_view` argument with no need to copy
+// `TString`, or another `y_absl::string_view` argument with no need to copy
// the string data. Systematic use of `string_view` within function arguments
// reduces data copies and `strlen()` calls.
//
// Because of its small size, prefer passing `string_view` by value:
//
-// void MyFunction(y_absl::string_view arg);
+// void MyFunction(y_absl::string_view arg);
//
// If circumstances require, you may also pass one by const reference:
//
-// void MyFunction(const y_absl::string_view& arg); // not preferred
+// void MyFunction(const y_absl::string_view& arg); // not preferred
//
// Passing by value generates slightly smaller code for many architectures.
//
@@ -105,11 +105,11 @@ ABSL_NAMESPACE_BEGIN
// temporary value:
//
// // BAD use of string_view: lifetime problem
-// y_absl::string_view sv = obj.ReturnAString();
+// y_absl::string_view sv = obj.ReturnAString();
//
// // GOOD use of string_view: str outlives sv
-// TString str = obj.ReturnAString();
-// y_absl::string_view sv = str;
+// TString str = obj.ReturnAString();
+// y_absl::string_view sv = str;
//
// Due to lifetime issues, a `string_view` is sometimes a poor choice for a
// return value and usually a poor choice for a data member. If you do use a
@@ -117,7 +117,7 @@ ABSL_NAMESPACE_BEGIN
// pointed to by the `string_view` outlives the `string_view`.
//
// A `string_view` may represent a whole string or just part of a string. For
-// example, when splitting a string, `std::vector<y_absl::string_view>` is a
+// example, when splitting a string, `std::vector<y_absl::string_view>` is a
// natural data type for the output.
//
// For another example, a Cord is a non-contiguous, potentially very
@@ -136,7 +136,7 @@ ABSL_NAMESPACE_BEGIN
// You may create a null `string_view` in two ways:
//
// y_absl::string_view sv;
-// y_absl::string_view sv(nullptr, 0);
+// y_absl::string_view sv(nullptr, 0);
//
// For the above, `sv.data() == nullptr`, `sv.length() == 0`, and
// `sv.empty() == true`. Also, if you create a `string_view` with a non-null
@@ -154,17 +154,17 @@ ABSL_NAMESPACE_BEGIN
//
// const char* nullcp = nullptr;
// // string_view.size() will return 0 in all cases.
-// y_absl::string_view();
-// y_absl::string_view(nullcp, 0);
-// y_absl::string_view("");
-// y_absl::string_view("", 0);
-// y_absl::string_view("abcdef", 0);
-// y_absl::string_view("abcdef" + 6, 0);
+// y_absl::string_view();
+// y_absl::string_view(nullcp, 0);
+// y_absl::string_view("");
+// y_absl::string_view("", 0);
+// y_absl::string_view("abcdef", 0);
+// y_absl::string_view("abcdef" + 6, 0);
//
// All empty `string_view` objects whether null or not, are equal:
//
-// y_absl::string_view() == y_absl::string_view("", 0)
-// y_absl::string_view(nullptr, 0) == y_absl::string_view("abcdef"+6, 0)
+// y_absl::string_view() == y_absl::string_view("", 0)
+// y_absl::string_view(nullptr, 0) == y_absl::string_view("abcdef"+6, 0)
class string_view {
public:
using traits_type = std::char_traits<char>;
@@ -198,7 +198,7 @@ class string_view {
: string_view(str.data(), str.size(), SkipCheckLengthTag{}) {}
// Implicit constructor of a `string_view` from NUL-terminated `str`. When
- // accepting possibly null strings, use `y_absl::NullSafeStringView(str)`
+ // accepting possibly null strings, use `y_absl::NullSafeStringView(str)`
// instead (see below).
// The length check is skipped since it is unnecessary and causes code bloat.
constexpr string_view(const char* str) // NOLINT(runtime/explicit)
@@ -309,7 +309,7 @@ class string_view {
return ABSL_PREDICT_TRUE(i < size())
? ptr_[i]
: ((void)base_internal::ThrowStdOutOfRange(
- "y_absl::string_view::at"),
+ "y_absl::string_view::at"),
ptr_[i]);
}
@@ -381,7 +381,7 @@ class string_view {
// into `buf`.
size_type copy(char* buf, size_type n, size_type pos = 0) const {
if (ABSL_PREDICT_FALSE(pos > length_)) {
- base_internal::ThrowStdOutOfRange("y_absl::string_view::copy");
+ base_internal::ThrowStdOutOfRange("y_absl::string_view::copy");
}
size_type rlen = (std::min)(length_ - pos, n);
if (rlen > 0) {
@@ -420,13 +420,13 @@ class string_view {
}
// Overload of `string_view::compare()` for comparing a substring of the
- // 'string_view` and another `y_absl::string_view`.
+ // 'string_view` and another `y_absl::string_view`.
constexpr int compare(size_type pos1, size_type count1, string_view v) const {
return substr(pos1, count1).compare(v);
}
// Overload of `string_view::compare()` for comparing a substring of the
- // `string_view` and a substring of another `y_absl::string_view`.
+ // `string_view` and a substring of another `y_absl::string_view`.
constexpr int compare(size_type pos1, size_type count1, string_view v,
size_type pos2, size_type count2) const {
return substr(pos1, count1).compare(v.substr(pos2, count2));
@@ -677,14 +677,14 @@ constexpr bool operator>=(string_view x, string_view y) noexcept {
std::ostream& operator<<(std::ostream& o, string_view piece);
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#undef ABSL_INTERNAL_STRING_VIEW_CXX14_CONSTEXPR
#undef ABSL_INTERNAL_STRING_VIEW_MEMCMP
#endif // ABSL_USES_STD_STRING_VIEW
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// ClippedSubstr()
@@ -699,14 +699,14 @@ inline string_view ClippedSubstr(string_view s, size_t pos,
// NullSafeStringView()
//
-// Creates an `y_absl::string_view` from a pointer `p` even if it's null-valued.
-// This function should be used where an `y_absl::string_view` can be created from
+// Creates an `y_absl::string_view` from a pointer `p` even if it's null-valued.
+// This function should be used where an `y_absl::string_view` can be created from
// a possibly-null pointer.
constexpr string_view NullSafeStringView(const char* p) {
return p ? string_view(p) : string_view();
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_STRINGS_STRING_VIEW_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/strip.h b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/strip.h
index 32558b3809..3164ff1ebc 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/strip.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/strip.h
@@ -24,12 +24,12 @@
#include <cstddef>
#include <util/generic/string.h>
-#include "y_absl/base/macros.h"
-#include "y_absl/strings/ascii.h"
-#include "y_absl/strings/match.h"
-#include "y_absl/strings/string_view.h"
+#include "y_absl/base/macros.h"
+#include "y_absl/strings/ascii.h"
+#include "y_absl/strings/match.h"
+#include "y_absl/strings/string_view.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// ConsumePrefix()
@@ -39,11 +39,11 @@ ABSL_NAMESPACE_BEGIN
//
// Example:
//
-// y_absl::string_view input("abc");
-// EXPECT_TRUE(y_absl::ConsumePrefix(&input, "a"));
+// y_absl::string_view input("abc");
+// EXPECT_TRUE(y_absl::ConsumePrefix(&input, "a"));
// EXPECT_EQ(input, "bc");
-inline bool ConsumePrefix(y_absl::string_view* str, y_absl::string_view expected) {
- if (!y_absl::StartsWith(*str, expected)) return false;
+inline bool ConsumePrefix(y_absl::string_view* str, y_absl::string_view expected) {
+ if (!y_absl::StartsWith(*str, expected)) return false;
str->remove_prefix(expected.size());
return true;
}
@@ -54,11 +54,11 @@ inline bool ConsumePrefix(y_absl::string_view* str, y_absl::string_view expected
//
// Example:
//
-// y_absl::string_view input("abcdef");
-// EXPECT_TRUE(y_absl::ConsumeSuffix(&input, "def"));
+// y_absl::string_view input("abcdef");
+// EXPECT_TRUE(y_absl::ConsumeSuffix(&input, "def"));
// EXPECT_EQ(input, "abc");
-inline bool ConsumeSuffix(y_absl::string_view* str, y_absl::string_view expected) {
- if (!y_absl::EndsWith(*str, expected)) return false;
+inline bool ConsumeSuffix(y_absl::string_view* str, y_absl::string_view expected) {
+ if (!y_absl::EndsWith(*str, expected)) return false;
str->remove_suffix(expected.size());
return true;
}
@@ -68,9 +68,9 @@ inline bool ConsumeSuffix(y_absl::string_view* str, y_absl::string_view expected
// Returns a view into the input string 'str' with the given 'prefix' removed,
// but leaving the original string intact. If the prefix does not match at the
// start of the string, returns the original string instead.
-ABSL_MUST_USE_RESULT inline y_absl::string_view StripPrefix(
- y_absl::string_view str, y_absl::string_view prefix) {
- if (y_absl::StartsWith(str, prefix)) str.remove_prefix(prefix.size());
+ABSL_MUST_USE_RESULT inline y_absl::string_view StripPrefix(
+ y_absl::string_view str, y_absl::string_view prefix) {
+ if (y_absl::StartsWith(str, prefix)) str.remove_prefix(prefix.size());
return str;
}
@@ -79,13 +79,13 @@ ABSL_MUST_USE_RESULT inline y_absl::string_view StripPrefix(
// Returns a view into the input string 'str' with the given 'suffix' removed,
// but leaving the original string intact. If the suffix does not match at the
// end of the string, returns the original string instead.
-ABSL_MUST_USE_RESULT inline y_absl::string_view StripSuffix(
- y_absl::string_view str, y_absl::string_view suffix) {
- if (y_absl::EndsWith(str, suffix)) str.remove_suffix(suffix.size());
+ABSL_MUST_USE_RESULT inline y_absl::string_view StripSuffix(
+ y_absl::string_view str, y_absl::string_view suffix) {
+ if (y_absl::EndsWith(str, suffix)) str.remove_suffix(suffix.size());
return str;
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_STRINGS_STRIP_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/substitute.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/substitute.cc
index ad6f1d1e75..177fba8cbe 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/substitute.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/substitute.cc
@@ -12,22 +12,22 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/strings/substitute.h"
+#include "y_absl/strings/substitute.h"
#include <algorithm>
-#include "y_absl/base/internal/raw_logging.h"
-#include "y_absl/strings/ascii.h"
-#include "y_absl/strings/escaping.h"
-#include "y_absl/strings/internal/resize_uninitialized.h"
-#include "y_absl/strings/string_view.h"
+#include "y_absl/base/internal/raw_logging.h"
+#include "y_absl/strings/ascii.h"
+#include "y_absl/strings/escaping.h"
+#include "y_absl/strings/internal/resize_uninitialized.h"
+#include "y_absl/strings/string_view.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace substitute_internal {
-void SubstituteAndAppendArray(TString* output, y_absl::string_view format,
- const y_absl::string_view* args_array,
+void SubstituteAndAppendArray(TString* output, y_absl::string_view format,
+ const y_absl::string_view* args_array,
size_t num_args) {
// Determine total size needed.
size_t size = 0;
@@ -37,10 +37,10 @@ void SubstituteAndAppendArray(TString* output, y_absl::string_view format,
#ifndef NDEBUG
ABSL_RAW_LOG(FATAL,
"Invalid y_absl::Substitute() format string: \"%s\".",
- y_absl::CEscape(format).c_str());
+ y_absl::CEscape(format).c_str());
#endif
return;
- } else if (y_absl::ascii_isdigit(format[i + 1])) {
+ } else if (y_absl::ascii_isdigit(format[i + 1])) {
int index = format[i + 1] - '0';
if (static_cast<size_t>(index) >= num_args) {
#ifndef NDEBUG
@@ -49,7 +49,7 @@ void SubstituteAndAppendArray(TString* output, y_absl::string_view format,
"Invalid y_absl::Substitute() format string: asked for \"$"
"%d\", but only %d args were given. Full format string was: "
"\"%s\".",
- index, static_cast<int>(num_args), y_absl::CEscape(format).c_str());
+ index, static_cast<int>(num_args), y_absl::CEscape(format).c_str());
#endif
return;
}
@@ -62,7 +62,7 @@ void SubstituteAndAppendArray(TString* output, y_absl::string_view format,
#ifndef NDEBUG
ABSL_RAW_LOG(FATAL,
"Invalid y_absl::Substitute() format string: \"%s\".",
- y_absl::CEscape(format).c_str());
+ y_absl::CEscape(format).c_str());
#endif
return;
}
@@ -80,8 +80,8 @@ void SubstituteAndAppendArray(TString* output, y_absl::string_view format,
char* target = &(*output)[original_size];
for (size_t i = 0; i < format.size(); i++) {
if (format[i] == '$') {
- if (y_absl::ascii_isdigit(format[i + 1])) {
- const y_absl::string_view src = args_array[format[i + 1] - '0'];
+ if (y_absl::ascii_isdigit(format[i + 1])) {
+ const y_absl::string_view src = args_array[format[i + 1] - '0'];
target = std::copy(src.begin(), src.end(), target);
++i; // Skip next char.
} else if (format[i + 1] == '$') {
@@ -105,12 +105,12 @@ Arg::Arg(const void* value) {
char* ptr = scratch_ + sizeof(scratch_);
uintptr_t num = reinterpret_cast<uintptr_t>(value);
do {
- *--ptr = y_absl::numbers_internal::kHexChar[num & 0xf];
+ *--ptr = y_absl::numbers_internal::kHexChar[num & 0xf];
num >>= 4;
} while (num != 0);
*--ptr = 'x';
*--ptr = '0';
- piece_ = y_absl::string_view(ptr, scratch_ + sizeof(scratch_) - ptr);
+ piece_ = y_absl::string_view(ptr, scratch_ + sizeof(scratch_) - ptr);
}
}
@@ -120,7 +120,7 @@ Arg::Arg(Hex hex) {
char* writer = end;
uint64_t value = hex.value;
do {
- *--writer = y_absl::numbers_internal::kHexChar[value & 0xF];
+ *--writer = y_absl::numbers_internal::kHexChar[value & 0xF];
value >>= 4;
} while (value != 0);
@@ -132,7 +132,7 @@ Arg::Arg(Hex hex) {
beg = writer;
}
- piece_ = y_absl::string_view(beg, end - beg);
+ piece_ = y_absl::string_view(beg, end - beg);
}
// TODO(jorg): Don't duplicate so much code between here and str_cat.cc
@@ -164,9 +164,9 @@ Arg::Arg(Dec dec) {
if (add_sign_again) *--writer = '-';
}
- piece_ = y_absl::string_view(writer, end - writer);
+ piece_ = y_absl::string_view(writer, end - writer);
}
} // namespace substitute_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/substitute.h b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/substitute.h
index f92369d2e2..c31191fbda 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/substitute.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/substitute.h
@@ -39,17 +39,17 @@
// output.
//
// Example 1:
-// TString s = Substitute("$1 purchased $0 $2 for $$10. Thanks $1!",
+// TString s = Substitute("$1 purchased $0 $2 for $$10. Thanks $1!",
// 5, "Bob", "Apples");
// EXPECT_EQ("Bob purchased 5 Apples for $10. Thanks Bob!", s);
//
// Example 2:
-// TString s = "Hi. ";
+// TString s = "Hi. ";
// SubstituteAndAppend(&s, "My name is $0 and I am $1 years old.", "Bob", 5);
// EXPECT_EQ("Hi. My name is Bob and I am 5 years old.", s);
//
// Supported types:
-// * y_absl::string_view, TString, const char* (null is equivalent to "")
+// * y_absl::string_view, TString, const char* (null is equivalent to "")
// * int32_t, int64_t, uint32_t, uint64_t
// * float, double
// * bool (Printed as "true" or "false")
@@ -75,24 +75,24 @@
#include <type_traits>
#include <vector>
-#include "y_absl/base/macros.h"
-#include "y_absl/base/port.h"
-#include "y_absl/strings/ascii.h"
-#include "y_absl/strings/escaping.h"
-#include "y_absl/strings/numbers.h"
-#include "y_absl/strings/str_cat.h"
-#include "y_absl/strings/str_split.h"
-#include "y_absl/strings/string_view.h"
-#include "y_absl/strings/strip.h"
-
-namespace y_absl {
+#include "y_absl/base/macros.h"
+#include "y_absl/base/port.h"
+#include "y_absl/strings/ascii.h"
+#include "y_absl/strings/escaping.h"
+#include "y_absl/strings/numbers.h"
+#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/str_split.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/strings/strip.h"
+
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace substitute_internal {
// Arg
//
-// This class provides an argument type for `y_absl::Substitute()` and
-// `y_absl::SubstituteAndAppend()`. `Arg` handles implicit conversion of various
+// This class provides an argument type for `y_absl::Substitute()` and
+// `y_absl::SubstituteAndAppend()`. `Arg` handles implicit conversion of various
// types to a string. (`Arg` is very similar to the `AlphaNum` class in
// `StrCat()`.)
//
@@ -103,16 +103,16 @@ class Arg {
//
// Explicitly overload `const char*` so the compiler doesn't cast to `bool`.
Arg(const char* value) // NOLINT(runtime/explicit)
- : piece_(y_absl::NullSafeStringView(value)) {}
+ : piece_(y_absl::NullSafeStringView(value)) {}
template <typename Allocator>
Arg( // NOLINT
const std::basic_string<char, std::char_traits<char>, Allocator>&
value) noexcept
: piece_(value) {}
- Arg(y_absl::string_view value) // NOLINT(runtime/explicit)
+ Arg(y_absl::string_view value) // NOLINT(runtime/explicit)
: piece_(value) {}
- Arg(const TString& s)
- : piece_(s.data(), s.size()) {}
+ Arg(const TString& s)
+ : piece_(s.data(), s.size()) {}
// Overloads for primitives
//
@@ -164,7 +164,7 @@ class Arg {
// vector<bool>::reference and const_reference require special help to
// convert to `AlphaNum` because it requires two user defined conversions.
template <typename T,
- y_absl::enable_if_t<
+ y_absl::enable_if_t<
std::is_class<T>::value &&
(std::is_same<T, std::vector<bool>::reference>::value ||
std::is_same<T, std::vector<bool>::const_reference>::value)>* =
@@ -179,17 +179,17 @@ class Arg {
Arg(const Arg&) = delete;
Arg& operator=(const Arg&) = delete;
- y_absl::string_view piece() const { return piece_; }
+ y_absl::string_view piece() const { return piece_; }
private:
- y_absl::string_view piece_;
+ y_absl::string_view piece_;
char scratch_[numbers_internal::kFastToBufferSize];
};
// Internal helper function. Don't call this from outside this implementation.
// This interface may change without notice.
-void SubstituteAndAppendArray(TString* output, y_absl::string_view format,
- const y_absl::string_view* args_array,
+void SubstituteAndAppendArray(TString* output, y_absl::string_view format,
+ const y_absl::string_view* args_array,
size_t num_args);
#if defined(ABSL_BAD_CALL_IF)
@@ -234,76 +234,76 @@ constexpr int PlaceholderBitmask(const char* format) {
//
// Example:
// template <typename... Args>
-// void VarMsg(TString* boilerplate, y_absl::string_view format,
+// void VarMsg(TString* boilerplate, y_absl::string_view format,
// const Args&... args) {
-// y_absl::SubstituteAndAppend(boilerplate, format, args...);
+// y_absl::SubstituteAndAppend(boilerplate, format, args...);
// }
//
-inline void SubstituteAndAppend(TString* output, y_absl::string_view format) {
+inline void SubstituteAndAppend(TString* output, y_absl::string_view format) {
substitute_internal::SubstituteAndAppendArray(output, format, nullptr, 0);
}
-inline void SubstituteAndAppend(TString* output, y_absl::string_view format,
+inline void SubstituteAndAppend(TString* output, y_absl::string_view format,
const substitute_internal::Arg& a0) {
- const y_absl::string_view args[] = {a0.piece()};
+ const y_absl::string_view args[] = {a0.piece()};
substitute_internal::SubstituteAndAppendArray(output, format, args,
ABSL_ARRAYSIZE(args));
}
-inline void SubstituteAndAppend(TString* output, y_absl::string_view format,
+inline void SubstituteAndAppend(TString* output, y_absl::string_view format,
const substitute_internal::Arg& a0,
const substitute_internal::Arg& a1) {
- const y_absl::string_view args[] = {a0.piece(), a1.piece()};
+ const y_absl::string_view args[] = {a0.piece(), a1.piece()};
substitute_internal::SubstituteAndAppendArray(output, format, args,
ABSL_ARRAYSIZE(args));
}
-inline void SubstituteAndAppend(TString* output, y_absl::string_view format,
+inline void SubstituteAndAppend(TString* output, y_absl::string_view format,
const substitute_internal::Arg& a0,
const substitute_internal::Arg& a1,
const substitute_internal::Arg& a2) {
- const y_absl::string_view args[] = {a0.piece(), a1.piece(), a2.piece()};
+ const y_absl::string_view args[] = {a0.piece(), a1.piece(), a2.piece()};
substitute_internal::SubstituteAndAppendArray(output, format, args,
ABSL_ARRAYSIZE(args));
}
-inline void SubstituteAndAppend(TString* output, y_absl::string_view format,
+inline void SubstituteAndAppend(TString* output, y_absl::string_view format,
const substitute_internal::Arg& a0,
const substitute_internal::Arg& a1,
const substitute_internal::Arg& a2,
const substitute_internal::Arg& a3) {
- const y_absl::string_view args[] = {a0.piece(), a1.piece(), a2.piece(),
+ const y_absl::string_view args[] = {a0.piece(), a1.piece(), a2.piece(),
a3.piece()};
substitute_internal::SubstituteAndAppendArray(output, format, args,
ABSL_ARRAYSIZE(args));
}
-inline void SubstituteAndAppend(TString* output, y_absl::string_view format,
+inline void SubstituteAndAppend(TString* output, y_absl::string_view format,
const substitute_internal::Arg& a0,
const substitute_internal::Arg& a1,
const substitute_internal::Arg& a2,
const substitute_internal::Arg& a3,
const substitute_internal::Arg& a4) {
- const y_absl::string_view args[] = {a0.piece(), a1.piece(), a2.piece(),
+ const y_absl::string_view args[] = {a0.piece(), a1.piece(), a2.piece(),
a3.piece(), a4.piece()};
substitute_internal::SubstituteAndAppendArray(output, format, args,
ABSL_ARRAYSIZE(args));
}
-inline void SubstituteAndAppend(TString* output, y_absl::string_view format,
+inline void SubstituteAndAppend(TString* output, y_absl::string_view format,
const substitute_internal::Arg& a0,
const substitute_internal::Arg& a1,
const substitute_internal::Arg& a2,
const substitute_internal::Arg& a3,
const substitute_internal::Arg& a4,
const substitute_internal::Arg& a5) {
- const y_absl::string_view args[] = {a0.piece(), a1.piece(), a2.piece(),
+ const y_absl::string_view args[] = {a0.piece(), a1.piece(), a2.piece(),
a3.piece(), a4.piece(), a5.piece()};
substitute_internal::SubstituteAndAppendArray(output, format, args,
ABSL_ARRAYSIZE(args));
}
-inline void SubstituteAndAppend(TString* output, y_absl::string_view format,
+inline void SubstituteAndAppend(TString* output, y_absl::string_view format,
const substitute_internal::Arg& a0,
const substitute_internal::Arg& a1,
const substitute_internal::Arg& a2,
@@ -311,7 +311,7 @@ inline void SubstituteAndAppend(TString* output, y_absl::string_view format,
const substitute_internal::Arg& a4,
const substitute_internal::Arg& a5,
const substitute_internal::Arg& a6) {
- const y_absl::string_view args[] = {a0.piece(), a1.piece(), a2.piece(),
+ const y_absl::string_view args[] = {a0.piece(), a1.piece(), a2.piece(),
a3.piece(), a4.piece(), a5.piece(),
a6.piece()};
substitute_internal::SubstituteAndAppendArray(output, format, args,
@@ -319,12 +319,12 @@ inline void SubstituteAndAppend(TString* output, y_absl::string_view format,
}
inline void SubstituteAndAppend(
- TString* output, y_absl::string_view format,
+ TString* output, y_absl::string_view format,
const substitute_internal::Arg& a0, const substitute_internal::Arg& a1,
const substitute_internal::Arg& a2, const substitute_internal::Arg& a3,
const substitute_internal::Arg& a4, const substitute_internal::Arg& a5,
const substitute_internal::Arg& a6, const substitute_internal::Arg& a7) {
- const y_absl::string_view args[] = {a0.piece(), a1.piece(), a2.piece(),
+ const y_absl::string_view args[] = {a0.piece(), a1.piece(), a2.piece(),
a3.piece(), a4.piece(), a5.piece(),
a6.piece(), a7.piece()};
substitute_internal::SubstituteAndAppendArray(output, format, args,
@@ -332,13 +332,13 @@ inline void SubstituteAndAppend(
}
inline void SubstituteAndAppend(
- TString* output, y_absl::string_view format,
+ TString* output, y_absl::string_view format,
const substitute_internal::Arg& a0, const substitute_internal::Arg& a1,
const substitute_internal::Arg& a2, const substitute_internal::Arg& a3,
const substitute_internal::Arg& a4, const substitute_internal::Arg& a5,
const substitute_internal::Arg& a6, const substitute_internal::Arg& a7,
const substitute_internal::Arg& a8) {
- const y_absl::string_view args[] = {a0.piece(), a1.piece(), a2.piece(),
+ const y_absl::string_view args[] = {a0.piece(), a1.piece(), a2.piece(),
a3.piece(), a4.piece(), a5.piece(),
a6.piece(), a7.piece(), a8.piece()};
substitute_internal::SubstituteAndAppendArray(output, format, args,
@@ -346,13 +346,13 @@ inline void SubstituteAndAppend(
}
inline void SubstituteAndAppend(
- TString* output, y_absl::string_view format,
+ TString* output, y_absl::string_view format,
const substitute_internal::Arg& a0, const substitute_internal::Arg& a1,
const substitute_internal::Arg& a2, const substitute_internal::Arg& a3,
const substitute_internal::Arg& a4, const substitute_internal::Arg& a5,
const substitute_internal::Arg& a6, const substitute_internal::Arg& a7,
const substitute_internal::Arg& a8, const substitute_internal::Arg& a9) {
- const y_absl::string_view args[] = {
+ const y_absl::string_view args[] = {
a0.piece(), a1.piece(), a2.piece(), a3.piece(), a4.piece(),
a5.piece(), a6.piece(), a7.piece(), a8.piece(), a9.piece()};
substitute_internal::SubstituteAndAppendArray(output, format, args,
@@ -362,14 +362,14 @@ inline void SubstituteAndAppend(
#if defined(ABSL_BAD_CALL_IF)
// This body of functions catches cases where the number of placeholders
// doesn't match the number of data arguments.
-void SubstituteAndAppend(TString* output, const char* format)
+void SubstituteAndAppend(TString* output, const char* format)
ABSL_BAD_CALL_IF(
substitute_internal::PlaceholderBitmask(format) != 0,
"There were no substitution arguments "
"but this format string either has a $[0-9] in it or contains "
"an unescaped $ character (use $$ instead)");
-void SubstituteAndAppend(TString* output, const char* format,
+void SubstituteAndAppend(TString* output, const char* format,
const substitute_internal::Arg& a0)
ABSL_BAD_CALL_IF(substitute_internal::PlaceholderBitmask(format) != 1,
"There was 1 substitution argument given, but "
@@ -377,7 +377,7 @@ void SubstituteAndAppend(TString* output, const char* format,
"one of $1-$9, or contains an unescaped $ character (use "
"$$ instead)");
-void SubstituteAndAppend(TString* output, const char* format,
+void SubstituteAndAppend(TString* output, const char* format,
const substitute_internal::Arg& a0,
const substitute_internal::Arg& a1)
ABSL_BAD_CALL_IF(
@@ -386,7 +386,7 @@ void SubstituteAndAppend(TString* output, const char* format,
"missing its $0/$1, contains one of $2-$9, or contains an "
"unescaped $ character (use $$ instead)");
-void SubstituteAndAppend(TString* output, const char* format,
+void SubstituteAndAppend(TString* output, const char* format,
const substitute_internal::Arg& a0,
const substitute_internal::Arg& a1,
const substitute_internal::Arg& a2)
@@ -396,7 +396,7 @@ void SubstituteAndAppend(TString* output, const char* format,
"this format string is missing its $0/$1/$2, contains one of "
"$3-$9, or contains an unescaped $ character (use $$ instead)");
-void SubstituteAndAppend(TString* output, const char* format,
+void SubstituteAndAppend(TString* output, const char* format,
const substitute_internal::Arg& a0,
const substitute_internal::Arg& a1,
const substitute_internal::Arg& a2,
@@ -407,7 +407,7 @@ void SubstituteAndAppend(TString* output, const char* format,
"this format string is missing its $0-$3, contains one of "
"$4-$9, or contains an unescaped $ character (use $$ instead)");
-void SubstituteAndAppend(TString* output, const char* format,
+void SubstituteAndAppend(TString* output, const char* format,
const substitute_internal::Arg& a0,
const substitute_internal::Arg& a1,
const substitute_internal::Arg& a2,
@@ -419,7 +419,7 @@ void SubstituteAndAppend(TString* output, const char* format,
"this format string is missing its $0-$4, contains one of "
"$5-$9, or contains an unescaped $ character (use $$ instead)");
-void SubstituteAndAppend(TString* output, const char* format,
+void SubstituteAndAppend(TString* output, const char* format,
const substitute_internal::Arg& a0,
const substitute_internal::Arg& a1,
const substitute_internal::Arg& a2,
@@ -433,7 +433,7 @@ void SubstituteAndAppend(TString* output, const char* format,
"$6-$9, or contains an unescaped $ character (use $$ instead)");
void SubstituteAndAppend(
- TString* output, const char* format, const substitute_internal::Arg& a0,
+ TString* output, const char* format, const substitute_internal::Arg& a0,
const substitute_internal::Arg& a1, const substitute_internal::Arg& a2,
const substitute_internal::Arg& a3, const substitute_internal::Arg& a4,
const substitute_internal::Arg& a5, const substitute_internal::Arg& a6)
@@ -444,7 +444,7 @@ void SubstituteAndAppend(
"$7-$9, or contains an unescaped $ character (use $$ instead)");
void SubstituteAndAppend(
- TString* output, const char* format, const substitute_internal::Arg& a0,
+ TString* output, const char* format, const substitute_internal::Arg& a0,
const substitute_internal::Arg& a1, const substitute_internal::Arg& a2,
const substitute_internal::Arg& a3, const substitute_internal::Arg& a4,
const substitute_internal::Arg& a5, const substitute_internal::Arg& a6,
@@ -456,7 +456,7 @@ void SubstituteAndAppend(
"$8-$9, or contains an unescaped $ character (use $$ instead)");
void SubstituteAndAppend(
- TString* output, const char* format, const substitute_internal::Arg& a0,
+ TString* output, const char* format, const substitute_internal::Arg& a0,
const substitute_internal::Arg& a1, const substitute_internal::Arg& a2,
const substitute_internal::Arg& a3, const substitute_internal::Arg& a4,
const substitute_internal::Arg& a5, const substitute_internal::Arg& a6,
@@ -468,7 +468,7 @@ void SubstituteAndAppend(
"contains an unescaped $ character (use $$ instead)");
void SubstituteAndAppend(
- TString* output, const char* format, const substitute_internal::Arg& a0,
+ TString* output, const char* format, const substitute_internal::Arg& a0,
const substitute_internal::Arg& a1, const substitute_internal::Arg& a2,
const substitute_internal::Arg& a3, const substitute_internal::Arg& a4,
const substitute_internal::Arg& a5, const substitute_internal::Arg& a6,
@@ -494,106 +494,106 @@ void SubstituteAndAppend(
//
// Example:
// template <typename... Args>
-// void VarMsg(y_absl::string_view format, const Args&... args) {
-// TString s = y_absl::Substitute(format, args...);
+// void VarMsg(y_absl::string_view format, const Args&... args) {
+// TString s = y_absl::Substitute(format, args...);
-ABSL_MUST_USE_RESULT inline TString Substitute(y_absl::string_view format) {
- TString result;
+ABSL_MUST_USE_RESULT inline TString Substitute(y_absl::string_view format) {
+ TString result;
SubstituteAndAppend(&result, format);
return result;
}
-ABSL_MUST_USE_RESULT inline TString Substitute(
- y_absl::string_view format, const substitute_internal::Arg& a0) {
- TString result;
+ABSL_MUST_USE_RESULT inline TString Substitute(
+ y_absl::string_view format, const substitute_internal::Arg& a0) {
+ TString result;
SubstituteAndAppend(&result, format, a0);
return result;
}
-ABSL_MUST_USE_RESULT inline TString Substitute(
- y_absl::string_view format, const substitute_internal::Arg& a0,
+ABSL_MUST_USE_RESULT inline TString Substitute(
+ y_absl::string_view format, const substitute_internal::Arg& a0,
const substitute_internal::Arg& a1) {
- TString result;
+ TString result;
SubstituteAndAppend(&result, format, a0, a1);
return result;
}
-ABSL_MUST_USE_RESULT inline TString Substitute(
- y_absl::string_view format, const substitute_internal::Arg& a0,
+ABSL_MUST_USE_RESULT inline TString Substitute(
+ y_absl::string_view format, const substitute_internal::Arg& a0,
const substitute_internal::Arg& a1, const substitute_internal::Arg& a2) {
- TString result;
+ TString result;
SubstituteAndAppend(&result, format, a0, a1, a2);
return result;
}
-ABSL_MUST_USE_RESULT inline TString Substitute(
- y_absl::string_view format, const substitute_internal::Arg& a0,
+ABSL_MUST_USE_RESULT inline TString Substitute(
+ y_absl::string_view format, const substitute_internal::Arg& a0,
const substitute_internal::Arg& a1, const substitute_internal::Arg& a2,
const substitute_internal::Arg& a3) {
- TString result;
+ TString result;
SubstituteAndAppend(&result, format, a0, a1, a2, a3);
return result;
}
-ABSL_MUST_USE_RESULT inline TString Substitute(
- y_absl::string_view format, const substitute_internal::Arg& a0,
+ABSL_MUST_USE_RESULT inline TString Substitute(
+ y_absl::string_view format, const substitute_internal::Arg& a0,
const substitute_internal::Arg& a1, const substitute_internal::Arg& a2,
const substitute_internal::Arg& a3, const substitute_internal::Arg& a4) {
- TString result;
+ TString result;
SubstituteAndAppend(&result, format, a0, a1, a2, a3, a4);
return result;
}
-ABSL_MUST_USE_RESULT inline TString Substitute(
- y_absl::string_view format, const substitute_internal::Arg& a0,
+ABSL_MUST_USE_RESULT inline TString Substitute(
+ y_absl::string_view format, const substitute_internal::Arg& a0,
const substitute_internal::Arg& a1, const substitute_internal::Arg& a2,
const substitute_internal::Arg& a3, const substitute_internal::Arg& a4,
const substitute_internal::Arg& a5) {
- TString result;
+ TString result;
SubstituteAndAppend(&result, format, a0, a1, a2, a3, a4, a5);
return result;
}
-ABSL_MUST_USE_RESULT inline TString Substitute(
- y_absl::string_view format, const substitute_internal::Arg& a0,
+ABSL_MUST_USE_RESULT inline TString Substitute(
+ y_absl::string_view format, const substitute_internal::Arg& a0,
const substitute_internal::Arg& a1, const substitute_internal::Arg& a2,
const substitute_internal::Arg& a3, const substitute_internal::Arg& a4,
const substitute_internal::Arg& a5, const substitute_internal::Arg& a6) {
- TString result;
+ TString result;
SubstituteAndAppend(&result, format, a0, a1, a2, a3, a4, a5, a6);
return result;
}
-ABSL_MUST_USE_RESULT inline TString Substitute(
- y_absl::string_view format, const substitute_internal::Arg& a0,
+ABSL_MUST_USE_RESULT inline TString Substitute(
+ y_absl::string_view format, const substitute_internal::Arg& a0,
const substitute_internal::Arg& a1, const substitute_internal::Arg& a2,
const substitute_internal::Arg& a3, const substitute_internal::Arg& a4,
const substitute_internal::Arg& a5, const substitute_internal::Arg& a6,
const substitute_internal::Arg& a7) {
- TString result;
+ TString result;
SubstituteAndAppend(&result, format, a0, a1, a2, a3, a4, a5, a6, a7);
return result;
}
-ABSL_MUST_USE_RESULT inline TString Substitute(
- y_absl::string_view format, const substitute_internal::Arg& a0,
+ABSL_MUST_USE_RESULT inline TString Substitute(
+ y_absl::string_view format, const substitute_internal::Arg& a0,
const substitute_internal::Arg& a1, const substitute_internal::Arg& a2,
const substitute_internal::Arg& a3, const substitute_internal::Arg& a4,
const substitute_internal::Arg& a5, const substitute_internal::Arg& a6,
const substitute_internal::Arg& a7, const substitute_internal::Arg& a8) {
- TString result;
+ TString result;
SubstituteAndAppend(&result, format, a0, a1, a2, a3, a4, a5, a6, a7, a8);
return result;
}
-ABSL_MUST_USE_RESULT inline TString Substitute(
- y_absl::string_view format, const substitute_internal::Arg& a0,
+ABSL_MUST_USE_RESULT inline TString Substitute(
+ y_absl::string_view format, const substitute_internal::Arg& a0,
const substitute_internal::Arg& a1, const substitute_internal::Arg& a2,
const substitute_internal::Arg& a3, const substitute_internal::Arg& a4,
const substitute_internal::Arg& a5, const substitute_internal::Arg& a6,
const substitute_internal::Arg& a7, const substitute_internal::Arg& a8,
const substitute_internal::Arg& a9) {
- TString result;
+ TString result;
SubstituteAndAppend(&result, format, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);
return result;
}
@@ -601,20 +601,20 @@ ABSL_MUST_USE_RESULT inline TString Substitute(
#if defined(ABSL_BAD_CALL_IF)
// This body of functions catches cases where the number of placeholders
// doesn't match the number of data arguments.
-TString Substitute(const char* format)
+TString Substitute(const char* format)
ABSL_BAD_CALL_IF(substitute_internal::PlaceholderBitmask(format) != 0,
"There were no substitution arguments "
"but this format string either has a $[0-9] in it or "
"contains an unescaped $ character (use $$ instead)");
-TString Substitute(const char* format, const substitute_internal::Arg& a0)
+TString Substitute(const char* format, const substitute_internal::Arg& a0)
ABSL_BAD_CALL_IF(
substitute_internal::PlaceholderBitmask(format) != 1,
"There was 1 substitution argument given, but "
"this format string is missing its $0, contains one of $1-$9, "
"or contains an unescaped $ character (use $$ instead)");
-TString Substitute(const char* format, const substitute_internal::Arg& a0,
+TString Substitute(const char* format, const substitute_internal::Arg& a0,
const substitute_internal::Arg& a1)
ABSL_BAD_CALL_IF(
substitute_internal::PlaceholderBitmask(format) != 3,
@@ -622,7 +622,7 @@ TString Substitute(const char* format, const substitute_internal::Arg& a0,
"this format string is missing its $0/$1, contains one of "
"$2-$9, or contains an unescaped $ character (use $$ instead)");
-TString Substitute(const char* format, const substitute_internal::Arg& a0,
+TString Substitute(const char* format, const substitute_internal::Arg& a0,
const substitute_internal::Arg& a1,
const substitute_internal::Arg& a2)
ABSL_BAD_CALL_IF(
@@ -631,7 +631,7 @@ TString Substitute(const char* format, const substitute_internal::Arg& a0,
"this format string is missing its $0/$1/$2, contains one of "
"$3-$9, or contains an unescaped $ character (use $$ instead)");
-TString Substitute(const char* format, const substitute_internal::Arg& a0,
+TString Substitute(const char* format, const substitute_internal::Arg& a0,
const substitute_internal::Arg& a1,
const substitute_internal::Arg& a2,
const substitute_internal::Arg& a3)
@@ -641,7 +641,7 @@ TString Substitute(const char* format, const substitute_internal::Arg& a0,
"this format string is missing its $0-$3, contains one of "
"$4-$9, or contains an unescaped $ character (use $$ instead)");
-TString Substitute(const char* format, const substitute_internal::Arg& a0,
+TString Substitute(const char* format, const substitute_internal::Arg& a0,
const substitute_internal::Arg& a1,
const substitute_internal::Arg& a2,
const substitute_internal::Arg& a3,
@@ -652,7 +652,7 @@ TString Substitute(const char* format, const substitute_internal::Arg& a0,
"this format string is missing its $0-$4, contains one of "
"$5-$9, or contains an unescaped $ character (use $$ instead)");
-TString Substitute(const char* format, const substitute_internal::Arg& a0,
+TString Substitute(const char* format, const substitute_internal::Arg& a0,
const substitute_internal::Arg& a1,
const substitute_internal::Arg& a2,
const substitute_internal::Arg& a3,
@@ -664,7 +664,7 @@ TString Substitute(const char* format, const substitute_internal::Arg& a0,
"this format string is missing its $0-$5, contains one of "
"$6-$9, or contains an unescaped $ character (use $$ instead)");
-TString Substitute(const char* format, const substitute_internal::Arg& a0,
+TString Substitute(const char* format, const substitute_internal::Arg& a0,
const substitute_internal::Arg& a1,
const substitute_internal::Arg& a2,
const substitute_internal::Arg& a3,
@@ -677,7 +677,7 @@ TString Substitute(const char* format, const substitute_internal::Arg& a0,
"this format string is missing its $0-$6, contains one of "
"$7-$9, or contains an unescaped $ character (use $$ instead)");
-TString Substitute(const char* format, const substitute_internal::Arg& a0,
+TString Substitute(const char* format, const substitute_internal::Arg& a0,
const substitute_internal::Arg& a1,
const substitute_internal::Arg& a2,
const substitute_internal::Arg& a3,
@@ -691,7 +691,7 @@ TString Substitute(const char* format, const substitute_internal::Arg& a0,
"this format string is missing its $0-$7, contains one of "
"$8-$9, or contains an unescaped $ character (use $$ instead)");
-TString Substitute(
+TString Substitute(
const char* format, const substitute_internal::Arg& a0,
const substitute_internal::Arg& a1, const substitute_internal::Arg& a2,
const substitute_internal::Arg& a3, const substitute_internal::Arg& a4,
@@ -703,7 +703,7 @@ TString Substitute(
"this format string is missing its $0-$8, contains a $9, or "
"contains an unescaped $ character (use $$ instead)");
-TString Substitute(
+TString Substitute(
const char* format, const substitute_internal::Arg& a0,
const substitute_internal::Arg& a1, const substitute_internal::Arg& a2,
const substitute_internal::Arg& a3, const substitute_internal::Arg& a4,
@@ -718,6 +718,6 @@ TString Substitute(
#endif // ABSL_BAD_CALL_IF
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_STRINGS_SUBSTITUTE_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/ya.make b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/ya.make
index 33ccf33bac..77c5a47dc9 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/strings/ya.make
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/strings/ya.make
@@ -12,12 +12,12 @@ LICENSE(Apache-2.0)
LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
PEERDIR(
- contrib/restricted/abseil-cpp-tstring/y_absl/base
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/throw_delegate
- contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
- contrib/restricted/abseil-cpp-tstring/y_absl/numeric
+ contrib/restricted/abseil-cpp-tstring/y_absl/base
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/throw_delegate
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
+ contrib/restricted/abseil-cpp-tstring/y_absl/numeric
contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/absl_strings_internal
)
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/barrier.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/barrier.cc
index c510ec9442..b03f0ff559 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/barrier.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/barrier.cc
@@ -12,12 +12,12 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/synchronization/barrier.h"
+#include "y_absl/synchronization/barrier.h"
-#include "y_absl/base/internal/raw_logging.h"
-#include "y_absl/synchronization/mutex.h"
+#include "y_absl/base/internal/raw_logging.h"
+#include "y_absl/synchronization/mutex.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// Return whether int *arg is zero.
@@ -49,4 +49,4 @@ bool Barrier::Block() {
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/barrier.h b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/barrier.h
index 0802f05a69..527bd42be0 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/barrier.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/barrier.h
@@ -19,10 +19,10 @@
#ifndef ABSL_SYNCHRONIZATION_BARRIER_H_
#define ABSL_SYNCHRONIZATION_BARRIER_H_
-#include "y_absl/base/thread_annotations.h"
-#include "y_absl/synchronization/mutex.h"
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/synchronization/mutex.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// Barrier
@@ -75,5 +75,5 @@ class Barrier {
};
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_SYNCHRONIZATION_BARRIER_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/blocking_counter.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/blocking_counter.cc
index 79e51b5b0d..056185e51e 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/blocking_counter.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/blocking_counter.cc
@@ -12,13 +12,13 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/synchronization/blocking_counter.h"
+#include "y_absl/synchronization/blocking_counter.h"
#include <atomic>
-#include "y_absl/base/internal/raw_logging.h"
+#include "y_absl/base/internal/raw_logging.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace {
@@ -64,4 +64,4 @@ void BlockingCounter::Wait() {
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/blocking_counter.h b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/blocking_counter.h
index 279382959a..a1644903e3 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/blocking_counter.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/blocking_counter.h
@@ -22,10 +22,10 @@
#include <atomic>
-#include "y_absl/base/thread_annotations.h"
-#include "y_absl/synchronization/mutex.h"
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/synchronization/mutex.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// BlockingCounter
@@ -96,6 +96,6 @@ class BlockingCounter {
};
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_SYNCHRONIZATION_BLOCKING_COUNTER_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/create_thread_identity.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/create_thread_identity.cc
index b710b6e2a1..3c5764eeb9 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/create_thread_identity.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/create_thread_identity.cc
@@ -16,17 +16,17 @@
#include <new>
// This file is a no-op if the required LowLevelAlloc support is missing.
-#include "y_absl/base/internal/low_level_alloc.h"
+#include "y_absl/base/internal/low_level_alloc.h"
#ifndef ABSL_LOW_LEVEL_ALLOC_MISSING
#include <string.h>
-#include "y_absl/base/attributes.h"
-#include "y_absl/base/internal/spinlock.h"
-#include "y_absl/base/internal/thread_identity.h"
-#include "y_absl/synchronization/internal/per_thread_sem.h"
+#include "y_absl/base/attributes.h"
+#include "y_absl/base/internal/spinlock.h"
+#include "y_absl/base/internal/thread_identity.h"
+#include "y_absl/synchronization/internal/per_thread_sem.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace synchronization_internal {
@@ -135,6 +135,6 @@ base_internal::ThreadIdentity* CreateThreadIdentity() {
} // namespace synchronization_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_LOW_LEVEL_ALLOC_MISSING
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/create_thread_identity.h b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/create_thread_identity.h
index 8264f55fb1..d93209f424 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/create_thread_identity.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/create_thread_identity.h
@@ -20,15 +20,15 @@
// This file is separate from thread_identity.h because creating a new
// ThreadIdentity requires slightly higher level libraries (per_thread_sem
// and low_level_alloc) than accessing an existing one. This separation allows
-// us to have a smaller //y_absl/base:base.
+// us to have a smaller //y_absl/base:base.
#ifndef ABSL_SYNCHRONIZATION_INTERNAL_CREATE_THREAD_IDENTITY_H_
#define ABSL_SYNCHRONIZATION_INTERNAL_CREATE_THREAD_IDENTITY_H_
-#include "y_absl/base/internal/thread_identity.h"
-#include "y_absl/base/port.h"
+#include "y_absl/base/internal/thread_identity.h"
+#include "y_absl/base/port.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace synchronization_internal {
@@ -55,6 +55,6 @@ inline base_internal::ThreadIdentity* GetOrCreateCurrentThreadIdentity() {
} // namespace synchronization_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_SYNCHRONIZATION_INTERNAL_CREATE_THREAD_IDENTITY_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/graphcycles.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/graphcycles.cc
index 00fb2bd754..d8987c1a98 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/graphcycles.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/graphcycles.cc
@@ -28,23 +28,23 @@
// (2) When a new edge (x->y) is inserted, do nothing if rank[x] < rank[y].
// (3) Otherwise: adjust ranks in the neighborhood of x and y.
-#include "y_absl/base/attributes.h"
+#include "y_absl/base/attributes.h"
// This file is a no-op if the required LowLevelAlloc support is missing.
-#include "y_absl/base/internal/low_level_alloc.h"
+#include "y_absl/base/internal/low_level_alloc.h"
#ifndef ABSL_LOW_LEVEL_ALLOC_MISSING
-#include "y_absl/synchronization/internal/graphcycles.h"
+#include "y_absl/synchronization/internal/graphcycles.h"
#include <algorithm>
#include <array>
#include <limits>
-#include "y_absl/base/internal/hide_ptr.h"
-#include "y_absl/base/internal/raw_logging.h"
-#include "y_absl/base/internal/spinlock.h"
+#include "y_absl/base/internal/hide_ptr.h"
+#include "y_absl/base/internal/raw_logging.h"
+#include "y_absl/base/internal/spinlock.h"
// Do not use STL. This module does not use standard memory allocation.
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace synchronization_internal {
@@ -693,6 +693,6 @@ int GraphCycles::GetStackTrace(GraphId id, void*** ptr) {
} // namespace synchronization_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_LOW_LEVEL_ALLOC_MISSING
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/graphcycles.h b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/graphcycles.h
index f7ca16bc61..eaf130bc29 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/graphcycles.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/graphcycles.h
@@ -42,7 +42,7 @@
#include "y_absl/base/config.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace synchronization_internal {
@@ -136,6 +136,6 @@ class GraphCycles {
} // namespace synchronization_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/kernel_timeout.h b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/kernel_timeout.h
index 5640066a4e..ee4078702d 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/kernel_timeout.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/kernel_timeout.h
@@ -14,13 +14,13 @@
//
// An optional absolute timeout, with nanosecond granularity,
-// compatible with y_absl::Time. Suitable for in-register
+// compatible with y_absl::Time. Suitable for in-register
// parameter-passing (e.g. syscalls.)
-// Constructible from a y_absl::Time (for a timeout to be respected) or {}
+// Constructible from a y_absl::Time (for a timeout to be respected) or {}
// (for "no timeout".)
// This is a private low-level API for use by a handful of low-level
// components that are friends of this class. Higher-level components
-// should build APIs based on y_absl::Time and y_absl::Duration.
+// should build APIs based on y_absl::Time and y_absl::Duration.
#ifndef ABSL_SYNCHRONIZATION_INTERNAL_KERNEL_TIMEOUT_H_
#define ABSL_SYNCHRONIZATION_INTERNAL_KERNEL_TIMEOUT_H_
@@ -30,11 +30,11 @@
#include <algorithm>
#include <limits>
-#include "y_absl/base/internal/raw_logging.h"
-#include "y_absl/time/clock.h"
-#include "y_absl/time/time.h"
+#include "y_absl/base/internal/raw_logging.h"
+#include "y_absl/time/clock.h"
+#include "y_absl/time/time.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace synchronization_internal {
@@ -46,7 +46,7 @@ class KernelTimeout {
// A timeout that should expire at <t>. Any value, in the full
// InfinitePast() to InfiniteFuture() range, is valid here and will be
// respected.
- explicit KernelTimeout(y_absl::Time t) : ns_(MakeNs(t)) {}
+ explicit KernelTimeout(y_absl::Time t) : ns_(MakeNs(t)) {}
// No timeout.
KernelTimeout() : ns_(0) {}
@@ -54,7 +54,7 @@ class KernelTimeout {
static KernelTimeout Never() { return {}; }
// We explicitly do not support other custom formats: timespec, int64_t nanos.
- // Unify on this and y_absl::Time, please.
+ // Unify on this and y_absl::Time, please.
bool has_timeout() const { return ns_ != 0; }
@@ -69,10 +69,10 @@ class KernelTimeout {
// timeout.
int64_t ns_;
- static int64_t MakeNs(y_absl::Time t) {
+ static int64_t MakeNs(y_absl::Time t) {
// optimization--InfiniteFuture is common "no timeout" value
// and cheaper to compare than convert.
- if (t == y_absl::InfiniteFuture()) return 0;
+ if (t == y_absl::InfiniteFuture()) return 0;
int64_t x = ToUnixNanos(t);
// A timeout that lands exactly on the epoch (x=0) needs to be respected,
@@ -102,10 +102,10 @@ class KernelTimeout {
if (!has_timeout()) {
return kInfinite;
}
- // The use of y_absl::Now() to convert from absolute time to
- // relative time means that y_absl::Now() cannot use anything that
+ // The use of y_absl::Now() to convert from absolute time to
+ // relative time means that y_absl::Now() cannot use anything that
// depends on KernelTimeout (for example, Mutex) on Windows.
- int64_t now = ToUnixNanos(y_absl::Now());
+ int64_t now = ToUnixNanos(y_absl::Now());
if (ns_ >= now) {
// Round up so that Now() + ms_from_now >= ns_.
constexpr uint64_t max_nanos =
@@ -151,6 +151,6 @@ inline struct timespec KernelTimeout::MakeAbsTimespec() {
} // namespace synchronization_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_SYNCHRONIZATION_INTERNAL_KERNEL_TIMEOUT_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/per_thread_sem.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/per_thread_sem.cc
index af152bf63a..3e40e812a9 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/per_thread_sem.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/per_thread_sem.cc
@@ -13,18 +13,18 @@
// limitations under the License.
// This file is a no-op if the required LowLevelAlloc support is missing.
-#include "y_absl/base/internal/low_level_alloc.h"
+#include "y_absl/base/internal/low_level_alloc.h"
#ifndef ABSL_LOW_LEVEL_ALLOC_MISSING
-#include "y_absl/synchronization/internal/per_thread_sem.h"
+#include "y_absl/synchronization/internal/per_thread_sem.h"
#include <atomic>
-#include "y_absl/base/attributes.h"
-#include "y_absl/base/internal/thread_identity.h"
-#include "y_absl/synchronization/internal/waiter.h"
+#include "y_absl/base/attributes.h"
+#include "y_absl/base/internal/thread_identity.h"
+#include "y_absl/synchronization/internal/waiter.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace synchronization_internal {
@@ -64,20 +64,20 @@ void PerThreadSem::Tick(base_internal::ThreadIdentity *identity) {
} // namespace synchronization_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
extern "C" {
ABSL_ATTRIBUTE_WEAK void ABSL_INTERNAL_C_SYMBOL(AbslInternalPerThreadSemPost)(
- y_absl::base_internal::ThreadIdentity *identity) {
- y_absl::synchronization_internal::Waiter::GetWaiter(identity)->Post();
+ y_absl::base_internal::ThreadIdentity *identity) {
+ y_absl::synchronization_internal::Waiter::GetWaiter(identity)->Post();
}
ABSL_ATTRIBUTE_WEAK bool ABSL_INTERNAL_C_SYMBOL(AbslInternalPerThreadSemWait)(
- y_absl::synchronization_internal::KernelTimeout t) {
+ y_absl::synchronization_internal::KernelTimeout t) {
bool timeout = false;
- y_absl::base_internal::ThreadIdentity *identity;
- identity = y_absl::synchronization_internal::GetOrCreateCurrentThreadIdentity();
+ y_absl::base_internal::ThreadIdentity *identity;
+ identity = y_absl::synchronization_internal::GetOrCreateCurrentThreadIdentity();
// Ensure wait_start != 0.
int ticker = identity->ticker.load(std::memory_order_relaxed);
@@ -90,7 +90,7 @@ ABSL_ATTRIBUTE_WEAK bool ABSL_INTERNAL_C_SYMBOL(AbslInternalPerThreadSemWait)(
}
timeout =
- !y_absl::synchronization_internal::Waiter::GetWaiter(identity)->Wait(t);
+ !y_absl::synchronization_internal::Waiter::GetWaiter(identity)->Wait(t);
if (identity->blocked_count_ptr != nullptr) {
identity->blocked_count_ptr->fetch_sub(1, std::memory_order_relaxed);
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/per_thread_sem.h b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/per_thread_sem.h
index 1a747d4da9..2fc39ca130 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/per_thread_sem.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/per_thread_sem.h
@@ -27,11 +27,11 @@
#include <atomic>
-#include "y_absl/base/internal/thread_identity.h"
-#include "y_absl/synchronization/internal/create_thread_identity.h"
-#include "y_absl/synchronization/internal/kernel_timeout.h"
+#include "y_absl/base/internal/thread_identity.h"
+#include "y_absl/synchronization/internal/create_thread_identity.h"
+#include "y_absl/synchronization/internal/kernel_timeout.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
class Mutex;
@@ -80,14 +80,14 @@ class PerThreadSem {
// Permitted callers.
friend class PerThreadSemTest;
- friend class y_absl::Mutex;
- friend y_absl::base_internal::ThreadIdentity* CreateThreadIdentity();
+ friend class y_absl::Mutex;
+ friend y_absl::base_internal::ThreadIdentity* CreateThreadIdentity();
friend void ReclaimThreadIdentity(void* v);
};
} // namespace synchronization_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
// In some build configurations we pass --detect-odr-violations to the
// gold linker. This causes it to flag weak symbol overrides as ODR
@@ -97,18 +97,18 @@ ABSL_NAMESPACE_END
// check.
extern "C" {
void ABSL_INTERNAL_C_SYMBOL(AbslInternalPerThreadSemPost)(
- y_absl::base_internal::ThreadIdentity* identity);
+ y_absl::base_internal::ThreadIdentity* identity);
bool ABSL_INTERNAL_C_SYMBOL(AbslInternalPerThreadSemWait)(
- y_absl::synchronization_internal::KernelTimeout t);
+ y_absl::synchronization_internal::KernelTimeout t);
} // extern "C"
-void y_absl::synchronization_internal::PerThreadSem::Post(
- y_absl::base_internal::ThreadIdentity* identity) {
+void y_absl::synchronization_internal::PerThreadSem::Post(
+ y_absl::base_internal::ThreadIdentity* identity) {
ABSL_INTERNAL_C_SYMBOL(AbslInternalPerThreadSemPost)(identity);
}
-bool y_absl::synchronization_internal::PerThreadSem::Wait(
- y_absl::synchronization_internal::KernelTimeout t) {
+bool y_absl::synchronization_internal::PerThreadSem::Wait(
+ y_absl::synchronization_internal::KernelTimeout t) {
return ABSL_INTERNAL_C_SYMBOL(AbslInternalPerThreadSemWait)(t);
}
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/thread_pool.h b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/thread_pool.h
index 3901ca7da3..8b8912d494 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/thread_pool.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/thread_pool.h
@@ -22,10 +22,10 @@
#include <thread> // NOLINT(build/c++11)
#include <vector>
-#include "y_absl/base/thread_annotations.h"
-#include "y_absl/synchronization/mutex.h"
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/synchronization/mutex.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace synchronization_internal {
@@ -43,7 +43,7 @@ class ThreadPool {
~ThreadPool() {
{
- y_absl::MutexLock l(&mu_);
+ y_absl::MutexLock l(&mu_);
for (size_t i = 0; i < threads_.size(); i++) {
queue_.push(nullptr); // Shutdown signal.
}
@@ -56,7 +56,7 @@ class ThreadPool {
// Schedule a function to be run on a ThreadPool thread immediately.
void Schedule(std::function<void()> func) {
assert(func != nullptr);
- y_absl::MutexLock l(&mu_);
+ y_absl::MutexLock l(&mu_);
queue_.push(std::move(func));
}
@@ -69,8 +69,8 @@ class ThreadPool {
while (true) {
std::function<void()> func;
{
- y_absl::MutexLock l(&mu_);
- mu_.Await(y_absl::Condition(this, &ThreadPool::WorkAvailable));
+ y_absl::MutexLock l(&mu_);
+ mu_.Await(y_absl::Condition(this, &ThreadPool::WorkAvailable));
func = std::move(queue_.front());
queue_.pop();
}
@@ -81,13 +81,13 @@ class ThreadPool {
}
}
- y_absl::Mutex mu_;
+ y_absl::Mutex mu_;
std::queue<std::function<void()>> queue_ ABSL_GUARDED_BY(mu_);
std::vector<std::thread> threads_;
};
} // namespace synchronization_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_SYNCHRONIZATION_INTERNAL_THREAD_POOL_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/waiter.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/waiter.cc
index da4629d20d..573ce9c6c5 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/waiter.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/waiter.cc
@@ -12,9 +12,9 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/synchronization/internal/waiter.h"
+#include "y_absl/synchronization/internal/waiter.h"
-#include "y_absl/base/config.h"
+#include "y_absl/base/config.h"
#ifdef _WIN32
#include <windows.h>
@@ -43,13 +43,13 @@
#include <new>
#include <type_traits>
-#include "y_absl/base/internal/raw_logging.h"
-#include "y_absl/base/internal/thread_identity.h"
-#include "y_absl/base/optimization.h"
-#include "y_absl/synchronization/internal/kernel_timeout.h"
+#include "y_absl/base/internal/raw_logging.h"
+#include "y_absl/base/internal/thread_identity.h"
+#include "y_absl/base/optimization.h"
+#include "y_absl/synchronization/internal/kernel_timeout.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace synchronization_internal {
@@ -425,4 +425,4 @@ void Waiter::InternalCondVarPoke() {
} // namespace synchronization_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/waiter.h b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/waiter.h
index 8065171c31..e6fede411f 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/waiter.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/waiter.h
@@ -16,7 +16,7 @@
#ifndef ABSL_SYNCHRONIZATION_INTERNAL_WAITER_H_
#define ABSL_SYNCHRONIZATION_INTERNAL_WAITER_H_
-#include "y_absl/base/config.h"
+#include "y_absl/base/config.h"
#ifdef _WIN32
#include <sdkddkver.h>
@@ -35,9 +35,9 @@
#include <atomic>
#include <cstdint>
-#include "y_absl/base/internal/thread_identity.h"
+#include "y_absl/base/internal/thread_identity.h"
#include "y_absl/synchronization/internal/futex.h"
-#include "y_absl/synchronization/internal/kernel_timeout.h"
+#include "y_absl/synchronization/internal/kernel_timeout.h"
// May be chosen at compile time via -DABSL_FORCE_WAITER_MODE=<index>
#define ABSL_WAITER_MODE_FUTEX 0
@@ -57,7 +57,7 @@
#define ABSL_WAITER_MODE ABSL_WAITER_MODE_CONDVAR
#endif
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace synchronization_internal {
@@ -150,6 +150,6 @@ class Waiter {
} // namespace synchronization_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_SYNCHRONIZATION_INTERNAL_WAITER_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/ya.make b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/ya.make
index 8d1461a559..167e710a78 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/ya.make
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal/ya.make
@@ -12,11 +12,11 @@ LICENSE(Apache-2.0)
LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
PEERDIR(
- contrib/restricted/abseil-cpp-tstring/y_absl/base
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/low_level_alloc
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait
- contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
+ contrib/restricted/abseil-cpp-tstring/y_absl/base
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/low_level_alloc
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
)
ADDINCL(
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/mutex.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/mutex.cc
index 6de2ac8bad..babe5c4ada 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/mutex.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/mutex.cc
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/synchronization/mutex.h"
+#include "y_absl/synchronization/mutex.h"
#ifdef _WIN32
#include <windows.h>
@@ -38,36 +38,36 @@
#include <cinttypes>
#include <thread> // NOLINT(build/c++11)
-#include "y_absl/base/attributes.h"
+#include "y_absl/base/attributes.h"
#include "y_absl/base/call_once.h"
-#include "y_absl/base/config.h"
-#include "y_absl/base/dynamic_annotations.h"
-#include "y_absl/base/internal/atomic_hook.h"
-#include "y_absl/base/internal/cycleclock.h"
-#include "y_absl/base/internal/hide_ptr.h"
-#include "y_absl/base/internal/low_level_alloc.h"
-#include "y_absl/base/internal/raw_logging.h"
-#include "y_absl/base/internal/spinlock.h"
-#include "y_absl/base/internal/sysinfo.h"
-#include "y_absl/base/internal/thread_identity.h"
+#include "y_absl/base/config.h"
+#include "y_absl/base/dynamic_annotations.h"
+#include "y_absl/base/internal/atomic_hook.h"
+#include "y_absl/base/internal/cycleclock.h"
+#include "y_absl/base/internal/hide_ptr.h"
+#include "y_absl/base/internal/low_level_alloc.h"
+#include "y_absl/base/internal/raw_logging.h"
+#include "y_absl/base/internal/spinlock.h"
+#include "y_absl/base/internal/sysinfo.h"
+#include "y_absl/base/internal/thread_identity.h"
#include "y_absl/base/internal/tsan_mutex_interface.h"
-#include "y_absl/base/port.h"
-#include "y_absl/debugging/stacktrace.h"
-#include "y_absl/debugging/symbolize.h"
-#include "y_absl/synchronization/internal/graphcycles.h"
-#include "y_absl/synchronization/internal/per_thread_sem.h"
-#include "y_absl/time/time.h"
-
-using y_absl::base_internal::CurrentThreadIdentityIfPresent;
-using y_absl::base_internal::PerThreadSynch;
+#include "y_absl/base/port.h"
+#include "y_absl/debugging/stacktrace.h"
+#include "y_absl/debugging/symbolize.h"
+#include "y_absl/synchronization/internal/graphcycles.h"
+#include "y_absl/synchronization/internal/per_thread_sem.h"
+#include "y_absl/time/time.h"
+
+using y_absl::base_internal::CurrentThreadIdentityIfPresent;
+using y_absl::base_internal::PerThreadSynch;
using y_absl::base_internal::SchedulingGuard;
-using y_absl::base_internal::ThreadIdentity;
-using y_absl::synchronization_internal::GetOrCreateCurrentThreadIdentity;
-using y_absl::synchronization_internal::GraphCycles;
-using y_absl::synchronization_internal::GraphId;
-using y_absl::synchronization_internal::InvalidGraphId;
-using y_absl::synchronization_internal::KernelTimeout;
-using y_absl::synchronization_internal::PerThreadSem;
+using y_absl::base_internal::ThreadIdentity;
+using y_absl::synchronization_internal::GetOrCreateCurrentThreadIdentity;
+using y_absl::synchronization_internal::GraphCycles;
+using y_absl::synchronization_internal::GraphId;
+using y_absl::synchronization_internal::InvalidGraphId;
+using y_absl::synchronization_internal::KernelTimeout;
+using y_absl::synchronization_internal::PerThreadSem;
extern "C" {
ABSL_ATTRIBUTE_WEAK void ABSL_INTERNAL_C_SYMBOL(AbslInternalMutexYield)() {
@@ -75,7 +75,7 @@ ABSL_ATTRIBUTE_WEAK void ABSL_INTERNAL_C_SYMBOL(AbslInternalMutexYield)() {
}
} // extern "C"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace {
@@ -101,7 +101,7 @@ ABSL_INTERNAL_ATOMIC_HOOK_ATTRIBUTES
cond_var_tracer;
ABSL_INTERNAL_ATOMIC_HOOK_ATTRIBUTES y_absl::base_internal::AtomicHook<
bool (*)(const void *pc, char *out, int out_size)>
- symbolizer(y_absl::Symbolize);
+ symbolizer(y_absl::Symbolize);
} // namespace
@@ -176,7 +176,7 @@ int MutexDelay(int32_t c, int mode) {
c++;
} else {
// Then wait.
- y_absl::SleepFor(y_absl::Microseconds(10));
+ y_absl::SleepFor(y_absl::Microseconds(10));
c = 0;
}
ABSL_TSAN_MUTEX_POST_DIVERT(nullptr, 0);
@@ -424,7 +424,7 @@ static void PostSynchEvent(void *obj, int ev) {
// or it explicitly says to log
if (e == nullptr || e->log) {
void *pcs[40];
- int n = y_absl::GetStackTrace(pcs, ABSL_ARRAYSIZE(pcs), 1);
+ int n = y_absl::GetStackTrace(pcs, ABSL_ARRAYSIZE(pcs), 1);
// A buffer with enough space for the ASCII for all the PCs, even on a
// 64-bit machine.
char buffer[ABSL_ARRAYSIZE(pcs) * 24];
@@ -605,13 +605,13 @@ void Mutex::InternalAttemptToUseMutexInFatalSignalHandler() {
// Return the current time plus the timeout. Use the same clock as
// PerThreadSem::Wait() for consistency. Unfortunately, we don't have
// such a choice when a deadline is given directly.
-static y_absl::Time DeadlineFromTimeout(y_absl::Duration timeout) {
+static y_absl::Time DeadlineFromTimeout(y_absl::Duration timeout) {
#ifndef _WIN32
struct timeval tv;
gettimeofday(&tv, nullptr);
- return y_absl::TimeFromTimeval(tv) + timeout;
+ return y_absl::TimeFromTimeval(tv) + timeout;
#else
- return y_absl::Now() + timeout;
+ return y_absl::Now() + timeout;
#endif
}
@@ -1290,7 +1290,7 @@ static char *StackString(void **pcs, int n, char *buf, int maxlen,
static char *CurrentStackString(char *buf, int maxlen, bool symbolize) {
void *pcs[40];
- return StackString(pcs, y_absl::GetStackTrace(pcs, ABSL_ARRAYSIZE(pcs), 2), buf,
+ return StackString(pcs, y_absl::GetStackTrace(pcs, ABSL_ARRAYSIZE(pcs), 2), buf,
maxlen, symbolize);
}
@@ -1315,7 +1315,7 @@ struct ScopedDeadlockReportBuffers {
// Helper to pass to GraphCycles::UpdateStackTrace.
int GetStack(void** stack, int max_depth) {
- return y_absl::GetStackTrace(stack, max_depth, 3);
+ return y_absl::GetStackTrace(stack, max_depth, 3);
}
} // anonymous namespace
@@ -1329,7 +1329,7 @@ static GraphId DeadlockCheck(Mutex *mu) {
SynchLocksHeld *all_locks = Synch_GetAllLocks();
- y_absl::base_internal::SpinLockHolder lock(&deadlock_graph_mu);
+ y_absl::base_internal::SpinLockHolder lock(&deadlock_graph_mu);
const GraphId mu_id = GetGraphIdLocked(mu);
if (all_locks->n == 0) {
@@ -1508,11 +1508,11 @@ void Mutex::LockWhen(const Condition &cond) {
ABSL_TSAN_MUTEX_POST_LOCK(this, 0, 0);
}
-bool Mutex::LockWhenWithTimeout(const Condition &cond, y_absl::Duration timeout) {
+bool Mutex::LockWhenWithTimeout(const Condition &cond, y_absl::Duration timeout) {
return LockWhenWithDeadline(cond, DeadlineFromTimeout(timeout));
}
-bool Mutex::LockWhenWithDeadline(const Condition &cond, y_absl::Time deadline) {
+bool Mutex::LockWhenWithDeadline(const Condition &cond, y_absl::Time deadline) {
ABSL_TSAN_MUTEX_PRE_LOCK(this, 0);
GraphId id = DebugOnlyDeadlockCheck(this);
bool res = LockSlowWithDeadline(kExclusive, &cond,
@@ -1531,12 +1531,12 @@ void Mutex::ReaderLockWhen(const Condition &cond) {
}
bool Mutex::ReaderLockWhenWithTimeout(const Condition &cond,
- y_absl::Duration timeout) {
+ y_absl::Duration timeout) {
return ReaderLockWhenWithDeadline(cond, DeadlineFromTimeout(timeout));
}
bool Mutex::ReaderLockWhenWithDeadline(const Condition &cond,
- y_absl::Time deadline) {
+ y_absl::Time deadline) {
ABSL_TSAN_MUTEX_PRE_LOCK(this, __tsan_mutex_read_lock);
GraphId id = DebugOnlyDeadlockCheck(this);
bool res = LockSlowWithDeadline(kShared, &cond, KernelTimeout(deadline), 0);
@@ -1556,11 +1556,11 @@ void Mutex::Await(const Condition &cond) {
}
}
-bool Mutex::AwaitWithTimeout(const Condition &cond, y_absl::Duration timeout) {
+bool Mutex::AwaitWithTimeout(const Condition &cond, y_absl::Duration timeout) {
return AwaitWithDeadline(cond, DeadlineFromTimeout(timeout));
}
-bool Mutex::AwaitWithDeadline(const Condition &cond, y_absl::Time deadline) {
+bool Mutex::AwaitWithDeadline(const Condition &cond, y_absl::Time deadline) {
if (cond.Eval()) { // condition already true; nothing to do
if (kDebugMode) {
this->AssertReaderHeld();
@@ -2582,11 +2582,11 @@ bool CondVar::WaitCommon(Mutex *mutex, KernelTimeout t) {
return rc;
}
-bool CondVar::WaitWithTimeout(Mutex *mu, y_absl::Duration timeout) {
+bool CondVar::WaitWithTimeout(Mutex *mu, y_absl::Duration timeout) {
return WaitWithDeadline(mu, DeadlineFromTimeout(timeout));
}
-bool CondVar::WaitWithDeadline(Mutex *mu, y_absl::Time deadline) {
+bool CondVar::WaitWithDeadline(Mutex *mu, y_absl::Time deadline) {
return WaitCommon(mu, KernelTimeout(deadline));
}
@@ -2748,4 +2748,4 @@ bool Condition::GuaranteedEqual(const Condition *a, const Condition *b) {
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/mutex.h b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/mutex.h
index 298b014313..0762a852df 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/mutex.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/mutex.h
@@ -62,18 +62,18 @@
#include <cstdint>
#include <util/generic/string.h>
-#include "y_absl/base/const_init.h"
-#include "y_absl/base/internal/identity.h"
-#include "y_absl/base/internal/low_level_alloc.h"
-#include "y_absl/base/internal/thread_identity.h"
-#include "y_absl/base/internal/tsan_mutex_interface.h"
-#include "y_absl/base/port.h"
-#include "y_absl/base/thread_annotations.h"
-#include "y_absl/synchronization/internal/kernel_timeout.h"
-#include "y_absl/synchronization/internal/per_thread_sem.h"
-#include "y_absl/time/time.h"
-
-namespace y_absl {
+#include "y_absl/base/const_init.h"
+#include "y_absl/base/internal/identity.h"
+#include "y_absl/base/internal/low_level_alloc.h"
+#include "y_absl/base/internal/thread_identity.h"
+#include "y_absl/base/internal/tsan_mutex_interface.h"
+#include "y_absl/base/port.h"
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/synchronization/internal/kernel_timeout.h"
+#include "y_absl/synchronization/internal/per_thread_sem.h"
+#include "y_absl/time/time.h"
+
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
class Condition;
@@ -135,12 +135,12 @@ class ABSL_LOCKABLE Mutex {
//
// To create `Mutex` instances with static storage duration
// (e.g. a namespace-scoped or global variable), see
- // `Mutex::Mutex(y_absl::kConstInit)` below instead.
+ // `Mutex::Mutex(y_absl::kConstInit)` below instead.
Mutex();
// Creates a mutex with static storage duration. A global variable
// constructed this way avoids the lifetime issues that can occur on program
- // startup and shutdown. (See y_absl/base/const_init.h.)
+ // startup and shutdown. (See y_absl/base/const_init.h.)
//
// For Mutexes allocated on the heap and stack, instead use the default
// constructor, which can interact more fully with the thread sanitizer.
@@ -149,7 +149,7 @@ class ABSL_LOCKABLE Mutex {
// namespace foo {
// ABSL_CONST_INIT y_absl::Mutex mu(y_absl::kConstInit);
// }
- explicit constexpr Mutex(y_absl::ConstInitType);
+ explicit constexpr Mutex(y_absl::ConstInitType);
~Mutex();
@@ -337,9 +337,9 @@ class ABSL_LOCKABLE Mutex {
// Negative timeouts are equivalent to a zero timeout.
//
// This method requires that this thread holds this `Mutex` in some mode.
- bool AwaitWithTimeout(const Condition &cond, y_absl::Duration timeout);
+ bool AwaitWithTimeout(const Condition &cond, y_absl::Duration timeout);
- bool AwaitWithDeadline(const Condition &cond, y_absl::Time deadline);
+ bool AwaitWithDeadline(const Condition &cond, y_absl::Time deadline);
// Mutex::LockWhenWithTimeout()
// Mutex::ReaderLockWhenWithTimeout()
@@ -352,11 +352,11 @@ class ABSL_LOCKABLE Mutex {
// `true` on return.
//
// Negative timeouts are equivalent to a zero timeout.
- bool LockWhenWithTimeout(const Condition &cond, y_absl::Duration timeout)
+ bool LockWhenWithTimeout(const Condition &cond, y_absl::Duration timeout)
ABSL_EXCLUSIVE_LOCK_FUNCTION();
- bool ReaderLockWhenWithTimeout(const Condition &cond, y_absl::Duration timeout)
+ bool ReaderLockWhenWithTimeout(const Condition &cond, y_absl::Duration timeout)
ABSL_SHARED_LOCK_FUNCTION();
- bool WriterLockWhenWithTimeout(const Condition &cond, y_absl::Duration timeout)
+ bool WriterLockWhenWithTimeout(const Condition &cond, y_absl::Duration timeout)
ABSL_EXCLUSIVE_LOCK_FUNCTION() {
return this->LockWhenWithTimeout(cond, timeout);
}
@@ -372,11 +372,11 @@ class ABSL_LOCKABLE Mutex {
// on return.
//
// Deadlines in the past are equivalent to an immediate deadline.
- bool LockWhenWithDeadline(const Condition &cond, y_absl::Time deadline)
+ bool LockWhenWithDeadline(const Condition &cond, y_absl::Time deadline)
ABSL_EXCLUSIVE_LOCK_FUNCTION();
- bool ReaderLockWhenWithDeadline(const Condition &cond, y_absl::Time deadline)
+ bool ReaderLockWhenWithDeadline(const Condition &cond, y_absl::Time deadline)
ABSL_SHARED_LOCK_FUNCTION();
- bool WriterLockWhenWithDeadline(const Condition &cond, y_absl::Time deadline)
+ bool WriterLockWhenWithDeadline(const Condition &cond, y_absl::Time deadline)
ABSL_EXCLUSIVE_LOCK_FUNCTION() {
return this->LockWhenWithDeadline(cond, deadline);
}
@@ -675,16 +675,16 @@ class Condition {
// `Condition(object, &Class::Method)` constructs a `Condition` that evaluates
// `object->Method()`.
//
- // Implementation Note: `y_absl::internal::identity` is used to allow methods to
+ // Implementation Note: `y_absl::internal::identity` is used to allow methods to
// come from base classes. A simpler signature like
// `Condition(T*, bool (T::*)())` does not suffice.
template<typename T>
- Condition(T *object, bool (y_absl::internal::identity<T>::type::* method)());
+ Condition(T *object, bool (y_absl::internal::identity<T>::type::* method)());
// Same as above, for const members
template<typename T>
Condition(const T *object,
- bool (y_absl::internal::identity<T>::type::* method)() const);
+ bool (y_absl::internal::identity<T>::type::* method)() const);
// A Condition that returns the value of `*cond`
explicit Condition(const bool *cond);
@@ -817,7 +817,7 @@ class CondVar {
// to return `true` or `false`.
//
// Requires and ensures that the current thread holds the `Mutex`.
- bool WaitWithTimeout(Mutex *mu, y_absl::Duration timeout);
+ bool WaitWithTimeout(Mutex *mu, y_absl::Duration timeout);
// CondVar::WaitWithDeadline()
//
@@ -834,7 +834,7 @@ class CondVar {
// to return `true` or `false`.
//
// Requires and ensures that the current thread holds the `Mutex`.
- bool WaitWithDeadline(Mutex *mu, y_absl::Time deadline);
+ bool WaitWithDeadline(Mutex *mu, y_absl::Time deadline);
// CondVar::Signal()
//
@@ -935,7 +935,7 @@ inline Mutex::Mutex() : mu_(0) {
ABSL_TSAN_MUTEX_CREATE(this, __tsan_mutex_not_static);
}
-inline constexpr Mutex::Mutex(y_absl::ConstInitType) : mu_(0) {}
+inline constexpr Mutex::Mutex(y_absl::ConstInitType) : mu_(0) {}
inline CondVar::CondVar() : cv_(0) {}
@@ -966,7 +966,7 @@ inline Condition::Condition(bool (*func)(T *), T *arg)
template <typename T>
inline Condition::Condition(T *object,
- bool (y_absl::internal::identity<T>::type::*method)())
+ bool (y_absl::internal::identity<T>::type::*method)())
: eval_(&CastAndCallMethod<T>),
function_(nullptr),
method_(reinterpret_cast<InternalMethodType>(method)),
@@ -974,7 +974,7 @@ inline Condition::Condition(T *object,
template <typename T>
inline Condition::Condition(const T *object,
- bool (y_absl::internal::identity<T>::type::*method)()
+ bool (y_absl::internal::identity<T>::type::*method)()
const)
: eval_(&CastAndCallMethod<T>),
function_(nullptr),
@@ -984,7 +984,7 @@ inline Condition::Condition(const T *object,
// Register a hook for profiling support.
//
// The function pointer registered here will be called whenever a mutex is
-// contended. The callback is given the y_absl/base/cycleclock.h timestamp when
+// contended. The callback is given the y_absl/base/cycleclock.h timestamp when
// waiting began.
//
// Calls to this function do not race or block, but there is no ordering
@@ -998,7 +998,7 @@ void RegisterMutexProfiler(void (*fn)(int64_t wait_timestamp));
// The function pointer registered here will be called whenever a mutex is
// contended. The callback is given an opaque handle to the contended mutex,
// an event name, and the number of wait cycles (as measured by
-// //y_absl/base/internal/cycleclock.h, and which may not be real
+// //y_absl/base/internal/cycleclock.h, and which may not be real
// "cycle" counts.)
//
// The only event name currently sent is "slow release".
@@ -1032,10 +1032,10 @@ void RegisterCondVarTracer(void (*fn)(const char *msg, const void *cv));
//
// This has the same memory ordering concerns as RegisterMutexProfiler() above.
//
-// DEPRECATED: The default symbolizer function is y_absl::Symbolize() and the
+// DEPRECATED: The default symbolizer function is y_absl::Symbolize() and the
// ability to register a different hook for symbolizing stack traces will be
// removed on or after 2023-05-01.
-ABSL_DEPRECATED("y_absl::RegisterSymbolizer() is deprecated and will be removed "
+ABSL_DEPRECATED("y_absl::RegisterSymbolizer() is deprecated and will be removed "
"on or after 2023-05-01")
void RegisterSymbolizer(bool (*fn)(const void *pc, char *out, int out_size));
@@ -1067,7 +1067,7 @@ enum class OnDeadlockCycle {
void SetMutexDeadlockDetectionMode(OnDeadlockCycle mode);
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
// In some build configurations we pass --detect-odr-violations to the
// gold linker. This causes it to flag weak symbol overrides as ODR
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/notification.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/notification.cc
index ac1873d017..0b5c5a5e48 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/notification.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/notification.cc
@@ -12,16 +12,16 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/synchronization/notification.h"
+#include "y_absl/synchronization/notification.h"
#include <atomic>
-#include "y_absl/base/attributes.h"
-#include "y_absl/base/internal/raw_logging.h"
-#include "y_absl/synchronization/mutex.h"
-#include "y_absl/time/time.h"
+#include "y_absl/base/attributes.h"
+#include "y_absl/base/internal/raw_logging.h"
+#include "y_absl/synchronization/mutex.h"
+#include "y_absl/time/time.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
void Notification::Notify() {
@@ -54,7 +54,7 @@ void Notification::WaitForNotification() const {
}
bool Notification::WaitForNotificationWithTimeout(
- y_absl::Duration timeout) const {
+ y_absl::Duration timeout) const {
bool notified = HasBeenNotifiedInternal(&this->notified_yet_);
if (!notified) {
notified = this->mutex_.LockWhenWithTimeout(
@@ -64,7 +64,7 @@ bool Notification::WaitForNotificationWithTimeout(
return notified;
}
-bool Notification::WaitForNotificationWithDeadline(y_absl::Time deadline) const {
+bool Notification::WaitForNotificationWithDeadline(y_absl::Time deadline) const {
bool notified = HasBeenNotifiedInternal(&this->notified_yet_);
if (!notified) {
notified = this->mutex_.LockWhenWithDeadline(
@@ -75,4 +75,4 @@ bool Notification::WaitForNotificationWithDeadline(y_absl::Time deadline) const
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/notification.h b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/notification.h
index fb6aca8e36..eea7090f18 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/notification.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/notification.h
@@ -52,11 +52,11 @@
#include <atomic>
-#include "y_absl/base/macros.h"
-#include "y_absl/synchronization/mutex.h"
-#include "y_absl/time/time.h"
+#include "y_absl/base/macros.h"
+#include "y_absl/synchronization/mutex.h"
+#include "y_absl/time/time.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// -----------------------------------------------------------------------------
@@ -90,14 +90,14 @@ class Notification {
// Blocks until either the notification's "notified" state is `true` (which
// may occur immediately) or the timeout has elapsed, returning the value of
// its "notified" state in either case.
- bool WaitForNotificationWithTimeout(y_absl::Duration timeout) const;
+ bool WaitForNotificationWithTimeout(y_absl::Duration timeout) const;
// Notification::WaitForNotificationWithDeadline()
//
// Blocks until either the notification's "notified" state is `true` (which
// may occur immediately) or the deadline has expired, returning the value of
// its "notified" state in either case.
- bool WaitForNotificationWithDeadline(y_absl::Time deadline) const;
+ bool WaitForNotificationWithDeadline(y_absl::Time deadline) const;
// Notification::Notify()
//
@@ -118,6 +118,6 @@ class Notification {
};
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_SYNCHRONIZATION_NOTIFICATION_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/ya.make b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/ya.make
index 0d62753029..860fd01b0f 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/ya.make
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/ya.make
@@ -12,23 +12,23 @@ LICENSE(Apache-2.0)
LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
PEERDIR(
- contrib/restricted/abseil-cpp-tstring/y_absl/base
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/low_level_alloc
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/throw_delegate
- contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
- contrib/restricted/abseil-cpp-tstring/y_absl/debugging
- contrib/restricted/abseil-cpp-tstring/y_absl/debugging/stacktrace
- contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize
- contrib/restricted/abseil-cpp-tstring/y_absl/demangle
- contrib/restricted/abseil-cpp-tstring/y_absl/numeric
- contrib/restricted/abseil-cpp-tstring/y_absl/strings
+ contrib/restricted/abseil-cpp-tstring/y_absl/base
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/low_level_alloc
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/throw_delegate
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
+ contrib/restricted/abseil-cpp-tstring/y_absl/debugging
+ contrib/restricted/abseil-cpp-tstring/y_absl/debugging/stacktrace
+ contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize
+ contrib/restricted/abseil-cpp-tstring/y_absl/demangle
+ contrib/restricted/abseil-cpp-tstring/y_absl/numeric
+ contrib/restricted/abseil-cpp-tstring/y_absl/strings
contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/absl_strings_internal
- contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal
- contrib/restricted/abseil-cpp-tstring/y_absl/time
- contrib/restricted/abseil-cpp-tstring/y_absl/time/civil_time
- contrib/restricted/abseil-cpp-tstring/y_absl/time/time_zone
+ contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal
+ contrib/restricted/abseil-cpp-tstring/y_absl/time
+ contrib/restricted/abseil-cpp-tstring/y_absl/time/civil_time
+ contrib/restricted/abseil-cpp-tstring/y_absl/time/time_zone
)
ADDINCL(
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/civil_time.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/time/civil_time.cc
index 8ebe6264d9..f24bac91e8 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/civil_time.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/civil_time.cc
@@ -12,29 +12,29 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/time/civil_time.h"
+#include "y_absl/time/civil_time.h"
#include <cstdlib>
#include <util/generic/string.h>
-#include "y_absl/strings/str_cat.h"
-#include "y_absl/time/time.h"
+#include "y_absl/strings/str_cat.h"
+#include "y_absl/time/time.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace {
-// Since a civil time has a larger year range than y_absl::Time (64-bit years vs
+// Since a civil time has a larger year range than y_absl::Time (64-bit years vs
// 64-bit seconds, respectively) we normalize years to roughly +/- 400 years
// around the year 2400, which will produce an equivalent year in a range that
-// y_absl::Time can handle.
+// y_absl::Time can handle.
inline civil_year_t NormalizeYear(civil_year_t year) {
return 2400 + year % 400;
}
// Formats the given CivilSecond according to the given format.
-TString FormatYearAnd(string_view fmt, CivilSecond cs) {
+TString FormatYearAnd(string_view fmt, CivilSecond cs) {
const CivilSecond ncs(NormalizeYear(cs.year()), cs.month(), cs.day(),
cs.hour(), cs.minute(), cs.second());
const TimeZone utc = UTCTimeZone();
@@ -43,17 +43,17 @@ TString FormatYearAnd(string_view fmt, CivilSecond cs) {
template <typename CivilT>
bool ParseYearAnd(string_view fmt, string_view s, CivilT* c) {
- // Civil times support a larger year range than y_absl::Time, so we need to
- // parse the year separately, normalize it, then use y_absl::ParseTime on the
+ // Civil times support a larger year range than y_absl::Time, so we need to
+ // parse the year separately, normalize it, then use y_absl::ParseTime on the
// normalized string.
- const TString ss = TString(s); // TODO(y_absl-team): Avoid conversion.
+ const TString ss = TString(s); // TODO(y_absl-team): Avoid conversion.
const char* const np = ss.c_str();
char* endp;
errno = 0;
const civil_year_t y =
std::strtoll(np, &endp, 10); // NOLINT(runtime/deprecated_fn)
if (endp == np || errno == ERANGE) return false;
- const TString norm = StrCat(NormalizeYear(y), endp);
+ const TString norm = StrCat(NormalizeYear(y), endp);
const TimeZone utc = UTCTimeZone();
Time t;
@@ -95,18 +95,18 @@ bool ParseLenient(string_view s, CivilT* c) {
}
} // namespace
-TString FormatCivilTime(CivilSecond c) {
+TString FormatCivilTime(CivilSecond c) {
return FormatYearAnd("-%m-%d%ET%H:%M:%S", c);
}
-TString FormatCivilTime(CivilMinute c) {
+TString FormatCivilTime(CivilMinute c) {
return FormatYearAnd("-%m-%d%ET%H:%M", c);
}
-TString FormatCivilTime(CivilHour c) {
+TString FormatCivilTime(CivilHour c) {
return FormatYearAnd("-%m-%d%ET%H", c);
}
-TString FormatCivilTime(CivilDay c) { return FormatYearAnd("-%m-%d", c); }
-TString FormatCivilTime(CivilMonth c) { return FormatYearAnd("-%m", c); }
-TString FormatCivilTime(CivilYear c) { return FormatYearAnd("", c); }
+TString FormatCivilTime(CivilDay c) { return FormatYearAnd("-%m-%d", c); }
+TString FormatCivilTime(CivilMonth c) { return FormatYearAnd("-%m", c); }
+TString FormatCivilTime(CivilYear c) { return FormatYearAnd("", c); }
bool ParseCivilTime(string_view s, CivilSecond* c) {
return ParseYearAnd("-%m-%d%ET%H:%M:%S", s, c);
@@ -170,4 +170,4 @@ std::ostream& operator<<(std::ostream& os, CivilSecond s) {
} // namespace time_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/civil_time.h b/contrib/restricted/abseil-cpp-tstring/y_absl/time/civil_time.h
index df6b4381b3..64fb6da494 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/civil_time.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/civil_time.h
@@ -20,7 +20,7 @@
// The term "civil time" refers to the legally recognized human-scale time
// that is represented by the six fields `YYYY-MM-DD hh:mm:ss`. A "date"
// is perhaps the most common example of a civil time (represented here as
-// an `y_absl::CivilDay`).
+// an `y_absl::CivilDay`).
//
// Modern-day civil time follows the Gregorian Calendar and is a
// time-zone-independent concept: a civil time of "2015-06-01 12:00:00", for
@@ -45,37 +45,37 @@
// arithmetic on civil-time objects, while avoiding complications like
// daylight-saving time (DST):
//
-// * `y_absl::CivilSecond`
-// * `y_absl::CivilMinute`
-// * `y_absl::CivilHour`
-// * `y_absl::CivilDay`
-// * `y_absl::CivilMonth`
-// * `y_absl::CivilYear`
+// * `y_absl::CivilSecond`
+// * `y_absl::CivilMinute`
+// * `y_absl::CivilHour`
+// * `y_absl::CivilDay`
+// * `y_absl::CivilMonth`
+// * `y_absl::CivilYear`
//
// Example:
//
// // Construct a civil-time object for a specific day
-// const y_absl::CivilDay cd(1969, 07, 20);
+// const y_absl::CivilDay cd(1969, 07, 20);
//
// // Construct a civil-time object for a specific second
-// const y_absl::CivilSecond cd(2018, 8, 1, 12, 0, 1);
+// const y_absl::CivilSecond cd(2018, 8, 1, 12, 0, 1);
//
// Note: In C++14 and later, this library is usable in a constexpr context.
//
// Example:
//
// // Valid in C++14
-// constexpr y_absl::CivilDay cd(1969, 07, 20);
+// constexpr y_absl::CivilDay cd(1969, 07, 20);
#ifndef ABSL_TIME_CIVIL_TIME_H_
#define ABSL_TIME_CIVIL_TIME_H_
#include <util/generic/string.h>
-#include "y_absl/strings/string_view.h"
-#include "y_absl/time/internal/cctz/include/cctz/civil_time.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/time/internal/cctz/include/cctz/civil_time.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace time_internal {
@@ -108,24 +108,24 @@ struct year_tag : month_tag, cctz::detail::year_tag {};
//
// Examples:
//
-// y_absl::CivilDay default_value; // 1970-01-01 00:00:00
+// y_absl::CivilDay default_value; // 1970-01-01 00:00:00
//
-// y_absl::CivilDay a(2015, 2, 3); // 2015-02-03 00:00:00
-// y_absl::CivilDay b(2015, 2, 3, 4, 5, 6); // 2015-02-03 00:00:00
-// y_absl::CivilDay c(2015); // 2015-01-01 00:00:00
+// y_absl::CivilDay a(2015, 2, 3); // 2015-02-03 00:00:00
+// y_absl::CivilDay b(2015, 2, 3, 4, 5, 6); // 2015-02-03 00:00:00
+// y_absl::CivilDay c(2015); // 2015-01-01 00:00:00
//
-// y_absl::CivilSecond ss(2015, 2, 3, 4, 5, 6); // 2015-02-03 04:05:06
-// y_absl::CivilMinute mm(ss); // 2015-02-03 04:05:00
-// y_absl::CivilHour hh(mm); // 2015-02-03 04:00:00
-// y_absl::CivilDay d(hh); // 2015-02-03 00:00:00
-// y_absl::CivilMonth m(d); // 2015-02-01 00:00:00
-// y_absl::CivilYear y(m); // 2015-01-01 00:00:00
+// y_absl::CivilSecond ss(2015, 2, 3, 4, 5, 6); // 2015-02-03 04:05:06
+// y_absl::CivilMinute mm(ss); // 2015-02-03 04:05:00
+// y_absl::CivilHour hh(mm); // 2015-02-03 04:00:00
+// y_absl::CivilDay d(hh); // 2015-02-03 00:00:00
+// y_absl::CivilMonth m(d); // 2015-02-01 00:00:00
+// y_absl::CivilYear y(m); // 2015-01-01 00:00:00
//
-// m = y_absl::CivilMonth(y); // 2015-01-01 00:00:00
-// d = y_absl::CivilDay(m); // 2015-01-01 00:00:00
-// hh = y_absl::CivilHour(d); // 2015-01-01 00:00:00
-// mm = y_absl::CivilMinute(hh); // 2015-01-01 00:00:00
-// ss = y_absl::CivilSecond(mm); // 2015-01-01 00:00:00
+// m = y_absl::CivilMonth(y); // 2015-01-01 00:00:00
+// d = y_absl::CivilDay(m); // 2015-01-01 00:00:00
+// hh = y_absl::CivilHour(d); // 2015-01-01 00:00:00
+// mm = y_absl::CivilMinute(hh); // 2015-01-01 00:00:00
+// ss = y_absl::CivilSecond(mm); // 2015-01-01 00:00:00
//
// Each civil-time class is aligned to the civil-time field indicated in the
// class's name after normalization. Alignment is performed by setting all the
@@ -135,20 +135,20 @@ struct year_tag : month_tag, cctz::detail::year_tag {};
// string format used here is not important; it's just a shorthand way of
// showing the six YMDHMS fields.)
//
-// y_absl::CivilSecond : 2015-11-22 12:34:56
-// y_absl::CivilMinute : 2015-11-22 12:34:00
-// y_absl::CivilHour : 2015-11-22 12:00:00
-// y_absl::CivilDay : 2015-11-22 00:00:00
-// y_absl::CivilMonth : 2015-11-01 00:00:00
-// y_absl::CivilYear : 2015-01-01 00:00:00
+// y_absl::CivilSecond : 2015-11-22 12:34:56
+// y_absl::CivilMinute : 2015-11-22 12:34:00
+// y_absl::CivilHour : 2015-11-22 12:00:00
+// y_absl::CivilDay : 2015-11-22 00:00:00
+// y_absl::CivilMonth : 2015-11-01 00:00:00
+// y_absl::CivilYear : 2015-01-01 00:00:00
//
// Each civil-time type performs arithmetic on the field to which it is
-// aligned. This means that adding 1 to an y_absl::CivilDay increments the day
-// field (normalizing as necessary), and subtracting 7 from an y_absl::CivilMonth
+// aligned. This means that adding 1 to an y_absl::CivilDay increments the day
+// field (normalizing as necessary), and subtracting 7 from an y_absl::CivilMonth
// operates on the month field (normalizing as necessary). All arithmetic
// produces a valid civil time. Difference requires two similarly aligned
// civil-time objects and returns the scalar answer in units of the objects'
-// alignment. For example, the difference between two y_absl::CivilHour objects
+// alignment. For example, the difference between two y_absl::CivilHour objects
// will give an answer in units of civil hours.
//
// ALIGNMENT CONVERSION
@@ -156,24 +156,24 @@ struct year_tag : month_tag, cctz::detail::year_tag {};
// The alignment of a civil-time object cannot change, but the object may be
// used to construct a new object with a different alignment. This is referred
// to as "realigning". When realigning to a type with the same or more
-// precision (e.g., y_absl::CivilDay -> y_absl::CivilSecond), the conversion may be
+// precision (e.g., y_absl::CivilDay -> y_absl::CivilSecond), the conversion may be
// performed implicitly since no information is lost. However, if information
// could be discarded (e.g., CivilSecond -> CivilDay), the conversion must
// be explicit at the call site.
//
// Examples:
//
-// void UseDay(y_absl::CivilDay day);
+// void UseDay(y_absl::CivilDay day);
//
-// y_absl::CivilSecond cs;
+// y_absl::CivilSecond cs;
// UseDay(cs); // Won't compile because data may be discarded
-// UseDay(y_absl::CivilDay(cs)); // OK: explicit conversion
+// UseDay(y_absl::CivilDay(cs)); // OK: explicit conversion
//
-// y_absl::CivilDay cd;
+// y_absl::CivilDay cd;
// UseDay(cd); // OK: no conversion needed
//
-// y_absl::CivilMonth cm;
-// UseDay(cm); // OK: implicit conversion to y_absl::CivilDay
+// y_absl::CivilMonth cm;
+// UseDay(cm); // OK: implicit conversion to y_absl::CivilDay
//
// NORMALIZATION
//
@@ -187,11 +187,11 @@ struct year_tag : month_tag, cctz::detail::year_tag {};
// Examples:
//
// // Out-of-range; normalized to 2016-11-01
-// y_absl::CivilDay d(2016, 10, 32);
+// y_absl::CivilDay d(2016, 10, 32);
// // Out-of-range, negative: normalized to 2016-10-30T23
-// y_absl::CivilHour h1(2016, 10, 31, -1);
+// y_absl::CivilHour h1(2016, 10, 31, -1);
// // Normalization is cumulative: normalized to 2016-10-30T23
-// y_absl::CivilHour h2(2016, 10, 32, -25);
+// y_absl::CivilHour h2(2016, 10, 32, -25);
//
// Note: If normalization is undesired, you can signal an error by comparing
// the constructor arguments to the normalized values returned by the YMDHMS
@@ -205,17 +205,17 @@ struct year_tag : month_tag, cctz::detail::year_tag {};
//
// Examples:
//
-// y_absl::CivilDay feb_3(2015, 2, 3); // 2015-02-03 00:00:00
-// y_absl::CivilDay mar_4(2015, 3, 4); // 2015-03-04 00:00:00
+// y_absl::CivilDay feb_3(2015, 2, 3); // 2015-02-03 00:00:00
+// y_absl::CivilDay mar_4(2015, 3, 4); // 2015-03-04 00:00:00
// // feb_3 < mar_4
-// // y_absl::CivilYear(feb_3) == y_absl::CivilYear(mar_4)
+// // y_absl::CivilYear(feb_3) == y_absl::CivilYear(mar_4)
//
-// y_absl::CivilSecond feb_3_noon(2015, 2, 3, 12, 0, 0); // 2015-02-03 12:00:00
+// y_absl::CivilSecond feb_3_noon(2015, 2, 3, 12, 0, 0); // 2015-02-03 12:00:00
// // feb_3 < feb_3_noon
-// // feb_3 == y_absl::CivilDay(feb_3_noon)
+// // feb_3 == y_absl::CivilDay(feb_3_noon)
//
// // Iterates all the days of February 2015.
-// for (y_absl::CivilDay d(2015, 2, 1); d < y_absl::CivilMonth(2015, 3); ++d) {
+// for (y_absl::CivilDay d(2015, 2, 1); d < y_absl::CivilMonth(2015, 3); ++d) {
// // ...
// }
//
@@ -228,13 +228,13 @@ struct year_tag : month_tag, cctz::detail::year_tag {};
//
// Example:
//
-// y_absl::CivilDay a(2015, 2, 3);
+// y_absl::CivilDay a(2015, 2, 3);
// ++a; // 2015-02-04 00:00:00
// --a; // 2015-02-03 00:00:00
-// y_absl::CivilDay b = a + 1; // 2015-02-04 00:00:00
-// y_absl::CivilDay c = 1 + b; // 2015-02-05 00:00:00
+// y_absl::CivilDay b = a + 1; // 2015-02-04 00:00:00
+// y_absl::CivilDay c = 1 + b; // 2015-02-05 00:00:00
// int n = c - a; // n = 2 (civil days)
-// int m = c - y_absl::CivilMonth(c); // Won't compile: different types.
+// int m = c - y_absl::CivilMonth(c); // Won't compile: different types.
//
// ACCESSORS
//
@@ -253,7 +253,7 @@ struct year_tag : month_tag, cctz::detail::year_tag {};
//
// Example:
//
-// y_absl::CivilDay d(2015, 6, 28);
+// y_absl::CivilDay d(2015, 6, 28);
// // d.year() == 2015
// // d.month() == 6
// // d.day() == 28
@@ -300,23 +300,23 @@ struct year_tag : month_tag, cctz::detail::year_tag {};
//
// Example:
//
-// const y_absl::CivilDay d(2015, 1, 31);
+// const y_absl::CivilDay d(2015, 1, 31);
//
// // Answer 1:
// // Add 1 to the month field in the constructor, and rely on normalization.
-// const auto normalized = y_absl::CivilDay(d.year(), d.month() + 1, d.day());
+// const auto normalized = y_absl::CivilDay(d.year(), d.month() + 1, d.day());
// // normalized == 2015-03-03 (aka Feb 31)
//
// // Answer 2:
// // Add 1 to month field, capping to the end of next month.
-// const auto next_month = y_absl::CivilMonth(d) + 1;
-// const auto last_day_of_next_month = y_absl::CivilDay(next_month + 1) - 1;
+// const auto next_month = y_absl::CivilMonth(d) + 1;
+// const auto last_day_of_next_month = y_absl::CivilDay(next_month + 1) - 1;
// const auto capped = std::min(normalized, last_day_of_next_month);
// // capped == 2015-02-28
//
// // Answer 3:
// // Signal an error if the normalized answer is not in next month.
-// if (y_absl::CivilMonth(normalized) != next_month) {
+// if (y_absl::CivilMonth(normalized) != next_month) {
// // error, month overflow
// }
//
@@ -340,9 +340,9 @@ using CivilYear =
//
// Example:
//
-// y_absl::CivilSecond cs = ...;
-// y_absl::civil_year_t y = cs.year();
-// cs = y_absl::CivilSecond(y, 1, 1, 0, 0, 0); // CivilSecond(CivilYear(cs))
+// y_absl::CivilSecond cs = ...;
+// y_absl::civil_year_t y = cs.year();
+// cs = y_absl::CivilSecond(y, 1, 1, 0, 0, 0); // CivilSecond(CivilYear(cs))
//
using civil_year_t = time_internal::cctz::year_t;
@@ -355,7 +355,7 @@ using civil_year_t = time_internal::cctz::year_t;
//
// Example:
//
-// y_absl::civil_diff_t n_sec = cs1 - cs2; // cs1 == cs2 + n_sec;
+// y_absl::civil_diff_t n_sec = cs1 - cs2; // cs1 == cs2 + n_sec;
//
using civil_diff_t = time_internal::cctz::diff_t;
@@ -365,18 +365,18 @@ using civil_diff_t = time_internal::cctz::diff_t;
// The Weekday enum class represents the civil-time concept of a "weekday" with
// members for all days of the week.
//
-// y_absl::Weekday wd = y_absl::Weekday::thursday;
+// y_absl::Weekday wd = y_absl::Weekday::thursday;
//
using Weekday = time_internal::cctz::weekday;
// GetWeekday()
//
-// Returns the y_absl::Weekday for the given (realigned) civil-time value.
+// Returns the y_absl::Weekday for the given (realigned) civil-time value.
//
// Example:
//
-// y_absl::CivilDay a(2015, 8, 13);
-// y_absl::Weekday wd = y_absl::GetWeekday(a); // wd == y_absl::Weekday::thursday
+// y_absl::CivilDay a(2015, 8, 13);
+// y_absl::Weekday wd = y_absl::GetWeekday(a); // wd == y_absl::Weekday::thursday
//
inline Weekday GetWeekday(CivilSecond cs) {
return time_internal::cctz::get_weekday(cs);
@@ -385,8 +385,8 @@ inline Weekday GetWeekday(CivilSecond cs) {
// NextWeekday()
// PrevWeekday()
//
-// Returns the y_absl::CivilDay that strictly follows or precedes a given
-// y_absl::CivilDay, and that falls on the given y_absl::Weekday.
+// Returns the y_absl::CivilDay that strictly follows or precedes a given
+// y_absl::CivilDay, and that falls on the given y_absl::Weekday.
//
// Example, given the following month:
//
@@ -399,18 +399,18 @@ inline Weekday GetWeekday(CivilSecond cs) {
// 23 24 25 26 27 28 29
// 30 31
//
-// y_absl::CivilDay a(2015, 8, 13);
-// // y_absl::GetWeekday(a) == y_absl::Weekday::thursday
-// y_absl::CivilDay b = y_absl::NextWeekday(a, y_absl::Weekday::thursday);
+// y_absl::CivilDay a(2015, 8, 13);
+// // y_absl::GetWeekday(a) == y_absl::Weekday::thursday
+// y_absl::CivilDay b = y_absl::NextWeekday(a, y_absl::Weekday::thursday);
// // b = 2015-08-20
-// y_absl::CivilDay c = y_absl::PrevWeekday(a, y_absl::Weekday::thursday);
+// y_absl::CivilDay c = y_absl::PrevWeekday(a, y_absl::Weekday::thursday);
// // c = 2015-08-06
//
-// y_absl::CivilDay d = ...
+// y_absl::CivilDay d = ...
// // Gets the following Thursday if d is not already Thursday
-// y_absl::CivilDay thurs1 = y_absl::NextWeekday(d - 1, y_absl::Weekday::thursday);
+// y_absl::CivilDay thurs1 = y_absl::NextWeekday(d - 1, y_absl::Weekday::thursday);
// // Gets the previous Thursday if d is not already Thursday
-// y_absl::CivilDay thurs2 = y_absl::PrevWeekday(d + 1, y_absl::Weekday::thursday);
+// y_absl::CivilDay thurs2 = y_absl::PrevWeekday(d + 1, y_absl::Weekday::thursday);
//
inline CivilDay NextWeekday(CivilDay cd, Weekday wd) {
return CivilDay(time_internal::cctz::next_weekday(cd, wd));
@@ -425,10 +425,10 @@ inline CivilDay PrevWeekday(CivilDay cd, Weekday wd) {
//
// Example:
//
-// y_absl::CivilDay a(2015, 1, 1);
-// int yd_jan_1 = y_absl::GetYearDay(a); // yd_jan_1 = 1
-// y_absl::CivilDay b(2015, 12, 31);
-// int yd_dec_31 = y_absl::GetYearDay(b); // yd_dec_31 = 365
+// y_absl::CivilDay a(2015, 1, 1);
+// int yd_jan_1 = y_absl::GetYearDay(a); // yd_jan_1 = 1
+// y_absl::CivilDay b(2015, 12, 31);
+// int yd_dec_31 = y_absl::GetYearDay(b); // yd_dec_31 = 365
//
inline int GetYearDay(CivilSecond cs) {
return time_internal::cctz::get_yearday(cs);
@@ -450,19 +450,19 @@ inline int GetYearDay(CivilSecond cs) {
//
// Example:
//
-// y_absl::CivilDay d = y_absl::CivilDay(1969, 7, 20);
-// TString day_string = y_absl::FormatCivilTime(d); // "1969-07-20"
+// y_absl::CivilDay d = y_absl::CivilDay(1969, 7, 20);
+// TString day_string = y_absl::FormatCivilTime(d); // "1969-07-20"
//
-TString FormatCivilTime(CivilSecond c);
-TString FormatCivilTime(CivilMinute c);
-TString FormatCivilTime(CivilHour c);
-TString FormatCivilTime(CivilDay c);
-TString FormatCivilTime(CivilMonth c);
-TString FormatCivilTime(CivilYear c);
+TString FormatCivilTime(CivilSecond c);
+TString FormatCivilTime(CivilMinute c);
+TString FormatCivilTime(CivilHour c);
+TString FormatCivilTime(CivilDay c);
+TString FormatCivilTime(CivilMonth c);
+TString FormatCivilTime(CivilYear c);
-// y_absl::ParseCivilTime()
+// y_absl::ParseCivilTime()
//
-// Parses a civil-time value from the specified `y_absl::string_view` into the
+// Parses a civil-time value from the specified `y_absl::string_view` into the
// passed output parameter. Returns `true` upon successful parsing.
//
// The expected form of the input string is as follows:
@@ -478,38 +478,38 @@ TString FormatCivilTime(CivilYear c);
//
// Example:
//
-// y_absl::CivilDay d;
-// bool ok = y_absl::ParseCivilTime("2018-01-02", &d); // OK
+// y_absl::CivilDay d;
+// bool ok = y_absl::ParseCivilTime("2018-01-02", &d); // OK
//
// Note that parsing will fail if the string's format does not match the
// expected type exactly. `ParseLenientCivilTime()` below is more lenient.
//
-bool ParseCivilTime(y_absl::string_view s, CivilSecond* c);
-bool ParseCivilTime(y_absl::string_view s, CivilMinute* c);
-bool ParseCivilTime(y_absl::string_view s, CivilHour* c);
-bool ParseCivilTime(y_absl::string_view s, CivilDay* c);
-bool ParseCivilTime(y_absl::string_view s, CivilMonth* c);
-bool ParseCivilTime(y_absl::string_view s, CivilYear* c);
+bool ParseCivilTime(y_absl::string_view s, CivilSecond* c);
+bool ParseCivilTime(y_absl::string_view s, CivilMinute* c);
+bool ParseCivilTime(y_absl::string_view s, CivilHour* c);
+bool ParseCivilTime(y_absl::string_view s, CivilDay* c);
+bool ParseCivilTime(y_absl::string_view s, CivilMonth* c);
+bool ParseCivilTime(y_absl::string_view s, CivilYear* c);
// ParseLenientCivilTime()
//
-// Parses any of the formats accepted by `y_absl::ParseCivilTime()`, but is more
+// Parses any of the formats accepted by `y_absl::ParseCivilTime()`, but is more
// lenient if the format of the string does not exactly match the associated
// type.
//
// Example:
//
-// y_absl::CivilDay d;
-// bool ok = y_absl::ParseLenientCivilTime("1969-07-20", &d); // OK
-// ok = y_absl::ParseLenientCivilTime("1969-07-20T10", &d); // OK: T10 floored
-// ok = y_absl::ParseLenientCivilTime("1969-07", &d); // OK: day defaults to 1
-//
-bool ParseLenientCivilTime(y_absl::string_view s, CivilSecond* c);
-bool ParseLenientCivilTime(y_absl::string_view s, CivilMinute* c);
-bool ParseLenientCivilTime(y_absl::string_view s, CivilHour* c);
-bool ParseLenientCivilTime(y_absl::string_view s, CivilDay* c);
-bool ParseLenientCivilTime(y_absl::string_view s, CivilMonth* c);
-bool ParseLenientCivilTime(y_absl::string_view s, CivilYear* c);
+// y_absl::CivilDay d;
+// bool ok = y_absl::ParseLenientCivilTime("1969-07-20", &d); // OK
+// ok = y_absl::ParseLenientCivilTime("1969-07-20T10", &d); // OK: T10 floored
+// ok = y_absl::ParseLenientCivilTime("1969-07", &d); // OK: day defaults to 1
+//
+bool ParseLenientCivilTime(y_absl::string_view s, CivilSecond* c);
+bool ParseLenientCivilTime(y_absl::string_view s, CivilMinute* c);
+bool ParseLenientCivilTime(y_absl::string_view s, CivilHour* c);
+bool ParseLenientCivilTime(y_absl::string_view s, CivilDay* c);
+bool ParseLenientCivilTime(y_absl::string_view s, CivilMonth* c);
+bool ParseLenientCivilTime(y_absl::string_view s, CivilYear* c);
namespace time_internal { // For functions found via ADL on civil-time tags.
@@ -520,7 +520,7 @@ namespace time_internal { // For functions found via ADL on civil-time tags.
//
// Example:
//
-// y_absl::CivilDay d = y_absl::CivilDay(1969, 7, 20);
+// y_absl::CivilDay d = y_absl::CivilDay(1969, 7, 20);
// std::cout << "Date is: " << d << "\n";
//
std::ostream& operator<<(std::ostream& os, CivilYear y);
@@ -533,6 +533,6 @@ std::ostream& operator<<(std::ostream& os, CivilSecond s);
} // namespace time_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_TIME_CIVIL_TIME_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/civil_time/ya.make b/contrib/restricted/abseil-cpp-tstring/y_absl/time/civil_time/ya.make
index 53f09bb8c4..919773f619 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/civil_time/ya.make
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/civil_time/ya.make
@@ -17,7 +17,7 @@ ADDINCL(
NO_COMPILER_WARNINGS()
-SRCDIR(contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src)
+SRCDIR(contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src)
SRCS(
civil_time_detail.cc
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/clock.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/time/clock.cc
index 0a309960f4..dcc12b5633 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/clock.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/clock.cc
@@ -12,9 +12,9 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/time/clock.h"
+#include "y_absl/time/clock.h"
-#include "y_absl/base/attributes.h"
+#include "y_absl/base/attributes.h"
#include "y_absl/base/optimization.h"
#ifdef _WIN32
@@ -28,25 +28,25 @@
#include <ctime>
#include <limits>
-#include "y_absl/base/internal/spinlock.h"
-#include "y_absl/base/internal/unscaledcycleclock.h"
-#include "y_absl/base/macros.h"
-#include "y_absl/base/port.h"
-#include "y_absl/base/thread_annotations.h"
+#include "y_absl/base/internal/spinlock.h"
+#include "y_absl/base/internal/unscaledcycleclock.h"
+#include "y_absl/base/macros.h"
+#include "y_absl/base/port.h"
+#include "y_absl/base/thread_annotations.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
Time Now() {
// TODO(bww): Get a timespec instead so we don't have to divide.
- int64_t n = y_absl::GetCurrentTimeNanos();
+ int64_t n = y_absl::GetCurrentTimeNanos();
if (n >= 0) {
return time_internal::FromUnixDuration(
time_internal::MakeDuration(n / 1000000000, n % 1000000000 * 4));
}
- return time_internal::FromUnixDuration(y_absl::Nanoseconds(n));
+ return time_internal::FromUnixDuration(y_absl::Nanoseconds(n));
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
// Decide if we should use the fast GetCurrentTimeNanos() algorithm
// based on the cyclecounter, otherwise just get the time directly
@@ -61,32 +61,32 @@ ABSL_NAMESPACE_END
#endif
#if defined(__APPLE__) || defined(_WIN32)
-#include "y_absl/time/internal/get_current_time_chrono.inc"
+#include "y_absl/time/internal/get_current_time_chrono.inc"
#else
-#include "y_absl/time/internal/get_current_time_posix.inc"
+#include "y_absl/time/internal/get_current_time_posix.inc"
#endif
// Allows override by test.
#ifndef GET_CURRENT_TIME_NANOS_FROM_SYSTEM
#define GET_CURRENT_TIME_NANOS_FROM_SYSTEM() \
- ::y_absl::time_internal::GetCurrentTimeNanosFromSystem()
+ ::y_absl::time_internal::GetCurrentTimeNanosFromSystem()
#endif
#if !ABSL_USE_CYCLECLOCK_FOR_GET_CURRENT_TIME_NANOS
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
int64_t GetCurrentTimeNanos() { return GET_CURRENT_TIME_NANOS_FROM_SYSTEM(); }
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#else // Use the cyclecounter-based implementation below.
// Allows override by test.
#ifndef GET_CURRENT_TIME_NANOS_CYCLECLOCK_NOW
#define GET_CURRENT_TIME_NANOS_CYCLECLOCK_NOW() \
- ::y_absl::time_internal::UnscaledCycleClockWrapperForGetCurrentTime::Now()
+ ::y_absl::time_internal::UnscaledCycleClockWrapperForGetCurrentTime::Now()
#endif
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace time_internal {
// This is a friend wrapper around UnscaledCycleClock::Now()
@@ -392,7 +392,7 @@ static uint64_t UpdateLastSample(
// into the fast path. That causes lots of register spills and reloads that
// are unnecessary unless the slow path is taken.
//
-// TODO(y_absl-team): Remove this attribute when our compiler is smart enough
+// TODO(y_absl-team): Remove this attribute when our compiler is smart enough
// to do the right thing.
ABSL_ATTRIBUTE_NOINLINE
static int64_t GetCurrentTimeNanosSlowPath()
@@ -536,31 +536,31 @@ static uint64_t UpdateLastSample(uint64_t now_cycles, uint64_t now_ns,
return estimated_base_ns;
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_USE_CYCLECLOCK_FOR_GET_CURRENT_TIME_NANOS
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace {
// Returns the maximum duration that SleepOnce() can sleep for.
-constexpr y_absl::Duration MaxSleep() {
+constexpr y_absl::Duration MaxSleep() {
#ifdef _WIN32
// Windows Sleep() takes unsigned long argument in milliseconds.
- return y_absl::Milliseconds(
+ return y_absl::Milliseconds(
std::numeric_limits<unsigned long>::max()); // NOLINT(runtime/int)
#else
- return y_absl::Seconds(std::numeric_limits<time_t>::max());
+ return y_absl::Seconds(std::numeric_limits<time_t>::max());
#endif
}
// Sleeps for the given duration.
// REQUIRES: to_sleep <= MaxSleep().
-void SleepOnce(y_absl::Duration to_sleep) {
+void SleepOnce(y_absl::Duration to_sleep) {
#ifdef _WIN32
- Sleep(to_sleep / y_absl::Milliseconds(1));
+ Sleep(to_sleep / y_absl::Milliseconds(1));
#else
- struct timespec sleep_time = y_absl::ToTimespec(to_sleep);
+ struct timespec sleep_time = y_absl::ToTimespec(to_sleep);
while (nanosleep(&sleep_time, &sleep_time) != 0 && errno == EINTR) {
// Ignore signals and wait for the full interval to elapse.
}
@@ -569,15 +569,15 @@ void SleepOnce(y_absl::Duration to_sleep) {
} // namespace
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
extern "C" {
ABSL_ATTRIBUTE_WEAK void ABSL_INTERNAL_C_SYMBOL(AbslInternalSleepFor)(
y_absl::Duration duration) {
- while (duration > y_absl::ZeroDuration()) {
- y_absl::Duration to_sleep = std::min(duration, y_absl::MaxSleep());
- y_absl::SleepOnce(to_sleep);
+ while (duration > y_absl::ZeroDuration()) {
+ y_absl::Duration to_sleep = std::min(duration, y_absl::MaxSleep());
+ y_absl::SleepOnce(to_sleep);
duration -= to_sleep;
}
}
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/clock.h b/contrib/restricted/abseil-cpp-tstring/y_absl/time/clock.h
index 7967899b4e..178b96d828 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/clock.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/clock.h
@@ -22,36 +22,36 @@
#ifndef ABSL_TIME_CLOCK_H_
#define ABSL_TIME_CLOCK_H_
-#include "y_absl/base/macros.h"
-#include "y_absl/time/time.h"
+#include "y_absl/base/macros.h"
+#include "y_absl/time/time.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// Now()
//
-// Returns the current time, expressed as an `y_absl::Time` absolute time value.
-y_absl::Time Now();
+// Returns the current time, expressed as an `y_absl::Time` absolute time value.
+y_absl::Time Now();
// GetCurrentTimeNanos()
//
// Returns the current time, expressed as a count of nanoseconds since the Unix
-// Epoch (https://en.wikipedia.org/wiki/Unix_time). Prefer `y_absl::Now()` instead
+// Epoch (https://en.wikipedia.org/wiki/Unix_time). Prefer `y_absl::Now()` instead
// for all but the most performance-sensitive cases (i.e. when you are calling
// this function hundreds of thousands of times per second).
int64_t GetCurrentTimeNanos();
// SleepFor()
//
-// Sleeps for the specified duration, expressed as an `y_absl::Duration`.
+// Sleeps for the specified duration, expressed as an `y_absl::Duration`.
//
// Notes:
// * Signal interruptions will not reduce the sleep duration.
// * Returns immediately when passed a nonpositive duration.
-void SleepFor(y_absl::Duration duration);
+void SleepFor(y_absl::Duration duration);
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
// -----------------------------------------------------------------------------
// Implementation Details
@@ -67,7 +67,7 @@ extern "C" {
void ABSL_INTERNAL_C_SYMBOL(AbslInternalSleepFor)(y_absl::Duration duration);
} // extern "C"
-inline void y_absl::SleepFor(y_absl::Duration duration) {
+inline void y_absl::SleepFor(y_absl::Duration duration) {
ABSL_INTERNAL_C_SYMBOL(AbslInternalSleepFor)(duration);
}
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/duration.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/time/duration.cc
index 5fad39923d..d4914556e6 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/duration.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/duration.cc
@@ -12,13 +12,13 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-// The implementation of the y_absl::Duration class, which is declared in
-// //y_absl/time.h. This class behaves like a numeric type; it has no public
+// The implementation of the y_absl::Duration class, which is declared in
+// //y_absl/time.h. This class behaves like a numeric type; it has no public
// methods and is used only through the operators defined here.
//
// Implementation notes:
//
-// An y_absl::Duration is represented as
+// An y_absl::Duration is represented as
//
// rep_hi_ : (int64_t) Whole seconds
// rep_lo_ : (uint32_t) Fractions of a second
@@ -66,14 +66,14 @@
#include <limits>
#include <util/generic/string.h>
-#include "y_absl/base/casts.h"
+#include "y_absl/base/casts.h"
#include "y_absl/base/macros.h"
-#include "y_absl/numeric/int128.h"
+#include "y_absl/numeric/int128.h"
#include "y_absl/strings/string_view.h"
#include "y_absl/strings/strip.h"
-#include "y_absl/time/time.h"
+#include "y_absl/time/time.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace {
@@ -189,9 +189,9 @@ inline Duration MakeDurationFromU128(uint128 u128, bool is_neg) {
// bits, and a two's complement representation." So, we can convert to
// and from the corresponding uint64_t value using a bit cast.
inline uint64_t EncodeTwosComp(int64_t v) {
- return y_absl::bit_cast<uint64_t>(v);
+ return y_absl::bit_cast<uint64_t>(v);
}
-inline int64_t DecodeTwosComp(uint64_t v) { return y_absl::bit_cast<int64_t>(v); }
+inline int64_t DecodeTwosComp(uint64_t v) { return y_absl::bit_cast<int64_t>(v); }
// Note: The overflow detection in this function is done using greater/less *or
// equal* because kint64max/min is too large to be represented exactly in a
@@ -508,12 +508,12 @@ Duration Trunc(Duration d, Duration unit) {
}
Duration Floor(const Duration d, const Duration unit) {
- const y_absl::Duration td = Trunc(d, unit);
+ const y_absl::Duration td = Trunc(d, unit);
return td <= d ? td : td - AbsDuration(unit);
}
Duration Ceil(const Duration d, const Duration unit) {
- const y_absl::Duration td = Trunc(d, unit);
+ const y_absl::Duration td = Trunc(d, unit);
return td >= d ? td : td + AbsDuration(unit);
}
@@ -723,7 +723,7 @@ ABSL_CONST_INIT const DisplayUnit kDisplayMin = {"m", -1, 0.0}; // prec ignored
ABSL_CONST_INIT const DisplayUnit kDisplayHour = {"h", -1,
0.0}; // prec ignored
-void AppendNumberUnit(TString* out, int64_t n, DisplayUnit unit) {
+void AppendNumberUnit(TString* out, int64_t n, DisplayUnit unit) {
char buf[sizeof("2562047788015216")]; // hours in max duration
char* const ep = buf + sizeof(buf);
char* bp = Format64(ep, 0, n);
@@ -735,7 +735,7 @@ void AppendNumberUnit(TString* out, int64_t n, DisplayUnit unit) {
// Note: unit.prec is limited to double's digits10 value (typically 15) so it
// always fits in buf[].
-void AppendNumberUnit(TString* out, double n, DisplayUnit unit) {
+void AppendNumberUnit(TString* out, double n, DisplayUnit unit) {
constexpr int kBufferSize = std::numeric_limits<double>::digits10;
const int prec = std::min(kBufferSize, unit.prec);
char buf[kBufferSize]; // also large enough to hold integer part
@@ -765,14 +765,14 @@ void AppendNumberUnit(TString* out, double n, DisplayUnit unit) {
// (milli-, micro-, or nanoseconds) to ensure that the leading digit
// is non-zero.
// Unlike Go, we format the zero duration as 0, with no unit.
-TString FormatDuration(Duration d) {
+TString FormatDuration(Duration d) {
const Duration min_duration = Seconds(kint64min);
if (d == min_duration) {
// Avoid needing to negate kint64min by directly returning what the
// following code should produce in that case.
return "-2562047788015215h30m8s";
}
- TString s;
+ TString s;
if (d < ZeroDuration()) {
s.append("-");
d = -d;
@@ -939,16 +939,16 @@ bool ParseDuration(y_absl::string_view dur_sv, Duration* d) {
return true;
}
-bool AbslParseFlag(y_absl::string_view text, Duration* dst, TString*) {
+bool AbslParseFlag(y_absl::string_view text, Duration* dst, TString*) {
return ParseDuration(text, dst);
}
-TString AbslUnparseFlag(Duration d) { return FormatDuration(d); }
-bool ParseFlag(const TString& text, Duration* dst, TString* ) {
+TString AbslUnparseFlag(Duration d) { return FormatDuration(d); }
+bool ParseFlag(const TString& text, Duration* dst, TString* ) {
return ParseDuration(text, dst);
}
-TString UnparseFlag(Duration d) { return FormatDuration(d); }
+TString UnparseFlag(Duration d) { return FormatDuration(d); }
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/format.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/time/format.cc
index 002e84c12e..c75e4ec21a 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/format.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/format.cc
@@ -19,12 +19,12 @@
#include "y_absl/strings/match.h"
#include "y_absl/strings/string_view.h"
-#include "y_absl/time/internal/cctz/include/cctz/time_zone.h"
-#include "y_absl/time/time.h"
+#include "y_absl/time/internal/cctz/include/cctz/time_zone.h"
+#include "y_absl/time/time.h"
-namespace cctz = y_absl::time_internal::cctz;
+namespace cctz = y_absl::time_internal::cctz;
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
ABSL_DLL extern const char RFC3339_full[] = "%Y-%m-%d%ET%H:%M:%E*S%Ez";
@@ -51,7 +51,7 @@ inline cctz::time_point<cctz::seconds> unix_epoch() {
// Splits a Time into seconds and femtoseconds, which can be used with CCTZ.
// Requires that 't' is finite. See duration.cc for details about rep_hi and
// rep_lo.
-cctz_parts Split(y_absl::Time t) {
+cctz_parts Split(y_absl::Time t) {
const auto d = time_internal::ToUnixDuration(t);
const int64_t rep_hi = time_internal::GetRepHi(d);
const int64_t rep_lo = time_internal::GetRepLo(d);
@@ -62,7 +62,7 @@ cctz_parts Split(y_absl::Time t) {
// Joins the given seconds and femtoseconds into a Time. See duration.cc for
// details about rep_hi and rep_lo.
-y_absl::Time Join(const cctz_parts& parts) {
+y_absl::Time Join(const cctz_parts& parts) {
const int64_t rep_hi = (parts.sec - unix_epoch()).count();
const uint32_t rep_lo = parts.fem.count() / (1000 * 1000 / 4);
const auto d = time_internal::MakeDuration(rep_hi, rep_lo);
@@ -72,7 +72,7 @@ y_absl::Time Join(const cctz_parts& parts) {
} // namespace
TString FormatTime(y_absl::string_view format, y_absl::Time t,
- y_absl::TimeZone tz) {
+ y_absl::TimeZone tz) {
if (t == y_absl::InfiniteFuture()) return TString(kInfiniteFutureStr);
if (t == y_absl::InfinitePast()) return TString(kInfinitePastStr);
const auto parts = Split(t);
@@ -80,23 +80,23 @@ TString FormatTime(y_absl::string_view format, y_absl::Time t,
cctz::time_zone(tz));
}
-TString FormatTime(y_absl::Time t, y_absl::TimeZone tz) {
+TString FormatTime(y_absl::Time t, y_absl::TimeZone tz) {
return FormatTime(RFC3339_full, t, tz);
}
-TString FormatTime(y_absl::Time t) {
- return y_absl::FormatTime(RFC3339_full, t, y_absl::LocalTimeZone());
+TString FormatTime(y_absl::Time t) {
+ return y_absl::FormatTime(RFC3339_full, t, y_absl::LocalTimeZone());
}
bool ParseTime(y_absl::string_view format, y_absl::string_view input,
- y_absl::Time* time, TString* err) {
- return y_absl::ParseTime(format, input, y_absl::UTCTimeZone(), time, err);
+ y_absl::Time* time, TString* err) {
+ return y_absl::ParseTime(format, input, y_absl::UTCTimeZone(), time, err);
}
// If the input string does not contain an explicit UTC offset, interpret
// the fields with respect to the given TimeZone.
bool ParseTime(y_absl::string_view format, y_absl::string_view input,
- y_absl::TimeZone tz, y_absl::Time* time, TString* err) {
+ y_absl::TimeZone tz, y_absl::Time* time, TString* err) {
auto strip_leading_space = [](y_absl::string_view* sv) {
while (!sv->empty()) {
if (!std::isspace(sv->front())) return;
@@ -127,7 +127,7 @@ bool ParseTime(y_absl::string_view format, y_absl::string_view input,
}
}
- TString error;
+ TString error;
cctz_parts parts;
const bool b =
cctz::detail::parse(TString(format), TString(input),
@@ -140,21 +140,21 @@ bool ParseTime(y_absl::string_view format, y_absl::string_view input,
return b;
}
-// Functions required to support y_absl::Time flags.
-bool AbslParseFlag(y_absl::string_view text, y_absl::Time* t, TString* error) {
+// Functions required to support y_absl::Time flags.
+bool AbslParseFlag(y_absl::string_view text, y_absl::Time* t, TString* error) {
return y_absl::ParseTime(RFC3339_full, text, y_absl::UTCTimeZone(), t, error);
}
-TString AbslUnparseFlag(y_absl::Time t) {
- return y_absl::FormatTime(RFC3339_full, t, y_absl::UTCTimeZone());
+TString AbslUnparseFlag(y_absl::Time t) {
+ return y_absl::FormatTime(RFC3339_full, t, y_absl::UTCTimeZone());
}
-bool ParseFlag(const TString& text, y_absl::Time* t, TString* error) {
- return y_absl::ParseTime(RFC3339_full, text, y_absl::UTCTimeZone(), t, error);
+bool ParseFlag(const TString& text, y_absl::Time* t, TString* error) {
+ return y_absl::ParseTime(RFC3339_full, text, y_absl::UTCTimeZone(), t, error);
}
-TString UnparseFlag(y_absl::Time t) {
- return y_absl::FormatTime(RFC3339_full, t, y_absl::UTCTimeZone());
+TString UnparseFlag(y_absl::Time t) {
+ return y_absl::FormatTime(RFC3339_full, t, y_absl::UTCTimeZone());
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/include/cctz/civil_time.h b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/include/cctz/civil_time.h
index 1920bb56d4..be60a54dbe 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/include/cctz/civil_time.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/include/cctz/civil_time.h
@@ -16,9 +16,9 @@
#define ABSL_TIME_INTERNAL_CCTZ_CIVIL_TIME_H_
#include "y_absl/base/config.h"
-#include "y_absl/time/internal/cctz/include/cctz/civil_time_detail.h"
+#include "y_absl/time/internal/cctz/include/cctz/civil_time_detail.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace time_internal {
namespace cctz {
@@ -327,6 +327,6 @@ using detail::get_yearday;
} // namespace cctz
} // namespace time_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_TIME_INTERNAL_CCTZ_CIVIL_TIME_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/include/cctz/civil_time_detail.h b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/include/cctz/civil_time_detail.h
index 4ae30f24e8..0e71a7cd33 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/include/cctz/civil_time_detail.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/include/cctz/civil_time_detail.h
@@ -33,7 +33,7 @@
#define CONSTEXPR_M
#endif
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace time_internal {
namespace cctz {
@@ -619,7 +619,7 @@ std::ostream& operator<<(std::ostream& os, weekday wd);
} // namespace cctz
} // namespace time_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#undef CONSTEXPR_M
#undef CONSTEXPR_F
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/include/cctz/time_zone.h b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/include/cctz/time_zone.h
index b61238b716..524654df4b 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/include/cctz/time_zone.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/include/cctz/time_zone.h
@@ -27,9 +27,9 @@
#include <utility>
#include "y_absl/base/config.h"
-#include "y_absl/time/internal/cctz/include/cctz/civil_time.h"
+#include "y_absl/time/internal/cctz/include/cctz/civil_time.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace time_internal {
namespace cctz {
@@ -71,7 +71,7 @@ class time_zone {
time_zone(const time_zone&) = default;
time_zone& operator=(const time_zone&) = default;
- TString name() const;
+ TString name() const;
// An absolute_lookup represents the civil time (cctz::civil_second) within
// this time_zone at the given absolute time (time_point). There are
@@ -203,8 +203,8 @@ class time_zone {
// empty when unavailable.
//
// Note: These functions are for informational or testing purposes only.
- TString version() const; // empty when unknown
- TString description() const;
+ TString version() const; // empty when unknown
+ TString description() const;
// Relational operators.
friend bool operator==(time_zone lhs, time_zone rhs) {
@@ -228,7 +228,7 @@ class time_zone {
// Loads the named time zone. May perform I/O on the initial load.
// If the name is invalid, or some other kind of error occurs, returns
// false and "*tz" is set to the UTC time zone.
-bool load_time_zone(const TString& name, time_zone* tz);
+bool load_time_zone(const TString& name, time_zone* tz);
// Returns a time_zone representing UTC. Cannot fail.
time_zone utc_time_zone();
@@ -265,10 +265,10 @@ inline time_point<seconds> convert(const civil_second& cs,
namespace detail {
using femtoseconds = std::chrono::duration<std::int_fast64_t, std::femto>;
-TString format(const TString&, const time_point<seconds>&,
+TString format(const TString&, const time_point<seconds>&,
const femtoseconds&, const time_zone&);
-bool parse(const TString&, const TString&, const time_zone&,
- time_point<seconds>*, femtoseconds*, TString* err = nullptr);
+bool parse(const TString&, const TString&, const time_zone&,
+ time_point<seconds>*, femtoseconds*, TString* err = nullptr);
template <typename Rep, std::intmax_t Denom>
bool join_seconds(
const time_point<seconds>& sec, const femtoseconds& fs,
@@ -312,10 +312,10 @@ bool join_seconds(const time_point<seconds>& sec, const femtoseconds&,
// cctz::time_zone lax;
// if (!cctz::load_time_zone("America/Los_Angeles", &lax)) { ... }
// auto tp = cctz::convert(cctz::civil_second(2013, 1, 2, 3, 4, 5), lax);
-// TString f = cctz::format("%H:%M:%S", tp, lax); // "03:04:05"
+// TString f = cctz::format("%H:%M:%S", tp, lax); // "03:04:05"
// f = cctz::format("%H:%M:%E3S", tp, lax); // "03:04:05.000"
template <typename D>
-inline TString format(const TString& fmt, const time_point<D>& tp,
+inline TString format(const TString& fmt, const time_point<D>& tp,
const time_zone& tz) {
const auto p = detail::split_seconds(tp);
const auto n = std::chrono::duration_cast<detail::femtoseconds>(p.second);
@@ -369,7 +369,7 @@ inline TString format(const TString& fmt, const time_point<D>& tp,
// ...
// }
template <typename D>
-inline bool parse(const TString& fmt, const TString& input,
+inline bool parse(const TString& fmt, const TString& input,
const time_zone& tz, time_point<D>* tpp) {
time_point<seconds> sec;
detail::femtoseconds fs;
@@ -454,6 +454,6 @@ inline bool join_seconds(const time_point<seconds>& sec, const femtoseconds&,
} // namespace cctz
} // namespace time_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_TIME_INTERNAL_CCTZ_TIME_ZONE_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/include/cctz/zone_info_source.h b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/include/cctz/zone_info_source.h
index a332809c1d..fd6dc4bbb0 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/include/cctz/zone_info_source.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/include/cctz/zone_info_source.h
@@ -18,11 +18,11 @@
#include <cstddef>
#include <functional>
#include <memory>
-#include <util/generic/string.h>
-
+#include <util/generic/string.h>
+
#include "y_absl/base/config.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace time_internal {
namespace cctz {
@@ -38,15 +38,15 @@ class ZoneInfoSource {
// Until the zoneinfo data supports versioning information, we provide
// a way for a ZoneInfoSource to indicate it out-of-band. The default
// implementation returns an empty string.
- virtual TString Version() const;
+ virtual TString Version() const;
};
} // namespace cctz
} // namespace time_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace time_internal {
namespace cctz_extension {
@@ -55,8 +55,8 @@ namespace cctz_extension {
// given the name of a time zone and a fallback factory. Returns null
// when the data for the named zone cannot be found.
using ZoneInfoSourceFactory =
- std::unique_ptr<y_absl::time_internal::cctz::ZoneInfoSource> (*)(
- const TString&,
+ std::unique_ptr<y_absl::time_internal::cctz::ZoneInfoSource> (*)(
+ const TString&,
const std::function<std::unique_ptr<
y_absl::time_internal::cctz::ZoneInfoSource>(const TString&)>&);
@@ -69,9 +69,9 @@ using ZoneInfoSourceFactory =
// namespace cctz_extension {
// namespace {
// std::unique_ptr<cctz::ZoneInfoSource> CustomFactory(
-// const TString& name,
+// const TString& name,
// const std::function<std::unique_ptr<cctz::ZoneInfoSource>(
-// const TString& name)>& fallback_factory) {
+// const TString& name)>& fallback_factory) {
// if (auto zip = my_factory(name)) return zip;
// if (auto zip = fallback_factory(name)) return zip;
// if (auto zip = my_other_factory(name)) return zip;
@@ -97,6 +97,6 @@ extern ZoneInfoSourceFactory zone_info_source_factory;
} // namespace cctz_extension
} // namespace time_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_TIME_INTERNAL_CCTZ_ZONE_INFO_SOURCE_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/civil_time_detail.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/civil_time_detail.cc
index d7e1efceb7..61dbfc96ab 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/civil_time_detail.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/civil_time_detail.cc
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/time/internal/cctz/include/cctz/civil_time_detail.h"
+#include "y_absl/time/internal/cctz/include/cctz/civil_time_detail.h"
#include <iomanip>
#include <ostream>
@@ -20,7 +20,7 @@
#include "y_absl/base/config.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace time_internal {
namespace cctz {
@@ -91,4 +91,4 @@ std::ostream& operator<<(std::ostream& os, weekday wd) {
} // namespace cctz
} // namespace time_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_fixed.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_fixed.cc
index 064abe41a8..3a22cbea1d 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_fixed.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_fixed.cc
@@ -22,7 +22,7 @@
#include "y_absl/base/config.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace time_internal {
namespace cctz {
@@ -52,7 +52,7 @@ int Parse02d(const char* p) {
} // namespace
-bool FixedOffsetFromName(const TString& name, seconds* offset) {
+bool FixedOffsetFromName(const TString& name, seconds* offset) {
if (name == "UTC" || name == "UTC0") {
*offset = seconds::zero();
return true;
@@ -81,7 +81,7 @@ bool FixedOffsetFromName(const TString& name, seconds* offset) {
return true;
}
-TString FixedOffsetToName(const seconds& offset) {
+TString FixedOffsetToName(const seconds& offset) {
if (offset == seconds::zero()) return "UTC";
if (offset < std::chrono::hours(-24) || offset > std::chrono::hours(24)) {
// We don't support fixed-offset zones more than 24 hours
@@ -117,8 +117,8 @@ TString FixedOffsetToName(const seconds& offset) {
return buf;
}
-TString FixedOffsetToAbbr(const seconds& offset) {
- TString abbr = FixedOffsetToName(offset);
+TString FixedOffsetToAbbr(const seconds& offset) {
+ TString abbr = FixedOffsetToName(offset);
const std::size_t prefix_len = sizeof(kFixedZonePrefix) - 1;
if (abbr.size() == prefix_len + 9) { // <prefix>+99:99:99
abbr.erase(0, prefix_len); // +99:99:99
@@ -137,4 +137,4 @@ TString FixedOffsetToAbbr(const seconds& offset) {
} // namespace cctz
} // namespace time_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_fixed.h b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_fixed.h
index b5b6011d68..39b24e5a32 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_fixed.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_fixed.h
@@ -18,9 +18,9 @@
#include <util/generic/string.h>
#include "y_absl/base/config.h"
-#include "y_absl/time/internal/cctz/include/cctz/time_zone.h"
+#include "y_absl/time/internal/cctz/include/cctz/time_zone.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace time_internal {
namespace cctz {
@@ -40,13 +40,13 @@ namespace cctz {
// Note: FixedOffsetFromName() fails on syntax errors or when the parsed
// offset exceeds 24 hours. FixedOffsetToName() and FixedOffsetToAbbr()
// both produce "UTC" when the argument offset exceeds 24 hours.
-bool FixedOffsetFromName(const TString& name, seconds* offset);
-TString FixedOffsetToName(const seconds& offset);
-TString FixedOffsetToAbbr(const seconds& offset);
+bool FixedOffsetFromName(const TString& name, seconds* offset);
+TString FixedOffsetToName(const seconds& offset);
+TString FixedOffsetToAbbr(const seconds& offset);
} // namespace cctz
} // namespace time_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_TIME_INTERNAL_CCTZ_TIME_ZONE_FIXED_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_format.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_format.cc
index 757507aee5..2f9597018b 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_format.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_format.cc
@@ -25,7 +25,7 @@
#endif
#include "y_absl/base/config.h"
-#include "y_absl/time/internal/cctz/include/cctz/time_zone.h"
+#include "y_absl/time/internal/cctz/include/cctz/time_zone.h"
// Include time.h directly since, by C++ standards, ctime doesn't have to
// declare strptime.
@@ -45,10 +45,10 @@
#include <sstream>
#endif
-#include "y_absl/time/internal/cctz/include/cctz/civil_time.h"
+#include "y_absl/time/internal/cctz/include/cctz/civil_time.h"
#include "time_zone_if.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace time_internal {
namespace cctz {
@@ -212,7 +212,7 @@ char* FormatOffset(char* ep, int offset, const char* mode) {
}
// Formats a std::tm using strftime(3).
-void FormatTM(TString* out, const TString& fmt, const std::tm& tm) {
+void FormatTM(TString* out, const TString& fmt, const std::tm& tm) {
// strftime(3) returns the number of characters placed in the output
// array (which may be 0 characters). It also returns 0 to indicate
// an error, like the array wasn't large enough. To accommodate this,
@@ -330,9 +330,9 @@ const std::int_fast64_t kExp10[kDigits10_64 + 1] = {
// not support the tm_gmtoff and tm_zone extensions to std::tm.
//
// Requires that zero() <= fs < seconds(1).
-TString format(const TString& format, const time_point<seconds>& tp,
+TString format(const TString& format, const time_point<seconds>& tp,
const detail::femtoseconds& fs, const time_zone& tz) {
- TString result;
+ TString result;
result.reserve(format.size()); // A reasonable guess for the result size.
const time_zone::absolute_lookup al = tz.lookup(tp);
const std::tm tm = ToTM(al);
@@ -384,7 +384,7 @@ TString format(const TString& format, const time_point<seconds>& tp,
// Simple specifiers that we handle ourselves.
if (strchr("YmdeUuWwHMSzZs%", *cur)) {
if (cur - 1 != pending) {
- FormatTM(&result, TString(pending, cur - 1), tm);
+ FormatTM(&result, TString(pending, cur - 1), tm);
}
switch (*cur) {
case 'Y':
@@ -455,7 +455,7 @@ TString format(const TString& format, const time_point<seconds>& tp,
if (*(cur + 1) == 'z') {
// Formats %:z.
if (cur - 1 != pending) {
- FormatTM(&result, TString(pending, cur - 1), tm);
+ FormatTM(&result, TString(pending, cur - 1), tm);
}
bp = FormatOffset(ep, al.offset, ":");
result.append(bp, static_cast<std::size_t>(ep - bp));
@@ -466,7 +466,7 @@ TString format(const TString& format, const time_point<seconds>& tp,
if (*(cur + 2) == 'z') {
// Formats %::z.
if (cur - 1 != pending) {
- FormatTM(&result, TString(pending, cur - 1), tm);
+ FormatTM(&result, TString(pending, cur - 1), tm);
}
bp = FormatOffset(ep, al.offset, ":*");
result.append(bp, static_cast<std::size_t>(ep - bp));
@@ -477,7 +477,7 @@ TString format(const TString& format, const time_point<seconds>& tp,
if (*(cur + 3) == 'z') {
// Formats %:::z.
if (cur - 1 != pending) {
- FormatTM(&result, TString(pending, cur - 1), tm);
+ FormatTM(&result, TString(pending, cur - 1), tm);
}
bp = FormatOffset(ep, al.offset, ":*:");
result.append(bp, static_cast<std::size_t>(ep - bp));
@@ -502,7 +502,7 @@ TString format(const TString& format, const time_point<seconds>& tp,
} else if (*cur == 'z') {
// Formats %Ez.
if (cur - 2 != pending) {
- FormatTM(&result, TString(pending, cur - 2), tm);
+ FormatTM(&result, TString(pending, cur - 2), tm);
}
bp = FormatOffset(ep, al.offset, ":");
result.append(bp, static_cast<std::size_t>(ep - bp));
@@ -510,7 +510,7 @@ TString format(const TString& format, const time_point<seconds>& tp,
} else if (*cur == '*' && cur + 1 != end && *(cur + 1) == 'z') {
// Formats %E*z.
if (cur - 2 != pending) {
- FormatTM(&result, TString(pending, cur - 2), tm);
+ FormatTM(&result, TString(pending, cur - 2), tm);
}
bp = FormatOffset(ep, al.offset, ":*");
result.append(bp, static_cast<std::size_t>(ep - bp));
@@ -519,7 +519,7 @@ TString format(const TString& format, const time_point<seconds>& tp,
(*(cur + 1) == 'S' || *(cur + 1) == 'f')) {
// Formats %E*S or %E*F.
if (cur - 2 != pending) {
- FormatTM(&result, TString(pending, cur - 2), tm);
+ FormatTM(&result, TString(pending, cur - 2), tm);
}
char* cp = ep;
bp = Format64(cp, 15, fs.count());
@@ -538,7 +538,7 @@ TString format(const TString& format, const time_point<seconds>& tp,
} else if (*cur == '4' && cur + 1 != end && *(cur + 1) == 'Y') {
// Formats %E4Y.
if (cur - 2 != pending) {
- FormatTM(&result, TString(pending, cur - 2), tm);
+ FormatTM(&result, TString(pending, cur - 2), tm);
}
bp = Format64(ep, 4, al.cs.year());
result.append(bp, static_cast<std::size_t>(ep - bp));
@@ -550,7 +550,7 @@ TString format(const TString& format, const time_point<seconds>& tp,
if (*np == 'S' || *np == 'f') {
// Formats %E#S or %E#f.
if (cur - 2 != pending) {
- FormatTM(&result, TString(pending, cur - 2), tm);
+ FormatTM(&result, TString(pending, cur - 2), tm);
}
bp = ep;
if (n > 0) {
@@ -570,7 +570,7 @@ TString format(const TString& format, const time_point<seconds>& tp,
// Formats any remaining data.
if (end != pending) {
- FormatTM(&result, TString(pending, end), tm);
+ FormatTM(&result, TString(pending, end), tm);
}
return result;
@@ -611,7 +611,7 @@ const char* ParseOffset(const char* dp, const char* mode, int* offset) {
return dp;
}
-const char* ParseZone(const char* dp, TString* zone) {
+const char* ParseZone(const char* dp, TString* zone) {
zone->clear();
if (dp != nullptr) {
while (*dp != '\0' && !std::isspace(*dp)) zone->push_back(*dp++);
@@ -689,9 +689,9 @@ bool FromWeek(int week_num, weekday week_start, year_t* year, std::tm* tm) {
//
// We also handle the %z specifier to accommodate platforms that do not
// support the tm_gmtoff extension to std::tm. %Z is parsed but ignored.
-bool parse(const TString& format, const TString& input,
+bool parse(const TString& format, const TString& input,
const time_zone& tz, time_point<seconds>* sec,
- detail::femtoseconds* fs, TString* err) {
+ detail::femtoseconds* fs, TString* err) {
// The unparsed input.
const char* data = input.c_str(); // NUL terminated
@@ -717,7 +717,7 @@ bool parse(const TString& format, const TString& input,
auto subseconds = detail::femtoseconds::zero();
bool saw_offset = false;
int offset = 0; // No offset from passed tz.
- TString zone = "UTC";
+ TString zone = "UTC";
const char* fmt = format.c_str(); // NUL terminated
bool twelve_hour = false;
@@ -908,7 +908,7 @@ bool parse(const TString& format, const TString& input,
// Parses the current specifier.
const char* orig_data = data;
- TString spec(percent, static_cast<std::size_t>(fmt - percent));
+ TString spec(percent, static_cast<std::size_t>(fmt - percent));
data = ParseTM(data, spec.c_str(), &tm);
// If we successfully parsed %p we need to remember whether the result
@@ -916,7 +916,7 @@ bool parse(const TString& format, const TString& input,
// So reparse the input with a known AM hour, and check if it is shifted
// to a PM hour.
if (spec == "%p" && data != nullptr) {
- TString test_input = "1";
+ TString test_input = "1";
test_input.append(orig_data, static_cast<std::size_t>(data - orig_data));
const char* test_data = test_input.c_str();
std::tm tmp{};
@@ -1026,4 +1026,4 @@ bool parse(const TString& format, const TString& input,
} // namespace cctz
} // namespace time_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_if.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_if.cc
index cbd9d6f9e0..2fe6d23c71 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_if.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_if.cc
@@ -18,12 +18,12 @@
#include "time_zone_info.h"
#include "time_zone_libc.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace time_internal {
namespace cctz {
-std::unique_ptr<TimeZoneIf> TimeZoneIf::Load(const TString& name) {
+std::unique_ptr<TimeZoneIf> TimeZoneIf::Load(const TString& name) {
// Support "libc:localtime" and "libc:*" to access the legacy
// localtime and UTC support respectively from the C library.
if (name.compare(0, 5, "libc:") == 0) {
@@ -42,4 +42,4 @@ TimeZoneIf::~TimeZoneIf() {}
} // namespace cctz
} // namespace time_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_if.h b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_if.h
index 5350c94c4f..10312badc2 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_if.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_if.h
@@ -21,10 +21,10 @@
#include <util/generic/string.h>
#include "y_absl/base/config.h"
-#include "y_absl/time/internal/cctz/include/cctz/civil_time.h"
-#include "y_absl/time/internal/cctz/include/cctz/time_zone.h"
+#include "y_absl/time/internal/cctz/include/cctz/civil_time.h"
+#include "y_absl/time/internal/cctz/include/cctz/time_zone.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace time_internal {
namespace cctz {
@@ -34,7 +34,7 @@ namespace cctz {
class TimeZoneIf {
public:
// A factory function for TimeZoneIf implementations.
- static std::unique_ptr<TimeZoneIf> Load(const TString& name);
+ static std::unique_ptr<TimeZoneIf> Load(const TString& name);
virtual ~TimeZoneIf();
@@ -47,8 +47,8 @@ class TimeZoneIf {
virtual bool PrevTransition(const time_point<seconds>& tp,
time_zone::civil_transition* trans) const = 0;
- virtual TString Version() const = 0;
- virtual TString Description() const = 0;
+ virtual TString Version() const = 0;
+ virtual TString Description() const = 0;
protected:
TimeZoneIf() {}
@@ -72,6 +72,6 @@ inline time_point<seconds> FromUnixSeconds(std::int_fast64_t t) {
} // namespace cctz
} // namespace time_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_TIME_INTERNAL_CCTZ_TIME_ZONE_IF_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_impl.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_impl.cc
index e9a17011ad..3810defe3c 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_impl.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_impl.cc
@@ -24,7 +24,7 @@
#include "y_absl/base/config.h"
#include "time_zone_fixed.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace time_internal {
namespace cctz {
@@ -33,7 +33,7 @@ namespace {
// time_zone::Impls are linked into a map to support fast lookup by name.
using TimeZoneImplByName =
- std::unordered_map<TString, const time_zone::Impl*>;
+ std::unordered_map<TString, const time_zone::Impl*>;
TimeZoneImplByName* time_zone_map = nullptr;
// Mutual exclusion for time_zone_map.
@@ -48,7 +48,7 @@ std::mutex& TimeZoneMutex() {
time_zone time_zone::Impl::UTC() { return time_zone(UTCImpl()); }
-bool time_zone::Impl::LoadTimeZone(const TString& name, time_zone* tz) {
+bool time_zone::Impl::LoadTimeZone(const TString& name, time_zone* tz) {
const Impl* const utc_impl = UTCImpl();
// Check for UTC (which is never a key in time_zone_map).
@@ -110,4 +110,4 @@ const time_zone::Impl* time_zone::Impl::UTCImpl() {
} // namespace cctz
} // namespace time_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_impl.h b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_impl.h
index 06f4234ced..c014ab41df 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_impl.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_impl.h
@@ -19,12 +19,12 @@
#include <util/generic/string.h>
#include "y_absl/base/config.h"
-#include "y_absl/time/internal/cctz/include/cctz/civil_time.h"
-#include "y_absl/time/internal/cctz/include/cctz/time_zone.h"
+#include "y_absl/time/internal/cctz/include/cctz/civil_time.h"
+#include "y_absl/time/internal/cctz/include/cctz/time_zone.h"
#include "time_zone_if.h"
#include "time_zone_info.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace time_internal {
namespace cctz {
@@ -37,14 +37,14 @@ class time_zone::Impl {
// Load a named time zone. Returns false if the name is invalid, or if
// some other kind of error occurs. Note that loading "UTC" never fails.
- static bool LoadTimeZone(const TString& name, time_zone* tz);
+ static bool LoadTimeZone(const TString& name, time_zone* tz);
// Clears the map of cached time zones. Primarily for use in benchmarks
// that gauge the performance of loading/parsing the time-zone data.
static void ClearTimeZoneMapTestOnly();
// The primary key is the time-zone ID (e.g., "America/New_York").
- const TString& Name() const {
+ const TString& Name() const {
// TODO: It would nice if the zoneinfo data included the zone name.
return name_;
}
@@ -72,22 +72,22 @@ class time_zone::Impl {
}
// Returns an implementation-defined version string for this time zone.
- TString Version() const { return zone_->Version(); }
+ TString Version() const { return zone_->Version(); }
// Returns an implementation-defined description of this time zone.
- TString Description() const { return zone_->Description(); }
+ TString Description() const { return zone_->Description(); }
private:
- explicit Impl(const TString& name);
+ explicit Impl(const TString& name);
static const Impl* UTCImpl();
- const TString name_;
+ const TString name_;
std::unique_ptr<TimeZoneIf> zone_;
};
} // namespace cctz
} // namespace time_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_TIME_INTERNAL_CCTZ_TIME_ZONE_IMPL_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_info.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_info.cc
index a63cbdaa0c..72f7bdc3ca 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_info.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_info.cc
@@ -47,11 +47,11 @@
#include <utility>
#include "y_absl/base/config.h"
-#include "y_absl/time/internal/cctz/include/cctz/civil_time.h"
+#include "y_absl/time/internal/cctz/include/cctz/civil_time.h"
#include "time_zone_fixed.h"
#include "time_zone_posix.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace time_internal {
namespace cctz {
@@ -595,7 +595,7 @@ inline FilePtr FOpen(const char* path, const char* mode) {
// A stdio(3)-backed implementation of ZoneInfoSource.
class FileZoneInfoSource : public ZoneInfoSource {
public:
- static std::unique_ptr<ZoneInfoSource> Open(const TString& name);
+ static std::unique_ptr<ZoneInfoSource> Open(const TString& name);
std::size_t Read(void* ptr, std::size_t size) override {
size = std::min(size, len_);
@@ -609,9 +609,9 @@ class FileZoneInfoSource : public ZoneInfoSource {
if (rc == 0) len_ -= offset;
return rc;
}
- TString Version() const override {
+ TString Version() const override {
// TODO: It would nice if the zoneinfo data included the tzdb version.
- return TString();
+ return TString();
}
protected:
@@ -625,12 +625,12 @@ class FileZoneInfoSource : public ZoneInfoSource {
};
std::unique_ptr<ZoneInfoSource> FileZoneInfoSource::Open(
- const TString& name) {
+ const TString& name) {
// Use of the "file:" prefix is intended for testing purposes only.
const std::size_t pos = (name.compare(0, 5, "file:") == 0) ? 5 : 0;
// Map the time-zone name to a path name.
- TString path;
+ TString path;
if (pos == name.size() || name[pos] != '/') {
const char* tzdir = "/usr/share/zoneinfo";
char* tzdir_env = nullptr;
@@ -646,7 +646,7 @@ std::unique_ptr<ZoneInfoSource> FileZoneInfoSource::Open(
free(tzdir_env);
#endif
}
- path.append(name, pos, TString::npos);
+ path.append(name, pos, TString::npos);
// Open the zoneinfo file.
auto fp = FOpen(path.c_str(), "rb");
@@ -656,18 +656,18 @@ std::unique_ptr<ZoneInfoSource> FileZoneInfoSource::Open(
class AndroidZoneInfoSource : public FileZoneInfoSource {
public:
- static std::unique_ptr<ZoneInfoSource> Open(const TString& name);
- TString Version() const override { return version_; }
+ static std::unique_ptr<ZoneInfoSource> Open(const TString& name);
+ TString Version() const override { return version_; }
private:
explicit AndroidZoneInfoSource(FilePtr fp, std::size_t len,
TString version)
: FileZoneInfoSource(std::move(fp), len), version_(std::move(version)) {}
- TString version_;
+ TString version_;
};
std::unique_ptr<ZoneInfoSource> AndroidZoneInfoSource::Open(
- const TString& name) {
+ const TString& name) {
// Use of the "file:" prefix is intended for testing purposes only.
const std::size_t pos = (name.compare(0, 5, "file:") == 0) ? 5 : 0;
@@ -774,7 +774,7 @@ std::unique_ptr<ZoneInfoSource> FuchsiaZoneInfoSource::Open(
} // namespace
-bool TimeZoneInfo::Load(const TString& name) {
+bool TimeZoneInfo::Load(const TString& name) {
// We can ensure that the loading of UTC or any other fixed-offset
// zone never fails because the simple, fixed-offset state can be
// internally generated. Note that this depends on our choice to not
@@ -812,7 +812,7 @@ time_zone::absolute_lookup TimeZoneInfo::LocalTime(std::int_fast64_t unix_time,
// Note: (unix_time - tr.unix_time) will never overflow as we
// have ensured that there is always a "nearby" transition.
return {tr.civil_sec + (unix_time - tr.unix_time), // TODO: Optimize.
- tt.utc_offset, tt.is_dst, &*abbreviations_.begin() + tt.abbr_index};
+ tt.utc_offset, tt.is_dst, &*abbreviations_.begin() + tt.abbr_index};
}
// MakeTime() translation with a conversion-preserving +N * 400-year shift.
@@ -952,12 +952,12 @@ time_zone::civil_lookup TimeZoneInfo::MakeTime(const civil_second& cs) const {
TString TimeZoneInfo::Version() const { return version_; }
-TString TimeZoneInfo::Description() const {
+TString TimeZoneInfo::Description() const {
std::ostringstream oss;
oss << "#trans=" << transitions_.size();
oss << " #types=" << transition_types_.size();
oss << " spec='" << future_spec_ << "'";
- return oss.str().c_str();
+ return oss.str().c_str();
}
bool TimeZoneInfo::NextTransition(const time_point<seconds>& tp,
@@ -1024,4 +1024,4 @@ bool TimeZoneInfo::PrevTransition(const time_point<seconds>& tp,
} // namespace cctz
} // namespace time_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_info.h b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_info.h
index 9963f8228e..e55fd51847 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_info.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_info.h
@@ -22,13 +22,13 @@
#include <vector>
#include "y_absl/base/config.h"
-#include "y_absl/time/internal/cctz/include/cctz/civil_time.h"
-#include "y_absl/time/internal/cctz/include/cctz/time_zone.h"
-#include "y_absl/time/internal/cctz/include/cctz/zone_info_source.h"
+#include "y_absl/time/internal/cctz/include/cctz/civil_time.h"
+#include "y_absl/time/internal/cctz/include/cctz/time_zone.h"
+#include "y_absl/time/internal/cctz/include/cctz/zone_info_source.h"
#include "time_zone_if.h"
#include "tzfile.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace time_internal {
namespace cctz {
@@ -69,7 +69,7 @@ class TimeZoneInfo : public TimeZoneIf {
TimeZoneInfo& operator=(const TimeZoneInfo&) = delete;
// Loads the zoneinfo for the given name, returning true if successful.
- bool Load(const TString& name);
+ bool Load(const TString& name);
// TimeZoneIf implementations.
time_zone::absolute_lookup BreakTime(
@@ -79,8 +79,8 @@ class TimeZoneInfo : public TimeZoneIf {
time_zone::civil_transition* trans) const override;
bool PrevTransition(const time_point<seconds>& tp,
time_zone::civil_transition* trans) const override;
- TString Version() const override;
- TString Description() const override;
+ TString Version() const override;
+ TString Description() const override;
private:
struct Header { // counts of:
@@ -115,10 +115,10 @@ class TimeZoneInfo : public TimeZoneIf {
std::vector<Transition> transitions_; // ordered by unix_time and civil_sec
std::vector<TransitionType> transition_types_; // distinct transition types
std::uint_fast8_t default_transition_type_; // for before first transition
- TString abbreviations_; // all the NUL-terminated abbreviations
+ TString abbreviations_; // all the NUL-terminated abbreviations
- TString version_; // the tzdata version if available
- TString future_spec_; // for after the last zic transition
+ TString version_; // the tzdata version if available
+ TString future_spec_; // for after the last zic transition
bool extended_; // future_spec_ was used to generate transitions
year_t last_year_; // the final year of the generated transitions
@@ -132,6 +132,6 @@ class TimeZoneInfo : public TimeZoneIf {
} // namespace cctz
} // namespace time_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_TIME_INTERNAL_CCTZ_TIME_ZONE_INFO_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_libc.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_libc.cc
index eec20c9dce..a73832fc29 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_libc.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_libc.cc
@@ -24,8 +24,8 @@
#include <utility>
#include "y_absl/base/config.h"
-#include "y_absl/time/internal/cctz/include/cctz/civil_time.h"
-#include "y_absl/time/internal/cctz/include/cctz/time_zone.h"
+#include "y_absl/time/internal/cctz/include/cctz/civil_time.h"
+#include "y_absl/time/internal/cctz/include/cctz/time_zone.h"
#if defined(_AIX)
extern "C" {
@@ -33,7 +33,7 @@ extern long altzone;
}
#endif
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace time_internal {
namespace cctz {
@@ -183,7 +183,7 @@ std::time_t find_trans(std::time_t lo, std::time_t hi, int offset) {
} // namespace
-TimeZoneLibC::TimeZoneLibC(const TString& name)
+TimeZoneLibC::TimeZoneLibC(const TString& name)
: local_(name == "localtime") {}
time_zone::absolute_lookup TimeZoneLibC::BreakTime(
@@ -301,15 +301,15 @@ bool TimeZoneLibC::PrevTransition(const time_point<seconds>&,
return false;
}
-TString TimeZoneLibC::Version() const {
- return TString(); // unknown
+TString TimeZoneLibC::Version() const {
+ return TString(); // unknown
}
-TString TimeZoneLibC::Description() const {
+TString TimeZoneLibC::Description() const {
return local_ ? "localtime" : "UTC";
}
} // namespace cctz
} // namespace time_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_libc.h b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_libc.h
index a883c41c0c..fc926fecf7 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_libc.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_libc.h
@@ -20,7 +20,7 @@
#include "y_absl/base/config.h"
#include "time_zone_if.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace time_internal {
namespace cctz {
@@ -30,7 +30,7 @@ namespace cctz {
// TODO: Add support for fixed offsets from UTC.
class TimeZoneLibC : public TimeZoneIf {
public:
- explicit TimeZoneLibC(const TString& name);
+ explicit TimeZoneLibC(const TString& name);
// TimeZoneIf implementations.
time_zone::absolute_lookup BreakTime(
@@ -40,8 +40,8 @@ class TimeZoneLibC : public TimeZoneIf {
time_zone::civil_transition* trans) const override;
bool PrevTransition(const time_point<seconds>& tp,
time_zone::civil_transition* trans) const override;
- TString Version() const override;
- TString Description() const override;
+ TString Version() const override;
+ TString Description() const override;
private:
const bool local_; // localtime or UTC
@@ -50,6 +50,6 @@ class TimeZoneLibC : public TimeZoneIf {
} // namespace cctz
} // namespace time_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_TIME_INTERNAL_CCTZ_TIME_ZONE_LIBC_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_lookup.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_lookup.cc
index 4703076697..92c9208d6d 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_lookup.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_lookup.cc
@@ -13,7 +13,7 @@
// limitations under the License.
#include "y_absl/base/config.h"
-#include "y_absl/time/internal/cctz/include/cctz/time_zone.h"
+#include "y_absl/time/internal/cctz/include/cctz/time_zone.h"
#if defined(__ANDROID__)
#include <sys/system_properties.h>
@@ -42,7 +42,7 @@
#include "time_zone_fixed.h"
#include "time_zone_impl.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace time_internal {
namespace cctz {
@@ -99,7 +99,7 @@ bool time_zone::prev_transition(const time_point<seconds>& tp,
TString time_zone::version() const { return effective_impl().Version(); }
-TString time_zone::description() const {
+TString time_zone::description() const {
return effective_impl().Description();
}
@@ -112,7 +112,7 @@ const time_zone::Impl& time_zone::effective_impl() const {
return *impl_;
}
-bool load_time_zone(const TString& name, time_zone* tz) {
+bool load_time_zone(const TString& name, time_zone* tz) {
return time_zone::Impl::LoadTimeZone(name, tz);
}
@@ -216,7 +216,7 @@ time_zone local_time_zone() {
if (localtime_env) zone = localtime_env;
}
- const TString name = zone;
+ const TString name = zone;
#if defined(_MSC_VER)
free(localtime_env);
free(tz_env);
@@ -233,4 +233,4 @@ time_zone local_time_zone() {
} // namespace cctz
} // namespace time_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_posix.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_posix.cc
index 764d0567fd..4096503915 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_posix.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_posix.cc
@@ -21,7 +21,7 @@
#include "y_absl/base/config.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace time_internal {
namespace cctz {
@@ -48,7 +48,7 @@ const char* ParseInt(const char* p, int min, int max, int* vp) {
}
// abbr = <.*?> | [^-+,\d]{3,}
-const char* ParseAbbr(const char* p, TString* abbr) {
+const char* ParseAbbr(const char* p, TString* abbr) {
const char* op = p;
if (*p == '<') { // special zoneinfo <...> form
while (*++p != '>') {
@@ -133,7 +133,7 @@ const char* ParseDateTime(const char* p, PosixTransition* res) {
} // namespace
// spec = std offset [ dst [ offset ] , datetime , datetime ]
-bool ParsePosixSpec(const TString& spec, PosixTimeZone* res) {
+bool ParsePosixSpec(const TString& spec, PosixTimeZone* res) {
const char* p = spec.c_str();
if (*p == ':') return false;
@@ -156,4 +156,4 @@ bool ParsePosixSpec(const TString& spec, PosixTimeZone* res) {
} // namespace cctz
} // namespace time_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_posix.h b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_posix.h
index 3885eee12f..e9de2b77ad 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_posix.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/time_zone_posix.h
@@ -53,11 +53,11 @@
#define ABSL_TIME_INTERNAL_CCTZ_TIME_ZONE_POSIX_H_
#include <cstdint>
-#include <util/generic/string.h>
-
+#include <util/generic/string.h>
+
#include "y_absl/base/config.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace time_internal {
namespace cctz {
@@ -109,10 +109,10 @@ struct PosixTransition {
// are not ordered---in the southern hemisphere the transition to end
// daylight time occurs first in any particular year.
struct PosixTimeZone {
- TString std_abbr;
+ TString std_abbr;
std::int_fast32_t std_offset;
- TString dst_abbr;
+ TString dst_abbr;
std::int_fast32_t dst_offset;
PosixTransition dst_start;
PosixTransition dst_end;
@@ -122,11 +122,11 @@ struct PosixTimeZone {
// filling in any missing values (DST offset, or start/end transition times)
// with the standard-defined defaults. Returns false if the specification
// could not be parsed (although some fields of *res may have been altered).
-bool ParsePosixSpec(const TString& spec, PosixTimeZone* res);
+bool ParsePosixSpec(const TString& spec, PosixTimeZone* res);
} // namespace cctz
} // namespace time_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_TIME_INTERNAL_CCTZ_TIME_ZONE_POSIX_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/zone_info_source.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/zone_info_source.cc
index b20d04e2b1..be58c20fb3 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/zone_info_source.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src/zone_info_source.cc
@@ -12,25 +12,25 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/time/internal/cctz/include/cctz/zone_info_source.h"
+#include "y_absl/time/internal/cctz/include/cctz/zone_info_source.h"
#include "y_absl/base/config.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace time_internal {
namespace cctz {
// Defined out-of-line to avoid emitting a weak vtable in all TUs.
ZoneInfoSource::~ZoneInfoSource() {}
-TString ZoneInfoSource::Version() const { return TString(); }
+TString ZoneInfoSource::Version() const { return TString(); }
} // namespace cctz
} // namespace time_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace time_internal {
namespace cctz_extension {
@@ -39,8 +39,8 @@ namespace {
// A default for cctz_extension::zone_info_source_factory, which simply
// defers to the fallback factory.
-std::unique_ptr<y_absl::time_internal::cctz::ZoneInfoSource> DefaultFactory(
- const TString& name,
+std::unique_ptr<y_absl::time_internal::cctz::ZoneInfoSource> DefaultFactory(
+ const TString& name,
const std::function<
std::unique_ptr<y_absl::time_internal::cctz::ZoneInfoSource>(
const TString& name)>& fallback_factory) {
@@ -112,4 +112,4 @@ ZoneInfoSourceFactory zone_info_source_factory = DefaultFactory;
} // namespace cctz_extension
} // namespace time_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/get_current_time_chrono.inc b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/get_current_time_chrono.inc
index f6525376b4..ef28e97e5a 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/get_current_time_chrono.inc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/get_current_time_chrono.inc
@@ -15,7 +15,7 @@
#include <chrono>
#include <cstdint>
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace time_internal {
@@ -28,4 +28,4 @@ static int64_t GetCurrentTimeNanosFromSystem() {
} // namespace time_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/get_current_time_posix.inc b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/get_current_time_posix.inc
index ecd4b661a4..1068fea026 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/get_current_time_posix.inc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/get_current_time_posix.inc
@@ -1,12 +1,12 @@
-#include "y_absl/time/clock.h"
+#include "y_absl/time/clock.h"
#include <sys/time.h>
#include <ctime>
#include <cstdint>
-#include "y_absl/base/internal/raw_logging.h"
+#include "y_absl/base/internal/raw_logging.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace time_internal {
@@ -21,4 +21,4 @@ static int64_t GetCurrentTimeNanosFromSystem() {
} // namespace time_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/test_util.h b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/test_util.h
index 6c463ed4d8..22b991b836 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/test_util.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/test_util.h
@@ -17,17 +17,17 @@
#include <util/generic/string.h>
-#include "y_absl/time/time.h"
+#include "y_absl/time/time.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace time_internal {
// Loads the named timezone, but dies on any failure.
-y_absl::TimeZone LoadTimeZone(const TString& name);
+y_absl::TimeZone LoadTimeZone(const TString& name);
} // namespace time_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_TIME_INTERNAL_TEST_UTIL_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/time.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/time/time.cc
index 7c77ca339b..441638b256 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/time.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/time.cc
@@ -12,26 +12,26 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-// The implementation of the y_absl::Time class, which is declared in
-// //y_absl/time.h.
+// The implementation of the y_absl::Time class, which is declared in
+// //y_absl/time.h.
//
-// The representation for an y_absl::Time is an y_absl::Duration offset from the
+// The representation for an y_absl::Time is an y_absl::Duration offset from the
// epoch. We use the traditional Unix epoch (1970-01-01 00:00:00 +0000)
// for convenience, but this is not exposed in the API and could be changed.
//
// NOTE: To keep type verbosity to a minimum, the following variable naming
// conventions are used throughout this file.
//
-// tz: An y_absl::TimeZone
-// ci: An y_absl::TimeZone::CivilInfo
-// ti: An y_absl::TimeZone::TimeInfo
-// cd: An y_absl::CivilDay or a cctz::civil_day
-// cs: An y_absl::CivilSecond or a cctz::civil_second
-// bd: An y_absl::Time::Breakdown
+// tz: An y_absl::TimeZone
+// ci: An y_absl::TimeZone::CivilInfo
+// ti: An y_absl::TimeZone::TimeInfo
+// cd: An y_absl::CivilDay or a cctz::civil_day
+// cs: An y_absl::CivilSecond or a cctz::civil_second
+// bd: An y_absl::Time::Breakdown
// cl: A cctz::time_zone::civil_lookup
// al: A cctz::time_zone::absolute_lookup
-#include "y_absl/time/time.h"
+#include "y_absl/time/time.h"
#if defined(_MSC_VER)
#include <winsock2.h> // for timeval
@@ -41,12 +41,12 @@
#include <ctime>
#include <limits>
-#include "y_absl/time/internal/cctz/include/cctz/civil_time.h"
-#include "y_absl/time/internal/cctz/include/cctz/time_zone.h"
+#include "y_absl/time/internal/cctz/include/cctz/civil_time.h"
+#include "y_absl/time/internal/cctz/include/cctz/time_zone.h"
-namespace cctz = y_absl::time_internal::cctz;
+namespace cctz = y_absl::time_internal::cctz;
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace {
@@ -57,24 +57,24 @@ inline cctz::time_point<cctz::seconds> unix_epoch() {
}
// Floors d to the next unit boundary closer to negative infinity.
-inline int64_t FloorToUnit(y_absl::Duration d, y_absl::Duration unit) {
- y_absl::Duration rem;
- int64_t q = y_absl::IDivDuration(d, unit, &rem);
+inline int64_t FloorToUnit(y_absl::Duration d, y_absl::Duration unit) {
+ y_absl::Duration rem;
+ int64_t q = y_absl::IDivDuration(d, unit, &rem);
return (q > 0 || rem >= ZeroDuration() ||
q == std::numeric_limits<int64_t>::min())
? q
: q - 1;
}
-inline y_absl::Time::Breakdown InfiniteFutureBreakdown() {
- y_absl::Time::Breakdown bd;
+inline y_absl::Time::Breakdown InfiniteFutureBreakdown() {
+ y_absl::Time::Breakdown bd;
bd.year = std::numeric_limits<int64_t>::max();
bd.month = 12;
bd.day = 31;
bd.hour = 23;
bd.minute = 59;
bd.second = 59;
- bd.subsecond = y_absl::InfiniteDuration();
+ bd.subsecond = y_absl::InfiniteDuration();
bd.weekday = 4;
bd.yearday = 365;
bd.offset = 0;
@@ -83,7 +83,7 @@ inline y_absl::Time::Breakdown InfiniteFutureBreakdown() {
return bd;
}
-inline y_absl::Time::Breakdown InfinitePastBreakdown() {
+inline y_absl::Time::Breakdown InfinitePastBreakdown() {
Time::Breakdown bd;
bd.year = std::numeric_limits<int64_t>::min();
bd.month = 1;
@@ -91,7 +91,7 @@ inline y_absl::Time::Breakdown InfinitePastBreakdown() {
bd.hour = 0;
bd.minute = 0;
bd.second = 0;
- bd.subsecond = -y_absl::InfiniteDuration();
+ bd.subsecond = -y_absl::InfiniteDuration();
bd.weekday = 7;
bd.yearday = 1;
bd.offset = 0;
@@ -100,7 +100,7 @@ inline y_absl::Time::Breakdown InfinitePastBreakdown() {
return bd;
}
-inline y_absl::TimeZone::CivilInfo InfiniteFutureCivilInfo() {
+inline y_absl::TimeZone::CivilInfo InfiniteFutureCivilInfo() {
TimeZone::CivilInfo ci;
ci.cs = CivilSecond::max();
ci.subsecond = InfiniteDuration();
@@ -110,7 +110,7 @@ inline y_absl::TimeZone::CivilInfo InfiniteFutureCivilInfo() {
return ci;
}
-inline y_absl::TimeZone::CivilInfo InfinitePastCivilInfo() {
+inline y_absl::TimeZone::CivilInfo InfinitePastCivilInfo() {
TimeZone::CivilInfo ci;
ci.cs = CivilSecond::min();
ci.subsecond = -InfiniteDuration();
@@ -120,18 +120,18 @@ inline y_absl::TimeZone::CivilInfo InfinitePastCivilInfo() {
return ci;
}
-inline y_absl::TimeConversion InfiniteFutureTimeConversion() {
- y_absl::TimeConversion tc;
- tc.pre = tc.trans = tc.post = y_absl::InfiniteFuture();
- tc.kind = y_absl::TimeConversion::UNIQUE;
+inline y_absl::TimeConversion InfiniteFutureTimeConversion() {
+ y_absl::TimeConversion tc;
+ tc.pre = tc.trans = tc.post = y_absl::InfiniteFuture();
+ tc.kind = y_absl::TimeConversion::UNIQUE;
tc.normalized = true;
return tc;
}
inline TimeConversion InfinitePastTimeConversion() {
- y_absl::TimeConversion tc;
- tc.pre = tc.trans = tc.post = y_absl::InfinitePast();
- tc.kind = y_absl::TimeConversion::UNIQUE;
+ y_absl::TimeConversion tc;
+ tc.pre = tc.trans = tc.post = y_absl::InfinitePast();
+ tc.kind = y_absl::TimeConversion::UNIQUE;
tc.normalized = true;
return tc;
}
@@ -148,14 +148,14 @@ Time MakeTimeWithOverflow(const cctz::time_point<cctz::seconds>& sec,
const auto al = tz.lookup(max);
if (cs > al.cs) {
if (normalized) *normalized = true;
- return y_absl::InfiniteFuture();
+ return y_absl::InfiniteFuture();
}
}
if (sec == min) {
const auto al = tz.lookup(min);
if (cs < al.cs) {
if (normalized) *normalized = true;
- return y_absl::InfinitePast();
+ return y_absl::InfinitePast();
}
}
const auto hi = (sec - unix_epoch()).count();
@@ -203,16 +203,16 @@ bool FindTransition(const cctz::time_zone& tz,
// Time
//
-y_absl::Time::Breakdown Time::In(y_absl::TimeZone tz) const {
- if (*this == y_absl::InfiniteFuture()) return InfiniteFutureBreakdown();
- if (*this == y_absl::InfinitePast()) return InfinitePastBreakdown();
+y_absl::Time::Breakdown Time::In(y_absl::TimeZone tz) const {
+ if (*this == y_absl::InfiniteFuture()) return InfiniteFutureBreakdown();
+ if (*this == y_absl::InfinitePast()) return InfinitePastBreakdown();
const auto tp = unix_epoch() + cctz::seconds(time_internal::GetRepHi(rep_));
const auto al = cctz::time_zone(tz).lookup(tp);
const auto cs = al.cs;
const auto cd = cctz::civil_day(cs);
- y_absl::Time::Breakdown bd;
+ y_absl::Time::Breakdown bd;
bd.year = cs.year();
bd.month = cs.month();
bd.day = cs.day();
@@ -232,12 +232,12 @@ y_absl::Time::Breakdown Time::In(y_absl::TimeZone tz) const {
// Conversions from/to other time types.
//
-y_absl::Time FromUDate(double udate) {
- return time_internal::FromUnixDuration(y_absl::Milliseconds(udate));
+y_absl::Time FromUDate(double udate) {
+ return time_internal::FromUnixDuration(y_absl::Milliseconds(udate));
}
-y_absl::Time FromUniversal(int64_t universal) {
- return y_absl::UniversalEpoch() + 100 * y_absl::Nanoseconds(universal);
+y_absl::Time FromUniversal(int64_t universal) {
+ return y_absl::UniversalEpoch() + 100 * y_absl::Nanoseconds(universal);
}
int64_t ToUnixNanos(Time t) {
@@ -247,7 +247,7 @@ int64_t ToUnixNanos(Time t) {
1000 * 1000 * 1000) +
(time_internal::GetRepLo(time_internal::ToUnixDuration(t)) / 4);
}
- return FloorToUnit(time_internal::ToUnixDuration(t), y_absl::Nanoseconds(1));
+ return FloorToUnit(time_internal::ToUnixDuration(t), y_absl::Nanoseconds(1));
}
int64_t ToUnixMicros(Time t) {
@@ -257,7 +257,7 @@ int64_t ToUnixMicros(Time t) {
1000 * 1000) +
(time_internal::GetRepLo(time_internal::ToUnixDuration(t)) / 4000);
}
- return FloorToUnit(time_internal::ToUnixDuration(t), y_absl::Microseconds(1));
+ return FloorToUnit(time_internal::ToUnixDuration(t), y_absl::Microseconds(1));
}
int64_t ToUnixMillis(Time t) {
@@ -267,35 +267,35 @@ int64_t ToUnixMillis(Time t) {
(time_internal::GetRepLo(time_internal::ToUnixDuration(t)) /
(4000 * 1000));
}
- return FloorToUnit(time_internal::ToUnixDuration(t), y_absl::Milliseconds(1));
+ return FloorToUnit(time_internal::ToUnixDuration(t), y_absl::Milliseconds(1));
}
int64_t ToUnixSeconds(Time t) {
return time_internal::GetRepHi(time_internal::ToUnixDuration(t));
}
-time_t ToTimeT(Time t) { return y_absl::ToTimespec(t).tv_sec; }
+time_t ToTimeT(Time t) { return y_absl::ToTimespec(t).tv_sec; }
double ToUDate(Time t) {
- return y_absl::FDivDuration(time_internal::ToUnixDuration(t),
- y_absl::Milliseconds(1));
+ return y_absl::FDivDuration(time_internal::ToUnixDuration(t),
+ y_absl::Milliseconds(1));
}
-int64_t ToUniversal(y_absl::Time t) {
- return y_absl::FloorToUnit(t - y_absl::UniversalEpoch(), y_absl::Nanoseconds(100));
+int64_t ToUniversal(y_absl::Time t) {
+ return y_absl::FloorToUnit(t - y_absl::UniversalEpoch(), y_absl::Nanoseconds(100));
}
-y_absl::Time TimeFromTimespec(timespec ts) {
- return time_internal::FromUnixDuration(y_absl::DurationFromTimespec(ts));
+y_absl::Time TimeFromTimespec(timespec ts) {
+ return time_internal::FromUnixDuration(y_absl::DurationFromTimespec(ts));
}
-y_absl::Time TimeFromTimeval(timeval tv) {
- return time_internal::FromUnixDuration(y_absl::DurationFromTimeval(tv));
+y_absl::Time TimeFromTimeval(timeval tv) {
+ return time_internal::FromUnixDuration(y_absl::DurationFromTimeval(tv));
}
timespec ToTimespec(Time t) {
timespec ts;
- y_absl::Duration d = time_internal::ToUnixDuration(t);
+ y_absl::Duration d = time_internal::ToUnixDuration(t);
if (!time_internal::IsInfiniteDuration(d)) {
ts.tv_sec = time_internal::GetRepHi(d);
if (ts.tv_sec == time_internal::GetRepHi(d)) { // no time_t narrowing
@@ -303,7 +303,7 @@ timespec ToTimespec(Time t) {
return ts;
}
}
- if (d >= y_absl::ZeroDuration()) {
+ if (d >= y_absl::ZeroDuration()) {
ts.tv_sec = std::numeric_limits<time_t>::max();
ts.tv_nsec = 1000 * 1000 * 1000 - 1;
} else {
@@ -315,7 +315,7 @@ timespec ToTimespec(Time t) {
timeval ToTimeval(Time t) {
timeval tv;
- timespec ts = y_absl::ToTimespec(t);
+ timespec ts = y_absl::ToTimespec(t);
tv.tv_sec = ts.tv_sec;
if (tv.tv_sec != ts.tv_sec) { // narrowing
if (ts.tv_sec < 0) {
@@ -336,7 +336,7 @@ Time FromChrono(const std::chrono::system_clock::time_point& tp) {
tp - std::chrono::system_clock::from_time_t(0)));
}
-std::chrono::system_clock::time_point ToChronoTime(y_absl::Time t) {
+std::chrono::system_clock::time_point ToChronoTime(y_absl::Time t) {
using D = std::chrono::system_clock::duration;
auto d = time_internal::ToUnixDuration(t);
if (d < ZeroDuration()) d = Floor(d, FromChrono(D{1}));
@@ -348,9 +348,9 @@ std::chrono::system_clock::time_point ToChronoTime(y_absl::Time t) {
// TimeZone
//
-y_absl::TimeZone::CivilInfo TimeZone::At(Time t) const {
- if (t == y_absl::InfiniteFuture()) return InfiniteFutureCivilInfo();
- if (t == y_absl::InfinitePast()) return InfinitePastCivilInfo();
+y_absl::TimeZone::CivilInfo TimeZone::At(Time t) const {
+ if (t == y_absl::InfiniteFuture()) return InfiniteFutureCivilInfo();
+ if (t == y_absl::InfinitePast()) return InfinitePastCivilInfo();
const auto ud = time_internal::ToUnixDuration(t);
const auto tp = unix_epoch() + cctz::seconds(time_internal::GetRepHi(ud));
@@ -365,7 +365,7 @@ y_absl::TimeZone::CivilInfo TimeZone::At(Time t) const {
return ci;
}
-y_absl::TimeZone::TimeInfo TimeZone::At(CivilSecond ct) const {
+y_absl::TimeZone::TimeInfo TimeZone::At(CivilSecond ct) const {
const cctz::civil_second cs(ct);
const auto cl = cz_.lookup(cs);
@@ -399,7 +399,7 @@ bool TimeZone::PrevTransition(Time t, CivilTransition* trans) const {
// Conversions involving time zones.
//
-y_absl::TimeConversion ConvertDateTime(int64_t year, int mon, int day, int hour,
+y_absl::TimeConversion ConvertDateTime(int64_t year, int mon, int day, int hour,
int min, int sec, TimeZone tz) {
// Avoids years that are too extreme for CivilSecond to normalize.
if (year > 300000000000) return InfiniteFutureTimeConversion();
@@ -431,7 +431,7 @@ y_absl::TimeConversion ConvertDateTime(int64_t year, int mon, int day, int hour,
return tc;
}
-y_absl::Time FromTM(const struct tm& tm, y_absl::TimeZone tz) {
+y_absl::Time FromTM(const struct tm& tm, y_absl::TimeZone tz) {
civil_year_t tm_year = tm.tm_year;
// Avoids years that are too extreme for CivilSecond to normalize.
if (tm_year > 300000000000ll) return InfiniteFuture();
@@ -446,7 +446,7 @@ y_absl::Time FromTM(const struct tm& tm, y_absl::TimeZone tz) {
return tm.tm_isdst == 0 ? ti.post : ti.pre;
}
-struct tm ToTM(y_absl::Time t, y_absl::TimeZone tz) {
+struct tm ToTM(y_absl::Time t, y_absl::TimeZone tz) {
struct tm tm = {};
const auto ci = tz.At(t);
@@ -497,4 +497,4 @@ struct tm ToTM(y_absl::Time t, y_absl::TimeZone tz) {
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/time.h b/contrib/restricted/abseil-cpp-tstring/y_absl/time/time.h
index 2494c3e619..16150ad3b6 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/time.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/time.h
@@ -20,15 +20,15 @@
// in time, durations of time, and formatting and parsing time within a given
// time zone. The following abstractions are defined:
//
-// * `y_absl::Time` defines an absolute, specific instance in time
-// * `y_absl::Duration` defines a signed, fixed-length span of time
-// * `y_absl::TimeZone` defines geopolitical time zone regions (as collected
+// * `y_absl::Time` defines an absolute, specific instance in time
+// * `y_absl::Duration` defines a signed, fixed-length span of time
+// * `y_absl::TimeZone` defines geopolitical time zone regions (as collected
// within the IANA Time Zone database (https://www.iana.org/time-zones)).
//
// Note: Absolute times are distinct from civil times, which refer to the
// human-scale time commonly represented by `YYYY-MM-DD hh:mm:ss`. The mapping
// between absolute and civil times can be specified by use of time zones
-// (`y_absl::TimeZone` within this API). That is:
+// (`y_absl::TimeZone` within this API). That is:
//
// Civil Time = F(Absolute Time, Time Zone)
// Absolute Time = G(Civil Time, Time Zone)
@@ -38,24 +38,24 @@
//
// Example:
//
-// y_absl::TimeZone nyc;
+// y_absl::TimeZone nyc;
// // LoadTimeZone() may fail so it's always better to check for success.
-// if (!y_absl::LoadTimeZone("America/New_York", &nyc)) {
+// if (!y_absl::LoadTimeZone("America/New_York", &nyc)) {
// // handle error case
// }
//
// // My flight leaves NYC on Jan 2, 2017 at 03:04:05
-// y_absl::CivilSecond cs(2017, 1, 2, 3, 4, 5);
-// y_absl::Time takeoff = y_absl::FromCivil(cs, nyc);
+// y_absl::CivilSecond cs(2017, 1, 2, 3, 4, 5);
+// y_absl::Time takeoff = y_absl::FromCivil(cs, nyc);
//
-// y_absl::Duration flight_duration = y_absl::Hours(21) + y_absl::Minutes(35);
-// y_absl::Time landing = takeoff + flight_duration;
+// y_absl::Duration flight_duration = y_absl::Hours(21) + y_absl::Minutes(35);
+// y_absl::Time landing = takeoff + flight_duration;
//
-// y_absl::TimeZone syd;
-// if (!y_absl::LoadTimeZone("Australia/Sydney", &syd)) {
+// y_absl::TimeZone syd;
+// if (!y_absl::LoadTimeZone("Australia/Sydney", &syd)) {
// // handle error case
// }
-// TString s = y_absl::FormatTime(
+// TString s = y_absl::FormatTime(
// "My flight will land in Sydney on %Y-%m-%d at %H:%M:%S",
// landing, syd);
@@ -83,12 +83,12 @@ struct timeval;
#include <type_traits>
#include <utility>
-#include "y_absl/base/macros.h"
-#include "y_absl/strings/string_view.h"
-#include "y_absl/time/civil_time.h"
-#include "y_absl/time/internal/cctz/include/cctz/time_zone.h"
+#include "y_absl/base/macros.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/time/civil_time.h"
+#include "y_absl/time/internal/cctz/include/cctz/time_zone.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
class Duration; // Defined below
@@ -120,9 +120,9 @@ using EnableIfFloat =
// Duration
//
-// The `y_absl::Duration` class represents a signed, fixed-length span of time.
+// The `y_absl::Duration` class represents a signed, fixed-length span of time.
// A `Duration` is generated using a unit-specific factory function, or is
-// the result of subtracting one `y_absl::Time` from another. Durations behave
+// the result of subtracting one `y_absl::Time` from another. Durations behave
// like unit-safe integers and they support all the natural integer-like
// arithmetic operations. Arithmetic overflows and saturates at +/- infinity.
// `Duration` should be passed by value rather than const reference.
@@ -133,23 +133,23 @@ using EnableIfFloat =
//
// Examples:
//
-// constexpr y_absl::Duration ten_ns = y_absl::Nanoseconds(10);
-// constexpr y_absl::Duration min = y_absl::Minutes(1);
-// constexpr y_absl::Duration hour = y_absl::Hours(1);
-// y_absl::Duration dur = 60 * min; // dur == hour
-// y_absl::Duration half_sec = y_absl::Milliseconds(500);
-// y_absl::Duration quarter_sec = 0.25 * y_absl::Seconds(1);
+// constexpr y_absl::Duration ten_ns = y_absl::Nanoseconds(10);
+// constexpr y_absl::Duration min = y_absl::Minutes(1);
+// constexpr y_absl::Duration hour = y_absl::Hours(1);
+// y_absl::Duration dur = 60 * min; // dur == hour
+// y_absl::Duration half_sec = y_absl::Milliseconds(500);
+// y_absl::Duration quarter_sec = 0.25 * y_absl::Seconds(1);
//
// `Duration` values can be easily converted to an integral number of units
// using the division operator.
//
// Example:
//
-// constexpr y_absl::Duration dur = y_absl::Milliseconds(1500);
-// int64_t ns = dur / y_absl::Nanoseconds(1); // ns == 1500000000
-// int64_t ms = dur / y_absl::Milliseconds(1); // ms == 1500
-// int64_t sec = dur / y_absl::Seconds(1); // sec == 1 (subseconds truncated)
-// int64_t min = dur / y_absl::Minutes(1); // min == 0
+// constexpr y_absl::Duration dur = y_absl::Milliseconds(1500);
+// int64_t ns = dur / y_absl::Nanoseconds(1); // ns == 1500000000
+// int64_t ms = dur / y_absl::Milliseconds(1); // ms == 1500
+// int64_t sec = dur / y_absl::Seconds(1); // sec == 1 (subseconds truncated)
+// int64_t min = dur / y_absl::Minutes(1); // min == 0
//
// See the `IDivDuration()` and `FDivDuration()` functions below for details on
// how to access the fractional parts of the quotient.
@@ -272,15 +272,15 @@ inline Duration operator%(Duration lhs, Duration rhs) { return lhs %= rhs; }
//
// Example:
//
-// constexpr y_absl::Duration a =
-// y_absl::Seconds(std::numeric_limits<int64_t>::max()); // big
-// constexpr y_absl::Duration b = y_absl::Nanoseconds(1); // small
+// constexpr y_absl::Duration a =
+// y_absl::Seconds(std::numeric_limits<int64_t>::max()); // big
+// constexpr y_absl::Duration b = y_absl::Nanoseconds(1); // small
//
-// y_absl::Duration rem = a % b;
-// // rem == y_absl::ZeroDuration()
+// y_absl::Duration rem = a % b;
+// // rem == y_absl::ZeroDuration()
//
// // Here, q would overflow int64_t, so rem accounts for the difference.
-// int64_t q = y_absl::IDivDuration(a, b, &rem);
+// int64_t q = y_absl::IDivDuration(a, b, &rem);
// // q == std::numeric_limits<int64_t>::max(), rem == a - b * q
inline int64_t IDivDuration(Duration num, Duration den, Duration* rem) {
return time_internal::IDivDuration(true, num, den,
@@ -297,7 +297,7 @@ inline int64_t IDivDuration(Duration num, Duration den, Duration* rem) {
//
// Example:
//
-// double d = y_absl::FDivDuration(y_absl::Milliseconds(1500), y_absl::Seconds(1));
+// double d = y_absl::FDivDuration(y_absl::Milliseconds(1500), y_absl::Seconds(1));
// // d == 1.5
double FDivDuration(Duration num, Duration den);
@@ -320,8 +320,8 @@ inline Duration AbsDuration(Duration d) {
//
// Example:
//
-// y_absl::Duration d = y_absl::Nanoseconds(123456789);
-// y_absl::Duration a = y_absl::Trunc(d, y_absl::Microseconds(1)); // 123456us
+// y_absl::Duration d = y_absl::Nanoseconds(123456789);
+// y_absl::Duration a = y_absl::Trunc(d, y_absl::Microseconds(1)); // 123456us
Duration Trunc(Duration d, Duration unit);
// Floor()
@@ -331,8 +331,8 @@ Duration Trunc(Duration d, Duration unit);
//
// Example:
//
-// y_absl::Duration d = y_absl::Nanoseconds(123456789);
-// y_absl::Duration b = y_absl::Floor(d, y_absl::Microseconds(1)); // 123456us
+// y_absl::Duration d = y_absl::Nanoseconds(123456789);
+// y_absl::Duration b = y_absl::Floor(d, y_absl::Microseconds(1)); // 123456us
Duration Floor(Duration d, Duration unit);
// Ceil()
@@ -342,8 +342,8 @@ Duration Floor(Duration d, Duration unit);
//
// Example:
//
-// y_absl::Duration d = y_absl::Nanoseconds(123456789);
-// y_absl::Duration c = y_absl::Ceil(d, y_absl::Microseconds(1)); // 123457us
+// y_absl::Duration d = y_absl::Nanoseconds(123456789);
+// y_absl::Duration c = y_absl::Ceil(d, y_absl::Microseconds(1)); // 123457us
Duration Ceil(Duration d, Duration unit);
// InfiniteDuration()
@@ -358,8 +358,8 @@ Duration Ceil(Duration d, Duration unit);
//
// Examples:
//
-// constexpr y_absl::Duration inf = y_absl::InfiniteDuration();
-// const y_absl::Duration d = ... any finite duration ...
+// constexpr y_absl::Duration inf = y_absl::InfiniteDuration();
+// const y_absl::Duration d = ... any finite duration ...
//
// inf == inf + inf
// inf == inf + d
@@ -376,7 +376,7 @@ Duration Ceil(Duration d, Duration unit);
//
// // Division by zero returns infinity, or INT64_MIN/MAX where appropriate.
// inf == d / 0
-// INT64_MAX == d / y_absl::ZeroDuration()
+// INT64_MAX == d / y_absl::ZeroDuration()
//
// The examples involving the `/` operator above also apply to `IDivDuration()`
// and `FDivDuration()`.
@@ -396,13 +396,13 @@ constexpr Duration InfiniteDuration();
// NOTE: no "Days()" factory function exists because "a day" is ambiguous.
// Civil days are not always 24 hours long, and a 24-hour duration often does
// not correspond with a civil day. If a 24-hour duration is needed, use
-// `y_absl::Hours(24)`. If you actually want a civil day, use y_absl::CivilDay
+// `y_absl::Hours(24)`. If you actually want a civil day, use y_absl::CivilDay
// from civil_time.h.
//
// Example:
//
-// y_absl::Duration a = y_absl::Seconds(60);
-// y_absl::Duration b = y_absl::Minutes(1); // b == a
+// y_absl::Duration a = y_absl::Seconds(60);
+// y_absl::Duration b = y_absl::Minutes(1); // b == a
template <typename T, time_internal::EnableIfIntegral<T> = 0>
constexpr Duration Nanoseconds(T n) {
return time_internal::FromInt64(n, std::nano{});
@@ -435,8 +435,8 @@ constexpr Duration Hours(T n) {
//
// Example:
//
-// auto a = y_absl::Seconds(1.5); // OK
-// auto b = y_absl::Milliseconds(1500); // BETTER
+// auto a = y_absl::Seconds(1.5); // OK
+// auto b = y_absl::Milliseconds(1500); // BETTER
template <typename T, time_internal::EnableIfFloat<T> = 0>
Duration Nanoseconds(T n) {
return n * Nanoseconds(1);
@@ -486,8 +486,8 @@ Duration Hours(T n) {
//
// Example:
//
-// y_absl::Duration d = y_absl::Milliseconds(1500);
-// int64_t isec = y_absl::ToInt64Seconds(d); // isec == 1
+// y_absl::Duration d = y_absl::Milliseconds(1500);
+// int64_t isec = y_absl::ToInt64Seconds(d); // isec == 1
ABSL_ATTRIBUTE_PURE_FUNCTION int64_t ToInt64Nanoseconds(Duration d);
ABSL_ATTRIBUTE_PURE_FUNCTION int64_t ToInt64Microseconds(Duration d);
ABSL_ATTRIBUTE_PURE_FUNCTION int64_t ToInt64Milliseconds(Duration d);
@@ -508,8 +508,8 @@ ABSL_ATTRIBUTE_PURE_FUNCTION int64_t ToInt64Hours(Duration d);
//
// Example:
//
-// y_absl::Duration d = y_absl::Milliseconds(1500);
-// double dsec = y_absl::ToDoubleSeconds(d); // dsec == 1.5
+// y_absl::Duration d = y_absl::Milliseconds(1500);
+// double dsec = y_absl::ToDoubleSeconds(d); // dsec == 1.5
ABSL_ATTRIBUTE_PURE_FUNCTION double ToDoubleNanoseconds(Duration d);
ABSL_ATTRIBUTE_PURE_FUNCTION double ToDoubleMicroseconds(Duration d);
ABSL_ATTRIBUTE_PURE_FUNCTION double ToDoubleMilliseconds(Duration d);
@@ -519,12 +519,12 @@ ABSL_ATTRIBUTE_PURE_FUNCTION double ToDoubleHours(Duration d);
// FromChrono()
//
-// Converts any of the pre-defined std::chrono durations to an y_absl::Duration.
+// Converts any of the pre-defined std::chrono durations to an y_absl::Duration.
//
// Example:
//
// std::chrono::milliseconds ms(123);
-// y_absl::Duration d = y_absl::FromChrono(ms);
+// y_absl::Duration d = y_absl::FromChrono(ms);
constexpr Duration FromChrono(const std::chrono::nanoseconds& d);
constexpr Duration FromChrono(const std::chrono::microseconds& d);
constexpr Duration FromChrono(const std::chrono::milliseconds& d);
@@ -539,16 +539,16 @@ constexpr Duration FromChrono(const std::chrono::hours& d);
// ToChronoMinutes()
// ToChronoHours()
//
-// Converts an y_absl::Duration to any of the pre-defined std::chrono durations.
+// Converts an y_absl::Duration to any of the pre-defined std::chrono durations.
// If overflow would occur, the returned value will saturate at the min/max
// chrono duration value instead.
//
// Example:
//
-// y_absl::Duration d = y_absl::Microseconds(123);
-// auto x = y_absl::ToChronoMicroseconds(d);
-// auto y = y_absl::ToChronoNanoseconds(d); // x == y
-// auto z = y_absl::ToChronoSeconds(y_absl::InfiniteDuration());
+// y_absl::Duration d = y_absl::Microseconds(123);
+// auto x = y_absl::ToChronoMicroseconds(d);
+// auto y = y_absl::ToChronoNanoseconds(d); // x == y
+// auto z = y_absl::ToChronoSeconds(y_absl::InfiniteDuration());
// // z == std::chrono::seconds::max()
std::chrono::nanoseconds ToChronoNanoseconds(Duration d);
std::chrono::microseconds ToChronoMicroseconds(Duration d);
@@ -561,7 +561,7 @@ std::chrono::hours ToChronoHours(Duration d);
//
// Returns a string representing the duration in the form "72h3m0.5s".
// Returns "inf" or "-inf" for +/- `InfiniteDuration()`.
-TString FormatDuration(Duration d);
+TString FormatDuration(Duration d);
// Output stream operator.
inline std::ostream& operator<<(std::ostream& os, Duration d) {
@@ -582,35 +582,35 @@ bool ParseDuration(y_absl::string_view dur_string, Duration* d);
// Parses a command-line flag string representation `text` into a a Duration
// value. Duration flags must be specified in a format that is valid input for
// `y_absl::ParseDuration()`.
-bool AbslParseFlag(y_absl::string_view text, Duration* dst, TString* error);
+bool AbslParseFlag(y_absl::string_view text, Duration* dst, TString* error);
// AbslUnparseFlag()
//
// Unparses a Duration value into a command-line string representation using
// the format specified by `y_absl::ParseDuration()`.
-TString AbslUnparseFlag(Duration d);
+TString AbslUnparseFlag(Duration d);
ABSL_DEPRECATED("Use AbslParseFlag() instead.")
-bool ParseFlag(const TString& text, Duration* dst, TString* error);
+bool ParseFlag(const TString& text, Duration* dst, TString* error);
ABSL_DEPRECATED("Use AbslUnparseFlag() instead.")
-TString UnparseFlag(Duration d);
+TString UnparseFlag(Duration d);
// Time
//
-// An `y_absl::Time` represents a specific instant in time. Arithmetic operators
+// An `y_absl::Time` represents a specific instant in time. Arithmetic operators
// are provided for naturally expressing time calculations. Instances are
-// created using `y_absl::Now()` and the `y_absl::From*()` factory functions that
+// created using `y_absl::Now()` and the `y_absl::From*()` factory functions that
// accept the gamut of other time representations. Formatting and parsing
-// functions are provided for conversion to and from strings. `y_absl::Time`
+// functions are provided for conversion to and from strings. `y_absl::Time`
// should be passed by value rather than const reference.
//
-// `y_absl::Time` assumes there are 60 seconds in a minute, which means the
+// `y_absl::Time` assumes there are 60 seconds in a minute, which means the
// underlying time scales must be "smeared" to eliminate leap seconds.
// See https://developers.google.com/time/smear.
//
-// Even though `y_absl::Time` supports a wide range of timestamps, exercise
-// caution when using values in the distant past. `y_absl::Time` uses the
+// Even though `y_absl::Time` supports a wide range of timestamps, exercise
+// caution when using values in the distant past. `y_absl::Time` uses the
// Proleptic Gregorian calendar, which extends the Gregorian calendar backward
// to dates before its introduction in 1582.
// See https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar
@@ -623,10 +623,10 @@ TString UnparseFlag(Duration d);
// breakdown of future timestamps is subject to the whim of regional
// governments.
//
-// The `y_absl::Time` class represents an instant in time as a count of clock
+// The `y_absl::Time` class represents an instant in time as a count of clock
// ticks of some granularity (resolution) from some starting point (epoch).
//
-// `y_absl::Time` uses a resolution that is high enough to avoid loss in
+// `y_absl::Time` uses a resolution that is high enough to avoid loss in
// precision, and a range that is wide enough to avoid overflow, when
// converting between tick counts in most Google time scales (i.e., resolution
// of at least one nanosecond, and range +/-100 billion years). Conversions
@@ -635,9 +635,9 @@ TString UnparseFlag(Duration d);
//
// Examples:
//
-// y_absl::Time t1 = ...;
-// y_absl::Time t2 = t1 + y_absl::Minutes(2);
-// y_absl::Duration d = t2 - t1; // == y_absl::Minutes(2)
+// y_absl::Time t1 = ...;
+// y_absl::Time t2 = t1 + y_absl::Minutes(2);
+// y_absl::Duration d = t2 - t1; // == y_absl::Minutes(2)
//
class Time {
public:
@@ -648,10 +648,10 @@ class Time {
// readable by explicitly initializing all instances before use.
//
// Example:
- // y_absl::Time t = y_absl::UnixEpoch();
- // y_absl::Time t = y_absl::Now();
- // y_absl::Time t = y_absl::TimeFromTimeval(tv);
- // y_absl::Time t = y_absl::InfinitePast();
+ // y_absl::Time t = y_absl::UnixEpoch();
+ // y_absl::Time t = y_absl::Now();
+ // y_absl::Time t = y_absl::TimeFromTimeval(tv);
+ // y_absl::Time t = y_absl::InfinitePast();
constexpr Time() = default;
// Copyable.
@@ -671,12 +671,12 @@ class Time {
// Time::Breakdown
//
// The calendar and wall-clock (aka "civil time") components of an
- // `y_absl::Time` in a certain `y_absl::TimeZone`. This struct is not
+ // `y_absl::Time` in a certain `y_absl::TimeZone`. This struct is not
// intended to represent an instant in time. So, rather than passing
- // a `Time::Breakdown` to a function, pass an `y_absl::Time` and an
- // `y_absl::TimeZone`.
+ // a `Time::Breakdown` to a function, pass an `y_absl::Time` and an
+ // `y_absl::TimeZone`.
//
- // Deprecated. Use `y_absl::TimeZone::CivilInfo`.
+ // Deprecated. Use `y_absl::TimeZone::CivilInfo`.
struct
Breakdown {
int64_t year; // year (e.g., 2013)
@@ -703,7 +703,7 @@ class Time {
//
// Returns the breakdown of this instant in the given TimeZone.
//
- // Deprecated. Use `y_absl::TimeZone::At(Time)`.
+ // Deprecated. Use `y_absl::TimeZone::At(Time)`.
Breakdown In(TimeZone tz) const;
template <typename H>
@@ -740,12 +740,12 @@ inline Duration operator-(Time lhs, Time rhs) { return lhs.rep_ - rhs.rep_; }
// UnixEpoch()
//
-// Returns the `y_absl::Time` representing "1970-01-01 00:00:00.0 +0000".
+// Returns the `y_absl::Time` representing "1970-01-01 00:00:00.0 +0000".
constexpr Time UnixEpoch() { return Time(); }
// UniversalEpoch()
//
-// Returns the `y_absl::Time` representing "0001-01-01 00:00:00.0 +0000", the
+// Returns the `y_absl::Time` representing "0001-01-01 00:00:00.0 +0000", the
// epoch of the ICU Universal Time Scale.
constexpr Time UniversalEpoch() {
// 719162 is the number of days from 0001-01-01 to 1970-01-01,
@@ -755,7 +755,7 @@ constexpr Time UniversalEpoch() {
// InfiniteFuture()
//
-// Returns an `y_absl::Time` that is infinitely far in the future.
+// Returns an `y_absl::Time` that is infinitely far in the future.
constexpr Time InfiniteFuture() {
return Time(
time_internal::MakeDuration((std::numeric_limits<int64_t>::max)(), ~0U));
@@ -763,7 +763,7 @@ constexpr Time InfiniteFuture() {
// InfinitePast()
//
-// Returns an `y_absl::Time` that is infinitely far in the past.
+// Returns an `y_absl::Time` that is infinitely far in the past.
constexpr Time InfinitePast() {
return Time(
time_internal::MakeDuration((std::numeric_limits<int64_t>::min)(), ~0U));
@@ -777,7 +777,7 @@ constexpr Time InfinitePast() {
// FromUDate()
// FromUniversal()
//
-// Creates an `y_absl::Time` from a variety of other representations.
+// Creates an `y_absl::Time` from a variety of other representations.
constexpr Time FromUnixNanos(int64_t ns);
constexpr Time FromUnixMicros(int64_t us);
constexpr Time FromUnixMillis(int64_t ms);
@@ -794,7 +794,7 @@ Time FromUniversal(int64_t universal);
// ToUDate()
// ToUniversal()
//
-// Converts an `y_absl::Time` to a variety of other representations. Note that
+// Converts an `y_absl::Time` to a variety of other representations. Note that
// these operations round down toward negative infinity where necessary to
// adjust to the resolution of the result type. Beware of possible time_t
// over/underflow in ToTime{T,val,spec}() on 32-bit platforms.
@@ -831,25 +831,25 @@ timeval ToTimeval(Time t);
// FromChrono()
//
-// Converts a std::chrono::system_clock::time_point to an y_absl::Time.
+// Converts a std::chrono::system_clock::time_point to an y_absl::Time.
//
// Example:
//
// auto tp = std::chrono::system_clock::from_time_t(123);
-// y_absl::Time t = y_absl::FromChrono(tp);
-// // t == y_absl::FromTimeT(123)
+// y_absl::Time t = y_absl::FromChrono(tp);
+// // t == y_absl::FromTimeT(123)
Time FromChrono(const std::chrono::system_clock::time_point& tp);
// ToChronoTime()
//
-// Converts an y_absl::Time to a std::chrono::system_clock::time_point. If
+// Converts an y_absl::Time to a std::chrono::system_clock::time_point. If
// overflow would occur, the returned value will saturate at the min/max time
// point value instead.
//
// Example:
//
-// y_absl::Time t = y_absl::FromTimeT(123);
-// auto tp = y_absl::ToChronoTime(t);
+// y_absl::Time t = y_absl::FromTimeT(123);
+// auto tp = y_absl::ToChronoTime(t);
// // tp == std::chrono::system_clock::from_time_t(123);
std::chrono::system_clock::time_point ToChronoTime(Time);
@@ -865,29 +865,29 @@ std::chrono::system_clock::time_point ToChronoTime(Time);
// Note: A UTC offset (or 'Z' indicating a zero-offset from UTC) is required.
//
// Additionally, if you'd like to specify a time as a count of
-// seconds/milliseconds/etc from the Unix epoch, use an y_absl::Duration flag
-// and add that duration to y_absl::UnixEpoch() to get an y_absl::Time.
-bool AbslParseFlag(y_absl::string_view text, Time* t, TString* error);
+// seconds/milliseconds/etc from the Unix epoch, use an y_absl::Duration flag
+// and add that duration to y_absl::UnixEpoch() to get an y_absl::Time.
+bool AbslParseFlag(y_absl::string_view text, Time* t, TString* error);
// AbslUnparseFlag()
//
// Unparses a Time value into a command-line string representation using
// the format specified by `y_absl::ParseTime()`.
-TString AbslUnparseFlag(Time t);
+TString AbslUnparseFlag(Time t);
ABSL_DEPRECATED("Use AbslParseFlag() instead.")
-bool ParseFlag(const TString& text, Time* t, TString* error);
+bool ParseFlag(const TString& text, Time* t, TString* error);
ABSL_DEPRECATED("Use AbslUnparseFlag() instead.")
-TString UnparseFlag(Time t);
+TString UnparseFlag(Time t);
// TimeZone
//
-// The `y_absl::TimeZone` is an opaque, small, value-type class representing a
+// The `y_absl::TimeZone` is an opaque, small, value-type class representing a
// geo-political region within which particular rules are used for converting
-// between absolute and civil times (see https://git.io/v59Ly). `y_absl::TimeZone`
+// between absolute and civil times (see https://git.io/v59Ly). `y_absl::TimeZone`
// values are named using the TZ identifiers from the IANA Time Zone Database,
-// such as "America/Los_Angeles" or "Australia/Sydney". `y_absl::TimeZone` values
-// are created from factory functions such as `y_absl::LoadTimeZone()`. Note:
+// such as "America/Los_Angeles" or "Australia/Sydney". `y_absl::TimeZone` values
+// are created from factory functions such as `y_absl::LoadTimeZone()`. Note:
// strings like "PST" and "EDT" are not valid TZ identifiers. Prefer to pass by
// value rather than const reference.
//
@@ -896,11 +896,11 @@ TString UnparseFlag(Time t);
//
// Examples:
//
-// y_absl::TimeZone utc = y_absl::UTCTimeZone();
-// y_absl::TimeZone pst = y_absl::FixedTimeZone(-8 * 60 * 60);
-// y_absl::TimeZone loc = y_absl::LocalTimeZone();
-// y_absl::TimeZone lax;
-// if (!y_absl::LoadTimeZone("America/Los_Angeles", &lax)) {
+// y_absl::TimeZone utc = y_absl::UTCTimeZone();
+// y_absl::TimeZone pst = y_absl::FixedTimeZone(-8 * 60 * 60);
+// y_absl::TimeZone loc = y_absl::LocalTimeZone();
+// y_absl::TimeZone lax;
+// if (!y_absl::LoadTimeZone("America/Los_Angeles", &lax)) {
// // handle error case
// }
//
@@ -919,14 +919,14 @@ class TimeZone {
explicit operator time_internal::cctz::time_zone() const { return cz_; }
- TString name() const { return cz_.name(); }
+ TString name() const { return cz_.name(); }
// TimeZone::CivilInfo
//
// Information about the civil time corresponding to an absolute time.
// This struct is not intended to represent an instant in time. So, rather
- // than passing a `TimeZone::CivilInfo` to a function, pass an `y_absl::Time`
- // and an `y_absl::TimeZone`.
+ // than passing a `TimeZone::CivilInfo` to a function, pass an `y_absl::Time`
+ // and an `y_absl::TimeZone`.
struct CivilInfo {
CivilSecond cs;
Duration subsecond;
@@ -943,15 +943,15 @@ class TimeZone {
// TimeZone::At(Time)
//
- // Returns the civil time for this TimeZone at a certain `y_absl::Time`.
+ // Returns the civil time for this TimeZone at a certain `y_absl::Time`.
// If the input time is infinite, the output civil second will be set to
// CivilSecond::max() or min(), and the subsecond will be infinite.
//
// Example:
//
- // const auto epoch = lax.At(y_absl::UnixEpoch());
+ // const auto epoch = lax.At(y_absl::UnixEpoch());
// // epoch.cs == 1969-12-31 16:00:00
- // // epoch.subsecond == y_absl::ZeroDuration()
+ // // epoch.subsecond == y_absl::ZeroDuration()
// // epoch.offset == -28800
// // epoch.is_dst == false
// // epoch.abbr == "PST"
@@ -969,8 +969,8 @@ class TimeZone {
// transition skips or repeats civil times---in the United States,
// March 13, 2011 02:15 never occurred, while November 6, 2011 01:15
// occurred twice---so requests for such times are not well-defined.
- // To account for these possibilities, `y_absl::TimeZone::TimeInfo` is
- // richer than just a single `y_absl::Time`.
+ // To account for these possibilities, `y_absl::TimeZone::TimeInfo` is
+ // richer than just a single `y_absl::Time`.
struct TimeInfo {
enum CivilKind {
UNIQUE, // the civil time was singular (pre == trans == post)
@@ -984,29 +984,29 @@ class TimeZone {
// TimeZone::At(CivilSecond)
//
- // Returns an `y_absl::TimeInfo` containing the absolute time(s) for this
- // TimeZone at an `y_absl::CivilSecond`. When the civil time is skipped or
+ // Returns an `y_absl::TimeInfo` containing the absolute time(s) for this
+ // TimeZone at an `y_absl::CivilSecond`. When the civil time is skipped or
// repeated, returns times calculated using the pre-transition and post-
// transition UTC offsets, plus the transition time itself.
//
// Examples:
//
// // A unique civil time
- // const auto jan01 = lax.At(y_absl::CivilSecond(2011, 1, 1, 0, 0, 0));
+ // const auto jan01 = lax.At(y_absl::CivilSecond(2011, 1, 1, 0, 0, 0));
// // jan01.kind == TimeZone::TimeInfo::UNIQUE
// // jan01.pre is 2011-01-01 00:00:00 -0800
// // jan01.trans is 2011-01-01 00:00:00 -0800
// // jan01.post is 2011-01-01 00:00:00 -0800
//
// // A Spring DST transition, when there is a gap in civil time
- // const auto mar13 = lax.At(y_absl::CivilSecond(2011, 3, 13, 2, 15, 0));
+ // const auto mar13 = lax.At(y_absl::CivilSecond(2011, 3, 13, 2, 15, 0));
// // mar13.kind == TimeZone::TimeInfo::SKIPPED
// // mar13.pre is 2011-03-13 03:15:00 -0700
// // mar13.trans is 2011-03-13 03:00:00 -0700
// // mar13.post is 2011-03-13 01:15:00 -0800
//
// // A Fall DST transition, when civil times are repeated
- // const auto nov06 = lax.At(y_absl::CivilSecond(2011, 11, 6, 1, 15, 0));
+ // const auto nov06 = lax.At(y_absl::CivilSecond(2011, 11, 6, 1, 15, 0));
// // nov06.kind == TimeZone::TimeInfo::REPEATED
// // nov06.pre is 2011-11-06 01:15:00 -0700
// // nov06.trans is 2011-11-06 01:00:00 -0800
@@ -1035,11 +1035,11 @@ class TimeZone {
// occur.
//
// Example:
- // y_absl::TimeZone nyc;
- // if (!y_absl::LoadTimeZone("America/New_York", &nyc)) { ... }
- // const auto now = y_absl::Now();
- // auto t = y_absl::InfinitePast();
- // y_absl::TimeZone::CivilTransition trans;
+ // y_absl::TimeZone nyc;
+ // if (!y_absl::LoadTimeZone("America/New_York", &nyc)) { ... }
+ // const auto now = y_absl::Now();
+ // auto t = y_absl::InfinitePast();
+ // y_absl::TimeZone::CivilTransition trans;
// while (t <= now && nyc.NextTransition(t, &trans)) {
// // transition: trans.from -> trans.to
// t = nyc.At(trans.to).trans;
@@ -1120,9 +1120,9 @@ inline TimeZone LocalTimeZone() {
//
// Example:
//
-// y_absl::Time t = ...;
-// y_absl::TimeZone tz = ...;
-// const auto cd = y_absl::ToCivilDay(t, tz);
+// y_absl::Time t = ...;
+// y_absl::TimeZone tz = ...;
+// const auto cd = y_absl::ToCivilDay(t, tz);
inline CivilSecond ToCivilSecond(Time t, TimeZone tz) {
return tz.At(t).cs; // already a CivilSecond
}
@@ -1162,12 +1162,12 @@ inline Time FromCivil(CivilSecond ct, TimeZone tz) {
// TimeConversion
//
-// An `y_absl::TimeConversion` represents the conversion of year, month, day,
+// An `y_absl::TimeConversion` represents the conversion of year, month, day,
// hour, minute, and second values (i.e., a civil time), in a particular
-// `y_absl::TimeZone`, to a time instant (an absolute time), as returned by
-// `y_absl::ConvertDateTime()`. Legacy version of `y_absl::TimeZone::TimeInfo`.
+// `y_absl::TimeZone`, to a time instant (an absolute time), as returned by
+// `y_absl::ConvertDateTime()`. Legacy version of `y_absl::TimeZone::TimeInfo`.
//
-// Deprecated. Use `y_absl::TimeZone::TimeInfo`.
+// Deprecated. Use `y_absl::TimeZone::TimeInfo`.
struct
TimeConversion {
Time pre; // time calculated using the pre-transition offset
@@ -1186,7 +1186,7 @@ struct
// ConvertDateTime()
//
-// Legacy version of `y_absl::TimeZone::At(y_absl::CivilSecond)` that takes
+// Legacy version of `y_absl::TimeZone::At(y_absl::CivilSecond)` that takes
// the civil time as six, separate values (YMDHMS).
//
// The input month, day, hour, minute, and second values can be outside
@@ -1196,31 +1196,31 @@ struct
// Example:
//
// // "October 32" normalizes to "November 1".
-// y_absl::TimeConversion tc =
-// y_absl::ConvertDateTime(2013, 10, 32, 8, 30, 0, lax);
+// y_absl::TimeConversion tc =
+// y_absl::ConvertDateTime(2013, 10, 32, 8, 30, 0, lax);
// // tc.kind == TimeConversion::UNIQUE && tc.normalized == true
-// // y_absl::ToCivilDay(tc.pre, tz).month() == 11
-// // y_absl::ToCivilDay(tc.pre, tz).day() == 1
+// // y_absl::ToCivilDay(tc.pre, tz).month() == 11
+// // y_absl::ToCivilDay(tc.pre, tz).day() == 1
//
-// Deprecated. Use `y_absl::TimeZone::At(CivilSecond)`.
+// Deprecated. Use `y_absl::TimeZone::At(CivilSecond)`.
TimeConversion ConvertDateTime(int64_t year, int mon, int day, int hour,
int min, int sec, TimeZone tz);
// FromDateTime()
//
-// A convenience wrapper for `y_absl::ConvertDateTime()` that simply returns
-// the "pre" `y_absl::Time`. That is, the unique result, or the instant that
+// A convenience wrapper for `y_absl::ConvertDateTime()` that simply returns
+// the "pre" `y_absl::Time`. That is, the unique result, or the instant that
// is correct using the pre-transition offset (as if the transition never
// happened).
//
// Example:
//
-// y_absl::Time t = y_absl::FromDateTime(2017, 9, 26, 9, 30, 0, lax);
+// y_absl::Time t = y_absl::FromDateTime(2017, 9, 26, 9, 30, 0, lax);
// // t = 2017-09-26 09:30:00 -0700
//
-// Deprecated. Use `y_absl::FromCivil(CivilSecond, TimeZone)`. Note that the
+// Deprecated. Use `y_absl::FromCivil(CivilSecond, TimeZone)`. Note that the
// behavior of `FromCivil()` differs from `FromDateTime()` for skipped civil
-// times. If you care about that see `y_absl::TimeZone::At(y_absl::CivilSecond)`.
+// times. If you care about that see `y_absl::TimeZone::At(y_absl::CivilSecond)`.
inline Time FromDateTime(int64_t year, int mon, int day, int hour,
int min, int sec, TimeZone tz) {
return ConvertDateTime(year, mon, day, hour, min, sec, tz).pre;
@@ -1229,7 +1229,7 @@ inline Time FromDateTime(int64_t year, int mon, int day, int hour,
// FromTM()
//
// Converts the `tm_year`, `tm_mon`, `tm_mday`, `tm_hour`, `tm_min`, and
-// `tm_sec` fields to an `y_absl::Time` using the given time zone. See ctime(3)
+// `tm_sec` fields to an `y_absl::Time` using the given time zone. See ctime(3)
// for a description of the expected values of the tm fields. If the civil time
// is unique (see `y_absl::TimeZone::At(y_absl::CivilSecond)` above), the matching
// time instant is returned. Otherwise, the `tm_isdst` field is consulted to
@@ -1243,7 +1243,7 @@ Time FromTM(const struct tm& tm, TimeZone tz);
// ToTM()
//
-// Converts the given `y_absl::Time` to a struct tm using the given time zone.
+// Converts the given `y_absl::Time` to a struct tm using the given time zone.
// See ctime(3) for a description of the values of the tm fields.
struct tm ToTM(Time t, TimeZone tz);
@@ -1269,7 +1269,7 @@ ABSL_DLL extern const char RFC1123_no_wday[]; // %d %b %E4Y %H:%M:%S %z
// FormatTime()
//
-// Formats the given `y_absl::Time` in the `y_absl::TimeZone` according to the
+// Formats the given `y_absl::Time` in the `y_absl::TimeZone` according to the
// provided format string. Uses strftime()-like formatting options, with
// the following extensions:
//
@@ -1294,23 +1294,23 @@ ABSL_DLL extern const char RFC1123_no_wday[]; // %d %b %E4Y %H:%M:%S %z
//
// Example:
//
-// y_absl::CivilSecond cs(2013, 1, 2, 3, 4, 5);
-// y_absl::Time t = y_absl::FromCivil(cs, lax);
-// TString f = y_absl::FormatTime("%H:%M:%S", t, lax); // "03:04:05"
-// f = y_absl::FormatTime("%H:%M:%E3S", t, lax); // "03:04:05.000"
+// y_absl::CivilSecond cs(2013, 1, 2, 3, 4, 5);
+// y_absl::Time t = y_absl::FromCivil(cs, lax);
+// TString f = y_absl::FormatTime("%H:%M:%S", t, lax); // "03:04:05"
+// f = y_absl::FormatTime("%H:%M:%E3S", t, lax); // "03:04:05.000"
//
-// Note: If the given `y_absl::Time` is `y_absl::InfiniteFuture()`, the returned
-// string will be exactly "infinite-future". If the given `y_absl::Time` is
-// `y_absl::InfinitePast()`, the returned string will be exactly "infinite-past".
-// In both cases the given format string and `y_absl::TimeZone` are ignored.
+// Note: If the given `y_absl::Time` is `y_absl::InfiniteFuture()`, the returned
+// string will be exactly "infinite-future". If the given `y_absl::Time` is
+// `y_absl::InfinitePast()`, the returned string will be exactly "infinite-past".
+// In both cases the given format string and `y_absl::TimeZone` are ignored.
//
TString FormatTime(y_absl::string_view format, Time t, TimeZone tz);
// Convenience functions that format the given time using the RFC3339_full
// format. The first overload uses the provided TimeZone, while the second
// uses LocalTimeZone().
-TString FormatTime(Time t, TimeZone tz);
-TString FormatTime(Time t);
+TString FormatTime(Time t, TimeZone tz);
+TString FormatTime(Time t);
// Output stream operator.
inline std::ostream& operator<<(std::ostream& os, Time t) {
@@ -1320,7 +1320,7 @@ inline std::ostream& operator<<(std::ostream& os, Time t) {
// ParseTime()
//
// Parses an input string according to the provided format string and
-// returns the corresponding `y_absl::Time`. Uses strftime()-like formatting
+// returns the corresponding `y_absl::Time`. Uses strftime()-like formatting
// options, with the same extensions as FormatTime(), but with the
// exceptions that %E#S is interpreted as %E*S, and %E#f as %E*f. %Ez
// and %E*z also accept the same inputs, which (along with %z) includes
@@ -1334,20 +1334,20 @@ inline std::ostream& operator<<(std::ostream& os, Time t) {
//
// "1970-01-01 00:00:00.0 +0000"
//
-// For example, parsing a string of "15:45" (%H:%M) will return an y_absl::Time
+// For example, parsing a string of "15:45" (%H:%M) will return an y_absl::Time
// that represents "1970-01-01 15:45:00.0 +0000".
//
// Note that since ParseTime() returns time instants, it makes the most sense
// to parse fully-specified date/time strings that include a UTC offset (%z,
// %Ez, or %E*z).
//
-// Note also that `y_absl::ParseTime()` only heeds the fields year, month, day,
+// Note also that `y_absl::ParseTime()` only heeds the fields year, month, day,
// hour, minute, (fractional) second, and UTC offset. Other fields, like
// weekday (%a or %A), while parsed for syntactic validity, are ignored
// in the conversion.
//
// Date and time fields that are out-of-range will be treated as errors
-// rather than normalizing them like `y_absl::CivilSecond` does. For example,
+// rather than normalizing them like `y_absl::CivilSecond` does. For example,
// it is an error to parse the date "Oct 32, 2013" because 32 is out of range.
//
// A leap second of ":60" is normalized to ":00" of the following minute
@@ -1362,12 +1362,12 @@ inline std::ostream& operator<<(std::ostream& os, Time t) {
// to the "err" out param if it is non-null.
//
// Note: If the input string is exactly "infinite-future", the returned
-// `y_absl::Time` will be `y_absl::InfiniteFuture()` and `true` will be returned.
-// If the input string is "infinite-past", the returned `y_absl::Time` will be
-// `y_absl::InfinitePast()` and `true` will be returned.
+// `y_absl::Time` will be `y_absl::InfiniteFuture()` and `true` will be returned.
+// If the input string is "infinite-past", the returned `y_absl::Time` will be
+// `y_absl::InfinitePast()` and `true` will be returned.
//
bool ParseTime(y_absl::string_view format, y_absl::string_view input, Time* time,
- TString* err);
+ TString* err);
// Like ParseTime() above, but if the format string does not contain a UTC
// offset specification (%z/%Ez/%E*z) then the input is interpreted in the
@@ -1377,7 +1377,7 @@ bool ParseTime(y_absl::string_view format, y_absl::string_view input, Time* time
// by TimeZone::TimeInfo) is returned. For these reasons we recommend that
// all date/time strings include a UTC offset so they're context independent.
bool ParseTime(y_absl::string_view format, y_absl::string_view input, TimeZone tz,
- Time* time, TString* err);
+ Time* time, TString* err);
// ============================================================================
// Implementation Details Follow
@@ -1477,7 +1477,7 @@ constexpr auto IsValidRep64(char) -> bool {
return false;
}
-// Converts a std::chrono::duration to an y_absl::Duration.
+// Converts a std::chrono::duration to an y_absl::Duration.
template <typename Rep, typename Period>
constexpr Duration FromChrono(const std::chrono::duration<Rep, Period>& d) {
static_assert(IsValidRep64<Rep>(0), "duration::rep is invalid");
@@ -1510,7 +1510,7 @@ inline int64_t ToInt64(Duration d, std::ratio<3600>) {
return ToInt64Hours(d);
}
-// Converts an y_absl::Duration to a chrono duration of type T.
+// Converts an y_absl::Duration to a chrono duration of type T.
template <typename T>
T ToChronoDuration(Duration d) {
using Rep = typename T::rep;
@@ -1611,6 +1611,6 @@ constexpr Time FromTimeT(time_t t) {
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_TIME_TIME_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/time_zone/ya.make b/contrib/restricted/abseil-cpp-tstring/y_absl/time/time_zone/ya.make
index 363df14f7d..d7e1dc0c26 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/time_zone/ya.make
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/time_zone/ya.make
@@ -21,7 +21,7 @@ ENDIF()
NO_COMPILER_WARNINGS()
-SRCDIR(contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src)
+SRCDIR(contrib/restricted/abseil-cpp-tstring/y_absl/time/internal/cctz/src)
SRCS(
time_zone_fixed.cc
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/time/ya.make b/contrib/restricted/abseil-cpp-tstring/y_absl/time/ya.make
index f6d3bd0ced..37cc779265 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/time/ya.make
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/time/ya.make
@@ -15,16 +15,16 @@ LICENSE(
LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
PEERDIR(
- contrib/restricted/abseil-cpp-tstring/y_absl/base
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/throw_delegate
- contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
- contrib/restricted/abseil-cpp-tstring/y_absl/numeric
- contrib/restricted/abseil-cpp-tstring/y_absl/strings
+ contrib/restricted/abseil-cpp-tstring/y_absl/base
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/throw_delegate
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
+ contrib/restricted/abseil-cpp-tstring/y_absl/numeric
+ contrib/restricted/abseil-cpp-tstring/y_absl/strings
contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/absl_strings_internal
- contrib/restricted/abseil-cpp-tstring/y_absl/time/civil_time
- contrib/restricted/abseil-cpp-tstring/y_absl/time/time_zone
+ contrib/restricted/abseil-cpp-tstring/y_absl/time/civil_time
+ contrib/restricted/abseil-cpp-tstring/y_absl/time/time_zone
)
ADDINCL(
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/types/any.h b/contrib/restricted/abseil-cpp-tstring/y_absl/types/any.h
index c743f03b4c..f03d940ed9 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/types/any.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/types/any.h
@@ -17,33 +17,33 @@
// any.h
// -----------------------------------------------------------------------------
//
-// This header file define the `y_absl::any` type for holding a type-safe value
-// of any type. The 'y_absl::any` type is useful for providing a way to hold
+// This header file define the `y_absl::any` type for holding a type-safe value
+// of any type. The 'y_absl::any` type is useful for providing a way to hold
// something that is, as yet, unspecified. Such unspecified types
// traditionally are passed between API boundaries until they are later cast to
// their "destination" types. To cast to such a destination type, use
-// `y_absl::any_cast()`. Note that when casting an `y_absl::any`, you must cast it
+// `y_absl::any_cast()`. Note that when casting an `y_absl::any`, you must cast it
// to an explicit type; implicit conversions will throw.
//
// Example:
//
-// auto a = y_absl::any(65);
-// y_absl::any_cast<int>(a); // 65
-// y_absl::any_cast<char>(a); // throws y_absl::bad_any_cast
-// y_absl::any_cast<TString>(a); // throws y_absl::bad_any_cast
+// auto a = y_absl::any(65);
+// y_absl::any_cast<int>(a); // 65
+// y_absl::any_cast<char>(a); // throws y_absl::bad_any_cast
+// y_absl::any_cast<TString>(a); // throws y_absl::bad_any_cast
//
-// `y_absl::any` is a C++11 compatible version of the C++17 `std::any` abstraction
+// `y_absl::any` is a C++11 compatible version of the C++17 `std::any` abstraction
// and is designed to be a drop-in replacement for code compliant with C++17.
//
// Traditionally, the behavior of casting to a temporary unspecified type has
// been accomplished with the `void *` paradigm, where the pointer was to some
-// other unspecified type. `y_absl::any` provides an "owning" version of `void *`
+// other unspecified type. `y_absl::any` provides an "owning" version of `void *`
// that avoids issues of pointer management.
//
-// Note: just as in the case of `void *`, use of `y_absl::any` (and its C++17
+// Note: just as in the case of `void *`, use of `y_absl::any` (and its C++17
// version `std::any`) is a code smell indicating that your API might not be
// constructed correctly. We have seen that most uses of `any` are unwarranted,
-// and `y_absl::any`, like `std::any`, is difficult to use properly. Before using
+// and `y_absl::any`, like `std::any`, is difficult to use properly. Before using
// this abstraction, make sure that you should not instead be rewriting your
// code to be more specific.
//
@@ -53,21 +53,21 @@
#ifndef ABSL_TYPES_ANY_H_
#define ABSL_TYPES_ANY_H_
-#include "y_absl/base/config.h"
-#include "y_absl/utility/utility.h"
+#include "y_absl/base/config.h"
+#include "y_absl/utility/utility.h"
#ifdef ABSL_USES_STD_ANY
#include <any> // IWYU pragma: export
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
using std::any;
using std::any_cast;
using std::bad_any_cast;
using std::make_any;
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#else // ABSL_USES_STD_ANY
@@ -81,9 +81,9 @@ ABSL_NAMESPACE_END
#include <utility>
#include "y_absl/base/internal/fast_type_id.h"
-#include "y_absl/base/macros.h"
-#include "y_absl/meta/type_traits.h"
-#include "y_absl/types/bad_any_cast.h"
+#include "y_absl/base/macros.h"
+#include "y_absl/meta/type_traits.h"
+#include "y_absl/types/bad_any_cast.h"
// NOTE: This macro is an implementation detail that is undefined at the bottom
// of the file. It is not intended for expansion directly from user code.
@@ -93,107 +93,107 @@ ABSL_NAMESPACE_END
#define ABSL_ANY_DETAIL_HAS_RTTI 1
#endif // !defined(__GNUC__) || defined(__GXX_RTTI)
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
class any;
// swap()
//
-// Swaps two `y_absl::any` values. Equivalent to `x.swap(y) where `x` and `y` are
-// `y_absl::any` types.
+// Swaps two `y_absl::any` values. Equivalent to `x.swap(y) where `x` and `y` are
+// `y_absl::any` types.
void swap(any& x, any& y) noexcept;
// make_any()
//
-// Constructs an `y_absl::any` of type `T` with the given arguments.
+// Constructs an `y_absl::any` of type `T` with the given arguments.
template <typename T, typename... Args>
any make_any(Args&&... args);
-// Overload of `y_absl::make_any()` for constructing an `y_absl::any` type from an
+// Overload of `y_absl::make_any()` for constructing an `y_absl::any` type from an
// initializer list.
template <typename T, typename U, typename... Args>
any make_any(std::initializer_list<U> il, Args&&... args);
// any_cast()
//
-// Statically casts the value of a `const y_absl::any` type to the given type.
-// This function will throw `y_absl::bad_any_cast` if the stored value type of the
-// `y_absl::any` does not match the cast.
+// Statically casts the value of a `const y_absl::any` type to the given type.
+// This function will throw `y_absl::bad_any_cast` if the stored value type of the
+// `y_absl::any` does not match the cast.
//
// `any_cast()` can also be used to get a reference to the internal storage iff
// a reference type is passed as its `ValueType`:
//
// Example:
//
-// y_absl::any my_any = std::vector<int>();
-// y_absl::any_cast<std::vector<int>&>(my_any).push_back(42);
+// y_absl::any my_any = std::vector<int>();
+// y_absl::any_cast<std::vector<int>&>(my_any).push_back(42);
template <typename ValueType>
ValueType any_cast(const any& operand);
// Overload of `any_cast()` to statically cast the value of a non-const
-// `y_absl::any` type to the given type. This function will throw
-// `y_absl::bad_any_cast` if the stored value type of the `y_absl::any` does not
+// `y_absl::any` type to the given type. This function will throw
+// `y_absl::bad_any_cast` if the stored value type of the `y_absl::any` does not
// match the cast.
template <typename ValueType>
ValueType any_cast(any& operand); // NOLINT(runtime/references)
-// Overload of `any_cast()` to statically cast the rvalue of an `y_absl::any`
-// type. This function will throw `y_absl::bad_any_cast` if the stored value type
-// of the `y_absl::any` does not match the cast.
+// Overload of `any_cast()` to statically cast the rvalue of an `y_absl::any`
+// type. This function will throw `y_absl::bad_any_cast` if the stored value type
+// of the `y_absl::any` does not match the cast.
template <typename ValueType>
ValueType any_cast(any&& operand);
// Overload of `any_cast()` to statically cast the value of a const pointer
-// `y_absl::any` type to the given pointer type, or `nullptr` if the stored value
-// type of the `y_absl::any` does not match the cast.
+// `y_absl::any` type to the given pointer type, or `nullptr` if the stored value
+// type of the `y_absl::any` does not match the cast.
template <typename ValueType>
const ValueType* any_cast(const any* operand) noexcept;
// Overload of `any_cast()` to statically cast the value of a pointer
-// `y_absl::any` type to the given pointer type, or `nullptr` if the stored value
-// type of the `y_absl::any` does not match the cast.
+// `y_absl::any` type to the given pointer type, or `nullptr` if the stored value
+// type of the `y_absl::any` does not match the cast.
template <typename ValueType>
ValueType* any_cast(any* operand) noexcept;
// -----------------------------------------------------------------------------
-// y_absl::any
+// y_absl::any
// -----------------------------------------------------------------------------
//
-// An `y_absl::any` object provides the facility to either store an instance of a
-// type, known as the "contained object", or no value. An `y_absl::any` is used to
-// store values of types that are unknown at compile time. The `y_absl::any`
+// An `y_absl::any` object provides the facility to either store an instance of a
+// type, known as the "contained object", or no value. An `y_absl::any` is used to
+// store values of types that are unknown at compile time. The `y_absl::any`
// object, when containing a value, must contain a value type; storing a
// reference type is neither desired nor supported.
//
-// An `y_absl::any` can only store a type that is copy-constructible; move-only
+// An `y_absl::any` can only store a type that is copy-constructible; move-only
// types are not allowed within an `any` object.
//
// Example:
//
-// auto a = y_absl::any(65); // Literal, copyable
-// auto b = y_absl::any(std::vector<int>()); // Default-initialized, copyable
+// auto a = y_absl::any(65); // Literal, copyable
+// auto b = y_absl::any(std::vector<int>()); // Default-initialized, copyable
// std::unique_ptr<Foo> my_foo;
-// auto c = y_absl::any(std::move(my_foo)); // Error, not copy-constructible
+// auto c = y_absl::any(std::move(my_foo)); // Error, not copy-constructible
//
-// Note that `y_absl::any` makes use of decayed types (`y_absl::decay_t` in this
+// Note that `y_absl::any` makes use of decayed types (`y_absl::decay_t` in this
// context) to remove const-volatile qualifiers (known as "cv qualifiers"),
// decay functions to function pointers, etc. We essentially "decay" a given
// type into its essential type.
//
-// `y_absl::any` makes use of decayed types when determining the basic type `T` of
+// `y_absl::any` makes use of decayed types when determining the basic type `T` of
// the value to store in the any's contained object. In the documentation below,
// we explicitly denote this by using the phrase "a decayed type of `T`".
//
// Example:
//
// const int a = 4;
-// y_absl::any foo(a); // Decay ensures we store an "int", not a "const int&".
+// y_absl::any foo(a); // Decay ensures we store an "int", not a "const int&".
//
// void my_function() {}
-// y_absl::any bar(my_function); // Decay ensures we store a function pointer.
+// y_absl::any bar(my_function); // Decay ensures we store a function pointer.
//
-// `y_absl::any` is a C++11 compatible version of the C++17 `std::any` abstraction
+// `y_absl::any` is a C++11 compatible version of the C++17 `std::any` abstraction
// and is designed to be a drop-in replacement for code compliant with C++17.
class any {
private:
@@ -203,51 +203,51 @@ class any {
public:
// Constructors
- // Constructs an empty `y_absl::any` object (`any::has_value()` will return
+ // Constructs an empty `y_absl::any` object (`any::has_value()` will return
// `false`).
constexpr any() noexcept;
- // Copy constructs an `y_absl::any` object with a "contained object" of the
- // passed type of `other` (or an empty `y_absl::any` if `other.has_value()` is
+ // Copy constructs an `y_absl::any` object with a "contained object" of the
+ // passed type of `other` (or an empty `y_absl::any` if `other.has_value()` is
// `false`.
any(const any& other)
: obj_(other.has_value() ? other.obj_->Clone()
: std::unique_ptr<ObjInterface>()) {}
- // Move constructs an `y_absl::any` object with a "contained object" of the
- // passed type of `other` (or an empty `y_absl::any` if `other.has_value()` is
+ // Move constructs an `y_absl::any` object with a "contained object" of the
+ // passed type of `other` (or an empty `y_absl::any` if `other.has_value()` is
// `false`).
any(any&& other) noexcept = default;
- // Constructs an `y_absl::any` object with a "contained object" of the decayed
+ // Constructs an `y_absl::any` object with a "contained object" of the decayed
// type of `T`, which is initialized via `std::forward<T>(value)`.
//
// This constructor will not participate in overload resolution if the
// decayed type of `T` is not copy-constructible.
template <
- typename T, typename VT = y_absl::decay_t<T>,
- y_absl::enable_if_t<!y_absl::disjunction<
+ typename T, typename VT = y_absl::decay_t<T>,
+ y_absl::enable_if_t<!y_absl::disjunction<
std::is_same<any, VT>, IsInPlaceType<VT>,
- y_absl::negation<std::is_copy_constructible<VT> > >::value>* = nullptr>
+ y_absl::negation<std::is_copy_constructible<VT> > >::value>* = nullptr>
any(T&& value) : obj_(new Obj<VT>(in_place, std::forward<T>(value))) {}
- // Constructs an `y_absl::any` object with a "contained object" of the decayed
+ // Constructs an `y_absl::any` object with a "contained object" of the decayed
// type of `T`, which is initialized via `std::forward<T>(value)`.
- template <typename T, typename... Args, typename VT = y_absl::decay_t<T>,
- y_absl::enable_if_t<y_absl::conjunction<
+ template <typename T, typename... Args, typename VT = y_absl::decay_t<T>,
+ y_absl::enable_if_t<y_absl::conjunction<
std::is_copy_constructible<VT>,
std::is_constructible<VT, Args...>>::value>* = nullptr>
explicit any(in_place_type_t<T> /*tag*/, Args&&... args)
: obj_(new Obj<VT>(in_place, std::forward<Args>(args)...)) {}
- // Constructs an `y_absl::any` object with a "contained object" of the passed
+ // Constructs an `y_absl::any` object with a "contained object" of the passed
// type `VT` as a decayed type of `T`. `VT` is initialized as if
// direct-non-list-initializing an object of type `VT` with the arguments
// `initializer_list, std::forward<Args>(args)...`.
template <
- typename T, typename U, typename... Args, typename VT = y_absl::decay_t<T>,
- y_absl::enable_if_t<
- y_absl::conjunction<std::is_copy_constructible<VT>,
+ typename T, typename U, typename... Args, typename VT = y_absl::decay_t<T>,
+ y_absl::enable_if_t<
+ y_absl::conjunction<std::is_copy_constructible<VT>,
std::is_constructible<VT, std::initializer_list<U>&,
Args...>>::value>* = nullptr>
explicit any(in_place_type_t<T> /*tag*/, std::initializer_list<U> ilist,
@@ -256,24 +256,24 @@ class any {
// Assignment operators
- // Copy assigns an `y_absl::any` object with a "contained object" of the
+ // Copy assigns an `y_absl::any` object with a "contained object" of the
// passed type.
any& operator=(const any& rhs) {
any(rhs).swap(*this);
return *this;
}
- // Move assigns an `y_absl::any` object with a "contained object" of the
+ // Move assigns an `y_absl::any` object with a "contained object" of the
// passed type. `rhs` is left in a valid but otherwise unspecified state.
any& operator=(any&& rhs) noexcept {
any(std::move(rhs)).swap(*this);
return *this;
}
- // Assigns an `y_absl::any` object with a "contained object" of the passed type.
- template <typename T, typename VT = y_absl::decay_t<T>,
- y_absl::enable_if_t<y_absl::conjunction<
- y_absl::negation<std::is_same<VT, any>>,
+ // Assigns an `y_absl::any` object with a "contained object" of the passed type.
+ template <typename T, typename VT = y_absl::decay_t<T>,
+ y_absl::enable_if_t<y_absl::conjunction<
+ y_absl::negation<std::is_same<VT, any>>,
std::is_copy_constructible<VT>>::value>* = nullptr>
any& operator=(T&& rhs) {
any tmp(in_place_type_t<VT>(), std::forward<T>(rhs));
@@ -285,7 +285,7 @@ class any {
// any::emplace()
//
- // Emplaces a value within an `y_absl::any` object by calling `any::reset()`,
+ // Emplaces a value within an `y_absl::any` object by calling `any::reset()`,
// initializing the contained value as if direct-non-list-initializing an
// object of type `VT` with the arguments `std::forward<Args>(args)...`, and
// returning a reference to the new contained value.
@@ -294,8 +294,8 @@ class any {
// `*this` does not contain a value, and any previously contained value has
// been destroyed.
template <
- typename T, typename... Args, typename VT = y_absl::decay_t<T>,
- y_absl::enable_if_t<std::is_copy_constructible<VT>::value &&
+ typename T, typename... Args, typename VT = y_absl::decay_t<T>,
+ y_absl::enable_if_t<std::is_copy_constructible<VT>::value &&
std::is_constructible<VT, Args...>::value>* = nullptr>
VT& emplace(Args&&... args) {
reset(); // NOTE: reset() is required here even in the world of exceptions.
@@ -305,7 +305,7 @@ class any {
return object_ptr->value;
}
- // Overload of `any::emplace()` to emplace a value within an `y_absl::any`
+ // Overload of `any::emplace()` to emplace a value within an `y_absl::any`
// object by calling `any::reset()`, initializing the contained value as if
// direct-non-list-initializing an object of type `VT` with the arguments
// `initializer_list, std::forward<Args>(args)...`, and returning a reference
@@ -317,8 +317,8 @@ class any {
// unless `is_copy_constructible_v<VT>` is `true` and
// `is_constructible_v<VT, initializer_list<U>&, Args...>` is `true`.
template <
- typename T, typename U, typename... Args, typename VT = y_absl::decay_t<T>,
- y_absl::enable_if_t<std::is_copy_constructible<VT>::value &&
+ typename T, typename U, typename... Args, typename VT = y_absl::decay_t<T>,
+ y_absl::enable_if_t<std::is_copy_constructible<VT>::value &&
std::is_constructible<VT, std::initializer_list<U>&,
Args...>::value>* = nullptr>
VT& emplace(std::initializer_list<U> ilist, Args&&... args) {
@@ -331,13 +331,13 @@ class any {
// any::reset()
//
- // Resets the state of the `y_absl::any` object, destroying the contained object
+ // Resets the state of the `y_absl::any` object, destroying the contained object
// if present.
void reset() noexcept { obj_ = nullptr; }
// any::swap()
//
- // Swaps the passed value and the value of this `y_absl::any` object.
+ // Swaps the passed value and the value of this `y_absl::any` object.
void swap(any& other) noexcept { obj_.swap(other.obj_); }
// Observers
@@ -411,7 +411,7 @@ class any {
return obj_ ? obj_->ObjTypeId() : base_internal::FastTypeId<void>();
}
- // `y_absl::any` nonmember functions //
+ // `y_absl::any` nonmember functions //
// Description at the declaration site (top of file).
template <typename ValueType>
@@ -519,7 +519,7 @@ T* any_cast(any* operand) noexcept {
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#undef ABSL_ANY_DETAIL_HAS_RTTI
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_any_cast.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_any_cast.cc
index c7ca197521..29916186da 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_any_cast.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_any_cast.cc
@@ -12,16 +12,16 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/types/bad_any_cast.h"
+#include "y_absl/types/bad_any_cast.h"
#ifndef ABSL_USES_STD_ANY
#include <cstdlib>
-#include "y_absl/base/config.h"
-#include "y_absl/base/internal/raw_logging.h"
+#include "y_absl/base/config.h"
+#include "y_absl/base/internal/raw_logging.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
bad_any_cast::~bad_any_cast() = default;
@@ -41,6 +41,6 @@ void ThrowBadAnyCast() {
} // namespace any_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_USES_STD_ANY
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_any_cast.h b/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_any_cast.h
index 4dec75ed95..92c3bfe522 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_any_cast.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_any_cast.h
@@ -16,44 +16,44 @@
// bad_any_cast.h
// -----------------------------------------------------------------------------
//
-// This header file defines the `y_absl::bad_any_cast` type.
+// This header file defines the `y_absl::bad_any_cast` type.
#ifndef ABSL_TYPES_BAD_ANY_CAST_H_
#define ABSL_TYPES_BAD_ANY_CAST_H_
#include <typeinfo>
-#include "y_absl/base/config.h"
+#include "y_absl/base/config.h"
#ifdef ABSL_USES_STD_ANY
#include <any>
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
using std::bad_any_cast;
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#else // ABSL_USES_STD_ANY
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// -----------------------------------------------------------------------------
// bad_any_cast
// -----------------------------------------------------------------------------
//
-// An `y_absl::bad_any_cast` type is an exception type that is thrown when
-// failing to successfully cast the return value of an `y_absl::any` object.
+// An `y_absl::bad_any_cast` type is an exception type that is thrown when
+// failing to successfully cast the return value of an `y_absl::any` object.
//
// Example:
//
-// auto a = y_absl::any(65);
-// y_absl::any_cast<int>(a); // 65
+// auto a = y_absl::any(65);
+// y_absl::any_cast<int>(a); // 65
// try {
-// y_absl::any_cast<char>(a);
-// } catch(const y_absl::bad_any_cast& e) {
+// y_absl::any_cast<char>(a);
+// } catch(const y_absl::bad_any_cast& e) {
// std::cout << "Bad any cast: " << e.what() << '\n';
// }
class bad_any_cast : public std::bad_cast {
@@ -68,7 +68,7 @@ namespace any_internal {
} // namespace any_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_USES_STD_ANY
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_any_cast/ya.make b/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_any_cast/ya.make
index 5cc89fd70e..a008127937 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_any_cast/ya.make
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_any_cast/ya.make
@@ -12,8 +12,8 @@ OWNER(
LICENSE(Apache-2.0)
PEERDIR(
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
- contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
)
ADDINCL(
@@ -22,7 +22,7 @@ ADDINCL(
NO_COMPILER_WARNINGS()
-SRCDIR(contrib/restricted/abseil-cpp-tstring/y_absl/types)
+SRCDIR(contrib/restricted/abseil-cpp-tstring/y_absl/types)
SRCS(
bad_any_cast.cc
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_optional_access.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_optional_access.cc
index f8c405fbbb..e583756cd5 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_optional_access.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_optional_access.cc
@@ -12,16 +12,16 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/types/bad_optional_access.h"
+#include "y_absl/types/bad_optional_access.h"
#ifndef ABSL_USES_STD_OPTIONAL
#include <cstdlib>
-#include "y_absl/base/config.h"
-#include "y_absl/base/internal/raw_logging.h"
+#include "y_absl/base/config.h"
+#include "y_absl/base/internal/raw_logging.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
bad_optional_access::~bad_optional_access() = default;
@@ -43,6 +43,6 @@ void throw_bad_optional_access() {
} // namespace optional_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_USES_STD_OPTIONAL
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_optional_access.h b/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_optional_access.h
index b48a88d1ab..7420ade10f 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_optional_access.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_optional_access.h
@@ -16,45 +16,45 @@
// bad_optional_access.h
// -----------------------------------------------------------------------------
//
-// This header file defines the `y_absl::bad_optional_access` type.
+// This header file defines the `y_absl::bad_optional_access` type.
#ifndef ABSL_TYPES_BAD_OPTIONAL_ACCESS_H_
#define ABSL_TYPES_BAD_OPTIONAL_ACCESS_H_
#include <stdexcept>
-#include "y_absl/base/config.h"
+#include "y_absl/base/config.h"
#ifdef ABSL_USES_STD_OPTIONAL
#include <optional>
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
using std::bad_optional_access;
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#else // ABSL_USES_STD_OPTIONAL
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// -----------------------------------------------------------------------------
// bad_optional_access
// -----------------------------------------------------------------------------
//
-// An `y_absl::bad_optional_access` type is an exception type that is thrown when
-// attempting to access an `y_absl::optional` object that does not contain a
+// An `y_absl::bad_optional_access` type is an exception type that is thrown when
+// attempting to access an `y_absl::optional` object that does not contain a
// value.
//
// Example:
//
-// y_absl::optional<int> o;
+// y_absl::optional<int> o;
//
// try {
// int n = o.value();
-// } catch(const y_absl::bad_optional_access& e) {
+// } catch(const y_absl::bad_optional_access& e) {
// std::cout << "Bad optional access: " << e.what() << '\n';
// }
class bad_optional_access : public std::exception {
@@ -71,7 +71,7 @@ namespace optional_internal {
} // namespace optional_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_USES_STD_OPTIONAL
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_optional_access/ya.make b/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_optional_access/ya.make
index dd4f7fb639..fca9a916ac 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_optional_access/ya.make
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_optional_access/ya.make
@@ -12,8 +12,8 @@ OWNER(
LICENSE(Apache-2.0)
PEERDIR(
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
- contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
)
ADDINCL(
@@ -22,7 +22,7 @@ ADDINCL(
NO_COMPILER_WARNINGS()
-SRCDIR(contrib/restricted/abseil-cpp-tstring/y_absl/types)
+SRCDIR(contrib/restricted/abseil-cpp-tstring/y_absl/types)
SRCS(
bad_optional_access.cc
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_variant_access.cc b/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_variant_access.cc
index db6498b520..77df7736a9 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_variant_access.cc
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_variant_access.cc
@@ -12,17 +12,17 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "y_absl/types/bad_variant_access.h"
+#include "y_absl/types/bad_variant_access.h"
#ifndef ABSL_USES_STD_VARIANT
#include <cstdlib>
#include <stdexcept>
-#include "y_absl/base/config.h"
-#include "y_absl/base/internal/raw_logging.h"
+#include "y_absl/base/config.h"
+#include "y_absl/base/internal/raw_logging.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
//////////////////////////
@@ -51,7 +51,7 @@ void Rethrow() {
throw;
#else
ABSL_RAW_LOG(FATAL,
- "Internal error in y_absl::variant implementation. Attempted to "
+ "Internal error in y_absl::variant implementation. Attempted to "
"rethrow an exception when building with exceptions disabled.");
abort(); // TODO(calabrese) Remove once RAW_LOG FATAL is noreturn.
#endif
@@ -59,6 +59,6 @@ void Rethrow() {
} // namespace variant_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_USES_STD_VARIANT
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_variant_access.h b/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_variant_access.h
index a79de8e049..6e41782e78 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_variant_access.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_variant_access.h
@@ -16,49 +16,49 @@
// bad_variant_access.h
// -----------------------------------------------------------------------------
//
-// This header file defines the `y_absl::bad_variant_access` type.
+// This header file defines the `y_absl::bad_variant_access` type.
#ifndef ABSL_TYPES_BAD_VARIANT_ACCESS_H_
#define ABSL_TYPES_BAD_VARIANT_ACCESS_H_
#include <stdexcept>
-#include "y_absl/base/config.h"
+#include "y_absl/base/config.h"
#ifdef ABSL_USES_STD_VARIANT
#include <variant>
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
using std::bad_variant_access;
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#else // ABSL_USES_STD_VARIANT
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// -----------------------------------------------------------------------------
// bad_variant_access
// -----------------------------------------------------------------------------
//
-// An `y_absl::bad_variant_access` type is an exception type that is thrown in
+// An `y_absl::bad_variant_access` type is an exception type that is thrown in
// the following cases:
//
-// * Calling `y_absl::get(y_absl::variant) with an index or type that does not
+// * Calling `y_absl::get(y_absl::variant) with an index or type that does not
// match the currently selected alternative type
-// * Calling `y_absl::visit on an `y_absl::variant` that is in the
+// * Calling `y_absl::visit on an `y_absl::variant` that is in the
// `variant::valueless_by_exception` state.
//
// Example:
//
-// y_absl::variant<int, TString> v;
+// y_absl::variant<int, TString> v;
// v = 1;
// try {
-// y_absl::get<TString>(v);
-// } catch(const y_absl::bad_variant_access& e) {
+// y_absl::get<TString>(v);
+// } catch(const y_absl::bad_variant_access& e) {
// std::cout << "Bad variant access: " << e.what() << '\n';
// }
class bad_variant_access : public std::exception {
@@ -75,7 +75,7 @@ namespace variant_internal {
} // namespace variant_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_USES_STD_VARIANT
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_variant_access/ya.make b/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_variant_access/ya.make
index f250c0223e..a80f8ed987 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_variant_access/ya.make
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_variant_access/ya.make
@@ -12,8 +12,8 @@ OWNER(
LICENSE(Apache-2.0)
PEERDIR(
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
- contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
)
ADDINCL(
@@ -22,7 +22,7 @@ ADDINCL(
NO_COMPILER_WARNINGS()
-SRCDIR(contrib/restricted/abseil-cpp-tstring/y_absl/types)
+SRCDIR(contrib/restricted/abseil-cpp-tstring/y_absl/types)
SRCS(
bad_variant_access.cc
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/types/compare.h b/contrib/restricted/abseil-cpp-tstring/y_absl/types/compare.h
index 3400db2f60..4c8cf2f59f 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/types/compare.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/types/compare.h
@@ -16,12 +16,12 @@
// compare.h
// -----------------------------------------------------------------------------
//
-// This header file defines the `y_absl::weak_equality`, `y_absl::strong_equality`,
-// `y_absl::partial_ordering`, `y_absl::weak_ordering`, and `y_absl::strong_ordering`
+// This header file defines the `y_absl::weak_equality`, `y_absl::strong_equality`,
+// `y_absl::partial_ordering`, `y_absl::weak_ordering`, and `y_absl::strong_ordering`
// types for storing the results of three way comparisons.
//
// Example:
-// y_absl::weak_ordering compare(const TString& a, const TString& b);
+// y_absl::weak_ordering compare(const TString& a, const TString& b);
//
// These are C++11 compatible versions of the C++20 corresponding types
// (`std::weak_equality`, etc.) and are designed to be drop-in replacements
@@ -35,10 +35,10 @@
#include <cstdlib>
#include <type_traits>
-#include "y_absl/base/attributes.h"
-#include "y_absl/meta/type_traits.h"
+#include "y_absl/base/attributes.h"
+#include "y_absl/meta/type_traits.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace compare_internal {
@@ -539,15 +539,15 @@ ABSL_COMPARE_INLINE_INIT(strong_ordering, greater,
#undef ABSL_COMPARE_INLINE_INIT
namespace compare_internal {
-// We also provide these comparator adapter functions for internal y_absl use.
+// We also provide these comparator adapter functions for internal y_absl use.
// Helper functions to do a boolean comparison of two keys given a boolean
// or three-way comparator.
// SFINAE prevents implicit conversions to bool (such as from int).
template <typename Bool,
- y_absl::enable_if_t<std::is_same<bool, Bool>::value, int> = 0>
+ y_absl::enable_if_t<std::is_same<bool, Bool>::value, int> = 0>
constexpr bool compare_result_as_less_than(const Bool r) { return r; }
-constexpr bool compare_result_as_less_than(const y_absl::weak_ordering r) {
+constexpr bool compare_result_as_less_than(const y_absl::weak_ordering r) {
return r < 0;
}
@@ -561,40 +561,40 @@ constexpr bool do_less_than_comparison(const Compare &compare, const K &x,
// three-way comparator.
// SFINAE prevents implicit conversions to int (such as from bool).
template <typename Int,
- y_absl::enable_if_t<std::is_same<int, Int>::value, int> = 0>
-constexpr y_absl::weak_ordering compare_result_as_ordering(const Int c) {
- return c < 0 ? y_absl::weak_ordering::less
- : c == 0 ? y_absl::weak_ordering::equivalent
- : y_absl::weak_ordering::greater;
+ y_absl::enable_if_t<std::is_same<int, Int>::value, int> = 0>
+constexpr y_absl::weak_ordering compare_result_as_ordering(const Int c) {
+ return c < 0 ? y_absl::weak_ordering::less
+ : c == 0 ? y_absl::weak_ordering::equivalent
+ : y_absl::weak_ordering::greater;
}
-constexpr y_absl::weak_ordering compare_result_as_ordering(
- const y_absl::weak_ordering c) {
+constexpr y_absl::weak_ordering compare_result_as_ordering(
+ const y_absl::weak_ordering c) {
return c;
}
template <
typename Compare, typename K, typename LK,
- y_absl::enable_if_t<!std::is_same<bool, y_absl::result_of_t<Compare(
+ y_absl::enable_if_t<!std::is_same<bool, y_absl::result_of_t<Compare(
const K &, const LK &)>>::value,
int> = 0>
-constexpr y_absl::weak_ordering do_three_way_comparison(const Compare &compare,
+constexpr y_absl::weak_ordering do_three_way_comparison(const Compare &compare,
const K &x, const LK &y) {
return compare_result_as_ordering(compare(x, y));
}
template <
typename Compare, typename K, typename LK,
- y_absl::enable_if_t<std::is_same<bool, y_absl::result_of_t<Compare(
+ y_absl::enable_if_t<std::is_same<bool, y_absl::result_of_t<Compare(
const K &, const LK &)>>::value,
int> = 0>
-constexpr y_absl::weak_ordering do_three_way_comparison(const Compare &compare,
+constexpr y_absl::weak_ordering do_three_way_comparison(const Compare &compare,
const K &x, const LK &y) {
- return compare(x, y) ? y_absl::weak_ordering::less
- : compare(y, x) ? y_absl::weak_ordering::greater
- : y_absl::weak_ordering::equivalent;
+ return compare(x, y) ? y_absl::weak_ordering::less
+ : compare(y, x) ? y_absl::weak_ordering::greater
+ : y_absl::weak_ordering::equivalent;
}
} // namespace compare_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_TYPES_COMPARE_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/types/internal/optional.h b/contrib/restricted/abseil-cpp-tstring/y_absl/types/internal/optional.h
index aded6699a1..1004a6a68a 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/types/internal/optional.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/types/internal/optional.h
@@ -20,10 +20,10 @@
#include <type_traits>
#include <utility>
-#include "y_absl/base/internal/inline_variable.h"
-#include "y_absl/memory/memory.h"
-#include "y_absl/meta/type_traits.h"
-#include "y_absl/utility/utility.h"
+#include "y_absl/base/internal/inline_variable.h"
+#include "y_absl/memory/memory.h"
+#include "y_absl/meta/type_traits.h"
+#include "y_absl/utility/utility.h"
// ABSL_OPTIONAL_USE_INHERITING_CONSTRUCTORS
//
@@ -53,7 +53,7 @@
#define ABSL_OPTIONAL_USE_INHERITING_CONSTRUCTORS 1
#endif
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// Forward declaration
@@ -101,7 +101,7 @@ class optional_data_dtor_base {
template <typename... Args>
constexpr explicit optional_data_dtor_base(in_place_t, Args&&... args)
- : engaged_(true), data_(y_absl::forward<Args>(args)...) {}
+ : engaged_(true), data_(y_absl::forward<Args>(args)...) {}
~optional_data_dtor_base() { destruct(); }
};
@@ -130,7 +130,7 @@ class optional_data_dtor_base<T, true> {
template <typename... Args>
constexpr explicit optional_data_dtor_base(in_place_t, Args&&... args)
- : engaged_(true), data_(y_absl::forward<Args>(args)...) {}
+ : engaged_(true), data_(y_absl::forward<Args>(args)...) {}
};
template <typename T>
@@ -144,7 +144,7 @@ class optional_data_base : public optional_data_dtor_base<T> {
template <typename... Args>
constexpr explicit optional_data_base(in_place_t t, Args&&... args)
- : base(t, y_absl::forward<Args>(args)...) {}
+ : base(t, y_absl::forward<Args>(args)...) {}
#endif
template <typename... Args>
@@ -164,15 +164,15 @@ class optional_data_base : public optional_data_dtor_base<T> {
}
};
-// TODO(y_absl-team): Add another class using
+// TODO(y_absl-team): Add another class using
// std::is_trivially_move_constructible trait when available to match
// http://cplusplus.github.io/LWG/lwg-defects.html#2900, for types that
// have trivial move but nontrivial copy.
// Also, we should be checking is_trivially_copyable here, which is not
// supported now, so we use is_trivially_* traits instead.
template <typename T,
- bool unused = y_absl::is_trivially_copy_constructible<T>::value&&
- y_absl::is_trivially_copy_assignable<typename std::remove_cv<
+ bool unused = y_absl::is_trivially_copy_constructible<T>::value&&
+ y_absl::is_trivially_copy_assignable<typename std::remove_cv<
T>::type>::value&& std::is_trivially_destructible<T>::value>
class optional_data;
@@ -187,7 +187,7 @@ class optional_data<T, true> : public optional_data_base<T> {
template <typename... Args>
constexpr explicit optional_data(in_place_t t, Args&&... args)
- : optional_data_base<T>(t, y_absl::forward<Args>(args)...) {}
+ : optional_data_base<T>(t, y_absl::forward<Args>(args)...) {}
#endif
};
@@ -199,7 +199,7 @@ class optional_data<T, false> : public optional_data_base<T> {
#else
template <typename... Args>
constexpr explicit optional_data(in_place_t t, Args&&... args)
- : optional_data_base<T>(t, y_absl::forward<Args>(args)...) {}
+ : optional_data_base<T>(t, y_absl::forward<Args>(args)...) {}
#endif
optional_data() = default;
@@ -211,7 +211,7 @@ class optional_data<T, false> : public optional_data_base<T> {
}
optional_data(optional_data&& rhs) noexcept(
- y_absl::default_allocator_is_nothrow::value ||
+ y_absl::default_allocator_is_nothrow::value ||
std::is_nothrow_move_constructible<T>::value)
: optional_data_base<T>() {
if (rhs.engaged_) {
@@ -324,9 +324,9 @@ struct ctor_copy_traits {
template <typename T>
struct assign_copy_traits {
static constexpr copy_traits traits =
- y_absl::is_copy_assignable<T>::value && std::is_copy_constructible<T>::value
+ y_absl::is_copy_assignable<T>::value && std::is_copy_constructible<T>::value
? copy_traits::copyable
- : y_absl::is_move_assignable<T>::value &&
+ : y_absl::is_move_assignable<T>::value &&
std::is_move_constructible<T>::value
? copy_traits::movable
: copy_traits::non_movable;
@@ -359,7 +359,7 @@ struct is_constructible_convertible_assignable_from_optional
// for checking whether an expression is convertible to bool.
bool convertible_to_bool(bool);
-// Base class for std::hash<y_absl::optional<T>>:
+// Base class for std::hash<y_absl::optional<T>>:
// If std::hash<std::remove_const_t<T>> is enabled, it provides operator() to
// compute the hash; Otherwise, it is disabled.
// Reference N4659 23.14.15 [unord.hash].
@@ -373,14 +373,14 @@ struct optional_hash_base {
};
template <typename T>
-struct optional_hash_base<T, decltype(std::hash<y_absl::remove_const_t<T> >()(
- std::declval<y_absl::remove_const_t<T> >()))> {
- using argument_type = y_absl::optional<T>;
+struct optional_hash_base<T, decltype(std::hash<y_absl::remove_const_t<T> >()(
+ std::declval<y_absl::remove_const_t<T> >()))> {
+ using argument_type = y_absl::optional<T>;
using result_type = size_t;
- size_t operator()(const y_absl::optional<T>& opt) const {
- y_absl::type_traits_internal::AssertHashEnabled<y_absl::remove_const_t<T>>();
+ size_t operator()(const y_absl::optional<T>& opt) const {
+ y_absl::type_traits_internal::AssertHashEnabled<y_absl::remove_const_t<T>>();
if (opt) {
- return std::hash<y_absl::remove_const_t<T> >()(*opt);
+ return std::hash<y_absl::remove_const_t<T> >()(*opt);
} else {
return static_cast<size_t>(0x297814aaad196e6dULL);
}
@@ -389,7 +389,7 @@ struct optional_hash_base<T, decltype(std::hash<y_absl::remove_const_t<T> >()(
} // namespace optional_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#undef ABSL_OPTIONAL_USE_INHERITING_CONSTRUCTORS
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/types/internal/span.h b/contrib/restricted/abseil-cpp-tstring/y_absl/types/internal/span.h
index 6a519a4577..6b36c3b0d0 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/types/internal/span.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/types/internal/span.h
@@ -21,11 +21,11 @@
#include <util/generic/string.h>
#include <type_traits>
-#include "y_absl/algorithm/algorithm.h"
-#include "y_absl/base/internal/throw_delegate.h"
-#include "y_absl/meta/type_traits.h"
+#include "y_absl/algorithm/algorithm.h"
+#include "y_absl/base/internal/throw_delegate.h"
+#include "y_absl/meta/type_traits.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace span_internal {
@@ -39,8 +39,8 @@ constexpr auto GetDataImpl(C& c, char) noexcept // NOLINT(runtime/references)
return c.data();
}
-// Before C++17, TString::data returns a const char* in all cases.
-inline char* GetDataImpl(TString& s, // NOLINT(runtime/references)
+// Before C++17, TString::data returns a const char* in all cases.
+inline char* GetDataImpl(TString& s, // NOLINT(runtime/references)
int) noexcept {
return &s[0];
}
@@ -54,7 +54,7 @@ constexpr auto GetData(C& c) noexcept // NOLINT(runtime/references)
// Detection idioms for size() and data().
template <typename C>
using HasSize =
- std::is_integral<y_absl::decay_t<decltype(std::declval<C&>().size())>>;
+ std::is_integral<y_absl::decay_t<decltype(std::declval<C&>().size())>>;
// We want to enable conversion from vector<T*> to Span<const T* const> but
// disable conversion from vector<Derived> to Span<Base>. Here we use
@@ -64,13 +64,13 @@ using HasSize =
// which returns a reference.
template <typename T, typename C>
using HasData =
- std::is_convertible<y_absl::decay_t<decltype(GetData(std::declval<C&>()))>*,
+ std::is_convertible<y_absl::decay_t<decltype(GetData(std::declval<C&>()))>*,
T* const*>;
// Extracts value type from a Container
template <typename C>
struct ElementType {
- using type = typename y_absl::remove_reference_t<C>::value_type;
+ using type = typename y_absl::remove_reference_t<C>::value_type;
};
template <typename T, size_t N>
@@ -88,7 +88,7 @@ using EnableIfMutable =
template <template <typename> class SpanT, typename T>
bool EqualImpl(SpanT<T> a, SpanT<T> b) {
static_assert(std::is_const<T>::value, "");
- return y_absl::equal(a.begin(), a.end(), b.begin(), b.end());
+ return y_absl::equal(a.begin(), a.end(), b.begin(), b.end());
}
template <template <typename> class SpanT, typename T>
@@ -123,6 +123,6 @@ using EnableIfConvertibleTo =
typename std::enable_if<IsConvertible<From, To>::value>::type;
} // namespace span_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_TYPES_INTERNAL_SPAN_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/types/internal/variant.h b/contrib/restricted/abseil-cpp-tstring/y_absl/types/internal/variant.h
index 9707661d94..4495fb4de6 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/types/internal/variant.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/types/internal/variant.h
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
//
-// Implementation details of y_absl/types/variant.h, pulled into a
+// Implementation details of y_absl/types/variant.h, pulled into a
// separate file to avoid cluttering the top of the API header with
// implementation details.
@@ -27,19 +27,19 @@
#include <tuple>
#include <type_traits>
-#include "y_absl/base/config.h"
-#include "y_absl/base/internal/identity.h"
-#include "y_absl/base/internal/inline_variable.h"
-#include "y_absl/base/internal/invoke.h"
-#include "y_absl/base/macros.h"
-#include "y_absl/base/optimization.h"
-#include "y_absl/meta/type_traits.h"
-#include "y_absl/types/bad_variant_access.h"
-#include "y_absl/utility/utility.h"
+#include "y_absl/base/config.h"
+#include "y_absl/base/internal/identity.h"
+#include "y_absl/base/internal/inline_variable.h"
+#include "y_absl/base/internal/invoke.h"
+#include "y_absl/base/macros.h"
+#include "y_absl/base/optimization.h"
+#include "y_absl/meta/type_traits.h"
+#include "y_absl/types/bad_variant_access.h"
+#include "y_absl/utility/utility.h"
#if !defined(ABSL_USES_STD_VARIANT)
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
template <class... Types>
@@ -136,24 +136,24 @@ struct VariantAccessResultImpl;
template <std::size_t I, template <class...> class Variantemplate, class... T>
struct VariantAccessResultImpl<I, Variantemplate<T...>&> {
- using type = typename y_absl::variant_alternative<I, variant<T...>>::type&;
+ using type = typename y_absl::variant_alternative<I, variant<T...>>::type&;
};
template <std::size_t I, template <class...> class Variantemplate, class... T>
struct VariantAccessResultImpl<I, const Variantemplate<T...>&> {
using type =
- const typename y_absl::variant_alternative<I, variant<T...>>::type&;
+ const typename y_absl::variant_alternative<I, variant<T...>>::type&;
};
template <std::size_t I, template <class...> class Variantemplate, class... T>
struct VariantAccessResultImpl<I, Variantemplate<T...>&&> {
- using type = typename y_absl::variant_alternative<I, variant<T...>>::type&&;
+ using type = typename y_absl::variant_alternative<I, variant<T...>>::type&&;
};
template <std::size_t I, template <class...> class Variantemplate, class... T>
struct VariantAccessResultImpl<I, const Variantemplate<T...>&&> {
using type =
- const typename y_absl::variant_alternative<I, variant<T...>>::type&&;
+ const typename y_absl::variant_alternative<I, variant<T...>>::type&&;
};
template <std::size_t I, class Variant>
@@ -198,7 +198,7 @@ using AlwaysZero = SizeT<0>;
template <class Op, class... Vs>
struct VisitIndicesResultImpl {
- using type = y_absl::result_of_t<Op(AlwaysZero<Vs>...)>;
+ using type = y_absl::result_of_t<Op(AlwaysZero<Vs>...)>;
};
template <class Op, class... Vs>
@@ -214,7 +214,7 @@ constexpr ReturnType call_with_indices(FunctionObject&& function) {
std::is_same<ReturnType, decltype(std::declval<FunctionObject>()(
SizeT<Indices>()...))>::value,
"Not all visitation overloads have the same return type.");
- return y_absl::forward<FunctionObject>(function)(SizeT<Indices>()...);
+ return y_absl::forward<FunctionObject>(function)(SizeT<Indices>()...);
}
template <class ReturnType, class FunctionObject, std::size_t... BoundIndices>
@@ -265,7 +265,7 @@ struct MakeVisitationMatrix<ReturnType, FunctionObject,
index_sequence<BoundIndices...>>
: MakeVisitationMatrixImpl<ReturnType, FunctionObject,
index_sequence<TailEndIndices...>,
- y_absl::make_index_sequence<HeadEndIndex>,
+ y_absl::make_index_sequence<HeadEndIndex>,
index_sequence<BoundIndices...>> {};
struct UnreachableSwitchCase {
@@ -284,7 +284,7 @@ struct UnreachableSwitchCase {
assert(false); // NOLINT
// Hack to silence potential no return warning -- cause an infinite loop.
- return Run(y_absl::forward<Op>(op));
+ return Run(y_absl::forward<Op>(op));
#endif // Checks for __builtin_unreachable
}
};
@@ -326,7 +326,7 @@ using PickCase = typename PickCaseImpl<(I < EndIndex)>::template Apply<Op, I>;
template <class ReturnType>
[[noreturn]] ReturnType TypedThrowBadVariantAccess() {
- y_absl::variant_internal::ThrowBadVariantAccess();
+ y_absl::variant_internal::ThrowBadVariantAccess();
}
// Given N variant sizes, determine the number of cases there would need to be
@@ -357,71 +357,71 @@ struct VisitIndicesSwitch {
static VisitIndicesResultT<Op, std::size_t> Run(Op&& op, std::size_t i) {
switch (i) {
case 0:
- return PickCase<Op, 0, EndIndex>::Run(y_absl::forward<Op>(op));
+ return PickCase<Op, 0, EndIndex>::Run(y_absl::forward<Op>(op));
case 1:
- return PickCase<Op, 1, EndIndex>::Run(y_absl::forward<Op>(op));
+ return PickCase<Op, 1, EndIndex>::Run(y_absl::forward<Op>(op));
case 2:
- return PickCase<Op, 2, EndIndex>::Run(y_absl::forward<Op>(op));
+ return PickCase<Op, 2, EndIndex>::Run(y_absl::forward<Op>(op));
case 3:
- return PickCase<Op, 3, EndIndex>::Run(y_absl::forward<Op>(op));
+ return PickCase<Op, 3, EndIndex>::Run(y_absl::forward<Op>(op));
case 4:
- return PickCase<Op, 4, EndIndex>::Run(y_absl::forward<Op>(op));
+ return PickCase<Op, 4, EndIndex>::Run(y_absl::forward<Op>(op));
case 5:
- return PickCase<Op, 5, EndIndex>::Run(y_absl::forward<Op>(op));
+ return PickCase<Op, 5, EndIndex>::Run(y_absl::forward<Op>(op));
case 6:
- return PickCase<Op, 6, EndIndex>::Run(y_absl::forward<Op>(op));
+ return PickCase<Op, 6, EndIndex>::Run(y_absl::forward<Op>(op));
case 7:
- return PickCase<Op, 7, EndIndex>::Run(y_absl::forward<Op>(op));
+ return PickCase<Op, 7, EndIndex>::Run(y_absl::forward<Op>(op));
case 8:
- return PickCase<Op, 8, EndIndex>::Run(y_absl::forward<Op>(op));
+ return PickCase<Op, 8, EndIndex>::Run(y_absl::forward<Op>(op));
case 9:
- return PickCase<Op, 9, EndIndex>::Run(y_absl::forward<Op>(op));
+ return PickCase<Op, 9, EndIndex>::Run(y_absl::forward<Op>(op));
case 10:
- return PickCase<Op, 10, EndIndex>::Run(y_absl::forward<Op>(op));
+ return PickCase<Op, 10, EndIndex>::Run(y_absl::forward<Op>(op));
case 11:
- return PickCase<Op, 11, EndIndex>::Run(y_absl::forward<Op>(op));
+ return PickCase<Op, 11, EndIndex>::Run(y_absl::forward<Op>(op));
case 12:
- return PickCase<Op, 12, EndIndex>::Run(y_absl::forward<Op>(op));
+ return PickCase<Op, 12, EndIndex>::Run(y_absl::forward<Op>(op));
case 13:
- return PickCase<Op, 13, EndIndex>::Run(y_absl::forward<Op>(op));
+ return PickCase<Op, 13, EndIndex>::Run(y_absl::forward<Op>(op));
case 14:
- return PickCase<Op, 14, EndIndex>::Run(y_absl::forward<Op>(op));
+ return PickCase<Op, 14, EndIndex>::Run(y_absl::forward<Op>(op));
case 15:
- return PickCase<Op, 15, EndIndex>::Run(y_absl::forward<Op>(op));
+ return PickCase<Op, 15, EndIndex>::Run(y_absl::forward<Op>(op));
case 16:
- return PickCase<Op, 16, EndIndex>::Run(y_absl::forward<Op>(op));
+ return PickCase<Op, 16, EndIndex>::Run(y_absl::forward<Op>(op));
case 17:
- return PickCase<Op, 17, EndIndex>::Run(y_absl::forward<Op>(op));
+ return PickCase<Op, 17, EndIndex>::Run(y_absl::forward<Op>(op));
case 18:
- return PickCase<Op, 18, EndIndex>::Run(y_absl::forward<Op>(op));
+ return PickCase<Op, 18, EndIndex>::Run(y_absl::forward<Op>(op));
case 19:
- return PickCase<Op, 19, EndIndex>::Run(y_absl::forward<Op>(op));
+ return PickCase<Op, 19, EndIndex>::Run(y_absl::forward<Op>(op));
case 20:
- return PickCase<Op, 20, EndIndex>::Run(y_absl::forward<Op>(op));
+ return PickCase<Op, 20, EndIndex>::Run(y_absl::forward<Op>(op));
case 21:
- return PickCase<Op, 21, EndIndex>::Run(y_absl::forward<Op>(op));
+ return PickCase<Op, 21, EndIndex>::Run(y_absl::forward<Op>(op));
case 22:
- return PickCase<Op, 22, EndIndex>::Run(y_absl::forward<Op>(op));
+ return PickCase<Op, 22, EndIndex>::Run(y_absl::forward<Op>(op));
case 23:
- return PickCase<Op, 23, EndIndex>::Run(y_absl::forward<Op>(op));
+ return PickCase<Op, 23, EndIndex>::Run(y_absl::forward<Op>(op));
case 24:
- return PickCase<Op, 24, EndIndex>::Run(y_absl::forward<Op>(op));
+ return PickCase<Op, 24, EndIndex>::Run(y_absl::forward<Op>(op));
case 25:
- return PickCase<Op, 25, EndIndex>::Run(y_absl::forward<Op>(op));
+ return PickCase<Op, 25, EndIndex>::Run(y_absl::forward<Op>(op));
case 26:
- return PickCase<Op, 26, EndIndex>::Run(y_absl::forward<Op>(op));
+ return PickCase<Op, 26, EndIndex>::Run(y_absl::forward<Op>(op));
case 27:
- return PickCase<Op, 27, EndIndex>::Run(y_absl::forward<Op>(op));
+ return PickCase<Op, 27, EndIndex>::Run(y_absl::forward<Op>(op));
case 28:
- return PickCase<Op, 28, EndIndex>::Run(y_absl::forward<Op>(op));
+ return PickCase<Op, 28, EndIndex>::Run(y_absl::forward<Op>(op));
case 29:
- return PickCase<Op, 29, EndIndex>::Run(y_absl::forward<Op>(op));
+ return PickCase<Op, 29, EndIndex>::Run(y_absl::forward<Op>(op));
case 30:
- return PickCase<Op, 30, EndIndex>::Run(y_absl::forward<Op>(op));
+ return PickCase<Op, 30, EndIndex>::Run(y_absl::forward<Op>(op));
case 31:
- return PickCase<Op, 31, EndIndex>::Run(y_absl::forward<Op>(op));
+ return PickCase<Op, 31, EndIndex>::Run(y_absl::forward<Op>(op));
case 32:
- return PickCase<Op, 32, EndIndex>::Run(y_absl::forward<Op>(op));
+ return PickCase<Op, 32, EndIndex>::Run(y_absl::forward<Op>(op));
default:
ABSL_ASSERT(i == variant_npos);
return y_absl::base_internal::invoke(y_absl::forward<Op>(op), NPos());
@@ -437,7 +437,7 @@ struct VisitIndicesFallback {
MakeVisitationMatrix<VisitIndicesResultT<Op, SizeT...>, Op,
index_sequence<(EndIndices + 1)...>,
index_sequence<>>::Run(),
- (indices + 1)...)(y_absl::forward<Op>(op));
+ (indices + 1)...)(y_absl::forward<Op>(op));
}
};
@@ -479,7 +479,7 @@ template <class IndexSequence, std::size_t... EndIndices>
struct VisitIndicesVariadicImpl;
template <std::size_t... N, std::size_t... EndIndices>
-struct VisitIndicesVariadicImpl<y_absl::index_sequence<N...>, EndIndices...> {
+struct VisitIndicesVariadicImpl<y_absl::index_sequence<N...>, EndIndices...> {
// A type that can take an N-ary function object and converts it to a unary
// function object that takes a single, flattened index, and "unflattens" it
// into its individual dimensions when forwarding to the wrapped object.
@@ -489,7 +489,7 @@ struct VisitIndicesVariadicImpl<y_absl::index_sequence<N...>, EndIndices...> {
VisitIndicesResultT<Op, decltype(EndIndices)...> operator()(
SizeT<I> /*index*/) && {
return base_internal::invoke(
- y_absl::forward<Op>(op),
+ y_absl::forward<Op>(op),
SizeT<UnflattenIndex<I, N, (EndIndices + 1)...>::value -
std::size_t{1}>()...);
}
@@ -501,7 +501,7 @@ struct VisitIndicesVariadicImpl<y_absl::index_sequence<N...>, EndIndices...> {
static VisitIndicesResultT<Op, decltype(EndIndices)...> Run(
Op&& op, SizeType... i) {
return VisitIndicesSwitch<NumCasesOfSwitch<EndIndices...>::value>::Run(
- FlattenedOp<Op>{y_absl::forward<Op>(op)},
+ FlattenedOp<Op>{y_absl::forward<Op>(op)},
FlattenIndices<(EndIndices + std::size_t{1})...>::Run(
(i + std::size_t{1})...));
}
@@ -509,7 +509,7 @@ struct VisitIndicesVariadicImpl<y_absl::index_sequence<N...>, EndIndices...> {
template <std::size_t... EndIndices>
struct VisitIndicesVariadic
- : VisitIndicesVariadicImpl<y_absl::make_index_sequence<sizeof...(EndIndices)>,
+ : VisitIndicesVariadicImpl<y_absl::make_index_sequence<sizeof...(EndIndices)>,
EndIndices...> {};
// This implementation will flatten N-ary visit operations into a single switch
@@ -522,14 +522,14 @@ struct VisitIndicesVariadic
// size.
template <std::size_t... EndIndices>
struct VisitIndices
- : y_absl::conditional_t<(NumCasesOfSwitch<EndIndices...>::value <=
+ : y_absl::conditional_t<(NumCasesOfSwitch<EndIndices...>::value <=
MaxUnrolledVisitCases),
VisitIndicesVariadic<EndIndices...>,
VisitIndicesFallback<EndIndices...>> {};
template <std::size_t EndIndex>
struct VisitIndices<EndIndex>
- : y_absl::conditional_t<(EndIndex <= MaxUnrolledVisitCases),
+ : y_absl::conditional_t<(EndIndex <= MaxUnrolledVisitCases),
VisitIndicesSwitch<EndIndex>,
VisitIndicesFallback<EndIndex>> {};
@@ -577,7 +577,7 @@ struct VariantCoreAccess {
template <class VariantType>
static void Destroy(VariantType& self) { // NOLINT
Derived(self).destroy();
- self.index_ = y_absl::variant_npos;
+ self.index_ = y_absl::variant_npos;
}
template <class Variant>
@@ -587,7 +587,7 @@ struct VariantCoreAccess {
template <class Variant>
static void InitFrom(Variant& self, Variant&& other) { // NOLINT
- VisitIndices<y_absl::variant_size<Variant>::value>::Run(
+ VisitIndices<y_absl::variant_size<Variant>::value>::Run(
InitFromVisitor<Variant, Variant&&>{&self,
std::forward<Variant>(other)},
other.index());
@@ -612,7 +612,7 @@ struct VariantCoreAccess {
TypedThrowBadVariantAccess<VariantAccessResult<I, Variant>>();
}
- return Access<I>(y_absl::forward<Variant>(self));
+ return Access<I>(y_absl::forward<Variant>(self));
}
// The implementation of the move-assignment operation for a variant.
@@ -629,7 +629,7 @@ struct VariantCoreAccess {
}
}
- void operator()(SizeT<y_absl::variant_npos> /*new_i*/) const {
+ void operator()(SizeT<y_absl::variant_npos> /*new_i*/) const {
Destroy(*left);
}
@@ -650,7 +650,7 @@ struct VariantCoreAccess {
template <std::size_t NewIndex>
void operator()(SizeT<NewIndex> /*new_i*/) const {
using New =
- typename y_absl::variant_alternative<NewIndex, DerivedType>::type;
+ typename y_absl::variant_alternative<NewIndex, DerivedType>::type;
if (left->index_ == NewIndex) {
Access<NewIndex>(*left) = Access<NewIndex>(*right);
@@ -662,7 +662,7 @@ struct VariantCoreAccess {
}
}
- void operator()(SizeT<y_absl::variant_npos> /*new_i*/) const {
+ void operator()(SizeT<y_absl::variant_npos> /*new_i*/) const {
Destroy(*left);
}
@@ -684,24 +684,24 @@ struct VariantCoreAccess {
void operator()(SizeT<NewIndex::value> /*old_i*/
) const {
- Access<NewIndex::value>(*left) = y_absl::forward<QualifiedNew>(other);
+ Access<NewIndex::value>(*left) = y_absl::forward<QualifiedNew>(other);
}
template <std::size_t OldIndex>
void operator()(SizeT<OldIndex> /*old_i*/
) const {
using New =
- typename y_absl::variant_alternative<NewIndex::value, Left>::type;
+ typename y_absl::variant_alternative<NewIndex::value, Left>::type;
if (std::is_nothrow_constructible<New, QualifiedNew>::value ||
!std::is_nothrow_move_constructible<New>::value) {
left->template emplace<NewIndex::value>(
- y_absl::forward<QualifiedNew>(other));
+ y_absl::forward<QualifiedNew>(other));
} else {
// the standard says "equivalent to
// operator=(variant(std::forward<T>(t)))", but we use `emplace` here
// because the variant's move assignment operator could be deleted.
left->template emplace<NewIndex::value>(
- New(y_absl::forward<QualifiedNew>(other)));
+ New(y_absl::forward<QualifiedNew>(other)));
}
}
@@ -712,18 +712,18 @@ struct VariantCoreAccess {
template <class Left, class QualifiedNew>
static ConversionAssignVisitor<Left, QualifiedNew>
MakeConversionAssignVisitor(Left* left, QualifiedNew&& qual) {
- return {left, y_absl::forward<QualifiedNew>(qual)};
+ return {left, y_absl::forward<QualifiedNew>(qual)};
}
// Backend for operations for `emplace()` which destructs `*self` then
// construct a new alternative with `Args...`.
template <std::size_t NewIndex, class Self, class... Args>
- static typename y_absl::variant_alternative<NewIndex, Self>::type& Replace(
+ static typename y_absl::variant_alternative<NewIndex, Self>::type& Replace(
Self* self, Args&&... args) {
Destroy(*self);
- using New = typename y_absl::variant_alternative<NewIndex, Self>::type;
+ using New = typename y_absl::variant_alternative<NewIndex, Self>::type;
New* const result = ::new (static_cast<void*>(&self->state_))
- New(y_absl::forward<Args>(args)...);
+ New(y_absl::forward<Args>(args)...);
self->index_ = NewIndex;
return *result;
}
@@ -738,7 +738,7 @@ struct VariantCoreAccess {
Access<NewIndex>(std::forward<QualifiedRightVariant>(right)));
}
- void operator()(SizeT<y_absl::variant_npos> /*new_i*/) const {
+ void operator()(SizeT<y_absl::variant_npos> /*new_i*/) const {
// This space intentionally left blank.
}
LeftVariant* left;
@@ -888,13 +888,13 @@ struct IndexOfConstructedType<
template <std::size_t... Is>
struct ContainsVariantNPos
- : y_absl::negation<std::is_same< // NOLINT
- y_absl::integer_sequence<bool, 0 <= Is...>,
- y_absl::integer_sequence<bool, Is != y_absl::variant_npos...>>> {};
+ : y_absl::negation<std::is_same< // NOLINT
+ y_absl::integer_sequence<bool, 0 <= Is...>,
+ y_absl::integer_sequence<bool, Is != y_absl::variant_npos...>>> {};
template <class Op, class... QualifiedVariants>
using RawVisitResult =
- y_absl::result_of_t<Op(VariantAccessResult<0, QualifiedVariants>...)>;
+ y_absl::result_of_t<Op(VariantAccessResult<0, QualifiedVariants>...)>;
// NOTE: The spec requires that all return-paths yield the same type and is not
// SFINAE-friendly, so we can deduce the return type by examining the first
@@ -905,7 +905,7 @@ using RawVisitResult =
template <class Op, class... QualifiedVariants>
struct VisitResultImpl {
using type =
- y_absl::result_of_t<Op(VariantAccessResult<0, QualifiedVariants>...)>;
+ y_absl::result_of_t<Op(VariantAccessResult<0, QualifiedVariants>...)>;
};
// Done in two steps intentionally so that we don't cause substitution to fail.
@@ -919,7 +919,7 @@ struct PerformVisitation {
template <std::size_t... Is>
constexpr ReturnType operator()(SizeT<Is>... indices) const {
return Run(typename ContainsVariantNPos<Is...>::type{},
- y_absl::index_sequence_for<QualifiedVariants...>(), indices...);
+ y_absl::index_sequence_for<QualifiedVariants...>(), indices...);
}
template <std::size_t... TupIs, std::size_t... Is>
@@ -927,19 +927,19 @@ struct PerformVisitation {
index_sequence<TupIs...>, SizeT<Is>...) const {
static_assert(
std::is_same<ReturnType,
- y_absl::result_of_t<Op(VariantAccessResult<
+ y_absl::result_of_t<Op(VariantAccessResult<
Is, QualifiedVariants>...)>>::value,
"All visitation overloads must have the same return type.");
return y_absl::base_internal::invoke(
- y_absl::forward<Op>(op),
+ y_absl::forward<Op>(op),
VariantCoreAccess::Access<Is>(
- y_absl::forward<QualifiedVariants>(std::get<TupIs>(variant_tup)))...);
+ y_absl::forward<QualifiedVariants>(std::get<TupIs>(variant_tup)))...);
}
template <std::size_t... TupIs, std::size_t... Is>
[[noreturn]] ReturnType Run(std::true_type /*has_valueless*/,
index_sequence<TupIs...>, SizeT<Is>...) const {
- y_absl::variant_internal::ThrowBadVariantAccess();
+ y_absl::variant_internal::ThrowBadVariantAccess();
}
// TODO(calabrese) Avoid using a tuple, which causes lots of instantiations
@@ -981,11 +981,11 @@ union Union<Head, Tail...> {
template <class... P>
explicit constexpr Union(EmplaceTag<0>, P&&... args)
- : head(y_absl::forward<P>(args)...) {}
+ : head(y_absl::forward<P>(args)...) {}
template <std::size_t I, class... P>
explicit constexpr Union(EmplaceTag<I>, P&&... args)
- : tail(EmplaceTag<I - 1>{}, y_absl::forward<P>(args)...) {}
+ : tail(EmplaceTag<I - 1>{}, y_absl::forward<P>(args)...) {}
Head head;
TailUnion tail;
@@ -1013,11 +1013,11 @@ union DestructibleUnionImpl<Head, Tail...> {
template <class... P>
explicit constexpr DestructibleUnionImpl(EmplaceTag<0>, P&&... args)
- : head(y_absl::forward<P>(args)...) {}
+ : head(y_absl::forward<P>(args)...) {}
template <std::size_t I, class... P>
explicit constexpr DestructibleUnionImpl(EmplaceTag<I>, P&&... args)
- : tail(EmplaceTag<I - 1>{}, y_absl::forward<P>(args)...) {}
+ : tail(EmplaceTag<I - 1>{}, y_absl::forward<P>(args)...) {}
~DestructibleUnionImpl() {}
@@ -1030,7 +1030,7 @@ union DestructibleUnionImpl<Head, Tail...> {
// this resultant type.
template <class... T>
using DestructibleUnion =
- y_absl::conditional_t<std::is_destructible<Union<T...>>::value, Union<T...>,
+ y_absl::conditional_t<std::is_destructible<Union<T...>>::value, Union<T...>,
DestructibleUnionImpl<T...>>;
// Deepest base, containing the actual union and the discriminator
@@ -1040,7 +1040,7 @@ class VariantStateBase {
using Variant = variant<H, T...>;
template <class LazyH = H,
- class ConstructibleH = y_absl::enable_if_t<
+ class ConstructibleH = y_absl::enable_if_t<
std::is_default_constructible<LazyH>::value, LazyH>>
constexpr VariantStateBase() noexcept(
std::is_nothrow_default_constructible<ConstructibleH>::value)
@@ -1048,7 +1048,7 @@ class VariantStateBase {
template <std::size_t I, class... P>
explicit constexpr VariantStateBase(EmplaceTag<I> tag, P&&... args)
- : state_(tag, y_absl::forward<P>(args)...), index_(I) {}
+ : state_(tag, y_absl::forward<P>(args)...), index_(I) {}
explicit constexpr VariantStateBase(NoopConstructorTag)
: state_(NoopConstructorTag()), index_(variant_npos) {}
@@ -1059,7 +1059,7 @@ class VariantStateBase {
std::size_t index_;
};
-using y_absl::internal::identity;
+using y_absl::internal::identity;
// OverloadSet::Overload() is a unary function which is overloaded to
// take any of the element types of the variant, by reference-to-const.
@@ -1106,37 +1106,37 @@ using NotEqualResult = decltype(std::declval<T>() != std::declval<T>());
using type_traits_internal::is_detected_convertible;
template <class... T>
-using RequireAllHaveEqualT = y_absl::enable_if_t<
- y_absl::conjunction<is_detected_convertible<bool, EqualResult, T>...>::value,
+using RequireAllHaveEqualT = y_absl::enable_if_t<
+ y_absl::conjunction<is_detected_convertible<bool, EqualResult, T>...>::value,
bool>;
template <class... T>
using RequireAllHaveNotEqualT =
- y_absl::enable_if_t<y_absl::conjunction<is_detected_convertible<
+ y_absl::enable_if_t<y_absl::conjunction<is_detected_convertible<
bool, NotEqualResult, T>...>::value,
bool>;
template <class... T>
using RequireAllHaveLessThanT =
- y_absl::enable_if_t<y_absl::conjunction<is_detected_convertible<
+ y_absl::enable_if_t<y_absl::conjunction<is_detected_convertible<
bool, LessThanResult, T>...>::value,
bool>;
template <class... T>
using RequireAllHaveLessThanOrEqualT =
- y_absl::enable_if_t<y_absl::conjunction<is_detected_convertible<
+ y_absl::enable_if_t<y_absl::conjunction<is_detected_convertible<
bool, LessThanOrEqualResult, T>...>::value,
bool>;
template <class... T>
using RequireAllHaveGreaterThanOrEqualT =
- y_absl::enable_if_t<y_absl::conjunction<is_detected_convertible<
+ y_absl::enable_if_t<y_absl::conjunction<is_detected_convertible<
bool, GreaterThanOrEqualResult, T>...>::value,
bool>;
template <class... T>
using RequireAllHaveGreaterThanT =
- y_absl::enable_if_t<y_absl::conjunction<is_detected_convertible<
+ y_absl::enable_if_t<y_absl::conjunction<is_detected_convertible<
bool, GreaterThanResult, T>...>::value,
bool>;
@@ -1171,7 +1171,7 @@ struct VariantHelper<variant<Ts...>> {
template <typename... Us>
struct CanConvertFrom<variant<Us...>>
- : public y_absl::conjunction<CanAccept<Us>...> {};
+ : public y_absl::conjunction<CanAccept<Us>...> {};
};
// A type with nontrivial copy ctor and trivial move ctor.
@@ -1220,7 +1220,7 @@ class VariantCopyAssignBaseNontrivial;
// Base that is dependent on whether or not the destructor can be trivial.
template <class... T>
using VariantStateBaseDestructor =
- y_absl::conditional_t<std::is_destructible<Union<T...>>::value,
+ y_absl::conditional_t<std::is_destructible<Union<T...>>::value,
VariantStateBase<T...>,
VariantStateBaseDestructorNontrivial<T...>>;
@@ -1232,44 +1232,44 @@ using VariantStateBaseDestructor =
// So we have to use a different approach (i.e. `HasTrivialMoveConstructor`) to
// work around the bug.
template <class... T>
-using VariantMoveBase = y_absl::conditional_t<
- y_absl::disjunction<
- y_absl::negation<y_absl::conjunction<std::is_move_constructible<T>...>>,
- y_absl::conjunction<IsTriviallyMoveConstructible<T>...>>::value,
+using VariantMoveBase = y_absl::conditional_t<
+ y_absl::disjunction<
+ y_absl::negation<y_absl::conjunction<std::is_move_constructible<T>...>>,
+ y_absl::conjunction<IsTriviallyMoveConstructible<T>...>>::value,
VariantStateBaseDestructor<T...>, VariantMoveBaseNontrivial<T...>>;
// Base that is dependent on whether or not the copy-constructor can be trivial.
template <class... T>
-using VariantCopyBase = y_absl::conditional_t<
- y_absl::disjunction<
- y_absl::negation<y_absl::conjunction<std::is_copy_constructible<T>...>>,
+using VariantCopyBase = y_absl::conditional_t<
+ y_absl::disjunction<
+ y_absl::negation<y_absl::conjunction<std::is_copy_constructible<T>...>>,
std::is_copy_constructible<Union<T...>>>::value,
VariantMoveBase<T...>, VariantCopyBaseNontrivial<T...>>;
// Base that is dependent on whether or not the move-assign can be trivial.
template <class... T>
-using VariantMoveAssignBase = y_absl::conditional_t<
- y_absl::disjunction<
- y_absl::conjunction<y_absl::is_move_assignable<Union<T...>>,
+using VariantMoveAssignBase = y_absl::conditional_t<
+ y_absl::disjunction<
+ y_absl::conjunction<y_absl::is_move_assignable<Union<T...>>,
std::is_move_constructible<Union<T...>>,
std::is_destructible<Union<T...>>>,
- y_absl::negation<y_absl::conjunction<std::is_move_constructible<T>...,
+ y_absl::negation<y_absl::conjunction<std::is_move_constructible<T>...,
// Note: We're not qualifying this with
- // y_absl:: because it doesn't compile
+ // y_absl:: because it doesn't compile
// under MSVC.
is_move_assignable<T>...>>>::value,
VariantCopyBase<T...>, VariantMoveAssignBaseNontrivial<T...>>;
// Base that is dependent on whether or not the copy-assign can be trivial.
template <class... T>
-using VariantCopyAssignBase = y_absl::conditional_t<
- y_absl::disjunction<
- y_absl::conjunction<y_absl::is_copy_assignable<Union<T...>>,
+using VariantCopyAssignBase = y_absl::conditional_t<
+ y_absl::disjunction<
+ y_absl::conjunction<y_absl::is_copy_assignable<Union<T...>>,
std::is_copy_constructible<Union<T...>>,
std::is_destructible<Union<T...>>>,
- y_absl::negation<y_absl::conjunction<std::is_copy_constructible<T>...,
+ y_absl::negation<y_absl::conjunction<std::is_copy_constructible<T>...,
// Note: We're not qualifying this with
- // y_absl:: because it doesn't compile
+ // y_absl:: because it doesn't compile
// under MSVC.
is_copy_assignable<T>...>>>::value,
VariantMoveAssignBase<T...>, VariantCopyAssignBaseNontrivial<T...>>;
@@ -1299,11 +1299,11 @@ class VariantStateBaseDestructorNontrivial : protected VariantStateBase<T...> {
template <std::size_t I>
void operator()(SizeT<I> i) const {
using Alternative =
- typename y_absl::variant_alternative<I, variant<T...>>::type;
+ typename y_absl::variant_alternative<I, variant<T...>>::type;
variant_internal::AccessUnion(self->state_, i).~Alternative();
}
- void operator()(SizeT<y_absl::variant_npos> /*i*/) const {
+ void operator()(SizeT<y_absl::variant_npos> /*i*/) const {
// This space intentionally left blank
}
@@ -1331,12 +1331,12 @@ class VariantMoveBaseNontrivial : protected VariantStateBaseDestructor<T...> {
template <std::size_t I>
void operator()(SizeT<I> i) const {
using Alternative =
- typename y_absl::variant_alternative<I, variant<T...>>::type;
+ typename y_absl::variant_alternative<I, variant<T...>>::type;
::new (static_cast<void*>(&self->state_)) Alternative(
- variant_internal::AccessUnion(y_absl::move(other->state_), i));
+ variant_internal::AccessUnion(y_absl::move(other->state_), i));
}
- void operator()(SizeT<y_absl::variant_npos> /*i*/) const {}
+ void operator()(SizeT<y_absl::variant_npos> /*i*/) const {}
VariantMoveBaseNontrivial* self;
VariantMoveBaseNontrivial* other;
@@ -1344,7 +1344,7 @@ class VariantMoveBaseNontrivial : protected VariantStateBaseDestructor<T...> {
VariantMoveBaseNontrivial() = default;
VariantMoveBaseNontrivial(VariantMoveBaseNontrivial&& other) noexcept(
- y_absl::conjunction<std::is_nothrow_move_constructible<T>...>::value)
+ y_absl::conjunction<std::is_nothrow_move_constructible<T>...>::value)
: Base(NoopConstructorTag()) {
VisitIndices<sizeof...(T)>::Run(Construct{this, &other}, other.index_);
index_ = other.index_;
@@ -1376,12 +1376,12 @@ class VariantCopyBaseNontrivial : protected VariantMoveBase<T...> {
template <std::size_t I>
void operator()(SizeT<I> i) const {
using Alternative =
- typename y_absl::variant_alternative<I, variant<T...>>::type;
+ typename y_absl::variant_alternative<I, variant<T...>>::type;
::new (static_cast<void*>(&self->state_))
Alternative(variant_internal::AccessUnion(other->state_, i));
}
- void operator()(SizeT<y_absl::variant_npos> /*i*/) const {}
+ void operator()(SizeT<y_absl::variant_npos> /*i*/) const {}
VariantCopyBaseNontrivial* self;
const VariantCopyBaseNontrivial* other;
@@ -1421,7 +1421,7 @@ class VariantMoveAssignBaseNontrivial : protected VariantCopyBase<T...> {
VariantMoveAssignBaseNontrivial&
operator=(VariantMoveAssignBaseNontrivial&& other) noexcept(
- y_absl::conjunction<std::is_nothrow_move_constructible<T>...,
+ y_absl::conjunction<std::is_nothrow_move_constructible<T>...,
std::is_nothrow_move_assignable<T>...>::value) {
VisitIndices<sizeof...(T)>::Run(
VariantCoreAccess::MakeMoveAssignVisitor(this, &other), other.index_);
@@ -1471,7 +1471,7 @@ struct EqualsOp {
const variant<Types...>* v;
const variant<Types...>* w;
- constexpr bool operator()(SizeT<y_absl::variant_npos> /*v_i*/) const {
+ constexpr bool operator()(SizeT<y_absl::variant_npos> /*v_i*/) const {
return true;
}
@@ -1486,7 +1486,7 @@ struct NotEqualsOp {
const variant<Types...>* v;
const variant<Types...>* w;
- constexpr bool operator()(SizeT<y_absl::variant_npos> /*v_i*/) const {
+ constexpr bool operator()(SizeT<y_absl::variant_npos> /*v_i*/) const {
return false;
}
@@ -1501,7 +1501,7 @@ struct LessThanOp {
const variant<Types...>* v;
const variant<Types...>* w;
- constexpr bool operator()(SizeT<y_absl::variant_npos> /*v_i*/) const {
+ constexpr bool operator()(SizeT<y_absl::variant_npos> /*v_i*/) const {
return false;
}
@@ -1516,7 +1516,7 @@ struct GreaterThanOp {
const variant<Types...>* v;
const variant<Types...>* w;
- constexpr bool operator()(SizeT<y_absl::variant_npos> /*v_i*/) const {
+ constexpr bool operator()(SizeT<y_absl::variant_npos> /*v_i*/) const {
return false;
}
@@ -1531,7 +1531,7 @@ struct LessThanOrEqualsOp {
const variant<Types...>* v;
const variant<Types...>* w;
- constexpr bool operator()(SizeT<y_absl::variant_npos> /*v_i*/) const {
+ constexpr bool operator()(SizeT<y_absl::variant_npos> /*v_i*/) const {
return true;
}
@@ -1546,7 +1546,7 @@ struct GreaterThanOrEqualsOp {
const variant<Types...>* v;
const variant<Types...>* w;
- constexpr bool operator()(SizeT<y_absl::variant_npos> /*v_i*/) const {
+ constexpr bool operator()(SizeT<y_absl::variant_npos> /*v_i*/) const {
return true;
}
@@ -1584,7 +1584,7 @@ struct Swap {
VariantCoreAccess::InitFrom(*v, std::move(tmp));
}
- void operator()(SizeT<y_absl::variant_npos> /*w_i*/) const {
+ void operator()(SizeT<y_absl::variant_npos> /*w_i*/) const {
if (!v->valueless_by_exception()) {
generic_swap();
}
@@ -1618,7 +1618,7 @@ struct VariantHashVisitor {
template <typename Variant, typename... Ts>
struct VariantHashBase<Variant,
- y_absl::enable_if_t<y_absl::conjunction<
+ y_absl::enable_if_t<y_absl::conjunction<
type_traits_internal::IsHashable<Ts>...>::value>,
Ts...> {
using argument_type = Variant;
@@ -1640,7 +1640,7 @@ struct VariantHashBase<Variant,
} // namespace variant_internal
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // !defined(ABSL_USES_STD_VARIANT)
#endif // ABSL_TYPES_variant_internal_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/types/optional.h b/contrib/restricted/abseil-cpp-tstring/y_absl/types/optional.h
index 7465de0f86..d4ef0bb57b 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/types/optional.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/types/optional.h
@@ -16,7 +16,7 @@
// optional.h
// -----------------------------------------------------------------------------
//
-// This header file defines the `y_absl::optional` type for holding a value which
+// This header file defines the `y_absl::optional` type for holding a value which
// may or may not be present. This type is useful for providing value semantics
// for operations that may either wish to return or hold "something-or-nothing".
//
@@ -26,23 +26,23 @@
// // parameter and a bool return type:
// bool AcquireResource(const Input&, Resource * out);
//
-// // Providing an y_absl::optional return type provides a cleaner API:
-// y_absl::optional<Resource> AcquireResource(const Input&);
+// // Providing an y_absl::optional return type provides a cleaner API:
+// y_absl::optional<Resource> AcquireResource(const Input&);
//
-// `y_absl::optional` is a C++11 compatible version of the C++17 `std::optional`
+// `y_absl::optional` is a C++11 compatible version of the C++17 `std::optional`
// abstraction and is designed to be a drop-in replacement for code compliant
// with C++17.
#ifndef ABSL_TYPES_OPTIONAL_H_
#define ABSL_TYPES_OPTIONAL_H_
-#include "y_absl/base/config.h" // TODO(calabrese) IWYU removal?
-#include "y_absl/utility/utility.h"
+#include "y_absl/base/config.h" // TODO(calabrese) IWYU removal?
+#include "y_absl/utility/utility.h"
#ifdef ABSL_USES_STD_OPTIONAL
#include <optional> // IWYU pragma: export
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
using std::bad_optional_access;
using std::optional;
@@ -50,7 +50,7 @@ using std::make_optional;
using std::nullopt_t;
using std::nullopt;
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#else // ABSL_USES_STD_OPTIONAL
@@ -60,18 +60,18 @@ ABSL_NAMESPACE_END
#include <type_traits>
#include <utility>
-#include "y_absl/base/attributes.h"
-#include "y_absl/base/internal/inline_variable.h"
-#include "y_absl/meta/type_traits.h"
-#include "y_absl/types/bad_optional_access.h"
-#include "y_absl/types/internal/optional.h"
+#include "y_absl/base/attributes.h"
+#include "y_absl/base/internal/inline_variable.h"
+#include "y_absl/meta/type_traits.h"
+#include "y_absl/types/bad_optional_access.h"
+#include "y_absl/types/internal/optional.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// nullopt_t
//
-// Class type for `y_absl::nullopt` used to indicate an `y_absl::optional<T>` type
+// Class type for `y_absl::nullopt` used to indicate an `y_absl::optional<T>` type
// that does not contain a value.
struct nullopt_t {
// It must not be default-constructible to avoid ambiguity for opt = {}.
@@ -80,16 +80,16 @@ struct nullopt_t {
// nullopt
//
-// A tag constant of type `y_absl::nullopt_t` used to indicate an empty
-// `y_absl::optional` in certain functions, such as construction or assignment.
+// A tag constant of type `y_absl::nullopt_t` used to indicate an empty
+// `y_absl::optional` in certain functions, such as construction or assignment.
ABSL_INTERNAL_INLINE_CONSTEXPR(nullopt_t, nullopt,
nullopt_t(optional_internal::init_t()));
// -----------------------------------------------------------------------------
-// y_absl::optional
+// y_absl::optional
// -----------------------------------------------------------------------------
//
-// A value of type `y_absl::optional<T>` holds either a value of `T` or an
+// A value of type `y_absl::optional<T>` holds either a value of `T` or an
// "empty" value. When it holds a value of `T`, it stores it as a direct
// sub-object, so `sizeof(optional<T>)` is approximately
// `sizeof(T) + sizeof(bool)`.
@@ -97,13 +97,13 @@ ABSL_INTERNAL_INLINE_CONSTEXPR(nullopt_t, nullopt,
// This implementation is based on the specification in the latest draft of the
// C++17 `std::optional` specification as of May 2017, section 20.6.
//
-// Differences between `y_absl::optional<T>` and `std::optional<T>` include:
+// Differences between `y_absl::optional<T>` and `std::optional<T>` include:
//
// * `constexpr` is not used for non-const member functions.
// (dependency on some differences between C++11 and C++14.)
-// * `y_absl::nullopt` and `y_absl::in_place` are not declared `constexpr`. We
+// * `y_absl::nullopt` and `y_absl::in_place` are not declared `constexpr`. We
// need the inline variable support in C++17 for external linkage.
-// * Throws `y_absl::bad_optional_access` instead of
+// * Throws `y_absl::bad_optional_access` instead of
// `std::bad_optional_access`.
// * `make_optional()` cannot be declared `constexpr` due to the absence of
// guaranteed copy elision.
@@ -146,11 +146,11 @@ class optional : private optional_internal::optional_data<T>,
// (The `in_place_t` is a tag used to indicate that the contained object
// should be constructed in-place.)
template <typename InPlaceT, typename... Args,
- y_absl::enable_if_t<y_absl::conjunction<
+ y_absl::enable_if_t<y_absl::conjunction<
std::is_same<InPlaceT, in_place_t>,
std::is_constructible<T, Args&&...> >::value>* = nullptr>
constexpr explicit optional(InPlaceT, Args&&... args)
- : data_base(in_place_t(), y_absl::forward<Args>(args)...) {}
+ : data_base(in_place_t(), y_absl::forward<Args>(args)...) {}
// Constructs a non-empty `optional` direct-initialized value of type `T` from
// the arguments of an initializer_list and `std::forward<Args>(args)...`.
@@ -161,43 +161,43 @@ class optional : private optional_internal::optional_data<T>,
T, std::initializer_list<U>&, Args&&...>::value>::type>
constexpr explicit optional(in_place_t, std::initializer_list<U> il,
Args&&... args)
- : data_base(in_place_t(), il, y_absl::forward<Args>(args)...) {
+ : data_base(in_place_t(), il, y_absl::forward<Args>(args)...) {
}
// Value constructor (implicit)
template <
typename U = T,
typename std::enable_if<
- y_absl::conjunction<y_absl::negation<std::is_same<
+ y_absl::conjunction<y_absl::negation<std::is_same<
in_place_t, typename std::decay<U>::type> >,
- y_absl::negation<std::is_same<
+ y_absl::negation<std::is_same<
optional<T>, typename std::decay<U>::type> >,
std::is_convertible<U&&, T>,
std::is_constructible<T, U&&> >::value,
bool>::type = false>
- constexpr optional(U&& v) : data_base(in_place_t(), y_absl::forward<U>(v)) {}
+ constexpr optional(U&& v) : data_base(in_place_t(), y_absl::forward<U>(v)) {}
// Value constructor (explicit)
template <
typename U = T,
typename std::enable_if<
- y_absl::conjunction<y_absl::negation<std::is_same<
+ y_absl::conjunction<y_absl::negation<std::is_same<
in_place_t, typename std::decay<U>::type>>,
- y_absl::negation<std::is_same<
+ y_absl::negation<std::is_same<
optional<T>, typename std::decay<U>::type>>,
- y_absl::negation<std::is_convertible<U&&, T>>,
+ y_absl::negation<std::is_convertible<U&&, T>>,
std::is_constructible<T, U&&>>::value,
bool>::type = false>
explicit constexpr optional(U&& v)
- : data_base(in_place_t(), y_absl::forward<U>(v)) {}
+ : data_base(in_place_t(), y_absl::forward<U>(v)) {}
// Converting copy constructor (implicit)
template <typename U,
typename std::enable_if<
- y_absl::conjunction<
- y_absl::negation<std::is_same<T, U> >,
+ y_absl::conjunction<
+ y_absl::negation<std::is_same<T, U> >,
std::is_constructible<T, const U&>,
- y_absl::negation<
+ y_absl::negation<
optional_internal::
is_constructible_convertible_from_optional<T, U> >,
std::is_convertible<const U&, T> >::value,
@@ -211,13 +211,13 @@ class optional : private optional_internal::optional_data<T>,
// Converting copy constructor (explicit)
template <typename U,
typename std::enable_if<
- y_absl::conjunction<
- y_absl::negation<std::is_same<T, U>>,
+ y_absl::conjunction<
+ y_absl::negation<std::is_same<T, U>>,
std::is_constructible<T, const U&>,
- y_absl::negation<
+ y_absl::negation<
optional_internal::
is_constructible_convertible_from_optional<T, U>>,
- y_absl::negation<std::is_convertible<const U&, T>>>::value,
+ y_absl::negation<std::is_convertible<const U&, T>>>::value,
bool>::type = false>
explicit optional(const optional<U>& rhs) {
if (rhs) {
@@ -228,10 +228,10 @@ class optional : private optional_internal::optional_data<T>,
// Converting move constructor (implicit)
template <typename U,
typename std::enable_if<
- y_absl::conjunction<
- y_absl::negation<std::is_same<T, U> >,
+ y_absl::conjunction<
+ y_absl::negation<std::is_same<T, U> >,
std::is_constructible<T, U&&>,
- y_absl::negation<
+ y_absl::negation<
optional_internal::
is_constructible_convertible_from_optional<T, U> >,
std::is_convertible<U&&, T> >::value,
@@ -246,12 +246,12 @@ class optional : private optional_internal::optional_data<T>,
template <
typename U,
typename std::enable_if<
- y_absl::conjunction<
- y_absl::negation<std::is_same<T, U>>, std::is_constructible<T, U&&>,
- y_absl::negation<
+ y_absl::conjunction<
+ y_absl::negation<std::is_same<T, U>>, std::is_constructible<T, U&&>,
+ y_absl::negation<
optional_internal::is_constructible_convertible_from_optional<
T, U>>,
- y_absl::negation<std::is_convertible<U&&, T>>>::value,
+ y_absl::negation<std::is_convertible<U&&, T>>>::value,
bool>::type = false>
explicit optional(optional<U>&& rhs) {
if (rhs) {
@@ -269,7 +269,7 @@ class optional : private optional_internal::optional_data<T>,
// Example:
//
// struct S { int value; };
- // optional<S> opt = y_absl::nullopt; // Could also use opt = { };
+ // optional<S> opt = y_absl::nullopt; // Could also use opt = { };
optional& operator=(nullopt_t) noexcept {
this->destruct();
return *this;
@@ -284,11 +284,11 @@ class optional : private optional_internal::optional_data<T>,
// Value assignment operators
template <
typename U = T,
- typename = typename std::enable_if<y_absl::conjunction<
- y_absl::negation<
+ typename = typename std::enable_if<y_absl::conjunction<
+ y_absl::negation<
std::is_same<optional<T>, typename std::decay<U>::type>>,
- y_absl::negation<
- y_absl::conjunction<std::is_scalar<T>,
+ y_absl::negation<
+ y_absl::conjunction<std::is_scalar<T>,
std::is_same<T, typename std::decay<U>::type>>>,
std::is_constructible<T, U>, std::is_assignable<T&, U>>::value>::type>
optional& operator=(U&& v) {
@@ -298,10 +298,10 @@ class optional : private optional_internal::optional_data<T>,
template <
typename U,
- typename = typename std::enable_if<y_absl::conjunction<
- y_absl::negation<std::is_same<T, U>>,
+ typename = typename std::enable_if<y_absl::conjunction<
+ y_absl::negation<std::is_same<T, U>>,
std::is_constructible<T, const U&>, std::is_assignable<T&, const U&>,
- y_absl::negation<
+ y_absl::negation<
optional_internal::
is_constructible_convertible_assignable_from_optional<
T, U>>>::value>::type>
@@ -315,10 +315,10 @@ class optional : private optional_internal::optional_data<T>,
}
template <typename U,
- typename = typename std::enable_if<y_absl::conjunction<
- y_absl::negation<std::is_same<T, U>>, std::is_constructible<T, U>,
+ typename = typename std::enable_if<y_absl::conjunction<
+ y_absl::negation<std::is_same<T, U>>, std::is_constructible<T, U>,
std::is_assignable<T&, U>,
- y_absl::negation<
+ y_absl::negation<
optional_internal::
is_constructible_convertible_assignable_from_optional<
T, U>>>::value>::type>
@@ -335,7 +335,7 @@ class optional : private optional_internal::optional_data<T>,
// optional::reset()
//
- // Destroys the inner `T` value of an `y_absl::optional` if one is present.
+ // Destroys the inner `T` value of an `y_absl::optional` if one is present.
ABSL_ATTRIBUTE_REINITIALIZES void reset() noexcept { this->destruct(); }
// optional::emplace()
@@ -467,7 +467,7 @@ class optional : private optional_internal::optional_data<T>,
//
// Returns a reference to an `optional`s underlying value. The constness
// and lvalue/rvalue-ness of the `optional` is preserved to the view of
- // the `T` sub-object. Throws `y_absl::bad_optional_access` when the `optional`
+ // the `T` sub-object. Throws `y_absl::bad_optional_access` when the `optional`
// is empty.
constexpr const T& value() const & {
return static_cast<bool>(*this)
@@ -486,7 +486,7 @@ class optional : private optional_internal::optional_data<T>,
: (optional_internal::throw_bad_optional_access(), reference()));
}
constexpr const T&& value() const && { // NOLINT(build/c++11)
- return y_absl::move(
+ return y_absl::move(
static_cast<bool>(*this)
? reference()
: (optional_internal::throw_bad_optional_access(), reference()));
@@ -507,7 +507,7 @@ class optional : private optional_internal::optional_data<T>,
"optional<T>::value_or: U must be convertible to T");
return static_cast<bool>(*this)
? **this
- : static_cast<T>(y_absl::forward<U>(v));
+ : static_cast<T>(y_absl::forward<U>(v));
}
template <typename U>
T value_or(U&& v) && { // NOLINT(build/c++11)
@@ -540,7 +540,7 @@ class optional : private optional_internal::optional_data<T>,
// swap()
//
-// Performs a swap between two `y_absl::optional` objects, using standard
+// Performs a swap between two `y_absl::optional` objects, using standard
// semantics.
template <typename T, typename std::enable_if<
std::is_move_constructible<T>::value &&
@@ -553,7 +553,7 @@ void swap(optional<T>& a, optional<T>& b) noexcept(noexcept(a.swap(b))) {
// make_optional()
//
// Creates a non-empty `optional<T>` where the type of `T` is deduced. An
-// `y_absl::optional` can also be explicitly instantiated with
+// `y_absl::optional` can also be explicitly instantiated with
// `make_optional<T>(v)`.
//
// Note: `make_optional()` constructions may be declared `constexpr` for
@@ -563,23 +563,23 @@ void swap(optional<T>& a, optional<T>& b) noexcept(noexcept(a.swap(b))) {
//
// Example:
//
-// constexpr y_absl::optional<int> opt = y_absl::make_optional(1);
+// constexpr y_absl::optional<int> opt = y_absl::make_optional(1);
// static_assert(opt.value() == 1, "");
template <typename T>
constexpr optional<typename std::decay<T>::type> make_optional(T&& v) {
- return optional<typename std::decay<T>::type>(y_absl::forward<T>(v));
+ return optional<typename std::decay<T>::type>(y_absl::forward<T>(v));
}
template <typename T, typename... Args>
constexpr optional<T> make_optional(Args&&... args) {
- return optional<T>(in_place_t(), y_absl::forward<Args>(args)...);
+ return optional<T>(in_place_t(), y_absl::forward<Args>(args)...);
}
template <typename T, typename U, typename... Args>
constexpr optional<T> make_optional(std::initializer_list<U> il,
Args&&... args) {
return optional<T>(in_place_t(), il,
- y_absl::forward<Args>(args)...);
+ y_absl::forward<Args>(args)...);
}
// Relational operators [optional.relops]
@@ -758,14 +758,14 @@ constexpr auto operator>=(const U& v, const optional<T>& x)
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
namespace std {
-// std::hash specialization for y_absl::optional.
+// std::hash specialization for y_absl::optional.
template <typename T>
-struct hash<y_absl::optional<T> >
- : y_absl::optional_internal::optional_hash_base<T> {};
+struct hash<y_absl::optional<T> >
+ : y_absl::optional_internal::optional_hash_base<T> {};
} // namespace std
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/types/span.h b/contrib/restricted/abseil-cpp-tstring/y_absl/types/span.h
index ab4a70b266..1490b2f1b2 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/types/span.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/types/span.h
@@ -34,19 +34,19 @@
// differences between `y_absl::Span` and `std::span` are:
// * `y_absl::Span` has `operator==` (which is likely a design bug,
// per https://abseil.io/blog/20180531-regular-types)
-// * `y_absl::Span` has the factory functions `MakeSpan()` and
+// * `y_absl::Span` has the factory functions `MakeSpan()` and
// `MakeConstSpan()`
-// * bounds-checked access to `y_absl::Span` is accomplished with `at()`
-// * `y_absl::Span` has compiler-provided move and copy constructors and
+// * bounds-checked access to `y_absl::Span` is accomplished with `at()`
+// * `y_absl::Span` has compiler-provided move and copy constructors and
// assignment. This is due to them being specified as `constexpr`, but that
// implies const in C++11.
-// * A read-only `y_absl::Span<const T>` can be implicitly constructed from an
+// * A read-only `y_absl::Span<const T>` can be implicitly constructed from an
// initializer list.
-// * `y_absl::Span` has no `bytes()`, `size_bytes()`, `as_bytes()`, or
+// * `y_absl::Span` has no `bytes()`, `size_bytes()`, `as_bytes()`, or
// `as_mutable_bytes()` methods
-// * `y_absl::Span` has no static extent template parameter, nor constructors
+// * `y_absl::Span` has no static extent template parameter, nor constructors
// which exist only because of the static extent parameter.
-// * `y_absl::Span` has an explicit mutable-reference constructor
+// * `y_absl::Span` has an explicit mutable-reference constructor
//
// For more information, see the class comments below.
#ifndef ABSL_TYPES_SPAN_H_
@@ -60,14 +60,14 @@
#include <type_traits>
#include <utility>
-#include "y_absl/base/internal/throw_delegate.h"
-#include "y_absl/base/macros.h"
-#include "y_absl/base/optimization.h"
-#include "y_absl/base/port.h" // TODO(strel): remove this include
-#include "y_absl/meta/type_traits.h"
-#include "y_absl/types/internal/span.h"
+#include "y_absl/base/internal/throw_delegate.h"
+#include "y_absl/base/macros.h"
+#include "y_absl/base/optimization.h"
+#include "y_absl/base/port.h" // TODO(strel): remove this include
+#include "y_absl/meta/type_traits.h"
+#include "y_absl/types/internal/span.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
//------------------------------------------------------------------------------
@@ -88,12 +88,12 @@ ABSL_NAMESPACE_BEGIN
//
// Spans may also be constructed from containers holding contiguous sequences.
// Such containers must supply `data()` and `size() const` methods (e.g
-// `std::vector<T>`, `y_absl::InlinedVector<T, N>`). All implicit conversions to
-// `y_absl::Span` from such containers will create spans of type `const T`;
+// `std::vector<T>`, `y_absl::InlinedVector<T, N>`). All implicit conversions to
+// `y_absl::Span` from such containers will create spans of type `const T`;
// spans which can mutate their values (of type `T`) must use explicit
// constructors.
//
-// A `Span<T>` is somewhat analogous to an `y_absl::string_view`, but for an array
+// A `Span<T>` is somewhat analogous to an `y_absl::string_view`, but for an array
// of elements of type `T`, and unlike an `y_absl::string_view`, a span can hold a
// reference to mutable data. A user of `Span` must ensure that the data being
// pointed to outlives the `Span` itself.
@@ -109,14 +109,14 @@ ABSL_NAMESPACE_BEGIN
//
// // Construct a Span explicitly from a container:
// std::vector<int> v = {1, 2, 3, 4, 5};
-// auto span = y_absl::Span<const int>(v);
+// auto span = y_absl::Span<const int>(v);
//
// // Construct a Span explicitly from a C-style array:
// int a[5] = {1, 2, 3, 4, 5};
-// auto span = y_absl::Span<const int>(a);
+// auto span = y_absl::Span<const int>(a);
//
// // Construct a Span implicitly from a container
-// void MyRoutine(y_absl::Span<const int> a) {
+// void MyRoutine(y_absl::Span<const int> a) {
// ...
// }
// std::vector v = {1,2,3,4,5};
@@ -129,25 +129,25 @@ ABSL_NAMESPACE_BEGIN
// (such as resizing) or invalidate iterators into the container.
//
// One common use for a `Span` is when passing arguments to a routine that can
-// accept a variety of array types (e.g. a `std::vector`, `y_absl::InlinedVector`,
+// accept a variety of array types (e.g. a `std::vector`, `y_absl::InlinedVector`,
// a C-style array, etc.). Instead of creating overloads for each case, you
// can simply specify a `Span` as the argument to such a routine.
//
// Example:
//
-// void MyRoutine(y_absl::Span<const int> a) {
+// void MyRoutine(y_absl::Span<const int> a) {
// ...
// }
//
// std::vector v = {1,2,3,4,5};
// MyRoutine(v);
//
-// y_absl::InlinedVector<int, 4> my_inline_vector;
+// y_absl::InlinedVector<int, 4> my_inline_vector;
// MyRoutine(my_inline_vector);
//
// // Explicit constructor from pointer,size
// int* my_array = new int[10];
-// MyRoutine(y_absl::Span<const int>(my_array, 10));
+// MyRoutine(y_absl::Span<const int>(my_array, 10));
template <typename T>
class Span {
private:
@@ -170,7 +170,7 @@ class Span {
public:
using element_type = T;
- using value_type = y_absl::remove_cv_t<T>;
+ using value_type = y_absl::remove_cv_t<T>;
using pointer = T*;
using const_pointer = const T*;
using reference = T&;
@@ -210,7 +210,7 @@ class Span {
// brace-enclosed initializer list to a function expecting a `Span`. Such
// spans constructed from an initializer list must be of type `Span<const T>`.
//
- // void Process(y_absl::Span<const int> x);
+ // void Process(y_absl::Span<const int> x);
// Process({1, 2, 3});
//
// Note that as always the array referenced by the span must outlive the span.
@@ -223,7 +223,7 @@ class Span {
//
// // Assume that this function uses the array directly, not retaining any
// // copy of the span or pointer to any of its elements.
- // void Process(y_absl::Span<const int> ints);
+ // void Process(y_absl::Span<const int> ints);
//
// // Okay: the std::initializer_list<int> will reference a temporary array
// // that isn't destroyed until after the call to Process returns.
@@ -231,14 +231,14 @@ class Span {
//
// // Not okay: the storage used by the std::initializer_list<int> is not
// // allowed to be referenced after the first line.
- // y_absl::Span<const int> ints = { 17, 19 };
+ // y_absl::Span<const int> ints = { 17, 19 };
// Process(ints);
//
// // Not okay for the same reason as above: even when the elements of the
// // initializer list expression are not temporaries the underlying array
// // is, so the initializer list must still outlive the span.
// const int foo = 17;
- // y_absl::Span<const int> ints = { foo };
+ // y_absl::Span<const int> ints = { foo };
// Process(ints);
//
template <typename LazyT = T,
@@ -391,11 +391,11 @@ class Span {
// Examples:
//
// std::vector<int> vec = {10, 11, 12, 13};
- // y_absl::MakeSpan(vec).subspan(1, 2); // {11, 12}
- // y_absl::MakeSpan(vec).subspan(2, 8); // {12, 13}
- // y_absl::MakeSpan(vec).subspan(1); // {11, 12, 13}
- // y_absl::MakeSpan(vec).subspan(4); // {}
- // y_absl::MakeSpan(vec).subspan(5); // throws std::out_of_range
+ // y_absl::MakeSpan(vec).subspan(1, 2); // {11, 12}
+ // y_absl::MakeSpan(vec).subspan(2, 8); // {12, 13}
+ // y_absl::MakeSpan(vec).subspan(1); // {11, 12, 13}
+ // y_absl::MakeSpan(vec).subspan(4); // {}
+ // y_absl::MakeSpan(vec).subspan(5); // throws std::out_of_range
constexpr Span subspan(size_type pos = 0, size_type len = npos) const {
return (pos <= size())
? Span(data() + pos, span_internal::Min(size() - pos, len))
@@ -410,9 +410,9 @@ class Span {
// Examples:
//
// std::vector<int> vec = {10, 11, 12, 13};
- // y_absl::MakeSpan(vec).first(1); // {10}
- // y_absl::MakeSpan(vec).first(3); // {10, 11, 12}
- // y_absl::MakeSpan(vec).first(5); // throws std::out_of_range
+ // y_absl::MakeSpan(vec).first(1); // {10}
+ // y_absl::MakeSpan(vec).first(3); // {10, 11, 12}
+ // y_absl::MakeSpan(vec).first(5); // throws std::out_of_range
constexpr Span first(size_type len) const {
return (len <= size())
? Span(data(), len)
@@ -427,16 +427,16 @@ class Span {
// Examples:
//
// std::vector<int> vec = {10, 11, 12, 13};
- // y_absl::MakeSpan(vec).last(1); // {13}
- // y_absl::MakeSpan(vec).last(3); // {11, 12, 13}
- // y_absl::MakeSpan(vec).last(5); // throws std::out_of_range
+ // y_absl::MakeSpan(vec).last(1); // {13}
+ // y_absl::MakeSpan(vec).last(3); // {11, 12, 13}
+ // y_absl::MakeSpan(vec).last(5); // throws std::out_of_range
constexpr Span last(size_type len) const {
return (len <= size())
? Span(size() - len + data(), len)
: (base_internal::ThrowStdOutOfRange("len > size()"), Span());
}
- // Support for y_absl::Hash.
+ // Support for y_absl::Hash.
template <typename H>
friend H AbslHashValue(H h, Span v) {
return H::combine(H::combine_contiguous(std::move(h), v.data(), v.size()),
@@ -480,13 +480,13 @@ bool operator==(Span<T> a, Span<const T> b) {
}
template <
typename T, typename U,
- typename = span_internal::EnableIfConvertibleTo<U, y_absl::Span<const T>>>
+ typename = span_internal::EnableIfConvertibleTo<U, y_absl::Span<const T>>>
bool operator==(const U& a, Span<T> b) {
return span_internal::EqualImpl<Span, const T>(a, b);
}
template <
typename T, typename U,
- typename = span_internal::EnableIfConvertibleTo<U, y_absl::Span<const T>>>
+ typename = span_internal::EnableIfConvertibleTo<U, y_absl::Span<const T>>>
bool operator==(Span<T> a, const U& b) {
return span_internal::EqualImpl<Span, const T>(a, b);
}
@@ -506,13 +506,13 @@ bool operator!=(Span<T> a, Span<const T> b) {
}
template <
typename T, typename U,
- typename = span_internal::EnableIfConvertibleTo<U, y_absl::Span<const T>>>
+ typename = span_internal::EnableIfConvertibleTo<U, y_absl::Span<const T>>>
bool operator!=(const U& a, Span<T> b) {
return !(a == b);
}
template <
typename T, typename U,
- typename = span_internal::EnableIfConvertibleTo<U, y_absl::Span<const T>>>
+ typename = span_internal::EnableIfConvertibleTo<U, y_absl::Span<const T>>>
bool operator!=(Span<T> a, const U& b) {
return !(a == b);
}
@@ -532,13 +532,13 @@ bool operator<(Span<T> a, Span<const T> b) {
}
template <
typename T, typename U,
- typename = span_internal::EnableIfConvertibleTo<U, y_absl::Span<const T>>>
+ typename = span_internal::EnableIfConvertibleTo<U, y_absl::Span<const T>>>
bool operator<(const U& a, Span<T> b) {
return span_internal::LessThanImpl<Span, const T>(a, b);
}
template <
typename T, typename U,
- typename = span_internal::EnableIfConvertibleTo<U, y_absl::Span<const T>>>
+ typename = span_internal::EnableIfConvertibleTo<U, y_absl::Span<const T>>>
bool operator<(Span<T> a, const U& b) {
return span_internal::LessThanImpl<Span, const T>(a, b);
}
@@ -558,13 +558,13 @@ bool operator>(Span<T> a, Span<const T> b) {
}
template <
typename T, typename U,
- typename = span_internal::EnableIfConvertibleTo<U, y_absl::Span<const T>>>
+ typename = span_internal::EnableIfConvertibleTo<U, y_absl::Span<const T>>>
bool operator>(const U& a, Span<T> b) {
return b < a;
}
template <
typename T, typename U,
- typename = span_internal::EnableIfConvertibleTo<U, y_absl::Span<const T>>>
+ typename = span_internal::EnableIfConvertibleTo<U, y_absl::Span<const T>>>
bool operator>(Span<T> a, const U& b) {
return b < a;
}
@@ -584,13 +584,13 @@ bool operator<=(Span<T> a, Span<const T> b) {
}
template <
typename T, typename U,
- typename = span_internal::EnableIfConvertibleTo<U, y_absl::Span<const T>>>
+ typename = span_internal::EnableIfConvertibleTo<U, y_absl::Span<const T>>>
bool operator<=(const U& a, Span<T> b) {
return !(b < a);
}
template <
typename T, typename U,
- typename = span_internal::EnableIfConvertibleTo<U, y_absl::Span<const T>>>
+ typename = span_internal::EnableIfConvertibleTo<U, y_absl::Span<const T>>>
bool operator<=(Span<T> a, const U& b) {
return !(b < a);
}
@@ -610,13 +610,13 @@ bool operator>=(Span<T> a, Span<const T> b) {
}
template <
typename T, typename U,
- typename = span_internal::EnableIfConvertibleTo<U, y_absl::Span<const T>>>
+ typename = span_internal::EnableIfConvertibleTo<U, y_absl::Span<const T>>>
bool operator>=(const U& a, Span<T> b) {
return !(a < b);
}
template <
typename T, typename U,
- typename = span_internal::EnableIfConvertibleTo<U, y_absl::Span<const T>>>
+ typename = span_internal::EnableIfConvertibleTo<U, y_absl::Span<const T>>>
bool operator>=(Span<T> a, const U& b) {
return !(a < b);
}
@@ -636,7 +636,7 @@ bool operator>=(Span<T> a, const U& b) {
//
// Examples:
//
-// void MyRoutine(y_absl::Span<MyComplicatedType> a) {
+// void MyRoutine(y_absl::Span<MyComplicatedType> a) {
// ...
// };
// // my_vector is a container of non-const types
@@ -647,14 +647,14 @@ bool operator>=(Span<T> a, const U& b) {
// MyRoutine(my_vector); // error, type mismatch
//
// // Explicitly constructing the Span is verbose
-// MyRoutine(y_absl::Span<MyComplicatedType>(my_vector));
+// MyRoutine(y_absl::Span<MyComplicatedType>(my_vector));
//
-// // Use MakeSpan() to make an y_absl::Span<T>
-// MyRoutine(y_absl::MakeSpan(my_vector));
+// // Use MakeSpan() to make an y_absl::Span<T>
+// MyRoutine(y_absl::MakeSpan(my_vector));
//
// // Construct a span from an array ptr+size
-// y_absl::Span<T> my_span() {
-// return y_absl::MakeSpan(&array[0], num_elements_);
+// y_absl::Span<T> my_span() {
+// return y_absl::MakeSpan(&array[0], num_elements_);
// }
//
template <int&... ExplicitArgumentBarrier, typename T>
@@ -669,7 +669,7 @@ Span<T> MakeSpan(T* begin, T* end) noexcept {
template <int&... ExplicitArgumentBarrier, typename C>
constexpr auto MakeSpan(C& c) noexcept // NOLINT(runtime/references)
- -> decltype(y_absl::MakeSpan(span_internal::GetData(c), c.size())) {
+ -> decltype(y_absl::MakeSpan(span_internal::GetData(c), c.size())) {
return MakeSpan(span_internal::GetData(c), c.size());
}
@@ -685,22 +685,22 @@ constexpr Span<T> MakeSpan(T (&array)[N]) noexcept {
//
// Examples:
//
-// void ProcessInts(y_absl::Span<const int> some_ints);
+// void ProcessInts(y_absl::Span<const int> some_ints);
//
// // Call with a pointer and size.
// int array[3] = { 0, 0, 0 };
-// ProcessInts(y_absl::MakeConstSpan(&array[0], 3));
+// ProcessInts(y_absl::MakeConstSpan(&array[0], 3));
//
// // Call with a [begin, end) pair.
-// ProcessInts(y_absl::MakeConstSpan(&array[0], &array[3]));
+// ProcessInts(y_absl::MakeConstSpan(&array[0], &array[3]));
//
// // Call directly with an array.
-// ProcessInts(y_absl::MakeConstSpan(array));
+// ProcessInts(y_absl::MakeConstSpan(array));
//
// // Call with a contiguous container.
// std::vector<int> some_ints = ...;
-// ProcessInts(y_absl::MakeConstSpan(some_ints));
-// ProcessInts(y_absl::MakeConstSpan(std::vector<int>{ 0, 0, 0 }));
+// ProcessInts(y_absl::MakeConstSpan(some_ints));
+// ProcessInts(y_absl::MakeConstSpan(std::vector<int>{ 0, 0, 0 }));
//
template <int&... ExplicitArgumentBarrier, typename T>
constexpr Span<const T> MakeConstSpan(T* ptr, size_t size) noexcept {
@@ -722,5 +722,5 @@ constexpr Span<const T> MakeConstSpan(const T (&array)[N]) noexcept {
return Span<const T>(array, N);
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_TYPES_SPAN_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/types/variant.h b/contrib/restricted/abseil-cpp-tstring/y_absl/types/variant.h
index 3eecc7dfd4..b3d7235018 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/types/variant.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/types/variant.h
@@ -16,40 +16,40 @@
// variant.h
// -----------------------------------------------------------------------------
//
-// This header file defines an `y_absl::variant` type for holding a type-safe
+// This header file defines an `y_absl::variant` type for holding a type-safe
// value of some prescribed set of types (noted as alternative types), and
// associated functions for managing variants.
//
-// The `y_absl::variant` type is a form of type-safe union. An `y_absl::variant`
+// The `y_absl::variant` type is a form of type-safe union. An `y_absl::variant`
// should always hold a value of one of its alternative types (except in the
// "valueless by exception state" -- see below). A default-constructed
-// `y_absl::variant` will hold the value of its first alternative type, provided
+// `y_absl::variant` will hold the value of its first alternative type, provided
// it is default-constructible.
//
-// In exceptional cases due to error, an `y_absl::variant` can hold no
+// In exceptional cases due to error, an `y_absl::variant` can hold no
// value (known as a "valueless by exception" state), though this is not the
// norm.
//
-// As with `y_absl::optional`, an `y_absl::variant` -- when it holds a value --
+// As with `y_absl::optional`, an `y_absl::variant` -- when it holds a value --
// allocates a value of that type directly within the `variant` itself; it
// cannot hold a reference, array, or the type `void`; it can, however, hold a
// pointer to externally managed memory.
//
-// `y_absl::variant` is a C++11 compatible version of the C++17 `std::variant`
+// `y_absl::variant` is a C++11 compatible version of the C++17 `std::variant`
// abstraction and is designed to be a drop-in replacement for code compliant
// with C++17.
#ifndef ABSL_TYPES_VARIANT_H_
#define ABSL_TYPES_VARIANT_H_
-#include "y_absl/base/config.h"
-#include "y_absl/utility/utility.h"
+#include "y_absl/base/config.h"
+#include "y_absl/utility/utility.h"
#ifdef ABSL_USES_STD_VARIANT
#include <variant> // IWYU pragma: export
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
using std::bad_variant_access;
using std::get;
@@ -64,7 +64,7 @@ using std::variant_size;
using std::variant_size_v;
using std::visit;
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#else // ABSL_USES_STD_VARIANT
@@ -73,49 +73,49 @@ ABSL_NAMESPACE_END
#include <type_traits>
#include <utility>
-#include "y_absl/base/macros.h"
-#include "y_absl/base/port.h"
-#include "y_absl/meta/type_traits.h"
-#include "y_absl/types/internal/variant.h"
+#include "y_absl/base/macros.h"
+#include "y_absl/base/port.h"
+#include "y_absl/meta/type_traits.h"
+#include "y_absl/types/internal/variant.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// -----------------------------------------------------------------------------
-// y_absl::variant
+// y_absl::variant
// -----------------------------------------------------------------------------
//
-// An `y_absl::variant` type is a form of type-safe union. An `y_absl::variant` --
+// An `y_absl::variant` type is a form of type-safe union. An `y_absl::variant` --
// except in exceptional cases -- always holds a value of one of its alternative
// types.
//
// Example:
//
-// // Construct a variant that holds either an integer or a TString and
-// // assign it to a TString.
-// y_absl::variant<int, TString> v = TString("abc");
+// // Construct a variant that holds either an integer or a TString and
+// // assign it to a TString.
+// y_absl::variant<int, TString> v = TString("abc");
//
// // A default-constructed variant will hold a value-initialized value of
// // the first alternative type.
-// auto a = y_absl::variant<int, TString>(); // Holds an int of value '0'.
+// auto a = y_absl::variant<int, TString>(); // Holds an int of value '0'.
//
// // variants are assignable.
//
// // copy assignment
-// auto v1 = y_absl::variant<int, TString>("abc");
-// auto v2 = y_absl::variant<int, TString>(10);
+// auto v1 = y_absl::variant<int, TString>("abc");
+// auto v2 = y_absl::variant<int, TString>(10);
// v2 = v1; // copy assign
//
// // move assignment
-// auto v1 = y_absl::variant<int, TString>("abc");
-// v1 = y_absl::variant<int, TString>(10);
+// auto v1 = y_absl::variant<int, TString>("abc");
+// v1 = y_absl::variant<int, TString>(10);
//
// // assignment through type conversion
// a = 128; // variant contains int
-// a = "128"; // variant contains TString
+// a = "128"; // variant contains TString
//
-// An `y_absl::variant` holding a value of one of its alternative types `T` holds
-// an allocation of `T` directly within the variant itself. An `y_absl::variant`
+// An `y_absl::variant` holding a value of one of its alternative types `T` holds
+// an allocation of `T` directly within the variant itself. An `y_absl::variant`
// is not allowed to allocate additional storage, such as dynamic memory, to
// allocate the contained value. The contained value shall be allocated in a
// region of the variant storage suitably aligned for all alternative types.
@@ -124,8 +124,8 @@ class variant;
// swap()
//
-// Swaps two `y_absl::variant` values. This function is equivalent to `v.swap(w)`
-// where `v` and `w` are `y_absl::variant` types.
+// Swaps two `y_absl::variant` values. This function is equivalent to `v.swap(w)`
+// where `v` and `w` are `y_absl::variant` types.
//
// Note that this function requires all alternative types to be both swappable
// and move-constructible, because any two variants may refer to either the same
@@ -134,8 +134,8 @@ class variant;
//
template <
typename... Ts,
- y_absl::enable_if_t<
- y_absl::conjunction<std::is_move_constructible<Ts>...,
+ y_absl::enable_if_t<
+ y_absl::conjunction<std::is_move_constructible<Ts>...,
type_traits_internal::IsSwappable<Ts>...>::value,
int> = 0>
void swap(variant<Ts...>& v, variant<Ts...>& w) noexcept(noexcept(v.swap(w))) {
@@ -144,25 +144,25 @@ void swap(variant<Ts...>& v, variant<Ts...>& w) noexcept(noexcept(v.swap(w))) {
// variant_size
//
-// Returns the number of alternative types available for a given `y_absl::variant`
+// Returns the number of alternative types available for a given `y_absl::variant`
// type as a compile-time constant expression. As this is a class template, it
// is not generally useful for accessing the number of alternative types of
-// any given `y_absl::variant` instance.
+// any given `y_absl::variant` instance.
//
// Example:
//
-// auto a = y_absl::variant<int, TString>;
+// auto a = y_absl::variant<int, TString>;
// constexpr int num_types =
-// y_absl::variant_size<y_absl::variant<int, TString>>();
+// y_absl::variant_size<y_absl::variant<int, TString>>();
//
// // You can also use the member constant `value`.
// constexpr int num_types =
-// y_absl::variant_size<y_absl::variant<int, TString>>::value;
+// y_absl::variant_size<y_absl::variant<int, TString>>::value;
//
-// // `y_absl::variant_size` is more valuable for use in generic code:
+// // `y_absl::variant_size` is more valuable for use in generic code:
// template <typename Variant>
// constexpr bool IsVariantMultivalue() {
-// return y_absl::variant_size<Variant>() > 1;
+// return y_absl::variant_size<Variant>() > 1;
// }
//
// Note that the set of cv-qualified specializations of `variant_size` are
@@ -189,20 +189,20 @@ struct variant_size<const volatile T> : variant_size<T>::type {};
// variant_alternative
//
-// Returns the alternative type for a given `y_absl::variant` at the passed
+// Returns the alternative type for a given `y_absl::variant` at the passed
// index value as a compile-time constant expression. As this is a class
// template resulting in a type, it is not useful for access of the run-time
-// value of any given `y_absl::variant` variable.
+// value of any given `y_absl::variant` variable.
//
// Example:
//
// // The type of the 0th alternative is "int".
// using alternative_type_0
-// = y_absl::variant_alternative<0, y_absl::variant<int, TString>>::type;
+// = y_absl::variant_alternative<0, y_absl::variant<int, TString>>::type;
//
// static_assert(std::is_same<alternative_type_0, int>::value, "");
//
-// // `y_absl::variant_alternative` is more valuable for use in generic code:
+// // `y_absl::variant_alternative` is more valuable for use in generic code:
// template <typename Variant>
// constexpr bool IsFirstElementTrivial() {
// return std::is_trivial_v<variant_alternative<0, Variant>::type>;
@@ -244,7 +244,7 @@ struct variant_alternative<I, const volatile T> {
// Example:
//
// using alternative_type_0
-// = y_absl::variant_alternative_t<0, y_absl::variant<int, TString>>;
+// = y_absl::variant_alternative_t<0, y_absl::variant<int, TString>>;
// static_assert(std::is_same<alternative_type_0, int>::value, "");
template <std::size_t I, class T>
using variant_alternative_t = typename variant_alternative<I, T>::type;
@@ -256,8 +256,8 @@ using variant_alternative_t = typename variant_alternative<I, T>::type;
//
// Example:
//
-// y_absl::variant<int, TString> foo = 42;
-// if (y_absl::holds_alternative<int>(foo)) {
+// y_absl::variant<int, TString> foo = 42;
+// if (y_absl::holds_alternative<int>(foo)) {
// std::cout << "The variant holds an integer";
// }
template <class T, class... Types>
@@ -278,22 +278,22 @@ constexpr bool holds_alternative(const variant<Types...>& v) noexcept {
// using a type that is not unique within the variant's set of alternative types
// is a compile-time error. If the index of the alternative being specified is
// different from the index of the alternative that is currently stored, throws
-// `y_absl::bad_variant_access`.
+// `y_absl::bad_variant_access`.
//
// Example:
//
-// auto a = y_absl::variant<int, TString>;
+// auto a = y_absl::variant<int, TString>;
//
// // Get the value by type (if unique).
-// int i = y_absl::get<int>(a);
+// int i = y_absl::get<int>(a);
//
-// auto b = y_absl::variant<int, int>;
+// auto b = y_absl::variant<int, int>;
//
// // Getting the value by a type that is not unique is ill-formed.
-// int j = y_absl::get<int>(b); // Compile Error!
+// int j = y_absl::get<int>(b); // Compile Error!
//
// // Getting value by index not ambiguous and allowed.
-// int k = y_absl::get<1>(b);
+// int k = y_absl::get<1>(b);
// Overload for getting a variant's lvalue by type.
template <class T, class... Types>
@@ -303,11 +303,11 @@ constexpr T& get(variant<Types...>& v) { // NOLINT
}
// Overload for getting a variant's rvalue by type.
-// Note: `y_absl::move()` is required to allow use of constexpr in C++11.
+// Note: `y_absl::move()` is required to allow use of constexpr in C++11.
template <class T, class... Types>
constexpr T&& get(variant<Types...>&& v) {
return variant_internal::VariantCoreAccess::CheckedAccess<
- variant_internal::IndexOf<T, Types...>::value>(y_absl::move(v));
+ variant_internal::IndexOf<T, Types...>::value>(y_absl::move(v));
}
// Overload for getting a variant's const lvalue by type.
@@ -318,11 +318,11 @@ constexpr const T& get(const variant<Types...>& v) {
}
// Overload for getting a variant's const rvalue by type.
-// Note: `y_absl::move()` is required to allow use of constexpr in C++11.
+// Note: `y_absl::move()` is required to allow use of constexpr in C++11.
template <class T, class... Types>
constexpr const T&& get(const variant<Types...>&& v) {
return variant_internal::VariantCoreAccess::CheckedAccess<
- variant_internal::IndexOf<T, Types...>::value>(y_absl::move(v));
+ variant_internal::IndexOf<T, Types...>::value>(y_absl::move(v));
}
// Overload for getting a variant's lvalue by index.
@@ -333,11 +333,11 @@ constexpr variant_alternative_t<I, variant<Types...>>& get(
}
// Overload for getting a variant's rvalue by index.
-// Note: `y_absl::move()` is required to allow use of constexpr in C++11.
+// Note: `y_absl::move()` is required to allow use of constexpr in C++11.
template <std::size_t I, class... Types>
constexpr variant_alternative_t<I, variant<Types...>>&& get(
variant<Types...>&& v) {
- return variant_internal::VariantCoreAccess::CheckedAccess<I>(y_absl::move(v));
+ return variant_internal::VariantCoreAccess::CheckedAccess<I>(y_absl::move(v));
}
// Overload for getting a variant's const lvalue by index.
@@ -348,11 +348,11 @@ constexpr const variant_alternative_t<I, variant<Types...>>& get(
}
// Overload for getting a variant's const rvalue by index.
-// Note: `y_absl::move()` is required to allow use of constexpr in C++11.
+// Note: `y_absl::move()` is required to allow use of constexpr in C++11.
template <std::size_t I, class... Types>
constexpr const variant_alternative_t<I, variant<Types...>>&& get(
const variant<Types...>&& v) {
- return variant_internal::VariantCoreAccess::CheckedAccess<I>(y_absl::move(v));
+ return variant_internal::VariantCoreAccess::CheckedAccess<I>(y_absl::move(v));
}
// get_if()
@@ -368,7 +368,7 @@ constexpr const variant_alternative_t<I, variant<Types...>>&& get(
// Overload for getting a pointer to the value stored in the given variant by
// index.
template <std::size_t I, class... Types>
-constexpr y_absl::add_pointer_t<variant_alternative_t<I, variant<Types...>>>
+constexpr y_absl::add_pointer_t<variant_alternative_t<I, variant<Types...>>>
get_if(variant<Types...>* v) noexcept {
return (v != nullptr && v->index() == I)
? std::addressof(
@@ -379,7 +379,7 @@ get_if(variant<Types...>* v) noexcept {
// Overload for getting a pointer to the const value stored in the given
// variant by index.
template <std::size_t I, class... Types>
-constexpr y_absl::add_pointer_t<const variant_alternative_t<I, variant<Types...>>>
+constexpr y_absl::add_pointer_t<const variant_alternative_t<I, variant<Types...>>>
get_if(const variant<Types...>* v) noexcept {
return (v != nullptr && v->index() == I)
? std::addressof(
@@ -390,21 +390,21 @@ get_if(const variant<Types...>* v) noexcept {
// Overload for getting a pointer to the value stored in the given variant by
// type.
template <class T, class... Types>
-constexpr y_absl::add_pointer_t<T> get_if(variant<Types...>* v) noexcept {
- return y_absl::get_if<variant_internal::IndexOf<T, Types...>::value>(v);
+constexpr y_absl::add_pointer_t<T> get_if(variant<Types...>* v) noexcept {
+ return y_absl::get_if<variant_internal::IndexOf<T, Types...>::value>(v);
}
// Overload for getting a pointer to the const value stored in the given variant
// by type.
template <class T, class... Types>
-constexpr y_absl::add_pointer_t<const T> get_if(
+constexpr y_absl::add_pointer_t<const T> get_if(
const variant<Types...>* v) noexcept {
- return y_absl::get_if<variant_internal::IndexOf<T, Types...>::value>(v);
+ return y_absl::get_if<variant_internal::IndexOf<T, Types...>::value>(v);
}
// visit()
//
-// Calls a provided functor on a given set of variants. `y_absl::visit()` is
+// Calls a provided functor on a given set of variants. `y_absl::visit()` is
// commonly used to conditionally inspect the state of a given variant (or set
// of variants).
//
@@ -421,19 +421,19 @@ constexpr y_absl::add_pointer_t<const T> get_if(
// }
// };
//
-// // Declare our variant, and call `y_absl::visit()` on it.
+// // Declare our variant, and call `y_absl::visit()` on it.
// // Note that `GetVariant()` returns void in either case.
-// y_absl::variant<int, TString> foo = TString("foo");
+// y_absl::variant<int, TString> foo = TString("foo");
// GetVariant visitor;
-// y_absl::visit(visitor, foo); // Prints `The variant's value is: foo'
+// y_absl::visit(visitor, foo); // Prints `The variant's value is: foo'
template <typename Visitor, typename... Variants>
variant_internal::VisitResult<Visitor, Variants...> visit(Visitor&& vis,
Variants&&... vars) {
return variant_internal::
- VisitIndices<variant_size<y_absl::decay_t<Variants> >::value...>::Run(
+ VisitIndices<variant_size<y_absl::decay_t<Variants> >::value...>::Run(
variant_internal::PerformVisitation<Visitor, Variants...>{
- std::forward_as_tuple(y_absl::forward<Variants>(vars)...),
- y_absl::forward<Visitor>(vis)},
+ std::forward_as_tuple(y_absl::forward<Variants>(vars)...),
+ y_absl::forward<Visitor>(vis)},
vars.index()...);
}
@@ -443,7 +443,7 @@ variant_internal::VisitResult<Visitor, Variants...> visit(Visitor&& vis,
// which the first variant type is otherwise not default-constructible.
struct monostate {};
-// `y_absl::monostate` Relational Operators
+// `y_absl::monostate` Relational Operators
constexpr bool operator<(monostate, monostate) noexcept { return false; }
constexpr bool operator>(monostate, monostate) noexcept { return false; }
@@ -454,20 +454,20 @@ constexpr bool operator!=(monostate, monostate) noexcept { return false; }
//------------------------------------------------------------------------------
-// `y_absl::variant` Template Definition
+// `y_absl::variant` Template Definition
//------------------------------------------------------------------------------
template <typename T0, typename... Tn>
class variant<T0, Tn...> : private variant_internal::VariantBase<T0, Tn...> {
- static_assert(y_absl::conjunction<std::is_object<T0>,
+ static_assert(y_absl::conjunction<std::is_object<T0>,
std::is_object<Tn>...>::value,
"Attempted to instantiate a variant containing a non-object "
"type.");
- // Intentionally not qualifying `negation` with `y_absl::` to work around a bug
+ // Intentionally not qualifying `negation` with `y_absl::` to work around a bug
// in MSVC 2015 with inline namespace and variadic template.
- static_assert(y_absl::conjunction<negation<std::is_array<T0> >,
+ static_assert(y_absl::conjunction<negation<std::is_array<T0> >,
negation<std::is_array<Tn> >...>::value,
"Attempted to instantiate a variant containing an array type.");
- static_assert(y_absl::conjunction<std::is_nothrow_destructible<T0>,
+ static_assert(y_absl::conjunction<std::is_nothrow_destructible<T0>,
std::is_nothrow_destructible<Tn>...>::value,
"Attempted to instantiate a variant containing a non-nothrow "
"destructible type.");
@@ -499,18 +499,18 @@ class variant<T0, Tn...> : private variant_internal::VariantBase<T0, Tn...> {
//
// NOTE: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0608r1.html
// has been voted passed the design phase in the C++ standard meeting in Mar
- // 2018. It will be implemented and integrated into `y_absl::variant`.
+ // 2018. It will be implemented and integrated into `y_absl::variant`.
template <
class T,
std::size_t I = std::enable_if<
variant_internal::IsNeitherSelfNorInPlace<variant,
- y_absl::decay_t<T>>::value,
+ y_absl::decay_t<T>>::value,
variant_internal::IndexOfConstructedType<variant, T>>::type::value,
- class Tj = y_absl::variant_alternative_t<I, variant>,
- y_absl::enable_if_t<std::is_constructible<Tj, T>::value>* =
+ class Tj = y_absl::variant_alternative_t<I, variant>,
+ y_absl::enable_if_t<std::is_constructible<Tj, T>::value>* =
nullptr>
constexpr variant(T&& t) noexcept(std::is_nothrow_constructible<Tj, T>::value)
- : Base(variant_internal::EmplaceTag<I>(), y_absl::forward<T>(t)) {}
+ : Base(variant_internal::EmplaceTag<I>(), y_absl::forward<T>(t)) {}
// Constructs a variant of an alternative type from the arguments through
// direct-initialization.
@@ -524,7 +524,7 @@ class variant<T0, Tn...> : private variant_internal::VariantBase<T0, Tn...> {
constexpr explicit variant(in_place_type_t<T>, Args&&... args)
: Base(variant_internal::EmplaceTag<
variant_internal::UnambiguousIndexOf<variant, T>::value>(),
- y_absl::forward<Args>(args)...) {}
+ y_absl::forward<Args>(args)...) {}
// Constructs a variant of an alternative type from an initializer list
// and other arguments through direct-initialization.
@@ -539,7 +539,7 @@ class variant<T0, Tn...> : private variant_internal::VariantBase<T0, Tn...> {
Args&&... args)
: Base(variant_internal::EmplaceTag<
variant_internal::UnambiguousIndexOf<variant, T>::value>(),
- il, y_absl::forward<Args>(args)...) {}
+ il, y_absl::forward<Args>(args)...) {}
// Constructs a variant of an alternative type from a provided index,
// through value-initialization using the provided forwarded arguments.
@@ -548,7 +548,7 @@ class variant<T0, Tn...> : private variant_internal::VariantBase<T0, Tn...> {
variant_internal::VariantAlternativeSfinaeT<I, variant>,
Args...>::value>::type* = nullptr>
constexpr explicit variant(in_place_index_t<I>, Args&&... args)
- : Base(variant_internal::EmplaceTag<I>(), y_absl::forward<Args>(args)...) {}
+ : Base(variant_internal::EmplaceTag<I>(), y_absl::forward<Args>(args)...) {}
// Constructs a variant of an alternative type from a provided index,
// through value-initialization of an initializer list and the provided
@@ -560,12 +560,12 @@ class variant<T0, Tn...> : private variant_internal::VariantBase<T0, Tn...> {
constexpr explicit variant(in_place_index_t<I>, std::initializer_list<U> il,
Args&&... args)
: Base(variant_internal::EmplaceTag<I>(), il,
- y_absl::forward<Args>(args)...) {}
+ y_absl::forward<Args>(args)...) {}
// Destructors
// Destroys the variant's currently contained value, provided that
- // `y_absl::valueless_by_exception()` is false.
+ // `y_absl::valueless_by_exception()` is false.
~variant() = default;
// Assignment Operators
@@ -580,13 +580,13 @@ class variant<T0, Tn...> : private variant_internal::VariantBase<T0, Tn...> {
//
// NOTE: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0608r1.html
// has been voted passed the design phase in the C++ standard meeting in Mar
- // 2018. It will be implemented and integrated into `y_absl::variant`.
+ // 2018. It will be implemented and integrated into `y_absl::variant`.
template <
class T,
std::size_t I = std::enable_if<
- !std::is_same<y_absl::decay_t<T>, variant>::value,
+ !std::is_same<y_absl::decay_t<T>, variant>::value,
variant_internal::IndexOfConstructedType<variant, T>>::type::value,
- class Tj = y_absl::variant_alternative_t<I, variant>,
+ class Tj = y_absl::variant_alternative_t<I, variant>,
typename std::enable_if<std::is_assignable<Tj&, T>::value &&
std::is_constructible<Tj, T>::value>::type* =
nullptr>
@@ -595,7 +595,7 @@ class variant<T0, Tn...> : private variant_internal::VariantBase<T0, Tn...> {
std::is_nothrow_constructible<Tj, T>::value) {
variant_internal::VisitIndices<sizeof...(Tn) + 1>::Run(
variant_internal::VariantCoreAccess::MakeConversionAssignVisitor(
- this, y_absl::forward<T>(t)),
+ this, y_absl::forward<T>(t)),
index());
return *this;
@@ -611,19 +611,19 @@ class variant<T0, Tn...> : private variant_internal::VariantBase<T0, Tn...> {
//
// Example:
//
- // y_absl::variant<std::vector<int>, int, TString> v;
+ // y_absl::variant<std::vector<int>, int, TString> v;
// v.emplace<int>(99);
- // v.emplace<TString>("abc");
+ // v.emplace<TString>("abc");
template <
class T, class... Args,
typename std::enable_if<std::is_constructible<
- y_absl::variant_alternative_t<
+ y_absl::variant_alternative_t<
variant_internal::UnambiguousIndexOf<variant, T>::value, variant>,
Args...>::value>::type* = nullptr>
T& emplace(Args&&... args) {
return variant_internal::VariantCoreAccess::Replace<
variant_internal::UnambiguousIndexOf<variant, T>::value>(
- this, y_absl::forward<Args>(args)...);
+ this, y_absl::forward<Args>(args)...);
}
// Constructs a value of the given alternative type T within the variant using
@@ -633,18 +633,18 @@ class variant<T0, Tn...> : private variant_internal::VariantBase<T0, Tn...> {
//
// Example:
//
- // y_absl::variant<std::vector<int>, int, TString> v;
+ // y_absl::variant<std::vector<int>, int, TString> v;
// v.emplace<std::vector<int>>({0, 1, 2});
template <
class T, class U, class... Args,
typename std::enable_if<std::is_constructible<
- y_absl::variant_alternative_t<
+ y_absl::variant_alternative_t<
variant_internal::UnambiguousIndexOf<variant, T>::value, variant>,
std::initializer_list<U>&, Args...>::value>::type* = nullptr>
T& emplace(std::initializer_list<U> il, Args&&... args) {
return variant_internal::VariantCoreAccess::Replace<
variant_internal::UnambiguousIndexOf<variant, T>::value>(
- this, il, y_absl::forward<Args>(args)...);
+ this, il, y_absl::forward<Args>(args)...);
}
// Destroys the current value of the variant (provided that
@@ -653,17 +653,17 @@ class variant<T0, Tn...> : private variant_internal::VariantBase<T0, Tn...> {
//
// Example:
//
- // y_absl::variant<std::vector<int>, int, int> v;
+ // y_absl::variant<std::vector<int>, int, int> v;
// v.emplace<1>(99);
// v.emplace<2>(98);
// v.emplace<int>(99); // Won't compile. 'int' isn't a unique type.
template <std::size_t I, class... Args,
typename std::enable_if<
- std::is_constructible<y_absl::variant_alternative_t<I, variant>,
+ std::is_constructible<y_absl::variant_alternative_t<I, variant>,
Args...>::value>::type* = nullptr>
- y_absl::variant_alternative_t<I, variant>& emplace(Args&&... args) {
+ y_absl::variant_alternative_t<I, variant>& emplace(Args&&... args) {
return variant_internal::VariantCoreAccess::Replace<I>(
- this, y_absl::forward<Args>(args)...);
+ this, y_absl::forward<Args>(args)...);
}
// Destroys the current value of the variant (provided that
@@ -672,23 +672,23 @@ class variant<T0, Tn...> : private variant_internal::VariantBase<T0, Tn...> {
//
// Example:
//
- // y_absl::variant<std::vector<int>, int, int> v;
+ // y_absl::variant<std::vector<int>, int, int> v;
// v.emplace<0>({0, 1, 2});
template <std::size_t I, class U, class... Args,
typename std::enable_if<std::is_constructible<
- y_absl::variant_alternative_t<I, variant>,
+ y_absl::variant_alternative_t<I, variant>,
std::initializer_list<U>&, Args...>::value>::type* = nullptr>
- y_absl::variant_alternative_t<I, variant>& emplace(std::initializer_list<U> il,
+ y_absl::variant_alternative_t<I, variant>& emplace(std::initializer_list<U> il,
Args&&... args) {
return variant_internal::VariantCoreAccess::Replace<I>(
- this, il, y_absl::forward<Args>(args)...);
+ this, il, y_absl::forward<Args>(args)...);
}
// variant::valueless_by_exception()
//
// Returns false if and only if the variant currently holds a valid value.
constexpr bool valueless_by_exception() const noexcept {
- return this->index_ == y_absl::variant_npos;
+ return this->index_ == y_absl::variant_npos;
}
// variant::index()
@@ -702,7 +702,7 @@ class variant<T0, Tn...> : private variant_internal::VariantBase<T0, Tn...> {
// Swaps the values of two variant objects.
//
void swap(variant& rhs) noexcept(
- y_absl::conjunction<
+ y_absl::conjunction<
std::is_nothrow_move_constructible<T0>,
std::is_nothrow_move_constructible<Tn>...,
type_traits_internal::IsNothrowSwappable<T0>,
@@ -804,26 +804,26 @@ operator>=(const variant<Types...>& a, const variant<Types...>& b) {
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
namespace std {
// hash()
template <> // NOLINT
-struct hash<y_absl::monostate> {
- std::size_t operator()(y_absl::monostate) const { return 0; }
+struct hash<y_absl::monostate> {
+ std::size_t operator()(y_absl::monostate) const { return 0; }
};
template <class... T> // NOLINT
-struct hash<y_absl::variant<T...>>
- : y_absl::variant_internal::VariantHashBase<y_absl::variant<T...>, void,
- y_absl::remove_const_t<T>...> {};
+struct hash<y_absl::variant<T...>>
+ : y_absl::variant_internal::VariantHashBase<y_absl::variant<T...>, void,
+ y_absl::remove_const_t<T>...> {};
} // namespace std
#endif // ABSL_USES_STD_VARIANT
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
namespace variant_internal {
@@ -841,26 +841,26 @@ struct ConversionVisitor {
// ConvertVariantTo()
//
-// Helper functions to convert an `y_absl::variant` to a variant of another set of
+// Helper functions to convert an `y_absl::variant` to a variant of another set of
// types, provided that the alternative type of the new variant type can be
// converted from any type in the source variant.
//
// Example:
//
-// y_absl::variant<name1, name2, float> InternalReq(const Req&);
+// y_absl::variant<name1, name2, float> InternalReq(const Req&);
//
// // name1 and name2 are convertible to name
-// y_absl::variant<name, float> ExternalReq(const Req& req) {
-// return y_absl::ConvertVariantTo<y_absl::variant<name, float>>(
+// y_absl::variant<name, float> ExternalReq(const Req& req) {
+// return y_absl::ConvertVariantTo<y_absl::variant<name, float>>(
// InternalReq(req));
// }
template <typename To, typename Variant>
To ConvertVariantTo(Variant&& variant) {
- return y_absl::visit(variant_internal::ConversionVisitor<To>{},
+ return y_absl::visit(variant_internal::ConversionVisitor<To>{},
std::forward<Variant>(variant));
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_TYPES_VARIANT_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/utility/utility.h b/contrib/restricted/abseil-cpp-tstring/y_absl/utility/utility.h
index 842f5e7f22..c2e4d91d43 100644
--- a/contrib/restricted/abseil-cpp-tstring/y_absl/utility/utility.h
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/utility/utility.h
@@ -45,12 +45,12 @@
#include <tuple>
#include <utility>
-#include "y_absl/base/config.h"
-#include "y_absl/base/internal/inline_variable.h"
-#include "y_absl/base/internal/invoke.h"
-#include "y_absl/meta/type_traits.h"
+#include "y_absl/base/config.h"
+#include "y_absl/base/internal/inline_variable.h"
+#include "y_absl/base/internal/invoke.h"
+#include "y_absl/meta/type_traits.h"
-namespace y_absl {
+namespace y_absl {
ABSL_NAMESPACE_BEGIN
// integer_sequence
@@ -58,7 +58,7 @@ ABSL_NAMESPACE_BEGIN
// Class template representing a compile-time integer sequence. An instantiation
// of `integer_sequence<T, Ints...>` has a sequence of integers encoded in its
// type through its template arguments (which is a common need when
-// working with C++11 variadic templates). `y_absl::integer_sequence` is designed
+// working with C++11 variadic templates). `y_absl::integer_sequence` is designed
// to be a drop-in replacement for C++14's `std::integer_sequence`.
//
// Example:
@@ -81,7 +81,7 @@ struct integer_sequence {
// index_sequence
//
// A helper template for an `integer_sequence` of `size_t`,
-// `y_absl::index_sequence` is designed to be a drop-in replacement for C++14's
+// `y_absl::index_sequence` is designed to be a drop-in replacement for C++14's
// `std::index_sequence`.
template <size_t... Ints>
using index_sequence = integer_sequence<size_t, Ints...>;
@@ -169,7 +169,7 @@ using std::in_place;
// in_place_t
//
// Tag type used to specify in-place construction, such as with
-// `y_absl::optional`, designed to be a drop-in replacement for C++17's
+// `y_absl::optional`, designed to be a drop-in replacement for C++17's
// `std::in_place_t`.
struct in_place_t {};
@@ -185,7 +185,7 @@ using std::in_place_type_t;
// in_place_type_t
//
// Tag type used for in-place construction when the type to construct needs to
-// be specified, such as with `y_absl::any`, designed to be a drop-in replacement
+// be specified, such as with `y_absl::any`, designed to be a drop-in replacement
// for C++17's `std::in_place_type_t`.
template <typename T>
using in_place_type_t = void (*)(utility_internal::InPlaceTypeTag<T>);
@@ -202,7 +202,7 @@ using std::in_place_index_t;
// in_place_index_t
//
// Tag type used for in-place construction when the type to construct needs to
-// be specified, such as with `y_absl::any`, designed to be a drop-in replacement
+// be specified, such as with `y_absl::any`, designed to be a drop-in replacement
// for C++17's `std::in_place_index_t`.
template <size_t I>
using in_place_index_t = void (*)(utility_internal::InPlaceIndexTag<I>);
@@ -218,8 +218,8 @@ void in_place_index(utility_internal::InPlaceIndexTag<I>) {}
// A constexpr version of `std::move()`, designed to be a drop-in replacement
// for C++14's `std::move()`.
template <typename T>
-constexpr y_absl::remove_reference_t<T>&& move(T&& t) noexcept {
- return static_cast<y_absl::remove_reference_t<T>&&>(t);
+constexpr y_absl::remove_reference_t<T>&& move(T&& t) noexcept {
+ return static_cast<y_absl::remove_reference_t<T>&&>(t);
}
// forward()
@@ -228,7 +228,7 @@ constexpr y_absl::remove_reference_t<T>&& move(T&& t) noexcept {
// for C++14's `std::forward()`.
template <typename T>
constexpr T&& forward(
- y_absl::remove_reference_t<T>& t) noexcept { // NOLINT(runtime/references)
+ y_absl::remove_reference_t<T>& t) noexcept { // NOLINT(runtime/references)
return static_cast<T&&>(t);
}
@@ -237,11 +237,11 @@ namespace utility_internal {
template <typename Functor, typename Tuple, std::size_t... Indexes>
auto apply_helper(Functor&& functor, Tuple&& t, index_sequence<Indexes...>)
-> decltype(y_absl::base_internal::invoke(
- y_absl::forward<Functor>(functor),
- std::get<Indexes>(y_absl::forward<Tuple>(t))...)) {
+ y_absl::forward<Functor>(functor),
+ std::get<Indexes>(y_absl::forward<Tuple>(t))...)) {
return y_absl::base_internal::invoke(
- y_absl::forward<Functor>(functor),
- std::get<Indexes>(y_absl::forward<Tuple>(t))...);
+ y_absl::forward<Functor>(functor),
+ std::get<Indexes>(y_absl::forward<Tuple>(t))...);
}
} // namespace utility_internal
@@ -252,7 +252,7 @@ auto apply_helper(Functor&& functor, Tuple&& t, index_sequence<Indexes...>)
// Each element of the tuple corresponds to an argument of the call (in order).
// Both the Callable argument and the tuple argument are perfect-forwarded.
// For member-function Callables, the first tuple element acts as the `this`
-// pointer. `y_absl::apply` is designed to be a drop-in replacement for C++17's
+// pointer. `y_absl::apply` is designed to be a drop-in replacement for C++17's
// `std::apply`. Unlike C++17's `std::apply`, this is not currently `constexpr`.
//
// Example:
@@ -261,65 +261,65 @@ auto apply_helper(Functor&& functor, Tuple&& t, index_sequence<Indexes...>)
// public:
// void Bar(int);
// };
-// void user_function1(int, TString);
+// void user_function1(int, TString);
// void user_function2(std::unique_ptr<Foo>);
// auto user_lambda = [](int, int) {};
//
// int main()
// {
-// std::tuple<int, TString> tuple1(42, "bar");
-// // Invokes the first user function on int, TString.
-// y_absl::apply(&user_function1, tuple1);
+// std::tuple<int, TString> tuple1(42, "bar");
+// // Invokes the first user function on int, TString.
+// y_absl::apply(&user_function1, tuple1);
//
-// std::tuple<std::unique_ptr<Foo>> tuple2(y_absl::make_unique<Foo>());
+// std::tuple<std::unique_ptr<Foo>> tuple2(y_absl::make_unique<Foo>());
// // Invokes the user function that takes ownership of the unique
// // pointer.
-// y_absl::apply(&user_function2, std::move(tuple2));
+// y_absl::apply(&user_function2, std::move(tuple2));
//
-// auto foo = y_absl::make_unique<Foo>();
+// auto foo = y_absl::make_unique<Foo>();
// std::tuple<Foo*, int> tuple3(foo.get(), 42);
// // Invokes the method Bar on foo with one argument, 42.
-// y_absl::apply(&Foo::Bar, tuple3);
+// y_absl::apply(&Foo::Bar, tuple3);
//
// std::tuple<int, int> tuple4(8, 9);
// // Invokes a lambda.
-// y_absl::apply(user_lambda, tuple4);
+// y_absl::apply(user_lambda, tuple4);
// }
template <typename Functor, typename Tuple>
auto apply(Functor&& functor, Tuple&& t)
-> decltype(utility_internal::apply_helper(
- y_absl::forward<Functor>(functor), y_absl::forward<Tuple>(t),
- y_absl::make_index_sequence<std::tuple_size<
+ y_absl::forward<Functor>(functor), y_absl::forward<Tuple>(t),
+ y_absl::make_index_sequence<std::tuple_size<
typename std::remove_reference<Tuple>::type>::value>{})) {
return utility_internal::apply_helper(
- y_absl::forward<Functor>(functor), y_absl::forward<Tuple>(t),
- y_absl::make_index_sequence<std::tuple_size<
+ y_absl::forward<Functor>(functor), y_absl::forward<Tuple>(t),
+ y_absl::make_index_sequence<std::tuple_size<
typename std::remove_reference<Tuple>::type>::value>{});
}
// exchange
//
// Replaces the value of `obj` with `new_value` and returns the old value of
-// `obj`. `y_absl::exchange` is designed to be a drop-in replacement for C++14's
+// `obj`. `y_absl::exchange` is designed to be a drop-in replacement for C++14's
// `std::exchange`.
//
// Example:
//
// Foo& operator=(Foo&& other) {
-// ptr1_ = y_absl::exchange(other.ptr1_, nullptr);
-// int1_ = y_absl::exchange(other.int1_, -1);
+// ptr1_ = y_absl::exchange(other.ptr1_, nullptr);
+// int1_ = y_absl::exchange(other.int1_, -1);
// return *this;
// }
template <typename T, typename U = T>
T exchange(T& obj, U&& new_value) {
- T old_value = y_absl::move(obj);
- obj = y_absl::forward<U>(new_value);
+ T old_value = y_absl::move(obj);
+ obj = y_absl::forward<U>(new_value);
return old_value;
}
namespace utility_internal {
template <typename T, typename Tuple, size_t... I>
-T make_from_tuple_impl(Tuple&& tup, y_absl::index_sequence<I...>) {
+T make_from_tuple_impl(Tuple&& tup, y_absl::index_sequence<I...>) {
return T(std::get<I>(std::forward<Tuple>(tup))...);
}
} // namespace utility_internal
@@ -333,18 +333,18 @@ T make_from_tuple_impl(Tuple&& tup, y_absl::index_sequence<I...>) {
// Example:
//
// std::tuple<const char*, size_t> args("hello world", 5);
-// auto s = y_absl::make_from_tuple<TString>(args);
+// auto s = y_absl::make_from_tuple<TString>(args);
// assert(s == "hello");
//
template <typename T, typename Tuple>
constexpr T make_from_tuple(Tuple&& tup) {
return utility_internal::make_from_tuple_impl<T>(
std::forward<Tuple>(tup),
- y_absl::make_index_sequence<
- std::tuple_size<y_absl::decay_t<Tuple>>::value>{});
+ y_absl::make_index_sequence<
+ std::tuple_size<y_absl::decay_t<Tuple>>::value>{});
}
ABSL_NAMESPACE_END
-} // namespace y_absl
+} // namespace y_absl
#endif // ABSL_UTILITY_UTILITY_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/ya.make b/contrib/restricted/abseil-cpp-tstring/ya.make
index 8a9d782dc9..67363a6930 100644
--- a/contrib/restricted/abseil-cpp-tstring/ya.make
+++ b/contrib/restricted/abseil-cpp-tstring/ya.make
@@ -15,60 +15,60 @@ LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
PEERDIR(
contrib/restricted/abseil-cpp-tstring/y_absl/algorithm
- contrib/restricted/abseil-cpp-tstring/y_absl/base
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/low_level_alloc
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/scoped_set_env
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait
+ contrib/restricted/abseil-cpp-tstring/y_absl/base
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/low_level_alloc
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/raw_logging
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/scoped_set_env
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/spinlock_wait
contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/strerror
- contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/throw_delegate
- contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
- contrib/restricted/abseil-cpp-tstring/y_absl/city
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/internal/throw_delegate
+ contrib/restricted/abseil-cpp-tstring/y_absl/base/log_severity
+ contrib/restricted/abseil-cpp-tstring/y_absl/city
contrib/restricted/abseil-cpp-tstring/y_absl/container
- contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/absl_hashtablez_sampler
- contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/raw_hash_set
- contrib/restricted/abseil-cpp-tstring/y_absl/debugging
- contrib/restricted/abseil-cpp-tstring/y_absl/debugging/failure_signal_handler
- contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal
- contrib/restricted/abseil-cpp-tstring/y_absl/debugging/leak_check
- contrib/restricted/abseil-cpp-tstring/y_absl/debugging/leak_check_disable
- contrib/restricted/abseil-cpp-tstring/y_absl/debugging/stacktrace
- contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize
- contrib/restricted/abseil-cpp-tstring/y_absl/demangle
- contrib/restricted/abseil-cpp-tstring/y_absl/flags
+ contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/absl_hashtablez_sampler
+ contrib/restricted/abseil-cpp-tstring/y_absl/container/internal/raw_hash_set
+ contrib/restricted/abseil-cpp-tstring/y_absl/debugging
+ contrib/restricted/abseil-cpp-tstring/y_absl/debugging/failure_signal_handler
+ contrib/restricted/abseil-cpp-tstring/y_absl/debugging/internal
+ contrib/restricted/abseil-cpp-tstring/y_absl/debugging/leak_check
+ contrib/restricted/abseil-cpp-tstring/y_absl/debugging/leak_check_disable
+ contrib/restricted/abseil-cpp-tstring/y_absl/debugging/stacktrace
+ contrib/restricted/abseil-cpp-tstring/y_absl/debugging/symbolize
+ contrib/restricted/abseil-cpp-tstring/y_absl/demangle
+ contrib/restricted/abseil-cpp-tstring/y_absl/flags
contrib/restricted/abseil-cpp-tstring/y_absl/flags/commandlineflag
contrib/restricted/abseil-cpp-tstring/y_absl/flags/internal/commandlineflag
- contrib/restricted/abseil-cpp-tstring/y_absl/flags/internal/flag
+ contrib/restricted/abseil-cpp-tstring/y_absl/flags/internal/flag
contrib/restricted/abseil-cpp-tstring/y_absl/flags/internal/private_handle_accessor
- contrib/restricted/abseil-cpp-tstring/y_absl/flags/internal/program_name
- contrib/restricted/abseil-cpp-tstring/y_absl/flags/internal/usage
- contrib/restricted/abseil-cpp-tstring/y_absl/flags/marshalling
- contrib/restricted/abseil-cpp-tstring/y_absl/flags/parse
+ contrib/restricted/abseil-cpp-tstring/y_absl/flags/internal/program_name
+ contrib/restricted/abseil-cpp-tstring/y_absl/flags/internal/usage
+ contrib/restricted/abseil-cpp-tstring/y_absl/flags/marshalling
+ contrib/restricted/abseil-cpp-tstring/y_absl/flags/parse
contrib/restricted/abseil-cpp-tstring/y_absl/flags/reflection
- contrib/restricted/abseil-cpp-tstring/y_absl/flags/usage
- contrib/restricted/abseil-cpp-tstring/y_absl/flags/usage_config
+ contrib/restricted/abseil-cpp-tstring/y_absl/flags/usage
+ contrib/restricted/abseil-cpp-tstring/y_absl/flags/usage_config
contrib/restricted/abseil-cpp-tstring/y_absl/functional
- contrib/restricted/abseil-cpp-tstring/y_absl/hash
+ contrib/restricted/abseil-cpp-tstring/y_absl/hash
contrib/restricted/abseil-cpp-tstring/y_absl/hash/internal
contrib/restricted/abseil-cpp-tstring/y_absl/memory
contrib/restricted/abseil-cpp-tstring/y_absl/meta
- contrib/restricted/abseil-cpp-tstring/y_absl/numeric
+ contrib/restricted/abseil-cpp-tstring/y_absl/numeric
contrib/restricted/abseil-cpp-tstring/y_absl/profiling/internal/exponential_biased
contrib/restricted/abseil-cpp-tstring/y_absl/profiling/internal/periodic_sampler
- contrib/restricted/abseil-cpp-tstring/y_absl/random/absl_random_distributions
- contrib/restricted/abseil-cpp-tstring/y_absl/random/internal/absl_random_internal_distribution_test_util
- contrib/restricted/abseil-cpp-tstring/y_absl/random/internal/pool_urbg
- contrib/restricted/abseil-cpp-tstring/y_absl/random/internal/randen
- contrib/restricted/abseil-cpp-tstring/y_absl/random/internal/randen_detect
- contrib/restricted/abseil-cpp-tstring/y_absl/random/internal/randen_hwaes
+ contrib/restricted/abseil-cpp-tstring/y_absl/random/absl_random_distributions
+ contrib/restricted/abseil-cpp-tstring/y_absl/random/internal/absl_random_internal_distribution_test_util
+ contrib/restricted/abseil-cpp-tstring/y_absl/random/internal/pool_urbg
+ contrib/restricted/abseil-cpp-tstring/y_absl/random/internal/randen
+ contrib/restricted/abseil-cpp-tstring/y_absl/random/internal/randen_detect
+ contrib/restricted/abseil-cpp-tstring/y_absl/random/internal/randen_hwaes
contrib/restricted/abseil-cpp-tstring/y_absl/random/internal/randen_round_keys
- contrib/restricted/abseil-cpp-tstring/y_absl/random/internal/randen_slow
- contrib/restricted/abseil-cpp-tstring/y_absl/random/internal/seed_material
- contrib/restricted/abseil-cpp-tstring/y_absl/random/seed_gen_exception
- contrib/restricted/abseil-cpp-tstring/y_absl/random/seed_sequences
+ contrib/restricted/abseil-cpp-tstring/y_absl/random/internal/randen_slow
+ contrib/restricted/abseil-cpp-tstring/y_absl/random/internal/seed_material
+ contrib/restricted/abseil-cpp-tstring/y_absl/random/seed_gen_exception
+ contrib/restricted/abseil-cpp-tstring/y_absl/random/seed_sequences
contrib/restricted/abseil-cpp-tstring/y_absl/status
contrib/restricted/abseil-cpp-tstring/y_absl/status/statusor
- contrib/restricted/abseil-cpp-tstring/y_absl/strings
+ contrib/restricted/abseil-cpp-tstring/y_absl/strings
contrib/restricted/abseil-cpp-tstring/y_absl/strings/cord
contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/absl_cord_internal
contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/absl_strings_internal
@@ -76,16 +76,16 @@ PEERDIR(
contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/cordz_handle
contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/cordz_info
contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/cordz_sample_token
- contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format
- contrib/restricted/abseil-cpp-tstring/y_absl/synchronization
- contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal
- contrib/restricted/abseil-cpp-tstring/y_absl/time
- contrib/restricted/abseil-cpp-tstring/y_absl/time/civil_time
- contrib/restricted/abseil-cpp-tstring/y_absl/time/time_zone
+ contrib/restricted/abseil-cpp-tstring/y_absl/strings/internal/str_format
+ contrib/restricted/abseil-cpp-tstring/y_absl/synchronization
+ contrib/restricted/abseil-cpp-tstring/y_absl/synchronization/internal
+ contrib/restricted/abseil-cpp-tstring/y_absl/time
+ contrib/restricted/abseil-cpp-tstring/y_absl/time/civil_time
+ contrib/restricted/abseil-cpp-tstring/y_absl/time/time_zone
contrib/restricted/abseil-cpp-tstring/y_absl/types
- contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_any_cast
- contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_optional_access
- contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_variant_access
+ contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_any_cast
+ contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_optional_access
+ contrib/restricted/abseil-cpp-tstring/y_absl/types/bad_variant_access
contrib/restricted/abseil-cpp-tstring/y_absl/types/internal
contrib/restricted/abseil-cpp-tstring/y_absl/utility
)
@@ -96,60 +96,60 @@ END()
RECURSE(
y_absl/algorithm
- y_absl/base
- y_absl/base/internal/low_level_alloc
- y_absl/base/internal/raw_logging
- y_absl/base/internal/scoped_set_env
- y_absl/base/internal/spinlock_wait
+ y_absl/base
+ y_absl/base/internal/low_level_alloc
+ y_absl/base/internal/raw_logging
+ y_absl/base/internal/scoped_set_env
+ y_absl/base/internal/spinlock_wait
y_absl/base/internal/strerror
- y_absl/base/internal/throw_delegate
- y_absl/base/log_severity
- y_absl/city
+ y_absl/base/internal/throw_delegate
+ y_absl/base/log_severity
+ y_absl/city
y_absl/container
- y_absl/container/internal/absl_hashtablez_sampler
- y_absl/container/internal/raw_hash_set
- y_absl/debugging
- y_absl/debugging/failure_signal_handler
- y_absl/debugging/internal
- y_absl/debugging/leak_check
- y_absl/debugging/leak_check_disable
- y_absl/debugging/stacktrace
- y_absl/debugging/symbolize
- y_absl/demangle
- y_absl/flags
+ y_absl/container/internal/absl_hashtablez_sampler
+ y_absl/container/internal/raw_hash_set
+ y_absl/debugging
+ y_absl/debugging/failure_signal_handler
+ y_absl/debugging/internal
+ y_absl/debugging/leak_check
+ y_absl/debugging/leak_check_disable
+ y_absl/debugging/stacktrace
+ y_absl/debugging/symbolize
+ y_absl/demangle
+ y_absl/flags
y_absl/flags/commandlineflag
y_absl/flags/internal/commandlineflag
- y_absl/flags/internal/flag
+ y_absl/flags/internal/flag
y_absl/flags/internal/private_handle_accessor
- y_absl/flags/internal/program_name
- y_absl/flags/internal/usage
- y_absl/flags/marshalling
- y_absl/flags/parse
+ y_absl/flags/internal/program_name
+ y_absl/flags/internal/usage
+ y_absl/flags/marshalling
+ y_absl/flags/parse
y_absl/flags/reflection
- y_absl/flags/usage
- y_absl/flags/usage_config
+ y_absl/flags/usage
+ y_absl/flags/usage_config
y_absl/functional
- y_absl/hash
+ y_absl/hash
y_absl/hash/internal
y_absl/memory
y_absl/meta
- y_absl/numeric
+ y_absl/numeric
y_absl/profiling/internal/exponential_biased
y_absl/profiling/internal/periodic_sampler
- y_absl/random/absl_random_distributions
- y_absl/random/internal/absl_random_internal_distribution_test_util
- y_absl/random/internal/pool_urbg
- y_absl/random/internal/randen
- y_absl/random/internal/randen_detect
- y_absl/random/internal/randen_hwaes
+ y_absl/random/absl_random_distributions
+ y_absl/random/internal/absl_random_internal_distribution_test_util
+ y_absl/random/internal/pool_urbg
+ y_absl/random/internal/randen
+ y_absl/random/internal/randen_detect
+ y_absl/random/internal/randen_hwaes
y_absl/random/internal/randen_round_keys
- y_absl/random/internal/randen_slow
- y_absl/random/internal/seed_material
- y_absl/random/seed_gen_exception
- y_absl/random/seed_sequences
+ y_absl/random/internal/randen_slow
+ y_absl/random/internal/seed_material
+ y_absl/random/seed_gen_exception
+ y_absl/random/seed_sequences
y_absl/status
y_absl/status/statusor
- y_absl/strings
+ y_absl/strings
y_absl/strings/cord
y_absl/strings/internal/absl_cord_internal
y_absl/strings/internal/absl_strings_internal
@@ -157,16 +157,16 @@ RECURSE(
y_absl/strings/internal/cordz_handle
y_absl/strings/internal/cordz_info
y_absl/strings/internal/cordz_sample_token
- y_absl/strings/internal/str_format
- y_absl/synchronization
- y_absl/synchronization/internal
- y_absl/time
- y_absl/time/civil_time
- y_absl/time/time_zone
+ y_absl/strings/internal/str_format
+ y_absl/synchronization
+ y_absl/synchronization/internal
+ y_absl/time
+ y_absl/time/civil_time
+ y_absl/time/time_zone
y_absl/types
- y_absl/types/bad_any_cast
- y_absl/types/bad_optional_access
- y_absl/types/bad_variant_access
+ y_absl/types/bad_any_cast
+ y_absl/types/bad_optional_access
+ y_absl/types/bad_variant_access
y_absl/types/internal
y_absl/utility
)
diff --git a/contrib/restricted/abseil-cpp/.yandex_meta/devtools.licenses.report b/contrib/restricted/abseil-cpp/.yandex_meta/devtools.licenses.report
index 83379075ba..e81554edb2 100644
--- a/contrib/restricted/abseil-cpp/.yandex_meta/devtools.licenses.report
+++ b/contrib/restricted/abseil-cpp/.yandex_meta/devtools.licenses.report
@@ -502,7 +502,7 @@ BELONGS absl/algorithm/ya.make absl/base/ya.make absl/container/ya.make absl/deb
absl/types/variant.h [3:13]
absl/utility/utility.h [3:13]
-SKIP LicenseRef-scancode-warranty-disclaimer 5ba761db85e57267704f71a6bcf20c2a
+SKIP LicenseRef-scancode-warranty-disclaimer 5ba761db85e57267704f71a6bcf20c2a
BELONGS absl/container/ya.make ya.make
License text:
// This utility is internal-only. Use at your own risk.
@@ -515,7 +515,7 @@ BELONGS absl/container/ya.make ya.make
absl/container/internal/hashtablez_sampler.h [37:37]
absl/profiling/internal/sample_recorder.h [22:22]
-SKIP LicenseRef-scancode-generic-cla 5d780ffa423067f23c6a123ae33e7c18
+SKIP LicenseRef-scancode-generic-cla 5d780ffa423067f23c6a123ae33e7c18
BELONGS ya.make
License text:
\## Contributor License Agreement
@@ -527,7 +527,7 @@ BELONGS ya.make
Files with this license:
CONTRIBUTING.md [9:9]
-SKIP LicenseRef-scancode-unknown-license-reference 8e1ade755f3bfad0a6736f291073f1ac
+SKIP LicenseRef-scancode-unknown-license-reference 8e1ade755f3bfad0a6736f291073f1ac
BELONGS ya.make
License text:
license. See [LICENSE](LICENSE) for more information.
@@ -539,7 +539,7 @@ BELONGS ya.make
Files with this license:
README.md [131:131]
-SKIP LicenseRef-scancode-generic-exception 99cf00730bf3973359b67cfa5b7ac051
+SKIP LicenseRef-scancode-generic-exception 99cf00730bf3973359b67cfa5b7ac051
BELONGS absl/synchronization/ya.make
License text:
// logging; as a special exception, the function may acquire other mutexes
@@ -575,7 +575,7 @@ BELONGS absl/debugging/internal/ya.make absl/synchronization/internal/ya.make
absl/debugging/internal/stacktrace_config.h [4:14]
absl/synchronization/internal/create_thread_identity.h [4:14]
-SKIP LicenseRef-scancode-generic-cla d72fcd21b18e44b666a94e6225ed43eb
+SKIP LicenseRef-scancode-generic-cla d72fcd21b18e44b666a94e6225ed43eb
BELONGS ya.make
License text:
Contributions to this project must be accompanied by a Contributor License
diff --git a/contrib/restricted/abseil-cpp/.yandex_meta/licenses.list.txt b/contrib/restricted/abseil-cpp/.yandex_meta/licenses.list.txt
index 780e506b65..c89f4aa6f3 100644
--- a/contrib/restricted/abseil-cpp/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/abseil-cpp/.yandex_meta/licenses.list.txt
@@ -1,257 +1,257 @@
-====================Apache-2.0====================
- Apache License
- Version 2.0, January 2004
- https://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- https://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
-
-====================Apache-2.0====================
-## License
-
-The Abseil C++ library is licensed under the terms of the Apache
-license. See [LICENSE](LICENSE) for more information.
-
-
-====================Apache-2.0====================
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-====================Apache-2.0====================
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-====================COPYRIGHT====================
-// Copyright 2017 Google Inc. All Rights Reserved.
-
-
-====================COPYRIGHT====================
-// Copyright 2017 The Abseil Authors.
-
-
-====================COPYRIGHT====================
-// Copyright 2018 The Abseil Authors.
-
-
-====================COPYRIGHT====================
-// Copyright 2019 The Abseil Authors.
-
-
-====================COPYRIGHT====================
-// Copyright 2021 The Abseil Authors.
+====================Apache-2.0====================
+ Apache License
+ Version 2.0, January 2004
+ https://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+
+====================Apache-2.0====================
+## License
+
+The Abseil C++ library is licensed under the terms of the Apache
+license. See [LICENSE](LICENSE) for more information.
+
+
+====================Apache-2.0====================
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+====================Apache-2.0====================
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+====================COPYRIGHT====================
+// Copyright 2017 Google Inc. All Rights Reserved.
+
+
+====================COPYRIGHT====================
+// Copyright 2017 The Abseil Authors.
+
+
+====================COPYRIGHT====================
+// Copyright 2018 The Abseil Authors.
+
+
+====================COPYRIGHT====================
+// Copyright 2019 The Abseil Authors.
+
+
+====================COPYRIGHT====================
+// Copyright 2021 The Abseil Authors.
diff --git a/contrib/restricted/abseil-cpp/absl/algorithm/.yandex_meta/licenses.list.txt b/contrib/restricted/abseil-cpp/absl/algorithm/.yandex_meta/licenses.list.txt
index 4335862815..7be6b42848 100644
--- a/contrib/restricted/abseil-cpp/absl/algorithm/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/abseil-cpp/absl/algorithm/.yandex_meta/licenses.list.txt
@@ -1,16 +1,16 @@
-====================Apache-2.0====================
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-====================COPYRIGHT====================
-// Copyright 2017 The Abseil Authors.
+====================Apache-2.0====================
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+====================COPYRIGHT====================
+// Copyright 2017 The Abseil Authors.
diff --git a/contrib/restricted/abseil-cpp/absl/algorithm/ya.make b/contrib/restricted/abseil-cpp/absl/algorithm/ya.make
index a84593e2f0..49b33a9a65 100644
--- a/contrib/restricted/abseil-cpp/absl/algorithm/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/algorithm/ya.make
@@ -6,6 +6,6 @@ OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
END()
diff --git a/contrib/restricted/abseil-cpp/absl/base/.yandex_meta/licenses.list.txt b/contrib/restricted/abseil-cpp/absl/base/.yandex_meta/licenses.list.txt
index 3f1c23aae1..9035904094 100644
--- a/contrib/restricted/abseil-cpp/absl/base/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/abseil-cpp/absl/base/.yandex_meta/licenses.list.txt
@@ -1,28 +1,28 @@
-====================Apache-2.0====================
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-====================COPYRIGHT====================
-// Copyright 2017 The Abseil Authors.
-
-
-====================COPYRIGHT====================
-// Copyright 2018 The Abseil Authors.
-
-
-====================COPYRIGHT====================
+====================Apache-2.0====================
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+====================COPYRIGHT====================
+// Copyright 2017 The Abseil Authors.
+
+
+====================COPYRIGHT====================
+// Copyright 2018 The Abseil Authors.
+
+
+====================COPYRIGHT====================
// Copyright 2019 The Abseil Authors.
-
-
-====================COPYRIGHT====================
+
+
+====================COPYRIGHT====================
// Copyright 2020 The Abseil Authors.
diff --git a/contrib/restricted/abseil-cpp/absl/base/internal/low_level_alloc/ya.make b/contrib/restricted/abseil-cpp/absl/base/internal/low_level_alloc/ya.make
index 8fa8b2c012..df53191043 100644
--- a/contrib/restricted/abseil-cpp/absl/base/internal/low_level_alloc/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/base/internal/low_level_alloc/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/base/internal/raw_logging/ya.make b/contrib/restricted/abseil-cpp/absl/base/internal/raw_logging/ya.make
index ff6be504cc..7d51c953ee 100644
--- a/contrib/restricted/abseil-cpp/absl/base/internal/raw_logging/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/base/internal/raw_logging/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/base/internal/scoped_set_env/ya.make b/contrib/restricted/abseil-cpp/absl/base/internal/scoped_set_env/ya.make
index d583ae2373..d858ec9351 100644
--- a/contrib/restricted/abseil-cpp/absl/base/internal/scoped_set_env/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/base/internal/scoped_set_env/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/base/internal/spinlock_wait/ya.make b/contrib/restricted/abseil-cpp/absl/base/internal/spinlock_wait/ya.make
index 3753878f99..8eae89d717 100644
--- a/contrib/restricted/abseil-cpp/absl/base/internal/spinlock_wait/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/base/internal/spinlock_wait/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/base/internal/strerror/ya.make b/contrib/restricted/abseil-cpp/absl/base/internal/strerror/ya.make
index a2cb3783f9..deedba52eb 100644
--- a/contrib/restricted/abseil-cpp/absl/base/internal/strerror/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/base/internal/strerror/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/base/internal/throw_delegate/ya.make b/contrib/restricted/abseil-cpp/absl/base/internal/throw_delegate/ya.make
index 05b0213308..3df680adf0 100644
--- a/contrib/restricted/abseil-cpp/absl/base/internal/throw_delegate/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/base/internal/throw_delegate/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/base/log_severity/ya.make b/contrib/restricted/abseil-cpp/absl/base/log_severity/ya.make
index d7e5cf72da..f249279d8e 100644
--- a/contrib/restricted/abseil-cpp/absl/base/log_severity/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/base/log_severity/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/base/ya.make b/contrib/restricted/abseil-cpp/absl/base/ya.make
index 9595286ce1..dadb4a5c81 100644
--- a/contrib/restricted/abseil-cpp/absl/base/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/base/ya.make
@@ -6,8 +6,8 @@ OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
PEERDIR(
contrib/restricted/abseil-cpp/absl/base/internal/raw_logging
contrib/restricted/abseil-cpp/absl/base/internal/spinlock_wait
diff --git a/contrib/restricted/abseil-cpp/absl/city/ya.make b/contrib/restricted/abseil-cpp/absl/city/ya.make
index 0994ab8c54..dffd2d3a70 100644
--- a/contrib/restricted/abseil-cpp/absl/city/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/city/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/container/.yandex_meta/licenses.list.txt b/contrib/restricted/abseil-cpp/absl/container/.yandex_meta/licenses.list.txt
index 27eb40bafa..f39e683596 100644
--- a/contrib/restricted/abseil-cpp/absl/container/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/abseil-cpp/absl/container/.yandex_meta/licenses.list.txt
@@ -1,24 +1,24 @@
-====================Apache-2.0====================
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-====================COPYRIGHT====================
-// Copyright 2017 The Abseil Authors.
-
-
-====================COPYRIGHT====================
-// Copyright 2018 The Abseil Authors.
-
-
-====================COPYRIGHT====================
-// Copyright 2019 The Abseil Authors.
+====================Apache-2.0====================
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+====================COPYRIGHT====================
+// Copyright 2017 The Abseil Authors.
+
+
+====================COPYRIGHT====================
+// Copyright 2018 The Abseil Authors.
+
+
+====================COPYRIGHT====================
+// Copyright 2019 The Abseil Authors.
diff --git a/contrib/restricted/abseil-cpp/absl/container/internal/absl_hashtablez_sampler/ya.make b/contrib/restricted/abseil-cpp/absl/container/internal/absl_hashtablez_sampler/ya.make
index 2b5d622857..1933289a6d 100644
--- a/contrib/restricted/abseil-cpp/absl/container/internal/absl_hashtablez_sampler/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/container/internal/absl_hashtablez_sampler/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/container/internal/raw_hash_set/ya.make b/contrib/restricted/abseil-cpp/absl/container/internal/raw_hash_set/ya.make
index 1967c59fef..3fe7e7b5c0 100644
--- a/contrib/restricted/abseil-cpp/absl/container/internal/raw_hash_set/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/container/internal/raw_hash_set/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/container/ya.make b/contrib/restricted/abseil-cpp/absl/container/ya.make
index a84593e2f0..49b33a9a65 100644
--- a/contrib/restricted/abseil-cpp/absl/container/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/container/ya.make
@@ -6,6 +6,6 @@ OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
END()
diff --git a/contrib/restricted/abseil-cpp/absl/debugging/.yandex_meta/licenses.list.txt b/contrib/restricted/abseil-cpp/absl/debugging/.yandex_meta/licenses.list.txt
index ca4f3ce315..030c5b94cf 100644
--- a/contrib/restricted/abseil-cpp/absl/debugging/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/abseil-cpp/absl/debugging/.yandex_meta/licenses.list.txt
@@ -1,24 +1,24 @@
-====================Apache-2.0====================
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-====================COPYRIGHT====================
-// Copyright 2017 The Abseil Authors.
-
-
-====================COPYRIGHT====================
-// Copyright 2018 The Abseil Authors.
-
-
-====================COPYRIGHT====================
-// Copyright 2020 The Abseil Authors.
+====================Apache-2.0====================
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+====================COPYRIGHT====================
+// Copyright 2017 The Abseil Authors.
+
+
+====================COPYRIGHT====================
+// Copyright 2018 The Abseil Authors.
+
+
+====================COPYRIGHT====================
+// Copyright 2020 The Abseil Authors.
diff --git a/contrib/restricted/abseil-cpp/absl/debugging/failure_signal_handler/ya.make b/contrib/restricted/abseil-cpp/absl/debugging/failure_signal_handler/ya.make
index c79f59a786..62217bae8f 100644
--- a/contrib/restricted/abseil-cpp/absl/debugging/failure_signal_handler/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/debugging/failure_signal_handler/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/debugging/internal/.yandex_meta/licenses.list.txt b/contrib/restricted/abseil-cpp/absl/debugging/internal/.yandex_meta/licenses.list.txt
index 45dccf6b8e..aac6c71d05 100644
--- a/contrib/restricted/abseil-cpp/absl/debugging/internal/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/abseil-cpp/absl/debugging/internal/.yandex_meta/licenses.list.txt
@@ -1,4 +1,4 @@
-====================Apache-2.0====================
+====================Apache-2.0====================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
@@ -13,40 +13,40 @@
====================Apache-2.0====================
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-====================Apache-2.0====================
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-====================COPYRIGHT====================
-// Copyright 2017 The Abseil Authors.
-
-
-====================COPYRIGHT====================
-// Copyright 2018 The Abseil Authors.
-
-
-====================COPYRIGHT====================
-// Copyright 2021 The Abseil Authors.
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+====================Apache-2.0====================
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+====================COPYRIGHT====================
+// Copyright 2017 The Abseil Authors.
+
+
+====================COPYRIGHT====================
+// Copyright 2018 The Abseil Authors.
+
+
+====================COPYRIGHT====================
+// Copyright 2021 The Abseil Authors.
diff --git a/contrib/restricted/abseil-cpp/absl/debugging/leak_check/ya.make b/contrib/restricted/abseil-cpp/absl/debugging/leak_check/ya.make
index d05f39aaf9..7039d87469 100644
--- a/contrib/restricted/abseil-cpp/absl/debugging/leak_check/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/debugging/leak_check/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/debugging/leak_check_disable/ya.make b/contrib/restricted/abseil-cpp/absl/debugging/leak_check_disable/ya.make
index 1ecd0744a7..49da98034e 100644
--- a/contrib/restricted/abseil-cpp/absl/debugging/leak_check_disable/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/debugging/leak_check_disable/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/debugging/stacktrace/ya.make b/contrib/restricted/abseil-cpp/absl/debugging/stacktrace/ya.make
index e1433312cc..b9028022d8 100644
--- a/contrib/restricted/abseil-cpp/absl/debugging/stacktrace/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/debugging/stacktrace/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/debugging/symbolize/ya.make b/contrib/restricted/abseil-cpp/absl/debugging/symbolize/ya.make
index 60e56382a2..5c25223100 100644
--- a/contrib/restricted/abseil-cpp/absl/debugging/symbolize/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/debugging/symbolize/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/debugging/ya.make b/contrib/restricted/abseil-cpp/absl/debugging/ya.make
index e563d3a5cc..6233f05c45 100644
--- a/contrib/restricted/abseil-cpp/absl/debugging/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/debugging/ya.make
@@ -6,8 +6,8 @@ OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
PEERDIR(
contrib/restricted/abseil-cpp/absl/base/internal/raw_logging
contrib/restricted/abseil-cpp/absl/base/log_severity
diff --git a/contrib/restricted/abseil-cpp/absl/demangle/ya.make b/contrib/restricted/abseil-cpp/absl/demangle/ya.make
index 98c58c05b7..c0d04ae949 100644
--- a/contrib/restricted/abseil-cpp/absl/demangle/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/demangle/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/flags/.yandex_meta/licenses.list.txt b/contrib/restricted/abseil-cpp/absl/flags/.yandex_meta/licenses.list.txt
index aea4cf0505..690ae5993e 100644
--- a/contrib/restricted/abseil-cpp/absl/flags/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/abseil-cpp/absl/flags/.yandex_meta/licenses.list.txt
@@ -1,23 +1,23 @@
-====================Apache-2.0====================
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-====================COPYRIGHT====================
-// Copyright 2019 The Abseil Authors.
-
-
-====================COPYRIGHT====================
-// Copyright 2020 The Abseil Authors.
+====================Apache-2.0====================
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+====================COPYRIGHT====================
+// Copyright 2019 The Abseil Authors.
+
+
+====================COPYRIGHT====================
+// Copyright 2020 The Abseil Authors.
====================COPYRIGHT====================
diff --git a/contrib/restricted/abseil-cpp/absl/flags/commandlineflag/ya.make b/contrib/restricted/abseil-cpp/absl/flags/commandlineflag/ya.make
index fc22bfe1c9..4eef7c0237 100644
--- a/contrib/restricted/abseil-cpp/absl/flags/commandlineflag/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/flags/commandlineflag/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/flags/internal/commandlineflag/ya.make b/contrib/restricted/abseil-cpp/absl/flags/internal/commandlineflag/ya.make
index f38a08bc11..e5a0389d4d 100644
--- a/contrib/restricted/abseil-cpp/absl/flags/internal/commandlineflag/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/flags/internal/commandlineflag/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/flags/internal/flag/ya.make b/contrib/restricted/abseil-cpp/absl/flags/internal/flag/ya.make
index 8c10886c57..76f47ce655 100644
--- a/contrib/restricted/abseil-cpp/absl/flags/internal/flag/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/flags/internal/flag/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/flags/internal/program_name/ya.make b/contrib/restricted/abseil-cpp/absl/flags/internal/program_name/ya.make
index f75561b0fe..701fef73c0 100644
--- a/contrib/restricted/abseil-cpp/absl/flags/internal/program_name/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/flags/internal/program_name/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/flags/internal/usage/ya.make b/contrib/restricted/abseil-cpp/absl/flags/internal/usage/ya.make
index a82ee79384..358744df59 100644
--- a/contrib/restricted/abseil-cpp/absl/flags/internal/usage/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/flags/internal/usage/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/flags/marshalling/ya.make b/contrib/restricted/abseil-cpp/absl/flags/marshalling/ya.make
index fc86cded3f..1b02b87173 100644
--- a/contrib/restricted/abseil-cpp/absl/flags/marshalling/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/flags/marshalling/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/flags/parse/ya.make b/contrib/restricted/abseil-cpp/absl/flags/parse/ya.make
index 1158988c59..267b3e4a97 100644
--- a/contrib/restricted/abseil-cpp/absl/flags/parse/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/flags/parse/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/flags/reflection/ya.make b/contrib/restricted/abseil-cpp/absl/flags/reflection/ya.make
index 34e3d896cb..f75bc1c67d 100644
--- a/contrib/restricted/abseil-cpp/absl/flags/reflection/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/flags/reflection/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/flags/usage/ya.make b/contrib/restricted/abseil-cpp/absl/flags/usage/ya.make
index 92f1c17cfe..f6b243c84c 100644
--- a/contrib/restricted/abseil-cpp/absl/flags/usage/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/flags/usage/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/functional/.yandex_meta/licenses.list.txt b/contrib/restricted/abseil-cpp/absl/functional/.yandex_meta/licenses.list.txt
index 43c757a619..7b6169efac 100644
--- a/contrib/restricted/abseil-cpp/absl/functional/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/abseil-cpp/absl/functional/.yandex_meta/licenses.list.txt
@@ -1,20 +1,20 @@
-====================Apache-2.0====================
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-====================COPYRIGHT====================
-// Copyright 2018 The Abseil Authors.
-
-
-====================COPYRIGHT====================
-// Copyright 2019 The Abseil Authors.
+====================Apache-2.0====================
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+====================COPYRIGHT====================
+// Copyright 2018 The Abseil Authors.
+
+
+====================COPYRIGHT====================
+// Copyright 2019 The Abseil Authors.
diff --git a/contrib/restricted/abseil-cpp/absl/functional/ya.make b/contrib/restricted/abseil-cpp/absl/functional/ya.make
index a84593e2f0..49b33a9a65 100644
--- a/contrib/restricted/abseil-cpp/absl/functional/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/functional/ya.make
@@ -6,6 +6,6 @@ OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
END()
diff --git a/contrib/restricted/abseil-cpp/absl/hash/.yandex_meta/licenses.list.txt b/contrib/restricted/abseil-cpp/absl/hash/.yandex_meta/licenses.list.txt
index c5a2f873ac..6e98312194 100644
--- a/contrib/restricted/abseil-cpp/absl/hash/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/abseil-cpp/absl/hash/.yandex_meta/licenses.list.txt
@@ -1,16 +1,16 @@
-====================Apache-2.0====================
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-====================COPYRIGHT====================
-// Copyright 2018 The Abseil Authors.
+====================Apache-2.0====================
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+====================COPYRIGHT====================
+// Copyright 2018 The Abseil Authors.
diff --git a/contrib/restricted/abseil-cpp/absl/hash/internal/.yandex_meta/licenses.list.txt b/contrib/restricted/abseil-cpp/absl/hash/internal/.yandex_meta/licenses.list.txt
index 757688c969..bbc98ff778 100644
--- a/contrib/restricted/abseil-cpp/absl/hash/internal/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/abseil-cpp/absl/hash/internal/.yandex_meta/licenses.list.txt
@@ -1,34 +1,34 @@
-====================Apache-2.0====================
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-====================Apache-2.0====================
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-====================COPYRIGHT====================
-// Copyright 2018 The Abseil Authors.
-
-
-====================COPYRIGHT====================
-// Copyright 2020 The Abseil Authors.
+====================Apache-2.0====================
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+====================Apache-2.0====================
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+====================COPYRIGHT====================
+// Copyright 2018 The Abseil Authors.
+
+
+====================COPYRIGHT====================
+// Copyright 2020 The Abseil Authors.
diff --git a/contrib/restricted/abseil-cpp/absl/memory/.yandex_meta/licenses.list.txt b/contrib/restricted/abseil-cpp/absl/memory/.yandex_meta/licenses.list.txt
index 4335862815..7be6b42848 100644
--- a/contrib/restricted/abseil-cpp/absl/memory/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/abseil-cpp/absl/memory/.yandex_meta/licenses.list.txt
@@ -1,16 +1,16 @@
-====================Apache-2.0====================
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-====================COPYRIGHT====================
-// Copyright 2017 The Abseil Authors.
+====================Apache-2.0====================
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+====================COPYRIGHT====================
+// Copyright 2017 The Abseil Authors.
diff --git a/contrib/restricted/abseil-cpp/absl/memory/ya.make b/contrib/restricted/abseil-cpp/absl/memory/ya.make
index 618d7dfec6..fff0c2665f 100644
--- a/contrib/restricted/abseil-cpp/absl/memory/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/memory/ya.make
@@ -6,8 +6,8 @@ OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
PEERDIR(
contrib/restricted/abseil-cpp/absl/meta
)
diff --git a/contrib/restricted/abseil-cpp/absl/meta/.yandex_meta/licenses.list.txt b/contrib/restricted/abseil-cpp/absl/meta/.yandex_meta/licenses.list.txt
index 4335862815..7be6b42848 100644
--- a/contrib/restricted/abseil-cpp/absl/meta/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/abseil-cpp/absl/meta/.yandex_meta/licenses.list.txt
@@ -1,16 +1,16 @@
-====================Apache-2.0====================
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-====================COPYRIGHT====================
-// Copyright 2017 The Abseil Authors.
+====================Apache-2.0====================
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+====================COPYRIGHT====================
+// Copyright 2017 The Abseil Authors.
diff --git a/contrib/restricted/abseil-cpp/absl/meta/ya.make b/contrib/restricted/abseil-cpp/absl/meta/ya.make
index 94195788bf..28e1e1f4a1 100644
--- a/contrib/restricted/abseil-cpp/absl/meta/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/meta/ya.make
@@ -6,8 +6,8 @@ OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
PEERDIR(
contrib/restricted/abseil-cpp/absl/base
)
diff --git a/contrib/restricted/abseil-cpp/absl/numeric/.yandex_meta/licenses.list.txt b/contrib/restricted/abseil-cpp/absl/numeric/.yandex_meta/licenses.list.txt
index c0fb99bcfc..3d70f7ab0e 100644
--- a/contrib/restricted/abseil-cpp/absl/numeric/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/abseil-cpp/absl/numeric/.yandex_meta/licenses.list.txt
@@ -1,38 +1,38 @@
-====================Apache-2.0====================
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-====================Apache-2.0====================
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-====================COPYRIGHT====================
-// Copyright 2017 The Abseil Authors.
-
-
-====================COPYRIGHT====================
-// Copyright 2020 The Abseil Authors.
-
-
-====================COPYRIGHT====================
-// Copyright 2021 The Abseil Authors.
+====================Apache-2.0====================
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+====================Apache-2.0====================
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+====================COPYRIGHT====================
+// Copyright 2017 The Abseil Authors.
+
+
+====================COPYRIGHT====================
+// Copyright 2020 The Abseil Authors.
+
+
+====================COPYRIGHT====================
+// Copyright 2021 The Abseil Authors.
diff --git a/contrib/restricted/abseil-cpp/absl/numeric/ya.make b/contrib/restricted/abseil-cpp/absl/numeric/ya.make
index 7485b6850b..b82fbcf1cd 100644
--- a/contrib/restricted/abseil-cpp/absl/numeric/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/numeric/ya.make
@@ -6,8 +6,8 @@ OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
ADDINCL(
GLOBAL contrib/restricted/abseil-cpp
)
diff --git a/contrib/restricted/abseil-cpp/absl/profiling/internal/exponential_biased/ya.make b/contrib/restricted/abseil-cpp/absl/profiling/internal/exponential_biased/ya.make
index b391306b7c..14f60647fc 100644
--- a/contrib/restricted/abseil-cpp/absl/profiling/internal/exponential_biased/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/profiling/internal/exponential_biased/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/profiling/internal/periodic_sampler/ya.make b/contrib/restricted/abseil-cpp/absl/profiling/internal/periodic_sampler/ya.make
index a0d1beed60..841a35bc53 100644
--- a/contrib/restricted/abseil-cpp/absl/profiling/internal/periodic_sampler/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/profiling/internal/periodic_sampler/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/random/internal/absl_random_internal_distribution_test_util/ya.make b/contrib/restricted/abseil-cpp/absl/random/internal/absl_random_internal_distribution_test_util/ya.make
index 487567feaf..340d08c827 100644
--- a/contrib/restricted/abseil-cpp/absl/random/internal/absl_random_internal_distribution_test_util/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/random/internal/absl_random_internal_distribution_test_util/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/random/internal/pool_urbg/ya.make b/contrib/restricted/abseil-cpp/absl/random/internal/pool_urbg/ya.make
index 677083503d..fd4e1c1f4d 100644
--- a/contrib/restricted/abseil-cpp/absl/random/internal/pool_urbg/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/random/internal/pool_urbg/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/random/internal/randen/ya.make b/contrib/restricted/abseil-cpp/absl/random/internal/randen/ya.make
index 03665aa314..150b9e0714 100644
--- a/contrib/restricted/abseil-cpp/absl/random/internal/randen/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/random/internal/randen/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/random/internal/randen_detect/ya.make b/contrib/restricted/abseil-cpp/absl/random/internal/randen_detect/ya.make
index 9ffe2476de..62059877ba 100644
--- a/contrib/restricted/abseil-cpp/absl/random/internal/randen_detect/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/random/internal/randen_detect/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/random/internal/randen_hwaes/ya.make b/contrib/restricted/abseil-cpp/absl/random/internal/randen_hwaes/ya.make
index 612652af15..267ce26c5f 100644
--- a/contrib/restricted/abseil-cpp/absl/random/internal/randen_hwaes/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/random/internal/randen_hwaes/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/random/internal/randen_round_keys/ya.make b/contrib/restricted/abseil-cpp/absl/random/internal/randen_round_keys/ya.make
index 8a821d75c4..36eb10009e 100644
--- a/contrib/restricted/abseil-cpp/absl/random/internal/randen_round_keys/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/random/internal/randen_round_keys/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/random/internal/randen_slow/ya.make b/contrib/restricted/abseil-cpp/absl/random/internal/randen_slow/ya.make
index 0aeaf3fd93..af124ae798 100644
--- a/contrib/restricted/abseil-cpp/absl/random/internal/randen_slow/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/random/internal/randen_slow/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/random/seed_gen_exception/ya.make b/contrib/restricted/abseil-cpp/absl/random/seed_gen_exception/ya.make
index af49dae581..6d9b4a7b19 100644
--- a/contrib/restricted/abseil-cpp/absl/random/seed_gen_exception/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/random/seed_gen_exception/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/random/seed_sequences/ya.make b/contrib/restricted/abseil-cpp/absl/random/seed_sequences/ya.make
index 9a3dd1fd4f..49cb3ff19c 100644
--- a/contrib/restricted/abseil-cpp/absl/random/seed_sequences/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/random/seed_sequences/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/status/.yandex_meta/licenses.list.txt b/contrib/restricted/abseil-cpp/absl/status/.yandex_meta/licenses.list.txt
index 6d25aef463..1c58023e4b 100644
--- a/contrib/restricted/abseil-cpp/absl/status/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/abseil-cpp/absl/status/.yandex_meta/licenses.list.txt
@@ -1,20 +1,20 @@
-====================Apache-2.0====================
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-====================COPYRIGHT====================
-// Copyright 2019 The Abseil Authors.
-
-
-====================COPYRIGHT====================
-// Copyright 2020 The Abseil Authors.
+====================Apache-2.0====================
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+====================COPYRIGHT====================
+// Copyright 2019 The Abseil Authors.
+
+
+====================COPYRIGHT====================
+// Copyright 2020 The Abseil Authors.
diff --git a/contrib/restricted/abseil-cpp/absl/status/statusor/ya.make b/contrib/restricted/abseil-cpp/absl/status/statusor/ya.make
index cb1b54c3d9..9628fcdffb 100644
--- a/contrib/restricted/abseil-cpp/absl/status/statusor/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/status/statusor/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/status/ya.make b/contrib/restricted/abseil-cpp/absl/status/ya.make
index 0eed71eeb3..54a88b1ab1 100644
--- a/contrib/restricted/abseil-cpp/absl/status/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/status/ya.make
@@ -6,8 +6,8 @@ OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
PEERDIR(
contrib/restricted/abseil-cpp/absl/base
contrib/restricted/abseil-cpp/absl/base/internal/low_level_alloc
diff --git a/contrib/restricted/abseil-cpp/absl/strings/.yandex_meta/licenses.list.txt b/contrib/restricted/abseil-cpp/absl/strings/.yandex_meta/licenses.list.txt
index bd499f8070..9d8552c68c 100644
--- a/contrib/restricted/abseil-cpp/absl/strings/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/abseil-cpp/absl/strings/.yandex_meta/licenses.list.txt
@@ -1,46 +1,46 @@
-====================Apache-2.0====================
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-====================Apache-2.0====================
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-====================COPYRIGHT====================
-// Copyright 2017 The Abseil Authors.
-
-
-====================COPYRIGHT====================
-// Copyright 2018 The Abseil Authors.
-
-
-====================COPYRIGHT====================
+====================Apache-2.0====================
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+====================Apache-2.0====================
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+====================COPYRIGHT====================
+// Copyright 2017 The Abseil Authors.
+
+
+====================COPYRIGHT====================
+// Copyright 2018 The Abseil Authors.
+
+
+====================COPYRIGHT====================
// Copyright 2019 The Abseil Authors.
====================COPYRIGHT====================
-// Copyright 2020 The Abseil Authors.
-
-
-====================COPYRIGHT====================
-// Copyright 2021 The Abseil Authors.
+// Copyright 2020 The Abseil Authors.
+
+
+====================COPYRIGHT====================
+// Copyright 2021 The Abseil Authors.
diff --git a/contrib/restricted/abseil-cpp/absl/strings/cord/ya.make b/contrib/restricted/abseil-cpp/absl/strings/cord/ya.make
index 5deec2ab13..b3654c86d0 100644
--- a/contrib/restricted/abseil-cpp/absl/strings/cord/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/strings/cord/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/strings/internal/cordz_functions/ya.make b/contrib/restricted/abseil-cpp/absl/strings/internal/cordz_functions/ya.make
index 8cce025440..6dc8a23cc5 100644
--- a/contrib/restricted/abseil-cpp/absl/strings/internal/cordz_functions/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/strings/internal/cordz_functions/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/strings/internal/cordz_handle/ya.make b/contrib/restricted/abseil-cpp/absl/strings/internal/cordz_handle/ya.make
index 6ee5ac40d0..47e1c6006c 100644
--- a/contrib/restricted/abseil-cpp/absl/strings/internal/cordz_handle/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/strings/internal/cordz_handle/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/strings/internal/cordz_info/ya.make b/contrib/restricted/abseil-cpp/absl/strings/internal/cordz_info/ya.make
index 4ce3dfa4ae..56243dd401 100644
--- a/contrib/restricted/abseil-cpp/absl/strings/internal/cordz_info/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/strings/internal/cordz_info/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/strings/internal/cordz_sample_token/ya.make b/contrib/restricted/abseil-cpp/absl/strings/internal/cordz_sample_token/ya.make
index bf71536722..1ad95a8a05 100644
--- a/contrib/restricted/abseil-cpp/absl/strings/internal/cordz_sample_token/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/strings/internal/cordz_sample_token/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/strings/internal/str_format/.yandex_meta/licenses.list.txt b/contrib/restricted/abseil-cpp/absl/strings/internal/str_format/.yandex_meta/licenses.list.txt
index 95cff783b8..33d60b3d2b 100644
--- a/contrib/restricted/abseil-cpp/absl/strings/internal/str_format/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/abseil-cpp/absl/strings/internal/str_format/.yandex_meta/licenses.list.txt
@@ -1,20 +1,20 @@
-====================Apache-2.0====================
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-====================COPYRIGHT====================
-// Copyright 2017 The Abseil Authors.
-
-
-====================COPYRIGHT====================
-// Copyright 2020 The Abseil Authors.
+====================Apache-2.0====================
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+====================COPYRIGHT====================
+// Copyright 2017 The Abseil Authors.
+
+
+====================COPYRIGHT====================
+// Copyright 2020 The Abseil Authors.
diff --git a/contrib/restricted/abseil-cpp/absl/strings/ya.make b/contrib/restricted/abseil-cpp/absl/strings/ya.make
index 3d832c8bb7..bc11193f12 100644
--- a/contrib/restricted/abseil-cpp/absl/strings/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/strings/ya.make
@@ -6,8 +6,8 @@ OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
PEERDIR(
contrib/restricted/abseil-cpp/absl/base
contrib/restricted/abseil-cpp/absl/base/internal/raw_logging
diff --git a/contrib/restricted/abseil-cpp/absl/synchronization/.yandex_meta/licenses.list.txt b/contrib/restricted/abseil-cpp/absl/synchronization/.yandex_meta/licenses.list.txt
index 4335862815..7be6b42848 100644
--- a/contrib/restricted/abseil-cpp/absl/synchronization/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/abseil-cpp/absl/synchronization/.yandex_meta/licenses.list.txt
@@ -1,16 +1,16 @@
-====================Apache-2.0====================
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-====================COPYRIGHT====================
-// Copyright 2017 The Abseil Authors.
+====================Apache-2.0====================
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+====================COPYRIGHT====================
+// Copyright 2017 The Abseil Authors.
diff --git a/contrib/restricted/abseil-cpp/absl/synchronization/internal/.yandex_meta/licenses.list.txt b/contrib/restricted/abseil-cpp/absl/synchronization/internal/.yandex_meta/licenses.list.txt
index 4ae3f0cbbc..b94f79902f 100644
--- a/contrib/restricted/abseil-cpp/absl/synchronization/internal/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/abseil-cpp/absl/synchronization/internal/.yandex_meta/licenses.list.txt
@@ -1,34 +1,34 @@
-====================Apache-2.0====================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-
-
-====================Apache-2.0====================
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-====================COPYRIGHT====================
-// Copyright 2017 The Abseil Authors.
-
-
-====================COPYRIGHT====================
-// Copyright 2020 The Abseil Authors.
+====================Apache-2.0====================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+
+
+====================Apache-2.0====================
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+====================COPYRIGHT====================
+// Copyright 2017 The Abseil Authors.
+
+
+====================COPYRIGHT====================
+// Copyright 2020 The Abseil Authors.
diff --git a/contrib/restricted/abseil-cpp/absl/synchronization/internal/ya.make b/contrib/restricted/abseil-cpp/absl/synchronization/internal/ya.make
index f7befbab9b..40f72cf665 100644
--- a/contrib/restricted/abseil-cpp/absl/synchronization/internal/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/synchronization/internal/ya.make
@@ -6,8 +6,8 @@ OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
PEERDIR(
contrib/restricted/abseil-cpp/absl/base
contrib/restricted/abseil-cpp/absl/base/internal/low_level_alloc
diff --git a/contrib/restricted/abseil-cpp/absl/synchronization/ya.make b/contrib/restricted/abseil-cpp/absl/synchronization/ya.make
index b4a4f5de93..06f72b69e9 100644
--- a/contrib/restricted/abseil-cpp/absl/synchronization/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/synchronization/ya.make
@@ -6,8 +6,8 @@ OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
PEERDIR(
contrib/restricted/abseil-cpp/absl/base
contrib/restricted/abseil-cpp/absl/base/internal/low_level_alloc
diff --git a/contrib/restricted/abseil-cpp/absl/time/.yandex_meta/licenses.list.txt b/contrib/restricted/abseil-cpp/absl/time/.yandex_meta/licenses.list.txt
index fda2d3852b..7c1bf3b5ad 100644
--- a/contrib/restricted/abseil-cpp/absl/time/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/abseil-cpp/absl/time/.yandex_meta/licenses.list.txt
@@ -1,42 +1,42 @@
-====================Apache-2.0====================
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-====================Apache-2.0====================
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-====================COPYRIGHT====================
-// Copyright 2016 Google Inc. All Rights Reserved.
-
-
-====================COPYRIGHT====================
-// Copyright 2017 The Abseil Authors.
-
-
-====================COPYRIGHT====================
-// Copyright 2018 The Abseil Authors.
-
-
-====================Public-Domain====================
-** This file is in the public domain, so clarified as of
+====================Apache-2.0====================
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+====================Apache-2.0====================
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+====================COPYRIGHT====================
+// Copyright 2016 Google Inc. All Rights Reserved.
+
+
+====================COPYRIGHT====================
+// Copyright 2017 The Abseil Authors.
+
+
+====================COPYRIGHT====================
+// Copyright 2018 The Abseil Authors.
+
+
+====================Public-Domain====================
+** This file is in the public domain, so clarified as of
diff --git a/contrib/restricted/abseil-cpp/absl/time/civil_time/ya.make b/contrib/restricted/abseil-cpp/absl/time/civil_time/ya.make
index b008315347..d6d6000692 100644
--- a/contrib/restricted/abseil-cpp/absl/time/civil_time/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/time/civil_time/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/time/time_zone/ya.make b/contrib/restricted/abseil-cpp/absl/time/time_zone/ya.make
index 50405c0fbf..810a0b318c 100644
--- a/contrib/restricted/abseil-cpp/absl/time/time_zone/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/time/time_zone/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/time/ya.make b/contrib/restricted/abseil-cpp/absl/time/ya.make
index fd4557147d..feb835cc53 100644
--- a/contrib/restricted/abseil-cpp/absl/time/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/time/ya.make
@@ -4,13 +4,13 @@ LIBRARY()
OWNER(g:cpp-contrib)
-LICENSE(
- Apache-2.0 AND
- Public-Domain
-)
+LICENSE(
+ Apache-2.0 AND
+ Public-Domain
+)
+
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
PEERDIR(
contrib/restricted/abseil-cpp/absl/base
contrib/restricted/abseil-cpp/absl/base/internal/raw_logging
diff --git a/contrib/restricted/abseil-cpp/absl/types/.yandex_meta/licenses.list.txt b/contrib/restricted/abseil-cpp/absl/types/.yandex_meta/licenses.list.txt
index 2030853dc3..2ff2fa2fd3 100644
--- a/contrib/restricted/abseil-cpp/absl/types/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/abseil-cpp/absl/types/.yandex_meta/licenses.list.txt
@@ -1,20 +1,20 @@
-====================Apache-2.0====================
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-====================COPYRIGHT====================
-// Copyright 2017 The Abseil Authors.
-
-
-====================COPYRIGHT====================
-// Copyright 2018 The Abseil Authors.
+====================Apache-2.0====================
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+====================COPYRIGHT====================
+// Copyright 2017 The Abseil Authors.
+
+
+====================COPYRIGHT====================
+// Copyright 2018 The Abseil Authors.
diff --git a/contrib/restricted/abseil-cpp/absl/types/bad_any_cast/ya.make b/contrib/restricted/abseil-cpp/absl/types/bad_any_cast/ya.make
index 4de5349088..aa13ee52f6 100644
--- a/contrib/restricted/abseil-cpp/absl/types/bad_any_cast/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/types/bad_any_cast/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/types/bad_optional_access/ya.make b/contrib/restricted/abseil-cpp/absl/types/bad_optional_access/ya.make
index 6ae4daa910..25b3cf1d53 100644
--- a/contrib/restricted/abseil-cpp/absl/types/bad_optional_access/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/types/bad_optional_access/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/types/bad_variant_access/ya.make b/contrib/restricted/abseil-cpp/absl/types/bad_variant_access/ya.make
index befaae9ab6..4819f7f422 100644
--- a/contrib/restricted/abseil-cpp/absl/types/bad_variant_access/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/types/bad_variant_access/ya.make
@@ -2,8 +2,8 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
diff --git a/contrib/restricted/abseil-cpp/absl/types/internal/.yandex_meta/licenses.list.txt b/contrib/restricted/abseil-cpp/absl/types/internal/.yandex_meta/licenses.list.txt
index 27eb40bafa..f39e683596 100644
--- a/contrib/restricted/abseil-cpp/absl/types/internal/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/abseil-cpp/absl/types/internal/.yandex_meta/licenses.list.txt
@@ -1,24 +1,24 @@
-====================Apache-2.0====================
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-====================COPYRIGHT====================
-// Copyright 2017 The Abseil Authors.
-
-
-====================COPYRIGHT====================
-// Copyright 2018 The Abseil Authors.
-
-
-====================COPYRIGHT====================
-// Copyright 2019 The Abseil Authors.
+====================Apache-2.0====================
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+====================COPYRIGHT====================
+// Copyright 2017 The Abseil Authors.
+
+
+====================COPYRIGHT====================
+// Copyright 2018 The Abseil Authors.
+
+
+====================COPYRIGHT====================
+// Copyright 2019 The Abseil Authors.
diff --git a/contrib/restricted/abseil-cpp/absl/types/internal/ya.make b/contrib/restricted/abseil-cpp/absl/types/internal/ya.make
index a84593e2f0..49b33a9a65 100644
--- a/contrib/restricted/abseil-cpp/absl/types/internal/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/types/internal/ya.make
@@ -6,6 +6,6 @@ OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
END()
diff --git a/contrib/restricted/abseil-cpp/absl/types/ya.make b/contrib/restricted/abseil-cpp/absl/types/ya.make
index a84593e2f0..49b33a9a65 100644
--- a/contrib/restricted/abseil-cpp/absl/types/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/types/ya.make
@@ -6,6 +6,6 @@ OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
END()
diff --git a/contrib/restricted/abseil-cpp/absl/utility/.yandex_meta/licenses.list.txt b/contrib/restricted/abseil-cpp/absl/utility/.yandex_meta/licenses.list.txt
index 4335862815..7be6b42848 100644
--- a/contrib/restricted/abseil-cpp/absl/utility/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/abseil-cpp/absl/utility/.yandex_meta/licenses.list.txt
@@ -1,16 +1,16 @@
-====================Apache-2.0====================
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-====================COPYRIGHT====================
-// Copyright 2017 The Abseil Authors.
+====================Apache-2.0====================
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+====================COPYRIGHT====================
+// Copyright 2017 The Abseil Authors.
diff --git a/contrib/restricted/abseil-cpp/absl/utility/ya.make b/contrib/restricted/abseil-cpp/absl/utility/ya.make
index a84593e2f0..49b33a9a65 100644
--- a/contrib/restricted/abseil-cpp/absl/utility/ya.make
+++ b/contrib/restricted/abseil-cpp/absl/utility/ya.make
@@ -6,6 +6,6 @@ OWNER(g:cpp-contrib)
LICENSE(Apache-2.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
END()
diff --git a/contrib/restricted/abseil-cpp/ya.make b/contrib/restricted/abseil-cpp/ya.make
index 00edd02eac..f69125bf2d 100644
--- a/contrib/restricted/abseil-cpp/ya.make
+++ b/contrib/restricted/abseil-cpp/ya.make
@@ -6,10 +6,10 @@ OWNER(g:cpp-contrib)
VERSION(20211102.0)
-LICENSE(Apache-2.0)
+LICENSE(Apache-2.0)
+
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
PEERDIR(
contrib/restricted/abseil-cpp/absl/algorithm
contrib/restricted/abseil-cpp/absl/base
diff --git a/contrib/restricted/aws/aws-c-cal/.yandex_meta/devtools.copyrights.report b/contrib/restricted/aws/aws-c-cal/.yandex_meta/devtools.copyrights.report
index c02c7b6d46..9fb4796edd 100644
--- a/contrib/restricted/aws/aws-c-cal/.yandex_meta/devtools.copyrights.report
+++ b/contrib/restricted/aws/aws-c-cal/.yandex_meta/devtools.copyrights.report
@@ -1,59 +1,59 @@
-# File format ($ symbol means the beginning of a line):
-#
-# $ # this message
-# $ # =======================
-# $ # comments (all commentaries should starts with some number of spaces and # symbol)
-# $ IGNORE_FILES {file1.ext1} {file2.ext2} - (optional) ignore listed files when generating license macro and credits
-# $
-# ${action} {license id} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
-# ${all_file_action} filename
-# $ # user commentaries (many lines)
-# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
-# ${action} {license spdx} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/3/ya.make
-# ${all_file_action} filename
-# $ # user commentaries
-# $ generated description
-# $ ...
-#
-# You can modify action, all_file_action and add commentaries
-# Available actions:
-# keep - keep license in contrib and use in credits
-# skip - skip license
-# remove - remove all files with this license
-# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
-#
-# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
-# We suppose that that files can contain some license info
-# Available all file actions:
-# FILE_IGNORE - ignore file (do nothing)
-# FILE_INCLUDE - include all file data into licenses text file
-# =======================
-
-KEEP COPYRIGHT_SERVICE_LABEL 0b26996bfb42c528af128697232328ba
-BELONGS ya.make
- License text:
- Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- NOTICE [2:2]
- include/aws/cal/cal.h [4:4]
- include/aws/cal/ecc.h [4:4]
- include/aws/cal/exports.h [4:4]
- include/aws/cal/hash.h [4:4]
- include/aws/cal/hmac.h [4:4]
- include/aws/cal/private/der.h [4:4]
- include/aws/cal/private/ecc.h [4:4]
- source/cal.c [2:2]
- source/der.c [2:2]
- source/ecc.c [2:2]
- source/hash.c [2:2]
- source/hmac.c [2:2]
- source/unix/openssl_platform_init.c [2:2]
- source/unix/opensslcrypto_ecc.c [2:2]
- source/unix/opensslcrypto_hash.c [2:2]
- source/unix/opensslcrypto_hmac.c [2:2]
+# File format ($ symbol means the beginning of a line):
+#
+# $ # this message
+# $ # =======================
+# $ # comments (all commentaries should starts with some number of spaces and # symbol)
+# $ IGNORE_FILES {file1.ext1} {file2.ext2} - (optional) ignore listed files when generating license macro and credits
+# $
+# ${action} {license id} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
+# ${all_file_action} filename
+# $ # user commentaries (many lines)
+# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
+# ${action} {license spdx} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/3/ya.make
+# ${all_file_action} filename
+# $ # user commentaries
+# $ generated description
+# $ ...
+#
+# You can modify action, all_file_action and add commentaries
+# Available actions:
+# keep - keep license in contrib and use in credits
+# skip - skip license
+# remove - remove all files with this license
+# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
+#
+# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
+# We suppose that that files can contain some license info
+# Available all file actions:
+# FILE_IGNORE - ignore file (do nothing)
+# FILE_INCLUDE - include all file data into licenses text file
+# =======================
+
+KEEP COPYRIGHT_SERVICE_LABEL 0b26996bfb42c528af128697232328ba
+BELONGS ya.make
+ License text:
+ Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ NOTICE [2:2]
+ include/aws/cal/cal.h [4:4]
+ include/aws/cal/ecc.h [4:4]
+ include/aws/cal/exports.h [4:4]
+ include/aws/cal/hash.h [4:4]
+ include/aws/cal/hmac.h [4:4]
+ include/aws/cal/private/der.h [4:4]
+ include/aws/cal/private/ecc.h [4:4]
+ source/cal.c [2:2]
+ source/der.c [2:2]
+ source/ecc.c [2:2]
+ source/hash.c [2:2]
+ source/hmac.c [2:2]
+ source/unix/openssl_platform_init.c [2:2]
+ source/unix/opensslcrypto_ecc.c [2:2]
+ source/unix/opensslcrypto_hash.c [2:2]
+ source/unix/opensslcrypto_hmac.c [2:2]
diff --git a/contrib/restricted/aws/aws-c-cal/.yandex_meta/devtools.licenses.report b/contrib/restricted/aws/aws-c-cal/.yandex_meta/devtools.licenses.report
index 6a4296db85..bba3ebd834 100644
--- a/contrib/restricted/aws/aws-c-cal/.yandex_meta/devtools.licenses.report
+++ b/contrib/restricted/aws/aws-c-cal/.yandex_meta/devtools.licenses.report
@@ -1,122 +1,122 @@
-# File format ($ symbol means the beginning of a line):
-#
-# $ # this message
-# $ # =======================
-# $ # comments (all commentaries should starts with some number of spaces and # symbol)
-# $ IGNORE_FILES {file1.ext1} {file2.ext2} - (optional) ignore listed files when generating license macro and credits
-# $
-# ${action} {license id} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
-# ${all_file_action} filename
-# $ # user commentaries (many lines)
-# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
-# ${action} {license spdx} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/3/ya.make
-# ${all_file_action} filename
-# $ # user commentaries
-# $ generated description
-# $ ...
-#
-# You can modify action, all_file_action and add commentaries
-# Available actions:
-# keep - keep license in contrib and use in credits
-# skip - skip license
-# remove - remove all files with this license
-# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
-#
-# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
-# We suppose that that files can contain some license info
-# Available all file actions:
-# FILE_IGNORE - ignore file (do nothing)
-# FILE_INCLUDE - include all file data into licenses text file
-# =======================
-
-KEEP Apache-2.0 314e21a036e4ea071f111cb5deff83c1
-BELONGS ya.make
-FILE_INCLUDE NOTICE found in files: LICENSE at line 107, LICENSE at line 110, LICENSE at line 112, LICENSE at line 117, LICENSE at line 120, LICENSE at line 142
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
- LICENSE [2:175]
-
-KEEP Apache-2.0 43f57e875cdc02e8385ff667f85d702e
-BELONGS ya.make
- License text:
- SPDX-License-Identifier: Apache-2.0.
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 100.00
- Match type : TAG
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
- NOTICE [3:3]
-
-SKIP LicenseRef-scancode-generic-cla 4c121fbba45df428a6eec824e562d4f8
-BELONGS ya.make
- # Skip CLA
- License text:
- Contributor License Agreement (CLA)](
- Scancode info:
- Original SPDX id: LicenseRef-scancode-generic-cla
- Score : 22.00
- Match type : NOTICE
- Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/generic-cla.LICENSE
- Files with this license:
- CONTRIBUTING.md [61:61]
-
-KEEP Apache-2.0 6c901454b872854c0dea3ec06b67701a
-BELONGS ya.make
- License text:
- \## License
- This library is licensed under the Apache 2.0 License.
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
- README.md [5:7]
-
-KEEP Apache-2.0 d591512e466bb957030b8857f753349e
-BELONGS ya.make
- License text:
- * SPDX-License-Identifier: Apache-2.0.
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 100.00
- Match type : TAG
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
- include/aws/cal/cal.h [5:5]
- include/aws/cal/ecc.h [5:5]
- include/aws/cal/exports.h [5:5]
- include/aws/cal/hash.h [5:5]
- include/aws/cal/hmac.h [5:5]
- include/aws/cal/private/der.h [5:5]
- include/aws/cal/private/ecc.h [5:5]
- source/cal.c [3:3]
- source/der.c [3:3]
- source/ecc.c [3:3]
- source/hash.c [3:3]
- source/hmac.c [3:3]
- source/unix/openssl_platform_init.c [3:3]
- source/unix/opensslcrypto_ecc.c [3:3]
- source/unix/opensslcrypto_hash.c [3:3]
- source/unix/opensslcrypto_hmac.c [3:3]
-
-SKIP LicenseRef-scancode-generic-cla ee24fdc60600747c7d12c32055b0011d
-BELONGS ya.make
- # Skip CLA
- License text:
- Contributor_License_Agreement)
- Scancode info:
- Original SPDX id: LicenseRef-scancode-generic-cla
- Score : 16.00
- Match type : NOTICE
- Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/generic-cla.LICENSE
- Files with this license:
- CONTRIBUTING.md [61:61]
+# File format ($ symbol means the beginning of a line):
+#
+# $ # this message
+# $ # =======================
+# $ # comments (all commentaries should starts with some number of spaces and # symbol)
+# $ IGNORE_FILES {file1.ext1} {file2.ext2} - (optional) ignore listed files when generating license macro and credits
+# $
+# ${action} {license id} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
+# ${all_file_action} filename
+# $ # user commentaries (many lines)
+# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
+# ${action} {license spdx} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/3/ya.make
+# ${all_file_action} filename
+# $ # user commentaries
+# $ generated description
+# $ ...
+#
+# You can modify action, all_file_action and add commentaries
+# Available actions:
+# keep - keep license in contrib and use in credits
+# skip - skip license
+# remove - remove all files with this license
+# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
+#
+# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
+# We suppose that that files can contain some license info
+# Available all file actions:
+# FILE_IGNORE - ignore file (do nothing)
+# FILE_INCLUDE - include all file data into licenses text file
+# =======================
+
+KEEP Apache-2.0 314e21a036e4ea071f111cb5deff83c1
+BELONGS ya.make
+FILE_INCLUDE NOTICE found in files: LICENSE at line 107, LICENSE at line 110, LICENSE at line 112, LICENSE at line 117, LICENSE at line 120, LICENSE at line 142
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ LICENSE [2:175]
+
+KEEP Apache-2.0 43f57e875cdc02e8385ff667f85d702e
+BELONGS ya.make
+ License text:
+ SPDX-License-Identifier: Apache-2.0.
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 100.00
+ Match type : TAG
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ NOTICE [3:3]
+
+SKIP LicenseRef-scancode-generic-cla 4c121fbba45df428a6eec824e562d4f8
+BELONGS ya.make
+ # Skip CLA
+ License text:
+ Contributor License Agreement (CLA)](
+ Scancode info:
+ Original SPDX id: LicenseRef-scancode-generic-cla
+ Score : 22.00
+ Match type : NOTICE
+ Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/generic-cla.LICENSE
+ Files with this license:
+ CONTRIBUTING.md [61:61]
+
+KEEP Apache-2.0 6c901454b872854c0dea3ec06b67701a
+BELONGS ya.make
+ License text:
+ \## License
+ This library is licensed under the Apache 2.0 License.
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ README.md [5:7]
+
+KEEP Apache-2.0 d591512e466bb957030b8857f753349e
+BELONGS ya.make
+ License text:
+ * SPDX-License-Identifier: Apache-2.0.
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 100.00
+ Match type : TAG
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ include/aws/cal/cal.h [5:5]
+ include/aws/cal/ecc.h [5:5]
+ include/aws/cal/exports.h [5:5]
+ include/aws/cal/hash.h [5:5]
+ include/aws/cal/hmac.h [5:5]
+ include/aws/cal/private/der.h [5:5]
+ include/aws/cal/private/ecc.h [5:5]
+ source/cal.c [3:3]
+ source/der.c [3:3]
+ source/ecc.c [3:3]
+ source/hash.c [3:3]
+ source/hmac.c [3:3]
+ source/unix/openssl_platform_init.c [3:3]
+ source/unix/opensslcrypto_ecc.c [3:3]
+ source/unix/opensslcrypto_hash.c [3:3]
+ source/unix/opensslcrypto_hmac.c [3:3]
+
+SKIP LicenseRef-scancode-generic-cla ee24fdc60600747c7d12c32055b0011d
+BELONGS ya.make
+ # Skip CLA
+ License text:
+ Contributor_License_Agreement)
+ Scancode info:
+ Original SPDX id: LicenseRef-scancode-generic-cla
+ Score : 16.00
+ Match type : NOTICE
+ Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/generic-cla.LICENSE
+ Files with this license:
+ CONTRIBUTING.md [61:61]
diff --git a/contrib/restricted/aws/aws-c-cal/.yandex_meta/licenses.list.txt b/contrib/restricted/aws/aws-c-cal/.yandex_meta/licenses.list.txt
index 0c5905e862..92e28a66e6 100644
--- a/contrib/restricted/aws/aws-c-cal/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/aws/aws-c-cal/.yandex_meta/licenses.list.txt
@@ -1,197 +1,197 @@
-====================Apache-2.0====================
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
-====================Apache-2.0====================
- * SPDX-License-Identifier: Apache-2.0.
-
-
-====================Apache-2.0====================
-## License
-
-This library is licensed under the Apache 2.0 License.
-
-
-====================Apache-2.0====================
-SPDX-License-Identifier: Apache-2.0.
-
-====================COPYRIGHT====================
-Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
-
-
-====================File: NOTICE====================
-AWS C Cal
-Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
-SPDX-License-Identifier: Apache-2.0.
+====================Apache-2.0====================
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+====================Apache-2.0====================
+ * SPDX-License-Identifier: Apache-2.0.
+
+
+====================Apache-2.0====================
+## License
+
+This library is licensed under the Apache 2.0 License.
+
+
+====================Apache-2.0====================
+SPDX-License-Identifier: Apache-2.0.
+
+====================COPYRIGHT====================
+Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+
+
+====================File: NOTICE====================
+AWS C Cal
+Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+SPDX-License-Identifier: Apache-2.0.
diff --git a/contrib/restricted/aws/aws-c-cal/ya.make b/contrib/restricted/aws/aws-c-cal/ya.make
index e633aadd06..9c4193a677 100644
--- a/contrib/restricted/aws/aws-c-cal/ya.make
+++ b/contrib/restricted/aws/aws-c-cal/ya.make
@@ -2,17 +2,17 @@
LIBRARY()
-OWNER(
- orivej
- g:cpp-contrib
-)
+OWNER(
+ orivej
+ g:cpp-contrib
+)
VERSION(0.4.5)
LICENSE(Apache-2.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
PEERDIR(
contrib/libs/openssl
contrib/restricted/aws/aws-c-common
diff --git a/contrib/restricted/aws/aws-c-event-stream/.yandex_meta/devtools.copyrights.report b/contrib/restricted/aws/aws-c-event-stream/.yandex_meta/devtools.copyrights.report
index f513642b83..e8ebeb9174 100644
--- a/contrib/restricted/aws/aws-c-event-stream/.yandex_meta/devtools.copyrights.report
+++ b/contrib/restricted/aws/aws-c-event-stream/.yandex_meta/devtools.copyrights.report
@@ -1,65 +1,65 @@
-# File format ($ symbol means the beginning of a line):
-#
-# $ # this message
-# $ # =======================
-# $ # comments (all commentaries should starts with some number of spaces and # symbol)
-# $ IGNORE_FILES {file1.ext1} {file2.ext2} - (optional) ignore listed files when generating license macro and credits
-# $
-# ${action} {license id} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
-# ${all_file_action} filename
-# $ # user commentaries (many lines)
-# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
-# ${action} {license spdx} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/3/ya.make
-# ${all_file_action} filename
-# $ # user commentaries
-# $ generated description
-# $ ...
-#
-# You can modify action, all_file_action and add commentaries
-# Available actions:
-# keep - keep license in contrib and use in credits
-# skip - skip license
-# remove - remove all files with this license
-# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
-#
-# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
-# We suppose that that files can contain some license info
-# Available all file actions:
-# FILE_IGNORE - ignore file (do nothing)
-# FILE_INCLUDE - include all file data into licenses text file
-# =======================
-
-KEEP COPYRIGHT_SERVICE_LABEL 0b26996bfb42c528af128697232328ba
-BELONGS ya.make
- License text:
- Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- NOTICE [2:2]
- include/aws/event-stream/event_stream.h [5:5]
- include/aws/event-stream/event_stream_channel_handler.h [4:4]
- include/aws/event-stream/event_stream_exports.h [4:4]
- include/aws/event-stream/event_stream_rpc.h [4:4]
- include/aws/event-stream/event_stream_rpc_client.h [4:4]
- include/aws/event-stream/event_stream_rpc_server.h [4:4]
- include/aws/event-stream/private/event_stream_rpc_priv.h [4:4]
- source/event_stream.c [2:2]
- source/event_stream_rpc.c [2:2]
- source/event_stream_rpc_client.c [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL ecbccfb9ad7a00308f7ac6b874db40a1
-BELONGS ya.make
- License text:
- * Copyright 2010-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- source/event_stream_channel_handler.c [2:2]
- source/event_stream_rpc_server.c [2:2]
+# File format ($ symbol means the beginning of a line):
+#
+# $ # this message
+# $ # =======================
+# $ # comments (all commentaries should starts with some number of spaces and # symbol)
+# $ IGNORE_FILES {file1.ext1} {file2.ext2} - (optional) ignore listed files when generating license macro and credits
+# $
+# ${action} {license id} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
+# ${all_file_action} filename
+# $ # user commentaries (many lines)
+# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
+# ${action} {license spdx} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/3/ya.make
+# ${all_file_action} filename
+# $ # user commentaries
+# $ generated description
+# $ ...
+#
+# You can modify action, all_file_action and add commentaries
+# Available actions:
+# keep - keep license in contrib and use in credits
+# skip - skip license
+# remove - remove all files with this license
+# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
+#
+# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
+# We suppose that that files can contain some license info
+# Available all file actions:
+# FILE_IGNORE - ignore file (do nothing)
+# FILE_INCLUDE - include all file data into licenses text file
+# =======================
+
+KEEP COPYRIGHT_SERVICE_LABEL 0b26996bfb42c528af128697232328ba
+BELONGS ya.make
+ License text:
+ Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ NOTICE [2:2]
+ include/aws/event-stream/event_stream.h [5:5]
+ include/aws/event-stream/event_stream_channel_handler.h [4:4]
+ include/aws/event-stream/event_stream_exports.h [4:4]
+ include/aws/event-stream/event_stream_rpc.h [4:4]
+ include/aws/event-stream/event_stream_rpc_client.h [4:4]
+ include/aws/event-stream/event_stream_rpc_server.h [4:4]
+ include/aws/event-stream/private/event_stream_rpc_priv.h [4:4]
+ source/event_stream.c [2:2]
+ source/event_stream_rpc.c [2:2]
+ source/event_stream_rpc_client.c [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL ecbccfb9ad7a00308f7ac6b874db40a1
+BELONGS ya.make
+ License text:
+ * Copyright 2010-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ source/event_stream_channel_handler.c [2:2]
+ source/event_stream_rpc_server.c [2:2]
diff --git a/contrib/restricted/aws/aws-c-event-stream/.yandex_meta/devtools.licenses.report b/contrib/restricted/aws/aws-c-event-stream/.yandex_meta/devtools.licenses.report
index 5d8b61c1be..114a113cb8 100644
--- a/contrib/restricted/aws/aws-c-event-stream/.yandex_meta/devtools.licenses.report
+++ b/contrib/restricted/aws/aws-c-event-stream/.yandex_meta/devtools.licenses.report
@@ -1,128 +1,128 @@
-# File format ($ symbol means the beginning of a line):
-#
-# $ # this message
-# $ # =======================
-# $ # comments (all commentaries should starts with some number of spaces and # symbol)
-# $ IGNORE_FILES {file1.ext1} {file2.ext2} - (optional) ignore listed files when generating license macro and credits
-# $
-# ${action} {license id} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
-# ${all_file_action} filename
-# $ # user commentaries (many lines)
-# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
-# ${action} {license spdx} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/3/ya.make
-# ${all_file_action} filename
-# $ # user commentaries
-# $ generated description
-# $ ...
-#
-# You can modify action, all_file_action and add commentaries
-# Available actions:
-# keep - keep license in contrib and use in credits
-# skip - skip license
-# remove - remove all files with this license
-# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
-#
-# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
-# We suppose that that files can contain some license info
-# Available all file actions:
-# FILE_IGNORE - ignore file (do nothing)
-# FILE_INCLUDE - include all file data into licenses text file
-# =======================
-
-KEEP Apache-2.0 2b42edef8fa55315f34f2370b4715ca9
-BELONGS ya.make
-FILE_INCLUDE NOTICE found in files: LICENSE at line 107, LICENSE at line 110, LICENSE at line 112, LICENSE at line 117, LICENSE at line 120, LICENSE at line 142
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 100.00
- Match type : TEXT
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
- LICENSE [2:202]
-
-KEEP Apache-2.0 43f57e875cdc02e8385ff667f85d702e
-BELONGS ya.make
- License text:
- SPDX-License-Identifier: Apache-2.0.
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 100.00
- Match type : TAG
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
- NOTICE [3:3]
-
-SKIP LicenseRef-scancode-generic-cla 4c121fbba45df428a6eec824e562d4f8
-BELONGS ya.make
- # Skip CLA
- License text:
- Contributor License Agreement (CLA)](
- Scancode info:
- Original SPDX id: LicenseRef-scancode-generic-cla
- Score : 22.00
- Match type : NOTICE
- Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/generic-cla.LICENSE
- Files with this license:
- CONTRIBUTING.md [61:61]
-
-KEEP Apache-2.0 6c901454b872854c0dea3ec06b67701a
-BELONGS ya.make
- License text:
- \## License
- This library is licensed under the Apache 2.0 License.
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
- README.md [5:7]
-
-KEEP Apache-2.0 d3a6c1cb5b7a1e53a61f819a19149ee8
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
- source/event_stream_channel_handler.c [4:13]
- source/event_stream_rpc_server.c [4:13]
-
-KEEP Apache-2.0 d591512e466bb957030b8857f753349e
-BELONGS ya.make
- License text:
- * SPDX-License-Identifier: Apache-2.0.
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 100.00
- Match type : TAG
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
- include/aws/event-stream/event_stream.h [6:6]
- include/aws/event-stream/event_stream_channel_handler.h [5:5]
- include/aws/event-stream/event_stream_exports.h [5:5]
- include/aws/event-stream/event_stream_rpc.h [5:5]
- include/aws/event-stream/event_stream_rpc_client.h [5:5]
- include/aws/event-stream/event_stream_rpc_server.h [5:5]
- include/aws/event-stream/private/event_stream_rpc_priv.h [5:5]
- source/event_stream.c [3:3]
- source/event_stream_rpc.c [3:3]
- source/event_stream_rpc_client.c [3:3]
-
-SKIP LicenseRef-scancode-generic-cla ee24fdc60600747c7d12c32055b0011d
-BELONGS ya.make
- # Skip CLA
- License text:
- Contributor_License_Agreement)
- Scancode info:
- Original SPDX id: LicenseRef-scancode-generic-cla
- Score : 16.00
- Match type : NOTICE
- Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/generic-cla.LICENSE
- Files with this license:
- CONTRIBUTING.md [61:61]
+# File format ($ symbol means the beginning of a line):
+#
+# $ # this message
+# $ # =======================
+# $ # comments (all commentaries should starts with some number of spaces and # symbol)
+# $ IGNORE_FILES {file1.ext1} {file2.ext2} - (optional) ignore listed files when generating license macro and credits
+# $
+# ${action} {license id} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
+# ${all_file_action} filename
+# $ # user commentaries (many lines)
+# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
+# ${action} {license spdx} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/3/ya.make
+# ${all_file_action} filename
+# $ # user commentaries
+# $ generated description
+# $ ...
+#
+# You can modify action, all_file_action and add commentaries
+# Available actions:
+# keep - keep license in contrib and use in credits
+# skip - skip license
+# remove - remove all files with this license
+# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
+#
+# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
+# We suppose that that files can contain some license info
+# Available all file actions:
+# FILE_IGNORE - ignore file (do nothing)
+# FILE_INCLUDE - include all file data into licenses text file
+# =======================
+
+KEEP Apache-2.0 2b42edef8fa55315f34f2370b4715ca9
+BELONGS ya.make
+FILE_INCLUDE NOTICE found in files: LICENSE at line 107, LICENSE at line 110, LICENSE at line 112, LICENSE at line 117, LICENSE at line 120, LICENSE at line 142
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 100.00
+ Match type : TEXT
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ LICENSE [2:202]
+
+KEEP Apache-2.0 43f57e875cdc02e8385ff667f85d702e
+BELONGS ya.make
+ License text:
+ SPDX-License-Identifier: Apache-2.0.
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 100.00
+ Match type : TAG
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ NOTICE [3:3]
+
+SKIP LicenseRef-scancode-generic-cla 4c121fbba45df428a6eec824e562d4f8
+BELONGS ya.make
+ # Skip CLA
+ License text:
+ Contributor License Agreement (CLA)](
+ Scancode info:
+ Original SPDX id: LicenseRef-scancode-generic-cla
+ Score : 22.00
+ Match type : NOTICE
+ Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/generic-cla.LICENSE
+ Files with this license:
+ CONTRIBUTING.md [61:61]
+
+KEEP Apache-2.0 6c901454b872854c0dea3ec06b67701a
+BELONGS ya.make
+ License text:
+ \## License
+ This library is licensed under the Apache 2.0 License.
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ README.md [5:7]
+
+KEEP Apache-2.0 d3a6c1cb5b7a1e53a61f819a19149ee8
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ source/event_stream_channel_handler.c [4:13]
+ source/event_stream_rpc_server.c [4:13]
+
+KEEP Apache-2.0 d591512e466bb957030b8857f753349e
+BELONGS ya.make
+ License text:
+ * SPDX-License-Identifier: Apache-2.0.
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 100.00
+ Match type : TAG
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ include/aws/event-stream/event_stream.h [6:6]
+ include/aws/event-stream/event_stream_channel_handler.h [5:5]
+ include/aws/event-stream/event_stream_exports.h [5:5]
+ include/aws/event-stream/event_stream_rpc.h [5:5]
+ include/aws/event-stream/event_stream_rpc_client.h [5:5]
+ include/aws/event-stream/event_stream_rpc_server.h [5:5]
+ include/aws/event-stream/private/event_stream_rpc_priv.h [5:5]
+ source/event_stream.c [3:3]
+ source/event_stream_rpc.c [3:3]
+ source/event_stream_rpc_client.c [3:3]
+
+SKIP LicenseRef-scancode-generic-cla ee24fdc60600747c7d12c32055b0011d
+BELONGS ya.make
+ # Skip CLA
+ License text:
+ Contributor_License_Agreement)
+ Scancode info:
+ Original SPDX id: LicenseRef-scancode-generic-cla
+ Score : 16.00
+ Match type : NOTICE
+ Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/generic-cla.LICENSE
+ Files with this license:
+ CONTRIBUTING.md [61:61]
diff --git a/contrib/restricted/aws/aws-c-event-stream/.yandex_meta/licenses.list.txt b/contrib/restricted/aws/aws-c-event-stream/.yandex_meta/licenses.list.txt
index 9099ce0196..17719aeb9a 100644
--- a/contrib/restricted/aws/aws-c-event-stream/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/aws/aws-c-event-stream/.yandex_meta/licenses.list.txt
@@ -1,241 +1,241 @@
-====================Apache-2.0====================
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
-====================Apache-2.0====================
- * Licensed under the Apache License, Version 2.0 (the "License").
- * You may not use this file except in compliance with the License.
- * A copy of the License is located at
- *
- * http://aws.amazon.com/apache2.0
- *
- * or in the "license" file accompanying this file. This file is distributed
- * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
- * express or implied. See the License for the specific language governing
- * permissions and limitations under the License.
-
-
-====================Apache-2.0====================
- * SPDX-License-Identifier: Apache-2.0.
-
-
-====================Apache-2.0====================
-## License
-
-This library is licensed under the Apache 2.0 License.
-
-
-====================Apache-2.0====================
-SPDX-License-Identifier: Apache-2.0.
-
-====================COPYRIGHT====================
- * Copyright 2010-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-
-
-====================COPYRIGHT====================
-Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
-
-
-====================File: NOTICE====================
-AWS C Event Stream
-Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
-SPDX-License-Identifier: Apache-2.0.
+====================Apache-2.0====================
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+====================Apache-2.0====================
+ * Licensed under the Apache License, Version 2.0 (the "License").
+ * You may not use this file except in compliance with the License.
+ * A copy of the License is located at
+ *
+ * http://aws.amazon.com/apache2.0
+ *
+ * or in the "license" file accompanying this file. This file is distributed
+ * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+
+
+====================Apache-2.0====================
+ * SPDX-License-Identifier: Apache-2.0.
+
+
+====================Apache-2.0====================
+## License
+
+This library is licensed under the Apache 2.0 License.
+
+
+====================Apache-2.0====================
+SPDX-License-Identifier: Apache-2.0.
+
+====================COPYRIGHT====================
+ * Copyright 2010-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+
+
+====================COPYRIGHT====================
+Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+
+
+====================File: NOTICE====================
+AWS C Event Stream
+Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+SPDX-License-Identifier: Apache-2.0.
diff --git a/contrib/restricted/aws/aws-c-event-stream/ya.make b/contrib/restricted/aws/aws-c-event-stream/ya.make
index b6ffc2a9e1..97058617dc 100644
--- a/contrib/restricted/aws/aws-c-event-stream/ya.make
+++ b/contrib/restricted/aws/aws-c-event-stream/ya.make
@@ -8,8 +8,8 @@ VERSION(0.2.6)
LICENSE(Apache-2.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
PEERDIR(
contrib/restricted/aws/aws-c-common
contrib/restricted/aws/aws-c-io
diff --git a/contrib/restricted/aws/aws-c-io/.yandex_meta/devtools.copyrights.report b/contrib/restricted/aws/aws-c-io/.yandex_meta/devtools.copyrights.report
index a667de6d00..86dc616078 100644
--- a/contrib/restricted/aws/aws-c-io/.yandex_meta/devtools.copyrights.report
+++ b/contrib/restricted/aws/aws-c-io/.yandex_meta/devtools.copyrights.report
@@ -1,88 +1,88 @@
-# File format ($ symbol means the beginning of a line):
-#
-# $ # this message
-# $ # =======================
-# $ # comments (all commentaries should starts with some number of spaces and # symbol)
-# $ IGNORE_FILES {file1.ext1} {file2.ext2} - (optional) ignore listed files when generating license macro and credits
-# $
-# ${action} {license id} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
-# ${all_file_action} filename
-# $ # user commentaries (many lines)
-# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
-# ${action} {license spdx} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/3/ya.make
-# ${all_file_action} filename
-# $ # user commentaries
-# $ generated description
-# $ ...
-#
-# You can modify action, all_file_action and add commentaries
-# Available actions:
-# keep - keep license in contrib and use in credits
-# skip - skip license
-# remove - remove all files with this license
-# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
-#
-# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
-# We suppose that that files can contain some license info
-# Available all file actions:
-# FILE_IGNORE - ignore file (do nothing)
-# FILE_INCLUDE - include all file data into licenses text file
-# =======================
-
-KEEP COPYRIGHT_SERVICE_LABEL 0b26996bfb42c528af128697232328ba
-BELONGS ya.make
- License text:
- Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- NOTICE [2:2]
- include/aws/io/channel.h [4:4]
- include/aws/io/channel_bootstrap.h [5:5]
- include/aws/io/event_loop.h [5:5]
- include/aws/io/exports.h [5:5]
- include/aws/io/file_utils.h [5:5]
- include/aws/io/host_resolver.h [4:4]
- include/aws/io/io.h [5:5]
- include/aws/io/logging.h [5:5]
- include/aws/io/message_pool.h [4:4]
- include/aws/io/pipe.h [5:5]
- include/aws/io/pki_utils.h [4:4]
- include/aws/io/private/tls_channel_handler_shared.h [4:4]
- include/aws/io/retry_strategy.h [4:4]
- include/aws/io/shared_library.h [5:5]
- include/aws/io/socket.h [4:4]
- include/aws/io/socket_channel_handler.h [4:4]
- include/aws/io/statistics.h [5:5]
- include/aws/io/stream.h [5:5]
- include/aws/io/tls_channel_handler.h [4:4]
- include/aws/io/uri.h [4:4]
- source/alpn_handler.c [2:2]
- source/bsd/kqueue_event_loop.c [2:2]
- source/channel.c [2:2]
- source/channel_bootstrap.c [2:2]
- source/event_loop.c [2:2]
- source/exponential_backoff_retry_strategy.c [2:2]
- source/file_utils_shared.c [2:2]
- source/host_resolver.c [2:2]
- source/io.c [2:2]
- source/linux/epoll_event_loop.c [2:2]
- source/message_pool.c [2:2]
- source/pki_utils.c [2:2]
- source/posix/file_utils.c [2:2]
- source/posix/host_resolver.c [2:2]
- source/posix/pipe.c [2:2]
- source/posix/shared_library.c [2:2]
- source/posix/socket.c [2:2]
- source/retry_strategy.c [2:2]
- source/s2n/s2n_tls_channel_handler.c [2:2]
- source/socket_channel_handler.c [2:2]
- source/statistics.c [2:2]
- source/stream.c [2:2]
- source/tls_channel_handler.c [2:2]
- source/tls_channel_handler_shared.c [2:2]
- source/uri.c [2:2]
+# File format ($ symbol means the beginning of a line):
+#
+# $ # this message
+# $ # =======================
+# $ # comments (all commentaries should starts with some number of spaces and # symbol)
+# $ IGNORE_FILES {file1.ext1} {file2.ext2} - (optional) ignore listed files when generating license macro and credits
+# $
+# ${action} {license id} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
+# ${all_file_action} filename
+# $ # user commentaries (many lines)
+# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
+# ${action} {license spdx} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/3/ya.make
+# ${all_file_action} filename
+# $ # user commentaries
+# $ generated description
+# $ ...
+#
+# You can modify action, all_file_action and add commentaries
+# Available actions:
+# keep - keep license in contrib and use in credits
+# skip - skip license
+# remove - remove all files with this license
+# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
+#
+# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
+# We suppose that that files can contain some license info
+# Available all file actions:
+# FILE_IGNORE - ignore file (do nothing)
+# FILE_INCLUDE - include all file data into licenses text file
+# =======================
+
+KEEP COPYRIGHT_SERVICE_LABEL 0b26996bfb42c528af128697232328ba
+BELONGS ya.make
+ License text:
+ Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ NOTICE [2:2]
+ include/aws/io/channel.h [4:4]
+ include/aws/io/channel_bootstrap.h [5:5]
+ include/aws/io/event_loop.h [5:5]
+ include/aws/io/exports.h [5:5]
+ include/aws/io/file_utils.h [5:5]
+ include/aws/io/host_resolver.h [4:4]
+ include/aws/io/io.h [5:5]
+ include/aws/io/logging.h [5:5]
+ include/aws/io/message_pool.h [4:4]
+ include/aws/io/pipe.h [5:5]
+ include/aws/io/pki_utils.h [4:4]
+ include/aws/io/private/tls_channel_handler_shared.h [4:4]
+ include/aws/io/retry_strategy.h [4:4]
+ include/aws/io/shared_library.h [5:5]
+ include/aws/io/socket.h [4:4]
+ include/aws/io/socket_channel_handler.h [4:4]
+ include/aws/io/statistics.h [5:5]
+ include/aws/io/stream.h [5:5]
+ include/aws/io/tls_channel_handler.h [4:4]
+ include/aws/io/uri.h [4:4]
+ source/alpn_handler.c [2:2]
+ source/bsd/kqueue_event_loop.c [2:2]
+ source/channel.c [2:2]
+ source/channel_bootstrap.c [2:2]
+ source/event_loop.c [2:2]
+ source/exponential_backoff_retry_strategy.c [2:2]
+ source/file_utils_shared.c [2:2]
+ source/host_resolver.c [2:2]
+ source/io.c [2:2]
+ source/linux/epoll_event_loop.c [2:2]
+ source/message_pool.c [2:2]
+ source/pki_utils.c [2:2]
+ source/posix/file_utils.c [2:2]
+ source/posix/host_resolver.c [2:2]
+ source/posix/pipe.c [2:2]
+ source/posix/shared_library.c [2:2]
+ source/posix/socket.c [2:2]
+ source/retry_strategy.c [2:2]
+ source/s2n/s2n_tls_channel_handler.c [2:2]
+ source/socket_channel_handler.c [2:2]
+ source/statistics.c [2:2]
+ source/stream.c [2:2]
+ source/tls_channel_handler.c [2:2]
+ source/tls_channel_handler_shared.c [2:2]
+ source/uri.c [2:2]
diff --git a/contrib/restricted/aws/aws-c-io/.yandex_meta/devtools.licenses.report b/contrib/restricted/aws/aws-c-io/.yandex_meta/devtools.licenses.report
index 7b20b5568b..c0eaaca480 100644
--- a/contrib/restricted/aws/aws-c-io/.yandex_meta/devtools.licenses.report
+++ b/contrib/restricted/aws/aws-c-io/.yandex_meta/devtools.licenses.report
@@ -1,151 +1,151 @@
-# File format ($ symbol means the beginning of a line):
-#
-# $ # this message
-# $ # =======================
-# $ # comments (all commentaries should starts with some number of spaces and # symbol)
-# $ IGNORE_FILES {file1.ext1} {file2.ext2} - (optional) ignore listed files when generating license macro and credits
-# $
-# ${action} {license id} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
-# ${all_file_action} filename
-# $ # user commentaries (many lines)
-# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
-# ${action} {license spdx} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/3/ya.make
-# ${all_file_action} filename
-# $ # user commentaries
-# $ generated description
-# $ ...
-#
-# You can modify action, all_file_action and add commentaries
-# Available actions:
-# keep - keep license in contrib and use in credits
-# skip - skip license
-# remove - remove all files with this license
-# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
-#
-# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
-# We suppose that that files can contain some license info
-# Available all file actions:
-# FILE_IGNORE - ignore file (do nothing)
-# FILE_INCLUDE - include all file data into licenses text file
-# =======================
-
-KEEP Apache-2.0 1a2162d65587b1c6b4482cab8e65b94f
-BELONGS ya.make
- License text:
- \## License
- This library is licensed under the Apache 2.0 License.
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
- README.md [13:15]
-
-KEEP Apache-2.0 2b42edef8fa55315f34f2370b4715ca9
-BELONGS ya.make
-FILE_INCLUDE NOTICE found in files: LICENSE at line 107, LICENSE at line 110, LICENSE at line 112, LICENSE at line 117, LICENSE at line 120, LICENSE at line 142
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 100.00
- Match type : TEXT
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
- LICENSE [2:202]
-
-KEEP Apache-2.0 43f57e875cdc02e8385ff667f85d702e
-BELONGS ya.make
- License text:
- SPDX-License-Identifier: Apache-2.0.
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 100.00
- Match type : TAG
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
- NOTICE [3:3]
-
-SKIP LicenseRef-scancode-generic-cla 4c121fbba45df428a6eec824e562d4f8
-BELONGS ya.make
- # Skip CLA
- License text:
- Contributor License Agreement (CLA)](
- Scancode info:
- Original SPDX id: LicenseRef-scancode-generic-cla
- Score : 22.00
- Match type : NOTICE
- Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/generic-cla.LICENSE
- Files with this license:
- CONTRIBUTING.md [61:61]
-
-KEEP Apache-2.0 d591512e466bb957030b8857f753349e
-BELONGS ya.make
- License text:
- * SPDX-License-Identifier: Apache-2.0.
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 100.00
- Match type : TAG
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
- include/aws/io/channel.h [5:5]
- include/aws/io/channel_bootstrap.h [6:6]
- include/aws/io/event_loop.h [6:6]
- include/aws/io/exports.h [6:6]
- include/aws/io/file_utils.h [6:6]
- include/aws/io/host_resolver.h [5:5]
- include/aws/io/io.h [6:6]
- include/aws/io/logging.h [6:6]
- include/aws/io/message_pool.h [5:5]
- include/aws/io/pipe.h [6:6]
- include/aws/io/pki_utils.h [5:5]
- include/aws/io/private/tls_channel_handler_shared.h [5:5]
- include/aws/io/retry_strategy.h [5:5]
- include/aws/io/shared_library.h [6:6]
- include/aws/io/socket.h [5:5]
- include/aws/io/socket_channel_handler.h [5:5]
- include/aws/io/statistics.h [6:6]
- include/aws/io/stream.h [6:6]
- include/aws/io/tls_channel_handler.h [5:5]
- include/aws/io/uri.h [5:5]
- source/alpn_handler.c [3:3]
- source/bsd/kqueue_event_loop.c [3:3]
- source/channel.c [3:3]
- source/channel_bootstrap.c [3:3]
- source/event_loop.c [3:3]
- source/exponential_backoff_retry_strategy.c [3:3]
- source/file_utils_shared.c [3:3]
- source/host_resolver.c [3:3]
- source/io.c [3:3]
- source/linux/epoll_event_loop.c [3:3]
- source/message_pool.c [3:3]
- source/pki_utils.c [3:3]
- source/posix/file_utils.c [3:3]
- source/posix/host_resolver.c [3:3]
- source/posix/pipe.c [3:3]
- source/posix/shared_library.c [3:3]
- source/posix/socket.c [3:3]
- source/retry_strategy.c [3:3]
- source/s2n/s2n_tls_channel_handler.c [3:3]
- source/socket_channel_handler.c [3:3]
- source/statistics.c [3:3]
- source/stream.c [3:3]
- source/tls_channel_handler.c [3:3]
- source/tls_channel_handler_shared.c [3:3]
- source/uri.c [3:3]
-
-SKIP LicenseRef-scancode-generic-cla ee24fdc60600747c7d12c32055b0011d
-BELONGS ya.make
- # Skip CLA
- License text:
- Contributor_License_Agreement)
- Scancode info:
- Original SPDX id: LicenseRef-scancode-generic-cla
- Score : 16.00
- Match type : NOTICE
- Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/generic-cla.LICENSE
- Files with this license:
- CONTRIBUTING.md [61:61]
+# File format ($ symbol means the beginning of a line):
+#
+# $ # this message
+# $ # =======================
+# $ # comments (all commentaries should starts with some number of spaces and # symbol)
+# $ IGNORE_FILES {file1.ext1} {file2.ext2} - (optional) ignore listed files when generating license macro and credits
+# $
+# ${action} {license id} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
+# ${all_file_action} filename
+# $ # user commentaries (many lines)
+# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
+# ${action} {license spdx} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/3/ya.make
+# ${all_file_action} filename
+# $ # user commentaries
+# $ generated description
+# $ ...
+#
+# You can modify action, all_file_action and add commentaries
+# Available actions:
+# keep - keep license in contrib and use in credits
+# skip - skip license
+# remove - remove all files with this license
+# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
+#
+# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
+# We suppose that that files can contain some license info
+# Available all file actions:
+# FILE_IGNORE - ignore file (do nothing)
+# FILE_INCLUDE - include all file data into licenses text file
+# =======================
+
+KEEP Apache-2.0 1a2162d65587b1c6b4482cab8e65b94f
+BELONGS ya.make
+ License text:
+ \## License
+ This library is licensed under the Apache 2.0 License.
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ README.md [13:15]
+
+KEEP Apache-2.0 2b42edef8fa55315f34f2370b4715ca9
+BELONGS ya.make
+FILE_INCLUDE NOTICE found in files: LICENSE at line 107, LICENSE at line 110, LICENSE at line 112, LICENSE at line 117, LICENSE at line 120, LICENSE at line 142
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 100.00
+ Match type : TEXT
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ LICENSE [2:202]
+
+KEEP Apache-2.0 43f57e875cdc02e8385ff667f85d702e
+BELONGS ya.make
+ License text:
+ SPDX-License-Identifier: Apache-2.0.
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 100.00
+ Match type : TAG
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ NOTICE [3:3]
+
+SKIP LicenseRef-scancode-generic-cla 4c121fbba45df428a6eec824e562d4f8
+BELONGS ya.make
+ # Skip CLA
+ License text:
+ Contributor License Agreement (CLA)](
+ Scancode info:
+ Original SPDX id: LicenseRef-scancode-generic-cla
+ Score : 22.00
+ Match type : NOTICE
+ Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/generic-cla.LICENSE
+ Files with this license:
+ CONTRIBUTING.md [61:61]
+
+KEEP Apache-2.0 d591512e466bb957030b8857f753349e
+BELONGS ya.make
+ License text:
+ * SPDX-License-Identifier: Apache-2.0.
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 100.00
+ Match type : TAG
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ include/aws/io/channel.h [5:5]
+ include/aws/io/channel_bootstrap.h [6:6]
+ include/aws/io/event_loop.h [6:6]
+ include/aws/io/exports.h [6:6]
+ include/aws/io/file_utils.h [6:6]
+ include/aws/io/host_resolver.h [5:5]
+ include/aws/io/io.h [6:6]
+ include/aws/io/logging.h [6:6]
+ include/aws/io/message_pool.h [5:5]
+ include/aws/io/pipe.h [6:6]
+ include/aws/io/pki_utils.h [5:5]
+ include/aws/io/private/tls_channel_handler_shared.h [5:5]
+ include/aws/io/retry_strategy.h [5:5]
+ include/aws/io/shared_library.h [6:6]
+ include/aws/io/socket.h [5:5]
+ include/aws/io/socket_channel_handler.h [5:5]
+ include/aws/io/statistics.h [6:6]
+ include/aws/io/stream.h [6:6]
+ include/aws/io/tls_channel_handler.h [5:5]
+ include/aws/io/uri.h [5:5]
+ source/alpn_handler.c [3:3]
+ source/bsd/kqueue_event_loop.c [3:3]
+ source/channel.c [3:3]
+ source/channel_bootstrap.c [3:3]
+ source/event_loop.c [3:3]
+ source/exponential_backoff_retry_strategy.c [3:3]
+ source/file_utils_shared.c [3:3]
+ source/host_resolver.c [3:3]
+ source/io.c [3:3]
+ source/linux/epoll_event_loop.c [3:3]
+ source/message_pool.c [3:3]
+ source/pki_utils.c [3:3]
+ source/posix/file_utils.c [3:3]
+ source/posix/host_resolver.c [3:3]
+ source/posix/pipe.c [3:3]
+ source/posix/shared_library.c [3:3]
+ source/posix/socket.c [3:3]
+ source/retry_strategy.c [3:3]
+ source/s2n/s2n_tls_channel_handler.c [3:3]
+ source/socket_channel_handler.c [3:3]
+ source/statistics.c [3:3]
+ source/stream.c [3:3]
+ source/tls_channel_handler.c [3:3]
+ source/tls_channel_handler_shared.c [3:3]
+ source/uri.c [3:3]
+
+SKIP LicenseRef-scancode-generic-cla ee24fdc60600747c7d12c32055b0011d
+BELONGS ya.make
+ # Skip CLA
+ License text:
+ Contributor_License_Agreement)
+ Scancode info:
+ Original SPDX id: LicenseRef-scancode-generic-cla
+ Score : 16.00
+ Match type : NOTICE
+ Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/generic-cla.LICENSE
+ Files with this license:
+ CONTRIBUTING.md [61:61]
diff --git a/contrib/restricted/aws/aws-c-io/.yandex_meta/licenses.list.txt b/contrib/restricted/aws/aws-c-io/.yandex_meta/licenses.list.txt
index 77f7e61932..15c55379f0 100644
--- a/contrib/restricted/aws/aws-c-io/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/aws/aws-c-io/.yandex_meta/licenses.list.txt
@@ -1,224 +1,224 @@
-====================Apache-2.0====================
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
-====================Apache-2.0====================
- * SPDX-License-Identifier: Apache-2.0.
-
-
-====================Apache-2.0====================
-## License
-
-This library is licensed under the Apache 2.0 License.
-
-
-====================Apache-2.0====================
-SPDX-License-Identifier: Apache-2.0.
-
-====================COPYRIGHT====================
-Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
-
-
-====================File: NOTICE====================
-AWS C Io
-Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
-SPDX-License-Identifier: Apache-2.0.
+====================Apache-2.0====================
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+====================Apache-2.0====================
+ * SPDX-License-Identifier: Apache-2.0.
+
+
+====================Apache-2.0====================
+## License
+
+This library is licensed under the Apache 2.0 License.
+
+
+====================Apache-2.0====================
+SPDX-License-Identifier: Apache-2.0.
+
+====================COPYRIGHT====================
+Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+
+
+====================File: NOTICE====================
+AWS C Io
+Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+SPDX-License-Identifier: Apache-2.0.
diff --git a/contrib/restricted/aws/aws-c-io/ya.make b/contrib/restricted/aws/aws-c-io/ya.make
index 5d04a14577..82a9552aae 100644
--- a/contrib/restricted/aws/aws-c-io/ya.make
+++ b/contrib/restricted/aws/aws-c-io/ya.make
@@ -2,17 +2,17 @@
LIBRARY()
-OWNER(
- orivej
- g:cpp-contrib
-)
+OWNER(
+ orivej
+ g:cpp-contrib
+)
VERSION(0.7.0)
LICENSE(Apache-2.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
PEERDIR(
contrib/restricted/aws/aws-c-cal
contrib/restricted/aws/aws-c-common
diff --git a/contrib/restricted/aws/aws-checksums/.yandex_meta/devtools.copyrights.report b/contrib/restricted/aws/aws-checksums/.yandex_meta/devtools.copyrights.report
index e4c3a784b3..e25417daec 100644
--- a/contrib/restricted/aws/aws-checksums/.yandex_meta/devtools.copyrights.report
+++ b/contrib/restricted/aws/aws-checksums/.yandex_meta/devtools.copyrights.report
@@ -1,48 +1,48 @@
-# File format ($ symbol means the beginning of a line):
-#
-# $ # this message
-# $ # =======================
-# $ # comments (all commentaries should starts with some number of spaces and # symbol)
-# $ IGNORE_FILES {file1.ext1} {file2.ext2} - (optional) ignore listed files when generating license macro and credits
-# $
-# ${action} {license id} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
-# ${all_file_action} filename
-# $ # user commentaries (many lines)
-# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
-# ${action} {license spdx} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/3/ya.make
-# ${all_file_action} filename
-# $ # user commentaries
-# $ generated description
-# $ ...
-#
-# You can modify action, all_file_action and add commentaries
-# Available actions:
-# keep - keep license in contrib and use in credits
-# skip - skip license
-# remove - remove all files with this license
-# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
-#
-# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
-# We suppose that that files can contain some license info
-# Available all file actions:
-# FILE_IGNORE - ignore file (do nothing)
-# FILE_INCLUDE - include all file data into licenses text file
-# =======================
-
-KEEP COPYRIGHT_SERVICE_LABEL 0b26996bfb42c528af128697232328ba
-BELONGS ya.make
- License text:
- * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- include/aws/checksums/crc.h [4:4]
- include/aws/checksums/exports.h [4:4]
- include/aws/checksums/private/crc_priv.h [4:4]
- source/crc.c [2:2]
- source/crc_sw.c [2:2]
- source/intel/asm/crc32c_sse42_asm.c [2:2]
+# File format ($ symbol means the beginning of a line):
+#
+# $ # this message
+# $ # =======================
+# $ # comments (all commentaries should starts with some number of spaces and # symbol)
+# $ IGNORE_FILES {file1.ext1} {file2.ext2} - (optional) ignore listed files when generating license macro and credits
+# $
+# ${action} {license id} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
+# ${all_file_action} filename
+# $ # user commentaries (many lines)
+# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
+# ${action} {license spdx} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/3/ya.make
+# ${all_file_action} filename
+# $ # user commentaries
+# $ generated description
+# $ ...
+#
+# You can modify action, all_file_action and add commentaries
+# Available actions:
+# keep - keep license in contrib and use in credits
+# skip - skip license
+# remove - remove all files with this license
+# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
+#
+# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
+# We suppose that that files can contain some license info
+# Available all file actions:
+# FILE_IGNORE - ignore file (do nothing)
+# FILE_INCLUDE - include all file data into licenses text file
+# =======================
+
+KEEP COPYRIGHT_SERVICE_LABEL 0b26996bfb42c528af128697232328ba
+BELONGS ya.make
+ License text:
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ include/aws/checksums/crc.h [4:4]
+ include/aws/checksums/exports.h [4:4]
+ include/aws/checksums/private/crc_priv.h [4:4]
+ source/crc.c [2:2]
+ source/crc_sw.c [2:2]
+ source/intel/asm/crc32c_sse42_asm.c [2:2]
diff --git a/contrib/restricted/aws/aws-checksums/.yandex_meta/devtools.licenses.report b/contrib/restricted/aws/aws-checksums/.yandex_meta/devtools.licenses.report
index bb8a29967d..50bd3a9315 100644
--- a/contrib/restricted/aws/aws-checksums/.yandex_meta/devtools.licenses.report
+++ b/contrib/restricted/aws/aws-checksums/.yandex_meta/devtools.licenses.report
@@ -1,60 +1,60 @@
-# File format ($ symbol means the beginning of a line):
-#
-# $ # this message
-# $ # =======================
-# $ # comments (all commentaries should starts with some number of spaces and # symbol)
-# $ IGNORE_FILES {file1.ext1} {file2.ext2} - (optional) ignore listed files when generating license macro and credits
-# $
-# ${action} {license id} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
-# ${all_file_action} filename
-# $ # user commentaries (many lines)
-# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
-# ${action} {license spdx} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/3/ya.make
-# ${all_file_action} filename
-# $ # user commentaries
-# $ generated description
-# $ ...
-#
-# You can modify action, all_file_action and add commentaries
-# Available actions:
-# keep - keep license in contrib and use in credits
-# skip - skip license
-# remove - remove all files with this license
-# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
-#
-# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
-# We suppose that that files can contain some license info
-# Available all file actions:
-# FILE_IGNORE - ignore file (do nothing)
-# FILE_INCLUDE - include all file data into licenses text file
-# =======================
-
-KEEP Apache-2.0 d591512e466bb957030b8857f753349e
-BELONGS ya.make
- License text:
- * SPDX-License-Identifier: Apache-2.0.
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 100.00
- Match type : TAG
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
- include/aws/checksums/crc.h [5:5]
- include/aws/checksums/exports.h [5:5]
- include/aws/checksums/private/crc_priv.h [5:5]
- source/crc.c [3:3]
- source/crc_sw.c [3:3]
- source/intel/asm/crc32c_sse42_asm.c [3:3]
-
-KEEP Apache-2.0 dc7f21ccff0f672f2a7cd6f412ae627d
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 100.00
- Match type : TEXT
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
- LICENSE [1:201]
+# File format ($ symbol means the beginning of a line):
+#
+# $ # this message
+# $ # =======================
+# $ # comments (all commentaries should starts with some number of spaces and # symbol)
+# $ IGNORE_FILES {file1.ext1} {file2.ext2} - (optional) ignore listed files when generating license macro and credits
+# $
+# ${action} {license id} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
+# ${all_file_action} filename
+# $ # user commentaries (many lines)
+# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
+# ${action} {license spdx} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/3/ya.make
+# ${all_file_action} filename
+# $ # user commentaries
+# $ generated description
+# $ ...
+#
+# You can modify action, all_file_action and add commentaries
+# Available actions:
+# keep - keep license in contrib and use in credits
+# skip - skip license
+# remove - remove all files with this license
+# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
+#
+# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
+# We suppose that that files can contain some license info
+# Available all file actions:
+# FILE_IGNORE - ignore file (do nothing)
+# FILE_INCLUDE - include all file data into licenses text file
+# =======================
+
+KEEP Apache-2.0 d591512e466bb957030b8857f753349e
+BELONGS ya.make
+ License text:
+ * SPDX-License-Identifier: Apache-2.0.
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 100.00
+ Match type : TAG
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ include/aws/checksums/crc.h [5:5]
+ include/aws/checksums/exports.h [5:5]
+ include/aws/checksums/private/crc_priv.h [5:5]
+ source/crc.c [3:3]
+ source/crc_sw.c [3:3]
+ source/intel/asm/crc32c_sse42_asm.c [3:3]
+
+KEEP Apache-2.0 dc7f21ccff0f672f2a7cd6f412ae627d
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 100.00
+ Match type : TEXT
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ LICENSE [1:201]
diff --git a/contrib/restricted/aws/aws-checksums/.yandex_meta/licenses.list.txt b/contrib/restricted/aws/aws-checksums/.yandex_meta/licenses.list.txt
index 3da636df28..884b6d0848 100644
--- a/contrib/restricted/aws/aws-checksums/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/aws/aws-checksums/.yandex_meta/licenses.list.txt
@@ -1,209 +1,209 @@
-====================Apache-2.0====================
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "{}"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright {yyyy} {name of copyright owner}
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
-====================Apache-2.0====================
- * SPDX-License-Identifier: Apache-2.0.
-
-
-====================COPYRIGHT====================
- * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+====================Apache-2.0====================
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "{}"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright {yyyy} {name of copyright owner}
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+====================Apache-2.0====================
+ * SPDX-License-Identifier: Apache-2.0.
+
+
+====================COPYRIGHT====================
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
diff --git a/contrib/restricted/aws/aws-checksums/ya.make b/contrib/restricted/aws/aws-checksums/ya.make
index ebe601b533..a08a095ee1 100644
--- a/contrib/restricted/aws/aws-checksums/ya.make
+++ b/contrib/restricted/aws/aws-checksums/ya.make
@@ -8,8 +8,8 @@ VERSION(0.1.10)
LICENSE(Apache-2.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
PEERDIR(
contrib/restricted/aws/aws-c-common
)
diff --git a/contrib/restricted/boost/.yandex_meta/devtools.copyrights.report b/contrib/restricted/boost/.yandex_meta/devtools.copyrights.report
index 87b38cddec..1685e066d9 100644
--- a/contrib/restricted/boost/.yandex_meta/devtools.copyrights.report
+++ b/contrib/restricted/boost/.yandex_meta/devtools.copyrights.report
@@ -1,38573 +1,38573 @@
-# File format ($ symbol means the beginning of a line):
-#
-# $ # this message
-# $ # =======================
-# $ # comments (all commentaries should starts with some number of spaces and # symbol)
-# $ IGNORE_FILES {file1.ext1} {file2.ext2} - (optional) ignore listed files when generating license macro and credits
-# $
-# ${action} {license id} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
-# ${all_file_action} filename
-# $ # user commentaries (many lines)
-# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
-# ${action} {license spdx} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/3/ya.make
-# ${all_file_action} filename
-# $ # user commentaries
-# $ generated description
-# $ ...
-#
-# You can modify action, all_file_action and add commentaries
-# Available actions:
-# keep - keep license in contrib and use in credits
-# skip - skip license
-# remove - remove all files with this license
-# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
-#
-# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
-# We suppose that that files can contain some license info
-# Available all file actions:
-# FILE_IGNORE - ignore file (do nothing)
-# FILE_INCLUDE - include all file data into licenses text file
-# =======================
-
-KEEP COPYRIGHT_SERVICE_LABEL 000aa9c39050337adeb86ee6154db231
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multi_index/composite_key.hpp at line 3, boost/multi_index/detail/bucket_array.hpp at line 3, boost/multi_index/detail/index_loader.hpp at line 3, boost/multi_index/detail/index_matcher.hpp at line 3, boost/multi_index/detail/ord_index_impl_fwd.hpp at line 3, boost/multi_index/detail/raw_ptr.hpp at line 3, boost/multi_index/detail/rnd_index_ops.hpp at line 3, boost/multi_index/detail/value_compare.hpp at line 3, boost/multi_index/global_fun.hpp at line 3, boost/multi_index/identity.hpp at line 3, boost/multi_index/mem_fun.hpp at line 3, boost/multi_index/member.hpp at line 3, boost/multi_index/ordered_index.hpp at line 3, boost/multi_index/ordered_index_fwd.hpp at line 3, boost/multi_index/ranked_index_fwd.hpp at line 3
- License text:
- /* Copyright 2003-2015 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/multi_index/composite_key.hpp [1:3]
- boost/multi_index/detail/bucket_array.hpp [1:3]
- boost/multi_index/detail/index_loader.hpp [1:3]
- boost/multi_index/detail/index_matcher.hpp [1:3]
- boost/multi_index/detail/ord_index_impl_fwd.hpp [1:3]
- boost/multi_index/detail/raw_ptr.hpp [1:3]
- boost/multi_index/detail/rnd_index_ops.hpp [1:3]
- boost/multi_index/detail/value_compare.hpp [1:3]
- boost/multi_index/global_fun.hpp [1:3]
- boost/multi_index/identity.hpp [1:3]
- boost/multi_index/mem_fun.hpp [1:3]
- boost/multi_index/member.hpp [1:3]
- boost/multi_index/ordered_index.hpp [1:3]
- boost/multi_index/ordered_index_fwd.hpp [1:3]
- boost/multi_index/ranked_index_fwd.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 00306b5bf840cff6a0c995cf8f997dcc
-BELONGS ya.make
- License text:
- // (C) Copyright 2006-7 Anthony Williams
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/once.hpp [6:6]
- boost/thread/win32/recursive_mutex.hpp [6:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 003d8b667a2ab424cd911d3ea9c79f1c
-BELONGS ya.make
- License text:
- // Copyright (c) 2015 Seth Heeren
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/dynamic_bitset/serialization.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 004e570060e5958e19d3656bdcba6398
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/sort/common/util/algorithm.hpp at line 7, boost/sort/common/util/search.hpp at line 6, boost/sort/flat_stable_sort/flat_stable_sort.hpp at line 7
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/sort/common/util/algorithm.hpp [5:7]
- boost/sort/common/util/search.hpp [4:6]
- boost/sort/flat_stable_sort/flat_stable_sort.hpp [5:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 005b001f62b4974bcb9a98a2709f28e9
-BELONGS ya.make
- License text:
- Copyright (c) 2012-2014 Kohei Takahashi
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/adapted/boost_tuple/detail/build_cons.hpp [2:2]
- boost/fusion/adapted/boost_tuple/detail/convert_impl.hpp [2:2]
- boost/fusion/adapted/std_tuple/detail/convert_impl.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 00605b5a81dc767ebe07ddba9503127e
-BELONGS ya.make
- License text:
- // Copyright (c) Intel Corporation 2008.
- // Copyright (c) 2008-2012 Simonson Lucanus.
- // Copyright (c) 2012-2012 Andrii Sydorchuk.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/polygon/interval_concept.hpp [3:5]
- boost/polygon/interval_data.hpp [3:5]
- boost/polygon/interval_traits.hpp [3:5]
- boost/polygon/point_concept.hpp [3:5]
- boost/polygon/point_data.hpp [3:5]
- boost/polygon/point_traits.hpp [3:5]
- boost/polygon/segment_concept.hpp [3:5]
- boost/polygon/segment_data.hpp [3:5]
- boost/polygon/segment_traits.hpp [3:5]
- boost/polygon/transform.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 006976ef6a7e45903db1f49fcdfcfe89
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/concept/detail/backward_compatibility.hpp at line 3
- License text:
- // Copyright David Abrahams 2009. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/concept/detail/backward_compatibility.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 008909fbac0a43c34e66df521b68c9a9
-BELONGS ya.make
- License text:
- // Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com
- // Copyright (c) 2005-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/asio/ssl/detail/impl/openssl_init.ipp [5:6]
- boost/asio/ssl/impl/context.hpp [5:6]
- boost/asio/ssl/impl/context.ipp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 008c19761ea52dc768a48cfd005fd5cc
-BELONGS ya.make
- License text:
- //Copyright (c) 2006-2010 Emil Dotchevski and Reverge Studios, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/exception/detail/error_info_impl.hpp [1:1]
- boost/exception/detail/type_info.hpp [1:1]
- boost/exception/diagnostic_information.hpp [1:1]
- boost/exception/info.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 00c7d0bb63cb71747e934511dcaa5bcc
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2003 Joel de Guzman
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/attribute/parametric.hpp [2:3]
- boost/spirit/home/classic/core/config.hpp [2:3]
- boost/spirit/home/classic/core/nil.hpp [2:3]
- boost/spirit/home/classic/error_handling.hpp [2:3]
- boost/spirit/home/classic/error_handling/exceptions.hpp [2:3]
- boost/spirit/home/classic/error_handling/impl/exceptions.ipp [2:3]
- boost/spirit/home/classic/symbols.hpp [2:3]
- boost/spirit/home/classic/symbols/impl/symbols.ipp [2:3]
- boost/spirit/home/classic/symbols/impl/tst.ipp [2:3]
- boost/spirit/home/classic/symbols/symbols.hpp [2:3]
- boost/spirit/home/classic/utility/impl/chset/range_run.hpp [2:3]
- boost/spirit/home/classic/utility/impl/chset/range_run.ipp [2:3]
- boost/spirit/home/classic/utility/impl/chset_operators.ipp [2:3]
- boost/xpressive/detail/utility/chset/range_run.hpp [2:3]
- boost/xpressive/detail/utility/chset/range_run.ipp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 00d8c23eb547d50de392cb17b51e426e
-BELONGS ya.make
- License text:
- // Copyright 2002 Indiana University.
- // Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/adjacency_iterator.hpp [2:3]
- boost/graph/create_condensation_graph.hpp [2:3]
- boost/graph/dag_shortest_paths.hpp [2:3]
- boost/graph/detail/incremental_components.hpp [2:4]
- boost/graph/detail/list_base.hpp [2:3]
- boost/graph/exception.hpp [2:3]
- boost/graph/graph_archetypes.hpp [2:3]
- boost/graph/graph_selectors.hpp [2:3]
- boost/graph/graph_test.hpp [2:3]
- boost/graph/iteration_macros_undef.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 00f2f63cf7fff1bf2785b395cad0229f
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/extreme_points.hpp [3:6]
- boost/geometry/algorithms/point_on_surface.hpp [3:6]
- boost/geometry/algorithms/remove_spikes.hpp [3:6]
- boost/geometry/multi/algorithms/detail/extreme_points.hpp [3:6]
- boost/geometry/multi/algorithms/remove_spikes.hpp [3:6]
- boost/geometry/strategies/default_strategy.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 012123cc40ba5b305d1f81d16119631e
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/uuid/uuid.hpp at line 5, boost/uuid/uuid_generators.hpp at line 5
- License text:
- // Copyright 2006 Andy Tompkins.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/uuid/uuid.hpp [3:5]
- boost/uuid/uuid_generators.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 015cf966dafcca62c9e1b1bcd80c627a
-BELONGS ya.make
- License text:
- Copyright (c) 2010-2010: Joachim Faulhaber
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/icl/associative_element_container.hpp [2:2]
- boost/icl/associative_interval_container.hpp [2:2]
- boost/icl/closed_interval.hpp [2:2]
- boost/icl/concept/comparable.hpp [2:2]
- boost/icl/concept/container.hpp [2:2]
- boost/icl/concept/element_associator.hpp [2:2]
- boost/icl/concept/element_map.hpp [2:2]
- boost/icl/concept/element_set.hpp [2:2]
- boost/icl/concept/element_set_value.hpp [2:2]
- boost/icl/concept/interval.hpp [2:2]
- boost/icl/concept/interval_associator.hpp [2:2]
- boost/icl/concept/interval_bounds.hpp [2:2]
- boost/icl/concept/interval_map.hpp [2:2]
- boost/icl/concept/interval_set.hpp [2:2]
- boost/icl/concept/interval_set_value.hpp [2:2]
- boost/icl/concept/joinable.hpp [2:2]
- boost/icl/concept/map_value.hpp [2:2]
- boost/icl/concept/set_value.hpp [2:2]
- boost/icl/continuous_interval.hpp [2:2]
- boost/icl/detail/associated_value.hpp [2:2]
- boost/icl/detail/boost_config.hpp [2:2]
- boost/icl/detail/exclusive_less_than.hpp [2:2]
- boost/icl/detail/on_absorbtion.hpp [2:2]
- boost/icl/discrete_interval.hpp [2:2]
- boost/icl/dynamic_interval_traits.hpp [2:2]
- boost/icl/interval.hpp [2:2]
- boost/icl/interval_bounds.hpp [2:2]
- boost/icl/interval_combining_style.hpp [2:2]
- boost/icl/interval_traits.hpp [2:2]
- boost/icl/left_open_interval.hpp [2:2]
- boost/icl/open_interval.hpp [2:2]
- boost/icl/predicates/distinct_equal.hpp [2:2]
- boost/icl/predicates/element_equal.hpp [2:2]
- boost/icl/predicates/std_equal.hpp [2:2]
- boost/icl/predicates/sub_super_set.hpp [2:2]
- boost/icl/right_open_interval.hpp [2:2]
- boost/icl/type_traits/adds_inversely.hpp [2:2]
- boost/icl/type_traits/interval_type_default.hpp [2:2]
- boost/icl/type_traits/interval_type_of.hpp [2:2]
- boost/icl/type_traits/is_asymmetric_interval.hpp [2:2]
- boost/icl/type_traits/is_container.hpp [2:2]
- boost/icl/type_traits/is_continuous_interval.hpp [2:2]
- boost/icl/type_traits/is_discrete_interval.hpp [2:2]
- boost/icl/type_traits/is_icl_container.hpp [2:2]
- boost/icl/type_traits/is_interval.hpp [2:2]
- boost/icl/type_traits/is_key_container_of.hpp [2:2]
- boost/icl/type_traits/is_numeric.hpp [2:2]
- boost/icl/type_traits/predicate.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 017c21e27a172eb4c0008445cc078b79
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2005-2006.
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/tools/precision.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 019f9d2744b88cfb03364a38055e9d75
-BELONGS ya.make
- License text:
- * Copyright 2000 Jens Maurer
- * Copyright 2002 Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/interval.hpp [3:4]
- boost/numeric/interval/checking.hpp [3:3]
- boost/numeric/interval/compare.hpp [3:3]
- boost/numeric/interval/compare/explicit.hpp [3:4]
- boost/numeric/interval/constants.hpp [3:3]
- boost/numeric/interval/detail/bcc_rounding_control.hpp [3:4]
- boost/numeric/interval/detail/bugs.hpp [3:4]
- boost/numeric/interval/detail/c99_rounding_control.hpp [3:4]
- boost/numeric/interval/detail/c99sub_rounding_control.hpp [3:4]
- boost/numeric/interval/detail/interval_prototype.hpp [3:3]
- boost/numeric/interval/detail/msvc_rounding_control.hpp [3:4]
- boost/numeric/interval/detail/ppc_rounding_control.hpp [3:5]
- boost/numeric/interval/detail/sparc_rounding_control.hpp [3:4]
- boost/numeric/interval/detail/test_input.hpp [3:3]
- boost/numeric/interval/detail/x86_rounding_control.hpp [3:4]
- boost/numeric/interval/detail/x86gcc_rounding_control.hpp [3:4]
- boost/numeric/interval/ext/x86_fast_rounding_control.hpp [10:10]
- boost/numeric/interval/hw_rounding.hpp [3:4]
- boost/numeric/interval/transc.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 01a2263079db6c047536246d78a1333b
-BELONGS ya.make
- License text:
- // (C) Copyright John Maddock 2006.
- // (C) Copyright Paul A. Bristow 2006.
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/distributions/complement.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 01a81ecb910aed6636479751cf7bb623
-BELONGS ya.make
- License text:
- // Copyright (c) 2007, 2008, 2012 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/make_shared.hpp [6:6]
- boost/smart_ptr/make_shared_object.hpp [6:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 01a965702801bb82d96654951bc19d2d
-BELONGS ya.make
- License text:
- // Copyright (c) 2006 Piotr Wyderski
- // Copyright (c) 2006 Tomas Puverle
- // Copyright (c) 2006 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp [12:14]
- boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp [11:14]
-
-KEEP COPYRIGHT_SERVICE_LABEL 01ee5bf19060374ef2efda82af9fc108
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/r_c_shortest_paths.hpp at line 5
- License text:
- // Copyright Michael Drexl 2005, 2006.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/r_c_shortest_paths.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0248c07689d63f8e0b5cff0f09a2737a
-BELONGS ya.make
- License text:
- // Copyright (C) 2012 Flavio De Lorenzi (fdlorenzi@gmail.com)
- // Copyright (C) 2013 Jakob Lykke Andersen, University of Southern Denmark (jlandersen@imada.sdu.dk)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/vf2_sub_graph_iso.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 027d3eda5b4664a02a1aa3f742e0b4a6
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/framework/accumulators/value_accumulator.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/accumulators/framework/accumulators/value_accumulator.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 02cd524bdb42667b1b164094ec9971ea
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2007, 2014.
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/zeta.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 02fd0bffdaa1688b60dc1f4a812b1f2f
-BELONGS ya.make
- License text:
- // Copyright (C) 2014 Ian Forbed
- // Copyright (C) 2014-2015 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/executors/detail/scheduled_executor_base.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 030d372089b68ad5c0e8d7e26b7a2a49
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2016.
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/tools/convert_from_string.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 034715b672f9cdb0ea87a4cf900d1042
-BELONGS ya.make
- License text:
- @Copyright Barrett Adair 2015-2017
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/callable_traits.hpp [3:5]
- boost/callable_traits/add_member_const.hpp [3:5]
- boost/callable_traits/add_member_cv.hpp [3:5]
- boost/callable_traits/add_member_lvalue_reference.hpp [3:5]
- boost/callable_traits/add_member_rvalue_reference.hpp [3:5]
- boost/callable_traits/add_member_volatile.hpp [3:5]
- boost/callable_traits/add_noexcept.hpp [4:6]
- boost/callable_traits/add_transaction_safe.hpp [4:6]
- boost/callable_traits/add_varargs.hpp [3:5]
- boost/callable_traits/apply_member_pointer.hpp [3:5]
- boost/callable_traits/apply_return.hpp [3:5]
- boost/callable_traits/args.hpp [3:5]
- boost/callable_traits/class_of.hpp [3:5]
- boost/callable_traits/detail/function.hpp [3:5]
- boost/callable_traits/detail/function_object.hpp [3:5]
- boost/callable_traits/detail/is_invocable_impl.hpp [4:6]
- boost/callable_traits/detail/pmd.hpp [3:5]
- boost/callable_traits/detail/pmf.hpp [3:5]
- boost/callable_traits/detail/polyfills/disjunction.hpp [2:2]
- boost/callable_traits/detail/qualifier_flags.hpp [4:6]
- boost/callable_traits/detail/set_function_qualifiers.hpp [3:5]
- boost/callable_traits/detail/traits.hpp [3:5]
- boost/callable_traits/detail/utility.hpp [3:5]
- boost/callable_traits/function_type.hpp [3:5]
- boost/callable_traits/has_member_qualifiers.hpp [3:5]
- boost/callable_traits/has_varargs.hpp [3:5]
- boost/callable_traits/has_void_return.hpp [3:5]
- boost/callable_traits/is_const_member.hpp [3:5]
- boost/callable_traits/is_cv_member.hpp [3:5]
- boost/callable_traits/is_invocable.hpp [3:5]
- boost/callable_traits/is_lvalue_reference_member.hpp [3:5]
- boost/callable_traits/is_noexcept.hpp [4:6]
- boost/callable_traits/is_reference_member.hpp [3:3]
- boost/callable_traits/is_rvalue_reference_member.hpp [3:3]
- boost/callable_traits/is_transaction_safe.hpp [4:6]
- boost/callable_traits/is_volatile_member.hpp [3:3]
- boost/callable_traits/qualified_class_of.hpp [3:3]
- boost/callable_traits/remove_member_const.hpp [3:5]
- boost/callable_traits/remove_member_cv.hpp [3:3]
- boost/callable_traits/remove_member_reference.hpp [3:5]
- boost/callable_traits/remove_member_volatile.hpp [3:5]
- boost/callable_traits/remove_noexcept.hpp [4:6]
- boost/callable_traits/remove_transaction_safe.hpp [4:6]
- boost/callable_traits/remove_varargs.hpp [3:3]
- boost/callable_traits/return_type.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0363543e4aed1c58c00a8f58244269d4
-BELONGS ya.make
- License text:
- // Copyright 2010-2012, D. E. Shaw Research.
- // All rights reserved.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/compute/random/threefry_engine.hpp [80:81]
-
-KEEP COPYRIGHT_SERVICE_LABEL 037651105b599bc1d49f1042a7b6d202
-BELONGS ya.make
- License text:
- // Copyright 2014 Renato Tegon Forti, Antony Polukhin.
- // Copyright 2015-2018 Antony Polukhin.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/dll/detail/windows/path_from_handle.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0386cefd02bec3ee844a68ba38b58c68
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/sort/spreadsort/detail/constants.hpp at line 5, boost/sort/spreadsort/detail/float_sort.hpp at line 5, boost/sort/spreadsort/detail/integer_sort.hpp at line 5, boost/sort/spreadsort/detail/spreadsort_common.hpp at line 6, boost/sort/spreadsort/detail/string_sort.hpp at line 5, boost/sort/spreadsort/float_sort.hpp at line 5, boost/sort/spreadsort/integer_sort.hpp at line 5
- License text:
- // Copyright Steven J. Ross 2001 - 2014.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/sort/spreadsort/detail/constants.hpp [3:5]
- boost/sort/spreadsort/detail/float_sort.hpp [3:5]
- boost/sort/spreadsort/detail/integer_sort.hpp [3:5]
- boost/sort/spreadsort/detail/spreadsort_common.hpp [4:6]
- boost/sort/spreadsort/detail/string_sort.hpp [3:5]
- boost/sort/spreadsort/float_sort.hpp [3:5]
- boost/sort/spreadsort/integer_sort.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 03af5a3e74f77a31b0cec0862d4d7dd1
-BELONGS ya.make
- License text:
- // Copyright (C) 2002 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
- // Copyright (C) 2002 Gary Powell (gwpowell@hotmail.com)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/lambda/algorithm.hpp [2:3]
- boost/lambda/numeric.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 03b2ff3cf0103db53a801ebd894fc626
-BELONGS ya.make
- License text:
- // This file was modified by Oracle on 2015, 2016.
- // Modifications copyright (c) 2015-2016 Oracle and/or its affiliates.
- // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/strategies/intersection_result.hpp [5:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 03e98967798bfa8e7483019102ccfc68
-BELONGS ya.make
- License text:
- // Copyright (c) 2011
- // Antony Polukhin
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/variant/detail/hash_variant.hpp [6:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 03f0e9f3d8aaf581ab71989e093c5e31
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/extreme_points.hpp [3:6]
- boost/geometry/algorithms/point_on_surface.hpp [3:6]
- boost/geometry/algorithms/remove_spikes.hpp [3:6]
- boost/geometry/multi/algorithms/detail/extreme_points.hpp [3:6]
- boost/geometry/multi/algorithms/remove_spikes.hpp [3:6]
- boost/geometry/strategies/default_strategy.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 03fc205eb6fb14f22d2d4775df350ecf
-BELONGS ya.make
- License text:
- // Copyright (C) 2001-2003
- // William E. Kempf
- // (C) Copyright 2008-9 Anthony Williams
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 03fecff746d0d56d59dcf795117b1f46
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/operators.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/operators.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0419fdd63b42fd26712eab44faf73a27
-BELONGS ya.make
- License text:
- // (C) Copyright 2008-2009,2012 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/strict_lock.hpp [4:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 04ade67f404487552a34a699f18fc488
-BELONGS ya.make
- License text:
- // Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/asio.hpp [5:5]
- boost/asio/associated_allocator.hpp [5:5]
- boost/asio/associated_executor.hpp [5:5]
- boost/asio/async_result.hpp [5:5]
- boost/asio/basic_datagram_socket.hpp [5:5]
- boost/asio/basic_deadline_timer.hpp [5:5]
- boost/asio/basic_io_object.hpp [5:5]
- boost/asio/basic_raw_socket.hpp [5:5]
- boost/asio/basic_seq_packet_socket.hpp [5:5]
- boost/asio/basic_serial_port.hpp [5:6]
- boost/asio/basic_signal_set.hpp [5:5]
- boost/asio/basic_socket.hpp [5:5]
- boost/asio/basic_socket_acceptor.hpp [5:5]
- boost/asio/basic_socket_iostream.hpp [5:5]
- boost/asio/basic_socket_streambuf.hpp [5:5]
- boost/asio/basic_stream_socket.hpp [5:5]
- boost/asio/basic_streambuf.hpp [5:5]
- boost/asio/basic_streambuf_fwd.hpp [5:5]
- boost/asio/basic_waitable_timer.hpp [5:5]
- boost/asio/bind_executor.hpp [5:5]
- boost/asio/buffer.hpp [5:5]
- boost/asio/buffered_read_stream.hpp [5:5]
- boost/asio/buffered_read_stream_fwd.hpp [5:5]
- boost/asio/buffered_stream.hpp [5:5]
- boost/asio/buffered_stream_fwd.hpp [5:5]
- boost/asio/buffered_write_stream.hpp [5:5]
- boost/asio/buffered_write_stream_fwd.hpp [5:5]
- boost/asio/buffers_iterator.hpp [5:5]
- boost/asio/completion_condition.hpp [5:5]
- boost/asio/connect.hpp [5:5]
- boost/asio/coroutine.hpp [5:5]
- boost/asio/datagram_socket_service.hpp [5:5]
- boost/asio/deadline_timer.hpp [5:5]
- boost/asio/deadline_timer_service.hpp [5:5]
- boost/asio/defer.hpp [5:5]
- boost/asio/detail/array.hpp [5:5]
- boost/asio/detail/array_fwd.hpp [5:5]
- boost/asio/detail/assert.hpp [5:5]
- boost/asio/detail/atomic_count.hpp [5:5]
- boost/asio/detail/base_from_completion_cond.hpp [5:5]
- boost/asio/detail/bind_handler.hpp [5:5]
- boost/asio/detail/buffer_resize_guard.hpp [5:5]
- boost/asio/detail/buffer_sequence_adapter.hpp [5:5]
- boost/asio/detail/buffered_stream_storage.hpp [5:5]
- boost/asio/detail/call_stack.hpp [5:5]
- boost/asio/detail/chrono.hpp [5:5]
- boost/asio/detail/chrono_time_traits.hpp [5:5]
- boost/asio/detail/completion_handler.hpp [5:5]
- boost/asio/detail/concurrency_hint.hpp [5:5]
- boost/asio/detail/conditionally_enabled_event.hpp [5:5]
- boost/asio/detail/conditionally_enabled_mutex.hpp [5:5]
- boost/asio/detail/config.hpp [5:5]
- boost/asio/detail/consuming_buffers.hpp [5:5]
- boost/asio/detail/cstddef.hpp [5:5]
- boost/asio/detail/cstdint.hpp [5:5]
- boost/asio/detail/date_time_fwd.hpp [5:5]
- boost/asio/detail/deadline_timer_service.hpp [5:5]
- boost/asio/detail/dependent_type.hpp [5:5]
- boost/asio/detail/descriptor_ops.hpp [5:5]
- boost/asio/detail/descriptor_read_op.hpp [5:5]
- boost/asio/detail/descriptor_write_op.hpp [5:5]
- boost/asio/detail/dev_poll_reactor.hpp [5:5]
- boost/asio/detail/epoll_reactor.hpp [5:5]
- boost/asio/detail/event.hpp [5:5]
- boost/asio/detail/eventfd_select_interrupter.hpp [5:6]
- boost/asio/detail/executor_op.hpp [5:5]
- boost/asio/detail/fd_set_adapter.hpp [5:5]
- boost/asio/detail/fenced_block.hpp [5:5]
- boost/asio/detail/functional.hpp [5:5]
- boost/asio/detail/gcc_arm_fenced_block.hpp [5:5]
- boost/asio/detail/gcc_hppa_fenced_block.hpp [5:5]
- boost/asio/detail/gcc_sync_fenced_block.hpp [5:5]
- boost/asio/detail/gcc_x86_fenced_block.hpp [5:5]
- boost/asio/detail/global.hpp [5:5]
- boost/asio/detail/handler_alloc_helpers.hpp [5:5]
- boost/asio/detail/handler_cont_helpers.hpp [5:5]
- boost/asio/detail/handler_invoke_helpers.hpp [5:5]
- boost/asio/detail/handler_tracking.hpp [5:5]
- boost/asio/detail/handler_type_requirements.hpp [5:5]
- boost/asio/detail/handler_work.hpp [5:5]
- boost/asio/detail/hash_map.hpp [5:5]
- boost/asio/detail/impl/buffer_sequence_adapter.ipp [5:5]
- boost/asio/detail/impl/descriptor_ops.ipp [5:5]
- boost/asio/detail/impl/dev_poll_reactor.hpp [5:5]
- boost/asio/detail/impl/dev_poll_reactor.ipp [5:5]
- boost/asio/detail/impl/epoll_reactor.hpp [5:5]
- boost/asio/detail/impl/epoll_reactor.ipp [5:5]
- boost/asio/detail/impl/eventfd_select_interrupter.ipp [5:6]
- boost/asio/detail/impl/handler_tracking.ipp [5:5]
- boost/asio/detail/impl/kqueue_reactor.hpp [5:6]
- boost/asio/detail/impl/kqueue_reactor.ipp [5:6]
- boost/asio/detail/impl/null_event.ipp [5:5]
- boost/asio/detail/impl/pipe_select_interrupter.ipp [5:5]
- boost/asio/detail/impl/posix_event.ipp [5:5]
- boost/asio/detail/impl/posix_mutex.ipp [5:5]
- boost/asio/detail/impl/posix_thread.ipp [5:5]
- boost/asio/detail/impl/posix_tss_ptr.ipp [5:5]
- boost/asio/detail/impl/reactive_descriptor_service.ipp [5:5]
- boost/asio/detail/impl/reactive_serial_port_service.ipp [5:6]
- boost/asio/detail/impl/reactive_socket_service_base.ipp [5:5]
- boost/asio/detail/impl/resolver_service_base.ipp [5:5]
- boost/asio/detail/impl/scheduler.ipp [5:5]
- boost/asio/detail/impl/select_reactor.hpp [5:5]
- boost/asio/detail/impl/select_reactor.ipp [5:5]
- boost/asio/detail/impl/service_registry.hpp [5:5]
- boost/asio/detail/impl/service_registry.ipp [5:5]
- boost/asio/detail/impl/signal_set_service.ipp [5:5]
- boost/asio/detail/impl/socket_ops.ipp [5:5]
- boost/asio/detail/impl/socket_select_interrupter.ipp [5:5]
- boost/asio/detail/impl/strand_executor_service.hpp [5:5]
- boost/asio/detail/impl/strand_executor_service.ipp [5:5]
- boost/asio/detail/impl/strand_service.hpp [5:5]
- boost/asio/detail/impl/strand_service.ipp [5:5]
- boost/asio/detail/impl/throw_error.ipp [5:5]
- boost/asio/detail/impl/timer_queue_ptime.ipp [5:5]
- boost/asio/detail/impl/timer_queue_set.ipp [5:5]
- boost/asio/detail/impl/win_event.ipp [5:5]
- boost/asio/detail/impl/win_iocp_handle_service.ipp [5:6]
- boost/asio/detail/impl/win_iocp_io_context.hpp [5:5]
- boost/asio/detail/impl/win_iocp_io_context.ipp [5:5]
- boost/asio/detail/impl/win_iocp_serial_port_service.ipp [5:6]
- boost/asio/detail/impl/win_iocp_socket_service_base.ipp [5:5]
- boost/asio/detail/impl/win_mutex.ipp [5:5]
- boost/asio/detail/impl/win_object_handle_service.ipp [5:6]
- boost/asio/detail/impl/win_static_mutex.ipp [5:5]
- boost/asio/detail/impl/win_thread.ipp [5:5]
- boost/asio/detail/impl/win_tss_ptr.ipp [5:5]
- boost/asio/detail/impl/winrt_ssocket_service_base.ipp [5:5]
- boost/asio/detail/impl/winrt_timer_scheduler.hpp [5:5]
- boost/asio/detail/impl/winrt_timer_scheduler.ipp [5:5]
- boost/asio/detail/impl/winsock_init.ipp [5:5]
- boost/asio/detail/io_control.hpp [5:5]
- boost/asio/detail/is_buffer_sequence.hpp [5:5]
- boost/asio/detail/is_executor.hpp [5:5]
- boost/asio/detail/keyword_tss_ptr.hpp [5:5]
- boost/asio/detail/kqueue_reactor.hpp [5:6]
- boost/asio/detail/local_free_on_block_exit.hpp [5:5]
- boost/asio/detail/macos_fenced_block.hpp [5:5]
- boost/asio/detail/memory.hpp [5:5]
- boost/asio/detail/mutex.hpp [5:5]
- boost/asio/detail/noncopyable.hpp [5:5]
- boost/asio/detail/null_event.hpp [5:5]
- boost/asio/detail/null_fenced_block.hpp [5:5]
- boost/asio/detail/null_global.hpp [5:5]
- boost/asio/detail/null_mutex.hpp [5:5]
- boost/asio/detail/null_reactor.hpp [5:5]
- boost/asio/detail/null_signal_blocker.hpp [5:5]
- boost/asio/detail/null_socket_service.hpp [5:5]
- boost/asio/detail/null_static_mutex.hpp [5:5]
- boost/asio/detail/null_thread.hpp [5:5]
- boost/asio/detail/null_tss_ptr.hpp [5:5]
- boost/asio/detail/object_pool.hpp [5:5]
- boost/asio/detail/old_win_sdk_compat.hpp [5:5]
- boost/asio/detail/op_queue.hpp [5:5]
- boost/asio/detail/operation.hpp [5:5]
- boost/asio/detail/pipe_select_interrupter.hpp [5:5]
- boost/asio/detail/pop_options.hpp [5:5]
- boost/asio/detail/posix_event.hpp [5:5]
- boost/asio/detail/posix_fd_set_adapter.hpp [5:5]
- boost/asio/detail/posix_global.hpp [5:5]
- boost/asio/detail/posix_mutex.hpp [5:5]
- boost/asio/detail/posix_signal_blocker.hpp [5:5]
- boost/asio/detail/posix_static_mutex.hpp [5:5]
- boost/asio/detail/posix_thread.hpp [5:5]
- boost/asio/detail/posix_tss_ptr.hpp [5:5]
- boost/asio/detail/push_options.hpp [5:5]
- boost/asio/detail/reactive_descriptor_service.hpp [5:5]
- boost/asio/detail/reactive_null_buffers_op.hpp [5:5]
- boost/asio/detail/reactive_serial_port_service.hpp [5:6]
- boost/asio/detail/reactive_socket_accept_op.hpp [5:5]
- boost/asio/detail/reactive_socket_connect_op.hpp [5:5]
- boost/asio/detail/reactive_socket_recv_op.hpp [5:5]
- boost/asio/detail/reactive_socket_recvfrom_op.hpp [5:5]
- boost/asio/detail/reactive_socket_recvmsg_op.hpp [5:5]
- boost/asio/detail/reactive_socket_send_op.hpp [5:5]
- boost/asio/detail/reactive_socket_sendto_op.hpp [5:5]
- boost/asio/detail/reactive_socket_service.hpp [5:5]
- boost/asio/detail/reactive_socket_service_base.hpp [5:5]
- boost/asio/detail/reactive_wait_op.hpp [5:5]
- boost/asio/detail/reactor.hpp [5:5]
- boost/asio/detail/reactor_fwd.hpp [5:5]
- boost/asio/detail/reactor_op.hpp [5:5]
- boost/asio/detail/reactor_op_queue.hpp [5:5]
- boost/asio/detail/recycling_allocator.hpp [5:5]
- boost/asio/detail/regex_fwd.hpp [5:5]
- boost/asio/detail/resolve_endpoint_op.hpp [5:5]
- boost/asio/detail/resolve_op.hpp [5:5]
- boost/asio/detail/resolve_query_op.hpp [5:5]
- boost/asio/detail/resolver_service.hpp [5:5]
- boost/asio/detail/resolver_service_base.hpp [5:5]
- boost/asio/detail/scheduler.hpp [5:5]
- boost/asio/detail/scheduler_operation.hpp [5:5]
- boost/asio/detail/scheduler_thread_info.hpp [5:5]
- boost/asio/detail/scoped_lock.hpp [5:5]
- boost/asio/detail/scoped_ptr.hpp [5:5]
- boost/asio/detail/select_interrupter.hpp [5:5]
- boost/asio/detail/select_reactor.hpp [5:5]
- boost/asio/detail/service_registry.hpp [5:5]
- boost/asio/detail/signal_blocker.hpp [5:5]
- boost/asio/detail/signal_handler.hpp [5:5]
- boost/asio/detail/signal_init.hpp [5:5]
- boost/asio/detail/signal_op.hpp [5:5]
- boost/asio/detail/signal_set_service.hpp [5:5]
- boost/asio/detail/socket_holder.hpp [5:5]
- boost/asio/detail/socket_ops.hpp [5:5]
- boost/asio/detail/socket_option.hpp [5:5]
- boost/asio/detail/socket_select_interrupter.hpp [5:5]
- boost/asio/detail/socket_types.hpp [5:5]
- boost/asio/detail/solaris_fenced_block.hpp [5:5]
- boost/asio/detail/static_mutex.hpp [5:5]
- boost/asio/detail/std_event.hpp [5:5]
- boost/asio/detail/std_fenced_block.hpp [5:5]
- boost/asio/detail/std_global.hpp [5:5]
- boost/asio/detail/std_mutex.hpp [5:5]
- boost/asio/detail/std_static_mutex.hpp [5:5]
- boost/asio/detail/std_thread.hpp [5:5]
- boost/asio/detail/strand_executor_service.hpp [5:5]
- boost/asio/detail/strand_service.hpp [5:5]
- boost/asio/detail/string_view.hpp [5:5]
- boost/asio/detail/thread.hpp [5:5]
- boost/asio/detail/thread_context.hpp [5:5]
- boost/asio/detail/thread_group.hpp [5:5]
- boost/asio/detail/thread_info_base.hpp [5:5]
- boost/asio/detail/throw_error.hpp [5:5]
- boost/asio/detail/throw_exception.hpp [5:5]
- boost/asio/detail/timer_queue.hpp [5:5]
- boost/asio/detail/timer_queue_base.hpp [5:5]
- boost/asio/detail/timer_queue_ptime.hpp [5:5]
- boost/asio/detail/timer_queue_set.hpp [5:5]
- boost/asio/detail/timer_scheduler.hpp [5:5]
- boost/asio/detail/timer_scheduler_fwd.hpp [5:5]
- boost/asio/detail/tss_ptr.hpp [5:5]
- boost/asio/detail/type_traits.hpp [5:5]
- boost/asio/detail/variadic_templates.hpp [5:5]
- boost/asio/detail/wait_handler.hpp [5:5]
- boost/asio/detail/wait_op.hpp [5:5]
- boost/asio/detail/win_event.hpp [5:5]
- boost/asio/detail/win_fd_set_adapter.hpp [5:5]
- boost/asio/detail/win_fenced_block.hpp [5:5]
- boost/asio/detail/win_global.hpp [5:5]
- boost/asio/detail/win_iocp_handle_read_op.hpp [5:6]
- boost/asio/detail/win_iocp_handle_service.hpp [5:6]
- boost/asio/detail/win_iocp_handle_write_op.hpp [5:6]
- boost/asio/detail/win_iocp_io_context.hpp [5:5]
- boost/asio/detail/win_iocp_null_buffers_op.hpp [5:5]
- boost/asio/detail/win_iocp_operation.hpp [5:5]
- boost/asio/detail/win_iocp_overlapped_op.hpp [5:5]
- boost/asio/detail/win_iocp_overlapped_ptr.hpp [5:5]
- boost/asio/detail/win_iocp_serial_port_service.hpp [5:6]
- boost/asio/detail/win_iocp_socket_accept_op.hpp [5:5]
- boost/asio/detail/win_iocp_socket_connect_op.hpp [5:5]
- boost/asio/detail/win_iocp_socket_recv_op.hpp [5:5]
- boost/asio/detail/win_iocp_socket_recvfrom_op.hpp [5:5]
- boost/asio/detail/win_iocp_socket_recvmsg_op.hpp [5:5]
- boost/asio/detail/win_iocp_socket_send_op.hpp [5:5]
- boost/asio/detail/win_iocp_socket_service.hpp [5:5]
- boost/asio/detail/win_iocp_socket_service_base.hpp [5:5]
- boost/asio/detail/win_iocp_thread_info.hpp [5:5]
- boost/asio/detail/win_iocp_wait_op.hpp [5:5]
- boost/asio/detail/win_mutex.hpp [5:5]
- boost/asio/detail/win_object_handle_service.hpp [5:6]
- boost/asio/detail/win_static_mutex.hpp [5:5]
- boost/asio/detail/win_thread.hpp [5:5]
- boost/asio/detail/win_tss_ptr.hpp [5:5]
- boost/asio/detail/winapp_thread.hpp [5:5]
- boost/asio/detail/wince_thread.hpp [5:5]
- boost/asio/detail/winrt_async_manager.hpp [5:5]
- boost/asio/detail/winrt_async_op.hpp [5:5]
- boost/asio/detail/winrt_resolve_op.hpp [5:5]
- boost/asio/detail/winrt_resolver_service.hpp [5:5]
- boost/asio/detail/winrt_socket_connect_op.hpp [5:5]
- boost/asio/detail/winrt_socket_recv_op.hpp [5:5]
- boost/asio/detail/winrt_socket_send_op.hpp [5:5]
- boost/asio/detail/winrt_ssocket_service.hpp [5:5]
- boost/asio/detail/winrt_ssocket_service_base.hpp [5:5]
- boost/asio/detail/winrt_timer_scheduler.hpp [5:5]
- boost/asio/detail/winrt_utils.hpp [5:5]
- boost/asio/detail/winsock_init.hpp [5:5]
- boost/asio/detail/work_dispatcher.hpp [5:5]
- boost/asio/detail/wrapped_handler.hpp [5:5]
- boost/asio/dispatch.hpp [5:5]
- boost/asio/error.hpp [5:5]
- boost/asio/execution_context.hpp [5:5]
- boost/asio/executor.hpp [5:5]
- boost/asio/executor_work_guard.hpp [5:5]
- boost/asio/experimental/co_spawn.hpp [5:5]
- boost/asio/experimental/detached.hpp [5:5]
- boost/asio/experimental/impl/co_spawn.hpp [5:5]
- boost/asio/experimental/impl/detached.hpp [5:5]
- boost/asio/experimental/impl/redirect_error.hpp [5:5]
- boost/asio/experimental/redirect_error.hpp [5:5]
- boost/asio/generic/basic_endpoint.hpp [5:5]
- boost/asio/generic/datagram_protocol.hpp [5:5]
- boost/asio/generic/detail/endpoint.hpp [5:5]
- boost/asio/generic/detail/impl/endpoint.ipp [5:5]
- boost/asio/generic/raw_protocol.hpp [5:5]
- boost/asio/generic/seq_packet_protocol.hpp [5:5]
- boost/asio/generic/stream_protocol.hpp [5:5]
- boost/asio/handler_alloc_hook.hpp [5:5]
- boost/asio/handler_continuation_hook.hpp [5:5]
- boost/asio/handler_invoke_hook.hpp [5:5]
- boost/asio/handler_type.hpp [5:5]
- boost/asio/high_resolution_timer.hpp [5:5]
- boost/asio/impl/buffered_read_stream.hpp [5:5]
- boost/asio/impl/buffered_write_stream.hpp [5:5]
- boost/asio/impl/connect.hpp [5:5]
- boost/asio/impl/defer.hpp [5:5]
- boost/asio/impl/dispatch.hpp [5:5]
- boost/asio/impl/error.ipp [5:5]
- boost/asio/impl/execution_context.hpp [5:5]
- boost/asio/impl/execution_context.ipp [5:5]
- boost/asio/impl/executor.hpp [5:5]
- boost/asio/impl/executor.ipp [5:5]
- boost/asio/impl/handler_alloc_hook.ipp [5:5]
- boost/asio/impl/io_context.hpp [5:5]
- boost/asio/impl/io_context.ipp [5:5]
- boost/asio/impl/post.hpp [5:5]
- boost/asio/impl/read.hpp [5:5]
- boost/asio/impl/read_at.hpp [5:5]
- boost/asio/impl/read_until.hpp [5:5]
- boost/asio/impl/serial_port_base.hpp [5:6]
- boost/asio/impl/serial_port_base.ipp [5:6]
- boost/asio/impl/spawn.hpp [5:5]
- boost/asio/impl/src.cpp [5:5]
- boost/asio/impl/src.hpp [5:5]
- boost/asio/impl/system_context.hpp [5:5]
- boost/asio/impl/system_context.ipp [5:5]
- boost/asio/impl/system_executor.hpp [5:5]
- boost/asio/impl/thread_pool.hpp [5:5]
- boost/asio/impl/thread_pool.ipp [5:5]
- boost/asio/impl/use_future.hpp [5:5]
- boost/asio/impl/write.hpp [5:5]
- boost/asio/impl/write_at.hpp [5:5]
- boost/asio/io_context.hpp [5:5]
- boost/asio/io_context_strand.hpp [5:5]
- boost/asio/io_service.hpp [5:5]
- boost/asio/io_service_strand.hpp [5:5]
- boost/asio/ip/address.hpp [5:5]
- boost/asio/ip/address_v4.hpp [5:5]
- boost/asio/ip/address_v4_iterator.hpp [5:5]
- boost/asio/ip/address_v4_range.hpp [5:5]
- boost/asio/ip/address_v6.hpp [5:5]
- boost/asio/ip/address_v6_iterator.hpp [5:6]
- boost/asio/ip/address_v6_range.hpp [5:6]
- boost/asio/ip/bad_address_cast.hpp [5:5]
- boost/asio/ip/basic_endpoint.hpp [5:5]
- boost/asio/ip/basic_resolver.hpp [5:5]
- boost/asio/ip/basic_resolver_entry.hpp [5:5]
- boost/asio/ip/basic_resolver_iterator.hpp [5:5]
- boost/asio/ip/basic_resolver_query.hpp [5:5]
- boost/asio/ip/basic_resolver_results.hpp [5:5]
- boost/asio/ip/detail/endpoint.hpp [5:5]
- boost/asio/ip/detail/impl/endpoint.ipp [5:5]
- boost/asio/ip/detail/socket_option.hpp [5:5]
- boost/asio/ip/host_name.hpp [5:5]
- boost/asio/ip/icmp.hpp [5:5]
- boost/asio/ip/impl/address.hpp [5:5]
- boost/asio/ip/impl/address.ipp [5:5]
- boost/asio/ip/impl/address_v4.hpp [5:5]
- boost/asio/ip/impl/address_v4.ipp [5:5]
- boost/asio/ip/impl/address_v6.hpp [5:5]
- boost/asio/ip/impl/address_v6.ipp [5:5]
- boost/asio/ip/impl/basic_endpoint.hpp [5:5]
- boost/asio/ip/impl/host_name.ipp [5:5]
- boost/asio/ip/impl/network_v4.hpp [5:6]
- boost/asio/ip/impl/network_v4.ipp [5:6]
- boost/asio/ip/impl/network_v6.hpp [5:5]
- boost/asio/ip/impl/network_v6.ipp [5:6]
- boost/asio/ip/multicast.hpp [5:5]
- boost/asio/ip/network_v4.hpp [5:6]
- boost/asio/ip/network_v6.hpp [5:6]
- boost/asio/ip/resolver_base.hpp [5:5]
- boost/asio/ip/resolver_query_base.hpp [5:5]
- boost/asio/ip/resolver_service.hpp [5:5]
- boost/asio/ip/tcp.hpp [5:5]
- boost/asio/ip/udp.hpp [5:5]
- boost/asio/ip/unicast.hpp [5:5]
- boost/asio/ip/v6_only.hpp [5:5]
- boost/asio/is_executor.hpp [5:5]
- boost/asio/is_read_buffered.hpp [5:5]
- boost/asio/is_write_buffered.hpp [5:5]
- boost/asio/local/basic_endpoint.hpp [5:6]
- boost/asio/local/connect_pair.hpp [5:5]
- boost/asio/local/datagram_protocol.hpp [5:5]
- boost/asio/local/detail/endpoint.hpp [5:6]
- boost/asio/local/detail/impl/endpoint.ipp [5:6]
- boost/asio/local/stream_protocol.hpp [5:5]
- boost/asio/packaged_task.hpp [5:5]
- boost/asio/placeholders.hpp [5:5]
- boost/asio/posix/basic_descriptor.hpp [5:5]
- boost/asio/posix/basic_stream_descriptor.hpp [5:5]
- boost/asio/posix/descriptor.hpp [5:5]
- boost/asio/posix/descriptor_base.hpp [5:5]
- boost/asio/posix/stream_descriptor.hpp [5:5]
- boost/asio/posix/stream_descriptor_service.hpp [5:5]
- boost/asio/post.hpp [5:5]
- boost/asio/raw_socket_service.hpp [5:5]
- boost/asio/read.hpp [5:5]
- boost/asio/read_at.hpp [5:5]
- boost/asio/read_until.hpp [5:5]
- boost/asio/seq_packet_socket_service.hpp [5:5]
- boost/asio/serial_port.hpp [5:6]
- boost/asio/serial_port_base.hpp [5:6]
- boost/asio/serial_port_service.hpp [5:5]
- boost/asio/signal_set.hpp [5:5]
- boost/asio/signal_set_service.hpp [5:5]
- boost/asio/socket_acceptor_service.hpp [5:5]
- boost/asio/socket_base.hpp [5:5]
- boost/asio/spawn.hpp [5:5]
- boost/asio/ssl.hpp [5:5]
- boost/asio/ssl/context.hpp [5:5]
- boost/asio/ssl/context_base.hpp [5:5]
- boost/asio/ssl/detail/buffered_handshake_op.hpp [5:5]
- boost/asio/ssl/detail/engine.hpp [5:5]
- boost/asio/ssl/detail/handshake_op.hpp [5:5]
- boost/asio/ssl/detail/impl/engine.ipp [5:5]
- boost/asio/ssl/detail/io.hpp [5:5]
- boost/asio/ssl/detail/openssl_init.hpp [5:5]
- boost/asio/ssl/detail/openssl_types.hpp [5:5]
- boost/asio/ssl/detail/password_callback.hpp [5:5]
- boost/asio/ssl/detail/read_op.hpp [5:5]
- boost/asio/ssl/detail/shutdown_op.hpp [5:5]
- boost/asio/ssl/detail/stream_core.hpp [5:5]
- boost/asio/ssl/detail/verify_callback.hpp [5:5]
- boost/asio/ssl/detail/write_op.hpp [5:5]
- boost/asio/ssl/error.hpp [5:5]
- boost/asio/ssl/impl/error.ipp [5:5]
- boost/asio/ssl/impl/rfc2818_verification.ipp [5:5]
- boost/asio/ssl/impl/src.hpp [5:5]
- boost/asio/ssl/rfc2818_verification.hpp [5:5]
- boost/asio/ssl/stream.hpp [5:5]
- boost/asio/ssl/stream_base.hpp [5:5]
- boost/asio/ssl/verify_context.hpp [5:5]
- boost/asio/ssl/verify_mode.hpp [5:5]
- boost/asio/steady_timer.hpp [5:5]
- boost/asio/strand.hpp [5:5]
- boost/asio/stream_socket_service.hpp [5:5]
- boost/asio/streambuf.hpp [5:5]
- boost/asio/system_context.hpp [5:5]
- boost/asio/system_executor.hpp [5:5]
- boost/asio/system_timer.hpp [5:5]
- boost/asio/thread_pool.hpp [5:5]
- boost/asio/time_traits.hpp [5:5]
- boost/asio/ts/buffer.hpp [5:5]
- boost/asio/ts/executor.hpp [5:5]
- boost/asio/ts/internet.hpp [5:5]
- boost/asio/ts/io_context.hpp [5:5]
- boost/asio/ts/net.hpp [5:5]
- boost/asio/ts/netfwd.hpp [5:5]
- boost/asio/ts/socket.hpp [5:5]
- boost/asio/ts/timer.hpp [5:5]
- boost/asio/unyield.hpp [5:5]
- boost/asio/use_future.hpp [5:5]
- boost/asio/uses_executor.hpp [5:5]
- boost/asio/version.hpp [5:5]
- boost/asio/wait_traits.hpp [5:5]
- boost/asio/waitable_timer_service.hpp [5:5]
- boost/asio/windows/basic_handle.hpp [5:5]
- boost/asio/windows/basic_object_handle.hpp [5:6]
- boost/asio/windows/basic_random_access_handle.hpp [5:5]
- boost/asio/windows/basic_stream_handle.hpp [5:5]
- boost/asio/windows/object_handle.hpp [5:6]
- boost/asio/windows/object_handle_service.hpp [5:6]
- boost/asio/windows/overlapped_handle.hpp [5:5]
- boost/asio/windows/overlapped_ptr.hpp [5:5]
- boost/asio/windows/random_access_handle.hpp [5:5]
- boost/asio/windows/random_access_handle_service.hpp [5:5]
- boost/asio/windows/stream_handle.hpp [5:5]
- boost/asio/windows/stream_handle_service.hpp [5:5]
- boost/asio/write.hpp [5:5]
- boost/asio/write_at.hpp [5:5]
- boost/asio/yield.hpp [5:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 04c0ce13b53ae65fb4aacbc3f256260b
-BELONGS libs/thread/ya.make ya.make
- License text:
- // Copyright (C) 2002-2003
- // David Moore, William E. Kempf
- // Copyright (C) 2007-8 Anthony Williams
- // (C) Copyright 2013 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/barrier.hpp [1:4]
- boost/thread/xtime.hpp [1:3]
- libs/thread/src/pthread/thread.cpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 04cecc1df68d72027d7355d714a17662
-BELONGS ya.make
- License text:
- // Copyright (c) 2017, Oracle and/or its affiliates.
- // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/srs/epsg.hpp [3:4]
- boost/geometry/srs/esri.hpp [3:4]
- boost/geometry/srs/iau2000.hpp [3:4]
- boost/geometry/srs/projections/code.hpp [3:4]
- boost/geometry/srs/projections/epsg_params.hpp [3:4]
- boost/geometry/srs/projections/esri.hpp [3:4]
- boost/geometry/srs/projections/esri_params.hpp [3:4]
- boost/geometry/srs/projections/iau2000.hpp [3:4]
- boost/geometry/srs/projections/iau2000_params.hpp [3:4]
- boost/geometry/srs/projections/proj4.hpp [3:4]
- boost/geometry/srs/projections/srid_traits.hpp [3:4]
- boost/geometry/srs/transformation.hpp [3:4]
- boost/geometry/strategies/densify.hpp [3:3]
- boost/geometry/strategies/disjoint.hpp [3:5]
- boost/geometry/strategies/geographic/parameters.hpp [3:4]
- boost/geometry/strategies/relate.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 050be61242b0e0219d0b0f3ddd65a898
-BELONGS libs/container/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/detail/allocator_version_traits.hpp at line 5, boost/container/throw_exception.hpp at line 5, boost/interprocess/sync/detail/common_algorithms.hpp at line 5, libs/container/src/alloc_lib.c at line 5, libs/container/src/dlmalloc.cpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2012-2013. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/container/detail/allocator_version_traits.hpp [3:5]
- boost/container/throw_exception.hpp [3:5]
- boost/interprocess/sync/detail/common_algorithms.hpp [3:5]
- libs/container/src/alloc_lib.c [3:5]
- libs/container/src/dlmalloc.cpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 05315046bb027181af9335ba79128e08
-BELONGS ya.make
- License text:
- // Copyright (c) 2013 Kyle Lutz <kyle.r.lutz@gmail.com>
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/compute.hpp [2:2]
- boost/compute/algorithm.hpp [2:2]
- boost/compute/algorithm/accumulate.hpp [2:2]
- boost/compute/algorithm/all_of.hpp [2:2]
- boost/compute/algorithm/any_of.hpp [2:2]
- boost/compute/algorithm/binary_search.hpp [2:2]
- boost/compute/algorithm/copy.hpp [2:2]
- boost/compute/algorithm/copy_if.hpp [2:2]
- boost/compute/algorithm/copy_n.hpp [2:2]
- boost/compute/algorithm/count.hpp [2:2]
- boost/compute/algorithm/count_if.hpp [2:2]
- boost/compute/algorithm/detail/copy_on_device.hpp [2:2]
- boost/compute/algorithm/detail/copy_to_device.hpp [2:2]
- boost/compute/algorithm/detail/copy_to_host.hpp [2:2]
- boost/compute/algorithm/detail/count_if_with_ballot.hpp [2:2]
- boost/compute/algorithm/detail/count_if_with_reduce.hpp [2:2]
- boost/compute/algorithm/detail/count_if_with_threads.hpp [2:2]
- boost/compute/algorithm/detail/find_extrema.hpp [2:2]
- boost/compute/algorithm/detail/find_extrema_with_atomics.hpp [2:2]
- boost/compute/algorithm/detail/find_if_with_atomics.hpp [2:2]
- boost/compute/algorithm/detail/inplace_reduce.hpp [2:2]
- boost/compute/algorithm/detail/insertion_sort.hpp [2:2]
- boost/compute/algorithm/detail/radix_sort.hpp [2:2]
- boost/compute/algorithm/detail/random_fill.hpp [2:2]
- boost/compute/algorithm/detail/reduce_on_gpu.hpp [2:2]
- boost/compute/algorithm/detail/scan.hpp [2:2]
- boost/compute/algorithm/detail/scan_on_gpu.hpp [2:2]
- boost/compute/algorithm/detail/serial_accumulate.hpp [2:2]
- boost/compute/algorithm/detail/serial_count_if.hpp [2:2]
- boost/compute/algorithm/detail/serial_find_extrema.hpp [2:2]
- boost/compute/algorithm/detail/serial_merge.hpp [2:2]
- boost/compute/algorithm/detail/serial_reduce.hpp [2:2]
- boost/compute/algorithm/detail/serial_scan.hpp [2:2]
- boost/compute/algorithm/equal.hpp [2:2]
- boost/compute/algorithm/equal_range.hpp [2:2]
- boost/compute/algorithm/exclusive_scan.hpp [2:2]
- boost/compute/algorithm/fill.hpp [2:2]
- boost/compute/algorithm/fill_n.hpp [2:2]
- boost/compute/algorithm/find.hpp [2:2]
- boost/compute/algorithm/find_if.hpp [2:2]
- boost/compute/algorithm/find_if_not.hpp [2:2]
- boost/compute/algorithm/for_each.hpp [2:2]
- boost/compute/algorithm/gather.hpp [2:2]
- boost/compute/algorithm/generate.hpp [2:2]
- boost/compute/algorithm/generate_n.hpp [2:2]
- boost/compute/algorithm/inclusive_scan.hpp [2:2]
- boost/compute/algorithm/inner_product.hpp [2:2]
- boost/compute/algorithm/inplace_merge.hpp [2:2]
- boost/compute/algorithm/iota.hpp [2:2]
- boost/compute/algorithm/is_partitioned.hpp [2:2]
- boost/compute/algorithm/lower_bound.hpp [2:2]
- boost/compute/algorithm/max_element.hpp [2:2]
- boost/compute/algorithm/merge.hpp [2:2]
- boost/compute/algorithm/min_element.hpp [2:2]
- boost/compute/algorithm/minmax_element.hpp [2:2]
- boost/compute/algorithm/mismatch.hpp [2:2]
- boost/compute/algorithm/none_of.hpp [2:2]
- boost/compute/algorithm/nth_element.hpp [2:2]
- boost/compute/algorithm/partial_sum.hpp [2:2]
- boost/compute/algorithm/partition.hpp [2:2]
- boost/compute/algorithm/partition_copy.hpp [2:2]
- boost/compute/algorithm/random_shuffle.hpp [2:2]
- boost/compute/algorithm/reduce.hpp [2:2]
- boost/compute/algorithm/remove.hpp [2:2]
- boost/compute/algorithm/remove_if.hpp [2:2]
- boost/compute/algorithm/replace.hpp [2:2]
- boost/compute/algorithm/replace_copy.hpp [2:2]
- boost/compute/algorithm/reverse.hpp [2:2]
- boost/compute/algorithm/reverse_copy.hpp [2:2]
- boost/compute/algorithm/scatter.hpp [2:2]
- boost/compute/algorithm/sort.hpp [2:2]
- boost/compute/algorithm/sort_by_key.hpp [2:2]
- boost/compute/algorithm/stable_sort.hpp [2:2]
- boost/compute/algorithm/swap_ranges.hpp [2:2]
- boost/compute/algorithm/transform.hpp [2:2]
- boost/compute/algorithm/transform_reduce.hpp [2:2]
- boost/compute/algorithm/upper_bound.hpp [2:2]
- boost/compute/async.hpp [2:2]
- boost/compute/async/future.hpp [2:2]
- boost/compute/buffer.hpp [2:2]
- boost/compute/cl.hpp [2:2]
- boost/compute/cl_ext.hpp [2:2]
- boost/compute/command_queue.hpp [2:2]
- boost/compute/config.hpp [2:2]
- boost/compute/container.hpp [2:2]
- boost/compute/container/array.hpp [2:2]
- boost/compute/container/basic_string.hpp [2:2]
- boost/compute/container/detail/scalar.hpp [2:2]
- boost/compute/container/flat_map.hpp [2:2]
- boost/compute/container/flat_set.hpp [2:2]
- boost/compute/container/stack.hpp [2:2]
- boost/compute/container/string.hpp [2:2]
- boost/compute/container/valarray.hpp [2:2]
- boost/compute/container/vector.hpp [2:2]
- boost/compute/context.hpp [2:2]
- boost/compute/detail/assert_cl_success.hpp [2:2]
- boost/compute/detail/buffer_value.hpp [2:2]
- boost/compute/detail/device_ptr.hpp [2:2]
- boost/compute/detail/is_buffer_iterator.hpp [2:2]
- boost/compute/detail/is_contiguous_iterator.hpp [2:2]
- boost/compute/detail/iterator_plus_distance.hpp [2:2]
- boost/compute/detail/iterator_range_size.hpp [2:2]
- boost/compute/detail/iterator_traits.hpp [2:2]
- boost/compute/detail/lru_cache.hpp [2:2]
- boost/compute/detail/meta_kernel.hpp [2:2]
- boost/compute/detail/mpl_vector_to_tuple.hpp [2:2]
- boost/compute/detail/print_range.hpp [2:2]
- boost/compute/detail/read_write_single_value.hpp [2:2]
- boost/compute/device.hpp [2:2]
- boost/compute/event.hpp [2:2]
- boost/compute/exception.hpp [2:2]
- boost/compute/exception/context_error.hpp [2:2]
- boost/compute/exception/opencl_error.hpp [2:2]
- boost/compute/experimental/clamp_range.hpp [2:2]
- boost/compute/experimental/malloc.hpp [2:2]
- boost/compute/experimental/sort_by_transform.hpp [2:2]
- boost/compute/experimental/tabulate.hpp [2:2]
- boost/compute/function.hpp [2:2]
- boost/compute/functional.hpp [2:2]
- boost/compute/functional/as.hpp [2:2]
- boost/compute/functional/atomic.hpp [2:2]
- boost/compute/functional/common.hpp [2:2]
- boost/compute/functional/convert.hpp [2:2]
- boost/compute/functional/detail/macros.hpp [2:2]
- boost/compute/functional/detail/nvidia_ballot.hpp [2:2]
- boost/compute/functional/detail/nvidia_popcount.hpp [2:2]
- boost/compute/functional/detail/unpack.hpp [2:2]
- boost/compute/functional/field.hpp [2:2]
- boost/compute/functional/geometry.hpp [2:2]
- boost/compute/functional/get.hpp [2:2]
- boost/compute/functional/integer.hpp [2:2]
- boost/compute/functional/logical.hpp [2:2]
- boost/compute/functional/math.hpp [2:2]
- boost/compute/functional/operator.hpp [2:2]
- boost/compute/functional/relational.hpp [2:2]
- boost/compute/iterator.hpp [2:2]
- boost/compute/iterator/buffer_iterator.hpp [2:2]
- boost/compute/iterator/constant_buffer_iterator.hpp [2:2]
- boost/compute/iterator/constant_iterator.hpp [2:2]
- boost/compute/iterator/counting_iterator.hpp [2:2]
- boost/compute/iterator/detail/get_base_iterator_buffer.hpp [2:2]
- boost/compute/iterator/detail/swizzle_iterator.hpp [2:2]
- boost/compute/iterator/function_input_iterator.hpp [2:2]
- boost/compute/iterator/permutation_iterator.hpp [2:2]
- boost/compute/iterator/transform_iterator.hpp [2:2]
- boost/compute/iterator/zip_iterator.hpp [2:2]
- boost/compute/kernel.hpp [2:2]
- boost/compute/lambda.hpp [2:2]
- boost/compute/lambda/context.hpp [2:2]
- boost/compute/lambda/functional.hpp [2:2]
- boost/compute/lambda/placeholders.hpp [2:2]
- boost/compute/lambda/result_of.hpp [2:2]
- boost/compute/memory_object.hpp [2:2]
- boost/compute/platform.hpp [2:2]
- boost/compute/program.hpp [2:2]
- boost/compute/random.hpp [2:2]
- boost/compute/random/default_random_engine.hpp [2:2]
- boost/compute/random/mersenne_twister_engine.hpp [2:2]
- boost/compute/random/uniform_real_distribution.hpp [2:2]
- boost/compute/system.hpp [2:2]
- boost/compute/type_traits.hpp [2:2]
- boost/compute/type_traits/common_type.hpp [2:2]
- boost/compute/type_traits/is_vector_type.hpp [2:2]
- boost/compute/type_traits/make_vector_type.hpp [2:2]
- boost/compute/type_traits/scalar_type.hpp [2:2]
- boost/compute/type_traits/type_name.hpp [2:2]
- boost/compute/type_traits/vector_size.hpp [2:2]
- boost/compute/types.hpp [2:2]
- boost/compute/types/complex.hpp [2:2]
- boost/compute/types/pair.hpp [2:2]
- boost/compute/types/tuple.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 054553d0fbd7cb00c6d1e840b41b53ac
-BELONGS ya.make
- License text:
- * Copyright (c) 2015 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/atomic/detail/extra_ops_gcc_x86.hpp [6:6]
- boost/atomic/detail/extra_ops_generic.hpp [6:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 057fa7d33dfe57ec2b0718b45c7b3317
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/metaparse/error/unpaired.hpp at line 6, boost/metaparse/fail_at_first_char_expected.hpp at line 6, boost/metaparse/foldl_reject_incomplete.hpp at line 6, boost/metaparse/foldl_reject_incomplete1.hpp at line 6, boost/metaparse/foldl_reject_incomplete_start_with_parser.hpp at line 6, boost/metaparse/foldr_reject_incomplete.hpp at line 6, boost/metaparse/foldr_reject_incomplete1.hpp at line 6, boost/metaparse/optional.hpp at line 6, boost/metaparse/repeated_reject_incomplete.hpp at line 6, boost/metaparse/repeated_reject_incomplete1.hpp at line 6, boost/metaparse/sequence_apply.hpp at line 6, boost/metaparse/transform_error.hpp at line 6, boost/metaparse/transform_error_message.hpp at line 6, boost/metaparse/v1/error/expected_to_fail.hpp at line 6, boost/metaparse/v1/error/unpaired.hpp at line 6, boost/metaparse/v1/fail_at_first_char_expected.hpp at line 6, boost/metaparse/v1/foldl_reject_incomplete.hpp at line 6, boost/metaparse/v1/foldl_reject_incomplete1.hpp at line 6, boost/metaparse/v1/foldl_reject_incomplete_start_with_parser.hpp at line 6, boost/metaparse/v1/foldr_reject_incomplete.hpp at line 6, boost/metaparse/v1/foldr_reject_incomplete1.hpp at line 6, boost/metaparse/v1/impl/back_inserter.hpp at line 6, boost/metaparse/v1/impl/front_inserter.hpp at line 6, boost/metaparse/v1/impl/is_char_c.hpp at line 6, boost/metaparse/v1/impl/later_result.hpp at line 6, boost/metaparse/v1/impl/next_digit.hpp at line 6, boost/metaparse/v1/impl/one_of_fwd_op.hpp at line 6, boost/metaparse/v1/impl/void_.hpp at line 6, boost/metaparse/v1/optional.hpp at line 6, boost/metaparse/v1/repeated_reject_incomplete.hpp at line 6, boost/metaparse/v1/repeated_reject_incomplete1.hpp at line 6, boost/metaparse/v1/sequence_apply.hpp at line 6, boost/metaparse/v1/swap.hpp at line 6, boost/metaparse/v1/transform_error.hpp at line 6, boost/metaparse/v1/transform_error_message.hpp at line 6, boost/metaparse/version.hpp at line 6
- License text:
- // Copyright Abel Sinkovics (abel@sinkovics.hu) 2015.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/metaparse/error/unpaired.hpp [4:6]
- boost/metaparse/fail_at_first_char_expected.hpp [4:6]
- boost/metaparse/foldl_reject_incomplete.hpp [4:6]
- boost/metaparse/foldl_reject_incomplete1.hpp [4:6]
- boost/metaparse/foldl_reject_incomplete_start_with_parser.hpp [4:6]
- boost/metaparse/foldr_reject_incomplete.hpp [4:6]
- boost/metaparse/foldr_reject_incomplete1.hpp [4:6]
- boost/metaparse/optional.hpp [4:6]
- boost/metaparse/repeated_reject_incomplete.hpp [4:6]
- boost/metaparse/repeated_reject_incomplete1.hpp [4:6]
- boost/metaparse/sequence_apply.hpp [4:6]
- boost/metaparse/transform_error.hpp [4:6]
- boost/metaparse/transform_error_message.hpp [4:6]
- boost/metaparse/v1/error/expected_to_fail.hpp [4:6]
- boost/metaparse/v1/error/unpaired.hpp [4:6]
- boost/metaparse/v1/fail_at_first_char_expected.hpp [4:6]
- boost/metaparse/v1/foldl_reject_incomplete.hpp [4:6]
- boost/metaparse/v1/foldl_reject_incomplete1.hpp [4:6]
- boost/metaparse/v1/foldl_reject_incomplete_start_with_parser.hpp [4:6]
- boost/metaparse/v1/foldr_reject_incomplete.hpp [4:6]
- boost/metaparse/v1/foldr_reject_incomplete1.hpp [4:6]
- boost/metaparse/v1/impl/back_inserter.hpp [4:6]
- boost/metaparse/v1/impl/front_inserter.hpp [4:6]
- boost/metaparse/v1/impl/is_char_c.hpp [4:6]
- boost/metaparse/v1/impl/later_result.hpp [4:6]
- boost/metaparse/v1/impl/next_digit.hpp [4:6]
- boost/metaparse/v1/impl/one_of_fwd_op.hpp [4:6]
- boost/metaparse/v1/impl/void_.hpp [4:6]
- boost/metaparse/v1/optional.hpp [4:6]
- boost/metaparse/v1/repeated_reject_incomplete.hpp [4:6]
- boost/metaparse/v1/repeated_reject_incomplete1.hpp [4:6]
- boost/metaparse/v1/sequence_apply.hpp [4:6]
- boost/metaparse/v1/swap.hpp [4:6]
- boost/metaparse/v1/transform_error.hpp [4:6]
- boost/metaparse/v1/transform_error_message.hpp [4:6]
- boost/metaparse/version.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0592d773c67a9f16004eb64838cdbaa8
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/platform/cloudabi.h at line 4, boost/winapi/bcrypt.hpp at line 4, boost/winapi/config.hpp at line 4, boost/winapi/file_management.hpp at line 4, boost/winapi/file_mapping.hpp at line 4, boost/winapi/wait.hpp at line 4
- License text:
- Copyright 2017 James E. King, III
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/predef/platform/cloudabi.h [2:4]
- boost/winapi/bcrypt.hpp [2:2]
- boost/winapi/config.hpp [2:3]
- boost/winapi/file_management.hpp [2:5]
- boost/winapi/file_mapping.hpp [2:5]
- boost/winapi/wait.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 059623504befbc01814eabacf56f307c
-BELONGS ya.make
- License text:
- Copyright (c) 2016 Lee Clagett
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/support/detail/and.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 05adeceb37523fe0339d6f28b148cbe2
-BELONGS ya.make
- License text:
- // (C) Copyright 2013 Ruslan Baratov
- // Copyright (C) 2014 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/csbl/memory/shared_ptr.hpp [1:1]
- boost/thread/executors/detail/priority_executor_base.hpp [1:2]
- boost/thread/executors/generic_executor_ref.hpp [1:1]
- boost/thread/executors/inline_executor.hpp [1:1]
- boost/thread/executors/scheduled_thread_pool.hpp [1:2]
- boost/thread/executors/scheduler.hpp [1:1]
- boost/thread/executors/scheduling_adaptor.hpp [1:2]
- boost/thread/executors/thread_executor.hpp [1:1]
- boost/thread/with_lock_guard.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 05dea3cd629cf8ef88336fe0f07b458f
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2010, 2012.
- // Copyright Paul A. Bristow 2011, 2012.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/constants/calculate_constants.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 05fd399cf249e99987c204a65eb75fba
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/math/special_functions/pow.hpp at line 6
- License text:
- // (C) Copyright Bruno Lalande 2008.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/pow.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 060d1c9a659248da572c61c592f7de28
-BELONGS ya.make
- License text:
- Copyright (c) 2003 Jonathan de Halleux (dehalleux@pelikhan.com)
- Copyright (c) 2011 Bryce Lelbach
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/actor/ref_value_actor.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 061ba44b1c5a3d022ff7ae16bcd93f16
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2001-2009 Daniel Nuffer
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/support/char_set/basic_chset.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 06270473adb0db5611666795418a7a03
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/io_fwd.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/io_fwd.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0629dfc80f2e34347ae3527a5b97c05b
-BELONGS ya.make
- License text:
- // This file was modified by Oracle on 2014, 2016, 2017.
- // Modifications copyright (c) 2014-2017, Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/azimuth.hpp [5:6]
- boost/geometry/algorithms/detail/intersection/interface.hpp [5:6]
- boost/geometry/strategies/cartesian/intersection.hpp [6:7]
- boost/geometry/strategies/spherical/distance_cross_track.hpp [5:6]
- boost/geometry/strategies/spherical/distance_cross_track_point_box.hpp [7:8]
- boost/geometry/strategies/spherical/side_by_cross_track.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 063415ea5f4f1d2813797e674bb69bb4
-BELONGS ya.make
- License text:
- // Copyright (C) Christof Meerwald 2003
- // Copyright (C) Dan Watkins 2003
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/digitalmars.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 063981378c5a34322f72710962459da2
-BELONGS ya.make
- License text:
- // Copyright 2005, 2014 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/detail/sp_interlocked.hpp [13:13]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0654c59b9150c6a73ad14057713552bf
-BELONGS ya.make
- License text:
- // This file was modified by Oracle on 2015.
- // Modifications copyright (c) 2015 Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/overlay/clip_linestring.hpp [5:6]
- boost/geometry/strategies/cartesian/centroid_average.hpp [8:9]
- boost/geometry/strategies/cartesian/centroid_bashein_detmer.hpp [7:8]
- boost/geometry/strategies/strategy_transform.hpp [7:8]
- boost/geometry/strategies/transform/matrix_transformers.hpp [7:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 06752fed324925429c6bb59ddac9d673
-BELONGS ya.make
- License text:
- Copyright (c) 2005 Matthew Calabrese
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/utility/binary.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 067cda0b5423326cdf3316f73f4b7ff5
-BELONGS ya.make
- License text:
- // Copyright (c) 2000-2002
- // Joerg Walter, Mathias Koch
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/ublas/detail/concepts.hpp [2:3]
- boost/numeric/ublas/detail/config.hpp [2:3]
- boost/numeric/ublas/detail/definitions.hpp [2:3]
- boost/numeric/ublas/detail/duff.hpp [2:3]
- boost/numeric/ublas/detail/iterator.hpp [2:3]
- boost/numeric/ublas/detail/matrix_assign.hpp [2:3]
- boost/numeric/ublas/detail/temporary.hpp [2:3]
- boost/numeric/ublas/detail/vector_assign.hpp [2:3]
- boost/numeric/ublas/lu.hpp [2:3]
- boost/numeric/ublas/matrix_expression.hpp [2:3]
- boost/numeric/ublas/matrix_proxy.hpp [2:3]
- boost/numeric/ublas/operation.hpp [2:3]
- boost/numeric/ublas/operation_blocked.hpp [2:3]
- boost/numeric/ublas/operation_sparse.hpp [2:3]
- boost/numeric/ublas/storage.hpp [2:3]
- boost/numeric/ublas/storage_sparse.hpp [2:3]
- boost/numeric/ublas/symmetric.hpp [2:3]
- boost/numeric/ublas/traits.hpp [2:3]
- boost/numeric/ublas/triangular.hpp [2:3]
- boost/numeric/ublas/vector_expression.hpp [2:3]
- boost/numeric/ublas/vector_proxy.hpp [2:3]
- boost/numeric/ublas/vector_sparse.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 06bdb153f7c9e585b90d3443f4a9ed60
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/integer/common_factor_ct.hpp at line 5
- License text:
- // (C) Copyright Daryle Walker and Stephen Cleary 2001-2002.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/integer/common_factor_ct.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 06bdc28468ac3b6b957b56a9c6096a82
-BELONGS ya.make
- License text:
- // This file was modified by Oracle on 2014, 2017.
- // Modifications copyright (c) 2014-2017 Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/crosses.hpp [8:9]
- boost/geometry/algorithms/detail/equals/implementation.hpp [8:9]
- boost/geometry/algorithms/detail/equals/interface.hpp [8:9]
- boost/geometry/algorithms/detail/overlaps/implementation.hpp [7:8]
- boost/geometry/algorithms/detail/overlaps/interface.hpp [7:8]
- boost/geometry/algorithms/detail/overlay/append_no_dups_or_spikes.hpp [5:6]
- boost/geometry/algorithms/detail/overlay/copy_segments.hpp [5:6]
- boost/geometry/algorithms/detail/overlay/follow.hpp [6:9]
- boost/geometry/algorithms/detail/overlay/get_turns.hpp [6:7]
- boost/geometry/algorithms/detail/overlay/intersection_insert.hpp [5:6]
- boost/geometry/algorithms/equals.hpp [8:9]
- boost/geometry/algorithms/overlaps.hpp [7:8]
- boost/geometry/algorithms/point_on_surface.hpp [8:9]
- boost/geometry/algorithms/union.hpp [5:6]
- boost/geometry/formulas/vincenty_direct.hpp [5:6]
- boost/geometry/formulas/vincenty_inverse.hpp [6:7]
- boost/geometry/strategies/geographic/distance_andoyer.hpp [5:6]
- boost/geometry/strategies/geographic/distance_vincenty.hpp [5:6]
- boost/geometry/strategies/geographic/mapping_ssf.hpp [5:6]
- boost/geometry/strategies/geographic/side_andoyer.hpp [5:6]
- boost/geometry/strategies/geographic/side_thomas.hpp [5:6]
- boost/geometry/strategies/geographic/side_vincenty.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 06c37076487394ac3bd22a3705d78079
-BELONGS ya.make
- License text:
- // Copyright (c) 2014-2017, Oracle and/or its affiliates.
- // Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/disjoint/multipoint_geometry.hpp [3:4]
- boost/geometry/algorithms/detail/disjoint/multirange_geometry.hpp [3:3]
- boost/geometry/algorithms/detail/is_simple/always_simple.hpp [3:3]
- boost/geometry/algorithms/detail/is_simple/areal.hpp [3:3]
- boost/geometry/algorithms/detail/is_simple/interface.hpp [3:3]
- boost/geometry/algorithms/detail/is_simple/linear.hpp [3:3]
- boost/geometry/algorithms/detail/is_simple/multipoint.hpp [3:3]
- boost/geometry/algorithms/detail/is_valid/box.hpp [3:3]
- boost/geometry/algorithms/detail/is_valid/has_spikes.hpp [3:3]
- boost/geometry/algorithms/detail/is_valid/has_valid_self_turns.hpp [3:3]
- boost/geometry/algorithms/detail/is_valid/linear.hpp [3:3]
- boost/geometry/algorithms/detail/is_valid/multipolygon.hpp [3:3]
- boost/geometry/algorithms/detail/is_valid/pointlike.hpp [3:3]
- boost/geometry/algorithms/detail/is_valid/polygon.hpp [5:5]
- boost/geometry/algorithms/detail/is_valid/ring.hpp [5:5]
- boost/geometry/algorithms/detail/is_valid/segment.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/follow_linear_linear.hpp [5:5]
- boost/geometry/algorithms/detail/overlay/linear_linear.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/pointlike_pointlike.hpp [3:3]
- boost/geometry/algorithms/detail/relate/topology_check.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 06f12139423100c74c14f7a3021aabca
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/seq/variadic_seq_to_seq.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/preprocessor/seq/variadic_seq_to_seq.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 06f3ad25abe7d23073fb48ef1a22454e
-BELONGS ya.make
- License text:
- // Copyright (c) 2002 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/enable_shared_from_this.hpp [7:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 07040e547c7cdfe59c684f2a324385cc
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/date_time/date_duration_types.hpp at line 6, boost/date_time/date_generator_formatter.hpp at line 6, boost/date_time/filetime_functions.hpp at line 6, boost/date_time/gregorian/greg_duration_types.hpp at line 6, boost/date_time/local_time/date_duration_operators.hpp at line 6, boost/date_time/posix_time/date_duration_operators.hpp at line 6, boost/date_time/special_values_formatter.hpp at line 7, boost/date_time/strings_from_facet.hpp at line 6
- License text:
- /* Copyright (c) 2004 CrystalClear Software, Inc.
- * Subject to the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/date_time/date_duration_types.hpp [4:6]
- boost/date_time/date_generator_formatter.hpp [4:6]
- boost/date_time/filetime_functions.hpp [4:6]
- boost/date_time/gregorian/greg_duration_types.hpp [4:8]
- boost/date_time/local_time/date_duration_operators.hpp [4:6]
- boost/date_time/posix_time/date_duration_operators.hpp [4:6]
- boost/date_time/special_values_formatter.hpp [5:7]
- boost/date_time/strings_from_facet.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 073058f74b270621d1207cca7c921e79
-BELONGS ya.make
- License text:
- // Copyright 2014 LASMEA UMR 6602 CNRS/Univ. Clermont II
- // Copyright 2014 LRI UMR 8623 CNRS/Univ Paris Sud XI
- // Copyright 2014 MetaScale SAS
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/external/nt2/nt2_copy.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0741d2c1f3867245a3cb9d8c11260d78
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2011 Jan Frederick Eick
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/qi/numeric/detail/numeric_utils.hpp [2:6]
- boost/spirit/home/qi/numeric/numeric_utils.hpp [2:3]
- boost/spirit/home/qi/numeric/uint.hpp [2:4]
- boost/spirit/home/x3/numeric/uint.hpp [2:3]
- boost/spirit/home/x3/support/numeric_utils/detail/extract_int.hpp [2:6]
- boost/spirit/home/x3/support/numeric_utils/extract_int.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 07a69d34287d5174fbb91c1432623c73
-BELONGS ya.make
- License text:
- // (C) Copyright Ion Gaztanaga 2013-2014
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/intrusive/bs_set.hpp [3:3]
- boost/intrusive/bstree.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 07b7558ba450b33ddac49fa00995dc34
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/serialization/export.hpp [19:21]
-
-KEEP COPYRIGHT_SERVICE_LABEL 083a405889ae781bc980f57de8b73aab
-BELONGS ya.make
- License text:
- Copyright 2013 Karsten Ahnert
- Copyright 2013 Mario Mulansky
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/algebra/algebra_dispatcher.hpp [9:10]
- boost/numeric/odeint/algebra/detail/extract_value_type.hpp [9:10]
- boost/numeric/odeint/algebra/detail/norm_inf.hpp [9:10]
- boost/numeric/odeint/algebra/fusion_algebra_dispatcher.hpp [9:10]
- boost/numeric/odeint/algebra/norm_result_type.hpp [9:10]
- boost/numeric/odeint/algebra/operations_dispatcher.hpp [9:10]
- boost/numeric/odeint/external/eigen/eigen_algebra.hpp [9:10]
- boost/numeric/odeint/external/eigen/eigen_resize.hpp [9:10]
- boost/numeric/odeint/external/mpi/mpi.hpp [9:11]
- boost/numeric/odeint/external/mpi/mpi_nested_algebra.hpp [9:11]
- boost/numeric/odeint/external/mpi/mpi_state.hpp [9:11]
- boost/numeric/odeint/external/mpi/mpi_vector_state.hpp [9:11]
- boost/numeric/odeint/external/mtl4/mtl4.hpp [9:10]
- boost/numeric/odeint/external/mtl4/mtl4_algebra_dispatcher.hpp [9:10]
- boost/numeric/odeint/external/openmp/openmp.hpp [9:11]
- boost/numeric/odeint/external/openmp/openmp_nested_algebra.hpp [9:11]
- boost/numeric/odeint/external/openmp/openmp_range_algebra.hpp [9:11]
- boost/numeric/odeint/external/openmp/openmp_state.hpp [9:11]
- boost/numeric/odeint/external/thrust/thrust.hpp [9:10]
- boost/numeric/odeint/external/thrust/thrust_algebra_dispatcher.hpp [9:10]
- boost/numeric/odeint/external/vexcl/vexcl.hpp [9:10]
- boost/numeric/odeint/external/vexcl/vexcl_algebra_dispatcher.hpp [9:10]
- boost/numeric/odeint/iterator/impl/const_step_iterator_impl.hpp [9:10]
- boost/numeric/odeint/util/n_ary_helper.hpp [7:9]
- boost/numeric/odeint/util/split.hpp [9:11]
- boost/numeric/odeint/util/split_adaptor.hpp [9:11]
- boost/numeric/odeint/util/stepper_traits.hpp [9:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL 085869bb2241cf9aeb5f050ee3cff8ce
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/return_arg.hpp at line 3
- License text:
- // Copyright David Abrahams and Nikolay Mladenov 2003.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/python/return_arg.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 086e913ebca204ed72c05a3607031c1d
-BELONGS ya.make
- License text:
- // Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
- // Copyright (C) 2001, 2002 Peter Dimov
- // Copyright (C) 2002 David Abrahams
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/core/ref.hpp [17:19]
-
-KEEP COPYRIGHT_SERVICE_LABEL 08a0499dcbbd5932fb9219dce6ebc084
-BELONGS ya.make
- License text:
- Copyright 2011-2012 Mario Mulansky
- Copyright 2011 Karsten Ahnert
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/external/gsl/gsl_wrapper.hpp [9:10]
- boost/numeric/odeint/stepper/detail/rotating_buffer.hpp [9:10]
- boost/numeric/odeint/stepper/generation.hpp [9:10]
- boost/numeric/odeint/stepper/generation/generation_runge_kutta_cash_karp54.hpp [9:10]
- boost/numeric/odeint/stepper/generation/generation_runge_kutta_cash_karp54_classic.hpp [10:11]
- boost/numeric/odeint/stepper/generation/generation_runge_kutta_dopri5.hpp [9:10]
- boost/numeric/odeint/stepper/generation/generation_runge_kutta_fehlberg78.hpp [9:10]
- boost/numeric/odeint/util/is_pair.hpp [9:10]
- boost/numeric/odeint/util/resizer.hpp [9:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL 08c8d8e87d3028ff1a5cda49cfd4276e
-BELONGS libs/locale/ya.make ya.make
- License text:
- // Copyright (c) 2009-2011 Artyom Beilis (Tonkikh)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/locale.hpp [2:2]
- boost/locale/boundary.hpp [2:2]
- boost/locale/boundary/boundary_point.hpp [2:2]
- boost/locale/boundary/facets.hpp [2:2]
- boost/locale/boundary/index.hpp [2:2]
- boost/locale/boundary/segment.hpp [2:2]
- boost/locale/boundary/types.hpp [2:2]
- boost/locale/collator.hpp [2:2]
- boost/locale/config.hpp [2:2]
- boost/locale/conversion.hpp [2:2]
- boost/locale/date_time.hpp [2:2]
- boost/locale/date_time_facet.hpp [2:2]
- boost/locale/definitions.hpp [2:2]
- boost/locale/encoding.hpp [2:2]
- boost/locale/encoding_errors.hpp [2:2]
- boost/locale/encoding_utf.hpp [2:2]
- boost/locale/format.hpp [2:2]
- boost/locale/formatting.hpp [2:2]
- boost/locale/generator.hpp [2:2]
- boost/locale/gnu_gettext.hpp [2:2]
- boost/locale/info.hpp [2:2]
- boost/locale/localization_backend.hpp [2:2]
- boost/locale/message.hpp [2:2]
- boost/locale/time_zone.hpp [2:2]
- boost/locale/utf.hpp [2:2]
- boost/locale/util.hpp [2:2]
- libs/locale/src/encoding/codepage.cpp [2:2]
- libs/locale/src/encoding/conv.hpp [2:2]
- libs/locale/src/encoding/iconv_codepage.ipp [2:2]
- libs/locale/src/encoding/uconv_codepage.ipp [2:2]
- libs/locale/src/encoding/wconv_codepage.ipp [2:2]
- libs/locale/src/icu/all_generator.hpp [2:2]
- libs/locale/src/icu/boundary.cpp [2:2]
- libs/locale/src/icu/cdata.hpp [2:2]
- libs/locale/src/icu/codecvt.cpp [2:2]
- libs/locale/src/icu/codecvt.hpp [2:2]
- libs/locale/src/icu/collator.cpp [2:2]
- libs/locale/src/icu/conversion.cpp [2:2]
- libs/locale/src/icu/date_time.cpp [2:2]
- libs/locale/src/icu/formatter.cpp [2:2]
- libs/locale/src/icu/formatter.hpp [2:2]
- libs/locale/src/icu/icu_backend.cpp [2:2]
- libs/locale/src/icu/icu_backend.hpp [2:2]
- libs/locale/src/icu/icu_util.hpp [2:2]
- libs/locale/src/icu/numeric.cpp [2:2]
- libs/locale/src/icu/predefined_formatters.hpp [2:2]
- libs/locale/src/icu/time_zone.cpp [2:2]
- libs/locale/src/icu/time_zone.hpp [2:2]
- libs/locale/src/icu/uconv.hpp [2:2]
- libs/locale/src/posix/all_generator.hpp [2:2]
- libs/locale/src/posix/codecvt.cpp [2:2]
- libs/locale/src/posix/codecvt.hpp [2:2]
- libs/locale/src/posix/collate.cpp [2:2]
- libs/locale/src/posix/converter.cpp [2:2]
- libs/locale/src/posix/numeric.cpp [2:2]
- libs/locale/src/posix/posix_backend.cpp [2:2]
- libs/locale/src/posix/posix_backend.hpp [2:2]
- libs/locale/src/shared/date_time.cpp [2:2]
- libs/locale/src/shared/format.cpp [2:2]
- libs/locale/src/shared/formatting.cpp [2:2]
- libs/locale/src/shared/generator.cpp [2:2]
- libs/locale/src/shared/ids.cpp [2:2]
- libs/locale/src/shared/ios_prop.hpp [2:2]
- libs/locale/src/shared/localization_backend.cpp [2:2]
- libs/locale/src/shared/mo_hash.hpp [2:2]
- libs/locale/src/shared/mo_lambda.cpp [2:2]
- libs/locale/src/shared/mo_lambda.hpp [2:2]
- libs/locale/src/std/all_generator.hpp [2:2]
- libs/locale/src/std/codecvt.cpp [2:2]
- libs/locale/src/std/collate.cpp [2:2]
- libs/locale/src/std/converter.cpp [2:2]
- libs/locale/src/std/numeric.cpp [2:2]
- libs/locale/src/std/std_backend.cpp [2:2]
- libs/locale/src/std/std_backend.hpp [2:2]
- libs/locale/src/util/codecvt_converter.cpp [2:2]
- libs/locale/src/util/default_locale.cpp [2:2]
- libs/locale/src/util/gregorian.cpp [2:2]
- libs/locale/src/util/gregorian.hpp [2:2]
- libs/locale/src/util/iconv.hpp [2:2]
- libs/locale/src/util/info.cpp [2:2]
- libs/locale/src/util/locale_data.cpp [2:2]
- libs/locale/src/util/locale_data.hpp [2:2]
- libs/locale/src/util/numeric.hpp [2:2]
- libs/locale/src/util/timezone.hpp [2:2]
- libs/locale/src/win32/all_generator.hpp [2:2]
- libs/locale/src/win32/api.hpp [2:2]
- libs/locale/src/win32/collate.cpp [2:2]
- libs/locale/src/win32/converter.cpp [2:2]
- libs/locale/src/win32/lcid.cpp [2:2]
- libs/locale/src/win32/lcid.hpp [2:2]
- libs/locale/src/win32/numeric.cpp [2:2]
- libs/locale/src/win32/win_backend.cpp [2:2]
- libs/locale/src/win32/win_backend.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 08f926507a475f95278bdc864b401b0a
-BELONGS libs/python/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/object/stl_iterator_core.hpp at line 3, boost/python/stl_iterator.hpp at line 3, libs/python/src/object/stl_iterator.cpp at line 3
- License text:
- // Copyright Eric Niebler 2005.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/python/object/stl_iterator_core.hpp [1:3]
- boost/python/stl_iterator.hpp [1:3]
- libs/python/src/object/stl_iterator.cpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 095a19389e06f0d846d8f09e0b124d3a
-BELONGS ya.make
- License text:
- // Copyright (C) 2005-2006 Alain Miniussi <alain.miniussi -at- oca.eu>.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpi/inplace.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 096d8c5df1c32b2f75ba4a9a2e402de2
-BELONGS ya.make
- License text:
- // Copyright David Abrahams and Thomas Becker 2000-2006.
- // Copyright Kohei Takahashi 2012-2014.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/iterator/zip_iterator.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 099f45e4dfce1e9a04cd9f0fc805912b
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/archive/detail/auto_link_archive.hpp at line 14, boost/archive/detail/auto_link_warchive.hpp at line 14, boost/archive/detail/decl.hpp at line 14, boost/serialization/config.hpp at line 8
- License text:
- // (c) Copyright Robert Ramey 2004
- // Use, modification, and distribution is subject to the Boost Software
- // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/archive/detail/auto_link_archive.hpp [12:14]
- boost/archive/detail/auto_link_warchive.hpp [12:14]
- boost/archive/detail/decl.hpp [12:14]
- boost/serialization/config.hpp [6:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 09b747b5492c0054ccb0805469599656
-BELONGS ya.make
- License text:
- // Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
- // Copyright (c) 2008 Roelof Naude (roelof.naude at gmail dot com)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/asio/detail/eventfd_select_interrupter.hpp [5:6]
- boost/asio/detail/impl/eventfd_select_interrupter.ipp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 09ca8f5ea99b8a6ff33ed89df33c25be
-BELONGS ya.make
- License text:
- // Copyright Aleksey Gurtovoy 2001-2007
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/aux_/lambda_spec.hpp [5:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 09cc1fb7c33b7954947a92ced3ff6df1
-BELONGS ya.make
- License text:
- // (C) Copyright 2009-2011 Frederic Bron, Robert Stewart, Steven Watanabe & Roman Perepelitsa.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_traits/detail/has_binary_operator.hpp [1:1]
- boost/type_traits/detail/has_postfix_operator.hpp [1:1]
- boost/type_traits/detail/has_prefix_operator.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 09df97e99c4303bff1e87e8c1c9130b6
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/process/detail/windows/locale.hpp at line 4, boost/process/locale.hpp at line 4
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/process/detail/windows/locale.hpp [1:2]
- boost/process/locale.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0a1956f795fb552dd3a4ff03d098c17c
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2003 Daniel Nuffer
- Copyright (c) 2003 Giovanni Bajo
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/iterator.hpp [2:4]
- boost/spirit/home/classic/iterator/impl/position_iterator.ipp [2:5]
- boost/spirit/home/classic/iterator/position_iterator.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0a1ddf2f633492698f29966f2ba00d47
-BELONGS ya.make
- License text:
- // Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
- // Copyright (C) Vladimir Prus 2003
- // Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/random.hpp [2:4]
- boost/property_map/parallel/vector_property_map.hpp [1:3]
- boost/property_map/vector_property_map.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0a2a0abc8536e98547d88c1773f19fb5
-BELONGS libs/iostreams/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/ptr_container/detail/is_convertible.hpp at line 5, boost/ptr_container/detail/static_move_ptr.hpp at line 5, libs/iostreams/src/mapped_file.cpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/ptr_container/detail/is_convertible.hpp [1:5]
- boost/ptr_container/detail/static_move_ptr.hpp [1:5]
- libs/iostreams/src/mapped_file.cpp [1:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0a2b5d5a0c0eaf639c779415c0484b22
-BELONGS ya.make
- License text:
- // Copyright Douglas Gregor 2004.
- // Copyright 2005 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/detail/interlocked.hpp [7:7]
- boost/function_equal.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0a3175bc860cf11c874510bcf687df69
-BELONGS ya.make
- License text:
- // Copyright (c) 2001-2011 Joel de Guzman
- // Copyright (c) 2001-2011 Hartmut Kaiser
- // Copyright (c) 2009 Francois Barel
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/karma/nonterminal/detail/parameterized.hpp [1:3]
- boost/spirit/home/qi/nonterminal/detail/parameterized.hpp [2:3]
- boost/spirit/home/support/nonterminal/extract_param.hpp [2:4]
- boost/spirit/repository/home/karma/nonterminal.hpp [1:3]
- boost/spirit/repository/home/karma/nonterminal/subrule.hpp [1:3]
- boost/spirit/repository/home/qi/nonterminal.hpp [1:3]
- boost/spirit/repository/home/qi/nonterminal/subrule.hpp [2:3]
- boost/spirit/repository/home/support/subrule_context.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0a88dd37543f88fab003f41788b3cf9b
-BELONGS ya.make
- License text:
- // (C) Copyright Dave Abrahams and Daniel Walker 1999-2003.
- // Copyright (c) Andrey Semashev 2017
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/next_prior.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0a9a56c76c75046da6d531707b442246
-BELONGS ya.make
- License text:
- // Copyright (C) 2007, 2008 Steven Watanabe, Joseph Gauterin, Niels Dekker
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/core/swap.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0aa197418350ce1baad48ead251f36a4
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/detail/move.hpp at line 5, boost/interprocess/detail/robust_emulation.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2010-2012.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/interprocess/detail/move.hpp [3:5]
- boost/interprocess/detail/robust_emulation.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0ac5ffd92b2d14f341279a5a1a133f45
-BELONGS ya.make
- License text:
- // Copyright 2003 (c) The Trustees of Indiana University.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/core/enable_if.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0ac94d69700429ed83a5edaf872407cb
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/tti/detail/ddeftype.hpp at line 4, boost/tti/detail/dnullptr.hpp at line 4, boost/tti/gen/has_data_gen.hpp at line 4, boost/tti/gen/has_function_gen.hpp at line 4
- License text:
- // (C) Copyright Edward Diener 2012
- // Use, modification and distribution are subject to the Boost Software License,
- // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/tti/detail/ddeftype.hpp [2:4]
- boost/tti/detail/dnullptr.hpp [2:4]
- boost/tti/gen/has_data_gen.hpp [2:4]
- boost/tti/gen/has_function_gen.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0b275d928a7071063ea8fa601680fadd
-BELONGS ya.make
- License text:
- // (C) Copyright Jeremy Siek 2000.
- // Copyright 2002 The Trustees of Indiana University.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/concept_check.hpp [2:3]
- boost/multi_array.hpp [1:1]
- boost/multi_array/algorithm.hpp [30:30]
- boost/multi_array/base.hpp [1:1]
- boost/multi_array/collection_concept.hpp [1:1]
- boost/multi_array/concept_checks.hpp [1:1]
- boost/multi_array/copy_array.hpp [1:1]
- boost/multi_array/extent_gen.hpp [1:1]
- boost/multi_array/extent_range.hpp [1:1]
- boost/multi_array/index_gen.hpp [1:1]
- boost/multi_array/index_range.hpp [1:1]
- boost/multi_array/iterator.hpp [1:1]
- boost/multi_array/multi_array_ref.hpp [1:1]
- boost/multi_array/range_list.hpp [1:1]
- boost/multi_array/storage_order.hpp [1:1]
- boost/multi_array/subarray.hpp [1:1]
- boost/multi_array/types.hpp [1:1]
- boost/multi_array/view.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0b29116922cfef70c51094e6d835a79b
-BELONGS ya.make
- License text:
- // (C) Copyright Francois Faure, iMAGIS-GRAVIR / UJF, 2001.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/property_iter_range.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0b4299a09d63e96056991adca25384c1
-BELONGS ya.make
- License text:
- // Copyright (C) 2002-2006 Marcin Kalicinski
- // Copyright (C) 2015 Sebastian Redl
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/property_tree/json_parser.hpp [2:3]
- boost/property_tree/json_parser/detail/read.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0b4c09f6f3b7c4c50019029022cf8605
-BELONGS ya.make
- License text:
- // Copyright (C) 2004 Arkadiy Vertleyb
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/typeof/encode_decode.hpp [1:1]
- boost/typeof/int_encoding.hpp [1:3]
- boost/typeof/modifiers.hpp [1:3]
- boost/typeof/pointers_data_members.hpp [1:3]
- boost/typeof/register_functions.hpp [1:3]
- boost/typeof/register_functions_iterate.hpp [1:3]
- boost/typeof/register_fundamental.hpp [1:4]
- boost/typeof/register_mem_functions.hpp [1:3]
- boost/typeof/template_encoding.hpp [1:4]
- boost/typeof/type_encoding.hpp [1:3]
- boost/typeof/typeof.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0b5ce66fba7e15b3ae6b4fe603a6dfc7
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/fiber/properties.hpp at line 3
- License text:
- // Copyright Nat Goodspeed 2014.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fiber/properties.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0b6f371227c9898f1ce2ae1a4a259a75
-BELONGS ya.make
- License text:
- // Copyright 2017 John Maddock
- // Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/tools/atomic.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0ba2ebe3ae8aa78b437fe4f53708d243
-BELONGS ya.make
- License text:
- Copyright 2020-2021 Glen Joseph Fernandes
- (glenjofe@gmail.com)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/core/allocator_access.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0c190a3fed9f645e32983879cf237122
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2011 Brandon Kohn
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/container/map/detail/cpp03/at_impl.hpp [2:3]
- boost/fusion/container/map/detail/cpp03/value_at_impl.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0c1af2120f5b2c990788a2bcf885bea8
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/queue.hpp at line 14, boost/serialization/stack.hpp at line 14
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/serialization/queue.hpp [12:14]
- boost/serialization/stack.hpp [12:14]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0c1af98e46f7afe05454a0ee32286f46
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/metaparse/v1/cpp98/nth_of.hpp at line 6, boost/metaparse/v1/repeated_one_of.hpp at line 6, boost/metaparse/v1/repeated_one_of1.hpp at line 6
- License text:
- // Copyright Abel Sinkovics (abel@sinkovics.hu) 2010.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/metaparse/v1/cpp98/nth_of.hpp [4:6]
- boost/metaparse/v1/repeated_one_of.hpp [4:6]
- boost/metaparse/v1/repeated_one_of1.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0c2b8937b4dd7ffe9d6014b495d4300e
-BELONGS ya.make
- License text:
- // (C) Copyright Howard Hinnant
- // Copyright 2011 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/chrono/ceil.hpp [3:4]
- boost/chrono/chrono_io.hpp [4:7]
- boost/chrono/floor.hpp [3:4]
- boost/chrono/io/duration_get.hpp [1:4]
- boost/chrono/io/duration_io.hpp [1:4]
- boost/chrono/io/duration_put.hpp [1:4]
- boost/chrono/io/duration_style.hpp [1:4]
- boost/chrono/io/duration_units.hpp [1:4]
- boost/chrono/io/time_point_get.hpp [1:4]
- boost/chrono/io/time_point_io.hpp [1:4]
- boost/chrono/io/time_point_put.hpp [1:4]
- boost/chrono/io/time_point_units.hpp [1:5]
- boost/chrono/io/timezone.hpp [1:4]
- boost/chrono/io_v1/chrono_io.hpp [4:7]
- boost/chrono/round.hpp [3:4]
- boost/ratio/detail/ratio_io.hpp [3:6]
- boost/ratio/ratio_io.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0c692f4ed0592b9e7538690f57796922
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/log/detail/allocator_traits.hpp at line 4
- License text:
- * Copyright Andrey Semashev 2018.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/log/detail/allocator_traits.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0c6b4a71af48e0c6aa05a5427f73c88f
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/detail/cxx_composite.hpp [1:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0c99d75cb8a2efd9e835c9f7a2d6551d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/xpressive/detail/utility/counted_base.hpp at line 4
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/xpressive/detail/utility/counted_base.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0ca4d911fb09cf5ac4c97fc962a5c09a
-BELONGS ya.make
- License text:
- Copyright (C) 2004-2008 Rene Nyffenegger
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/beast/core/detail/base64.hpp [16:16]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0cb977594281ac92638c2f8b1e08d39d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/assign/ptr_map_inserter.hpp at line 5, boost/ptr_container/detail/throw_exception.hpp at line 6, boost/range/adaptors.hpp at line 5, boost/range/algorithm_ext.hpp at line 10, boost/range/as_array.hpp at line 5, boost/range/as_literal.hpp at line 5, boost/range/detail/as_literal.hpp at line 5, boost/range/detail/str_types.hpp at line 5
- License text:
- // Copyright Thorsten Ottosen 2006. Use, modification and
- // distribution is subject to the Boost Software License, Version
- // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/assign/ptr_map_inserter.hpp [3:5]
- boost/ptr_container/detail/throw_exception.hpp [4:6]
- boost/range/adaptors.hpp [3:6]
- boost/range/algorithm_ext.hpp [8:10]
- boost/range/as_array.hpp [3:5]
- boost/range/as_literal.hpp [3:5]
- boost/range/detail/as_literal.hpp [3:5]
- boost/range/detail/str_types.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0d425d37a7f3a1d0fc0a1ea34a2d4150
-BELONGS ya.make
- License text:
- Copyright (c) 2014 Kohei Takahashi
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/adapted/std_tuple/detail/build_std_tuple.hpp [2:2]
- boost/fusion/container/generation/make_list.hpp [2:2]
- boost/fusion/container/generation/vector_tie.hpp [2:2]
- boost/fusion/container/list/list_fwd.hpp [2:2]
- boost/fusion/container/set/set_fwd.hpp [2:2]
- boost/fusion/container/vector/detail/value_at_impl.hpp [2:2]
- boost/fusion/container/vector/vector10.hpp [2:2]
- boost/fusion/container/vector/vector20.hpp [2:2]
- boost/fusion/container/vector/vector30.hpp [2:2]
- boost/fusion/container/vector/vector40.hpp [2:2]
- boost/fusion/container/vector/vector50.hpp [2:2]
- boost/fusion/include/std_tuple.hpp [2:4]
- boost/fusion/support/config.hpp [2:3]
- boost/fusion/tuple/make_tuple.hpp [2:2]
- boost/fusion/tuple/tuple_tie.hpp [2:2]
- boost/fusion/view/nview/detail/nview_impl.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0d692a3f4b84fd7a4a8cf39a7e86f0f8
-BELONGS ya.make
- License text:
- * Date: Sun Jun 22 14:23:12 MDT 2008
- * Copyright: 2008 CodeRage, LLC
- * Author: Jonathan Turkanis
- * Contact: turkanis at coderage dot com
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/iostreams/detail/file_handle.hpp [8:11]
- boost/iostreams/detail/path.hpp [8:11]
- boost/iostreams/filter/grep.hpp [8:11]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0d7aa5edb40002a9a9a2f814b7ccceea
-BELONGS ya.make
- License text:
- // Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
- // Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
- // Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/append.hpp [3:5]
- boost/geometry/algorithms/comparable_distance.hpp [3:5]
- boost/geometry/algorithms/detail/comparable_distance/implementation.hpp [3:5]
- boost/geometry/algorithms/detail/comparable_distance/interface.hpp [3:5]
- boost/geometry/algorithms/detail/counting.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/areal_areal.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/implementation.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/interface.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/linear_areal.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/linear_linear.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/linear_segment_or_box.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/segment_box.hpp [3:6]
- boost/geometry/algorithms/detail/distance/backward_compatibility.hpp [3:6]
- boost/geometry/algorithms/detail/distance/default_strategies.hpp [3:6]
- boost/geometry/algorithms/detail/distance/implementation.hpp [3:6]
- boost/geometry/algorithms/detail/distance/interface.hpp [3:7]
- boost/geometry/algorithms/detail/distance/point_to_geometry.hpp [3:6]
- boost/geometry/algorithms/detail/equals/collect_vectors.hpp [3:6]
- boost/geometry/algorithms/detail/equals/point_point.hpp [3:6]
- boost/geometry/algorithms/detail/intersects/implementation.hpp [3:5]
- boost/geometry/algorithms/detail/intersects/interface.hpp [3:5]
- boost/geometry/algorithms/disjoint.hpp [3:6]
- boost/geometry/algorithms/dispatch/disjoint.hpp [3:6]
- boost/geometry/algorithms/dispatch/distance.hpp [3:6]
- boost/geometry/algorithms/distance.hpp [3:6]
- boost/geometry/algorithms/for_each.hpp [3:6]
- boost/geometry/algorithms/intersects.hpp [3:5]
- boost/geometry/algorithms/length.hpp [3:5]
- boost/geometry/algorithms/num_geometries.hpp [3:5]
- boost/geometry/algorithms/num_interior_rings.hpp [3:5]
- boost/geometry/algorithms/num_points.hpp [3:6]
- boost/geometry/algorithms/perimeter.hpp [3:5]
- boost/geometry/core/cs.hpp [3:5]
- boost/geometry/geometries/concepts/point_concept.hpp [3:5]
- boost/geometry/geometries/point.hpp [3:6]
- boost/geometry/multi/algorithms/append.hpp [3:5]
- boost/geometry/multi/algorithms/distance.hpp [3:5]
- boost/geometry/multi/algorithms/num_points.hpp [3:5]
- boost/geometry/policies/disjoint_interrupt_policy.hpp [3:6]
- boost/geometry/strategies/cartesian/disjoint_segment_box.hpp [3:6]
- boost/geometry/strategies/cartesian/distance_projected_point.hpp [3:5]
- boost/geometry/strategies/cartesian/distance_projected_point_ax.hpp [3:5]
- boost/geometry/strategies/cartesian/distance_pythagoras_box_box.hpp [3:5]
- boost/geometry/strategies/cartesian/distance_pythagoras_point_box.hpp [3:5]
- boost/geometry/strategies/concepts/distance_concept.hpp [3:5]
- boost/geometry/strategies/default_comparable_distance_result.hpp [3:5]
- boost/geometry/strategies/default_distance_result.hpp [3:5]
- boost/geometry/strategies/default_length_result.hpp [3:5]
- boost/geometry/strategies/distance.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0da62c9d547bc4ac9421f23ebfe03032
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/io/wkt/write.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0e00627118b1aa126c93a4d188f1689d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/containers/containers_fwd.hpp at line 5, boost/interprocess/detail/file_locking_helpers.hpp at line 5, boost/interprocess/detail/intermodule_singleton.hpp at line 5, boost/interprocess/detail/intermodule_singleton_common.hpp at line 5, boost/interprocess/detail/managed_global_memory.hpp at line 5, boost/interprocess/detail/portable_intermodule_singleton.hpp at line 5, boost/interprocess/detail/windows_intermodule_singleton.hpp at line 5, boost/interprocess/detail/xsi_shared_memory_file_wrapper.hpp at line 5, boost/interprocess/xsi_shared_memory.hpp at line 5, boost/move/move.hpp at line 5, boost/move/traits.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2009-2012. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/interprocess/containers/containers_fwd.hpp [3:5]
- boost/interprocess/detail/file_locking_helpers.hpp [3:5]
- boost/interprocess/detail/intermodule_singleton.hpp [3:5]
- boost/interprocess/detail/intermodule_singleton_common.hpp [3:5]
- boost/interprocess/detail/managed_global_memory.hpp [3:5]
- boost/interprocess/detail/portable_intermodule_singleton.hpp [3:5]
- boost/interprocess/detail/windows_intermodule_singleton.hpp [3:5]
- boost/interprocess/detail/xsi_shared_memory_file_wrapper.hpp [3:5]
- boost/interprocess/xsi_shared_memory.hpp [3:5]
- boost/move/move.hpp [3:6]
- boost/move/traits.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0e0690525ead371c9a42656f4d37ed28
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/poly_collection/algorithm.hpp at line 3, boost/poly_collection/detail/functional.hpp at line 3
- License text:
- /* Copyright 2016-2018 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/poly_collection/algorithm.hpp [1:3]
- boost/poly_collection/detail/functional.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0e20cc85ddff90b5ad54f1b16cc40ada
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/detail/container_or_allocator_rebind.hpp at line 5, boost/container/detail/container_rebind.hpp at line 5, boost/container/detail/is_container.hpp at line 5, boost/container/detail/is_contiguous_container.hpp at line 5, boost/container/detail/value_functors.hpp at line 7, boost/move/algo/detail/set_difference.hpp at line 5, boost/move/algo/unique.hpp at line 5, boost/move/detail/to_raw_pointer.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2017-2017. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/container/detail/container_or_allocator_rebind.hpp [3:5]
- boost/container/detail/container_rebind.hpp [3:5]
- boost/container/detail/is_container.hpp [3:5]
- boost/container/detail/is_contiguous_container.hpp [3:5]
- boost/container/detail/value_functors.hpp [5:7]
- boost/move/algo/detail/set_difference.hpp [3:5]
- boost/move/algo/unique.hpp [3:5]
- boost/move/detail/to_raw_pointer.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0e38f662b528c9b976dd8c8d913034a2
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/unordered_map.hpp at line 5, boost/unordered_set.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/unordered_map.hpp [2:5]
- boost/unordered_set.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0e77ae1bd82b13815351a852b44ec0c8
-BELONGS ya.make
- License text:
- Copyright 2013-2014 Karsten Ahnert
- Copyright 2013-2014 Mario Mulansky
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/external/thrust/thrust_operations_dispatcher.hpp [9:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0e77faac6c58d8b5ee5a53b520bcbfd5
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/list/to_array.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/preprocessor/list/to_array.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0ea0e99567f30b36347bb495edfbcaa5
-BELONGS ya.make
- License text:
- // Copyright (C) 2004-2006 The Trustees of Indiana University.
- // Copyright (C) 2007 Douglas Gregor
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/distributed/adjacency_list.hpp [1:2]
- boost/graph/distributed/concepts.hpp [1:1]
- boost/graph/distributed/connected_components.hpp [1:1]
- boost/graph/distributed/connected_components_parallel_search.hpp [1:1]
- boost/graph/distributed/crauser_et_al_shortest_paths.hpp [1:1]
- boost/graph/distributed/dehne_gotz_min_spanning_tree.hpp [1:1]
- boost/graph/distributed/detail/dijkstra_shortest_paths.hpp [1:1]
- boost/graph/distributed/detail/filtered_queue.hpp [1:1]
- boost/graph/distributed/detail/queue.ipp [1:1]
- boost/graph/distributed/dijkstra_shortest_paths.hpp [1:1]
- boost/graph/distributed/eager_dijkstra_shortest_paths.hpp [1:1]
- boost/graph/distributed/graphviz.hpp [1:1]
- boost/graph/distributed/local_subgraph.hpp [1:1]
- boost/graph/distributed/page_rank.hpp [1:2]
- boost/graph/distributed/queue.hpp [1:1]
- boost/graph/distributed/vertex_list_adaptor.hpp [1:1]
- boost/graph/parallel/container_traits.hpp [1:1]
- boost/property_map/parallel/impl/distributed_property_map.ipp [1:1]
- boost/property_map/parallel/local_property_map.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0ef4f9780c88027fdd5a35ac2257715c
-BELONGS ya.make
- License text:
- Copyright (c) 2000-2003 Brian McNamara and Yannis Smaragdakis
- Copyright (c) 2001-2007 Joel de Guzman
- Copyright (c) 2015 John Fletcher
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/phoenix/function/lazy_list.hpp [33:35]
- boost/phoenix/function/lazy_operator.hpp [27:29]
- boost/phoenix/function/lazy_prelude.hpp [115:117]
- boost/phoenix/function/lazy_reuse.hpp [24:26]
- boost/phoenix/function/lazy_signature.hpp [34:36]
- boost/phoenix/function/lazy_smart.hpp [11:13]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0efd40a9062a85639e10344c951c8ddb
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/floating_point_promotion.hpp at line 3, boost/type_traits/integral_promotion.hpp at line 3, boost/type_traits/promote.hpp at line 3
- License text:
- // Copyright 2005 Alexander Nasonov.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_traits/floating_point_promotion.hpp [1:3]
- boost/type_traits/integral_promotion.hpp [1:3]
- boost/type_traits/promote.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0f30a097702291fdbe88b6aa88f9f744
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/cpp_dec_float.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/multiprecision/cpp_dec_float.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0f49b80837fdb112d7968c70aac5f973
-BELONGS ya.make
- License text:
- // Copyright (C) 2007 Douglas Gregor and Matthias Troyer
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/parallel/detail/property_holders.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0f9e47e05da12882f5597d4fb9a928c8
-BELONGS ya.make
- License text:
- // Copyright (c) 2003 Eric Friedman, Itay Maman
- // Copyright (c) 2013-2016 Antony Polukhin
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/variant/variant_fwd.hpp [6:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0ff3815935f307838940ff905e254cdb
-BELONGS libs/log/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/log/utility/permissions.hpp at line 5, libs/log/config/pthread-mutex-robust/pthread_mutex_robust.cpp at line 5, libs/log/src/permissions.cpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/log/utility/permissions.hpp [2:5]
- libs/log/config/pthread-mutex-robust/pthread_mutex_robust.cpp [2:4]
- libs/log/src/permissions.cpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 10118f8d4d61de7bd7c81e582f77bc87
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/platform/ios.h at line 5
- License text:
- Copyright Ruslan Baratov 2017
- Copyright Rene Rivera 2017
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/predef/platform/ios.h [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1017e4a7fef836fa656381426c398d61
-BELONGS ya.make
- License text:
- // Copyright Alexander Nasonov & Paul A. Bristow 2006.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/detail/lcast_precision.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 102aeb9de0dd2b131e13f2e7b47e1c05
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/coroutine/detail/preallocated.hpp at line 4, boost/fiber/algo/work_stealing.hpp at line 4, boost/fiber/detail/context_spinlock_queue.hpp at line 4
- License text:
- // Copyright Oliver Kowalke 2015.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/coroutine/detail/preallocated.hpp [2:4]
- boost/fiber/algo/work_stealing.hpp [2:4]
- boost/fiber/detail/context_spinlock_queue.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1039b7b0a1f8cafe9e6caab87c5befcd
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/math/common_factor_ct.hpp at line 5, boost/math/common_factor_rt.hpp at line 3, boost/type_traits/is_complete.hpp at line 4
- License text:
- // (C) Copyright John Maddock 2017.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/common_factor_ct.hpp [3:5]
- boost/math/common_factor_rt.hpp [1:1]
- boost/type_traits/is_complete.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 103fd6d712fb200d3b9147c6b7905af3
-BELONGS ya.make
- License text:
- Copyright 2015 NumScale SAS
- Copyright 2015 LRI UMR 8623 CNRS/University Paris Sud XI
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/align/assume_aligned.hpp [2:3]
- boost/align/detail/assume_aligned.hpp [2:3]
- boost/align/detail/assume_aligned_gcc.hpp [2:3]
- boost/align/detail/assume_aligned_intel.hpp [2:3]
- boost/align/detail/assume_aligned_msvc.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 107d76075b5051c3bee20805223a5779
-BELONGS ya.make
- License text:
- // Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
- // Copyright (c) 2007, 2014 Peter Dimov
- // Copyright (c) Beman Dawes 2011
- // Copyright (c) 2015 Ion Gaztanaga
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/assert.hpp [8:11]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1090d940152a2cbd19bfff58bf63a13f
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/assume_abstract.hpp at line 14
- License text:
- // (C) Copyright 2008 Robert Ramey
- // Use, modification and distribution is subject to the Boost Software
- // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/serialization/assume_abstract.hpp [12:14]
-
-KEEP COPYRIGHT_SERVICE_LABEL 10fe4090228a0ea61bac45ce35c9177e
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/test/utils/nullstream.hpp at line 4
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/test/utils/nullstream.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 11168ee38bde6d4aa685d70f5cf5cf68
-BELONGS ya.make
- License text:
- // Copyright 2016 Peter Dimov.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mp11/detail/config.hpp [4:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 119aa64b6fe77bfc2f178e06b5ce8caa
-BELONGS ya.make
- License text:
- // Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/index/detail/algorithms/bounds.hpp [5:5]
- boost/geometry/index/detail/algorithms/comparable_distance_centroid.hpp [5:5]
- boost/geometry/index/detail/algorithms/comparable_distance_far.hpp [5:5]
- boost/geometry/index/detail/algorithms/comparable_distance_near.hpp [5:5]
- boost/geometry/index/detail/algorithms/content.hpp [5:5]
- boost/geometry/index/detail/algorithms/is_valid.hpp [5:5]
- boost/geometry/index/detail/algorithms/margin.hpp [5:5]
- boost/geometry/index/detail/algorithms/minmaxdist.hpp [5:5]
- boost/geometry/index/detail/algorithms/segment_intersection.hpp [5:5]
- boost/geometry/index/detail/exception.hpp [3:3]
- boost/geometry/index/detail/rtree/linear/redistribute_elements.hpp [5:6]
- boost/geometry/index/detail/rtree/node/variant_visitor.hpp [5:5]
- boost/geometry/index/detail/rtree/node/weak_visitor.hpp [5:5]
- boost/geometry/index/detail/rtree/options.hpp [5:5]
- boost/geometry/index/detail/rtree/visitors/count.hpp [5:5]
- boost/geometry/index/detail/rtree/visitors/destroy.hpp [5:5]
- boost/geometry/index/detail/rtree/visitors/distance_query.hpp [5:5]
- boost/geometry/index/detail/rtree/visitors/spatial_query.hpp [5:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 11c555b9f12ef58efab27df9bf8c2090
-BELONGS ya.make
- License text:
- // Copyright Beman Dawes 2011
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/cxx11_char_types.hpp [3:3]
- boost/endian/detail/disable_warnings.hpp [3:3]
- boost/endian/detail/disable_warnings_pop.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 11d429a7e0f83394f0cc86e5e9f3bb69
-BELONGS ya.make
- License text:
- // Copyright 2000 John Maddock (john@johnmaddock.co.uk)
- // Copyright 2000 Jeremy Siek (jsiek@lsc.nd.edu)
- // Copyright 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_traits/conversion_traits.hpp [2:4]
- boost/type_traits/is_convertible.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 11d90229b362526047d6924026cb8e28
-BELONGS ya.make
- License text:
- Copyright (c) Marshall Clow 2012-2012.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/utility/string_ref_fwd.hpp [2:2]
- boost/utility/string_view_fwd.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 120d04eed9b07026548ea7929d94a3d9
-BELONGS ya.make
- License text:
- // Copyright 2004 The Trustees of Indiana University.
- // Copyright 2005 Matthias Troyer.
- // Copyright 2006 Douglas Gregor <doug.gregor -at- gmail.com>.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpi/datatype.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 122c8028bc01320e38f8296df292a785
-BELONGS ya.make
- License text:
- // Copyright (c) 2003, 2006 Gerald I. Evenden
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/srs/projections/proj/omerc.hpp [26:26]
- boost/geometry/srs/projections/proj/rouss.hpp [26:26]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1239bb24dcc5d1bb31ea703a7cbe2574
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/variance.hpp at line 6, boost/accumulators/statistics/weighted_variance.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/accumulators/statistics/variance.hpp [4:6]
- boost/accumulators/statistics/weighted_variance.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1250adf3b1baad8098a59b613cec3ffe
-BELONGS ya.make
- License text:
- Copyright (c) 2007-2012: Joachim Faulhaber
- Copyright (c) 1999-2006: Cortex Software GmbH, Kantstrasse 57, Berlin
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/icl/interval_base_map.hpp [2:3]
- boost/icl/split_interval_map.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 12743f021f74d5e841d401749523a04e
-BELONGS libs/iostreams/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iostreams/categories.hpp at line 4, boost/iostreams/chain.hpp at line 4, boost/iostreams/char_traits.hpp at line 4, boost/iostreams/close.hpp at line 4, boost/iostreams/code_converter.hpp at line 4, boost/iostreams/combine.hpp at line 4, boost/iostreams/concepts.hpp at line 4, boost/iostreams/constants.hpp at line 4, boost/iostreams/copy.hpp at line 4, boost/iostreams/detail/access_control.hpp at line 4, boost/iostreams/detail/adapter/concept_adapter.hpp at line 4, boost/iostreams/detail/adapter/direct_adapter.hpp at line 4, boost/iostreams/detail/adapter/mode_adapter.hpp at line 4, boost/iostreams/detail/adapter/output_iterator_adapter.hpp at line 4, boost/iostreams/detail/adapter/range_adapter.hpp at line 4, boost/iostreams/detail/add_facet.hpp at line 4, boost/iostreams/detail/bool_trait_def.hpp at line 4, boost/iostreams/detail/broken_overload_resolution/forward.hpp at line 4, boost/iostreams/detail/broken_overload_resolution/stream.hpp at line 4, boost/iostreams/detail/broken_overload_resolution/stream_buffer.hpp at line 4, boost/iostreams/detail/buffer.hpp at line 4, boost/iostreams/detail/call_traits.hpp at line 4, boost/iostreams/detail/char_traits.hpp at line 4, boost/iostreams/detail/codecvt_helper.hpp at line 4, boost/iostreams/detail/codecvt_holder.hpp at line 4, boost/iostreams/detail/config/auto_link.hpp at line 4, boost/iostreams/detail/config/bzip2.hpp at line 4, boost/iostreams/detail/config/codecvt.hpp at line 4, boost/iostreams/detail/config/disable_warnings.hpp at line 4, boost/iostreams/detail/config/dyn_link.hpp at line 4, boost/iostreams/detail/config/enable_warnings.hpp at line 4, boost/iostreams/detail/config/gcc.hpp at line 4, boost/iostreams/detail/config/limits.hpp at line 4, boost/iostreams/detail/config/overload_resolution.hpp at line 4, boost/iostreams/detail/config/wide_streams.hpp at line 4, boost/iostreams/detail/config/zlib.hpp at line 4, boost/iostreams/detail/dispatch.hpp at line 4, boost/iostreams/detail/enable_if_stream.hpp at line 4, boost/iostreams/detail/error.hpp at line 4, boost/iostreams/detail/forward.hpp at line 4, boost/iostreams/detail/fstream.hpp at line 4, boost/iostreams/detail/ios.hpp at line 4, boost/iostreams/detail/iostream.hpp at line 4, boost/iostreams/detail/is_iterator_range.hpp at line 4, boost/iostreams/detail/param_type.hpp at line 4, boost/iostreams/detail/push.hpp at line 4, boost/iostreams/detail/push_params.hpp at line 4, boost/iostreams/detail/resolve.hpp at line 4, boost/iostreams/detail/select.hpp at line 4, boost/iostreams/detail/streambuf.hpp at line 4, boost/iostreams/detail/streambuf/chainbuf.hpp at line 4, boost/iostreams/detail/streambuf/direct_streambuf.hpp at line 4, boost/iostreams/detail/streambuf/indirect_streambuf.hpp at line 4, boost/iostreams/detail/streambuf/linked_streambuf.hpp at line 4, boost/iostreams/detail/template_params.hpp at line 4, boost/iostreams/detail/translate_int_type.hpp at line 4, boost/iostreams/detail/wrap_unwrap.hpp at line 4, boost/iostreams/device/back_inserter.hpp at line 4, boost/iostreams/device/file.hpp at line 4, boost/iostreams/device/file_descriptor.hpp at line 4, boost/iostreams/filter/aggregate.hpp at line 4, boost/iostreams/filter/bzip2.hpp at line 4, boost/iostreams/filter/gzip.hpp at line 4, boost/iostreams/filter/newline.hpp at line 4, boost/iostreams/filter/regex.hpp at line 4, boost/iostreams/filter/symmetric.hpp at line 4, boost/iostreams/filter/zlib.hpp at line 4, boost/iostreams/filtering_streambuf.hpp at line 4, boost/iostreams/flush.hpp at line 4, boost/iostreams/imbue.hpp at line 4, boost/iostreams/input_sequence.hpp at line 4, boost/iostreams/invert.hpp at line 4, boost/iostreams/operations_fwd.hpp at line 4, boost/iostreams/optimal_buffer_size.hpp at line 4, boost/iostreams/output_sequence.hpp at line 4, boost/iostreams/pipeline.hpp at line 4, boost/iostreams/positioning.hpp at line 4, boost/iostreams/seek.hpp at line 4, boost/iostreams/skip.hpp at line 4, boost/iostreams/stream.hpp at line 4, boost/iostreams/stream_buffer.hpp at line 4, boost/iostreams/traits.hpp at line 4, boost/iostreams/traits_fwd.hpp at line 4, boost/iostreams/write.hpp at line 4, libs/iostreams/src/bzip2.cpp at line 4, libs/iostreams/src/file_descriptor.cpp at line 4, libs/iostreams/src/gzip.cpp at line 4, libs/iostreams/src/zlib.cpp at line 4
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/iostreams/categories.hpp [1:4]
- boost/iostreams/chain.hpp [1:4]
- boost/iostreams/char_traits.hpp [1:4]
- boost/iostreams/close.hpp [1:4]
- boost/iostreams/code_converter.hpp [1:4]
- boost/iostreams/combine.hpp [1:4]
- boost/iostreams/concepts.hpp [1:4]
- boost/iostreams/constants.hpp [1:4]
- boost/iostreams/copy.hpp [1:4]
- boost/iostreams/detail/access_control.hpp [1:4]
- boost/iostreams/detail/adapter/concept_adapter.hpp [1:4]
- boost/iostreams/detail/adapter/direct_adapter.hpp [1:4]
- boost/iostreams/detail/adapter/mode_adapter.hpp [1:4]
- boost/iostreams/detail/adapter/output_iterator_adapter.hpp [1:4]
- boost/iostreams/detail/adapter/range_adapter.hpp [1:4]
- boost/iostreams/detail/add_facet.hpp [1:4]
- boost/iostreams/detail/bool_trait_def.hpp [1:4]
- boost/iostreams/detail/broken_overload_resolution/forward.hpp [1:4]
- boost/iostreams/detail/broken_overload_resolution/stream.hpp [1:4]
- boost/iostreams/detail/broken_overload_resolution/stream_buffer.hpp [1:4]
- boost/iostreams/detail/buffer.hpp [1:4]
- boost/iostreams/detail/call_traits.hpp [1:4]
- boost/iostreams/detail/char_traits.hpp [1:4]
- boost/iostreams/detail/codecvt_helper.hpp [1:4]
- boost/iostreams/detail/codecvt_holder.hpp [1:4]
- boost/iostreams/detail/config/auto_link.hpp [1:4]
- boost/iostreams/detail/config/bzip2.hpp [1:4]
- boost/iostreams/detail/config/codecvt.hpp [1:4]
- boost/iostreams/detail/config/disable_warnings.hpp [1:4]
- boost/iostreams/detail/config/dyn_link.hpp [1:4]
- boost/iostreams/detail/config/enable_warnings.hpp [1:4]
- boost/iostreams/detail/config/gcc.hpp [1:4]
- boost/iostreams/detail/config/limits.hpp [1:4]
- boost/iostreams/detail/config/overload_resolution.hpp [1:4]
- boost/iostreams/detail/config/wide_streams.hpp [1:4]
- boost/iostreams/detail/config/zlib.hpp [1:4]
- boost/iostreams/detail/dispatch.hpp [1:4]
- boost/iostreams/detail/enable_if_stream.hpp [1:4]
- boost/iostreams/detail/error.hpp [1:4]
- boost/iostreams/detail/forward.hpp [1:4]
- boost/iostreams/detail/fstream.hpp [1:4]
- boost/iostreams/detail/ios.hpp [1:4]
- boost/iostreams/detail/iostream.hpp [1:4]
- boost/iostreams/detail/is_iterator_range.hpp [1:4]
- boost/iostreams/detail/param_type.hpp [1:4]
- boost/iostreams/detail/push.hpp [1:4]
- boost/iostreams/detail/push_params.hpp [1:4]
- boost/iostreams/detail/resolve.hpp [1:4]
- boost/iostreams/detail/select.hpp [1:4]
- boost/iostreams/detail/streambuf.hpp [1:4]
- boost/iostreams/detail/streambuf/chainbuf.hpp [1:4]
- boost/iostreams/detail/streambuf/direct_streambuf.hpp [1:4]
- boost/iostreams/detail/streambuf/indirect_streambuf.hpp [1:4]
- boost/iostreams/detail/streambuf/linked_streambuf.hpp [1:4]
- boost/iostreams/detail/template_params.hpp [1:4]
- boost/iostreams/detail/translate_int_type.hpp [1:4]
- boost/iostreams/detail/wrap_unwrap.hpp [1:4]
- boost/iostreams/device/back_inserter.hpp [1:4]
- boost/iostreams/device/file.hpp [1:4]
- boost/iostreams/device/file_descriptor.hpp [1:4]
- boost/iostreams/filter/aggregate.hpp [1:4]
- boost/iostreams/filter/bzip2.hpp [1:4]
- boost/iostreams/filter/gzip.hpp [1:4]
- boost/iostreams/filter/newline.hpp [1:4]
- boost/iostreams/filter/regex.hpp [1:4]
- boost/iostreams/filter/symmetric.hpp [1:4]
- boost/iostreams/filter/zlib.hpp [1:4]
- boost/iostreams/filtering_streambuf.hpp [1:4]
- boost/iostreams/flush.hpp [1:4]
- boost/iostreams/imbue.hpp [1:4]
- boost/iostreams/input_sequence.hpp [1:4]
- boost/iostreams/invert.hpp [1:4]
- boost/iostreams/operations_fwd.hpp [1:4]
- boost/iostreams/optimal_buffer_size.hpp [1:4]
- boost/iostreams/output_sequence.hpp [1:4]
- boost/iostreams/pipeline.hpp [1:4]
- boost/iostreams/positioning.hpp [1:4]
- boost/iostreams/seek.hpp [1:4]
- boost/iostreams/skip.hpp [1:4]
- boost/iostreams/stream.hpp [1:4]
- boost/iostreams/stream_buffer.hpp [1:4]
- boost/iostreams/traits.hpp [1:4]
- boost/iostreams/traits_fwd.hpp [1:4]
- boost/iostreams/write.hpp [1:4]
- libs/iostreams/src/bzip2.cpp [1:4]
- libs/iostreams/src/file_descriptor.cpp [1:4]
- libs/iostreams/src/gzip.cpp [1:4]
- libs/iostreams/src/zlib.cpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 127686edf197d40f94d17cffcf6f5c4f
-BELONGS ya.make
- License text:
- Copyright 2010-2012 Karsten Ahnert
- Copyright 2010-2013 Mario Mulansky
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/algebra/default_operations.hpp [9:10]
- boost/numeric/odeint/algebra/detail/for_each.hpp [9:10]
- boost/numeric/odeint/algebra/detail/macros.hpp [9:10]
- boost/numeric/odeint/algebra/vector_space_algebra.hpp [9:10]
- boost/numeric/odeint/external/thrust/thrust_operations.hpp [9:10]
- boost/numeric/odeint/stepper/implicit_euler.hpp [9:11]
- boost/numeric/odeint/stepper/stepper_categories.hpp [9:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL 127ca1debadc86c9870fadcd69654480
-BELONGS ya.make
- License text:
- // Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
- // Copyright 2004-2005 Peter Dimov
- // Copyright 2007-2012 Ion Gaztanaga
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/interprocess/smart_ptr/detail/sp_counted_base_atomic.hpp [12:14]
- boost/interprocess/smart_ptr/detail/sp_counted_impl.hpp [16:18]
- boost/serialization/detail/shared_count_132.hpp [13:13]
- boost/smart_ptr/bad_weak_ptr.hpp [13:13]
- boost/smart_ptr/detail/shared_count.hpp [13:14]
- boost/smart_ptr/detail/sp_counted_base_aix.hpp [8:10]
- boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp [13:14]
- boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp [13:15]
- boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp [7:9]
- boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp [13:14]
- boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp [13:14]
- boost/smart_ptr/detail/sp_counted_base_nt.hpp [13:14]
- boost/smart_ptr/detail/sp_counted_base_pt.hpp [13:14]
- boost/smart_ptr/detail/sp_counted_base_solaris.hpp [8:10]
- boost/smart_ptr/detail/sp_counted_base_spin.hpp [13:14]
- boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp [8:11]
- boost/smart_ptr/detail/sp_counted_base_w32.hpp [13:14]
- boost/smart_ptr/detail/sp_counted_impl.hpp [13:14]
-
-KEEP COPYRIGHT_SERVICE_LABEL 12ca7f7ec40c36a05a70ff3f155d83bc
-BELONGS ya.make
- License text:
- Copyright (c) 2007-2011 Hartmut Kaiser
- Copyright (c) Christopher Diggins 2005
- Copyright (c) Pablo Aguilar 2005
- Copyright (c) Kevlin Henney 2001
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/support/detail/hold_any.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 13087fd87820c611025de1f0f3ef01bf
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/container_fwd.hpp at line 4
- License text:
- // Copyright 2005-2011 Daniel James.
- // Distributed under the Boost Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/detail/container_fwd.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 131a38df1eeda4b85ac98993b4ee9713
-BELONGS ya.make
- License text:
- // Copyright (c) 2001-2004 Peter Dimov and Multi Media Ltd.
- // Copyright (c) 2001 David Abrahams
- // Copyright (c) 2005 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/bind/bind.hpp [13:15]
- boost/bind/mem_fn.hpp [13:15]
-
-KEEP COPYRIGHT_SERVICE_LABEL 137964c7b2b6263415eb6109939370d9
-BELONGS ya.make
- License text:
- // This file was modified by Oracle on 2013, 2014.
- // Modifications copyright (c) 2013, 2014 Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/multi/algorithms/covered_by.hpp [8:9]
- boost/geometry/multi/algorithms/within.hpp [8:9]
-
-KEEP COPYRIGHT_SERVICE_LABEL 137f142bceff932c328791882d8815c5
-BELONGS ya.make
- License text:
- // Copyright (C) 2000 Stephen Cleary
- // Copyright (C) 2008 Ion Gaztanaga
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/container/detail/singleton.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1388a67a310afe61a99a5f1d1a487e61
-BELONGS ya.make
- License text:
- // Copyright (c) 2012 Barend Gehrels, Amsterdam, the Netherlands.
- // Copyright (c) 2012 Bruno Lalande, Paris, France.
- // Copyright (c) 2012 Mateusz Loskot, London, UK.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/util/bare_type.hpp [3:5]
- boost/geometry/util/calculation_type.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 139227f655286fca021562ae1922e833
-BELONGS ya.make
- License text:
- // Copyright Robert Ramey 2007. Changes made to permit
- // application throughout the serialization library.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/serialization/singleton.hpp [9:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL 14119de8db705578a517c134230e8e03
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/reference_traits.hpp at line 4
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_traits/reference_traits.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 142fae03f8cf7efe4031b5048d19b839
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/policies/robustness/get_rescale_policy.hpp [3:6]
- boost/geometry/policies/robustness/rescale_policy.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 14331b282bfa08584de4f520cfbc1275
-BELONGS libs/system/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/system/detail/error_code.ipp at line 6, libs/system/src/error_code.cpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/system/detail/error_code.ipp [3:6]
- libs/system/src/error_code.cpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 14ba6239150c08643e3cb26043015c00
-BELONGS ya.make
- License text:
- * Copyright 2013 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/winapi/thread_pool.hpp [2:2]
- boost/winapi/tls.hpp [2:2]
- boost/winapi/waitable_timer.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 14ca74a6c57686dced35dc7c6c99c615
-BELONGS ya.make
- License text:
- // Copyright (C) 2012 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/detail/delete.hpp [1:1]
- boost/thread/detail/invoker.hpp [1:1]
- boost/thread/detail/log.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 14effa07ccbb9b0cc19de7fad21ff8f9
-BELONGS ya.make
- License text:
- // This file was modified by Oracle on 2014.
- // Modifications copyright (c) 2014 Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/centroid/translating_transformer.hpp [8:9]
- boost/geometry/core/closure.hpp [7:8]
- boost/geometry/core/point_order.hpp [7:8]
- boost/geometry/core/radius.hpp [7:8]
- boost/geometry/core/tags.hpp [7:8]
- boost/geometry/strategies/agnostic/hull_graham_andrew.hpp [5:6]
- boost/geometry/strategies/concepts/convex_hull_concept.hpp [7:8]
- boost/geometry/util/bare_type.hpp [7:8]
- boost/geometry/util/select_calculation_type.hpp [7:8]
- boost/geometry/util/select_coordinate_type.hpp [7:8]
- boost/geometry/util/select_most_precise.hpp [7:8]
- boost/geometry/views/detail/normalized_view.hpp [7:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1503802c606bb498fc119fbf3329ccce
-BELONGS ya.make
- License text:
- // Copyright (c) Jeremy Siek 2001
- // Copyright (c) Douglas Gregor 2004
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/biconnected_components.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 15236ff1a242179fe99b3db6441bef51
-BELONGS ya.make
- License text:
- // Copyright Howard Hinnant 2007-2010.
- // Copyright Vicente J. Botet Escriba 2012.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/v2/shared_mutex.hpp [6:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1526a00d8f41c15b39466eff919d34bc
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/numpy/config.hpp at line 3
- License text:
- // (C) Copyright Samuli-Petrus Korhonen 2017.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/python/numpy/config.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1545e811e1799589fc4bdfed4fdc284f
-BELONGS ya.make
- License text:
- // Copyright Aleksey Gurtovoy 2000-2004
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/O1_size.hpp [5:5]
- boost/mpl/O1_size_fwd.hpp [5:5]
- boost/mpl/advance.hpp [5:5]
- boost/mpl/advance_fwd.hpp [5:5]
- boost/mpl/alias.hpp [5:5]
- boost/mpl/and.hpp [5:5]
- boost/mpl/apply.hpp [9:9]
- boost/mpl/apply_fwd.hpp [9:9]
- boost/mpl/arithmetic.hpp [5:5]
- boost/mpl/at.hpp [5:5]
- boost/mpl/at_fwd.hpp [5:5]
- boost/mpl/aux_/O1_size_impl.hpp [5:5]
- boost/mpl/aux_/advance_backward.hpp [9:9]
- boost/mpl/aux_/advance_forward.hpp [9:9]
- boost/mpl/aux_/arithmetic_op.hpp [4:4]
- boost/mpl/aux_/at_impl.hpp [5:5]
- boost/mpl/aux_/back_impl.hpp [5:5]
- boost/mpl/aux_/begin_end_impl.hpp [5:5]
- boost/mpl/aux_/clear_impl.hpp [5:5]
- boost/mpl/aux_/comparison_op.hpp [4:4]
- boost/mpl/aux_/config/ctps.hpp [5:5]
- boost/mpl/aux_/config/msvc_typename.hpp [5:5]
- boost/mpl/aux_/config/preprocessor.hpp [5:5]
- boost/mpl/aux_/config/static_constant.hpp [5:5]
- boost/mpl/aux_/config/ttp.hpp [5:5]
- boost/mpl/aux_/config/use_preprocessed.hpp [5:5]
- boost/mpl/aux_/count_args.hpp [4:4]
- boost/mpl/aux_/count_impl.hpp [5:5]
- boost/mpl/aux_/empty_impl.hpp [5:5]
- boost/mpl/aux_/erase_impl.hpp [5:5]
- boost/mpl/aux_/erase_key_impl.hpp [5:5]
- boost/mpl/aux_/filter_iter.hpp [5:5]
- boost/mpl/aux_/find_if_pred.hpp [5:6]
- boost/mpl/aux_/fold_impl.hpp [5:5]
- boost/mpl/aux_/fold_impl_body.hpp [6:6]
- boost/mpl/aux_/front_impl.hpp [5:5]
- boost/mpl/aux_/insert_impl.hpp [5:5]
- boost/mpl/aux_/insert_range_impl.hpp [5:5]
- boost/mpl/aux_/iter_fold_impl.hpp [5:5]
- boost/mpl/aux_/joint_iter.hpp [5:5]
- boost/mpl/aux_/lambda_no_ctps.hpp [9:9]
- boost/mpl/aux_/largest_int.hpp [5:5]
- boost/mpl/aux_/logical_op.hpp [2:2]
- boost/mpl/aux_/msvc_dtw.hpp [2:2]
- boost/mpl/aux_/msvc_never_true.hpp [5:5]
- boost/mpl/aux_/nested_type_wknd.hpp [5:5]
- boost/mpl/aux_/numeric_op.hpp [8:8]
- boost/mpl/aux_/pop_back_impl.hpp [5:5]
- boost/mpl/aux_/pop_front_impl.hpp [5:5]
- boost/mpl/aux_/preprocessed/bcc/advance_backward.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc/advance_forward.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc/and.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc/apply.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc/apply_fwd.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc/bind_fwd.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc/bitand.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc/bitor.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc/bitxor.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc/deque.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc/divides.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc/equal_to.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc/fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc/greater.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc/greater_equal.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc/iter_fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc/lambda_no_ctps.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc/less.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc/less_equal.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc/list.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc/list_c.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc/map.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc/minus.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc/modulus.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc/not_equal_to.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc/or.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc/plus.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc/reverse_fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc/reverse_iter_fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc/set.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc/set_c.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc/shift_left.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc/shift_right.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc/times.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc/vector.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/advance_backward.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/advance_forward.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/and.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/apply.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/apply_fwd.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/apply_wrap.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/bind_fwd.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/bitand.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc551/bitor.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc551/bitxor.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc551/deque.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/divides.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/equal_to.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/greater.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/greater_equal.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/iter_fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/lambda_no_ctps.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/less.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/less_equal.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/list.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/list_c.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/map.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/minus.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/modulus.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/not_equal_to.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/or.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/plus.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/quote.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/reverse_fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/reverse_iter_fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/set.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/set_c.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/shift_left.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc551/shift_right.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc551/times.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/vector.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/vector_c.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/advance_backward.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/advance_forward.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/and.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/apply.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/apply_fwd.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/bind_fwd.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/bitand.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc_pre590/bitor.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc_pre590/bitxor.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc_pre590/deque.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/divides.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/equal_to.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/greater.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/greater_equal.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/lambda_no_ctps.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/less.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/less_equal.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/list.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/list_c.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/map.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/minus.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/modulus.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/not_equal_to.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/or.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/plus.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/reverse_fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/reverse_iter_fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/set.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/set_c.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/shift_left.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc_pre590/shift_right.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc_pre590/times.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/vector.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/advance_backward.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/advance_forward.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/and.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/apply.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/apply_fwd.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/apply_wrap.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/bind_fwd.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/bitand.hpp [2:3]
- boost/mpl/aux_/preprocessed/dmc/bitor.hpp [2:3]
- boost/mpl/aux_/preprocessed/dmc/bitxor.hpp [2:3]
- boost/mpl/aux_/preprocessed/dmc/deque.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/divides.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/equal_to.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/greater.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/greater_equal.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/iter_fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/lambda_no_ctps.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/less.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/less_equal.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/list.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/list_c.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/map.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/minus.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/modulus.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/not_equal_to.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/or.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/plus.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/quote.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/reverse_fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/reverse_iter_fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/set.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/set_c.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/shift_left.hpp [2:3]
- boost/mpl/aux_/preprocessed/dmc/shift_right.hpp [2:3]
- boost/mpl/aux_/preprocessed/dmc/times.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/vector.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/vector_c.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/advance_backward.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/advance_forward.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/and.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/apply.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/bitand.hpp [2:3]
- boost/mpl/aux_/preprocessed/gcc/bitor.hpp [2:3]
- boost/mpl/aux_/preprocessed/gcc/bitxor.hpp [2:3]
- boost/mpl/aux_/preprocessed/gcc/deque.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/divides.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/equal_to.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/greater.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/greater_equal.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/iter_fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/less.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/less_equal.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/list.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/list_c.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/map.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/minus.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/modulus.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/not_equal_to.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/or.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/plus.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/quote.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/reverse_iter_fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/set.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/set_c.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/shift_left.hpp [2:3]
- boost/mpl/aux_/preprocessed/gcc/shift_right.hpp [2:3]
- boost/mpl/aux_/preprocessed/gcc/times.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/vector.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/vector_c.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/advance_backward.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/advance_forward.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/and.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/apply.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/apply_fwd.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/apply_wrap.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/bind_fwd.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/bitand.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc60/bitor.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc60/bitxor.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc60/deque.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/divides.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/equal_to.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/greater.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/greater_equal.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/iter_fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/lambda_no_ctps.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/less.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/less_equal.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/list.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/list_c.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/map.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/minus.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/modulus.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/not_equal_to.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/or.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/plus.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/quote.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/reverse_fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/reverse_iter_fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/set.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/set_c.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/shift_left.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc60/shift_right.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc60/times.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/vector.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/vector_c.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/advance_backward.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/advance_forward.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/and.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/apply.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/apply_fwd.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/apply_wrap.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/bind_fwd.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/bitand.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc70/bitor.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc70/bitxor.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc70/deque.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/divides.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/equal_to.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/greater.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/greater_equal.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/iter_fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/lambda_no_ctps.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/less.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/less_equal.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/list.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/list_c.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/map.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/minus.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/modulus.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/not_equal_to.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/or.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/plus.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/quote.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/reverse_fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/reverse_iter_fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/set.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/set_c.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/shift_left.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc70/shift_right.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc70/times.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/vector.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/vector_c.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/advance_backward.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/advance_forward.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/and.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/apply.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/apply_fwd.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/apply_wrap.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/bind_fwd.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/bitand.hpp [2:3]
- boost/mpl/aux_/preprocessed/mwcw/bitor.hpp [2:3]
- boost/mpl/aux_/preprocessed/mwcw/bitxor.hpp [2:3]
- boost/mpl/aux_/preprocessed/mwcw/deque.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/divides.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/equal_to.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/greater.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/greater_equal.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/iter_fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/lambda_no_ctps.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/less.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/less_equal.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/list.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/list_c.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/map.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/minus.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/modulus.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/not_equal_to.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/or.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/plus.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/quote.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/reverse_fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/reverse_iter_fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/set.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/set_c.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/shift_left.hpp [2:3]
- boost/mpl/aux_/preprocessed/mwcw/shift_right.hpp [2:3]
- boost/mpl/aux_/preprocessed/mwcw/times.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/vector.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/vector_c.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/advance_backward.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/advance_forward.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/and.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/apply.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/apply_fwd.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/apply_wrap.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/bind_fwd.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/bitand.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ctps/bitor.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ctps/bitxor.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ctps/deque.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/divides.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/equal_to.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/greater.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/greater_equal.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/iter_fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/lambda_no_ctps.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/less.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/less_equal.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/list.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/list_c.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/map.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/minus.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/modulus.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/not_equal_to.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/or.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/plus.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/quote.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/reverse_fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/reverse_iter_fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/set.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/set_c.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/shift_left.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ctps/shift_right.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ctps/times.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/vector.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/vector_c.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/advance_backward.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/advance_forward.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/and.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/apply.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/apply_fwd.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/apply_wrap.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/bind_fwd.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/bitand.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ttp/bitor.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ttp/bitxor.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ttp/deque.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/divides.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/equal_to.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/greater.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/greater_equal.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/iter_fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/lambda_no_ctps.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/less.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/less_equal.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/list.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/list_c.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/map.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/minus.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/modulus.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/not_equal_to.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/or.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/plus.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/quote.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/reverse_fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/reverse_iter_fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/set.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/set_c.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/shift_left.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ttp/shift_right.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ttp/times.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/vector.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/vector_c.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/advance_backward.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/advance_forward.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/and.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/apply.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/apply_fwd.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/apply_wrap.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/bind_fwd.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/bitand.hpp [2:3]
- boost/mpl/aux_/preprocessed/plain/bitor.hpp [2:3]
- boost/mpl/aux_/preprocessed/plain/bitxor.hpp [2:3]
- boost/mpl/aux_/preprocessed/plain/deque.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/divides.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/equal_to.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/greater.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/greater_equal.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/iter_fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/lambda_no_ctps.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/less.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/less_equal.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/list.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/list_c.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/map.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/minus.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/modulus.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/not_equal_to.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/or.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/plus.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/quote.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/reverse_fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/reverse_iter_fold_impl.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/set.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/set_c.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/shift_left.hpp [2:3]
- boost/mpl/aux_/preprocessed/plain/shift_right.hpp [2:3]
- boost/mpl/aux_/preprocessed/plain/times.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/vector.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/vector_c.hpp [2:2]
- boost/mpl/aux_/preprocessor/def_params_tail.hpp [5:5]
- boost/mpl/aux_/preprocessor/enum.hpp [5:5]
- boost/mpl/aux_/preprocessor/ext_params.hpp [5:5]
- boost/mpl/aux_/preprocessor/filter_params.hpp [5:5]
- boost/mpl/aux_/preprocessor/params.hpp [5:5]
- boost/mpl/aux_/preprocessor/partial_spec_params.hpp [5:5]
- boost/mpl/aux_/range_c/O1_size.hpp [5:5]
- boost/mpl/aux_/range_c/back.hpp [5:5]
- boost/mpl/aux_/range_c/empty.hpp [5:5]
- boost/mpl/aux_/range_c/front.hpp [5:5]
- boost/mpl/aux_/range_c/iterator.hpp [5:5]
- boost/mpl/aux_/range_c/size.hpp [5:5]
- boost/mpl/aux_/range_c/tag.hpp [5:5]
- boost/mpl/aux_/reverse_fold_impl.hpp [5:5]
- boost/mpl/aux_/reverse_fold_impl_body.hpp [6:6]
- boost/mpl/aux_/reverse_iter_fold_impl.hpp [5:5]
- boost/mpl/aux_/shift_op.hpp [4:4]
- boost/mpl/aux_/single_element_iter.hpp [5:5]
- boost/mpl/aux_/size_impl.hpp [5:5]
- boost/mpl/aux_/transform_iter.hpp [5:5]
- boost/mpl/aux_/type_wrapper.hpp [5:6]
- boost/mpl/aux_/value_wknd.hpp [5:5]
- boost/mpl/aux_/yes_no.hpp [5:5]
- boost/mpl/back.hpp [5:5]
- boost/mpl/back_fwd.hpp [5:5]
- boost/mpl/base.hpp [5:5]
- boost/mpl/begin_end.hpp [5:5]
- boost/mpl/begin_end_fwd.hpp [5:5]
- boost/mpl/bind_fwd.hpp [9:9]
- boost/mpl/bitxor.hpp [5:6]
- boost/mpl/bool.hpp [5:5]
- boost/mpl/bool_fwd.hpp [5:5]
- boost/mpl/clear.hpp [5:5]
- boost/mpl/clear_fwd.hpp [5:5]
- boost/mpl/comparison.hpp [5:5]
- boost/mpl/copy.hpp [5:6]
- boost/mpl/copy_if.hpp [5:6]
- boost/mpl/count.hpp [5:5]
- boost/mpl/count_fwd.hpp [5:5]
- boost/mpl/deque.hpp [5:5]
- boost/mpl/distance.hpp [5:5]
- boost/mpl/distance_fwd.hpp [5:5]
- boost/mpl/divides.hpp [5:5]
- boost/mpl/empty.hpp [5:5]
- boost/mpl/empty_fwd.hpp [5:5]
- boost/mpl/equal.hpp [5:5]
- boost/mpl/equal_to.hpp [5:5]
- boost/mpl/erase.hpp [5:5]
- boost/mpl/erase_fwd.hpp [5:5]
- boost/mpl/erase_key.hpp [5:5]
- boost/mpl/erase_key_fwd.hpp [5:5]
- boost/mpl/eval_if.hpp [5:5]
- boost/mpl/filter_view.hpp [5:5]
- boost/mpl/find_if.hpp [5:5]
- boost/mpl/front.hpp [5:5]
- boost/mpl/front_fwd.hpp [5:5]
- boost/mpl/greater.hpp [5:5]
- boost/mpl/greater_equal.hpp [5:5]
- boost/mpl/identity.hpp [5:5]
- boost/mpl/if.hpp [5:5]
- boost/mpl/insert.hpp [5:5]
- boost/mpl/insert_fwd.hpp [5:5]
- boost/mpl/insert_range.hpp [5:5]
- boost/mpl/insert_range_fwd.hpp [5:5]
- boost/mpl/int.hpp [5:5]
- boost/mpl/int_fwd.hpp [5:5]
- boost/mpl/iterator_category.hpp [5:5]
- boost/mpl/iterator_tags.hpp [5:5]
- boost/mpl/joint_view.hpp [5:5]
- boost/mpl/less.hpp [5:5]
- boost/mpl/less_equal.hpp [5:5]
- boost/mpl/limits/arity.hpp [5:5]
- boost/mpl/limits/list.hpp [5:5]
- boost/mpl/limits/map.hpp [5:5]
- boost/mpl/limits/set.hpp [5:5]
- boost/mpl/limits/unrolling.hpp [5:5]
- boost/mpl/limits/vector.hpp [5:5]
- boost/mpl/list.hpp [5:5]
- boost/mpl/list/aux_/O1_size.hpp [5:5]
- boost/mpl/list/aux_/begin_end.hpp [5:5]
- boost/mpl/list/aux_/clear.hpp [5:5]
- boost/mpl/list/aux_/empty.hpp [5:5]
- boost/mpl/list/aux_/front.hpp [5:5]
- boost/mpl/list/aux_/item.hpp [5:5]
- boost/mpl/list/aux_/iterator.hpp [5:5]
- boost/mpl/list/aux_/numbered.hpp [4:5]
- boost/mpl/list/aux_/numbered_c.hpp [4:4]
- boost/mpl/list/aux_/pop_front.hpp [5:5]
- boost/mpl/list/aux_/preprocessed/plain/list10.hpp [2:2]
- boost/mpl/list/aux_/preprocessed/plain/list10_c.hpp [2:2]
- boost/mpl/list/aux_/preprocessed/plain/list20.hpp [2:2]
- boost/mpl/list/aux_/preprocessed/plain/list20_c.hpp [2:2]
- boost/mpl/list/aux_/preprocessed/plain/list30.hpp [2:2]
- boost/mpl/list/aux_/preprocessed/plain/list30_c.hpp [2:2]
- boost/mpl/list/aux_/preprocessed/plain/list40.hpp [2:2]
- boost/mpl/list/aux_/preprocessed/plain/list40_c.hpp [2:2]
- boost/mpl/list/aux_/preprocessed/plain/list50.hpp [2:2]
- boost/mpl/list/aux_/preprocessed/plain/list50_c.hpp [2:2]
- boost/mpl/list/aux_/push_back.hpp [5:5]
- boost/mpl/list/aux_/push_front.hpp [5:5]
- boost/mpl/list/aux_/size.hpp [5:5]
- boost/mpl/list/aux_/tag.hpp [5:5]
- boost/mpl/list/list0.hpp [5:5]
- boost/mpl/list/list0_c.hpp [5:5]
- boost/mpl/list/list10.hpp [5:5]
- boost/mpl/list/list10_c.hpp [5:5]
- boost/mpl/list/list20.hpp [5:5]
- boost/mpl/list/list20_c.hpp [5:5]
- boost/mpl/list/list30.hpp [5:5]
- boost/mpl/list/list30_c.hpp [5:5]
- boost/mpl/list/list40.hpp [5:5]
- boost/mpl/list/list40_c.hpp [5:5]
- boost/mpl/list/list50.hpp [5:5]
- boost/mpl/list/list50_c.hpp [5:5]
- boost/mpl/list_c.hpp [5:5]
- boost/mpl/logical.hpp [5:5]
- boost/mpl/long.hpp [5:5]
- boost/mpl/long_fwd.hpp [5:5]
- boost/mpl/map.hpp [5:5]
- boost/mpl/map/aux_/numbered.hpp [6:6]
- boost/mpl/map/aux_/preprocessed/no_ctps/map10.hpp [2:3]
- boost/mpl/map/aux_/preprocessed/no_ctps/map20.hpp [2:3]
- boost/mpl/map/aux_/preprocessed/no_ctps/map30.hpp [2:3]
- boost/mpl/map/aux_/preprocessed/no_ctps/map40.hpp [2:3]
- boost/mpl/map/aux_/preprocessed/no_ctps/map50.hpp [2:3]
- boost/mpl/map/aux_/preprocessed/plain/map10.hpp [2:3]
- boost/mpl/map/aux_/preprocessed/plain/map20.hpp [2:3]
- boost/mpl/map/aux_/preprocessed/plain/map30.hpp [2:3]
- boost/mpl/map/aux_/preprocessed/plain/map40.hpp [2:3]
- boost/mpl/map/aux_/preprocessed/plain/map50.hpp [2:3]
- boost/mpl/map/aux_/preprocessed/typeof_based/map10.hpp [2:3]
- boost/mpl/map/aux_/preprocessed/typeof_based/map20.hpp [2:3]
- boost/mpl/map/aux_/preprocessed/typeof_based/map30.hpp [2:3]
- boost/mpl/map/aux_/preprocessed/typeof_based/map40.hpp [2:3]
- boost/mpl/map/aux_/preprocessed/typeof_based/map50.hpp [2:3]
- boost/mpl/map/map10.hpp [5:6]
- boost/mpl/map/map20.hpp [5:6]
- boost/mpl/map/map30.hpp [5:6]
- boost/mpl/map/map40.hpp [5:6]
- boost/mpl/map/map50.hpp [5:6]
- boost/mpl/math/fixed_c.hpp [5:5]
- boost/mpl/math/is_even.hpp [5:5]
- boost/mpl/math/rational_c.hpp [5:5]
- boost/mpl/max_element.hpp [5:5]
- boost/mpl/minus.hpp [5:5]
- boost/mpl/modulus.hpp [5:5]
- boost/mpl/multiplies.hpp [5:5]
- boost/mpl/negate.hpp [5:5]
- boost/mpl/next_prior.hpp [5:5]
- boost/mpl/not.hpp [5:5]
- boost/mpl/not_equal_to.hpp [5:5]
- boost/mpl/or.hpp [5:5]
- boost/mpl/plus.hpp [5:5]
- boost/mpl/pop_back.hpp [5:5]
- boost/mpl/pop_back_fwd.hpp [5:5]
- boost/mpl/pop_front.hpp [5:5]
- boost/mpl/pop_front_fwd.hpp [5:5]
- boost/mpl/push_back.hpp [5:5]
- boost/mpl/push_back_fwd.hpp [5:5]
- boost/mpl/push_front.hpp [5:5]
- boost/mpl/push_front_fwd.hpp [5:5]
- boost/mpl/range_c.hpp [5:5]
- boost/mpl/remove.hpp [5:6]
- boost/mpl/remove_if.hpp [5:6]
- boost/mpl/replace.hpp [5:7]
- boost/mpl/replace_if.hpp [5:7]
- boost/mpl/reverse.hpp [5:5]
- boost/mpl/same_as.hpp [5:5]
- boost/mpl/sequence_tag.hpp [5:5]
- boost/mpl/sequence_tag_fwd.hpp [5:5]
- boost/mpl/set.hpp [5:5]
- boost/mpl/set/aux_/numbered.hpp [6:6]
- boost/mpl/set/aux_/numbered_c.hpp [6:6]
- boost/mpl/set/aux_/preprocessed/plain/set10.hpp [2:3]
- boost/mpl/set/aux_/preprocessed/plain/set10_c.hpp [2:3]
- boost/mpl/set/aux_/preprocessed/plain/set20.hpp [2:3]
- boost/mpl/set/aux_/preprocessed/plain/set20_c.hpp [2:3]
- boost/mpl/set/aux_/preprocessed/plain/set30.hpp [2:3]
- boost/mpl/set/aux_/preprocessed/plain/set30_c.hpp [2:3]
- boost/mpl/set/aux_/preprocessed/plain/set40.hpp [2:3]
- boost/mpl/set/aux_/preprocessed/plain/set40_c.hpp [2:3]
- boost/mpl/set/aux_/preprocessed/plain/set50.hpp [2:3]
- boost/mpl/set/aux_/preprocessed/plain/set50_c.hpp [2:3]
- boost/mpl/set/set10.hpp [5:6]
- boost/mpl/set/set10_c.hpp [5:6]
- boost/mpl/set/set20.hpp [5:6]
- boost/mpl/set/set20_c.hpp [5:6]
- boost/mpl/set/set30.hpp [5:6]
- boost/mpl/set/set30_c.hpp [5:6]
- boost/mpl/set/set40.hpp [5:6]
- boost/mpl/set/set40_c.hpp [5:6]
- boost/mpl/set/set50.hpp [5:6]
- boost/mpl/set/set50_c.hpp [5:6]
- boost/mpl/set_c.hpp [5:5]
- boost/mpl/shift_left.hpp [5:6]
- boost/mpl/shift_right.hpp [5:6]
- boost/mpl/single_view.hpp [5:5]
- boost/mpl/size.hpp [5:5]
- boost/mpl/size_fwd.hpp [5:5]
- boost/mpl/size_t.hpp [5:5]
- boost/mpl/size_t_fwd.hpp [5:5]
- boost/mpl/times.hpp [5:5]
- boost/mpl/transform.hpp [5:6]
- boost/mpl/transform_view.hpp [5:5]
- boost/mpl/unique.hpp [5:6]
- boost/mpl/vector.hpp [5:5]
- boost/mpl/vector/aux_/O1_size.hpp [5:5]
- boost/mpl/vector/aux_/at.hpp [5:5]
- boost/mpl/vector/aux_/back.hpp [5:5]
- boost/mpl/vector/aux_/begin_end.hpp [5:5]
- boost/mpl/vector/aux_/clear.hpp [5:5]
- boost/mpl/vector/aux_/empty.hpp [5:5]
- boost/mpl/vector/aux_/item.hpp [5:5]
- boost/mpl/vector/aux_/iterator.hpp [5:5]
- boost/mpl/vector/aux_/numbered.hpp [6:6]
- boost/mpl/vector/aux_/numbered_c.hpp [6:6]
- boost/mpl/vector/aux_/pop_back.hpp [5:5]
- boost/mpl/vector/aux_/pop_front.hpp [5:5]
- boost/mpl/vector/aux_/preprocessed/no_ctps/vector10.hpp [2:2]
- boost/mpl/vector/aux_/preprocessed/no_ctps/vector10_c.hpp [2:2]
- boost/mpl/vector/aux_/preprocessed/no_ctps/vector20.hpp [2:2]
- boost/mpl/vector/aux_/preprocessed/no_ctps/vector20_c.hpp [2:2]
- boost/mpl/vector/aux_/preprocessed/no_ctps/vector30.hpp [2:2]
- boost/mpl/vector/aux_/preprocessed/no_ctps/vector30_c.hpp [2:2]
- boost/mpl/vector/aux_/preprocessed/no_ctps/vector40.hpp [2:2]
- boost/mpl/vector/aux_/preprocessed/no_ctps/vector40_c.hpp [2:2]
- boost/mpl/vector/aux_/preprocessed/no_ctps/vector50.hpp [2:2]
- boost/mpl/vector/aux_/preprocessed/no_ctps/vector50_c.hpp [2:2]
- boost/mpl/vector/aux_/preprocessed/plain/vector10.hpp [2:2]
- boost/mpl/vector/aux_/preprocessed/plain/vector10_c.hpp [2:2]
- boost/mpl/vector/aux_/preprocessed/plain/vector20.hpp [2:2]
- boost/mpl/vector/aux_/preprocessed/plain/vector20_c.hpp [2:2]
- boost/mpl/vector/aux_/preprocessed/plain/vector30.hpp [2:2]
- boost/mpl/vector/aux_/preprocessed/plain/vector30_c.hpp [2:2]
- boost/mpl/vector/aux_/preprocessed/plain/vector40.hpp [2:2]
- boost/mpl/vector/aux_/preprocessed/plain/vector40_c.hpp [2:2]
- boost/mpl/vector/aux_/preprocessed/plain/vector50.hpp [2:2]
- boost/mpl/vector/aux_/preprocessed/plain/vector50_c.hpp [2:2]
- boost/mpl/vector/aux_/preprocessed/typeof_based/vector10.hpp [2:2]
- boost/mpl/vector/aux_/preprocessed/typeof_based/vector10_c.hpp [2:2]
- boost/mpl/vector/aux_/preprocessed/typeof_based/vector20.hpp [2:2]
- boost/mpl/vector/aux_/preprocessed/typeof_based/vector20_c.hpp [2:2]
- boost/mpl/vector/aux_/preprocessed/typeof_based/vector30.hpp [2:2]
- boost/mpl/vector/aux_/preprocessed/typeof_based/vector30_c.hpp [2:2]
- boost/mpl/vector/aux_/preprocessed/typeof_based/vector40.hpp [2:2]
- boost/mpl/vector/aux_/preprocessed/typeof_based/vector40_c.hpp [2:2]
- boost/mpl/vector/aux_/preprocessed/typeof_based/vector50.hpp [2:2]
- boost/mpl/vector/aux_/preprocessed/typeof_based/vector50_c.hpp [2:2]
- boost/mpl/vector/aux_/push_back.hpp [5:5]
- boost/mpl/vector/aux_/push_front.hpp [5:5]
- boost/mpl/vector/aux_/size.hpp [5:5]
- boost/mpl/vector/aux_/tag.hpp [5:5]
- boost/mpl/vector/aux_/vector0.hpp [5:5]
- boost/mpl/vector/vector0.hpp [5:5]
- boost/mpl/vector/vector0_c.hpp [5:5]
- boost/mpl/vector/vector10.hpp [5:5]
- boost/mpl/vector/vector10_c.hpp [5:5]
- boost/mpl/vector/vector20.hpp [5:5]
- boost/mpl/vector/vector20_c.hpp [5:5]
- boost/mpl/vector/vector30.hpp [5:5]
- boost/mpl/vector/vector30_c.hpp [5:5]
- boost/mpl/vector/vector40.hpp [5:5]
- boost/mpl/vector/vector40_c.hpp [5:5]
- boost/mpl/vector/vector50.hpp [5:5]
- boost/mpl/vector/vector50_c.hpp [5:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 15ae8814b00bf7c2e807dfdd8c253473
-BELONGS ya.make
- License text:
- * Copyright (c) 1998
- * Silicon Graphics Computer Systems, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/interprocess/streams/bufferstream.hpp [17:18]
- boost/interprocess/streams/vectorstream.hpp [17:18]
-
-KEEP COPYRIGHT_SERVICE_LABEL 15d50536bcbda2f7a36d5d623fb19036
-BELONGS ya.make
- License text:
- // Copyright (C) 2014, Andrzej Krzemienski.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/optional/bad_optional_access.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 15e7036f24a807be04d8a05d49c0ecb9
-BELONGS ya.make
- License text:
- // Copyright (C) 2005-2006 Douglas Gregor <doug.gregor -at- gmail.com>.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpi/collectives.hpp [1:1]
- boost/mpi/collectives/all_reduce.hpp [1:2]
- boost/mpi/collectives_fwd.hpp [1:1]
- boost/mpi/exception.hpp [1:1]
- boost/mpi/operations.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 16032898d1264a298670223659b54ff0
-BELONGS ya.make
- License text:
- // Copyright (C) 2015 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/csbl/queue.hpp [1:1]
- boost/thread/executors/serial_executor_cont.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 160f7dd82fcdd6e80a6e06d84c5a5cca
-BELONGS ya.make
- License text:
- // Copyright Howard Hinnant 2007-2010.
- // Copyright Vicente J. Botet Escriba 2012.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/v2/shared_mutex.hpp [6:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1638af8b9d8a13b7d2e95217a0492d14
-BELONGS ya.make
- License text:
- // (C) Copyright Andrew Sutton 2007
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/geodesic_distance.hpp [1:1]
- boost/graph/property_maps/null_property_map.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 166fc3d16b64c3b6284ed28945c457da
-BELONGS ya.make
- License text:
- Copyright 2009-2012 Karsten Ahnert
- Copyright 2009-2012 Mario Mulansky
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/algebra/multi_array_algebra.hpp [9:10]
- boost/numeric/odeint/external/blaze/blaze_algebra_dispatcher.hpp [9:10]
- boost/numeric/odeint/external/blaze/blaze_resize.hpp [9:10]
- boost/numeric/odeint/external/eigen/eigen.hpp [9:10]
- boost/numeric/odeint/external/eigen/eigen_algebra_dispatcher.hpp [9:10]
- boost/numeric/odeint/iterator/impl/adaptive_iterator_impl.hpp [9:10]
- boost/numeric/odeint/iterator/integrate/detail/integrate_const.hpp [9:10]
- boost/numeric/odeint/iterator/integrate/detail/integrate_n_steps.hpp [9:10]
- boost/numeric/odeint/iterator/integrate/detail/integrate_times.hpp [9:10]
- boost/numeric/odeint/stepper/velocity_verlet.hpp [9:10]
- boost/numeric/odeint/util/multi_array_adaption.hpp [9:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1734766e3cba0021c51f6c2cd7aa54b1
-BELONGS ya.make
- License text:
- // Copyright (C) 2011, 2016 Tim Blechmann
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/lockfree/detail/copy_payload.hpp [3:3]
- boost/lockfree/detail/parameter.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 173fdc8f8d22cde2d6542e79b1d5d711
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/statechart/in_state_reaction.hpp at line 6
- License text:
- // Copyright 2005-2008 Andreas Huber Doenni
- // Distributed under the Boost Software License, Version 1.0. (See accompany-
- // ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/statechart/in_state_reaction.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 17933b826f084cbdab08e8129bb2d208
-BELONGS ya.make
- License text:
- Copyright (c) 2014 Christoph Weiss
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/include/hash.hpp [2:2]
- boost/fusion/sequence/hash.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 17a7391070cb12a423a9e2dbf8d73e1f
-BELONGS ya.make
- License text:
- Copyright (c) 2011 Jamboree
- Copyright (c) 2014 Lee Clagett
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/x3/directive/seek.hpp [2:3]
- boost/spirit/repository/home/qi/directive/seek.hpp [2:2]
- boost/spirit/repository/home/support/seek.hpp [2:2]
- boost/spirit/repository/include/qi_seek.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 17b350b3a7cc10d64ea2dfae64d3f340
-BELONGS ya.make
- License text:
- // Copyright (C) 2004-2008 The Trustees of Indiana University.
- // Copyright (C) 2007 Douglas Gregor <doug.gregor@gmail.com>
- // Copyright (C) 2007 Matthias Troyer <troyer@boost-consulting.com>
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/distributed/detail/mpi_process_group.ipp [3:5]
- boost/graph/distributed/detail/tag_allocator.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 17b5775897efd9ca319340c209a0aa32
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/ptr_container/detail/is_convertible.hpp at line 5, boost/ptr_container/detail/static_move_ptr.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/ptr_container/detail/is_convertible.hpp [1:5]
- boost/ptr_container/detail/static_move_ptr.hpp [1:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 17fb6732a4d2890917643ed3e710bbe7
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/function/function_base.hpp at line 6, boost/function/function_template.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/function/function_base.hpp [3:6]
- boost/function/function_template.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 186be276c136601da52c329d686ef896
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/adaptor/adjacent_filtered.hpp at line 5, boost/range/adaptor/argument_fwd.hpp at line 5, boost/range/adaptor/filtered.hpp at line 5, boost/range/adaptor/indirected.hpp at line 5, boost/range/adaptor/map.hpp at line 5, boost/range/adaptor/reversed.hpp at line 5, boost/range/adaptor/sliced.hpp at line 5, boost/range/adaptor/transformed.hpp at line 5, boost/range/adaptor/uniqued.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/range/adaptor/adjacent_filtered.hpp [3:5]
- boost/range/adaptor/argument_fwd.hpp [3:5]
- boost/range/adaptor/filtered.hpp [3:5]
- boost/range/adaptor/indirected.hpp [3:5]
- boost/range/adaptor/map.hpp [3:5]
- boost/range/adaptor/reversed.hpp [3:5]
- boost/range/adaptor/sliced.hpp [3:5]
- boost/range/adaptor/transformed.hpp [3:5]
- boost/range/adaptor/uniqued.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1877c8c0d80d7b1ea728c21778641fa6
-BELONGS ya.make
- License text:
- // (C) Copyright John Maddock 2000.
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/container/detail/type_traits.hpp [2:3]
- boost/interprocess/detail/type_traits.hpp [2:3]
- boost/move/detail/type_traits.hpp [2:3]
- boost/static_assert.hpp [1:3]
- boost/type_traits.hpp [1:3]
- boost/type_traits/alignment_of.hpp [2:4]
- boost/type_traits/alignment_traits.hpp [2:4]
- boost/type_traits/is_polymorphic.hpp [1:3]
- boost/type_traits/type_with_alignment.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 188ba6bce942da3ec5a7d3e219272d13
-BELONGS ya.make
- License text:
- // Copyright (C) 2002-2007 Marcin Kalicinski
- // Copyright (C) 2007 Alexey Baskakov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/property_tree/detail/xml_parser_writer_settings.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 189d46e9447d77111b28e7945880691c
-BELONGS ya.make
- License text:
- // Copyright Aleksey Gurtovoy 2004
- // Copyright Alexander Nasonov 2004
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/empty_sequence.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 18b9eb6943a3e523664fc674daba703a
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/test/impl/execution_monitor.ipp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 18bad9344d7cba762fbd435259d6301b
-BELONGS libs/python/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/workaround.hpp at line 3, boost/detail/indirect_traits.hpp at line 3, boost/detail/workaround.hpp at line 3, boost/mpl/aux_/config/bind.hpp at line 7, boost/python.hpp at line 3, boost/python/arg_from_python.hpp at line 3, boost/python/args.hpp at line 3, boost/python/args_fwd.hpp at line 3, boost/python/back_reference.hpp at line 3, boost/python/base_type_traits.hpp at line 3, boost/python/bases.hpp at line 3, boost/python/borrowed.hpp at line 3, boost/python/call.hpp at line 5, boost/python/call_method.hpp at line 5, boost/python/cast.hpp at line 3, boost/python/class.hpp at line 3, boost/python/class_fwd.hpp at line 3, boost/python/converter/arg_from_python.hpp at line 3, boost/python/converter/arg_to_python.hpp at line 3, boost/python/converter/arg_to_python_base.hpp at line 3, boost/python/converter/as_to_python_function.hpp at line 3, boost/python/converter/builtin_converters.hpp at line 3, boost/python/converter/constructor_function.hpp at line 3, boost/python/converter/convertible_function.hpp at line 3, boost/python/converter/from_python.hpp at line 3, boost/python/converter/implicit.hpp at line 3, boost/python/converter/obj_mgr_arg_from_python.hpp at line 3, boost/python/converter/object_manager.hpp at line 3, boost/python/converter/pointer_type_id.hpp at line 3, boost/python/converter/pyobject_traits.hpp at line 3, boost/python/converter/pyobject_type.hpp at line 3, boost/python/converter/pytype_object_mgr_traits.hpp at line 3, boost/python/converter/registered.hpp at line 3, boost/python/converter/registered_pointee.hpp at line 3, boost/python/converter/registrations.hpp at line 3, boost/python/converter/return_from_python.hpp at line 3, boost/python/converter/rvalue_from_python_data.hpp at line 3, boost/python/converter/shared_ptr_deleter.hpp at line 3, boost/python/converter/shared_ptr_from_python.hpp at line 3, boost/python/converter/to_python_function_type.hpp at line 3, boost/python/copy_const_reference.hpp at line 3, boost/python/copy_non_const_reference.hpp at line 3, boost/python/data_members.hpp at line 3, boost/python/def.hpp at line 3, boost/python/default_call_policies.hpp at line 3, boost/python/detail/aix_init_module.hpp at line 3, boost/python/detail/api_placeholder.hpp at line 3, boost/python/detail/borrowed_ptr.hpp at line 5, boost/python/detail/caller.hpp at line 5, boost/python/detail/construct.hpp at line 3, boost/python/detail/convertible.hpp at line 3, boost/python/detail/cv_category.hpp at line 3, boost/python/detail/decorated_type_id.hpp at line 3, boost/python/detail/decref_guard.hpp at line 3, boost/python/detail/def_helper.hpp at line 3, boost/python/detail/dependent.hpp at line 3, boost/python/detail/destroy.hpp at line 3, boost/python/detail/exception_handler.hpp at line 3, boost/python/detail/force_instantiate.hpp at line 3, boost/python/detail/if_else.hpp at line 3, boost/python/detail/invoke.hpp at line 5, boost/python/detail/make_keyword_range_fn.hpp at line 3, boost/python/detail/make_tuple.hpp at line 4, boost/python/detail/map_entry.hpp at line 3, boost/python/detail/mpl_lambda.hpp at line 3, boost/python/detail/msvc_typeinfo.hpp at line 3, boost/python/detail/not_specified.hpp at line 3, boost/python/detail/operator_id.hpp at line 3, boost/python/detail/overloads_fwd.hpp at line 3, boost/python/detail/pointee.hpp at line 3, boost/python/detail/preprocessor.hpp at line 3, boost/python/detail/raw_pyobject.hpp at line 3, boost/python/detail/referent_storage.hpp at line 3, boost/python/detail/result.hpp at line 5, boost/python/detail/scope.hpp at line 3, boost/python/detail/signature.hpp at line 5, boost/python/detail/string_literal.hpp at line 3, boost/python/detail/target.hpp at line 5, boost/python/detail/translate_exception.hpp at line 3, boost/python/detail/type_list.hpp at line 3, boost/python/detail/type_list_impl.hpp at line 4, boost/python/detail/unwind_type.hpp at line 3, boost/python/detail/void_ptr.hpp at line 3, boost/python/detail/void_return.hpp at line 3, boost/python/dict.hpp at line 3, boost/python/enum.hpp at line 3, boost/python/exception_translator.hpp at line 3, boost/python/extract.hpp at line 3, boost/python/handle.hpp at line 3, boost/python/handle_fwd.hpp at line 3, boost/python/has_back_reference.hpp at line 3, boost/python/implicit.hpp at line 3, boost/python/instance_holder.hpp at line 3, boost/python/iterator.hpp at line 3, boost/python/list.hpp at line 3, boost/python/long.hpp at line 3, boost/python/lvalue_from_pytype.hpp at line 3, boost/python/manage_new_object.hpp at line 3, boost/python/module_init.hpp at line 3, boost/python/object.hpp at line 3, boost/python/object/add_to_namespace.hpp at line 3, boost/python/object/class_detail.hpp at line 3, boost/python/object/enum_base.hpp at line 3, boost/python/object/find_instance.hpp at line 3, boost/python/object/function_handle.hpp at line 3, boost/python/object/function_object.hpp at line 3, boost/python/object/inheritance.hpp at line 3, boost/python/object/instance.hpp at line 3, boost/python/object/iterator.hpp at line 3, boost/python/object/iterator_core.hpp at line 3, boost/python/object/life_support.hpp at line 3, boost/python/object/make_instance.hpp at line 3, boost/python/object/make_ptr_instance.hpp at line 3, boost/python/object/py_function.hpp at line 3, boost/python/object/value_holder_fwd.hpp at line 3, boost/python/object_attributes.hpp at line 3, boost/python/object_call.hpp at line 4, boost/python/object_core.hpp at line 3, boost/python/object_fwd.hpp at line 3, boost/python/object_items.hpp at line 3, boost/python/object_operators.hpp at line 3, boost/python/object_protocol.hpp at line 3, boost/python/object_protocol_core.hpp at line 3, boost/python/object_slices.hpp at line 3, boost/python/operators.hpp at line 3, boost/python/other.hpp at line 7, boost/python/overloads.hpp at line 3, boost/python/pointee.hpp at line 3, boost/python/proxy.hpp at line 3, boost/python/ptr.hpp at line 7, boost/python/refcount.hpp at line 3, boost/python/reference_existing_object.hpp at line 3, boost/python/register_ptr_to_python.hpp at line 3, boost/python/return_by_value.hpp at line 3, boost/python/return_internal_reference.hpp at line 3, boost/python/return_value_policy.hpp at line 3, boost/python/scope.hpp at line 3, boost/python/self.hpp at line 3, boost/python/slice_nil.hpp at line 3, boost/python/str.hpp at line 3, boost/python/tag.hpp at line 3, boost/python/to_python_converter.hpp at line 3, boost/python/to_python_indirect.hpp at line 3, boost/python/to_python_value.hpp at line 3, boost/python/tuple.hpp at line 3, boost/python/type_id.hpp at line 3, boost/python/with_custodian_and_ward.hpp at line 3, libs/python/src/converter/arg_to_python_base.cpp at line 3, libs/python/src/converter/builtin_converters.cpp at line 3, libs/python/src/converter/from_python.cpp at line 3, libs/python/src/list.cpp at line 3, libs/python/src/long.cpp at line 3, libs/python/src/object/enum.cpp at line 3, libs/python/src/object/inheritance.cpp at line 3, libs/python/src/object/iterator.cpp at line 3, libs/python/src/object/life_support.cpp at line 3, libs/python/src/object_operators.cpp at line 3, libs/python/src/object_protocol.cpp at line 3
- License text:
- // Copyright David Abrahams 2002.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/workaround.hpp [1:3]
- boost/detail/indirect_traits.hpp [1:3]
- boost/detail/workaround.hpp [1:3]
- boost/mpl/aux_/config/bind.hpp [5:6]
- boost/python.hpp [1:3]
- boost/python/arg_from_python.hpp [1:3]
- boost/python/args.hpp [1:3]
- boost/python/args_fwd.hpp [1:3]
- boost/python/back_reference.hpp [1:3]
- boost/python/base_type_traits.hpp [1:3]
- boost/python/bases.hpp [1:3]
- boost/python/borrowed.hpp [1:3]
- boost/python/call.hpp [3:5]
- boost/python/call_method.hpp [3:5]
- boost/python/cast.hpp [1:3]
- boost/python/class.hpp [1:3]
- boost/python/class_fwd.hpp [1:3]
- boost/python/converter/arg_from_python.hpp [1:3]
- boost/python/converter/arg_to_python.hpp [1:3]
- boost/python/converter/arg_to_python_base.hpp [1:3]
- boost/python/converter/as_to_python_function.hpp [1:3]
- boost/python/converter/builtin_converters.hpp [1:3]
- boost/python/converter/constructor_function.hpp [1:3]
- boost/python/converter/convertible_function.hpp [1:3]
- boost/python/converter/from_python.hpp [1:3]
- boost/python/converter/implicit.hpp [1:3]
- boost/python/converter/obj_mgr_arg_from_python.hpp [1:3]
- boost/python/converter/object_manager.hpp [1:3]
- boost/python/converter/pointer_type_id.hpp [1:3]
- boost/python/converter/pyobject_traits.hpp [1:3]
- boost/python/converter/pyobject_type.hpp [1:3]
- boost/python/converter/pytype_object_mgr_traits.hpp [1:3]
- boost/python/converter/registered.hpp [1:4]
- boost/python/converter/registered_pointee.hpp [1:3]
- boost/python/converter/registrations.hpp [1:3]
- boost/python/converter/return_from_python.hpp [1:3]
- boost/python/converter/rvalue_from_python_data.hpp [1:3]
- boost/python/converter/shared_ptr_deleter.hpp [1:3]
- boost/python/converter/shared_ptr_from_python.hpp [1:4]
- boost/python/converter/to_python_function_type.hpp [1:3]
- boost/python/copy_const_reference.hpp [1:3]
- boost/python/copy_non_const_reference.hpp [1:3]
- boost/python/data_members.hpp [1:3]
- boost/python/def.hpp [1:3]
- boost/python/default_call_policies.hpp [1:3]
- boost/python/detail/aix_init_module.hpp [1:3]
- boost/python/detail/api_placeholder.hpp [1:3]
- boost/python/detail/borrowed_ptr.hpp [3:5]
- boost/python/detail/caller.hpp [3:5]
- boost/python/detail/construct.hpp [1:3]
- boost/python/detail/convertible.hpp [1:3]
- boost/python/detail/cv_category.hpp [1:3]
- boost/python/detail/decorated_type_id.hpp [1:3]
- boost/python/detail/decref_guard.hpp [1:3]
- boost/python/detail/def_helper.hpp [1:3]
- boost/python/detail/dependent.hpp [1:3]
- boost/python/detail/destroy.hpp [1:3]
- boost/python/detail/exception_handler.hpp [1:3]
- boost/python/detail/force_instantiate.hpp [1:3]
- boost/python/detail/if_else.hpp [1:3]
- boost/python/detail/invoke.hpp [3:5]
- boost/python/detail/make_keyword_range_fn.hpp [1:3]
- boost/python/detail/make_tuple.hpp [2:4]
- boost/python/detail/map_entry.hpp [1:3]
- boost/python/detail/mpl_lambda.hpp [1:3]
- boost/python/detail/msvc_typeinfo.hpp [1:3]
- boost/python/detail/not_specified.hpp [1:3]
- boost/python/detail/operator_id.hpp [1:3]
- boost/python/detail/overloads_fwd.hpp [1:3]
- boost/python/detail/pointee.hpp [1:3]
- boost/python/detail/preprocessor.hpp [1:3]
- boost/python/detail/raw_pyobject.hpp [1:3]
- boost/python/detail/referent_storage.hpp [1:3]
- boost/python/detail/result.hpp [3:5]
- boost/python/detail/scope.hpp [1:3]
- boost/python/detail/signature.hpp [3:5]
- boost/python/detail/string_literal.hpp [1:3]
- boost/python/detail/target.hpp [3:5]
- boost/python/detail/translate_exception.hpp [1:3]
- boost/python/detail/type_list.hpp [1:3]
- boost/python/detail/type_list_impl.hpp [2:4]
- boost/python/detail/unwind_type.hpp [1:3]
- boost/python/detail/void_ptr.hpp [1:3]
- boost/python/detail/void_return.hpp [1:3]
- boost/python/dict.hpp [1:3]
- boost/python/enum.hpp [1:3]
- boost/python/exception_translator.hpp [1:3]
- boost/python/extract.hpp [1:3]
- boost/python/handle.hpp [1:3]
- boost/python/handle_fwd.hpp [1:3]
- boost/python/has_back_reference.hpp [1:3]
- boost/python/implicit.hpp [1:3]
- boost/python/instance_holder.hpp [1:3]
- boost/python/iterator.hpp [1:3]
- boost/python/list.hpp [1:3]
- boost/python/long.hpp [1:3]
- boost/python/lvalue_from_pytype.hpp [1:3]
- boost/python/manage_new_object.hpp [1:3]
- boost/python/module_init.hpp [1:3]
- boost/python/object.hpp [1:3]
- boost/python/object/add_to_namespace.hpp [1:3]
- boost/python/object/class_detail.hpp [1:3]
- boost/python/object/enum_base.hpp [1:3]
- boost/python/object/find_instance.hpp [1:3]
- boost/python/object/function_handle.hpp [1:3]
- boost/python/object/function_object.hpp [1:3]
- boost/python/object/inheritance.hpp [1:3]
- boost/python/object/instance.hpp [1:3]
- boost/python/object/iterator.hpp [1:3]
- boost/python/object/iterator_core.hpp [1:3]
- boost/python/object/life_support.hpp [1:3]
- boost/python/object/make_instance.hpp [1:3]
- boost/python/object/make_ptr_instance.hpp [1:3]
- boost/python/object/py_function.hpp [1:3]
- boost/python/object/value_holder_fwd.hpp [1:3]
- boost/python/object_attributes.hpp [1:3]
- boost/python/object_call.hpp [2:4]
- boost/python/object_core.hpp [1:3]
- boost/python/object_fwd.hpp [1:3]
- boost/python/object_items.hpp [1:3]
- boost/python/object_operators.hpp [1:3]
- boost/python/object_protocol.hpp [1:3]
- boost/python/object_protocol_core.hpp [1:3]
- boost/python/object_slices.hpp [1:3]
- boost/python/operators.hpp [1:3]
- boost/python/other.hpp [5:7]
- boost/python/overloads.hpp [1:3]
- boost/python/pointee.hpp [1:3]
- boost/python/proxy.hpp [1:3]
- boost/python/ptr.hpp [5:7]
- boost/python/refcount.hpp [1:3]
- boost/python/reference_existing_object.hpp [1:3]
- boost/python/register_ptr_to_python.hpp [1:3]
- boost/python/return_by_value.hpp [1:3]
- boost/python/return_internal_reference.hpp [1:3]
- boost/python/return_value_policy.hpp [1:3]
- boost/python/scope.hpp [1:3]
- boost/python/self.hpp [1:3]
- boost/python/slice_nil.hpp [1:3]
- boost/python/str.hpp [1:3]
- boost/python/tag.hpp [1:3]
- boost/python/to_python_converter.hpp [1:3]
- boost/python/to_python_indirect.hpp [1:3]
- boost/python/to_python_value.hpp [1:4]
- boost/python/tuple.hpp [1:3]
- boost/python/type_id.hpp [1:3]
- boost/python/with_custodian_and_ward.hpp [1:3]
- libs/python/src/converter/arg_to_python_base.cpp [1:3]
- libs/python/src/converter/builtin_converters.cpp [1:3]
- libs/python/src/converter/from_python.cpp [1:3]
- libs/python/src/list.cpp [1:3]
- libs/python/src/long.cpp [1:3]
- libs/python/src/object/enum.cpp [1:3]
- libs/python/src/object/inheritance.cpp [1:3]
- libs/python/src/object/iterator.cpp [1:3]
- libs/python/src/object/life_support.cpp [1:3]
- libs/python/src/object_operators.cpp [1:3]
- libs/python/src/object_protocol.cpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 18db89d56f07e1620883cb27717f7211
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/metaparse/v1/fail_tag.hpp at line 6
- License text:
- // Copyright Abel Sinkovics (abel@sinkovics.hu) 2009 - 2012.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/metaparse/v1/fail_tag.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 18e0c3d28e19c9d848cf5c5d5be379bf
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/recalculate.hpp [3:6]
- boost/geometry/index/detail/rtree/utilities/statistics.hpp [5:6]
- boost/geometry/policies/robustness/no_rescale_policy.hpp [3:6]
- boost/geometry/policies/robustness/robust_point_type.hpp [3:6]
- boost/geometry/policies/robustness/segment_ratio_type.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 190342424801597afe0e19a4020a4dc9
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2005-2008.
- // Copyright (c) 2006-2008 Johan Rade
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/fpclassify.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 190ae12968af08ba9e725d4fa3ab1c7b
-BELONGS ya.make
- License text:
- // This file was modified by Oracle on 2016.
- // Modifications copyright (c) 2016, Oracle and/or its affiliates.
- // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/arithmetic/cross_product.hpp [7:9]
- boost/geometry/io/svg/write.hpp [6:7]
- boost/geometry/io/svg/write_svg.hpp [6:7]
- boost/geometry/io/svg/write_svg_multi.hpp [5:6]
- boost/geometry/strategies/spherical/ssf.hpp [5:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 19a141ac32c2d6744e67364352a18f40
-BELONGS ya.make
- License text:
- // (C) Copyright 2008 Anthony Williams
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/detail/thread_heap_alloc.hpp [6:6]
- boost/thread/pthread/thread_heap_alloc.hpp [4:6]
- boost/thread/win32/mfc_thread_init.hpp [6:7]
- boost/thread/win32/thread_data.hpp [6:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 19a677ea551d13c9ed7c1861dbc9551b
-BELONGS ya.make
- License text:
- // (C) Copyright 2014 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/exceptional_ptr.hpp [4:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1a0e7f0eeffa7515571f6386c345dfa0
-BELONGS ya.make
- License text:
- Copyright (c) 2014 Thomas Bernard
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/x3/directive/no_case.hpp [2:2]
- boost/spirit/home/x3/directive/repeat.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1a243be6fc839e64391e9bd0d3aea29a
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/edmunds_karp_max_flow.hpp at line 4
- License text:
- // (c) Copyright Juergen Hunold 2008
- // Use, modification and distribution is subject to the Boost Software
- // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/edmunds_karp_max_flow.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1a3253e5b49a77f2dc95004f816c7fa1
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/move/detail/meta_utils.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2012-2015.
- // Distributed under the Boost Software License, Version 1.0.
+# File format ($ symbol means the beginning of a line):
+#
+# $ # this message
+# $ # =======================
+# $ # comments (all commentaries should starts with some number of spaces and # symbol)
+# $ IGNORE_FILES {file1.ext1} {file2.ext2} - (optional) ignore listed files when generating license macro and credits
+# $
+# ${action} {license id} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
+# ${all_file_action} filename
+# $ # user commentaries (many lines)
+# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
+# ${action} {license spdx} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/3/ya.make
+# ${all_file_action} filename
+# $ # user commentaries
+# $ generated description
+# $ ...
+#
+# You can modify action, all_file_action and add commentaries
+# Available actions:
+# keep - keep license in contrib and use in credits
+# skip - skip license
+# remove - remove all files with this license
+# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
+#
+# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
+# We suppose that that files can contain some license info
+# Available all file actions:
+# FILE_IGNORE - ignore file (do nothing)
+# FILE_INCLUDE - include all file data into licenses text file
+# =======================
+
+KEEP COPYRIGHT_SERVICE_LABEL 000aa9c39050337adeb86ee6154db231
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multi_index/composite_key.hpp at line 3, boost/multi_index/detail/bucket_array.hpp at line 3, boost/multi_index/detail/index_loader.hpp at line 3, boost/multi_index/detail/index_matcher.hpp at line 3, boost/multi_index/detail/ord_index_impl_fwd.hpp at line 3, boost/multi_index/detail/raw_ptr.hpp at line 3, boost/multi_index/detail/rnd_index_ops.hpp at line 3, boost/multi_index/detail/value_compare.hpp at line 3, boost/multi_index/global_fun.hpp at line 3, boost/multi_index/identity.hpp at line 3, boost/multi_index/mem_fun.hpp at line 3, boost/multi_index/member.hpp at line 3, boost/multi_index/ordered_index.hpp at line 3, boost/multi_index/ordered_index_fwd.hpp at line 3, boost/multi_index/ranked_index_fwd.hpp at line 3
+ License text:
+ /* Copyright 2003-2015 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/multi_index/composite_key.hpp [1:3]
+ boost/multi_index/detail/bucket_array.hpp [1:3]
+ boost/multi_index/detail/index_loader.hpp [1:3]
+ boost/multi_index/detail/index_matcher.hpp [1:3]
+ boost/multi_index/detail/ord_index_impl_fwd.hpp [1:3]
+ boost/multi_index/detail/raw_ptr.hpp [1:3]
+ boost/multi_index/detail/rnd_index_ops.hpp [1:3]
+ boost/multi_index/detail/value_compare.hpp [1:3]
+ boost/multi_index/global_fun.hpp [1:3]
+ boost/multi_index/identity.hpp [1:3]
+ boost/multi_index/mem_fun.hpp [1:3]
+ boost/multi_index/member.hpp [1:3]
+ boost/multi_index/ordered_index.hpp [1:3]
+ boost/multi_index/ordered_index_fwd.hpp [1:3]
+ boost/multi_index/ranked_index_fwd.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 00306b5bf840cff6a0c995cf8f997dcc
+BELONGS ya.make
+ License text:
+ // (C) Copyright 2006-7 Anthony Williams
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/once.hpp [6:6]
+ boost/thread/win32/recursive_mutex.hpp [6:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 003d8b667a2ab424cd911d3ea9c79f1c
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2015 Seth Heeren
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/dynamic_bitset/serialization.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 004e570060e5958e19d3656bdcba6398
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/sort/common/util/algorithm.hpp at line 7, boost/sort/common/util/search.hpp at line 6, boost/sort/flat_stable_sort/flat_stable_sort.hpp at line 7
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/sort/common/util/algorithm.hpp [5:7]
+ boost/sort/common/util/search.hpp [4:6]
+ boost/sort/flat_stable_sort/flat_stable_sort.hpp [5:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 005b001f62b4974bcb9a98a2709f28e9
+BELONGS ya.make
+ License text:
+ Copyright (c) 2012-2014 Kohei Takahashi
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/adapted/boost_tuple/detail/build_cons.hpp [2:2]
+ boost/fusion/adapted/boost_tuple/detail/convert_impl.hpp [2:2]
+ boost/fusion/adapted/std_tuple/detail/convert_impl.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 00605b5a81dc767ebe07ddba9503127e
+BELONGS ya.make
+ License text:
+ // Copyright (c) Intel Corporation 2008.
+ // Copyright (c) 2008-2012 Simonson Lucanus.
+ // Copyright (c) 2012-2012 Andrii Sydorchuk.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/polygon/interval_concept.hpp [3:5]
+ boost/polygon/interval_data.hpp [3:5]
+ boost/polygon/interval_traits.hpp [3:5]
+ boost/polygon/point_concept.hpp [3:5]
+ boost/polygon/point_data.hpp [3:5]
+ boost/polygon/point_traits.hpp [3:5]
+ boost/polygon/segment_concept.hpp [3:5]
+ boost/polygon/segment_data.hpp [3:5]
+ boost/polygon/segment_traits.hpp [3:5]
+ boost/polygon/transform.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 006976ef6a7e45903db1f49fcdfcfe89
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/concept/detail/backward_compatibility.hpp at line 3
+ License text:
+ // Copyright David Abrahams 2009. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/concept/detail/backward_compatibility.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 008909fbac0a43c34e66df521b68c9a9
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com
+ // Copyright (c) 2005-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/asio/ssl/detail/impl/openssl_init.ipp [5:6]
+ boost/asio/ssl/impl/context.hpp [5:6]
+ boost/asio/ssl/impl/context.ipp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 008c19761ea52dc768a48cfd005fd5cc
+BELONGS ya.make
+ License text:
+ //Copyright (c) 2006-2010 Emil Dotchevski and Reverge Studios, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/exception/detail/error_info_impl.hpp [1:1]
+ boost/exception/detail/type_info.hpp [1:1]
+ boost/exception/diagnostic_information.hpp [1:1]
+ boost/exception/info.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 00c7d0bb63cb71747e934511dcaa5bcc
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2003 Joel de Guzman
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/attribute/parametric.hpp [2:3]
+ boost/spirit/home/classic/core/config.hpp [2:3]
+ boost/spirit/home/classic/core/nil.hpp [2:3]
+ boost/spirit/home/classic/error_handling.hpp [2:3]
+ boost/spirit/home/classic/error_handling/exceptions.hpp [2:3]
+ boost/spirit/home/classic/error_handling/impl/exceptions.ipp [2:3]
+ boost/spirit/home/classic/symbols.hpp [2:3]
+ boost/spirit/home/classic/symbols/impl/symbols.ipp [2:3]
+ boost/spirit/home/classic/symbols/impl/tst.ipp [2:3]
+ boost/spirit/home/classic/symbols/symbols.hpp [2:3]
+ boost/spirit/home/classic/utility/impl/chset/range_run.hpp [2:3]
+ boost/spirit/home/classic/utility/impl/chset/range_run.ipp [2:3]
+ boost/spirit/home/classic/utility/impl/chset_operators.ipp [2:3]
+ boost/xpressive/detail/utility/chset/range_run.hpp [2:3]
+ boost/xpressive/detail/utility/chset/range_run.ipp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 00d8c23eb547d50de392cb17b51e426e
+BELONGS ya.make
+ License text:
+ // Copyright 2002 Indiana University.
+ // Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/adjacency_iterator.hpp [2:3]
+ boost/graph/create_condensation_graph.hpp [2:3]
+ boost/graph/dag_shortest_paths.hpp [2:3]
+ boost/graph/detail/incremental_components.hpp [2:4]
+ boost/graph/detail/list_base.hpp [2:3]
+ boost/graph/exception.hpp [2:3]
+ boost/graph/graph_archetypes.hpp [2:3]
+ boost/graph/graph_selectors.hpp [2:3]
+ boost/graph/graph_test.hpp [2:3]
+ boost/graph/iteration_macros_undef.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 00f2f63cf7fff1bf2785b395cad0229f
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/extreme_points.hpp [3:6]
+ boost/geometry/algorithms/point_on_surface.hpp [3:6]
+ boost/geometry/algorithms/remove_spikes.hpp [3:6]
+ boost/geometry/multi/algorithms/detail/extreme_points.hpp [3:6]
+ boost/geometry/multi/algorithms/remove_spikes.hpp [3:6]
+ boost/geometry/strategies/default_strategy.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 012123cc40ba5b305d1f81d16119631e
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/uuid/uuid.hpp at line 5, boost/uuid/uuid_generators.hpp at line 5
+ License text:
+ // Copyright 2006 Andy Tompkins.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/uuid/uuid.hpp [3:5]
+ boost/uuid/uuid_generators.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 015cf966dafcca62c9e1b1bcd80c627a
+BELONGS ya.make
+ License text:
+ Copyright (c) 2010-2010: Joachim Faulhaber
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/icl/associative_element_container.hpp [2:2]
+ boost/icl/associative_interval_container.hpp [2:2]
+ boost/icl/closed_interval.hpp [2:2]
+ boost/icl/concept/comparable.hpp [2:2]
+ boost/icl/concept/container.hpp [2:2]
+ boost/icl/concept/element_associator.hpp [2:2]
+ boost/icl/concept/element_map.hpp [2:2]
+ boost/icl/concept/element_set.hpp [2:2]
+ boost/icl/concept/element_set_value.hpp [2:2]
+ boost/icl/concept/interval.hpp [2:2]
+ boost/icl/concept/interval_associator.hpp [2:2]
+ boost/icl/concept/interval_bounds.hpp [2:2]
+ boost/icl/concept/interval_map.hpp [2:2]
+ boost/icl/concept/interval_set.hpp [2:2]
+ boost/icl/concept/interval_set_value.hpp [2:2]
+ boost/icl/concept/joinable.hpp [2:2]
+ boost/icl/concept/map_value.hpp [2:2]
+ boost/icl/concept/set_value.hpp [2:2]
+ boost/icl/continuous_interval.hpp [2:2]
+ boost/icl/detail/associated_value.hpp [2:2]
+ boost/icl/detail/boost_config.hpp [2:2]
+ boost/icl/detail/exclusive_less_than.hpp [2:2]
+ boost/icl/detail/on_absorbtion.hpp [2:2]
+ boost/icl/discrete_interval.hpp [2:2]
+ boost/icl/dynamic_interval_traits.hpp [2:2]
+ boost/icl/interval.hpp [2:2]
+ boost/icl/interval_bounds.hpp [2:2]
+ boost/icl/interval_combining_style.hpp [2:2]
+ boost/icl/interval_traits.hpp [2:2]
+ boost/icl/left_open_interval.hpp [2:2]
+ boost/icl/open_interval.hpp [2:2]
+ boost/icl/predicates/distinct_equal.hpp [2:2]
+ boost/icl/predicates/element_equal.hpp [2:2]
+ boost/icl/predicates/std_equal.hpp [2:2]
+ boost/icl/predicates/sub_super_set.hpp [2:2]
+ boost/icl/right_open_interval.hpp [2:2]
+ boost/icl/type_traits/adds_inversely.hpp [2:2]
+ boost/icl/type_traits/interval_type_default.hpp [2:2]
+ boost/icl/type_traits/interval_type_of.hpp [2:2]
+ boost/icl/type_traits/is_asymmetric_interval.hpp [2:2]
+ boost/icl/type_traits/is_container.hpp [2:2]
+ boost/icl/type_traits/is_continuous_interval.hpp [2:2]
+ boost/icl/type_traits/is_discrete_interval.hpp [2:2]
+ boost/icl/type_traits/is_icl_container.hpp [2:2]
+ boost/icl/type_traits/is_interval.hpp [2:2]
+ boost/icl/type_traits/is_key_container_of.hpp [2:2]
+ boost/icl/type_traits/is_numeric.hpp [2:2]
+ boost/icl/type_traits/predicate.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 017c21e27a172eb4c0008445cc078b79
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2005-2006.
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/tools/precision.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 019f9d2744b88cfb03364a38055e9d75
+BELONGS ya.make
+ License text:
+ * Copyright 2000 Jens Maurer
+ * Copyright 2002 Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/interval.hpp [3:4]
+ boost/numeric/interval/checking.hpp [3:3]
+ boost/numeric/interval/compare.hpp [3:3]
+ boost/numeric/interval/compare/explicit.hpp [3:4]
+ boost/numeric/interval/constants.hpp [3:3]
+ boost/numeric/interval/detail/bcc_rounding_control.hpp [3:4]
+ boost/numeric/interval/detail/bugs.hpp [3:4]
+ boost/numeric/interval/detail/c99_rounding_control.hpp [3:4]
+ boost/numeric/interval/detail/c99sub_rounding_control.hpp [3:4]
+ boost/numeric/interval/detail/interval_prototype.hpp [3:3]
+ boost/numeric/interval/detail/msvc_rounding_control.hpp [3:4]
+ boost/numeric/interval/detail/ppc_rounding_control.hpp [3:5]
+ boost/numeric/interval/detail/sparc_rounding_control.hpp [3:4]
+ boost/numeric/interval/detail/test_input.hpp [3:3]
+ boost/numeric/interval/detail/x86_rounding_control.hpp [3:4]
+ boost/numeric/interval/detail/x86gcc_rounding_control.hpp [3:4]
+ boost/numeric/interval/ext/x86_fast_rounding_control.hpp [10:10]
+ boost/numeric/interval/hw_rounding.hpp [3:4]
+ boost/numeric/interval/transc.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 01a2263079db6c047536246d78a1333b
+BELONGS ya.make
+ License text:
+ // (C) Copyright John Maddock 2006.
+ // (C) Copyright Paul A. Bristow 2006.
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/distributions/complement.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 01a81ecb910aed6636479751cf7bb623
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2007, 2008, 2012 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/make_shared.hpp [6:6]
+ boost/smart_ptr/make_shared_object.hpp [6:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 01a965702801bb82d96654951bc19d2d
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2006 Piotr Wyderski
+ // Copyright (c) 2006 Tomas Puverle
+ // Copyright (c) 2006 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp [12:14]
+ boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp [11:14]
+
+KEEP COPYRIGHT_SERVICE_LABEL 01ee5bf19060374ef2efda82af9fc108
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/r_c_shortest_paths.hpp at line 5
+ License text:
+ // Copyright Michael Drexl 2005, 2006.
+ // Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/move/detail/meta_utils.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1a3cdf7829fa3778821cc02be36b9488
-BELONGS ya.make
- License text:
- // Copyright 2010 John Maddock
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_traits/add_lvalue_reference.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1a5bfddf0b038e143ef61e1e55728936
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2009 Joel de Guzman
- Copyright (c) 2007 Dan Marsden
- Copyright (c) 2010-2011 Christopher Schmidt
- Copyright (c) 2013-2014 Damien Buhl
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/adapted/adt/adapt_assoc_adt.hpp [2:5]
- boost/fusion/adapted/struct/adapt_assoc_struct.hpp [2:4]
- boost/fusion/algorithm/iteration/detail/preprocessed/fold.hpp [2:4]
- boost/fusion/algorithm/iteration/fold.hpp [2:5]
- boost/fusion/algorithm/iteration/fold.hpp [35:37]
- boost/fusion/algorithm/iteration/for_each.hpp [2:3]
- boost/fusion/algorithm/query/all.hpp [2:3]
- boost/fusion/algorithm/query/any.hpp [2:4]
- boost/fusion/algorithm/query/count_if.hpp [2:3]
- boost/fusion/algorithm/query/detail/all.hpp [2:3]
- boost/fusion/algorithm/query/detail/any.hpp [2:4]
- boost/fusion/algorithm/query/detail/count_if.hpp [2:3]
- boost/fusion/algorithm/query/detail/find_if.hpp [2:4]
- boost/fusion/algorithm/query/none.hpp [2:3]
- boost/fusion/view/transform_view/detail/apply_transform_result.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1a685e898b4592da150472c48fb0097e
-BELONGS ya.make
- License text:
- Copyright (c) 2006 Daniel Wallin
- Copyright (c) 2005 Dan Marsden
- Copyright (c) 2007 Joel de Guzman
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/phoenix/stl.hpp [2:4]
- boost/phoenix/stl/algorithm.hpp [2:5]
- boost/phoenix/stl/container.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1a8332990a75c7d0ee74d02b5ac451fd
-BELONGS ya.make
- License text:
- // (C) Copyright John Maddock 2001 - 2003
- // (C) Copyright Jens Maurer 2001
- // (C) Copyright Peter Dimov 2001
- // (C) Copyright Darin Adler 2001
- // (C) Copyright Beman Dawes 2002
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/filesystem/detail/macro_value.hpp [3:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1a93e11c2572326c6a8b7cbe63d4f6a3
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/warning_disable.hpp at line 3, boost/math/bindings/e_float.hpp at line 3, boost/math/bindings/mpfr.hpp at line 3, boost/math/bindings/mpreal.hpp at line 3, boost/math/distributions/detail/generic_mode.hpp at line 3, boost/math/distributions/detail/generic_quantile.hpp at line 3, boost/math/distributions/laplace.hpp at line 3, boost/math/distributions/non_central_beta.hpp at line 5, boost/math/distributions/non_central_chi_squared.hpp at line 5, boost/math/distributions/non_central_f.hpp at line 5, boost/math/distributions/non_central_t.hpp at line 5, boost/math/special_functions/detail/round_fwd.hpp at line 3, boost/math/tr1.hpp at line 3
- License text:
- // Copyright John Maddock 2008
- // Use, modification, and distribution is subject to the Boost Software
- // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/warning_disable.hpp [1:3]
- boost/math/bindings/e_float.hpp [1:3]
- boost/math/bindings/mpfr.hpp [1:3]
- boost/math/bindings/mpreal.hpp [1:3]
- boost/math/distributions/detail/generic_mode.hpp [1:1]
- boost/math/distributions/detail/generic_quantile.hpp [1:3]
- boost/math/distributions/laplace.hpp [1:3]
- boost/math/distributions/non_central_beta.hpp [3:3]
- boost/math/distributions/non_central_chi_squared.hpp [3:3]
- boost/math/distributions/non_central_f.hpp [3:3]
- boost/math/distributions/non_central_t.hpp [3:3]
- boost/math/special_functions/detail/round_fwd.hpp [1:1]
- boost/math/tr1.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1aaf18d7a866b2a0f3d63bce77bf1c79
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/pending/iterator_tests.hpp at line 3
- License text:
- // Copyright David Abrahams and Jeremy Siek 2003.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/pending/iterator_tests.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1ab986157400dd432a8bcb0c9a170495
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/ptr_container/detail/meta_functions.hpp at line 6, boost/ptr_container/ptr_circular_buffer.hpp at line 6, boost/ptr_container/ptr_inserter.hpp at line 6, boost/ptr_container/ptr_unordered_map.hpp at line 6, boost/ptr_container/ptr_unordered_set.hpp at line 6, boost/ptr_container/serialize_ptr_circular_buffer.hpp at line 6, boost/ptr_container/serialize_ptr_unordered_map.hpp at line 6, boost/ptr_container/serialize_ptr_unordered_set.hpp at line 6
- License text:
- // Copyright Thorsten Ottosen 2008. Use, modification and
- // distribution is subject to the Boost Software License, Version
- // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/ptr_container/detail/meta_functions.hpp [4:6]
- boost/ptr_container/ptr_circular_buffer.hpp [4:6]
- boost/ptr_container/ptr_inserter.hpp [4:6]
- boost/ptr_container/ptr_unordered_map.hpp [4:6]
- boost/ptr_container/ptr_unordered_set.hpp [4:6]
- boost/ptr_container/serialize_ptr_circular_buffer.hpp [4:6]
- boost/ptr_container/serialize_ptr_unordered_map.hpp [4:6]
- boost/ptr_container/serialize_ptr_unordered_set.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1abc3fcba70e66cde30b4179bcb3f53f
-BELONGS ya.make
- License text:
- // Copyright (c) 2011-2018 Adam Wulkiewicz, Lodz, Poland.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/index/detail/rtree/node/scoped_deallocator.hpp [5:5]
- boost/geometry/index/detail/rtree/node/variant_dynamic.hpp [5:5]
- boost/geometry/index/detail/rtree/node/variant_static.hpp [5:5]
- boost/geometry/index/detail/rtree/node/weak_dynamic.hpp [5:5]
- boost/geometry/index/detail/rtree/node/weak_static.hpp [5:5]
- boost/geometry/index/predicates.hpp [5:5]
- boost/geometry/index/rtree.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1b49b31378926fed6bad2e9e34790202
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/pending/container_traits.hpp at line 5, boost/pending/detail/disjoint_sets.hpp at line 5, boost/pending/detail/property.hpp at line 5, boost/pending/fibonacci_heap.hpp at line 5, boost/pending/property.hpp at line 5, boost/pending/queue.hpp at line 5, boost/pending/stringtok.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/pending/container_traits.hpp [1:5]
- boost/pending/detail/disjoint_sets.hpp [1:3]
- boost/pending/detail/property.hpp [1:3]
- boost/pending/fibonacci_heap.hpp [1:3]
- boost/pending/property.hpp [1:3]
- boost/pending/queue.hpp [1:3]
- boost/pending/stringtok.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1b648647338e7dfb30cf8f41aab9764b
-BELONGS ya.make
- License text:
- // Copyright (c) 2001-2011 Thomas Bernard
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/repository/home/support/kwd.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1b72a977bcabcebb1599cb0a79d665a2
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/random/hyperexponential_distribution.hpp at line 5
- License text:
- * Copyright Marco Guazzone 2014
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/random/hyperexponential_distribution.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1b7cfe3c28b945889d356efeb8c494b0
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/metaparse/v1/cpp11/first_of.hpp at line 6, boost/metaparse/v1/cpp11/impl/nth_of_c.hpp at line 6, boost/metaparse/v1/cpp11/impl/nth_of_c_skip_remaining.hpp at line 6, boost/metaparse/v1/cpp11/last_of.hpp at line 6, boost/metaparse/v1/cpp11/nth_of.hpp at line 6, boost/metaparse/v1/cpp11/nth_of_c.hpp at line 6, boost/metaparse/v1/first_of.hpp at line 6, boost/metaparse/v1/fwd/string.hpp at line 6, boost/metaparse/v1/last_of.hpp at line 6, boost/metaparse/v1/nth_of.hpp at line 6, boost/metaparse/v1/nth_of_c.hpp at line 6, boost/metaparse/v1/string.hpp at line 6
- License text:
- // Copyright Abel Sinkovics (abel@sinkovics.hu) 2017.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/metaparse/v1/cpp11/first_of.hpp [4:6]
- boost/metaparse/v1/cpp11/impl/nth_of_c.hpp [4:6]
- boost/metaparse/v1/cpp11/impl/nth_of_c_skip_remaining.hpp [4:6]
- boost/metaparse/v1/cpp11/last_of.hpp [4:6]
- boost/metaparse/v1/cpp11/nth_of.hpp [4:6]
- boost/metaparse/v1/cpp11/nth_of_c.hpp [4:6]
- boost/metaparse/v1/first_of.hpp [4:6]
- boost/metaparse/v1/fwd/string.hpp [4:6]
- boost/metaparse/v1/last_of.hpp [4:6]
- boost/metaparse/v1/nth_of.hpp [4:6]
- boost/metaparse/v1/nth_of_c.hpp [4:6]
- boost/metaparse/v1/string.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1b80c8e7f5a5f53532760a321c46060b
-BELONGS ya.make
- License text:
- // Copyright Pavol Droba 2002-2004.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/algorithm/string.hpp [3:3]
- boost/algorithm/string/find_iterator.hpp [3:3]
- boost/algorithm/string_regex.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1b8dc6e6cec8ce31d4939e9ed0a1dbb8
-BELONGS ya.make
- License text:
- * Copyright Thijs van den Berg 2014
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/random/non_central_chi_squared_distribution.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1b9e68c88d4d11c6efc3d2b7423c816c
-BELONGS ya.make
- License text:
- // (C) Copyright Noel Belcourt 2007.
- // Copyright 2017, NVIDIA CORPORATION.
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/pgi.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1bf87741a9385d7452ade49e1b079010
-BELONGS ya.make
- License text:
- // Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
- // Copyright 2010 Thomas Claveirole
- // Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek, Thomas Claveirole
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/adjacency_list.hpp [2:4]
- boost/graph/bellman_ford_shortest_paths.hpp [3:4]
- boost/graph/breadth_first_search.hpp [3:4]
- boost/graph/cuthill_mckee_ordering.hpp [2:5]
- boost/graph/depth_first_search.hpp [2:4]
- boost/graph/detail/adj_list_edge_iterator.hpp [3:4]
- boost/graph/detail/adjacency_list.hpp [3:5]
- boost/graph/detail/array_binary_tree.hpp [3:4]
- boost/graph/detail/connected_components.hpp [2:3]
- boost/graph/detail/edge.hpp [3:4]
- boost/graph/detail/incidence_iterator.hpp [3:4]
- boost/graph/detail/self_avoiding_walk.hpp [2:3]
- boost/graph/detail/sparse_ordering.hpp [2:5]
- boost/graph/dijkstra_shortest_paths.hpp [2:3]
- boost/graph/dijkstra_shortest_paths_no_color_map.hpp [2:4]
- boost/graph/edge_list.hpp [2:3]
- boost/graph/filtered_graph.hpp [2:3]
- boost/graph/graph_as_tree.hpp [3:4]
- boost/graph/graph_concepts.hpp [3:4]
- boost/graph/graph_traits.hpp [2:3]
- boost/graph/graph_utility.hpp [3:4]
- boost/graph/johnson_all_pairs_shortest.hpp [2:3]
- boost/graph/king_ordering.hpp [2:5]
- boost/graph/kruskal_min_spanning_tree.hpp [3:4]
- boost/graph/leda_graph.hpp [2:6]
- boost/graph/matrix_as_graph.hpp [3:4]
- boost/graph/named_function_params.hpp [2:3]
- boost/graph/neighbor_bfs.hpp [3:4]
- boost/graph/prim_minimum_spanning_tree.hpp [2:3]
- boost/graph/properties.hpp [2:3]
- boost/graph/random.hpp [2:4]
- boost/graph/read_dimacs.hpp [2:3]
- boost/graph/relax.hpp [2:3]
- boost/graph/sequential_vertex_coloring.hpp [2:4]
- boost/graph/smallest_last_ordering.hpp [2:3]
- boost/graph/strong_components.hpp [3:4]
- boost/graph/topological_sort.hpp [3:4]
- boost/graph/transpose_graph.hpp [3:4]
- boost/graph/undirected_dfs.hpp [3:4]
- boost/graph/vector_as_graph.hpp [2:5]
- boost/graph/visitors.hpp [2:3]
- boost/pending/bucket_sorter.hpp [3:4]
- boost/pending/disjoint_sets.hpp [3:4]
- boost/pending/indirect_cmp.hpp [3:4]
- boost/pending/is_heap.hpp [3:4]
- boost/pending/mutable_heap.hpp [3:4]
- boost/pending/mutable_queue.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1c034100ff11e3930ab970dbeb694450
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/hp_acc.hpp [1:8]
- boost/config/platform/hpux.hpp [1:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1c03bc5dd84750a354e472dd50319748
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/constants/constants.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1c1008010a34f57eb6e59b47766f5371
-BELONGS ya.make
- License text:
- // Copyright Aleksey Gurtovoy 2002-2006
- // Copyright David Abrahams 2002-2003
- // Copyright Daniel Walker 2007
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/has_xxx.hpp [5:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1c18279f60677577782048946d4fcdc9
-BELONGS ya.make
- License text:
- Copyright (c) 2005-2010 Joel de Guzman
- Copyright (c) 2010 Thomas Heller
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/phoenix/core/actor.hpp [2:5]
- boost/phoenix/core/arity.hpp [2:3]
- boost/phoenix/core/debug.hpp [2:4]
- boost/phoenix/core/detail/cpp03/actor_operator.hpp [24:25]
- boost/phoenix/core/detail/cpp03/actor_result_of.hpp [25:26]
- boost/phoenix/core/detail/cpp03/call.hpp [21:22]
- boost/phoenix/core/detail/cpp03/expression.hpp [18:20]
- boost/phoenix/core/detail/cpp03/function_equal.hpp [2:3]
- boost/phoenix/core/detail/cpp03/function_equal.hpp [21:23]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_10.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_20.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_30.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_40.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_50.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_10.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_20.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_30.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_40.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_50.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/call_10.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/call_20.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/call_30.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/call_40.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/call_50.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/expression_10.hpp [2:4]
- boost/phoenix/core/detail/cpp03/preprocessed/expression_20.hpp [2:4]
- boost/phoenix/core/detail/cpp03/preprocessed/expression_30.hpp [2:4]
- boost/phoenix/core/detail/cpp03/preprocessed/expression_40.hpp [2:4]
- boost/phoenix/core/detail/cpp03/preprocessed/expression_50.hpp [2:4]
- boost/phoenix/core/detail/cpp03/preprocessed/function_equal_10.hpp [2:4]
- boost/phoenix/core/detail/cpp03/preprocessed/function_equal_20.hpp [2:4]
- boost/phoenix/core/detail/cpp03/preprocessed/function_equal_30.hpp [2:4]
- boost/phoenix/core/detail/cpp03/preprocessed/function_equal_40.hpp [2:4]
- boost/phoenix/core/detail/cpp03/preprocessed/function_equal_50.hpp [2:4]
- boost/phoenix/core/detail/expression.hpp [2:2]
- boost/phoenix/core/function_equal.hpp [2:3]
- boost/phoenix/core/is_nullary.hpp [2:4]
- boost/phoenix/core/meta_grammar.hpp [2:4]
- boost/phoenix/core/reference.hpp [2:3]
- boost/phoenix/core/terminal.hpp [2:3]
- boost/phoenix/core/terminal_fwd.hpp [2:3]
- boost/phoenix/core/value.hpp [2:3]
- boost/phoenix/core/visit_each.hpp [2:3]
- boost/phoenix/function/adapt_function.hpp [2:4]
- boost/phoenix/function/detail/cpp03/function_operator.hpp [21:22]
- boost/phoenix/function/detail/cpp03/preprocessed/function_operator_10.hpp [2:3]
- boost/phoenix/function/detail/cpp03/preprocessed/function_operator_20.hpp [2:3]
- boost/phoenix/function/detail/cpp03/preprocessed/function_operator_30.hpp [2:3]
- boost/phoenix/function/detail/cpp03/preprocessed/function_operator_40.hpp [2:3]
- boost/phoenix/function/detail/cpp03/preprocessed/function_operator_50.hpp [2:3]
- boost/phoenix/fusion.hpp [2:3]
- boost/phoenix/fusion/at.hpp [2:4]
- boost/phoenix/object.hpp [2:3]
- boost/phoenix/object/const_cast.hpp [2:3]
- boost/phoenix/object/construct.hpp [2:3]
- boost/phoenix/object/delete.hpp [2:3]
- boost/phoenix/object/detail/cpp03/construct.hpp [21:22]
- boost/phoenix/object/detail/cpp03/construct_eval.hpp [23:24]
- boost/phoenix/object/detail/cpp03/new.hpp [21:22]
- boost/phoenix/object/detail/cpp03/new_eval.hpp [23:24]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_10.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_20.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_30.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_40.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_50.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_10.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_20.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_30.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_40.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_50.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/new_10.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/new_20.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/new_30.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/new_40.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/new_50.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/new_eval_10.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/new_eval_20.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/new_eval_30.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/new_eval_40.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/new_eval_50.hpp [2:3]
- boost/phoenix/object/detail/target.hpp [2:3]
- boost/phoenix/object/dynamic_cast.hpp [2:3]
- boost/phoenix/object/new.hpp [2:3]
- boost/phoenix/object/reinterpret_cast.hpp [2:3]
- boost/phoenix/object/static_cast.hpp [2:3]
- boost/phoenix/operator.hpp [2:3]
- boost/phoenix/operator/arithmetic.hpp [2:3]
- boost/phoenix/operator/bitwise.hpp [2:3]
- boost/phoenix/operator/comparison.hpp [2:3]
- boost/phoenix/operator/detail/cpp03/mem_fun_ptr_eval.hpp [15:17]
- boost/phoenix/operator/detail/cpp03/mem_fun_ptr_eval_result_of.hpp [15:17]
- boost/phoenix/operator/detail/cpp03/mem_fun_ptr_gen.hpp [15:16]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_10.hpp [2:4]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_20.hpp [2:4]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_30.hpp [2:4]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_40.hpp [2:4]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_50.hpp [2:4]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_10.hpp [2:4]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_20.hpp [2:4]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_30.hpp [2:4]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_40.hpp [2:4]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_50.hpp [2:4]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_10.hpp [2:3]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_20.hpp [2:3]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_30.hpp [2:3]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_40.hpp [2:3]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_50.hpp [2:3]
- boost/phoenix/operator/detail/define_operator.hpp [2:3]
- boost/phoenix/operator/detail/undef_operator.hpp [2:2]
- boost/phoenix/operator/if_else.hpp [2:3]
- boost/phoenix/operator/io.hpp [2:3]
- boost/phoenix/operator/logical.hpp [2:3]
- boost/phoenix/operator/member.hpp [2:4]
- boost/phoenix/operator/self.hpp [2:3]
- boost/phoenix/phoenix.hpp [2:3]
- boost/phoenix/scope.hpp [2:3]
- boost/phoenix/scope/detail/cpp03/dynamic.hpp [25:26]
- boost/phoenix/scope/detail/cpp03/lambda.hpp [14:17]
- boost/phoenix/scope/detail/cpp03/local_gen.hpp [3:4]
- boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_10.hpp [2:3]
- boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_20.hpp [2:3]
- boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_30.hpp [2:3]
- boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_40.hpp [2:3]
- boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_50.hpp [2:3]
- boost/phoenix/scope/detail/cpp03/preprocessed/lambda_10.hpp [2:5]
- boost/phoenix/scope/detail/cpp03/preprocessed/lambda_20.hpp [2:5]
- boost/phoenix/scope/detail/cpp03/preprocessed/lambda_30.hpp [2:5]
- boost/phoenix/scope/detail/cpp03/preprocessed/lambda_40.hpp [2:5]
- boost/phoenix/scope/detail/cpp03/preprocessed/lambda_50.hpp [2:5]
- boost/phoenix/scope/dynamic.hpp [2:4]
- boost/phoenix/scope/lambda.hpp [2:5]
- boost/phoenix/scope/let.hpp [2:5]
- boost/phoenix/scope/scoped_environment.hpp [2:3]
- boost/phoenix/statement/detail/catch_push_back.hpp [20:21]
- boost/phoenix/statement/detail/preprocessed/catch_push_back_10.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/catch_push_back_20.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/catch_push_back_30.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/catch_push_back_40.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/catch_push_back_50.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/switch_10.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/switch_20.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/switch_30.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/switch_40.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/switch_50.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/try_catch_eval_10.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/try_catch_eval_20.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/try_catch_eval_30.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/try_catch_eval_40.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/try_catch_eval_50.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/try_catch_expression_10.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/try_catch_expression_20.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/try_catch_expression_30.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/try_catch_expression_40.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/try_catch_expression_50.hpp [2:3]
- boost/phoenix/statement/detail/switch.hpp [25:26]
- boost/phoenix/statement/detail/try_catch_eval.hpp [25:26]
- boost/phoenix/statement/detail/try_catch_expression.hpp [25:26]
- boost/phoenix/statement/do_while.hpp [2:3]
- boost/phoenix/statement/for.hpp [2:3]
- boost/phoenix/statement/sequence.hpp [2:4]
- boost/phoenix/statement/switch.hpp [2:3]
- boost/phoenix/statement/throw.hpp [2:4]
- boost/phoenix/statement/try_catch.hpp [2:4]
- boost/phoenix/statement/while.hpp [2:3]
- boost/phoenix/support/detail/iterate.hpp [2:2]
- boost/phoenix/support/detail/iterate_define.hpp [2:2]
- boost/phoenix/support/detail/iterate_undef.hpp [2:2]
- boost/phoenix/support/iterate.hpp [2:2]
- boost/phoenix/support/preprocessed/vector_10.hpp [2:3]
- boost/phoenix/support/preprocessed/vector_20.hpp [2:3]
- boost/phoenix/support/preprocessed/vector_30.hpp [2:3]
- boost/phoenix/support/preprocessed/vector_40.hpp [2:3]
- boost/phoenix/support/preprocessed/vector_50.hpp [2:3]
- boost/phoenix/support/vector.hpp [41:42]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1c595f63ea7712179f9a8b6862388b47
-BELONGS ya.make
- License text:
- // Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/asio/detail/limits.hpp [5:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1c9bd66a67f098d2c88bc6c83fae2eb5
-BELONGS libs/context/ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: libs/context/src/asm/jump_arm64_aapcs_elf_gas.S at line 4, libs/context/src/asm/jump_arm64_aapcs_macho_gas.S at line 4, libs/context/src/asm/make_arm64_aapcs_elf_gas.S at line 4, libs/context/src/asm/make_arm64_aapcs_macho_gas.S at line 4, libs/context/src/asm/ontop_arm64_aapcs_elf_gas.S at line 4, libs/context/src/asm/ontop_arm64_aapcs_macho_gas.S at line 4
- License text:
- Copyright Edward Nevill + Oliver Kowalke 2015
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- libs/context/src/asm/jump_arm64_aapcs_elf_gas.S [2:4]
- libs/context/src/asm/jump_arm64_aapcs_macho_gas.S [2:4]
- libs/context/src/asm/make_arm64_aapcs_elf_gas.S [2:4]
- libs/context/src/asm/make_arm64_aapcs_macho_gas.S [2:4]
- libs/context/src/asm/ontop_arm64_aapcs_elf_gas.S [2:4]
- libs/context/src/asm/ontop_arm64_aapcs_macho_gas.S [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1ca91ef6f05ea3ed2297c8183c32193a
-BELONGS ya.make
- License text:
- Copyright (c) 2004 Angus Leeming
- Copyright (c) 2004 Joel de Guzman
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/phoenix/stl/container/container.hpp [2:3]
- boost/phoenix/stl/container/detail/container.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1ccfdb8c8e3f3c9ca15360e826c2e6d3
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2008-11.
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/tr1_c_macros.ipp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1ce35bdc48274a02cf4ec2773a903c47
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/random/detail/signed_unsigned_tools.hpp at line 5
- License text:
- * Copyright Jens Maurer 2006
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/random/detail/signed_unsigned_tools.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1d0d15a66be2e325955709e25d49dab9
-BELONGS ya.make
- License text:
- // Copyright (C) 2003-2009 Matthias Christian Schabel
- // Copyright (C) 2007-2009 Steven Watanabe
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/units/base_units/us/pound_force.hpp [4:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1d174c5ff96b62285624fb2326e00394
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/detail/safe_bool.hpp at line 5
- License text:
- // Copyright (c) 2010 Neil Groves
- // Distributed under the Boost Software License, Version 1.0.
- // See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/range/detail/safe_bool.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1d32a7b49a04abb2fd3dbc34628bab5d
-BELONGS ya.make
- License text:
- // Copyright Beman Dawes, 2009
- // Copyright (C) 2011-2012 Vicente J. Botet Escriba
- // Copyright (C) 2012 Anthony Williams
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/core/scoped_enum.hpp [3:5]
- boost/core/underlying_type.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1d556732a0c7feaf3d0bed45f7e37a82
-BELONGS ya.make
- License text:
- // Copyright (c) 2009 Helge Bahmann
- // Copyright (c) 2012 - 2014, 2017 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/atomic/detail/interlocked.hpp [4:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1d83636a81c575d946d6e70ade01c4f9
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2010 Joel de Guzman
- Copyright (c) 2001-2010 Hartmut Kaiser
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/include/karma_duplicate.hpp [2:4]
- boost/spirit/include/karma_grammar.hpp [2:4]
- boost/spirit/include/karma_rule.hpp [2:4]
- boost/spirit/include/lex_char_token_def.hpp [2:4]
- boost/spirit/include/lex_generate_static_lexertl.hpp [2:4]
- boost/spirit/include/lex_plain_token.hpp [2:4]
- boost/spirit/include/lex_primitives.hpp [2:4]
- boost/spirit/include/lex_tokenize_and_parse_attr.hpp [2:4]
- boost/spirit/include/qi_matches.hpp [2:4]
- boost/spirit/include/qi_no_skip.hpp [2:4]
- boost/spirit/include/support_adapt_adt_attributes.hpp [2:4]
- boost/spirit/include/support_attributes_fwd.hpp [2:4]
- boost/spirit/include/support_container.hpp [2:4]
- boost/spirit/include/support_extended_variant.hpp [2:4]
- boost/spirit/include/support_ostream_iterator.hpp [2:4]
- boost/spirit/include/support_utree.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1daddaec4a141024c460f121eb640798
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/common_edg.hpp [1:7]
- boost/config/compiler/kai.hpp [1:5]
- boost/config/compiler/sunpro_cc.hpp [1:7]
- boost/config/platform/hpux.hpp [1:7]
- boost/config/stdlib/dinkumware.hpp [1:7]
- boost/detail/iterator.hpp [1:3]
- boost/iterator/detail/config_def.hpp [1:5]
- boost/iterator/detail/enable_if.hpp [1:5]
- boost/iterator/filter_iterator.hpp [1:5]
- boost/iterator/indirect_iterator.hpp [1:5]
- boost/iterator/interoperable.hpp [1:5]
- boost/iterator/iterator_adaptor.hpp [1:5]
- boost/iterator/iterator_facade.hpp [1:5]
- boost/iterator/reverse_iterator.hpp [1:5]
- boost/iterator/transform_iterator.hpp [1:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1dda61b33b296fd3f69276f5d576f7dd
-BELONGS libs/serialization/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/archive/archive_exception.hpp at line 14, boost/archive/basic_archive.hpp at line 14, boost/archive/basic_binary_iarchive.hpp at line 21, boost/archive/basic_binary_iprimitive.hpp at line 25, boost/archive/basic_binary_oarchive.hpp at line 14, boost/archive/basic_binary_oprimitive.hpp at line 14, boost/archive/basic_text_iarchive.hpp at line 14, boost/archive/basic_text_iprimitive.hpp at line 14, boost/archive/basic_text_oarchive.hpp at line 14, boost/archive/basic_text_oprimitive.hpp at line 14, boost/archive/basic_xml_archive.hpp at line 14, boost/archive/basic_xml_iarchive.hpp at line 14, boost/archive/basic_xml_oarchive.hpp at line 14, boost/archive/binary_iarchive.hpp at line 14, boost/archive/binary_iarchive_impl.hpp at line 14, boost/archive/binary_oarchive.hpp at line 14, boost/archive/binary_oarchive_impl.hpp at line 14, boost/archive/binary_wiarchive.hpp at line 14, boost/archive/binary_woarchive.hpp at line 14, boost/archive/detail/abi_prefix.hpp at line 6, boost/archive/detail/abi_suffix.hpp at line 6, boost/archive/detail/basic_iarchive.hpp at line 14, boost/archive/detail/basic_iserializer.hpp at line 14, boost/archive/detail/basic_oarchive.hpp at line 14, boost/archive/detail/basic_oserializer.hpp at line 14, boost/archive/detail/basic_pointer_iserializer.hpp at line 15, boost/archive/detail/basic_pointer_oserializer.hpp at line 15, boost/archive/detail/basic_serializer.hpp at line 14, boost/archive/detail/basic_serializer_map.hpp at line 14, boost/archive/detail/common_iarchive.hpp at line 14, boost/archive/detail/common_oarchive.hpp at line 14, boost/archive/detail/interface_iarchive.hpp at line 18, boost/archive/detail/interface_oarchive.hpp at line 14, boost/archive/detail/iserializer.hpp at line 20, boost/archive/detail/oserializer.hpp at line 20, boost/archive/detail/polymorphic_iarchive_route.hpp at line 14, boost/archive/detail/polymorphic_oarchive_route.hpp at line 14, boost/archive/dinkumware.hpp at line 14, boost/archive/impl/archive_serializer_map.ipp at line 6, boost/archive/impl/basic_binary_iarchive.ipp at line 6, boost/archive/impl/basic_binary_iprimitive.ipp at line 6, boost/archive/impl/basic_binary_oarchive.ipp at line 6, boost/archive/impl/basic_binary_oprimitive.ipp at line 6, boost/archive/impl/basic_text_iarchive.ipp at line 6, boost/archive/impl/basic_text_iprimitive.ipp at line 6, boost/archive/impl/basic_text_oarchive.ipp at line 6, boost/archive/impl/basic_text_oprimitive.ipp at line 6, boost/archive/impl/basic_xml_grammar.hpp at line 14, boost/archive/impl/basic_xml_iarchive.ipp at line 6, boost/archive/impl/basic_xml_oarchive.ipp at line 6, boost/archive/impl/text_iarchive_impl.ipp at line 6, boost/archive/impl/text_oarchive_impl.ipp at line 6, boost/archive/impl/text_wiarchive_impl.ipp at line 6, boost/archive/impl/text_woarchive_impl.ipp at line 6, boost/archive/impl/xml_iarchive_impl.ipp at line 6, boost/archive/impl/xml_oarchive_impl.ipp at line 6, boost/archive/impl/xml_wiarchive_impl.ipp at line 6, boost/archive/impl/xml_woarchive_impl.ipp at line 6, boost/archive/iterators/base64_exception.hpp at line 14, boost/archive/iterators/base64_from_binary.hpp at line 14, boost/archive/iterators/binary_from_base64.hpp at line 14, boost/archive/iterators/dataflow.hpp at line 14, boost/archive/iterators/dataflow_exception.hpp at line 14, boost/archive/iterators/escape.hpp at line 14, boost/archive/iterators/insert_linebreaks.hpp at line 14, boost/archive/iterators/istream_iterator.hpp at line 14, boost/archive/iterators/mb_from_wchar.hpp at line 14, boost/archive/iterators/ostream_iterator.hpp at line 14, boost/archive/iterators/remove_whitespace.hpp at line 14, boost/archive/iterators/transform_width.hpp at line 14, boost/archive/iterators/unescape.hpp at line 14, boost/archive/iterators/wchar_from_mb.hpp at line 14, boost/archive/iterators/xml_escape.hpp at line 14, boost/archive/iterators/xml_unescape.hpp at line 14, boost/archive/iterators/xml_unescape_exception.hpp at line 14, boost/archive/polymorphic_binary_iarchive.hpp at line 14, boost/archive/polymorphic_binary_oarchive.hpp at line 14, boost/archive/polymorphic_iarchive.hpp at line 14, boost/archive/polymorphic_oarchive.hpp at line 14, boost/archive/polymorphic_text_iarchive.hpp at line 14, boost/archive/polymorphic_text_oarchive.hpp at line 14, boost/archive/polymorphic_text_wiarchive.hpp at line 14, boost/archive/polymorphic_text_woarchive.hpp at line 14, boost/archive/polymorphic_xml_iarchive.hpp at line 14, boost/archive/polymorphic_xml_oarchive.hpp at line 14, boost/archive/polymorphic_xml_wiarchive.hpp at line 14, boost/archive/polymorphic_xml_woarchive.hpp at line 14, boost/archive/text_iarchive.hpp at line 14, boost/archive/text_oarchive.hpp at line 14, boost/archive/text_wiarchive.hpp at line 14, boost/archive/text_woarchive.hpp at line 14, boost/archive/tmpdir.hpp at line 14, boost/archive/wcslen.hpp at line 14, boost/archive/xml_iarchive.hpp at line 14, boost/archive/xml_oarchive.hpp at line 14, boost/archive/xml_wiarchive.hpp at line 14, boost/archive/xml_woarchive.hpp at line 14, boost/serialization/access.hpp at line 14, boost/serialization/archive_input_unordered_map.hpp at line 15, boost/serialization/archive_input_unordered_set.hpp at line 14, boost/serialization/base_object.hpp at line 14, boost/serialization/binary_object.hpp at line 14, boost/serialization/boost_unordered_map.hpp at line 15, boost/serialization/boost_unordered_set.hpp at line 14, boost/serialization/collection_traits.hpp at line 14, boost/serialization/collections_load_imp.hpp at line 18, boost/serialization/collections_save_imp.hpp at line 14, boost/serialization/deque.hpp at line 14, boost/serialization/detail/is_default_constructible.hpp at line 14, boost/serialization/detail/stack_constructor.hpp at line 14, boost/serialization/export.hpp at line 14, boost/serialization/extended_type_info.hpp at line 14, boost/serialization/extended_type_info_no_rtti.hpp at line 16, boost/serialization/extended_type_info_typeid.hpp at line 16, boost/serialization/factory.hpp at line 14, boost/serialization/force_include.hpp at line 14, boost/serialization/forward_list.hpp at line 14, boost/serialization/hash_collections_load_imp.hpp at line 15, boost/serialization/hash_collections_save_imp.hpp at line 14, boost/serialization/hash_map.hpp at line 15, boost/serialization/hash_set.hpp at line 14, boost/serialization/level.hpp at line 14, boost/serialization/level_enum.hpp at line 14, boost/serialization/list.hpp at line 14, boost/serialization/nvp.hpp at line 14, boost/serialization/priority_queue.hpp at line 14, boost/serialization/serialization.hpp at line 21, boost/serialization/shared_ptr_132.hpp at line 14, boost/serialization/slist.hpp at line 14, boost/serialization/smart_cast.hpp at line 14, boost/serialization/split_free.hpp at line 14, boost/serialization/split_member.hpp at line 14, boost/serialization/string.hpp at line 15, boost/serialization/strong_typedef.hpp at line 14, boost/serialization/tracking.hpp at line 14, boost/serialization/tracking_enum.hpp at line 14, boost/serialization/traits.hpp at line 14, boost/serialization/type_info_implementation.hpp at line 14, boost/serialization/unique_ptr.hpp at line 14, boost/serialization/unordered_collections_load_imp.hpp at line 15, boost/serialization/unordered_collections_save_imp.hpp at line 14, boost/serialization/unordered_map.hpp at line 15, boost/serialization/unordered_set.hpp at line 14, boost/serialization/utility.hpp at line 15, boost/serialization/vector.hpp at line 14, boost/serialization/version.hpp at line 14, libs/serialization/src/basic_archive.cpp at line 6, libs/serialization/src/basic_iarchive.cpp at line 6, libs/serialization/src/basic_iserializer.cpp at line 6, libs/serialization/src/basic_oarchive.cpp at line 6, libs/serialization/src/basic_oserializer.cpp at line 6, libs/serialization/src/basic_pointer_iserializer.cpp at line 6, libs/serialization/src/basic_pointer_oserializer.cpp at line 6, libs/serialization/src/basic_serializer_map.cpp at line 6, libs/serialization/src/basic_text_iprimitive.cpp at line 6, libs/serialization/src/basic_text_wiprimitive.cpp at line 6, libs/serialization/src/basic_xml_archive.cpp at line 6, libs/serialization/src/basic_xml_grammar.ipp at line 6, libs/serialization/src/binary_iarchive.cpp at line 6, libs/serialization/src/binary_oarchive.cpp at line 6, libs/serialization/src/binary_wiarchive.cpp at line 6, libs/serialization/src/binary_woarchive.cpp at line 6, libs/serialization/src/extended_type_info.cpp at line 6, libs/serialization/src/extended_type_info_no_rtti.cpp at line 7, libs/serialization/src/extended_type_info_typeid.cpp at line 7, libs/serialization/src/polymorphic_iarchive.cpp at line 6, libs/serialization/src/polymorphic_oarchive.cpp at line 6, libs/serialization/src/text_iarchive.cpp at line 6, libs/serialization/src/text_oarchive.cpp at line 6, libs/serialization/src/text_wiarchive.cpp at line 6, libs/serialization/src/text_woarchive.cpp at line 6, libs/serialization/src/void_cast.cpp at line 6, libs/serialization/src/xml_grammar.cpp at line 6, libs/serialization/src/xml_iarchive.cpp at line 6, libs/serialization/src/xml_oarchive.cpp at line 6, libs/serialization/src/xml_wgrammar.cpp at line 6, libs/serialization/src/xml_wiarchive.cpp at line 6, libs/serialization/src/xml_woarchive.cpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/archive/archive_exception.hpp [12:14]
- boost/archive/basic_archive.hpp [12:14]
- boost/archive/basic_binary_iarchive.hpp [19:21]
- boost/archive/basic_binary_iprimitive.hpp [23:25]
- boost/archive/basic_binary_oarchive.hpp [12:14]
- boost/archive/basic_binary_oprimitive.hpp [12:14]
- boost/archive/basic_text_iarchive.hpp [12:14]
- boost/archive/basic_text_iprimitive.hpp [12:14]
- boost/archive/basic_text_oarchive.hpp [12:14]
- boost/archive/basic_text_oprimitive.hpp [12:14]
- boost/archive/basic_xml_archive.hpp [12:14]
- boost/archive/basic_xml_iarchive.hpp [12:14]
- boost/archive/basic_xml_oarchive.hpp [12:14]
- boost/archive/binary_iarchive.hpp [12:14]
- boost/archive/binary_iarchive_impl.hpp [12:14]
- boost/archive/binary_oarchive.hpp [12:14]
- boost/archive/binary_oarchive_impl.hpp [12:14]
- boost/archive/binary_wiarchive.hpp [12:14]
- boost/archive/binary_woarchive.hpp [12:14]
- boost/archive/detail/abi_prefix.hpp [4:6]
- boost/archive/detail/abi_suffix.hpp [4:6]
- boost/archive/detail/basic_iarchive.hpp [12:14]
- boost/archive/detail/basic_iserializer.hpp [12:14]
- boost/archive/detail/basic_oarchive.hpp [12:14]
- boost/archive/detail/basic_oserializer.hpp [12:14]
- boost/archive/detail/basic_pointer_iserializer.hpp [13:15]
- boost/archive/detail/basic_pointer_oserializer.hpp [13:15]
- boost/archive/detail/basic_serializer.hpp [12:14]
- boost/archive/detail/basic_serializer_map.hpp [12:14]
- boost/archive/detail/common_iarchive.hpp [12:14]
- boost/archive/detail/common_oarchive.hpp [12:14]
- boost/archive/detail/interface_iarchive.hpp [16:18]
- boost/archive/detail/interface_oarchive.hpp [12:14]
- boost/archive/detail/iserializer.hpp [18:20]
- boost/archive/detail/oserializer.hpp [18:20]
- boost/archive/detail/polymorphic_iarchive_route.hpp [12:14]
- boost/archive/detail/polymorphic_oarchive_route.hpp [12:14]
- boost/archive/dinkumware.hpp [12:14]
- boost/archive/impl/archive_serializer_map.ipp [4:6]
- boost/archive/impl/basic_binary_iarchive.ipp [4:6]
- boost/archive/impl/basic_binary_iprimitive.ipp [4:6]
- boost/archive/impl/basic_binary_oarchive.ipp [4:6]
- boost/archive/impl/basic_binary_oprimitive.ipp [4:6]
- boost/archive/impl/basic_text_iarchive.ipp [4:6]
- boost/archive/impl/basic_text_iprimitive.ipp [4:6]
- boost/archive/impl/basic_text_oarchive.ipp [4:6]
- boost/archive/impl/basic_text_oprimitive.ipp [4:6]
- boost/archive/impl/basic_xml_grammar.hpp [12:14]
- boost/archive/impl/basic_xml_iarchive.ipp [4:6]
- boost/archive/impl/basic_xml_oarchive.ipp [4:6]
- boost/archive/impl/text_iarchive_impl.ipp [4:6]
- boost/archive/impl/text_oarchive_impl.ipp [4:6]
- boost/archive/impl/text_wiarchive_impl.ipp [4:6]
- boost/archive/impl/text_woarchive_impl.ipp [4:6]
- boost/archive/impl/xml_iarchive_impl.ipp [4:6]
- boost/archive/impl/xml_oarchive_impl.ipp [4:6]
- boost/archive/impl/xml_wiarchive_impl.ipp [4:6]
- boost/archive/impl/xml_woarchive_impl.ipp [4:6]
- boost/archive/iterators/base64_exception.hpp [12:14]
- boost/archive/iterators/base64_from_binary.hpp [12:14]
- boost/archive/iterators/binary_from_base64.hpp [12:14]
- boost/archive/iterators/dataflow.hpp [12:14]
- boost/archive/iterators/dataflow_exception.hpp [12:14]
- boost/archive/iterators/escape.hpp [12:14]
- boost/archive/iterators/insert_linebreaks.hpp [12:14]
- boost/archive/iterators/istream_iterator.hpp [12:14]
- boost/archive/iterators/mb_from_wchar.hpp [12:14]
- boost/archive/iterators/ostream_iterator.hpp [12:14]
- boost/archive/iterators/remove_whitespace.hpp [12:14]
- boost/archive/iterators/transform_width.hpp [12:14]
- boost/archive/iterators/unescape.hpp [12:14]
- boost/archive/iterators/wchar_from_mb.hpp [12:14]
- boost/archive/iterators/xml_escape.hpp [12:14]
- boost/archive/iterators/xml_unescape.hpp [12:14]
- boost/archive/iterators/xml_unescape_exception.hpp [12:14]
- boost/archive/polymorphic_binary_iarchive.hpp [12:14]
- boost/archive/polymorphic_binary_oarchive.hpp [12:14]
- boost/archive/polymorphic_iarchive.hpp [12:14]
- boost/archive/polymorphic_oarchive.hpp [12:14]
- boost/archive/polymorphic_text_iarchive.hpp [12:14]
- boost/archive/polymorphic_text_oarchive.hpp [12:14]
- boost/archive/polymorphic_text_wiarchive.hpp [12:14]
- boost/archive/polymorphic_text_woarchive.hpp [12:14]
- boost/archive/polymorphic_xml_iarchive.hpp [12:14]
- boost/archive/polymorphic_xml_oarchive.hpp [12:14]
- boost/archive/polymorphic_xml_wiarchive.hpp [12:14]
- boost/archive/polymorphic_xml_woarchive.hpp [12:14]
- boost/archive/text_iarchive.hpp [12:14]
- boost/archive/text_oarchive.hpp [12:14]
- boost/archive/text_wiarchive.hpp [12:14]
- boost/archive/text_woarchive.hpp [12:14]
- boost/archive/tmpdir.hpp [12:14]
- boost/archive/wcslen.hpp [12:14]
- boost/archive/xml_iarchive.hpp [12:14]
- boost/archive/xml_oarchive.hpp [12:14]
- boost/archive/xml_wiarchive.hpp [12:14]
- boost/archive/xml_woarchive.hpp [12:14]
- boost/serialization/access.hpp [12:14]
- boost/serialization/archive_input_unordered_map.hpp [13:16]
- boost/serialization/archive_input_unordered_set.hpp [12:15]
- boost/serialization/base_object.hpp [12:14]
- boost/serialization/binary_object.hpp [12:14]
- boost/serialization/boost_unordered_map.hpp [13:16]
- boost/serialization/boost_unordered_set.hpp [12:15]
- boost/serialization/collection_traits.hpp [12:14]
- boost/serialization/collections_load_imp.hpp [16:18]
- boost/serialization/collections_save_imp.hpp [12:14]
- boost/serialization/deque.hpp [12:14]
- boost/serialization/detail/is_default_constructible.hpp [12:14]
- boost/serialization/detail/stack_constructor.hpp [12:14]
- boost/serialization/export.hpp [12:14]
- boost/serialization/extended_type_info.hpp [12:14]
- boost/serialization/extended_type_info_no_rtti.hpp [14:16]
- boost/serialization/extended_type_info_typeid.hpp [14:16]
- boost/serialization/factory.hpp [12:14]
- boost/serialization/force_include.hpp [12:14]
- boost/serialization/forward_list.hpp [12:14]
- boost/serialization/hash_collections_load_imp.hpp [13:15]
- boost/serialization/hash_collections_save_imp.hpp [12:14]
- boost/serialization/hash_map.hpp [13:15]
- boost/serialization/hash_set.hpp [12:14]
- boost/serialization/level.hpp [12:14]
- boost/serialization/level_enum.hpp [12:14]
- boost/serialization/list.hpp [12:14]
- boost/serialization/nvp.hpp [12:14]
- boost/serialization/priority_queue.hpp [12:14]
- boost/serialization/serialization.hpp [19:21]
- boost/serialization/shared_ptr_132.hpp [12:14]
- boost/serialization/slist.hpp [12:14]
- boost/serialization/smart_cast.hpp [12:14]
- boost/serialization/split_free.hpp [12:14]
- boost/serialization/split_member.hpp [12:14]
- boost/serialization/string.hpp [13:15]
- boost/serialization/strong_typedef.hpp [12:15]
- boost/serialization/tracking.hpp [12:14]
- boost/serialization/tracking_enum.hpp [12:14]
- boost/serialization/traits.hpp [12:14]
- boost/serialization/type_info_implementation.hpp [12:14]
- boost/serialization/unique_ptr.hpp [12:14]
- boost/serialization/unordered_collections_load_imp.hpp [13:16]
- boost/serialization/unordered_collections_save_imp.hpp [12:15]
- boost/serialization/unordered_map.hpp [13:16]
- boost/serialization/unordered_set.hpp [12:15]
- boost/serialization/utility.hpp [13:15]
- boost/serialization/vector.hpp [12:15]
- boost/serialization/version.hpp [12:14]
- libs/serialization/src/basic_archive.cpp [4:6]
- libs/serialization/src/basic_iarchive.cpp [4:6]
- libs/serialization/src/basic_iserializer.cpp [4:6]
- libs/serialization/src/basic_oarchive.cpp [4:6]
- libs/serialization/src/basic_oserializer.cpp [4:6]
- libs/serialization/src/basic_pointer_iserializer.cpp [4:6]
- libs/serialization/src/basic_pointer_oserializer.cpp [4:6]
- libs/serialization/src/basic_serializer_map.cpp [4:6]
- libs/serialization/src/basic_text_iprimitive.cpp [4:6]
- libs/serialization/src/basic_text_wiprimitive.cpp [4:6]
- libs/serialization/src/basic_xml_archive.cpp [4:6]
- libs/serialization/src/basic_xml_grammar.ipp [4:6]
- libs/serialization/src/binary_iarchive.cpp [4:6]
- libs/serialization/src/binary_oarchive.cpp [4:6]
- libs/serialization/src/binary_wiarchive.cpp [4:6]
- libs/serialization/src/binary_woarchive.cpp [4:6]
- libs/serialization/src/extended_type_info.cpp [4:6]
- libs/serialization/src/extended_type_info_no_rtti.cpp [5:7]
- libs/serialization/src/extended_type_info_typeid.cpp [5:7]
- libs/serialization/src/polymorphic_iarchive.cpp [4:6]
- libs/serialization/src/polymorphic_oarchive.cpp [4:6]
- libs/serialization/src/text_iarchive.cpp [4:6]
- libs/serialization/src/text_oarchive.cpp [4:6]
- libs/serialization/src/text_wiarchive.cpp [4:6]
- libs/serialization/src/text_woarchive.cpp [4:6]
- libs/serialization/src/void_cast.cpp [4:6]
- libs/serialization/src/xml_grammar.cpp [4:6]
- libs/serialization/src/xml_iarchive.cpp [4:6]
- libs/serialization/src/xml_oarchive.cpp [4:6]
- libs/serialization/src/xml_wgrammar.cpp [4:6]
- libs/serialization/src/xml_wiarchive.cpp [4:6]
- libs/serialization/src/xml_woarchive.cpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1de0b40eaac2964bd4fea60350b9dc66
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef.h at line 4, boost/predef/architecture.h at line 4, boost/predef/architecture/alpha.h at line 4, boost/predef/architecture/arm.h at line 4, boost/predef/architecture/ia64.h at line 4, boost/predef/architecture/m68k.h at line 4, boost/predef/architecture/mips.h at line 4, boost/predef/architecture/parisc.h at line 4, boost/predef/architecture/ppc.h at line 4, boost/predef/architecture/rs6k.h at line 4, boost/predef/architecture/sparc.h at line 4, boost/predef/architecture/superh.h at line 4, boost/predef/architecture/sys370.h at line 4, boost/predef/architecture/sys390.h at line 4, boost/predef/architecture/x86.h at line 4, boost/predef/architecture/x86/32.h at line 4, boost/predef/architecture/x86/64.h at line 4, boost/predef/architecture/z.h at line 4, boost/predef/compiler.h at line 4, boost/predef/compiler/borland.h at line 4, boost/predef/compiler/clang.h at line 4, boost/predef/compiler/comeau.h at line 4, boost/predef/compiler/compaq.h at line 4, boost/predef/compiler/diab.h at line 4, boost/predef/compiler/digitalmars.h at line 4, boost/predef/compiler/dignus.h at line 4, boost/predef/compiler/edg.h at line 4, boost/predef/compiler/ekopath.h at line 4, boost/predef/compiler/gcc.h at line 4, boost/predef/compiler/gcc_xml.h at line 4, boost/predef/compiler/greenhills.h at line 4, boost/predef/compiler/hp_acc.h at line 4, boost/predef/compiler/iar.h at line 4, boost/predef/compiler/ibm.h at line 4, boost/predef/compiler/kai.h at line 4, boost/predef/compiler/llvm.h at line 4, boost/predef/compiler/metaware.h at line 4, boost/predef/compiler/metrowerks.h at line 4, boost/predef/compiler/microtec.h at line 4, boost/predef/compiler/mpw.h at line 4, boost/predef/compiler/palm.h at line 4, boost/predef/compiler/pgi.h at line 4, boost/predef/compiler/sgi_mipspro.h at line 4, boost/predef/compiler/sunpro.h at line 4, boost/predef/compiler/tendra.h at line 4, boost/predef/compiler/visualc.h at line 4, boost/predef/compiler/watcom.h at line 4, boost/predef/library.h at line 4, boost/predef/library/c.h at line 4, boost/predef/library/c/gnu.h at line 4, boost/predef/library/c/uc.h at line 4, boost/predef/library/c/vms.h at line 4, boost/predef/library/c/zos.h at line 4, boost/predef/library/std.h at line 4, boost/predef/library/std/dinkumware.h at line 4, boost/predef/library/std/libcomo.h at line 4, boost/predef/library/std/modena.h at line 4, boost/predef/library/std/msl.h at line 4, boost/predef/library/std/roguewave.h at line 4, boost/predef/library/std/sgi.h at line 4, boost/predef/library/std/stdcpp3.h at line 4, boost/predef/library/std/stlport.h at line 4, boost/predef/library/std/vacpp.h at line 4, boost/predef/make.h at line 4, boost/predef/os.h at line 4, boost/predef/os/aix.h at line 4, boost/predef/os/amigaos.h at line 4, boost/predef/os/beos.h at line 4, boost/predef/os/bsd.h at line 4, boost/predef/os/cygwin.h at line 4, boost/predef/os/hpux.h at line 4, boost/predef/os/irix.h at line 4, boost/predef/os/linux.h at line 4, boost/predef/os/macos.h at line 4, boost/predef/os/qnxnto.h at line 4, boost/predef/os/solaris.h at line 4, boost/predef/os/unix.h at line 4, boost/predef/os/windows.h at line 4, boost/predef/platform/mingw.h at line 4, boost/predef/platform/mingw32.h at line 4, boost/predef/platform/mingw64.h at line 4
- License text:
- Copyright Rene Rivera 2008-2015
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/predef.h [2:4]
- boost/predef/architecture.h [2:4]
- boost/predef/architecture/alpha.h [2:4]
- boost/predef/architecture/arm.h [2:6]
- boost/predef/architecture/ia64.h [2:4]
- boost/predef/architecture/m68k.h [2:4]
- boost/predef/architecture/mips.h [2:4]
- boost/predef/architecture/parisc.h [2:4]
- boost/predef/architecture/ppc.h [2:4]
- boost/predef/architecture/rs6k.h [2:4]
- boost/predef/architecture/sparc.h [2:4]
- boost/predef/architecture/superh.h [2:4]
- boost/predef/architecture/sys370.h [2:4]
- boost/predef/architecture/sys390.h [2:4]
- boost/predef/architecture/x86.h [2:4]
- boost/predef/architecture/x86/32.h [2:4]
- boost/predef/architecture/x86/64.h [2:4]
- boost/predef/architecture/z.h [2:4]
- boost/predef/compiler.h [2:4]
- boost/predef/compiler/borland.h [2:4]
- boost/predef/compiler/clang.h [2:4]
- boost/predef/compiler/comeau.h [2:4]
- boost/predef/compiler/compaq.h [2:4]
- boost/predef/compiler/diab.h [2:4]
- boost/predef/compiler/digitalmars.h [2:4]
- boost/predef/compiler/dignus.h [2:4]
- boost/predef/compiler/edg.h [2:4]
- boost/predef/compiler/ekopath.h [2:4]
- boost/predef/compiler/gcc.h [2:4]
- boost/predef/compiler/gcc_xml.h [2:4]
- boost/predef/compiler/greenhills.h [2:4]
- boost/predef/compiler/hp_acc.h [2:4]
- boost/predef/compiler/iar.h [2:4]
- boost/predef/compiler/ibm.h [2:4]
- boost/predef/compiler/kai.h [2:4]
- boost/predef/compiler/llvm.h [2:4]
- boost/predef/compiler/metaware.h [2:4]
- boost/predef/compiler/metrowerks.h [2:4]
- boost/predef/compiler/microtec.h [2:4]
- boost/predef/compiler/mpw.h [2:4]
- boost/predef/compiler/palm.h [2:4]
- boost/predef/compiler/pgi.h [2:4]
- boost/predef/compiler/sgi_mipspro.h [2:4]
- boost/predef/compiler/sunpro.h [2:4]
- boost/predef/compiler/tendra.h [2:4]
- boost/predef/compiler/visualc.h [2:4]
- boost/predef/compiler/watcom.h [2:4]
- boost/predef/library.h [2:4]
- boost/predef/library/c.h [2:4]
- boost/predef/library/c/gnu.h [2:4]
- boost/predef/library/c/uc.h [2:4]
- boost/predef/library/c/vms.h [2:4]
- boost/predef/library/c/zos.h [2:4]
- boost/predef/library/std.h [2:4]
- boost/predef/library/std/dinkumware.h [2:4]
- boost/predef/library/std/libcomo.h [2:4]
- boost/predef/library/std/modena.h [2:4]
- boost/predef/library/std/msl.h [2:4]
- boost/predef/library/std/roguewave.h [2:4]
- boost/predef/library/std/sgi.h [2:4]
- boost/predef/library/std/stdcpp3.h [2:4]
- boost/predef/library/std/stlport.h [2:4]
- boost/predef/library/std/vacpp.h [2:4]
- boost/predef/make.h [2:4]
- boost/predef/os.h [2:5]
- boost/predef/os/aix.h [2:4]
- boost/predef/os/amigaos.h [2:4]
- boost/predef/os/beos.h [2:4]
- boost/predef/os/bsd.h [2:4]
- boost/predef/os/cygwin.h [2:4]
- boost/predef/os/hpux.h [2:4]
- boost/predef/os/irix.h [2:4]
- boost/predef/os/linux.h [2:4]
- boost/predef/os/macos.h [2:5]
- boost/predef/os/qnxnto.h [2:4]
- boost/predef/os/solaris.h [2:4]
- boost/predef/os/unix.h [2:4]
- boost/predef/os/windows.h [2:4]
- boost/predef/platform/mingw.h [2:4]
- boost/predef/platform/mingw32.h [2:4]
- boost/predef/platform/mingw64.h [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1df4aa5e098ec150d661f196ac67b29d
-BELONGS ya.make
- License text:
- // Copyright (C) 2013,2014 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/executors/executor.hpp [1:1]
- boost/thread/executors/executor_adaptor.hpp [1:1]
- boost/thread/executors/loop_executor.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1e0252a183250dbead2100056224e072
-BELONGS ya.make
- License text:
- // Copyright (C) 2004, 2005 Arkadiy Vertleyb
- // Use, modification and distribution is subject to the Boost Software
- // License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/typeof/incr_registration_group.hpp [1:3]
- boost/typeof/typeof_impl.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1e1a0b136d0d76d46590e27382b996fe
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/kurtosis.hpp at line 6, boost/accumulators/statistics/skewness.hpp at line 6, boost/accumulators/statistics/weighted_kurtosis.hpp at line 6, boost/accumulators/statistics/weighted_skewness.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/accumulators/statistics/kurtosis.hpp [4:6]
- boost/accumulators/statistics/skewness.hpp [4:6]
- boost/accumulators/statistics/weighted_kurtosis.hpp [4:6]
- boost/accumulators/statistics/weighted_skewness.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1e227e465060016245c6a170dc774086
-BELONGS ya.make
- License text:
- // Copyright 2015-2016 Klemens D. Morgenstern
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/dll/detail/import_mangled_helpers.hpp [1:1]
- boost/dll/import_class.hpp [1:1]
- boost/dll/import_mangled.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1e2707865abb88b57d7f50d04d628fe0
-BELONGS ya.make
- License text:
- // Copyright 2002 Marc Wintermantel (wintermantel@even-ag.ch)
- // ETH Zurich, Center of Structure Technologies (www.imes.ethz.ch/st)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/profile.hpp [3:4]
- boost/graph/sloan_ordering.hpp [3:4]
- boost/graph/wavefront.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1e4a93fb00e3cd1b0e640d55d4067075
-BELONGS ya.make
- License text:
- // This file was modified by Oracle on 2017, 2018.
- // Modifications copyright (c) 2017-2018 Oracle and/or its affiliates.
- // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/area.hpp [8:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1e6b42c37f484d428c0307a99878dd1e
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/spirit/home/karma/numeric/int.hpp at line 3, boost/spirit/home/support/attributes.hpp at line 4, boost/spirit/home/support/iterators/detail/combine_policies.hpp at line 3, boost/spirit/repository/home/karma/nonterminal/subrule.hpp at line 3, boost/wave.hpp at line 10, boost/wave/cpp_context.hpp at line 9, boost/wave/cpp_exceptions.hpp at line 8, boost/wave/cpp_iteration_context.hpp at line 9, boost/wave/cpp_throw.hpp at line 8, boost/wave/cpplexer/convert_trigraphs.hpp at line 10, boost/wave/cpplexer/cpp_lex_interface.hpp at line 10, boost/wave/cpplexer/cpp_lex_interface_generator.hpp at line 10, boost/wave/cpplexer/cpp_lex_iterator.hpp at line 10, boost/wave/cpplexer/cpp_lex_token.hpp at line 10, boost/wave/cpplexer/cpplexer_exceptions.hpp at line 8, boost/wave/cpplexer/detect_include_guards.hpp at line 27, boost/wave/cpplexer/re2clex/aq.hpp at line 8, boost/wave/cpplexer/re2clex/cpp_re.hpp at line 10, boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp at line 10, boost/wave/cpplexer/re2clex/scanner.hpp at line 8, boost/wave/cpplexer/token_cache.hpp at line 8, boost/wave/cpplexer/validate_universal_char.hpp at line 10, boost/wave/grammars/cpp_chlit_grammar.hpp at line 8, boost/wave/grammars/cpp_defined_grammar.hpp at line 8, boost/wave/grammars/cpp_defined_grammar_gen.hpp at line 8, boost/wave/grammars/cpp_expression_grammar.hpp at line 8, boost/wave/grammars/cpp_expression_grammar_gen.hpp at line 8, boost/wave/grammars/cpp_expression_value.hpp at line 8, boost/wave/grammars/cpp_grammar.hpp at line 8, boost/wave/grammars/cpp_grammar_gen.hpp at line 8, boost/wave/grammars/cpp_intlit_grammar.hpp at line 8, boost/wave/grammars/cpp_literal_grammar_gen.hpp at line 8, boost/wave/grammars/cpp_predef_macros_gen.hpp at line 8, boost/wave/grammars/cpp_predef_macros_grammar.hpp at line 8, boost/wave/grammars/cpp_value_error.hpp at line 8, boost/wave/language_support.hpp at line 9, boost/wave/preprocessing_hooks.hpp at line 8, boost/wave/token_ids.hpp at line 10, boost/wave/util/cpp_ifblock.hpp at line 8, boost/wave/util/cpp_include_paths.hpp at line 8, boost/wave/util/cpp_iterator.hpp at line 10, boost/wave/util/cpp_macromap.hpp at line 10, boost/wave/util/cpp_macromap_predef.hpp at line 10, boost/wave/util/cpp_macromap_utils.hpp at line 10, boost/wave/util/file_position.hpp at line 10, boost/wave/util/filesystem_compatibility.hpp at line 8, boost/wave/util/functor_input.hpp at line 8, boost/wave/util/insert_whitespace_detection.hpp at line 10, boost/wave/util/interpret_pragma.hpp at line 8, boost/wave/util/iteration_context.hpp at line 8, boost/wave/util/macro_definition.hpp at line 8, boost/wave/util/macro_helpers.hpp at line 8, boost/wave/util/pattern_parser.hpp at line 10, boost/wave/util/symbol_table.hpp at line 8, boost/wave/util/time_conversion_helper.hpp at line 8, boost/wave/util/transform_iterator.hpp at line 8, boost/wave/util/unput_queue_iterator.hpp at line 10, boost/wave/wave_config.hpp at line 10, boost/wave/wave_config_constant.hpp at line 9, boost/wave/wave_version.hpp at line 10, boost/wave/whitespace_handling.hpp at line 9
- License text:
- Copyright (c) 2001-2012 Hartmut Kaiser. Distributed under the Boost
- Software License, Version 1.0. (See accompanying file
- LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/karma/numeric/int.hpp [1:1]
- boost/spirit/home/support/attributes.hpp [2:3]
- boost/spirit/home/support/iterators/detail/combine_policies.hpp [1:1]
- boost/spirit/repository/home/karma/nonterminal/subrule.hpp [1:3]
- boost/wave.hpp [8:10]
- boost/wave/cpp_context.hpp [7:9]
- boost/wave/cpp_exceptions.hpp [6:8]
- boost/wave/cpp_iteration_context.hpp [7:9]
- boost/wave/cpp_throw.hpp [6:8]
- boost/wave/cpplexer/convert_trigraphs.hpp [8:10]
- boost/wave/cpplexer/cpp_lex_interface.hpp [8:10]
- boost/wave/cpplexer/cpp_lex_interface_generator.hpp [8:10]
- boost/wave/cpplexer/cpp_lex_iterator.hpp [8:10]
- boost/wave/cpplexer/cpp_lex_token.hpp [8:10]
- boost/wave/cpplexer/cpplexer_exceptions.hpp [6:8]
- boost/wave/cpplexer/detect_include_guards.hpp [25:27]
- boost/wave/cpplexer/re2clex/aq.hpp [6:9]
- boost/wave/cpplexer/re2clex/cpp_re.hpp [8:10]
- boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp [8:10]
- boost/wave/cpplexer/re2clex/scanner.hpp [6:9]
- boost/wave/cpplexer/token_cache.hpp [6:8]
- boost/wave/cpplexer/validate_universal_char.hpp [8:10]
- boost/wave/grammars/cpp_chlit_grammar.hpp [6:8]
- boost/wave/grammars/cpp_defined_grammar.hpp [6:8]
- boost/wave/grammars/cpp_defined_grammar_gen.hpp [6:8]
- boost/wave/grammars/cpp_expression_grammar.hpp [6:8]
- boost/wave/grammars/cpp_expression_grammar_gen.hpp [6:8]
- boost/wave/grammars/cpp_expression_value.hpp [6:8]
- boost/wave/grammars/cpp_grammar.hpp [6:8]
- boost/wave/grammars/cpp_grammar_gen.hpp [6:8]
- boost/wave/grammars/cpp_intlit_grammar.hpp [6:8]
- boost/wave/grammars/cpp_literal_grammar_gen.hpp [6:8]
- boost/wave/grammars/cpp_predef_macros_gen.hpp [6:8]
- boost/wave/grammars/cpp_predef_macros_grammar.hpp [6:8]
- boost/wave/grammars/cpp_value_error.hpp [6:8]
- boost/wave/language_support.hpp [7:9]
- boost/wave/preprocessing_hooks.hpp [6:8]
- boost/wave/token_ids.hpp [8:10]
- boost/wave/util/cpp_ifblock.hpp [6:8]
- boost/wave/util/cpp_include_paths.hpp [6:8]
- boost/wave/util/cpp_iterator.hpp [8:10]
- boost/wave/util/cpp_macromap.hpp [8:10]
- boost/wave/util/cpp_macromap_predef.hpp [8:10]
- boost/wave/util/cpp_macromap_utils.hpp [8:10]
- boost/wave/util/file_position.hpp [8:10]
- boost/wave/util/filesystem_compatibility.hpp [6:8]
- boost/wave/util/functor_input.hpp [6:8]
- boost/wave/util/insert_whitespace_detection.hpp [8:10]
- boost/wave/util/interpret_pragma.hpp [6:8]
- boost/wave/util/iteration_context.hpp [6:8]
- boost/wave/util/macro_definition.hpp [6:8]
- boost/wave/util/macro_helpers.hpp [6:8]
- boost/wave/util/pattern_parser.hpp [8:10]
- boost/wave/util/symbol_table.hpp [6:8]
- boost/wave/util/time_conversion_helper.hpp [6:8]
- boost/wave/util/transform_iterator.hpp [6:8]
- boost/wave/util/unput_queue_iterator.hpp [8:10]
- boost/wave/wave_config.hpp [8:10]
- boost/wave/wave_config_constant.hpp [7:9]
- boost/wave/wave_version.hpp [8:10]
- boost/wave/whitespace_handling.hpp [7:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1e6c23354a6747a6c3eef56fb2537b44
-BELONGS ya.make
- License text:
- // Copyright (c) 2006, Stephan Diederich
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/boykov_kolmogorov_max_flow.hpp [1:1]
- boost/graph/write_dimacs.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1e8d26cab4d9812b713114f1a99853c0
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/statechart/detail/memory.hpp at line 6
- License text:
- // Copyright 2005-2006 Andreas Huber Doenni
- // Distributed under the Boost Software License, Version 1.0. (See accompany-
- // ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/statechart/detail/memory.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1ea9e3e41f1c35e81f47e425054ac689
-BELONGS ya.make
- License text:
- // Copyright Paul A. Bristow 2007, 2010, 2012, 2014.
- // Copyright John Maddock 2007.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/distributions/fwd.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1ee6f833fe9b25524ebf6b687f10088c
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2015.
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/quadrature/gauss.hpp [1:3]
- boost/random/traits.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1f04e771ae77a341bbc9ea094604bb99
-BELONGS ya.make
- License text:
- * Copyright (c) 1998-2000
- * Dr John Maddock
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/regex.h [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1f0bef8fd2dab232c436a28951751d24
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/hp_acc.hpp [1:8]
- boost/config/compiler/sunpro_cc.hpp [1:7]
- boost/config/platform/hpux.hpp [1:7]
- boost/config/platform/linux.hpp [1:4]
- boost/config/platform/symbian.hpp [1:5]
- boost/config/stdlib/sgi.hpp [1:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1f37a51e40512369e14c67203766141f
-BELONGS libs/timer/ya.make
- License text:
- // Copyright Beman Dawes 1994-2006, 2011
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- libs/timer/src/cpu_timer.cpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1f468481901f0c282072e13f8120b9b9
-BELONGS ya.make
- License text:
- Copyright (c) 2016 Frank Hein, maxence business consulting gmbh
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/qi/directive/expect.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1f48b5f1ab3f8b394c86f6d510e964a3
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/has_new_operator.hpp at line 4
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_traits/has_new_operator.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1f49c41ea9bc45c116f721f598e21ad0
-BELONGS ya.make
- License text:
- // This file was modified by Oracle on 2015, 2016.
- // Modifications copyright (c) 2015-2016, Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/envelope/implementation.hpp [7:8]
- boost/geometry/algorithms/detail/envelope/linear.hpp [7:8]
- boost/geometry/algorithms/detail/envelope/point.hpp [7:8]
- boost/geometry/algorithms/detail/envelope/range.hpp [7:8]
- boost/geometry/algorithms/detail/expand/interface.hpp [8:9]
- boost/geometry/io/svg/svg_mapper.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1f4ce2837d476b6bed69d2f0d5589b4d
-BELONGS ya.make
- License text:
- // Copyright (c) 2009 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mem_fn.hpp [13:13]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1f62725691895dcb03dacf98dc5c9129
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/crc.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/crc.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1f6babe1b8dcf6fe0c732e78348e6377
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/statechart/detail/rtti_policy.hpp at line 6, boost/statechart/detail/state_base.hpp at line 6, boost/statechart/event_processor.hpp at line 6, boost/statechart/fifo_worker.hpp at line 6, boost/statechart/processor_container.hpp at line 6, boost/statechart/transition.hpp at line 6
- License text:
- // Copyright 2002-2008 Andreas Huber Doenni
- // Distributed under the Boost Software License, Version 1.0. (See accompany-
- // ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/statechart/detail/rtti_policy.hpp [4:6]
- boost/statechart/detail/state_base.hpp [4:6]
- boost/statechart/event_processor.hpp [4:6]
- boost/statechart/fifo_worker.hpp [4:6]
- boost/statechart/processor_container.hpp [4:6]
- boost/statechart/transition.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1f81522578ed29184544e03bd9f0c559
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/core/noncopyable.hpp at line 5
- License text:
- // (C) Copyright Beman Dawes 1999-2003. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/core/noncopyable.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1fa0e333f3a4d9fcde07c8f7722f8e63
-BELONGS ya.make
- License text:
- // (C) Copyright Ion Gaztanaga 2005.
- // Copyright (c) 2005 Peter Dimov.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/bind/bind.hpp [13:15]
- boost/pointer_to_other.hpp [7:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1fc39afc3821b9d8684b6e3cd7dd87ec
-BELONGS ya.make
- License text:
- // Copyright (c) 2004 Gerald I. Evenden
- // Copyright (c) 2012 Martin Raspaud
- // See also (section 4.4.3.2):
- // http://www.eumetsat.int/en/area4/msg/news/us_doc/cgms_03_26.pdf
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/srs/projections/proj/geos.hpp [26:29]
-
-KEEP COPYRIGHT_SERVICE_LABEL 201ae7ed96845071c26629f049e390f6
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/algorithm_ext/is_sorted.hpp at line 4
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/range/algorithm_ext/is_sorted.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2078d45a521e96133b21cbeeef583b2e
-BELONGS ya.make
- License text:
- // Copyright (c) 2001 Daniel C. Nuffer
- // Copyright (c) 2001-2011 Hartmut Kaiser
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/support/iterators/detail/buffering_input_iterator_policy.hpp [1:2]
- boost/spirit/home/support/iterators/detail/fixed_size_queue.hpp [1:2]
- boost/spirit/home/support/iterators/detail/fixed_size_queue_policy.hpp [1:2]
- boost/spirit/home/support/iterators/detail/input_iterator_policy.hpp [1:2]
- boost/spirit/home/support/iterators/detail/istream_policy.hpp [1:2]
- boost/spirit/home/support/iterators/detail/lex_input_policy.hpp [1:2]
- boost/spirit/home/support/iterators/detail/multi_pass.hpp [1:2]
- boost/spirit/home/support/iterators/detail/no_check_policy.hpp [1:2]
- boost/spirit/home/support/iterators/detail/ref_counted_policy.hpp [1:2]
- boost/spirit/home/support/iterators/detail/split_std_deque_policy.hpp [1:2]
- boost/wave/cpplexer/re2clex/aq.hpp [6:9]
- boost/wave/cpplexer/re2clex/scanner.hpp [6:9]
-
-KEEP COPYRIGHT_SERVICE_LABEL 20879b64ae4df4b3c40306efb7928c57
-BELONGS ya.make
- License text:
- // (C) Copyright Ion Gaztanaga 2014-2014.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/container/detail/algorithm.hpp [3:3]
- boost/container/detail/compare_functors.hpp [3:5]
- boost/container/detail/construct_in_place.hpp [3:3]
- boost/container/detail/iterator.hpp [3:3]
- boost/container/detail/std_fwd.hpp [3:5]
- boost/intrusive/detail/algo_type.hpp [3:3]
- boost/intrusive/detail/algorithm.hpp [3:3]
- boost/intrusive/detail/array_initializer.hpp [3:3]
- boost/intrusive/detail/bstree_algorithms_base.hpp [3:3]
- boost/intrusive/detail/default_header_holder.hpp [3:3]
- boost/intrusive/detail/ebo_functor_holder.hpp [3:4]
- boost/intrusive/detail/empty_node_checker.hpp [3:3]
- boost/intrusive/detail/equal_to_value.hpp [3:3]
- boost/intrusive/detail/exception_disposer.hpp [3:3]
- boost/intrusive/detail/get_value_traits.hpp [3:3]
- boost/intrusive/detail/has_member_function_callable_with.hpp [3:5]
- boost/intrusive/detail/iterator.hpp [3:3]
- boost/intrusive/detail/key_nodeptr_comp.hpp [3:3]
- boost/intrusive/detail/math.hpp [3:3]
- boost/intrusive/detail/node_cloner_disposer.hpp [3:3]
- boost/intrusive/detail/node_holder.hpp [3:3]
- boost/intrusive/detail/node_to_value.hpp [3:3]
- boost/intrusive/detail/reverse_iterator.hpp [3:3]
- boost/intrusive/detail/simple_disposers.hpp [3:3]
- boost/intrusive/detail/size_holder.hpp [3:3]
- boost/intrusive/detail/std_fwd.hpp [3:5]
- boost/intrusive/pointer_rebind.hpp [3:5]
- boost/move/algo/detail/insertion_sort.hpp [3:5]
- boost/move/default_delete.hpp [3:5]
- boost/move/detail/fwd_macros.hpp [3:5]
- boost/move/detail/iterator_traits.hpp [3:5]
- boost/move/detail/reverse_iterator.hpp [3:3]
- boost/move/detail/workaround.hpp [3:5]
- boost/move/unique_ptr.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 208a2831e190f76f08f28a8052c15716
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2002 Joel de Guzman
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/lambda/closures.hpp [5:5]
- boost/lambda/if.hpp [3:5]
- boost/lambda/loops.hpp [3:5]
- boost/spirit/home/classic/phoenix.hpp [3:3]
- boost/spirit/home/classic/phoenix/actor.hpp [3:3]
- boost/spirit/home/classic/phoenix/binders.hpp [3:3]
- boost/spirit/home/classic/phoenix/closures.hpp [3:4]
- boost/spirit/home/classic/phoenix/composite.hpp [3:3]
- boost/spirit/home/classic/phoenix/functions.hpp [3:3]
- boost/spirit/home/classic/phoenix/operators.hpp [3:3]
- boost/spirit/home/classic/phoenix/primitives.hpp [3:3]
- boost/spirit/home/classic/phoenix/special_ops.hpp [3:3]
- boost/spirit/home/classic/phoenix/statements.hpp [3:3]
- boost/spirit/home/classic/phoenix/tuples.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 20a463d46bce9a241ea6c39dc4765269
-BELONGS ya.make
- License text:
- Copyright (c) 2005-2013 Joel de Guzman
- Copyright (c) 2006 Dan Marsden
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/container/deque/convert.hpp [2:3]
- boost/fusion/container/deque/detail/build_deque.hpp [2:2]
- boost/fusion/container/deque/detail/cpp03/build_deque.hpp [2:2]
- boost/fusion/container/map/detail/begin_impl.hpp [2:2]
- boost/fusion/container/map/detail/build_map.hpp [2:2]
- boost/fusion/container/map/detail/end_impl.hpp [2:2]
- boost/fusion/container/map/detail/map_impl.hpp [2:2]
- boost/fusion/container/map/detail/map_index.hpp [2:2]
- boost/fusion/container/map/map_iterator.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 20aa2056ea9bde4ff4ad3360b783b1e7
-BELONGS ya.make
- License text:
- //Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/exception/all.hpp [1:1]
- boost/exception/detail/shared_ptr.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 20e8e6135e1f61009ffaeaa23267908f
-BELONGS ya.make
- License text:
- * Copyright (c) 2011 Helge Bahmann
- * Copyright (c) 2013 Tim Blechmann
- * Copyright (c) 2014 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/atomic/atomic.hpp [6:8]
- boost/atomic/atomic_flag.hpp [6:8]
- boost/atomic/detail/atomic_template.hpp [6:8]
- boost/atomic/detail/caps_gcc_alpha.hpp [6:8]
- boost/atomic/detail/caps_gcc_ppc.hpp [6:8]
- boost/atomic/detail/caps_gcc_sparc.hpp [6:8]
- boost/atomic/detail/caps_gcc_sync.hpp [6:8]
- boost/atomic/detail/caps_msvc_arm.hpp [6:8]
- boost/atomic/detail/caps_msvc_x86.hpp [6:8]
- boost/atomic/detail/caps_windows.hpp [6:8]
- boost/atomic/detail/ops_gcc_alpha.hpp [6:8]
- boost/atomic/detail/ops_gcc_arm.hpp [6:8]
- boost/atomic/detail/ops_gcc_arm_common.hpp [6:8]
- boost/atomic/detail/ops_gcc_ppc.hpp [6:8]
- boost/atomic/detail/ops_gcc_ppc_common.hpp [6:8]
- boost/atomic/detail/ops_gcc_sparc.hpp [6:8]
- boost/atomic/detail/ops_gcc_sync.hpp [6:8]
- boost/atomic/fences.hpp [6:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 20fa0d171507903cccfbadda4fedb4d3
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/metaparse/v1/empty.hpp at line 6
- License text:
- // Copyright Abel Sinkovics (abel@sinkovics.hu) 2010 - 2011.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/metaparse/v1/empty.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2128f138a33452c58ca8d69d871d409b
-BELONGS ya.make
- License text:
- // This file was modified by Oracle on 2016-2017.
- // Modifications copyright (c) 2016-2017 Oracle and/or its affiliates.
- // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/buffer/buffered_piece_collection.hpp [6:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2146c076a1c5302d8131f6c6c76f685d
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2014.
- // Copyright Paul A. Bristow 2014.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/distributions/arcsine.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 214ba99e016d97577b7672e9e87aa6fa
-BELONGS libs/timer/ya.make
- License text:
- // Copyright Beman Dawes 2007, 2011
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- libs/timer/src/auto_timers_construction.cpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 215698f0763c1492391d7be44eb56c21
-BELONGS ya.make
- License text:
- // Copyright (c) 2007-2015 Barend Gehrels, Amsterdam, the Netherlands.
- // Copyright (c) 2008-2015 Bruno Lalande, Paris, France.
- // Copyright (c) 2009-2015 Mateusz Loskot, London, UK.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/centroid.hpp [3:6]
- boost/geometry/algorithms/convex_hull.hpp [3:5]
- boost/geometry/algorithms/detail/disjoint/box_box.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/point_box.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/point_geometry.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/point_point.hpp [3:6]
- boost/geometry/algorithms/detail/envelope/box.hpp [3:5]
- boost/geometry/algorithms/detail/envelope/implementation.hpp [3:5]
- boost/geometry/algorithms/detail/envelope/interface.hpp [3:5]
- boost/geometry/algorithms/detail/envelope/linear.hpp [3:5]
- boost/geometry/algorithms/detail/envelope/point.hpp [3:5]
- boost/geometry/algorithms/detail/envelope/range.hpp [3:5]
- boost/geometry/algorithms/detail/envelope/segment.hpp [3:5]
- boost/geometry/algorithms/detail/equals/implementation.hpp [3:6]
- boost/geometry/algorithms/detail/equals/interface.hpp [3:6]
- boost/geometry/algorithms/detail/expand/box.hpp [3:6]
- boost/geometry/algorithms/detail/expand/implementation.hpp [3:6]
- boost/geometry/algorithms/detail/expand/indexed.hpp [3:6]
- boost/geometry/algorithms/detail/expand/interface.hpp [3:6]
- boost/geometry/algorithms/detail/expand/point.hpp [3:6]
- boost/geometry/algorithms/detail/expand/segment.hpp [3:6]
- boost/geometry/algorithms/detail/not.hpp [3:5]
- boost/geometry/algorithms/detail/overlaps/implementation.hpp [3:5]
- boost/geometry/algorithms/detail/overlaps/interface.hpp [3:5]
- boost/geometry/algorithms/detail/point_is_spike_or_equal.hpp [3:6]
- boost/geometry/algorithms/detail/sections/sectionalize.hpp [3:6]
- boost/geometry/algorithms/detail/throw_on_empty_input.hpp [3:6]
- boost/geometry/algorithms/detail/touches/implementation.hpp [3:6]
- boost/geometry/algorithms/detail/touches/interface.hpp [3:6]
- boost/geometry/algorithms/dispatch/envelope.hpp [3:5]
- boost/geometry/algorithms/dispatch/expand.hpp [3:6]
- boost/geometry/algorithms/envelope.hpp [3:5]
- boost/geometry/algorithms/equals.hpp [3:6]
- boost/geometry/algorithms/expand.hpp [3:6]
- boost/geometry/algorithms/not_implemented.hpp [3:5]
- boost/geometry/algorithms/overlaps.hpp [3:5]
- boost/geometry/algorithms/simplify.hpp [3:5]
- boost/geometry/algorithms/touches.hpp [3:6]
- boost/geometry/core/exception.hpp [3:5]
- boost/geometry/core/radian_access.hpp [3:5]
- boost/geometry/core/ring_type.hpp [3:5]
- boost/geometry/geometry.hpp [3:5]
- boost/geometry/multi/multi.hpp [3:5]
- boost/geometry/strategies/cartesian/box_in_box.hpp [3:6]
- boost/geometry/strategies/cartesian/centroid_bashein_detmer.hpp [3:5]
- boost/geometry/strategies/cartesian/point_in_box.hpp [3:5]
- boost/geometry/strategies/cartesian/side_by_triangle.hpp [3:5]
- boost/geometry/strategies/distance_result.hpp [3:7]
- boost/geometry/strategies/spherical/distance_cross_track_point_box.hpp [3:5]
- boost/geometry/strategies/strategy_transform.hpp [3:5]
- boost/geometry/strategies/transform/matrix_transformers.hpp [3:5]
- boost/geometry/util/compress_variant.hpp [3:5]
- boost/geometry/util/math.hpp [3:5]
- boost/geometry/util/transform_variant.hpp [3:5]
- boost/geometry/views/detail/indexed_point_view.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 215bdc768306d436a8bb86e0c01115e8
-BELONGS ya.make
- License text:
- Copyright 2017-2018 Glen Joseph Fernandes
- (glenjofe@gmail.com)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/core/pointer_traits.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 21722b4dae740deb7e1ccfab7745d62a
-BELONGS ya.make
- License text:
- Copyright 2010-2012 Karsten Ahnert
- Copyright 2011 Mario Mulansky
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/algebra/detail/for_each.hpp [9:10]
- boost/numeric/odeint/stepper/detail/adams_bashforth_call_algebra.hpp [9:10]
- boost/numeric/odeint/stepper/detail/adams_moulton_call_algebra.hpp [9:10]
- boost/numeric/odeint/stepper/detail/generic_rk_operations.hpp [9:10]
- boost/numeric/odeint/stepper/detail/rotating_buffer.hpp [9:10]
- boost/numeric/odeint/stepper/generation.hpp [9:10]
- boost/numeric/odeint/stepper/generation/generation_runge_kutta_cash_karp54.hpp [9:10]
- boost/numeric/odeint/stepper/generation/generation_runge_kutta_cash_karp54_classic.hpp [10:11]
- boost/numeric/odeint/stepper/generation/generation_runge_kutta_dopri5.hpp [9:10]
- boost/numeric/odeint/stepper/generation/generation_runge_kutta_fehlberg78.hpp [9:10]
- boost/numeric/odeint/util/is_pair.hpp [9:10]
- boost/numeric/odeint/util/is_resizeable.hpp [9:10]
- boost/numeric/odeint/util/resize.hpp [10:11]
- boost/numeric/odeint/util/same_size.hpp [10:11]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2180ce6ee1e5aa9a5aeb7320a3a192e4
-BELONGS ya.make
- License text:
- // Copyright (c) 2012-2013 Adam Wulkiewicz, Lodz, Poland.
- // Copyright (c) 2011-2013 Andrew Hundt.
- // Copyright (c) 2013-2014 Ion Gaztanaga
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/container/static_vector.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 219048af2eeea3f4c00902491fa57b67
-BELONGS ya.make
- License text:
- // Copyright 2008 Howard Hinnant
- // Copyright 2008 Beman Dawes
- // Copyright 2009-2012 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/chrono/time_point.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 21959bbfabcef0c0a725190ceece57cb
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/array/enum.hpp at line 6, boost/preprocessor/array/to_list.hpp at line 6, boost/preprocessor/array/to_seq.hpp at line 6, boost/preprocessor/array/to_tuple.hpp at line 6, boost/preprocessor/facilities/overload.hpp at line 6, boost/preprocessor/list/to_array.hpp at line 6, boost/preprocessor/seq/detail/binary_transform.hpp at line 6, boost/preprocessor/seq/to_list.hpp at line 6, boost/preprocessor/tuple/enum.hpp at line 6, boost/preprocessor/tuple/size.hpp at line 6, boost/preprocessor/tuple/to_array.hpp at line 6, boost/preprocessor/variadic.hpp at line 6, boost/preprocessor/variadic/elem.hpp at line 6, boost/preprocessor/variadic/size.hpp at line 6, boost/preprocessor/variadic/to_array.hpp at line 6, boost/preprocessor/variadic/to_list.hpp at line 6, boost/preprocessor/variadic/to_seq.hpp at line 6, boost/preprocessor/variadic/to_tuple.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/preprocessor/array/enum.hpp [3:6]
- boost/preprocessor/array/to_list.hpp [3:6]
- boost/preprocessor/array/to_seq.hpp [3:6]
- boost/preprocessor/array/to_tuple.hpp [3:6]
- boost/preprocessor/facilities/overload.hpp [3:6]
- boost/preprocessor/list/to_array.hpp [3:6]
- boost/preprocessor/seq/detail/binary_transform.hpp [3:5]
- boost/preprocessor/seq/to_list.hpp [3:6]
- boost/preprocessor/tuple/enum.hpp [3:6]
- boost/preprocessor/tuple/size.hpp [3:6]
- boost/preprocessor/tuple/to_array.hpp [3:6]
- boost/preprocessor/variadic.hpp [3:6]
- boost/preprocessor/variadic/elem.hpp [3:6]
- boost/preprocessor/variadic/size.hpp [3:6]
- boost/preprocessor/variadic/to_array.hpp [3:6]
- boost/preprocessor/variadic/to_list.hpp [3:6]
- boost/preprocessor/variadic/to_seq.hpp [3:6]
- boost/preprocessor/variadic/to_tuple.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 21dd23f843f6e73e6d7975f4b3c676ff
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/foreach.hpp at line 6, boost/phoenix/stl/algorithm/detail/begin.hpp at line 11, boost/phoenix/stl/algorithm/detail/decay_array.hpp at line 10, boost/phoenix/stl/algorithm/detail/end.hpp at line 11, boost/phoenix/stl/algorithm/detail/has_equal_range.hpp at line 10, boost/phoenix/stl/algorithm/detail/has_find.hpp at line 12, boost/phoenix/stl/algorithm/detail/has_lower_bound.hpp at line 10, boost/phoenix/stl/algorithm/detail/has_remove.hpp at line 10, boost/phoenix/stl/algorithm/detail/has_remove_if.hpp at line 10, boost/phoenix/stl/algorithm/detail/has_reverse.hpp at line 10, boost/phoenix/stl/algorithm/detail/has_sort.hpp at line 10, boost/phoenix/stl/algorithm/detail/has_unique.hpp at line 10, boost/phoenix/stl/algorithm/detail/has_upper_bound.hpp at line 10, boost/phoenix/stl/algorithm/detail/is_std_hash_map.hpp at line 10, boost/phoenix/stl/algorithm/detail/is_std_hash_set.hpp at line 10, boost/phoenix/stl/algorithm/detail/is_std_list.hpp at line 10, boost/phoenix/stl/algorithm/detail/is_std_map.hpp at line 10, boost/phoenix/stl/algorithm/detail/is_std_set.hpp at line 10, boost/phoenix/stl/algorithm/detail/is_unordered_set_or_map.hpp at line 13, boost/phoenix/stl/algorithm/iteration.hpp at line 11, boost/phoenix/stl/algorithm/querying.hpp at line 13, boost/phoenix/stl/algorithm/transformation.hpp at line 12, boost/range/numeric.hpp at line 13
- License text:
- // Copyright 2004 Eric Niebler.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/foreach.hpp [4:6]
- boost/phoenix/stl/algorithm/detail/begin.hpp [9:9]
- boost/phoenix/stl/algorithm/detail/decay_array.hpp [8:8]
- boost/phoenix/stl/algorithm/detail/end.hpp [9:9]
- boost/phoenix/stl/algorithm/detail/has_equal_range.hpp [8:8]
- boost/phoenix/stl/algorithm/detail/has_find.hpp [10:10]
- boost/phoenix/stl/algorithm/detail/has_lower_bound.hpp [8:8]
- boost/phoenix/stl/algorithm/detail/has_remove.hpp [8:8]
- boost/phoenix/stl/algorithm/detail/has_remove_if.hpp [8:8]
- boost/phoenix/stl/algorithm/detail/has_reverse.hpp [8:8]
- boost/phoenix/stl/algorithm/detail/has_sort.hpp [8:8]
- boost/phoenix/stl/algorithm/detail/has_unique.hpp [8:8]
- boost/phoenix/stl/algorithm/detail/has_upper_bound.hpp [8:8]
- boost/phoenix/stl/algorithm/detail/is_std_hash_map.hpp [8:8]
- boost/phoenix/stl/algorithm/detail/is_std_hash_set.hpp [8:8]
- boost/phoenix/stl/algorithm/detail/is_std_list.hpp [8:8]
- boost/phoenix/stl/algorithm/detail/is_std_map.hpp [8:8]
- boost/phoenix/stl/algorithm/detail/is_std_set.hpp [8:8]
- boost/phoenix/stl/algorithm/detail/is_unordered_set_or_map.hpp [11:11]
- boost/phoenix/stl/algorithm/iteration.hpp [9:9]
- boost/phoenix/stl/algorithm/querying.hpp [11:11]
- boost/phoenix/stl/algorithm/transformation.hpp [10:10]
- boost/range/numeric.hpp [11:13]
-
-KEEP COPYRIGHT_SERVICE_LABEL 21e959ad55799f0d703f33fa06e92175
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/remove_cv_ref.hpp at line 4
- License text:
- // (C) Copyright Peter Dimov 2017.
- // Use, modification and distribution are subject to the Boost Software License,
- // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_traits/remove_cv_ref.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2225076000632a3d391f0c4252302237
-BELONGS ya.make
- License text:
- // Copyright 2007 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/detail/sp_typeinfo.hpp [14:14]
- boost/smart_ptr/detail/atomic_count_gcc_x86.hpp [9:9]
- boost/smart_ptr/detail/atomic_count_sync.hpp [11:11]
-
-KEEP COPYRIGHT_SERVICE_LABEL 22282f4483789381ead4ca15608f28b1
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/distributed/adjlist/serialization.hpp at line 3, boost/graph/distributed/shuffled_distribution.hpp at line 3
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/distributed/adjlist/serialization.hpp [1:3]
- boost/graph/distributed/shuffled_distribution.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 22324db5d04de73bdfa0cbdd1c7b315e
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/ptr_container/detail/default_deleter.hpp at line 3
- License text:
- // (C) Copyright Jonathan Turkanis 2004-2005.
- // Distributed under the Boost Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/ptr_container/detail/default_deleter.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 22403f1361a990fb6fd5cc8b876e046d
-BELONGS ya.make
- License text:
- // Copyright (c) 2004 Kristopher Beevers
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/astar_search.hpp [5:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 224ede317f83c513d1a68907e0d028bc
-BELONGS ya.make
- License text:
- // Copyright Kevlin Henney, 2000, 2001, 2002. All rights reserved.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/any.hpp [331:331]
-
-KEEP COPYRIGHT_SERVICE_LABEL 224f57df16325dd91014dfc45580545f
-BELONGS ya.make
- License text:
- // Copyright (C) 2001 Daryle Walker.
- // Copyright (C) 2003 Vesa Karvonen.
- // Copyright (C) 2003 Gennaro Prota.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/integer/static_log2.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 228235344a4eeb283fe723053ea024fd
-BELONGS libs/random/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/random/detail/int_float_pair.hpp at line 6, boost/random/detail/operators.hpp at line 6, boost/random/normal_distribution.hpp at line 6, boost/random/random_device.hpp at line 6, boost/uuid/detail/random_provider_posix.ipp at line 6, boost/uuid/detail/random_provider_wincrypt.ipp at line 6, libs/random/src/random_device.cpp at line 6
- License text:
- * Copyright Jens Maurer 2000-2001
- * Copyright Steven Watanabe 2010-2011
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/random/detail/int_float_pair.hpp [3:6]
- boost/random/detail/operators.hpp [3:5]
- boost/random/normal_distribution.hpp [3:6]
- boost/random/random_device.hpp [3:6]
- boost/uuid/detail/random_provider_posix.ipp [3:6]
- boost/uuid/detail/random_provider_wincrypt.ipp [3:6]
- libs/random/src/random_device.cpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 22b8921218f5846e7fc7d4a2ac8c34c0
-BELONGS ya.make
- License text:
- // Copyright 2004-2006 The Trustees of Indiana University.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/plod_generator.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 22d1ca369e5c9145bc949ee6e4d45afd
-BELONGS ya.make
- License text:
- // (C) Copyright Stephen Cleary 2000
- // (C) Copyright Ion Gaztanaga 2015-2017.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/container/detail/mutex.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 234430fe848ce8d6594b231bd8e0cfb8
-BELONGS ya.make
- License text:
- Copyright (c) 2001 Doug Gregor
- Copyright (c) 1999-2003 Jaakko Jarvi
- Copyright (c) 2001-2011 Joel de Guzman
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/container/generation/ignore.hpp [2:4]
- boost/fusion/container/vector/detail/cpp03/vector_fwd.hpp [2:3]
- boost/fusion/sequence/comparison/detail/equal_to.hpp [2:3]
- boost/fusion/sequence/comparison/detail/greater.hpp [2:3]
- boost/fusion/sequence/comparison/detail/greater_equal.hpp [2:3]
- boost/fusion/sequence/comparison/detail/less.hpp [2:3]
- boost/fusion/sequence/comparison/detail/less_equal.hpp [2:3]
- boost/fusion/sequence/comparison/detail/not_equal_to.hpp [2:3]
- boost/fusion/sequence/comparison/equal_to.hpp [2:3]
- boost/fusion/sequence/comparison/greater.hpp [2:3]
- boost/fusion/sequence/comparison/greater_equal.hpp [2:3]
- boost/fusion/sequence/comparison/less.hpp [2:3]
- boost/fusion/sequence/comparison/less_equal.hpp [2:3]
- boost/fusion/sequence/comparison/not_equal_to.hpp [2:3]
- boost/fusion/sequence/io/detail/in.hpp [2:4]
- boost/fusion/sequence/io/detail/manip.hpp [2:4]
- boost/fusion/sequence/io/detail/out.hpp [2:4]
- boost/fusion/sequence/io/in.hpp [2:4]
- boost/fusion/sequence/io/out.hpp [2:4]
- boost/fusion/support/detail/as_fusion_element.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 235e1329bace813cd48f34c2ee344e77
-BELONGS libs/chrono/ya.make ya.make
- License text:
- // (C) Copyright Howard Hinnant
- // Copyright 2011 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/chrono/ceil.hpp [3:4]
- boost/chrono/floor.hpp [3:4]
- boost/chrono/io/utility/ios_base_state_ptr.hpp [3:3]
- boost/chrono/io/utility/manip_base.hpp [3:3]
- boost/chrono/io/utility/to_string.hpp [3:5]
- boost/chrono/round.hpp [3:4]
- boost/ratio/include.hpp [3:3]
- boost/ratio/mpl/arithmetic.hpp [3:3]
- boost/ratio/mpl/comparison.hpp [3:3]
- boost/ratio/mpl/rational_constant.hpp [2:4]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/laps_accumulator_set.hpp [2:4]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/laps_sequence_container.hpp [2:4]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/last_lap.hpp [2:4]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/no_memory.hpp [2:4]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/dont_start.hpp [2:4]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/formatters/accumulator_set_formatter.hpp [2:4]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/formatters/base_formatter.hpp [2:4]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/formatters/elapsed_formatter.hpp [2:4]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/formatters/times_formatter.hpp [2:4]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/laps_stopwatch.hpp [3:5]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/clock_default_formatter.hpp [2:4]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/laps_accumulator_set_stopwatch_default_formatter.hpp [2:4]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/laps_stopclock.hpp [2:4]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/laps_stopwatch_default_formatter.hpp [2:5]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/process_default_formatter.hpp [2:5]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/stopclock.hpp [2:4]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/stopwatch_reporter.hpp [2:4]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/stopwatch_reporter_default_formatter.hpp [2:4]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/strict_stopclock.hpp [2:4]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/system_default_formatter.hpp [2:4]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/thread_default_formatter.hpp [2:4]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/simple_stopwatch.hpp [2:5]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/stopwatch.hpp [3:5]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/strict_stopwatch.hpp [2:5]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/suspendable_stopwatch.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 23735cecfcf0a60c051f7faba5e89078
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/suite/indexing/container_utils.hpp at line 4, boost/python/suite/indexing/detail/indexing_suite_detail.hpp at line 3, boost/python/suite/indexing/indexing_suite.hpp at line 3, boost/python/suite/indexing/map_indexing_suite.hpp at line 3, boost/python/suite/indexing/vector_indexing_suite.hpp at line 3
- License text:
- // (C) Copyright Joel de Guzman 2003.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/python/suite/indexing/container_utils.hpp [2:4]
- boost/python/suite/indexing/detail/indexing_suite_detail.hpp [1:3]
- boost/python/suite/indexing/indexing_suite.hpp [1:3]
- boost/python/suite/indexing/map_indexing_suite.hpp [1:3]
- boost/python/suite/indexing/vector_indexing_suite.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 23778f87dcf85ae8b833451d958ec8be
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2007 Joel de Guzman
- Copyright (c) 2007 Dan Marsden
- Copyright (c) 2009-2011 Christopher Schmidt
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/adapted/struct/adapt_assoc_struct.hpp [2:4]
- boost/fusion/adapted/struct/adapt_struct.hpp [2:4]
- boost/fusion/adapted/struct/detail/adapt_base.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 23b27274909dd16fa48c4bb48b55b3aa
-BELONGS ya.make
- License text:
- // Copyright Peter Dimov 2001-2002
- // Copyright Aleksey Gurtovoy 2001-2004
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/arg.hpp [9:10]
- boost/mpl/arg_fwd.hpp [5:6]
- boost/mpl/aux_/preprocessed/bcc/arg.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc551/arg.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc_pre590/arg.hpp [2:3]
- boost/mpl/aux_/preprocessed/dmc/arg.hpp [2:3]
- boost/mpl/aux_/preprocessed/gcc/arg.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc60/arg.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc70/arg.hpp [2:3]
- boost/mpl/aux_/preprocessed/mwcw/arg.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ctps/arg.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ttp/arg.hpp [2:3]
- boost/mpl/aux_/preprocessed/plain/arg.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 23c8bb4b26b422d99ac7ea9660dc580c
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/strong_typedef.hpp at line 15
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/serialization/strong_typedef.hpp [12:15]
-
-KEEP COPYRIGHT_SERVICE_LABEL 23ec45cdd65cf0f6b92e9f7c947851ad
-BELONGS ya.make
- License text:
- // Copyright (c) 2000-2010
- // Joerg Walter, Mathias Koch, David Bellot
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/ublas/fwd.hpp [2:3]
- boost/numeric/ublas/hermitian.hpp [2:3]
- boost/numeric/ublas/io.hpp [2:3]
- boost/numeric/ublas/vector.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 246b91667b5b03d6d465ceede376e098
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/property_map/property_map_iterator.hpp at line 3
- License text:
- // (C) Copyright Jeremy Siek, 2001.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/property_map/property_map_iterator.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 24912d75a8a2a76e1aa259b4b84a3c7b
-BELONGS ya.make
- License text:
- Copyright 2010-2013 Karsten Ahnert
- Copyright 2010-2015 Mario Mulansky
- Copyright 2012 Christoph Koke
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/stepper/controlled_runge_kutta.hpp [8:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2491de20f7a9d79855692fc382be811a
-BELONGS ya.make
- License text:
- // Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
- // Copyright 2004-2008 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/detail/sp_counted_base_spin.hpp [13:14]
-
-KEEP COPYRIGHT_SERVICE_LABEL 24d6214a4251073152717c9edc799703
-BELONGS ya.make
- License text:
- // Copyright (c) 2010 Athanasios Iliopoulos
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/ublas/assignment.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 24f38140c8e89964345d550ec0c8c6e0
-BELONGS ya.make
- License text:
- Copyright (c) 2002-2003 Joel de Guzman
- Copyright (c) 2002 Juan Carlos Arevalo-Baeza
- Copyright (c) 2002-2003 Martin Wille
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/attribute/closure_context.hpp [2:4]
- boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp [2:4]
- boost/spirit/home/classic/core/non_terminal/impl/subrule.ipp [2:4]
- boost/spirit/home/classic/core/non_terminal/parser_context.hpp [2:4]
- boost/spirit/home/classic/core/non_terminal/subrule.hpp [2:4]
- boost/spirit/home/classic/dynamic.hpp [2:5]
- boost/spirit/home/classic/dynamic/for.hpp [2:4]
- boost/spirit/home/classic/dynamic/if.hpp [2:5]
- boost/spirit/home/classic/dynamic/while.hpp [2:4]
- boost/spirit/home/classic/meta/as_parser.hpp [2:4]
- boost/spirit/home/classic/meta/impl/parser_traits.ipp [2:5]
- boost/spirit/home/classic/meta/impl/traverse.ipp [2:4]
- boost/spirit/home/classic/meta/parser_traits.hpp [2:5]
- boost/spirit/home/classic/meta/traverse.hpp [2:4]
- boost/spirit/home/classic/utility/functor_parser.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 25101a2bf5bf72c9f5a65128f604df86
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/filesystem/convenience.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/filesystem/convenience.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2516b6c5eb8aa8b5db5b35bc7391bd45
-BELONGS ya.make
- License text:
- // Copyright (c) 2000-2009
- // Joerg Walter, Mathias Koch, Gunter Winkler
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/ublas/functional.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2548a67b92ccb549f815c71fffedd824
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iostreams/detail/config/windows_posix.hpp at line 4, boost/iostreams/detail/double_object.hpp at line 4, boost/iostreams/detail/select_by_size.hpp at line 4, boost/iostreams/device/array.hpp at line 4, boost/iostreams/device/null.hpp at line 4, boost/iostreams/filtering_stream.hpp at line 4
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/iostreams/detail/config/windows_posix.hpp [1:5]
- boost/iostreams/detail/double_object.hpp [1:4]
- boost/iostreams/detail/select_by_size.hpp [1:4]
- boost/iostreams/device/array.hpp [1:4]
- boost/iostreams/device/null.hpp [1:4]
- boost/iostreams/filtering_stream.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 255723eed8c8f6b6ec5152864ce80e8a
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signals2/detail/result_type_wrapper.hpp at line 6, boost/signals2/detail/signals_common.hpp at line 6, boost/signals2/last_value.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/signals2/detail/result_type_wrapper.hpp [3:6]
- boost/signals2/detail/signals_common.hpp [3:6]
- boost/signals2/last_value.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 259fd9262673671b8cab0f903fbeabef
-BELONGS ya.make
- License text:
- // Copyright (C) 2007 Matthias Troyer
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/parallel/detail/untracked_pair.hpp [1:1]
- boost/property_map/parallel/detail/untracked_pair.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 25e0eaeed6a114cd44e28e07f4bcf799
-BELONGS ya.make
- License text:
- Copyright 2008 Adobe Systems Incorporated
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/algorithm/gather.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 25e4e91c7904dabe1db993d0a9d4c304
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/mfc_map.hpp at line 5
- License text:
- // Copyright Adam D. Walling 2012. Use, modification and
- // distribution is subject to the Boost Software License, Version
- // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/range/mfc_map.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 260eda8e865b1ac44daf780b42e51c62
-BELONGS ya.make
- License text:
- // Copyright (C) 2005-2008 The Trustees of Indiana University.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/distributed/boman_et_al_graph_coloring.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 26559e960931b28891fa79dd8cbf7bd0
-BELONGS ya.make
- License text:
- // (c) 2008 Gordon Woodhull
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSEmpl::_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/msm/mpl_graph/mpl_graph.hpp [7:9]
-
-KEEP COPYRIGHT_SERVICE_LABEL 26692c9005ef6256aa7134eef5a4c2ed
-BELONGS ya.make
- License text:
- // Copyright Antony Polukhin, 2013-2014.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/variant/detail/multivisitors_cpp11_based.hpp [6:6]
- boost/variant/detail/multivisitors_cpp14_based.hpp [7:7]
- boost/variant/detail/multivisitors_preprocessor_based.hpp [6:6]
- boost/variant/multivisitors.hpp [6:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 266d0bf761289539d88d2d0c479f3e6c
-BELONGS ya.make
- License text:
- // Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com
- // Copyright (c) 2005-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/asio/ssl/detail/impl/openssl_init.ipp [5:6]
- boost/asio/ssl/impl/context.hpp [5:6]
- boost/asio/ssl/impl/context.ipp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 26ad08d832a34ee06ee9242a2e6f0191
-BELONGS ya.make
- License text:
- // Copyright (C) 2002-2006 Marcin Kalicinski
- // Copyright (C) 2007 Alexey Baskakov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/property_tree/detail/info_parser_writer_settings.hpp [2:3]
- boost/property_tree/detail/xml_parser_writer_settings.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 26c31cb23da28e487c480a209fc8f691
-BELONGS ya.make
- License text:
- // Copyright Beman Dawes 2003, 2006, 2011
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/timer/config.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 26d8aac6fc547a1e5f51e33742e3d215
-BELONGS ya.make
- License text:
- Copyright (c) 2014 Eric Niebler
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/include/nil.hpp [2:2]
- boost/fusion/support/config.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 26ec38d4689211b14e2c5b53e9a78f76
-BELONGS ya.make
- License text:
- // Copyright 2009 The Trustees of Indiana University.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/detail/histogram_sort.hpp [1:1]
- boost/graph/topology.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 27039f1014fc0cb087f4ed2a48c6ff74
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2003 Daniel Nuffer
- Copyright (c) 2001-2007 Hartmut Kaiser
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/tree/ast.hpp [2:4]
- boost/spirit/home/classic/tree/parse_tree.hpp [2:4]
- boost/spirit/home/classic/tree/parse_tree_utils.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 27100ec4a99cd9d80391674193d16ca4
-BELONGS ya.make
- License text:
- // Copyright 2003 - 2011 LASMEA UMR 6602 CNRS/Univ. Clermont II
- // Copyright 2009 - 2011 LRI UMR 8623 CNRS/Univ Paris Sud XI
- // Copyright 2011 Eric Niebler
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/proto/detail/remove_typename.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 271724fafcb242b0c0f0c421b755f5aa
-BELONGS ya.make
- License text:
- // Copyright (C) 2002-2003
- // David Moore, William E. Kempf
- // Copyright (C) 2007-8 Anthony Williams
- // (C) Copyright 2013 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/barrier.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2724c3ea346ae21b40b968119bcd1167
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/logic/tribool.hpp at line 5, boost/logic/tribool_fwd.hpp at line 5, boost/logic/tribool_io.hpp at line 5
- License text:
- // Copyright Douglas Gregor 2002-2004. Use, modification and
- // distribution is subject to the Boost Software License, Version
- // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/logic/tribool.hpp [3:5]
- boost/logic/tribool_fwd.hpp [3:5]
- boost/logic/tribool_io.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 275365ad223b4477b2d7d0620fee65f5
-BELONGS ya.make
- License text:
- // Copyright 2002, 2009, 2014 Peter Dimov
- // Copyright 2008-2009 Frank Mori Hess
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/enable_shared_from_raw.hpp [7:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 275d0865f693a03adf83bd0f3ac07c33
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iterator/detail/config_def.hpp at line 5, boost/iterator/detail/enable_if.hpp at line 5, boost/iterator/filter_iterator.hpp at line 5, boost/iterator/indirect_iterator.hpp at line 5, boost/iterator/interoperable.hpp at line 5, boost/iterator/iterator_adaptor.hpp at line 5, boost/iterator/iterator_archetypes.hpp at line 5, boost/iterator/iterator_categories.hpp at line 5, boost/iterator/iterator_concepts.hpp at line 5, boost/iterator/iterator_facade.hpp at line 5, boost/iterator/reverse_iterator.hpp at line 5, boost/iterator/transform_iterator.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/iterator/detail/config_def.hpp [1:5]
- boost/iterator/detail/enable_if.hpp [1:5]
- boost/iterator/filter_iterator.hpp [1:5]
- boost/iterator/indirect_iterator.hpp [1:5]
- boost/iterator/interoperable.hpp [1:5]
- boost/iterator/iterator_adaptor.hpp [1:5]
- boost/iterator/iterator_archetypes.hpp [1:3]
- boost/iterator/iterator_categories.hpp [1:3]
- boost/iterator/iterator_concepts.hpp [1:3]
- boost/iterator/iterator_facade.hpp [1:5]
- boost/iterator/reverse_iterator.hpp [1:5]
- boost/iterator/transform_iterator.hpp [1:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2778cda5aa02277520174bc9c4c37470
-BELONGS ya.make
- License text:
- // This file was modified by Oracle on 2015, 2017.
- // Modifications copyright (c) 2015-2017 Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/direction_code.hpp [5:6]
- boost/geometry/algorithms/detail/overlay/get_turn_info.hpp [6:7]
- boost/geometry/algorithms/detail/partition.hpp [6:7]
- boost/geometry/algorithms/detail/point_is_spike_or_equal.hpp [8:9]
- boost/geometry/algorithms/sym_difference.hpp [5:6]
- boost/geometry/core/exception.hpp [7:8]
- boost/geometry/strategies/geographic/distance_thomas.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 277e6a29d6f3bf8fec3732391a666d6e
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/test/impl/cpp_main.ipp at line 4, boost/test/impl/test_main.ipp at line 4
- License text:
- // (C) Copyright Gennadiy Rozental 2001.
- // (C) Copyright Beman Dawes 1995-2001.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/test/impl/cpp_main.ipp [1:4]
- boost/test/impl/test_main.ipp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 27c670043b04bd7901f71bf63f139908
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/converter/pytype_function.hpp at line 3
- License text:
- // Copyright David Abrahams 2002, Nikolay Mladenov 2007.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/python/converter/pytype_function.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 27ddeabbafbaeb743985907331386107
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/vacpp.hpp [1:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2822e8ff52ff00b8c0b77a79618c0a15
-BELONGS ya.make
- License text:
- // Copyright (c) 2010 Alfredo Correa
- // Copyright (c) 2010-2012 Barend Gehrels, Amsterdam, the Netherlands.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/geometries/adapted/boost_array.hpp [3:4]
- boost/geometry/geometries/adapted/std_array.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 28467714d17407abf257b8ba02a977ef
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/architecture/arm.h at line 5, boost/predef/os.h at line 5, boost/predef/os/ios.h at line 5, boost/predef/os/macos.h at line 5
- License text:
- Copyright Rene Rivera 2008-2015
- Copyright Franz Detro 2014
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/predef/architecture/arm.h [2:6]
- boost/predef/os.h [2:5]
- boost/predef/os/ios.h [2:5]
- boost/predef/os/macos.h [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 286ee6881d6fd5e754840b518ab1c541
-BELONGS ya.make
- License text:
- Copyright (c) 2001, Daniel C. Nuffer
- Copyright (c) 2003, Hartmut Kaiser
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/iterator/fixed_size_queue.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 28754ad9c0aa02276f0e2f7033f5dfc4
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container_hash/hash.hpp at line 4
- License text:
- // Copyright 2005-2014 Daniel James.
- // Distributed under the Boost Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/container_hash/hash.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 28928198315325a81f74270ad06e5e12
-BELONGS ya.make
- License text:
- // Copyright Pavol Droba 2002-2006.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/algorithm/string/compare.hpp [3:3]
- boost/algorithm/string/detail/finder.hpp [3:3]
- boost/algorithm/string/erase.hpp [3:3]
- boost/algorithm/string/finder.hpp [3:3]
- boost/algorithm/string/join.hpp [3:3]
- boost/algorithm/string/replace.hpp [3:3]
- boost/algorithm/string/split.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 28974520d6ba59cf881108b772eb6136
-BELONGS ya.make
- License text:
- // Copyright (c) 2001, Thomas Flemming, tf@ttqv.com
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/srs/projections/proj/healpix.hpp [32:32]
- boost/geometry/srs/projections/proj/krovak.hpp [28:29]
-
-KEEP COPYRIGHT_SERVICE_LABEL 28c9c06c2cde233aee608a094110da18
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signals2/detail/null_output_iterator.hpp at line 6, boost/signals2/detail/unique_lock.hpp at line 7, boost/signals2/dummy_mutex.hpp at line 8
- License text:
- // Copyright Frank Mori Hess 2008.
- // Distributed under the Boost Software License, Version
- // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/signals2/detail/null_output_iterator.hpp [4:6]
- boost/signals2/detail/unique_lock.hpp [5:7]
- boost/signals2/dummy_mutex.hpp [6:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 28d732e1da2cbf52812dcc1844a4d2d4
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/is_class.hpp at line 4
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_traits/is_class.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 29b0154b5b9497e05eafdea58aee1ec9
-BELONGS ya.make
- License text:
- // Copyright 2000 University of Notre Dame.
- // Authors: Jeremy G. Siek, Andrew Lumsdaine, Lie-Quan Lee
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/edge_connectivity.hpp [2:3]
- boost/graph/edmonds_karp_max_flow.hpp [2:3]
- boost/graph/push_relabel_max_flow.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 29c2f268f49f1dca1203b60b9452f3b9
-BELONGS ya.make
- License text:
- // Copyright (C) 2003, 2008 Fernando Luis Cacciola Carballal.
- // Copyright (C) 2016 Andrzej Krzemienski
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/optional/detail/optional_aligned_storage.hpp [1:2]
- boost/optional/detail/optional_factory_support.hpp [1:2]
- boost/optional/optional_fwd.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 29ef0d00b2aae64d2f0f466fcb3faa99
-BELONGS ya.make
- License text:
- // Copyright (C) 2011 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/cv_status.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2a09550ee1639dbc41d6a39a2c375d5d
-BELONGS ya.make
- License text:
- // Copyright (c) 2013 John Maddock, Antony Polukhin
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/detail/basic_pointerbuf.hpp [6:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2a0e77e759c8b880049f165423e4b6fb
-BELONGS ya.make
- License text:
- // Copyright (c) 2006-7 John Maddock
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/tools/config.hpp [1:3]
- boost/math/tools/workaround.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2a14a3997f9ef4f008c150826158909e
-BELONGS ya.make
- License text:
- // (C) Copyright 2008-10 Anthony Williams
- // (C) Copyright 2011-2015 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/future.hpp [1:2]
- boost/thread/futures/future_error.hpp [1:2]
- boost/thread/futures/future_error_code.hpp [1:2]
- boost/thread/futures/future_status.hpp [1:2]
- boost/thread/futures/is_future_type.hpp [1:2]
- boost/thread/futures/launch.hpp [1:2]
- boost/thread/futures/wait_for_all.hpp [1:2]
- boost/thread/futures/wait_for_any.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2a1b9056b88c2a786bdb0458965a2f2e
-BELONGS ya.make
- License text:
- // Copyright (c) 2002, 2009, 2014 Peter Dimov
- // Copyright (2) Beman Dawes 2010, 2011
- // Copyright (3) Ion Gaztanaga 2013
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/core/lightweight_test.hpp [13:15]
- boost/endian/detail/lightweight_test.hpp [13:15]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2a3b1092793f083bc8f7481a948c88cf
-BELONGS ya.make
- License text:
- // Copyright Kevlin Henney, 2000-2005.
- // Copyright Alexander Nasonov, 2006-2010.
- // Copyright Antony Polukhin, 2011-2014.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/lexical_cast.hpp [1:3]
- boost/lexical_cast/bad_lexical_cast.hpp [1:3]
- boost/lexical_cast/detail/converter_lexical.hpp [1:3]
- boost/lexical_cast/detail/converter_lexical_streams.hpp [1:3]
- boost/lexical_cast/detail/converter_numeric.hpp [1:3]
- boost/lexical_cast/detail/inf_nan.hpp [1:3]
- boost/lexical_cast/detail/is_character.hpp [1:3]
- boost/lexical_cast/detail/lcast_char_constants.hpp [1:3]
- boost/lexical_cast/detail/lcast_unsigned_converters.hpp [1:3]
- boost/lexical_cast/detail/widest_char.hpp [1:3]
- boost/lexical_cast/lexical_cast_old.hpp [1:3]
- boost/lexical_cast/try_lexical_convert.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2a74f5dc5adfaca2efc96baf17b67dd6
-BELONGS ya.make
- License text:
- Copyright (c) 2005-2010 Joel de Guzman
- Copyright (c) 2010-2011 Thomas Heller
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/phoenix.hpp [2:3]
- boost/phoenix/core/argument.hpp [2:4]
- boost/phoenix/core/argument.hpp [86:87]
- boost/phoenix/core/argument.hpp [117:118]
- boost/phoenix/core/detail/argument.hpp [2:4]
- boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_10.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_20.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_30.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_40.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_50.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_10.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_20.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_30.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_40.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_50.hpp [2:3]
- boost/phoenix/core/environment.hpp [2:3]
- boost/phoenix/scope/local_variable.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2af72a7e17537e33a1df9af7da221b72
-BELONGS ya.make
- License text:
- // Copyright (c) 2008 Gerald I. Evenden
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/srs/projections/proj/etmerc.hpp [26:26]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2b2af125915ba7065c8a686471913605
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/allocator_traits.hpp at line 11, boost/container/scoped_allocator.hpp at line 11, boost/container/uses_allocator.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2011-2013. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/container/allocator_traits.hpp [9:11]
- boost/container/scoped_allocator.hpp [9:11]
- boost/container/uses_allocator.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2b5b2baa7c08899ee3f65704d7448b3d
-BELONGS ya.make
- License text:
- // This file was modified by Oracle on 2017.
- // Modifications copyright (c) 2017 Oracle and/or its affiliates.
- // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/buffer.hpp [7:9]
- boost/geometry/algorithms/correct.hpp [8:10]
- boost/geometry/algorithms/detail/buffer/buffer_inserter.hpp [5:7]
- boost/geometry/algorithms/detail/buffer/get_piece_turns.hpp [6:8]
- boost/geometry/algorithms/detail/equals/collect_vectors.hpp [8:9]
- boost/geometry/algorithms/detail/extreme_points.hpp [8:9]
- boost/geometry/algorithms/detail/has_self_intersections.hpp [6:8]
- boost/geometry/algorithms/detail/multi_modify.hpp [7:9]
- boost/geometry/algorithms/detail/overlay/assign_parents.hpp [6:8]
- boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp [6:7]
- boost/geometry/algorithms/detail/overlay/get_intersection_points.hpp [5:6]
- boost/geometry/algorithms/detail/overlay/get_relative_order.hpp [5:6]
- boost/geometry/algorithms/detail/overlay/handle_colocations.hpp [6:7]
- boost/geometry/algorithms/detail/overlay/less_by_segment_ratio.hpp [5:6]
- boost/geometry/algorithms/detail/overlay/ring_properties.hpp [5:7]
- boost/geometry/algorithms/detail/overlay/select_rings.hpp [6:8]
- boost/geometry/algorithms/detail/overlay/self_turn_points.hpp [6:7]
- boost/geometry/algorithms/detail/overlay/sort_by_side.hpp [6:7]
- boost/geometry/algorithms/detail/overlay/traversal.hpp [5:6]
- boost/geometry/algorithms/detail/point_on_border.hpp [7:9]
- boost/geometry/algorithms/is_convex.hpp [5:6]
- boost/geometry/algorithms/remove_spikes.hpp [8:9]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2b6708129fdf91bd871f6ae1e2789611
-BELONGS ya.make
- License text:
- * Copyright (c) 2009 Helge Bahmann
- * Copyright (c) 2013 Tim Blechmann
- * Copyright (c) 2012 - 2014 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/atomic/detail/caps_msvc_arm.hpp [6:8]
- boost/atomic/detail/caps_msvc_x86.hpp [6:8]
- boost/atomic/detail/caps_windows.hpp [6:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2bb7fde157effeae3f1e1e3100704f64
-BELONGS ya.make
- License text:
- // Copyright (c) 2004 Hartmut Kaiser
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/program_options/config.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2bc96828bf98197994f64f66a4a1efb4
-BELONGS ya.make
- License text:
- // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/srs/projections/proj/aea.hpp [7:7]
- boost/geometry/srs/projections/proj/aeqd.hpp [7:7]
- boost/geometry/srs/projections/proj/airy.hpp [7:7]
- boost/geometry/srs/projections/proj/aitoff.hpp [7:7]
- boost/geometry/srs/projections/proj/august.hpp [7:7]
- boost/geometry/srs/projections/proj/bacon.hpp [7:7]
- boost/geometry/srs/projections/proj/bipc.hpp [7:7]
- boost/geometry/srs/projections/proj/boggs.hpp [7:7]
- boost/geometry/srs/projections/proj/bonne.hpp [7:7]
- boost/geometry/srs/projections/proj/cass.hpp [7:7]
- boost/geometry/srs/projections/proj/cc.hpp [7:7]
- boost/geometry/srs/projections/proj/cea.hpp [7:7]
- boost/geometry/srs/projections/proj/chamb.hpp [7:7]
- boost/geometry/srs/projections/proj/collg.hpp [7:7]
- boost/geometry/srs/projections/proj/crast.hpp [7:7]
- boost/geometry/srs/projections/proj/denoy.hpp [7:7]
- boost/geometry/srs/projections/proj/eck1.hpp [7:7]
- boost/geometry/srs/projections/proj/eck2.hpp [7:7]
- boost/geometry/srs/projections/proj/eck3.hpp [7:7]
- boost/geometry/srs/projections/proj/eck4.hpp [7:7]
- boost/geometry/srs/projections/proj/eck5.hpp [7:7]
- boost/geometry/srs/projections/proj/eqc.hpp [7:7]
- boost/geometry/srs/projections/proj/eqdc.hpp [7:7]
- boost/geometry/srs/projections/proj/etmerc.hpp [7:7]
- boost/geometry/srs/projections/proj/fahey.hpp [7:7]
- boost/geometry/srs/projections/proj/fouc_s.hpp [7:7]
- boost/geometry/srs/projections/proj/gall.hpp [7:7]
- boost/geometry/srs/projections/proj/geocent.hpp [7:7]
- boost/geometry/srs/projections/proj/geos.hpp [7:7]
- boost/geometry/srs/projections/proj/gins8.hpp [7:7]
- boost/geometry/srs/projections/proj/gn_sinu.hpp [7:7]
- boost/geometry/srs/projections/proj/gnom.hpp [7:7]
- boost/geometry/srs/projections/proj/goode.hpp [7:7]
- boost/geometry/srs/projections/proj/gstmerc.hpp [7:7]
- boost/geometry/srs/projections/proj/hammer.hpp [7:7]
- boost/geometry/srs/projections/proj/hatano.hpp [7:7]
- boost/geometry/srs/projections/proj/healpix.hpp [7:7]
- boost/geometry/srs/projections/proj/igh.hpp [7:7]
- boost/geometry/srs/projections/proj/imw_p.hpp [7:7]
- boost/geometry/srs/projections/proj/isea.hpp [7:7]
- boost/geometry/srs/projections/proj/krovak.hpp [7:7]
- boost/geometry/srs/projections/proj/labrd.hpp [7:7]
- boost/geometry/srs/projections/proj/laea.hpp [7:7]
- boost/geometry/srs/projections/proj/lagrng.hpp [7:7]
- boost/geometry/srs/projections/proj/larr.hpp [7:7]
- boost/geometry/srs/projections/proj/lask.hpp [7:7]
- boost/geometry/srs/projections/proj/latlong.hpp [7:7]
- boost/geometry/srs/projections/proj/lcc.hpp [7:7]
- boost/geometry/srs/projections/proj/lcca.hpp [7:7]
- boost/geometry/srs/projections/proj/loxim.hpp [7:7]
- boost/geometry/srs/projections/proj/lsat.hpp [7:7]
- boost/geometry/srs/projections/proj/mbt_fps.hpp [7:7]
- boost/geometry/srs/projections/proj/mbtfpp.hpp [7:7]
- boost/geometry/srs/projections/proj/mbtfpq.hpp [7:7]
- boost/geometry/srs/projections/proj/merc.hpp [7:7]
- boost/geometry/srs/projections/proj/mill.hpp [7:7]
- boost/geometry/srs/projections/proj/mod_ster.hpp [7:7]
- boost/geometry/srs/projections/proj/moll.hpp [7:7]
- boost/geometry/srs/projections/proj/natearth.hpp [7:7]
- boost/geometry/srs/projections/proj/nell.hpp [7:7]
- boost/geometry/srs/projections/proj/nell_h.hpp [7:7]
- boost/geometry/srs/projections/proj/nocol.hpp [7:7]
- boost/geometry/srs/projections/proj/nsper.hpp [7:7]
- boost/geometry/srs/projections/proj/nzmg.hpp [7:7]
- boost/geometry/srs/projections/proj/ob_tran.hpp [7:7]
- boost/geometry/srs/projections/proj/ocea.hpp [7:7]
- boost/geometry/srs/projections/proj/oea.hpp [7:7]
- boost/geometry/srs/projections/proj/omerc.hpp [7:7]
- boost/geometry/srs/projections/proj/ortho.hpp [7:7]
- boost/geometry/srs/projections/proj/poly.hpp [7:7]
- boost/geometry/srs/projections/proj/putp2.hpp [7:7]
- boost/geometry/srs/projections/proj/putp3.hpp [7:7]
- boost/geometry/srs/projections/proj/putp4p.hpp [7:7]
- boost/geometry/srs/projections/proj/putp5.hpp [7:7]
- boost/geometry/srs/projections/proj/putp6.hpp [7:7]
- boost/geometry/srs/projections/proj/qsc.hpp [7:7]
- boost/geometry/srs/projections/proj/robin.hpp [7:7]
- boost/geometry/srs/projections/proj/rouss.hpp [7:7]
- boost/geometry/srs/projections/proj/rpoly.hpp [7:7]
- boost/geometry/srs/projections/proj/sconics.hpp [7:7]
- boost/geometry/srs/projections/proj/somerc.hpp [7:7]
- boost/geometry/srs/projections/proj/stere.hpp [7:7]
- boost/geometry/srs/projections/proj/sterea.hpp [7:7]
- boost/geometry/srs/projections/proj/sts.hpp [7:7]
- boost/geometry/srs/projections/proj/tcc.hpp [7:7]
- boost/geometry/srs/projections/proj/tcea.hpp [7:7]
- boost/geometry/srs/projections/proj/tmerc.hpp [7:7]
- boost/geometry/srs/projections/proj/tpeqd.hpp [7:7]
- boost/geometry/srs/projections/proj/urm5.hpp [7:7]
- boost/geometry/srs/projections/proj/urmfps.hpp [7:7]
- boost/geometry/srs/projections/proj/vandg.hpp [7:7]
- boost/geometry/srs/projections/proj/vandg2.hpp [7:7]
- boost/geometry/srs/projections/proj/vandg4.hpp [7:7]
- boost/geometry/srs/projections/proj/wag2.hpp [7:7]
- boost/geometry/srs/projections/proj/wag3.hpp [7:7]
- boost/geometry/srs/projections/proj/wag7.hpp [7:7]
- boost/geometry/srs/projections/proj/wink1.hpp [7:7]
- boost/geometry/srs/projections/proj/wink2.hpp [7:7]
- boost/geometry/strategies/spherical/distance_cross_track_point_box.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2be4c5530322f675f4699b1fecb8bdd0
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/deque.hpp at line 5, boost/container/detail/flat_tree.hpp at line 5, boost/container/detail/tree.hpp at line 5, boost/container/detail/type_traits.hpp at line 4, boost/container/list.hpp at line 5, boost/container/string.hpp at line 5, boost/container/vector.hpp at line 5, boost/interprocess/detail/transform_iterator.hpp at line 5, boost/interprocess/detail/utilities.hpp at line 5, boost/interprocess/detail/win32_api.hpp at line 5, boost/interprocess/detail/workaround.hpp at line 5, boost/interprocess/exceptions.hpp at line 5, boost/interprocess/offset_ptr.hpp at line 5, boost/move/detail/type_traits.hpp at line 4
- License text:
- // (C) Copyright Ion Gaztanaga 2005-2015. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/container/deque.hpp [3:5]
- boost/container/detail/flat_tree.hpp [3:5]
- boost/container/detail/tree.hpp [3:5]
- boost/container/detail/type_traits.hpp [2:3]
- boost/container/list.hpp [3:5]
- boost/container/string.hpp [3:5]
- boost/container/vector.hpp [3:5]
- boost/interprocess/detail/transform_iterator.hpp [3:4]
- boost/interprocess/detail/utilities.hpp [3:4]
- boost/interprocess/detail/win32_api.hpp [3:5]
- boost/interprocess/detail/workaround.hpp [3:5]
- boost/interprocess/exceptions.hpp [3:5]
- boost/interprocess/offset_ptr.hpp [3:5]
- boost/move/detail/type_traits.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2c0cd8d92968f6ef02fc040acbde35eb
-BELONGS ya.make
- License text:
- // Copyright Eric Friedman 2002-2003
- // Copyright Aleksey Gurtovoy 2004
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/aux_/sort_impl.hpp [5:5]
- boost/mpl/partition.hpp [5:6]
- boost/mpl/sort.hpp [5:6]
- boost/mpl/stable_partition.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2c1fc4e14b8b85ff09dea84fb89e149a
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2006 Dan Marsden
- Copyright (c) 2009 Hartmut Kaiser
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/view/nview.hpp [2:4]
- boost/fusion/view/nview/detail/advance_impl.hpp [2:2]
- boost/fusion/view/nview/detail/at_impl.hpp [2:2]
- boost/fusion/view/nview/detail/begin_impl.hpp [2:2]
- boost/fusion/view/nview/detail/cpp03/nview_impl.hpp [2:2]
- boost/fusion/view/nview/detail/deref_impl.hpp [2:2]
- boost/fusion/view/nview/detail/distance_impl.hpp [2:2]
- boost/fusion/view/nview/detail/end_impl.hpp [2:2]
- boost/fusion/view/nview/detail/equal_to_impl.hpp [2:2]
- boost/fusion/view/nview/detail/next_impl.hpp [2:2]
- boost/fusion/view/nview/detail/prior_impl.hpp [2:2]
- boost/fusion/view/nview/detail/value_at_impl.hpp [2:2]
- boost/fusion/view/nview/detail/value_of_impl.hpp [2:2]
- boost/fusion/view/nview/nview.hpp [2:2]
- boost/fusion/view/nview/nview_iterator.hpp [2:2]
- boost/spirit/home/x3/numeric/bool.hpp [2:3]
- boost/spirit/home/x3/numeric/bool_policies.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2c88da1eba82b7c18508f07d9fe9961e
-BELONGS ya.make
- License text:
- // Copyright Thijs van den Berg, 2008.
- // Copyright John Maddock 2008.
- // Copyright Paul A. Bristow 2008, 2014.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/distributions/laplace.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2c99b4b72f406545709ded88018c916a
-BELONGS ya.make
- License text:
- * Copyright 2006-2007 Boris Gubenko
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/interval/detail/ia64_rounding_control.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2cc8d0bd746b1af01391a996cc0b013e
-BELONGS ya.make
- License text:
- // Copyright Aleksey Gurtovoy 2002-2004
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/as_sequence.hpp [5:5]
- boost/mpl/aux_/adl_barrier.hpp [5:5]
- boost/mpl/aux_/apply_1st.hpp [5:5]
- boost/mpl/aux_/common_name_wknd.hpp [5:5]
- boost/mpl/aux_/config/adl.hpp [5:5]
- boost/mpl/aux_/config/bind.hpp [5:6]
- boost/mpl/aux_/config/dependent_nttp.hpp [5:5]
- boost/mpl/aux_/config/has_xxx.hpp [5:6]
- boost/mpl/aux_/config/lambda.hpp [5:5]
- boost/mpl/aux_/config/msvc.hpp [5:5]
- boost/mpl/aux_/config/overload_resolution.hpp [5:5]
- boost/mpl/aux_/config/workaround.hpp [5:5]
- boost/mpl/aux_/has_begin.hpp [5:5]
- boost/mpl/aux_/has_key_impl.hpp [5:6]
- boost/mpl/aux_/has_rebind.hpp [5:5]
- boost/mpl/aux_/has_size.hpp [5:5]
- boost/mpl/aux_/has_tag.hpp [5:5]
- boost/mpl/aux_/has_type.hpp [5:5]
- boost/mpl/aux_/iter_apply.hpp [5:5]
- boost/mpl/aux_/iter_push_front.hpp [5:5]
- boost/mpl/aux_/msvc_is_class.hpp [5:5]
- boost/mpl/aux_/preprocessed/bcc/unpack_args.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/unpack_args.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/unpack_args.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/unpack_args.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/unpack_args.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/unpack_args.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/unpack_args.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/unpack_args.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/unpack_args.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/unpack_args.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/unpack_args.hpp [2:2]
- boost/mpl/aux_/preprocessor/add.hpp [5:5]
- boost/mpl/aux_/preprocessor/default_params.hpp [5:5]
- boost/mpl/aux_/preprocessor/range.hpp [5:5]
- boost/mpl/aux_/preprocessor/repeat.hpp [5:5]
- boost/mpl/aux_/preprocessor/sub.hpp [5:5]
- boost/mpl/aux_/preprocessor/tuple.hpp [5:5]
- boost/mpl/aux_/test.hpp [5:5]
- boost/mpl/aux_/test/assert.hpp [5:5]
- boost/mpl/aux_/test/data.hpp [5:5]
- boost/mpl/aux_/test/test_case.hpp [5:5]
- boost/mpl/deref.hpp [5:5]
- boost/mpl/is_sequence.hpp [5:5]
- boost/mpl/protect.hpp [5:6]
- boost/mpl/unpack_args.hpp [9:9]
- boost/type_traits/detail/bool_trait_def.hpp [4:4]
- boost/type_traits/detail/bool_trait_undef.hpp [4:4]
- boost/type_traits/detail/template_arity_spec.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2cd8eea57cf8e75ed826cc317dbed73d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/ratio/mpl/plus.hpp at line 5
- License text:
- // (C) Copyright 2011Vicente J. Botet Escriba
- // Use, modification and distribution are subject to the Boost Software License,
- // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/ratio/mpl/plus.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2d057debf051847a35d49ab03363b9c5
-BELONGS ya.make
- License text:
- Copyright 2009-2013 Karsten Ahnert
- Copyright 2009-2013 Mario Mulansky
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/external/compute/compute.hpp [9:10]
- boost/numeric/odeint/external/compute/compute_algebra_dispatcher.hpp [9:10]
- boost/numeric/odeint/external/compute/compute_operations_dispatcher.hpp [9:10]
- boost/numeric/odeint/external/vexcl/vexcl_abs.hpp [9:10]
- boost/numeric/odeint/external/vexcl/vexcl_norm_inf.hpp [9:10]
- boost/numeric/odeint/integrate/detail/functors.hpp [9:10]
- boost/numeric/odeint/iterator/impl/n_step_iterator_impl.hpp [9:10]
- boost/numeric/odeint/iterator/impl/times_iterator_impl.hpp [9:10]
- boost/numeric/odeint/iterator/integrate/detail/functors.hpp [9:10]
- boost/numeric/odeint/iterator/n_step_iterator.hpp [10:11]
- boost/numeric/odeint/iterator/n_step_time_iterator.hpp [11:12]
- boost/numeric/odeint/iterator/times_iterator.hpp [10:11]
- boost/numeric/odeint/iterator/times_time_iterator.hpp [11:12]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2d5f4cfed3e5b32b63312a117e31a283
-BELONGS ya.make
- License text:
- // (C) Copyright John Maddock 2010.
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/tools/tuple.hpp [1:3]
- boost/type_traits/conditional.hpp [1:3]
- boost/type_traits/is_rvalue_reference.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2d7bdc2251b6d91e3452c92975305ca5
-BELONGS ya.make
- License text:
- // Copyright (c) 2007, 2008 Peter Dimov
- // Copyright (c) 2008 Michael Marcin
- // Copyright (c) 2009 Frank Mori Hess
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/signals2/deconstruct.hpp [16:18]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2d88e144afca22b36e6ceefd1fc94687
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/random.hpp at line 6, boost/random/bernoulli_distribution.hpp at line 7, boost/random/chi_squared_distribution.hpp at line 7, boost/random/detail/generator_bits.hpp at line 7, boost/random/detail/integer_log2.hpp at line 7, boost/random/detail/large_arithmetic.hpp at line 7, boost/random/detail/uniform_int_float.hpp at line 7, boost/random/detail/vector_io.hpp at line 7, boost/random/exponential_distribution.hpp at line 7, boost/random/fisher_f_distribution.hpp at line 7, boost/random/generate_canonical.hpp at line 7, boost/random/geometric_distribution.hpp at line 7, boost/random/independent_bits.hpp at line 7, boost/random/linear_feedback_shift.hpp at line 7, boost/random/lognormal_distribution.hpp at line 7, boost/random/piecewise_constant_distribution.hpp at line 7, boost/random/piecewise_linear_distribution.hpp at line 7, boost/random/student_t_distribution.hpp at line 7, boost/random/taus88.hpp at line 7, boost/random/triangle_distribution.hpp at line 7, boost/random/uniform_int_distribution.hpp at line 7, boost/random/uniform_on_sphere.hpp at line 7, boost/random/uniform_real_distribution.hpp at line 7, boost/random/variate_generator.hpp at line 7
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/multiprecision/random.hpp [2:6]
- boost/random/bernoulli_distribution.hpp [3:6]
- boost/random/chi_squared_distribution.hpp [3:5]
- boost/random/detail/generator_bits.hpp [3:5]
- boost/random/detail/integer_log2.hpp [3:5]
- boost/random/detail/large_arithmetic.hpp [3:5]
- boost/random/detail/uniform_int_float.hpp [3:6]
- boost/random/detail/vector_io.hpp [3:5]
- boost/random/exponential_distribution.hpp [3:7]
- boost/random/fisher_f_distribution.hpp [3:5]
- boost/random/generate_canonical.hpp [3:5]
- boost/random/geometric_distribution.hpp [3:6]
- boost/random/independent_bits.hpp [3:5]
- boost/random/linear_feedback_shift.hpp [3:6]
- boost/random/lognormal_distribution.hpp [3:6]
- boost/random/piecewise_constant_distribution.hpp [3:5]
- boost/random/piecewise_linear_distribution.hpp [3:5]
- boost/random/student_t_distribution.hpp [3:5]
- boost/random/taus88.hpp [3:6]
- boost/random/triangle_distribution.hpp [3:6]
- boost/random/uniform_int_distribution.hpp [3:6]
- boost/random/uniform_on_sphere.hpp [3:6]
- boost/random/uniform_real_distribution.hpp [3:6]
- boost/random/variate_generator.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2dbcd57de4b0ffd4eec81477eab5cebd
-BELONGS ya.make
- License text:
- // Copyright (c) 2017 Vinnie Falco (vinnie dot falco at gmail dot com)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/beast/core/detail/cpu_info.hpp [2:2]
- boost/beast/core/detail/varint.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2dcf68e9cbb132ca617977536e4e8ad0
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/vector_135.hpp at line 7
- License text:
- // (C) Copyright 2008 Matthias Troyer
- // Use, modification and distribution is subject to the Boost Software
- // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/serialization/vector_135.hpp [5:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2dfa333cc285f02a792246cce5434be0
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/detail/suffix.hpp at line 14
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/detail/suffix.hpp [4:14]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2e2eca4e065b061f38c7eb91a69efda4
-BELONGS ya.make
- License text:
- // Copyright (c) 2011-2017 Adam Wulkiewicz, Lodz, Poland.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/index/detail/algorithms/intersection_content.hpp [5:5]
- boost/geometry/index/detail/algorithms/path_intersection.hpp [5:5]
- boost/geometry/index/detail/rtree/pack_create.hpp [5:5]
- boost/geometry/index/detail/rtree/rstar/choose_next_node.hpp [5:5]
- boost/geometry/index/detail/rtree/rstar/redistribute_elements.hpp [5:5]
- boost/geometry/index/detail/rtree/visitors/remove.hpp [5:5]
- boost/geometry/index/indexable.hpp [3:3]
- boost/geometry/index/parameters.hpp [5:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2e533278812c0422da43ad2a27ae7463
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/typeof/encode_decode_params.hpp at line 3, boost/typeof/integral_template_param.hpp at line 3, boost/typeof/message.hpp at line 3, boost/typeof/template_template_param.hpp at line 3, boost/typeof/type_template_param.hpp at line 3, boost/typeof/vector.hpp at line 3, boost/typeof/vector100.hpp at line 4, boost/typeof/vector150.hpp at line 4, boost/typeof/vector200.hpp at line 4, boost/typeof/vector50.hpp at line 4
- License text:
- // Copyright (C) 2005 Arkadiy Vertleyb
- // Distributed under the Boost Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/typeof/encode_decode_params.hpp [1:3]
- boost/typeof/integral_template_param.hpp [1:3]
- boost/typeof/message.hpp [1:3]
- boost/typeof/template_template_param.hpp [1:4]
- boost/typeof/type_template_param.hpp [1:3]
- boost/typeof/vector.hpp [1:2]
- boost/typeof/vector100.hpp [2:3]
- boost/typeof/vector150.hpp [2:3]
- boost/typeof/vector200.hpp [2:3]
- boost/typeof/vector50.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2e768fc3f92b09309b782197c57b4c12
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/hp_acc.hpp [1:8]
- boost/config/platform/hpux.hpp [1:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2e8dcaf45cebf21faa7919fcd5f00014
-BELONGS ya.make
- License text:
- // Copyright 2014 Marco Guazzone (marco.guazzone@gmail.com)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/distributions/hyperexponential.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2e933bb084c95d7e3472974501e28c75
-BELONGS ya.make
- License text:
- // Copyright (c) Jeremy Siek 2001, Marc Wintermantel 2002
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/bandwidth.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2ea633020e201856dd71e03a0f2b2665
-BELONGS ya.make
- License text:
- // Copyright (C) 2005, 2006 Douglas Gregor <doug.gregor -at- gmail.com>.
- // Copyright (C) 2016 K. Noel Belcourt <kbelco -at- sandia.gov>.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpi/communicator.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2eac2a7e626c242b613fa68d3431bb40
-BELONGS ya.make
- License text:
- // Copyright Beman Dawes 1994-2007, 2011
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/timer/timer.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2eed3999f484d8ee24370281109e7694
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/seq/detail/to_list_msvc.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/preprocessor/seq/detail/to_list_msvc.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2f10b4a340b310e0d17224ef1c7f517e
-BELONGS ya.make
- License text:
- // Copyright (C) 2003, 2008 Fernando Luis Cacciola Carballal.
- // Copyright (C) 2015 - 2017 Andrzej Krzemienski.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/optional/detail/optional_config.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2f18f945ef63ba6be737d66cea2f20fe
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/numeric.hpp at line 3
- License text:
- // Copyright 2009-2014 Neil Groves.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/range/numeric.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2f932f342242efbf0d94bca33da3478f
-BELONGS ya.make
- License text:
- // Copyright Eric Friedman 2002
- // Copyright Aleksey Gurtovoy 2004
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/aux_/contains_impl.hpp [5:6]
- boost/mpl/aux_/find_if_pred.hpp [5:6]
- boost/mpl/contains.hpp [5:6]
- boost/mpl/contains_fwd.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2f9bade85a83ebe5d5af53237bf117ca
-BELONGS ya.make
- License text:
- Copyright (c) 2010 Bryce Lelbach
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/detail/fenv.hpp [2:2]
- boost/spirit/home/karma/char/char.hpp [1:2]
- boost/spirit/home/karma/directive/as.hpp [1:2]
- boost/spirit/home/karma/string/lit.hpp [1:2]
- boost/spirit/home/lex/argument.hpp [1:4]
- boost/spirit/home/lex/qi/state_switcher.hpp [1:2]
- boost/spirit/home/qi/char/char.hpp [2:4]
- boost/spirit/home/qi/directive/as.hpp [2:4]
- boost/spirit/home/qi/string/lit.hpp [2:4]
- boost/spirit/home/support/attributes_fwd.hpp [2:4]
- boost/spirit/home/support/iterators/line_pos_iterator.hpp [2:4]
- boost/spirit/home/support/string_traits.hpp [2:4]
- boost/spirit/home/x3/support/traits/string_traits.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2f9fe99648dcd79bc25622757cf728cb
-BELONGS ya.make
- License text:
- // Copyright (c) 2009, Spirent Communications, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp [13:13]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2fac28b8e5c989f4eceb6a9bfa180fc3
-BELONGS ya.make
- License text:
- // Copyright Aleksey Gurtovoy 2000-2006
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/assert.hpp [5:5]
- boost/mpl/aux_/include_preprocessed.hpp [4:4]
- boost/mpl/aux_/integral_wrapper.hpp [2:2]
- boost/mpl/integral_c.hpp [5:5]
- boost/mpl/integral_c_fwd.hpp [5:5]
- boost/mpl/vector/aux_/include_preprocessed.hpp [4:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2fd1cb4c5bd0ad8ebd01444f50141363
-BELONGS ya.make
- License text:
- \# /* Copyright (C) 2001
- \# * Housemarque Oy
- \# * http://www.housemarque.com
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/preprocessor.hpp [1:3]
- boost/preprocessor/arithmetic.hpp [1:3]
- boost/preprocessor/arithmetic/add.hpp [1:3]
- boost/preprocessor/arithmetic/dec.hpp [1:3]
- boost/preprocessor/arithmetic/detail/div_base.hpp [1:3]
- boost/preprocessor/arithmetic/div.hpp [1:3]
- boost/preprocessor/arithmetic/inc.hpp [1:3]
- boost/preprocessor/arithmetic/mod.hpp [1:3]
- boost/preprocessor/arithmetic/mul.hpp [1:3]
- boost/preprocessor/arithmetic/sub.hpp [1:3]
- boost/preprocessor/cat.hpp [1:3]
- boost/preprocessor/comparison.hpp [1:3]
- boost/preprocessor/comparison/equal.hpp [1:3]
- boost/preprocessor/comparison/greater.hpp [1:3]
- boost/preprocessor/comparison/greater_equal.hpp [1:3]
- boost/preprocessor/comparison/less.hpp [1:3]
- boost/preprocessor/comparison/less_equal.hpp [1:3]
- boost/preprocessor/comparison/not_equal.hpp [1:3]
- boost/preprocessor/config/limits.hpp [1:3]
- boost/preprocessor/control/detail/dmc/while.hpp [1:3]
- boost/preprocessor/control/detail/edg/while.hpp [1:3]
- boost/preprocessor/control/detail/msvc/while.hpp [1:3]
- boost/preprocessor/control/detail/while.hpp [1:3]
- boost/preprocessor/control/expr_if.hpp [1:3]
- boost/preprocessor/control/if.hpp [1:3]
- boost/preprocessor/control/while.hpp [1:3]
- boost/preprocessor/debug/assert.hpp [1:3]
- boost/preprocessor/facilities/empty.hpp [1:3]
- boost/preprocessor/facilities/expand.hpp [1:3]
- boost/preprocessor/facilities/identity.hpp [1:3]
- boost/preprocessor/list.hpp [1:3]
- boost/preprocessor/list/adt.hpp [1:3]
- boost/preprocessor/list/append.hpp [1:3]
- boost/preprocessor/list/at.hpp [1:3]
- boost/preprocessor/list/cat.hpp [1:3]
- boost/preprocessor/list/detail/dmc/fold_left.hpp [1:3]
- boost/preprocessor/list/detail/edg/fold_left.hpp [1:3]
- boost/preprocessor/list/detail/edg/fold_right.hpp [1:3]
- boost/preprocessor/list/detail/fold_left.hpp [1:3]
- boost/preprocessor/list/detail/fold_right.hpp [1:3]
- boost/preprocessor/list/enum.hpp [1:3]
- boost/preprocessor/list/filter.hpp [1:3]
- boost/preprocessor/list/first_n.hpp [1:3]
- boost/preprocessor/list/fold_left.hpp [1:3]
- boost/preprocessor/list/fold_right.hpp [1:3]
- boost/preprocessor/list/for_each.hpp [1:3]
- boost/preprocessor/list/for_each_i.hpp [1:3]
- boost/preprocessor/list/for_each_product.hpp [1:3]
- boost/preprocessor/list/rest_n.hpp [1:3]
- boost/preprocessor/list/reverse.hpp [1:3]
- boost/preprocessor/list/size.hpp [1:3]
- boost/preprocessor/list/to_tuple.hpp [1:3]
- boost/preprocessor/list/transform.hpp [1:3]
- boost/preprocessor/logical.hpp [1:3]
- boost/preprocessor/logical/and.hpp [1:3]
- boost/preprocessor/logical/bool.hpp [1:3]
- boost/preprocessor/logical/nor.hpp [1:3]
- boost/preprocessor/logical/not.hpp [1:3]
- boost/preprocessor/logical/or.hpp [1:3]
- boost/preprocessor/logical/xor.hpp [1:3]
- boost/preprocessor/punctuation/comma.hpp [1:3]
- boost/preprocessor/punctuation/comma_if.hpp [1:3]
- boost/preprocessor/repetition/detail/dmc/for.hpp [1:3]
- boost/preprocessor/repetition/detail/edg/for.hpp [1:3]
- boost/preprocessor/repetition/detail/for.hpp [1:3]
- boost/preprocessor/repetition/detail/msvc/for.hpp [1:3]
- boost/preprocessor/repetition/enum.hpp [1:3]
- boost/preprocessor/repetition/enum_params.hpp [1:3]
- boost/preprocessor/repetition/enum_params_with_a_default.hpp [1:3]
- boost/preprocessor/repetition/enum_params_with_defaults.hpp [1:3]
- boost/preprocessor/repetition/enum_shifted.hpp [1:3]
- boost/preprocessor/repetition/enum_shifted_params.hpp [1:3]
- boost/preprocessor/repetition/for.hpp [1:3]
- boost/preprocessor/repetition/repeat.hpp [1:3]
- boost/preprocessor/repetition/repeat_from_to.hpp [1:3]
- boost/preprocessor/selection/max.hpp [1:3]
- boost/preprocessor/selection/min.hpp [1:3]
- boost/preprocessor/stringize.hpp [1:3]
- boost/preprocessor/tuple.hpp [1:3]
- boost/preprocessor/tuple/eat.hpp [1:3]
- boost/preprocessor/tuple/elem.hpp [1:3]
- boost/preprocessor/tuple/reverse.hpp [1:3]
- boost/preprocessor/tuple/to_list.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2fed25b670c142362976d681e20983d0
-BELONGS ya.make
- License text:
- // Copyright (c) 2006 Xiaogang Zhang
- // Copyright (c) 2006 John Maddock
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/ellint_1.hpp [1:4]
- boost/math/special_functions/ellint_2.hpp [1:4]
- boost/math/special_functions/ellint_3.hpp [1:4]
- boost/math/special_functions/ellint_d.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 302eb32d7e0c5743b68227dba3d17d14
-BELONGS ya.make
- License text:
- // Copyright 2001 John Maddock.
- // Copyright 2017 Peter Dimov.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/helper_macros.hpp [4:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3083c06d1d29086e1fb61a433a3fc94e
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/extended_p_square.hpp at line 6, boost/accumulators/statistics/extended_p_square_quantile.hpp at line 6, boost/accumulators/statistics/p_square_quantile.hpp at line 6, boost/accumulators/statistics/weighted_extended_p_square.hpp at line 6, boost/accumulators/statistics/weighted_p_square_quantile.hpp at line 6
- License text:
- // Copyright 2005 Daniel Egloff. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/accumulators/statistics/extended_p_square.hpp [4:6]
- boost/accumulators/statistics/extended_p_square_quantile.hpp [4:6]
- boost/accumulators/statistics/p_square_quantile.hpp [4:6]
- boost/accumulators/statistics/weighted_extended_p_square.hpp [4:6]
- boost/accumulators/statistics/weighted_p_square_quantile.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3097182274a2e77f502de94f323359af
-BELONGS ya.make
- License text:
- // Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
- // Copyright (c) 2007, 2014 Peter Dimov
- // Copyright (c) Beman Dawes 2011
- // Copyright (c) 2015 Ion Gaztanaga
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/assert.hpp [8:11]
- boost/bind/mem_fn.hpp [13:15]
- boost/detail/atomic_count.hpp [13:13]
- boost/geometry/core/assert.hpp [3:6]
- boost/smart_ptr/detail/atomic_count.hpp [13:14]
- boost/smart_ptr/detail/atomic_count_gcc.hpp [11:13]
- boost/smart_ptr/detail/atomic_count_pt.hpp [7:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 30aa7d774a6abb0b7427386b7499cf8d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/allocator.hpp at line 5, boost/container/detail/auto_link.hpp at line 5, boost/container/detail/math_functions.hpp at line 5, boost/container/detail/singleton.hpp at line 16, boost/intrusive/avl_set_hook.hpp at line 5, boost/intrusive/avltree.hpp at line 5, boost/intrusive/bs_set_hook.hpp at line 5, boost/intrusive/detail/avltree_node.hpp at line 5, boost/intrusive/detail/generic_hook.hpp at line 5, boost/intrusive/detail/parent_from_member.hpp at line 5, boost/intrusive/detail/transform_iterator.hpp at line 5, boost/intrusive/detail/tree_iterator.hpp at line 5, boost/intrusive/detail/tree_node.hpp at line 5, boost/intrusive/intrusive_fwd.hpp at line 5, boost/intrusive/pointer_plus_bits.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2007-2013. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/container/allocator.hpp [3:5]
- boost/container/detail/auto_link.hpp [3:5]
- boost/container/detail/math_functions.hpp [3:4]
- boost/container/detail/singleton.hpp [14:16]
- boost/intrusive/avl_set_hook.hpp [3:3]
- boost/intrusive/avltree.hpp [3:3]
- boost/intrusive/bs_set_hook.hpp [3:3]
- boost/intrusive/detail/avltree_node.hpp [3:3]
- boost/intrusive/detail/generic_hook.hpp [3:3]
- boost/intrusive/detail/parent_from_member.hpp [3:3]
- boost/intrusive/detail/transform_iterator.hpp [3:3]
- boost/intrusive/detail/tree_iterator.hpp [3:3]
- boost/intrusive/detail/tree_node.hpp [3:3]
- boost/intrusive/intrusive_fwd.hpp [3:3]
- boost/intrusive/pointer_plus_bits.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 30ed1e3bc7b2db873cea00f66576d6ee
-BELONGS ya.make
- License text:
- // Copyright (c) 2007, 2013 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp [12:12]
-
-KEEP COPYRIGHT_SERVICE_LABEL 30f1e4eeb829ff72f7b5b36badf44627
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/poly_collection/detail/is_equality_comparable.hpp at line 3
- License text:
- /* Copyright 2017-2018 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/poly_collection/detail/is_equality_comparable.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 30f81317a5922a3aa5dceece7b8dec9c
-BELONGS ya.make
- License text:
- // Copyright 2014 LRI UMR 8623 CNRS/Univ Paris Sud XI
- // Copyright 2014 NumScale SAS
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/external/nt2/nt2_algebra_dispatcher.hpp [2:3]
- boost/numeric/odeint/external/nt2/nt2_norm_inf.hpp [2:3]
- boost/numeric/odeint/external/nt2/nt2_resize.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 315a7554fc178f85d65ddbb338fd58a5
-BELONGS ya.make
- License text:
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/multi_index/detail/ord_index_impl.hpp [11:12]
- boost/multi_index/detail/ord_index_node.hpp [11:12]
- boost/multi_index/detail/ord_index_ops.hpp [11:12]
-
-KEEP COPYRIGHT_SERVICE_LABEL 318bb438497d2ba56543f1344417bbec
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2010.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/r_c_shortest_paths.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0248c07689d63f8e0b5cff0f09a2737a
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2012 Flavio De Lorenzi (fdlorenzi@gmail.com)
+ // Copyright (C) 2013 Jakob Lykke Andersen, University of Southern Denmark (jlandersen@imada.sdu.dk)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/vf2_sub_graph_iso.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 027d3eda5b4664a02a1aa3f742e0b4a6
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/framework/accumulators/value_accumulator.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/accumulators/framework/accumulators/value_accumulator.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 02cd524bdb42667b1b164094ec9971ea
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2007, 2014.
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/zeta.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 02fd0bffdaa1688b60dc1f4a812b1f2f
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2014 Ian Forbed
+ // Copyright (C) 2014-2015 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/executors/detail/scheduled_executor_base.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 030d372089b68ad5c0e8d7e26b7a2a49
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2016.
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/tools/convert_from_string.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 034715b672f9cdb0ea87a4cf900d1042
+BELONGS ya.make
+ License text:
+ @Copyright Barrett Adair 2015-2017
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/callable_traits.hpp [3:5]
+ boost/callable_traits/add_member_const.hpp [3:5]
+ boost/callable_traits/add_member_cv.hpp [3:5]
+ boost/callable_traits/add_member_lvalue_reference.hpp [3:5]
+ boost/callable_traits/add_member_rvalue_reference.hpp [3:5]
+ boost/callable_traits/add_member_volatile.hpp [3:5]
+ boost/callable_traits/add_noexcept.hpp [4:6]
+ boost/callable_traits/add_transaction_safe.hpp [4:6]
+ boost/callable_traits/add_varargs.hpp [3:5]
+ boost/callable_traits/apply_member_pointer.hpp [3:5]
+ boost/callable_traits/apply_return.hpp [3:5]
+ boost/callable_traits/args.hpp [3:5]
+ boost/callable_traits/class_of.hpp [3:5]
+ boost/callable_traits/detail/function.hpp [3:5]
+ boost/callable_traits/detail/function_object.hpp [3:5]
+ boost/callable_traits/detail/is_invocable_impl.hpp [4:6]
+ boost/callable_traits/detail/pmd.hpp [3:5]
+ boost/callable_traits/detail/pmf.hpp [3:5]
+ boost/callable_traits/detail/polyfills/disjunction.hpp [2:2]
+ boost/callable_traits/detail/qualifier_flags.hpp [4:6]
+ boost/callable_traits/detail/set_function_qualifiers.hpp [3:5]
+ boost/callable_traits/detail/traits.hpp [3:5]
+ boost/callable_traits/detail/utility.hpp [3:5]
+ boost/callable_traits/function_type.hpp [3:5]
+ boost/callable_traits/has_member_qualifiers.hpp [3:5]
+ boost/callable_traits/has_varargs.hpp [3:5]
+ boost/callable_traits/has_void_return.hpp [3:5]
+ boost/callable_traits/is_const_member.hpp [3:5]
+ boost/callable_traits/is_cv_member.hpp [3:5]
+ boost/callable_traits/is_invocable.hpp [3:5]
+ boost/callable_traits/is_lvalue_reference_member.hpp [3:5]
+ boost/callable_traits/is_noexcept.hpp [4:6]
+ boost/callable_traits/is_reference_member.hpp [3:3]
+ boost/callable_traits/is_rvalue_reference_member.hpp [3:3]
+ boost/callable_traits/is_transaction_safe.hpp [4:6]
+ boost/callable_traits/is_volatile_member.hpp [3:3]
+ boost/callable_traits/qualified_class_of.hpp [3:3]
+ boost/callable_traits/remove_member_const.hpp [3:5]
+ boost/callable_traits/remove_member_cv.hpp [3:3]
+ boost/callable_traits/remove_member_reference.hpp [3:5]
+ boost/callable_traits/remove_member_volatile.hpp [3:5]
+ boost/callable_traits/remove_noexcept.hpp [4:6]
+ boost/callable_traits/remove_transaction_safe.hpp [4:6]
+ boost/callable_traits/remove_varargs.hpp [3:3]
+ boost/callable_traits/return_type.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0363543e4aed1c58c00a8f58244269d4
+BELONGS ya.make
+ License text:
+ // Copyright 2010-2012, D. E. Shaw Research.
+ // All rights reserved.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/compute/random/threefry_engine.hpp [80:81]
+
+KEEP COPYRIGHT_SERVICE_LABEL 037651105b599bc1d49f1042a7b6d202
+BELONGS ya.make
+ License text:
+ // Copyright 2014 Renato Tegon Forti, Antony Polukhin.
+ // Copyright 2015-2018 Antony Polukhin.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/dll/detail/windows/path_from_handle.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0386cefd02bec3ee844a68ba38b58c68
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/sort/spreadsort/detail/constants.hpp at line 5, boost/sort/spreadsort/detail/float_sort.hpp at line 5, boost/sort/spreadsort/detail/integer_sort.hpp at line 5, boost/sort/spreadsort/detail/spreadsort_common.hpp at line 6, boost/sort/spreadsort/detail/string_sort.hpp at line 5, boost/sort/spreadsort/float_sort.hpp at line 5, boost/sort/spreadsort/integer_sort.hpp at line 5
+ License text:
+ // Copyright Steven J. Ross 2001 - 2014.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/sort/spreadsort/detail/constants.hpp [3:5]
+ boost/sort/spreadsort/detail/float_sort.hpp [3:5]
+ boost/sort/spreadsort/detail/integer_sort.hpp [3:5]
+ boost/sort/spreadsort/detail/spreadsort_common.hpp [4:6]
+ boost/sort/spreadsort/detail/string_sort.hpp [3:5]
+ boost/sort/spreadsort/float_sort.hpp [3:5]
+ boost/sort/spreadsort/integer_sort.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 03af5a3e74f77a31b0cec0862d4d7dd1
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2002 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
+ // Copyright (C) 2002 Gary Powell (gwpowell@hotmail.com)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/lambda/algorithm.hpp [2:3]
+ boost/lambda/numeric.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 03b2ff3cf0103db53a801ebd894fc626
+BELONGS ya.make
+ License text:
+ // This file was modified by Oracle on 2015, 2016.
+ // Modifications copyright (c) 2015-2016 Oracle and/or its affiliates.
+ // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/strategies/intersection_result.hpp [5:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 03e98967798bfa8e7483019102ccfc68
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2011
+ // Antony Polukhin
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/variant/detail/hash_variant.hpp [6:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 03f0e9f3d8aaf581ab71989e093c5e31
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/extreme_points.hpp [3:6]
+ boost/geometry/algorithms/point_on_surface.hpp [3:6]
+ boost/geometry/algorithms/remove_spikes.hpp [3:6]
+ boost/geometry/multi/algorithms/detail/extreme_points.hpp [3:6]
+ boost/geometry/multi/algorithms/remove_spikes.hpp [3:6]
+ boost/geometry/strategies/default_strategy.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 03fc205eb6fb14f22d2d4775df350ecf
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2001-2003
+ // William E. Kempf
+ // (C) Copyright 2008-9 Anthony Williams
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 03fecff746d0d56d59dcf795117b1f46
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/operators.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/operators.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0419fdd63b42fd26712eab44faf73a27
+BELONGS ya.make
+ License text:
+ // (C) Copyright 2008-2009,2012 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/strict_lock.hpp [4:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 04ade67f404487552a34a699f18fc488
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/asio.hpp [5:5]
+ boost/asio/associated_allocator.hpp [5:5]
+ boost/asio/associated_executor.hpp [5:5]
+ boost/asio/async_result.hpp [5:5]
+ boost/asio/basic_datagram_socket.hpp [5:5]
+ boost/asio/basic_deadline_timer.hpp [5:5]
+ boost/asio/basic_io_object.hpp [5:5]
+ boost/asio/basic_raw_socket.hpp [5:5]
+ boost/asio/basic_seq_packet_socket.hpp [5:5]
+ boost/asio/basic_serial_port.hpp [5:6]
+ boost/asio/basic_signal_set.hpp [5:5]
+ boost/asio/basic_socket.hpp [5:5]
+ boost/asio/basic_socket_acceptor.hpp [5:5]
+ boost/asio/basic_socket_iostream.hpp [5:5]
+ boost/asio/basic_socket_streambuf.hpp [5:5]
+ boost/asio/basic_stream_socket.hpp [5:5]
+ boost/asio/basic_streambuf.hpp [5:5]
+ boost/asio/basic_streambuf_fwd.hpp [5:5]
+ boost/asio/basic_waitable_timer.hpp [5:5]
+ boost/asio/bind_executor.hpp [5:5]
+ boost/asio/buffer.hpp [5:5]
+ boost/asio/buffered_read_stream.hpp [5:5]
+ boost/asio/buffered_read_stream_fwd.hpp [5:5]
+ boost/asio/buffered_stream.hpp [5:5]
+ boost/asio/buffered_stream_fwd.hpp [5:5]
+ boost/asio/buffered_write_stream.hpp [5:5]
+ boost/asio/buffered_write_stream_fwd.hpp [5:5]
+ boost/asio/buffers_iterator.hpp [5:5]
+ boost/asio/completion_condition.hpp [5:5]
+ boost/asio/connect.hpp [5:5]
+ boost/asio/coroutine.hpp [5:5]
+ boost/asio/datagram_socket_service.hpp [5:5]
+ boost/asio/deadline_timer.hpp [5:5]
+ boost/asio/deadline_timer_service.hpp [5:5]
+ boost/asio/defer.hpp [5:5]
+ boost/asio/detail/array.hpp [5:5]
+ boost/asio/detail/array_fwd.hpp [5:5]
+ boost/asio/detail/assert.hpp [5:5]
+ boost/asio/detail/atomic_count.hpp [5:5]
+ boost/asio/detail/base_from_completion_cond.hpp [5:5]
+ boost/asio/detail/bind_handler.hpp [5:5]
+ boost/asio/detail/buffer_resize_guard.hpp [5:5]
+ boost/asio/detail/buffer_sequence_adapter.hpp [5:5]
+ boost/asio/detail/buffered_stream_storage.hpp [5:5]
+ boost/asio/detail/call_stack.hpp [5:5]
+ boost/asio/detail/chrono.hpp [5:5]
+ boost/asio/detail/chrono_time_traits.hpp [5:5]
+ boost/asio/detail/completion_handler.hpp [5:5]
+ boost/asio/detail/concurrency_hint.hpp [5:5]
+ boost/asio/detail/conditionally_enabled_event.hpp [5:5]
+ boost/asio/detail/conditionally_enabled_mutex.hpp [5:5]
+ boost/asio/detail/config.hpp [5:5]
+ boost/asio/detail/consuming_buffers.hpp [5:5]
+ boost/asio/detail/cstddef.hpp [5:5]
+ boost/asio/detail/cstdint.hpp [5:5]
+ boost/asio/detail/date_time_fwd.hpp [5:5]
+ boost/asio/detail/deadline_timer_service.hpp [5:5]
+ boost/asio/detail/dependent_type.hpp [5:5]
+ boost/asio/detail/descriptor_ops.hpp [5:5]
+ boost/asio/detail/descriptor_read_op.hpp [5:5]
+ boost/asio/detail/descriptor_write_op.hpp [5:5]
+ boost/asio/detail/dev_poll_reactor.hpp [5:5]
+ boost/asio/detail/epoll_reactor.hpp [5:5]
+ boost/asio/detail/event.hpp [5:5]
+ boost/asio/detail/eventfd_select_interrupter.hpp [5:6]
+ boost/asio/detail/executor_op.hpp [5:5]
+ boost/asio/detail/fd_set_adapter.hpp [5:5]
+ boost/asio/detail/fenced_block.hpp [5:5]
+ boost/asio/detail/functional.hpp [5:5]
+ boost/asio/detail/gcc_arm_fenced_block.hpp [5:5]
+ boost/asio/detail/gcc_hppa_fenced_block.hpp [5:5]
+ boost/asio/detail/gcc_sync_fenced_block.hpp [5:5]
+ boost/asio/detail/gcc_x86_fenced_block.hpp [5:5]
+ boost/asio/detail/global.hpp [5:5]
+ boost/asio/detail/handler_alloc_helpers.hpp [5:5]
+ boost/asio/detail/handler_cont_helpers.hpp [5:5]
+ boost/asio/detail/handler_invoke_helpers.hpp [5:5]
+ boost/asio/detail/handler_tracking.hpp [5:5]
+ boost/asio/detail/handler_type_requirements.hpp [5:5]
+ boost/asio/detail/handler_work.hpp [5:5]
+ boost/asio/detail/hash_map.hpp [5:5]
+ boost/asio/detail/impl/buffer_sequence_adapter.ipp [5:5]
+ boost/asio/detail/impl/descriptor_ops.ipp [5:5]
+ boost/asio/detail/impl/dev_poll_reactor.hpp [5:5]
+ boost/asio/detail/impl/dev_poll_reactor.ipp [5:5]
+ boost/asio/detail/impl/epoll_reactor.hpp [5:5]
+ boost/asio/detail/impl/epoll_reactor.ipp [5:5]
+ boost/asio/detail/impl/eventfd_select_interrupter.ipp [5:6]
+ boost/asio/detail/impl/handler_tracking.ipp [5:5]
+ boost/asio/detail/impl/kqueue_reactor.hpp [5:6]
+ boost/asio/detail/impl/kqueue_reactor.ipp [5:6]
+ boost/asio/detail/impl/null_event.ipp [5:5]
+ boost/asio/detail/impl/pipe_select_interrupter.ipp [5:5]
+ boost/asio/detail/impl/posix_event.ipp [5:5]
+ boost/asio/detail/impl/posix_mutex.ipp [5:5]
+ boost/asio/detail/impl/posix_thread.ipp [5:5]
+ boost/asio/detail/impl/posix_tss_ptr.ipp [5:5]
+ boost/asio/detail/impl/reactive_descriptor_service.ipp [5:5]
+ boost/asio/detail/impl/reactive_serial_port_service.ipp [5:6]
+ boost/asio/detail/impl/reactive_socket_service_base.ipp [5:5]
+ boost/asio/detail/impl/resolver_service_base.ipp [5:5]
+ boost/asio/detail/impl/scheduler.ipp [5:5]
+ boost/asio/detail/impl/select_reactor.hpp [5:5]
+ boost/asio/detail/impl/select_reactor.ipp [5:5]
+ boost/asio/detail/impl/service_registry.hpp [5:5]
+ boost/asio/detail/impl/service_registry.ipp [5:5]
+ boost/asio/detail/impl/signal_set_service.ipp [5:5]
+ boost/asio/detail/impl/socket_ops.ipp [5:5]
+ boost/asio/detail/impl/socket_select_interrupter.ipp [5:5]
+ boost/asio/detail/impl/strand_executor_service.hpp [5:5]
+ boost/asio/detail/impl/strand_executor_service.ipp [5:5]
+ boost/asio/detail/impl/strand_service.hpp [5:5]
+ boost/asio/detail/impl/strand_service.ipp [5:5]
+ boost/asio/detail/impl/throw_error.ipp [5:5]
+ boost/asio/detail/impl/timer_queue_ptime.ipp [5:5]
+ boost/asio/detail/impl/timer_queue_set.ipp [5:5]
+ boost/asio/detail/impl/win_event.ipp [5:5]
+ boost/asio/detail/impl/win_iocp_handle_service.ipp [5:6]
+ boost/asio/detail/impl/win_iocp_io_context.hpp [5:5]
+ boost/asio/detail/impl/win_iocp_io_context.ipp [5:5]
+ boost/asio/detail/impl/win_iocp_serial_port_service.ipp [5:6]
+ boost/asio/detail/impl/win_iocp_socket_service_base.ipp [5:5]
+ boost/asio/detail/impl/win_mutex.ipp [5:5]
+ boost/asio/detail/impl/win_object_handle_service.ipp [5:6]
+ boost/asio/detail/impl/win_static_mutex.ipp [5:5]
+ boost/asio/detail/impl/win_thread.ipp [5:5]
+ boost/asio/detail/impl/win_tss_ptr.ipp [5:5]
+ boost/asio/detail/impl/winrt_ssocket_service_base.ipp [5:5]
+ boost/asio/detail/impl/winrt_timer_scheduler.hpp [5:5]
+ boost/asio/detail/impl/winrt_timer_scheduler.ipp [5:5]
+ boost/asio/detail/impl/winsock_init.ipp [5:5]
+ boost/asio/detail/io_control.hpp [5:5]
+ boost/asio/detail/is_buffer_sequence.hpp [5:5]
+ boost/asio/detail/is_executor.hpp [5:5]
+ boost/asio/detail/keyword_tss_ptr.hpp [5:5]
+ boost/asio/detail/kqueue_reactor.hpp [5:6]
+ boost/asio/detail/local_free_on_block_exit.hpp [5:5]
+ boost/asio/detail/macos_fenced_block.hpp [5:5]
+ boost/asio/detail/memory.hpp [5:5]
+ boost/asio/detail/mutex.hpp [5:5]
+ boost/asio/detail/noncopyable.hpp [5:5]
+ boost/asio/detail/null_event.hpp [5:5]
+ boost/asio/detail/null_fenced_block.hpp [5:5]
+ boost/asio/detail/null_global.hpp [5:5]
+ boost/asio/detail/null_mutex.hpp [5:5]
+ boost/asio/detail/null_reactor.hpp [5:5]
+ boost/asio/detail/null_signal_blocker.hpp [5:5]
+ boost/asio/detail/null_socket_service.hpp [5:5]
+ boost/asio/detail/null_static_mutex.hpp [5:5]
+ boost/asio/detail/null_thread.hpp [5:5]
+ boost/asio/detail/null_tss_ptr.hpp [5:5]
+ boost/asio/detail/object_pool.hpp [5:5]
+ boost/asio/detail/old_win_sdk_compat.hpp [5:5]
+ boost/asio/detail/op_queue.hpp [5:5]
+ boost/asio/detail/operation.hpp [5:5]
+ boost/asio/detail/pipe_select_interrupter.hpp [5:5]
+ boost/asio/detail/pop_options.hpp [5:5]
+ boost/asio/detail/posix_event.hpp [5:5]
+ boost/asio/detail/posix_fd_set_adapter.hpp [5:5]
+ boost/asio/detail/posix_global.hpp [5:5]
+ boost/asio/detail/posix_mutex.hpp [5:5]
+ boost/asio/detail/posix_signal_blocker.hpp [5:5]
+ boost/asio/detail/posix_static_mutex.hpp [5:5]
+ boost/asio/detail/posix_thread.hpp [5:5]
+ boost/asio/detail/posix_tss_ptr.hpp [5:5]
+ boost/asio/detail/push_options.hpp [5:5]
+ boost/asio/detail/reactive_descriptor_service.hpp [5:5]
+ boost/asio/detail/reactive_null_buffers_op.hpp [5:5]
+ boost/asio/detail/reactive_serial_port_service.hpp [5:6]
+ boost/asio/detail/reactive_socket_accept_op.hpp [5:5]
+ boost/asio/detail/reactive_socket_connect_op.hpp [5:5]
+ boost/asio/detail/reactive_socket_recv_op.hpp [5:5]
+ boost/asio/detail/reactive_socket_recvfrom_op.hpp [5:5]
+ boost/asio/detail/reactive_socket_recvmsg_op.hpp [5:5]
+ boost/asio/detail/reactive_socket_send_op.hpp [5:5]
+ boost/asio/detail/reactive_socket_sendto_op.hpp [5:5]
+ boost/asio/detail/reactive_socket_service.hpp [5:5]
+ boost/asio/detail/reactive_socket_service_base.hpp [5:5]
+ boost/asio/detail/reactive_wait_op.hpp [5:5]
+ boost/asio/detail/reactor.hpp [5:5]
+ boost/asio/detail/reactor_fwd.hpp [5:5]
+ boost/asio/detail/reactor_op.hpp [5:5]
+ boost/asio/detail/reactor_op_queue.hpp [5:5]
+ boost/asio/detail/recycling_allocator.hpp [5:5]
+ boost/asio/detail/regex_fwd.hpp [5:5]
+ boost/asio/detail/resolve_endpoint_op.hpp [5:5]
+ boost/asio/detail/resolve_op.hpp [5:5]
+ boost/asio/detail/resolve_query_op.hpp [5:5]
+ boost/asio/detail/resolver_service.hpp [5:5]
+ boost/asio/detail/resolver_service_base.hpp [5:5]
+ boost/asio/detail/scheduler.hpp [5:5]
+ boost/asio/detail/scheduler_operation.hpp [5:5]
+ boost/asio/detail/scheduler_thread_info.hpp [5:5]
+ boost/asio/detail/scoped_lock.hpp [5:5]
+ boost/asio/detail/scoped_ptr.hpp [5:5]
+ boost/asio/detail/select_interrupter.hpp [5:5]
+ boost/asio/detail/select_reactor.hpp [5:5]
+ boost/asio/detail/service_registry.hpp [5:5]
+ boost/asio/detail/signal_blocker.hpp [5:5]
+ boost/asio/detail/signal_handler.hpp [5:5]
+ boost/asio/detail/signal_init.hpp [5:5]
+ boost/asio/detail/signal_op.hpp [5:5]
+ boost/asio/detail/signal_set_service.hpp [5:5]
+ boost/asio/detail/socket_holder.hpp [5:5]
+ boost/asio/detail/socket_ops.hpp [5:5]
+ boost/asio/detail/socket_option.hpp [5:5]
+ boost/asio/detail/socket_select_interrupter.hpp [5:5]
+ boost/asio/detail/socket_types.hpp [5:5]
+ boost/asio/detail/solaris_fenced_block.hpp [5:5]
+ boost/asio/detail/static_mutex.hpp [5:5]
+ boost/asio/detail/std_event.hpp [5:5]
+ boost/asio/detail/std_fenced_block.hpp [5:5]
+ boost/asio/detail/std_global.hpp [5:5]
+ boost/asio/detail/std_mutex.hpp [5:5]
+ boost/asio/detail/std_static_mutex.hpp [5:5]
+ boost/asio/detail/std_thread.hpp [5:5]
+ boost/asio/detail/strand_executor_service.hpp [5:5]
+ boost/asio/detail/strand_service.hpp [5:5]
+ boost/asio/detail/string_view.hpp [5:5]
+ boost/asio/detail/thread.hpp [5:5]
+ boost/asio/detail/thread_context.hpp [5:5]
+ boost/asio/detail/thread_group.hpp [5:5]
+ boost/asio/detail/thread_info_base.hpp [5:5]
+ boost/asio/detail/throw_error.hpp [5:5]
+ boost/asio/detail/throw_exception.hpp [5:5]
+ boost/asio/detail/timer_queue.hpp [5:5]
+ boost/asio/detail/timer_queue_base.hpp [5:5]
+ boost/asio/detail/timer_queue_ptime.hpp [5:5]
+ boost/asio/detail/timer_queue_set.hpp [5:5]
+ boost/asio/detail/timer_scheduler.hpp [5:5]
+ boost/asio/detail/timer_scheduler_fwd.hpp [5:5]
+ boost/asio/detail/tss_ptr.hpp [5:5]
+ boost/asio/detail/type_traits.hpp [5:5]
+ boost/asio/detail/variadic_templates.hpp [5:5]
+ boost/asio/detail/wait_handler.hpp [5:5]
+ boost/asio/detail/wait_op.hpp [5:5]
+ boost/asio/detail/win_event.hpp [5:5]
+ boost/asio/detail/win_fd_set_adapter.hpp [5:5]
+ boost/asio/detail/win_fenced_block.hpp [5:5]
+ boost/asio/detail/win_global.hpp [5:5]
+ boost/asio/detail/win_iocp_handle_read_op.hpp [5:6]
+ boost/asio/detail/win_iocp_handle_service.hpp [5:6]
+ boost/asio/detail/win_iocp_handle_write_op.hpp [5:6]
+ boost/asio/detail/win_iocp_io_context.hpp [5:5]
+ boost/asio/detail/win_iocp_null_buffers_op.hpp [5:5]
+ boost/asio/detail/win_iocp_operation.hpp [5:5]
+ boost/asio/detail/win_iocp_overlapped_op.hpp [5:5]
+ boost/asio/detail/win_iocp_overlapped_ptr.hpp [5:5]
+ boost/asio/detail/win_iocp_serial_port_service.hpp [5:6]
+ boost/asio/detail/win_iocp_socket_accept_op.hpp [5:5]
+ boost/asio/detail/win_iocp_socket_connect_op.hpp [5:5]
+ boost/asio/detail/win_iocp_socket_recv_op.hpp [5:5]
+ boost/asio/detail/win_iocp_socket_recvfrom_op.hpp [5:5]
+ boost/asio/detail/win_iocp_socket_recvmsg_op.hpp [5:5]
+ boost/asio/detail/win_iocp_socket_send_op.hpp [5:5]
+ boost/asio/detail/win_iocp_socket_service.hpp [5:5]
+ boost/asio/detail/win_iocp_socket_service_base.hpp [5:5]
+ boost/asio/detail/win_iocp_thread_info.hpp [5:5]
+ boost/asio/detail/win_iocp_wait_op.hpp [5:5]
+ boost/asio/detail/win_mutex.hpp [5:5]
+ boost/asio/detail/win_object_handle_service.hpp [5:6]
+ boost/asio/detail/win_static_mutex.hpp [5:5]
+ boost/asio/detail/win_thread.hpp [5:5]
+ boost/asio/detail/win_tss_ptr.hpp [5:5]
+ boost/asio/detail/winapp_thread.hpp [5:5]
+ boost/asio/detail/wince_thread.hpp [5:5]
+ boost/asio/detail/winrt_async_manager.hpp [5:5]
+ boost/asio/detail/winrt_async_op.hpp [5:5]
+ boost/asio/detail/winrt_resolve_op.hpp [5:5]
+ boost/asio/detail/winrt_resolver_service.hpp [5:5]
+ boost/asio/detail/winrt_socket_connect_op.hpp [5:5]
+ boost/asio/detail/winrt_socket_recv_op.hpp [5:5]
+ boost/asio/detail/winrt_socket_send_op.hpp [5:5]
+ boost/asio/detail/winrt_ssocket_service.hpp [5:5]
+ boost/asio/detail/winrt_ssocket_service_base.hpp [5:5]
+ boost/asio/detail/winrt_timer_scheduler.hpp [5:5]
+ boost/asio/detail/winrt_utils.hpp [5:5]
+ boost/asio/detail/winsock_init.hpp [5:5]
+ boost/asio/detail/work_dispatcher.hpp [5:5]
+ boost/asio/detail/wrapped_handler.hpp [5:5]
+ boost/asio/dispatch.hpp [5:5]
+ boost/asio/error.hpp [5:5]
+ boost/asio/execution_context.hpp [5:5]
+ boost/asio/executor.hpp [5:5]
+ boost/asio/executor_work_guard.hpp [5:5]
+ boost/asio/experimental/co_spawn.hpp [5:5]
+ boost/asio/experimental/detached.hpp [5:5]
+ boost/asio/experimental/impl/co_spawn.hpp [5:5]
+ boost/asio/experimental/impl/detached.hpp [5:5]
+ boost/asio/experimental/impl/redirect_error.hpp [5:5]
+ boost/asio/experimental/redirect_error.hpp [5:5]
+ boost/asio/generic/basic_endpoint.hpp [5:5]
+ boost/asio/generic/datagram_protocol.hpp [5:5]
+ boost/asio/generic/detail/endpoint.hpp [5:5]
+ boost/asio/generic/detail/impl/endpoint.ipp [5:5]
+ boost/asio/generic/raw_protocol.hpp [5:5]
+ boost/asio/generic/seq_packet_protocol.hpp [5:5]
+ boost/asio/generic/stream_protocol.hpp [5:5]
+ boost/asio/handler_alloc_hook.hpp [5:5]
+ boost/asio/handler_continuation_hook.hpp [5:5]
+ boost/asio/handler_invoke_hook.hpp [5:5]
+ boost/asio/handler_type.hpp [5:5]
+ boost/asio/high_resolution_timer.hpp [5:5]
+ boost/asio/impl/buffered_read_stream.hpp [5:5]
+ boost/asio/impl/buffered_write_stream.hpp [5:5]
+ boost/asio/impl/connect.hpp [5:5]
+ boost/asio/impl/defer.hpp [5:5]
+ boost/asio/impl/dispatch.hpp [5:5]
+ boost/asio/impl/error.ipp [5:5]
+ boost/asio/impl/execution_context.hpp [5:5]
+ boost/asio/impl/execution_context.ipp [5:5]
+ boost/asio/impl/executor.hpp [5:5]
+ boost/asio/impl/executor.ipp [5:5]
+ boost/asio/impl/handler_alloc_hook.ipp [5:5]
+ boost/asio/impl/io_context.hpp [5:5]
+ boost/asio/impl/io_context.ipp [5:5]
+ boost/asio/impl/post.hpp [5:5]
+ boost/asio/impl/read.hpp [5:5]
+ boost/asio/impl/read_at.hpp [5:5]
+ boost/asio/impl/read_until.hpp [5:5]
+ boost/asio/impl/serial_port_base.hpp [5:6]
+ boost/asio/impl/serial_port_base.ipp [5:6]
+ boost/asio/impl/spawn.hpp [5:5]
+ boost/asio/impl/src.cpp [5:5]
+ boost/asio/impl/src.hpp [5:5]
+ boost/asio/impl/system_context.hpp [5:5]
+ boost/asio/impl/system_context.ipp [5:5]
+ boost/asio/impl/system_executor.hpp [5:5]
+ boost/asio/impl/thread_pool.hpp [5:5]
+ boost/asio/impl/thread_pool.ipp [5:5]
+ boost/asio/impl/use_future.hpp [5:5]
+ boost/asio/impl/write.hpp [5:5]
+ boost/asio/impl/write_at.hpp [5:5]
+ boost/asio/io_context.hpp [5:5]
+ boost/asio/io_context_strand.hpp [5:5]
+ boost/asio/io_service.hpp [5:5]
+ boost/asio/io_service_strand.hpp [5:5]
+ boost/asio/ip/address.hpp [5:5]
+ boost/asio/ip/address_v4.hpp [5:5]
+ boost/asio/ip/address_v4_iterator.hpp [5:5]
+ boost/asio/ip/address_v4_range.hpp [5:5]
+ boost/asio/ip/address_v6.hpp [5:5]
+ boost/asio/ip/address_v6_iterator.hpp [5:6]
+ boost/asio/ip/address_v6_range.hpp [5:6]
+ boost/asio/ip/bad_address_cast.hpp [5:5]
+ boost/asio/ip/basic_endpoint.hpp [5:5]
+ boost/asio/ip/basic_resolver.hpp [5:5]
+ boost/asio/ip/basic_resolver_entry.hpp [5:5]
+ boost/asio/ip/basic_resolver_iterator.hpp [5:5]
+ boost/asio/ip/basic_resolver_query.hpp [5:5]
+ boost/asio/ip/basic_resolver_results.hpp [5:5]
+ boost/asio/ip/detail/endpoint.hpp [5:5]
+ boost/asio/ip/detail/impl/endpoint.ipp [5:5]
+ boost/asio/ip/detail/socket_option.hpp [5:5]
+ boost/asio/ip/host_name.hpp [5:5]
+ boost/asio/ip/icmp.hpp [5:5]
+ boost/asio/ip/impl/address.hpp [5:5]
+ boost/asio/ip/impl/address.ipp [5:5]
+ boost/asio/ip/impl/address_v4.hpp [5:5]
+ boost/asio/ip/impl/address_v4.ipp [5:5]
+ boost/asio/ip/impl/address_v6.hpp [5:5]
+ boost/asio/ip/impl/address_v6.ipp [5:5]
+ boost/asio/ip/impl/basic_endpoint.hpp [5:5]
+ boost/asio/ip/impl/host_name.ipp [5:5]
+ boost/asio/ip/impl/network_v4.hpp [5:6]
+ boost/asio/ip/impl/network_v4.ipp [5:6]
+ boost/asio/ip/impl/network_v6.hpp [5:5]
+ boost/asio/ip/impl/network_v6.ipp [5:6]
+ boost/asio/ip/multicast.hpp [5:5]
+ boost/asio/ip/network_v4.hpp [5:6]
+ boost/asio/ip/network_v6.hpp [5:6]
+ boost/asio/ip/resolver_base.hpp [5:5]
+ boost/asio/ip/resolver_query_base.hpp [5:5]
+ boost/asio/ip/resolver_service.hpp [5:5]
+ boost/asio/ip/tcp.hpp [5:5]
+ boost/asio/ip/udp.hpp [5:5]
+ boost/asio/ip/unicast.hpp [5:5]
+ boost/asio/ip/v6_only.hpp [5:5]
+ boost/asio/is_executor.hpp [5:5]
+ boost/asio/is_read_buffered.hpp [5:5]
+ boost/asio/is_write_buffered.hpp [5:5]
+ boost/asio/local/basic_endpoint.hpp [5:6]
+ boost/asio/local/connect_pair.hpp [5:5]
+ boost/asio/local/datagram_protocol.hpp [5:5]
+ boost/asio/local/detail/endpoint.hpp [5:6]
+ boost/asio/local/detail/impl/endpoint.ipp [5:6]
+ boost/asio/local/stream_protocol.hpp [5:5]
+ boost/asio/packaged_task.hpp [5:5]
+ boost/asio/placeholders.hpp [5:5]
+ boost/asio/posix/basic_descriptor.hpp [5:5]
+ boost/asio/posix/basic_stream_descriptor.hpp [5:5]
+ boost/asio/posix/descriptor.hpp [5:5]
+ boost/asio/posix/descriptor_base.hpp [5:5]
+ boost/asio/posix/stream_descriptor.hpp [5:5]
+ boost/asio/posix/stream_descriptor_service.hpp [5:5]
+ boost/asio/post.hpp [5:5]
+ boost/asio/raw_socket_service.hpp [5:5]
+ boost/asio/read.hpp [5:5]
+ boost/asio/read_at.hpp [5:5]
+ boost/asio/read_until.hpp [5:5]
+ boost/asio/seq_packet_socket_service.hpp [5:5]
+ boost/asio/serial_port.hpp [5:6]
+ boost/asio/serial_port_base.hpp [5:6]
+ boost/asio/serial_port_service.hpp [5:5]
+ boost/asio/signal_set.hpp [5:5]
+ boost/asio/signal_set_service.hpp [5:5]
+ boost/asio/socket_acceptor_service.hpp [5:5]
+ boost/asio/socket_base.hpp [5:5]
+ boost/asio/spawn.hpp [5:5]
+ boost/asio/ssl.hpp [5:5]
+ boost/asio/ssl/context.hpp [5:5]
+ boost/asio/ssl/context_base.hpp [5:5]
+ boost/asio/ssl/detail/buffered_handshake_op.hpp [5:5]
+ boost/asio/ssl/detail/engine.hpp [5:5]
+ boost/asio/ssl/detail/handshake_op.hpp [5:5]
+ boost/asio/ssl/detail/impl/engine.ipp [5:5]
+ boost/asio/ssl/detail/io.hpp [5:5]
+ boost/asio/ssl/detail/openssl_init.hpp [5:5]
+ boost/asio/ssl/detail/openssl_types.hpp [5:5]
+ boost/asio/ssl/detail/password_callback.hpp [5:5]
+ boost/asio/ssl/detail/read_op.hpp [5:5]
+ boost/asio/ssl/detail/shutdown_op.hpp [5:5]
+ boost/asio/ssl/detail/stream_core.hpp [5:5]
+ boost/asio/ssl/detail/verify_callback.hpp [5:5]
+ boost/asio/ssl/detail/write_op.hpp [5:5]
+ boost/asio/ssl/error.hpp [5:5]
+ boost/asio/ssl/impl/error.ipp [5:5]
+ boost/asio/ssl/impl/rfc2818_verification.ipp [5:5]
+ boost/asio/ssl/impl/src.hpp [5:5]
+ boost/asio/ssl/rfc2818_verification.hpp [5:5]
+ boost/asio/ssl/stream.hpp [5:5]
+ boost/asio/ssl/stream_base.hpp [5:5]
+ boost/asio/ssl/verify_context.hpp [5:5]
+ boost/asio/ssl/verify_mode.hpp [5:5]
+ boost/asio/steady_timer.hpp [5:5]
+ boost/asio/strand.hpp [5:5]
+ boost/asio/stream_socket_service.hpp [5:5]
+ boost/asio/streambuf.hpp [5:5]
+ boost/asio/system_context.hpp [5:5]
+ boost/asio/system_executor.hpp [5:5]
+ boost/asio/system_timer.hpp [5:5]
+ boost/asio/thread_pool.hpp [5:5]
+ boost/asio/time_traits.hpp [5:5]
+ boost/asio/ts/buffer.hpp [5:5]
+ boost/asio/ts/executor.hpp [5:5]
+ boost/asio/ts/internet.hpp [5:5]
+ boost/asio/ts/io_context.hpp [5:5]
+ boost/asio/ts/net.hpp [5:5]
+ boost/asio/ts/netfwd.hpp [5:5]
+ boost/asio/ts/socket.hpp [5:5]
+ boost/asio/ts/timer.hpp [5:5]
+ boost/asio/unyield.hpp [5:5]
+ boost/asio/use_future.hpp [5:5]
+ boost/asio/uses_executor.hpp [5:5]
+ boost/asio/version.hpp [5:5]
+ boost/asio/wait_traits.hpp [5:5]
+ boost/asio/waitable_timer_service.hpp [5:5]
+ boost/asio/windows/basic_handle.hpp [5:5]
+ boost/asio/windows/basic_object_handle.hpp [5:6]
+ boost/asio/windows/basic_random_access_handle.hpp [5:5]
+ boost/asio/windows/basic_stream_handle.hpp [5:5]
+ boost/asio/windows/object_handle.hpp [5:6]
+ boost/asio/windows/object_handle_service.hpp [5:6]
+ boost/asio/windows/overlapped_handle.hpp [5:5]
+ boost/asio/windows/overlapped_ptr.hpp [5:5]
+ boost/asio/windows/random_access_handle.hpp [5:5]
+ boost/asio/windows/random_access_handle_service.hpp [5:5]
+ boost/asio/windows/stream_handle.hpp [5:5]
+ boost/asio/windows/stream_handle_service.hpp [5:5]
+ boost/asio/write.hpp [5:5]
+ boost/asio/write_at.hpp [5:5]
+ boost/asio/yield.hpp [5:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 04c0ce13b53ae65fb4aacbc3f256260b
+BELONGS libs/thread/ya.make ya.make
+ License text:
+ // Copyright (C) 2002-2003
+ // David Moore, William E. Kempf
+ // Copyright (C) 2007-8 Anthony Williams
+ // (C) Copyright 2013 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/barrier.hpp [1:4]
+ boost/thread/xtime.hpp [1:3]
+ libs/thread/src/pthread/thread.cpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 04cecc1df68d72027d7355d714a17662
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2017, Oracle and/or its affiliates.
+ // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/srs/epsg.hpp [3:4]
+ boost/geometry/srs/esri.hpp [3:4]
+ boost/geometry/srs/iau2000.hpp [3:4]
+ boost/geometry/srs/projections/code.hpp [3:4]
+ boost/geometry/srs/projections/epsg_params.hpp [3:4]
+ boost/geometry/srs/projections/esri.hpp [3:4]
+ boost/geometry/srs/projections/esri_params.hpp [3:4]
+ boost/geometry/srs/projections/iau2000.hpp [3:4]
+ boost/geometry/srs/projections/iau2000_params.hpp [3:4]
+ boost/geometry/srs/projections/proj4.hpp [3:4]
+ boost/geometry/srs/projections/srid_traits.hpp [3:4]
+ boost/geometry/srs/transformation.hpp [3:4]
+ boost/geometry/strategies/densify.hpp [3:3]
+ boost/geometry/strategies/disjoint.hpp [3:5]
+ boost/geometry/strategies/geographic/parameters.hpp [3:4]
+ boost/geometry/strategies/relate.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 050be61242b0e0219d0b0f3ddd65a898
+BELONGS libs/container/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/detail/allocator_version_traits.hpp at line 5, boost/container/throw_exception.hpp at line 5, boost/interprocess/sync/detail/common_algorithms.hpp at line 5, libs/container/src/alloc_lib.c at line 5, libs/container/src/dlmalloc.cpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2012-2013. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/container/detail/allocator_version_traits.hpp [3:5]
+ boost/container/throw_exception.hpp [3:5]
+ boost/interprocess/sync/detail/common_algorithms.hpp [3:5]
+ libs/container/src/alloc_lib.c [3:5]
+ libs/container/src/dlmalloc.cpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 05315046bb027181af9335ba79128e08
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2013 Kyle Lutz <kyle.r.lutz@gmail.com>
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/compute.hpp [2:2]
+ boost/compute/algorithm.hpp [2:2]
+ boost/compute/algorithm/accumulate.hpp [2:2]
+ boost/compute/algorithm/all_of.hpp [2:2]
+ boost/compute/algorithm/any_of.hpp [2:2]
+ boost/compute/algorithm/binary_search.hpp [2:2]
+ boost/compute/algorithm/copy.hpp [2:2]
+ boost/compute/algorithm/copy_if.hpp [2:2]
+ boost/compute/algorithm/copy_n.hpp [2:2]
+ boost/compute/algorithm/count.hpp [2:2]
+ boost/compute/algorithm/count_if.hpp [2:2]
+ boost/compute/algorithm/detail/copy_on_device.hpp [2:2]
+ boost/compute/algorithm/detail/copy_to_device.hpp [2:2]
+ boost/compute/algorithm/detail/copy_to_host.hpp [2:2]
+ boost/compute/algorithm/detail/count_if_with_ballot.hpp [2:2]
+ boost/compute/algorithm/detail/count_if_with_reduce.hpp [2:2]
+ boost/compute/algorithm/detail/count_if_with_threads.hpp [2:2]
+ boost/compute/algorithm/detail/find_extrema.hpp [2:2]
+ boost/compute/algorithm/detail/find_extrema_with_atomics.hpp [2:2]
+ boost/compute/algorithm/detail/find_if_with_atomics.hpp [2:2]
+ boost/compute/algorithm/detail/inplace_reduce.hpp [2:2]
+ boost/compute/algorithm/detail/insertion_sort.hpp [2:2]
+ boost/compute/algorithm/detail/radix_sort.hpp [2:2]
+ boost/compute/algorithm/detail/random_fill.hpp [2:2]
+ boost/compute/algorithm/detail/reduce_on_gpu.hpp [2:2]
+ boost/compute/algorithm/detail/scan.hpp [2:2]
+ boost/compute/algorithm/detail/scan_on_gpu.hpp [2:2]
+ boost/compute/algorithm/detail/serial_accumulate.hpp [2:2]
+ boost/compute/algorithm/detail/serial_count_if.hpp [2:2]
+ boost/compute/algorithm/detail/serial_find_extrema.hpp [2:2]
+ boost/compute/algorithm/detail/serial_merge.hpp [2:2]
+ boost/compute/algorithm/detail/serial_reduce.hpp [2:2]
+ boost/compute/algorithm/detail/serial_scan.hpp [2:2]
+ boost/compute/algorithm/equal.hpp [2:2]
+ boost/compute/algorithm/equal_range.hpp [2:2]
+ boost/compute/algorithm/exclusive_scan.hpp [2:2]
+ boost/compute/algorithm/fill.hpp [2:2]
+ boost/compute/algorithm/fill_n.hpp [2:2]
+ boost/compute/algorithm/find.hpp [2:2]
+ boost/compute/algorithm/find_if.hpp [2:2]
+ boost/compute/algorithm/find_if_not.hpp [2:2]
+ boost/compute/algorithm/for_each.hpp [2:2]
+ boost/compute/algorithm/gather.hpp [2:2]
+ boost/compute/algorithm/generate.hpp [2:2]
+ boost/compute/algorithm/generate_n.hpp [2:2]
+ boost/compute/algorithm/inclusive_scan.hpp [2:2]
+ boost/compute/algorithm/inner_product.hpp [2:2]
+ boost/compute/algorithm/inplace_merge.hpp [2:2]
+ boost/compute/algorithm/iota.hpp [2:2]
+ boost/compute/algorithm/is_partitioned.hpp [2:2]
+ boost/compute/algorithm/lower_bound.hpp [2:2]
+ boost/compute/algorithm/max_element.hpp [2:2]
+ boost/compute/algorithm/merge.hpp [2:2]
+ boost/compute/algorithm/min_element.hpp [2:2]
+ boost/compute/algorithm/minmax_element.hpp [2:2]
+ boost/compute/algorithm/mismatch.hpp [2:2]
+ boost/compute/algorithm/none_of.hpp [2:2]
+ boost/compute/algorithm/nth_element.hpp [2:2]
+ boost/compute/algorithm/partial_sum.hpp [2:2]
+ boost/compute/algorithm/partition.hpp [2:2]
+ boost/compute/algorithm/partition_copy.hpp [2:2]
+ boost/compute/algorithm/random_shuffle.hpp [2:2]
+ boost/compute/algorithm/reduce.hpp [2:2]
+ boost/compute/algorithm/remove.hpp [2:2]
+ boost/compute/algorithm/remove_if.hpp [2:2]
+ boost/compute/algorithm/replace.hpp [2:2]
+ boost/compute/algorithm/replace_copy.hpp [2:2]
+ boost/compute/algorithm/reverse.hpp [2:2]
+ boost/compute/algorithm/reverse_copy.hpp [2:2]
+ boost/compute/algorithm/scatter.hpp [2:2]
+ boost/compute/algorithm/sort.hpp [2:2]
+ boost/compute/algorithm/sort_by_key.hpp [2:2]
+ boost/compute/algorithm/stable_sort.hpp [2:2]
+ boost/compute/algorithm/swap_ranges.hpp [2:2]
+ boost/compute/algorithm/transform.hpp [2:2]
+ boost/compute/algorithm/transform_reduce.hpp [2:2]
+ boost/compute/algorithm/upper_bound.hpp [2:2]
+ boost/compute/async.hpp [2:2]
+ boost/compute/async/future.hpp [2:2]
+ boost/compute/buffer.hpp [2:2]
+ boost/compute/cl.hpp [2:2]
+ boost/compute/cl_ext.hpp [2:2]
+ boost/compute/command_queue.hpp [2:2]
+ boost/compute/config.hpp [2:2]
+ boost/compute/container.hpp [2:2]
+ boost/compute/container/array.hpp [2:2]
+ boost/compute/container/basic_string.hpp [2:2]
+ boost/compute/container/detail/scalar.hpp [2:2]
+ boost/compute/container/flat_map.hpp [2:2]
+ boost/compute/container/flat_set.hpp [2:2]
+ boost/compute/container/stack.hpp [2:2]
+ boost/compute/container/string.hpp [2:2]
+ boost/compute/container/valarray.hpp [2:2]
+ boost/compute/container/vector.hpp [2:2]
+ boost/compute/context.hpp [2:2]
+ boost/compute/detail/assert_cl_success.hpp [2:2]
+ boost/compute/detail/buffer_value.hpp [2:2]
+ boost/compute/detail/device_ptr.hpp [2:2]
+ boost/compute/detail/is_buffer_iterator.hpp [2:2]
+ boost/compute/detail/is_contiguous_iterator.hpp [2:2]
+ boost/compute/detail/iterator_plus_distance.hpp [2:2]
+ boost/compute/detail/iterator_range_size.hpp [2:2]
+ boost/compute/detail/iterator_traits.hpp [2:2]
+ boost/compute/detail/lru_cache.hpp [2:2]
+ boost/compute/detail/meta_kernel.hpp [2:2]
+ boost/compute/detail/mpl_vector_to_tuple.hpp [2:2]
+ boost/compute/detail/print_range.hpp [2:2]
+ boost/compute/detail/read_write_single_value.hpp [2:2]
+ boost/compute/device.hpp [2:2]
+ boost/compute/event.hpp [2:2]
+ boost/compute/exception.hpp [2:2]
+ boost/compute/exception/context_error.hpp [2:2]
+ boost/compute/exception/opencl_error.hpp [2:2]
+ boost/compute/experimental/clamp_range.hpp [2:2]
+ boost/compute/experimental/malloc.hpp [2:2]
+ boost/compute/experimental/sort_by_transform.hpp [2:2]
+ boost/compute/experimental/tabulate.hpp [2:2]
+ boost/compute/function.hpp [2:2]
+ boost/compute/functional.hpp [2:2]
+ boost/compute/functional/as.hpp [2:2]
+ boost/compute/functional/atomic.hpp [2:2]
+ boost/compute/functional/common.hpp [2:2]
+ boost/compute/functional/convert.hpp [2:2]
+ boost/compute/functional/detail/macros.hpp [2:2]
+ boost/compute/functional/detail/nvidia_ballot.hpp [2:2]
+ boost/compute/functional/detail/nvidia_popcount.hpp [2:2]
+ boost/compute/functional/detail/unpack.hpp [2:2]
+ boost/compute/functional/field.hpp [2:2]
+ boost/compute/functional/geometry.hpp [2:2]
+ boost/compute/functional/get.hpp [2:2]
+ boost/compute/functional/integer.hpp [2:2]
+ boost/compute/functional/logical.hpp [2:2]
+ boost/compute/functional/math.hpp [2:2]
+ boost/compute/functional/operator.hpp [2:2]
+ boost/compute/functional/relational.hpp [2:2]
+ boost/compute/iterator.hpp [2:2]
+ boost/compute/iterator/buffer_iterator.hpp [2:2]
+ boost/compute/iterator/constant_buffer_iterator.hpp [2:2]
+ boost/compute/iterator/constant_iterator.hpp [2:2]
+ boost/compute/iterator/counting_iterator.hpp [2:2]
+ boost/compute/iterator/detail/get_base_iterator_buffer.hpp [2:2]
+ boost/compute/iterator/detail/swizzle_iterator.hpp [2:2]
+ boost/compute/iterator/function_input_iterator.hpp [2:2]
+ boost/compute/iterator/permutation_iterator.hpp [2:2]
+ boost/compute/iterator/transform_iterator.hpp [2:2]
+ boost/compute/iterator/zip_iterator.hpp [2:2]
+ boost/compute/kernel.hpp [2:2]
+ boost/compute/lambda.hpp [2:2]
+ boost/compute/lambda/context.hpp [2:2]
+ boost/compute/lambda/functional.hpp [2:2]
+ boost/compute/lambda/placeholders.hpp [2:2]
+ boost/compute/lambda/result_of.hpp [2:2]
+ boost/compute/memory_object.hpp [2:2]
+ boost/compute/platform.hpp [2:2]
+ boost/compute/program.hpp [2:2]
+ boost/compute/random.hpp [2:2]
+ boost/compute/random/default_random_engine.hpp [2:2]
+ boost/compute/random/mersenne_twister_engine.hpp [2:2]
+ boost/compute/random/uniform_real_distribution.hpp [2:2]
+ boost/compute/system.hpp [2:2]
+ boost/compute/type_traits.hpp [2:2]
+ boost/compute/type_traits/common_type.hpp [2:2]
+ boost/compute/type_traits/is_vector_type.hpp [2:2]
+ boost/compute/type_traits/make_vector_type.hpp [2:2]
+ boost/compute/type_traits/scalar_type.hpp [2:2]
+ boost/compute/type_traits/type_name.hpp [2:2]
+ boost/compute/type_traits/vector_size.hpp [2:2]
+ boost/compute/types.hpp [2:2]
+ boost/compute/types/complex.hpp [2:2]
+ boost/compute/types/pair.hpp [2:2]
+ boost/compute/types/tuple.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 054553d0fbd7cb00c6d1e840b41b53ac
+BELONGS ya.make
+ License text:
+ * Copyright (c) 2015 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/atomic/detail/extra_ops_gcc_x86.hpp [6:6]
+ boost/atomic/detail/extra_ops_generic.hpp [6:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 057fa7d33dfe57ec2b0718b45c7b3317
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/metaparse/error/unpaired.hpp at line 6, boost/metaparse/fail_at_first_char_expected.hpp at line 6, boost/metaparse/foldl_reject_incomplete.hpp at line 6, boost/metaparse/foldl_reject_incomplete1.hpp at line 6, boost/metaparse/foldl_reject_incomplete_start_with_parser.hpp at line 6, boost/metaparse/foldr_reject_incomplete.hpp at line 6, boost/metaparse/foldr_reject_incomplete1.hpp at line 6, boost/metaparse/optional.hpp at line 6, boost/metaparse/repeated_reject_incomplete.hpp at line 6, boost/metaparse/repeated_reject_incomplete1.hpp at line 6, boost/metaparse/sequence_apply.hpp at line 6, boost/metaparse/transform_error.hpp at line 6, boost/metaparse/transform_error_message.hpp at line 6, boost/metaparse/v1/error/expected_to_fail.hpp at line 6, boost/metaparse/v1/error/unpaired.hpp at line 6, boost/metaparse/v1/fail_at_first_char_expected.hpp at line 6, boost/metaparse/v1/foldl_reject_incomplete.hpp at line 6, boost/metaparse/v1/foldl_reject_incomplete1.hpp at line 6, boost/metaparse/v1/foldl_reject_incomplete_start_with_parser.hpp at line 6, boost/metaparse/v1/foldr_reject_incomplete.hpp at line 6, boost/metaparse/v1/foldr_reject_incomplete1.hpp at line 6, boost/metaparse/v1/impl/back_inserter.hpp at line 6, boost/metaparse/v1/impl/front_inserter.hpp at line 6, boost/metaparse/v1/impl/is_char_c.hpp at line 6, boost/metaparse/v1/impl/later_result.hpp at line 6, boost/metaparse/v1/impl/next_digit.hpp at line 6, boost/metaparse/v1/impl/one_of_fwd_op.hpp at line 6, boost/metaparse/v1/impl/void_.hpp at line 6, boost/metaparse/v1/optional.hpp at line 6, boost/metaparse/v1/repeated_reject_incomplete.hpp at line 6, boost/metaparse/v1/repeated_reject_incomplete1.hpp at line 6, boost/metaparse/v1/sequence_apply.hpp at line 6, boost/metaparse/v1/swap.hpp at line 6, boost/metaparse/v1/transform_error.hpp at line 6, boost/metaparse/v1/transform_error_message.hpp at line 6, boost/metaparse/version.hpp at line 6
+ License text:
+ // Copyright Abel Sinkovics (abel@sinkovics.hu) 2015.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/metaparse/error/unpaired.hpp [4:6]
+ boost/metaparse/fail_at_first_char_expected.hpp [4:6]
+ boost/metaparse/foldl_reject_incomplete.hpp [4:6]
+ boost/metaparse/foldl_reject_incomplete1.hpp [4:6]
+ boost/metaparse/foldl_reject_incomplete_start_with_parser.hpp [4:6]
+ boost/metaparse/foldr_reject_incomplete.hpp [4:6]
+ boost/metaparse/foldr_reject_incomplete1.hpp [4:6]
+ boost/metaparse/optional.hpp [4:6]
+ boost/metaparse/repeated_reject_incomplete.hpp [4:6]
+ boost/metaparse/repeated_reject_incomplete1.hpp [4:6]
+ boost/metaparse/sequence_apply.hpp [4:6]
+ boost/metaparse/transform_error.hpp [4:6]
+ boost/metaparse/transform_error_message.hpp [4:6]
+ boost/metaparse/v1/error/expected_to_fail.hpp [4:6]
+ boost/metaparse/v1/error/unpaired.hpp [4:6]
+ boost/metaparse/v1/fail_at_first_char_expected.hpp [4:6]
+ boost/metaparse/v1/foldl_reject_incomplete.hpp [4:6]
+ boost/metaparse/v1/foldl_reject_incomplete1.hpp [4:6]
+ boost/metaparse/v1/foldl_reject_incomplete_start_with_parser.hpp [4:6]
+ boost/metaparse/v1/foldr_reject_incomplete.hpp [4:6]
+ boost/metaparse/v1/foldr_reject_incomplete1.hpp [4:6]
+ boost/metaparse/v1/impl/back_inserter.hpp [4:6]
+ boost/metaparse/v1/impl/front_inserter.hpp [4:6]
+ boost/metaparse/v1/impl/is_char_c.hpp [4:6]
+ boost/metaparse/v1/impl/later_result.hpp [4:6]
+ boost/metaparse/v1/impl/next_digit.hpp [4:6]
+ boost/metaparse/v1/impl/one_of_fwd_op.hpp [4:6]
+ boost/metaparse/v1/impl/void_.hpp [4:6]
+ boost/metaparse/v1/optional.hpp [4:6]
+ boost/metaparse/v1/repeated_reject_incomplete.hpp [4:6]
+ boost/metaparse/v1/repeated_reject_incomplete1.hpp [4:6]
+ boost/metaparse/v1/sequence_apply.hpp [4:6]
+ boost/metaparse/v1/swap.hpp [4:6]
+ boost/metaparse/v1/transform_error.hpp [4:6]
+ boost/metaparse/v1/transform_error_message.hpp [4:6]
+ boost/metaparse/version.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0592d773c67a9f16004eb64838cdbaa8
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/platform/cloudabi.h at line 4, boost/winapi/bcrypt.hpp at line 4, boost/winapi/config.hpp at line 4, boost/winapi/file_management.hpp at line 4, boost/winapi/file_mapping.hpp at line 4, boost/winapi/wait.hpp at line 4
+ License text:
+ Copyright 2017 James E. King, III
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/predef/platform/cloudabi.h [2:4]
+ boost/winapi/bcrypt.hpp [2:2]
+ boost/winapi/config.hpp [2:3]
+ boost/winapi/file_management.hpp [2:5]
+ boost/winapi/file_mapping.hpp [2:5]
+ boost/winapi/wait.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 059623504befbc01814eabacf56f307c
+BELONGS ya.make
+ License text:
+ Copyright (c) 2016 Lee Clagett
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/support/detail/and.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 05adeceb37523fe0339d6f28b148cbe2
+BELONGS ya.make
+ License text:
+ // (C) Copyright 2013 Ruslan Baratov
+ // Copyright (C) 2014 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/csbl/memory/shared_ptr.hpp [1:1]
+ boost/thread/executors/detail/priority_executor_base.hpp [1:2]
+ boost/thread/executors/generic_executor_ref.hpp [1:1]
+ boost/thread/executors/inline_executor.hpp [1:1]
+ boost/thread/executors/scheduled_thread_pool.hpp [1:2]
+ boost/thread/executors/scheduler.hpp [1:1]
+ boost/thread/executors/scheduling_adaptor.hpp [1:2]
+ boost/thread/executors/thread_executor.hpp [1:1]
+ boost/thread/with_lock_guard.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 05dea3cd629cf8ef88336fe0f07b458f
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2010, 2012.
+ // Copyright Paul A. Bristow 2011, 2012.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/constants/calculate_constants.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 05fd399cf249e99987c204a65eb75fba
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/math/special_functions/pow.hpp at line 6
+ License text:
+ // (C) Copyright Bruno Lalande 2008.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/pow.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 060d1c9a659248da572c61c592f7de28
+BELONGS ya.make
+ License text:
+ Copyright (c) 2003 Jonathan de Halleux (dehalleux@pelikhan.com)
+ Copyright (c) 2011 Bryce Lelbach
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/actor/ref_value_actor.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 061ba44b1c5a3d022ff7ae16bcd93f16
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2001-2009 Daniel Nuffer
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/support/char_set/basic_chset.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 06270473adb0db5611666795418a7a03
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/io_fwd.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/io_fwd.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0629dfc80f2e34347ae3527a5b97c05b
+BELONGS ya.make
+ License text:
+ // This file was modified by Oracle on 2014, 2016, 2017.
+ // Modifications copyright (c) 2014-2017, Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/azimuth.hpp [5:6]
+ boost/geometry/algorithms/detail/intersection/interface.hpp [5:6]
+ boost/geometry/strategies/cartesian/intersection.hpp [6:7]
+ boost/geometry/strategies/spherical/distance_cross_track.hpp [5:6]
+ boost/geometry/strategies/spherical/distance_cross_track_point_box.hpp [7:8]
+ boost/geometry/strategies/spherical/side_by_cross_track.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 063415ea5f4f1d2813797e674bb69bb4
+BELONGS ya.make
+ License text:
+ // Copyright (C) Christof Meerwald 2003
+ // Copyright (C) Dan Watkins 2003
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/digitalmars.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 063981378c5a34322f72710962459da2
+BELONGS ya.make
+ License text:
+ // Copyright 2005, 2014 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/detail/sp_interlocked.hpp [13:13]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0654c59b9150c6a73ad14057713552bf
+BELONGS ya.make
+ License text:
+ // This file was modified by Oracle on 2015.
+ // Modifications copyright (c) 2015 Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/overlay/clip_linestring.hpp [5:6]
+ boost/geometry/strategies/cartesian/centroid_average.hpp [8:9]
+ boost/geometry/strategies/cartesian/centroid_bashein_detmer.hpp [7:8]
+ boost/geometry/strategies/strategy_transform.hpp [7:8]
+ boost/geometry/strategies/transform/matrix_transformers.hpp [7:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 06752fed324925429c6bb59ddac9d673
+BELONGS ya.make
+ License text:
+ Copyright (c) 2005 Matthew Calabrese
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/utility/binary.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 067cda0b5423326cdf3316f73f4b7ff5
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2000-2002
+ // Joerg Walter, Mathias Koch
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/ublas/detail/concepts.hpp [2:3]
+ boost/numeric/ublas/detail/config.hpp [2:3]
+ boost/numeric/ublas/detail/definitions.hpp [2:3]
+ boost/numeric/ublas/detail/duff.hpp [2:3]
+ boost/numeric/ublas/detail/iterator.hpp [2:3]
+ boost/numeric/ublas/detail/matrix_assign.hpp [2:3]
+ boost/numeric/ublas/detail/temporary.hpp [2:3]
+ boost/numeric/ublas/detail/vector_assign.hpp [2:3]
+ boost/numeric/ublas/lu.hpp [2:3]
+ boost/numeric/ublas/matrix_expression.hpp [2:3]
+ boost/numeric/ublas/matrix_proxy.hpp [2:3]
+ boost/numeric/ublas/operation.hpp [2:3]
+ boost/numeric/ublas/operation_blocked.hpp [2:3]
+ boost/numeric/ublas/operation_sparse.hpp [2:3]
+ boost/numeric/ublas/storage.hpp [2:3]
+ boost/numeric/ublas/storage_sparse.hpp [2:3]
+ boost/numeric/ublas/symmetric.hpp [2:3]
+ boost/numeric/ublas/traits.hpp [2:3]
+ boost/numeric/ublas/triangular.hpp [2:3]
+ boost/numeric/ublas/vector_expression.hpp [2:3]
+ boost/numeric/ublas/vector_proxy.hpp [2:3]
+ boost/numeric/ublas/vector_sparse.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 06bdb153f7c9e585b90d3443f4a9ed60
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/integer/common_factor_ct.hpp at line 5
+ License text:
+ // (C) Copyright Daryle Walker and Stephen Cleary 2001-2002.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/integer/common_factor_ct.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 06bdc28468ac3b6b957b56a9c6096a82
+BELONGS ya.make
+ License text:
+ // This file was modified by Oracle on 2014, 2017.
+ // Modifications copyright (c) 2014-2017 Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/crosses.hpp [8:9]
+ boost/geometry/algorithms/detail/equals/implementation.hpp [8:9]
+ boost/geometry/algorithms/detail/equals/interface.hpp [8:9]
+ boost/geometry/algorithms/detail/overlaps/implementation.hpp [7:8]
+ boost/geometry/algorithms/detail/overlaps/interface.hpp [7:8]
+ boost/geometry/algorithms/detail/overlay/append_no_dups_or_spikes.hpp [5:6]
+ boost/geometry/algorithms/detail/overlay/copy_segments.hpp [5:6]
+ boost/geometry/algorithms/detail/overlay/follow.hpp [6:9]
+ boost/geometry/algorithms/detail/overlay/get_turns.hpp [6:7]
+ boost/geometry/algorithms/detail/overlay/intersection_insert.hpp [5:6]
+ boost/geometry/algorithms/equals.hpp [8:9]
+ boost/geometry/algorithms/overlaps.hpp [7:8]
+ boost/geometry/algorithms/point_on_surface.hpp [8:9]
+ boost/geometry/algorithms/union.hpp [5:6]
+ boost/geometry/formulas/vincenty_direct.hpp [5:6]
+ boost/geometry/formulas/vincenty_inverse.hpp [6:7]
+ boost/geometry/strategies/geographic/distance_andoyer.hpp [5:6]
+ boost/geometry/strategies/geographic/distance_vincenty.hpp [5:6]
+ boost/geometry/strategies/geographic/mapping_ssf.hpp [5:6]
+ boost/geometry/strategies/geographic/side_andoyer.hpp [5:6]
+ boost/geometry/strategies/geographic/side_thomas.hpp [5:6]
+ boost/geometry/strategies/geographic/side_vincenty.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 06c37076487394ac3bd22a3705d78079
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2014-2017, Oracle and/or its affiliates.
+ // Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/disjoint/multipoint_geometry.hpp [3:4]
+ boost/geometry/algorithms/detail/disjoint/multirange_geometry.hpp [3:3]
+ boost/geometry/algorithms/detail/is_simple/always_simple.hpp [3:3]
+ boost/geometry/algorithms/detail/is_simple/areal.hpp [3:3]
+ boost/geometry/algorithms/detail/is_simple/interface.hpp [3:3]
+ boost/geometry/algorithms/detail/is_simple/linear.hpp [3:3]
+ boost/geometry/algorithms/detail/is_simple/multipoint.hpp [3:3]
+ boost/geometry/algorithms/detail/is_valid/box.hpp [3:3]
+ boost/geometry/algorithms/detail/is_valid/has_spikes.hpp [3:3]
+ boost/geometry/algorithms/detail/is_valid/has_valid_self_turns.hpp [3:3]
+ boost/geometry/algorithms/detail/is_valid/linear.hpp [3:3]
+ boost/geometry/algorithms/detail/is_valid/multipolygon.hpp [3:3]
+ boost/geometry/algorithms/detail/is_valid/pointlike.hpp [3:3]
+ boost/geometry/algorithms/detail/is_valid/polygon.hpp [5:5]
+ boost/geometry/algorithms/detail/is_valid/ring.hpp [5:5]
+ boost/geometry/algorithms/detail/is_valid/segment.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/follow_linear_linear.hpp [5:5]
+ boost/geometry/algorithms/detail/overlay/linear_linear.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/pointlike_pointlike.hpp [3:3]
+ boost/geometry/algorithms/detail/relate/topology_check.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 06f12139423100c74c14f7a3021aabca
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/seq/variadic_seq_to_seq.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/preprocessor/seq/variadic_seq_to_seq.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 06f3ad25abe7d23073fb48ef1a22454e
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2002 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/enable_shared_from_this.hpp [7:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 07040e547c7cdfe59c684f2a324385cc
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/date_time/date_duration_types.hpp at line 6, boost/date_time/date_generator_formatter.hpp at line 6, boost/date_time/filetime_functions.hpp at line 6, boost/date_time/gregorian/greg_duration_types.hpp at line 6, boost/date_time/local_time/date_duration_operators.hpp at line 6, boost/date_time/posix_time/date_duration_operators.hpp at line 6, boost/date_time/special_values_formatter.hpp at line 7, boost/date_time/strings_from_facet.hpp at line 6
+ License text:
+ /* Copyright (c) 2004 CrystalClear Software, Inc.
+ * Subject to the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/date_time/date_duration_types.hpp [4:6]
+ boost/date_time/date_generator_formatter.hpp [4:6]
+ boost/date_time/filetime_functions.hpp [4:6]
+ boost/date_time/gregorian/greg_duration_types.hpp [4:8]
+ boost/date_time/local_time/date_duration_operators.hpp [4:6]
+ boost/date_time/posix_time/date_duration_operators.hpp [4:6]
+ boost/date_time/special_values_formatter.hpp [5:7]
+ boost/date_time/strings_from_facet.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 073058f74b270621d1207cca7c921e79
+BELONGS ya.make
+ License text:
+ // Copyright 2014 LASMEA UMR 6602 CNRS/Univ. Clermont II
+ // Copyright 2014 LRI UMR 8623 CNRS/Univ Paris Sud XI
+ // Copyright 2014 MetaScale SAS
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/external/nt2/nt2_copy.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0741d2c1f3867245a3cb9d8c11260d78
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2011 Jan Frederick Eick
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/qi/numeric/detail/numeric_utils.hpp [2:6]
+ boost/spirit/home/qi/numeric/numeric_utils.hpp [2:3]
+ boost/spirit/home/qi/numeric/uint.hpp [2:4]
+ boost/spirit/home/x3/numeric/uint.hpp [2:3]
+ boost/spirit/home/x3/support/numeric_utils/detail/extract_int.hpp [2:6]
+ boost/spirit/home/x3/support/numeric_utils/extract_int.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 07a69d34287d5174fbb91c1432623c73
+BELONGS ya.make
+ License text:
+ // (C) Copyright Ion Gaztanaga 2013-2014
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/intrusive/bs_set.hpp [3:3]
+ boost/intrusive/bstree.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 07b7558ba450b33ddac49fa00995dc34
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/serialization/export.hpp [19:21]
+
+KEEP COPYRIGHT_SERVICE_LABEL 083a405889ae781bc980f57de8b73aab
+BELONGS ya.make
+ License text:
+ Copyright 2013 Karsten Ahnert
+ Copyright 2013 Mario Mulansky
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/algebra/algebra_dispatcher.hpp [9:10]
+ boost/numeric/odeint/algebra/detail/extract_value_type.hpp [9:10]
+ boost/numeric/odeint/algebra/detail/norm_inf.hpp [9:10]
+ boost/numeric/odeint/algebra/fusion_algebra_dispatcher.hpp [9:10]
+ boost/numeric/odeint/algebra/norm_result_type.hpp [9:10]
+ boost/numeric/odeint/algebra/operations_dispatcher.hpp [9:10]
+ boost/numeric/odeint/external/eigen/eigen_algebra.hpp [9:10]
+ boost/numeric/odeint/external/eigen/eigen_resize.hpp [9:10]
+ boost/numeric/odeint/external/mpi/mpi.hpp [9:11]
+ boost/numeric/odeint/external/mpi/mpi_nested_algebra.hpp [9:11]
+ boost/numeric/odeint/external/mpi/mpi_state.hpp [9:11]
+ boost/numeric/odeint/external/mpi/mpi_vector_state.hpp [9:11]
+ boost/numeric/odeint/external/mtl4/mtl4.hpp [9:10]
+ boost/numeric/odeint/external/mtl4/mtl4_algebra_dispatcher.hpp [9:10]
+ boost/numeric/odeint/external/openmp/openmp.hpp [9:11]
+ boost/numeric/odeint/external/openmp/openmp_nested_algebra.hpp [9:11]
+ boost/numeric/odeint/external/openmp/openmp_range_algebra.hpp [9:11]
+ boost/numeric/odeint/external/openmp/openmp_state.hpp [9:11]
+ boost/numeric/odeint/external/thrust/thrust.hpp [9:10]
+ boost/numeric/odeint/external/thrust/thrust_algebra_dispatcher.hpp [9:10]
+ boost/numeric/odeint/external/vexcl/vexcl.hpp [9:10]
+ boost/numeric/odeint/external/vexcl/vexcl_algebra_dispatcher.hpp [9:10]
+ boost/numeric/odeint/iterator/impl/const_step_iterator_impl.hpp [9:10]
+ boost/numeric/odeint/util/n_ary_helper.hpp [7:9]
+ boost/numeric/odeint/util/split.hpp [9:11]
+ boost/numeric/odeint/util/split_adaptor.hpp [9:11]
+ boost/numeric/odeint/util/stepper_traits.hpp [9:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL 085869bb2241cf9aeb5f050ee3cff8ce
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/return_arg.hpp at line 3
+ License text:
+ // Copyright David Abrahams and Nikolay Mladenov 2003.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/python/return_arg.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 086e913ebca204ed72c05a3607031c1d
+BELONGS ya.make
+ License text:
+ // Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
+ // Copyright (C) 2001, 2002 Peter Dimov
+ // Copyright (C) 2002 David Abrahams
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/core/ref.hpp [17:19]
+
+KEEP COPYRIGHT_SERVICE_LABEL 08a0499dcbbd5932fb9219dce6ebc084
+BELONGS ya.make
+ License text:
+ Copyright 2011-2012 Mario Mulansky
+ Copyright 2011 Karsten Ahnert
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/external/gsl/gsl_wrapper.hpp [9:10]
+ boost/numeric/odeint/stepper/detail/rotating_buffer.hpp [9:10]
+ boost/numeric/odeint/stepper/generation.hpp [9:10]
+ boost/numeric/odeint/stepper/generation/generation_runge_kutta_cash_karp54.hpp [9:10]
+ boost/numeric/odeint/stepper/generation/generation_runge_kutta_cash_karp54_classic.hpp [10:11]
+ boost/numeric/odeint/stepper/generation/generation_runge_kutta_dopri5.hpp [9:10]
+ boost/numeric/odeint/stepper/generation/generation_runge_kutta_fehlberg78.hpp [9:10]
+ boost/numeric/odeint/util/is_pair.hpp [9:10]
+ boost/numeric/odeint/util/resizer.hpp [9:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL 08c8d8e87d3028ff1a5cda49cfd4276e
+BELONGS libs/locale/ya.make ya.make
+ License text:
+ // Copyright (c) 2009-2011 Artyom Beilis (Tonkikh)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/locale.hpp [2:2]
+ boost/locale/boundary.hpp [2:2]
+ boost/locale/boundary/boundary_point.hpp [2:2]
+ boost/locale/boundary/facets.hpp [2:2]
+ boost/locale/boundary/index.hpp [2:2]
+ boost/locale/boundary/segment.hpp [2:2]
+ boost/locale/boundary/types.hpp [2:2]
+ boost/locale/collator.hpp [2:2]
+ boost/locale/config.hpp [2:2]
+ boost/locale/conversion.hpp [2:2]
+ boost/locale/date_time.hpp [2:2]
+ boost/locale/date_time_facet.hpp [2:2]
+ boost/locale/definitions.hpp [2:2]
+ boost/locale/encoding.hpp [2:2]
+ boost/locale/encoding_errors.hpp [2:2]
+ boost/locale/encoding_utf.hpp [2:2]
+ boost/locale/format.hpp [2:2]
+ boost/locale/formatting.hpp [2:2]
+ boost/locale/generator.hpp [2:2]
+ boost/locale/gnu_gettext.hpp [2:2]
+ boost/locale/info.hpp [2:2]
+ boost/locale/localization_backend.hpp [2:2]
+ boost/locale/message.hpp [2:2]
+ boost/locale/time_zone.hpp [2:2]
+ boost/locale/utf.hpp [2:2]
+ boost/locale/util.hpp [2:2]
+ libs/locale/src/encoding/codepage.cpp [2:2]
+ libs/locale/src/encoding/conv.hpp [2:2]
+ libs/locale/src/encoding/iconv_codepage.ipp [2:2]
+ libs/locale/src/encoding/uconv_codepage.ipp [2:2]
+ libs/locale/src/encoding/wconv_codepage.ipp [2:2]
+ libs/locale/src/icu/all_generator.hpp [2:2]
+ libs/locale/src/icu/boundary.cpp [2:2]
+ libs/locale/src/icu/cdata.hpp [2:2]
+ libs/locale/src/icu/codecvt.cpp [2:2]
+ libs/locale/src/icu/codecvt.hpp [2:2]
+ libs/locale/src/icu/collator.cpp [2:2]
+ libs/locale/src/icu/conversion.cpp [2:2]
+ libs/locale/src/icu/date_time.cpp [2:2]
+ libs/locale/src/icu/formatter.cpp [2:2]
+ libs/locale/src/icu/formatter.hpp [2:2]
+ libs/locale/src/icu/icu_backend.cpp [2:2]
+ libs/locale/src/icu/icu_backend.hpp [2:2]
+ libs/locale/src/icu/icu_util.hpp [2:2]
+ libs/locale/src/icu/numeric.cpp [2:2]
+ libs/locale/src/icu/predefined_formatters.hpp [2:2]
+ libs/locale/src/icu/time_zone.cpp [2:2]
+ libs/locale/src/icu/time_zone.hpp [2:2]
+ libs/locale/src/icu/uconv.hpp [2:2]
+ libs/locale/src/posix/all_generator.hpp [2:2]
+ libs/locale/src/posix/codecvt.cpp [2:2]
+ libs/locale/src/posix/codecvt.hpp [2:2]
+ libs/locale/src/posix/collate.cpp [2:2]
+ libs/locale/src/posix/converter.cpp [2:2]
+ libs/locale/src/posix/numeric.cpp [2:2]
+ libs/locale/src/posix/posix_backend.cpp [2:2]
+ libs/locale/src/posix/posix_backend.hpp [2:2]
+ libs/locale/src/shared/date_time.cpp [2:2]
+ libs/locale/src/shared/format.cpp [2:2]
+ libs/locale/src/shared/formatting.cpp [2:2]
+ libs/locale/src/shared/generator.cpp [2:2]
+ libs/locale/src/shared/ids.cpp [2:2]
+ libs/locale/src/shared/ios_prop.hpp [2:2]
+ libs/locale/src/shared/localization_backend.cpp [2:2]
+ libs/locale/src/shared/mo_hash.hpp [2:2]
+ libs/locale/src/shared/mo_lambda.cpp [2:2]
+ libs/locale/src/shared/mo_lambda.hpp [2:2]
+ libs/locale/src/std/all_generator.hpp [2:2]
+ libs/locale/src/std/codecvt.cpp [2:2]
+ libs/locale/src/std/collate.cpp [2:2]
+ libs/locale/src/std/converter.cpp [2:2]
+ libs/locale/src/std/numeric.cpp [2:2]
+ libs/locale/src/std/std_backend.cpp [2:2]
+ libs/locale/src/std/std_backend.hpp [2:2]
+ libs/locale/src/util/codecvt_converter.cpp [2:2]
+ libs/locale/src/util/default_locale.cpp [2:2]
+ libs/locale/src/util/gregorian.cpp [2:2]
+ libs/locale/src/util/gregorian.hpp [2:2]
+ libs/locale/src/util/iconv.hpp [2:2]
+ libs/locale/src/util/info.cpp [2:2]
+ libs/locale/src/util/locale_data.cpp [2:2]
+ libs/locale/src/util/locale_data.hpp [2:2]
+ libs/locale/src/util/numeric.hpp [2:2]
+ libs/locale/src/util/timezone.hpp [2:2]
+ libs/locale/src/win32/all_generator.hpp [2:2]
+ libs/locale/src/win32/api.hpp [2:2]
+ libs/locale/src/win32/collate.cpp [2:2]
+ libs/locale/src/win32/converter.cpp [2:2]
+ libs/locale/src/win32/lcid.cpp [2:2]
+ libs/locale/src/win32/lcid.hpp [2:2]
+ libs/locale/src/win32/numeric.cpp [2:2]
+ libs/locale/src/win32/win_backend.cpp [2:2]
+ libs/locale/src/win32/win_backend.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 08f926507a475f95278bdc864b401b0a
+BELONGS libs/python/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/object/stl_iterator_core.hpp at line 3, boost/python/stl_iterator.hpp at line 3, libs/python/src/object/stl_iterator.cpp at line 3
+ License text:
+ // Copyright Eric Niebler 2005.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/python/object/stl_iterator_core.hpp [1:3]
+ boost/python/stl_iterator.hpp [1:3]
+ libs/python/src/object/stl_iterator.cpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 095a19389e06f0d846d8f09e0b124d3a
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2005-2006 Alain Miniussi <alain.miniussi -at- oca.eu>.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpi/inplace.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 096d8c5df1c32b2f75ba4a9a2e402de2
+BELONGS ya.make
+ License text:
+ // Copyright David Abrahams and Thomas Becker 2000-2006.
+ // Copyright Kohei Takahashi 2012-2014.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/iterator/zip_iterator.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 099f45e4dfce1e9a04cd9f0fc805912b
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/archive/detail/auto_link_archive.hpp at line 14, boost/archive/detail/auto_link_warchive.hpp at line 14, boost/archive/detail/decl.hpp at line 14, boost/serialization/config.hpp at line 8
+ License text:
+ // (c) Copyright Robert Ramey 2004
+ // Use, modification, and distribution is subject to the Boost Software
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/archive/detail/auto_link_archive.hpp [12:14]
+ boost/archive/detail/auto_link_warchive.hpp [12:14]
+ boost/archive/detail/decl.hpp [12:14]
+ boost/serialization/config.hpp [6:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 09b747b5492c0054ccb0805469599656
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+ // Copyright (c) 2008 Roelof Naude (roelof.naude at gmail dot com)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/asio/detail/eventfd_select_interrupter.hpp [5:6]
+ boost/asio/detail/impl/eventfd_select_interrupter.ipp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 09ca8f5ea99b8a6ff33ed89df33c25be
+BELONGS ya.make
+ License text:
+ // Copyright Aleksey Gurtovoy 2001-2007
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/aux_/lambda_spec.hpp [5:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 09cc1fb7c33b7954947a92ced3ff6df1
+BELONGS ya.make
+ License text:
+ // (C) Copyright 2009-2011 Frederic Bron, Robert Stewart, Steven Watanabe & Roman Perepelitsa.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_traits/detail/has_binary_operator.hpp [1:1]
+ boost/type_traits/detail/has_postfix_operator.hpp [1:1]
+ boost/type_traits/detail/has_prefix_operator.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 09df97e99c4303bff1e87e8c1c9130b6
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/process/detail/windows/locale.hpp at line 4, boost/process/locale.hpp at line 4
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/process/detail/windows/locale.hpp [1:2]
+ boost/process/locale.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0a1956f795fb552dd3a4ff03d098c17c
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2003 Daniel Nuffer
+ Copyright (c) 2003 Giovanni Bajo
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/iterator.hpp [2:4]
+ boost/spirit/home/classic/iterator/impl/position_iterator.ipp [2:5]
+ boost/spirit/home/classic/iterator/position_iterator.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0a1ddf2f633492698f29966f2ba00d47
+BELONGS ya.make
+ License text:
+ // Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
+ // Copyright (C) Vladimir Prus 2003
+ // Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/random.hpp [2:4]
+ boost/property_map/parallel/vector_property_map.hpp [1:3]
+ boost/property_map/vector_property_map.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0a2a0abc8536e98547d88c1773f19fb5
+BELONGS libs/iostreams/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/ptr_container/detail/is_convertible.hpp at line 5, boost/ptr_container/detail/static_move_ptr.hpp at line 5, libs/iostreams/src/mapped_file.cpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/ptr_container/detail/is_convertible.hpp [1:5]
+ boost/ptr_container/detail/static_move_ptr.hpp [1:5]
+ libs/iostreams/src/mapped_file.cpp [1:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0a2b5d5a0c0eaf639c779415c0484b22
+BELONGS ya.make
+ License text:
+ // Copyright Douglas Gregor 2004.
+ // Copyright 2005 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/detail/interlocked.hpp [7:7]
+ boost/function_equal.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0a3175bc860cf11c874510bcf687df69
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001-2011 Joel de Guzman
+ // Copyright (c) 2001-2011 Hartmut Kaiser
+ // Copyright (c) 2009 Francois Barel
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/karma/nonterminal/detail/parameterized.hpp [1:3]
+ boost/spirit/home/qi/nonterminal/detail/parameterized.hpp [2:3]
+ boost/spirit/home/support/nonterminal/extract_param.hpp [2:4]
+ boost/spirit/repository/home/karma/nonterminal.hpp [1:3]
+ boost/spirit/repository/home/karma/nonterminal/subrule.hpp [1:3]
+ boost/spirit/repository/home/qi/nonterminal.hpp [1:3]
+ boost/spirit/repository/home/qi/nonterminal/subrule.hpp [2:3]
+ boost/spirit/repository/home/support/subrule_context.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0a88dd37543f88fab003f41788b3cf9b
+BELONGS ya.make
+ License text:
+ // (C) Copyright Dave Abrahams and Daniel Walker 1999-2003.
+ // Copyright (c) Andrey Semashev 2017
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/next_prior.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0a9a56c76c75046da6d531707b442246
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2007, 2008 Steven Watanabe, Joseph Gauterin, Niels Dekker
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/core/swap.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0aa197418350ce1baad48ead251f36a4
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/detail/move.hpp at line 5, boost/interprocess/detail/robust_emulation.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2010-2012.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/interprocess/detail/move.hpp [3:5]
+ boost/interprocess/detail/robust_emulation.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0ac5ffd92b2d14f341279a5a1a133f45
+BELONGS ya.make
+ License text:
+ // Copyright 2003 (c) The Trustees of Indiana University.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/core/enable_if.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0ac94d69700429ed83a5edaf872407cb
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/tti/detail/ddeftype.hpp at line 4, boost/tti/detail/dnullptr.hpp at line 4, boost/tti/gen/has_data_gen.hpp at line 4, boost/tti/gen/has_function_gen.hpp at line 4
+ License text:
+ // (C) Copyright Edward Diener 2012
+ // Use, modification and distribution are subject to the Boost Software License,
+ // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/tti/detail/ddeftype.hpp [2:4]
+ boost/tti/detail/dnullptr.hpp [2:4]
+ boost/tti/gen/has_data_gen.hpp [2:4]
+ boost/tti/gen/has_function_gen.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0b275d928a7071063ea8fa601680fadd
+BELONGS ya.make
+ License text:
+ // (C) Copyright Jeremy Siek 2000.
+ // Copyright 2002 The Trustees of Indiana University.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/concept_check.hpp [2:3]
+ boost/multi_array.hpp [1:1]
+ boost/multi_array/algorithm.hpp [30:30]
+ boost/multi_array/base.hpp [1:1]
+ boost/multi_array/collection_concept.hpp [1:1]
+ boost/multi_array/concept_checks.hpp [1:1]
+ boost/multi_array/copy_array.hpp [1:1]
+ boost/multi_array/extent_gen.hpp [1:1]
+ boost/multi_array/extent_range.hpp [1:1]
+ boost/multi_array/index_gen.hpp [1:1]
+ boost/multi_array/index_range.hpp [1:1]
+ boost/multi_array/iterator.hpp [1:1]
+ boost/multi_array/multi_array_ref.hpp [1:1]
+ boost/multi_array/range_list.hpp [1:1]
+ boost/multi_array/storage_order.hpp [1:1]
+ boost/multi_array/subarray.hpp [1:1]
+ boost/multi_array/types.hpp [1:1]
+ boost/multi_array/view.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0b29116922cfef70c51094e6d835a79b
+BELONGS ya.make
+ License text:
+ // (C) Copyright Francois Faure, iMAGIS-GRAVIR / UJF, 2001.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/property_iter_range.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0b4299a09d63e96056991adca25384c1
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2002-2006 Marcin Kalicinski
+ // Copyright (C) 2015 Sebastian Redl
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/property_tree/json_parser.hpp [2:3]
+ boost/property_tree/json_parser/detail/read.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0b4c09f6f3b7c4c50019029022cf8605
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2004 Arkadiy Vertleyb
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/typeof/encode_decode.hpp [1:1]
+ boost/typeof/int_encoding.hpp [1:3]
+ boost/typeof/modifiers.hpp [1:3]
+ boost/typeof/pointers_data_members.hpp [1:3]
+ boost/typeof/register_functions.hpp [1:3]
+ boost/typeof/register_functions_iterate.hpp [1:3]
+ boost/typeof/register_fundamental.hpp [1:4]
+ boost/typeof/register_mem_functions.hpp [1:3]
+ boost/typeof/template_encoding.hpp [1:4]
+ boost/typeof/type_encoding.hpp [1:3]
+ boost/typeof/typeof.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0b5ce66fba7e15b3ae6b4fe603a6dfc7
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/fiber/properties.hpp at line 3
+ License text:
+ // Copyright Nat Goodspeed 2014.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fiber/properties.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0b6f371227c9898f1ce2ae1a4a259a75
+BELONGS ya.make
+ License text:
+ // Copyright 2017 John Maddock
+ // Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/tools/atomic.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0ba2ebe3ae8aa78b437fe4f53708d243
+BELONGS ya.make
+ License text:
+ Copyright 2020-2021 Glen Joseph Fernandes
+ (glenjofe@gmail.com)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/core/allocator_access.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0c190a3fed9f645e32983879cf237122
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2011 Brandon Kohn
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/container/map/detail/cpp03/at_impl.hpp [2:3]
+ boost/fusion/container/map/detail/cpp03/value_at_impl.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0c1af2120f5b2c990788a2bcf885bea8
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/queue.hpp at line 14, boost/serialization/stack.hpp at line 14
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/serialization/queue.hpp [12:14]
+ boost/serialization/stack.hpp [12:14]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0c1af98e46f7afe05454a0ee32286f46
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/metaparse/v1/cpp98/nth_of.hpp at line 6, boost/metaparse/v1/repeated_one_of.hpp at line 6, boost/metaparse/v1/repeated_one_of1.hpp at line 6
+ License text:
+ // Copyright Abel Sinkovics (abel@sinkovics.hu) 2010.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/metaparse/v1/cpp98/nth_of.hpp [4:6]
+ boost/metaparse/v1/repeated_one_of.hpp [4:6]
+ boost/metaparse/v1/repeated_one_of1.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0c2b8937b4dd7ffe9d6014b495d4300e
+BELONGS ya.make
+ License text:
+ // (C) Copyright Howard Hinnant
+ // Copyright 2011 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/chrono/ceil.hpp [3:4]
+ boost/chrono/chrono_io.hpp [4:7]
+ boost/chrono/floor.hpp [3:4]
+ boost/chrono/io/duration_get.hpp [1:4]
+ boost/chrono/io/duration_io.hpp [1:4]
+ boost/chrono/io/duration_put.hpp [1:4]
+ boost/chrono/io/duration_style.hpp [1:4]
+ boost/chrono/io/duration_units.hpp [1:4]
+ boost/chrono/io/time_point_get.hpp [1:4]
+ boost/chrono/io/time_point_io.hpp [1:4]
+ boost/chrono/io/time_point_put.hpp [1:4]
+ boost/chrono/io/time_point_units.hpp [1:5]
+ boost/chrono/io/timezone.hpp [1:4]
+ boost/chrono/io_v1/chrono_io.hpp [4:7]
+ boost/chrono/round.hpp [3:4]
+ boost/ratio/detail/ratio_io.hpp [3:6]
+ boost/ratio/ratio_io.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0c692f4ed0592b9e7538690f57796922
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/log/detail/allocator_traits.hpp at line 4
+ License text:
+ * Copyright Andrey Semashev 2018.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/log/detail/allocator_traits.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0c6b4a71af48e0c6aa05a5427f73c88f
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/detail/cxx_composite.hpp [1:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0c99d75cb8a2efd9e835c9f7a2d6551d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/xpressive/detail/utility/counted_base.hpp at line 4
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/xpressive/detail/utility/counted_base.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0ca4d911fb09cf5ac4c97fc962a5c09a
+BELONGS ya.make
+ License text:
+ Copyright (C) 2004-2008 Rene Nyffenegger
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/beast/core/detail/base64.hpp [16:16]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0cb977594281ac92638c2f8b1e08d39d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/assign/ptr_map_inserter.hpp at line 5, boost/ptr_container/detail/throw_exception.hpp at line 6, boost/range/adaptors.hpp at line 5, boost/range/algorithm_ext.hpp at line 10, boost/range/as_array.hpp at line 5, boost/range/as_literal.hpp at line 5, boost/range/detail/as_literal.hpp at line 5, boost/range/detail/str_types.hpp at line 5
+ License text:
+ // Copyright Thorsten Ottosen 2006. Use, modification and
+ // distribution is subject to the Boost Software License, Version
+ // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/assign/ptr_map_inserter.hpp [3:5]
+ boost/ptr_container/detail/throw_exception.hpp [4:6]
+ boost/range/adaptors.hpp [3:6]
+ boost/range/algorithm_ext.hpp [8:10]
+ boost/range/as_array.hpp [3:5]
+ boost/range/as_literal.hpp [3:5]
+ boost/range/detail/as_literal.hpp [3:5]
+ boost/range/detail/str_types.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0d425d37a7f3a1d0fc0a1ea34a2d4150
+BELONGS ya.make
+ License text:
+ Copyright (c) 2014 Kohei Takahashi
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/adapted/std_tuple/detail/build_std_tuple.hpp [2:2]
+ boost/fusion/container/generation/make_list.hpp [2:2]
+ boost/fusion/container/generation/vector_tie.hpp [2:2]
+ boost/fusion/container/list/list_fwd.hpp [2:2]
+ boost/fusion/container/set/set_fwd.hpp [2:2]
+ boost/fusion/container/vector/detail/value_at_impl.hpp [2:2]
+ boost/fusion/container/vector/vector10.hpp [2:2]
+ boost/fusion/container/vector/vector20.hpp [2:2]
+ boost/fusion/container/vector/vector30.hpp [2:2]
+ boost/fusion/container/vector/vector40.hpp [2:2]
+ boost/fusion/container/vector/vector50.hpp [2:2]
+ boost/fusion/include/std_tuple.hpp [2:4]
+ boost/fusion/support/config.hpp [2:3]
+ boost/fusion/tuple/make_tuple.hpp [2:2]
+ boost/fusion/tuple/tuple_tie.hpp [2:2]
+ boost/fusion/view/nview/detail/nview_impl.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0d692a3f4b84fd7a4a8cf39a7e86f0f8
+BELONGS ya.make
+ License text:
+ * Date: Sun Jun 22 14:23:12 MDT 2008
+ * Copyright: 2008 CodeRage, LLC
+ * Author: Jonathan Turkanis
+ * Contact: turkanis at coderage dot com
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/iostreams/detail/file_handle.hpp [8:11]
+ boost/iostreams/detail/path.hpp [8:11]
+ boost/iostreams/filter/grep.hpp [8:11]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0d7aa5edb40002a9a9a2f814b7ccceea
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
+ // Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
+ // Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/append.hpp [3:5]
+ boost/geometry/algorithms/comparable_distance.hpp [3:5]
+ boost/geometry/algorithms/detail/comparable_distance/implementation.hpp [3:5]
+ boost/geometry/algorithms/detail/comparable_distance/interface.hpp [3:5]
+ boost/geometry/algorithms/detail/counting.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/areal_areal.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/implementation.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/interface.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/linear_areal.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/linear_linear.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/linear_segment_or_box.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/segment_box.hpp [3:6]
+ boost/geometry/algorithms/detail/distance/backward_compatibility.hpp [3:6]
+ boost/geometry/algorithms/detail/distance/default_strategies.hpp [3:6]
+ boost/geometry/algorithms/detail/distance/implementation.hpp [3:6]
+ boost/geometry/algorithms/detail/distance/interface.hpp [3:7]
+ boost/geometry/algorithms/detail/distance/point_to_geometry.hpp [3:6]
+ boost/geometry/algorithms/detail/equals/collect_vectors.hpp [3:6]
+ boost/geometry/algorithms/detail/equals/point_point.hpp [3:6]
+ boost/geometry/algorithms/detail/intersects/implementation.hpp [3:5]
+ boost/geometry/algorithms/detail/intersects/interface.hpp [3:5]
+ boost/geometry/algorithms/disjoint.hpp [3:6]
+ boost/geometry/algorithms/dispatch/disjoint.hpp [3:6]
+ boost/geometry/algorithms/dispatch/distance.hpp [3:6]
+ boost/geometry/algorithms/distance.hpp [3:6]
+ boost/geometry/algorithms/for_each.hpp [3:6]
+ boost/geometry/algorithms/intersects.hpp [3:5]
+ boost/geometry/algorithms/length.hpp [3:5]
+ boost/geometry/algorithms/num_geometries.hpp [3:5]
+ boost/geometry/algorithms/num_interior_rings.hpp [3:5]
+ boost/geometry/algorithms/num_points.hpp [3:6]
+ boost/geometry/algorithms/perimeter.hpp [3:5]
+ boost/geometry/core/cs.hpp [3:5]
+ boost/geometry/geometries/concepts/point_concept.hpp [3:5]
+ boost/geometry/geometries/point.hpp [3:6]
+ boost/geometry/multi/algorithms/append.hpp [3:5]
+ boost/geometry/multi/algorithms/distance.hpp [3:5]
+ boost/geometry/multi/algorithms/num_points.hpp [3:5]
+ boost/geometry/policies/disjoint_interrupt_policy.hpp [3:6]
+ boost/geometry/strategies/cartesian/disjoint_segment_box.hpp [3:6]
+ boost/geometry/strategies/cartesian/distance_projected_point.hpp [3:5]
+ boost/geometry/strategies/cartesian/distance_projected_point_ax.hpp [3:5]
+ boost/geometry/strategies/cartesian/distance_pythagoras_box_box.hpp [3:5]
+ boost/geometry/strategies/cartesian/distance_pythagoras_point_box.hpp [3:5]
+ boost/geometry/strategies/concepts/distance_concept.hpp [3:5]
+ boost/geometry/strategies/default_comparable_distance_result.hpp [3:5]
+ boost/geometry/strategies/default_distance_result.hpp [3:5]
+ boost/geometry/strategies/default_length_result.hpp [3:5]
+ boost/geometry/strategies/distance.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0da62c9d547bc4ac9421f23ebfe03032
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/io/wkt/write.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0e00627118b1aa126c93a4d188f1689d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/containers/containers_fwd.hpp at line 5, boost/interprocess/detail/file_locking_helpers.hpp at line 5, boost/interprocess/detail/intermodule_singleton.hpp at line 5, boost/interprocess/detail/intermodule_singleton_common.hpp at line 5, boost/interprocess/detail/managed_global_memory.hpp at line 5, boost/interprocess/detail/portable_intermodule_singleton.hpp at line 5, boost/interprocess/detail/windows_intermodule_singleton.hpp at line 5, boost/interprocess/detail/xsi_shared_memory_file_wrapper.hpp at line 5, boost/interprocess/xsi_shared_memory.hpp at line 5, boost/move/move.hpp at line 5, boost/move/traits.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2009-2012. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/interprocess/containers/containers_fwd.hpp [3:5]
+ boost/interprocess/detail/file_locking_helpers.hpp [3:5]
+ boost/interprocess/detail/intermodule_singleton.hpp [3:5]
+ boost/interprocess/detail/intermodule_singleton_common.hpp [3:5]
+ boost/interprocess/detail/managed_global_memory.hpp [3:5]
+ boost/interprocess/detail/portable_intermodule_singleton.hpp [3:5]
+ boost/interprocess/detail/windows_intermodule_singleton.hpp [3:5]
+ boost/interprocess/detail/xsi_shared_memory_file_wrapper.hpp [3:5]
+ boost/interprocess/xsi_shared_memory.hpp [3:5]
+ boost/move/move.hpp [3:6]
+ boost/move/traits.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0e0690525ead371c9a42656f4d37ed28
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/poly_collection/algorithm.hpp at line 3, boost/poly_collection/detail/functional.hpp at line 3
+ License text:
+ /* Copyright 2016-2018 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/poly_collection/algorithm.hpp [1:3]
+ boost/poly_collection/detail/functional.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0e20cc85ddff90b5ad54f1b16cc40ada
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/detail/container_or_allocator_rebind.hpp at line 5, boost/container/detail/container_rebind.hpp at line 5, boost/container/detail/is_container.hpp at line 5, boost/container/detail/is_contiguous_container.hpp at line 5, boost/container/detail/value_functors.hpp at line 7, boost/move/algo/detail/set_difference.hpp at line 5, boost/move/algo/unique.hpp at line 5, boost/move/detail/to_raw_pointer.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2017-2017. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/container/detail/container_or_allocator_rebind.hpp [3:5]
+ boost/container/detail/container_rebind.hpp [3:5]
+ boost/container/detail/is_container.hpp [3:5]
+ boost/container/detail/is_contiguous_container.hpp [3:5]
+ boost/container/detail/value_functors.hpp [5:7]
+ boost/move/algo/detail/set_difference.hpp [3:5]
+ boost/move/algo/unique.hpp [3:5]
+ boost/move/detail/to_raw_pointer.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0e38f662b528c9b976dd8c8d913034a2
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/unordered_map.hpp at line 5, boost/unordered_set.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/unordered_map.hpp [2:5]
+ boost/unordered_set.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0e77ae1bd82b13815351a852b44ec0c8
+BELONGS ya.make
+ License text:
+ Copyright 2013-2014 Karsten Ahnert
+ Copyright 2013-2014 Mario Mulansky
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/external/thrust/thrust_operations_dispatcher.hpp [9:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0e77faac6c58d8b5ee5a53b520bcbfd5
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/list/to_array.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/preprocessor/list/to_array.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0ea0e99567f30b36347bb495edfbcaa5
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2004-2006 The Trustees of Indiana University.
+ // Copyright (C) 2007 Douglas Gregor
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/distributed/adjacency_list.hpp [1:2]
+ boost/graph/distributed/concepts.hpp [1:1]
+ boost/graph/distributed/connected_components.hpp [1:1]
+ boost/graph/distributed/connected_components_parallel_search.hpp [1:1]
+ boost/graph/distributed/crauser_et_al_shortest_paths.hpp [1:1]
+ boost/graph/distributed/dehne_gotz_min_spanning_tree.hpp [1:1]
+ boost/graph/distributed/detail/dijkstra_shortest_paths.hpp [1:1]
+ boost/graph/distributed/detail/filtered_queue.hpp [1:1]
+ boost/graph/distributed/detail/queue.ipp [1:1]
+ boost/graph/distributed/dijkstra_shortest_paths.hpp [1:1]
+ boost/graph/distributed/eager_dijkstra_shortest_paths.hpp [1:1]
+ boost/graph/distributed/graphviz.hpp [1:1]
+ boost/graph/distributed/local_subgraph.hpp [1:1]
+ boost/graph/distributed/page_rank.hpp [1:2]
+ boost/graph/distributed/queue.hpp [1:1]
+ boost/graph/distributed/vertex_list_adaptor.hpp [1:1]
+ boost/graph/parallel/container_traits.hpp [1:1]
+ boost/property_map/parallel/impl/distributed_property_map.ipp [1:1]
+ boost/property_map/parallel/local_property_map.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0ef4f9780c88027fdd5a35ac2257715c
+BELONGS ya.make
+ License text:
+ Copyright (c) 2000-2003 Brian McNamara and Yannis Smaragdakis
+ Copyright (c) 2001-2007 Joel de Guzman
+ Copyright (c) 2015 John Fletcher
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/phoenix/function/lazy_list.hpp [33:35]
+ boost/phoenix/function/lazy_operator.hpp [27:29]
+ boost/phoenix/function/lazy_prelude.hpp [115:117]
+ boost/phoenix/function/lazy_reuse.hpp [24:26]
+ boost/phoenix/function/lazy_signature.hpp [34:36]
+ boost/phoenix/function/lazy_smart.hpp [11:13]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0efd40a9062a85639e10344c951c8ddb
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/floating_point_promotion.hpp at line 3, boost/type_traits/integral_promotion.hpp at line 3, boost/type_traits/promote.hpp at line 3
+ License text:
+ // Copyright 2005 Alexander Nasonov.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_traits/floating_point_promotion.hpp [1:3]
+ boost/type_traits/integral_promotion.hpp [1:3]
+ boost/type_traits/promote.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0f30a097702291fdbe88b6aa88f9f744
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/cpp_dec_float.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/multiprecision/cpp_dec_float.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0f49b80837fdb112d7968c70aac5f973
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2007 Douglas Gregor and Matthias Troyer
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/parallel/detail/property_holders.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0f9e47e05da12882f5597d4fb9a928c8
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2003 Eric Friedman, Itay Maman
+ // Copyright (c) 2013-2016 Antony Polukhin
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/variant/variant_fwd.hpp [6:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0ff3815935f307838940ff905e254cdb
+BELONGS libs/log/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/log/utility/permissions.hpp at line 5, libs/log/config/pthread-mutex-robust/pthread_mutex_robust.cpp at line 5, libs/log/src/permissions.cpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/log/utility/permissions.hpp [2:5]
+ libs/log/config/pthread-mutex-robust/pthread_mutex_robust.cpp [2:4]
+ libs/log/src/permissions.cpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 10118f8d4d61de7bd7c81e582f77bc87
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/platform/ios.h at line 5
+ License text:
+ Copyright Ruslan Baratov 2017
+ Copyright Rene Rivera 2017
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/predef/platform/ios.h [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1017e4a7fef836fa656381426c398d61
+BELONGS ya.make
+ License text:
+ // Copyright Alexander Nasonov & Paul A. Bristow 2006.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/detail/lcast_precision.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 102aeb9de0dd2b131e13f2e7b47e1c05
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/coroutine/detail/preallocated.hpp at line 4, boost/fiber/algo/work_stealing.hpp at line 4, boost/fiber/detail/context_spinlock_queue.hpp at line 4
+ License text:
+ // Copyright Oliver Kowalke 2015.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/coroutine/detail/preallocated.hpp [2:4]
+ boost/fiber/algo/work_stealing.hpp [2:4]
+ boost/fiber/detail/context_spinlock_queue.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1039b7b0a1f8cafe9e6caab87c5befcd
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/math/common_factor_ct.hpp at line 5, boost/math/common_factor_rt.hpp at line 3, boost/type_traits/is_complete.hpp at line 4
+ License text:
+ // (C) Copyright John Maddock 2017.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/common_factor_ct.hpp [3:5]
+ boost/math/common_factor_rt.hpp [1:1]
+ boost/type_traits/is_complete.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 103fd6d712fb200d3b9147c6b7905af3
+BELONGS ya.make
+ License text:
+ Copyright 2015 NumScale SAS
+ Copyright 2015 LRI UMR 8623 CNRS/University Paris Sud XI
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/align/assume_aligned.hpp [2:3]
+ boost/align/detail/assume_aligned.hpp [2:3]
+ boost/align/detail/assume_aligned_gcc.hpp [2:3]
+ boost/align/detail/assume_aligned_intel.hpp [2:3]
+ boost/align/detail/assume_aligned_msvc.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 107d76075b5051c3bee20805223a5779
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
+ // Copyright (c) 2007, 2014 Peter Dimov
+ // Copyright (c) Beman Dawes 2011
+ // Copyright (c) 2015 Ion Gaztanaga
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/assert.hpp [8:11]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1090d940152a2cbd19bfff58bf63a13f
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/assume_abstract.hpp at line 14
+ License text:
+ // (C) Copyright 2008 Robert Ramey
+ // Use, modification and distribution is subject to the Boost Software
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/serialization/assume_abstract.hpp [12:14]
+
+KEEP COPYRIGHT_SERVICE_LABEL 10fe4090228a0ea61bac45ce35c9177e
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/test/utils/nullstream.hpp at line 4
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/test/utils/nullstream.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 11168ee38bde6d4aa685d70f5cf5cf68
+BELONGS ya.make
+ License text:
+ // Copyright 2016 Peter Dimov.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mp11/detail/config.hpp [4:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 119aa64b6fe77bfc2f178e06b5ce8caa
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/index/detail/algorithms/bounds.hpp [5:5]
+ boost/geometry/index/detail/algorithms/comparable_distance_centroid.hpp [5:5]
+ boost/geometry/index/detail/algorithms/comparable_distance_far.hpp [5:5]
+ boost/geometry/index/detail/algorithms/comparable_distance_near.hpp [5:5]
+ boost/geometry/index/detail/algorithms/content.hpp [5:5]
+ boost/geometry/index/detail/algorithms/is_valid.hpp [5:5]
+ boost/geometry/index/detail/algorithms/margin.hpp [5:5]
+ boost/geometry/index/detail/algorithms/minmaxdist.hpp [5:5]
+ boost/geometry/index/detail/algorithms/segment_intersection.hpp [5:5]
+ boost/geometry/index/detail/exception.hpp [3:3]
+ boost/geometry/index/detail/rtree/linear/redistribute_elements.hpp [5:6]
+ boost/geometry/index/detail/rtree/node/variant_visitor.hpp [5:5]
+ boost/geometry/index/detail/rtree/node/weak_visitor.hpp [5:5]
+ boost/geometry/index/detail/rtree/options.hpp [5:5]
+ boost/geometry/index/detail/rtree/visitors/count.hpp [5:5]
+ boost/geometry/index/detail/rtree/visitors/destroy.hpp [5:5]
+ boost/geometry/index/detail/rtree/visitors/distance_query.hpp [5:5]
+ boost/geometry/index/detail/rtree/visitors/spatial_query.hpp [5:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 11c555b9f12ef58efab27df9bf8c2090
+BELONGS ya.make
+ License text:
+ // Copyright Beman Dawes 2011
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/cxx11_char_types.hpp [3:3]
+ boost/endian/detail/disable_warnings.hpp [3:3]
+ boost/endian/detail/disable_warnings_pop.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 11d429a7e0f83394f0cc86e5e9f3bb69
+BELONGS ya.make
+ License text:
+ // Copyright 2000 John Maddock (john@johnmaddock.co.uk)
+ // Copyright 2000 Jeremy Siek (jsiek@lsc.nd.edu)
+ // Copyright 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_traits/conversion_traits.hpp [2:4]
+ boost/type_traits/is_convertible.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 11d90229b362526047d6924026cb8e28
+BELONGS ya.make
+ License text:
+ Copyright (c) Marshall Clow 2012-2012.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/utility/string_ref_fwd.hpp [2:2]
+ boost/utility/string_view_fwd.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 120d04eed9b07026548ea7929d94a3d9
+BELONGS ya.make
+ License text:
+ // Copyright 2004 The Trustees of Indiana University.
+ // Copyright 2005 Matthias Troyer.
+ // Copyright 2006 Douglas Gregor <doug.gregor -at- gmail.com>.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpi/datatype.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 122c8028bc01320e38f8296df292a785
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2003, 2006 Gerald I. Evenden
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/srs/projections/proj/omerc.hpp [26:26]
+ boost/geometry/srs/projections/proj/rouss.hpp [26:26]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1239bb24dcc5d1bb31ea703a7cbe2574
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/variance.hpp at line 6, boost/accumulators/statistics/weighted_variance.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/accumulators/statistics/variance.hpp [4:6]
+ boost/accumulators/statistics/weighted_variance.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1250adf3b1baad8098a59b613cec3ffe
+BELONGS ya.make
+ License text:
+ Copyright (c) 2007-2012: Joachim Faulhaber
+ Copyright (c) 1999-2006: Cortex Software GmbH, Kantstrasse 57, Berlin
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/icl/interval_base_map.hpp [2:3]
+ boost/icl/split_interval_map.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 12743f021f74d5e841d401749523a04e
+BELONGS libs/iostreams/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iostreams/categories.hpp at line 4, boost/iostreams/chain.hpp at line 4, boost/iostreams/char_traits.hpp at line 4, boost/iostreams/close.hpp at line 4, boost/iostreams/code_converter.hpp at line 4, boost/iostreams/combine.hpp at line 4, boost/iostreams/concepts.hpp at line 4, boost/iostreams/constants.hpp at line 4, boost/iostreams/copy.hpp at line 4, boost/iostreams/detail/access_control.hpp at line 4, boost/iostreams/detail/adapter/concept_adapter.hpp at line 4, boost/iostreams/detail/adapter/direct_adapter.hpp at line 4, boost/iostreams/detail/adapter/mode_adapter.hpp at line 4, boost/iostreams/detail/adapter/output_iterator_adapter.hpp at line 4, boost/iostreams/detail/adapter/range_adapter.hpp at line 4, boost/iostreams/detail/add_facet.hpp at line 4, boost/iostreams/detail/bool_trait_def.hpp at line 4, boost/iostreams/detail/broken_overload_resolution/forward.hpp at line 4, boost/iostreams/detail/broken_overload_resolution/stream.hpp at line 4, boost/iostreams/detail/broken_overload_resolution/stream_buffer.hpp at line 4, boost/iostreams/detail/buffer.hpp at line 4, boost/iostreams/detail/call_traits.hpp at line 4, boost/iostreams/detail/char_traits.hpp at line 4, boost/iostreams/detail/codecvt_helper.hpp at line 4, boost/iostreams/detail/codecvt_holder.hpp at line 4, boost/iostreams/detail/config/auto_link.hpp at line 4, boost/iostreams/detail/config/bzip2.hpp at line 4, boost/iostreams/detail/config/codecvt.hpp at line 4, boost/iostreams/detail/config/disable_warnings.hpp at line 4, boost/iostreams/detail/config/dyn_link.hpp at line 4, boost/iostreams/detail/config/enable_warnings.hpp at line 4, boost/iostreams/detail/config/gcc.hpp at line 4, boost/iostreams/detail/config/limits.hpp at line 4, boost/iostreams/detail/config/overload_resolution.hpp at line 4, boost/iostreams/detail/config/wide_streams.hpp at line 4, boost/iostreams/detail/config/zlib.hpp at line 4, boost/iostreams/detail/dispatch.hpp at line 4, boost/iostreams/detail/enable_if_stream.hpp at line 4, boost/iostreams/detail/error.hpp at line 4, boost/iostreams/detail/forward.hpp at line 4, boost/iostreams/detail/fstream.hpp at line 4, boost/iostreams/detail/ios.hpp at line 4, boost/iostreams/detail/iostream.hpp at line 4, boost/iostreams/detail/is_iterator_range.hpp at line 4, boost/iostreams/detail/param_type.hpp at line 4, boost/iostreams/detail/push.hpp at line 4, boost/iostreams/detail/push_params.hpp at line 4, boost/iostreams/detail/resolve.hpp at line 4, boost/iostreams/detail/select.hpp at line 4, boost/iostreams/detail/streambuf.hpp at line 4, boost/iostreams/detail/streambuf/chainbuf.hpp at line 4, boost/iostreams/detail/streambuf/direct_streambuf.hpp at line 4, boost/iostreams/detail/streambuf/indirect_streambuf.hpp at line 4, boost/iostreams/detail/streambuf/linked_streambuf.hpp at line 4, boost/iostreams/detail/template_params.hpp at line 4, boost/iostreams/detail/translate_int_type.hpp at line 4, boost/iostreams/detail/wrap_unwrap.hpp at line 4, boost/iostreams/device/back_inserter.hpp at line 4, boost/iostreams/device/file.hpp at line 4, boost/iostreams/device/file_descriptor.hpp at line 4, boost/iostreams/filter/aggregate.hpp at line 4, boost/iostreams/filter/bzip2.hpp at line 4, boost/iostreams/filter/gzip.hpp at line 4, boost/iostreams/filter/newline.hpp at line 4, boost/iostreams/filter/regex.hpp at line 4, boost/iostreams/filter/symmetric.hpp at line 4, boost/iostreams/filter/zlib.hpp at line 4, boost/iostreams/filtering_streambuf.hpp at line 4, boost/iostreams/flush.hpp at line 4, boost/iostreams/imbue.hpp at line 4, boost/iostreams/input_sequence.hpp at line 4, boost/iostreams/invert.hpp at line 4, boost/iostreams/operations_fwd.hpp at line 4, boost/iostreams/optimal_buffer_size.hpp at line 4, boost/iostreams/output_sequence.hpp at line 4, boost/iostreams/pipeline.hpp at line 4, boost/iostreams/positioning.hpp at line 4, boost/iostreams/seek.hpp at line 4, boost/iostreams/skip.hpp at line 4, boost/iostreams/stream.hpp at line 4, boost/iostreams/stream_buffer.hpp at line 4, boost/iostreams/traits.hpp at line 4, boost/iostreams/traits_fwd.hpp at line 4, boost/iostreams/write.hpp at line 4, libs/iostreams/src/bzip2.cpp at line 4, libs/iostreams/src/file_descriptor.cpp at line 4, libs/iostreams/src/gzip.cpp at line 4, libs/iostreams/src/zlib.cpp at line 4
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/iostreams/categories.hpp [1:4]
+ boost/iostreams/chain.hpp [1:4]
+ boost/iostreams/char_traits.hpp [1:4]
+ boost/iostreams/close.hpp [1:4]
+ boost/iostreams/code_converter.hpp [1:4]
+ boost/iostreams/combine.hpp [1:4]
+ boost/iostreams/concepts.hpp [1:4]
+ boost/iostreams/constants.hpp [1:4]
+ boost/iostreams/copy.hpp [1:4]
+ boost/iostreams/detail/access_control.hpp [1:4]
+ boost/iostreams/detail/adapter/concept_adapter.hpp [1:4]
+ boost/iostreams/detail/adapter/direct_adapter.hpp [1:4]
+ boost/iostreams/detail/adapter/mode_adapter.hpp [1:4]
+ boost/iostreams/detail/adapter/output_iterator_adapter.hpp [1:4]
+ boost/iostreams/detail/adapter/range_adapter.hpp [1:4]
+ boost/iostreams/detail/add_facet.hpp [1:4]
+ boost/iostreams/detail/bool_trait_def.hpp [1:4]
+ boost/iostreams/detail/broken_overload_resolution/forward.hpp [1:4]
+ boost/iostreams/detail/broken_overload_resolution/stream.hpp [1:4]
+ boost/iostreams/detail/broken_overload_resolution/stream_buffer.hpp [1:4]
+ boost/iostreams/detail/buffer.hpp [1:4]
+ boost/iostreams/detail/call_traits.hpp [1:4]
+ boost/iostreams/detail/char_traits.hpp [1:4]
+ boost/iostreams/detail/codecvt_helper.hpp [1:4]
+ boost/iostreams/detail/codecvt_holder.hpp [1:4]
+ boost/iostreams/detail/config/auto_link.hpp [1:4]
+ boost/iostreams/detail/config/bzip2.hpp [1:4]
+ boost/iostreams/detail/config/codecvt.hpp [1:4]
+ boost/iostreams/detail/config/disable_warnings.hpp [1:4]
+ boost/iostreams/detail/config/dyn_link.hpp [1:4]
+ boost/iostreams/detail/config/enable_warnings.hpp [1:4]
+ boost/iostreams/detail/config/gcc.hpp [1:4]
+ boost/iostreams/detail/config/limits.hpp [1:4]
+ boost/iostreams/detail/config/overload_resolution.hpp [1:4]
+ boost/iostreams/detail/config/wide_streams.hpp [1:4]
+ boost/iostreams/detail/config/zlib.hpp [1:4]
+ boost/iostreams/detail/dispatch.hpp [1:4]
+ boost/iostreams/detail/enable_if_stream.hpp [1:4]
+ boost/iostreams/detail/error.hpp [1:4]
+ boost/iostreams/detail/forward.hpp [1:4]
+ boost/iostreams/detail/fstream.hpp [1:4]
+ boost/iostreams/detail/ios.hpp [1:4]
+ boost/iostreams/detail/iostream.hpp [1:4]
+ boost/iostreams/detail/is_iterator_range.hpp [1:4]
+ boost/iostreams/detail/param_type.hpp [1:4]
+ boost/iostreams/detail/push.hpp [1:4]
+ boost/iostreams/detail/push_params.hpp [1:4]
+ boost/iostreams/detail/resolve.hpp [1:4]
+ boost/iostreams/detail/select.hpp [1:4]
+ boost/iostreams/detail/streambuf.hpp [1:4]
+ boost/iostreams/detail/streambuf/chainbuf.hpp [1:4]
+ boost/iostreams/detail/streambuf/direct_streambuf.hpp [1:4]
+ boost/iostreams/detail/streambuf/indirect_streambuf.hpp [1:4]
+ boost/iostreams/detail/streambuf/linked_streambuf.hpp [1:4]
+ boost/iostreams/detail/template_params.hpp [1:4]
+ boost/iostreams/detail/translate_int_type.hpp [1:4]
+ boost/iostreams/detail/wrap_unwrap.hpp [1:4]
+ boost/iostreams/device/back_inserter.hpp [1:4]
+ boost/iostreams/device/file.hpp [1:4]
+ boost/iostreams/device/file_descriptor.hpp [1:4]
+ boost/iostreams/filter/aggregate.hpp [1:4]
+ boost/iostreams/filter/bzip2.hpp [1:4]
+ boost/iostreams/filter/gzip.hpp [1:4]
+ boost/iostreams/filter/newline.hpp [1:4]
+ boost/iostreams/filter/regex.hpp [1:4]
+ boost/iostreams/filter/symmetric.hpp [1:4]
+ boost/iostreams/filter/zlib.hpp [1:4]
+ boost/iostreams/filtering_streambuf.hpp [1:4]
+ boost/iostreams/flush.hpp [1:4]
+ boost/iostreams/imbue.hpp [1:4]
+ boost/iostreams/input_sequence.hpp [1:4]
+ boost/iostreams/invert.hpp [1:4]
+ boost/iostreams/operations_fwd.hpp [1:4]
+ boost/iostreams/optimal_buffer_size.hpp [1:4]
+ boost/iostreams/output_sequence.hpp [1:4]
+ boost/iostreams/pipeline.hpp [1:4]
+ boost/iostreams/positioning.hpp [1:4]
+ boost/iostreams/seek.hpp [1:4]
+ boost/iostreams/skip.hpp [1:4]
+ boost/iostreams/stream.hpp [1:4]
+ boost/iostreams/stream_buffer.hpp [1:4]
+ boost/iostreams/traits.hpp [1:4]
+ boost/iostreams/traits_fwd.hpp [1:4]
+ boost/iostreams/write.hpp [1:4]
+ libs/iostreams/src/bzip2.cpp [1:4]
+ libs/iostreams/src/file_descriptor.cpp [1:4]
+ libs/iostreams/src/gzip.cpp [1:4]
+ libs/iostreams/src/zlib.cpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 127686edf197d40f94d17cffcf6f5c4f
+BELONGS ya.make
+ License text:
+ Copyright 2010-2012 Karsten Ahnert
+ Copyright 2010-2013 Mario Mulansky
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/algebra/default_operations.hpp [9:10]
+ boost/numeric/odeint/algebra/detail/for_each.hpp [9:10]
+ boost/numeric/odeint/algebra/detail/macros.hpp [9:10]
+ boost/numeric/odeint/algebra/vector_space_algebra.hpp [9:10]
+ boost/numeric/odeint/external/thrust/thrust_operations.hpp [9:10]
+ boost/numeric/odeint/stepper/implicit_euler.hpp [9:11]
+ boost/numeric/odeint/stepper/stepper_categories.hpp [9:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL 127ca1debadc86c9870fadcd69654480
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
+ // Copyright 2004-2005 Peter Dimov
+ // Copyright 2007-2012 Ion Gaztanaga
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/interprocess/smart_ptr/detail/sp_counted_base_atomic.hpp [12:14]
+ boost/interprocess/smart_ptr/detail/sp_counted_impl.hpp [16:18]
+ boost/serialization/detail/shared_count_132.hpp [13:13]
+ boost/smart_ptr/bad_weak_ptr.hpp [13:13]
+ boost/smart_ptr/detail/shared_count.hpp [13:14]
+ boost/smart_ptr/detail/sp_counted_base_aix.hpp [8:10]
+ boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp [13:14]
+ boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp [13:15]
+ boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp [7:9]
+ boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp [13:14]
+ boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp [13:14]
+ boost/smart_ptr/detail/sp_counted_base_nt.hpp [13:14]
+ boost/smart_ptr/detail/sp_counted_base_pt.hpp [13:14]
+ boost/smart_ptr/detail/sp_counted_base_solaris.hpp [8:10]
+ boost/smart_ptr/detail/sp_counted_base_spin.hpp [13:14]
+ boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp [8:11]
+ boost/smart_ptr/detail/sp_counted_base_w32.hpp [13:14]
+ boost/smart_ptr/detail/sp_counted_impl.hpp [13:14]
+
+KEEP COPYRIGHT_SERVICE_LABEL 12ca7f7ec40c36a05a70ff3f155d83bc
+BELONGS ya.make
+ License text:
+ Copyright (c) 2007-2011 Hartmut Kaiser
+ Copyright (c) Christopher Diggins 2005
+ Copyright (c) Pablo Aguilar 2005
+ Copyright (c) Kevlin Henney 2001
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/support/detail/hold_any.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 13087fd87820c611025de1f0f3ef01bf
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/container_fwd.hpp at line 4
+ License text:
+ // Copyright 2005-2011 Daniel James.
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/detail/container_fwd.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 131a38df1eeda4b85ac98993b4ee9713
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001-2004 Peter Dimov and Multi Media Ltd.
+ // Copyright (c) 2001 David Abrahams
+ // Copyright (c) 2005 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/bind/bind.hpp [13:15]
+ boost/bind/mem_fn.hpp [13:15]
+
+KEEP COPYRIGHT_SERVICE_LABEL 137964c7b2b6263415eb6109939370d9
+BELONGS ya.make
+ License text:
+ // This file was modified by Oracle on 2013, 2014.
+ // Modifications copyright (c) 2013, 2014 Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/multi/algorithms/covered_by.hpp [8:9]
+ boost/geometry/multi/algorithms/within.hpp [8:9]
+
+KEEP COPYRIGHT_SERVICE_LABEL 137f142bceff932c328791882d8815c5
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2000 Stephen Cleary
+ // Copyright (C) 2008 Ion Gaztanaga
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/container/detail/singleton.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1388a67a310afe61a99a5f1d1a487e61
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2012 Barend Gehrels, Amsterdam, the Netherlands.
+ // Copyright (c) 2012 Bruno Lalande, Paris, France.
+ // Copyright (c) 2012 Mateusz Loskot, London, UK.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/util/bare_type.hpp [3:5]
+ boost/geometry/util/calculation_type.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 139227f655286fca021562ae1922e833
+BELONGS ya.make
+ License text:
+ // Copyright Robert Ramey 2007. Changes made to permit
+ // application throughout the serialization library.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/serialization/singleton.hpp [9:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL 14119de8db705578a517c134230e8e03
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/reference_traits.hpp at line 4
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_traits/reference_traits.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 142fae03f8cf7efe4031b5048d19b839
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/policies/robustness/get_rescale_policy.hpp [3:6]
+ boost/geometry/policies/robustness/rescale_policy.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 14331b282bfa08584de4f520cfbc1275
+BELONGS libs/system/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/system/detail/error_code.ipp at line 6, libs/system/src/error_code.cpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/system/detail/error_code.ipp [3:6]
+ libs/system/src/error_code.cpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 14ba6239150c08643e3cb26043015c00
+BELONGS ya.make
+ License text:
+ * Copyright 2013 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/winapi/thread_pool.hpp [2:2]
+ boost/winapi/tls.hpp [2:2]
+ boost/winapi/waitable_timer.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 14ca74a6c57686dced35dc7c6c99c615
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2012 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/detail/delete.hpp [1:1]
+ boost/thread/detail/invoker.hpp [1:1]
+ boost/thread/detail/log.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 14effa07ccbb9b0cc19de7fad21ff8f9
+BELONGS ya.make
+ License text:
+ // This file was modified by Oracle on 2014.
+ // Modifications copyright (c) 2014 Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/centroid/translating_transformer.hpp [8:9]
+ boost/geometry/core/closure.hpp [7:8]
+ boost/geometry/core/point_order.hpp [7:8]
+ boost/geometry/core/radius.hpp [7:8]
+ boost/geometry/core/tags.hpp [7:8]
+ boost/geometry/strategies/agnostic/hull_graham_andrew.hpp [5:6]
+ boost/geometry/strategies/concepts/convex_hull_concept.hpp [7:8]
+ boost/geometry/util/bare_type.hpp [7:8]
+ boost/geometry/util/select_calculation_type.hpp [7:8]
+ boost/geometry/util/select_coordinate_type.hpp [7:8]
+ boost/geometry/util/select_most_precise.hpp [7:8]
+ boost/geometry/views/detail/normalized_view.hpp [7:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1503802c606bb498fc119fbf3329ccce
+BELONGS ya.make
+ License text:
+ // Copyright (c) Jeremy Siek 2001
+ // Copyright (c) Douglas Gregor 2004
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/biconnected_components.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 15236ff1a242179fe99b3db6441bef51
+BELONGS ya.make
+ License text:
+ // Copyright Howard Hinnant 2007-2010.
+ // Copyright Vicente J. Botet Escriba 2012.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/v2/shared_mutex.hpp [6:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1526a00d8f41c15b39466eff919d34bc
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/numpy/config.hpp at line 3
+ License text:
+ // (C) Copyright Samuli-Petrus Korhonen 2017.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/python/numpy/config.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1545e811e1799589fc4bdfed4fdc284f
+BELONGS ya.make
+ License text:
+ // Copyright Aleksey Gurtovoy 2000-2004
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/O1_size.hpp [5:5]
+ boost/mpl/O1_size_fwd.hpp [5:5]
+ boost/mpl/advance.hpp [5:5]
+ boost/mpl/advance_fwd.hpp [5:5]
+ boost/mpl/alias.hpp [5:5]
+ boost/mpl/and.hpp [5:5]
+ boost/mpl/apply.hpp [9:9]
+ boost/mpl/apply_fwd.hpp [9:9]
+ boost/mpl/arithmetic.hpp [5:5]
+ boost/mpl/at.hpp [5:5]
+ boost/mpl/at_fwd.hpp [5:5]
+ boost/mpl/aux_/O1_size_impl.hpp [5:5]
+ boost/mpl/aux_/advance_backward.hpp [9:9]
+ boost/mpl/aux_/advance_forward.hpp [9:9]
+ boost/mpl/aux_/arithmetic_op.hpp [4:4]
+ boost/mpl/aux_/at_impl.hpp [5:5]
+ boost/mpl/aux_/back_impl.hpp [5:5]
+ boost/mpl/aux_/begin_end_impl.hpp [5:5]
+ boost/mpl/aux_/clear_impl.hpp [5:5]
+ boost/mpl/aux_/comparison_op.hpp [4:4]
+ boost/mpl/aux_/config/ctps.hpp [5:5]
+ boost/mpl/aux_/config/msvc_typename.hpp [5:5]
+ boost/mpl/aux_/config/preprocessor.hpp [5:5]
+ boost/mpl/aux_/config/static_constant.hpp [5:5]
+ boost/mpl/aux_/config/ttp.hpp [5:5]
+ boost/mpl/aux_/config/use_preprocessed.hpp [5:5]
+ boost/mpl/aux_/count_args.hpp [4:4]
+ boost/mpl/aux_/count_impl.hpp [5:5]
+ boost/mpl/aux_/empty_impl.hpp [5:5]
+ boost/mpl/aux_/erase_impl.hpp [5:5]
+ boost/mpl/aux_/erase_key_impl.hpp [5:5]
+ boost/mpl/aux_/filter_iter.hpp [5:5]
+ boost/mpl/aux_/find_if_pred.hpp [5:6]
+ boost/mpl/aux_/fold_impl.hpp [5:5]
+ boost/mpl/aux_/fold_impl_body.hpp [6:6]
+ boost/mpl/aux_/front_impl.hpp [5:5]
+ boost/mpl/aux_/insert_impl.hpp [5:5]
+ boost/mpl/aux_/insert_range_impl.hpp [5:5]
+ boost/mpl/aux_/iter_fold_impl.hpp [5:5]
+ boost/mpl/aux_/joint_iter.hpp [5:5]
+ boost/mpl/aux_/lambda_no_ctps.hpp [9:9]
+ boost/mpl/aux_/largest_int.hpp [5:5]
+ boost/mpl/aux_/logical_op.hpp [2:2]
+ boost/mpl/aux_/msvc_dtw.hpp [2:2]
+ boost/mpl/aux_/msvc_never_true.hpp [5:5]
+ boost/mpl/aux_/nested_type_wknd.hpp [5:5]
+ boost/mpl/aux_/numeric_op.hpp [8:8]
+ boost/mpl/aux_/pop_back_impl.hpp [5:5]
+ boost/mpl/aux_/pop_front_impl.hpp [5:5]
+ boost/mpl/aux_/preprocessed/bcc/advance_backward.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc/advance_forward.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc/and.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc/apply.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc/apply_fwd.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc/bind_fwd.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc/bitand.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc/bitor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc/bitxor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc/deque.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc/divides.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc/equal_to.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc/fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc/greater.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc/greater_equal.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc/iter_fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc/lambda_no_ctps.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc/less.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc/less_equal.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc/list.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc/list_c.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc/map.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc/minus.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc/modulus.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc/not_equal_to.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc/or.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc/plus.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc/reverse_fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc/reverse_iter_fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc/set.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc/set_c.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc/shift_left.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc/shift_right.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc/times.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc/vector.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/advance_backward.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/advance_forward.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/and.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/apply.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/apply_fwd.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/apply_wrap.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/bind_fwd.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/bitand.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc551/bitor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc551/bitxor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc551/deque.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/divides.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/equal_to.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/greater.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/greater_equal.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/iter_fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/lambda_no_ctps.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/less.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/less_equal.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/list.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/list_c.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/map.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/minus.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/modulus.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/not_equal_to.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/or.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/plus.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/quote.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/reverse_fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/reverse_iter_fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/set.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/set_c.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/shift_left.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc551/shift_right.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc551/times.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/vector.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/vector_c.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/advance_backward.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/advance_forward.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/and.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/apply.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/apply_fwd.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/bind_fwd.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/bitand.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc_pre590/bitor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc_pre590/bitxor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc_pre590/deque.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/divides.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/equal_to.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/greater.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/greater_equal.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/lambda_no_ctps.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/less.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/less_equal.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/list.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/list_c.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/map.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/minus.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/modulus.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/not_equal_to.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/or.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/plus.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/reverse_fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/reverse_iter_fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/set.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/set_c.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/shift_left.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc_pre590/shift_right.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc_pre590/times.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/vector.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/advance_backward.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/advance_forward.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/and.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/apply.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/apply_fwd.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/apply_wrap.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/bind_fwd.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/bitand.hpp [2:3]
+ boost/mpl/aux_/preprocessed/dmc/bitor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/dmc/bitxor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/dmc/deque.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/divides.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/equal_to.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/greater.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/greater_equal.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/iter_fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/lambda_no_ctps.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/less.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/less_equal.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/list.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/list_c.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/map.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/minus.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/modulus.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/not_equal_to.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/or.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/plus.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/quote.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/reverse_fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/reverse_iter_fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/set.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/set_c.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/shift_left.hpp [2:3]
+ boost/mpl/aux_/preprocessed/dmc/shift_right.hpp [2:3]
+ boost/mpl/aux_/preprocessed/dmc/times.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/vector.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/vector_c.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/advance_backward.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/advance_forward.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/and.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/apply.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/bitand.hpp [2:3]
+ boost/mpl/aux_/preprocessed/gcc/bitor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/gcc/bitxor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/gcc/deque.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/divides.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/equal_to.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/greater.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/greater_equal.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/iter_fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/less.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/less_equal.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/list.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/list_c.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/map.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/minus.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/modulus.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/not_equal_to.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/or.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/plus.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/quote.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/reverse_iter_fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/set.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/set_c.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/shift_left.hpp [2:3]
+ boost/mpl/aux_/preprocessed/gcc/shift_right.hpp [2:3]
+ boost/mpl/aux_/preprocessed/gcc/times.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/vector.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/vector_c.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/advance_backward.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/advance_forward.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/and.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/apply.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/apply_fwd.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/apply_wrap.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/bind_fwd.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/bitand.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc60/bitor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc60/bitxor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc60/deque.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/divides.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/equal_to.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/greater.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/greater_equal.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/iter_fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/lambda_no_ctps.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/less.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/less_equal.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/list.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/list_c.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/map.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/minus.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/modulus.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/not_equal_to.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/or.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/plus.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/quote.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/reverse_fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/reverse_iter_fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/set.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/set_c.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/shift_left.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc60/shift_right.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc60/times.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/vector.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/vector_c.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/advance_backward.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/advance_forward.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/and.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/apply.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/apply_fwd.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/apply_wrap.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/bind_fwd.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/bitand.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc70/bitor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc70/bitxor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc70/deque.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/divides.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/equal_to.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/greater.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/greater_equal.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/iter_fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/lambda_no_ctps.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/less.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/less_equal.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/list.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/list_c.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/map.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/minus.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/modulus.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/not_equal_to.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/or.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/plus.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/quote.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/reverse_fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/reverse_iter_fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/set.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/set_c.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/shift_left.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc70/shift_right.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc70/times.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/vector.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/vector_c.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/advance_backward.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/advance_forward.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/and.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/apply.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/apply_fwd.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/apply_wrap.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/bind_fwd.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/bitand.hpp [2:3]
+ boost/mpl/aux_/preprocessed/mwcw/bitor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/mwcw/bitxor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/mwcw/deque.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/divides.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/equal_to.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/greater.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/greater_equal.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/iter_fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/lambda_no_ctps.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/less.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/less_equal.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/list.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/list_c.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/map.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/minus.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/modulus.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/not_equal_to.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/or.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/plus.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/quote.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/reverse_fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/reverse_iter_fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/set.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/set_c.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/shift_left.hpp [2:3]
+ boost/mpl/aux_/preprocessed/mwcw/shift_right.hpp [2:3]
+ boost/mpl/aux_/preprocessed/mwcw/times.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/vector.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/vector_c.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/advance_backward.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/advance_forward.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/and.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/apply.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/apply_fwd.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/apply_wrap.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/bind_fwd.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/bitand.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ctps/bitor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ctps/bitxor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ctps/deque.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/divides.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/equal_to.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/greater.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/greater_equal.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/iter_fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/lambda_no_ctps.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/less.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/less_equal.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/list.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/list_c.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/map.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/minus.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/modulus.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/not_equal_to.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/or.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/plus.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/quote.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/reverse_fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/reverse_iter_fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/set.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/set_c.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/shift_left.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ctps/shift_right.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ctps/times.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/vector.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/vector_c.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/advance_backward.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/advance_forward.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/and.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/apply.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/apply_fwd.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/apply_wrap.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/bind_fwd.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/bitand.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ttp/bitor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ttp/bitxor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ttp/deque.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/divides.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/equal_to.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/greater.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/greater_equal.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/iter_fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/lambda_no_ctps.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/less.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/less_equal.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/list.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/list_c.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/map.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/minus.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/modulus.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/not_equal_to.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/or.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/plus.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/quote.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/reverse_fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/reverse_iter_fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/set.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/set_c.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/shift_left.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ttp/shift_right.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ttp/times.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/vector.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/vector_c.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/advance_backward.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/advance_forward.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/and.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/apply.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/apply_fwd.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/apply_wrap.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/bind_fwd.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/bitand.hpp [2:3]
+ boost/mpl/aux_/preprocessed/plain/bitor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/plain/bitxor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/plain/deque.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/divides.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/equal_to.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/greater.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/greater_equal.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/iter_fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/lambda_no_ctps.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/less.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/less_equal.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/list.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/list_c.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/map.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/minus.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/modulus.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/not_equal_to.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/or.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/plus.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/quote.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/reverse_fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/reverse_iter_fold_impl.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/set.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/set_c.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/shift_left.hpp [2:3]
+ boost/mpl/aux_/preprocessed/plain/shift_right.hpp [2:3]
+ boost/mpl/aux_/preprocessed/plain/times.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/vector.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/vector_c.hpp [2:2]
+ boost/mpl/aux_/preprocessor/def_params_tail.hpp [5:5]
+ boost/mpl/aux_/preprocessor/enum.hpp [5:5]
+ boost/mpl/aux_/preprocessor/ext_params.hpp [5:5]
+ boost/mpl/aux_/preprocessor/filter_params.hpp [5:5]
+ boost/mpl/aux_/preprocessor/params.hpp [5:5]
+ boost/mpl/aux_/preprocessor/partial_spec_params.hpp [5:5]
+ boost/mpl/aux_/range_c/O1_size.hpp [5:5]
+ boost/mpl/aux_/range_c/back.hpp [5:5]
+ boost/mpl/aux_/range_c/empty.hpp [5:5]
+ boost/mpl/aux_/range_c/front.hpp [5:5]
+ boost/mpl/aux_/range_c/iterator.hpp [5:5]
+ boost/mpl/aux_/range_c/size.hpp [5:5]
+ boost/mpl/aux_/range_c/tag.hpp [5:5]
+ boost/mpl/aux_/reverse_fold_impl.hpp [5:5]
+ boost/mpl/aux_/reverse_fold_impl_body.hpp [6:6]
+ boost/mpl/aux_/reverse_iter_fold_impl.hpp [5:5]
+ boost/mpl/aux_/shift_op.hpp [4:4]
+ boost/mpl/aux_/single_element_iter.hpp [5:5]
+ boost/mpl/aux_/size_impl.hpp [5:5]
+ boost/mpl/aux_/transform_iter.hpp [5:5]
+ boost/mpl/aux_/type_wrapper.hpp [5:6]
+ boost/mpl/aux_/value_wknd.hpp [5:5]
+ boost/mpl/aux_/yes_no.hpp [5:5]
+ boost/mpl/back.hpp [5:5]
+ boost/mpl/back_fwd.hpp [5:5]
+ boost/mpl/base.hpp [5:5]
+ boost/mpl/begin_end.hpp [5:5]
+ boost/mpl/begin_end_fwd.hpp [5:5]
+ boost/mpl/bind_fwd.hpp [9:9]
+ boost/mpl/bitxor.hpp [5:6]
+ boost/mpl/bool.hpp [5:5]
+ boost/mpl/bool_fwd.hpp [5:5]
+ boost/mpl/clear.hpp [5:5]
+ boost/mpl/clear_fwd.hpp [5:5]
+ boost/mpl/comparison.hpp [5:5]
+ boost/mpl/copy.hpp [5:6]
+ boost/mpl/copy_if.hpp [5:6]
+ boost/mpl/count.hpp [5:5]
+ boost/mpl/count_fwd.hpp [5:5]
+ boost/mpl/deque.hpp [5:5]
+ boost/mpl/distance.hpp [5:5]
+ boost/mpl/distance_fwd.hpp [5:5]
+ boost/mpl/divides.hpp [5:5]
+ boost/mpl/empty.hpp [5:5]
+ boost/mpl/empty_fwd.hpp [5:5]
+ boost/mpl/equal.hpp [5:5]
+ boost/mpl/equal_to.hpp [5:5]
+ boost/mpl/erase.hpp [5:5]
+ boost/mpl/erase_fwd.hpp [5:5]
+ boost/mpl/erase_key.hpp [5:5]
+ boost/mpl/erase_key_fwd.hpp [5:5]
+ boost/mpl/eval_if.hpp [5:5]
+ boost/mpl/filter_view.hpp [5:5]
+ boost/mpl/find_if.hpp [5:5]
+ boost/mpl/front.hpp [5:5]
+ boost/mpl/front_fwd.hpp [5:5]
+ boost/mpl/greater.hpp [5:5]
+ boost/mpl/greater_equal.hpp [5:5]
+ boost/mpl/identity.hpp [5:5]
+ boost/mpl/if.hpp [5:5]
+ boost/mpl/insert.hpp [5:5]
+ boost/mpl/insert_fwd.hpp [5:5]
+ boost/mpl/insert_range.hpp [5:5]
+ boost/mpl/insert_range_fwd.hpp [5:5]
+ boost/mpl/int.hpp [5:5]
+ boost/mpl/int_fwd.hpp [5:5]
+ boost/mpl/iterator_category.hpp [5:5]
+ boost/mpl/iterator_tags.hpp [5:5]
+ boost/mpl/joint_view.hpp [5:5]
+ boost/mpl/less.hpp [5:5]
+ boost/mpl/less_equal.hpp [5:5]
+ boost/mpl/limits/arity.hpp [5:5]
+ boost/mpl/limits/list.hpp [5:5]
+ boost/mpl/limits/map.hpp [5:5]
+ boost/mpl/limits/set.hpp [5:5]
+ boost/mpl/limits/unrolling.hpp [5:5]
+ boost/mpl/limits/vector.hpp [5:5]
+ boost/mpl/list.hpp [5:5]
+ boost/mpl/list/aux_/O1_size.hpp [5:5]
+ boost/mpl/list/aux_/begin_end.hpp [5:5]
+ boost/mpl/list/aux_/clear.hpp [5:5]
+ boost/mpl/list/aux_/empty.hpp [5:5]
+ boost/mpl/list/aux_/front.hpp [5:5]
+ boost/mpl/list/aux_/item.hpp [5:5]
+ boost/mpl/list/aux_/iterator.hpp [5:5]
+ boost/mpl/list/aux_/numbered.hpp [4:5]
+ boost/mpl/list/aux_/numbered_c.hpp [4:4]
+ boost/mpl/list/aux_/pop_front.hpp [5:5]
+ boost/mpl/list/aux_/preprocessed/plain/list10.hpp [2:2]
+ boost/mpl/list/aux_/preprocessed/plain/list10_c.hpp [2:2]
+ boost/mpl/list/aux_/preprocessed/plain/list20.hpp [2:2]
+ boost/mpl/list/aux_/preprocessed/plain/list20_c.hpp [2:2]
+ boost/mpl/list/aux_/preprocessed/plain/list30.hpp [2:2]
+ boost/mpl/list/aux_/preprocessed/plain/list30_c.hpp [2:2]
+ boost/mpl/list/aux_/preprocessed/plain/list40.hpp [2:2]
+ boost/mpl/list/aux_/preprocessed/plain/list40_c.hpp [2:2]
+ boost/mpl/list/aux_/preprocessed/plain/list50.hpp [2:2]
+ boost/mpl/list/aux_/preprocessed/plain/list50_c.hpp [2:2]
+ boost/mpl/list/aux_/push_back.hpp [5:5]
+ boost/mpl/list/aux_/push_front.hpp [5:5]
+ boost/mpl/list/aux_/size.hpp [5:5]
+ boost/mpl/list/aux_/tag.hpp [5:5]
+ boost/mpl/list/list0.hpp [5:5]
+ boost/mpl/list/list0_c.hpp [5:5]
+ boost/mpl/list/list10.hpp [5:5]
+ boost/mpl/list/list10_c.hpp [5:5]
+ boost/mpl/list/list20.hpp [5:5]
+ boost/mpl/list/list20_c.hpp [5:5]
+ boost/mpl/list/list30.hpp [5:5]
+ boost/mpl/list/list30_c.hpp [5:5]
+ boost/mpl/list/list40.hpp [5:5]
+ boost/mpl/list/list40_c.hpp [5:5]
+ boost/mpl/list/list50.hpp [5:5]
+ boost/mpl/list/list50_c.hpp [5:5]
+ boost/mpl/list_c.hpp [5:5]
+ boost/mpl/logical.hpp [5:5]
+ boost/mpl/long.hpp [5:5]
+ boost/mpl/long_fwd.hpp [5:5]
+ boost/mpl/map.hpp [5:5]
+ boost/mpl/map/aux_/numbered.hpp [6:6]
+ boost/mpl/map/aux_/preprocessed/no_ctps/map10.hpp [2:3]
+ boost/mpl/map/aux_/preprocessed/no_ctps/map20.hpp [2:3]
+ boost/mpl/map/aux_/preprocessed/no_ctps/map30.hpp [2:3]
+ boost/mpl/map/aux_/preprocessed/no_ctps/map40.hpp [2:3]
+ boost/mpl/map/aux_/preprocessed/no_ctps/map50.hpp [2:3]
+ boost/mpl/map/aux_/preprocessed/plain/map10.hpp [2:3]
+ boost/mpl/map/aux_/preprocessed/plain/map20.hpp [2:3]
+ boost/mpl/map/aux_/preprocessed/plain/map30.hpp [2:3]
+ boost/mpl/map/aux_/preprocessed/plain/map40.hpp [2:3]
+ boost/mpl/map/aux_/preprocessed/plain/map50.hpp [2:3]
+ boost/mpl/map/aux_/preprocessed/typeof_based/map10.hpp [2:3]
+ boost/mpl/map/aux_/preprocessed/typeof_based/map20.hpp [2:3]
+ boost/mpl/map/aux_/preprocessed/typeof_based/map30.hpp [2:3]
+ boost/mpl/map/aux_/preprocessed/typeof_based/map40.hpp [2:3]
+ boost/mpl/map/aux_/preprocessed/typeof_based/map50.hpp [2:3]
+ boost/mpl/map/map10.hpp [5:6]
+ boost/mpl/map/map20.hpp [5:6]
+ boost/mpl/map/map30.hpp [5:6]
+ boost/mpl/map/map40.hpp [5:6]
+ boost/mpl/map/map50.hpp [5:6]
+ boost/mpl/math/fixed_c.hpp [5:5]
+ boost/mpl/math/is_even.hpp [5:5]
+ boost/mpl/math/rational_c.hpp [5:5]
+ boost/mpl/max_element.hpp [5:5]
+ boost/mpl/minus.hpp [5:5]
+ boost/mpl/modulus.hpp [5:5]
+ boost/mpl/multiplies.hpp [5:5]
+ boost/mpl/negate.hpp [5:5]
+ boost/mpl/next_prior.hpp [5:5]
+ boost/mpl/not.hpp [5:5]
+ boost/mpl/not_equal_to.hpp [5:5]
+ boost/mpl/or.hpp [5:5]
+ boost/mpl/plus.hpp [5:5]
+ boost/mpl/pop_back.hpp [5:5]
+ boost/mpl/pop_back_fwd.hpp [5:5]
+ boost/mpl/pop_front.hpp [5:5]
+ boost/mpl/pop_front_fwd.hpp [5:5]
+ boost/mpl/push_back.hpp [5:5]
+ boost/mpl/push_back_fwd.hpp [5:5]
+ boost/mpl/push_front.hpp [5:5]
+ boost/mpl/push_front_fwd.hpp [5:5]
+ boost/mpl/range_c.hpp [5:5]
+ boost/mpl/remove.hpp [5:6]
+ boost/mpl/remove_if.hpp [5:6]
+ boost/mpl/replace.hpp [5:7]
+ boost/mpl/replace_if.hpp [5:7]
+ boost/mpl/reverse.hpp [5:5]
+ boost/mpl/same_as.hpp [5:5]
+ boost/mpl/sequence_tag.hpp [5:5]
+ boost/mpl/sequence_tag_fwd.hpp [5:5]
+ boost/mpl/set.hpp [5:5]
+ boost/mpl/set/aux_/numbered.hpp [6:6]
+ boost/mpl/set/aux_/numbered_c.hpp [6:6]
+ boost/mpl/set/aux_/preprocessed/plain/set10.hpp [2:3]
+ boost/mpl/set/aux_/preprocessed/plain/set10_c.hpp [2:3]
+ boost/mpl/set/aux_/preprocessed/plain/set20.hpp [2:3]
+ boost/mpl/set/aux_/preprocessed/plain/set20_c.hpp [2:3]
+ boost/mpl/set/aux_/preprocessed/plain/set30.hpp [2:3]
+ boost/mpl/set/aux_/preprocessed/plain/set30_c.hpp [2:3]
+ boost/mpl/set/aux_/preprocessed/plain/set40.hpp [2:3]
+ boost/mpl/set/aux_/preprocessed/plain/set40_c.hpp [2:3]
+ boost/mpl/set/aux_/preprocessed/plain/set50.hpp [2:3]
+ boost/mpl/set/aux_/preprocessed/plain/set50_c.hpp [2:3]
+ boost/mpl/set/set10.hpp [5:6]
+ boost/mpl/set/set10_c.hpp [5:6]
+ boost/mpl/set/set20.hpp [5:6]
+ boost/mpl/set/set20_c.hpp [5:6]
+ boost/mpl/set/set30.hpp [5:6]
+ boost/mpl/set/set30_c.hpp [5:6]
+ boost/mpl/set/set40.hpp [5:6]
+ boost/mpl/set/set40_c.hpp [5:6]
+ boost/mpl/set/set50.hpp [5:6]
+ boost/mpl/set/set50_c.hpp [5:6]
+ boost/mpl/set_c.hpp [5:5]
+ boost/mpl/shift_left.hpp [5:6]
+ boost/mpl/shift_right.hpp [5:6]
+ boost/mpl/single_view.hpp [5:5]
+ boost/mpl/size.hpp [5:5]
+ boost/mpl/size_fwd.hpp [5:5]
+ boost/mpl/size_t.hpp [5:5]
+ boost/mpl/size_t_fwd.hpp [5:5]
+ boost/mpl/times.hpp [5:5]
+ boost/mpl/transform.hpp [5:6]
+ boost/mpl/transform_view.hpp [5:5]
+ boost/mpl/unique.hpp [5:6]
+ boost/mpl/vector.hpp [5:5]
+ boost/mpl/vector/aux_/O1_size.hpp [5:5]
+ boost/mpl/vector/aux_/at.hpp [5:5]
+ boost/mpl/vector/aux_/back.hpp [5:5]
+ boost/mpl/vector/aux_/begin_end.hpp [5:5]
+ boost/mpl/vector/aux_/clear.hpp [5:5]
+ boost/mpl/vector/aux_/empty.hpp [5:5]
+ boost/mpl/vector/aux_/item.hpp [5:5]
+ boost/mpl/vector/aux_/iterator.hpp [5:5]
+ boost/mpl/vector/aux_/numbered.hpp [6:6]
+ boost/mpl/vector/aux_/numbered_c.hpp [6:6]
+ boost/mpl/vector/aux_/pop_back.hpp [5:5]
+ boost/mpl/vector/aux_/pop_front.hpp [5:5]
+ boost/mpl/vector/aux_/preprocessed/no_ctps/vector10.hpp [2:2]
+ boost/mpl/vector/aux_/preprocessed/no_ctps/vector10_c.hpp [2:2]
+ boost/mpl/vector/aux_/preprocessed/no_ctps/vector20.hpp [2:2]
+ boost/mpl/vector/aux_/preprocessed/no_ctps/vector20_c.hpp [2:2]
+ boost/mpl/vector/aux_/preprocessed/no_ctps/vector30.hpp [2:2]
+ boost/mpl/vector/aux_/preprocessed/no_ctps/vector30_c.hpp [2:2]
+ boost/mpl/vector/aux_/preprocessed/no_ctps/vector40.hpp [2:2]
+ boost/mpl/vector/aux_/preprocessed/no_ctps/vector40_c.hpp [2:2]
+ boost/mpl/vector/aux_/preprocessed/no_ctps/vector50.hpp [2:2]
+ boost/mpl/vector/aux_/preprocessed/no_ctps/vector50_c.hpp [2:2]
+ boost/mpl/vector/aux_/preprocessed/plain/vector10.hpp [2:2]
+ boost/mpl/vector/aux_/preprocessed/plain/vector10_c.hpp [2:2]
+ boost/mpl/vector/aux_/preprocessed/plain/vector20.hpp [2:2]
+ boost/mpl/vector/aux_/preprocessed/plain/vector20_c.hpp [2:2]
+ boost/mpl/vector/aux_/preprocessed/plain/vector30.hpp [2:2]
+ boost/mpl/vector/aux_/preprocessed/plain/vector30_c.hpp [2:2]
+ boost/mpl/vector/aux_/preprocessed/plain/vector40.hpp [2:2]
+ boost/mpl/vector/aux_/preprocessed/plain/vector40_c.hpp [2:2]
+ boost/mpl/vector/aux_/preprocessed/plain/vector50.hpp [2:2]
+ boost/mpl/vector/aux_/preprocessed/plain/vector50_c.hpp [2:2]
+ boost/mpl/vector/aux_/preprocessed/typeof_based/vector10.hpp [2:2]
+ boost/mpl/vector/aux_/preprocessed/typeof_based/vector10_c.hpp [2:2]
+ boost/mpl/vector/aux_/preprocessed/typeof_based/vector20.hpp [2:2]
+ boost/mpl/vector/aux_/preprocessed/typeof_based/vector20_c.hpp [2:2]
+ boost/mpl/vector/aux_/preprocessed/typeof_based/vector30.hpp [2:2]
+ boost/mpl/vector/aux_/preprocessed/typeof_based/vector30_c.hpp [2:2]
+ boost/mpl/vector/aux_/preprocessed/typeof_based/vector40.hpp [2:2]
+ boost/mpl/vector/aux_/preprocessed/typeof_based/vector40_c.hpp [2:2]
+ boost/mpl/vector/aux_/preprocessed/typeof_based/vector50.hpp [2:2]
+ boost/mpl/vector/aux_/preprocessed/typeof_based/vector50_c.hpp [2:2]
+ boost/mpl/vector/aux_/push_back.hpp [5:5]
+ boost/mpl/vector/aux_/push_front.hpp [5:5]
+ boost/mpl/vector/aux_/size.hpp [5:5]
+ boost/mpl/vector/aux_/tag.hpp [5:5]
+ boost/mpl/vector/aux_/vector0.hpp [5:5]
+ boost/mpl/vector/vector0.hpp [5:5]
+ boost/mpl/vector/vector0_c.hpp [5:5]
+ boost/mpl/vector/vector10.hpp [5:5]
+ boost/mpl/vector/vector10_c.hpp [5:5]
+ boost/mpl/vector/vector20.hpp [5:5]
+ boost/mpl/vector/vector20_c.hpp [5:5]
+ boost/mpl/vector/vector30.hpp [5:5]
+ boost/mpl/vector/vector30_c.hpp [5:5]
+ boost/mpl/vector/vector40.hpp [5:5]
+ boost/mpl/vector/vector40_c.hpp [5:5]
+ boost/mpl/vector/vector50.hpp [5:5]
+ boost/mpl/vector/vector50_c.hpp [5:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 15ae8814b00bf7c2e807dfdd8c253473
+BELONGS ya.make
+ License text:
+ * Copyright (c) 1998
+ * Silicon Graphics Computer Systems, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/interprocess/streams/bufferstream.hpp [17:18]
+ boost/interprocess/streams/vectorstream.hpp [17:18]
+
+KEEP COPYRIGHT_SERVICE_LABEL 15d50536bcbda2f7a36d5d623fb19036
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2014, Andrzej Krzemienski.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/optional/bad_optional_access.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 15e7036f24a807be04d8a05d49c0ecb9
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2005-2006 Douglas Gregor <doug.gregor -at- gmail.com>.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpi/collectives.hpp [1:1]
+ boost/mpi/collectives/all_reduce.hpp [1:2]
+ boost/mpi/collectives_fwd.hpp [1:1]
+ boost/mpi/exception.hpp [1:1]
+ boost/mpi/operations.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 16032898d1264a298670223659b54ff0
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2015 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/csbl/queue.hpp [1:1]
+ boost/thread/executors/serial_executor_cont.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 160f7dd82fcdd6e80a6e06d84c5a5cca
+BELONGS ya.make
+ License text:
+ // Copyright Howard Hinnant 2007-2010.
+ // Copyright Vicente J. Botet Escriba 2012.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/v2/shared_mutex.hpp [6:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1638af8b9d8a13b7d2e95217a0492d14
+BELONGS ya.make
+ License text:
+ // (C) Copyright Andrew Sutton 2007
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/geodesic_distance.hpp [1:1]
+ boost/graph/property_maps/null_property_map.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 166fc3d16b64c3b6284ed28945c457da
+BELONGS ya.make
+ License text:
+ Copyright 2009-2012 Karsten Ahnert
+ Copyright 2009-2012 Mario Mulansky
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/algebra/multi_array_algebra.hpp [9:10]
+ boost/numeric/odeint/external/blaze/blaze_algebra_dispatcher.hpp [9:10]
+ boost/numeric/odeint/external/blaze/blaze_resize.hpp [9:10]
+ boost/numeric/odeint/external/eigen/eigen.hpp [9:10]
+ boost/numeric/odeint/external/eigen/eigen_algebra_dispatcher.hpp [9:10]
+ boost/numeric/odeint/iterator/impl/adaptive_iterator_impl.hpp [9:10]
+ boost/numeric/odeint/iterator/integrate/detail/integrate_const.hpp [9:10]
+ boost/numeric/odeint/iterator/integrate/detail/integrate_n_steps.hpp [9:10]
+ boost/numeric/odeint/iterator/integrate/detail/integrate_times.hpp [9:10]
+ boost/numeric/odeint/stepper/velocity_verlet.hpp [9:10]
+ boost/numeric/odeint/util/multi_array_adaption.hpp [9:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1734766e3cba0021c51f6c2cd7aa54b1
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2011, 2016 Tim Blechmann
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/lockfree/detail/copy_payload.hpp [3:3]
+ boost/lockfree/detail/parameter.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 173fdc8f8d22cde2d6542e79b1d5d711
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/statechart/in_state_reaction.hpp at line 6
+ License text:
+ // Copyright 2005-2008 Andreas Huber Doenni
+ // Distributed under the Boost Software License, Version 1.0. (See accompany-
+ // ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/statechart/in_state_reaction.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 17933b826f084cbdab08e8129bb2d208
+BELONGS ya.make
+ License text:
+ Copyright (c) 2014 Christoph Weiss
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/include/hash.hpp [2:2]
+ boost/fusion/sequence/hash.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 17a7391070cb12a423a9e2dbf8d73e1f
+BELONGS ya.make
+ License text:
+ Copyright (c) 2011 Jamboree
+ Copyright (c) 2014 Lee Clagett
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/x3/directive/seek.hpp [2:3]
+ boost/spirit/repository/home/qi/directive/seek.hpp [2:2]
+ boost/spirit/repository/home/support/seek.hpp [2:2]
+ boost/spirit/repository/include/qi_seek.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 17b350b3a7cc10d64ea2dfae64d3f340
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2004-2008 The Trustees of Indiana University.
+ // Copyright (C) 2007 Douglas Gregor <doug.gregor@gmail.com>
+ // Copyright (C) 2007 Matthias Troyer <troyer@boost-consulting.com>
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/distributed/detail/mpi_process_group.ipp [3:5]
+ boost/graph/distributed/detail/tag_allocator.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 17b5775897efd9ca319340c209a0aa32
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/ptr_container/detail/is_convertible.hpp at line 5, boost/ptr_container/detail/static_move_ptr.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/ptr_container/detail/is_convertible.hpp [1:5]
+ boost/ptr_container/detail/static_move_ptr.hpp [1:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 17fb6732a4d2890917643ed3e710bbe7
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/function/function_base.hpp at line 6, boost/function/function_template.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/function/function_base.hpp [3:6]
+ boost/function/function_template.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 186be276c136601da52c329d686ef896
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/adaptor/adjacent_filtered.hpp at line 5, boost/range/adaptor/argument_fwd.hpp at line 5, boost/range/adaptor/filtered.hpp at line 5, boost/range/adaptor/indirected.hpp at line 5, boost/range/adaptor/map.hpp at line 5, boost/range/adaptor/reversed.hpp at line 5, boost/range/adaptor/sliced.hpp at line 5, boost/range/adaptor/transformed.hpp at line 5, boost/range/adaptor/uniqued.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/range/adaptor/adjacent_filtered.hpp [3:5]
+ boost/range/adaptor/argument_fwd.hpp [3:5]
+ boost/range/adaptor/filtered.hpp [3:5]
+ boost/range/adaptor/indirected.hpp [3:5]
+ boost/range/adaptor/map.hpp [3:5]
+ boost/range/adaptor/reversed.hpp [3:5]
+ boost/range/adaptor/sliced.hpp [3:5]
+ boost/range/adaptor/transformed.hpp [3:5]
+ boost/range/adaptor/uniqued.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1877c8c0d80d7b1ea728c21778641fa6
+BELONGS ya.make
+ License text:
+ // (C) Copyright John Maddock 2000.
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/constants/info.hpp [1:3]
- boost/math/distributions/geometric.hpp [3:4]
- boost/math/distributions/inverse_chi_squared.hpp [1:2]
- boost/math/distributions/inverse_gamma.hpp [3:6]
- boost/math/distributions/inverse_gaussian.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 31944823e2ff50fe3a2c1ee16b2ac06e
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iterator/permutation_iterator.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/iterator/permutation_iterator.hpp [1:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 31a35255487eadf75eca876215e0cb5d
-BELONGS ya.make
- License text:
- // Copyright (C) 2003-2008 Matthias Christian Schabel
- // Copyright (C) 2008 Steven Watanabe
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/units/absolute.hpp [4:5]
- boost/units/base_dimension.hpp [4:5]
- boost/units/base_unit.hpp [4:5]
- boost/units/base_units/angle/arcminute.hpp [4:5]
- boost/units/base_units/angle/arcsecond.hpp [4:5]
- boost/units/base_units/angle/degree.hpp [4:5]
- boost/units/base_units/angle/gradian.hpp [4:5]
- boost/units/base_units/angle/radian.hpp [4:5]
- boost/units/base_units/angle/revolution.hpp [4:5]
- boost/units/base_units/angle/steradian.hpp [4:5]
- boost/units/base_units/astronomical/astronomical_unit.hpp [4:5]
- boost/units/base_units/astronomical/light_day.hpp [4:5]
- boost/units/base_units/astronomical/light_hour.hpp [4:5]
- boost/units/base_units/astronomical/light_minute.hpp [4:5]
- boost/units/base_units/astronomical/light_second.hpp [4:5]
- boost/units/base_units/astronomical/light_year.hpp [4:5]
- boost/units/base_units/astronomical/parsec.hpp [4:5]
- boost/units/base_units/cgs/biot.hpp [4:5]
- boost/units/base_units/cgs/centimeter.hpp [4:5]
- boost/units/base_units/cgs/gram.hpp [4:5]
- boost/units/base_units/imperial/conversions.hpp [4:5]
- boost/units/base_units/imperial/drachm.hpp [4:5]
- boost/units/base_units/imperial/fluid_ounce.hpp [4:5]
- boost/units/base_units/imperial/foot.hpp [4:5]
- boost/units/base_units/imperial/furlong.hpp [4:5]
- boost/units/base_units/imperial/gallon.hpp [4:5]
- boost/units/base_units/imperial/gill.hpp [4:5]
- boost/units/base_units/imperial/grain.hpp [4:5]
- boost/units/base_units/imperial/hundredweight.hpp [4:5]
- boost/units/base_units/imperial/inch.hpp [4:5]
- boost/units/base_units/imperial/league.hpp [4:5]
- boost/units/base_units/imperial/mile.hpp [4:5]
- boost/units/base_units/imperial/ounce.hpp [4:5]
- boost/units/base_units/imperial/pint.hpp [4:5]
- boost/units/base_units/imperial/pound.hpp [4:5]
- boost/units/base_units/imperial/quart.hpp [4:5]
- boost/units/base_units/imperial/quarter.hpp [4:5]
- boost/units/base_units/imperial/stone.hpp [4:5]
- boost/units/base_units/imperial/thou.hpp [4:5]
- boost/units/base_units/imperial/ton.hpp [4:5]
- boost/units/base_units/imperial/yard.hpp [4:5]
- boost/units/base_units/metric/angstrom.hpp [4:5]
- boost/units/base_units/metric/are.hpp [4:5]
- boost/units/base_units/metric/atmosphere.hpp [4:5]
- boost/units/base_units/metric/bar.hpp [4:5]
- boost/units/base_units/metric/barn.hpp [4:5]
- boost/units/base_units/metric/day.hpp [4:5]
- boost/units/base_units/metric/fermi.hpp [4:5]
- boost/units/base_units/metric/hectare.hpp [4:5]
- boost/units/base_units/metric/hour.hpp [4:5]
- boost/units/base_units/metric/knot.hpp [4:5]
- boost/units/base_units/metric/liter.hpp [4:5]
- boost/units/base_units/metric/micron.hpp [4:5]
- boost/units/base_units/metric/minute.hpp [4:5]
- boost/units/base_units/metric/mmHg.hpp [4:5]
- boost/units/base_units/metric/nautical_mile.hpp [4:5]
- boost/units/base_units/metric/ton.hpp [4:5]
- boost/units/base_units/metric/torr.hpp [4:5]
- boost/units/base_units/metric/year.hpp [4:5]
- boost/units/base_units/si/ampere.hpp [4:5]
- boost/units/base_units/si/candela.hpp [4:5]
- boost/units/base_units/si/kelvin.hpp [4:5]
- boost/units/base_units/si/kilogram.hpp [4:5]
- boost/units/base_units/si/meter.hpp [4:5]
- boost/units/base_units/si/mole.hpp [4:5]
- boost/units/base_units/si/second.hpp [4:5]
- boost/units/base_units/temperature/celsius.hpp [4:5]
- boost/units/base_units/temperature/conversions.hpp [4:5]
- boost/units/base_units/temperature/fahrenheit.hpp [4:5]
- boost/units/base_units/us/cup.hpp [4:5]
- boost/units/base_units/us/dram.hpp [4:5]
- boost/units/base_units/us/fluid_dram.hpp [4:5]
- boost/units/base_units/us/fluid_ounce.hpp [4:5]
- boost/units/base_units/us/foot.hpp [4:5]
- boost/units/base_units/us/gallon.hpp [4:5]
- boost/units/base_units/us/gill.hpp [4:5]
- boost/units/base_units/us/grain.hpp [4:5]
- boost/units/base_units/us/hundredweight.hpp [4:5]
- boost/units/base_units/us/inch.hpp [4:5]
- boost/units/base_units/us/mil.hpp [4:5]
- boost/units/base_units/us/mile.hpp [4:5]
- boost/units/base_units/us/minim.hpp [4:5]
- boost/units/base_units/us/ounce.hpp [4:5]
- boost/units/base_units/us/pint.hpp [4:5]
- boost/units/base_units/us/pound.hpp [4:5]
- boost/units/base_units/us/quart.hpp [4:5]
- boost/units/base_units/us/tablespoon.hpp [4:5]
- boost/units/base_units/us/teaspoon.hpp [4:5]
- boost/units/base_units/us/ton.hpp [4:5]
- boost/units/base_units/us/yard.hpp [4:5]
- boost/units/cmath.hpp [4:5]
- boost/units/config.hpp [4:5]
- boost/units/conversion.hpp [4:5]
- boost/units/derived_dimension.hpp [4:5]
- boost/units/detail/absolute_impl.hpp [4:5]
- boost/units/detail/cmath_impl.hpp [4:5]
- boost/units/detail/conversion_impl.hpp [4:5]
- boost/units/detail/dim_impl.hpp [4:5]
- boost/units/detail/dimension_impl.hpp [4:5]
- boost/units/detail/dimension_list.hpp [4:5]
- boost/units/detail/dimensionless_unit.hpp [4:5]
- boost/units/detail/heterogeneous_conversion.hpp [4:5]
- boost/units/detail/linear_algebra.hpp [4:5]
- boost/units/detail/one.hpp [4:5]
- boost/units/detail/ordinal.hpp [4:5]
- boost/units/detail/prevent_redefinition.hpp [4:5]
- boost/units/detail/push_front_if.hpp [4:5]
- boost/units/detail/push_front_or_add.hpp [4:5]
- boost/units/detail/sort.hpp [4:5]
- boost/units/detail/static_rational_power.hpp [4:5]
- boost/units/detail/unscale.hpp [4:5]
- boost/units/detail/utility.hpp [4:5]
- boost/units/dim.hpp [4:5]
- boost/units/dimension.hpp [4:5]
- boost/units/dimensionless_quantity.hpp [4:5]
- boost/units/dimensionless_type.hpp [4:5]
- boost/units/dimensionless_unit.hpp [4:5]
- boost/units/get_dimension.hpp [4:5]
- boost/units/get_system.hpp [4:5]
- boost/units/heterogeneous_system.hpp [4:5]
- boost/units/homogeneous_system.hpp [4:5]
- boost/units/io.hpp [4:5]
- boost/units/is_dim.hpp [4:5]
- boost/units/is_dimension_list.hpp [4:5]
- boost/units/is_dimensionless.hpp [4:5]
- boost/units/is_dimensionless_quantity.hpp [4:5]
- boost/units/is_dimensionless_unit.hpp [4:5]
- boost/units/is_quantity.hpp [4:5]
- boost/units/is_quantity_of_dimension.hpp [4:5]
- boost/units/is_quantity_of_system.hpp [4:5]
- boost/units/is_unit.hpp [4:5]
- boost/units/is_unit_of_dimension.hpp [4:5]
- boost/units/is_unit_of_system.hpp [4:5]
- boost/units/lambda.hpp [4:5]
- boost/units/limits.hpp [4:5]
- boost/units/make_scaled_unit.hpp [4:5]
- boost/units/make_system.hpp [4:5]
- boost/units/operators.hpp [4:5]
- boost/units/physical_dimensions.hpp [4:5]
- boost/units/physical_dimensions/absorbed_dose.hpp [4:5]
- boost/units/physical_dimensions/acceleration.hpp [4:5]
- boost/units/physical_dimensions/action.hpp [4:5]
- boost/units/physical_dimensions/activity.hpp [4:5]
- boost/units/physical_dimensions/amount.hpp [4:5]
- boost/units/physical_dimensions/angular_acceleration.hpp [4:5]
- boost/units/physical_dimensions/angular_momentum.hpp [4:5]
- boost/units/physical_dimensions/angular_velocity.hpp [4:5]
- boost/units/physical_dimensions/area.hpp [4:5]
- boost/units/physical_dimensions/capacitance.hpp [4:5]
- boost/units/physical_dimensions/conductance.hpp [4:5]
- boost/units/physical_dimensions/conductivity.hpp [4:5]
- boost/units/physical_dimensions/current.hpp [4:5]
- boost/units/physical_dimensions/dose_equivalent.hpp [4:5]
- boost/units/physical_dimensions/dynamic_viscosity.hpp [4:5]
- boost/units/physical_dimensions/electric_charge.hpp [4:5]
- boost/units/physical_dimensions/electric_potential.hpp [4:5]
- boost/units/physical_dimensions/energy.hpp [4:5]
- boost/units/physical_dimensions/energy_density.hpp [4:5]
- boost/units/physical_dimensions/force.hpp [4:5]
- boost/units/physical_dimensions/frequency.hpp [4:5]
- boost/units/physical_dimensions/heat_capacity.hpp [4:5]
- boost/units/physical_dimensions/illuminance.hpp [4:5]
- boost/units/physical_dimensions/impedance.hpp [4:5]
- boost/units/physical_dimensions/inductance.hpp [4:5]
- boost/units/physical_dimensions/kinematic_viscosity.hpp [4:5]
- boost/units/physical_dimensions/length.hpp [4:5]
- boost/units/physical_dimensions/luminance.hpp [4:5]
- boost/units/physical_dimensions/luminous_flux.hpp [4:5]
- boost/units/physical_dimensions/luminous_intensity.hpp [4:5]
- boost/units/physical_dimensions/magnetic_field_intensity.hpp [4:5]
- boost/units/physical_dimensions/magnetic_flux.hpp [4:5]
- boost/units/physical_dimensions/magnetic_flux_density.hpp [4:5]
- boost/units/physical_dimensions/mass.hpp [4:5]
- boost/units/physical_dimensions/mass_density.hpp [4:5]
- boost/units/physical_dimensions/molar_energy.hpp [4:5]
- boost/units/physical_dimensions/molar_heat_capacity.hpp [4:5]
- boost/units/physical_dimensions/moment_of_inertia.hpp [4:5]
- boost/units/physical_dimensions/momentum.hpp [4:5]
- boost/units/physical_dimensions/permeability.hpp [4:5]
- boost/units/physical_dimensions/permittivity.hpp [4:5]
- boost/units/physical_dimensions/plane_angle.hpp [4:5]
- boost/units/physical_dimensions/power.hpp [4:5]
- boost/units/physical_dimensions/pressure.hpp [4:5]
- boost/units/physical_dimensions/reluctance.hpp [4:5]
- boost/units/physical_dimensions/resistance.hpp [4:5]
- boost/units/physical_dimensions/resistivity.hpp [4:5]
- boost/units/physical_dimensions/solid_angle.hpp [4:5]
- boost/units/physical_dimensions/specific_energy.hpp [4:5]
- boost/units/physical_dimensions/specific_heat_capacity.hpp [4:5]
- boost/units/physical_dimensions/specific_volume.hpp [4:5]
- boost/units/physical_dimensions/stress.hpp [4:5]
- boost/units/physical_dimensions/surface_density.hpp [4:5]
- boost/units/physical_dimensions/surface_tension.hpp [4:5]
- boost/units/physical_dimensions/temperature.hpp [4:5]
- boost/units/physical_dimensions/thermal_conductivity.hpp [4:5]
- boost/units/physical_dimensions/time.hpp [4:5]
- boost/units/physical_dimensions/torque.hpp [4:5]
- boost/units/physical_dimensions/velocity.hpp [4:5]
- boost/units/physical_dimensions/volume.hpp [4:5]
- boost/units/physical_dimensions/wavenumber.hpp [4:5]
- boost/units/pow.hpp [4:5]
- boost/units/quantity.hpp [4:5]
- boost/units/reduce_unit.hpp [4:5]
- boost/units/scale.hpp [4:5]
- boost/units/scaled_base_unit.hpp [4:5]
- boost/units/static_constant.hpp [4:5]
- boost/units/static_rational.hpp [4:5]
- boost/units/systems/abstract.hpp [4:5]
- boost/units/systems/angle/degrees.hpp [4:5]
- boost/units/systems/angle/gradians.hpp [4:5]
- boost/units/systems/angle/revolutions.hpp [4:5]
- boost/units/systems/cgs.hpp [4:5]
- boost/units/systems/cgs/acceleration.hpp [4:5]
- boost/units/systems/cgs/area.hpp [4:5]
- boost/units/systems/cgs/base.hpp [4:5]
- boost/units/systems/cgs/current.hpp [4:5]
- boost/units/systems/cgs/dimensionless.hpp [4:5]
- boost/units/systems/cgs/dynamic_viscosity.hpp [4:5]
- boost/units/systems/cgs/energy.hpp [4:5]
- boost/units/systems/cgs/force.hpp [4:5]
- boost/units/systems/cgs/frequency.hpp [4:5]
- boost/units/systems/cgs/io.hpp [4:5]
- boost/units/systems/cgs/kinematic_viscosity.hpp [4:5]
- boost/units/systems/cgs/length.hpp [4:5]
- boost/units/systems/cgs/mass.hpp [4:5]
- boost/units/systems/cgs/mass_density.hpp [4:5]
- boost/units/systems/cgs/momentum.hpp [4:5]
- boost/units/systems/cgs/power.hpp [4:5]
- boost/units/systems/cgs/pressure.hpp [4:5]
- boost/units/systems/cgs/time.hpp [4:5]
- boost/units/systems/cgs/velocity.hpp [4:5]
- boost/units/systems/cgs/volume.hpp [4:5]
- boost/units/systems/cgs/wavenumber.hpp [4:5]
- boost/units/systems/detail/constants.hpp [4:5]
- boost/units/systems/si.hpp [4:5]
- boost/units/systems/si/absorbed_dose.hpp [4:5]
- boost/units/systems/si/acceleration.hpp [4:5]
- boost/units/systems/si/action.hpp [4:5]
- boost/units/systems/si/activity.hpp [4:5]
- boost/units/systems/si/amount.hpp [4:5]
- boost/units/systems/si/angular_acceleration.hpp [4:5]
- boost/units/systems/si/angular_momentum.hpp [4:5]
- boost/units/systems/si/angular_velocity.hpp [4:5]
- boost/units/systems/si/area.hpp [4:5]
- boost/units/systems/si/base.hpp [4:5]
- boost/units/systems/si/capacitance.hpp [4:5]
- boost/units/systems/si/catalytic_activity.hpp [4:5]
- boost/units/systems/si/codata/alpha_constants.hpp [4:5]
- boost/units/systems/si/codata/atomic-nuclear_constants.hpp [4:5]
- boost/units/systems/si/codata/deuteron_constants.hpp [4:5]
- boost/units/systems/si/codata/electromagnetic_constants.hpp [4:5]
- boost/units/systems/si/codata/electron_constants.hpp [4:5]
- boost/units/systems/si/codata/helion_constants.hpp [4:5]
- boost/units/systems/si/codata/muon_constants.hpp [4:5]
- boost/units/systems/si/codata/neutron_constants.hpp [4:5]
- boost/units/systems/si/codata/physico-chemical_constants.hpp [4:5]
- boost/units/systems/si/codata/proton_constants.hpp [4:5]
- boost/units/systems/si/codata/tau_constants.hpp [4:5]
- boost/units/systems/si/codata/triton_constants.hpp [4:5]
- boost/units/systems/si/codata/typedefs.hpp [4:5]
- boost/units/systems/si/codata/universal_constants.hpp [4:5]
- boost/units/systems/si/codata_constants.hpp [4:5]
- boost/units/systems/si/conductance.hpp [4:5]
- boost/units/systems/si/conductivity.hpp [4:5]
- boost/units/systems/si/current.hpp [4:5]
- boost/units/systems/si/dimensionless.hpp [4:5]
- boost/units/systems/si/dose_equivalent.hpp [4:5]
- boost/units/systems/si/dynamic_viscosity.hpp [4:5]
- boost/units/systems/si/electric_charge.hpp [4:5]
- boost/units/systems/si/electric_potential.hpp [4:5]
- boost/units/systems/si/energy.hpp [4:5]
- boost/units/systems/si/force.hpp [4:5]
- boost/units/systems/si/frequency.hpp [4:5]
- boost/units/systems/si/illuminance.hpp [4:5]
- boost/units/systems/si/impedance.hpp [4:5]
- boost/units/systems/si/inductance.hpp [4:5]
- boost/units/systems/si/io.hpp [4:5]
- boost/units/systems/si/kinematic_viscosity.hpp [4:5]
- boost/units/systems/si/length.hpp [4:5]
- boost/units/systems/si/luminous_flux.hpp [4:5]
- boost/units/systems/si/luminous_intensity.hpp [4:5]
- boost/units/systems/si/magnetic_field_intensity.hpp [4:5]
- boost/units/systems/si/magnetic_flux.hpp [4:5]
- boost/units/systems/si/magnetic_flux_density.hpp [4:5]
- boost/units/systems/si/mass.hpp [4:5]
- boost/units/systems/si/mass_density.hpp [4:5]
- boost/units/systems/si/moment_of_inertia.hpp [4:5]
- boost/units/systems/si/momentum.hpp [4:5]
- boost/units/systems/si/permeability.hpp [4:5]
- boost/units/systems/si/permittivity.hpp [4:5]
- boost/units/systems/si/plane_angle.hpp [4:5]
- boost/units/systems/si/power.hpp [4:5]
- boost/units/systems/si/prefixes.hpp [4:5]
- boost/units/systems/si/pressure.hpp [4:5]
- boost/units/systems/si/reluctance.hpp [4:5]
- boost/units/systems/si/resistance.hpp [4:5]
- boost/units/systems/si/resistivity.hpp [4:5]
- boost/units/systems/si/solid_angle.hpp [4:5]
- boost/units/systems/si/surface_density.hpp [4:5]
- boost/units/systems/si/surface_tension.hpp [4:5]
- boost/units/systems/si/temperature.hpp [4:5]
- boost/units/systems/si/time.hpp [4:5]
- boost/units/systems/si/torque.hpp [4:5]
- boost/units/systems/si/velocity.hpp [4:5]
- boost/units/systems/si/volume.hpp [4:5]
- boost/units/systems/si/wavenumber.hpp [4:5]
- boost/units/systems/temperature/celsius.hpp [4:5]
- boost/units/systems/temperature/fahrenheit.hpp [4:5]
- boost/units/unit.hpp [4:5]
- boost/units/units_fwd.hpp [4:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 31dab43fa080cbb98017ca60b8536ab0
-BELONGS ya.make
- License text:
- // Copyright Beman Dawes 2003
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/filesystem/config.hpp [3:3]
- boost/filesystem/exception.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 324d93d18dc0341b928695ee94a194af
-BELONGS ya.make
- License text:
- // Copyright 2010 Andy Tompkins.
- // Copyright 2017 James E. King III
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/uuid/basic_name_generator.hpp [3:4]
- boost/uuid/name_generator.hpp [3:4]
- boost/uuid/name_generator_sha1.hpp [3:4]
- boost/uuid/nil_generator.hpp [3:5]
- boost/uuid/random_generator.hpp [3:6]
- boost/uuid/string_generator.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 32511a369ceb9e80149621bddd200001
-BELONGS ya.make
- License text:
- Copyright (c) 2003 Jonathan de Halleux (dehalleux@pelikhan.com)
- Copyright (c) 2011 Bryce Lelbach
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/actor/ref_value_actor.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 32573bc3a7b7bae58726fa77bfc61ebf
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/times2_iterator.hpp at line 6
- License text:
- // Copyright 2006 Eric Niebler. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/accumulators/statistics/times2_iterator.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3270284535e3fd146527a1723db5c829
-BELONGS ya.make
- License text:
- // Copyright (C) 2014 Erik Erlandson
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/units/base_units/information/bit.hpp [4:4]
- boost/units/base_units/information/byte.hpp [4:4]
- boost/units/base_units/information/hartley.hpp [4:4]
- boost/units/base_units/information/nat.hpp [4:4]
- boost/units/base_units/information/shannon.hpp [4:4]
- boost/units/physical_dimensions/information.hpp [4:4]
- boost/units/systems/information.hpp [4:4]
- boost/units/systems/information/bit.hpp [4:4]
- boost/units/systems/information/byte.hpp [4:4]
- boost/units/systems/information/hartley.hpp [4:4]
- boost/units/systems/information/nat.hpp [4:4]
- boost/units/systems/information/prefixes.hpp [4:4]
- boost/units/systems/information/shannon.hpp [4:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 32d1f182852203e1af5656ce09a20b93
-BELONGS ya.make
- License text:
- Copyright 2012 Karsten Ahnert
- Copyright 2012 Mario Mulansky
- Copyright 2012 Denis Demidov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/external/vexcl/vexcl_resize.hpp [9:11]
- boost/numeric/odeint/external/viennacl/viennacl_operations.hpp [9:11]
- boost/numeric/odeint/external/viennacl/viennacl_resize.hpp [9:11]
-
-KEEP COPYRIGHT_SERVICE_LABEL 32f3e9a485f1df17b5b5c669b5cf8a43
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/adaptive_pool.hpp at line 5, boost/container/detail/adaptive_node_pool.hpp at line 5, boost/container/detail/adaptive_node_pool_impl.hpp at line 5, boost/container/detail/alloc_lib.h at line 5, boost/container/detail/allocation_type.hpp at line 5, boost/container/detail/config_begin.hpp at line 5, boost/container/detail/config_end.hpp at line 5, boost/container/detail/copy_move_algo.hpp at line 5, boost/container/detail/destroyers.hpp at line 5, boost/container/detail/iterators.hpp at line 5, boost/container/detail/min_max.hpp at line 5, boost/container/detail/mpl.hpp at line 5, boost/container/detail/multiallocation_chain.hpp at line 5, boost/container/detail/node_alloc_holder.hpp at line 5, boost/container/detail/node_pool.hpp at line 5, boost/container/detail/node_pool_impl.hpp at line 5, boost/container/detail/pair.hpp at line 5, boost/container/detail/pair_key_mapped_of_value.hpp at line 5, boost/container/detail/pool_common.hpp at line 5, boost/container/detail/pool_common_alloc.hpp at line 5, boost/container/detail/transform_iterator.hpp at line 5, boost/container/detail/value_init.hpp at line 5, boost/container/detail/version_type.hpp at line 5, boost/container/detail/workaround.hpp at line 5, boost/container/flat_map.hpp at line 5, boost/container/flat_set.hpp at line 5, boost/container/map.hpp at line 5, boost/container/set.hpp at line 5, boost/interprocess/detail/os_thread_functions.hpp at line 5, boost/intrusive/detail/workaround.hpp at line 5, boost/move/adl_move_swap.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/container/adaptive_pool.hpp [3:5]
- boost/container/detail/adaptive_node_pool.hpp [3:5]
- boost/container/detail/adaptive_node_pool_impl.hpp [3:5]
- boost/container/detail/alloc_lib.h [3:5]
- boost/container/detail/allocation_type.hpp [3:5]
- boost/container/detail/config_begin.hpp [3:5]
- boost/container/detail/config_end.hpp [3:5]
- boost/container/detail/copy_move_algo.hpp [3:5]
- boost/container/detail/destroyers.hpp [3:3]
- boost/container/detail/iterators.hpp [3:4]
- boost/container/detail/min_max.hpp [3:5]
- boost/container/detail/mpl.hpp [3:3]
- boost/container/detail/multiallocation_chain.hpp [3:5]
- boost/container/detail/node_alloc_holder.hpp [3:5]
- boost/container/detail/node_pool.hpp [3:5]
- boost/container/detail/node_pool_impl.hpp [3:5]
- boost/container/detail/pair.hpp [3:3]
- boost/container/detail/pair_key_mapped_of_value.hpp [3:5]
- boost/container/detail/pool_common.hpp [3:5]
- boost/container/detail/pool_common_alloc.hpp [3:5]
- boost/container/detail/transform_iterator.hpp [3:4]
- boost/container/detail/value_init.hpp [3:3]
- boost/container/detail/version_type.hpp [3:5]
- boost/container/detail/workaround.hpp [3:5]
- boost/container/flat_map.hpp [3:5]
- boost/container/flat_set.hpp [3:5]
- boost/container/map.hpp [3:5]
- boost/container/set.hpp [3:5]
- boost/interprocess/detail/os_thread_functions.hpp [3:5]
- boost/intrusive/detail/workaround.hpp [3:5]
- boost/move/adl_move_swap.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 33055e91cf52f04ff1b51e16884cc15f
-BELONGS ya.make
- License text:
- Copyright (C) 2017 Glen Joseph Fernandes (glenjofe@gmail.com)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/core/addressof.hpp [7:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3333518f60a3b0b9277d7db70f8bc9fe
-BELONGS ya.make
- License text:
- // Copyright (c) 2001-2002 Chuck Allison and Jeremy Siek
- // Copyright (c) 2003-2004, 2008 Gennaro Prota
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/detail/dynamic_bitset.hpp [3:4]
- boost/dynamic_bitset.hpp [3:4]
- boost/dynamic_bitset/config.hpp [3:4]
- boost/dynamic_bitset/dynamic_bitset.hpp [3:5]
- boost/dynamic_bitset_fwd.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3362337951e7dc98a4141fb90ce0df41
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/sort/block_indirect_sort/blk_detail/backbone.hpp at line 8, boost/sort/block_indirect_sort/blk_detail/block.hpp at line 8, boost/sort/block_indirect_sort/blk_detail/constants.hpp at line 7, boost/sort/block_indirect_sort/blk_detail/merge_blocks.hpp at line 8, boost/sort/block_indirect_sort/blk_detail/move_blocks.hpp at line 8, boost/sort/block_indirect_sort/blk_detail/parallel_sort.hpp at line 8, boost/sort/block_indirect_sort/block_indirect_sort.hpp at line 7, boost/sort/common/indirect.hpp at line 7, boost/sort/common/merge_block.hpp at line 8, boost/sort/common/merge_four.hpp at line 7, boost/sort/common/merge_vector.hpp at line 8, boost/sort/common/range.hpp at line 7, boost/sort/common/rearrange.hpp at line 7, boost/sort/common/sort_basic.hpp at line 7, boost/sort/common/util/atomic.hpp at line 6, boost/sort/common/util/insert.hpp at line 7, boost/sort/common/util/merge.hpp at line 7, boost/sort/common/util/traits.hpp at line 7, boost/sort/heap_sort/heap_sort.hpp at line 7, boost/sort/insert_sort/insert_sort.hpp at line 7, boost/sort/parallel_stable_sort/parallel_stable_sort.hpp at line 7, boost/sort/sample_sort/sample_sort.hpp at line 7, boost/sort/spinsort/spinsort.hpp at line 7
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/sort/block_indirect_sort/blk_detail/backbone.hpp [6:8]
- boost/sort/block_indirect_sort/blk_detail/block.hpp [6:8]
- boost/sort/block_indirect_sort/blk_detail/constants.hpp [5:7]
- boost/sort/block_indirect_sort/blk_detail/merge_blocks.hpp [6:8]
- boost/sort/block_indirect_sort/blk_detail/move_blocks.hpp [6:8]
- boost/sort/block_indirect_sort/blk_detail/parallel_sort.hpp [6:8]
- boost/sort/block_indirect_sort/block_indirect_sort.hpp [5:7]
- boost/sort/common/indirect.hpp [5:7]
- boost/sort/common/merge_block.hpp [6:8]
- boost/sort/common/merge_four.hpp [5:7]
- boost/sort/common/merge_vector.hpp [6:8]
- boost/sort/common/range.hpp [5:7]
- boost/sort/common/rearrange.hpp [5:7]
- boost/sort/common/sort_basic.hpp [5:7]
- boost/sort/common/util/atomic.hpp [4:6]
- boost/sort/common/util/insert.hpp [5:7]
- boost/sort/common/util/merge.hpp [5:7]
- boost/sort/common/util/traits.hpp [5:7]
- boost/sort/heap_sort/heap_sort.hpp [5:7]
- boost/sort/insert_sort/insert_sort.hpp [5:7]
- boost/sort/parallel_stable_sort/parallel_stable_sort.hpp [5:7]
- boost/sort/sample_sort/sample_sort.hpp [5:7]
- boost/sort/spinsort/spinsort.hpp [5:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3386ce257b7fdc192fc2c7a99846dd83
-BELONGS ya.make
- License text:
- // This file was modified by Oracle on 2013-2014.
- // Modifications copyright (c) 2013-2014, Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/disjoint/linear_segment_or_box.hpp [8:9]
- boost/geometry/algorithms/detail/equals/point_point.hpp [8:9]
- boost/geometry/algorithms/detail/single_geometry.hpp [5:6]
- boost/geometry/algorithms/detail/sub_range.hpp [5:6]
- boost/geometry/algorithms/disjoint.hpp [8:9]
- boost/geometry/policies/disjoint_interrupt_policy.hpp [8:9]
-
-KEEP COPYRIGHT_SERVICE_LABEL 339fcf7433771e1324c39962a53efb58
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/move/algo/adaptive_merge.hpp at line 5, boost/move/algo/adaptive_sort.hpp at line 5, boost/move/algo/detail/adaptive_sort_merge.hpp at line 5, boost/move/algo/detail/basic_op.hpp at line 5, boost/move/algo/detail/merge.hpp at line 5, boost/move/algo/detail/merge_sort.hpp at line 5, boost/move/algo/predicate.hpp at line 5, boost/move/detail/destruct_n.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2015-2016.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/move/algo/adaptive_merge.hpp [3:5]
- boost/move/algo/adaptive_sort.hpp [3:5]
- boost/move/algo/detail/adaptive_sort_merge.hpp [3:5]
- boost/move/algo/detail/basic_op.hpp [3:5]
- boost/move/algo/detail/merge.hpp [3:5]
- boost/move/algo/detail/merge_sort.hpp [3:5]
- boost/move/algo/predicate.hpp [3:5]
- boost/move/detail/destruct_n.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 33e18cfc20734ce255518bc39f4f9639
-BELONGS ya.make
- License text:
- // (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
- // Copyright (c) 2001-2008 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/shared_ptr.hpp [7:8]
- boost/smart_ptr/shared_ptr.hpp [7:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 33fcb6432b4c5d83e447d6f2b8dd7cf8
-BELONGS ya.make
- License text:
- // Copyright (c) 2015-2016 Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/formulas/result_inverse.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3430da63f6fba2e8b14a06b6618ef84f
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/sort/sort.hpp at line 5
- License text:
- // Copyright Steven J. Ross 2014
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/container/detail/type_traits.hpp [2:3]
+ boost/interprocess/detail/type_traits.hpp [2:3]
+ boost/move/detail/type_traits.hpp [2:3]
+ boost/static_assert.hpp [1:3]
+ boost/type_traits.hpp [1:3]
+ boost/type_traits/alignment_of.hpp [2:4]
+ boost/type_traits/alignment_traits.hpp [2:4]
+ boost/type_traits/is_polymorphic.hpp [1:3]
+ boost/type_traits/type_with_alignment.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 188ba6bce942da3ec5a7d3e219272d13
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2002-2007 Marcin Kalicinski
+ // Copyright (C) 2007 Alexey Baskakov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/property_tree/detail/xml_parser_writer_settings.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 189d46e9447d77111b28e7945880691c
+BELONGS ya.make
+ License text:
+ // Copyright Aleksey Gurtovoy 2004
+ // Copyright Alexander Nasonov 2004
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/empty_sequence.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 18b9eb6943a3e523664fc674daba703a
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/test/impl/execution_monitor.ipp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 18bad9344d7cba762fbd435259d6301b
+BELONGS libs/python/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/workaround.hpp at line 3, boost/detail/indirect_traits.hpp at line 3, boost/detail/workaround.hpp at line 3, boost/mpl/aux_/config/bind.hpp at line 7, boost/python.hpp at line 3, boost/python/arg_from_python.hpp at line 3, boost/python/args.hpp at line 3, boost/python/args_fwd.hpp at line 3, boost/python/back_reference.hpp at line 3, boost/python/base_type_traits.hpp at line 3, boost/python/bases.hpp at line 3, boost/python/borrowed.hpp at line 3, boost/python/call.hpp at line 5, boost/python/call_method.hpp at line 5, boost/python/cast.hpp at line 3, boost/python/class.hpp at line 3, boost/python/class_fwd.hpp at line 3, boost/python/converter/arg_from_python.hpp at line 3, boost/python/converter/arg_to_python.hpp at line 3, boost/python/converter/arg_to_python_base.hpp at line 3, boost/python/converter/as_to_python_function.hpp at line 3, boost/python/converter/builtin_converters.hpp at line 3, boost/python/converter/constructor_function.hpp at line 3, boost/python/converter/convertible_function.hpp at line 3, boost/python/converter/from_python.hpp at line 3, boost/python/converter/implicit.hpp at line 3, boost/python/converter/obj_mgr_arg_from_python.hpp at line 3, boost/python/converter/object_manager.hpp at line 3, boost/python/converter/pointer_type_id.hpp at line 3, boost/python/converter/pyobject_traits.hpp at line 3, boost/python/converter/pyobject_type.hpp at line 3, boost/python/converter/pytype_object_mgr_traits.hpp at line 3, boost/python/converter/registered.hpp at line 3, boost/python/converter/registered_pointee.hpp at line 3, boost/python/converter/registrations.hpp at line 3, boost/python/converter/return_from_python.hpp at line 3, boost/python/converter/rvalue_from_python_data.hpp at line 3, boost/python/converter/shared_ptr_deleter.hpp at line 3, boost/python/converter/shared_ptr_from_python.hpp at line 3, boost/python/converter/to_python_function_type.hpp at line 3, boost/python/copy_const_reference.hpp at line 3, boost/python/copy_non_const_reference.hpp at line 3, boost/python/data_members.hpp at line 3, boost/python/def.hpp at line 3, boost/python/default_call_policies.hpp at line 3, boost/python/detail/aix_init_module.hpp at line 3, boost/python/detail/api_placeholder.hpp at line 3, boost/python/detail/borrowed_ptr.hpp at line 5, boost/python/detail/caller.hpp at line 5, boost/python/detail/construct.hpp at line 3, boost/python/detail/convertible.hpp at line 3, boost/python/detail/cv_category.hpp at line 3, boost/python/detail/decorated_type_id.hpp at line 3, boost/python/detail/decref_guard.hpp at line 3, boost/python/detail/def_helper.hpp at line 3, boost/python/detail/dependent.hpp at line 3, boost/python/detail/destroy.hpp at line 3, boost/python/detail/exception_handler.hpp at line 3, boost/python/detail/force_instantiate.hpp at line 3, boost/python/detail/if_else.hpp at line 3, boost/python/detail/invoke.hpp at line 5, boost/python/detail/make_keyword_range_fn.hpp at line 3, boost/python/detail/make_tuple.hpp at line 4, boost/python/detail/map_entry.hpp at line 3, boost/python/detail/mpl_lambda.hpp at line 3, boost/python/detail/msvc_typeinfo.hpp at line 3, boost/python/detail/not_specified.hpp at line 3, boost/python/detail/operator_id.hpp at line 3, boost/python/detail/overloads_fwd.hpp at line 3, boost/python/detail/pointee.hpp at line 3, boost/python/detail/preprocessor.hpp at line 3, boost/python/detail/raw_pyobject.hpp at line 3, boost/python/detail/referent_storage.hpp at line 3, boost/python/detail/result.hpp at line 5, boost/python/detail/scope.hpp at line 3, boost/python/detail/signature.hpp at line 5, boost/python/detail/string_literal.hpp at line 3, boost/python/detail/target.hpp at line 5, boost/python/detail/translate_exception.hpp at line 3, boost/python/detail/type_list.hpp at line 3, boost/python/detail/type_list_impl.hpp at line 4, boost/python/detail/unwind_type.hpp at line 3, boost/python/detail/void_ptr.hpp at line 3, boost/python/detail/void_return.hpp at line 3, boost/python/dict.hpp at line 3, boost/python/enum.hpp at line 3, boost/python/exception_translator.hpp at line 3, boost/python/extract.hpp at line 3, boost/python/handle.hpp at line 3, boost/python/handle_fwd.hpp at line 3, boost/python/has_back_reference.hpp at line 3, boost/python/implicit.hpp at line 3, boost/python/instance_holder.hpp at line 3, boost/python/iterator.hpp at line 3, boost/python/list.hpp at line 3, boost/python/long.hpp at line 3, boost/python/lvalue_from_pytype.hpp at line 3, boost/python/manage_new_object.hpp at line 3, boost/python/module_init.hpp at line 3, boost/python/object.hpp at line 3, boost/python/object/add_to_namespace.hpp at line 3, boost/python/object/class_detail.hpp at line 3, boost/python/object/enum_base.hpp at line 3, boost/python/object/find_instance.hpp at line 3, boost/python/object/function_handle.hpp at line 3, boost/python/object/function_object.hpp at line 3, boost/python/object/inheritance.hpp at line 3, boost/python/object/instance.hpp at line 3, boost/python/object/iterator.hpp at line 3, boost/python/object/iterator_core.hpp at line 3, boost/python/object/life_support.hpp at line 3, boost/python/object/make_instance.hpp at line 3, boost/python/object/make_ptr_instance.hpp at line 3, boost/python/object/py_function.hpp at line 3, boost/python/object/value_holder_fwd.hpp at line 3, boost/python/object_attributes.hpp at line 3, boost/python/object_call.hpp at line 4, boost/python/object_core.hpp at line 3, boost/python/object_fwd.hpp at line 3, boost/python/object_items.hpp at line 3, boost/python/object_operators.hpp at line 3, boost/python/object_protocol.hpp at line 3, boost/python/object_protocol_core.hpp at line 3, boost/python/object_slices.hpp at line 3, boost/python/operators.hpp at line 3, boost/python/other.hpp at line 7, boost/python/overloads.hpp at line 3, boost/python/pointee.hpp at line 3, boost/python/proxy.hpp at line 3, boost/python/ptr.hpp at line 7, boost/python/refcount.hpp at line 3, boost/python/reference_existing_object.hpp at line 3, boost/python/register_ptr_to_python.hpp at line 3, boost/python/return_by_value.hpp at line 3, boost/python/return_internal_reference.hpp at line 3, boost/python/return_value_policy.hpp at line 3, boost/python/scope.hpp at line 3, boost/python/self.hpp at line 3, boost/python/slice_nil.hpp at line 3, boost/python/str.hpp at line 3, boost/python/tag.hpp at line 3, boost/python/to_python_converter.hpp at line 3, boost/python/to_python_indirect.hpp at line 3, boost/python/to_python_value.hpp at line 3, boost/python/tuple.hpp at line 3, boost/python/type_id.hpp at line 3, boost/python/with_custodian_and_ward.hpp at line 3, libs/python/src/converter/arg_to_python_base.cpp at line 3, libs/python/src/converter/builtin_converters.cpp at line 3, libs/python/src/converter/from_python.cpp at line 3, libs/python/src/list.cpp at line 3, libs/python/src/long.cpp at line 3, libs/python/src/object/enum.cpp at line 3, libs/python/src/object/inheritance.cpp at line 3, libs/python/src/object/iterator.cpp at line 3, libs/python/src/object/life_support.cpp at line 3, libs/python/src/object_operators.cpp at line 3, libs/python/src/object_protocol.cpp at line 3
+ License text:
+ // Copyright David Abrahams 2002.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/workaround.hpp [1:3]
+ boost/detail/indirect_traits.hpp [1:3]
+ boost/detail/workaround.hpp [1:3]
+ boost/mpl/aux_/config/bind.hpp [5:6]
+ boost/python.hpp [1:3]
+ boost/python/arg_from_python.hpp [1:3]
+ boost/python/args.hpp [1:3]
+ boost/python/args_fwd.hpp [1:3]
+ boost/python/back_reference.hpp [1:3]
+ boost/python/base_type_traits.hpp [1:3]
+ boost/python/bases.hpp [1:3]
+ boost/python/borrowed.hpp [1:3]
+ boost/python/call.hpp [3:5]
+ boost/python/call_method.hpp [3:5]
+ boost/python/cast.hpp [1:3]
+ boost/python/class.hpp [1:3]
+ boost/python/class_fwd.hpp [1:3]
+ boost/python/converter/arg_from_python.hpp [1:3]
+ boost/python/converter/arg_to_python.hpp [1:3]
+ boost/python/converter/arg_to_python_base.hpp [1:3]
+ boost/python/converter/as_to_python_function.hpp [1:3]
+ boost/python/converter/builtin_converters.hpp [1:3]
+ boost/python/converter/constructor_function.hpp [1:3]
+ boost/python/converter/convertible_function.hpp [1:3]
+ boost/python/converter/from_python.hpp [1:3]
+ boost/python/converter/implicit.hpp [1:3]
+ boost/python/converter/obj_mgr_arg_from_python.hpp [1:3]
+ boost/python/converter/object_manager.hpp [1:3]
+ boost/python/converter/pointer_type_id.hpp [1:3]
+ boost/python/converter/pyobject_traits.hpp [1:3]
+ boost/python/converter/pyobject_type.hpp [1:3]
+ boost/python/converter/pytype_object_mgr_traits.hpp [1:3]
+ boost/python/converter/registered.hpp [1:4]
+ boost/python/converter/registered_pointee.hpp [1:3]
+ boost/python/converter/registrations.hpp [1:3]
+ boost/python/converter/return_from_python.hpp [1:3]
+ boost/python/converter/rvalue_from_python_data.hpp [1:3]
+ boost/python/converter/shared_ptr_deleter.hpp [1:3]
+ boost/python/converter/shared_ptr_from_python.hpp [1:4]
+ boost/python/converter/to_python_function_type.hpp [1:3]
+ boost/python/copy_const_reference.hpp [1:3]
+ boost/python/copy_non_const_reference.hpp [1:3]
+ boost/python/data_members.hpp [1:3]
+ boost/python/def.hpp [1:3]
+ boost/python/default_call_policies.hpp [1:3]
+ boost/python/detail/aix_init_module.hpp [1:3]
+ boost/python/detail/api_placeholder.hpp [1:3]
+ boost/python/detail/borrowed_ptr.hpp [3:5]
+ boost/python/detail/caller.hpp [3:5]
+ boost/python/detail/construct.hpp [1:3]
+ boost/python/detail/convertible.hpp [1:3]
+ boost/python/detail/cv_category.hpp [1:3]
+ boost/python/detail/decorated_type_id.hpp [1:3]
+ boost/python/detail/decref_guard.hpp [1:3]
+ boost/python/detail/def_helper.hpp [1:3]
+ boost/python/detail/dependent.hpp [1:3]
+ boost/python/detail/destroy.hpp [1:3]
+ boost/python/detail/exception_handler.hpp [1:3]
+ boost/python/detail/force_instantiate.hpp [1:3]
+ boost/python/detail/if_else.hpp [1:3]
+ boost/python/detail/invoke.hpp [3:5]
+ boost/python/detail/make_keyword_range_fn.hpp [1:3]
+ boost/python/detail/make_tuple.hpp [2:4]
+ boost/python/detail/map_entry.hpp [1:3]
+ boost/python/detail/mpl_lambda.hpp [1:3]
+ boost/python/detail/msvc_typeinfo.hpp [1:3]
+ boost/python/detail/not_specified.hpp [1:3]
+ boost/python/detail/operator_id.hpp [1:3]
+ boost/python/detail/overloads_fwd.hpp [1:3]
+ boost/python/detail/pointee.hpp [1:3]
+ boost/python/detail/preprocessor.hpp [1:3]
+ boost/python/detail/raw_pyobject.hpp [1:3]
+ boost/python/detail/referent_storage.hpp [1:3]
+ boost/python/detail/result.hpp [3:5]
+ boost/python/detail/scope.hpp [1:3]
+ boost/python/detail/signature.hpp [3:5]
+ boost/python/detail/string_literal.hpp [1:3]
+ boost/python/detail/target.hpp [3:5]
+ boost/python/detail/translate_exception.hpp [1:3]
+ boost/python/detail/type_list.hpp [1:3]
+ boost/python/detail/type_list_impl.hpp [2:4]
+ boost/python/detail/unwind_type.hpp [1:3]
+ boost/python/detail/void_ptr.hpp [1:3]
+ boost/python/detail/void_return.hpp [1:3]
+ boost/python/dict.hpp [1:3]
+ boost/python/enum.hpp [1:3]
+ boost/python/exception_translator.hpp [1:3]
+ boost/python/extract.hpp [1:3]
+ boost/python/handle.hpp [1:3]
+ boost/python/handle_fwd.hpp [1:3]
+ boost/python/has_back_reference.hpp [1:3]
+ boost/python/implicit.hpp [1:3]
+ boost/python/instance_holder.hpp [1:3]
+ boost/python/iterator.hpp [1:3]
+ boost/python/list.hpp [1:3]
+ boost/python/long.hpp [1:3]
+ boost/python/lvalue_from_pytype.hpp [1:3]
+ boost/python/manage_new_object.hpp [1:3]
+ boost/python/module_init.hpp [1:3]
+ boost/python/object.hpp [1:3]
+ boost/python/object/add_to_namespace.hpp [1:3]
+ boost/python/object/class_detail.hpp [1:3]
+ boost/python/object/enum_base.hpp [1:3]
+ boost/python/object/find_instance.hpp [1:3]
+ boost/python/object/function_handle.hpp [1:3]
+ boost/python/object/function_object.hpp [1:3]
+ boost/python/object/inheritance.hpp [1:3]
+ boost/python/object/instance.hpp [1:3]
+ boost/python/object/iterator.hpp [1:3]
+ boost/python/object/iterator_core.hpp [1:3]
+ boost/python/object/life_support.hpp [1:3]
+ boost/python/object/make_instance.hpp [1:3]
+ boost/python/object/make_ptr_instance.hpp [1:3]
+ boost/python/object/py_function.hpp [1:3]
+ boost/python/object/value_holder_fwd.hpp [1:3]
+ boost/python/object_attributes.hpp [1:3]
+ boost/python/object_call.hpp [2:4]
+ boost/python/object_core.hpp [1:3]
+ boost/python/object_fwd.hpp [1:3]
+ boost/python/object_items.hpp [1:3]
+ boost/python/object_operators.hpp [1:3]
+ boost/python/object_protocol.hpp [1:3]
+ boost/python/object_protocol_core.hpp [1:3]
+ boost/python/object_slices.hpp [1:3]
+ boost/python/operators.hpp [1:3]
+ boost/python/other.hpp [5:7]
+ boost/python/overloads.hpp [1:3]
+ boost/python/pointee.hpp [1:3]
+ boost/python/proxy.hpp [1:3]
+ boost/python/ptr.hpp [5:7]
+ boost/python/refcount.hpp [1:3]
+ boost/python/reference_existing_object.hpp [1:3]
+ boost/python/register_ptr_to_python.hpp [1:3]
+ boost/python/return_by_value.hpp [1:3]
+ boost/python/return_internal_reference.hpp [1:3]
+ boost/python/return_value_policy.hpp [1:3]
+ boost/python/scope.hpp [1:3]
+ boost/python/self.hpp [1:3]
+ boost/python/slice_nil.hpp [1:3]
+ boost/python/str.hpp [1:3]
+ boost/python/tag.hpp [1:3]
+ boost/python/to_python_converter.hpp [1:3]
+ boost/python/to_python_indirect.hpp [1:3]
+ boost/python/to_python_value.hpp [1:4]
+ boost/python/tuple.hpp [1:3]
+ boost/python/type_id.hpp [1:3]
+ boost/python/with_custodian_and_ward.hpp [1:3]
+ libs/python/src/converter/arg_to_python_base.cpp [1:3]
+ libs/python/src/converter/builtin_converters.cpp [1:3]
+ libs/python/src/converter/from_python.cpp [1:3]
+ libs/python/src/list.cpp [1:3]
+ libs/python/src/long.cpp [1:3]
+ libs/python/src/object/enum.cpp [1:3]
+ libs/python/src/object/inheritance.cpp [1:3]
+ libs/python/src/object/iterator.cpp [1:3]
+ libs/python/src/object/life_support.cpp [1:3]
+ libs/python/src/object_operators.cpp [1:3]
+ libs/python/src/object_protocol.cpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 18db89d56f07e1620883cb27717f7211
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/metaparse/v1/fail_tag.hpp at line 6
+ License text:
+ // Copyright Abel Sinkovics (abel@sinkovics.hu) 2009 - 2012.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/metaparse/v1/fail_tag.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 18e0c3d28e19c9d848cf5c5d5be379bf
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/recalculate.hpp [3:6]
+ boost/geometry/index/detail/rtree/utilities/statistics.hpp [5:6]
+ boost/geometry/policies/robustness/no_rescale_policy.hpp [3:6]
+ boost/geometry/policies/robustness/robust_point_type.hpp [3:6]
+ boost/geometry/policies/robustness/segment_ratio_type.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 190342424801597afe0e19a4020a4dc9
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2005-2008.
+ // Copyright (c) 2006-2008 Johan Rade
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/fpclassify.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 190ae12968af08ba9e725d4fa3ab1c7b
+BELONGS ya.make
+ License text:
+ // This file was modified by Oracle on 2016.
+ // Modifications copyright (c) 2016, Oracle and/or its affiliates.
+ // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/arithmetic/cross_product.hpp [7:9]
+ boost/geometry/io/svg/write.hpp [6:7]
+ boost/geometry/io/svg/write_svg.hpp [6:7]
+ boost/geometry/io/svg/write_svg_multi.hpp [5:6]
+ boost/geometry/strategies/spherical/ssf.hpp [5:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 19a141ac32c2d6744e67364352a18f40
+BELONGS ya.make
+ License text:
+ // (C) Copyright 2008 Anthony Williams
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/detail/thread_heap_alloc.hpp [6:6]
+ boost/thread/pthread/thread_heap_alloc.hpp [4:6]
+ boost/thread/win32/mfc_thread_init.hpp [6:7]
+ boost/thread/win32/thread_data.hpp [6:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 19a677ea551d13c9ed7c1861dbc9551b
+BELONGS ya.make
+ License text:
+ // (C) Copyright 2014 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/exceptional_ptr.hpp [4:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1a0e7f0eeffa7515571f6386c345dfa0
+BELONGS ya.make
+ License text:
+ Copyright (c) 2014 Thomas Bernard
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/x3/directive/no_case.hpp [2:2]
+ boost/spirit/home/x3/directive/repeat.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1a243be6fc839e64391e9bd0d3aea29a
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/edmunds_karp_max_flow.hpp at line 4
+ License text:
+ // (c) Copyright Juergen Hunold 2008
+ // Use, modification and distribution is subject to the Boost Software
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/edmunds_karp_max_flow.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1a3253e5b49a77f2dc95004f816c7fa1
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/move/detail/meta_utils.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2012-2015.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/move/detail/meta_utils.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1a3cdf7829fa3778821cc02be36b9488
+BELONGS ya.make
+ License text:
+ // Copyright 2010 John Maddock
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_traits/add_lvalue_reference.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1a5bfddf0b038e143ef61e1e55728936
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2009 Joel de Guzman
+ Copyright (c) 2007 Dan Marsden
+ Copyright (c) 2010-2011 Christopher Schmidt
+ Copyright (c) 2013-2014 Damien Buhl
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/adapted/adt/adapt_assoc_adt.hpp [2:5]
+ boost/fusion/adapted/struct/adapt_assoc_struct.hpp [2:4]
+ boost/fusion/algorithm/iteration/detail/preprocessed/fold.hpp [2:4]
+ boost/fusion/algorithm/iteration/fold.hpp [2:5]
+ boost/fusion/algorithm/iteration/fold.hpp [35:37]
+ boost/fusion/algorithm/iteration/for_each.hpp [2:3]
+ boost/fusion/algorithm/query/all.hpp [2:3]
+ boost/fusion/algorithm/query/any.hpp [2:4]
+ boost/fusion/algorithm/query/count_if.hpp [2:3]
+ boost/fusion/algorithm/query/detail/all.hpp [2:3]
+ boost/fusion/algorithm/query/detail/any.hpp [2:4]
+ boost/fusion/algorithm/query/detail/count_if.hpp [2:3]
+ boost/fusion/algorithm/query/detail/find_if.hpp [2:4]
+ boost/fusion/algorithm/query/none.hpp [2:3]
+ boost/fusion/view/transform_view/detail/apply_transform_result.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1a685e898b4592da150472c48fb0097e
+BELONGS ya.make
+ License text:
+ Copyright (c) 2006 Daniel Wallin
+ Copyright (c) 2005 Dan Marsden
+ Copyright (c) 2007 Joel de Guzman
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/phoenix/stl.hpp [2:4]
+ boost/phoenix/stl/algorithm.hpp [2:5]
+ boost/phoenix/stl/container.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1a8332990a75c7d0ee74d02b5ac451fd
+BELONGS ya.make
+ License text:
+ // (C) Copyright John Maddock 2001 - 2003
+ // (C) Copyright Jens Maurer 2001
+ // (C) Copyright Peter Dimov 2001
+ // (C) Copyright Darin Adler 2001
+ // (C) Copyright Beman Dawes 2002
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/filesystem/detail/macro_value.hpp [3:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1a93e11c2572326c6a8b7cbe63d4f6a3
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/warning_disable.hpp at line 3, boost/math/bindings/e_float.hpp at line 3, boost/math/bindings/mpfr.hpp at line 3, boost/math/bindings/mpreal.hpp at line 3, boost/math/distributions/detail/generic_mode.hpp at line 3, boost/math/distributions/detail/generic_quantile.hpp at line 3, boost/math/distributions/laplace.hpp at line 3, boost/math/distributions/non_central_beta.hpp at line 5, boost/math/distributions/non_central_chi_squared.hpp at line 5, boost/math/distributions/non_central_f.hpp at line 5, boost/math/distributions/non_central_t.hpp at line 5, boost/math/special_functions/detail/round_fwd.hpp at line 3, boost/math/tr1.hpp at line 3
+ License text:
+ // Copyright John Maddock 2008
+ // Use, modification, and distribution is subject to the Boost Software
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/warning_disable.hpp [1:3]
+ boost/math/bindings/e_float.hpp [1:3]
+ boost/math/bindings/mpfr.hpp [1:3]
+ boost/math/bindings/mpreal.hpp [1:3]
+ boost/math/distributions/detail/generic_mode.hpp [1:1]
+ boost/math/distributions/detail/generic_quantile.hpp [1:3]
+ boost/math/distributions/laplace.hpp [1:3]
+ boost/math/distributions/non_central_beta.hpp [3:3]
+ boost/math/distributions/non_central_chi_squared.hpp [3:3]
+ boost/math/distributions/non_central_f.hpp [3:3]
+ boost/math/distributions/non_central_t.hpp [3:3]
+ boost/math/special_functions/detail/round_fwd.hpp [1:1]
+ boost/math/tr1.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1aaf18d7a866b2a0f3d63bce77bf1c79
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/pending/iterator_tests.hpp at line 3
+ License text:
+ // Copyright David Abrahams and Jeremy Siek 2003.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/pending/iterator_tests.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1ab986157400dd432a8bcb0c9a170495
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/ptr_container/detail/meta_functions.hpp at line 6, boost/ptr_container/ptr_circular_buffer.hpp at line 6, boost/ptr_container/ptr_inserter.hpp at line 6, boost/ptr_container/ptr_unordered_map.hpp at line 6, boost/ptr_container/ptr_unordered_set.hpp at line 6, boost/ptr_container/serialize_ptr_circular_buffer.hpp at line 6, boost/ptr_container/serialize_ptr_unordered_map.hpp at line 6, boost/ptr_container/serialize_ptr_unordered_set.hpp at line 6
+ License text:
+ // Copyright Thorsten Ottosen 2008. Use, modification and
+ // distribution is subject to the Boost Software License, Version
+ // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/ptr_container/detail/meta_functions.hpp [4:6]
+ boost/ptr_container/ptr_circular_buffer.hpp [4:6]
+ boost/ptr_container/ptr_inserter.hpp [4:6]
+ boost/ptr_container/ptr_unordered_map.hpp [4:6]
+ boost/ptr_container/ptr_unordered_set.hpp [4:6]
+ boost/ptr_container/serialize_ptr_circular_buffer.hpp [4:6]
+ boost/ptr_container/serialize_ptr_unordered_map.hpp [4:6]
+ boost/ptr_container/serialize_ptr_unordered_set.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1abc3fcba70e66cde30b4179bcb3f53f
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2011-2018 Adam Wulkiewicz, Lodz, Poland.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/index/detail/rtree/node/scoped_deallocator.hpp [5:5]
+ boost/geometry/index/detail/rtree/node/variant_dynamic.hpp [5:5]
+ boost/geometry/index/detail/rtree/node/variant_static.hpp [5:5]
+ boost/geometry/index/detail/rtree/node/weak_dynamic.hpp [5:5]
+ boost/geometry/index/detail/rtree/node/weak_static.hpp [5:5]
+ boost/geometry/index/predicates.hpp [5:5]
+ boost/geometry/index/rtree.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1b49b31378926fed6bad2e9e34790202
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/pending/container_traits.hpp at line 5, boost/pending/detail/disjoint_sets.hpp at line 5, boost/pending/detail/property.hpp at line 5, boost/pending/fibonacci_heap.hpp at line 5, boost/pending/property.hpp at line 5, boost/pending/queue.hpp at line 5, boost/pending/stringtok.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/pending/container_traits.hpp [1:5]
+ boost/pending/detail/disjoint_sets.hpp [1:3]
+ boost/pending/detail/property.hpp [1:3]
+ boost/pending/fibonacci_heap.hpp [1:3]
+ boost/pending/property.hpp [1:3]
+ boost/pending/queue.hpp [1:3]
+ boost/pending/stringtok.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1b648647338e7dfb30cf8f41aab9764b
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001-2011 Thomas Bernard
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/repository/home/support/kwd.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1b72a977bcabcebb1599cb0a79d665a2
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/random/hyperexponential_distribution.hpp at line 5
+ License text:
+ * Copyright Marco Guazzone 2014
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/random/hyperexponential_distribution.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1b7cfe3c28b945889d356efeb8c494b0
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/metaparse/v1/cpp11/first_of.hpp at line 6, boost/metaparse/v1/cpp11/impl/nth_of_c.hpp at line 6, boost/metaparse/v1/cpp11/impl/nth_of_c_skip_remaining.hpp at line 6, boost/metaparse/v1/cpp11/last_of.hpp at line 6, boost/metaparse/v1/cpp11/nth_of.hpp at line 6, boost/metaparse/v1/cpp11/nth_of_c.hpp at line 6, boost/metaparse/v1/first_of.hpp at line 6, boost/metaparse/v1/fwd/string.hpp at line 6, boost/metaparse/v1/last_of.hpp at line 6, boost/metaparse/v1/nth_of.hpp at line 6, boost/metaparse/v1/nth_of_c.hpp at line 6, boost/metaparse/v1/string.hpp at line 6
+ License text:
+ // Copyright Abel Sinkovics (abel@sinkovics.hu) 2017.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/metaparse/v1/cpp11/first_of.hpp [4:6]
+ boost/metaparse/v1/cpp11/impl/nth_of_c.hpp [4:6]
+ boost/metaparse/v1/cpp11/impl/nth_of_c_skip_remaining.hpp [4:6]
+ boost/metaparse/v1/cpp11/last_of.hpp [4:6]
+ boost/metaparse/v1/cpp11/nth_of.hpp [4:6]
+ boost/metaparse/v1/cpp11/nth_of_c.hpp [4:6]
+ boost/metaparse/v1/first_of.hpp [4:6]
+ boost/metaparse/v1/fwd/string.hpp [4:6]
+ boost/metaparse/v1/last_of.hpp [4:6]
+ boost/metaparse/v1/nth_of.hpp [4:6]
+ boost/metaparse/v1/nth_of_c.hpp [4:6]
+ boost/metaparse/v1/string.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1b80c8e7f5a5f53532760a321c46060b
+BELONGS ya.make
+ License text:
+ // Copyright Pavol Droba 2002-2004.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/algorithm/string.hpp [3:3]
+ boost/algorithm/string/find_iterator.hpp [3:3]
+ boost/algorithm/string_regex.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1b8dc6e6cec8ce31d4939e9ed0a1dbb8
+BELONGS ya.make
+ License text:
+ * Copyright Thijs van den Berg 2014
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/random/non_central_chi_squared_distribution.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1b9e68c88d4d11c6efc3d2b7423c816c
+BELONGS ya.make
+ License text:
+ // (C) Copyright Noel Belcourt 2007.
+ // Copyright 2017, NVIDIA CORPORATION.
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/pgi.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1bf87741a9385d7452ade49e1b079010
+BELONGS ya.make
+ License text:
+ // Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
+ // Copyright 2010 Thomas Claveirole
+ // Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek, Thomas Claveirole
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/adjacency_list.hpp [2:4]
+ boost/graph/bellman_ford_shortest_paths.hpp [3:4]
+ boost/graph/breadth_first_search.hpp [3:4]
+ boost/graph/cuthill_mckee_ordering.hpp [2:5]
+ boost/graph/depth_first_search.hpp [2:4]
+ boost/graph/detail/adj_list_edge_iterator.hpp [3:4]
+ boost/graph/detail/adjacency_list.hpp [3:5]
+ boost/graph/detail/array_binary_tree.hpp [3:4]
+ boost/graph/detail/connected_components.hpp [2:3]
+ boost/graph/detail/edge.hpp [3:4]
+ boost/graph/detail/incidence_iterator.hpp [3:4]
+ boost/graph/detail/self_avoiding_walk.hpp [2:3]
+ boost/graph/detail/sparse_ordering.hpp [2:5]
+ boost/graph/dijkstra_shortest_paths.hpp [2:3]
+ boost/graph/dijkstra_shortest_paths_no_color_map.hpp [2:4]
+ boost/graph/edge_list.hpp [2:3]
+ boost/graph/filtered_graph.hpp [2:3]
+ boost/graph/graph_as_tree.hpp [3:4]
+ boost/graph/graph_concepts.hpp [3:4]
+ boost/graph/graph_traits.hpp [2:3]
+ boost/graph/graph_utility.hpp [3:4]
+ boost/graph/johnson_all_pairs_shortest.hpp [2:3]
+ boost/graph/king_ordering.hpp [2:5]
+ boost/graph/kruskal_min_spanning_tree.hpp [3:4]
+ boost/graph/leda_graph.hpp [2:6]
+ boost/graph/matrix_as_graph.hpp [3:4]
+ boost/graph/named_function_params.hpp [2:3]
+ boost/graph/neighbor_bfs.hpp [3:4]
+ boost/graph/prim_minimum_spanning_tree.hpp [2:3]
+ boost/graph/properties.hpp [2:3]
+ boost/graph/random.hpp [2:4]
+ boost/graph/read_dimacs.hpp [2:3]
+ boost/graph/relax.hpp [2:3]
+ boost/graph/sequential_vertex_coloring.hpp [2:4]
+ boost/graph/smallest_last_ordering.hpp [2:3]
+ boost/graph/strong_components.hpp [3:4]
+ boost/graph/topological_sort.hpp [3:4]
+ boost/graph/transpose_graph.hpp [3:4]
+ boost/graph/undirected_dfs.hpp [3:4]
+ boost/graph/vector_as_graph.hpp [2:5]
+ boost/graph/visitors.hpp [2:3]
+ boost/pending/bucket_sorter.hpp [3:4]
+ boost/pending/disjoint_sets.hpp [3:4]
+ boost/pending/indirect_cmp.hpp [3:4]
+ boost/pending/is_heap.hpp [3:4]
+ boost/pending/mutable_heap.hpp [3:4]
+ boost/pending/mutable_queue.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1c034100ff11e3930ab970dbeb694450
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/hp_acc.hpp [1:8]
+ boost/config/platform/hpux.hpp [1:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1c03bc5dd84750a354e472dd50319748
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/constants/constants.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1c1008010a34f57eb6e59b47766f5371
+BELONGS ya.make
+ License text:
+ // Copyright Aleksey Gurtovoy 2002-2006
+ // Copyright David Abrahams 2002-2003
+ // Copyright Daniel Walker 2007
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/has_xxx.hpp [5:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1c18279f60677577782048946d4fcdc9
+BELONGS ya.make
+ License text:
+ Copyright (c) 2005-2010 Joel de Guzman
+ Copyright (c) 2010 Thomas Heller
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/phoenix/core/actor.hpp [2:5]
+ boost/phoenix/core/arity.hpp [2:3]
+ boost/phoenix/core/debug.hpp [2:4]
+ boost/phoenix/core/detail/cpp03/actor_operator.hpp [24:25]
+ boost/phoenix/core/detail/cpp03/actor_result_of.hpp [25:26]
+ boost/phoenix/core/detail/cpp03/call.hpp [21:22]
+ boost/phoenix/core/detail/cpp03/expression.hpp [18:20]
+ boost/phoenix/core/detail/cpp03/function_equal.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/function_equal.hpp [21:23]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_10.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_20.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_30.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_40.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_50.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_10.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_20.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_30.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_40.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_50.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/call_10.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/call_20.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/call_30.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/call_40.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/call_50.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/expression_10.hpp [2:4]
+ boost/phoenix/core/detail/cpp03/preprocessed/expression_20.hpp [2:4]
+ boost/phoenix/core/detail/cpp03/preprocessed/expression_30.hpp [2:4]
+ boost/phoenix/core/detail/cpp03/preprocessed/expression_40.hpp [2:4]
+ boost/phoenix/core/detail/cpp03/preprocessed/expression_50.hpp [2:4]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_equal_10.hpp [2:4]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_equal_20.hpp [2:4]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_equal_30.hpp [2:4]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_equal_40.hpp [2:4]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_equal_50.hpp [2:4]
+ boost/phoenix/core/detail/expression.hpp [2:2]
+ boost/phoenix/core/function_equal.hpp [2:3]
+ boost/phoenix/core/is_nullary.hpp [2:4]
+ boost/phoenix/core/meta_grammar.hpp [2:4]
+ boost/phoenix/core/reference.hpp [2:3]
+ boost/phoenix/core/terminal.hpp [2:3]
+ boost/phoenix/core/terminal_fwd.hpp [2:3]
+ boost/phoenix/core/value.hpp [2:3]
+ boost/phoenix/core/visit_each.hpp [2:3]
+ boost/phoenix/function/adapt_function.hpp [2:4]
+ boost/phoenix/function/detail/cpp03/function_operator.hpp [21:22]
+ boost/phoenix/function/detail/cpp03/preprocessed/function_operator_10.hpp [2:3]
+ boost/phoenix/function/detail/cpp03/preprocessed/function_operator_20.hpp [2:3]
+ boost/phoenix/function/detail/cpp03/preprocessed/function_operator_30.hpp [2:3]
+ boost/phoenix/function/detail/cpp03/preprocessed/function_operator_40.hpp [2:3]
+ boost/phoenix/function/detail/cpp03/preprocessed/function_operator_50.hpp [2:3]
+ boost/phoenix/fusion.hpp [2:3]
+ boost/phoenix/fusion/at.hpp [2:4]
+ boost/phoenix/object.hpp [2:3]
+ boost/phoenix/object/const_cast.hpp [2:3]
+ boost/phoenix/object/construct.hpp [2:3]
+ boost/phoenix/object/delete.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/construct.hpp [21:22]
+ boost/phoenix/object/detail/cpp03/construct_eval.hpp [23:24]
+ boost/phoenix/object/detail/cpp03/new.hpp [21:22]
+ boost/phoenix/object/detail/cpp03/new_eval.hpp [23:24]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_10.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_20.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_30.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_40.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_50.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_10.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_20.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_30.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_40.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_50.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_10.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_20.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_30.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_40.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_50.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_eval_10.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_eval_20.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_eval_30.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_eval_40.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_eval_50.hpp [2:3]
+ boost/phoenix/object/detail/target.hpp [2:3]
+ boost/phoenix/object/dynamic_cast.hpp [2:3]
+ boost/phoenix/object/new.hpp [2:3]
+ boost/phoenix/object/reinterpret_cast.hpp [2:3]
+ boost/phoenix/object/static_cast.hpp [2:3]
+ boost/phoenix/operator.hpp [2:3]
+ boost/phoenix/operator/arithmetic.hpp [2:3]
+ boost/phoenix/operator/bitwise.hpp [2:3]
+ boost/phoenix/operator/comparison.hpp [2:3]
+ boost/phoenix/operator/detail/cpp03/mem_fun_ptr_eval.hpp [15:17]
+ boost/phoenix/operator/detail/cpp03/mem_fun_ptr_eval_result_of.hpp [15:17]
+ boost/phoenix/operator/detail/cpp03/mem_fun_ptr_gen.hpp [15:16]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_10.hpp [2:4]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_20.hpp [2:4]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_30.hpp [2:4]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_40.hpp [2:4]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_50.hpp [2:4]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_10.hpp [2:4]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_20.hpp [2:4]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_30.hpp [2:4]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_40.hpp [2:4]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_50.hpp [2:4]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_10.hpp [2:3]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_20.hpp [2:3]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_30.hpp [2:3]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_40.hpp [2:3]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_50.hpp [2:3]
+ boost/phoenix/operator/detail/define_operator.hpp [2:3]
+ boost/phoenix/operator/detail/undef_operator.hpp [2:2]
+ boost/phoenix/operator/if_else.hpp [2:3]
+ boost/phoenix/operator/io.hpp [2:3]
+ boost/phoenix/operator/logical.hpp [2:3]
+ boost/phoenix/operator/member.hpp [2:4]
+ boost/phoenix/operator/self.hpp [2:3]
+ boost/phoenix/phoenix.hpp [2:3]
+ boost/phoenix/scope.hpp [2:3]
+ boost/phoenix/scope/detail/cpp03/dynamic.hpp [25:26]
+ boost/phoenix/scope/detail/cpp03/lambda.hpp [14:17]
+ boost/phoenix/scope/detail/cpp03/local_gen.hpp [3:4]
+ boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_10.hpp [2:3]
+ boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_20.hpp [2:3]
+ boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_30.hpp [2:3]
+ boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_40.hpp [2:3]
+ boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_50.hpp [2:3]
+ boost/phoenix/scope/detail/cpp03/preprocessed/lambda_10.hpp [2:5]
+ boost/phoenix/scope/detail/cpp03/preprocessed/lambda_20.hpp [2:5]
+ boost/phoenix/scope/detail/cpp03/preprocessed/lambda_30.hpp [2:5]
+ boost/phoenix/scope/detail/cpp03/preprocessed/lambda_40.hpp [2:5]
+ boost/phoenix/scope/detail/cpp03/preprocessed/lambda_50.hpp [2:5]
+ boost/phoenix/scope/dynamic.hpp [2:4]
+ boost/phoenix/scope/lambda.hpp [2:5]
+ boost/phoenix/scope/let.hpp [2:5]
+ boost/phoenix/scope/scoped_environment.hpp [2:3]
+ boost/phoenix/statement/detail/catch_push_back.hpp [20:21]
+ boost/phoenix/statement/detail/preprocessed/catch_push_back_10.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/catch_push_back_20.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/catch_push_back_30.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/catch_push_back_40.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/catch_push_back_50.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/switch_10.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/switch_20.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/switch_30.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/switch_40.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/switch_50.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/try_catch_eval_10.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/try_catch_eval_20.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/try_catch_eval_30.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/try_catch_eval_40.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/try_catch_eval_50.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/try_catch_expression_10.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/try_catch_expression_20.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/try_catch_expression_30.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/try_catch_expression_40.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/try_catch_expression_50.hpp [2:3]
+ boost/phoenix/statement/detail/switch.hpp [25:26]
+ boost/phoenix/statement/detail/try_catch_eval.hpp [25:26]
+ boost/phoenix/statement/detail/try_catch_expression.hpp [25:26]
+ boost/phoenix/statement/do_while.hpp [2:3]
+ boost/phoenix/statement/for.hpp [2:3]
+ boost/phoenix/statement/sequence.hpp [2:4]
+ boost/phoenix/statement/switch.hpp [2:3]
+ boost/phoenix/statement/throw.hpp [2:4]
+ boost/phoenix/statement/try_catch.hpp [2:4]
+ boost/phoenix/statement/while.hpp [2:3]
+ boost/phoenix/support/detail/iterate.hpp [2:2]
+ boost/phoenix/support/detail/iterate_define.hpp [2:2]
+ boost/phoenix/support/detail/iterate_undef.hpp [2:2]
+ boost/phoenix/support/iterate.hpp [2:2]
+ boost/phoenix/support/preprocessed/vector_10.hpp [2:3]
+ boost/phoenix/support/preprocessed/vector_20.hpp [2:3]
+ boost/phoenix/support/preprocessed/vector_30.hpp [2:3]
+ boost/phoenix/support/preprocessed/vector_40.hpp [2:3]
+ boost/phoenix/support/preprocessed/vector_50.hpp [2:3]
+ boost/phoenix/support/vector.hpp [41:42]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1c595f63ea7712179f9a8b6862388b47
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/asio/detail/limits.hpp [5:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1c9bd66a67f098d2c88bc6c83fae2eb5
+BELONGS libs/context/ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: libs/context/src/asm/jump_arm64_aapcs_elf_gas.S at line 4, libs/context/src/asm/jump_arm64_aapcs_macho_gas.S at line 4, libs/context/src/asm/make_arm64_aapcs_elf_gas.S at line 4, libs/context/src/asm/make_arm64_aapcs_macho_gas.S at line 4, libs/context/src/asm/ontop_arm64_aapcs_elf_gas.S at line 4, libs/context/src/asm/ontop_arm64_aapcs_macho_gas.S at line 4
+ License text:
+ Copyright Edward Nevill + Oliver Kowalke 2015
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ libs/context/src/asm/jump_arm64_aapcs_elf_gas.S [2:4]
+ libs/context/src/asm/jump_arm64_aapcs_macho_gas.S [2:4]
+ libs/context/src/asm/make_arm64_aapcs_elf_gas.S [2:4]
+ libs/context/src/asm/make_arm64_aapcs_macho_gas.S [2:4]
+ libs/context/src/asm/ontop_arm64_aapcs_elf_gas.S [2:4]
+ libs/context/src/asm/ontop_arm64_aapcs_macho_gas.S [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1ca91ef6f05ea3ed2297c8183c32193a
+BELONGS ya.make
+ License text:
+ Copyright (c) 2004 Angus Leeming
+ Copyright (c) 2004 Joel de Guzman
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/phoenix/stl/container/container.hpp [2:3]
+ boost/phoenix/stl/container/detail/container.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1ccfdb8c8e3f3c9ca15360e826c2e6d3
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2008-11.
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/tr1_c_macros.ipp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1ce35bdc48274a02cf4ec2773a903c47
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/random/detail/signed_unsigned_tools.hpp at line 5
+ License text:
+ * Copyright Jens Maurer 2006
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/random/detail/signed_unsigned_tools.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1d0d15a66be2e325955709e25d49dab9
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2003-2009 Matthias Christian Schabel
+ // Copyright (C) 2007-2009 Steven Watanabe
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/units/base_units/us/pound_force.hpp [4:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1d174c5ff96b62285624fb2326e00394
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/detail/safe_bool.hpp at line 5
+ License text:
+ // Copyright (c) 2010 Neil Groves
+ // Distributed under the Boost Software License, Version 1.0.
+ // See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/range/detail/safe_bool.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1d32a7b49a04abb2fd3dbc34628bab5d
+BELONGS ya.make
+ License text:
+ // Copyright Beman Dawes, 2009
+ // Copyright (C) 2011-2012 Vicente J. Botet Escriba
+ // Copyright (C) 2012 Anthony Williams
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/core/scoped_enum.hpp [3:5]
+ boost/core/underlying_type.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1d556732a0c7feaf3d0bed45f7e37a82
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2009 Helge Bahmann
+ // Copyright (c) 2012 - 2014, 2017 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/atomic/detail/interlocked.hpp [4:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1d83636a81c575d946d6e70ade01c4f9
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2010 Joel de Guzman
+ Copyright (c) 2001-2010 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/include/karma_duplicate.hpp [2:4]
+ boost/spirit/include/karma_grammar.hpp [2:4]
+ boost/spirit/include/karma_rule.hpp [2:4]
+ boost/spirit/include/lex_char_token_def.hpp [2:4]
+ boost/spirit/include/lex_generate_static_lexertl.hpp [2:4]
+ boost/spirit/include/lex_plain_token.hpp [2:4]
+ boost/spirit/include/lex_primitives.hpp [2:4]
+ boost/spirit/include/lex_tokenize_and_parse_attr.hpp [2:4]
+ boost/spirit/include/qi_matches.hpp [2:4]
+ boost/spirit/include/qi_no_skip.hpp [2:4]
+ boost/spirit/include/support_adapt_adt_attributes.hpp [2:4]
+ boost/spirit/include/support_attributes_fwd.hpp [2:4]
+ boost/spirit/include/support_container.hpp [2:4]
+ boost/spirit/include/support_extended_variant.hpp [2:4]
+ boost/spirit/include/support_ostream_iterator.hpp [2:4]
+ boost/spirit/include/support_utree.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1daddaec4a141024c460f121eb640798
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/common_edg.hpp [1:7]
+ boost/config/compiler/kai.hpp [1:5]
+ boost/config/compiler/sunpro_cc.hpp [1:7]
+ boost/config/platform/hpux.hpp [1:7]
+ boost/config/stdlib/dinkumware.hpp [1:7]
+ boost/detail/iterator.hpp [1:3]
+ boost/iterator/detail/config_def.hpp [1:5]
+ boost/iterator/detail/enable_if.hpp [1:5]
+ boost/iterator/filter_iterator.hpp [1:5]
+ boost/iterator/indirect_iterator.hpp [1:5]
+ boost/iterator/interoperable.hpp [1:5]
+ boost/iterator/iterator_adaptor.hpp [1:5]
+ boost/iterator/iterator_facade.hpp [1:5]
+ boost/iterator/reverse_iterator.hpp [1:5]
+ boost/iterator/transform_iterator.hpp [1:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1dda61b33b296fd3f69276f5d576f7dd
+BELONGS libs/serialization/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/archive/archive_exception.hpp at line 14, boost/archive/basic_archive.hpp at line 14, boost/archive/basic_binary_iarchive.hpp at line 21, boost/archive/basic_binary_iprimitive.hpp at line 25, boost/archive/basic_binary_oarchive.hpp at line 14, boost/archive/basic_binary_oprimitive.hpp at line 14, boost/archive/basic_text_iarchive.hpp at line 14, boost/archive/basic_text_iprimitive.hpp at line 14, boost/archive/basic_text_oarchive.hpp at line 14, boost/archive/basic_text_oprimitive.hpp at line 14, boost/archive/basic_xml_archive.hpp at line 14, boost/archive/basic_xml_iarchive.hpp at line 14, boost/archive/basic_xml_oarchive.hpp at line 14, boost/archive/binary_iarchive.hpp at line 14, boost/archive/binary_iarchive_impl.hpp at line 14, boost/archive/binary_oarchive.hpp at line 14, boost/archive/binary_oarchive_impl.hpp at line 14, boost/archive/binary_wiarchive.hpp at line 14, boost/archive/binary_woarchive.hpp at line 14, boost/archive/detail/abi_prefix.hpp at line 6, boost/archive/detail/abi_suffix.hpp at line 6, boost/archive/detail/basic_iarchive.hpp at line 14, boost/archive/detail/basic_iserializer.hpp at line 14, boost/archive/detail/basic_oarchive.hpp at line 14, boost/archive/detail/basic_oserializer.hpp at line 14, boost/archive/detail/basic_pointer_iserializer.hpp at line 15, boost/archive/detail/basic_pointer_oserializer.hpp at line 15, boost/archive/detail/basic_serializer.hpp at line 14, boost/archive/detail/basic_serializer_map.hpp at line 14, boost/archive/detail/common_iarchive.hpp at line 14, boost/archive/detail/common_oarchive.hpp at line 14, boost/archive/detail/interface_iarchive.hpp at line 18, boost/archive/detail/interface_oarchive.hpp at line 14, boost/archive/detail/iserializer.hpp at line 20, boost/archive/detail/oserializer.hpp at line 20, boost/archive/detail/polymorphic_iarchive_route.hpp at line 14, boost/archive/detail/polymorphic_oarchive_route.hpp at line 14, boost/archive/dinkumware.hpp at line 14, boost/archive/impl/archive_serializer_map.ipp at line 6, boost/archive/impl/basic_binary_iarchive.ipp at line 6, boost/archive/impl/basic_binary_iprimitive.ipp at line 6, boost/archive/impl/basic_binary_oarchive.ipp at line 6, boost/archive/impl/basic_binary_oprimitive.ipp at line 6, boost/archive/impl/basic_text_iarchive.ipp at line 6, boost/archive/impl/basic_text_iprimitive.ipp at line 6, boost/archive/impl/basic_text_oarchive.ipp at line 6, boost/archive/impl/basic_text_oprimitive.ipp at line 6, boost/archive/impl/basic_xml_grammar.hpp at line 14, boost/archive/impl/basic_xml_iarchive.ipp at line 6, boost/archive/impl/basic_xml_oarchive.ipp at line 6, boost/archive/impl/text_iarchive_impl.ipp at line 6, boost/archive/impl/text_oarchive_impl.ipp at line 6, boost/archive/impl/text_wiarchive_impl.ipp at line 6, boost/archive/impl/text_woarchive_impl.ipp at line 6, boost/archive/impl/xml_iarchive_impl.ipp at line 6, boost/archive/impl/xml_oarchive_impl.ipp at line 6, boost/archive/impl/xml_wiarchive_impl.ipp at line 6, boost/archive/impl/xml_woarchive_impl.ipp at line 6, boost/archive/iterators/base64_exception.hpp at line 14, boost/archive/iterators/base64_from_binary.hpp at line 14, boost/archive/iterators/binary_from_base64.hpp at line 14, boost/archive/iterators/dataflow.hpp at line 14, boost/archive/iterators/dataflow_exception.hpp at line 14, boost/archive/iterators/escape.hpp at line 14, boost/archive/iterators/insert_linebreaks.hpp at line 14, boost/archive/iterators/istream_iterator.hpp at line 14, boost/archive/iterators/mb_from_wchar.hpp at line 14, boost/archive/iterators/ostream_iterator.hpp at line 14, boost/archive/iterators/remove_whitespace.hpp at line 14, boost/archive/iterators/transform_width.hpp at line 14, boost/archive/iterators/unescape.hpp at line 14, boost/archive/iterators/wchar_from_mb.hpp at line 14, boost/archive/iterators/xml_escape.hpp at line 14, boost/archive/iterators/xml_unescape.hpp at line 14, boost/archive/iterators/xml_unescape_exception.hpp at line 14, boost/archive/polymorphic_binary_iarchive.hpp at line 14, boost/archive/polymorphic_binary_oarchive.hpp at line 14, boost/archive/polymorphic_iarchive.hpp at line 14, boost/archive/polymorphic_oarchive.hpp at line 14, boost/archive/polymorphic_text_iarchive.hpp at line 14, boost/archive/polymorphic_text_oarchive.hpp at line 14, boost/archive/polymorphic_text_wiarchive.hpp at line 14, boost/archive/polymorphic_text_woarchive.hpp at line 14, boost/archive/polymorphic_xml_iarchive.hpp at line 14, boost/archive/polymorphic_xml_oarchive.hpp at line 14, boost/archive/polymorphic_xml_wiarchive.hpp at line 14, boost/archive/polymorphic_xml_woarchive.hpp at line 14, boost/archive/text_iarchive.hpp at line 14, boost/archive/text_oarchive.hpp at line 14, boost/archive/text_wiarchive.hpp at line 14, boost/archive/text_woarchive.hpp at line 14, boost/archive/tmpdir.hpp at line 14, boost/archive/wcslen.hpp at line 14, boost/archive/xml_iarchive.hpp at line 14, boost/archive/xml_oarchive.hpp at line 14, boost/archive/xml_wiarchive.hpp at line 14, boost/archive/xml_woarchive.hpp at line 14, boost/serialization/access.hpp at line 14, boost/serialization/archive_input_unordered_map.hpp at line 15, boost/serialization/archive_input_unordered_set.hpp at line 14, boost/serialization/base_object.hpp at line 14, boost/serialization/binary_object.hpp at line 14, boost/serialization/boost_unordered_map.hpp at line 15, boost/serialization/boost_unordered_set.hpp at line 14, boost/serialization/collection_traits.hpp at line 14, boost/serialization/collections_load_imp.hpp at line 18, boost/serialization/collections_save_imp.hpp at line 14, boost/serialization/deque.hpp at line 14, boost/serialization/detail/is_default_constructible.hpp at line 14, boost/serialization/detail/stack_constructor.hpp at line 14, boost/serialization/export.hpp at line 14, boost/serialization/extended_type_info.hpp at line 14, boost/serialization/extended_type_info_no_rtti.hpp at line 16, boost/serialization/extended_type_info_typeid.hpp at line 16, boost/serialization/factory.hpp at line 14, boost/serialization/force_include.hpp at line 14, boost/serialization/forward_list.hpp at line 14, boost/serialization/hash_collections_load_imp.hpp at line 15, boost/serialization/hash_collections_save_imp.hpp at line 14, boost/serialization/hash_map.hpp at line 15, boost/serialization/hash_set.hpp at line 14, boost/serialization/level.hpp at line 14, boost/serialization/level_enum.hpp at line 14, boost/serialization/list.hpp at line 14, boost/serialization/nvp.hpp at line 14, boost/serialization/priority_queue.hpp at line 14, boost/serialization/serialization.hpp at line 21, boost/serialization/shared_ptr_132.hpp at line 14, boost/serialization/slist.hpp at line 14, boost/serialization/smart_cast.hpp at line 14, boost/serialization/split_free.hpp at line 14, boost/serialization/split_member.hpp at line 14, boost/serialization/string.hpp at line 15, boost/serialization/strong_typedef.hpp at line 14, boost/serialization/tracking.hpp at line 14, boost/serialization/tracking_enum.hpp at line 14, boost/serialization/traits.hpp at line 14, boost/serialization/type_info_implementation.hpp at line 14, boost/serialization/unique_ptr.hpp at line 14, boost/serialization/unordered_collections_load_imp.hpp at line 15, boost/serialization/unordered_collections_save_imp.hpp at line 14, boost/serialization/unordered_map.hpp at line 15, boost/serialization/unordered_set.hpp at line 14, boost/serialization/utility.hpp at line 15, boost/serialization/vector.hpp at line 14, boost/serialization/version.hpp at line 14, libs/serialization/src/basic_archive.cpp at line 6, libs/serialization/src/basic_iarchive.cpp at line 6, libs/serialization/src/basic_iserializer.cpp at line 6, libs/serialization/src/basic_oarchive.cpp at line 6, libs/serialization/src/basic_oserializer.cpp at line 6, libs/serialization/src/basic_pointer_iserializer.cpp at line 6, libs/serialization/src/basic_pointer_oserializer.cpp at line 6, libs/serialization/src/basic_serializer_map.cpp at line 6, libs/serialization/src/basic_text_iprimitive.cpp at line 6, libs/serialization/src/basic_text_wiprimitive.cpp at line 6, libs/serialization/src/basic_xml_archive.cpp at line 6, libs/serialization/src/basic_xml_grammar.ipp at line 6, libs/serialization/src/binary_iarchive.cpp at line 6, libs/serialization/src/binary_oarchive.cpp at line 6, libs/serialization/src/binary_wiarchive.cpp at line 6, libs/serialization/src/binary_woarchive.cpp at line 6, libs/serialization/src/extended_type_info.cpp at line 6, libs/serialization/src/extended_type_info_no_rtti.cpp at line 7, libs/serialization/src/extended_type_info_typeid.cpp at line 7, libs/serialization/src/polymorphic_iarchive.cpp at line 6, libs/serialization/src/polymorphic_oarchive.cpp at line 6, libs/serialization/src/text_iarchive.cpp at line 6, libs/serialization/src/text_oarchive.cpp at line 6, libs/serialization/src/text_wiarchive.cpp at line 6, libs/serialization/src/text_woarchive.cpp at line 6, libs/serialization/src/void_cast.cpp at line 6, libs/serialization/src/xml_grammar.cpp at line 6, libs/serialization/src/xml_iarchive.cpp at line 6, libs/serialization/src/xml_oarchive.cpp at line 6, libs/serialization/src/xml_wgrammar.cpp at line 6, libs/serialization/src/xml_wiarchive.cpp at line 6, libs/serialization/src/xml_woarchive.cpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/archive/archive_exception.hpp [12:14]
+ boost/archive/basic_archive.hpp [12:14]
+ boost/archive/basic_binary_iarchive.hpp [19:21]
+ boost/archive/basic_binary_iprimitive.hpp [23:25]
+ boost/archive/basic_binary_oarchive.hpp [12:14]
+ boost/archive/basic_binary_oprimitive.hpp [12:14]
+ boost/archive/basic_text_iarchive.hpp [12:14]
+ boost/archive/basic_text_iprimitive.hpp [12:14]
+ boost/archive/basic_text_oarchive.hpp [12:14]
+ boost/archive/basic_text_oprimitive.hpp [12:14]
+ boost/archive/basic_xml_archive.hpp [12:14]
+ boost/archive/basic_xml_iarchive.hpp [12:14]
+ boost/archive/basic_xml_oarchive.hpp [12:14]
+ boost/archive/binary_iarchive.hpp [12:14]
+ boost/archive/binary_iarchive_impl.hpp [12:14]
+ boost/archive/binary_oarchive.hpp [12:14]
+ boost/archive/binary_oarchive_impl.hpp [12:14]
+ boost/archive/binary_wiarchive.hpp [12:14]
+ boost/archive/binary_woarchive.hpp [12:14]
+ boost/archive/detail/abi_prefix.hpp [4:6]
+ boost/archive/detail/abi_suffix.hpp [4:6]
+ boost/archive/detail/basic_iarchive.hpp [12:14]
+ boost/archive/detail/basic_iserializer.hpp [12:14]
+ boost/archive/detail/basic_oarchive.hpp [12:14]
+ boost/archive/detail/basic_oserializer.hpp [12:14]
+ boost/archive/detail/basic_pointer_iserializer.hpp [13:15]
+ boost/archive/detail/basic_pointer_oserializer.hpp [13:15]
+ boost/archive/detail/basic_serializer.hpp [12:14]
+ boost/archive/detail/basic_serializer_map.hpp [12:14]
+ boost/archive/detail/common_iarchive.hpp [12:14]
+ boost/archive/detail/common_oarchive.hpp [12:14]
+ boost/archive/detail/interface_iarchive.hpp [16:18]
+ boost/archive/detail/interface_oarchive.hpp [12:14]
+ boost/archive/detail/iserializer.hpp [18:20]
+ boost/archive/detail/oserializer.hpp [18:20]
+ boost/archive/detail/polymorphic_iarchive_route.hpp [12:14]
+ boost/archive/detail/polymorphic_oarchive_route.hpp [12:14]
+ boost/archive/dinkumware.hpp [12:14]
+ boost/archive/impl/archive_serializer_map.ipp [4:6]
+ boost/archive/impl/basic_binary_iarchive.ipp [4:6]
+ boost/archive/impl/basic_binary_iprimitive.ipp [4:6]
+ boost/archive/impl/basic_binary_oarchive.ipp [4:6]
+ boost/archive/impl/basic_binary_oprimitive.ipp [4:6]
+ boost/archive/impl/basic_text_iarchive.ipp [4:6]
+ boost/archive/impl/basic_text_iprimitive.ipp [4:6]
+ boost/archive/impl/basic_text_oarchive.ipp [4:6]
+ boost/archive/impl/basic_text_oprimitive.ipp [4:6]
+ boost/archive/impl/basic_xml_grammar.hpp [12:14]
+ boost/archive/impl/basic_xml_iarchive.ipp [4:6]
+ boost/archive/impl/basic_xml_oarchive.ipp [4:6]
+ boost/archive/impl/text_iarchive_impl.ipp [4:6]
+ boost/archive/impl/text_oarchive_impl.ipp [4:6]
+ boost/archive/impl/text_wiarchive_impl.ipp [4:6]
+ boost/archive/impl/text_woarchive_impl.ipp [4:6]
+ boost/archive/impl/xml_iarchive_impl.ipp [4:6]
+ boost/archive/impl/xml_oarchive_impl.ipp [4:6]
+ boost/archive/impl/xml_wiarchive_impl.ipp [4:6]
+ boost/archive/impl/xml_woarchive_impl.ipp [4:6]
+ boost/archive/iterators/base64_exception.hpp [12:14]
+ boost/archive/iterators/base64_from_binary.hpp [12:14]
+ boost/archive/iterators/binary_from_base64.hpp [12:14]
+ boost/archive/iterators/dataflow.hpp [12:14]
+ boost/archive/iterators/dataflow_exception.hpp [12:14]
+ boost/archive/iterators/escape.hpp [12:14]
+ boost/archive/iterators/insert_linebreaks.hpp [12:14]
+ boost/archive/iterators/istream_iterator.hpp [12:14]
+ boost/archive/iterators/mb_from_wchar.hpp [12:14]
+ boost/archive/iterators/ostream_iterator.hpp [12:14]
+ boost/archive/iterators/remove_whitespace.hpp [12:14]
+ boost/archive/iterators/transform_width.hpp [12:14]
+ boost/archive/iterators/unescape.hpp [12:14]
+ boost/archive/iterators/wchar_from_mb.hpp [12:14]
+ boost/archive/iterators/xml_escape.hpp [12:14]
+ boost/archive/iterators/xml_unescape.hpp [12:14]
+ boost/archive/iterators/xml_unescape_exception.hpp [12:14]
+ boost/archive/polymorphic_binary_iarchive.hpp [12:14]
+ boost/archive/polymorphic_binary_oarchive.hpp [12:14]
+ boost/archive/polymorphic_iarchive.hpp [12:14]
+ boost/archive/polymorphic_oarchive.hpp [12:14]
+ boost/archive/polymorphic_text_iarchive.hpp [12:14]
+ boost/archive/polymorphic_text_oarchive.hpp [12:14]
+ boost/archive/polymorphic_text_wiarchive.hpp [12:14]
+ boost/archive/polymorphic_text_woarchive.hpp [12:14]
+ boost/archive/polymorphic_xml_iarchive.hpp [12:14]
+ boost/archive/polymorphic_xml_oarchive.hpp [12:14]
+ boost/archive/polymorphic_xml_wiarchive.hpp [12:14]
+ boost/archive/polymorphic_xml_woarchive.hpp [12:14]
+ boost/archive/text_iarchive.hpp [12:14]
+ boost/archive/text_oarchive.hpp [12:14]
+ boost/archive/text_wiarchive.hpp [12:14]
+ boost/archive/text_woarchive.hpp [12:14]
+ boost/archive/tmpdir.hpp [12:14]
+ boost/archive/wcslen.hpp [12:14]
+ boost/archive/xml_iarchive.hpp [12:14]
+ boost/archive/xml_oarchive.hpp [12:14]
+ boost/archive/xml_wiarchive.hpp [12:14]
+ boost/archive/xml_woarchive.hpp [12:14]
+ boost/serialization/access.hpp [12:14]
+ boost/serialization/archive_input_unordered_map.hpp [13:16]
+ boost/serialization/archive_input_unordered_set.hpp [12:15]
+ boost/serialization/base_object.hpp [12:14]
+ boost/serialization/binary_object.hpp [12:14]
+ boost/serialization/boost_unordered_map.hpp [13:16]
+ boost/serialization/boost_unordered_set.hpp [12:15]
+ boost/serialization/collection_traits.hpp [12:14]
+ boost/serialization/collections_load_imp.hpp [16:18]
+ boost/serialization/collections_save_imp.hpp [12:14]
+ boost/serialization/deque.hpp [12:14]
+ boost/serialization/detail/is_default_constructible.hpp [12:14]
+ boost/serialization/detail/stack_constructor.hpp [12:14]
+ boost/serialization/export.hpp [12:14]
+ boost/serialization/extended_type_info.hpp [12:14]
+ boost/serialization/extended_type_info_no_rtti.hpp [14:16]
+ boost/serialization/extended_type_info_typeid.hpp [14:16]
+ boost/serialization/factory.hpp [12:14]
+ boost/serialization/force_include.hpp [12:14]
+ boost/serialization/forward_list.hpp [12:14]
+ boost/serialization/hash_collections_load_imp.hpp [13:15]
+ boost/serialization/hash_collections_save_imp.hpp [12:14]
+ boost/serialization/hash_map.hpp [13:15]
+ boost/serialization/hash_set.hpp [12:14]
+ boost/serialization/level.hpp [12:14]
+ boost/serialization/level_enum.hpp [12:14]
+ boost/serialization/list.hpp [12:14]
+ boost/serialization/nvp.hpp [12:14]
+ boost/serialization/priority_queue.hpp [12:14]
+ boost/serialization/serialization.hpp [19:21]
+ boost/serialization/shared_ptr_132.hpp [12:14]
+ boost/serialization/slist.hpp [12:14]
+ boost/serialization/smart_cast.hpp [12:14]
+ boost/serialization/split_free.hpp [12:14]
+ boost/serialization/split_member.hpp [12:14]
+ boost/serialization/string.hpp [13:15]
+ boost/serialization/strong_typedef.hpp [12:15]
+ boost/serialization/tracking.hpp [12:14]
+ boost/serialization/tracking_enum.hpp [12:14]
+ boost/serialization/traits.hpp [12:14]
+ boost/serialization/type_info_implementation.hpp [12:14]
+ boost/serialization/unique_ptr.hpp [12:14]
+ boost/serialization/unordered_collections_load_imp.hpp [13:16]
+ boost/serialization/unordered_collections_save_imp.hpp [12:15]
+ boost/serialization/unordered_map.hpp [13:16]
+ boost/serialization/unordered_set.hpp [12:15]
+ boost/serialization/utility.hpp [13:15]
+ boost/serialization/vector.hpp [12:15]
+ boost/serialization/version.hpp [12:14]
+ libs/serialization/src/basic_archive.cpp [4:6]
+ libs/serialization/src/basic_iarchive.cpp [4:6]
+ libs/serialization/src/basic_iserializer.cpp [4:6]
+ libs/serialization/src/basic_oarchive.cpp [4:6]
+ libs/serialization/src/basic_oserializer.cpp [4:6]
+ libs/serialization/src/basic_pointer_iserializer.cpp [4:6]
+ libs/serialization/src/basic_pointer_oserializer.cpp [4:6]
+ libs/serialization/src/basic_serializer_map.cpp [4:6]
+ libs/serialization/src/basic_text_iprimitive.cpp [4:6]
+ libs/serialization/src/basic_text_wiprimitive.cpp [4:6]
+ libs/serialization/src/basic_xml_archive.cpp [4:6]
+ libs/serialization/src/basic_xml_grammar.ipp [4:6]
+ libs/serialization/src/binary_iarchive.cpp [4:6]
+ libs/serialization/src/binary_oarchive.cpp [4:6]
+ libs/serialization/src/binary_wiarchive.cpp [4:6]
+ libs/serialization/src/binary_woarchive.cpp [4:6]
+ libs/serialization/src/extended_type_info.cpp [4:6]
+ libs/serialization/src/extended_type_info_no_rtti.cpp [5:7]
+ libs/serialization/src/extended_type_info_typeid.cpp [5:7]
+ libs/serialization/src/polymorphic_iarchive.cpp [4:6]
+ libs/serialization/src/polymorphic_oarchive.cpp [4:6]
+ libs/serialization/src/text_iarchive.cpp [4:6]
+ libs/serialization/src/text_oarchive.cpp [4:6]
+ libs/serialization/src/text_wiarchive.cpp [4:6]
+ libs/serialization/src/text_woarchive.cpp [4:6]
+ libs/serialization/src/void_cast.cpp [4:6]
+ libs/serialization/src/xml_grammar.cpp [4:6]
+ libs/serialization/src/xml_iarchive.cpp [4:6]
+ libs/serialization/src/xml_oarchive.cpp [4:6]
+ libs/serialization/src/xml_wgrammar.cpp [4:6]
+ libs/serialization/src/xml_wiarchive.cpp [4:6]
+ libs/serialization/src/xml_woarchive.cpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1de0b40eaac2964bd4fea60350b9dc66
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef.h at line 4, boost/predef/architecture.h at line 4, boost/predef/architecture/alpha.h at line 4, boost/predef/architecture/arm.h at line 4, boost/predef/architecture/ia64.h at line 4, boost/predef/architecture/m68k.h at line 4, boost/predef/architecture/mips.h at line 4, boost/predef/architecture/parisc.h at line 4, boost/predef/architecture/ppc.h at line 4, boost/predef/architecture/rs6k.h at line 4, boost/predef/architecture/sparc.h at line 4, boost/predef/architecture/superh.h at line 4, boost/predef/architecture/sys370.h at line 4, boost/predef/architecture/sys390.h at line 4, boost/predef/architecture/x86.h at line 4, boost/predef/architecture/x86/32.h at line 4, boost/predef/architecture/x86/64.h at line 4, boost/predef/architecture/z.h at line 4, boost/predef/compiler.h at line 4, boost/predef/compiler/borland.h at line 4, boost/predef/compiler/clang.h at line 4, boost/predef/compiler/comeau.h at line 4, boost/predef/compiler/compaq.h at line 4, boost/predef/compiler/diab.h at line 4, boost/predef/compiler/digitalmars.h at line 4, boost/predef/compiler/dignus.h at line 4, boost/predef/compiler/edg.h at line 4, boost/predef/compiler/ekopath.h at line 4, boost/predef/compiler/gcc.h at line 4, boost/predef/compiler/gcc_xml.h at line 4, boost/predef/compiler/greenhills.h at line 4, boost/predef/compiler/hp_acc.h at line 4, boost/predef/compiler/iar.h at line 4, boost/predef/compiler/ibm.h at line 4, boost/predef/compiler/kai.h at line 4, boost/predef/compiler/llvm.h at line 4, boost/predef/compiler/metaware.h at line 4, boost/predef/compiler/metrowerks.h at line 4, boost/predef/compiler/microtec.h at line 4, boost/predef/compiler/mpw.h at line 4, boost/predef/compiler/palm.h at line 4, boost/predef/compiler/pgi.h at line 4, boost/predef/compiler/sgi_mipspro.h at line 4, boost/predef/compiler/sunpro.h at line 4, boost/predef/compiler/tendra.h at line 4, boost/predef/compiler/visualc.h at line 4, boost/predef/compiler/watcom.h at line 4, boost/predef/library.h at line 4, boost/predef/library/c.h at line 4, boost/predef/library/c/gnu.h at line 4, boost/predef/library/c/uc.h at line 4, boost/predef/library/c/vms.h at line 4, boost/predef/library/c/zos.h at line 4, boost/predef/library/std.h at line 4, boost/predef/library/std/dinkumware.h at line 4, boost/predef/library/std/libcomo.h at line 4, boost/predef/library/std/modena.h at line 4, boost/predef/library/std/msl.h at line 4, boost/predef/library/std/roguewave.h at line 4, boost/predef/library/std/sgi.h at line 4, boost/predef/library/std/stdcpp3.h at line 4, boost/predef/library/std/stlport.h at line 4, boost/predef/library/std/vacpp.h at line 4, boost/predef/make.h at line 4, boost/predef/os.h at line 4, boost/predef/os/aix.h at line 4, boost/predef/os/amigaos.h at line 4, boost/predef/os/beos.h at line 4, boost/predef/os/bsd.h at line 4, boost/predef/os/cygwin.h at line 4, boost/predef/os/hpux.h at line 4, boost/predef/os/irix.h at line 4, boost/predef/os/linux.h at line 4, boost/predef/os/macos.h at line 4, boost/predef/os/qnxnto.h at line 4, boost/predef/os/solaris.h at line 4, boost/predef/os/unix.h at line 4, boost/predef/os/windows.h at line 4, boost/predef/platform/mingw.h at line 4, boost/predef/platform/mingw32.h at line 4, boost/predef/platform/mingw64.h at line 4
+ License text:
+ Copyright Rene Rivera 2008-2015
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/predef.h [2:4]
+ boost/predef/architecture.h [2:4]
+ boost/predef/architecture/alpha.h [2:4]
+ boost/predef/architecture/arm.h [2:6]
+ boost/predef/architecture/ia64.h [2:4]
+ boost/predef/architecture/m68k.h [2:4]
+ boost/predef/architecture/mips.h [2:4]
+ boost/predef/architecture/parisc.h [2:4]
+ boost/predef/architecture/ppc.h [2:4]
+ boost/predef/architecture/rs6k.h [2:4]
+ boost/predef/architecture/sparc.h [2:4]
+ boost/predef/architecture/superh.h [2:4]
+ boost/predef/architecture/sys370.h [2:4]
+ boost/predef/architecture/sys390.h [2:4]
+ boost/predef/architecture/x86.h [2:4]
+ boost/predef/architecture/x86/32.h [2:4]
+ boost/predef/architecture/x86/64.h [2:4]
+ boost/predef/architecture/z.h [2:4]
+ boost/predef/compiler.h [2:4]
+ boost/predef/compiler/borland.h [2:4]
+ boost/predef/compiler/clang.h [2:4]
+ boost/predef/compiler/comeau.h [2:4]
+ boost/predef/compiler/compaq.h [2:4]
+ boost/predef/compiler/diab.h [2:4]
+ boost/predef/compiler/digitalmars.h [2:4]
+ boost/predef/compiler/dignus.h [2:4]
+ boost/predef/compiler/edg.h [2:4]
+ boost/predef/compiler/ekopath.h [2:4]
+ boost/predef/compiler/gcc.h [2:4]
+ boost/predef/compiler/gcc_xml.h [2:4]
+ boost/predef/compiler/greenhills.h [2:4]
+ boost/predef/compiler/hp_acc.h [2:4]
+ boost/predef/compiler/iar.h [2:4]
+ boost/predef/compiler/ibm.h [2:4]
+ boost/predef/compiler/kai.h [2:4]
+ boost/predef/compiler/llvm.h [2:4]
+ boost/predef/compiler/metaware.h [2:4]
+ boost/predef/compiler/metrowerks.h [2:4]
+ boost/predef/compiler/microtec.h [2:4]
+ boost/predef/compiler/mpw.h [2:4]
+ boost/predef/compiler/palm.h [2:4]
+ boost/predef/compiler/pgi.h [2:4]
+ boost/predef/compiler/sgi_mipspro.h [2:4]
+ boost/predef/compiler/sunpro.h [2:4]
+ boost/predef/compiler/tendra.h [2:4]
+ boost/predef/compiler/visualc.h [2:4]
+ boost/predef/compiler/watcom.h [2:4]
+ boost/predef/library.h [2:4]
+ boost/predef/library/c.h [2:4]
+ boost/predef/library/c/gnu.h [2:4]
+ boost/predef/library/c/uc.h [2:4]
+ boost/predef/library/c/vms.h [2:4]
+ boost/predef/library/c/zos.h [2:4]
+ boost/predef/library/std.h [2:4]
+ boost/predef/library/std/dinkumware.h [2:4]
+ boost/predef/library/std/libcomo.h [2:4]
+ boost/predef/library/std/modena.h [2:4]
+ boost/predef/library/std/msl.h [2:4]
+ boost/predef/library/std/roguewave.h [2:4]
+ boost/predef/library/std/sgi.h [2:4]
+ boost/predef/library/std/stdcpp3.h [2:4]
+ boost/predef/library/std/stlport.h [2:4]
+ boost/predef/library/std/vacpp.h [2:4]
+ boost/predef/make.h [2:4]
+ boost/predef/os.h [2:5]
+ boost/predef/os/aix.h [2:4]
+ boost/predef/os/amigaos.h [2:4]
+ boost/predef/os/beos.h [2:4]
+ boost/predef/os/bsd.h [2:4]
+ boost/predef/os/cygwin.h [2:4]
+ boost/predef/os/hpux.h [2:4]
+ boost/predef/os/irix.h [2:4]
+ boost/predef/os/linux.h [2:4]
+ boost/predef/os/macos.h [2:5]
+ boost/predef/os/qnxnto.h [2:4]
+ boost/predef/os/solaris.h [2:4]
+ boost/predef/os/unix.h [2:4]
+ boost/predef/os/windows.h [2:4]
+ boost/predef/platform/mingw.h [2:4]
+ boost/predef/platform/mingw32.h [2:4]
+ boost/predef/platform/mingw64.h [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1df4aa5e098ec150d661f196ac67b29d
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2013,2014 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/executors/executor.hpp [1:1]
+ boost/thread/executors/executor_adaptor.hpp [1:1]
+ boost/thread/executors/loop_executor.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1e0252a183250dbead2100056224e072
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2004, 2005 Arkadiy Vertleyb
+ // Use, modification and distribution is subject to the Boost Software
+ // License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/typeof/incr_registration_group.hpp [1:3]
+ boost/typeof/typeof_impl.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1e1a0b136d0d76d46590e27382b996fe
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/kurtosis.hpp at line 6, boost/accumulators/statistics/skewness.hpp at line 6, boost/accumulators/statistics/weighted_kurtosis.hpp at line 6, boost/accumulators/statistics/weighted_skewness.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/accumulators/statistics/kurtosis.hpp [4:6]
+ boost/accumulators/statistics/skewness.hpp [4:6]
+ boost/accumulators/statistics/weighted_kurtosis.hpp [4:6]
+ boost/accumulators/statistics/weighted_skewness.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1e227e465060016245c6a170dc774086
+BELONGS ya.make
+ License text:
+ // Copyright 2015-2016 Klemens D. Morgenstern
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/dll/detail/import_mangled_helpers.hpp [1:1]
+ boost/dll/import_class.hpp [1:1]
+ boost/dll/import_mangled.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1e2707865abb88b57d7f50d04d628fe0
+BELONGS ya.make
+ License text:
+ // Copyright 2002 Marc Wintermantel (wintermantel@even-ag.ch)
+ // ETH Zurich, Center of Structure Technologies (www.imes.ethz.ch/st)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/profile.hpp [3:4]
+ boost/graph/sloan_ordering.hpp [3:4]
+ boost/graph/wavefront.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1e4a93fb00e3cd1b0e640d55d4067075
+BELONGS ya.make
+ License text:
+ // This file was modified by Oracle on 2017, 2018.
+ // Modifications copyright (c) 2017-2018 Oracle and/or its affiliates.
+ // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/area.hpp [8:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1e6b42c37f484d428c0307a99878dd1e
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/spirit/home/karma/numeric/int.hpp at line 3, boost/spirit/home/support/attributes.hpp at line 4, boost/spirit/home/support/iterators/detail/combine_policies.hpp at line 3, boost/spirit/repository/home/karma/nonterminal/subrule.hpp at line 3, boost/wave.hpp at line 10, boost/wave/cpp_context.hpp at line 9, boost/wave/cpp_exceptions.hpp at line 8, boost/wave/cpp_iteration_context.hpp at line 9, boost/wave/cpp_throw.hpp at line 8, boost/wave/cpplexer/convert_trigraphs.hpp at line 10, boost/wave/cpplexer/cpp_lex_interface.hpp at line 10, boost/wave/cpplexer/cpp_lex_interface_generator.hpp at line 10, boost/wave/cpplexer/cpp_lex_iterator.hpp at line 10, boost/wave/cpplexer/cpp_lex_token.hpp at line 10, boost/wave/cpplexer/cpplexer_exceptions.hpp at line 8, boost/wave/cpplexer/detect_include_guards.hpp at line 27, boost/wave/cpplexer/re2clex/aq.hpp at line 8, boost/wave/cpplexer/re2clex/cpp_re.hpp at line 10, boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp at line 10, boost/wave/cpplexer/re2clex/scanner.hpp at line 8, boost/wave/cpplexer/token_cache.hpp at line 8, boost/wave/cpplexer/validate_universal_char.hpp at line 10, boost/wave/grammars/cpp_chlit_grammar.hpp at line 8, boost/wave/grammars/cpp_defined_grammar.hpp at line 8, boost/wave/grammars/cpp_defined_grammar_gen.hpp at line 8, boost/wave/grammars/cpp_expression_grammar.hpp at line 8, boost/wave/grammars/cpp_expression_grammar_gen.hpp at line 8, boost/wave/grammars/cpp_expression_value.hpp at line 8, boost/wave/grammars/cpp_grammar.hpp at line 8, boost/wave/grammars/cpp_grammar_gen.hpp at line 8, boost/wave/grammars/cpp_intlit_grammar.hpp at line 8, boost/wave/grammars/cpp_literal_grammar_gen.hpp at line 8, boost/wave/grammars/cpp_predef_macros_gen.hpp at line 8, boost/wave/grammars/cpp_predef_macros_grammar.hpp at line 8, boost/wave/grammars/cpp_value_error.hpp at line 8, boost/wave/language_support.hpp at line 9, boost/wave/preprocessing_hooks.hpp at line 8, boost/wave/token_ids.hpp at line 10, boost/wave/util/cpp_ifblock.hpp at line 8, boost/wave/util/cpp_include_paths.hpp at line 8, boost/wave/util/cpp_iterator.hpp at line 10, boost/wave/util/cpp_macromap.hpp at line 10, boost/wave/util/cpp_macromap_predef.hpp at line 10, boost/wave/util/cpp_macromap_utils.hpp at line 10, boost/wave/util/file_position.hpp at line 10, boost/wave/util/filesystem_compatibility.hpp at line 8, boost/wave/util/functor_input.hpp at line 8, boost/wave/util/insert_whitespace_detection.hpp at line 10, boost/wave/util/interpret_pragma.hpp at line 8, boost/wave/util/iteration_context.hpp at line 8, boost/wave/util/macro_definition.hpp at line 8, boost/wave/util/macro_helpers.hpp at line 8, boost/wave/util/pattern_parser.hpp at line 10, boost/wave/util/symbol_table.hpp at line 8, boost/wave/util/time_conversion_helper.hpp at line 8, boost/wave/util/transform_iterator.hpp at line 8, boost/wave/util/unput_queue_iterator.hpp at line 10, boost/wave/wave_config.hpp at line 10, boost/wave/wave_config_constant.hpp at line 9, boost/wave/wave_version.hpp at line 10, boost/wave/whitespace_handling.hpp at line 9
+ License text:
+ Copyright (c) 2001-2012 Hartmut Kaiser. Distributed under the Boost
+ Software License, Version 1.0. (See accompanying file
+ LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/karma/numeric/int.hpp [1:1]
+ boost/spirit/home/support/attributes.hpp [2:3]
+ boost/spirit/home/support/iterators/detail/combine_policies.hpp [1:1]
+ boost/spirit/repository/home/karma/nonterminal/subrule.hpp [1:3]
+ boost/wave.hpp [8:10]
+ boost/wave/cpp_context.hpp [7:9]
+ boost/wave/cpp_exceptions.hpp [6:8]
+ boost/wave/cpp_iteration_context.hpp [7:9]
+ boost/wave/cpp_throw.hpp [6:8]
+ boost/wave/cpplexer/convert_trigraphs.hpp [8:10]
+ boost/wave/cpplexer/cpp_lex_interface.hpp [8:10]
+ boost/wave/cpplexer/cpp_lex_interface_generator.hpp [8:10]
+ boost/wave/cpplexer/cpp_lex_iterator.hpp [8:10]
+ boost/wave/cpplexer/cpp_lex_token.hpp [8:10]
+ boost/wave/cpplexer/cpplexer_exceptions.hpp [6:8]
+ boost/wave/cpplexer/detect_include_guards.hpp [25:27]
+ boost/wave/cpplexer/re2clex/aq.hpp [6:9]
+ boost/wave/cpplexer/re2clex/cpp_re.hpp [8:10]
+ boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp [8:10]
+ boost/wave/cpplexer/re2clex/scanner.hpp [6:9]
+ boost/wave/cpplexer/token_cache.hpp [6:8]
+ boost/wave/cpplexer/validate_universal_char.hpp [8:10]
+ boost/wave/grammars/cpp_chlit_grammar.hpp [6:8]
+ boost/wave/grammars/cpp_defined_grammar.hpp [6:8]
+ boost/wave/grammars/cpp_defined_grammar_gen.hpp [6:8]
+ boost/wave/grammars/cpp_expression_grammar.hpp [6:8]
+ boost/wave/grammars/cpp_expression_grammar_gen.hpp [6:8]
+ boost/wave/grammars/cpp_expression_value.hpp [6:8]
+ boost/wave/grammars/cpp_grammar.hpp [6:8]
+ boost/wave/grammars/cpp_grammar_gen.hpp [6:8]
+ boost/wave/grammars/cpp_intlit_grammar.hpp [6:8]
+ boost/wave/grammars/cpp_literal_grammar_gen.hpp [6:8]
+ boost/wave/grammars/cpp_predef_macros_gen.hpp [6:8]
+ boost/wave/grammars/cpp_predef_macros_grammar.hpp [6:8]
+ boost/wave/grammars/cpp_value_error.hpp [6:8]
+ boost/wave/language_support.hpp [7:9]
+ boost/wave/preprocessing_hooks.hpp [6:8]
+ boost/wave/token_ids.hpp [8:10]
+ boost/wave/util/cpp_ifblock.hpp [6:8]
+ boost/wave/util/cpp_include_paths.hpp [6:8]
+ boost/wave/util/cpp_iterator.hpp [8:10]
+ boost/wave/util/cpp_macromap.hpp [8:10]
+ boost/wave/util/cpp_macromap_predef.hpp [8:10]
+ boost/wave/util/cpp_macromap_utils.hpp [8:10]
+ boost/wave/util/file_position.hpp [8:10]
+ boost/wave/util/filesystem_compatibility.hpp [6:8]
+ boost/wave/util/functor_input.hpp [6:8]
+ boost/wave/util/insert_whitespace_detection.hpp [8:10]
+ boost/wave/util/interpret_pragma.hpp [6:8]
+ boost/wave/util/iteration_context.hpp [6:8]
+ boost/wave/util/macro_definition.hpp [6:8]
+ boost/wave/util/macro_helpers.hpp [6:8]
+ boost/wave/util/pattern_parser.hpp [8:10]
+ boost/wave/util/symbol_table.hpp [6:8]
+ boost/wave/util/time_conversion_helper.hpp [6:8]
+ boost/wave/util/transform_iterator.hpp [6:8]
+ boost/wave/util/unput_queue_iterator.hpp [8:10]
+ boost/wave/wave_config.hpp [8:10]
+ boost/wave/wave_config_constant.hpp [7:9]
+ boost/wave/wave_version.hpp [8:10]
+ boost/wave/whitespace_handling.hpp [7:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1e6c23354a6747a6c3eef56fb2537b44
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2006, Stephan Diederich
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/boykov_kolmogorov_max_flow.hpp [1:1]
+ boost/graph/write_dimacs.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1e8d26cab4d9812b713114f1a99853c0
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/statechart/detail/memory.hpp at line 6
+ License text:
+ // Copyright 2005-2006 Andreas Huber Doenni
+ // Distributed under the Boost Software License, Version 1.0. (See accompany-
+ // ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/statechart/detail/memory.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1ea9e3e41f1c35e81f47e425054ac689
+BELONGS ya.make
+ License text:
+ // Copyright Paul A. Bristow 2007, 2010, 2012, 2014.
+ // Copyright John Maddock 2007.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/distributions/fwd.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1ee6f833fe9b25524ebf6b687f10088c
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2015.
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/quadrature/gauss.hpp [1:3]
+ boost/random/traits.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1f04e771ae77a341bbc9ea094604bb99
+BELONGS ya.make
+ License text:
+ * Copyright (c) 1998-2000
+ * Dr John Maddock
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/regex.h [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1f0bef8fd2dab232c436a28951751d24
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/hp_acc.hpp [1:8]
+ boost/config/compiler/sunpro_cc.hpp [1:7]
+ boost/config/platform/hpux.hpp [1:7]
+ boost/config/platform/linux.hpp [1:4]
+ boost/config/platform/symbian.hpp [1:5]
+ boost/config/stdlib/sgi.hpp [1:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1f37a51e40512369e14c67203766141f
+BELONGS libs/timer/ya.make
+ License text:
+ // Copyright Beman Dawes 1994-2006, 2011
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ libs/timer/src/cpu_timer.cpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1f468481901f0c282072e13f8120b9b9
+BELONGS ya.make
+ License text:
+ Copyright (c) 2016 Frank Hein, maxence business consulting gmbh
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/qi/directive/expect.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1f48b5f1ab3f8b394c86f6d510e964a3
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/has_new_operator.hpp at line 4
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_traits/has_new_operator.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1f49c41ea9bc45c116f721f598e21ad0
+BELONGS ya.make
+ License text:
+ // This file was modified by Oracle on 2015, 2016.
+ // Modifications copyright (c) 2015-2016, Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/envelope/implementation.hpp [7:8]
+ boost/geometry/algorithms/detail/envelope/linear.hpp [7:8]
+ boost/geometry/algorithms/detail/envelope/point.hpp [7:8]
+ boost/geometry/algorithms/detail/envelope/range.hpp [7:8]
+ boost/geometry/algorithms/detail/expand/interface.hpp [8:9]
+ boost/geometry/io/svg/svg_mapper.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1f4ce2837d476b6bed69d2f0d5589b4d
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2009 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mem_fn.hpp [13:13]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1f62725691895dcb03dacf98dc5c9129
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/crc.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/crc.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1f6babe1b8dcf6fe0c732e78348e6377
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/statechart/detail/rtti_policy.hpp at line 6, boost/statechart/detail/state_base.hpp at line 6, boost/statechart/event_processor.hpp at line 6, boost/statechart/fifo_worker.hpp at line 6, boost/statechart/processor_container.hpp at line 6, boost/statechart/transition.hpp at line 6
+ License text:
+ // Copyright 2002-2008 Andreas Huber Doenni
+ // Distributed under the Boost Software License, Version 1.0. (See accompany-
+ // ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/statechart/detail/rtti_policy.hpp [4:6]
+ boost/statechart/detail/state_base.hpp [4:6]
+ boost/statechart/event_processor.hpp [4:6]
+ boost/statechart/fifo_worker.hpp [4:6]
+ boost/statechart/processor_container.hpp [4:6]
+ boost/statechart/transition.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1f81522578ed29184544e03bd9f0c559
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/core/noncopyable.hpp at line 5
+ License text:
+ // (C) Copyright Beman Dawes 1999-2003. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/core/noncopyable.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1fa0e333f3a4d9fcde07c8f7722f8e63
+BELONGS ya.make
+ License text:
+ // (C) Copyright Ion Gaztanaga 2005.
+ // Copyright (c) 2005 Peter Dimov.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/bind/bind.hpp [13:15]
+ boost/pointer_to_other.hpp [7:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1fc39afc3821b9d8684b6e3cd7dd87ec
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2004 Gerald I. Evenden
+ // Copyright (c) 2012 Martin Raspaud
+ // See also (section 4.4.3.2):
+ // http://www.eumetsat.int/en/area4/msg/news/us_doc/cgms_03_26.pdf
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/srs/projections/proj/geos.hpp [26:29]
+
+KEEP COPYRIGHT_SERVICE_LABEL 201ae7ed96845071c26629f049e390f6
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/algorithm_ext/is_sorted.hpp at line 4
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/range/algorithm_ext/is_sorted.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2078d45a521e96133b21cbeeef583b2e
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001 Daniel C. Nuffer
+ // Copyright (c) 2001-2011 Hartmut Kaiser
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/support/iterators/detail/buffering_input_iterator_policy.hpp [1:2]
+ boost/spirit/home/support/iterators/detail/fixed_size_queue.hpp [1:2]
+ boost/spirit/home/support/iterators/detail/fixed_size_queue_policy.hpp [1:2]
+ boost/spirit/home/support/iterators/detail/input_iterator_policy.hpp [1:2]
+ boost/spirit/home/support/iterators/detail/istream_policy.hpp [1:2]
+ boost/spirit/home/support/iterators/detail/lex_input_policy.hpp [1:2]
+ boost/spirit/home/support/iterators/detail/multi_pass.hpp [1:2]
+ boost/spirit/home/support/iterators/detail/no_check_policy.hpp [1:2]
+ boost/spirit/home/support/iterators/detail/ref_counted_policy.hpp [1:2]
+ boost/spirit/home/support/iterators/detail/split_std_deque_policy.hpp [1:2]
+ boost/wave/cpplexer/re2clex/aq.hpp [6:9]
+ boost/wave/cpplexer/re2clex/scanner.hpp [6:9]
+
+KEEP COPYRIGHT_SERVICE_LABEL 20879b64ae4df4b3c40306efb7928c57
+BELONGS ya.make
+ License text:
+ // (C) Copyright Ion Gaztanaga 2014-2014.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/container/detail/algorithm.hpp [3:3]
+ boost/container/detail/compare_functors.hpp [3:5]
+ boost/container/detail/construct_in_place.hpp [3:3]
+ boost/container/detail/iterator.hpp [3:3]
+ boost/container/detail/std_fwd.hpp [3:5]
+ boost/intrusive/detail/algo_type.hpp [3:3]
+ boost/intrusive/detail/algorithm.hpp [3:3]
+ boost/intrusive/detail/array_initializer.hpp [3:3]
+ boost/intrusive/detail/bstree_algorithms_base.hpp [3:3]
+ boost/intrusive/detail/default_header_holder.hpp [3:3]
+ boost/intrusive/detail/ebo_functor_holder.hpp [3:4]
+ boost/intrusive/detail/empty_node_checker.hpp [3:3]
+ boost/intrusive/detail/equal_to_value.hpp [3:3]
+ boost/intrusive/detail/exception_disposer.hpp [3:3]
+ boost/intrusive/detail/get_value_traits.hpp [3:3]
+ boost/intrusive/detail/has_member_function_callable_with.hpp [3:5]
+ boost/intrusive/detail/iterator.hpp [3:3]
+ boost/intrusive/detail/key_nodeptr_comp.hpp [3:3]
+ boost/intrusive/detail/math.hpp [3:3]
+ boost/intrusive/detail/node_cloner_disposer.hpp [3:3]
+ boost/intrusive/detail/node_holder.hpp [3:3]
+ boost/intrusive/detail/node_to_value.hpp [3:3]
+ boost/intrusive/detail/reverse_iterator.hpp [3:3]
+ boost/intrusive/detail/simple_disposers.hpp [3:3]
+ boost/intrusive/detail/size_holder.hpp [3:3]
+ boost/intrusive/detail/std_fwd.hpp [3:5]
+ boost/intrusive/pointer_rebind.hpp [3:5]
+ boost/move/algo/detail/insertion_sort.hpp [3:5]
+ boost/move/default_delete.hpp [3:5]
+ boost/move/detail/fwd_macros.hpp [3:5]
+ boost/move/detail/iterator_traits.hpp [3:5]
+ boost/move/detail/reverse_iterator.hpp [3:3]
+ boost/move/detail/workaround.hpp [3:5]
+ boost/move/unique_ptr.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 208a2831e190f76f08f28a8052c15716
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2002 Joel de Guzman
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/lambda/closures.hpp [5:5]
+ boost/lambda/if.hpp [3:5]
+ boost/lambda/loops.hpp [3:5]
+ boost/spirit/home/classic/phoenix.hpp [3:3]
+ boost/spirit/home/classic/phoenix/actor.hpp [3:3]
+ boost/spirit/home/classic/phoenix/binders.hpp [3:3]
+ boost/spirit/home/classic/phoenix/closures.hpp [3:4]
+ boost/spirit/home/classic/phoenix/composite.hpp [3:3]
+ boost/spirit/home/classic/phoenix/functions.hpp [3:3]
+ boost/spirit/home/classic/phoenix/operators.hpp [3:3]
+ boost/spirit/home/classic/phoenix/primitives.hpp [3:3]
+ boost/spirit/home/classic/phoenix/special_ops.hpp [3:3]
+ boost/spirit/home/classic/phoenix/statements.hpp [3:3]
+ boost/spirit/home/classic/phoenix/tuples.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 20a463d46bce9a241ea6c39dc4765269
+BELONGS ya.make
+ License text:
+ Copyright (c) 2005-2013 Joel de Guzman
+ Copyright (c) 2006 Dan Marsden
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/container/deque/convert.hpp [2:3]
+ boost/fusion/container/deque/detail/build_deque.hpp [2:2]
+ boost/fusion/container/deque/detail/cpp03/build_deque.hpp [2:2]
+ boost/fusion/container/map/detail/begin_impl.hpp [2:2]
+ boost/fusion/container/map/detail/build_map.hpp [2:2]
+ boost/fusion/container/map/detail/end_impl.hpp [2:2]
+ boost/fusion/container/map/detail/map_impl.hpp [2:2]
+ boost/fusion/container/map/detail/map_index.hpp [2:2]
+ boost/fusion/container/map/map_iterator.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 20aa2056ea9bde4ff4ad3360b783b1e7
+BELONGS ya.make
+ License text:
+ //Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/exception/all.hpp [1:1]
+ boost/exception/detail/shared_ptr.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 20e8e6135e1f61009ffaeaa23267908f
+BELONGS ya.make
+ License text:
+ * Copyright (c) 2011 Helge Bahmann
+ * Copyright (c) 2013 Tim Blechmann
+ * Copyright (c) 2014 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/atomic/atomic.hpp [6:8]
+ boost/atomic/atomic_flag.hpp [6:8]
+ boost/atomic/detail/atomic_template.hpp [6:8]
+ boost/atomic/detail/caps_gcc_alpha.hpp [6:8]
+ boost/atomic/detail/caps_gcc_ppc.hpp [6:8]
+ boost/atomic/detail/caps_gcc_sparc.hpp [6:8]
+ boost/atomic/detail/caps_gcc_sync.hpp [6:8]
+ boost/atomic/detail/caps_msvc_arm.hpp [6:8]
+ boost/atomic/detail/caps_msvc_x86.hpp [6:8]
+ boost/atomic/detail/caps_windows.hpp [6:8]
+ boost/atomic/detail/ops_gcc_alpha.hpp [6:8]
+ boost/atomic/detail/ops_gcc_arm.hpp [6:8]
+ boost/atomic/detail/ops_gcc_arm_common.hpp [6:8]
+ boost/atomic/detail/ops_gcc_ppc.hpp [6:8]
+ boost/atomic/detail/ops_gcc_ppc_common.hpp [6:8]
+ boost/atomic/detail/ops_gcc_sparc.hpp [6:8]
+ boost/atomic/detail/ops_gcc_sync.hpp [6:8]
+ boost/atomic/fences.hpp [6:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 20fa0d171507903cccfbadda4fedb4d3
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/metaparse/v1/empty.hpp at line 6
+ License text:
+ // Copyright Abel Sinkovics (abel@sinkovics.hu) 2010 - 2011.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/metaparse/v1/empty.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2128f138a33452c58ca8d69d871d409b
+BELONGS ya.make
+ License text:
+ // This file was modified by Oracle on 2016-2017.
+ // Modifications copyright (c) 2016-2017 Oracle and/or its affiliates.
+ // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/buffer/buffered_piece_collection.hpp [6:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2146c076a1c5302d8131f6c6c76f685d
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2014.
+ // Copyright Paul A. Bristow 2014.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/distributions/arcsine.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 214ba99e016d97577b7672e9e87aa6fa
+BELONGS libs/timer/ya.make
+ License text:
+ // Copyright Beman Dawes 2007, 2011
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ libs/timer/src/auto_timers_construction.cpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 215698f0763c1492391d7be44eb56c21
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2007-2015 Barend Gehrels, Amsterdam, the Netherlands.
+ // Copyright (c) 2008-2015 Bruno Lalande, Paris, France.
+ // Copyright (c) 2009-2015 Mateusz Loskot, London, UK.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/centroid.hpp [3:6]
+ boost/geometry/algorithms/convex_hull.hpp [3:5]
+ boost/geometry/algorithms/detail/disjoint/box_box.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/point_box.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/point_geometry.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/point_point.hpp [3:6]
+ boost/geometry/algorithms/detail/envelope/box.hpp [3:5]
+ boost/geometry/algorithms/detail/envelope/implementation.hpp [3:5]
+ boost/geometry/algorithms/detail/envelope/interface.hpp [3:5]
+ boost/geometry/algorithms/detail/envelope/linear.hpp [3:5]
+ boost/geometry/algorithms/detail/envelope/point.hpp [3:5]
+ boost/geometry/algorithms/detail/envelope/range.hpp [3:5]
+ boost/geometry/algorithms/detail/envelope/segment.hpp [3:5]
+ boost/geometry/algorithms/detail/equals/implementation.hpp [3:6]
+ boost/geometry/algorithms/detail/equals/interface.hpp [3:6]
+ boost/geometry/algorithms/detail/expand/box.hpp [3:6]
+ boost/geometry/algorithms/detail/expand/implementation.hpp [3:6]
+ boost/geometry/algorithms/detail/expand/indexed.hpp [3:6]
+ boost/geometry/algorithms/detail/expand/interface.hpp [3:6]
+ boost/geometry/algorithms/detail/expand/point.hpp [3:6]
+ boost/geometry/algorithms/detail/expand/segment.hpp [3:6]
+ boost/geometry/algorithms/detail/not.hpp [3:5]
+ boost/geometry/algorithms/detail/overlaps/implementation.hpp [3:5]
+ boost/geometry/algorithms/detail/overlaps/interface.hpp [3:5]
+ boost/geometry/algorithms/detail/point_is_spike_or_equal.hpp [3:6]
+ boost/geometry/algorithms/detail/sections/sectionalize.hpp [3:6]
+ boost/geometry/algorithms/detail/throw_on_empty_input.hpp [3:6]
+ boost/geometry/algorithms/detail/touches/implementation.hpp [3:6]
+ boost/geometry/algorithms/detail/touches/interface.hpp [3:6]
+ boost/geometry/algorithms/dispatch/envelope.hpp [3:5]
+ boost/geometry/algorithms/dispatch/expand.hpp [3:6]
+ boost/geometry/algorithms/envelope.hpp [3:5]
+ boost/geometry/algorithms/equals.hpp [3:6]
+ boost/geometry/algorithms/expand.hpp [3:6]
+ boost/geometry/algorithms/not_implemented.hpp [3:5]
+ boost/geometry/algorithms/overlaps.hpp [3:5]
+ boost/geometry/algorithms/simplify.hpp [3:5]
+ boost/geometry/algorithms/touches.hpp [3:6]
+ boost/geometry/core/exception.hpp [3:5]
+ boost/geometry/core/radian_access.hpp [3:5]
+ boost/geometry/core/ring_type.hpp [3:5]
+ boost/geometry/geometry.hpp [3:5]
+ boost/geometry/multi/multi.hpp [3:5]
+ boost/geometry/strategies/cartesian/box_in_box.hpp [3:6]
+ boost/geometry/strategies/cartesian/centroid_bashein_detmer.hpp [3:5]
+ boost/geometry/strategies/cartesian/point_in_box.hpp [3:5]
+ boost/geometry/strategies/cartesian/side_by_triangle.hpp [3:5]
+ boost/geometry/strategies/distance_result.hpp [3:7]
+ boost/geometry/strategies/spherical/distance_cross_track_point_box.hpp [3:5]
+ boost/geometry/strategies/strategy_transform.hpp [3:5]
+ boost/geometry/strategies/transform/matrix_transformers.hpp [3:5]
+ boost/geometry/util/compress_variant.hpp [3:5]
+ boost/geometry/util/math.hpp [3:5]
+ boost/geometry/util/transform_variant.hpp [3:5]
+ boost/geometry/views/detail/indexed_point_view.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 215bdc768306d436a8bb86e0c01115e8
+BELONGS ya.make
+ License text:
+ Copyright 2017-2018 Glen Joseph Fernandes
+ (glenjofe@gmail.com)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/core/pointer_traits.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 21722b4dae740deb7e1ccfab7745d62a
+BELONGS ya.make
+ License text:
+ Copyright 2010-2012 Karsten Ahnert
+ Copyright 2011 Mario Mulansky
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/algebra/detail/for_each.hpp [9:10]
+ boost/numeric/odeint/stepper/detail/adams_bashforth_call_algebra.hpp [9:10]
+ boost/numeric/odeint/stepper/detail/adams_moulton_call_algebra.hpp [9:10]
+ boost/numeric/odeint/stepper/detail/generic_rk_operations.hpp [9:10]
+ boost/numeric/odeint/stepper/detail/rotating_buffer.hpp [9:10]
+ boost/numeric/odeint/stepper/generation.hpp [9:10]
+ boost/numeric/odeint/stepper/generation/generation_runge_kutta_cash_karp54.hpp [9:10]
+ boost/numeric/odeint/stepper/generation/generation_runge_kutta_cash_karp54_classic.hpp [10:11]
+ boost/numeric/odeint/stepper/generation/generation_runge_kutta_dopri5.hpp [9:10]
+ boost/numeric/odeint/stepper/generation/generation_runge_kutta_fehlberg78.hpp [9:10]
+ boost/numeric/odeint/util/is_pair.hpp [9:10]
+ boost/numeric/odeint/util/is_resizeable.hpp [9:10]
+ boost/numeric/odeint/util/resize.hpp [10:11]
+ boost/numeric/odeint/util/same_size.hpp [10:11]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2180ce6ee1e5aa9a5aeb7320a3a192e4
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2012-2013 Adam Wulkiewicz, Lodz, Poland.
+ // Copyright (c) 2011-2013 Andrew Hundt.
+ // Copyright (c) 2013-2014 Ion Gaztanaga
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/container/static_vector.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 219048af2eeea3f4c00902491fa57b67
+BELONGS ya.make
+ License text:
+ // Copyright 2008 Howard Hinnant
+ // Copyright 2008 Beman Dawes
+ // Copyright 2009-2012 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/chrono/time_point.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 21959bbfabcef0c0a725190ceece57cb
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/array/enum.hpp at line 6, boost/preprocessor/array/to_list.hpp at line 6, boost/preprocessor/array/to_seq.hpp at line 6, boost/preprocessor/array/to_tuple.hpp at line 6, boost/preprocessor/facilities/overload.hpp at line 6, boost/preprocessor/list/to_array.hpp at line 6, boost/preprocessor/seq/detail/binary_transform.hpp at line 6, boost/preprocessor/seq/to_list.hpp at line 6, boost/preprocessor/tuple/enum.hpp at line 6, boost/preprocessor/tuple/size.hpp at line 6, boost/preprocessor/tuple/to_array.hpp at line 6, boost/preprocessor/variadic.hpp at line 6, boost/preprocessor/variadic/elem.hpp at line 6, boost/preprocessor/variadic/size.hpp at line 6, boost/preprocessor/variadic/to_array.hpp at line 6, boost/preprocessor/variadic/to_list.hpp at line 6, boost/preprocessor/variadic/to_seq.hpp at line 6, boost/preprocessor/variadic/to_tuple.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/preprocessor/array/enum.hpp [3:6]
+ boost/preprocessor/array/to_list.hpp [3:6]
+ boost/preprocessor/array/to_seq.hpp [3:6]
+ boost/preprocessor/array/to_tuple.hpp [3:6]
+ boost/preprocessor/facilities/overload.hpp [3:6]
+ boost/preprocessor/list/to_array.hpp [3:6]
+ boost/preprocessor/seq/detail/binary_transform.hpp [3:5]
+ boost/preprocessor/seq/to_list.hpp [3:6]
+ boost/preprocessor/tuple/enum.hpp [3:6]
+ boost/preprocessor/tuple/size.hpp [3:6]
+ boost/preprocessor/tuple/to_array.hpp [3:6]
+ boost/preprocessor/variadic.hpp [3:6]
+ boost/preprocessor/variadic/elem.hpp [3:6]
+ boost/preprocessor/variadic/size.hpp [3:6]
+ boost/preprocessor/variadic/to_array.hpp [3:6]
+ boost/preprocessor/variadic/to_list.hpp [3:6]
+ boost/preprocessor/variadic/to_seq.hpp [3:6]
+ boost/preprocessor/variadic/to_tuple.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 21dd23f843f6e73e6d7975f4b3c676ff
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/foreach.hpp at line 6, boost/phoenix/stl/algorithm/detail/begin.hpp at line 11, boost/phoenix/stl/algorithm/detail/decay_array.hpp at line 10, boost/phoenix/stl/algorithm/detail/end.hpp at line 11, boost/phoenix/stl/algorithm/detail/has_equal_range.hpp at line 10, boost/phoenix/stl/algorithm/detail/has_find.hpp at line 12, boost/phoenix/stl/algorithm/detail/has_lower_bound.hpp at line 10, boost/phoenix/stl/algorithm/detail/has_remove.hpp at line 10, boost/phoenix/stl/algorithm/detail/has_remove_if.hpp at line 10, boost/phoenix/stl/algorithm/detail/has_reverse.hpp at line 10, boost/phoenix/stl/algorithm/detail/has_sort.hpp at line 10, boost/phoenix/stl/algorithm/detail/has_unique.hpp at line 10, boost/phoenix/stl/algorithm/detail/has_upper_bound.hpp at line 10, boost/phoenix/stl/algorithm/detail/is_std_hash_map.hpp at line 10, boost/phoenix/stl/algorithm/detail/is_std_hash_set.hpp at line 10, boost/phoenix/stl/algorithm/detail/is_std_list.hpp at line 10, boost/phoenix/stl/algorithm/detail/is_std_map.hpp at line 10, boost/phoenix/stl/algorithm/detail/is_std_set.hpp at line 10, boost/phoenix/stl/algorithm/detail/is_unordered_set_or_map.hpp at line 13, boost/phoenix/stl/algorithm/iteration.hpp at line 11, boost/phoenix/stl/algorithm/querying.hpp at line 13, boost/phoenix/stl/algorithm/transformation.hpp at line 12, boost/range/numeric.hpp at line 13
+ License text:
+ // Copyright 2004 Eric Niebler.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/foreach.hpp [4:6]
+ boost/phoenix/stl/algorithm/detail/begin.hpp [9:9]
+ boost/phoenix/stl/algorithm/detail/decay_array.hpp [8:8]
+ boost/phoenix/stl/algorithm/detail/end.hpp [9:9]
+ boost/phoenix/stl/algorithm/detail/has_equal_range.hpp [8:8]
+ boost/phoenix/stl/algorithm/detail/has_find.hpp [10:10]
+ boost/phoenix/stl/algorithm/detail/has_lower_bound.hpp [8:8]
+ boost/phoenix/stl/algorithm/detail/has_remove.hpp [8:8]
+ boost/phoenix/stl/algorithm/detail/has_remove_if.hpp [8:8]
+ boost/phoenix/stl/algorithm/detail/has_reverse.hpp [8:8]
+ boost/phoenix/stl/algorithm/detail/has_sort.hpp [8:8]
+ boost/phoenix/stl/algorithm/detail/has_unique.hpp [8:8]
+ boost/phoenix/stl/algorithm/detail/has_upper_bound.hpp [8:8]
+ boost/phoenix/stl/algorithm/detail/is_std_hash_map.hpp [8:8]
+ boost/phoenix/stl/algorithm/detail/is_std_hash_set.hpp [8:8]
+ boost/phoenix/stl/algorithm/detail/is_std_list.hpp [8:8]
+ boost/phoenix/stl/algorithm/detail/is_std_map.hpp [8:8]
+ boost/phoenix/stl/algorithm/detail/is_std_set.hpp [8:8]
+ boost/phoenix/stl/algorithm/detail/is_unordered_set_or_map.hpp [11:11]
+ boost/phoenix/stl/algorithm/iteration.hpp [9:9]
+ boost/phoenix/stl/algorithm/querying.hpp [11:11]
+ boost/phoenix/stl/algorithm/transformation.hpp [10:10]
+ boost/range/numeric.hpp [11:13]
+
+KEEP COPYRIGHT_SERVICE_LABEL 21e959ad55799f0d703f33fa06e92175
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/remove_cv_ref.hpp at line 4
+ License text:
+ // (C) Copyright Peter Dimov 2017.
+ // Use, modification and distribution are subject to the Boost Software License,
+ // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_traits/remove_cv_ref.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2225076000632a3d391f0c4252302237
+BELONGS ya.make
+ License text:
+ // Copyright 2007 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/detail/sp_typeinfo.hpp [14:14]
+ boost/smart_ptr/detail/atomic_count_gcc_x86.hpp [9:9]
+ boost/smart_ptr/detail/atomic_count_sync.hpp [11:11]
+
+KEEP COPYRIGHT_SERVICE_LABEL 22282f4483789381ead4ca15608f28b1
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/distributed/adjlist/serialization.hpp at line 3, boost/graph/distributed/shuffled_distribution.hpp at line 3
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/distributed/adjlist/serialization.hpp [1:3]
+ boost/graph/distributed/shuffled_distribution.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 22324db5d04de73bdfa0cbdd1c7b315e
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/ptr_container/detail/default_deleter.hpp at line 3
+ License text:
+ // (C) Copyright Jonathan Turkanis 2004-2005.
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/ptr_container/detail/default_deleter.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 22403f1361a990fb6fd5cc8b876e046d
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2004 Kristopher Beevers
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/astar_search.hpp [5:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 224ede317f83c513d1a68907e0d028bc
+BELONGS ya.make
+ License text:
+ // Copyright Kevlin Henney, 2000, 2001, 2002. All rights reserved.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/any.hpp [331:331]
+
+KEEP COPYRIGHT_SERVICE_LABEL 224f57df16325dd91014dfc45580545f
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2001 Daryle Walker.
+ // Copyright (C) 2003 Vesa Karvonen.
+ // Copyright (C) 2003 Gennaro Prota.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/integer/static_log2.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 228235344a4eeb283fe723053ea024fd
+BELONGS libs/random/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/random/detail/int_float_pair.hpp at line 6, boost/random/detail/operators.hpp at line 6, boost/random/normal_distribution.hpp at line 6, boost/random/random_device.hpp at line 6, boost/uuid/detail/random_provider_posix.ipp at line 6, boost/uuid/detail/random_provider_wincrypt.ipp at line 6, libs/random/src/random_device.cpp at line 6
+ License text:
+ * Copyright Jens Maurer 2000-2001
+ * Copyright Steven Watanabe 2010-2011
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/random/detail/int_float_pair.hpp [3:6]
+ boost/random/detail/operators.hpp [3:5]
+ boost/random/normal_distribution.hpp [3:6]
+ boost/random/random_device.hpp [3:6]
+ boost/uuid/detail/random_provider_posix.ipp [3:6]
+ boost/uuid/detail/random_provider_wincrypt.ipp [3:6]
+ libs/random/src/random_device.cpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 22b8921218f5846e7fc7d4a2ac8c34c0
+BELONGS ya.make
+ License text:
+ // Copyright 2004-2006 The Trustees of Indiana University.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/plod_generator.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 22d1ca369e5c9145bc949ee6e4d45afd
+BELONGS ya.make
+ License text:
+ // (C) Copyright Stephen Cleary 2000
+ // (C) Copyright Ion Gaztanaga 2015-2017.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/container/detail/mutex.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 234430fe848ce8d6594b231bd8e0cfb8
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001 Doug Gregor
+ Copyright (c) 1999-2003 Jaakko Jarvi
+ Copyright (c) 2001-2011 Joel de Guzman
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/container/generation/ignore.hpp [2:4]
+ boost/fusion/container/vector/detail/cpp03/vector_fwd.hpp [2:3]
+ boost/fusion/sequence/comparison/detail/equal_to.hpp [2:3]
+ boost/fusion/sequence/comparison/detail/greater.hpp [2:3]
+ boost/fusion/sequence/comparison/detail/greater_equal.hpp [2:3]
+ boost/fusion/sequence/comparison/detail/less.hpp [2:3]
+ boost/fusion/sequence/comparison/detail/less_equal.hpp [2:3]
+ boost/fusion/sequence/comparison/detail/not_equal_to.hpp [2:3]
+ boost/fusion/sequence/comparison/equal_to.hpp [2:3]
+ boost/fusion/sequence/comparison/greater.hpp [2:3]
+ boost/fusion/sequence/comparison/greater_equal.hpp [2:3]
+ boost/fusion/sequence/comparison/less.hpp [2:3]
+ boost/fusion/sequence/comparison/less_equal.hpp [2:3]
+ boost/fusion/sequence/comparison/not_equal_to.hpp [2:3]
+ boost/fusion/sequence/io/detail/in.hpp [2:4]
+ boost/fusion/sequence/io/detail/manip.hpp [2:4]
+ boost/fusion/sequence/io/detail/out.hpp [2:4]
+ boost/fusion/sequence/io/in.hpp [2:4]
+ boost/fusion/sequence/io/out.hpp [2:4]
+ boost/fusion/support/detail/as_fusion_element.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 235e1329bace813cd48f34c2ee344e77
+BELONGS libs/chrono/ya.make ya.make
+ License text:
+ // (C) Copyright Howard Hinnant
+ // Copyright 2011 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/chrono/ceil.hpp [3:4]
+ boost/chrono/floor.hpp [3:4]
+ boost/chrono/io/utility/ios_base_state_ptr.hpp [3:3]
+ boost/chrono/io/utility/manip_base.hpp [3:3]
+ boost/chrono/io/utility/to_string.hpp [3:5]
+ boost/chrono/round.hpp [3:4]
+ boost/ratio/include.hpp [3:3]
+ boost/ratio/mpl/arithmetic.hpp [3:3]
+ boost/ratio/mpl/comparison.hpp [3:3]
+ boost/ratio/mpl/rational_constant.hpp [2:4]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/laps_accumulator_set.hpp [2:4]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/laps_sequence_container.hpp [2:4]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/last_lap.hpp [2:4]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/no_memory.hpp [2:4]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/dont_start.hpp [2:4]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/formatters/accumulator_set_formatter.hpp [2:4]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/formatters/base_formatter.hpp [2:4]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/formatters/elapsed_formatter.hpp [2:4]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/formatters/times_formatter.hpp [2:4]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/laps_stopwatch.hpp [3:5]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/clock_default_formatter.hpp [2:4]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/laps_accumulator_set_stopwatch_default_formatter.hpp [2:4]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/laps_stopclock.hpp [2:4]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/laps_stopwatch_default_formatter.hpp [2:5]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/process_default_formatter.hpp [2:5]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/stopclock.hpp [2:4]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/stopwatch_reporter.hpp [2:4]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/stopwatch_reporter_default_formatter.hpp [2:4]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/strict_stopclock.hpp [2:4]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/system_default_formatter.hpp [2:4]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/thread_default_formatter.hpp [2:4]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/simple_stopwatch.hpp [2:5]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/stopwatch.hpp [3:5]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/strict_stopwatch.hpp [2:5]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/suspendable_stopwatch.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 23735cecfcf0a60c051f7faba5e89078
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/suite/indexing/container_utils.hpp at line 4, boost/python/suite/indexing/detail/indexing_suite_detail.hpp at line 3, boost/python/suite/indexing/indexing_suite.hpp at line 3, boost/python/suite/indexing/map_indexing_suite.hpp at line 3, boost/python/suite/indexing/vector_indexing_suite.hpp at line 3
+ License text:
+ // (C) Copyright Joel de Guzman 2003.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/python/suite/indexing/container_utils.hpp [2:4]
+ boost/python/suite/indexing/detail/indexing_suite_detail.hpp [1:3]
+ boost/python/suite/indexing/indexing_suite.hpp [1:3]
+ boost/python/suite/indexing/map_indexing_suite.hpp [1:3]
+ boost/python/suite/indexing/vector_indexing_suite.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 23778f87dcf85ae8b833451d958ec8be
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2007 Joel de Guzman
+ Copyright (c) 2007 Dan Marsden
+ Copyright (c) 2009-2011 Christopher Schmidt
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/adapted/struct/adapt_assoc_struct.hpp [2:4]
+ boost/fusion/adapted/struct/adapt_struct.hpp [2:4]
+ boost/fusion/adapted/struct/detail/adapt_base.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 23b27274909dd16fa48c4bb48b55b3aa
+BELONGS ya.make
+ License text:
+ // Copyright Peter Dimov 2001-2002
+ // Copyright Aleksey Gurtovoy 2001-2004
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/arg.hpp [9:10]
+ boost/mpl/arg_fwd.hpp [5:6]
+ boost/mpl/aux_/preprocessed/bcc/arg.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc551/arg.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc_pre590/arg.hpp [2:3]
+ boost/mpl/aux_/preprocessed/dmc/arg.hpp [2:3]
+ boost/mpl/aux_/preprocessed/gcc/arg.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc60/arg.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc70/arg.hpp [2:3]
+ boost/mpl/aux_/preprocessed/mwcw/arg.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ctps/arg.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ttp/arg.hpp [2:3]
+ boost/mpl/aux_/preprocessed/plain/arg.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 23c8bb4b26b422d99ac7ea9660dc580c
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/strong_typedef.hpp at line 15
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/serialization/strong_typedef.hpp [12:15]
+
+KEEP COPYRIGHT_SERVICE_LABEL 23ec45cdd65cf0f6b92e9f7c947851ad
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2000-2010
+ // Joerg Walter, Mathias Koch, David Bellot
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/ublas/fwd.hpp [2:3]
+ boost/numeric/ublas/hermitian.hpp [2:3]
+ boost/numeric/ublas/io.hpp [2:3]
+ boost/numeric/ublas/vector.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 246b91667b5b03d6d465ceede376e098
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/property_map/property_map_iterator.hpp at line 3
+ License text:
+ // (C) Copyright Jeremy Siek, 2001.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/property_map/property_map_iterator.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 24912d75a8a2a76e1aa259b4b84a3c7b
+BELONGS ya.make
+ License text:
+ Copyright 2010-2013 Karsten Ahnert
+ Copyright 2010-2015 Mario Mulansky
+ Copyright 2012 Christoph Koke
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/stepper/controlled_runge_kutta.hpp [8:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2491de20f7a9d79855692fc382be811a
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
+ // Copyright 2004-2008 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/detail/sp_counted_base_spin.hpp [13:14]
+
+KEEP COPYRIGHT_SERVICE_LABEL 24d6214a4251073152717c9edc799703
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2010 Athanasios Iliopoulos
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/ublas/assignment.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 24f38140c8e89964345d550ec0c8c6e0
+BELONGS ya.make
+ License text:
+ Copyright (c) 2002-2003 Joel de Guzman
+ Copyright (c) 2002 Juan Carlos Arevalo-Baeza
+ Copyright (c) 2002-2003 Martin Wille
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/attribute/closure_context.hpp [2:4]
+ boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp [2:4]
+ boost/spirit/home/classic/core/non_terminal/impl/subrule.ipp [2:4]
+ boost/spirit/home/classic/core/non_terminal/parser_context.hpp [2:4]
+ boost/spirit/home/classic/core/non_terminal/subrule.hpp [2:4]
+ boost/spirit/home/classic/dynamic.hpp [2:5]
+ boost/spirit/home/classic/dynamic/for.hpp [2:4]
+ boost/spirit/home/classic/dynamic/if.hpp [2:5]
+ boost/spirit/home/classic/dynamic/while.hpp [2:4]
+ boost/spirit/home/classic/meta/as_parser.hpp [2:4]
+ boost/spirit/home/classic/meta/impl/parser_traits.ipp [2:5]
+ boost/spirit/home/classic/meta/impl/traverse.ipp [2:4]
+ boost/spirit/home/classic/meta/parser_traits.hpp [2:5]
+ boost/spirit/home/classic/meta/traverse.hpp [2:4]
+ boost/spirit/home/classic/utility/functor_parser.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 25101a2bf5bf72c9f5a65128f604df86
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/filesystem/convenience.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/filesystem/convenience.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2516b6c5eb8aa8b5db5b35bc7391bd45
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2000-2009
+ // Joerg Walter, Mathias Koch, Gunter Winkler
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/ublas/functional.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2548a67b92ccb549f815c71fffedd824
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iostreams/detail/config/windows_posix.hpp at line 4, boost/iostreams/detail/double_object.hpp at line 4, boost/iostreams/detail/select_by_size.hpp at line 4, boost/iostreams/device/array.hpp at line 4, boost/iostreams/device/null.hpp at line 4, boost/iostreams/filtering_stream.hpp at line 4
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/iostreams/detail/config/windows_posix.hpp [1:5]
+ boost/iostreams/detail/double_object.hpp [1:4]
+ boost/iostreams/detail/select_by_size.hpp [1:4]
+ boost/iostreams/device/array.hpp [1:4]
+ boost/iostreams/device/null.hpp [1:4]
+ boost/iostreams/filtering_stream.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 255723eed8c8f6b6ec5152864ce80e8a
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signals2/detail/result_type_wrapper.hpp at line 6, boost/signals2/detail/signals_common.hpp at line 6, boost/signals2/last_value.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/signals2/detail/result_type_wrapper.hpp [3:6]
+ boost/signals2/detail/signals_common.hpp [3:6]
+ boost/signals2/last_value.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 259fd9262673671b8cab0f903fbeabef
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2007 Matthias Troyer
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/parallel/detail/untracked_pair.hpp [1:1]
+ boost/property_map/parallel/detail/untracked_pair.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 25e0eaeed6a114cd44e28e07f4bcf799
+BELONGS ya.make
+ License text:
+ Copyright 2008 Adobe Systems Incorporated
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/algorithm/gather.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 25e4e91c7904dabe1db993d0a9d4c304
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/mfc_map.hpp at line 5
+ License text:
+ // Copyright Adam D. Walling 2012. Use, modification and
+ // distribution is subject to the Boost Software License, Version
+ // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/range/mfc_map.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 260eda8e865b1ac44daf780b42e51c62
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2005-2008 The Trustees of Indiana University.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/distributed/boman_et_al_graph_coloring.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 26559e960931b28891fa79dd8cbf7bd0
+BELONGS ya.make
+ License text:
+ // (c) 2008 Gordon Woodhull
// Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/sort/sort.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 346c67fb4a777a0d04af25c1d1bd52dc
-BELONGS ya.make
- License text:
- // Copyright (C) 2003, Fernando Luis Cacciola Carballal.
- // Copyright (C) 2014, 2015 Andrzej Krzemienski.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/none.hpp [1:2]
- boost/none_t.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3480f6f1e992412638387963c9a8bfe5
-BELONGS ya.make
- License text:
- // Copyright David Abrahams and Thomas Becker 2000-2006.
- // Copyright Kohei Takahashi 2012-2014.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/iterator/zip_iterator.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 34a792da65f2f8745dcf28bc6c533356
-BELONGS ya.make
- License text:
- * Copyright 2000 Maarten Keijzer
- * Copyright 2002 Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/interval/detail/msvc_rounding_control.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 34ce55406b46dd8bed8401d40235f330
-BELONGS ya.make
- License text:
- // Copyright 2014 LASMEA UMR 6602 CNRS/Univ. Clermont II
- // Copyright 2014 LRI UMR 8623 CNRS/Univ Paris Sud XI
- // Copyright 2014 MetaScale SAS
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/external/nt2/nt2_copy.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 351746b3263b8ecde03d30e68809a8c2
-BELONGS ya.make
- License text:
- // Copyright 2005 Trustees of Indiana University
- // Authors: Andrew Lumsdaine, Douglas Gregor
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/simple_point.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 354c2179cce41ffab59e14fbc4d8cbe0
-BELONGS ya.make
- License text:
- // This file was modified by Oracle on 2017, 2018.
- // Modifications copyright (c) 2017-2018, Oracle and/or its affiliates.
- // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/srs/projections/epsg_traits.hpp [5:7]
- boost/geometry/srs/projections/impl/dms_parser.hpp [5:7]
- boost/geometry/srs/projections/impl/pj_datum_set.hpp [6:8]
- boost/geometry/srs/projections/impl/pj_ell_set.hpp [6:8]
- boost/geometry/srs/projections/impl/pj_init.hpp [6:8]
- boost/geometry/srs/projections/impl/pj_strerrno.hpp [4:6]
- boost/geometry/srs/projections/impl/pj_transform.hpp [4:6]
- boost/geometry/srs/projections/proj/aeqd.hpp [9:11]
- boost/geometry/srs/projections/proj/cc.hpp [9:11]
- boost/geometry/srs/projections/proj/gnom.hpp [9:11]
- boost/geometry/srs/projections/proj/goode.hpp [9:11]
- boost/geometry/srs/projections/proj/healpix.hpp [9:11]
- boost/geometry/srs/projections/proj/isea.hpp [9:11]
- boost/geometry/srs/projections/proj/laea.hpp [9:11]
- boost/geometry/srs/projections/proj/lsat.hpp [9:11]
- boost/geometry/srs/projections/proj/nsper.hpp [9:11]
- boost/geometry/srs/projections/proj/ob_tran.hpp [9:11]
- boost/geometry/srs/projections/proj/ortho.hpp [9:11]
- boost/geometry/srs/projections/proj/stere.hpp [9:11]
- boost/geometry/srs/projections/proj/tcc.hpp [9:11]
- boost/geometry/srs/projections/proj/vandg2.hpp [9:11]
- boost/geometry/strategies/spherical/distance_haversine.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 355b2ffcb48b6b4cc42ba88a8b3a4faf
-BELONGS ya.make
- License text:
- Copyright 2017 Glen Joseph Fernandes
- (glenjofe@gmail.com)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/allocate_local_shared_array.hpp [2:3]
- boost/smart_ptr/make_local_shared_array.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 356e94e4f4ffdf79ede13b61da73d082
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2006.
- // Copyright Paul A. Bristow 2006, 2012, 2017.
- // Copyright Thomas Mang 2012.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/distributions/students_t.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 357355a40dea9ba097800691e11a08d7
-BELONGS ya.make
- License text:
- // Copyright Beman Dawes 1994, 2006, 2008
- // Copyright Vicente J. Botet Escriba 2009
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/chrono/detail/inlined/mac/process_cpu_clocks.hpp [3:4]
- boost/chrono/detail/inlined/mac/thread_clock.hpp [3:5]
- boost/chrono/detail/inlined/posix/process_cpu_clocks.hpp [3:4]
- boost/chrono/detail/inlined/posix/thread_clock.hpp [3:4]
- boost/chrono/detail/inlined/win/process_cpu_clocks.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3597dd90b081d5668dabc2026c83961e
-BELONGS ya.make
- License text:
- * Copyright (c) 2014 Glen Fernandes
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/checked_delete.hpp [2:2]
- boost/detail/lightweight_test.hpp [2:2]
- boost/detail/no_exceptions_support.hpp [2:2]
- boost/noncopyable.hpp [2:2]
- boost/ref.hpp [2:2]
- boost/swap.hpp [2:2]
- boost/utility/addressof.hpp [2:2]
- boost/utility/enable_if.hpp [2:2]
- boost/utility/explicit_operator_bool.hpp [2:2]
- boost/utility/swap.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 35f3967788124fb1166bf637d6cd211a
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/transitive_closure.hpp at line 4
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/transitive_closure.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 362e438ad12174e10c63f3ad9fa1ce0d
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/borland.hpp [1:5]
- boost/config/compiler/codegear.hpp [1:5]
- boost/config/compiler/gcc.hpp [1:9]
- boost/config/compiler/hp_acc.hpp [1:8]
- boost/config/compiler/intel.hpp [1:10]
- boost/config/compiler/visualc.hpp [1:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 365adb3be0f210d54497c8792ef79936
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/random/detail/config.hpp at line 5, boost/random/detail/disable_warnings.hpp at line 5, boost/random/detail/enable_warnings.hpp at line 5, boost/random/detail/seed.hpp at line 5, boost/random/detail/seed_impl.hpp at line 5
- License text:
- * Copyright Steven Watanabe 2009
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/random/detail/config.hpp [3:5]
- boost/random/detail/disable_warnings.hpp [3:5]
- boost/random/detail/enable_warnings.hpp [3:5]
- boost/random/detail/seed.hpp [3:5]
- boost/random/detail/seed_impl.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3674cfd3d09da8cdf64d636540eedccb
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/get_max_size.hpp [3:6]
- boost/geometry/policies/robustness/robust_type.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 368bc0676fed97d8e20cb5e9e1a4530f
-BELONGS ya.make
- License text:
- // Copyright (C) 2009 Andrew Sutton
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/detail/labeled_graph_traits.hpp [1:1]
- boost/graph/graph_mutability_traits.hpp [1:1]
- boost/graph/labeled_graph.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 36e9b1823d56fbd4e1710912ff2b784b
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/detail/dealloc.hpp at line 3, boost/python/return_opaque_pointer.hpp at line 3
- License text:
- // Copyright Gottfried Ganßauge 2003.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/python/detail/dealloc.hpp [1:3]
- boost/python/return_opaque_pointer.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 36fea81184c5ae64a7624098ffc18c64
-BELONGS libs/thread/ya.make ya.make
- License text:
- // Copyright (C) 2001-2003
- // William E. Kempf
- // (C) Copyright 2008-9 Anthony Williams
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/interprocess/sync/interprocess_recursive_mutex.hpp [15:16]
- boost/interprocess/sync/posix/mutex.hpp [15:16]
- boost/interprocess/sync/posix/recursive_mutex.hpp [15:16]
- boost/interprocess/sync/spin/recursive_mutex.hpp [15:16]
- boost/thread.hpp [1:3]
- boost/thread/detail/config.hpp [1:3]
- boost/thread/exceptions.hpp [1:4]
- boost/thread/xtime.hpp [1:3]
- libs/thread/src/pthread/thread.cpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 374b652d73bc75d45730b2239830c0a0
-BELONGS ya.make
- License text:
- // Copyright (c) 2002-2003
- // Eric Friedman
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/variant/bad_visit.hpp [6:7]
- boost/variant/detail/apply_visitor_binary.hpp [6:7]
- boost/variant/detail/apply_visitor_delayed.hpp [6:7]
- boost/variant/detail/apply_visitor_unary.hpp [6:7]
- boost/variant/detail/move.hpp [6:8]
- boost/variant/static_visitor.hpp [6:7]
- boost/variant/visitor_ptr.hpp [6:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3754fd14fa62eae798d8325bcb41f0a7
-BELONGS ya.make
- License text:
- // Copyright (C) 2007 Marcin Kalicinski
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/property_tree/detail/xml_parser_read_rapidxml.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3761f0e38b5da4769378918141293e40
-BELONGS ya.make
- License text:
- // Copyright 2002 Rensselaer Polytechnic Institute
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/floyd_warshall_shortest.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3781454acc49374ec380053b507684cc
-BELONGS ya.make
- License text:
- // Copyright (c) 2001-2011 Hartmut Kaiser
- // Copyright (c) 2001-2011 Joel de Guzman
- // Copyright (c) 2011 Thomas Bernard
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/repository/home/qi/directive/kwd.hpp [2:3]
- boost/spirit/repository/home/qi/operator.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3790b2f380ed5746f91d9f6f8e6a50b2
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2006.
- // Copyright Paul A. Bristow 2007.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/distributions/bernoulli.hpp [3:4]
- boost/math/distributions/binomial.hpp [3:4]
- boost/math/distributions/cauchy.hpp [1:2]
- boost/math/distributions/find_location.hpp [1:2]
- boost/math/distributions/find_scale.hpp [1:2]
- boost/math/distributions/negative_binomial.hpp [3:4]
- boost/math/distributions/poisson.hpp [3:4]
- boost/math/distributions/rayleigh.hpp [1:3]
- boost/math/policies/error_handling.hpp [1:2]
- boost/math/special_functions/detail/ibeta_inverse.hpp [1:4]
- boost/math/special_functions/detail/t_distribution_inv.hpp [1:4]
- boost/math/tools/user.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 379d55304a225ee534790d8a1bfe4816
-BELONGS ya.make
- License text:
- // Copyright (c) 1995, 2007-2015 Barend Gehrels, Amsterdam, the Netherlands.
- // Copyright (c) 1995 Maarten Hilferink, Amsterdam, the Netherlands
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/strategies/agnostic/simplify_douglas_peucker.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 37edcc5203bf2cbf44c6f524b2dd14d6
-BELONGS ya.make
- License text:
- // (C) Copyright Tobias Schwinger
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/function_types/components.hpp [2:2]
- boost/function_types/config/cc_names.hpp [2:2]
- boost/function_types/config/compiler.hpp [2:2]
- boost/function_types/config/config.hpp [2:2]
- boost/function_types/detail/class_transform.hpp [2:2]
- boost/function_types/detail/classifier.hpp [2:2]
- boost/function_types/detail/classifier_impl/arity10_0.hpp [2:2]
- boost/function_types/detail/classifier_impl/arity10_1.hpp [2:2]
- boost/function_types/detail/classifier_impl/arity20_0.hpp [2:2]
- boost/function_types/detail/classifier_impl/arity20_1.hpp [2:2]
- boost/function_types/detail/classifier_impl/arity30_0.hpp [2:2]
- boost/function_types/detail/classifier_impl/arity30_1.hpp [2:2]
- boost/function_types/detail/classifier_impl/arity40_0.hpp [2:2]
- boost/function_types/detail/classifier_impl/arity40_1.hpp [2:2]
- boost/function_types/detail/classifier_impl/arity50_0.hpp [2:2]
- boost/function_types/detail/classifier_impl/arity50_1.hpp [2:2]
- boost/function_types/detail/classifier_impl/master.hpp [2:2]
- boost/function_types/detail/components_as_mpl_sequence.hpp [2:2]
- boost/function_types/detail/components_impl/arity10_0.hpp [2:2]
- boost/function_types/detail/components_impl/arity10_1.hpp [2:2]
- boost/function_types/detail/components_impl/arity20_0.hpp [2:2]
- boost/function_types/detail/components_impl/arity20_1.hpp [2:2]
- boost/function_types/detail/components_impl/arity30_0.hpp [2:2]
- boost/function_types/detail/components_impl/arity30_1.hpp [2:2]
- boost/function_types/detail/components_impl/arity40_0.hpp [2:2]
- boost/function_types/detail/components_impl/arity40_1.hpp [2:2]
- boost/function_types/detail/components_impl/arity50_0.hpp [2:2]
- boost/function_types/detail/components_impl/arity50_1.hpp [2:2]
- boost/function_types/detail/components_impl/master.hpp [2:2]
- boost/function_types/detail/cv_traits.hpp [2:2]
- boost/function_types/detail/encoding/aliases_def.hpp [2:2]
- boost/function_types/detail/encoding/aliases_undef.hpp [2:2]
- boost/function_types/detail/encoding/def.hpp [2:2]
- boost/function_types/detail/encoding/undef.hpp [2:2]
- boost/function_types/detail/pp_arity_loop.hpp [2:2]
- boost/function_types/detail/pp_cc_loop/master.hpp [2:2]
- boost/function_types/detail/pp_cc_loop/preprocessed.hpp [2:2]
- boost/function_types/detail/pp_loop.hpp [2:2]
- boost/function_types/detail/pp_retag_default_cc/master.hpp [2:2]
- boost/function_types/detail/pp_retag_default_cc/preprocessed.hpp [2:2]
- boost/function_types/detail/pp_tags/cc_tag.hpp [2:2]
- boost/function_types/detail/pp_tags/master.hpp [2:2]
- boost/function_types/detail/pp_tags/preprocessed.hpp [2:2]
- boost/function_types/detail/pp_variate_loop/master.hpp [2:2]
- boost/function_types/detail/pp_variate_loop/preprocessed.hpp [2:2]
- boost/function_types/detail/retag_default_cc.hpp [2:2]
- boost/function_types/detail/synthesize.hpp [2:2]
- boost/function_types/detail/synthesize_impl/arity10_0.hpp [2:2]
- boost/function_types/detail/synthesize_impl/arity10_1.hpp [2:2]
- boost/function_types/detail/synthesize_impl/arity20_0.hpp [2:2]
- boost/function_types/detail/synthesize_impl/arity20_1.hpp [2:2]
- boost/function_types/detail/synthesize_impl/arity30_0.hpp [2:2]
- boost/function_types/detail/synthesize_impl/arity30_1.hpp [2:2]
- boost/function_types/detail/synthesize_impl/arity40_0.hpp [2:2]
- boost/function_types/detail/synthesize_impl/arity40_1.hpp [2:2]
- boost/function_types/detail/synthesize_impl/arity50_0.hpp [2:2]
- boost/function_types/detail/synthesize_impl/arity50_1.hpp [2:2]
- boost/function_types/detail/synthesize_impl/master.hpp [2:2]
- boost/function_types/detail/to_sequence.hpp [2:2]
- boost/function_types/function_arity.hpp [2:2]
- boost/function_types/function_pointer.hpp [2:2]
- boost/function_types/function_reference.hpp [2:2]
- boost/function_types/function_type.hpp [2:2]
- boost/function_types/is_callable_builtin.hpp [2:2]
- boost/function_types/is_function.hpp [2:2]
- boost/function_types/is_function_pointer.hpp [2:2]
- boost/function_types/is_function_reference.hpp [2:2]
- boost/function_types/is_member_function_pointer.hpp [2:2]
- boost/function_types/is_member_object_pointer.hpp [2:2]
- boost/function_types/is_member_pointer.hpp [2:2]
- boost/function_types/is_nonmember_callable_builtin.hpp [2:2]
- boost/function_types/member_function_pointer.hpp [2:2]
- boost/function_types/member_object_pointer.hpp [2:2]
- boost/function_types/parameter_types.hpp [2:2]
- boost/function_types/property_tags.hpp [2:2]
- boost/function_types/result_type.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 37ef22160482a625f43027681621c621
-BELONGS ya.make
- License text:
- * Copyright (c) 2003-2005
- * John Maddock
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/regex/v4/error_type.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3855da3f22dc989b1adc747b4e23a949
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2003 Joel de Guzman
- Copyright (c) 2002-2003 Hartmut Kaiser
- Copyright (c) 2003 Gustavo Guerra
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/debug/debug_node.hpp [2:5]
- boost/spirit/home/classic/meta/impl/parser_traits.ipp [2:5]
- boost/spirit/home/classic/meta/parser_traits.hpp [2:5]
- boost/spirit/home/classic/phoenix/tuple_helpers.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3861126765089225a9c2f2aab3696667
-BELONGS ya.make
- License text:
- // Copyright (c) 2000-2011 Joerg Walter, Mathias Koch, David Bellot
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/ublas/blas.hpp [1:1]
- boost/numeric/ublas/exception.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 386422ed6dcb6b59b9ac548256e71381
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/platform/macos.hpp [1:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 38b8d9f6332e5a688b471b92d217a79b
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/move/adl_move_swap.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/move/adl_move_swap.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 38c7b8f60b51f597ba97b03f9715b4b9
-BELONGS ya.make
- License text:
- // Copyright 2014 Peter Dimov
- // Copyright 2014 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/core/demangle.hpp [6:7]
- boost/core/is_same.hpp [12:12]
- boost/core/lightweight_test_trait.hpp [14:14]
-
-KEEP COPYRIGHT_SERVICE_LABEL 38d3ce2209a395c064c29e47dccce34b
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/select_type.hpp at line 3, boost/type.hpp at line 3
- License text:
- // (C) Copyright David Abrahams 2001.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/detail/select_type.hpp [1:3]
- boost/type.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 39059a8eede404b2a251f7d030029784
-BELONGS ya.make
- License text:
- // (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
- // Copyright (c) 2001, 2002, 2012 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/shared_array.hpp [7:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 390adb9c382fea4ca3f3a24a08bc412b
-BELONGS ya.make
- License text:
- * Copyright Nick Thompson, 2018
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/quadrature/naive_monte_carlo.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 390b952a13e57b2a99a6fa849a00c0e7
-BELONGS ya.make
- License text:
- Copyright 2017 Glen Joseph Fernandes
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_traits/make_void.hpp [2:2]
- boost/type_traits/nonesuch.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3959375d23207bb679997771052de5cc
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2007-8.
+ // (See accompanying file LICENSEmpl::_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/msm/mpl_graph/mpl_graph.hpp [7:9]
+
+KEEP COPYRIGHT_SERVICE_LABEL 26692c9005ef6256aa7134eef5a4c2ed
+BELONGS ya.make
+ License text:
+ // Copyright Antony Polukhin, 2013-2014.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/variant/detail/multivisitors_cpp11_based.hpp [6:6]
+ boost/variant/detail/multivisitors_cpp14_based.hpp [7:7]
+ boost/variant/detail/multivisitors_preprocessor_based.hpp [6:6]
+ boost/variant/multivisitors.hpp [6:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 266d0bf761289539d88d2d0c479f3e6c
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com
+ // Copyright (c) 2005-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/asio/ssl/detail/impl/openssl_init.ipp [5:6]
+ boost/asio/ssl/impl/context.hpp [5:6]
+ boost/asio/ssl/impl/context.ipp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 26ad08d832a34ee06ee9242a2e6f0191
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2002-2006 Marcin Kalicinski
+ // Copyright (C) 2007 Alexey Baskakov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/property_tree/detail/info_parser_writer_settings.hpp [2:3]
+ boost/property_tree/detail/xml_parser_writer_settings.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 26c31cb23da28e487c480a209fc8f691
+BELONGS ya.make
+ License text:
+ // Copyright Beman Dawes 2003, 2006, 2011
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/timer/config.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 26d8aac6fc547a1e5f51e33742e3d215
+BELONGS ya.make
+ License text:
+ Copyright (c) 2014 Eric Niebler
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/include/nil.hpp [2:2]
+ boost/fusion/support/config.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 26ec38d4689211b14e2c5b53e9a78f76
+BELONGS ya.make
+ License text:
+ // Copyright 2009 The Trustees of Indiana University.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/detail/histogram_sort.hpp [1:1]
+ boost/graph/topology.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 27039f1014fc0cb087f4ed2a48c6ff74
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2003 Daniel Nuffer
+ Copyright (c) 2001-2007 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/tree/ast.hpp [2:4]
+ boost/spirit/home/classic/tree/parse_tree.hpp [2:4]
+ boost/spirit/home/classic/tree/parse_tree_utils.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 27100ec4a99cd9d80391674193d16ca4
+BELONGS ya.make
+ License text:
+ // Copyright 2003 - 2011 LASMEA UMR 6602 CNRS/Univ. Clermont II
+ // Copyright 2009 - 2011 LRI UMR 8623 CNRS/Univ Paris Sud XI
+ // Copyright 2011 Eric Niebler
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/proto/detail/remove_typename.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 271724fafcb242b0c0f0c421b755f5aa
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2002-2003
+ // David Moore, William E. Kempf
+ // Copyright (C) 2007-8 Anthony Williams
+ // (C) Copyright 2013 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/barrier.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2724c3ea346ae21b40b968119bcd1167
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/logic/tribool.hpp at line 5, boost/logic/tribool_fwd.hpp at line 5, boost/logic/tribool_io.hpp at line 5
+ License text:
+ // Copyright Douglas Gregor 2002-2004. Use, modification and
+ // distribution is subject to the Boost Software License, Version
+ // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/logic/tribool.hpp [3:5]
+ boost/logic/tribool_fwd.hpp [3:5]
+ boost/logic/tribool_io.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 275365ad223b4477b2d7d0620fee65f5
+BELONGS ya.make
+ License text:
+ // Copyright 2002, 2009, 2014 Peter Dimov
+ // Copyright 2008-2009 Frank Mori Hess
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/enable_shared_from_raw.hpp [7:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 275d0865f693a03adf83bd0f3ac07c33
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iterator/detail/config_def.hpp at line 5, boost/iterator/detail/enable_if.hpp at line 5, boost/iterator/filter_iterator.hpp at line 5, boost/iterator/indirect_iterator.hpp at line 5, boost/iterator/interoperable.hpp at line 5, boost/iterator/iterator_adaptor.hpp at line 5, boost/iterator/iterator_archetypes.hpp at line 5, boost/iterator/iterator_categories.hpp at line 5, boost/iterator/iterator_concepts.hpp at line 5, boost/iterator/iterator_facade.hpp at line 5, boost/iterator/reverse_iterator.hpp at line 5, boost/iterator/transform_iterator.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/iterator/detail/config_def.hpp [1:5]
+ boost/iterator/detail/enable_if.hpp [1:5]
+ boost/iterator/filter_iterator.hpp [1:5]
+ boost/iterator/indirect_iterator.hpp [1:5]
+ boost/iterator/interoperable.hpp [1:5]
+ boost/iterator/iterator_adaptor.hpp [1:5]
+ boost/iterator/iterator_archetypes.hpp [1:3]
+ boost/iterator/iterator_categories.hpp [1:3]
+ boost/iterator/iterator_concepts.hpp [1:3]
+ boost/iterator/iterator_facade.hpp [1:5]
+ boost/iterator/reverse_iterator.hpp [1:5]
+ boost/iterator/transform_iterator.hpp [1:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2778cda5aa02277520174bc9c4c37470
+BELONGS ya.make
+ License text:
+ // This file was modified by Oracle on 2015, 2017.
+ // Modifications copyright (c) 2015-2017 Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/direction_code.hpp [5:6]
+ boost/geometry/algorithms/detail/overlay/get_turn_info.hpp [6:7]
+ boost/geometry/algorithms/detail/partition.hpp [6:7]
+ boost/geometry/algorithms/detail/point_is_spike_or_equal.hpp [8:9]
+ boost/geometry/algorithms/sym_difference.hpp [5:6]
+ boost/geometry/core/exception.hpp [7:8]
+ boost/geometry/strategies/geographic/distance_thomas.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 277e6a29d6f3bf8fec3732391a666d6e
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/test/impl/cpp_main.ipp at line 4, boost/test/impl/test_main.ipp at line 4
+ License text:
+ // (C) Copyright Gennadiy Rozental 2001.
+ // (C) Copyright Beman Dawes 1995-2001.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/test/impl/cpp_main.ipp [1:4]
+ boost/test/impl/test_main.ipp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 27c670043b04bd7901f71bf63f139908
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/converter/pytype_function.hpp at line 3
+ License text:
+ // Copyright David Abrahams 2002, Nikolay Mladenov 2007.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/python/converter/pytype_function.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 27ddeabbafbaeb743985907331386107
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/vacpp.hpp [1:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2822e8ff52ff00b8c0b77a79618c0a15
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2010 Alfredo Correa
+ // Copyright (c) 2010-2012 Barend Gehrels, Amsterdam, the Netherlands.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/geometries/adapted/boost_array.hpp [3:4]
+ boost/geometry/geometries/adapted/std_array.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 28467714d17407abf257b8ba02a977ef
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/architecture/arm.h at line 5, boost/predef/os.h at line 5, boost/predef/os/ios.h at line 5, boost/predef/os/macos.h at line 5
+ License text:
+ Copyright Rene Rivera 2008-2015
+ Copyright Franz Detro 2014
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/predef/architecture/arm.h [2:6]
+ boost/predef/os.h [2:5]
+ boost/predef/os/ios.h [2:5]
+ boost/predef/os/macos.h [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 286ee6881d6fd5e754840b518ab1c541
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001, Daniel C. Nuffer
+ Copyright (c) 2003, Hartmut Kaiser
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/iterator/fixed_size_queue.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 28754ad9c0aa02276f0e2f7033f5dfc4
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container_hash/hash.hpp at line 4
+ License text:
+ // Copyright 2005-2014 Daniel James.
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/container_hash/hash.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 28928198315325a81f74270ad06e5e12
+BELONGS ya.make
+ License text:
+ // Copyright Pavol Droba 2002-2006.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/algorithm/string/compare.hpp [3:3]
+ boost/algorithm/string/detail/finder.hpp [3:3]
+ boost/algorithm/string/erase.hpp [3:3]
+ boost/algorithm/string/finder.hpp [3:3]
+ boost/algorithm/string/join.hpp [3:3]
+ boost/algorithm/string/replace.hpp [3:3]
+ boost/algorithm/string/split.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 28974520d6ba59cf881108b772eb6136
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001, Thomas Flemming, tf@ttqv.com
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/srs/projections/proj/healpix.hpp [32:32]
+ boost/geometry/srs/projections/proj/krovak.hpp [28:29]
+
+KEEP COPYRIGHT_SERVICE_LABEL 28c9c06c2cde233aee608a094110da18
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signals2/detail/null_output_iterator.hpp at line 6, boost/signals2/detail/unique_lock.hpp at line 7, boost/signals2/dummy_mutex.hpp at line 8
+ License text:
+ // Copyright Frank Mori Hess 2008.
+ // Distributed under the Boost Software License, Version
+ // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/signals2/detail/null_output_iterator.hpp [4:6]
+ boost/signals2/detail/unique_lock.hpp [5:7]
+ boost/signals2/dummy_mutex.hpp [6:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 28d732e1da2cbf52812dcc1844a4d2d4
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/is_class.hpp at line 4
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_traits/is_class.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 29b0154b5b9497e05eafdea58aee1ec9
+BELONGS ya.make
+ License text:
+ // Copyright 2000 University of Notre Dame.
+ // Authors: Jeremy G. Siek, Andrew Lumsdaine, Lie-Quan Lee
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/edge_connectivity.hpp [2:3]
+ boost/graph/edmonds_karp_max_flow.hpp [2:3]
+ boost/graph/push_relabel_max_flow.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 29c2f268f49f1dca1203b60b9452f3b9
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2003, 2008 Fernando Luis Cacciola Carballal.
+ // Copyright (C) 2016 Andrzej Krzemienski
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/optional/detail/optional_aligned_storage.hpp [1:2]
+ boost/optional/detail/optional_factory_support.hpp [1:2]
+ boost/optional/optional_fwd.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 29ef0d00b2aae64d2f0f466fcb3faa99
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2011 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/cv_status.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2a09550ee1639dbc41d6a39a2c375d5d
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2013 John Maddock, Antony Polukhin
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/detail/basic_pointerbuf.hpp [6:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2a0e77e759c8b880049f165423e4b6fb
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2006-7 John Maddock
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/tools/config.hpp [1:3]
+ boost/math/tools/workaround.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2a14a3997f9ef4f008c150826158909e
+BELONGS ya.make
+ License text:
+ // (C) Copyright 2008-10 Anthony Williams
+ // (C) Copyright 2011-2015 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/future.hpp [1:2]
+ boost/thread/futures/future_error.hpp [1:2]
+ boost/thread/futures/future_error_code.hpp [1:2]
+ boost/thread/futures/future_status.hpp [1:2]
+ boost/thread/futures/is_future_type.hpp [1:2]
+ boost/thread/futures/launch.hpp [1:2]
+ boost/thread/futures/wait_for_all.hpp [1:2]
+ boost/thread/futures/wait_for_any.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2a1b9056b88c2a786bdb0458965a2f2e
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2002, 2009, 2014 Peter Dimov
+ // Copyright (2) Beman Dawes 2010, 2011
+ // Copyright (3) Ion Gaztanaga 2013
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/core/lightweight_test.hpp [13:15]
+ boost/endian/detail/lightweight_test.hpp [13:15]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2a3b1092793f083bc8f7481a948c88cf
+BELONGS ya.make
+ License text:
+ // Copyright Kevlin Henney, 2000-2005.
+ // Copyright Alexander Nasonov, 2006-2010.
+ // Copyright Antony Polukhin, 2011-2014.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/lexical_cast.hpp [1:3]
+ boost/lexical_cast/bad_lexical_cast.hpp [1:3]
+ boost/lexical_cast/detail/converter_lexical.hpp [1:3]
+ boost/lexical_cast/detail/converter_lexical_streams.hpp [1:3]
+ boost/lexical_cast/detail/converter_numeric.hpp [1:3]
+ boost/lexical_cast/detail/inf_nan.hpp [1:3]
+ boost/lexical_cast/detail/is_character.hpp [1:3]
+ boost/lexical_cast/detail/lcast_char_constants.hpp [1:3]
+ boost/lexical_cast/detail/lcast_unsigned_converters.hpp [1:3]
+ boost/lexical_cast/detail/widest_char.hpp [1:3]
+ boost/lexical_cast/lexical_cast_old.hpp [1:3]
+ boost/lexical_cast/try_lexical_convert.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2a74f5dc5adfaca2efc96baf17b67dd6
+BELONGS ya.make
+ License text:
+ Copyright (c) 2005-2010 Joel de Guzman
+ Copyright (c) 2010-2011 Thomas Heller
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/phoenix.hpp [2:3]
+ boost/phoenix/core/argument.hpp [2:4]
+ boost/phoenix/core/argument.hpp [86:87]
+ boost/phoenix/core/argument.hpp [117:118]
+ boost/phoenix/core/detail/argument.hpp [2:4]
+ boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_10.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_20.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_30.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_40.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_50.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_10.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_20.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_30.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_40.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_50.hpp [2:3]
+ boost/phoenix/core/environment.hpp [2:3]
+ boost/phoenix/scope/local_variable.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2af72a7e17537e33a1df9af7da221b72
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2008 Gerald I. Evenden
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/srs/projections/proj/etmerc.hpp [26:26]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2b2af125915ba7065c8a686471913605
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/allocator_traits.hpp at line 11, boost/container/scoped_allocator.hpp at line 11, boost/container/uses_allocator.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2011-2013. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/container/allocator_traits.hpp [9:11]
+ boost/container/scoped_allocator.hpp [9:11]
+ boost/container/uses_allocator.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2b5b2baa7c08899ee3f65704d7448b3d
+BELONGS ya.make
+ License text:
+ // This file was modified by Oracle on 2017.
+ // Modifications copyright (c) 2017 Oracle and/or its affiliates.
+ // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/buffer.hpp [7:9]
+ boost/geometry/algorithms/correct.hpp [8:10]
+ boost/geometry/algorithms/detail/buffer/buffer_inserter.hpp [5:7]
+ boost/geometry/algorithms/detail/buffer/get_piece_turns.hpp [6:8]
+ boost/geometry/algorithms/detail/equals/collect_vectors.hpp [8:9]
+ boost/geometry/algorithms/detail/extreme_points.hpp [8:9]
+ boost/geometry/algorithms/detail/has_self_intersections.hpp [6:8]
+ boost/geometry/algorithms/detail/multi_modify.hpp [7:9]
+ boost/geometry/algorithms/detail/overlay/assign_parents.hpp [6:8]
+ boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp [6:7]
+ boost/geometry/algorithms/detail/overlay/get_intersection_points.hpp [5:6]
+ boost/geometry/algorithms/detail/overlay/get_relative_order.hpp [5:6]
+ boost/geometry/algorithms/detail/overlay/handle_colocations.hpp [6:7]
+ boost/geometry/algorithms/detail/overlay/less_by_segment_ratio.hpp [5:6]
+ boost/geometry/algorithms/detail/overlay/ring_properties.hpp [5:7]
+ boost/geometry/algorithms/detail/overlay/select_rings.hpp [6:8]
+ boost/geometry/algorithms/detail/overlay/self_turn_points.hpp [6:7]
+ boost/geometry/algorithms/detail/overlay/sort_by_side.hpp [6:7]
+ boost/geometry/algorithms/detail/overlay/traversal.hpp [5:6]
+ boost/geometry/algorithms/detail/point_on_border.hpp [7:9]
+ boost/geometry/algorithms/is_convex.hpp [5:6]
+ boost/geometry/algorithms/remove_spikes.hpp [8:9]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2b6708129fdf91bd871f6ae1e2789611
+BELONGS ya.make
+ License text:
+ * Copyright (c) 2009 Helge Bahmann
+ * Copyright (c) 2013 Tim Blechmann
+ * Copyright (c) 2012 - 2014 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/atomic/detail/caps_msvc_arm.hpp [6:8]
+ boost/atomic/detail/caps_msvc_x86.hpp [6:8]
+ boost/atomic/detail/caps_windows.hpp [6:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2bb7fde157effeae3f1e1e3100704f64
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2004 Hartmut Kaiser
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/program_options/config.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2bc96828bf98197994f64f66a4a1efb4
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/srs/projections/proj/aea.hpp [7:7]
+ boost/geometry/srs/projections/proj/aeqd.hpp [7:7]
+ boost/geometry/srs/projections/proj/airy.hpp [7:7]
+ boost/geometry/srs/projections/proj/aitoff.hpp [7:7]
+ boost/geometry/srs/projections/proj/august.hpp [7:7]
+ boost/geometry/srs/projections/proj/bacon.hpp [7:7]
+ boost/geometry/srs/projections/proj/bipc.hpp [7:7]
+ boost/geometry/srs/projections/proj/boggs.hpp [7:7]
+ boost/geometry/srs/projections/proj/bonne.hpp [7:7]
+ boost/geometry/srs/projections/proj/cass.hpp [7:7]
+ boost/geometry/srs/projections/proj/cc.hpp [7:7]
+ boost/geometry/srs/projections/proj/cea.hpp [7:7]
+ boost/geometry/srs/projections/proj/chamb.hpp [7:7]
+ boost/geometry/srs/projections/proj/collg.hpp [7:7]
+ boost/geometry/srs/projections/proj/crast.hpp [7:7]
+ boost/geometry/srs/projections/proj/denoy.hpp [7:7]
+ boost/geometry/srs/projections/proj/eck1.hpp [7:7]
+ boost/geometry/srs/projections/proj/eck2.hpp [7:7]
+ boost/geometry/srs/projections/proj/eck3.hpp [7:7]
+ boost/geometry/srs/projections/proj/eck4.hpp [7:7]
+ boost/geometry/srs/projections/proj/eck5.hpp [7:7]
+ boost/geometry/srs/projections/proj/eqc.hpp [7:7]
+ boost/geometry/srs/projections/proj/eqdc.hpp [7:7]
+ boost/geometry/srs/projections/proj/etmerc.hpp [7:7]
+ boost/geometry/srs/projections/proj/fahey.hpp [7:7]
+ boost/geometry/srs/projections/proj/fouc_s.hpp [7:7]
+ boost/geometry/srs/projections/proj/gall.hpp [7:7]
+ boost/geometry/srs/projections/proj/geocent.hpp [7:7]
+ boost/geometry/srs/projections/proj/geos.hpp [7:7]
+ boost/geometry/srs/projections/proj/gins8.hpp [7:7]
+ boost/geometry/srs/projections/proj/gn_sinu.hpp [7:7]
+ boost/geometry/srs/projections/proj/gnom.hpp [7:7]
+ boost/geometry/srs/projections/proj/goode.hpp [7:7]
+ boost/geometry/srs/projections/proj/gstmerc.hpp [7:7]
+ boost/geometry/srs/projections/proj/hammer.hpp [7:7]
+ boost/geometry/srs/projections/proj/hatano.hpp [7:7]
+ boost/geometry/srs/projections/proj/healpix.hpp [7:7]
+ boost/geometry/srs/projections/proj/igh.hpp [7:7]
+ boost/geometry/srs/projections/proj/imw_p.hpp [7:7]
+ boost/geometry/srs/projections/proj/isea.hpp [7:7]
+ boost/geometry/srs/projections/proj/krovak.hpp [7:7]
+ boost/geometry/srs/projections/proj/labrd.hpp [7:7]
+ boost/geometry/srs/projections/proj/laea.hpp [7:7]
+ boost/geometry/srs/projections/proj/lagrng.hpp [7:7]
+ boost/geometry/srs/projections/proj/larr.hpp [7:7]
+ boost/geometry/srs/projections/proj/lask.hpp [7:7]
+ boost/geometry/srs/projections/proj/latlong.hpp [7:7]
+ boost/geometry/srs/projections/proj/lcc.hpp [7:7]
+ boost/geometry/srs/projections/proj/lcca.hpp [7:7]
+ boost/geometry/srs/projections/proj/loxim.hpp [7:7]
+ boost/geometry/srs/projections/proj/lsat.hpp [7:7]
+ boost/geometry/srs/projections/proj/mbt_fps.hpp [7:7]
+ boost/geometry/srs/projections/proj/mbtfpp.hpp [7:7]
+ boost/geometry/srs/projections/proj/mbtfpq.hpp [7:7]
+ boost/geometry/srs/projections/proj/merc.hpp [7:7]
+ boost/geometry/srs/projections/proj/mill.hpp [7:7]
+ boost/geometry/srs/projections/proj/mod_ster.hpp [7:7]
+ boost/geometry/srs/projections/proj/moll.hpp [7:7]
+ boost/geometry/srs/projections/proj/natearth.hpp [7:7]
+ boost/geometry/srs/projections/proj/nell.hpp [7:7]
+ boost/geometry/srs/projections/proj/nell_h.hpp [7:7]
+ boost/geometry/srs/projections/proj/nocol.hpp [7:7]
+ boost/geometry/srs/projections/proj/nsper.hpp [7:7]
+ boost/geometry/srs/projections/proj/nzmg.hpp [7:7]
+ boost/geometry/srs/projections/proj/ob_tran.hpp [7:7]
+ boost/geometry/srs/projections/proj/ocea.hpp [7:7]
+ boost/geometry/srs/projections/proj/oea.hpp [7:7]
+ boost/geometry/srs/projections/proj/omerc.hpp [7:7]
+ boost/geometry/srs/projections/proj/ortho.hpp [7:7]
+ boost/geometry/srs/projections/proj/poly.hpp [7:7]
+ boost/geometry/srs/projections/proj/putp2.hpp [7:7]
+ boost/geometry/srs/projections/proj/putp3.hpp [7:7]
+ boost/geometry/srs/projections/proj/putp4p.hpp [7:7]
+ boost/geometry/srs/projections/proj/putp5.hpp [7:7]
+ boost/geometry/srs/projections/proj/putp6.hpp [7:7]
+ boost/geometry/srs/projections/proj/qsc.hpp [7:7]
+ boost/geometry/srs/projections/proj/robin.hpp [7:7]
+ boost/geometry/srs/projections/proj/rouss.hpp [7:7]
+ boost/geometry/srs/projections/proj/rpoly.hpp [7:7]
+ boost/geometry/srs/projections/proj/sconics.hpp [7:7]
+ boost/geometry/srs/projections/proj/somerc.hpp [7:7]
+ boost/geometry/srs/projections/proj/stere.hpp [7:7]
+ boost/geometry/srs/projections/proj/sterea.hpp [7:7]
+ boost/geometry/srs/projections/proj/sts.hpp [7:7]
+ boost/geometry/srs/projections/proj/tcc.hpp [7:7]
+ boost/geometry/srs/projections/proj/tcea.hpp [7:7]
+ boost/geometry/srs/projections/proj/tmerc.hpp [7:7]
+ boost/geometry/srs/projections/proj/tpeqd.hpp [7:7]
+ boost/geometry/srs/projections/proj/urm5.hpp [7:7]
+ boost/geometry/srs/projections/proj/urmfps.hpp [7:7]
+ boost/geometry/srs/projections/proj/vandg.hpp [7:7]
+ boost/geometry/srs/projections/proj/vandg2.hpp [7:7]
+ boost/geometry/srs/projections/proj/vandg4.hpp [7:7]
+ boost/geometry/srs/projections/proj/wag2.hpp [7:7]
+ boost/geometry/srs/projections/proj/wag3.hpp [7:7]
+ boost/geometry/srs/projections/proj/wag7.hpp [7:7]
+ boost/geometry/srs/projections/proj/wink1.hpp [7:7]
+ boost/geometry/srs/projections/proj/wink2.hpp [7:7]
+ boost/geometry/strategies/spherical/distance_cross_track_point_box.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2be4c5530322f675f4699b1fecb8bdd0
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/deque.hpp at line 5, boost/container/detail/flat_tree.hpp at line 5, boost/container/detail/tree.hpp at line 5, boost/container/detail/type_traits.hpp at line 4, boost/container/list.hpp at line 5, boost/container/string.hpp at line 5, boost/container/vector.hpp at line 5, boost/interprocess/detail/transform_iterator.hpp at line 5, boost/interprocess/detail/utilities.hpp at line 5, boost/interprocess/detail/win32_api.hpp at line 5, boost/interprocess/detail/workaround.hpp at line 5, boost/interprocess/exceptions.hpp at line 5, boost/interprocess/offset_ptr.hpp at line 5, boost/move/detail/type_traits.hpp at line 4
+ License text:
+ // (C) Copyright Ion Gaztanaga 2005-2015. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/container/deque.hpp [3:5]
+ boost/container/detail/flat_tree.hpp [3:5]
+ boost/container/detail/tree.hpp [3:5]
+ boost/container/detail/type_traits.hpp [2:3]
+ boost/container/list.hpp [3:5]
+ boost/container/string.hpp [3:5]
+ boost/container/vector.hpp [3:5]
+ boost/interprocess/detail/transform_iterator.hpp [3:4]
+ boost/interprocess/detail/utilities.hpp [3:4]
+ boost/interprocess/detail/win32_api.hpp [3:5]
+ boost/interprocess/detail/workaround.hpp [3:5]
+ boost/interprocess/exceptions.hpp [3:5]
+ boost/interprocess/offset_ptr.hpp [3:5]
+ boost/move/detail/type_traits.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2c0cd8d92968f6ef02fc040acbde35eb
+BELONGS ya.make
+ License text:
+ // Copyright Eric Friedman 2002-2003
+ // Copyright Aleksey Gurtovoy 2004
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/aux_/sort_impl.hpp [5:5]
+ boost/mpl/partition.hpp [5:6]
+ boost/mpl/sort.hpp [5:6]
+ boost/mpl/stable_partition.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2c1fc4e14b8b85ff09dea84fb89e149a
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2006 Dan Marsden
+ Copyright (c) 2009 Hartmut Kaiser
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/view/nview.hpp [2:4]
+ boost/fusion/view/nview/detail/advance_impl.hpp [2:2]
+ boost/fusion/view/nview/detail/at_impl.hpp [2:2]
+ boost/fusion/view/nview/detail/begin_impl.hpp [2:2]
+ boost/fusion/view/nview/detail/cpp03/nview_impl.hpp [2:2]
+ boost/fusion/view/nview/detail/deref_impl.hpp [2:2]
+ boost/fusion/view/nview/detail/distance_impl.hpp [2:2]
+ boost/fusion/view/nview/detail/end_impl.hpp [2:2]
+ boost/fusion/view/nview/detail/equal_to_impl.hpp [2:2]
+ boost/fusion/view/nview/detail/next_impl.hpp [2:2]
+ boost/fusion/view/nview/detail/prior_impl.hpp [2:2]
+ boost/fusion/view/nview/detail/value_at_impl.hpp [2:2]
+ boost/fusion/view/nview/detail/value_of_impl.hpp [2:2]
+ boost/fusion/view/nview/nview.hpp [2:2]
+ boost/fusion/view/nview/nview_iterator.hpp [2:2]
+ boost/spirit/home/x3/numeric/bool.hpp [2:3]
+ boost/spirit/home/x3/numeric/bool_policies.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2c88da1eba82b7c18508f07d9fe9961e
+BELONGS ya.make
+ License text:
+ // Copyright Thijs van den Berg, 2008.
+ // Copyright John Maddock 2008.
+ // Copyright Paul A. Bristow 2008, 2014.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/distributions/laplace.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2c99b4b72f406545709ded88018c916a
+BELONGS ya.make
+ License text:
+ * Copyright 2006-2007 Boris Gubenko
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/interval/detail/ia64_rounding_control.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2cc8d0bd746b1af01391a996cc0b013e
+BELONGS ya.make
+ License text:
+ // Copyright Aleksey Gurtovoy 2002-2004
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/as_sequence.hpp [5:5]
+ boost/mpl/aux_/adl_barrier.hpp [5:5]
+ boost/mpl/aux_/apply_1st.hpp [5:5]
+ boost/mpl/aux_/common_name_wknd.hpp [5:5]
+ boost/mpl/aux_/config/adl.hpp [5:5]
+ boost/mpl/aux_/config/bind.hpp [5:6]
+ boost/mpl/aux_/config/dependent_nttp.hpp [5:5]
+ boost/mpl/aux_/config/has_xxx.hpp [5:6]
+ boost/mpl/aux_/config/lambda.hpp [5:5]
+ boost/mpl/aux_/config/msvc.hpp [5:5]
+ boost/mpl/aux_/config/overload_resolution.hpp [5:5]
+ boost/mpl/aux_/config/workaround.hpp [5:5]
+ boost/mpl/aux_/has_begin.hpp [5:5]
+ boost/mpl/aux_/has_key_impl.hpp [5:6]
+ boost/mpl/aux_/has_rebind.hpp [5:5]
+ boost/mpl/aux_/has_size.hpp [5:5]
+ boost/mpl/aux_/has_tag.hpp [5:5]
+ boost/mpl/aux_/has_type.hpp [5:5]
+ boost/mpl/aux_/iter_apply.hpp [5:5]
+ boost/mpl/aux_/iter_push_front.hpp [5:5]
+ boost/mpl/aux_/msvc_is_class.hpp [5:5]
+ boost/mpl/aux_/preprocessed/bcc/unpack_args.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/unpack_args.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/unpack_args.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/unpack_args.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/unpack_args.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/unpack_args.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/unpack_args.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/unpack_args.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/unpack_args.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/unpack_args.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/unpack_args.hpp [2:2]
+ boost/mpl/aux_/preprocessor/add.hpp [5:5]
+ boost/mpl/aux_/preprocessor/default_params.hpp [5:5]
+ boost/mpl/aux_/preprocessor/range.hpp [5:5]
+ boost/mpl/aux_/preprocessor/repeat.hpp [5:5]
+ boost/mpl/aux_/preprocessor/sub.hpp [5:5]
+ boost/mpl/aux_/preprocessor/tuple.hpp [5:5]
+ boost/mpl/aux_/test.hpp [5:5]
+ boost/mpl/aux_/test/assert.hpp [5:5]
+ boost/mpl/aux_/test/data.hpp [5:5]
+ boost/mpl/aux_/test/test_case.hpp [5:5]
+ boost/mpl/deref.hpp [5:5]
+ boost/mpl/is_sequence.hpp [5:5]
+ boost/mpl/protect.hpp [5:6]
+ boost/mpl/unpack_args.hpp [9:9]
+ boost/type_traits/detail/bool_trait_def.hpp [4:4]
+ boost/type_traits/detail/bool_trait_undef.hpp [4:4]
+ boost/type_traits/detail/template_arity_spec.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2cd8eea57cf8e75ed826cc317dbed73d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/ratio/mpl/plus.hpp at line 5
+ License text:
+ // (C) Copyright 2011Vicente J. Botet Escriba
+ // Use, modification and distribution are subject to the Boost Software License,
+ // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/ratio/mpl/plus.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2d057debf051847a35d49ab03363b9c5
+BELONGS ya.make
+ License text:
+ Copyright 2009-2013 Karsten Ahnert
+ Copyright 2009-2013 Mario Mulansky
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/external/compute/compute.hpp [9:10]
+ boost/numeric/odeint/external/compute/compute_algebra_dispatcher.hpp [9:10]
+ boost/numeric/odeint/external/compute/compute_operations_dispatcher.hpp [9:10]
+ boost/numeric/odeint/external/vexcl/vexcl_abs.hpp [9:10]
+ boost/numeric/odeint/external/vexcl/vexcl_norm_inf.hpp [9:10]
+ boost/numeric/odeint/integrate/detail/functors.hpp [9:10]
+ boost/numeric/odeint/iterator/impl/n_step_iterator_impl.hpp [9:10]
+ boost/numeric/odeint/iterator/impl/times_iterator_impl.hpp [9:10]
+ boost/numeric/odeint/iterator/integrate/detail/functors.hpp [9:10]
+ boost/numeric/odeint/iterator/n_step_iterator.hpp [10:11]
+ boost/numeric/odeint/iterator/n_step_time_iterator.hpp [11:12]
+ boost/numeric/odeint/iterator/times_iterator.hpp [10:11]
+ boost/numeric/odeint/iterator/times_time_iterator.hpp [11:12]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2d5f4cfed3e5b32b63312a117e31a283
+BELONGS ya.make
+ License text:
+ // (C) Copyright John Maddock 2010.
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/tools/tuple.hpp [1:3]
+ boost/type_traits/conditional.hpp [1:3]
+ boost/type_traits/is_rvalue_reference.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2d7bdc2251b6d91e3452c92975305ca5
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2007, 2008 Peter Dimov
+ // Copyright (c) 2008 Michael Marcin
+ // Copyright (c) 2009 Frank Mori Hess
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/signals2/deconstruct.hpp [16:18]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2d88e144afca22b36e6ceefd1fc94687
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/random.hpp at line 6, boost/random/bernoulli_distribution.hpp at line 7, boost/random/chi_squared_distribution.hpp at line 7, boost/random/detail/generator_bits.hpp at line 7, boost/random/detail/integer_log2.hpp at line 7, boost/random/detail/large_arithmetic.hpp at line 7, boost/random/detail/uniform_int_float.hpp at line 7, boost/random/detail/vector_io.hpp at line 7, boost/random/exponential_distribution.hpp at line 7, boost/random/fisher_f_distribution.hpp at line 7, boost/random/generate_canonical.hpp at line 7, boost/random/geometric_distribution.hpp at line 7, boost/random/independent_bits.hpp at line 7, boost/random/linear_feedback_shift.hpp at line 7, boost/random/lognormal_distribution.hpp at line 7, boost/random/piecewise_constant_distribution.hpp at line 7, boost/random/piecewise_linear_distribution.hpp at line 7, boost/random/student_t_distribution.hpp at line 7, boost/random/taus88.hpp at line 7, boost/random/triangle_distribution.hpp at line 7, boost/random/uniform_int_distribution.hpp at line 7, boost/random/uniform_on_sphere.hpp at line 7, boost/random/uniform_real_distribution.hpp at line 7, boost/random/variate_generator.hpp at line 7
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/multiprecision/random.hpp [2:6]
+ boost/random/bernoulli_distribution.hpp [3:6]
+ boost/random/chi_squared_distribution.hpp [3:5]
+ boost/random/detail/generator_bits.hpp [3:5]
+ boost/random/detail/integer_log2.hpp [3:5]
+ boost/random/detail/large_arithmetic.hpp [3:5]
+ boost/random/detail/uniform_int_float.hpp [3:6]
+ boost/random/detail/vector_io.hpp [3:5]
+ boost/random/exponential_distribution.hpp [3:7]
+ boost/random/fisher_f_distribution.hpp [3:5]
+ boost/random/generate_canonical.hpp [3:5]
+ boost/random/geometric_distribution.hpp [3:6]
+ boost/random/independent_bits.hpp [3:5]
+ boost/random/linear_feedback_shift.hpp [3:6]
+ boost/random/lognormal_distribution.hpp [3:6]
+ boost/random/piecewise_constant_distribution.hpp [3:5]
+ boost/random/piecewise_linear_distribution.hpp [3:5]
+ boost/random/student_t_distribution.hpp [3:5]
+ boost/random/taus88.hpp [3:6]
+ boost/random/triangle_distribution.hpp [3:6]
+ boost/random/uniform_int_distribution.hpp [3:6]
+ boost/random/uniform_on_sphere.hpp [3:6]
+ boost/random/uniform_real_distribution.hpp [3:6]
+ boost/random/variate_generator.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2dbcd57de4b0ffd4eec81477eab5cebd
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2017 Vinnie Falco (vinnie dot falco at gmail dot com)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/beast/core/detail/cpu_info.hpp [2:2]
+ boost/beast/core/detail/varint.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2dcf68e9cbb132ca617977536e4e8ad0
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/vector_135.hpp at line 7
+ License text:
+ // (C) Copyright 2008 Matthias Troyer
+ // Use, modification and distribution is subject to the Boost Software
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/serialization/vector_135.hpp [5:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2dfa333cc285f02a792246cce5434be0
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/detail/suffix.hpp at line 14
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/detail/suffix.hpp [4:14]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2e2eca4e065b061f38c7eb91a69efda4
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2011-2017 Adam Wulkiewicz, Lodz, Poland.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/index/detail/algorithms/intersection_content.hpp [5:5]
+ boost/geometry/index/detail/algorithms/path_intersection.hpp [5:5]
+ boost/geometry/index/detail/rtree/pack_create.hpp [5:5]
+ boost/geometry/index/detail/rtree/rstar/choose_next_node.hpp [5:5]
+ boost/geometry/index/detail/rtree/rstar/redistribute_elements.hpp [5:5]
+ boost/geometry/index/detail/rtree/visitors/remove.hpp [5:5]
+ boost/geometry/index/indexable.hpp [3:3]
+ boost/geometry/index/parameters.hpp [5:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2e533278812c0422da43ad2a27ae7463
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/typeof/encode_decode_params.hpp at line 3, boost/typeof/integral_template_param.hpp at line 3, boost/typeof/message.hpp at line 3, boost/typeof/template_template_param.hpp at line 3, boost/typeof/type_template_param.hpp at line 3, boost/typeof/vector.hpp at line 3, boost/typeof/vector100.hpp at line 4, boost/typeof/vector150.hpp at line 4, boost/typeof/vector200.hpp at line 4, boost/typeof/vector50.hpp at line 4
+ License text:
+ // Copyright (C) 2005 Arkadiy Vertleyb
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/typeof/encode_decode_params.hpp [1:3]
+ boost/typeof/integral_template_param.hpp [1:3]
+ boost/typeof/message.hpp [1:3]
+ boost/typeof/template_template_param.hpp [1:4]
+ boost/typeof/type_template_param.hpp [1:3]
+ boost/typeof/vector.hpp [1:2]
+ boost/typeof/vector100.hpp [2:3]
+ boost/typeof/vector150.hpp [2:3]
+ boost/typeof/vector200.hpp [2:3]
+ boost/typeof/vector50.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2e768fc3f92b09309b782197c57b4c12
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/hp_acc.hpp [1:8]
+ boost/config/platform/hpux.hpp [1:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2e8dcaf45cebf21faa7919fcd5f00014
+BELONGS ya.make
+ License text:
+ // Copyright 2014 Marco Guazzone (marco.guazzone@gmail.com)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/distributions/hyperexponential.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2e933bb084c95d7e3472974501e28c75
+BELONGS ya.make
+ License text:
+ // Copyright (c) Jeremy Siek 2001, Marc Wintermantel 2002
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/bandwidth.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2ea633020e201856dd71e03a0f2b2665
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2005, 2006 Douglas Gregor <doug.gregor -at- gmail.com>.
+ // Copyright (C) 2016 K. Noel Belcourt <kbelco -at- sandia.gov>.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpi/communicator.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2eac2a7e626c242b613fa68d3431bb40
+BELONGS ya.make
+ License text:
+ // Copyright Beman Dawes 1994-2007, 2011
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/timer/timer.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2eed3999f484d8ee24370281109e7694
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/seq/detail/to_list_msvc.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/preprocessor/seq/detail/to_list_msvc.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2f10b4a340b310e0d17224ef1c7f517e
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2003, 2008 Fernando Luis Cacciola Carballal.
+ // Copyright (C) 2015 - 2017 Andrzej Krzemienski.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/optional/detail/optional_config.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2f18f945ef63ba6be737d66cea2f20fe
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/numeric.hpp at line 3
+ License text:
+ // Copyright 2009-2014 Neil Groves.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/range/numeric.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2f932f342242efbf0d94bca33da3478f
+BELONGS ya.make
+ License text:
+ // Copyright Eric Friedman 2002
+ // Copyright Aleksey Gurtovoy 2004
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/aux_/contains_impl.hpp [5:6]
+ boost/mpl/aux_/find_if_pred.hpp [5:6]
+ boost/mpl/contains.hpp [5:6]
+ boost/mpl/contains_fwd.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2f9bade85a83ebe5d5af53237bf117ca
+BELONGS ya.make
+ License text:
+ Copyright (c) 2010 Bryce Lelbach
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/detail/fenv.hpp [2:2]
+ boost/spirit/home/karma/char/char.hpp [1:2]
+ boost/spirit/home/karma/directive/as.hpp [1:2]
+ boost/spirit/home/karma/string/lit.hpp [1:2]
+ boost/spirit/home/lex/argument.hpp [1:4]
+ boost/spirit/home/lex/qi/state_switcher.hpp [1:2]
+ boost/spirit/home/qi/char/char.hpp [2:4]
+ boost/spirit/home/qi/directive/as.hpp [2:4]
+ boost/spirit/home/qi/string/lit.hpp [2:4]
+ boost/spirit/home/support/attributes_fwd.hpp [2:4]
+ boost/spirit/home/support/iterators/line_pos_iterator.hpp [2:4]
+ boost/spirit/home/support/string_traits.hpp [2:4]
+ boost/spirit/home/x3/support/traits/string_traits.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2f9fe99648dcd79bc25622757cf728cb
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2009, Spirent Communications, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp [13:13]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2fac28b8e5c989f4eceb6a9bfa180fc3
+BELONGS ya.make
+ License text:
+ // Copyright Aleksey Gurtovoy 2000-2006
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/assert.hpp [5:5]
+ boost/mpl/aux_/include_preprocessed.hpp [4:4]
+ boost/mpl/aux_/integral_wrapper.hpp [2:2]
+ boost/mpl/integral_c.hpp [5:5]
+ boost/mpl/integral_c_fwd.hpp [5:5]
+ boost/mpl/vector/aux_/include_preprocessed.hpp [4:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2fd1cb4c5bd0ad8ebd01444f50141363
+BELONGS ya.make
+ License text:
+ \# /* Copyright (C) 2001
+ \# * Housemarque Oy
+ \# * http://www.housemarque.com
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/preprocessor.hpp [1:3]
+ boost/preprocessor/arithmetic.hpp [1:3]
+ boost/preprocessor/arithmetic/add.hpp [1:3]
+ boost/preprocessor/arithmetic/dec.hpp [1:3]
+ boost/preprocessor/arithmetic/detail/div_base.hpp [1:3]
+ boost/preprocessor/arithmetic/div.hpp [1:3]
+ boost/preprocessor/arithmetic/inc.hpp [1:3]
+ boost/preprocessor/arithmetic/mod.hpp [1:3]
+ boost/preprocessor/arithmetic/mul.hpp [1:3]
+ boost/preprocessor/arithmetic/sub.hpp [1:3]
+ boost/preprocessor/cat.hpp [1:3]
+ boost/preprocessor/comparison.hpp [1:3]
+ boost/preprocessor/comparison/equal.hpp [1:3]
+ boost/preprocessor/comparison/greater.hpp [1:3]
+ boost/preprocessor/comparison/greater_equal.hpp [1:3]
+ boost/preprocessor/comparison/less.hpp [1:3]
+ boost/preprocessor/comparison/less_equal.hpp [1:3]
+ boost/preprocessor/comparison/not_equal.hpp [1:3]
+ boost/preprocessor/config/limits.hpp [1:3]
+ boost/preprocessor/control/detail/dmc/while.hpp [1:3]
+ boost/preprocessor/control/detail/edg/while.hpp [1:3]
+ boost/preprocessor/control/detail/msvc/while.hpp [1:3]
+ boost/preprocessor/control/detail/while.hpp [1:3]
+ boost/preprocessor/control/expr_if.hpp [1:3]
+ boost/preprocessor/control/if.hpp [1:3]
+ boost/preprocessor/control/while.hpp [1:3]
+ boost/preprocessor/debug/assert.hpp [1:3]
+ boost/preprocessor/facilities/empty.hpp [1:3]
+ boost/preprocessor/facilities/expand.hpp [1:3]
+ boost/preprocessor/facilities/identity.hpp [1:3]
+ boost/preprocessor/list.hpp [1:3]
+ boost/preprocessor/list/adt.hpp [1:3]
+ boost/preprocessor/list/append.hpp [1:3]
+ boost/preprocessor/list/at.hpp [1:3]
+ boost/preprocessor/list/cat.hpp [1:3]
+ boost/preprocessor/list/detail/dmc/fold_left.hpp [1:3]
+ boost/preprocessor/list/detail/edg/fold_left.hpp [1:3]
+ boost/preprocessor/list/detail/edg/fold_right.hpp [1:3]
+ boost/preprocessor/list/detail/fold_left.hpp [1:3]
+ boost/preprocessor/list/detail/fold_right.hpp [1:3]
+ boost/preprocessor/list/enum.hpp [1:3]
+ boost/preprocessor/list/filter.hpp [1:3]
+ boost/preprocessor/list/first_n.hpp [1:3]
+ boost/preprocessor/list/fold_left.hpp [1:3]
+ boost/preprocessor/list/fold_right.hpp [1:3]
+ boost/preprocessor/list/for_each.hpp [1:3]
+ boost/preprocessor/list/for_each_i.hpp [1:3]
+ boost/preprocessor/list/for_each_product.hpp [1:3]
+ boost/preprocessor/list/rest_n.hpp [1:3]
+ boost/preprocessor/list/reverse.hpp [1:3]
+ boost/preprocessor/list/size.hpp [1:3]
+ boost/preprocessor/list/to_tuple.hpp [1:3]
+ boost/preprocessor/list/transform.hpp [1:3]
+ boost/preprocessor/logical.hpp [1:3]
+ boost/preprocessor/logical/and.hpp [1:3]
+ boost/preprocessor/logical/bool.hpp [1:3]
+ boost/preprocessor/logical/nor.hpp [1:3]
+ boost/preprocessor/logical/not.hpp [1:3]
+ boost/preprocessor/logical/or.hpp [1:3]
+ boost/preprocessor/logical/xor.hpp [1:3]
+ boost/preprocessor/punctuation/comma.hpp [1:3]
+ boost/preprocessor/punctuation/comma_if.hpp [1:3]
+ boost/preprocessor/repetition/detail/dmc/for.hpp [1:3]
+ boost/preprocessor/repetition/detail/edg/for.hpp [1:3]
+ boost/preprocessor/repetition/detail/for.hpp [1:3]
+ boost/preprocessor/repetition/detail/msvc/for.hpp [1:3]
+ boost/preprocessor/repetition/enum.hpp [1:3]
+ boost/preprocessor/repetition/enum_params.hpp [1:3]
+ boost/preprocessor/repetition/enum_params_with_a_default.hpp [1:3]
+ boost/preprocessor/repetition/enum_params_with_defaults.hpp [1:3]
+ boost/preprocessor/repetition/enum_shifted.hpp [1:3]
+ boost/preprocessor/repetition/enum_shifted_params.hpp [1:3]
+ boost/preprocessor/repetition/for.hpp [1:3]
+ boost/preprocessor/repetition/repeat.hpp [1:3]
+ boost/preprocessor/repetition/repeat_from_to.hpp [1:3]
+ boost/preprocessor/selection/max.hpp [1:3]
+ boost/preprocessor/selection/min.hpp [1:3]
+ boost/preprocessor/stringize.hpp [1:3]
+ boost/preprocessor/tuple.hpp [1:3]
+ boost/preprocessor/tuple/eat.hpp [1:3]
+ boost/preprocessor/tuple/elem.hpp [1:3]
+ boost/preprocessor/tuple/reverse.hpp [1:3]
+ boost/preprocessor/tuple/to_list.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2fed25b670c142362976d681e20983d0
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2006 Xiaogang Zhang
+ // Copyright (c) 2006 John Maddock
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/ellint_1.hpp [1:4]
+ boost/math/special_functions/ellint_2.hpp [1:4]
+ boost/math/special_functions/ellint_3.hpp [1:4]
+ boost/math/special_functions/ellint_d.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 302eb32d7e0c5743b68227dba3d17d14
+BELONGS ya.make
+ License text:
+ // Copyright 2001 John Maddock.
+ // Copyright 2017 Peter Dimov.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/helper_macros.hpp [4:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3083c06d1d29086e1fb61a433a3fc94e
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/extended_p_square.hpp at line 6, boost/accumulators/statistics/extended_p_square_quantile.hpp at line 6, boost/accumulators/statistics/p_square_quantile.hpp at line 6, boost/accumulators/statistics/weighted_extended_p_square.hpp at line 6, boost/accumulators/statistics/weighted_p_square_quantile.hpp at line 6
+ License text:
+ // Copyright 2005 Daniel Egloff. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/accumulators/statistics/extended_p_square.hpp [4:6]
+ boost/accumulators/statistics/extended_p_square_quantile.hpp [4:6]
+ boost/accumulators/statistics/p_square_quantile.hpp [4:6]
+ boost/accumulators/statistics/weighted_extended_p_square.hpp [4:6]
+ boost/accumulators/statistics/weighted_p_square_quantile.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3097182274a2e77f502de94f323359af
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
+ // Copyright (c) 2007, 2014 Peter Dimov
+ // Copyright (c) Beman Dawes 2011
+ // Copyright (c) 2015 Ion Gaztanaga
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/assert.hpp [8:11]
+ boost/bind/mem_fn.hpp [13:15]
+ boost/detail/atomic_count.hpp [13:13]
+ boost/geometry/core/assert.hpp [3:6]
+ boost/smart_ptr/detail/atomic_count.hpp [13:14]
+ boost/smart_ptr/detail/atomic_count_gcc.hpp [11:13]
+ boost/smart_ptr/detail/atomic_count_pt.hpp [7:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 30aa7d774a6abb0b7427386b7499cf8d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/allocator.hpp at line 5, boost/container/detail/auto_link.hpp at line 5, boost/container/detail/math_functions.hpp at line 5, boost/container/detail/singleton.hpp at line 16, boost/intrusive/avl_set_hook.hpp at line 5, boost/intrusive/avltree.hpp at line 5, boost/intrusive/bs_set_hook.hpp at line 5, boost/intrusive/detail/avltree_node.hpp at line 5, boost/intrusive/detail/generic_hook.hpp at line 5, boost/intrusive/detail/parent_from_member.hpp at line 5, boost/intrusive/detail/transform_iterator.hpp at line 5, boost/intrusive/detail/tree_iterator.hpp at line 5, boost/intrusive/detail/tree_node.hpp at line 5, boost/intrusive/intrusive_fwd.hpp at line 5, boost/intrusive/pointer_plus_bits.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2007-2013. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/container/allocator.hpp [3:5]
+ boost/container/detail/auto_link.hpp [3:5]
+ boost/container/detail/math_functions.hpp [3:4]
+ boost/container/detail/singleton.hpp [14:16]
+ boost/intrusive/avl_set_hook.hpp [3:3]
+ boost/intrusive/avltree.hpp [3:3]
+ boost/intrusive/bs_set_hook.hpp [3:3]
+ boost/intrusive/detail/avltree_node.hpp [3:3]
+ boost/intrusive/detail/generic_hook.hpp [3:3]
+ boost/intrusive/detail/parent_from_member.hpp [3:3]
+ boost/intrusive/detail/transform_iterator.hpp [3:3]
+ boost/intrusive/detail/tree_iterator.hpp [3:3]
+ boost/intrusive/detail/tree_node.hpp [3:3]
+ boost/intrusive/intrusive_fwd.hpp [3:3]
+ boost/intrusive/pointer_plus_bits.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 30ed1e3bc7b2db873cea00f66576d6ee
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2007, 2013 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp [12:12]
+
+KEEP COPYRIGHT_SERVICE_LABEL 30f1e4eeb829ff72f7b5b36badf44627
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/poly_collection/detail/is_equality_comparable.hpp at line 3
+ License text:
+ /* Copyright 2017-2018 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/poly_collection/detail/is_equality_comparable.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 30f81317a5922a3aa5dceece7b8dec9c
+BELONGS ya.make
+ License text:
+ // Copyright 2014 LRI UMR 8623 CNRS/Univ Paris Sud XI
+ // Copyright 2014 NumScale SAS
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/external/nt2/nt2_algebra_dispatcher.hpp [2:3]
+ boost/numeric/odeint/external/nt2/nt2_norm_inf.hpp [2:3]
+ boost/numeric/odeint/external/nt2/nt2_resize.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 315a7554fc178f85d65ddbb338fd58a5
+BELONGS ya.make
+ License text:
+ * Copyright (c) 1996,1997
+ * Silicon Graphics Computer Systems, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/multi_index/detail/ord_index_impl.hpp [11:12]
+ boost/multi_index/detail/ord_index_node.hpp [11:12]
+ boost/multi_index/detail/ord_index_ops.hpp [11:12]
+
+KEEP COPYRIGHT_SERVICE_LABEL 318bb438497d2ba56543f1344417bbec
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2010.
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/constants/info.hpp [1:3]
+ boost/math/distributions/geometric.hpp [3:4]
+ boost/math/distributions/inverse_chi_squared.hpp [1:2]
+ boost/math/distributions/inverse_gamma.hpp [3:6]
+ boost/math/distributions/inverse_gaussian.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 31944823e2ff50fe3a2c1ee16b2ac06e
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iterator/permutation_iterator.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/iterator/permutation_iterator.hpp [1:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 31a35255487eadf75eca876215e0cb5d
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2003-2008 Matthias Christian Schabel
+ // Copyright (C) 2008 Steven Watanabe
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/units/absolute.hpp [4:5]
+ boost/units/base_dimension.hpp [4:5]
+ boost/units/base_unit.hpp [4:5]
+ boost/units/base_units/angle/arcminute.hpp [4:5]
+ boost/units/base_units/angle/arcsecond.hpp [4:5]
+ boost/units/base_units/angle/degree.hpp [4:5]
+ boost/units/base_units/angle/gradian.hpp [4:5]
+ boost/units/base_units/angle/radian.hpp [4:5]
+ boost/units/base_units/angle/revolution.hpp [4:5]
+ boost/units/base_units/angle/steradian.hpp [4:5]
+ boost/units/base_units/astronomical/astronomical_unit.hpp [4:5]
+ boost/units/base_units/astronomical/light_day.hpp [4:5]
+ boost/units/base_units/astronomical/light_hour.hpp [4:5]
+ boost/units/base_units/astronomical/light_minute.hpp [4:5]
+ boost/units/base_units/astronomical/light_second.hpp [4:5]
+ boost/units/base_units/astronomical/light_year.hpp [4:5]
+ boost/units/base_units/astronomical/parsec.hpp [4:5]
+ boost/units/base_units/cgs/biot.hpp [4:5]
+ boost/units/base_units/cgs/centimeter.hpp [4:5]
+ boost/units/base_units/cgs/gram.hpp [4:5]
+ boost/units/base_units/imperial/conversions.hpp [4:5]
+ boost/units/base_units/imperial/drachm.hpp [4:5]
+ boost/units/base_units/imperial/fluid_ounce.hpp [4:5]
+ boost/units/base_units/imperial/foot.hpp [4:5]
+ boost/units/base_units/imperial/furlong.hpp [4:5]
+ boost/units/base_units/imperial/gallon.hpp [4:5]
+ boost/units/base_units/imperial/gill.hpp [4:5]
+ boost/units/base_units/imperial/grain.hpp [4:5]
+ boost/units/base_units/imperial/hundredweight.hpp [4:5]
+ boost/units/base_units/imperial/inch.hpp [4:5]
+ boost/units/base_units/imperial/league.hpp [4:5]
+ boost/units/base_units/imperial/mile.hpp [4:5]
+ boost/units/base_units/imperial/ounce.hpp [4:5]
+ boost/units/base_units/imperial/pint.hpp [4:5]
+ boost/units/base_units/imperial/pound.hpp [4:5]
+ boost/units/base_units/imperial/quart.hpp [4:5]
+ boost/units/base_units/imperial/quarter.hpp [4:5]
+ boost/units/base_units/imperial/stone.hpp [4:5]
+ boost/units/base_units/imperial/thou.hpp [4:5]
+ boost/units/base_units/imperial/ton.hpp [4:5]
+ boost/units/base_units/imperial/yard.hpp [4:5]
+ boost/units/base_units/metric/angstrom.hpp [4:5]
+ boost/units/base_units/metric/are.hpp [4:5]
+ boost/units/base_units/metric/atmosphere.hpp [4:5]
+ boost/units/base_units/metric/bar.hpp [4:5]
+ boost/units/base_units/metric/barn.hpp [4:5]
+ boost/units/base_units/metric/day.hpp [4:5]
+ boost/units/base_units/metric/fermi.hpp [4:5]
+ boost/units/base_units/metric/hectare.hpp [4:5]
+ boost/units/base_units/metric/hour.hpp [4:5]
+ boost/units/base_units/metric/knot.hpp [4:5]
+ boost/units/base_units/metric/liter.hpp [4:5]
+ boost/units/base_units/metric/micron.hpp [4:5]
+ boost/units/base_units/metric/minute.hpp [4:5]
+ boost/units/base_units/metric/mmHg.hpp [4:5]
+ boost/units/base_units/metric/nautical_mile.hpp [4:5]
+ boost/units/base_units/metric/ton.hpp [4:5]
+ boost/units/base_units/metric/torr.hpp [4:5]
+ boost/units/base_units/metric/year.hpp [4:5]
+ boost/units/base_units/si/ampere.hpp [4:5]
+ boost/units/base_units/si/candela.hpp [4:5]
+ boost/units/base_units/si/kelvin.hpp [4:5]
+ boost/units/base_units/si/kilogram.hpp [4:5]
+ boost/units/base_units/si/meter.hpp [4:5]
+ boost/units/base_units/si/mole.hpp [4:5]
+ boost/units/base_units/si/second.hpp [4:5]
+ boost/units/base_units/temperature/celsius.hpp [4:5]
+ boost/units/base_units/temperature/conversions.hpp [4:5]
+ boost/units/base_units/temperature/fahrenheit.hpp [4:5]
+ boost/units/base_units/us/cup.hpp [4:5]
+ boost/units/base_units/us/dram.hpp [4:5]
+ boost/units/base_units/us/fluid_dram.hpp [4:5]
+ boost/units/base_units/us/fluid_ounce.hpp [4:5]
+ boost/units/base_units/us/foot.hpp [4:5]
+ boost/units/base_units/us/gallon.hpp [4:5]
+ boost/units/base_units/us/gill.hpp [4:5]
+ boost/units/base_units/us/grain.hpp [4:5]
+ boost/units/base_units/us/hundredweight.hpp [4:5]
+ boost/units/base_units/us/inch.hpp [4:5]
+ boost/units/base_units/us/mil.hpp [4:5]
+ boost/units/base_units/us/mile.hpp [4:5]
+ boost/units/base_units/us/minim.hpp [4:5]
+ boost/units/base_units/us/ounce.hpp [4:5]
+ boost/units/base_units/us/pint.hpp [4:5]
+ boost/units/base_units/us/pound.hpp [4:5]
+ boost/units/base_units/us/quart.hpp [4:5]
+ boost/units/base_units/us/tablespoon.hpp [4:5]
+ boost/units/base_units/us/teaspoon.hpp [4:5]
+ boost/units/base_units/us/ton.hpp [4:5]
+ boost/units/base_units/us/yard.hpp [4:5]
+ boost/units/cmath.hpp [4:5]
+ boost/units/config.hpp [4:5]
+ boost/units/conversion.hpp [4:5]
+ boost/units/derived_dimension.hpp [4:5]
+ boost/units/detail/absolute_impl.hpp [4:5]
+ boost/units/detail/cmath_impl.hpp [4:5]
+ boost/units/detail/conversion_impl.hpp [4:5]
+ boost/units/detail/dim_impl.hpp [4:5]
+ boost/units/detail/dimension_impl.hpp [4:5]
+ boost/units/detail/dimension_list.hpp [4:5]
+ boost/units/detail/dimensionless_unit.hpp [4:5]
+ boost/units/detail/heterogeneous_conversion.hpp [4:5]
+ boost/units/detail/linear_algebra.hpp [4:5]
+ boost/units/detail/one.hpp [4:5]
+ boost/units/detail/ordinal.hpp [4:5]
+ boost/units/detail/prevent_redefinition.hpp [4:5]
+ boost/units/detail/push_front_if.hpp [4:5]
+ boost/units/detail/push_front_or_add.hpp [4:5]
+ boost/units/detail/sort.hpp [4:5]
+ boost/units/detail/static_rational_power.hpp [4:5]
+ boost/units/detail/unscale.hpp [4:5]
+ boost/units/detail/utility.hpp [4:5]
+ boost/units/dim.hpp [4:5]
+ boost/units/dimension.hpp [4:5]
+ boost/units/dimensionless_quantity.hpp [4:5]
+ boost/units/dimensionless_type.hpp [4:5]
+ boost/units/dimensionless_unit.hpp [4:5]
+ boost/units/get_dimension.hpp [4:5]
+ boost/units/get_system.hpp [4:5]
+ boost/units/heterogeneous_system.hpp [4:5]
+ boost/units/homogeneous_system.hpp [4:5]
+ boost/units/io.hpp [4:5]
+ boost/units/is_dim.hpp [4:5]
+ boost/units/is_dimension_list.hpp [4:5]
+ boost/units/is_dimensionless.hpp [4:5]
+ boost/units/is_dimensionless_quantity.hpp [4:5]
+ boost/units/is_dimensionless_unit.hpp [4:5]
+ boost/units/is_quantity.hpp [4:5]
+ boost/units/is_quantity_of_dimension.hpp [4:5]
+ boost/units/is_quantity_of_system.hpp [4:5]
+ boost/units/is_unit.hpp [4:5]
+ boost/units/is_unit_of_dimension.hpp [4:5]
+ boost/units/is_unit_of_system.hpp [4:5]
+ boost/units/lambda.hpp [4:5]
+ boost/units/limits.hpp [4:5]
+ boost/units/make_scaled_unit.hpp [4:5]
+ boost/units/make_system.hpp [4:5]
+ boost/units/operators.hpp [4:5]
+ boost/units/physical_dimensions.hpp [4:5]
+ boost/units/physical_dimensions/absorbed_dose.hpp [4:5]
+ boost/units/physical_dimensions/acceleration.hpp [4:5]
+ boost/units/physical_dimensions/action.hpp [4:5]
+ boost/units/physical_dimensions/activity.hpp [4:5]
+ boost/units/physical_dimensions/amount.hpp [4:5]
+ boost/units/physical_dimensions/angular_acceleration.hpp [4:5]
+ boost/units/physical_dimensions/angular_momentum.hpp [4:5]
+ boost/units/physical_dimensions/angular_velocity.hpp [4:5]
+ boost/units/physical_dimensions/area.hpp [4:5]
+ boost/units/physical_dimensions/capacitance.hpp [4:5]
+ boost/units/physical_dimensions/conductance.hpp [4:5]
+ boost/units/physical_dimensions/conductivity.hpp [4:5]
+ boost/units/physical_dimensions/current.hpp [4:5]
+ boost/units/physical_dimensions/dose_equivalent.hpp [4:5]
+ boost/units/physical_dimensions/dynamic_viscosity.hpp [4:5]
+ boost/units/physical_dimensions/electric_charge.hpp [4:5]
+ boost/units/physical_dimensions/electric_potential.hpp [4:5]
+ boost/units/physical_dimensions/energy.hpp [4:5]
+ boost/units/physical_dimensions/energy_density.hpp [4:5]
+ boost/units/physical_dimensions/force.hpp [4:5]
+ boost/units/physical_dimensions/frequency.hpp [4:5]
+ boost/units/physical_dimensions/heat_capacity.hpp [4:5]
+ boost/units/physical_dimensions/illuminance.hpp [4:5]
+ boost/units/physical_dimensions/impedance.hpp [4:5]
+ boost/units/physical_dimensions/inductance.hpp [4:5]
+ boost/units/physical_dimensions/kinematic_viscosity.hpp [4:5]
+ boost/units/physical_dimensions/length.hpp [4:5]
+ boost/units/physical_dimensions/luminance.hpp [4:5]
+ boost/units/physical_dimensions/luminous_flux.hpp [4:5]
+ boost/units/physical_dimensions/luminous_intensity.hpp [4:5]
+ boost/units/physical_dimensions/magnetic_field_intensity.hpp [4:5]
+ boost/units/physical_dimensions/magnetic_flux.hpp [4:5]
+ boost/units/physical_dimensions/magnetic_flux_density.hpp [4:5]
+ boost/units/physical_dimensions/mass.hpp [4:5]
+ boost/units/physical_dimensions/mass_density.hpp [4:5]
+ boost/units/physical_dimensions/molar_energy.hpp [4:5]
+ boost/units/physical_dimensions/molar_heat_capacity.hpp [4:5]
+ boost/units/physical_dimensions/moment_of_inertia.hpp [4:5]
+ boost/units/physical_dimensions/momentum.hpp [4:5]
+ boost/units/physical_dimensions/permeability.hpp [4:5]
+ boost/units/physical_dimensions/permittivity.hpp [4:5]
+ boost/units/physical_dimensions/plane_angle.hpp [4:5]
+ boost/units/physical_dimensions/power.hpp [4:5]
+ boost/units/physical_dimensions/pressure.hpp [4:5]
+ boost/units/physical_dimensions/reluctance.hpp [4:5]
+ boost/units/physical_dimensions/resistance.hpp [4:5]
+ boost/units/physical_dimensions/resistivity.hpp [4:5]
+ boost/units/physical_dimensions/solid_angle.hpp [4:5]
+ boost/units/physical_dimensions/specific_energy.hpp [4:5]
+ boost/units/physical_dimensions/specific_heat_capacity.hpp [4:5]
+ boost/units/physical_dimensions/specific_volume.hpp [4:5]
+ boost/units/physical_dimensions/stress.hpp [4:5]
+ boost/units/physical_dimensions/surface_density.hpp [4:5]
+ boost/units/physical_dimensions/surface_tension.hpp [4:5]
+ boost/units/physical_dimensions/temperature.hpp [4:5]
+ boost/units/physical_dimensions/thermal_conductivity.hpp [4:5]
+ boost/units/physical_dimensions/time.hpp [4:5]
+ boost/units/physical_dimensions/torque.hpp [4:5]
+ boost/units/physical_dimensions/velocity.hpp [4:5]
+ boost/units/physical_dimensions/volume.hpp [4:5]
+ boost/units/physical_dimensions/wavenumber.hpp [4:5]
+ boost/units/pow.hpp [4:5]
+ boost/units/quantity.hpp [4:5]
+ boost/units/reduce_unit.hpp [4:5]
+ boost/units/scale.hpp [4:5]
+ boost/units/scaled_base_unit.hpp [4:5]
+ boost/units/static_constant.hpp [4:5]
+ boost/units/static_rational.hpp [4:5]
+ boost/units/systems/abstract.hpp [4:5]
+ boost/units/systems/angle/degrees.hpp [4:5]
+ boost/units/systems/angle/gradians.hpp [4:5]
+ boost/units/systems/angle/revolutions.hpp [4:5]
+ boost/units/systems/cgs.hpp [4:5]
+ boost/units/systems/cgs/acceleration.hpp [4:5]
+ boost/units/systems/cgs/area.hpp [4:5]
+ boost/units/systems/cgs/base.hpp [4:5]
+ boost/units/systems/cgs/current.hpp [4:5]
+ boost/units/systems/cgs/dimensionless.hpp [4:5]
+ boost/units/systems/cgs/dynamic_viscosity.hpp [4:5]
+ boost/units/systems/cgs/energy.hpp [4:5]
+ boost/units/systems/cgs/force.hpp [4:5]
+ boost/units/systems/cgs/frequency.hpp [4:5]
+ boost/units/systems/cgs/io.hpp [4:5]
+ boost/units/systems/cgs/kinematic_viscosity.hpp [4:5]
+ boost/units/systems/cgs/length.hpp [4:5]
+ boost/units/systems/cgs/mass.hpp [4:5]
+ boost/units/systems/cgs/mass_density.hpp [4:5]
+ boost/units/systems/cgs/momentum.hpp [4:5]
+ boost/units/systems/cgs/power.hpp [4:5]
+ boost/units/systems/cgs/pressure.hpp [4:5]
+ boost/units/systems/cgs/time.hpp [4:5]
+ boost/units/systems/cgs/velocity.hpp [4:5]
+ boost/units/systems/cgs/volume.hpp [4:5]
+ boost/units/systems/cgs/wavenumber.hpp [4:5]
+ boost/units/systems/detail/constants.hpp [4:5]
+ boost/units/systems/si.hpp [4:5]
+ boost/units/systems/si/absorbed_dose.hpp [4:5]
+ boost/units/systems/si/acceleration.hpp [4:5]
+ boost/units/systems/si/action.hpp [4:5]
+ boost/units/systems/si/activity.hpp [4:5]
+ boost/units/systems/si/amount.hpp [4:5]
+ boost/units/systems/si/angular_acceleration.hpp [4:5]
+ boost/units/systems/si/angular_momentum.hpp [4:5]
+ boost/units/systems/si/angular_velocity.hpp [4:5]
+ boost/units/systems/si/area.hpp [4:5]
+ boost/units/systems/si/base.hpp [4:5]
+ boost/units/systems/si/capacitance.hpp [4:5]
+ boost/units/systems/si/catalytic_activity.hpp [4:5]
+ boost/units/systems/si/codata/alpha_constants.hpp [4:5]
+ boost/units/systems/si/codata/atomic-nuclear_constants.hpp [4:5]
+ boost/units/systems/si/codata/deuteron_constants.hpp [4:5]
+ boost/units/systems/si/codata/electromagnetic_constants.hpp [4:5]
+ boost/units/systems/si/codata/electron_constants.hpp [4:5]
+ boost/units/systems/si/codata/helion_constants.hpp [4:5]
+ boost/units/systems/si/codata/muon_constants.hpp [4:5]
+ boost/units/systems/si/codata/neutron_constants.hpp [4:5]
+ boost/units/systems/si/codata/physico-chemical_constants.hpp [4:5]
+ boost/units/systems/si/codata/proton_constants.hpp [4:5]
+ boost/units/systems/si/codata/tau_constants.hpp [4:5]
+ boost/units/systems/si/codata/triton_constants.hpp [4:5]
+ boost/units/systems/si/codata/typedefs.hpp [4:5]
+ boost/units/systems/si/codata/universal_constants.hpp [4:5]
+ boost/units/systems/si/codata_constants.hpp [4:5]
+ boost/units/systems/si/conductance.hpp [4:5]
+ boost/units/systems/si/conductivity.hpp [4:5]
+ boost/units/systems/si/current.hpp [4:5]
+ boost/units/systems/si/dimensionless.hpp [4:5]
+ boost/units/systems/si/dose_equivalent.hpp [4:5]
+ boost/units/systems/si/dynamic_viscosity.hpp [4:5]
+ boost/units/systems/si/electric_charge.hpp [4:5]
+ boost/units/systems/si/electric_potential.hpp [4:5]
+ boost/units/systems/si/energy.hpp [4:5]
+ boost/units/systems/si/force.hpp [4:5]
+ boost/units/systems/si/frequency.hpp [4:5]
+ boost/units/systems/si/illuminance.hpp [4:5]
+ boost/units/systems/si/impedance.hpp [4:5]
+ boost/units/systems/si/inductance.hpp [4:5]
+ boost/units/systems/si/io.hpp [4:5]
+ boost/units/systems/si/kinematic_viscosity.hpp [4:5]
+ boost/units/systems/si/length.hpp [4:5]
+ boost/units/systems/si/luminous_flux.hpp [4:5]
+ boost/units/systems/si/luminous_intensity.hpp [4:5]
+ boost/units/systems/si/magnetic_field_intensity.hpp [4:5]
+ boost/units/systems/si/magnetic_flux.hpp [4:5]
+ boost/units/systems/si/magnetic_flux_density.hpp [4:5]
+ boost/units/systems/si/mass.hpp [4:5]
+ boost/units/systems/si/mass_density.hpp [4:5]
+ boost/units/systems/si/moment_of_inertia.hpp [4:5]
+ boost/units/systems/si/momentum.hpp [4:5]
+ boost/units/systems/si/permeability.hpp [4:5]
+ boost/units/systems/si/permittivity.hpp [4:5]
+ boost/units/systems/si/plane_angle.hpp [4:5]
+ boost/units/systems/si/power.hpp [4:5]
+ boost/units/systems/si/prefixes.hpp [4:5]
+ boost/units/systems/si/pressure.hpp [4:5]
+ boost/units/systems/si/reluctance.hpp [4:5]
+ boost/units/systems/si/resistance.hpp [4:5]
+ boost/units/systems/si/resistivity.hpp [4:5]
+ boost/units/systems/si/solid_angle.hpp [4:5]
+ boost/units/systems/si/surface_density.hpp [4:5]
+ boost/units/systems/si/surface_tension.hpp [4:5]
+ boost/units/systems/si/temperature.hpp [4:5]
+ boost/units/systems/si/time.hpp [4:5]
+ boost/units/systems/si/torque.hpp [4:5]
+ boost/units/systems/si/velocity.hpp [4:5]
+ boost/units/systems/si/volume.hpp [4:5]
+ boost/units/systems/si/wavenumber.hpp [4:5]
+ boost/units/systems/temperature/celsius.hpp [4:5]
+ boost/units/systems/temperature/fahrenheit.hpp [4:5]
+ boost/units/unit.hpp [4:5]
+ boost/units/units_fwd.hpp [4:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 31dab43fa080cbb98017ca60b8536ab0
+BELONGS ya.make
+ License text:
+ // Copyright Beman Dawes 2003
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/filesystem/config.hpp [3:3]
+ boost/filesystem/exception.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 324d93d18dc0341b928695ee94a194af
+BELONGS ya.make
+ License text:
+ // Copyright 2010 Andy Tompkins.
+ // Copyright 2017 James E. King III
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/uuid/basic_name_generator.hpp [3:4]
+ boost/uuid/name_generator.hpp [3:4]
+ boost/uuid/name_generator_sha1.hpp [3:4]
+ boost/uuid/nil_generator.hpp [3:5]
+ boost/uuid/random_generator.hpp [3:6]
+ boost/uuid/string_generator.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 32511a369ceb9e80149621bddd200001
+BELONGS ya.make
+ License text:
+ Copyright (c) 2003 Jonathan de Halleux (dehalleux@pelikhan.com)
+ Copyright (c) 2011 Bryce Lelbach
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/actor/ref_value_actor.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 32573bc3a7b7bae58726fa77bfc61ebf
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/times2_iterator.hpp at line 6
+ License text:
+ // Copyright 2006 Eric Niebler. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/accumulators/statistics/times2_iterator.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3270284535e3fd146527a1723db5c829
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2014 Erik Erlandson
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/units/base_units/information/bit.hpp [4:4]
+ boost/units/base_units/information/byte.hpp [4:4]
+ boost/units/base_units/information/hartley.hpp [4:4]
+ boost/units/base_units/information/nat.hpp [4:4]
+ boost/units/base_units/information/shannon.hpp [4:4]
+ boost/units/physical_dimensions/information.hpp [4:4]
+ boost/units/systems/information.hpp [4:4]
+ boost/units/systems/information/bit.hpp [4:4]
+ boost/units/systems/information/byte.hpp [4:4]
+ boost/units/systems/information/hartley.hpp [4:4]
+ boost/units/systems/information/nat.hpp [4:4]
+ boost/units/systems/information/prefixes.hpp [4:4]
+ boost/units/systems/information/shannon.hpp [4:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 32d1f182852203e1af5656ce09a20b93
+BELONGS ya.make
+ License text:
+ Copyright 2012 Karsten Ahnert
+ Copyright 2012 Mario Mulansky
+ Copyright 2012 Denis Demidov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/external/vexcl/vexcl_resize.hpp [9:11]
+ boost/numeric/odeint/external/viennacl/viennacl_operations.hpp [9:11]
+ boost/numeric/odeint/external/viennacl/viennacl_resize.hpp [9:11]
+
+KEEP COPYRIGHT_SERVICE_LABEL 32f3e9a485f1df17b5b5c669b5cf8a43
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/adaptive_pool.hpp at line 5, boost/container/detail/adaptive_node_pool.hpp at line 5, boost/container/detail/adaptive_node_pool_impl.hpp at line 5, boost/container/detail/alloc_lib.h at line 5, boost/container/detail/allocation_type.hpp at line 5, boost/container/detail/config_begin.hpp at line 5, boost/container/detail/config_end.hpp at line 5, boost/container/detail/copy_move_algo.hpp at line 5, boost/container/detail/destroyers.hpp at line 5, boost/container/detail/iterators.hpp at line 5, boost/container/detail/min_max.hpp at line 5, boost/container/detail/mpl.hpp at line 5, boost/container/detail/multiallocation_chain.hpp at line 5, boost/container/detail/node_alloc_holder.hpp at line 5, boost/container/detail/node_pool.hpp at line 5, boost/container/detail/node_pool_impl.hpp at line 5, boost/container/detail/pair.hpp at line 5, boost/container/detail/pair_key_mapped_of_value.hpp at line 5, boost/container/detail/pool_common.hpp at line 5, boost/container/detail/pool_common_alloc.hpp at line 5, boost/container/detail/transform_iterator.hpp at line 5, boost/container/detail/value_init.hpp at line 5, boost/container/detail/version_type.hpp at line 5, boost/container/detail/workaround.hpp at line 5, boost/container/flat_map.hpp at line 5, boost/container/flat_set.hpp at line 5, boost/container/map.hpp at line 5, boost/container/set.hpp at line 5, boost/interprocess/detail/os_thread_functions.hpp at line 5, boost/intrusive/detail/workaround.hpp at line 5, boost/move/adl_move_swap.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/container/adaptive_pool.hpp [3:5]
+ boost/container/detail/adaptive_node_pool.hpp [3:5]
+ boost/container/detail/adaptive_node_pool_impl.hpp [3:5]
+ boost/container/detail/alloc_lib.h [3:5]
+ boost/container/detail/allocation_type.hpp [3:5]
+ boost/container/detail/config_begin.hpp [3:5]
+ boost/container/detail/config_end.hpp [3:5]
+ boost/container/detail/copy_move_algo.hpp [3:5]
+ boost/container/detail/destroyers.hpp [3:3]
+ boost/container/detail/iterators.hpp [3:4]
+ boost/container/detail/min_max.hpp [3:5]
+ boost/container/detail/mpl.hpp [3:3]
+ boost/container/detail/multiallocation_chain.hpp [3:5]
+ boost/container/detail/node_alloc_holder.hpp [3:5]
+ boost/container/detail/node_pool.hpp [3:5]
+ boost/container/detail/node_pool_impl.hpp [3:5]
+ boost/container/detail/pair.hpp [3:3]
+ boost/container/detail/pair_key_mapped_of_value.hpp [3:5]
+ boost/container/detail/pool_common.hpp [3:5]
+ boost/container/detail/pool_common_alloc.hpp [3:5]
+ boost/container/detail/transform_iterator.hpp [3:4]
+ boost/container/detail/value_init.hpp [3:3]
+ boost/container/detail/version_type.hpp [3:5]
+ boost/container/detail/workaround.hpp [3:5]
+ boost/container/flat_map.hpp [3:5]
+ boost/container/flat_set.hpp [3:5]
+ boost/container/map.hpp [3:5]
+ boost/container/set.hpp [3:5]
+ boost/interprocess/detail/os_thread_functions.hpp [3:5]
+ boost/intrusive/detail/workaround.hpp [3:5]
+ boost/move/adl_move_swap.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 33055e91cf52f04ff1b51e16884cc15f
+BELONGS ya.make
+ License text:
+ Copyright (C) 2017 Glen Joseph Fernandes (glenjofe@gmail.com)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/core/addressof.hpp [7:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3333518f60a3b0b9277d7db70f8bc9fe
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001-2002 Chuck Allison and Jeremy Siek
+ // Copyright (c) 2003-2004, 2008 Gennaro Prota
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/detail/dynamic_bitset.hpp [3:4]
+ boost/dynamic_bitset.hpp [3:4]
+ boost/dynamic_bitset/config.hpp [3:4]
+ boost/dynamic_bitset/dynamic_bitset.hpp [3:5]
+ boost/dynamic_bitset_fwd.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3362337951e7dc98a4141fb90ce0df41
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/sort/block_indirect_sort/blk_detail/backbone.hpp at line 8, boost/sort/block_indirect_sort/blk_detail/block.hpp at line 8, boost/sort/block_indirect_sort/blk_detail/constants.hpp at line 7, boost/sort/block_indirect_sort/blk_detail/merge_blocks.hpp at line 8, boost/sort/block_indirect_sort/blk_detail/move_blocks.hpp at line 8, boost/sort/block_indirect_sort/blk_detail/parallel_sort.hpp at line 8, boost/sort/block_indirect_sort/block_indirect_sort.hpp at line 7, boost/sort/common/indirect.hpp at line 7, boost/sort/common/merge_block.hpp at line 8, boost/sort/common/merge_four.hpp at line 7, boost/sort/common/merge_vector.hpp at line 8, boost/sort/common/range.hpp at line 7, boost/sort/common/rearrange.hpp at line 7, boost/sort/common/sort_basic.hpp at line 7, boost/sort/common/util/atomic.hpp at line 6, boost/sort/common/util/insert.hpp at line 7, boost/sort/common/util/merge.hpp at line 7, boost/sort/common/util/traits.hpp at line 7, boost/sort/heap_sort/heap_sort.hpp at line 7, boost/sort/insert_sort/insert_sort.hpp at line 7, boost/sort/parallel_stable_sort/parallel_stable_sort.hpp at line 7, boost/sort/sample_sort/sample_sort.hpp at line 7, boost/sort/spinsort/spinsort.hpp at line 7
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/sort/block_indirect_sort/blk_detail/backbone.hpp [6:8]
+ boost/sort/block_indirect_sort/blk_detail/block.hpp [6:8]
+ boost/sort/block_indirect_sort/blk_detail/constants.hpp [5:7]
+ boost/sort/block_indirect_sort/blk_detail/merge_blocks.hpp [6:8]
+ boost/sort/block_indirect_sort/blk_detail/move_blocks.hpp [6:8]
+ boost/sort/block_indirect_sort/blk_detail/parallel_sort.hpp [6:8]
+ boost/sort/block_indirect_sort/block_indirect_sort.hpp [5:7]
+ boost/sort/common/indirect.hpp [5:7]
+ boost/sort/common/merge_block.hpp [6:8]
+ boost/sort/common/merge_four.hpp [5:7]
+ boost/sort/common/merge_vector.hpp [6:8]
+ boost/sort/common/range.hpp [5:7]
+ boost/sort/common/rearrange.hpp [5:7]
+ boost/sort/common/sort_basic.hpp [5:7]
+ boost/sort/common/util/atomic.hpp [4:6]
+ boost/sort/common/util/insert.hpp [5:7]
+ boost/sort/common/util/merge.hpp [5:7]
+ boost/sort/common/util/traits.hpp [5:7]
+ boost/sort/heap_sort/heap_sort.hpp [5:7]
+ boost/sort/insert_sort/insert_sort.hpp [5:7]
+ boost/sort/parallel_stable_sort/parallel_stable_sort.hpp [5:7]
+ boost/sort/sample_sort/sample_sort.hpp [5:7]
+ boost/sort/spinsort/spinsort.hpp [5:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3386ce257b7fdc192fc2c7a99846dd83
+BELONGS ya.make
+ License text:
+ // This file was modified by Oracle on 2013-2014.
+ // Modifications copyright (c) 2013-2014, Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/disjoint/linear_segment_or_box.hpp [8:9]
+ boost/geometry/algorithms/detail/equals/point_point.hpp [8:9]
+ boost/geometry/algorithms/detail/single_geometry.hpp [5:6]
+ boost/geometry/algorithms/detail/sub_range.hpp [5:6]
+ boost/geometry/algorithms/disjoint.hpp [8:9]
+ boost/geometry/policies/disjoint_interrupt_policy.hpp [8:9]
+
+KEEP COPYRIGHT_SERVICE_LABEL 339fcf7433771e1324c39962a53efb58
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/move/algo/adaptive_merge.hpp at line 5, boost/move/algo/adaptive_sort.hpp at line 5, boost/move/algo/detail/adaptive_sort_merge.hpp at line 5, boost/move/algo/detail/basic_op.hpp at line 5, boost/move/algo/detail/merge.hpp at line 5, boost/move/algo/detail/merge_sort.hpp at line 5, boost/move/algo/predicate.hpp at line 5, boost/move/detail/destruct_n.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2015-2016.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/move/algo/adaptive_merge.hpp [3:5]
+ boost/move/algo/adaptive_sort.hpp [3:5]
+ boost/move/algo/detail/adaptive_sort_merge.hpp [3:5]
+ boost/move/algo/detail/basic_op.hpp [3:5]
+ boost/move/algo/detail/merge.hpp [3:5]
+ boost/move/algo/detail/merge_sort.hpp [3:5]
+ boost/move/algo/predicate.hpp [3:5]
+ boost/move/detail/destruct_n.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 33e18cfc20734ce255518bc39f4f9639
+BELONGS ya.make
+ License text:
+ // (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
+ // Copyright (c) 2001-2008 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/shared_ptr.hpp [7:8]
+ boost/smart_ptr/shared_ptr.hpp [7:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 33fcb6432b4c5d83e447d6f2b8dd7cf8
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2015-2016 Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/formulas/result_inverse.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3430da63f6fba2e8b14a06b6618ef84f
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/sort/sort.hpp at line 5
+ License text:
+ // Copyright Steven J. Ross 2014
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/sort/sort.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 346c67fb4a777a0d04af25c1d1bd52dc
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2003, Fernando Luis Cacciola Carballal.
+ // Copyright (C) 2014, 2015 Andrzej Krzemienski.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/none.hpp [1:2]
+ boost/none_t.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3480f6f1e992412638387963c9a8bfe5
+BELONGS ya.make
+ License text:
+ // Copyright David Abrahams and Thomas Becker 2000-2006.
+ // Copyright Kohei Takahashi 2012-2014.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/iterator/zip_iterator.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 34a792da65f2f8745dcf28bc6c533356
+BELONGS ya.make
+ License text:
+ * Copyright 2000 Maarten Keijzer
+ * Copyright 2002 Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/interval/detail/msvc_rounding_control.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 34ce55406b46dd8bed8401d40235f330
+BELONGS ya.make
+ License text:
+ // Copyright 2014 LASMEA UMR 6602 CNRS/Univ. Clermont II
+ // Copyright 2014 LRI UMR 8623 CNRS/Univ Paris Sud XI
+ // Copyright 2014 MetaScale SAS
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/external/nt2/nt2_copy.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 351746b3263b8ecde03d30e68809a8c2
+BELONGS ya.make
+ License text:
+ // Copyright 2005 Trustees of Indiana University
+ // Authors: Andrew Lumsdaine, Douglas Gregor
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/simple_point.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 354c2179cce41ffab59e14fbc4d8cbe0
+BELONGS ya.make
+ License text:
+ // This file was modified by Oracle on 2017, 2018.
+ // Modifications copyright (c) 2017-2018, Oracle and/or its affiliates.
+ // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/srs/projections/epsg_traits.hpp [5:7]
+ boost/geometry/srs/projections/impl/dms_parser.hpp [5:7]
+ boost/geometry/srs/projections/impl/pj_datum_set.hpp [6:8]
+ boost/geometry/srs/projections/impl/pj_ell_set.hpp [6:8]
+ boost/geometry/srs/projections/impl/pj_init.hpp [6:8]
+ boost/geometry/srs/projections/impl/pj_strerrno.hpp [4:6]
+ boost/geometry/srs/projections/impl/pj_transform.hpp [4:6]
+ boost/geometry/srs/projections/proj/aeqd.hpp [9:11]
+ boost/geometry/srs/projections/proj/cc.hpp [9:11]
+ boost/geometry/srs/projections/proj/gnom.hpp [9:11]
+ boost/geometry/srs/projections/proj/goode.hpp [9:11]
+ boost/geometry/srs/projections/proj/healpix.hpp [9:11]
+ boost/geometry/srs/projections/proj/isea.hpp [9:11]
+ boost/geometry/srs/projections/proj/laea.hpp [9:11]
+ boost/geometry/srs/projections/proj/lsat.hpp [9:11]
+ boost/geometry/srs/projections/proj/nsper.hpp [9:11]
+ boost/geometry/srs/projections/proj/ob_tran.hpp [9:11]
+ boost/geometry/srs/projections/proj/ortho.hpp [9:11]
+ boost/geometry/srs/projections/proj/stere.hpp [9:11]
+ boost/geometry/srs/projections/proj/tcc.hpp [9:11]
+ boost/geometry/srs/projections/proj/vandg2.hpp [9:11]
+ boost/geometry/strategies/spherical/distance_haversine.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 355b2ffcb48b6b4cc42ba88a8b3a4faf
+BELONGS ya.make
+ License text:
+ Copyright 2017 Glen Joseph Fernandes
+ (glenjofe@gmail.com)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/allocate_local_shared_array.hpp [2:3]
+ boost/smart_ptr/make_local_shared_array.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 356e94e4f4ffdf79ede13b61da73d082
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2006.
+ // Copyright Paul A. Bristow 2006, 2012, 2017.
+ // Copyright Thomas Mang 2012.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/distributions/students_t.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 357355a40dea9ba097800691e11a08d7
+BELONGS ya.make
+ License text:
+ // Copyright Beman Dawes 1994, 2006, 2008
+ // Copyright Vicente J. Botet Escriba 2009
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/chrono/detail/inlined/mac/process_cpu_clocks.hpp [3:4]
+ boost/chrono/detail/inlined/mac/thread_clock.hpp [3:5]
+ boost/chrono/detail/inlined/posix/process_cpu_clocks.hpp [3:4]
+ boost/chrono/detail/inlined/posix/thread_clock.hpp [3:4]
+ boost/chrono/detail/inlined/win/process_cpu_clocks.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3597dd90b081d5668dabc2026c83961e
+BELONGS ya.make
+ License text:
+ * Copyright (c) 2014 Glen Fernandes
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/checked_delete.hpp [2:2]
+ boost/detail/lightweight_test.hpp [2:2]
+ boost/detail/no_exceptions_support.hpp [2:2]
+ boost/noncopyable.hpp [2:2]
+ boost/ref.hpp [2:2]
+ boost/swap.hpp [2:2]
+ boost/utility/addressof.hpp [2:2]
+ boost/utility/enable_if.hpp [2:2]
+ boost/utility/explicit_operator_bool.hpp [2:2]
+ boost/utility/swap.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 35f3967788124fb1166bf637d6cd211a
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/transitive_closure.hpp at line 4
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/transitive_closure.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 362e438ad12174e10c63f3ad9fa1ce0d
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/borland.hpp [1:5]
+ boost/config/compiler/codegear.hpp [1:5]
+ boost/config/compiler/gcc.hpp [1:9]
+ boost/config/compiler/hp_acc.hpp [1:8]
+ boost/config/compiler/intel.hpp [1:10]
+ boost/config/compiler/visualc.hpp [1:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 365adb3be0f210d54497c8792ef79936
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/random/detail/config.hpp at line 5, boost/random/detail/disable_warnings.hpp at line 5, boost/random/detail/enable_warnings.hpp at line 5, boost/random/detail/seed.hpp at line 5, boost/random/detail/seed_impl.hpp at line 5
+ License text:
+ * Copyright Steven Watanabe 2009
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/random/detail/config.hpp [3:5]
+ boost/random/detail/disable_warnings.hpp [3:5]
+ boost/random/detail/enable_warnings.hpp [3:5]
+ boost/random/detail/seed.hpp [3:5]
+ boost/random/detail/seed_impl.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3674cfd3d09da8cdf64d636540eedccb
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/get_max_size.hpp [3:6]
+ boost/geometry/policies/robustness/robust_type.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 368bc0676fed97d8e20cb5e9e1a4530f
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2009 Andrew Sutton
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/detail/labeled_graph_traits.hpp [1:1]
+ boost/graph/graph_mutability_traits.hpp [1:1]
+ boost/graph/labeled_graph.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 36e9b1823d56fbd4e1710912ff2b784b
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/detail/dealloc.hpp at line 3, boost/python/return_opaque_pointer.hpp at line 3
+ License text:
+ // Copyright Gottfried Ganßauge 2003.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/python/detail/dealloc.hpp [1:3]
+ boost/python/return_opaque_pointer.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 36fea81184c5ae64a7624098ffc18c64
+BELONGS libs/thread/ya.make ya.make
+ License text:
+ // Copyright (C) 2001-2003
+ // William E. Kempf
+ // (C) Copyright 2008-9 Anthony Williams
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/interprocess/sync/interprocess_recursive_mutex.hpp [15:16]
+ boost/interprocess/sync/posix/mutex.hpp [15:16]
+ boost/interprocess/sync/posix/recursive_mutex.hpp [15:16]
+ boost/interprocess/sync/spin/recursive_mutex.hpp [15:16]
+ boost/thread.hpp [1:3]
+ boost/thread/detail/config.hpp [1:3]
+ boost/thread/exceptions.hpp [1:4]
+ boost/thread/xtime.hpp [1:3]
+ libs/thread/src/pthread/thread.cpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 374b652d73bc75d45730b2239830c0a0
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2002-2003
+ // Eric Friedman
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/variant/bad_visit.hpp [6:7]
+ boost/variant/detail/apply_visitor_binary.hpp [6:7]
+ boost/variant/detail/apply_visitor_delayed.hpp [6:7]
+ boost/variant/detail/apply_visitor_unary.hpp [6:7]
+ boost/variant/detail/move.hpp [6:8]
+ boost/variant/static_visitor.hpp [6:7]
+ boost/variant/visitor_ptr.hpp [6:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3754fd14fa62eae798d8325bcb41f0a7
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2007 Marcin Kalicinski
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/property_tree/detail/xml_parser_read_rapidxml.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3761f0e38b5da4769378918141293e40
+BELONGS ya.make
+ License text:
+ // Copyright 2002 Rensselaer Polytechnic Institute
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/floyd_warshall_shortest.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3781454acc49374ec380053b507684cc
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001-2011 Hartmut Kaiser
+ // Copyright (c) 2001-2011 Joel de Guzman
+ // Copyright (c) 2011 Thomas Bernard
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/repository/home/qi/directive/kwd.hpp [2:3]
+ boost/spirit/repository/home/qi/operator.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3790b2f380ed5746f91d9f6f8e6a50b2
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2006.
+ // Copyright Paul A. Bristow 2007.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/distributions/bernoulli.hpp [3:4]
+ boost/math/distributions/binomial.hpp [3:4]
+ boost/math/distributions/cauchy.hpp [1:2]
+ boost/math/distributions/find_location.hpp [1:2]
+ boost/math/distributions/find_scale.hpp [1:2]
+ boost/math/distributions/negative_binomial.hpp [3:4]
+ boost/math/distributions/poisson.hpp [3:4]
+ boost/math/distributions/rayleigh.hpp [1:3]
+ boost/math/policies/error_handling.hpp [1:2]
+ boost/math/special_functions/detail/ibeta_inverse.hpp [1:4]
+ boost/math/special_functions/detail/t_distribution_inv.hpp [1:4]
+ boost/math/tools/user.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 379d55304a225ee534790d8a1bfe4816
+BELONGS ya.make
+ License text:
+ // Copyright (c) 1995, 2007-2015 Barend Gehrels, Amsterdam, the Netherlands.
+ // Copyright (c) 1995 Maarten Hilferink, Amsterdam, the Netherlands
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/strategies/agnostic/simplify_douglas_peucker.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 37edcc5203bf2cbf44c6f524b2dd14d6
+BELONGS ya.make
+ License text:
+ // (C) Copyright Tobias Schwinger
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/function_types/components.hpp [2:2]
+ boost/function_types/config/cc_names.hpp [2:2]
+ boost/function_types/config/compiler.hpp [2:2]
+ boost/function_types/config/config.hpp [2:2]
+ boost/function_types/detail/class_transform.hpp [2:2]
+ boost/function_types/detail/classifier.hpp [2:2]
+ boost/function_types/detail/classifier_impl/arity10_0.hpp [2:2]
+ boost/function_types/detail/classifier_impl/arity10_1.hpp [2:2]
+ boost/function_types/detail/classifier_impl/arity20_0.hpp [2:2]
+ boost/function_types/detail/classifier_impl/arity20_1.hpp [2:2]
+ boost/function_types/detail/classifier_impl/arity30_0.hpp [2:2]
+ boost/function_types/detail/classifier_impl/arity30_1.hpp [2:2]
+ boost/function_types/detail/classifier_impl/arity40_0.hpp [2:2]
+ boost/function_types/detail/classifier_impl/arity40_1.hpp [2:2]
+ boost/function_types/detail/classifier_impl/arity50_0.hpp [2:2]
+ boost/function_types/detail/classifier_impl/arity50_1.hpp [2:2]
+ boost/function_types/detail/classifier_impl/master.hpp [2:2]
+ boost/function_types/detail/components_as_mpl_sequence.hpp [2:2]
+ boost/function_types/detail/components_impl/arity10_0.hpp [2:2]
+ boost/function_types/detail/components_impl/arity10_1.hpp [2:2]
+ boost/function_types/detail/components_impl/arity20_0.hpp [2:2]
+ boost/function_types/detail/components_impl/arity20_1.hpp [2:2]
+ boost/function_types/detail/components_impl/arity30_0.hpp [2:2]
+ boost/function_types/detail/components_impl/arity30_1.hpp [2:2]
+ boost/function_types/detail/components_impl/arity40_0.hpp [2:2]
+ boost/function_types/detail/components_impl/arity40_1.hpp [2:2]
+ boost/function_types/detail/components_impl/arity50_0.hpp [2:2]
+ boost/function_types/detail/components_impl/arity50_1.hpp [2:2]
+ boost/function_types/detail/components_impl/master.hpp [2:2]
+ boost/function_types/detail/cv_traits.hpp [2:2]
+ boost/function_types/detail/encoding/aliases_def.hpp [2:2]
+ boost/function_types/detail/encoding/aliases_undef.hpp [2:2]
+ boost/function_types/detail/encoding/def.hpp [2:2]
+ boost/function_types/detail/encoding/undef.hpp [2:2]
+ boost/function_types/detail/pp_arity_loop.hpp [2:2]
+ boost/function_types/detail/pp_cc_loop/master.hpp [2:2]
+ boost/function_types/detail/pp_cc_loop/preprocessed.hpp [2:2]
+ boost/function_types/detail/pp_loop.hpp [2:2]
+ boost/function_types/detail/pp_retag_default_cc/master.hpp [2:2]
+ boost/function_types/detail/pp_retag_default_cc/preprocessed.hpp [2:2]
+ boost/function_types/detail/pp_tags/cc_tag.hpp [2:2]
+ boost/function_types/detail/pp_tags/master.hpp [2:2]
+ boost/function_types/detail/pp_tags/preprocessed.hpp [2:2]
+ boost/function_types/detail/pp_variate_loop/master.hpp [2:2]
+ boost/function_types/detail/pp_variate_loop/preprocessed.hpp [2:2]
+ boost/function_types/detail/retag_default_cc.hpp [2:2]
+ boost/function_types/detail/synthesize.hpp [2:2]
+ boost/function_types/detail/synthesize_impl/arity10_0.hpp [2:2]
+ boost/function_types/detail/synthesize_impl/arity10_1.hpp [2:2]
+ boost/function_types/detail/synthesize_impl/arity20_0.hpp [2:2]
+ boost/function_types/detail/synthesize_impl/arity20_1.hpp [2:2]
+ boost/function_types/detail/synthesize_impl/arity30_0.hpp [2:2]
+ boost/function_types/detail/synthesize_impl/arity30_1.hpp [2:2]
+ boost/function_types/detail/synthesize_impl/arity40_0.hpp [2:2]
+ boost/function_types/detail/synthesize_impl/arity40_1.hpp [2:2]
+ boost/function_types/detail/synthesize_impl/arity50_0.hpp [2:2]
+ boost/function_types/detail/synthesize_impl/arity50_1.hpp [2:2]
+ boost/function_types/detail/synthesize_impl/master.hpp [2:2]
+ boost/function_types/detail/to_sequence.hpp [2:2]
+ boost/function_types/function_arity.hpp [2:2]
+ boost/function_types/function_pointer.hpp [2:2]
+ boost/function_types/function_reference.hpp [2:2]
+ boost/function_types/function_type.hpp [2:2]
+ boost/function_types/is_callable_builtin.hpp [2:2]
+ boost/function_types/is_function.hpp [2:2]
+ boost/function_types/is_function_pointer.hpp [2:2]
+ boost/function_types/is_function_reference.hpp [2:2]
+ boost/function_types/is_member_function_pointer.hpp [2:2]
+ boost/function_types/is_member_object_pointer.hpp [2:2]
+ boost/function_types/is_member_pointer.hpp [2:2]
+ boost/function_types/is_nonmember_callable_builtin.hpp [2:2]
+ boost/function_types/member_function_pointer.hpp [2:2]
+ boost/function_types/member_object_pointer.hpp [2:2]
+ boost/function_types/parameter_types.hpp [2:2]
+ boost/function_types/property_tags.hpp [2:2]
+ boost/function_types/result_type.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 37ef22160482a625f43027681621c621
+BELONGS ya.make
+ License text:
+ * Copyright (c) 2003-2005
+ * John Maddock
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/regex/v4/error_type.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3855da3f22dc989b1adc747b4e23a949
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2003 Joel de Guzman
+ Copyright (c) 2002-2003 Hartmut Kaiser
+ Copyright (c) 2003 Gustavo Guerra
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/debug/debug_node.hpp [2:5]
+ boost/spirit/home/classic/meta/impl/parser_traits.ipp [2:5]
+ boost/spirit/home/classic/meta/parser_traits.hpp [2:5]
+ boost/spirit/home/classic/phoenix/tuple_helpers.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3861126765089225a9c2f2aab3696667
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2000-2011 Joerg Walter, Mathias Koch, David Bellot
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/ublas/blas.hpp [1:1]
+ boost/numeric/ublas/exception.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 386422ed6dcb6b59b9ac548256e71381
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/platform/macos.hpp [1:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 38b8d9f6332e5a688b471b92d217a79b
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/move/adl_move_swap.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/move/adl_move_swap.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 38c7b8f60b51f597ba97b03f9715b4b9
+BELONGS ya.make
+ License text:
+ // Copyright 2014 Peter Dimov
+ // Copyright 2014 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/core/demangle.hpp [6:7]
+ boost/core/is_same.hpp [12:12]
+ boost/core/lightweight_test_trait.hpp [14:14]
+
+KEEP COPYRIGHT_SERVICE_LABEL 38d3ce2209a395c064c29e47dccce34b
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/select_type.hpp at line 3, boost/type.hpp at line 3
+ License text:
+ // (C) Copyright David Abrahams 2001.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/detail/select_type.hpp [1:3]
+ boost/type.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 39059a8eede404b2a251f7d030029784
+BELONGS ya.make
+ License text:
+ // (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
+ // Copyright (c) 2001, 2002, 2012 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/shared_array.hpp [7:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 390adb9c382fea4ca3f3a24a08bc412b
+BELONGS ya.make
+ License text:
+ * Copyright Nick Thompson, 2018
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/quadrature/naive_monte_carlo.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 390b952a13e57b2a99a6fa849a00c0e7
+BELONGS ya.make
+ License text:
+ Copyright 2017 Glen Joseph Fernandes
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_traits/make_void.hpp [2:2]
+ boost/type_traits/nonesuch.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3959375d23207bb679997771052de5cc
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2007-8.
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/concepts/real_type_concept.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 39b86d305df61c4b16df80122d10f3af
+BELONGS ya.make
+ License text:
+ * Copyright (c) 2009 Helge Bahmann
+ * Copyright (c) 2012 Tim Blechmann
+ * Copyright (c) 2013 - 2018 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/atomic/detail/bitwise_cast.hpp [6:8]
+ boost/atomic/detail/caps_gcc_x86.hpp [6:8]
+ boost/atomic/detail/ops_gcc_x86.hpp [6:8]
+ boost/atomic/detail/ops_gcc_x86_dcas-linux.hpp [6:8]
+ boost/atomic/detail/ops_gcc_x86_dcas-osx.hpp [6:8]
+ boost/atomic/detail/ops_gcc_x86_dcas.hpp [6:8]
+ boost/atomic/detail/ops_msvc_arm.hpp [6:8]
+ boost/atomic/detail/ops_msvc_common.hpp [6:8]
+ boost/atomic/detail/ops_msvc_x86.hpp [6:8]
+ boost/atomic/detail/ops_windows.hpp [6:8]
+ boost/atomic/detail/storage_type.hpp [6:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 39ee4bcf7a682976231db184fa7886d3
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/unordered/detail/fwd.hpp at line 4
+ License text:
+ // Copyright (C) 2008-2016 Daniel James.
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/unordered/detail/fwd.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 39f186083461682d70be78cbf83e9b85
+BELONGS ya.make
+ License text:
+ // (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
+ // Howard Hinnant and John Maddock 2000.
+ // (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 2001
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_traits/is_const.hpp [2:4]
+ boost/type_traits/is_lvalue_reference.hpp [2:4]
+ boost/type_traits/is_member_pointer.hpp [2:4]
+ boost/type_traits/is_pointer.hpp [2:4]
+ boost/type_traits/is_reference.hpp [2:4]
+ boost/type_traits/is_same.hpp [2:4]
+ boost/type_traits/is_volatile.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3a101448ab7ea5bb06f1fbcf1a910852
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/array/detail/get_data.hpp at line 6, boost/preprocessor/array/push_back.hpp at line 6, boost/preprocessor/array/push_front.hpp at line 6, boost/preprocessor/facilities/detail/is_empty.hpp at line 6, boost/preprocessor/facilities/is_empty.hpp at line 6, boost/preprocessor/facilities/is_empty_variadic.hpp at line 6, boost/preprocessor/punctuation/detail/is_begin_parens.hpp at line 6, boost/preprocessor/punctuation/is_begin_parens.hpp at line 6, boost/preprocessor/punctuation/remove_parens.hpp at line 6, boost/preprocessor/tuple/detail/is_single_return.hpp at line 6, boost/preprocessor/variadic/detail/is_single_return.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/preprocessor/array/detail/get_data.hpp [3:5]
+ boost/preprocessor/array/push_back.hpp [3:6]
+ boost/preprocessor/array/push_front.hpp [3:6]
+ boost/preprocessor/facilities/detail/is_empty.hpp [3:5]
+ boost/preprocessor/facilities/is_empty.hpp [3:6]
+ boost/preprocessor/facilities/is_empty_variadic.hpp [3:5]
+ boost/preprocessor/punctuation/detail/is_begin_parens.hpp [3:5]
+ boost/preprocessor/punctuation/is_begin_parens.hpp [3:5]
+ boost/preprocessor/punctuation/remove_parens.hpp [3:5]
+ boost/preprocessor/tuple/detail/is_single_return.hpp [3:5]
+ boost/preprocessor/variadic/detail/is_single_return.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3a820fb86d894dac775a728586b31286
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2005 Douglas Gregor.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpi/detail/computation_tree.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3ab6090aa97ef6371f6b59c9148c4ea1
+BELONGS ya.make
+ License text:
+ // Copyright (c) David Abrahams 2001.
+ // Copyright (c) Jeremy Siek 2001-2003.
+ // Copyright (c) Thomas Witt 2002.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/iterator/new_iterator_tests.hpp [5:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3abe023357779f6d901fca15ed3388fa
+BELONGS ya.make
+ License text:
+ Copyright (c) 2011 Hartmut Kaiser
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_function.hpp [2:2]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object.hpp [2:2]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function.hpp [2:2]
+ boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr.hpp [2:2]
+ boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr.hpp [2:2]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_operator.hpp [2:2]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of.hpp [2:2]
+ boost/phoenix/core/detail/cpp03/preprocessed/argument.hpp [2:2]
+ boost/phoenix/core/detail/cpp03/preprocessed/call.hpp [2:2]
+ boost/phoenix/core/detail/cpp03/preprocessed/expression.hpp [2:2]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_equal.hpp [2:2]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_eval.hpp [2:2]
+ boost/phoenix/core/detail/cpp03/preprocessed/phx2_result.hpp [2:2]
+ boost/phoenix/function/detail/cpp03/preprocessed/function_operator.hpp [2:2]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct.hpp [2:2]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_eval.hpp [2:2]
+ boost/phoenix/object/detail/cpp03/preprocessed/new.hpp [2:2]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_eval.hpp [2:2]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen.hpp [2:2]
+ boost/phoenix/scope/detail/cpp03/preprocessed/dynamic.hpp [2:2]
+ boost/phoenix/scope/detail/cpp03/preprocessed/lambda.hpp [2:2]
+ boost/phoenix/statement/detail/preprocessed/catch_push_back.hpp [2:2]
+ boost/phoenix/statement/detail/preprocessed/switch.hpp [2:2]
+ boost/phoenix/statement/detail/preprocessed/try_catch_eval.hpp [2:2]
+ boost/phoenix/statement/detail/preprocessed/try_catch_expression.hpp [2:2]
+ boost/phoenix/support/preprocessed/vector.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3acc7446eae81a14ef8a0e37e54474da
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2003-2008 Matthias Christian Schabel
+ // Copyright (C) 2007-2010 Steven Watanabe
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/units/io.hpp [4:5]
+ boost/units/physical_dimensions.hpp [4:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3ae48219349a0c68f53a461b05d1ea28
+BELONGS ya.make
+ License text:
+ Copyright 2010-2014 Mario Mulansky
+ Copyright 2010-2011 Karsten Ahnert
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/external/thrust/thrust_resize.hpp [9:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3b16b7cedf0ca0a50b791ba8334e2d98
+BELONGS ya.make
+ License text:
+ // (C) Copyright Olaf Krzikalla 2004-2006.
+ // (C) Copyright Ion Gaztanaga 2006-2014
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/intrusive/circular_list_algorithms.hpp [3:4]
+ boost/intrusive/circular_slist_algorithms.hpp [3:4]
+ boost/intrusive/detail/list_iterator.hpp [3:4]
+ boost/intrusive/detail/list_node.hpp [3:4]
+ boost/intrusive/detail/rbtree_node.hpp [3:4]
+ boost/intrusive/detail/slist_iterator.hpp [3:4]
+ boost/intrusive/detail/slist_node.hpp [3:4]
+ boost/intrusive/linear_slist_algorithms.hpp [3:4]
+ boost/intrusive/list.hpp [3:4]
+ boost/intrusive/list_hook.hpp [3:4]
+ boost/intrusive/rbtree_algorithms.hpp [3:4]
+ boost/intrusive/set.hpp [3:4]
+ boost/intrusive/set_hook.hpp [3:4]
+ boost/intrusive/slist.hpp [3:4]
+ boost/intrusive/slist_hook.hpp [3:4]
+ boost/intrusive/unordered_set.hpp [3:4]
+ boost/intrusive/unordered_set_hook.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3b219154e3b48fec8d2bee428f19860e
+BELONGS ya.make
+ License text:
+ * Copyright 2003 Guillaume Melquiond, Sylvain Pion
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/interval/detail/division.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3b6e3be8569ddd3a2e7d43c3cdc4ea63
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/adaptor/copied.hpp at line 5, boost/range/adaptor/tokenized.hpp at line 5
+ License text:
+ // Copyright Thorsten Ottosen, Neil Groves 2006. Use, modification and
+ // distribution is subject to the Boost Software License, Version
+ // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/range/adaptor/copied.hpp [3:5]
+ boost/range/adaptor/tokenized.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3b9900d7ac5a2e20a369cd2322bd3e92
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2015-2016 Andrzej Krzemienski.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/optional/detail/optional_reference_spec.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3b9a2b448e2da4108191c7c48d83f81b
+BELONGS ya.make
+ License text:
+ // Copyright 2013 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/detail/atomic_count_nt.hpp [11:11]
+ boost/smart_ptr/detail/atomic_count_std_atomic.hpp [9:9]
+ boost/smart_ptr/detail/sp_nullptr_t.hpp [12:12]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3be0bda1f8b025b84dcb5e929ac6425e
+BELONGS ya.make
+ License text:
+ Copyright (c) 2016 Barrett Adair
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/callable_traits/detail/unguarded/function.hpp [2:2]
+ boost/callable_traits/detail/unguarded/function_2.hpp [2:2]
+ boost/callable_traits/detail/unguarded/function_3.hpp [2:2]
+ boost/callable_traits/detail/unguarded/function_ptr_2.hpp [2:2]
+ boost/callable_traits/detail/unguarded/function_ptr_varargs_2.hpp [2:2]
+ boost/callable_traits/detail/unguarded/pmf_2.hpp [2:2]
+ boost/callable_traits/detail/unguarded/pmf_3.hpp [2:2]
+ boost/callable_traits/detail/unguarded/pmf_4.hpp [2:2]
+ boost/callable_traits/detail/unguarded/pmf_varargs.hpp [2:2]
+ boost/callable_traits/detail/unguarded/pmf_varargs_2.hpp [2:2]
+ boost/callable_traits/detail/unguarded/pmf_varargs_3.hpp [2:2]
+ boost/callable_traits/detail/unguarded/pmf_varargs_4.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3c3b5a72df0903cb1e8ee771593e69b5
+BELONGS ya.make
+ License text:
+ // (C) Copyright 2002-2008, Fernando Luis Cacciola Carballal.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/utility/value_init.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3c6022a5a6a98ab812ff2265a476c832
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/borland.hpp [1:5]
+ boost/config/compiler/codegear.hpp [1:5]
+ boost/config/compiler/compaq_cxx.hpp [1:3]
+ boost/config/compiler/gcc.hpp [1:9]
+ boost/config/compiler/hp_acc.hpp [1:8]
+ boost/config/compiler/vacpp.hpp [1:7]
+ boost/config/compiler/visualc.hpp [1:8]
+ boost/config/detail/posix_features.hpp [1:3]
+ boost/config/detail/select_compiler_config.hpp [3:5]
+ boost/config/detail/select_stdlib_config.hpp [3:6]
+ boost/config/platform/bsd.hpp [1:5]
+ boost/config/platform/cygwin.hpp [1:3]
+ boost/config/platform/hpux.hpp [1:7]
+ boost/config/platform/irix.hpp [1:4]
+ boost/config/platform/linux.hpp [1:4]
+ boost/config/platform/macos.hpp [1:5]
+ boost/config/platform/solaris.hpp [1:4]
+ boost/config/platform/symbian.hpp [1:5]
+ boost/config/platform/win32.hpp [1:6]
+ boost/config/stdlib/dinkumware.hpp [1:7]
+ boost/config/stdlib/roguewave.hpp [1:6]
+ boost/config/stdlib/sgi.hpp [1:5]
+ boost/filesystem/detail/macro_value.hpp [3:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3c61b80726a42fa5277b95ae5fe62fe2
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001-2011 Hartmut Kaiser
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/karma.hpp [1:1]
+ boost/spirit/home/karma/action.hpp [1:1]
+ boost/spirit/home/karma/action/action.hpp [1:1]
+ boost/spirit/home/karma/auto.hpp [1:1]
+ boost/spirit/home/karma/auto/auto.hpp [1:1]
+ boost/spirit/home/karma/auto/create_generator.hpp [1:1]
+ boost/spirit/home/karma/auto/meta_create.hpp [1:1]
+ boost/spirit/home/karma/auxiliary.hpp [1:1]
+ boost/spirit/home/karma/auxiliary/attr_cast.hpp [1:1]
+ boost/spirit/home/karma/auxiliary/eol.hpp [1:1]
+ boost/spirit/home/karma/auxiliary/eps.hpp [1:1]
+ boost/spirit/home/karma/auxiliary/lazy.hpp [1:2]
+ boost/spirit/home/karma/binary.hpp [1:1]
+ boost/spirit/home/karma/binary/binary.hpp [1:1]
+ boost/spirit/home/karma/binary/padding.hpp [1:1]
+ boost/spirit/home/karma/char.hpp [1:1]
+ boost/spirit/home/karma/char/char.hpp [1:2]
+ boost/spirit/home/karma/char/char_class.hpp [1:1]
+ boost/spirit/home/karma/char/char_generator.hpp [1:2]
+ boost/spirit/home/karma/delimit_flag.hpp [1:1]
+ boost/spirit/home/karma/delimit_out.hpp [1:1]
+ boost/spirit/home/karma/detail/alternative_function.hpp [1:2]
+ boost/spirit/home/karma/detail/as.hpp [1:1]
+ boost/spirit/home/karma/detail/attributes.hpp [1:2]
+ boost/spirit/home/karma/detail/default_width.hpp [1:1]
+ boost/spirit/home/karma/detail/enable_lit.hpp [1:1]
+ boost/spirit/home/karma/detail/extract_from.hpp [1:1]
+ boost/spirit/home/karma/detail/fail_function.hpp [1:2]
+ boost/spirit/home/karma/detail/generate.hpp [1:1]
+ boost/spirit/home/karma/detail/generate_auto.hpp [1:1]
+ boost/spirit/home/karma/detail/generate_to.hpp [1:1]
+ boost/spirit/home/karma/detail/get_casetag.hpp [1:2]
+ boost/spirit/home/karma/detail/get_stricttag.hpp [1:1]
+ boost/spirit/home/karma/detail/indirect_iterator.hpp [1:1]
+ boost/spirit/home/karma/detail/output_iterator.hpp [1:1]
+ boost/spirit/home/karma/detail/pass_container.hpp [2:3]
+ boost/spirit/home/karma/detail/string_compare.hpp [1:1]
+ boost/spirit/home/karma/detail/string_generate.hpp [1:1]
+ boost/spirit/home/karma/detail/unused_delimiter.hpp [1:1]
+ boost/spirit/home/karma/directive.hpp [1:1]
+ boost/spirit/home/karma/directive/as.hpp [1:2]
+ boost/spirit/home/karma/directive/buffer.hpp [1:1]
+ boost/spirit/home/karma/directive/center_alignment.hpp [1:1]
+ boost/spirit/home/karma/directive/columns.hpp [1:1]
+ boost/spirit/home/karma/directive/delimit.hpp [1:1]
+ boost/spirit/home/karma/directive/duplicate.hpp [1:1]
+ boost/spirit/home/karma/directive/encoding.hpp [1:2]
+ boost/spirit/home/karma/directive/left_alignment.hpp [1:1]
+ boost/spirit/home/karma/directive/maxwidth.hpp [1:1]
+ boost/spirit/home/karma/directive/no_delimit.hpp [1:1]
+ boost/spirit/home/karma/directive/omit.hpp [1:1]
+ boost/spirit/home/karma/directive/repeat.hpp [1:2]
+ boost/spirit/home/karma/directive/right_alignment.hpp [1:1]
+ boost/spirit/home/karma/directive/strict_relaxed.hpp [1:1]
+ boost/spirit/home/karma/directive/upper_lower_case.hpp [1:2]
+ boost/spirit/home/karma/directive/verbatim.hpp [1:1]
+ boost/spirit/home/karma/domain.hpp [1:2]
+ boost/spirit/home/karma/format.hpp [1:1]
+ boost/spirit/home/karma/format_auto.hpp [1:1]
+ boost/spirit/home/karma/generate.hpp [1:1]
+ boost/spirit/home/karma/generate_attr.hpp [1:1]
+ boost/spirit/home/karma/generator.hpp [1:2]
+ boost/spirit/home/karma/meta_compiler.hpp [1:2]
+ boost/spirit/home/karma/nonterminal.hpp [1:1]
+ boost/spirit/home/karma/nonterminal/debug_handler.hpp [1:2]
+ boost/spirit/home/karma/nonterminal/debug_handler_state.hpp [1:1]
+ boost/spirit/home/karma/nonterminal/detail/fcall.hpp [1:2]
+ boost/spirit/home/karma/nonterminal/detail/generator_binder.hpp [1:2]
+ boost/spirit/home/karma/nonterminal/detail/parameterized.hpp [1:3]
+ boost/spirit/home/karma/nonterminal/grammar.hpp [1:2]
+ boost/spirit/home/karma/nonterminal/nonterminal_fwd.hpp [1:1]
+ boost/spirit/home/karma/nonterminal/rule.hpp [1:2]
+ boost/spirit/home/karma/nonterminal/simple_trace.hpp [1:2]
+ boost/spirit/home/karma/numeric.hpp [1:1]
+ boost/spirit/home/karma/numeric/bool.hpp [1:1]
+ boost/spirit/home/karma/numeric/bool_policies.hpp [1:1]
+ boost/spirit/home/karma/numeric/detail/bool_utils.hpp [1:1]
+ boost/spirit/home/karma/numeric/detail/numeric_utils.hpp [1:1]
+ boost/spirit/home/karma/numeric/detail/real_utils.hpp [1:1]
+ boost/spirit/home/karma/numeric/real.hpp [1:1]
+ boost/spirit/home/karma/numeric/real_policies.hpp [1:1]
+ boost/spirit/home/karma/numeric/uint.hpp [1:1]
+ boost/spirit/home/karma/operator.hpp [1:1]
+ boost/spirit/home/karma/operator/alternative.hpp [1:2]
+ boost/spirit/home/karma/operator/and_predicate.hpp [1:2]
+ boost/spirit/home/karma/operator/kleene.hpp [1:2]
+ boost/spirit/home/karma/operator/list.hpp [1:2]
+ boost/spirit/home/karma/operator/not_predicate.hpp [1:2]
+ boost/spirit/home/karma/operator/optional.hpp [1:2]
+ boost/spirit/home/karma/operator/plus.hpp [1:2]
+ boost/spirit/home/karma/operator/sequence.hpp [1:2]
+ boost/spirit/home/karma/phoenix_attributes.hpp [1:1]
+ boost/spirit/home/karma/reference.hpp [1:2]
+ boost/spirit/home/karma/stream.hpp [1:1]
+ boost/spirit/home/karma/stream/detail/format_manip.hpp [1:1]
+ boost/spirit/home/karma/stream/detail/format_manip_auto.hpp [1:1]
+ boost/spirit/home/karma/stream/detail/iterator_sink.hpp [1:1]
+ boost/spirit/home/karma/stream/format_manip.hpp [1:1]
+ boost/spirit/home/karma/stream/format_manip_attr.hpp [1:1]
+ boost/spirit/home/karma/stream/ostream_iterator.hpp [1:1]
+ boost/spirit/home/karma/stream/stream.hpp [1:1]
+ boost/spirit/home/karma/string.hpp [1:1]
+ boost/spirit/home/karma/string/lit.hpp [1:2]
+ boost/spirit/home/karma/string/symbols.hpp [1:1]
+ boost/spirit/home/karma/what.hpp [1:1]
+ boost/spirit/home/lex.hpp [1:1]
+ boost/spirit/home/lex/argument.hpp [1:4]
+ boost/spirit/home/lex/argument_phoenix.hpp [1:2]
+ boost/spirit/home/lex/detail/sequence_function.hpp [1:1]
+ boost/spirit/home/lex/domain.hpp [1:2]
+ boost/spirit/home/lex/lexer.hpp [1:1]
+ boost/spirit/home/lex/lexer/action.hpp [1:1]
+ boost/spirit/home/lex/lexer/char_token_def.hpp [1:1]
+ boost/spirit/home/lex/lexer/lexer.hpp [1:1]
+ boost/spirit/home/lex/lexer/lexertl/functor.hpp [1:1]
+ boost/spirit/home/lex/lexer/lexertl/functor_data.hpp [1:1]
+ boost/spirit/home/lex/lexer/lexertl/iterator.hpp [1:1]
+ boost/spirit/home/lex/lexer/lexertl/iterator_tokenizer.hpp [1:1]
+ boost/spirit/home/lex/lexer/lexertl/lexer.hpp [1:1]
+ boost/spirit/home/lex/lexer/lexertl/position_token.hpp [1:1]
+ boost/spirit/home/lex/lexer/lexertl/semantic_action_data.hpp [1:1]
+ boost/spirit/home/lex/lexer/lexertl/static_functor_data.hpp [1:1]
+ boost/spirit/home/lex/lexer/lexertl/static_lexer.hpp [1:1]
+ boost/spirit/home/lex/lexer/lexertl/static_version.hpp [1:1]
+ boost/spirit/home/lex/lexer/lexertl/token.hpp [1:1]
+ boost/spirit/home/lex/lexer/pass_flags.hpp [1:1]
+ boost/spirit/home/lex/lexer/sequence.hpp [1:1]
+ boost/spirit/home/lex/lexer/string_token_def.hpp [1:1]
+ boost/spirit/home/lex/lexer/support_functions.hpp [1:1]
+ boost/spirit/home/lex/lexer/support_functions_expression.hpp [1:2]
+ boost/spirit/home/lex/lexer/terminals.hpp [1:1]
+ boost/spirit/home/lex/lexer/token_def.hpp [1:1]
+ boost/spirit/home/lex/lexer_lexertl.hpp [1:1]
+ boost/spirit/home/lex/lexer_static_lexertl.hpp [1:1]
+ boost/spirit/home/lex/lexer_type.hpp [1:2]
+ boost/spirit/home/lex/meta_compiler.hpp [1:2]
+ boost/spirit/home/lex/qi.hpp [1:1]
+ boost/spirit/home/lex/qi/in_state.hpp [1:1]
+ boost/spirit/home/lex/qi/plain_raw_token.hpp [1:1]
+ boost/spirit/home/lex/qi/plain_token.hpp [1:1]
+ boost/spirit/home/lex/qi/plain_tokenid.hpp [1:1]
+ boost/spirit/home/lex/qi/plain_tokenid_mask.hpp [1:1]
+ boost/spirit/home/lex/qi/state_switcher.hpp [1:2]
+ boost/spirit/home/lex/reference.hpp [1:2]
+ boost/spirit/home/lex/tokenize_and_parse.hpp [1:1]
+ boost/spirit/home/lex/tokenize_and_parse_attr.hpp [1:3]
+ boost/spirit/home/qi/auto.hpp [2:2]
+ boost/spirit/home/qi/auto/auto.hpp [1:1]
+ boost/spirit/home/qi/auto/create_parser.hpp [1:1]
+ boost/spirit/home/qi/auto/meta_create.hpp [1:1]
+ boost/spirit/home/qi/auxiliary.hpp [2:3]
+ boost/spirit/home/qi/auxiliary/attr.hpp [2:3]
+ boost/spirit/home/qi/auxiliary/attr_cast.hpp [1:1]
+ boost/spirit/home/qi/auxiliary/eoi.hpp [2:3]
+ boost/spirit/home/qi/auxiliary/eol.hpp [2:3]
+ boost/spirit/home/qi/binary.hpp [2:2]
+ boost/spirit/home/qi/binary/binary.hpp [2:3]
+ boost/spirit/home/qi/char/char.hpp [2:4]
+ boost/spirit/home/qi/detail/alternative_function.hpp [2:2]
+ boost/spirit/home/qi/detail/attributes.hpp [1:2]
+ boost/spirit/home/qi/detail/enable_lit.hpp [1:1]
+ boost/spirit/home/qi/detail/parse.hpp [2:2]
+ boost/spirit/home/qi/detail/parse_auto.hpp [2:2]
+ boost/spirit/home/qi/detail/pass_container.hpp [2:3]
+ boost/spirit/home/qi/detail/unused_skipper.hpp [1:1]
+ boost/spirit/home/qi/directive/as.hpp [2:4]
+ boost/spirit/home/qi/directive/matches.hpp [2:2]
+ boost/spirit/home/qi/directive/no_skip.hpp [2:3]
+ boost/spirit/home/qi/directive/repeat.hpp [2:3]
+ boost/spirit/home/qi/match.hpp [1:1]
+ boost/spirit/home/qi/match_auto.hpp [1:1]
+ boost/spirit/home/qi/nonterminal/nonterminal_fwd.hpp [1:1]
+ boost/spirit/home/qi/nonterminal/simple_trace.hpp [2:3]
+ boost/spirit/home/qi/numeric/bool.hpp [2:3]
+ boost/spirit/home/qi/numeric/bool_policies.hpp [2:2]
+ boost/spirit/home/qi/numeric/detail/numeric_utils.hpp [2:6]
+ boost/spirit/home/qi/numeric/real_policies.hpp [2:3]
+ boost/spirit/home/qi/operator/alternative.hpp [2:3]
+ boost/spirit/home/qi/operator/expect.hpp [2:3]
+ boost/spirit/home/qi/operator/kleene.hpp [2:3]
+ boost/spirit/home/qi/operator/list.hpp [2:3]
+ boost/spirit/home/qi/operator/optional.hpp [2:3]
+ boost/spirit/home/qi/operator/plus.hpp [2:3]
+ boost/spirit/home/qi/operator/sequence.hpp [2:3]
+ boost/spirit/home/qi/operator/sequence_base.hpp [2:3]
+ boost/spirit/home/qi/parse.hpp [2:3]
+ boost/spirit/home/qi/parse_attr.hpp [1:3]
+ boost/spirit/home/qi/skip_flag.hpp [2:2]
+ boost/spirit/home/qi/stream.hpp [2:2]
+ boost/spirit/home/qi/stream/detail/iterator_source.hpp [2:2]
+ boost/spirit/home/qi/stream/detail/match_manip.hpp [2:2]
+ boost/spirit/home/qi/stream/detail/match_manip_auto.hpp [2:2]
+ boost/spirit/home/qi/stream/match_manip.hpp [2:3]
+ boost/spirit/home/qi/stream/match_manip_attr.hpp [2:3]
+ boost/spirit/home/qi/stream/stream.hpp [2:2]
+ boost/spirit/home/qi/string/lit.hpp [2:4]
+ boost/spirit/home/support/adapt_adt_attributes.hpp [1:1]
+ boost/spirit/home/support/algorithm/any_if.hpp [2:3]
+ boost/spirit/home/support/algorithm/any_if_ns.hpp [2:3]
+ boost/spirit/home/support/algorithm/any_if_ns_so.hpp [2:3]
+ boost/spirit/home/support/argument.hpp [2:4]
+ boost/spirit/home/support/argument_expression.hpp [2:4]
+ boost/spirit/home/support/attributes_fwd.hpp [2:4]
+ boost/spirit/home/support/auto/meta_create.hpp [1:1]
+ boost/spirit/home/support/auxiliary/attr_cast.hpp [1:1]
+ boost/spirit/home/support/char_class.hpp [2:3]
+ boost/spirit/home/support/char_encoding/ascii.hpp [2:3]
+ boost/spirit/home/support/char_encoding/iso8859_1.hpp [2:3]
+ boost/spirit/home/support/char_encoding/standard.hpp [2:3]
+ boost/spirit/home/support/char_encoding/standard_wide.hpp [2:3]
+ boost/spirit/home/support/char_encoding/unicode.hpp [2:3]
+ boost/spirit/home/support/context.hpp [2:4]
+ boost/spirit/home/support/detail/get_encoding.hpp [1:2]
+ boost/spirit/home/support/detail/is_spirit_tag.hpp [2:2]
+ boost/spirit/home/support/handles_container.hpp [2:2]
+ boost/spirit/home/support/has_semantic_action.hpp [2:2]
+ boost/spirit/home/support/iterators/detail/buf_id_check_policy.hpp [1:2]
+ boost/spirit/home/support/iterators/detail/buffering_input_iterator_policy.hpp [1:2]
+ boost/spirit/home/support/iterators/detail/first_owner_policy.hpp [1:2]
+ boost/spirit/home/support/iterators/detail/fixed_size_queue.hpp [1:2]
+ boost/spirit/home/support/iterators/detail/fixed_size_queue_policy.hpp [1:2]
+ boost/spirit/home/support/iterators/detail/functor_input_policy.hpp [1:1]
+ boost/spirit/home/support/iterators/detail/input_iterator_policy.hpp [1:2]
+ boost/spirit/home/support/iterators/detail/istream_policy.hpp [1:2]
+ boost/spirit/home/support/iterators/detail/lex_input_policy.hpp [1:2]
+ boost/spirit/home/support/iterators/detail/multi_pass.hpp [1:2]
+ boost/spirit/home/support/iterators/detail/no_check_policy.hpp [1:2]
+ boost/spirit/home/support/iterators/detail/ref_counted_policy.hpp [1:2]
+ boost/spirit/home/support/iterators/detail/split_functor_input_policy.hpp [1:1]
+ boost/spirit/home/support/iterators/detail/split_std_deque_policy.hpp [1:2]
+ boost/spirit/home/support/iterators/istream_iterator.hpp [1:1]
+ boost/spirit/home/support/iterators/ostream_iterator.hpp [1:1]
+ boost/spirit/home/support/limits.hpp [1:1]
+ boost/spirit/home/support/multi_pass_wrapper.hpp [1:1]
+ boost/spirit/home/support/nonterminal/extract_param.hpp [2:4]
+ boost/spirit/home/support/nonterminal/locals.hpp [2:3]
+ boost/spirit/home/support/numeric_traits.hpp [1:1]
+ boost/spirit/home/support/string_traits.hpp [2:4]
+ boost/spirit/home/support/terminal.hpp [2:4]
+ boost/spirit/home/support/terminal_expression.hpp [2:4]
+ boost/spirit/home/support/unused.hpp [2:3]
+ boost/spirit/home/support/utree/detail/utree_detail1.hpp [2:4]
+ boost/spirit/home/support/utree/detail/utree_detail2.hpp [2:4]
+ boost/spirit/home/support/utree/operators.hpp [2:4]
+ boost/spirit/home/support/utree/utree.hpp [2:4]
+ boost/spirit/home/support/utree/utree_traits.hpp [2:4]
+ boost/spirit/home/support/utree/utree_traits_fwd.hpp [2:2]
+ boost/spirit/home/x3/auxiliary.hpp [2:3]
+ boost/spirit/home/x3/auxiliary/attr.hpp [2:4]
+ boost/spirit/home/x3/auxiliary/eoi.hpp [2:3]
+ boost/spirit/home/x3/auxiliary/eol.hpp [2:3]
+ boost/spirit/home/x3/binary.hpp [2:2]
+ boost/spirit/home/x3/binary/binary.hpp [2:3]
+ boost/spirit/home/x3/char/detail/cast_char.hpp [2:3]
+ boost/spirit/home/x3/directive/matches.hpp [2:3]
+ boost/spirit/home/x3/directive/no_skip.hpp [2:4]
+ boost/spirit/home/x3/directive/repeat.hpp [2:4]
+ boost/spirit/home/x3/nonterminal/detail/transform_attribute.hpp [2:3]
+ boost/spirit/home/x3/nonterminal/simple_trace.hpp [2:3]
+ boost/spirit/home/x3/numeric/real_policies.hpp [2:3]
+ boost/spirit/home/x3/operator/kleene.hpp [2:3]
+ boost/spirit/home/x3/operator/list.hpp [2:3]
+ boost/spirit/home/x3/operator/optional.hpp [2:3]
+ boost/spirit/home/x3/operator/plus.hpp [2:3]
+ boost/spirit/home/x3/support/numeric_utils/detail/extract_int.hpp [2:6]
+ boost/spirit/home/x3/support/traits/handles_container.hpp [2:3]
+ boost/spirit/home/x3/support/traits/numeric_traits.hpp [2:2]
+ boost/spirit/home/x3/support/traits/print_attribute.hpp [2:3]
+ boost/spirit/home/x3/support/traits/print_token.hpp [2:3]
+ boost/spirit/home/x3/support/traits/string_traits.hpp [2:4]
+ boost/spirit/home/x3/support/unused.hpp [2:3]
+ boost/spirit/repository/home/karma.hpp [1:2]
+ boost/spirit/repository/home/karma/directive.hpp [1:2]
+ boost/spirit/repository/home/karma/directive/confix.hpp [1:1]
+ boost/spirit/repository/home/karma/nonterminal.hpp [1:3]
+ boost/spirit/repository/home/qi.hpp [1:2]
+ boost/spirit/repository/home/qi/directive.hpp [1:2]
+ boost/spirit/repository/home/qi/directive/distinct.hpp [1:3]
+ boost/spirit/repository/home/qi/nonterminal.hpp [1:3]
+ boost/spirit/repository/home/qi/operator.hpp [1:3]
+ boost/spirit/repository/home/qi/primitive.hpp [1:2]
+ boost/spirit/repository/home/qi/primitive/flush_multi_pass.hpp [1:1]
+ boost/spirit/repository/home/qi/primitive/iter_pos.hpp [1:1]
+ boost/spirit/repository/home/support/confix.hpp [1:1]
+ boost/spirit/repository/home/support/distinct.hpp [1:1]
+ boost/spirit/repository/home/support/flush_multi_pass.hpp [1:1]
+ boost/spirit/repository/include/karma_nonterminal.hpp [2:5]
+ boost/spirit/repository/include/karma_subrule.hpp [2:5]
+ boost/spirit/repository/include/qi_keywords.hpp [2:5]
+ boost/spirit/repository/include/qi_kwd.hpp [2:5]
+ boost/spirit/repository/include/qi_kwd.hpp [21:24]
+ boost/spirit/repository/include/qi_subrule.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3c777ac4a9b304db66b4f876282e72d9
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2012-2013 Adam Wulkiewicz, Lodz, Poland.
+ // Copyright (c) 2011-2013 Andrew Hundt.
+ // Copyright (c) 2013-2014 Ion Gaztanaga
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/container/static_vector.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3c95823257cd1a88177b78d8469c4f71
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/mpi/cartesian_communicator.hpp at line 3, boost/mpi/detail/antiques.hpp at line 3, boost/mpi/detail/offsets.hpp at line 3
+ License text:
+ // Copyright Alain Miniussi 2014.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpi/cartesian_communicator.hpp [1:3]
+ boost/mpi/detail/antiques.hpp [1:3]
+ boost/mpi/detail/offsets.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3ca4379da2fa49ccbaaf67782ff8bd4f
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001 Peter Dimov and Multi Media Ltd.
+ // Copyright (c) 2008 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/bind/bind_mf2_cc.hpp [6:7]
+ boost/detail/lightweight_thread.hpp [12:13]
+ boost/interprocess/detail/os_thread_functions.hpp [15:16]
+ boost/smart_ptr/detail/spinlock.hpp [13:13]
+ boost/smart_ptr/detail/spinlock_nt.hpp [11:11]
+ boost/smart_ptr/detail/spinlock_pool.hpp [13:13]
+ boost/smart_ptr/detail/spinlock_pt.hpp [11:11]
+ boost/smart_ptr/detail/spinlock_sync.hpp [11:11]
+ boost/smart_ptr/detail/spinlock_w32.hpp [11:11]
+ boost/smart_ptr/detail/yield_k.hpp [13:14]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3cd360abef8724897bbe8fc29b446350
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/platform/windows_server.h at line 4, boost/predef/platform/windows_system.h at line 4, boost/predef/platform/windows_uwp.h at line 4
+ License text:
+ Copyright James E. King III, 2017
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/predef/platform/windows_server.h [2:4]
+ boost/predef/platform/windows_system.h [2:4]
+ boost/predef/platform/windows_uwp.h [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3d5351e8355a6ae64e654a6990c80b75
+BELONGS ya.make
+ License text:
+ * Copyright (c) 2010 Helge Bahmann
+ * Copyright (c) 2013 Tim Blechmann
+ * Copyright (c) 2014 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/atomic/detail/caps_gcc_sparc.hpp [6:8]
+ boost/atomic/detail/ops_gcc_sparc.hpp [6:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3d5daf332c9f492e493162df1943f759
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/tti/detail/dcomp_mem_fun.hpp at line 4, boost/tti/detail/dmem_data.hpp at line 4, boost/tti/detail/dmem_fun.hpp at line 4, boost/tti/detail/dmem_type.hpp at line 4, boost/tti/detail/dptmf.hpp at line 4, boost/tti/detail/dstatic_mem_data.hpp at line 4, boost/tti/detail/dstatic_mem_fun.hpp at line 4, boost/tti/detail/dtclass.hpp at line 4, boost/tti/detail/dtemplate.hpp at line 4, boost/tti/detail/dtemplate_params.hpp at line 4, boost/tti/detail/dtfunction.hpp at line 4, boost/tti/detail/dtype.hpp at line 4, boost/tti/detail/dvm_template_params.hpp at line 4, boost/tti/has_member_data.hpp at line 4, boost/tti/has_member_function.hpp at line 4, boost/tti/has_static_member_data.hpp at line 4, boost/tti/has_static_member_function.hpp at line 4, boost/tti/has_type.hpp at line 4, boost/tti/member_type.hpp at line 4
+ License text:
+ // (C) Copyright Edward Diener 2011,2012,2013
+ // Use, modification and distribution are subject to the Boost Software License,
+ // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/tti/detail/dcomp_mem_fun.hpp [2:4]
+ boost/tti/detail/dmem_data.hpp [2:4]
+ boost/tti/detail/dmem_fun.hpp [2:4]
+ boost/tti/detail/dmem_type.hpp [2:4]
+ boost/tti/detail/dptmf.hpp [2:4]
+ boost/tti/detail/dstatic_mem_data.hpp [2:4]
+ boost/tti/detail/dstatic_mem_fun.hpp [2:4]
+ boost/tti/detail/dtclass.hpp [2:4]
+ boost/tti/detail/dtemplate.hpp [2:4]
+ boost/tti/detail/dtemplate_params.hpp [2:4]
+ boost/tti/detail/dtfunction.hpp [2:4]
+ boost/tti/detail/dtype.hpp [2:4]
+ boost/tti/detail/dvm_template_params.hpp [2:4]
+ boost/tti/has_member_data.hpp [2:4]
+ boost/tti/has_member_function.hpp [2:4]
+ boost/tti/has_static_member_data.hpp [2:4]
+ boost/tti/has_static_member_function.hpp [2:4]
+ boost/tti/has_type.hpp [2:4]
+ boost/tti/member_type.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3d663bf6c460716f91893dd36efd47a3
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2012-2013 Adam Wulkiewicz, Lodz, Poland.
+ // Copyright (c) 2011-2013 Andrew Hundt.
+ // Copyright (c) 2013-2014 Ion Gaztanaga
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/container/static_vector.hpp [3:5]
+ boost/geometry/index/detail/varray.hpp [3:4]
+ boost/geometry/index/detail/varray_detail.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3daf1cb1dc9e23adce33a58786a1f0f4
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container_hash/detail/float_functions.hpp at line 4, boost/container_hash/detail/limits.hpp at line 4, boost/container_hash/extensions.hpp at line 4, boost/container_hash/hash_fwd.hpp at line 4, boost/functional/hash.hpp at line 4, boost/functional/hash/hash.hpp at line 4, boost/functional/hash/hash_fwd.hpp at line 4, boost/functional/hash_fwd.hpp at line 4
+ License text:
+ // Copyright 2005-2009 Daniel James.
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/container_hash/detail/float_functions.hpp [2:4]
+ boost/container_hash/detail/limits.hpp [2:4]
+ boost/container_hash/extensions.hpp [2:4]
+ boost/container_hash/hash_fwd.hpp [2:4]
+ boost/functional/hash.hpp [2:4]
+ boost/functional/hash/hash.hpp [2:4]
+ boost/functional/hash/hash_fwd.hpp [2:4]
+ boost/functional/hash_fwd.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3dc5f8196ad6953215b74b8ff501e3d1
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2014-2017 Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/strategies/agnostic/point_in_point.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3dd399fb0e33c0a28d7e33bf73823cd3
+BELONGS ya.make
+ License text:
+ // Copyright 2005 Daniel Wallin.
+ // Copyright 2005 Joel de Guzman.
+ // Copyright 2005 Dan Marsden.
+ // Copyright 2008 Hartmut Kaiser.
+ // Copyright 2015 John Fletcher.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/phoenix/stl/algorithm/querying.hpp [1:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3e0c380c062104dfdc18c3bf4dc03287
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2010 Joel de Guzman
+ Copyright (c) 2010 Eric Niebler
+ Copyright (c) 2014-2015 John Fletcher
+ Copyright (c) 2016 Kohei Takahashi
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/phoenix/config.hpp [2:5]
+ boost/phoenix/core/actor.hpp [2:5]
+ boost/phoenix/core/argument.hpp [2:4]
+ boost/phoenix/core/arity.hpp [2:3]
+ boost/phoenix/core/detail/argument.hpp [2:4]
+ boost/phoenix/core/detail/cpp03/expression.hpp [18:20]
+ boost/phoenix/core/detail/cpp03/preprocessed/expression_10.hpp [2:4]
+ boost/phoenix/core/detail/cpp03/preprocessed/expression_20.hpp [2:4]
+ boost/phoenix/core/detail/cpp03/preprocessed/expression_30.hpp [2:4]
+ boost/phoenix/core/detail/cpp03/preprocessed/expression_40.hpp [2:4]
+ boost/phoenix/core/detail/cpp03/preprocessed/expression_50.hpp [2:4]
+ boost/phoenix/core/domain.hpp [2:3]
+ boost/phoenix/core/is_nullary.hpp [2:4]
+ boost/phoenix/core/meta_grammar.hpp [2:4]
+ boost/phoenix/function/function.hpp [2:4]
+ boost/phoenix/statement/if.hpp [2:3]
+ boost/phoenix/statement/sequence.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3e16d1b440a4ce72af6366ce0b5d944c
+BELONGS libs/regex/ya.make ya.make
+ License text:
+ * Copyright (c) 1998-2004 John Maddock
+ * Copyright 2011 Garmin Ltd. or its subsidiaries
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/regex/v4/basic_regex.hpp [3:4]
+ libs/regex/src/regex.cpp [3:4]
+ libs/regex/src/regex_debug.cpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3e17a582e15583acc6ff0339c8727826
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/repetition/enum_shifted_binary_params.hpp at line 5, boost/preprocessor/slot/counter.hpp at line 5, boost/preprocessor/slot/detail/counter.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/preprocessor/repetition/enum_shifted_binary_params.hpp [3:5]
+ boost/preprocessor/slot/counter.hpp [3:5]
+ boost/preprocessor/slot/detail/counter.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3e1af80126953168abcba7ece6794e0d
+BELONGS ya.make
+ License text:
+ // (C) Copyright Jim Douglas 2005.
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/concepts/real_type_concept.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 39b86d305df61c4b16df80122d10f3af
-BELONGS ya.make
- License text:
- * Copyright (c) 2009 Helge Bahmann
- * Copyright (c) 2012 Tim Blechmann
- * Copyright (c) 2013 - 2018 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/atomic/detail/bitwise_cast.hpp [6:8]
- boost/atomic/detail/caps_gcc_x86.hpp [6:8]
- boost/atomic/detail/ops_gcc_x86.hpp [6:8]
- boost/atomic/detail/ops_gcc_x86_dcas-linux.hpp [6:8]
- boost/atomic/detail/ops_gcc_x86_dcas-osx.hpp [6:8]
- boost/atomic/detail/ops_gcc_x86_dcas.hpp [6:8]
- boost/atomic/detail/ops_msvc_arm.hpp [6:8]
- boost/atomic/detail/ops_msvc_common.hpp [6:8]
- boost/atomic/detail/ops_msvc_x86.hpp [6:8]
- boost/atomic/detail/ops_windows.hpp [6:8]
- boost/atomic/detail/storage_type.hpp [6:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 39ee4bcf7a682976231db184fa7886d3
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/unordered/detail/fwd.hpp at line 4
- License text:
- // Copyright (C) 2008-2016 Daniel James.
- // Distributed under the Boost Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/unordered/detail/fwd.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 39f186083461682d70be78cbf83e9b85
-BELONGS ya.make
- License text:
- // (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
- // Howard Hinnant and John Maddock 2000.
- // (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 2001
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_traits/is_const.hpp [2:4]
- boost/type_traits/is_lvalue_reference.hpp [2:4]
- boost/type_traits/is_member_pointer.hpp [2:4]
- boost/type_traits/is_pointer.hpp [2:4]
- boost/type_traits/is_reference.hpp [2:4]
- boost/type_traits/is_same.hpp [2:4]
- boost/type_traits/is_volatile.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3a101448ab7ea5bb06f1fbcf1a910852
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/array/detail/get_data.hpp at line 6, boost/preprocessor/array/push_back.hpp at line 6, boost/preprocessor/array/push_front.hpp at line 6, boost/preprocessor/facilities/detail/is_empty.hpp at line 6, boost/preprocessor/facilities/is_empty.hpp at line 6, boost/preprocessor/facilities/is_empty_variadic.hpp at line 6, boost/preprocessor/punctuation/detail/is_begin_parens.hpp at line 6, boost/preprocessor/punctuation/is_begin_parens.hpp at line 6, boost/preprocessor/punctuation/remove_parens.hpp at line 6, boost/preprocessor/tuple/detail/is_single_return.hpp at line 6, boost/preprocessor/variadic/detail/is_single_return.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/preprocessor/array/detail/get_data.hpp [3:5]
- boost/preprocessor/array/push_back.hpp [3:6]
- boost/preprocessor/array/push_front.hpp [3:6]
- boost/preprocessor/facilities/detail/is_empty.hpp [3:5]
- boost/preprocessor/facilities/is_empty.hpp [3:6]
- boost/preprocessor/facilities/is_empty_variadic.hpp [3:5]
- boost/preprocessor/punctuation/detail/is_begin_parens.hpp [3:5]
- boost/preprocessor/punctuation/is_begin_parens.hpp [3:5]
- boost/preprocessor/punctuation/remove_parens.hpp [3:5]
- boost/preprocessor/tuple/detail/is_single_return.hpp [3:5]
- boost/preprocessor/variadic/detail/is_single_return.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3a820fb86d894dac775a728586b31286
-BELONGS ya.make
- License text:
- // Copyright (C) 2005 Douglas Gregor.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpi/detail/computation_tree.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3ab6090aa97ef6371f6b59c9148c4ea1
-BELONGS ya.make
- License text:
- // Copyright (c) David Abrahams 2001.
- // Copyright (c) Jeremy Siek 2001-2003.
- // Copyright (c) Thomas Witt 2002.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/iterator/new_iterator_tests.hpp [5:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3abe023357779f6d901fca15ed3388fa
-BELONGS ya.make
- License text:
- Copyright (c) 2011 Hartmut Kaiser
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_function.hpp [2:2]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object.hpp [2:2]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function.hpp [2:2]
- boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr.hpp [2:2]
- boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr.hpp [2:2]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_operator.hpp [2:2]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of.hpp [2:2]
- boost/phoenix/core/detail/cpp03/preprocessed/argument.hpp [2:2]
- boost/phoenix/core/detail/cpp03/preprocessed/call.hpp [2:2]
- boost/phoenix/core/detail/cpp03/preprocessed/expression.hpp [2:2]
- boost/phoenix/core/detail/cpp03/preprocessed/function_equal.hpp [2:2]
- boost/phoenix/core/detail/cpp03/preprocessed/function_eval.hpp [2:2]
- boost/phoenix/core/detail/cpp03/preprocessed/phx2_result.hpp [2:2]
- boost/phoenix/function/detail/cpp03/preprocessed/function_operator.hpp [2:2]
- boost/phoenix/object/detail/cpp03/preprocessed/construct.hpp [2:2]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_eval.hpp [2:2]
- boost/phoenix/object/detail/cpp03/preprocessed/new.hpp [2:2]
- boost/phoenix/object/detail/cpp03/preprocessed/new_eval.hpp [2:2]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen.hpp [2:2]
- boost/phoenix/scope/detail/cpp03/preprocessed/dynamic.hpp [2:2]
- boost/phoenix/scope/detail/cpp03/preprocessed/lambda.hpp [2:2]
- boost/phoenix/statement/detail/preprocessed/catch_push_back.hpp [2:2]
- boost/phoenix/statement/detail/preprocessed/switch.hpp [2:2]
- boost/phoenix/statement/detail/preprocessed/try_catch_eval.hpp [2:2]
- boost/phoenix/statement/detail/preprocessed/try_catch_expression.hpp [2:2]
- boost/phoenix/support/preprocessed/vector.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3acc7446eae81a14ef8a0e37e54474da
-BELONGS ya.make
- License text:
- // Copyright (C) 2003-2008 Matthias Christian Schabel
- // Copyright (C) 2007-2010 Steven Watanabe
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/units/io.hpp [4:5]
- boost/units/physical_dimensions.hpp [4:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3ae48219349a0c68f53a461b05d1ea28
-BELONGS ya.make
- License text:
- Copyright 2010-2014 Mario Mulansky
- Copyright 2010-2011 Karsten Ahnert
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/external/thrust/thrust_resize.hpp [9:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3b16b7cedf0ca0a50b791ba8334e2d98
-BELONGS ya.make
- License text:
- // (C) Copyright Olaf Krzikalla 2004-2006.
- // (C) Copyright Ion Gaztanaga 2006-2014
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/intrusive/circular_list_algorithms.hpp [3:4]
- boost/intrusive/circular_slist_algorithms.hpp [3:4]
- boost/intrusive/detail/list_iterator.hpp [3:4]
- boost/intrusive/detail/list_node.hpp [3:4]
- boost/intrusive/detail/rbtree_node.hpp [3:4]
- boost/intrusive/detail/slist_iterator.hpp [3:4]
- boost/intrusive/detail/slist_node.hpp [3:4]
- boost/intrusive/linear_slist_algorithms.hpp [3:4]
- boost/intrusive/list.hpp [3:4]
- boost/intrusive/list_hook.hpp [3:4]
- boost/intrusive/rbtree_algorithms.hpp [3:4]
- boost/intrusive/set.hpp [3:4]
- boost/intrusive/set_hook.hpp [3:4]
- boost/intrusive/slist.hpp [3:4]
- boost/intrusive/slist_hook.hpp [3:4]
- boost/intrusive/unordered_set.hpp [3:4]
- boost/intrusive/unordered_set_hook.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3b219154e3b48fec8d2bee428f19860e
-BELONGS ya.make
- License text:
- * Copyright 2003 Guillaume Melquiond, Sylvain Pion
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/interval/detail/division.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3b6e3be8569ddd3a2e7d43c3cdc4ea63
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/adaptor/copied.hpp at line 5, boost/range/adaptor/tokenized.hpp at line 5
- License text:
- // Copyright Thorsten Ottosen, Neil Groves 2006. Use, modification and
- // distribution is subject to the Boost Software License, Version
- // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/range/adaptor/copied.hpp [3:5]
- boost/range/adaptor/tokenized.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3b9900d7ac5a2e20a369cd2322bd3e92
-BELONGS ya.make
- License text:
- // Copyright (C) 2015-2016 Andrzej Krzemienski.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/optional/detail/optional_reference_spec.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3b9a2b448e2da4108191c7c48d83f81b
-BELONGS ya.make
- License text:
- // Copyright 2013 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/detail/atomic_count_nt.hpp [11:11]
- boost/smart_ptr/detail/atomic_count_std_atomic.hpp [9:9]
- boost/smart_ptr/detail/sp_nullptr_t.hpp [12:12]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3be0bda1f8b025b84dcb5e929ac6425e
-BELONGS ya.make
- License text:
- Copyright (c) 2016 Barrett Adair
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/callable_traits/detail/unguarded/function.hpp [2:2]
- boost/callable_traits/detail/unguarded/function_2.hpp [2:2]
- boost/callable_traits/detail/unguarded/function_3.hpp [2:2]
- boost/callable_traits/detail/unguarded/function_ptr_2.hpp [2:2]
- boost/callable_traits/detail/unguarded/function_ptr_varargs_2.hpp [2:2]
- boost/callable_traits/detail/unguarded/pmf_2.hpp [2:2]
- boost/callable_traits/detail/unguarded/pmf_3.hpp [2:2]
- boost/callable_traits/detail/unguarded/pmf_4.hpp [2:2]
- boost/callable_traits/detail/unguarded/pmf_varargs.hpp [2:2]
- boost/callable_traits/detail/unguarded/pmf_varargs_2.hpp [2:2]
- boost/callable_traits/detail/unguarded/pmf_varargs_3.hpp [2:2]
- boost/callable_traits/detail/unguarded/pmf_varargs_4.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3c3b5a72df0903cb1e8ee771593e69b5
-BELONGS ya.make
- License text:
- // (C) Copyright 2002-2008, Fernando Luis Cacciola Carballal.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/utility/value_init.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3c6022a5a6a98ab812ff2265a476c832
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/borland.hpp [1:5]
- boost/config/compiler/codegear.hpp [1:5]
- boost/config/compiler/compaq_cxx.hpp [1:3]
- boost/config/compiler/gcc.hpp [1:9]
- boost/config/compiler/hp_acc.hpp [1:8]
- boost/config/compiler/vacpp.hpp [1:7]
- boost/config/compiler/visualc.hpp [1:8]
- boost/config/detail/posix_features.hpp [1:3]
- boost/config/detail/select_compiler_config.hpp [3:5]
- boost/config/detail/select_stdlib_config.hpp [3:6]
- boost/config/platform/bsd.hpp [1:5]
- boost/config/platform/cygwin.hpp [1:3]
- boost/config/platform/hpux.hpp [1:7]
- boost/config/platform/irix.hpp [1:4]
- boost/config/platform/linux.hpp [1:4]
- boost/config/platform/macos.hpp [1:5]
- boost/config/platform/solaris.hpp [1:4]
- boost/config/platform/symbian.hpp [1:5]
- boost/config/platform/win32.hpp [1:6]
- boost/config/stdlib/dinkumware.hpp [1:7]
- boost/config/stdlib/roguewave.hpp [1:6]
- boost/config/stdlib/sgi.hpp [1:5]
- boost/filesystem/detail/macro_value.hpp [3:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3c61b80726a42fa5277b95ae5fe62fe2
-BELONGS ya.make
- License text:
- // Copyright (c) 2001-2011 Hartmut Kaiser
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/karma.hpp [1:1]
- boost/spirit/home/karma/action.hpp [1:1]
- boost/spirit/home/karma/action/action.hpp [1:1]
- boost/spirit/home/karma/auto.hpp [1:1]
- boost/spirit/home/karma/auto/auto.hpp [1:1]
- boost/spirit/home/karma/auto/create_generator.hpp [1:1]
- boost/spirit/home/karma/auto/meta_create.hpp [1:1]
- boost/spirit/home/karma/auxiliary.hpp [1:1]
- boost/spirit/home/karma/auxiliary/attr_cast.hpp [1:1]
- boost/spirit/home/karma/auxiliary/eol.hpp [1:1]
- boost/spirit/home/karma/auxiliary/eps.hpp [1:1]
- boost/spirit/home/karma/auxiliary/lazy.hpp [1:2]
- boost/spirit/home/karma/binary.hpp [1:1]
- boost/spirit/home/karma/binary/binary.hpp [1:1]
- boost/spirit/home/karma/binary/padding.hpp [1:1]
- boost/spirit/home/karma/char.hpp [1:1]
- boost/spirit/home/karma/char/char.hpp [1:2]
- boost/spirit/home/karma/char/char_class.hpp [1:1]
- boost/spirit/home/karma/char/char_generator.hpp [1:2]
- boost/spirit/home/karma/delimit_flag.hpp [1:1]
- boost/spirit/home/karma/delimit_out.hpp [1:1]
- boost/spirit/home/karma/detail/alternative_function.hpp [1:2]
- boost/spirit/home/karma/detail/as.hpp [1:1]
- boost/spirit/home/karma/detail/attributes.hpp [1:2]
- boost/spirit/home/karma/detail/default_width.hpp [1:1]
- boost/spirit/home/karma/detail/enable_lit.hpp [1:1]
- boost/spirit/home/karma/detail/extract_from.hpp [1:1]
- boost/spirit/home/karma/detail/fail_function.hpp [1:2]
- boost/spirit/home/karma/detail/generate.hpp [1:1]
- boost/spirit/home/karma/detail/generate_auto.hpp [1:1]
- boost/spirit/home/karma/detail/generate_to.hpp [1:1]
- boost/spirit/home/karma/detail/get_casetag.hpp [1:2]
- boost/spirit/home/karma/detail/get_stricttag.hpp [1:1]
- boost/spirit/home/karma/detail/indirect_iterator.hpp [1:1]
- boost/spirit/home/karma/detail/output_iterator.hpp [1:1]
- boost/spirit/home/karma/detail/pass_container.hpp [2:3]
- boost/spirit/home/karma/detail/string_compare.hpp [1:1]
- boost/spirit/home/karma/detail/string_generate.hpp [1:1]
- boost/spirit/home/karma/detail/unused_delimiter.hpp [1:1]
- boost/spirit/home/karma/directive.hpp [1:1]
- boost/spirit/home/karma/directive/as.hpp [1:2]
- boost/spirit/home/karma/directive/buffer.hpp [1:1]
- boost/spirit/home/karma/directive/center_alignment.hpp [1:1]
- boost/spirit/home/karma/directive/columns.hpp [1:1]
- boost/spirit/home/karma/directive/delimit.hpp [1:1]
- boost/spirit/home/karma/directive/duplicate.hpp [1:1]
- boost/spirit/home/karma/directive/encoding.hpp [1:2]
- boost/spirit/home/karma/directive/left_alignment.hpp [1:1]
- boost/spirit/home/karma/directive/maxwidth.hpp [1:1]
- boost/spirit/home/karma/directive/no_delimit.hpp [1:1]
- boost/spirit/home/karma/directive/omit.hpp [1:1]
- boost/spirit/home/karma/directive/repeat.hpp [1:2]
- boost/spirit/home/karma/directive/right_alignment.hpp [1:1]
- boost/spirit/home/karma/directive/strict_relaxed.hpp [1:1]
- boost/spirit/home/karma/directive/upper_lower_case.hpp [1:2]
- boost/spirit/home/karma/directive/verbatim.hpp [1:1]
- boost/spirit/home/karma/domain.hpp [1:2]
- boost/spirit/home/karma/format.hpp [1:1]
- boost/spirit/home/karma/format_auto.hpp [1:1]
- boost/spirit/home/karma/generate.hpp [1:1]
- boost/spirit/home/karma/generate_attr.hpp [1:1]
- boost/spirit/home/karma/generator.hpp [1:2]
- boost/spirit/home/karma/meta_compiler.hpp [1:2]
- boost/spirit/home/karma/nonterminal.hpp [1:1]
- boost/spirit/home/karma/nonterminal/debug_handler.hpp [1:2]
- boost/spirit/home/karma/nonterminal/debug_handler_state.hpp [1:1]
- boost/spirit/home/karma/nonterminal/detail/fcall.hpp [1:2]
- boost/spirit/home/karma/nonterminal/detail/generator_binder.hpp [1:2]
- boost/spirit/home/karma/nonterminal/detail/parameterized.hpp [1:3]
- boost/spirit/home/karma/nonterminal/grammar.hpp [1:2]
- boost/spirit/home/karma/nonterminal/nonterminal_fwd.hpp [1:1]
- boost/spirit/home/karma/nonterminal/rule.hpp [1:2]
- boost/spirit/home/karma/nonterminal/simple_trace.hpp [1:2]
- boost/spirit/home/karma/numeric.hpp [1:1]
- boost/spirit/home/karma/numeric/bool.hpp [1:1]
- boost/spirit/home/karma/numeric/bool_policies.hpp [1:1]
- boost/spirit/home/karma/numeric/detail/bool_utils.hpp [1:1]
- boost/spirit/home/karma/numeric/detail/numeric_utils.hpp [1:1]
- boost/spirit/home/karma/numeric/detail/real_utils.hpp [1:1]
- boost/spirit/home/karma/numeric/real.hpp [1:1]
- boost/spirit/home/karma/numeric/real_policies.hpp [1:1]
- boost/spirit/home/karma/numeric/uint.hpp [1:1]
- boost/spirit/home/karma/operator.hpp [1:1]
- boost/spirit/home/karma/operator/alternative.hpp [1:2]
- boost/spirit/home/karma/operator/and_predicate.hpp [1:2]
- boost/spirit/home/karma/operator/kleene.hpp [1:2]
- boost/spirit/home/karma/operator/list.hpp [1:2]
- boost/spirit/home/karma/operator/not_predicate.hpp [1:2]
- boost/spirit/home/karma/operator/optional.hpp [1:2]
- boost/spirit/home/karma/operator/plus.hpp [1:2]
- boost/spirit/home/karma/operator/sequence.hpp [1:2]
- boost/spirit/home/karma/phoenix_attributes.hpp [1:1]
- boost/spirit/home/karma/reference.hpp [1:2]
- boost/spirit/home/karma/stream.hpp [1:1]
- boost/spirit/home/karma/stream/detail/format_manip.hpp [1:1]
- boost/spirit/home/karma/stream/detail/format_manip_auto.hpp [1:1]
- boost/spirit/home/karma/stream/detail/iterator_sink.hpp [1:1]
- boost/spirit/home/karma/stream/format_manip.hpp [1:1]
- boost/spirit/home/karma/stream/format_manip_attr.hpp [1:1]
- boost/spirit/home/karma/stream/ostream_iterator.hpp [1:1]
- boost/spirit/home/karma/stream/stream.hpp [1:1]
- boost/spirit/home/karma/string.hpp [1:1]
- boost/spirit/home/karma/string/lit.hpp [1:2]
- boost/spirit/home/karma/string/symbols.hpp [1:1]
- boost/spirit/home/karma/what.hpp [1:1]
- boost/spirit/home/lex.hpp [1:1]
- boost/spirit/home/lex/argument.hpp [1:4]
- boost/spirit/home/lex/argument_phoenix.hpp [1:2]
- boost/spirit/home/lex/detail/sequence_function.hpp [1:1]
- boost/spirit/home/lex/domain.hpp [1:2]
- boost/spirit/home/lex/lexer.hpp [1:1]
- boost/spirit/home/lex/lexer/action.hpp [1:1]
- boost/spirit/home/lex/lexer/char_token_def.hpp [1:1]
- boost/spirit/home/lex/lexer/lexer.hpp [1:1]
- boost/spirit/home/lex/lexer/lexertl/functor.hpp [1:1]
- boost/spirit/home/lex/lexer/lexertl/functor_data.hpp [1:1]
- boost/spirit/home/lex/lexer/lexertl/iterator.hpp [1:1]
- boost/spirit/home/lex/lexer/lexertl/iterator_tokenizer.hpp [1:1]
- boost/spirit/home/lex/lexer/lexertl/lexer.hpp [1:1]
- boost/spirit/home/lex/lexer/lexertl/position_token.hpp [1:1]
- boost/spirit/home/lex/lexer/lexertl/semantic_action_data.hpp [1:1]
- boost/spirit/home/lex/lexer/lexertl/static_functor_data.hpp [1:1]
- boost/spirit/home/lex/lexer/lexertl/static_lexer.hpp [1:1]
- boost/spirit/home/lex/lexer/lexertl/static_version.hpp [1:1]
- boost/spirit/home/lex/lexer/lexertl/token.hpp [1:1]
- boost/spirit/home/lex/lexer/pass_flags.hpp [1:1]
- boost/spirit/home/lex/lexer/sequence.hpp [1:1]
- boost/spirit/home/lex/lexer/string_token_def.hpp [1:1]
- boost/spirit/home/lex/lexer/support_functions.hpp [1:1]
- boost/spirit/home/lex/lexer/support_functions_expression.hpp [1:2]
- boost/spirit/home/lex/lexer/terminals.hpp [1:1]
- boost/spirit/home/lex/lexer/token_def.hpp [1:1]
- boost/spirit/home/lex/lexer_lexertl.hpp [1:1]
- boost/spirit/home/lex/lexer_static_lexertl.hpp [1:1]
- boost/spirit/home/lex/lexer_type.hpp [1:2]
- boost/spirit/home/lex/meta_compiler.hpp [1:2]
- boost/spirit/home/lex/qi.hpp [1:1]
- boost/spirit/home/lex/qi/in_state.hpp [1:1]
- boost/spirit/home/lex/qi/plain_raw_token.hpp [1:1]
- boost/spirit/home/lex/qi/plain_token.hpp [1:1]
- boost/spirit/home/lex/qi/plain_tokenid.hpp [1:1]
- boost/spirit/home/lex/qi/plain_tokenid_mask.hpp [1:1]
- boost/spirit/home/lex/qi/state_switcher.hpp [1:2]
- boost/spirit/home/lex/reference.hpp [1:2]
- boost/spirit/home/lex/tokenize_and_parse.hpp [1:1]
- boost/spirit/home/lex/tokenize_and_parse_attr.hpp [1:3]
- boost/spirit/home/qi/auto.hpp [2:2]
- boost/spirit/home/qi/auto/auto.hpp [1:1]
- boost/spirit/home/qi/auto/create_parser.hpp [1:1]
- boost/spirit/home/qi/auto/meta_create.hpp [1:1]
- boost/spirit/home/qi/auxiliary.hpp [2:3]
- boost/spirit/home/qi/auxiliary/attr.hpp [2:3]
- boost/spirit/home/qi/auxiliary/attr_cast.hpp [1:1]
- boost/spirit/home/qi/auxiliary/eoi.hpp [2:3]
- boost/spirit/home/qi/auxiliary/eol.hpp [2:3]
- boost/spirit/home/qi/binary.hpp [2:2]
- boost/spirit/home/qi/binary/binary.hpp [2:3]
- boost/spirit/home/qi/char/char.hpp [2:4]
- boost/spirit/home/qi/detail/alternative_function.hpp [2:2]
- boost/spirit/home/qi/detail/attributes.hpp [1:2]
- boost/spirit/home/qi/detail/enable_lit.hpp [1:1]
- boost/spirit/home/qi/detail/parse.hpp [2:2]
- boost/spirit/home/qi/detail/parse_auto.hpp [2:2]
- boost/spirit/home/qi/detail/pass_container.hpp [2:3]
- boost/spirit/home/qi/detail/unused_skipper.hpp [1:1]
- boost/spirit/home/qi/directive/as.hpp [2:4]
- boost/spirit/home/qi/directive/matches.hpp [2:2]
- boost/spirit/home/qi/directive/no_skip.hpp [2:3]
- boost/spirit/home/qi/directive/repeat.hpp [2:3]
- boost/spirit/home/qi/match.hpp [1:1]
- boost/spirit/home/qi/match_auto.hpp [1:1]
- boost/spirit/home/qi/nonterminal/nonterminal_fwd.hpp [1:1]
- boost/spirit/home/qi/nonterminal/simple_trace.hpp [2:3]
- boost/spirit/home/qi/numeric/bool.hpp [2:3]
- boost/spirit/home/qi/numeric/bool_policies.hpp [2:2]
- boost/spirit/home/qi/numeric/detail/numeric_utils.hpp [2:6]
- boost/spirit/home/qi/numeric/real_policies.hpp [2:3]
- boost/spirit/home/qi/operator/alternative.hpp [2:3]
- boost/spirit/home/qi/operator/expect.hpp [2:3]
- boost/spirit/home/qi/operator/kleene.hpp [2:3]
- boost/spirit/home/qi/operator/list.hpp [2:3]
- boost/spirit/home/qi/operator/optional.hpp [2:3]
- boost/spirit/home/qi/operator/plus.hpp [2:3]
- boost/spirit/home/qi/operator/sequence.hpp [2:3]
- boost/spirit/home/qi/operator/sequence_base.hpp [2:3]
- boost/spirit/home/qi/parse.hpp [2:3]
- boost/spirit/home/qi/parse_attr.hpp [1:3]
- boost/spirit/home/qi/skip_flag.hpp [2:2]
- boost/spirit/home/qi/stream.hpp [2:2]
- boost/spirit/home/qi/stream/detail/iterator_source.hpp [2:2]
- boost/spirit/home/qi/stream/detail/match_manip.hpp [2:2]
- boost/spirit/home/qi/stream/detail/match_manip_auto.hpp [2:2]
- boost/spirit/home/qi/stream/match_manip.hpp [2:3]
- boost/spirit/home/qi/stream/match_manip_attr.hpp [2:3]
- boost/spirit/home/qi/stream/stream.hpp [2:2]
- boost/spirit/home/qi/string/lit.hpp [2:4]
- boost/spirit/home/support/adapt_adt_attributes.hpp [1:1]
- boost/spirit/home/support/algorithm/any_if.hpp [2:3]
- boost/spirit/home/support/algorithm/any_if_ns.hpp [2:3]
- boost/spirit/home/support/algorithm/any_if_ns_so.hpp [2:3]
- boost/spirit/home/support/argument.hpp [2:4]
- boost/spirit/home/support/argument_expression.hpp [2:4]
- boost/spirit/home/support/attributes_fwd.hpp [2:4]
- boost/spirit/home/support/auto/meta_create.hpp [1:1]
- boost/spirit/home/support/auxiliary/attr_cast.hpp [1:1]
- boost/spirit/home/support/char_class.hpp [2:3]
- boost/spirit/home/support/char_encoding/ascii.hpp [2:3]
- boost/spirit/home/support/char_encoding/iso8859_1.hpp [2:3]
- boost/spirit/home/support/char_encoding/standard.hpp [2:3]
- boost/spirit/home/support/char_encoding/standard_wide.hpp [2:3]
- boost/spirit/home/support/char_encoding/unicode.hpp [2:3]
- boost/spirit/home/support/context.hpp [2:4]
- boost/spirit/home/support/detail/get_encoding.hpp [1:2]
- boost/spirit/home/support/detail/is_spirit_tag.hpp [2:2]
- boost/spirit/home/support/handles_container.hpp [2:2]
- boost/spirit/home/support/has_semantic_action.hpp [2:2]
- boost/spirit/home/support/iterators/detail/buf_id_check_policy.hpp [1:2]
- boost/spirit/home/support/iterators/detail/buffering_input_iterator_policy.hpp [1:2]
- boost/spirit/home/support/iterators/detail/first_owner_policy.hpp [1:2]
- boost/spirit/home/support/iterators/detail/fixed_size_queue.hpp [1:2]
- boost/spirit/home/support/iterators/detail/fixed_size_queue_policy.hpp [1:2]
- boost/spirit/home/support/iterators/detail/functor_input_policy.hpp [1:1]
- boost/spirit/home/support/iterators/detail/input_iterator_policy.hpp [1:2]
- boost/spirit/home/support/iterators/detail/istream_policy.hpp [1:2]
- boost/spirit/home/support/iterators/detail/lex_input_policy.hpp [1:2]
- boost/spirit/home/support/iterators/detail/multi_pass.hpp [1:2]
- boost/spirit/home/support/iterators/detail/no_check_policy.hpp [1:2]
- boost/spirit/home/support/iterators/detail/ref_counted_policy.hpp [1:2]
- boost/spirit/home/support/iterators/detail/split_functor_input_policy.hpp [1:1]
- boost/spirit/home/support/iterators/detail/split_std_deque_policy.hpp [1:2]
- boost/spirit/home/support/iterators/istream_iterator.hpp [1:1]
- boost/spirit/home/support/iterators/ostream_iterator.hpp [1:1]
- boost/spirit/home/support/limits.hpp [1:1]
- boost/spirit/home/support/multi_pass_wrapper.hpp [1:1]
- boost/spirit/home/support/nonterminal/extract_param.hpp [2:4]
- boost/spirit/home/support/nonterminal/locals.hpp [2:3]
- boost/spirit/home/support/numeric_traits.hpp [1:1]
- boost/spirit/home/support/string_traits.hpp [2:4]
- boost/spirit/home/support/terminal.hpp [2:4]
- boost/spirit/home/support/terminal_expression.hpp [2:4]
- boost/spirit/home/support/unused.hpp [2:3]
- boost/spirit/home/support/utree/detail/utree_detail1.hpp [2:4]
- boost/spirit/home/support/utree/detail/utree_detail2.hpp [2:4]
- boost/spirit/home/support/utree/operators.hpp [2:4]
- boost/spirit/home/support/utree/utree.hpp [2:4]
- boost/spirit/home/support/utree/utree_traits.hpp [2:4]
- boost/spirit/home/support/utree/utree_traits_fwd.hpp [2:2]
- boost/spirit/home/x3/auxiliary.hpp [2:3]
- boost/spirit/home/x3/auxiliary/attr.hpp [2:4]
- boost/spirit/home/x3/auxiliary/eoi.hpp [2:3]
- boost/spirit/home/x3/auxiliary/eol.hpp [2:3]
- boost/spirit/home/x3/binary.hpp [2:2]
- boost/spirit/home/x3/binary/binary.hpp [2:3]
- boost/spirit/home/x3/char/detail/cast_char.hpp [2:3]
- boost/spirit/home/x3/directive/matches.hpp [2:3]
- boost/spirit/home/x3/directive/no_skip.hpp [2:4]
- boost/spirit/home/x3/directive/repeat.hpp [2:4]
- boost/spirit/home/x3/nonterminal/detail/transform_attribute.hpp [2:3]
- boost/spirit/home/x3/nonterminal/simple_trace.hpp [2:3]
- boost/spirit/home/x3/numeric/real_policies.hpp [2:3]
- boost/spirit/home/x3/operator/kleene.hpp [2:3]
- boost/spirit/home/x3/operator/list.hpp [2:3]
- boost/spirit/home/x3/operator/optional.hpp [2:3]
- boost/spirit/home/x3/operator/plus.hpp [2:3]
- boost/spirit/home/x3/support/numeric_utils/detail/extract_int.hpp [2:6]
- boost/spirit/home/x3/support/traits/handles_container.hpp [2:3]
- boost/spirit/home/x3/support/traits/numeric_traits.hpp [2:2]
- boost/spirit/home/x3/support/traits/print_attribute.hpp [2:3]
- boost/spirit/home/x3/support/traits/print_token.hpp [2:3]
- boost/spirit/home/x3/support/traits/string_traits.hpp [2:4]
- boost/spirit/home/x3/support/unused.hpp [2:3]
- boost/spirit/repository/home/karma.hpp [1:2]
- boost/spirit/repository/home/karma/directive.hpp [1:2]
- boost/spirit/repository/home/karma/directive/confix.hpp [1:1]
- boost/spirit/repository/home/karma/nonterminal.hpp [1:3]
- boost/spirit/repository/home/qi.hpp [1:2]
- boost/spirit/repository/home/qi/directive.hpp [1:2]
- boost/spirit/repository/home/qi/directive/distinct.hpp [1:3]
- boost/spirit/repository/home/qi/nonterminal.hpp [1:3]
- boost/spirit/repository/home/qi/operator.hpp [1:3]
- boost/spirit/repository/home/qi/primitive.hpp [1:2]
- boost/spirit/repository/home/qi/primitive/flush_multi_pass.hpp [1:1]
- boost/spirit/repository/home/qi/primitive/iter_pos.hpp [1:1]
- boost/spirit/repository/home/support/confix.hpp [1:1]
- boost/spirit/repository/home/support/distinct.hpp [1:1]
- boost/spirit/repository/home/support/flush_multi_pass.hpp [1:1]
- boost/spirit/repository/include/karma_nonterminal.hpp [2:5]
- boost/spirit/repository/include/karma_subrule.hpp [2:5]
- boost/spirit/repository/include/qi_keywords.hpp [2:5]
- boost/spirit/repository/include/qi_kwd.hpp [2:5]
- boost/spirit/repository/include/qi_kwd.hpp [21:24]
- boost/spirit/repository/include/qi_subrule.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3c777ac4a9b304db66b4f876282e72d9
-BELONGS ya.make
- License text:
- // Copyright (c) 2012-2013 Adam Wulkiewicz, Lodz, Poland.
- // Copyright (c) 2011-2013 Andrew Hundt.
- // Copyright (c) 2013-2014 Ion Gaztanaga
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/container/static_vector.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3c95823257cd1a88177b78d8469c4f71
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/mpi/cartesian_communicator.hpp at line 3, boost/mpi/detail/antiques.hpp at line 3, boost/mpi/detail/offsets.hpp at line 3
- License text:
- // Copyright Alain Miniussi 2014.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpi/cartesian_communicator.hpp [1:3]
- boost/mpi/detail/antiques.hpp [1:3]
- boost/mpi/detail/offsets.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3ca4379da2fa49ccbaaf67782ff8bd4f
-BELONGS ya.make
- License text:
- // Copyright (c) 2001 Peter Dimov and Multi Media Ltd.
- // Copyright (c) 2008 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/bind/bind_mf2_cc.hpp [6:7]
- boost/detail/lightweight_thread.hpp [12:13]
- boost/interprocess/detail/os_thread_functions.hpp [15:16]
- boost/smart_ptr/detail/spinlock.hpp [13:13]
- boost/smart_ptr/detail/spinlock_nt.hpp [11:11]
- boost/smart_ptr/detail/spinlock_pool.hpp [13:13]
- boost/smart_ptr/detail/spinlock_pt.hpp [11:11]
- boost/smart_ptr/detail/spinlock_sync.hpp [11:11]
- boost/smart_ptr/detail/spinlock_w32.hpp [11:11]
- boost/smart_ptr/detail/yield_k.hpp [13:14]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3cd360abef8724897bbe8fc29b446350
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/platform/windows_server.h at line 4, boost/predef/platform/windows_system.h at line 4, boost/predef/platform/windows_uwp.h at line 4
- License text:
- Copyright James E. King III, 2017
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/predef/platform/windows_server.h [2:4]
- boost/predef/platform/windows_system.h [2:4]
- boost/predef/platform/windows_uwp.h [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3d5351e8355a6ae64e654a6990c80b75
-BELONGS ya.make
- License text:
- * Copyright (c) 2010 Helge Bahmann
- * Copyright (c) 2013 Tim Blechmann
- * Copyright (c) 2014 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/atomic/detail/caps_gcc_sparc.hpp [6:8]
- boost/atomic/detail/ops_gcc_sparc.hpp [6:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3d5daf332c9f492e493162df1943f759
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/tti/detail/dcomp_mem_fun.hpp at line 4, boost/tti/detail/dmem_data.hpp at line 4, boost/tti/detail/dmem_fun.hpp at line 4, boost/tti/detail/dmem_type.hpp at line 4, boost/tti/detail/dptmf.hpp at line 4, boost/tti/detail/dstatic_mem_data.hpp at line 4, boost/tti/detail/dstatic_mem_fun.hpp at line 4, boost/tti/detail/dtclass.hpp at line 4, boost/tti/detail/dtemplate.hpp at line 4, boost/tti/detail/dtemplate_params.hpp at line 4, boost/tti/detail/dtfunction.hpp at line 4, boost/tti/detail/dtype.hpp at line 4, boost/tti/detail/dvm_template_params.hpp at line 4, boost/tti/has_member_data.hpp at line 4, boost/tti/has_member_function.hpp at line 4, boost/tti/has_static_member_data.hpp at line 4, boost/tti/has_static_member_function.hpp at line 4, boost/tti/has_type.hpp at line 4, boost/tti/member_type.hpp at line 4
- License text:
- // (C) Copyright Edward Diener 2011,2012,2013
- // Use, modification and distribution are subject to the Boost Software License,
- // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/tti/detail/dcomp_mem_fun.hpp [2:4]
- boost/tti/detail/dmem_data.hpp [2:4]
- boost/tti/detail/dmem_fun.hpp [2:4]
- boost/tti/detail/dmem_type.hpp [2:4]
- boost/tti/detail/dptmf.hpp [2:4]
- boost/tti/detail/dstatic_mem_data.hpp [2:4]
- boost/tti/detail/dstatic_mem_fun.hpp [2:4]
- boost/tti/detail/dtclass.hpp [2:4]
- boost/tti/detail/dtemplate.hpp [2:4]
- boost/tti/detail/dtemplate_params.hpp [2:4]
- boost/tti/detail/dtfunction.hpp [2:4]
- boost/tti/detail/dtype.hpp [2:4]
- boost/tti/detail/dvm_template_params.hpp [2:4]
- boost/tti/has_member_data.hpp [2:4]
- boost/tti/has_member_function.hpp [2:4]
- boost/tti/has_static_member_data.hpp [2:4]
- boost/tti/has_static_member_function.hpp [2:4]
- boost/tti/has_type.hpp [2:4]
- boost/tti/member_type.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3d663bf6c460716f91893dd36efd47a3
-BELONGS ya.make
- License text:
- // Copyright (c) 2012-2013 Adam Wulkiewicz, Lodz, Poland.
- // Copyright (c) 2011-2013 Andrew Hundt.
- // Copyright (c) 2013-2014 Ion Gaztanaga
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/container/static_vector.hpp [3:5]
- boost/geometry/index/detail/varray.hpp [3:4]
- boost/geometry/index/detail/varray_detail.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3daf1cb1dc9e23adce33a58786a1f0f4
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container_hash/detail/float_functions.hpp at line 4, boost/container_hash/detail/limits.hpp at line 4, boost/container_hash/extensions.hpp at line 4, boost/container_hash/hash_fwd.hpp at line 4, boost/functional/hash.hpp at line 4, boost/functional/hash/hash.hpp at line 4, boost/functional/hash/hash_fwd.hpp at line 4, boost/functional/hash_fwd.hpp at line 4
- License text:
- // Copyright 2005-2009 Daniel James.
- // Distributed under the Boost Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/container_hash/detail/float_functions.hpp [2:4]
- boost/container_hash/detail/limits.hpp [2:4]
- boost/container_hash/extensions.hpp [2:4]
- boost/container_hash/hash_fwd.hpp [2:4]
- boost/functional/hash.hpp [2:4]
- boost/functional/hash/hash.hpp [2:4]
- boost/functional/hash/hash_fwd.hpp [2:4]
- boost/functional/hash_fwd.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3dc5f8196ad6953215b74b8ff501e3d1
-BELONGS ya.make
- License text:
- // Copyright (c) 2014-2017 Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/strategies/agnostic/point_in_point.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3dd399fb0e33c0a28d7e33bf73823cd3
-BELONGS ya.make
- License text:
- // Copyright 2005 Daniel Wallin.
- // Copyright 2005 Joel de Guzman.
- // Copyright 2005 Dan Marsden.
- // Copyright 2008 Hartmut Kaiser.
- // Copyright 2015 John Fletcher.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/phoenix/stl/algorithm/querying.hpp [1:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3e0c380c062104dfdc18c3bf4dc03287
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2010 Joel de Guzman
- Copyright (c) 2010 Eric Niebler
- Copyright (c) 2014-2015 John Fletcher
- Copyright (c) 2016 Kohei Takahashi
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/phoenix/config.hpp [2:5]
- boost/phoenix/core/actor.hpp [2:5]
- boost/phoenix/core/argument.hpp [2:4]
- boost/phoenix/core/arity.hpp [2:3]
- boost/phoenix/core/detail/argument.hpp [2:4]
- boost/phoenix/core/detail/cpp03/expression.hpp [18:20]
- boost/phoenix/core/detail/cpp03/preprocessed/expression_10.hpp [2:4]
- boost/phoenix/core/detail/cpp03/preprocessed/expression_20.hpp [2:4]
- boost/phoenix/core/detail/cpp03/preprocessed/expression_30.hpp [2:4]
- boost/phoenix/core/detail/cpp03/preprocessed/expression_40.hpp [2:4]
- boost/phoenix/core/detail/cpp03/preprocessed/expression_50.hpp [2:4]
- boost/phoenix/core/domain.hpp [2:3]
- boost/phoenix/core/is_nullary.hpp [2:4]
- boost/phoenix/core/meta_grammar.hpp [2:4]
- boost/phoenix/function/function.hpp [2:4]
- boost/phoenix/statement/if.hpp [2:3]
- boost/phoenix/statement/sequence.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3e16d1b440a4ce72af6366ce0b5d944c
-BELONGS libs/regex/ya.make ya.make
- License text:
- * Copyright (c) 1998-2004 John Maddock
- * Copyright 2011 Garmin Ltd. or its subsidiaries
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/regex/v4/basic_regex.hpp [3:4]
- libs/regex/src/regex.cpp [3:4]
- libs/regex/src/regex_debug.cpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3e17a582e15583acc6ff0339c8727826
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/repetition/enum_shifted_binary_params.hpp at line 5, boost/preprocessor/slot/counter.hpp at line 5, boost/preprocessor/slot/detail/counter.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/preprocessor/repetition/enum_shifted_binary_params.hpp [3:5]
- boost/preprocessor/slot/counter.hpp [3:5]
- boost/preprocessor/slot/detail/counter.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3e1af80126953168abcba7ece6794e0d
-BELONGS ya.make
- License text:
- // (C) Copyright Jim Douglas 2005.
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/platform/qnxnto.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3e2898bfd0e0c23b76da51e6faea4b62
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2010 Bryce Lelbach
- Copyright (c) 2014 Tomoki Imai
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/support/iterators/line_pos_iterator.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3e4aae35b13808fc1419bbb3b0f24431
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/random/beta_distribution.hpp at line 5, boost/random/detail/polynomial.hpp at line 5, boost/random/laplace_distribution.hpp at line 5
- License text:
- * Copyright Steven Watanabe 2014
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/random/beta_distribution.hpp [3:5]
- boost/random/detail/polynomial.hpp [3:5]
- boost/random/laplace_distribution.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3e8210b2d067c6fa6eca9745ccdb03df
-BELONGS ya.make
- License text:
- // Copyright 2008
- // Author: Matyas W Egyhazy
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/metric_tsp_approx.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3ebe5469577bc9d9b871ed6f23b7567e
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/vacpp.hpp [1:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3eeaf5942d3d86ca753bc9e1493ee8f0
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/platform/win32.hpp [1:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3eeb9233d0c8faa3468506996fae389d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/compiler/common_edg.hpp at line 3, boost/config/compiler/intel.hpp at line 3, boost/config/detail/select_platform_config.hpp at line 5, boost/config/stdlib/dinkumware.hpp at line 3, boost/config/stdlib/libstdcpp3.hpp at line 3, boost/config/stdlib/modena.hpp at line 3, boost/config/stdlib/roguewave.hpp at line 3, boost/config/stdlib/stlport.hpp at line 3, boost/filesystem/detail/macro_value.hpp at line 5, boost/generator_iterator.hpp at line 3
- License text:
- // (C) Copyright Jens Maurer 2001.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/common_edg.hpp [1:7]
- boost/config/compiler/intel.hpp [1:10]
- boost/config/detail/select_platform_config.hpp [3:6]
- boost/config/stdlib/dinkumware.hpp [1:7]
- boost/config/stdlib/libstdcpp3.hpp [1:4]
- boost/config/stdlib/modena.hpp [1:3]
- boost/config/stdlib/roguewave.hpp [1:6]
- boost/config/stdlib/stlport.hpp [1:5]
- boost/filesystem/detail/macro_value.hpp [3:7]
- boost/generator_iterator.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3f74953683124ccdec5f589c930961bc
-BELONGS ya.make
- License text:
- Copyright (c) Alexander Zaitsev <zamazan4ik@gmail.by>, 2017.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/algorithm/is_partitioned_until.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3fcf5a465d4b251bec993ca09ec345f8
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2012 Joel de Guzman
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/include/qi_copy.hpp [2:3]
- boost/spirit/include/support_auto.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4047300d625348707598991c59d561ac
-BELONGS ya.make
- License text:
- * Copyright (c) 1998-2004 John Maddock
- * Copyright 2011 Garmin Ltd. or its subsidiaries
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/regex/v4/basic_regex.hpp [3:4]
- boost/regex/v4/cpp_regex_traits.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 40fc4a79a5a6233c3e12d71d3efbbf3d
-BELONGS ya.make
- License text:
- * Copyright 2010 Vicente J. Botet Escriba
- * Copyright 2015, 2017 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/winapi/event.hpp [2:3]
- boost/winapi/heap_memory.hpp [2:3]
- boost/winapi/mutex.hpp [2:3]
- boost/winapi/time.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 410d88c2deabcc121514205f7b161f95
-BELONGS ya.make
- License text:
- // (C) Copyright 2007-2010 Anthony Williams
- // (C) Copyright 2011-2012 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/detail/thread.hpp [6:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 419d0482c09d39b3ded1706d383f69bc
-BELONGS ya.make
- License text:
- Copyright (c) Marshall Clow 2017.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/algorithm/cxx17/exclusive_scan.hpp [2:2]
- boost/algorithm/cxx17/for_each_n.hpp [2:2]
- boost/algorithm/cxx17/inclusive_scan.hpp [2:2]
- boost/algorithm/cxx17/reduce.hpp [2:2]
- boost/algorithm/cxx17/transform_exclusive_scan.hpp [2:2]
- boost/algorithm/cxx17/transform_inclusive_scan.hpp [2:2]
- boost/algorithm/cxx17/transform_reduce.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 419fa76220a5a1e9495033b491e46d24
-BELONGS libs/iostreams/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iostreams/detail/system_failure.hpp at line 5, libs/iostreams/src/mapped_file.cpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/iostreams/detail/system_failure.hpp [1:5]
- libs/iostreams/src/mapped_file.cpp [1:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 41ac9dd74fc90902a3b53ae84a5fc6aa
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/allocator_traits.hpp at line 5, boost/container/scoped_allocator.hpp at line 5, boost/intrusive/pointer_traits.hpp at line 5
- License text:
- // (C) Copyright Pablo Halpern 2009. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/container/allocator_traits.hpp [3:5]
- boost/container/scoped_allocator.hpp [3:5]
- boost/intrusive/pointer_traits.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 41b036495e268c76ccf3abe1eba9c58c
-BELONGS ya.make
- License text:
- // Copyright (C) 2001-2003
- // Mac Murrett
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/detail/force_cast.hpp [1:2]
- boost/thread/detail/singleton.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 41f7c2c90271aeefb7ade2de29e316de
-BELONGS ya.make
- License text:
- * Copyright (c) 2017 - 2018 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/atomic/detail/extra_ops_gcc_arm.hpp [6:6]
- boost/atomic/detail/extra_ops_gcc_ppc.hpp [6:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 424810709457bd927fc8316235ac3e85
-BELONGS ya.make
- License text:
- Copyright 2011-2012 Mario Mulansky
- Copyright 2011-2012 Karsten Ahnert
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/algebra/array_algebra.hpp [13:14]
- boost/numeric/odeint/config.hpp [9:10]
- boost/numeric/odeint/integrate/null_observer.hpp [9:10]
- boost/numeric/odeint/integrate/observer_collection.hpp [9:10]
- boost/numeric/odeint/stepper/adams_moulton.hpp [10:12]
- boost/numeric/odeint/stepper/detail/adams_bashforth_call_algebra.hpp [9:10]
- boost/numeric/odeint/stepper/detail/adams_bashforth_coefficients.hpp [9:10]
- boost/numeric/odeint/stepper/detail/adams_moulton_call_algebra.hpp [9:10]
- boost/numeric/odeint/stepper/detail/adams_moulton_coefficients.hpp [9:10]
- boost/numeric/odeint/stepper/detail/generic_rk_algorithm.hpp [9:11]
- boost/numeric/odeint/stepper/detail/generic_rk_call_algebra.hpp [9:10]
- boost/numeric/odeint/stepper/detail/generic_rk_operations.hpp [9:10]
- boost/numeric/odeint/stepper/generation/generation_controlled_runge_kutta.hpp [9:10]
- boost/numeric/odeint/stepper/generation/generation_dense_output_runge_kutta.hpp [9:10]
- boost/numeric/odeint/stepper/generation/generation_rosenbrock4.hpp [9:10]
- boost/numeric/odeint/stepper/generation/make_controlled.hpp [9:10]
- boost/numeric/odeint/stepper/generation/make_dense_output.hpp [9:10]
- boost/numeric/odeint/stepper/rosenbrock4_controller.hpp [9:11]
- boost/numeric/odeint/stepper/rosenbrock4_dense_output.hpp [9:11]
- boost/numeric/odeint/util/copy.hpp [9:10]
- boost/numeric/odeint/util/is_resizeable.hpp [9:10]
- boost/numeric/odeint/version.hpp [9:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL 428ed72c988aa5a41b3bce1846bf3623
-BELONGS ya.make
- License text:
- // Copyright (c) 2007-2011 Barend Gehrels, Amsterdam, the Netherlands.
- // Copyright (c) 2008-2011 Bruno Lalande, Paris, France.
- // Copyright (c) 2009-2011 Mateusz Loskot, London, UK.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 42a0e4b1cd46bc22e0b4299f63e2804a
-BELONGS libs/thread/ya.make
- License text:
- // (C) Copyright 2018 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- libs/thread/src/win32/thread_primitives.cpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 42b54ba6cff5caeb1a52e89fb122c93c
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/detail/is_sorted.hpp at line 5, boost/container/node_handle.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2016-2016. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/container/detail/is_sorted.hpp [3:5]
- boost/container/node_handle.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 430a54b56b932f178c95ed08027f3b33
-BELONGS ya.make
- License text:
- // This file was modified by Oracle on 2014, 2015.
- // Modifications copyright (c) 2014-2015, Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/intersection/multi.hpp [5:6]
- boost/geometry/algorithms/length.hpp [7:8]
- boost/geometry/strategies/distance_result.hpp [9:10]
- boost/geometry/util/math.hpp [7:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 430fce41d4bc35ab3f5260a42cbede37
-BELONGS libs/date_time/ya.make ya.make
- License text:
- /* Copyright (c) 2002-2005 CrystalClear Software, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/platform/qnxnto.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3e2898bfd0e0c23b76da51e6faea4b62
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2010 Bryce Lelbach
+ Copyright (c) 2014 Tomoki Imai
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/support/iterators/line_pos_iterator.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3e4aae35b13808fc1419bbb3b0f24431
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/random/beta_distribution.hpp at line 5, boost/random/detail/polynomial.hpp at line 5, boost/random/laplace_distribution.hpp at line 5
+ License text:
+ * Copyright Steven Watanabe 2014
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/random/beta_distribution.hpp [3:5]
+ boost/random/detail/polynomial.hpp [3:5]
+ boost/random/laplace_distribution.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3e8210b2d067c6fa6eca9745ccdb03df
+BELONGS ya.make
+ License text:
+ // Copyright 2008
+ // Author: Matyas W Egyhazy
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/metric_tsp_approx.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3ebe5469577bc9d9b871ed6f23b7567e
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/vacpp.hpp [1:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3eeaf5942d3d86ca753bc9e1493ee8f0
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/platform/win32.hpp [1:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3eeb9233d0c8faa3468506996fae389d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/compiler/common_edg.hpp at line 3, boost/config/compiler/intel.hpp at line 3, boost/config/detail/select_platform_config.hpp at line 5, boost/config/stdlib/dinkumware.hpp at line 3, boost/config/stdlib/libstdcpp3.hpp at line 3, boost/config/stdlib/modena.hpp at line 3, boost/config/stdlib/roguewave.hpp at line 3, boost/config/stdlib/stlport.hpp at line 3, boost/filesystem/detail/macro_value.hpp at line 5, boost/generator_iterator.hpp at line 3
+ License text:
+ // (C) Copyright Jens Maurer 2001.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/common_edg.hpp [1:7]
+ boost/config/compiler/intel.hpp [1:10]
+ boost/config/detail/select_platform_config.hpp [3:6]
+ boost/config/stdlib/dinkumware.hpp [1:7]
+ boost/config/stdlib/libstdcpp3.hpp [1:4]
+ boost/config/stdlib/modena.hpp [1:3]
+ boost/config/stdlib/roguewave.hpp [1:6]
+ boost/config/stdlib/stlport.hpp [1:5]
+ boost/filesystem/detail/macro_value.hpp [3:7]
+ boost/generator_iterator.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3f74953683124ccdec5f589c930961bc
+BELONGS ya.make
+ License text:
+ Copyright (c) Alexander Zaitsev <zamazan4ik@gmail.by>, 2017.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/algorithm/is_partitioned_until.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3fcf5a465d4b251bec993ca09ec345f8
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2012 Joel de Guzman
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/include/qi_copy.hpp [2:3]
+ boost/spirit/include/support_auto.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4047300d625348707598991c59d561ac
+BELONGS ya.make
+ License text:
+ * Copyright (c) 1998-2004 John Maddock
+ * Copyright 2011 Garmin Ltd. or its subsidiaries
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/regex/v4/basic_regex.hpp [3:4]
+ boost/regex/v4/cpp_regex_traits.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 40fc4a79a5a6233c3e12d71d3efbbf3d
+BELONGS ya.make
+ License text:
+ * Copyright 2010 Vicente J. Botet Escriba
+ * Copyright 2015, 2017 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/winapi/event.hpp [2:3]
+ boost/winapi/heap_memory.hpp [2:3]
+ boost/winapi/mutex.hpp [2:3]
+ boost/winapi/time.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 410d88c2deabcc121514205f7b161f95
+BELONGS ya.make
+ License text:
+ // (C) Copyright 2007-2010 Anthony Williams
+ // (C) Copyright 2011-2012 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/detail/thread.hpp [6:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 419d0482c09d39b3ded1706d383f69bc
+BELONGS ya.make
+ License text:
+ Copyright (c) Marshall Clow 2017.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/algorithm/cxx17/exclusive_scan.hpp [2:2]
+ boost/algorithm/cxx17/for_each_n.hpp [2:2]
+ boost/algorithm/cxx17/inclusive_scan.hpp [2:2]
+ boost/algorithm/cxx17/reduce.hpp [2:2]
+ boost/algorithm/cxx17/transform_exclusive_scan.hpp [2:2]
+ boost/algorithm/cxx17/transform_inclusive_scan.hpp [2:2]
+ boost/algorithm/cxx17/transform_reduce.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 419fa76220a5a1e9495033b491e46d24
+BELONGS libs/iostreams/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iostreams/detail/system_failure.hpp at line 5, libs/iostreams/src/mapped_file.cpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/iostreams/detail/system_failure.hpp [1:5]
+ libs/iostreams/src/mapped_file.cpp [1:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 41ac9dd74fc90902a3b53ae84a5fc6aa
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/allocator_traits.hpp at line 5, boost/container/scoped_allocator.hpp at line 5, boost/intrusive/pointer_traits.hpp at line 5
+ License text:
+ // (C) Copyright Pablo Halpern 2009. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/container/allocator_traits.hpp [3:5]
+ boost/container/scoped_allocator.hpp [3:5]
+ boost/intrusive/pointer_traits.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 41b036495e268c76ccf3abe1eba9c58c
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2001-2003
+ // Mac Murrett
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/detail/force_cast.hpp [1:2]
+ boost/thread/detail/singleton.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 41f7c2c90271aeefb7ade2de29e316de
+BELONGS ya.make
+ License text:
+ * Copyright (c) 2017 - 2018 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/atomic/detail/extra_ops_gcc_arm.hpp [6:6]
+ boost/atomic/detail/extra_ops_gcc_ppc.hpp [6:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 424810709457bd927fc8316235ac3e85
+BELONGS ya.make
+ License text:
+ Copyright 2011-2012 Mario Mulansky
+ Copyright 2011-2012 Karsten Ahnert
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/algebra/array_algebra.hpp [13:14]
+ boost/numeric/odeint/config.hpp [9:10]
+ boost/numeric/odeint/integrate/null_observer.hpp [9:10]
+ boost/numeric/odeint/integrate/observer_collection.hpp [9:10]
+ boost/numeric/odeint/stepper/adams_moulton.hpp [10:12]
+ boost/numeric/odeint/stepper/detail/adams_bashforth_call_algebra.hpp [9:10]
+ boost/numeric/odeint/stepper/detail/adams_bashforth_coefficients.hpp [9:10]
+ boost/numeric/odeint/stepper/detail/adams_moulton_call_algebra.hpp [9:10]
+ boost/numeric/odeint/stepper/detail/adams_moulton_coefficients.hpp [9:10]
+ boost/numeric/odeint/stepper/detail/generic_rk_algorithm.hpp [9:11]
+ boost/numeric/odeint/stepper/detail/generic_rk_call_algebra.hpp [9:10]
+ boost/numeric/odeint/stepper/detail/generic_rk_operations.hpp [9:10]
+ boost/numeric/odeint/stepper/generation/generation_controlled_runge_kutta.hpp [9:10]
+ boost/numeric/odeint/stepper/generation/generation_dense_output_runge_kutta.hpp [9:10]
+ boost/numeric/odeint/stepper/generation/generation_rosenbrock4.hpp [9:10]
+ boost/numeric/odeint/stepper/generation/make_controlled.hpp [9:10]
+ boost/numeric/odeint/stepper/generation/make_dense_output.hpp [9:10]
+ boost/numeric/odeint/stepper/rosenbrock4_controller.hpp [9:11]
+ boost/numeric/odeint/stepper/rosenbrock4_dense_output.hpp [9:11]
+ boost/numeric/odeint/util/copy.hpp [9:10]
+ boost/numeric/odeint/util/is_resizeable.hpp [9:10]
+ boost/numeric/odeint/version.hpp [9:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL 428ed72c988aa5a41b3bce1846bf3623
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2007-2011 Barend Gehrels, Amsterdam, the Netherlands.
+ // Copyright (c) 2008-2011 Bruno Lalande, Paris, France.
+ // Copyright (c) 2009-2011 Mateusz Loskot, London, UK.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 42a0e4b1cd46bc22e0b4299f63e2804a
+BELONGS libs/thread/ya.make
+ License text:
+ // (C) Copyright 2018 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ libs/thread/src/win32/thread_primitives.cpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 42b54ba6cff5caeb1a52e89fb122c93c
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/detail/is_sorted.hpp at line 5, boost/container/node_handle.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2016-2016. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/container/detail/is_sorted.hpp [3:5]
+ boost/container/node_handle.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 430a54b56b932f178c95ed08027f3b33
+BELONGS ya.make
+ License text:
+ // This file was modified by Oracle on 2014, 2015.
+ // Modifications copyright (c) 2014-2015, Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/intersection/multi.hpp [5:6]
+ boost/geometry/algorithms/length.hpp [7:8]
+ boost/geometry/strategies/distance_result.hpp [9:10]
+ boost/geometry/util/math.hpp [7:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 430fce41d4bc35ab3f5260a42cbede37
+BELONGS libs/date_time/ya.make ya.make
+ License text:
+ /* Copyright (c) 2002-2005 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/date_time/date_names_put.hpp [4:6]
+ boost/date_time/posix_time/conversion.hpp [4:6]
+ boost/date_time/posix_time/posix_time.hpp [4:6]
+ libs/date_time/src/gregorian/greg_month.cpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 43184d74bb6f0a9ca9f5562808734277
+BELONGS ya.make
+ License text:
+ // Copyright 2014 Renato Tegon Forti, Antony Polukhin.
+ // Copyright 2015-2016 Antony Polukhin.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/dll.hpp [1:2]
+ boost/dll/alias.hpp [1:2]
+ boost/dll/detail/aggressive_ptr_cast.hpp [1:2]
+ boost/dll/detail/elf_info.hpp [1:2]
+ boost/dll/detail/macho_info.hpp [1:2]
+ boost/dll/detail/pe_info.hpp [1:2]
+ boost/dll/detail/posix/program_location_impl.hpp [1:2]
+ boost/dll/detail/posix/shared_library_impl.hpp [1:2]
+ boost/dll/detail/system_error.hpp [1:1]
+ boost/dll/detail/windows/path_from_handle.hpp [1:2]
+ boost/dll/detail/windows/shared_library_impl.hpp [1:2]
+ boost/dll/detail/x_info_interface.hpp [1:2]
+ boost/dll/import.hpp [1:2]
+ boost/dll/library_info.hpp [1:2]
+ boost/dll/runtime_symbol_info.hpp [1:2]
+ boost/dll/shared_library.hpp [1:2]
+ boost/dll/shared_library_load_mode.hpp [1:2]
+ boost/stacktrace/detail/void_ptr_cast.hpp [1:2]
+ boost/winapi/dll.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 43faee6d148b38cb4ab05799e5690c79
+BELONGS ya.make
+ License text:
+ // (C) Copyright Ion Gaztanaga 2010-2013
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/intrusive/parent_from_member.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4421db499a383cfc0dfc20b42f4e9b92
+BELONGS ya.make
+ License text:
+ // Copyright Beman Dawes 1994, 2006, 2008
+ // Copyright Vicente J. Botet Escriba 2009-2011
+ // Copyright Christopher Brown 2013
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/chrono/detail/inlined/mac/thread_clock.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 442f2f8f459887138123433d42ec81bf
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/fiber/algo/shared_work.hpp at line 4
+ License text:
+ // Copyright Nat Goodspeed + Oliver Kowalke 2015.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fiber/algo/shared_work.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4476312bde74e54ae89f7415fcb2f06a
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/detail/suffix.hpp at line 14
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/detail/suffix.hpp [4:14]
+
+KEEP COPYRIGHT_SERVICE_LABEL 447bbe13cee58c6f98042ebf1a79d703
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/disjoint/areal_areal.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/implementation.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/interface.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/linear_areal.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/linear_linear.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/linear_segment_or_box.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/segment_box.hpp [3:6]
+ boost/geometry/algorithms/detail/distance/backward_compatibility.hpp [3:6]
+ boost/geometry/algorithms/detail/distance/default_strategies.hpp [3:6]
+ boost/geometry/algorithms/detail/distance/implementation.hpp [3:6]
+ boost/geometry/algorithms/detail/distance/interface.hpp [3:7]
+ boost/geometry/algorithms/detail/distance/point_to_geometry.hpp [3:6]
+ boost/geometry/algorithms/detail/equals/point_point.hpp [3:6]
+ boost/geometry/algorithms/disjoint.hpp [3:6]
+ boost/geometry/algorithms/dispatch/disjoint.hpp [3:6]
+ boost/geometry/algorithms/dispatch/distance.hpp [3:6]
+ boost/geometry/algorithms/distance.hpp [3:6]
+ boost/geometry/algorithms/remove_spikes.hpp [3:6]
+ boost/geometry/policies/disjoint_interrupt_policy.hpp [3:6]
+ boost/geometry/strategies/cartesian/disjoint_segment_box.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 44d4cf6912aa70fe8c223f9152d3c3bb
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/iostreams/restrict.hpp [8:12]
+ boost/iostreams/slice.hpp [8:12]
+
+KEEP COPYRIGHT_SERVICE_LABEL 44f95982010e27ec7d1e8978f7263b0d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/archive/detail/helper_collection.hpp at line 14
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/archive/detail/helper_collection.hpp [12:14]
+
+KEEP COPYRIGHT_SERVICE_LABEL 451b638bc1cc4d0d8edae8f16c04a7a5
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/is_abstract.hpp at line 13
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_traits/is_abstract.hpp [11:13]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4558361acc5f85e157dfb7c9fc834eb1
+BELONGS ya.make
+ License text:
+ Copyright (arg) 2001-2014 Joel de Guzman
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/x3/core/action.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 458d13e6010c05b1dcca2572b1fc8217
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2010.
+ // Copyright Paul A. Bristow 2010.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/distributions/geometric.hpp [3:4]
+ boost/math/distributions/inverse_chi_squared.hpp [1:2]
+ boost/math/distributions/inverse_gamma.hpp [3:6]
+ boost/math/distributions/inverse_gaussian.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 45f740f785c84f3afefaf79c068dd3cb
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2015, Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/envelope/initialize.hpp [3:3]
+ boost/geometry/algorithms/detail/envelope/intersects_antimeridian.hpp [3:3]
+ boost/geometry/algorithms/detail/envelope/transform_units.hpp [3:3]
+ boost/geometry/algorithms/detail/expand_by_epsilon.hpp [3:3]
+ boost/geometry/algorithms/detail/is_simple/failure_policy.hpp [3:3]
+ boost/geometry/algorithms/detail/max_interval_gap.hpp [3:3]
+ boost/geometry/algorithms/detail/sweep.hpp [3:3]
+ boost/geometry/algorithms/is_empty.hpp [3:3]
+ boost/geometry/algorithms/validity_failure_type.hpp [3:3]
+ boost/geometry/policies/is_valid/default_policy.hpp [3:3]
+ boost/geometry/policies/is_valid/failing_reason_policy.hpp [3:3]
+ boost/geometry/policies/is_valid/failure_type_policy.hpp [3:3]
+ boost/geometry/policies/robustness/rescale_policy.hpp [8:8]
+ boost/geometry/util/promote_integral.hpp [3:3]
+ boost/geometry/views/detail/boundary_view.hpp [3:3]
+ boost/geometry/views/detail/boundary_view/implementation.hpp [3:3]
+ boost/geometry/views/detail/boundary_view/interface.hpp [3:3]
+ boost/geometry/views/detail/two_dimensional_view.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 463b016af48ea73c5777ee172f1606d7
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2003, Fernando Luis Cacciola Carballal.
+ // Copyright (C) 2007, Tobias Schwinger.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/utility/detail/in_place_factory_prefix.hpp [1:2]
+ boost/utility/detail/in_place_factory_suffix.hpp [1:2]
+ boost/utility/in_place_factory.hpp [1:2]
+ boost/utility/typed_in_place_factory.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 465f2d3c2e755301a28bad2a637bfebe
+BELONGS ya.make
+ License text:
+ // (C) Copyright 2006-8 Anthony Williams
+ // (C) Copyright 2011-2012,2017-2018 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/win32/basic_recursive_mutex.hpp [6:7]
+ boost/thread/win32/shared_mutex.hpp [4:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 466b8cae4ed2e64dacdfdd01d7b4a0b4
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iterator/detail/config_def.hpp at line 5, boost/iterator/detail/config_undef.hpp at line 5, boost/iterator/detail/enable_if.hpp at line 5, boost/iterator/filter_iterator.hpp at line 5, boost/iterator/indirect_iterator.hpp at line 5, boost/iterator/interoperable.hpp at line 5, boost/iterator/iterator_adaptor.hpp at line 5, boost/iterator/iterator_facade.hpp at line 5, boost/iterator/reverse_iterator.hpp at line 5, boost/iterator/transform_iterator.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/iterator/detail/config_def.hpp [1:5]
+ boost/iterator/detail/config_undef.hpp [1:3]
+ boost/iterator/detail/enable_if.hpp [1:5]
+ boost/iterator/filter_iterator.hpp [1:5]
+ boost/iterator/indirect_iterator.hpp [1:5]
+ boost/iterator/interoperable.hpp [1:5]
+ boost/iterator/iterator_adaptor.hpp [1:5]
+ boost/iterator/iterator_facade.hpp [1:5]
+ boost/iterator/reverse_iterator.hpp [1:5]
+ boost/iterator/transform_iterator.hpp [1:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4673e3c59eb568cdd3843c6e0b7a975b
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/log/detail/attachable_sstream_buf.hpp at line 4, boost/log/utility/string_literal.hpp at line 4
+ License text:
+ * Copyright Andrey Semashev 2007 - 2016.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/log/detail/attachable_sstream_buf.hpp [2:4]
+ boost/log/utility/string_literal.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4689ac45137f0bdbfe6f283f1939c73f
+BELONGS ya.make
+ License text:
+ Copyright 2009-2015 Mario Mulansky
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/stepper/extrapolation_stepper.hpp [9:9]
+
+KEEP COPYRIGHT_SERVICE_LABEL 46d9e1f8aedb16cf722125fc124d9495
+BELONGS ya.make
+ License text:
+ // (C) Copyright Douglas Gregor 2010
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/clang.hpp [1:1]
+ boost/config/compiler/xlcpp.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 46f0fb8d5862fd2118206707d7f1b83f
+BELONGS ya.make
+ License text:
+ // Copyright John R. Bandela 2001.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/token_functions.hpp [3:3]
+ boost/token_iterator.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 471d4b0a42c396158389600e3135b118
+BELONGS ya.make
+ License text:
+ // Copyright 2001 University of Notre Dame.
+ // Copyright 2003 Jeremy Siek
+ // Authors: Lie-Quan Lee, Jeremy Siek, and Douglas Gregor
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/dll_import_export.hpp [2:4]
+ boost/graph/graphviz.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 473df95368b6926b0b458aa203d049b0
+BELONGS ya.make
+ License text:
+ Copyright (c) 2015 Paul Fultz II
+ alias.h
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/hof/alias.hpp [2:4]
+ boost/hof/apply.hpp [2:4]
+ boost/hof/apply_eval.hpp [2:4]
+ boost/hof/capture.hpp [2:4]
+ boost/hof/combine.hpp [2:4]
+ boost/hof/construct.hpp [2:4]
+ boost/hof/decay.hpp [2:4]
+ boost/hof/decorate.hpp [2:4]
+ boost/hof/detail/and.hpp [2:4]
+ boost/hof/detail/callable_base.hpp [2:4]
+ boost/hof/detail/can_be_called.hpp [2:4]
+ boost/hof/detail/compressed_pair.hpp [2:4]
+ boost/hof/detail/constexpr_deduce.hpp [2:4]
+ boost/hof/detail/make.hpp [2:4]
+ boost/hof/detail/result_of.hpp [2:4]
+ boost/hof/detail/static_const_var.hpp [2:4]
+ boost/hof/eval.hpp [2:4]
+ boost/hof/flip.hpp [2:4]
+ boost/hof/flow.hpp [2:4]
+ boost/hof/fold.hpp [2:4]
+ boost/hof/if.hpp [2:4]
+ boost/hof/lift.hpp [2:4]
+ boost/hof/repeat.hpp [2:4]
+ boost/hof/repeat_while.hpp [2:4]
+ boost/hof/reverse_fold.hpp [2:4]
+ boost/hof/rotate.hpp [2:4]
+ boost/hof/unpack.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 47779174b2c82482d94f3ad0f87d0215
+BELONGS ya.make
+ License text:
+ Copyright (c) 2010-2011 Bryce Lelbach
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/detail/is_sorted.hpp [2:2]
+ boost/spirit/home/support/utree/utree.hpp [2:4]
+ boost/spirit/home/support/utree/utree_traits.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4796f0d991d5859a560e32560b6e3163
+BELONGS ya.make
+ License text:
+ // Copyright Peter Dimov and Multi Media Ltd 2001, 2002
+ // Copyright David Abrahams 2001
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/aux_/unwrap.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 47c01776d86f7e15fd4b146873ce1e38
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2002-2006 Marcin Kalicinski
+ // Copyright (C) 2009 Sebastian Redl
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/property_tree/detail/exception_implementation.hpp [2:3]
+ boost/property_tree/detail/file_parser_error.hpp [2:2]
+ boost/property_tree/detail/info_parser_error.hpp [2:2]
+ boost/property_tree/detail/info_parser_read.hpp [2:2]
+ boost/property_tree/detail/info_parser_utils.hpp [2:2]
+ boost/property_tree/detail/info_parser_write.hpp [2:2]
+ boost/property_tree/detail/info_parser_writer_settings.hpp [2:3]
+ boost/property_tree/detail/ptree_implementation.hpp [2:3]
+ boost/property_tree/detail/ptree_utils.hpp [2:2]
+ boost/property_tree/detail/xml_parser_error.hpp [2:2]
+ boost/property_tree/detail/xml_parser_flags.hpp [2:2]
+ boost/property_tree/detail/xml_parser_utils.hpp [2:2]
+ boost/property_tree/detail/xml_parser_write.hpp [2:3]
+ boost/property_tree/exceptions.hpp [2:3]
+ boost/property_tree/info_parser.hpp [2:2]
+ boost/property_tree/ini_parser.hpp [2:3]
+ boost/property_tree/json_parser.hpp [2:3]
+ boost/property_tree/json_parser/detail/write.hpp [2:2]
+ boost/property_tree/json_parser/error.hpp [2:2]
+ boost/property_tree/ptree.hpp [2:3]
+ boost/property_tree/ptree_fwd.hpp [2:3]
+ boost/property_tree/ptree_serialization.hpp [2:2]
+ boost/property_tree/xml_parser.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 47e3aa9b161ddf342ed17e6e3a194ad1
+BELONGS ya.make
+ License text:
+ // Copyright 2007, 2014 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/core/typeinfo.hpp [12:12]
+
+KEEP COPYRIGHT_SERVICE_LABEL 47f09c67ed73e45fb62566eb4d245310
+BELONGS libs/iostreams/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iostreams/filter/lzma.hpp at line 4, libs/iostreams/src/lzma.cpp at line 4
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/iostreams/filter/lzma.hpp [1:4]
+ libs/iostreams/src/lzma.cpp [1:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 483fdf5158d0f8518198f5ac2c492f5f
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/algorithm.hpp at line 3, boost/detail/named_template_params.hpp at line 3, boost/graph/detail/permutation.hpp at line 3, boost/graph/detail/set_adaptor.hpp at line 3, boost/graph/detail/shadow_iterator.hpp at line 3, boost/iterator/function_output_iterator.hpp at line 3, boost/range/detail/collection_traits.hpp at line 15
+ License text:
+ // (C) Copyright Jeremy Siek 2001.
+ // Distributed under the Boost Software License, Version 1.0. (See accompany-
+ // ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/detail/algorithm.hpp [1:3]
+ boost/detail/named_template_params.hpp [1:3]
+ boost/graph/detail/permutation.hpp [1:3]
+ boost/graph/detail/set_adaptor.hpp [1:3]
+ boost/graph/detail/shadow_iterator.hpp [1:3]
+ boost/iterator/function_output_iterator.hpp [1:3]
+ boost/range/detail/collection_traits.hpp [13:15]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4846b8bf3ce57674103bf8bc473c1e01
+BELONGS ya.make
+ License text:
+ // (C) Copyright Ion Gaztanaga 2005-2016.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/interprocess/detail/mpl.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4873fbbd8e15c957f3d516a5bf07bd9a
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2003-2009 Matthias Christian Schabel
+ // Copyright (C) 2007-2009 Steven Watanabe
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/units/base_units/us/pound_force.hpp [4:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 488900fa132971e55b2288b6adc90297
+BELONGS ya.make
+ License text:
+ * Copyright (c) 2011 Helge Bahmann
+ * Copyright (c) 2013 Tim Blechmann
+ * Copyright (c) 2014 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/atomic/atomic.hpp [6:8]
+ boost/atomic/atomic_flag.hpp [6:8]
+ boost/atomic/capabilities.hpp [6:6]
+ boost/atomic/detail/atomic_flag.hpp [6:6]
+ boost/atomic/detail/atomic_template.hpp [6:8]
+ boost/atomic/detail/caps_gcc_alpha.hpp [6:8]
+ boost/atomic/detail/caps_gcc_arm.hpp [6:10]
+ boost/atomic/detail/caps_gcc_atomic.hpp [6:6]
+ boost/atomic/detail/caps_gcc_ppc.hpp [6:8]
+ boost/atomic/detail/caps_gcc_sparc.hpp [6:8]
+ boost/atomic/detail/caps_gcc_sync.hpp [6:8]
+ boost/atomic/detail/caps_linux_arm.hpp [6:10]
+ boost/atomic/detail/config.hpp [6:7]
+ boost/atomic/detail/int_sizes.hpp [6:6]
+ boost/atomic/detail/link.hpp [6:7]
+ boost/atomic/detail/operations.hpp [6:6]
+ boost/atomic/detail/operations_fwd.hpp [6:6]
+ boost/atomic/detail/operations_lockfree.hpp [6:6]
+ boost/atomic/detail/ops_cas_based.hpp [6:6]
+ boost/atomic/detail/ops_emulated.hpp [6:6]
+ boost/atomic/detail/ops_extending_cas_based.hpp [6:6]
+ boost/atomic/detail/ops_gcc_alpha.hpp [6:8]
+ boost/atomic/detail/ops_gcc_arm.hpp [6:8]
+ boost/atomic/detail/ops_gcc_arm_common.hpp [6:8]
+ boost/atomic/detail/ops_gcc_atomic.hpp [6:6]
+ boost/atomic/detail/ops_gcc_ppc.hpp [6:8]
+ boost/atomic/detail/ops_gcc_ppc_common.hpp [6:8]
+ boost/atomic/detail/ops_gcc_sparc.hpp [6:8]
+ boost/atomic/detail/ops_gcc_sync.hpp [6:8]
+ boost/atomic/detail/ops_gcc_x86.hpp [6:8]
+ boost/atomic/detail/ops_linux_arm.hpp [6:10]
+ boost/atomic/detail/ops_msvc_arm.hpp [6:8]
+ boost/atomic/detail/ops_msvc_common.hpp [6:8]
+ boost/atomic/detail/ops_msvc_x86.hpp [6:8]
+ boost/atomic/detail/ops_windows.hpp [6:8]
+ boost/atomic/detail/platform.hpp [6:7]
+ boost/atomic/fences.hpp [6:8]
+ boost/core/underlying_type.hpp [3:6]
+ boost/detail/scoped_enum_emulation.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 48a1e78c1776174852d8ecfdeb3d9a8e
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/parameter/aux_/arg_list.hpp at line 3, boost/parameter/aux_/default.hpp at line 3, boost/parameter/aux_/parameter_requirements.hpp at line 3, boost/parameter/aux_/tagged_argument.hpp at line 3, boost/parameter/aux_/unwrap_cv_reference.hpp at line 3, boost/parameter/aux_/void.hpp at line 3, boost/parameter/aux_/yesno.hpp at line 3, boost/parameter/config.hpp at line 3, boost/parameter/keyword.hpp at line 3
+ License text:
+ // Copyright Daniel Wallin, David Abrahams 2005. Use, modification and
+ // distribution is subject to the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/parameter/aux_/arg_list.hpp [1:3]
+ boost/parameter/aux_/default.hpp [1:3]
+ boost/parameter/aux_/parameter_requirements.hpp [1:3]
+ boost/parameter/aux_/tagged_argument.hpp [1:3]
+ boost/parameter/aux_/unwrap_cv_reference.hpp [1:3]
+ boost/parameter/aux_/void.hpp [1:3]
+ boost/parameter/aux_/yesno.hpp [1:3]
+ boost/parameter/config.hpp [1:3]
+ boost/parameter/keyword.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 48a99b78ca07d64eafb7dfabd3abb686
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
+ // Copyright 2004-2006 Peter Dimov
+ // Copyright 2005 Ben Hutchings
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp [7:9]
+
+KEEP COPYRIGHT_SERVICE_LABEL 491150306a8e77a2b041e31096f69d80
+BELONGS libs/chrono/ya.make ya.make
+ License text:
+ // (C) Copyright Vicente J. Botet Escriba 2010.
+ // Distributed under the Boost
+ // Software License, Version 1.0.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/chrono.hpp [3:5]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4915b20164f09b341694cc223cf83586
+BELONGS ya.make
+ License text:
+ // Copyright 2006 Johan Rade
+ // Copyright 2012 K R Walker
+ // Copyright 2011, 2012 Paul A. Bristow
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/nonfinite_num_facets.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 493cc4e248ecb124fe372bf25e6ef2d4
+BELONGS ya.make
+ License text:
+ Copyright (c) 2013 Agustin Berge http://spirit.sourceforge.net
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/x3/support/subcontext.hpp [2:4]
+ boost/spirit/home/x3/support/traits/attribute_of.hpp [2:4]
+ boost/spirit/home/x3/support/traits/has_attribute.hpp [2:4]
+ boost/spirit/home/x3/support/traits/move_to.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 495b1eefa32665dd65d30aa549ab40c5
+BELONGS ya.make
+ License text:
+ // This file was modified by Oracle on 2013.
+ // Modifications copyright (c) 2013, Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/within/within_no_turns.hpp [7:8]
+ boost/geometry/multi/algorithms/detail/overlay/copy_segment_point.hpp [5:6]
+ boost/geometry/multi/algorithms/detail/point_on_border.hpp [7:8]
+ boost/geometry/multi/algorithms/detail/sections/range_by_section.hpp [7:8]
+ boost/geometry/multi/algorithms/detail/sections/sectionalize.hpp [7:8]
+ boost/geometry/multi/core/ring_type.hpp [7:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 498105f8cf77963aff3c856eb50c2341
+BELONGS libs/exception/ya.make ya.make
+ License text:
+ //Copyright (c) 2006-2009 Emil Dotchevski and Reverge Studios, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/exception/current_exception_cast.hpp [1:1]
+ boost/exception/detail/exception_ptr.hpp [1:1]
+ boost/exception/detail/is_output_streamable.hpp [1:1]
+ boost/exception/detail/object_hex_dump.hpp [1:1]
+ boost/exception/enable_current_exception.hpp [1:1]
+ boost/exception/enable_error_info.hpp [1:1]
+ boost/exception/errinfo_api_function.hpp [1:1]
+ boost/exception/errinfo_at_line.hpp [1:1]
+ boost/exception/errinfo_errno.hpp [1:1]
+ boost/exception/errinfo_file_handle.hpp [1:1]
+ boost/exception/errinfo_file_name.hpp [1:1]
+ boost/exception/errinfo_file_open_mode.hpp [1:1]
+ boost/exception/errinfo_nested_exception.hpp [1:1]
+ boost/exception/errinfo_type_info_name.hpp [1:1]
+ boost/exception/error_info.hpp [1:1]
+ boost/exception/exception.hpp [1:1]
+ boost/exception/get_error_info.hpp [1:1]
+ boost/exception/info_tuple.hpp [1:1]
+ boost/exception/to_string.hpp [1:1]
+ boost/exception/to_string_stub.hpp [1:1]
+ boost/exception_ptr.hpp [1:1]
+ libs/exception/src/clone_current_exception_non_intrusive.cpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4996bb2ca2b3ceeeafa025b3dbd3345e
+BELONGS ya.make
+ License text:
+ Copyright 2012 Karsten Ahnert
+ Copyright 2012 Mario Mulansky
+ Copyright 2012 Denis Demidov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/external/vexcl/vexcl_resize.hpp [9:11]
+ boost/numeric/odeint/external/viennacl/viennacl_operations.hpp [9:11]
+ boost/numeric/odeint/external/viennacl/viennacl_resize.hpp [9:11]
+ boost/numeric/odeint/iterator/adaptive_iterator.hpp [10:11]
+ boost/numeric/odeint/stepper/base/algebra_stepper_base.hpp [9:10]
+ boost/numeric/odeint/stepper/controlled_step_result.hpp [9:10]
+ boost/numeric/odeint/util/same_instance.hpp [9:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL 49a34ce6db1b184c479aec023e28d0b4
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/parameter/aux_/preprocessor/flatten.hpp at line 3, boost/parameter/aux_/preprocessor/for_each.hpp at line 3, boost/parameter/aux_/python/invoker.hpp at line 3, boost/parameter/aux_/python/invoker_iterate.hpp at line 3
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/parameter/aux_/preprocessor/flatten.hpp [1:3]
+ boost/parameter/aux_/preprocessor/for_each.hpp [1:3]
+ boost/parameter/aux_/python/invoker.hpp [1:3]
+ boost/parameter/aux_/python/invoker_iterate.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 49a63dac4d2a7520d366071cadc7cba7
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/move/algo/detail/pdqsort.hpp at line 6
+ License text:
+ // (C) Copyright Orson Peters 2017.
+ // (C) Copyright Ion Gaztanaga 2017-2018.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/move/algo/detail/pdqsort.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 49a72a2565315c216c070d87731e33a4
+BELONGS ya.make
+ License text:
+ @copyright Jason Rice 2016
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/hana/concept/hashable.hpp [5:8]
+ boost/hana/detail/hash_table.hpp [5:8]
+ boost/hana/fwd/concept/hashable.hpp [5:8]
+ boost/hana/fwd/hash.hpp [5:8]
+ boost/hana/hash.hpp [5:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 49ac6943b8a74ceee45637a0a87cd8c4
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2011 Aaron Graham
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/repository/home/qi/primitive/advance.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 49c85f9c3e9bb242a6e6dd6d3d306ae2
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/seq/detail/is_empty.hpp at line 5, boost/vmd/array.hpp at line 4, boost/vmd/array/to_seq.hpp at line 4, boost/vmd/array/to_tuple.hpp at line 4, boost/vmd/list.hpp at line 4, boost/vmd/list/to_seq.hpp at line 4, boost/vmd/list/to_tuple.hpp at line 4, boost/vmd/seq.hpp at line 4, boost/vmd/seq/is_vmd_seq.hpp at line 4, boost/vmd/seq/pop_back.hpp at line 4, boost/vmd/seq/pop_front.hpp at line 4, boost/vmd/seq/push_back.hpp at line 4, boost/vmd/seq/push_front.hpp at line 4, boost/vmd/seq/remove.hpp at line 4, boost/vmd/seq/size.hpp at line 4, boost/vmd/seq/to_array.hpp at line 4, boost/vmd/seq/to_list.hpp at line 4, boost/vmd/seq/to_tuple.hpp at line 4, boost/vmd/tuple.hpp at line 4, boost/vmd/tuple/is_vmd_tuple.hpp at line 4, boost/vmd/tuple/pop_back.hpp at line 4, boost/vmd/tuple/pop_front.hpp at line 4, boost/vmd/tuple/push_back.hpp at line 4, boost/vmd/tuple/push_front.hpp at line 4, boost/vmd/tuple/remove.hpp at line 4, boost/vmd/tuple/size.hpp at line 4, boost/vmd/tuple/to_array.hpp at line 4, boost/vmd/tuple/to_list.hpp at line 4, boost/vmd/tuple/to_seq.hpp at line 4
+ License text:
+ \# * (C) Copyright Edward Diener 2015.
+ \# * Distributed under the Boost Software License, Version 1.0. (See
+ \# * accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/preprocessor/seq/detail/is_empty.hpp [3:5]
+ boost/vmd/array.hpp [2:4]
+ boost/vmd/array/to_seq.hpp [2:4]
+ boost/vmd/array/to_tuple.hpp [2:4]
+ boost/vmd/list.hpp [2:4]
+ boost/vmd/list/to_seq.hpp [2:4]
+ boost/vmd/list/to_tuple.hpp [2:4]
+ boost/vmd/seq.hpp [2:4]
+ boost/vmd/seq/is_vmd_seq.hpp [2:4]
+ boost/vmd/seq/pop_back.hpp [2:4]
+ boost/vmd/seq/pop_front.hpp [2:4]
+ boost/vmd/seq/push_back.hpp [2:4]
+ boost/vmd/seq/push_front.hpp [2:4]
+ boost/vmd/seq/remove.hpp [2:4]
+ boost/vmd/seq/size.hpp [2:4]
+ boost/vmd/seq/to_array.hpp [2:4]
+ boost/vmd/seq/to_list.hpp [2:4]
+ boost/vmd/seq/to_tuple.hpp [2:4]
+ boost/vmd/tuple.hpp [2:4]
+ boost/vmd/tuple/is_vmd_tuple.hpp [2:4]
+ boost/vmd/tuple/pop_back.hpp [2:4]
+ boost/vmd/tuple/pop_front.hpp [2:4]
+ boost/vmd/tuple/push_back.hpp [2:4]
+ boost/vmd/tuple/push_front.hpp [2:4]
+ boost/vmd/tuple/remove.hpp [2:4]
+ boost/vmd/tuple/size.hpp [2:4]
+ boost/vmd/tuple/to_array.hpp [2:4]
+ boost/vmd/tuple/to_list.hpp [2:4]
+ boost/vmd/tuple/to_seq.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 49dd121655e5c734739cb54d9f69e91e
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/adapted.hpp [2:3]
+ boost/fusion/adapted/adt.hpp [2:4]
+ boost/fusion/adapted/array.hpp [2:4]
+ boost/fusion/adapted/boost_array.hpp [2:3]
+ boost/fusion/adapted/boost_array/array_iterator.hpp [2:3]
+ boost/fusion/adapted/boost_array/detail/at_impl.hpp [2:3]
+ boost/fusion/adapted/boost_array/detail/begin_impl.hpp [2:3]
+ boost/fusion/adapted/boost_array/detail/category_of_impl.hpp [2:3]
+ boost/fusion/adapted/boost_array/detail/end_impl.hpp [2:3]
+ boost/fusion/adapted/boost_array/detail/is_sequence_impl.hpp [2:3]
+ boost/fusion/adapted/boost_array/detail/is_view_impl.hpp [2:3]
+ boost/fusion/adapted/boost_array/detail/size_impl.hpp [2:3]
+ boost/fusion/adapted/boost_array/detail/value_at_impl.hpp [2:3]
+ boost/fusion/adapted/boost_array/tag_of.hpp [2:3]
+ boost/fusion/adapted/boost_tuple.hpp [2:2]
+ boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp [2:2]
+ boost/fusion/adapted/boost_tuple/detail/at_impl.hpp [2:2]
+ boost/fusion/adapted/boost_tuple/detail/begin_impl.hpp [2:2]
+ boost/fusion/adapted/boost_tuple/detail/category_of_impl.hpp [2:2]
+ boost/fusion/adapted/boost_tuple/detail/end_impl.hpp [2:2]
+ boost/fusion/adapted/boost_tuple/detail/is_sequence_impl.hpp [2:2]
+ boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp [2:2]
+ boost/fusion/adapted/boost_tuple/detail/size_impl.hpp [2:2]
+ boost/fusion/adapted/boost_tuple/detail/value_at_impl.hpp [2:2]
+ boost/fusion/adapted/boost_tuple/tag_of.hpp [2:2]
+ boost/fusion/adapted/mpl.hpp [2:3]
+ boost/fusion/adapted/mpl/detail/at_impl.hpp [2:3]
+ boost/fusion/adapted/mpl/detail/begin_impl.hpp [2:3]
+ boost/fusion/adapted/mpl/detail/category_of_impl.hpp [2:3]
+ boost/fusion/adapted/mpl/detail/empty_impl.hpp [2:3]
+ boost/fusion/adapted/mpl/detail/end_impl.hpp [2:3]
+ boost/fusion/adapted/mpl/detail/has_key_impl.hpp [2:3]
+ boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp [2:3]
+ boost/fusion/adapted/mpl/detail/is_view_impl.hpp [2:3]
+ boost/fusion/adapted/mpl/detail/size_impl.hpp [2:3]
+ boost/fusion/adapted/mpl/detail/value_at_impl.hpp [2:3]
+ boost/fusion/adapted/mpl/mpl_iterator.hpp [2:2]
+ boost/fusion/adapted/std_array.hpp [2:4]
+ boost/fusion/adapted/std_array/detail/at_impl.hpp [2:3]
+ boost/fusion/adapted/std_array/detail/begin_impl.hpp [2:4]
+ boost/fusion/adapted/std_array/detail/category_of_impl.hpp [2:3]
+ boost/fusion/adapted/std_array/detail/end_impl.hpp [2:4]
+ boost/fusion/adapted/std_array/detail/is_sequence_impl.hpp [2:4]
+ boost/fusion/adapted/std_array/detail/is_view_impl.hpp [2:4]
+ boost/fusion/adapted/std_array/detail/size_impl.hpp [2:4]
+ boost/fusion/adapted/std_array/detail/value_at_impl.hpp [2:3]
+ boost/fusion/adapted/std_array/std_array_iterator.hpp [2:4]
+ boost/fusion/adapted/std_array/tag_of.hpp [2:3]
+ boost/fusion/adapted/std_pair.hpp [2:4]
+ boost/fusion/adapted/std_tuple.hpp [2:2]
+ boost/fusion/adapted/std_tuple/detail/at_impl.hpp [2:2]
+ boost/fusion/adapted/std_tuple/detail/begin_impl.hpp [2:2]
+ boost/fusion/adapted/std_tuple/detail/category_of_impl.hpp [2:2]
+ boost/fusion/adapted/std_tuple/detail/end_impl.hpp [2:2]
+ boost/fusion/adapted/std_tuple/detail/is_sequence_impl.hpp [2:2]
+ boost/fusion/adapted/std_tuple/detail/is_view_impl.hpp [2:2]
+ boost/fusion/adapted/std_tuple/detail/size_impl.hpp [2:2]
+ boost/fusion/adapted/std_tuple/detail/value_at_impl.hpp [2:2]
+ boost/fusion/adapted/std_tuple/std_tuple_iterator.hpp [2:2]
+ boost/fusion/adapted/std_tuple/tag_of.hpp [2:2]
+ boost/fusion/adapted/struct.hpp [2:4]
+ boost/fusion/adapted/struct/detail/at_impl.hpp [2:4]
+ boost/fusion/adapted/struct/detail/begin_impl.hpp [2:4]
+ boost/fusion/adapted/struct/detail/category_of_impl.hpp [2:4]
+ boost/fusion/adapted/struct/detail/end_impl.hpp [2:4]
+ boost/fusion/adapted/struct/detail/is_sequence_impl.hpp [2:4]
+ boost/fusion/adapted/struct/detail/is_view_impl.hpp [2:4]
+ boost/fusion/adapted/struct/detail/size_impl.hpp [2:4]
+ boost/fusion/adapted/struct/detail/value_at_impl.hpp [2:4]
+ boost/fusion/algorithm.hpp [2:2]
+ boost/fusion/algorithm/auxiliary.hpp [2:2]
+ boost/fusion/algorithm/auxiliary/copy.hpp [2:2]
+ boost/fusion/algorithm/iteration.hpp [2:2]
+ boost/fusion/algorithm/iteration/accumulate.hpp [2:3]
+ boost/fusion/algorithm/iteration/detail/fold.hpp [2:5]
+ boost/fusion/algorithm/iteration/detail/for_each.hpp [2:2]
+ boost/fusion/algorithm/iteration/detail/preprocessed/fold.hpp [2:4]
+ boost/fusion/algorithm/iteration/detail/preprocessed/iter_fold.hpp [2:3]
+ boost/fusion/algorithm/iteration/detail/preprocessed/reverse_fold.hpp [2:3]
+ boost/fusion/algorithm/iteration/detail/preprocessed/reverse_iter_fold.hpp [2:3]
+ boost/fusion/algorithm/iteration/fold.hpp [2:5]
+ boost/fusion/algorithm/iteration/fold.hpp [35:37]
+ boost/fusion/algorithm/iteration/iter_fold.hpp [2:4]
+ boost/fusion/algorithm/iteration/iter_fold.hpp [37:38]
+ boost/fusion/algorithm/iteration/reverse_fold.hpp [2:4]
+ boost/fusion/algorithm/iteration/reverse_fold.hpp [37:38]
+ boost/fusion/algorithm/iteration/reverse_iter_fold.hpp [2:4]
+ boost/fusion/algorithm/iteration/reverse_iter_fold.hpp [37:38]
+ boost/fusion/algorithm/query.hpp [2:2]
+ boost/fusion/algorithm/query/all.hpp [2:3]
+ boost/fusion/algorithm/query/any.hpp [2:4]
+ boost/fusion/algorithm/query/count.hpp [2:3]
+ boost/fusion/algorithm/query/count_if.hpp [2:3]
+ boost/fusion/algorithm/query/detail/all.hpp [2:3]
+ boost/fusion/algorithm/query/detail/any.hpp [2:4]
+ boost/fusion/algorithm/query/detail/count.hpp [2:2]
+ boost/fusion/algorithm/query/detail/count_if.hpp [2:3]
+ boost/fusion/algorithm/query/detail/find_if.hpp [2:4]
+ boost/fusion/algorithm/query/find.hpp [2:3]
+ boost/fusion/algorithm/query/find_if.hpp [2:3]
+ boost/fusion/algorithm/query/none.hpp [2:3]
+ boost/fusion/algorithm/transformation.hpp [2:2]
+ boost/fusion/algorithm/transformation/clear.hpp [2:2]
+ boost/fusion/algorithm/transformation/detail/preprocessed/zip.hpp [2:2]
+ boost/fusion/algorithm/transformation/detail/preprocessed/zip10.hpp [2:3]
+ boost/fusion/algorithm/transformation/detail/preprocessed/zip20.hpp [2:3]
+ boost/fusion/algorithm/transformation/detail/preprocessed/zip30.hpp [2:3]
+ boost/fusion/algorithm/transformation/detail/preprocessed/zip40.hpp [2:3]
+ boost/fusion/algorithm/transformation/detail/preprocessed/zip50.hpp [2:3]
+ boost/fusion/algorithm/transformation/detail/replace.hpp [2:2]
+ boost/fusion/algorithm/transformation/detail/replace_if.hpp [2:2]
+ boost/fusion/algorithm/transformation/erase.hpp [2:2]
+ boost/fusion/algorithm/transformation/erase_key.hpp [2:2]
+ boost/fusion/algorithm/transformation/filter.hpp [2:3]
+ boost/fusion/algorithm/transformation/filter_if.hpp [2:2]
+ boost/fusion/algorithm/transformation/insert.hpp [2:2]
+ boost/fusion/algorithm/transformation/insert_range.hpp [2:2]
+ boost/fusion/algorithm/transformation/join.hpp [2:3]
+ boost/fusion/algorithm/transformation/pop_back.hpp [2:2]
+ boost/fusion/algorithm/transformation/pop_front.hpp [2:2]
+ boost/fusion/algorithm/transformation/push_back.hpp [2:2]
+ boost/fusion/algorithm/transformation/push_front.hpp [2:2]
+ boost/fusion/algorithm/transformation/remove.hpp [2:2]
+ boost/fusion/algorithm/transformation/remove_if.hpp [2:2]
+ boost/fusion/algorithm/transformation/replace.hpp [2:2]
+ boost/fusion/algorithm/transformation/replace_if.hpp [2:2]
+ boost/fusion/algorithm/transformation/reverse.hpp [2:2]
+ boost/fusion/algorithm/transformation/transform.hpp [2:2]
+ boost/fusion/algorithm/transformation/zip.hpp [2:3]
+ boost/fusion/algorithm/transformation/zip.hpp [43:44]
+ boost/fusion/container.hpp [2:2]
+ boost/fusion/container/deque.hpp [2:3]
+ boost/fusion/container/deque/detail/cpp03/as_deque.hpp [66:66]
+ boost/fusion/container/deque/detail/cpp03/deque.hpp [51:51]
+ boost/fusion/container/deque/detail/cpp03/deque_fwd.hpp [26:26]
+ boost/fusion/container/deque/detail/cpp03/deque_initial_size.hpp [35:35]
+ boost/fusion/container/deque/detail/cpp03/deque_keyed_values.hpp [43:43]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque.hpp [2:2]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque10.hpp [2:2]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque20.hpp [2:2]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque30.hpp [2:2]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque40.hpp [2:2]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque50.hpp [2:2]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque.hpp [2:2]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque10.hpp [2:2]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque10_fwd.hpp [2:2]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque20.hpp [2:2]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque20_fwd.hpp [2:2]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque30.hpp [2:2]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque30_fwd.hpp [2:2]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque40.hpp [2:2]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque40_fwd.hpp [2:2]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque50.hpp [2:2]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque50_fwd.hpp [2:2]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque_fwd.hpp [2:2]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size.hpp [2:2]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size10.hpp [2:2]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size20.hpp [2:2]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size30.hpp [2:2]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size40.hpp [2:2]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size50.hpp [2:2]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values.hpp [2:2]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values10.hpp [2:2]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values20.hpp [2:2]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values30.hpp [2:2]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values40.hpp [2:2]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values50.hpp [2:2]
+ boost/fusion/container/generation.hpp [2:2]
+ boost/fusion/container/generation/cons_tie.hpp [2:2]
+ boost/fusion/container/generation/detail/pp_deque_tie.hpp [2:3]
+ boost/fusion/container/generation/detail/pp_deque_tie.hpp [28:28]
+ boost/fusion/container/generation/detail/pp_list_tie.hpp [2:2]
+ boost/fusion/container/generation/detail/pp_list_tie.hpp [27:27]
+ boost/fusion/container/generation/detail/pp_make_deque.hpp [2:3]
+ boost/fusion/container/generation/detail/pp_make_deque.hpp [28:28]
+ boost/fusion/container/generation/detail/pp_make_list.hpp [2:2]
+ boost/fusion/container/generation/detail/pp_make_list.hpp [27:27]
+ boost/fusion/container/generation/detail/pp_make_map.hpp [2:2]
+ boost/fusion/container/generation/detail/pp_make_map.hpp [28:28]
+ boost/fusion/container/generation/detail/pp_make_set.hpp [2:2]
+ boost/fusion/container/generation/detail/pp_make_set.hpp [29:29]
+ boost/fusion/container/generation/detail/pp_make_vector.hpp [2:2]
+ boost/fusion/container/generation/detail/pp_make_vector.hpp [27:27]
+ boost/fusion/container/generation/detail/pp_map_tie.hpp [2:3]
+ boost/fusion/container/generation/detail/pp_map_tie.hpp [31:31]
+ boost/fusion/container/generation/detail/pp_vector_tie.hpp [2:2]
+ boost/fusion/container/generation/detail/pp_vector_tie.hpp [27:27]
+ boost/fusion/container/generation/detail/preprocessed/deque_tie.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/deque_tie10.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/deque_tie20.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/deque_tie30.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/deque_tie40.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/deque_tie50.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/list_tie.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/list_tie10.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/list_tie20.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/list_tie30.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/list_tie40.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/list_tie50.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/make_deque.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/make_deque10.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/make_deque20.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/make_deque30.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/make_deque40.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/make_deque50.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/make_list.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/make_list10.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/make_list20.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/make_list30.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/make_list40.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/make_list50.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/make_map.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/make_map10.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/make_map20.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/make_map30.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/make_map40.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/make_map50.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/make_set.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/make_set10.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/make_set20.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/make_set30.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/make_set40.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/make_set50.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/make_vector.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/make_vector10.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/make_vector20.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/make_vector30.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/make_vector40.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/make_vector50.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/map_tie.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/map_tie10.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/map_tie20.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/map_tie30.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/map_tie40.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/map_tie50.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/vector_tie.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/vector_tie10.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/vector_tie20.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/vector_tie30.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/vector_tie40.hpp [2:2]
+ boost/fusion/container/generation/detail/preprocessed/vector_tie50.hpp [2:2]
+ boost/fusion/container/generation/ignore.hpp [2:4]
+ boost/fusion/container/generation/make_cons.hpp [2:3]
+ boost/fusion/container/generation/pair_tie.hpp [2:3]
+ boost/fusion/container/list.hpp [2:2]
+ boost/fusion/container/list/cons.hpp [2:3]
+ boost/fusion/container/list/cons_fwd.hpp [2:3]
+ boost/fusion/container/list/cons_iterator.hpp [2:3]
+ boost/fusion/container/list/convert.hpp [2:2]
+ boost/fusion/container/list/detail/at_impl.hpp [2:2]
+ boost/fusion/container/list/detail/begin_impl.hpp [2:3]
+ boost/fusion/container/list/detail/build_cons.hpp [2:2]
+ boost/fusion/container/list/detail/convert_impl.hpp [2:3]
+ boost/fusion/container/list/detail/cpp03/limits.hpp [2:2]
+ boost/fusion/container/list/detail/cpp03/list.hpp [2:2]
+ boost/fusion/container/list/detail/cpp03/list.hpp [26:26]
+ boost/fusion/container/list/detail/cpp03/list_forward_ctor.hpp [2:2]
+ boost/fusion/container/list/detail/cpp03/list_fwd.hpp [2:2]
+ boost/fusion/container/list/detail/cpp03/list_fwd.hpp [22:22]
+ boost/fusion/container/list/detail/cpp03/list_to_cons.hpp [2:2]
+ boost/fusion/container/list/detail/cpp03/list_to_cons.hpp [34:34]
+ boost/fusion/container/list/detail/cpp03/list_to_cons_call.hpp [2:2]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list.hpp [2:2]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list10.hpp [2:2]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list10_fwd.hpp [2:2]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list20.hpp [2:2]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list20_fwd.hpp [2:2]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list30.hpp [2:2]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list30_fwd.hpp [2:2]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list40.hpp [2:2]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list40_fwd.hpp [2:2]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list50.hpp [2:2]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list50_fwd.hpp [2:2]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list_fwd.hpp [2:2]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons.hpp [2:2]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons10.hpp [2:2]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons20.hpp [2:2]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons30.hpp [2:2]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons40.hpp [2:2]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons50.hpp [2:2]
+ boost/fusion/container/list/detail/deref_impl.hpp [2:3]
+ boost/fusion/container/list/detail/end_impl.hpp [2:3]
+ boost/fusion/container/list/detail/equal_to_impl.hpp [2:2]
+ boost/fusion/container/list/detail/next_impl.hpp [2:3]
+ boost/fusion/container/list/detail/value_at_impl.hpp [2:2]
+ boost/fusion/container/list/detail/value_of_impl.hpp [2:3]
+ boost/fusion/container/list/nil.hpp [2:3]
+ boost/fusion/container/map.hpp [2:2]
+ boost/fusion/container/map/convert.hpp [2:2]
+ boost/fusion/container/map/detail/cpp03/as_map.hpp [2:2]
+ boost/fusion/container/map/detail/cpp03/as_map.hpp [65:65]
+ boost/fusion/container/map/detail/cpp03/at_impl.hpp [2:3]
+ boost/fusion/container/map/detail/cpp03/begin_impl.hpp [2:3]
+ boost/fusion/container/map/detail/cpp03/convert.hpp [2:2]
+ boost/fusion/container/map/detail/cpp03/convert_impl.hpp [2:3]
+ boost/fusion/container/map/detail/cpp03/end_impl.hpp [2:3]
+ boost/fusion/container/map/detail/cpp03/limits.hpp [2:2]
+ boost/fusion/container/map/detail/cpp03/map.hpp [2:2]
+ boost/fusion/container/map/detail/cpp03/map.hpp [45:45]
+ boost/fusion/container/map/detail/cpp03/map_forward_ctor.hpp [2:2]
+ boost/fusion/container/map/detail/cpp03/map_fwd.hpp [2:2]
+ boost/fusion/container/map/detail/cpp03/map_fwd.hpp [22:22]
+ boost/fusion/container/map/detail/cpp03/preprocessed/as_map.hpp [2:2]
+ boost/fusion/container/map/detail/cpp03/preprocessed/as_map10.hpp [2:2]
+ boost/fusion/container/map/detail/cpp03/preprocessed/as_map20.hpp [2:2]
+ boost/fusion/container/map/detail/cpp03/preprocessed/as_map30.hpp [2:2]
+ boost/fusion/container/map/detail/cpp03/preprocessed/as_map40.hpp [2:2]
+ boost/fusion/container/map/detail/cpp03/preprocessed/as_map50.hpp [2:2]
+ boost/fusion/container/map/detail/cpp03/preprocessed/map.hpp [2:2]
+ boost/fusion/container/map/detail/cpp03/preprocessed/map10.hpp [2:2]
+ boost/fusion/container/map/detail/cpp03/preprocessed/map10_fwd.hpp [2:2]
+ boost/fusion/container/map/detail/cpp03/preprocessed/map20.hpp [2:2]
+ boost/fusion/container/map/detail/cpp03/preprocessed/map20_fwd.hpp [2:2]
+ boost/fusion/container/map/detail/cpp03/preprocessed/map30.hpp [2:2]
+ boost/fusion/container/map/detail/cpp03/preprocessed/map30_fwd.hpp [2:2]
+ boost/fusion/container/map/detail/cpp03/preprocessed/map40.hpp [2:2]
+ boost/fusion/container/map/detail/cpp03/preprocessed/map40_fwd.hpp [2:2]
+ boost/fusion/container/map/detail/cpp03/preprocessed/map50.hpp [2:2]
+ boost/fusion/container/map/detail/cpp03/preprocessed/map50_fwd.hpp [2:2]
+ boost/fusion/container/map/detail/cpp03/preprocessed/map_fwd.hpp [2:2]
+ boost/fusion/container/map/detail/cpp03/value_at_impl.hpp [2:3]
+ boost/fusion/container/map/map.hpp [2:2]
+ boost/fusion/container/map/map_fwd.hpp [2:2]
+ boost/fusion/container/set.hpp [2:2]
+ boost/fusion/container/set/convert.hpp [2:2]
+ boost/fusion/container/set/detail/begin_impl.hpp [2:3]
+ boost/fusion/container/set/detail/convert_impl.hpp [2:3]
+ boost/fusion/container/set/detail/cpp03/as_set.hpp [2:2]
+ boost/fusion/container/set/detail/cpp03/as_set.hpp [65:65]
+ boost/fusion/container/set/detail/cpp03/limits.hpp [2:2]
+ boost/fusion/container/set/detail/cpp03/preprocessed/as_set.hpp [2:2]
+ boost/fusion/container/set/detail/cpp03/preprocessed/as_set10.hpp [2:2]
+ boost/fusion/container/set/detail/cpp03/preprocessed/as_set20.hpp [2:2]
+ boost/fusion/container/set/detail/cpp03/preprocessed/as_set30.hpp [2:2]
+ boost/fusion/container/set/detail/cpp03/preprocessed/as_set40.hpp [2:2]
+ boost/fusion/container/set/detail/cpp03/preprocessed/as_set50.hpp [2:2]
+ boost/fusion/container/set/detail/cpp03/preprocessed/set.hpp [2:2]
+ boost/fusion/container/set/detail/cpp03/preprocessed/set10.hpp [2:2]
+ boost/fusion/container/set/detail/cpp03/preprocessed/set10_fwd.hpp [2:2]
+ boost/fusion/container/set/detail/cpp03/preprocessed/set20.hpp [2:2]
+ boost/fusion/container/set/detail/cpp03/preprocessed/set20_fwd.hpp [2:2]
+ boost/fusion/container/set/detail/cpp03/preprocessed/set30.hpp [2:2]
+ boost/fusion/container/set/detail/cpp03/preprocessed/set30_fwd.hpp [2:2]
+ boost/fusion/container/set/detail/cpp03/preprocessed/set40.hpp [2:2]
+ boost/fusion/container/set/detail/cpp03/preprocessed/set40_fwd.hpp [2:2]
+ boost/fusion/container/set/detail/cpp03/preprocessed/set50.hpp [2:2]
+ boost/fusion/container/set/detail/cpp03/preprocessed/set50_fwd.hpp [2:2]
+ boost/fusion/container/set/detail/cpp03/preprocessed/set_fwd.hpp [2:2]
+ boost/fusion/container/set/detail/cpp03/set.hpp [2:2]
+ boost/fusion/container/set/detail/cpp03/set.hpp [38:38]
+ boost/fusion/container/set/detail/cpp03/set_forward_ctor.hpp [2:2]
+ boost/fusion/container/set/detail/cpp03/set_fwd.hpp [2:2]
+ boost/fusion/container/set/detail/cpp03/set_fwd.hpp [22:22]
+ boost/fusion/container/set/detail/end_impl.hpp [2:3]
+ boost/fusion/container/vector.hpp [2:2]
+ boost/fusion/container/vector/convert.hpp [2:2]
+ boost/fusion/container/vector/detail/advance_impl.hpp [2:2]
+ boost/fusion/container/vector/detail/at_impl.hpp [2:2]
+ boost/fusion/container/vector/detail/begin_impl.hpp [2:2]
+ boost/fusion/container/vector/detail/convert_impl.hpp [2:3]
+ boost/fusion/container/vector/detail/cpp03/as_vector.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/as_vector.hpp [65:65]
+ boost/fusion/container/vector/detail/cpp03/limits.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector10.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector20.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector30.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector40.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector50.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector10.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector10_fwd.hpp [2:3]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector20.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector20_fwd.hpp [2:3]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector30.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector30_fwd.hpp [2:3]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector40.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector40_fwd.hpp [2:3]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector50.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector50_fwd.hpp [2:3]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser10.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser20.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser30.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser40.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser50.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector_fwd.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10_fwd.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20_fwd.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30_fwd.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40_fwd.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50_fwd.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/value_at_impl.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/vector.hpp [2:3]
+ boost/fusion/container/vector/detail/cpp03/vector.hpp [70:70]
+ boost/fusion/container/vector/detail/cpp03/vector10.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/vector10.hpp [73:73]
+ boost/fusion/container/vector/detail/cpp03/vector10_fwd.hpp [3:4]
+ boost/fusion/container/vector/detail/cpp03/vector10_fwd.hpp [31:32]
+ boost/fusion/container/vector/detail/cpp03/vector20.hpp [2:3]
+ boost/fusion/container/vector/detail/cpp03/vector20.hpp [48:48]
+ boost/fusion/container/vector/detail/cpp03/vector20_fwd.hpp [3:4]
+ boost/fusion/container/vector/detail/cpp03/vector20_fwd.hpp [25:26]
+ boost/fusion/container/vector/detail/cpp03/vector30.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/vector30.hpp [47:47]
+ boost/fusion/container/vector/detail/cpp03/vector30_fwd.hpp [3:4]
+ boost/fusion/container/vector/detail/cpp03/vector30_fwd.hpp [25:26]
+ boost/fusion/container/vector/detail/cpp03/vector40.hpp [2:3]
+ boost/fusion/container/vector/detail/cpp03/vector40.hpp [48:48]
+ boost/fusion/container/vector/detail/cpp03/vector40_fwd.hpp [3:4]
+ boost/fusion/container/vector/detail/cpp03/vector40_fwd.hpp [25:26]
+ boost/fusion/container/vector/detail/cpp03/vector50.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/vector50.hpp [47:47]
+ boost/fusion/container/vector/detail/cpp03/vector50_fwd.hpp [3:4]
+ boost/fusion/container/vector/detail/cpp03/vector50_fwd.hpp [25:26]
+ boost/fusion/container/vector/detail/cpp03/vector_forward_ctor.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/vector_fwd.hpp [2:3]
+ boost/fusion/container/vector/detail/cpp03/vector_fwd.hpp [37:37]
+ boost/fusion/container/vector/detail/cpp03/vector_n.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/vector_n_chooser.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/vector_n_chooser.hpp [48:48]
+ boost/fusion/container/vector/detail/deref_impl.hpp [2:2]
+ boost/fusion/container/vector/detail/distance_impl.hpp [2:2]
+ boost/fusion/container/vector/detail/end_impl.hpp [2:2]
+ boost/fusion/container/vector/detail/equal_to_impl.hpp [2:2]
+ boost/fusion/container/vector/detail/next_impl.hpp [2:2]
+ boost/fusion/container/vector/detail/prior_impl.hpp [2:2]
+ boost/fusion/container/vector/detail/value_of_impl.hpp [2:2]
+ boost/fusion/container/vector/vector_iterator.hpp [2:2]
+ boost/fusion/include/auxiliary.hpp [2:2]
+ boost/fusion/include/copy.hpp [2:2]
+ boost/fusion/include/iterator_adapter.hpp [2:2]
+ boost/fusion/iterator.hpp [2:2]
+ boost/fusion/iterator/advance.hpp [2:2]
+ boost/fusion/iterator/deref.hpp [2:2]
+ boost/fusion/iterator/detail/adapt_deref_traits.hpp [2:2]
+ boost/fusion/iterator/detail/adapt_value_traits.hpp [2:2]
+ boost/fusion/iterator/detail/advance.hpp [2:2]
+ boost/fusion/iterator/detail/distance.hpp [2:2]
+ boost/fusion/iterator/distance.hpp [2:2]
+ boost/fusion/iterator/equal_to.hpp [2:2]
+ boost/fusion/iterator/iterator_adapter.hpp [2:2]
+ boost/fusion/iterator/iterator_facade.hpp [2:2]
+ boost/fusion/iterator/mpl.hpp [2:2]
+ boost/fusion/iterator/mpl/convert_iterator.hpp [2:2]
+ boost/fusion/iterator/mpl/fusion_iterator.hpp [2:2]
+ boost/fusion/iterator/next.hpp [2:2]
+ boost/fusion/iterator/prior.hpp [2:2]
+ boost/fusion/iterator/value_of.hpp [2:2]
+ boost/fusion/mpl.hpp [2:2]
+ boost/fusion/mpl/at.hpp [2:2]
+ boost/fusion/mpl/back.hpp [2:2]
+ boost/fusion/mpl/begin.hpp [2:2]
+ boost/fusion/mpl/clear.hpp [2:2]
+ boost/fusion/mpl/detail/clear.hpp [2:2]
+ boost/fusion/mpl/empty.hpp [2:2]
+ boost/fusion/mpl/end.hpp [2:2]
+ boost/fusion/mpl/erase.hpp [2:2]
+ boost/fusion/mpl/erase_key.hpp [2:2]
+ boost/fusion/mpl/front.hpp [2:2]
+ boost/fusion/mpl/has_key.hpp [2:2]
+ boost/fusion/mpl/insert.hpp [2:2]
+ boost/fusion/mpl/insert_range.hpp [2:2]
+ boost/fusion/mpl/pop_back.hpp [2:2]
+ boost/fusion/mpl/pop_front.hpp [2:2]
+ boost/fusion/mpl/push_back.hpp [2:2]
+ boost/fusion/mpl/push_front.hpp [2:2]
+ boost/fusion/mpl/size.hpp [2:2]
+ boost/fusion/sequence.hpp [2:2]
+ boost/fusion/sequence/comparison.hpp [2:2]
+ boost/fusion/sequence/comparison/detail/equal_to.hpp [2:3]
+ boost/fusion/sequence/comparison/detail/greater.hpp [2:3]
+ boost/fusion/sequence/comparison/detail/greater_equal.hpp [2:3]
+ boost/fusion/sequence/comparison/detail/less.hpp [2:3]
+ boost/fusion/sequence/comparison/detail/less_equal.hpp [2:3]
+ boost/fusion/sequence/comparison/detail/not_equal_to.hpp [2:3]
+ boost/fusion/sequence/comparison/enable_comparison.hpp [2:2]
+ boost/fusion/sequence/comparison/equal_to.hpp [2:3]
+ boost/fusion/sequence/comparison/greater.hpp [2:3]
+ boost/fusion/sequence/comparison/greater_equal.hpp [2:3]
+ boost/fusion/sequence/comparison/less.hpp [2:3]
+ boost/fusion/sequence/comparison/less_equal.hpp [2:3]
+ boost/fusion/sequence/comparison/not_equal_to.hpp [2:3]
+ boost/fusion/sequence/convert.hpp [2:2]
+ boost/fusion/sequence/intrinsic.hpp [2:2]
+ boost/fusion/sequence/intrinsic/at.hpp [2:2]
+ boost/fusion/sequence/intrinsic/at_c.hpp [2:2]
+ boost/fusion/sequence/intrinsic/at_key.hpp [2:3]
+ boost/fusion/sequence/intrinsic/back.hpp [2:2]
+ boost/fusion/sequence/intrinsic/begin.hpp [2:2]
+ boost/fusion/sequence/intrinsic/empty.hpp [2:2]
+ boost/fusion/sequence/intrinsic/end.hpp [2:2]
+ boost/fusion/sequence/intrinsic/front.hpp [2:2]
+ boost/fusion/sequence/intrinsic/has_key.hpp [2:2]
+ boost/fusion/sequence/intrinsic/size.hpp [2:2]
+ boost/fusion/sequence/intrinsic/swap.hpp [2:3]
+ boost/fusion/sequence/intrinsic/value_at.hpp [2:2]
+ boost/fusion/sequence/intrinsic/value_at_key.hpp [2:3]
+ boost/fusion/sequence/intrinsic_fwd.hpp [2:2]
+ boost/fusion/sequence/io.hpp [2:2]
+ boost/fusion/sequence/io/detail/in.hpp [2:4]
+ boost/fusion/sequence/io/detail/manip.hpp [2:4]
+ boost/fusion/sequence/io/detail/out.hpp [2:4]
+ boost/fusion/sequence/io/in.hpp [2:4]
+ boost/fusion/sequence/io/out.hpp [2:4]
+ boost/fusion/sequence/sequence_facade.hpp [2:2]
+ boost/fusion/support.hpp [2:2]
+ boost/fusion/support/category_of.hpp [2:2]
+ boost/fusion/support/detail/access.hpp [2:2]
+ boost/fusion/support/detail/as_fusion_element.hpp [2:3]
+ boost/fusion/support/detail/category_of.hpp [2:2]
+ boost/fusion/support/detail/is_mpl_sequence.hpp [2:3]
+ boost/fusion/support/detail/is_view.hpp [2:2]
+ boost/fusion/support/detail/mpl_iterator_category.hpp [2:2]
+ boost/fusion/support/detail/unknown_key.hpp [2:2]
+ boost/fusion/support/is_iterator.hpp [2:2]
+ boost/fusion/support/is_sequence.hpp [2:2]
+ boost/fusion/support/is_view.hpp [2:2]
+ boost/fusion/support/iterator_base.hpp [2:2]
+ boost/fusion/support/pair.hpp [2:3]
+ boost/fusion/support/sequence_base.hpp [2:3]
+ boost/fusion/support/tag_of.hpp [2:2]
+ boost/fusion/support/tag_of_fwd.hpp [2:3]
+ boost/fusion/support/unused.hpp [2:2]
+ boost/fusion/support/void.hpp [2:2]
+ boost/fusion/tuple.hpp [2:2]
+ boost/fusion/tuple/detail/make_tuple.hpp [2:2]
+ boost/fusion/tuple/detail/make_tuple.hpp [34:34]
+ boost/fusion/tuple/detail/preprocessed/make_tuple.hpp [2:2]
+ boost/fusion/tuple/detail/preprocessed/make_tuple10.hpp [2:2]
+ boost/fusion/tuple/detail/preprocessed/make_tuple20.hpp [2:2]
+ boost/fusion/tuple/detail/preprocessed/make_tuple30.hpp [2:2]
+ boost/fusion/tuple/detail/preprocessed/make_tuple40.hpp [2:2]
+ boost/fusion/tuple/detail/preprocessed/make_tuple50.hpp [2:2]
+ boost/fusion/tuple/detail/preprocessed/tuple.hpp [2:2]
+ boost/fusion/tuple/detail/preprocessed/tuple10.hpp [2:2]
+ boost/fusion/tuple/detail/preprocessed/tuple10_fwd.hpp [2:2]
+ boost/fusion/tuple/detail/preprocessed/tuple20.hpp [2:2]
+ boost/fusion/tuple/detail/preprocessed/tuple20_fwd.hpp [2:2]
+ boost/fusion/tuple/detail/preprocessed/tuple30.hpp [2:2]
+ boost/fusion/tuple/detail/preprocessed/tuple30_fwd.hpp [2:2]
+ boost/fusion/tuple/detail/preprocessed/tuple40.hpp [2:2]
+ boost/fusion/tuple/detail/preprocessed/tuple40_fwd.hpp [2:2]
+ boost/fusion/tuple/detail/preprocessed/tuple50.hpp [2:2]
+ boost/fusion/tuple/detail/preprocessed/tuple50_fwd.hpp [2:2]
+ boost/fusion/tuple/detail/preprocessed/tuple_fwd.hpp [2:2]
+ boost/fusion/tuple/detail/preprocessed/tuple_tie.hpp [2:2]
+ boost/fusion/tuple/detail/preprocessed/tuple_tie10.hpp [2:2]
+ boost/fusion/tuple/detail/preprocessed/tuple_tie20.hpp [2:2]
+ boost/fusion/tuple/detail/preprocessed/tuple_tie30.hpp [2:2]
+ boost/fusion/tuple/detail/preprocessed/tuple_tie40.hpp [2:2]
+ boost/fusion/tuple/detail/preprocessed/tuple_tie50.hpp [2:2]
+ boost/fusion/tuple/detail/tuple.hpp [2:2]
+ boost/fusion/tuple/detail/tuple.hpp [30:30]
+ boost/fusion/tuple/detail/tuple_expand.hpp [2:2]
+ boost/fusion/tuple/detail/tuple_fwd.hpp [2:2]
+ boost/fusion/tuple/detail/tuple_fwd.hpp [22:22]
+ boost/fusion/tuple/detail/tuple_tie.hpp [2:2]
+ boost/fusion/tuple/detail/tuple_tie.hpp [25:25]
+ boost/fusion/view.hpp [2:2]
+ boost/fusion/view/detail/strictest_traversal.hpp [2:3]
+ boost/fusion/view/filter_view.hpp [2:2]
+ boost/fusion/view/filter_view/detail/begin_impl.hpp [2:2]
+ boost/fusion/view/filter_view/detail/deref_impl.hpp [2:2]
+ boost/fusion/view/filter_view/detail/end_impl.hpp [2:2]
+ boost/fusion/view/filter_view/detail/equal_to_impl.hpp [2:3]
+ boost/fusion/view/filter_view/detail/next_impl.hpp [2:2]
+ boost/fusion/view/filter_view/detail/size_impl.hpp [2:2]
+ boost/fusion/view/filter_view/detail/value_of_impl.hpp [2:2]
+ boost/fusion/view/filter_view/filter_view.hpp [2:2]
+ boost/fusion/view/filter_view/filter_view_iterator.hpp [2:2]
+ boost/fusion/view/iterator_range.hpp [2:2]
+ boost/fusion/view/iterator_range/detail/begin_impl.hpp [2:2]
+ boost/fusion/view/iterator_range/detail/end_impl.hpp [2:2]
+ boost/fusion/view/iterator_range/iterator_range.hpp [2:2]
+ boost/fusion/view/joint_view.hpp [2:2]
+ boost/fusion/view/joint_view/detail/begin_impl.hpp [2:2]
+ boost/fusion/view/joint_view/detail/deref_impl.hpp [2:2]
+ boost/fusion/view/joint_view/detail/end_impl.hpp [2:2]
+ boost/fusion/view/joint_view/detail/next_impl.hpp [2:2]
+ boost/fusion/view/joint_view/detail/value_of_impl.hpp [2:2]
+ boost/fusion/view/joint_view/joint_view.hpp [2:2]
+ boost/fusion/view/joint_view/joint_view_iterator.hpp [2:2]
+ boost/fusion/view/nview.hpp [2:4]
+ boost/fusion/view/nview/detail/size_impl.hpp [2:2]
+ boost/fusion/view/reverse_view.hpp [2:2]
+ boost/fusion/view/reverse_view/detail/advance_impl.hpp [2:3]
+ boost/fusion/view/reverse_view/detail/begin_impl.hpp [2:2]
+ boost/fusion/view/reverse_view/detail/deref_impl.hpp [2:2]
+ boost/fusion/view/reverse_view/detail/distance_impl.hpp [2:3]
+ boost/fusion/view/reverse_view/detail/end_impl.hpp [2:2]
+ boost/fusion/view/reverse_view/detail/next_impl.hpp [2:2]
+ boost/fusion/view/reverse_view/detail/prior_impl.hpp [2:2]
+ boost/fusion/view/reverse_view/detail/value_of_impl.hpp [2:2]
+ boost/fusion/view/reverse_view/reverse_view.hpp [2:2]
+ boost/fusion/view/reverse_view/reverse_view_iterator.hpp [2:2]
+ boost/fusion/view/single_view.hpp [2:2]
+ boost/fusion/view/single_view/detail/begin_impl.hpp [2:3]
+ boost/fusion/view/single_view/detail/deref_impl.hpp [2:3]
+ boost/fusion/view/single_view/detail/end_impl.hpp [2:3]
+ boost/fusion/view/single_view/detail/next_impl.hpp [2:3]
+ boost/fusion/view/single_view/detail/value_of_impl.hpp [2:3]
+ boost/fusion/view/single_view/single_view.hpp [2:3]
+ boost/fusion/view/single_view/single_view_iterator.hpp [2:3]
+ boost/fusion/view/transform_view.hpp [2:2]
+ boost/fusion/view/transform_view/detail/advance_impl.hpp [2:3]
+ boost/fusion/view/transform_view/detail/apply_transform_result.hpp [2:3]
+ boost/fusion/view/transform_view/detail/at_impl.hpp [2:3]
+ boost/fusion/view/transform_view/detail/begin_impl.hpp [2:2]
+ boost/fusion/view/transform_view/detail/deref_impl.hpp [2:2]
+ boost/fusion/view/transform_view/detail/distance_impl.hpp [2:3]
+ boost/fusion/view/transform_view/detail/end_impl.hpp [2:2]
+ boost/fusion/view/transform_view/detail/equal_to_impl.hpp [2:2]
+ boost/fusion/view/transform_view/detail/next_impl.hpp [2:2]
+ boost/fusion/view/transform_view/detail/prior_impl.hpp [2:3]
+ boost/fusion/view/transform_view/detail/value_at_impl.hpp [2:3]
+ boost/fusion/view/transform_view/detail/value_of_impl.hpp [2:2]
+ boost/fusion/view/transform_view/transform_view.hpp [2:2]
+ boost/fusion/view/transform_view/transform_view_fwd.hpp [2:2]
+ boost/fusion/view/transform_view/transform_view_iterator.hpp [2:2]
+ boost/fusion/view/zip_view.hpp [2:3]
+ boost/fusion/view/zip_view/detail/advance_impl.hpp [2:3]
+ boost/fusion/view/zip_view/detail/at_impl.hpp [2:3]
+ boost/fusion/view/zip_view/detail/begin_impl.hpp [2:3]
+ boost/fusion/view/zip_view/detail/deref_impl.hpp [2:3]
+ boost/fusion/view/zip_view/detail/distance_impl.hpp [2:3]
+ boost/fusion/view/zip_view/detail/end_impl.hpp [2:3]
+ boost/fusion/view/zip_view/detail/equal_to_impl.hpp [2:3]
+ boost/fusion/view/zip_view/detail/next_impl.hpp [2:3]
+ boost/fusion/view/zip_view/detail/prior_impl.hpp [2:3]
+ boost/fusion/view/zip_view/detail/size_impl.hpp [2:3]
+ boost/fusion/view/zip_view/detail/value_at_impl.hpp [2:3]
+ boost/fusion/view/zip_view/detail/value_of_impl.hpp [2:3]
+ boost/fusion/view/zip_view/zip_view.hpp [2:3]
+ boost/fusion/view/zip_view/zip_view_iterator.hpp [2:3]
+ boost/fusion/view/zip_view/zip_view_iterator_fwd.hpp [2:3]
+ boost/spirit/home/karma/auxiliary/lazy.hpp [1:2]
+ boost/spirit/home/karma/char/char_generator.hpp [1:2]
+ boost/spirit/home/karma/detail/alternative_function.hpp [1:2]
+ boost/spirit/home/karma/detail/attributes.hpp [1:2]
+ boost/spirit/home/karma/detail/fail_function.hpp [1:2]
+ boost/spirit/home/karma/detail/get_casetag.hpp [1:2]
+ boost/spirit/home/karma/detail/pass_container.hpp [2:3]
+ boost/spirit/home/karma/directive/encoding.hpp [1:2]
+ boost/spirit/home/karma/directive/repeat.hpp [1:2]
+ boost/spirit/home/karma/directive/upper_lower_case.hpp [1:2]
+ boost/spirit/home/karma/domain.hpp [1:2]
+ boost/spirit/home/karma/generator.hpp [1:2]
+ boost/spirit/home/karma/meta_compiler.hpp [1:2]
+ boost/spirit/home/karma/nonterminal/debug_handler.hpp [1:2]
+ boost/spirit/home/karma/nonterminal/detail/fcall.hpp [1:2]
+ boost/spirit/home/karma/nonterminal/detail/generator_binder.hpp [1:2]
+ boost/spirit/home/karma/nonterminal/detail/parameterized.hpp [1:3]
+ boost/spirit/home/karma/nonterminal/grammar.hpp [1:2]
+ boost/spirit/home/karma/nonterminal/rule.hpp [1:2]
+ boost/spirit/home/karma/nonterminal/simple_trace.hpp [1:2]
+ boost/spirit/home/karma/operator/alternative.hpp [1:2]
+ boost/spirit/home/karma/operator/and_predicate.hpp [1:2]
+ boost/spirit/home/karma/operator/kleene.hpp [1:2]
+ boost/spirit/home/karma/operator/list.hpp [1:2]
+ boost/spirit/home/karma/operator/not_predicate.hpp [1:2]
+ boost/spirit/home/karma/operator/optional.hpp [1:2]
+ boost/spirit/home/karma/operator/plus.hpp [1:2]
+ boost/spirit/home/karma/operator/sequence.hpp [1:2]
+ boost/spirit/home/karma/reference.hpp [1:2]
+ boost/spirit/home/lex/argument.hpp [1:4]
+ boost/spirit/home/lex/domain.hpp [1:2]
+ boost/spirit/home/lex/lexer/lexertl/wrap_action.hpp [2:4]
+ boost/spirit/home/lex/lexer_type.hpp [1:2]
+ boost/spirit/home/lex/meta_compiler.hpp [1:2]
+ boost/spirit/home/lex/reference.hpp [1:2]
+ boost/spirit/home/lex/tokenize_and_parse_attr.hpp [1:3]
+ boost/spirit/home/qi.hpp [2:2]
+ boost/spirit/home/qi/action.hpp [2:2]
+ boost/spirit/home/qi/action/action.hpp [2:2]
+ boost/spirit/home/qi/auxiliary.hpp [2:3]
+ boost/spirit/home/qi/auxiliary/attr.hpp [2:3]
+ boost/spirit/home/qi/auxiliary/eoi.hpp [2:3]
+ boost/spirit/home/qi/auxiliary/eol.hpp [2:3]
+ boost/spirit/home/qi/auxiliary/eps.hpp [2:2]
+ boost/spirit/home/qi/auxiliary/lazy.hpp [2:2]
+ boost/spirit/home/qi/binary/binary.hpp [2:3]
+ boost/spirit/home/qi/char.hpp [2:2]
+ boost/spirit/home/qi/char/char.hpp [2:4]
+ boost/spirit/home/qi/char/char_class.hpp [2:2]
+ boost/spirit/home/qi/char/char_parser.hpp [2:2]
+ boost/spirit/home/qi/detail/assign_to.hpp [2:4]
+ boost/spirit/home/qi/detail/attributes.hpp [1:2]
+ boost/spirit/home/qi/detail/expect_function.hpp [2:2]
+ boost/spirit/home/qi/detail/expectation_failure.hpp [2:2]
+ boost/spirit/home/qi/detail/fail_function.hpp [2:2]
+ boost/spirit/home/qi/detail/pass_container.hpp [2:3]
+ boost/spirit/home/qi/detail/pass_function.hpp [2:2]
+ boost/spirit/home/qi/detail/permute_function.hpp [2:2]
+ boost/spirit/home/qi/detail/string_parse.hpp [2:2]
+ boost/spirit/home/qi/directive.hpp [2:2]
+ boost/spirit/home/qi/directive/as.hpp [2:4]
+ boost/spirit/home/qi/directive/encoding.hpp [2:2]
+ boost/spirit/home/qi/directive/hold.hpp [2:2]
+ boost/spirit/home/qi/directive/lexeme.hpp [2:2]
+ boost/spirit/home/qi/directive/no_case.hpp [2:2]
+ boost/spirit/home/qi/directive/no_skip.hpp [2:3]
+ boost/spirit/home/qi/directive/omit.hpp [2:2]
+ boost/spirit/home/qi/directive/raw.hpp [2:2]
+ boost/spirit/home/qi/directive/repeat.hpp [2:3]
+ boost/spirit/home/qi/directive/skip.hpp [2:2]
+ boost/spirit/home/qi/domain.hpp [2:2]
+ boost/spirit/home/qi/meta_compiler.hpp [2:2]
+ boost/spirit/home/qi/nonterminal.hpp [2:2]
+ boost/spirit/home/qi/nonterminal/debug_handler.hpp [2:2]
+ boost/spirit/home/qi/nonterminal/debug_handler_state.hpp [2:2]
+ boost/spirit/home/qi/nonterminal/detail/fcall.hpp [2:2]
+ boost/spirit/home/qi/nonterminal/detail/parameterized.hpp [2:3]
+ boost/spirit/home/qi/nonterminal/detail/parser_binder.hpp [2:2]
+ boost/spirit/home/qi/nonterminal/error_handler.hpp [2:2]
+ boost/spirit/home/qi/nonterminal/grammar.hpp [2:2]
+ boost/spirit/home/qi/nonterminal/rule.hpp [2:2]
+ boost/spirit/home/qi/nonterminal/simple_trace.hpp [2:3]
+ boost/spirit/home/qi/nonterminal/success_handler.hpp [2:2]
+ boost/spirit/home/qi/numeric.hpp [2:2]
+ boost/spirit/home/qi/numeric/detail/numeric_utils.hpp [2:6]
+ boost/spirit/home/qi/numeric/detail/real_impl.hpp [2:4]
+ boost/spirit/home/qi/numeric/int.hpp [2:3]
+ boost/spirit/home/qi/numeric/numeric_utils.hpp [2:3]
+ boost/spirit/home/qi/numeric/real.hpp [2:3]
+ boost/spirit/home/qi/numeric/real_policies.hpp [2:3]
+ boost/spirit/home/qi/numeric/uint.hpp [2:4]
+ boost/spirit/home/qi/operator.hpp [2:2]
+ boost/spirit/home/qi/operator/alternative.hpp [2:3]
+ boost/spirit/home/qi/operator/and_predicate.hpp [2:2]
+ boost/spirit/home/qi/operator/difference.hpp [2:2]
+ boost/spirit/home/qi/operator/expect.hpp [2:3]
+ boost/spirit/home/qi/operator/kleene.hpp [2:3]
+ boost/spirit/home/qi/operator/list.hpp [2:3]
+ boost/spirit/home/qi/operator/not_predicate.hpp [2:2]
+ boost/spirit/home/qi/operator/optional.hpp [2:3]
+ boost/spirit/home/qi/operator/permutation.hpp [2:2]
+ boost/spirit/home/qi/operator/plus.hpp [2:3]
+ boost/spirit/home/qi/operator/sequence.hpp [2:3]
+ boost/spirit/home/qi/operator/sequence_base.hpp [2:3]
+ boost/spirit/home/qi/operator/sequential_or.hpp [2:2]
+ boost/spirit/home/qi/parse.hpp [2:3]
+ boost/spirit/home/qi/parse_attr.hpp [1:3]
+ boost/spirit/home/qi/parser.hpp [2:2]
+ boost/spirit/home/qi/reference.hpp [2:2]
+ boost/spirit/home/qi/skip_over.hpp [2:2]
+ boost/spirit/home/qi/stream/match_manip.hpp [2:3]
+ boost/spirit/home/qi/stream/match_manip_attr.hpp [2:3]
+ boost/spirit/home/qi/string.hpp [2:2]
+ boost/spirit/home/qi/string/detail/tst.hpp [2:2]
+ boost/spirit/home/qi/string/lit.hpp [2:4]
+ boost/spirit/home/qi/string/symbols.hpp [2:2]
+ boost/spirit/home/qi/string/tst.hpp [2:2]
+ boost/spirit/home/qi/string/tst_map.hpp [2:2]
+ boost/spirit/home/qi/what.hpp [2:2]
+ boost/spirit/home/support.hpp [2:2]
+ boost/spirit/home/support/action_dispatch.hpp [2:4]
+ boost/spirit/home/support/algorithm/any.hpp [2:2]
+ boost/spirit/home/support/algorithm/any_if.hpp [2:3]
+ boost/spirit/home/support/algorithm/any_if_ns.hpp [2:3]
+ boost/spirit/home/support/algorithm/any_if_ns_so.hpp [2:3]
+ boost/spirit/home/support/algorithm/any_ns.hpp [2:2]
+ boost/spirit/home/support/algorithm/any_ns_so.hpp [2:2]
+ boost/spirit/home/support/argument.hpp [2:4]
+ boost/spirit/home/support/attributes.hpp [2:3]
+ boost/spirit/home/support/attributes_fwd.hpp [2:4]
+ boost/spirit/home/support/char_class.hpp [2:3]
+ boost/spirit/home/support/char_encoding/ascii.hpp [2:3]
+ boost/spirit/home/support/char_encoding/iso8859_1.hpp [2:3]
+ boost/spirit/home/support/char_encoding/standard.hpp [2:3]
+ boost/spirit/home/support/char_encoding/standard_wide.hpp [2:3]
+ boost/spirit/home/support/char_encoding/unicode.hpp [2:3]
+ boost/spirit/home/support/char_encoding/unicode/category_table.hpp [2:2]
+ boost/spirit/home/support/char_encoding/unicode/create_tables.cpp [2:2]
+ boost/spirit/home/support/char_encoding/unicode/create_tables.cpp [450:450]
+ boost/spirit/home/support/char_encoding/unicode/lowercase_table.hpp [2:2]
+ boost/spirit/home/support/char_encoding/unicode/query.hpp [2:2]
+ boost/spirit/home/support/char_encoding/unicode/script_table.hpp [2:2]
+ boost/spirit/home/support/char_encoding/unicode/uppercase_table.hpp [2:2]
+ boost/spirit/home/support/char_set/basic_chset.hpp [2:4]
+ boost/spirit/home/support/char_set/range.hpp [2:2]
+ boost/spirit/home/support/char_set/range_functions.hpp [2:2]
+ boost/spirit/home/support/char_set/range_run.hpp [2:2]
+ boost/spirit/home/support/char_set/range_run_impl.hpp [2:2]
+ boost/spirit/home/support/container.hpp [2:4]
+ boost/spirit/home/support/context.hpp [2:4]
+ boost/spirit/home/support/detail/as_variant.hpp [2:2]
+ boost/spirit/home/support/detail/get_encoding.hpp [1:2]
+ boost/spirit/home/support/detail/pow10.hpp [2:4]
+ boost/spirit/home/support/detail/sign.hpp [2:4]
+ boost/spirit/home/support/detail/what_function.hpp [2:2]
+ boost/spirit/home/support/extended_variant.hpp [2:2]
+ boost/spirit/home/support/info.hpp [2:2]
+ boost/spirit/home/support/iterators/line_pos_iterator.hpp [2:4]
+ boost/spirit/home/support/lazy.hpp [2:2]
+ boost/spirit/home/support/nonterminal/expand_arg.hpp [2:2]
+ boost/spirit/home/support/nonterminal/extract_param.hpp [2:4]
+ boost/spirit/home/support/nonterminal/locals.hpp [2:3]
+ boost/spirit/home/support/sequence_base_id.hpp [2:2]
+ boost/spirit/home/support/string_traits.hpp [2:4]
+ boost/spirit/home/support/terminal.hpp [2:4]
+ boost/spirit/home/support/terminal_expression.hpp [2:4]
+ boost/spirit/home/support/unused.hpp [2:3]
+ boost/spirit/home/support/utf8.hpp [2:2]
+ boost/spirit/home/support/utree.hpp [2:2]
+ boost/spirit/home/support/utree/detail/utree_detail1.hpp [2:4]
+ boost/spirit/home/support/utree/detail/utree_detail2.hpp [2:4]
+ boost/spirit/home/support/utree/operators.hpp [2:4]
+ boost/spirit/home/support/utree/utree.hpp [2:4]
+ boost/spirit/home/support/utree/utree_traits.hpp [2:4]
+ boost/spirit/home/x3/binary/binary.hpp [2:3]
+ boost/spirit/home/x3/directive/repeat.hpp [2:4]
+ boost/spirit/home/x3/version.hpp [2:4]
+ boost/spirit/include/karma.hpp [2:4]
+ boost/spirit/include/karma_action.hpp [2:4]
+ boost/spirit/include/karma_alternative.hpp [2:4]
+ boost/spirit/include/karma_and_predicate.hpp [2:4]
+ boost/spirit/include/karma_attr_cast.hpp [2:4]
+ boost/spirit/include/karma_auto.hpp [2:4]
+ boost/spirit/include/karma_auxiliary.hpp [2:4]
+ boost/spirit/include/karma_binary.hpp [2:4]
+ boost/spirit/include/karma_bool.hpp [2:4]
+ boost/spirit/include/karma_buffer.hpp [2:4]
+ boost/spirit/include/karma_center_alignment.hpp [2:4]
+ boost/spirit/include/karma_char.hpp [2:4]
+ boost/spirit/include/karma_char_.hpp [2:4]
+ boost/spirit/include/karma_char_class.hpp [2:4]
+ boost/spirit/include/karma_columns.hpp [2:4]
+ boost/spirit/include/karma_delimit.hpp [2:4]
+ boost/spirit/include/karma_directive.hpp [2:4]
+ boost/spirit/include/karma_domain.hpp [2:4]
+ boost/spirit/include/karma_eol.hpp [2:4]
+ boost/spirit/include/karma_eps.hpp [2:4]
+ boost/spirit/include/karma_format.hpp [2:4]
+ boost/spirit/include/karma_format_attr.hpp [2:4]
+ boost/spirit/include/karma_format_auto.hpp [2:4]
+ boost/spirit/include/karma_generate.hpp [2:4]
+ boost/spirit/include/karma_generate_attr.hpp [2:4]
+ boost/spirit/include/karma_generate_auto.hpp [2:4]
+ boost/spirit/include/karma_int.hpp [2:4]
+ boost/spirit/include/karma_kleene.hpp [2:4]
+ boost/spirit/include/karma_lazy.hpp [2:4]
+ boost/spirit/include/karma_left_alignment.hpp [2:4]
+ boost/spirit/include/karma_list.hpp [2:4]
+ boost/spirit/include/karma_maxwidth.hpp [2:4]
+ boost/spirit/include/karma_no_delimit.hpp [2:4]
+ boost/spirit/include/karma_nonterminal.hpp [2:4]
+ boost/spirit/include/karma_not_predicate.hpp [2:4]
+ boost/spirit/include/karma_numeric.hpp [2:4]
+ boost/spirit/include/karma_omit.hpp [2:4]
+ boost/spirit/include/karma_operator.hpp [2:4]
+ boost/spirit/include/karma_optional.hpp [2:4]
+ boost/spirit/include/karma_phoenix_attributes.hpp [2:4]
+ boost/spirit/include/karma_plus.hpp [2:4]
+ boost/spirit/include/karma_real.hpp [2:4]
+ boost/spirit/include/karma_repeat.hpp [2:4]
+ boost/spirit/include/karma_right_alignment.hpp [2:4]
+ boost/spirit/include/karma_sequence.hpp [2:4]
+ boost/spirit/include/karma_stream.hpp [2:4]
+ boost/spirit/include/karma_strict_relaxed.hpp [2:4]
+ boost/spirit/include/karma_string.hpp [2:4]
+ boost/spirit/include/karma_symbols.hpp [2:4]
+ boost/spirit/include/karma_uint.hpp [2:4]
+ boost/spirit/include/karma_upper_lower_case.hpp [2:4]
+ boost/spirit/include/karma_verbatim.hpp [2:4]
+ boost/spirit/include/karma_what.hpp [2:4]
+ boost/spirit/include/lex.hpp [2:4]
+ boost/spirit/include/lex_domain.hpp [2:4]
+ boost/spirit/include/lex_lexer.hpp [2:4]
+ boost/spirit/include/lex_lexertl.hpp [2:4]
+ boost/spirit/include/lex_lexertl_position_token.hpp [2:4]
+ boost/spirit/include/lex_lexertl_token.hpp [2:4]
+ boost/spirit/include/lex_static_lexertl.hpp [2:4]
+ boost/spirit/include/lex_tokenize_and_parse.hpp [2:4]
+ boost/spirit/include/phoenix.hpp [2:4]
+ boost/spirit/include/phoenix_algorithm.hpp [2:4]
+ boost/spirit/include/phoenix_bind.hpp [2:4]
+ boost/spirit/include/phoenix_container.hpp [2:4]
+ boost/spirit/include/phoenix_core.hpp [2:4]
+ boost/spirit/include/phoenix_function.hpp [2:4]
+ boost/spirit/include/phoenix_fusion.hpp [2:4]
+ boost/spirit/include/phoenix_limits.hpp [2:4]
+ boost/spirit/include/phoenix_object.hpp [2:4]
+ boost/spirit/include/phoenix_operator.hpp [2:4]
+ boost/spirit/include/phoenix_scope.hpp [2:4]
+ boost/spirit/include/phoenix_statement.hpp [2:4]
+ boost/spirit/include/phoenix_stl.hpp [2:4]
+ boost/spirit/include/phoenix_version.hpp [2:4]
+ boost/spirit/include/qi.hpp [2:4]
+ boost/spirit/include/qi_action.hpp [2:4]
+ boost/spirit/include/qi_alternative.hpp [2:4]
+ boost/spirit/include/qi_and_predicate.hpp [2:4]
+ boost/spirit/include/qi_as_string.hpp [2:4]
+ boost/spirit/include/qi_attr.hpp [2:4]
+ boost/spirit/include/qi_attr_cast.hpp [2:4]
+ boost/spirit/include/qi_auto.hpp [2:4]
+ boost/spirit/include/qi_auxiliary.hpp [2:4]
+ boost/spirit/include/qi_binary.hpp [2:4]
+ boost/spirit/include/qi_bool.hpp [2:4]
+ boost/spirit/include/qi_char.hpp [2:4]
+ boost/spirit/include/qi_char_.hpp [2:4]
+ boost/spirit/include/qi_char_class.hpp [2:4]
+ boost/spirit/include/qi_core.hpp [2:4]
+ boost/spirit/include/qi_difference.hpp [2:4]
+ boost/spirit/include/qi_directive.hpp [2:4]
+ boost/spirit/include/qi_domain.hpp [2:4]
+ boost/spirit/include/qi_eoi.hpp [2:4]
+ boost/spirit/include/qi_eol.hpp [2:4]
+ boost/spirit/include/qi_eps.hpp [2:4]
+ boost/spirit/include/qi_expect.hpp [2:4]
+ boost/spirit/include/qi_grammar.hpp [2:4]
+ boost/spirit/include/qi_hold.hpp [2:4]
+ boost/spirit/include/qi_int.hpp [2:4]
+ boost/spirit/include/qi_kleene.hpp [2:4]
+ boost/spirit/include/qi_lazy.hpp [2:4]
+ boost/spirit/include/qi_lexeme.hpp [2:4]
+ boost/spirit/include/qi_list.hpp [2:4]
+ boost/spirit/include/qi_lit.hpp [2:4]
+ boost/spirit/include/qi_match.hpp [2:4]
+ boost/spirit/include/qi_match_attr.hpp [2:4]
+ boost/spirit/include/qi_match_auto.hpp [2:4]
+ boost/spirit/include/qi_no_case.hpp [2:4]
+ boost/spirit/include/qi_nonterminal.hpp [2:4]
+ boost/spirit/include/qi_not_predicate.hpp [2:4]
+ boost/spirit/include/qi_numeric.hpp [2:4]
+ boost/spirit/include/qi_omit.hpp [2:4]
+ boost/spirit/include/qi_operator.hpp [2:4]
+ boost/spirit/include/qi_optional.hpp [2:4]
+ boost/spirit/include/qi_parse.hpp [2:4]
+ boost/spirit/include/qi_parse_attr.hpp [2:4]
+ boost/spirit/include/qi_parse_auto.hpp [2:4]
+ boost/spirit/include/qi_permutation.hpp [2:4]
+ boost/spirit/include/qi_plus.hpp [2:4]
+ boost/spirit/include/qi_raw.hpp [2:4]
+ boost/spirit/include/qi_real.hpp [2:4]
+ boost/spirit/include/qi_repeat.hpp [2:4]
+ boost/spirit/include/qi_rule.hpp [2:4]
+ boost/spirit/include/qi_sequence.hpp [2:4]
+ boost/spirit/include/qi_sequential_or.hpp [2:4]
+ boost/spirit/include/qi_skip.hpp [2:4]
+ boost/spirit/include/qi_stream.hpp [2:4]
+ boost/spirit/include/qi_string.hpp [2:4]
+ boost/spirit/include/qi_symbols.hpp [2:4]
+ boost/spirit/include/qi_uint.hpp [2:4]
+ boost/spirit/include/qi_what.hpp [2:4]
+ boost/spirit/include/support.hpp [2:4]
+ boost/spirit/include/support_any.hpp [2:4]
+ boost/spirit/include/support_any_if.hpp [2:4]
+ boost/spirit/include/support_any_if_ns.hpp [2:4]
+ boost/spirit/include/support_any_if_ns_so.hpp [2:4]
+ boost/spirit/include/support_any_ns.hpp [2:4]
+ boost/spirit/include/support_any_ns_so.hpp [2:4]
+ boost/spirit/include/support_argument.hpp [2:4]
+ boost/spirit/include/support_ascii.hpp [2:4]
+ boost/spirit/include/support_attributes.hpp [2:4]
+ boost/spirit/include/support_char_class.hpp [2:4]
+ boost/spirit/include/support_iso8859_1.hpp [2:4]
+ boost/spirit/include/support_istream_iterator.hpp [2:4]
+ boost/spirit/include/support_locals.hpp [2:4]
+ boost/spirit/include/support_look_ahead.hpp [2:4]
+ boost/spirit/include/support_modify.hpp [2:4]
+ boost/spirit/include/support_multi_pass.hpp [2:4]
+ boost/spirit/include/support_multi_pass_fwd.hpp [2:4]
+ boost/spirit/include/support_standard.hpp [2:4]
+ boost/spirit/include/support_standard_wide.hpp [2:4]
+ boost/spirit/include/support_string_traits.hpp [2:4]
+ boost/spirit/include/support_unused.hpp [2:4]
+ boost/spirit/include/version.hpp [2:4]
+ boost/spirit/repository/home/karma.hpp [1:2]
+ boost/spirit/repository/home/karma/directive.hpp [1:2]
+ boost/spirit/repository/home/karma/nonterminal.hpp [1:3]
+ boost/spirit/repository/home/karma/nonterminal/subrule.hpp [1:3]
+ boost/spirit/repository/home/qi.hpp [1:2]
+ boost/spirit/repository/home/qi/directive.hpp [1:2]
+ boost/spirit/repository/home/qi/directive/distinct.hpp [1:3]
+ boost/spirit/repository/home/qi/directive/kwd.hpp [2:3]
+ boost/spirit/repository/home/qi/nonterminal.hpp [1:3]
+ boost/spirit/repository/home/qi/nonterminal/subrule.hpp [2:3]
+ boost/spirit/repository/home/qi/operator.hpp [1:3]
+ boost/spirit/repository/home/qi/operator/keywords.hpp [2:3]
+ boost/spirit/repository/home/qi/primitive.hpp [1:2]
+ boost/spirit/repository/include/karma.hpp [2:4]
+ boost/spirit/repository/include/karma_confix.hpp [2:4]
+ boost/spirit/repository/include/karma_directive.hpp [2:4]
+ boost/spirit/repository/include/karma_nonterminal.hpp [2:5]
+ boost/spirit/repository/include/karma_subrule.hpp [2:5]
+ boost/spirit/repository/include/qi.hpp [2:4]
+ boost/spirit/repository/include/qi_confix.hpp [2:4]
+ boost/spirit/repository/include/qi_directive.hpp [2:4]
+ boost/spirit/repository/include/qi_distinct.hpp [2:4]
+ boost/spirit/repository/include/qi_flush_multi_pass.hpp [2:4]
+ boost/spirit/repository/include/qi_iter_pos.hpp [2:4]
+ boost/spirit/repository/include/qi_keywords.hpp [2:5]
+ boost/spirit/repository/include/qi_kwd.hpp [2:5]
+ boost/spirit/repository/include/qi_kwd.hpp [21:24]
+ boost/spirit/repository/include/qi_primitive.hpp [2:4]
+ boost/spirit/repository/include/qi_subrule.hpp [2:5]
+ boost/spirit/version.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 49f4a36bb0a21c79325499a364e4562a
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2010 Joel de Guzman
+ Copyright (c) 2001-2010 Hartmut Kaiser
+ Copyright (c) 2010 Bryce Lelbach
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/include/karma_as.hpp [2:5]
+ boost/spirit/include/qi_as.hpp [2:5]
+ boost/spirit/include/support_line_pos_iterator.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4a060e80d859c7e83ba0c643ebbf6487
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/gcc.hpp [1:9]
+ boost/config/platform/bsd.hpp [1:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4a2a96991e1c16ba5bf1e9f8b0fbe7d2
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2004 Gerald I. Evenden
+ // Copyright (c) 2012 Martin Raspaud
+ // See also (section 4.4.3.2):
+ // http://www.eumetsat.int/en/area4/msg/news/us_doc/cgms_03_26.pdf
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/srs/projections/proj/geos.hpp [26:29]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4a4c85d50d7786e732eb8f9d7ce88a13
+BELONGS ya.make
+ License text:
+ // (C) Copyright 2007 Andrew Sutton
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/detail/geodesic.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4a4fbc450e95f537c721c3233d392cc2
+BELONGS ya.make
+ License text:
+ * Copyright 2000 Jens Maurer
+ * Copyright 2002-2003 Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/interval/arith.hpp [3:4]
+ boost/numeric/interval/arith2.hpp [7:7]
+ boost/numeric/interval/interval.hpp [3:3]
+ boost/numeric/interval/limits.hpp [3:4]
+ boost/numeric/interval/rounded_arith.hpp [3:3]
+ boost/numeric/interval/rounded_transc.hpp [3:3]
+ boost/numeric/interval/rounding.hpp [3:3]
+ boost/numeric/interval/utility.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4a821e5758b93634e3a4ab4a06284e40
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2015-2017 Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/formulas/andoyer_inverse.hpp [5:5]
+ boost/geometry/formulas/area_formulas.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4aa8761b7714a5e9baf4ca567e1fc644
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/function_output_iterator.hpp at line 3
+ License text:
+ // (C) Copyright Andrey Semashev 2017.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/function_output_iterator.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4ad7fd89f16a988c974121eaf0fbfd94
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/core/no_exceptions_support.hpp at line 11
+ License text:
+ // (C) Copyright 2004 Pavel Vozenilek.
+ // Use, modification and distribution is subject to the Boost Software
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/core/no_exceptions_support.hpp [9:11]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4b3a6c1fe0a4a17b8d5433d346ee3069
+BELONGS ya.make
+ License text:
+ // (C) Copyright 2009-2012 Anthony Williams
+ // (C) Copyright 2012 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/scoped_thread.hpp [4:5]
+ boost/thread/thread_functors.hpp [4:5]
+ boost/thread/thread_guard.hpp [4:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4b73115721ced28727c2b8b4f4a85abc
+BELONGS ya.make
+ License text:
+ // Copyright Beman Dawes 2014
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/detail/lightweight_test_report.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4b76d293e7e0b07c0269a1e8929c4f9a
+BELONGS libs/filesystem/ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: libs/filesystem/src/portability.cpp at line 5
+ License text:
+ // Copyright 2002-2005 Beman Dawes
+ // Use, modification, and distribution is subject to the Boost Software
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ libs/filesystem/src/portability.cpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4bcc7787f0424f3d32f66485fdb7a1dd
+BELONGS ya.make
+ License text:
+ // (C) Copyright Brian Kuhl 2016.
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/diab.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4c05b98b305186bded685dc5e858e190
+BELONGS ya.make
+ License text:
+ // Copyright 2007 David Jenkins.
+ // Copyright 2007 Eric Niebler.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/xpressive/detail/utility/symbols.hpp [9:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4c2f4dc3c4ca9b711516d642e24bae0f
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2014 Joel de Guzman
+ Copyright (c) 2001-2012 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/x3/support/traits/make_attribute.hpp [2:4]
+ boost/spirit/home/x3/support/traits/transform_attribute.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4c74a8a617981a115b83571d3d86df10
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2003 Joel de Guzman
+ Copyright (c) 2002-2003 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/attribute.hpp [2:4]
+ boost/spirit/home/classic/attribute/closure.hpp [2:4]
+ boost/spirit/home/classic/attribute/closure_context.hpp [2:4]
+ boost/spirit/home/classic/core/assert.hpp [2:4]
+ boost/spirit/home/classic/core/non_terminal/impl/subrule.ipp [2:4]
+ boost/spirit/home/classic/core/non_terminal/parser_context.hpp [2:4]
+ boost/spirit/home/classic/core/non_terminal/subrule.hpp [2:4]
+ boost/spirit/home/classic/debug.hpp [2:4]
+ boost/spirit/home/classic/debug/impl/parser_names.ipp [2:4]
+ boost/spirit/home/classic/debug/minimal.hpp [2:4]
+ boost/spirit/home/classic/debug/parser_names.hpp [2:4]
+ boost/spirit/home/classic/meta/as_parser.hpp [2:4]
+ boost/spirit/home/classic/meta/fundamental.hpp [2:3]
+ boost/spirit/home/classic/meta/impl/fundamental.ipp [2:3]
+ boost/spirit/home/classic/meta/impl/refactoring.ipp [2:3]
+ boost/spirit/home/classic/meta/impl/traverse.ipp [2:4]
+ boost/spirit/home/classic/meta/refactoring.hpp [2:3]
+ boost/spirit/home/classic/meta/traverse.hpp [2:4]
+ boost/spirit/home/classic/utility/confix.hpp [2:3]
+ boost/spirit/home/classic/utility/impl/confix.ipp [2:3]
+ boost/spirit/home/classic/utility/impl/escape_char.ipp [2:4]
+ boost/spirit/home/classic/utility/impl/lists.ipp [2:3]
+ boost/spirit/home/classic/utility/impl/regex.ipp [2:3]
+ boost/spirit/home/classic/utility/lists.hpp [2:3]
+ boost/spirit/home/classic/utility/regex.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4c7e1f597f1997587410c32f9a6d6fdb
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2005 Aaron Windsor
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/max_cardinality_matching.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4cf14bcc6afe3ad08dfd547e89ac0920
+BELONGS ya.make
+ License text:
+ // Copyright 2010 The Trustees of Indiana University.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/loop_erased_random_walk.hpp [1:1]
+ boost/graph/random_spanning_tree.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4d01e73e2dcbf51faefedb12549edd5b
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2003 Eric Friedman
+ // Copyright (c) 2015-2016 Antony Polukhin
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/variant/detail/forced_return.hpp [6:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4d10949f0d1cde0db83ea5d5329e99ec
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/detail/default_ops.hpp at line 4, boost/multiprecision/detail/et_ops.hpp at line 4, boost/multiprecision/detail/functions/constants.hpp at line 3, boost/multiprecision/detail/functions/trig.hpp at line 4, boost/multiprecision/detail/generic_interconvert.hpp at line 4, boost/multiprecision/detail/number_base.hpp at line 4, boost/multiprecision/gmp.hpp at line 4, boost/multiprecision/mpfi.hpp at line 4, boost/multiprecision/mpfr.hpp at line 4, boost/multiprecision/number.hpp at line 4, boost/multiprecision/rational_adaptor.hpp at line 4, boost/multiprecision/tommath.hpp at line 4
+ License text:
+ // Copyright 2011 John Maddock. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/multiprecision/detail/default_ops.hpp [2:4]
+ boost/multiprecision/detail/et_ops.hpp [2:4]
+ boost/multiprecision/detail/functions/constants.hpp [1:3]
+ boost/multiprecision/detail/functions/trig.hpp [2:5]
+ boost/multiprecision/detail/generic_interconvert.hpp [2:4]
+ boost/multiprecision/detail/number_base.hpp [2:4]
+ boost/multiprecision/gmp.hpp [2:4]
+ boost/multiprecision/mpfi.hpp [2:4]
+ boost/multiprecision/mpfr.hpp [2:4]
+ boost/multiprecision/number.hpp [2:4]
+ boost/multiprecision/rational_adaptor.hpp [2:4]
+ boost/multiprecision/tommath.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4d26b7ae91cf6f8491cee13434ff5797
+BELONGS ya.make
+ License text:
+ * Copyright (c) 1996
+ * Silicon Graphics Computer Systems, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/detail/algorithm.hpp [19:20]
+ boost/detail/binary_search.hpp [17:18]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4d26b906dcfafbac2938fc9f553e8765
+BELONGS libs/filesystem/ya.make
+ License text:
+ // Copyright Beman Dawes 2008, 2009
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ libs/filesystem/src/path_traits.cpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4db4957d3d52be4c9de2df56f877800f
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2017.
+ // Copyright Nick Thompson 2017.
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/quadrature/gauss_kronrod.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4dd0817dd612e55b1dd91a830dc51207
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001-2010 Hartmut Kaiser
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/lex/primitives.hpp [1:1]
+ boost/spirit/include/karma_as.hpp [2:5]
+ boost/spirit/include/qi_as.hpp [2:5]
+ boost/spirit/include/support_line_pos_iterator.hpp [2:5]
+ boost/spirit/repository/include/qi_nonterminal.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4df5e60c86e10739c2c2ec25592f4193
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/math/special_functions/asinh.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/asinh.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4e228b87a974a356041866811c36a2ce
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2010-2011 David Bellot
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/ublas/doxydoc.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4e9027c862fbd56baf0b8eecfc598a5a
+BELONGS ya.make
+ License text:
+ // Copyright Beman Dawes 2007
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/system/cygwin_error.hpp [3:3]
+ boost/system/linux_error.hpp [3:3]
+ boost/system/windows_error.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4ead388a4bb56a31d7a3106cdc5eb0f6
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/void_cast.hpp at line 14
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/serialization/void_cast.hpp [12:14]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4ec4f75b23ed6344d1947aa985c282ce
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/vacpp.hpp [1:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4ef1fe58b54acfb9b98d3ce465cd11fe
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/tail.hpp at line 6, boost/accumulators/statistics/tail_variate.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/accumulators/statistics/tail.hpp [4:6]
+ boost/accumulators/statistics/tail_variate.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4f1063140d26ee2fe18bca779ccaef80
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/poly_collection/any_collection.hpp at line 3, boost/poly_collection/any_collection_fwd.hpp at line 3, boost/poly_collection/base_collection.hpp at line 3, boost/poly_collection/base_collection_fwd.hpp at line 3, boost/poly_collection/detail/any_model.hpp at line 3, boost/poly_collection/detail/base_model.hpp at line 3, boost/poly_collection/detail/callable_wrapper.hpp at line 3, boost/poly_collection/detail/function_model.hpp at line 3, boost/poly_collection/detail/is_acceptable.hpp at line 3, boost/poly_collection/detail/is_constructible.hpp at line 3, boost/poly_collection/detail/is_final.hpp at line 3, boost/poly_collection/detail/is_invocable.hpp at line 3, boost/poly_collection/detail/is_nothrow_eq_comparable.hpp at line 3, boost/poly_collection/detail/iterator_impl.hpp at line 3, boost/poly_collection/detail/iterator_traits.hpp at line 3, boost/poly_collection/detail/newdelete_allocator.hpp at line 3, boost/poly_collection/detail/packed_segment.hpp at line 3, boost/poly_collection/detail/poly_collection.hpp at line 3, boost/poly_collection/detail/segment.hpp at line 3, boost/poly_collection/detail/segment_backend.hpp at line 3, boost/poly_collection/detail/segment_split.hpp at line 3, boost/poly_collection/detail/split_segment.hpp at line 3, boost/poly_collection/detail/stride_iterator.hpp at line 3, boost/poly_collection/detail/type_info_map.hpp at line 3, boost/poly_collection/detail/type_restitution.hpp at line 3, boost/poly_collection/detail/value_holder.hpp at line 3, boost/poly_collection/exception.hpp at line 3, boost/poly_collection/function_collection.hpp at line 3
+ License text:
+ /* Copyright 2016-2017 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/poly_collection/any_collection.hpp [1:3]
+ boost/poly_collection/any_collection_fwd.hpp [1:3]
+ boost/poly_collection/base_collection.hpp [1:3]
+ boost/poly_collection/base_collection_fwd.hpp [1:3]
+ boost/poly_collection/detail/any_model.hpp [1:3]
+ boost/poly_collection/detail/base_model.hpp [1:3]
+ boost/poly_collection/detail/callable_wrapper.hpp [1:3]
+ boost/poly_collection/detail/function_model.hpp [1:3]
+ boost/poly_collection/detail/is_acceptable.hpp [1:3]
+ boost/poly_collection/detail/is_constructible.hpp [1:3]
+ boost/poly_collection/detail/is_final.hpp [1:3]
+ boost/poly_collection/detail/is_invocable.hpp [1:3]
+ boost/poly_collection/detail/is_nothrow_eq_comparable.hpp [1:3]
+ boost/poly_collection/detail/iterator_impl.hpp [1:3]
+ boost/poly_collection/detail/iterator_traits.hpp [1:3]
+ boost/poly_collection/detail/newdelete_allocator.hpp [1:3]
+ boost/poly_collection/detail/packed_segment.hpp [1:3]
+ boost/poly_collection/detail/poly_collection.hpp [1:3]
+ boost/poly_collection/detail/segment.hpp [1:3]
+ boost/poly_collection/detail/segment_backend.hpp [1:3]
+ boost/poly_collection/detail/segment_split.hpp [1:3]
+ boost/poly_collection/detail/split_segment.hpp [1:3]
+ boost/poly_collection/detail/stride_iterator.hpp [1:3]
+ boost/poly_collection/detail/type_info_map.hpp [1:3]
+ boost/poly_collection/detail/type_restitution.hpp [1:3]
+ boost/poly_collection/detail/value_holder.hpp [1:3]
+ boost/poly_collection/exception.hpp [1:3]
+ boost/poly_collection/function_collection.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4f11ac86f9301429ed799696ecdddc76
+BELONGS ya.make
+ License text:
+ // Copyright 2002, 2009, 2014 Peter Dimov
+ // Copyright 2008-2009 Frank Mori Hess
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/enable_shared_from_raw.hpp [7:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4f43a7aeacf6672ca74203de5526f7c7
+BELONGS ya.make
+ License text:
+ // Copyright 2005 Douglas Gregor.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpi/detail/point_to_point.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4f5d57c8559aaf8bf412ae6bc295ec7e
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/allocator_utilities.hpp at line 3, boost/multi_index/detail/access_specifier.hpp at line 3, boost/multi_index/detail/adl_swap.hpp at line 3, boost/multi_index/detail/base_type.hpp at line 3, boost/multi_index/detail/converter.hpp at line 3, boost/multi_index/detail/do_not_copy_elements_tag.hpp at line 3, boost/multi_index/detail/duplicates_iterator.hpp at line 3, boost/multi_index/detail/has_tag.hpp at line 3, boost/multi_index/detail/hash_index_args.hpp at line 3, boost/multi_index/detail/index_saver.hpp at line 3, boost/multi_index/detail/invariant_assert.hpp at line 3, boost/multi_index/detail/is_index_list.hpp at line 3, boost/multi_index/detail/iter_adaptor.hpp at line 3, boost/multi_index/detail/modify_key_adaptor.hpp at line 3, boost/multi_index/detail/no_duplicate_tags.hpp at line 3, boost/multi_index/detail/node_type.hpp at line 3, boost/multi_index/detail/ord_index_args.hpp at line 3, boost/multi_index/detail/rnd_index_loader.hpp at line 3, boost/multi_index/detail/safe_mode.hpp at line 3, boost/multi_index/detail/scope_guard.hpp at line 3, boost/multi_index/detail/serialization_version.hpp at line 3, boost/multi_index/detail/uintptr_type.hpp at line 3, boost/multi_index/detail/unbounded.hpp at line 3, boost/multi_index/detail/vartempl_support.hpp at line 3, boost/multi_index/hashed_index_fwd.hpp at line 3, boost/multi_index/identity_fwd.hpp at line 3, boost/multi_index/indexed_by.hpp at line 3, boost/multi_index/key_extractors.hpp at line 3, boost/multi_index/random_access_index_fwd.hpp at line 3, boost/multi_index/safe_mode_errors.hpp at line 3, boost/multi_index/sequenced_index_fwd.hpp at line 3, boost/multi_index/tag.hpp at line 3, boost/multi_index_container_fwd.hpp at line 3
+ License text:
+ /* Copyright 2003-2013 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/detail/allocator_utilities.hpp [1:3]
+ boost/multi_index/detail/access_specifier.hpp [1:3]
+ boost/multi_index/detail/adl_swap.hpp [1:3]
+ boost/multi_index/detail/base_type.hpp [1:3]
+ boost/multi_index/detail/converter.hpp [1:3]
+ boost/multi_index/detail/do_not_copy_elements_tag.hpp [1:3]
+ boost/multi_index/detail/duplicates_iterator.hpp [1:3]
+ boost/multi_index/detail/has_tag.hpp [1:3]
+ boost/multi_index/detail/hash_index_args.hpp [1:3]
+ boost/multi_index/detail/index_saver.hpp [1:3]
+ boost/multi_index/detail/invariant_assert.hpp [1:3]
+ boost/multi_index/detail/is_index_list.hpp [1:3]
+ boost/multi_index/detail/iter_adaptor.hpp [1:3]
+ boost/multi_index/detail/modify_key_adaptor.hpp [1:3]
+ boost/multi_index/detail/no_duplicate_tags.hpp [1:3]
+ boost/multi_index/detail/node_type.hpp [1:3]
+ boost/multi_index/detail/ord_index_args.hpp [1:3]
+ boost/multi_index/detail/rnd_index_loader.hpp [1:3]
+ boost/multi_index/detail/safe_mode.hpp [1:3]
+ boost/multi_index/detail/scope_guard.hpp [1:3]
+ boost/multi_index/detail/serialization_version.hpp [1:3]
+ boost/multi_index/detail/uintptr_type.hpp [1:3]
+ boost/multi_index/detail/unbounded.hpp [1:3]
+ boost/multi_index/detail/vartempl_support.hpp [1:3]
+ boost/multi_index/hashed_index_fwd.hpp [1:3]
+ boost/multi_index/identity_fwd.hpp [1:3]
+ boost/multi_index/indexed_by.hpp [1:3]
+ boost/multi_index/key_extractors.hpp [1:3]
+ boost/multi_index/random_access_index_fwd.hpp [1:3]
+ boost/multi_index/safe_mode_errors.hpp [1:3]
+ boost/multi_index/sequenced_index_fwd.hpp [1:3]
+ boost/multi_index/tag.hpp [1:3]
+ boost/multi_index_container_fwd.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4f74cd3a2feaee90f0c6c2252b0815e4
+BELONGS ya.make
+ License text:
+ Copyright 2014 Glen Joseph Fernandes
+ (glenjofe@gmail.com)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/align/aligned_allocator_adaptor_forward.hpp [2:3]
+ boost/align/aligned_allocator_forward.hpp [2:3]
+ boost/align/alignment_of_forward.hpp [2:3]
+ boost/align/detail/addressof.hpp [2:3]
+ boost/align/detail/align_cxx11.hpp [2:3]
+ boost/align/detail/aligned_alloc_android.hpp [2:3]
+ boost/align/detail/aligned_alloc_macos.hpp [2:3]
+ boost/align/detail/aligned_alloc_msvc.hpp [2:3]
+ boost/align/detail/aligned_alloc_posix.hpp [2:3]
+ boost/align/detail/aligned_alloc_sunos.hpp [2:3]
+ boost/align/detail/alignment_of_clang.hpp [2:3]
+ boost/align/detail/alignment_of_codegear.hpp [2:3]
+ boost/align/detail/alignment_of_cxx11.hpp [2:3]
+ boost/align/detail/alignment_of_gcc.hpp [2:3]
+ boost/align/detail/is_aligned.hpp [2:3]
+ boost/align/detail/is_alignment.hpp [2:3]
+ boost/align/detail/is_alignment_constant.hpp [2:3]
+ boost/align/detail/max_objects.hpp [2:3]
+ boost/align/detail/min_size.hpp [2:3]
+ boost/align/is_aligned.hpp [2:3]
+ boost/make_unique.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4fccd2f436e267451a15bffd06404336
+BELONGS ya.make
+ License text:
+ // Copyright 2014 LRI UMR 8623 CNRS/Univ Paris Sud XI
+ // Copyright 2014 NumScale SAS
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/external/nt2/nt2_algebra_dispatcher.hpp [2:3]
+ boost/numeric/odeint/external/nt2/nt2_norm_inf.hpp [2:3]
+ boost/numeric/odeint/external/nt2/nt2_resize.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4feddf5837ec6507c85e2af8198adbd4
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/function/function_base.hpp at line 5, boost/function/function_template.hpp at line 5, boost/signal.hpp at line 5
+ License text:
+ // Copyright Douglas Gregor 2001-2006. Use, modification and
+ // distribution is subject to the Boost Software License, Version
+ // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/function/function_base.hpp [3:6]
+ boost/function/function_template.hpp [3:6]
+ boost/signal.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 500287573dfa6dbe158a5293742156c0
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit.hpp [2:4]
+ boost/spirit/home/classic/namespace.hpp [2:4]
+ boost/spirit/include/classic.hpp [2:4]
+ boost/spirit/include/classic_actions.hpp [2:4]
+ boost/spirit/include/classic_actor.hpp [2:4]
+ boost/spirit/include/classic_alternative.hpp [2:4]
+ boost/spirit/include/classic_as_parser.hpp [2:4]
+ boost/spirit/include/classic_assert.hpp [2:4]
+ boost/spirit/include/classic_assign_actor.hpp [2:4]
+ boost/spirit/include/classic_assign_key_actor.hpp [2:4]
+ boost/spirit/include/classic_ast.hpp [2:4]
+ boost/spirit/include/classic_ast_fwd.hpp [2:4]
+ boost/spirit/include/classic_attribute.hpp [2:4]
+ boost/spirit/include/classic_basic_chset.hpp [2:4]
+ boost/spirit/include/classic_chset.hpp [2:4]
+ boost/spirit/include/classic_chset_operators.hpp [2:4]
+ boost/spirit/include/classic_clear_actor.hpp [2:4]
+ boost/spirit/include/classic_closure.hpp [2:4]
+ boost/spirit/include/classic_closure_context.hpp [2:4]
+ boost/spirit/include/classic_closure_fwd.hpp [2:4]
+ boost/spirit/include/classic_common.hpp [2:4]
+ boost/spirit/include/classic_common_fwd.hpp [2:4]
+ boost/spirit/include/classic_composite.hpp [2:4]
+ boost/spirit/include/classic_config.hpp [2:4]
+ boost/spirit/include/classic_confix.hpp [2:4]
+ boost/spirit/include/classic_confix_fwd.hpp [2:4]
+ boost/spirit/include/classic_core.hpp [2:4]
+ boost/spirit/include/classic_debug.hpp [2:4]
+ boost/spirit/include/classic_debug_node.hpp [2:4]
+ boost/spirit/include/classic_decrement_actor.hpp [2:4]
+ boost/spirit/include/classic_difference.hpp [2:4]
+ boost/spirit/include/classic_directives.hpp [2:4]
+ boost/spirit/include/classic_distinct.hpp [2:4]
+ boost/spirit/include/classic_distinct_fwd.hpp [2:4]
+ boost/spirit/include/classic_dynamic.hpp [2:4]
+ boost/spirit/include/classic_epsilon.hpp [2:4]
+ boost/spirit/include/classic_erase_actor.hpp [2:4]
+ boost/spirit/include/classic_error_handling.hpp [2:4]
+ boost/spirit/include/classic_escape_char.hpp [2:4]
+ boost/spirit/include/classic_escape_char_fwd.hpp [2:4]
+ boost/spirit/include/classic_exceptions.hpp [2:4]
+ boost/spirit/include/classic_exceptions_fwd.hpp [2:4]
+ boost/spirit/include/classic_exclusive_or.hpp [2:4]
+ boost/spirit/include/classic_file_iterator.hpp [2:4]
+ boost/spirit/include/classic_file_iterator_fwd.hpp [2:4]
+ boost/spirit/include/classic_fixed_size_queue.hpp [2:4]
+ boost/spirit/include/classic_flush_multi_pass.hpp [2:4]
+ boost/spirit/include/classic_for.hpp [2:4]
+ boost/spirit/include/classic_functor_parser.hpp [2:4]
+ boost/spirit/include/classic_fundamental.hpp [2:4]
+ boost/spirit/include/classic_grammar.hpp [2:4]
+ boost/spirit/include/classic_grammar_def.hpp [2:4]
+ boost/spirit/include/classic_grammar_def_fwd.hpp [2:4]
+ boost/spirit/include/classic_if.hpp [2:4]
+ boost/spirit/include/classic_increment_actor.hpp [2:4]
+ boost/spirit/include/classic_insert_at_actor.hpp [2:4]
+ boost/spirit/include/classic_insert_key_actor.hpp [2:4]
+ boost/spirit/include/classic_intersection.hpp [2:4]
+ boost/spirit/include/classic_iterator.hpp [2:4]
+ boost/spirit/include/classic_kleene_star.hpp [2:4]
+ boost/spirit/include/classic_lazy.hpp [2:4]
+ boost/spirit/include/classic_list.hpp [2:4]
+ boost/spirit/include/classic_lists.hpp [2:4]
+ boost/spirit/include/classic_lists_fwd.hpp [2:4]
+ boost/spirit/include/classic_loops.hpp [2:4]
+ boost/spirit/include/classic_match.hpp [2:4]
+ boost/spirit/include/classic_meta.hpp [2:4]
+ boost/spirit/include/classic_minimal.hpp [2:4]
+ boost/spirit/include/classic_multi_pass.hpp [2:4]
+ boost/spirit/include/classic_multi_pass_fwd.hpp [2:4]
+ boost/spirit/include/classic_nil.hpp [2:4]
+ boost/spirit/include/classic_no_actions.hpp [2:4]
+ boost/spirit/include/classic_numerics.hpp [2:4]
+ boost/spirit/include/classic_numerics_fwd.hpp [2:4]
+ boost/spirit/include/classic_operators.hpp [2:4]
+ boost/spirit/include/classic_optional.hpp [2:4]
+ boost/spirit/include/classic_parametric.hpp [2:4]
+ boost/spirit/include/classic_parse_tree.hpp [2:4]
+ boost/spirit/include/classic_parse_tree_fwd.hpp [2:4]
+ boost/spirit/include/classic_parse_tree_utils.hpp [2:4]
+ boost/spirit/include/classic_parser.hpp [2:4]
+ boost/spirit/include/classic_parser_context.hpp [2:4]
+ boost/spirit/include/classic_parser_id.hpp [2:4]
+ boost/spirit/include/classic_parser_names.hpp [2:4]
+ boost/spirit/include/classic_parser_traits.hpp [2:4]
+ boost/spirit/include/classic_position_iterator.hpp [2:4]
+ boost/spirit/include/classic_position_iterator_fwd.hpp [2:4]
+ boost/spirit/include/classic_positive.hpp [2:4]
+ boost/spirit/include/classic_primitives.hpp [2:4]
+ boost/spirit/include/classic_push_back_actor.hpp [2:4]
+ boost/spirit/include/classic_push_front_actor.hpp [2:4]
+ boost/spirit/include/classic_range_run.hpp [2:4]
+ boost/spirit/include/classic_ref_actor.hpp [2:4]
+ boost/spirit/include/classic_ref_const_ref_actor.hpp [2:4]
+ boost/spirit/include/classic_ref_const_ref_const_ref_a.hpp [2:4]
+ boost/spirit/include/classic_ref_const_ref_value_actor.hpp [2:4]
+ boost/spirit/include/classic_ref_value_actor.hpp [2:4]
+ boost/spirit/include/classic_refactoring.hpp [2:4]
+ boost/spirit/include/classic_regex.hpp [2:4]
+ boost/spirit/include/classic_rule.hpp [2:4]
+ boost/spirit/include/classic_rule_alias.hpp [2:4]
+ boost/spirit/include/classic_rule_parser.hpp [2:4]
+ boost/spirit/include/classic_safe_bool.hpp [2:4]
+ boost/spirit/include/classic_scanner.hpp [2:4]
+ boost/spirit/include/classic_scanner_fwd.hpp [2:4]
+ boost/spirit/include/classic_scoped_lock.hpp [2:4]
+ boost/spirit/include/classic_select.hpp [2:4]
+ boost/spirit/include/classic_sequence.hpp [2:4]
+ boost/spirit/include/classic_sequential_and.hpp [2:4]
+ boost/spirit/include/classic_sequential_or.hpp [2:4]
+ boost/spirit/include/classic_skipper.hpp [2:4]
+ boost/spirit/include/classic_skipper_fwd.hpp [2:4]
+ boost/spirit/include/classic_static.hpp [2:4]
+ boost/spirit/include/classic_stored_rule.hpp [2:4]
+ boost/spirit/include/classic_stored_rule_fwd.hpp [2:4]
+ boost/spirit/include/classic_subrule.hpp [2:4]
+ boost/spirit/include/classic_subrule_fwd.hpp [2:4]
+ boost/spirit/include/classic_swap_actor.hpp [2:4]
+ boost/spirit/include/classic_switch.hpp [2:4]
+ boost/spirit/include/classic_symbols.hpp [2:4]
+ boost/spirit/include/classic_symbols_fwd.hpp [2:4]
+ boost/spirit/include/classic_traverse.hpp [2:4]
+ boost/spirit/include/classic_tree_to_xml.hpp [2:4]
+ boost/spirit/include/classic_typeof.hpp [2:4]
+ boost/spirit/include/classic_utility.hpp [2:4]
+ boost/spirit/include/classic_version.hpp [2:4]
+ boost/spirit/include/classic_while.hpp [2:4]
+ boost/spirit/include/phoenix1.hpp [2:4]
+ boost/spirit/include/phoenix1_actor.hpp [2:4]
+ boost/spirit/include/phoenix1_binders.hpp [2:4]
+ boost/spirit/include/phoenix1_casts.hpp [2:4]
+ boost/spirit/include/phoenix1_closures.hpp [2:4]
+ boost/spirit/include/phoenix1_composite.hpp [2:4]
+ boost/spirit/include/phoenix1_functions.hpp [2:4]
+ boost/spirit/include/phoenix1_new.hpp [2:4]
+ boost/spirit/include/phoenix1_operators.hpp [2:4]
+ boost/spirit/include/phoenix1_primitives.hpp [2:4]
+ boost/spirit/include/phoenix1_special_ops.hpp [2:4]
+ boost/spirit/include/phoenix1_statements.hpp [2:4]
+ boost/spirit/include/phoenix1_tuple_helpers.hpp [2:4]
+ boost/spirit/include/phoenix1_tuples.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 500b2cb6ead0ec1a1178db7dd7c679ad
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
+ // Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/has_self_intersections.hpp [3:4]
+ boost/geometry/strategies/agnostic/point_in_poly_oriented_winding.hpp [3:3]
+ boost/geometry/strategies/geographic/mapping_ssf.hpp [3:3]
+ boost/geometry/strategies/spherical/ssf.hpp [3:3]
+ boost/geometry/util/rational.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 505e57a6c98d5fb12126e9ca863e4a06
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2014 Joel de Guzman
+ Copyright (c) 2013 Carl Barron
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/x3/string/symbols.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 509d002c338fa5df4220ee8f5ff3629f
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
+ // Copyright (c) 2001 David Abrahams
+ // Copyright (c) 2003-2005 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/bind/mem_fn.hpp [13:15]
+
+KEEP COPYRIGHT_SERVICE_LABEL 50aab16de1a969692255eba9fd21275b
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/chrono/chrono_io.hpp at line 7, boost/chrono/clock_string.hpp at line 5, boost/chrono/io/time_point_io.hpp at line 4, boost/chrono/io/timezone.hpp at line 4
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/chrono/chrono_io.hpp [4:7]
+ boost/chrono/clock_string.hpp [2:4]
+ boost/chrono/io/time_point_io.hpp [1:4]
+ boost/chrono/io/timezone.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 50acfc9be7c7713dcd42d5d4a540e9df
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/ptr_container/detail/serialize_ptr_map_adapter.hpp at line 3, boost/ptr_container/detail/serialize_reversible_cont.hpp at line 3, boost/ptr_container/serialize_ptr_array.hpp at line 3, boost/ptr_container/serialize_ptr_container.hpp at line 3, boost/ptr_container/serialize_ptr_deque.hpp at line 3, boost/ptr_container/serialize_ptr_list.hpp at line 3, boost/ptr_container/serialize_ptr_map.hpp at line 3, boost/ptr_container/serialize_ptr_set.hpp at line 3, boost/ptr_container/serialize_ptr_vector.hpp at line 3
+ License text:
+ // Copyright Sebastian Ramacher, 2007.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/ptr_container/detail/serialize_ptr_map_adapter.hpp [1:3]
+ boost/ptr_container/detail/serialize_reversible_cont.hpp [1:3]
+ boost/ptr_container/serialize_ptr_array.hpp [1:3]
+ boost/ptr_container/serialize_ptr_container.hpp [1:3]
+ boost/ptr_container/serialize_ptr_deque.hpp [1:3]
+ boost/ptr_container/serialize_ptr_list.hpp [1:3]
+ boost/ptr_container/serialize_ptr_map.hpp [1:3]
+ boost/ptr_container/serialize_ptr_set.hpp [1:3]
+ boost/ptr_container/serialize_ptr_vector.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 50dda7e3e19313b798039270444f863a
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
+ // Copyright (c) 2002 Lars Gullik Bjønnes <larsbj@lyx.org>
+ // Copyright 2003-2005 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/detail/atomic_count_gcc.hpp [11:13]
+
+KEEP COPYRIGHT_SERVICE_LABEL 50e992784146f3733ac5faebc8581292
+BELONGS libs/chrono/ya.make
+ License text:
+ // Copyright Beman Dawes 2008
+ // Copyright Vicente J. Botet Escriba 2009-2010
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ libs/chrono/src/chrono.cpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5147c6d809b341ff744da9921c8c3edd
+BELONGS ya.make
+ License text:
+ // Copyright Aleksey Gurtovoy 2000-2009
+ // Copyright Jaap Suter 2003
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/aux_/preprocessed/bcc/bitand.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc/bitor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc/bitxor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc/shift_left.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc/shift_right.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc551/bitand.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc551/bitor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc551/bitxor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc551/shift_left.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc551/shift_right.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc_pre590/bitand.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc_pre590/bitor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc_pre590/bitxor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc_pre590/shift_left.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc_pre590/shift_right.hpp [2:3]
+ boost/mpl/aux_/preprocessed/dmc/bitand.hpp [2:3]
+ boost/mpl/aux_/preprocessed/dmc/bitor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/dmc/bitxor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/dmc/shift_left.hpp [2:3]
+ boost/mpl/aux_/preprocessed/dmc/shift_right.hpp [2:3]
+ boost/mpl/aux_/preprocessed/gcc/bitand.hpp [2:3]
+ boost/mpl/aux_/preprocessed/gcc/bitor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/gcc/bitxor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/gcc/shift_left.hpp [2:3]
+ boost/mpl/aux_/preprocessed/gcc/shift_right.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc60/bitand.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc60/bitor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc60/bitxor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc60/shift_left.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc60/shift_right.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc70/bitand.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc70/bitor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc70/bitxor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc70/shift_left.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc70/shift_right.hpp [2:3]
+ boost/mpl/aux_/preprocessed/mwcw/bitand.hpp [2:3]
+ boost/mpl/aux_/preprocessed/mwcw/bitor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/mwcw/bitxor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/mwcw/shift_left.hpp [2:3]
+ boost/mpl/aux_/preprocessed/mwcw/shift_right.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ctps/bitand.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ctps/bitor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ctps/bitxor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ctps/shift_left.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ctps/shift_right.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ttp/bitand.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ttp/bitor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ttp/bitxor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ttp/shift_left.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ttp/shift_right.hpp [2:3]
+ boost/mpl/aux_/preprocessed/plain/bitand.hpp [2:3]
+ boost/mpl/aux_/preprocessed/plain/bitor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/plain/bitxor.hpp [2:3]
+ boost/mpl/aux_/preprocessed/plain/shift_left.hpp [2:3]
+ boost/mpl/aux_/preprocessed/plain/shift_right.hpp [2:3]
+ boost/mpl/bitand.hpp [5:6]
+ boost/mpl/bitor.hpp [5:6]
+ boost/mpl/bitwise.hpp [5:6]
+ boost/mpl/bitxor.hpp [5:6]
+ boost/mpl/shift_left.hpp [5:6]
+ boost/mpl/shift_right.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 516975262145468c54f49513bc0bd39b
+BELONGS ya.make
+ License text:
+ // (C) Copyright 2008-10 Anthony Williams
+ // (C) Copyright 2011-2012,2015 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/futures/future_error_code.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 51ff62b4a7415b379ace1babfab872b5
+BELONGS ya.make
+ License text:
+ Copyright 2014-2016 Glen Joseph Fernandes
+ (glenjofe@gmail.com)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/align/aligned_allocator_adaptor.hpp [2:3]
+ boost/align/alignment_of.hpp [2:3]
+ boost/align/detail/align.hpp [2:3]
+ boost/align/detail/integral_constant.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 52b28b228c67c76c8b980092f6896c6c
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2007-2011 Barend Gehrels, Amsterdam, the Netherlands.
+ // Copyright (c) 2008-2011 Bruno Lalande, Paris, France.
+ // Copyright (c) 2009-2011 Mateusz Loskot, London, UK.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 52d3d0587f7137ef056c8c36337cfe33
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/os/haiku.h at line 5
+ License text:
+ Copyright Jessica Hamilton 2014
+ Copyright Rene Rivera 2014-2015
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/predef/os/haiku.h [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 531223174105f7ede345759079c9b0de
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/area.hpp [3:6]
+ boost/geometry/algorithms/assign.hpp [3:6]
+ boost/geometry/algorithms/buffer.hpp [3:5]
+ boost/geometry/algorithms/clear.hpp [3:5]
+ boost/geometry/algorithms/convert.hpp [3:6]
+ boost/geometry/algorithms/correct.hpp [3:6]
+ boost/geometry/algorithms/covered_by.hpp [3:5]
+ boost/geometry/algorithms/crosses.hpp [3:6]
+ boost/geometry/algorithms/detail/as_range.hpp [3:5]
+ boost/geometry/algorithms/detail/assign_box_corners.hpp [3:5]
+ boost/geometry/algorithms/detail/assign_indexed_point.hpp [3:5]
+ boost/geometry/algorithms/detail/assign_values.hpp [3:5]
+ boost/geometry/algorithms/detail/calculate_null.hpp [3:5]
+ boost/geometry/algorithms/detail/calculate_sum.hpp [3:6]
+ boost/geometry/algorithms/detail/centroid/translating_transformer.hpp [3:6]
+ boost/geometry/algorithms/detail/convert_indexed_to_indexed.hpp [3:5]
+ boost/geometry/algorithms/detail/convert_point_to_point.hpp [3:5]
+ boost/geometry/algorithms/detail/covered_by/implementation.hpp [3:5]
+ boost/geometry/algorithms/detail/covered_by/interface.hpp [3:5]
+ boost/geometry/algorithms/detail/for_each_range.hpp [3:5]
+ boost/geometry/algorithms/detail/multi_modify.hpp [3:5]
+ boost/geometry/algorithms/detail/multi_modify_with_predicate.hpp [3:5]
+ boost/geometry/algorithms/detail/multi_sum.hpp [3:5]
+ boost/geometry/algorithms/detail/point_on_border.hpp [3:5]
+ boost/geometry/algorithms/detail/sections/range_by_section.hpp [3:5]
+ boost/geometry/algorithms/detail/within/implementation.hpp [3:5]
+ boost/geometry/algorithms/detail/within/interface.hpp [3:5]
+ boost/geometry/algorithms/detail/within/point_in_geometry.hpp [3:6]
+ boost/geometry/algorithms/detail/within/within_no_turns.hpp [3:5]
+ boost/geometry/algorithms/make.hpp [3:5]
+ boost/geometry/algorithms/reverse.hpp [3:6]
+ boost/geometry/algorithms/transform.hpp [3:6]
+ boost/geometry/algorithms/unique.hpp [3:6]
+ boost/geometry/algorithms/within.hpp [3:5]
+ boost/geometry/arithmetic/arithmetic.hpp [3:5]
+ boost/geometry/arithmetic/cross_product.hpp [3:5]
+ boost/geometry/arithmetic/determinant.hpp [3:5]
+ boost/geometry/arithmetic/dot_product.hpp [3:5]
+ boost/geometry/core/access.hpp [3:5]
+ boost/geometry/core/closure.hpp [3:5]
+ boost/geometry/core/coordinate_dimension.hpp [3:5]
+ boost/geometry/core/coordinate_system.hpp [3:5]
+ boost/geometry/core/coordinate_type.hpp [3:5]
+ boost/geometry/core/exterior_ring.hpp [3:5]
+ boost/geometry/core/geometry_id.hpp [3:5]
+ boost/geometry/core/interior_rings.hpp [3:5]
+ boost/geometry/core/interior_type.hpp [3:5]
+ boost/geometry/core/is_areal.hpp [3:5]
+ boost/geometry/core/mutable_range.hpp [3:5]
+ boost/geometry/core/point_order.hpp [3:5]
+ boost/geometry/core/point_type.hpp [3:5]
+ boost/geometry/core/radius.hpp [3:5]
+ boost/geometry/core/reverse_dispatch.hpp [3:5]
+ boost/geometry/core/tag.hpp [3:5]
+ boost/geometry/core/tag_cast.hpp [3:5]
+ boost/geometry/core/tags.hpp [3:5]
+ boost/geometry/core/topological_dimension.hpp [3:5]
+ boost/geometry/geometries/adapted/boost_tuple.hpp [3:5]
+ boost/geometry/geometries/adapted/c_array.hpp [3:5]
+ boost/geometry/geometries/adapted/std_pair_as_segment.hpp [3:5]
+ boost/geometry/geometries/box.hpp [3:5]
+ boost/geometry/geometries/concepts/box_concept.hpp [3:5]
+ boost/geometry/geometries/concepts/check.hpp [3:5]
+ boost/geometry/geometries/concepts/linestring_concept.hpp [3:5]
+ boost/geometry/geometries/concepts/multi_linestring_concept.hpp [3:5]
+ boost/geometry/geometries/concepts/multi_point_concept.hpp [3:5]
+ boost/geometry/geometries/concepts/multi_polygon_concept.hpp [3:5]
+ boost/geometry/geometries/concepts/polygon_concept.hpp [3:5]
+ boost/geometry/geometries/concepts/ring_concept.hpp [3:5]
+ boost/geometry/geometries/concepts/segment_concept.hpp [3:5]
+ boost/geometry/geometries/geometries.hpp [3:5]
+ boost/geometry/geometries/linestring.hpp [3:6]
+ boost/geometry/geometries/multi_linestring.hpp [3:6]
+ boost/geometry/geometries/multi_point.hpp [3:6]
+ boost/geometry/geometries/multi_polygon.hpp [3:6]
+ boost/geometry/geometries/point_xy.hpp [3:5]
+ boost/geometry/geometries/polygon.hpp [3:6]
+ boost/geometry/geometries/register/box.hpp [3:5]
+ boost/geometry/geometries/register/linestring.hpp [3:5]
+ boost/geometry/geometries/register/multi_linestring.hpp [3:5]
+ boost/geometry/geometries/register/multi_point.hpp [3:5]
+ boost/geometry/geometries/register/multi_polygon.hpp [3:5]
+ boost/geometry/geometries/register/point.hpp [3:5]
+ boost/geometry/geometries/register/ring.hpp [3:5]
+ boost/geometry/geometries/register/segment.hpp [3:5]
+ boost/geometry/geometries/ring.hpp [3:6]
+ boost/geometry/geometries/segment.hpp [3:5]
+ boost/geometry/geometries/variant.hpp [3:5]
+ boost/geometry/io/dsv/write.hpp [3:6]
+ boost/geometry/io/io.hpp [3:5]
+ boost/geometry/io/wkt/detail/prefix.hpp [3:5]
+ boost/geometry/io/wkt/detail/wkt_multi.hpp [3:5]
+ boost/geometry/io/wkt/read.hpp [3:6]
+ boost/geometry/io/wkt/stream.hpp [3:5]
+ boost/geometry/io/wkt/wkt.hpp [3:5]
+ boost/geometry/iterators/base.hpp [3:5]
+ boost/geometry/iterators/closing_iterator.hpp [3:5]
+ boost/geometry/iterators/ever_circling_iterator.hpp [3:5]
+ boost/geometry/multi/algorithms/area.hpp [3:5]
+ boost/geometry/multi/algorithms/centroid.hpp [3:5]
+ boost/geometry/multi/algorithms/clear.hpp [3:5]
+ boost/geometry/multi/algorithms/convert.hpp [3:5]
+ boost/geometry/multi/algorithms/correct.hpp [3:5]
+ boost/geometry/multi/algorithms/covered_by.hpp [3:6]
+ boost/geometry/multi/algorithms/detail/for_each_range.hpp [3:5]
+ boost/geometry/multi/algorithms/detail/modify.hpp [3:5]
+ boost/geometry/multi/algorithms/detail/modify_with_predicate.hpp [3:5]
+ boost/geometry/multi/algorithms/detail/multi_sum.hpp [3:5]
+ boost/geometry/multi/algorithms/detail/point_on_border.hpp [3:5]
+ boost/geometry/multi/algorithms/detail/sections/range_by_section.hpp [3:5]
+ boost/geometry/multi/algorithms/detail/sections/sectionalize.hpp [3:5]
+ boost/geometry/multi/algorithms/envelope.hpp [3:5]
+ boost/geometry/multi/algorithms/equals.hpp [3:5]
+ boost/geometry/multi/algorithms/for_each.hpp [3:5]
+ boost/geometry/multi/algorithms/length.hpp [3:5]
+ boost/geometry/multi/algorithms/num_geometries.hpp [3:5]
+ boost/geometry/multi/algorithms/num_interior_rings.hpp [3:5]
+ boost/geometry/multi/algorithms/perimeter.hpp [3:5]
+ boost/geometry/multi/algorithms/reverse.hpp [3:5]
+ boost/geometry/multi/algorithms/simplify.hpp [3:5]
+ boost/geometry/multi/algorithms/transform.hpp [3:5]
+ boost/geometry/multi/algorithms/unique.hpp [3:5]
+ boost/geometry/multi/algorithms/within.hpp [3:6]
+ boost/geometry/multi/core/closure.hpp [3:5]
+ boost/geometry/multi/core/geometry_id.hpp [3:5]
+ boost/geometry/multi/core/interior_rings.hpp [3:5]
+ boost/geometry/multi/core/is_areal.hpp [3:5]
+ boost/geometry/multi/core/point_order.hpp [3:5]
+ boost/geometry/multi/core/point_type.hpp [3:5]
+ boost/geometry/multi/core/ring_type.hpp [3:5]
+ boost/geometry/multi/core/tags.hpp [3:5]
+ boost/geometry/multi/core/topological_dimension.hpp [3:5]
+ boost/geometry/multi/geometries/concepts/check.hpp [3:5]
+ boost/geometry/multi/geometries/concepts/multi_linestring_concept.hpp [3:5]
+ boost/geometry/multi/geometries/concepts/multi_point_concept.hpp [3:5]
+ boost/geometry/multi/geometries/concepts/multi_polygon_concept.hpp [3:5]
+ boost/geometry/multi/geometries/multi_geometries.hpp [3:5]
+ boost/geometry/multi/geometries/multi_linestring.hpp [3:5]
+ boost/geometry/multi/geometries/multi_point.hpp [3:5]
+ boost/geometry/multi/geometries/multi_polygon.hpp [3:5]
+ boost/geometry/multi/geometries/register/multi_linestring.hpp [3:5]
+ boost/geometry/multi/geometries/register/multi_point.hpp [3:5]
+ boost/geometry/multi/geometries/register/multi_polygon.hpp [3:5]
+ boost/geometry/multi/io/dsv/write.hpp [3:5]
+ boost/geometry/multi/io/wkt/detail/prefix.hpp [3:5]
+ boost/geometry/multi/io/wkt/read.hpp [3:5]
+ boost/geometry/multi/io/wkt/wkt.hpp [3:5]
+ boost/geometry/multi/io/wkt/write.hpp [3:5]
+ boost/geometry/multi/strategies/cartesian/centroid_average.hpp [3:5]
+ boost/geometry/multi/views/detail/range_type.hpp [3:5]
+ boost/geometry/srs/sphere.hpp [3:5]
+ boost/geometry/srs/spheroid.hpp [3:5]
+ boost/geometry/srs/srs.hpp [3:5]
+ boost/geometry/strategies/agnostic/point_in_box_by_side.hpp [3:5]
+ boost/geometry/strategies/area.hpp [3:6]
+ boost/geometry/strategies/cartesian/area.hpp [3:6]
+ boost/geometry/strategies/cartesian/area_surveyor.hpp [3:6]
+ boost/geometry/strategies/cartesian/centroid_average.hpp [3:6]
+ boost/geometry/strategies/cartesian/distance_pythagoras.hpp [3:5]
+ boost/geometry/strategies/cartesian/point_in_poly_crossings_multiply.hpp [3:5]
+ boost/geometry/strategies/cartesian/point_in_poly_franklin.hpp [3:5]
+ boost/geometry/strategies/centroid.hpp [3:5]
+ boost/geometry/strategies/compare.hpp [3:5]
+ boost/geometry/strategies/concepts/area_concept.hpp [3:6]
+ boost/geometry/strategies/concepts/centroid_concept.hpp [3:5]
+ boost/geometry/strategies/concepts/convex_hull_concept.hpp [3:5]
+ boost/geometry/strategies/concepts/segment_intersect_concept.hpp [3:5]
+ boost/geometry/strategies/concepts/simplify_concept.hpp [3:5]
+ boost/geometry/strategies/concepts/within_concept.hpp [3:5]
+ boost/geometry/strategies/convex_hull.hpp [3:5]
+ boost/geometry/strategies/covered_by.hpp [3:5]
+ boost/geometry/strategies/default_area_result.hpp [3:6]
+ boost/geometry/strategies/side.hpp [3:5]
+ boost/geometry/strategies/side_info.hpp [3:5]
+ boost/geometry/strategies/strategies.hpp [3:6]
+ boost/geometry/strategies/tags.hpp [3:5]
+ boost/geometry/strategies/transform.hpp [3:5]
+ boost/geometry/strategies/transform/inverse_transformer.hpp [3:5]
+ boost/geometry/strategies/transform/map_transformer.hpp [3:5]
+ boost/geometry/strategies/within.hpp [3:5]
+ boost/geometry/util/add_const_if_c.hpp [3:5]
+ boost/geometry/util/closure_as_bool.hpp [3:5]
+ boost/geometry/util/coordinate_cast.hpp [3:5]
+ boost/geometry/util/for_each_coordinate.hpp [3:5]
+ boost/geometry/util/order_as_direction.hpp [3:5]
+ boost/geometry/util/parameter_type_of.hpp [3:5]
+ boost/geometry/util/promote_floating_point.hpp [3:5]
+ boost/geometry/util/select_calculation_type.hpp [3:5]
+ boost/geometry/util/select_coordinate_type.hpp [3:5]
+ boost/geometry/util/select_most_precise.hpp [3:5]
+ boost/geometry/views/box_view.hpp [3:5]
+ boost/geometry/views/closeable_view.hpp [3:5]
+ boost/geometry/views/detail/normalized_view.hpp [3:5]
+ boost/geometry/views/detail/points_view.hpp [3:5]
+ boost/geometry/views/detail/range_type.hpp [3:5]
+ boost/geometry/views/identity_view.hpp [3:5]
+ boost/geometry/views/reversible_view.hpp [3:5]
+ boost/geometry/views/segment_view.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 537c9bc8b4fb90630a3232d2399c4e8b
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2017 Klemens D. Morgenstern
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/process/detail/posix/sigchld_service.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 539b3e779233a2ae235b47c1b4055d48
+BELONGS ya.make
+ License text:
+ Copyright 2014-2015 Glen Joseph Fernandes
+ (glenjofe@gmail.com)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/align.hpp [2:3]
+ boost/align/align.hpp [2:3]
+ boost/align/aligned_alloc.hpp [2:3]
+ boost/align/aligned_allocator.hpp [2:3]
+ boost/align/aligned_delete.hpp [2:3]
+ boost/align/aligned_delete_forward.hpp [2:3]
+ boost/align/detail/aligned_alloc.hpp [2:3]
+ boost/align/detail/alignment_of.hpp [2:3]
+ boost/align/detail/alignment_of_msvc.hpp [2:3]
+ boost/align/detail/max_align.hpp [2:3]
+ boost/align/detail/max_size.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 53e6b9e3a28e2dccd485973290709372
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/math/special_functions/acosh.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/acosh.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 53fd4ccd7330e5c849c3b27876af937b
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2014 Joel de Guzman
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/x3/support/context.hpp [2:3]
+ boost/spirit/home/x3/support/traits/attribute_category.hpp [2:3]
+ boost/spirit/home/x3/support/traits/attribute_type.hpp [2:3]
+ boost/spirit/home/x3/support/traits/is_range.hpp [2:3]
+ boost/spirit/home/x3/support/traits/is_substitute.hpp [2:3]
+ boost/spirit/home/x3/support/traits/is_variant.hpp [2:3]
+ boost/spirit/home/x3/support/traits/variant_find_substitute.hpp [2:3]
+ boost/spirit/home/x3/support/traits/variant_has_substitute.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5401e26f42b6acd9b403fbb21b3e0d05
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/core.hpp [2:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5436f6cfa7ad970fe3000b4e5a4d7591
+BELONGS ya.make
+ License text:
+ /* Copyright (c) 2002,2003,2005 CrystalClear Software, Inc.
* Use, modification and distribution is subject to the
- * Boost Software License, Version 1.0. (See accompanying
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/date_time/date_names_put.hpp [4:6]
- boost/date_time/posix_time/conversion.hpp [4:6]
- boost/date_time/posix_time/posix_time.hpp [4:6]
- libs/date_time/src/gregorian/greg_month.cpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 43184d74bb6f0a9ca9f5562808734277
-BELONGS ya.make
- License text:
- // Copyright 2014 Renato Tegon Forti, Antony Polukhin.
- // Copyright 2015-2016 Antony Polukhin.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/dll.hpp [1:2]
- boost/dll/alias.hpp [1:2]
- boost/dll/detail/aggressive_ptr_cast.hpp [1:2]
- boost/dll/detail/elf_info.hpp [1:2]
- boost/dll/detail/macho_info.hpp [1:2]
- boost/dll/detail/pe_info.hpp [1:2]
- boost/dll/detail/posix/program_location_impl.hpp [1:2]
- boost/dll/detail/posix/shared_library_impl.hpp [1:2]
- boost/dll/detail/system_error.hpp [1:1]
- boost/dll/detail/windows/path_from_handle.hpp [1:2]
- boost/dll/detail/windows/shared_library_impl.hpp [1:2]
- boost/dll/detail/x_info_interface.hpp [1:2]
- boost/dll/import.hpp [1:2]
- boost/dll/library_info.hpp [1:2]
- boost/dll/runtime_symbol_info.hpp [1:2]
- boost/dll/shared_library.hpp [1:2]
- boost/dll/shared_library_load_mode.hpp [1:2]
- boost/stacktrace/detail/void_ptr_cast.hpp [1:2]
- boost/winapi/dll.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 43faee6d148b38cb4ab05799e5690c79
-BELONGS ya.make
- License text:
- // (C) Copyright Ion Gaztanaga 2010-2013
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/intrusive/parent_from_member.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4421db499a383cfc0dfc20b42f4e9b92
-BELONGS ya.make
- License text:
- // Copyright Beman Dawes 1994, 2006, 2008
- // Copyright Vicente J. Botet Escriba 2009-2011
- // Copyright Christopher Brown 2013
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/chrono/detail/inlined/mac/thread_clock.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 442f2f8f459887138123433d42ec81bf
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/fiber/algo/shared_work.hpp at line 4
- License text:
- // Copyright Nat Goodspeed + Oliver Kowalke 2015.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fiber/algo/shared_work.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4476312bde74e54ae89f7415fcb2f06a
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/detail/suffix.hpp at line 14
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/detail/suffix.hpp [4:14]
-
-KEEP COPYRIGHT_SERVICE_LABEL 447bbe13cee58c6f98042ebf1a79d703
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/disjoint/areal_areal.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/implementation.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/interface.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/linear_areal.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/linear_linear.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/linear_segment_or_box.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/segment_box.hpp [3:6]
- boost/geometry/algorithms/detail/distance/backward_compatibility.hpp [3:6]
- boost/geometry/algorithms/detail/distance/default_strategies.hpp [3:6]
- boost/geometry/algorithms/detail/distance/implementation.hpp [3:6]
- boost/geometry/algorithms/detail/distance/interface.hpp [3:7]
- boost/geometry/algorithms/detail/distance/point_to_geometry.hpp [3:6]
- boost/geometry/algorithms/detail/equals/point_point.hpp [3:6]
- boost/geometry/algorithms/disjoint.hpp [3:6]
- boost/geometry/algorithms/dispatch/disjoint.hpp [3:6]
- boost/geometry/algorithms/dispatch/distance.hpp [3:6]
- boost/geometry/algorithms/distance.hpp [3:6]
- boost/geometry/algorithms/remove_spikes.hpp [3:6]
- boost/geometry/policies/disjoint_interrupt_policy.hpp [3:6]
- boost/geometry/strategies/cartesian/disjoint_segment_box.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 44d4cf6912aa70fe8c223f9152d3c3bb
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/iostreams/restrict.hpp [8:12]
- boost/iostreams/slice.hpp [8:12]
-
-KEEP COPYRIGHT_SERVICE_LABEL 44f95982010e27ec7d1e8978f7263b0d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/archive/detail/helper_collection.hpp at line 14
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/archive/detail/helper_collection.hpp [12:14]
-
-KEEP COPYRIGHT_SERVICE_LABEL 451b638bc1cc4d0d8edae8f16c04a7a5
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/is_abstract.hpp at line 13
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_traits/is_abstract.hpp [11:13]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4558361acc5f85e157dfb7c9fc834eb1
-BELONGS ya.make
- License text:
- Copyright (arg) 2001-2014 Joel de Guzman
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/x3/core/action.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 458d13e6010c05b1dcca2572b1fc8217
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2010.
- // Copyright Paul A. Bristow 2010.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/distributions/geometric.hpp [3:4]
- boost/math/distributions/inverse_chi_squared.hpp [1:2]
- boost/math/distributions/inverse_gamma.hpp [3:6]
- boost/math/distributions/inverse_gaussian.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 45f740f785c84f3afefaf79c068dd3cb
-BELONGS ya.make
- License text:
- // Copyright (c) 2015, Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/envelope/initialize.hpp [3:3]
- boost/geometry/algorithms/detail/envelope/intersects_antimeridian.hpp [3:3]
- boost/geometry/algorithms/detail/envelope/transform_units.hpp [3:3]
- boost/geometry/algorithms/detail/expand_by_epsilon.hpp [3:3]
- boost/geometry/algorithms/detail/is_simple/failure_policy.hpp [3:3]
- boost/geometry/algorithms/detail/max_interval_gap.hpp [3:3]
- boost/geometry/algorithms/detail/sweep.hpp [3:3]
- boost/geometry/algorithms/is_empty.hpp [3:3]
- boost/geometry/algorithms/validity_failure_type.hpp [3:3]
- boost/geometry/policies/is_valid/default_policy.hpp [3:3]
- boost/geometry/policies/is_valid/failing_reason_policy.hpp [3:3]
- boost/geometry/policies/is_valid/failure_type_policy.hpp [3:3]
- boost/geometry/policies/robustness/rescale_policy.hpp [8:8]
- boost/geometry/util/promote_integral.hpp [3:3]
- boost/geometry/views/detail/boundary_view.hpp [3:3]
- boost/geometry/views/detail/boundary_view/implementation.hpp [3:3]
- boost/geometry/views/detail/boundary_view/interface.hpp [3:3]
- boost/geometry/views/detail/two_dimensional_view.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 463b016af48ea73c5777ee172f1606d7
-BELONGS ya.make
- License text:
- // Copyright (C) 2003, Fernando Luis Cacciola Carballal.
- // Copyright (C) 2007, Tobias Schwinger.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/utility/detail/in_place_factory_prefix.hpp [1:2]
- boost/utility/detail/in_place_factory_suffix.hpp [1:2]
- boost/utility/in_place_factory.hpp [1:2]
- boost/utility/typed_in_place_factory.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 465f2d3c2e755301a28bad2a637bfebe
-BELONGS ya.make
- License text:
- // (C) Copyright 2006-8 Anthony Williams
- // (C) Copyright 2011-2012,2017-2018 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/win32/basic_recursive_mutex.hpp [6:7]
- boost/thread/win32/shared_mutex.hpp [4:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 466b8cae4ed2e64dacdfdd01d7b4a0b4
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iterator/detail/config_def.hpp at line 5, boost/iterator/detail/config_undef.hpp at line 5, boost/iterator/detail/enable_if.hpp at line 5, boost/iterator/filter_iterator.hpp at line 5, boost/iterator/indirect_iterator.hpp at line 5, boost/iterator/interoperable.hpp at line 5, boost/iterator/iterator_adaptor.hpp at line 5, boost/iterator/iterator_facade.hpp at line 5, boost/iterator/reverse_iterator.hpp at line 5, boost/iterator/transform_iterator.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/iterator/detail/config_def.hpp [1:5]
- boost/iterator/detail/config_undef.hpp [1:3]
- boost/iterator/detail/enable_if.hpp [1:5]
- boost/iterator/filter_iterator.hpp [1:5]
- boost/iterator/indirect_iterator.hpp [1:5]
- boost/iterator/interoperable.hpp [1:5]
- boost/iterator/iterator_adaptor.hpp [1:5]
- boost/iterator/iterator_facade.hpp [1:5]
- boost/iterator/reverse_iterator.hpp [1:5]
- boost/iterator/transform_iterator.hpp [1:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4673e3c59eb568cdd3843c6e0b7a975b
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/log/detail/attachable_sstream_buf.hpp at line 4, boost/log/utility/string_literal.hpp at line 4
- License text:
- * Copyright Andrey Semashev 2007 - 2016.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/log/detail/attachable_sstream_buf.hpp [2:4]
- boost/log/utility/string_literal.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4689ac45137f0bdbfe6f283f1939c73f
-BELONGS ya.make
- License text:
- Copyright 2009-2015 Mario Mulansky
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/stepper/extrapolation_stepper.hpp [9:9]
-
-KEEP COPYRIGHT_SERVICE_LABEL 46d9e1f8aedb16cf722125fc124d9495
-BELONGS ya.make
- License text:
- // (C) Copyright Douglas Gregor 2010
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/clang.hpp [1:1]
- boost/config/compiler/xlcpp.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 46f0fb8d5862fd2118206707d7f1b83f
-BELONGS ya.make
- License text:
- // Copyright John R. Bandela 2001.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/token_functions.hpp [3:3]
- boost/token_iterator.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 471d4b0a42c396158389600e3135b118
-BELONGS ya.make
- License text:
- // Copyright 2001 University of Notre Dame.
- // Copyright 2003 Jeremy Siek
- // Authors: Lie-Quan Lee, Jeremy Siek, and Douglas Gregor
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/dll_import_export.hpp [2:4]
- boost/graph/graphviz.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 473df95368b6926b0b458aa203d049b0
-BELONGS ya.make
- License text:
- Copyright (c) 2015 Paul Fultz II
- alias.h
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/hof/alias.hpp [2:4]
- boost/hof/apply.hpp [2:4]
- boost/hof/apply_eval.hpp [2:4]
- boost/hof/capture.hpp [2:4]
- boost/hof/combine.hpp [2:4]
- boost/hof/construct.hpp [2:4]
- boost/hof/decay.hpp [2:4]
- boost/hof/decorate.hpp [2:4]
- boost/hof/detail/and.hpp [2:4]
- boost/hof/detail/callable_base.hpp [2:4]
- boost/hof/detail/can_be_called.hpp [2:4]
- boost/hof/detail/compressed_pair.hpp [2:4]
- boost/hof/detail/constexpr_deduce.hpp [2:4]
- boost/hof/detail/make.hpp [2:4]
- boost/hof/detail/result_of.hpp [2:4]
- boost/hof/detail/static_const_var.hpp [2:4]
- boost/hof/eval.hpp [2:4]
- boost/hof/flip.hpp [2:4]
- boost/hof/flow.hpp [2:4]
- boost/hof/fold.hpp [2:4]
- boost/hof/if.hpp [2:4]
- boost/hof/lift.hpp [2:4]
- boost/hof/repeat.hpp [2:4]
- boost/hof/repeat_while.hpp [2:4]
- boost/hof/reverse_fold.hpp [2:4]
- boost/hof/rotate.hpp [2:4]
- boost/hof/unpack.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 47779174b2c82482d94f3ad0f87d0215
-BELONGS ya.make
- License text:
- Copyright (c) 2010-2011 Bryce Lelbach
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/detail/is_sorted.hpp [2:2]
- boost/spirit/home/support/utree/utree.hpp [2:4]
- boost/spirit/home/support/utree/utree_traits.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4796f0d991d5859a560e32560b6e3163
-BELONGS ya.make
- License text:
- // Copyright Peter Dimov and Multi Media Ltd 2001, 2002
- // Copyright David Abrahams 2001
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/aux_/unwrap.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 47c01776d86f7e15fd4b146873ce1e38
-BELONGS ya.make
- License text:
- // Copyright (C) 2002-2006 Marcin Kalicinski
- // Copyright (C) 2009 Sebastian Redl
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/property_tree/detail/exception_implementation.hpp [2:3]
- boost/property_tree/detail/file_parser_error.hpp [2:2]
- boost/property_tree/detail/info_parser_error.hpp [2:2]
- boost/property_tree/detail/info_parser_read.hpp [2:2]
- boost/property_tree/detail/info_parser_utils.hpp [2:2]
- boost/property_tree/detail/info_parser_write.hpp [2:2]
- boost/property_tree/detail/info_parser_writer_settings.hpp [2:3]
- boost/property_tree/detail/ptree_implementation.hpp [2:3]
- boost/property_tree/detail/ptree_utils.hpp [2:2]
- boost/property_tree/detail/xml_parser_error.hpp [2:2]
- boost/property_tree/detail/xml_parser_flags.hpp [2:2]
- boost/property_tree/detail/xml_parser_utils.hpp [2:2]
- boost/property_tree/detail/xml_parser_write.hpp [2:3]
- boost/property_tree/exceptions.hpp [2:3]
- boost/property_tree/info_parser.hpp [2:2]
- boost/property_tree/ini_parser.hpp [2:3]
- boost/property_tree/json_parser.hpp [2:3]
- boost/property_tree/json_parser/detail/write.hpp [2:2]
- boost/property_tree/json_parser/error.hpp [2:2]
- boost/property_tree/ptree.hpp [2:3]
- boost/property_tree/ptree_fwd.hpp [2:3]
- boost/property_tree/ptree_serialization.hpp [2:2]
- boost/property_tree/xml_parser.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 47e3aa9b161ddf342ed17e6e3a194ad1
-BELONGS ya.make
- License text:
- // Copyright 2007, 2014 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/core/typeinfo.hpp [12:12]
-
-KEEP COPYRIGHT_SERVICE_LABEL 47f09c67ed73e45fb62566eb4d245310
-BELONGS libs/iostreams/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iostreams/filter/lzma.hpp at line 4, libs/iostreams/src/lzma.cpp at line 4
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/iostreams/filter/lzma.hpp [1:4]
- libs/iostreams/src/lzma.cpp [1:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 483fdf5158d0f8518198f5ac2c492f5f
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/algorithm.hpp at line 3, boost/detail/named_template_params.hpp at line 3, boost/graph/detail/permutation.hpp at line 3, boost/graph/detail/set_adaptor.hpp at line 3, boost/graph/detail/shadow_iterator.hpp at line 3, boost/iterator/function_output_iterator.hpp at line 3, boost/range/detail/collection_traits.hpp at line 15
- License text:
- // (C) Copyright Jeremy Siek 2001.
- // Distributed under the Boost Software License, Version 1.0. (See accompany-
- // ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/detail/algorithm.hpp [1:3]
- boost/detail/named_template_params.hpp [1:3]
- boost/graph/detail/permutation.hpp [1:3]
- boost/graph/detail/set_adaptor.hpp [1:3]
- boost/graph/detail/shadow_iterator.hpp [1:3]
- boost/iterator/function_output_iterator.hpp [1:3]
- boost/range/detail/collection_traits.hpp [13:15]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4846b8bf3ce57674103bf8bc473c1e01
-BELONGS ya.make
- License text:
- // (C) Copyright Ion Gaztanaga 2005-2016.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/interprocess/detail/mpl.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4873fbbd8e15c957f3d516a5bf07bd9a
-BELONGS ya.make
- License text:
- // Copyright (C) 2003-2009 Matthias Christian Schabel
- // Copyright (C) 2007-2009 Steven Watanabe
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/units/base_units/us/pound_force.hpp [4:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 488900fa132971e55b2288b6adc90297
-BELONGS ya.make
- License text:
- * Copyright (c) 2011 Helge Bahmann
- * Copyright (c) 2013 Tim Blechmann
- * Copyright (c) 2014 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/atomic/atomic.hpp [6:8]
- boost/atomic/atomic_flag.hpp [6:8]
- boost/atomic/capabilities.hpp [6:6]
- boost/atomic/detail/atomic_flag.hpp [6:6]
- boost/atomic/detail/atomic_template.hpp [6:8]
- boost/atomic/detail/caps_gcc_alpha.hpp [6:8]
- boost/atomic/detail/caps_gcc_arm.hpp [6:10]
- boost/atomic/detail/caps_gcc_atomic.hpp [6:6]
- boost/atomic/detail/caps_gcc_ppc.hpp [6:8]
- boost/atomic/detail/caps_gcc_sparc.hpp [6:8]
- boost/atomic/detail/caps_gcc_sync.hpp [6:8]
- boost/atomic/detail/caps_linux_arm.hpp [6:10]
- boost/atomic/detail/config.hpp [6:7]
- boost/atomic/detail/int_sizes.hpp [6:6]
- boost/atomic/detail/link.hpp [6:7]
- boost/atomic/detail/operations.hpp [6:6]
- boost/atomic/detail/operations_fwd.hpp [6:6]
- boost/atomic/detail/operations_lockfree.hpp [6:6]
- boost/atomic/detail/ops_cas_based.hpp [6:6]
- boost/atomic/detail/ops_emulated.hpp [6:6]
- boost/atomic/detail/ops_extending_cas_based.hpp [6:6]
- boost/atomic/detail/ops_gcc_alpha.hpp [6:8]
- boost/atomic/detail/ops_gcc_arm.hpp [6:8]
- boost/atomic/detail/ops_gcc_arm_common.hpp [6:8]
- boost/atomic/detail/ops_gcc_atomic.hpp [6:6]
- boost/atomic/detail/ops_gcc_ppc.hpp [6:8]
- boost/atomic/detail/ops_gcc_ppc_common.hpp [6:8]
- boost/atomic/detail/ops_gcc_sparc.hpp [6:8]
- boost/atomic/detail/ops_gcc_sync.hpp [6:8]
- boost/atomic/detail/ops_gcc_x86.hpp [6:8]
- boost/atomic/detail/ops_linux_arm.hpp [6:10]
- boost/atomic/detail/ops_msvc_arm.hpp [6:8]
- boost/atomic/detail/ops_msvc_common.hpp [6:8]
- boost/atomic/detail/ops_msvc_x86.hpp [6:8]
- boost/atomic/detail/ops_windows.hpp [6:8]
- boost/atomic/detail/platform.hpp [6:7]
- boost/atomic/fences.hpp [6:8]
- boost/core/underlying_type.hpp [3:6]
- boost/detail/scoped_enum_emulation.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 48a1e78c1776174852d8ecfdeb3d9a8e
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/parameter/aux_/arg_list.hpp at line 3, boost/parameter/aux_/default.hpp at line 3, boost/parameter/aux_/parameter_requirements.hpp at line 3, boost/parameter/aux_/tagged_argument.hpp at line 3, boost/parameter/aux_/unwrap_cv_reference.hpp at line 3, boost/parameter/aux_/void.hpp at line 3, boost/parameter/aux_/yesno.hpp at line 3, boost/parameter/config.hpp at line 3, boost/parameter/keyword.hpp at line 3
- License text:
- // Copyright Daniel Wallin, David Abrahams 2005. Use, modification and
- // distribution is subject to the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/parameter/aux_/arg_list.hpp [1:3]
- boost/parameter/aux_/default.hpp [1:3]
- boost/parameter/aux_/parameter_requirements.hpp [1:3]
- boost/parameter/aux_/tagged_argument.hpp [1:3]
- boost/parameter/aux_/unwrap_cv_reference.hpp [1:3]
- boost/parameter/aux_/void.hpp [1:3]
- boost/parameter/aux_/yesno.hpp [1:3]
- boost/parameter/config.hpp [1:3]
- boost/parameter/keyword.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 48a99b78ca07d64eafb7dfabd3abb686
-BELONGS ya.make
- License text:
- // Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
- // Copyright 2004-2006 Peter Dimov
- // Copyright 2005 Ben Hutchings
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp [7:9]
-
-KEEP COPYRIGHT_SERVICE_LABEL 491150306a8e77a2b041e31096f69d80
-BELONGS libs/chrono/ya.make ya.make
- License text:
- // (C) Copyright Vicente J. Botet Escriba 2010.
- // Distributed under the Boost
- // Software License, Version 1.0.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/chrono.hpp [3:5]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4915b20164f09b341694cc223cf83586
-BELONGS ya.make
- License text:
- // Copyright 2006 Johan Rade
- // Copyright 2012 K R Walker
- // Copyright 2011, 2012 Paul A. Bristow
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/nonfinite_num_facets.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 493cc4e248ecb124fe372bf25e6ef2d4
-BELONGS ya.make
- License text:
- Copyright (c) 2013 Agustin Berge http://spirit.sourceforge.net
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/x3/support/subcontext.hpp [2:4]
- boost/spirit/home/x3/support/traits/attribute_of.hpp [2:4]
- boost/spirit/home/x3/support/traits/has_attribute.hpp [2:4]
- boost/spirit/home/x3/support/traits/move_to.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 495b1eefa32665dd65d30aa549ab40c5
-BELONGS ya.make
- License text:
- // This file was modified by Oracle on 2013.
- // Modifications copyright (c) 2013, Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/within/within_no_turns.hpp [7:8]
- boost/geometry/multi/algorithms/detail/overlay/copy_segment_point.hpp [5:6]
- boost/geometry/multi/algorithms/detail/point_on_border.hpp [7:8]
- boost/geometry/multi/algorithms/detail/sections/range_by_section.hpp [7:8]
- boost/geometry/multi/algorithms/detail/sections/sectionalize.hpp [7:8]
- boost/geometry/multi/core/ring_type.hpp [7:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 498105f8cf77963aff3c856eb50c2341
-BELONGS libs/exception/ya.make ya.make
- License text:
- //Copyright (c) 2006-2009 Emil Dotchevski and Reverge Studios, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/exception/current_exception_cast.hpp [1:1]
- boost/exception/detail/exception_ptr.hpp [1:1]
- boost/exception/detail/is_output_streamable.hpp [1:1]
- boost/exception/detail/object_hex_dump.hpp [1:1]
- boost/exception/enable_current_exception.hpp [1:1]
- boost/exception/enable_error_info.hpp [1:1]
- boost/exception/errinfo_api_function.hpp [1:1]
- boost/exception/errinfo_at_line.hpp [1:1]
- boost/exception/errinfo_errno.hpp [1:1]
- boost/exception/errinfo_file_handle.hpp [1:1]
- boost/exception/errinfo_file_name.hpp [1:1]
- boost/exception/errinfo_file_open_mode.hpp [1:1]
- boost/exception/errinfo_nested_exception.hpp [1:1]
- boost/exception/errinfo_type_info_name.hpp [1:1]
- boost/exception/error_info.hpp [1:1]
- boost/exception/exception.hpp [1:1]
- boost/exception/get_error_info.hpp [1:1]
- boost/exception/info_tuple.hpp [1:1]
- boost/exception/to_string.hpp [1:1]
- boost/exception/to_string_stub.hpp [1:1]
- boost/exception_ptr.hpp [1:1]
- libs/exception/src/clone_current_exception_non_intrusive.cpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4996bb2ca2b3ceeeafa025b3dbd3345e
-BELONGS ya.make
- License text:
- Copyright 2012 Karsten Ahnert
- Copyright 2012 Mario Mulansky
- Copyright 2012 Denis Demidov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/external/vexcl/vexcl_resize.hpp [9:11]
- boost/numeric/odeint/external/viennacl/viennacl_operations.hpp [9:11]
- boost/numeric/odeint/external/viennacl/viennacl_resize.hpp [9:11]
- boost/numeric/odeint/iterator/adaptive_iterator.hpp [10:11]
- boost/numeric/odeint/stepper/base/algebra_stepper_base.hpp [9:10]
- boost/numeric/odeint/stepper/controlled_step_result.hpp [9:10]
- boost/numeric/odeint/util/same_instance.hpp [9:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL 49a34ce6db1b184c479aec023e28d0b4
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/parameter/aux_/preprocessor/flatten.hpp at line 3, boost/parameter/aux_/preprocessor/for_each.hpp at line 3, boost/parameter/aux_/python/invoker.hpp at line 3, boost/parameter/aux_/python/invoker_iterate.hpp at line 3
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/parameter/aux_/preprocessor/flatten.hpp [1:3]
- boost/parameter/aux_/preprocessor/for_each.hpp [1:3]
- boost/parameter/aux_/python/invoker.hpp [1:3]
- boost/parameter/aux_/python/invoker_iterate.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 49a63dac4d2a7520d366071cadc7cba7
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/move/algo/detail/pdqsort.hpp at line 6
- License text:
- // (C) Copyright Orson Peters 2017.
- // (C) Copyright Ion Gaztanaga 2017-2018.
+ * Boost Software License, Version 1.0. (See accompanying
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/date_time/c_local_time_adjustor.hpp [4:6]
+ boost/date_time/c_time.hpp [4:6]
+ boost/date_time/date_clock_device.hpp [4:6]
+ boost/date_time/date_generators.hpp [4:6]
+ boost/date_time/date_parsing.hpp [4:6]
+ boost/date_time/dst_transition_generators.hpp [1:3]
+ boost/date_time/gregorian/parsers.hpp [4:6]
+ boost/date_time/microsec_time_clock.hpp [4:6]
+ boost/date_time/posix_time/posix_time_config.hpp [4:6]
+ boost/date_time/time.hpp [4:6]
+ boost/date_time/time_clock.hpp [4:6]
+ boost/date_time/time_parsing.hpp [4:6]
+ boost/date_time/time_system_split.hpp [4:6]
+ boost/date_time/wrapping_int.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 54505eb07f03e7797ae231f869d8a40e
+BELONGS libs/serialization/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/archive/codecvt_null.hpp at line 14, libs/serialization/src/basic_text_oprimitive.cpp at line 6, libs/serialization/src/basic_text_woprimitive.cpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/archive/codecvt_null.hpp [12:14]
+ libs/serialization/src/basic_text_oprimitive.cpp [4:6]
+ libs/serialization/src/basic_text_woprimitive.cpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 545eafdc9369d5bcc88b165815551f3b
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/binary_search.hpp at line 3
+ License text:
+ // Copyright (c) 2000 David Abrahams.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/move/algo/detail/pdqsort.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 49a72a2565315c216c070d87731e33a4
-BELONGS ya.make
- License text:
- @copyright Jason Rice 2016
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/hana/concept/hashable.hpp [5:8]
- boost/hana/detail/hash_table.hpp [5:8]
- boost/hana/fwd/concept/hashable.hpp [5:8]
- boost/hana/fwd/hash.hpp [5:8]
- boost/hana/hash.hpp [5:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 49ac6943b8a74ceee45637a0a87cd8c4
-BELONGS ya.make
- License text:
- // Copyright (c) 2011 Aaron Graham
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/repository/home/qi/primitive/advance.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 49c85f9c3e9bb242a6e6dd6d3d306ae2
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/seq/detail/is_empty.hpp at line 5, boost/vmd/array.hpp at line 4, boost/vmd/array/to_seq.hpp at line 4, boost/vmd/array/to_tuple.hpp at line 4, boost/vmd/list.hpp at line 4, boost/vmd/list/to_seq.hpp at line 4, boost/vmd/list/to_tuple.hpp at line 4, boost/vmd/seq.hpp at line 4, boost/vmd/seq/is_vmd_seq.hpp at line 4, boost/vmd/seq/pop_back.hpp at line 4, boost/vmd/seq/pop_front.hpp at line 4, boost/vmd/seq/push_back.hpp at line 4, boost/vmd/seq/push_front.hpp at line 4, boost/vmd/seq/remove.hpp at line 4, boost/vmd/seq/size.hpp at line 4, boost/vmd/seq/to_array.hpp at line 4, boost/vmd/seq/to_list.hpp at line 4, boost/vmd/seq/to_tuple.hpp at line 4, boost/vmd/tuple.hpp at line 4, boost/vmd/tuple/is_vmd_tuple.hpp at line 4, boost/vmd/tuple/pop_back.hpp at line 4, boost/vmd/tuple/pop_front.hpp at line 4, boost/vmd/tuple/push_back.hpp at line 4, boost/vmd/tuple/push_front.hpp at line 4, boost/vmd/tuple/remove.hpp at line 4, boost/vmd/tuple/size.hpp at line 4, boost/vmd/tuple/to_array.hpp at line 4, boost/vmd/tuple/to_list.hpp at line 4, boost/vmd/tuple/to_seq.hpp at line 4
- License text:
- \# * (C) Copyright Edward Diener 2015.
- \# * Distributed under the Boost Software License, Version 1.0. (See
- \# * accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/preprocessor/seq/detail/is_empty.hpp [3:5]
- boost/vmd/array.hpp [2:4]
- boost/vmd/array/to_seq.hpp [2:4]
- boost/vmd/array/to_tuple.hpp [2:4]
- boost/vmd/list.hpp [2:4]
- boost/vmd/list/to_seq.hpp [2:4]
- boost/vmd/list/to_tuple.hpp [2:4]
- boost/vmd/seq.hpp [2:4]
- boost/vmd/seq/is_vmd_seq.hpp [2:4]
- boost/vmd/seq/pop_back.hpp [2:4]
- boost/vmd/seq/pop_front.hpp [2:4]
- boost/vmd/seq/push_back.hpp [2:4]
- boost/vmd/seq/push_front.hpp [2:4]
- boost/vmd/seq/remove.hpp [2:4]
- boost/vmd/seq/size.hpp [2:4]
- boost/vmd/seq/to_array.hpp [2:4]
- boost/vmd/seq/to_list.hpp [2:4]
- boost/vmd/seq/to_tuple.hpp [2:4]
- boost/vmd/tuple.hpp [2:4]
- boost/vmd/tuple/is_vmd_tuple.hpp [2:4]
- boost/vmd/tuple/pop_back.hpp [2:4]
- boost/vmd/tuple/pop_front.hpp [2:4]
- boost/vmd/tuple/push_back.hpp [2:4]
- boost/vmd/tuple/push_front.hpp [2:4]
- boost/vmd/tuple/remove.hpp [2:4]
- boost/vmd/tuple/size.hpp [2:4]
- boost/vmd/tuple/to_array.hpp [2:4]
- boost/vmd/tuple/to_list.hpp [2:4]
- boost/vmd/tuple/to_seq.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 49dd121655e5c734739cb54d9f69e91e
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2005-2006 Dan Marsden
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/adapted.hpp [2:3]
- boost/fusion/adapted/adt.hpp [2:4]
- boost/fusion/adapted/array.hpp [2:4]
- boost/fusion/adapted/boost_array.hpp [2:3]
- boost/fusion/adapted/boost_array/array_iterator.hpp [2:3]
- boost/fusion/adapted/boost_array/detail/at_impl.hpp [2:3]
- boost/fusion/adapted/boost_array/detail/begin_impl.hpp [2:3]
- boost/fusion/adapted/boost_array/detail/category_of_impl.hpp [2:3]
- boost/fusion/adapted/boost_array/detail/end_impl.hpp [2:3]
- boost/fusion/adapted/boost_array/detail/is_sequence_impl.hpp [2:3]
- boost/fusion/adapted/boost_array/detail/is_view_impl.hpp [2:3]
- boost/fusion/adapted/boost_array/detail/size_impl.hpp [2:3]
- boost/fusion/adapted/boost_array/detail/value_at_impl.hpp [2:3]
- boost/fusion/adapted/boost_array/tag_of.hpp [2:3]
- boost/fusion/adapted/boost_tuple.hpp [2:2]
- boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp [2:2]
- boost/fusion/adapted/boost_tuple/detail/at_impl.hpp [2:2]
- boost/fusion/adapted/boost_tuple/detail/begin_impl.hpp [2:2]
- boost/fusion/adapted/boost_tuple/detail/category_of_impl.hpp [2:2]
- boost/fusion/adapted/boost_tuple/detail/end_impl.hpp [2:2]
- boost/fusion/adapted/boost_tuple/detail/is_sequence_impl.hpp [2:2]
- boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp [2:2]
- boost/fusion/adapted/boost_tuple/detail/size_impl.hpp [2:2]
- boost/fusion/adapted/boost_tuple/detail/value_at_impl.hpp [2:2]
- boost/fusion/adapted/boost_tuple/tag_of.hpp [2:2]
- boost/fusion/adapted/mpl.hpp [2:3]
- boost/fusion/adapted/mpl/detail/at_impl.hpp [2:3]
- boost/fusion/adapted/mpl/detail/begin_impl.hpp [2:3]
- boost/fusion/adapted/mpl/detail/category_of_impl.hpp [2:3]
- boost/fusion/adapted/mpl/detail/empty_impl.hpp [2:3]
- boost/fusion/adapted/mpl/detail/end_impl.hpp [2:3]
- boost/fusion/adapted/mpl/detail/has_key_impl.hpp [2:3]
- boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp [2:3]
- boost/fusion/adapted/mpl/detail/is_view_impl.hpp [2:3]
- boost/fusion/adapted/mpl/detail/size_impl.hpp [2:3]
- boost/fusion/adapted/mpl/detail/value_at_impl.hpp [2:3]
- boost/fusion/adapted/mpl/mpl_iterator.hpp [2:2]
- boost/fusion/adapted/std_array.hpp [2:4]
- boost/fusion/adapted/std_array/detail/at_impl.hpp [2:3]
- boost/fusion/adapted/std_array/detail/begin_impl.hpp [2:4]
- boost/fusion/adapted/std_array/detail/category_of_impl.hpp [2:3]
- boost/fusion/adapted/std_array/detail/end_impl.hpp [2:4]
- boost/fusion/adapted/std_array/detail/is_sequence_impl.hpp [2:4]
- boost/fusion/adapted/std_array/detail/is_view_impl.hpp [2:4]
- boost/fusion/adapted/std_array/detail/size_impl.hpp [2:4]
- boost/fusion/adapted/std_array/detail/value_at_impl.hpp [2:3]
- boost/fusion/adapted/std_array/std_array_iterator.hpp [2:4]
- boost/fusion/adapted/std_array/tag_of.hpp [2:3]
- boost/fusion/adapted/std_pair.hpp [2:4]
- boost/fusion/adapted/std_tuple.hpp [2:2]
- boost/fusion/adapted/std_tuple/detail/at_impl.hpp [2:2]
- boost/fusion/adapted/std_tuple/detail/begin_impl.hpp [2:2]
- boost/fusion/adapted/std_tuple/detail/category_of_impl.hpp [2:2]
- boost/fusion/adapted/std_tuple/detail/end_impl.hpp [2:2]
- boost/fusion/adapted/std_tuple/detail/is_sequence_impl.hpp [2:2]
- boost/fusion/adapted/std_tuple/detail/is_view_impl.hpp [2:2]
- boost/fusion/adapted/std_tuple/detail/size_impl.hpp [2:2]
- boost/fusion/adapted/std_tuple/detail/value_at_impl.hpp [2:2]
- boost/fusion/adapted/std_tuple/std_tuple_iterator.hpp [2:2]
- boost/fusion/adapted/std_tuple/tag_of.hpp [2:2]
- boost/fusion/adapted/struct.hpp [2:4]
- boost/fusion/adapted/struct/detail/at_impl.hpp [2:4]
- boost/fusion/adapted/struct/detail/begin_impl.hpp [2:4]
- boost/fusion/adapted/struct/detail/category_of_impl.hpp [2:4]
- boost/fusion/adapted/struct/detail/end_impl.hpp [2:4]
- boost/fusion/adapted/struct/detail/is_sequence_impl.hpp [2:4]
- boost/fusion/adapted/struct/detail/is_view_impl.hpp [2:4]
- boost/fusion/adapted/struct/detail/size_impl.hpp [2:4]
- boost/fusion/adapted/struct/detail/value_at_impl.hpp [2:4]
- boost/fusion/algorithm.hpp [2:2]
- boost/fusion/algorithm/auxiliary.hpp [2:2]
- boost/fusion/algorithm/auxiliary/copy.hpp [2:2]
- boost/fusion/algorithm/iteration.hpp [2:2]
- boost/fusion/algorithm/iteration/accumulate.hpp [2:3]
- boost/fusion/algorithm/iteration/detail/fold.hpp [2:5]
- boost/fusion/algorithm/iteration/detail/for_each.hpp [2:2]
- boost/fusion/algorithm/iteration/detail/preprocessed/fold.hpp [2:4]
- boost/fusion/algorithm/iteration/detail/preprocessed/iter_fold.hpp [2:3]
- boost/fusion/algorithm/iteration/detail/preprocessed/reverse_fold.hpp [2:3]
- boost/fusion/algorithm/iteration/detail/preprocessed/reverse_iter_fold.hpp [2:3]
- boost/fusion/algorithm/iteration/fold.hpp [2:5]
- boost/fusion/algorithm/iteration/fold.hpp [35:37]
- boost/fusion/algorithm/iteration/iter_fold.hpp [2:4]
- boost/fusion/algorithm/iteration/iter_fold.hpp [37:38]
- boost/fusion/algorithm/iteration/reverse_fold.hpp [2:4]
- boost/fusion/algorithm/iteration/reverse_fold.hpp [37:38]
- boost/fusion/algorithm/iteration/reverse_iter_fold.hpp [2:4]
- boost/fusion/algorithm/iteration/reverse_iter_fold.hpp [37:38]
- boost/fusion/algorithm/query.hpp [2:2]
- boost/fusion/algorithm/query/all.hpp [2:3]
- boost/fusion/algorithm/query/any.hpp [2:4]
- boost/fusion/algorithm/query/count.hpp [2:3]
- boost/fusion/algorithm/query/count_if.hpp [2:3]
- boost/fusion/algorithm/query/detail/all.hpp [2:3]
- boost/fusion/algorithm/query/detail/any.hpp [2:4]
- boost/fusion/algorithm/query/detail/count.hpp [2:2]
- boost/fusion/algorithm/query/detail/count_if.hpp [2:3]
- boost/fusion/algorithm/query/detail/find_if.hpp [2:4]
- boost/fusion/algorithm/query/find.hpp [2:3]
- boost/fusion/algorithm/query/find_if.hpp [2:3]
- boost/fusion/algorithm/query/none.hpp [2:3]
- boost/fusion/algorithm/transformation.hpp [2:2]
- boost/fusion/algorithm/transformation/clear.hpp [2:2]
- boost/fusion/algorithm/transformation/detail/preprocessed/zip.hpp [2:2]
- boost/fusion/algorithm/transformation/detail/preprocessed/zip10.hpp [2:3]
- boost/fusion/algorithm/transformation/detail/preprocessed/zip20.hpp [2:3]
- boost/fusion/algorithm/transformation/detail/preprocessed/zip30.hpp [2:3]
- boost/fusion/algorithm/transformation/detail/preprocessed/zip40.hpp [2:3]
- boost/fusion/algorithm/transformation/detail/preprocessed/zip50.hpp [2:3]
- boost/fusion/algorithm/transformation/detail/replace.hpp [2:2]
- boost/fusion/algorithm/transformation/detail/replace_if.hpp [2:2]
- boost/fusion/algorithm/transformation/erase.hpp [2:2]
- boost/fusion/algorithm/transformation/erase_key.hpp [2:2]
- boost/fusion/algorithm/transformation/filter.hpp [2:3]
- boost/fusion/algorithm/transformation/filter_if.hpp [2:2]
- boost/fusion/algorithm/transformation/insert.hpp [2:2]
- boost/fusion/algorithm/transformation/insert_range.hpp [2:2]
- boost/fusion/algorithm/transformation/join.hpp [2:3]
- boost/fusion/algorithm/transformation/pop_back.hpp [2:2]
- boost/fusion/algorithm/transformation/pop_front.hpp [2:2]
- boost/fusion/algorithm/transformation/push_back.hpp [2:2]
- boost/fusion/algorithm/transformation/push_front.hpp [2:2]
- boost/fusion/algorithm/transformation/remove.hpp [2:2]
- boost/fusion/algorithm/transformation/remove_if.hpp [2:2]
- boost/fusion/algorithm/transformation/replace.hpp [2:2]
- boost/fusion/algorithm/transformation/replace_if.hpp [2:2]
- boost/fusion/algorithm/transformation/reverse.hpp [2:2]
- boost/fusion/algorithm/transformation/transform.hpp [2:2]
- boost/fusion/algorithm/transformation/zip.hpp [2:3]
- boost/fusion/algorithm/transformation/zip.hpp [43:44]
- boost/fusion/container.hpp [2:2]
- boost/fusion/container/deque.hpp [2:3]
- boost/fusion/container/deque/detail/cpp03/as_deque.hpp [66:66]
- boost/fusion/container/deque/detail/cpp03/deque.hpp [51:51]
- boost/fusion/container/deque/detail/cpp03/deque_fwd.hpp [26:26]
- boost/fusion/container/deque/detail/cpp03/deque_initial_size.hpp [35:35]
- boost/fusion/container/deque/detail/cpp03/deque_keyed_values.hpp [43:43]
- boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque.hpp [2:2]
- boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque10.hpp [2:2]
- boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque20.hpp [2:2]
- boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque30.hpp [2:2]
- boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque40.hpp [2:2]
- boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque50.hpp [2:2]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque.hpp [2:2]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque10.hpp [2:2]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque10_fwd.hpp [2:2]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque20.hpp [2:2]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque20_fwd.hpp [2:2]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque30.hpp [2:2]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque30_fwd.hpp [2:2]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque40.hpp [2:2]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque40_fwd.hpp [2:2]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque50.hpp [2:2]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque50_fwd.hpp [2:2]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque_fwd.hpp [2:2]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size.hpp [2:2]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size10.hpp [2:2]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size20.hpp [2:2]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size30.hpp [2:2]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size40.hpp [2:2]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size50.hpp [2:2]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values.hpp [2:2]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values10.hpp [2:2]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values20.hpp [2:2]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values30.hpp [2:2]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values40.hpp [2:2]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values50.hpp [2:2]
- boost/fusion/container/generation.hpp [2:2]
- boost/fusion/container/generation/cons_tie.hpp [2:2]
- boost/fusion/container/generation/detail/pp_deque_tie.hpp [2:3]
- boost/fusion/container/generation/detail/pp_deque_tie.hpp [28:28]
- boost/fusion/container/generation/detail/pp_list_tie.hpp [2:2]
- boost/fusion/container/generation/detail/pp_list_tie.hpp [27:27]
- boost/fusion/container/generation/detail/pp_make_deque.hpp [2:3]
- boost/fusion/container/generation/detail/pp_make_deque.hpp [28:28]
- boost/fusion/container/generation/detail/pp_make_list.hpp [2:2]
- boost/fusion/container/generation/detail/pp_make_list.hpp [27:27]
- boost/fusion/container/generation/detail/pp_make_map.hpp [2:2]
- boost/fusion/container/generation/detail/pp_make_map.hpp [28:28]
- boost/fusion/container/generation/detail/pp_make_set.hpp [2:2]
- boost/fusion/container/generation/detail/pp_make_set.hpp [29:29]
- boost/fusion/container/generation/detail/pp_make_vector.hpp [2:2]
- boost/fusion/container/generation/detail/pp_make_vector.hpp [27:27]
- boost/fusion/container/generation/detail/pp_map_tie.hpp [2:3]
- boost/fusion/container/generation/detail/pp_map_tie.hpp [31:31]
- boost/fusion/container/generation/detail/pp_vector_tie.hpp [2:2]
- boost/fusion/container/generation/detail/pp_vector_tie.hpp [27:27]
- boost/fusion/container/generation/detail/preprocessed/deque_tie.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/deque_tie10.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/deque_tie20.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/deque_tie30.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/deque_tie40.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/deque_tie50.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/list_tie.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/list_tie10.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/list_tie20.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/list_tie30.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/list_tie40.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/list_tie50.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/make_deque.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/make_deque10.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/make_deque20.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/make_deque30.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/make_deque40.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/make_deque50.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/make_list.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/make_list10.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/make_list20.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/make_list30.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/make_list40.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/make_list50.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/make_map.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/make_map10.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/make_map20.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/make_map30.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/make_map40.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/make_map50.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/make_set.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/make_set10.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/make_set20.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/make_set30.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/make_set40.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/make_set50.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/make_vector.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/make_vector10.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/make_vector20.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/make_vector30.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/make_vector40.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/make_vector50.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/map_tie.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/map_tie10.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/map_tie20.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/map_tie30.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/map_tie40.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/map_tie50.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/vector_tie.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/vector_tie10.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/vector_tie20.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/vector_tie30.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/vector_tie40.hpp [2:2]
- boost/fusion/container/generation/detail/preprocessed/vector_tie50.hpp [2:2]
- boost/fusion/container/generation/ignore.hpp [2:4]
- boost/fusion/container/generation/make_cons.hpp [2:3]
- boost/fusion/container/generation/pair_tie.hpp [2:3]
- boost/fusion/container/list.hpp [2:2]
- boost/fusion/container/list/cons.hpp [2:3]
- boost/fusion/container/list/cons_fwd.hpp [2:3]
- boost/fusion/container/list/cons_iterator.hpp [2:3]
- boost/fusion/container/list/convert.hpp [2:2]
- boost/fusion/container/list/detail/at_impl.hpp [2:2]
- boost/fusion/container/list/detail/begin_impl.hpp [2:3]
- boost/fusion/container/list/detail/build_cons.hpp [2:2]
- boost/fusion/container/list/detail/convert_impl.hpp [2:3]
- boost/fusion/container/list/detail/cpp03/limits.hpp [2:2]
- boost/fusion/container/list/detail/cpp03/list.hpp [2:2]
- boost/fusion/container/list/detail/cpp03/list.hpp [26:26]
- boost/fusion/container/list/detail/cpp03/list_forward_ctor.hpp [2:2]
- boost/fusion/container/list/detail/cpp03/list_fwd.hpp [2:2]
- boost/fusion/container/list/detail/cpp03/list_fwd.hpp [22:22]
- boost/fusion/container/list/detail/cpp03/list_to_cons.hpp [2:2]
- boost/fusion/container/list/detail/cpp03/list_to_cons.hpp [34:34]
- boost/fusion/container/list/detail/cpp03/list_to_cons_call.hpp [2:2]
- boost/fusion/container/list/detail/cpp03/preprocessed/list.hpp [2:2]
- boost/fusion/container/list/detail/cpp03/preprocessed/list10.hpp [2:2]
- boost/fusion/container/list/detail/cpp03/preprocessed/list10_fwd.hpp [2:2]
- boost/fusion/container/list/detail/cpp03/preprocessed/list20.hpp [2:2]
- boost/fusion/container/list/detail/cpp03/preprocessed/list20_fwd.hpp [2:2]
- boost/fusion/container/list/detail/cpp03/preprocessed/list30.hpp [2:2]
- boost/fusion/container/list/detail/cpp03/preprocessed/list30_fwd.hpp [2:2]
- boost/fusion/container/list/detail/cpp03/preprocessed/list40.hpp [2:2]
- boost/fusion/container/list/detail/cpp03/preprocessed/list40_fwd.hpp [2:2]
- boost/fusion/container/list/detail/cpp03/preprocessed/list50.hpp [2:2]
- boost/fusion/container/list/detail/cpp03/preprocessed/list50_fwd.hpp [2:2]
- boost/fusion/container/list/detail/cpp03/preprocessed/list_fwd.hpp [2:2]
- boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons.hpp [2:2]
- boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons10.hpp [2:2]
- boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons20.hpp [2:2]
- boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons30.hpp [2:2]
- boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons40.hpp [2:2]
- boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons50.hpp [2:2]
- boost/fusion/container/list/detail/deref_impl.hpp [2:3]
- boost/fusion/container/list/detail/end_impl.hpp [2:3]
- boost/fusion/container/list/detail/equal_to_impl.hpp [2:2]
- boost/fusion/container/list/detail/next_impl.hpp [2:3]
- boost/fusion/container/list/detail/value_at_impl.hpp [2:2]
- boost/fusion/container/list/detail/value_of_impl.hpp [2:3]
- boost/fusion/container/list/nil.hpp [2:3]
- boost/fusion/container/map.hpp [2:2]
- boost/fusion/container/map/convert.hpp [2:2]
- boost/fusion/container/map/detail/cpp03/as_map.hpp [2:2]
- boost/fusion/container/map/detail/cpp03/as_map.hpp [65:65]
- boost/fusion/container/map/detail/cpp03/at_impl.hpp [2:3]
- boost/fusion/container/map/detail/cpp03/begin_impl.hpp [2:3]
- boost/fusion/container/map/detail/cpp03/convert.hpp [2:2]
- boost/fusion/container/map/detail/cpp03/convert_impl.hpp [2:3]
- boost/fusion/container/map/detail/cpp03/end_impl.hpp [2:3]
- boost/fusion/container/map/detail/cpp03/limits.hpp [2:2]
- boost/fusion/container/map/detail/cpp03/map.hpp [2:2]
- boost/fusion/container/map/detail/cpp03/map.hpp [45:45]
- boost/fusion/container/map/detail/cpp03/map_forward_ctor.hpp [2:2]
- boost/fusion/container/map/detail/cpp03/map_fwd.hpp [2:2]
- boost/fusion/container/map/detail/cpp03/map_fwd.hpp [22:22]
- boost/fusion/container/map/detail/cpp03/preprocessed/as_map.hpp [2:2]
- boost/fusion/container/map/detail/cpp03/preprocessed/as_map10.hpp [2:2]
- boost/fusion/container/map/detail/cpp03/preprocessed/as_map20.hpp [2:2]
- boost/fusion/container/map/detail/cpp03/preprocessed/as_map30.hpp [2:2]
- boost/fusion/container/map/detail/cpp03/preprocessed/as_map40.hpp [2:2]
- boost/fusion/container/map/detail/cpp03/preprocessed/as_map50.hpp [2:2]
- boost/fusion/container/map/detail/cpp03/preprocessed/map.hpp [2:2]
- boost/fusion/container/map/detail/cpp03/preprocessed/map10.hpp [2:2]
- boost/fusion/container/map/detail/cpp03/preprocessed/map10_fwd.hpp [2:2]
- boost/fusion/container/map/detail/cpp03/preprocessed/map20.hpp [2:2]
- boost/fusion/container/map/detail/cpp03/preprocessed/map20_fwd.hpp [2:2]
- boost/fusion/container/map/detail/cpp03/preprocessed/map30.hpp [2:2]
- boost/fusion/container/map/detail/cpp03/preprocessed/map30_fwd.hpp [2:2]
- boost/fusion/container/map/detail/cpp03/preprocessed/map40.hpp [2:2]
- boost/fusion/container/map/detail/cpp03/preprocessed/map40_fwd.hpp [2:2]
- boost/fusion/container/map/detail/cpp03/preprocessed/map50.hpp [2:2]
- boost/fusion/container/map/detail/cpp03/preprocessed/map50_fwd.hpp [2:2]
- boost/fusion/container/map/detail/cpp03/preprocessed/map_fwd.hpp [2:2]
- boost/fusion/container/map/detail/cpp03/value_at_impl.hpp [2:3]
- boost/fusion/container/map/map.hpp [2:2]
- boost/fusion/container/map/map_fwd.hpp [2:2]
- boost/fusion/container/set.hpp [2:2]
- boost/fusion/container/set/convert.hpp [2:2]
- boost/fusion/container/set/detail/begin_impl.hpp [2:3]
- boost/fusion/container/set/detail/convert_impl.hpp [2:3]
- boost/fusion/container/set/detail/cpp03/as_set.hpp [2:2]
- boost/fusion/container/set/detail/cpp03/as_set.hpp [65:65]
- boost/fusion/container/set/detail/cpp03/limits.hpp [2:2]
- boost/fusion/container/set/detail/cpp03/preprocessed/as_set.hpp [2:2]
- boost/fusion/container/set/detail/cpp03/preprocessed/as_set10.hpp [2:2]
- boost/fusion/container/set/detail/cpp03/preprocessed/as_set20.hpp [2:2]
- boost/fusion/container/set/detail/cpp03/preprocessed/as_set30.hpp [2:2]
- boost/fusion/container/set/detail/cpp03/preprocessed/as_set40.hpp [2:2]
- boost/fusion/container/set/detail/cpp03/preprocessed/as_set50.hpp [2:2]
- boost/fusion/container/set/detail/cpp03/preprocessed/set.hpp [2:2]
- boost/fusion/container/set/detail/cpp03/preprocessed/set10.hpp [2:2]
- boost/fusion/container/set/detail/cpp03/preprocessed/set10_fwd.hpp [2:2]
- boost/fusion/container/set/detail/cpp03/preprocessed/set20.hpp [2:2]
- boost/fusion/container/set/detail/cpp03/preprocessed/set20_fwd.hpp [2:2]
- boost/fusion/container/set/detail/cpp03/preprocessed/set30.hpp [2:2]
- boost/fusion/container/set/detail/cpp03/preprocessed/set30_fwd.hpp [2:2]
- boost/fusion/container/set/detail/cpp03/preprocessed/set40.hpp [2:2]
- boost/fusion/container/set/detail/cpp03/preprocessed/set40_fwd.hpp [2:2]
- boost/fusion/container/set/detail/cpp03/preprocessed/set50.hpp [2:2]
- boost/fusion/container/set/detail/cpp03/preprocessed/set50_fwd.hpp [2:2]
- boost/fusion/container/set/detail/cpp03/preprocessed/set_fwd.hpp [2:2]
- boost/fusion/container/set/detail/cpp03/set.hpp [2:2]
- boost/fusion/container/set/detail/cpp03/set.hpp [38:38]
- boost/fusion/container/set/detail/cpp03/set_forward_ctor.hpp [2:2]
- boost/fusion/container/set/detail/cpp03/set_fwd.hpp [2:2]
- boost/fusion/container/set/detail/cpp03/set_fwd.hpp [22:22]
- boost/fusion/container/set/detail/end_impl.hpp [2:3]
- boost/fusion/container/vector.hpp [2:2]
- boost/fusion/container/vector/convert.hpp [2:2]
- boost/fusion/container/vector/detail/advance_impl.hpp [2:2]
- boost/fusion/container/vector/detail/at_impl.hpp [2:2]
- boost/fusion/container/vector/detail/begin_impl.hpp [2:2]
- boost/fusion/container/vector/detail/convert_impl.hpp [2:3]
- boost/fusion/container/vector/detail/cpp03/as_vector.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/as_vector.hpp [65:65]
- boost/fusion/container/vector/detail/cpp03/limits.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector10.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector20.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector30.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector40.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector50.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector10.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector10_fwd.hpp [2:3]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector20.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector20_fwd.hpp [2:3]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector30.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector30_fwd.hpp [2:3]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector40.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector40_fwd.hpp [2:3]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector50.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector50_fwd.hpp [2:3]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser10.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser20.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser30.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser40.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser50.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector_fwd.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10_fwd.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20_fwd.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30_fwd.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40_fwd.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50_fwd.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/value_at_impl.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/vector.hpp [2:3]
- boost/fusion/container/vector/detail/cpp03/vector.hpp [70:70]
- boost/fusion/container/vector/detail/cpp03/vector10.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/vector10.hpp [73:73]
- boost/fusion/container/vector/detail/cpp03/vector10_fwd.hpp [3:4]
- boost/fusion/container/vector/detail/cpp03/vector10_fwd.hpp [31:32]
- boost/fusion/container/vector/detail/cpp03/vector20.hpp [2:3]
- boost/fusion/container/vector/detail/cpp03/vector20.hpp [48:48]
- boost/fusion/container/vector/detail/cpp03/vector20_fwd.hpp [3:4]
- boost/fusion/container/vector/detail/cpp03/vector20_fwd.hpp [25:26]
- boost/fusion/container/vector/detail/cpp03/vector30.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/vector30.hpp [47:47]
- boost/fusion/container/vector/detail/cpp03/vector30_fwd.hpp [3:4]
- boost/fusion/container/vector/detail/cpp03/vector30_fwd.hpp [25:26]
- boost/fusion/container/vector/detail/cpp03/vector40.hpp [2:3]
- boost/fusion/container/vector/detail/cpp03/vector40.hpp [48:48]
- boost/fusion/container/vector/detail/cpp03/vector40_fwd.hpp [3:4]
- boost/fusion/container/vector/detail/cpp03/vector40_fwd.hpp [25:26]
- boost/fusion/container/vector/detail/cpp03/vector50.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/vector50.hpp [47:47]
- boost/fusion/container/vector/detail/cpp03/vector50_fwd.hpp [3:4]
- boost/fusion/container/vector/detail/cpp03/vector50_fwd.hpp [25:26]
- boost/fusion/container/vector/detail/cpp03/vector_forward_ctor.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/vector_fwd.hpp [2:3]
- boost/fusion/container/vector/detail/cpp03/vector_fwd.hpp [37:37]
- boost/fusion/container/vector/detail/cpp03/vector_n.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/vector_n_chooser.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/vector_n_chooser.hpp [48:48]
- boost/fusion/container/vector/detail/deref_impl.hpp [2:2]
- boost/fusion/container/vector/detail/distance_impl.hpp [2:2]
- boost/fusion/container/vector/detail/end_impl.hpp [2:2]
- boost/fusion/container/vector/detail/equal_to_impl.hpp [2:2]
- boost/fusion/container/vector/detail/next_impl.hpp [2:2]
- boost/fusion/container/vector/detail/prior_impl.hpp [2:2]
- boost/fusion/container/vector/detail/value_of_impl.hpp [2:2]
- boost/fusion/container/vector/vector_iterator.hpp [2:2]
- boost/fusion/include/auxiliary.hpp [2:2]
- boost/fusion/include/copy.hpp [2:2]
- boost/fusion/include/iterator_adapter.hpp [2:2]
- boost/fusion/iterator.hpp [2:2]
- boost/fusion/iterator/advance.hpp [2:2]
- boost/fusion/iterator/deref.hpp [2:2]
- boost/fusion/iterator/detail/adapt_deref_traits.hpp [2:2]
- boost/fusion/iterator/detail/adapt_value_traits.hpp [2:2]
- boost/fusion/iterator/detail/advance.hpp [2:2]
- boost/fusion/iterator/detail/distance.hpp [2:2]
- boost/fusion/iterator/distance.hpp [2:2]
- boost/fusion/iterator/equal_to.hpp [2:2]
- boost/fusion/iterator/iterator_adapter.hpp [2:2]
- boost/fusion/iterator/iterator_facade.hpp [2:2]
- boost/fusion/iterator/mpl.hpp [2:2]
- boost/fusion/iterator/mpl/convert_iterator.hpp [2:2]
- boost/fusion/iterator/mpl/fusion_iterator.hpp [2:2]
- boost/fusion/iterator/next.hpp [2:2]
- boost/fusion/iterator/prior.hpp [2:2]
- boost/fusion/iterator/value_of.hpp [2:2]
- boost/fusion/mpl.hpp [2:2]
- boost/fusion/mpl/at.hpp [2:2]
- boost/fusion/mpl/back.hpp [2:2]
- boost/fusion/mpl/begin.hpp [2:2]
- boost/fusion/mpl/clear.hpp [2:2]
- boost/fusion/mpl/detail/clear.hpp [2:2]
- boost/fusion/mpl/empty.hpp [2:2]
- boost/fusion/mpl/end.hpp [2:2]
- boost/fusion/mpl/erase.hpp [2:2]
- boost/fusion/mpl/erase_key.hpp [2:2]
- boost/fusion/mpl/front.hpp [2:2]
- boost/fusion/mpl/has_key.hpp [2:2]
- boost/fusion/mpl/insert.hpp [2:2]
- boost/fusion/mpl/insert_range.hpp [2:2]
- boost/fusion/mpl/pop_back.hpp [2:2]
- boost/fusion/mpl/pop_front.hpp [2:2]
- boost/fusion/mpl/push_back.hpp [2:2]
- boost/fusion/mpl/push_front.hpp [2:2]
- boost/fusion/mpl/size.hpp [2:2]
- boost/fusion/sequence.hpp [2:2]
- boost/fusion/sequence/comparison.hpp [2:2]
- boost/fusion/sequence/comparison/detail/equal_to.hpp [2:3]
- boost/fusion/sequence/comparison/detail/greater.hpp [2:3]
- boost/fusion/sequence/comparison/detail/greater_equal.hpp [2:3]
- boost/fusion/sequence/comparison/detail/less.hpp [2:3]
- boost/fusion/sequence/comparison/detail/less_equal.hpp [2:3]
- boost/fusion/sequence/comparison/detail/not_equal_to.hpp [2:3]
- boost/fusion/sequence/comparison/enable_comparison.hpp [2:2]
- boost/fusion/sequence/comparison/equal_to.hpp [2:3]
- boost/fusion/sequence/comparison/greater.hpp [2:3]
- boost/fusion/sequence/comparison/greater_equal.hpp [2:3]
- boost/fusion/sequence/comparison/less.hpp [2:3]
- boost/fusion/sequence/comparison/less_equal.hpp [2:3]
- boost/fusion/sequence/comparison/not_equal_to.hpp [2:3]
- boost/fusion/sequence/convert.hpp [2:2]
- boost/fusion/sequence/intrinsic.hpp [2:2]
- boost/fusion/sequence/intrinsic/at.hpp [2:2]
- boost/fusion/sequence/intrinsic/at_c.hpp [2:2]
- boost/fusion/sequence/intrinsic/at_key.hpp [2:3]
- boost/fusion/sequence/intrinsic/back.hpp [2:2]
- boost/fusion/sequence/intrinsic/begin.hpp [2:2]
- boost/fusion/sequence/intrinsic/empty.hpp [2:2]
- boost/fusion/sequence/intrinsic/end.hpp [2:2]
- boost/fusion/sequence/intrinsic/front.hpp [2:2]
- boost/fusion/sequence/intrinsic/has_key.hpp [2:2]
- boost/fusion/sequence/intrinsic/size.hpp [2:2]
- boost/fusion/sequence/intrinsic/swap.hpp [2:3]
- boost/fusion/sequence/intrinsic/value_at.hpp [2:2]
- boost/fusion/sequence/intrinsic/value_at_key.hpp [2:3]
- boost/fusion/sequence/intrinsic_fwd.hpp [2:2]
- boost/fusion/sequence/io.hpp [2:2]
- boost/fusion/sequence/io/detail/in.hpp [2:4]
- boost/fusion/sequence/io/detail/manip.hpp [2:4]
- boost/fusion/sequence/io/detail/out.hpp [2:4]
- boost/fusion/sequence/io/in.hpp [2:4]
- boost/fusion/sequence/io/out.hpp [2:4]
- boost/fusion/sequence/sequence_facade.hpp [2:2]
- boost/fusion/support.hpp [2:2]
- boost/fusion/support/category_of.hpp [2:2]
- boost/fusion/support/detail/access.hpp [2:2]
- boost/fusion/support/detail/as_fusion_element.hpp [2:3]
- boost/fusion/support/detail/category_of.hpp [2:2]
- boost/fusion/support/detail/is_mpl_sequence.hpp [2:3]
- boost/fusion/support/detail/is_view.hpp [2:2]
- boost/fusion/support/detail/mpl_iterator_category.hpp [2:2]
- boost/fusion/support/detail/unknown_key.hpp [2:2]
- boost/fusion/support/is_iterator.hpp [2:2]
- boost/fusion/support/is_sequence.hpp [2:2]
- boost/fusion/support/is_view.hpp [2:2]
- boost/fusion/support/iterator_base.hpp [2:2]
- boost/fusion/support/pair.hpp [2:3]
- boost/fusion/support/sequence_base.hpp [2:3]
- boost/fusion/support/tag_of.hpp [2:2]
- boost/fusion/support/tag_of_fwd.hpp [2:3]
- boost/fusion/support/unused.hpp [2:2]
- boost/fusion/support/void.hpp [2:2]
- boost/fusion/tuple.hpp [2:2]
- boost/fusion/tuple/detail/make_tuple.hpp [2:2]
- boost/fusion/tuple/detail/make_tuple.hpp [34:34]
- boost/fusion/tuple/detail/preprocessed/make_tuple.hpp [2:2]
- boost/fusion/tuple/detail/preprocessed/make_tuple10.hpp [2:2]
- boost/fusion/tuple/detail/preprocessed/make_tuple20.hpp [2:2]
- boost/fusion/tuple/detail/preprocessed/make_tuple30.hpp [2:2]
- boost/fusion/tuple/detail/preprocessed/make_tuple40.hpp [2:2]
- boost/fusion/tuple/detail/preprocessed/make_tuple50.hpp [2:2]
- boost/fusion/tuple/detail/preprocessed/tuple.hpp [2:2]
- boost/fusion/tuple/detail/preprocessed/tuple10.hpp [2:2]
- boost/fusion/tuple/detail/preprocessed/tuple10_fwd.hpp [2:2]
- boost/fusion/tuple/detail/preprocessed/tuple20.hpp [2:2]
- boost/fusion/tuple/detail/preprocessed/tuple20_fwd.hpp [2:2]
- boost/fusion/tuple/detail/preprocessed/tuple30.hpp [2:2]
- boost/fusion/tuple/detail/preprocessed/tuple30_fwd.hpp [2:2]
- boost/fusion/tuple/detail/preprocessed/tuple40.hpp [2:2]
- boost/fusion/tuple/detail/preprocessed/tuple40_fwd.hpp [2:2]
- boost/fusion/tuple/detail/preprocessed/tuple50.hpp [2:2]
- boost/fusion/tuple/detail/preprocessed/tuple50_fwd.hpp [2:2]
- boost/fusion/tuple/detail/preprocessed/tuple_fwd.hpp [2:2]
- boost/fusion/tuple/detail/preprocessed/tuple_tie.hpp [2:2]
- boost/fusion/tuple/detail/preprocessed/tuple_tie10.hpp [2:2]
- boost/fusion/tuple/detail/preprocessed/tuple_tie20.hpp [2:2]
- boost/fusion/tuple/detail/preprocessed/tuple_tie30.hpp [2:2]
- boost/fusion/tuple/detail/preprocessed/tuple_tie40.hpp [2:2]
- boost/fusion/tuple/detail/preprocessed/tuple_tie50.hpp [2:2]
- boost/fusion/tuple/detail/tuple.hpp [2:2]
- boost/fusion/tuple/detail/tuple.hpp [30:30]
- boost/fusion/tuple/detail/tuple_expand.hpp [2:2]
- boost/fusion/tuple/detail/tuple_fwd.hpp [2:2]
- boost/fusion/tuple/detail/tuple_fwd.hpp [22:22]
- boost/fusion/tuple/detail/tuple_tie.hpp [2:2]
- boost/fusion/tuple/detail/tuple_tie.hpp [25:25]
- boost/fusion/view.hpp [2:2]
- boost/fusion/view/detail/strictest_traversal.hpp [2:3]
- boost/fusion/view/filter_view.hpp [2:2]
- boost/fusion/view/filter_view/detail/begin_impl.hpp [2:2]
- boost/fusion/view/filter_view/detail/deref_impl.hpp [2:2]
- boost/fusion/view/filter_view/detail/end_impl.hpp [2:2]
- boost/fusion/view/filter_view/detail/equal_to_impl.hpp [2:3]
- boost/fusion/view/filter_view/detail/next_impl.hpp [2:2]
- boost/fusion/view/filter_view/detail/size_impl.hpp [2:2]
- boost/fusion/view/filter_view/detail/value_of_impl.hpp [2:2]
- boost/fusion/view/filter_view/filter_view.hpp [2:2]
- boost/fusion/view/filter_view/filter_view_iterator.hpp [2:2]
- boost/fusion/view/iterator_range.hpp [2:2]
- boost/fusion/view/iterator_range/detail/begin_impl.hpp [2:2]
- boost/fusion/view/iterator_range/detail/end_impl.hpp [2:2]
- boost/fusion/view/iterator_range/iterator_range.hpp [2:2]
- boost/fusion/view/joint_view.hpp [2:2]
- boost/fusion/view/joint_view/detail/begin_impl.hpp [2:2]
- boost/fusion/view/joint_view/detail/deref_impl.hpp [2:2]
- boost/fusion/view/joint_view/detail/end_impl.hpp [2:2]
- boost/fusion/view/joint_view/detail/next_impl.hpp [2:2]
- boost/fusion/view/joint_view/detail/value_of_impl.hpp [2:2]
- boost/fusion/view/joint_view/joint_view.hpp [2:2]
- boost/fusion/view/joint_view/joint_view_iterator.hpp [2:2]
- boost/fusion/view/nview.hpp [2:4]
- boost/fusion/view/nview/detail/size_impl.hpp [2:2]
- boost/fusion/view/reverse_view.hpp [2:2]
- boost/fusion/view/reverse_view/detail/advance_impl.hpp [2:3]
- boost/fusion/view/reverse_view/detail/begin_impl.hpp [2:2]
- boost/fusion/view/reverse_view/detail/deref_impl.hpp [2:2]
- boost/fusion/view/reverse_view/detail/distance_impl.hpp [2:3]
- boost/fusion/view/reverse_view/detail/end_impl.hpp [2:2]
- boost/fusion/view/reverse_view/detail/next_impl.hpp [2:2]
- boost/fusion/view/reverse_view/detail/prior_impl.hpp [2:2]
- boost/fusion/view/reverse_view/detail/value_of_impl.hpp [2:2]
- boost/fusion/view/reverse_view/reverse_view.hpp [2:2]
- boost/fusion/view/reverse_view/reverse_view_iterator.hpp [2:2]
- boost/fusion/view/single_view.hpp [2:2]
- boost/fusion/view/single_view/detail/begin_impl.hpp [2:3]
- boost/fusion/view/single_view/detail/deref_impl.hpp [2:3]
- boost/fusion/view/single_view/detail/end_impl.hpp [2:3]
- boost/fusion/view/single_view/detail/next_impl.hpp [2:3]
- boost/fusion/view/single_view/detail/value_of_impl.hpp [2:3]
- boost/fusion/view/single_view/single_view.hpp [2:3]
- boost/fusion/view/single_view/single_view_iterator.hpp [2:3]
- boost/fusion/view/transform_view.hpp [2:2]
- boost/fusion/view/transform_view/detail/advance_impl.hpp [2:3]
- boost/fusion/view/transform_view/detail/apply_transform_result.hpp [2:3]
- boost/fusion/view/transform_view/detail/at_impl.hpp [2:3]
- boost/fusion/view/transform_view/detail/begin_impl.hpp [2:2]
- boost/fusion/view/transform_view/detail/deref_impl.hpp [2:2]
- boost/fusion/view/transform_view/detail/distance_impl.hpp [2:3]
- boost/fusion/view/transform_view/detail/end_impl.hpp [2:2]
- boost/fusion/view/transform_view/detail/equal_to_impl.hpp [2:2]
- boost/fusion/view/transform_view/detail/next_impl.hpp [2:2]
- boost/fusion/view/transform_view/detail/prior_impl.hpp [2:3]
- boost/fusion/view/transform_view/detail/value_at_impl.hpp [2:3]
- boost/fusion/view/transform_view/detail/value_of_impl.hpp [2:2]
- boost/fusion/view/transform_view/transform_view.hpp [2:2]
- boost/fusion/view/transform_view/transform_view_fwd.hpp [2:2]
- boost/fusion/view/transform_view/transform_view_iterator.hpp [2:2]
- boost/fusion/view/zip_view.hpp [2:3]
- boost/fusion/view/zip_view/detail/advance_impl.hpp [2:3]
- boost/fusion/view/zip_view/detail/at_impl.hpp [2:3]
- boost/fusion/view/zip_view/detail/begin_impl.hpp [2:3]
- boost/fusion/view/zip_view/detail/deref_impl.hpp [2:3]
- boost/fusion/view/zip_view/detail/distance_impl.hpp [2:3]
- boost/fusion/view/zip_view/detail/end_impl.hpp [2:3]
- boost/fusion/view/zip_view/detail/equal_to_impl.hpp [2:3]
- boost/fusion/view/zip_view/detail/next_impl.hpp [2:3]
- boost/fusion/view/zip_view/detail/prior_impl.hpp [2:3]
- boost/fusion/view/zip_view/detail/size_impl.hpp [2:3]
- boost/fusion/view/zip_view/detail/value_at_impl.hpp [2:3]
- boost/fusion/view/zip_view/detail/value_of_impl.hpp [2:3]
- boost/fusion/view/zip_view/zip_view.hpp [2:3]
- boost/fusion/view/zip_view/zip_view_iterator.hpp [2:3]
- boost/fusion/view/zip_view/zip_view_iterator_fwd.hpp [2:3]
- boost/spirit/home/karma/auxiliary/lazy.hpp [1:2]
- boost/spirit/home/karma/char/char_generator.hpp [1:2]
- boost/spirit/home/karma/detail/alternative_function.hpp [1:2]
- boost/spirit/home/karma/detail/attributes.hpp [1:2]
- boost/spirit/home/karma/detail/fail_function.hpp [1:2]
- boost/spirit/home/karma/detail/get_casetag.hpp [1:2]
- boost/spirit/home/karma/detail/pass_container.hpp [2:3]
- boost/spirit/home/karma/directive/encoding.hpp [1:2]
- boost/spirit/home/karma/directive/repeat.hpp [1:2]
- boost/spirit/home/karma/directive/upper_lower_case.hpp [1:2]
- boost/spirit/home/karma/domain.hpp [1:2]
- boost/spirit/home/karma/generator.hpp [1:2]
- boost/spirit/home/karma/meta_compiler.hpp [1:2]
- boost/spirit/home/karma/nonterminal/debug_handler.hpp [1:2]
- boost/spirit/home/karma/nonterminal/detail/fcall.hpp [1:2]
- boost/spirit/home/karma/nonterminal/detail/generator_binder.hpp [1:2]
- boost/spirit/home/karma/nonterminal/detail/parameterized.hpp [1:3]
- boost/spirit/home/karma/nonterminal/grammar.hpp [1:2]
- boost/spirit/home/karma/nonterminal/rule.hpp [1:2]
- boost/spirit/home/karma/nonterminal/simple_trace.hpp [1:2]
- boost/spirit/home/karma/operator/alternative.hpp [1:2]
- boost/spirit/home/karma/operator/and_predicate.hpp [1:2]
- boost/spirit/home/karma/operator/kleene.hpp [1:2]
- boost/spirit/home/karma/operator/list.hpp [1:2]
- boost/spirit/home/karma/operator/not_predicate.hpp [1:2]
- boost/spirit/home/karma/operator/optional.hpp [1:2]
- boost/spirit/home/karma/operator/plus.hpp [1:2]
- boost/spirit/home/karma/operator/sequence.hpp [1:2]
- boost/spirit/home/karma/reference.hpp [1:2]
- boost/spirit/home/lex/argument.hpp [1:4]
- boost/spirit/home/lex/domain.hpp [1:2]
- boost/spirit/home/lex/lexer/lexertl/wrap_action.hpp [2:4]
- boost/spirit/home/lex/lexer_type.hpp [1:2]
- boost/spirit/home/lex/meta_compiler.hpp [1:2]
- boost/spirit/home/lex/reference.hpp [1:2]
- boost/spirit/home/lex/tokenize_and_parse_attr.hpp [1:3]
- boost/spirit/home/qi.hpp [2:2]
- boost/spirit/home/qi/action.hpp [2:2]
- boost/spirit/home/qi/action/action.hpp [2:2]
- boost/spirit/home/qi/auxiliary.hpp [2:3]
- boost/spirit/home/qi/auxiliary/attr.hpp [2:3]
- boost/spirit/home/qi/auxiliary/eoi.hpp [2:3]
- boost/spirit/home/qi/auxiliary/eol.hpp [2:3]
- boost/spirit/home/qi/auxiliary/eps.hpp [2:2]
- boost/spirit/home/qi/auxiliary/lazy.hpp [2:2]
- boost/spirit/home/qi/binary/binary.hpp [2:3]
- boost/spirit/home/qi/char.hpp [2:2]
- boost/spirit/home/qi/char/char.hpp [2:4]
- boost/spirit/home/qi/char/char_class.hpp [2:2]
- boost/spirit/home/qi/char/char_parser.hpp [2:2]
- boost/spirit/home/qi/detail/assign_to.hpp [2:4]
- boost/spirit/home/qi/detail/attributes.hpp [1:2]
- boost/spirit/home/qi/detail/expect_function.hpp [2:2]
- boost/spirit/home/qi/detail/expectation_failure.hpp [2:2]
- boost/spirit/home/qi/detail/fail_function.hpp [2:2]
- boost/spirit/home/qi/detail/pass_container.hpp [2:3]
- boost/spirit/home/qi/detail/pass_function.hpp [2:2]
- boost/spirit/home/qi/detail/permute_function.hpp [2:2]
- boost/spirit/home/qi/detail/string_parse.hpp [2:2]
- boost/spirit/home/qi/directive.hpp [2:2]
- boost/spirit/home/qi/directive/as.hpp [2:4]
- boost/spirit/home/qi/directive/encoding.hpp [2:2]
- boost/spirit/home/qi/directive/hold.hpp [2:2]
- boost/spirit/home/qi/directive/lexeme.hpp [2:2]
- boost/spirit/home/qi/directive/no_case.hpp [2:2]
- boost/spirit/home/qi/directive/no_skip.hpp [2:3]
- boost/spirit/home/qi/directive/omit.hpp [2:2]
- boost/spirit/home/qi/directive/raw.hpp [2:2]
- boost/spirit/home/qi/directive/repeat.hpp [2:3]
- boost/spirit/home/qi/directive/skip.hpp [2:2]
- boost/spirit/home/qi/domain.hpp [2:2]
- boost/spirit/home/qi/meta_compiler.hpp [2:2]
- boost/spirit/home/qi/nonterminal.hpp [2:2]
- boost/spirit/home/qi/nonterminal/debug_handler.hpp [2:2]
- boost/spirit/home/qi/nonterminal/debug_handler_state.hpp [2:2]
- boost/spirit/home/qi/nonterminal/detail/fcall.hpp [2:2]
- boost/spirit/home/qi/nonterminal/detail/parameterized.hpp [2:3]
- boost/spirit/home/qi/nonterminal/detail/parser_binder.hpp [2:2]
- boost/spirit/home/qi/nonterminal/error_handler.hpp [2:2]
- boost/spirit/home/qi/nonterminal/grammar.hpp [2:2]
- boost/spirit/home/qi/nonterminal/rule.hpp [2:2]
- boost/spirit/home/qi/nonterminal/simple_trace.hpp [2:3]
- boost/spirit/home/qi/nonterminal/success_handler.hpp [2:2]
- boost/spirit/home/qi/numeric.hpp [2:2]
- boost/spirit/home/qi/numeric/detail/numeric_utils.hpp [2:6]
- boost/spirit/home/qi/numeric/detail/real_impl.hpp [2:4]
- boost/spirit/home/qi/numeric/int.hpp [2:3]
- boost/spirit/home/qi/numeric/numeric_utils.hpp [2:3]
- boost/spirit/home/qi/numeric/real.hpp [2:3]
- boost/spirit/home/qi/numeric/real_policies.hpp [2:3]
- boost/spirit/home/qi/numeric/uint.hpp [2:4]
- boost/spirit/home/qi/operator.hpp [2:2]
- boost/spirit/home/qi/operator/alternative.hpp [2:3]
- boost/spirit/home/qi/operator/and_predicate.hpp [2:2]
- boost/spirit/home/qi/operator/difference.hpp [2:2]
- boost/spirit/home/qi/operator/expect.hpp [2:3]
- boost/spirit/home/qi/operator/kleene.hpp [2:3]
- boost/spirit/home/qi/operator/list.hpp [2:3]
- boost/spirit/home/qi/operator/not_predicate.hpp [2:2]
- boost/spirit/home/qi/operator/optional.hpp [2:3]
- boost/spirit/home/qi/operator/permutation.hpp [2:2]
- boost/spirit/home/qi/operator/plus.hpp [2:3]
- boost/spirit/home/qi/operator/sequence.hpp [2:3]
- boost/spirit/home/qi/operator/sequence_base.hpp [2:3]
- boost/spirit/home/qi/operator/sequential_or.hpp [2:2]
- boost/spirit/home/qi/parse.hpp [2:3]
- boost/spirit/home/qi/parse_attr.hpp [1:3]
- boost/spirit/home/qi/parser.hpp [2:2]
- boost/spirit/home/qi/reference.hpp [2:2]
- boost/spirit/home/qi/skip_over.hpp [2:2]
- boost/spirit/home/qi/stream/match_manip.hpp [2:3]
- boost/spirit/home/qi/stream/match_manip_attr.hpp [2:3]
- boost/spirit/home/qi/string.hpp [2:2]
- boost/spirit/home/qi/string/detail/tst.hpp [2:2]
- boost/spirit/home/qi/string/lit.hpp [2:4]
- boost/spirit/home/qi/string/symbols.hpp [2:2]
- boost/spirit/home/qi/string/tst.hpp [2:2]
- boost/spirit/home/qi/string/tst_map.hpp [2:2]
- boost/spirit/home/qi/what.hpp [2:2]
- boost/spirit/home/support.hpp [2:2]
- boost/spirit/home/support/action_dispatch.hpp [2:4]
- boost/spirit/home/support/algorithm/any.hpp [2:2]
- boost/spirit/home/support/algorithm/any_if.hpp [2:3]
- boost/spirit/home/support/algorithm/any_if_ns.hpp [2:3]
- boost/spirit/home/support/algorithm/any_if_ns_so.hpp [2:3]
- boost/spirit/home/support/algorithm/any_ns.hpp [2:2]
- boost/spirit/home/support/algorithm/any_ns_so.hpp [2:2]
- boost/spirit/home/support/argument.hpp [2:4]
- boost/spirit/home/support/attributes.hpp [2:3]
- boost/spirit/home/support/attributes_fwd.hpp [2:4]
- boost/spirit/home/support/char_class.hpp [2:3]
- boost/spirit/home/support/char_encoding/ascii.hpp [2:3]
- boost/spirit/home/support/char_encoding/iso8859_1.hpp [2:3]
- boost/spirit/home/support/char_encoding/standard.hpp [2:3]
- boost/spirit/home/support/char_encoding/standard_wide.hpp [2:3]
- boost/spirit/home/support/char_encoding/unicode.hpp [2:3]
- boost/spirit/home/support/char_encoding/unicode/category_table.hpp [2:2]
- boost/spirit/home/support/char_encoding/unicode/create_tables.cpp [2:2]
- boost/spirit/home/support/char_encoding/unicode/create_tables.cpp [450:450]
- boost/spirit/home/support/char_encoding/unicode/lowercase_table.hpp [2:2]
- boost/spirit/home/support/char_encoding/unicode/query.hpp [2:2]
- boost/spirit/home/support/char_encoding/unicode/script_table.hpp [2:2]
- boost/spirit/home/support/char_encoding/unicode/uppercase_table.hpp [2:2]
- boost/spirit/home/support/char_set/basic_chset.hpp [2:4]
- boost/spirit/home/support/char_set/range.hpp [2:2]
- boost/spirit/home/support/char_set/range_functions.hpp [2:2]
- boost/spirit/home/support/char_set/range_run.hpp [2:2]
- boost/spirit/home/support/char_set/range_run_impl.hpp [2:2]
- boost/spirit/home/support/container.hpp [2:4]
- boost/spirit/home/support/context.hpp [2:4]
- boost/spirit/home/support/detail/as_variant.hpp [2:2]
- boost/spirit/home/support/detail/get_encoding.hpp [1:2]
- boost/spirit/home/support/detail/pow10.hpp [2:4]
- boost/spirit/home/support/detail/sign.hpp [2:4]
- boost/spirit/home/support/detail/what_function.hpp [2:2]
- boost/spirit/home/support/extended_variant.hpp [2:2]
- boost/spirit/home/support/info.hpp [2:2]
- boost/spirit/home/support/iterators/line_pos_iterator.hpp [2:4]
- boost/spirit/home/support/lazy.hpp [2:2]
- boost/spirit/home/support/nonterminal/expand_arg.hpp [2:2]
- boost/spirit/home/support/nonterminal/extract_param.hpp [2:4]
- boost/spirit/home/support/nonterminal/locals.hpp [2:3]
- boost/spirit/home/support/sequence_base_id.hpp [2:2]
- boost/spirit/home/support/string_traits.hpp [2:4]
- boost/spirit/home/support/terminal.hpp [2:4]
- boost/spirit/home/support/terminal_expression.hpp [2:4]
- boost/spirit/home/support/unused.hpp [2:3]
- boost/spirit/home/support/utf8.hpp [2:2]
- boost/spirit/home/support/utree.hpp [2:2]
- boost/spirit/home/support/utree/detail/utree_detail1.hpp [2:4]
- boost/spirit/home/support/utree/detail/utree_detail2.hpp [2:4]
- boost/spirit/home/support/utree/operators.hpp [2:4]
- boost/spirit/home/support/utree/utree.hpp [2:4]
- boost/spirit/home/support/utree/utree_traits.hpp [2:4]
- boost/spirit/home/x3/binary/binary.hpp [2:3]
- boost/spirit/home/x3/directive/repeat.hpp [2:4]
- boost/spirit/home/x3/version.hpp [2:4]
- boost/spirit/include/karma.hpp [2:4]
- boost/spirit/include/karma_action.hpp [2:4]
- boost/spirit/include/karma_alternative.hpp [2:4]
- boost/spirit/include/karma_and_predicate.hpp [2:4]
- boost/spirit/include/karma_attr_cast.hpp [2:4]
- boost/spirit/include/karma_auto.hpp [2:4]
- boost/spirit/include/karma_auxiliary.hpp [2:4]
- boost/spirit/include/karma_binary.hpp [2:4]
- boost/spirit/include/karma_bool.hpp [2:4]
- boost/spirit/include/karma_buffer.hpp [2:4]
- boost/spirit/include/karma_center_alignment.hpp [2:4]
- boost/spirit/include/karma_char.hpp [2:4]
- boost/spirit/include/karma_char_.hpp [2:4]
- boost/spirit/include/karma_char_class.hpp [2:4]
- boost/spirit/include/karma_columns.hpp [2:4]
- boost/spirit/include/karma_delimit.hpp [2:4]
- boost/spirit/include/karma_directive.hpp [2:4]
- boost/spirit/include/karma_domain.hpp [2:4]
- boost/spirit/include/karma_eol.hpp [2:4]
- boost/spirit/include/karma_eps.hpp [2:4]
- boost/spirit/include/karma_format.hpp [2:4]
- boost/spirit/include/karma_format_attr.hpp [2:4]
- boost/spirit/include/karma_format_auto.hpp [2:4]
- boost/spirit/include/karma_generate.hpp [2:4]
- boost/spirit/include/karma_generate_attr.hpp [2:4]
- boost/spirit/include/karma_generate_auto.hpp [2:4]
- boost/spirit/include/karma_int.hpp [2:4]
- boost/spirit/include/karma_kleene.hpp [2:4]
- boost/spirit/include/karma_lazy.hpp [2:4]
- boost/spirit/include/karma_left_alignment.hpp [2:4]
- boost/spirit/include/karma_list.hpp [2:4]
- boost/spirit/include/karma_maxwidth.hpp [2:4]
- boost/spirit/include/karma_no_delimit.hpp [2:4]
- boost/spirit/include/karma_nonterminal.hpp [2:4]
- boost/spirit/include/karma_not_predicate.hpp [2:4]
- boost/spirit/include/karma_numeric.hpp [2:4]
- boost/spirit/include/karma_omit.hpp [2:4]
- boost/spirit/include/karma_operator.hpp [2:4]
- boost/spirit/include/karma_optional.hpp [2:4]
- boost/spirit/include/karma_phoenix_attributes.hpp [2:4]
- boost/spirit/include/karma_plus.hpp [2:4]
- boost/spirit/include/karma_real.hpp [2:4]
- boost/spirit/include/karma_repeat.hpp [2:4]
- boost/spirit/include/karma_right_alignment.hpp [2:4]
- boost/spirit/include/karma_sequence.hpp [2:4]
- boost/spirit/include/karma_stream.hpp [2:4]
- boost/spirit/include/karma_strict_relaxed.hpp [2:4]
- boost/spirit/include/karma_string.hpp [2:4]
- boost/spirit/include/karma_symbols.hpp [2:4]
- boost/spirit/include/karma_uint.hpp [2:4]
- boost/spirit/include/karma_upper_lower_case.hpp [2:4]
- boost/spirit/include/karma_verbatim.hpp [2:4]
- boost/spirit/include/karma_what.hpp [2:4]
- boost/spirit/include/lex.hpp [2:4]
- boost/spirit/include/lex_domain.hpp [2:4]
- boost/spirit/include/lex_lexer.hpp [2:4]
- boost/spirit/include/lex_lexertl.hpp [2:4]
- boost/spirit/include/lex_lexertl_position_token.hpp [2:4]
- boost/spirit/include/lex_lexertl_token.hpp [2:4]
- boost/spirit/include/lex_static_lexertl.hpp [2:4]
- boost/spirit/include/lex_tokenize_and_parse.hpp [2:4]
- boost/spirit/include/phoenix.hpp [2:4]
- boost/spirit/include/phoenix_algorithm.hpp [2:4]
- boost/spirit/include/phoenix_bind.hpp [2:4]
- boost/spirit/include/phoenix_container.hpp [2:4]
- boost/spirit/include/phoenix_core.hpp [2:4]
- boost/spirit/include/phoenix_function.hpp [2:4]
- boost/spirit/include/phoenix_fusion.hpp [2:4]
- boost/spirit/include/phoenix_limits.hpp [2:4]
- boost/spirit/include/phoenix_object.hpp [2:4]
- boost/spirit/include/phoenix_operator.hpp [2:4]
- boost/spirit/include/phoenix_scope.hpp [2:4]
- boost/spirit/include/phoenix_statement.hpp [2:4]
- boost/spirit/include/phoenix_stl.hpp [2:4]
- boost/spirit/include/phoenix_version.hpp [2:4]
- boost/spirit/include/qi.hpp [2:4]
- boost/spirit/include/qi_action.hpp [2:4]
- boost/spirit/include/qi_alternative.hpp [2:4]
- boost/spirit/include/qi_and_predicate.hpp [2:4]
- boost/spirit/include/qi_as_string.hpp [2:4]
- boost/spirit/include/qi_attr.hpp [2:4]
- boost/spirit/include/qi_attr_cast.hpp [2:4]
- boost/spirit/include/qi_auto.hpp [2:4]
- boost/spirit/include/qi_auxiliary.hpp [2:4]
- boost/spirit/include/qi_binary.hpp [2:4]
- boost/spirit/include/qi_bool.hpp [2:4]
- boost/spirit/include/qi_char.hpp [2:4]
- boost/spirit/include/qi_char_.hpp [2:4]
- boost/spirit/include/qi_char_class.hpp [2:4]
- boost/spirit/include/qi_core.hpp [2:4]
- boost/spirit/include/qi_difference.hpp [2:4]
- boost/spirit/include/qi_directive.hpp [2:4]
- boost/spirit/include/qi_domain.hpp [2:4]
- boost/spirit/include/qi_eoi.hpp [2:4]
- boost/spirit/include/qi_eol.hpp [2:4]
- boost/spirit/include/qi_eps.hpp [2:4]
- boost/spirit/include/qi_expect.hpp [2:4]
- boost/spirit/include/qi_grammar.hpp [2:4]
- boost/spirit/include/qi_hold.hpp [2:4]
- boost/spirit/include/qi_int.hpp [2:4]
- boost/spirit/include/qi_kleene.hpp [2:4]
- boost/spirit/include/qi_lazy.hpp [2:4]
- boost/spirit/include/qi_lexeme.hpp [2:4]
- boost/spirit/include/qi_list.hpp [2:4]
- boost/spirit/include/qi_lit.hpp [2:4]
- boost/spirit/include/qi_match.hpp [2:4]
- boost/spirit/include/qi_match_attr.hpp [2:4]
- boost/spirit/include/qi_match_auto.hpp [2:4]
- boost/spirit/include/qi_no_case.hpp [2:4]
- boost/spirit/include/qi_nonterminal.hpp [2:4]
- boost/spirit/include/qi_not_predicate.hpp [2:4]
- boost/spirit/include/qi_numeric.hpp [2:4]
- boost/spirit/include/qi_omit.hpp [2:4]
- boost/spirit/include/qi_operator.hpp [2:4]
- boost/spirit/include/qi_optional.hpp [2:4]
- boost/spirit/include/qi_parse.hpp [2:4]
- boost/spirit/include/qi_parse_attr.hpp [2:4]
- boost/spirit/include/qi_parse_auto.hpp [2:4]
- boost/spirit/include/qi_permutation.hpp [2:4]
- boost/spirit/include/qi_plus.hpp [2:4]
- boost/spirit/include/qi_raw.hpp [2:4]
- boost/spirit/include/qi_real.hpp [2:4]
- boost/spirit/include/qi_repeat.hpp [2:4]
- boost/spirit/include/qi_rule.hpp [2:4]
- boost/spirit/include/qi_sequence.hpp [2:4]
- boost/spirit/include/qi_sequential_or.hpp [2:4]
- boost/spirit/include/qi_skip.hpp [2:4]
- boost/spirit/include/qi_stream.hpp [2:4]
- boost/spirit/include/qi_string.hpp [2:4]
- boost/spirit/include/qi_symbols.hpp [2:4]
- boost/spirit/include/qi_uint.hpp [2:4]
- boost/spirit/include/qi_what.hpp [2:4]
- boost/spirit/include/support.hpp [2:4]
- boost/spirit/include/support_any.hpp [2:4]
- boost/spirit/include/support_any_if.hpp [2:4]
- boost/spirit/include/support_any_if_ns.hpp [2:4]
- boost/spirit/include/support_any_if_ns_so.hpp [2:4]
- boost/spirit/include/support_any_ns.hpp [2:4]
- boost/spirit/include/support_any_ns_so.hpp [2:4]
- boost/spirit/include/support_argument.hpp [2:4]
- boost/spirit/include/support_ascii.hpp [2:4]
- boost/spirit/include/support_attributes.hpp [2:4]
- boost/spirit/include/support_char_class.hpp [2:4]
- boost/spirit/include/support_iso8859_1.hpp [2:4]
- boost/spirit/include/support_istream_iterator.hpp [2:4]
- boost/spirit/include/support_locals.hpp [2:4]
- boost/spirit/include/support_look_ahead.hpp [2:4]
- boost/spirit/include/support_modify.hpp [2:4]
- boost/spirit/include/support_multi_pass.hpp [2:4]
- boost/spirit/include/support_multi_pass_fwd.hpp [2:4]
- boost/spirit/include/support_standard.hpp [2:4]
- boost/spirit/include/support_standard_wide.hpp [2:4]
- boost/spirit/include/support_string_traits.hpp [2:4]
- boost/spirit/include/support_unused.hpp [2:4]
- boost/spirit/include/version.hpp [2:4]
- boost/spirit/repository/home/karma.hpp [1:2]
- boost/spirit/repository/home/karma/directive.hpp [1:2]
- boost/spirit/repository/home/karma/nonterminal.hpp [1:3]
- boost/spirit/repository/home/karma/nonterminal/subrule.hpp [1:3]
- boost/spirit/repository/home/qi.hpp [1:2]
- boost/spirit/repository/home/qi/directive.hpp [1:2]
- boost/spirit/repository/home/qi/directive/distinct.hpp [1:3]
- boost/spirit/repository/home/qi/directive/kwd.hpp [2:3]
- boost/spirit/repository/home/qi/nonterminal.hpp [1:3]
- boost/spirit/repository/home/qi/nonterminal/subrule.hpp [2:3]
- boost/spirit/repository/home/qi/operator.hpp [1:3]
- boost/spirit/repository/home/qi/operator/keywords.hpp [2:3]
- boost/spirit/repository/home/qi/primitive.hpp [1:2]
- boost/spirit/repository/include/karma.hpp [2:4]
- boost/spirit/repository/include/karma_confix.hpp [2:4]
- boost/spirit/repository/include/karma_directive.hpp [2:4]
- boost/spirit/repository/include/karma_nonterminal.hpp [2:5]
- boost/spirit/repository/include/karma_subrule.hpp [2:5]
- boost/spirit/repository/include/qi.hpp [2:4]
- boost/spirit/repository/include/qi_confix.hpp [2:4]
- boost/spirit/repository/include/qi_directive.hpp [2:4]
- boost/spirit/repository/include/qi_distinct.hpp [2:4]
- boost/spirit/repository/include/qi_flush_multi_pass.hpp [2:4]
- boost/spirit/repository/include/qi_iter_pos.hpp [2:4]
- boost/spirit/repository/include/qi_keywords.hpp [2:5]
- boost/spirit/repository/include/qi_kwd.hpp [2:5]
- boost/spirit/repository/include/qi_kwd.hpp [21:24]
- boost/spirit/repository/include/qi_primitive.hpp [2:4]
- boost/spirit/repository/include/qi_subrule.hpp [2:5]
- boost/spirit/version.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 49f4a36bb0a21c79325499a364e4562a
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2010 Joel de Guzman
- Copyright (c) 2001-2010 Hartmut Kaiser
- Copyright (c) 2010 Bryce Lelbach
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/include/karma_as.hpp [2:5]
- boost/spirit/include/qi_as.hpp [2:5]
- boost/spirit/include/support_line_pos_iterator.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4a060e80d859c7e83ba0c643ebbf6487
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/gcc.hpp [1:9]
- boost/config/platform/bsd.hpp [1:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4a2a96991e1c16ba5bf1e9f8b0fbe7d2
-BELONGS ya.make
- License text:
- // Copyright (c) 2004 Gerald I. Evenden
- // Copyright (c) 2012 Martin Raspaud
- // See also (section 4.4.3.2):
- // http://www.eumetsat.int/en/area4/msg/news/us_doc/cgms_03_26.pdf
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/srs/projections/proj/geos.hpp [26:29]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4a4c85d50d7786e732eb8f9d7ce88a13
-BELONGS ya.make
- License text:
- // (C) Copyright 2007 Andrew Sutton
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/detail/geodesic.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4a4fbc450e95f537c721c3233d392cc2
-BELONGS ya.make
- License text:
- * Copyright 2000 Jens Maurer
- * Copyright 2002-2003 Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/interval/arith.hpp [3:4]
- boost/numeric/interval/arith2.hpp [7:7]
- boost/numeric/interval/interval.hpp [3:3]
- boost/numeric/interval/limits.hpp [3:4]
- boost/numeric/interval/rounded_arith.hpp [3:3]
- boost/numeric/interval/rounded_transc.hpp [3:3]
- boost/numeric/interval/rounding.hpp [3:3]
- boost/numeric/interval/utility.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4a821e5758b93634e3a4ab4a06284e40
-BELONGS ya.make
- License text:
- // Copyright (c) 2015-2017 Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/formulas/andoyer_inverse.hpp [5:5]
- boost/geometry/formulas/area_formulas.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4aa8761b7714a5e9baf4ca567e1fc644
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/function_output_iterator.hpp at line 3
- License text:
- // (C) Copyright Andrey Semashev 2017.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/function_output_iterator.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4ad7fd89f16a988c974121eaf0fbfd94
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/core/no_exceptions_support.hpp at line 11
- License text:
- // (C) Copyright 2004 Pavel Vozenilek.
- // Use, modification and distribution is subject to the Boost Software
- // License, Version 1.0. (See accompanying file LICENSE_1_0.txt
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/core/no_exceptions_support.hpp [9:11]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4b3a6c1fe0a4a17b8d5433d346ee3069
-BELONGS ya.make
- License text:
- // (C) Copyright 2009-2012 Anthony Williams
- // (C) Copyright 2012 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/scoped_thread.hpp [4:5]
- boost/thread/thread_functors.hpp [4:5]
- boost/thread/thread_guard.hpp [4:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4b73115721ced28727c2b8b4f4a85abc
-BELONGS ya.make
- License text:
- // Copyright Beman Dawes 2014
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/detail/lightweight_test_report.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4b76d293e7e0b07c0269a1e8929c4f9a
-BELONGS libs/filesystem/ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: libs/filesystem/src/portability.cpp at line 5
- License text:
- // Copyright 2002-2005 Beman Dawes
- // Use, modification, and distribution is subject to the Boost Software
- // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- libs/filesystem/src/portability.cpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4bcc7787f0424f3d32f66485fdb7a1dd
-BELONGS ya.make
- License text:
- // (C) Copyright Brian Kuhl 2016.
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/diab.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4c05b98b305186bded685dc5e858e190
-BELONGS ya.make
- License text:
- // Copyright 2007 David Jenkins.
- // Copyright 2007 Eric Niebler.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/xpressive/detail/utility/symbols.hpp [9:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4c2f4dc3c4ca9b711516d642e24bae0f
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2014 Joel de Guzman
- Copyright (c) 2001-2012 Hartmut Kaiser
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/x3/support/traits/make_attribute.hpp [2:4]
- boost/spirit/home/x3/support/traits/transform_attribute.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4c74a8a617981a115b83571d3d86df10
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2003 Joel de Guzman
- Copyright (c) 2002-2003 Hartmut Kaiser
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/attribute.hpp [2:4]
- boost/spirit/home/classic/attribute/closure.hpp [2:4]
- boost/spirit/home/classic/attribute/closure_context.hpp [2:4]
- boost/spirit/home/classic/core/assert.hpp [2:4]
- boost/spirit/home/classic/core/non_terminal/impl/subrule.ipp [2:4]
- boost/spirit/home/classic/core/non_terminal/parser_context.hpp [2:4]
- boost/spirit/home/classic/core/non_terminal/subrule.hpp [2:4]
- boost/spirit/home/classic/debug.hpp [2:4]
- boost/spirit/home/classic/debug/impl/parser_names.ipp [2:4]
- boost/spirit/home/classic/debug/minimal.hpp [2:4]
- boost/spirit/home/classic/debug/parser_names.hpp [2:4]
- boost/spirit/home/classic/meta/as_parser.hpp [2:4]
- boost/spirit/home/classic/meta/fundamental.hpp [2:3]
- boost/spirit/home/classic/meta/impl/fundamental.ipp [2:3]
- boost/spirit/home/classic/meta/impl/refactoring.ipp [2:3]
- boost/spirit/home/classic/meta/impl/traverse.ipp [2:4]
- boost/spirit/home/classic/meta/refactoring.hpp [2:3]
- boost/spirit/home/classic/meta/traverse.hpp [2:4]
- boost/spirit/home/classic/utility/confix.hpp [2:3]
- boost/spirit/home/classic/utility/impl/confix.ipp [2:3]
- boost/spirit/home/classic/utility/impl/escape_char.ipp [2:4]
- boost/spirit/home/classic/utility/impl/lists.ipp [2:3]
- boost/spirit/home/classic/utility/impl/regex.ipp [2:3]
- boost/spirit/home/classic/utility/lists.hpp [2:3]
- boost/spirit/home/classic/utility/regex.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4c7e1f597f1997587410c32f9a6d6fdb
-BELONGS ya.make
- License text:
- // Copyright (c) 2005 Aaron Windsor
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/max_cardinality_matching.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4cf14bcc6afe3ad08dfd547e89ac0920
-BELONGS ya.make
- License text:
- // Copyright 2010 The Trustees of Indiana University.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/loop_erased_random_walk.hpp [1:1]
- boost/graph/random_spanning_tree.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4d01e73e2dcbf51faefedb12549edd5b
-BELONGS ya.make
- License text:
- // Copyright (c) 2003 Eric Friedman
- // Copyright (c) 2015-2016 Antony Polukhin
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/variant/detail/forced_return.hpp [6:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4d10949f0d1cde0db83ea5d5329e99ec
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/detail/default_ops.hpp at line 4, boost/multiprecision/detail/et_ops.hpp at line 4, boost/multiprecision/detail/functions/constants.hpp at line 3, boost/multiprecision/detail/functions/trig.hpp at line 4, boost/multiprecision/detail/generic_interconvert.hpp at line 4, boost/multiprecision/detail/number_base.hpp at line 4, boost/multiprecision/gmp.hpp at line 4, boost/multiprecision/mpfi.hpp at line 4, boost/multiprecision/mpfr.hpp at line 4, boost/multiprecision/number.hpp at line 4, boost/multiprecision/rational_adaptor.hpp at line 4, boost/multiprecision/tommath.hpp at line 4
- License text:
- // Copyright 2011 John Maddock. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/multiprecision/detail/default_ops.hpp [2:4]
- boost/multiprecision/detail/et_ops.hpp [2:4]
- boost/multiprecision/detail/functions/constants.hpp [1:3]
- boost/multiprecision/detail/functions/trig.hpp [2:5]
- boost/multiprecision/detail/generic_interconvert.hpp [2:4]
- boost/multiprecision/detail/number_base.hpp [2:4]
- boost/multiprecision/gmp.hpp [2:4]
- boost/multiprecision/mpfi.hpp [2:4]
- boost/multiprecision/mpfr.hpp [2:4]
- boost/multiprecision/number.hpp [2:4]
- boost/multiprecision/rational_adaptor.hpp [2:4]
- boost/multiprecision/tommath.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4d26b7ae91cf6f8491cee13434ff5797
-BELONGS ya.make
- License text:
- * Copyright (c) 1996
- * Silicon Graphics Computer Systems, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/detail/algorithm.hpp [19:20]
- boost/detail/binary_search.hpp [17:18]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4d26b906dcfafbac2938fc9f553e8765
-BELONGS libs/filesystem/ya.make
- License text:
- // Copyright Beman Dawes 2008, 2009
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- libs/filesystem/src/path_traits.cpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4db4957d3d52be4c9de2df56f877800f
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2017.
- // Copyright Nick Thompson 2017.
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/quadrature/gauss_kronrod.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4dd0817dd612e55b1dd91a830dc51207
-BELONGS ya.make
- License text:
- // Copyright (c) 2001-2010 Hartmut Kaiser
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/lex/primitives.hpp [1:1]
- boost/spirit/include/karma_as.hpp [2:5]
- boost/spirit/include/qi_as.hpp [2:5]
- boost/spirit/include/support_line_pos_iterator.hpp [2:5]
- boost/spirit/repository/include/qi_nonterminal.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4df5e60c86e10739c2c2ec25592f4193
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/math/special_functions/asinh.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/asinh.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4e228b87a974a356041866811c36a2ce
-BELONGS ya.make
- License text:
- // Copyright (c) 2010-2011 David Bellot
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/ublas/doxydoc.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4e9027c862fbd56baf0b8eecfc598a5a
-BELONGS ya.make
- License text:
- // Copyright Beman Dawes 2007
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/system/cygwin_error.hpp [3:3]
- boost/system/linux_error.hpp [3:3]
- boost/system/windows_error.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4ead388a4bb56a31d7a3106cdc5eb0f6
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/void_cast.hpp at line 14
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/serialization/void_cast.hpp [12:14]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4ec4f75b23ed6344d1947aa985c282ce
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/vacpp.hpp [1:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4ef1fe58b54acfb9b98d3ce465cd11fe
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/tail.hpp at line 6, boost/accumulators/statistics/tail_variate.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/accumulators/statistics/tail.hpp [4:6]
- boost/accumulators/statistics/tail_variate.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4f1063140d26ee2fe18bca779ccaef80
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/poly_collection/any_collection.hpp at line 3, boost/poly_collection/any_collection_fwd.hpp at line 3, boost/poly_collection/base_collection.hpp at line 3, boost/poly_collection/base_collection_fwd.hpp at line 3, boost/poly_collection/detail/any_model.hpp at line 3, boost/poly_collection/detail/base_model.hpp at line 3, boost/poly_collection/detail/callable_wrapper.hpp at line 3, boost/poly_collection/detail/function_model.hpp at line 3, boost/poly_collection/detail/is_acceptable.hpp at line 3, boost/poly_collection/detail/is_constructible.hpp at line 3, boost/poly_collection/detail/is_final.hpp at line 3, boost/poly_collection/detail/is_invocable.hpp at line 3, boost/poly_collection/detail/is_nothrow_eq_comparable.hpp at line 3, boost/poly_collection/detail/iterator_impl.hpp at line 3, boost/poly_collection/detail/iterator_traits.hpp at line 3, boost/poly_collection/detail/newdelete_allocator.hpp at line 3, boost/poly_collection/detail/packed_segment.hpp at line 3, boost/poly_collection/detail/poly_collection.hpp at line 3, boost/poly_collection/detail/segment.hpp at line 3, boost/poly_collection/detail/segment_backend.hpp at line 3, boost/poly_collection/detail/segment_split.hpp at line 3, boost/poly_collection/detail/split_segment.hpp at line 3, boost/poly_collection/detail/stride_iterator.hpp at line 3, boost/poly_collection/detail/type_info_map.hpp at line 3, boost/poly_collection/detail/type_restitution.hpp at line 3, boost/poly_collection/detail/value_holder.hpp at line 3, boost/poly_collection/exception.hpp at line 3, boost/poly_collection/function_collection.hpp at line 3
- License text:
- /* Copyright 2016-2017 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/poly_collection/any_collection.hpp [1:3]
- boost/poly_collection/any_collection_fwd.hpp [1:3]
- boost/poly_collection/base_collection.hpp [1:3]
- boost/poly_collection/base_collection_fwd.hpp [1:3]
- boost/poly_collection/detail/any_model.hpp [1:3]
- boost/poly_collection/detail/base_model.hpp [1:3]
- boost/poly_collection/detail/callable_wrapper.hpp [1:3]
- boost/poly_collection/detail/function_model.hpp [1:3]
- boost/poly_collection/detail/is_acceptable.hpp [1:3]
- boost/poly_collection/detail/is_constructible.hpp [1:3]
- boost/poly_collection/detail/is_final.hpp [1:3]
- boost/poly_collection/detail/is_invocable.hpp [1:3]
- boost/poly_collection/detail/is_nothrow_eq_comparable.hpp [1:3]
- boost/poly_collection/detail/iterator_impl.hpp [1:3]
- boost/poly_collection/detail/iterator_traits.hpp [1:3]
- boost/poly_collection/detail/newdelete_allocator.hpp [1:3]
- boost/poly_collection/detail/packed_segment.hpp [1:3]
- boost/poly_collection/detail/poly_collection.hpp [1:3]
- boost/poly_collection/detail/segment.hpp [1:3]
- boost/poly_collection/detail/segment_backend.hpp [1:3]
- boost/poly_collection/detail/segment_split.hpp [1:3]
- boost/poly_collection/detail/split_segment.hpp [1:3]
- boost/poly_collection/detail/stride_iterator.hpp [1:3]
- boost/poly_collection/detail/type_info_map.hpp [1:3]
- boost/poly_collection/detail/type_restitution.hpp [1:3]
- boost/poly_collection/detail/value_holder.hpp [1:3]
- boost/poly_collection/exception.hpp [1:3]
- boost/poly_collection/function_collection.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4f11ac86f9301429ed799696ecdddc76
-BELONGS ya.make
- License text:
- // Copyright 2002, 2009, 2014 Peter Dimov
- // Copyright 2008-2009 Frank Mori Hess
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/enable_shared_from_raw.hpp [7:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4f43a7aeacf6672ca74203de5526f7c7
-BELONGS ya.make
- License text:
- // Copyright 2005 Douglas Gregor.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpi/detail/point_to_point.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4f5d57c8559aaf8bf412ae6bc295ec7e
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/allocator_utilities.hpp at line 3, boost/multi_index/detail/access_specifier.hpp at line 3, boost/multi_index/detail/adl_swap.hpp at line 3, boost/multi_index/detail/base_type.hpp at line 3, boost/multi_index/detail/converter.hpp at line 3, boost/multi_index/detail/do_not_copy_elements_tag.hpp at line 3, boost/multi_index/detail/duplicates_iterator.hpp at line 3, boost/multi_index/detail/has_tag.hpp at line 3, boost/multi_index/detail/hash_index_args.hpp at line 3, boost/multi_index/detail/index_saver.hpp at line 3, boost/multi_index/detail/invariant_assert.hpp at line 3, boost/multi_index/detail/is_index_list.hpp at line 3, boost/multi_index/detail/iter_adaptor.hpp at line 3, boost/multi_index/detail/modify_key_adaptor.hpp at line 3, boost/multi_index/detail/no_duplicate_tags.hpp at line 3, boost/multi_index/detail/node_type.hpp at line 3, boost/multi_index/detail/ord_index_args.hpp at line 3, boost/multi_index/detail/rnd_index_loader.hpp at line 3, boost/multi_index/detail/safe_mode.hpp at line 3, boost/multi_index/detail/scope_guard.hpp at line 3, boost/multi_index/detail/serialization_version.hpp at line 3, boost/multi_index/detail/uintptr_type.hpp at line 3, boost/multi_index/detail/unbounded.hpp at line 3, boost/multi_index/detail/vartempl_support.hpp at line 3, boost/multi_index/hashed_index_fwd.hpp at line 3, boost/multi_index/identity_fwd.hpp at line 3, boost/multi_index/indexed_by.hpp at line 3, boost/multi_index/key_extractors.hpp at line 3, boost/multi_index/random_access_index_fwd.hpp at line 3, boost/multi_index/safe_mode_errors.hpp at line 3, boost/multi_index/sequenced_index_fwd.hpp at line 3, boost/multi_index/tag.hpp at line 3, boost/multi_index_container_fwd.hpp at line 3
- License text:
- /* Copyright 2003-2013 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/detail/allocator_utilities.hpp [1:3]
- boost/multi_index/detail/access_specifier.hpp [1:3]
- boost/multi_index/detail/adl_swap.hpp [1:3]
- boost/multi_index/detail/base_type.hpp [1:3]
- boost/multi_index/detail/converter.hpp [1:3]
- boost/multi_index/detail/do_not_copy_elements_tag.hpp [1:3]
- boost/multi_index/detail/duplicates_iterator.hpp [1:3]
- boost/multi_index/detail/has_tag.hpp [1:3]
- boost/multi_index/detail/hash_index_args.hpp [1:3]
- boost/multi_index/detail/index_saver.hpp [1:3]
- boost/multi_index/detail/invariant_assert.hpp [1:3]
- boost/multi_index/detail/is_index_list.hpp [1:3]
- boost/multi_index/detail/iter_adaptor.hpp [1:3]
- boost/multi_index/detail/modify_key_adaptor.hpp [1:3]
- boost/multi_index/detail/no_duplicate_tags.hpp [1:3]
- boost/multi_index/detail/node_type.hpp [1:3]
- boost/multi_index/detail/ord_index_args.hpp [1:3]
- boost/multi_index/detail/rnd_index_loader.hpp [1:3]
- boost/multi_index/detail/safe_mode.hpp [1:3]
- boost/multi_index/detail/scope_guard.hpp [1:3]
- boost/multi_index/detail/serialization_version.hpp [1:3]
- boost/multi_index/detail/uintptr_type.hpp [1:3]
- boost/multi_index/detail/unbounded.hpp [1:3]
- boost/multi_index/detail/vartempl_support.hpp [1:3]
- boost/multi_index/hashed_index_fwd.hpp [1:3]
- boost/multi_index/identity_fwd.hpp [1:3]
- boost/multi_index/indexed_by.hpp [1:3]
- boost/multi_index/key_extractors.hpp [1:3]
- boost/multi_index/random_access_index_fwd.hpp [1:3]
- boost/multi_index/safe_mode_errors.hpp [1:3]
- boost/multi_index/sequenced_index_fwd.hpp [1:3]
- boost/multi_index/tag.hpp [1:3]
- boost/multi_index_container_fwd.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4f74cd3a2feaee90f0c6c2252b0815e4
-BELONGS ya.make
- License text:
- Copyright 2014 Glen Joseph Fernandes
- (glenjofe@gmail.com)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/align/aligned_allocator_adaptor_forward.hpp [2:3]
- boost/align/aligned_allocator_forward.hpp [2:3]
- boost/align/alignment_of_forward.hpp [2:3]
- boost/align/detail/addressof.hpp [2:3]
- boost/align/detail/align_cxx11.hpp [2:3]
- boost/align/detail/aligned_alloc_android.hpp [2:3]
- boost/align/detail/aligned_alloc_macos.hpp [2:3]
- boost/align/detail/aligned_alloc_msvc.hpp [2:3]
- boost/align/detail/aligned_alloc_posix.hpp [2:3]
- boost/align/detail/aligned_alloc_sunos.hpp [2:3]
- boost/align/detail/alignment_of_clang.hpp [2:3]
- boost/align/detail/alignment_of_codegear.hpp [2:3]
- boost/align/detail/alignment_of_cxx11.hpp [2:3]
- boost/align/detail/alignment_of_gcc.hpp [2:3]
- boost/align/detail/is_aligned.hpp [2:3]
- boost/align/detail/is_alignment.hpp [2:3]
- boost/align/detail/is_alignment_constant.hpp [2:3]
- boost/align/detail/max_objects.hpp [2:3]
- boost/align/detail/min_size.hpp [2:3]
- boost/align/is_aligned.hpp [2:3]
- boost/make_unique.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4fccd2f436e267451a15bffd06404336
-BELONGS ya.make
- License text:
- // Copyright 2014 LRI UMR 8623 CNRS/Univ Paris Sud XI
- // Copyright 2014 NumScale SAS
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/external/nt2/nt2_algebra_dispatcher.hpp [2:3]
- boost/numeric/odeint/external/nt2/nt2_norm_inf.hpp [2:3]
- boost/numeric/odeint/external/nt2/nt2_resize.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4feddf5837ec6507c85e2af8198adbd4
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/function/function_base.hpp at line 5, boost/function/function_template.hpp at line 5, boost/signal.hpp at line 5
- License text:
- // Copyright Douglas Gregor 2001-2006. Use, modification and
- // distribution is subject to the Boost Software License, Version
- // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/function/function_base.hpp [3:6]
- boost/function/function_template.hpp [3:6]
- boost/signal.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 500287573dfa6dbe158a5293742156c0
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2008 Joel de Guzman
- Copyright (c) 2001-2008 Hartmut Kaiser
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit.hpp [2:4]
- boost/spirit/home/classic/namespace.hpp [2:4]
- boost/spirit/include/classic.hpp [2:4]
- boost/spirit/include/classic_actions.hpp [2:4]
- boost/spirit/include/classic_actor.hpp [2:4]
- boost/spirit/include/classic_alternative.hpp [2:4]
- boost/spirit/include/classic_as_parser.hpp [2:4]
- boost/spirit/include/classic_assert.hpp [2:4]
- boost/spirit/include/classic_assign_actor.hpp [2:4]
- boost/spirit/include/classic_assign_key_actor.hpp [2:4]
- boost/spirit/include/classic_ast.hpp [2:4]
- boost/spirit/include/classic_ast_fwd.hpp [2:4]
- boost/spirit/include/classic_attribute.hpp [2:4]
- boost/spirit/include/classic_basic_chset.hpp [2:4]
- boost/spirit/include/classic_chset.hpp [2:4]
- boost/spirit/include/classic_chset_operators.hpp [2:4]
- boost/spirit/include/classic_clear_actor.hpp [2:4]
- boost/spirit/include/classic_closure.hpp [2:4]
- boost/spirit/include/classic_closure_context.hpp [2:4]
- boost/spirit/include/classic_closure_fwd.hpp [2:4]
- boost/spirit/include/classic_common.hpp [2:4]
- boost/spirit/include/classic_common_fwd.hpp [2:4]
- boost/spirit/include/classic_composite.hpp [2:4]
- boost/spirit/include/classic_config.hpp [2:4]
- boost/spirit/include/classic_confix.hpp [2:4]
- boost/spirit/include/classic_confix_fwd.hpp [2:4]
- boost/spirit/include/classic_core.hpp [2:4]
- boost/spirit/include/classic_debug.hpp [2:4]
- boost/spirit/include/classic_debug_node.hpp [2:4]
- boost/spirit/include/classic_decrement_actor.hpp [2:4]
- boost/spirit/include/classic_difference.hpp [2:4]
- boost/spirit/include/classic_directives.hpp [2:4]
- boost/spirit/include/classic_distinct.hpp [2:4]
- boost/spirit/include/classic_distinct_fwd.hpp [2:4]
- boost/spirit/include/classic_dynamic.hpp [2:4]
- boost/spirit/include/classic_epsilon.hpp [2:4]
- boost/spirit/include/classic_erase_actor.hpp [2:4]
- boost/spirit/include/classic_error_handling.hpp [2:4]
- boost/spirit/include/classic_escape_char.hpp [2:4]
- boost/spirit/include/classic_escape_char_fwd.hpp [2:4]
- boost/spirit/include/classic_exceptions.hpp [2:4]
- boost/spirit/include/classic_exceptions_fwd.hpp [2:4]
- boost/spirit/include/classic_exclusive_or.hpp [2:4]
- boost/spirit/include/classic_file_iterator.hpp [2:4]
- boost/spirit/include/classic_file_iterator_fwd.hpp [2:4]
- boost/spirit/include/classic_fixed_size_queue.hpp [2:4]
- boost/spirit/include/classic_flush_multi_pass.hpp [2:4]
- boost/spirit/include/classic_for.hpp [2:4]
- boost/spirit/include/classic_functor_parser.hpp [2:4]
- boost/spirit/include/classic_fundamental.hpp [2:4]
- boost/spirit/include/classic_grammar.hpp [2:4]
- boost/spirit/include/classic_grammar_def.hpp [2:4]
- boost/spirit/include/classic_grammar_def_fwd.hpp [2:4]
- boost/spirit/include/classic_if.hpp [2:4]
- boost/spirit/include/classic_increment_actor.hpp [2:4]
- boost/spirit/include/classic_insert_at_actor.hpp [2:4]
- boost/spirit/include/classic_insert_key_actor.hpp [2:4]
- boost/spirit/include/classic_intersection.hpp [2:4]
- boost/spirit/include/classic_iterator.hpp [2:4]
- boost/spirit/include/classic_kleene_star.hpp [2:4]
- boost/spirit/include/classic_lazy.hpp [2:4]
- boost/spirit/include/classic_list.hpp [2:4]
- boost/spirit/include/classic_lists.hpp [2:4]
- boost/spirit/include/classic_lists_fwd.hpp [2:4]
- boost/spirit/include/classic_loops.hpp [2:4]
- boost/spirit/include/classic_match.hpp [2:4]
- boost/spirit/include/classic_meta.hpp [2:4]
- boost/spirit/include/classic_minimal.hpp [2:4]
- boost/spirit/include/classic_multi_pass.hpp [2:4]
- boost/spirit/include/classic_multi_pass_fwd.hpp [2:4]
- boost/spirit/include/classic_nil.hpp [2:4]
- boost/spirit/include/classic_no_actions.hpp [2:4]
- boost/spirit/include/classic_numerics.hpp [2:4]
- boost/spirit/include/classic_numerics_fwd.hpp [2:4]
- boost/spirit/include/classic_operators.hpp [2:4]
- boost/spirit/include/classic_optional.hpp [2:4]
- boost/spirit/include/classic_parametric.hpp [2:4]
- boost/spirit/include/classic_parse_tree.hpp [2:4]
- boost/spirit/include/classic_parse_tree_fwd.hpp [2:4]
- boost/spirit/include/classic_parse_tree_utils.hpp [2:4]
- boost/spirit/include/classic_parser.hpp [2:4]
- boost/spirit/include/classic_parser_context.hpp [2:4]
- boost/spirit/include/classic_parser_id.hpp [2:4]
- boost/spirit/include/classic_parser_names.hpp [2:4]
- boost/spirit/include/classic_parser_traits.hpp [2:4]
- boost/spirit/include/classic_position_iterator.hpp [2:4]
- boost/spirit/include/classic_position_iterator_fwd.hpp [2:4]
- boost/spirit/include/classic_positive.hpp [2:4]
- boost/spirit/include/classic_primitives.hpp [2:4]
- boost/spirit/include/classic_push_back_actor.hpp [2:4]
- boost/spirit/include/classic_push_front_actor.hpp [2:4]
- boost/spirit/include/classic_range_run.hpp [2:4]
- boost/spirit/include/classic_ref_actor.hpp [2:4]
- boost/spirit/include/classic_ref_const_ref_actor.hpp [2:4]
- boost/spirit/include/classic_ref_const_ref_const_ref_a.hpp [2:4]
- boost/spirit/include/classic_ref_const_ref_value_actor.hpp [2:4]
- boost/spirit/include/classic_ref_value_actor.hpp [2:4]
- boost/spirit/include/classic_refactoring.hpp [2:4]
- boost/spirit/include/classic_regex.hpp [2:4]
- boost/spirit/include/classic_rule.hpp [2:4]
- boost/spirit/include/classic_rule_alias.hpp [2:4]
- boost/spirit/include/classic_rule_parser.hpp [2:4]
- boost/spirit/include/classic_safe_bool.hpp [2:4]
- boost/spirit/include/classic_scanner.hpp [2:4]
- boost/spirit/include/classic_scanner_fwd.hpp [2:4]
- boost/spirit/include/classic_scoped_lock.hpp [2:4]
- boost/spirit/include/classic_select.hpp [2:4]
- boost/spirit/include/classic_sequence.hpp [2:4]
- boost/spirit/include/classic_sequential_and.hpp [2:4]
- boost/spirit/include/classic_sequential_or.hpp [2:4]
- boost/spirit/include/classic_skipper.hpp [2:4]
- boost/spirit/include/classic_skipper_fwd.hpp [2:4]
- boost/spirit/include/classic_static.hpp [2:4]
- boost/spirit/include/classic_stored_rule.hpp [2:4]
- boost/spirit/include/classic_stored_rule_fwd.hpp [2:4]
- boost/spirit/include/classic_subrule.hpp [2:4]
- boost/spirit/include/classic_subrule_fwd.hpp [2:4]
- boost/spirit/include/classic_swap_actor.hpp [2:4]
- boost/spirit/include/classic_switch.hpp [2:4]
- boost/spirit/include/classic_symbols.hpp [2:4]
- boost/spirit/include/classic_symbols_fwd.hpp [2:4]
- boost/spirit/include/classic_traverse.hpp [2:4]
- boost/spirit/include/classic_tree_to_xml.hpp [2:4]
- boost/spirit/include/classic_typeof.hpp [2:4]
- boost/spirit/include/classic_utility.hpp [2:4]
- boost/spirit/include/classic_version.hpp [2:4]
- boost/spirit/include/classic_while.hpp [2:4]
- boost/spirit/include/phoenix1.hpp [2:4]
- boost/spirit/include/phoenix1_actor.hpp [2:4]
- boost/spirit/include/phoenix1_binders.hpp [2:4]
- boost/spirit/include/phoenix1_casts.hpp [2:4]
- boost/spirit/include/phoenix1_closures.hpp [2:4]
- boost/spirit/include/phoenix1_composite.hpp [2:4]
- boost/spirit/include/phoenix1_functions.hpp [2:4]
- boost/spirit/include/phoenix1_new.hpp [2:4]
- boost/spirit/include/phoenix1_operators.hpp [2:4]
- boost/spirit/include/phoenix1_primitives.hpp [2:4]
- boost/spirit/include/phoenix1_special_ops.hpp [2:4]
- boost/spirit/include/phoenix1_statements.hpp [2:4]
- boost/spirit/include/phoenix1_tuple_helpers.hpp [2:4]
- boost/spirit/include/phoenix1_tuples.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 500b2cb6ead0ec1a1178db7dd7c679ad
-BELONGS ya.make
- License text:
- // Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
- // Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/has_self_intersections.hpp [3:4]
- boost/geometry/strategies/agnostic/point_in_poly_oriented_winding.hpp [3:3]
- boost/geometry/strategies/geographic/mapping_ssf.hpp [3:3]
- boost/geometry/strategies/spherical/ssf.hpp [3:3]
- boost/geometry/util/rational.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 505e57a6c98d5fb12126e9ca863e4a06
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2014 Joel de Guzman
- Copyright (c) 2013 Carl Barron
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/x3/string/symbols.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 509d002c338fa5df4220ee8f5ff3629f
-BELONGS ya.make
- License text:
- // Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
- // Copyright (c) 2001 David Abrahams
- // Copyright (c) 2003-2005 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/bind/mem_fn.hpp [13:15]
-
-KEEP COPYRIGHT_SERVICE_LABEL 50aab16de1a969692255eba9fd21275b
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/chrono/chrono_io.hpp at line 7, boost/chrono/clock_string.hpp at line 5, boost/chrono/io/time_point_io.hpp at line 4, boost/chrono/io/timezone.hpp at line 4
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/chrono/chrono_io.hpp [4:7]
- boost/chrono/clock_string.hpp [2:4]
- boost/chrono/io/time_point_io.hpp [1:4]
- boost/chrono/io/timezone.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 50acfc9be7c7713dcd42d5d4a540e9df
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/ptr_container/detail/serialize_ptr_map_adapter.hpp at line 3, boost/ptr_container/detail/serialize_reversible_cont.hpp at line 3, boost/ptr_container/serialize_ptr_array.hpp at line 3, boost/ptr_container/serialize_ptr_container.hpp at line 3, boost/ptr_container/serialize_ptr_deque.hpp at line 3, boost/ptr_container/serialize_ptr_list.hpp at line 3, boost/ptr_container/serialize_ptr_map.hpp at line 3, boost/ptr_container/serialize_ptr_set.hpp at line 3, boost/ptr_container/serialize_ptr_vector.hpp at line 3
- License text:
- // Copyright Sebastian Ramacher, 2007.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/ptr_container/detail/serialize_ptr_map_adapter.hpp [1:3]
- boost/ptr_container/detail/serialize_reversible_cont.hpp [1:3]
- boost/ptr_container/serialize_ptr_array.hpp [1:3]
- boost/ptr_container/serialize_ptr_container.hpp [1:3]
- boost/ptr_container/serialize_ptr_deque.hpp [1:3]
- boost/ptr_container/serialize_ptr_list.hpp [1:3]
- boost/ptr_container/serialize_ptr_map.hpp [1:3]
- boost/ptr_container/serialize_ptr_set.hpp [1:3]
- boost/ptr_container/serialize_ptr_vector.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 50dda7e3e19313b798039270444f863a
-BELONGS ya.make
- License text:
- // Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
- // Copyright (c) 2002 Lars Gullik Bjønnes <larsbj@lyx.org>
- // Copyright 2003-2005 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/detail/atomic_count_gcc.hpp [11:13]
-
-KEEP COPYRIGHT_SERVICE_LABEL 50e992784146f3733ac5faebc8581292
-BELONGS libs/chrono/ya.make
- License text:
- // Copyright Beman Dawes 2008
- // Copyright Vicente J. Botet Escriba 2009-2010
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- libs/chrono/src/chrono.cpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5147c6d809b341ff744da9921c8c3edd
-BELONGS ya.make
- License text:
- // Copyright Aleksey Gurtovoy 2000-2009
- // Copyright Jaap Suter 2003
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/aux_/preprocessed/bcc/bitand.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc/bitor.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc/bitxor.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc/shift_left.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc/shift_right.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc551/bitand.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc551/bitor.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc551/bitxor.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc551/shift_left.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc551/shift_right.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc_pre590/bitand.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc_pre590/bitor.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc_pre590/bitxor.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc_pre590/shift_left.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc_pre590/shift_right.hpp [2:3]
- boost/mpl/aux_/preprocessed/dmc/bitand.hpp [2:3]
- boost/mpl/aux_/preprocessed/dmc/bitor.hpp [2:3]
- boost/mpl/aux_/preprocessed/dmc/bitxor.hpp [2:3]
- boost/mpl/aux_/preprocessed/dmc/shift_left.hpp [2:3]
- boost/mpl/aux_/preprocessed/dmc/shift_right.hpp [2:3]
- boost/mpl/aux_/preprocessed/gcc/bitand.hpp [2:3]
- boost/mpl/aux_/preprocessed/gcc/bitor.hpp [2:3]
- boost/mpl/aux_/preprocessed/gcc/bitxor.hpp [2:3]
- boost/mpl/aux_/preprocessed/gcc/shift_left.hpp [2:3]
- boost/mpl/aux_/preprocessed/gcc/shift_right.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc60/bitand.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc60/bitor.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc60/bitxor.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc60/shift_left.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc60/shift_right.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc70/bitand.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc70/bitor.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc70/bitxor.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc70/shift_left.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc70/shift_right.hpp [2:3]
- boost/mpl/aux_/preprocessed/mwcw/bitand.hpp [2:3]
- boost/mpl/aux_/preprocessed/mwcw/bitor.hpp [2:3]
- boost/mpl/aux_/preprocessed/mwcw/bitxor.hpp [2:3]
- boost/mpl/aux_/preprocessed/mwcw/shift_left.hpp [2:3]
- boost/mpl/aux_/preprocessed/mwcw/shift_right.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ctps/bitand.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ctps/bitor.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ctps/bitxor.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ctps/shift_left.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ctps/shift_right.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ttp/bitand.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ttp/bitor.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ttp/bitxor.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ttp/shift_left.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ttp/shift_right.hpp [2:3]
- boost/mpl/aux_/preprocessed/plain/bitand.hpp [2:3]
- boost/mpl/aux_/preprocessed/plain/bitor.hpp [2:3]
- boost/mpl/aux_/preprocessed/plain/bitxor.hpp [2:3]
- boost/mpl/aux_/preprocessed/plain/shift_left.hpp [2:3]
- boost/mpl/aux_/preprocessed/plain/shift_right.hpp [2:3]
- boost/mpl/bitand.hpp [5:6]
- boost/mpl/bitor.hpp [5:6]
- boost/mpl/bitwise.hpp [5:6]
- boost/mpl/bitxor.hpp [5:6]
- boost/mpl/shift_left.hpp [5:6]
- boost/mpl/shift_right.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 516975262145468c54f49513bc0bd39b
-BELONGS ya.make
- License text:
- // (C) Copyright 2008-10 Anthony Williams
- // (C) Copyright 2011-2012,2015 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/futures/future_error_code.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 51ff62b4a7415b379ace1babfab872b5
-BELONGS ya.make
- License text:
- Copyright 2014-2016 Glen Joseph Fernandes
- (glenjofe@gmail.com)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/align/aligned_allocator_adaptor.hpp [2:3]
- boost/align/alignment_of.hpp [2:3]
- boost/align/detail/align.hpp [2:3]
- boost/align/detail/integral_constant.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 52b28b228c67c76c8b980092f6896c6c
-BELONGS ya.make
- License text:
- // Copyright (c) 2007-2011 Barend Gehrels, Amsterdam, the Netherlands.
- // Copyright (c) 2008-2011 Bruno Lalande, Paris, France.
- // Copyright (c) 2009-2011 Mateusz Loskot, London, UK.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 52d3d0587f7137ef056c8c36337cfe33
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/os/haiku.h at line 5
- License text:
- Copyright Jessica Hamilton 2014
- Copyright Rene Rivera 2014-2015
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/predef/os/haiku.h [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 531223174105f7ede345759079c9b0de
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/area.hpp [3:6]
- boost/geometry/algorithms/assign.hpp [3:6]
- boost/geometry/algorithms/buffer.hpp [3:5]
- boost/geometry/algorithms/clear.hpp [3:5]
- boost/geometry/algorithms/convert.hpp [3:6]
- boost/geometry/algorithms/correct.hpp [3:6]
- boost/geometry/algorithms/covered_by.hpp [3:5]
- boost/geometry/algorithms/crosses.hpp [3:6]
- boost/geometry/algorithms/detail/as_range.hpp [3:5]
- boost/geometry/algorithms/detail/assign_box_corners.hpp [3:5]
- boost/geometry/algorithms/detail/assign_indexed_point.hpp [3:5]
- boost/geometry/algorithms/detail/assign_values.hpp [3:5]
- boost/geometry/algorithms/detail/calculate_null.hpp [3:5]
- boost/geometry/algorithms/detail/calculate_sum.hpp [3:6]
- boost/geometry/algorithms/detail/centroid/translating_transformer.hpp [3:6]
- boost/geometry/algorithms/detail/convert_indexed_to_indexed.hpp [3:5]
- boost/geometry/algorithms/detail/convert_point_to_point.hpp [3:5]
- boost/geometry/algorithms/detail/covered_by/implementation.hpp [3:5]
- boost/geometry/algorithms/detail/covered_by/interface.hpp [3:5]
- boost/geometry/algorithms/detail/for_each_range.hpp [3:5]
- boost/geometry/algorithms/detail/multi_modify.hpp [3:5]
- boost/geometry/algorithms/detail/multi_modify_with_predicate.hpp [3:5]
- boost/geometry/algorithms/detail/multi_sum.hpp [3:5]
- boost/geometry/algorithms/detail/point_on_border.hpp [3:5]
- boost/geometry/algorithms/detail/sections/range_by_section.hpp [3:5]
- boost/geometry/algorithms/detail/within/implementation.hpp [3:5]
- boost/geometry/algorithms/detail/within/interface.hpp [3:5]
- boost/geometry/algorithms/detail/within/point_in_geometry.hpp [3:6]
- boost/geometry/algorithms/detail/within/within_no_turns.hpp [3:5]
- boost/geometry/algorithms/make.hpp [3:5]
- boost/geometry/algorithms/reverse.hpp [3:6]
- boost/geometry/algorithms/transform.hpp [3:6]
- boost/geometry/algorithms/unique.hpp [3:6]
- boost/geometry/algorithms/within.hpp [3:5]
- boost/geometry/arithmetic/arithmetic.hpp [3:5]
- boost/geometry/arithmetic/cross_product.hpp [3:5]
- boost/geometry/arithmetic/determinant.hpp [3:5]
- boost/geometry/arithmetic/dot_product.hpp [3:5]
- boost/geometry/core/access.hpp [3:5]
- boost/geometry/core/closure.hpp [3:5]
- boost/geometry/core/coordinate_dimension.hpp [3:5]
- boost/geometry/core/coordinate_system.hpp [3:5]
- boost/geometry/core/coordinate_type.hpp [3:5]
- boost/geometry/core/exterior_ring.hpp [3:5]
- boost/geometry/core/geometry_id.hpp [3:5]
- boost/geometry/core/interior_rings.hpp [3:5]
- boost/geometry/core/interior_type.hpp [3:5]
- boost/geometry/core/is_areal.hpp [3:5]
- boost/geometry/core/mutable_range.hpp [3:5]
- boost/geometry/core/point_order.hpp [3:5]
- boost/geometry/core/point_type.hpp [3:5]
- boost/geometry/core/radius.hpp [3:5]
- boost/geometry/core/reverse_dispatch.hpp [3:5]
- boost/geometry/core/tag.hpp [3:5]
- boost/geometry/core/tag_cast.hpp [3:5]
- boost/geometry/core/tags.hpp [3:5]
- boost/geometry/core/topological_dimension.hpp [3:5]
- boost/geometry/geometries/adapted/boost_tuple.hpp [3:5]
- boost/geometry/geometries/adapted/c_array.hpp [3:5]
- boost/geometry/geometries/adapted/std_pair_as_segment.hpp [3:5]
- boost/geometry/geometries/box.hpp [3:5]
- boost/geometry/geometries/concepts/box_concept.hpp [3:5]
- boost/geometry/geometries/concepts/check.hpp [3:5]
- boost/geometry/geometries/concepts/linestring_concept.hpp [3:5]
- boost/geometry/geometries/concepts/multi_linestring_concept.hpp [3:5]
- boost/geometry/geometries/concepts/multi_point_concept.hpp [3:5]
- boost/geometry/geometries/concepts/multi_polygon_concept.hpp [3:5]
- boost/geometry/geometries/concepts/polygon_concept.hpp [3:5]
- boost/geometry/geometries/concepts/ring_concept.hpp [3:5]
- boost/geometry/geometries/concepts/segment_concept.hpp [3:5]
- boost/geometry/geometries/geometries.hpp [3:5]
- boost/geometry/geometries/linestring.hpp [3:6]
- boost/geometry/geometries/multi_linestring.hpp [3:6]
- boost/geometry/geometries/multi_point.hpp [3:6]
- boost/geometry/geometries/multi_polygon.hpp [3:6]
- boost/geometry/geometries/point_xy.hpp [3:5]
- boost/geometry/geometries/polygon.hpp [3:6]
- boost/geometry/geometries/register/box.hpp [3:5]
- boost/geometry/geometries/register/linestring.hpp [3:5]
- boost/geometry/geometries/register/multi_linestring.hpp [3:5]
- boost/geometry/geometries/register/multi_point.hpp [3:5]
- boost/geometry/geometries/register/multi_polygon.hpp [3:5]
- boost/geometry/geometries/register/point.hpp [3:5]
- boost/geometry/geometries/register/ring.hpp [3:5]
- boost/geometry/geometries/register/segment.hpp [3:5]
- boost/geometry/geometries/ring.hpp [3:6]
- boost/geometry/geometries/segment.hpp [3:5]
- boost/geometry/geometries/variant.hpp [3:5]
- boost/geometry/io/dsv/write.hpp [3:6]
- boost/geometry/io/io.hpp [3:5]
- boost/geometry/io/wkt/detail/prefix.hpp [3:5]
- boost/geometry/io/wkt/detail/wkt_multi.hpp [3:5]
- boost/geometry/io/wkt/read.hpp [3:6]
- boost/geometry/io/wkt/stream.hpp [3:5]
- boost/geometry/io/wkt/wkt.hpp [3:5]
- boost/geometry/iterators/base.hpp [3:5]
- boost/geometry/iterators/closing_iterator.hpp [3:5]
- boost/geometry/iterators/ever_circling_iterator.hpp [3:5]
- boost/geometry/multi/algorithms/area.hpp [3:5]
- boost/geometry/multi/algorithms/centroid.hpp [3:5]
- boost/geometry/multi/algorithms/clear.hpp [3:5]
- boost/geometry/multi/algorithms/convert.hpp [3:5]
- boost/geometry/multi/algorithms/correct.hpp [3:5]
- boost/geometry/multi/algorithms/covered_by.hpp [3:6]
- boost/geometry/multi/algorithms/detail/for_each_range.hpp [3:5]
- boost/geometry/multi/algorithms/detail/modify.hpp [3:5]
- boost/geometry/multi/algorithms/detail/modify_with_predicate.hpp [3:5]
- boost/geometry/multi/algorithms/detail/multi_sum.hpp [3:5]
- boost/geometry/multi/algorithms/detail/point_on_border.hpp [3:5]
- boost/geometry/multi/algorithms/detail/sections/range_by_section.hpp [3:5]
- boost/geometry/multi/algorithms/detail/sections/sectionalize.hpp [3:5]
- boost/geometry/multi/algorithms/envelope.hpp [3:5]
- boost/geometry/multi/algorithms/equals.hpp [3:5]
- boost/geometry/multi/algorithms/for_each.hpp [3:5]
- boost/geometry/multi/algorithms/length.hpp [3:5]
- boost/geometry/multi/algorithms/num_geometries.hpp [3:5]
- boost/geometry/multi/algorithms/num_interior_rings.hpp [3:5]
- boost/geometry/multi/algorithms/perimeter.hpp [3:5]
- boost/geometry/multi/algorithms/reverse.hpp [3:5]
- boost/geometry/multi/algorithms/simplify.hpp [3:5]
- boost/geometry/multi/algorithms/transform.hpp [3:5]
- boost/geometry/multi/algorithms/unique.hpp [3:5]
- boost/geometry/multi/algorithms/within.hpp [3:6]
- boost/geometry/multi/core/closure.hpp [3:5]
- boost/geometry/multi/core/geometry_id.hpp [3:5]
- boost/geometry/multi/core/interior_rings.hpp [3:5]
- boost/geometry/multi/core/is_areal.hpp [3:5]
- boost/geometry/multi/core/point_order.hpp [3:5]
- boost/geometry/multi/core/point_type.hpp [3:5]
- boost/geometry/multi/core/ring_type.hpp [3:5]
- boost/geometry/multi/core/tags.hpp [3:5]
- boost/geometry/multi/core/topological_dimension.hpp [3:5]
- boost/geometry/multi/geometries/concepts/check.hpp [3:5]
- boost/geometry/multi/geometries/concepts/multi_linestring_concept.hpp [3:5]
- boost/geometry/multi/geometries/concepts/multi_point_concept.hpp [3:5]
- boost/geometry/multi/geometries/concepts/multi_polygon_concept.hpp [3:5]
- boost/geometry/multi/geometries/multi_geometries.hpp [3:5]
- boost/geometry/multi/geometries/multi_linestring.hpp [3:5]
- boost/geometry/multi/geometries/multi_point.hpp [3:5]
- boost/geometry/multi/geometries/multi_polygon.hpp [3:5]
- boost/geometry/multi/geometries/register/multi_linestring.hpp [3:5]
- boost/geometry/multi/geometries/register/multi_point.hpp [3:5]
- boost/geometry/multi/geometries/register/multi_polygon.hpp [3:5]
- boost/geometry/multi/io/dsv/write.hpp [3:5]
- boost/geometry/multi/io/wkt/detail/prefix.hpp [3:5]
- boost/geometry/multi/io/wkt/read.hpp [3:5]
- boost/geometry/multi/io/wkt/wkt.hpp [3:5]
- boost/geometry/multi/io/wkt/write.hpp [3:5]
- boost/geometry/multi/strategies/cartesian/centroid_average.hpp [3:5]
- boost/geometry/multi/views/detail/range_type.hpp [3:5]
- boost/geometry/srs/sphere.hpp [3:5]
- boost/geometry/srs/spheroid.hpp [3:5]
- boost/geometry/srs/srs.hpp [3:5]
- boost/geometry/strategies/agnostic/point_in_box_by_side.hpp [3:5]
- boost/geometry/strategies/area.hpp [3:6]
- boost/geometry/strategies/cartesian/area.hpp [3:6]
- boost/geometry/strategies/cartesian/area_surveyor.hpp [3:6]
- boost/geometry/strategies/cartesian/centroid_average.hpp [3:6]
- boost/geometry/strategies/cartesian/distance_pythagoras.hpp [3:5]
- boost/geometry/strategies/cartesian/point_in_poly_crossings_multiply.hpp [3:5]
- boost/geometry/strategies/cartesian/point_in_poly_franklin.hpp [3:5]
- boost/geometry/strategies/centroid.hpp [3:5]
- boost/geometry/strategies/compare.hpp [3:5]
- boost/geometry/strategies/concepts/area_concept.hpp [3:6]
- boost/geometry/strategies/concepts/centroid_concept.hpp [3:5]
- boost/geometry/strategies/concepts/convex_hull_concept.hpp [3:5]
- boost/geometry/strategies/concepts/segment_intersect_concept.hpp [3:5]
- boost/geometry/strategies/concepts/simplify_concept.hpp [3:5]
- boost/geometry/strategies/concepts/within_concept.hpp [3:5]
- boost/geometry/strategies/convex_hull.hpp [3:5]
- boost/geometry/strategies/covered_by.hpp [3:5]
- boost/geometry/strategies/default_area_result.hpp [3:6]
- boost/geometry/strategies/side.hpp [3:5]
- boost/geometry/strategies/side_info.hpp [3:5]
- boost/geometry/strategies/strategies.hpp [3:6]
- boost/geometry/strategies/tags.hpp [3:5]
- boost/geometry/strategies/transform.hpp [3:5]
- boost/geometry/strategies/transform/inverse_transformer.hpp [3:5]
- boost/geometry/strategies/transform/map_transformer.hpp [3:5]
- boost/geometry/strategies/within.hpp [3:5]
- boost/geometry/util/add_const_if_c.hpp [3:5]
- boost/geometry/util/closure_as_bool.hpp [3:5]
- boost/geometry/util/coordinate_cast.hpp [3:5]
- boost/geometry/util/for_each_coordinate.hpp [3:5]
- boost/geometry/util/order_as_direction.hpp [3:5]
- boost/geometry/util/parameter_type_of.hpp [3:5]
- boost/geometry/util/promote_floating_point.hpp [3:5]
- boost/geometry/util/select_calculation_type.hpp [3:5]
- boost/geometry/util/select_coordinate_type.hpp [3:5]
- boost/geometry/util/select_most_precise.hpp [3:5]
- boost/geometry/views/box_view.hpp [3:5]
- boost/geometry/views/closeable_view.hpp [3:5]
- boost/geometry/views/detail/normalized_view.hpp [3:5]
- boost/geometry/views/detail/points_view.hpp [3:5]
- boost/geometry/views/detail/range_type.hpp [3:5]
- boost/geometry/views/identity_view.hpp [3:5]
- boost/geometry/views/reversible_view.hpp [3:5]
- boost/geometry/views/segment_view.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 537c9bc8b4fb90630a3232d2399c4e8b
-BELONGS ya.make
- License text:
- // Copyright (c) 2017 Klemens D. Morgenstern
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/process/detail/posix/sigchld_service.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 539b3e779233a2ae235b47c1b4055d48
-BELONGS ya.make
- License text:
- Copyright 2014-2015 Glen Joseph Fernandes
- (glenjofe@gmail.com)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/align.hpp [2:3]
- boost/align/align.hpp [2:3]
- boost/align/aligned_alloc.hpp [2:3]
- boost/align/aligned_allocator.hpp [2:3]
- boost/align/aligned_delete.hpp [2:3]
- boost/align/aligned_delete_forward.hpp [2:3]
- boost/align/detail/aligned_alloc.hpp [2:3]
- boost/align/detail/alignment_of.hpp [2:3]
- boost/align/detail/alignment_of_msvc.hpp [2:3]
- boost/align/detail/max_align.hpp [2:3]
- boost/align/detail/max_size.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 53e6b9e3a28e2dccd485973290709372
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/math/special_functions/acosh.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/acosh.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 53fd4ccd7330e5c849c3b27876af937b
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2014 Joel de Guzman
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/x3/support/context.hpp [2:3]
- boost/spirit/home/x3/support/traits/attribute_category.hpp [2:3]
- boost/spirit/home/x3/support/traits/attribute_type.hpp [2:3]
- boost/spirit/home/x3/support/traits/is_range.hpp [2:3]
- boost/spirit/home/x3/support/traits/is_substitute.hpp [2:3]
- boost/spirit/home/x3/support/traits/is_variant.hpp [2:3]
- boost/spirit/home/x3/support/traits/variant_find_substitute.hpp [2:3]
- boost/spirit/home/x3/support/traits/variant_has_substitute.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5401e26f42b6acd9b403fbb21b3e0d05
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/core.hpp [2:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5436f6cfa7ad970fe3000b4e5a4d7591
-BELONGS ya.make
- License text:
- /* Copyright (c) 2002,2003,2005 CrystalClear Software, Inc.
- * Use, modification and distribution is subject to the
- * Boost Software License, Version 1.0. (See accompanying
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/date_time/c_local_time_adjustor.hpp [4:6]
- boost/date_time/c_time.hpp [4:6]
- boost/date_time/date_clock_device.hpp [4:6]
- boost/date_time/date_generators.hpp [4:6]
- boost/date_time/date_parsing.hpp [4:6]
- boost/date_time/dst_transition_generators.hpp [1:3]
- boost/date_time/gregorian/parsers.hpp [4:6]
- boost/date_time/microsec_time_clock.hpp [4:6]
- boost/date_time/posix_time/posix_time_config.hpp [4:6]
- boost/date_time/time.hpp [4:6]
- boost/date_time/time_clock.hpp [4:6]
- boost/date_time/time_parsing.hpp [4:6]
- boost/date_time/time_system_split.hpp [4:6]
- boost/date_time/wrapping_int.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 54505eb07f03e7797ae231f869d8a40e
-BELONGS libs/serialization/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/archive/codecvt_null.hpp at line 14, libs/serialization/src/basic_text_oprimitive.cpp at line 6, libs/serialization/src/basic_text_woprimitive.cpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/archive/codecvt_null.hpp [12:14]
- libs/serialization/src/basic_text_oprimitive.cpp [4:6]
- libs/serialization/src/basic_text_woprimitive.cpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 545eafdc9369d5bcc88b165815551f3b
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/binary_search.hpp at line 3
- License text:
- // Copyright (c) 2000 David Abrahams.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/detail/binary_search.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 54a6b4f4ccedc472d9ace99a2ee5a7df
-BELONGS ya.make
- License text:
- // Copyright 2007 Alexandre Courpron
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/container/detail/function_detector.hpp [16:16]
- boost/intrusive/detail/function_detector.hpp [16:16]
-
-KEEP COPYRIGHT_SERVICE_LABEL 54ac8d85aa70c2e80d3cd32c49f020f6
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container_hash/detail/hash_float.hpp at line 4
- License text:
- // Copyright 2005-2012 Daniel James.
- // Distributed under the Boost Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/container_hash/detail/hash_float.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 54b2da91a0751d0f63e2e371f49db3ff
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/array.hpp at line 6, boost/serialization/array_optimization.hpp at line 6, boost/serialization/array_wrapper.hpp at line 6, boost/serialization/boost_array.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/serialization/array.hpp [4:6]
- boost/serialization/array_optimization.hpp [4:6]
- boost/serialization/array_wrapper.hpp [4:6]
- boost/serialization/boost_array.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 54c918145a85409d3cb52ce62e5949ce
-BELONGS ya.make
- License text:
- // Copyright 2008 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/detail/sp_convertible.hpp [12:12]
-
-KEEP COPYRIGHT_SERVICE_LABEL 54f2d52d08b1f1665d9592dca3505a8a
-BELONGS ya.make
- License text:
- // Copyright (c) 2016 Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/formulas/eccentricity_sqr.hpp [3:3]
- boost/geometry/formulas/gnomonic_intersection.hpp [3:3]
- boost/geometry/formulas/gnomonic_spheroid.hpp [3:3]
- boost/geometry/formulas/result_direct.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 55167afaab66d1f9305d04b599518a94
-BELONGS libs/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/test/impl/test_framework_init_observer.ipp at line 3, boost/test/test_framework_init_observer.hpp at line 3, libs/test/src/test_framework_init_observer.cpp at line 3
- License text:
- // (c) Copyright Raffi Enficiaud 2017.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/test/impl/test_framework_init_observer.ipp [1:3]
- boost/test/test_framework_init_observer.hpp [1:3]
- libs/test/src/test_framework_init_observer.cpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 55370d2706d0c4b0defe5ea97850695c
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/other/workaround.h at line 4, boost/predef/platform/ios.h at line 4
- License text:
- Copyright Rene Rivera 2017
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/predef/other/workaround.h [2:4]
- boost/predef/platform/ios.h [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 553dd745e86757a08cb75a0e5c758ba8
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iterator/function_input_iterator.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/iterator/function_input_iterator.hpp [1:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 55b50589a90f6abb0dcaedb86d9ce7ed
-BELONGS ya.make
- License text:
- // Copyright Beman Dawes 2006
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/detail/bitmask.hpp [3:3]
- boost/detail/identifier.hpp [3:3]
- boost/system/system_error.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 55ca623f968febd6fd79198819a49b60
-BELONGS ya.make
- License text:
- // Copyright (C) 2002 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
- // Copyright (C) 2002 Gary Powell (gwpowell@hotmail.com)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/lambda/algorithm.hpp [2:3]
- boost/lambda/numeric.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5643cf41039c657434b05f2553ba3490
-BELONGS ya.make
- License text:
- // Copyright (c) 2014 Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/relate/boundary_checker.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5665aa24d7a6ea916dcdcce7fb0e04a4
-BELONGS libs/serialization/ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- libs/serialization/src/codecvt_null.cpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 568c28c5b395d2cbe887dfbfefcce6c9
-BELONGS ya.make
- License text:
- // Copyright (c) 2012 Oswin Krause
- // Copyright (c) 2013 Joaquim Duran
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/ublas/matrix_vector.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 56b725b9f15bba9b40cf58c1889a032b
-BELONGS ya.make
- License text:
- // Copyright 2015 Peter Dimov.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/bind/placeholders.hpp [13:14]
- boost/mp11.hpp [4:4]
- boost/mp11/detail/mp_map_find.hpp [4:4]
- boost/mp11/detail/mp_plus.hpp [4:4]
- boost/mp11/integral.hpp [4:4]
- boost/mp11/set.hpp [4:4]
- boost/ptr_container/detail/ptr_container_disable_deprecated.hpp [13:13]
- boost/smart_ptr/detail/sp_disable_deprecated.hpp [13:13]
- boost/type_traits/common_type.hpp [5:5]
- boost/type_traits/copy_cv.hpp [5:5]
- boost/type_traits/detail/common_arithmetic_type.hpp [5:5]
- boost/type_traits/detail/common_type_impl.hpp [5:5]
- boost/type_traits/detail/composite_member_pointer_type.hpp [5:5]
- boost/type_traits/detail/composite_pointer_type.hpp [5:5]
- boost/type_traits/detail/mp_defer.hpp [5:5]
- boost/type_traits/type_identity.hpp [5:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 571fac471d484775627ddc0a5d7a8bf1
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic.hpp [2:14]
- boost/spirit/home/classic/dynamic.hpp [2:5]
- boost/spirit/home/classic/dynamic/if.hpp [2:5]
- boost/spirit/home/classic/iterator/impl/position_iterator.ipp [2:5]
- boost/spirit/home/classic/iterator/position_iterator.hpp [2:5]
- boost/spirit/home/classic/utility.hpp [2:9]
-
-KEEP COPYRIGHT_SERVICE_LABEL 572b131daaeb41ada07b46e9bcc351e8
-BELONGS ya.make
- License text:
- // Copyright (C) 2005-2010 The Trustees of Indiana University.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/one_bit_color_map.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5743b39c1f0217bca40e868f1beca8ed
-BELONGS ya.make
- License text:
- // (C) Copyright John Maddock 2005-2006.
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/hypot.hpp [1:3]
- boost/math/special_functions/log1p.hpp [1:3]
- boost/math/tools/fraction.hpp [1:3]
- boost/math/tools/series.hpp [1:3]
- boost/math/tools/stats.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 575773811ff587d545b0c47b5cd1e390
-BELONGS ya.make
- License text:
- // Copyright Benjamin Sobotta 2012
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/distributions/skew_normal.hpp [1:1]
- boost/math/special_functions/owens_t.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5789ac1ea1cab431bffdc8ab634e3c24
-BELONGS ya.make
- License text:
- // Copyright (C) Douglas Gregor 2008
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/function/function_fwd.hpp [2:2]
- boost/function/function_typeof.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 57edbb76525ea1f3bdb3c0226d2bd138
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/sync/windows/named_condition.hpp at line 5, boost/interprocess/sync/windows/named_condition_any.hpp at line 5, boost/interprocess/sync/windows/named_mutex.hpp at line 5, boost/interprocess/sync/windows/named_recursive_mutex.hpp at line 5, boost/interprocess/sync/windows/named_semaphore.hpp at line 5, boost/interprocess/sync/windows/named_sync.hpp at line 5, boost/interprocess/sync/windows/winapi_mutex_wrapper.hpp at line 5, boost/interprocess/sync/windows/winapi_semaphore_wrapper.hpp at line 5, boost/interprocess/sync/windows/winapi_wrapper_common.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2011-2012. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/interprocess/sync/windows/named_condition.hpp [3:5]
- boost/interprocess/sync/windows/named_condition_any.hpp [3:5]
- boost/interprocess/sync/windows/named_mutex.hpp [3:5]
- boost/interprocess/sync/windows/named_recursive_mutex.hpp [3:5]
- boost/interprocess/sync/windows/named_semaphore.hpp [3:5]
- boost/interprocess/sync/windows/named_sync.hpp [3:5]
- boost/interprocess/sync/windows/winapi_mutex_wrapper.hpp [3:5]
- boost/interprocess/sync/windows/winapi_semaphore_wrapper.hpp [3:5]
- boost/interprocess/sync/windows/winapi_wrapper_common.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 586afb33401cfbc0d9c28c9f0b024801
-BELONGS ya.make
- License text:
- // Copyright 2005 Jeremy G. Siek
- // Authors: Jeremy G. Siek
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/adj_list_serialize.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 58d478b39bd1a875647210df9056995b
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/wrapper.hpp at line 6
- License text:
- // (C) Copyright 2005-2006 Matthias Troyer
- // Use, modification and distribution is subject to the Boost Software
- // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/serialization/wrapper.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5910471981114db2b4b957c21d1bfa7d
-BELONGS ya.make
- License text:
- * Copyright 2000 Jens Maurer
- * Copyright 2002 Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/interval.hpp [3:4]
- boost/numeric/interval/arith.hpp [3:4]
- boost/numeric/interval/compare/explicit.hpp [3:4]
- boost/numeric/interval/detail/bcc_rounding_control.hpp [3:4]
- boost/numeric/interval/detail/bugs.hpp [3:4]
- boost/numeric/interval/detail/c99_rounding_control.hpp [3:4]
- boost/numeric/interval/detail/c99sub_rounding_control.hpp [3:4]
- boost/numeric/interval/detail/ppc_rounding_control.hpp [3:5]
- boost/numeric/interval/detail/sparc_rounding_control.hpp [3:4]
- boost/numeric/interval/detail/x86_rounding_control.hpp [3:4]
- boost/numeric/interval/detail/x86gcc_rounding_control.hpp [3:4]
- boost/numeric/interval/limits.hpp [3:4]
- boost/numeric/interval/transc.hpp [3:4]
- boost/numeric/interval/utility.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 591904c44c8bfb3a6e54db322f25b723
-BELONGS ya.make
- License text:
- Copyright (c) 2016 Modified Work Barrett Adair
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/callable_traits/detail/unguarded/function_ptr.hpp [2:2]
- boost/callable_traits/detail/unguarded/function_ptr_3.hpp [2:2]
- boost/callable_traits/detail/unguarded/function_ptr_varargs.hpp [2:2]
- boost/callable_traits/detail/unguarded/function_ptr_varargs_3.hpp [2:2]
- boost/callable_traits/detail/unguarded/pmf.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 591a92ff47bb81394e84f3de5b78215b
-BELONGS ya.make
- License text:
- Copyright 2015 Glen Joseph Fernandes
- (glenjofe@gmail.com)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/align/align_down.hpp [2:3]
- boost/align/align_up.hpp [2:3]
- boost/align/assume_aligned.hpp [5:6]
- boost/align/detail/align_down.hpp [2:3]
- boost/align/detail/align_up.hpp [2:3]
- boost/align/detail/assume_aligned.hpp [5:6]
- boost/align/detail/assume_aligned_clang.hpp [2:3]
- boost/align/detail/assume_aligned_gcc.hpp [5:6]
- boost/align/detail/assume_aligned_intel.hpp [5:6]
- boost/align/detail/assume_aligned_msvc.hpp [5:6]
- boost/align/detail/element_type.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 593dc5957f6dce93881eb7fe8969d3c7
-BELONGS ya.make
- License text:
- // (C) Copyright 2005 Matthias Troyer
- // (C) Copyright 2006 Douglas Gregor <doug.gregor -at- gmail.com>
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpi/detail/content_oarchive.hpp [1:1]
- boost/mpi/detail/forward_iprimitive.hpp [1:1]
- boost/mpi/detail/forward_oprimitive.hpp [1:1]
- boost/mpi/detail/forward_skeleton_iarchive.hpp [1:1]
- boost/mpi/detail/forward_skeleton_oarchive.hpp [1:1]
- boost/mpi/detail/ignore_iprimitive.hpp [1:1]
- boost/mpi/detail/ignore_oprimitive.hpp [1:1]
- boost/mpi/detail/ignore_skeleton_oarchive.hpp [1:1]
- boost/mpi/detail/mpi_datatype_cache.hpp [1:1]
- boost/mpi/detail/mpi_datatype_oarchive.hpp [1:1]
- boost/mpi/detail/mpi_datatype_primitive.hpp [1:1]
- boost/mpi/detail/packed_iprimitive.hpp [1:1]
- boost/mpi/detail/packed_oprimitive.hpp [1:1]
- boost/mpi/detail/text_skeleton_oarchive.hpp [1:1]
- boost/mpi/packed_iarchive.hpp [1:2]
- boost/mpi/packed_oarchive.hpp [1:2]
- boost/mpi/skeleton_and_content.hpp [1:2]
- boost/serialization/collection_size_type.hpp [4:6]
- boost/serialization/valarray.hpp [12:14]
- boost/serialization/vector.hpp [12:15]
-
-KEEP COPYRIGHT_SERVICE_LABEL 595319185a88d46351ddfb060dbf8fde
-BELONGS ya.make
- License text:
- // Copyright Aleksey Gurtovoy 2003-2004
- // Copyright David Abrahams 2003-2004
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/aux_/inserter_algorithm.hpp [5:6]
- boost/mpl/aux_/order_impl.hpp [5:6]
- boost/mpl/back_inserter.hpp [5:6]
- boost/mpl/copy.hpp [5:6]
- boost/mpl/copy_if.hpp [5:6]
- boost/mpl/front_inserter.hpp [5:6]
- boost/mpl/has_key.hpp [5:6]
- boost/mpl/has_key_fwd.hpp [5:6]
- boost/mpl/inserter.hpp [5:6]
- boost/mpl/key_type.hpp [5:6]
- boost/mpl/key_type_fwd.hpp [5:6]
- boost/mpl/map/aux_/at_impl.hpp [5:6]
- boost/mpl/map/aux_/begin_end_impl.hpp [5:6]
- boost/mpl/map/aux_/clear_impl.hpp [5:6]
- boost/mpl/map/aux_/erase_impl.hpp [5:6]
- boost/mpl/map/aux_/erase_key_impl.hpp [5:6]
- boost/mpl/map/aux_/has_key_impl.hpp [5:6]
- boost/mpl/map/aux_/insert_impl.hpp [5:6]
- boost/mpl/map/aux_/item.hpp [5:6]
- boost/mpl/map/aux_/iterator.hpp [5:6]
- boost/mpl/map/aux_/key_type_impl.hpp [5:6]
- boost/mpl/map/aux_/map0.hpp [5:6]
- boost/mpl/map/aux_/preprocessed/no_ctps/map10.hpp [2:3]
- boost/mpl/map/aux_/preprocessed/no_ctps/map20.hpp [2:3]
- boost/mpl/map/aux_/preprocessed/no_ctps/map30.hpp [2:3]
- boost/mpl/map/aux_/preprocessed/no_ctps/map40.hpp [2:3]
- boost/mpl/map/aux_/preprocessed/no_ctps/map50.hpp [2:3]
- boost/mpl/map/aux_/preprocessed/plain/map10.hpp [2:3]
- boost/mpl/map/aux_/preprocessed/plain/map20.hpp [2:3]
- boost/mpl/map/aux_/preprocessed/plain/map30.hpp [2:3]
- boost/mpl/map/aux_/preprocessed/plain/map40.hpp [2:3]
- boost/mpl/map/aux_/preprocessed/plain/map50.hpp [2:3]
- boost/mpl/map/aux_/preprocessed/typeof_based/map10.hpp [2:3]
- boost/mpl/map/aux_/preprocessed/typeof_based/map20.hpp [2:3]
- boost/mpl/map/aux_/preprocessed/typeof_based/map30.hpp [2:3]
- boost/mpl/map/aux_/preprocessed/typeof_based/map40.hpp [2:3]
- boost/mpl/map/aux_/preprocessed/typeof_based/map50.hpp [2:3]
- boost/mpl/map/aux_/tag.hpp [5:6]
- boost/mpl/map/aux_/value_type_impl.hpp [5:6]
- boost/mpl/map/map0.hpp [5:6]
- boost/mpl/map/map10.hpp [5:6]
- boost/mpl/map/map20.hpp [5:6]
- boost/mpl/map/map30.hpp [5:6]
- boost/mpl/map/map40.hpp [5:6]
- boost/mpl/map/map50.hpp [5:6]
- boost/mpl/order.hpp [5:6]
- boost/mpl/order_fwd.hpp [5:6]
- boost/mpl/pair_view.hpp [5:6]
- boost/mpl/remove.hpp [5:6]
- boost/mpl/remove_if.hpp [5:6]
- boost/mpl/replace.hpp [5:7]
- boost/mpl/replace_if.hpp [5:7]
- boost/mpl/set/aux_/begin_end_impl.hpp [5:6]
- boost/mpl/set/aux_/clear_impl.hpp [5:6]
- boost/mpl/set/aux_/erase_impl.hpp [5:6]
- boost/mpl/set/aux_/erase_key_impl.hpp [5:6]
- boost/mpl/set/aux_/has_key_impl.hpp [5:6]
- boost/mpl/set/aux_/insert_impl.hpp [5:6]
- boost/mpl/set/aux_/item.hpp [5:6]
- boost/mpl/set/aux_/iterator.hpp [5:6]
- boost/mpl/set/aux_/key_type_impl.hpp [5:6]
- boost/mpl/set/aux_/preprocessed/plain/set10.hpp [2:3]
- boost/mpl/set/aux_/preprocessed/plain/set10_c.hpp [2:3]
- boost/mpl/set/aux_/preprocessed/plain/set20.hpp [2:3]
- boost/mpl/set/aux_/preprocessed/plain/set20_c.hpp [2:3]
- boost/mpl/set/aux_/preprocessed/plain/set30.hpp [2:3]
- boost/mpl/set/aux_/preprocessed/plain/set30_c.hpp [2:3]
- boost/mpl/set/aux_/preprocessed/plain/set40.hpp [2:3]
- boost/mpl/set/aux_/preprocessed/plain/set40_c.hpp [2:3]
- boost/mpl/set/aux_/preprocessed/plain/set50.hpp [2:3]
- boost/mpl/set/aux_/preprocessed/plain/set50_c.hpp [2:3]
- boost/mpl/set/aux_/set0.hpp [5:6]
- boost/mpl/set/aux_/tag.hpp [5:6]
- boost/mpl/set/aux_/value_type_impl.hpp [5:6]
- boost/mpl/set/set0.hpp [5:6]
- boost/mpl/set/set0_c.hpp [5:6]
- boost/mpl/set/set10.hpp [5:6]
- boost/mpl/set/set10_c.hpp [5:6]
- boost/mpl/set/set20.hpp [5:6]
- boost/mpl/set/set20_c.hpp [5:6]
- boost/mpl/set/set30.hpp [5:6]
- boost/mpl/set/set30_c.hpp [5:6]
- boost/mpl/set/set40.hpp [5:6]
- boost/mpl/set/set40_c.hpp [5:6]
- boost/mpl/set/set50.hpp [5:6]
- boost/mpl/set/set50_c.hpp [5:6]
- boost/mpl/transform.hpp [5:6]
- boost/mpl/value_type.hpp [5:6]
- boost/mpl/value_type_fwd.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 596d215980dce936d1d42dadce287430
-BELONGS ya.make
- License text:
- // Copyright (c) 2001, 2002 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/core/ref.hpp [17:19]
- boost/intrusive_ptr.hpp [7:7]
- boost/scoped_array.hpp [4:5]
- boost/scoped_ptr.hpp [4:5]
- boost/serialization/detail/shared_ptr_nmt_132.hpp [7:8]
- boost/shared_array.hpp [7:8]
- boost/smart_ptr/intrusive_ptr.hpp [7:7]
- boost/smart_ptr/scoped_array.hpp [4:5]
- boost/smart_ptr/scoped_ptr.hpp [4:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 599d75ac2b4bb8a11ff470bef1798ec5
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/core.hpp [2:8]
- boost/spirit/home/classic/phoenix/casts.hpp [3:4]
- boost/spirit/home/classic/phoenix/new.hpp [3:5]
- boost/spirit/home/classic/utility.hpp [2:9]
-
-KEEP COPYRIGHT_SERVICE_LABEL 599e47817ea1a7b6f600dbe2026aadad
-BELONGS ya.make
- License text:
- // Copyright (c) 2000-2010
- // Joerg Walter, Mathias Koch, Gunter Winkler, David Bellot
- // Copyright (c) 2014, Athanasios Iliopoulos
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/ublas/matrix.hpp [2:4]
- boost/numeric/ublas/vector.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 59ebac4ff1b00b3baca98f0279da51a4
-BELONGS ya.make
- License text:
- // Copyright (c) 2001, 2002 Python Software Foundation; All Rights
- // Reserved
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/python/detail/python22_fixed.h [4:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 59f7375811a04f7a1af214791e9e2591
-BELONGS ya.make
- License text:
- // Copyright (C) 2004-2009 The Trustees of Indiana University.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/use_mpi.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5a2ce7c8c2691b2dee1cd71c641d0daf
-BELONGS ya.make
- License text:
- Copyright (c) 2009 Chris Hoeppler
- Copyright (c) 2014 Lee Clagett
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/x3/directive/confix.hpp [2:3]
- boost/spirit/home/x3/directive/seek.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5a55975c544a17d902b5b7a6165934ba
-BELONGS ya.make
- License text:
- // (C) Copyright 2008-10 Anthony Williams
- // (C) Copyright 2011-2015 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/future.hpp [1:2]
- boost/thread/futures/future_error.hpp [1:2]
- boost/thread/futures/future_status.hpp [1:2]
- boost/thread/futures/is_future_type.hpp [1:2]
- boost/thread/futures/launch.hpp [1:2]
- boost/thread/futures/wait_for_all.hpp [1:2]
- boost/thread/futures/wait_for_any.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5a997291bb89319f64237173cbd354ce
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/typeof/decltype.hpp [1:4]
- boost/typeof/native.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5ab12e05dd6c2ce7bcafaa94b9ccb6e4
-BELONGS ya.make
- License text:
- // Copyright 2015 Steven Watanabe
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_erasure/detail/auto_link.hpp [3:3]
- boost/type_erasure/detail/dynamic_vtable.hpp [3:3]
- boost/type_erasure/dynamic_any_cast.hpp [3:3]
- boost/type_erasure/dynamic_binding.hpp [3:3]
- boost/type_erasure/register_binding.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5ab711ab8144e3652f3ab473e36a4162
-BELONGS ya.make
- License text:
- * Date: Thu Dec 06 13:21:54 MST 2007
- * Copyright: 2007-2008 CodeRage, LLC
- * Author: Jonathan Turkanis
- * Contact: turkanis at coderage dot com
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/iostreams/detail/absolute_path.hpp [8:11]
- boost/iostreams/detail/adapter/device_adapter.hpp [8:10]
- boost/iostreams/detail/adapter/filter_adapter.hpp [6:9]
- boost/iostreams/detail/config/fpos.hpp [8:11]
- boost/iostreams/detail/config/rtl.hpp [14:16]
- boost/iostreams/detail/current_directory.hpp [8:11]
- boost/iostreams/detail/execute.hpp [8:11]
- boost/iostreams/detail/functional.hpp [8:11]
- boost/iostreams/detail/restrict_impl.hpp [8:11]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5ac86f7028be2a8c407bd6184321ac70
-BELONGS ya.make
- License text:
- // Copyright (c) 2008-2009 Ben Hanson (http://www.benhanson.net/)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/support/detail/lexer/file_input.hpp [2:2]
- boost/spirit/home/support/detail/lexer/generate_cpp.hpp [2:2]
- boost/spirit/home/support/detail/lexer/input.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5acab5fd542f310531a308204d2dd114
-BELONGS ya.make
- License text:
- // Copyright Beman Dawes 1994, 2006, 2008
- // Copyright Vicente J. Botet Escriba 2009-2011
- // Copyright Christopher Brown 2013
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/chrono/detail/inlined/mac/thread_clock.hpp [3:5]
- boost/chrono/detail/inlined/posix/thread_clock.hpp [3:4]
- boost/multiprecision/traits/explicit_conversion.hpp [2:5]
- boost/multiprecision/traits/is_restricted_conversion.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5ad1faae7d4106b7b5cff4815582e17d
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic.hpp [2:14]
- boost/spirit/home/classic/core.hpp [2:8]
- boost/spirit/home/classic/iterator.hpp [2:4]
- boost/spirit/home/classic/tree/ast.hpp [2:4]
- boost/spirit/home/classic/tree/common.hpp [2:5]
- boost/spirit/home/classic/tree/parse_tree.hpp [2:4]
- boost/spirit/home/classic/tree/parse_tree_utils.hpp [2:4]
- boost/spirit/home/classic/utility.hpp [2:9]
- boost/spirit/home/classic/utility/impl/escape_char.ipp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5b610a2723cd8f65dd39615a55e76ce7
-BELONGS ya.make
- License text:
- * Copyright (c) 2003-2004
- * Douglas Gregor
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/signals/detail/config.hpp [6:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5b88761341a84ebd8b3d9e49fa0c7b47
-BELONGS libs/log/ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: libs/log/config/xopen-source-600/xopen_source_600.cpp at line 4
- License text:
- * Copyright Andrey Semashev 2017.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- libs/log/config/xopen-source-600/xopen_source_600.cpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5b90d7dcbdfffd189deaf30fcf6cd55f
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/slist.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2004-2015. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/container/slist.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5ba021a7799c2c0bdb25af2c47755daa
-BELONGS libs/log/ya.make ya.make
- License text:
- Copyright Andrey Semashev 2007 - 2015.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/beast/core/detail/cpu_info.hpp [36:36]
- boost/log/attributes.hpp [2:4]
- boost/log/attributes/attribute.hpp [2:4]
- boost/log/attributes/attribute_cast.hpp [2:4]
- boost/log/attributes/attribute_name.hpp [2:4]
- boost/log/attributes/attribute_set.hpp [2:4]
- boost/log/attributes/attribute_value.hpp [2:4]
- boost/log/attributes/attribute_value_impl.hpp [2:4]
- boost/log/attributes/attribute_value_set.hpp [2:4]
- boost/log/attributes/clock.hpp [2:4]
- boost/log/attributes/constant.hpp [2:4]
- boost/log/attributes/counter.hpp [2:4]
- boost/log/attributes/current_process_id.hpp [2:4]
- boost/log/attributes/current_process_name.hpp [2:4]
- boost/log/attributes/current_thread_id.hpp [2:4]
- boost/log/attributes/fallback_policy.hpp [2:4]
- boost/log/attributes/fallback_policy_fwd.hpp [2:4]
- boost/log/attributes/function.hpp [2:4]
- boost/log/attributes/mutable_constant.hpp [2:4]
- boost/log/attributes/named_scope.hpp [2:4]
- boost/log/attributes/scoped_attribute.hpp [2:4]
- boost/log/attributes/time_traits.hpp [2:4]
- boost/log/attributes/timer.hpp [2:4]
- boost/log/attributes/value_extraction.hpp [2:4]
- boost/log/attributes/value_extraction_fwd.hpp [2:4]
- boost/log/attributes/value_visitation.hpp [2:4]
- boost/log/attributes/value_visitation_fwd.hpp [2:4]
- boost/log/common.hpp [2:4]
- boost/log/core.hpp [2:4]
- boost/log/core/core.hpp [2:4]
- boost/log/core/record.hpp [2:4]
- boost/log/core/record_view.hpp [2:4]
- boost/log/detail/adaptive_mutex.hpp [2:4]
- boost/log/detail/asio_fwd.hpp [2:4]
- boost/log/detail/attr_output_impl.hpp [2:4]
- boost/log/detail/attr_output_terminal.hpp [2:4]
- boost/log/detail/attribute_get_value_impl.hpp [2:4]
- boost/log/detail/attribute_predicate.hpp [2:4]
- boost/log/detail/cleanup_scope_guard.hpp [2:4]
- boost/log/detail/code_conversion.hpp [2:4]
- boost/log/detail/config.hpp [2:4]
- boost/log/detail/copy_cv.hpp [2:4]
- boost/log/detail/custom_terminal_spec.hpp [2:4]
- boost/log/detail/date_time_fmt_gen_traits_fwd.hpp [2:4]
- boost/log/detail/date_time_format_parser.hpp [2:4]
- boost/log/detail/decomposed_time.hpp [2:4]
- boost/log/detail/deduce_char_type.hpp [2:4]
- boost/log/detail/default_attribute_names.hpp [2:4]
- boost/log/detail/embedded_string_type.hpp [2:4]
- boost/log/detail/enqueued_record.hpp [2:4]
- boost/log/detail/event.hpp [2:4]
- boost/log/detail/fake_mutex.hpp [2:4]
- boost/log/detail/footer.hpp [2:4]
- boost/log/detail/format.hpp [2:4]
- boost/log/detail/function_traits.hpp [2:4]
- boost/log/detail/generate_overloads.hpp [2:4]
- boost/log/detail/header.hpp [2:4]
- boost/log/detail/id.hpp [2:4]
- boost/log/detail/is_character_type.hpp [2:4]
- boost/log/detail/is_ostream.hpp [2:4]
- boost/log/detail/light_function.hpp [2:4]
- boost/log/detail/light_function_pp.hpp [2:4]
- boost/log/detail/light_rw_mutex.hpp [2:4]
- boost/log/detail/locking_ptr.hpp [2:4]
- boost/log/detail/locks.hpp [2:4]
- boost/log/detail/named_scope_fmt_pp.hpp [2:4]
- boost/log/detail/native_typeof.hpp [2:4]
- boost/log/detail/parameter_tools.hpp [2:4]
- boost/log/detail/pp_identity.hpp [2:4]
- boost/log/detail/process_id.hpp [2:4]
- boost/log/detail/setup_config.hpp [2:4]
- boost/log/detail/singleton.hpp [2:4]
- boost/log/detail/sink_init_helpers.hpp [2:4]
- boost/log/detail/snprintf.hpp [2:4]
- boost/log/detail/tagged_integer.hpp [2:4]
- boost/log/detail/thread_id.hpp [2:4]
- boost/log/detail/thread_specific.hpp [2:4]
- boost/log/detail/threadsafe_queue.hpp [2:4]
- boost/log/detail/timestamp.hpp [2:4]
- boost/log/detail/trivial_keyword.hpp [2:4]
- boost/log/detail/unary_function_terminal.hpp [2:4]
- boost/log/detail/unhandled_exception_count.hpp [2:4]
- boost/log/detail/value_ref_visitation.hpp [2:4]
- boost/log/exceptions.hpp [2:4]
- boost/log/expressions.hpp [2:4]
- boost/log/expressions/attr.hpp [2:4]
- boost/log/expressions/attr_fwd.hpp [2:4]
- boost/log/expressions/filter.hpp [2:4]
- boost/log/expressions/formatter.hpp [2:4]
- boost/log/expressions/formatters.hpp [2:4]
- boost/log/expressions/formatters/c_decorator.hpp [2:4]
- boost/log/expressions/formatters/char_decorator.hpp [2:4]
- boost/log/expressions/formatters/csv_decorator.hpp [2:4]
- boost/log/expressions/formatters/date_time.hpp [2:4]
- boost/log/expressions/formatters/format.hpp [2:4]
- boost/log/expressions/formatters/if.hpp [2:4]
- boost/log/expressions/formatters/named_scope.hpp [2:4]
- boost/log/expressions/formatters/stream.hpp [2:4]
- boost/log/expressions/formatters/wrap_formatter.hpp [2:4]
- boost/log/expressions/formatters/xml_decorator.hpp [2:4]
- boost/log/expressions/is_keyword_descriptor.hpp [2:4]
- boost/log/expressions/keyword.hpp [2:4]
- boost/log/expressions/keyword_fwd.hpp [2:4]
- boost/log/expressions/message.hpp [2:4]
- boost/log/expressions/predicates.hpp [2:4]
- boost/log/expressions/predicates/begins_with.hpp [2:4]
- boost/log/expressions/predicates/channel_severity_filter.hpp [2:4]
- boost/log/expressions/predicates/contains.hpp [2:4]
- boost/log/expressions/predicates/ends_with.hpp [2:4]
- boost/log/expressions/predicates/has_attr.hpp [2:4]
- boost/log/expressions/predicates/is_debugger_present.hpp [2:4]
- boost/log/expressions/predicates/is_in_range.hpp [2:4]
- boost/log/expressions/predicates/matches.hpp [2:4]
- boost/log/expressions/record.hpp [2:4]
- boost/log/keywords/auto_flush.hpp [2:4]
- boost/log/keywords/channel.hpp [2:4]
- boost/log/keywords/delimiter.hpp [2:4]
- boost/log/keywords/depth.hpp [2:4]
- boost/log/keywords/empty_marker.hpp [2:4]
- boost/log/keywords/facility.hpp [2:4]
- boost/log/keywords/file_name.hpp [2:4]
- boost/log/keywords/filter.hpp [2:4]
- boost/log/keywords/format.hpp [2:4]
- boost/log/keywords/ident.hpp [2:4]
- boost/log/keywords/incomplete_marker.hpp [2:4]
- boost/log/keywords/ip_version.hpp [2:4]
- boost/log/keywords/iteration.hpp [2:4]
- boost/log/keywords/log_name.hpp [2:4]
- boost/log/keywords/log_source.hpp [2:4]
- boost/log/keywords/max_files.hpp [2:4]
- boost/log/keywords/max_size.hpp [2:4]
- boost/log/keywords/message_file.hpp [2:4]
- boost/log/keywords/min_free_space.hpp [2:4]
- boost/log/keywords/open_mode.hpp [2:4]
- boost/log/keywords/order.hpp [2:4]
- boost/log/keywords/ordering_window.hpp [2:4]
- boost/log/keywords/registration.hpp [2:4]
- boost/log/keywords/rotation_size.hpp [2:4]
- boost/log/keywords/scan_method.hpp [2:4]
- boost/log/keywords/severity.hpp [2:4]
- boost/log/keywords/start_thread.hpp [2:4]
- boost/log/keywords/target.hpp [2:4]
- boost/log/keywords/time_based_rotation.hpp [2:4]
- boost/log/keywords/use_impl.hpp [2:4]
- boost/log/sinks.hpp [2:4]
- boost/log/sinks/async_frontend.hpp [2:4]
- boost/log/sinks/attribute_mapping.hpp [2:4]
- boost/log/sinks/basic_sink_backend.hpp [2:4]
- boost/log/sinks/basic_sink_frontend.hpp [2:4]
- boost/log/sinks/block_on_overflow.hpp [2:4]
- boost/log/sinks/bounded_fifo_queue.hpp [2:4]
- boost/log/sinks/bounded_ordering_queue.hpp [2:4]
- boost/log/sinks/debug_output_backend.hpp [2:4]
- boost/log/sinks/drop_on_overflow.hpp [2:4]
- boost/log/sinks/event_log_backend.hpp [2:4]
- boost/log/sinks/event_log_constants.hpp [2:4]
- boost/log/sinks/frontend_requirements.hpp [2:4]
- boost/log/sinks/sink.hpp [2:4]
- boost/log/sinks/sync_frontend.hpp [2:4]
- boost/log/sinks/syslog_backend.hpp [2:4]
- boost/log/sinks/syslog_constants.hpp [2:4]
- boost/log/sinks/text_file_backend.hpp [2:4]
- boost/log/sinks/text_multifile_backend.hpp [2:4]
- boost/log/sinks/text_ostream_backend.hpp [2:4]
- boost/log/sinks/unbounded_fifo_queue.hpp [2:4]
- boost/log/sinks/unbounded_ordering_queue.hpp [2:4]
- boost/log/sinks/unlocked_frontend.hpp [2:4]
- boost/log/sources/basic_logger.hpp [2:4]
- boost/log/sources/channel_feature.hpp [2:4]
- boost/log/sources/channel_logger.hpp [2:4]
- boost/log/sources/exception_handler_feature.hpp [2:4]
- boost/log/sources/features.hpp [2:4]
- boost/log/sources/global_logger_storage.hpp [2:4]
- boost/log/sources/logger.hpp [2:4]
- boost/log/sources/record_ostream.hpp [2:4]
- boost/log/sources/severity_channel_logger.hpp [2:4]
- boost/log/sources/severity_feature.hpp [2:4]
- boost/log/sources/severity_logger.hpp [2:4]
- boost/log/sources/threading_models.hpp [2:4]
- boost/log/support/date_time.hpp [2:4]
- boost/log/support/exception.hpp [2:4]
- boost/log/support/regex.hpp [2:4]
- boost/log/support/spirit_classic.hpp [2:4]
- boost/log/support/spirit_qi.hpp [2:4]
- boost/log/support/std_regex.hpp [2:4]
- boost/log/support/xpressive.hpp [2:4]
- boost/log/trivial.hpp [2:4]
- boost/log/utility/exception_handler.hpp [2:4]
- boost/log/utility/formatting_ostream.hpp [2:4]
- boost/log/utility/formatting_ostream_fwd.hpp [2:4]
- boost/log/utility/functional.hpp [2:4]
- boost/log/utility/functional/as_action.hpp [2:4]
- boost/log/utility/functional/begins_with.hpp [2:4]
- boost/log/utility/functional/bind.hpp [2:4]
- boost/log/utility/functional/bind_assign.hpp [2:4]
- boost/log/utility/functional/bind_output.hpp [2:4]
- boost/log/utility/functional/bind_to_log.hpp [2:4]
- boost/log/utility/functional/contains.hpp [2:4]
- boost/log/utility/functional/ends_with.hpp [2:4]
- boost/log/utility/functional/fun_ref.hpp [2:4]
- boost/log/utility/functional/in_range.hpp [2:4]
- boost/log/utility/functional/logical.hpp [2:4]
- boost/log/utility/functional/matches.hpp [2:4]
- boost/log/utility/functional/nop.hpp [2:4]
- boost/log/utility/functional/save_result.hpp [2:4]
- boost/log/utility/manipulators.hpp [2:4]
- boost/log/utility/manipulators/add_value.hpp [2:4]
- boost/log/utility/manipulators/dump.hpp [2:4]
- boost/log/utility/manipulators/to_log.hpp [2:4]
- boost/log/utility/once_block.hpp [2:4]
- boost/log/utility/record_ordering.hpp [2:4]
- boost/log/utility/setup.hpp [2:4]
- boost/log/utility/setup/common_attributes.hpp [2:4]
- boost/log/utility/setup/console.hpp [2:4]
- boost/log/utility/setup/file.hpp [2:4]
- boost/log/utility/setup/filter_parser.hpp [2:4]
- boost/log/utility/setup/formatter_parser.hpp [2:4]
- boost/log/utility/setup/from_settings.hpp [2:4]
- boost/log/utility/setup/from_stream.hpp [2:4]
- boost/log/utility/setup/settings.hpp [2:4]
- boost/log/utility/setup/settings_parser.hpp [2:4]
- boost/log/utility/strictest_lock.hpp [2:4]
- boost/log/utility/string_literal_fwd.hpp [2:4]
- boost/log/utility/type_dispatch/date_time_types.hpp [2:4]
- boost/log/utility/type_dispatch/dynamic_type_dispatcher.hpp [2:4]
- boost/log/utility/type_dispatch/standard_types.hpp [2:4]
- boost/log/utility/type_dispatch/static_type_dispatcher.hpp [2:4]
- boost/log/utility/type_dispatch/type_dispatcher.hpp [2:4]
- boost/log/utility/unique_identifier_name.hpp [2:4]
- boost/log/utility/unused_variable.hpp [2:4]
- boost/log/utility/value_ref.hpp [2:4]
- boost/log/utility/value_ref_fwd.hpp [2:4]
- libs/log/config/visibility/visibility.cpp [2:4]
- libs/log/config/x86-ext/avx2.cpp [2:4]
- libs/log/config/x86-ext/ssse3.cpp [2:4]
- libs/log/src/alignment_gap_between.hpp [2:4]
- libs/log/src/attribute_name.cpp [2:4]
- libs/log/src/attribute_set.cpp [2:4]
- libs/log/src/attribute_set_impl.hpp [2:4]
- libs/log/src/attribute_value_set.cpp [2:4]
- libs/log/src/code_conversion.cpp [2:4]
- libs/log/src/core.cpp [2:4]
- libs/log/src/date_time_format_parser.cpp [2:4]
- libs/log/src/default_attribute_names.cpp [2:4]
- libs/log/src/default_sink.cpp [2:4]
- libs/log/src/default_sink.hpp [2:4]
- libs/log/src/dump.cpp [2:4]
- libs/log/src/dump_avx2.cpp [2:4]
- libs/log/src/dump_ssse3.cpp [2:4]
- libs/log/src/event.cpp [2:4]
- libs/log/src/exceptions.cpp [2:4]
- libs/log/src/format_parser.cpp [2:4]
- libs/log/src/global_logger_storage.cpp [2:4]
- libs/log/src/id_formatting.hpp [2:4]
- libs/log/src/named_scope.cpp [2:4]
- libs/log/src/named_scope_format_parser.cpp [2:4]
- libs/log/src/once_block.cpp [2:4]
- libs/log/src/process_id.cpp [2:4]
- libs/log/src/process_name.cpp [2:4]
- libs/log/src/record_ostream.cpp [2:4]
- libs/log/src/setup/default_filter_factory.cpp [2:4]
- libs/log/src/setup/default_filter_factory.hpp [2:4]
- libs/log/src/setup/default_formatter_factory.cpp [2:4]
- libs/log/src/setup/default_formatter_factory.hpp [2:4]
- libs/log/src/setup/filter_parser.cpp [2:4]
- libs/log/src/setup/formatter_parser.cpp [2:4]
- libs/log/src/setup/init_from_settings.cpp [2:4]
- libs/log/src/setup/init_from_stream.cpp [2:4]
- libs/log/src/setup/matches_relation_factory.cpp [2:4]
- libs/log/src/setup/parser_utils.cpp [2:4]
- libs/log/src/setup/parser_utils.hpp [2:4]
- libs/log/src/setup/settings_parser.cpp [2:4]
- libs/log/src/severity_level.cpp [2:4]
- libs/log/src/spirit_encoding.cpp [2:4]
- libs/log/src/spirit_encoding.hpp [2:4]
- libs/log/src/stateless_allocator.hpp [2:4]
- libs/log/src/syslog_backend.cpp [2:4]
- libs/log/src/text_file_backend.cpp [2:4]
- libs/log/src/text_multifile_backend.cpp [2:4]
- libs/log/src/text_ostream_backend.cpp [2:4]
- libs/log/src/thread_id.cpp [2:4]
- libs/log/src/thread_specific.cpp [2:4]
- libs/log/src/threadsafe_queue.cpp [2:4]
- libs/log/src/timer.cpp [2:4]
- libs/log/src/trivial.cpp [2:4]
- libs/log/src/unhandled_exception_count.cpp [2:4]
- libs/log/src/unique_ptr.hpp [2:4]
- libs/log/src/windows/debug_output_backend.cpp [2:4]
- libs/log/src/windows/event_log_backend.cpp [2:4]
- libs/log/src/windows/event_log_registry.hpp [2:4]
- libs/log/src/windows/light_rw_mutex.cpp [2:4]
- libs/log/src/windows/simple_event_log.h [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5bb192a3ec0466664f95da7b439ee5e7
-BELONGS ya.make
- License text:
- // Copyright 2012 Fernando Vilas
- // 2010 Daniel Trebbien
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/maximum_adjacency_search.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5bc125f7c304158bc8d50edd46156a29
-BELONGS ya.make
- License text:
- Copyright (c) 2002-2003 Joel de Guzman
- Copyright (c) 2002-2003 Juan Carlos Arevalo-Baeza
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/utility/functor_parser.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5c0e0f4ecbfc5930fc8af588470713b4
-BELONGS ya.make
- License text:
- Copyright (c) 2015 Mario Lang
- Copyright (c) 2001-2011 Hartmut Kaiser
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/x3/directive/matches.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5c26b4d7fe3c1805cc2c8b0e905940b0
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2003 Daniel Nuffer
- Copyright (c) 2001-2007 Hartmut Kaiser
- Revised 2007, Copyright (c) Tobias Schwinger
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/tree/common.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5c2d365acd08b2a111a1df0616d30393
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/statechart/result.hpp at line 6, boost/statechart/simple_state.hpp at line 6, boost/statechart/state_machine.hpp at line 6
- License text:
- // Copyright 2002-2010 Andreas Huber Doenni
- // Distributed under the Boost Software License, Version 1.0. (See accompany-
- // ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/statechart/result.hpp [4:6]
- boost/statechart/simple_state.hpp [4:6]
- boost/statechart/state_machine.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5c403ec7fc96b9eeeb8d0d6da8005e84
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/architecture/blackfin.h at line 4, boost/predef/other.h at line 4, boost/predef/other/endian.h at line 4, boost/predef/platform.h at line 4
- License text:
- Copyright Rene Rivera 2013-2015
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/predef/architecture/blackfin.h [2:4]
- boost/predef/other.h [2:4]
- boost/predef/other/endian.h [2:4]
- boost/predef/platform.h [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5c85c701ea71a691c59490ec39b34ede
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/smart_ptr/detail/bad_weak_ptr.hpp at line 8, boost/interprocess/smart_ptr/detail/shared_count.hpp at line 8
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/interprocess/smart_ptr/detail/bad_weak_ptr.hpp [5:8]
- boost/interprocess/smart_ptr/detail/shared_count.hpp [5:9]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5c8ac41153fe8e9daf8181b70c9bcb2b
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/stdlib/roguewave.hpp [1:6]
- boost/iterator/permutation_iterator.hpp [1:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5ca418207a9a9e57884eb84192e8056e
-BELONGS libs/filesystem/ya.make libs/program_options/ya.make libs/serialization/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/program_options/cmdline.hpp at line 3, boost/program_options/detail/convert.hpp at line 3, boost/program_options/detail/parsers.hpp at line 3, boost/program_options/detail/value_semantic.hpp at line 3, boost/program_options/environment_iterator.hpp at line 3, boost/program_options/eof_iterator.hpp at line 3, boost/program_options/option.hpp at line 3, boost/program_options/positional_options.hpp at line 3, boost/program_options/value_semantic.hpp at line 3, boost/program_options/version.hpp at line 3, libs/filesystem/src/utf8_codecvt_facet.cpp at line 3, libs/program_options/src/convert.cpp at line 3, libs/program_options/src/positional_options.cpp at line 3, libs/program_options/src/utf8_codecvt_facet.cpp at line 3, libs/program_options/src/value_semantic.cpp at line 3, libs/serialization/src/utf8_codecvt_facet.cpp at line 3
- License text:
- // Copyright Vladimir Prus 2004.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/program_options/cmdline.hpp [1:3]
- boost/program_options/detail/convert.hpp [1:3]
- boost/program_options/detail/parsers.hpp [1:3]
- boost/program_options/detail/value_semantic.hpp [1:3]
- boost/program_options/environment_iterator.hpp [1:3]
- boost/program_options/eof_iterator.hpp [1:3]
- boost/program_options/option.hpp [1:3]
- boost/program_options/positional_options.hpp [1:3]
- boost/program_options/value_semantic.hpp [1:3]
- boost/program_options/version.hpp [1:3]
- libs/filesystem/src/utf8_codecvt_facet.cpp [1:3]
- libs/program_options/src/convert.cpp [1:3]
- libs/program_options/src/positional_options.cpp [1:3]
- libs/program_options/src/utf8_codecvt_facet.cpp [1:3]
- libs/program_options/src/value_semantic.cpp [1:3]
- libs/serialization/src/utf8_codecvt_facet.cpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5cce5dc14f00da42bb6f34ce5b2dfce4
-BELONGS ya.make
- License text:
- // Copyright (C) 2002-2006 Marcin Kalicinski
- // Copyright (C) 2013 Sebastian Redl
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/property_tree/detail/xml_parser_write.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5cd4a0c580c53e0ce656cd3fe8597d92
-BELONGS libs/random/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/integer_traits.hpp at line 5, boost/nondet_random.hpp at line 5, boost/random/random_device.hpp at line 5, boost/uuid/detail/random_provider_posix.ipp at line 5, boost/uuid/detail/random_provider_wincrypt.ipp at line 5, libs/random/src/random_device.cpp at line 5
- License text:
- * Copyright Jens Maurer 2000
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/integer_traits.hpp [3:5]
- boost/nondet_random.hpp [3:5]
- boost/random/random_device.hpp [3:6]
- boost/uuid/detail/random_provider_posix.ipp [3:6]
- boost/uuid/detail/random_provider_wincrypt.ipp [3:6]
- libs/random/src/random_device.cpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5d19ba487dbef72a53fdf36bdd83309d
-BELONGS ya.make
- License text:
- /* Copyright (c) 2002-2003,2005 CrystalClear Software, Inc.
- * Use, modification and distribution is subject to the
- * Boost Software License, Version 1.0. (See accompanying
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/date_time/time_zone_names.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5d5ceeefae6baf9c4d0ab38f1ad40835
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2007 Hartmut Kaiser
- Copyright (c) 2001-2003 Daniel Nuffer
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/tree/impl/parse_tree_utils.ipp [2:4]
- boost/spirit/home/classic/tree/impl/tree_to_xml.ipp [2:4]
- boost/spirit/home/classic/tree/tree_to_xml.hpp [2:4]
- boost/spirit/home/classic/utility/chset.hpp [2:4]
- boost/spirit/home/classic/utility/chset_operators.hpp [2:4]
- boost/spirit/home/classic/utility/escape_char.hpp [2:3]
- boost/spirit/home/classic/utility/flush_multi_pass.hpp [2:3]
- boost/spirit/home/classic/utility/impl/chset.ipp [2:4]
- boost/spirit/home/classic/utility/impl/chset/basic_chset.hpp [2:4]
- boost/spirit/home/classic/utility/impl/chset/basic_chset.ipp [2:4]
- boost/xpressive/detail/utility/chset/basic_chset.hpp [2:4]
- boost/xpressive/detail/utility/chset/basic_chset.ipp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5db5d507e9e07c6fbe5e4cb7336a9321
-BELONGS ya.make
- License text:
- // Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
- // Copyright 2004-2005 Peter Dimov
- // Copyright 2007-2012 Ion Gaztanaga
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/interprocess/smart_ptr/detail/sp_counted_base_atomic.hpp [12:14]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5dcd896fc15c3b0fab611b475854c071
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/foreach_fwd.hpp at line 6, boost/proto/detail/as_expr.hpp at line 9, boost/proto/functional.hpp at line 7, boost/proto/functional/fusion.hpp at line 7, boost/proto/functional/fusion/at.hpp at line 7, boost/proto/functional/fusion/pop_back.hpp at line 7, boost/proto/functional/fusion/pop_front.hpp at line 7, boost/proto/functional/fusion/push_back.hpp at line 7, boost/proto/functional/fusion/push_front.hpp at line 7, boost/proto/functional/fusion/reverse.hpp at line 7, boost/proto/functional/std.hpp at line 7, boost/proto/functional/std/utility.hpp at line 7
- License text:
- // Copyright 2010 Eric Niebler.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/foreach_fwd.hpp [4:6]
- boost/proto/detail/as_expr.hpp [7:9]
- boost/proto/functional.hpp [5:7]
- boost/proto/functional/fusion.hpp [5:7]
- boost/proto/functional/fusion/at.hpp [5:7]
- boost/proto/functional/fusion/pop_back.hpp [5:7]
- boost/proto/functional/fusion/pop_front.hpp [5:7]
- boost/proto/functional/fusion/push_back.hpp [5:7]
- boost/proto/functional/fusion/push_front.hpp [5:7]
- boost/proto/functional/fusion/reverse.hpp [5:7]
- boost/proto/functional/std.hpp [5:7]
- boost/proto/functional/std/utility.hpp [5:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5dd53ee811abc83b9190c778f5f47298
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2006, 2007.
- // Copyright Paul A. Bristow 2006, 2007.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/distributions/normal.hpp [1:2]
- boost/math/distributions/triangular.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5e2789af15a3f0dceb1a6835b257fde9
-BELONGS libs/filesystem/ya.make
- License text:
- // Copyright 2002-2009, 2014 Beman Dawes
- // Copyright 2001 Dietmar Kuehl
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- libs/filesystem/src/operations.cpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5e5122844c5c00c4740356da3c3eaecb
-BELONGS libs/chrono/ya.make ya.make
- License text:
- // Copyright Beman Dawes 2003, 2006, 2008
- // Copyright 2009-2011 Vicente J. Botet Escriba
- // Copyright (c) Microsoft Corporation 2014
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/chrono/config.hpp [3:5]
- boost/chrono/detail/inlined/win/process_cpu_clocks.hpp [3:5]
- boost/chrono/io/time_point_units.hpp [1:5]
- boost/chrono/process_cpu_clocks.hpp [3:4]
- boost/predef/architecture/arm.h [2:6]
- boost/predef/platform.h [2:5]
- boost/predef/platform/windows_desktop.h [2:5]
- boost/predef/platform/windows_phone.h [2:5]
- boost/predef/platform/windows_runtime.h [2:5]
- boost/predef/platform/windows_store.h [2:5]
- boost/signals2/detail/lwm_win32_cs.hpp [4:6]
- boost/smart_ptr/detail/lwm_win32_cs.hpp [13:14]
- boost/smart_ptr/detail/yield_k.hpp [13:14]
- boost/system/detail/error_code.ipp [3:6]
- boost/winapi/system.hpp [2:4]
- boost/winapi/time.hpp [2:4]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/laps_stopwatch_default_formatter.hpp [2:5]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/process_default_formatter.hpp [2:5]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/simple_stopwatch.hpp [2:5]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/strict_stopwatch.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5e8b36f8b7344a5c105fd71620e6cebc
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/architecture/convex.h at line 4, boost/predef/architecture/pyramid.h at line 4, boost/predef/detail/test_def.h at line 4, boost/predef/language.h at line 4, boost/predef/language/objc.h at line 4, boost/predef/language/stdc.h at line 4, boost/predef/language/stdcpp.h at line 4, boost/predef/library/std/cxx.h at line 4, boost/predef/os/os400.h at line 4, boost/predef/os/vms.h at line 4
- License text:
- Copyright Rene Rivera 2011-2015
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/predef/architecture/convex.h [2:4]
- boost/predef/architecture/pyramid.h [2:4]
- boost/predef/detail/test_def.h [2:4]
- boost/predef/language.h [2:4]
- boost/predef/language/objc.h [2:4]
- boost/predef/language/stdc.h [2:4]
- boost/predef/language/stdcpp.h [2:4]
- boost/predef/library/std/cxx.h [2:4]
- boost/predef/os/os400.h [2:4]
- boost/predef/os/vms.h [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5e997ed5f034c1dc23e6643ea466e0d1
-BELONGS ya.make
- License text:
- Copyright (c) 2005-2010 Joel de Guzman
- Copyright (c) 2010-2011 Thomas Heller
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/phoenix.hpp [2:3]
- boost/phoenix/core/actor.hpp [2:5]
- boost/phoenix/core/call.hpp [2:3]
- boost/phoenix/core/debug.hpp [2:4]
- boost/phoenix/core/detail/cpp03/actor_operator.hpp [24:25]
- boost/phoenix/core/detail/cpp03/actor_result_of.hpp [25:26]
- boost/phoenix/core/detail/cpp03/call.hpp [21:22]
- boost/phoenix/core/detail/cpp03/expression.hpp [18:20]
- boost/phoenix/core/detail/cpp03/function_equal.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_10.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_20.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_30.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_40.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_50.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_10.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_20.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_30.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_40.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_50.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/call_10.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/call_20.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/call_30.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/call_40.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/call_50.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/expression_10.hpp [2:4]
- boost/phoenix/core/detail/cpp03/preprocessed/expression_20.hpp [2:4]
- boost/phoenix/core/detail/cpp03/preprocessed/expression_30.hpp [2:4]
- boost/phoenix/core/detail/cpp03/preprocessed/expression_40.hpp [2:4]
- boost/phoenix/core/detail/cpp03/preprocessed/expression_50.hpp [2:4]
- boost/phoenix/core/domain.hpp [2:3]
- boost/phoenix/core/environment.hpp [2:3]
- boost/phoenix/core/function_equal.hpp [2:3]
- boost/phoenix/core/is_actor.hpp [2:2]
- boost/phoenix/core/is_nullary.hpp [2:4]
- boost/phoenix/core/is_value.hpp [2:3]
- boost/phoenix/core/meta_grammar.hpp [2:4]
- boost/phoenix/core/nothing.hpp [2:2]
- boost/phoenix/core/terminal.hpp [2:3]
- boost/phoenix/core/terminal_fwd.hpp [2:3]
- boost/phoenix/core/visit_each.hpp [2:3]
- boost/phoenix/function/adapt_callable.hpp [2:3]
- boost/phoenix/function/adapt_function.hpp [2:4]
- boost/phoenix/function/detail/cpp03/function_operator.hpp [21:22]
- boost/phoenix/function/detail/cpp03/preprocessed/function_operator_10.hpp [2:3]
- boost/phoenix/function/detail/cpp03/preprocessed/function_operator_20.hpp [2:3]
- boost/phoenix/function/detail/cpp03/preprocessed/function_operator_30.hpp [2:3]
- boost/phoenix/function/detail/cpp03/preprocessed/function_operator_40.hpp [2:3]
- boost/phoenix/function/detail/cpp03/preprocessed/function_operator_50.hpp [2:3]
- boost/phoenix/fusion.hpp [2:3]
- boost/phoenix/fusion/at.hpp [2:4]
- boost/phoenix/object/detail/cpp03/construct.hpp [21:22]
- boost/phoenix/object/detail/cpp03/construct_eval.hpp [23:24]
- boost/phoenix/object/detail/cpp03/new.hpp [21:22]
- boost/phoenix/object/detail/cpp03/new_eval.hpp [23:24]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_10.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_20.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_30.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_40.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_50.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_10.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_20.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_30.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_40.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_50.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/new_10.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/new_20.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/new_30.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/new_40.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/new_50.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/new_eval_10.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/new_eval_20.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/new_eval_30.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/new_eval_40.hpp [2:3]
- boost/phoenix/object/detail/cpp03/preprocessed/new_eval_50.hpp [2:3]
- boost/phoenix/operator.hpp [2:3]
- boost/phoenix/operator/arithmetic.hpp [2:3]
- boost/phoenix/operator/bitwise.hpp [2:3]
- boost/phoenix/operator/comparison.hpp [2:3]
- boost/phoenix/operator/detail/cpp03/mem_fun_ptr_eval.hpp [15:17]
- boost/phoenix/operator/detail/cpp03/mem_fun_ptr_eval_result_of.hpp [15:17]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_10.hpp [2:4]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_20.hpp [2:4]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_30.hpp [2:4]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_40.hpp [2:4]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_50.hpp [2:4]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_10.hpp [2:4]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_20.hpp [2:4]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_30.hpp [2:4]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_40.hpp [2:4]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_50.hpp [2:4]
- boost/phoenix/operator/detail/define_operator.hpp [2:3]
- boost/phoenix/operator/logical.hpp [2:3]
- boost/phoenix/operator/member.hpp [2:4]
- boost/phoenix/operator/self.hpp [2:3]
- boost/phoenix/phoenix.hpp [2:3]
- boost/phoenix/scope.hpp [2:3]
- boost/phoenix/scope/detail/cpp03/dynamic.hpp [25:26]
- boost/phoenix/scope/detail/cpp03/local_gen.hpp [3:4]
- boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_10.hpp [2:3]
- boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_20.hpp [2:3]
- boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_30.hpp [2:3]
- boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_40.hpp [2:3]
- boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_50.hpp [2:3]
- boost/phoenix/scope/local_variable.hpp [2:3]
- boost/phoenix/scope/scoped_environment.hpp [2:3]
- boost/phoenix/statement/detail/catch_push_back.hpp [20:21]
- boost/phoenix/statement/detail/preprocessed/catch_push_back_10.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/catch_push_back_20.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/catch_push_back_30.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/catch_push_back_40.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/catch_push_back_50.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/switch_10.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/switch_20.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/switch_30.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/switch_40.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/switch_50.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/try_catch_eval_10.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/try_catch_eval_20.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/try_catch_eval_30.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/try_catch_eval_40.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/try_catch_eval_50.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/try_catch_expression_10.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/try_catch_expression_20.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/try_catch_expression_30.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/try_catch_expression_40.hpp [2:3]
- boost/phoenix/statement/detail/preprocessed/try_catch_expression_50.hpp [2:3]
- boost/phoenix/statement/detail/switch.hpp [25:26]
- boost/phoenix/statement/detail/try_catch_eval.hpp [25:26]
- boost/phoenix/statement/detail/try_catch_expression.hpp [25:26]
- boost/phoenix/statement/throw.hpp [2:4]
- boost/phoenix/statement/try_catch.hpp [2:4]
- boost/phoenix/support/preprocessed/vector_10.hpp [2:3]
- boost/phoenix/support/preprocessed/vector_20.hpp [2:3]
- boost/phoenix/support/preprocessed/vector_30.hpp [2:3]
- boost/phoenix/support/preprocessed/vector_40.hpp [2:3]
- boost/phoenix/support/preprocessed/vector_50.hpp [2:3]
- boost/phoenix/support/vector.hpp [41:42]
- boost/phoenix/version.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5ecdbaa136da002e57f3b5ba003bd0db
-BELONGS ya.make
- License text:
- // Copyright (c) 2006 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/bind/storage.hpp [15:15]
- boost/is_placeholder.hpp [13:13]
- boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp [12:14]
- boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp [11:14]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5eec39aa7ddea86ba623e74f4988e8e5
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic.hpp [2:14]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5f5f9caa49264cbb4cb51ab4b0070946
-BELONGS libs/filesystem/ya.make ya.make
- License text:
- // Copyright Beman Dawes 2010
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/detail/lightweight_main.hpp [3:3]
- boost/filesystem.hpp [3:3]
- boost/io/detail/quoted_manip.hpp [3:3]
- libs/filesystem/src/unique_path.cpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5f6f0ebf2d6180caac56d446585150fe
-BELONGS ya.make
- License text:
- // Copyright (c) 2015 Artyom Beilis (Tonkikh)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/locale/generic_codecvt.hpp [2:2]
- boost/locale/utf8_codecvt.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5f72997ebb041396dd9f2cc35590f0f9
-BELONGS ya.make
- License text:
- // Copyright (c) 2001-2009, Hartmut Kaiser
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/support/multi_pass.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5f7ced6a8ef3d72db1620ce05ee6cd6f
-BELONGS ya.make
- License text:
- * Copyright (c) 2009, Marco Guazzone
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/ublas/operation/begin.hpp [8:8]
- boost/numeric/ublas/operation/end.hpp [8:8]
- boost/numeric/ublas/operation/num_columns.hpp [8:8]
- boost/numeric/ublas/tags.hpp [8:8]
- boost/numeric/ublas/traits/const_iterator_type.hpp [8:8]
- boost/numeric/ublas/traits/iterator_type.hpp [8:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5fd35c96fa4f3ab0cfc60d94c0130fc4
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/adaptor/replaced.hpp at line 6, boost/range/adaptor/replaced_if.hpp at line 6, boost/range/adaptor/strided.hpp at line 6, boost/range/adaptors.hpp at line 6, boost/range/algorithm_ext.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/range/adaptor/replaced.hpp [3:5]
- boost/range/adaptor/replaced_if.hpp [3:5]
- boost/range/adaptor/strided.hpp [3:5]
- boost/range/adaptors.hpp [3:6]
- boost/range/algorithm_ext.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 60255b91bbc9fe1a1a0ae1cc9a978c65
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/bernoulli.hpp [3:8]
- boost/math/special_functions/detail/polygamma.hpp [3:8]
- boost/math/special_functions/detail/unchecked_bernoulli.hpp [3:8]
- boost/math/special_functions/polygamma.hpp [3:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 604fdc25ecaa79236312492568566c5e
-BELONGS ya.make
- License text:
- Copyright (c) 2006 Eric Niebler
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/sequence/intrinsic/segments.hpp [2:2]
- boost/fusion/support/is_segmented.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6093d3f4550b993594511a12e942373f
-BELONGS ya.make
- License text:
- // Copyright (C) 2006, 2009 Marcin Kalicinski
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/property_tree/detail/rapidxml.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 60a2739fa0b10a8912542f3a422b8446
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/tuple/rem.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/preprocessor/tuple/rem.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 60ad17f1b7ecee6a5e812669a248e2dc
-BELONGS ya.make
- License text:
- Copyright 2009-2011 Karsten Ahnert
- Copyright 2009-2011 Mario Mulansky
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/external/compute/compute_algebra.hpp [9:10]
- boost/numeric/odeint/external/compute/compute_operations.hpp [9:10]
- boost/numeric/odeint/external/compute/compute_resize.hpp [9:10]
- boost/numeric/odeint/external/vexcl/vexcl_copy.hpp [9:10]
- boost/numeric/odeint/external/vexcl/vexcl_same_instance.hpp [9:10]
- boost/numeric/odeint/iterator/integrate/detail/integrate_adaptive.hpp [9:10]
- boost/numeric/odeint/iterator/integrate/integrate.hpp [9:10]
- boost/numeric/odeint/iterator/integrate/integrate_adaptive.hpp [9:10]
- boost/numeric/odeint/iterator/integrate/integrate_const.hpp [10:11]
- boost/numeric/odeint/iterator/integrate/integrate_n_steps.hpp [9:10]
- boost/numeric/odeint/iterator/integrate/integrate_times.hpp [9:10]
- boost/numeric/odeint/iterator/integrate/null_observer.hpp [9:10]
- boost/numeric/odeint/iterator/integrate/observer_collection.hpp [9:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL 60aec362c10b154ca39b021c11f74a08
-BELONGS ya.make
- License text:
- // Copyright (C) 2014 Glen Joseph Fernandes
- // glenfe at live dot com
- // Copyright (C) 2014 Agustin Berge
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/core/ref.hpp [21:23]
- boost/detail/dynamic_bitset.hpp [6:7]
- boost/dynamic_bitset/dynamic_bitset.hpp [7:9]
-
-KEEP COPYRIGHT_SERVICE_LABEL 60cb7957f86db726c6c6c70fc4644460
-BELONGS ya.make
- License text:
- // (c) Copyright John Maddock 2003
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/abi/borland_prefix.hpp [1:3]
- boost/config/abi/borland_suffix.hpp [1:3]
- boost/config/abi/msvc_prefix.hpp [1:3]
- boost/config/abi/msvc_suffix.hpp [1:3]
- boost/config/abi_prefix.hpp [3:3]
- boost/config/abi_suffix.hpp [3:3]
- boost/config/auto_link.hpp [1:3]
- boost/config/requires_threads.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 60cfc447fcf79c1140be2190dc383f19
-BELONGS ya.make
- License text:
- // Copyright Beman Dawes 2006, 2007
- // Copyright Christoper Kohlhoff 2007
- // Copyright Peter Dimov 2017, 2018
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/system/error_code.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 60d8a4925c8e8905f9ecaa4f2fe5a782
-BELONGS ya.make
- License text:
- Copyright (c) 2008-2011: Joachim Faulhaber
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/icl/type_traits/succ_pred.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 60ddb105cb6f365c4198d8c97b2115e4
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/intel.hpp [1:10]
- boost/config/detail/select_compiler_config.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6130b1094fc9360db3fcfb20d798534e
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2015 Kohei Takahashi
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/algorithm/iteration/accumulate.hpp [2:3]
- boost/fusion/algorithm/iteration/accumulate_fwd.hpp [2:3]
- boost/fusion/algorithm/iteration/detail/fold.hpp [2:5]
- boost/fusion/algorithm/iteration/fold.hpp [2:5]
- boost/fusion/algorithm/iteration/iter_fold.hpp [2:4]
- boost/fusion/algorithm/iteration/reverse_fold.hpp [2:4]
- boost/fusion/algorithm/iteration/reverse_iter_fold.hpp [2:4]
- boost/fusion/container/deque/detail/convert_impl.hpp [2:4]
- boost/fusion/container/generation/list_tie.hpp [2:2]
- boost/fusion/support/detail/enabler.hpp [2:2]
- boost/fusion/support/detail/index_sequence.hpp [2:3]
- boost/phoenix/core/detail/function_eval.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 620bffa3a234fd5d35b0b35f0ea5d50a
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/cstdlib.hpp at line 5
- License text:
- // Copyright Beman Dawes 2001. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/cstdlib.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 623d2c4f1105092ce876a2b974e60b3a
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/format.hpp at line 7, boost/format/alt_sstream.hpp at line 7, boost/format/alt_sstream_impl.hpp at line 7, boost/format/detail/compat_workarounds.hpp at line 7, boost/format/detail/config_macros.hpp at line 10, boost/format/detail/msvc_disambiguater.hpp at line 8, boost/format/detail/unset_macros.hpp at line 7, boost/format/detail/workarounds_gcc-2_95.hpp at line 7, boost/format/detail/workarounds_stlport.hpp at line 7, boost/format/exceptions.hpp at line 7, boost/format/feed_args.hpp at line 8, boost/format/format_class.hpp at line 7, boost/format/format_fwd.hpp at line 7, boost/format/format_implementation.hpp at line 7, boost/format/free_funcs.hpp at line 7, boost/format/group.hpp at line 8, boost/format/internals.hpp at line 8, boost/format/internals_fwd.hpp at line 7, boost/format/parsing.hpp at line 8
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/format.hpp [5:7]
- boost/format/alt_sstream.hpp [5:7]
- boost/format/alt_sstream_impl.hpp [5:7]
- boost/format/detail/compat_workarounds.hpp [5:7]
- boost/format/detail/config_macros.hpp [8:10]
- boost/format/detail/msvc_disambiguater.hpp [6:8]
- boost/format/detail/unset_macros.hpp [5:7]
- boost/format/detail/workarounds_gcc-2_95.hpp [5:7]
- boost/format/detail/workarounds_stlport.hpp [5:7]
- boost/format/exceptions.hpp [5:5]
- boost/format/feed_args.hpp [6:8]
- boost/format/format_class.hpp [5:7]
- boost/format/format_fwd.hpp [5:7]
- boost/format/format_implementation.hpp [5:7]
- boost/format/free_funcs.hpp [5:7]
- boost/format/group.hpp [6:8]
- boost/format/internals.hpp [6:8]
- boost/format/internals_fwd.hpp [5:7]
- boost/format/parsing.hpp [6:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6256fe9595065a7f6ee40e467ac1f448
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/detail/is_function_ptr_tester.hpp at line 5, boost/type_traits/detail/is_mem_fun_pointer_impl.hpp at line 5, boost/type_traits/detail/is_mem_fun_pointer_tester.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_traits/detail/is_function_ptr_tester.hpp [2:5]
- boost/type_traits/detail/is_mem_fun_pointer_impl.hpp [2:5]
- boost/type_traits/detail/is_mem_fun_pointer_tester.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 626904b1a20ac363e1bb99d9bae924e6
-BELONGS ya.make
- License text:
- // (C) Copyright Beman Dawes 1999.
- // (C) Copyright Jens Mauer 2001
- // (C) Copyright John Maddock 2001
- // Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/comeau.hpp [1:8]
- boost/config/compiler/greenhills.hpp [1:3]
- boost/config/compiler/kai.hpp [1:5]
- boost/config/compiler/metrowerks.hpp [1:8]
- boost/config/compiler/sunpro_cc.hpp [1:7]
- boost/config/platform/beos.hpp [1:3]
- boost/config/stdlib/libstdcpp3.hpp [1:4]
- boost/config/stdlib/msl.hpp [1:4]
- boost/config/user.hpp [3:5]
- boost/cstdint.hpp [3:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 626c8f8e9db5e6888c779655f4dcb00f
-BELONGS ya.make
- License text:
- // Copyright (c) 2001-2005 Peter Dimov
- // Copyright (c) 2006 Michael van der Westhuizen
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/detail/atomic_count_solaris.hpp [8:9]
- boost/smart_ptr/detail/atomic_count_win32.hpp [13:13]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6272251471f1be73e9132a985503d2af
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/statechart/detail/reaction_dispatcher.hpp at line 6
- License text:
- // Copyright 2008 Andreas Huber Doenni
- // Distributed under the Boost Software License, Version 1.0. (See accompany-
- // ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/statechart/detail/reaction_dispatcher.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 630429e3af05c2404197d1a7b98bf2e6
-BELONGS ya.make
- License text:
- // Copyright 2014 Renato Tegon Forti, Antony Polukhin.
- // Copyright 2015-2017 Antony Polukhin.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/dll/detail/aggressive_ptr_cast.hpp [1:2]
- boost/dll/runtime_symbol_info.hpp [1:2]
- boost/dll/shared_library.hpp [1:2]
- boost/stacktrace/detail/void_ptr_cast.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 634f5b2f48befd4ad6b83568ae03e21c
-BELONGS ya.make
- License text:
- // Copyright 2000 John Maddock (john@johnmaddock.co.uk)
- // Copyright 2002 Aleksey Gurtovoy (agurtovoy@meta-comm.com)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_traits/detail/is_function_ptr_helper.hpp [2:3]
- boost/type_traits/is_function.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6372fa2fa3d2b6fd37659a53404e040d
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/comeau.hpp [1:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 63849ec1bbdcc3c10fe8276e89517bbf
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/uuid/detail/config.hpp at line 4, boost/uuid/detail/uuid_x86.ipp at line 4
- License text:
- * Copyright Andrey Semashev 2013.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/uuid/detail/config.hpp [2:4]
- boost/uuid/detail/uuid_x86.ipp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 63cd6a98b4cad3093701dc43bdbb5bd4
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/smart_ptr/shared_ptr.hpp at line 9, boost/interprocess/smart_ptr/weak_ptr.hpp at line 9
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/interprocess/smart_ptr/shared_ptr.hpp [5:9]
- boost/interprocess/smart_ptr/weak_ptr.hpp [5:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 640307e8b2a0f7bd8fedb1ecb22227e5
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/wave/util/flex_string.hpp at line 7
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/wave/util/flex_string.hpp [5:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 640761179b5b64afa0c721e69a6b8275
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/centroid.hpp [3:6]
- boost/geometry/algorithms/correct.hpp [3:6]
- boost/geometry/algorithms/detail/equals/collect_vectors.hpp [3:6]
- boost/geometry/algorithms/detail/overlay/get_turns.hpp [3:4]
- boost/geometry/io/wkt/write.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6467921276eb670bf75f471586581d8f
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/integer.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/integer.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6475e648e705f129c481426fb1e23aae
-BELONGS ya.make
- License text:
- // Copyright 2005 Daniel Wallin.
- // Copyright 2005 Joel de Guzman.
- // Copyright 2005 Dan Marsden.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/phoenix/stl/algorithm/detail/begin.hpp [1:3]
- boost/phoenix/stl/algorithm/detail/decay_array.hpp [1:2]
- boost/phoenix/stl/algorithm/detail/end.hpp [1:3]
- boost/phoenix/stl/algorithm/detail/has_equal_range.hpp [1:2]
- boost/phoenix/stl/algorithm/detail/has_find.hpp [2:4]
- boost/phoenix/stl/algorithm/detail/has_lower_bound.hpp [1:2]
- boost/phoenix/stl/algorithm/detail/has_remove.hpp [1:2]
- boost/phoenix/stl/algorithm/detail/has_remove_if.hpp [1:2]
- boost/phoenix/stl/algorithm/detail/has_reverse.hpp [1:2]
- boost/phoenix/stl/algorithm/detail/has_sort.hpp [1:2]
- boost/phoenix/stl/algorithm/detail/has_unique.hpp [1:2]
- boost/phoenix/stl/algorithm/detail/has_upper_bound.hpp [1:2]
- boost/phoenix/stl/algorithm/detail/is_std_hash_map.hpp [1:2]
- boost/phoenix/stl/algorithm/detail/is_std_hash_set.hpp [1:2]
- boost/phoenix/stl/algorithm/detail/is_std_list.hpp [1:2]
- boost/phoenix/stl/algorithm/detail/is_std_map.hpp [1:2]
- boost/phoenix/stl/algorithm/detail/is_std_set.hpp [1:2]
- boost/phoenix/stl/algorithm/detail/is_unordered_set_or_map.hpp [2:4]
- boost/phoenix/stl/algorithm/iteration.hpp [1:3]
- boost/phoenix/stl/algorithm/querying.hpp [1:5]
- boost/phoenix/stl/algorithm/transformation.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 648961efadbfcbb7a3c3529046ecf3b8
-BELONGS ya.make
- License text:
- Copyright 2009-2012 Karsten Ahnert
- Copyright 2009-2012 Mario Mulansky
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/algebra/multi_array_algebra.hpp [9:10]
- boost/numeric/odeint/external/blaze/blaze_algebra_dispatcher.hpp [9:10]
- boost/numeric/odeint/external/blaze/blaze_resize.hpp [9:10]
- boost/numeric/odeint/external/eigen/eigen.hpp [9:10]
- boost/numeric/odeint/external/eigen/eigen_algebra_dispatcher.hpp [9:10]
- boost/numeric/odeint/iterator/impl/adaptive_iterator_impl.hpp [9:10]
- boost/numeric/odeint/iterator/integrate/detail/integrate_const.hpp [9:10]
- boost/numeric/odeint/iterator/integrate/detail/integrate_n_steps.hpp [9:10]
- boost/numeric/odeint/iterator/integrate/detail/integrate_times.hpp [9:10]
- boost/numeric/odeint/stepper/velocity_verlet.hpp [9:10]
- boost/numeric/odeint/util/multi_array_adaption.hpp [9:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL 648f3551deff5504ae253422933dad8a
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/call_traits.hpp at line 3, boost/compressed_pair.hpp at line 3, boost/detail/call_traits.hpp at line 3, boost/detail/compressed_pair.hpp at line 3, boost/detail/ob_compressed_pair.hpp at line 3, boost/type_traits/add_pointer.hpp at line 4, boost/type_traits/add_reference.hpp at line 4, boost/type_traits/arithmetic_traits.hpp at line 3, boost/type_traits/broken_compiler_spec.hpp at line 4, boost/type_traits/config.hpp at line 4, boost/type_traits/detail/config.hpp at line 4, boost/type_traits/has_nothrow_assign.hpp at line 4, boost/type_traits/has_nothrow_constructor.hpp at line 4, boost/type_traits/has_nothrow_copy.hpp at line 4, boost/type_traits/has_nothrow_destructor.hpp at line 4, boost/type_traits/has_trivial_assign.hpp at line 4, boost/type_traits/has_trivial_constructor.hpp at line 4, boost/type_traits/has_trivial_copy.hpp at line 4, boost/type_traits/has_trivial_destructor.hpp at line 4, boost/type_traits/has_trivial_move_assign.hpp at line 4, boost/type_traits/has_trivial_move_constructor.hpp at line 4, boost/type_traits/intrinsics.hpp at line 3, boost/type_traits/is_arithmetic.hpp at line 4, boost/type_traits/is_compound.hpp at line 4, boost/type_traits/is_empty.hpp at line 4, boost/type_traits/is_float.hpp at line 3, boost/type_traits/is_fundamental.hpp at line 4, boost/type_traits/is_integral.hpp at line 4, boost/type_traits/is_nothrow_move_assignable.hpp at line 4, boost/type_traits/is_nothrow_move_constructible.hpp at line 4, boost/type_traits/is_object.hpp at line 4, boost/type_traits/is_pod.hpp at line 4, boost/type_traits/is_scalar.hpp at line 4, boost/type_traits/is_stateless.hpp at line 4, boost/type_traits/is_void.hpp at line 4, boost/type_traits/object_traits.hpp at line 3, boost/type_traits/remove_bounds.hpp at line 4, boost/type_traits/remove_pointer.hpp at line 4, boost/type_traits/remove_reference.hpp at line 4, boost/type_traits/transform_traits.hpp at line 3
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/call_traits.hpp [1:3]
- boost/compressed_pair.hpp [1:3]
- boost/detail/call_traits.hpp [1:3]
- boost/detail/compressed_pair.hpp [1:3]
- boost/detail/ob_compressed_pair.hpp [1:3]
- boost/type_traits/add_pointer.hpp [2:4]
- boost/type_traits/add_reference.hpp [2:4]
- boost/type_traits/arithmetic_traits.hpp [1:3]
- boost/type_traits/broken_compiler_spec.hpp [2:4]
- boost/type_traits/config.hpp [2:4]
- boost/type_traits/detail/config.hpp [2:4]
- boost/type_traits/has_nothrow_assign.hpp [2:4]
- boost/type_traits/has_nothrow_constructor.hpp [2:4]
- boost/type_traits/has_nothrow_copy.hpp [2:4]
- boost/type_traits/has_nothrow_destructor.hpp [2:4]
- boost/type_traits/has_trivial_assign.hpp [2:4]
- boost/type_traits/has_trivial_constructor.hpp [2:4]
- boost/type_traits/has_trivial_copy.hpp [2:4]
- boost/type_traits/has_trivial_destructor.hpp [2:4]
- boost/type_traits/has_trivial_move_assign.hpp [2:6]
- boost/type_traits/has_trivial_move_constructor.hpp [2:6]
- boost/type_traits/intrinsics.hpp [1:3]
- boost/type_traits/is_arithmetic.hpp [2:4]
- boost/type_traits/is_compound.hpp [2:4]
- boost/type_traits/is_empty.hpp [2:4]
- boost/type_traits/is_float.hpp [1:3]
- boost/type_traits/is_fundamental.hpp [2:4]
- boost/type_traits/is_integral.hpp [2:4]
- boost/type_traits/is_nothrow_move_assignable.hpp [2:6]
- boost/type_traits/is_nothrow_move_constructible.hpp [2:6]
- boost/type_traits/is_object.hpp [2:4]
- boost/type_traits/is_pod.hpp [2:4]
- boost/type_traits/is_scalar.hpp [2:4]
- boost/type_traits/is_stateless.hpp [2:4]
- boost/type_traits/is_void.hpp [2:4]
- boost/type_traits/object_traits.hpp [1:3]
- boost/type_traits/remove_bounds.hpp [2:4]
- boost/type_traits/remove_pointer.hpp [2:4]
- boost/type_traits/remove_reference.hpp [2:4]
- boost/type_traits/transform_traits.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 64dbd3aca2afc873461283ccfd002322
-BELONGS ya.make
- License text:
- // Copyright (c) 2003-2017 Christopher M. Kohlhoff (chris at kohlhoff dot com)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/asio/experimental.hpp [5:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6518675878f6c96ced7667e2a4ed728a
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/os/haiku.h at line 5
- License text:
- Copyright Jessica Hamilton 2014
- Copyright Rene Rivera 2014-2015
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/predef/os/haiku.h [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6543e5a77421b1baaaf79a9a214494d8
-BELONGS libs/filesystem/ya.make
- License text:
- // Copyright 2002-2009, 2014 Beman Dawes
- // Copyright 2001 Dietmar Kuehl
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- libs/filesystem/src/operations.cpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6550e9b117fac9abf61bf5c60a55c7ac
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/msm/active_state_switching_policies.hpp at line 8, boost/msm/back/args.hpp at line 8, boost/msm/back/bind_helpers.hpp at line 8, boost/msm/back/common_types.hpp at line 8, boost/msm/back/copy_policies.hpp at line 8, boost/msm/back/default_compile_policy.hpp at line 8, boost/msm/back/dispatch_table.hpp at line 8, boost/msm/back/favor_compile_time.hpp at line 8, boost/msm/back/history_policies.hpp at line 8, boost/msm/back/metafunctions.hpp at line 8, boost/msm/back/mpl_graph_fsm_check.hpp at line 8, boost/msm/back/no_fsm_check.hpp at line 8, boost/msm/back/queue_container_circular.hpp at line 8, boost/msm/back/queue_container_deque.hpp at line 8, boost/msm/back/state_machine.hpp at line 8, boost/msm/back/tools.hpp at line 8, boost/msm/common.hpp at line 8, boost/msm/event_traits.hpp at line 8, boost/msm/front/common_states.hpp at line 8, boost/msm/front/completion_event.hpp at line 8, boost/msm/front/detail/common_states.hpp at line 8, boost/msm/front/detail/row2_helper.hpp at line 8, boost/msm/front/euml/algorithm.hpp at line 8, boost/msm/front/euml/common.hpp at line 8, boost/msm/front/euml/container.hpp at line 8, boost/msm/front/euml/euml.hpp at line 8, boost/msm/front/euml/euml_typeof.hpp at line 8, boost/msm/front/euml/guard_grammar.hpp at line 8, boost/msm/front/euml/iteration.hpp at line 8, boost/msm/front/euml/operator.hpp at line 8, boost/msm/front/euml/phoenix_placeholders.hpp at line 8, boost/msm/front/euml/querying.hpp at line 8, boost/msm/front/euml/state_grammar.hpp at line 8, boost/msm/front/euml/stl.hpp at line 8, boost/msm/front/euml/stt_grammar.hpp at line 8, boost/msm/front/euml/transformation.hpp at line 8, boost/msm/front/functor_row.hpp at line 8, boost/msm/front/internal_row.hpp at line 8, boost/msm/front/row2.hpp at line 8, boost/msm/front/state_machine_def.hpp at line 8, boost/msm/front/states.hpp at line 8, boost/msm/msm_grammar.hpp at line 8, boost/msm/proto_config.hpp at line 8, boost/msm/row_tags.hpp at line 8
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/msm/active_state_switching_policies.hpp [5:8]
- boost/msm/back/args.hpp [5:8]
- boost/msm/back/bind_helpers.hpp [5:8]
- boost/msm/back/common_types.hpp [5:8]
- boost/msm/back/copy_policies.hpp [5:8]
- boost/msm/back/default_compile_policy.hpp [5:8]
- boost/msm/back/dispatch_table.hpp [5:8]
- boost/msm/back/favor_compile_time.hpp [5:8]
- boost/msm/back/history_policies.hpp [5:8]
- boost/msm/back/metafunctions.hpp [5:8]
- boost/msm/back/mpl_graph_fsm_check.hpp [5:8]
- boost/msm/back/no_fsm_check.hpp [5:8]
- boost/msm/back/queue_container_circular.hpp [5:8]
- boost/msm/back/queue_container_deque.hpp [5:8]
- boost/msm/back/state_machine.hpp [5:8]
- boost/msm/back/tools.hpp [5:8]
- boost/msm/common.hpp [5:8]
- boost/msm/event_traits.hpp [5:8]
- boost/msm/front/common_states.hpp [5:8]
- boost/msm/front/completion_event.hpp [5:8]
- boost/msm/front/detail/common_states.hpp [5:8]
- boost/msm/front/detail/row2_helper.hpp [5:8]
- boost/msm/front/euml/algorithm.hpp [5:8]
- boost/msm/front/euml/common.hpp [5:8]
- boost/msm/front/euml/container.hpp [5:8]
- boost/msm/front/euml/euml.hpp [5:8]
- boost/msm/front/euml/euml_typeof.hpp [5:8]
- boost/msm/front/euml/guard_grammar.hpp [5:8]
- boost/msm/front/euml/iteration.hpp [5:8]
- boost/msm/front/euml/operator.hpp [5:8]
- boost/msm/front/euml/phoenix_placeholders.hpp [5:8]
- boost/msm/front/euml/querying.hpp [5:8]
- boost/msm/front/euml/state_grammar.hpp [5:8]
- boost/msm/front/euml/stl.hpp [5:8]
- boost/msm/front/euml/stt_grammar.hpp [5:8]
- boost/msm/front/euml/transformation.hpp [5:8]
- boost/msm/front/functor_row.hpp [5:8]
- boost/msm/front/internal_row.hpp [5:8]
- boost/msm/front/row2.hpp [5:8]
- boost/msm/front/state_machine_def.hpp [5:8]
- boost/msm/front/states.hpp [5:8]
- boost/msm/msm_grammar.hpp [5:8]
- boost/msm/proto_config.hpp [5:8]
- boost/msm/row_tags.hpp [5:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6558581a775b2f48ad290a72ccc6c5bd
-BELONGS ya.make
- License text:
- // Copyright (c) 2008, 2009 Peter Dimov
- // Copyright (c) 2018 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/memory_order.hpp [5:6]
- boost/smart_ptr/detail/sp_has_sync.hpp [13:13]
-
-KEEP COPYRIGHT_SERVICE_LABEL 655bf8e1c786a52443545b43e86b4361
-BELONGS libs/serialization/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/archive/detail/archive_serializer_map.hpp at line 15, boost/archive/detail/check.hpp at line 20, libs/serialization/src/archive_exception.cpp at line 6, libs/serialization/src/xml_archive_exception.cpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/archive/detail/archive_serializer_map.hpp [13:15]
- boost/archive/detail/check.hpp [18:20]
- libs/serialization/src/archive_exception.cpp [4:6]
- libs/serialization/src/xml_archive_exception.cpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6587dc636363fab50bd61228a566457c
-BELONGS ya.make
- License text:
- // (C) Copyright Dave Abrahams and Daniel Walker 1999-2003.
- // Copyright (c) Andrey Semashev 2017
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/next_prior.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 65ba4d43cd2a4710f9a61abf485eb0b5
-BELONGS ya.make
- License text:
- Copyright (c) 2005-2012 Joel de Guzman
- Copyright (c) 2005-2007 Dan Marsden
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/container/deque/deque_fwd.hpp [2:3]
- boost/fusion/container/deque/detail/cpp03/deque_fwd.hpp [2:3]
- boost/phoenix/statement/throw.hpp [2:4]
- boost/phoenix/statement/try_catch.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 65d8e0cce41880c02ab6a95962a28436
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/unordered/unordered_map.hpp at line 5, boost/unordered/unordered_set.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/unordered/unordered_map.hpp [2:5]
- boost/unordered/unordered_set.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6625aadf2da3a6853799ab2f038409bc
-BELONGS ya.make
- License text:
- // Copyright Beman Dawes 2003, 2006
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/system/config.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 662fd5f8fcb9215250b9b25297287943
-BELONGS libs/chrono/ya.make ya.make
- License text:
- // Copyright 2009-2011 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/chrono/chrono.hpp [3:3]
- boost/chrono/config.hpp [3:5]
- boost/chrono/duration.hpp [3:5]
- boost/chrono/process_cpu_clocks.hpp [3:4]
- boost/chrono/system_clocks.hpp [3:5]
- boost/chrono/thread_clock.hpp [3:3]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/stopwatch_scoped.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 667567db549e2384dc40b95c3243b949
-BELONGS ya.make
- License text:
- // Copyright Aleksey Gurtovoy 2002-2006
- // Copyright David Abrahams 2002-2003
- // Copyright Daniel Walker 2007
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/has_xxx.hpp [5:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 66c7426a103b2c0266f29cccdf5f2272
-BELONGS libs/thread/ya.make ya.make
- License text:
- // Copyright (C) 2002-2003
- // David Moore, William E. Kempf
- // Copyright (C) 2007-8 Anthony Williams
- // (C) Copyright 2013 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/barrier.hpp [1:4]
- boost/thread/completion_latch.hpp [4:4]
- boost/thread/detail/counter.hpp [4:4]
- boost/thread/latch.hpp [4:4]
- boost/thread/ostream_buffer.hpp [1:3]
- boost/thread/pthread/once_atomic.hpp [6:7]
- boost/thread/thread_only.hpp [6:6]
- libs/thread/src/pthread/once_atomic.cpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 66f5b918eb37787d1fd47384e1d4d24d
-BELONGS ya.make
- License text:
- // (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
- // Howard Hinnant and John Maddock 2000.
- // (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 2001
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_traits/is_const.hpp [2:4]
- boost/type_traits/is_lvalue_reference.hpp [2:4]
- boost/type_traits/is_member_pointer.hpp [2:4]
- boost/type_traits/is_pointer.hpp [2:4]
- boost/type_traits/is_same.hpp [2:4]
- boost/type_traits/is_volatile.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 670e9fea8b553fd6cefa4f9a295c8a0a
-BELONGS ya.make
- License text:
- // Copyright 2012 The Trustees of Indiana University.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/detail/is_distributed_selector.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 671c483a6632cd05f47c5ebf10502cb2
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/metaparse/util/is_digit.hpp at line 6, boost/metaparse/v1/accept_when.hpp at line 6, boost/metaparse/v1/alphanum.hpp at line 6, boost/metaparse/v1/always.hpp at line 6, boost/metaparse/v1/build_parser.hpp at line 6, boost/metaparse/v1/cpp98/first_of.hpp at line 6, boost/metaparse/v1/cpp98/last_of.hpp at line 6, boost/metaparse/v1/digit.hpp at line 6, boost/metaparse/v1/digit_val.hpp at line 6, boost/metaparse/v1/fail.hpp at line 6, boost/metaparse/v1/if_.hpp at line 6, boost/metaparse/v1/iterate.hpp at line 6, boost/metaparse/v1/keyword.hpp at line 6, boost/metaparse/v1/letter.hpp at line 6, boost/metaparse/v1/lit.hpp at line 6, boost/metaparse/v1/lit_c.hpp at line 6, boost/metaparse/v1/middle_of.hpp at line 6, boost/metaparse/v1/one_of.hpp at line 6, boost/metaparse/v1/repeated.hpp at line 6, boost/metaparse/v1/repeated1.hpp at line 6, boost/metaparse/v1/return_.hpp at line 6, boost/metaparse/v1/sequence.hpp at line 6, boost/metaparse/v1/space.hpp at line 6, boost/metaparse/v1/spaces.hpp at line 6, boost/metaparse/v1/token.hpp at line 6, boost/metaparse/v1/transform.hpp at line 6, boost/metaparse/v1/util/digit_to_int.hpp at line 6, boost/metaparse/v1/util/in_range.hpp at line 6, boost/metaparse/v1/util/is_digit.hpp at line 6, boost/metaparse/v1/util/is_lcase_letter.hpp at line 6, boost/metaparse/v1/util/is_letter.hpp at line 6, boost/metaparse/v1/util/is_ucase_letter.hpp at line 6, boost/metaparse/v1/util/is_whitespace.hpp at line 6
- License text:
- // Copyright Abel Sinkovics (abel@sinkovics.hu) 2009 - 2010.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/metaparse/util/is_digit.hpp [4:6]
- boost/metaparse/v1/accept_when.hpp [4:6]
- boost/metaparse/v1/alphanum.hpp [4:6]
- boost/metaparse/v1/always.hpp [4:6]
- boost/metaparse/v1/build_parser.hpp [4:6]
- boost/metaparse/v1/cpp98/first_of.hpp [4:6]
- boost/metaparse/v1/cpp98/last_of.hpp [4:6]
- boost/metaparse/v1/digit.hpp [4:6]
- boost/metaparse/v1/digit_val.hpp [4:6]
- boost/metaparse/v1/fail.hpp [4:6]
- boost/metaparse/v1/if_.hpp [4:6]
- boost/metaparse/v1/iterate.hpp [4:6]
- boost/metaparse/v1/keyword.hpp [4:6]
- boost/metaparse/v1/letter.hpp [4:6]
- boost/metaparse/v1/lit.hpp [4:6]
- boost/metaparse/v1/lit_c.hpp [4:6]
- boost/metaparse/v1/middle_of.hpp [4:6]
- boost/metaparse/v1/one_of.hpp [4:6]
- boost/metaparse/v1/repeated.hpp [4:6]
- boost/metaparse/v1/repeated1.hpp [4:6]
- boost/metaparse/v1/return_.hpp [4:6]
- boost/metaparse/v1/sequence.hpp [4:6]
- boost/metaparse/v1/space.hpp [4:6]
- boost/metaparse/v1/spaces.hpp [4:6]
- boost/metaparse/v1/token.hpp [4:6]
- boost/metaparse/v1/transform.hpp [4:6]
- boost/metaparse/v1/util/digit_to_int.hpp [4:6]
- boost/metaparse/v1/util/in_range.hpp [4:6]
- boost/metaparse/v1/util/is_digit.hpp [4:6]
- boost/metaparse/v1/util/is_lcase_letter.hpp [4:6]
- boost/metaparse/v1/util/is_letter.hpp [4:6]
- boost/metaparse/v1/util/is_ucase_letter.hpp [4:6]
- boost/metaparse/v1/util/is_whitespace.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 679941027a28a2d38cbeba8fbb2a6c1b
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic.hpp [2:14]
- boost/spirit/home/classic/core.hpp [2:8]
- boost/spirit/home/classic/utility.hpp [2:9]
- boost/spirit/home/classic/utility/loops.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6805e61dcffc0a494c7cc43bd2a4bf37
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/pthread/mutex.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/pthread/mutex.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6833867255c2b176df5af1500538ea6d
-BELONGS ya.make
- License text:
- // Copyright (C) 2003-2008 Matthias Christian Schabel
- // Copyright (C) 2007-2008 Steven Watanabe
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/units/base_dimension.hpp [4:5]
- boost/units/base_unit.hpp [4:5]
- boost/units/base_units/angle/arcminute.hpp [4:5]
- boost/units/base_units/angle/arcsecond.hpp [4:5]
- boost/units/base_units/angle/degree.hpp [4:5]
- boost/units/base_units/angle/gradian.hpp [4:5]
- boost/units/base_units/angle/radian.hpp [4:5]
- boost/units/base_units/angle/revolution.hpp [4:5]
- boost/units/base_units/angle/steradian.hpp [4:5]
- boost/units/base_units/astronomical/astronomical_unit.hpp [4:5]
- boost/units/base_units/astronomical/light_day.hpp [4:5]
- boost/units/base_units/astronomical/light_hour.hpp [4:5]
- boost/units/base_units/astronomical/light_minute.hpp [4:5]
- boost/units/base_units/astronomical/light_second.hpp [4:5]
- boost/units/base_units/astronomical/light_year.hpp [4:5]
- boost/units/base_units/astronomical/parsec.hpp [4:5]
- boost/units/base_units/cgs/biot.hpp [4:5]
- boost/units/base_units/cgs/centimeter.hpp [4:5]
- boost/units/base_units/cgs/gram.hpp [4:5]
- boost/units/base_units/imperial/conversions.hpp [4:5]
- boost/units/base_units/imperial/drachm.hpp [4:5]
- boost/units/base_units/imperial/fluid_ounce.hpp [4:5]
- boost/units/base_units/imperial/foot.hpp [4:5]
- boost/units/base_units/imperial/furlong.hpp [4:5]
- boost/units/base_units/imperial/gallon.hpp [4:5]
- boost/units/base_units/imperial/gill.hpp [4:5]
- boost/units/base_units/imperial/grain.hpp [4:5]
- boost/units/base_units/imperial/hundredweight.hpp [4:5]
- boost/units/base_units/imperial/inch.hpp [4:5]
- boost/units/base_units/imperial/league.hpp [4:5]
- boost/units/base_units/imperial/mile.hpp [4:5]
- boost/units/base_units/imperial/ounce.hpp [4:5]
- boost/units/base_units/imperial/pint.hpp [4:5]
- boost/units/base_units/imperial/pound.hpp [4:5]
- boost/units/base_units/imperial/quart.hpp [4:5]
- boost/units/base_units/imperial/quarter.hpp [4:5]
- boost/units/base_units/imperial/stone.hpp [4:5]
- boost/units/base_units/imperial/thou.hpp [4:5]
- boost/units/base_units/imperial/ton.hpp [4:5]
- boost/units/base_units/imperial/yard.hpp [4:5]
- boost/units/base_units/metric/angstrom.hpp [4:5]
- boost/units/base_units/metric/are.hpp [4:5]
- boost/units/base_units/metric/atmosphere.hpp [4:5]
- boost/units/base_units/metric/bar.hpp [4:5]
- boost/units/base_units/metric/barn.hpp [4:5]
- boost/units/base_units/metric/day.hpp [4:5]
- boost/units/base_units/metric/fermi.hpp [4:5]
- boost/units/base_units/metric/hectare.hpp [4:5]
- boost/units/base_units/metric/hour.hpp [4:5]
- boost/units/base_units/metric/knot.hpp [4:5]
- boost/units/base_units/metric/liter.hpp [4:5]
- boost/units/base_units/metric/micron.hpp [4:5]
- boost/units/base_units/metric/minute.hpp [4:5]
- boost/units/base_units/metric/mmHg.hpp [4:5]
- boost/units/base_units/metric/nautical_mile.hpp [4:5]
- boost/units/base_units/metric/ton.hpp [4:5]
- boost/units/base_units/metric/torr.hpp [4:5]
- boost/units/base_units/metric/year.hpp [4:5]
- boost/units/base_units/si/ampere.hpp [4:5]
- boost/units/base_units/si/candela.hpp [4:5]
- boost/units/base_units/si/kelvin.hpp [4:5]
- boost/units/base_units/si/kilogram.hpp [4:5]
- boost/units/base_units/si/meter.hpp [4:5]
- boost/units/base_units/si/mole.hpp [4:5]
- boost/units/base_units/si/second.hpp [4:5]
- boost/units/base_units/temperature/celsius.hpp [4:5]
- boost/units/base_units/temperature/conversions.hpp [4:5]
- boost/units/base_units/temperature/fahrenheit.hpp [4:5]
- boost/units/base_units/us/cup.hpp [4:5]
- boost/units/base_units/us/dram.hpp [4:5]
- boost/units/base_units/us/fluid_dram.hpp [4:5]
- boost/units/base_units/us/fluid_ounce.hpp [4:5]
- boost/units/base_units/us/foot.hpp [4:5]
- boost/units/base_units/us/gallon.hpp [4:5]
- boost/units/base_units/us/gill.hpp [4:5]
- boost/units/base_units/us/grain.hpp [4:5]
- boost/units/base_units/us/hundredweight.hpp [4:5]
- boost/units/base_units/us/inch.hpp [4:5]
- boost/units/base_units/us/mil.hpp [4:5]
- boost/units/base_units/us/mile.hpp [4:5]
- boost/units/base_units/us/minim.hpp [4:5]
- boost/units/base_units/us/ounce.hpp [4:5]
- boost/units/base_units/us/pint.hpp [4:5]
- boost/units/base_units/us/pound.hpp [4:5]
- boost/units/base_units/us/quart.hpp [4:5]
- boost/units/base_units/us/tablespoon.hpp [4:5]
- boost/units/base_units/us/teaspoon.hpp [4:5]
- boost/units/base_units/us/ton.hpp [4:5]
- boost/units/base_units/us/yard.hpp [4:5]
- boost/units/cmath.hpp [4:5]
- boost/units/conversion.hpp [4:5]
- boost/units/detail/conversion_impl.hpp [4:5]
- boost/units/detail/dimensionless_unit.hpp [4:5]
- boost/units/detail/ordinal.hpp [4:5]
- boost/units/detail/prevent_redefinition.hpp [4:5]
- boost/units/detail/static_rational_power.hpp [4:5]
- boost/units/detail/unscale.hpp [4:5]
- boost/units/dim.hpp [4:5]
- boost/units/dimension.hpp [4:5]
- boost/units/dimensionless_type.hpp [4:5]
- boost/units/heterogeneous_system.hpp [4:5]
- boost/units/limits.hpp [4:5]
- boost/units/make_scaled_unit.hpp [4:5]
- boost/units/quantity.hpp [4:5]
- boost/units/reduce_unit.hpp [4:5]
- boost/units/scale.hpp [4:5]
- boost/units/systems/si/prefixes.hpp [4:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 685e870aed6edd687e76f59c1af549a1
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/process.hpp [1:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 686307e753ad6e1d636dbc622eedb324
-BELONGS ya.make
- License text:
- // Copyright (C) 2006 Tiago de Paula Peixoto <tiago@forked.de>
- // Copyright (C) 2004 The Trustees of Indiana University.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/graphml.hpp [1:2]
- boost/mpi/collectives/all_reduce.hpp [1:2]
- boost/mpi/collectives/reduce.hpp [1:2]
- boost/mpi/collectives/scan.hpp [1:2]
- boost/mpi/operations.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 686b40c0117a62300977756a32a3ec15
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/rational.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 688f8a68a65d165207c6dbdd79b6f042
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/stdlib/libcomo.hpp [1:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 68a12c1a2cce9c33a510ed0375d9cd55
-BELONGS ya.make
- License text:
- // Copyright (c) 2001-2011 Hartmut Kaiser
- // Copyright (c) 2001-2011 Joel de Guzman
- // Copyright (c) 2009 Carl Barron
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/lex/tokenize_and_parse_attr.hpp [1:3]
- boost/spirit/home/qi/parse_attr.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 68a6c764f9bdcb306b95b72ac086a1c4
-BELONGS ya.make
- License text:
- Copyright 2010-2012 Karsten Ahnert
- Copyright 2010 Mario Mulansky
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/algebra/detail/macros.hpp [9:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL 68d9bc6dadace636c31f8614febd2470
-BELONGS ya.make
- License text:
- // Copyright (C) 2000, 2001 Stephen Cleary
- // Copyright (C) 2010 Paul A. Bristow added Doxygen comments.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/pool/pool_alloc.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 68da47e054a847ce9a50d45c42357ad0
-BELONGS ya.make
- License text:
- // Copyright 2015, 2017 Peter Dimov.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mp11/integer_sequence.hpp [4:4]
- boost/mp11/tuple.hpp [4:4]
- boost/mp11/utility.hpp [4:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 68e8a0b89a68eb7d87379b934978ff17
-BELONGS ya.make
- License text:
- Copyright 2010-2013 Karsten Ahnert
- Copyright 2010-2013 Mario Mulansky
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/algebra/range_algebra.hpp [10:11]
- boost/numeric/odeint/stepper/base/explicit_error_stepper_base.hpp [9:11]
- boost/numeric/odeint/stepper/base/explicit_error_stepper_fsal_base.hpp [9:11]
- boost/numeric/odeint/stepper/base/explicit_stepper_base.hpp [9:11]
- boost/numeric/odeint/stepper/controlled_runge_kutta.hpp [8:10]
- boost/numeric/odeint/stepper/euler.hpp [10:11]
- boost/numeric/odeint/stepper/runge_kutta4_classic.hpp [9:11]
- boost/numeric/odeint/stepper/runge_kutta_cash_karp54_classic.hpp [9:11]
- boost/numeric/odeint/stepper/runge_kutta_dopri5.hpp [9:11]
-
-KEEP COPYRIGHT_SERVICE_LABEL 68edd4a9e831eca12e9c421dc603f4c6
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/platform/win32.hpp [1:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 69401e7364b54c2f9974884bf9f0569d
-BELONGS ya.make
- License text:
- // Copyright (c) 2010 Alfredo Correa
- // Copyright (c) 2010-2012 Barend Gehrels, Amsterdam, the Netherlands.
- // Copyright (c) 2016 Norbert Wenzel
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/geometries/adapted/std_array.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6979af021e1c110fc46cf74cf2f06442
-BELONGS ya.make
- License text:
- // Copyright 2003 - 2011 LASMEA UMR 6602 CNRS/Univ. Clermont II
- // Copyright 2009 - 2011 LRI UMR 8623 CNRS/Univ Paris Sud XI
- // Copyright 2011 Eric Niebler
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/proto/detail/remove_typename.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 697cb0d596751ecb1c3f13236f0f3bc9
-BELONGS ya.make
- License text:
- Copyright (c) 2011 Steven Watanabe
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/phoenix/stl/cmath.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 698c24e237249952c4045083d4e9f956
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic.hpp [2:14]
- boost/spirit/include/classic_spirit.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 69913f770ab644c0c626ffe368b41c06
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/pending/fenced_priority_queue.hpp at line 3
- License text:
- // (C) Copyright Jeremiah Willcock 2004
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/pending/fenced_priority_queue.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 699d2877d9168a8f70b9f8c47f949f88
-BELONGS ya.make
- License text:
- // Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
- // Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
- // Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/append.hpp [3:5]
- boost/geometry/algorithms/comparable_distance.hpp [3:5]
- boost/geometry/algorithms/detail/comparable_distance/implementation.hpp [3:5]
- boost/geometry/algorithms/detail/comparable_distance/interface.hpp [3:5]
- boost/geometry/algorithms/detail/counting.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/areal_areal.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/implementation.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/interface.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/linear_areal.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/linear_linear.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/linear_segment_or_box.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/segment_box.hpp [3:6]
- boost/geometry/algorithms/detail/distance/backward_compatibility.hpp [3:6]
- boost/geometry/algorithms/detail/distance/default_strategies.hpp [3:6]
- boost/geometry/algorithms/detail/distance/implementation.hpp [3:6]
- boost/geometry/algorithms/detail/distance/interface.hpp [3:7]
- boost/geometry/algorithms/detail/distance/point_to_geometry.hpp [3:6]
- boost/geometry/algorithms/detail/equals/collect_vectors.hpp [3:6]
- boost/geometry/algorithms/detail/equals/point_point.hpp [3:6]
- boost/geometry/algorithms/detail/intersects/implementation.hpp [3:5]
- boost/geometry/algorithms/detail/intersects/interface.hpp [3:5]
- boost/geometry/algorithms/detail/overlay/copy_segments.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/follow.hpp [3:4]
- boost/geometry/algorithms/detail/overlay/select_rings.hpp [3:4]
- boost/geometry/algorithms/disjoint.hpp [3:6]
- boost/geometry/algorithms/dispatch/disjoint.hpp [3:6]
- boost/geometry/algorithms/dispatch/distance.hpp [3:6]
- boost/geometry/algorithms/distance.hpp [3:6]
- boost/geometry/algorithms/for_each.hpp [3:6]
- boost/geometry/algorithms/intersects.hpp [3:5]
- boost/geometry/algorithms/length.hpp [3:5]
- boost/geometry/algorithms/num_geometries.hpp [3:5]
- boost/geometry/algorithms/num_interior_rings.hpp [3:5]
- boost/geometry/algorithms/num_points.hpp [3:6]
- boost/geometry/algorithms/perimeter.hpp [3:5]
- boost/geometry/algorithms/union.hpp [3:3]
- boost/geometry/core/cs.hpp [3:5]
- boost/geometry/geometries/point.hpp [3:6]
- boost/geometry/multi/algorithms/append.hpp [3:5]
- boost/geometry/multi/algorithms/distance.hpp [3:5]
- boost/geometry/multi/algorithms/num_points.hpp [3:5]
- boost/geometry/policies/disjoint_interrupt_policy.hpp [3:6]
- boost/geometry/policies/relate/intersection_ratios.hpp [3:3]
- boost/geometry/strategies/cartesian/disjoint_segment_box.hpp [3:6]
- boost/geometry/strategies/cartesian/intersection.hpp [3:4]
- boost/geometry/strategies/concepts/distance_concept.hpp [3:5]
- boost/geometry/strategies/default_comparable_distance_result.hpp [3:5]
- boost/geometry/strategies/default_distance_result.hpp [3:5]
- boost/geometry/strategies/default_length_result.hpp [3:5]
- boost/geometry/strategies/distance.hpp [3:5]
- boost/geometry/strategies/spherical/distance_cross_track.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 699df4854f5487b4d64fc61aef362aed
-BELONGS ya.make
- License text:
- // Copyright (C) 2001 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
- // Copyright (C) 2001 Gary Powell (gary.powell@sierra.com)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/tuple/tuple_comparison.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 69bcb4be33af6a68ee5b2402e22c8a3b
-BELONGS libs/thread/ya.make
- License text:
- // Copyright (C) 2007 Anthony Williams
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- libs/thread/src/pthread/once.cpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 69c01e55c80a63b913179de5dfb66471
-BELONGS ya.make
- License text:
- Copyright (c) 2008-2010: Joachim Faulhaber
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/icl/detail/interval_map_algo.hpp [2:2]
- boost/icl/detail/interval_set_algo.hpp [2:2]
- boost/icl/type_traits/absorbs_identities.hpp [2:2]
- boost/icl/type_traits/unit_element.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6a46fd178395575735278797c48f3d2b
-BELONGS ya.make
- License text:
- // Copyright (C) 2010-2011 Tim Blechmann
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/heap/policies.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6a5bb33534c65cbbd8a5451177723c69
-BELONGS ya.make
- License text:
- Copyright (c) 2007-2011 Hartmut Kaiser
- Copyright (c) Christopher Diggins 2005
- Copyright (c) Pablo Aguilar 2005
- Copyright (c) Kevlin Henney 2001
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/support/detail/hold_any.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6a6c9a6124e28d8085f33940fe7bdb01
-BELONGS libs/log/ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: libs/log/src/timestamp.cpp at line 4
- License text:
- * Copyright Andrey Semashev 2007 - 2018.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- libs/log/src/timestamp.cpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6a88160c047fa8e02c3278fc7d84cae4
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/has_trivial_move_assign.hpp at line 6, boost/type_traits/has_trivial_move_constructor.hpp at line 6, boost/type_traits/is_nothrow_move_assignable.hpp at line 6, boost/type_traits/is_nothrow_move_constructible.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_traits/has_trivial_move_assign.hpp [2:6]
- boost/type_traits/has_trivial_move_constructor.hpp [2:6]
- boost/type_traits/is_nothrow_move_assignable.hpp [2:6]
- boost/type_traits/is_nothrow_move_constructible.hpp [2:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6a8a7f9c1dc28ae01bbb471e161b9528
-BELONGS ya.make
- License text:
- // Copyright (c) 2002, 2003 Peter Dimov and Multi Media Ltd.
- // Copyright (c) 2008 Frank Mori Hess
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/signals2/detail/lwm_nop.hpp [4:5]
- boost/signals2/detail/lwm_pthreads.hpp [4:5]
- boost/signals2/detail/lwm_win32_cs.hpp [4:6]
- boost/signals2/mutex.hpp [4:5]
- boost/smart_ptr/owner_less.hpp [7:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6a98d8fc5a884a9147e3cd6981b9cba9
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2009 Joel de Guzman
- Copyright (c) 2009-2010 Hartmut Kaiser
- Copyright (c) 2010-2011 Christopher Schmidt
- Copyright (c) 2013-2014 Damien Buhl
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/adapted/adt/adapt_adt.hpp [2:5]
- boost/fusion/adapted/adt/adapt_adt_named.hpp [2:4]
- boost/fusion/adapted/adt/adapt_assoc_adt.hpp [2:5]
- boost/fusion/adapted/adt/detail/adapt_base.hpp [2:4]
- boost/fusion/adapted/adt/detail/extension.hpp [2:4]
- boost/fusion/adapted/struct/detail/adapt_base.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6aa5a368ddf82ac8765157c83c7cbccb
-BELONGS ya.make
- License text:
- // Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
- // Copyright 2004-2005 Peter Dimov
- // Copyright 2007-2012 Ion Gaztanaga
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/interprocess/smart_ptr/detail/sp_counted_base_atomic.hpp [12:14]
- boost/interprocess/smart_ptr/detail/sp_counted_impl.hpp [16:18]
- boost/smart_ptr/detail/shared_count.hpp [13:14]
- boost/smart_ptr/detail/sp_counted_base_aix.hpp [8:10]
- boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp [13:14]
- boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp [13:15]
- boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp [13:14]
- boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp [13:14]
- boost/smart_ptr/detail/sp_counted_base_nt.hpp [13:14]
- boost/smart_ptr/detail/sp_counted_base_pt.hpp [13:14]
- boost/smart_ptr/detail/sp_counted_base_solaris.hpp [8:10]
- boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp [8:11]
- boost/smart_ptr/detail/sp_counted_base_w32.hpp [13:14]
- boost/smart_ptr/detail/sp_counted_impl.hpp [13:14]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6b1ab40ae46ff90ccb7c47e8c55973bc
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/buffer_concepts.hpp at line 3, boost/graph/stoer_wagner_min_cut.hpp at line 3
- License text:
- // Copyright Daniel Trebbien 2010.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or the copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/buffer_concepts.hpp [1:3]
- boost/graph/stoer_wagner_min_cut.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6b3739203926d66bd02ccd13e7de0e21
-BELONGS ya.make
- License text:
- // (C) Copyright Stephen Cleary 2000.
- // (C) Copyright Ion Gaztanaga 2007-2013.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/container/detail/math_functions.hpp [3:4]
- boost/container/detail/mutex.hpp [3:4]
- boost/interprocess/detail/math_functions.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6b6f79fc5e7fa6cea0ca8005d59ea5f4
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/numeric/detail/function1.hpp at line 3, boost/accumulators/numeric/detail/function2.hpp at line 3, boost/accumulators/numeric/detail/function3.hpp at line 3, boost/accumulators/numeric/detail/function4.hpp at line 3, boost/accumulators/numeric/detail/function_n.hpp at line 3, boost/accumulators/numeric/detail/pod_singleton.hpp at line 3, boost/archive/detail/register_archive.hpp at line 3, boost/concept/assert.hpp at line 3, boost/concept/detail/borland.hpp at line 3, boost/concept/detail/concept_def.hpp at line 3, boost/concept/detail/concept_undef.hpp at line 3, boost/concept/detail/general.hpp at line 3, boost/concept/detail/has_constraints.hpp at line 3, boost/concept/detail/msvc.hpp at line 3, boost/concept/requires.hpp at line 3, boost/concept/usage.hpp at line 3, boost/concept_check/borland.hpp at line 3, boost/concept_check/general.hpp at line 3, boost/concept_check/has_constraints.hpp at line 3, boost/concept_check/msvc.hpp at line 3, boost/parameter/aux_/parenthesized_type.hpp at line 3, boost/serialization/singleton.hpp at line 9
- License text:
- // Copyright David Abrahams 2006. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/accumulators/numeric/detail/function1.hpp [1:3]
- boost/accumulators/numeric/detail/function2.hpp [1:3]
- boost/accumulators/numeric/detail/function3.hpp [1:3]
- boost/accumulators/numeric/detail/function4.hpp [1:3]
- boost/accumulators/numeric/detail/function_n.hpp [1:3]
- boost/accumulators/numeric/detail/pod_singleton.hpp [1:3]
- boost/archive/detail/register_archive.hpp [1:3]
- boost/concept/assert.hpp [1:3]
- boost/concept/detail/borland.hpp [1:3]
- boost/concept/detail/concept_def.hpp [1:3]
- boost/concept/detail/concept_undef.hpp [1:3]
- boost/concept/detail/general.hpp [1:3]
- boost/concept/detail/has_constraints.hpp [1:3]
- boost/concept/detail/msvc.hpp [1:3]
- boost/concept/requires.hpp [1:3]
- boost/concept/usage.hpp [1:3]
- boost/concept_check/borland.hpp [1:3]
- boost/concept_check/general.hpp [1:3]
- boost/concept_check/has_constraints.hpp [1:3]
- boost/concept_check/msvc.hpp [1:3]
- boost/parameter/aux_/parenthesized_type.hpp [1:3]
- boost/serialization/singleton.hpp [7:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6ba84e6b22158f449d69d0b66297024e
-BELONGS libs/regex/ya.make ya.make
- License text:
- * Copyright (c) 2004
- * John Maddock
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/regex/concepts.hpp [3:4]
- boost/regex/icu.hpp [3:4]
- boost/regex/mfc.hpp [3:4]
- boost/regex/pending/object_cache.hpp [3:4]
- boost/regex/pending/static_mutex.hpp [3:4]
- boost/regex/pending/unicode_iterator.hpp [3:4]
- boost/regex/v4/basic_regex_creator.hpp [3:4]
- boost/regex/v4/basic_regex_parser.hpp [3:4]
- boost/regex/v4/c_regex_traits.hpp [3:4]
- boost/regex/v4/cpp_regex_traits.hpp [3:4]
- boost/regex/v4/protected_call.hpp [3:4]
- boost/regex/v4/regex_traits_defaults.hpp [3:4]
- boost/regex/v4/w32_regex_traits.hpp [3:4]
- libs/regex/src/c_regex_traits.cpp [3:4]
- libs/regex/src/cpp_regex_traits.cpp [3:4]
- libs/regex/src/icu.cpp [3:4]
- libs/regex/src/regex_raw_buffer.cpp [3:4]
- libs/regex/src/regex_traits_defaults.cpp [3:4]
- libs/regex/src/static_mutex.cpp [3:4]
- libs/regex/src/w32_regex_traits.cpp [3:4]
- libs/regex/src/wc_regex_traits.cpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6bb32fef4ebd189bd262c0096d6414ff
-BELONGS ya.make
- License text:
- // (C) Copyright John Maddock 2006, 2015
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/relative_difference.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6bc33a98f148ae61cdfa08dee31cb8a6
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/uuid/detail/uuid_generic.ipp at line 4
- License text:
- * Copyright Andy Tompkins 2006.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/uuid/detail/uuid_generic.ipp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6c09a0db5e085f0080699290089398e9
-BELONGS ya.make
- License text:
- // Copyright Aleksey Gurtovoy 2000-2003
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/sizeof.hpp [5:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6c84f67bc267aa5792c9ce1502ce694e
-BELONGS ya.make
- License text:
- // (C) Copyright Howard Hinnant 2007-2010. Distributed under the Boost
- // Software License, Version 1.0. (see http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/interprocess/sync/interprocess_sharable_mutex.hpp [4:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6c8d3bbf493a9bc4cb2f612592da5d97
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/buffer/turn_in_original_visitor.hpp [3:3]
- boost/geometry/algorithms/detail/get_max_size.hpp [3:6]
- boost/geometry/policies/robustness/robust_type.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6cb8699606d013c0845cb870893ac3e8
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/process/args.hpp [1:6]
- boost/process/async_pipe.hpp [1:5]
- boost/process/async_system.hpp [1:6]
- boost/process/child.hpp [1:6]
- boost/process/cmd.hpp [1:6]
- boost/process/detail/child_decl.hpp [1:6]
- boost/process/detail/config.hpp [1:6]
- boost/process/detail/execute_impl.hpp [1:6]
- boost/process/detail/handler_base.hpp [1:6]
- boost/process/detail/posix/async_in.hpp [1:5]
- boost/process/detail/posix/async_out.hpp [1:5]
- boost/process/detail/posix/basic_pipe.hpp [1:5]
- boost/process/detail/posix/child_handle.hpp [1:5]
- boost/process/detail/posix/close_in.hpp [1:5]
- boost/process/detail/posix/close_out.hpp [1:5]
- boost/process/detail/posix/executor.hpp [1:5]
- boost/process/detail/posix/fd.hpp [1:5]
- boost/process/detail/posix/file_in.hpp [1:5]
- boost/process/detail/posix/file_out.hpp [1:6]
- boost/process/detail/posix/null_in.hpp [1:5]
- boost/process/detail/posix/null_out.hpp [1:6]
- boost/process/detail/posix/pipe_in.hpp [1:5]
- boost/process/detail/posix/pipe_out.hpp [1:6]
- boost/process/detail/posix/search_path.hpp [1:5]
- boost/process/detail/posix/shell_path.hpp [1:5]
- boost/process/detail/posix/signal.hpp [1:6]
- boost/process/detail/posix/start_dir.hpp [1:5]
- boost/process/detail/posix/terminate.hpp [1:5]
- boost/process/detail/posix/wait_for_exit.hpp [1:5]
- boost/process/detail/posix/wait_group.hpp [1:5]
- boost/process/detail/throw_on_error.hpp [1:6]
- boost/process/detail/windows/async_in.hpp [1:5]
- boost/process/detail/windows/async_out.hpp [1:5]
- boost/process/detail/windows/child_handle.hpp [1:5]
- boost/process/detail/windows/close_in.hpp [1:5]
- boost/process/detail/windows/close_out.hpp [1:5]
- boost/process/detail/windows/executor.hpp [1:6]
- boost/process/detail/windows/file_in.hpp [1:5]
- boost/process/detail/windows/file_out.hpp [1:5]
- boost/process/detail/windows/null_in.hpp [1:5]
- boost/process/detail/windows/null_out.hpp [1:5]
- boost/process/detail/windows/pipe_in.hpp [1:5]
- boost/process/detail/windows/pipe_out.hpp [1:6]
- boost/process/detail/windows/search_path.hpp [1:5]
- boost/process/detail/windows/shell_path.hpp [1:5]
- boost/process/detail/windows/show_window.hpp [1:6]
- boost/process/detail/windows/start_dir.hpp [1:5]
- boost/process/detail/windows/terminate.hpp [1:5]
- boost/process/detail/windows/wait_for_exit.hpp [1:6]
- boost/process/error.hpp [1:6]
- boost/process/exe.hpp [1:6]
- boost/process/pipe.hpp [1:5]
- boost/process/search_path.hpp [1:5]
- boost/process/shell.hpp [1:6]
- boost/process/spawn.hpp [1:6]
- boost/process/start_dir.hpp [1:5]
- boost/process/system.hpp [1:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6ce14f1c23b7f081182f398a3770f41b
-BELONGS ya.make
- License text:
- Copyright (c) 2006 Daniel Wallin
- Copyright (c) 2005 Dan Marsden
- Copyright (c) 2007 Joel de Guzman
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/phoenix/stl.hpp [2:4]
- boost/phoenix/stl/algorithm.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6cebab0728f1dcaff40c8a96c7f12d0f
-BELONGS ya.make
- License text:
- // Copyright Aleksey Gurtovoy 2001-2004
- // Copyright David Abrahams 2001-2002
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/accumulate.hpp [5:6]
- boost/mpl/always.hpp [5:5]
- boost/mpl/arg.hpp [9:10]
- boost/mpl/arg_fwd.hpp [5:6]
- boost/mpl/aux_/arg_typedef.hpp [5:5]
- boost/mpl/aux_/arity.hpp [5:5]
- boost/mpl/aux_/arity_spec.hpp [5:5]
- boost/mpl/aux_/basic_bind.hpp [5:6]
- boost/mpl/aux_/config/dtp.hpp [5:5]
- boost/mpl/aux_/config/eti.hpp [5:5]
- boost/mpl/aux_/config/nttp.hpp [5:5]
- boost/mpl/aux_/fold_op.hpp [5:5]
- boost/mpl/aux_/fold_pred.hpp [5:5]
- boost/mpl/aux_/full_lambda.hpp [9:9]
- boost/mpl/aux_/is_msvc_eti_arg.hpp [5:5]
- boost/mpl/aux_/iter_fold_if_impl.hpp [5:6]
- boost/mpl/aux_/lambda_arity_param.hpp [5:5]
- boost/mpl/aux_/lambda_support.hpp [5:5]
- boost/mpl/aux_/msvc_eti_base.hpp [5:5]
- boost/mpl/aux_/msvc_type.hpp [5:5]
- boost/mpl/aux_/na.hpp [5:5]
- boost/mpl/aux_/na_assert.hpp [5:5]
- boost/mpl/aux_/na_fwd.hpp [5:5]
- boost/mpl/aux_/na_spec.hpp [5:5]
- boost/mpl/aux_/nttp_decl.hpp [5:5]
- boost/mpl/aux_/preprocessed/bcc/arg.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc/basic_bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc/bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc/full_lambda.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc/inherit.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc/iter_fold_if_impl.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc/placeholders.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc/template_arity.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/arg.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc551/basic_bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc551/bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc551/full_lambda.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/inherit.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc551/iter_fold_if_impl.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc551/placeholders.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc551/template_arity.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/arg.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc_pre590/basic_bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc_pre590/bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc_pre590/full_lambda.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/inherit.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_if_impl.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc_pre590/placeholders.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc_pre590/template_arity.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/arg.hpp [2:3]
- boost/mpl/aux_/preprocessed/dmc/basic_bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/dmc/bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/dmc/full_lambda.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/inherit.hpp [2:2]
- boost/mpl/aux_/preprocessed/dmc/iter_fold_if_impl.hpp [2:3]
- boost/mpl/aux_/preprocessed/dmc/placeholders.hpp [2:3]
- boost/mpl/aux_/preprocessed/dmc/template_arity.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/arg.hpp [2:3]
- boost/mpl/aux_/preprocessed/gcc/basic_bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/gcc/bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/gcc/full_lambda.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/inherit.hpp [2:2]
- boost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp [2:3]
- boost/mpl/aux_/preprocessed/gcc/placeholders.hpp [2:3]
- boost/mpl/aux_/preprocessed/gcc/template_arity.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/arg.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc60/basic_bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc60/bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc60/full_lambda.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/inherit.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc60/iter_fold_if_impl.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc60/placeholders.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc60/template_arity.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/arg.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc70/basic_bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc70/bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc70/full_lambda.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/inherit.hpp [2:2]
- boost/mpl/aux_/preprocessed/msvc70/iter_fold_if_impl.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc70/placeholders.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc70/template_arity.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/arg.hpp [2:3]
- boost/mpl/aux_/preprocessed/mwcw/basic_bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/mwcw/bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/mwcw/full_lambda.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/inherit.hpp [2:2]
- boost/mpl/aux_/preprocessed/mwcw/iter_fold_if_impl.hpp [2:3]
- boost/mpl/aux_/preprocessed/mwcw/placeholders.hpp [2:3]
- boost/mpl/aux_/preprocessed/mwcw/template_arity.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/arg.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ctps/basic_bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ctps/bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ctps/full_lambda.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/inherit.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ctps/iter_fold_if_impl.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ctps/placeholders.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ctps/template_arity.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/arg.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ttp/basic_bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ttp/bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ttp/full_lambda.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/inherit.hpp [2:2]
- boost/mpl/aux_/preprocessed/no_ttp/iter_fold_if_impl.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ttp/placeholders.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ttp/template_arity.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/arg.hpp [2:3]
- boost/mpl/aux_/preprocessed/plain/basic_bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/plain/bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/plain/full_lambda.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/inherit.hpp [2:2]
- boost/mpl/aux_/preprocessed/plain/iter_fold_if_impl.hpp [2:3]
- boost/mpl/aux_/preprocessed/plain/placeholders.hpp [2:3]
- boost/mpl/aux_/preprocessed/plain/template_arity.hpp [2:2]
- boost/mpl/aux_/static_cast.hpp [5:5]
- boost/mpl/aux_/template_arity.hpp [9:9]
- boost/mpl/aux_/template_arity_fwd.hpp [5:5]
- boost/mpl/bind.hpp [9:10]
- boost/mpl/empty_base.hpp [5:5]
- boost/mpl/fold.hpp [5:6]
- boost/mpl/inherit.hpp [9:9]
- boost/mpl/inherit_linearly.hpp [5:5]
- boost/mpl/is_placeholder.hpp [5:5]
- boost/mpl/iter_fold.hpp [5:6]
- boost/mpl/iterator_range.hpp [5:5]
- boost/mpl/lambda.hpp [5:5]
- boost/mpl/lambda_fwd.hpp [5:5]
- boost/mpl/lower_bound.hpp [5:5]
- boost/mpl/map/aux_/include_preprocessed.hpp [2:2]
- boost/mpl/pair.hpp [5:5]
- boost/mpl/placeholders.hpp [9:10]
- boost/mpl/reverse_fold.hpp [5:6]
- boost/mpl/reverse_iter_fold.hpp [5:6]
- boost/mpl/upper_bound.hpp [5:5]
- boost/mpl/void.hpp [5:5]
- boost/mpl/void_fwd.hpp [5:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6d0f48a2307249fe584bb5a13388f05b
-BELONGS ya.make
- License text:
- // Copyright 2016, 2017 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/detail/sp_noexcept.hpp [12:12]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6d1d86a114f64cfc33bd34acca8b1a34
-BELONGS ya.make
- License text:
- // Copyright (C) 2000 Gary Powell (powellg@amazon.com)
- // Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/lambda/casts.hpp [3:4]
- boost/lambda/construct.hpp [3:4]
- boost/lambda/core.hpp [3:4]
- boost/lambda/detail/control_constructs_common.hpp [3:4]
- boost/lambda/if.hpp [3:5]
- boost/lambda/loops.hpp [3:5]
- boost/lambda/switch.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6d352fb30bdf4f6229e55027126be38e
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iterator/permutation_iterator.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/iterator/permutation_iterator.hpp [1:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6d63b13de108fa5435475ab01814eafe
-BELONGS ya.make
- License text:
- // Copyright (c) 2008-2009 Ben Hanson
- // Copyright (c) 2008-2011 Hartmut Kaiser
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/lex/lexer/lexertl/generate_static.hpp [1:2]
- boost/spirit/home/lex/lexer/lexertl/generate_static.hpp [890:893]
- boost/spirit/home/support/detail/lexer/generate_cpp.hpp [82:84]
- boost/spirit/home/support/detail/lexer/generate_re2c.hpp [116:118]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6d6738110c1306103103aca941400af9
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/operators.hpp at line 6, boost/operators_v1.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/operators.hpp [3:6]
- boost/operators_v1.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6d897263feaeaee07384a13d45475905
-BELONGS ya.make
- License text:
- // Copyright (c) 2009-2012 Barend Gehrels, Amsterdam, the Netherlands.
- // Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/io/svg/write.hpp [3:4]
- boost/geometry/io/svg/write_svg.hpp [3:4]
- boost/geometry/io/svg/write_svg_multi.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6dcd15b11de2202a28820899dc8fe49d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/flyweight/assoc_container_factory.hpp at line 3, boost/flyweight/flyweight.hpp at line 5, boost/flyweight/flyweight_fwd.hpp at line 3, boost/flyweight/serialize.hpp at line 3
- License text:
- /* Copyright 2006-2015 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/flyweight/assoc_container_factory.hpp [1:3]
- boost/flyweight/flyweight.hpp [3:5]
- boost/flyweight/flyweight_fwd.hpp [1:3]
- boost/flyweight/serialize.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6dd9e96b64547a3a52a8bce6e10ac74d
-BELONGS ya.make
- License text:
- // Copyright (C) 2009, 2016 Tim Blechmann
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/lockfree/detail/prefix.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6ddab30a8c1d7c05633d59e90eea754f
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/limits.hpp at line 5, boost/version.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/limits.hpp [2:5]
- boost/version.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6df2f3044559d6be214598177430d513
-BELONGS ya.make
- License text:
- // Copyright (c) 2012-2014 Barend Gehrels, Amsterdam, the Netherlands.
- // Copyright (c) 2012-2014 Bruno Lalande, Paris, France.
- // Copyright (c) 2012-2014 Mateusz Loskot, London, UK.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/multi/algorithms/disjoint.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6df3b6d6eaafbb2e1471ebd6fbbac607
-BELONGS ya.make
- License text:
- // Copyright (c) 2015-2016 Barend Gehrels, Amsterdam, the Netherlands.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/overlay/traversal_switch_detector.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6e0562785549dce2f5f760d623bb9042
-BELONGS ya.make
- License text:
- Copyright 2010-2012 Mario Mulansky
- Copyright 2010-2012 Karsten Ahnert
- Copyright 2012 Christoph Koke
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/stepper/base/explicit_error_stepper_base.hpp [9:11]
- boost/numeric/odeint/stepper/base/explicit_error_stepper_fsal_base.hpp [9:11]
- boost/numeric/odeint/stepper/base/explicit_stepper_base.hpp [9:11]
- boost/numeric/odeint/stepper/implicit_euler.hpp [9:11]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6e091bbf03d7f6fa9276d2cfcaddde71
-BELONGS ya.make
- License text:
- // (C) Copyright 2007-9 Anthony Williams
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/detail/thread_group.hpp [6:6]
- boost/thread/detail/thread_interruption.hpp [6:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6e0d983d26a329ac59572ff890ab7117
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/test/utils/foreach.hpp at line 4
- License text:
- // (C) Copyright Eric Niebler 2004-2005
- // (C) Copyright Gennadiy Rozental 2001.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/test/utils/foreach.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6e213e7d6c9460c8044e118a6f58e0ce
-BELONGS ya.make
- License text:
- // Copyright Antony Polukhin, 2016-2017.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/stacktrace.hpp [1:1]
- boost/stacktrace/detail/addr2line_impls.hpp [1:1]
- boost/stacktrace/detail/collect_msvc.ipp [1:1]
- boost/stacktrace/detail/collect_noop.ipp [1:1]
- boost/stacktrace/detail/collect_unwind.ipp [1:1]
- boost/stacktrace/detail/frame_decl.hpp [1:1]
- boost/stacktrace/detail/frame_msvc.ipp [1:1]
- boost/stacktrace/detail/frame_noop.ipp [1:1]
- boost/stacktrace/detail/frame_unwind.ipp [1:1]
- boost/stacktrace/detail/libbacktrace_impls.hpp [1:1]
- boost/stacktrace/detail/location_from_symbol.hpp [1:1]
- boost/stacktrace/detail/pop_options.h [1:1]
- boost/stacktrace/detail/push_options.h [1:1]
- boost/stacktrace/detail/safe_dump_noop.ipp [1:1]
- boost/stacktrace/detail/safe_dump_posix.ipp [1:1]
- boost/stacktrace/detail/to_hex_array.hpp [1:1]
- boost/stacktrace/detail/unwind_base_impls.hpp [1:1]
- boost/stacktrace/frame.hpp [1:1]
- boost/stacktrace/safe_dump_to.hpp [1:1]
- boost/stacktrace/stacktrace.hpp [1:1]
- boost/stacktrace/stacktrace_fwd.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6e5349aeab7a1e7bcb601559040c534c
-BELONGS ya.make
- License text:
- Copyright 2013 Karsten Ahnert
- Copyright 2013 Mario Mulansky
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/algebra/algebra_dispatcher.hpp [9:10]
- boost/numeric/odeint/algebra/detail/extract_value_type.hpp [9:10]
- boost/numeric/odeint/algebra/detail/norm_inf.hpp [9:10]
- boost/numeric/odeint/algebra/fusion_algebra_dispatcher.hpp [9:10]
- boost/numeric/odeint/algebra/norm_result_type.hpp [9:10]
- boost/numeric/odeint/algebra/operations_dispatcher.hpp [9:10]
- boost/numeric/odeint/external/mpi/mpi.hpp [9:11]
- boost/numeric/odeint/external/mpi/mpi_nested_algebra.hpp [9:11]
- boost/numeric/odeint/external/mpi/mpi_state.hpp [9:11]
- boost/numeric/odeint/external/mpi/mpi_vector_state.hpp [9:11]
- boost/numeric/odeint/external/mtl4/mtl4.hpp [9:10]
- boost/numeric/odeint/external/mtl4/mtl4_algebra_dispatcher.hpp [9:10]
- boost/numeric/odeint/external/openmp/openmp.hpp [9:11]
- boost/numeric/odeint/external/openmp/openmp_nested_algebra.hpp [9:11]
- boost/numeric/odeint/external/openmp/openmp_range_algebra.hpp [9:11]
- boost/numeric/odeint/external/openmp/openmp_state.hpp [9:11]
- boost/numeric/odeint/external/thrust/thrust.hpp [9:10]
- boost/numeric/odeint/external/thrust/thrust_algebra_dispatcher.hpp [9:10]
- boost/numeric/odeint/external/vexcl/vexcl.hpp [9:10]
- boost/numeric/odeint/external/vexcl/vexcl_algebra_dispatcher.hpp [9:10]
- boost/numeric/odeint/iterator/const_step_iterator.hpp [10:11]
- boost/numeric/odeint/iterator/const_step_time_iterator.hpp [10:11]
- boost/numeric/odeint/iterator/impl/const_step_iterator_impl.hpp [9:10]
- boost/numeric/odeint/util/n_ary_helper.hpp [7:9]
- boost/numeric/odeint/util/split.hpp [9:11]
- boost/numeric/odeint/util/split_adaptor.hpp [9:11]
- boost/numeric/odeint/util/stepper_traits.hpp [9:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6e810d935436bb503743a496e01e0d74
-BELONGS ya.make
- License text:
- // Copyright (c) 2015 Jakub Szuppe <j.szuppe@gmail.com>
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/compute/algorithm/detail/find_extrema_with_reduce.hpp [2:2]
- boost/compute/algorithm/detail/merge_sort_on_cpu.hpp [2:2]
- boost/compute/algorithm/detail/reduce_by_key.hpp [2:2]
- boost/compute/algorithm/detail/reduce_by_key_with_scan.hpp [2:2]
- boost/compute/algorithm/detail/serial_reduce_by_key.hpp [2:2]
- boost/compute/algorithm/reduce_by_key.hpp [2:2]
- boost/compute/iterator/strided_iterator.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6f1a959bfdc2b4cc37ad209d64c9585b
-BELONGS ya.make
- License text:
- Copyright (c) 2016 Paul Fultz II
- boost/hof.hpp
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/hof.hpp [2:4]
- boost/hof/config.hpp [2:4]
- boost/hof/detail/intrinsics.hpp [2:4]
- boost/hof/detail/noexcept.hpp [2:4]
- boost/hof/detail/recursive_constexpr_depth.hpp [2:4]
- boost/hof/detail/result_type.hpp [2:4]
- boost/hof/detail/unpack_tuple.hpp [2:4]
- boost/hof/detail/using.hpp [2:4]
- boost/hof/function_param_limit.hpp [2:4]
- boost/hof/is_unpackable.hpp [2:4]
- boost/hof/limit.hpp [2:4]
- boost/hof/unpack_sequence.hpp [2:4]
- boost/hof/version.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6f2106d29f8f11f40ccd5ca1f99c446b
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/detail/comp_detected.h at line 4, boost/predef/detail/platform_detected.h at line 4
- License text:
- Copyright Rene Rivera 2014
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/predef/detail/comp_detected.h [2:4]
- boost/predef/detail/platform_detected.h [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6f5226a9270498743ea889158c0201c6
-BELONGS ya.make
- License text:
- @Copyright Barrett Adair 2016-2017
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/callable_traits/detail/config.hpp [2:2]
- boost/callable_traits/detail/core.hpp [3:5]
- boost/callable_traits/detail/default_callable_traits.hpp [2:2]
- boost/callable_traits/detail/polyfills/make_index_sequence.hpp [2:2]
- boost/callable_traits/detail/sfinae_errors.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6f522c25b81fd9005f9f0cdd69d03b25
-BELONGS libs/regex/ya.make ya.make
- License text:
- // Copyright (c) 2011 John Maddock
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/detail/bessel_jy_series.hpp [1:3]
- boost/math/tools/big_constant.hpp [2:4]
- boost/multiprecision/detail/big_lanczos.hpp [2:4]
- libs/regex/src/internals.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6f5d2def13569cd2caeacc3686b4ff6e
-BELONGS ya.make
- License text:
- // Copyright (c) 2011, 2012 Martin Lambers <marlam@marlam.de>
- // The QSC projection was introduced in:
- // [OL76]
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/srs/projections/proj/qsc.hpp [27:29]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6f7c276a012f9ee2246668b32b4af25b
-BELONGS libs/iostreams/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iostreams/device/mapped_file.hpp at line 5, libs/iostreams/src/mapped_file.cpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/iostreams/device/mapped_file.hpp [1:5]
- libs/iostreams/src/mapped_file.cpp [1:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6faaf754e301184e7a07944b24799553
-BELONGS ya.make
- License text:
- // Copyright 2004 The Trustees of Indiana University.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/bc_clustering.hpp [1:1]
- boost/graph/betweenness_centrality.hpp [1:1]
- boost/graph/circle_layout.hpp [1:1]
- boost/graph/distributed/betweenness_centrality.hpp [1:1]
- boost/graph/distributed/breadth_first_search.hpp [1:1]
- boost/graph/gursoy_atun_layout.hpp [1:1]
- boost/graph/kamada_kawai_spring_layout.hpp [1:1]
- boost/graph/leda_graph.hpp [2:6]
- boost/graph/overloading.hpp [1:1]
- boost/graph/parallel/algorithm.hpp [1:1]
- boost/graph/parallel/distribution.hpp [1:1]
- boost/graph/parallel/process_group.hpp [1:1]
- boost/graph/parallel/properties.hpp [1:1]
- boost/graph/random_layout.hpp [1:1]
- boost/graph/sequential_vertex_coloring.hpp [2:4]
- boost/graph/small_world_generator.hpp [1:1]
- boost/graph/vertex_and_edge_range.hpp [1:1]
- boost/mpi/datatype.hpp [1:3]
- boost/pending/relaxed_heap.hpp [1:1]
- boost/property_map/parallel/caching_property_map.hpp [1:1]
- boost/property_map/parallel/process_group.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6fb2610480648ec237cadfaced17b5b9
-BELONGS ya.make
- License text:
- Copyright 2015 Mario Mulansky
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/integrate/check_adapter.hpp [9:9]
- boost/numeric/odeint/integrate/max_step_checker.hpp [9:9]
- boost/numeric/odeint/util/odeint_error.hpp [9:9]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6fcf13fc4e2d35e1d54e73b5b60aca32
-BELONGS ya.make
- License text:
- // This file was modified by Oracle on 2013, 2014.
- // Modifications copyright (c) 2013, 2014, Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/sections/range_by_section.hpp [10:11]
-
-KEEP COPYRIGHT_SERVICE_LABEL 700d924b0a839bc25561f5ca7e969034
-BELONGS ya.make
- License text:
- // Copyright 2002, 2009 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/enable_shared_from_this.hpp [7:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 70510be2c2a58753a110cb44f81353ea
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/process.hpp [1:7]
- boost/process/args.hpp [1:6]
- boost/process/async.hpp [1:1]
- boost/process/async_system.hpp [1:6]
- boost/process/child.hpp [1:6]
- boost/process/cmd.hpp [1:6]
- boost/process/detail/basic_cmd.hpp [1:1]
- boost/process/detail/child_decl.hpp [1:6]
- boost/process/detail/config.hpp [1:6]
- boost/process/detail/execute_impl.hpp [1:6]
- boost/process/detail/handler.hpp [1:1]
- boost/process/detail/handler_base.hpp [1:6]
- boost/process/detail/on_exit.hpp [1:1]
- boost/process/detail/posix/asio_fwd.hpp [1:1]
- boost/process/detail/posix/async_handler.hpp [1:1]
- boost/process/detail/posix/async_pipe.hpp [1:1]
- boost/process/detail/posix/basic_cmd.hpp [1:1]
- boost/process/detail/posix/cmd.hpp [1:1]
- boost/process/detail/posix/compare_handles.hpp [1:1]
- boost/process/detail/posix/env_init.hpp [1:1]
- boost/process/detail/posix/environment.hpp [1:1]
- boost/process/detail/posix/exe.hpp [1:1]
- boost/process/detail/posix/file_descriptor.hpp [1:1]
- boost/process/detail/posix/file_out.hpp [1:6]
- boost/process/detail/posix/group_handle.hpp [1:1]
- boost/process/detail/posix/group_ref.hpp [1:1]
- boost/process/detail/posix/handler.hpp [1:1]
- boost/process/detail/posix/io_context_ref.hpp [1:1]
- boost/process/detail/posix/null_out.hpp [1:6]
- boost/process/detail/posix/on_exit.hpp [1:1]
- boost/process/detail/posix/pipe_out.hpp [1:6]
- boost/process/detail/posix/signal.hpp [1:6]
- boost/process/detail/throw_on_error.hpp [1:6]
- boost/process/detail/traits.hpp [1:1]
- boost/process/detail/traits/async.hpp [1:1]
- boost/process/detail/traits/cmd_or_exe.hpp [1:1]
- boost/process/detail/traits/decl.hpp [1:1]
- boost/process/detail/traits/env.hpp [1:1]
- boost/process/detail/traits/error.hpp [1:1]
- boost/process/detail/traits/group.hpp [1:1]
- boost/process/detail/traits/wchar_t.hpp [1:1]
- boost/process/detail/windows/asio_fwd.hpp [1:1]
- boost/process/detail/windows/async_handler.hpp [1:1]
- boost/process/detail/windows/async_pipe.hpp [1:1]
- boost/process/detail/windows/basic_cmd.hpp [1:1]
- boost/process/detail/windows/basic_pipe.hpp [1:1]
- boost/process/detail/windows/cmd.hpp [1:1]
- boost/process/detail/windows/compare_handles.hpp [1:1]
- boost/process/detail/windows/env_init.hpp [1:1]
- boost/process/detail/windows/environment.hpp [1:1]
- boost/process/detail/windows/executor.hpp [1:6]
- boost/process/detail/windows/file_descriptor.hpp [1:1]
- boost/process/detail/windows/group_handle.hpp [1:1]
- boost/process/detail/windows/group_ref.hpp [1:1]
- boost/process/detail/windows/handler.hpp [1:1]
- boost/process/detail/windows/io_context_ref.hpp [1:1]
- boost/process/detail/windows/job_workaround.hpp [1:1]
- boost/process/detail/windows/locale.hpp [1:2]
- boost/process/detail/windows/on_exit.hpp [1:1]
- boost/process/detail/windows/pipe_out.hpp [1:6]
- boost/process/detail/windows/show_window.hpp [1:6]
- boost/process/detail/windows/wait_for_exit.hpp [1:6]
- boost/process/detail/windows/wait_group.hpp [1:1]
- boost/process/env.hpp [1:1]
- boost/process/environment.hpp [1:1]
- boost/process/error.hpp [1:6]
- boost/process/exception.hpp [1:1]
- boost/process/exe.hpp [1:6]
- boost/process/extend.hpp [1:1]
- boost/process/group.hpp [1:1]
- boost/process/io.hpp [1:1]
- boost/process/locale.hpp [1:4]
- boost/process/posix.hpp [1:1]
- boost/process/shell.hpp [1:6]
- boost/process/spawn.hpp [1:6]
- boost/process/system.hpp [1:6]
- boost/process/windows.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 705c5d090b50e4c47ff6b9307ec838aa
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/smart_ptr/intrusive_ptr.hpp at line 8, boost/interprocess/smart_ptr/scoped_ptr.hpp at line 8
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/interprocess/smart_ptr/intrusive_ptr.hpp [5:8]
- boost/interprocess/smart_ptr/scoped_ptr.hpp [5:9]
-
-KEEP COPYRIGHT_SERVICE_LABEL 70a94800ba84db85ec3ff20c6d23755e
-BELONGS libs/python/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/is_incrementable.hpp at line 3, boost/indirect_reference.hpp at line 7, boost/iterator_adaptors.hpp at line 3, boost/mpl/min_element.hpp at line 7, boost/pointee.hpp at line 7, boost/python/detail/enable_if.hpp at line 3, boost/python/detail/indirect_traits.hpp at line 3, boost/python/detail/is_wrapper.hpp at line 3, boost/python/detail/sfinae.hpp at line 3, boost/python/detail/unwrap_type_id.hpp at line 3, boost/python/detail/unwrap_wrapper.hpp at line 3, boost/python/detail/value_arg.hpp at line 3, boost/python/detail/wrapper_base.hpp at line 3, boost/python/object/class_metadata.hpp at line 3, boost/python/override.hpp at line 5, boost/python/wrapper.hpp at line 3, libs/python/src/dict.cpp at line 3, libs/python/src/str.cpp at line 3, libs/python/src/tuple.cpp at line 3, libs/python/src/wrapper.cpp at line 3
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/detail/is_incrementable.hpp [1:3]
- boost/indirect_reference.hpp [5:7]
- boost/iterator_adaptors.hpp [1:3]
- boost/mpl/min_element.hpp [5:5]
- boost/pointee.hpp [5:7]
- boost/python/detail/enable_if.hpp [1:3]
- boost/python/detail/indirect_traits.hpp [1:3]
- boost/python/detail/is_wrapper.hpp [1:3]
- boost/python/detail/sfinae.hpp [1:3]
- boost/python/detail/unwrap_type_id.hpp [1:3]
- boost/python/detail/unwrap_wrapper.hpp [1:3]
- boost/python/detail/value_arg.hpp [1:3]
- boost/python/detail/wrapper_base.hpp [1:3]
- boost/python/object/class_metadata.hpp [1:4]
- boost/python/override.hpp [3:5]
- boost/python/wrapper.hpp [1:3]
- libs/python/src/dict.cpp [1:3]
- libs/python/src/str.cpp [1:3]
- libs/python/src/tuple.cpp [1:3]
- libs/python/src/wrapper.cpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 70af169b5cf63d17655c660f520c4d14
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/process.hpp [1:7]
- boost/process/args.hpp [1:6]
- boost/process/async_pipe.hpp [1:5]
- boost/process/async_system.hpp [1:6]
- boost/process/child.hpp [1:6]
- boost/process/cmd.hpp [1:6]
- boost/process/detail/child_decl.hpp [1:6]
- boost/process/detail/config.hpp [1:6]
- boost/process/detail/execute_impl.hpp [1:6]
- boost/process/detail/handler_base.hpp [1:6]
- boost/process/detail/posix/async_in.hpp [1:5]
- boost/process/detail/posix/async_out.hpp [1:5]
- boost/process/detail/posix/basic_pipe.hpp [1:5]
- boost/process/detail/posix/child_handle.hpp [1:5]
- boost/process/detail/posix/close_in.hpp [1:5]
- boost/process/detail/posix/close_out.hpp [1:5]
- boost/process/detail/posix/executor.hpp [1:5]
- boost/process/detail/posix/fd.hpp [1:5]
- boost/process/detail/posix/file_in.hpp [1:5]
- boost/process/detail/posix/file_out.hpp [1:6]
- boost/process/detail/posix/null_in.hpp [1:5]
- boost/process/detail/posix/null_out.hpp [1:6]
- boost/process/detail/posix/pipe_in.hpp [1:5]
- boost/process/detail/posix/pipe_out.hpp [1:6]
- boost/process/detail/posix/search_path.hpp [1:5]
- boost/process/detail/posix/shell_path.hpp [1:5]
- boost/process/detail/posix/signal.hpp [1:6]
- boost/process/detail/posix/start_dir.hpp [1:5]
- boost/process/detail/posix/terminate.hpp [1:5]
- boost/process/detail/posix/wait_for_exit.hpp [1:5]
- boost/process/detail/posix/wait_group.hpp [1:5]
- boost/process/detail/throw_on_error.hpp [1:6]
- boost/process/detail/windows/async_in.hpp [1:5]
- boost/process/detail/windows/async_out.hpp [1:5]
- boost/process/detail/windows/child_handle.hpp [1:5]
- boost/process/detail/windows/close_in.hpp [1:5]
- boost/process/detail/windows/close_out.hpp [1:5]
- boost/process/detail/windows/executor.hpp [1:6]
- boost/process/detail/windows/file_in.hpp [1:5]
- boost/process/detail/windows/file_out.hpp [1:5]
- boost/process/detail/windows/null_in.hpp [1:5]
- boost/process/detail/windows/null_out.hpp [1:5]
- boost/process/detail/windows/pipe_in.hpp [1:5]
- boost/process/detail/windows/pipe_out.hpp [1:6]
- boost/process/detail/windows/search_path.hpp [1:5]
- boost/process/detail/windows/shell_path.hpp [1:5]
- boost/process/detail/windows/show_window.hpp [1:6]
- boost/process/detail/windows/start_dir.hpp [1:5]
- boost/process/detail/windows/terminate.hpp [1:5]
- boost/process/detail/windows/wait_for_exit.hpp [1:6]
- boost/process/error.hpp [1:6]
- boost/process/exe.hpp [1:6]
- boost/process/pipe.hpp [1:5]
- boost/process/search_path.hpp [1:5]
- boost/process/shell.hpp [1:6]
- boost/process/spawn.hpp [1:6]
- boost/process/start_dir.hpp [1:5]
- boost/process/system.hpp [1:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 70b7ec76fc92ec62f0bff9be8534781e
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2005-2006 Dan Marsden
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/adapted.hpp [2:3]
- boost/fusion/adapted/adt.hpp [2:4]
- boost/fusion/adapted/adt/detail/adapt_base.hpp [2:4]
- boost/fusion/adapted/adt/detail/extension.hpp [2:4]
- boost/fusion/adapted/array.hpp [2:4]
- boost/fusion/adapted/boost_array.hpp [2:3]
- boost/fusion/adapted/boost_array/array_iterator.hpp [2:3]
- boost/fusion/adapted/boost_array/detail/at_impl.hpp [2:3]
- boost/fusion/adapted/boost_array/detail/begin_impl.hpp [2:3]
- boost/fusion/adapted/boost_array/detail/category_of_impl.hpp [2:3]
- boost/fusion/adapted/boost_array/detail/end_impl.hpp [2:3]
- boost/fusion/adapted/boost_array/detail/is_sequence_impl.hpp [2:3]
- boost/fusion/adapted/boost_array/detail/is_view_impl.hpp [2:3]
- boost/fusion/adapted/boost_array/detail/size_impl.hpp [2:3]
- boost/fusion/adapted/boost_array/detail/value_at_impl.hpp [2:3]
- boost/fusion/adapted/boost_array/tag_of.hpp [2:3]
- boost/fusion/adapted/mpl.hpp [2:3]
- boost/fusion/adapted/mpl/detail/at_impl.hpp [2:3]
- boost/fusion/adapted/mpl/detail/begin_impl.hpp [2:3]
- boost/fusion/adapted/mpl/detail/category_of_impl.hpp [2:3]
- boost/fusion/adapted/mpl/detail/empty_impl.hpp [2:3]
- boost/fusion/adapted/mpl/detail/end_impl.hpp [2:3]
- boost/fusion/adapted/mpl/detail/has_key_impl.hpp [2:3]
- boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp [2:3]
- boost/fusion/adapted/mpl/detail/is_view_impl.hpp [2:3]
- boost/fusion/adapted/mpl/detail/size_impl.hpp [2:3]
- boost/fusion/adapted/mpl/detail/value_at_impl.hpp [2:3]
- boost/fusion/adapted/std_array.hpp [2:4]
- boost/fusion/adapted/std_array/detail/at_impl.hpp [2:3]
- boost/fusion/adapted/std_array/detail/begin_impl.hpp [2:4]
- boost/fusion/adapted/std_array/detail/category_of_impl.hpp [2:3]
- boost/fusion/adapted/std_array/detail/end_impl.hpp [2:4]
- boost/fusion/adapted/std_array/detail/is_sequence_impl.hpp [2:4]
- boost/fusion/adapted/std_array/detail/is_view_impl.hpp [2:4]
- boost/fusion/adapted/std_array/detail/size_impl.hpp [2:4]
- boost/fusion/adapted/std_array/detail/value_at_impl.hpp [2:3]
- boost/fusion/adapted/std_array/std_array_iterator.hpp [2:4]
- boost/fusion/adapted/std_array/tag_of.hpp [2:3]
- boost/fusion/adapted/std_pair.hpp [2:4]
- boost/fusion/adapted/struct.hpp [2:4]
- boost/fusion/adapted/struct/detail/adapt_base.hpp [2:5]
- boost/fusion/adapted/struct/detail/at_impl.hpp [2:4]
- boost/fusion/adapted/struct/detail/begin_impl.hpp [2:4]
- boost/fusion/adapted/struct/detail/category_of_impl.hpp [2:4]
- boost/fusion/adapted/struct/detail/end_impl.hpp [2:4]
- boost/fusion/adapted/struct/detail/extension.hpp [2:4]
- boost/fusion/adapted/struct/detail/is_sequence_impl.hpp [2:4]
- boost/fusion/adapted/struct/detail/is_view_impl.hpp [2:4]
- boost/fusion/adapted/struct/detail/size_impl.hpp [2:4]
- boost/fusion/adapted/struct/detail/value_at_impl.hpp [2:4]
- boost/fusion/algorithm/transformation/filter.hpp [2:3]
- boost/fusion/container/deque.hpp [2:3]
- boost/fusion/container/deque/back_extended_deque.hpp [2:3]
- boost/fusion/container/deque/deque.hpp [2:3]
- boost/fusion/container/deque/deque_iterator.hpp [2:3]
- boost/fusion/container/deque/detail/at_impl.hpp [2:3]
- boost/fusion/container/deque/detail/begin_impl.hpp [2:3]
- boost/fusion/container/deque/detail/convert_impl.hpp [2:4]
- boost/fusion/container/deque/detail/cpp03/deque.hpp [2:3]
- boost/fusion/container/deque/detail/cpp03/deque_forward_ctor.hpp [2:3]
- boost/fusion/container/deque/detail/cpp03/deque_initial_size.hpp [2:3]
- boost/fusion/container/deque/detail/cpp03/deque_keyed_values.hpp [2:3]
- boost/fusion/container/deque/detail/cpp03/deque_keyed_values_call.hpp [2:3]
- boost/fusion/container/deque/detail/cpp03/limits.hpp [2:3]
- boost/fusion/container/deque/detail/deque_keyed_values.hpp [2:3]
- boost/fusion/container/deque/detail/end_impl.hpp [2:3]
- boost/fusion/container/deque/detail/keyed_element.hpp [2:3]
- boost/fusion/container/deque/detail/value_at_impl.hpp [2:3]
- boost/fusion/container/deque/front_extended_deque.hpp [2:3]
- boost/fusion/container/list/detail/convert_impl.hpp [2:3]
- boost/fusion/container/map/detail/cpp03/convert_impl.hpp [2:3]
- boost/fusion/container/map/map_iterator.hpp [2:3]
- boost/fusion/container/set/detail/convert_impl.hpp [2:3]
- boost/fusion/container/vector/detail/convert_impl.hpp [2:3]
- boost/fusion/support/detail/is_mpl_sequence.hpp [2:3]
- boost/fusion/support/tag_of_fwd.hpp [2:3]
- boost/fusion/view/filter_view/detail/equal_to_impl.hpp [2:3]
- boost/fusion/view/reverse_view/detail/advance_impl.hpp [2:3]
- boost/fusion/view/reverse_view/detail/distance_impl.hpp [2:3]
- boost/fusion/view/transform_view/detail/advance_impl.hpp [2:3]
- boost/fusion/view/transform_view/detail/at_impl.hpp [2:3]
- boost/fusion/view/transform_view/detail/distance_impl.hpp [2:3]
- boost/fusion/view/transform_view/detail/prior_impl.hpp [2:3]
- boost/fusion/view/transform_view/detail/value_at_impl.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 70c75f8953a0e7cc364b82999fe9db5c
-BELONGS ya.make
- License text:
- * (C) Copyright 2013 Tim Blechmann
- * (C) Copyright 2013 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/atomic/detail/pause.hpp [6:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 70d3f9c66aa302a3e59ec38430047f6b
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/chrono/typeof/boost/chrono/chrono.hpp at line 5, boost/chrono/typeof/boost/ratio.hpp at line 5
- License text:
- // (C) Copyright Vicente J. Botet Escriba 20010.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/chrono/typeof/boost/chrono/chrono.hpp [3:5]
- boost/chrono/typeof/boost/ratio.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7154f956948b41d87bf8a2b73a07d675
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/tree_traits.hpp at line 3, boost/pending/detail/int_iterator.hpp at line 3
- License text:
- // (C) Copyright Jeremy Siek 1999.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/tree_traits.hpp [1:3]
- boost/pending/detail/int_iterator.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 71ed11b2adc3c3af2c868e57de056941
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/policies/robustness/get_rescale_policy.hpp [3:6]
- boost/geometry/policies/robustness/rescale_policy.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 71f99a73ae228de2701864e837c3c359
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2007 Hartmut Kaiser
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/include/in.hpp [2:2]
- boost/fusion/include/io.hpp [2:2]
- boost/fusion/include/out.hpp [2:2]
- boost/fusion/include/value_at.hpp [2:2]
- boost/spirit/home/classic/tree/impl/parse_tree_utils.ipp [2:4]
- boost/spirit/home/classic/tree/tree_to_xml.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 720c432476f4bb134f4e1394670ad378
-BELONGS ya.make
- License text:
- // Copyright 2016 Klemens Morgenstern, Antony Polukhin
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/dll/detail/ctor_dtor.hpp [1:1]
- boost/dll/detail/type_info.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7243a87c22485b4f89611b940ba19721
-BELONGS libs/atomic/ya.make ya.make
- License text:
- // Copyright (c) 2011 Helge Bahmann
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/atomic.hpp [4:4]
- boost/atomic/atomic.hpp [6:8]
- boost/atomic/atomic_flag.hpp [6:8]
- boost/atomic/detail/atomic_template.hpp [6:8]
- boost/atomic/detail/caps_gcc_sync.hpp [6:8]
- boost/atomic/detail/lockpool.hpp [6:7]
- boost/atomic/detail/ops_gcc_sync.hpp [6:8]
- boost/atomic/fences.hpp [6:8]
- libs/atomic/src/lockpool.cpp [6:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 725bf619a93c94289aea04b05b43067f
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2007 Dan Marsden
- Copyright (c) 2009 Christopher Schmidt
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/algorithm/query/detail/find_if.hpp [2:4]
- boost/fusion/container/map/detail/cpp03/begin_impl.hpp [2:3]
- boost/fusion/container/map/detail/cpp03/deref_data_impl.hpp [2:2]
- boost/fusion/container/map/detail/cpp03/deref_impl.hpp [2:2]
- boost/fusion/container/map/detail/cpp03/end_impl.hpp [2:3]
- boost/fusion/container/map/detail/cpp03/key_of_impl.hpp [2:2]
- boost/fusion/container/map/detail/cpp03/value_of_data_impl.hpp [2:2]
- boost/fusion/container/map/detail/cpp03/value_of_impl.hpp [2:2]
- boost/fusion/container/set/detail/begin_impl.hpp [2:3]
- boost/fusion/container/set/detail/deref_data_impl.hpp [2:2]
- boost/fusion/container/set/detail/deref_impl.hpp [2:2]
- boost/fusion/container/set/detail/end_impl.hpp [2:3]
- boost/fusion/container/set/detail/key_of_impl.hpp [2:2]
- boost/fusion/container/set/detail/value_of_data_impl.hpp [2:2]
- boost/fusion/container/set/detail/value_of_impl.hpp [2:2]
- boost/fusion/include/deref_data.hpp [2:2]
- boost/fusion/include/key_of.hpp [2:2]
- boost/fusion/include/value_of_data.hpp [2:2]
- boost/fusion/iterator/basic_iterator.hpp [2:2]
- boost/fusion/iterator/deref_data.hpp [2:2]
- boost/fusion/iterator/key_of.hpp [2:2]
- boost/fusion/iterator/value_of_data.hpp [2:2]
- boost/fusion/view/filter_view/detail/deref_data_impl.hpp [2:2]
- boost/fusion/view/filter_view/detail/key_of_impl.hpp [2:2]
- boost/fusion/view/filter_view/detail/value_of_data_impl.hpp [2:2]
- boost/fusion/view/joint_view/detail/deref_data_impl.hpp [2:2]
- boost/fusion/view/joint_view/detail/key_of_impl.hpp [2:2]
- boost/fusion/view/joint_view/detail/value_of_data_impl.hpp [2:2]
- boost/fusion/view/reverse_view/detail/at_impl.hpp [2:2]
- boost/fusion/view/reverse_view/detail/deref_data_impl.hpp [2:2]
- boost/fusion/view/reverse_view/detail/key_of_impl.hpp [2:2]
- boost/fusion/view/reverse_view/detail/value_at_impl.hpp [2:2]
- boost/fusion/view/reverse_view/detail/value_of_data_impl.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7273d54756a475d9666d11cf88482d60
-BELONGS ya.make
- License text:
- // Copyright 2005 Daniel Wallin.
- // Copyright 2005 Joel de Guzman.
- // Copyright 2005 Dan Marsden.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/phoenix/stl/algorithm/iteration.hpp [1:3]
- boost/phoenix/stl/algorithm/querying.hpp [1:5]
- boost/phoenix/stl/algorithm/transformation.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 727ffdba5f4101e3db746edf2130cfbd
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/version_number.h at line 4
- License text:
- Copyright Rene Rivera 2005-2016
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/predef/version_number.h [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7285ea79f04079e3ed6508503b991411
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/metaparse.hpp at line 3, boost/metaparse/accept_tag.hpp at line 6, boost/metaparse/accept_when.hpp at line 6, boost/metaparse/alphanum.hpp at line 6, boost/metaparse/always.hpp at line 6, boost/metaparse/always_c.hpp at line 6, boost/metaparse/build_parser.hpp at line 6, boost/metaparse/change_error_message.hpp at line 6, boost/metaparse/config.hpp at line 6, boost/metaparse/debug_parsing_error.hpp at line 6, boost/metaparse/define_error.hpp at line 6, boost/metaparse/digit.hpp at line 6, boost/metaparse/digit_val.hpp at line 6, boost/metaparse/empty.hpp at line 6, boost/metaparse/entire_input.hpp at line 6, boost/metaparse/error/digit_expected.hpp at line 6, boost/metaparse/error/end_of_input_expected.hpp at line 6, boost/metaparse/error/index_out_of_range.hpp at line 6, boost/metaparse/error/letter_expected.hpp at line 6, boost/metaparse/error/literal_expected.hpp at line 6, boost/metaparse/error/none_of_the_expected_cases_found.hpp at line 6, boost/metaparse/error/unexpected_character.hpp at line 6, boost/metaparse/error/unexpected_end_of_input.hpp at line 6, boost/metaparse/error/whitespace_expected.hpp at line 6, boost/metaparse/except.hpp at line 6, boost/metaparse/fail.hpp at line 6, boost/metaparse/fail_tag.hpp at line 6, boost/metaparse/first_of.hpp at line 6, boost/metaparse/foldl.hpp at line 6, boost/metaparse/foldl1.hpp at line 6, boost/metaparse/foldl_start_with_parser.hpp at line 6, boost/metaparse/foldr.hpp at line 6, boost/metaparse/foldr1.hpp at line 6, boost/metaparse/foldr_start_with_parser.hpp at line 6, boost/metaparse/get_col.hpp at line 6, boost/metaparse/get_line.hpp at line 6, boost/metaparse/get_position.hpp at line 6, boost/metaparse/get_prev_char.hpp at line 6, boost/metaparse/get_remaining.hpp at line 6, boost/metaparse/get_result.hpp at line 6, boost/metaparse/grammar.hpp at line 6, boost/metaparse/if_.hpp at line 6, boost/metaparse/int_.hpp at line 6, boost/metaparse/is_error.hpp at line 6, boost/metaparse/iterate.hpp at line 6, boost/metaparse/iterate_c.hpp at line 6, boost/metaparse/keyword.hpp at line 6, boost/metaparse/last_of.hpp at line 6, boost/metaparse/letter.hpp at line 6, boost/metaparse/limit_one_char_except_size.hpp at line 6, boost/metaparse/limit_one_of_size.hpp at line 6, boost/metaparse/limit_sequence_size.hpp at line 6, boost/metaparse/limit_string_size.hpp at line 6, boost/metaparse/lit.hpp at line 6, boost/metaparse/lit_c.hpp at line 6, boost/metaparse/look_ahead.hpp at line 6, boost/metaparse/middle_of.hpp at line 6, boost/metaparse/next_char.hpp at line 6, boost/metaparse/next_line.hpp at line 6, boost/metaparse/nth_of.hpp at line 6, boost/metaparse/nth_of_c.hpp at line 6, boost/metaparse/one_char.hpp at line 6, boost/metaparse/one_char_except.hpp at line 6, boost/metaparse/one_char_except_c.hpp at line 6, boost/metaparse/one_of.hpp at line 6, boost/metaparse/one_of_c.hpp at line 6, boost/metaparse/repeated.hpp at line 6, boost/metaparse/repeated1.hpp at line 6, boost/metaparse/repeated_one_of.hpp at line 6, boost/metaparse/repeated_one_of1.hpp at line 6, boost/metaparse/return_.hpp at line 6, boost/metaparse/sequence.hpp at line 6, boost/metaparse/source_position.hpp at line 6, boost/metaparse/source_position_tag.hpp at line 6, boost/metaparse/space.hpp at line 6, boost/metaparse/spaces.hpp at line 6, boost/metaparse/start.hpp at line 6, boost/metaparse/string.hpp at line 3, boost/metaparse/string_tag.hpp at line 6, boost/metaparse/token.hpp at line 6, boost/metaparse/transform.hpp at line 6, boost/metaparse/unless_error.hpp at line 6, boost/metaparse/util/digit_to_int.hpp at line 6, boost/metaparse/util/digit_to_int_c.hpp at line 6, boost/metaparse/util/in_range.hpp at line 6, boost/metaparse/util/int_to_digit.hpp at line 6, boost/metaparse/util/int_to_digit_c.hpp at line 6, boost/metaparse/util/is_lcase_letter.hpp at line 6, boost/metaparse/util/is_letter.hpp at line 6, boost/metaparse/util/is_ucase_letter.hpp at line 6, boost/metaparse/util/is_whitespace.hpp at line 6, boost/metaparse/util/is_whitespace_c.hpp at line 6, boost/metaparse/v1/accept_tag.hpp at line 6, boost/metaparse/v1/always_c.hpp at line 6, boost/metaparse/v1/cpp11/fwd/string.hpp at line 6, boost/metaparse/v1/cpp11/impl/at_c.hpp at line 6, boost/metaparse/v1/cpp11/impl/concat.hpp at line 6, boost/metaparse/v1/cpp11/impl/empty_string.hpp at line 6, boost/metaparse/v1/cpp11/impl/pop_back.hpp at line 6, boost/metaparse/v1/cpp11/impl/pop_front.hpp at line 6, boost/metaparse/v1/cpp11/impl/push_back_c.hpp at line 6, boost/metaparse/v1/cpp11/impl/push_front_c.hpp at line 6, boost/metaparse/v1/cpp11/impl/remove_trailing_no_chars.hpp at line 6, boost/metaparse/v1/cpp11/impl/size.hpp at line 6, boost/metaparse/v1/cpp98/fwd/string.hpp at line 6, boost/metaparse/v1/cpp98/impl/at_c.hpp at line 6, boost/metaparse/v1/cpp98/impl/empty_string.hpp at line 6, boost/metaparse/v1/cpp98/impl/nth_of_c.hpp at line 6, boost/metaparse/v1/cpp98/impl/nth_of_c_impl.hpp at line 6, boost/metaparse/v1/cpp98/impl/pop_back.hpp at line 6, boost/metaparse/v1/cpp98/impl/pop_front.hpp at line 6, boost/metaparse/v1/cpp98/impl/push_back_c.hpp at line 6, boost/metaparse/v1/cpp98/impl/push_front_c.hpp at line 6, boost/metaparse/v1/cpp98/impl/size.hpp at line 6, boost/metaparse/v1/cpp98/impl/skip_seq.hpp at line 6, boost/metaparse/v1/cpp98/impl/update_c.hpp at line 6, boost/metaparse/v1/cpp98/nth_of_c.hpp at line 6, boost/metaparse/v1/define_error.hpp at line 6, boost/metaparse/v1/error/digit_expected.hpp at line 6, boost/metaparse/v1/error/end_of_input_expected.hpp at line 6, boost/metaparse/v1/error/index_out_of_range.hpp at line 6, boost/metaparse/v1/error/letter_expected.hpp at line 6, boost/metaparse/v1/error/literal_expected.hpp at line 6, boost/metaparse/v1/error/none_of_the_expected_cases_found.hpp at line 6, boost/metaparse/v1/error/unexpected_character.hpp at line 6, boost/metaparse/v1/error/unexpected_end_of_input.hpp at line 6, boost/metaparse/v1/error/whitespace_expected.hpp at line 6, boost/metaparse/v1/fwd/build_parser.hpp at line 6, boost/metaparse/v1/fwd/get_col.hpp at line 6, boost/metaparse/v1/fwd/get_line.hpp at line 6, boost/metaparse/v1/fwd/get_position.hpp at line 6, boost/metaparse/v1/fwd/get_prev_char.hpp at line 6, boost/metaparse/v1/fwd/get_remaining.hpp at line 6, boost/metaparse/v1/fwd/get_result.hpp at line 6, boost/metaparse/v1/fwd/next_char.hpp at line 6, boost/metaparse/v1/fwd/next_line.hpp at line 6, boost/metaparse/v1/fwd/source_position.hpp at line 6, boost/metaparse/v1/impl/apply_parser.hpp at line 6, boost/metaparse/v1/impl/at_c.hpp at line 6, boost/metaparse/v1/impl/fwd/iterate_impl.hpp at line 6, boost/metaparse/v1/impl/is_any.hpp at line 6, boost/metaparse/v1/impl/iterate_impl.hpp at line 6, boost/metaparse/v1/impl/iterate_impl_unchecked.hpp at line 6, boost/metaparse/v1/impl/no_char.hpp at line 6, boost/metaparse/v1/impl/one_char_except_not_used.hpp at line 6, boost/metaparse/v1/impl/one_of.hpp at line 6, boost/metaparse/v1/impl/sequence.hpp at line 6, boost/metaparse/v1/impl/sequence_impl.hpp at line 6, boost/metaparse/v1/impl/string_iterator.hpp at line 6, boost/metaparse/v1/impl/string_iterator_tag.hpp at line 6, boost/metaparse/v1/one_of_c.hpp at line 6, boost/metaparse/v1/source_position_tag.hpp at line 6, boost/metaparse/v1/start.hpp at line 6, boost/metaparse/v1/string_tag.hpp at line 6, boost/metaparse/v1/util/digit_to_int_c.hpp at line 6, boost/metaparse/v1/util/int_to_digit_c.hpp at line 6, boost/metaparse/v1/util/is_whitespace_c.hpp at line 6
- License text:
- // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/metaparse.hpp [1:3]
- boost/metaparse/accept_tag.hpp [4:6]
- boost/metaparse/accept_when.hpp [4:6]
- boost/metaparse/alphanum.hpp [4:6]
- boost/metaparse/always.hpp [4:6]
- boost/metaparse/always_c.hpp [4:6]
- boost/metaparse/build_parser.hpp [4:6]
- boost/metaparse/change_error_message.hpp [4:6]
- boost/metaparse/config.hpp [4:6]
- boost/metaparse/debug_parsing_error.hpp [4:6]
- boost/metaparse/define_error.hpp [4:6]
- boost/metaparse/digit.hpp [4:6]
- boost/metaparse/digit_val.hpp [4:6]
- boost/metaparse/empty.hpp [4:6]
- boost/metaparse/entire_input.hpp [4:6]
- boost/metaparse/error/digit_expected.hpp [4:6]
- boost/metaparse/error/end_of_input_expected.hpp [4:6]
- boost/metaparse/error/index_out_of_range.hpp [4:6]
- boost/metaparse/error/letter_expected.hpp [4:6]
- boost/metaparse/error/literal_expected.hpp [4:6]
- boost/metaparse/error/none_of_the_expected_cases_found.hpp [4:6]
- boost/metaparse/error/unexpected_character.hpp [4:6]
- boost/metaparse/error/unexpected_end_of_input.hpp [4:6]
- boost/metaparse/error/whitespace_expected.hpp [4:6]
- boost/metaparse/except.hpp [4:6]
- boost/metaparse/fail.hpp [4:6]
- boost/metaparse/fail_tag.hpp [4:6]
- boost/metaparse/first_of.hpp [4:6]
- boost/metaparse/foldl.hpp [4:6]
- boost/metaparse/foldl1.hpp [4:6]
- boost/metaparse/foldl_start_with_parser.hpp [4:6]
- boost/metaparse/foldr.hpp [4:6]
- boost/metaparse/foldr1.hpp [4:6]
- boost/metaparse/foldr_start_with_parser.hpp [4:6]
- boost/metaparse/get_col.hpp [4:6]
- boost/metaparse/get_line.hpp [4:6]
- boost/metaparse/get_position.hpp [4:6]
- boost/metaparse/get_prev_char.hpp [4:6]
- boost/metaparse/get_remaining.hpp [4:6]
- boost/metaparse/get_result.hpp [4:6]
- boost/metaparse/grammar.hpp [4:6]
- boost/metaparse/if_.hpp [4:6]
- boost/metaparse/int_.hpp [4:6]
- boost/metaparse/is_error.hpp [4:6]
- boost/metaparse/iterate.hpp [4:6]
- boost/metaparse/iterate_c.hpp [4:6]
- boost/metaparse/keyword.hpp [4:6]
- boost/metaparse/last_of.hpp [4:6]
- boost/metaparse/letter.hpp [4:6]
- boost/metaparse/limit_one_char_except_size.hpp [4:6]
- boost/metaparse/limit_one_of_size.hpp [4:6]
- boost/metaparse/limit_sequence_size.hpp [4:6]
- boost/metaparse/limit_string_size.hpp [4:6]
- boost/metaparse/lit.hpp [4:6]
- boost/metaparse/lit_c.hpp [4:6]
- boost/metaparse/look_ahead.hpp [4:6]
- boost/metaparse/middle_of.hpp [4:6]
- boost/metaparse/next_char.hpp [4:6]
- boost/metaparse/next_line.hpp [4:6]
- boost/metaparse/nth_of.hpp [4:6]
- boost/metaparse/nth_of_c.hpp [4:6]
- boost/metaparse/one_char.hpp [4:6]
- boost/metaparse/one_char_except.hpp [4:6]
- boost/metaparse/one_char_except_c.hpp [4:6]
- boost/metaparse/one_of.hpp [4:6]
- boost/metaparse/one_of_c.hpp [4:6]
- boost/metaparse/repeated.hpp [4:6]
- boost/metaparse/repeated1.hpp [4:6]
- boost/metaparse/repeated_one_of.hpp [4:6]
- boost/metaparse/repeated_one_of1.hpp [4:6]
- boost/metaparse/return_.hpp [4:6]
- boost/metaparse/sequence.hpp [4:6]
- boost/metaparse/source_position.hpp [4:6]
- boost/metaparse/source_position_tag.hpp [4:6]
- boost/metaparse/space.hpp [4:6]
- boost/metaparse/spaces.hpp [4:6]
- boost/metaparse/start.hpp [4:6]
- boost/metaparse/string.hpp [1:3]
- boost/metaparse/string_tag.hpp [4:6]
- boost/metaparse/token.hpp [4:6]
- boost/metaparse/transform.hpp [4:6]
- boost/metaparse/unless_error.hpp [4:6]
- boost/metaparse/util/digit_to_int.hpp [4:6]
- boost/metaparse/util/digit_to_int_c.hpp [4:6]
- boost/metaparse/util/in_range.hpp [4:6]
- boost/metaparse/util/int_to_digit.hpp [4:6]
- boost/metaparse/util/int_to_digit_c.hpp [4:6]
- boost/metaparse/util/is_lcase_letter.hpp [4:6]
- boost/metaparse/util/is_letter.hpp [4:6]
- boost/metaparse/util/is_ucase_letter.hpp [4:6]
- boost/metaparse/util/is_whitespace.hpp [4:6]
- boost/metaparse/util/is_whitespace_c.hpp [4:6]
- boost/metaparse/v1/accept_tag.hpp [4:6]
- boost/metaparse/v1/always_c.hpp [4:6]
- boost/metaparse/v1/cpp11/fwd/string.hpp [4:6]
- boost/metaparse/v1/cpp11/impl/at_c.hpp [4:6]
- boost/metaparse/v1/cpp11/impl/concat.hpp [4:6]
- boost/metaparse/v1/cpp11/impl/empty_string.hpp [4:6]
- boost/metaparse/v1/cpp11/impl/pop_back.hpp [4:6]
- boost/metaparse/v1/cpp11/impl/pop_front.hpp [4:6]
- boost/metaparse/v1/cpp11/impl/push_back_c.hpp [4:6]
- boost/metaparse/v1/cpp11/impl/push_front_c.hpp [4:6]
- boost/metaparse/v1/cpp11/impl/remove_trailing_no_chars.hpp [4:6]
- boost/metaparse/v1/cpp11/impl/size.hpp [4:6]
- boost/metaparse/v1/cpp98/fwd/string.hpp [4:6]
- boost/metaparse/v1/cpp98/impl/at_c.hpp [4:6]
- boost/metaparse/v1/cpp98/impl/empty_string.hpp [4:6]
- boost/metaparse/v1/cpp98/impl/nth_of_c.hpp [4:6]
- boost/metaparse/v1/cpp98/impl/nth_of_c_impl.hpp [4:6]
- boost/metaparse/v1/cpp98/impl/pop_back.hpp [4:6]
- boost/metaparse/v1/cpp98/impl/pop_front.hpp [4:6]
- boost/metaparse/v1/cpp98/impl/push_back_c.hpp [4:6]
- boost/metaparse/v1/cpp98/impl/push_front_c.hpp [4:6]
- boost/metaparse/v1/cpp98/impl/size.hpp [4:6]
- boost/metaparse/v1/cpp98/impl/skip_seq.hpp [4:6]
- boost/metaparse/v1/cpp98/impl/update_c.hpp [4:6]
- boost/metaparse/v1/cpp98/nth_of_c.hpp [4:6]
- boost/metaparse/v1/define_error.hpp [4:6]
- boost/metaparse/v1/error/digit_expected.hpp [4:6]
- boost/metaparse/v1/error/end_of_input_expected.hpp [4:6]
- boost/metaparse/v1/error/index_out_of_range.hpp [4:6]
- boost/metaparse/v1/error/letter_expected.hpp [4:6]
- boost/metaparse/v1/error/literal_expected.hpp [4:6]
- boost/metaparse/v1/error/none_of_the_expected_cases_found.hpp [4:6]
- boost/metaparse/v1/error/unexpected_character.hpp [4:6]
- boost/metaparse/v1/error/unexpected_end_of_input.hpp [4:6]
- boost/metaparse/v1/error/whitespace_expected.hpp [4:6]
- boost/metaparse/v1/fwd/build_parser.hpp [4:6]
- boost/metaparse/v1/fwd/get_col.hpp [4:6]
- boost/metaparse/v1/fwd/get_line.hpp [4:6]
- boost/metaparse/v1/fwd/get_position.hpp [4:6]
- boost/metaparse/v1/fwd/get_prev_char.hpp [4:6]
- boost/metaparse/v1/fwd/get_remaining.hpp [4:6]
- boost/metaparse/v1/fwd/get_result.hpp [4:6]
- boost/metaparse/v1/fwd/next_char.hpp [4:6]
- boost/metaparse/v1/fwd/next_line.hpp [4:6]
- boost/metaparse/v1/fwd/source_position.hpp [4:6]
- boost/metaparse/v1/impl/apply_parser.hpp [4:6]
- boost/metaparse/v1/impl/at_c.hpp [4:6]
- boost/metaparse/v1/impl/fwd/iterate_impl.hpp [4:6]
- boost/metaparse/v1/impl/is_any.hpp [4:6]
- boost/metaparse/v1/impl/iterate_impl.hpp [4:6]
- boost/metaparse/v1/impl/iterate_impl_unchecked.hpp [4:6]
- boost/metaparse/v1/impl/no_char.hpp [4:6]
- boost/metaparse/v1/impl/one_char_except_not_used.hpp [4:6]
- boost/metaparse/v1/impl/one_of.hpp [4:6]
- boost/metaparse/v1/impl/sequence.hpp [4:6]
- boost/metaparse/v1/impl/sequence_impl.hpp [4:6]
- boost/metaparse/v1/impl/string_iterator.hpp [4:6]
- boost/metaparse/v1/impl/string_iterator_tag.hpp [4:6]
- boost/metaparse/v1/one_of_c.hpp [4:6]
- boost/metaparse/v1/source_position_tag.hpp [4:6]
- boost/metaparse/v1/start.hpp [4:6]
- boost/metaparse/v1/string_tag.hpp [4:6]
- boost/metaparse/v1/util/digit_to_int_c.hpp [4:6]
- boost/metaparse/v1/util/int_to_digit_c.hpp [4:6]
- boost/metaparse/v1/util/is_whitespace_c.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 72b9bd66865ddaee0fb864076f107de3
-BELONGS ya.make
- License text:
- // Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
- // Copyright (c) 2008-2014 Barend Gehrels, Amsterdam, the Netherlands.
- // Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/geometries/concepts/point_concept.hpp [3:5]
- boost/geometry/strategies/cartesian/distance_projected_point.hpp [3:5]
- boost/geometry/strategies/cartesian/distance_projected_point_ax.hpp [3:5]
- boost/geometry/strategies/cartesian/distance_pythagoras_box_box.hpp [3:5]
- boost/geometry/strategies/cartesian/distance_pythagoras_point_box.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 73021121a028d194fba65596bec6cef0
-BELONGS ya.make
- License text:
- // Copyright (c) 2013 Anton Bikineev
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/bessel_prime.hpp [1:3]
- boost/math/special_functions/detail/bessel_derivatives_linear.hpp [1:3]
- boost/math/special_functions/detail/bessel_jy_derivatives_asym.hpp [1:3]
- boost/math/special_functions/detail/bessel_jy_derivatives_series.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 73025b91e8cf54ab81ff410c38be7452
-BELONGS ya.make
- License text:
- // Copyright (c) 2001-2009, 2012 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/detail/operator_bool.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 730c07851a5b23ccbb31329a376a83df
-BELONGS ya.make
- License text:
- // Copyright (c) 2011-2015 Akira Takahashi
- // Copyright (c) 2011-2015 Barend Gehrels, Amsterdam, the Netherlands.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/geometries/adapted/boost_fusion.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 73465150862f0cc2df66101601ca434e
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/proto/detail/deduce_domain.hpp at line 9
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/proto/detail/deduce_domain.hpp [7:9]
-
-KEEP COPYRIGHT_SERVICE_LABEL 734f8fc32ed77c4004c79d8db1513144
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/detail/functions/trig.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/multiprecision/detail/functions/trig.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 73798cdc506bf1f1fdbb74d2be43a59f
-BELONGS ya.make
- License text:
- // This file was modified by Oracle on 2014-2018.
- // Modifications copyright (c) 2014-2018 Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/geometry.hpp [7:8]
- boost/geometry/srs/sphere.hpp [7:8]
- boost/geometry/srs/spheroid.hpp [7:8]
- boost/geometry/srs/srs.hpp [7:8]
- boost/geometry/strategies/geographic/distance.hpp [5:6]
- boost/geometry/strategies/geographic/side.hpp [5:6]
- boost/geometry/strategies/strategies.hpp [8:9]
-
-KEEP COPYRIGHT_SERVICE_LABEL 73a854045058b52a933e9b9c1ed5c5bd
-BELONGS ya.make
- License text:
- Copyright (c) 2007 Tobias Schwinger
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/functional/factory.hpp [2:2]
- boost/functional/lightweight_forward_adapter.hpp [2:2]
- boost/functional/value_factory.hpp [2:2]
- boost/fusion/container/list/detail/empty_impl.hpp [2:2]
- boost/fusion/functional/generation.hpp [2:2]
- boost/fusion/functional/generation/detail/gen_make_adapter.hpp [2:2]
- boost/fusion/functional/generation/make_fused.hpp [2:2]
- boost/fusion/functional/generation/make_fused_function_object.hpp [2:2]
- boost/fusion/functional/generation/make_fused_procedure.hpp [2:2]
- boost/fusion/functional/generation/make_unfused.hpp [2:2]
- boost/fusion/support/deduce.hpp [2:2]
- boost/fusion/support/deduce_sequence.hpp [2:2]
- boost/fusion/support/sequence_base.hpp [2:3]
- boost/fusion/view/iterator_range/detail/at_impl.hpp [2:2]
- boost/fusion/view/iterator_range/detail/value_at_impl.hpp [2:2]
- boost/fusion/view/repetitive_view.hpp [2:2]
- boost/fusion/view/repetitive_view/detail/begin_impl.hpp [2:2]
- boost/fusion/view/repetitive_view/detail/deref_impl.hpp [2:2]
- boost/fusion/view/repetitive_view/detail/end_impl.hpp [2:2]
- boost/fusion/view/repetitive_view/detail/next_impl.hpp [2:2]
- boost/fusion/view/repetitive_view/detail/value_of_impl.hpp [2:2]
- boost/fusion/view/repetitive_view/repetitive_view.hpp [2:2]
- boost/fusion/view/repetitive_view/repetitive_view_fwd.hpp [2:2]
- boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp [2:2]
- boost/spirit/home/support/iterators/multi_pass_fwd.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 73e1a39f02509cd9b4aa749a0fc51358
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2003 Joel de Guzman
- Copyright (c) 2002-2003 Martin Wille
- Copyright (c) 2003 Hartmut Kaiser
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/core/non_terminal/grammar.hpp [2:5]
- boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp [2:5]
- boost/spirit/home/classic/dynamic/impl/select.ipp [2:3]
- boost/spirit/home/classic/dynamic/impl/switch.ipp [2:3]
- boost/spirit/home/classic/dynamic/select.hpp [2:3]
- boost/spirit/home/classic/dynamic/switch.hpp [2:3]
- boost/spirit/home/classic/iterator/file_iterator.hpp [2:5]
- boost/spirit/home/classic/iterator/impl/file_iterator.ipp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 740b8b21c73d73ca167354e62df16207
-BELONGS ya.make
- License text:
- * Copyright (c) 2010 Matthias Walter (xammy@xammy.homelinux.net)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/bipartite.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7457b5550b1e9bda918d7c58dc2f723f
-BELONGS ya.make
- License text:
- // Copyright Eric Friedman 2003
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/aux_/partition_op.hpp [5:6]
- boost/mpl/index_if.hpp [5:5]
- boost/mpl/index_of.hpp [5:6]
- boost/mpl/iter_fold_if.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 74ee4dff688ff710e2fd61ab32477159
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2006.
- // Copyright Paul A. Bristow 2006.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/distributions/beta.hpp [3:4]
- boost/math/distributions/uniform.hpp [1:4]
- boost/math/special_functions/math_fwd.hpp [5:6]
- boost/math/tools/promotion.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7500e3115ad2ad77256a10dcd614f5bf
-BELONGS ya.make
- License text:
- //Copyright (c) 2006-2013 Emil Dotchevski and Reverge Studios, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/exception/detail/clone_current_exception.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 750cd3ddd45943a8e91eb79f9cf8e698
-BELONGS ya.make
- License text:
- // Copyright (C) 2006 Douglas Gregor <doug.gregor -at- gmail.com>.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpi.hpp [1:1]
- boost/mpi/allocator.hpp [1:1]
- boost/mpi/config.hpp [1:1]
- boost/mpi/datatype_fwd.hpp [1:1]
- boost/mpi/detail/communicator_sc.hpp [1:1]
- boost/mpi/environment.hpp [1:1]
- boost/mpi/nonblocking.hpp [1:1]
- boost/mpi/python.hpp [1:1]
- boost/mpi/python/config.hpp [1:1]
- boost/mpi/python/serialize.hpp [1:1]
- boost/mpi/request.hpp [1:1]
- boost/mpi/status.hpp [1:1]
- boost/mpi/timer.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 753eb328ad6d344907c3dba8d325784a
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/area.hpp [3:6]
- boost/geometry/algorithms/assign.hpp [3:6]
- boost/geometry/algorithms/buffer.hpp [3:5]
- boost/geometry/algorithms/clear.hpp [3:5]
- boost/geometry/algorithms/convert.hpp [3:6]
- boost/geometry/algorithms/correct.hpp [3:6]
- boost/geometry/algorithms/covered_by.hpp [3:5]
- boost/geometry/algorithms/crosses.hpp [3:6]
- boost/geometry/algorithms/detail/as_range.hpp [3:5]
- boost/geometry/algorithms/detail/assign_box_corners.hpp [3:5]
- boost/geometry/algorithms/detail/assign_indexed_point.hpp [3:5]
- boost/geometry/algorithms/detail/assign_values.hpp [3:5]
- boost/geometry/algorithms/detail/calculate_null.hpp [3:5]
- boost/geometry/algorithms/detail/calculate_sum.hpp [3:6]
- boost/geometry/algorithms/detail/centroid/translating_transformer.hpp [3:6]
- boost/geometry/algorithms/detail/convert_indexed_to_indexed.hpp [3:5]
- boost/geometry/algorithms/detail/convert_point_to_point.hpp [3:5]
- boost/geometry/algorithms/detail/covered_by/implementation.hpp [3:5]
- boost/geometry/algorithms/detail/covered_by/interface.hpp [3:5]
- boost/geometry/algorithms/detail/for_each_range.hpp [3:5]
- boost/geometry/algorithms/detail/multi_modify.hpp [3:5]
- boost/geometry/algorithms/detail/multi_modify_with_predicate.hpp [3:5]
- boost/geometry/algorithms/detail/multi_sum.hpp [3:5]
- boost/geometry/algorithms/detail/point_on_border.hpp [3:5]
- boost/geometry/algorithms/detail/sections/range_by_section.hpp [3:5]
- boost/geometry/algorithms/detail/within/implementation.hpp [3:5]
- boost/geometry/algorithms/detail/within/interface.hpp [3:5]
- boost/geometry/algorithms/detail/within/point_in_geometry.hpp [3:6]
- boost/geometry/algorithms/detail/within/within_no_turns.hpp [3:5]
- boost/geometry/algorithms/make.hpp [3:5]
- boost/geometry/algorithms/reverse.hpp [3:6]
- boost/geometry/algorithms/transform.hpp [3:6]
- boost/geometry/algorithms/unique.hpp [3:6]
- boost/geometry/algorithms/within.hpp [3:5]
- boost/geometry/arithmetic/arithmetic.hpp [3:5]
- boost/geometry/arithmetic/cross_product.hpp [3:5]
- boost/geometry/arithmetic/determinant.hpp [3:5]
- boost/geometry/arithmetic/dot_product.hpp [3:5]
- boost/geometry/core/access.hpp [3:5]
- boost/geometry/core/closure.hpp [3:5]
- boost/geometry/core/coordinate_dimension.hpp [3:5]
- boost/geometry/core/coordinate_system.hpp [3:5]
- boost/geometry/core/coordinate_type.hpp [3:5]
- boost/geometry/core/exterior_ring.hpp [3:5]
- boost/geometry/core/geometry_id.hpp [3:5]
- boost/geometry/core/interior_rings.hpp [3:5]
- boost/geometry/core/interior_type.hpp [3:5]
- boost/geometry/core/is_areal.hpp [3:5]
- boost/geometry/core/mutable_range.hpp [3:5]
- boost/geometry/core/point_order.hpp [3:5]
- boost/geometry/core/point_type.hpp [3:5]
- boost/geometry/core/radius.hpp [3:5]
- boost/geometry/core/reverse_dispatch.hpp [3:5]
- boost/geometry/core/tag.hpp [3:5]
- boost/geometry/core/tag_cast.hpp [3:5]
- boost/geometry/core/tags.hpp [3:5]
- boost/geometry/core/topological_dimension.hpp [3:5]
- boost/geometry/geometries/adapted/boost_tuple.hpp [3:5]
- boost/geometry/geometries/adapted/c_array.hpp [3:5]
- boost/geometry/geometries/adapted/std_pair_as_segment.hpp [3:5]
- boost/geometry/geometries/box.hpp [3:5]
- boost/geometry/geometries/concepts/box_concept.hpp [3:5]
- boost/geometry/geometries/concepts/check.hpp [3:5]
- boost/geometry/geometries/concepts/linestring_concept.hpp [3:5]
- boost/geometry/geometries/concepts/multi_linestring_concept.hpp [3:5]
- boost/geometry/geometries/concepts/multi_point_concept.hpp [3:5]
- boost/geometry/geometries/concepts/multi_polygon_concept.hpp [3:5]
- boost/geometry/geometries/concepts/polygon_concept.hpp [3:5]
- boost/geometry/geometries/concepts/ring_concept.hpp [3:5]
- boost/geometry/geometries/concepts/segment_concept.hpp [3:5]
- boost/geometry/geometries/geometries.hpp [3:5]
- boost/geometry/geometries/linestring.hpp [3:6]
- boost/geometry/geometries/multi_linestring.hpp [3:6]
- boost/geometry/geometries/multi_point.hpp [3:6]
- boost/geometry/geometries/multi_polygon.hpp [3:6]
- boost/geometry/geometries/point_xy.hpp [3:5]
- boost/geometry/geometries/polygon.hpp [3:6]
- boost/geometry/geometries/register/box.hpp [3:5]
- boost/geometry/geometries/register/linestring.hpp [3:5]
- boost/geometry/geometries/register/multi_linestring.hpp [3:5]
- boost/geometry/geometries/register/multi_point.hpp [3:5]
- boost/geometry/geometries/register/multi_polygon.hpp [3:5]
- boost/geometry/geometries/register/point.hpp [3:5]
- boost/geometry/geometries/register/ring.hpp [3:5]
- boost/geometry/geometries/register/segment.hpp [3:5]
- boost/geometry/geometries/ring.hpp [3:6]
- boost/geometry/geometries/segment.hpp [3:5]
- boost/geometry/geometries/variant.hpp [3:5]
- boost/geometry/io/dsv/write.hpp [3:6]
- boost/geometry/io/io.hpp [3:5]
- boost/geometry/io/wkt/detail/prefix.hpp [3:5]
- boost/geometry/io/wkt/detail/wkt_multi.hpp [3:5]
- boost/geometry/io/wkt/read.hpp [3:6]
- boost/geometry/io/wkt/stream.hpp [3:5]
- boost/geometry/io/wkt/wkt.hpp [3:5]
- boost/geometry/iterators/base.hpp [3:5]
- boost/geometry/iterators/closing_iterator.hpp [3:5]
- boost/geometry/iterators/ever_circling_iterator.hpp [3:5]
- boost/geometry/multi/algorithms/area.hpp [3:5]
- boost/geometry/multi/algorithms/centroid.hpp [3:5]
- boost/geometry/multi/algorithms/clear.hpp [3:5]
- boost/geometry/multi/algorithms/convert.hpp [3:5]
- boost/geometry/multi/algorithms/correct.hpp [3:5]
- boost/geometry/multi/algorithms/covered_by.hpp [3:6]
- boost/geometry/multi/algorithms/detail/for_each_range.hpp [3:5]
- boost/geometry/multi/algorithms/detail/modify.hpp [3:5]
- boost/geometry/multi/algorithms/detail/modify_with_predicate.hpp [3:5]
- boost/geometry/multi/algorithms/detail/multi_sum.hpp [3:5]
- boost/geometry/multi/algorithms/detail/point_on_border.hpp [3:5]
- boost/geometry/multi/algorithms/detail/sections/range_by_section.hpp [3:5]
- boost/geometry/multi/algorithms/detail/sections/sectionalize.hpp [3:5]
- boost/geometry/multi/algorithms/envelope.hpp [3:5]
- boost/geometry/multi/algorithms/equals.hpp [3:5]
- boost/geometry/multi/algorithms/for_each.hpp [3:5]
- boost/geometry/multi/algorithms/length.hpp [3:5]
- boost/geometry/multi/algorithms/num_geometries.hpp [3:5]
- boost/geometry/multi/algorithms/num_interior_rings.hpp [3:5]
- boost/geometry/multi/algorithms/perimeter.hpp [3:5]
- boost/geometry/multi/algorithms/reverse.hpp [3:5]
- boost/geometry/multi/algorithms/simplify.hpp [3:5]
- boost/geometry/multi/algorithms/transform.hpp [3:5]
- boost/geometry/multi/algorithms/unique.hpp [3:5]
- boost/geometry/multi/algorithms/within.hpp [3:6]
- boost/geometry/multi/core/closure.hpp [3:5]
- boost/geometry/multi/core/geometry_id.hpp [3:5]
- boost/geometry/multi/core/interior_rings.hpp [3:5]
- boost/geometry/multi/core/is_areal.hpp [3:5]
- boost/geometry/multi/core/point_order.hpp [3:5]
- boost/geometry/multi/core/point_type.hpp [3:5]
- boost/geometry/multi/core/ring_type.hpp [3:5]
- boost/geometry/multi/core/tags.hpp [3:5]
- boost/geometry/multi/core/topological_dimension.hpp [3:5]
- boost/geometry/multi/geometries/concepts/check.hpp [3:5]
- boost/geometry/multi/geometries/concepts/multi_linestring_concept.hpp [3:5]
- boost/geometry/multi/geometries/concepts/multi_point_concept.hpp [3:5]
- boost/geometry/multi/geometries/concepts/multi_polygon_concept.hpp [3:5]
- boost/geometry/multi/geometries/multi_geometries.hpp [3:5]
- boost/geometry/multi/geometries/multi_linestring.hpp [3:5]
- boost/geometry/multi/geometries/multi_point.hpp [3:5]
- boost/geometry/multi/geometries/multi_polygon.hpp [3:5]
- boost/geometry/multi/geometries/register/multi_linestring.hpp [3:5]
- boost/geometry/multi/geometries/register/multi_point.hpp [3:5]
- boost/geometry/multi/geometries/register/multi_polygon.hpp [3:5]
- boost/geometry/multi/io/dsv/write.hpp [3:5]
- boost/geometry/multi/io/wkt/detail/prefix.hpp [3:5]
- boost/geometry/multi/io/wkt/read.hpp [3:5]
- boost/geometry/multi/io/wkt/wkt.hpp [3:5]
- boost/geometry/multi/io/wkt/write.hpp [3:5]
- boost/geometry/multi/strategies/cartesian/centroid_average.hpp [3:5]
- boost/geometry/multi/views/detail/range_type.hpp [3:5]
- boost/geometry/srs/sphere.hpp [3:5]
- boost/geometry/srs/spheroid.hpp [3:5]
- boost/geometry/srs/srs.hpp [3:5]
- boost/geometry/strategies/agnostic/point_in_box_by_side.hpp [3:5]
- boost/geometry/strategies/area.hpp [3:6]
- boost/geometry/strategies/cartesian/area.hpp [3:6]
- boost/geometry/strategies/cartesian/area_surveyor.hpp [3:6]
- boost/geometry/strategies/cartesian/centroid_average.hpp [3:6]
- boost/geometry/strategies/cartesian/distance_pythagoras.hpp [3:5]
- boost/geometry/strategies/cartesian/point_in_poly_crossings_multiply.hpp [3:5]
- boost/geometry/strategies/cartesian/point_in_poly_franklin.hpp [3:5]
- boost/geometry/strategies/centroid.hpp [3:5]
- boost/geometry/strategies/compare.hpp [3:5]
- boost/geometry/strategies/concepts/area_concept.hpp [3:6]
- boost/geometry/strategies/concepts/centroid_concept.hpp [3:5]
- boost/geometry/strategies/concepts/convex_hull_concept.hpp [3:5]
- boost/geometry/strategies/concepts/segment_intersect_concept.hpp [3:5]
- boost/geometry/strategies/concepts/simplify_concept.hpp [3:5]
- boost/geometry/strategies/concepts/within_concept.hpp [3:5]
- boost/geometry/strategies/convex_hull.hpp [3:5]
- boost/geometry/strategies/covered_by.hpp [3:5]
- boost/geometry/strategies/default_area_result.hpp [3:6]
- boost/geometry/strategies/side.hpp [3:5]
- boost/geometry/strategies/side_info.hpp [3:5]
- boost/geometry/strategies/strategies.hpp [3:6]
- boost/geometry/strategies/tags.hpp [3:5]
- boost/geometry/strategies/transform.hpp [3:5]
- boost/geometry/strategies/transform/inverse_transformer.hpp [3:5]
- boost/geometry/strategies/transform/map_transformer.hpp [3:5]
- boost/geometry/strategies/within.hpp [3:5]
- boost/geometry/util/add_const_if_c.hpp [3:5]
- boost/geometry/util/closure_as_bool.hpp [3:5]
- boost/geometry/util/coordinate_cast.hpp [3:5]
- boost/geometry/util/for_each_coordinate.hpp [3:5]
- boost/geometry/util/order_as_direction.hpp [3:5]
- boost/geometry/util/parameter_type_of.hpp [3:5]
- boost/geometry/util/promote_floating_point.hpp [3:5]
- boost/geometry/util/select_calculation_type.hpp [3:5]
- boost/geometry/util/select_coordinate_type.hpp [3:5]
- boost/geometry/util/select_most_precise.hpp [3:5]
- boost/geometry/views/box_view.hpp [3:5]
- boost/geometry/views/closeable_view.hpp [3:5]
- boost/geometry/views/detail/normalized_view.hpp [3:5]
- boost/geometry/views/detail/points_view.hpp [3:5]
- boost/geometry/views/detail/range_type.hpp [3:5]
- boost/geometry/views/identity_view.hpp [3:5]
- boost/geometry/views/reversible_view.hpp [3:5]
- boost/geometry/views/segment_view.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 759c4f0c247332c3b69c2ae95cc3bad8
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/cpp_int/import_export.hpp at line 4, boost/multiprecision/traits/is_backend.hpp at line 4, boost/multiprecision/traits/is_byte_container.hpp at line 4
- License text:
- // Copyright 2015 John Maddock. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/multiprecision/cpp_int/import_export.hpp [2:4]
- boost/multiprecision/traits/is_backend.hpp [2:4]
- boost/multiprecision/traits/is_byte_container.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 75be4ee40bbff38ffcbd45f8444abfaf
-BELONGS ya.make
- License text:
- /* Copyright (c) 2002-2006 CrystalClear Software, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/detail/binary_search.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 54a6b4f4ccedc472d9ace99a2ee5a7df
+BELONGS ya.make
+ License text:
+ // Copyright 2007 Alexandre Courpron
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/container/detail/function_detector.hpp [16:16]
+ boost/intrusive/detail/function_detector.hpp [16:16]
+
+KEEP COPYRIGHT_SERVICE_LABEL 54ac8d85aa70c2e80d3cd32c49f020f6
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container_hash/detail/hash_float.hpp at line 4
+ License text:
+ // Copyright 2005-2012 Daniel James.
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/container_hash/detail/hash_float.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 54b2da91a0751d0f63e2e371f49db3ff
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/array.hpp at line 6, boost/serialization/array_optimization.hpp at line 6, boost/serialization/array_wrapper.hpp at line 6, boost/serialization/boost_array.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/serialization/array.hpp [4:6]
+ boost/serialization/array_optimization.hpp [4:6]
+ boost/serialization/array_wrapper.hpp [4:6]
+ boost/serialization/boost_array.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 54c918145a85409d3cb52ce62e5949ce
+BELONGS ya.make
+ License text:
+ // Copyright 2008 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/detail/sp_convertible.hpp [12:12]
+
+KEEP COPYRIGHT_SERVICE_LABEL 54f2d52d08b1f1665d9592dca3505a8a
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2016 Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/formulas/eccentricity_sqr.hpp [3:3]
+ boost/geometry/formulas/gnomonic_intersection.hpp [3:3]
+ boost/geometry/formulas/gnomonic_spheroid.hpp [3:3]
+ boost/geometry/formulas/result_direct.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 55167afaab66d1f9305d04b599518a94
+BELONGS libs/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/test/impl/test_framework_init_observer.ipp at line 3, boost/test/test_framework_init_observer.hpp at line 3, libs/test/src/test_framework_init_observer.cpp at line 3
+ License text:
+ // (c) Copyright Raffi Enficiaud 2017.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/test/impl/test_framework_init_observer.ipp [1:3]
+ boost/test/test_framework_init_observer.hpp [1:3]
+ libs/test/src/test_framework_init_observer.cpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 55370d2706d0c4b0defe5ea97850695c
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/other/workaround.h at line 4, boost/predef/platform/ios.h at line 4
+ License text:
+ Copyright Rene Rivera 2017
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/predef/other/workaround.h [2:4]
+ boost/predef/platform/ios.h [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 553dd745e86757a08cb75a0e5c758ba8
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iterator/function_input_iterator.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/iterator/function_input_iterator.hpp [1:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 55b50589a90f6abb0dcaedb86d9ce7ed
+BELONGS ya.make
+ License text:
+ // Copyright Beman Dawes 2006
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/detail/bitmask.hpp [3:3]
+ boost/detail/identifier.hpp [3:3]
+ boost/system/system_error.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 55ca623f968febd6fd79198819a49b60
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2002 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
+ // Copyright (C) 2002 Gary Powell (gwpowell@hotmail.com)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/lambda/algorithm.hpp [2:3]
+ boost/lambda/numeric.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5643cf41039c657434b05f2553ba3490
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2014 Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/relate/boundary_checker.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5665aa24d7a6ea916dcdcce7fb0e04a4
+BELONGS libs/serialization/ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ libs/serialization/src/codecvt_null.cpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 568c28c5b395d2cbe887dfbfefcce6c9
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2012 Oswin Krause
+ // Copyright (c) 2013 Joaquim Duran
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/ublas/matrix_vector.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 56b725b9f15bba9b40cf58c1889a032b
+BELONGS ya.make
+ License text:
+ // Copyright 2015 Peter Dimov.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/bind/placeholders.hpp [13:14]
+ boost/mp11.hpp [4:4]
+ boost/mp11/detail/mp_map_find.hpp [4:4]
+ boost/mp11/detail/mp_plus.hpp [4:4]
+ boost/mp11/integral.hpp [4:4]
+ boost/mp11/set.hpp [4:4]
+ boost/ptr_container/detail/ptr_container_disable_deprecated.hpp [13:13]
+ boost/smart_ptr/detail/sp_disable_deprecated.hpp [13:13]
+ boost/type_traits/common_type.hpp [5:5]
+ boost/type_traits/copy_cv.hpp [5:5]
+ boost/type_traits/detail/common_arithmetic_type.hpp [5:5]
+ boost/type_traits/detail/common_type_impl.hpp [5:5]
+ boost/type_traits/detail/composite_member_pointer_type.hpp [5:5]
+ boost/type_traits/detail/composite_pointer_type.hpp [5:5]
+ boost/type_traits/detail/mp_defer.hpp [5:5]
+ boost/type_traits/type_identity.hpp [5:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 571fac471d484775627ddc0a5d7a8bf1
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic.hpp [2:14]
+ boost/spirit/home/classic/dynamic.hpp [2:5]
+ boost/spirit/home/classic/dynamic/if.hpp [2:5]
+ boost/spirit/home/classic/iterator/impl/position_iterator.ipp [2:5]
+ boost/spirit/home/classic/iterator/position_iterator.hpp [2:5]
+ boost/spirit/home/classic/utility.hpp [2:9]
+
+KEEP COPYRIGHT_SERVICE_LABEL 572b131daaeb41ada07b46e9bcc351e8
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2005-2010 The Trustees of Indiana University.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/one_bit_color_map.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5743b39c1f0217bca40e868f1beca8ed
+BELONGS ya.make
+ License text:
+ // (C) Copyright John Maddock 2005-2006.
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/hypot.hpp [1:3]
+ boost/math/special_functions/log1p.hpp [1:3]
+ boost/math/tools/fraction.hpp [1:3]
+ boost/math/tools/series.hpp [1:3]
+ boost/math/tools/stats.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 575773811ff587d545b0c47b5cd1e390
+BELONGS ya.make
+ License text:
+ // Copyright Benjamin Sobotta 2012
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/distributions/skew_normal.hpp [1:1]
+ boost/math/special_functions/owens_t.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5789ac1ea1cab431bffdc8ab634e3c24
+BELONGS ya.make
+ License text:
+ // Copyright (C) Douglas Gregor 2008
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/function/function_fwd.hpp [2:2]
+ boost/function/function_typeof.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 57edbb76525ea1f3bdb3c0226d2bd138
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/sync/windows/named_condition.hpp at line 5, boost/interprocess/sync/windows/named_condition_any.hpp at line 5, boost/interprocess/sync/windows/named_mutex.hpp at line 5, boost/interprocess/sync/windows/named_recursive_mutex.hpp at line 5, boost/interprocess/sync/windows/named_semaphore.hpp at line 5, boost/interprocess/sync/windows/named_sync.hpp at line 5, boost/interprocess/sync/windows/winapi_mutex_wrapper.hpp at line 5, boost/interprocess/sync/windows/winapi_semaphore_wrapper.hpp at line 5, boost/interprocess/sync/windows/winapi_wrapper_common.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2011-2012. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/interprocess/sync/windows/named_condition.hpp [3:5]
+ boost/interprocess/sync/windows/named_condition_any.hpp [3:5]
+ boost/interprocess/sync/windows/named_mutex.hpp [3:5]
+ boost/interprocess/sync/windows/named_recursive_mutex.hpp [3:5]
+ boost/interprocess/sync/windows/named_semaphore.hpp [3:5]
+ boost/interprocess/sync/windows/named_sync.hpp [3:5]
+ boost/interprocess/sync/windows/winapi_mutex_wrapper.hpp [3:5]
+ boost/interprocess/sync/windows/winapi_semaphore_wrapper.hpp [3:5]
+ boost/interprocess/sync/windows/winapi_wrapper_common.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 586afb33401cfbc0d9c28c9f0b024801
+BELONGS ya.make
+ License text:
+ // Copyright 2005 Jeremy G. Siek
+ // Authors: Jeremy G. Siek
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/adj_list_serialize.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 58d478b39bd1a875647210df9056995b
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/wrapper.hpp at line 6
+ License text:
+ // (C) Copyright 2005-2006 Matthias Troyer
+ // Use, modification and distribution is subject to the Boost Software
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/serialization/wrapper.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5910471981114db2b4b957c21d1bfa7d
+BELONGS ya.make
+ License text:
+ * Copyright 2000 Jens Maurer
+ * Copyright 2002 Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/interval.hpp [3:4]
+ boost/numeric/interval/arith.hpp [3:4]
+ boost/numeric/interval/compare/explicit.hpp [3:4]
+ boost/numeric/interval/detail/bcc_rounding_control.hpp [3:4]
+ boost/numeric/interval/detail/bugs.hpp [3:4]
+ boost/numeric/interval/detail/c99_rounding_control.hpp [3:4]
+ boost/numeric/interval/detail/c99sub_rounding_control.hpp [3:4]
+ boost/numeric/interval/detail/ppc_rounding_control.hpp [3:5]
+ boost/numeric/interval/detail/sparc_rounding_control.hpp [3:4]
+ boost/numeric/interval/detail/x86_rounding_control.hpp [3:4]
+ boost/numeric/interval/detail/x86gcc_rounding_control.hpp [3:4]
+ boost/numeric/interval/limits.hpp [3:4]
+ boost/numeric/interval/transc.hpp [3:4]
+ boost/numeric/interval/utility.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 591904c44c8bfb3a6e54db322f25b723
+BELONGS ya.make
+ License text:
+ Copyright (c) 2016 Modified Work Barrett Adair
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/callable_traits/detail/unguarded/function_ptr.hpp [2:2]
+ boost/callable_traits/detail/unguarded/function_ptr_3.hpp [2:2]
+ boost/callable_traits/detail/unguarded/function_ptr_varargs.hpp [2:2]
+ boost/callable_traits/detail/unguarded/function_ptr_varargs_3.hpp [2:2]
+ boost/callable_traits/detail/unguarded/pmf.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 591a92ff47bb81394e84f3de5b78215b
+BELONGS ya.make
+ License text:
+ Copyright 2015 Glen Joseph Fernandes
+ (glenjofe@gmail.com)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/align/align_down.hpp [2:3]
+ boost/align/align_up.hpp [2:3]
+ boost/align/assume_aligned.hpp [5:6]
+ boost/align/detail/align_down.hpp [2:3]
+ boost/align/detail/align_up.hpp [2:3]
+ boost/align/detail/assume_aligned.hpp [5:6]
+ boost/align/detail/assume_aligned_clang.hpp [2:3]
+ boost/align/detail/assume_aligned_gcc.hpp [5:6]
+ boost/align/detail/assume_aligned_intel.hpp [5:6]
+ boost/align/detail/assume_aligned_msvc.hpp [5:6]
+ boost/align/detail/element_type.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 593dc5957f6dce93881eb7fe8969d3c7
+BELONGS ya.make
+ License text:
+ // (C) Copyright 2005 Matthias Troyer
+ // (C) Copyright 2006 Douglas Gregor <doug.gregor -at- gmail.com>
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpi/detail/content_oarchive.hpp [1:1]
+ boost/mpi/detail/forward_iprimitive.hpp [1:1]
+ boost/mpi/detail/forward_oprimitive.hpp [1:1]
+ boost/mpi/detail/forward_skeleton_iarchive.hpp [1:1]
+ boost/mpi/detail/forward_skeleton_oarchive.hpp [1:1]
+ boost/mpi/detail/ignore_iprimitive.hpp [1:1]
+ boost/mpi/detail/ignore_oprimitive.hpp [1:1]
+ boost/mpi/detail/ignore_skeleton_oarchive.hpp [1:1]
+ boost/mpi/detail/mpi_datatype_cache.hpp [1:1]
+ boost/mpi/detail/mpi_datatype_oarchive.hpp [1:1]
+ boost/mpi/detail/mpi_datatype_primitive.hpp [1:1]
+ boost/mpi/detail/packed_iprimitive.hpp [1:1]
+ boost/mpi/detail/packed_oprimitive.hpp [1:1]
+ boost/mpi/detail/text_skeleton_oarchive.hpp [1:1]
+ boost/mpi/packed_iarchive.hpp [1:2]
+ boost/mpi/packed_oarchive.hpp [1:2]
+ boost/mpi/skeleton_and_content.hpp [1:2]
+ boost/serialization/collection_size_type.hpp [4:6]
+ boost/serialization/valarray.hpp [12:14]
+ boost/serialization/vector.hpp [12:15]
+
+KEEP COPYRIGHT_SERVICE_LABEL 595319185a88d46351ddfb060dbf8fde
+BELONGS ya.make
+ License text:
+ // Copyright Aleksey Gurtovoy 2003-2004
+ // Copyright David Abrahams 2003-2004
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/aux_/inserter_algorithm.hpp [5:6]
+ boost/mpl/aux_/order_impl.hpp [5:6]
+ boost/mpl/back_inserter.hpp [5:6]
+ boost/mpl/copy.hpp [5:6]
+ boost/mpl/copy_if.hpp [5:6]
+ boost/mpl/front_inserter.hpp [5:6]
+ boost/mpl/has_key.hpp [5:6]
+ boost/mpl/has_key_fwd.hpp [5:6]
+ boost/mpl/inserter.hpp [5:6]
+ boost/mpl/key_type.hpp [5:6]
+ boost/mpl/key_type_fwd.hpp [5:6]
+ boost/mpl/map/aux_/at_impl.hpp [5:6]
+ boost/mpl/map/aux_/begin_end_impl.hpp [5:6]
+ boost/mpl/map/aux_/clear_impl.hpp [5:6]
+ boost/mpl/map/aux_/erase_impl.hpp [5:6]
+ boost/mpl/map/aux_/erase_key_impl.hpp [5:6]
+ boost/mpl/map/aux_/has_key_impl.hpp [5:6]
+ boost/mpl/map/aux_/insert_impl.hpp [5:6]
+ boost/mpl/map/aux_/item.hpp [5:6]
+ boost/mpl/map/aux_/iterator.hpp [5:6]
+ boost/mpl/map/aux_/key_type_impl.hpp [5:6]
+ boost/mpl/map/aux_/map0.hpp [5:6]
+ boost/mpl/map/aux_/preprocessed/no_ctps/map10.hpp [2:3]
+ boost/mpl/map/aux_/preprocessed/no_ctps/map20.hpp [2:3]
+ boost/mpl/map/aux_/preprocessed/no_ctps/map30.hpp [2:3]
+ boost/mpl/map/aux_/preprocessed/no_ctps/map40.hpp [2:3]
+ boost/mpl/map/aux_/preprocessed/no_ctps/map50.hpp [2:3]
+ boost/mpl/map/aux_/preprocessed/plain/map10.hpp [2:3]
+ boost/mpl/map/aux_/preprocessed/plain/map20.hpp [2:3]
+ boost/mpl/map/aux_/preprocessed/plain/map30.hpp [2:3]
+ boost/mpl/map/aux_/preprocessed/plain/map40.hpp [2:3]
+ boost/mpl/map/aux_/preprocessed/plain/map50.hpp [2:3]
+ boost/mpl/map/aux_/preprocessed/typeof_based/map10.hpp [2:3]
+ boost/mpl/map/aux_/preprocessed/typeof_based/map20.hpp [2:3]
+ boost/mpl/map/aux_/preprocessed/typeof_based/map30.hpp [2:3]
+ boost/mpl/map/aux_/preprocessed/typeof_based/map40.hpp [2:3]
+ boost/mpl/map/aux_/preprocessed/typeof_based/map50.hpp [2:3]
+ boost/mpl/map/aux_/tag.hpp [5:6]
+ boost/mpl/map/aux_/value_type_impl.hpp [5:6]
+ boost/mpl/map/map0.hpp [5:6]
+ boost/mpl/map/map10.hpp [5:6]
+ boost/mpl/map/map20.hpp [5:6]
+ boost/mpl/map/map30.hpp [5:6]
+ boost/mpl/map/map40.hpp [5:6]
+ boost/mpl/map/map50.hpp [5:6]
+ boost/mpl/order.hpp [5:6]
+ boost/mpl/order_fwd.hpp [5:6]
+ boost/mpl/pair_view.hpp [5:6]
+ boost/mpl/remove.hpp [5:6]
+ boost/mpl/remove_if.hpp [5:6]
+ boost/mpl/replace.hpp [5:7]
+ boost/mpl/replace_if.hpp [5:7]
+ boost/mpl/set/aux_/begin_end_impl.hpp [5:6]
+ boost/mpl/set/aux_/clear_impl.hpp [5:6]
+ boost/mpl/set/aux_/erase_impl.hpp [5:6]
+ boost/mpl/set/aux_/erase_key_impl.hpp [5:6]
+ boost/mpl/set/aux_/has_key_impl.hpp [5:6]
+ boost/mpl/set/aux_/insert_impl.hpp [5:6]
+ boost/mpl/set/aux_/item.hpp [5:6]
+ boost/mpl/set/aux_/iterator.hpp [5:6]
+ boost/mpl/set/aux_/key_type_impl.hpp [5:6]
+ boost/mpl/set/aux_/preprocessed/plain/set10.hpp [2:3]
+ boost/mpl/set/aux_/preprocessed/plain/set10_c.hpp [2:3]
+ boost/mpl/set/aux_/preprocessed/plain/set20.hpp [2:3]
+ boost/mpl/set/aux_/preprocessed/plain/set20_c.hpp [2:3]
+ boost/mpl/set/aux_/preprocessed/plain/set30.hpp [2:3]
+ boost/mpl/set/aux_/preprocessed/plain/set30_c.hpp [2:3]
+ boost/mpl/set/aux_/preprocessed/plain/set40.hpp [2:3]
+ boost/mpl/set/aux_/preprocessed/plain/set40_c.hpp [2:3]
+ boost/mpl/set/aux_/preprocessed/plain/set50.hpp [2:3]
+ boost/mpl/set/aux_/preprocessed/plain/set50_c.hpp [2:3]
+ boost/mpl/set/aux_/set0.hpp [5:6]
+ boost/mpl/set/aux_/tag.hpp [5:6]
+ boost/mpl/set/aux_/value_type_impl.hpp [5:6]
+ boost/mpl/set/set0.hpp [5:6]
+ boost/mpl/set/set0_c.hpp [5:6]
+ boost/mpl/set/set10.hpp [5:6]
+ boost/mpl/set/set10_c.hpp [5:6]
+ boost/mpl/set/set20.hpp [5:6]
+ boost/mpl/set/set20_c.hpp [5:6]
+ boost/mpl/set/set30.hpp [5:6]
+ boost/mpl/set/set30_c.hpp [5:6]
+ boost/mpl/set/set40.hpp [5:6]
+ boost/mpl/set/set40_c.hpp [5:6]
+ boost/mpl/set/set50.hpp [5:6]
+ boost/mpl/set/set50_c.hpp [5:6]
+ boost/mpl/transform.hpp [5:6]
+ boost/mpl/value_type.hpp [5:6]
+ boost/mpl/value_type_fwd.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 596d215980dce936d1d42dadce287430
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001, 2002 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/core/ref.hpp [17:19]
+ boost/intrusive_ptr.hpp [7:7]
+ boost/scoped_array.hpp [4:5]
+ boost/scoped_ptr.hpp [4:5]
+ boost/serialization/detail/shared_ptr_nmt_132.hpp [7:8]
+ boost/shared_array.hpp [7:8]
+ boost/smart_ptr/intrusive_ptr.hpp [7:7]
+ boost/smart_ptr/scoped_array.hpp [4:5]
+ boost/smart_ptr/scoped_ptr.hpp [4:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 599d75ac2b4bb8a11ff470bef1798ec5
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/core.hpp [2:8]
+ boost/spirit/home/classic/phoenix/casts.hpp [3:4]
+ boost/spirit/home/classic/phoenix/new.hpp [3:5]
+ boost/spirit/home/classic/utility.hpp [2:9]
+
+KEEP COPYRIGHT_SERVICE_LABEL 599e47817ea1a7b6f600dbe2026aadad
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2000-2010
+ // Joerg Walter, Mathias Koch, Gunter Winkler, David Bellot
+ // Copyright (c) 2014, Athanasios Iliopoulos
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/ublas/matrix.hpp [2:4]
+ boost/numeric/ublas/vector.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 59ebac4ff1b00b3baca98f0279da51a4
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001, 2002 Python Software Foundation; All Rights
+ // Reserved
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/python/detail/python22_fixed.h [4:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 59f7375811a04f7a1af214791e9e2591
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2004-2009 The Trustees of Indiana University.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/use_mpi.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5a2ce7c8c2691b2dee1cd71c641d0daf
+BELONGS ya.make
+ License text:
+ Copyright (c) 2009 Chris Hoeppler
+ Copyright (c) 2014 Lee Clagett
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/x3/directive/confix.hpp [2:3]
+ boost/spirit/home/x3/directive/seek.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5a55975c544a17d902b5b7a6165934ba
+BELONGS ya.make
+ License text:
+ // (C) Copyright 2008-10 Anthony Williams
+ // (C) Copyright 2011-2015 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/future.hpp [1:2]
+ boost/thread/futures/future_error.hpp [1:2]
+ boost/thread/futures/future_status.hpp [1:2]
+ boost/thread/futures/is_future_type.hpp [1:2]
+ boost/thread/futures/launch.hpp [1:2]
+ boost/thread/futures/wait_for_all.hpp [1:2]
+ boost/thread/futures/wait_for_any.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5a997291bb89319f64237173cbd354ce
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/typeof/decltype.hpp [1:4]
+ boost/typeof/native.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5ab12e05dd6c2ce7bcafaa94b9ccb6e4
+BELONGS ya.make
+ License text:
+ // Copyright 2015 Steven Watanabe
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_erasure/detail/auto_link.hpp [3:3]
+ boost/type_erasure/detail/dynamic_vtable.hpp [3:3]
+ boost/type_erasure/dynamic_any_cast.hpp [3:3]
+ boost/type_erasure/dynamic_binding.hpp [3:3]
+ boost/type_erasure/register_binding.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5ab711ab8144e3652f3ab473e36a4162
+BELONGS ya.make
+ License text:
+ * Date: Thu Dec 06 13:21:54 MST 2007
+ * Copyright: 2007-2008 CodeRage, LLC
+ * Author: Jonathan Turkanis
+ * Contact: turkanis at coderage dot com
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/iostreams/detail/absolute_path.hpp [8:11]
+ boost/iostreams/detail/adapter/device_adapter.hpp [8:10]
+ boost/iostreams/detail/adapter/filter_adapter.hpp [6:9]
+ boost/iostreams/detail/config/fpos.hpp [8:11]
+ boost/iostreams/detail/config/rtl.hpp [14:16]
+ boost/iostreams/detail/current_directory.hpp [8:11]
+ boost/iostreams/detail/execute.hpp [8:11]
+ boost/iostreams/detail/functional.hpp [8:11]
+ boost/iostreams/detail/restrict_impl.hpp [8:11]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5ac86f7028be2a8c407bd6184321ac70
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2008-2009 Ben Hanson (http://www.benhanson.net/)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/support/detail/lexer/file_input.hpp [2:2]
+ boost/spirit/home/support/detail/lexer/generate_cpp.hpp [2:2]
+ boost/spirit/home/support/detail/lexer/input.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5acab5fd542f310531a308204d2dd114
+BELONGS ya.make
+ License text:
+ // Copyright Beman Dawes 1994, 2006, 2008
+ // Copyright Vicente J. Botet Escriba 2009-2011
+ // Copyright Christopher Brown 2013
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/chrono/detail/inlined/mac/thread_clock.hpp [3:5]
+ boost/chrono/detail/inlined/posix/thread_clock.hpp [3:4]
+ boost/multiprecision/traits/explicit_conversion.hpp [2:5]
+ boost/multiprecision/traits/is_restricted_conversion.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5ad1faae7d4106b7b5cff4815582e17d
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic.hpp [2:14]
+ boost/spirit/home/classic/core.hpp [2:8]
+ boost/spirit/home/classic/iterator.hpp [2:4]
+ boost/spirit/home/classic/tree/ast.hpp [2:4]
+ boost/spirit/home/classic/tree/common.hpp [2:5]
+ boost/spirit/home/classic/tree/parse_tree.hpp [2:4]
+ boost/spirit/home/classic/tree/parse_tree_utils.hpp [2:4]
+ boost/spirit/home/classic/utility.hpp [2:9]
+ boost/spirit/home/classic/utility/impl/escape_char.ipp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5b610a2723cd8f65dd39615a55e76ce7
+BELONGS ya.make
+ License text:
+ * Copyright (c) 2003-2004
+ * Douglas Gregor
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/signals/detail/config.hpp [6:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5b88761341a84ebd8b3d9e49fa0c7b47
+BELONGS libs/log/ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: libs/log/config/xopen-source-600/xopen_source_600.cpp at line 4
+ License text:
+ * Copyright Andrey Semashev 2017.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ libs/log/config/xopen-source-600/xopen_source_600.cpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5b90d7dcbdfffd189deaf30fcf6cd55f
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/slist.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2004-2015. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/container/slist.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5ba021a7799c2c0bdb25af2c47755daa
+BELONGS libs/log/ya.make ya.make
+ License text:
+ Copyright Andrey Semashev 2007 - 2015.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/beast/core/detail/cpu_info.hpp [36:36]
+ boost/log/attributes.hpp [2:4]
+ boost/log/attributes/attribute.hpp [2:4]
+ boost/log/attributes/attribute_cast.hpp [2:4]
+ boost/log/attributes/attribute_name.hpp [2:4]
+ boost/log/attributes/attribute_set.hpp [2:4]
+ boost/log/attributes/attribute_value.hpp [2:4]
+ boost/log/attributes/attribute_value_impl.hpp [2:4]
+ boost/log/attributes/attribute_value_set.hpp [2:4]
+ boost/log/attributes/clock.hpp [2:4]
+ boost/log/attributes/constant.hpp [2:4]
+ boost/log/attributes/counter.hpp [2:4]
+ boost/log/attributes/current_process_id.hpp [2:4]
+ boost/log/attributes/current_process_name.hpp [2:4]
+ boost/log/attributes/current_thread_id.hpp [2:4]
+ boost/log/attributes/fallback_policy.hpp [2:4]
+ boost/log/attributes/fallback_policy_fwd.hpp [2:4]
+ boost/log/attributes/function.hpp [2:4]
+ boost/log/attributes/mutable_constant.hpp [2:4]
+ boost/log/attributes/named_scope.hpp [2:4]
+ boost/log/attributes/scoped_attribute.hpp [2:4]
+ boost/log/attributes/time_traits.hpp [2:4]
+ boost/log/attributes/timer.hpp [2:4]
+ boost/log/attributes/value_extraction.hpp [2:4]
+ boost/log/attributes/value_extraction_fwd.hpp [2:4]
+ boost/log/attributes/value_visitation.hpp [2:4]
+ boost/log/attributes/value_visitation_fwd.hpp [2:4]
+ boost/log/common.hpp [2:4]
+ boost/log/core.hpp [2:4]
+ boost/log/core/core.hpp [2:4]
+ boost/log/core/record.hpp [2:4]
+ boost/log/core/record_view.hpp [2:4]
+ boost/log/detail/adaptive_mutex.hpp [2:4]
+ boost/log/detail/asio_fwd.hpp [2:4]
+ boost/log/detail/attr_output_impl.hpp [2:4]
+ boost/log/detail/attr_output_terminal.hpp [2:4]
+ boost/log/detail/attribute_get_value_impl.hpp [2:4]
+ boost/log/detail/attribute_predicate.hpp [2:4]
+ boost/log/detail/cleanup_scope_guard.hpp [2:4]
+ boost/log/detail/code_conversion.hpp [2:4]
+ boost/log/detail/config.hpp [2:4]
+ boost/log/detail/copy_cv.hpp [2:4]
+ boost/log/detail/custom_terminal_spec.hpp [2:4]
+ boost/log/detail/date_time_fmt_gen_traits_fwd.hpp [2:4]
+ boost/log/detail/date_time_format_parser.hpp [2:4]
+ boost/log/detail/decomposed_time.hpp [2:4]
+ boost/log/detail/deduce_char_type.hpp [2:4]
+ boost/log/detail/default_attribute_names.hpp [2:4]
+ boost/log/detail/embedded_string_type.hpp [2:4]
+ boost/log/detail/enqueued_record.hpp [2:4]
+ boost/log/detail/event.hpp [2:4]
+ boost/log/detail/fake_mutex.hpp [2:4]
+ boost/log/detail/footer.hpp [2:4]
+ boost/log/detail/format.hpp [2:4]
+ boost/log/detail/function_traits.hpp [2:4]
+ boost/log/detail/generate_overloads.hpp [2:4]
+ boost/log/detail/header.hpp [2:4]
+ boost/log/detail/id.hpp [2:4]
+ boost/log/detail/is_character_type.hpp [2:4]
+ boost/log/detail/is_ostream.hpp [2:4]
+ boost/log/detail/light_function.hpp [2:4]
+ boost/log/detail/light_function_pp.hpp [2:4]
+ boost/log/detail/light_rw_mutex.hpp [2:4]
+ boost/log/detail/locking_ptr.hpp [2:4]
+ boost/log/detail/locks.hpp [2:4]
+ boost/log/detail/named_scope_fmt_pp.hpp [2:4]
+ boost/log/detail/native_typeof.hpp [2:4]
+ boost/log/detail/parameter_tools.hpp [2:4]
+ boost/log/detail/pp_identity.hpp [2:4]
+ boost/log/detail/process_id.hpp [2:4]
+ boost/log/detail/setup_config.hpp [2:4]
+ boost/log/detail/singleton.hpp [2:4]
+ boost/log/detail/sink_init_helpers.hpp [2:4]
+ boost/log/detail/snprintf.hpp [2:4]
+ boost/log/detail/tagged_integer.hpp [2:4]
+ boost/log/detail/thread_id.hpp [2:4]
+ boost/log/detail/thread_specific.hpp [2:4]
+ boost/log/detail/threadsafe_queue.hpp [2:4]
+ boost/log/detail/timestamp.hpp [2:4]
+ boost/log/detail/trivial_keyword.hpp [2:4]
+ boost/log/detail/unary_function_terminal.hpp [2:4]
+ boost/log/detail/unhandled_exception_count.hpp [2:4]
+ boost/log/detail/value_ref_visitation.hpp [2:4]
+ boost/log/exceptions.hpp [2:4]
+ boost/log/expressions.hpp [2:4]
+ boost/log/expressions/attr.hpp [2:4]
+ boost/log/expressions/attr_fwd.hpp [2:4]
+ boost/log/expressions/filter.hpp [2:4]
+ boost/log/expressions/formatter.hpp [2:4]
+ boost/log/expressions/formatters.hpp [2:4]
+ boost/log/expressions/formatters/c_decorator.hpp [2:4]
+ boost/log/expressions/formatters/char_decorator.hpp [2:4]
+ boost/log/expressions/formatters/csv_decorator.hpp [2:4]
+ boost/log/expressions/formatters/date_time.hpp [2:4]
+ boost/log/expressions/formatters/format.hpp [2:4]
+ boost/log/expressions/formatters/if.hpp [2:4]
+ boost/log/expressions/formatters/named_scope.hpp [2:4]
+ boost/log/expressions/formatters/stream.hpp [2:4]
+ boost/log/expressions/formatters/wrap_formatter.hpp [2:4]
+ boost/log/expressions/formatters/xml_decorator.hpp [2:4]
+ boost/log/expressions/is_keyword_descriptor.hpp [2:4]
+ boost/log/expressions/keyword.hpp [2:4]
+ boost/log/expressions/keyword_fwd.hpp [2:4]
+ boost/log/expressions/message.hpp [2:4]
+ boost/log/expressions/predicates.hpp [2:4]
+ boost/log/expressions/predicates/begins_with.hpp [2:4]
+ boost/log/expressions/predicates/channel_severity_filter.hpp [2:4]
+ boost/log/expressions/predicates/contains.hpp [2:4]
+ boost/log/expressions/predicates/ends_with.hpp [2:4]
+ boost/log/expressions/predicates/has_attr.hpp [2:4]
+ boost/log/expressions/predicates/is_debugger_present.hpp [2:4]
+ boost/log/expressions/predicates/is_in_range.hpp [2:4]
+ boost/log/expressions/predicates/matches.hpp [2:4]
+ boost/log/expressions/record.hpp [2:4]
+ boost/log/keywords/auto_flush.hpp [2:4]
+ boost/log/keywords/channel.hpp [2:4]
+ boost/log/keywords/delimiter.hpp [2:4]
+ boost/log/keywords/depth.hpp [2:4]
+ boost/log/keywords/empty_marker.hpp [2:4]
+ boost/log/keywords/facility.hpp [2:4]
+ boost/log/keywords/file_name.hpp [2:4]
+ boost/log/keywords/filter.hpp [2:4]
+ boost/log/keywords/format.hpp [2:4]
+ boost/log/keywords/ident.hpp [2:4]
+ boost/log/keywords/incomplete_marker.hpp [2:4]
+ boost/log/keywords/ip_version.hpp [2:4]
+ boost/log/keywords/iteration.hpp [2:4]
+ boost/log/keywords/log_name.hpp [2:4]
+ boost/log/keywords/log_source.hpp [2:4]
+ boost/log/keywords/max_files.hpp [2:4]
+ boost/log/keywords/max_size.hpp [2:4]
+ boost/log/keywords/message_file.hpp [2:4]
+ boost/log/keywords/min_free_space.hpp [2:4]
+ boost/log/keywords/open_mode.hpp [2:4]
+ boost/log/keywords/order.hpp [2:4]
+ boost/log/keywords/ordering_window.hpp [2:4]
+ boost/log/keywords/registration.hpp [2:4]
+ boost/log/keywords/rotation_size.hpp [2:4]
+ boost/log/keywords/scan_method.hpp [2:4]
+ boost/log/keywords/severity.hpp [2:4]
+ boost/log/keywords/start_thread.hpp [2:4]
+ boost/log/keywords/target.hpp [2:4]
+ boost/log/keywords/time_based_rotation.hpp [2:4]
+ boost/log/keywords/use_impl.hpp [2:4]
+ boost/log/sinks.hpp [2:4]
+ boost/log/sinks/async_frontend.hpp [2:4]
+ boost/log/sinks/attribute_mapping.hpp [2:4]
+ boost/log/sinks/basic_sink_backend.hpp [2:4]
+ boost/log/sinks/basic_sink_frontend.hpp [2:4]
+ boost/log/sinks/block_on_overflow.hpp [2:4]
+ boost/log/sinks/bounded_fifo_queue.hpp [2:4]
+ boost/log/sinks/bounded_ordering_queue.hpp [2:4]
+ boost/log/sinks/debug_output_backend.hpp [2:4]
+ boost/log/sinks/drop_on_overflow.hpp [2:4]
+ boost/log/sinks/event_log_backend.hpp [2:4]
+ boost/log/sinks/event_log_constants.hpp [2:4]
+ boost/log/sinks/frontend_requirements.hpp [2:4]
+ boost/log/sinks/sink.hpp [2:4]
+ boost/log/sinks/sync_frontend.hpp [2:4]
+ boost/log/sinks/syslog_backend.hpp [2:4]
+ boost/log/sinks/syslog_constants.hpp [2:4]
+ boost/log/sinks/text_file_backend.hpp [2:4]
+ boost/log/sinks/text_multifile_backend.hpp [2:4]
+ boost/log/sinks/text_ostream_backend.hpp [2:4]
+ boost/log/sinks/unbounded_fifo_queue.hpp [2:4]
+ boost/log/sinks/unbounded_ordering_queue.hpp [2:4]
+ boost/log/sinks/unlocked_frontend.hpp [2:4]
+ boost/log/sources/basic_logger.hpp [2:4]
+ boost/log/sources/channel_feature.hpp [2:4]
+ boost/log/sources/channel_logger.hpp [2:4]
+ boost/log/sources/exception_handler_feature.hpp [2:4]
+ boost/log/sources/features.hpp [2:4]
+ boost/log/sources/global_logger_storage.hpp [2:4]
+ boost/log/sources/logger.hpp [2:4]
+ boost/log/sources/record_ostream.hpp [2:4]
+ boost/log/sources/severity_channel_logger.hpp [2:4]
+ boost/log/sources/severity_feature.hpp [2:4]
+ boost/log/sources/severity_logger.hpp [2:4]
+ boost/log/sources/threading_models.hpp [2:4]
+ boost/log/support/date_time.hpp [2:4]
+ boost/log/support/exception.hpp [2:4]
+ boost/log/support/regex.hpp [2:4]
+ boost/log/support/spirit_classic.hpp [2:4]
+ boost/log/support/spirit_qi.hpp [2:4]
+ boost/log/support/std_regex.hpp [2:4]
+ boost/log/support/xpressive.hpp [2:4]
+ boost/log/trivial.hpp [2:4]
+ boost/log/utility/exception_handler.hpp [2:4]
+ boost/log/utility/formatting_ostream.hpp [2:4]
+ boost/log/utility/formatting_ostream_fwd.hpp [2:4]
+ boost/log/utility/functional.hpp [2:4]
+ boost/log/utility/functional/as_action.hpp [2:4]
+ boost/log/utility/functional/begins_with.hpp [2:4]
+ boost/log/utility/functional/bind.hpp [2:4]
+ boost/log/utility/functional/bind_assign.hpp [2:4]
+ boost/log/utility/functional/bind_output.hpp [2:4]
+ boost/log/utility/functional/bind_to_log.hpp [2:4]
+ boost/log/utility/functional/contains.hpp [2:4]
+ boost/log/utility/functional/ends_with.hpp [2:4]
+ boost/log/utility/functional/fun_ref.hpp [2:4]
+ boost/log/utility/functional/in_range.hpp [2:4]
+ boost/log/utility/functional/logical.hpp [2:4]
+ boost/log/utility/functional/matches.hpp [2:4]
+ boost/log/utility/functional/nop.hpp [2:4]
+ boost/log/utility/functional/save_result.hpp [2:4]
+ boost/log/utility/manipulators.hpp [2:4]
+ boost/log/utility/manipulators/add_value.hpp [2:4]
+ boost/log/utility/manipulators/dump.hpp [2:4]
+ boost/log/utility/manipulators/to_log.hpp [2:4]
+ boost/log/utility/once_block.hpp [2:4]
+ boost/log/utility/record_ordering.hpp [2:4]
+ boost/log/utility/setup.hpp [2:4]
+ boost/log/utility/setup/common_attributes.hpp [2:4]
+ boost/log/utility/setup/console.hpp [2:4]
+ boost/log/utility/setup/file.hpp [2:4]
+ boost/log/utility/setup/filter_parser.hpp [2:4]
+ boost/log/utility/setup/formatter_parser.hpp [2:4]
+ boost/log/utility/setup/from_settings.hpp [2:4]
+ boost/log/utility/setup/from_stream.hpp [2:4]
+ boost/log/utility/setup/settings.hpp [2:4]
+ boost/log/utility/setup/settings_parser.hpp [2:4]
+ boost/log/utility/strictest_lock.hpp [2:4]
+ boost/log/utility/string_literal_fwd.hpp [2:4]
+ boost/log/utility/type_dispatch/date_time_types.hpp [2:4]
+ boost/log/utility/type_dispatch/dynamic_type_dispatcher.hpp [2:4]
+ boost/log/utility/type_dispatch/standard_types.hpp [2:4]
+ boost/log/utility/type_dispatch/static_type_dispatcher.hpp [2:4]
+ boost/log/utility/type_dispatch/type_dispatcher.hpp [2:4]
+ boost/log/utility/unique_identifier_name.hpp [2:4]
+ boost/log/utility/unused_variable.hpp [2:4]
+ boost/log/utility/value_ref.hpp [2:4]
+ boost/log/utility/value_ref_fwd.hpp [2:4]
+ libs/log/config/visibility/visibility.cpp [2:4]
+ libs/log/config/x86-ext/avx2.cpp [2:4]
+ libs/log/config/x86-ext/ssse3.cpp [2:4]
+ libs/log/src/alignment_gap_between.hpp [2:4]
+ libs/log/src/attribute_name.cpp [2:4]
+ libs/log/src/attribute_set.cpp [2:4]
+ libs/log/src/attribute_set_impl.hpp [2:4]
+ libs/log/src/attribute_value_set.cpp [2:4]
+ libs/log/src/code_conversion.cpp [2:4]
+ libs/log/src/core.cpp [2:4]
+ libs/log/src/date_time_format_parser.cpp [2:4]
+ libs/log/src/default_attribute_names.cpp [2:4]
+ libs/log/src/default_sink.cpp [2:4]
+ libs/log/src/default_sink.hpp [2:4]
+ libs/log/src/dump.cpp [2:4]
+ libs/log/src/dump_avx2.cpp [2:4]
+ libs/log/src/dump_ssse3.cpp [2:4]
+ libs/log/src/event.cpp [2:4]
+ libs/log/src/exceptions.cpp [2:4]
+ libs/log/src/format_parser.cpp [2:4]
+ libs/log/src/global_logger_storage.cpp [2:4]
+ libs/log/src/id_formatting.hpp [2:4]
+ libs/log/src/named_scope.cpp [2:4]
+ libs/log/src/named_scope_format_parser.cpp [2:4]
+ libs/log/src/once_block.cpp [2:4]
+ libs/log/src/process_id.cpp [2:4]
+ libs/log/src/process_name.cpp [2:4]
+ libs/log/src/record_ostream.cpp [2:4]
+ libs/log/src/setup/default_filter_factory.cpp [2:4]
+ libs/log/src/setup/default_filter_factory.hpp [2:4]
+ libs/log/src/setup/default_formatter_factory.cpp [2:4]
+ libs/log/src/setup/default_formatter_factory.hpp [2:4]
+ libs/log/src/setup/filter_parser.cpp [2:4]
+ libs/log/src/setup/formatter_parser.cpp [2:4]
+ libs/log/src/setup/init_from_settings.cpp [2:4]
+ libs/log/src/setup/init_from_stream.cpp [2:4]
+ libs/log/src/setup/matches_relation_factory.cpp [2:4]
+ libs/log/src/setup/parser_utils.cpp [2:4]
+ libs/log/src/setup/parser_utils.hpp [2:4]
+ libs/log/src/setup/settings_parser.cpp [2:4]
+ libs/log/src/severity_level.cpp [2:4]
+ libs/log/src/spirit_encoding.cpp [2:4]
+ libs/log/src/spirit_encoding.hpp [2:4]
+ libs/log/src/stateless_allocator.hpp [2:4]
+ libs/log/src/syslog_backend.cpp [2:4]
+ libs/log/src/text_file_backend.cpp [2:4]
+ libs/log/src/text_multifile_backend.cpp [2:4]
+ libs/log/src/text_ostream_backend.cpp [2:4]
+ libs/log/src/thread_id.cpp [2:4]
+ libs/log/src/thread_specific.cpp [2:4]
+ libs/log/src/threadsafe_queue.cpp [2:4]
+ libs/log/src/timer.cpp [2:4]
+ libs/log/src/trivial.cpp [2:4]
+ libs/log/src/unhandled_exception_count.cpp [2:4]
+ libs/log/src/unique_ptr.hpp [2:4]
+ libs/log/src/windows/debug_output_backend.cpp [2:4]
+ libs/log/src/windows/event_log_backend.cpp [2:4]
+ libs/log/src/windows/event_log_registry.hpp [2:4]
+ libs/log/src/windows/light_rw_mutex.cpp [2:4]
+ libs/log/src/windows/simple_event_log.h [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5bb192a3ec0466664f95da7b439ee5e7
+BELONGS ya.make
+ License text:
+ // Copyright 2012 Fernando Vilas
+ // 2010 Daniel Trebbien
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/maximum_adjacency_search.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5bc125f7c304158bc8d50edd46156a29
+BELONGS ya.make
+ License text:
+ Copyright (c) 2002-2003 Joel de Guzman
+ Copyright (c) 2002-2003 Juan Carlos Arevalo-Baeza
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/utility/functor_parser.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5c0e0f4ecbfc5930fc8af588470713b4
+BELONGS ya.make
+ License text:
+ Copyright (c) 2015 Mario Lang
+ Copyright (c) 2001-2011 Hartmut Kaiser
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/x3/directive/matches.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5c26b4d7fe3c1805cc2c8b0e905940b0
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2003 Daniel Nuffer
+ Copyright (c) 2001-2007 Hartmut Kaiser
+ Revised 2007, Copyright (c) Tobias Schwinger
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/tree/common.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5c2d365acd08b2a111a1df0616d30393
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/statechart/result.hpp at line 6, boost/statechart/simple_state.hpp at line 6, boost/statechart/state_machine.hpp at line 6
+ License text:
+ // Copyright 2002-2010 Andreas Huber Doenni
+ // Distributed under the Boost Software License, Version 1.0. (See accompany-
+ // ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/statechart/result.hpp [4:6]
+ boost/statechart/simple_state.hpp [4:6]
+ boost/statechart/state_machine.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5c403ec7fc96b9eeeb8d0d6da8005e84
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/architecture/blackfin.h at line 4, boost/predef/other.h at line 4, boost/predef/other/endian.h at line 4, boost/predef/platform.h at line 4
+ License text:
+ Copyright Rene Rivera 2013-2015
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/predef/architecture/blackfin.h [2:4]
+ boost/predef/other.h [2:4]
+ boost/predef/other/endian.h [2:4]
+ boost/predef/platform.h [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5c85c701ea71a691c59490ec39b34ede
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/smart_ptr/detail/bad_weak_ptr.hpp at line 8, boost/interprocess/smart_ptr/detail/shared_count.hpp at line 8
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/interprocess/smart_ptr/detail/bad_weak_ptr.hpp [5:8]
+ boost/interprocess/smart_ptr/detail/shared_count.hpp [5:9]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5c8ac41153fe8e9daf8181b70c9bcb2b
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/stdlib/roguewave.hpp [1:6]
+ boost/iterator/permutation_iterator.hpp [1:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5ca418207a9a9e57884eb84192e8056e
+BELONGS libs/filesystem/ya.make libs/program_options/ya.make libs/serialization/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/program_options/cmdline.hpp at line 3, boost/program_options/detail/convert.hpp at line 3, boost/program_options/detail/parsers.hpp at line 3, boost/program_options/detail/value_semantic.hpp at line 3, boost/program_options/environment_iterator.hpp at line 3, boost/program_options/eof_iterator.hpp at line 3, boost/program_options/option.hpp at line 3, boost/program_options/positional_options.hpp at line 3, boost/program_options/value_semantic.hpp at line 3, boost/program_options/version.hpp at line 3, libs/filesystem/src/utf8_codecvt_facet.cpp at line 3, libs/program_options/src/convert.cpp at line 3, libs/program_options/src/positional_options.cpp at line 3, libs/program_options/src/utf8_codecvt_facet.cpp at line 3, libs/program_options/src/value_semantic.cpp at line 3, libs/serialization/src/utf8_codecvt_facet.cpp at line 3
+ License text:
+ // Copyright Vladimir Prus 2004.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/program_options/cmdline.hpp [1:3]
+ boost/program_options/detail/convert.hpp [1:3]
+ boost/program_options/detail/parsers.hpp [1:3]
+ boost/program_options/detail/value_semantic.hpp [1:3]
+ boost/program_options/environment_iterator.hpp [1:3]
+ boost/program_options/eof_iterator.hpp [1:3]
+ boost/program_options/option.hpp [1:3]
+ boost/program_options/positional_options.hpp [1:3]
+ boost/program_options/value_semantic.hpp [1:3]
+ boost/program_options/version.hpp [1:3]
+ libs/filesystem/src/utf8_codecvt_facet.cpp [1:3]
+ libs/program_options/src/convert.cpp [1:3]
+ libs/program_options/src/positional_options.cpp [1:3]
+ libs/program_options/src/utf8_codecvt_facet.cpp [1:3]
+ libs/program_options/src/value_semantic.cpp [1:3]
+ libs/serialization/src/utf8_codecvt_facet.cpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5cce5dc14f00da42bb6f34ce5b2dfce4
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2002-2006 Marcin Kalicinski
+ // Copyright (C) 2013 Sebastian Redl
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/property_tree/detail/xml_parser_write.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5cd4a0c580c53e0ce656cd3fe8597d92
+BELONGS libs/random/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/integer_traits.hpp at line 5, boost/nondet_random.hpp at line 5, boost/random/random_device.hpp at line 5, boost/uuid/detail/random_provider_posix.ipp at line 5, boost/uuid/detail/random_provider_wincrypt.ipp at line 5, libs/random/src/random_device.cpp at line 5
+ License text:
+ * Copyright Jens Maurer 2000
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/integer_traits.hpp [3:5]
+ boost/nondet_random.hpp [3:5]
+ boost/random/random_device.hpp [3:6]
+ boost/uuid/detail/random_provider_posix.ipp [3:6]
+ boost/uuid/detail/random_provider_wincrypt.ipp [3:6]
+ libs/random/src/random_device.cpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5d19ba487dbef72a53fdf36bdd83309d
+BELONGS ya.make
+ License text:
+ /* Copyright (c) 2002-2003,2005 CrystalClear Software, Inc.
* Use, modification and distribution is subject to the
- * Boost Software License, Version 1.0. (See accompanying
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/date_time/locale_config.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 75ef7529f27f9a710eea2869f97333f1
-BELONGS libs/chrono/ya.make libs/filesystem/ya.make ya.make
- License text:
- // Copyright Beman Dawes 2008
- // Copyright Vicente J. Botet Escriba 2009
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/chrono/detail/inlined/chrono.hpp [3:4]
- boost/chrono/detail/inlined/mac/chrono.hpp [3:4]
- boost/chrono/detail/inlined/posix/chrono.hpp [3:4]
- boost/chrono/detail/inlined/win/chrono.hpp [3:4]
- boost/endian/detail/cover_operators.hpp [3:4]
- boost/spirit/home/support/detail/endian/cover_operators.hpp [3:4]
- libs/chrono/src/chrono.cpp [3:4]
- libs/filesystem/src/path.cpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 75f254658639d6099b8a2607570e97af
-BELONGS ya.make
- License text:
- // Copyright (C) 2003, 2008 Fernando Luis Cacciola Carballal.
- // Copyright (C) 2014 - 2017 Andrzej Krzemienski.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/optional/detail/old_optional_implementation.hpp [1:2]
- boost/optional/detail/optional_aligned_storage.hpp [1:2]
- boost/optional/detail/optional_config.hpp [1:2]
- boost/optional/detail/optional_factory_support.hpp [1:2]
- boost/optional/detail/optional_relops.hpp [1:2]
- boost/optional/detail/optional_swap.hpp [1:2]
- boost/optional/optional.hpp [1:2]
- boost/optional/optional_fwd.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7601e17851ca581823c83b37fe70dab1
-BELONGS ya.make
- License text:
- // (C) Copyright 2005 Matthias Troyer
- // (C) Copyright 2006 Douglas Gregor <doug.gregor -at- gmail.com>
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpi/packed_iarchive.hpp [1:2]
- boost/mpi/packed_oarchive.hpp [1:2]
- boost/mpi/python/skeleton_and_content.hpp [1:1]
- boost/mpi/skeleton_and_content.hpp [1:2]
- boost/mpi/skeleton_and_content_fwd.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 768f987faaed0adc6222ab24c7bd02e6
-BELONGS libs/context/ya.make libs/coroutine/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/context/detail/fcontext.hpp at line 4, boost/coroutine/all.hpp at line 4, boost/coroutine/asymmetric_coroutine.hpp at line 4, boost/coroutine/attributes.hpp at line 4, boost/coroutine/coroutine.hpp at line 4, boost/coroutine/detail/config.hpp at line 4, boost/coroutine/detail/coroutine_context.hpp at line 4, boost/coroutine/detail/data.hpp at line 4, boost/coroutine/detail/flags.hpp at line 4, boost/coroutine/detail/parameters.hpp at line 4, boost/coroutine/detail/pull_coroutine_impl.hpp at line 4, boost/coroutine/detail/pull_coroutine_object.hpp at line 4, boost/coroutine/detail/pull_coroutine_synthesized.hpp at line 4, boost/coroutine/detail/push_coroutine_impl.hpp at line 4, boost/coroutine/detail/push_coroutine_object.hpp at line 4, boost/coroutine/detail/push_coroutine_synthesized.hpp at line 4, boost/coroutine/detail/setup.hpp at line 4, boost/coroutine/detail/symmetric_coroutine_call.hpp at line 4, boost/coroutine/detail/symmetric_coroutine_impl.hpp at line 4, boost/coroutine/detail/symmetric_coroutine_object.hpp at line 4, boost/coroutine/detail/symmetric_coroutine_yield.hpp at line 4, boost/coroutine/detail/trampoline.hpp at line 4, boost/coroutine/detail/trampoline_pull.hpp at line 4, boost/coroutine/detail/trampoline_push.hpp at line 4, boost/coroutine/exceptions.hpp at line 4, boost/coroutine/flags.hpp at line 4, boost/coroutine/posix/protected_stack_allocator.hpp at line 4, boost/coroutine/posix/segmented_stack_allocator.hpp at line 4, boost/coroutine/protected_stack_allocator.hpp at line 4, boost/coroutine/segmented_stack_allocator.hpp at line 4, boost/coroutine/stack_allocator.hpp at line 4, boost/coroutine/stack_context.hpp at line 4, boost/coroutine/stack_traits.hpp at line 4, boost/coroutine/standard_stack_allocator.hpp at line 4, boost/coroutine/symmetric_coroutine.hpp at line 4, boost/coroutine/windows/protected_stack_allocator.hpp at line 4, libs/context/src/asm/jump_arm_aapcs_elf_gas.S at line 4, libs/context/src/asm/jump_arm_aapcs_macho_gas.S at line 4, libs/context/src/asm/jump_arm_aapcs_pe_armasm.asm at line 4, libs/context/src/asm/jump_arm_aapcs_pe_armasm.masm at line 4, libs/context/src/asm/jump_i386_ms_pe_gas.asm at line 4, libs/context/src/asm/jump_i386_ms_pe_masm.asm at line 4, libs/context/src/asm/jump_i386_ms_pe_masm.masm at line 4, libs/context/src/asm/jump_i386_sysv_elf_gas.S at line 4, libs/context/src/asm/jump_i386_sysv_macho_gas.S at line 4, libs/context/src/asm/jump_mips32_o32_elf_gas.S at line 4, libs/context/src/asm/jump_ppc32_sysv_elf_gas.S at line 4, libs/context/src/asm/jump_ppc32_sysv_macho_gas.S at line 4, libs/context/src/asm/jump_ppc32_sysv_xcoff_gas.S at line 4, libs/context/src/asm/jump_ppc64_sysv_elf_gas.S at line 4, libs/context/src/asm/jump_ppc64_sysv_macho_gas.S at line 4, libs/context/src/asm/jump_x86_64_ms_pe_gas.asm at line 4, libs/context/src/asm/jump_x86_64_ms_pe_masm.asm at line 4, libs/context/src/asm/jump_x86_64_ms_pe_masm.masm at line 4, libs/context/src/asm/jump_x86_64_sysv_elf_gas.S at line 4, libs/context/src/asm/jump_x86_64_sysv_macho_gas.S at line 4, libs/context/src/asm/make_arm_aapcs_elf_gas.S at line 4, libs/context/src/asm/make_arm_aapcs_macho_gas.S at line 4, libs/context/src/asm/make_arm_aapcs_pe_armasm.asm at line 4, libs/context/src/asm/make_arm_aapcs_pe_armasm.masm at line 4, libs/context/src/asm/make_i386_ms_pe_gas.asm at line 4, libs/context/src/asm/make_i386_ms_pe_masm.asm at line 4, libs/context/src/asm/make_i386_ms_pe_masm.masm at line 4, libs/context/src/asm/make_i386_sysv_elf_gas.S at line 4, libs/context/src/asm/make_i386_sysv_macho_gas.S at line 4, libs/context/src/asm/make_mips32_o32_elf_gas.S at line 4, libs/context/src/asm/make_ppc32_sysv_elf_gas.S at line 4, libs/context/src/asm/make_ppc32_sysv_macho_gas.S at line 4, libs/context/src/asm/make_ppc32_sysv_xcoff_gas.S at line 4, libs/context/src/asm/make_ppc64_sysv_elf_gas.S at line 4, libs/context/src/asm/make_ppc64_sysv_macho_gas.S at line 4, libs/context/src/asm/make_x86_64_ms_pe_gas.asm at line 4, libs/context/src/asm/make_x86_64_ms_pe_masm.asm at line 4, libs/context/src/asm/make_x86_64_ms_pe_masm.masm at line 4, libs/context/src/asm/make_x86_64_sysv_elf_gas.S at line 4, libs/context/src/asm/make_x86_64_sysv_macho_gas.S at line 4, libs/context/src/asm/ontop_arm_aapcs_elf_gas.S at line 4, libs/context/src/asm/ontop_arm_aapcs_macho_gas.S at line 4, libs/context/src/asm/ontop_arm_aapcs_pe_armasm.asm at line 4, libs/context/src/asm/ontop_arm_aapcs_pe_armasm.masm at line 4, libs/context/src/asm/ontop_i386_ms_pe_gas.asm at line 4, libs/context/src/asm/ontop_i386_ms_pe_masm.asm at line 4, libs/context/src/asm/ontop_i386_ms_pe_masm.masm at line 4, libs/context/src/asm/ontop_i386_sysv_elf_gas.S at line 4, libs/context/src/asm/ontop_i386_sysv_macho_gas.S at line 4, libs/context/src/asm/ontop_mips32_o32_elf_gas.S at line 4, libs/context/src/asm/ontop_ppc32_sysv_elf_gas.S at line 4, libs/context/src/asm/ontop_ppc32_sysv_macho_gas.S at line 4, libs/context/src/asm/ontop_ppc32_sysv_xcoff_gas.S at line 4, libs/context/src/asm/ontop_ppc64_sysv_elf_gas.S at line 4, libs/context/src/asm/ontop_ppc64_sysv_macho_gas.S at line 4, libs/context/src/asm/ontop_x86_64_ms_pe_gas.asm at line 4, libs/context/src/asm/ontop_x86_64_ms_pe_masm.asm at line 4, libs/context/src/asm/ontop_x86_64_ms_pe_masm.masm at line 4, libs/context/src/asm/ontop_x86_64_sysv_elf_gas.S at line 4, libs/context/src/asm/ontop_x86_64_sysv_macho_gas.S at line 4, libs/context/src/execution_context.cpp at line 4, libs/context/src/untested.cpp at line 4, libs/coroutine/src/detail/coroutine_context.cpp at line 4, libs/coroutine/src/exceptions.cpp at line 4, libs/coroutine/src/posix/stack_traits.cpp at line 4, libs/coroutine/src/windows/stack_traits.cpp at line 4
- License text:
- // Copyright Oliver Kowalke 2009.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/context/detail/fcontext.hpp [2:4]
- boost/coroutine/all.hpp [2:4]
- boost/coroutine/asymmetric_coroutine.hpp [2:4]
- boost/coroutine/attributes.hpp [2:4]
- boost/coroutine/coroutine.hpp [2:4]
- boost/coroutine/detail/config.hpp [2:4]
- boost/coroutine/detail/coroutine_context.hpp [2:4]
- boost/coroutine/detail/data.hpp [2:4]
- boost/coroutine/detail/flags.hpp [2:4]
- boost/coroutine/detail/parameters.hpp [2:4]
- boost/coroutine/detail/pull_coroutine_impl.hpp [2:4]
- boost/coroutine/detail/pull_coroutine_object.hpp [2:4]
- boost/coroutine/detail/pull_coroutine_synthesized.hpp [2:4]
- boost/coroutine/detail/push_coroutine_impl.hpp [2:4]
- boost/coroutine/detail/push_coroutine_object.hpp [2:4]
- boost/coroutine/detail/push_coroutine_synthesized.hpp [2:4]
- boost/coroutine/detail/setup.hpp [2:4]
- boost/coroutine/detail/symmetric_coroutine_call.hpp [2:4]
- boost/coroutine/detail/symmetric_coroutine_impl.hpp [2:4]
- boost/coroutine/detail/symmetric_coroutine_object.hpp [2:4]
- boost/coroutine/detail/symmetric_coroutine_yield.hpp [2:4]
- boost/coroutine/detail/trampoline.hpp [2:4]
- boost/coroutine/detail/trampoline_pull.hpp [2:4]
- boost/coroutine/detail/trampoline_push.hpp [2:4]
- boost/coroutine/exceptions.hpp [2:4]
- boost/coroutine/flags.hpp [2:4]
- boost/coroutine/posix/protected_stack_allocator.hpp [2:4]
- boost/coroutine/posix/segmented_stack_allocator.hpp [2:4]
- boost/coroutine/protected_stack_allocator.hpp [2:4]
- boost/coroutine/segmented_stack_allocator.hpp [2:4]
- boost/coroutine/stack_allocator.hpp [2:4]
- boost/coroutine/stack_context.hpp [2:4]
- boost/coroutine/stack_traits.hpp [2:4]
- boost/coroutine/standard_stack_allocator.hpp [2:4]
- boost/coroutine/symmetric_coroutine.hpp [2:4]
- boost/coroutine/windows/protected_stack_allocator.hpp [2:4]
- libs/context/src/asm/jump_arm_aapcs_elf_gas.S [2:4]
- libs/context/src/asm/jump_arm_aapcs_macho_gas.S [2:4]
- libs/context/src/asm/jump_arm_aapcs_pe_armasm.asm [2:4]
- libs/context/src/asm/jump_arm_aapcs_pe_armasm.masm [2:4]
- libs/context/src/asm/jump_i386_ms_pe_gas.asm [2:5]
- libs/context/src/asm/jump_i386_ms_pe_masm.asm [2:4]
- libs/context/src/asm/jump_i386_ms_pe_masm.masm [2:4]
- libs/context/src/asm/jump_i386_sysv_elf_gas.S [2:4]
- libs/context/src/asm/jump_i386_sysv_macho_gas.S [2:4]
- libs/context/src/asm/jump_mips32_o32_elf_gas.S [2:4]
- libs/context/src/asm/jump_ppc32_sysv_elf_gas.S [2:4]
- libs/context/src/asm/jump_ppc32_sysv_macho_gas.S [2:4]
- libs/context/src/asm/jump_ppc32_sysv_xcoff_gas.S [2:4]
- libs/context/src/asm/jump_ppc64_sysv_elf_gas.S [2:4]
- libs/context/src/asm/jump_ppc64_sysv_macho_gas.S [2:4]
- libs/context/src/asm/jump_x86_64_ms_pe_gas.asm [2:5]
- libs/context/src/asm/jump_x86_64_ms_pe_masm.asm [2:4]
- libs/context/src/asm/jump_x86_64_ms_pe_masm.masm [2:4]
- libs/context/src/asm/jump_x86_64_sysv_elf_gas.S [2:4]
- libs/context/src/asm/jump_x86_64_sysv_macho_gas.S [2:4]
- libs/context/src/asm/make_arm_aapcs_elf_gas.S [2:4]
- libs/context/src/asm/make_arm_aapcs_macho_gas.S [2:4]
- libs/context/src/asm/make_arm_aapcs_pe_armasm.asm [2:4]
- libs/context/src/asm/make_arm_aapcs_pe_armasm.masm [2:4]
- libs/context/src/asm/make_i386_ms_pe_gas.asm [2:5]
- libs/context/src/asm/make_i386_ms_pe_masm.asm [2:4]
- libs/context/src/asm/make_i386_ms_pe_masm.masm [2:4]
- libs/context/src/asm/make_i386_sysv_elf_gas.S [2:4]
- libs/context/src/asm/make_i386_sysv_macho_gas.S [2:4]
- libs/context/src/asm/make_mips32_o32_elf_gas.S [2:4]
- libs/context/src/asm/make_ppc32_sysv_elf_gas.S [2:4]
- libs/context/src/asm/make_ppc32_sysv_macho_gas.S [2:4]
- libs/context/src/asm/make_ppc32_sysv_xcoff_gas.S [2:4]
- libs/context/src/asm/make_ppc64_sysv_elf_gas.S [2:4]
- libs/context/src/asm/make_ppc64_sysv_macho_gas.S [2:4]
- libs/context/src/asm/make_x86_64_ms_pe_gas.asm [2:5]
- libs/context/src/asm/make_x86_64_ms_pe_masm.asm [2:4]
- libs/context/src/asm/make_x86_64_ms_pe_masm.masm [2:4]
- libs/context/src/asm/make_x86_64_sysv_elf_gas.S [2:4]
- libs/context/src/asm/make_x86_64_sysv_macho_gas.S [2:4]
- libs/context/src/asm/ontop_arm_aapcs_elf_gas.S [2:4]
- libs/context/src/asm/ontop_arm_aapcs_macho_gas.S [2:4]
- libs/context/src/asm/ontop_arm_aapcs_pe_armasm.asm [2:4]
- libs/context/src/asm/ontop_arm_aapcs_pe_armasm.masm [2:4]
- libs/context/src/asm/ontop_i386_ms_pe_gas.asm [2:5]
- libs/context/src/asm/ontop_i386_ms_pe_masm.asm [2:4]
- libs/context/src/asm/ontop_i386_ms_pe_masm.masm [2:4]
- libs/context/src/asm/ontop_i386_sysv_elf_gas.S [2:4]
- libs/context/src/asm/ontop_i386_sysv_macho_gas.S [2:4]
- libs/context/src/asm/ontop_mips32_o32_elf_gas.S [2:4]
- libs/context/src/asm/ontop_ppc32_sysv_elf_gas.S [2:4]
- libs/context/src/asm/ontop_ppc32_sysv_macho_gas.S [2:4]
- libs/context/src/asm/ontop_ppc32_sysv_xcoff_gas.S [2:4]
- libs/context/src/asm/ontop_ppc64_sysv_elf_gas.S [2:4]
- libs/context/src/asm/ontop_ppc64_sysv_macho_gas.S [2:4]
- libs/context/src/asm/ontop_x86_64_ms_pe_gas.asm [2:5]
- libs/context/src/asm/ontop_x86_64_ms_pe_masm.asm [2:4]
- libs/context/src/asm/ontop_x86_64_ms_pe_masm.masm [2:4]
- libs/context/src/asm/ontop_x86_64_sysv_elf_gas.S [2:4]
- libs/context/src/asm/ontop_x86_64_sysv_macho_gas.S [2:4]
- libs/context/src/execution_context.cpp [2:4]
- libs/context/src/untested.cpp [2:4]
- libs/coroutine/src/detail/coroutine_context.cpp [2:4]
- libs/coroutine/src/exceptions.cpp [2:4]
- libs/coroutine/src/posix/stack_traits.cpp [2:4]
- libs/coroutine/src/windows/stack_traits.cpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 771f0ca891cf31e52365f2c5c7ea5ac9
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/detail/suffix.hpp at line 14
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/detail/suffix.hpp [4:14]
-
-KEEP COPYRIGHT_SERVICE_LABEL 77248a96a79940a9fa1d82b59477d791
-BELONGS ya.make
- License text:
- // Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
- // Copyright (c) 2005 Stefan Arentz (stefan at soze dot com)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/asio/detail/impl/kqueue_reactor.hpp [5:6]
- boost/asio/detail/impl/kqueue_reactor.ipp [5:6]
- boost/asio/detail/kqueue_reactor.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 774a1ad0f39541627409ed7b8900a512
-BELONGS ya.make
- License text:
- // Copyright Aleksey Gurtovoy 2001-2004
- // Copyright Peter Dimov 2001-2003
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/aux_/preprocessed/bcc/placeholders.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc551/placeholders.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc_pre590/placeholders.hpp [2:3]
- boost/mpl/aux_/preprocessed/dmc/placeholders.hpp [2:3]
- boost/mpl/aux_/preprocessed/gcc/placeholders.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc60/placeholders.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc70/placeholders.hpp [2:3]
- boost/mpl/aux_/preprocessed/mwcw/placeholders.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ctps/placeholders.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ttp/placeholders.hpp [2:3]
- boost/mpl/aux_/preprocessed/plain/placeholders.hpp [2:3]
- boost/mpl/placeholders.hpp [9:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL 774dfa6dd9adb18e5d17bc88b05266a7
-BELONGS ya.make
- License text:
- // Copyright (c) 2006 Xiaogang Zhang
- // Copyright (c) 2017 John Maddock
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/detail/bessel_i0.hpp [1:4]
- boost/math/special_functions/detail/bessel_i1.hpp [1:3]
- boost/math/special_functions/detail/bessel_k0.hpp [1:4]
- boost/math/special_functions/detail/bessel_k1.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 776cc7e58c2d3434091396c0c43068d3
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/smart_ptr/detail/bad_weak_ptr.hpp at line 8, boost/interprocess/sync/spin/interprocess_barrier.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/interprocess/smart_ptr/detail/bad_weak_ptr.hpp [5:8]
- boost/interprocess/sync/spin/interprocess_barrier.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7776713baab3f172d0d3c56b0cf3c911
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/move/algo/detail/pdqsort.hpp [24:28]
-
-KEEP COPYRIGHT_SERVICE_LABEL 778d126a908ae2e1cc990627956713b8
-BELONGS ya.make
- License text:
- // Copyright (c) 2006 Piotr Wyderski
- // Copyright (c) 2006 Tomas Puverle
- // Copyright (c) 2006 Peter Dimov
- // Copyright (c) 2011 Emil Dotchevski
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp [11:14]
-
-KEEP COPYRIGHT_SERVICE_LABEL 779e4efde656444e177d7d0cd7c60328
-BELONGS ya.make
- License text:
- // Copyright (c) 2011-2016 Adam Wulkiewicz, Lodz, Poland.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/index/equal_to.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 779f3f74aa28c6ec9cbf99f210980137
-BELONGS ya.make
- License text:
- // Copyright 2007 Stanford University
- // Authors: David Gleich
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/core_numbers.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 77be0e4f90c30bc5049b8af1874ed858
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2001-2011 Hartmut Kaiser
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/lex/lexer/lexertl/wrap_action.hpp [2:4]
- boost/spirit/home/qi/detail/assign_to.hpp [2:4]
- boost/spirit/home/qi/detail/construct.hpp [2:3]
- boost/spirit/home/qi/numeric/detail/real_impl.hpp [2:4]
- boost/spirit/home/support/action_dispatch.hpp [2:4]
- boost/spirit/home/support/container.hpp [2:4]
- boost/spirit/home/support/detail/endian.hpp [1:2]
- boost/spirit/home/support/detail/pow10.hpp [2:4]
- boost/spirit/home/support/detail/scoped_enum_emulation.hpp [1:2]
- boost/spirit/home/support/detail/sign.hpp [2:4]
- boost/spirit/home/support/iterators/look_ahead.hpp [1:3]
- boost/spirit/home/support/iterators/multi_pass.hpp [1:3]
- boost/spirit/home/support/iterators/multi_pass_fwd.hpp [2:4]
- boost/spirit/home/x3/support/numeric_utils/extract_real.hpp [2:4]
- boost/spirit/home/x3/support/numeric_utils/pow10.hpp [2:4]
- boost/spirit/home/x3/support/numeric_utils/sign.hpp [2:4]
- boost/spirit/home/x3/support/traits/container_traits.hpp [2:4]
- boost/spirit/home/x3/support/traits/optional_traits.hpp [2:4]
- boost/spirit/home/x3/support/traits/value_traits.hpp [2:4]
- boost/spirit/home/x3/version.hpp [2:4]
- boost/spirit/include/karma.hpp [2:4]
- boost/spirit/include/karma_action.hpp [2:4]
- boost/spirit/include/karma_alternative.hpp [2:4]
- boost/spirit/include/karma_and_predicate.hpp [2:4]
- boost/spirit/include/karma_attr_cast.hpp [2:4]
- boost/spirit/include/karma_auto.hpp [2:4]
- boost/spirit/include/karma_auxiliary.hpp [2:4]
- boost/spirit/include/karma_binary.hpp [2:4]
- boost/spirit/include/karma_bool.hpp [2:4]
- boost/spirit/include/karma_buffer.hpp [2:4]
- boost/spirit/include/karma_center_alignment.hpp [2:4]
- boost/spirit/include/karma_char.hpp [2:4]
- boost/spirit/include/karma_char_.hpp [2:4]
- boost/spirit/include/karma_char_class.hpp [2:4]
- boost/spirit/include/karma_columns.hpp [2:4]
- boost/spirit/include/karma_delimit.hpp [2:4]
- boost/spirit/include/karma_directive.hpp [2:4]
- boost/spirit/include/karma_domain.hpp [2:4]
- boost/spirit/include/karma_eol.hpp [2:4]
- boost/spirit/include/karma_eps.hpp [2:4]
- boost/spirit/include/karma_format.hpp [2:4]
- boost/spirit/include/karma_format_attr.hpp [2:4]
- boost/spirit/include/karma_format_auto.hpp [2:4]
- boost/spirit/include/karma_generate.hpp [2:4]
- boost/spirit/include/karma_generate_attr.hpp [2:4]
- boost/spirit/include/karma_generate_auto.hpp [2:4]
- boost/spirit/include/karma_int.hpp [2:4]
- boost/spirit/include/karma_kleene.hpp [2:4]
- boost/spirit/include/karma_lazy.hpp [2:4]
- boost/spirit/include/karma_left_alignment.hpp [2:4]
- boost/spirit/include/karma_list.hpp [2:4]
- boost/spirit/include/karma_maxwidth.hpp [2:4]
- boost/spirit/include/karma_no_delimit.hpp [2:4]
- boost/spirit/include/karma_nonterminal.hpp [2:4]
- boost/spirit/include/karma_not_predicate.hpp [2:4]
- boost/spirit/include/karma_numeric.hpp [2:4]
- boost/spirit/include/karma_omit.hpp [2:4]
- boost/spirit/include/karma_operator.hpp [2:4]
- boost/spirit/include/karma_optional.hpp [2:4]
- boost/spirit/include/karma_phoenix_attributes.hpp [2:4]
- boost/spirit/include/karma_plus.hpp [2:4]
- boost/spirit/include/karma_real.hpp [2:4]
- boost/spirit/include/karma_repeat.hpp [2:4]
- boost/spirit/include/karma_right_alignment.hpp [2:4]
- boost/spirit/include/karma_sequence.hpp [2:4]
- boost/spirit/include/karma_stream.hpp [2:4]
- boost/spirit/include/karma_strict_relaxed.hpp [2:4]
- boost/spirit/include/karma_string.hpp [2:4]
- boost/spirit/include/karma_symbols.hpp [2:4]
- boost/spirit/include/karma_uint.hpp [2:4]
- boost/spirit/include/karma_upper_lower_case.hpp [2:4]
- boost/spirit/include/karma_verbatim.hpp [2:4]
- boost/spirit/include/karma_what.hpp [2:4]
- boost/spirit/include/lex.hpp [2:4]
- boost/spirit/include/lex_domain.hpp [2:4]
- boost/spirit/include/lex_lexer.hpp [2:4]
- boost/spirit/include/lex_lexertl.hpp [2:4]
- boost/spirit/include/lex_lexertl_position_token.hpp [2:4]
- boost/spirit/include/lex_lexertl_token.hpp [2:4]
- boost/spirit/include/lex_static_lexertl.hpp [2:4]
- boost/spirit/include/lex_tokenize_and_parse.hpp [2:4]
- boost/spirit/include/phoenix.hpp [2:4]
- boost/spirit/include/phoenix_algorithm.hpp [2:4]
- boost/spirit/include/phoenix_bind.hpp [2:4]
- boost/spirit/include/phoenix_container.hpp [2:4]
- boost/spirit/include/phoenix_core.hpp [2:4]
- boost/spirit/include/phoenix_function.hpp [2:4]
- boost/spirit/include/phoenix_fusion.hpp [2:4]
- boost/spirit/include/phoenix_limits.hpp [2:4]
- boost/spirit/include/phoenix_object.hpp [2:4]
- boost/spirit/include/phoenix_operator.hpp [2:4]
- boost/spirit/include/phoenix_scope.hpp [2:4]
- boost/spirit/include/phoenix_statement.hpp [2:4]
- boost/spirit/include/phoenix_stl.hpp [2:4]
- boost/spirit/include/phoenix_version.hpp [2:4]
- boost/spirit/include/qi.hpp [2:4]
- boost/spirit/include/qi_action.hpp [2:4]
- boost/spirit/include/qi_alternative.hpp [2:4]
- boost/spirit/include/qi_and_predicate.hpp [2:4]
- boost/spirit/include/qi_as_string.hpp [2:4]
- boost/spirit/include/qi_attr.hpp [2:4]
- boost/spirit/include/qi_attr_cast.hpp [2:4]
- boost/spirit/include/qi_auto.hpp [2:4]
- boost/spirit/include/qi_auxiliary.hpp [2:4]
- boost/spirit/include/qi_binary.hpp [2:4]
- boost/spirit/include/qi_bool.hpp [2:4]
- boost/spirit/include/qi_char.hpp [2:4]
- boost/spirit/include/qi_char_.hpp [2:4]
- boost/spirit/include/qi_char_class.hpp [2:4]
- boost/spirit/include/qi_core.hpp [2:4]
- boost/spirit/include/qi_difference.hpp [2:4]
- boost/spirit/include/qi_directive.hpp [2:4]
- boost/spirit/include/qi_domain.hpp [2:4]
- boost/spirit/include/qi_eoi.hpp [2:4]
- boost/spirit/include/qi_eol.hpp [2:4]
- boost/spirit/include/qi_eps.hpp [2:4]
- boost/spirit/include/qi_expect.hpp [2:4]
- boost/spirit/include/qi_grammar.hpp [2:4]
- boost/spirit/include/qi_hold.hpp [2:4]
- boost/spirit/include/qi_int.hpp [2:4]
- boost/spirit/include/qi_kleene.hpp [2:4]
- boost/spirit/include/qi_lazy.hpp [2:4]
- boost/spirit/include/qi_lexeme.hpp [2:4]
- boost/spirit/include/qi_list.hpp [2:4]
- boost/spirit/include/qi_lit.hpp [2:4]
- boost/spirit/include/qi_match.hpp [2:4]
- boost/spirit/include/qi_match_attr.hpp [2:4]
- boost/spirit/include/qi_match_auto.hpp [2:4]
- boost/spirit/include/qi_no_case.hpp [2:4]
- boost/spirit/include/qi_nonterminal.hpp [2:4]
- boost/spirit/include/qi_not_predicate.hpp [2:4]
- boost/spirit/include/qi_numeric.hpp [2:4]
- boost/spirit/include/qi_omit.hpp [2:4]
- boost/spirit/include/qi_operator.hpp [2:4]
- boost/spirit/include/qi_optional.hpp [2:4]
- boost/spirit/include/qi_parse.hpp [2:4]
- boost/spirit/include/qi_parse_attr.hpp [2:4]
- boost/spirit/include/qi_parse_auto.hpp [2:4]
- boost/spirit/include/qi_permutation.hpp [2:4]
- boost/spirit/include/qi_plus.hpp [2:4]
- boost/spirit/include/qi_raw.hpp [2:4]
- boost/spirit/include/qi_real.hpp [2:4]
- boost/spirit/include/qi_repeat.hpp [2:4]
- boost/spirit/include/qi_rule.hpp [2:4]
- boost/spirit/include/qi_sequence.hpp [2:4]
- boost/spirit/include/qi_sequential_or.hpp [2:4]
- boost/spirit/include/qi_skip.hpp [2:4]
- boost/spirit/include/qi_stream.hpp [2:4]
- boost/spirit/include/qi_string.hpp [2:4]
- boost/spirit/include/qi_symbols.hpp [2:4]
- boost/spirit/include/qi_uint.hpp [2:4]
- boost/spirit/include/qi_what.hpp [2:4]
- boost/spirit/include/support.hpp [2:4]
- boost/spirit/include/support_any.hpp [2:4]
- boost/spirit/include/support_any_if.hpp [2:4]
- boost/spirit/include/support_any_if_ns.hpp [2:4]
- boost/spirit/include/support_any_if_ns_so.hpp [2:4]
- boost/spirit/include/support_any_ns.hpp [2:4]
- boost/spirit/include/support_any_ns_so.hpp [2:4]
- boost/spirit/include/support_argument.hpp [2:4]
- boost/spirit/include/support_ascii.hpp [2:4]
- boost/spirit/include/support_attributes.hpp [2:4]
- boost/spirit/include/support_char_class.hpp [2:4]
- boost/spirit/include/support_iso8859_1.hpp [2:4]
- boost/spirit/include/support_istream_iterator.hpp [2:4]
- boost/spirit/include/support_locals.hpp [2:4]
- boost/spirit/include/support_look_ahead.hpp [2:4]
- boost/spirit/include/support_modify.hpp [2:4]
- boost/spirit/include/support_multi_pass.hpp [2:4]
- boost/spirit/include/support_multi_pass_fwd.hpp [2:4]
- boost/spirit/include/support_standard.hpp [2:4]
- boost/spirit/include/support_standard_wide.hpp [2:4]
- boost/spirit/include/support_string_traits.hpp [2:4]
- boost/spirit/include/support_unused.hpp [2:4]
- boost/spirit/include/version.hpp [2:4]
- boost/spirit/repository/include/karma.hpp [2:4]
- boost/spirit/repository/include/karma_confix.hpp [2:4]
- boost/spirit/repository/include/karma_directive.hpp [2:4]
- boost/spirit/repository/include/qi.hpp [2:4]
- boost/spirit/repository/include/qi_confix.hpp [2:4]
- boost/spirit/repository/include/qi_directive.hpp [2:4]
- boost/spirit/repository/include/qi_distinct.hpp [2:4]
- boost/spirit/repository/include/qi_flush_multi_pass.hpp [2:4]
- boost/spirit/repository/include/qi_iter_pos.hpp [2:4]
- boost/spirit/repository/include/qi_primitive.hpp [2:4]
- boost/spirit/version.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 77f9dd6047adac3aadfc4e429a97736b
-BELONGS ya.make
- License text:
- // Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
- // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/asio/basic_serial_port.hpp [5:6]
- boost/asio/detail/impl/reactive_serial_port_service.ipp [5:6]
- boost/asio/detail/impl/win_iocp_handle_service.ipp [5:6]
- boost/asio/detail/impl/win_iocp_serial_port_service.ipp [5:6]
- boost/asio/detail/reactive_serial_port_service.hpp [5:6]
- boost/asio/detail/win_iocp_handle_read_op.hpp [5:6]
- boost/asio/detail/win_iocp_handle_service.hpp [5:6]
- boost/asio/detail/win_iocp_handle_write_op.hpp [5:6]
- boost/asio/detail/win_iocp_serial_port_service.hpp [5:6]
- boost/asio/impl/serial_port_base.hpp [5:6]
- boost/asio/impl/serial_port_base.ipp [5:6]
- boost/asio/serial_port.hpp [5:6]
- boost/asio/serial_port_base.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7845e88cc34740c56fdf956a3c7bf298
-BELONGS ya.make
- License text:
- // Copyright (C) 2005 Arkadiy Vertleyb, Peder Holt.
- // Use, modification and distribution is subject to the Boost Software
- // License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/typeof/std/bitset.hpp [1:3]
- boost/typeof/std/complex.hpp [1:3]
- boost/typeof/std/deque.hpp [1:3]
- boost/typeof/std/fstream.hpp [1:3]
- boost/typeof/std/functional.hpp [1:3]
- boost/typeof/std/iostream.hpp [1:3]
- boost/typeof/std/istream.hpp [1:3]
- boost/typeof/std/iterator.hpp [1:3]
- boost/typeof/std/list.hpp [1:3]
- boost/typeof/std/locale.hpp [1:3]
- boost/typeof/std/map.hpp [1:3]
- boost/typeof/std/memory.hpp [1:3]
- boost/typeof/std/ostream.hpp [1:3]
- boost/typeof/std/queue.hpp [1:3]
- boost/typeof/std/set.hpp [1:3]
- boost/typeof/std/sstream.hpp [1:3]
- boost/typeof/std/stack.hpp [1:3]
- boost/typeof/std/streambuf.hpp [1:3]
- boost/typeof/std/string.hpp [1:3]
- boost/typeof/std/utility.hpp [1:3]
- boost/typeof/std/valarray.hpp [1:3]
- boost/typeof/std/vector.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7847dd132299dd522b778f700587670d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/os/bsd/bsdi.h at line 4, boost/predef/os/bsd/dragonfly.h at line 4, boost/predef/os/bsd/free.h at line 4, boost/predef/os/bsd/net.h at line 4, boost/predef/os/bsd/open.h at line 4
- License text:
- Copyright Rene Rivera 2012-2015
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/predef/os/bsd/bsdi.h [2:4]
- boost/predef/os/bsd/dragonfly.h [2:4]
- boost/predef/os/bsd/free.h [2:4]
- boost/predef/os/bsd/net.h [2:4]
- boost/predef/os/bsd/open.h [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 78ae7fd7f341987282f7c6997978b659
-BELONGS ya.make
- License text:
- // Copyright Peter Dimov 2000-2002
- // Copyright Aleksey Gurtovoy 2000-2004
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/list/aux_/numbered.hpp [4:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 78bb9d47619488747a3d5ed32579c107
-BELONGS ya.make
- License text:
- Copyright 2012-2015 Glen Joseph Fernandes
- (glenjofe@gmail.com)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/make_unique.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 78e0a9a9366ca52bc14963dd0ac2db58
-BELONGS ya.make
- License text:
- Copyright (c) 2008-2009: Joachim Faulhaber
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/icl/detail/element_comparer.hpp [2:2]
- boost/icl/detail/interval_morphism.hpp [2:2]
- boost/icl/detail/interval_subset_comparer.hpp [2:2]
- boost/icl/detail/subset_comparer.hpp [2:2]
- boost/icl/gregorian.hpp [2:2]
- boost/icl/ptime.hpp [2:2]
- boost/icl/rational.hpp [2:2]
- boost/icl/type_traits/codomain_type_of.hpp [2:2]
- boost/icl/type_traits/difference.hpp [2:2]
- boost/icl/type_traits/difference_type_of.hpp [2:2]
- boost/icl/type_traits/domain_type_of.hpp [2:2]
- boost/icl/type_traits/element_type_of.hpp [2:2]
- boost/icl/type_traits/has_inverse.hpp [2:2]
- boost/icl/type_traits/has_set_semantics.hpp [2:2]
- boost/icl/type_traits/identity_element.hpp [2:2]
- boost/icl/type_traits/is_associative_element_container.hpp [2:2]
- boost/icl/type_traits/is_combinable.hpp [2:2]
- boost/icl/type_traits/is_concept_equivalent.hpp [2:2]
- boost/icl/type_traits/is_continuous.hpp [2:2]
- boost/icl/type_traits/is_discrete.hpp [2:2]
- boost/icl/type_traits/is_element_container.hpp [2:2]
- boost/icl/type_traits/is_interval_container.hpp [2:2]
- boost/icl/type_traits/is_interval_joiner.hpp [2:2]
- boost/icl/type_traits/is_interval_separator.hpp [2:2]
- boost/icl/type_traits/is_interval_splitter.hpp [2:2]
- boost/icl/type_traits/is_map.hpp [2:2]
- boost/icl/type_traits/is_set.hpp [2:2]
- boost/icl/type_traits/is_total.hpp [2:2]
- boost/icl/type_traits/no_type.hpp [2:2]
- boost/icl/type_traits/rep_type_of.hpp [2:2]
- boost/icl/type_traits/segment_type_of.hpp [2:2]
- boost/icl/type_traits/size.hpp [2:2]
- boost/icl/type_traits/size_type_of.hpp [2:2]
- boost/icl/type_traits/value_size.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 78ecae5a6301c9faa651a8f6d052b448
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/catch_exceptions.hpp at line 5
- License text:
- // Copyright Beman Dawes 1995-2001. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/detail/catch_exceptions.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 78f52b44d5b893e606b8a11043d0353f
-BELONGS ya.make
- License text:
- // (C) Copyright 2005-8 Anthony Williams
- // (C) Copyright 2012 Vicente J. Botet Escriba
- // (C) Copyright 2017 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/win32/interlocked_read.hpp [6:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 79167f993b43429aaf8287ed3b8b9fb1
-BELONGS ya.make
- License text:
- // Copyright (c) 2001-2002 Chuck Allison and Jeremy Siek
- // Copyright (c) 2003-2006, 2008 Gennaro Prota
- // Copyright (c) 2014 Ahmed Charles
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/dynamic_bitset/dynamic_bitset.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 791de63e8a85039486e8b095c3912ad1
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/archive/detail/utf8_codecvt_facet.hpp [1:3]
- boost/detail/utf8_codecvt_facet.hpp [1:3]
- boost/detail/utf8_codecvt_facet.ipp [4:6]
- boost/filesystem/detail/utf8_codecvt_facet.hpp [1:2]
- boost/program_options/detail/utf8_codecvt_facet.hpp [1:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 792451df1de91afb23ff290d2f633d82
-BELONGS ya.make
- License text:
- Copyright (C) 2002 Brad King (brad.king@kitware.com)
- Douglas Gregor (gregod@cs.rpi.edu)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/core/addressof.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 797872212de35a9174f5dfedc43efab7
-BELONGS ya.make
- License text:
- // (C) Copyright John Maddock 2006-8.
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/bindings/detail/big_digamma.hpp [1:3]
- boost/math/bindings/detail/big_lanczos.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 797b8159646b0e965f8cd05df63d1074
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/comeau.hpp [1:8]
- boost/config/compiler/intel.hpp [1:10]
- boost/config/compiler/metrowerks.hpp [1:8]
- boost/config/compiler/visualc.hpp [1:8]
- boost/config/stdlib/dinkumware.hpp [1:7]
- boost/filesystem/detail/macro_value.hpp [3:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 797f1af06a5fd55b124006bf0cd1aa45
-BELONGS ya.make
- License text:
- // Copyright (c) 2000, Frank Warmerdam
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/srs/projections/impl/pj_transform.hpp [19:19]
- boost/geometry/srs/projections/proj/latlong.hpp [29:30]
-
-KEEP COPYRIGHT_SERVICE_LABEL 799e2277f428cd7c93175030f2e04ad8
-BELONGS ya.make
- License text:
- // Copyright 2014 Renato Tegon Forti, Antony Polukhin.
- // Copyright 2015 Antony Polukhin.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/dll/alias.hpp [1:2]
- boost/dll/detail/elf_info.hpp [1:2]
- boost/dll/detail/macho_info.hpp [1:2]
- boost/dll/detail/pe_info.hpp [1:2]
- boost/dll/detail/posix/program_location_impl.hpp [1:2]
- boost/dll/detail/x_info_interface.hpp [1:2]
- boost/dll/library_info.hpp [1:2]
- boost/winapi/dll.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 79b802920f4aa6ebda770bbdbd8f62f3
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/assign.hpp [3:6]
- boost/geometry/algorithms/crosses.hpp [3:6]
- boost/geometry/algorithms/detail/distance/interface.hpp [3:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 79d54f906a15b95b0be8eb7f30091ba2
-BELONGS ya.make
- License text:
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2001-2003 Hartmut Kaiser
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/core/primitives/impl/numerics.ipp [2:4]
- boost/spirit/home/classic/core/primitives/numerics.hpp [2:4]
- boost/spirit/home/classic/meta.hpp [2:4]
- boost/spirit/home/classic/version.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 79dab007ee72a950603c97c9b2331fb7
-BELONGS ya.make
- License text:
- // Copyright 2015-2017 Peter Dimov.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mp11/algorithm.hpp [4:4]
- boost/mp11/detail/mp_append.hpp [4:4]
- boost/mp11/detail/mp_fold.hpp [4:4]
- boost/mp11/detail/mp_min_element.hpp [4:4]
- boost/mp11/detail/mp_void.hpp [4:4]
- boost/mp11/function.hpp [4:4]
- boost/mp11/list.hpp [4:4]
- boost/mp11/map.hpp [4:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 79e7551f02d99afc8dd82a857068d461
-BELONGS ya.make
- License text:
- // Copyright Douglas Gregor 2004.
- // Copyright 2005 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/function_equal.hpp [1:2]
- boost/utility/detail/result_of_iterate.hpp [3:5]
- boost/utility/result_of.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7a33e6d3b977bb8a826c9f04ef00ba08
-BELONGS ya.make
- License text:
- // Copyright (c) 2015-2016 Vinnie Falco (vinnie dot falco at gmail dot com)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/beast/core/file.hpp [2:2]
- boost/beast/core/file_base.hpp [2:2]
- boost/beast/core/file_posix.hpp [2:2]
- boost/beast/core/file_stdio.hpp [2:2]
- boost/beast/core/file_win32.hpp [2:2]
- boost/beast/core/impl/file_posix.ipp [2:2]
- boost/beast/core/impl/file_stdio.ipp [2:2]
- boost/beast/core/impl/file_win32.ipp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7a5840f2607b7eac3bcd76043d21eb7e
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/cpp_dec_float.hpp at line 5, boost/multiprecision/detail/functions/pow.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/multiprecision/cpp_dec_float.hpp [2:5]
- boost/multiprecision/detail/functions/pow.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7a6336ff9479938d79c2d6368e2f0c1b
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2006, 2010.
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/factorials.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7a77c5a5c02e42b779cbc7701c396c44
-BELONGS ya.make
- License text:
- // (C) Copyright Bryce Lelbach 2011
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/pathscale.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7a82760a876a7d2d125ec5b9c133a6b5
-BELONGS ya.make
- License text:
- // Copyright Eric Niebler 2009
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/limits/string.hpp [5:5]
- boost/mpl/string.hpp [5:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7a8a725a54c9a5f6eeaba5650a24fad4
-BELONGS ya.make
- License text:
- // This file was modified by Oracle on 2015.
- // Modifications copyright (c) 2015, Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/expand/implementation.hpp [8:9]
- boost/geometry/algorithms/detail/overlay/intersection_box_box.hpp [5:6]
- boost/geometry/algorithms/detail/throw_on_empty_input.hpp [8:9]
- boost/geometry/algorithms/dispatch/envelope.hpp [7:8]
- boost/geometry/algorithms/envelope.hpp [7:8]
- boost/geometry/algorithms/expand.hpp [8:9]
- boost/geometry/algorithms/not_implemented.hpp [7:8]
- boost/geometry/core/radian_access.hpp [7:8]
- boost/geometry/core/ring_type.hpp [7:8]
- boost/geometry/geometries/adapted/boost_fusion.hpp [6:7]
- boost/geometry/policies/robustness/get_rescale_policy.hpp [8:9]
- boost/geometry/strategies/agnostic/simplify_douglas_peucker.hpp [6:7]
- boost/geometry/strategies/cartesian/buffer_end_round.hpp [5:6]
- boost/geometry/strategies/cartesian/buffer_join_round.hpp [5:6]
- boost/geometry/strategies/cartesian/buffer_point_circle.hpp [5:6]
- boost/geometry/strategies/cartesian/centroid_weighted_length.hpp [6:7]
- boost/geometry/strategies/cartesian/side_of_intersection.hpp [5:6]
- boost/geometry/util/combine_if.hpp [5:6]
- boost/geometry/util/compress_variant.hpp [7:8]
- boost/geometry/util/transform_variant.hpp [7:8]
- boost/geometry/views/detail/indexed_point_view.hpp [8:9]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7a92fca234fbb2ec58839a022533d6cb
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multi_index/detail/archive_constructed.hpp at line 3, boost/multi_index/detail/ignore_wstrict_aliasing.hpp at line 3, boost/multi_index/detail/index_node_base.hpp at line 3, boost/multi_index/detail/restore_wstrict_aliasing.hpp at line 3, boost/multi_index/detail/seq_index_ops.hpp at line 3
- License text:
- /* Copyright 2003-2016 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/multi_index/detail/archive_constructed.hpp [1:3]
- boost/multi_index/detail/ignore_wstrict_aliasing.hpp [1:3]
- boost/multi_index/detail/index_node_base.hpp [1:3]
- boost/multi_index/detail/restore_wstrict_aliasing.hpp [1:3]
- boost/multi_index/detail/seq_index_ops.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7a971e7bc12547235a5e108f8c16bed1
-BELONGS ya.make
- License text:
- * Copyright 2014 Antony Polukhin
- * Copyright 2015 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/winapi/crypt.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7ae8b16c39fc36f50a0a218368b84a03
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/progress.hpp at line 5, boost/timer.hpp at line 5
- License text:
- // Copyright Beman Dawes 1994-99. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/progress.hpp [3:5]
- boost/timer.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7aedad2c03ecc61a2ef6e770da75eaf2
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/limits.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/limits.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7afb00ea7606a958a28cf267a7da1739
-BELONGS ya.make
- License text:
- // Copyright (c) 2013-2017 Antony Polukhin
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/variant/polymorphic_get.hpp [6:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7afcace3c11d1de9ed95382d1d122b39
-BELONGS ya.make
- License text:
- // (C) Copyright Ion Gaztanaga 2013-2013
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/container/options.hpp [3:3]
- boost/interprocess/sync/spin/wait.hpp [3:6]
- boost/intrusive/pack_options.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7b1597e0a6608fd65ae3120352454957
-BELONGS libs/python/ya.make ya.make
- License text:
- // Copyright (c) 2004 Jonathan Brandmeyer
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/python/slice.hpp [4:6]
- libs/python/src/slice.cpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7b2b40d8095f20892198b9af1ef7f149
-BELONGS libs/python/ya.make ya.make
- License text:
- // Copyright Peter Dimov and Multi Media Ltd 2001, 2002
- // Copyright David Abrahams 2001
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/aux_/unwrap.hpp [5:6]
- boost/python/converter/registry.hpp [1:3]
- boost/python/make_constructor.hpp [1:3]
- boost/python/make_function.hpp [1:3]
- boost/python/module.hpp [1:3]
- boost/python/object/class.hpp [1:3]
- boost/python/object/class_wrapper.hpp [1:3]
- boost/python/object/forward.hpp [1:3]
- boost/python/object/function.hpp [1:3]
- boost/python/object/make_holder.hpp [3:5]
- boost/python/object/pointer_holder.hpp [3:5]
- boost/python/object/value_holder.hpp [3:5]
- libs/python/src/converter/registry.cpp [1:3]
- libs/python/src/converter/type_id.cpp [1:3]
- libs/python/src/errors.cpp [1:3]
- libs/python/src/object/class.cpp [1:3]
- libs/python/src/object/function.cpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7b333747aa8572c825a7efd493a9a9f8
-BELONGS ya.make
- License text:
- // Copyright (C) 2017 Michel Morin.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/iterator/advance.hpp [1:1]
- boost/iterator/distance.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7b3a92cd716462e0e8619e0728c70df0
-BELONGS ya.make
- License text:
- Copyright 2012-2017 Glen Joseph Fernandes
- (glenjofe@gmail.com)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/allocate_shared_array.hpp [2:3]
- boost/smart_ptr/make_shared_array.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7b466aae49d13e5a11c7748a662799a9
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/strategies/geographic/area.hpp [5:7]
- boost/geometry/strategies/spherical/area.hpp [5:7]
- boost/geometry/strategies/spherical/distance_cross_track_box_box.hpp [3:5]
- boost/geometry/strategies/spherical/get_radius.hpp [5:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7b5b76a48b60990aebae4bceee943dc7
-BELONGS ya.make
- License text:
- // Copyright (c) 2002-2003
- // Eric Friedman, Itay Maman
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/aligned_storage.hpp [6:7]
- boost/type_traits/aligned_storage.hpp [6:7]
- boost/variant/detail/initializer.hpp [6:7]
- boost/variant/detail/make_variant_list.hpp [6:7]
- boost/variant/detail/variant_io.hpp [6:7]
- boost/variant/recursive_wrapper.hpp [6:7]
- boost/variant/variant.hpp [6:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7b674d228d848062b40f7b09ed2fb8d9
-BELONGS ya.make
- License text:
- Copyright (c) 2006 Tobias Schwinger
- Copyright (c) 2002-2006 Hartmut Kaiser
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/iterator/position_iterator_fwd.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7b6de4b28666620f02c795d69c510b09
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic.hpp [2:14]
- boost/spirit/home/classic/tree/impl/tree_to_xml.ipp [2:4]
- boost/spirit/include/classic_spirit.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7b89f27d5360ecf0ad7ed6e76aed9560
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2007.
- // Copyright Paul A. Bristow 2007, 2009
- // Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/date_time/time_zone_names.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5d5ceeefae6baf9c4d0ab38f1ad40835
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2007 Hartmut Kaiser
+ Copyright (c) 2001-2003 Daniel Nuffer
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/tree/impl/parse_tree_utils.ipp [2:4]
+ boost/spirit/home/classic/tree/impl/tree_to_xml.ipp [2:4]
+ boost/spirit/home/classic/tree/tree_to_xml.hpp [2:4]
+ boost/spirit/home/classic/utility/chset.hpp [2:4]
+ boost/spirit/home/classic/utility/chset_operators.hpp [2:4]
+ boost/spirit/home/classic/utility/escape_char.hpp [2:3]
+ boost/spirit/home/classic/utility/flush_multi_pass.hpp [2:3]
+ boost/spirit/home/classic/utility/impl/chset.ipp [2:4]
+ boost/spirit/home/classic/utility/impl/chset/basic_chset.hpp [2:4]
+ boost/spirit/home/classic/utility/impl/chset/basic_chset.ipp [2:4]
+ boost/xpressive/detail/utility/chset/basic_chset.hpp [2:4]
+ boost/xpressive/detail/utility/chset/basic_chset.ipp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5db5d507e9e07c6fbe5e4cb7336a9321
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
+ // Copyright 2004-2005 Peter Dimov
+ // Copyright 2007-2012 Ion Gaztanaga
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/interprocess/smart_ptr/detail/sp_counted_base_atomic.hpp [12:14]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5dcd896fc15c3b0fab611b475854c071
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/foreach_fwd.hpp at line 6, boost/proto/detail/as_expr.hpp at line 9, boost/proto/functional.hpp at line 7, boost/proto/functional/fusion.hpp at line 7, boost/proto/functional/fusion/at.hpp at line 7, boost/proto/functional/fusion/pop_back.hpp at line 7, boost/proto/functional/fusion/pop_front.hpp at line 7, boost/proto/functional/fusion/push_back.hpp at line 7, boost/proto/functional/fusion/push_front.hpp at line 7, boost/proto/functional/fusion/reverse.hpp at line 7, boost/proto/functional/std.hpp at line 7, boost/proto/functional/std/utility.hpp at line 7
+ License text:
+ // Copyright 2010 Eric Niebler.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/foreach_fwd.hpp [4:6]
+ boost/proto/detail/as_expr.hpp [7:9]
+ boost/proto/functional.hpp [5:7]
+ boost/proto/functional/fusion.hpp [5:7]
+ boost/proto/functional/fusion/at.hpp [5:7]
+ boost/proto/functional/fusion/pop_back.hpp [5:7]
+ boost/proto/functional/fusion/pop_front.hpp [5:7]
+ boost/proto/functional/fusion/push_back.hpp [5:7]
+ boost/proto/functional/fusion/push_front.hpp [5:7]
+ boost/proto/functional/fusion/reverse.hpp [5:7]
+ boost/proto/functional/std.hpp [5:7]
+ boost/proto/functional/std/utility.hpp [5:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5dd53ee811abc83b9190c778f5f47298
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2006, 2007.
+ // Copyright Paul A. Bristow 2006, 2007.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/distributions/normal.hpp [1:2]
+ boost/math/distributions/triangular.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5e2789af15a3f0dceb1a6835b257fde9
+BELONGS libs/filesystem/ya.make
+ License text:
+ // Copyright 2002-2009, 2014 Beman Dawes
+ // Copyright 2001 Dietmar Kuehl
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ libs/filesystem/src/operations.cpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5e5122844c5c00c4740356da3c3eaecb
+BELONGS libs/chrono/ya.make ya.make
+ License text:
+ // Copyright Beman Dawes 2003, 2006, 2008
+ // Copyright 2009-2011 Vicente J. Botet Escriba
+ // Copyright (c) Microsoft Corporation 2014
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/chrono/config.hpp [3:5]
+ boost/chrono/detail/inlined/win/process_cpu_clocks.hpp [3:5]
+ boost/chrono/io/time_point_units.hpp [1:5]
+ boost/chrono/process_cpu_clocks.hpp [3:4]
+ boost/predef/architecture/arm.h [2:6]
+ boost/predef/platform.h [2:5]
+ boost/predef/platform/windows_desktop.h [2:5]
+ boost/predef/platform/windows_phone.h [2:5]
+ boost/predef/platform/windows_runtime.h [2:5]
+ boost/predef/platform/windows_store.h [2:5]
+ boost/signals2/detail/lwm_win32_cs.hpp [4:6]
+ boost/smart_ptr/detail/lwm_win32_cs.hpp [13:14]
+ boost/smart_ptr/detail/yield_k.hpp [13:14]
+ boost/system/detail/error_code.ipp [3:6]
+ boost/winapi/system.hpp [2:4]
+ boost/winapi/time.hpp [2:4]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/laps_stopwatch_default_formatter.hpp [2:5]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/process_default_formatter.hpp [2:5]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/simple_stopwatch.hpp [2:5]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/strict_stopwatch.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5e8b36f8b7344a5c105fd71620e6cebc
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/architecture/convex.h at line 4, boost/predef/architecture/pyramid.h at line 4, boost/predef/detail/test_def.h at line 4, boost/predef/language.h at line 4, boost/predef/language/objc.h at line 4, boost/predef/language/stdc.h at line 4, boost/predef/language/stdcpp.h at line 4, boost/predef/library/std/cxx.h at line 4, boost/predef/os/os400.h at line 4, boost/predef/os/vms.h at line 4
+ License text:
+ Copyright Rene Rivera 2011-2015
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/predef/architecture/convex.h [2:4]
+ boost/predef/architecture/pyramid.h [2:4]
+ boost/predef/detail/test_def.h [2:4]
+ boost/predef/language.h [2:4]
+ boost/predef/language/objc.h [2:4]
+ boost/predef/language/stdc.h [2:4]
+ boost/predef/language/stdcpp.h [2:4]
+ boost/predef/library/std/cxx.h [2:4]
+ boost/predef/os/os400.h [2:4]
+ boost/predef/os/vms.h [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5e997ed5f034c1dc23e6643ea466e0d1
+BELONGS ya.make
+ License text:
+ Copyright (c) 2005-2010 Joel de Guzman
+ Copyright (c) 2010-2011 Thomas Heller
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/phoenix.hpp [2:3]
+ boost/phoenix/core/actor.hpp [2:5]
+ boost/phoenix/core/call.hpp [2:3]
+ boost/phoenix/core/debug.hpp [2:4]
+ boost/phoenix/core/detail/cpp03/actor_operator.hpp [24:25]
+ boost/phoenix/core/detail/cpp03/actor_result_of.hpp [25:26]
+ boost/phoenix/core/detail/cpp03/call.hpp [21:22]
+ boost/phoenix/core/detail/cpp03/expression.hpp [18:20]
+ boost/phoenix/core/detail/cpp03/function_equal.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_10.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_20.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_30.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_40.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_50.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_10.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_20.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_30.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_40.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_50.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/call_10.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/call_20.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/call_30.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/call_40.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/call_50.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/expression_10.hpp [2:4]
+ boost/phoenix/core/detail/cpp03/preprocessed/expression_20.hpp [2:4]
+ boost/phoenix/core/detail/cpp03/preprocessed/expression_30.hpp [2:4]
+ boost/phoenix/core/detail/cpp03/preprocessed/expression_40.hpp [2:4]
+ boost/phoenix/core/detail/cpp03/preprocessed/expression_50.hpp [2:4]
+ boost/phoenix/core/domain.hpp [2:3]
+ boost/phoenix/core/environment.hpp [2:3]
+ boost/phoenix/core/function_equal.hpp [2:3]
+ boost/phoenix/core/is_actor.hpp [2:2]
+ boost/phoenix/core/is_nullary.hpp [2:4]
+ boost/phoenix/core/is_value.hpp [2:3]
+ boost/phoenix/core/meta_grammar.hpp [2:4]
+ boost/phoenix/core/nothing.hpp [2:2]
+ boost/phoenix/core/terminal.hpp [2:3]
+ boost/phoenix/core/terminal_fwd.hpp [2:3]
+ boost/phoenix/core/visit_each.hpp [2:3]
+ boost/phoenix/function/adapt_callable.hpp [2:3]
+ boost/phoenix/function/adapt_function.hpp [2:4]
+ boost/phoenix/function/detail/cpp03/function_operator.hpp [21:22]
+ boost/phoenix/function/detail/cpp03/preprocessed/function_operator_10.hpp [2:3]
+ boost/phoenix/function/detail/cpp03/preprocessed/function_operator_20.hpp [2:3]
+ boost/phoenix/function/detail/cpp03/preprocessed/function_operator_30.hpp [2:3]
+ boost/phoenix/function/detail/cpp03/preprocessed/function_operator_40.hpp [2:3]
+ boost/phoenix/function/detail/cpp03/preprocessed/function_operator_50.hpp [2:3]
+ boost/phoenix/fusion.hpp [2:3]
+ boost/phoenix/fusion/at.hpp [2:4]
+ boost/phoenix/object/detail/cpp03/construct.hpp [21:22]
+ boost/phoenix/object/detail/cpp03/construct_eval.hpp [23:24]
+ boost/phoenix/object/detail/cpp03/new.hpp [21:22]
+ boost/phoenix/object/detail/cpp03/new_eval.hpp [23:24]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_10.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_20.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_30.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_40.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_50.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_10.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_20.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_30.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_40.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_50.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_10.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_20.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_30.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_40.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_50.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_eval_10.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_eval_20.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_eval_30.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_eval_40.hpp [2:3]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_eval_50.hpp [2:3]
+ boost/phoenix/operator.hpp [2:3]
+ boost/phoenix/operator/arithmetic.hpp [2:3]
+ boost/phoenix/operator/bitwise.hpp [2:3]
+ boost/phoenix/operator/comparison.hpp [2:3]
+ boost/phoenix/operator/detail/cpp03/mem_fun_ptr_eval.hpp [15:17]
+ boost/phoenix/operator/detail/cpp03/mem_fun_ptr_eval_result_of.hpp [15:17]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_10.hpp [2:4]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_20.hpp [2:4]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_30.hpp [2:4]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_40.hpp [2:4]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_50.hpp [2:4]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_10.hpp [2:4]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_20.hpp [2:4]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_30.hpp [2:4]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_40.hpp [2:4]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_50.hpp [2:4]
+ boost/phoenix/operator/detail/define_operator.hpp [2:3]
+ boost/phoenix/operator/logical.hpp [2:3]
+ boost/phoenix/operator/member.hpp [2:4]
+ boost/phoenix/operator/self.hpp [2:3]
+ boost/phoenix/phoenix.hpp [2:3]
+ boost/phoenix/scope.hpp [2:3]
+ boost/phoenix/scope/detail/cpp03/dynamic.hpp [25:26]
+ boost/phoenix/scope/detail/cpp03/local_gen.hpp [3:4]
+ boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_10.hpp [2:3]
+ boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_20.hpp [2:3]
+ boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_30.hpp [2:3]
+ boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_40.hpp [2:3]
+ boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_50.hpp [2:3]
+ boost/phoenix/scope/local_variable.hpp [2:3]
+ boost/phoenix/scope/scoped_environment.hpp [2:3]
+ boost/phoenix/statement/detail/catch_push_back.hpp [20:21]
+ boost/phoenix/statement/detail/preprocessed/catch_push_back_10.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/catch_push_back_20.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/catch_push_back_30.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/catch_push_back_40.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/catch_push_back_50.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/switch_10.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/switch_20.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/switch_30.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/switch_40.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/switch_50.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/try_catch_eval_10.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/try_catch_eval_20.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/try_catch_eval_30.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/try_catch_eval_40.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/try_catch_eval_50.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/try_catch_expression_10.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/try_catch_expression_20.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/try_catch_expression_30.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/try_catch_expression_40.hpp [2:3]
+ boost/phoenix/statement/detail/preprocessed/try_catch_expression_50.hpp [2:3]
+ boost/phoenix/statement/detail/switch.hpp [25:26]
+ boost/phoenix/statement/detail/try_catch_eval.hpp [25:26]
+ boost/phoenix/statement/detail/try_catch_expression.hpp [25:26]
+ boost/phoenix/statement/throw.hpp [2:4]
+ boost/phoenix/statement/try_catch.hpp [2:4]
+ boost/phoenix/support/preprocessed/vector_10.hpp [2:3]
+ boost/phoenix/support/preprocessed/vector_20.hpp [2:3]
+ boost/phoenix/support/preprocessed/vector_30.hpp [2:3]
+ boost/phoenix/support/preprocessed/vector_40.hpp [2:3]
+ boost/phoenix/support/preprocessed/vector_50.hpp [2:3]
+ boost/phoenix/support/vector.hpp [41:42]
+ boost/phoenix/version.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5ecdbaa136da002e57f3b5ba003bd0db
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2006 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/bind/storage.hpp [15:15]
+ boost/is_placeholder.hpp [13:13]
+ boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp [12:14]
+ boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp [11:14]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5eec39aa7ddea86ba623e74f4988e8e5
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic.hpp [2:14]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5f5f9caa49264cbb4cb51ab4b0070946
+BELONGS libs/filesystem/ya.make ya.make
+ License text:
+ // Copyright Beman Dawes 2010
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/detail/lightweight_main.hpp [3:3]
+ boost/filesystem.hpp [3:3]
+ boost/io/detail/quoted_manip.hpp [3:3]
+ libs/filesystem/src/unique_path.cpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5f6f0ebf2d6180caac56d446585150fe
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2015 Artyom Beilis (Tonkikh)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/locale/generic_codecvt.hpp [2:2]
+ boost/locale/utf8_codecvt.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5f72997ebb041396dd9f2cc35590f0f9
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001-2009, Hartmut Kaiser
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/support/multi_pass.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5f7ced6a8ef3d72db1620ce05ee6cd6f
+BELONGS ya.make
+ License text:
+ * Copyright (c) 2009, Marco Guazzone
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/ublas/operation/begin.hpp [8:8]
+ boost/numeric/ublas/operation/end.hpp [8:8]
+ boost/numeric/ublas/operation/num_columns.hpp [8:8]
+ boost/numeric/ublas/tags.hpp [8:8]
+ boost/numeric/ublas/traits/const_iterator_type.hpp [8:8]
+ boost/numeric/ublas/traits/iterator_type.hpp [8:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5fd35c96fa4f3ab0cfc60d94c0130fc4
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/adaptor/replaced.hpp at line 6, boost/range/adaptor/replaced_if.hpp at line 6, boost/range/adaptor/strided.hpp at line 6, boost/range/adaptors.hpp at line 6, boost/range/algorithm_ext.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/range/adaptor/replaced.hpp [3:5]
+ boost/range/adaptor/replaced_if.hpp [3:5]
+ boost/range/adaptor/strided.hpp [3:5]
+ boost/range/adaptors.hpp [3:6]
+ boost/range/algorithm_ext.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 60255b91bbc9fe1a1a0ae1cc9a978c65
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/bernoulli.hpp [3:8]
+ boost/math/special_functions/detail/polygamma.hpp [3:8]
+ boost/math/special_functions/detail/unchecked_bernoulli.hpp [3:8]
+ boost/math/special_functions/polygamma.hpp [3:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 604fdc25ecaa79236312492568566c5e
+BELONGS ya.make
+ License text:
+ Copyright (c) 2006 Eric Niebler
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/sequence/intrinsic/segments.hpp [2:2]
+ boost/fusion/support/is_segmented.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6093d3f4550b993594511a12e942373f
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2006, 2009 Marcin Kalicinski
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/property_tree/detail/rapidxml.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 60a2739fa0b10a8912542f3a422b8446
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/tuple/rem.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/preprocessor/tuple/rem.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 60ad17f1b7ecee6a5e812669a248e2dc
+BELONGS ya.make
+ License text:
+ Copyright 2009-2011 Karsten Ahnert
+ Copyright 2009-2011 Mario Mulansky
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/external/compute/compute_algebra.hpp [9:10]
+ boost/numeric/odeint/external/compute/compute_operations.hpp [9:10]
+ boost/numeric/odeint/external/compute/compute_resize.hpp [9:10]
+ boost/numeric/odeint/external/vexcl/vexcl_copy.hpp [9:10]
+ boost/numeric/odeint/external/vexcl/vexcl_same_instance.hpp [9:10]
+ boost/numeric/odeint/iterator/integrate/detail/integrate_adaptive.hpp [9:10]
+ boost/numeric/odeint/iterator/integrate/integrate.hpp [9:10]
+ boost/numeric/odeint/iterator/integrate/integrate_adaptive.hpp [9:10]
+ boost/numeric/odeint/iterator/integrate/integrate_const.hpp [10:11]
+ boost/numeric/odeint/iterator/integrate/integrate_n_steps.hpp [9:10]
+ boost/numeric/odeint/iterator/integrate/integrate_times.hpp [9:10]
+ boost/numeric/odeint/iterator/integrate/null_observer.hpp [9:10]
+ boost/numeric/odeint/iterator/integrate/observer_collection.hpp [9:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL 60aec362c10b154ca39b021c11f74a08
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2014 Glen Joseph Fernandes
+ // glenfe at live dot com
+ // Copyright (C) 2014 Agustin Berge
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/core/ref.hpp [21:23]
+ boost/detail/dynamic_bitset.hpp [6:7]
+ boost/dynamic_bitset/dynamic_bitset.hpp [7:9]
+
+KEEP COPYRIGHT_SERVICE_LABEL 60cb7957f86db726c6c6c70fc4644460
+BELONGS ya.make
+ License text:
+ // (c) Copyright John Maddock 2003
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/abi/borland_prefix.hpp [1:3]
+ boost/config/abi/borland_suffix.hpp [1:3]
+ boost/config/abi/msvc_prefix.hpp [1:3]
+ boost/config/abi/msvc_suffix.hpp [1:3]
+ boost/config/abi_prefix.hpp [3:3]
+ boost/config/abi_suffix.hpp [3:3]
+ boost/config/auto_link.hpp [1:3]
+ boost/config/requires_threads.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 60cfc447fcf79c1140be2190dc383f19
+BELONGS ya.make
+ License text:
+ // Copyright Beman Dawes 2006, 2007
+ // Copyright Christoper Kohlhoff 2007
+ // Copyright Peter Dimov 2017, 2018
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/system/error_code.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 60d8a4925c8e8905f9ecaa4f2fe5a782
+BELONGS ya.make
+ License text:
+ Copyright (c) 2008-2011: Joachim Faulhaber
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/icl/type_traits/succ_pred.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 60ddb105cb6f365c4198d8c97b2115e4
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/intel.hpp [1:10]
+ boost/config/detail/select_compiler_config.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6130b1094fc9360db3fcfb20d798534e
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2015 Kohei Takahashi
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/algorithm/iteration/accumulate.hpp [2:3]
+ boost/fusion/algorithm/iteration/accumulate_fwd.hpp [2:3]
+ boost/fusion/algorithm/iteration/detail/fold.hpp [2:5]
+ boost/fusion/algorithm/iteration/fold.hpp [2:5]
+ boost/fusion/algorithm/iteration/iter_fold.hpp [2:4]
+ boost/fusion/algorithm/iteration/reverse_fold.hpp [2:4]
+ boost/fusion/algorithm/iteration/reverse_iter_fold.hpp [2:4]
+ boost/fusion/container/deque/detail/convert_impl.hpp [2:4]
+ boost/fusion/container/generation/list_tie.hpp [2:2]
+ boost/fusion/support/detail/enabler.hpp [2:2]
+ boost/fusion/support/detail/index_sequence.hpp [2:3]
+ boost/phoenix/core/detail/function_eval.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 620bffa3a234fd5d35b0b35f0ea5d50a
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/cstdlib.hpp at line 5
+ License text:
+ // Copyright Beman Dawes 2001. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/cstdlib.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 623d2c4f1105092ce876a2b974e60b3a
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/format.hpp at line 7, boost/format/alt_sstream.hpp at line 7, boost/format/alt_sstream_impl.hpp at line 7, boost/format/detail/compat_workarounds.hpp at line 7, boost/format/detail/config_macros.hpp at line 10, boost/format/detail/msvc_disambiguater.hpp at line 8, boost/format/detail/unset_macros.hpp at line 7, boost/format/detail/workarounds_gcc-2_95.hpp at line 7, boost/format/detail/workarounds_stlport.hpp at line 7, boost/format/exceptions.hpp at line 7, boost/format/feed_args.hpp at line 8, boost/format/format_class.hpp at line 7, boost/format/format_fwd.hpp at line 7, boost/format/format_implementation.hpp at line 7, boost/format/free_funcs.hpp at line 7, boost/format/group.hpp at line 8, boost/format/internals.hpp at line 8, boost/format/internals_fwd.hpp at line 7, boost/format/parsing.hpp at line 8
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/format.hpp [5:7]
+ boost/format/alt_sstream.hpp [5:7]
+ boost/format/alt_sstream_impl.hpp [5:7]
+ boost/format/detail/compat_workarounds.hpp [5:7]
+ boost/format/detail/config_macros.hpp [8:10]
+ boost/format/detail/msvc_disambiguater.hpp [6:8]
+ boost/format/detail/unset_macros.hpp [5:7]
+ boost/format/detail/workarounds_gcc-2_95.hpp [5:7]
+ boost/format/detail/workarounds_stlport.hpp [5:7]
+ boost/format/exceptions.hpp [5:5]
+ boost/format/feed_args.hpp [6:8]
+ boost/format/format_class.hpp [5:7]
+ boost/format/format_fwd.hpp [5:7]
+ boost/format/format_implementation.hpp [5:7]
+ boost/format/free_funcs.hpp [5:7]
+ boost/format/group.hpp [6:8]
+ boost/format/internals.hpp [6:8]
+ boost/format/internals_fwd.hpp [5:7]
+ boost/format/parsing.hpp [6:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6256fe9595065a7f6ee40e467ac1f448
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/detail/is_function_ptr_tester.hpp at line 5, boost/type_traits/detail/is_mem_fun_pointer_impl.hpp at line 5, boost/type_traits/detail/is_mem_fun_pointer_tester.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_traits/detail/is_function_ptr_tester.hpp [2:5]
+ boost/type_traits/detail/is_mem_fun_pointer_impl.hpp [2:5]
+ boost/type_traits/detail/is_mem_fun_pointer_tester.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 626904b1a20ac363e1bb99d9bae924e6
+BELONGS ya.make
+ License text:
+ // (C) Copyright Beman Dawes 1999.
+ // (C) Copyright Jens Mauer 2001
+ // (C) Copyright John Maddock 2001
+ // Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/comeau.hpp [1:8]
+ boost/config/compiler/greenhills.hpp [1:3]
+ boost/config/compiler/kai.hpp [1:5]
+ boost/config/compiler/metrowerks.hpp [1:8]
+ boost/config/compiler/sunpro_cc.hpp [1:7]
+ boost/config/platform/beos.hpp [1:3]
+ boost/config/stdlib/libstdcpp3.hpp [1:4]
+ boost/config/stdlib/msl.hpp [1:4]
+ boost/config/user.hpp [3:5]
+ boost/cstdint.hpp [3:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 626c8f8e9db5e6888c779655f4dcb00f
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001-2005 Peter Dimov
+ // Copyright (c) 2006 Michael van der Westhuizen
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/detail/atomic_count_solaris.hpp [8:9]
+ boost/smart_ptr/detail/atomic_count_win32.hpp [13:13]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6272251471f1be73e9132a985503d2af
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/statechart/detail/reaction_dispatcher.hpp at line 6
+ License text:
+ // Copyright 2008 Andreas Huber Doenni
+ // Distributed under the Boost Software License, Version 1.0. (See accompany-
+ // ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/statechart/detail/reaction_dispatcher.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 630429e3af05c2404197d1a7b98bf2e6
+BELONGS ya.make
+ License text:
+ // Copyright 2014 Renato Tegon Forti, Antony Polukhin.
+ // Copyright 2015-2017 Antony Polukhin.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/dll/detail/aggressive_ptr_cast.hpp [1:2]
+ boost/dll/runtime_symbol_info.hpp [1:2]
+ boost/dll/shared_library.hpp [1:2]
+ boost/stacktrace/detail/void_ptr_cast.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 634f5b2f48befd4ad6b83568ae03e21c
+BELONGS ya.make
+ License text:
+ // Copyright 2000 John Maddock (john@johnmaddock.co.uk)
+ // Copyright 2002 Aleksey Gurtovoy (agurtovoy@meta-comm.com)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_traits/detail/is_function_ptr_helper.hpp [2:3]
+ boost/type_traits/is_function.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6372fa2fa3d2b6fd37659a53404e040d
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/comeau.hpp [1:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 63849ec1bbdcc3c10fe8276e89517bbf
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/uuid/detail/config.hpp at line 4, boost/uuid/detail/uuid_x86.ipp at line 4
+ License text:
+ * Copyright Andrey Semashev 2013.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/uuid/detail/config.hpp [2:4]
+ boost/uuid/detail/uuid_x86.ipp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 63cd6a98b4cad3093701dc43bdbb5bd4
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/smart_ptr/shared_ptr.hpp at line 9, boost/interprocess/smart_ptr/weak_ptr.hpp at line 9
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/interprocess/smart_ptr/shared_ptr.hpp [5:9]
+ boost/interprocess/smart_ptr/weak_ptr.hpp [5:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 640307e8b2a0f7bd8fedb1ecb22227e5
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/wave/util/flex_string.hpp at line 7
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/wave/util/flex_string.hpp [5:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 640761179b5b64afa0c721e69a6b8275
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/centroid.hpp [3:6]
+ boost/geometry/algorithms/correct.hpp [3:6]
+ boost/geometry/algorithms/detail/equals/collect_vectors.hpp [3:6]
+ boost/geometry/algorithms/detail/overlay/get_turns.hpp [3:4]
+ boost/geometry/io/wkt/write.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6467921276eb670bf75f471586581d8f
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/integer.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/integer.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6475e648e705f129c481426fb1e23aae
+BELONGS ya.make
+ License text:
+ // Copyright 2005 Daniel Wallin.
+ // Copyright 2005 Joel de Guzman.
+ // Copyright 2005 Dan Marsden.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/phoenix/stl/algorithm/detail/begin.hpp [1:3]
+ boost/phoenix/stl/algorithm/detail/decay_array.hpp [1:2]
+ boost/phoenix/stl/algorithm/detail/end.hpp [1:3]
+ boost/phoenix/stl/algorithm/detail/has_equal_range.hpp [1:2]
+ boost/phoenix/stl/algorithm/detail/has_find.hpp [2:4]
+ boost/phoenix/stl/algorithm/detail/has_lower_bound.hpp [1:2]
+ boost/phoenix/stl/algorithm/detail/has_remove.hpp [1:2]
+ boost/phoenix/stl/algorithm/detail/has_remove_if.hpp [1:2]
+ boost/phoenix/stl/algorithm/detail/has_reverse.hpp [1:2]
+ boost/phoenix/stl/algorithm/detail/has_sort.hpp [1:2]
+ boost/phoenix/stl/algorithm/detail/has_unique.hpp [1:2]
+ boost/phoenix/stl/algorithm/detail/has_upper_bound.hpp [1:2]
+ boost/phoenix/stl/algorithm/detail/is_std_hash_map.hpp [1:2]
+ boost/phoenix/stl/algorithm/detail/is_std_hash_set.hpp [1:2]
+ boost/phoenix/stl/algorithm/detail/is_std_list.hpp [1:2]
+ boost/phoenix/stl/algorithm/detail/is_std_map.hpp [1:2]
+ boost/phoenix/stl/algorithm/detail/is_std_set.hpp [1:2]
+ boost/phoenix/stl/algorithm/detail/is_unordered_set_or_map.hpp [2:4]
+ boost/phoenix/stl/algorithm/iteration.hpp [1:3]
+ boost/phoenix/stl/algorithm/querying.hpp [1:5]
+ boost/phoenix/stl/algorithm/transformation.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 648961efadbfcbb7a3c3529046ecf3b8
+BELONGS ya.make
+ License text:
+ Copyright 2009-2012 Karsten Ahnert
+ Copyright 2009-2012 Mario Mulansky
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/algebra/multi_array_algebra.hpp [9:10]
+ boost/numeric/odeint/external/blaze/blaze_algebra_dispatcher.hpp [9:10]
+ boost/numeric/odeint/external/blaze/blaze_resize.hpp [9:10]
+ boost/numeric/odeint/external/eigen/eigen.hpp [9:10]
+ boost/numeric/odeint/external/eigen/eigen_algebra_dispatcher.hpp [9:10]
+ boost/numeric/odeint/iterator/impl/adaptive_iterator_impl.hpp [9:10]
+ boost/numeric/odeint/iterator/integrate/detail/integrate_const.hpp [9:10]
+ boost/numeric/odeint/iterator/integrate/detail/integrate_n_steps.hpp [9:10]
+ boost/numeric/odeint/iterator/integrate/detail/integrate_times.hpp [9:10]
+ boost/numeric/odeint/stepper/velocity_verlet.hpp [9:10]
+ boost/numeric/odeint/util/multi_array_adaption.hpp [9:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL 648f3551deff5504ae253422933dad8a
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/call_traits.hpp at line 3, boost/compressed_pair.hpp at line 3, boost/detail/call_traits.hpp at line 3, boost/detail/compressed_pair.hpp at line 3, boost/detail/ob_compressed_pair.hpp at line 3, boost/type_traits/add_pointer.hpp at line 4, boost/type_traits/add_reference.hpp at line 4, boost/type_traits/arithmetic_traits.hpp at line 3, boost/type_traits/broken_compiler_spec.hpp at line 4, boost/type_traits/config.hpp at line 4, boost/type_traits/detail/config.hpp at line 4, boost/type_traits/has_nothrow_assign.hpp at line 4, boost/type_traits/has_nothrow_constructor.hpp at line 4, boost/type_traits/has_nothrow_copy.hpp at line 4, boost/type_traits/has_nothrow_destructor.hpp at line 4, boost/type_traits/has_trivial_assign.hpp at line 4, boost/type_traits/has_trivial_constructor.hpp at line 4, boost/type_traits/has_trivial_copy.hpp at line 4, boost/type_traits/has_trivial_destructor.hpp at line 4, boost/type_traits/has_trivial_move_assign.hpp at line 4, boost/type_traits/has_trivial_move_constructor.hpp at line 4, boost/type_traits/intrinsics.hpp at line 3, boost/type_traits/is_arithmetic.hpp at line 4, boost/type_traits/is_compound.hpp at line 4, boost/type_traits/is_empty.hpp at line 4, boost/type_traits/is_float.hpp at line 3, boost/type_traits/is_fundamental.hpp at line 4, boost/type_traits/is_integral.hpp at line 4, boost/type_traits/is_nothrow_move_assignable.hpp at line 4, boost/type_traits/is_nothrow_move_constructible.hpp at line 4, boost/type_traits/is_object.hpp at line 4, boost/type_traits/is_pod.hpp at line 4, boost/type_traits/is_scalar.hpp at line 4, boost/type_traits/is_stateless.hpp at line 4, boost/type_traits/is_void.hpp at line 4, boost/type_traits/object_traits.hpp at line 3, boost/type_traits/remove_bounds.hpp at line 4, boost/type_traits/remove_pointer.hpp at line 4, boost/type_traits/remove_reference.hpp at line 4, boost/type_traits/transform_traits.hpp at line 3
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/call_traits.hpp [1:3]
+ boost/compressed_pair.hpp [1:3]
+ boost/detail/call_traits.hpp [1:3]
+ boost/detail/compressed_pair.hpp [1:3]
+ boost/detail/ob_compressed_pair.hpp [1:3]
+ boost/type_traits/add_pointer.hpp [2:4]
+ boost/type_traits/add_reference.hpp [2:4]
+ boost/type_traits/arithmetic_traits.hpp [1:3]
+ boost/type_traits/broken_compiler_spec.hpp [2:4]
+ boost/type_traits/config.hpp [2:4]
+ boost/type_traits/detail/config.hpp [2:4]
+ boost/type_traits/has_nothrow_assign.hpp [2:4]
+ boost/type_traits/has_nothrow_constructor.hpp [2:4]
+ boost/type_traits/has_nothrow_copy.hpp [2:4]
+ boost/type_traits/has_nothrow_destructor.hpp [2:4]
+ boost/type_traits/has_trivial_assign.hpp [2:4]
+ boost/type_traits/has_trivial_constructor.hpp [2:4]
+ boost/type_traits/has_trivial_copy.hpp [2:4]
+ boost/type_traits/has_trivial_destructor.hpp [2:4]
+ boost/type_traits/has_trivial_move_assign.hpp [2:6]
+ boost/type_traits/has_trivial_move_constructor.hpp [2:6]
+ boost/type_traits/intrinsics.hpp [1:3]
+ boost/type_traits/is_arithmetic.hpp [2:4]
+ boost/type_traits/is_compound.hpp [2:4]
+ boost/type_traits/is_empty.hpp [2:4]
+ boost/type_traits/is_float.hpp [1:3]
+ boost/type_traits/is_fundamental.hpp [2:4]
+ boost/type_traits/is_integral.hpp [2:4]
+ boost/type_traits/is_nothrow_move_assignable.hpp [2:6]
+ boost/type_traits/is_nothrow_move_constructible.hpp [2:6]
+ boost/type_traits/is_object.hpp [2:4]
+ boost/type_traits/is_pod.hpp [2:4]
+ boost/type_traits/is_scalar.hpp [2:4]
+ boost/type_traits/is_stateless.hpp [2:4]
+ boost/type_traits/is_void.hpp [2:4]
+ boost/type_traits/object_traits.hpp [1:3]
+ boost/type_traits/remove_bounds.hpp [2:4]
+ boost/type_traits/remove_pointer.hpp [2:4]
+ boost/type_traits/remove_reference.hpp [2:4]
+ boost/type_traits/transform_traits.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 64dbd3aca2afc873461283ccfd002322
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2003-2017 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/asio/experimental.hpp [5:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6518675878f6c96ced7667e2a4ed728a
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/os/haiku.h at line 5
+ License text:
+ Copyright Jessica Hamilton 2014
+ Copyright Rene Rivera 2014-2015
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/predef/os/haiku.h [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6543e5a77421b1baaaf79a9a214494d8
+BELONGS libs/filesystem/ya.make
+ License text:
+ // Copyright 2002-2009, 2014 Beman Dawes
+ // Copyright 2001 Dietmar Kuehl
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ libs/filesystem/src/operations.cpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6550e9b117fac9abf61bf5c60a55c7ac
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/msm/active_state_switching_policies.hpp at line 8, boost/msm/back/args.hpp at line 8, boost/msm/back/bind_helpers.hpp at line 8, boost/msm/back/common_types.hpp at line 8, boost/msm/back/copy_policies.hpp at line 8, boost/msm/back/default_compile_policy.hpp at line 8, boost/msm/back/dispatch_table.hpp at line 8, boost/msm/back/favor_compile_time.hpp at line 8, boost/msm/back/history_policies.hpp at line 8, boost/msm/back/metafunctions.hpp at line 8, boost/msm/back/mpl_graph_fsm_check.hpp at line 8, boost/msm/back/no_fsm_check.hpp at line 8, boost/msm/back/queue_container_circular.hpp at line 8, boost/msm/back/queue_container_deque.hpp at line 8, boost/msm/back/state_machine.hpp at line 8, boost/msm/back/tools.hpp at line 8, boost/msm/common.hpp at line 8, boost/msm/event_traits.hpp at line 8, boost/msm/front/common_states.hpp at line 8, boost/msm/front/completion_event.hpp at line 8, boost/msm/front/detail/common_states.hpp at line 8, boost/msm/front/detail/row2_helper.hpp at line 8, boost/msm/front/euml/algorithm.hpp at line 8, boost/msm/front/euml/common.hpp at line 8, boost/msm/front/euml/container.hpp at line 8, boost/msm/front/euml/euml.hpp at line 8, boost/msm/front/euml/euml_typeof.hpp at line 8, boost/msm/front/euml/guard_grammar.hpp at line 8, boost/msm/front/euml/iteration.hpp at line 8, boost/msm/front/euml/operator.hpp at line 8, boost/msm/front/euml/phoenix_placeholders.hpp at line 8, boost/msm/front/euml/querying.hpp at line 8, boost/msm/front/euml/state_grammar.hpp at line 8, boost/msm/front/euml/stl.hpp at line 8, boost/msm/front/euml/stt_grammar.hpp at line 8, boost/msm/front/euml/transformation.hpp at line 8, boost/msm/front/functor_row.hpp at line 8, boost/msm/front/internal_row.hpp at line 8, boost/msm/front/row2.hpp at line 8, boost/msm/front/state_machine_def.hpp at line 8, boost/msm/front/states.hpp at line 8, boost/msm/msm_grammar.hpp at line 8, boost/msm/proto_config.hpp at line 8, boost/msm/row_tags.hpp at line 8
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/msm/active_state_switching_policies.hpp [5:8]
+ boost/msm/back/args.hpp [5:8]
+ boost/msm/back/bind_helpers.hpp [5:8]
+ boost/msm/back/common_types.hpp [5:8]
+ boost/msm/back/copy_policies.hpp [5:8]
+ boost/msm/back/default_compile_policy.hpp [5:8]
+ boost/msm/back/dispatch_table.hpp [5:8]
+ boost/msm/back/favor_compile_time.hpp [5:8]
+ boost/msm/back/history_policies.hpp [5:8]
+ boost/msm/back/metafunctions.hpp [5:8]
+ boost/msm/back/mpl_graph_fsm_check.hpp [5:8]
+ boost/msm/back/no_fsm_check.hpp [5:8]
+ boost/msm/back/queue_container_circular.hpp [5:8]
+ boost/msm/back/queue_container_deque.hpp [5:8]
+ boost/msm/back/state_machine.hpp [5:8]
+ boost/msm/back/tools.hpp [5:8]
+ boost/msm/common.hpp [5:8]
+ boost/msm/event_traits.hpp [5:8]
+ boost/msm/front/common_states.hpp [5:8]
+ boost/msm/front/completion_event.hpp [5:8]
+ boost/msm/front/detail/common_states.hpp [5:8]
+ boost/msm/front/detail/row2_helper.hpp [5:8]
+ boost/msm/front/euml/algorithm.hpp [5:8]
+ boost/msm/front/euml/common.hpp [5:8]
+ boost/msm/front/euml/container.hpp [5:8]
+ boost/msm/front/euml/euml.hpp [5:8]
+ boost/msm/front/euml/euml_typeof.hpp [5:8]
+ boost/msm/front/euml/guard_grammar.hpp [5:8]
+ boost/msm/front/euml/iteration.hpp [5:8]
+ boost/msm/front/euml/operator.hpp [5:8]
+ boost/msm/front/euml/phoenix_placeholders.hpp [5:8]
+ boost/msm/front/euml/querying.hpp [5:8]
+ boost/msm/front/euml/state_grammar.hpp [5:8]
+ boost/msm/front/euml/stl.hpp [5:8]
+ boost/msm/front/euml/stt_grammar.hpp [5:8]
+ boost/msm/front/euml/transformation.hpp [5:8]
+ boost/msm/front/functor_row.hpp [5:8]
+ boost/msm/front/internal_row.hpp [5:8]
+ boost/msm/front/row2.hpp [5:8]
+ boost/msm/front/state_machine_def.hpp [5:8]
+ boost/msm/front/states.hpp [5:8]
+ boost/msm/msm_grammar.hpp [5:8]
+ boost/msm/proto_config.hpp [5:8]
+ boost/msm/row_tags.hpp [5:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6558581a775b2f48ad290a72ccc6c5bd
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2008, 2009 Peter Dimov
+ // Copyright (c) 2018 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/memory_order.hpp [5:6]
+ boost/smart_ptr/detail/sp_has_sync.hpp [13:13]
+
+KEEP COPYRIGHT_SERVICE_LABEL 655bf8e1c786a52443545b43e86b4361
+BELONGS libs/serialization/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/archive/detail/archive_serializer_map.hpp at line 15, boost/archive/detail/check.hpp at line 20, libs/serialization/src/archive_exception.cpp at line 6, libs/serialization/src/xml_archive_exception.cpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/archive/detail/archive_serializer_map.hpp [13:15]
+ boost/archive/detail/check.hpp [18:20]
+ libs/serialization/src/archive_exception.cpp [4:6]
+ libs/serialization/src/xml_archive_exception.cpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6587dc636363fab50bd61228a566457c
+BELONGS ya.make
+ License text:
+ // (C) Copyright Dave Abrahams and Daniel Walker 1999-2003.
+ // Copyright (c) Andrey Semashev 2017
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/next_prior.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 65ba4d43cd2a4710f9a61abf485eb0b5
+BELONGS ya.make
+ License text:
+ Copyright (c) 2005-2012 Joel de Guzman
+ Copyright (c) 2005-2007 Dan Marsden
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/container/deque/deque_fwd.hpp [2:3]
+ boost/fusion/container/deque/detail/cpp03/deque_fwd.hpp [2:3]
+ boost/phoenix/statement/throw.hpp [2:4]
+ boost/phoenix/statement/try_catch.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 65d8e0cce41880c02ab6a95962a28436
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/unordered/unordered_map.hpp at line 5, boost/unordered/unordered_set.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/unordered/unordered_map.hpp [2:5]
+ boost/unordered/unordered_set.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6625aadf2da3a6853799ab2f038409bc
+BELONGS ya.make
+ License text:
+ // Copyright Beman Dawes 2003, 2006
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/system/config.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 662fd5f8fcb9215250b9b25297287943
+BELONGS libs/chrono/ya.make ya.make
+ License text:
+ // Copyright 2009-2011 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/chrono/chrono.hpp [3:3]
+ boost/chrono/config.hpp [3:5]
+ boost/chrono/duration.hpp [3:5]
+ boost/chrono/process_cpu_clocks.hpp [3:4]
+ boost/chrono/system_clocks.hpp [3:5]
+ boost/chrono/thread_clock.hpp [3:3]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/stopwatch_scoped.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 667567db549e2384dc40b95c3243b949
+BELONGS ya.make
+ License text:
+ // Copyright Aleksey Gurtovoy 2002-2006
+ // Copyright David Abrahams 2002-2003
+ // Copyright Daniel Walker 2007
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/has_xxx.hpp [5:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 66c7426a103b2c0266f29cccdf5f2272
+BELONGS libs/thread/ya.make ya.make
+ License text:
+ // Copyright (C) 2002-2003
+ // David Moore, William E. Kempf
+ // Copyright (C) 2007-8 Anthony Williams
+ // (C) Copyright 2013 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/barrier.hpp [1:4]
+ boost/thread/completion_latch.hpp [4:4]
+ boost/thread/detail/counter.hpp [4:4]
+ boost/thread/latch.hpp [4:4]
+ boost/thread/ostream_buffer.hpp [1:3]
+ boost/thread/pthread/once_atomic.hpp [6:7]
+ boost/thread/thread_only.hpp [6:6]
+ libs/thread/src/pthread/once_atomic.cpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 66f5b918eb37787d1fd47384e1d4d24d
+BELONGS ya.make
+ License text:
+ // (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
+ // Howard Hinnant and John Maddock 2000.
+ // (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 2001
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_traits/is_const.hpp [2:4]
+ boost/type_traits/is_lvalue_reference.hpp [2:4]
+ boost/type_traits/is_member_pointer.hpp [2:4]
+ boost/type_traits/is_pointer.hpp [2:4]
+ boost/type_traits/is_same.hpp [2:4]
+ boost/type_traits/is_volatile.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 670e9fea8b553fd6cefa4f9a295c8a0a
+BELONGS ya.make
+ License text:
+ // Copyright 2012 The Trustees of Indiana University.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/detail/is_distributed_selector.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 671c483a6632cd05f47c5ebf10502cb2
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/metaparse/util/is_digit.hpp at line 6, boost/metaparse/v1/accept_when.hpp at line 6, boost/metaparse/v1/alphanum.hpp at line 6, boost/metaparse/v1/always.hpp at line 6, boost/metaparse/v1/build_parser.hpp at line 6, boost/metaparse/v1/cpp98/first_of.hpp at line 6, boost/metaparse/v1/cpp98/last_of.hpp at line 6, boost/metaparse/v1/digit.hpp at line 6, boost/metaparse/v1/digit_val.hpp at line 6, boost/metaparse/v1/fail.hpp at line 6, boost/metaparse/v1/if_.hpp at line 6, boost/metaparse/v1/iterate.hpp at line 6, boost/metaparse/v1/keyword.hpp at line 6, boost/metaparse/v1/letter.hpp at line 6, boost/metaparse/v1/lit.hpp at line 6, boost/metaparse/v1/lit_c.hpp at line 6, boost/metaparse/v1/middle_of.hpp at line 6, boost/metaparse/v1/one_of.hpp at line 6, boost/metaparse/v1/repeated.hpp at line 6, boost/metaparse/v1/repeated1.hpp at line 6, boost/metaparse/v1/return_.hpp at line 6, boost/metaparse/v1/sequence.hpp at line 6, boost/metaparse/v1/space.hpp at line 6, boost/metaparse/v1/spaces.hpp at line 6, boost/metaparse/v1/token.hpp at line 6, boost/metaparse/v1/transform.hpp at line 6, boost/metaparse/v1/util/digit_to_int.hpp at line 6, boost/metaparse/v1/util/in_range.hpp at line 6, boost/metaparse/v1/util/is_digit.hpp at line 6, boost/metaparse/v1/util/is_lcase_letter.hpp at line 6, boost/metaparse/v1/util/is_letter.hpp at line 6, boost/metaparse/v1/util/is_ucase_letter.hpp at line 6, boost/metaparse/v1/util/is_whitespace.hpp at line 6
+ License text:
+ // Copyright Abel Sinkovics (abel@sinkovics.hu) 2009 - 2010.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/metaparse/util/is_digit.hpp [4:6]
+ boost/metaparse/v1/accept_when.hpp [4:6]
+ boost/metaparse/v1/alphanum.hpp [4:6]
+ boost/metaparse/v1/always.hpp [4:6]
+ boost/metaparse/v1/build_parser.hpp [4:6]
+ boost/metaparse/v1/cpp98/first_of.hpp [4:6]
+ boost/metaparse/v1/cpp98/last_of.hpp [4:6]
+ boost/metaparse/v1/digit.hpp [4:6]
+ boost/metaparse/v1/digit_val.hpp [4:6]
+ boost/metaparse/v1/fail.hpp [4:6]
+ boost/metaparse/v1/if_.hpp [4:6]
+ boost/metaparse/v1/iterate.hpp [4:6]
+ boost/metaparse/v1/keyword.hpp [4:6]
+ boost/metaparse/v1/letter.hpp [4:6]
+ boost/metaparse/v1/lit.hpp [4:6]
+ boost/metaparse/v1/lit_c.hpp [4:6]
+ boost/metaparse/v1/middle_of.hpp [4:6]
+ boost/metaparse/v1/one_of.hpp [4:6]
+ boost/metaparse/v1/repeated.hpp [4:6]
+ boost/metaparse/v1/repeated1.hpp [4:6]
+ boost/metaparse/v1/return_.hpp [4:6]
+ boost/metaparse/v1/sequence.hpp [4:6]
+ boost/metaparse/v1/space.hpp [4:6]
+ boost/metaparse/v1/spaces.hpp [4:6]
+ boost/metaparse/v1/token.hpp [4:6]
+ boost/metaparse/v1/transform.hpp [4:6]
+ boost/metaparse/v1/util/digit_to_int.hpp [4:6]
+ boost/metaparse/v1/util/in_range.hpp [4:6]
+ boost/metaparse/v1/util/is_digit.hpp [4:6]
+ boost/metaparse/v1/util/is_lcase_letter.hpp [4:6]
+ boost/metaparse/v1/util/is_letter.hpp [4:6]
+ boost/metaparse/v1/util/is_ucase_letter.hpp [4:6]
+ boost/metaparse/v1/util/is_whitespace.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 679941027a28a2d38cbeba8fbb2a6c1b
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic.hpp [2:14]
+ boost/spirit/home/classic/core.hpp [2:8]
+ boost/spirit/home/classic/utility.hpp [2:9]
+ boost/spirit/home/classic/utility/loops.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6805e61dcffc0a494c7cc43bd2a4bf37
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/pthread/mutex.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/pthread/mutex.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6833867255c2b176df5af1500538ea6d
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2003-2008 Matthias Christian Schabel
+ // Copyright (C) 2007-2008 Steven Watanabe
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/units/base_dimension.hpp [4:5]
+ boost/units/base_unit.hpp [4:5]
+ boost/units/base_units/angle/arcminute.hpp [4:5]
+ boost/units/base_units/angle/arcsecond.hpp [4:5]
+ boost/units/base_units/angle/degree.hpp [4:5]
+ boost/units/base_units/angle/gradian.hpp [4:5]
+ boost/units/base_units/angle/radian.hpp [4:5]
+ boost/units/base_units/angle/revolution.hpp [4:5]
+ boost/units/base_units/angle/steradian.hpp [4:5]
+ boost/units/base_units/astronomical/astronomical_unit.hpp [4:5]
+ boost/units/base_units/astronomical/light_day.hpp [4:5]
+ boost/units/base_units/astronomical/light_hour.hpp [4:5]
+ boost/units/base_units/astronomical/light_minute.hpp [4:5]
+ boost/units/base_units/astronomical/light_second.hpp [4:5]
+ boost/units/base_units/astronomical/light_year.hpp [4:5]
+ boost/units/base_units/astronomical/parsec.hpp [4:5]
+ boost/units/base_units/cgs/biot.hpp [4:5]
+ boost/units/base_units/cgs/centimeter.hpp [4:5]
+ boost/units/base_units/cgs/gram.hpp [4:5]
+ boost/units/base_units/imperial/conversions.hpp [4:5]
+ boost/units/base_units/imperial/drachm.hpp [4:5]
+ boost/units/base_units/imperial/fluid_ounce.hpp [4:5]
+ boost/units/base_units/imperial/foot.hpp [4:5]
+ boost/units/base_units/imperial/furlong.hpp [4:5]
+ boost/units/base_units/imperial/gallon.hpp [4:5]
+ boost/units/base_units/imperial/gill.hpp [4:5]
+ boost/units/base_units/imperial/grain.hpp [4:5]
+ boost/units/base_units/imperial/hundredweight.hpp [4:5]
+ boost/units/base_units/imperial/inch.hpp [4:5]
+ boost/units/base_units/imperial/league.hpp [4:5]
+ boost/units/base_units/imperial/mile.hpp [4:5]
+ boost/units/base_units/imperial/ounce.hpp [4:5]
+ boost/units/base_units/imperial/pint.hpp [4:5]
+ boost/units/base_units/imperial/pound.hpp [4:5]
+ boost/units/base_units/imperial/quart.hpp [4:5]
+ boost/units/base_units/imperial/quarter.hpp [4:5]
+ boost/units/base_units/imperial/stone.hpp [4:5]
+ boost/units/base_units/imperial/thou.hpp [4:5]
+ boost/units/base_units/imperial/ton.hpp [4:5]
+ boost/units/base_units/imperial/yard.hpp [4:5]
+ boost/units/base_units/metric/angstrom.hpp [4:5]
+ boost/units/base_units/metric/are.hpp [4:5]
+ boost/units/base_units/metric/atmosphere.hpp [4:5]
+ boost/units/base_units/metric/bar.hpp [4:5]
+ boost/units/base_units/metric/barn.hpp [4:5]
+ boost/units/base_units/metric/day.hpp [4:5]
+ boost/units/base_units/metric/fermi.hpp [4:5]
+ boost/units/base_units/metric/hectare.hpp [4:5]
+ boost/units/base_units/metric/hour.hpp [4:5]
+ boost/units/base_units/metric/knot.hpp [4:5]
+ boost/units/base_units/metric/liter.hpp [4:5]
+ boost/units/base_units/metric/micron.hpp [4:5]
+ boost/units/base_units/metric/minute.hpp [4:5]
+ boost/units/base_units/metric/mmHg.hpp [4:5]
+ boost/units/base_units/metric/nautical_mile.hpp [4:5]
+ boost/units/base_units/metric/ton.hpp [4:5]
+ boost/units/base_units/metric/torr.hpp [4:5]
+ boost/units/base_units/metric/year.hpp [4:5]
+ boost/units/base_units/si/ampere.hpp [4:5]
+ boost/units/base_units/si/candela.hpp [4:5]
+ boost/units/base_units/si/kelvin.hpp [4:5]
+ boost/units/base_units/si/kilogram.hpp [4:5]
+ boost/units/base_units/si/meter.hpp [4:5]
+ boost/units/base_units/si/mole.hpp [4:5]
+ boost/units/base_units/si/second.hpp [4:5]
+ boost/units/base_units/temperature/celsius.hpp [4:5]
+ boost/units/base_units/temperature/conversions.hpp [4:5]
+ boost/units/base_units/temperature/fahrenheit.hpp [4:5]
+ boost/units/base_units/us/cup.hpp [4:5]
+ boost/units/base_units/us/dram.hpp [4:5]
+ boost/units/base_units/us/fluid_dram.hpp [4:5]
+ boost/units/base_units/us/fluid_ounce.hpp [4:5]
+ boost/units/base_units/us/foot.hpp [4:5]
+ boost/units/base_units/us/gallon.hpp [4:5]
+ boost/units/base_units/us/gill.hpp [4:5]
+ boost/units/base_units/us/grain.hpp [4:5]
+ boost/units/base_units/us/hundredweight.hpp [4:5]
+ boost/units/base_units/us/inch.hpp [4:5]
+ boost/units/base_units/us/mil.hpp [4:5]
+ boost/units/base_units/us/mile.hpp [4:5]
+ boost/units/base_units/us/minim.hpp [4:5]
+ boost/units/base_units/us/ounce.hpp [4:5]
+ boost/units/base_units/us/pint.hpp [4:5]
+ boost/units/base_units/us/pound.hpp [4:5]
+ boost/units/base_units/us/quart.hpp [4:5]
+ boost/units/base_units/us/tablespoon.hpp [4:5]
+ boost/units/base_units/us/teaspoon.hpp [4:5]
+ boost/units/base_units/us/ton.hpp [4:5]
+ boost/units/base_units/us/yard.hpp [4:5]
+ boost/units/cmath.hpp [4:5]
+ boost/units/conversion.hpp [4:5]
+ boost/units/detail/conversion_impl.hpp [4:5]
+ boost/units/detail/dimensionless_unit.hpp [4:5]
+ boost/units/detail/ordinal.hpp [4:5]
+ boost/units/detail/prevent_redefinition.hpp [4:5]
+ boost/units/detail/static_rational_power.hpp [4:5]
+ boost/units/detail/unscale.hpp [4:5]
+ boost/units/dim.hpp [4:5]
+ boost/units/dimension.hpp [4:5]
+ boost/units/dimensionless_type.hpp [4:5]
+ boost/units/heterogeneous_system.hpp [4:5]
+ boost/units/limits.hpp [4:5]
+ boost/units/make_scaled_unit.hpp [4:5]
+ boost/units/quantity.hpp [4:5]
+ boost/units/reduce_unit.hpp [4:5]
+ boost/units/scale.hpp [4:5]
+ boost/units/systems/si/prefixes.hpp [4:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 685e870aed6edd687e76f59c1af549a1
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/process.hpp [1:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 686307e753ad6e1d636dbc622eedb324
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2006 Tiago de Paula Peixoto <tiago@forked.de>
+ // Copyright (C) 2004 The Trustees of Indiana University.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/graphml.hpp [1:2]
+ boost/mpi/collectives/all_reduce.hpp [1:2]
+ boost/mpi/collectives/reduce.hpp [1:2]
+ boost/mpi/collectives/scan.hpp [1:2]
+ boost/mpi/operations.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 686b40c0117a62300977756a32a3ec15
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/rational.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 688f8a68a65d165207c6dbdd79b6f042
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/stdlib/libcomo.hpp [1:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 68a12c1a2cce9c33a510ed0375d9cd55
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001-2011 Hartmut Kaiser
+ // Copyright (c) 2001-2011 Joel de Guzman
+ // Copyright (c) 2009 Carl Barron
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/lex/tokenize_and_parse_attr.hpp [1:3]
+ boost/spirit/home/qi/parse_attr.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 68a6c764f9bdcb306b95b72ac086a1c4
+BELONGS ya.make
+ License text:
+ Copyright 2010-2012 Karsten Ahnert
+ Copyright 2010 Mario Mulansky
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/algebra/detail/macros.hpp [9:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL 68d9bc6dadace636c31f8614febd2470
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2000, 2001 Stephen Cleary
+ // Copyright (C) 2010 Paul A. Bristow added Doxygen comments.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/pool/pool_alloc.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 68da47e054a847ce9a50d45c42357ad0
+BELONGS ya.make
+ License text:
+ // Copyright 2015, 2017 Peter Dimov.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mp11/integer_sequence.hpp [4:4]
+ boost/mp11/tuple.hpp [4:4]
+ boost/mp11/utility.hpp [4:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 68e8a0b89a68eb7d87379b934978ff17
+BELONGS ya.make
+ License text:
+ Copyright 2010-2013 Karsten Ahnert
+ Copyright 2010-2013 Mario Mulansky
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/algebra/range_algebra.hpp [10:11]
+ boost/numeric/odeint/stepper/base/explicit_error_stepper_base.hpp [9:11]
+ boost/numeric/odeint/stepper/base/explicit_error_stepper_fsal_base.hpp [9:11]
+ boost/numeric/odeint/stepper/base/explicit_stepper_base.hpp [9:11]
+ boost/numeric/odeint/stepper/controlled_runge_kutta.hpp [8:10]
+ boost/numeric/odeint/stepper/euler.hpp [10:11]
+ boost/numeric/odeint/stepper/runge_kutta4_classic.hpp [9:11]
+ boost/numeric/odeint/stepper/runge_kutta_cash_karp54_classic.hpp [9:11]
+ boost/numeric/odeint/stepper/runge_kutta_dopri5.hpp [9:11]
+
+KEEP COPYRIGHT_SERVICE_LABEL 68edd4a9e831eca12e9c421dc603f4c6
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/platform/win32.hpp [1:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 69401e7364b54c2f9974884bf9f0569d
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2010 Alfredo Correa
+ // Copyright (c) 2010-2012 Barend Gehrels, Amsterdam, the Netherlands.
+ // Copyright (c) 2016 Norbert Wenzel
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/geometries/adapted/std_array.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6979af021e1c110fc46cf74cf2f06442
+BELONGS ya.make
+ License text:
+ // Copyright 2003 - 2011 LASMEA UMR 6602 CNRS/Univ. Clermont II
+ // Copyright 2009 - 2011 LRI UMR 8623 CNRS/Univ Paris Sud XI
+ // Copyright 2011 Eric Niebler
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/proto/detail/remove_typename.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 697cb0d596751ecb1c3f13236f0f3bc9
+BELONGS ya.make
+ License text:
+ Copyright (c) 2011 Steven Watanabe
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/phoenix/stl/cmath.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 698c24e237249952c4045083d4e9f956
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic.hpp [2:14]
+ boost/spirit/include/classic_spirit.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 69913f770ab644c0c626ffe368b41c06
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/pending/fenced_priority_queue.hpp at line 3
+ License text:
+ // (C) Copyright Jeremiah Willcock 2004
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/pending/fenced_priority_queue.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 699d2877d9168a8f70b9f8c47f949f88
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
+ // Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
+ // Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/append.hpp [3:5]
+ boost/geometry/algorithms/comparable_distance.hpp [3:5]
+ boost/geometry/algorithms/detail/comparable_distance/implementation.hpp [3:5]
+ boost/geometry/algorithms/detail/comparable_distance/interface.hpp [3:5]
+ boost/geometry/algorithms/detail/counting.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/areal_areal.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/implementation.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/interface.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/linear_areal.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/linear_linear.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/linear_segment_or_box.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/segment_box.hpp [3:6]
+ boost/geometry/algorithms/detail/distance/backward_compatibility.hpp [3:6]
+ boost/geometry/algorithms/detail/distance/default_strategies.hpp [3:6]
+ boost/geometry/algorithms/detail/distance/implementation.hpp [3:6]
+ boost/geometry/algorithms/detail/distance/interface.hpp [3:7]
+ boost/geometry/algorithms/detail/distance/point_to_geometry.hpp [3:6]
+ boost/geometry/algorithms/detail/equals/collect_vectors.hpp [3:6]
+ boost/geometry/algorithms/detail/equals/point_point.hpp [3:6]
+ boost/geometry/algorithms/detail/intersects/implementation.hpp [3:5]
+ boost/geometry/algorithms/detail/intersects/interface.hpp [3:5]
+ boost/geometry/algorithms/detail/overlay/copy_segments.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/follow.hpp [3:4]
+ boost/geometry/algorithms/detail/overlay/select_rings.hpp [3:4]
+ boost/geometry/algorithms/disjoint.hpp [3:6]
+ boost/geometry/algorithms/dispatch/disjoint.hpp [3:6]
+ boost/geometry/algorithms/dispatch/distance.hpp [3:6]
+ boost/geometry/algorithms/distance.hpp [3:6]
+ boost/geometry/algorithms/for_each.hpp [3:6]
+ boost/geometry/algorithms/intersects.hpp [3:5]
+ boost/geometry/algorithms/length.hpp [3:5]
+ boost/geometry/algorithms/num_geometries.hpp [3:5]
+ boost/geometry/algorithms/num_interior_rings.hpp [3:5]
+ boost/geometry/algorithms/num_points.hpp [3:6]
+ boost/geometry/algorithms/perimeter.hpp [3:5]
+ boost/geometry/algorithms/union.hpp [3:3]
+ boost/geometry/core/cs.hpp [3:5]
+ boost/geometry/geometries/point.hpp [3:6]
+ boost/geometry/multi/algorithms/append.hpp [3:5]
+ boost/geometry/multi/algorithms/distance.hpp [3:5]
+ boost/geometry/multi/algorithms/num_points.hpp [3:5]
+ boost/geometry/policies/disjoint_interrupt_policy.hpp [3:6]
+ boost/geometry/policies/relate/intersection_ratios.hpp [3:3]
+ boost/geometry/strategies/cartesian/disjoint_segment_box.hpp [3:6]
+ boost/geometry/strategies/cartesian/intersection.hpp [3:4]
+ boost/geometry/strategies/concepts/distance_concept.hpp [3:5]
+ boost/geometry/strategies/default_comparable_distance_result.hpp [3:5]
+ boost/geometry/strategies/default_distance_result.hpp [3:5]
+ boost/geometry/strategies/default_length_result.hpp [3:5]
+ boost/geometry/strategies/distance.hpp [3:5]
+ boost/geometry/strategies/spherical/distance_cross_track.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 699df4854f5487b4d64fc61aef362aed
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2001 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
+ // Copyright (C) 2001 Gary Powell (gary.powell@sierra.com)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/tuple/tuple_comparison.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 69bcb4be33af6a68ee5b2402e22c8a3b
+BELONGS libs/thread/ya.make
+ License text:
+ // Copyright (C) 2007 Anthony Williams
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ libs/thread/src/pthread/once.cpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 69c01e55c80a63b913179de5dfb66471
+BELONGS ya.make
+ License text:
+ Copyright (c) 2008-2010: Joachim Faulhaber
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/icl/detail/interval_map_algo.hpp [2:2]
+ boost/icl/detail/interval_set_algo.hpp [2:2]
+ boost/icl/type_traits/absorbs_identities.hpp [2:2]
+ boost/icl/type_traits/unit_element.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6a46fd178395575735278797c48f3d2b
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2010-2011 Tim Blechmann
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/heap/policies.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6a5bb33534c65cbbd8a5451177723c69
+BELONGS ya.make
+ License text:
+ Copyright (c) 2007-2011 Hartmut Kaiser
+ Copyright (c) Christopher Diggins 2005
+ Copyright (c) Pablo Aguilar 2005
+ Copyright (c) Kevlin Henney 2001
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/support/detail/hold_any.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6a6c9a6124e28d8085f33940fe7bdb01
+BELONGS libs/log/ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: libs/log/src/timestamp.cpp at line 4
+ License text:
+ * Copyright Andrey Semashev 2007 - 2018.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ libs/log/src/timestamp.cpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6a88160c047fa8e02c3278fc7d84cae4
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/has_trivial_move_assign.hpp at line 6, boost/type_traits/has_trivial_move_constructor.hpp at line 6, boost/type_traits/is_nothrow_move_assignable.hpp at line 6, boost/type_traits/is_nothrow_move_constructible.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_traits/has_trivial_move_assign.hpp [2:6]
+ boost/type_traits/has_trivial_move_constructor.hpp [2:6]
+ boost/type_traits/is_nothrow_move_assignable.hpp [2:6]
+ boost/type_traits/is_nothrow_move_constructible.hpp [2:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6a8a7f9c1dc28ae01bbb471e161b9528
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2002, 2003 Peter Dimov and Multi Media Ltd.
+ // Copyright (c) 2008 Frank Mori Hess
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/signals2/detail/lwm_nop.hpp [4:5]
+ boost/signals2/detail/lwm_pthreads.hpp [4:5]
+ boost/signals2/detail/lwm_win32_cs.hpp [4:6]
+ boost/signals2/mutex.hpp [4:5]
+ boost/smart_ptr/owner_less.hpp [7:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6a98d8fc5a884a9147e3cd6981b9cba9
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2009 Joel de Guzman
+ Copyright (c) 2009-2010 Hartmut Kaiser
+ Copyright (c) 2010-2011 Christopher Schmidt
+ Copyright (c) 2013-2014 Damien Buhl
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/adapted/adt/adapt_adt.hpp [2:5]
+ boost/fusion/adapted/adt/adapt_adt_named.hpp [2:4]
+ boost/fusion/adapted/adt/adapt_assoc_adt.hpp [2:5]
+ boost/fusion/adapted/adt/detail/adapt_base.hpp [2:4]
+ boost/fusion/adapted/adt/detail/extension.hpp [2:4]
+ boost/fusion/adapted/struct/detail/adapt_base.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6aa5a368ddf82ac8765157c83c7cbccb
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
+ // Copyright 2004-2005 Peter Dimov
+ // Copyright 2007-2012 Ion Gaztanaga
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/interprocess/smart_ptr/detail/sp_counted_base_atomic.hpp [12:14]
+ boost/interprocess/smart_ptr/detail/sp_counted_impl.hpp [16:18]
+ boost/smart_ptr/detail/shared_count.hpp [13:14]
+ boost/smart_ptr/detail/sp_counted_base_aix.hpp [8:10]
+ boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp [13:14]
+ boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp [13:15]
+ boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp [13:14]
+ boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp [13:14]
+ boost/smart_ptr/detail/sp_counted_base_nt.hpp [13:14]
+ boost/smart_ptr/detail/sp_counted_base_pt.hpp [13:14]
+ boost/smart_ptr/detail/sp_counted_base_solaris.hpp [8:10]
+ boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp [8:11]
+ boost/smart_ptr/detail/sp_counted_base_w32.hpp [13:14]
+ boost/smart_ptr/detail/sp_counted_impl.hpp [13:14]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6b1ab40ae46ff90ccb7c47e8c55973bc
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/buffer_concepts.hpp at line 3, boost/graph/stoer_wagner_min_cut.hpp at line 3
+ License text:
+ // Copyright Daniel Trebbien 2010.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or the copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/buffer_concepts.hpp [1:3]
+ boost/graph/stoer_wagner_min_cut.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6b3739203926d66bd02ccd13e7de0e21
+BELONGS ya.make
+ License text:
+ // (C) Copyright Stephen Cleary 2000.
+ // (C) Copyright Ion Gaztanaga 2007-2013.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/container/detail/math_functions.hpp [3:4]
+ boost/container/detail/mutex.hpp [3:4]
+ boost/interprocess/detail/math_functions.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6b6f79fc5e7fa6cea0ca8005d59ea5f4
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/numeric/detail/function1.hpp at line 3, boost/accumulators/numeric/detail/function2.hpp at line 3, boost/accumulators/numeric/detail/function3.hpp at line 3, boost/accumulators/numeric/detail/function4.hpp at line 3, boost/accumulators/numeric/detail/function_n.hpp at line 3, boost/accumulators/numeric/detail/pod_singleton.hpp at line 3, boost/archive/detail/register_archive.hpp at line 3, boost/concept/assert.hpp at line 3, boost/concept/detail/borland.hpp at line 3, boost/concept/detail/concept_def.hpp at line 3, boost/concept/detail/concept_undef.hpp at line 3, boost/concept/detail/general.hpp at line 3, boost/concept/detail/has_constraints.hpp at line 3, boost/concept/detail/msvc.hpp at line 3, boost/concept/requires.hpp at line 3, boost/concept/usage.hpp at line 3, boost/concept_check/borland.hpp at line 3, boost/concept_check/general.hpp at line 3, boost/concept_check/has_constraints.hpp at line 3, boost/concept_check/msvc.hpp at line 3, boost/parameter/aux_/parenthesized_type.hpp at line 3, boost/serialization/singleton.hpp at line 9
+ License text:
+ // Copyright David Abrahams 2006. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/accumulators/numeric/detail/function1.hpp [1:3]
+ boost/accumulators/numeric/detail/function2.hpp [1:3]
+ boost/accumulators/numeric/detail/function3.hpp [1:3]
+ boost/accumulators/numeric/detail/function4.hpp [1:3]
+ boost/accumulators/numeric/detail/function_n.hpp [1:3]
+ boost/accumulators/numeric/detail/pod_singleton.hpp [1:3]
+ boost/archive/detail/register_archive.hpp [1:3]
+ boost/concept/assert.hpp [1:3]
+ boost/concept/detail/borland.hpp [1:3]
+ boost/concept/detail/concept_def.hpp [1:3]
+ boost/concept/detail/concept_undef.hpp [1:3]
+ boost/concept/detail/general.hpp [1:3]
+ boost/concept/detail/has_constraints.hpp [1:3]
+ boost/concept/detail/msvc.hpp [1:3]
+ boost/concept/requires.hpp [1:3]
+ boost/concept/usage.hpp [1:3]
+ boost/concept_check/borland.hpp [1:3]
+ boost/concept_check/general.hpp [1:3]
+ boost/concept_check/has_constraints.hpp [1:3]
+ boost/concept_check/msvc.hpp [1:3]
+ boost/parameter/aux_/parenthesized_type.hpp [1:3]
+ boost/serialization/singleton.hpp [7:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6ba84e6b22158f449d69d0b66297024e
+BELONGS libs/regex/ya.make ya.make
+ License text:
+ * Copyright (c) 2004
+ * John Maddock
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/regex/concepts.hpp [3:4]
+ boost/regex/icu.hpp [3:4]
+ boost/regex/mfc.hpp [3:4]
+ boost/regex/pending/object_cache.hpp [3:4]
+ boost/regex/pending/static_mutex.hpp [3:4]
+ boost/regex/pending/unicode_iterator.hpp [3:4]
+ boost/regex/v4/basic_regex_creator.hpp [3:4]
+ boost/regex/v4/basic_regex_parser.hpp [3:4]
+ boost/regex/v4/c_regex_traits.hpp [3:4]
+ boost/regex/v4/cpp_regex_traits.hpp [3:4]
+ boost/regex/v4/protected_call.hpp [3:4]
+ boost/regex/v4/regex_traits_defaults.hpp [3:4]
+ boost/regex/v4/w32_regex_traits.hpp [3:4]
+ libs/regex/src/c_regex_traits.cpp [3:4]
+ libs/regex/src/cpp_regex_traits.cpp [3:4]
+ libs/regex/src/icu.cpp [3:4]
+ libs/regex/src/regex_raw_buffer.cpp [3:4]
+ libs/regex/src/regex_traits_defaults.cpp [3:4]
+ libs/regex/src/static_mutex.cpp [3:4]
+ libs/regex/src/w32_regex_traits.cpp [3:4]
+ libs/regex/src/wc_regex_traits.cpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6bb32fef4ebd189bd262c0096d6414ff
+BELONGS ya.make
+ License text:
+ // (C) Copyright John Maddock 2006, 2015
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/relative_difference.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6bc33a98f148ae61cdfa08dee31cb8a6
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/uuid/detail/uuid_generic.ipp at line 4
+ License text:
+ * Copyright Andy Tompkins 2006.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/uuid/detail/uuid_generic.ipp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6c09a0db5e085f0080699290089398e9
+BELONGS ya.make
+ License text:
+ // Copyright Aleksey Gurtovoy 2000-2003
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/sizeof.hpp [5:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6c84f67bc267aa5792c9ce1502ce694e
+BELONGS ya.make
+ License text:
+ // (C) Copyright Howard Hinnant 2007-2010. Distributed under the Boost
+ // Software License, Version 1.0. (see http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/interprocess/sync/interprocess_sharable_mutex.hpp [4:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6c8d3bbf493a9bc4cb2f612592da5d97
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/buffer/turn_in_original_visitor.hpp [3:3]
+ boost/geometry/algorithms/detail/get_max_size.hpp [3:6]
+ boost/geometry/policies/robustness/robust_type.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6cb8699606d013c0845cb870893ac3e8
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/process/args.hpp [1:6]
+ boost/process/async_pipe.hpp [1:5]
+ boost/process/async_system.hpp [1:6]
+ boost/process/child.hpp [1:6]
+ boost/process/cmd.hpp [1:6]
+ boost/process/detail/child_decl.hpp [1:6]
+ boost/process/detail/config.hpp [1:6]
+ boost/process/detail/execute_impl.hpp [1:6]
+ boost/process/detail/handler_base.hpp [1:6]
+ boost/process/detail/posix/async_in.hpp [1:5]
+ boost/process/detail/posix/async_out.hpp [1:5]
+ boost/process/detail/posix/basic_pipe.hpp [1:5]
+ boost/process/detail/posix/child_handle.hpp [1:5]
+ boost/process/detail/posix/close_in.hpp [1:5]
+ boost/process/detail/posix/close_out.hpp [1:5]
+ boost/process/detail/posix/executor.hpp [1:5]
+ boost/process/detail/posix/fd.hpp [1:5]
+ boost/process/detail/posix/file_in.hpp [1:5]
+ boost/process/detail/posix/file_out.hpp [1:6]
+ boost/process/detail/posix/null_in.hpp [1:5]
+ boost/process/detail/posix/null_out.hpp [1:6]
+ boost/process/detail/posix/pipe_in.hpp [1:5]
+ boost/process/detail/posix/pipe_out.hpp [1:6]
+ boost/process/detail/posix/search_path.hpp [1:5]
+ boost/process/detail/posix/shell_path.hpp [1:5]
+ boost/process/detail/posix/signal.hpp [1:6]
+ boost/process/detail/posix/start_dir.hpp [1:5]
+ boost/process/detail/posix/terminate.hpp [1:5]
+ boost/process/detail/posix/wait_for_exit.hpp [1:5]
+ boost/process/detail/posix/wait_group.hpp [1:5]
+ boost/process/detail/throw_on_error.hpp [1:6]
+ boost/process/detail/windows/async_in.hpp [1:5]
+ boost/process/detail/windows/async_out.hpp [1:5]
+ boost/process/detail/windows/child_handle.hpp [1:5]
+ boost/process/detail/windows/close_in.hpp [1:5]
+ boost/process/detail/windows/close_out.hpp [1:5]
+ boost/process/detail/windows/executor.hpp [1:6]
+ boost/process/detail/windows/file_in.hpp [1:5]
+ boost/process/detail/windows/file_out.hpp [1:5]
+ boost/process/detail/windows/null_in.hpp [1:5]
+ boost/process/detail/windows/null_out.hpp [1:5]
+ boost/process/detail/windows/pipe_in.hpp [1:5]
+ boost/process/detail/windows/pipe_out.hpp [1:6]
+ boost/process/detail/windows/search_path.hpp [1:5]
+ boost/process/detail/windows/shell_path.hpp [1:5]
+ boost/process/detail/windows/show_window.hpp [1:6]
+ boost/process/detail/windows/start_dir.hpp [1:5]
+ boost/process/detail/windows/terminate.hpp [1:5]
+ boost/process/detail/windows/wait_for_exit.hpp [1:6]
+ boost/process/error.hpp [1:6]
+ boost/process/exe.hpp [1:6]
+ boost/process/pipe.hpp [1:5]
+ boost/process/search_path.hpp [1:5]
+ boost/process/shell.hpp [1:6]
+ boost/process/spawn.hpp [1:6]
+ boost/process/start_dir.hpp [1:5]
+ boost/process/system.hpp [1:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6ce14f1c23b7f081182f398a3770f41b
+BELONGS ya.make
+ License text:
+ Copyright (c) 2006 Daniel Wallin
+ Copyright (c) 2005 Dan Marsden
+ Copyright (c) 2007 Joel de Guzman
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/phoenix/stl.hpp [2:4]
+ boost/phoenix/stl/algorithm.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6cebab0728f1dcaff40c8a96c7f12d0f
+BELONGS ya.make
+ License text:
+ // Copyright Aleksey Gurtovoy 2001-2004
+ // Copyright David Abrahams 2001-2002
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/accumulate.hpp [5:6]
+ boost/mpl/always.hpp [5:5]
+ boost/mpl/arg.hpp [9:10]
+ boost/mpl/arg_fwd.hpp [5:6]
+ boost/mpl/aux_/arg_typedef.hpp [5:5]
+ boost/mpl/aux_/arity.hpp [5:5]
+ boost/mpl/aux_/arity_spec.hpp [5:5]
+ boost/mpl/aux_/basic_bind.hpp [5:6]
+ boost/mpl/aux_/config/dtp.hpp [5:5]
+ boost/mpl/aux_/config/eti.hpp [5:5]
+ boost/mpl/aux_/config/nttp.hpp [5:5]
+ boost/mpl/aux_/fold_op.hpp [5:5]
+ boost/mpl/aux_/fold_pred.hpp [5:5]
+ boost/mpl/aux_/full_lambda.hpp [9:9]
+ boost/mpl/aux_/is_msvc_eti_arg.hpp [5:5]
+ boost/mpl/aux_/iter_fold_if_impl.hpp [5:6]
+ boost/mpl/aux_/lambda_arity_param.hpp [5:5]
+ boost/mpl/aux_/lambda_support.hpp [5:5]
+ boost/mpl/aux_/msvc_eti_base.hpp [5:5]
+ boost/mpl/aux_/msvc_type.hpp [5:5]
+ boost/mpl/aux_/na.hpp [5:5]
+ boost/mpl/aux_/na_assert.hpp [5:5]
+ boost/mpl/aux_/na_fwd.hpp [5:5]
+ boost/mpl/aux_/na_spec.hpp [5:5]
+ boost/mpl/aux_/nttp_decl.hpp [5:5]
+ boost/mpl/aux_/preprocessed/bcc/arg.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc/basic_bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc/bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc/full_lambda.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc/inherit.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc/iter_fold_if_impl.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc/placeholders.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc/template_arity.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/arg.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc551/basic_bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc551/bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc551/full_lambda.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/inherit.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc551/iter_fold_if_impl.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc551/placeholders.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc551/template_arity.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/arg.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc_pre590/basic_bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc_pre590/bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc_pre590/full_lambda.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/inherit.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_if_impl.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc_pre590/placeholders.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc_pre590/template_arity.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/arg.hpp [2:3]
+ boost/mpl/aux_/preprocessed/dmc/basic_bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/dmc/bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/dmc/full_lambda.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/inherit.hpp [2:2]
+ boost/mpl/aux_/preprocessed/dmc/iter_fold_if_impl.hpp [2:3]
+ boost/mpl/aux_/preprocessed/dmc/placeholders.hpp [2:3]
+ boost/mpl/aux_/preprocessed/dmc/template_arity.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/arg.hpp [2:3]
+ boost/mpl/aux_/preprocessed/gcc/basic_bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/gcc/bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/gcc/full_lambda.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/inherit.hpp [2:2]
+ boost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp [2:3]
+ boost/mpl/aux_/preprocessed/gcc/placeholders.hpp [2:3]
+ boost/mpl/aux_/preprocessed/gcc/template_arity.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/arg.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc60/basic_bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc60/bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc60/full_lambda.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/inherit.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc60/iter_fold_if_impl.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc60/placeholders.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc60/template_arity.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/arg.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc70/basic_bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc70/bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc70/full_lambda.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/inherit.hpp [2:2]
+ boost/mpl/aux_/preprocessed/msvc70/iter_fold_if_impl.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc70/placeholders.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc70/template_arity.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/arg.hpp [2:3]
+ boost/mpl/aux_/preprocessed/mwcw/basic_bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/mwcw/bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/mwcw/full_lambda.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/inherit.hpp [2:2]
+ boost/mpl/aux_/preprocessed/mwcw/iter_fold_if_impl.hpp [2:3]
+ boost/mpl/aux_/preprocessed/mwcw/placeholders.hpp [2:3]
+ boost/mpl/aux_/preprocessed/mwcw/template_arity.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/arg.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ctps/basic_bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ctps/bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ctps/full_lambda.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/inherit.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ctps/iter_fold_if_impl.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ctps/placeholders.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ctps/template_arity.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/arg.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ttp/basic_bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ttp/bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ttp/full_lambda.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/inherit.hpp [2:2]
+ boost/mpl/aux_/preprocessed/no_ttp/iter_fold_if_impl.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ttp/placeholders.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ttp/template_arity.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/arg.hpp [2:3]
+ boost/mpl/aux_/preprocessed/plain/basic_bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/plain/bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/plain/full_lambda.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/inherit.hpp [2:2]
+ boost/mpl/aux_/preprocessed/plain/iter_fold_if_impl.hpp [2:3]
+ boost/mpl/aux_/preprocessed/plain/placeholders.hpp [2:3]
+ boost/mpl/aux_/preprocessed/plain/template_arity.hpp [2:2]
+ boost/mpl/aux_/static_cast.hpp [5:5]
+ boost/mpl/aux_/template_arity.hpp [9:9]
+ boost/mpl/aux_/template_arity_fwd.hpp [5:5]
+ boost/mpl/bind.hpp [9:10]
+ boost/mpl/empty_base.hpp [5:5]
+ boost/mpl/fold.hpp [5:6]
+ boost/mpl/inherit.hpp [9:9]
+ boost/mpl/inherit_linearly.hpp [5:5]
+ boost/mpl/is_placeholder.hpp [5:5]
+ boost/mpl/iter_fold.hpp [5:6]
+ boost/mpl/iterator_range.hpp [5:5]
+ boost/mpl/lambda.hpp [5:5]
+ boost/mpl/lambda_fwd.hpp [5:5]
+ boost/mpl/lower_bound.hpp [5:5]
+ boost/mpl/map/aux_/include_preprocessed.hpp [2:2]
+ boost/mpl/pair.hpp [5:5]
+ boost/mpl/placeholders.hpp [9:10]
+ boost/mpl/reverse_fold.hpp [5:6]
+ boost/mpl/reverse_iter_fold.hpp [5:6]
+ boost/mpl/upper_bound.hpp [5:5]
+ boost/mpl/void.hpp [5:5]
+ boost/mpl/void_fwd.hpp [5:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6d0f48a2307249fe584bb5a13388f05b
+BELONGS ya.make
+ License text:
+ // Copyright 2016, 2017 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/detail/sp_noexcept.hpp [12:12]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6d1d86a114f64cfc33bd34acca8b1a34
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2000 Gary Powell (powellg@amazon.com)
+ // Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/lambda/casts.hpp [3:4]
+ boost/lambda/construct.hpp [3:4]
+ boost/lambda/core.hpp [3:4]
+ boost/lambda/detail/control_constructs_common.hpp [3:4]
+ boost/lambda/if.hpp [3:5]
+ boost/lambda/loops.hpp [3:5]
+ boost/lambda/switch.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6d352fb30bdf4f6229e55027126be38e
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iterator/permutation_iterator.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/iterator/permutation_iterator.hpp [1:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6d63b13de108fa5435475ab01814eafe
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2008-2009 Ben Hanson
+ // Copyright (c) 2008-2011 Hartmut Kaiser
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/lex/lexer/lexertl/generate_static.hpp [1:2]
+ boost/spirit/home/lex/lexer/lexertl/generate_static.hpp [890:893]
+ boost/spirit/home/support/detail/lexer/generate_cpp.hpp [82:84]
+ boost/spirit/home/support/detail/lexer/generate_re2c.hpp [116:118]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6d6738110c1306103103aca941400af9
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/operators.hpp at line 6, boost/operators_v1.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/operators.hpp [3:6]
+ boost/operators_v1.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6d897263feaeaee07384a13d45475905
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2009-2012 Barend Gehrels, Amsterdam, the Netherlands.
+ // Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/io/svg/write.hpp [3:4]
+ boost/geometry/io/svg/write_svg.hpp [3:4]
+ boost/geometry/io/svg/write_svg_multi.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6dcd15b11de2202a28820899dc8fe49d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/flyweight/assoc_container_factory.hpp at line 3, boost/flyweight/flyweight.hpp at line 5, boost/flyweight/flyweight_fwd.hpp at line 3, boost/flyweight/serialize.hpp at line 3
+ License text:
+ /* Copyright 2006-2015 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/flyweight/assoc_container_factory.hpp [1:3]
+ boost/flyweight/flyweight.hpp [3:5]
+ boost/flyweight/flyweight_fwd.hpp [1:3]
+ boost/flyweight/serialize.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6dd9e96b64547a3a52a8bce6e10ac74d
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2009, 2016 Tim Blechmann
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/lockfree/detail/prefix.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6ddab30a8c1d7c05633d59e90eea754f
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/limits.hpp at line 5, boost/version.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/limits.hpp [2:5]
+ boost/version.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6df2f3044559d6be214598177430d513
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2012-2014 Barend Gehrels, Amsterdam, the Netherlands.
+ // Copyright (c) 2012-2014 Bruno Lalande, Paris, France.
+ // Copyright (c) 2012-2014 Mateusz Loskot, London, UK.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/multi/algorithms/disjoint.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6df3b6d6eaafbb2e1471ebd6fbbac607
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2015-2016 Barend Gehrels, Amsterdam, the Netherlands.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/overlay/traversal_switch_detector.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6e0562785549dce2f5f760d623bb9042
+BELONGS ya.make
+ License text:
+ Copyright 2010-2012 Mario Mulansky
+ Copyright 2010-2012 Karsten Ahnert
+ Copyright 2012 Christoph Koke
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/stepper/base/explicit_error_stepper_base.hpp [9:11]
+ boost/numeric/odeint/stepper/base/explicit_error_stepper_fsal_base.hpp [9:11]
+ boost/numeric/odeint/stepper/base/explicit_stepper_base.hpp [9:11]
+ boost/numeric/odeint/stepper/implicit_euler.hpp [9:11]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6e091bbf03d7f6fa9276d2cfcaddde71
+BELONGS ya.make
+ License text:
+ // (C) Copyright 2007-9 Anthony Williams
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/detail/thread_group.hpp [6:6]
+ boost/thread/detail/thread_interruption.hpp [6:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6e0d983d26a329ac59572ff890ab7117
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/test/utils/foreach.hpp at line 4
+ License text:
+ // (C) Copyright Eric Niebler 2004-2005
+ // (C) Copyright Gennadiy Rozental 2001.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/test/utils/foreach.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6e213e7d6c9460c8044e118a6f58e0ce
+BELONGS ya.make
+ License text:
+ // Copyright Antony Polukhin, 2016-2017.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/stacktrace.hpp [1:1]
+ boost/stacktrace/detail/addr2line_impls.hpp [1:1]
+ boost/stacktrace/detail/collect_msvc.ipp [1:1]
+ boost/stacktrace/detail/collect_noop.ipp [1:1]
+ boost/stacktrace/detail/collect_unwind.ipp [1:1]
+ boost/stacktrace/detail/frame_decl.hpp [1:1]
+ boost/stacktrace/detail/frame_msvc.ipp [1:1]
+ boost/stacktrace/detail/frame_noop.ipp [1:1]
+ boost/stacktrace/detail/frame_unwind.ipp [1:1]
+ boost/stacktrace/detail/libbacktrace_impls.hpp [1:1]
+ boost/stacktrace/detail/location_from_symbol.hpp [1:1]
+ boost/stacktrace/detail/pop_options.h [1:1]
+ boost/stacktrace/detail/push_options.h [1:1]
+ boost/stacktrace/detail/safe_dump_noop.ipp [1:1]
+ boost/stacktrace/detail/safe_dump_posix.ipp [1:1]
+ boost/stacktrace/detail/to_hex_array.hpp [1:1]
+ boost/stacktrace/detail/unwind_base_impls.hpp [1:1]
+ boost/stacktrace/frame.hpp [1:1]
+ boost/stacktrace/safe_dump_to.hpp [1:1]
+ boost/stacktrace/stacktrace.hpp [1:1]
+ boost/stacktrace/stacktrace_fwd.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6e5349aeab7a1e7bcb601559040c534c
+BELONGS ya.make
+ License text:
+ Copyright 2013 Karsten Ahnert
+ Copyright 2013 Mario Mulansky
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/algebra/algebra_dispatcher.hpp [9:10]
+ boost/numeric/odeint/algebra/detail/extract_value_type.hpp [9:10]
+ boost/numeric/odeint/algebra/detail/norm_inf.hpp [9:10]
+ boost/numeric/odeint/algebra/fusion_algebra_dispatcher.hpp [9:10]
+ boost/numeric/odeint/algebra/norm_result_type.hpp [9:10]
+ boost/numeric/odeint/algebra/operations_dispatcher.hpp [9:10]
+ boost/numeric/odeint/external/mpi/mpi.hpp [9:11]
+ boost/numeric/odeint/external/mpi/mpi_nested_algebra.hpp [9:11]
+ boost/numeric/odeint/external/mpi/mpi_state.hpp [9:11]
+ boost/numeric/odeint/external/mpi/mpi_vector_state.hpp [9:11]
+ boost/numeric/odeint/external/mtl4/mtl4.hpp [9:10]
+ boost/numeric/odeint/external/mtl4/mtl4_algebra_dispatcher.hpp [9:10]
+ boost/numeric/odeint/external/openmp/openmp.hpp [9:11]
+ boost/numeric/odeint/external/openmp/openmp_nested_algebra.hpp [9:11]
+ boost/numeric/odeint/external/openmp/openmp_range_algebra.hpp [9:11]
+ boost/numeric/odeint/external/openmp/openmp_state.hpp [9:11]
+ boost/numeric/odeint/external/thrust/thrust.hpp [9:10]
+ boost/numeric/odeint/external/thrust/thrust_algebra_dispatcher.hpp [9:10]
+ boost/numeric/odeint/external/vexcl/vexcl.hpp [9:10]
+ boost/numeric/odeint/external/vexcl/vexcl_algebra_dispatcher.hpp [9:10]
+ boost/numeric/odeint/iterator/const_step_iterator.hpp [10:11]
+ boost/numeric/odeint/iterator/const_step_time_iterator.hpp [10:11]
+ boost/numeric/odeint/iterator/impl/const_step_iterator_impl.hpp [9:10]
+ boost/numeric/odeint/util/n_ary_helper.hpp [7:9]
+ boost/numeric/odeint/util/split.hpp [9:11]
+ boost/numeric/odeint/util/split_adaptor.hpp [9:11]
+ boost/numeric/odeint/util/stepper_traits.hpp [9:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6e810d935436bb503743a496e01e0d74
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2015 Jakub Szuppe <j.szuppe@gmail.com>
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/compute/algorithm/detail/find_extrema_with_reduce.hpp [2:2]
+ boost/compute/algorithm/detail/merge_sort_on_cpu.hpp [2:2]
+ boost/compute/algorithm/detail/reduce_by_key.hpp [2:2]
+ boost/compute/algorithm/detail/reduce_by_key_with_scan.hpp [2:2]
+ boost/compute/algorithm/detail/serial_reduce_by_key.hpp [2:2]
+ boost/compute/algorithm/reduce_by_key.hpp [2:2]
+ boost/compute/iterator/strided_iterator.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6f1a959bfdc2b4cc37ad209d64c9585b
+BELONGS ya.make
+ License text:
+ Copyright (c) 2016 Paul Fultz II
+ boost/hof.hpp
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/hof.hpp [2:4]
+ boost/hof/config.hpp [2:4]
+ boost/hof/detail/intrinsics.hpp [2:4]
+ boost/hof/detail/noexcept.hpp [2:4]
+ boost/hof/detail/recursive_constexpr_depth.hpp [2:4]
+ boost/hof/detail/result_type.hpp [2:4]
+ boost/hof/detail/unpack_tuple.hpp [2:4]
+ boost/hof/detail/using.hpp [2:4]
+ boost/hof/function_param_limit.hpp [2:4]
+ boost/hof/is_unpackable.hpp [2:4]
+ boost/hof/limit.hpp [2:4]
+ boost/hof/unpack_sequence.hpp [2:4]
+ boost/hof/version.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6f2106d29f8f11f40ccd5ca1f99c446b
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/detail/comp_detected.h at line 4, boost/predef/detail/platform_detected.h at line 4
+ License text:
+ Copyright Rene Rivera 2014
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/predef/detail/comp_detected.h [2:4]
+ boost/predef/detail/platform_detected.h [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6f5226a9270498743ea889158c0201c6
+BELONGS ya.make
+ License text:
+ @Copyright Barrett Adair 2016-2017
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/callable_traits/detail/config.hpp [2:2]
+ boost/callable_traits/detail/core.hpp [3:5]
+ boost/callable_traits/detail/default_callable_traits.hpp [2:2]
+ boost/callable_traits/detail/polyfills/make_index_sequence.hpp [2:2]
+ boost/callable_traits/detail/sfinae_errors.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6f522c25b81fd9005f9f0cdd69d03b25
+BELONGS libs/regex/ya.make ya.make
+ License text:
+ // Copyright (c) 2011 John Maddock
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/detail/bessel_jy_series.hpp [1:3]
+ boost/math/tools/big_constant.hpp [2:4]
+ boost/multiprecision/detail/big_lanczos.hpp [2:4]
+ libs/regex/src/internals.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6f5d2def13569cd2caeacc3686b4ff6e
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2011, 2012 Martin Lambers <marlam@marlam.de>
+ // The QSC projection was introduced in:
+ // [OL76]
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/srs/projections/proj/qsc.hpp [27:29]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6f7c276a012f9ee2246668b32b4af25b
+BELONGS libs/iostreams/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iostreams/device/mapped_file.hpp at line 5, libs/iostreams/src/mapped_file.cpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/iostreams/device/mapped_file.hpp [1:5]
+ libs/iostreams/src/mapped_file.cpp [1:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6faaf754e301184e7a07944b24799553
+BELONGS ya.make
+ License text:
+ // Copyright 2004 The Trustees of Indiana University.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/bc_clustering.hpp [1:1]
+ boost/graph/betweenness_centrality.hpp [1:1]
+ boost/graph/circle_layout.hpp [1:1]
+ boost/graph/distributed/betweenness_centrality.hpp [1:1]
+ boost/graph/distributed/breadth_first_search.hpp [1:1]
+ boost/graph/gursoy_atun_layout.hpp [1:1]
+ boost/graph/kamada_kawai_spring_layout.hpp [1:1]
+ boost/graph/leda_graph.hpp [2:6]
+ boost/graph/overloading.hpp [1:1]
+ boost/graph/parallel/algorithm.hpp [1:1]
+ boost/graph/parallel/distribution.hpp [1:1]
+ boost/graph/parallel/process_group.hpp [1:1]
+ boost/graph/parallel/properties.hpp [1:1]
+ boost/graph/random_layout.hpp [1:1]
+ boost/graph/sequential_vertex_coloring.hpp [2:4]
+ boost/graph/small_world_generator.hpp [1:1]
+ boost/graph/vertex_and_edge_range.hpp [1:1]
+ boost/mpi/datatype.hpp [1:3]
+ boost/pending/relaxed_heap.hpp [1:1]
+ boost/property_map/parallel/caching_property_map.hpp [1:1]
+ boost/property_map/parallel/process_group.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6fb2610480648ec237cadfaced17b5b9
+BELONGS ya.make
+ License text:
+ Copyright 2015 Mario Mulansky
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/integrate/check_adapter.hpp [9:9]
+ boost/numeric/odeint/integrate/max_step_checker.hpp [9:9]
+ boost/numeric/odeint/util/odeint_error.hpp [9:9]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6fcf13fc4e2d35e1d54e73b5b60aca32
+BELONGS ya.make
+ License text:
+ // This file was modified by Oracle on 2013, 2014.
+ // Modifications copyright (c) 2013, 2014, Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/sections/range_by_section.hpp [10:11]
+
+KEEP COPYRIGHT_SERVICE_LABEL 700d924b0a839bc25561f5ca7e969034
+BELONGS ya.make
+ License text:
+ // Copyright 2002, 2009 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/enable_shared_from_this.hpp [7:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 70510be2c2a58753a110cb44f81353ea
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/process.hpp [1:7]
+ boost/process/args.hpp [1:6]
+ boost/process/async.hpp [1:1]
+ boost/process/async_system.hpp [1:6]
+ boost/process/child.hpp [1:6]
+ boost/process/cmd.hpp [1:6]
+ boost/process/detail/basic_cmd.hpp [1:1]
+ boost/process/detail/child_decl.hpp [1:6]
+ boost/process/detail/config.hpp [1:6]
+ boost/process/detail/execute_impl.hpp [1:6]
+ boost/process/detail/handler.hpp [1:1]
+ boost/process/detail/handler_base.hpp [1:6]
+ boost/process/detail/on_exit.hpp [1:1]
+ boost/process/detail/posix/asio_fwd.hpp [1:1]
+ boost/process/detail/posix/async_handler.hpp [1:1]
+ boost/process/detail/posix/async_pipe.hpp [1:1]
+ boost/process/detail/posix/basic_cmd.hpp [1:1]
+ boost/process/detail/posix/cmd.hpp [1:1]
+ boost/process/detail/posix/compare_handles.hpp [1:1]
+ boost/process/detail/posix/env_init.hpp [1:1]
+ boost/process/detail/posix/environment.hpp [1:1]
+ boost/process/detail/posix/exe.hpp [1:1]
+ boost/process/detail/posix/file_descriptor.hpp [1:1]
+ boost/process/detail/posix/file_out.hpp [1:6]
+ boost/process/detail/posix/group_handle.hpp [1:1]
+ boost/process/detail/posix/group_ref.hpp [1:1]
+ boost/process/detail/posix/handler.hpp [1:1]
+ boost/process/detail/posix/io_context_ref.hpp [1:1]
+ boost/process/detail/posix/null_out.hpp [1:6]
+ boost/process/detail/posix/on_exit.hpp [1:1]
+ boost/process/detail/posix/pipe_out.hpp [1:6]
+ boost/process/detail/posix/signal.hpp [1:6]
+ boost/process/detail/throw_on_error.hpp [1:6]
+ boost/process/detail/traits.hpp [1:1]
+ boost/process/detail/traits/async.hpp [1:1]
+ boost/process/detail/traits/cmd_or_exe.hpp [1:1]
+ boost/process/detail/traits/decl.hpp [1:1]
+ boost/process/detail/traits/env.hpp [1:1]
+ boost/process/detail/traits/error.hpp [1:1]
+ boost/process/detail/traits/group.hpp [1:1]
+ boost/process/detail/traits/wchar_t.hpp [1:1]
+ boost/process/detail/windows/asio_fwd.hpp [1:1]
+ boost/process/detail/windows/async_handler.hpp [1:1]
+ boost/process/detail/windows/async_pipe.hpp [1:1]
+ boost/process/detail/windows/basic_cmd.hpp [1:1]
+ boost/process/detail/windows/basic_pipe.hpp [1:1]
+ boost/process/detail/windows/cmd.hpp [1:1]
+ boost/process/detail/windows/compare_handles.hpp [1:1]
+ boost/process/detail/windows/env_init.hpp [1:1]
+ boost/process/detail/windows/environment.hpp [1:1]
+ boost/process/detail/windows/executor.hpp [1:6]
+ boost/process/detail/windows/file_descriptor.hpp [1:1]
+ boost/process/detail/windows/group_handle.hpp [1:1]
+ boost/process/detail/windows/group_ref.hpp [1:1]
+ boost/process/detail/windows/handler.hpp [1:1]
+ boost/process/detail/windows/io_context_ref.hpp [1:1]
+ boost/process/detail/windows/job_workaround.hpp [1:1]
+ boost/process/detail/windows/locale.hpp [1:2]
+ boost/process/detail/windows/on_exit.hpp [1:1]
+ boost/process/detail/windows/pipe_out.hpp [1:6]
+ boost/process/detail/windows/show_window.hpp [1:6]
+ boost/process/detail/windows/wait_for_exit.hpp [1:6]
+ boost/process/detail/windows/wait_group.hpp [1:1]
+ boost/process/env.hpp [1:1]
+ boost/process/environment.hpp [1:1]
+ boost/process/error.hpp [1:6]
+ boost/process/exception.hpp [1:1]
+ boost/process/exe.hpp [1:6]
+ boost/process/extend.hpp [1:1]
+ boost/process/group.hpp [1:1]
+ boost/process/io.hpp [1:1]
+ boost/process/locale.hpp [1:4]
+ boost/process/posix.hpp [1:1]
+ boost/process/shell.hpp [1:6]
+ boost/process/spawn.hpp [1:6]
+ boost/process/system.hpp [1:6]
+ boost/process/windows.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 705c5d090b50e4c47ff6b9307ec838aa
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/smart_ptr/intrusive_ptr.hpp at line 8, boost/interprocess/smart_ptr/scoped_ptr.hpp at line 8
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/interprocess/smart_ptr/intrusive_ptr.hpp [5:8]
+ boost/interprocess/smart_ptr/scoped_ptr.hpp [5:9]
+
+KEEP COPYRIGHT_SERVICE_LABEL 70a94800ba84db85ec3ff20c6d23755e
+BELONGS libs/python/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/is_incrementable.hpp at line 3, boost/indirect_reference.hpp at line 7, boost/iterator_adaptors.hpp at line 3, boost/mpl/min_element.hpp at line 7, boost/pointee.hpp at line 7, boost/python/detail/enable_if.hpp at line 3, boost/python/detail/indirect_traits.hpp at line 3, boost/python/detail/is_wrapper.hpp at line 3, boost/python/detail/sfinae.hpp at line 3, boost/python/detail/unwrap_type_id.hpp at line 3, boost/python/detail/unwrap_wrapper.hpp at line 3, boost/python/detail/value_arg.hpp at line 3, boost/python/detail/wrapper_base.hpp at line 3, boost/python/object/class_metadata.hpp at line 3, boost/python/override.hpp at line 5, boost/python/wrapper.hpp at line 3, libs/python/src/dict.cpp at line 3, libs/python/src/str.cpp at line 3, libs/python/src/tuple.cpp at line 3, libs/python/src/wrapper.cpp at line 3
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/detail/is_incrementable.hpp [1:3]
+ boost/indirect_reference.hpp [5:7]
+ boost/iterator_adaptors.hpp [1:3]
+ boost/mpl/min_element.hpp [5:5]
+ boost/pointee.hpp [5:7]
+ boost/python/detail/enable_if.hpp [1:3]
+ boost/python/detail/indirect_traits.hpp [1:3]
+ boost/python/detail/is_wrapper.hpp [1:3]
+ boost/python/detail/sfinae.hpp [1:3]
+ boost/python/detail/unwrap_type_id.hpp [1:3]
+ boost/python/detail/unwrap_wrapper.hpp [1:3]
+ boost/python/detail/value_arg.hpp [1:3]
+ boost/python/detail/wrapper_base.hpp [1:3]
+ boost/python/object/class_metadata.hpp [1:4]
+ boost/python/override.hpp [3:5]
+ boost/python/wrapper.hpp [1:3]
+ libs/python/src/dict.cpp [1:3]
+ libs/python/src/str.cpp [1:3]
+ libs/python/src/tuple.cpp [1:3]
+ libs/python/src/wrapper.cpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 70af169b5cf63d17655c660f520c4d14
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/process.hpp [1:7]
+ boost/process/args.hpp [1:6]
+ boost/process/async_pipe.hpp [1:5]
+ boost/process/async_system.hpp [1:6]
+ boost/process/child.hpp [1:6]
+ boost/process/cmd.hpp [1:6]
+ boost/process/detail/child_decl.hpp [1:6]
+ boost/process/detail/config.hpp [1:6]
+ boost/process/detail/execute_impl.hpp [1:6]
+ boost/process/detail/handler_base.hpp [1:6]
+ boost/process/detail/posix/async_in.hpp [1:5]
+ boost/process/detail/posix/async_out.hpp [1:5]
+ boost/process/detail/posix/basic_pipe.hpp [1:5]
+ boost/process/detail/posix/child_handle.hpp [1:5]
+ boost/process/detail/posix/close_in.hpp [1:5]
+ boost/process/detail/posix/close_out.hpp [1:5]
+ boost/process/detail/posix/executor.hpp [1:5]
+ boost/process/detail/posix/fd.hpp [1:5]
+ boost/process/detail/posix/file_in.hpp [1:5]
+ boost/process/detail/posix/file_out.hpp [1:6]
+ boost/process/detail/posix/null_in.hpp [1:5]
+ boost/process/detail/posix/null_out.hpp [1:6]
+ boost/process/detail/posix/pipe_in.hpp [1:5]
+ boost/process/detail/posix/pipe_out.hpp [1:6]
+ boost/process/detail/posix/search_path.hpp [1:5]
+ boost/process/detail/posix/shell_path.hpp [1:5]
+ boost/process/detail/posix/signal.hpp [1:6]
+ boost/process/detail/posix/start_dir.hpp [1:5]
+ boost/process/detail/posix/terminate.hpp [1:5]
+ boost/process/detail/posix/wait_for_exit.hpp [1:5]
+ boost/process/detail/posix/wait_group.hpp [1:5]
+ boost/process/detail/throw_on_error.hpp [1:6]
+ boost/process/detail/windows/async_in.hpp [1:5]
+ boost/process/detail/windows/async_out.hpp [1:5]
+ boost/process/detail/windows/child_handle.hpp [1:5]
+ boost/process/detail/windows/close_in.hpp [1:5]
+ boost/process/detail/windows/close_out.hpp [1:5]
+ boost/process/detail/windows/executor.hpp [1:6]
+ boost/process/detail/windows/file_in.hpp [1:5]
+ boost/process/detail/windows/file_out.hpp [1:5]
+ boost/process/detail/windows/null_in.hpp [1:5]
+ boost/process/detail/windows/null_out.hpp [1:5]
+ boost/process/detail/windows/pipe_in.hpp [1:5]
+ boost/process/detail/windows/pipe_out.hpp [1:6]
+ boost/process/detail/windows/search_path.hpp [1:5]
+ boost/process/detail/windows/shell_path.hpp [1:5]
+ boost/process/detail/windows/show_window.hpp [1:6]
+ boost/process/detail/windows/start_dir.hpp [1:5]
+ boost/process/detail/windows/terminate.hpp [1:5]
+ boost/process/detail/windows/wait_for_exit.hpp [1:6]
+ boost/process/error.hpp [1:6]
+ boost/process/exe.hpp [1:6]
+ boost/process/pipe.hpp [1:5]
+ boost/process/search_path.hpp [1:5]
+ boost/process/shell.hpp [1:6]
+ boost/process/spawn.hpp [1:6]
+ boost/process/start_dir.hpp [1:5]
+ boost/process/system.hpp [1:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 70b7ec76fc92ec62f0bff9be8534781e
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/adapted.hpp [2:3]
+ boost/fusion/adapted/adt.hpp [2:4]
+ boost/fusion/adapted/adt/detail/adapt_base.hpp [2:4]
+ boost/fusion/adapted/adt/detail/extension.hpp [2:4]
+ boost/fusion/adapted/array.hpp [2:4]
+ boost/fusion/adapted/boost_array.hpp [2:3]
+ boost/fusion/adapted/boost_array/array_iterator.hpp [2:3]
+ boost/fusion/adapted/boost_array/detail/at_impl.hpp [2:3]
+ boost/fusion/adapted/boost_array/detail/begin_impl.hpp [2:3]
+ boost/fusion/adapted/boost_array/detail/category_of_impl.hpp [2:3]
+ boost/fusion/adapted/boost_array/detail/end_impl.hpp [2:3]
+ boost/fusion/adapted/boost_array/detail/is_sequence_impl.hpp [2:3]
+ boost/fusion/adapted/boost_array/detail/is_view_impl.hpp [2:3]
+ boost/fusion/adapted/boost_array/detail/size_impl.hpp [2:3]
+ boost/fusion/adapted/boost_array/detail/value_at_impl.hpp [2:3]
+ boost/fusion/adapted/boost_array/tag_of.hpp [2:3]
+ boost/fusion/adapted/mpl.hpp [2:3]
+ boost/fusion/adapted/mpl/detail/at_impl.hpp [2:3]
+ boost/fusion/adapted/mpl/detail/begin_impl.hpp [2:3]
+ boost/fusion/adapted/mpl/detail/category_of_impl.hpp [2:3]
+ boost/fusion/adapted/mpl/detail/empty_impl.hpp [2:3]
+ boost/fusion/adapted/mpl/detail/end_impl.hpp [2:3]
+ boost/fusion/adapted/mpl/detail/has_key_impl.hpp [2:3]
+ boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp [2:3]
+ boost/fusion/adapted/mpl/detail/is_view_impl.hpp [2:3]
+ boost/fusion/adapted/mpl/detail/size_impl.hpp [2:3]
+ boost/fusion/adapted/mpl/detail/value_at_impl.hpp [2:3]
+ boost/fusion/adapted/std_array.hpp [2:4]
+ boost/fusion/adapted/std_array/detail/at_impl.hpp [2:3]
+ boost/fusion/adapted/std_array/detail/begin_impl.hpp [2:4]
+ boost/fusion/adapted/std_array/detail/category_of_impl.hpp [2:3]
+ boost/fusion/adapted/std_array/detail/end_impl.hpp [2:4]
+ boost/fusion/adapted/std_array/detail/is_sequence_impl.hpp [2:4]
+ boost/fusion/adapted/std_array/detail/is_view_impl.hpp [2:4]
+ boost/fusion/adapted/std_array/detail/size_impl.hpp [2:4]
+ boost/fusion/adapted/std_array/detail/value_at_impl.hpp [2:3]
+ boost/fusion/adapted/std_array/std_array_iterator.hpp [2:4]
+ boost/fusion/adapted/std_array/tag_of.hpp [2:3]
+ boost/fusion/adapted/std_pair.hpp [2:4]
+ boost/fusion/adapted/struct.hpp [2:4]
+ boost/fusion/adapted/struct/detail/adapt_base.hpp [2:5]
+ boost/fusion/adapted/struct/detail/at_impl.hpp [2:4]
+ boost/fusion/adapted/struct/detail/begin_impl.hpp [2:4]
+ boost/fusion/adapted/struct/detail/category_of_impl.hpp [2:4]
+ boost/fusion/adapted/struct/detail/end_impl.hpp [2:4]
+ boost/fusion/adapted/struct/detail/extension.hpp [2:4]
+ boost/fusion/adapted/struct/detail/is_sequence_impl.hpp [2:4]
+ boost/fusion/adapted/struct/detail/is_view_impl.hpp [2:4]
+ boost/fusion/adapted/struct/detail/size_impl.hpp [2:4]
+ boost/fusion/adapted/struct/detail/value_at_impl.hpp [2:4]
+ boost/fusion/algorithm/transformation/filter.hpp [2:3]
+ boost/fusion/container/deque.hpp [2:3]
+ boost/fusion/container/deque/back_extended_deque.hpp [2:3]
+ boost/fusion/container/deque/deque.hpp [2:3]
+ boost/fusion/container/deque/deque_iterator.hpp [2:3]
+ boost/fusion/container/deque/detail/at_impl.hpp [2:3]
+ boost/fusion/container/deque/detail/begin_impl.hpp [2:3]
+ boost/fusion/container/deque/detail/convert_impl.hpp [2:4]
+ boost/fusion/container/deque/detail/cpp03/deque.hpp [2:3]
+ boost/fusion/container/deque/detail/cpp03/deque_forward_ctor.hpp [2:3]
+ boost/fusion/container/deque/detail/cpp03/deque_initial_size.hpp [2:3]
+ boost/fusion/container/deque/detail/cpp03/deque_keyed_values.hpp [2:3]
+ boost/fusion/container/deque/detail/cpp03/deque_keyed_values_call.hpp [2:3]
+ boost/fusion/container/deque/detail/cpp03/limits.hpp [2:3]
+ boost/fusion/container/deque/detail/deque_keyed_values.hpp [2:3]
+ boost/fusion/container/deque/detail/end_impl.hpp [2:3]
+ boost/fusion/container/deque/detail/keyed_element.hpp [2:3]
+ boost/fusion/container/deque/detail/value_at_impl.hpp [2:3]
+ boost/fusion/container/deque/front_extended_deque.hpp [2:3]
+ boost/fusion/container/list/detail/convert_impl.hpp [2:3]
+ boost/fusion/container/map/detail/cpp03/convert_impl.hpp [2:3]
+ boost/fusion/container/map/map_iterator.hpp [2:3]
+ boost/fusion/container/set/detail/convert_impl.hpp [2:3]
+ boost/fusion/container/vector/detail/convert_impl.hpp [2:3]
+ boost/fusion/support/detail/is_mpl_sequence.hpp [2:3]
+ boost/fusion/support/tag_of_fwd.hpp [2:3]
+ boost/fusion/view/filter_view/detail/equal_to_impl.hpp [2:3]
+ boost/fusion/view/reverse_view/detail/advance_impl.hpp [2:3]
+ boost/fusion/view/reverse_view/detail/distance_impl.hpp [2:3]
+ boost/fusion/view/transform_view/detail/advance_impl.hpp [2:3]
+ boost/fusion/view/transform_view/detail/at_impl.hpp [2:3]
+ boost/fusion/view/transform_view/detail/distance_impl.hpp [2:3]
+ boost/fusion/view/transform_view/detail/prior_impl.hpp [2:3]
+ boost/fusion/view/transform_view/detail/value_at_impl.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 70c75f8953a0e7cc364b82999fe9db5c
+BELONGS ya.make
+ License text:
+ * (C) Copyright 2013 Tim Blechmann
+ * (C) Copyright 2013 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/atomic/detail/pause.hpp [6:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 70d3f9c66aa302a3e59ec38430047f6b
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/chrono/typeof/boost/chrono/chrono.hpp at line 5, boost/chrono/typeof/boost/ratio.hpp at line 5
+ License text:
+ // (C) Copyright Vicente J. Botet Escriba 20010.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/chrono/typeof/boost/chrono/chrono.hpp [3:5]
+ boost/chrono/typeof/boost/ratio.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7154f956948b41d87bf8a2b73a07d675
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/tree_traits.hpp at line 3, boost/pending/detail/int_iterator.hpp at line 3
+ License text:
+ // (C) Copyright Jeremy Siek 1999.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/tree_traits.hpp [1:3]
+ boost/pending/detail/int_iterator.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 71ed11b2adc3c3af2c868e57de056941
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/policies/robustness/get_rescale_policy.hpp [3:6]
+ boost/geometry/policies/robustness/rescale_policy.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 71f99a73ae228de2701864e837c3c359
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2007 Hartmut Kaiser
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/include/in.hpp [2:2]
+ boost/fusion/include/io.hpp [2:2]
+ boost/fusion/include/out.hpp [2:2]
+ boost/fusion/include/value_at.hpp [2:2]
+ boost/spirit/home/classic/tree/impl/parse_tree_utils.ipp [2:4]
+ boost/spirit/home/classic/tree/tree_to_xml.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 720c432476f4bb134f4e1394670ad378
+BELONGS ya.make
+ License text:
+ // Copyright 2016 Klemens Morgenstern, Antony Polukhin
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/dll/detail/ctor_dtor.hpp [1:1]
+ boost/dll/detail/type_info.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7243a87c22485b4f89611b940ba19721
+BELONGS libs/atomic/ya.make ya.make
+ License text:
+ // Copyright (c) 2011 Helge Bahmann
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/atomic.hpp [4:4]
+ boost/atomic/atomic.hpp [6:8]
+ boost/atomic/atomic_flag.hpp [6:8]
+ boost/atomic/detail/atomic_template.hpp [6:8]
+ boost/atomic/detail/caps_gcc_sync.hpp [6:8]
+ boost/atomic/detail/lockpool.hpp [6:7]
+ boost/atomic/detail/ops_gcc_sync.hpp [6:8]
+ boost/atomic/fences.hpp [6:8]
+ libs/atomic/src/lockpool.cpp [6:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 725bf619a93c94289aea04b05b43067f
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2007 Dan Marsden
+ Copyright (c) 2009 Christopher Schmidt
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/algorithm/query/detail/find_if.hpp [2:4]
+ boost/fusion/container/map/detail/cpp03/begin_impl.hpp [2:3]
+ boost/fusion/container/map/detail/cpp03/deref_data_impl.hpp [2:2]
+ boost/fusion/container/map/detail/cpp03/deref_impl.hpp [2:2]
+ boost/fusion/container/map/detail/cpp03/end_impl.hpp [2:3]
+ boost/fusion/container/map/detail/cpp03/key_of_impl.hpp [2:2]
+ boost/fusion/container/map/detail/cpp03/value_of_data_impl.hpp [2:2]
+ boost/fusion/container/map/detail/cpp03/value_of_impl.hpp [2:2]
+ boost/fusion/container/set/detail/begin_impl.hpp [2:3]
+ boost/fusion/container/set/detail/deref_data_impl.hpp [2:2]
+ boost/fusion/container/set/detail/deref_impl.hpp [2:2]
+ boost/fusion/container/set/detail/end_impl.hpp [2:3]
+ boost/fusion/container/set/detail/key_of_impl.hpp [2:2]
+ boost/fusion/container/set/detail/value_of_data_impl.hpp [2:2]
+ boost/fusion/container/set/detail/value_of_impl.hpp [2:2]
+ boost/fusion/include/deref_data.hpp [2:2]
+ boost/fusion/include/key_of.hpp [2:2]
+ boost/fusion/include/value_of_data.hpp [2:2]
+ boost/fusion/iterator/basic_iterator.hpp [2:2]
+ boost/fusion/iterator/deref_data.hpp [2:2]
+ boost/fusion/iterator/key_of.hpp [2:2]
+ boost/fusion/iterator/value_of_data.hpp [2:2]
+ boost/fusion/view/filter_view/detail/deref_data_impl.hpp [2:2]
+ boost/fusion/view/filter_view/detail/key_of_impl.hpp [2:2]
+ boost/fusion/view/filter_view/detail/value_of_data_impl.hpp [2:2]
+ boost/fusion/view/joint_view/detail/deref_data_impl.hpp [2:2]
+ boost/fusion/view/joint_view/detail/key_of_impl.hpp [2:2]
+ boost/fusion/view/joint_view/detail/value_of_data_impl.hpp [2:2]
+ boost/fusion/view/reverse_view/detail/at_impl.hpp [2:2]
+ boost/fusion/view/reverse_view/detail/deref_data_impl.hpp [2:2]
+ boost/fusion/view/reverse_view/detail/key_of_impl.hpp [2:2]
+ boost/fusion/view/reverse_view/detail/value_at_impl.hpp [2:2]
+ boost/fusion/view/reverse_view/detail/value_of_data_impl.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7273d54756a475d9666d11cf88482d60
+BELONGS ya.make
+ License text:
+ // Copyright 2005 Daniel Wallin.
+ // Copyright 2005 Joel de Guzman.
+ // Copyright 2005 Dan Marsden.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/phoenix/stl/algorithm/iteration.hpp [1:3]
+ boost/phoenix/stl/algorithm/querying.hpp [1:5]
+ boost/phoenix/stl/algorithm/transformation.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 727ffdba5f4101e3db746edf2130cfbd
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/version_number.h at line 4
+ License text:
+ Copyright Rene Rivera 2005-2016
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/predef/version_number.h [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7285ea79f04079e3ed6508503b991411
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/metaparse.hpp at line 3, boost/metaparse/accept_tag.hpp at line 6, boost/metaparse/accept_when.hpp at line 6, boost/metaparse/alphanum.hpp at line 6, boost/metaparse/always.hpp at line 6, boost/metaparse/always_c.hpp at line 6, boost/metaparse/build_parser.hpp at line 6, boost/metaparse/change_error_message.hpp at line 6, boost/metaparse/config.hpp at line 6, boost/metaparse/debug_parsing_error.hpp at line 6, boost/metaparse/define_error.hpp at line 6, boost/metaparse/digit.hpp at line 6, boost/metaparse/digit_val.hpp at line 6, boost/metaparse/empty.hpp at line 6, boost/metaparse/entire_input.hpp at line 6, boost/metaparse/error/digit_expected.hpp at line 6, boost/metaparse/error/end_of_input_expected.hpp at line 6, boost/metaparse/error/index_out_of_range.hpp at line 6, boost/metaparse/error/letter_expected.hpp at line 6, boost/metaparse/error/literal_expected.hpp at line 6, boost/metaparse/error/none_of_the_expected_cases_found.hpp at line 6, boost/metaparse/error/unexpected_character.hpp at line 6, boost/metaparse/error/unexpected_end_of_input.hpp at line 6, boost/metaparse/error/whitespace_expected.hpp at line 6, boost/metaparse/except.hpp at line 6, boost/metaparse/fail.hpp at line 6, boost/metaparse/fail_tag.hpp at line 6, boost/metaparse/first_of.hpp at line 6, boost/metaparse/foldl.hpp at line 6, boost/metaparse/foldl1.hpp at line 6, boost/metaparse/foldl_start_with_parser.hpp at line 6, boost/metaparse/foldr.hpp at line 6, boost/metaparse/foldr1.hpp at line 6, boost/metaparse/foldr_start_with_parser.hpp at line 6, boost/metaparse/get_col.hpp at line 6, boost/metaparse/get_line.hpp at line 6, boost/metaparse/get_position.hpp at line 6, boost/metaparse/get_prev_char.hpp at line 6, boost/metaparse/get_remaining.hpp at line 6, boost/metaparse/get_result.hpp at line 6, boost/metaparse/grammar.hpp at line 6, boost/metaparse/if_.hpp at line 6, boost/metaparse/int_.hpp at line 6, boost/metaparse/is_error.hpp at line 6, boost/metaparse/iterate.hpp at line 6, boost/metaparse/iterate_c.hpp at line 6, boost/metaparse/keyword.hpp at line 6, boost/metaparse/last_of.hpp at line 6, boost/metaparse/letter.hpp at line 6, boost/metaparse/limit_one_char_except_size.hpp at line 6, boost/metaparse/limit_one_of_size.hpp at line 6, boost/metaparse/limit_sequence_size.hpp at line 6, boost/metaparse/limit_string_size.hpp at line 6, boost/metaparse/lit.hpp at line 6, boost/metaparse/lit_c.hpp at line 6, boost/metaparse/look_ahead.hpp at line 6, boost/metaparse/middle_of.hpp at line 6, boost/metaparse/next_char.hpp at line 6, boost/metaparse/next_line.hpp at line 6, boost/metaparse/nth_of.hpp at line 6, boost/metaparse/nth_of_c.hpp at line 6, boost/metaparse/one_char.hpp at line 6, boost/metaparse/one_char_except.hpp at line 6, boost/metaparse/one_char_except_c.hpp at line 6, boost/metaparse/one_of.hpp at line 6, boost/metaparse/one_of_c.hpp at line 6, boost/metaparse/repeated.hpp at line 6, boost/metaparse/repeated1.hpp at line 6, boost/metaparse/repeated_one_of.hpp at line 6, boost/metaparse/repeated_one_of1.hpp at line 6, boost/metaparse/return_.hpp at line 6, boost/metaparse/sequence.hpp at line 6, boost/metaparse/source_position.hpp at line 6, boost/metaparse/source_position_tag.hpp at line 6, boost/metaparse/space.hpp at line 6, boost/metaparse/spaces.hpp at line 6, boost/metaparse/start.hpp at line 6, boost/metaparse/string.hpp at line 3, boost/metaparse/string_tag.hpp at line 6, boost/metaparse/token.hpp at line 6, boost/metaparse/transform.hpp at line 6, boost/metaparse/unless_error.hpp at line 6, boost/metaparse/util/digit_to_int.hpp at line 6, boost/metaparse/util/digit_to_int_c.hpp at line 6, boost/metaparse/util/in_range.hpp at line 6, boost/metaparse/util/int_to_digit.hpp at line 6, boost/metaparse/util/int_to_digit_c.hpp at line 6, boost/metaparse/util/is_lcase_letter.hpp at line 6, boost/metaparse/util/is_letter.hpp at line 6, boost/metaparse/util/is_ucase_letter.hpp at line 6, boost/metaparse/util/is_whitespace.hpp at line 6, boost/metaparse/util/is_whitespace_c.hpp at line 6, boost/metaparse/v1/accept_tag.hpp at line 6, boost/metaparse/v1/always_c.hpp at line 6, boost/metaparse/v1/cpp11/fwd/string.hpp at line 6, boost/metaparse/v1/cpp11/impl/at_c.hpp at line 6, boost/metaparse/v1/cpp11/impl/concat.hpp at line 6, boost/metaparse/v1/cpp11/impl/empty_string.hpp at line 6, boost/metaparse/v1/cpp11/impl/pop_back.hpp at line 6, boost/metaparse/v1/cpp11/impl/pop_front.hpp at line 6, boost/metaparse/v1/cpp11/impl/push_back_c.hpp at line 6, boost/metaparse/v1/cpp11/impl/push_front_c.hpp at line 6, boost/metaparse/v1/cpp11/impl/remove_trailing_no_chars.hpp at line 6, boost/metaparse/v1/cpp11/impl/size.hpp at line 6, boost/metaparse/v1/cpp98/fwd/string.hpp at line 6, boost/metaparse/v1/cpp98/impl/at_c.hpp at line 6, boost/metaparse/v1/cpp98/impl/empty_string.hpp at line 6, boost/metaparse/v1/cpp98/impl/nth_of_c.hpp at line 6, boost/metaparse/v1/cpp98/impl/nth_of_c_impl.hpp at line 6, boost/metaparse/v1/cpp98/impl/pop_back.hpp at line 6, boost/metaparse/v1/cpp98/impl/pop_front.hpp at line 6, boost/metaparse/v1/cpp98/impl/push_back_c.hpp at line 6, boost/metaparse/v1/cpp98/impl/push_front_c.hpp at line 6, boost/metaparse/v1/cpp98/impl/size.hpp at line 6, boost/metaparse/v1/cpp98/impl/skip_seq.hpp at line 6, boost/metaparse/v1/cpp98/impl/update_c.hpp at line 6, boost/metaparse/v1/cpp98/nth_of_c.hpp at line 6, boost/metaparse/v1/define_error.hpp at line 6, boost/metaparse/v1/error/digit_expected.hpp at line 6, boost/metaparse/v1/error/end_of_input_expected.hpp at line 6, boost/metaparse/v1/error/index_out_of_range.hpp at line 6, boost/metaparse/v1/error/letter_expected.hpp at line 6, boost/metaparse/v1/error/literal_expected.hpp at line 6, boost/metaparse/v1/error/none_of_the_expected_cases_found.hpp at line 6, boost/metaparse/v1/error/unexpected_character.hpp at line 6, boost/metaparse/v1/error/unexpected_end_of_input.hpp at line 6, boost/metaparse/v1/error/whitespace_expected.hpp at line 6, boost/metaparse/v1/fwd/build_parser.hpp at line 6, boost/metaparse/v1/fwd/get_col.hpp at line 6, boost/metaparse/v1/fwd/get_line.hpp at line 6, boost/metaparse/v1/fwd/get_position.hpp at line 6, boost/metaparse/v1/fwd/get_prev_char.hpp at line 6, boost/metaparse/v1/fwd/get_remaining.hpp at line 6, boost/metaparse/v1/fwd/get_result.hpp at line 6, boost/metaparse/v1/fwd/next_char.hpp at line 6, boost/metaparse/v1/fwd/next_line.hpp at line 6, boost/metaparse/v1/fwd/source_position.hpp at line 6, boost/metaparse/v1/impl/apply_parser.hpp at line 6, boost/metaparse/v1/impl/at_c.hpp at line 6, boost/metaparse/v1/impl/fwd/iterate_impl.hpp at line 6, boost/metaparse/v1/impl/is_any.hpp at line 6, boost/metaparse/v1/impl/iterate_impl.hpp at line 6, boost/metaparse/v1/impl/iterate_impl_unchecked.hpp at line 6, boost/metaparse/v1/impl/no_char.hpp at line 6, boost/metaparse/v1/impl/one_char_except_not_used.hpp at line 6, boost/metaparse/v1/impl/one_of.hpp at line 6, boost/metaparse/v1/impl/sequence.hpp at line 6, boost/metaparse/v1/impl/sequence_impl.hpp at line 6, boost/metaparse/v1/impl/string_iterator.hpp at line 6, boost/metaparse/v1/impl/string_iterator_tag.hpp at line 6, boost/metaparse/v1/one_of_c.hpp at line 6, boost/metaparse/v1/source_position_tag.hpp at line 6, boost/metaparse/v1/start.hpp at line 6, boost/metaparse/v1/string_tag.hpp at line 6, boost/metaparse/v1/util/digit_to_int_c.hpp at line 6, boost/metaparse/v1/util/int_to_digit_c.hpp at line 6, boost/metaparse/v1/util/is_whitespace_c.hpp at line 6
+ License text:
+ // Copyright Abel Sinkovics (abel@sinkovics.hu) 2013.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/metaparse.hpp [1:3]
+ boost/metaparse/accept_tag.hpp [4:6]
+ boost/metaparse/accept_when.hpp [4:6]
+ boost/metaparse/alphanum.hpp [4:6]
+ boost/metaparse/always.hpp [4:6]
+ boost/metaparse/always_c.hpp [4:6]
+ boost/metaparse/build_parser.hpp [4:6]
+ boost/metaparse/change_error_message.hpp [4:6]
+ boost/metaparse/config.hpp [4:6]
+ boost/metaparse/debug_parsing_error.hpp [4:6]
+ boost/metaparse/define_error.hpp [4:6]
+ boost/metaparse/digit.hpp [4:6]
+ boost/metaparse/digit_val.hpp [4:6]
+ boost/metaparse/empty.hpp [4:6]
+ boost/metaparse/entire_input.hpp [4:6]
+ boost/metaparse/error/digit_expected.hpp [4:6]
+ boost/metaparse/error/end_of_input_expected.hpp [4:6]
+ boost/metaparse/error/index_out_of_range.hpp [4:6]
+ boost/metaparse/error/letter_expected.hpp [4:6]
+ boost/metaparse/error/literal_expected.hpp [4:6]
+ boost/metaparse/error/none_of_the_expected_cases_found.hpp [4:6]
+ boost/metaparse/error/unexpected_character.hpp [4:6]
+ boost/metaparse/error/unexpected_end_of_input.hpp [4:6]
+ boost/metaparse/error/whitespace_expected.hpp [4:6]
+ boost/metaparse/except.hpp [4:6]
+ boost/metaparse/fail.hpp [4:6]
+ boost/metaparse/fail_tag.hpp [4:6]
+ boost/metaparse/first_of.hpp [4:6]
+ boost/metaparse/foldl.hpp [4:6]
+ boost/metaparse/foldl1.hpp [4:6]
+ boost/metaparse/foldl_start_with_parser.hpp [4:6]
+ boost/metaparse/foldr.hpp [4:6]
+ boost/metaparse/foldr1.hpp [4:6]
+ boost/metaparse/foldr_start_with_parser.hpp [4:6]
+ boost/metaparse/get_col.hpp [4:6]
+ boost/metaparse/get_line.hpp [4:6]
+ boost/metaparse/get_position.hpp [4:6]
+ boost/metaparse/get_prev_char.hpp [4:6]
+ boost/metaparse/get_remaining.hpp [4:6]
+ boost/metaparse/get_result.hpp [4:6]
+ boost/metaparse/grammar.hpp [4:6]
+ boost/metaparse/if_.hpp [4:6]
+ boost/metaparse/int_.hpp [4:6]
+ boost/metaparse/is_error.hpp [4:6]
+ boost/metaparse/iterate.hpp [4:6]
+ boost/metaparse/iterate_c.hpp [4:6]
+ boost/metaparse/keyword.hpp [4:6]
+ boost/metaparse/last_of.hpp [4:6]
+ boost/metaparse/letter.hpp [4:6]
+ boost/metaparse/limit_one_char_except_size.hpp [4:6]
+ boost/metaparse/limit_one_of_size.hpp [4:6]
+ boost/metaparse/limit_sequence_size.hpp [4:6]
+ boost/metaparse/limit_string_size.hpp [4:6]
+ boost/metaparse/lit.hpp [4:6]
+ boost/metaparse/lit_c.hpp [4:6]
+ boost/metaparse/look_ahead.hpp [4:6]
+ boost/metaparse/middle_of.hpp [4:6]
+ boost/metaparse/next_char.hpp [4:6]
+ boost/metaparse/next_line.hpp [4:6]
+ boost/metaparse/nth_of.hpp [4:6]
+ boost/metaparse/nth_of_c.hpp [4:6]
+ boost/metaparse/one_char.hpp [4:6]
+ boost/metaparse/one_char_except.hpp [4:6]
+ boost/metaparse/one_char_except_c.hpp [4:6]
+ boost/metaparse/one_of.hpp [4:6]
+ boost/metaparse/one_of_c.hpp [4:6]
+ boost/metaparse/repeated.hpp [4:6]
+ boost/metaparse/repeated1.hpp [4:6]
+ boost/metaparse/repeated_one_of.hpp [4:6]
+ boost/metaparse/repeated_one_of1.hpp [4:6]
+ boost/metaparse/return_.hpp [4:6]
+ boost/metaparse/sequence.hpp [4:6]
+ boost/metaparse/source_position.hpp [4:6]
+ boost/metaparse/source_position_tag.hpp [4:6]
+ boost/metaparse/space.hpp [4:6]
+ boost/metaparse/spaces.hpp [4:6]
+ boost/metaparse/start.hpp [4:6]
+ boost/metaparse/string.hpp [1:3]
+ boost/metaparse/string_tag.hpp [4:6]
+ boost/metaparse/token.hpp [4:6]
+ boost/metaparse/transform.hpp [4:6]
+ boost/metaparse/unless_error.hpp [4:6]
+ boost/metaparse/util/digit_to_int.hpp [4:6]
+ boost/metaparse/util/digit_to_int_c.hpp [4:6]
+ boost/metaparse/util/in_range.hpp [4:6]
+ boost/metaparse/util/int_to_digit.hpp [4:6]
+ boost/metaparse/util/int_to_digit_c.hpp [4:6]
+ boost/metaparse/util/is_lcase_letter.hpp [4:6]
+ boost/metaparse/util/is_letter.hpp [4:6]
+ boost/metaparse/util/is_ucase_letter.hpp [4:6]
+ boost/metaparse/util/is_whitespace.hpp [4:6]
+ boost/metaparse/util/is_whitespace_c.hpp [4:6]
+ boost/metaparse/v1/accept_tag.hpp [4:6]
+ boost/metaparse/v1/always_c.hpp [4:6]
+ boost/metaparse/v1/cpp11/fwd/string.hpp [4:6]
+ boost/metaparse/v1/cpp11/impl/at_c.hpp [4:6]
+ boost/metaparse/v1/cpp11/impl/concat.hpp [4:6]
+ boost/metaparse/v1/cpp11/impl/empty_string.hpp [4:6]
+ boost/metaparse/v1/cpp11/impl/pop_back.hpp [4:6]
+ boost/metaparse/v1/cpp11/impl/pop_front.hpp [4:6]
+ boost/metaparse/v1/cpp11/impl/push_back_c.hpp [4:6]
+ boost/metaparse/v1/cpp11/impl/push_front_c.hpp [4:6]
+ boost/metaparse/v1/cpp11/impl/remove_trailing_no_chars.hpp [4:6]
+ boost/metaparse/v1/cpp11/impl/size.hpp [4:6]
+ boost/metaparse/v1/cpp98/fwd/string.hpp [4:6]
+ boost/metaparse/v1/cpp98/impl/at_c.hpp [4:6]
+ boost/metaparse/v1/cpp98/impl/empty_string.hpp [4:6]
+ boost/metaparse/v1/cpp98/impl/nth_of_c.hpp [4:6]
+ boost/metaparse/v1/cpp98/impl/nth_of_c_impl.hpp [4:6]
+ boost/metaparse/v1/cpp98/impl/pop_back.hpp [4:6]
+ boost/metaparse/v1/cpp98/impl/pop_front.hpp [4:6]
+ boost/metaparse/v1/cpp98/impl/push_back_c.hpp [4:6]
+ boost/metaparse/v1/cpp98/impl/push_front_c.hpp [4:6]
+ boost/metaparse/v1/cpp98/impl/size.hpp [4:6]
+ boost/metaparse/v1/cpp98/impl/skip_seq.hpp [4:6]
+ boost/metaparse/v1/cpp98/impl/update_c.hpp [4:6]
+ boost/metaparse/v1/cpp98/nth_of_c.hpp [4:6]
+ boost/metaparse/v1/define_error.hpp [4:6]
+ boost/metaparse/v1/error/digit_expected.hpp [4:6]
+ boost/metaparse/v1/error/end_of_input_expected.hpp [4:6]
+ boost/metaparse/v1/error/index_out_of_range.hpp [4:6]
+ boost/metaparse/v1/error/letter_expected.hpp [4:6]
+ boost/metaparse/v1/error/literal_expected.hpp [4:6]
+ boost/metaparse/v1/error/none_of_the_expected_cases_found.hpp [4:6]
+ boost/metaparse/v1/error/unexpected_character.hpp [4:6]
+ boost/metaparse/v1/error/unexpected_end_of_input.hpp [4:6]
+ boost/metaparse/v1/error/whitespace_expected.hpp [4:6]
+ boost/metaparse/v1/fwd/build_parser.hpp [4:6]
+ boost/metaparse/v1/fwd/get_col.hpp [4:6]
+ boost/metaparse/v1/fwd/get_line.hpp [4:6]
+ boost/metaparse/v1/fwd/get_position.hpp [4:6]
+ boost/metaparse/v1/fwd/get_prev_char.hpp [4:6]
+ boost/metaparse/v1/fwd/get_remaining.hpp [4:6]
+ boost/metaparse/v1/fwd/get_result.hpp [4:6]
+ boost/metaparse/v1/fwd/next_char.hpp [4:6]
+ boost/metaparse/v1/fwd/next_line.hpp [4:6]
+ boost/metaparse/v1/fwd/source_position.hpp [4:6]
+ boost/metaparse/v1/impl/apply_parser.hpp [4:6]
+ boost/metaparse/v1/impl/at_c.hpp [4:6]
+ boost/metaparse/v1/impl/fwd/iterate_impl.hpp [4:6]
+ boost/metaparse/v1/impl/is_any.hpp [4:6]
+ boost/metaparse/v1/impl/iterate_impl.hpp [4:6]
+ boost/metaparse/v1/impl/iterate_impl_unchecked.hpp [4:6]
+ boost/metaparse/v1/impl/no_char.hpp [4:6]
+ boost/metaparse/v1/impl/one_char_except_not_used.hpp [4:6]
+ boost/metaparse/v1/impl/one_of.hpp [4:6]
+ boost/metaparse/v1/impl/sequence.hpp [4:6]
+ boost/metaparse/v1/impl/sequence_impl.hpp [4:6]
+ boost/metaparse/v1/impl/string_iterator.hpp [4:6]
+ boost/metaparse/v1/impl/string_iterator_tag.hpp [4:6]
+ boost/metaparse/v1/one_of_c.hpp [4:6]
+ boost/metaparse/v1/source_position_tag.hpp [4:6]
+ boost/metaparse/v1/start.hpp [4:6]
+ boost/metaparse/v1/string_tag.hpp [4:6]
+ boost/metaparse/v1/util/digit_to_int_c.hpp [4:6]
+ boost/metaparse/v1/util/int_to_digit_c.hpp [4:6]
+ boost/metaparse/v1/util/is_whitespace_c.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 72b9bd66865ddaee0fb864076f107de3
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
+ // Copyright (c) 2008-2014 Barend Gehrels, Amsterdam, the Netherlands.
+ // Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/geometries/concepts/point_concept.hpp [3:5]
+ boost/geometry/strategies/cartesian/distance_projected_point.hpp [3:5]
+ boost/geometry/strategies/cartesian/distance_projected_point_ax.hpp [3:5]
+ boost/geometry/strategies/cartesian/distance_pythagoras_box_box.hpp [3:5]
+ boost/geometry/strategies/cartesian/distance_pythagoras_point_box.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 73021121a028d194fba65596bec6cef0
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2013 Anton Bikineev
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/bessel_prime.hpp [1:3]
+ boost/math/special_functions/detail/bessel_derivatives_linear.hpp [1:3]
+ boost/math/special_functions/detail/bessel_jy_derivatives_asym.hpp [1:3]
+ boost/math/special_functions/detail/bessel_jy_derivatives_series.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 73025b91e8cf54ab81ff410c38be7452
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001-2009, 2012 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/detail/operator_bool.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 730c07851a5b23ccbb31329a376a83df
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2011-2015 Akira Takahashi
+ // Copyright (c) 2011-2015 Barend Gehrels, Amsterdam, the Netherlands.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/geometries/adapted/boost_fusion.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 73465150862f0cc2df66101601ca434e
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/proto/detail/deduce_domain.hpp at line 9
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/proto/detail/deduce_domain.hpp [7:9]
+
+KEEP COPYRIGHT_SERVICE_LABEL 734f8fc32ed77c4004c79d8db1513144
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/detail/functions/trig.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/multiprecision/detail/functions/trig.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 73798cdc506bf1f1fdbb74d2be43a59f
+BELONGS ya.make
+ License text:
+ // This file was modified by Oracle on 2014-2018.
+ // Modifications copyright (c) 2014-2018 Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/geometry.hpp [7:8]
+ boost/geometry/srs/sphere.hpp [7:8]
+ boost/geometry/srs/spheroid.hpp [7:8]
+ boost/geometry/srs/srs.hpp [7:8]
+ boost/geometry/strategies/geographic/distance.hpp [5:6]
+ boost/geometry/strategies/geographic/side.hpp [5:6]
+ boost/geometry/strategies/strategies.hpp [8:9]
+
+KEEP COPYRIGHT_SERVICE_LABEL 73a854045058b52a933e9b9c1ed5c5bd
+BELONGS ya.make
+ License text:
+ Copyright (c) 2007 Tobias Schwinger
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/functional/factory.hpp [2:2]
+ boost/functional/lightweight_forward_adapter.hpp [2:2]
+ boost/functional/value_factory.hpp [2:2]
+ boost/fusion/container/list/detail/empty_impl.hpp [2:2]
+ boost/fusion/functional/generation.hpp [2:2]
+ boost/fusion/functional/generation/detail/gen_make_adapter.hpp [2:2]
+ boost/fusion/functional/generation/make_fused.hpp [2:2]
+ boost/fusion/functional/generation/make_fused_function_object.hpp [2:2]
+ boost/fusion/functional/generation/make_fused_procedure.hpp [2:2]
+ boost/fusion/functional/generation/make_unfused.hpp [2:2]
+ boost/fusion/support/deduce.hpp [2:2]
+ boost/fusion/support/deduce_sequence.hpp [2:2]
+ boost/fusion/support/sequence_base.hpp [2:3]
+ boost/fusion/view/iterator_range/detail/at_impl.hpp [2:2]
+ boost/fusion/view/iterator_range/detail/value_at_impl.hpp [2:2]
+ boost/fusion/view/repetitive_view.hpp [2:2]
+ boost/fusion/view/repetitive_view/detail/begin_impl.hpp [2:2]
+ boost/fusion/view/repetitive_view/detail/deref_impl.hpp [2:2]
+ boost/fusion/view/repetitive_view/detail/end_impl.hpp [2:2]
+ boost/fusion/view/repetitive_view/detail/next_impl.hpp [2:2]
+ boost/fusion/view/repetitive_view/detail/value_of_impl.hpp [2:2]
+ boost/fusion/view/repetitive_view/repetitive_view.hpp [2:2]
+ boost/fusion/view/repetitive_view/repetitive_view_fwd.hpp [2:2]
+ boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp [2:2]
+ boost/spirit/home/support/iterators/multi_pass_fwd.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 73e1a39f02509cd9b4aa749a0fc51358
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2003 Joel de Guzman
+ Copyright (c) 2002-2003 Martin Wille
+ Copyright (c) 2003 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/core/non_terminal/grammar.hpp [2:5]
+ boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp [2:5]
+ boost/spirit/home/classic/dynamic/impl/select.ipp [2:3]
+ boost/spirit/home/classic/dynamic/impl/switch.ipp [2:3]
+ boost/spirit/home/classic/dynamic/select.hpp [2:3]
+ boost/spirit/home/classic/dynamic/switch.hpp [2:3]
+ boost/spirit/home/classic/iterator/file_iterator.hpp [2:5]
+ boost/spirit/home/classic/iterator/impl/file_iterator.ipp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 740b8b21c73d73ca167354e62df16207
+BELONGS ya.make
+ License text:
+ * Copyright (c) 2010 Matthias Walter (xammy@xammy.homelinux.net)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/bipartite.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7457b5550b1e9bda918d7c58dc2f723f
+BELONGS ya.make
+ License text:
+ // Copyright Eric Friedman 2003
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/aux_/partition_op.hpp [5:6]
+ boost/mpl/index_if.hpp [5:5]
+ boost/mpl/index_of.hpp [5:6]
+ boost/mpl/iter_fold_if.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 74ee4dff688ff710e2fd61ab32477159
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2006.
+ // Copyright Paul A. Bristow 2006.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/distributions/beta.hpp [3:4]
+ boost/math/distributions/uniform.hpp [1:4]
+ boost/math/special_functions/math_fwd.hpp [5:6]
+ boost/math/tools/promotion.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7500e3115ad2ad77256a10dcd614f5bf
+BELONGS ya.make
+ License text:
+ //Copyright (c) 2006-2013 Emil Dotchevski and Reverge Studios, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/exception/detail/clone_current_exception.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 750cd3ddd45943a8e91eb79f9cf8e698
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2006 Douglas Gregor <doug.gregor -at- gmail.com>.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpi.hpp [1:1]
+ boost/mpi/allocator.hpp [1:1]
+ boost/mpi/config.hpp [1:1]
+ boost/mpi/datatype_fwd.hpp [1:1]
+ boost/mpi/detail/communicator_sc.hpp [1:1]
+ boost/mpi/environment.hpp [1:1]
+ boost/mpi/nonblocking.hpp [1:1]
+ boost/mpi/python.hpp [1:1]
+ boost/mpi/python/config.hpp [1:1]
+ boost/mpi/python/serialize.hpp [1:1]
+ boost/mpi/request.hpp [1:1]
+ boost/mpi/status.hpp [1:1]
+ boost/mpi/timer.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 753eb328ad6d344907c3dba8d325784a
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/area.hpp [3:6]
+ boost/geometry/algorithms/assign.hpp [3:6]
+ boost/geometry/algorithms/buffer.hpp [3:5]
+ boost/geometry/algorithms/clear.hpp [3:5]
+ boost/geometry/algorithms/convert.hpp [3:6]
+ boost/geometry/algorithms/correct.hpp [3:6]
+ boost/geometry/algorithms/covered_by.hpp [3:5]
+ boost/geometry/algorithms/crosses.hpp [3:6]
+ boost/geometry/algorithms/detail/as_range.hpp [3:5]
+ boost/geometry/algorithms/detail/assign_box_corners.hpp [3:5]
+ boost/geometry/algorithms/detail/assign_indexed_point.hpp [3:5]
+ boost/geometry/algorithms/detail/assign_values.hpp [3:5]
+ boost/geometry/algorithms/detail/calculate_null.hpp [3:5]
+ boost/geometry/algorithms/detail/calculate_sum.hpp [3:6]
+ boost/geometry/algorithms/detail/centroid/translating_transformer.hpp [3:6]
+ boost/geometry/algorithms/detail/convert_indexed_to_indexed.hpp [3:5]
+ boost/geometry/algorithms/detail/convert_point_to_point.hpp [3:5]
+ boost/geometry/algorithms/detail/covered_by/implementation.hpp [3:5]
+ boost/geometry/algorithms/detail/covered_by/interface.hpp [3:5]
+ boost/geometry/algorithms/detail/for_each_range.hpp [3:5]
+ boost/geometry/algorithms/detail/multi_modify.hpp [3:5]
+ boost/geometry/algorithms/detail/multi_modify_with_predicate.hpp [3:5]
+ boost/geometry/algorithms/detail/multi_sum.hpp [3:5]
+ boost/geometry/algorithms/detail/point_on_border.hpp [3:5]
+ boost/geometry/algorithms/detail/sections/range_by_section.hpp [3:5]
+ boost/geometry/algorithms/detail/within/implementation.hpp [3:5]
+ boost/geometry/algorithms/detail/within/interface.hpp [3:5]
+ boost/geometry/algorithms/detail/within/point_in_geometry.hpp [3:6]
+ boost/geometry/algorithms/detail/within/within_no_turns.hpp [3:5]
+ boost/geometry/algorithms/make.hpp [3:5]
+ boost/geometry/algorithms/reverse.hpp [3:6]
+ boost/geometry/algorithms/transform.hpp [3:6]
+ boost/geometry/algorithms/unique.hpp [3:6]
+ boost/geometry/algorithms/within.hpp [3:5]
+ boost/geometry/arithmetic/arithmetic.hpp [3:5]
+ boost/geometry/arithmetic/cross_product.hpp [3:5]
+ boost/geometry/arithmetic/determinant.hpp [3:5]
+ boost/geometry/arithmetic/dot_product.hpp [3:5]
+ boost/geometry/core/access.hpp [3:5]
+ boost/geometry/core/closure.hpp [3:5]
+ boost/geometry/core/coordinate_dimension.hpp [3:5]
+ boost/geometry/core/coordinate_system.hpp [3:5]
+ boost/geometry/core/coordinate_type.hpp [3:5]
+ boost/geometry/core/exterior_ring.hpp [3:5]
+ boost/geometry/core/geometry_id.hpp [3:5]
+ boost/geometry/core/interior_rings.hpp [3:5]
+ boost/geometry/core/interior_type.hpp [3:5]
+ boost/geometry/core/is_areal.hpp [3:5]
+ boost/geometry/core/mutable_range.hpp [3:5]
+ boost/geometry/core/point_order.hpp [3:5]
+ boost/geometry/core/point_type.hpp [3:5]
+ boost/geometry/core/radius.hpp [3:5]
+ boost/geometry/core/reverse_dispatch.hpp [3:5]
+ boost/geometry/core/tag.hpp [3:5]
+ boost/geometry/core/tag_cast.hpp [3:5]
+ boost/geometry/core/tags.hpp [3:5]
+ boost/geometry/core/topological_dimension.hpp [3:5]
+ boost/geometry/geometries/adapted/boost_tuple.hpp [3:5]
+ boost/geometry/geometries/adapted/c_array.hpp [3:5]
+ boost/geometry/geometries/adapted/std_pair_as_segment.hpp [3:5]
+ boost/geometry/geometries/box.hpp [3:5]
+ boost/geometry/geometries/concepts/box_concept.hpp [3:5]
+ boost/geometry/geometries/concepts/check.hpp [3:5]
+ boost/geometry/geometries/concepts/linestring_concept.hpp [3:5]
+ boost/geometry/geometries/concepts/multi_linestring_concept.hpp [3:5]
+ boost/geometry/geometries/concepts/multi_point_concept.hpp [3:5]
+ boost/geometry/geometries/concepts/multi_polygon_concept.hpp [3:5]
+ boost/geometry/geometries/concepts/polygon_concept.hpp [3:5]
+ boost/geometry/geometries/concepts/ring_concept.hpp [3:5]
+ boost/geometry/geometries/concepts/segment_concept.hpp [3:5]
+ boost/geometry/geometries/geometries.hpp [3:5]
+ boost/geometry/geometries/linestring.hpp [3:6]
+ boost/geometry/geometries/multi_linestring.hpp [3:6]
+ boost/geometry/geometries/multi_point.hpp [3:6]
+ boost/geometry/geometries/multi_polygon.hpp [3:6]
+ boost/geometry/geometries/point_xy.hpp [3:5]
+ boost/geometry/geometries/polygon.hpp [3:6]
+ boost/geometry/geometries/register/box.hpp [3:5]
+ boost/geometry/geometries/register/linestring.hpp [3:5]
+ boost/geometry/geometries/register/multi_linestring.hpp [3:5]
+ boost/geometry/geometries/register/multi_point.hpp [3:5]
+ boost/geometry/geometries/register/multi_polygon.hpp [3:5]
+ boost/geometry/geometries/register/point.hpp [3:5]
+ boost/geometry/geometries/register/ring.hpp [3:5]
+ boost/geometry/geometries/register/segment.hpp [3:5]
+ boost/geometry/geometries/ring.hpp [3:6]
+ boost/geometry/geometries/segment.hpp [3:5]
+ boost/geometry/geometries/variant.hpp [3:5]
+ boost/geometry/io/dsv/write.hpp [3:6]
+ boost/geometry/io/io.hpp [3:5]
+ boost/geometry/io/wkt/detail/prefix.hpp [3:5]
+ boost/geometry/io/wkt/detail/wkt_multi.hpp [3:5]
+ boost/geometry/io/wkt/read.hpp [3:6]
+ boost/geometry/io/wkt/stream.hpp [3:5]
+ boost/geometry/io/wkt/wkt.hpp [3:5]
+ boost/geometry/iterators/base.hpp [3:5]
+ boost/geometry/iterators/closing_iterator.hpp [3:5]
+ boost/geometry/iterators/ever_circling_iterator.hpp [3:5]
+ boost/geometry/multi/algorithms/area.hpp [3:5]
+ boost/geometry/multi/algorithms/centroid.hpp [3:5]
+ boost/geometry/multi/algorithms/clear.hpp [3:5]
+ boost/geometry/multi/algorithms/convert.hpp [3:5]
+ boost/geometry/multi/algorithms/correct.hpp [3:5]
+ boost/geometry/multi/algorithms/covered_by.hpp [3:6]
+ boost/geometry/multi/algorithms/detail/for_each_range.hpp [3:5]
+ boost/geometry/multi/algorithms/detail/modify.hpp [3:5]
+ boost/geometry/multi/algorithms/detail/modify_with_predicate.hpp [3:5]
+ boost/geometry/multi/algorithms/detail/multi_sum.hpp [3:5]
+ boost/geometry/multi/algorithms/detail/point_on_border.hpp [3:5]
+ boost/geometry/multi/algorithms/detail/sections/range_by_section.hpp [3:5]
+ boost/geometry/multi/algorithms/detail/sections/sectionalize.hpp [3:5]
+ boost/geometry/multi/algorithms/envelope.hpp [3:5]
+ boost/geometry/multi/algorithms/equals.hpp [3:5]
+ boost/geometry/multi/algorithms/for_each.hpp [3:5]
+ boost/geometry/multi/algorithms/length.hpp [3:5]
+ boost/geometry/multi/algorithms/num_geometries.hpp [3:5]
+ boost/geometry/multi/algorithms/num_interior_rings.hpp [3:5]
+ boost/geometry/multi/algorithms/perimeter.hpp [3:5]
+ boost/geometry/multi/algorithms/reverse.hpp [3:5]
+ boost/geometry/multi/algorithms/simplify.hpp [3:5]
+ boost/geometry/multi/algorithms/transform.hpp [3:5]
+ boost/geometry/multi/algorithms/unique.hpp [3:5]
+ boost/geometry/multi/algorithms/within.hpp [3:6]
+ boost/geometry/multi/core/closure.hpp [3:5]
+ boost/geometry/multi/core/geometry_id.hpp [3:5]
+ boost/geometry/multi/core/interior_rings.hpp [3:5]
+ boost/geometry/multi/core/is_areal.hpp [3:5]
+ boost/geometry/multi/core/point_order.hpp [3:5]
+ boost/geometry/multi/core/point_type.hpp [3:5]
+ boost/geometry/multi/core/ring_type.hpp [3:5]
+ boost/geometry/multi/core/tags.hpp [3:5]
+ boost/geometry/multi/core/topological_dimension.hpp [3:5]
+ boost/geometry/multi/geometries/concepts/check.hpp [3:5]
+ boost/geometry/multi/geometries/concepts/multi_linestring_concept.hpp [3:5]
+ boost/geometry/multi/geometries/concepts/multi_point_concept.hpp [3:5]
+ boost/geometry/multi/geometries/concepts/multi_polygon_concept.hpp [3:5]
+ boost/geometry/multi/geometries/multi_geometries.hpp [3:5]
+ boost/geometry/multi/geometries/multi_linestring.hpp [3:5]
+ boost/geometry/multi/geometries/multi_point.hpp [3:5]
+ boost/geometry/multi/geometries/multi_polygon.hpp [3:5]
+ boost/geometry/multi/geometries/register/multi_linestring.hpp [3:5]
+ boost/geometry/multi/geometries/register/multi_point.hpp [3:5]
+ boost/geometry/multi/geometries/register/multi_polygon.hpp [3:5]
+ boost/geometry/multi/io/dsv/write.hpp [3:5]
+ boost/geometry/multi/io/wkt/detail/prefix.hpp [3:5]
+ boost/geometry/multi/io/wkt/read.hpp [3:5]
+ boost/geometry/multi/io/wkt/wkt.hpp [3:5]
+ boost/geometry/multi/io/wkt/write.hpp [3:5]
+ boost/geometry/multi/strategies/cartesian/centroid_average.hpp [3:5]
+ boost/geometry/multi/views/detail/range_type.hpp [3:5]
+ boost/geometry/srs/sphere.hpp [3:5]
+ boost/geometry/srs/spheroid.hpp [3:5]
+ boost/geometry/srs/srs.hpp [3:5]
+ boost/geometry/strategies/agnostic/point_in_box_by_side.hpp [3:5]
+ boost/geometry/strategies/area.hpp [3:6]
+ boost/geometry/strategies/cartesian/area.hpp [3:6]
+ boost/geometry/strategies/cartesian/area_surveyor.hpp [3:6]
+ boost/geometry/strategies/cartesian/centroid_average.hpp [3:6]
+ boost/geometry/strategies/cartesian/distance_pythagoras.hpp [3:5]
+ boost/geometry/strategies/cartesian/point_in_poly_crossings_multiply.hpp [3:5]
+ boost/geometry/strategies/cartesian/point_in_poly_franklin.hpp [3:5]
+ boost/geometry/strategies/centroid.hpp [3:5]
+ boost/geometry/strategies/compare.hpp [3:5]
+ boost/geometry/strategies/concepts/area_concept.hpp [3:6]
+ boost/geometry/strategies/concepts/centroid_concept.hpp [3:5]
+ boost/geometry/strategies/concepts/convex_hull_concept.hpp [3:5]
+ boost/geometry/strategies/concepts/segment_intersect_concept.hpp [3:5]
+ boost/geometry/strategies/concepts/simplify_concept.hpp [3:5]
+ boost/geometry/strategies/concepts/within_concept.hpp [3:5]
+ boost/geometry/strategies/convex_hull.hpp [3:5]
+ boost/geometry/strategies/covered_by.hpp [3:5]
+ boost/geometry/strategies/default_area_result.hpp [3:6]
+ boost/geometry/strategies/side.hpp [3:5]
+ boost/geometry/strategies/side_info.hpp [3:5]
+ boost/geometry/strategies/strategies.hpp [3:6]
+ boost/geometry/strategies/tags.hpp [3:5]
+ boost/geometry/strategies/transform.hpp [3:5]
+ boost/geometry/strategies/transform/inverse_transformer.hpp [3:5]
+ boost/geometry/strategies/transform/map_transformer.hpp [3:5]
+ boost/geometry/strategies/within.hpp [3:5]
+ boost/geometry/util/add_const_if_c.hpp [3:5]
+ boost/geometry/util/closure_as_bool.hpp [3:5]
+ boost/geometry/util/coordinate_cast.hpp [3:5]
+ boost/geometry/util/for_each_coordinate.hpp [3:5]
+ boost/geometry/util/order_as_direction.hpp [3:5]
+ boost/geometry/util/parameter_type_of.hpp [3:5]
+ boost/geometry/util/promote_floating_point.hpp [3:5]
+ boost/geometry/util/select_calculation_type.hpp [3:5]
+ boost/geometry/util/select_coordinate_type.hpp [3:5]
+ boost/geometry/util/select_most_precise.hpp [3:5]
+ boost/geometry/views/box_view.hpp [3:5]
+ boost/geometry/views/closeable_view.hpp [3:5]
+ boost/geometry/views/detail/normalized_view.hpp [3:5]
+ boost/geometry/views/detail/points_view.hpp [3:5]
+ boost/geometry/views/detail/range_type.hpp [3:5]
+ boost/geometry/views/identity_view.hpp [3:5]
+ boost/geometry/views/reversible_view.hpp [3:5]
+ boost/geometry/views/segment_view.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 759c4f0c247332c3b69c2ae95cc3bad8
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/cpp_int/import_export.hpp at line 4, boost/multiprecision/traits/is_backend.hpp at line 4, boost/multiprecision/traits/is_byte_container.hpp at line 4
+ License text:
+ // Copyright 2015 John Maddock. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/multiprecision/cpp_int/import_export.hpp [2:4]
+ boost/multiprecision/traits/is_backend.hpp [2:4]
+ boost/multiprecision/traits/is_byte_container.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 75be4ee40bbff38ffcbd45f8444abfaf
+BELONGS ya.make
+ License text:
+ /* Copyright (c) 2002-2006 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/date_time/locale_config.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 75ef7529f27f9a710eea2869f97333f1
+BELONGS libs/chrono/ya.make libs/filesystem/ya.make ya.make
+ License text:
+ // Copyright Beman Dawes 2008
+ // Copyright Vicente J. Botet Escriba 2009
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/chrono/detail/inlined/chrono.hpp [3:4]
+ boost/chrono/detail/inlined/mac/chrono.hpp [3:4]
+ boost/chrono/detail/inlined/posix/chrono.hpp [3:4]
+ boost/chrono/detail/inlined/win/chrono.hpp [3:4]
+ boost/endian/detail/cover_operators.hpp [3:4]
+ boost/spirit/home/support/detail/endian/cover_operators.hpp [3:4]
+ libs/chrono/src/chrono.cpp [3:4]
+ libs/filesystem/src/path.cpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 75f254658639d6099b8a2607570e97af
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2003, 2008 Fernando Luis Cacciola Carballal.
+ // Copyright (C) 2014 - 2017 Andrzej Krzemienski.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/optional/detail/old_optional_implementation.hpp [1:2]
+ boost/optional/detail/optional_aligned_storage.hpp [1:2]
+ boost/optional/detail/optional_config.hpp [1:2]
+ boost/optional/detail/optional_factory_support.hpp [1:2]
+ boost/optional/detail/optional_relops.hpp [1:2]
+ boost/optional/detail/optional_swap.hpp [1:2]
+ boost/optional/optional.hpp [1:2]
+ boost/optional/optional_fwd.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7601e17851ca581823c83b37fe70dab1
+BELONGS ya.make
+ License text:
+ // (C) Copyright 2005 Matthias Troyer
+ // (C) Copyright 2006 Douglas Gregor <doug.gregor -at- gmail.com>
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpi/packed_iarchive.hpp [1:2]
+ boost/mpi/packed_oarchive.hpp [1:2]
+ boost/mpi/python/skeleton_and_content.hpp [1:1]
+ boost/mpi/skeleton_and_content.hpp [1:2]
+ boost/mpi/skeleton_and_content_fwd.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 768f987faaed0adc6222ab24c7bd02e6
+BELONGS libs/context/ya.make libs/coroutine/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/context/detail/fcontext.hpp at line 4, boost/coroutine/all.hpp at line 4, boost/coroutine/asymmetric_coroutine.hpp at line 4, boost/coroutine/attributes.hpp at line 4, boost/coroutine/coroutine.hpp at line 4, boost/coroutine/detail/config.hpp at line 4, boost/coroutine/detail/coroutine_context.hpp at line 4, boost/coroutine/detail/data.hpp at line 4, boost/coroutine/detail/flags.hpp at line 4, boost/coroutine/detail/parameters.hpp at line 4, boost/coroutine/detail/pull_coroutine_impl.hpp at line 4, boost/coroutine/detail/pull_coroutine_object.hpp at line 4, boost/coroutine/detail/pull_coroutine_synthesized.hpp at line 4, boost/coroutine/detail/push_coroutine_impl.hpp at line 4, boost/coroutine/detail/push_coroutine_object.hpp at line 4, boost/coroutine/detail/push_coroutine_synthesized.hpp at line 4, boost/coroutine/detail/setup.hpp at line 4, boost/coroutine/detail/symmetric_coroutine_call.hpp at line 4, boost/coroutine/detail/symmetric_coroutine_impl.hpp at line 4, boost/coroutine/detail/symmetric_coroutine_object.hpp at line 4, boost/coroutine/detail/symmetric_coroutine_yield.hpp at line 4, boost/coroutine/detail/trampoline.hpp at line 4, boost/coroutine/detail/trampoline_pull.hpp at line 4, boost/coroutine/detail/trampoline_push.hpp at line 4, boost/coroutine/exceptions.hpp at line 4, boost/coroutine/flags.hpp at line 4, boost/coroutine/posix/protected_stack_allocator.hpp at line 4, boost/coroutine/posix/segmented_stack_allocator.hpp at line 4, boost/coroutine/protected_stack_allocator.hpp at line 4, boost/coroutine/segmented_stack_allocator.hpp at line 4, boost/coroutine/stack_allocator.hpp at line 4, boost/coroutine/stack_context.hpp at line 4, boost/coroutine/stack_traits.hpp at line 4, boost/coroutine/standard_stack_allocator.hpp at line 4, boost/coroutine/symmetric_coroutine.hpp at line 4, boost/coroutine/windows/protected_stack_allocator.hpp at line 4, libs/context/src/asm/jump_arm_aapcs_elf_gas.S at line 4, libs/context/src/asm/jump_arm_aapcs_macho_gas.S at line 4, libs/context/src/asm/jump_arm_aapcs_pe_armasm.asm at line 4, libs/context/src/asm/jump_arm_aapcs_pe_armasm.masm at line 4, libs/context/src/asm/jump_i386_ms_pe_gas.asm at line 4, libs/context/src/asm/jump_i386_ms_pe_masm.asm at line 4, libs/context/src/asm/jump_i386_ms_pe_masm.masm at line 4, libs/context/src/asm/jump_i386_sysv_elf_gas.S at line 4, libs/context/src/asm/jump_i386_sysv_macho_gas.S at line 4, libs/context/src/asm/jump_mips32_o32_elf_gas.S at line 4, libs/context/src/asm/jump_ppc32_sysv_elf_gas.S at line 4, libs/context/src/asm/jump_ppc32_sysv_macho_gas.S at line 4, libs/context/src/asm/jump_ppc32_sysv_xcoff_gas.S at line 4, libs/context/src/asm/jump_ppc64_sysv_elf_gas.S at line 4, libs/context/src/asm/jump_ppc64_sysv_macho_gas.S at line 4, libs/context/src/asm/jump_x86_64_ms_pe_gas.asm at line 4, libs/context/src/asm/jump_x86_64_ms_pe_masm.asm at line 4, libs/context/src/asm/jump_x86_64_ms_pe_masm.masm at line 4, libs/context/src/asm/jump_x86_64_sysv_elf_gas.S at line 4, libs/context/src/asm/jump_x86_64_sysv_macho_gas.S at line 4, libs/context/src/asm/make_arm_aapcs_elf_gas.S at line 4, libs/context/src/asm/make_arm_aapcs_macho_gas.S at line 4, libs/context/src/asm/make_arm_aapcs_pe_armasm.asm at line 4, libs/context/src/asm/make_arm_aapcs_pe_armasm.masm at line 4, libs/context/src/asm/make_i386_ms_pe_gas.asm at line 4, libs/context/src/asm/make_i386_ms_pe_masm.asm at line 4, libs/context/src/asm/make_i386_ms_pe_masm.masm at line 4, libs/context/src/asm/make_i386_sysv_elf_gas.S at line 4, libs/context/src/asm/make_i386_sysv_macho_gas.S at line 4, libs/context/src/asm/make_mips32_o32_elf_gas.S at line 4, libs/context/src/asm/make_ppc32_sysv_elf_gas.S at line 4, libs/context/src/asm/make_ppc32_sysv_macho_gas.S at line 4, libs/context/src/asm/make_ppc32_sysv_xcoff_gas.S at line 4, libs/context/src/asm/make_ppc64_sysv_elf_gas.S at line 4, libs/context/src/asm/make_ppc64_sysv_macho_gas.S at line 4, libs/context/src/asm/make_x86_64_ms_pe_gas.asm at line 4, libs/context/src/asm/make_x86_64_ms_pe_masm.asm at line 4, libs/context/src/asm/make_x86_64_ms_pe_masm.masm at line 4, libs/context/src/asm/make_x86_64_sysv_elf_gas.S at line 4, libs/context/src/asm/make_x86_64_sysv_macho_gas.S at line 4, libs/context/src/asm/ontop_arm_aapcs_elf_gas.S at line 4, libs/context/src/asm/ontop_arm_aapcs_macho_gas.S at line 4, libs/context/src/asm/ontop_arm_aapcs_pe_armasm.asm at line 4, libs/context/src/asm/ontop_arm_aapcs_pe_armasm.masm at line 4, libs/context/src/asm/ontop_i386_ms_pe_gas.asm at line 4, libs/context/src/asm/ontop_i386_ms_pe_masm.asm at line 4, libs/context/src/asm/ontop_i386_ms_pe_masm.masm at line 4, libs/context/src/asm/ontop_i386_sysv_elf_gas.S at line 4, libs/context/src/asm/ontop_i386_sysv_macho_gas.S at line 4, libs/context/src/asm/ontop_mips32_o32_elf_gas.S at line 4, libs/context/src/asm/ontop_ppc32_sysv_elf_gas.S at line 4, libs/context/src/asm/ontop_ppc32_sysv_macho_gas.S at line 4, libs/context/src/asm/ontop_ppc32_sysv_xcoff_gas.S at line 4, libs/context/src/asm/ontop_ppc64_sysv_elf_gas.S at line 4, libs/context/src/asm/ontop_ppc64_sysv_macho_gas.S at line 4, libs/context/src/asm/ontop_x86_64_ms_pe_gas.asm at line 4, libs/context/src/asm/ontop_x86_64_ms_pe_masm.asm at line 4, libs/context/src/asm/ontop_x86_64_ms_pe_masm.masm at line 4, libs/context/src/asm/ontop_x86_64_sysv_elf_gas.S at line 4, libs/context/src/asm/ontop_x86_64_sysv_macho_gas.S at line 4, libs/context/src/execution_context.cpp at line 4, libs/context/src/untested.cpp at line 4, libs/coroutine/src/detail/coroutine_context.cpp at line 4, libs/coroutine/src/exceptions.cpp at line 4, libs/coroutine/src/posix/stack_traits.cpp at line 4, libs/coroutine/src/windows/stack_traits.cpp at line 4
+ License text:
+ // Copyright Oliver Kowalke 2009.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/context/detail/fcontext.hpp [2:4]
+ boost/coroutine/all.hpp [2:4]
+ boost/coroutine/asymmetric_coroutine.hpp [2:4]
+ boost/coroutine/attributes.hpp [2:4]
+ boost/coroutine/coroutine.hpp [2:4]
+ boost/coroutine/detail/config.hpp [2:4]
+ boost/coroutine/detail/coroutine_context.hpp [2:4]
+ boost/coroutine/detail/data.hpp [2:4]
+ boost/coroutine/detail/flags.hpp [2:4]
+ boost/coroutine/detail/parameters.hpp [2:4]
+ boost/coroutine/detail/pull_coroutine_impl.hpp [2:4]
+ boost/coroutine/detail/pull_coroutine_object.hpp [2:4]
+ boost/coroutine/detail/pull_coroutine_synthesized.hpp [2:4]
+ boost/coroutine/detail/push_coroutine_impl.hpp [2:4]
+ boost/coroutine/detail/push_coroutine_object.hpp [2:4]
+ boost/coroutine/detail/push_coroutine_synthesized.hpp [2:4]
+ boost/coroutine/detail/setup.hpp [2:4]
+ boost/coroutine/detail/symmetric_coroutine_call.hpp [2:4]
+ boost/coroutine/detail/symmetric_coroutine_impl.hpp [2:4]
+ boost/coroutine/detail/symmetric_coroutine_object.hpp [2:4]
+ boost/coroutine/detail/symmetric_coroutine_yield.hpp [2:4]
+ boost/coroutine/detail/trampoline.hpp [2:4]
+ boost/coroutine/detail/trampoline_pull.hpp [2:4]
+ boost/coroutine/detail/trampoline_push.hpp [2:4]
+ boost/coroutine/exceptions.hpp [2:4]
+ boost/coroutine/flags.hpp [2:4]
+ boost/coroutine/posix/protected_stack_allocator.hpp [2:4]
+ boost/coroutine/posix/segmented_stack_allocator.hpp [2:4]
+ boost/coroutine/protected_stack_allocator.hpp [2:4]
+ boost/coroutine/segmented_stack_allocator.hpp [2:4]
+ boost/coroutine/stack_allocator.hpp [2:4]
+ boost/coroutine/stack_context.hpp [2:4]
+ boost/coroutine/stack_traits.hpp [2:4]
+ boost/coroutine/standard_stack_allocator.hpp [2:4]
+ boost/coroutine/symmetric_coroutine.hpp [2:4]
+ boost/coroutine/windows/protected_stack_allocator.hpp [2:4]
+ libs/context/src/asm/jump_arm_aapcs_elf_gas.S [2:4]
+ libs/context/src/asm/jump_arm_aapcs_macho_gas.S [2:4]
+ libs/context/src/asm/jump_arm_aapcs_pe_armasm.asm [2:4]
+ libs/context/src/asm/jump_arm_aapcs_pe_armasm.masm [2:4]
+ libs/context/src/asm/jump_i386_ms_pe_gas.asm [2:5]
+ libs/context/src/asm/jump_i386_ms_pe_masm.asm [2:4]
+ libs/context/src/asm/jump_i386_ms_pe_masm.masm [2:4]
+ libs/context/src/asm/jump_i386_sysv_elf_gas.S [2:4]
+ libs/context/src/asm/jump_i386_sysv_macho_gas.S [2:4]
+ libs/context/src/asm/jump_mips32_o32_elf_gas.S [2:4]
+ libs/context/src/asm/jump_ppc32_sysv_elf_gas.S [2:4]
+ libs/context/src/asm/jump_ppc32_sysv_macho_gas.S [2:4]
+ libs/context/src/asm/jump_ppc32_sysv_xcoff_gas.S [2:4]
+ libs/context/src/asm/jump_ppc64_sysv_elf_gas.S [2:4]
+ libs/context/src/asm/jump_ppc64_sysv_macho_gas.S [2:4]
+ libs/context/src/asm/jump_x86_64_ms_pe_gas.asm [2:5]
+ libs/context/src/asm/jump_x86_64_ms_pe_masm.asm [2:4]
+ libs/context/src/asm/jump_x86_64_ms_pe_masm.masm [2:4]
+ libs/context/src/asm/jump_x86_64_sysv_elf_gas.S [2:4]
+ libs/context/src/asm/jump_x86_64_sysv_macho_gas.S [2:4]
+ libs/context/src/asm/make_arm_aapcs_elf_gas.S [2:4]
+ libs/context/src/asm/make_arm_aapcs_macho_gas.S [2:4]
+ libs/context/src/asm/make_arm_aapcs_pe_armasm.asm [2:4]
+ libs/context/src/asm/make_arm_aapcs_pe_armasm.masm [2:4]
+ libs/context/src/asm/make_i386_ms_pe_gas.asm [2:5]
+ libs/context/src/asm/make_i386_ms_pe_masm.asm [2:4]
+ libs/context/src/asm/make_i386_ms_pe_masm.masm [2:4]
+ libs/context/src/asm/make_i386_sysv_elf_gas.S [2:4]
+ libs/context/src/asm/make_i386_sysv_macho_gas.S [2:4]
+ libs/context/src/asm/make_mips32_o32_elf_gas.S [2:4]
+ libs/context/src/asm/make_ppc32_sysv_elf_gas.S [2:4]
+ libs/context/src/asm/make_ppc32_sysv_macho_gas.S [2:4]
+ libs/context/src/asm/make_ppc32_sysv_xcoff_gas.S [2:4]
+ libs/context/src/asm/make_ppc64_sysv_elf_gas.S [2:4]
+ libs/context/src/asm/make_ppc64_sysv_macho_gas.S [2:4]
+ libs/context/src/asm/make_x86_64_ms_pe_gas.asm [2:5]
+ libs/context/src/asm/make_x86_64_ms_pe_masm.asm [2:4]
+ libs/context/src/asm/make_x86_64_ms_pe_masm.masm [2:4]
+ libs/context/src/asm/make_x86_64_sysv_elf_gas.S [2:4]
+ libs/context/src/asm/make_x86_64_sysv_macho_gas.S [2:4]
+ libs/context/src/asm/ontop_arm_aapcs_elf_gas.S [2:4]
+ libs/context/src/asm/ontop_arm_aapcs_macho_gas.S [2:4]
+ libs/context/src/asm/ontop_arm_aapcs_pe_armasm.asm [2:4]
+ libs/context/src/asm/ontop_arm_aapcs_pe_armasm.masm [2:4]
+ libs/context/src/asm/ontop_i386_ms_pe_gas.asm [2:5]
+ libs/context/src/asm/ontop_i386_ms_pe_masm.asm [2:4]
+ libs/context/src/asm/ontop_i386_ms_pe_masm.masm [2:4]
+ libs/context/src/asm/ontop_i386_sysv_elf_gas.S [2:4]
+ libs/context/src/asm/ontop_i386_sysv_macho_gas.S [2:4]
+ libs/context/src/asm/ontop_mips32_o32_elf_gas.S [2:4]
+ libs/context/src/asm/ontop_ppc32_sysv_elf_gas.S [2:4]
+ libs/context/src/asm/ontop_ppc32_sysv_macho_gas.S [2:4]
+ libs/context/src/asm/ontop_ppc32_sysv_xcoff_gas.S [2:4]
+ libs/context/src/asm/ontop_ppc64_sysv_elf_gas.S [2:4]
+ libs/context/src/asm/ontop_ppc64_sysv_macho_gas.S [2:4]
+ libs/context/src/asm/ontop_x86_64_ms_pe_gas.asm [2:5]
+ libs/context/src/asm/ontop_x86_64_ms_pe_masm.asm [2:4]
+ libs/context/src/asm/ontop_x86_64_ms_pe_masm.masm [2:4]
+ libs/context/src/asm/ontop_x86_64_sysv_elf_gas.S [2:4]
+ libs/context/src/asm/ontop_x86_64_sysv_macho_gas.S [2:4]
+ libs/context/src/execution_context.cpp [2:4]
+ libs/context/src/untested.cpp [2:4]
+ libs/coroutine/src/detail/coroutine_context.cpp [2:4]
+ libs/coroutine/src/exceptions.cpp [2:4]
+ libs/coroutine/src/posix/stack_traits.cpp [2:4]
+ libs/coroutine/src/windows/stack_traits.cpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 771f0ca891cf31e52365f2c5c7ea5ac9
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/detail/suffix.hpp at line 14
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/detail/suffix.hpp [4:14]
+
+KEEP COPYRIGHT_SERVICE_LABEL 77248a96a79940a9fa1d82b59477d791
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+ // Copyright (c) 2005 Stefan Arentz (stefan at soze dot com)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/asio/detail/impl/kqueue_reactor.hpp [5:6]
+ boost/asio/detail/impl/kqueue_reactor.ipp [5:6]
+ boost/asio/detail/kqueue_reactor.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 774a1ad0f39541627409ed7b8900a512
+BELONGS ya.make
+ License text:
+ // Copyright Aleksey Gurtovoy 2001-2004
+ // Copyright Peter Dimov 2001-2003
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/aux_/preprocessed/bcc/placeholders.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc551/placeholders.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc_pre590/placeholders.hpp [2:3]
+ boost/mpl/aux_/preprocessed/dmc/placeholders.hpp [2:3]
+ boost/mpl/aux_/preprocessed/gcc/placeholders.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc60/placeholders.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc70/placeholders.hpp [2:3]
+ boost/mpl/aux_/preprocessed/mwcw/placeholders.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ctps/placeholders.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ttp/placeholders.hpp [2:3]
+ boost/mpl/aux_/preprocessed/plain/placeholders.hpp [2:3]
+ boost/mpl/placeholders.hpp [9:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL 774dfa6dd9adb18e5d17bc88b05266a7
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2006 Xiaogang Zhang
+ // Copyright (c) 2017 John Maddock
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/detail/bessel_i0.hpp [1:4]
+ boost/math/special_functions/detail/bessel_i1.hpp [1:3]
+ boost/math/special_functions/detail/bessel_k0.hpp [1:4]
+ boost/math/special_functions/detail/bessel_k1.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 776cc7e58c2d3434091396c0c43068d3
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/smart_ptr/detail/bad_weak_ptr.hpp at line 8, boost/interprocess/sync/spin/interprocess_barrier.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/interprocess/smart_ptr/detail/bad_weak_ptr.hpp [5:8]
+ boost/interprocess/sync/spin/interprocess_barrier.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7776713baab3f172d0d3c56b0cf3c911
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/move/algo/detail/pdqsort.hpp [24:28]
+
+KEEP COPYRIGHT_SERVICE_LABEL 778d126a908ae2e1cc990627956713b8
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2006 Piotr Wyderski
+ // Copyright (c) 2006 Tomas Puverle
+ // Copyright (c) 2006 Peter Dimov
+ // Copyright (c) 2011 Emil Dotchevski
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp [11:14]
+
+KEEP COPYRIGHT_SERVICE_LABEL 779e4efde656444e177d7d0cd7c60328
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2011-2016 Adam Wulkiewicz, Lodz, Poland.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/index/equal_to.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 779f3f74aa28c6ec9cbf99f210980137
+BELONGS ya.make
+ License text:
+ // Copyright 2007 Stanford University
+ // Authors: David Gleich
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/core_numbers.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 77be0e4f90c30bc5049b8af1874ed858
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2001-2011 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/lex/lexer/lexertl/wrap_action.hpp [2:4]
+ boost/spirit/home/qi/detail/assign_to.hpp [2:4]
+ boost/spirit/home/qi/detail/construct.hpp [2:3]
+ boost/spirit/home/qi/numeric/detail/real_impl.hpp [2:4]
+ boost/spirit/home/support/action_dispatch.hpp [2:4]
+ boost/spirit/home/support/container.hpp [2:4]
+ boost/spirit/home/support/detail/endian.hpp [1:2]
+ boost/spirit/home/support/detail/pow10.hpp [2:4]
+ boost/spirit/home/support/detail/scoped_enum_emulation.hpp [1:2]
+ boost/spirit/home/support/detail/sign.hpp [2:4]
+ boost/spirit/home/support/iterators/look_ahead.hpp [1:3]
+ boost/spirit/home/support/iterators/multi_pass.hpp [1:3]
+ boost/spirit/home/support/iterators/multi_pass_fwd.hpp [2:4]
+ boost/spirit/home/x3/support/numeric_utils/extract_real.hpp [2:4]
+ boost/spirit/home/x3/support/numeric_utils/pow10.hpp [2:4]
+ boost/spirit/home/x3/support/numeric_utils/sign.hpp [2:4]
+ boost/spirit/home/x3/support/traits/container_traits.hpp [2:4]
+ boost/spirit/home/x3/support/traits/optional_traits.hpp [2:4]
+ boost/spirit/home/x3/support/traits/value_traits.hpp [2:4]
+ boost/spirit/home/x3/version.hpp [2:4]
+ boost/spirit/include/karma.hpp [2:4]
+ boost/spirit/include/karma_action.hpp [2:4]
+ boost/spirit/include/karma_alternative.hpp [2:4]
+ boost/spirit/include/karma_and_predicate.hpp [2:4]
+ boost/spirit/include/karma_attr_cast.hpp [2:4]
+ boost/spirit/include/karma_auto.hpp [2:4]
+ boost/spirit/include/karma_auxiliary.hpp [2:4]
+ boost/spirit/include/karma_binary.hpp [2:4]
+ boost/spirit/include/karma_bool.hpp [2:4]
+ boost/spirit/include/karma_buffer.hpp [2:4]
+ boost/spirit/include/karma_center_alignment.hpp [2:4]
+ boost/spirit/include/karma_char.hpp [2:4]
+ boost/spirit/include/karma_char_.hpp [2:4]
+ boost/spirit/include/karma_char_class.hpp [2:4]
+ boost/spirit/include/karma_columns.hpp [2:4]
+ boost/spirit/include/karma_delimit.hpp [2:4]
+ boost/spirit/include/karma_directive.hpp [2:4]
+ boost/spirit/include/karma_domain.hpp [2:4]
+ boost/spirit/include/karma_eol.hpp [2:4]
+ boost/spirit/include/karma_eps.hpp [2:4]
+ boost/spirit/include/karma_format.hpp [2:4]
+ boost/spirit/include/karma_format_attr.hpp [2:4]
+ boost/spirit/include/karma_format_auto.hpp [2:4]
+ boost/spirit/include/karma_generate.hpp [2:4]
+ boost/spirit/include/karma_generate_attr.hpp [2:4]
+ boost/spirit/include/karma_generate_auto.hpp [2:4]
+ boost/spirit/include/karma_int.hpp [2:4]
+ boost/spirit/include/karma_kleene.hpp [2:4]
+ boost/spirit/include/karma_lazy.hpp [2:4]
+ boost/spirit/include/karma_left_alignment.hpp [2:4]
+ boost/spirit/include/karma_list.hpp [2:4]
+ boost/spirit/include/karma_maxwidth.hpp [2:4]
+ boost/spirit/include/karma_no_delimit.hpp [2:4]
+ boost/spirit/include/karma_nonterminal.hpp [2:4]
+ boost/spirit/include/karma_not_predicate.hpp [2:4]
+ boost/spirit/include/karma_numeric.hpp [2:4]
+ boost/spirit/include/karma_omit.hpp [2:4]
+ boost/spirit/include/karma_operator.hpp [2:4]
+ boost/spirit/include/karma_optional.hpp [2:4]
+ boost/spirit/include/karma_phoenix_attributes.hpp [2:4]
+ boost/spirit/include/karma_plus.hpp [2:4]
+ boost/spirit/include/karma_real.hpp [2:4]
+ boost/spirit/include/karma_repeat.hpp [2:4]
+ boost/spirit/include/karma_right_alignment.hpp [2:4]
+ boost/spirit/include/karma_sequence.hpp [2:4]
+ boost/spirit/include/karma_stream.hpp [2:4]
+ boost/spirit/include/karma_strict_relaxed.hpp [2:4]
+ boost/spirit/include/karma_string.hpp [2:4]
+ boost/spirit/include/karma_symbols.hpp [2:4]
+ boost/spirit/include/karma_uint.hpp [2:4]
+ boost/spirit/include/karma_upper_lower_case.hpp [2:4]
+ boost/spirit/include/karma_verbatim.hpp [2:4]
+ boost/spirit/include/karma_what.hpp [2:4]
+ boost/spirit/include/lex.hpp [2:4]
+ boost/spirit/include/lex_domain.hpp [2:4]
+ boost/spirit/include/lex_lexer.hpp [2:4]
+ boost/spirit/include/lex_lexertl.hpp [2:4]
+ boost/spirit/include/lex_lexertl_position_token.hpp [2:4]
+ boost/spirit/include/lex_lexertl_token.hpp [2:4]
+ boost/spirit/include/lex_static_lexertl.hpp [2:4]
+ boost/spirit/include/lex_tokenize_and_parse.hpp [2:4]
+ boost/spirit/include/phoenix.hpp [2:4]
+ boost/spirit/include/phoenix_algorithm.hpp [2:4]
+ boost/spirit/include/phoenix_bind.hpp [2:4]
+ boost/spirit/include/phoenix_container.hpp [2:4]
+ boost/spirit/include/phoenix_core.hpp [2:4]
+ boost/spirit/include/phoenix_function.hpp [2:4]
+ boost/spirit/include/phoenix_fusion.hpp [2:4]
+ boost/spirit/include/phoenix_limits.hpp [2:4]
+ boost/spirit/include/phoenix_object.hpp [2:4]
+ boost/spirit/include/phoenix_operator.hpp [2:4]
+ boost/spirit/include/phoenix_scope.hpp [2:4]
+ boost/spirit/include/phoenix_statement.hpp [2:4]
+ boost/spirit/include/phoenix_stl.hpp [2:4]
+ boost/spirit/include/phoenix_version.hpp [2:4]
+ boost/spirit/include/qi.hpp [2:4]
+ boost/spirit/include/qi_action.hpp [2:4]
+ boost/spirit/include/qi_alternative.hpp [2:4]
+ boost/spirit/include/qi_and_predicate.hpp [2:4]
+ boost/spirit/include/qi_as_string.hpp [2:4]
+ boost/spirit/include/qi_attr.hpp [2:4]
+ boost/spirit/include/qi_attr_cast.hpp [2:4]
+ boost/spirit/include/qi_auto.hpp [2:4]
+ boost/spirit/include/qi_auxiliary.hpp [2:4]
+ boost/spirit/include/qi_binary.hpp [2:4]
+ boost/spirit/include/qi_bool.hpp [2:4]
+ boost/spirit/include/qi_char.hpp [2:4]
+ boost/spirit/include/qi_char_.hpp [2:4]
+ boost/spirit/include/qi_char_class.hpp [2:4]
+ boost/spirit/include/qi_core.hpp [2:4]
+ boost/spirit/include/qi_difference.hpp [2:4]
+ boost/spirit/include/qi_directive.hpp [2:4]
+ boost/spirit/include/qi_domain.hpp [2:4]
+ boost/spirit/include/qi_eoi.hpp [2:4]
+ boost/spirit/include/qi_eol.hpp [2:4]
+ boost/spirit/include/qi_eps.hpp [2:4]
+ boost/spirit/include/qi_expect.hpp [2:4]
+ boost/spirit/include/qi_grammar.hpp [2:4]
+ boost/spirit/include/qi_hold.hpp [2:4]
+ boost/spirit/include/qi_int.hpp [2:4]
+ boost/spirit/include/qi_kleene.hpp [2:4]
+ boost/spirit/include/qi_lazy.hpp [2:4]
+ boost/spirit/include/qi_lexeme.hpp [2:4]
+ boost/spirit/include/qi_list.hpp [2:4]
+ boost/spirit/include/qi_lit.hpp [2:4]
+ boost/spirit/include/qi_match.hpp [2:4]
+ boost/spirit/include/qi_match_attr.hpp [2:4]
+ boost/spirit/include/qi_match_auto.hpp [2:4]
+ boost/spirit/include/qi_no_case.hpp [2:4]
+ boost/spirit/include/qi_nonterminal.hpp [2:4]
+ boost/spirit/include/qi_not_predicate.hpp [2:4]
+ boost/spirit/include/qi_numeric.hpp [2:4]
+ boost/spirit/include/qi_omit.hpp [2:4]
+ boost/spirit/include/qi_operator.hpp [2:4]
+ boost/spirit/include/qi_optional.hpp [2:4]
+ boost/spirit/include/qi_parse.hpp [2:4]
+ boost/spirit/include/qi_parse_attr.hpp [2:4]
+ boost/spirit/include/qi_parse_auto.hpp [2:4]
+ boost/spirit/include/qi_permutation.hpp [2:4]
+ boost/spirit/include/qi_plus.hpp [2:4]
+ boost/spirit/include/qi_raw.hpp [2:4]
+ boost/spirit/include/qi_real.hpp [2:4]
+ boost/spirit/include/qi_repeat.hpp [2:4]
+ boost/spirit/include/qi_rule.hpp [2:4]
+ boost/spirit/include/qi_sequence.hpp [2:4]
+ boost/spirit/include/qi_sequential_or.hpp [2:4]
+ boost/spirit/include/qi_skip.hpp [2:4]
+ boost/spirit/include/qi_stream.hpp [2:4]
+ boost/spirit/include/qi_string.hpp [2:4]
+ boost/spirit/include/qi_symbols.hpp [2:4]
+ boost/spirit/include/qi_uint.hpp [2:4]
+ boost/spirit/include/qi_what.hpp [2:4]
+ boost/spirit/include/support.hpp [2:4]
+ boost/spirit/include/support_any.hpp [2:4]
+ boost/spirit/include/support_any_if.hpp [2:4]
+ boost/spirit/include/support_any_if_ns.hpp [2:4]
+ boost/spirit/include/support_any_if_ns_so.hpp [2:4]
+ boost/spirit/include/support_any_ns.hpp [2:4]
+ boost/spirit/include/support_any_ns_so.hpp [2:4]
+ boost/spirit/include/support_argument.hpp [2:4]
+ boost/spirit/include/support_ascii.hpp [2:4]
+ boost/spirit/include/support_attributes.hpp [2:4]
+ boost/spirit/include/support_char_class.hpp [2:4]
+ boost/spirit/include/support_iso8859_1.hpp [2:4]
+ boost/spirit/include/support_istream_iterator.hpp [2:4]
+ boost/spirit/include/support_locals.hpp [2:4]
+ boost/spirit/include/support_look_ahead.hpp [2:4]
+ boost/spirit/include/support_modify.hpp [2:4]
+ boost/spirit/include/support_multi_pass.hpp [2:4]
+ boost/spirit/include/support_multi_pass_fwd.hpp [2:4]
+ boost/spirit/include/support_standard.hpp [2:4]
+ boost/spirit/include/support_standard_wide.hpp [2:4]
+ boost/spirit/include/support_string_traits.hpp [2:4]
+ boost/spirit/include/support_unused.hpp [2:4]
+ boost/spirit/include/version.hpp [2:4]
+ boost/spirit/repository/include/karma.hpp [2:4]
+ boost/spirit/repository/include/karma_confix.hpp [2:4]
+ boost/spirit/repository/include/karma_directive.hpp [2:4]
+ boost/spirit/repository/include/qi.hpp [2:4]
+ boost/spirit/repository/include/qi_confix.hpp [2:4]
+ boost/spirit/repository/include/qi_directive.hpp [2:4]
+ boost/spirit/repository/include/qi_distinct.hpp [2:4]
+ boost/spirit/repository/include/qi_flush_multi_pass.hpp [2:4]
+ boost/spirit/repository/include/qi_iter_pos.hpp [2:4]
+ boost/spirit/repository/include/qi_primitive.hpp [2:4]
+ boost/spirit/version.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 77f9dd6047adac3aadfc4e429a97736b
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+ // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/asio/basic_serial_port.hpp [5:6]
+ boost/asio/detail/impl/reactive_serial_port_service.ipp [5:6]
+ boost/asio/detail/impl/win_iocp_handle_service.ipp [5:6]
+ boost/asio/detail/impl/win_iocp_serial_port_service.ipp [5:6]
+ boost/asio/detail/reactive_serial_port_service.hpp [5:6]
+ boost/asio/detail/win_iocp_handle_read_op.hpp [5:6]
+ boost/asio/detail/win_iocp_handle_service.hpp [5:6]
+ boost/asio/detail/win_iocp_handle_write_op.hpp [5:6]
+ boost/asio/detail/win_iocp_serial_port_service.hpp [5:6]
+ boost/asio/impl/serial_port_base.hpp [5:6]
+ boost/asio/impl/serial_port_base.ipp [5:6]
+ boost/asio/serial_port.hpp [5:6]
+ boost/asio/serial_port_base.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7845e88cc34740c56fdf956a3c7bf298
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2005 Arkadiy Vertleyb, Peder Holt.
+ // Use, modification and distribution is subject to the Boost Software
+ // License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/typeof/std/bitset.hpp [1:3]
+ boost/typeof/std/complex.hpp [1:3]
+ boost/typeof/std/deque.hpp [1:3]
+ boost/typeof/std/fstream.hpp [1:3]
+ boost/typeof/std/functional.hpp [1:3]
+ boost/typeof/std/iostream.hpp [1:3]
+ boost/typeof/std/istream.hpp [1:3]
+ boost/typeof/std/iterator.hpp [1:3]
+ boost/typeof/std/list.hpp [1:3]
+ boost/typeof/std/locale.hpp [1:3]
+ boost/typeof/std/map.hpp [1:3]
+ boost/typeof/std/memory.hpp [1:3]
+ boost/typeof/std/ostream.hpp [1:3]
+ boost/typeof/std/queue.hpp [1:3]
+ boost/typeof/std/set.hpp [1:3]
+ boost/typeof/std/sstream.hpp [1:3]
+ boost/typeof/std/stack.hpp [1:3]
+ boost/typeof/std/streambuf.hpp [1:3]
+ boost/typeof/std/string.hpp [1:3]
+ boost/typeof/std/utility.hpp [1:3]
+ boost/typeof/std/valarray.hpp [1:3]
+ boost/typeof/std/vector.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7847dd132299dd522b778f700587670d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/os/bsd/bsdi.h at line 4, boost/predef/os/bsd/dragonfly.h at line 4, boost/predef/os/bsd/free.h at line 4, boost/predef/os/bsd/net.h at line 4, boost/predef/os/bsd/open.h at line 4
+ License text:
+ Copyright Rene Rivera 2012-2015
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/predef/os/bsd/bsdi.h [2:4]
+ boost/predef/os/bsd/dragonfly.h [2:4]
+ boost/predef/os/bsd/free.h [2:4]
+ boost/predef/os/bsd/net.h [2:4]
+ boost/predef/os/bsd/open.h [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 78ae7fd7f341987282f7c6997978b659
+BELONGS ya.make
+ License text:
+ // Copyright Peter Dimov 2000-2002
+ // Copyright Aleksey Gurtovoy 2000-2004
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/list/aux_/numbered.hpp [4:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 78bb9d47619488747a3d5ed32579c107
+BELONGS ya.make
+ License text:
+ Copyright 2012-2015 Glen Joseph Fernandes
+ (glenjofe@gmail.com)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/make_unique.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 78e0a9a9366ca52bc14963dd0ac2db58
+BELONGS ya.make
+ License text:
+ Copyright (c) 2008-2009: Joachim Faulhaber
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/icl/detail/element_comparer.hpp [2:2]
+ boost/icl/detail/interval_morphism.hpp [2:2]
+ boost/icl/detail/interval_subset_comparer.hpp [2:2]
+ boost/icl/detail/subset_comparer.hpp [2:2]
+ boost/icl/gregorian.hpp [2:2]
+ boost/icl/ptime.hpp [2:2]
+ boost/icl/rational.hpp [2:2]
+ boost/icl/type_traits/codomain_type_of.hpp [2:2]
+ boost/icl/type_traits/difference.hpp [2:2]
+ boost/icl/type_traits/difference_type_of.hpp [2:2]
+ boost/icl/type_traits/domain_type_of.hpp [2:2]
+ boost/icl/type_traits/element_type_of.hpp [2:2]
+ boost/icl/type_traits/has_inverse.hpp [2:2]
+ boost/icl/type_traits/has_set_semantics.hpp [2:2]
+ boost/icl/type_traits/identity_element.hpp [2:2]
+ boost/icl/type_traits/is_associative_element_container.hpp [2:2]
+ boost/icl/type_traits/is_combinable.hpp [2:2]
+ boost/icl/type_traits/is_concept_equivalent.hpp [2:2]
+ boost/icl/type_traits/is_continuous.hpp [2:2]
+ boost/icl/type_traits/is_discrete.hpp [2:2]
+ boost/icl/type_traits/is_element_container.hpp [2:2]
+ boost/icl/type_traits/is_interval_container.hpp [2:2]
+ boost/icl/type_traits/is_interval_joiner.hpp [2:2]
+ boost/icl/type_traits/is_interval_separator.hpp [2:2]
+ boost/icl/type_traits/is_interval_splitter.hpp [2:2]
+ boost/icl/type_traits/is_map.hpp [2:2]
+ boost/icl/type_traits/is_set.hpp [2:2]
+ boost/icl/type_traits/is_total.hpp [2:2]
+ boost/icl/type_traits/no_type.hpp [2:2]
+ boost/icl/type_traits/rep_type_of.hpp [2:2]
+ boost/icl/type_traits/segment_type_of.hpp [2:2]
+ boost/icl/type_traits/size.hpp [2:2]
+ boost/icl/type_traits/size_type_of.hpp [2:2]
+ boost/icl/type_traits/value_size.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 78ecae5a6301c9faa651a8f6d052b448
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/catch_exceptions.hpp at line 5
+ License text:
+ // Copyright Beman Dawes 1995-2001. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/detail/catch_exceptions.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 78f52b44d5b893e606b8a11043d0353f
+BELONGS ya.make
+ License text:
+ // (C) Copyright 2005-8 Anthony Williams
+ // (C) Copyright 2012 Vicente J. Botet Escriba
+ // (C) Copyright 2017 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/win32/interlocked_read.hpp [6:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 79167f993b43429aaf8287ed3b8b9fb1
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001-2002 Chuck Allison and Jeremy Siek
+ // Copyright (c) 2003-2006, 2008 Gennaro Prota
+ // Copyright (c) 2014 Ahmed Charles
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/dynamic_bitset/dynamic_bitset.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 791de63e8a85039486e8b095c3912ad1
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/archive/detail/utf8_codecvt_facet.hpp [1:3]
+ boost/detail/utf8_codecvt_facet.hpp [1:3]
+ boost/detail/utf8_codecvt_facet.ipp [4:6]
+ boost/filesystem/detail/utf8_codecvt_facet.hpp [1:2]
+ boost/program_options/detail/utf8_codecvt_facet.hpp [1:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 792451df1de91afb23ff290d2f633d82
+BELONGS ya.make
+ License text:
+ Copyright (C) 2002 Brad King (brad.king@kitware.com)
+ Douglas Gregor (gregod@cs.rpi.edu)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/core/addressof.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 797872212de35a9174f5dfedc43efab7
+BELONGS ya.make
+ License text:
+ // (C) Copyright John Maddock 2006-8.
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/bindings/detail/big_digamma.hpp [1:3]
+ boost/math/bindings/detail/big_lanczos.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 797b8159646b0e965f8cd05df63d1074
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/comeau.hpp [1:8]
+ boost/config/compiler/intel.hpp [1:10]
+ boost/config/compiler/metrowerks.hpp [1:8]
+ boost/config/compiler/visualc.hpp [1:8]
+ boost/config/stdlib/dinkumware.hpp [1:7]
+ boost/filesystem/detail/macro_value.hpp [3:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 797f1af06a5fd55b124006bf0cd1aa45
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2000, Frank Warmerdam
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/srs/projections/impl/pj_transform.hpp [19:19]
+ boost/geometry/srs/projections/proj/latlong.hpp [29:30]
+
+KEEP COPYRIGHT_SERVICE_LABEL 799e2277f428cd7c93175030f2e04ad8
+BELONGS ya.make
+ License text:
+ // Copyright 2014 Renato Tegon Forti, Antony Polukhin.
+ // Copyright 2015 Antony Polukhin.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/dll/alias.hpp [1:2]
+ boost/dll/detail/elf_info.hpp [1:2]
+ boost/dll/detail/macho_info.hpp [1:2]
+ boost/dll/detail/pe_info.hpp [1:2]
+ boost/dll/detail/posix/program_location_impl.hpp [1:2]
+ boost/dll/detail/x_info_interface.hpp [1:2]
+ boost/dll/library_info.hpp [1:2]
+ boost/winapi/dll.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 79b802920f4aa6ebda770bbdbd8f62f3
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/assign.hpp [3:6]
+ boost/geometry/algorithms/crosses.hpp [3:6]
+ boost/geometry/algorithms/detail/distance/interface.hpp [3:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 79d54f906a15b95b0be8eb7f30091ba2
+BELONGS ya.make
+ License text:
+ Copyright (c) 1998-2003 Joel de Guzman
+ Copyright (c) 2001-2003 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/core/primitives/impl/numerics.ipp [2:4]
+ boost/spirit/home/classic/core/primitives/numerics.hpp [2:4]
+ boost/spirit/home/classic/meta.hpp [2:4]
+ boost/spirit/home/classic/version.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 79dab007ee72a950603c97c9b2331fb7
+BELONGS ya.make
+ License text:
+ // Copyright 2015-2017 Peter Dimov.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mp11/algorithm.hpp [4:4]
+ boost/mp11/detail/mp_append.hpp [4:4]
+ boost/mp11/detail/mp_fold.hpp [4:4]
+ boost/mp11/detail/mp_min_element.hpp [4:4]
+ boost/mp11/detail/mp_void.hpp [4:4]
+ boost/mp11/function.hpp [4:4]
+ boost/mp11/list.hpp [4:4]
+ boost/mp11/map.hpp [4:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 79e7551f02d99afc8dd82a857068d461
+BELONGS ya.make
+ License text:
+ // Copyright Douglas Gregor 2004.
+ // Copyright 2005 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/function_equal.hpp [1:2]
+ boost/utility/detail/result_of_iterate.hpp [3:5]
+ boost/utility/result_of.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7a33e6d3b977bb8a826c9f04ef00ba08
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2015-2016 Vinnie Falco (vinnie dot falco at gmail dot com)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/beast/core/file.hpp [2:2]
+ boost/beast/core/file_base.hpp [2:2]
+ boost/beast/core/file_posix.hpp [2:2]
+ boost/beast/core/file_stdio.hpp [2:2]
+ boost/beast/core/file_win32.hpp [2:2]
+ boost/beast/core/impl/file_posix.ipp [2:2]
+ boost/beast/core/impl/file_stdio.ipp [2:2]
+ boost/beast/core/impl/file_win32.ipp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7a5840f2607b7eac3bcd76043d21eb7e
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/cpp_dec_float.hpp at line 5, boost/multiprecision/detail/functions/pow.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/multiprecision/cpp_dec_float.hpp [2:5]
+ boost/multiprecision/detail/functions/pow.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7a6336ff9479938d79c2d6368e2f0c1b
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2006, 2010.
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/factorials.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7a77c5a5c02e42b779cbc7701c396c44
+BELONGS ya.make
+ License text:
+ // (C) Copyright Bryce Lelbach 2011
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/pathscale.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7a82760a876a7d2d125ec5b9c133a6b5
+BELONGS ya.make
+ License text:
+ // Copyright Eric Niebler 2009
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/limits/string.hpp [5:5]
+ boost/mpl/string.hpp [5:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7a8a725a54c9a5f6eeaba5650a24fad4
+BELONGS ya.make
+ License text:
+ // This file was modified by Oracle on 2015.
+ // Modifications copyright (c) 2015, Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/expand/implementation.hpp [8:9]
+ boost/geometry/algorithms/detail/overlay/intersection_box_box.hpp [5:6]
+ boost/geometry/algorithms/detail/throw_on_empty_input.hpp [8:9]
+ boost/geometry/algorithms/dispatch/envelope.hpp [7:8]
+ boost/geometry/algorithms/envelope.hpp [7:8]
+ boost/geometry/algorithms/expand.hpp [8:9]
+ boost/geometry/algorithms/not_implemented.hpp [7:8]
+ boost/geometry/core/radian_access.hpp [7:8]
+ boost/geometry/core/ring_type.hpp [7:8]
+ boost/geometry/geometries/adapted/boost_fusion.hpp [6:7]
+ boost/geometry/policies/robustness/get_rescale_policy.hpp [8:9]
+ boost/geometry/strategies/agnostic/simplify_douglas_peucker.hpp [6:7]
+ boost/geometry/strategies/cartesian/buffer_end_round.hpp [5:6]
+ boost/geometry/strategies/cartesian/buffer_join_round.hpp [5:6]
+ boost/geometry/strategies/cartesian/buffer_point_circle.hpp [5:6]
+ boost/geometry/strategies/cartesian/centroid_weighted_length.hpp [6:7]
+ boost/geometry/strategies/cartesian/side_of_intersection.hpp [5:6]
+ boost/geometry/util/combine_if.hpp [5:6]
+ boost/geometry/util/compress_variant.hpp [7:8]
+ boost/geometry/util/transform_variant.hpp [7:8]
+ boost/geometry/views/detail/indexed_point_view.hpp [8:9]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7a92fca234fbb2ec58839a022533d6cb
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multi_index/detail/archive_constructed.hpp at line 3, boost/multi_index/detail/ignore_wstrict_aliasing.hpp at line 3, boost/multi_index/detail/index_node_base.hpp at line 3, boost/multi_index/detail/restore_wstrict_aliasing.hpp at line 3, boost/multi_index/detail/seq_index_ops.hpp at line 3
+ License text:
+ /* Copyright 2003-2016 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/multi_index/detail/archive_constructed.hpp [1:3]
+ boost/multi_index/detail/ignore_wstrict_aliasing.hpp [1:3]
+ boost/multi_index/detail/index_node_base.hpp [1:3]
+ boost/multi_index/detail/restore_wstrict_aliasing.hpp [1:3]
+ boost/multi_index/detail/seq_index_ops.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7a971e7bc12547235a5e108f8c16bed1
+BELONGS ya.make
+ License text:
+ * Copyright 2014 Antony Polukhin
+ * Copyright 2015 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/winapi/crypt.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7ae8b16c39fc36f50a0a218368b84a03
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/progress.hpp at line 5, boost/timer.hpp at line 5
+ License text:
+ // Copyright Beman Dawes 1994-99. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/progress.hpp [3:5]
+ boost/timer.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7aedad2c03ecc61a2ef6e770da75eaf2
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/limits.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/limits.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7afb00ea7606a958a28cf267a7da1739
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2013-2017 Antony Polukhin
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/variant/polymorphic_get.hpp [6:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7afcace3c11d1de9ed95382d1d122b39
+BELONGS ya.make
+ License text:
+ // (C) Copyright Ion Gaztanaga 2013-2013
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/container/options.hpp [3:3]
+ boost/interprocess/sync/spin/wait.hpp [3:6]
+ boost/intrusive/pack_options.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7b1597e0a6608fd65ae3120352454957
+BELONGS libs/python/ya.make ya.make
+ License text:
+ // Copyright (c) 2004 Jonathan Brandmeyer
+ // Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/distributions/pareto.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7b92eb65ad1bab8707b8638119e43870
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/median.hpp at line 6, boost/accumulators/statistics/weighted_mean.hpp at line 6, boost/accumulators/statistics/weighted_median.hpp at line 6, boost/accumulators/statistics/weighted_sum.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/accumulators/statistics/median.hpp [4:6]
- boost/accumulators/statistics/weighted_mean.hpp [4:6]
- boost/accumulators/statistics/weighted_median.hpp [4:6]
- boost/accumulators/statistics/weighted_sum.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7c467f819c9dc791f8ac52072e9805bc
-BELONGS ya.make
- License text:
- * Copyright 2016 Klemens D. Morgenstern
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/winapi/environment.hpp [2:2]
- boost/winapi/get_system_directory.hpp [2:2]
- boost/winapi/handle_info.hpp [2:2]
- boost/winapi/jobs.hpp [2:2]
- boost/winapi/overlapped.hpp [2:2]
- boost/winapi/pipes.hpp [2:3]
- boost/winapi/priority_class.hpp [2:3]
- boost/winapi/process.hpp [2:3]
- boost/winapi/shell.hpp [2:2]
- boost/winapi/show_window.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7c6b6f9c2be387cd309bd2ae2f42487f
-BELONGS ya.make
- License text:
- Copyright 2010-2013 Mario Mulansky
- Copyright 2010-2011 Karsten Ahnert
- Copyright 2013 Kyle Lutz
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/external/thrust/thrust_algebra.hpp [9:11]
- boost/numeric/odeint/external/thrust/thrust_resize.hpp [9:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7c79be4cd24c7aa3714068d19cb9fc44
-BELONGS ya.make
- License text:
- // Copyright Aleksey Gurtovoy 2008
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/aux_/config/bcc.hpp [5:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7c7c6a82cb1c8bc97100ce19df46e85d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/archive_input_unordered_map.hpp at line 16, boost/serialization/archive_input_unordered_set.hpp at line 15, boost/serialization/boost_unordered_map.hpp at line 16, boost/serialization/boost_unordered_set.hpp at line 15, boost/serialization/unordered_collections_load_imp.hpp at line 16, boost/serialization/unordered_collections_save_imp.hpp at line 15, boost/serialization/unordered_map.hpp at line 16, boost/serialization/unordered_set.hpp at line 15
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/serialization/archive_input_unordered_map.hpp [13:16]
- boost/serialization/archive_input_unordered_set.hpp [12:15]
- boost/serialization/boost_unordered_map.hpp [13:16]
- boost/serialization/boost_unordered_set.hpp [12:15]
- boost/serialization/unordered_collections_load_imp.hpp [13:16]
- boost/serialization/unordered_collections_save_imp.hpp [12:15]
- boost/serialization/unordered_map.hpp [13:16]
- boost/serialization/unordered_set.hpp [12:15]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7c9f886a710149e126f9221074953f56
-BELONGS ya.make
- License text:
- // Copyright Beman Dawes 2006, 2007
- // Copyright Christoper Kohlhoff 2007
- // Copyright Peter Dimov 2017, 2018
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/system/error_code.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7cae218a2138076c155d8b50261bee77
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/concurrent_queues/detail/sync_deque_base.hpp at line 8, boost/thread/concurrent_queues/detail/sync_queue_base.hpp at line 8
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/concurrent_queues/detail/sync_deque_base.hpp [6:8]
- boost/thread/concurrent_queues/detail/sync_queue_base.hpp [6:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7d05fc9258f12a94e2417f5baa4da3b0
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/typeof/msvc/typeof_impl.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7d17bb2579336b337d87a036e9ce244b
-BELONGS ya.make
- License text:
- // (C) Copyright John Maddock 2006.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/python/slice.hpp [4:6]
+ libs/python/src/slice.cpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7b2b40d8095f20892198b9af1ef7f149
+BELONGS libs/python/ya.make ya.make
+ License text:
+ // Copyright Peter Dimov and Multi Media Ltd 2001, 2002
+ // Copyright David Abrahams 2001
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/aux_/unwrap.hpp [5:6]
+ boost/python/converter/registry.hpp [1:3]
+ boost/python/make_constructor.hpp [1:3]
+ boost/python/make_function.hpp [1:3]
+ boost/python/module.hpp [1:3]
+ boost/python/object/class.hpp [1:3]
+ boost/python/object/class_wrapper.hpp [1:3]
+ boost/python/object/forward.hpp [1:3]
+ boost/python/object/function.hpp [1:3]
+ boost/python/object/make_holder.hpp [3:5]
+ boost/python/object/pointer_holder.hpp [3:5]
+ boost/python/object/value_holder.hpp [3:5]
+ libs/python/src/converter/registry.cpp [1:3]
+ libs/python/src/converter/type_id.cpp [1:3]
+ libs/python/src/errors.cpp [1:3]
+ libs/python/src/object/class.cpp [1:3]
+ libs/python/src/object/function.cpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7b333747aa8572c825a7efd493a9a9f8
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2017 Michel Morin.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/iterator/advance.hpp [1:1]
+ boost/iterator/distance.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7b3a92cd716462e0e8619e0728c70df0
+BELONGS ya.make
+ License text:
+ Copyright 2012-2017 Glen Joseph Fernandes
+ (glenjofe@gmail.com)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/allocate_shared_array.hpp [2:3]
+ boost/smart_ptr/make_shared_array.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7b466aae49d13e5a11c7748a662799a9
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/strategies/geographic/area.hpp [5:7]
+ boost/geometry/strategies/spherical/area.hpp [5:7]
+ boost/geometry/strategies/spherical/distance_cross_track_box_box.hpp [3:5]
+ boost/geometry/strategies/spherical/get_radius.hpp [5:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7b5b76a48b60990aebae4bceee943dc7
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2002-2003
+ // Eric Friedman, Itay Maman
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/aligned_storage.hpp [6:7]
+ boost/type_traits/aligned_storage.hpp [6:7]
+ boost/variant/detail/initializer.hpp [6:7]
+ boost/variant/detail/make_variant_list.hpp [6:7]
+ boost/variant/detail/variant_io.hpp [6:7]
+ boost/variant/recursive_wrapper.hpp [6:7]
+ boost/variant/variant.hpp [6:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7b674d228d848062b40f7b09ed2fb8d9
+BELONGS ya.make
+ License text:
+ Copyright (c) 2006 Tobias Schwinger
+ Copyright (c) 2002-2006 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/iterator/position_iterator_fwd.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7b6de4b28666620f02c795d69c510b09
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic.hpp [2:14]
+ boost/spirit/home/classic/tree/impl/tree_to_xml.ipp [2:4]
+ boost/spirit/include/classic_spirit.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7b89f27d5360ecf0ad7ed6e76aed9560
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2007.
+ // Copyright Paul A. Bristow 2007, 2009
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/distributions/pareto.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7b92eb65ad1bab8707b8638119e43870
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/median.hpp at line 6, boost/accumulators/statistics/weighted_mean.hpp at line 6, boost/accumulators/statistics/weighted_median.hpp at line 6, boost/accumulators/statistics/weighted_sum.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/accumulators/statistics/median.hpp [4:6]
+ boost/accumulators/statistics/weighted_mean.hpp [4:6]
+ boost/accumulators/statistics/weighted_median.hpp [4:6]
+ boost/accumulators/statistics/weighted_sum.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7c467f819c9dc791f8ac52072e9805bc
+BELONGS ya.make
+ License text:
+ * Copyright 2016 Klemens D. Morgenstern
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/winapi/environment.hpp [2:2]
+ boost/winapi/get_system_directory.hpp [2:2]
+ boost/winapi/handle_info.hpp [2:2]
+ boost/winapi/jobs.hpp [2:2]
+ boost/winapi/overlapped.hpp [2:2]
+ boost/winapi/pipes.hpp [2:3]
+ boost/winapi/priority_class.hpp [2:3]
+ boost/winapi/process.hpp [2:3]
+ boost/winapi/shell.hpp [2:2]
+ boost/winapi/show_window.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7c6b6f9c2be387cd309bd2ae2f42487f
+BELONGS ya.make
+ License text:
+ Copyright 2010-2013 Mario Mulansky
+ Copyright 2010-2011 Karsten Ahnert
+ Copyright 2013 Kyle Lutz
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/external/thrust/thrust_algebra.hpp [9:11]
+ boost/numeric/odeint/external/thrust/thrust_resize.hpp [9:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7c79be4cd24c7aa3714068d19cb9fc44
+BELONGS ya.make
+ License text:
+ // Copyright Aleksey Gurtovoy 2008
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/aux_/config/bcc.hpp [5:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7c7c6a82cb1c8bc97100ce19df46e85d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/archive_input_unordered_map.hpp at line 16, boost/serialization/archive_input_unordered_set.hpp at line 15, boost/serialization/boost_unordered_map.hpp at line 16, boost/serialization/boost_unordered_set.hpp at line 15, boost/serialization/unordered_collections_load_imp.hpp at line 16, boost/serialization/unordered_collections_save_imp.hpp at line 15, boost/serialization/unordered_map.hpp at line 16, boost/serialization/unordered_set.hpp at line 15
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/serialization/archive_input_unordered_map.hpp [13:16]
+ boost/serialization/archive_input_unordered_set.hpp [12:15]
+ boost/serialization/boost_unordered_map.hpp [13:16]
+ boost/serialization/boost_unordered_set.hpp [12:15]
+ boost/serialization/unordered_collections_load_imp.hpp [13:16]
+ boost/serialization/unordered_collections_save_imp.hpp [12:15]
+ boost/serialization/unordered_map.hpp [13:16]
+ boost/serialization/unordered_set.hpp [12:15]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7c9f886a710149e126f9221074953f56
+BELONGS ya.make
+ License text:
+ // Copyright Beman Dawes 2006, 2007
+ // Copyright Christoper Kohlhoff 2007
+ // Copyright Peter Dimov 2017, 2018
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/system/error_code.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7cae218a2138076c155d8b50261bee77
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/concurrent_queues/detail/sync_deque_base.hpp at line 8, boost/thread/concurrent_queues/detail/sync_queue_base.hpp at line 8
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/concurrent_queues/detail/sync_deque_base.hpp [6:8]
+ boost/thread/concurrent_queues/detail/sync_queue_base.hpp [6:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7d05fc9258f12a94e2417f5baa4da3b0
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/typeof/msvc/typeof_impl.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7d17bb2579336b337d87a036e9ce244b
+BELONGS ya.make
+ License text:
+ // (C) Copyright John Maddock 2006.
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/gcc_xml.hpp [1:3]
+ boost/math/distributions/complement.hpp [1:4]
+ boost/math/special_functions/beta.hpp [1:3]
+ boost/math/special_functions/cbrt.hpp [1:3]
+ boost/math/special_functions/detail/erf_inv.hpp [1:3]
+ boost/math/special_functions/detail/gamma_inva.hpp [1:3]
+ boost/math/special_functions/detail/ibeta_inv_ab.hpp [1:3]
+ boost/math/special_functions/detail/igamma_inverse.hpp [1:3]
+ boost/math/special_functions/detail/lanczos_sse2.hpp [1:3]
+ boost/math/special_functions/detail/lgamma_small.hpp [1:3]
+ boost/math/special_functions/digamma.hpp [1:3]
+ boost/math/special_functions/erf.hpp [1:3]
+ boost/math/special_functions/expm1.hpp [1:3]
+ boost/math/special_functions/hermite.hpp [2:4]
+ boost/math/special_functions/laguerre.hpp [2:4]
+ boost/math/special_functions/lanczos.hpp [1:3]
+ boost/math/special_functions/legendre.hpp [2:4]
+ boost/math/special_functions/powm1.hpp [1:3]
+ boost/math/special_functions/sign.hpp [1:3]
+ boost/math/special_functions/spherical_harmonic.hpp [2:4]
+ boost/math/special_functions/sqrt1pm1.hpp [1:3]
+ boost/math/special_functions/trigamma.hpp [1:3]
+ boost/math/tools/minima.hpp [1:3]
+ boost/math/tools/polynomial.hpp [1:2]
+ boost/math/tools/rational.hpp [1:3]
+ boost/math/tools/roots.hpp [1:3]
+ boost/math/tools/toms748_solve.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7d3641595f7238247355f3c0357d25ef
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/experimental/parallel/v2/task_region.hpp at line 8
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/experimental/parallel/v2/task_region.hpp [6:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7d5110d3ce71c7d285877787619305f3
+BELONGS ya.make
+ License text:
+ Copyright (c) 2005-2006 Joao Abecasis
+ Copyright (c) 2006-2007 Tobias Schwinger
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/functional/invocation/invoke.hpp [2:3]
+ boost/fusion/functional/invocation/invoke_function_object.hpp [2:3]
+ boost/fusion/functional/invocation/invoke_procedure.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7d7dc63b9e6e9d5cbe582c8eb99f9966
+BELONGS ya.make
+ License text:
+ * Copyright (c) 2009 Helge Bahmann
+ * Copyright (c) 2012 Tim Blechmann
+ * Copyright (c) 2014 - 2018 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/atomic/detail/ops_gcc_x86_dcas-linux.hpp [6:8]
+ boost/atomic/detail/ops_gcc_x86_dcas-osx.hpp [6:8]
+ boost/atomic/detail/ops_gcc_x86_dcas.hpp [6:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7d83c56cc7c4ebc1fa20c801845d48c4
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/typeof/msvc/typeof_impl.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7da1e963669f385bf3784df6bc8f2553
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2005-2006 The Trustees of Indiana University.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/distributed/adjlist/redistribute.hpp [1:1]
+ boost/graph/distributed/detail/remote_update_set.hpp [1:1]
+ boost/graph/distributed/distributed_graph_utility.hpp [1:3]
+ boost/graph/distributed/fruchterman_reingold.hpp [1:1]
+ boost/graph/distributed/reverse_graph.hpp [1:1]
+ boost/graph/two_bit_color_map.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7dd6d1d05da218a30c942d31b089b985
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2009 Joel de Guzman
+ Copyright (c) 2009-2010 Hartmut Kaiser
+ Copyright (c) 2010-2011 Christopher Schmidt
+ Copyright (c) 2013-2014 Damien Buhl
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/adapted/adt/adapt_adt.hpp [2:5]
+ boost/fusion/adapted/adt/adapt_assoc_adt.hpp [2:5]
+ boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp [2:2]
+ boost/fusion/adapted/struct/adapt_struct_named.hpp [2:4]
+ boost/fusion/adapted/struct/define_assoc_struct.hpp [2:2]
+ boost/fusion/adapted/struct/define_struct.hpp [2:2]
+ boost/fusion/adapted/struct/detail/define_struct.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7dfaa2a53a6b13ff30e70d1bb19164b4
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2001 Daryle Walker.
+ // Copyright (C) 2003 Vesa Karvonen.
+ // Copyright (C) 2003 Gennaro Prota.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/integer/static_log2.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7e1e3704b1ac69a10bb7c8a89f254b60
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit.hpp [2:4]
+ boost/spirit/home/classic/namespace.hpp [2:4]
+ boost/spirit/include/classic.hpp [2:4]
+ boost/spirit/include/classic_actions.hpp [2:4]
+ boost/spirit/include/classic_actor.hpp [2:4]
+ boost/spirit/include/classic_alternative.hpp [2:4]
+ boost/spirit/include/classic_as_parser.hpp [2:4]
+ boost/spirit/include/classic_assert.hpp [2:4]
+ boost/spirit/include/classic_assign_actor.hpp [2:4]
+ boost/spirit/include/classic_assign_key_actor.hpp [2:4]
+ boost/spirit/include/classic_ast.hpp [2:4]
+ boost/spirit/include/classic_ast_fwd.hpp [2:4]
+ boost/spirit/include/classic_attribute.hpp [2:4]
+ boost/spirit/include/classic_basic_chset.hpp [2:4]
+ boost/spirit/include/classic_chset.hpp [2:4]
+ boost/spirit/include/classic_chset_operators.hpp [2:4]
+ boost/spirit/include/classic_clear_actor.hpp [2:4]
+ boost/spirit/include/classic_closure.hpp [2:4]
+ boost/spirit/include/classic_closure_context.hpp [2:4]
+ boost/spirit/include/classic_closure_fwd.hpp [2:4]
+ boost/spirit/include/classic_common.hpp [2:4]
+ boost/spirit/include/classic_common_fwd.hpp [2:4]
+ boost/spirit/include/classic_composite.hpp [2:4]
+ boost/spirit/include/classic_config.hpp [2:4]
+ boost/spirit/include/classic_confix.hpp [2:4]
+ boost/spirit/include/classic_confix_fwd.hpp [2:4]
+ boost/spirit/include/classic_core.hpp [2:4]
+ boost/spirit/include/classic_debug.hpp [2:4]
+ boost/spirit/include/classic_debug_node.hpp [2:4]
+ boost/spirit/include/classic_decrement_actor.hpp [2:4]
+ boost/spirit/include/classic_difference.hpp [2:4]
+ boost/spirit/include/classic_directives.hpp [2:4]
+ boost/spirit/include/classic_distinct.hpp [2:4]
+ boost/spirit/include/classic_distinct_fwd.hpp [2:4]
+ boost/spirit/include/classic_dynamic.hpp [2:4]
+ boost/spirit/include/classic_epsilon.hpp [2:4]
+ boost/spirit/include/classic_erase_actor.hpp [2:4]
+ boost/spirit/include/classic_error_handling.hpp [2:4]
+ boost/spirit/include/classic_escape_char.hpp [2:4]
+ boost/spirit/include/classic_escape_char_fwd.hpp [2:4]
+ boost/spirit/include/classic_exceptions.hpp [2:4]
+ boost/spirit/include/classic_exceptions_fwd.hpp [2:4]
+ boost/spirit/include/classic_exclusive_or.hpp [2:4]
+ boost/spirit/include/classic_file_iterator.hpp [2:4]
+ boost/spirit/include/classic_file_iterator_fwd.hpp [2:4]
+ boost/spirit/include/classic_fixed_size_queue.hpp [2:4]
+ boost/spirit/include/classic_flush_multi_pass.hpp [2:4]
+ boost/spirit/include/classic_for.hpp [2:4]
+ boost/spirit/include/classic_functor_parser.hpp [2:4]
+ boost/spirit/include/classic_fundamental.hpp [2:4]
+ boost/spirit/include/classic_grammar.hpp [2:4]
+ boost/spirit/include/classic_grammar_def.hpp [2:4]
+ boost/spirit/include/classic_grammar_def_fwd.hpp [2:4]
+ boost/spirit/include/classic_if.hpp [2:4]
+ boost/spirit/include/classic_increment_actor.hpp [2:4]
+ boost/spirit/include/classic_insert_at_actor.hpp [2:4]
+ boost/spirit/include/classic_insert_key_actor.hpp [2:4]
+ boost/spirit/include/classic_intersection.hpp [2:4]
+ boost/spirit/include/classic_iterator.hpp [2:4]
+ boost/spirit/include/classic_kleene_star.hpp [2:4]
+ boost/spirit/include/classic_lazy.hpp [2:4]
+ boost/spirit/include/classic_list.hpp [2:4]
+ boost/spirit/include/classic_lists.hpp [2:4]
+ boost/spirit/include/classic_lists_fwd.hpp [2:4]
+ boost/spirit/include/classic_loops.hpp [2:4]
+ boost/spirit/include/classic_match.hpp [2:4]
+ boost/spirit/include/classic_meta.hpp [2:4]
+ boost/spirit/include/classic_minimal.hpp [2:4]
+ boost/spirit/include/classic_multi_pass.hpp [2:4]
+ boost/spirit/include/classic_multi_pass_fwd.hpp [2:4]
+ boost/spirit/include/classic_nil.hpp [2:4]
+ boost/spirit/include/classic_no_actions.hpp [2:4]
+ boost/spirit/include/classic_numerics.hpp [2:4]
+ boost/spirit/include/classic_numerics_fwd.hpp [2:4]
+ boost/spirit/include/classic_operators.hpp [2:4]
+ boost/spirit/include/classic_optional.hpp [2:4]
+ boost/spirit/include/classic_parametric.hpp [2:4]
+ boost/spirit/include/classic_parse_tree.hpp [2:4]
+ boost/spirit/include/classic_parse_tree_fwd.hpp [2:4]
+ boost/spirit/include/classic_parse_tree_utils.hpp [2:4]
+ boost/spirit/include/classic_parser.hpp [2:4]
+ boost/spirit/include/classic_parser_context.hpp [2:4]
+ boost/spirit/include/classic_parser_id.hpp [2:4]
+ boost/spirit/include/classic_parser_names.hpp [2:4]
+ boost/spirit/include/classic_parser_traits.hpp [2:4]
+ boost/spirit/include/classic_position_iterator.hpp [2:4]
+ boost/spirit/include/classic_position_iterator_fwd.hpp [2:4]
+ boost/spirit/include/classic_positive.hpp [2:4]
+ boost/spirit/include/classic_primitives.hpp [2:4]
+ boost/spirit/include/classic_push_back_actor.hpp [2:4]
+ boost/spirit/include/classic_push_front_actor.hpp [2:4]
+ boost/spirit/include/classic_range_run.hpp [2:4]
+ boost/spirit/include/classic_ref_actor.hpp [2:4]
+ boost/spirit/include/classic_ref_const_ref_actor.hpp [2:4]
+ boost/spirit/include/classic_ref_const_ref_const_ref_a.hpp [2:4]
+ boost/spirit/include/classic_ref_const_ref_value_actor.hpp [2:4]
+ boost/spirit/include/classic_ref_value_actor.hpp [2:4]
+ boost/spirit/include/classic_refactoring.hpp [2:4]
+ boost/spirit/include/classic_regex.hpp [2:4]
+ boost/spirit/include/classic_rule.hpp [2:4]
+ boost/spirit/include/classic_rule_alias.hpp [2:4]
+ boost/spirit/include/classic_rule_parser.hpp [2:4]
+ boost/spirit/include/classic_safe_bool.hpp [2:4]
+ boost/spirit/include/classic_scanner.hpp [2:4]
+ boost/spirit/include/classic_scanner_fwd.hpp [2:4]
+ boost/spirit/include/classic_scoped_lock.hpp [2:4]
+ boost/spirit/include/classic_select.hpp [2:4]
+ boost/spirit/include/classic_sequence.hpp [2:4]
+ boost/spirit/include/classic_sequential_and.hpp [2:4]
+ boost/spirit/include/classic_sequential_or.hpp [2:4]
+ boost/spirit/include/classic_skipper.hpp [2:4]
+ boost/spirit/include/classic_skipper_fwd.hpp [2:4]
+ boost/spirit/include/classic_static.hpp [2:4]
+ boost/spirit/include/classic_stored_rule.hpp [2:4]
+ boost/spirit/include/classic_stored_rule_fwd.hpp [2:4]
+ boost/spirit/include/classic_subrule.hpp [2:4]
+ boost/spirit/include/classic_subrule_fwd.hpp [2:4]
+ boost/spirit/include/classic_swap_actor.hpp [2:4]
+ boost/spirit/include/classic_switch.hpp [2:4]
+ boost/spirit/include/classic_symbols.hpp [2:4]
+ boost/spirit/include/classic_symbols_fwd.hpp [2:4]
+ boost/spirit/include/classic_traverse.hpp [2:4]
+ boost/spirit/include/classic_tree_to_xml.hpp [2:4]
+ boost/spirit/include/classic_typeof.hpp [2:4]
+ boost/spirit/include/classic_utility.hpp [2:4]
+ boost/spirit/include/classic_version.hpp [2:4]
+ boost/spirit/include/classic_while.hpp [2:4]
+ boost/spirit/include/phoenix1.hpp [2:4]
+ boost/spirit/include/phoenix1_actor.hpp [2:4]
+ boost/spirit/include/phoenix1_binders.hpp [2:4]
+ boost/spirit/include/phoenix1_casts.hpp [2:4]
+ boost/spirit/include/phoenix1_closures.hpp [2:4]
+ boost/spirit/include/phoenix1_composite.hpp [2:4]
+ boost/spirit/include/phoenix1_functions.hpp [2:4]
+ boost/spirit/include/phoenix1_new.hpp [2:4]
+ boost/spirit/include/phoenix1_operators.hpp [2:4]
+ boost/spirit/include/phoenix1_primitives.hpp [2:4]
+ boost/spirit/include/phoenix1_special_ops.hpp [2:4]
+ boost/spirit/include/phoenix1_statements.hpp [2:4]
+ boost/spirit/include/phoenix1_tuple_helpers.hpp [2:4]
+ boost/spirit/include/phoenix1_tuples.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7e4aa3d1095ffd1092cff9f549b3de89
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/rolling_variance.hpp at line 6, boost/fusion/algorithm/query/any.hpp at line 5, boost/fusion/algorithm/query/detail/any.hpp at line 5, boost/fusion/container/generation/make_cons.hpp at line 5, boost/fusion/container/list/cons.hpp at line 5, boost/fusion/container/list/cons_fwd.hpp at line 5, boost/fusion/container/list/cons_iterator.hpp at line 5, boost/fusion/container/list/detail/begin_impl.hpp at line 5, boost/fusion/container/list/detail/deref_impl.hpp at line 5, boost/fusion/container/list/detail/end_impl.hpp at line 5, boost/fusion/container/list/detail/next_impl.hpp at line 5, boost/fusion/container/list/detail/value_of_impl.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/accumulators/statistics/rolling_variance.hpp [3:6]
+ boost/fusion/algorithm/query/any.hpp [2:4]
+ boost/fusion/algorithm/query/detail/any.hpp [2:4]
+ boost/fusion/container/generation/make_cons.hpp [2:3]
+ boost/fusion/container/list/cons.hpp [2:3]
+ boost/fusion/container/list/cons_fwd.hpp [2:3]
+ boost/fusion/container/list/cons_iterator.hpp [2:3]
+ boost/fusion/container/list/detail/begin_impl.hpp [2:3]
+ boost/fusion/container/list/detail/deref_impl.hpp [2:3]
+ boost/fusion/container/list/detail/end_impl.hpp [2:3]
+ boost/fusion/container/list/detail/next_impl.hpp [2:3]
+ boost/fusion/container/list/detail/value_of_impl.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7e6f5e41baa083be7230e409d7f43ed2
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2002, 2003 Peter Dimov
+ // Copyright (c) 2003 Daniel Frey
+ // Copyright (c) 2003 Howard Hinnant
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/core/checked_delete.hpp [13:15]
+ boost/signals2/detail/lwm_win32_cs.hpp [4:6]
+ boost/smart_ptr/detail/lwm_win32_cs.hpp [13:14]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7ed1eb379e17833ff37681f581fa429d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/sort/pdqsort/pdqsort.hpp at line 5
+ License text:
+ // Copyright Orson Peters 2017.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/sort/pdqsort/pdqsort.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7ee360b4e286bb266367da5faf97ebd7
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2006, 2007, 2012, 2014.
+ // Copyright Paul A. Bristow 2006, 2007, 2012
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/distributions/detail/common_error_handling.hpp [1:2]
+ boost/math/special_functions.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7ee7926211cade048fc30fb0b3fa464f
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/recalculate.hpp [3:6]
+ boost/geometry/policies/robustness/no_rescale_policy.hpp [3:6]
+ boost/geometry/policies/robustness/robust_point_type.hpp [3:6]
+ boost/geometry/policies/robustness/segment_ratio_type.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7f2db459478f707a0dc01561712dabb7
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/is_xxx.hpp at line 3, boost/parameter/aux_/result_of0.hpp at line 3, boost/parameter/aux_/tag.hpp at line 3, boost/parameter/binding.hpp at line 3, boost/parameter/match.hpp at line 3, boost/python/detail/is_xxx.hpp at line 3
+ License text:
+ // Copyright David Abrahams 2005. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/detail/is_xxx.hpp [1:3]
+ boost/parameter/aux_/result_of0.hpp [1:3]
+ boost/parameter/aux_/tag.hpp [1:3]
+ boost/parameter/binding.hpp [1:3]
+ boost/parameter/match.hpp [1:3]
+ boost/python/detail/is_xxx.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7f69d13bc868e45f410b7807222b3a49
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2006-2010 The Trustees of Indiana University.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/distributed/one_bit_color_map.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7f8576d8bbd73977a48fce0347863709
+BELONGS ya.make
+ License text:
+ // Copyright (c) Intel Corporation 2008.
+ // Copyright (c) 2008-2012 Simonson Lucanus.
+ // Copyright (c) 2012-2012 Andrii Sydorchuk.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/polygon/interval_concept.hpp [3:5]
+ boost/polygon/interval_data.hpp [3:5]
+ boost/polygon/interval_traits.hpp [3:5]
+ boost/polygon/point_concept.hpp [3:5]
+ boost/polygon/point_data.hpp [3:5]
+ boost/polygon/point_traits.hpp [3:5]
+ boost/polygon/segment_concept.hpp [3:5]
+ boost/polygon/segment_data.hpp [3:5]
+ boost/polygon/segment_traits.hpp [3:5]
+ boost/polygon/transform.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7fe04975698c2d2ed95aae6c40492320
+BELONGS libs/iostreams/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iostreams/categories.hpp at line 4, boost/iostreams/chain.hpp at line 4, boost/iostreams/char_traits.hpp at line 4, boost/iostreams/checked_operations.hpp at line 4, boost/iostreams/close.hpp at line 4, boost/iostreams/code_converter.hpp at line 4, boost/iostreams/combine.hpp at line 4, boost/iostreams/compose.hpp at line 4, boost/iostreams/concepts.hpp at line 4, boost/iostreams/constants.hpp at line 4, boost/iostreams/copy.hpp at line 4, boost/iostreams/detail/access_control.hpp at line 4, boost/iostreams/detail/adapter/concept_adapter.hpp at line 4, boost/iostreams/detail/adapter/direct_adapter.hpp at line 4, boost/iostreams/detail/adapter/mode_adapter.hpp at line 4, boost/iostreams/detail/adapter/non_blocking_adapter.hpp at line 4, boost/iostreams/detail/adapter/output_iterator_adapter.hpp at line 4, boost/iostreams/detail/adapter/range_adapter.hpp at line 4, boost/iostreams/detail/add_facet.hpp at line 4, boost/iostreams/detail/bool_trait_def.hpp at line 4, boost/iostreams/detail/broken_overload_resolution/forward.hpp at line 4, boost/iostreams/detail/broken_overload_resolution/stream.hpp at line 4, boost/iostreams/detail/broken_overload_resolution/stream_buffer.hpp at line 4, boost/iostreams/detail/buffer.hpp at line 4, boost/iostreams/detail/call_traits.hpp at line 4, boost/iostreams/detail/char_traits.hpp at line 4, boost/iostreams/detail/codecvt_helper.hpp at line 4, boost/iostreams/detail/codecvt_holder.hpp at line 4, boost/iostreams/detail/config/auto_link.hpp at line 4, boost/iostreams/detail/config/bzip2.hpp at line 4, boost/iostreams/detail/config/codecvt.hpp at line 4, boost/iostreams/detail/config/disable_warnings.hpp at line 4, boost/iostreams/detail/config/dyn_link.hpp at line 4, boost/iostreams/detail/config/enable_warnings.hpp at line 4, boost/iostreams/detail/config/gcc.hpp at line 4, boost/iostreams/detail/config/limits.hpp at line 4, boost/iostreams/detail/config/overload_resolution.hpp at line 4, boost/iostreams/detail/config/wide_streams.hpp at line 4, boost/iostreams/detail/config/windows_posix.hpp at line 4, boost/iostreams/detail/config/zlib.hpp at line 4, boost/iostreams/detail/counted_array.hpp at line 4, boost/iostreams/detail/default_arg.hpp at line 4, boost/iostreams/detail/dispatch.hpp at line 4, boost/iostreams/detail/double_object.hpp at line 4, boost/iostreams/detail/enable_if_stream.hpp at line 4, boost/iostreams/detail/error.hpp at line 4, boost/iostreams/detail/forward.hpp at line 4, boost/iostreams/detail/fstream.hpp at line 4, boost/iostreams/detail/ios.hpp at line 4, boost/iostreams/detail/iostream.hpp at line 4, boost/iostreams/detail/is_dereferenceable.hpp at line 4, boost/iostreams/detail/is_iterator_range.hpp at line 4, boost/iostreams/detail/newline.hpp at line 4, boost/iostreams/detail/optional.hpp at line 4, boost/iostreams/detail/param_type.hpp at line 4, boost/iostreams/detail/push.hpp at line 4, boost/iostreams/detail/push_params.hpp at line 4, boost/iostreams/detail/resolve.hpp at line 4, boost/iostreams/detail/select.hpp at line 4, boost/iostreams/detail/select_by_size.hpp at line 4, boost/iostreams/detail/streambuf.hpp at line 4, boost/iostreams/detail/streambuf/chainbuf.hpp at line 4, boost/iostreams/detail/streambuf/direct_streambuf.hpp at line 4, boost/iostreams/detail/streambuf/indirect_streambuf.hpp at line 4, boost/iostreams/detail/streambuf/linked_streambuf.hpp at line 4, boost/iostreams/detail/system_failure.hpp at line 4, boost/iostreams/detail/template_params.hpp at line 4, boost/iostreams/detail/translate_int_type.hpp at line 4, boost/iostreams/detail/wrap_unwrap.hpp at line 4, boost/iostreams/device/array.hpp at line 4, boost/iostreams/device/back_inserter.hpp at line 4, boost/iostreams/device/file.hpp at line 4, boost/iostreams/device/file_descriptor.hpp at line 4, boost/iostreams/device/null.hpp at line 4, boost/iostreams/filter/aggregate.hpp at line 4, boost/iostreams/filter/bzip2.hpp at line 4, boost/iostreams/filter/counter.hpp at line 4, boost/iostreams/filter/gzip.hpp at line 4, boost/iostreams/filter/line.hpp at line 4, boost/iostreams/filter/newline.hpp at line 4, boost/iostreams/filter/regex.hpp at line 4, boost/iostreams/filter/stdio.hpp at line 4, boost/iostreams/filter/symmetric.hpp at line 4, boost/iostreams/filter/test.hpp at line 4, boost/iostreams/filter/zlib.hpp at line 4, boost/iostreams/filtering_stream.hpp at line 4, boost/iostreams/filtering_streambuf.hpp at line 4, boost/iostreams/flush.hpp at line 4, boost/iostreams/get.hpp at line 4, boost/iostreams/imbue.hpp at line 4, boost/iostreams/input_sequence.hpp at line 4, boost/iostreams/invert.hpp at line 4, boost/iostreams/operations.hpp at line 4, boost/iostreams/operations_fwd.hpp at line 4, boost/iostreams/optimal_buffer_size.hpp at line 4, boost/iostreams/output_sequence.hpp at line 4, boost/iostreams/pipeline.hpp at line 4, boost/iostreams/positioning.hpp at line 4, boost/iostreams/put.hpp at line 4, boost/iostreams/putback.hpp at line 4, boost/iostreams/read.hpp at line 4, boost/iostreams/seek.hpp at line 4, boost/iostreams/skip.hpp at line 4, boost/iostreams/stream.hpp at line 4, boost/iostreams/stream_buffer.hpp at line 4, boost/iostreams/tee.hpp at line 4, boost/iostreams/traits.hpp at line 4, boost/iostreams/traits_fwd.hpp at line 4, boost/iostreams/write.hpp at line 4, libs/iostreams/src/bzip2.cpp at line 4, libs/iostreams/src/file_descriptor.cpp at line 4, libs/iostreams/src/gzip.cpp at line 4, libs/iostreams/src/zlib.cpp at line 4
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/iostreams/categories.hpp [1:4]
+ boost/iostreams/chain.hpp [1:4]
+ boost/iostreams/char_traits.hpp [1:4]
+ boost/iostreams/checked_operations.hpp [1:4]
+ boost/iostreams/close.hpp [1:4]
+ boost/iostreams/code_converter.hpp [1:4]
+ boost/iostreams/combine.hpp [1:4]
+ boost/iostreams/compose.hpp [1:4]
+ boost/iostreams/concepts.hpp [1:4]
+ boost/iostreams/constants.hpp [1:4]
+ boost/iostreams/copy.hpp [1:4]
+ boost/iostreams/detail/access_control.hpp [1:4]
+ boost/iostreams/detail/adapter/concept_adapter.hpp [1:4]
+ boost/iostreams/detail/adapter/direct_adapter.hpp [1:4]
+ boost/iostreams/detail/adapter/mode_adapter.hpp [1:4]
+ boost/iostreams/detail/adapter/non_blocking_adapter.hpp [1:4]
+ boost/iostreams/detail/adapter/output_iterator_adapter.hpp [1:4]
+ boost/iostreams/detail/adapter/range_adapter.hpp [1:4]
+ boost/iostreams/detail/add_facet.hpp [1:4]
+ boost/iostreams/detail/bool_trait_def.hpp [1:4]
+ boost/iostreams/detail/broken_overload_resolution/forward.hpp [1:4]
+ boost/iostreams/detail/broken_overload_resolution/stream.hpp [1:4]
+ boost/iostreams/detail/broken_overload_resolution/stream_buffer.hpp [1:4]
+ boost/iostreams/detail/buffer.hpp [1:4]
+ boost/iostreams/detail/call_traits.hpp [1:4]
+ boost/iostreams/detail/char_traits.hpp [1:4]
+ boost/iostreams/detail/codecvt_helper.hpp [1:4]
+ boost/iostreams/detail/codecvt_holder.hpp [1:4]
+ boost/iostreams/detail/config/auto_link.hpp [1:4]
+ boost/iostreams/detail/config/bzip2.hpp [1:4]
+ boost/iostreams/detail/config/codecvt.hpp [1:4]
+ boost/iostreams/detail/config/disable_warnings.hpp [1:4]
+ boost/iostreams/detail/config/dyn_link.hpp [1:4]
+ boost/iostreams/detail/config/enable_warnings.hpp [1:4]
+ boost/iostreams/detail/config/gcc.hpp [1:4]
+ boost/iostreams/detail/config/limits.hpp [1:4]
+ boost/iostreams/detail/config/overload_resolution.hpp [1:4]
+ boost/iostreams/detail/config/wide_streams.hpp [1:4]
+ boost/iostreams/detail/config/windows_posix.hpp [1:5]
+ boost/iostreams/detail/config/zlib.hpp [1:4]
+ boost/iostreams/detail/counted_array.hpp [1:4]
+ boost/iostreams/detail/default_arg.hpp [1:4]
+ boost/iostreams/detail/dispatch.hpp [1:4]
+ boost/iostreams/detail/double_object.hpp [1:4]
+ boost/iostreams/detail/enable_if_stream.hpp [1:4]
+ boost/iostreams/detail/error.hpp [1:4]
+ boost/iostreams/detail/forward.hpp [1:4]
+ boost/iostreams/detail/fstream.hpp [1:4]
+ boost/iostreams/detail/ios.hpp [1:4]
+ boost/iostreams/detail/iostream.hpp [1:4]
+ boost/iostreams/detail/is_dereferenceable.hpp [1:5]
+ boost/iostreams/detail/is_iterator_range.hpp [1:4]
+ boost/iostreams/detail/newline.hpp [1:4]
+ boost/iostreams/detail/optional.hpp [1:4]
+ boost/iostreams/detail/param_type.hpp [1:4]
+ boost/iostreams/detail/push.hpp [1:4]
+ boost/iostreams/detail/push_params.hpp [1:4]
+ boost/iostreams/detail/resolve.hpp [1:4]
+ boost/iostreams/detail/select.hpp [1:4]
+ boost/iostreams/detail/select_by_size.hpp [1:4]
+ boost/iostreams/detail/streambuf.hpp [1:4]
+ boost/iostreams/detail/streambuf/chainbuf.hpp [1:4]
+ boost/iostreams/detail/streambuf/direct_streambuf.hpp [1:4]
+ boost/iostreams/detail/streambuf/indirect_streambuf.hpp [1:4]
+ boost/iostreams/detail/streambuf/linked_streambuf.hpp [1:4]
+ boost/iostreams/detail/system_failure.hpp [1:5]
+ boost/iostreams/detail/template_params.hpp [1:4]
+ boost/iostreams/detail/translate_int_type.hpp [1:4]
+ boost/iostreams/detail/wrap_unwrap.hpp [1:4]
+ boost/iostreams/device/array.hpp [1:4]
+ boost/iostreams/device/back_inserter.hpp [1:4]
+ boost/iostreams/device/file.hpp [1:4]
+ boost/iostreams/device/file_descriptor.hpp [1:4]
+ boost/iostreams/device/null.hpp [1:4]
+ boost/iostreams/filter/aggregate.hpp [1:4]
+ boost/iostreams/filter/bzip2.hpp [1:4]
+ boost/iostreams/filter/counter.hpp [1:4]
+ boost/iostreams/filter/gzip.hpp [1:4]
+ boost/iostreams/filter/line.hpp [1:4]
+ boost/iostreams/filter/newline.hpp [1:4]
+ boost/iostreams/filter/regex.hpp [1:4]
+ boost/iostreams/filter/stdio.hpp [1:4]
+ boost/iostreams/filter/symmetric.hpp [1:4]
+ boost/iostreams/filter/test.hpp [1:4]
+ boost/iostreams/filter/zlib.hpp [1:4]
+ boost/iostreams/filtering_stream.hpp [1:4]
+ boost/iostreams/filtering_streambuf.hpp [1:4]
+ boost/iostreams/flush.hpp [1:4]
+ boost/iostreams/get.hpp [1:4]
+ boost/iostreams/imbue.hpp [1:4]
+ boost/iostreams/input_sequence.hpp [1:4]
+ boost/iostreams/invert.hpp [1:4]
+ boost/iostreams/operations.hpp [1:4]
+ boost/iostreams/operations_fwd.hpp [1:4]
+ boost/iostreams/optimal_buffer_size.hpp [1:4]
+ boost/iostreams/output_sequence.hpp [1:4]
+ boost/iostreams/pipeline.hpp [1:4]
+ boost/iostreams/positioning.hpp [1:4]
+ boost/iostreams/put.hpp [1:4]
+ boost/iostreams/putback.hpp [1:4]
+ boost/iostreams/read.hpp [1:4]
+ boost/iostreams/seek.hpp [1:4]
+ boost/iostreams/skip.hpp [1:4]
+ boost/iostreams/stream.hpp [1:4]
+ boost/iostreams/stream_buffer.hpp [1:4]
+ boost/iostreams/tee.hpp [1:4]
+ boost/iostreams/traits.hpp [1:4]
+ boost/iostreams/traits_fwd.hpp [1:4]
+ boost/iostreams/write.hpp [1:4]
+ libs/iostreams/src/bzip2.cpp [1:4]
+ libs/iostreams/src/file_descriptor.cpp [1:4]
+ libs/iostreams/src/gzip.cpp [1:4]
+ libs/iostreams/src/zlib.cpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7fe227ec710d458b7abf79bdc3c1ad1e
+BELONGS ya.make
+ License text:
+ Copyright (c) 2011 Thomas Heller
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/support/detail/pp_round.hpp [2:2]
+ boost/phoenix/core/call.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/phx2_result.hpp [2:2]
+ boost/phoenix/core/detail/cpp03/phx2_result.hpp [24:24]
+ boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_10.hpp [2:2]
+ boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_20.hpp [2:2]
+ boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_30.hpp [2:2]
+ boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_40.hpp [2:2]
+ boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_50.hpp [2:2]
+ boost/phoenix/core/detail/phx2_result.hpp [2:2]
+ boost/phoenix/core/v2_eval.hpp [2:2]
+ boost/phoenix/function/adapt_callable.hpp [2:3]
+ boost/phoenix/scope/detail/local_variable.hpp [2:4]
+ boost/phoenix/scope/this.hpp [2:3]
+ boost/phoenix/support/preprocessor/round.hpp [2:2]
+ boost/spirit/home/lex/argument.hpp [1:4]
+ boost/spirit/home/lex/argument_phoenix.hpp [1:2]
+ boost/spirit/home/lex/lexer/support_functions_expression.hpp [1:2]
+ boost/spirit/home/support/argument.hpp [2:4]
+ boost/spirit/home/support/argument_expression.hpp [2:4]
+ boost/spirit/home/support/context.hpp [2:4]
+ boost/spirit/home/support/terminal.hpp [2:4]
+ boost/spirit/home/support/terminal_expression.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7fe63dbfc34a676863979ab818e17142
+BELONGS ya.make
+ License text:
+ // in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/detail/airy_ai_bi_zero.hpp [8:8]
+ boost/math/special_functions/detail/bessel_jy_zero.hpp [8:8]
+ boost/multiprecision/cpp_dec_float.hpp [9:9]
+ boost/multiprecision/detail/functions/pow.hpp [10:10]
+ boost/multiprecision/detail/functions/trig.hpp [10:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7fe9441ac3e18d7a1f3d2435760c49b9
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/vmd/assert.hpp at line 4, boost/vmd/assert_is_array.hpp at line 4, boost/vmd/assert_is_empty.hpp at line 4, boost/vmd/assert_is_identifier.hpp at line 4, boost/vmd/assert_is_list.hpp at line 4, boost/vmd/assert_is_number.hpp at line 4, boost/vmd/assert_is_seq.hpp at line 4, boost/vmd/assert_is_tuple.hpp at line 4, boost/vmd/assert_is_type.hpp at line 4, boost/vmd/detail/adjust_tuple_type.hpp at line 4, boost/vmd/detail/array.hpp at line 4, boost/vmd/detail/assert.hpp at line 4, boost/vmd/detail/data_equal.hpp at line 4, boost/vmd/detail/data_equal_common.hpp at line 4, boost/vmd/detail/empty_result.hpp at line 4, boost/vmd/detail/equal.hpp at line 4, boost/vmd/detail/equal_common.hpp at line 4, boost/vmd/detail/equal_type.hpp at line 4, boost/vmd/detail/identifier.hpp at line 4, boost/vmd/detail/identifier_concat.hpp at line 4, boost/vmd/detail/identifier_type.hpp at line 4, boost/vmd/detail/idprefix.hpp at line 4, boost/vmd/detail/is_array.hpp at line 4, boost/vmd/detail/is_array_common.hpp at line 4, boost/vmd/detail/is_empty.hpp at line 4, boost/vmd/detail/is_empty_array.hpp at line 4, boost/vmd/detail/is_empty_tuple.hpp at line 4, boost/vmd/detail/is_entire.hpp at line 4, boost/vmd/detail/is_identifier.hpp at line 4, boost/vmd/detail/is_list.hpp at line 4, boost/vmd/detail/is_number.hpp at line 4, boost/vmd/detail/is_seq.hpp at line 4, boost/vmd/detail/is_tuple.hpp at line 4, boost/vmd/detail/is_type.hpp at line 4, boost/vmd/detail/is_type_type.hpp at line 4, boost/vmd/detail/list.hpp at line 4, boost/vmd/detail/match_identifier.hpp at line 4, boost/vmd/detail/match_identifier_common.hpp at line 4, boost/vmd/detail/match_single_identifier.hpp at line 4, boost/vmd/detail/modifiers.hpp at line 4, boost/vmd/detail/mods.hpp at line 4, boost/vmd/detail/nil_registration.hpp at line 4, boost/vmd/detail/not_empty.hpp at line 4, boost/vmd/detail/number_registration.hpp at line 4, boost/vmd/detail/only_after.hpp at line 4, boost/vmd/detail/parens.hpp at line 4, boost/vmd/detail/parens_common.hpp at line 4, boost/vmd/detail/parens_split.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_1.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_10.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_11.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_12.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_13.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_14.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_15.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_16.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_2.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_3.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_4.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_5.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_6.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_7.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_8.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_9.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_specific.hpp at line 4, boost/vmd/detail/recurse/equal/equal_1.hpp at line 4, boost/vmd/detail/recurse/equal/equal_10.hpp at line 4, boost/vmd/detail/recurse/equal/equal_11.hpp at line 4, boost/vmd/detail/recurse/equal/equal_12.hpp at line 4, boost/vmd/detail/recurse/equal/equal_13.hpp at line 4, boost/vmd/detail/recurse/equal/equal_14.hpp at line 4, boost/vmd/detail/recurse/equal/equal_15.hpp at line 4, boost/vmd/detail/recurse/equal/equal_16.hpp at line 4, boost/vmd/detail/recurse/equal/equal_2.hpp at line 4, boost/vmd/detail/recurse/equal/equal_3.hpp at line 4, boost/vmd/detail/recurse/equal/equal_4.hpp at line 4, boost/vmd/detail/recurse/equal/equal_5.hpp at line 4, boost/vmd/detail/recurse/equal/equal_6.hpp at line 4, boost/vmd/detail/recurse/equal/equal_7.hpp at line 4, boost/vmd/detail/recurse/equal/equal_8.hpp at line 4, boost/vmd/detail/recurse/equal/equal_9.hpp at line 4, boost/vmd/detail/recurse/equal/equal_headers.hpp at line 4, boost/vmd/detail/seq.hpp at line 4, boost/vmd/detail/sequence_arity.hpp at line 4, boost/vmd/detail/sequence_common.hpp at line 4, boost/vmd/detail/sequence_elem.hpp at line 4, boost/vmd/detail/sequence_enum.hpp at line 4, boost/vmd/detail/sequence_size.hpp at line 4, boost/vmd/detail/sequence_to_array.hpp at line 4, boost/vmd/detail/sequence_to_list.hpp at line 4, boost/vmd/detail/sequence_to_seq.hpp at line 4, boost/vmd/detail/sequence_to_tuple.hpp at line 4, boost/vmd/detail/sequence_type.hpp at line 4, boost/vmd/detail/setup.hpp at line 4, boost/vmd/detail/tuple.hpp at line 4, boost/vmd/detail/type_registration.hpp at line 4, boost/vmd/detail/variadic_pop_front.hpp at line 4, boost/vmd/elem.hpp at line 4, boost/vmd/empty.hpp at line 4, boost/vmd/enum.hpp at line 4, boost/vmd/equal.hpp at line 4, boost/vmd/get_type.hpp at line 4, boost/vmd/identity.hpp at line 4, boost/vmd/is_array.hpp at line 4, boost/vmd/is_empty.hpp at line 4, boost/vmd/is_empty_array.hpp at line 4, boost/vmd/is_empty_list.hpp at line 4, boost/vmd/is_identifier.hpp at line 4, boost/vmd/is_list.hpp at line 4, boost/vmd/is_multi.hpp at line 4, boost/vmd/is_number.hpp at line 4, boost/vmd/is_parens_empty.hpp at line 4, boost/vmd/is_seq.hpp at line 4, boost/vmd/is_tuple.hpp at line 4, boost/vmd/is_type.hpp at line 4, boost/vmd/is_unary.hpp at line 4, boost/vmd/not_equal.hpp at line 4, boost/vmd/size.hpp at line 4, boost/vmd/to_array.hpp at line 4, boost/vmd/to_list.hpp at line 4, boost/vmd/to_seq.hpp at line 4, boost/vmd/to_tuple.hpp at line 4, boost/vmd/vmd.hpp at line 4
+ License text:
+ // (C) Copyright Edward Diener 2011-2015
+ // Use, modification and distribution are subject to the Boost Software License,
+ // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/vmd/assert.hpp [2:4]
+ boost/vmd/assert_is_array.hpp [2:4]
+ boost/vmd/assert_is_empty.hpp [2:4]
+ boost/vmd/assert_is_identifier.hpp [2:4]
+ boost/vmd/assert_is_list.hpp [2:4]
+ boost/vmd/assert_is_number.hpp [2:4]
+ boost/vmd/assert_is_seq.hpp [2:4]
+ boost/vmd/assert_is_tuple.hpp [2:4]
+ boost/vmd/assert_is_type.hpp [2:4]
+ boost/vmd/detail/adjust_tuple_type.hpp [2:4]
+ boost/vmd/detail/array.hpp [2:4]
+ boost/vmd/detail/assert.hpp [2:4]
+ boost/vmd/detail/data_equal.hpp [2:4]
+ boost/vmd/detail/data_equal_common.hpp [2:4]
+ boost/vmd/detail/empty_result.hpp [2:4]
+ boost/vmd/detail/equal.hpp [2:4]
+ boost/vmd/detail/equal_common.hpp [2:4]
+ boost/vmd/detail/equal_type.hpp [2:4]
+ boost/vmd/detail/identifier.hpp [2:4]
+ boost/vmd/detail/identifier_concat.hpp [2:4]
+ boost/vmd/detail/identifier_type.hpp [2:4]
+ boost/vmd/detail/idprefix.hpp [2:4]
+ boost/vmd/detail/is_array.hpp [2:4]
+ boost/vmd/detail/is_array_common.hpp [2:4]
+ boost/vmd/detail/is_empty.hpp [2:4]
+ boost/vmd/detail/is_empty_array.hpp [2:4]
+ boost/vmd/detail/is_empty_tuple.hpp [2:4]
+ boost/vmd/detail/is_entire.hpp [2:4]
+ boost/vmd/detail/is_identifier.hpp [2:4]
+ boost/vmd/detail/is_list.hpp [2:4]
+ boost/vmd/detail/is_number.hpp [2:4]
+ boost/vmd/detail/is_seq.hpp [2:4]
+ boost/vmd/detail/is_tuple.hpp [2:4]
+ boost/vmd/detail/is_type.hpp [2:4]
+ boost/vmd/detail/is_type_type.hpp [2:4]
+ boost/vmd/detail/list.hpp [2:4]
+ boost/vmd/detail/match_identifier.hpp [2:4]
+ boost/vmd/detail/match_identifier_common.hpp [2:4]
+ boost/vmd/detail/match_single_identifier.hpp [2:4]
+ boost/vmd/detail/modifiers.hpp [2:4]
+ boost/vmd/detail/mods.hpp [2:4]
+ boost/vmd/detail/nil_registration.hpp [2:4]
+ boost/vmd/detail/not_empty.hpp [2:4]
+ boost/vmd/detail/number_registration.hpp [2:4]
+ boost/vmd/detail/only_after.hpp [2:4]
+ boost/vmd/detail/parens.hpp [2:4]
+ boost/vmd/detail/parens_common.hpp [2:4]
+ boost/vmd/detail/parens_split.hpp [2:4]
+ boost/vmd/detail/recurse/data_equal/data_equal_1.hpp [2:4]
+ boost/vmd/detail/recurse/data_equal/data_equal_10.hpp [2:4]
+ boost/vmd/detail/recurse/data_equal/data_equal_11.hpp [2:4]
+ boost/vmd/detail/recurse/data_equal/data_equal_12.hpp [2:4]
+ boost/vmd/detail/recurse/data_equal/data_equal_13.hpp [2:4]
+ boost/vmd/detail/recurse/data_equal/data_equal_14.hpp [2:4]
+ boost/vmd/detail/recurse/data_equal/data_equal_15.hpp [2:4]
+ boost/vmd/detail/recurse/data_equal/data_equal_16.hpp [2:4]
+ boost/vmd/detail/recurse/data_equal/data_equal_2.hpp [2:4]
+ boost/vmd/detail/recurse/data_equal/data_equal_3.hpp [2:4]
+ boost/vmd/detail/recurse/data_equal/data_equal_4.hpp [2:4]
+ boost/vmd/detail/recurse/data_equal/data_equal_5.hpp [2:4]
+ boost/vmd/detail/recurse/data_equal/data_equal_6.hpp [2:4]
+ boost/vmd/detail/recurse/data_equal/data_equal_7.hpp [2:4]
+ boost/vmd/detail/recurse/data_equal/data_equal_8.hpp [2:4]
+ boost/vmd/detail/recurse/data_equal/data_equal_9.hpp [2:4]
+ boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp [2:4]
+ boost/vmd/detail/recurse/data_equal/data_equal_specific.hpp [2:4]
+ boost/vmd/detail/recurse/equal/equal_1.hpp [2:4]
+ boost/vmd/detail/recurse/equal/equal_10.hpp [2:4]
+ boost/vmd/detail/recurse/equal/equal_11.hpp [2:4]
+ boost/vmd/detail/recurse/equal/equal_12.hpp [2:4]
+ boost/vmd/detail/recurse/equal/equal_13.hpp [2:4]
+ boost/vmd/detail/recurse/equal/equal_14.hpp [2:4]
+ boost/vmd/detail/recurse/equal/equal_15.hpp [2:4]
+ boost/vmd/detail/recurse/equal/equal_16.hpp [2:4]
+ boost/vmd/detail/recurse/equal/equal_2.hpp [2:4]
+ boost/vmd/detail/recurse/equal/equal_3.hpp [2:4]
+ boost/vmd/detail/recurse/equal/equal_4.hpp [2:4]
+ boost/vmd/detail/recurse/equal/equal_5.hpp [2:4]
+ boost/vmd/detail/recurse/equal/equal_6.hpp [2:4]
+ boost/vmd/detail/recurse/equal/equal_7.hpp [2:4]
+ boost/vmd/detail/recurse/equal/equal_8.hpp [2:4]
+ boost/vmd/detail/recurse/equal/equal_9.hpp [2:4]
+ boost/vmd/detail/recurse/equal/equal_headers.hpp [2:4]
+ boost/vmd/detail/seq.hpp [2:4]
+ boost/vmd/detail/sequence_arity.hpp [2:4]
+ boost/vmd/detail/sequence_common.hpp [2:4]
+ boost/vmd/detail/sequence_elem.hpp [2:4]
+ boost/vmd/detail/sequence_enum.hpp [2:4]
+ boost/vmd/detail/sequence_size.hpp [2:4]
+ boost/vmd/detail/sequence_to_array.hpp [2:4]
+ boost/vmd/detail/sequence_to_list.hpp [2:4]
+ boost/vmd/detail/sequence_to_seq.hpp [2:4]
+ boost/vmd/detail/sequence_to_tuple.hpp [2:4]
+ boost/vmd/detail/sequence_type.hpp [2:4]
+ boost/vmd/detail/setup.hpp [2:4]
+ boost/vmd/detail/tuple.hpp [2:4]
+ boost/vmd/detail/type_registration.hpp [2:4]
+ boost/vmd/detail/variadic_pop_front.hpp [2:4]
+ boost/vmd/elem.hpp [2:4]
+ boost/vmd/empty.hpp [2:4]
+ boost/vmd/enum.hpp [2:4]
+ boost/vmd/equal.hpp [2:4]
+ boost/vmd/get_type.hpp [2:4]
+ boost/vmd/identity.hpp [2:4]
+ boost/vmd/is_array.hpp [2:4]
+ boost/vmd/is_empty.hpp [2:4]
+ boost/vmd/is_empty_array.hpp [2:4]
+ boost/vmd/is_empty_list.hpp [2:4]
+ boost/vmd/is_identifier.hpp [2:4]
+ boost/vmd/is_list.hpp [2:4]
+ boost/vmd/is_multi.hpp [2:4]
+ boost/vmd/is_number.hpp [2:4]
+ boost/vmd/is_parens_empty.hpp [2:4]
+ boost/vmd/is_seq.hpp [2:4]
+ boost/vmd/is_tuple.hpp [2:4]
+ boost/vmd/is_type.hpp [2:4]
+ boost/vmd/is_unary.hpp [2:4]
+ boost/vmd/not_equal.hpp [2:4]
+ boost/vmd/size.hpp [2:4]
+ boost/vmd/to_array.hpp [2:4]
+ boost/vmd/to_list.hpp [2:4]
+ boost/vmd/to_seq.hpp [2:4]
+ boost/vmd/to_tuple.hpp [2:4]
+ boost/vmd/vmd.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7fef5129931cbf5ef18b4b28e7fb3a62
+BELONGS ya.make
+ License text:
+ // Copyright Eric Niebler 2014
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/aux_/config/gpu.hpp [5:5]
+ boost/range/detail/msvc_has_iterator_workaround.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8012a67c0eb379c33d0eb9550cd0b925
+BELONGS ya.make
+ License text:
+ // (C) Copyright Ion Gaztanaga 2006-2012
+ // (C) Copyright Markus Schoepflin 2007
+ // (C) Copyright Bryce Lelbach 2010
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/interprocess/detail/atomic.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 807a2c80d0a2cd1e1c7e2077e2918037
+BELONGS ya.make
+ License text:
+ * Copyright 2016 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/winapi/access_rights.hpp [2:2]
+ boost/winapi/character_code_conversion.hpp [2:2]
+ boost/winapi/dbghelp.hpp [2:4]
+ boost/winapi/error_codes.hpp [2:2]
+ boost/winapi/limits.hpp [2:2]
+ boost/winapi/page_protection_flags.hpp [2:2]
+ boost/winapi/priority_class.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 807dea3c55c068fbbaf4810187c7c84b
+BELONGS ya.make
+ License text:
+ // (C) Copyright 2007-2009 Andrew Sutton
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/bron_kerbosch_all_cliques.hpp [1:1]
+ boost/graph/closeness_centrality.hpp [1:1]
+ boost/graph/clustering_coefficient.hpp [1:1]
+ boost/graph/degree_centrality.hpp [1:1]
+ boost/graph/detail/index.hpp [1:1]
+ boost/graph/directed_graph.hpp [1:1]
+ boost/graph/eccentricity.hpp [1:1]
+ boost/graph/exterior_property.hpp [1:1]
+ boost/graph/numeric_values.hpp [1:1]
+ boost/graph/property_maps/constant_property_map.hpp [1:1]
+ boost/graph/property_maps/container_property_map.hpp [1:1]
+ boost/graph/property_maps/matrix_property_map.hpp [1:1]
+ boost/graph/tiernan_all_cycles.hpp [1:1]
+ boost/graph/undirected_graph.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 809d6a371d03b197a80cbcad5c8fb483
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2014-2015 Antony Polukhin
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/variant/detail/element_index.hpp [6:6]
+ boost/variant/detail/has_result_type.hpp [6:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 80a42b241f946c8a2c62a6f7c0a6158d
+BELONGS ya.make
+ License text:
+ // Copyright 2014,2018 Glen Joseph Fernandes
+ // (glenjofe@gmail.com)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/circular_buffer/base.hpp [7:8]
+ boost/circular_buffer/details.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 80a61ca78f0e3ecbd71447a12ff4074d
+BELONGS ya.make
+ License text:
+ * Copyright 2016 Klemens D. Morgenstern
+ * Copyright 2016, 2017 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/winapi/pipes.hpp [2:3]
+ boost/winapi/process.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 80bd2fc6b1258bb791b6477eb3e7d8fa
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/flyweight/intermodule_holder.hpp at line 3
+ License text:
+ /* Copyright 2006-2011 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/flyweight/intermodule_holder.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 80c074eee2f54de78643f0c56ccb3f6b
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/recalculate.hpp [3:6]
+ boost/geometry/policies/robustness/no_rescale_policy.hpp [3:6]
+ boost/geometry/policies/robustness/robust_point_type.hpp [3:6]
+ boost/geometry/policies/robustness/segment_ratio.hpp [3:3]
+ boost/geometry/policies/robustness/segment_ratio_type.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 80c44e7f6c87f424f98e861b85c5ce2d
+BELONGS ya.make
+ License text:
+ // (C) Copyright John Maddock 2002.
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/gcc_xml.hpp [1:3]
- boost/math/distributions/complement.hpp [1:4]
- boost/math/special_functions/beta.hpp [1:3]
- boost/math/special_functions/cbrt.hpp [1:3]
- boost/math/special_functions/detail/erf_inv.hpp [1:3]
- boost/math/special_functions/detail/gamma_inva.hpp [1:3]
- boost/math/special_functions/detail/ibeta_inv_ab.hpp [1:3]
- boost/math/special_functions/detail/igamma_inverse.hpp [1:3]
- boost/math/special_functions/detail/lanczos_sse2.hpp [1:3]
- boost/math/special_functions/detail/lgamma_small.hpp [1:3]
- boost/math/special_functions/digamma.hpp [1:3]
- boost/math/special_functions/erf.hpp [1:3]
- boost/math/special_functions/expm1.hpp [1:3]
- boost/math/special_functions/hermite.hpp [2:4]
- boost/math/special_functions/laguerre.hpp [2:4]
- boost/math/special_functions/lanczos.hpp [1:3]
- boost/math/special_functions/legendre.hpp [2:4]
- boost/math/special_functions/powm1.hpp [1:3]
- boost/math/special_functions/sign.hpp [1:3]
- boost/math/special_functions/spherical_harmonic.hpp [2:4]
- boost/math/special_functions/sqrt1pm1.hpp [1:3]
- boost/math/special_functions/trigamma.hpp [1:3]
- boost/math/tools/minima.hpp [1:3]
- boost/math/tools/polynomial.hpp [1:2]
- boost/math/tools/rational.hpp [1:3]
- boost/math/tools/roots.hpp [1:3]
- boost/math/tools/toms748_solve.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7d3641595f7238247355f3c0357d25ef
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/experimental/parallel/v2/task_region.hpp at line 8
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/experimental/parallel/v2/task_region.hpp [6:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7d5110d3ce71c7d285877787619305f3
-BELONGS ya.make
- License text:
- Copyright (c) 2005-2006 Joao Abecasis
- Copyright (c) 2006-2007 Tobias Schwinger
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/functional/invocation/invoke.hpp [2:3]
- boost/fusion/functional/invocation/invoke_function_object.hpp [2:3]
- boost/fusion/functional/invocation/invoke_procedure.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7d7dc63b9e6e9d5cbe582c8eb99f9966
-BELONGS ya.make
- License text:
- * Copyright (c) 2009 Helge Bahmann
- * Copyright (c) 2012 Tim Blechmann
- * Copyright (c) 2014 - 2018 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/atomic/detail/ops_gcc_x86_dcas-linux.hpp [6:8]
- boost/atomic/detail/ops_gcc_x86_dcas-osx.hpp [6:8]
- boost/atomic/detail/ops_gcc_x86_dcas.hpp [6:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7d83c56cc7c4ebc1fa20c801845d48c4
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/typeof/msvc/typeof_impl.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7da1e963669f385bf3784df6bc8f2553
-BELONGS ya.make
- License text:
- // Copyright (C) 2005-2006 The Trustees of Indiana University.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/distributed/adjlist/redistribute.hpp [1:1]
- boost/graph/distributed/detail/remote_update_set.hpp [1:1]
- boost/graph/distributed/distributed_graph_utility.hpp [1:3]
- boost/graph/distributed/fruchterman_reingold.hpp [1:1]
- boost/graph/distributed/reverse_graph.hpp [1:1]
- boost/graph/two_bit_color_map.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7dd6d1d05da218a30c942d31b089b985
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2009 Joel de Guzman
- Copyright (c) 2009-2010 Hartmut Kaiser
- Copyright (c) 2010-2011 Christopher Schmidt
- Copyright (c) 2013-2014 Damien Buhl
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/adapted/adt/adapt_adt.hpp [2:5]
- boost/fusion/adapted/adt/adapt_assoc_adt.hpp [2:5]
- boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp [2:2]
- boost/fusion/adapted/struct/adapt_struct_named.hpp [2:4]
- boost/fusion/adapted/struct/define_assoc_struct.hpp [2:2]
- boost/fusion/adapted/struct/define_struct.hpp [2:2]
- boost/fusion/adapted/struct/detail/define_struct.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7dfaa2a53a6b13ff30e70d1bb19164b4
-BELONGS ya.make
- License text:
- // Copyright (C) 2001 Daryle Walker.
- // Copyright (C) 2003 Vesa Karvonen.
- // Copyright (C) 2003 Gennaro Prota.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/integer/static_log2.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7e1e3704b1ac69a10bb7c8a89f254b60
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2008 Joel de Guzman
- Copyright (c) 2001-2008 Hartmut Kaiser
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit.hpp [2:4]
- boost/spirit/home/classic/namespace.hpp [2:4]
- boost/spirit/include/classic.hpp [2:4]
- boost/spirit/include/classic_actions.hpp [2:4]
- boost/spirit/include/classic_actor.hpp [2:4]
- boost/spirit/include/classic_alternative.hpp [2:4]
- boost/spirit/include/classic_as_parser.hpp [2:4]
- boost/spirit/include/classic_assert.hpp [2:4]
- boost/spirit/include/classic_assign_actor.hpp [2:4]
- boost/spirit/include/classic_assign_key_actor.hpp [2:4]
- boost/spirit/include/classic_ast.hpp [2:4]
- boost/spirit/include/classic_ast_fwd.hpp [2:4]
- boost/spirit/include/classic_attribute.hpp [2:4]
- boost/spirit/include/classic_basic_chset.hpp [2:4]
- boost/spirit/include/classic_chset.hpp [2:4]
- boost/spirit/include/classic_chset_operators.hpp [2:4]
- boost/spirit/include/classic_clear_actor.hpp [2:4]
- boost/spirit/include/classic_closure.hpp [2:4]
- boost/spirit/include/classic_closure_context.hpp [2:4]
- boost/spirit/include/classic_closure_fwd.hpp [2:4]
- boost/spirit/include/classic_common.hpp [2:4]
- boost/spirit/include/classic_common_fwd.hpp [2:4]
- boost/spirit/include/classic_composite.hpp [2:4]
- boost/spirit/include/classic_config.hpp [2:4]
- boost/spirit/include/classic_confix.hpp [2:4]
- boost/spirit/include/classic_confix_fwd.hpp [2:4]
- boost/spirit/include/classic_core.hpp [2:4]
- boost/spirit/include/classic_debug.hpp [2:4]
- boost/spirit/include/classic_debug_node.hpp [2:4]
- boost/spirit/include/classic_decrement_actor.hpp [2:4]
- boost/spirit/include/classic_difference.hpp [2:4]
- boost/spirit/include/classic_directives.hpp [2:4]
- boost/spirit/include/classic_distinct.hpp [2:4]
- boost/spirit/include/classic_distinct_fwd.hpp [2:4]
- boost/spirit/include/classic_dynamic.hpp [2:4]
- boost/spirit/include/classic_epsilon.hpp [2:4]
- boost/spirit/include/classic_erase_actor.hpp [2:4]
- boost/spirit/include/classic_error_handling.hpp [2:4]
- boost/spirit/include/classic_escape_char.hpp [2:4]
- boost/spirit/include/classic_escape_char_fwd.hpp [2:4]
- boost/spirit/include/classic_exceptions.hpp [2:4]
- boost/spirit/include/classic_exceptions_fwd.hpp [2:4]
- boost/spirit/include/classic_exclusive_or.hpp [2:4]
- boost/spirit/include/classic_file_iterator.hpp [2:4]
- boost/spirit/include/classic_file_iterator_fwd.hpp [2:4]
- boost/spirit/include/classic_fixed_size_queue.hpp [2:4]
- boost/spirit/include/classic_flush_multi_pass.hpp [2:4]
- boost/spirit/include/classic_for.hpp [2:4]
- boost/spirit/include/classic_functor_parser.hpp [2:4]
- boost/spirit/include/classic_fundamental.hpp [2:4]
- boost/spirit/include/classic_grammar.hpp [2:4]
- boost/spirit/include/classic_grammar_def.hpp [2:4]
- boost/spirit/include/classic_grammar_def_fwd.hpp [2:4]
- boost/spirit/include/classic_if.hpp [2:4]
- boost/spirit/include/classic_increment_actor.hpp [2:4]
- boost/spirit/include/classic_insert_at_actor.hpp [2:4]
- boost/spirit/include/classic_insert_key_actor.hpp [2:4]
- boost/spirit/include/classic_intersection.hpp [2:4]
- boost/spirit/include/classic_iterator.hpp [2:4]
- boost/spirit/include/classic_kleene_star.hpp [2:4]
- boost/spirit/include/classic_lazy.hpp [2:4]
- boost/spirit/include/classic_list.hpp [2:4]
- boost/spirit/include/classic_lists.hpp [2:4]
- boost/spirit/include/classic_lists_fwd.hpp [2:4]
- boost/spirit/include/classic_loops.hpp [2:4]
- boost/spirit/include/classic_match.hpp [2:4]
- boost/spirit/include/classic_meta.hpp [2:4]
- boost/spirit/include/classic_minimal.hpp [2:4]
- boost/spirit/include/classic_multi_pass.hpp [2:4]
- boost/spirit/include/classic_multi_pass_fwd.hpp [2:4]
- boost/spirit/include/classic_nil.hpp [2:4]
- boost/spirit/include/classic_no_actions.hpp [2:4]
- boost/spirit/include/classic_numerics.hpp [2:4]
- boost/spirit/include/classic_numerics_fwd.hpp [2:4]
- boost/spirit/include/classic_operators.hpp [2:4]
- boost/spirit/include/classic_optional.hpp [2:4]
- boost/spirit/include/classic_parametric.hpp [2:4]
- boost/spirit/include/classic_parse_tree.hpp [2:4]
- boost/spirit/include/classic_parse_tree_fwd.hpp [2:4]
- boost/spirit/include/classic_parse_tree_utils.hpp [2:4]
- boost/spirit/include/classic_parser.hpp [2:4]
- boost/spirit/include/classic_parser_context.hpp [2:4]
- boost/spirit/include/classic_parser_id.hpp [2:4]
- boost/spirit/include/classic_parser_names.hpp [2:4]
- boost/spirit/include/classic_parser_traits.hpp [2:4]
- boost/spirit/include/classic_position_iterator.hpp [2:4]
- boost/spirit/include/classic_position_iterator_fwd.hpp [2:4]
- boost/spirit/include/classic_positive.hpp [2:4]
- boost/spirit/include/classic_primitives.hpp [2:4]
- boost/spirit/include/classic_push_back_actor.hpp [2:4]
- boost/spirit/include/classic_push_front_actor.hpp [2:4]
- boost/spirit/include/classic_range_run.hpp [2:4]
- boost/spirit/include/classic_ref_actor.hpp [2:4]
- boost/spirit/include/classic_ref_const_ref_actor.hpp [2:4]
- boost/spirit/include/classic_ref_const_ref_const_ref_a.hpp [2:4]
- boost/spirit/include/classic_ref_const_ref_value_actor.hpp [2:4]
- boost/spirit/include/classic_ref_value_actor.hpp [2:4]
- boost/spirit/include/classic_refactoring.hpp [2:4]
- boost/spirit/include/classic_regex.hpp [2:4]
- boost/spirit/include/classic_rule.hpp [2:4]
- boost/spirit/include/classic_rule_alias.hpp [2:4]
- boost/spirit/include/classic_rule_parser.hpp [2:4]
- boost/spirit/include/classic_safe_bool.hpp [2:4]
- boost/spirit/include/classic_scanner.hpp [2:4]
- boost/spirit/include/classic_scanner_fwd.hpp [2:4]
- boost/spirit/include/classic_scoped_lock.hpp [2:4]
- boost/spirit/include/classic_select.hpp [2:4]
- boost/spirit/include/classic_sequence.hpp [2:4]
- boost/spirit/include/classic_sequential_and.hpp [2:4]
- boost/spirit/include/classic_sequential_or.hpp [2:4]
- boost/spirit/include/classic_skipper.hpp [2:4]
- boost/spirit/include/classic_skipper_fwd.hpp [2:4]
- boost/spirit/include/classic_static.hpp [2:4]
- boost/spirit/include/classic_stored_rule.hpp [2:4]
- boost/spirit/include/classic_stored_rule_fwd.hpp [2:4]
- boost/spirit/include/classic_subrule.hpp [2:4]
- boost/spirit/include/classic_subrule_fwd.hpp [2:4]
- boost/spirit/include/classic_swap_actor.hpp [2:4]
- boost/spirit/include/classic_switch.hpp [2:4]
- boost/spirit/include/classic_symbols.hpp [2:4]
- boost/spirit/include/classic_symbols_fwd.hpp [2:4]
- boost/spirit/include/classic_traverse.hpp [2:4]
- boost/spirit/include/classic_tree_to_xml.hpp [2:4]
- boost/spirit/include/classic_typeof.hpp [2:4]
- boost/spirit/include/classic_utility.hpp [2:4]
- boost/spirit/include/classic_version.hpp [2:4]
- boost/spirit/include/classic_while.hpp [2:4]
- boost/spirit/include/phoenix1.hpp [2:4]
- boost/spirit/include/phoenix1_actor.hpp [2:4]
- boost/spirit/include/phoenix1_binders.hpp [2:4]
- boost/spirit/include/phoenix1_casts.hpp [2:4]
- boost/spirit/include/phoenix1_closures.hpp [2:4]
- boost/spirit/include/phoenix1_composite.hpp [2:4]
- boost/spirit/include/phoenix1_functions.hpp [2:4]
- boost/spirit/include/phoenix1_new.hpp [2:4]
- boost/spirit/include/phoenix1_operators.hpp [2:4]
- boost/spirit/include/phoenix1_primitives.hpp [2:4]
- boost/spirit/include/phoenix1_special_ops.hpp [2:4]
- boost/spirit/include/phoenix1_statements.hpp [2:4]
- boost/spirit/include/phoenix1_tuple_helpers.hpp [2:4]
- boost/spirit/include/phoenix1_tuples.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7e4aa3d1095ffd1092cff9f549b3de89
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/rolling_variance.hpp at line 6, boost/fusion/algorithm/query/any.hpp at line 5, boost/fusion/algorithm/query/detail/any.hpp at line 5, boost/fusion/container/generation/make_cons.hpp at line 5, boost/fusion/container/list/cons.hpp at line 5, boost/fusion/container/list/cons_fwd.hpp at line 5, boost/fusion/container/list/cons_iterator.hpp at line 5, boost/fusion/container/list/detail/begin_impl.hpp at line 5, boost/fusion/container/list/detail/deref_impl.hpp at line 5, boost/fusion/container/list/detail/end_impl.hpp at line 5, boost/fusion/container/list/detail/next_impl.hpp at line 5, boost/fusion/container/list/detail/value_of_impl.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/accumulators/statistics/rolling_variance.hpp [3:6]
- boost/fusion/algorithm/query/any.hpp [2:4]
- boost/fusion/algorithm/query/detail/any.hpp [2:4]
- boost/fusion/container/generation/make_cons.hpp [2:3]
- boost/fusion/container/list/cons.hpp [2:3]
- boost/fusion/container/list/cons_fwd.hpp [2:3]
- boost/fusion/container/list/cons_iterator.hpp [2:3]
- boost/fusion/container/list/detail/begin_impl.hpp [2:3]
- boost/fusion/container/list/detail/deref_impl.hpp [2:3]
- boost/fusion/container/list/detail/end_impl.hpp [2:3]
- boost/fusion/container/list/detail/next_impl.hpp [2:3]
- boost/fusion/container/list/detail/value_of_impl.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7e6f5e41baa083be7230e409d7f43ed2
-BELONGS ya.make
- License text:
- // Copyright (c) 2002, 2003 Peter Dimov
- // Copyright (c) 2003 Daniel Frey
- // Copyright (c) 2003 Howard Hinnant
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/core/checked_delete.hpp [13:15]
- boost/signals2/detail/lwm_win32_cs.hpp [4:6]
- boost/smart_ptr/detail/lwm_win32_cs.hpp [13:14]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7ed1eb379e17833ff37681f581fa429d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/sort/pdqsort/pdqsort.hpp at line 5
- License text:
- // Copyright Orson Peters 2017.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/sort/pdqsort/pdqsort.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7ee360b4e286bb266367da5faf97ebd7
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2006, 2007, 2012, 2014.
- // Copyright Paul A. Bristow 2006, 2007, 2012
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/distributions/detail/common_error_handling.hpp [1:2]
- boost/math/special_functions.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7ee7926211cade048fc30fb0b3fa464f
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/recalculate.hpp [3:6]
- boost/geometry/policies/robustness/no_rescale_policy.hpp [3:6]
- boost/geometry/policies/robustness/robust_point_type.hpp [3:6]
- boost/geometry/policies/robustness/segment_ratio_type.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7f2db459478f707a0dc01561712dabb7
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/is_xxx.hpp at line 3, boost/parameter/aux_/result_of0.hpp at line 3, boost/parameter/aux_/tag.hpp at line 3, boost/parameter/binding.hpp at line 3, boost/parameter/match.hpp at line 3, boost/python/detail/is_xxx.hpp at line 3
- License text:
- // Copyright David Abrahams 2005. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/detail/is_xxx.hpp [1:3]
- boost/parameter/aux_/result_of0.hpp [1:3]
- boost/parameter/aux_/tag.hpp [1:3]
- boost/parameter/binding.hpp [1:3]
- boost/parameter/match.hpp [1:3]
- boost/python/detail/is_xxx.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7f69d13bc868e45f410b7807222b3a49
-BELONGS ya.make
- License text:
- // Copyright (C) 2006-2010 The Trustees of Indiana University.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/distributed/one_bit_color_map.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7f8576d8bbd73977a48fce0347863709
-BELONGS ya.make
- License text:
- // Copyright (c) Intel Corporation 2008.
- // Copyright (c) 2008-2012 Simonson Lucanus.
- // Copyright (c) 2012-2012 Andrii Sydorchuk.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/polygon/interval_concept.hpp [3:5]
- boost/polygon/interval_data.hpp [3:5]
- boost/polygon/interval_traits.hpp [3:5]
- boost/polygon/point_concept.hpp [3:5]
- boost/polygon/point_data.hpp [3:5]
- boost/polygon/point_traits.hpp [3:5]
- boost/polygon/segment_concept.hpp [3:5]
- boost/polygon/segment_data.hpp [3:5]
- boost/polygon/segment_traits.hpp [3:5]
- boost/polygon/transform.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7fe04975698c2d2ed95aae6c40492320
-BELONGS libs/iostreams/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iostreams/categories.hpp at line 4, boost/iostreams/chain.hpp at line 4, boost/iostreams/char_traits.hpp at line 4, boost/iostreams/checked_operations.hpp at line 4, boost/iostreams/close.hpp at line 4, boost/iostreams/code_converter.hpp at line 4, boost/iostreams/combine.hpp at line 4, boost/iostreams/compose.hpp at line 4, boost/iostreams/concepts.hpp at line 4, boost/iostreams/constants.hpp at line 4, boost/iostreams/copy.hpp at line 4, boost/iostreams/detail/access_control.hpp at line 4, boost/iostreams/detail/adapter/concept_adapter.hpp at line 4, boost/iostreams/detail/adapter/direct_adapter.hpp at line 4, boost/iostreams/detail/adapter/mode_adapter.hpp at line 4, boost/iostreams/detail/adapter/non_blocking_adapter.hpp at line 4, boost/iostreams/detail/adapter/output_iterator_adapter.hpp at line 4, boost/iostreams/detail/adapter/range_adapter.hpp at line 4, boost/iostreams/detail/add_facet.hpp at line 4, boost/iostreams/detail/bool_trait_def.hpp at line 4, boost/iostreams/detail/broken_overload_resolution/forward.hpp at line 4, boost/iostreams/detail/broken_overload_resolution/stream.hpp at line 4, boost/iostreams/detail/broken_overload_resolution/stream_buffer.hpp at line 4, boost/iostreams/detail/buffer.hpp at line 4, boost/iostreams/detail/call_traits.hpp at line 4, boost/iostreams/detail/char_traits.hpp at line 4, boost/iostreams/detail/codecvt_helper.hpp at line 4, boost/iostreams/detail/codecvt_holder.hpp at line 4, boost/iostreams/detail/config/auto_link.hpp at line 4, boost/iostreams/detail/config/bzip2.hpp at line 4, boost/iostreams/detail/config/codecvt.hpp at line 4, boost/iostreams/detail/config/disable_warnings.hpp at line 4, boost/iostreams/detail/config/dyn_link.hpp at line 4, boost/iostreams/detail/config/enable_warnings.hpp at line 4, boost/iostreams/detail/config/gcc.hpp at line 4, boost/iostreams/detail/config/limits.hpp at line 4, boost/iostreams/detail/config/overload_resolution.hpp at line 4, boost/iostreams/detail/config/wide_streams.hpp at line 4, boost/iostreams/detail/config/windows_posix.hpp at line 4, boost/iostreams/detail/config/zlib.hpp at line 4, boost/iostreams/detail/counted_array.hpp at line 4, boost/iostreams/detail/default_arg.hpp at line 4, boost/iostreams/detail/dispatch.hpp at line 4, boost/iostreams/detail/double_object.hpp at line 4, boost/iostreams/detail/enable_if_stream.hpp at line 4, boost/iostreams/detail/error.hpp at line 4, boost/iostreams/detail/forward.hpp at line 4, boost/iostreams/detail/fstream.hpp at line 4, boost/iostreams/detail/ios.hpp at line 4, boost/iostreams/detail/iostream.hpp at line 4, boost/iostreams/detail/is_dereferenceable.hpp at line 4, boost/iostreams/detail/is_iterator_range.hpp at line 4, boost/iostreams/detail/newline.hpp at line 4, boost/iostreams/detail/optional.hpp at line 4, boost/iostreams/detail/param_type.hpp at line 4, boost/iostreams/detail/push.hpp at line 4, boost/iostreams/detail/push_params.hpp at line 4, boost/iostreams/detail/resolve.hpp at line 4, boost/iostreams/detail/select.hpp at line 4, boost/iostreams/detail/select_by_size.hpp at line 4, boost/iostreams/detail/streambuf.hpp at line 4, boost/iostreams/detail/streambuf/chainbuf.hpp at line 4, boost/iostreams/detail/streambuf/direct_streambuf.hpp at line 4, boost/iostreams/detail/streambuf/indirect_streambuf.hpp at line 4, boost/iostreams/detail/streambuf/linked_streambuf.hpp at line 4, boost/iostreams/detail/system_failure.hpp at line 4, boost/iostreams/detail/template_params.hpp at line 4, boost/iostreams/detail/translate_int_type.hpp at line 4, boost/iostreams/detail/wrap_unwrap.hpp at line 4, boost/iostreams/device/array.hpp at line 4, boost/iostreams/device/back_inserter.hpp at line 4, boost/iostreams/device/file.hpp at line 4, boost/iostreams/device/file_descriptor.hpp at line 4, boost/iostreams/device/null.hpp at line 4, boost/iostreams/filter/aggregate.hpp at line 4, boost/iostreams/filter/bzip2.hpp at line 4, boost/iostreams/filter/counter.hpp at line 4, boost/iostreams/filter/gzip.hpp at line 4, boost/iostreams/filter/line.hpp at line 4, boost/iostreams/filter/newline.hpp at line 4, boost/iostreams/filter/regex.hpp at line 4, boost/iostreams/filter/stdio.hpp at line 4, boost/iostreams/filter/symmetric.hpp at line 4, boost/iostreams/filter/test.hpp at line 4, boost/iostreams/filter/zlib.hpp at line 4, boost/iostreams/filtering_stream.hpp at line 4, boost/iostreams/filtering_streambuf.hpp at line 4, boost/iostreams/flush.hpp at line 4, boost/iostreams/get.hpp at line 4, boost/iostreams/imbue.hpp at line 4, boost/iostreams/input_sequence.hpp at line 4, boost/iostreams/invert.hpp at line 4, boost/iostreams/operations.hpp at line 4, boost/iostreams/operations_fwd.hpp at line 4, boost/iostreams/optimal_buffer_size.hpp at line 4, boost/iostreams/output_sequence.hpp at line 4, boost/iostreams/pipeline.hpp at line 4, boost/iostreams/positioning.hpp at line 4, boost/iostreams/put.hpp at line 4, boost/iostreams/putback.hpp at line 4, boost/iostreams/read.hpp at line 4, boost/iostreams/seek.hpp at line 4, boost/iostreams/skip.hpp at line 4, boost/iostreams/stream.hpp at line 4, boost/iostreams/stream_buffer.hpp at line 4, boost/iostreams/tee.hpp at line 4, boost/iostreams/traits.hpp at line 4, boost/iostreams/traits_fwd.hpp at line 4, boost/iostreams/write.hpp at line 4, libs/iostreams/src/bzip2.cpp at line 4, libs/iostreams/src/file_descriptor.cpp at line 4, libs/iostreams/src/gzip.cpp at line 4, libs/iostreams/src/zlib.cpp at line 4
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/iostreams/categories.hpp [1:4]
- boost/iostreams/chain.hpp [1:4]
- boost/iostreams/char_traits.hpp [1:4]
- boost/iostreams/checked_operations.hpp [1:4]
- boost/iostreams/close.hpp [1:4]
- boost/iostreams/code_converter.hpp [1:4]
- boost/iostreams/combine.hpp [1:4]
- boost/iostreams/compose.hpp [1:4]
- boost/iostreams/concepts.hpp [1:4]
- boost/iostreams/constants.hpp [1:4]
- boost/iostreams/copy.hpp [1:4]
- boost/iostreams/detail/access_control.hpp [1:4]
- boost/iostreams/detail/adapter/concept_adapter.hpp [1:4]
- boost/iostreams/detail/adapter/direct_adapter.hpp [1:4]
- boost/iostreams/detail/adapter/mode_adapter.hpp [1:4]
- boost/iostreams/detail/adapter/non_blocking_adapter.hpp [1:4]
- boost/iostreams/detail/adapter/output_iterator_adapter.hpp [1:4]
- boost/iostreams/detail/adapter/range_adapter.hpp [1:4]
- boost/iostreams/detail/add_facet.hpp [1:4]
- boost/iostreams/detail/bool_trait_def.hpp [1:4]
- boost/iostreams/detail/broken_overload_resolution/forward.hpp [1:4]
- boost/iostreams/detail/broken_overload_resolution/stream.hpp [1:4]
- boost/iostreams/detail/broken_overload_resolution/stream_buffer.hpp [1:4]
- boost/iostreams/detail/buffer.hpp [1:4]
- boost/iostreams/detail/call_traits.hpp [1:4]
- boost/iostreams/detail/char_traits.hpp [1:4]
- boost/iostreams/detail/codecvt_helper.hpp [1:4]
- boost/iostreams/detail/codecvt_holder.hpp [1:4]
- boost/iostreams/detail/config/auto_link.hpp [1:4]
- boost/iostreams/detail/config/bzip2.hpp [1:4]
- boost/iostreams/detail/config/codecvt.hpp [1:4]
- boost/iostreams/detail/config/disable_warnings.hpp [1:4]
- boost/iostreams/detail/config/dyn_link.hpp [1:4]
- boost/iostreams/detail/config/enable_warnings.hpp [1:4]
- boost/iostreams/detail/config/gcc.hpp [1:4]
- boost/iostreams/detail/config/limits.hpp [1:4]
- boost/iostreams/detail/config/overload_resolution.hpp [1:4]
- boost/iostreams/detail/config/wide_streams.hpp [1:4]
- boost/iostreams/detail/config/windows_posix.hpp [1:5]
- boost/iostreams/detail/config/zlib.hpp [1:4]
- boost/iostreams/detail/counted_array.hpp [1:4]
- boost/iostreams/detail/default_arg.hpp [1:4]
- boost/iostreams/detail/dispatch.hpp [1:4]
- boost/iostreams/detail/double_object.hpp [1:4]
- boost/iostreams/detail/enable_if_stream.hpp [1:4]
- boost/iostreams/detail/error.hpp [1:4]
- boost/iostreams/detail/forward.hpp [1:4]
- boost/iostreams/detail/fstream.hpp [1:4]
- boost/iostreams/detail/ios.hpp [1:4]
- boost/iostreams/detail/iostream.hpp [1:4]
- boost/iostreams/detail/is_dereferenceable.hpp [1:5]
- boost/iostreams/detail/is_iterator_range.hpp [1:4]
- boost/iostreams/detail/newline.hpp [1:4]
- boost/iostreams/detail/optional.hpp [1:4]
- boost/iostreams/detail/param_type.hpp [1:4]
- boost/iostreams/detail/push.hpp [1:4]
- boost/iostreams/detail/push_params.hpp [1:4]
- boost/iostreams/detail/resolve.hpp [1:4]
- boost/iostreams/detail/select.hpp [1:4]
- boost/iostreams/detail/select_by_size.hpp [1:4]
- boost/iostreams/detail/streambuf.hpp [1:4]
- boost/iostreams/detail/streambuf/chainbuf.hpp [1:4]
- boost/iostreams/detail/streambuf/direct_streambuf.hpp [1:4]
- boost/iostreams/detail/streambuf/indirect_streambuf.hpp [1:4]
- boost/iostreams/detail/streambuf/linked_streambuf.hpp [1:4]
- boost/iostreams/detail/system_failure.hpp [1:5]
- boost/iostreams/detail/template_params.hpp [1:4]
- boost/iostreams/detail/translate_int_type.hpp [1:4]
- boost/iostreams/detail/wrap_unwrap.hpp [1:4]
- boost/iostreams/device/array.hpp [1:4]
- boost/iostreams/device/back_inserter.hpp [1:4]
- boost/iostreams/device/file.hpp [1:4]
- boost/iostreams/device/file_descriptor.hpp [1:4]
- boost/iostreams/device/null.hpp [1:4]
- boost/iostreams/filter/aggregate.hpp [1:4]
- boost/iostreams/filter/bzip2.hpp [1:4]
- boost/iostreams/filter/counter.hpp [1:4]
- boost/iostreams/filter/gzip.hpp [1:4]
- boost/iostreams/filter/line.hpp [1:4]
- boost/iostreams/filter/newline.hpp [1:4]
- boost/iostreams/filter/regex.hpp [1:4]
- boost/iostreams/filter/stdio.hpp [1:4]
- boost/iostreams/filter/symmetric.hpp [1:4]
- boost/iostreams/filter/test.hpp [1:4]
- boost/iostreams/filter/zlib.hpp [1:4]
- boost/iostreams/filtering_stream.hpp [1:4]
- boost/iostreams/filtering_streambuf.hpp [1:4]
- boost/iostreams/flush.hpp [1:4]
- boost/iostreams/get.hpp [1:4]
- boost/iostreams/imbue.hpp [1:4]
- boost/iostreams/input_sequence.hpp [1:4]
- boost/iostreams/invert.hpp [1:4]
- boost/iostreams/operations.hpp [1:4]
- boost/iostreams/operations_fwd.hpp [1:4]
- boost/iostreams/optimal_buffer_size.hpp [1:4]
- boost/iostreams/output_sequence.hpp [1:4]
- boost/iostreams/pipeline.hpp [1:4]
- boost/iostreams/positioning.hpp [1:4]
- boost/iostreams/put.hpp [1:4]
- boost/iostreams/putback.hpp [1:4]
- boost/iostreams/read.hpp [1:4]
- boost/iostreams/seek.hpp [1:4]
- boost/iostreams/skip.hpp [1:4]
- boost/iostreams/stream.hpp [1:4]
- boost/iostreams/stream_buffer.hpp [1:4]
- boost/iostreams/tee.hpp [1:4]
- boost/iostreams/traits.hpp [1:4]
- boost/iostreams/traits_fwd.hpp [1:4]
- boost/iostreams/write.hpp [1:4]
- libs/iostreams/src/bzip2.cpp [1:4]
- libs/iostreams/src/file_descriptor.cpp [1:4]
- libs/iostreams/src/gzip.cpp [1:4]
- libs/iostreams/src/zlib.cpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7fe227ec710d458b7abf79bdc3c1ad1e
-BELONGS ya.make
- License text:
- Copyright (c) 2011 Thomas Heller
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/support/detail/pp_round.hpp [2:2]
- boost/phoenix/core/call.hpp [2:3]
- boost/phoenix/core/detail/cpp03/phx2_result.hpp [2:2]
- boost/phoenix/core/detail/cpp03/phx2_result.hpp [24:24]
- boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_10.hpp [2:2]
- boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_20.hpp [2:2]
- boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_30.hpp [2:2]
- boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_40.hpp [2:2]
- boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_50.hpp [2:2]
- boost/phoenix/core/detail/phx2_result.hpp [2:2]
- boost/phoenix/core/v2_eval.hpp [2:2]
- boost/phoenix/function/adapt_callable.hpp [2:3]
- boost/phoenix/scope/detail/local_variable.hpp [2:4]
- boost/phoenix/scope/this.hpp [2:3]
- boost/phoenix/support/preprocessor/round.hpp [2:2]
- boost/spirit/home/lex/argument.hpp [1:4]
- boost/spirit/home/lex/argument_phoenix.hpp [1:2]
- boost/spirit/home/lex/lexer/support_functions_expression.hpp [1:2]
- boost/spirit/home/support/argument.hpp [2:4]
- boost/spirit/home/support/argument_expression.hpp [2:4]
- boost/spirit/home/support/context.hpp [2:4]
- boost/spirit/home/support/terminal.hpp [2:4]
- boost/spirit/home/support/terminal_expression.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7fe63dbfc34a676863979ab818e17142
-BELONGS ya.make
- License text:
- // in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/detail/airy_ai_bi_zero.hpp [8:8]
- boost/math/special_functions/detail/bessel_jy_zero.hpp [8:8]
- boost/multiprecision/cpp_dec_float.hpp [9:9]
- boost/multiprecision/detail/functions/pow.hpp [10:10]
- boost/multiprecision/detail/functions/trig.hpp [10:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7fe9441ac3e18d7a1f3d2435760c49b9
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/vmd/assert.hpp at line 4, boost/vmd/assert_is_array.hpp at line 4, boost/vmd/assert_is_empty.hpp at line 4, boost/vmd/assert_is_identifier.hpp at line 4, boost/vmd/assert_is_list.hpp at line 4, boost/vmd/assert_is_number.hpp at line 4, boost/vmd/assert_is_seq.hpp at line 4, boost/vmd/assert_is_tuple.hpp at line 4, boost/vmd/assert_is_type.hpp at line 4, boost/vmd/detail/adjust_tuple_type.hpp at line 4, boost/vmd/detail/array.hpp at line 4, boost/vmd/detail/assert.hpp at line 4, boost/vmd/detail/data_equal.hpp at line 4, boost/vmd/detail/data_equal_common.hpp at line 4, boost/vmd/detail/empty_result.hpp at line 4, boost/vmd/detail/equal.hpp at line 4, boost/vmd/detail/equal_common.hpp at line 4, boost/vmd/detail/equal_type.hpp at line 4, boost/vmd/detail/identifier.hpp at line 4, boost/vmd/detail/identifier_concat.hpp at line 4, boost/vmd/detail/identifier_type.hpp at line 4, boost/vmd/detail/idprefix.hpp at line 4, boost/vmd/detail/is_array.hpp at line 4, boost/vmd/detail/is_array_common.hpp at line 4, boost/vmd/detail/is_empty.hpp at line 4, boost/vmd/detail/is_empty_array.hpp at line 4, boost/vmd/detail/is_empty_tuple.hpp at line 4, boost/vmd/detail/is_entire.hpp at line 4, boost/vmd/detail/is_identifier.hpp at line 4, boost/vmd/detail/is_list.hpp at line 4, boost/vmd/detail/is_number.hpp at line 4, boost/vmd/detail/is_seq.hpp at line 4, boost/vmd/detail/is_tuple.hpp at line 4, boost/vmd/detail/is_type.hpp at line 4, boost/vmd/detail/is_type_type.hpp at line 4, boost/vmd/detail/list.hpp at line 4, boost/vmd/detail/match_identifier.hpp at line 4, boost/vmd/detail/match_identifier_common.hpp at line 4, boost/vmd/detail/match_single_identifier.hpp at line 4, boost/vmd/detail/modifiers.hpp at line 4, boost/vmd/detail/mods.hpp at line 4, boost/vmd/detail/nil_registration.hpp at line 4, boost/vmd/detail/not_empty.hpp at line 4, boost/vmd/detail/number_registration.hpp at line 4, boost/vmd/detail/only_after.hpp at line 4, boost/vmd/detail/parens.hpp at line 4, boost/vmd/detail/parens_common.hpp at line 4, boost/vmd/detail/parens_split.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_1.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_10.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_11.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_12.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_13.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_14.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_15.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_16.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_2.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_3.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_4.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_5.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_6.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_7.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_8.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_9.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_specific.hpp at line 4, boost/vmd/detail/recurse/equal/equal_1.hpp at line 4, boost/vmd/detail/recurse/equal/equal_10.hpp at line 4, boost/vmd/detail/recurse/equal/equal_11.hpp at line 4, boost/vmd/detail/recurse/equal/equal_12.hpp at line 4, boost/vmd/detail/recurse/equal/equal_13.hpp at line 4, boost/vmd/detail/recurse/equal/equal_14.hpp at line 4, boost/vmd/detail/recurse/equal/equal_15.hpp at line 4, boost/vmd/detail/recurse/equal/equal_16.hpp at line 4, boost/vmd/detail/recurse/equal/equal_2.hpp at line 4, boost/vmd/detail/recurse/equal/equal_3.hpp at line 4, boost/vmd/detail/recurse/equal/equal_4.hpp at line 4, boost/vmd/detail/recurse/equal/equal_5.hpp at line 4, boost/vmd/detail/recurse/equal/equal_6.hpp at line 4, boost/vmd/detail/recurse/equal/equal_7.hpp at line 4, boost/vmd/detail/recurse/equal/equal_8.hpp at line 4, boost/vmd/detail/recurse/equal/equal_9.hpp at line 4, boost/vmd/detail/recurse/equal/equal_headers.hpp at line 4, boost/vmd/detail/seq.hpp at line 4, boost/vmd/detail/sequence_arity.hpp at line 4, boost/vmd/detail/sequence_common.hpp at line 4, boost/vmd/detail/sequence_elem.hpp at line 4, boost/vmd/detail/sequence_enum.hpp at line 4, boost/vmd/detail/sequence_size.hpp at line 4, boost/vmd/detail/sequence_to_array.hpp at line 4, boost/vmd/detail/sequence_to_list.hpp at line 4, boost/vmd/detail/sequence_to_seq.hpp at line 4, boost/vmd/detail/sequence_to_tuple.hpp at line 4, boost/vmd/detail/sequence_type.hpp at line 4, boost/vmd/detail/setup.hpp at line 4, boost/vmd/detail/tuple.hpp at line 4, boost/vmd/detail/type_registration.hpp at line 4, boost/vmd/detail/variadic_pop_front.hpp at line 4, boost/vmd/elem.hpp at line 4, boost/vmd/empty.hpp at line 4, boost/vmd/enum.hpp at line 4, boost/vmd/equal.hpp at line 4, boost/vmd/get_type.hpp at line 4, boost/vmd/identity.hpp at line 4, boost/vmd/is_array.hpp at line 4, boost/vmd/is_empty.hpp at line 4, boost/vmd/is_empty_array.hpp at line 4, boost/vmd/is_empty_list.hpp at line 4, boost/vmd/is_identifier.hpp at line 4, boost/vmd/is_list.hpp at line 4, boost/vmd/is_multi.hpp at line 4, boost/vmd/is_number.hpp at line 4, boost/vmd/is_parens_empty.hpp at line 4, boost/vmd/is_seq.hpp at line 4, boost/vmd/is_tuple.hpp at line 4, boost/vmd/is_type.hpp at line 4, boost/vmd/is_unary.hpp at line 4, boost/vmd/not_equal.hpp at line 4, boost/vmd/size.hpp at line 4, boost/vmd/to_array.hpp at line 4, boost/vmd/to_list.hpp at line 4, boost/vmd/to_seq.hpp at line 4, boost/vmd/to_tuple.hpp at line 4, boost/vmd/vmd.hpp at line 4
- License text:
- // (C) Copyright Edward Diener 2011-2015
- // Use, modification and distribution are subject to the Boost Software License,
- // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/vmd/assert.hpp [2:4]
- boost/vmd/assert_is_array.hpp [2:4]
- boost/vmd/assert_is_empty.hpp [2:4]
- boost/vmd/assert_is_identifier.hpp [2:4]
- boost/vmd/assert_is_list.hpp [2:4]
- boost/vmd/assert_is_number.hpp [2:4]
- boost/vmd/assert_is_seq.hpp [2:4]
- boost/vmd/assert_is_tuple.hpp [2:4]
- boost/vmd/assert_is_type.hpp [2:4]
- boost/vmd/detail/adjust_tuple_type.hpp [2:4]
- boost/vmd/detail/array.hpp [2:4]
- boost/vmd/detail/assert.hpp [2:4]
- boost/vmd/detail/data_equal.hpp [2:4]
- boost/vmd/detail/data_equal_common.hpp [2:4]
- boost/vmd/detail/empty_result.hpp [2:4]
- boost/vmd/detail/equal.hpp [2:4]
- boost/vmd/detail/equal_common.hpp [2:4]
- boost/vmd/detail/equal_type.hpp [2:4]
- boost/vmd/detail/identifier.hpp [2:4]
- boost/vmd/detail/identifier_concat.hpp [2:4]
- boost/vmd/detail/identifier_type.hpp [2:4]
- boost/vmd/detail/idprefix.hpp [2:4]
- boost/vmd/detail/is_array.hpp [2:4]
- boost/vmd/detail/is_array_common.hpp [2:4]
- boost/vmd/detail/is_empty.hpp [2:4]
- boost/vmd/detail/is_empty_array.hpp [2:4]
- boost/vmd/detail/is_empty_tuple.hpp [2:4]
- boost/vmd/detail/is_entire.hpp [2:4]
- boost/vmd/detail/is_identifier.hpp [2:4]
- boost/vmd/detail/is_list.hpp [2:4]
- boost/vmd/detail/is_number.hpp [2:4]
- boost/vmd/detail/is_seq.hpp [2:4]
- boost/vmd/detail/is_tuple.hpp [2:4]
- boost/vmd/detail/is_type.hpp [2:4]
- boost/vmd/detail/is_type_type.hpp [2:4]
- boost/vmd/detail/list.hpp [2:4]
- boost/vmd/detail/match_identifier.hpp [2:4]
- boost/vmd/detail/match_identifier_common.hpp [2:4]
- boost/vmd/detail/match_single_identifier.hpp [2:4]
- boost/vmd/detail/modifiers.hpp [2:4]
- boost/vmd/detail/mods.hpp [2:4]
- boost/vmd/detail/nil_registration.hpp [2:4]
- boost/vmd/detail/not_empty.hpp [2:4]
- boost/vmd/detail/number_registration.hpp [2:4]
- boost/vmd/detail/only_after.hpp [2:4]
- boost/vmd/detail/parens.hpp [2:4]
- boost/vmd/detail/parens_common.hpp [2:4]
- boost/vmd/detail/parens_split.hpp [2:4]
- boost/vmd/detail/recurse/data_equal/data_equal_1.hpp [2:4]
- boost/vmd/detail/recurse/data_equal/data_equal_10.hpp [2:4]
- boost/vmd/detail/recurse/data_equal/data_equal_11.hpp [2:4]
- boost/vmd/detail/recurse/data_equal/data_equal_12.hpp [2:4]
- boost/vmd/detail/recurse/data_equal/data_equal_13.hpp [2:4]
- boost/vmd/detail/recurse/data_equal/data_equal_14.hpp [2:4]
- boost/vmd/detail/recurse/data_equal/data_equal_15.hpp [2:4]
- boost/vmd/detail/recurse/data_equal/data_equal_16.hpp [2:4]
- boost/vmd/detail/recurse/data_equal/data_equal_2.hpp [2:4]
- boost/vmd/detail/recurse/data_equal/data_equal_3.hpp [2:4]
- boost/vmd/detail/recurse/data_equal/data_equal_4.hpp [2:4]
- boost/vmd/detail/recurse/data_equal/data_equal_5.hpp [2:4]
- boost/vmd/detail/recurse/data_equal/data_equal_6.hpp [2:4]
- boost/vmd/detail/recurse/data_equal/data_equal_7.hpp [2:4]
- boost/vmd/detail/recurse/data_equal/data_equal_8.hpp [2:4]
- boost/vmd/detail/recurse/data_equal/data_equal_9.hpp [2:4]
- boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp [2:4]
- boost/vmd/detail/recurse/data_equal/data_equal_specific.hpp [2:4]
- boost/vmd/detail/recurse/equal/equal_1.hpp [2:4]
- boost/vmd/detail/recurse/equal/equal_10.hpp [2:4]
- boost/vmd/detail/recurse/equal/equal_11.hpp [2:4]
- boost/vmd/detail/recurse/equal/equal_12.hpp [2:4]
- boost/vmd/detail/recurse/equal/equal_13.hpp [2:4]
- boost/vmd/detail/recurse/equal/equal_14.hpp [2:4]
- boost/vmd/detail/recurse/equal/equal_15.hpp [2:4]
- boost/vmd/detail/recurse/equal/equal_16.hpp [2:4]
- boost/vmd/detail/recurse/equal/equal_2.hpp [2:4]
- boost/vmd/detail/recurse/equal/equal_3.hpp [2:4]
- boost/vmd/detail/recurse/equal/equal_4.hpp [2:4]
- boost/vmd/detail/recurse/equal/equal_5.hpp [2:4]
- boost/vmd/detail/recurse/equal/equal_6.hpp [2:4]
- boost/vmd/detail/recurse/equal/equal_7.hpp [2:4]
- boost/vmd/detail/recurse/equal/equal_8.hpp [2:4]
- boost/vmd/detail/recurse/equal/equal_9.hpp [2:4]
- boost/vmd/detail/recurse/equal/equal_headers.hpp [2:4]
- boost/vmd/detail/seq.hpp [2:4]
- boost/vmd/detail/sequence_arity.hpp [2:4]
- boost/vmd/detail/sequence_common.hpp [2:4]
- boost/vmd/detail/sequence_elem.hpp [2:4]
- boost/vmd/detail/sequence_enum.hpp [2:4]
- boost/vmd/detail/sequence_size.hpp [2:4]
- boost/vmd/detail/sequence_to_array.hpp [2:4]
- boost/vmd/detail/sequence_to_list.hpp [2:4]
- boost/vmd/detail/sequence_to_seq.hpp [2:4]
- boost/vmd/detail/sequence_to_tuple.hpp [2:4]
- boost/vmd/detail/sequence_type.hpp [2:4]
- boost/vmd/detail/setup.hpp [2:4]
- boost/vmd/detail/tuple.hpp [2:4]
- boost/vmd/detail/type_registration.hpp [2:4]
- boost/vmd/detail/variadic_pop_front.hpp [2:4]
- boost/vmd/elem.hpp [2:4]
- boost/vmd/empty.hpp [2:4]
- boost/vmd/enum.hpp [2:4]
- boost/vmd/equal.hpp [2:4]
- boost/vmd/get_type.hpp [2:4]
- boost/vmd/identity.hpp [2:4]
- boost/vmd/is_array.hpp [2:4]
- boost/vmd/is_empty.hpp [2:4]
- boost/vmd/is_empty_array.hpp [2:4]
- boost/vmd/is_empty_list.hpp [2:4]
- boost/vmd/is_identifier.hpp [2:4]
- boost/vmd/is_list.hpp [2:4]
- boost/vmd/is_multi.hpp [2:4]
- boost/vmd/is_number.hpp [2:4]
- boost/vmd/is_parens_empty.hpp [2:4]
- boost/vmd/is_seq.hpp [2:4]
- boost/vmd/is_tuple.hpp [2:4]
- boost/vmd/is_type.hpp [2:4]
- boost/vmd/is_unary.hpp [2:4]
- boost/vmd/not_equal.hpp [2:4]
- boost/vmd/size.hpp [2:4]
- boost/vmd/to_array.hpp [2:4]
- boost/vmd/to_list.hpp [2:4]
- boost/vmd/to_seq.hpp [2:4]
- boost/vmd/to_tuple.hpp [2:4]
- boost/vmd/vmd.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7fef5129931cbf5ef18b4b28e7fb3a62
-BELONGS ya.make
- License text:
- // Copyright Eric Niebler 2014
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/aux_/config/gpu.hpp [5:5]
- boost/range/detail/msvc_has_iterator_workaround.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8012a67c0eb379c33d0eb9550cd0b925
-BELONGS ya.make
- License text:
- // (C) Copyright Ion Gaztanaga 2006-2012
- // (C) Copyright Markus Schoepflin 2007
- // (C) Copyright Bryce Lelbach 2010
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/interprocess/detail/atomic.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 807a2c80d0a2cd1e1c7e2077e2918037
-BELONGS ya.make
- License text:
- * Copyright 2016 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/winapi/access_rights.hpp [2:2]
- boost/winapi/character_code_conversion.hpp [2:2]
- boost/winapi/dbghelp.hpp [2:4]
- boost/winapi/error_codes.hpp [2:2]
- boost/winapi/limits.hpp [2:2]
- boost/winapi/page_protection_flags.hpp [2:2]
- boost/winapi/priority_class.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 807dea3c55c068fbbaf4810187c7c84b
-BELONGS ya.make
- License text:
- // (C) Copyright 2007-2009 Andrew Sutton
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/bron_kerbosch_all_cliques.hpp [1:1]
- boost/graph/closeness_centrality.hpp [1:1]
- boost/graph/clustering_coefficient.hpp [1:1]
- boost/graph/degree_centrality.hpp [1:1]
- boost/graph/detail/index.hpp [1:1]
- boost/graph/directed_graph.hpp [1:1]
- boost/graph/eccentricity.hpp [1:1]
- boost/graph/exterior_property.hpp [1:1]
- boost/graph/numeric_values.hpp [1:1]
- boost/graph/property_maps/constant_property_map.hpp [1:1]
- boost/graph/property_maps/container_property_map.hpp [1:1]
- boost/graph/property_maps/matrix_property_map.hpp [1:1]
- boost/graph/tiernan_all_cycles.hpp [1:1]
- boost/graph/undirected_graph.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 809d6a371d03b197a80cbcad5c8fb483
-BELONGS ya.make
- License text:
- // Copyright (c) 2014-2015 Antony Polukhin
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/variant/detail/element_index.hpp [6:6]
- boost/variant/detail/has_result_type.hpp [6:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 80a42b241f946c8a2c62a6f7c0a6158d
-BELONGS ya.make
- License text:
- // Copyright 2014,2018 Glen Joseph Fernandes
- // (glenjofe@gmail.com)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/circular_buffer/base.hpp [7:8]
- boost/circular_buffer/details.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 80a61ca78f0e3ecbd71447a12ff4074d
-BELONGS ya.make
- License text:
- * Copyright 2016 Klemens D. Morgenstern
- * Copyright 2016, 2017 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/winapi/pipes.hpp [2:3]
- boost/winapi/process.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 80bd2fc6b1258bb791b6477eb3e7d8fa
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/flyweight/intermodule_holder.hpp at line 3
- License text:
- /* Copyright 2006-2011 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/flyweight/intermodule_holder.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 80c074eee2f54de78643f0c56ccb3f6b
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/recalculate.hpp [3:6]
- boost/geometry/policies/robustness/no_rescale_policy.hpp [3:6]
- boost/geometry/policies/robustness/robust_point_type.hpp [3:6]
- boost/geometry/policies/robustness/segment_ratio.hpp [3:3]
- boost/geometry/policies/robustness/segment_ratio_type.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 80c44e7f6c87f424f98e861b85c5ce2d
-BELONGS ya.make
- License text:
- // (C) Copyright John Maddock 2002.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config.hpp [3:5]
+ boost/config/platform/amigaos.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 80e431bfd997466eba94e588baf14554
+BELONGS ya.make
+ License text:
+ // Copyright 2015 Klemens Morgenstern
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/dll/detail/demangling/demangle_symbol.hpp [1:1]
+ boost/winapi/dbghelp.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 80e6b625b0b30f8fcea39561d39e6989
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/statechart/event.hpp at line 6
+ License text:
+ // Copyright 2002-2007 Andreas Huber Doenni
+ // Distributed under the Boost Software License, Version 1.0. (See accompany-
+ // ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/statechart/event.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8105f2c79ac57a14ec250eba3e02c438
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/gcc.hpp [1:9]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8125ae3214a419e15087b23ef1f51e4e
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2001-2003
+ // William E. Kempf
+ // Copyright (C) 2007-9 Anthony Williams
+ // (C) Copyright 2011-2012 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/exceptions.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8146a3f9a95a1d54e922f676609d062e
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/test/auto_unit_test.hpp at line 3, boost/test/data/config.hpp at line 3, boost/test/data/dataset.hpp at line 3, boost/test/data/for_each_sample.hpp at line 3, boost/test/data/generators.hpp at line 3, boost/test/data/index_sequence.hpp at line 3, boost/test/data/monomorphic.hpp at line 3, boost/test/data/monomorphic/array.hpp at line 3, boost/test/data/monomorphic/collection.hpp at line 3, boost/test/data/monomorphic/fwd.hpp at line 3, boost/test/data/monomorphic/generate.hpp at line 3, boost/test/data/monomorphic/generators.hpp at line 3, boost/test/data/monomorphic/generators/keywords.hpp at line 3, boost/test/data/monomorphic/generators/random.hpp at line 3, boost/test/data/monomorphic/generators/xrange.hpp at line 3, boost/test/data/monomorphic/grid.hpp at line 3, boost/test/data/monomorphic/initializer_list.hpp at line 3, boost/test/data/monomorphic/join.hpp at line 3, boost/test/data/monomorphic/sample_merge.hpp at line 3, boost/test/data/monomorphic/singleton.hpp at line 3, boost/test/data/monomorphic/zip.hpp at line 3, boost/test/data/size.hpp at line 3, boost/test/data/test_case.hpp at line 3, boost/test/debug.hpp at line 3, boost/test/debug_config.hpp at line 3, boost/test/detail/config.hpp at line 3, boost/test/detail/enable_warnings.hpp at line 3, boost/test/detail/fwd_decl.hpp at line 3, boost/test/detail/global_typedef.hpp at line 3, boost/test/detail/log_level.hpp at line 3, boost/test/detail/pp_variadic.hpp at line 3, boost/test/detail/suppress_warnings.hpp at line 3, boost/test/detail/throw_exception.hpp at line 3, boost/test/detail/workaround.hpp at line 3, boost/test/execution_monitor.hpp at line 3, boost/test/floating_point_comparison.hpp at line 3, boost/test/framework.hpp at line 3, boost/test/impl/compiler_log_formatter.ipp at line 3, boost/test/impl/cpp_main.ipp at line 3, boost/test/impl/debug.ipp at line 3, boost/test/impl/decorator.ipp at line 3, boost/test/impl/execution_monitor.ipp at line 3, boost/test/impl/framework.ipp at line 3, boost/test/impl/plain_report_formatter.ipp at line 3, boost/test/impl/progress_monitor.ipp at line 3, boost/test/impl/results_collector.ipp at line 3, boost/test/impl/results_reporter.ipp at line 3, boost/test/impl/test_main.ipp at line 3, boost/test/impl/test_tools.ipp at line 3, boost/test/impl/test_tree.ipp at line 3, boost/test/impl/unit_test_log.ipp at line 3, boost/test/impl/unit_test_main.ipp at line 3, boost/test/impl/unit_test_monitor.ipp at line 3, boost/test/impl/unit_test_parameters.ipp at line 3, boost/test/impl/xml_log_formatter.ipp at line 3, boost/test/impl/xml_report_formatter.ipp at line 3, boost/test/included/execution_monitor.hpp at line 3, boost/test/included/prg_exec_monitor.hpp at line 3, boost/test/included/test_exec_monitor.hpp at line 3, boost/test/included/unit_test.hpp at line 3, boost/test/included/unit_test_framework.hpp at line 3, boost/test/minimal.hpp at line 3, boost/test/output/compiler_log_formatter.hpp at line 3, boost/test/output/plain_report_formatter.hpp at line 3, boost/test/output/xml_log_formatter.hpp at line 3, boost/test/output/xml_report_formatter.hpp at line 3, boost/test/output_test_stream.hpp at line 3, boost/test/parameterized_test.hpp at line 3, boost/test/predicate_result.hpp at line 3, boost/test/prg_exec_monitor.hpp at line 3, boost/test/progress_monitor.hpp at line 3, boost/test/results_collector.hpp at line 3, boost/test/results_reporter.hpp at line 3, boost/test/test_case_template.hpp at line 3, boost/test/test_exec_monitor.hpp at line 3, boost/test/test_tools.hpp at line 3, boost/test/tools/assertion.hpp at line 3, boost/test/tools/assertion_result.hpp at line 3, boost/test/tools/collection_comparison_op.hpp at line 3, boost/test/tools/context.hpp at line 3, boost/test/tools/cstring_comparison_op.hpp at line 3, boost/test/tools/detail/bitwise_manip.hpp at line 3, boost/test/tools/detail/expression_holder.hpp at line 3, boost/test/tools/detail/fwd.hpp at line 3, boost/test/tools/detail/indirections.hpp at line 3, boost/test/tools/detail/it_pair.hpp at line 3, boost/test/tools/detail/lexicographic_manip.hpp at line 3, boost/test/tools/detail/per_element_manip.hpp at line 3, boost/test/tools/detail/print_helper.hpp at line 3, boost/test/tools/detail/tolerance_manip.hpp at line 3, boost/test/tools/floating_point_comparison.hpp at line 3, boost/test/tools/fpc_op.hpp at line 3, boost/test/tools/fpc_tolerance.hpp at line 3, boost/test/tools/interface.hpp at line 3, boost/test/tools/old/impl.hpp at line 3, boost/test/tools/old/interface.hpp at line 3, boost/test/tools/output_test_stream.hpp at line 3, boost/test/tree/auto_registration.hpp at line 3, boost/test/tree/decorator.hpp at line 3, boost/test/tree/fixture.hpp at line 3, boost/test/tree/global_fixture.hpp at line 3, boost/test/tree/observer.hpp at line 3, boost/test/tree/test_case_counter.hpp at line 3, boost/test/tree/test_case_template.hpp at line 3, boost/test/tree/test_unit.hpp at line 3, boost/test/tree/traverse.hpp at line 3, boost/test/tree/visitor.hpp at line 3, boost/test/unit_test.hpp at line 3, boost/test/unit_test_log.hpp at line 3, boost/test/unit_test_log_formatter.hpp at line 3, boost/test/unit_test_monitor.hpp at line 3, boost/test/unit_test_parameters.hpp at line 3, boost/test/unit_test_suite.hpp at line 3, boost/test/utils/algorithm.hpp at line 3, boost/test/utils/assign_op.hpp at line 3, boost/test/utils/basic_cstring/basic_cstring.hpp at line 3, boost/test/utils/basic_cstring/basic_cstring_fwd.hpp at line 3, boost/test/utils/basic_cstring/bcs_char_traits.hpp at line 3, boost/test/utils/basic_cstring/compare.hpp at line 3, boost/test/utils/basic_cstring/io.hpp at line 3, boost/test/utils/class_properties.hpp at line 3, boost/test/utils/custom_manip.hpp at line 3, boost/test/utils/foreach.hpp at line 3, boost/test/utils/is_cstring.hpp at line 3, boost/test/utils/is_forward_iterable.hpp at line 3, boost/test/utils/iterator/input_iterator_facade.hpp at line 3, boost/test/utils/iterator/token_iterator.hpp at line 3, boost/test/utils/lazy_ostream.hpp at line 3, boost/test/utils/named_params.hpp at line 3, boost/test/utils/nullstream.hpp at line 3, boost/test/utils/rtti.hpp at line 3, boost/test/utils/runtime/argument.hpp at line 3, boost/test/utils/runtime/argument_factory.hpp at line 3, boost/test/utils/runtime/cla/argv_traverser.hpp at line 3, boost/test/utils/runtime/cla/parser.hpp at line 3, boost/test/utils/runtime/env/fetch.hpp at line 3, boost/test/utils/runtime/errors.hpp at line 3, boost/test/utils/runtime/finalize.hpp at line 3, boost/test/utils/runtime/fwd.hpp at line 3, boost/test/utils/runtime/modifier.hpp at line 3, boost/test/utils/runtime/parameter.hpp at line 3, boost/test/utils/setcolor.hpp at line 3, boost/test/utils/string_cast.hpp at line 3, boost/test/utils/trivial_singleton.hpp at line 3, boost/test/utils/wrap_stringstream.hpp at line 3, boost/test/utils/xml_printer.hpp at line 3
+ License text:
+ // (C) Copyright Gennadiy Rozental 2001.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/test/auto_unit_test.hpp [1:3]
+ boost/test/data/config.hpp [1:3]
+ boost/test/data/dataset.hpp [1:3]
+ boost/test/data/for_each_sample.hpp [1:3]
+ boost/test/data/generators.hpp [1:3]
+ boost/test/data/index_sequence.hpp [1:3]
+ boost/test/data/monomorphic.hpp [1:3]
+ boost/test/data/monomorphic/array.hpp [1:3]
+ boost/test/data/monomorphic/collection.hpp [1:3]
+ boost/test/data/monomorphic/fwd.hpp [1:3]
+ boost/test/data/monomorphic/generate.hpp [1:3]
+ boost/test/data/monomorphic/generators.hpp [1:3]
+ boost/test/data/monomorphic/generators/keywords.hpp [1:3]
+ boost/test/data/monomorphic/generators/random.hpp [1:3]
+ boost/test/data/monomorphic/generators/xrange.hpp [1:3]
+ boost/test/data/monomorphic/grid.hpp [1:3]
+ boost/test/data/monomorphic/initializer_list.hpp [1:3]
+ boost/test/data/monomorphic/join.hpp [1:3]
+ boost/test/data/monomorphic/sample_merge.hpp [1:3]
+ boost/test/data/monomorphic/singleton.hpp [1:3]
+ boost/test/data/monomorphic/zip.hpp [1:3]
+ boost/test/data/size.hpp [1:3]
+ boost/test/data/test_case.hpp [1:3]
+ boost/test/debug.hpp [1:3]
+ boost/test/debug_config.hpp [1:3]
+ boost/test/detail/config.hpp [1:3]
+ boost/test/detail/enable_warnings.hpp [1:3]
+ boost/test/detail/fwd_decl.hpp [1:3]
+ boost/test/detail/global_typedef.hpp [1:3]
+ boost/test/detail/log_level.hpp [1:3]
+ boost/test/detail/pp_variadic.hpp [1:3]
+ boost/test/detail/suppress_warnings.hpp [1:3]
+ boost/test/detail/throw_exception.hpp [1:3]
+ boost/test/detail/workaround.hpp [1:3]
+ boost/test/execution_monitor.hpp [1:4]
+ boost/test/floating_point_comparison.hpp [1:3]
+ boost/test/framework.hpp [1:3]
+ boost/test/impl/compiler_log_formatter.ipp [1:3]
+ boost/test/impl/cpp_main.ipp [1:4]
+ boost/test/impl/debug.ipp [1:3]
+ boost/test/impl/decorator.ipp [1:3]
+ boost/test/impl/execution_monitor.ipp [1:4]
+ boost/test/impl/framework.ipp [1:3]
+ boost/test/impl/plain_report_formatter.ipp [1:3]
+ boost/test/impl/progress_monitor.ipp [1:3]
+ boost/test/impl/results_collector.ipp [1:3]
+ boost/test/impl/results_reporter.ipp [1:3]
+ boost/test/impl/test_main.ipp [1:4]
+ boost/test/impl/test_tools.ipp [1:3]
+ boost/test/impl/test_tree.ipp [1:3]
+ boost/test/impl/unit_test_log.ipp [1:3]
+ boost/test/impl/unit_test_main.ipp [1:3]
+ boost/test/impl/unit_test_monitor.ipp [1:3]
+ boost/test/impl/unit_test_parameters.ipp [1:3]
+ boost/test/impl/xml_log_formatter.ipp [1:3]
+ boost/test/impl/xml_report_formatter.ipp [1:3]
+ boost/test/included/execution_monitor.hpp [1:3]
+ boost/test/included/prg_exec_monitor.hpp [1:3]
+ boost/test/included/test_exec_monitor.hpp [1:3]
+ boost/test/included/unit_test.hpp [1:3]
+ boost/test/included/unit_test_framework.hpp [1:3]
+ boost/test/minimal.hpp [1:3]
+ boost/test/output/compiler_log_formatter.hpp [1:3]
+ boost/test/output/plain_report_formatter.hpp [1:3]
+ boost/test/output/xml_log_formatter.hpp [1:3]
+ boost/test/output/xml_report_formatter.hpp [1:3]
+ boost/test/output_test_stream.hpp [1:3]
+ boost/test/parameterized_test.hpp [1:3]
+ boost/test/predicate_result.hpp [1:3]
+ boost/test/prg_exec_monitor.hpp [1:3]
+ boost/test/progress_monitor.hpp [1:3]
+ boost/test/results_collector.hpp [1:3]
+ boost/test/results_reporter.hpp [1:3]
+ boost/test/test_case_template.hpp [1:3]
+ boost/test/test_exec_monitor.hpp [1:3]
+ boost/test/test_tools.hpp [1:3]
+ boost/test/tools/assertion.hpp [1:3]
+ boost/test/tools/assertion_result.hpp [1:3]
+ boost/test/tools/collection_comparison_op.hpp [1:3]
+ boost/test/tools/context.hpp [1:3]
+ boost/test/tools/cstring_comparison_op.hpp [1:3]
+ boost/test/tools/detail/bitwise_manip.hpp [1:3]
+ boost/test/tools/detail/expression_holder.hpp [1:3]
+ boost/test/tools/detail/fwd.hpp [1:3]
+ boost/test/tools/detail/indirections.hpp [1:3]
+ boost/test/tools/detail/it_pair.hpp [1:3]
+ boost/test/tools/detail/lexicographic_manip.hpp [1:3]
+ boost/test/tools/detail/per_element_manip.hpp [1:3]
+ boost/test/tools/detail/print_helper.hpp [1:3]
+ boost/test/tools/detail/tolerance_manip.hpp [1:3]
+ boost/test/tools/floating_point_comparison.hpp [1:3]
+ boost/test/tools/fpc_op.hpp [1:3]
+ boost/test/tools/fpc_tolerance.hpp [1:3]
+ boost/test/tools/interface.hpp [1:3]
+ boost/test/tools/old/impl.hpp [1:3]
+ boost/test/tools/old/interface.hpp [1:3]
+ boost/test/tools/output_test_stream.hpp [1:3]
+ boost/test/tree/auto_registration.hpp [1:3]
+ boost/test/tree/decorator.hpp [1:3]
+ boost/test/tree/fixture.hpp [1:3]
+ boost/test/tree/global_fixture.hpp [1:3]
+ boost/test/tree/observer.hpp [1:3]
+ boost/test/tree/test_case_counter.hpp [1:3]
+ boost/test/tree/test_case_template.hpp [1:3]
+ boost/test/tree/test_unit.hpp [1:3]
+ boost/test/tree/traverse.hpp [1:3]
+ boost/test/tree/visitor.hpp [1:3]
+ boost/test/unit_test.hpp [1:3]
+ boost/test/unit_test_log.hpp [1:3]
+ boost/test/unit_test_log_formatter.hpp [1:3]
+ boost/test/unit_test_monitor.hpp [1:3]
+ boost/test/unit_test_parameters.hpp [1:3]
+ boost/test/unit_test_suite.hpp [1:3]
+ boost/test/utils/algorithm.hpp [1:3]
+ boost/test/utils/assign_op.hpp [1:3]
+ boost/test/utils/basic_cstring/basic_cstring.hpp [1:3]
+ boost/test/utils/basic_cstring/basic_cstring_fwd.hpp [1:3]
+ boost/test/utils/basic_cstring/bcs_char_traits.hpp [1:3]
+ boost/test/utils/basic_cstring/compare.hpp [1:3]
+ boost/test/utils/basic_cstring/io.hpp [1:3]
+ boost/test/utils/class_properties.hpp [1:3]
+ boost/test/utils/custom_manip.hpp [1:3]
+ boost/test/utils/foreach.hpp [1:4]
+ boost/test/utils/is_cstring.hpp [1:3]
+ boost/test/utils/is_forward_iterable.hpp [1:3]
+ boost/test/utils/iterator/input_iterator_facade.hpp [1:3]
+ boost/test/utils/iterator/token_iterator.hpp [1:3]
+ boost/test/utils/lazy_ostream.hpp [1:3]
+ boost/test/utils/named_params.hpp [1:3]
+ boost/test/utils/nullstream.hpp [1:4]
+ boost/test/utils/rtti.hpp [1:3]
+ boost/test/utils/runtime/argument.hpp [1:3]
+ boost/test/utils/runtime/argument_factory.hpp [1:3]
+ boost/test/utils/runtime/cla/argv_traverser.hpp [1:3]
+ boost/test/utils/runtime/cla/parser.hpp [1:3]
+ boost/test/utils/runtime/env/fetch.hpp [1:3]
+ boost/test/utils/runtime/errors.hpp [1:3]
+ boost/test/utils/runtime/finalize.hpp [1:3]
+ boost/test/utils/runtime/fwd.hpp [1:3]
+ boost/test/utils/runtime/modifier.hpp [1:3]
+ boost/test/utils/runtime/parameter.hpp [1:3]
+ boost/test/utils/setcolor.hpp [1:3]
+ boost/test/utils/string_cast.hpp [1:3]
+ boost/test/utils/trivial_singleton.hpp [1:3]
+ boost/test/utils/wrap_stringstream.hpp [1:3]
+ boost/test/utils/xml_printer.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 815d94d66a2546cae56370ff8fcb4b87
+BELONGS ya.make
+ License text:
+ Copyright (c) 2005-2010 Joel de Guzman
+ Copyright (c) 2015 John Fletcher
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/phoenix/core/is_value.hpp [2:3]
+ boost/phoenix/function/adapt_function.hpp [2:4]
+ boost/phoenix/function/function.hpp [2:4]
+ boost/phoenix/function/lazy_list.hpp [33:35]
+ boost/phoenix/function/lazy_operator.hpp [27:29]
+ boost/phoenix/function/lazy_prelude.hpp [115:117]
+ boost/phoenix/function/lazy_reuse.hpp [24:26]
+ boost/phoenix/function/lazy_signature.hpp [34:36]
+ boost/phoenix/function/lazy_smart.hpp [11:13]
+ boost/phoenix/scope/let.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 819f37d0e4cef828a597dfe80506c110
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2011-2012 Thomas Bernard
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/repository/home/qi/operator/detail/keywords.hpp [2:2]
+ boost/spirit/repository/home/qi/operator/keywords.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 81a6875950b829b3077c273b6534daf8
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2000-2013
+ // Joerg Walter, Mathias Koch. David Bellot
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/ublas/expression_types.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 81afc10bc24c6ad633280dae0d84d3e7
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/stable_vector.hpp at line 14
+ License text:
+ // Copyright 2008 Joaquin M Lopez Munoz.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/container/stable_vector.hpp [12:14]
+
+KEEP COPYRIGHT_SERVICE_LABEL 81e40597ae94e7857c389eb7ca2d8bc5
+BELONGS ya.make
+ License text:
+ Copyright (c) 2014 Joel de Guzman
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/x3/directive/raw.hpp [2:2]
+ boost/spirit/home/x3/directive/with.hpp [2:2]
+ boost/spirit/home/x3/numeric/bool.hpp [2:3]
+ boost/spirit/home/x3/numeric/bool_policies.hpp [2:3]
+ boost/spirit/home/x3/support/ast/position_tagged.hpp [2:2]
+ boost/spirit/home/x3/support/utility/error_reporting.hpp [2:2]
+ boost/spirit/home/x3/support/utility/lambda_visitor.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 81eb46b520090303ae6a7327a48d976a
+BELONGS ya.make
+ License text:
+ Copyright (c) 1998-2003 Joel de Guzman
+ Copyright (c) 2001 Daniel Nuffer
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/core/composite/directives.hpp [2:4]
+ boost/spirit/home/classic/core/non_terminal/parser_id.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 81fe68c1eb5b189c68e4dea969fce3be
+BELONGS ya.make
+ License text:
+ * Copyright (c) 2002
+ * John Maddock
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/regex/v4/char_regex_traits.hpp [3:4]
+ boost/regex/v4/iterator_category.hpp [3:4]
+ boost/regex/v4/mem_block_cache.hpp [2:3]
+ boost/regex/v4/perl_matcher.hpp [3:4]
+ boost/regex/v4/perl_matcher_common.hpp [3:4]
+ boost/regex/v4/perl_matcher_non_recursive.hpp [3:4]
+ boost/regex/v4/perl_matcher_recursive.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 821d5dbb10517b78a129c5a569511c66
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/bernoulli.hpp [3:8]
+ boost/math/special_functions/detail/polygamma.hpp [3:8]
+ boost/math/special_functions/detail/unchecked_bernoulli.hpp [3:8]
+ boost/math/special_functions/polygamma.hpp [3:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8247b8e57241653b1a6c9310db268720
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/detail/suffix.hpp at line 14, boost/python/ptr.hpp at line 21
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/detail/suffix.hpp [4:14]
+ boost/python/ptr.hpp [11:12]
+
+KEEP COPYRIGHT_SERVICE_LABEL 827562f5ed05600883ea03e3e0a2c31c
+BELONGS ya.make
+ License text:
+ Copyright (c) 2005-2010 Joel de Guzman
+ Copyright (c) 2010 Thomas Heller
+ Copyright (c) 2018 Kohei Takahashi
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/phoenix/operator/detail/cpp03/mem_fun_ptr_eval_result_of.hpp [15:17]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_10.hpp [2:4]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_20.hpp [2:4]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_30.hpp [2:4]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_40.hpp [2:4]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_50.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 828392eb47631cd343f70a8a21ef9867
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/static_warning.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/serialization/static_warning.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 828b79ff16e0bf70fedcf473356bf326
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2002, 2003 Peter Dimov and Multi Media Ltd.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/bind/apply.hpp [7:7]
+ boost/detail/lightweight_mutex.hpp [13:13]
+ boost/signals2/mutex.hpp [4:5]
+ boost/smart_ptr/detail/lightweight_mutex.hpp [13:13]
+
+KEEP COPYRIGHT_SERVICE_LABEL 82a5c9cddab57527910d79d3fe2ae9db
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/move/detail/pointer_element.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2014-2017. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/move/detail/pointer_element.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 82b5e5f7da5de75b8236435ea1ff6d07
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/intel.hpp [1:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8353a5f664019fadfadf20a94a4bcf06
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/iterator_range_core.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/range/iterator_range_core.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 836034d8c34d94c8f9a9362d0cdaa003
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2007, 2013, 2015 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/detail/sp_counted_base_clang.hpp [12:12]
+
+KEEP COPYRIGHT_SERVICE_LABEL 83a2273fe7be7104b274c814ca135140
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2003-2008 Jan Gaspar
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/circular_buffer.hpp [3:3]
+ boost/circular_buffer/base.hpp [3:5]
+ boost/circular_buffer/debug.hpp [3:3]
+ boost/circular_buffer/details.hpp [3:3]
+ boost/circular_buffer/space_optimized.hpp [3:5]
+ boost/circular_buffer_fwd.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 83ac86d574485a1a19802156b8aaf3de
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/rolling_mean.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/accumulators/statistics/rolling_mean.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 83ed55632ceb50ed673f455f92688d6f
+BELONGS ya.make
+ License text:
+ Copyright (c) 1998-2003 Joel de Guzman
+ Copyright (c) 2001 Daniel Nuffer
+ Copyright (c) 2001 Bruce Florman
+ Copyright (c) 2002 Raghavendra Satish
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/core/composite/impl/directives.ipp [2:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8401d15b86c3161a24915207008a129a
+BELONGS ya.make
+ License text:
+ // Copyright Aleksey Gurtovoy 2000-2010
+ // Copyright David Abrahams 2000-2002
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/zip_view.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 843b75a62260b0f0a240e99d06ed4f7c
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/functional/overloaded_function.hpp at line 4, boost/functional/overloaded_function/config.hpp at line 4, boost/functional/overloaded_function/detail/base.hpp at line 4, boost/functional/overloaded_function/detail/function_type.hpp at line 4, boost/local_function.hpp at line 4, boost/local_function/aux_/add_pointed_const.hpp at line 4, boost/local_function/aux_/function.hpp at line 4, boost/local_function/aux_/macro/code_/bind.hpp at line 4, boost/local_function/aux_/macro/code_/functor.hpp at line 4, boost/local_function/aux_/macro/code_/result.hpp at line 4, boost/local_function/aux_/macro/decl.hpp at line 4, boost/local_function/aux_/macro/name.hpp at line 4, boost/local_function/aux_/macro/typeof.hpp at line 4, boost/local_function/aux_/member.hpp at line 4, boost/local_function/aux_/nobind.hpp at line 4, boost/local_function/aux_/preprocessor/traits/bind.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_/append.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_/index.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_/nil.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_/set_error.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_/validate.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_/validate_/return_count.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_/validate_/this_count.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_binds.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_const_binds.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_error.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_params.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_returns.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_sign_/any_bind_type.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_sign_/sign.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_sign_/validate.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_sign_/validate_/defaults.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_sign_/validate_/this.hpp at line 4, boost/local_function/aux_/preprocessor/traits/param.hpp at line 4, boost/local_function/aux_/symbol.hpp at line 4, boost/local_function/config.hpp at line 4, boost/local_function/detail/preprocessor/keyword/auto.hpp at line 4, boost/local_function/detail/preprocessor/keyword/bind.hpp at line 4, boost/local_function/detail/preprocessor/keyword/const.hpp at line 4, boost/local_function/detail/preprocessor/keyword/const_bind.hpp at line 4, boost/local_function/detail/preprocessor/keyword/default.hpp at line 4, boost/local_function/detail/preprocessor/keyword/facility/add.hpp at line 4, boost/local_function/detail/preprocessor/keyword/facility/is.hpp at line 4, boost/local_function/detail/preprocessor/keyword/facility/remove.hpp at line 4, boost/local_function/detail/preprocessor/keyword/inline.hpp at line 4, boost/local_function/detail/preprocessor/keyword/recursive.hpp at line 4, boost/local_function/detail/preprocessor/keyword/register.hpp at line 4, boost/local_function/detail/preprocessor/keyword/return.hpp at line 4, boost/local_function/detail/preprocessor/keyword/this.hpp at line 4, boost/local_function/detail/preprocessor/keyword/thisunderscore.hpp at line 4, boost/local_function/detail/preprocessor/keyword/void.hpp at line 4, boost/local_function/detail/preprocessor/line_counter.hpp at line 4, boost/local_function/detail/preprocessor/void_list.hpp at line 4, boost/utility/identity_type.hpp at line 4
+ License text:
+ // Copyright (C) 2009-2012 Lorenzo Caminiti
+ // Distributed under the Boost Software License, Version 1.0
+ // (see accompanying file LICENSE_1_0.txt or a copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/functional/overloaded_function.hpp [2:4]
+ boost/functional/overloaded_function/config.hpp [2:4]
+ boost/functional/overloaded_function/detail/base.hpp [2:4]
+ boost/functional/overloaded_function/detail/function_type.hpp [2:4]
+ boost/local_function.hpp [2:4]
+ boost/local_function/aux_/add_pointed_const.hpp [2:4]
+ boost/local_function/aux_/function.hpp [2:4]
+ boost/local_function/aux_/macro/code_/bind.hpp [2:4]
+ boost/local_function/aux_/macro/code_/functor.hpp [2:4]
+ boost/local_function/aux_/macro/code_/result.hpp [2:4]
+ boost/local_function/aux_/macro/decl.hpp [2:4]
+ boost/local_function/aux_/macro/name.hpp [2:4]
+ boost/local_function/aux_/macro/typeof.hpp [2:4]
+ boost/local_function/aux_/member.hpp [2:4]
+ boost/local_function/aux_/nobind.hpp [2:4]
+ boost/local_function/aux_/preprocessor/traits/bind.hpp [2:4]
+ boost/local_function/aux_/preprocessor/traits/decl.hpp [2:4]
+ boost/local_function/aux_/preprocessor/traits/decl_/append.hpp [2:4]
+ boost/local_function/aux_/preprocessor/traits/decl_/index.hpp [2:4]
+ boost/local_function/aux_/preprocessor/traits/decl_/nil.hpp [2:4]
+ boost/local_function/aux_/preprocessor/traits/decl_/set_error.hpp [2:4]
+ boost/local_function/aux_/preprocessor/traits/decl_/validate.hpp [2:4]
+ boost/local_function/aux_/preprocessor/traits/decl_/validate_/return_count.hpp [2:4]
+ boost/local_function/aux_/preprocessor/traits/decl_/validate_/this_count.hpp [2:4]
+ boost/local_function/aux_/preprocessor/traits/decl_binds.hpp [2:4]
+ boost/local_function/aux_/preprocessor/traits/decl_const_binds.hpp [2:4]
+ boost/local_function/aux_/preprocessor/traits/decl_error.hpp [2:4]
+ boost/local_function/aux_/preprocessor/traits/decl_params.hpp [2:4]
+ boost/local_function/aux_/preprocessor/traits/decl_returns.hpp [2:4]
+ boost/local_function/aux_/preprocessor/traits/decl_sign_/any_bind_type.hpp [2:4]
+ boost/local_function/aux_/preprocessor/traits/decl_sign_/sign.hpp [2:4]
+ boost/local_function/aux_/preprocessor/traits/decl_sign_/validate.hpp [2:4]
+ boost/local_function/aux_/preprocessor/traits/decl_sign_/validate_/defaults.hpp [2:4]
+ boost/local_function/aux_/preprocessor/traits/decl_sign_/validate_/this.hpp [2:4]
+ boost/local_function/aux_/preprocessor/traits/param.hpp [2:4]
+ boost/local_function/aux_/symbol.hpp [2:4]
+ boost/local_function/config.hpp [2:4]
+ boost/local_function/detail/preprocessor/keyword/auto.hpp [2:4]
+ boost/local_function/detail/preprocessor/keyword/bind.hpp [2:4]
+ boost/local_function/detail/preprocessor/keyword/const.hpp [2:4]
+ boost/local_function/detail/preprocessor/keyword/const_bind.hpp [2:4]
+ boost/local_function/detail/preprocessor/keyword/default.hpp [2:4]
+ boost/local_function/detail/preprocessor/keyword/facility/add.hpp [2:4]
+ boost/local_function/detail/preprocessor/keyword/facility/is.hpp [2:4]
+ boost/local_function/detail/preprocessor/keyword/facility/remove.hpp [2:4]
+ boost/local_function/detail/preprocessor/keyword/inline.hpp [2:4]
+ boost/local_function/detail/preprocessor/keyword/recursive.hpp [2:4]
+ boost/local_function/detail/preprocessor/keyword/register.hpp [2:4]
+ boost/local_function/detail/preprocessor/keyword/return.hpp [2:4]
+ boost/local_function/detail/preprocessor/keyword/this.hpp [2:4]
+ boost/local_function/detail/preprocessor/keyword/thisunderscore.hpp [2:4]
+ boost/local_function/detail/preprocessor/keyword/void.hpp [2:4]
+ boost/local_function/detail/preprocessor/line_counter.hpp [2:4]
+ boost/local_function/detail/preprocessor/void_list.hpp [2:4]
+ boost/utility/identity_type.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8464df292fc04767d911d71f2cb5e8c7
+BELONGS ya.make
+ License text:
+ Copyright (c) 2005-2012 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/container/deque/back_extended_deque.hpp [2:3]
+ boost/fusion/container/deque/deque.hpp [2:3]
+ boost/fusion/container/deque/deque_fwd.hpp [2:3]
+ boost/fusion/container/deque/deque_iterator.hpp [2:3]
+ boost/fusion/container/deque/detail/at_impl.hpp [2:3]
+ boost/fusion/container/deque/detail/begin_impl.hpp [2:3]
+ boost/fusion/container/deque/detail/convert_impl.hpp [2:4]
+ boost/fusion/container/deque/detail/cpp03/as_deque.hpp [2:3]
+ boost/fusion/container/deque/detail/cpp03/deque.hpp [2:3]
+ boost/fusion/container/deque/detail/cpp03/deque_forward_ctor.hpp [2:3]
+ boost/fusion/container/deque/detail/cpp03/deque_fwd.hpp [2:3]
+ boost/fusion/container/deque/detail/cpp03/deque_initial_size.hpp [2:3]
+ boost/fusion/container/deque/detail/cpp03/deque_keyed_values.hpp [2:3]
+ boost/fusion/container/deque/detail/cpp03/deque_keyed_values_call.hpp [2:3]
+ boost/fusion/container/deque/detail/cpp03/limits.hpp [2:3]
+ boost/fusion/container/deque/detail/deque_keyed_values.hpp [2:3]
+ boost/fusion/container/deque/detail/end_impl.hpp [2:3]
+ boost/fusion/container/deque/detail/keyed_element.hpp [2:3]
+ boost/fusion/container/deque/detail/value_at_impl.hpp [2:3]
+ boost/fusion/container/deque/front_extended_deque.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 84883abd8b74ae75cd80081a7a4afda9
+BELONGS ya.make
+ License text:
+ // Copyright 2018 Steven Watanabe
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_erasure/detail/member11.hpp [3:3]
+ boost/type_erasure/detail/meta.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 849856933c18e49ccb9a21ab0a3b2262
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2010 Alfredo Correa
+ // Copyright (c) 2010-2012 Barend Gehrels, Amsterdam, the Netherlands.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/geometries/adapted/boost_array.hpp [3:4]
+ boost/geometry/geometries/adapted/boost_polygon.hpp [3:3]
+ boost/geometry/geometries/adapted/boost_polygon/box.hpp [3:3]
+ boost/geometry/geometries/adapted/boost_polygon/hole_iterator.hpp [3:3]
+ boost/geometry/geometries/adapted/boost_polygon/holes_proxy.hpp [3:3]
+ boost/geometry/geometries/adapted/boost_polygon/point.hpp [3:3]
+ boost/geometry/geometries/adapted/boost_polygon/polygon.hpp [3:3]
+ boost/geometry/geometries/adapted/boost_polygon/ring.hpp [3:3]
+ boost/geometry/geometries/adapted/boost_polygon/ring_proxy.hpp [3:3]
+ boost/geometry/geometries/adapted/boost_range/adjacent_filtered.hpp [3:3]
+ boost/geometry/geometries/adapted/boost_range/filtered.hpp [3:3]
+ boost/geometry/geometries/adapted/boost_range/reversed.hpp [3:3]
+ boost/geometry/geometries/adapted/boost_range/sliced.hpp [3:3]
+ boost/geometry/geometries/adapted/boost_range/strided.hpp [3:3]
+ boost/geometry/geometries/adapted/boost_range/uniqued.hpp [3:3]
+ boost/geometry/geometries/adapted/std_array.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 84aa8f0944ff081c273a32083375f310
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2007 John Maddock
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/cos_pi.hpp [1:3]
+ boost/math/special_functions/detail/bessel_jy_asym.hpp [1:3]
+ boost/math/special_functions/sin_pi.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 84c2f237d9b27185e5ee0a17bf920901
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2003
+ // Eric Friedman
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/blank.hpp [6:7]
+ boost/blank_fwd.hpp [6:7]
+ boost/config/detail/suffix.hpp [4:14]
+ boost/detail/reference_content.hpp [6:7]
+ boost/detail/templated_streams.hpp [6:7]
+ boost/variant/apply_visitor.hpp [6:7]
+ boost/variant/detail/backup_holder.hpp [6:7]
+ boost/variant/detail/cast_storage.hpp [6:7]
+ boost/variant/detail/config.hpp [6:7]
+ boost/variant/detail/enable_recursive.hpp [6:7]
+ boost/variant/detail/enable_recursive_fwd.hpp [6:7]
+ boost/variant/detail/forced_return.hpp [6:7]
+ boost/variant/detail/generic_result_type.hpp [6:7]
+ boost/variant/detail/over_sequence.hpp [6:7]
+ boost/variant/detail/substitute.hpp [11:12]
+ boost/variant/detail/substitute_fwd.hpp [6:7]
+ boost/variant/detail/visitation_impl.hpp [6:7]
+ boost/variant/recursive_variant.hpp [6:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 84d21d33ceccd2d9309a88e9bd5c3138
+BELONGS ya.make
+ License text:
+ // Copyright Beman Dawes 2015
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/endian/endian.hpp [3:3]
+ boost/filesystem/string_file.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8501cc13330743bddd0f34154c70c7ac
+BELONGS ya.make
+ License text:
+ * Copyright 2017 Vinnie Falco
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/winapi/debugapi.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 852c378c4fd6ef337fd9e49f5c3962b1
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/overlay/do_reverse.hpp [3:4]
+ boost/geometry/algorithms/detail/recalculate.hpp [3:6]
+ boost/geometry/multi/algorithms/covered_by.hpp [3:6]
+ boost/geometry/multi/algorithms/detail/extreme_points.hpp [3:6]
+ boost/geometry/multi/algorithms/remove_spikes.hpp [3:6]
+ boost/geometry/multi/algorithms/within.hpp [3:6]
+ boost/geometry/policies/robustness/no_rescale_policy.hpp [3:6]
+ boost/geometry/policies/robustness/robust_point_type.hpp [3:6]
+ boost/geometry/policies/robustness/segment_ratio_type.hpp [3:6]
+ boost/geometry/strategies/agnostic/point_in_poly_winding.hpp [3:4]
+ boost/geometry/strategies/cartesian/point_in_poly_winding.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8557b07967860b86b0d16d725b465dad
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2007 Peder Holt
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/typeof/dmc/typeof_impl.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 857ffcad3efa00650a38f17b49cfd2ab
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/is_base_and_derived.hpp at line 4
+ License text:
+ // (C) Copyright Rani Sharoni 2003.
+ // Use, modification and distribution are subject to the Boost Software License,
+ // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_traits/is_base_and_derived.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 85b21f7669ee2771cecab63ce53d186a
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2014 Ian Forbed
+ // Copyright (C) 2014-2017 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/concurrent_queues/sync_priority_queue.hpp [1:2]
+ boost/thread/concurrent_queues/sync_timed_queue.hpp [1:2]
+ boost/thread/executors/detail/priority_executor_base.hpp [1:2]
+ boost/thread/executors/detail/scheduled_executor_base.hpp [1:2]
+ boost/thread/executors/scheduled_thread_pool.hpp [1:2]
+ boost/thread/executors/scheduling_adaptor.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 85dbed9eb111a8ba961b4871d50c00f6
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/allocators/detail/node_tools.hpp at line 5, boost/interprocess/detail/interprocess_tester.hpp at line 5, boost/interprocess/detail/math_functions.hpp at line 5, boost/interprocess/smart_ptr/deleter.hpp at line 5, boost/interprocess/smart_ptr/detail/sp_counted_base.hpp at line 5, boost/interprocess/sync/shm/named_creation_functor.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2007-2012. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/interprocess/allocators/detail/node_tools.hpp [3:5]
+ boost/interprocess/detail/interprocess_tester.hpp [3:5]
+ boost/interprocess/detail/math_functions.hpp [3:4]
+ boost/interprocess/smart_ptr/deleter.hpp [3:3]
+ boost/interprocess/smart_ptr/detail/sp_counted_base.hpp [3:3]
+ boost/interprocess/sync/shm/named_creation_functor.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 86017817a4fe866e57af4c5d63b46eee
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2007-2015 Barend Gehrels, Amsterdam, the Netherlands.
+ // Copyright (c) 2008-2015 Bruno Lalande, Paris, France.
+ // Copyright (c) 2009-2015 Mateusz Loskot, London, UK.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/centroid.hpp [3:6]
+ boost/geometry/algorithms/convex_hull.hpp [3:5]
+ boost/geometry/algorithms/detail/disjoint/box_box.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/point_box.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/point_geometry.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/point_point.hpp [3:6]
+ boost/geometry/algorithms/detail/envelope/box.hpp [3:5]
+ boost/geometry/algorithms/detail/envelope/implementation.hpp [3:5]
+ boost/geometry/algorithms/detail/envelope/interface.hpp [3:5]
+ boost/geometry/algorithms/detail/envelope/linear.hpp [3:5]
+ boost/geometry/algorithms/detail/envelope/point.hpp [3:5]
+ boost/geometry/algorithms/detail/envelope/range.hpp [3:5]
+ boost/geometry/algorithms/detail/envelope/segment.hpp [3:5]
+ boost/geometry/algorithms/detail/equals/implementation.hpp [3:6]
+ boost/geometry/algorithms/detail/equals/interface.hpp [3:6]
+ boost/geometry/algorithms/detail/expand/box.hpp [3:6]
+ boost/geometry/algorithms/detail/expand/implementation.hpp [3:6]
+ boost/geometry/algorithms/detail/expand/indexed.hpp [3:6]
+ boost/geometry/algorithms/detail/expand/interface.hpp [3:6]
+ boost/geometry/algorithms/detail/expand/point.hpp [3:6]
+ boost/geometry/algorithms/detail/expand/segment.hpp [3:6]
+ boost/geometry/algorithms/detail/not.hpp [3:5]
+ boost/geometry/algorithms/detail/overlaps/implementation.hpp [3:5]
+ boost/geometry/algorithms/detail/overlaps/interface.hpp [3:5]
+ boost/geometry/algorithms/detail/point_is_spike_or_equal.hpp [3:6]
+ boost/geometry/algorithms/detail/sections/sectionalize.hpp [3:6]
+ boost/geometry/algorithms/detail/throw_on_empty_input.hpp [3:6]
+ boost/geometry/algorithms/detail/touches/implementation.hpp [3:6]
+ boost/geometry/algorithms/detail/touches/interface.hpp [3:6]
+ boost/geometry/algorithms/dispatch/envelope.hpp [3:5]
+ boost/geometry/algorithms/dispatch/expand.hpp [3:6]
+ boost/geometry/algorithms/envelope.hpp [3:5]
+ boost/geometry/algorithms/equals.hpp [3:6]
+ boost/geometry/algorithms/expand.hpp [3:6]
+ boost/geometry/algorithms/not_implemented.hpp [3:5]
+ boost/geometry/algorithms/overlaps.hpp [3:5]
+ boost/geometry/algorithms/simplify.hpp [3:5]
+ boost/geometry/algorithms/touches.hpp [3:6]
+ boost/geometry/core/exception.hpp [3:5]
+ boost/geometry/core/radian_access.hpp [3:5]
+ boost/geometry/core/ring_type.hpp [3:5]
+ boost/geometry/geometry.hpp [3:5]
+ boost/geometry/multi/multi.hpp [3:5]
+ boost/geometry/strategies/cartesian/box_in_box.hpp [3:6]
+ boost/geometry/strategies/cartesian/centroid_bashein_detmer.hpp [3:5]
+ boost/geometry/strategies/cartesian/centroid_weighted_length.hpp [3:4]
+ boost/geometry/strategies/cartesian/point_in_box.hpp [3:5]
+ boost/geometry/strategies/cartesian/side_by_triangle.hpp [3:5]
+ boost/geometry/strategies/distance_result.hpp [3:7]
+ boost/geometry/strategies/spherical/distance_cross_track_point_box.hpp [3:5]
+ boost/geometry/strategies/strategy_transform.hpp [3:5]
+ boost/geometry/strategies/transform/matrix_transformers.hpp [3:5]
+ boost/geometry/util/compress_variant.hpp [3:5]
+ boost/geometry/util/math.hpp [3:5]
+ boost/geometry/util/transform_variant.hpp [3:5]
+ boost/geometry/views/detail/indexed_point_view.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 861057944f34a04f706e0f6a42df266a
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/detail/endian_compat.h at line 4, boost/predef/detail/os_detected.h at line 4
+ License text:
+ Copyright Rene Rivera 2013
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/predef/detail/endian_compat.h [2:4]
+ boost/predef/detail/os_detected.h [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 867a1c22c4ac2ccaab801cc1559066f4
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/xsi_key.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2009. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/interprocess/xsi_key.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 867d62a424b643add54daea6312693a3
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signals2/detail/auto_buffer.hpp at line 3
+ License text:
+ // Copyright Thorsten Ottosen, 2009.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/signals2/detail/auto_buffer.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 86caacaeb0b6e2c6b4a0d2a6296d5718
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2017-2017 Barend Gehrels, Amsterdam, the Netherlands.
+ // Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/overlay/is_self_turn.hpp [3:4]
+ boost/geometry/algorithms/detail/overlay/needs_self_turns.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8732aa250cc4eb30f9cc35dfea00a8c2
+BELONGS ya.make
+ License text:
+ // Copyright 2005 Daniel Wallin.
+ // Copyright 2005 Joel de Guzman.
+ // Copyright 2005 Dan Marsden.
+ // Copyright 2008 Hartmut Kaiser.
+ // Copyright 2015 John Fletcher.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/phoenix/stl/algorithm/detail/begin.hpp [1:3]
+ boost/phoenix/stl/algorithm/detail/end.hpp [1:3]
+ boost/phoenix/stl/algorithm/detail/has_find.hpp [2:4]
+ boost/phoenix/stl/algorithm/detail/is_unordered_set_or_map.hpp [2:4]
+ boost/phoenix/stl/algorithm/querying.hpp [1:5]
+ boost/phoenix/stl/algorithm/transformation.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8737eef04eec9e4347f18af4da0267a9
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2003
+ // Gunter Winkler, Joerg Walter
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/ublas/vector_of_vector.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8759e7280d5ee3ff277e1c164e77f5e2
+BELONGS ya.make
+ License text:
+ // (C) Copyright 2005-2007 Matthias Troyer
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpi/detail/binary_buffer_iprimitive.hpp [1:1]
+ boost/mpi/detail/binary_buffer_oprimitive.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 878b856a9219137abfd6354d476eccdf
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/scope_exit.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/scope_exit.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 878bdc8a748b4f845c717d1e57e8953d
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/sunpro_cc.hpp [1:7]
+ boost/interprocess/smart_ptr/enable_shared_from_this.hpp [5:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 87984591a203f84e6f000f2a12696b5d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/numeric/conversion/bounds.hpp at line 3, boost/numeric/conversion/cast.hpp at line 3, boost/numeric/conversion/conversion_traits.hpp at line 3, boost/numeric/conversion/converter.hpp at line 3, boost/numeric/conversion/converter_policies.hpp at line 3, boost/numeric/conversion/detail/bounds.hpp at line 3, boost/numeric/conversion/detail/conversion_traits.hpp at line 3, boost/numeric/conversion/detail/converter.hpp at line 3, boost/numeric/conversion/detail/int_float_mixture.hpp at line 3, boost/numeric/conversion/detail/is_subranged.hpp at line 3, boost/numeric/conversion/detail/meta.hpp at line 3, boost/numeric/conversion/detail/sign_mixture.hpp at line 3, boost/numeric/conversion/detail/udt_builtin_mixture.hpp at line 3, boost/numeric/conversion/int_float_mixture.hpp at line 3, boost/numeric/conversion/int_float_mixture_enum.hpp at line 3, boost/numeric/conversion/is_subranged.hpp at line 3, boost/numeric/conversion/sign_mixture.hpp at line 3, boost/numeric/conversion/sign_mixture_enum.hpp at line 3, boost/numeric/conversion/udt_builtin_mixture.hpp at line 3, boost/numeric/conversion/udt_builtin_mixture_enum.hpp at line 3
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/conversion/bounds.hpp [1:3]
+ boost/numeric/conversion/cast.hpp [1:3]
+ boost/numeric/conversion/conversion_traits.hpp [1:3]
+ boost/numeric/conversion/converter.hpp [1:3]
+ boost/numeric/conversion/converter_policies.hpp [1:3]
+ boost/numeric/conversion/detail/bounds.hpp [1:3]
+ boost/numeric/conversion/detail/conversion_traits.hpp [1:3]
+ boost/numeric/conversion/detail/converter.hpp [1:3]
+ boost/numeric/conversion/detail/int_float_mixture.hpp [1:3]
+ boost/numeric/conversion/detail/is_subranged.hpp [1:3]
+ boost/numeric/conversion/detail/meta.hpp [1:3]
+ boost/numeric/conversion/detail/sign_mixture.hpp [1:3]
+ boost/numeric/conversion/detail/udt_builtin_mixture.hpp [1:3]
+ boost/numeric/conversion/int_float_mixture.hpp [1:3]
+ boost/numeric/conversion/int_float_mixture_enum.hpp [1:3]
+ boost/numeric/conversion/is_subranged.hpp [1:3]
+ boost/numeric/conversion/sign_mixture.hpp [1:3]
+ boost/numeric/conversion/sign_mixture_enum.hpp [1:3]
+ boost/numeric/conversion/udt_builtin_mixture.hpp [1:3]
+ boost/numeric/conversion/udt_builtin_mixture_enum.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 87bcff5d2ad0f8f350f255654e0f44c4
+BELONGS ya.make
+ License text:
+ // Copyright Darin Adler 2000
+ // Copyright Beman Dawes 2008
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/endian/detail/cover_operators.hpp [3:4]
+ boost/spirit/home/support/detail/endian/cover_operators.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 88463dc7415dc40f9f0dab153d600cd9
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2002-2003 Eric Friedman
+ // Copyright (c) 2002 by Andrei Alexandrescu
+ // Copyright (c) 2013-2014 Antony Polukhin
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/variant/detail/move.hpp [6:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 885de77fcf55e39ce3c87951447045d2
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2003
+ // Eric Friedman, Itay Maman
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/variant.hpp [6:7]
+ boost/variant/get.hpp [6:7]
+ boost/variant/variant_fwd.hpp [6:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 886ccc018a03d6afb9c858314c9c5e72
+BELONGS ya.make
+ License text:
+ // Copyright Aleksey Gurtovoy 2004
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp [5:5]
+ boost/mpl/aux_/config/forwarding.hpp [5:5]
+ boost/mpl/aux_/config/gcc.hpp [5:5]
+ boost/mpl/aux_/config/has_apply.hpp [5:5]
+ boost/mpl/aux_/config/integral.hpp [5:5]
+ boost/mpl/aux_/config/intel.hpp [5:5]
+ boost/mpl/aux_/contains_impl.hpp [5:6]
+ boost/mpl/aux_/has_apply.hpp [5:5]
+ boost/mpl/aux_/overload_names.hpp [5:5]
+ boost/mpl/aux_/partition_op.hpp [5:6]
+ boost/mpl/begin.hpp [5:5]
+ boost/mpl/contains.hpp [5:6]
+ boost/mpl/contains_fwd.hpp [5:6]
+ boost/mpl/empty_sequence.hpp [5:6]
+ boost/mpl/end.hpp [5:5]
+ boost/mpl/integral_c_tag.hpp [5:5]
+ boost/mpl/max.hpp [5:5]
+ boost/mpl/min.hpp [5:5]
+ boost/mpl/next.hpp [5:5]
+ boost/mpl/pair_view.hpp [5:6]
+ boost/mpl/partition.hpp [5:6]
+ boost/mpl/print.hpp [5:6]
+ boost/mpl/prior.hpp [5:5]
+ boost/mpl/sort.hpp [5:6]
+ boost/mpl/stable_partition.hpp [5:6]
+ boost/mpl/tag.hpp [5:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 887a085429223bebadadf93e46359904
+BELONGS ya.make
+ License text:
+ Copyright 2011-2013 Karsten Ahnert
+ Copyright 2011-2013 Mario Mulansky
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/algebra/fusion_algebra.hpp [9:10]
+ boost/numeric/odeint/external/mkl/mkl_operations.hpp [11:12]
+ boost/numeric/odeint/integrate/detail/integrate_adaptive.hpp [9:11]
+ boost/numeric/odeint/integrate/integrate.hpp [9:10]
+ boost/numeric/odeint/integrate/integrate_adaptive.hpp [9:10]
+ boost/numeric/odeint/integrate/integrate_const.hpp [10:11]
+ boost/numeric/odeint/integrate/integrate_n_steps.hpp [9:10]
+ boost/numeric/odeint/integrate/integrate_times.hpp [9:10]
+ boost/numeric/odeint/stepper/adams_bashforth.hpp [10:13]
+ boost/numeric/odeint/stepper/adams_bashforth_moulton.hpp [9:11]
+ boost/numeric/odeint/stepper/base/symplectic_rkn_stepper_base.hpp [9:11]
+ boost/numeric/odeint/stepper/bulirsch_stoer.hpp [12:14]
+ boost/numeric/odeint/stepper/bulirsch_stoer_dense_out.hpp [9:11]
+ boost/numeric/odeint/stepper/controlled_step_result.hpp [9:10]
+ boost/numeric/odeint/stepper/dense_output_runge_kutta.hpp [10:12]
+ boost/numeric/odeint/stepper/explicit_error_generic_rk.hpp [9:11]
+ boost/numeric/odeint/stepper/explicit_generic_rk.hpp [9:11]
+ boost/numeric/odeint/stepper/modified_midpoint.hpp [9:11]
+ boost/numeric/odeint/stepper/rosenbrock4.hpp [10:12]
+ boost/numeric/odeint/stepper/runge_kutta4.hpp [9:10]
+ boost/numeric/odeint/stepper/runge_kutta_cash_karp54.hpp [9:10]
+ boost/numeric/odeint/stepper/symplectic_euler.hpp [9:10]
+ boost/numeric/odeint/stepper/symplectic_rkn_sb3a_mclachlan.hpp [9:10]
+ boost/numeric/odeint/util/detail/is_range.hpp [9:10]
+ boost/numeric/odeint/util/resize.hpp [10:11]
+ boost/numeric/odeint/util/same_size.hpp [10:11]
+ boost/numeric/odeint/util/state_wrapper.hpp [10:11]
+ boost/numeric/odeint/util/ublas_wrapper.hpp [9:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL 88806da7c6e4f1c8e4c27e4efe582cf6
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+ // Copyright (c) 2010 Beman Dawes
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/system/detail/local_free_on_destruction.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8884bef124f1e985ab9ffb09bd143d9e
+BELONGS libs/container/ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: libs/container/src/dlmalloc_ext_2_8_6.c at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2007-2015. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ libs/container/src/dlmalloc_ext_2_8_6.c [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 888e14cf95e262f8777266527680cdb7
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/detail/collection_traits.hpp at line 10
+ License text:
+ // (C) Copyright Thorsten Ottosen 2002-2003. Use, modification and
+ // distribution is subject to the Boost Software License, Version
+ // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/range/detail/collection_traits.hpp [8:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8894fc789975c842d2c95727c8460378
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/random/detail/ptr_helper.hpp at line 6, boost/random/discard_block.hpp at line 6, boost/random/gamma_distribution.hpp at line 6, boost/random/linear_feedback_shift.hpp at line 6, boost/random/poisson_distribution.hpp at line 6, boost/random/ranlux.hpp at line 6, boost/random/subtract_with_carry.hpp at line 6, boost/random/variate_generator.hpp at line 6, boost/random/xor_combine.hpp at line 6
+ License text:
+ * Copyright Jens Maurer 2002
+ * Copyright Steven Watanabe 2010
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/random/detail/ptr_helper.hpp [3:5]
+ boost/random/discard_block.hpp [3:6]
+ boost/random/gamma_distribution.hpp [3:6]
+ boost/random/linear_feedback_shift.hpp [3:6]
+ boost/random/poisson_distribution.hpp [3:6]
+ boost/random/ranlux.hpp [3:5]
+ boost/random/subtract_with_carry.hpp [3:5]
+ boost/random/variate_generator.hpp [3:6]
+ boost/random/xor_combine.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 88be5191db5401445f916141ffb2f71f
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2004-2008 The Trustees of Indiana University.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/distributed/depth_first_search.hpp [1:1]
+ boost/graph/distributed/detail/mpi_process_group.ipp [3:5]
+ boost/graph/distributed/filtered_graph.hpp [1:1]
+ boost/graph/distributed/mpi_process_group.hpp [1:3]
+ boost/graph/distributed/strong_components.hpp [1:1]
+ boost/property_map/parallel/distributed_property_map.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 88edbb48555da51e4d9a816563e2e64b
+BELONGS ya.make
+ License text:
+ // Copyright 2016 Klemens Morgenstern
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/dll/detail/demangling/itanium.hpp [1:1]
+ boost/dll/detail/demangling/mangled_storage_base.hpp [1:1]
+ boost/dll/detail/demangling/msvc.hpp [1:1]
+ boost/dll/detail/get_mem_fn_type.hpp [1:1]
+ boost/dll/smart_library.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 890cdbbeb01b608880e13a28e9d21fad
+BELONGS libs/chrono/ya.make ya.make
+ License text:
+ // Copyright 2009-2010 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/chrono/detail/inlined/mac/chrono.hpp [3:4]
+ boost/chrono/detail/inlined/process_cpu_clocks.hpp [3:3]
+ boost/chrono/detail/inlined/win/chrono.hpp [3:4]
+ boost/chrono/detail/inlined/win/process_cpu_clocks.hpp [3:5]
+ boost/chrono/detail/is_evenly_divisible_by.hpp [3:3]
+ boost/chrono/detail/no_warning/signed_unsigned_cmp.hpp [3:3]
+ boost/chrono/detail/static_assert.hpp [3:3]
+ boost/chrono/detail/system.hpp [1:1]
+ libs/chrono/src/process_cpu_clocks.cpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 893c463df78fa1dc3d2a5088d1cb696c
+BELONGS ya.make
+ License text:
+ Copyright 2013 Karsten Ahnert
+ Copyright 2013 Mario Mulansky
+ Copyright 2013 Pascal Germroth
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/external/mpi/mpi.hpp [9:11]
+ boost/numeric/odeint/external/mpi/mpi_nested_algebra.hpp [9:11]
+ boost/numeric/odeint/external/mpi/mpi_state.hpp [9:11]
+ boost/numeric/odeint/external/mpi/mpi_vector_state.hpp [9:11]
+ boost/numeric/odeint/external/openmp/openmp.hpp [9:11]
+ boost/numeric/odeint/external/openmp/openmp_nested_algebra.hpp [9:11]
+ boost/numeric/odeint/external/openmp/openmp_range_algebra.hpp [9:11]
+ boost/numeric/odeint/external/openmp/openmp_state.hpp [9:11]
+ boost/numeric/odeint/stepper/adams_bashforth.hpp [10:13]
+ boost/numeric/odeint/util/n_ary_helper.hpp [7:9]
+ boost/numeric/odeint/util/split.hpp [9:11]
+ boost/numeric/odeint/util/split_adaptor.hpp [9:11]
+
+KEEP COPYRIGHT_SERVICE_LABEL 894d6bd4806969d55cdad5d7f1ac76c6
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/intrusive/pointer_traits.hpp at line 11
+ License text:
+ // (C) Copyright Ion Gaztanaga 2011-2014. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/intrusive/pointer_traits.hpp [9:11]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8974b0c1dff112772f6f0fcdf1ac331a
+BELONGS ya.make
+ License text:
+ // Copyright Kevlin Henney, 2000-2005.
+ // Copyright Alexander Nasonov, 2006-2010.
+ // Copyright Antony Polukhin, 2011-2014.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/lexical_cast.hpp [1:3]
+ boost/lexical_cast/bad_lexical_cast.hpp [1:3]
+ boost/lexical_cast/detail/converter_lexical.hpp [1:3]
+ boost/lexical_cast/detail/converter_lexical_streams.hpp [1:3]
+ boost/lexical_cast/detail/converter_numeric.hpp [1:3]
+ boost/lexical_cast/detail/inf_nan.hpp [1:3]
+ boost/lexical_cast/detail/is_character.hpp [1:3]
+ boost/lexical_cast/detail/lcast_char_constants.hpp [1:3]
+ boost/lexical_cast/detail/lcast_unsigned_converters.hpp [1:3]
+ boost/lexical_cast/detail/widest_char.hpp [1:3]
+ boost/lexical_cast/lexical_cast_old.hpp [1:3]
+ boost/lexical_cast/try_lexical_convert.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 897c9e939f14dd9c42b2594da26b4078
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/quick_allocator.hpp at line 15, boost/smart_ptr.hpp at line 12, boost/smart_ptr/detail/quick_allocator.hpp at line 15
+ License text:
+ // Copyright (c) 2003 Peter Dimov Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/detail/quick_allocator.hpp [13:14]
+ boost/smart_ptr.hpp [10:12]
+ boost/smart_ptr/detail/quick_allocator.hpp [13:14]
+
+KEEP COPYRIGHT_SERVICE_LABEL 89b41c99892d77117372460a7f90d72f
+BELONGS ya.make
+ License text:
+ // Copyright 2004-5 The Trustees of Indiana University.
+ // Copyright 2002 Brad King and Douglas Gregor
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/page_rank.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8a16b9d3a535dffcaa90392860dab7cf
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2016 Jakub Szuppe <j.szuppe@gmail.com>
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/compute/algorithm/detail/find_extrema_on_cpu.hpp [2:2]
+ boost/compute/algorithm/detail/merge_sort_on_gpu.hpp [2:2]
+ boost/compute/algorithm/detail/reduce_on_cpu.hpp [2:2]
+ boost/compute/algorithm/detail/scan_on_cpu.hpp [2:2]
+ boost/compute/algorithm/stable_sort_by_key.hpp [2:2]
+ boost/compute/detail/diagnostic.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8a1ed8f0251f7577b8544e60acf77847
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signals2/detail/preprocessed_arg_type.hpp at line 7, boost/signals2/detail/replace_slot_function.hpp at line 5, boost/signals2/preprocessed_slot.hpp at line 7, boost/signals2/signal.hpp at line 7
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/signals2/detail/preprocessed_arg_type.hpp [3:7]
+ boost/signals2/detail/replace_slot_function.hpp [1:1]
+ boost/signals2/preprocessed_slot.hpp [3:7]
+ boost/signals2/signal.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8aa205df11e7313c7f73c113a9ad1407
+BELONGS ya.make
+ License text:
+ // (C) Copyright Ion Gaztanaga 2014.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_traits/is_copy_assignable.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8aaadc898368c37b5d90c024f9104351
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/two_graphs_common_spanning_trees.hpp at line 3
+ License text:
+ // Copyright (C) 2012, Michele Caini.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/two_graphs_common_spanning_trees.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8ab893c2af2e95dd142106552216a78b
+BELONGS ya.make
+ License text:
+ // (c) Copyright Jeremy Siek and John R. Bandela 2001.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/tokenizer.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8ac5e87521312cdb64a9912532c93964
+BELONGS ya.make
+ License text:
+ // Copyright Beman Dawes 2010, 2011, 2014
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/endian/conversion.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8af78196c8203a9cd903193485babd4d
+BELONGS ya.make
+ License text:
+ // Copyright (c) Chris Glover, 2016.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_index/runtime_cast.hpp [2:2]
+ boost/type_index/runtime_cast/boost_shared_ptr_cast.hpp [2:2]
+ boost/type_index/runtime_cast/detail/runtime_cast_impl.hpp [2:2]
+ boost/type_index/runtime_cast/pointer_cast.hpp [2:2]
+ boost/type_index/runtime_cast/reference_cast.hpp [2:2]
+ boost/type_index/runtime_cast/register_runtime_class.hpp [2:2]
+ boost/type_index/runtime_cast/std_shared_ptr_cast.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8b05c90361e2a6041cc75977d659ee19
+BELONGS ya.make
+ License text:
+ // (C) Copyright 2005-7 Anthony Williams
+ // (C) Copyright 2005 John Maddock
+ // (C) Copyright 2011-2013 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/win32/once.hpp [6:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8b34f61b331f3abb5afdfaf9ebabd31b
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/bernoulli.hpp [3:8]
+ boost/math/special_functions/detail/bernoulli_details.hpp [2:4]
+ boost/math/special_functions/detail/unchecked_bernoulli.hpp [3:8]
+ boost/multiprecision/cpp_bin_float.hpp [2:4]
+ boost/multiprecision/cpp_bin_float/io.hpp [2:4]
+ boost/multiprecision/cpp_bin_float/transcendental.hpp [2:4]
+ boost/multiprecision/cpp_int/literals.hpp [2:4]
+ boost/multiprecision/cpp_int/serialize.hpp [2:4]
+ boost/multiprecision/cpp_int/value_pack.hpp [2:4]
+ boost/multiprecision/detail/bitscan.hpp [2:4]
+ boost/multiprecision/detail/float_string_cvt.hpp [2:4]
+ boost/multiprecision/detail/ublas_interop.hpp [2:4]
+ boost/multiprecision/float128.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8b60e030cc6169d709dda601f461ab82
+BELONGS ya.make
+ License text:
+ // Copyright 2008 Gautam Sewani
+ // Copyright 2008 John Maddock
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/distributions/detail/hypergeometric_pdf.hpp [1:2]
+ boost/math/distributions/hypergeometric.hpp [1:2]
+ boost/math/distributions/logistic.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8b8272837b8bc44df293a85a958ddc81
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/state_saver.hpp at line 14
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/serialization/state_saver.hpp [12:14]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8ba4403292419bfdcddcaa893b67a223
+BELONGS ya.make
+ License text:
+ // Copyright 2015, 2016 Peter Dimov.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mp11/detail/mp_count.hpp [4:4]
+ boost/mp11/detail/mp_list.hpp [4:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8bc414876d610225acf7d931e3e8a898
+BELONGS ya.make
+ License text:
+ // (C) Copyright Nick Thompson 2018.
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/tools/numerical_differentiation.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8bc5f0332b38acd415a3f19bc0dc773c
+BELONGS ya.make
+ License text:
+ Copyright (c) Marshall Clow 2012-2015.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/utility/string_ref.hpp [2:2]
+ boost/utility/string_view.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8bffccdfaa8562e58a7a916628756b56
+BELONGS ya.make
+ License text:
+ * Copyright (c) 2009, 2011 Helge Bahmann
+ * Copyright (c) 2009 Phil Endecott
+ * Copyright (c) 2013 Tim Blechmann
+ * Linux-specific code by Phil Endecott
+ * Copyright (c) 2014 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/atomic/detail/caps_linux_arm.hpp [6:10]
+ boost/atomic/detail/ops_linux_arm.hpp [6:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8c4a8c000d9107e7eca71c97ea07a686
+BELONGS ya.make
+ License text:
+ // Copyright 2008 Howard Hinnant
+ // Copyright 2008 Beman Dawes
+ // Copyright 2009 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/ratio/detail/overflow_helpers.hpp [3:5]
+ boost/ratio/ratio.hpp [3:5]
+ boost/ratio/ratio_fwd.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8c6050ea8948fa818487ef143b51e836
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2006, 2007.
+ // Copyright Paul A. Bristow 2008, 2010.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/distributions/chi_squared.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8c848a7abcce1ef1126166b8d49f03f0
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/map.hpp at line 15, boost/serialization/set.hpp at line 14
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/serialization/map.hpp [13:15]
+ boost/serialization/set.hpp [12:14]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8c9a23c5e3683d8f54e0310eed071f27
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2006-2007 Matias Capeletto
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/bimap.hpp [3:3]
+ boost/bimap/bimap.hpp [3:3]
+ boost/bimap/container_adaptor/associative_container_adaptor.hpp [3:3]
+ boost/bimap/container_adaptor/container_adaptor.hpp [3:3]
+ boost/bimap/container_adaptor/detail/comparison_adaptor.hpp [3:3]
+ boost/bimap/container_adaptor/detail/functor_bag.hpp [3:3]
+ boost/bimap/container_adaptor/detail/identity_converters.hpp [3:3]
+ boost/bimap/container_adaptor/detail/key_extractor.hpp [3:3]
+ boost/bimap/container_adaptor/detail/non_unique_container_helper.hpp [3:3]
+ boost/bimap/container_adaptor/list_adaptor.hpp [3:3]
+ boost/bimap/container_adaptor/list_map_adaptor.hpp [3:3]
+ boost/bimap/container_adaptor/map_adaptor.hpp [3:3]
+ boost/bimap/container_adaptor/multimap_adaptor.hpp [3:3]
+ boost/bimap/container_adaptor/multiset_adaptor.hpp [3:3]
+ boost/bimap/container_adaptor/ordered_associative_container_adaptor.hpp [3:3]
+ boost/bimap/container_adaptor/sequence_container_adaptor.hpp [3:3]
+ boost/bimap/container_adaptor/set_adaptor.hpp [3:3]
+ boost/bimap/container_adaptor/support/iterator_facade_converters.hpp [3:3]
+ boost/bimap/container_adaptor/unordered_associative_container_adaptor.hpp [3:3]
+ boost/bimap/container_adaptor/unordered_map_adaptor.hpp [3:3]
+ boost/bimap/container_adaptor/unordered_multimap_adaptor.hpp [3:3]
+ boost/bimap/container_adaptor/unordered_multiset_adaptor.hpp [3:3]
+ boost/bimap/container_adaptor/unordered_set_adaptor.hpp [3:3]
+ boost/bimap/container_adaptor/vector_adaptor.hpp [3:3]
+ boost/bimap/container_adaptor/vector_map_adaptor.hpp [3:3]
+ boost/bimap/detail/bimap_core.hpp [3:3]
+ boost/bimap/detail/concept_tags.hpp [3:3]
+ boost/bimap/detail/debug/static_error.hpp [3:3]
+ boost/bimap/detail/generate_index_binder.hpp [3:3]
+ boost/bimap/detail/generate_relation_binder.hpp [3:3]
+ boost/bimap/detail/generate_view_binder.hpp [3:3]
+ boost/bimap/detail/is_set_type_of.hpp [3:3]
+ boost/bimap/detail/manage_additional_parameters.hpp [3:3]
+ boost/bimap/detail/manage_bimap_key.hpp [3:3]
+ boost/bimap/detail/map_view_base.hpp [3:3]
+ boost/bimap/detail/map_view_iterator.hpp [3:3]
+ boost/bimap/detail/modifier_adaptor.hpp [3:3]
+ boost/bimap/detail/non_unique_views_helper.hpp [3:3]
+ boost/bimap/detail/set_view_base.hpp [3:3]
+ boost/bimap/detail/set_view_iterator.hpp [3:3]
+ boost/bimap/detail/test/check_metadata.hpp [3:3]
+ boost/bimap/detail/user_interface_config.hpp [3:3]
+ boost/bimap/list_of.hpp [3:3]
+ boost/bimap/multiset_of.hpp [3:3]
+ boost/bimap/property_map/set_support.hpp [3:3]
+ boost/bimap/property_map/unordered_set_support.hpp [3:3]
+ boost/bimap/relation/detail/access_builder.hpp [3:3]
+ boost/bimap/relation/detail/metadata_access_builder.hpp [3:3]
+ boost/bimap/relation/detail/mutant.hpp [3:3]
+ boost/bimap/relation/detail/static_access_builder.hpp [3:3]
+ boost/bimap/relation/detail/to_mutable_relation_functor.hpp [3:3]
+ boost/bimap/relation/member_at.hpp [3:3]
+ boost/bimap/relation/mutant_relation.hpp [3:3]
+ boost/bimap/relation/pair_layout.hpp [3:3]
+ boost/bimap/relation/structured_pair.hpp [3:3]
+ boost/bimap/relation/support/data_extractor.hpp [3:3]
+ boost/bimap/relation/support/get.hpp [3:3]
+ boost/bimap/relation/support/get_pair_functor.hpp [3:3]
+ boost/bimap/relation/support/is_tag_of_member_at.hpp [3:3]
+ boost/bimap/relation/support/member_with_tag.hpp [3:3]
+ boost/bimap/relation/support/opposite_tag.hpp [3:3]
+ boost/bimap/relation/support/pair_by.hpp [3:3]
+ boost/bimap/relation/support/pair_type_by.hpp [3:3]
+ boost/bimap/relation/support/value_type_of.hpp [3:3]
+ boost/bimap/relation/symmetrical_base.hpp [3:3]
+ boost/bimap/set_of.hpp [3:3]
+ boost/bimap/support/data_type_by.hpp [3:3]
+ boost/bimap/support/iterator_type_by.hpp [3:3]
+ boost/bimap/support/key_type_by.hpp [3:3]
+ boost/bimap/support/lambda.hpp [3:3]
+ boost/bimap/support/map_by.hpp [3:3]
+ boost/bimap/support/map_type_by.hpp [3:3]
+ boost/bimap/support/value_type_by.hpp [3:3]
+ boost/bimap/tags/support/apply_to_value_type.hpp [3:3]
+ boost/bimap/tags/support/default_tagged.hpp [3:3]
+ boost/bimap/tags/support/is_tagged.hpp [3:3]
+ boost/bimap/tags/support/overwrite_tagged.hpp [3:3]
+ boost/bimap/tags/support/tag_of.hpp [3:3]
+ boost/bimap/tags/support/value_type_of.hpp [3:3]
+ boost/bimap/tags/tagged.hpp [3:3]
+ boost/bimap/unconstrained_set_of.hpp [3:3]
+ boost/bimap/unordered_multiset_of.hpp [3:3]
+ boost/bimap/unordered_set_of.hpp [3:3]
+ boost/bimap/vector_of.hpp [3:3]
+ boost/bimap/views/list_map_view.hpp [3:3]
+ boost/bimap/views/list_set_view.hpp [3:3]
+ boost/bimap/views/map_view.hpp [3:3]
+ boost/bimap/views/multimap_view.hpp [3:3]
+ boost/bimap/views/multiset_view.hpp [3:3]
+ boost/bimap/views/set_view.hpp [3:3]
+ boost/bimap/views/unconstrained_map_view.hpp [3:3]
+ boost/bimap/views/unconstrained_set_view.hpp [3:3]
+ boost/bimap/views/unordered_map_view.hpp [3:3]
+ boost/bimap/views/unordered_multimap_view.hpp [3:3]
+ boost/bimap/views/unordered_multiset_view.hpp [3:3]
+ boost/bimap/views/unordered_set_view.hpp [3:3]
+ boost/bimap/views/vector_map_view.hpp [3:3]
+ boost/bimap/views/vector_set_view.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8ca6fe2283580e1208a843af7014e9fa
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/scoped_ptr.hpp at line 10
+ License text:
+ // Copyright (c) 2003 Vladimir Prus.
+ // Use, modification and distribution is subject to the Boost Software
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/serialization/scoped_ptr.hpp [8:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8ccab375f0ba1f9625b1fa8c1f008ecd
+BELONGS ya.make
+ License text:
+ // Copyright Antony Polukhin, 2016-2018.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/stacktrace/detail/safe_dump_win.ipp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8ce38e822427eb86a5d1145c3e78e7cd
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2014 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/detail/spinlock_std_atomic.hpp [11:11]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8cef697bc7a8725b9ce5431bdffe3bfc
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/detail/type_traits.hpp at line 3
+ License text:
+ // Copyright Shreyans Doshi 2017.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/python/detail/type_traits.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8cf1d6f59e36dba9fc9f6ebd0154e611
+BELONGS ya.make
+ License text:
+ // (C) Copyright Artyom Beilis 2010.
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config.hpp [3:5]
- boost/config/platform/amigaos.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 80e431bfd997466eba94e588baf14554
-BELONGS ya.make
- License text:
- // Copyright 2015 Klemens Morgenstern
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/dll/detail/demangling/demangle_symbol.hpp [1:1]
- boost/winapi/dbghelp.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 80e6b625b0b30f8fcea39561d39e6989
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/statechart/event.hpp at line 6
- License text:
- // Copyright 2002-2007 Andreas Huber Doenni
- // Distributed under the Boost Software License, Version 1.0. (See accompany-
- // ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/statechart/event.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8105f2c79ac57a14ec250eba3e02c438
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/gcc.hpp [1:9]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8125ae3214a419e15087b23ef1f51e4e
-BELONGS ya.make
- License text:
- // Copyright (C) 2001-2003
- // William E. Kempf
- // Copyright (C) 2007-9 Anthony Williams
- // (C) Copyright 2011-2012 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/exceptions.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8146a3f9a95a1d54e922f676609d062e
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/test/auto_unit_test.hpp at line 3, boost/test/data/config.hpp at line 3, boost/test/data/dataset.hpp at line 3, boost/test/data/for_each_sample.hpp at line 3, boost/test/data/generators.hpp at line 3, boost/test/data/index_sequence.hpp at line 3, boost/test/data/monomorphic.hpp at line 3, boost/test/data/monomorphic/array.hpp at line 3, boost/test/data/monomorphic/collection.hpp at line 3, boost/test/data/monomorphic/fwd.hpp at line 3, boost/test/data/monomorphic/generate.hpp at line 3, boost/test/data/monomorphic/generators.hpp at line 3, boost/test/data/monomorphic/generators/keywords.hpp at line 3, boost/test/data/monomorphic/generators/random.hpp at line 3, boost/test/data/monomorphic/generators/xrange.hpp at line 3, boost/test/data/monomorphic/grid.hpp at line 3, boost/test/data/monomorphic/initializer_list.hpp at line 3, boost/test/data/monomorphic/join.hpp at line 3, boost/test/data/monomorphic/sample_merge.hpp at line 3, boost/test/data/monomorphic/singleton.hpp at line 3, boost/test/data/monomorphic/zip.hpp at line 3, boost/test/data/size.hpp at line 3, boost/test/data/test_case.hpp at line 3, boost/test/debug.hpp at line 3, boost/test/debug_config.hpp at line 3, boost/test/detail/config.hpp at line 3, boost/test/detail/enable_warnings.hpp at line 3, boost/test/detail/fwd_decl.hpp at line 3, boost/test/detail/global_typedef.hpp at line 3, boost/test/detail/log_level.hpp at line 3, boost/test/detail/pp_variadic.hpp at line 3, boost/test/detail/suppress_warnings.hpp at line 3, boost/test/detail/throw_exception.hpp at line 3, boost/test/detail/workaround.hpp at line 3, boost/test/execution_monitor.hpp at line 3, boost/test/floating_point_comparison.hpp at line 3, boost/test/framework.hpp at line 3, boost/test/impl/compiler_log_formatter.ipp at line 3, boost/test/impl/cpp_main.ipp at line 3, boost/test/impl/debug.ipp at line 3, boost/test/impl/decorator.ipp at line 3, boost/test/impl/execution_monitor.ipp at line 3, boost/test/impl/framework.ipp at line 3, boost/test/impl/plain_report_formatter.ipp at line 3, boost/test/impl/progress_monitor.ipp at line 3, boost/test/impl/results_collector.ipp at line 3, boost/test/impl/results_reporter.ipp at line 3, boost/test/impl/test_main.ipp at line 3, boost/test/impl/test_tools.ipp at line 3, boost/test/impl/test_tree.ipp at line 3, boost/test/impl/unit_test_log.ipp at line 3, boost/test/impl/unit_test_main.ipp at line 3, boost/test/impl/unit_test_monitor.ipp at line 3, boost/test/impl/unit_test_parameters.ipp at line 3, boost/test/impl/xml_log_formatter.ipp at line 3, boost/test/impl/xml_report_formatter.ipp at line 3, boost/test/included/execution_monitor.hpp at line 3, boost/test/included/prg_exec_monitor.hpp at line 3, boost/test/included/test_exec_monitor.hpp at line 3, boost/test/included/unit_test.hpp at line 3, boost/test/included/unit_test_framework.hpp at line 3, boost/test/minimal.hpp at line 3, boost/test/output/compiler_log_formatter.hpp at line 3, boost/test/output/plain_report_formatter.hpp at line 3, boost/test/output/xml_log_formatter.hpp at line 3, boost/test/output/xml_report_formatter.hpp at line 3, boost/test/output_test_stream.hpp at line 3, boost/test/parameterized_test.hpp at line 3, boost/test/predicate_result.hpp at line 3, boost/test/prg_exec_monitor.hpp at line 3, boost/test/progress_monitor.hpp at line 3, boost/test/results_collector.hpp at line 3, boost/test/results_reporter.hpp at line 3, boost/test/test_case_template.hpp at line 3, boost/test/test_exec_monitor.hpp at line 3, boost/test/test_tools.hpp at line 3, boost/test/tools/assertion.hpp at line 3, boost/test/tools/assertion_result.hpp at line 3, boost/test/tools/collection_comparison_op.hpp at line 3, boost/test/tools/context.hpp at line 3, boost/test/tools/cstring_comparison_op.hpp at line 3, boost/test/tools/detail/bitwise_manip.hpp at line 3, boost/test/tools/detail/expression_holder.hpp at line 3, boost/test/tools/detail/fwd.hpp at line 3, boost/test/tools/detail/indirections.hpp at line 3, boost/test/tools/detail/it_pair.hpp at line 3, boost/test/tools/detail/lexicographic_manip.hpp at line 3, boost/test/tools/detail/per_element_manip.hpp at line 3, boost/test/tools/detail/print_helper.hpp at line 3, boost/test/tools/detail/tolerance_manip.hpp at line 3, boost/test/tools/floating_point_comparison.hpp at line 3, boost/test/tools/fpc_op.hpp at line 3, boost/test/tools/fpc_tolerance.hpp at line 3, boost/test/tools/interface.hpp at line 3, boost/test/tools/old/impl.hpp at line 3, boost/test/tools/old/interface.hpp at line 3, boost/test/tools/output_test_stream.hpp at line 3, boost/test/tree/auto_registration.hpp at line 3, boost/test/tree/decorator.hpp at line 3, boost/test/tree/fixture.hpp at line 3, boost/test/tree/global_fixture.hpp at line 3, boost/test/tree/observer.hpp at line 3, boost/test/tree/test_case_counter.hpp at line 3, boost/test/tree/test_case_template.hpp at line 3, boost/test/tree/test_unit.hpp at line 3, boost/test/tree/traverse.hpp at line 3, boost/test/tree/visitor.hpp at line 3, boost/test/unit_test.hpp at line 3, boost/test/unit_test_log.hpp at line 3, boost/test/unit_test_log_formatter.hpp at line 3, boost/test/unit_test_monitor.hpp at line 3, boost/test/unit_test_parameters.hpp at line 3, boost/test/unit_test_suite.hpp at line 3, boost/test/utils/algorithm.hpp at line 3, boost/test/utils/assign_op.hpp at line 3, boost/test/utils/basic_cstring/basic_cstring.hpp at line 3, boost/test/utils/basic_cstring/basic_cstring_fwd.hpp at line 3, boost/test/utils/basic_cstring/bcs_char_traits.hpp at line 3, boost/test/utils/basic_cstring/compare.hpp at line 3, boost/test/utils/basic_cstring/io.hpp at line 3, boost/test/utils/class_properties.hpp at line 3, boost/test/utils/custom_manip.hpp at line 3, boost/test/utils/foreach.hpp at line 3, boost/test/utils/is_cstring.hpp at line 3, boost/test/utils/is_forward_iterable.hpp at line 3, boost/test/utils/iterator/input_iterator_facade.hpp at line 3, boost/test/utils/iterator/token_iterator.hpp at line 3, boost/test/utils/lazy_ostream.hpp at line 3, boost/test/utils/named_params.hpp at line 3, boost/test/utils/nullstream.hpp at line 3, boost/test/utils/rtti.hpp at line 3, boost/test/utils/runtime/argument.hpp at line 3, boost/test/utils/runtime/argument_factory.hpp at line 3, boost/test/utils/runtime/cla/argv_traverser.hpp at line 3, boost/test/utils/runtime/cla/parser.hpp at line 3, boost/test/utils/runtime/env/fetch.hpp at line 3, boost/test/utils/runtime/errors.hpp at line 3, boost/test/utils/runtime/finalize.hpp at line 3, boost/test/utils/runtime/fwd.hpp at line 3, boost/test/utils/runtime/modifier.hpp at line 3, boost/test/utils/runtime/parameter.hpp at line 3, boost/test/utils/setcolor.hpp at line 3, boost/test/utils/string_cast.hpp at line 3, boost/test/utils/trivial_singleton.hpp at line 3, boost/test/utils/wrap_stringstream.hpp at line 3, boost/test/utils/xml_printer.hpp at line 3
- License text:
- // (C) Copyright Gennadiy Rozental 2001.
- // Distributed under the Boost Software License, Version 1.0.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/platform/vms.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8d1214bd39f8d38ef1ffd0059eaff3a3
+BELONGS ya.make
+ License text:
+ Copyright (c) Marshall Clow 2008-2012.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/algorithm/clamp.hpp [2:2]
+ boost/algorithm/cxx11/all_of.hpp [2:2]
+ boost/algorithm/cxx11/any_of.hpp [2:2]
+ boost/algorithm/cxx11/copy_if.hpp [2:2]
+ boost/algorithm/cxx11/iota.hpp [2:2]
+ boost/algorithm/cxx11/none_of.hpp [2:2]
+ boost/algorithm/cxx11/one_of.hpp [2:2]
+ boost/algorithm/cxx14/equal.hpp [2:2]
+ boost/algorithm/cxx14/mismatch.hpp [2:2]
+ boost/algorithm/sort_subrange.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8d17906b204a2cc18be72559f1e52f7a
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/bessel.hpp [1:4]
+ boost/multiprecision/detail/dynamic_array.hpp [2:5]
+ boost/multiprecision/detail/rebind.hpp [2:5]
+ boost/multiprecision/detail/utype_helper.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8d32c9bc0dec53998ef384e09f62c65a
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2010 Joel de Guzman
+ Copyright (c) 2010 Eric Niebler
+ Copyright (c) 2014-2015 John Fletcher
+ Copyright (c) 2016 Kohei Takahashi
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/phoenix/config.hpp [2:5]
+ boost/phoenix/version.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8d72d1dcdfe68675073a61b3409c37a1
+BELONGS ya.make
+ License text:
+ // Copyright 2014 Renato Tegon Forti, Antony Polukhin.
+ // Copyright 2015-2016 Antony Polukhin.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/dll.hpp [1:2]
+ boost/dll/detail/posix/shared_library_impl.hpp [1:2]
+ boost/dll/detail/windows/shared_library_impl.hpp [1:2]
+ boost/dll/import.hpp [1:2]
+ boost/dll/shared_library_load_mode.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8d783c7ebd355434173d26d1a01630d2
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2002-2003
+ // Toon Knapen, Kresimir Fresl, Joerg Walter
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/ublas/detail/raw.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8dda65576163c7b59f1859a97983c400
+BELONGS ya.make
+ License text:
+ // (C) Copyright Herve Bronnimann 2004.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/algorithm/minmax.hpp [1:1]
+ boost/algorithm/minmax_element.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8df3b48da7b43c15c1ba96354d5fbec1
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2012.
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/airy.hpp [1:3]
+ boost/math/special_functions/hankel.hpp [1:3]
+ boost/math/special_functions/jacobi_elliptic.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8e00e7d6fce9c86304b3ed14045f8800
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/functional/hash/extensions.hpp at line 4
+ License text:
+ // Copyright 2017 Daniel James.
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/functional/hash/extensions.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8e0585a991e50507adee58bb8887332d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/detail/extract_optional_type.hpp at line 5
+ License text:
+ // Copyright Arno Schoedl & Neil Groves 2009.
+ // Use, modification and distribution is subject to the Boost Software
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/range/detail/extract_optional_type.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8e7a593588369508c428e748fbb1d2c0
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/is_base_of.hpp at line 4, boost/type_traits/is_base_of_tr1.hpp at line 4
+ License text:
+ // (C) Copyright Rani Sharoni 2003-2005.
+ // Use, modification and distribution are subject to the Boost Software License,
+ // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_traits/is_base_of.hpp [2:4]
+ boost/type_traits/is_base_of_tr1.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8e7a9dea59a5af6d4783ac550489f594
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/disjoint/box_box.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/point_box.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/point_geometry.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/point_point.hpp [3:6]
+ boost/geometry/algorithms/detail/point_is_spike_or_equal.hpp [3:6]
+ boost/geometry/algorithms/detail/touches/implementation.hpp [3:6]
+ boost/geometry/algorithms/detail/touches/interface.hpp [3:6]
+ boost/geometry/algorithms/touches.hpp [3:6]
+ boost/geometry/strategies/cartesian/box_in_box.hpp [3:6]
+ boost/geometry/strategies/distance_result.hpp [3:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8e899876d1c97d9cc82926a3113a06b5
+BELONGS libs/ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: libs/test/src/compiler_log_formatter.cpp at line 3, libs/test/src/cpp_main.cpp at line 3, libs/test/src/execution_monitor.cpp at line 3, libs/test/src/framework.cpp at line 3, libs/test/src/plain_report_formatter.cpp at line 3, libs/test/src/progress_monitor.cpp at line 3, libs/test/src/results_collector.cpp at line 3, libs/test/src/results_reporter.cpp at line 3, libs/test/src/test_main.cpp at line 3, libs/test/src/test_tools.cpp at line 3, libs/test/src/test_tree.cpp at line 3, libs/test/src/unit_test_log.cpp at line 3, libs/test/src/unit_test_main.cpp at line 3, libs/test/src/unit_test_monitor.cpp at line 3, libs/test/src/unit_test_parameters.cpp at line 3, libs/test/src/xml_log_formatter.cpp at line 3, libs/test/src/xml_report_formatter.cpp at line 3
+ License text:
+ // (C) Copyright Gennadiy Rozental 2005-2010.
+ // Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/test/auto_unit_test.hpp [1:3]
- boost/test/data/config.hpp [1:3]
- boost/test/data/dataset.hpp [1:3]
- boost/test/data/for_each_sample.hpp [1:3]
- boost/test/data/generators.hpp [1:3]
- boost/test/data/index_sequence.hpp [1:3]
- boost/test/data/monomorphic.hpp [1:3]
- boost/test/data/monomorphic/array.hpp [1:3]
- boost/test/data/monomorphic/collection.hpp [1:3]
- boost/test/data/monomorphic/fwd.hpp [1:3]
- boost/test/data/monomorphic/generate.hpp [1:3]
- boost/test/data/monomorphic/generators.hpp [1:3]
- boost/test/data/monomorphic/generators/keywords.hpp [1:3]
- boost/test/data/monomorphic/generators/random.hpp [1:3]
- boost/test/data/monomorphic/generators/xrange.hpp [1:3]
- boost/test/data/monomorphic/grid.hpp [1:3]
- boost/test/data/monomorphic/initializer_list.hpp [1:3]
- boost/test/data/monomorphic/join.hpp [1:3]
- boost/test/data/monomorphic/sample_merge.hpp [1:3]
- boost/test/data/monomorphic/singleton.hpp [1:3]
- boost/test/data/monomorphic/zip.hpp [1:3]
- boost/test/data/size.hpp [1:3]
- boost/test/data/test_case.hpp [1:3]
- boost/test/debug.hpp [1:3]
- boost/test/debug_config.hpp [1:3]
- boost/test/detail/config.hpp [1:3]
- boost/test/detail/enable_warnings.hpp [1:3]
- boost/test/detail/fwd_decl.hpp [1:3]
- boost/test/detail/global_typedef.hpp [1:3]
- boost/test/detail/log_level.hpp [1:3]
- boost/test/detail/pp_variadic.hpp [1:3]
- boost/test/detail/suppress_warnings.hpp [1:3]
- boost/test/detail/throw_exception.hpp [1:3]
- boost/test/detail/workaround.hpp [1:3]
- boost/test/execution_monitor.hpp [1:4]
- boost/test/floating_point_comparison.hpp [1:3]
- boost/test/framework.hpp [1:3]
- boost/test/impl/compiler_log_formatter.ipp [1:3]
- boost/test/impl/cpp_main.ipp [1:4]
- boost/test/impl/debug.ipp [1:3]
- boost/test/impl/decorator.ipp [1:3]
- boost/test/impl/execution_monitor.ipp [1:4]
- boost/test/impl/framework.ipp [1:3]
- boost/test/impl/plain_report_formatter.ipp [1:3]
- boost/test/impl/progress_monitor.ipp [1:3]
- boost/test/impl/results_collector.ipp [1:3]
- boost/test/impl/results_reporter.ipp [1:3]
- boost/test/impl/test_main.ipp [1:4]
- boost/test/impl/test_tools.ipp [1:3]
- boost/test/impl/test_tree.ipp [1:3]
- boost/test/impl/unit_test_log.ipp [1:3]
- boost/test/impl/unit_test_main.ipp [1:3]
- boost/test/impl/unit_test_monitor.ipp [1:3]
- boost/test/impl/unit_test_parameters.ipp [1:3]
- boost/test/impl/xml_log_formatter.ipp [1:3]
- boost/test/impl/xml_report_formatter.ipp [1:3]
- boost/test/included/execution_monitor.hpp [1:3]
- boost/test/included/prg_exec_monitor.hpp [1:3]
- boost/test/included/test_exec_monitor.hpp [1:3]
- boost/test/included/unit_test.hpp [1:3]
- boost/test/included/unit_test_framework.hpp [1:3]
- boost/test/minimal.hpp [1:3]
- boost/test/output/compiler_log_formatter.hpp [1:3]
- boost/test/output/plain_report_formatter.hpp [1:3]
- boost/test/output/xml_log_formatter.hpp [1:3]
- boost/test/output/xml_report_formatter.hpp [1:3]
- boost/test/output_test_stream.hpp [1:3]
- boost/test/parameterized_test.hpp [1:3]
- boost/test/predicate_result.hpp [1:3]
- boost/test/prg_exec_monitor.hpp [1:3]
- boost/test/progress_monitor.hpp [1:3]
- boost/test/results_collector.hpp [1:3]
- boost/test/results_reporter.hpp [1:3]
- boost/test/test_case_template.hpp [1:3]
- boost/test/test_exec_monitor.hpp [1:3]
- boost/test/test_tools.hpp [1:3]
- boost/test/tools/assertion.hpp [1:3]
- boost/test/tools/assertion_result.hpp [1:3]
- boost/test/tools/collection_comparison_op.hpp [1:3]
- boost/test/tools/context.hpp [1:3]
- boost/test/tools/cstring_comparison_op.hpp [1:3]
- boost/test/tools/detail/bitwise_manip.hpp [1:3]
- boost/test/tools/detail/expression_holder.hpp [1:3]
- boost/test/tools/detail/fwd.hpp [1:3]
- boost/test/tools/detail/indirections.hpp [1:3]
- boost/test/tools/detail/it_pair.hpp [1:3]
- boost/test/tools/detail/lexicographic_manip.hpp [1:3]
- boost/test/tools/detail/per_element_manip.hpp [1:3]
- boost/test/tools/detail/print_helper.hpp [1:3]
- boost/test/tools/detail/tolerance_manip.hpp [1:3]
- boost/test/tools/floating_point_comparison.hpp [1:3]
- boost/test/tools/fpc_op.hpp [1:3]
- boost/test/tools/fpc_tolerance.hpp [1:3]
- boost/test/tools/interface.hpp [1:3]
- boost/test/tools/old/impl.hpp [1:3]
- boost/test/tools/old/interface.hpp [1:3]
- boost/test/tools/output_test_stream.hpp [1:3]
- boost/test/tree/auto_registration.hpp [1:3]
- boost/test/tree/decorator.hpp [1:3]
- boost/test/tree/fixture.hpp [1:3]
- boost/test/tree/global_fixture.hpp [1:3]
- boost/test/tree/observer.hpp [1:3]
- boost/test/tree/test_case_counter.hpp [1:3]
- boost/test/tree/test_case_template.hpp [1:3]
- boost/test/tree/test_unit.hpp [1:3]
- boost/test/tree/traverse.hpp [1:3]
- boost/test/tree/visitor.hpp [1:3]
- boost/test/unit_test.hpp [1:3]
- boost/test/unit_test_log.hpp [1:3]
- boost/test/unit_test_log_formatter.hpp [1:3]
- boost/test/unit_test_monitor.hpp [1:3]
- boost/test/unit_test_parameters.hpp [1:3]
- boost/test/unit_test_suite.hpp [1:3]
- boost/test/utils/algorithm.hpp [1:3]
- boost/test/utils/assign_op.hpp [1:3]
- boost/test/utils/basic_cstring/basic_cstring.hpp [1:3]
- boost/test/utils/basic_cstring/basic_cstring_fwd.hpp [1:3]
- boost/test/utils/basic_cstring/bcs_char_traits.hpp [1:3]
- boost/test/utils/basic_cstring/compare.hpp [1:3]
- boost/test/utils/basic_cstring/io.hpp [1:3]
- boost/test/utils/class_properties.hpp [1:3]
- boost/test/utils/custom_manip.hpp [1:3]
- boost/test/utils/foreach.hpp [1:4]
- boost/test/utils/is_cstring.hpp [1:3]
- boost/test/utils/is_forward_iterable.hpp [1:3]
- boost/test/utils/iterator/input_iterator_facade.hpp [1:3]
- boost/test/utils/iterator/token_iterator.hpp [1:3]
- boost/test/utils/lazy_ostream.hpp [1:3]
- boost/test/utils/named_params.hpp [1:3]
- boost/test/utils/nullstream.hpp [1:4]
- boost/test/utils/rtti.hpp [1:3]
- boost/test/utils/runtime/argument.hpp [1:3]
- boost/test/utils/runtime/argument_factory.hpp [1:3]
- boost/test/utils/runtime/cla/argv_traverser.hpp [1:3]
- boost/test/utils/runtime/cla/parser.hpp [1:3]
- boost/test/utils/runtime/env/fetch.hpp [1:3]
- boost/test/utils/runtime/errors.hpp [1:3]
- boost/test/utils/runtime/finalize.hpp [1:3]
- boost/test/utils/runtime/fwd.hpp [1:3]
- boost/test/utils/runtime/modifier.hpp [1:3]
- boost/test/utils/runtime/parameter.hpp [1:3]
- boost/test/utils/setcolor.hpp [1:3]
- boost/test/utils/string_cast.hpp [1:3]
- boost/test/utils/trivial_singleton.hpp [1:3]
- boost/test/utils/wrap_stringstream.hpp [1:3]
- boost/test/utils/xml_printer.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 815d94d66a2546cae56370ff8fcb4b87
-BELONGS ya.make
- License text:
- Copyright (c) 2005-2010 Joel de Guzman
- Copyright (c) 2015 John Fletcher
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/phoenix/core/is_value.hpp [2:3]
- boost/phoenix/function/adapt_function.hpp [2:4]
- boost/phoenix/function/function.hpp [2:4]
- boost/phoenix/function/lazy_list.hpp [33:35]
- boost/phoenix/function/lazy_operator.hpp [27:29]
- boost/phoenix/function/lazy_prelude.hpp [115:117]
- boost/phoenix/function/lazy_reuse.hpp [24:26]
- boost/phoenix/function/lazy_signature.hpp [34:36]
- boost/phoenix/function/lazy_smart.hpp [11:13]
- boost/phoenix/scope/let.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 819f37d0e4cef828a597dfe80506c110
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2011-2012 Thomas Bernard
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/repository/home/qi/operator/detail/keywords.hpp [2:2]
- boost/spirit/repository/home/qi/operator/keywords.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 81a6875950b829b3077c273b6534daf8
-BELONGS ya.make
- License text:
- // Copyright (c) 2000-2013
- // Joerg Walter, Mathias Koch. David Bellot
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/ublas/expression_types.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 81afc10bc24c6ad633280dae0d84d3e7
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/stable_vector.hpp at line 14
- License text:
- // Copyright 2008 Joaquin M Lopez Munoz.
- // Distributed under the Boost Software License, Version 1.0.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ libs/test/src/compiler_log_formatter.cpp [1:3]
+ libs/test/src/cpp_main.cpp [1:3]
+ libs/test/src/execution_monitor.cpp [1:3]
+ libs/test/src/framework.cpp [1:3]
+ libs/test/src/plain_report_formatter.cpp [1:3]
+ libs/test/src/progress_monitor.cpp [1:3]
+ libs/test/src/results_collector.cpp [1:3]
+ libs/test/src/results_reporter.cpp [1:3]
+ libs/test/src/test_main.cpp [1:3]
+ libs/test/src/test_tools.cpp [1:3]
+ libs/test/src/test_tree.cpp [1:3]
+ libs/test/src/unit_test_log.cpp [1:3]
+ libs/test/src/unit_test_main.cpp [1:3]
+ libs/test/src/unit_test_monitor.cpp [1:3]
+ libs/test/src/unit_test_parameters.cpp [1:3]
+ libs/test/src/xml_log_formatter.cpp [1:3]
+ libs/test/src/xml_report_formatter.cpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8ec420c6bb9d6f64da8e3c68da3b8781
+BELONGS ya.make
+ License text:
+ * Copyright (c) 2009-2010, Marco Guazzone
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/ublas/operation/size.hpp [6:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8f0399d287bd4672d939ab68c754655c
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/metrowerks.hpp [1:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8f1718c11307979d7a28026b2d0fe133
+BELONGS ya.make
+ License text:
+ Copyright (c) 1998-2002 Joel de Guzman
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/core/scanner/scanner.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8f6b5f5d24bb145db03585e8c2d90444
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2011-2015 Barend Gehrels, Amsterdam, the Netherlands.
+ // Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/partition.hpp [3:4]
+ boost/geometry/geometries/adapted/boost_fusion.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8f8a6ade4e24b15fc1746528d7ea1943
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/shared_container_iterator.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8fa19e12c729859dd6ba789e32b192d7
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/uuid/uuid_io.hpp at line 5
+ License text:
+ // Copyright 2009 Andy Tompkins.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/uuid/uuid_io.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8fc0f0fba44b95f1156474d48496df66
+BELONGS ya.make
+ License text:
+ // (C) Copyright 2009-2011 Frederic Bron.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_traits/has_bit_and.hpp [1:1]
+ boost/type_traits/has_bit_and_assign.hpp [1:1]
+ boost/type_traits/has_bit_or.hpp [1:1]
+ boost/type_traits/has_bit_or_assign.hpp [1:1]
+ boost/type_traits/has_bit_xor.hpp [1:1]
+ boost/type_traits/has_bit_xor_assign.hpp [1:1]
+ boost/type_traits/has_complement.hpp [1:1]
+ boost/type_traits/has_dereference.hpp [1:1]
+ boost/type_traits/has_divides.hpp [1:1]
+ boost/type_traits/has_divides_assign.hpp [1:1]
+ boost/type_traits/has_equal_to.hpp [1:1]
+ boost/type_traits/has_greater.hpp [1:1]
+ boost/type_traits/has_greater_equal.hpp [1:1]
+ boost/type_traits/has_left_shift.hpp [1:1]
+ boost/type_traits/has_left_shift_assign.hpp [1:1]
+ boost/type_traits/has_less.hpp [1:1]
+ boost/type_traits/has_less_equal.hpp [1:1]
+ boost/type_traits/has_logical_and.hpp [1:1]
+ boost/type_traits/has_logical_not.hpp [1:1]
+ boost/type_traits/has_logical_or.hpp [1:1]
+ boost/type_traits/has_minus.hpp [1:1]
+ boost/type_traits/has_minus_assign.hpp [1:1]
+ boost/type_traits/has_modulus.hpp [1:1]
+ boost/type_traits/has_modulus_assign.hpp [1:1]
+ boost/type_traits/has_multiplies.hpp [1:1]
+ boost/type_traits/has_multiplies_assign.hpp [1:1]
+ boost/type_traits/has_negate.hpp [1:1]
+ boost/type_traits/has_not_equal_to.hpp [1:1]
+ boost/type_traits/has_operator.hpp [1:1]
+ boost/type_traits/has_plus.hpp [1:1]
+ boost/type_traits/has_plus_assign.hpp [1:1]
+ boost/type_traits/has_post_decrement.hpp [1:1]
+ boost/type_traits/has_post_increment.hpp [1:1]
+ boost/type_traits/has_pre_decrement.hpp [1:1]
+ boost/type_traits/has_pre_increment.hpp [1:1]
+ boost/type_traits/has_right_shift.hpp [1:1]
+ boost/type_traits/has_right_shift_assign.hpp [1:1]
+ boost/type_traits/has_unary_minus.hpp [1:1]
+ boost/type_traits/has_unary_plus.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8fcebd7437f1dd40087ed0462e0f9f30
+BELONGS ya.make
+ License text:
+ Copyright 2011-2013 Karsten Ahnert
+ Copyright 2011-2015 Mario Mulansky
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/integrate/detail/integrate_adaptive.hpp [9:11]
+ boost/numeric/odeint/integrate/detail/integrate_times.hpp [9:11]
+ boost/numeric/odeint/integrate/integrate_adaptive.hpp [9:10]
+ boost/numeric/odeint/integrate/integrate_const.hpp [10:11]
+ boost/numeric/odeint/integrate/integrate_n_steps.hpp [9:10]
+ boost/numeric/odeint/integrate/integrate_times.hpp [9:10]
+ boost/numeric/odeint/stepper/bulirsch_stoer_dense_out.hpp [9:11]
+ boost/numeric/odeint/stepper/dense_output_runge_kutta.hpp [10:12]
+ boost/numeric/odeint/stepper/rosenbrock4_dense_output.hpp [9:11]
+
+KEEP COPYRIGHT_SERVICE_LABEL 904ac0fbc0c69dc23756cca7f9047738
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/xpressive/detail/core/list.hpp at line 9, boost/xpressive/detail/core/regex_domain.hpp at line 7
+ License text:
+ // Copyright 2009 Eric Niebler. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/xpressive/detail/core/list.hpp [7:9]
+ boost/xpressive/detail/core/regex_domain.hpp [5:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 90b5a1efae58384e3e3f273a6001f459
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/parameter/aux_/overloads.hpp at line 3, boost/parameter/macros.hpp at line 3, boost/parameter/parameters.hpp at line 3
+ License text:
+ // Copyright David Abrahams, Daniel Wallin 2003. Use, modification and
+ // distribution is subject to the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/container/stable_vector.hpp [12:14]
-
-KEEP COPYRIGHT_SERVICE_LABEL 81e40597ae94e7857c389eb7ca2d8bc5
-BELONGS ya.make
- License text:
- Copyright (c) 2014 Joel de Guzman
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/x3/directive/raw.hpp [2:2]
- boost/spirit/home/x3/directive/with.hpp [2:2]
- boost/spirit/home/x3/numeric/bool.hpp [2:3]
- boost/spirit/home/x3/numeric/bool_policies.hpp [2:3]
- boost/spirit/home/x3/support/ast/position_tagged.hpp [2:2]
- boost/spirit/home/x3/support/utility/error_reporting.hpp [2:2]
- boost/spirit/home/x3/support/utility/lambda_visitor.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 81eb46b520090303ae6a7327a48d976a
-BELONGS ya.make
- License text:
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2001 Daniel Nuffer
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/core/composite/directives.hpp [2:4]
- boost/spirit/home/classic/core/non_terminal/parser_id.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 81fe68c1eb5b189c68e4dea969fce3be
-BELONGS ya.make
- License text:
- * Copyright (c) 2002
- * John Maddock
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/regex/v4/char_regex_traits.hpp [3:4]
- boost/regex/v4/iterator_category.hpp [3:4]
- boost/regex/v4/mem_block_cache.hpp [2:3]
- boost/regex/v4/perl_matcher.hpp [3:4]
- boost/regex/v4/perl_matcher_common.hpp [3:4]
- boost/regex/v4/perl_matcher_non_recursive.hpp [3:4]
- boost/regex/v4/perl_matcher_recursive.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 821d5dbb10517b78a129c5a569511c66
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/bernoulli.hpp [3:8]
- boost/math/special_functions/detail/polygamma.hpp [3:8]
- boost/math/special_functions/detail/unchecked_bernoulli.hpp [3:8]
- boost/math/special_functions/polygamma.hpp [3:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8247b8e57241653b1a6c9310db268720
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/detail/suffix.hpp at line 14, boost/python/ptr.hpp at line 21
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/detail/suffix.hpp [4:14]
- boost/python/ptr.hpp [11:12]
-
-KEEP COPYRIGHT_SERVICE_LABEL 827562f5ed05600883ea03e3e0a2c31c
-BELONGS ya.make
- License text:
- Copyright (c) 2005-2010 Joel de Guzman
- Copyright (c) 2010 Thomas Heller
- Copyright (c) 2018 Kohei Takahashi
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/phoenix/operator/detail/cpp03/mem_fun_ptr_eval_result_of.hpp [15:17]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_10.hpp [2:4]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_20.hpp [2:4]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_30.hpp [2:4]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_40.hpp [2:4]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_50.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 828392eb47631cd343f70a8a21ef9867
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/static_warning.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/serialization/static_warning.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 828b79ff16e0bf70fedcf473356bf326
-BELONGS ya.make
- License text:
- // Copyright (c) 2002, 2003 Peter Dimov and Multi Media Ltd.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/bind/apply.hpp [7:7]
- boost/detail/lightweight_mutex.hpp [13:13]
- boost/signals2/mutex.hpp [4:5]
- boost/smart_ptr/detail/lightweight_mutex.hpp [13:13]
-
-KEEP COPYRIGHT_SERVICE_LABEL 82a5c9cddab57527910d79d3fe2ae9db
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/move/detail/pointer_element.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2014-2017. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/move/detail/pointer_element.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 82b5e5f7da5de75b8236435ea1ff6d07
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/intel.hpp [1:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8353a5f664019fadfadf20a94a4bcf06
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/iterator_range_core.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/range/iterator_range_core.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 836034d8c34d94c8f9a9362d0cdaa003
-BELONGS ya.make
- License text:
- // Copyright (c) 2007, 2013, 2015 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/detail/sp_counted_base_clang.hpp [12:12]
-
-KEEP COPYRIGHT_SERVICE_LABEL 83a2273fe7be7104b274c814ca135140
-BELONGS ya.make
- License text:
- // Copyright (c) 2003-2008 Jan Gaspar
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/circular_buffer.hpp [3:3]
- boost/circular_buffer/base.hpp [3:5]
- boost/circular_buffer/debug.hpp [3:3]
- boost/circular_buffer/details.hpp [3:3]
- boost/circular_buffer/space_optimized.hpp [3:5]
- boost/circular_buffer_fwd.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 83ac86d574485a1a19802156b8aaf3de
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/rolling_mean.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/accumulators/statistics/rolling_mean.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 83ed55632ceb50ed673f455f92688d6f
-BELONGS ya.make
- License text:
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2001 Daniel Nuffer
- Copyright (c) 2001 Bruce Florman
- Copyright (c) 2002 Raghavendra Satish
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/core/composite/impl/directives.ipp [2:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8401d15b86c3161a24915207008a129a
-BELONGS ya.make
- License text:
- // Copyright Aleksey Gurtovoy 2000-2010
- // Copyright David Abrahams 2000-2002
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/zip_view.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 843b75a62260b0f0a240e99d06ed4f7c
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/functional/overloaded_function.hpp at line 4, boost/functional/overloaded_function/config.hpp at line 4, boost/functional/overloaded_function/detail/base.hpp at line 4, boost/functional/overloaded_function/detail/function_type.hpp at line 4, boost/local_function.hpp at line 4, boost/local_function/aux_/add_pointed_const.hpp at line 4, boost/local_function/aux_/function.hpp at line 4, boost/local_function/aux_/macro/code_/bind.hpp at line 4, boost/local_function/aux_/macro/code_/functor.hpp at line 4, boost/local_function/aux_/macro/code_/result.hpp at line 4, boost/local_function/aux_/macro/decl.hpp at line 4, boost/local_function/aux_/macro/name.hpp at line 4, boost/local_function/aux_/macro/typeof.hpp at line 4, boost/local_function/aux_/member.hpp at line 4, boost/local_function/aux_/nobind.hpp at line 4, boost/local_function/aux_/preprocessor/traits/bind.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_/append.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_/index.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_/nil.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_/set_error.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_/validate.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_/validate_/return_count.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_/validate_/this_count.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_binds.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_const_binds.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_error.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_params.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_returns.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_sign_/any_bind_type.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_sign_/sign.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_sign_/validate.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_sign_/validate_/defaults.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_sign_/validate_/this.hpp at line 4, boost/local_function/aux_/preprocessor/traits/param.hpp at line 4, boost/local_function/aux_/symbol.hpp at line 4, boost/local_function/config.hpp at line 4, boost/local_function/detail/preprocessor/keyword/auto.hpp at line 4, boost/local_function/detail/preprocessor/keyword/bind.hpp at line 4, boost/local_function/detail/preprocessor/keyword/const.hpp at line 4, boost/local_function/detail/preprocessor/keyword/const_bind.hpp at line 4, boost/local_function/detail/preprocessor/keyword/default.hpp at line 4, boost/local_function/detail/preprocessor/keyword/facility/add.hpp at line 4, boost/local_function/detail/preprocessor/keyword/facility/is.hpp at line 4, boost/local_function/detail/preprocessor/keyword/facility/remove.hpp at line 4, boost/local_function/detail/preprocessor/keyword/inline.hpp at line 4, boost/local_function/detail/preprocessor/keyword/recursive.hpp at line 4, boost/local_function/detail/preprocessor/keyword/register.hpp at line 4, boost/local_function/detail/preprocessor/keyword/return.hpp at line 4, boost/local_function/detail/preprocessor/keyword/this.hpp at line 4, boost/local_function/detail/preprocessor/keyword/thisunderscore.hpp at line 4, boost/local_function/detail/preprocessor/keyword/void.hpp at line 4, boost/local_function/detail/preprocessor/line_counter.hpp at line 4, boost/local_function/detail/preprocessor/void_list.hpp at line 4, boost/utility/identity_type.hpp at line 4
- License text:
- // Copyright (C) 2009-2012 Lorenzo Caminiti
- // Distributed under the Boost Software License, Version 1.0
- // (see accompanying file LICENSE_1_0.txt or a copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/functional/overloaded_function.hpp [2:4]
- boost/functional/overloaded_function/config.hpp [2:4]
- boost/functional/overloaded_function/detail/base.hpp [2:4]
- boost/functional/overloaded_function/detail/function_type.hpp [2:4]
- boost/local_function.hpp [2:4]
- boost/local_function/aux_/add_pointed_const.hpp [2:4]
- boost/local_function/aux_/function.hpp [2:4]
- boost/local_function/aux_/macro/code_/bind.hpp [2:4]
- boost/local_function/aux_/macro/code_/functor.hpp [2:4]
- boost/local_function/aux_/macro/code_/result.hpp [2:4]
- boost/local_function/aux_/macro/decl.hpp [2:4]
- boost/local_function/aux_/macro/name.hpp [2:4]
- boost/local_function/aux_/macro/typeof.hpp [2:4]
- boost/local_function/aux_/member.hpp [2:4]
- boost/local_function/aux_/nobind.hpp [2:4]
- boost/local_function/aux_/preprocessor/traits/bind.hpp [2:4]
- boost/local_function/aux_/preprocessor/traits/decl.hpp [2:4]
- boost/local_function/aux_/preprocessor/traits/decl_/append.hpp [2:4]
- boost/local_function/aux_/preprocessor/traits/decl_/index.hpp [2:4]
- boost/local_function/aux_/preprocessor/traits/decl_/nil.hpp [2:4]
- boost/local_function/aux_/preprocessor/traits/decl_/set_error.hpp [2:4]
- boost/local_function/aux_/preprocessor/traits/decl_/validate.hpp [2:4]
- boost/local_function/aux_/preprocessor/traits/decl_/validate_/return_count.hpp [2:4]
- boost/local_function/aux_/preprocessor/traits/decl_/validate_/this_count.hpp [2:4]
- boost/local_function/aux_/preprocessor/traits/decl_binds.hpp [2:4]
- boost/local_function/aux_/preprocessor/traits/decl_const_binds.hpp [2:4]
- boost/local_function/aux_/preprocessor/traits/decl_error.hpp [2:4]
- boost/local_function/aux_/preprocessor/traits/decl_params.hpp [2:4]
- boost/local_function/aux_/preprocessor/traits/decl_returns.hpp [2:4]
- boost/local_function/aux_/preprocessor/traits/decl_sign_/any_bind_type.hpp [2:4]
- boost/local_function/aux_/preprocessor/traits/decl_sign_/sign.hpp [2:4]
- boost/local_function/aux_/preprocessor/traits/decl_sign_/validate.hpp [2:4]
- boost/local_function/aux_/preprocessor/traits/decl_sign_/validate_/defaults.hpp [2:4]
- boost/local_function/aux_/preprocessor/traits/decl_sign_/validate_/this.hpp [2:4]
- boost/local_function/aux_/preprocessor/traits/param.hpp [2:4]
- boost/local_function/aux_/symbol.hpp [2:4]
- boost/local_function/config.hpp [2:4]
- boost/local_function/detail/preprocessor/keyword/auto.hpp [2:4]
- boost/local_function/detail/preprocessor/keyword/bind.hpp [2:4]
- boost/local_function/detail/preprocessor/keyword/const.hpp [2:4]
- boost/local_function/detail/preprocessor/keyword/const_bind.hpp [2:4]
- boost/local_function/detail/preprocessor/keyword/default.hpp [2:4]
- boost/local_function/detail/preprocessor/keyword/facility/add.hpp [2:4]
- boost/local_function/detail/preprocessor/keyword/facility/is.hpp [2:4]
- boost/local_function/detail/preprocessor/keyword/facility/remove.hpp [2:4]
- boost/local_function/detail/preprocessor/keyword/inline.hpp [2:4]
- boost/local_function/detail/preprocessor/keyword/recursive.hpp [2:4]
- boost/local_function/detail/preprocessor/keyword/register.hpp [2:4]
- boost/local_function/detail/preprocessor/keyword/return.hpp [2:4]
- boost/local_function/detail/preprocessor/keyword/this.hpp [2:4]
- boost/local_function/detail/preprocessor/keyword/thisunderscore.hpp [2:4]
- boost/local_function/detail/preprocessor/keyword/void.hpp [2:4]
- boost/local_function/detail/preprocessor/line_counter.hpp [2:4]
- boost/local_function/detail/preprocessor/void_list.hpp [2:4]
- boost/utility/identity_type.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8464df292fc04767d911d71f2cb5e8c7
-BELONGS ya.make
- License text:
- Copyright (c) 2005-2012 Joel de Guzman
- Copyright (c) 2005-2006 Dan Marsden
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/container/deque/back_extended_deque.hpp [2:3]
- boost/fusion/container/deque/deque.hpp [2:3]
- boost/fusion/container/deque/deque_fwd.hpp [2:3]
- boost/fusion/container/deque/deque_iterator.hpp [2:3]
- boost/fusion/container/deque/detail/at_impl.hpp [2:3]
- boost/fusion/container/deque/detail/begin_impl.hpp [2:3]
- boost/fusion/container/deque/detail/convert_impl.hpp [2:4]
- boost/fusion/container/deque/detail/cpp03/as_deque.hpp [2:3]
- boost/fusion/container/deque/detail/cpp03/deque.hpp [2:3]
- boost/fusion/container/deque/detail/cpp03/deque_forward_ctor.hpp [2:3]
- boost/fusion/container/deque/detail/cpp03/deque_fwd.hpp [2:3]
- boost/fusion/container/deque/detail/cpp03/deque_initial_size.hpp [2:3]
- boost/fusion/container/deque/detail/cpp03/deque_keyed_values.hpp [2:3]
- boost/fusion/container/deque/detail/cpp03/deque_keyed_values_call.hpp [2:3]
- boost/fusion/container/deque/detail/cpp03/limits.hpp [2:3]
- boost/fusion/container/deque/detail/deque_keyed_values.hpp [2:3]
- boost/fusion/container/deque/detail/end_impl.hpp [2:3]
- boost/fusion/container/deque/detail/keyed_element.hpp [2:3]
- boost/fusion/container/deque/detail/value_at_impl.hpp [2:3]
- boost/fusion/container/deque/front_extended_deque.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 84883abd8b74ae75cd80081a7a4afda9
-BELONGS ya.make
- License text:
- // Copyright 2018 Steven Watanabe
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_erasure/detail/member11.hpp [3:3]
- boost/type_erasure/detail/meta.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 849856933c18e49ccb9a21ab0a3b2262
-BELONGS ya.make
- License text:
- // Copyright (c) 2010 Alfredo Correa
- // Copyright (c) 2010-2012 Barend Gehrels, Amsterdam, the Netherlands.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/geometries/adapted/boost_array.hpp [3:4]
- boost/geometry/geometries/adapted/boost_polygon.hpp [3:3]
- boost/geometry/geometries/adapted/boost_polygon/box.hpp [3:3]
- boost/geometry/geometries/adapted/boost_polygon/hole_iterator.hpp [3:3]
- boost/geometry/geometries/adapted/boost_polygon/holes_proxy.hpp [3:3]
- boost/geometry/geometries/adapted/boost_polygon/point.hpp [3:3]
- boost/geometry/geometries/adapted/boost_polygon/polygon.hpp [3:3]
- boost/geometry/geometries/adapted/boost_polygon/ring.hpp [3:3]
- boost/geometry/geometries/adapted/boost_polygon/ring_proxy.hpp [3:3]
- boost/geometry/geometries/adapted/boost_range/adjacent_filtered.hpp [3:3]
- boost/geometry/geometries/adapted/boost_range/filtered.hpp [3:3]
- boost/geometry/geometries/adapted/boost_range/reversed.hpp [3:3]
- boost/geometry/geometries/adapted/boost_range/sliced.hpp [3:3]
- boost/geometry/geometries/adapted/boost_range/strided.hpp [3:3]
- boost/geometry/geometries/adapted/boost_range/uniqued.hpp [3:3]
- boost/geometry/geometries/adapted/std_array.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 84aa8f0944ff081c273a32083375f310
-BELONGS ya.make
- License text:
- // Copyright (c) 2007 John Maddock
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/cos_pi.hpp [1:3]
- boost/math/special_functions/detail/bessel_jy_asym.hpp [1:3]
- boost/math/special_functions/sin_pi.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 84c2f237d9b27185e5ee0a17bf920901
-BELONGS ya.make
- License text:
- // Copyright (c) 2003
- // Eric Friedman
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/blank.hpp [6:7]
- boost/blank_fwd.hpp [6:7]
- boost/config/detail/suffix.hpp [4:14]
- boost/detail/reference_content.hpp [6:7]
- boost/detail/templated_streams.hpp [6:7]
- boost/variant/apply_visitor.hpp [6:7]
- boost/variant/detail/backup_holder.hpp [6:7]
- boost/variant/detail/cast_storage.hpp [6:7]
- boost/variant/detail/config.hpp [6:7]
- boost/variant/detail/enable_recursive.hpp [6:7]
- boost/variant/detail/enable_recursive_fwd.hpp [6:7]
- boost/variant/detail/forced_return.hpp [6:7]
- boost/variant/detail/generic_result_type.hpp [6:7]
- boost/variant/detail/over_sequence.hpp [6:7]
- boost/variant/detail/substitute.hpp [11:12]
- boost/variant/detail/substitute_fwd.hpp [6:7]
- boost/variant/detail/visitation_impl.hpp [6:7]
- boost/variant/recursive_variant.hpp [6:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 84d21d33ceccd2d9309a88e9bd5c3138
-BELONGS ya.make
- License text:
- // Copyright Beman Dawes 2015
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/endian/endian.hpp [3:3]
- boost/filesystem/string_file.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8501cc13330743bddd0f34154c70c7ac
-BELONGS ya.make
- License text:
- * Copyright 2017 Vinnie Falco
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/winapi/debugapi.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 852c378c4fd6ef337fd9e49f5c3962b1
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/overlay/do_reverse.hpp [3:4]
- boost/geometry/algorithms/detail/recalculate.hpp [3:6]
- boost/geometry/multi/algorithms/covered_by.hpp [3:6]
- boost/geometry/multi/algorithms/detail/extreme_points.hpp [3:6]
- boost/geometry/multi/algorithms/remove_spikes.hpp [3:6]
- boost/geometry/multi/algorithms/within.hpp [3:6]
- boost/geometry/policies/robustness/no_rescale_policy.hpp [3:6]
- boost/geometry/policies/robustness/robust_point_type.hpp [3:6]
- boost/geometry/policies/robustness/segment_ratio_type.hpp [3:6]
- boost/geometry/strategies/agnostic/point_in_poly_winding.hpp [3:4]
- boost/geometry/strategies/cartesian/point_in_poly_winding.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8557b07967860b86b0d16d725b465dad
-BELONGS ya.make
- License text:
- // Copyright (C) 2007 Peder Holt
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/typeof/dmc/typeof_impl.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 857ffcad3efa00650a38f17b49cfd2ab
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/is_base_and_derived.hpp at line 4
- License text:
- // (C) Copyright Rani Sharoni 2003.
- // Use, modification and distribution are subject to the Boost Software License,
- // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_traits/is_base_and_derived.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 85b21f7669ee2771cecab63ce53d186a
-BELONGS ya.make
- License text:
- // Copyright (C) 2014 Ian Forbed
- // Copyright (C) 2014-2017 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/concurrent_queues/sync_priority_queue.hpp [1:2]
- boost/thread/concurrent_queues/sync_timed_queue.hpp [1:2]
- boost/thread/executors/detail/priority_executor_base.hpp [1:2]
- boost/thread/executors/detail/scheduled_executor_base.hpp [1:2]
- boost/thread/executors/scheduled_thread_pool.hpp [1:2]
- boost/thread/executors/scheduling_adaptor.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 85dbed9eb111a8ba961b4871d50c00f6
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/allocators/detail/node_tools.hpp at line 5, boost/interprocess/detail/interprocess_tester.hpp at line 5, boost/interprocess/detail/math_functions.hpp at line 5, boost/interprocess/smart_ptr/deleter.hpp at line 5, boost/interprocess/smart_ptr/detail/sp_counted_base.hpp at line 5, boost/interprocess/sync/shm/named_creation_functor.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2007-2012. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/interprocess/allocators/detail/node_tools.hpp [3:5]
- boost/interprocess/detail/interprocess_tester.hpp [3:5]
- boost/interprocess/detail/math_functions.hpp [3:4]
- boost/interprocess/smart_ptr/deleter.hpp [3:3]
- boost/interprocess/smart_ptr/detail/sp_counted_base.hpp [3:3]
- boost/interprocess/sync/shm/named_creation_functor.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 86017817a4fe866e57af4c5d63b46eee
-BELONGS ya.make
- License text:
- // Copyright (c) 2007-2015 Barend Gehrels, Amsterdam, the Netherlands.
- // Copyright (c) 2008-2015 Bruno Lalande, Paris, France.
- // Copyright (c) 2009-2015 Mateusz Loskot, London, UK.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/centroid.hpp [3:6]
- boost/geometry/algorithms/convex_hull.hpp [3:5]
- boost/geometry/algorithms/detail/disjoint/box_box.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/point_box.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/point_geometry.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/point_point.hpp [3:6]
- boost/geometry/algorithms/detail/envelope/box.hpp [3:5]
- boost/geometry/algorithms/detail/envelope/implementation.hpp [3:5]
- boost/geometry/algorithms/detail/envelope/interface.hpp [3:5]
- boost/geometry/algorithms/detail/envelope/linear.hpp [3:5]
- boost/geometry/algorithms/detail/envelope/point.hpp [3:5]
- boost/geometry/algorithms/detail/envelope/range.hpp [3:5]
- boost/geometry/algorithms/detail/envelope/segment.hpp [3:5]
- boost/geometry/algorithms/detail/equals/implementation.hpp [3:6]
- boost/geometry/algorithms/detail/equals/interface.hpp [3:6]
- boost/geometry/algorithms/detail/expand/box.hpp [3:6]
- boost/geometry/algorithms/detail/expand/implementation.hpp [3:6]
- boost/geometry/algorithms/detail/expand/indexed.hpp [3:6]
- boost/geometry/algorithms/detail/expand/interface.hpp [3:6]
- boost/geometry/algorithms/detail/expand/point.hpp [3:6]
- boost/geometry/algorithms/detail/expand/segment.hpp [3:6]
- boost/geometry/algorithms/detail/not.hpp [3:5]
- boost/geometry/algorithms/detail/overlaps/implementation.hpp [3:5]
- boost/geometry/algorithms/detail/overlaps/interface.hpp [3:5]
- boost/geometry/algorithms/detail/point_is_spike_or_equal.hpp [3:6]
- boost/geometry/algorithms/detail/sections/sectionalize.hpp [3:6]
- boost/geometry/algorithms/detail/throw_on_empty_input.hpp [3:6]
- boost/geometry/algorithms/detail/touches/implementation.hpp [3:6]
- boost/geometry/algorithms/detail/touches/interface.hpp [3:6]
- boost/geometry/algorithms/dispatch/envelope.hpp [3:5]
- boost/geometry/algorithms/dispatch/expand.hpp [3:6]
- boost/geometry/algorithms/envelope.hpp [3:5]
- boost/geometry/algorithms/equals.hpp [3:6]
- boost/geometry/algorithms/expand.hpp [3:6]
- boost/geometry/algorithms/not_implemented.hpp [3:5]
- boost/geometry/algorithms/overlaps.hpp [3:5]
- boost/geometry/algorithms/simplify.hpp [3:5]
- boost/geometry/algorithms/touches.hpp [3:6]
- boost/geometry/core/exception.hpp [3:5]
- boost/geometry/core/radian_access.hpp [3:5]
- boost/geometry/core/ring_type.hpp [3:5]
- boost/geometry/geometry.hpp [3:5]
- boost/geometry/multi/multi.hpp [3:5]
- boost/geometry/strategies/cartesian/box_in_box.hpp [3:6]
- boost/geometry/strategies/cartesian/centroid_bashein_detmer.hpp [3:5]
- boost/geometry/strategies/cartesian/centroid_weighted_length.hpp [3:4]
- boost/geometry/strategies/cartesian/point_in_box.hpp [3:5]
- boost/geometry/strategies/cartesian/side_by_triangle.hpp [3:5]
- boost/geometry/strategies/distance_result.hpp [3:7]
- boost/geometry/strategies/spherical/distance_cross_track_point_box.hpp [3:5]
- boost/geometry/strategies/strategy_transform.hpp [3:5]
- boost/geometry/strategies/transform/matrix_transformers.hpp [3:5]
- boost/geometry/util/compress_variant.hpp [3:5]
- boost/geometry/util/math.hpp [3:5]
- boost/geometry/util/transform_variant.hpp [3:5]
- boost/geometry/views/detail/indexed_point_view.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 861057944f34a04f706e0f6a42df266a
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/detail/endian_compat.h at line 4, boost/predef/detail/os_detected.h at line 4
- License text:
- Copyright Rene Rivera 2013
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/predef/detail/endian_compat.h [2:4]
- boost/predef/detail/os_detected.h [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 867a1c22c4ac2ccaab801cc1559066f4
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/xsi_key.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2009. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/interprocess/xsi_key.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 867d62a424b643add54daea6312693a3
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signals2/detail/auto_buffer.hpp at line 3
- License text:
- // Copyright Thorsten Ottosen, 2009.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/signals2/detail/auto_buffer.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 86caacaeb0b6e2c6b4a0d2a6296d5718
-BELONGS ya.make
- License text:
- // Copyright (c) 2017-2017 Barend Gehrels, Amsterdam, the Netherlands.
- // Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/overlay/is_self_turn.hpp [3:4]
- boost/geometry/algorithms/detail/overlay/needs_self_turns.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8732aa250cc4eb30f9cc35dfea00a8c2
-BELONGS ya.make
- License text:
- // Copyright 2005 Daniel Wallin.
- // Copyright 2005 Joel de Guzman.
- // Copyright 2005 Dan Marsden.
- // Copyright 2008 Hartmut Kaiser.
- // Copyright 2015 John Fletcher.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/phoenix/stl/algorithm/detail/begin.hpp [1:3]
- boost/phoenix/stl/algorithm/detail/end.hpp [1:3]
- boost/phoenix/stl/algorithm/detail/has_find.hpp [2:4]
- boost/phoenix/stl/algorithm/detail/is_unordered_set_or_map.hpp [2:4]
- boost/phoenix/stl/algorithm/querying.hpp [1:5]
- boost/phoenix/stl/algorithm/transformation.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8737eef04eec9e4347f18af4da0267a9
-BELONGS ya.make
- License text:
- // Copyright (c) 2003
- // Gunter Winkler, Joerg Walter
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/ublas/vector_of_vector.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8759e7280d5ee3ff277e1c164e77f5e2
-BELONGS ya.make
- License text:
- // (C) Copyright 2005-2007 Matthias Troyer
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpi/detail/binary_buffer_iprimitive.hpp [1:1]
- boost/mpi/detail/binary_buffer_oprimitive.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 878b856a9219137abfd6354d476eccdf
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/scope_exit.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/scope_exit.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 878bdc8a748b4f845c717d1e57e8953d
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/sunpro_cc.hpp [1:7]
- boost/interprocess/smart_ptr/enable_shared_from_this.hpp [5:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 87984591a203f84e6f000f2a12696b5d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/numeric/conversion/bounds.hpp at line 3, boost/numeric/conversion/cast.hpp at line 3, boost/numeric/conversion/conversion_traits.hpp at line 3, boost/numeric/conversion/converter.hpp at line 3, boost/numeric/conversion/converter_policies.hpp at line 3, boost/numeric/conversion/detail/bounds.hpp at line 3, boost/numeric/conversion/detail/conversion_traits.hpp at line 3, boost/numeric/conversion/detail/converter.hpp at line 3, boost/numeric/conversion/detail/int_float_mixture.hpp at line 3, boost/numeric/conversion/detail/is_subranged.hpp at line 3, boost/numeric/conversion/detail/meta.hpp at line 3, boost/numeric/conversion/detail/sign_mixture.hpp at line 3, boost/numeric/conversion/detail/udt_builtin_mixture.hpp at line 3, boost/numeric/conversion/int_float_mixture.hpp at line 3, boost/numeric/conversion/int_float_mixture_enum.hpp at line 3, boost/numeric/conversion/is_subranged.hpp at line 3, boost/numeric/conversion/sign_mixture.hpp at line 3, boost/numeric/conversion/sign_mixture_enum.hpp at line 3, boost/numeric/conversion/udt_builtin_mixture.hpp at line 3, boost/numeric/conversion/udt_builtin_mixture_enum.hpp at line 3
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/conversion/bounds.hpp [1:3]
- boost/numeric/conversion/cast.hpp [1:3]
- boost/numeric/conversion/conversion_traits.hpp [1:3]
- boost/numeric/conversion/converter.hpp [1:3]
- boost/numeric/conversion/converter_policies.hpp [1:3]
- boost/numeric/conversion/detail/bounds.hpp [1:3]
- boost/numeric/conversion/detail/conversion_traits.hpp [1:3]
- boost/numeric/conversion/detail/converter.hpp [1:3]
- boost/numeric/conversion/detail/int_float_mixture.hpp [1:3]
- boost/numeric/conversion/detail/is_subranged.hpp [1:3]
- boost/numeric/conversion/detail/meta.hpp [1:3]
- boost/numeric/conversion/detail/sign_mixture.hpp [1:3]
- boost/numeric/conversion/detail/udt_builtin_mixture.hpp [1:3]
- boost/numeric/conversion/int_float_mixture.hpp [1:3]
- boost/numeric/conversion/int_float_mixture_enum.hpp [1:3]
- boost/numeric/conversion/is_subranged.hpp [1:3]
- boost/numeric/conversion/sign_mixture.hpp [1:3]
- boost/numeric/conversion/sign_mixture_enum.hpp [1:3]
- boost/numeric/conversion/udt_builtin_mixture.hpp [1:3]
- boost/numeric/conversion/udt_builtin_mixture_enum.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 87bcff5d2ad0f8f350f255654e0f44c4
-BELONGS ya.make
- License text:
- // Copyright Darin Adler 2000
- // Copyright Beman Dawes 2008
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/endian/detail/cover_operators.hpp [3:4]
- boost/spirit/home/support/detail/endian/cover_operators.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 88463dc7415dc40f9f0dab153d600cd9
-BELONGS ya.make
- License text:
- // Copyright (c) 2002-2003 Eric Friedman
- // Copyright (c) 2002 by Andrei Alexandrescu
- // Copyright (c) 2013-2014 Antony Polukhin
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/variant/detail/move.hpp [6:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 885de77fcf55e39ce3c87951447045d2
-BELONGS ya.make
- License text:
- // Copyright (c) 2003
- // Eric Friedman, Itay Maman
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/variant.hpp [6:7]
- boost/variant/get.hpp [6:7]
- boost/variant/variant_fwd.hpp [6:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 886ccc018a03d6afb9c858314c9c5e72
-BELONGS ya.make
- License text:
- // Copyright Aleksey Gurtovoy 2004
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp [5:5]
- boost/mpl/aux_/config/forwarding.hpp [5:5]
- boost/mpl/aux_/config/gcc.hpp [5:5]
- boost/mpl/aux_/config/has_apply.hpp [5:5]
- boost/mpl/aux_/config/integral.hpp [5:5]
- boost/mpl/aux_/config/intel.hpp [5:5]
- boost/mpl/aux_/contains_impl.hpp [5:6]
- boost/mpl/aux_/has_apply.hpp [5:5]
- boost/mpl/aux_/overload_names.hpp [5:5]
- boost/mpl/aux_/partition_op.hpp [5:6]
- boost/mpl/begin.hpp [5:5]
- boost/mpl/contains.hpp [5:6]
- boost/mpl/contains_fwd.hpp [5:6]
- boost/mpl/empty_sequence.hpp [5:6]
- boost/mpl/end.hpp [5:5]
- boost/mpl/integral_c_tag.hpp [5:5]
- boost/mpl/max.hpp [5:5]
- boost/mpl/min.hpp [5:5]
- boost/mpl/next.hpp [5:5]
- boost/mpl/pair_view.hpp [5:6]
- boost/mpl/partition.hpp [5:6]
- boost/mpl/print.hpp [5:6]
- boost/mpl/prior.hpp [5:5]
- boost/mpl/sort.hpp [5:6]
- boost/mpl/stable_partition.hpp [5:6]
- boost/mpl/tag.hpp [5:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 887a085429223bebadadf93e46359904
-BELONGS ya.make
- License text:
- Copyright 2011-2013 Karsten Ahnert
- Copyright 2011-2013 Mario Mulansky
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/algebra/fusion_algebra.hpp [9:10]
- boost/numeric/odeint/external/mkl/mkl_operations.hpp [11:12]
- boost/numeric/odeint/integrate/detail/integrate_adaptive.hpp [9:11]
- boost/numeric/odeint/integrate/integrate.hpp [9:10]
- boost/numeric/odeint/integrate/integrate_adaptive.hpp [9:10]
- boost/numeric/odeint/integrate/integrate_const.hpp [10:11]
- boost/numeric/odeint/integrate/integrate_n_steps.hpp [9:10]
- boost/numeric/odeint/integrate/integrate_times.hpp [9:10]
- boost/numeric/odeint/stepper/adams_bashforth.hpp [10:13]
- boost/numeric/odeint/stepper/adams_bashforth_moulton.hpp [9:11]
- boost/numeric/odeint/stepper/base/symplectic_rkn_stepper_base.hpp [9:11]
- boost/numeric/odeint/stepper/bulirsch_stoer.hpp [12:14]
- boost/numeric/odeint/stepper/bulirsch_stoer_dense_out.hpp [9:11]
- boost/numeric/odeint/stepper/controlled_step_result.hpp [9:10]
- boost/numeric/odeint/stepper/dense_output_runge_kutta.hpp [10:12]
- boost/numeric/odeint/stepper/explicit_error_generic_rk.hpp [9:11]
- boost/numeric/odeint/stepper/explicit_generic_rk.hpp [9:11]
- boost/numeric/odeint/stepper/modified_midpoint.hpp [9:11]
- boost/numeric/odeint/stepper/rosenbrock4.hpp [10:12]
- boost/numeric/odeint/stepper/runge_kutta4.hpp [9:10]
- boost/numeric/odeint/stepper/runge_kutta_cash_karp54.hpp [9:10]
- boost/numeric/odeint/stepper/symplectic_euler.hpp [9:10]
- boost/numeric/odeint/stepper/symplectic_rkn_sb3a_mclachlan.hpp [9:10]
- boost/numeric/odeint/util/detail/is_range.hpp [9:10]
- boost/numeric/odeint/util/resize.hpp [10:11]
- boost/numeric/odeint/util/same_size.hpp [10:11]
- boost/numeric/odeint/util/state_wrapper.hpp [10:11]
- boost/numeric/odeint/util/ublas_wrapper.hpp [9:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL 88806da7c6e4f1c8e4c27e4efe582cf6
-BELONGS ya.make
- License text:
- // Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
- // Copyright (c) 2010 Beman Dawes
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/system/detail/local_free_on_destruction.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8884bef124f1e985ab9ffb09bd143d9e
-BELONGS libs/container/ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: libs/container/src/dlmalloc_ext_2_8_6.c at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2007-2015. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- libs/container/src/dlmalloc_ext_2_8_6.c [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 888e14cf95e262f8777266527680cdb7
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/detail/collection_traits.hpp at line 10
- License text:
- // (C) Copyright Thorsten Ottosen 2002-2003. Use, modification and
- // distribution is subject to the Boost Software License, Version
- // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/range/detail/collection_traits.hpp [8:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8894fc789975c842d2c95727c8460378
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/random/detail/ptr_helper.hpp at line 6, boost/random/discard_block.hpp at line 6, boost/random/gamma_distribution.hpp at line 6, boost/random/linear_feedback_shift.hpp at line 6, boost/random/poisson_distribution.hpp at line 6, boost/random/ranlux.hpp at line 6, boost/random/subtract_with_carry.hpp at line 6, boost/random/variate_generator.hpp at line 6, boost/random/xor_combine.hpp at line 6
- License text:
- * Copyright Jens Maurer 2002
- * Copyright Steven Watanabe 2010
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/random/detail/ptr_helper.hpp [3:5]
- boost/random/discard_block.hpp [3:6]
- boost/random/gamma_distribution.hpp [3:6]
- boost/random/linear_feedback_shift.hpp [3:6]
- boost/random/poisson_distribution.hpp [3:6]
- boost/random/ranlux.hpp [3:5]
- boost/random/subtract_with_carry.hpp [3:5]
- boost/random/variate_generator.hpp [3:6]
- boost/random/xor_combine.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 88be5191db5401445f916141ffb2f71f
-BELONGS ya.make
- License text:
- // Copyright (C) 2004-2008 The Trustees of Indiana University.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/distributed/depth_first_search.hpp [1:1]
- boost/graph/distributed/detail/mpi_process_group.ipp [3:5]
- boost/graph/distributed/filtered_graph.hpp [1:1]
- boost/graph/distributed/mpi_process_group.hpp [1:3]
- boost/graph/distributed/strong_components.hpp [1:1]
- boost/property_map/parallel/distributed_property_map.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 88edbb48555da51e4d9a816563e2e64b
-BELONGS ya.make
- License text:
- // Copyright 2016 Klemens Morgenstern
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/dll/detail/demangling/itanium.hpp [1:1]
- boost/dll/detail/demangling/mangled_storage_base.hpp [1:1]
- boost/dll/detail/demangling/msvc.hpp [1:1]
- boost/dll/detail/get_mem_fn_type.hpp [1:1]
- boost/dll/smart_library.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 890cdbbeb01b608880e13a28e9d21fad
-BELONGS libs/chrono/ya.make ya.make
- License text:
- // Copyright 2009-2010 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/chrono/detail/inlined/mac/chrono.hpp [3:4]
- boost/chrono/detail/inlined/process_cpu_clocks.hpp [3:3]
- boost/chrono/detail/inlined/win/chrono.hpp [3:4]
- boost/chrono/detail/inlined/win/process_cpu_clocks.hpp [3:5]
- boost/chrono/detail/is_evenly_divisible_by.hpp [3:3]
- boost/chrono/detail/no_warning/signed_unsigned_cmp.hpp [3:3]
- boost/chrono/detail/static_assert.hpp [3:3]
- boost/chrono/detail/system.hpp [1:1]
- libs/chrono/src/process_cpu_clocks.cpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 893c463df78fa1dc3d2a5088d1cb696c
-BELONGS ya.make
- License text:
- Copyright 2013 Karsten Ahnert
- Copyright 2013 Mario Mulansky
- Copyright 2013 Pascal Germroth
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/external/mpi/mpi.hpp [9:11]
- boost/numeric/odeint/external/mpi/mpi_nested_algebra.hpp [9:11]
- boost/numeric/odeint/external/mpi/mpi_state.hpp [9:11]
- boost/numeric/odeint/external/mpi/mpi_vector_state.hpp [9:11]
- boost/numeric/odeint/external/openmp/openmp.hpp [9:11]
- boost/numeric/odeint/external/openmp/openmp_nested_algebra.hpp [9:11]
- boost/numeric/odeint/external/openmp/openmp_range_algebra.hpp [9:11]
- boost/numeric/odeint/external/openmp/openmp_state.hpp [9:11]
- boost/numeric/odeint/stepper/adams_bashforth.hpp [10:13]
- boost/numeric/odeint/util/n_ary_helper.hpp [7:9]
- boost/numeric/odeint/util/split.hpp [9:11]
- boost/numeric/odeint/util/split_adaptor.hpp [9:11]
-
-KEEP COPYRIGHT_SERVICE_LABEL 894d6bd4806969d55cdad5d7f1ac76c6
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/intrusive/pointer_traits.hpp at line 11
- License text:
- // (C) Copyright Ion Gaztanaga 2011-2014. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/intrusive/pointer_traits.hpp [9:11]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8974b0c1dff112772f6f0fcdf1ac331a
-BELONGS ya.make
- License text:
- // Copyright Kevlin Henney, 2000-2005.
- // Copyright Alexander Nasonov, 2006-2010.
- // Copyright Antony Polukhin, 2011-2014.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/lexical_cast.hpp [1:3]
- boost/lexical_cast/bad_lexical_cast.hpp [1:3]
- boost/lexical_cast/detail/converter_lexical.hpp [1:3]
- boost/lexical_cast/detail/converter_lexical_streams.hpp [1:3]
- boost/lexical_cast/detail/converter_numeric.hpp [1:3]
- boost/lexical_cast/detail/inf_nan.hpp [1:3]
- boost/lexical_cast/detail/is_character.hpp [1:3]
- boost/lexical_cast/detail/lcast_char_constants.hpp [1:3]
- boost/lexical_cast/detail/lcast_unsigned_converters.hpp [1:3]
- boost/lexical_cast/detail/widest_char.hpp [1:3]
- boost/lexical_cast/lexical_cast_old.hpp [1:3]
- boost/lexical_cast/try_lexical_convert.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 897c9e939f14dd9c42b2594da26b4078
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/quick_allocator.hpp at line 15, boost/smart_ptr.hpp at line 12, boost/smart_ptr/detail/quick_allocator.hpp at line 15
- License text:
- // Copyright (c) 2003 Peter Dimov Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/detail/quick_allocator.hpp [13:14]
- boost/smart_ptr.hpp [10:12]
- boost/smart_ptr/detail/quick_allocator.hpp [13:14]
-
-KEEP COPYRIGHT_SERVICE_LABEL 89b41c99892d77117372460a7f90d72f
-BELONGS ya.make
- License text:
- // Copyright 2004-5 The Trustees of Indiana University.
- // Copyright 2002 Brad King and Douglas Gregor
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/page_rank.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8a16b9d3a535dffcaa90392860dab7cf
-BELONGS ya.make
- License text:
- // Copyright (c) 2016 Jakub Szuppe <j.szuppe@gmail.com>
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/compute/algorithm/detail/find_extrema_on_cpu.hpp [2:2]
- boost/compute/algorithm/detail/merge_sort_on_gpu.hpp [2:2]
- boost/compute/algorithm/detail/reduce_on_cpu.hpp [2:2]
- boost/compute/algorithm/detail/scan_on_cpu.hpp [2:2]
- boost/compute/algorithm/stable_sort_by_key.hpp [2:2]
- boost/compute/detail/diagnostic.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8a1ed8f0251f7577b8544e60acf77847
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signals2/detail/preprocessed_arg_type.hpp at line 7, boost/signals2/detail/replace_slot_function.hpp at line 5, boost/signals2/preprocessed_slot.hpp at line 7, boost/signals2/signal.hpp at line 7
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/signals2/detail/preprocessed_arg_type.hpp [3:7]
- boost/signals2/detail/replace_slot_function.hpp [1:1]
- boost/signals2/preprocessed_slot.hpp [3:7]
- boost/signals2/signal.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8aa205df11e7313c7f73c113a9ad1407
-BELONGS ya.make
- License text:
- // (C) Copyright Ion Gaztanaga 2014.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_traits/is_copy_assignable.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8aaadc898368c37b5d90c024f9104351
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/two_graphs_common_spanning_trees.hpp at line 3
- License text:
- // Copyright (C) 2012, Michele Caini.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/two_graphs_common_spanning_trees.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8ab893c2af2e95dd142106552216a78b
-BELONGS ya.make
- License text:
- // (c) Copyright Jeremy Siek and John R. Bandela 2001.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/tokenizer.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8ac5e87521312cdb64a9912532c93964
-BELONGS ya.make
- License text:
- // Copyright Beman Dawes 2010, 2011, 2014
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/endian/conversion.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8af78196c8203a9cd903193485babd4d
-BELONGS ya.make
- License text:
- // Copyright (c) Chris Glover, 2016.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_index/runtime_cast.hpp [2:2]
- boost/type_index/runtime_cast/boost_shared_ptr_cast.hpp [2:2]
- boost/type_index/runtime_cast/detail/runtime_cast_impl.hpp [2:2]
- boost/type_index/runtime_cast/pointer_cast.hpp [2:2]
- boost/type_index/runtime_cast/reference_cast.hpp [2:2]
- boost/type_index/runtime_cast/register_runtime_class.hpp [2:2]
- boost/type_index/runtime_cast/std_shared_ptr_cast.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8b05c90361e2a6041cc75977d659ee19
-BELONGS ya.make
- License text:
- // (C) Copyright 2005-7 Anthony Williams
- // (C) Copyright 2005 John Maddock
- // (C) Copyright 2011-2013 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/win32/once.hpp [6:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8b34f61b331f3abb5afdfaf9ebabd31b
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/bernoulli.hpp [3:8]
- boost/math/special_functions/detail/bernoulli_details.hpp [2:4]
- boost/math/special_functions/detail/unchecked_bernoulli.hpp [3:8]
- boost/multiprecision/cpp_bin_float.hpp [2:4]
- boost/multiprecision/cpp_bin_float/io.hpp [2:4]
- boost/multiprecision/cpp_bin_float/transcendental.hpp [2:4]
- boost/multiprecision/cpp_int/literals.hpp [2:4]
- boost/multiprecision/cpp_int/serialize.hpp [2:4]
- boost/multiprecision/cpp_int/value_pack.hpp [2:4]
- boost/multiprecision/detail/bitscan.hpp [2:4]
- boost/multiprecision/detail/float_string_cvt.hpp [2:4]
- boost/multiprecision/detail/ublas_interop.hpp [2:4]
- boost/multiprecision/float128.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8b60e030cc6169d709dda601f461ab82
-BELONGS ya.make
- License text:
- // Copyright 2008 Gautam Sewani
- // Copyright 2008 John Maddock
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/distributions/detail/hypergeometric_pdf.hpp [1:2]
- boost/math/distributions/hypergeometric.hpp [1:2]
- boost/math/distributions/logistic.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8b8272837b8bc44df293a85a958ddc81
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/state_saver.hpp at line 14
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/serialization/state_saver.hpp [12:14]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8ba4403292419bfdcddcaa893b67a223
-BELONGS ya.make
- License text:
- // Copyright 2015, 2016 Peter Dimov.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mp11/detail/mp_count.hpp [4:4]
- boost/mp11/detail/mp_list.hpp [4:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8bc414876d610225acf7d931e3e8a898
-BELONGS ya.make
- License text:
- // (C) Copyright Nick Thompson 2018.
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/tools/numerical_differentiation.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8bc5f0332b38acd415a3f19bc0dc773c
-BELONGS ya.make
- License text:
- Copyright (c) Marshall Clow 2012-2015.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/utility/string_ref.hpp [2:2]
- boost/utility/string_view.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8bffccdfaa8562e58a7a916628756b56
-BELONGS ya.make
- License text:
- * Copyright (c) 2009, 2011 Helge Bahmann
- * Copyright (c) 2009 Phil Endecott
- * Copyright (c) 2013 Tim Blechmann
- * Linux-specific code by Phil Endecott
- * Copyright (c) 2014 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/atomic/detail/caps_linux_arm.hpp [6:10]
- boost/atomic/detail/ops_linux_arm.hpp [6:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8c4a8c000d9107e7eca71c97ea07a686
-BELONGS ya.make
- License text:
- // Copyright 2008 Howard Hinnant
- // Copyright 2008 Beman Dawes
- // Copyright 2009 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/ratio/detail/overflow_helpers.hpp [3:5]
- boost/ratio/ratio.hpp [3:5]
- boost/ratio/ratio_fwd.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8c6050ea8948fa818487ef143b51e836
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2006, 2007.
- // Copyright Paul A. Bristow 2008, 2010.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/distributions/chi_squared.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8c848a7abcce1ef1126166b8d49f03f0
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/map.hpp at line 15, boost/serialization/set.hpp at line 14
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/serialization/map.hpp [13:15]
- boost/serialization/set.hpp [12:14]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8c9a23c5e3683d8f54e0310eed071f27
-BELONGS ya.make
- License text:
- // Copyright (c) 2006-2007 Matias Capeletto
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/bimap.hpp [3:3]
- boost/bimap/bimap.hpp [3:3]
- boost/bimap/container_adaptor/associative_container_adaptor.hpp [3:3]
- boost/bimap/container_adaptor/container_adaptor.hpp [3:3]
- boost/bimap/container_adaptor/detail/comparison_adaptor.hpp [3:3]
- boost/bimap/container_adaptor/detail/functor_bag.hpp [3:3]
- boost/bimap/container_adaptor/detail/identity_converters.hpp [3:3]
- boost/bimap/container_adaptor/detail/key_extractor.hpp [3:3]
- boost/bimap/container_adaptor/detail/non_unique_container_helper.hpp [3:3]
- boost/bimap/container_adaptor/list_adaptor.hpp [3:3]
- boost/bimap/container_adaptor/list_map_adaptor.hpp [3:3]
- boost/bimap/container_adaptor/map_adaptor.hpp [3:3]
- boost/bimap/container_adaptor/multimap_adaptor.hpp [3:3]
- boost/bimap/container_adaptor/multiset_adaptor.hpp [3:3]
- boost/bimap/container_adaptor/ordered_associative_container_adaptor.hpp [3:3]
- boost/bimap/container_adaptor/sequence_container_adaptor.hpp [3:3]
- boost/bimap/container_adaptor/set_adaptor.hpp [3:3]
- boost/bimap/container_adaptor/support/iterator_facade_converters.hpp [3:3]
- boost/bimap/container_adaptor/unordered_associative_container_adaptor.hpp [3:3]
- boost/bimap/container_adaptor/unordered_map_adaptor.hpp [3:3]
- boost/bimap/container_adaptor/unordered_multimap_adaptor.hpp [3:3]
- boost/bimap/container_adaptor/unordered_multiset_adaptor.hpp [3:3]
- boost/bimap/container_adaptor/unordered_set_adaptor.hpp [3:3]
- boost/bimap/container_adaptor/vector_adaptor.hpp [3:3]
- boost/bimap/container_adaptor/vector_map_adaptor.hpp [3:3]
- boost/bimap/detail/bimap_core.hpp [3:3]
- boost/bimap/detail/concept_tags.hpp [3:3]
- boost/bimap/detail/debug/static_error.hpp [3:3]
- boost/bimap/detail/generate_index_binder.hpp [3:3]
- boost/bimap/detail/generate_relation_binder.hpp [3:3]
- boost/bimap/detail/generate_view_binder.hpp [3:3]
- boost/bimap/detail/is_set_type_of.hpp [3:3]
- boost/bimap/detail/manage_additional_parameters.hpp [3:3]
- boost/bimap/detail/manage_bimap_key.hpp [3:3]
- boost/bimap/detail/map_view_base.hpp [3:3]
- boost/bimap/detail/map_view_iterator.hpp [3:3]
- boost/bimap/detail/modifier_adaptor.hpp [3:3]
- boost/bimap/detail/non_unique_views_helper.hpp [3:3]
- boost/bimap/detail/set_view_base.hpp [3:3]
- boost/bimap/detail/set_view_iterator.hpp [3:3]
- boost/bimap/detail/test/check_metadata.hpp [3:3]
- boost/bimap/detail/user_interface_config.hpp [3:3]
- boost/bimap/list_of.hpp [3:3]
- boost/bimap/multiset_of.hpp [3:3]
- boost/bimap/property_map/set_support.hpp [3:3]
- boost/bimap/property_map/unordered_set_support.hpp [3:3]
- boost/bimap/relation/detail/access_builder.hpp [3:3]
- boost/bimap/relation/detail/metadata_access_builder.hpp [3:3]
- boost/bimap/relation/detail/mutant.hpp [3:3]
- boost/bimap/relation/detail/static_access_builder.hpp [3:3]
- boost/bimap/relation/detail/to_mutable_relation_functor.hpp [3:3]
- boost/bimap/relation/member_at.hpp [3:3]
- boost/bimap/relation/mutant_relation.hpp [3:3]
- boost/bimap/relation/pair_layout.hpp [3:3]
- boost/bimap/relation/structured_pair.hpp [3:3]
- boost/bimap/relation/support/data_extractor.hpp [3:3]
- boost/bimap/relation/support/get.hpp [3:3]
- boost/bimap/relation/support/get_pair_functor.hpp [3:3]
- boost/bimap/relation/support/is_tag_of_member_at.hpp [3:3]
- boost/bimap/relation/support/member_with_tag.hpp [3:3]
- boost/bimap/relation/support/opposite_tag.hpp [3:3]
- boost/bimap/relation/support/pair_by.hpp [3:3]
- boost/bimap/relation/support/pair_type_by.hpp [3:3]
- boost/bimap/relation/support/value_type_of.hpp [3:3]
- boost/bimap/relation/symmetrical_base.hpp [3:3]
- boost/bimap/set_of.hpp [3:3]
- boost/bimap/support/data_type_by.hpp [3:3]
- boost/bimap/support/iterator_type_by.hpp [3:3]
- boost/bimap/support/key_type_by.hpp [3:3]
- boost/bimap/support/lambda.hpp [3:3]
- boost/bimap/support/map_by.hpp [3:3]
- boost/bimap/support/map_type_by.hpp [3:3]
- boost/bimap/support/value_type_by.hpp [3:3]
- boost/bimap/tags/support/apply_to_value_type.hpp [3:3]
- boost/bimap/tags/support/default_tagged.hpp [3:3]
- boost/bimap/tags/support/is_tagged.hpp [3:3]
- boost/bimap/tags/support/overwrite_tagged.hpp [3:3]
- boost/bimap/tags/support/tag_of.hpp [3:3]
- boost/bimap/tags/support/value_type_of.hpp [3:3]
- boost/bimap/tags/tagged.hpp [3:3]
- boost/bimap/unconstrained_set_of.hpp [3:3]
- boost/bimap/unordered_multiset_of.hpp [3:3]
- boost/bimap/unordered_set_of.hpp [3:3]
- boost/bimap/vector_of.hpp [3:3]
- boost/bimap/views/list_map_view.hpp [3:3]
- boost/bimap/views/list_set_view.hpp [3:3]
- boost/bimap/views/map_view.hpp [3:3]
- boost/bimap/views/multimap_view.hpp [3:3]
- boost/bimap/views/multiset_view.hpp [3:3]
- boost/bimap/views/set_view.hpp [3:3]
- boost/bimap/views/unconstrained_map_view.hpp [3:3]
- boost/bimap/views/unconstrained_set_view.hpp [3:3]
- boost/bimap/views/unordered_map_view.hpp [3:3]
- boost/bimap/views/unordered_multimap_view.hpp [3:3]
- boost/bimap/views/unordered_multiset_view.hpp [3:3]
- boost/bimap/views/unordered_set_view.hpp [3:3]
- boost/bimap/views/vector_map_view.hpp [3:3]
- boost/bimap/views/vector_set_view.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8ca6fe2283580e1208a843af7014e9fa
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/scoped_ptr.hpp at line 10
- License text:
- // Copyright (c) 2003 Vladimir Prus.
- // Use, modification and distribution is subject to the Boost Software
- // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/serialization/scoped_ptr.hpp [8:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8ccab375f0ba1f9625b1fa8c1f008ecd
-BELONGS ya.make
- License text:
- // Copyright Antony Polukhin, 2016-2018.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/stacktrace/detail/safe_dump_win.ipp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8ce38e822427eb86a5d1145c3e78e7cd
-BELONGS ya.make
- License text:
- // Copyright (c) 2014 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/detail/spinlock_std_atomic.hpp [11:11]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8cef697bc7a8725b9ce5431bdffe3bfc
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/detail/type_traits.hpp at line 3
- License text:
- // Copyright Shreyans Doshi 2017.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/python/detail/type_traits.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8cf1d6f59e36dba9fc9f6ebd0154e611
-BELONGS ya.make
- License text:
- // (C) Copyright Artyom Beilis 2010.
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/platform/vms.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8d1214bd39f8d38ef1ffd0059eaff3a3
-BELONGS ya.make
- License text:
- Copyright (c) Marshall Clow 2008-2012.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/algorithm/clamp.hpp [2:2]
- boost/algorithm/cxx11/all_of.hpp [2:2]
- boost/algorithm/cxx11/any_of.hpp [2:2]
- boost/algorithm/cxx11/copy_if.hpp [2:2]
- boost/algorithm/cxx11/iota.hpp [2:2]
- boost/algorithm/cxx11/none_of.hpp [2:2]
- boost/algorithm/cxx11/one_of.hpp [2:2]
- boost/algorithm/cxx14/equal.hpp [2:2]
- boost/algorithm/cxx14/mismatch.hpp [2:2]
- boost/algorithm/sort_subrange.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8d17906b204a2cc18be72559f1e52f7a
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/bessel.hpp [1:4]
- boost/multiprecision/detail/dynamic_array.hpp [2:5]
- boost/multiprecision/detail/rebind.hpp [2:5]
- boost/multiprecision/detail/utype_helper.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8d32c9bc0dec53998ef384e09f62c65a
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2010 Joel de Guzman
- Copyright (c) 2010 Eric Niebler
- Copyright (c) 2014-2015 John Fletcher
- Copyright (c) 2016 Kohei Takahashi
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/phoenix/config.hpp [2:5]
- boost/phoenix/version.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8d72d1dcdfe68675073a61b3409c37a1
-BELONGS ya.make
- License text:
- // Copyright 2014 Renato Tegon Forti, Antony Polukhin.
- // Copyright 2015-2016 Antony Polukhin.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/dll.hpp [1:2]
- boost/dll/detail/posix/shared_library_impl.hpp [1:2]
- boost/dll/detail/windows/shared_library_impl.hpp [1:2]
- boost/dll/import.hpp [1:2]
- boost/dll/shared_library_load_mode.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8d783c7ebd355434173d26d1a01630d2
-BELONGS ya.make
- License text:
- // Copyright (c) 2002-2003
- // Toon Knapen, Kresimir Fresl, Joerg Walter
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/ublas/detail/raw.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8dda65576163c7b59f1859a97983c400
-BELONGS ya.make
- License text:
- // (C) Copyright Herve Bronnimann 2004.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/algorithm/minmax.hpp [1:1]
- boost/algorithm/minmax_element.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8df3b48da7b43c15c1ba96354d5fbec1
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2012.
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/airy.hpp [1:3]
- boost/math/special_functions/hankel.hpp [1:3]
- boost/math/special_functions/jacobi_elliptic.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8e00e7d6fce9c86304b3ed14045f8800
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/functional/hash/extensions.hpp at line 4
- License text:
- // Copyright 2017 Daniel James.
- // Distributed under the Boost Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/functional/hash/extensions.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8e0585a991e50507adee58bb8887332d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/detail/extract_optional_type.hpp at line 5
- License text:
- // Copyright Arno Schoedl & Neil Groves 2009.
- // Use, modification and distribution is subject to the Boost Software
- // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/range/detail/extract_optional_type.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8e7a593588369508c428e748fbb1d2c0
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/is_base_of.hpp at line 4, boost/type_traits/is_base_of_tr1.hpp at line 4
- License text:
- // (C) Copyright Rani Sharoni 2003-2005.
- // Use, modification and distribution are subject to the Boost Software License,
- // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_traits/is_base_of.hpp [2:4]
- boost/type_traits/is_base_of_tr1.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8e7a9dea59a5af6d4783ac550489f594
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/disjoint/box_box.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/point_box.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/point_geometry.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/point_point.hpp [3:6]
- boost/geometry/algorithms/detail/point_is_spike_or_equal.hpp [3:6]
- boost/geometry/algorithms/detail/touches/implementation.hpp [3:6]
- boost/geometry/algorithms/detail/touches/interface.hpp [3:6]
- boost/geometry/algorithms/touches.hpp [3:6]
- boost/geometry/strategies/cartesian/box_in_box.hpp [3:6]
- boost/geometry/strategies/distance_result.hpp [3:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8e899876d1c97d9cc82926a3113a06b5
-BELONGS libs/ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: libs/test/src/compiler_log_formatter.cpp at line 3, libs/test/src/cpp_main.cpp at line 3, libs/test/src/execution_monitor.cpp at line 3, libs/test/src/framework.cpp at line 3, libs/test/src/plain_report_formatter.cpp at line 3, libs/test/src/progress_monitor.cpp at line 3, libs/test/src/results_collector.cpp at line 3, libs/test/src/results_reporter.cpp at line 3, libs/test/src/test_main.cpp at line 3, libs/test/src/test_tools.cpp at line 3, libs/test/src/test_tree.cpp at line 3, libs/test/src/unit_test_log.cpp at line 3, libs/test/src/unit_test_main.cpp at line 3, libs/test/src/unit_test_monitor.cpp at line 3, libs/test/src/unit_test_parameters.cpp at line 3, libs/test/src/xml_log_formatter.cpp at line 3, libs/test/src/xml_report_formatter.cpp at line 3
- License text:
- // (C) Copyright Gennadiy Rozental 2005-2010.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- libs/test/src/compiler_log_formatter.cpp [1:3]
- libs/test/src/cpp_main.cpp [1:3]
- libs/test/src/execution_monitor.cpp [1:3]
- libs/test/src/framework.cpp [1:3]
- libs/test/src/plain_report_formatter.cpp [1:3]
- libs/test/src/progress_monitor.cpp [1:3]
- libs/test/src/results_collector.cpp [1:3]
- libs/test/src/results_reporter.cpp [1:3]
- libs/test/src/test_main.cpp [1:3]
- libs/test/src/test_tools.cpp [1:3]
- libs/test/src/test_tree.cpp [1:3]
- libs/test/src/unit_test_log.cpp [1:3]
- libs/test/src/unit_test_main.cpp [1:3]
- libs/test/src/unit_test_monitor.cpp [1:3]
- libs/test/src/unit_test_parameters.cpp [1:3]
- libs/test/src/xml_log_formatter.cpp [1:3]
- libs/test/src/xml_report_formatter.cpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8ec420c6bb9d6f64da8e3c68da3b8781
-BELONGS ya.make
- License text:
- * Copyright (c) 2009-2010, Marco Guazzone
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/ublas/operation/size.hpp [6:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8f0399d287bd4672d939ab68c754655c
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/metrowerks.hpp [1:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8f1718c11307979d7a28026b2d0fe133
-BELONGS ya.make
- License text:
- Copyright (c) 1998-2002 Joel de Guzman
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/core/scanner/scanner.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8f6b5f5d24bb145db03585e8c2d90444
-BELONGS ya.make
- License text:
- // Copyright (c) 2011-2015 Barend Gehrels, Amsterdam, the Netherlands.
- // Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/partition.hpp [3:4]
- boost/geometry/geometries/adapted/boost_fusion.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8f8a6ade4e24b15fc1746528d7ea1943
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/shared_container_iterator.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8fa19e12c729859dd6ba789e32b192d7
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/uuid/uuid_io.hpp at line 5
- License text:
- // Copyright 2009 Andy Tompkins.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/uuid/uuid_io.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8fc0f0fba44b95f1156474d48496df66
-BELONGS ya.make
- License text:
- // (C) Copyright 2009-2011 Frederic Bron.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_traits/has_bit_and.hpp [1:1]
- boost/type_traits/has_bit_and_assign.hpp [1:1]
- boost/type_traits/has_bit_or.hpp [1:1]
- boost/type_traits/has_bit_or_assign.hpp [1:1]
- boost/type_traits/has_bit_xor.hpp [1:1]
- boost/type_traits/has_bit_xor_assign.hpp [1:1]
- boost/type_traits/has_complement.hpp [1:1]
- boost/type_traits/has_dereference.hpp [1:1]
- boost/type_traits/has_divides.hpp [1:1]
- boost/type_traits/has_divides_assign.hpp [1:1]
- boost/type_traits/has_equal_to.hpp [1:1]
- boost/type_traits/has_greater.hpp [1:1]
- boost/type_traits/has_greater_equal.hpp [1:1]
- boost/type_traits/has_left_shift.hpp [1:1]
- boost/type_traits/has_left_shift_assign.hpp [1:1]
- boost/type_traits/has_less.hpp [1:1]
- boost/type_traits/has_less_equal.hpp [1:1]
- boost/type_traits/has_logical_and.hpp [1:1]
- boost/type_traits/has_logical_not.hpp [1:1]
- boost/type_traits/has_logical_or.hpp [1:1]
- boost/type_traits/has_minus.hpp [1:1]
- boost/type_traits/has_minus_assign.hpp [1:1]
- boost/type_traits/has_modulus.hpp [1:1]
- boost/type_traits/has_modulus_assign.hpp [1:1]
- boost/type_traits/has_multiplies.hpp [1:1]
- boost/type_traits/has_multiplies_assign.hpp [1:1]
- boost/type_traits/has_negate.hpp [1:1]
- boost/type_traits/has_not_equal_to.hpp [1:1]
- boost/type_traits/has_operator.hpp [1:1]
- boost/type_traits/has_plus.hpp [1:1]
- boost/type_traits/has_plus_assign.hpp [1:1]
- boost/type_traits/has_post_decrement.hpp [1:1]
- boost/type_traits/has_post_increment.hpp [1:1]
- boost/type_traits/has_pre_decrement.hpp [1:1]
- boost/type_traits/has_pre_increment.hpp [1:1]
- boost/type_traits/has_right_shift.hpp [1:1]
- boost/type_traits/has_right_shift_assign.hpp [1:1]
- boost/type_traits/has_unary_minus.hpp [1:1]
- boost/type_traits/has_unary_plus.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8fcebd7437f1dd40087ed0462e0f9f30
-BELONGS ya.make
- License text:
- Copyright 2011-2013 Karsten Ahnert
- Copyright 2011-2015 Mario Mulansky
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/integrate/detail/integrate_adaptive.hpp [9:11]
- boost/numeric/odeint/integrate/detail/integrate_times.hpp [9:11]
- boost/numeric/odeint/integrate/integrate_adaptive.hpp [9:10]
- boost/numeric/odeint/integrate/integrate_const.hpp [10:11]
- boost/numeric/odeint/integrate/integrate_n_steps.hpp [9:10]
- boost/numeric/odeint/integrate/integrate_times.hpp [9:10]
- boost/numeric/odeint/stepper/bulirsch_stoer_dense_out.hpp [9:11]
- boost/numeric/odeint/stepper/dense_output_runge_kutta.hpp [10:12]
- boost/numeric/odeint/stepper/rosenbrock4_dense_output.hpp [9:11]
-
-KEEP COPYRIGHT_SERVICE_LABEL 904ac0fbc0c69dc23756cca7f9047738
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/xpressive/detail/core/list.hpp at line 9, boost/xpressive/detail/core/regex_domain.hpp at line 7
- License text:
- // Copyright 2009 Eric Niebler. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/xpressive/detail/core/list.hpp [7:9]
- boost/xpressive/detail/core/regex_domain.hpp [5:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 90b5a1efae58384e3e3f273a6001f459
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/parameter/aux_/overloads.hpp at line 3, boost/parameter/macros.hpp at line 3, boost/parameter/parameters.hpp at line 3
- License text:
- // Copyright David Abrahams, Daniel Wallin 2003. Use, modification and
- // distribution is subject to the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/parameter/aux_/overloads.hpp [1:3]
- boost/parameter/macros.hpp [1:3]
- boost/parameter/parameters.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 90b7ebb52ec9196271f904d38d1f3894
-BELONGS ya.make
- License text:
- Copyright 2012-2013 Andreas Angelopoulos
- Copyright 2012-2013 Karsten Ahnert
- Copyright 2012-2013 Mario Mulansky
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/external/mtl4/implicit_euler_mtl4.hpp [6:8]
- boost/numeric/odeint/external/mtl4/mtl4_resize.hpp [6:8]
- boost/numeric/odeint/iterator/adaptive_time_iterator.hpp [10:11]
- boost/numeric/odeint/iterator/detail/ode_iterator_base.hpp [10:11]
- boost/numeric/odeint/stepper/symplectic_rkn_sb3a_m4_mclachlan.hpp [9:10]
- boost/numeric/odeint/util/unit_helper.hpp [9:10]
- boost/numeric/odeint/util/unwrap_reference.hpp [9:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL 90bf60ec5dad526231712a76952b4545
-BELONGS libs/regex/ya.make ya.make
- License text:
- * Copyright (c) 1998-2002
- * John Maddock
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/cregex.hpp [3:4]
- boost/regex.hpp [3:4]
- boost/regex/config.hpp [3:4]
- boost/regex/config/borland.hpp [3:4]
- boost/regex/config/cwchar.hpp [3:4]
- boost/regex/pattern_except.hpp [3:4]
- boost/regex/regex_traits.hpp [3:4]
- boost/regex/user.hpp [3:4]
- boost/regex/v4/cregex.hpp [3:4]
- boost/regex/v4/fileiter.hpp [3:4]
- boost/regex/v4/instances.hpp [3:4]
- boost/regex/v4/iterator_traits.hpp [3:4]
- boost/regex/v4/match_flags.hpp [3:4]
- boost/regex/v4/primary_transform.hpp [3:4]
- boost/regex/v4/regbase.hpp [3:4]
- boost/regex/v4/regex.hpp [3:4]
- boost/regex/v4/regex_fwd.hpp [3:4]
- boost/regex/v4/regex_grep.hpp [3:4]
- boost/regex/v4/regex_match.hpp [3:4]
- boost/regex/v4/regex_merge.hpp [3:4]
- boost/regex/v4/regex_raw_buffer.hpp [3:4]
- boost/regex/v4/regex_search.hpp [3:4]
- boost/regex/v4/regex_split.hpp [3:4]
- boost/regex/v4/states.hpp [3:4]
- boost/regex/v4/sub_match.hpp [3:4]
- boost/regex_fwd.hpp [3:4]
- boost/signals/detail/config.hpp [3:4]
- libs/regex/src/cregex.cpp [3:4]
- libs/regex/src/fileiter.cpp [3:4]
- libs/regex/src/instances.cpp [3:4]
- libs/regex/src/posix_api.cpp [3:4]
- libs/regex/src/usinstances.cpp [3:4]
- libs/regex/src/wide_posix_api.cpp [3:4]
- libs/regex/src/winstances.cpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 90d717675006b1b096c9a9d6faaeaff0
-BELONGS libs/log/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/log/detail/c_str.hpp at line 4, boost/log/detail/pause.hpp at line 4, boost/log/detail/sfinae_tools.hpp at line 4, boost/log/expressions/formatters/max_size_decorator.hpp at line 4, boost/log/keywords/block_size.hpp at line 4, boost/log/keywords/capacity.hpp at line 4, boost/log/keywords/enable_final_rotation.hpp at line 4, boost/log/keywords/name.hpp at line 4, boost/log/keywords/overflow_policy.hpp at line 4, boost/log/keywords/permissions.hpp at line 4, boost/log/sinks/text_ipc_message_queue_backend.hpp at line 4, boost/log/utility/ipc/object_name.hpp at line 4, boost/log/utility/ipc/reliable_message_queue.hpp at line 4, boost/log/utility/open_mode.hpp at line 4, libs/log/config/atomic-int32/atomic_int32.cpp at line 4, libs/log/config/native-syslog/native_syslog.cpp at line 4, libs/log/src/bit_tools.hpp at line 4, libs/log/src/murmur3.hpp at line 4, libs/log/src/posix/ipc_reliable_message_queue.cpp at line 4, libs/log/src/posix/ipc_sync_wrappers.hpp at line 4, libs/log/src/posix/object_name.cpp at line 4, libs/log/src/windows/auto_handle.hpp at line 4, libs/log/src/windows/ipc_reliable_message_queue.cpp at line 4, libs/log/src/windows/ipc_sync_wrappers.cpp at line 4, libs/log/src/windows/ipc_sync_wrappers.hpp at line 4, libs/log/src/windows/mapped_shared_memory.cpp at line 4, libs/log/src/windows/mapped_shared_memory.hpp at line 4, libs/log/src/windows/object_name.cpp at line 4, libs/log/src/windows/utf_code_conversion.hpp at line 4
- License text:
- * Copyright Andrey Semashev 2016.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/log/detail/c_str.hpp [2:4]
- boost/log/detail/pause.hpp [2:4]
- boost/log/detail/sfinae_tools.hpp [2:4]
- boost/log/expressions/formatters/max_size_decorator.hpp [2:4]
- boost/log/keywords/block_size.hpp [2:4]
- boost/log/keywords/capacity.hpp [2:4]
- boost/log/keywords/enable_final_rotation.hpp [2:4]
- boost/log/keywords/name.hpp [2:4]
- boost/log/keywords/overflow_policy.hpp [2:4]
- boost/log/keywords/permissions.hpp [2:4]
- boost/log/sinks/text_ipc_message_queue_backend.hpp [2:5]
- boost/log/utility/ipc/object_name.hpp [2:4]
- boost/log/utility/ipc/reliable_message_queue.hpp [2:5]
- boost/log/utility/open_mode.hpp [2:4]
- libs/log/config/atomic-int32/atomic_int32.cpp [2:4]
- libs/log/config/native-syslog/native_syslog.cpp [2:4]
- libs/log/src/bit_tools.hpp [2:4]
- libs/log/src/murmur3.hpp [2:4]
- libs/log/src/posix/ipc_reliable_message_queue.cpp [2:5]
- libs/log/src/posix/ipc_sync_wrappers.hpp [2:4]
- libs/log/src/posix/object_name.cpp [2:4]
- libs/log/src/windows/auto_handle.hpp [2:4]
- libs/log/src/windows/ipc_reliable_message_queue.cpp [2:5]
- libs/log/src/windows/ipc_sync_wrappers.cpp [2:4]
- libs/log/src/windows/ipc_sync_wrappers.hpp [2:4]
- libs/log/src/windows/mapped_shared_memory.cpp [2:4]
- libs/log/src/windows/mapped_shared_memory.hpp [2:4]
- libs/log/src/windows/object_name.cpp [2:4]
- libs/log/src/windows/utf_code_conversion.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 91104f12c2c5f78e23afc2acf7158941
-BELONGS ya.make
- License text:
- // Copyright 2007 Baruch Zilber
- // Copyright 2007 Boris Gubenko
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp [7:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 912532add1cb71abc74d5d1fb9adee9b
-BELONGS ya.make
- License text:
- // Copyright (c) 2002-2003 Eric Friedman
- // Copyright (c) 2002 by Andrei Alexandrescu
- // Copyright (c) 2013-2014 Antony Polukhin
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/variant/detail/move.hpp [6:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9145f1765d7da3980093a883fe0fd877
-BELONGS libs/python/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/exec.hpp at line 3, boost/python/import.hpp at line 3, libs/python/src/exec.cpp at line 3, libs/python/src/import.cpp at line 3
- License text:
- // Copyright Stefan Seefeld 2005.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/python/exec.hpp [1:3]
- boost/python/import.hpp [1:3]
- libs/python/src/exec.cpp [1:3]
- libs/python/src/import.cpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9165a7ca8021311c1ef749cd3bd3c7b4
-BELONGS ya.make
- License text:
- // Copyright Bruno Dutra 2015
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/map/aux_/insert_range_impl.hpp [5:5]
- boost/mpl/set/aux_/insert_range_impl.hpp [5:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 91ca79b4c05cb91b912d8597c99be058
-BELONGS ya.make
- License text:
- // Copyright 2003 - 2011 LASMEA UMR 6602 CNRS/Univ. Clermont II
- // Copyright 2009 - 2011 LRI UMR 8623 CNRS/Univ Paris Sud XI
- // Copyright 2011 Eric Niebler
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/proto/detail/remove_typename.hpp [2:4]
- boost/proto/detail/template_arity.hpp [5:7]
- boost/proto/transform/integral_c.hpp [5:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9207c14a0f73cfde357a50e86305b641
-BELONGS ya.make
- License text:
- // Copyright 2004-9 Trustees of Indiana University
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/detail/read_graphviz_new.hpp [1:1]
- boost/graph/detail/read_graphviz_spirit.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 92541842df8561eccc16be0c5aad7f91
-BELONGS ya.make
- License text:
- Copyright (c) Marshall Clow 2010-2012.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/algorithm/searching/boyer_moore.hpp [2:2]
- boost/algorithm/searching/boyer_moore_horspool.hpp [2:2]
- boost/algorithm/searching/detail/bm_traits.hpp [2:2]
- boost/algorithm/searching/detail/debugging.hpp [2:2]
- boost/algorithm/searching/knuth_morris_pratt.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 927231b9edc8d25ca05d8eacec531b3d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/cstdfloat.hpp at line 6, boost/math/cstdfloat/cstdfloat_cmath.hpp at line 6, boost/math/cstdfloat/cstdfloat_complex.hpp at line 6, boost/math/cstdfloat/cstdfloat_complex_std.hpp at line 6, boost/math/cstdfloat/cstdfloat_iostream.hpp at line 6, boost/math/cstdfloat/cstdfloat_limits.hpp at line 6, boost/math/cstdfloat/cstdfloat_types.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/cstdfloat.hpp [2:6]
- boost/math/cstdfloat/cstdfloat_cmath.hpp [2:6]
- boost/math/cstdfloat/cstdfloat_complex.hpp [2:6]
- boost/math/cstdfloat/cstdfloat_complex_std.hpp [2:6]
- boost/math/cstdfloat/cstdfloat_iostream.hpp [2:6]
- boost/math/cstdfloat/cstdfloat_limits.hpp [2:6]
- boost/math/cstdfloat/cstdfloat_types.hpp [2:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 92d2c523bf7194ce7cd4df56369d1dff
-BELONGS ya.make
- License text:
- Copyright (c) 2003 Giovanni Bajo
- Copyright (c) 2003 Thomas Witt
- Copyright (c) 2003 Hartmut Kaiser
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/iterator/file_iterator.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 93012328a02872a0d6cab3f5e94eeeb5
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/integer_fwd.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/integer_fwd.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9304e817615e1bf062335597b6b77996
-BELONGS ya.make
- License text:
- // Copyright (C) 2001-2003
- // William E. Kempf
- // Copyright (C) 2011-2013 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/detail/config.hpp [1:3]
- boost/thread/detail/is_convertible.hpp [3:3]
- boost/thread/detail/memory.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 93093325a4c1f221f10cc90fc3ded37c
-BELONGS libs/thread/ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- libs/thread/src/win32/tss_pe.cpp [2:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 930a6e72883713e7b987065a56197739
-BELONGS ya.make
- License text:
- // Copyright (c) 2001, 2002, 2003 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/serialization/detail/shared_ptr_132.hpp [7:8]
- boost/smart_ptr/weak_ptr.hpp [7:7]
- boost/weak_ptr.hpp [7:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 93298a574c18187d2a2c7398406ca6da
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/detail/config_external_begin.hpp at line 5, boost/interprocess/detail/config_external_end.hpp at line 5, boost/interprocess/sync/detail/condition_any_algorithm.hpp at line 5, boost/interprocess/sync/detail/locks.hpp at line 5, boost/interprocess/sync/interprocess_condition_any.hpp at line 5, boost/move/algorithm.hpp at line 5, boost/move/core.hpp at line 5, boost/move/detail/config_begin.hpp at line 5, boost/move/detail/config_end.hpp at line 5, boost/move/detail/unique_ptr_meta_utils.hpp at line 5, boost/move/iterator.hpp at line 5, boost/move/utility.hpp at line 5, boost/move/utility_core.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2012-2012. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/interprocess/detail/config_external_begin.hpp [3:5]
- boost/interprocess/detail/config_external_end.hpp [3:5]
- boost/interprocess/sync/detail/condition_any_algorithm.hpp [3:5]
- boost/interprocess/sync/detail/locks.hpp [3:5]
- boost/interprocess/sync/interprocess_condition_any.hpp [3:5]
- boost/move/algorithm.hpp [3:5]
- boost/move/core.hpp [3:5]
- boost/move/detail/config_begin.hpp [3:5]
- boost/move/detail/config_end.hpp [3:5]
- boost/move/detail/unique_ptr_meta_utils.hpp [3:5]
- boost/move/iterator.hpp [3:5]
- boost/move/utility.hpp [3:5]
- boost/move/utility_core.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 936e3021d51f633d9c2949ec896ef36e
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/detail/functions/pow.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/multiprecision/detail/functions/pow.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 937d6d0019a0a134e2c853ee7ca9c743
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/stdlib/libcomo.hpp [1:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 937e5c4288be2ecd2826b44ffdf85359
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/opaque_pointer_converter.hpp at line 3
- License text:
- // Copyright Gottfried Ganßauge 2003..2006.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/python/opaque_pointer_converter.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 939d3c6b732a958e23eb33fe64213b93
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/has_trivial_move_assign.hpp at line 6, boost/type_traits/has_trivial_move_constructor.hpp at line 6, boost/type_traits/is_copy_constructible.hpp at line 5, boost/type_traits/is_nothrow_move_assignable.hpp at line 6, boost/type_traits/is_nothrow_move_constructible.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_traits/has_trivial_move_assign.hpp [2:6]
- boost/type_traits/has_trivial_move_constructor.hpp [2:6]
- boost/type_traits/is_copy_constructible.hpp [1:1]
- boost/type_traits/is_nothrow_move_assignable.hpp [2:6]
- boost/type_traits/is_nothrow_move_constructible.hpp [2:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 93ab4584acfafbfa5bd38b8d5199a363
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/atomic/detail/caps_gcc_arm.hpp [6:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL 93d0c235d47f59a703bd7faf4d1baccb
-BELONGS ya.make
- License text:
- // Copyright (c) 2001-2004 Peter Dimov and Multi Media Ltd.
- // Copyright (c) 2001 David Abrahams
- // Copyright (c) 2005 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/bind/bind.hpp [13:15]
- boost/bind/bind_template.hpp [6:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 93df83f6c44de7d0493fe49ba8dd9a6e
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/is_virtual_base_of.hpp at line 3
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_traits/is_virtual_base_of.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 942029d7de2e3614e5e94a57e0bdfebe
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/add_const.hpp at line 5, boost/type_traits/add_cv.hpp at line 5, boost/type_traits/add_volatile.hpp at line 5, boost/type_traits/array_traits.hpp at line 4, boost/type_traits/composite_traits.hpp at line 4, boost/type_traits/cv_traits.hpp at line 4, boost/type_traits/is_array.hpp at line 5, boost/type_traits/is_enum.hpp at line 5, boost/type_traits/is_member_function_pointer.hpp at line 5, boost/type_traits/is_union.hpp at line 5, boost/type_traits/remove_const.hpp at line 5, boost/type_traits/remove_cv.hpp at line 5, boost/type_traits/remove_volatile.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_traits/add_const.hpp [2:5]
- boost/type_traits/add_cv.hpp [2:5]
- boost/type_traits/add_volatile.hpp [2:5]
- boost/type_traits/array_traits.hpp [1:4]
- boost/type_traits/composite_traits.hpp [1:4]
- boost/type_traits/cv_traits.hpp [1:4]
- boost/type_traits/is_array.hpp [2:5]
- boost/type_traits/is_enum.hpp [2:5]
- boost/type_traits/is_member_function_pointer.hpp [2:5]
- boost/type_traits/is_union.hpp [2:5]
- boost/type_traits/remove_const.hpp [2:5]
- boost/type_traits/remove_cv.hpp [2:5]
- boost/type_traits/remove_volatile.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 94d8410e28595c2b87ac74a1363e3c64
-BELONGS ya.make
- License text:
- // Copyright (C) 2011 Tim Blechmann
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/heap/detail/ordered_adaptor_iterator.hpp [3:3]
- boost/heap/heap_merge.hpp [3:3]
- boost/lockfree/policies.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 94fb57d812bbd9c0831aa55e0e55380b
-BELONGS ya.make
- License text:
- // (C) Copyright 2013 Ruslan Baratov
- // Copyright (C) 2014 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/with_lock_guard.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9535c2252ccf396d7fd20ed2d3d6d886
-BELONGS ya.make
- License text:
- Copyright (c) 2007-2008 Tobias Schwinger
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/functional/forward_adapter.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 959e826399beb3963888a03796ddf093
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/caller_context.hpp at line 3
- License text:
- // (C) Copyright 2013,2015 Vicente J. Botet Escriba
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/caller_context.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 959ff6a9e03879b0569173e9f854b78a
-BELONGS ya.make
- License text:
- // Copyright (C) 2009 Trustees of Indiana University
- // Authors: Jeremiah Willcock, Andrew Lumsdaine
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/property_map/shared_array_property_map.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 95ac45e399e1397a35020312987ecbb7
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2005-2008.
- // Copyright (c) 2006-2008 Johan Rade
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/fpclassify.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 95bd27b5887bed44a3c6a9b574b85cf3
-BELONGS ya.make
- License text:
- // Copyright (C) 2003-2008 Matthias Christian Schabel
- // Copyright (C) 2008 Steven Watanabe
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/units/absolute.hpp [4:5]
- boost/units/config.hpp [4:5]
- boost/units/derived_dimension.hpp [4:5]
- boost/units/detail/absolute_impl.hpp [4:5]
- boost/units/detail/cmath_impl.hpp [4:5]
- boost/units/detail/dim_impl.hpp [4:5]
- boost/units/detail/dimension_impl.hpp [4:5]
- boost/units/detail/dimension_list.hpp [4:5]
- boost/units/detail/heterogeneous_conversion.hpp [4:5]
- boost/units/detail/linear_algebra.hpp [4:5]
- boost/units/detail/one.hpp [4:5]
- boost/units/detail/push_front_if.hpp [4:5]
- boost/units/detail/push_front_or_add.hpp [4:5]
- boost/units/detail/sort.hpp [4:5]
- boost/units/detail/utility.hpp [4:5]
- boost/units/dimensionless_quantity.hpp [4:5]
- boost/units/dimensionless_unit.hpp [4:5]
- boost/units/get_dimension.hpp [4:5]
- boost/units/get_system.hpp [4:5]
- boost/units/homogeneous_system.hpp [4:5]
- boost/units/is_dim.hpp [4:5]
- boost/units/is_dimension_list.hpp [4:5]
- boost/units/is_dimensionless.hpp [4:5]
- boost/units/is_dimensionless_quantity.hpp [4:5]
- boost/units/is_dimensionless_unit.hpp [4:5]
- boost/units/is_quantity.hpp [4:5]
- boost/units/is_quantity_of_dimension.hpp [4:5]
- boost/units/is_quantity_of_system.hpp [4:5]
- boost/units/is_unit.hpp [4:5]
- boost/units/is_unit_of_dimension.hpp [4:5]
- boost/units/is_unit_of_system.hpp [4:5]
- boost/units/lambda.hpp [4:5]
- boost/units/make_system.hpp [4:5]
- boost/units/operators.hpp [4:5]
- boost/units/physical_dimensions/absorbed_dose.hpp [4:5]
- boost/units/physical_dimensions/acceleration.hpp [4:5]
- boost/units/physical_dimensions/action.hpp [4:5]
- boost/units/physical_dimensions/activity.hpp [4:5]
- boost/units/physical_dimensions/amount.hpp [4:5]
- boost/units/physical_dimensions/angular_acceleration.hpp [4:5]
- boost/units/physical_dimensions/angular_momentum.hpp [4:5]
- boost/units/physical_dimensions/angular_velocity.hpp [4:5]
- boost/units/physical_dimensions/area.hpp [4:5]
- boost/units/physical_dimensions/capacitance.hpp [4:5]
- boost/units/physical_dimensions/conductance.hpp [4:5]
- boost/units/physical_dimensions/conductivity.hpp [4:5]
- boost/units/physical_dimensions/current.hpp [4:5]
- boost/units/physical_dimensions/dose_equivalent.hpp [4:5]
- boost/units/physical_dimensions/dynamic_viscosity.hpp [4:5]
- boost/units/physical_dimensions/electric_charge.hpp [4:5]
- boost/units/physical_dimensions/electric_potential.hpp [4:5]
- boost/units/physical_dimensions/energy.hpp [4:5]
- boost/units/physical_dimensions/energy_density.hpp [4:5]
- boost/units/physical_dimensions/force.hpp [4:5]
- boost/units/physical_dimensions/frequency.hpp [4:5]
- boost/units/physical_dimensions/heat_capacity.hpp [4:5]
- boost/units/physical_dimensions/illuminance.hpp [4:5]
- boost/units/physical_dimensions/impedance.hpp [4:5]
- boost/units/physical_dimensions/inductance.hpp [4:5]
- boost/units/physical_dimensions/kinematic_viscosity.hpp [4:5]
- boost/units/physical_dimensions/length.hpp [4:5]
- boost/units/physical_dimensions/luminance.hpp [4:5]
- boost/units/physical_dimensions/luminous_flux.hpp [4:5]
- boost/units/physical_dimensions/luminous_intensity.hpp [4:5]
- boost/units/physical_dimensions/magnetic_field_intensity.hpp [4:5]
- boost/units/physical_dimensions/magnetic_flux.hpp [4:5]
- boost/units/physical_dimensions/magnetic_flux_density.hpp [4:5]
- boost/units/physical_dimensions/mass.hpp [4:5]
- boost/units/physical_dimensions/mass_density.hpp [4:5]
- boost/units/physical_dimensions/molar_energy.hpp [4:5]
- boost/units/physical_dimensions/molar_heat_capacity.hpp [4:5]
- boost/units/physical_dimensions/moment_of_inertia.hpp [4:5]
- boost/units/physical_dimensions/momentum.hpp [4:5]
- boost/units/physical_dimensions/permeability.hpp [4:5]
- boost/units/physical_dimensions/permittivity.hpp [4:5]
- boost/units/physical_dimensions/plane_angle.hpp [4:5]
- boost/units/physical_dimensions/power.hpp [4:5]
- boost/units/physical_dimensions/pressure.hpp [4:5]
- boost/units/physical_dimensions/reluctance.hpp [4:5]
- boost/units/physical_dimensions/resistance.hpp [4:5]
- boost/units/physical_dimensions/resistivity.hpp [4:5]
- boost/units/physical_dimensions/solid_angle.hpp [4:5]
- boost/units/physical_dimensions/specific_energy.hpp [4:5]
- boost/units/physical_dimensions/specific_heat_capacity.hpp [4:5]
- boost/units/physical_dimensions/specific_volume.hpp [4:5]
- boost/units/physical_dimensions/stress.hpp [4:5]
- boost/units/physical_dimensions/surface_density.hpp [4:5]
- boost/units/physical_dimensions/surface_tension.hpp [4:5]
- boost/units/physical_dimensions/temperature.hpp [4:5]
- boost/units/physical_dimensions/thermal_conductivity.hpp [4:5]
- boost/units/physical_dimensions/time.hpp [4:5]
- boost/units/physical_dimensions/torque.hpp [4:5]
- boost/units/physical_dimensions/velocity.hpp [4:5]
- boost/units/physical_dimensions/volume.hpp [4:5]
- boost/units/physical_dimensions/wavenumber.hpp [4:5]
- boost/units/pow.hpp [4:5]
- boost/units/scaled_base_unit.hpp [4:5]
- boost/units/static_constant.hpp [4:5]
- boost/units/static_rational.hpp [4:5]
- boost/units/systems/abstract.hpp [4:5]
- boost/units/systems/angle/degrees.hpp [4:5]
- boost/units/systems/angle/gradians.hpp [4:5]
- boost/units/systems/angle/revolutions.hpp [4:5]
- boost/units/systems/cgs.hpp [4:5]
- boost/units/systems/cgs/acceleration.hpp [4:5]
- boost/units/systems/cgs/area.hpp [4:5]
- boost/units/systems/cgs/base.hpp [4:5]
- boost/units/systems/cgs/current.hpp [4:5]
- boost/units/systems/cgs/dimensionless.hpp [4:5]
- boost/units/systems/cgs/dynamic_viscosity.hpp [4:5]
- boost/units/systems/cgs/energy.hpp [4:5]
- boost/units/systems/cgs/force.hpp [4:5]
- boost/units/systems/cgs/frequency.hpp [4:5]
- boost/units/systems/cgs/io.hpp [4:5]
- boost/units/systems/cgs/kinematic_viscosity.hpp [4:5]
- boost/units/systems/cgs/length.hpp [4:5]
- boost/units/systems/cgs/mass.hpp [4:5]
- boost/units/systems/cgs/mass_density.hpp [4:5]
- boost/units/systems/cgs/momentum.hpp [4:5]
- boost/units/systems/cgs/power.hpp [4:5]
- boost/units/systems/cgs/pressure.hpp [4:5]
- boost/units/systems/cgs/time.hpp [4:5]
- boost/units/systems/cgs/velocity.hpp [4:5]
- boost/units/systems/cgs/volume.hpp [4:5]
- boost/units/systems/cgs/wavenumber.hpp [4:5]
- boost/units/systems/detail/constants.hpp [4:5]
- boost/units/systems/si.hpp [4:5]
- boost/units/systems/si/absorbed_dose.hpp [4:5]
- boost/units/systems/si/acceleration.hpp [4:5]
- boost/units/systems/si/action.hpp [4:5]
- boost/units/systems/si/activity.hpp [4:5]
- boost/units/systems/si/amount.hpp [4:5]
- boost/units/systems/si/angular_acceleration.hpp [4:5]
- boost/units/systems/si/angular_momentum.hpp [4:5]
- boost/units/systems/si/angular_velocity.hpp [4:5]
- boost/units/systems/si/area.hpp [4:5]
- boost/units/systems/si/base.hpp [4:5]
- boost/units/systems/si/capacitance.hpp [4:5]
- boost/units/systems/si/catalytic_activity.hpp [4:5]
- boost/units/systems/si/codata/alpha_constants.hpp [4:5]
- boost/units/systems/si/codata/atomic-nuclear_constants.hpp [4:5]
- boost/units/systems/si/codata/deuteron_constants.hpp [4:5]
- boost/units/systems/si/codata/electromagnetic_constants.hpp [4:5]
- boost/units/systems/si/codata/electron_constants.hpp [4:5]
- boost/units/systems/si/codata/helion_constants.hpp [4:5]
- boost/units/systems/si/codata/muon_constants.hpp [4:5]
- boost/units/systems/si/codata/neutron_constants.hpp [4:5]
- boost/units/systems/si/codata/physico-chemical_constants.hpp [4:5]
- boost/units/systems/si/codata/proton_constants.hpp [4:5]
- boost/units/systems/si/codata/tau_constants.hpp [4:5]
- boost/units/systems/si/codata/triton_constants.hpp [4:5]
- boost/units/systems/si/codata/typedefs.hpp [4:5]
- boost/units/systems/si/codata/universal_constants.hpp [4:5]
- boost/units/systems/si/codata_constants.hpp [4:5]
- boost/units/systems/si/conductance.hpp [4:5]
- boost/units/systems/si/conductivity.hpp [4:5]
- boost/units/systems/si/current.hpp [4:5]
- boost/units/systems/si/dimensionless.hpp [4:5]
- boost/units/systems/si/dose_equivalent.hpp [4:5]
- boost/units/systems/si/dynamic_viscosity.hpp [4:5]
- boost/units/systems/si/electric_charge.hpp [4:5]
- boost/units/systems/si/electric_potential.hpp [4:5]
- boost/units/systems/si/energy.hpp [4:5]
- boost/units/systems/si/force.hpp [4:5]
- boost/units/systems/si/frequency.hpp [4:5]
- boost/units/systems/si/illuminance.hpp [4:5]
- boost/units/systems/si/impedance.hpp [4:5]
- boost/units/systems/si/inductance.hpp [4:5]
- boost/units/systems/si/io.hpp [4:5]
- boost/units/systems/si/kinematic_viscosity.hpp [4:5]
- boost/units/systems/si/length.hpp [4:5]
- boost/units/systems/si/luminous_flux.hpp [4:5]
- boost/units/systems/si/luminous_intensity.hpp [4:5]
- boost/units/systems/si/magnetic_field_intensity.hpp [4:5]
- boost/units/systems/si/magnetic_flux.hpp [4:5]
- boost/units/systems/si/magnetic_flux_density.hpp [4:5]
- boost/units/systems/si/mass.hpp [4:5]
- boost/units/systems/si/mass_density.hpp [4:5]
- boost/units/systems/si/moment_of_inertia.hpp [4:5]
- boost/units/systems/si/momentum.hpp [4:5]
- boost/units/systems/si/permeability.hpp [4:5]
- boost/units/systems/si/permittivity.hpp [4:5]
- boost/units/systems/si/plane_angle.hpp [4:5]
- boost/units/systems/si/power.hpp [4:5]
- boost/units/systems/si/pressure.hpp [4:5]
- boost/units/systems/si/reluctance.hpp [4:5]
- boost/units/systems/si/resistance.hpp [4:5]
- boost/units/systems/si/resistivity.hpp [4:5]
- boost/units/systems/si/solid_angle.hpp [4:5]
- boost/units/systems/si/surface_density.hpp [4:5]
- boost/units/systems/si/surface_tension.hpp [4:5]
- boost/units/systems/si/temperature.hpp [4:5]
- boost/units/systems/si/time.hpp [4:5]
- boost/units/systems/si/torque.hpp [4:5]
- boost/units/systems/si/velocity.hpp [4:5]
- boost/units/systems/si/volume.hpp [4:5]
- boost/units/systems/si/wavenumber.hpp [4:5]
- boost/units/systems/temperature/celsius.hpp [4:5]
- boost/units/systems/temperature/fahrenheit.hpp [4:5]
- boost/units/unit.hpp [4:5]
- boost/units/units_fwd.hpp [4:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 961c56d553bec4aaa5a434bfe6d20bf7
-BELONGS ya.make
- License text:
- // (C) Copyright Darin Adler 2000
- // (C) Copyright Beman Dawes 2006, 2009
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/support/detail/endian/endian.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 96370b4387f2e07a55f47b3531512279
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/errors.hpp at line 16
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/interprocess/errors.hpp [13:16]
-
-KEEP COPYRIGHT_SERVICE_LABEL 967724361459e93f8f901bbf41b8a1ba
-BELONGS ya.make
- License text:
- // This file was modified by Oracle on 2015, 2017.
- // Modifications copyright (c) 2015-2017, Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/envelope/box.hpp [7:8]
- boost/geometry/algorithms/detail/envelope/interface.hpp [7:8]
- boost/geometry/algorithms/detail/envelope/segment.hpp [7:8]
- boost/geometry/algorithms/detail/expand/box.hpp [8:9]
- boost/geometry/algorithms/detail/expand/indexed.hpp [8:9]
- boost/geometry/algorithms/detail/expand/point.hpp [8:9]
- boost/geometry/algorithms/detail/expand/segment.hpp [8:9]
- boost/geometry/algorithms/detail/not.hpp [7:8]
- boost/geometry/algorithms/detail/overlay/overlay.hpp [6:7]
- boost/geometry/algorithms/detail/sections/section_functions.hpp [5:6]
- boost/geometry/algorithms/dispatch/expand.hpp [8:9]
- boost/geometry/io/wkt/write.hpp [8:9]
- boost/geometry/strategies/cartesian/point_in_box.hpp [7:8]
- boost/geometry/strategies/cartesian/side_by_triangle.hpp [7:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 967f34d5ca5411a681fad1c0ed330081
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/typeof/decltype.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 96b2ef2696a6c6919d3372f54d0dcce4
-BELONGS ya.make
- License text:
- // Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
- // Copyright 2009 Trustees of Indiana University.
- // Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek, Michael Hansen
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/detail/d_ary_heap.hpp [3:4]
- boost/graph/detail/incremental_components.hpp [2:4]
- boost/graph/dijkstra_shortest_paths_no_color_map.hpp [2:4]
- boost/graph/grid_graph.hpp [2:3]
- boost/graph/incremental_components.hpp [3:5]
- boost/graph/lookup_edge.hpp [2:3]
- boost/graph/mcgregor_common_subgraphs.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 96e0d52b0b956df46d31e4959a243646
-BELONGS ya.make
- License text:
- // Copyright (c) 2000-2004
- // Joerg Walter, Mathias Koch
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/ublas/detail/documentation.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 96f07997a06464b67176dfd628854f32
-BELONGS ya.make
- License text:
- // Copyright (c) 2008 Federico J. Fernandez.
- // Copyright (c) 2011-2018 Adam Wulkiewicz, Lodz, Poland.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/index/detail/algorithms/union_content.hpp [5:6]
- boost/geometry/index/detail/rtree/linear/redistribute_elements.hpp [5:6]
- boost/geometry/index/rtree.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 96fa27d0421cf1ee2e170382d2a3520d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/move/algo/move.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2012-2016.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/move/algo/move.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 974fa98871f593a9bf82fcaeda713b85
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/ptr_container/detail/serialize_xml_names.hpp at line 6, boost/ptr_container/indirect_fun.hpp at line 6
- License text:
- // Copyright Thorsten Ottosen 2003-2007. Use, modification and
- // distribution is subject to the Boost Software License, Version
- // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/ptr_container/detail/serialize_xml_names.hpp [4:6]
- boost/ptr_container/indirect_fun.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 977260799a497dd091f79c62320e7a9c
-BELONGS ya.make
- License text:
- //Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/qvm/all.hpp [1:1]
- boost/qvm/assert.hpp [1:1]
- boost/qvm/deduce_mat.hpp [1:1]
- boost/qvm/deduce_quat.hpp [1:1]
- boost/qvm/deduce_scalar.hpp [1:1]
- boost/qvm/deduce_vec.hpp [1:1]
- boost/qvm/detail/cofactor_impl.hpp [1:1]
- boost/qvm/detail/determinant_impl.hpp [1:1]
- boost/qvm/detail/mat_assign.hpp [1:1]
- boost/qvm/detail/quat_assign.hpp [1:1]
- boost/qvm/detail/remove_const.hpp [1:1]
- boost/qvm/detail/swizzle_traits.hpp [1:1]
- boost/qvm/detail/transp_impl.hpp [1:1]
- boost/qvm/detail/vec_assign.hpp [1:1]
- boost/qvm/enable_if.hpp [1:1]
- boost/qvm/error.hpp [1:1]
- boost/qvm/inline.hpp [1:1]
- boost/qvm/map.hpp [1:1]
- boost/qvm/map_mat_mat.hpp [1:1]
- boost/qvm/map_mat_vec.hpp [1:1]
- boost/qvm/map_vec_mat.hpp [1:1]
- boost/qvm/mat.hpp [1:1]
- boost/qvm/mat_access.hpp [1:1]
- boost/qvm/mat_operations.hpp [1:1]
- boost/qvm/mat_operations2.hpp [1:1]
- boost/qvm/mat_operations3.hpp [1:1]
- boost/qvm/mat_operations4.hpp [1:1]
- boost/qvm/mat_traits.hpp [1:1]
- boost/qvm/mat_traits_array.hpp [1:1]
- boost/qvm/mat_traits_defaults.hpp [1:1]
- boost/qvm/math.hpp [1:1]
- boost/qvm/operations.hpp [1:1]
- boost/qvm/quat.hpp [1:1]
- boost/qvm/quat_access.hpp [1:1]
- boost/qvm/quat_operations.hpp [1:1]
- boost/qvm/quat_traits.hpp [1:1]
- boost/qvm/quat_traits_array.hpp [1:1]
- boost/qvm/quat_traits_defaults.hpp [1:1]
- boost/qvm/quat_vec_operations.hpp [1:1]
- boost/qvm/scalar_traits.hpp [1:1]
- boost/qvm/static_assert.hpp [1:1]
- boost/qvm/swizzle.hpp [1:1]
- boost/qvm/swizzle2.hpp [1:1]
- boost/qvm/swizzle3.hpp [1:1]
- boost/qvm/swizzle4.hpp [1:1]
- boost/qvm/throw_exception.hpp [1:1]
- boost/qvm/to_string.hpp [1:1]
- boost/qvm/vec.hpp [1:1]
- boost/qvm/vec_access.hpp [1:1]
- boost/qvm/vec_mat_operations.hpp [1:1]
- boost/qvm/vec_mat_operations2.hpp [1:1]
- boost/qvm/vec_mat_operations3.hpp [1:1]
- boost/qvm/vec_mat_operations4.hpp [1:1]
- boost/qvm/vec_operations.hpp [1:1]
- boost/qvm/vec_operations2.hpp [1:1]
- boost/qvm/vec_operations3.hpp [1:1]
- boost/qvm/vec_operations4.hpp [1:1]
- boost/qvm/vec_traits.hpp [1:1]
- boost/qvm/vec_traits_array.hpp [1:1]
- boost/qvm/vec_traits_defaults.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 97a98c79164c47e3329865d388c50744
-BELONGS ya.make
- License text:
- // Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
- // Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
- // Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/append.hpp [3:5]
- boost/geometry/algorithms/comparable_distance.hpp [3:5]
- boost/geometry/algorithms/detail/comparable_distance/implementation.hpp [3:5]
- boost/geometry/algorithms/detail/comparable_distance/interface.hpp [3:5]
- boost/geometry/algorithms/detail/counting.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/areal_areal.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/implementation.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/interface.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/linear_areal.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/linear_linear.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/linear_segment_or_box.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/segment_box.hpp [3:6]
- boost/geometry/algorithms/detail/distance/backward_compatibility.hpp [3:6]
- boost/geometry/algorithms/detail/distance/default_strategies.hpp [3:6]
- boost/geometry/algorithms/detail/distance/implementation.hpp [3:6]
- boost/geometry/algorithms/detail/distance/interface.hpp [3:7]
- boost/geometry/algorithms/detail/distance/point_to_geometry.hpp [3:6]
- boost/geometry/algorithms/detail/equals/collect_vectors.hpp [3:6]
- boost/geometry/algorithms/detail/equals/point_point.hpp [3:6]
- boost/geometry/algorithms/detail/intersects/implementation.hpp [3:5]
- boost/geometry/algorithms/detail/intersects/interface.hpp [3:5]
- boost/geometry/algorithms/disjoint.hpp [3:6]
- boost/geometry/algorithms/dispatch/disjoint.hpp [3:6]
- boost/geometry/algorithms/dispatch/distance.hpp [3:6]
- boost/geometry/algorithms/distance.hpp [3:6]
- boost/geometry/algorithms/for_each.hpp [3:6]
- boost/geometry/algorithms/intersects.hpp [3:5]
- boost/geometry/algorithms/length.hpp [3:5]
- boost/geometry/algorithms/num_geometries.hpp [3:5]
- boost/geometry/algorithms/num_interior_rings.hpp [3:5]
- boost/geometry/algorithms/num_points.hpp [3:6]
- boost/geometry/algorithms/perimeter.hpp [3:5]
- boost/geometry/core/cs.hpp [3:5]
- boost/geometry/geometries/concepts/point_concept.hpp [3:5]
- boost/geometry/geometries/point.hpp [3:6]
- boost/geometry/multi/algorithms/append.hpp [3:5]
- boost/geometry/multi/algorithms/distance.hpp [3:5]
- boost/geometry/multi/algorithms/num_points.hpp [3:5]
- boost/geometry/policies/disjoint_interrupt_policy.hpp [3:6]
- boost/geometry/strategies/cartesian/disjoint_segment_box.hpp [3:6]
- boost/geometry/strategies/cartesian/distance_projected_point.hpp [3:5]
- boost/geometry/strategies/cartesian/distance_projected_point_ax.hpp [3:5]
- boost/geometry/strategies/cartesian/distance_pythagoras_box_box.hpp [3:5]
- boost/geometry/strategies/cartesian/distance_pythagoras_point_box.hpp [3:5]
- boost/geometry/strategies/concepts/distance_concept.hpp [3:5]
- boost/geometry/strategies/default_comparable_distance_result.hpp [3:5]
- boost/geometry/strategies/default_distance_result.hpp [3:5]
- boost/geometry/strategies/default_length_result.hpp [3:5]
- boost/geometry/strategies/distance.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 97e133cb20e031fc0928fe2f5b4bb947
-BELONGS ya.make
- License text:
- // Copyright (c) 1995, 2007-2015 Barend Gehrels, Amsterdam, the Netherlands.
- // Copyright (c) 1995 Maarten Hilferink, Amsterdam, the Netherlands
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/strategies/agnostic/simplify_douglas_peucker.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 97e496341d3cdfa138aa5b3dd79cbe08
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2006 Tobias Schwinger
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/support/pair.hpp [2:3]
- boost/spirit/home/classic/iterator/position_iterator_fwd.hpp [2:4]
- boost/typeof/vector.hpp [4:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 983269bbe8852bf4659165d6bccc678e
-BELONGS ya.make
- License text:
- // Portions Copyright (C) 2002 David Abrahams
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/variant/detail/over_sequence.hpp [9:9]
- boost/variant/recursive_wrapper_fwd.hpp [9:9]
-
-KEEP COPYRIGHT_SERVICE_LABEL 98430e0b9b7c8812e9d7cd75c41cb4ef
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/detail/is_likely_lambda.hpp at line 3
- License text:
- /* Copyright 2017 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_traits/detail/is_likely_lambda.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9890bd67cdd35de988039eaab34c8a02
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multi_index/detail/bidir_node_iterator.hpp at line 3, boost/multi_index/detail/cons_stdtuple.hpp at line 3, boost/multi_index/detail/hash_index_iterator.hpp at line 3, boost/multi_index/detail/is_transparent.hpp at line 3, boost/multi_index/detail/ord_index_ops.hpp at line 3, boost/multi_index/detail/rnd_node_iterator.hpp at line 3
- License text:
- /* Copyright 2003-2014 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/multi_index/detail/bidir_node_iterator.hpp [1:3]
- boost/multi_index/detail/cons_stdtuple.hpp [1:3]
- boost/multi_index/detail/hash_index_iterator.hpp [1:3]
- boost/multi_index/detail/is_transparent.hpp [1:3]
- boost/multi_index/detail/ord_index_ops.hpp [1:3]
- boost/multi_index/detail/rnd_node_iterator.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 98be8460f5eeedee67d327e5aa099ae2
-BELONGS ya.make
- License text:
- // Copyright 2004-5 The Trustees of Indiana University.
- // Copyright 2002 Brad King and Douglas Gregor
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/page_rank.hpp [1:2]
- boost/property_map/dynamic_property_map.hpp [4:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 98ec768e4c3c1122e9d267d4af38f879
-BELONGS ya.make
- License text:
- // Copyright Beman Dawes 2003, 2010
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/endian/detail/config.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9914de026685f50b3db753e9eb22154a
-BELONGS ya.make
- License text:
- Copyright (c) 2003 Hartmut Kaiser
- Copyright (c) 2003 Joel de Guzman
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/utility/grammar_def.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 99197ec3295dd71edfa4b7418d4accde
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/area.hpp [3:6]
- boost/geometry/algorithms/assign.hpp [3:6]
- boost/geometry/algorithms/buffer.hpp [3:5]
- boost/geometry/algorithms/clear.hpp [3:5]
- boost/geometry/algorithms/convert.hpp [3:6]
- boost/geometry/algorithms/correct.hpp [3:6]
- boost/geometry/algorithms/covered_by.hpp [3:5]
- boost/geometry/algorithms/crosses.hpp [3:6]
- boost/geometry/algorithms/detail/as_range.hpp [3:5]
- boost/geometry/algorithms/detail/assign_box_corners.hpp [3:5]
- boost/geometry/algorithms/detail/assign_indexed_point.hpp [3:5]
- boost/geometry/algorithms/detail/assign_values.hpp [3:5]
- boost/geometry/algorithms/detail/azimuth.hpp [3:3]
- boost/geometry/algorithms/detail/calculate_null.hpp [3:5]
- boost/geometry/algorithms/detail/calculate_sum.hpp [3:6]
- boost/geometry/algorithms/detail/centroid/translating_transformer.hpp [3:6]
- boost/geometry/algorithms/detail/convert_indexed_to_indexed.hpp [3:5]
- boost/geometry/algorithms/detail/convert_point_to_point.hpp [3:5]
- boost/geometry/algorithms/detail/course.hpp [3:3]
- boost/geometry/algorithms/detail/covered_by/implementation.hpp [3:5]
- boost/geometry/algorithms/detail/covered_by/interface.hpp [3:5]
- boost/geometry/algorithms/detail/for_each_range.hpp [3:5]
- boost/geometry/algorithms/detail/intersection/box_box.hpp [3:3]
- boost/geometry/algorithms/detail/intersection/implementation.hpp [3:3]
- boost/geometry/algorithms/detail/intersection/interface.hpp [3:3]
- boost/geometry/algorithms/detail/multi_modify.hpp [3:5]
- boost/geometry/algorithms/detail/multi_modify_with_predicate.hpp [3:5]
- boost/geometry/algorithms/detail/multi_sum.hpp [3:5]
- boost/geometry/algorithms/detail/overlay/add_rings.hpp [3:4]
- boost/geometry/algorithms/detail/overlay/append_no_duplicates.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/append_no_dups_or_spikes.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/assign_parents.hpp [3:4]
- boost/geometry/algorithms/detail/overlay/backtrack_check_si.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/check_enrich.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/convert_ring.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/copy_segment_point.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/debug_turn_info.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/do_reverse.hpp [3:4]
- boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp [3:4]
- boost/geometry/algorithms/detail/overlay/enrichment_info.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/get_intersection_points.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/get_relative_order.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/get_ring.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/get_turn_info.hpp [3:4]
- boost/geometry/algorithms/detail/overlay/get_turn_info_for_endpoint.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/get_turn_info_helpers.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/get_turn_info_la.hpp [3:4]
- boost/geometry/algorithms/detail/overlay/get_turn_info_ll.hpp [3:4]
- boost/geometry/algorithms/detail/overlay/get_turns.hpp [3:4]
- boost/geometry/algorithms/detail/overlay/overlay_type.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/ring_properties.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/segment_identifier.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/self_turn_points.hpp [3:4]
- boost/geometry/algorithms/detail/overlay/stream_info.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/traversal.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/traversal_info.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/traversal_ring_creator.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/traverse.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/turn_info.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/visit_info.hpp [3:3]
- boost/geometry/algorithms/detail/point_on_border.hpp [3:5]
- boost/geometry/algorithms/detail/relate/areal_areal.hpp [3:3]
- boost/geometry/algorithms/detail/relate/follow_helpers.hpp [3:3]
- boost/geometry/algorithms/detail/relate/implementation.hpp [3:3]
- boost/geometry/algorithms/detail/relate/interface.hpp [3:3]
- boost/geometry/algorithms/detail/relate/linear_areal.hpp [3:3]
- boost/geometry/algorithms/detail/relate/linear_linear.hpp [3:3]
- boost/geometry/algorithms/detail/relate/point_geometry.hpp [3:3]
- boost/geometry/algorithms/detail/relate/point_point.hpp [3:3]
- boost/geometry/algorithms/detail/relate/relate_impl.hpp [3:3]
- boost/geometry/algorithms/detail/ring_identifier.hpp [3:3]
- boost/geometry/algorithms/detail/sections/range_by_section.hpp [3:5]
- boost/geometry/algorithms/detail/single_geometry.hpp [3:3]
- boost/geometry/algorithms/detail/sub_range.hpp [3:3]
- boost/geometry/algorithms/detail/within/implementation.hpp [3:5]
- boost/geometry/algorithms/detail/within/interface.hpp [3:5]
- boost/geometry/algorithms/detail/within/point_in_geometry.hpp [3:6]
- boost/geometry/algorithms/detail/within/within_no_turns.hpp [3:5]
- boost/geometry/algorithms/difference.hpp [3:3]
- boost/geometry/algorithms/intersection.hpp [3:3]
- boost/geometry/algorithms/make.hpp [3:5]
- boost/geometry/algorithms/reverse.hpp [3:6]
- boost/geometry/algorithms/transform.hpp [3:6]
- boost/geometry/algorithms/unique.hpp [3:6]
- boost/geometry/algorithms/within.hpp [3:5]
- boost/geometry/core/closure.hpp [3:5]
- boost/geometry/core/exterior_ring.hpp [3:5]
- boost/geometry/core/geometry_id.hpp [3:5]
- boost/geometry/core/interior_rings.hpp [3:5]
- boost/geometry/core/interior_type.hpp [3:5]
- boost/geometry/core/is_areal.hpp [3:5]
- boost/geometry/core/mutable_range.hpp [3:5]
- boost/geometry/core/point_order.hpp [3:5]
- boost/geometry/core/point_type.hpp [3:5]
- boost/geometry/core/radius.hpp [3:5]
- boost/geometry/core/reverse_dispatch.hpp [3:5]
- boost/geometry/core/tag.hpp [3:5]
- boost/geometry/core/tag_cast.hpp [3:5]
- boost/geometry/core/tags.hpp [3:5]
- boost/geometry/core/topological_dimension.hpp [3:5]
- boost/geometry/formulas/vincenty_direct.hpp [3:3]
- boost/geometry/formulas/vincenty_inverse.hpp [3:4]
- boost/geometry/geometries/adapted/c_array.hpp [3:5]
- boost/geometry/geometries/box.hpp [3:5]
- boost/geometry/geometries/concepts/multi_linestring_concept.hpp [3:5]
- boost/geometry/geometries/concepts/multi_point_concept.hpp [3:5]
- boost/geometry/geometries/concepts/multi_polygon_concept.hpp [3:5]
- boost/geometry/geometries/geometries.hpp [3:5]
- boost/geometry/geometries/linestring.hpp [3:6]
- boost/geometry/geometries/multi_linestring.hpp [3:6]
- boost/geometry/geometries/multi_point.hpp [3:6]
- boost/geometry/geometries/multi_polygon.hpp [3:6]
- boost/geometry/geometries/point_xy.hpp [3:5]
- boost/geometry/geometries/polygon.hpp [3:6]
- boost/geometry/geometries/register/box.hpp [3:5]
- boost/geometry/geometries/register/linestring.hpp [3:5]
- boost/geometry/geometries/register/multi_linestring.hpp [3:5]
- boost/geometry/geometries/register/multi_point.hpp [3:5]
- boost/geometry/geometries/register/multi_polygon.hpp [3:5]
- boost/geometry/geometries/register/point.hpp [3:5]
- boost/geometry/geometries/register/ring.hpp [3:5]
- boost/geometry/geometries/register/segment.hpp [3:5]
- boost/geometry/geometries/ring.hpp [3:6]
- boost/geometry/geometries/segment.hpp [3:5]
- boost/geometry/geometries/variant.hpp [3:5]
- boost/geometry/io/dsv/write.hpp [3:6]
- boost/geometry/io/io.hpp [3:5]
- boost/geometry/io/wkt/detail/prefix.hpp [3:5]
- boost/geometry/io/wkt/detail/wkt_multi.hpp [3:5]
- boost/geometry/io/wkt/read.hpp [3:6]
- boost/geometry/io/wkt/stream.hpp [3:5]
- boost/geometry/io/wkt/wkt.hpp [3:5]
- boost/geometry/iterators/base.hpp [3:5]
- boost/geometry/iterators/closing_iterator.hpp [3:5]
- boost/geometry/iterators/ever_circling_iterator.hpp [3:5]
- boost/geometry/multi/algorithms/area.hpp [3:5]
- boost/geometry/multi/algorithms/centroid.hpp [3:5]
- boost/geometry/multi/algorithms/clear.hpp [3:5]
- boost/geometry/multi/algorithms/convert.hpp [3:5]
- boost/geometry/multi/algorithms/correct.hpp [3:5]
- boost/geometry/multi/algorithms/covered_by.hpp [3:6]
- boost/geometry/multi/algorithms/detail/for_each_range.hpp [3:5]
- boost/geometry/multi/algorithms/detail/modify.hpp [3:5]
- boost/geometry/multi/algorithms/detail/modify_with_predicate.hpp [3:5]
- boost/geometry/multi/algorithms/detail/multi_sum.hpp [3:5]
- boost/geometry/multi/algorithms/detail/overlay/copy_segment_point.hpp [3:3]
- boost/geometry/multi/algorithms/detail/overlay/copy_segments.hpp [3:3]
- boost/geometry/multi/algorithms/detail/overlay/get_ring.hpp [3:3]
- boost/geometry/multi/algorithms/detail/overlay/get_turns.hpp [3:3]
- boost/geometry/multi/algorithms/detail/overlay/self_turn_points.hpp [3:3]
- boost/geometry/multi/algorithms/detail/point_on_border.hpp [3:5]
- boost/geometry/multi/algorithms/detail/sections/range_by_section.hpp [3:5]
- boost/geometry/multi/algorithms/detail/sections/sectionalize.hpp [3:5]
- boost/geometry/multi/algorithms/envelope.hpp [3:5]
- boost/geometry/multi/algorithms/equals.hpp [3:5]
- boost/geometry/multi/algorithms/for_each.hpp [3:5]
- boost/geometry/multi/algorithms/intersection.hpp [3:3]
- boost/geometry/multi/algorithms/length.hpp [3:5]
- boost/geometry/multi/algorithms/num_geometries.hpp [3:5]
- boost/geometry/multi/algorithms/num_interior_rings.hpp [3:5]
- boost/geometry/multi/algorithms/perimeter.hpp [3:5]
- boost/geometry/multi/algorithms/reverse.hpp [3:5]
- boost/geometry/multi/algorithms/simplify.hpp [3:5]
- boost/geometry/multi/algorithms/transform.hpp [3:5]
- boost/geometry/multi/algorithms/unique.hpp [3:5]
- boost/geometry/multi/algorithms/within.hpp [3:6]
- boost/geometry/multi/core/closure.hpp [3:5]
- boost/geometry/multi/core/geometry_id.hpp [3:5]
- boost/geometry/multi/core/interior_rings.hpp [3:5]
- boost/geometry/multi/core/is_areal.hpp [3:5]
- boost/geometry/multi/core/point_order.hpp [3:5]
- boost/geometry/multi/core/point_type.hpp [3:5]
- boost/geometry/multi/core/ring_type.hpp [3:5]
- boost/geometry/multi/core/tags.hpp [3:5]
- boost/geometry/multi/core/topological_dimension.hpp [3:5]
- boost/geometry/multi/geometries/concepts/check.hpp [3:5]
- boost/geometry/multi/geometries/concepts/multi_linestring_concept.hpp [3:5]
- boost/geometry/multi/geometries/concepts/multi_point_concept.hpp [3:5]
- boost/geometry/multi/geometries/concepts/multi_polygon_concept.hpp [3:5]
- boost/geometry/multi/geometries/multi_geometries.hpp [3:5]
- boost/geometry/multi/geometries/multi_linestring.hpp [3:5]
- boost/geometry/multi/geometries/multi_point.hpp [3:5]
- boost/geometry/multi/geometries/multi_polygon.hpp [3:5]
- boost/geometry/multi/geometries/register/multi_linestring.hpp [3:5]
- boost/geometry/multi/geometries/register/multi_point.hpp [3:5]
- boost/geometry/multi/geometries/register/multi_polygon.hpp [3:5]
- boost/geometry/multi/io/dsv/write.hpp [3:5]
- boost/geometry/multi/io/wkt/detail/prefix.hpp [3:5]
- boost/geometry/multi/io/wkt/read.hpp [3:5]
- boost/geometry/multi/io/wkt/wkt.hpp [3:5]
- boost/geometry/multi/io/wkt/write.hpp [3:5]
- boost/geometry/multi/strategies/cartesian/centroid_average.hpp [3:5]
- boost/geometry/multi/views/detail/range_type.hpp [3:5]
- boost/geometry/policies/compare.hpp [3:3]
- boost/geometry/policies/relate/direction.hpp [3:3]
- boost/geometry/policies/relate/intersection_points.hpp [3:3]
- boost/geometry/policies/relate/tupled.hpp [3:3]
- boost/geometry/srs/projections/impl/base_dynamic.hpp [3:3]
- boost/geometry/srs/projections/impl/base_static.hpp [3:3]
- boost/geometry/srs/projections/impl/dms_parser.hpp [3:3]
- boost/geometry/srs/projections/impl/factory_entry.hpp [3:3]
- boost/geometry/srs/projections/impl/function_overloads.hpp [3:3]
- boost/geometry/srs/sphere.hpp [3:5]
- boost/geometry/srs/spheroid.hpp [3:5]
- boost/geometry/srs/srs.hpp [3:5]
- boost/geometry/strategies/agnostic/hull_graham_andrew.hpp [3:3]
- boost/geometry/strategies/agnostic/point_in_box_by_side.hpp [3:5]
- boost/geometry/strategies/agnostic/point_in_poly_winding.hpp [3:4]
- boost/geometry/strategies/area.hpp [3:6]
- boost/geometry/strategies/cartesian/area.hpp [3:6]
- boost/geometry/strategies/cartesian/area_surveyor.hpp [3:6]
- boost/geometry/strategies/cartesian/centroid_average.hpp [3:6]
- boost/geometry/strategies/cartesian/point_in_poly_crossings_multiply.hpp [3:5]
- boost/geometry/strategies/cartesian/point_in_poly_franklin.hpp [3:5]
- boost/geometry/strategies/cartesian/point_in_poly_winding.hpp [3:4]
- boost/geometry/strategies/centroid.hpp [3:5]
- boost/geometry/strategies/compare.hpp [3:5]
- boost/geometry/strategies/concepts/area_concept.hpp [3:6]
- boost/geometry/strategies/concepts/centroid_concept.hpp [3:5]
- boost/geometry/strategies/concepts/convex_hull_concept.hpp [3:5]
- boost/geometry/strategies/concepts/segment_intersect_concept.hpp [3:5]
- boost/geometry/strategies/concepts/simplify_concept.hpp [3:5]
- boost/geometry/strategies/concepts/within_concept.hpp [3:5]
- boost/geometry/strategies/convex_hull.hpp [3:5]
- boost/geometry/strategies/covered_by.hpp [3:5]
- boost/geometry/strategies/default_area_result.hpp [3:6]
- boost/geometry/strategies/geographic/distance_thomas.hpp [3:3]
- boost/geometry/strategies/geographic/distance_vincenty.hpp [3:3]
- boost/geometry/strategies/geographic/side.hpp [3:3]
- boost/geometry/strategies/geographic/side_andoyer.hpp [3:3]
- boost/geometry/strategies/geographic/side_thomas.hpp [3:3]
- boost/geometry/strategies/geographic/side_vincenty.hpp [3:3]
- boost/geometry/strategies/intersection_strategies.hpp [3:3]
- boost/geometry/strategies/side.hpp [3:5]
- boost/geometry/strategies/side_info.hpp [3:5]
- boost/geometry/strategies/spherical/compare.hpp [3:3]
- boost/geometry/strategies/spherical/distance_haversine.hpp [3:3]
- boost/geometry/strategies/spherical/point_in_poly_winding.hpp [3:4]
- boost/geometry/strategies/spherical/side_by_cross_track.hpp [3:3]
- boost/geometry/strategies/strategies.hpp [3:6]
- boost/geometry/strategies/tags.hpp [3:5]
- boost/geometry/strategies/transform.hpp [3:5]
- boost/geometry/strategies/transform/inverse_transformer.hpp [3:5]
- boost/geometry/strategies/transform/map_transformer.hpp [3:5]
- boost/geometry/strategies/within.hpp [3:5]
- boost/geometry/util/add_const_if_c.hpp [3:5]
- boost/geometry/util/closure_as_bool.hpp [3:5]
- boost/geometry/util/coordinate_cast.hpp [3:5]
- boost/geometry/util/for_each_coordinate.hpp [3:5]
- boost/geometry/util/order_as_direction.hpp [3:5]
- boost/geometry/util/parameter_type_of.hpp [3:5]
- boost/geometry/util/promote_floating_point.hpp [3:5]
- boost/geometry/util/range.hpp [3:3]
- boost/geometry/util/select_calculation_type.hpp [3:5]
- boost/geometry/util/select_coordinate_type.hpp [3:5]
- boost/geometry/util/select_most_precise.hpp [3:5]
- boost/geometry/views/box_view.hpp [3:5]
- boost/geometry/views/closeable_view.hpp [3:5]
- boost/geometry/views/detail/normalized_view.hpp [3:5]
- boost/geometry/views/detail/points_view.hpp [3:5]
- boost/geometry/views/detail/range_type.hpp [3:5]
- boost/geometry/views/identity_view.hpp [3:5]
- boost/geometry/views/reversible_view.hpp [3:5]
- boost/geometry/views/segment_view.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9920a131cad7f7cbf1729cb6309d2b08
-BELONGS ya.make
- License text:
- * Copyright (c) 2009 Helge Bahmann
- * Copyright (c) 2012 Tim Blechmann
- * Copyright (c) 2013 - 2014 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/atomic/detail/caps_gcc_x86.hpp [6:8]
- boost/atomic/detail/storage_type.hpp [6:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9939174dc8e1157f74ea1c73d66f7222
-BELONGS ya.make
- License text:
- Copyright 2013 Ankur Sinha
- Copyright 2013 Karsten Ahnert
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/external/eigen/eigen_resize.hpp [9:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9953191ce010ed1aad322265761eac02
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/test/execution_monitor.hpp at line 4
- License text:
- // (C) Copyright Gennadiy Rozental 2001.
- // (C) Copyright Beman Dawes 2001.
- // Distributed under the Boost Software License, Version 1.0.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/parameter/aux_/overloads.hpp [1:3]
+ boost/parameter/macros.hpp [1:3]
+ boost/parameter/parameters.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 90b7ebb52ec9196271f904d38d1f3894
+BELONGS ya.make
+ License text:
+ Copyright 2012-2013 Andreas Angelopoulos
+ Copyright 2012-2013 Karsten Ahnert
+ Copyright 2012-2013 Mario Mulansky
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/external/mtl4/implicit_euler_mtl4.hpp [6:8]
+ boost/numeric/odeint/external/mtl4/mtl4_resize.hpp [6:8]
+ boost/numeric/odeint/iterator/adaptive_time_iterator.hpp [10:11]
+ boost/numeric/odeint/iterator/detail/ode_iterator_base.hpp [10:11]
+ boost/numeric/odeint/stepper/symplectic_rkn_sb3a_m4_mclachlan.hpp [9:10]
+ boost/numeric/odeint/util/unit_helper.hpp [9:10]
+ boost/numeric/odeint/util/unwrap_reference.hpp [9:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL 90bf60ec5dad526231712a76952b4545
+BELONGS libs/regex/ya.make ya.make
+ License text:
+ * Copyright (c) 1998-2002
+ * John Maddock
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/cregex.hpp [3:4]
+ boost/regex.hpp [3:4]
+ boost/regex/config.hpp [3:4]
+ boost/regex/config/borland.hpp [3:4]
+ boost/regex/config/cwchar.hpp [3:4]
+ boost/regex/pattern_except.hpp [3:4]
+ boost/regex/regex_traits.hpp [3:4]
+ boost/regex/user.hpp [3:4]
+ boost/regex/v4/cregex.hpp [3:4]
+ boost/regex/v4/fileiter.hpp [3:4]
+ boost/regex/v4/instances.hpp [3:4]
+ boost/regex/v4/iterator_traits.hpp [3:4]
+ boost/regex/v4/match_flags.hpp [3:4]
+ boost/regex/v4/primary_transform.hpp [3:4]
+ boost/regex/v4/regbase.hpp [3:4]
+ boost/regex/v4/regex.hpp [3:4]
+ boost/regex/v4/regex_fwd.hpp [3:4]
+ boost/regex/v4/regex_grep.hpp [3:4]
+ boost/regex/v4/regex_match.hpp [3:4]
+ boost/regex/v4/regex_merge.hpp [3:4]
+ boost/regex/v4/regex_raw_buffer.hpp [3:4]
+ boost/regex/v4/regex_search.hpp [3:4]
+ boost/regex/v4/regex_split.hpp [3:4]
+ boost/regex/v4/states.hpp [3:4]
+ boost/regex/v4/sub_match.hpp [3:4]
+ boost/regex_fwd.hpp [3:4]
+ boost/signals/detail/config.hpp [3:4]
+ libs/regex/src/cregex.cpp [3:4]
+ libs/regex/src/fileiter.cpp [3:4]
+ libs/regex/src/instances.cpp [3:4]
+ libs/regex/src/posix_api.cpp [3:4]
+ libs/regex/src/usinstances.cpp [3:4]
+ libs/regex/src/wide_posix_api.cpp [3:4]
+ libs/regex/src/winstances.cpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 90d717675006b1b096c9a9d6faaeaff0
+BELONGS libs/log/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/log/detail/c_str.hpp at line 4, boost/log/detail/pause.hpp at line 4, boost/log/detail/sfinae_tools.hpp at line 4, boost/log/expressions/formatters/max_size_decorator.hpp at line 4, boost/log/keywords/block_size.hpp at line 4, boost/log/keywords/capacity.hpp at line 4, boost/log/keywords/enable_final_rotation.hpp at line 4, boost/log/keywords/name.hpp at line 4, boost/log/keywords/overflow_policy.hpp at line 4, boost/log/keywords/permissions.hpp at line 4, boost/log/sinks/text_ipc_message_queue_backend.hpp at line 4, boost/log/utility/ipc/object_name.hpp at line 4, boost/log/utility/ipc/reliable_message_queue.hpp at line 4, boost/log/utility/open_mode.hpp at line 4, libs/log/config/atomic-int32/atomic_int32.cpp at line 4, libs/log/config/native-syslog/native_syslog.cpp at line 4, libs/log/src/bit_tools.hpp at line 4, libs/log/src/murmur3.hpp at line 4, libs/log/src/posix/ipc_reliable_message_queue.cpp at line 4, libs/log/src/posix/ipc_sync_wrappers.hpp at line 4, libs/log/src/posix/object_name.cpp at line 4, libs/log/src/windows/auto_handle.hpp at line 4, libs/log/src/windows/ipc_reliable_message_queue.cpp at line 4, libs/log/src/windows/ipc_sync_wrappers.cpp at line 4, libs/log/src/windows/ipc_sync_wrappers.hpp at line 4, libs/log/src/windows/mapped_shared_memory.cpp at line 4, libs/log/src/windows/mapped_shared_memory.hpp at line 4, libs/log/src/windows/object_name.cpp at line 4, libs/log/src/windows/utf_code_conversion.hpp at line 4
+ License text:
+ * Copyright Andrey Semashev 2016.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/log/detail/c_str.hpp [2:4]
+ boost/log/detail/pause.hpp [2:4]
+ boost/log/detail/sfinae_tools.hpp [2:4]
+ boost/log/expressions/formatters/max_size_decorator.hpp [2:4]
+ boost/log/keywords/block_size.hpp [2:4]
+ boost/log/keywords/capacity.hpp [2:4]
+ boost/log/keywords/enable_final_rotation.hpp [2:4]
+ boost/log/keywords/name.hpp [2:4]
+ boost/log/keywords/overflow_policy.hpp [2:4]
+ boost/log/keywords/permissions.hpp [2:4]
+ boost/log/sinks/text_ipc_message_queue_backend.hpp [2:5]
+ boost/log/utility/ipc/object_name.hpp [2:4]
+ boost/log/utility/ipc/reliable_message_queue.hpp [2:5]
+ boost/log/utility/open_mode.hpp [2:4]
+ libs/log/config/atomic-int32/atomic_int32.cpp [2:4]
+ libs/log/config/native-syslog/native_syslog.cpp [2:4]
+ libs/log/src/bit_tools.hpp [2:4]
+ libs/log/src/murmur3.hpp [2:4]
+ libs/log/src/posix/ipc_reliable_message_queue.cpp [2:5]
+ libs/log/src/posix/ipc_sync_wrappers.hpp [2:4]
+ libs/log/src/posix/object_name.cpp [2:4]
+ libs/log/src/windows/auto_handle.hpp [2:4]
+ libs/log/src/windows/ipc_reliable_message_queue.cpp [2:5]
+ libs/log/src/windows/ipc_sync_wrappers.cpp [2:4]
+ libs/log/src/windows/ipc_sync_wrappers.hpp [2:4]
+ libs/log/src/windows/mapped_shared_memory.cpp [2:4]
+ libs/log/src/windows/mapped_shared_memory.hpp [2:4]
+ libs/log/src/windows/object_name.cpp [2:4]
+ libs/log/src/windows/utf_code_conversion.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 91104f12c2c5f78e23afc2acf7158941
+BELONGS ya.make
+ License text:
+ // Copyright 2007 Baruch Zilber
+ // Copyright 2007 Boris Gubenko
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp [7:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 912532add1cb71abc74d5d1fb9adee9b
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2002-2003 Eric Friedman
+ // Copyright (c) 2002 by Andrei Alexandrescu
+ // Copyright (c) 2013-2014 Antony Polukhin
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/variant/detail/move.hpp [6:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9145f1765d7da3980093a883fe0fd877
+BELONGS libs/python/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/exec.hpp at line 3, boost/python/import.hpp at line 3, libs/python/src/exec.cpp at line 3, libs/python/src/import.cpp at line 3
+ License text:
+ // Copyright Stefan Seefeld 2005.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/python/exec.hpp [1:3]
+ boost/python/import.hpp [1:3]
+ libs/python/src/exec.cpp [1:3]
+ libs/python/src/import.cpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9165a7ca8021311c1ef749cd3bd3c7b4
+BELONGS ya.make
+ License text:
+ // Copyright Bruno Dutra 2015
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/map/aux_/insert_range_impl.hpp [5:5]
+ boost/mpl/set/aux_/insert_range_impl.hpp [5:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 91ca79b4c05cb91b912d8597c99be058
+BELONGS ya.make
+ License text:
+ // Copyright 2003 - 2011 LASMEA UMR 6602 CNRS/Univ. Clermont II
+ // Copyright 2009 - 2011 LRI UMR 8623 CNRS/Univ Paris Sud XI
+ // Copyright 2011 Eric Niebler
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/proto/detail/remove_typename.hpp [2:4]
+ boost/proto/detail/template_arity.hpp [5:7]
+ boost/proto/transform/integral_c.hpp [5:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9207c14a0f73cfde357a50e86305b641
+BELONGS ya.make
+ License text:
+ // Copyright 2004-9 Trustees of Indiana University
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/detail/read_graphviz_new.hpp [1:1]
+ boost/graph/detail/read_graphviz_spirit.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 92541842df8561eccc16be0c5aad7f91
+BELONGS ya.make
+ License text:
+ Copyright (c) Marshall Clow 2010-2012.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/algorithm/searching/boyer_moore.hpp [2:2]
+ boost/algorithm/searching/boyer_moore_horspool.hpp [2:2]
+ boost/algorithm/searching/detail/bm_traits.hpp [2:2]
+ boost/algorithm/searching/detail/debugging.hpp [2:2]
+ boost/algorithm/searching/knuth_morris_pratt.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 927231b9edc8d25ca05d8eacec531b3d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/cstdfloat.hpp at line 6, boost/math/cstdfloat/cstdfloat_cmath.hpp at line 6, boost/math/cstdfloat/cstdfloat_complex.hpp at line 6, boost/math/cstdfloat/cstdfloat_complex_std.hpp at line 6, boost/math/cstdfloat/cstdfloat_iostream.hpp at line 6, boost/math/cstdfloat/cstdfloat_limits.hpp at line 6, boost/math/cstdfloat/cstdfloat_types.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/cstdfloat.hpp [2:6]
+ boost/math/cstdfloat/cstdfloat_cmath.hpp [2:6]
+ boost/math/cstdfloat/cstdfloat_complex.hpp [2:6]
+ boost/math/cstdfloat/cstdfloat_complex_std.hpp [2:6]
+ boost/math/cstdfloat/cstdfloat_iostream.hpp [2:6]
+ boost/math/cstdfloat/cstdfloat_limits.hpp [2:6]
+ boost/math/cstdfloat/cstdfloat_types.hpp [2:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 92d2c523bf7194ce7cd4df56369d1dff
+BELONGS ya.make
+ License text:
+ Copyright (c) 2003 Giovanni Bajo
+ Copyright (c) 2003 Thomas Witt
+ Copyright (c) 2003 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/iterator/file_iterator.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 93012328a02872a0d6cab3f5e94eeeb5
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/integer_fwd.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/integer_fwd.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9304e817615e1bf062335597b6b77996
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2001-2003
+ // William E. Kempf
+ // Copyright (C) 2011-2013 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/detail/config.hpp [1:3]
+ boost/thread/detail/is_convertible.hpp [3:3]
+ boost/thread/detail/memory.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 93093325a4c1f221f10cc90fc3ded37c
+BELONGS libs/thread/ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ libs/thread/src/win32/tss_pe.cpp [2:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 930a6e72883713e7b987065a56197739
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001, 2002, 2003 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/serialization/detail/shared_ptr_132.hpp [7:8]
+ boost/smart_ptr/weak_ptr.hpp [7:7]
+ boost/weak_ptr.hpp [7:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 93298a574c18187d2a2c7398406ca6da
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/detail/config_external_begin.hpp at line 5, boost/interprocess/detail/config_external_end.hpp at line 5, boost/interprocess/sync/detail/condition_any_algorithm.hpp at line 5, boost/interprocess/sync/detail/locks.hpp at line 5, boost/interprocess/sync/interprocess_condition_any.hpp at line 5, boost/move/algorithm.hpp at line 5, boost/move/core.hpp at line 5, boost/move/detail/config_begin.hpp at line 5, boost/move/detail/config_end.hpp at line 5, boost/move/detail/unique_ptr_meta_utils.hpp at line 5, boost/move/iterator.hpp at line 5, boost/move/utility.hpp at line 5, boost/move/utility_core.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2012-2012. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/interprocess/detail/config_external_begin.hpp [3:5]
+ boost/interprocess/detail/config_external_end.hpp [3:5]
+ boost/interprocess/sync/detail/condition_any_algorithm.hpp [3:5]
+ boost/interprocess/sync/detail/locks.hpp [3:5]
+ boost/interprocess/sync/interprocess_condition_any.hpp [3:5]
+ boost/move/algorithm.hpp [3:5]
+ boost/move/core.hpp [3:5]
+ boost/move/detail/config_begin.hpp [3:5]
+ boost/move/detail/config_end.hpp [3:5]
+ boost/move/detail/unique_ptr_meta_utils.hpp [3:5]
+ boost/move/iterator.hpp [3:5]
+ boost/move/utility.hpp [3:5]
+ boost/move/utility_core.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 936e3021d51f633d9c2949ec896ef36e
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/detail/functions/pow.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/multiprecision/detail/functions/pow.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 937d6d0019a0a134e2c853ee7ca9c743
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/stdlib/libcomo.hpp [1:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 937e5c4288be2ecd2826b44ffdf85359
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/opaque_pointer_converter.hpp at line 3
+ License text:
+ // Copyright Gottfried Ganßauge 2003..2006.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/python/opaque_pointer_converter.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 939d3c6b732a958e23eb33fe64213b93
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/has_trivial_move_assign.hpp at line 6, boost/type_traits/has_trivial_move_constructor.hpp at line 6, boost/type_traits/is_copy_constructible.hpp at line 5, boost/type_traits/is_nothrow_move_assignable.hpp at line 6, boost/type_traits/is_nothrow_move_constructible.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_traits/has_trivial_move_assign.hpp [2:6]
+ boost/type_traits/has_trivial_move_constructor.hpp [2:6]
+ boost/type_traits/is_copy_constructible.hpp [1:1]
+ boost/type_traits/is_nothrow_move_assignable.hpp [2:6]
+ boost/type_traits/is_nothrow_move_constructible.hpp [2:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 93ab4584acfafbfa5bd38b8d5199a363
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/atomic/detail/caps_gcc_arm.hpp [6:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL 93d0c235d47f59a703bd7faf4d1baccb
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001-2004 Peter Dimov and Multi Media Ltd.
+ // Copyright (c) 2001 David Abrahams
+ // Copyright (c) 2005 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/bind/bind.hpp [13:15]
+ boost/bind/bind_template.hpp [6:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 93df83f6c44de7d0493fe49ba8dd9a6e
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/is_virtual_base_of.hpp at line 3
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_traits/is_virtual_base_of.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 942029d7de2e3614e5e94a57e0bdfebe
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/add_const.hpp at line 5, boost/type_traits/add_cv.hpp at line 5, boost/type_traits/add_volatile.hpp at line 5, boost/type_traits/array_traits.hpp at line 4, boost/type_traits/composite_traits.hpp at line 4, boost/type_traits/cv_traits.hpp at line 4, boost/type_traits/is_array.hpp at line 5, boost/type_traits/is_enum.hpp at line 5, boost/type_traits/is_member_function_pointer.hpp at line 5, boost/type_traits/is_union.hpp at line 5, boost/type_traits/remove_const.hpp at line 5, boost/type_traits/remove_cv.hpp at line 5, boost/type_traits/remove_volatile.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_traits/add_const.hpp [2:5]
+ boost/type_traits/add_cv.hpp [2:5]
+ boost/type_traits/add_volatile.hpp [2:5]
+ boost/type_traits/array_traits.hpp [1:4]
+ boost/type_traits/composite_traits.hpp [1:4]
+ boost/type_traits/cv_traits.hpp [1:4]
+ boost/type_traits/is_array.hpp [2:5]
+ boost/type_traits/is_enum.hpp [2:5]
+ boost/type_traits/is_member_function_pointer.hpp [2:5]
+ boost/type_traits/is_union.hpp [2:5]
+ boost/type_traits/remove_const.hpp [2:5]
+ boost/type_traits/remove_cv.hpp [2:5]
+ boost/type_traits/remove_volatile.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 94d8410e28595c2b87ac74a1363e3c64
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2011 Tim Blechmann
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/heap/detail/ordered_adaptor_iterator.hpp [3:3]
+ boost/heap/heap_merge.hpp [3:3]
+ boost/lockfree/policies.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 94fb57d812bbd9c0831aa55e0e55380b
+BELONGS ya.make
+ License text:
+ // (C) Copyright 2013 Ruslan Baratov
+ // Copyright (C) 2014 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/with_lock_guard.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9535c2252ccf396d7fd20ed2d3d6d886
+BELONGS ya.make
+ License text:
+ Copyright (c) 2007-2008 Tobias Schwinger
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/functional/forward_adapter.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 959e826399beb3963888a03796ddf093
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/caller_context.hpp at line 3
+ License text:
+ // (C) Copyright 2013,2015 Vicente J. Botet Escriba
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/caller_context.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 959ff6a9e03879b0569173e9f854b78a
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2009 Trustees of Indiana University
+ // Authors: Jeremiah Willcock, Andrew Lumsdaine
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/property_map/shared_array_property_map.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 95ac45e399e1397a35020312987ecbb7
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2005-2008.
+ // Copyright (c) 2006-2008 Johan Rade
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/fpclassify.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 95bd27b5887bed44a3c6a9b574b85cf3
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2003-2008 Matthias Christian Schabel
+ // Copyright (C) 2008 Steven Watanabe
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/units/absolute.hpp [4:5]
+ boost/units/config.hpp [4:5]
+ boost/units/derived_dimension.hpp [4:5]
+ boost/units/detail/absolute_impl.hpp [4:5]
+ boost/units/detail/cmath_impl.hpp [4:5]
+ boost/units/detail/dim_impl.hpp [4:5]
+ boost/units/detail/dimension_impl.hpp [4:5]
+ boost/units/detail/dimension_list.hpp [4:5]
+ boost/units/detail/heterogeneous_conversion.hpp [4:5]
+ boost/units/detail/linear_algebra.hpp [4:5]
+ boost/units/detail/one.hpp [4:5]
+ boost/units/detail/push_front_if.hpp [4:5]
+ boost/units/detail/push_front_or_add.hpp [4:5]
+ boost/units/detail/sort.hpp [4:5]
+ boost/units/detail/utility.hpp [4:5]
+ boost/units/dimensionless_quantity.hpp [4:5]
+ boost/units/dimensionless_unit.hpp [4:5]
+ boost/units/get_dimension.hpp [4:5]
+ boost/units/get_system.hpp [4:5]
+ boost/units/homogeneous_system.hpp [4:5]
+ boost/units/is_dim.hpp [4:5]
+ boost/units/is_dimension_list.hpp [4:5]
+ boost/units/is_dimensionless.hpp [4:5]
+ boost/units/is_dimensionless_quantity.hpp [4:5]
+ boost/units/is_dimensionless_unit.hpp [4:5]
+ boost/units/is_quantity.hpp [4:5]
+ boost/units/is_quantity_of_dimension.hpp [4:5]
+ boost/units/is_quantity_of_system.hpp [4:5]
+ boost/units/is_unit.hpp [4:5]
+ boost/units/is_unit_of_dimension.hpp [4:5]
+ boost/units/is_unit_of_system.hpp [4:5]
+ boost/units/lambda.hpp [4:5]
+ boost/units/make_system.hpp [4:5]
+ boost/units/operators.hpp [4:5]
+ boost/units/physical_dimensions/absorbed_dose.hpp [4:5]
+ boost/units/physical_dimensions/acceleration.hpp [4:5]
+ boost/units/physical_dimensions/action.hpp [4:5]
+ boost/units/physical_dimensions/activity.hpp [4:5]
+ boost/units/physical_dimensions/amount.hpp [4:5]
+ boost/units/physical_dimensions/angular_acceleration.hpp [4:5]
+ boost/units/physical_dimensions/angular_momentum.hpp [4:5]
+ boost/units/physical_dimensions/angular_velocity.hpp [4:5]
+ boost/units/physical_dimensions/area.hpp [4:5]
+ boost/units/physical_dimensions/capacitance.hpp [4:5]
+ boost/units/physical_dimensions/conductance.hpp [4:5]
+ boost/units/physical_dimensions/conductivity.hpp [4:5]
+ boost/units/physical_dimensions/current.hpp [4:5]
+ boost/units/physical_dimensions/dose_equivalent.hpp [4:5]
+ boost/units/physical_dimensions/dynamic_viscosity.hpp [4:5]
+ boost/units/physical_dimensions/electric_charge.hpp [4:5]
+ boost/units/physical_dimensions/electric_potential.hpp [4:5]
+ boost/units/physical_dimensions/energy.hpp [4:5]
+ boost/units/physical_dimensions/energy_density.hpp [4:5]
+ boost/units/physical_dimensions/force.hpp [4:5]
+ boost/units/physical_dimensions/frequency.hpp [4:5]
+ boost/units/physical_dimensions/heat_capacity.hpp [4:5]
+ boost/units/physical_dimensions/illuminance.hpp [4:5]
+ boost/units/physical_dimensions/impedance.hpp [4:5]
+ boost/units/physical_dimensions/inductance.hpp [4:5]
+ boost/units/physical_dimensions/kinematic_viscosity.hpp [4:5]
+ boost/units/physical_dimensions/length.hpp [4:5]
+ boost/units/physical_dimensions/luminance.hpp [4:5]
+ boost/units/physical_dimensions/luminous_flux.hpp [4:5]
+ boost/units/physical_dimensions/luminous_intensity.hpp [4:5]
+ boost/units/physical_dimensions/magnetic_field_intensity.hpp [4:5]
+ boost/units/physical_dimensions/magnetic_flux.hpp [4:5]
+ boost/units/physical_dimensions/magnetic_flux_density.hpp [4:5]
+ boost/units/physical_dimensions/mass.hpp [4:5]
+ boost/units/physical_dimensions/mass_density.hpp [4:5]
+ boost/units/physical_dimensions/molar_energy.hpp [4:5]
+ boost/units/physical_dimensions/molar_heat_capacity.hpp [4:5]
+ boost/units/physical_dimensions/moment_of_inertia.hpp [4:5]
+ boost/units/physical_dimensions/momentum.hpp [4:5]
+ boost/units/physical_dimensions/permeability.hpp [4:5]
+ boost/units/physical_dimensions/permittivity.hpp [4:5]
+ boost/units/physical_dimensions/plane_angle.hpp [4:5]
+ boost/units/physical_dimensions/power.hpp [4:5]
+ boost/units/physical_dimensions/pressure.hpp [4:5]
+ boost/units/physical_dimensions/reluctance.hpp [4:5]
+ boost/units/physical_dimensions/resistance.hpp [4:5]
+ boost/units/physical_dimensions/resistivity.hpp [4:5]
+ boost/units/physical_dimensions/solid_angle.hpp [4:5]
+ boost/units/physical_dimensions/specific_energy.hpp [4:5]
+ boost/units/physical_dimensions/specific_heat_capacity.hpp [4:5]
+ boost/units/physical_dimensions/specific_volume.hpp [4:5]
+ boost/units/physical_dimensions/stress.hpp [4:5]
+ boost/units/physical_dimensions/surface_density.hpp [4:5]
+ boost/units/physical_dimensions/surface_tension.hpp [4:5]
+ boost/units/physical_dimensions/temperature.hpp [4:5]
+ boost/units/physical_dimensions/thermal_conductivity.hpp [4:5]
+ boost/units/physical_dimensions/time.hpp [4:5]
+ boost/units/physical_dimensions/torque.hpp [4:5]
+ boost/units/physical_dimensions/velocity.hpp [4:5]
+ boost/units/physical_dimensions/volume.hpp [4:5]
+ boost/units/physical_dimensions/wavenumber.hpp [4:5]
+ boost/units/pow.hpp [4:5]
+ boost/units/scaled_base_unit.hpp [4:5]
+ boost/units/static_constant.hpp [4:5]
+ boost/units/static_rational.hpp [4:5]
+ boost/units/systems/abstract.hpp [4:5]
+ boost/units/systems/angle/degrees.hpp [4:5]
+ boost/units/systems/angle/gradians.hpp [4:5]
+ boost/units/systems/angle/revolutions.hpp [4:5]
+ boost/units/systems/cgs.hpp [4:5]
+ boost/units/systems/cgs/acceleration.hpp [4:5]
+ boost/units/systems/cgs/area.hpp [4:5]
+ boost/units/systems/cgs/base.hpp [4:5]
+ boost/units/systems/cgs/current.hpp [4:5]
+ boost/units/systems/cgs/dimensionless.hpp [4:5]
+ boost/units/systems/cgs/dynamic_viscosity.hpp [4:5]
+ boost/units/systems/cgs/energy.hpp [4:5]
+ boost/units/systems/cgs/force.hpp [4:5]
+ boost/units/systems/cgs/frequency.hpp [4:5]
+ boost/units/systems/cgs/io.hpp [4:5]
+ boost/units/systems/cgs/kinematic_viscosity.hpp [4:5]
+ boost/units/systems/cgs/length.hpp [4:5]
+ boost/units/systems/cgs/mass.hpp [4:5]
+ boost/units/systems/cgs/mass_density.hpp [4:5]
+ boost/units/systems/cgs/momentum.hpp [4:5]
+ boost/units/systems/cgs/power.hpp [4:5]
+ boost/units/systems/cgs/pressure.hpp [4:5]
+ boost/units/systems/cgs/time.hpp [4:5]
+ boost/units/systems/cgs/velocity.hpp [4:5]
+ boost/units/systems/cgs/volume.hpp [4:5]
+ boost/units/systems/cgs/wavenumber.hpp [4:5]
+ boost/units/systems/detail/constants.hpp [4:5]
+ boost/units/systems/si.hpp [4:5]
+ boost/units/systems/si/absorbed_dose.hpp [4:5]
+ boost/units/systems/si/acceleration.hpp [4:5]
+ boost/units/systems/si/action.hpp [4:5]
+ boost/units/systems/si/activity.hpp [4:5]
+ boost/units/systems/si/amount.hpp [4:5]
+ boost/units/systems/si/angular_acceleration.hpp [4:5]
+ boost/units/systems/si/angular_momentum.hpp [4:5]
+ boost/units/systems/si/angular_velocity.hpp [4:5]
+ boost/units/systems/si/area.hpp [4:5]
+ boost/units/systems/si/base.hpp [4:5]
+ boost/units/systems/si/capacitance.hpp [4:5]
+ boost/units/systems/si/catalytic_activity.hpp [4:5]
+ boost/units/systems/si/codata/alpha_constants.hpp [4:5]
+ boost/units/systems/si/codata/atomic-nuclear_constants.hpp [4:5]
+ boost/units/systems/si/codata/deuteron_constants.hpp [4:5]
+ boost/units/systems/si/codata/electromagnetic_constants.hpp [4:5]
+ boost/units/systems/si/codata/electron_constants.hpp [4:5]
+ boost/units/systems/si/codata/helion_constants.hpp [4:5]
+ boost/units/systems/si/codata/muon_constants.hpp [4:5]
+ boost/units/systems/si/codata/neutron_constants.hpp [4:5]
+ boost/units/systems/si/codata/physico-chemical_constants.hpp [4:5]
+ boost/units/systems/si/codata/proton_constants.hpp [4:5]
+ boost/units/systems/si/codata/tau_constants.hpp [4:5]
+ boost/units/systems/si/codata/triton_constants.hpp [4:5]
+ boost/units/systems/si/codata/typedefs.hpp [4:5]
+ boost/units/systems/si/codata/universal_constants.hpp [4:5]
+ boost/units/systems/si/codata_constants.hpp [4:5]
+ boost/units/systems/si/conductance.hpp [4:5]
+ boost/units/systems/si/conductivity.hpp [4:5]
+ boost/units/systems/si/current.hpp [4:5]
+ boost/units/systems/si/dimensionless.hpp [4:5]
+ boost/units/systems/si/dose_equivalent.hpp [4:5]
+ boost/units/systems/si/dynamic_viscosity.hpp [4:5]
+ boost/units/systems/si/electric_charge.hpp [4:5]
+ boost/units/systems/si/electric_potential.hpp [4:5]
+ boost/units/systems/si/energy.hpp [4:5]
+ boost/units/systems/si/force.hpp [4:5]
+ boost/units/systems/si/frequency.hpp [4:5]
+ boost/units/systems/si/illuminance.hpp [4:5]
+ boost/units/systems/si/impedance.hpp [4:5]
+ boost/units/systems/si/inductance.hpp [4:5]
+ boost/units/systems/si/io.hpp [4:5]
+ boost/units/systems/si/kinematic_viscosity.hpp [4:5]
+ boost/units/systems/si/length.hpp [4:5]
+ boost/units/systems/si/luminous_flux.hpp [4:5]
+ boost/units/systems/si/luminous_intensity.hpp [4:5]
+ boost/units/systems/si/magnetic_field_intensity.hpp [4:5]
+ boost/units/systems/si/magnetic_flux.hpp [4:5]
+ boost/units/systems/si/magnetic_flux_density.hpp [4:5]
+ boost/units/systems/si/mass.hpp [4:5]
+ boost/units/systems/si/mass_density.hpp [4:5]
+ boost/units/systems/si/moment_of_inertia.hpp [4:5]
+ boost/units/systems/si/momentum.hpp [4:5]
+ boost/units/systems/si/permeability.hpp [4:5]
+ boost/units/systems/si/permittivity.hpp [4:5]
+ boost/units/systems/si/plane_angle.hpp [4:5]
+ boost/units/systems/si/power.hpp [4:5]
+ boost/units/systems/si/pressure.hpp [4:5]
+ boost/units/systems/si/reluctance.hpp [4:5]
+ boost/units/systems/si/resistance.hpp [4:5]
+ boost/units/systems/si/resistivity.hpp [4:5]
+ boost/units/systems/si/solid_angle.hpp [4:5]
+ boost/units/systems/si/surface_density.hpp [4:5]
+ boost/units/systems/si/surface_tension.hpp [4:5]
+ boost/units/systems/si/temperature.hpp [4:5]
+ boost/units/systems/si/time.hpp [4:5]
+ boost/units/systems/si/torque.hpp [4:5]
+ boost/units/systems/si/velocity.hpp [4:5]
+ boost/units/systems/si/volume.hpp [4:5]
+ boost/units/systems/si/wavenumber.hpp [4:5]
+ boost/units/systems/temperature/celsius.hpp [4:5]
+ boost/units/systems/temperature/fahrenheit.hpp [4:5]
+ boost/units/unit.hpp [4:5]
+ boost/units/units_fwd.hpp [4:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 961c56d553bec4aaa5a434bfe6d20bf7
+BELONGS ya.make
+ License text:
+ // (C) Copyright Darin Adler 2000
+ // (C) Copyright Beman Dawes 2006, 2009
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/support/detail/endian/endian.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 96370b4387f2e07a55f47b3531512279
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/errors.hpp at line 16
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/interprocess/errors.hpp [13:16]
+
+KEEP COPYRIGHT_SERVICE_LABEL 967724361459e93f8f901bbf41b8a1ba
+BELONGS ya.make
+ License text:
+ // This file was modified by Oracle on 2015, 2017.
+ // Modifications copyright (c) 2015-2017, Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/envelope/box.hpp [7:8]
+ boost/geometry/algorithms/detail/envelope/interface.hpp [7:8]
+ boost/geometry/algorithms/detail/envelope/segment.hpp [7:8]
+ boost/geometry/algorithms/detail/expand/box.hpp [8:9]
+ boost/geometry/algorithms/detail/expand/indexed.hpp [8:9]
+ boost/geometry/algorithms/detail/expand/point.hpp [8:9]
+ boost/geometry/algorithms/detail/expand/segment.hpp [8:9]
+ boost/geometry/algorithms/detail/not.hpp [7:8]
+ boost/geometry/algorithms/detail/overlay/overlay.hpp [6:7]
+ boost/geometry/algorithms/detail/sections/section_functions.hpp [5:6]
+ boost/geometry/algorithms/dispatch/expand.hpp [8:9]
+ boost/geometry/io/wkt/write.hpp [8:9]
+ boost/geometry/strategies/cartesian/point_in_box.hpp [7:8]
+ boost/geometry/strategies/cartesian/side_by_triangle.hpp [7:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 967f34d5ca5411a681fad1c0ed330081
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/typeof/decltype.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 96b2ef2696a6c6919d3372f54d0dcce4
+BELONGS ya.make
+ License text:
+ // Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
+ // Copyright 2009 Trustees of Indiana University.
+ // Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek, Michael Hansen
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/detail/d_ary_heap.hpp [3:4]
+ boost/graph/detail/incremental_components.hpp [2:4]
+ boost/graph/dijkstra_shortest_paths_no_color_map.hpp [2:4]
+ boost/graph/grid_graph.hpp [2:3]
+ boost/graph/incremental_components.hpp [3:5]
+ boost/graph/lookup_edge.hpp [2:3]
+ boost/graph/mcgregor_common_subgraphs.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 96e0d52b0b956df46d31e4959a243646
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2000-2004
+ // Joerg Walter, Mathias Koch
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/ublas/detail/documentation.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 96f07997a06464b67176dfd628854f32
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2008 Federico J. Fernandez.
+ // Copyright (c) 2011-2018 Adam Wulkiewicz, Lodz, Poland.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/index/detail/algorithms/union_content.hpp [5:6]
+ boost/geometry/index/detail/rtree/linear/redistribute_elements.hpp [5:6]
+ boost/geometry/index/rtree.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 96fa27d0421cf1ee2e170382d2a3520d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/move/algo/move.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2012-2016.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/move/algo/move.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 974fa98871f593a9bf82fcaeda713b85
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/ptr_container/detail/serialize_xml_names.hpp at line 6, boost/ptr_container/indirect_fun.hpp at line 6
+ License text:
+ // Copyright Thorsten Ottosen 2003-2007. Use, modification and
+ // distribution is subject to the Boost Software License, Version
+ // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/ptr_container/detail/serialize_xml_names.hpp [4:6]
+ boost/ptr_container/indirect_fun.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 977260799a497dd091f79c62320e7a9c
+BELONGS ya.make
+ License text:
+ //Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/qvm/all.hpp [1:1]
+ boost/qvm/assert.hpp [1:1]
+ boost/qvm/deduce_mat.hpp [1:1]
+ boost/qvm/deduce_quat.hpp [1:1]
+ boost/qvm/deduce_scalar.hpp [1:1]
+ boost/qvm/deduce_vec.hpp [1:1]
+ boost/qvm/detail/cofactor_impl.hpp [1:1]
+ boost/qvm/detail/determinant_impl.hpp [1:1]
+ boost/qvm/detail/mat_assign.hpp [1:1]
+ boost/qvm/detail/quat_assign.hpp [1:1]
+ boost/qvm/detail/remove_const.hpp [1:1]
+ boost/qvm/detail/swizzle_traits.hpp [1:1]
+ boost/qvm/detail/transp_impl.hpp [1:1]
+ boost/qvm/detail/vec_assign.hpp [1:1]
+ boost/qvm/enable_if.hpp [1:1]
+ boost/qvm/error.hpp [1:1]
+ boost/qvm/inline.hpp [1:1]
+ boost/qvm/map.hpp [1:1]
+ boost/qvm/map_mat_mat.hpp [1:1]
+ boost/qvm/map_mat_vec.hpp [1:1]
+ boost/qvm/map_vec_mat.hpp [1:1]
+ boost/qvm/mat.hpp [1:1]
+ boost/qvm/mat_access.hpp [1:1]
+ boost/qvm/mat_operations.hpp [1:1]
+ boost/qvm/mat_operations2.hpp [1:1]
+ boost/qvm/mat_operations3.hpp [1:1]
+ boost/qvm/mat_operations4.hpp [1:1]
+ boost/qvm/mat_traits.hpp [1:1]
+ boost/qvm/mat_traits_array.hpp [1:1]
+ boost/qvm/mat_traits_defaults.hpp [1:1]
+ boost/qvm/math.hpp [1:1]
+ boost/qvm/operations.hpp [1:1]
+ boost/qvm/quat.hpp [1:1]
+ boost/qvm/quat_access.hpp [1:1]
+ boost/qvm/quat_operations.hpp [1:1]
+ boost/qvm/quat_traits.hpp [1:1]
+ boost/qvm/quat_traits_array.hpp [1:1]
+ boost/qvm/quat_traits_defaults.hpp [1:1]
+ boost/qvm/quat_vec_operations.hpp [1:1]
+ boost/qvm/scalar_traits.hpp [1:1]
+ boost/qvm/static_assert.hpp [1:1]
+ boost/qvm/swizzle.hpp [1:1]
+ boost/qvm/swizzle2.hpp [1:1]
+ boost/qvm/swizzle3.hpp [1:1]
+ boost/qvm/swizzle4.hpp [1:1]
+ boost/qvm/throw_exception.hpp [1:1]
+ boost/qvm/to_string.hpp [1:1]
+ boost/qvm/vec.hpp [1:1]
+ boost/qvm/vec_access.hpp [1:1]
+ boost/qvm/vec_mat_operations.hpp [1:1]
+ boost/qvm/vec_mat_operations2.hpp [1:1]
+ boost/qvm/vec_mat_operations3.hpp [1:1]
+ boost/qvm/vec_mat_operations4.hpp [1:1]
+ boost/qvm/vec_operations.hpp [1:1]
+ boost/qvm/vec_operations2.hpp [1:1]
+ boost/qvm/vec_operations3.hpp [1:1]
+ boost/qvm/vec_operations4.hpp [1:1]
+ boost/qvm/vec_traits.hpp [1:1]
+ boost/qvm/vec_traits_array.hpp [1:1]
+ boost/qvm/vec_traits_defaults.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 97a98c79164c47e3329865d388c50744
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
+ // Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
+ // Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/append.hpp [3:5]
+ boost/geometry/algorithms/comparable_distance.hpp [3:5]
+ boost/geometry/algorithms/detail/comparable_distance/implementation.hpp [3:5]
+ boost/geometry/algorithms/detail/comparable_distance/interface.hpp [3:5]
+ boost/geometry/algorithms/detail/counting.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/areal_areal.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/implementation.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/interface.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/linear_areal.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/linear_linear.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/linear_segment_or_box.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/segment_box.hpp [3:6]
+ boost/geometry/algorithms/detail/distance/backward_compatibility.hpp [3:6]
+ boost/geometry/algorithms/detail/distance/default_strategies.hpp [3:6]
+ boost/geometry/algorithms/detail/distance/implementation.hpp [3:6]
+ boost/geometry/algorithms/detail/distance/interface.hpp [3:7]
+ boost/geometry/algorithms/detail/distance/point_to_geometry.hpp [3:6]
+ boost/geometry/algorithms/detail/equals/collect_vectors.hpp [3:6]
+ boost/geometry/algorithms/detail/equals/point_point.hpp [3:6]
+ boost/geometry/algorithms/detail/intersects/implementation.hpp [3:5]
+ boost/geometry/algorithms/detail/intersects/interface.hpp [3:5]
+ boost/geometry/algorithms/disjoint.hpp [3:6]
+ boost/geometry/algorithms/dispatch/disjoint.hpp [3:6]
+ boost/geometry/algorithms/dispatch/distance.hpp [3:6]
+ boost/geometry/algorithms/distance.hpp [3:6]
+ boost/geometry/algorithms/for_each.hpp [3:6]
+ boost/geometry/algorithms/intersects.hpp [3:5]
+ boost/geometry/algorithms/length.hpp [3:5]
+ boost/geometry/algorithms/num_geometries.hpp [3:5]
+ boost/geometry/algorithms/num_interior_rings.hpp [3:5]
+ boost/geometry/algorithms/num_points.hpp [3:6]
+ boost/geometry/algorithms/perimeter.hpp [3:5]
+ boost/geometry/core/cs.hpp [3:5]
+ boost/geometry/geometries/concepts/point_concept.hpp [3:5]
+ boost/geometry/geometries/point.hpp [3:6]
+ boost/geometry/multi/algorithms/append.hpp [3:5]
+ boost/geometry/multi/algorithms/distance.hpp [3:5]
+ boost/geometry/multi/algorithms/num_points.hpp [3:5]
+ boost/geometry/policies/disjoint_interrupt_policy.hpp [3:6]
+ boost/geometry/strategies/cartesian/disjoint_segment_box.hpp [3:6]
+ boost/geometry/strategies/cartesian/distance_projected_point.hpp [3:5]
+ boost/geometry/strategies/cartesian/distance_projected_point_ax.hpp [3:5]
+ boost/geometry/strategies/cartesian/distance_pythagoras_box_box.hpp [3:5]
+ boost/geometry/strategies/cartesian/distance_pythagoras_point_box.hpp [3:5]
+ boost/geometry/strategies/concepts/distance_concept.hpp [3:5]
+ boost/geometry/strategies/default_comparable_distance_result.hpp [3:5]
+ boost/geometry/strategies/default_distance_result.hpp [3:5]
+ boost/geometry/strategies/default_length_result.hpp [3:5]
+ boost/geometry/strategies/distance.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 97e133cb20e031fc0928fe2f5b4bb947
+BELONGS ya.make
+ License text:
+ // Copyright (c) 1995, 2007-2015 Barend Gehrels, Amsterdam, the Netherlands.
+ // Copyright (c) 1995 Maarten Hilferink, Amsterdam, the Netherlands
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/strategies/agnostic/simplify_douglas_peucker.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 97e496341d3cdfa138aa5b3dd79cbe08
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2006 Tobias Schwinger
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/support/pair.hpp [2:3]
+ boost/spirit/home/classic/iterator/position_iterator_fwd.hpp [2:4]
+ boost/typeof/vector.hpp [4:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 983269bbe8852bf4659165d6bccc678e
+BELONGS ya.make
+ License text:
+ // Portions Copyright (C) 2002 David Abrahams
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/variant/detail/over_sequence.hpp [9:9]
+ boost/variant/recursive_wrapper_fwd.hpp [9:9]
+
+KEEP COPYRIGHT_SERVICE_LABEL 98430e0b9b7c8812e9d7cd75c41cb4ef
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/detail/is_likely_lambda.hpp at line 3
+ License text:
+ /* Copyright 2017 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_traits/detail/is_likely_lambda.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9890bd67cdd35de988039eaab34c8a02
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multi_index/detail/bidir_node_iterator.hpp at line 3, boost/multi_index/detail/cons_stdtuple.hpp at line 3, boost/multi_index/detail/hash_index_iterator.hpp at line 3, boost/multi_index/detail/is_transparent.hpp at line 3, boost/multi_index/detail/ord_index_ops.hpp at line 3, boost/multi_index/detail/rnd_node_iterator.hpp at line 3
+ License text:
+ /* Copyright 2003-2014 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/multi_index/detail/bidir_node_iterator.hpp [1:3]
+ boost/multi_index/detail/cons_stdtuple.hpp [1:3]
+ boost/multi_index/detail/hash_index_iterator.hpp [1:3]
+ boost/multi_index/detail/is_transparent.hpp [1:3]
+ boost/multi_index/detail/ord_index_ops.hpp [1:3]
+ boost/multi_index/detail/rnd_node_iterator.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 98be8460f5eeedee67d327e5aa099ae2
+BELONGS ya.make
+ License text:
+ // Copyright 2004-5 The Trustees of Indiana University.
+ // Copyright 2002 Brad King and Douglas Gregor
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/page_rank.hpp [1:2]
+ boost/property_map/dynamic_property_map.hpp [4:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 98ec768e4c3c1122e9d267d4af38f879
+BELONGS ya.make
+ License text:
+ // Copyright Beman Dawes 2003, 2010
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/endian/detail/config.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9914de026685f50b3db753e9eb22154a
+BELONGS ya.make
+ License text:
+ Copyright (c) 2003 Hartmut Kaiser
+ Copyright (c) 2003 Joel de Guzman
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/utility/grammar_def.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 99197ec3295dd71edfa4b7418d4accde
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/area.hpp [3:6]
+ boost/geometry/algorithms/assign.hpp [3:6]
+ boost/geometry/algorithms/buffer.hpp [3:5]
+ boost/geometry/algorithms/clear.hpp [3:5]
+ boost/geometry/algorithms/convert.hpp [3:6]
+ boost/geometry/algorithms/correct.hpp [3:6]
+ boost/geometry/algorithms/covered_by.hpp [3:5]
+ boost/geometry/algorithms/crosses.hpp [3:6]
+ boost/geometry/algorithms/detail/as_range.hpp [3:5]
+ boost/geometry/algorithms/detail/assign_box_corners.hpp [3:5]
+ boost/geometry/algorithms/detail/assign_indexed_point.hpp [3:5]
+ boost/geometry/algorithms/detail/assign_values.hpp [3:5]
+ boost/geometry/algorithms/detail/azimuth.hpp [3:3]
+ boost/geometry/algorithms/detail/calculate_null.hpp [3:5]
+ boost/geometry/algorithms/detail/calculate_sum.hpp [3:6]
+ boost/geometry/algorithms/detail/centroid/translating_transformer.hpp [3:6]
+ boost/geometry/algorithms/detail/convert_indexed_to_indexed.hpp [3:5]
+ boost/geometry/algorithms/detail/convert_point_to_point.hpp [3:5]
+ boost/geometry/algorithms/detail/course.hpp [3:3]
+ boost/geometry/algorithms/detail/covered_by/implementation.hpp [3:5]
+ boost/geometry/algorithms/detail/covered_by/interface.hpp [3:5]
+ boost/geometry/algorithms/detail/for_each_range.hpp [3:5]
+ boost/geometry/algorithms/detail/intersection/box_box.hpp [3:3]
+ boost/geometry/algorithms/detail/intersection/implementation.hpp [3:3]
+ boost/geometry/algorithms/detail/intersection/interface.hpp [3:3]
+ boost/geometry/algorithms/detail/multi_modify.hpp [3:5]
+ boost/geometry/algorithms/detail/multi_modify_with_predicate.hpp [3:5]
+ boost/geometry/algorithms/detail/multi_sum.hpp [3:5]
+ boost/geometry/algorithms/detail/overlay/add_rings.hpp [3:4]
+ boost/geometry/algorithms/detail/overlay/append_no_duplicates.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/append_no_dups_or_spikes.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/assign_parents.hpp [3:4]
+ boost/geometry/algorithms/detail/overlay/backtrack_check_si.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/check_enrich.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/convert_ring.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/copy_segment_point.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/debug_turn_info.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/do_reverse.hpp [3:4]
+ boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp [3:4]
+ boost/geometry/algorithms/detail/overlay/enrichment_info.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/get_intersection_points.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/get_relative_order.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/get_ring.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/get_turn_info.hpp [3:4]
+ boost/geometry/algorithms/detail/overlay/get_turn_info_for_endpoint.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/get_turn_info_helpers.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/get_turn_info_la.hpp [3:4]
+ boost/geometry/algorithms/detail/overlay/get_turn_info_ll.hpp [3:4]
+ boost/geometry/algorithms/detail/overlay/get_turns.hpp [3:4]
+ boost/geometry/algorithms/detail/overlay/overlay_type.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/ring_properties.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/segment_identifier.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/self_turn_points.hpp [3:4]
+ boost/geometry/algorithms/detail/overlay/stream_info.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/traversal.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/traversal_info.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/traversal_ring_creator.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/traverse.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/turn_info.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/visit_info.hpp [3:3]
+ boost/geometry/algorithms/detail/point_on_border.hpp [3:5]
+ boost/geometry/algorithms/detail/relate/areal_areal.hpp [3:3]
+ boost/geometry/algorithms/detail/relate/follow_helpers.hpp [3:3]
+ boost/geometry/algorithms/detail/relate/implementation.hpp [3:3]
+ boost/geometry/algorithms/detail/relate/interface.hpp [3:3]
+ boost/geometry/algorithms/detail/relate/linear_areal.hpp [3:3]
+ boost/geometry/algorithms/detail/relate/linear_linear.hpp [3:3]
+ boost/geometry/algorithms/detail/relate/point_geometry.hpp [3:3]
+ boost/geometry/algorithms/detail/relate/point_point.hpp [3:3]
+ boost/geometry/algorithms/detail/relate/relate_impl.hpp [3:3]
+ boost/geometry/algorithms/detail/ring_identifier.hpp [3:3]
+ boost/geometry/algorithms/detail/sections/range_by_section.hpp [3:5]
+ boost/geometry/algorithms/detail/single_geometry.hpp [3:3]
+ boost/geometry/algorithms/detail/sub_range.hpp [3:3]
+ boost/geometry/algorithms/detail/within/implementation.hpp [3:5]
+ boost/geometry/algorithms/detail/within/interface.hpp [3:5]
+ boost/geometry/algorithms/detail/within/point_in_geometry.hpp [3:6]
+ boost/geometry/algorithms/detail/within/within_no_turns.hpp [3:5]
+ boost/geometry/algorithms/difference.hpp [3:3]
+ boost/geometry/algorithms/intersection.hpp [3:3]
+ boost/geometry/algorithms/make.hpp [3:5]
+ boost/geometry/algorithms/reverse.hpp [3:6]
+ boost/geometry/algorithms/transform.hpp [3:6]
+ boost/geometry/algorithms/unique.hpp [3:6]
+ boost/geometry/algorithms/within.hpp [3:5]
+ boost/geometry/core/closure.hpp [3:5]
+ boost/geometry/core/exterior_ring.hpp [3:5]
+ boost/geometry/core/geometry_id.hpp [3:5]
+ boost/geometry/core/interior_rings.hpp [3:5]
+ boost/geometry/core/interior_type.hpp [3:5]
+ boost/geometry/core/is_areal.hpp [3:5]
+ boost/geometry/core/mutable_range.hpp [3:5]
+ boost/geometry/core/point_order.hpp [3:5]
+ boost/geometry/core/point_type.hpp [3:5]
+ boost/geometry/core/radius.hpp [3:5]
+ boost/geometry/core/reverse_dispatch.hpp [3:5]
+ boost/geometry/core/tag.hpp [3:5]
+ boost/geometry/core/tag_cast.hpp [3:5]
+ boost/geometry/core/tags.hpp [3:5]
+ boost/geometry/core/topological_dimension.hpp [3:5]
+ boost/geometry/formulas/vincenty_direct.hpp [3:3]
+ boost/geometry/formulas/vincenty_inverse.hpp [3:4]
+ boost/geometry/geometries/adapted/c_array.hpp [3:5]
+ boost/geometry/geometries/box.hpp [3:5]
+ boost/geometry/geometries/concepts/multi_linestring_concept.hpp [3:5]
+ boost/geometry/geometries/concepts/multi_point_concept.hpp [3:5]
+ boost/geometry/geometries/concepts/multi_polygon_concept.hpp [3:5]
+ boost/geometry/geometries/geometries.hpp [3:5]
+ boost/geometry/geometries/linestring.hpp [3:6]
+ boost/geometry/geometries/multi_linestring.hpp [3:6]
+ boost/geometry/geometries/multi_point.hpp [3:6]
+ boost/geometry/geometries/multi_polygon.hpp [3:6]
+ boost/geometry/geometries/point_xy.hpp [3:5]
+ boost/geometry/geometries/polygon.hpp [3:6]
+ boost/geometry/geometries/register/box.hpp [3:5]
+ boost/geometry/geometries/register/linestring.hpp [3:5]
+ boost/geometry/geometries/register/multi_linestring.hpp [3:5]
+ boost/geometry/geometries/register/multi_point.hpp [3:5]
+ boost/geometry/geometries/register/multi_polygon.hpp [3:5]
+ boost/geometry/geometries/register/point.hpp [3:5]
+ boost/geometry/geometries/register/ring.hpp [3:5]
+ boost/geometry/geometries/register/segment.hpp [3:5]
+ boost/geometry/geometries/ring.hpp [3:6]
+ boost/geometry/geometries/segment.hpp [3:5]
+ boost/geometry/geometries/variant.hpp [3:5]
+ boost/geometry/io/dsv/write.hpp [3:6]
+ boost/geometry/io/io.hpp [3:5]
+ boost/geometry/io/wkt/detail/prefix.hpp [3:5]
+ boost/geometry/io/wkt/detail/wkt_multi.hpp [3:5]
+ boost/geometry/io/wkt/read.hpp [3:6]
+ boost/geometry/io/wkt/stream.hpp [3:5]
+ boost/geometry/io/wkt/wkt.hpp [3:5]
+ boost/geometry/iterators/base.hpp [3:5]
+ boost/geometry/iterators/closing_iterator.hpp [3:5]
+ boost/geometry/iterators/ever_circling_iterator.hpp [3:5]
+ boost/geometry/multi/algorithms/area.hpp [3:5]
+ boost/geometry/multi/algorithms/centroid.hpp [3:5]
+ boost/geometry/multi/algorithms/clear.hpp [3:5]
+ boost/geometry/multi/algorithms/convert.hpp [3:5]
+ boost/geometry/multi/algorithms/correct.hpp [3:5]
+ boost/geometry/multi/algorithms/covered_by.hpp [3:6]
+ boost/geometry/multi/algorithms/detail/for_each_range.hpp [3:5]
+ boost/geometry/multi/algorithms/detail/modify.hpp [3:5]
+ boost/geometry/multi/algorithms/detail/modify_with_predicate.hpp [3:5]
+ boost/geometry/multi/algorithms/detail/multi_sum.hpp [3:5]
+ boost/geometry/multi/algorithms/detail/overlay/copy_segment_point.hpp [3:3]
+ boost/geometry/multi/algorithms/detail/overlay/copy_segments.hpp [3:3]
+ boost/geometry/multi/algorithms/detail/overlay/get_ring.hpp [3:3]
+ boost/geometry/multi/algorithms/detail/overlay/get_turns.hpp [3:3]
+ boost/geometry/multi/algorithms/detail/overlay/self_turn_points.hpp [3:3]
+ boost/geometry/multi/algorithms/detail/point_on_border.hpp [3:5]
+ boost/geometry/multi/algorithms/detail/sections/range_by_section.hpp [3:5]
+ boost/geometry/multi/algorithms/detail/sections/sectionalize.hpp [3:5]
+ boost/geometry/multi/algorithms/envelope.hpp [3:5]
+ boost/geometry/multi/algorithms/equals.hpp [3:5]
+ boost/geometry/multi/algorithms/for_each.hpp [3:5]
+ boost/geometry/multi/algorithms/intersection.hpp [3:3]
+ boost/geometry/multi/algorithms/length.hpp [3:5]
+ boost/geometry/multi/algorithms/num_geometries.hpp [3:5]
+ boost/geometry/multi/algorithms/num_interior_rings.hpp [3:5]
+ boost/geometry/multi/algorithms/perimeter.hpp [3:5]
+ boost/geometry/multi/algorithms/reverse.hpp [3:5]
+ boost/geometry/multi/algorithms/simplify.hpp [3:5]
+ boost/geometry/multi/algorithms/transform.hpp [3:5]
+ boost/geometry/multi/algorithms/unique.hpp [3:5]
+ boost/geometry/multi/algorithms/within.hpp [3:6]
+ boost/geometry/multi/core/closure.hpp [3:5]
+ boost/geometry/multi/core/geometry_id.hpp [3:5]
+ boost/geometry/multi/core/interior_rings.hpp [3:5]
+ boost/geometry/multi/core/is_areal.hpp [3:5]
+ boost/geometry/multi/core/point_order.hpp [3:5]
+ boost/geometry/multi/core/point_type.hpp [3:5]
+ boost/geometry/multi/core/ring_type.hpp [3:5]
+ boost/geometry/multi/core/tags.hpp [3:5]
+ boost/geometry/multi/core/topological_dimension.hpp [3:5]
+ boost/geometry/multi/geometries/concepts/check.hpp [3:5]
+ boost/geometry/multi/geometries/concepts/multi_linestring_concept.hpp [3:5]
+ boost/geometry/multi/geometries/concepts/multi_point_concept.hpp [3:5]
+ boost/geometry/multi/geometries/concepts/multi_polygon_concept.hpp [3:5]
+ boost/geometry/multi/geometries/multi_geometries.hpp [3:5]
+ boost/geometry/multi/geometries/multi_linestring.hpp [3:5]
+ boost/geometry/multi/geometries/multi_point.hpp [3:5]
+ boost/geometry/multi/geometries/multi_polygon.hpp [3:5]
+ boost/geometry/multi/geometries/register/multi_linestring.hpp [3:5]
+ boost/geometry/multi/geometries/register/multi_point.hpp [3:5]
+ boost/geometry/multi/geometries/register/multi_polygon.hpp [3:5]
+ boost/geometry/multi/io/dsv/write.hpp [3:5]
+ boost/geometry/multi/io/wkt/detail/prefix.hpp [3:5]
+ boost/geometry/multi/io/wkt/read.hpp [3:5]
+ boost/geometry/multi/io/wkt/wkt.hpp [3:5]
+ boost/geometry/multi/io/wkt/write.hpp [3:5]
+ boost/geometry/multi/strategies/cartesian/centroid_average.hpp [3:5]
+ boost/geometry/multi/views/detail/range_type.hpp [3:5]
+ boost/geometry/policies/compare.hpp [3:3]
+ boost/geometry/policies/relate/direction.hpp [3:3]
+ boost/geometry/policies/relate/intersection_points.hpp [3:3]
+ boost/geometry/policies/relate/tupled.hpp [3:3]
+ boost/geometry/srs/projections/impl/base_dynamic.hpp [3:3]
+ boost/geometry/srs/projections/impl/base_static.hpp [3:3]
+ boost/geometry/srs/projections/impl/dms_parser.hpp [3:3]
+ boost/geometry/srs/projections/impl/factory_entry.hpp [3:3]
+ boost/geometry/srs/projections/impl/function_overloads.hpp [3:3]
+ boost/geometry/srs/sphere.hpp [3:5]
+ boost/geometry/srs/spheroid.hpp [3:5]
+ boost/geometry/srs/srs.hpp [3:5]
+ boost/geometry/strategies/agnostic/hull_graham_andrew.hpp [3:3]
+ boost/geometry/strategies/agnostic/point_in_box_by_side.hpp [3:5]
+ boost/geometry/strategies/agnostic/point_in_poly_winding.hpp [3:4]
+ boost/geometry/strategies/area.hpp [3:6]
+ boost/geometry/strategies/cartesian/area.hpp [3:6]
+ boost/geometry/strategies/cartesian/area_surveyor.hpp [3:6]
+ boost/geometry/strategies/cartesian/centroid_average.hpp [3:6]
+ boost/geometry/strategies/cartesian/point_in_poly_crossings_multiply.hpp [3:5]
+ boost/geometry/strategies/cartesian/point_in_poly_franklin.hpp [3:5]
+ boost/geometry/strategies/cartesian/point_in_poly_winding.hpp [3:4]
+ boost/geometry/strategies/centroid.hpp [3:5]
+ boost/geometry/strategies/compare.hpp [3:5]
+ boost/geometry/strategies/concepts/area_concept.hpp [3:6]
+ boost/geometry/strategies/concepts/centroid_concept.hpp [3:5]
+ boost/geometry/strategies/concepts/convex_hull_concept.hpp [3:5]
+ boost/geometry/strategies/concepts/segment_intersect_concept.hpp [3:5]
+ boost/geometry/strategies/concepts/simplify_concept.hpp [3:5]
+ boost/geometry/strategies/concepts/within_concept.hpp [3:5]
+ boost/geometry/strategies/convex_hull.hpp [3:5]
+ boost/geometry/strategies/covered_by.hpp [3:5]
+ boost/geometry/strategies/default_area_result.hpp [3:6]
+ boost/geometry/strategies/geographic/distance_thomas.hpp [3:3]
+ boost/geometry/strategies/geographic/distance_vincenty.hpp [3:3]
+ boost/geometry/strategies/geographic/side.hpp [3:3]
+ boost/geometry/strategies/geographic/side_andoyer.hpp [3:3]
+ boost/geometry/strategies/geographic/side_thomas.hpp [3:3]
+ boost/geometry/strategies/geographic/side_vincenty.hpp [3:3]
+ boost/geometry/strategies/intersection_strategies.hpp [3:3]
+ boost/geometry/strategies/side.hpp [3:5]
+ boost/geometry/strategies/side_info.hpp [3:5]
+ boost/geometry/strategies/spherical/compare.hpp [3:3]
+ boost/geometry/strategies/spherical/distance_haversine.hpp [3:3]
+ boost/geometry/strategies/spherical/point_in_poly_winding.hpp [3:4]
+ boost/geometry/strategies/spherical/side_by_cross_track.hpp [3:3]
+ boost/geometry/strategies/strategies.hpp [3:6]
+ boost/geometry/strategies/tags.hpp [3:5]
+ boost/geometry/strategies/transform.hpp [3:5]
+ boost/geometry/strategies/transform/inverse_transformer.hpp [3:5]
+ boost/geometry/strategies/transform/map_transformer.hpp [3:5]
+ boost/geometry/strategies/within.hpp [3:5]
+ boost/geometry/util/add_const_if_c.hpp [3:5]
+ boost/geometry/util/closure_as_bool.hpp [3:5]
+ boost/geometry/util/coordinate_cast.hpp [3:5]
+ boost/geometry/util/for_each_coordinate.hpp [3:5]
+ boost/geometry/util/order_as_direction.hpp [3:5]
+ boost/geometry/util/parameter_type_of.hpp [3:5]
+ boost/geometry/util/promote_floating_point.hpp [3:5]
+ boost/geometry/util/range.hpp [3:3]
+ boost/geometry/util/select_calculation_type.hpp [3:5]
+ boost/geometry/util/select_coordinate_type.hpp [3:5]
+ boost/geometry/util/select_most_precise.hpp [3:5]
+ boost/geometry/views/box_view.hpp [3:5]
+ boost/geometry/views/closeable_view.hpp [3:5]
+ boost/geometry/views/detail/normalized_view.hpp [3:5]
+ boost/geometry/views/detail/points_view.hpp [3:5]
+ boost/geometry/views/detail/range_type.hpp [3:5]
+ boost/geometry/views/identity_view.hpp [3:5]
+ boost/geometry/views/reversible_view.hpp [3:5]
+ boost/geometry/views/segment_view.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9920a131cad7f7cbf1729cb6309d2b08
+BELONGS ya.make
+ License text:
+ * Copyright (c) 2009 Helge Bahmann
+ * Copyright (c) 2012 Tim Blechmann
+ * Copyright (c) 2013 - 2014 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/atomic/detail/caps_gcc_x86.hpp [6:8]
+ boost/atomic/detail/storage_type.hpp [6:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9939174dc8e1157f74ea1c73d66f7222
+BELONGS ya.make
+ License text:
+ Copyright 2013 Ankur Sinha
+ Copyright 2013 Karsten Ahnert
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/external/eigen/eigen_resize.hpp [9:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9953191ce010ed1aad322265761eac02
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/test/execution_monitor.hpp at line 4
+ License text:
+ // (C) Copyright Gennadiy Rozental 2001.
+ // (C) Copyright Beman Dawes 2001.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/test/execution_monitor.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9972952826dfbd3f9309f8cd6b78c915
+BELONGS ya.make
+ License text:
+ Copyright (c) 2011-2011: Joachim Faulhaber
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/icl/concept/interval_associator_base.hpp [2:2]
+ boost/icl/type_traits/is_increasing.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 999dbbff90149cd716b12c15b568fa5b
+BELONGS ya.make
+ License text:
+ // Copyright 2014 Neil Groves
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/range/adaptor/indexed.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 99abaad3f00b1da4f1a516051a6dbe16
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2017-2018, Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/densify.hpp [3:3]
+ boost/geometry/srs/projections/esri_traits.hpp [3:4]
+ boost/geometry/srs/projections/iau2000_traits.hpp [3:4]
+ boost/geometry/srs/projections/invalid_point.hpp [3:4]
+ boost/geometry/srs/projections/par4.hpp [3:4]
+ boost/geometry/strategies/cartesian/densify.hpp [3:3]
+ boost/geometry/strategies/geographic/densify.hpp [3:3]
+ boost/geometry/strategies/geographic/distance_cross_track_box_box.hpp [3:3]
+ boost/geometry/strategies/geographic/distance_cross_track_point_box.hpp [3:3]
+ boost/geometry/strategies/spherical/densify.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 99b0e8de6a1418d7b7de62fe775f9abf
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/smart_ptr/detail/shared_count.hpp at line 9
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/interprocess/smart_ptr/detail/shared_count.hpp [5:9]
+
+KEEP COPYRIGHT_SERVICE_LABEL 99d17d19ab9b1eb6918fe74af3b2dad8
+BELONGS ya.make
+ License text:
+ Copyright (c) 2011 Aaron Graham
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/repository/include/qi_advance.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 99d56be2b42ec28cbfbc4305e55852a9
+BELONGS ya.make
+ License text:
+ // Copyright Aleksey Gurtovoy 2006
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/aux_/config/pp_counter.hpp [5:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 99e28477ea4db48cac3c5f12e2cf6ff1
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/statechart/asynchronous_state_machine.hpp at line 6, boost/statechart/custom_reaction.hpp at line 6, boost/statechart/deep_history.hpp at line 6, boost/statechart/deferral.hpp at line 6, boost/statechart/detail/avoid_unused_warning.hpp at line 6, boost/statechart/detail/constructor.hpp at line 6, boost/statechart/detail/counted_base.hpp at line 6, boost/statechart/detail/leaf_state.hpp at line 6, boost/statechart/detail/node_state.hpp at line 6, boost/statechart/event_base.hpp at line 6, boost/statechart/exception_translator.hpp at line 6, boost/statechart/fifo_scheduler.hpp at line 6, boost/statechart/history.hpp at line 6, boost/statechart/null_exception_translator.hpp at line 6, boost/statechart/shallow_history.hpp at line 6, boost/statechart/state.hpp at line 6, boost/statechart/termination.hpp at line 6
+ License text:
+ // Copyright 2002-2006 Andreas Huber Doenni
+ // Distributed under the Boost Software License, Version 1.0. (See accompany-
+ // ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/statechart/asynchronous_state_machine.hpp [4:6]
+ boost/statechart/custom_reaction.hpp [4:6]
+ boost/statechart/deep_history.hpp [4:6]
+ boost/statechart/deferral.hpp [4:6]
+ boost/statechart/detail/avoid_unused_warning.hpp [4:6]
+ boost/statechart/detail/constructor.hpp [4:6]
+ boost/statechart/detail/counted_base.hpp [4:6]
+ boost/statechart/detail/leaf_state.hpp [4:6]
+ boost/statechart/detail/node_state.hpp [4:6]
+ boost/statechart/event_base.hpp [4:6]
+ boost/statechart/exception_translator.hpp [4:6]
+ boost/statechart/fifo_scheduler.hpp [4:6]
+ boost/statechart/history.hpp [4:6]
+ boost/statechart/null_exception_translator.hpp [4:6]
+ boost/statechart/shallow_history.hpp [4:6]
+ boost/statechart/state.hpp [4:6]
+ boost/statechart/termination.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 99e30e6c24834a627e69d8d2bffc84d4
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/endian.hpp at line 3
+ License text:
+ // Copyright 2013 Rene Rivera
+ // Distributed under the Boost Software License, Version 1.0. (See accompany-
+ // ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/detail/endian.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9a27310a64ac7fa13d0d55e8ac6f25e5
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2000-2007
+ // Joerg Walter, Mathias Koch, Gunter Winkler
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/ublas/matrix_sparse.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9a4ec699eab8989d68e34663ac7edf6a
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2010 Ilya Murav'jov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/range/adaptor/indexed.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9a63cb87e8c2a3dd336d616478d5f492
+BELONGS ya.make
+ License text:
+ Copyright (c) 2005-2008 Hartmut Kaiser
+ Copyright (c) 2005-2010 Joel de Guzman
+ Copyright (c) 2014-2015 John Fletcher
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/phoenix/fusion/at.hpp [2:4]
+ boost/phoenix/version.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9a76da02cc5d44aea9b67b645c93e835
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2017 Andrzej Krzemienski.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/optional/detail/experimental_traits.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9a80ad510090429b11292e780f492281
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2014, Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/check_iterator_range.hpp [3:3]
+ boost/geometry/algorithms/detail/closest_feature/geometry_to_range.hpp [3:3]
+ boost/geometry/algorithms/detail/closest_feature/point_to_range.hpp [3:3]
+ boost/geometry/algorithms/detail/closest_feature/range_to_range.hpp [3:3]
+ boost/geometry/algorithms/detail/distance/box_to_box.hpp [3:3]
+ boost/geometry/algorithms/detail/distance/geometry_to_segment_or_box.hpp [3:3]
+ boost/geometry/algorithms/detail/distance/is_comparable.hpp [3:3]
+ boost/geometry/algorithms/detail/distance/iterator_selector.hpp [3:3]
+ boost/geometry/algorithms/detail/distance/linear_or_areal_to_areal.hpp [3:3]
+ boost/geometry/algorithms/detail/distance/linear_to_linear.hpp [3:3]
+ boost/geometry/algorithms/detail/distance/multipoint_to_geometry.hpp [3:3]
+ boost/geometry/algorithms/detail/distance/range_to_geometry_rtree.hpp [3:3]
+ boost/geometry/algorithms/detail/distance/segment_to_box.hpp [3:3]
+ boost/geometry/algorithms/detail/distance/segment_to_segment.hpp [3:3]
+ boost/geometry/algorithms/detail/is_simple/implementation.hpp [3:3]
+ boost/geometry/algorithms/detail/is_valid/complement_graph.hpp [3:3]
+ boost/geometry/algorithms/detail/is_valid/debug_complement_graph.hpp [3:3]
+ boost/geometry/algorithms/detail/is_valid/debug_validity_phase.hpp [3:3]
+ boost/geometry/algorithms/detail/is_valid/implementation.hpp [3:3]
+ boost/geometry/algorithms/detail/num_distinct_consecutive_points.hpp [3:3]
+ boost/geometry/algorithms/detail/turns/debug_turn.hpp [3:3]
+ boost/geometry/algorithms/detail/turns/filter_continue_turns.hpp [3:3]
+ boost/geometry/algorithms/detail/turns/print_turns.hpp [3:3]
+ boost/geometry/algorithms/detail/turns/remove_duplicate_turns.hpp [3:3]
+ boost/geometry/algorithms/dispatch/is_simple.hpp [3:3]
+ boost/geometry/algorithms/dispatch/is_valid.hpp [3:3]
+ boost/geometry/algorithms/is_simple.hpp [3:3]
+ boost/geometry/algorithms/is_valid.hpp [3:3]
+ boost/geometry/algorithms/num_segments.hpp [3:3]
+ boost/geometry/geometries/pointing_segment.hpp [3:3]
+ boost/geometry/iterators/concatenate_iterator.hpp [3:3]
+ boost/geometry/iterators/detail/point_iterator/inner_range_type.hpp [3:3]
+ boost/geometry/iterators/detail/point_iterator/iterator_type.hpp [3:3]
+ boost/geometry/iterators/detail/point_iterator/value_type.hpp [3:3]
+ boost/geometry/iterators/detail/segment_iterator/iterator_type.hpp [3:3]
+ boost/geometry/iterators/detail/segment_iterator/range_segment_iterator.hpp [3:3]
+ boost/geometry/iterators/dispatch/point_iterator.hpp [3:3]
+ boost/geometry/iterators/dispatch/segment_iterator.hpp [3:3]
+ boost/geometry/iterators/flatten_iterator.hpp [3:3]
+ boost/geometry/iterators/has_one_element.hpp [3:3]
+ boost/geometry/iterators/point_iterator.hpp [3:3]
+ boost/geometry/iterators/point_reverse_iterator.hpp [3:3]
+ boost/geometry/iterators/segment_iterator.hpp [3:3]
+ boost/geometry/policies/predicate_based_interrupt_policy.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9a830292eb7d7692c5b622def685d36a
+BELONGS libs/filesystem/ya.make ya.make
+ License text:
+ // Copyright Beman Dawes 2009
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/filesystem/path_traits.hpp [3:3]
+ libs/filesystem/src/codecvt_error_category.cpp [3:3]
+ libs/filesystem/src/windows_file_codecvt.cpp [3:3]
+ libs/filesystem/src/windows_file_codecvt.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9b0d133607a0597027f2dd9d6a130cfe
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2002 Eric Friedman, Itay Maman
+ // Copyright (c) 2016-2017 Antony Polukhin
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/variant/recursive_wrapper_fwd.hpp [6:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9b8104e4a1112de174366bab10c22757
+BELONGS ya.make
+ License text:
+ // (C) Copyright John Maddock 2006.
+ // (C) Copyright Jeremy William Murphy 2015.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/tools/polynomial.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9bd4b980f484c78b17c8d7c57d64bb74
+BELONGS ya.make
+ License text:
+ @copyright Louis Dionne 2013-2016
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/hana/detail/ebo.hpp [5:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9c202b68cb8cb773e5f594c9cb634928
+BELONGS ya.make
+ License text:
+ // Copyright Eric Niebler 2008
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/char.hpp [5:5]
+ boost/mpl/char_fwd.hpp [5:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9c35799cf91685e1cfa7ef2db4a88cb7
+BELONGS ya.make
+ License text:
+ // Copyright Beman Dawes, 2009
+ // Copyright (C) 2011-2012 Vicente J. Botet Escriba
+ // Copyright (C) 2012 Anthony Williams
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/core/scoped_enum.hpp [3:5]
+ boost/core/underlying_type.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9c5be5a59c66b2bcbb6b46ce3adf1175
+BELONGS ya.make
+ License text:
+ // Copyright Aleksey Gurtovoy 2001-2008
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/aux_/config/compiler.hpp [5:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9ccbeffbf66f48cc1052a24852fc9ca2
+BELONGS ya.make
+ License text:
+ // Copyright Aleksey Gurtovoy 2000-2004
+ // Copyright Peter Dimov 2000-2003
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/aux_/type_wrapper.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9ce6fa34c3edd9c7902c5acb69aa2095
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/filesystem/convenience.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/filesystem/convenience.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9cf9d5ea6d40a88eeda2127bd41fc81a
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2012 Flavio De Lorenzi (fdlorenzi@gmail.com)
+ // Copyright (C) 2013 Jakob Lykke Andersen, University of Southern Denmark (jlandersen@imada.sdu.dk)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/vf2_sub_graph_iso.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9d08918c66a0d366cbbae02999f8438d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/transitive_closure.hpp at line 4, boost/graph/vector_as_graph.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/transitive_closure.hpp [1:4]
+ boost/graph/vector_as_graph.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9d195dfaf2f01572424e02192d7f0ba0
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/detail/suffix.hpp at line 14
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/detail/suffix.hpp [4:14]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9d1c4732b4bc51a1628e9ff1edeccd54
+BELONGS ya.make
+ License text:
+ // (C) Copyright David Abrahams 2001, Howard Hinnant 2001.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/detail/numeric_traits.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9d30d1a61743fde4bb0f00ff80c68d32
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2014 Joel de Guzman
+ Copyright (c) 2013-2014 Agustin Berge
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/x3/auxiliary/any_parser.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9d615a07fa55ba7bc529219f2b7e3de1
+BELONGS ya.make
+ License text:
+ // This file was modified by Oracle on 2014.
+ // Modifications copyright (c) 2014, Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/append.hpp [7:8]
+ boost/geometry/algorithms/comparable_distance.hpp [7:8]
+ boost/geometry/algorithms/detail/comparable_distance/implementation.hpp [7:8]
+ boost/geometry/algorithms/detail/comparable_distance/interface.hpp [7:8]
+ boost/geometry/algorithms/detail/counting.hpp [8:9]
+ boost/geometry/algorithms/detail/course.hpp [5:6]
+ boost/geometry/algorithms/detail/distance/backward_compatibility.hpp [8:9]
+ boost/geometry/algorithms/detail/distance/default_strategies.hpp [8:9]
+ boost/geometry/algorithms/detail/distance/implementation.hpp [8:9]
+ boost/geometry/algorithms/detail/distance/interface.hpp [9:10]
+ boost/geometry/algorithms/detail/distance/point_to_geometry.hpp [8:9]
+ boost/geometry/algorithms/detail/intersection/box_box.hpp [5:6]
+ boost/geometry/algorithms/detail/intersection/implementation.hpp [5:6]
+ boost/geometry/algorithms/dispatch/distance.hpp [8:9]
+ boost/geometry/algorithms/distance.hpp [8:9]
+ boost/geometry/algorithms/for_each.hpp [8:9]
+ boost/geometry/algorithms/intersection.hpp [5:6]
+ boost/geometry/algorithms/num_geometries.hpp [7:8]
+ boost/geometry/algorithms/num_interior_rings.hpp [7:8]
+ boost/geometry/algorithms/num_points.hpp [8:9]
+ boost/geometry/algorithms/perimeter.hpp [7:8]
+ boost/geometry/core/cs.hpp [7:8]
+ boost/geometry/geometries/concepts/point_concept.hpp [7:8]
+ boost/geometry/geometries/point.hpp [8:9]
+ boost/geometry/multi/algorithms/append.hpp [7:8]
+ boost/geometry/multi/algorithms/disjoint.hpp [7:8]
+ boost/geometry/multi/algorithms/distance.hpp [7:8]
+ boost/geometry/multi/algorithms/intersection.hpp [5:6]
+ boost/geometry/multi/algorithms/num_interior_rings.hpp [7:8]
+ boost/geometry/multi/algorithms/num_points.hpp [7:8]
+ boost/geometry/strategies/cartesian/distance_projected_point.hpp [7:8]
+ boost/geometry/strategies/cartesian/distance_projected_point_ax.hpp [7:8]
+ boost/geometry/strategies/cartesian/distance_pythagoras_box_box.hpp [7:8]
+ boost/geometry/strategies/cartesian/distance_pythagoras_point_box.hpp [7:8]
+ boost/geometry/strategies/concepts/distance_concept.hpp [7:8]
+ boost/geometry/strategies/default_comparable_distance_result.hpp [7:8]
+ boost/geometry/strategies/default_distance_result.hpp [7:8]
+ boost/geometry/strategies/default_length_result.hpp [7:8]
+ boost/geometry/strategies/distance.hpp [7:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9d61a324506c4d173913e476c3c6b6fb
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2004 Ralf Mattethat
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/intrusive/splaytree_algorithms.hpp [21:21]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9d7e6c44ce3f4d9421921fa598d30bcd
+BELONGS ya.make
+ License text:
+ Copyright (c) 2007-2011 Hartmut Kaiser
+ Copyright (c) Christopher Diggins 2005
+ Copyright (c) Pablo Aguilar 2005
+ Copyright (c) Kevlin Henney 2001
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/support/detail/hold_any.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9dd6cc82d1321a1d229916f828efdc75
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2003, 2008 Fernando Luis Cacciola Carballal.
+ // Copyright (C) 2014 - 2017 Andrzej Krzemienski.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/optional/optional.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9e52c94c44dd3a954dc775cd9412a692
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/bessel.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9e78e97c56e37398708eef8a5a55ee96
+BELONGS ya.make
+ License text:
+ // Copyright Beman Dawes 2003, 2006, 2010
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/system/api_config.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9eafab1767cf5f9fa3c793e883e1c318
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/utility.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/utility.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9f16b7a4959de78b0a599e95ee75c84e
+BELONGS ya.make
+ License text:
+ // to the right implementation method. Most of the implementation details
+ // are in separate headers and copyright Xiaogang Zhang.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/bessel.hpp [8:9]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9f22f5d5569d36c36ab19ecf517c15c0
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2006 Dan Marsden
+ Copyright (c) 2009-2010 Christopher Schmidt
+ Copyright (c) 2015 Kohei Takahashi
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/algorithm/iteration/detail/fold.hpp [2:5]
+ boost/fusion/algorithm/transformation/detail/preprocessed/zip10.hpp [2:3]
+ boost/fusion/algorithm/transformation/detail/preprocessed/zip20.hpp [2:3]
+ boost/fusion/algorithm/transformation/detail/preprocessed/zip30.hpp [2:3]
+ boost/fusion/algorithm/transformation/detail/preprocessed/zip40.hpp [2:3]
+ boost/fusion/algorithm/transformation/detail/preprocessed/zip50.hpp [2:3]
+ boost/fusion/algorithm/transformation/join.hpp [2:3]
+ boost/fusion/algorithm/transformation/zip.hpp [2:3]
+ boost/fusion/algorithm/transformation/zip.hpp [43:44]
+ boost/fusion/container/deque/convert.hpp [2:3]
+ boost/fusion/container/deque/detail/cpp03/as_deque.hpp [2:3]
+ boost/fusion/container/generation/detail/pp_deque_tie.hpp [2:3]
+ boost/fusion/container/generation/detail/pp_make_deque.hpp [2:3]
+ boost/fusion/container/generation/detail/pp_map_tie.hpp [2:3]
+ boost/fusion/container/generation/pair_tie.hpp [2:3]
+ boost/fusion/sequence/intrinsic/at_key.hpp [2:3]
+ boost/fusion/sequence/intrinsic/swap.hpp [2:3]
+ boost/fusion/sequence/intrinsic/value_at_key.hpp [2:3]
+ boost/fusion/view/detail/strictest_traversal.hpp [2:3]
+ boost/fusion/view/nview.hpp [2:4]
+ boost/fusion/view/zip_view.hpp [2:3]
+ boost/fusion/view/zip_view/detail/advance_impl.hpp [2:3]
+ boost/fusion/view/zip_view/detail/at_impl.hpp [2:3]
+ boost/fusion/view/zip_view/detail/begin_impl.hpp [2:3]
+ boost/fusion/view/zip_view/detail/deref_impl.hpp [2:3]
+ boost/fusion/view/zip_view/detail/distance_impl.hpp [2:3]
+ boost/fusion/view/zip_view/detail/end_impl.hpp [2:3]
+ boost/fusion/view/zip_view/detail/equal_to_impl.hpp [2:3]
+ boost/fusion/view/zip_view/detail/next_impl.hpp [2:3]
+ boost/fusion/view/zip_view/detail/prior_impl.hpp [2:3]
+ boost/fusion/view/zip_view/detail/size_impl.hpp [2:3]
+ boost/fusion/view/zip_view/detail/value_at_impl.hpp [2:3]
+ boost/fusion/view/zip_view/detail/value_of_impl.hpp [2:3]
+ boost/fusion/view/zip_view/zip_view.hpp [2:3]
+ boost/fusion/view/zip_view/zip_view_iterator.hpp [2:3]
+ boost/fusion/view/zip_view/zip_view_iterator_fwd.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9f416aa8f1e6678b0d6d5857d642b969
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/bind/arg.hpp [13:13]
+ boost/bind/make_adaptable.hpp [7:7]
+ boost/bind/placeholders.hpp [13:14]
+ boost/bind/protect.hpp [7:8]
+ boost/current_function.hpp [13:13]
+ boost/detail/lightweight_thread.hpp [12:13]
+ boost/interprocess/detail/os_thread_functions.hpp [15:16]
+ boost/serialization/throw_exception.hpp [12:12]
+ boost/signals2/detail/lwm_nop.hpp [4:5]
+ boost/signals2/detail/lwm_pthreads.hpp [4:5]
+ boost/smart_ptr/detail/lwm_nop.hpp [13:13]
+ boost/smart_ptr/detail/lwm_pthreads.hpp [13:13]
+ boost/throw_exception.hpp [19:20]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9f4f4692c306c5352ba812c34a1cfd7a
+BELONGS ya.make
+ License text:
+ // Copyright 2008 Christophe Henry
+ // henry UNDERSCORE christophe AT hotmail DOT com
+ // This is an extended version of the state machine available in the boost::mpl library
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/msm/active_state_switching_policies.hpp [1:3]
+ boost/msm/back/args.hpp [1:3]
+ boost/msm/back/bind_helpers.hpp [1:3]
+ boost/msm/back/common_types.hpp [1:3]
+ boost/msm/back/copy_policies.hpp [1:3]
+ boost/msm/back/default_compile_policy.hpp [1:3]
+ boost/msm/back/dispatch_table.hpp [1:3]
+ boost/msm/back/favor_compile_time.hpp [1:3]
+ boost/msm/back/fold_to_list.hpp [1:7]
+ boost/msm/back/history_policies.hpp [1:3]
+ boost/msm/back/metafunctions.hpp [1:3]
+ boost/msm/back/mpl_graph_fsm_check.hpp [1:3]
+ boost/msm/back/no_fsm_check.hpp [1:3]
+ boost/msm/back/queue_container_circular.hpp [1:3]
+ boost/msm/back/queue_container_deque.hpp [1:3]
+ boost/msm/back/state_machine.hpp [1:3]
+ boost/msm/back/tools.hpp [1:3]
+ boost/msm/common.hpp [1:3]
+ boost/msm/event_traits.hpp [1:3]
+ boost/msm/front/common_states.hpp [1:3]
+ boost/msm/front/completion_event.hpp [1:3]
+ boost/msm/front/detail/common_states.hpp [1:3]
+ boost/msm/front/detail/row2_helper.hpp [1:3]
+ boost/msm/front/euml/algorithm.hpp [1:3]
+ boost/msm/front/euml/common.hpp [1:3]
+ boost/msm/front/euml/container.hpp [1:3]
+ boost/msm/front/euml/euml.hpp [1:3]
+ boost/msm/front/euml/euml_typeof.hpp [1:3]
+ boost/msm/front/euml/guard_grammar.hpp [1:3]
+ boost/msm/front/euml/iteration.hpp [1:3]
+ boost/msm/front/euml/operator.hpp [1:3]
+ boost/msm/front/euml/querying.hpp [1:3]
+ boost/msm/front/euml/state_grammar.hpp [1:3]
+ boost/msm/front/euml/stl.hpp [1:3]
+ boost/msm/front/euml/stt_grammar.hpp [1:3]
+ boost/msm/front/euml/transformation.hpp [1:3]
+ boost/msm/front/functor_row.hpp [1:3]
+ boost/msm/front/internal_row.hpp [1:3]
+ boost/msm/front/row2.hpp [1:3]
+ boost/msm/front/state_machine_def.hpp [1:3]
+ boost/msm/front/states.hpp [1:3]
+ boost/msm/msm_grammar.hpp [1:3]
+ boost/msm/proto_config.hpp [1:3]
+ boost/msm/row_tags.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9f570a3f9d4cfb2e159acf8ce988271b
+BELONGS ya.make
+ License text:
+ // Copyright 2008 Eric Niebler.
+ // Copyright 2008 David Jenkins.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/xpressive/detail/core/matcher/action_matcher.hpp [4:5]
+ boost/xpressive/detail/core/matcher/attr_matcher.hpp [4:5]
+ boost/xpressive/detail/static/transforms/as_action.hpp [4:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9f5828e268910c36bf70e0636b1a5d36
+BELONGS libs/thread/ya.make ya.make
+ License text:
+ // (C) Copyright Michael Glassford 2004.
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/detail/tss_hooks.hpp [1:3]
+ libs/thread/src/tss_null.cpp [1:4]
+ libs/thread/src/win32/tss_dll.cpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9f8b54cefd3cda620dbb82f001d36a6b
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/accumulators.hpp at line 7, boost/accumulators/accumulators_fwd.hpp at line 6, boost/accumulators/framework/accumulator_base.hpp at line 6, boost/accumulators/framework/accumulator_concept.hpp at line 6, boost/accumulators/framework/accumulator_set.hpp at line 6, boost/accumulators/framework/accumulators/droppable_accumulator.hpp at line 6, boost/accumulators/framework/accumulators/external_accumulator.hpp at line 6, boost/accumulators/framework/accumulators/reference_accumulator.hpp at line 6, boost/accumulators/framework/depends_on.hpp at line 6, boost/accumulators/framework/external.hpp at line 6, boost/accumulators/framework/extractor.hpp at line 6, boost/accumulators/framework/features.hpp at line 6, boost/accumulators/framework/parameters/accumulator.hpp at line 6, boost/accumulators/framework/parameters/sample.hpp at line 6, boost/accumulators/framework/parameters/weight.hpp at line 6, boost/accumulators/framework/parameters/weights.hpp at line 6, boost/accumulators/numeric/functional.hpp at line 6, boost/accumulators/numeric/functional/complex.hpp at line 6, boost/accumulators/numeric/functional/valarray.hpp at line 6, boost/accumulators/numeric/functional/vector.hpp at line 6, boost/accumulators/numeric/functional_fwd.hpp at line 6, boost/accumulators/statistics.hpp at line 7, boost/accumulators/statistics/count.hpp at line 6, boost/accumulators/statistics/error_of.hpp at line 6, boost/accumulators/statistics/error_of_mean.hpp at line 6, boost/accumulators/statistics/max.hpp at line 6, boost/accumulators/statistics/mean.hpp at line 6, boost/accumulators/statistics/min.hpp at line 6, boost/accumulators/statistics/moment.hpp at line 6, boost/accumulators/statistics/parameters/quantile_probability.hpp at line 6, boost/accumulators/statistics/rolling_moment.hpp at line 5, boost/accumulators/statistics/stats.hpp at line 7, boost/accumulators/statistics/sum.hpp at line 6, boost/accumulators/statistics/variates/covariate.hpp at line 6, boost/accumulators/statistics/with_error.hpp at line 6, boost/accumulators/statistics_fwd.hpp at line 6
+ License text:
+ // Copyright 2005 Eric Niebler. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/accumulators/accumulators.hpp [5:7]
+ boost/accumulators/accumulators_fwd.hpp [4:6]
+ boost/accumulators/framework/accumulator_base.hpp [4:6]
+ boost/accumulators/framework/accumulator_concept.hpp [4:6]
+ boost/accumulators/framework/accumulator_set.hpp [4:6]
+ boost/accumulators/framework/accumulators/droppable_accumulator.hpp [4:6]
+ boost/accumulators/framework/accumulators/external_accumulator.hpp [4:6]
+ boost/accumulators/framework/accumulators/reference_accumulator.hpp [4:6]
+ boost/accumulators/framework/depends_on.hpp [4:6]
+ boost/accumulators/framework/external.hpp [4:6]
+ boost/accumulators/framework/extractor.hpp [4:6]
+ boost/accumulators/framework/features.hpp [4:6]
+ boost/accumulators/framework/parameters/accumulator.hpp [4:6]
+ boost/accumulators/framework/parameters/sample.hpp [4:6]
+ boost/accumulators/framework/parameters/weight.hpp [4:6]
+ boost/accumulators/framework/parameters/weights.hpp [4:6]
+ boost/accumulators/numeric/functional.hpp [4:6]
+ boost/accumulators/numeric/functional/complex.hpp [4:6]
+ boost/accumulators/numeric/functional/valarray.hpp [4:6]
+ boost/accumulators/numeric/functional/vector.hpp [4:6]
+ boost/accumulators/numeric/functional_fwd.hpp [4:6]
+ boost/accumulators/statistics.hpp [5:7]
+ boost/accumulators/statistics/count.hpp [4:6]
+ boost/accumulators/statistics/error_of.hpp [4:6]
+ boost/accumulators/statistics/error_of_mean.hpp [4:6]
+ boost/accumulators/statistics/max.hpp [4:6]
+ boost/accumulators/statistics/mean.hpp [4:6]
+ boost/accumulators/statistics/min.hpp [4:6]
+ boost/accumulators/statistics/moment.hpp [4:6]
+ boost/accumulators/statistics/parameters/quantile_probability.hpp [4:6]
+ boost/accumulators/statistics/rolling_moment.hpp [3:6]
+ boost/accumulators/statistics/stats.hpp [5:7]
+ boost/accumulators/statistics/sum.hpp [4:6]
+ boost/accumulators/statistics/variates/covariate.hpp [4:6]
+ boost/accumulators/statistics/with_error.hpp [4:6]
+ boost/accumulators/statistics_fwd.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9fbe755e4325767774b2c5b52827f08b
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/gcc.hpp [1:9]
+ boost/config/detail/select_stdlib_config.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9fc32687f4192402f3f9935c21eb7372
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2005-2006 Douglas Gregor <doug.gregor@gmail.com>.
+ // Copyright (C) 2004 The Trustees of Indiana University
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpi/collectives/reduce.hpp [1:2]
+ boost/mpi/collectives/scan.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9fe58de5a87c382ac6ec5e085c48cd94
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
+ // Copyright 2004-2005 Peter Dimov
+ // Copyright 2006 Ion Gaztanaga
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/interprocess/smart_ptr/detail/sp_counted_impl.hpp [16:18]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9fe6008887730559afc3f55d0f20c97d
+BELONGS ya.make
+ License text:
+ * Copyright 2002 Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion
+ * Copyright 2005 Guillaume Melquiond
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/interval/detail/ppc_rounding_control.hpp [3:5]
+ boost/numeric/interval/hw_rounding.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL a00ef2913f053c40e19dbb04a67f672d
+BELONGS ya.make
+ License text:
+ // Copyright Beman Dawes 2002-2005, 2009
+ // Copyright Vladimir Prus 2002
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/filesystem/path.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL a04d60693ae88d69afc8ccff61832efc
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/tuple/insert.hpp at line 5, boost/preprocessor/tuple/pop_back.hpp at line 5, boost/preprocessor/tuple/pop_front.hpp at line 5, boost/preprocessor/tuple/push_back.hpp at line 5, boost/preprocessor/tuple/push_front.hpp at line 5, boost/preprocessor/tuple/remove.hpp at line 5, boost/preprocessor/tuple/replace.hpp at line 5
+ License text:
+ \# * (C) Copyright Edward Diener 2013.
+ \# * Distributed under the Boost Software License, Version 1.0. (See
+ \# * accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/preprocessor/tuple/insert.hpp [3:5]
+ boost/preprocessor/tuple/pop_back.hpp [3:5]
+ boost/preprocessor/tuple/pop_front.hpp [3:5]
+ boost/preprocessor/tuple/push_back.hpp [3:5]
+ boost/preprocessor/tuple/push_front.hpp [3:5]
+ boost/preprocessor/tuple/remove.hpp [3:5]
+ boost/preprocessor/tuple/replace.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL a08e41a239cdee1f96eadc8647e90ab7
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/hardware.h at line 5, boost/predef/hardware/simd.h at line 5, boost/predef/hardware/simd/arm.h at line 5, boost/predef/hardware/simd/arm/versions.h at line 5, boost/predef/hardware/simd/ppc.h at line 5, boost/predef/hardware/simd/ppc/versions.h at line 5, boost/predef/hardware/simd/x86.h at line 5, boost/predef/hardware/simd/x86/versions.h at line 5, boost/predef/hardware/simd/x86_amd.h at line 5, boost/predef/hardware/simd/x86_amd/versions.h at line 5
+ License text:
+ Copyright Charly Chevalier 2015
+ Copyright Joel Falcou 2015
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/predef/hardware.h [2:5]
+ boost/predef/hardware/simd.h [2:5]
+ boost/predef/hardware/simd/arm.h [2:5]
+ boost/predef/hardware/simd/arm/versions.h [2:5]
+ boost/predef/hardware/simd/ppc.h [2:5]
+ boost/predef/hardware/simd/ppc/versions.h [2:5]
+ boost/predef/hardware/simd/x86.h [2:5]
+ boost/predef/hardware/simd/x86/versions.h [2:5]
+ boost/predef/hardware/simd/x86_amd.h [2:5]
+ boost/predef/hardware/simd/x86_amd/versions.h [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL a09b806764becef5e188111e9cde59b8
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2004-2008 The Trustees of Indiana University.
+ // Copyright (C) 2007 Douglas Gregor
+ // Copyright (C) 2007 Matthias Troyer <troyer@boost-consulting.com>
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/distributed/detail/mpi_process_group.ipp [3:5]
+ boost/graph/distributed/mpi_process_group.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL a0c5300b9bdea05390915ba7a0320755
+BELONGS ya.make
+ License text:
+ /* Copyright (c) 2004-2005 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/date_time/date_facet.hpp [4:6]
+ boost/date_time/format_date_parser.hpp [5:7]
+ boost/date_time/gregorian/conversion.hpp [4:6]
+ boost/date_time/gregorian/greg_serialize.hpp [4:6]
+ boost/date_time/gregorian/gregorian_io.hpp [4:6]
+ boost/date_time/posix_time/posix_time_io.hpp [4:6]
+ boost/date_time/posix_time/time_serialize.hpp [4:6]
+ boost/date_time/string_parse_tree.hpp [4:6]
+ boost/date_time/time_facet.hpp [5:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL a0cd3454bb19643561108cce72a3dc59
+BELONGS libs/thread/ya.make ya.make
+ License text:
+ // Copyright (C) 2001-2003
+ // William E. Kempf
+ // Copyright (C) 2007-9 Anthony Williams
+ // (C) Copyright 2011-2012 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/detail/move.hpp [4:5]
+ boost/thread/detail/thread.hpp [6:7]
+ boost/thread/exceptions.hpp [1:4]
+ boost/thread/lock_algorithms.hpp [4:5]
+ boost/thread/lock_guard.hpp [4:5]
+ boost/thread/lock_options.hpp [4:5]
+ boost/thread/lock_types.hpp [4:5]
+ boost/thread/lockable_traits.hpp [4:5]
+ boost/thread/locks.hpp [4:5]
+ boost/thread/pthread/condition_variable.hpp [6:7]
+ boost/thread/pthread/condition_variable_fwd.hpp [6:7]
+ boost/thread/pthread/once.hpp [6:7]
+ boost/thread/pthread/recursive_mutex.hpp [3:6]
+ boost/thread/pthread/thread_data.hpp [6:7]
+ boost/thread/shared_mutex.hpp [6:7]
+ boost/thread/win32/basic_timed_mutex.hpp [6:7]
+ boost/thread/win32/condition_variable.hpp [6:7]
+ boost/thread/win32/mfc_thread_init.hpp [6:7]
+ boost/thread/win32/mutex.hpp [3:6]
+ boost/thread/win32/thread_data.hpp [6:7]
+ libs/thread/src/pthread/thread.cpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL a0cdf8b16219a2c9136fbbbed1e38766
+BELONGS ya.make
+ License text:
+ // Copyright 2011 Steven Watanabe
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_erasure/any.hpp [3:3]
+ boost/type_erasure/any_cast.hpp [3:3]
+ boost/type_erasure/binding.hpp [3:3]
+ boost/type_erasure/binding_of.hpp [3:3]
+ boost/type_erasure/builtin.hpp [3:3]
+ boost/type_erasure/call.hpp [3:3]
+ boost/type_erasure/callable.hpp [3:3]
+ boost/type_erasure/check_match.hpp [3:3]
+ boost/type_erasure/concept_interface.hpp [3:3]
+ boost/type_erasure/concept_of.hpp [3:3]
+ boost/type_erasure/config.hpp [3:3]
+ boost/type_erasure/constructible.hpp [3:3]
+ boost/type_erasure/deduced.hpp [3:3]
+ boost/type_erasure/derived.hpp [3:3]
+ boost/type_erasure/detail/access.hpp [3:3]
+ boost/type_erasure/detail/adapt_to_vtable.hpp [3:3]
+ boost/type_erasure/detail/any_base.hpp [3:3]
+ boost/type_erasure/detail/construct.hpp [3:3]
+ boost/type_erasure/detail/extract_concept.hpp [3:3]
+ boost/type_erasure/detail/get_placeholders.hpp [3:3]
+ boost/type_erasure/detail/normalize.hpp [3:3]
+ boost/type_erasure/detail/normalize_deduced.hpp [3:3]
+ boost/type_erasure/detail/rebind_placeholders.hpp [3:3]
+ boost/type_erasure/detail/storage.hpp [3:3]
+ boost/type_erasure/detail/vtable.hpp [3:3]
+ boost/type_erasure/is_placeholder.hpp [3:3]
+ boost/type_erasure/iterator.hpp [3:3]
+ boost/type_erasure/operators.hpp [3:3]
+ boost/type_erasure/param.hpp [3:3]
+ boost/type_erasure/placeholder.hpp [3:3]
+ boost/type_erasure/placeholder_of.hpp [3:3]
+ boost/type_erasure/rebind_any.hpp [3:3]
+ boost/type_erasure/relaxed.hpp [3:3]
+ boost/type_erasure/same_type.hpp [3:3]
+ boost/type_erasure/static_binding.hpp [3:3]
+ boost/type_erasure/typeid_of.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL a0e20da7cdeea7e16b12e33f7083427b
+BELONGS ya.make
+ License text:
+ Copyright (c) 2014 Jamboree
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/include/flatten.hpp [2:2]
+ boost/fusion/include/flatten_view.hpp [2:2]
+ boost/spirit/home/x3/support/utility/is_callable.hpp [2:2]
+ boost/spirit/home/x3/support/utility/unrefcv.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL a103bfee1637c9cc67288e4038d76892
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2003, Fernando Luis Cacciola Carballal.
+ // Copyright (C) 2014, 2015 Andrzej Krzemienski.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/none.hpp [1:2]
+ boost/none_t.hpp [1:2]
+ boost/optional.hpp [1:1]
+ boost/utility/compare_pointees.hpp [1:1]
+ boost/utility/detail/in_place_factory_prefix.hpp [1:2]
+ boost/utility/detail/in_place_factory_suffix.hpp [1:2]
+ boost/utility/in_place_factory.hpp [1:2]
+ boost/utility/typed_in_place_factory.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL a103e4c3ebf84b433d6fa1717f50fe56
+BELONGS ya.make
+ License text:
+ //! Copyright (c) 2011
+ //! Brandon Kohn
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/conversion/numeric_cast_traits.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL a1556c4fb01c7719c0853a3cc659522f
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2013-2017 Vinnie Falco (vinnie dot falco at gmail dot com)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/beast.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL a161d119816677d97a23d4581bd2ddec
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2009
+ // Gunter Winkler
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/ublas/experimental/sparse_view.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL a16207ab3c7903af5e26c274ec5b9d4d
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
+ // Copyright (c) 2009 Steven Watanabe
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/bind/protect.hpp [7:8]
+ boost/lambda/detail/suppress_unused.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL a16d2d9333074214b789369553ae6d4b
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/same_traits.hpp at line 3
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_traits/same_traits.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL a183e113b4eee36273a5dea45d9133c3
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2014 Joel de Guzman
+ Copyright (c) 2001-2011 Hartmut Kaiser
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/x3/auxiliary.hpp [2:3]
+ boost/spirit/home/x3/auxiliary/any_parser.hpp [2:3]
+ boost/spirit/home/x3/auxiliary/attr.hpp [2:4]
+ boost/spirit/home/x3/auxiliary/eoi.hpp [2:3]
+ boost/spirit/home/x3/auxiliary/eol.hpp [2:3]
+ boost/spirit/home/x3/auxiliary/eps.hpp [2:2]
+ boost/spirit/home/x3/auxiliary/guard.hpp [2:2]
+ boost/spirit/home/x3/char.hpp [2:2]
+ boost/spirit/home/x3/char/any_char.hpp [2:2]
+ boost/spirit/home/x3/char/char.hpp [2:2]
+ boost/spirit/home/x3/char/char_class.hpp [2:2]
+ boost/spirit/home/x3/char/char_class_tags.hpp [2:2]
+ boost/spirit/home/x3/char/char_parser.hpp [2:2]
+ boost/spirit/home/x3/char/char_set.hpp [2:2]
+ boost/spirit/home/x3/char/detail/cast_char.hpp [2:3]
+ boost/spirit/home/x3/char/literal_char.hpp [2:2]
+ boost/spirit/home/x3/char/negated_char_parser.hpp [2:2]
+ boost/spirit/home/x3/char/unicode.hpp [2:2]
+ boost/spirit/home/x3/core.hpp [2:2]
+ boost/spirit/home/x3/core/call.hpp [2:2]
+ boost/spirit/home/x3/core/detail/parse_into_container.hpp [2:2]
+ boost/spirit/home/x3/core/parse.hpp [2:2]
+ boost/spirit/home/x3/core/parser.hpp [2:3]
+ boost/spirit/home/x3/core/proxy.hpp [2:2]
+ boost/spirit/home/x3/core/skip_over.hpp [2:2]
+ boost/spirit/home/x3/directive/expect.hpp [2:2]
+ boost/spirit/home/x3/directive/lexeme.hpp [2:2]
+ boost/spirit/home/x3/directive/no_skip.hpp [2:4]
+ boost/spirit/home/x3/directive/omit.hpp [2:2]
+ boost/spirit/home/x3/directive/skip.hpp [2:3]
+ boost/spirit/home/x3/nonterminal.hpp [2:2]
+ boost/spirit/home/x3/nonterminal/debug_handler_state.hpp [2:2]
+ boost/spirit/home/x3/nonterminal/detail/rule.hpp [2:2]
+ boost/spirit/home/x3/nonterminal/detail/transform_attribute.hpp [2:3]
+ boost/spirit/home/x3/nonterminal/rule.hpp [2:2]
+ boost/spirit/home/x3/nonterminal/simple_trace.hpp [2:3]
+ boost/spirit/home/x3/numeric.hpp [2:2]
+ boost/spirit/home/x3/numeric/int.hpp [2:2]
+ boost/spirit/home/x3/numeric/real.hpp [2:2]
+ boost/spirit/home/x3/numeric/real_policies.hpp [2:3]
+ boost/spirit/home/x3/numeric/uint.hpp [2:3]
+ boost/spirit/home/x3/operator.hpp [2:2]
+ boost/spirit/home/x3/operator/alternative.hpp [2:2]
+ boost/spirit/home/x3/operator/and_predicate.hpp [2:2]
+ boost/spirit/home/x3/operator/detail/alternative.hpp [2:2]
+ boost/spirit/home/x3/operator/detail/sequence.hpp [2:2]
+ boost/spirit/home/x3/operator/difference.hpp [2:2]
+ boost/spirit/home/x3/operator/kleene.hpp [2:3]
+ boost/spirit/home/x3/operator/list.hpp [2:3]
+ boost/spirit/home/x3/operator/not_predicate.hpp [2:2]
+ boost/spirit/home/x3/operator/optional.hpp [2:3]
+ boost/spirit/home/x3/operator/plus.hpp [2:3]
+ boost/spirit/home/x3/operator/sequence.hpp [2:2]
+ boost/spirit/home/x3/string.hpp [2:2]
+ boost/spirit/home/x3/string/detail/no_case_string_parse.hpp [2:2]
+ boost/spirit/home/x3/string/detail/string_parse.hpp [2:2]
+ boost/spirit/home/x3/string/detail/tst.hpp [2:2]
+ boost/spirit/home/x3/string/literal_string.hpp [2:2]
+ boost/spirit/home/x3/string/symbols.hpp [2:3]
+ boost/spirit/home/x3/string/tst.hpp [2:2]
+ boost/spirit/home/x3/string/tst_map.hpp [2:2]
+ boost/spirit/home/x3/support/ast/variant.hpp [2:2]
+ boost/spirit/home/x3/support/no_case.hpp [2:2]
+ boost/spirit/home/x3/support/numeric_utils/detail/extract_int.hpp [2:6]
+ boost/spirit/home/x3/support/numeric_utils/extract_int.hpp [2:3]
+ boost/spirit/home/x3/support/numeric_utils/extract_real.hpp [2:4]
+ boost/spirit/home/x3/support/numeric_utils/pow10.hpp [2:4]
+ boost/spirit/home/x3/support/numeric_utils/sign.hpp [2:4]
+ boost/spirit/home/x3/support/subcontext.hpp [2:4]
+ boost/spirit/home/x3/support/traits/attribute_of.hpp [2:4]
+ boost/spirit/home/x3/support/traits/container_traits.hpp [2:4]
+ boost/spirit/home/x3/support/traits/has_attribute.hpp [2:4]
+ boost/spirit/home/x3/support/traits/is_parser.hpp [2:3]
+ boost/spirit/home/x3/support/traits/make_attribute.hpp [2:4]
+ boost/spirit/home/x3/support/traits/move_to.hpp [2:4]
+ boost/spirit/home/x3/support/traits/optional_traits.hpp [2:4]
+ boost/spirit/home/x3/support/traits/print_attribute.hpp [2:3]
+ boost/spirit/home/x3/support/traits/print_token.hpp [2:3]
+ boost/spirit/home/x3/support/traits/string_traits.hpp [2:4]
+ boost/spirit/home/x3/support/traits/transform_attribute.hpp [2:4]
+ boost/spirit/home/x3/support/traits/tuple_traits.hpp [2:2]
+ boost/spirit/home/x3/support/traits/value_traits.hpp [2:4]
+ boost/spirit/home/x3/support/unused.hpp [2:3]
+ boost/spirit/home/x3/support/utility/sfinae.hpp [2:3]
+ boost/spirit/home/x3/support/utility/utf8.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL a1b12dcef6e1643e121684b10b24a56c
+BELONGS ya.make
+ License text:
+ Copyright (c) 2012 Kohei Takahashi
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/adapted/boost_tuple/mpl/clear.hpp [2:2]
+ boost/fusion/adapted/std_tuple/mpl/clear.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL a25eff9ab0b3a407f0a3f23d36b9b9a8
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2006.
+ // Copyright Paul A. Bristow 2006, 2012, 2017.
+ // Copyright Thomas Mang 2012.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/distributions/students_t.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL a267d25ab38b694607444c96c52b7363
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/algorithm/adjacent_find.hpp at line 3, boost/range/algorithm/binary_search.hpp at line 3, boost/range/algorithm/copy.hpp at line 3, boost/range/algorithm/copy_backward.hpp at line 3, boost/range/algorithm/count.hpp at line 3, boost/range/algorithm/count_if.hpp at line 3, boost/range/algorithm/equal.hpp at line 5, boost/range/algorithm/equal_range.hpp at line 3, boost/range/algorithm/fill.hpp at line 3, boost/range/algorithm/fill_n.hpp at line 3, boost/range/algorithm/find.hpp at line 3, boost/range/algorithm/find_end.hpp at line 3, boost/range/algorithm/find_first_of.hpp at line 3, boost/range/algorithm/find_if.hpp at line 3, boost/range/algorithm/for_each.hpp at line 3, boost/range/algorithm/generate.hpp at line 3, boost/range/algorithm/heap_algorithm.hpp at line 3, boost/range/algorithm/inplace_merge.hpp at line 3, boost/range/algorithm/lexicographical_compare.hpp at line 3, boost/range/algorithm/lower_bound.hpp at line 3, boost/range/algorithm/max_element.hpp at line 3, boost/range/algorithm/merge.hpp at line 3, boost/range/algorithm/min_element.hpp at line 3, boost/range/algorithm/mismatch.hpp at line 3, boost/range/algorithm/nth_element.hpp at line 3, boost/range/algorithm/partial_sort.hpp at line 3, boost/range/algorithm/partial_sort_copy.hpp at line 3, boost/range/algorithm/partition.hpp at line 3, boost/range/algorithm/permutation.hpp at line 3, boost/range/algorithm/random_shuffle.hpp at line 3, boost/range/algorithm/remove.hpp at line 3, boost/range/algorithm/remove_copy.hpp at line 3, boost/range/algorithm/remove_copy_if.hpp at line 3, boost/range/algorithm/remove_if.hpp at line 3, boost/range/algorithm/replace.hpp at line 3, boost/range/algorithm/replace_copy.hpp at line 3, boost/range/algorithm/replace_copy_if.hpp at line 3, boost/range/algorithm/replace_if.hpp at line 3, boost/range/algorithm/reverse.hpp at line 3, boost/range/algorithm/reverse_copy.hpp at line 3, boost/range/algorithm/rotate.hpp at line 3, boost/range/algorithm/rotate_copy.hpp at line 3, boost/range/algorithm/search.hpp at line 3, boost/range/algorithm/search_n.hpp at line 3, boost/range/algorithm/set_algorithm.hpp at line 3, boost/range/algorithm/sort.hpp at line 3, boost/range/algorithm/stable_partition.hpp at line 3, boost/range/algorithm/stable_sort.hpp at line 3, boost/range/algorithm/swap_ranges.hpp at line 3, boost/range/algorithm/transform.hpp at line 3, boost/range/algorithm/unique.hpp at line 3, boost/range/algorithm/unique_copy.hpp at line 3, boost/range/algorithm/upper_bound.hpp at line 3, boost/range/algorithm_ext/copy_n.hpp at line 3, boost/range/algorithm_ext/erase.hpp at line 5, boost/range/algorithm_ext/for_each.hpp at line 5, boost/range/algorithm_ext/insert.hpp at line 5, boost/range/algorithm_ext/iota.hpp at line 5, boost/range/algorithm_ext/is_sorted.hpp at line 3, boost/range/algorithm_ext/overwrite.hpp at line 5, boost/range/algorithm_ext/push_back.hpp at line 5, boost/range/algorithm_ext/push_front.hpp at line 5, boost/range/concepts.hpp at line 5, boost/range/detail/demote_iterator_traversal_tag.hpp at line 5, boost/range/detail/join_iterator.hpp at line 5, boost/range/detail/misc_concept.hpp at line 5, boost/range/detail/range_return.hpp at line 3, boost/range/iterator_range.hpp at line 5, boost/range/iterator_range_io.hpp at line 5, boost/range/join.hpp at line 5, boost/range/sub_range.hpp at line 5
+ License text:
+ // Copyright Neil Groves 2009. Use, modification and distribution
+ // are subject to the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/range/algorithm/adjacent_find.hpp [1:3]
+ boost/range/algorithm/binary_search.hpp [1:3]
+ boost/range/algorithm/copy.hpp [1:3]
+ boost/range/algorithm/copy_backward.hpp [1:3]
+ boost/range/algorithm/count.hpp [1:3]
+ boost/range/algorithm/count_if.hpp [1:3]
+ boost/range/algorithm/equal.hpp [3:5]
+ boost/range/algorithm/equal_range.hpp [1:3]
+ boost/range/algorithm/fill.hpp [1:3]
+ boost/range/algorithm/fill_n.hpp [1:3]
+ boost/range/algorithm/find.hpp [1:3]
+ boost/range/algorithm/find_end.hpp [1:3]
+ boost/range/algorithm/find_first_of.hpp [1:3]
+ boost/range/algorithm/find_if.hpp [1:3]
+ boost/range/algorithm/for_each.hpp [1:3]
+ boost/range/algorithm/generate.hpp [1:3]
+ boost/range/algorithm/heap_algorithm.hpp [1:3]
+ boost/range/algorithm/inplace_merge.hpp [1:3]
+ boost/range/algorithm/lexicographical_compare.hpp [1:3]
+ boost/range/algorithm/lower_bound.hpp [1:3]
+ boost/range/algorithm/max_element.hpp [1:3]
+ boost/range/algorithm/merge.hpp [1:3]
+ boost/range/algorithm/min_element.hpp [1:3]
+ boost/range/algorithm/mismatch.hpp [1:3]
+ boost/range/algorithm/nth_element.hpp [1:3]
+ boost/range/algorithm/partial_sort.hpp [1:3]
+ boost/range/algorithm/partial_sort_copy.hpp [1:3]
+ boost/range/algorithm/partition.hpp [1:3]
+ boost/range/algorithm/permutation.hpp [1:3]
+ boost/range/algorithm/random_shuffle.hpp [1:3]
+ boost/range/algorithm/remove.hpp [1:3]
+ boost/range/algorithm/remove_copy.hpp [1:3]
+ boost/range/algorithm/remove_copy_if.hpp [1:3]
+ boost/range/algorithm/remove_if.hpp [1:3]
+ boost/range/algorithm/replace.hpp [1:3]
+ boost/range/algorithm/replace_copy.hpp [1:3]
+ boost/range/algorithm/replace_copy_if.hpp [1:3]
+ boost/range/algorithm/replace_if.hpp [1:3]
+ boost/range/algorithm/reverse.hpp [1:3]
+ boost/range/algorithm/reverse_copy.hpp [1:3]
+ boost/range/algorithm/rotate.hpp [1:3]
+ boost/range/algorithm/rotate_copy.hpp [1:3]
+ boost/range/algorithm/search.hpp [1:3]
+ boost/range/algorithm/search_n.hpp [1:3]
+ boost/range/algorithm/set_algorithm.hpp [1:3]
+ boost/range/algorithm/sort.hpp [1:3]
+ boost/range/algorithm/stable_partition.hpp [1:3]
+ boost/range/algorithm/stable_sort.hpp [1:3]
+ boost/range/algorithm/swap_ranges.hpp [1:3]
+ boost/range/algorithm/transform.hpp [1:3]
+ boost/range/algorithm/unique.hpp [1:3]
+ boost/range/algorithm/unique_copy.hpp [1:3]
+ boost/range/algorithm/upper_bound.hpp [1:3]
+ boost/range/algorithm_ext/copy_n.hpp [1:3]
+ boost/range/algorithm_ext/erase.hpp [3:5]
+ boost/range/algorithm_ext/for_each.hpp [3:5]
+ boost/range/algorithm_ext/insert.hpp [3:5]
+ boost/range/algorithm_ext/iota.hpp [3:5]
+ boost/range/algorithm_ext/is_sorted.hpp [1:4]
+ boost/range/algorithm_ext/overwrite.hpp [3:5]
+ boost/range/algorithm_ext/push_back.hpp [3:5]
+ boost/range/algorithm_ext/push_front.hpp [3:5]
+ boost/range/concepts.hpp [3:5]
+ boost/range/detail/demote_iterator_traversal_tag.hpp [3:5]
+ boost/range/detail/join_iterator.hpp [3:5]
+ boost/range/detail/misc_concept.hpp [3:5]
+ boost/range/detail/range_return.hpp [1:3]
+ boost/range/iterator_range.hpp [3:5]
+ boost/range/iterator_range_io.hpp [3:5]
+ boost/range/join.hpp [3:5]
+ boost/range/sub_range.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL a29c00fe5b0061523a733babce737eee
+BELONGS ya.make
+ License text:
+ Copyright (c) 2007-2011: Joachim Faulhaber
+ Copyright (c) 1999-2006: Cortex Software GmbH, Kantstrasse 57, Berlin
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/icl/interval_base_set.hpp [2:3]
+ boost/icl/map.hpp [2:2]
+ boost/icl/set.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL a2ef13fa73a7e85b38cf6bc4b10345aa
+BELONGS ya.make
+ License text:
+ // (C) Copyright 2007-10 Anthony Williams
+ // (C) Copyright 2011-2012 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/pthread/condition_variable.hpp [6:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL a3578986b89a9e4f4944d6e06bd16604
+BELONGS ya.make
+ License text:
+ // Copyright 2011-2012 Steven Watanabe
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_erasure/exception.hpp [3:3]
+ boost/type_erasure/require_match.hpp [3:3]
+ boost/type_erasure/tuple.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL a35b9ab4dc46c980de71e273c1106498
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2003 Gerald I. Evenden
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/srs/projections/proj/sterea.hpp [26:26]
+
+KEEP COPYRIGHT_SERVICE_LABEL a3aea5c3abd2998ef419f4cfd468161c
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2011 Júlio Hoffimann.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpi/collectives/gatherv.hpp [1:1]
+ boost/mpi/collectives/scatterv.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL a3bf073a03ecfa244ec22a3a4fddf10d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/detail/remove_extent.hpp at line 5
+ License text:
+ // Copyright Jonathan Turkanis 2005. Use, modification and
+ // distribution is subject to the Boost Software License, Version
+ // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/range/detail/remove_extent.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL a3ceba6f7698685b264af6347b8fb8c7
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2007 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/detail/sp_counted_base_sync.hpp [12:12]
+
+KEEP COPYRIGHT_SERVICE_LABEL a4132e16f1452f080d8f88a3ca863143
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/io/wkt/write.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL a41ad2da0912020d91a14b82ad75b7a9
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
+ // Copyright (c) 2002 Lars Gullik Bjønnes <larsbj@lyx.org>
+ // Copyright 2003-2005 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/detail/atomic_count_gcc.hpp [11:13]
+
+KEEP COPYRIGHT_SERVICE_LABEL a427df9ff905dc0a2071778ea1acc982
+BELONGS ya.make
+ License text:
+ Copyright (c) 2007-2012: Joachim Faulhaber
+ Copyright (c) 1999-2006: Cortex Software GmbH, Kantstrasse 57, Berlin
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/icl/detail/notate.hpp [4:4]
+ boost/icl/detail/set_algo.hpp [4:4]
+ boost/icl/interval_base_map.hpp [2:3]
+ boost/icl/interval_base_set.hpp [2:3]
+ boost/icl/interval_set.hpp [2:3]
+ boost/icl/split_interval_map.hpp [2:3]
+ boost/icl/split_interval_set.hpp [2:3]
+ boost/icl/type_traits/to_string.hpp [4:4]
+ boost/icl/type_traits/value_size.hpp [4:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL a4d2f494b445bbe883a6e73ea92be0a4
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/area.hpp [3:6]
+ boost/geometry/algorithms/detail/buffer/buffered_piece_collection.hpp [3:4]
+ boost/geometry/algorithms/detail/buffer/get_piece_turns.hpp [3:4]
+ boost/geometry/algorithms/detail/buffer/turn_in_piece_visitor.hpp [3:4]
+ boost/geometry/algorithms/detail/disjoint/multipoint_geometry.hpp [3:4]
+ boost/geometry/algorithms/detail/has_self_intersections.hpp [3:4]
+ boost/geometry/algorithms/detail/is_valid/polygon.hpp [3:3]
+ boost/geometry/algorithms/detail/is_valid/ring.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/add_rings.hpp [3:4]
+ boost/geometry/algorithms/detail/overlay/assign_parents.hpp [3:4]
+ boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp [3:4]
+ boost/geometry/algorithms/detail/overlay/follow.hpp [3:4]
+ boost/geometry/algorithms/detail/overlay/follow_linear_linear.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/get_turn_info.hpp [3:4]
+ boost/geometry/algorithms/detail/overlay/get_turn_info_la.hpp [3:4]
+ boost/geometry/algorithms/detail/overlay/get_turn_info_ll.hpp [3:4]
+ boost/geometry/algorithms/detail/overlay/handle_colocations.hpp [3:4]
+ boost/geometry/algorithms/detail/overlay/handle_self_turns.hpp [3:4]
+ boost/geometry/algorithms/detail/overlay/is_self_turn.hpp [3:4]
+ boost/geometry/algorithms/detail/overlay/pointlike_linear.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/self_turn_points.hpp [3:4]
+ boost/geometry/algorithms/detail/overlay/sort_by_side.hpp [3:4]
+ boost/geometry/algorithms/detail/partition.hpp [3:4]
+ boost/geometry/algorithms/detail/relate/result.hpp [3:4]
+ boost/geometry/algorithms/detail/throw_on_empty_input.hpp [3:6]
+ boost/geometry/index/detail/algorithms/nth_element.hpp [3:3]
+ boost/geometry/io/wkt/read.hpp [3:6]
+ boost/geometry/strategies/area.hpp [3:6]
+ boost/geometry/strategies/area_result.hpp [3:3]
+ boost/geometry/strategies/cartesian/area.hpp [3:6]
+ boost/geometry/strategies/cartesian/area_surveyor.hpp [3:6]
+ boost/geometry/strategies/cartesian/centroid_average.hpp [3:6]
+ boost/geometry/strategies/concepts/area_concept.hpp [3:6]
+ boost/geometry/strategies/default_area_result.hpp [3:6]
+ boost/geometry/strategies/geographic/area.hpp [3:3]
+ boost/geometry/strategies/geographic/intersection.hpp [3:3]
+ boost/geometry/strategies/spherical/area.hpp [3:3]
+ boost/geometry/strategies/spherical/get_radius.hpp [3:3]
+ boost/geometry/strategies/spherical/intersection.hpp [3:3]
+ boost/geometry/strategies/strategies.hpp [3:6]
+ boost/geometry/util/normalize_spheroidal_coordinates.hpp [3:3]
+ boost/geometry/util/select_sequence_element.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL a4e48d0c3c15487e193bc519c6d274b8
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2014 Roshan <thisisroshansmail@gmail.com>
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/compute/algorithm/detail/balanced_path.hpp [2:2]
+ boost/compute/algorithm/detail/binary_find.hpp [2:2]
+ boost/compute/algorithm/detail/compact.hpp [2:2]
+ boost/compute/algorithm/detail/merge_path.hpp [2:2]
+ boost/compute/algorithm/detail/merge_with_merge_path.hpp [2:2]
+ boost/compute/algorithm/detail/search_all.hpp [2:2]
+ boost/compute/algorithm/find_end.hpp [2:2]
+ boost/compute/algorithm/includes.hpp [2:2]
+ boost/compute/algorithm/is_permutation.hpp [2:2]
+ boost/compute/algorithm/next_permutation.hpp [2:2]
+ boost/compute/algorithm/partition_point.hpp [2:2]
+ boost/compute/algorithm/prev_permutation.hpp [2:2]
+ boost/compute/algorithm/rotate.hpp [2:2]
+ boost/compute/algorithm/rotate_copy.hpp [2:2]
+ boost/compute/algorithm/search.hpp [2:2]
+ boost/compute/algorithm/search_n.hpp [2:2]
+ boost/compute/algorithm/set_difference.hpp [2:2]
+ boost/compute/algorithm/set_intersection.hpp [2:2]
+ boost/compute/algorithm/set_symmetric_difference.hpp [2:2]
+ boost/compute/algorithm/set_union.hpp [2:2]
+ boost/compute/algorithm/stable_partition.hpp [2:2]
+ boost/compute/algorithm/unique.hpp [2:2]
+ boost/compute/algorithm/unique_copy.hpp [2:2]
+ boost/compute/random/bernoulli_distribution.hpp [2:2]
+ boost/compute/random/discrete_distribution.hpp [2:2]
+ boost/compute/random/linear_congruential_engine.hpp [2:2]
+ boost/compute/random/uniform_int_distribution.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL a51c313c96c40df66faddb32c40c8845
+BELONGS ya.make
+ License text:
+ Copyright (c) 1998-2003 Joel de Guzman
+ Copyright (c) 2001 Daniel Nuffer
+ Copyright (c) 2002 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/core/composite/alternative.hpp [2:5]
+ boost/spirit/home/classic/core/composite/difference.hpp [2:5]
+ boost/spirit/home/classic/core/composite/exclusive_or.hpp [2:5]
+ boost/spirit/home/classic/core/composite/impl/alternative.ipp [2:5]
+ boost/spirit/home/classic/core/composite/impl/difference.ipp [2:5]
+ boost/spirit/home/classic/core/composite/impl/directives.ipp [2:6]
+ boost/spirit/home/classic/core/composite/impl/exclusive_or.ipp [2:5]
+ boost/spirit/home/classic/core/composite/impl/intersection.ipp [2:5]
+ boost/spirit/home/classic/core/composite/impl/kleene_star.ipp [2:5]
+ boost/spirit/home/classic/core/composite/impl/list.ipp [2:5]
+ boost/spirit/home/classic/core/composite/impl/optional.ipp [2:5]
+ boost/spirit/home/classic/core/composite/impl/positive.ipp [2:5]
+ boost/spirit/home/classic/core/composite/impl/sequence.ipp [2:5]
+ boost/spirit/home/classic/core/composite/impl/sequential_and.ipp [2:5]
+ boost/spirit/home/classic/core/composite/impl/sequential_or.ipp [2:5]
+ boost/spirit/home/classic/core/composite/intersection.hpp [2:5]
+ boost/spirit/home/classic/core/composite/kleene_star.hpp [2:5]
+ boost/spirit/home/classic/core/composite/list.hpp [2:5]
+ boost/spirit/home/classic/core/composite/operators.hpp [2:5]
+ boost/spirit/home/classic/core/composite/optional.hpp [2:5]
+ boost/spirit/home/classic/core/composite/positive.hpp [2:5]
+ boost/spirit/home/classic/core/composite/sequence.hpp [2:5]
+ boost/spirit/home/classic/core/composite/sequential_and.hpp [2:5]
+ boost/spirit/home/classic/core/composite/sequential_or.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL a53a4399b67c24bd1f890aba101e2930
+BELONGS ya.make
+ License text:
+ // Copyright 2008 Howard Hinnant
+ // Copyright 2008 Beman Dawes
+ // Copyright 2009-2011 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/chrono/duration.hpp [3:5]
+ boost/chrono/system_clocks.hpp [3:5]
+ boost/chrono/time_point.hpp [3:5]
+ boost/ratio/detail/overflow_helpers.hpp [3:5]
+ boost/ratio/ratio.hpp [3:5]
+ boost/ratio/ratio_fwd.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL a542bc4ffee8ff4fefee589d7e422332
+BELONGS ya.make
+ License text:
+ Copyright (c) 2004 Angus Leeming
+ Copyright (c) 2006 Daniel Wallin
+ Copyright (c) 2005 Dan Marsden
+ Copyright (c) 2007 Joel de Guzman
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/phoenix/stl/algorithm.hpp [2:5]
+ boost/phoenix/stl/container.hpp [2:3]
+ boost/phoenix/stl/container/container.hpp [2:3]
+ boost/phoenix/stl/container/detail/container.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL a546abb712c04722f781d7f8e7ebc8c7
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2013 Eurodecision
+ // Authors: Guillaume Pinot
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/property_map/compose_property_map.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL a57d11db934fe228c75f45e9ec83e339
+BELONGS ya.make
+ License text:
+ @copyright Louis Dionne 2013-2017
+ @copyright Jason Rice 2017
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/hana/at_key.hpp [5:8]
+ boost/hana/detail/index_if.hpp [5:8]
+ boost/hana/find_if.hpp [5:8]
+ boost/hana/fwd/index_if.hpp [5:8]
+ boost/hana/index_if.hpp [5:8]
+ boost/hana/tuple.hpp [5:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL a57e7bc1a642b17ae2068cf3d13d7cec
+BELONGS ya.make
+ License text:
+ Copyright (c) Marshall Clow 2011-2012.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/algorithm/cxx11/copy_n.hpp [2:2]
+ boost/algorithm/cxx11/find_if_not.hpp [2:2]
+ boost/algorithm/cxx11/is_partitioned.hpp [2:2]
+ boost/algorithm/cxx11/is_permutation.hpp [2:2]
+ boost/algorithm/cxx11/partition_copy.hpp [2:2]
+ boost/algorithm/cxx11/partition_point.hpp [2:2]
+ boost/algorithm/hex.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL a581ea4614243c73584c408309608092
+BELONGS ya.make
+ License text:
+ // (C) Copyright Joaquin M Lopez Munoz 2006-2013
+ // (C) Copyright Ion Gaztanaga 2014-2014
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/intrusive/detail/ebo_functor_holder.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL a59f2047a630f8952ca52dde7c3dd260
+BELONGS ya.make
+ License text:
+ // Copyright 2014 LASMEA UMR 6602 CNRS/Univ. Clermont II
+ // Copyright 2014 LRI UMR 8623 CNRS/Univ Paris Sud XI
+ // Copyright 2014 MetaScale SAS
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/external/nt2/nt2_copy.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL a5dd7d1f5a4a8ccb330aa699dc8acc9f
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2005, 2006 Douglas Gregor <doug.gregor -at- gmail.com>.
+ // Copyright (C) 2016 K. Noel Belcourt <kbelco -at- sandia.gov>.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpi/collectives/all_gather.hpp [1:1]
+ boost/mpi/collectives/all_gatherv.hpp [1:1]
+ boost/mpi/collectives/all_to_all.hpp [1:1]
+ boost/mpi/collectives/broadcast.hpp [1:1]
+ boost/mpi/collectives/gather.hpp [1:1]
+ boost/mpi/collectives/scatter.hpp [1:1]
+ boost/mpi/communicator.hpp [1:2]
+ boost/mpi/detail/broadcast_sc.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL a5ea09ee095272ea2e3f101bf6849666
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2002, 2003 Peter Dimov
+ // Copyright (c) 2003 Daniel Frey
+ // Copyright (c) 2003 Howard Hinnant
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/core/checked_delete.hpp [13:15]
+
+KEEP COPYRIGHT_SERVICE_LABEL a5eedf01d2ff92e079b113bd7640a18e
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/range_fwd.hpp at line 5
+ License text:
+ // Copyright Neil Groves 2003-2004.
+ // Use, modification and distribution is subject to the Boost Software
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/range/range_fwd.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL a5ff08d3c46ed63807fc02b63b95a45c
+BELONGS ya.make
+ License text:
+ Copyright 2012-2013 Andreas Angelopoulos
+ Copyright 2012-2013 Karsten Ahnert
+ Copyright 2012-2013 Mario Mulansky
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/external/mtl4/implicit_euler_mtl4.hpp [6:8]
+ boost/numeric/odeint/external/mtl4/mtl4_resize.hpp [6:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL a6413cb4e8168913b2c37765900ff385
+BELONGS ya.make
+ License text:
+ Copyright 2009-2013 Karsten Ahnert
+ Copyright 2010-2013 Mario Mulansky
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint.hpp [9:10]
+ boost/numeric/odeint/external/compute/compute.hpp [9:10]
+ boost/numeric/odeint/external/compute/compute_algebra_dispatcher.hpp [9:10]
+ boost/numeric/odeint/external/compute/compute_operations_dispatcher.hpp [9:10]
+ boost/numeric/odeint/external/vexcl/vexcl_abs.hpp [9:10]
+ boost/numeric/odeint/external/vexcl/vexcl_norm_inf.hpp [9:10]
+ boost/numeric/odeint/integrate/detail/functors.hpp [9:10]
+ boost/numeric/odeint/iterator/impl/n_step_iterator_impl.hpp [9:10]
+ boost/numeric/odeint/iterator/impl/times_iterator_impl.hpp [9:10]
+ boost/numeric/odeint/iterator/integrate/detail/functors.hpp [9:10]
+ boost/numeric/odeint/iterator/n_step_iterator.hpp [10:11]
+ boost/numeric/odeint/iterator/n_step_time_iterator.hpp [11:12]
+ boost/numeric/odeint/iterator/times_iterator.hpp [10:11]
+ boost/numeric/odeint/iterator/times_time_iterator.hpp [11:12]
+
+KEEP COPYRIGHT_SERVICE_LABEL a6d2481bfa41c78d4c8e8538ea484d02
+BELONGS ya.make
+ License text:
+ // Copyright Aleksey Gurtovoy 2001-2004
+ // Copyright Dave Abrahams 2001-2002
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/reverse_iter_fold.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL a6d72e2504df6c83ce797b15cdb057db
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/metaparse/v1/change_error_message.hpp at line 6, boost/metaparse/v1/debug_parsing_error.hpp at line 6, boost/metaparse/v1/entire_input.hpp at line 6, boost/metaparse/v1/foldl.hpp at line 6, boost/metaparse/v1/foldl1.hpp at line 6, boost/metaparse/v1/foldr1.hpp at line 6, boost/metaparse/v1/get_col.hpp at line 6, boost/metaparse/v1/get_line.hpp at line 6, boost/metaparse/v1/get_position.hpp at line 6, boost/metaparse/v1/get_prev_char.hpp at line 6, boost/metaparse/v1/get_remaining.hpp at line 6, boost/metaparse/v1/get_result.hpp at line 6, boost/metaparse/v1/int_.hpp at line 6, boost/metaparse/v1/is_error.hpp at line 6, boost/metaparse/v1/iterate_c.hpp at line 6, boost/metaparse/v1/look_ahead.hpp at line 6, boost/metaparse/v1/next_char.hpp at line 6, boost/metaparse/v1/next_line.hpp at line 6, boost/metaparse/v1/one_char_except.hpp at line 6, boost/metaparse/v1/one_char_except_c.hpp at line 6, boost/metaparse/v1/source_position.hpp at line 6, boost/metaparse/v1/unless_error.hpp at line 6
+ License text:
+ // Copyright Abel Sinkovics (abel@sinkovics.hu) 2011.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/metaparse/v1/change_error_message.hpp [4:6]
+ boost/metaparse/v1/debug_parsing_error.hpp [4:6]
+ boost/metaparse/v1/entire_input.hpp [4:6]
+ boost/metaparse/v1/foldl.hpp [4:6]
+ boost/metaparse/v1/foldl1.hpp [4:6]
+ boost/metaparse/v1/foldr1.hpp [4:6]
+ boost/metaparse/v1/get_col.hpp [4:6]
+ boost/metaparse/v1/get_line.hpp [4:6]
+ boost/metaparse/v1/get_position.hpp [4:6]
+ boost/metaparse/v1/get_prev_char.hpp [4:6]
+ boost/metaparse/v1/get_remaining.hpp [4:6]
+ boost/metaparse/v1/get_result.hpp [4:6]
+ boost/metaparse/v1/int_.hpp [4:6]
+ boost/metaparse/v1/is_error.hpp [4:6]
+ boost/metaparse/v1/iterate_c.hpp [4:6]
+ boost/metaparse/v1/look_ahead.hpp [4:6]
+ boost/metaparse/v1/next_char.hpp [4:6]
+ boost/metaparse/v1/next_line.hpp [4:6]
+ boost/metaparse/v1/one_char_except.hpp [4:6]
+ boost/metaparse/v1/one_char_except_c.hpp [4:6]
+ boost/metaparse/v1/source_position.hpp [4:6]
+ boost/metaparse/v1/unless_error.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL a6dc9218b480c1cfac28c3b861e08fb7
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/optional.hpp at line 5
+ License text:
+ // (C) Copyright 2002-4 Pavel Vozenilek .
+ // Use, modification and distribution is subject to the Boost Software
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/serialization/optional.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL a6ef7153044344ef13f1aa7f6f26a4df
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multi_index/detail/header_holder.hpp at line 3
+ License text:
+ /* Copyright 2003-2008 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/multi_index/detail/header_holder.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL a6fd7216a1ac9930b2655802aed9e478
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/random/discrete_distribution.hpp at line 5
+ License text:
+ * Copyright Steven Watanabe 2009-2011
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/random/discrete_distribution.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL a70d1de046a7f07a72bd05b73f591262
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2009 Joel de Guzman
+ Copyright (c) 2009-2010 Hartmut Kaiser
+ Copyright (c) 2010-2011 Christopher Schmidt
+ Copyright (c) 2013-2014 Damien Buhl
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/adapted/adt/adapt_adt.hpp [2:5]
+ boost/fusion/adapted/adt/adapt_adt_named.hpp [2:4]
+ boost/fusion/adapted/struct/adapt_struct_named.hpp [2:4]
+ boost/fusion/adapted/struct/detail/namespace.hpp [2:3]
+ boost/fusion/adapted/struct/detail/proxy_type.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL a710f97cab1f756de65cb7fa81633cdb
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/array/data.hpp at line 5, boost/preprocessor/array/elem.hpp at line 5, boost/preprocessor/array/insert.hpp at line 5, boost/preprocessor/array/pop_back.hpp at line 5, boost/preprocessor/array/pop_front.hpp at line 5, boost/preprocessor/array/push_back.hpp at line 5, boost/preprocessor/array/push_front.hpp at line 5, boost/preprocessor/array/remove.hpp at line 5, boost/preprocessor/array/replace.hpp at line 5, boost/preprocessor/array/reverse.hpp at line 5, boost/preprocessor/array/size.hpp at line 5, boost/preprocessor/assert_msg.hpp at line 5, boost/preprocessor/comma.hpp at line 5, boost/preprocessor/comma_if.hpp at line 5, boost/preprocessor/control.hpp at line 5, boost/preprocessor/control/deduce_d.hpp at line 5, boost/preprocessor/control/expr_iif.hpp at line 5, boost/preprocessor/control/iif.hpp at line 5, boost/preprocessor/debug.hpp at line 5, boost/preprocessor/debug/error.hpp at line 5, boost/preprocessor/debug/line.hpp at line 5, boost/preprocessor/dec.hpp at line 5, boost/preprocessor/detail/auto_rec.hpp at line 5, boost/preprocessor/detail/check.hpp at line 5, boost/preprocessor/detail/dmc/auto_rec.hpp at line 5, boost/preprocessor/detail/is_binary.hpp at line 5, boost/preprocessor/detail/is_nullary.hpp at line 5, boost/preprocessor/detail/is_unary.hpp at line 5, boost/preprocessor/detail/null.hpp at line 5, boost/preprocessor/detail/split.hpp at line 5, boost/preprocessor/empty.hpp at line 5, boost/preprocessor/enum.hpp at line 5, boost/preprocessor/enum_params.hpp at line 5, boost/preprocessor/enum_params_with_a_default.hpp at line 5, boost/preprocessor/enum_params_with_defaults.hpp at line 5, boost/preprocessor/enum_shifted.hpp at line 5, boost/preprocessor/enum_shifted_params.hpp at line 5, boost/preprocessor/expand.hpp at line 5, boost/preprocessor/expr_if.hpp at line 5, boost/preprocessor/facilities/apply.hpp at line 5, boost/preprocessor/facilities/intercept.hpp at line 5, boost/preprocessor/for.hpp at line 5, boost/preprocessor/identity.hpp at line 5, boost/preprocessor/if.hpp at line 5, boost/preprocessor/inc.hpp at line 5, boost/preprocessor/iterate.hpp at line 5, boost/preprocessor/iteration.hpp at line 5, boost/preprocessor/iteration/detail/bounds/lower1.hpp at line 5, boost/preprocessor/iteration/detail/bounds/lower2.hpp at line 5, boost/preprocessor/iteration/detail/bounds/lower3.hpp at line 5, boost/preprocessor/iteration/detail/bounds/lower4.hpp at line 5, boost/preprocessor/iteration/detail/bounds/lower5.hpp at line 5, boost/preprocessor/iteration/detail/bounds/upper1.hpp at line 5, boost/preprocessor/iteration/detail/bounds/upper2.hpp at line 5, boost/preprocessor/iteration/detail/bounds/upper3.hpp at line 5, boost/preprocessor/iteration/detail/bounds/upper4.hpp at line 5, boost/preprocessor/iteration/detail/bounds/upper5.hpp at line 5, boost/preprocessor/iteration/detail/finish.hpp at line 5, boost/preprocessor/iteration/detail/iter/forward1.hpp at line 5, boost/preprocessor/iteration/detail/iter/forward2.hpp at line 5, boost/preprocessor/iteration/detail/iter/forward3.hpp at line 5, boost/preprocessor/iteration/detail/iter/forward4.hpp at line 5, boost/preprocessor/iteration/detail/iter/forward5.hpp at line 5, boost/preprocessor/iteration/detail/iter/reverse1.hpp at line 5, boost/preprocessor/iteration/detail/iter/reverse2.hpp at line 5, boost/preprocessor/iteration/detail/iter/reverse3.hpp at line 5, boost/preprocessor/iteration/detail/iter/reverse4.hpp at line 5, boost/preprocessor/iteration/detail/iter/reverse5.hpp at line 5, boost/preprocessor/iteration/detail/local.hpp at line 5, boost/preprocessor/iteration/detail/rlocal.hpp at line 5, boost/preprocessor/iteration/detail/self.hpp at line 5, boost/preprocessor/iteration/detail/start.hpp at line 5, boost/preprocessor/iteration/iterate.hpp at line 5, boost/preprocessor/iteration/local.hpp at line 5, boost/preprocessor/iteration/self.hpp at line 5, boost/preprocessor/limits.hpp at line 5, boost/preprocessor/logical/bitand.hpp at line 5, boost/preprocessor/logical/bitnor.hpp at line 5, boost/preprocessor/logical/bitor.hpp at line 5, boost/preprocessor/logical/bitxor.hpp at line 5, boost/preprocessor/logical/compl.hpp at line 5, boost/preprocessor/max.hpp at line 5, boost/preprocessor/min.hpp at line 5, boost/preprocessor/punctuation.hpp at line 5, boost/preprocessor/punctuation/paren.hpp at line 5, boost/preprocessor/punctuation/paren_if.hpp at line 5, boost/preprocessor/repeat.hpp at line 5, boost/preprocessor/repeat_2nd.hpp at line 5, boost/preprocessor/repeat_3rd.hpp at line 5, boost/preprocessor/repeat_from_to.hpp at line 5, boost/preprocessor/repeat_from_to_2nd.hpp at line 5, boost/preprocessor/repeat_from_to_3rd.hpp at line 5, boost/preprocessor/repetition.hpp at line 5, boost/preprocessor/repetition/deduce_r.hpp at line 5, boost/preprocessor/repetition/deduce_z.hpp at line 5, boost/preprocessor/repetition/enum_binary_params.hpp at line 5, boost/preprocessor/repetition/enum_trailing.hpp at line 5, boost/preprocessor/repetition/enum_trailing_binary_params.hpp at line 5, boost/preprocessor/repetition/enum_trailing_params.hpp at line 5, boost/preprocessor/selection.hpp at line 5, boost/preprocessor/seq/cat.hpp at line 5, boost/preprocessor/seq/detail/split.hpp at line 5, boost/preprocessor/seq/elem.hpp at line 5, boost/preprocessor/seq/enum.hpp at line 5, boost/preprocessor/seq/filter.hpp at line 5, boost/preprocessor/seq/first_n.hpp at line 5, boost/preprocessor/seq/fold_left.hpp at line 5, boost/preprocessor/seq/fold_right.hpp at line 5, boost/preprocessor/seq/for_each.hpp at line 5, boost/preprocessor/seq/for_each_i.hpp at line 5, boost/preprocessor/seq/for_each_product.hpp at line 5, boost/preprocessor/seq/insert.hpp at line 5, boost/preprocessor/seq/pop_back.hpp at line 5, boost/preprocessor/seq/pop_front.hpp at line 5, boost/preprocessor/seq/push_back.hpp at line 5, boost/preprocessor/seq/push_front.hpp at line 5, boost/preprocessor/seq/remove.hpp at line 5, boost/preprocessor/seq/replace.hpp at line 5, boost/preprocessor/seq/rest_n.hpp at line 5, boost/preprocessor/seq/reverse.hpp at line 5, boost/preprocessor/seq/seq.hpp at line 5, boost/preprocessor/seq/size.hpp at line 5, boost/preprocessor/seq/subseq.hpp at line 5, boost/preprocessor/seq/to_array.hpp at line 5, boost/preprocessor/seq/to_tuple.hpp at line 5, boost/preprocessor/seq/transform.hpp at line 5, boost/preprocessor/slot.hpp at line 5, boost/preprocessor/slot/detail/def.hpp at line 5, boost/preprocessor/slot/detail/shared.hpp at line 5, boost/preprocessor/slot/detail/slot1.hpp at line 5, boost/preprocessor/slot/detail/slot2.hpp at line 5, boost/preprocessor/slot/detail/slot3.hpp at line 5, boost/preprocessor/slot/detail/slot4.hpp at line 5, boost/preprocessor/slot/detail/slot5.hpp at line 5, boost/preprocessor/slot/slot.hpp at line 5, boost/preprocessor/while.hpp at line 5, boost/preprocessor/wstringize.hpp at line 5
+ License text:
+ \# * (C) Copyright Paul Mensonides 2002.
+ \# * Distributed under the Boost Software License, Version 1.0. (See
+ \# * accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/preprocessor/array/data.hpp [3:5]
+ boost/preprocessor/array/elem.hpp [3:5]
+ boost/preprocessor/array/insert.hpp [3:5]
+ boost/preprocessor/array/pop_back.hpp [3:5]
+ boost/preprocessor/array/pop_front.hpp [3:5]
+ boost/preprocessor/array/push_back.hpp [3:6]
+ boost/preprocessor/array/push_front.hpp [3:6]
+ boost/preprocessor/array/remove.hpp [3:5]
+ boost/preprocessor/array/replace.hpp [3:5]
+ boost/preprocessor/array/reverse.hpp [3:5]
+ boost/preprocessor/array/size.hpp [3:5]
+ boost/preprocessor/assert_msg.hpp [3:5]
+ boost/preprocessor/comma.hpp [3:5]
+ boost/preprocessor/comma_if.hpp [3:5]
+ boost/preprocessor/control.hpp [3:5]
+ boost/preprocessor/control/deduce_d.hpp [3:5]
+ boost/preprocessor/control/expr_iif.hpp [3:5]
+ boost/preprocessor/control/iif.hpp [3:5]
+ boost/preprocessor/debug.hpp [3:5]
+ boost/preprocessor/debug/error.hpp [3:5]
+ boost/preprocessor/debug/line.hpp [3:5]
+ boost/preprocessor/dec.hpp [3:5]
+ boost/preprocessor/detail/auto_rec.hpp [3:5]
+ boost/preprocessor/detail/check.hpp [3:5]
+ boost/preprocessor/detail/dmc/auto_rec.hpp [3:5]
+ boost/preprocessor/detail/is_binary.hpp [3:5]
+ boost/preprocessor/detail/is_nullary.hpp [3:5]
+ boost/preprocessor/detail/is_unary.hpp [3:5]
+ boost/preprocessor/detail/null.hpp [3:5]
+ boost/preprocessor/detail/split.hpp [3:5]
+ boost/preprocessor/empty.hpp [3:5]
+ boost/preprocessor/enum.hpp [3:5]
+ boost/preprocessor/enum_params.hpp [3:5]
+ boost/preprocessor/enum_params_with_a_default.hpp [3:5]
+ boost/preprocessor/enum_params_with_defaults.hpp [3:5]
+ boost/preprocessor/enum_shifted.hpp [3:5]
+ boost/preprocessor/enum_shifted_params.hpp [3:5]
+ boost/preprocessor/expand.hpp [3:5]
+ boost/preprocessor/expr_if.hpp [3:5]
+ boost/preprocessor/facilities/apply.hpp [3:5]
+ boost/preprocessor/facilities/intercept.hpp [3:5]
+ boost/preprocessor/for.hpp [3:5]
+ boost/preprocessor/identity.hpp [3:5]
+ boost/preprocessor/if.hpp [3:5]
+ boost/preprocessor/inc.hpp [3:5]
+ boost/preprocessor/iterate.hpp [3:5]
+ boost/preprocessor/iteration.hpp [3:5]
+ boost/preprocessor/iteration/detail/bounds/lower1.hpp [3:5]
+ boost/preprocessor/iteration/detail/bounds/lower2.hpp [3:5]
+ boost/preprocessor/iteration/detail/bounds/lower3.hpp [3:5]
+ boost/preprocessor/iteration/detail/bounds/lower4.hpp [3:5]
+ boost/preprocessor/iteration/detail/bounds/lower5.hpp [3:5]
+ boost/preprocessor/iteration/detail/bounds/upper1.hpp [3:5]
+ boost/preprocessor/iteration/detail/bounds/upper2.hpp [3:5]
+ boost/preprocessor/iteration/detail/bounds/upper3.hpp [3:5]
+ boost/preprocessor/iteration/detail/bounds/upper4.hpp [3:5]
+ boost/preprocessor/iteration/detail/bounds/upper5.hpp [3:5]
+ boost/preprocessor/iteration/detail/finish.hpp [3:5]
+ boost/preprocessor/iteration/detail/iter/forward1.hpp [3:5]
+ boost/preprocessor/iteration/detail/iter/forward2.hpp [3:5]
+ boost/preprocessor/iteration/detail/iter/forward3.hpp [3:5]
+ boost/preprocessor/iteration/detail/iter/forward4.hpp [3:5]
+ boost/preprocessor/iteration/detail/iter/forward5.hpp [3:5]
+ boost/preprocessor/iteration/detail/iter/reverse1.hpp [3:5]
+ boost/preprocessor/iteration/detail/iter/reverse2.hpp [3:5]
+ boost/preprocessor/iteration/detail/iter/reverse3.hpp [3:5]
+ boost/preprocessor/iteration/detail/iter/reverse4.hpp [3:5]
+ boost/preprocessor/iteration/detail/iter/reverse5.hpp [3:5]
+ boost/preprocessor/iteration/detail/local.hpp [3:5]
+ boost/preprocessor/iteration/detail/rlocal.hpp [3:5]
+ boost/preprocessor/iteration/detail/self.hpp [3:5]
+ boost/preprocessor/iteration/detail/start.hpp [3:5]
+ boost/preprocessor/iteration/iterate.hpp [3:5]
+ boost/preprocessor/iteration/local.hpp [3:5]
+ boost/preprocessor/iteration/self.hpp [3:5]
+ boost/preprocessor/limits.hpp [3:5]
+ boost/preprocessor/logical/bitand.hpp [3:5]
+ boost/preprocessor/logical/bitnor.hpp [3:5]
+ boost/preprocessor/logical/bitor.hpp [3:5]
+ boost/preprocessor/logical/bitxor.hpp [3:5]
+ boost/preprocessor/logical/compl.hpp [3:5]
+ boost/preprocessor/max.hpp [3:5]
+ boost/preprocessor/min.hpp [3:5]
+ boost/preprocessor/punctuation.hpp [3:5]
+ boost/preprocessor/punctuation/paren.hpp [3:5]
+ boost/preprocessor/punctuation/paren_if.hpp [3:5]
+ boost/preprocessor/repeat.hpp [3:5]
+ boost/preprocessor/repeat_2nd.hpp [3:5]
+ boost/preprocessor/repeat_3rd.hpp [3:5]
+ boost/preprocessor/repeat_from_to.hpp [3:5]
+ boost/preprocessor/repeat_from_to_2nd.hpp [3:5]
+ boost/preprocessor/repeat_from_to_3rd.hpp [3:5]
+ boost/preprocessor/repetition.hpp [3:5]
+ boost/preprocessor/repetition/deduce_r.hpp [3:5]
+ boost/preprocessor/repetition/deduce_z.hpp [3:5]
+ boost/preprocessor/repetition/enum_binary_params.hpp [3:5]
+ boost/preprocessor/repetition/enum_trailing.hpp [3:5]
+ boost/preprocessor/repetition/enum_trailing_binary_params.hpp [3:5]
+ boost/preprocessor/repetition/enum_trailing_params.hpp [3:5]
+ boost/preprocessor/selection.hpp [3:5]
+ boost/preprocessor/seq/cat.hpp [3:5]
+ boost/preprocessor/seq/detail/split.hpp [3:5]
+ boost/preprocessor/seq/elem.hpp [3:5]
+ boost/preprocessor/seq/enum.hpp [3:5]
+ boost/preprocessor/seq/filter.hpp [3:5]
+ boost/preprocessor/seq/first_n.hpp [3:5]
+ boost/preprocessor/seq/fold_left.hpp [3:5]
+ boost/preprocessor/seq/fold_right.hpp [3:5]
+ boost/preprocessor/seq/for_each.hpp [3:5]
+ boost/preprocessor/seq/for_each_i.hpp [3:5]
+ boost/preprocessor/seq/for_each_product.hpp [3:5]
+ boost/preprocessor/seq/insert.hpp [3:5]
+ boost/preprocessor/seq/pop_back.hpp [3:5]
+ boost/preprocessor/seq/pop_front.hpp [3:5]
+ boost/preprocessor/seq/push_back.hpp [3:5]
+ boost/preprocessor/seq/push_front.hpp [3:5]
+ boost/preprocessor/seq/remove.hpp [3:5]
+ boost/preprocessor/seq/replace.hpp [3:5]
+ boost/preprocessor/seq/rest_n.hpp [3:5]
+ boost/preprocessor/seq/reverse.hpp [3:5]
+ boost/preprocessor/seq/seq.hpp [3:5]
+ boost/preprocessor/seq/size.hpp [3:5]
+ boost/preprocessor/seq/subseq.hpp [3:5]
+ boost/preprocessor/seq/to_array.hpp [3:5]
+ boost/preprocessor/seq/to_tuple.hpp [3:5]
+ boost/preprocessor/seq/transform.hpp [3:5]
+ boost/preprocessor/slot.hpp [3:5]
+ boost/preprocessor/slot/detail/def.hpp [3:5]
+ boost/preprocessor/slot/detail/shared.hpp [3:5]
+ boost/preprocessor/slot/detail/slot1.hpp [3:5]
+ boost/preprocessor/slot/detail/slot2.hpp [3:5]
+ boost/preprocessor/slot/detail/slot3.hpp [3:5]
+ boost/preprocessor/slot/detail/slot4.hpp [3:5]
+ boost/preprocessor/slot/detail/slot5.hpp [3:5]
+ boost/preprocessor/slot/slot.hpp [3:5]
+ boost/preprocessor/while.hpp [3:5]
+ boost/preprocessor/wstringize.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL a717e4b7c213ca28bbeaec4750bb98ec
+BELONGS ya.make
+ License text:
+ // Copyright 2004, 2005 The Trustees of Indiana University.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/distributed/rmat_graph_generator.hpp [1:1]
+ boost/graph/erdos_renyi_generator.hpp [1:1]
+ boost/graph/fruchterman_reingold.hpp [1:1]
+ boost/graph/mesh_graph_generator.hpp [1:1]
+ boost/graph/point_traits.hpp [1:1]
+ boost/graph/rmat_graph_generator.hpp [1:1]
+ boost/graph/ssca_graph_generator.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL a7831931571cb11df5942e281a68009f
+BELONGS ya.make
+ License text:
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/detail/algorithm.hpp [7:8]
+ boost/detail/binary_search.hpp [6:7]
+ boost/multi_array/algorithm.hpp [6:7]
+ boost/multi_index/detail/ord_index_impl.hpp [23:24]
+ boost/multi_index/detail/ord_index_node.hpp [23:24]
+ boost/multi_index/detail/ord_index_ops.hpp [23:24]
+
+KEEP COPYRIGHT_SERVICE_LABEL a7890834ac7e904f210a19fb2b0ad11d
+BELONGS ya.make
+ License text:
+ // Copyright Peter Dimov 2001
+ // Copyright Aleksey Gurtovoy 2001-2004
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/aux_/basic_bind.hpp [5:6]
+ boost/mpl/aux_/preprocessed/bcc/basic_bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc/bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc551/basic_bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc551/bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc_pre590/basic_bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc_pre590/bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/dmc/basic_bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/dmc/bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/gcc/basic_bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/gcc/bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc60/basic_bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc60/bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc70/basic_bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc70/bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/mwcw/basic_bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/mwcw/bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ctps/basic_bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ctps/bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ttp/basic_bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ttp/bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/plain/basic_bind.hpp [2:3]
+ boost/mpl/aux_/preprocessed/plain/bind.hpp [2:3]
+ boost/mpl/bind.hpp [9:10]
+ boost/mpl/protect.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL a791d76d11657f61fc7d724e28607e82
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signals2/trackable.hpp at line 7
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/signals2/trackable.hpp [3:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL a7b291408d5b386698800c270987d816
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/qi/numeric/detail/numeric_utils.hpp [2:6]
+ boost/spirit/home/x3/support/numeric_utils/detail/extract_int.hpp [2:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL a7eb31adebbe4ac555a6d1f417f84187
+BELONGS ya.make
+ License text:
+ // (C) Copyright Ion Gaztanaga 2006-2012
+ // (C) Copyright Markus Schoepflin 2007
+ // (C) Copyright Bryce Lelbach 2010
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/interprocess/detail/atomic.hpp [3:5]
+ boost/interprocess/detail/file_wrapper.hpp [3:5]
+ boost/interprocess/detail/managed_open_or_create_impl.hpp [3:5]
+ boost/interprocess/detail/ptime_wrk.hpp [3:5]
+ boost/interprocess/smart_ptr/detail/shared_count.hpp [5:9]
+ boost/interprocess/smart_ptr/enable_shared_from_this.hpp [5:8]
+ boost/interprocess/smart_ptr/intrusive_ptr.hpp [5:8]
+ boost/interprocess/smart_ptr/scoped_ptr.hpp [5:9]
+ boost/interprocess/smart_ptr/shared_ptr.hpp [5:9]
+ boost/interprocess/smart_ptr/weak_ptr.hpp [5:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL a8022a1fcbc50c9b88173a9ea8f85905
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/functional.hpp at line 4
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/functional.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL a8052e92fe6f00f953d51bb1b9eabb8a
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2007 Joel de Guzman
+ Copyright (c) 2014 John Fletcher
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/phoenix/bind/bind_member_variable.hpp [2:3]
+ boost/phoenix/bind/detail/cpp03/bind_member_function.hpp [2:3]
+ boost/phoenix/core/actor.hpp [2:5]
+ boost/phoenix/core/debug.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL a81e6b59bf6cb32af7d53ed2b68efdcf
+BELONGS ya.make
+ License text:
+ Copyright 2012 Lucanus Simonson
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/polygon/segment_utils.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL a81f16b19633169e29f73443fb23e585
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2003 David Abrahams
+ // Copyright (c) 2003 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/detail/quick_allocator.hpp [13:14]
+ boost/smart_ptr/detail/quick_allocator.hpp [13:14]
+
+KEEP COPYRIGHT_SERVICE_LABEL a82e1cdd44c59d927ac69ec1ca05ab28
+BELONGS ya.make
+ License text:
+ // (C) Copyright Noel Belcourt 2007.
+ // Copyright 2017, NVIDIA CORPORATION.
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/pgi.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL a873bfeecc5128a8bf6d86778cd42652
+BELONGS ya.make
+ License text:
+ @copyright Louis Dionne 2016
+ @copyright Jason Rice 2016
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/hana/concept/hashable.hpp [5:8]
+ boost/hana/detail/hash_table.hpp [5:8]
+ boost/hana/fwd/concept/hashable.hpp [5:8]
+ boost/hana/fwd/hash.hpp [5:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL a89f79f040019b19486891ea84fe064c
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2008-2016 Tim Blechmann
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/lockfree/detail/freelist.hpp [3:3]
+ boost/lockfree/lockfree_forward.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL a8a1037395e0ad6175aa2ab2e85af5b6
+BELONGS ya.make
+ License text:
+ // (C) Copyright Ion Gaztanaga 2005-2013.
+ // (C) Copyright Gennaro Prota 2003 - 2004.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/container/detail/iterators.hpp [3:4]
+ boost/container/detail/transform_iterator.hpp [3:4]
+ boost/interprocess/detail/pointer_type.hpp [3:4]
+ boost/interprocess/detail/transform_iterator.hpp [3:4]
+ boost/interprocess/detail/utilities.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL a8b3a4297e61473986978ae0e07bca11
+BELONGS ya.make
+ License text:
+ // (C) Copyright Nick Thompson 2017.
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/chebyshev.hpp [1:3]
+ boost/math/special_functions/chebyshev_transform.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL a8d89d0d87e1b3d47b9f31d23c4eb2ce
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic.hpp [2:14]
+ boost/spirit/home/classic/phoenix/new.hpp [3:5]
+ boost/spirit/repository/home/qi/directive/distinct.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL a90d6f9cea595f4ae9c35ab6094b9c7f
+BELONGS ya.make
+ License text:
+ Copyright (c) 1998-2003 Joel de Guzman
+ Copyright (c) 2003 Martin Wille
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/core/primitives/impl/primitives.ipp [2:4]
+ boost/spirit/home/classic/core/primitives/primitives.hpp [2:4]
+ boost/spirit/home/classic/meta/impl/parser_traits.ipp [2:5]
+ boost/spirit/home/classic/meta/parser_traits.hpp [2:5]
+ boost/spirit/home/classic/utility/scoped_lock.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL a94d96368a66ee33343f336d0ba81d21
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2007-2011 Barend Gehrels, Amsterdam, the Netherlands.
+ // Copyright (c) 2008-2011 Bruno Lalande, Paris, France.
+ // Copyright (c) 2009-2011 Mateusz Loskot, London, UK.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL a9a214e2eed0b89d70377475968a7415
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/gcc.hpp [1:9]
+ boost/config/compiler/visualc.hpp [1:8]
+ boost/config/platform/macos.hpp [1:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL a9c8a7c9fcd186be6ad7d96495fef966
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2006-7, 2013-14.
+ // Copyright Paul A. Bristow 2007, 2013-14.
+ // Copyright Nikhar Agrawal 2013-14
+ // Copyright Christopher Kormanyos 2013-14
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/gamma.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL a9d1fd602f0c19f310f168a4ca8ae204
+BELONGS libs/thread/ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ libs/thread/src/win32/tss_pe.cpp [2:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL a9d5074bdc20d985f64135ae02f955a0
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/pending/container_traits.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/pending/container_traits.hpp [1:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL a9eb6f13fc57f56c47d8459914a5a52e
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/detail/polygamma.hpp [3:8]
+ boost/math/special_functions/polygamma.hpp [3:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL aa0bfcec74e862504934e7d8670be932
+BELONGS ya.make
+ License text:
+ Copyright (c) 2009 Chris Hoeppler
+ Copyright (c) 2014 Lee Clagett
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/x3/directive/confix.hpp [2:3]
+ boost/spirit/repository/home/qi/directive/confix.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL aa26c33c3118e86bb6d726d742cff87d
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2014 Mageswaran.D <mageswaran1989@gmail.com>
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/compute/algorithm/lexicographical_compare.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL aa2ee27a7e59b446f91a7e1ce9f20050
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2006.
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/concepts/distributions.hpp [1:3]
+ boost/math/concepts/real_concept.hpp [1:3]
+ boost/math/concepts/std_real_concept.hpp [1:3]
+ boost/math/distributions/bernoulli.hpp [3:4]
+ boost/math/distributions/beta.hpp [3:4]
+ boost/math/distributions/binomial.hpp [3:4]
+ boost/math/distributions/detail/derived_accessors.hpp [1:3]
+ boost/math/distributions/exponential.hpp [1:3]
+ boost/math/distributions/extreme_value.hpp [1:3]
+ boost/math/distributions/fisher_f.hpp [1:1]
+ boost/math/distributions/gamma.hpp [1:3]
+ boost/math/distributions/lognormal.hpp [1:3]
+ boost/math/distributions/poisson.hpp [3:4]
+ boost/math/distributions/students_t.hpp [1:3]
+ boost/math/distributions/uniform.hpp [1:4]
+ boost/math/distributions/weibull.hpp [1:3]
+ boost/math/special_functions/binomial.hpp [1:3]
+ boost/math/special_functions/detail/ibeta_inverse.hpp [1:4]
+ boost/math/special_functions/detail/igamma_large.hpp [1:3]
+ boost/math/special_functions/detail/unchecked_factorial.hpp [1:3]
+ boost/math/special_functions/math_fwd.hpp [5:6]
+ boost/math/tools/promotion.hpp [3:4]
+ boost/math/tools/real_cast.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL aa4b6b5a567bcedd7e044e9f17cef556
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2006-7, 2013-14.
+ // Copyright Paul A. Bristow 2007, 2013-14.
+ // Copyright Nikhar Agrawal 2013-14
+ // Copyright Christopher Kormanyos 2013-14
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/gamma.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL aa4f3bb63ff4fdd4e894b9af2925c00e
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2011 Hartmut Kaiser
+ Copyright (c) 2001-2014 Joel de Guzman
+ Copyright (c) 2013 Agustin Berge
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/x3/auxiliary/attr.hpp [2:4]
+ boost/spirit/home/x3/core/parser.hpp [2:3]
+ boost/spirit/home/x3/directive/no_skip.hpp [2:4]
+ boost/spirit/home/x3/directive/skip.hpp [2:3]
+ boost/spirit/home/x3/support/traits/handles_container.hpp [2:3]
+ boost/spirit/home/x3/support/utility/sfinae.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL aa5d0b1566cd2b1ccc445732a6682e0d
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2004-2006 The Trustees of Indiana University.
+ // Copyright (C) 2002 Brad King and Douglas Gregor
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/distributed/page_rank.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL aae0314f7fb4ec80f57017d1bfb6dba7
+BELONGS ya.make
+ License text:
+ @copyright Louis Dionne 2013-2017
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/hana.hpp [6:8]
+ boost/hana/accessors.hpp [5:7]
+ boost/hana/adapt_adt.hpp [5:7]
+ boost/hana/adapt_struct.hpp [5:7]
+ boost/hana/adjust.hpp [5:7]
+ boost/hana/adjust_if.hpp [5:7]
+ boost/hana/all.hpp [5:7]
+ boost/hana/all_of.hpp [5:7]
+ boost/hana/and.hpp [5:7]
+ boost/hana/any.hpp [5:7]
+ boost/hana/any_of.hpp [5:7]
+ boost/hana/ap.hpp [5:7]
+ boost/hana/append.hpp [5:7]
+ boost/hana/assert.hpp [5:7]
+ boost/hana/at.hpp [5:7]
+ boost/hana/at_key.hpp [5:8]
+ boost/hana/back.hpp [5:7]
+ boost/hana/basic_tuple.hpp [5:7]
+ boost/hana/bool.hpp [5:7]
+ boost/hana/cartesian_product.hpp [5:7]
+ boost/hana/chain.hpp [5:7]
+ boost/hana/comparing.hpp [5:7]
+ boost/hana/concat.hpp [5:7]
+ boost/hana/concept.hpp [5:7]
+ boost/hana/concept/applicative.hpp [5:7]
+ boost/hana/concept/comonad.hpp [5:7]
+ boost/hana/concept/comparable.hpp [5:7]
+ boost/hana/concept/constant.hpp [5:7]
+ boost/hana/concept/euclidean_ring.hpp [5:7]
+ boost/hana/concept/foldable.hpp [5:7]
+ boost/hana/concept/functor.hpp [5:7]
+ boost/hana/concept/group.hpp [5:7]
+ boost/hana/concept/integral_constant.hpp [5:7]
+ boost/hana/concept/iterable.hpp [5:7]
+ boost/hana/concept/logical.hpp [5:7]
+ boost/hana/concept/metafunction.hpp [5:7]
+ boost/hana/concept/monad.hpp [5:7]
+ boost/hana/concept/monad_plus.hpp [5:7]
+ boost/hana/concept/monoid.hpp [5:7]
+ boost/hana/concept/orderable.hpp [5:7]
+ boost/hana/concept/product.hpp [5:7]
+ boost/hana/concept/ring.hpp [5:7]
+ boost/hana/concept/searchable.hpp [5:7]
+ boost/hana/concept/sequence.hpp [5:7]
+ boost/hana/concept/struct.hpp [5:7]
+ boost/hana/config.hpp [5:7]
+ boost/hana/contains.hpp [5:7]
+ boost/hana/core.hpp [5:7]
+ boost/hana/core/common.hpp [5:7]
+ boost/hana/core/default.hpp [5:7]
+ boost/hana/core/dispatch.hpp [5:7]
+ boost/hana/core/is_a.hpp [5:7]
+ boost/hana/core/make.hpp [5:7]
+ boost/hana/core/tag_of.hpp [5:7]
+ boost/hana/core/to.hpp [5:7]
+ boost/hana/core/when.hpp [5:7]
+ boost/hana/count.hpp [5:7]
+ boost/hana/count_if.hpp [5:7]
+ boost/hana/cycle.hpp [5:7]
+ boost/hana/define_struct.hpp [5:7]
+ boost/hana/detail/algorithm.hpp [5:7]
+ boost/hana/detail/any_of.hpp [5:7]
+ boost/hana/detail/array.hpp [5:7]
+ boost/hana/detail/canonical_constant.hpp [5:7]
+ boost/hana/detail/concepts.hpp [5:7]
+ boost/hana/detail/create.hpp [5:7]
+ boost/hana/detail/decay.hpp [6:8]
+ boost/hana/detail/dispatch_if.hpp [5:7]
+ boost/hana/detail/fast_and.hpp [5:7]
+ boost/hana/detail/first_unsatisfied_index.hpp [5:7]
+ boost/hana/detail/has_common_embedding.hpp [5:7]
+ boost/hana/detail/has_duplicates.hpp [5:7]
+ boost/hana/detail/index_if.hpp [5:8]
+ boost/hana/detail/integral_constant.hpp [6:8]
+ boost/hana/detail/intrinsics.hpp [5:7]
+ boost/hana/detail/nested_by.hpp [5:7]
+ boost/hana/detail/nested_by_fwd.hpp [5:7]
+ boost/hana/detail/nested_than.hpp [5:7]
+ boost/hana/detail/nested_than_fwd.hpp [5:7]
+ boost/hana/detail/nested_to.hpp [5:7]
+ boost/hana/detail/nested_to_fwd.hpp [5:7]
+ boost/hana/detail/operators/adl.hpp [5:7]
+ boost/hana/detail/operators/arithmetic.hpp [5:7]
+ boost/hana/detail/operators/comparable.hpp [5:7]
+ boost/hana/detail/operators/iterable.hpp [5:7]
+ boost/hana/detail/operators/logical.hpp [5:7]
+ boost/hana/detail/operators/monad.hpp [5:7]
+ boost/hana/detail/operators/orderable.hpp [5:7]
+ boost/hana/detail/operators/searchable.hpp [5:7]
+ boost/hana/detail/preprocessor.hpp [5:7]
+ boost/hana/detail/std_common_type.hpp [5:7]
+ boost/hana/detail/struct_macros.hpp [10:12]
+ boost/hana/detail/type_at.hpp [5:7]
+ boost/hana/detail/type_foldl1.hpp [5:7]
+ boost/hana/detail/type_foldr1.hpp [5:7]
+ boost/hana/detail/unpack_flatten.hpp [5:7]
+ boost/hana/detail/variadic/at.hpp [5:7]
+ boost/hana/detail/variadic/drop_into.hpp [5:7]
+ boost/hana/detail/variadic/foldl1.hpp [5:7]
+ boost/hana/detail/variadic/foldr1.hpp [5:7]
+ boost/hana/detail/variadic/reverse_apply.hpp [5:7]
+ boost/hana/detail/variadic/reverse_apply/flat.hpp [5:7]
+ boost/hana/detail/variadic/reverse_apply/unrolled.hpp [5:7]
+ boost/hana/detail/variadic/split_at.hpp [5:7]
+ boost/hana/detail/variadic/take.hpp [5:7]
+ boost/hana/detail/void_t.hpp [5:7]
+ boost/hana/detail/wrong.hpp [5:7]
+ boost/hana/difference.hpp [5:7]
+ boost/hana/div.hpp [5:7]
+ boost/hana/drop_back.hpp [5:7]
+ boost/hana/drop_front.hpp [5:7]
+ boost/hana/drop_front_exactly.hpp [5:7]
+ boost/hana/drop_while.hpp [5:7]
+ boost/hana/duplicate.hpp [5:7]
+ boost/hana/empty.hpp [5:7]
+ boost/hana/equal.hpp [5:7]
+ boost/hana/erase_key.hpp [5:7]
+ boost/hana/eval.hpp [5:7]
+ boost/hana/eval_if.hpp [5:7]
+ boost/hana/experimental/printable.hpp [5:7]
+ boost/hana/experimental/type_name.hpp [5:7]
+ boost/hana/experimental/types.hpp [5:7]
+ boost/hana/experimental/view.hpp [5:7]
+ boost/hana/ext/boost.hpp [5:7]
+ boost/hana/ext/boost/fusion.hpp [5:7]
+ boost/hana/ext/boost/fusion/deque.hpp [5:7]
+ boost/hana/ext/boost/fusion/detail/common.hpp [5:7]
+ boost/hana/ext/boost/fusion/list.hpp [5:7]
+ boost/hana/ext/boost/fusion/tuple.hpp [9:11]
+ boost/hana/ext/boost/fusion/vector.hpp [5:7]
+ boost/hana/ext/boost/mpl.hpp [5:7]
+ boost/hana/ext/boost/mpl/integral_c.hpp [5:7]
+ boost/hana/ext/boost/mpl/list.hpp [5:7]
+ boost/hana/ext/boost/mpl/vector.hpp [5:7]
+ boost/hana/ext/boost/tuple.hpp [5:7]
+ boost/hana/ext/std.hpp [5:7]
+ boost/hana/ext/std/array.hpp [5:7]
+ boost/hana/ext/std/integer_sequence.hpp [5:7]
+ boost/hana/ext/std/integral_constant.hpp [5:7]
+ boost/hana/ext/std/pair.hpp [5:7]
+ boost/hana/ext/std/ratio.hpp [5:7]
+ boost/hana/ext/std/tuple.hpp [5:7]
+ boost/hana/ext/std/vector.hpp [5:8]
+ boost/hana/extend.hpp [5:7]
+ boost/hana/extract.hpp [5:7]
+ boost/hana/fill.hpp [5:7]
+ boost/hana/filter.hpp [5:7]
+ boost/hana/find.hpp [5:7]
+ boost/hana/find_if.hpp [5:8]
+ boost/hana/first.hpp [5:7]
+ boost/hana/flatten.hpp [5:7]
+ boost/hana/fold.hpp [5:7]
+ boost/hana/fold_left.hpp [5:7]
+ boost/hana/fold_right.hpp [5:7]
+ boost/hana/for_each.hpp [5:7]
+ boost/hana/front.hpp [5:7]
+ boost/hana/functional.hpp [5:7]
+ boost/hana/functional/always.hpp [5:7]
+ boost/hana/functional/apply.hpp [5:7]
+ boost/hana/functional/arg.hpp [5:7]
+ boost/hana/functional/capture.hpp [5:7]
+ boost/hana/functional/compose.hpp [5:7]
+ boost/hana/functional/curry.hpp [5:7]
+ boost/hana/functional/demux.hpp [5:7]
+ boost/hana/functional/fix.hpp [5:7]
+ boost/hana/functional/flip.hpp [5:7]
+ boost/hana/functional/id.hpp [5:7]
+ boost/hana/functional/infix.hpp [5:7]
+ boost/hana/functional/iterate.hpp [5:7]
+ boost/hana/functional/lockstep.hpp [5:7]
+ boost/hana/functional/on.hpp [5:7]
+ boost/hana/functional/overload.hpp [5:7]
+ boost/hana/functional/overload_linearly.hpp [5:7]
+ boost/hana/functional/partial.hpp [5:7]
+ boost/hana/functional/placeholder.hpp [5:7]
+ boost/hana/functional/reverse_partial.hpp [5:7]
+ boost/hana/fuse.hpp [5:7]
+ boost/hana/fwd/accessors.hpp [5:7]
+ boost/hana/fwd/adapt_adt.hpp [5:7]
+ boost/hana/fwd/adapt_struct.hpp [5:7]
+ boost/hana/fwd/adjust.hpp [5:7]
+ boost/hana/fwd/adjust_if.hpp [5:7]
+ boost/hana/fwd/all.hpp [5:7]
+ boost/hana/fwd/all_of.hpp [5:7]
+ boost/hana/fwd/and.hpp [5:7]
+ boost/hana/fwd/any.hpp [5:7]
+ boost/hana/fwd/any_of.hpp [5:7]
+ boost/hana/fwd/ap.hpp [5:7]
+ boost/hana/fwd/append.hpp [5:7]
+ boost/hana/fwd/at.hpp [5:7]
+ boost/hana/fwd/at_key.hpp [5:7]
+ boost/hana/fwd/back.hpp [5:7]
+ boost/hana/fwd/basic_tuple.hpp [5:7]
+ boost/hana/fwd/bool.hpp [5:7]
+ boost/hana/fwd/cartesian_product.hpp [5:7]
+ boost/hana/fwd/chain.hpp [5:7]
+ boost/hana/fwd/comparing.hpp [5:7]
+ boost/hana/fwd/concat.hpp [5:7]
+ boost/hana/fwd/concept/applicative.hpp [5:7]
+ boost/hana/fwd/concept/comonad.hpp [5:7]
+ boost/hana/fwd/concept/comparable.hpp [5:7]
+ boost/hana/fwd/concept/constant.hpp [5:7]
+ boost/hana/fwd/concept/euclidean_ring.hpp [5:7]
+ boost/hana/fwd/concept/foldable.hpp [5:7]
+ boost/hana/fwd/concept/functor.hpp [5:7]
+ boost/hana/fwd/concept/group.hpp [5:7]
+ boost/hana/fwd/concept/integral_constant.hpp [5:7]
+ boost/hana/fwd/concept/iterable.hpp [5:7]
+ boost/hana/fwd/concept/logical.hpp [5:7]
+ boost/hana/fwd/concept/metafunction.hpp [5:7]
+ boost/hana/fwd/concept/monad.hpp [5:7]
+ boost/hana/fwd/concept/monad_plus.hpp [5:7]
+ boost/hana/fwd/concept/monoid.hpp [5:7]
+ boost/hana/fwd/concept/orderable.hpp [5:7]
+ boost/hana/fwd/concept/product.hpp [5:7]
+ boost/hana/fwd/concept/ring.hpp [5:7]
+ boost/hana/fwd/concept/searchable.hpp [5:7]
+ boost/hana/fwd/concept/sequence.hpp [5:7]
+ boost/hana/fwd/concept/struct.hpp [5:7]
+ boost/hana/fwd/contains.hpp [5:7]
+ boost/hana/fwd/core.hpp [5:7]
+ boost/hana/fwd/core/common.hpp [5:7]
+ boost/hana/fwd/core/default.hpp [5:7]
+ boost/hana/fwd/core/is_a.hpp [5:7]
+ boost/hana/fwd/core/make.hpp [5:7]
+ boost/hana/fwd/core/tag_of.hpp [5:7]
+ boost/hana/fwd/core/to.hpp [5:7]
+ boost/hana/fwd/core/when.hpp [5:7]
+ boost/hana/fwd/count.hpp [5:7]
+ boost/hana/fwd/count_if.hpp [5:7]
+ boost/hana/fwd/cycle.hpp [5:7]
+ boost/hana/fwd/define_struct.hpp [5:7]
+ boost/hana/fwd/difference.hpp [5:7]
+ boost/hana/fwd/div.hpp [5:7]
+ boost/hana/fwd/drop_back.hpp [5:7]
+ boost/hana/fwd/drop_front.hpp [5:7]
+ boost/hana/fwd/drop_front_exactly.hpp [5:7]
+ boost/hana/fwd/drop_while.hpp [5:7]
+ boost/hana/fwd/duplicate.hpp [5:7]
+ boost/hana/fwd/empty.hpp [5:7]
+ boost/hana/fwd/equal.hpp [5:7]
+ boost/hana/fwd/erase_key.hpp [5:7]
+ boost/hana/fwd/eval.hpp [5:7]
+ boost/hana/fwd/eval_if.hpp [5:7]
+ boost/hana/fwd/extend.hpp [5:7]
+ boost/hana/fwd/extract.hpp [5:7]
+ boost/hana/fwd/fill.hpp [5:7]
+ boost/hana/fwd/filter.hpp [5:7]
+ boost/hana/fwd/find.hpp [5:7]
+ boost/hana/fwd/find_if.hpp [5:7]
+ boost/hana/fwd/first.hpp [5:7]
+ boost/hana/fwd/flatten.hpp [5:7]
+ boost/hana/fwd/fold.hpp [5:7]
+ boost/hana/fwd/fold_left.hpp [5:7]
+ boost/hana/fwd/fold_right.hpp [5:7]
+ boost/hana/fwd/for_each.hpp [5:7]
+ boost/hana/fwd/front.hpp [5:7]
+ boost/hana/fwd/fuse.hpp [5:7]
+ boost/hana/fwd/greater.hpp [5:7]
+ boost/hana/fwd/greater_equal.hpp [5:7]
+ boost/hana/fwd/group.hpp [5:7]
+ boost/hana/fwd/if.hpp [5:7]
+ boost/hana/fwd/index_if.hpp [5:8]
+ boost/hana/fwd/insert.hpp [5:7]
+ boost/hana/fwd/insert_range.hpp [5:7]
+ boost/hana/fwd/integral_constant.hpp [5:7]
+ boost/hana/fwd/intersection.hpp [5:7]
+ boost/hana/fwd/intersperse.hpp [5:7]
+ boost/hana/fwd/is_disjoint.hpp [5:7]
+ boost/hana/fwd/is_empty.hpp [5:7]
+ boost/hana/fwd/is_subset.hpp [5:7]
+ boost/hana/fwd/keys.hpp [5:7]
+ boost/hana/fwd/lazy.hpp [5:7]
+ boost/hana/fwd/length.hpp [5:7]
+ boost/hana/fwd/less.hpp [5:7]
+ boost/hana/fwd/less_equal.hpp [5:7]
+ boost/hana/fwd/lexicographical_compare.hpp [5:7]
+ boost/hana/fwd/lift.hpp [5:7]
+ boost/hana/fwd/map.hpp [5:7]
+ boost/hana/fwd/max.hpp [5:7]
+ boost/hana/fwd/maximum.hpp [5:7]
+ boost/hana/fwd/members.hpp [5:7]
+ boost/hana/fwd/min.hpp [5:7]
+ boost/hana/fwd/minimum.hpp [5:7]
+ boost/hana/fwd/minus.hpp [5:7]
+ boost/hana/fwd/mod.hpp [5:7]
+ boost/hana/fwd/monadic_compose.hpp [5:7]
+ boost/hana/fwd/monadic_fold_left.hpp [5:7]
+ boost/hana/fwd/monadic_fold_right.hpp [5:7]
+ boost/hana/fwd/mult.hpp [5:7]
+ boost/hana/fwd/negate.hpp [5:7]
+ boost/hana/fwd/none.hpp [5:7]
+ boost/hana/fwd/none_of.hpp [5:7]
+ boost/hana/fwd/not.hpp [5:7]
+ boost/hana/fwd/not_equal.hpp [5:7]
+ boost/hana/fwd/one.hpp [5:7]
+ boost/hana/fwd/optional.hpp [5:7]
+ boost/hana/fwd/or.hpp [5:7]
+ boost/hana/fwd/ordering.hpp [5:7]
+ boost/hana/fwd/pair.hpp [5:7]
+ boost/hana/fwd/partition.hpp [5:7]
+ boost/hana/fwd/permutations.hpp [5:7]
+ boost/hana/fwd/plus.hpp [5:7]
+ boost/hana/fwd/power.hpp [5:7]
+ boost/hana/fwd/prefix.hpp [5:7]
+ boost/hana/fwd/prepend.hpp [5:7]
+ boost/hana/fwd/product.hpp [5:7]
+ boost/hana/fwd/range.hpp [5:7]
+ boost/hana/fwd/remove.hpp [5:7]
+ boost/hana/fwd/remove_at.hpp [5:7]
+ boost/hana/fwd/remove_if.hpp [5:7]
+ boost/hana/fwd/remove_range.hpp [5:7]
+ boost/hana/fwd/repeat.hpp [5:7]
+ boost/hana/fwd/replace.hpp [5:7]
+ boost/hana/fwd/replace_if.hpp [5:7]
+ boost/hana/fwd/replicate.hpp [5:7]
+ boost/hana/fwd/reverse.hpp [5:7]
+ boost/hana/fwd/reverse_fold.hpp [5:7]
+ boost/hana/fwd/scan_left.hpp [5:7]
+ boost/hana/fwd/scan_right.hpp [5:7]
+ boost/hana/fwd/second.hpp [5:7]
+ boost/hana/fwd/set.hpp [5:7]
+ boost/hana/fwd/size.hpp [5:7]
+ boost/hana/fwd/slice.hpp [5:7]
+ boost/hana/fwd/sort.hpp [5:7]
+ boost/hana/fwd/span.hpp [5:7]
+ boost/hana/fwd/string.hpp [5:7]
+ boost/hana/fwd/suffix.hpp [5:7]
+ boost/hana/fwd/sum.hpp [5:7]
+ boost/hana/fwd/symmetric_difference.hpp [5:7]
+ boost/hana/fwd/take_back.hpp [5:7]
+ boost/hana/fwd/take_front.hpp [5:7]
+ boost/hana/fwd/take_while.hpp [5:7]
+ boost/hana/fwd/tap.hpp [5:7]
+ boost/hana/fwd/then.hpp [5:7]
+ boost/hana/fwd/transform.hpp [5:7]
+ boost/hana/fwd/tuple.hpp [5:7]
+ boost/hana/fwd/type.hpp [5:7]
+ boost/hana/fwd/unfold_left.hpp [5:7]
+ boost/hana/fwd/unfold_right.hpp [5:7]
+ boost/hana/fwd/union.hpp [5:7]
+ boost/hana/fwd/unique.hpp [5:7]
+ boost/hana/fwd/unpack.hpp [5:7]
+ boost/hana/fwd/value.hpp [5:7]
+ boost/hana/fwd/while.hpp [5:7]
+ boost/hana/fwd/zero.hpp [5:7]
+ boost/hana/fwd/zip.hpp [5:7]
+ boost/hana/fwd/zip_shortest.hpp [5:7]
+ boost/hana/fwd/zip_shortest_with.hpp [5:7]
+ boost/hana/fwd/zip_with.hpp [5:7]
+ boost/hana/greater.hpp [5:7]
+ boost/hana/greater_equal.hpp [5:7]
+ boost/hana/group.hpp [5:7]
+ boost/hana/if.hpp [5:7]
+ boost/hana/index_if.hpp [5:8]
+ boost/hana/insert.hpp [5:7]
+ boost/hana/insert_range.hpp [5:7]
+ boost/hana/integral_constant.hpp [5:7]
+ boost/hana/intersection.hpp [5:7]
+ boost/hana/intersperse.hpp [5:7]
+ boost/hana/is_disjoint.hpp [5:7]
+ boost/hana/is_empty.hpp [5:7]
+ boost/hana/is_subset.hpp [5:7]
+ boost/hana/keys.hpp [5:7]
+ boost/hana/lazy.hpp [5:7]
+ boost/hana/length.hpp [5:7]
+ boost/hana/less.hpp [5:7]
+ boost/hana/less_equal.hpp [5:7]
+ boost/hana/lexicographical_compare.hpp [5:7]
+ boost/hana/lift.hpp [5:7]
+ boost/hana/map.hpp [5:7]
+ boost/hana/max.hpp [5:7]
+ boost/hana/maximum.hpp [5:7]
+ boost/hana/members.hpp [5:7]
+ boost/hana/min.hpp [5:7]
+ boost/hana/minimum.hpp [5:7]
+ boost/hana/minus.hpp [5:7]
+ boost/hana/mod.hpp [5:7]
+ boost/hana/monadic_compose.hpp [5:7]
+ boost/hana/monadic_fold_left.hpp [5:7]
+ boost/hana/monadic_fold_right.hpp [5:7]
+ boost/hana/mult.hpp [5:7]
+ boost/hana/negate.hpp [5:7]
+ boost/hana/none.hpp [5:7]
+ boost/hana/none_of.hpp [5:7]
+ boost/hana/not.hpp [5:7]
+ boost/hana/not_equal.hpp [5:7]
+ boost/hana/one.hpp [5:7]
+ boost/hana/optional.hpp [5:7]
+ boost/hana/or.hpp [5:7]
+ boost/hana/ordering.hpp [5:7]
+ boost/hana/pair.hpp [5:7]
+ boost/hana/partition.hpp [5:7]
+ boost/hana/permutations.hpp [5:7]
+ boost/hana/plus.hpp [5:7]
+ boost/hana/power.hpp [5:7]
+ boost/hana/prefix.hpp [5:7]
+ boost/hana/prepend.hpp [5:7]
+ boost/hana/product.hpp [5:7]
+ boost/hana/range.hpp [5:7]
+ boost/hana/remove.hpp [5:7]
+ boost/hana/remove_at.hpp [5:7]
+ boost/hana/remove_if.hpp [5:7]
+ boost/hana/remove_range.hpp [5:7]
+ boost/hana/repeat.hpp [5:7]
+ boost/hana/replace.hpp [5:7]
+ boost/hana/replace_if.hpp [5:7]
+ boost/hana/replicate.hpp [5:7]
+ boost/hana/reverse.hpp [5:7]
+ boost/hana/reverse_fold.hpp [5:7]
+ boost/hana/scan_left.hpp [5:7]
+ boost/hana/scan_right.hpp [5:7]
+ boost/hana/second.hpp [5:7]
+ boost/hana/set.hpp [5:7]
+ boost/hana/size.hpp [5:7]
+ boost/hana/slice.hpp [5:7]
+ boost/hana/sort.hpp [5:7]
+ boost/hana/span.hpp [5:7]
+ boost/hana/string.hpp [5:7]
+ boost/hana/suffix.hpp [5:7]
+ boost/hana/sum.hpp [5:7]
+ boost/hana/symmetric_difference.hpp [5:7]
+ boost/hana/take_back.hpp [5:7]
+ boost/hana/take_front.hpp [5:7]
+ boost/hana/take_while.hpp [5:7]
+ boost/hana/tap.hpp [5:7]
+ boost/hana/then.hpp [5:7]
+ boost/hana/traits.hpp [6:8]
+ boost/hana/transform.hpp [5:7]
+ boost/hana/tuple.hpp [5:8]
+ boost/hana/type.hpp [5:7]
+ boost/hana/unfold_left.hpp [5:7]
+ boost/hana/unfold_right.hpp [5:7]
+ boost/hana/union.hpp [5:7]
+ boost/hana/unique.hpp [5:7]
+ boost/hana/unpack.hpp [5:7]
+ boost/hana/value.hpp [5:7]
+ boost/hana/version.hpp [5:7]
+ boost/hana/while.hpp [5:7]
+ boost/hana/zero.hpp [5:7]
+ boost/hana/zip.hpp [5:7]
+ boost/hana/zip_shortest.hpp [5:7]
+ boost/hana/zip_shortest_with.hpp [5:7]
+ boost/hana/zip_with.hpp [5:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL aaff3eaecad3b3ed7e234cf1c70b346a
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
+ // Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/throw_exception.hpp [19:20]
+
+KEEP COPYRIGHT_SERVICE_LABEL aaff8fbf592953725a89204981472fff
+BELONGS ya.make
+ License text:
+ // Copyright Beman Dawes, 2009
+ // Copyright (C) 2011-2012 Vicente J. Botet Escriba
+ // Copyright (C) 2012 Anthony Williams
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/core/scoped_enum.hpp [3:5]
+ boost/core/underlying_type.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL ab0e461ec3c22b7d8e543cb65284d5ae
+BELONGS ya.make
+ License text:
+ * Copyright (c) 2009 Helge Bahmann
+ * Copyright (c) 2012 Tim Blechmann
+ * Copyright (c) 2013 - 2018 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/atomic/detail/bitwise_cast.hpp [6:8]
+ boost/atomic/detail/caps_gcc_alpha.hpp [6:8]
+ boost/atomic/detail/caps_gcc_arm.hpp [6:10]
+ boost/atomic/detail/caps_gcc_ppc.hpp [6:8]
+ boost/atomic/detail/caps_gcc_x86.hpp [6:8]
+ boost/atomic/detail/caps_msvc_arm.hpp [6:8]
+ boost/atomic/detail/caps_msvc_x86.hpp [6:8]
+ boost/atomic/detail/caps_windows.hpp [6:8]
+ boost/atomic/detail/interlocked.hpp [4:5]
+ boost/atomic/detail/ops_gcc_alpha.hpp [6:8]
+ boost/atomic/detail/ops_gcc_arm.hpp [6:8]
+ boost/atomic/detail/ops_gcc_arm_common.hpp [6:8]
+ boost/atomic/detail/ops_gcc_ppc.hpp [6:8]
+ boost/atomic/detail/ops_gcc_ppc_common.hpp [6:8]
+ boost/atomic/detail/ops_gcc_x86.hpp [6:8]
+ boost/atomic/detail/ops_gcc_x86_dcas-linux.hpp [6:8]
+ boost/atomic/detail/ops_gcc_x86_dcas-osx.hpp [6:8]
+ boost/atomic/detail/ops_gcc_x86_dcas.hpp [6:8]
+ boost/atomic/detail/ops_msvc_arm.hpp [6:8]
+ boost/atomic/detail/ops_msvc_common.hpp [6:8]
+ boost/atomic/detail/ops_msvc_x86.hpp [6:8]
+ boost/atomic/detail/ops_windows.hpp [6:8]
+ boost/atomic/detail/platform.hpp [6:7]
+ boost/atomic/detail/storage_type.hpp [6:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL ab1582f8f7920ffaebfb8d0874561682
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2017 Barend Gehrels, Amsterdam, the Netherlands.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/correct_closure.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/handle_self_turns.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL ab52442e18290412f599104f036282c6
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/intel.hpp [1:10]
+ boost/config/compiler/sunpro_cc.hpp [1:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL ab55c1af00e5063abe7c47185db8e544
+BELONGS ya.make
+ License text:
+ Copyright (c) 2011 Eric Niebler
+ Copyright (c) 2015 Kohei Takahashi
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/algorithm/iteration/accumulate_fwd.hpp [2:3]
+ boost/fusion/algorithm/iteration/detail/segmented_fold.hpp [2:2]
+ boost/fusion/algorithm/iteration/detail/segmented_for_each.hpp [2:2]
+ boost/fusion/algorithm/iteration/fold_fwd.hpp [2:2]
+ boost/fusion/algorithm/iteration/for_each_fwd.hpp [2:2]
+ boost/fusion/algorithm/iteration/iter_fold_fwd.hpp [2:2]
+ boost/fusion/algorithm/iteration/reverse_fold_fwd.hpp [2:2]
+ boost/fusion/algorithm/iteration/reverse_iter_fold_fwd.hpp [2:2]
+ boost/fusion/algorithm/query/detail/segmented_find.hpp [2:2]
+ boost/fusion/algorithm/query/detail/segmented_find_if.hpp [2:2]
+ boost/fusion/algorithm/query/find.hpp [2:3]
+ boost/fusion/algorithm/query/find_fwd.hpp [2:2]
+ boost/fusion/algorithm/query/find_if.hpp [2:3]
+ boost/fusion/algorithm/query/find_if_fwd.hpp [2:2]
+ boost/fusion/container/list/detail/reverse_cons.hpp [2:2]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector10_fwd.hpp [2:3]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector20_fwd.hpp [2:3]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector30_fwd.hpp [2:3]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector40_fwd.hpp [2:3]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector50_fwd.hpp [2:3]
+ boost/fusion/container/vector/detail/cpp03/vector10_fwd.hpp [3:4]
+ boost/fusion/container/vector/detail/cpp03/vector10_fwd.hpp [31:32]
+ boost/fusion/container/vector/detail/cpp03/vector20_fwd.hpp [3:4]
+ boost/fusion/container/vector/detail/cpp03/vector20_fwd.hpp [25:26]
+ boost/fusion/container/vector/detail/cpp03/vector30_fwd.hpp [3:4]
+ boost/fusion/container/vector/detail/cpp03/vector30_fwd.hpp [25:26]
+ boost/fusion/container/vector/detail/cpp03/vector40_fwd.hpp [3:4]
+ boost/fusion/container/vector/detail/cpp03/vector40_fwd.hpp [25:26]
+ boost/fusion/container/vector/detail/cpp03/vector50_fwd.hpp [3:4]
+ boost/fusion/container/vector/detail/cpp03/vector50_fwd.hpp [25:26]
+ boost/fusion/include/is_segmented.hpp [2:2]
+ boost/fusion/include/segmented_fold_until.hpp [2:2]
+ boost/fusion/include/segmented_iterator.hpp [2:2]
+ boost/fusion/include/segments.hpp [2:2]
+ boost/fusion/iterator/detail/segment_sequence.hpp [2:2]
+ boost/fusion/iterator/detail/segmented_equal_to.hpp [2:2]
+ boost/fusion/iterator/detail/segmented_iterator.hpp [2:2]
+ boost/fusion/iterator/detail/segmented_next_impl.hpp [2:2]
+ boost/fusion/iterator/segmented_iterator.hpp [2:2]
+ boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp [2:2]
+ boost/fusion/sequence/intrinsic/detail/segmented_begin_impl.hpp [2:2]
+ boost/fusion/sequence/intrinsic/detail/segmented_end.hpp [2:2]
+ boost/fusion/sequence/intrinsic/detail/segmented_end_impl.hpp [2:2]
+ boost/fusion/sequence/intrinsic/detail/segmented_size.hpp [2:2]
+ boost/fusion/support/detail/segmented_fold_until_impl.hpp [2:2]
+ boost/fusion/support/segmented_fold_until.hpp [2:2]
+ boost/fusion/view/iterator_range/detail/is_segmented_impl.hpp [2:2]
+ boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp [2:2]
+ boost/fusion/view/iterator_range/detail/segments_impl.hpp [2:2]
+ boost/fusion/view/iterator_range/detail/size_impl.hpp [2:2]
+ boost/fusion/view/joint_view/joint_view_fwd.hpp [2:2]
+ boost/fusion/view/single_view/detail/advance_impl.hpp [2:2]
+ boost/fusion/view/single_view/detail/at_impl.hpp [2:2]
+ boost/fusion/view/single_view/detail/begin_impl.hpp [2:3]
+ boost/fusion/view/single_view/detail/deref_impl.hpp [2:3]
+ boost/fusion/view/single_view/detail/distance_impl.hpp [2:2]
+ boost/fusion/view/single_view/detail/end_impl.hpp [2:3]
+ boost/fusion/view/single_view/detail/equal_to_impl.hpp [2:2]
+ boost/fusion/view/single_view/detail/next_impl.hpp [2:3]
+ boost/fusion/view/single_view/detail/prior_impl.hpp [2:2]
+ boost/fusion/view/single_view/detail/size_impl.hpp [2:2]
+ boost/fusion/view/single_view/detail/value_at_impl.hpp [2:2]
+ boost/fusion/view/single_view/detail/value_of_impl.hpp [2:3]
+ boost/fusion/view/single_view/single_view.hpp [2:3]
+ boost/fusion/view/single_view/single_view_iterator.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL ab6e44ab43f9d94c918f3af9054f4430
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/comeau.hpp [1:8]
+ boost/config/platform/irix.hpp [1:4]
+ boost/config/platform/solaris.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL ab71254ad02f316b826c74cda23fc7de
+BELONGS ya.make
+ License text:
+ // Copyright 2001 Universite Joseph Fourier, Grenoble.
+ // Author: Francois Faure
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/adjacency_list_io.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL ab774de6282a1b30f7f425fb700259c5
+BELONGS ya.make
+ License text:
+ // This file was modified by Oracle on 2016, 2017.
+ // Modifications copyright (c) 2016-2017, Oracle and/or its affiliates.
+ // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/strategies/cartesian/area.hpp [8:9]
+ boost/geometry/strategies/cartesian/area_surveyor.hpp [8:9]
+ boost/geometry/strategies/cartesian/box_in_box.hpp [8:9]
+ boost/geometry/strategies/intersection_strategies.hpp [5:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL ab7b56c39397a34cede4359db0be9235
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2008, 2016 Tim Blechmann
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/lockfree/detail/tagged_ptr.hpp [3:3]
+ boost/lockfree/detail/tagged_ptr_dcas.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL ac00ecc6c5b600ddc218a5925ef8d1c6
+BELONGS ya.make
+ License text:
+ // This file was modified by Oracle on 2014, 2015.
+ // Modifications copyright (c) 2014-2015 Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/centroid.hpp [8:9]
+ boost/geometry/algorithms/convex_hull.hpp [7:8]
+ boost/geometry/io/wkt/read.hpp [8:9]
+
+KEEP COPYRIGHT_SERVICE_LABEL ac019423baf07909ddd9038922e85359
+BELONGS ya.make
+ License text:
+ // Copyright 2005 The Trustees of Indiana University.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/accounting.hpp [1:1]
+ boost/graph/detail/indexed_properties.hpp [1:1]
+ boost/graph/dimacs.hpp [1:1]
+ boost/graph/distributed/hohberg_biconnected_components.hpp [1:1]
+ boost/graph/graph_stats.hpp [1:1]
+ boost/graph/metis.hpp [1:1]
+ boost/graph/parallel/basic_reduce.hpp [1:1]
+ boost/graph/parallel/detail/inplace_all_to_all.hpp [1:1]
+ boost/property_map/parallel/basic_reduce.hpp [1:1]
+ boost/property_map/parallel/global_index_map.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL ac25c56d5929cc20ba4b94f51c899d05
+BELONGS ya.make
+ License text:
+ // Copyright 2011, Andrew Ross
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/polygon/detail/polygon_simplify.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL ac35770391c69072ea1722a98afaa216
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/facilities/is_1.hpp at line 5, boost/preprocessor/facilities/is_empty.hpp at line 5, boost/preprocessor/facilities/is_empty_or_1.hpp at line 5
+ License text:
+ \# * (C) Copyright Paul Mensonides 2003.
+ \# * Distributed under the Boost Software License, Version 1.0. (See
+ \# * accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/preprocessor/facilities/is_1.hpp [3:5]
+ boost/preprocessor/facilities/is_empty.hpp [3:6]
+ boost/preprocessor/facilities/is_empty_or_1.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL ac779fd1b3e977a7dddb992cc87eb8b1
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2006-7, 2013-14.
+ // Copyright Paul A. Bristow 2007, 2013-14.
+ // Copyright Nikhar Agrawal 2013-14
+ // Copyright Christopher Kormanyos 2013-14
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/gamma.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL ac83ed7b90a09af352c97496e6042a0d
+BELONGS ya.make
+ License text:
+ // Copyright Frank Mori Hess 2009
+ // Use, modification and
+ // distribution is subject to the Boost Software License, Version
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/signals2/detail/foreign_ptr.hpp [4:6]
+ boost/signals2/detail/preprocessed_arg_type_template.hpp [1:1]
+ boost/signals2/detail/variadic_arg_type.hpp [1:1]
+ boost/signals2/detail/variadic_slot_invoker.hpp [7:9]
+ boost/signals2/signal_type.hpp [9:11]
+ boost/signals2/slot.hpp [3:3]
+ boost/signals2/variadic_signal.hpp [8:10]
+ boost/signals2/variadic_slot.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL acc348f5a2ea4eaed65d2d40f169ca8e
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2018 Adam Wulkiewicz, Lodz, Poland.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/formulas/andoyer_inverse.hpp [3:3]
+ boost/geometry/formulas/vincenty_inverse.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL accedf6178f4d186ddc5b8d4eb049fb4
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2002-2003 Eric Friedman
+ // Copyright (c) 2014-2017 Antony Polukhin
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/variant/detail/apply_visitor_binary.hpp [6:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL acec60e7a5ccc2aee8d37ebb5ffda3a2
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2009 Joel de Guzman
+ Copyright (c) 2009-2010 Hartmut Kaiser
+ Copyright (c) 2010-2011 Christopher Schmidt
+ Copyright (c) 2013-2014 Damien Buhl
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/adapted/adt/adapt_adt.hpp [2:5]
+ boost/fusion/adapted/adt/adapt_assoc_adt.hpp [2:5]
+ boost/fusion/adapted/adt/detail/adapt_base_assoc_attr_filler.hpp [2:2]
+ boost/fusion/adapted/adt/detail/adapt_base_attr_filler.hpp [2:2]
+ boost/fusion/adapted/struct/adapt_struct.hpp [2:4]
+ boost/fusion/adapted/struct/detail/adapt_auto.hpp [2:2]
+ boost/fusion/adapted/struct/detail/adapt_base.hpp [2:5]
+ boost/fusion/adapted/struct/detail/adapt_base_assoc_attr_filler.hpp [2:2]
+ boost/fusion/adapted/struct/detail/adapt_base_attr_filler.hpp [2:2]
+ boost/fusion/adapted/struct/detail/adapt_is_tpl.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL ad300b162eb925702ac6418338faee35
+BELONGS libs/ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: libs/test/src/decorator.cpp at line 3
+ License text:
+ // (C) Copyright Gennadiy Rozental 2011.
+ // Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/test/execution_monitor.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9972952826dfbd3f9309f8cd6b78c915
-BELONGS ya.make
- License text:
- Copyright (c) 2011-2011: Joachim Faulhaber
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/icl/concept/interval_associator_base.hpp [2:2]
- boost/icl/type_traits/is_increasing.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 999dbbff90149cd716b12c15b568fa5b
-BELONGS ya.make
- License text:
- // Copyright 2014 Neil Groves
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/range/adaptor/indexed.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 99abaad3f00b1da4f1a516051a6dbe16
-BELONGS ya.make
- License text:
- // Copyright (c) 2017-2018, Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/densify.hpp [3:3]
- boost/geometry/srs/projections/esri_traits.hpp [3:4]
- boost/geometry/srs/projections/iau2000_traits.hpp [3:4]
- boost/geometry/srs/projections/invalid_point.hpp [3:4]
- boost/geometry/srs/projections/par4.hpp [3:4]
- boost/geometry/strategies/cartesian/densify.hpp [3:3]
- boost/geometry/strategies/geographic/densify.hpp [3:3]
- boost/geometry/strategies/geographic/distance_cross_track_box_box.hpp [3:3]
- boost/geometry/strategies/geographic/distance_cross_track_point_box.hpp [3:3]
- boost/geometry/strategies/spherical/densify.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 99b0e8de6a1418d7b7de62fe775f9abf
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/smart_ptr/detail/shared_count.hpp at line 9
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/interprocess/smart_ptr/detail/shared_count.hpp [5:9]
-
-KEEP COPYRIGHT_SERVICE_LABEL 99d17d19ab9b1eb6918fe74af3b2dad8
-BELONGS ya.make
- License text:
- Copyright (c) 2011 Aaron Graham
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/repository/include/qi_advance.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 99d56be2b42ec28cbfbc4305e55852a9
-BELONGS ya.make
- License text:
- // Copyright Aleksey Gurtovoy 2006
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/aux_/config/pp_counter.hpp [5:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 99e28477ea4db48cac3c5f12e2cf6ff1
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/statechart/asynchronous_state_machine.hpp at line 6, boost/statechart/custom_reaction.hpp at line 6, boost/statechart/deep_history.hpp at line 6, boost/statechart/deferral.hpp at line 6, boost/statechart/detail/avoid_unused_warning.hpp at line 6, boost/statechart/detail/constructor.hpp at line 6, boost/statechart/detail/counted_base.hpp at line 6, boost/statechart/detail/leaf_state.hpp at line 6, boost/statechart/detail/node_state.hpp at line 6, boost/statechart/event_base.hpp at line 6, boost/statechart/exception_translator.hpp at line 6, boost/statechart/fifo_scheduler.hpp at line 6, boost/statechart/history.hpp at line 6, boost/statechart/null_exception_translator.hpp at line 6, boost/statechart/shallow_history.hpp at line 6, boost/statechart/state.hpp at line 6, boost/statechart/termination.hpp at line 6
- License text:
- // Copyright 2002-2006 Andreas Huber Doenni
- // Distributed under the Boost Software License, Version 1.0. (See accompany-
- // ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/statechart/asynchronous_state_machine.hpp [4:6]
- boost/statechart/custom_reaction.hpp [4:6]
- boost/statechart/deep_history.hpp [4:6]
- boost/statechart/deferral.hpp [4:6]
- boost/statechart/detail/avoid_unused_warning.hpp [4:6]
- boost/statechart/detail/constructor.hpp [4:6]
- boost/statechart/detail/counted_base.hpp [4:6]
- boost/statechart/detail/leaf_state.hpp [4:6]
- boost/statechart/detail/node_state.hpp [4:6]
- boost/statechart/event_base.hpp [4:6]
- boost/statechart/exception_translator.hpp [4:6]
- boost/statechart/fifo_scheduler.hpp [4:6]
- boost/statechart/history.hpp [4:6]
- boost/statechart/null_exception_translator.hpp [4:6]
- boost/statechart/shallow_history.hpp [4:6]
- boost/statechart/state.hpp [4:6]
- boost/statechart/termination.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 99e30e6c24834a627e69d8d2bffc84d4
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/endian.hpp at line 3
- License text:
- // Copyright 2013 Rene Rivera
- // Distributed under the Boost Software License, Version 1.0. (See accompany-
- // ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/detail/endian.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9a27310a64ac7fa13d0d55e8ac6f25e5
-BELONGS ya.make
- License text:
- // Copyright (c) 2000-2007
- // Joerg Walter, Mathias Koch, Gunter Winkler
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/ublas/matrix_sparse.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9a4ec699eab8989d68e34663ac7edf6a
-BELONGS ya.make
- License text:
- // Copyright (c) 2010 Ilya Murav'jov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/range/adaptor/indexed.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9a63cb87e8c2a3dd336d616478d5f492
-BELONGS ya.make
- License text:
- Copyright (c) 2005-2008 Hartmut Kaiser
- Copyright (c) 2005-2010 Joel de Guzman
- Copyright (c) 2014-2015 John Fletcher
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/phoenix/fusion/at.hpp [2:4]
- boost/phoenix/version.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9a76da02cc5d44aea9b67b645c93e835
-BELONGS ya.make
- License text:
- // Copyright (C) 2017 Andrzej Krzemienski.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/optional/detail/experimental_traits.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9a80ad510090429b11292e780f492281
-BELONGS ya.make
- License text:
- // Copyright (c) 2014, Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/check_iterator_range.hpp [3:3]
- boost/geometry/algorithms/detail/closest_feature/geometry_to_range.hpp [3:3]
- boost/geometry/algorithms/detail/closest_feature/point_to_range.hpp [3:3]
- boost/geometry/algorithms/detail/closest_feature/range_to_range.hpp [3:3]
- boost/geometry/algorithms/detail/distance/box_to_box.hpp [3:3]
- boost/geometry/algorithms/detail/distance/geometry_to_segment_or_box.hpp [3:3]
- boost/geometry/algorithms/detail/distance/is_comparable.hpp [3:3]
- boost/geometry/algorithms/detail/distance/iterator_selector.hpp [3:3]
- boost/geometry/algorithms/detail/distance/linear_or_areal_to_areal.hpp [3:3]
- boost/geometry/algorithms/detail/distance/linear_to_linear.hpp [3:3]
- boost/geometry/algorithms/detail/distance/multipoint_to_geometry.hpp [3:3]
- boost/geometry/algorithms/detail/distance/range_to_geometry_rtree.hpp [3:3]
- boost/geometry/algorithms/detail/distance/segment_to_box.hpp [3:3]
- boost/geometry/algorithms/detail/distance/segment_to_segment.hpp [3:3]
- boost/geometry/algorithms/detail/is_simple/implementation.hpp [3:3]
- boost/geometry/algorithms/detail/is_valid/complement_graph.hpp [3:3]
- boost/geometry/algorithms/detail/is_valid/debug_complement_graph.hpp [3:3]
- boost/geometry/algorithms/detail/is_valid/debug_validity_phase.hpp [3:3]
- boost/geometry/algorithms/detail/is_valid/implementation.hpp [3:3]
- boost/geometry/algorithms/detail/num_distinct_consecutive_points.hpp [3:3]
- boost/geometry/algorithms/detail/turns/debug_turn.hpp [3:3]
- boost/geometry/algorithms/detail/turns/filter_continue_turns.hpp [3:3]
- boost/geometry/algorithms/detail/turns/print_turns.hpp [3:3]
- boost/geometry/algorithms/detail/turns/remove_duplicate_turns.hpp [3:3]
- boost/geometry/algorithms/dispatch/is_simple.hpp [3:3]
- boost/geometry/algorithms/dispatch/is_valid.hpp [3:3]
- boost/geometry/algorithms/is_simple.hpp [3:3]
- boost/geometry/algorithms/is_valid.hpp [3:3]
- boost/geometry/algorithms/num_segments.hpp [3:3]
- boost/geometry/geometries/pointing_segment.hpp [3:3]
- boost/geometry/iterators/concatenate_iterator.hpp [3:3]
- boost/geometry/iterators/detail/point_iterator/inner_range_type.hpp [3:3]
- boost/geometry/iterators/detail/point_iterator/iterator_type.hpp [3:3]
- boost/geometry/iterators/detail/point_iterator/value_type.hpp [3:3]
- boost/geometry/iterators/detail/segment_iterator/iterator_type.hpp [3:3]
- boost/geometry/iterators/detail/segment_iterator/range_segment_iterator.hpp [3:3]
- boost/geometry/iterators/dispatch/point_iterator.hpp [3:3]
- boost/geometry/iterators/dispatch/segment_iterator.hpp [3:3]
- boost/geometry/iterators/flatten_iterator.hpp [3:3]
- boost/geometry/iterators/has_one_element.hpp [3:3]
- boost/geometry/iterators/point_iterator.hpp [3:3]
- boost/geometry/iterators/point_reverse_iterator.hpp [3:3]
- boost/geometry/iterators/segment_iterator.hpp [3:3]
- boost/geometry/policies/predicate_based_interrupt_policy.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9a830292eb7d7692c5b622def685d36a
-BELONGS libs/filesystem/ya.make ya.make
- License text:
- // Copyright Beman Dawes 2009
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/filesystem/path_traits.hpp [3:3]
- libs/filesystem/src/codecvt_error_category.cpp [3:3]
- libs/filesystem/src/windows_file_codecvt.cpp [3:3]
- libs/filesystem/src/windows_file_codecvt.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9b0d133607a0597027f2dd9d6a130cfe
-BELONGS ya.make
- License text:
- // Copyright (c) 2002 Eric Friedman, Itay Maman
- // Copyright (c) 2016-2017 Antony Polukhin
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/variant/recursive_wrapper_fwd.hpp [6:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9b8104e4a1112de174366bab10c22757
-BELONGS ya.make
- License text:
- // (C) Copyright John Maddock 2006.
- // (C) Copyright Jeremy William Murphy 2015.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/tools/polynomial.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9bd4b980f484c78b17c8d7c57d64bb74
-BELONGS ya.make
- License text:
- @copyright Louis Dionne 2013-2016
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/hana/detail/ebo.hpp [5:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9c202b68cb8cb773e5f594c9cb634928
-BELONGS ya.make
- License text:
- // Copyright Eric Niebler 2008
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/char.hpp [5:5]
- boost/mpl/char_fwd.hpp [5:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9c35799cf91685e1cfa7ef2db4a88cb7
-BELONGS ya.make
- License text:
- // Copyright Beman Dawes, 2009
- // Copyright (C) 2011-2012 Vicente J. Botet Escriba
- // Copyright (C) 2012 Anthony Williams
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/core/scoped_enum.hpp [3:5]
- boost/core/underlying_type.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9c5be5a59c66b2bcbb6b46ce3adf1175
-BELONGS ya.make
- License text:
- // Copyright Aleksey Gurtovoy 2001-2008
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/aux_/config/compiler.hpp [5:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9ccbeffbf66f48cc1052a24852fc9ca2
-BELONGS ya.make
- License text:
- // Copyright Aleksey Gurtovoy 2000-2004
- // Copyright Peter Dimov 2000-2003
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/aux_/type_wrapper.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9ce6fa34c3edd9c7902c5acb69aa2095
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/filesystem/convenience.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/filesystem/convenience.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9cf9d5ea6d40a88eeda2127bd41fc81a
-BELONGS ya.make
- License text:
- // Copyright (C) 2012 Flavio De Lorenzi (fdlorenzi@gmail.com)
- // Copyright (C) 2013 Jakob Lykke Andersen, University of Southern Denmark (jlandersen@imada.sdu.dk)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/vf2_sub_graph_iso.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9d08918c66a0d366cbbae02999f8438d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/transitive_closure.hpp at line 4, boost/graph/vector_as_graph.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/transitive_closure.hpp [1:4]
- boost/graph/vector_as_graph.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9d195dfaf2f01572424e02192d7f0ba0
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/detail/suffix.hpp at line 14
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/detail/suffix.hpp [4:14]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9d1c4732b4bc51a1628e9ff1edeccd54
-BELONGS ya.make
- License text:
- // (C) Copyright David Abrahams 2001, Howard Hinnant 2001.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/detail/numeric_traits.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9d30d1a61743fde4bb0f00ff80c68d32
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2014 Joel de Guzman
- Copyright (c) 2013-2014 Agustin Berge
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/x3/auxiliary/any_parser.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9d615a07fa55ba7bc529219f2b7e3de1
-BELONGS ya.make
- License text:
- // This file was modified by Oracle on 2014.
- // Modifications copyright (c) 2014, Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/append.hpp [7:8]
- boost/geometry/algorithms/comparable_distance.hpp [7:8]
- boost/geometry/algorithms/detail/comparable_distance/implementation.hpp [7:8]
- boost/geometry/algorithms/detail/comparable_distance/interface.hpp [7:8]
- boost/geometry/algorithms/detail/counting.hpp [8:9]
- boost/geometry/algorithms/detail/course.hpp [5:6]
- boost/geometry/algorithms/detail/distance/backward_compatibility.hpp [8:9]
- boost/geometry/algorithms/detail/distance/default_strategies.hpp [8:9]
- boost/geometry/algorithms/detail/distance/implementation.hpp [8:9]
- boost/geometry/algorithms/detail/distance/interface.hpp [9:10]
- boost/geometry/algorithms/detail/distance/point_to_geometry.hpp [8:9]
- boost/geometry/algorithms/detail/intersection/box_box.hpp [5:6]
- boost/geometry/algorithms/detail/intersection/implementation.hpp [5:6]
- boost/geometry/algorithms/dispatch/distance.hpp [8:9]
- boost/geometry/algorithms/distance.hpp [8:9]
- boost/geometry/algorithms/for_each.hpp [8:9]
- boost/geometry/algorithms/intersection.hpp [5:6]
- boost/geometry/algorithms/num_geometries.hpp [7:8]
- boost/geometry/algorithms/num_interior_rings.hpp [7:8]
- boost/geometry/algorithms/num_points.hpp [8:9]
- boost/geometry/algorithms/perimeter.hpp [7:8]
- boost/geometry/core/cs.hpp [7:8]
- boost/geometry/geometries/concepts/point_concept.hpp [7:8]
- boost/geometry/geometries/point.hpp [8:9]
- boost/geometry/multi/algorithms/append.hpp [7:8]
- boost/geometry/multi/algorithms/disjoint.hpp [7:8]
- boost/geometry/multi/algorithms/distance.hpp [7:8]
- boost/geometry/multi/algorithms/intersection.hpp [5:6]
- boost/geometry/multi/algorithms/num_interior_rings.hpp [7:8]
- boost/geometry/multi/algorithms/num_points.hpp [7:8]
- boost/geometry/strategies/cartesian/distance_projected_point.hpp [7:8]
- boost/geometry/strategies/cartesian/distance_projected_point_ax.hpp [7:8]
- boost/geometry/strategies/cartesian/distance_pythagoras_box_box.hpp [7:8]
- boost/geometry/strategies/cartesian/distance_pythagoras_point_box.hpp [7:8]
- boost/geometry/strategies/concepts/distance_concept.hpp [7:8]
- boost/geometry/strategies/default_comparable_distance_result.hpp [7:8]
- boost/geometry/strategies/default_distance_result.hpp [7:8]
- boost/geometry/strategies/default_length_result.hpp [7:8]
- boost/geometry/strategies/distance.hpp [7:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9d61a324506c4d173913e476c3c6b6fb
-BELONGS ya.make
- License text:
- // Copyright (c) 2004 Ralf Mattethat
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/intrusive/splaytree_algorithms.hpp [21:21]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9d7e6c44ce3f4d9421921fa598d30bcd
-BELONGS ya.make
- License text:
- Copyright (c) 2007-2011 Hartmut Kaiser
- Copyright (c) Christopher Diggins 2005
- Copyright (c) Pablo Aguilar 2005
- Copyright (c) Kevlin Henney 2001
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/support/detail/hold_any.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9dd6cc82d1321a1d229916f828efdc75
-BELONGS ya.make
- License text:
- // Copyright (C) 2003, 2008 Fernando Luis Cacciola Carballal.
- // Copyright (C) 2014 - 2017 Andrzej Krzemienski.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/optional/optional.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9e52c94c44dd3a954dc775cd9412a692
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/bessel.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9e78e97c56e37398708eef8a5a55ee96
-BELONGS ya.make
- License text:
- // Copyright Beman Dawes 2003, 2006, 2010
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/system/api_config.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9eafab1767cf5f9fa3c793e883e1c318
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/utility.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/utility.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9f16b7a4959de78b0a599e95ee75c84e
-BELONGS ya.make
- License text:
- // to the right implementation method. Most of the implementation details
- // are in separate headers and copyright Xiaogang Zhang.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/bessel.hpp [8:9]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9f22f5d5569d36c36ab19ecf517c15c0
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2006 Dan Marsden
- Copyright (c) 2009-2010 Christopher Schmidt
- Copyright (c) 2015 Kohei Takahashi
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/algorithm/iteration/detail/fold.hpp [2:5]
- boost/fusion/algorithm/transformation/detail/preprocessed/zip10.hpp [2:3]
- boost/fusion/algorithm/transformation/detail/preprocessed/zip20.hpp [2:3]
- boost/fusion/algorithm/transformation/detail/preprocessed/zip30.hpp [2:3]
- boost/fusion/algorithm/transformation/detail/preprocessed/zip40.hpp [2:3]
- boost/fusion/algorithm/transformation/detail/preprocessed/zip50.hpp [2:3]
- boost/fusion/algorithm/transformation/join.hpp [2:3]
- boost/fusion/algorithm/transformation/zip.hpp [2:3]
- boost/fusion/algorithm/transformation/zip.hpp [43:44]
- boost/fusion/container/deque/convert.hpp [2:3]
- boost/fusion/container/deque/detail/cpp03/as_deque.hpp [2:3]
- boost/fusion/container/generation/detail/pp_deque_tie.hpp [2:3]
- boost/fusion/container/generation/detail/pp_make_deque.hpp [2:3]
- boost/fusion/container/generation/detail/pp_map_tie.hpp [2:3]
- boost/fusion/container/generation/pair_tie.hpp [2:3]
- boost/fusion/sequence/intrinsic/at_key.hpp [2:3]
- boost/fusion/sequence/intrinsic/swap.hpp [2:3]
- boost/fusion/sequence/intrinsic/value_at_key.hpp [2:3]
- boost/fusion/view/detail/strictest_traversal.hpp [2:3]
- boost/fusion/view/nview.hpp [2:4]
- boost/fusion/view/zip_view.hpp [2:3]
- boost/fusion/view/zip_view/detail/advance_impl.hpp [2:3]
- boost/fusion/view/zip_view/detail/at_impl.hpp [2:3]
- boost/fusion/view/zip_view/detail/begin_impl.hpp [2:3]
- boost/fusion/view/zip_view/detail/deref_impl.hpp [2:3]
- boost/fusion/view/zip_view/detail/distance_impl.hpp [2:3]
- boost/fusion/view/zip_view/detail/end_impl.hpp [2:3]
- boost/fusion/view/zip_view/detail/equal_to_impl.hpp [2:3]
- boost/fusion/view/zip_view/detail/next_impl.hpp [2:3]
- boost/fusion/view/zip_view/detail/prior_impl.hpp [2:3]
- boost/fusion/view/zip_view/detail/size_impl.hpp [2:3]
- boost/fusion/view/zip_view/detail/value_at_impl.hpp [2:3]
- boost/fusion/view/zip_view/detail/value_of_impl.hpp [2:3]
- boost/fusion/view/zip_view/zip_view.hpp [2:3]
- boost/fusion/view/zip_view/zip_view_iterator.hpp [2:3]
- boost/fusion/view/zip_view/zip_view_iterator_fwd.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9f416aa8f1e6678b0d6d5857d642b969
-BELONGS ya.make
- License text:
- // Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/bind/arg.hpp [13:13]
- boost/bind/make_adaptable.hpp [7:7]
- boost/bind/placeholders.hpp [13:14]
- boost/bind/protect.hpp [7:8]
- boost/current_function.hpp [13:13]
- boost/detail/lightweight_thread.hpp [12:13]
- boost/interprocess/detail/os_thread_functions.hpp [15:16]
- boost/serialization/throw_exception.hpp [12:12]
- boost/signals2/detail/lwm_nop.hpp [4:5]
- boost/signals2/detail/lwm_pthreads.hpp [4:5]
- boost/smart_ptr/detail/lwm_nop.hpp [13:13]
- boost/smart_ptr/detail/lwm_pthreads.hpp [13:13]
- boost/throw_exception.hpp [19:20]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9f4f4692c306c5352ba812c34a1cfd7a
-BELONGS ya.make
- License text:
- // Copyright 2008 Christophe Henry
- // henry UNDERSCORE christophe AT hotmail DOT com
- // This is an extended version of the state machine available in the boost::mpl library
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/msm/active_state_switching_policies.hpp [1:3]
- boost/msm/back/args.hpp [1:3]
- boost/msm/back/bind_helpers.hpp [1:3]
- boost/msm/back/common_types.hpp [1:3]
- boost/msm/back/copy_policies.hpp [1:3]
- boost/msm/back/default_compile_policy.hpp [1:3]
- boost/msm/back/dispatch_table.hpp [1:3]
- boost/msm/back/favor_compile_time.hpp [1:3]
- boost/msm/back/fold_to_list.hpp [1:7]
- boost/msm/back/history_policies.hpp [1:3]
- boost/msm/back/metafunctions.hpp [1:3]
- boost/msm/back/mpl_graph_fsm_check.hpp [1:3]
- boost/msm/back/no_fsm_check.hpp [1:3]
- boost/msm/back/queue_container_circular.hpp [1:3]
- boost/msm/back/queue_container_deque.hpp [1:3]
- boost/msm/back/state_machine.hpp [1:3]
- boost/msm/back/tools.hpp [1:3]
- boost/msm/common.hpp [1:3]
- boost/msm/event_traits.hpp [1:3]
- boost/msm/front/common_states.hpp [1:3]
- boost/msm/front/completion_event.hpp [1:3]
- boost/msm/front/detail/common_states.hpp [1:3]
- boost/msm/front/detail/row2_helper.hpp [1:3]
- boost/msm/front/euml/algorithm.hpp [1:3]
- boost/msm/front/euml/common.hpp [1:3]
- boost/msm/front/euml/container.hpp [1:3]
- boost/msm/front/euml/euml.hpp [1:3]
- boost/msm/front/euml/euml_typeof.hpp [1:3]
- boost/msm/front/euml/guard_grammar.hpp [1:3]
- boost/msm/front/euml/iteration.hpp [1:3]
- boost/msm/front/euml/operator.hpp [1:3]
- boost/msm/front/euml/querying.hpp [1:3]
- boost/msm/front/euml/state_grammar.hpp [1:3]
- boost/msm/front/euml/stl.hpp [1:3]
- boost/msm/front/euml/stt_grammar.hpp [1:3]
- boost/msm/front/euml/transformation.hpp [1:3]
- boost/msm/front/functor_row.hpp [1:3]
- boost/msm/front/internal_row.hpp [1:3]
- boost/msm/front/row2.hpp [1:3]
- boost/msm/front/state_machine_def.hpp [1:3]
- boost/msm/front/states.hpp [1:3]
- boost/msm/msm_grammar.hpp [1:3]
- boost/msm/proto_config.hpp [1:3]
- boost/msm/row_tags.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9f570a3f9d4cfb2e159acf8ce988271b
-BELONGS ya.make
- License text:
- // Copyright 2008 Eric Niebler.
- // Copyright 2008 David Jenkins.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/xpressive/detail/core/matcher/action_matcher.hpp [4:5]
- boost/xpressive/detail/core/matcher/attr_matcher.hpp [4:5]
- boost/xpressive/detail/static/transforms/as_action.hpp [4:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9f5828e268910c36bf70e0636b1a5d36
-BELONGS libs/thread/ya.make ya.make
- License text:
- // (C) Copyright Michael Glassford 2004.
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/detail/tss_hooks.hpp [1:3]
- libs/thread/src/tss_null.cpp [1:4]
- libs/thread/src/win32/tss_dll.cpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9f8b54cefd3cda620dbb82f001d36a6b
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/accumulators.hpp at line 7, boost/accumulators/accumulators_fwd.hpp at line 6, boost/accumulators/framework/accumulator_base.hpp at line 6, boost/accumulators/framework/accumulator_concept.hpp at line 6, boost/accumulators/framework/accumulator_set.hpp at line 6, boost/accumulators/framework/accumulators/droppable_accumulator.hpp at line 6, boost/accumulators/framework/accumulators/external_accumulator.hpp at line 6, boost/accumulators/framework/accumulators/reference_accumulator.hpp at line 6, boost/accumulators/framework/depends_on.hpp at line 6, boost/accumulators/framework/external.hpp at line 6, boost/accumulators/framework/extractor.hpp at line 6, boost/accumulators/framework/features.hpp at line 6, boost/accumulators/framework/parameters/accumulator.hpp at line 6, boost/accumulators/framework/parameters/sample.hpp at line 6, boost/accumulators/framework/parameters/weight.hpp at line 6, boost/accumulators/framework/parameters/weights.hpp at line 6, boost/accumulators/numeric/functional.hpp at line 6, boost/accumulators/numeric/functional/complex.hpp at line 6, boost/accumulators/numeric/functional/valarray.hpp at line 6, boost/accumulators/numeric/functional/vector.hpp at line 6, boost/accumulators/numeric/functional_fwd.hpp at line 6, boost/accumulators/statistics.hpp at line 7, boost/accumulators/statistics/count.hpp at line 6, boost/accumulators/statistics/error_of.hpp at line 6, boost/accumulators/statistics/error_of_mean.hpp at line 6, boost/accumulators/statistics/max.hpp at line 6, boost/accumulators/statistics/mean.hpp at line 6, boost/accumulators/statistics/min.hpp at line 6, boost/accumulators/statistics/moment.hpp at line 6, boost/accumulators/statistics/parameters/quantile_probability.hpp at line 6, boost/accumulators/statistics/rolling_moment.hpp at line 5, boost/accumulators/statistics/stats.hpp at line 7, boost/accumulators/statistics/sum.hpp at line 6, boost/accumulators/statistics/variates/covariate.hpp at line 6, boost/accumulators/statistics/with_error.hpp at line 6, boost/accumulators/statistics_fwd.hpp at line 6
- License text:
- // Copyright 2005 Eric Niebler. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/accumulators/accumulators.hpp [5:7]
- boost/accumulators/accumulators_fwd.hpp [4:6]
- boost/accumulators/framework/accumulator_base.hpp [4:6]
- boost/accumulators/framework/accumulator_concept.hpp [4:6]
- boost/accumulators/framework/accumulator_set.hpp [4:6]
- boost/accumulators/framework/accumulators/droppable_accumulator.hpp [4:6]
- boost/accumulators/framework/accumulators/external_accumulator.hpp [4:6]
- boost/accumulators/framework/accumulators/reference_accumulator.hpp [4:6]
- boost/accumulators/framework/depends_on.hpp [4:6]
- boost/accumulators/framework/external.hpp [4:6]
- boost/accumulators/framework/extractor.hpp [4:6]
- boost/accumulators/framework/features.hpp [4:6]
- boost/accumulators/framework/parameters/accumulator.hpp [4:6]
- boost/accumulators/framework/parameters/sample.hpp [4:6]
- boost/accumulators/framework/parameters/weight.hpp [4:6]
- boost/accumulators/framework/parameters/weights.hpp [4:6]
- boost/accumulators/numeric/functional.hpp [4:6]
- boost/accumulators/numeric/functional/complex.hpp [4:6]
- boost/accumulators/numeric/functional/valarray.hpp [4:6]
- boost/accumulators/numeric/functional/vector.hpp [4:6]
- boost/accumulators/numeric/functional_fwd.hpp [4:6]
- boost/accumulators/statistics.hpp [5:7]
- boost/accumulators/statistics/count.hpp [4:6]
- boost/accumulators/statistics/error_of.hpp [4:6]
- boost/accumulators/statistics/error_of_mean.hpp [4:6]
- boost/accumulators/statistics/max.hpp [4:6]
- boost/accumulators/statistics/mean.hpp [4:6]
- boost/accumulators/statistics/min.hpp [4:6]
- boost/accumulators/statistics/moment.hpp [4:6]
- boost/accumulators/statistics/parameters/quantile_probability.hpp [4:6]
- boost/accumulators/statistics/rolling_moment.hpp [3:6]
- boost/accumulators/statistics/stats.hpp [5:7]
- boost/accumulators/statistics/sum.hpp [4:6]
- boost/accumulators/statistics/variates/covariate.hpp [4:6]
- boost/accumulators/statistics/with_error.hpp [4:6]
- boost/accumulators/statistics_fwd.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9fbe755e4325767774b2c5b52827f08b
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/gcc.hpp [1:9]
- boost/config/detail/select_stdlib_config.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9fc32687f4192402f3f9935c21eb7372
-BELONGS ya.make
- License text:
- // Copyright (C) 2005-2006 Douglas Gregor <doug.gregor@gmail.com>.
- // Copyright (C) 2004 The Trustees of Indiana University
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpi/collectives/reduce.hpp [1:2]
- boost/mpi/collectives/scan.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9fe58de5a87c382ac6ec5e085c48cd94
-BELONGS ya.make
- License text:
- // Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
- // Copyright 2004-2005 Peter Dimov
- // Copyright 2006 Ion Gaztanaga
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/interprocess/smart_ptr/detail/sp_counted_impl.hpp [16:18]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9fe6008887730559afc3f55d0f20c97d
-BELONGS ya.make
- License text:
- * Copyright 2002 Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion
- * Copyright 2005 Guillaume Melquiond
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/interval/detail/ppc_rounding_control.hpp [3:5]
- boost/numeric/interval/hw_rounding.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL a00ef2913f053c40e19dbb04a67f672d
-BELONGS ya.make
- License text:
- // Copyright Beman Dawes 2002-2005, 2009
- // Copyright Vladimir Prus 2002
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/filesystem/path.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL a04d60693ae88d69afc8ccff61832efc
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/tuple/insert.hpp at line 5, boost/preprocessor/tuple/pop_back.hpp at line 5, boost/preprocessor/tuple/pop_front.hpp at line 5, boost/preprocessor/tuple/push_back.hpp at line 5, boost/preprocessor/tuple/push_front.hpp at line 5, boost/preprocessor/tuple/remove.hpp at line 5, boost/preprocessor/tuple/replace.hpp at line 5
- License text:
- \# * (C) Copyright Edward Diener 2013.
- \# * Distributed under the Boost Software License, Version 1.0. (See
- \# * accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/preprocessor/tuple/insert.hpp [3:5]
- boost/preprocessor/tuple/pop_back.hpp [3:5]
- boost/preprocessor/tuple/pop_front.hpp [3:5]
- boost/preprocessor/tuple/push_back.hpp [3:5]
- boost/preprocessor/tuple/push_front.hpp [3:5]
- boost/preprocessor/tuple/remove.hpp [3:5]
- boost/preprocessor/tuple/replace.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL a08e41a239cdee1f96eadc8647e90ab7
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/hardware.h at line 5, boost/predef/hardware/simd.h at line 5, boost/predef/hardware/simd/arm.h at line 5, boost/predef/hardware/simd/arm/versions.h at line 5, boost/predef/hardware/simd/ppc.h at line 5, boost/predef/hardware/simd/ppc/versions.h at line 5, boost/predef/hardware/simd/x86.h at line 5, boost/predef/hardware/simd/x86/versions.h at line 5, boost/predef/hardware/simd/x86_amd.h at line 5, boost/predef/hardware/simd/x86_amd/versions.h at line 5
- License text:
- Copyright Charly Chevalier 2015
- Copyright Joel Falcou 2015
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/predef/hardware.h [2:5]
- boost/predef/hardware/simd.h [2:5]
- boost/predef/hardware/simd/arm.h [2:5]
- boost/predef/hardware/simd/arm/versions.h [2:5]
- boost/predef/hardware/simd/ppc.h [2:5]
- boost/predef/hardware/simd/ppc/versions.h [2:5]
- boost/predef/hardware/simd/x86.h [2:5]
- boost/predef/hardware/simd/x86/versions.h [2:5]
- boost/predef/hardware/simd/x86_amd.h [2:5]
- boost/predef/hardware/simd/x86_amd/versions.h [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL a09b806764becef5e188111e9cde59b8
-BELONGS ya.make
- License text:
- // Copyright (C) 2004-2008 The Trustees of Indiana University.
- // Copyright (C) 2007 Douglas Gregor
- // Copyright (C) 2007 Matthias Troyer <troyer@boost-consulting.com>
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/distributed/detail/mpi_process_group.ipp [3:5]
- boost/graph/distributed/mpi_process_group.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL a0c5300b9bdea05390915ba7a0320755
-BELONGS ya.make
- License text:
- /* Copyright (c) 2004-2005 CrystalClear Software, Inc.
- * Use, modification and distribution is subject to the
- * Boost Software License, Version 1.0. (See accompanying
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/date_time/date_facet.hpp [4:6]
- boost/date_time/format_date_parser.hpp [5:7]
- boost/date_time/gregorian/conversion.hpp [4:6]
- boost/date_time/gregorian/greg_serialize.hpp [4:6]
- boost/date_time/gregorian/gregorian_io.hpp [4:6]
- boost/date_time/posix_time/posix_time_io.hpp [4:6]
- boost/date_time/posix_time/time_serialize.hpp [4:6]
- boost/date_time/string_parse_tree.hpp [4:6]
- boost/date_time/time_facet.hpp [5:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL a0cd3454bb19643561108cce72a3dc59
-BELONGS libs/thread/ya.make ya.make
- License text:
- // Copyright (C) 2001-2003
- // William E. Kempf
- // Copyright (C) 2007-9 Anthony Williams
- // (C) Copyright 2011-2012 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/detail/move.hpp [4:5]
- boost/thread/detail/thread.hpp [6:7]
- boost/thread/exceptions.hpp [1:4]
- boost/thread/lock_algorithms.hpp [4:5]
- boost/thread/lock_guard.hpp [4:5]
- boost/thread/lock_options.hpp [4:5]
- boost/thread/lock_types.hpp [4:5]
- boost/thread/lockable_traits.hpp [4:5]
- boost/thread/locks.hpp [4:5]
- boost/thread/pthread/condition_variable.hpp [6:7]
- boost/thread/pthread/condition_variable_fwd.hpp [6:7]
- boost/thread/pthread/once.hpp [6:7]
- boost/thread/pthread/recursive_mutex.hpp [3:6]
- boost/thread/pthread/thread_data.hpp [6:7]
- boost/thread/shared_mutex.hpp [6:7]
- boost/thread/win32/basic_timed_mutex.hpp [6:7]
- boost/thread/win32/condition_variable.hpp [6:7]
- boost/thread/win32/mfc_thread_init.hpp [6:7]
- boost/thread/win32/mutex.hpp [3:6]
- boost/thread/win32/thread_data.hpp [6:7]
- libs/thread/src/pthread/thread.cpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL a0cdf8b16219a2c9136fbbbed1e38766
-BELONGS ya.make
- License text:
- // Copyright 2011 Steven Watanabe
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_erasure/any.hpp [3:3]
- boost/type_erasure/any_cast.hpp [3:3]
- boost/type_erasure/binding.hpp [3:3]
- boost/type_erasure/binding_of.hpp [3:3]
- boost/type_erasure/builtin.hpp [3:3]
- boost/type_erasure/call.hpp [3:3]
- boost/type_erasure/callable.hpp [3:3]
- boost/type_erasure/check_match.hpp [3:3]
- boost/type_erasure/concept_interface.hpp [3:3]
- boost/type_erasure/concept_of.hpp [3:3]
- boost/type_erasure/config.hpp [3:3]
- boost/type_erasure/constructible.hpp [3:3]
- boost/type_erasure/deduced.hpp [3:3]
- boost/type_erasure/derived.hpp [3:3]
- boost/type_erasure/detail/access.hpp [3:3]
- boost/type_erasure/detail/adapt_to_vtable.hpp [3:3]
- boost/type_erasure/detail/any_base.hpp [3:3]
- boost/type_erasure/detail/construct.hpp [3:3]
- boost/type_erasure/detail/extract_concept.hpp [3:3]
- boost/type_erasure/detail/get_placeholders.hpp [3:3]
- boost/type_erasure/detail/normalize.hpp [3:3]
- boost/type_erasure/detail/normalize_deduced.hpp [3:3]
- boost/type_erasure/detail/rebind_placeholders.hpp [3:3]
- boost/type_erasure/detail/storage.hpp [3:3]
- boost/type_erasure/detail/vtable.hpp [3:3]
- boost/type_erasure/is_placeholder.hpp [3:3]
- boost/type_erasure/iterator.hpp [3:3]
- boost/type_erasure/operators.hpp [3:3]
- boost/type_erasure/param.hpp [3:3]
- boost/type_erasure/placeholder.hpp [3:3]
- boost/type_erasure/placeholder_of.hpp [3:3]
- boost/type_erasure/rebind_any.hpp [3:3]
- boost/type_erasure/relaxed.hpp [3:3]
- boost/type_erasure/same_type.hpp [3:3]
- boost/type_erasure/static_binding.hpp [3:3]
- boost/type_erasure/typeid_of.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL a0e20da7cdeea7e16b12e33f7083427b
-BELONGS ya.make
- License text:
- Copyright (c) 2014 Jamboree
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/include/flatten.hpp [2:2]
- boost/fusion/include/flatten_view.hpp [2:2]
- boost/spirit/home/x3/support/utility/is_callable.hpp [2:2]
- boost/spirit/home/x3/support/utility/unrefcv.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL a103bfee1637c9cc67288e4038d76892
-BELONGS ya.make
- License text:
- // Copyright (C) 2003, Fernando Luis Cacciola Carballal.
- // Copyright (C) 2014, 2015 Andrzej Krzemienski.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/none.hpp [1:2]
- boost/none_t.hpp [1:2]
- boost/optional.hpp [1:1]
- boost/utility/compare_pointees.hpp [1:1]
- boost/utility/detail/in_place_factory_prefix.hpp [1:2]
- boost/utility/detail/in_place_factory_suffix.hpp [1:2]
- boost/utility/in_place_factory.hpp [1:2]
- boost/utility/typed_in_place_factory.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL a103e4c3ebf84b433d6fa1717f50fe56
-BELONGS ya.make
- License text:
- //! Copyright (c) 2011
- //! Brandon Kohn
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/conversion/numeric_cast_traits.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL a1556c4fb01c7719c0853a3cc659522f
-BELONGS ya.make
- License text:
- // Copyright (c) 2013-2017 Vinnie Falco (vinnie dot falco at gmail dot com)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/beast.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL a161d119816677d97a23d4581bd2ddec
-BELONGS ya.make
- License text:
- // Copyright (c) 2009
- // Gunter Winkler
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/ublas/experimental/sparse_view.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL a16207ab3c7903af5e26c274ec5b9d4d
-BELONGS ya.make
- License text:
- // Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
- // Copyright (c) 2009 Steven Watanabe
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/bind/protect.hpp [7:8]
- boost/lambda/detail/suppress_unused.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL a16d2d9333074214b789369553ae6d4b
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/same_traits.hpp at line 3
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_traits/same_traits.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL a183e113b4eee36273a5dea45d9133c3
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2014 Joel de Guzman
- Copyright (c) 2001-2011 Hartmut Kaiser
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/x3/auxiliary.hpp [2:3]
- boost/spirit/home/x3/auxiliary/any_parser.hpp [2:3]
- boost/spirit/home/x3/auxiliary/attr.hpp [2:4]
- boost/spirit/home/x3/auxiliary/eoi.hpp [2:3]
- boost/spirit/home/x3/auxiliary/eol.hpp [2:3]
- boost/spirit/home/x3/auxiliary/eps.hpp [2:2]
- boost/spirit/home/x3/auxiliary/guard.hpp [2:2]
- boost/spirit/home/x3/char.hpp [2:2]
- boost/spirit/home/x3/char/any_char.hpp [2:2]
- boost/spirit/home/x3/char/char.hpp [2:2]
- boost/spirit/home/x3/char/char_class.hpp [2:2]
- boost/spirit/home/x3/char/char_class_tags.hpp [2:2]
- boost/spirit/home/x3/char/char_parser.hpp [2:2]
- boost/spirit/home/x3/char/char_set.hpp [2:2]
- boost/spirit/home/x3/char/detail/cast_char.hpp [2:3]
- boost/spirit/home/x3/char/literal_char.hpp [2:2]
- boost/spirit/home/x3/char/negated_char_parser.hpp [2:2]
- boost/spirit/home/x3/char/unicode.hpp [2:2]
- boost/spirit/home/x3/core.hpp [2:2]
- boost/spirit/home/x3/core/call.hpp [2:2]
- boost/spirit/home/x3/core/detail/parse_into_container.hpp [2:2]
- boost/spirit/home/x3/core/parse.hpp [2:2]
- boost/spirit/home/x3/core/parser.hpp [2:3]
- boost/spirit/home/x3/core/proxy.hpp [2:2]
- boost/spirit/home/x3/core/skip_over.hpp [2:2]
- boost/spirit/home/x3/directive/expect.hpp [2:2]
- boost/spirit/home/x3/directive/lexeme.hpp [2:2]
- boost/spirit/home/x3/directive/no_skip.hpp [2:4]
- boost/spirit/home/x3/directive/omit.hpp [2:2]
- boost/spirit/home/x3/directive/skip.hpp [2:3]
- boost/spirit/home/x3/nonterminal.hpp [2:2]
- boost/spirit/home/x3/nonterminal/debug_handler_state.hpp [2:2]
- boost/spirit/home/x3/nonterminal/detail/rule.hpp [2:2]
- boost/spirit/home/x3/nonterminal/detail/transform_attribute.hpp [2:3]
- boost/spirit/home/x3/nonterminal/rule.hpp [2:2]
- boost/spirit/home/x3/nonterminal/simple_trace.hpp [2:3]
- boost/spirit/home/x3/numeric.hpp [2:2]
- boost/spirit/home/x3/numeric/int.hpp [2:2]
- boost/spirit/home/x3/numeric/real.hpp [2:2]
- boost/spirit/home/x3/numeric/real_policies.hpp [2:3]
- boost/spirit/home/x3/numeric/uint.hpp [2:3]
- boost/spirit/home/x3/operator.hpp [2:2]
- boost/spirit/home/x3/operator/alternative.hpp [2:2]
- boost/spirit/home/x3/operator/and_predicate.hpp [2:2]
- boost/spirit/home/x3/operator/detail/alternative.hpp [2:2]
- boost/spirit/home/x3/operator/detail/sequence.hpp [2:2]
- boost/spirit/home/x3/operator/difference.hpp [2:2]
- boost/spirit/home/x3/operator/kleene.hpp [2:3]
- boost/spirit/home/x3/operator/list.hpp [2:3]
- boost/spirit/home/x3/operator/not_predicate.hpp [2:2]
- boost/spirit/home/x3/operator/optional.hpp [2:3]
- boost/spirit/home/x3/operator/plus.hpp [2:3]
- boost/spirit/home/x3/operator/sequence.hpp [2:2]
- boost/spirit/home/x3/string.hpp [2:2]
- boost/spirit/home/x3/string/detail/no_case_string_parse.hpp [2:2]
- boost/spirit/home/x3/string/detail/string_parse.hpp [2:2]
- boost/spirit/home/x3/string/detail/tst.hpp [2:2]
- boost/spirit/home/x3/string/literal_string.hpp [2:2]
- boost/spirit/home/x3/string/symbols.hpp [2:3]
- boost/spirit/home/x3/string/tst.hpp [2:2]
- boost/spirit/home/x3/string/tst_map.hpp [2:2]
- boost/spirit/home/x3/support/ast/variant.hpp [2:2]
- boost/spirit/home/x3/support/no_case.hpp [2:2]
- boost/spirit/home/x3/support/numeric_utils/detail/extract_int.hpp [2:6]
- boost/spirit/home/x3/support/numeric_utils/extract_int.hpp [2:3]
- boost/spirit/home/x3/support/numeric_utils/extract_real.hpp [2:4]
- boost/spirit/home/x3/support/numeric_utils/pow10.hpp [2:4]
- boost/spirit/home/x3/support/numeric_utils/sign.hpp [2:4]
- boost/spirit/home/x3/support/subcontext.hpp [2:4]
- boost/spirit/home/x3/support/traits/attribute_of.hpp [2:4]
- boost/spirit/home/x3/support/traits/container_traits.hpp [2:4]
- boost/spirit/home/x3/support/traits/has_attribute.hpp [2:4]
- boost/spirit/home/x3/support/traits/is_parser.hpp [2:3]
- boost/spirit/home/x3/support/traits/make_attribute.hpp [2:4]
- boost/spirit/home/x3/support/traits/move_to.hpp [2:4]
- boost/spirit/home/x3/support/traits/optional_traits.hpp [2:4]
- boost/spirit/home/x3/support/traits/print_attribute.hpp [2:3]
- boost/spirit/home/x3/support/traits/print_token.hpp [2:3]
- boost/spirit/home/x3/support/traits/string_traits.hpp [2:4]
- boost/spirit/home/x3/support/traits/transform_attribute.hpp [2:4]
- boost/spirit/home/x3/support/traits/tuple_traits.hpp [2:2]
- boost/spirit/home/x3/support/traits/value_traits.hpp [2:4]
- boost/spirit/home/x3/support/unused.hpp [2:3]
- boost/spirit/home/x3/support/utility/sfinae.hpp [2:3]
- boost/spirit/home/x3/support/utility/utf8.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL a1b12dcef6e1643e121684b10b24a56c
-BELONGS ya.make
- License text:
- Copyright (c) 2012 Kohei Takahashi
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/adapted/boost_tuple/mpl/clear.hpp [2:2]
- boost/fusion/adapted/std_tuple/mpl/clear.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL a25eff9ab0b3a407f0a3f23d36b9b9a8
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2006.
- // Copyright Paul A. Bristow 2006, 2012, 2017.
- // Copyright Thomas Mang 2012.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/distributions/students_t.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL a267d25ab38b694607444c96c52b7363
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/algorithm/adjacent_find.hpp at line 3, boost/range/algorithm/binary_search.hpp at line 3, boost/range/algorithm/copy.hpp at line 3, boost/range/algorithm/copy_backward.hpp at line 3, boost/range/algorithm/count.hpp at line 3, boost/range/algorithm/count_if.hpp at line 3, boost/range/algorithm/equal.hpp at line 5, boost/range/algorithm/equal_range.hpp at line 3, boost/range/algorithm/fill.hpp at line 3, boost/range/algorithm/fill_n.hpp at line 3, boost/range/algorithm/find.hpp at line 3, boost/range/algorithm/find_end.hpp at line 3, boost/range/algorithm/find_first_of.hpp at line 3, boost/range/algorithm/find_if.hpp at line 3, boost/range/algorithm/for_each.hpp at line 3, boost/range/algorithm/generate.hpp at line 3, boost/range/algorithm/heap_algorithm.hpp at line 3, boost/range/algorithm/inplace_merge.hpp at line 3, boost/range/algorithm/lexicographical_compare.hpp at line 3, boost/range/algorithm/lower_bound.hpp at line 3, boost/range/algorithm/max_element.hpp at line 3, boost/range/algorithm/merge.hpp at line 3, boost/range/algorithm/min_element.hpp at line 3, boost/range/algorithm/mismatch.hpp at line 3, boost/range/algorithm/nth_element.hpp at line 3, boost/range/algorithm/partial_sort.hpp at line 3, boost/range/algorithm/partial_sort_copy.hpp at line 3, boost/range/algorithm/partition.hpp at line 3, boost/range/algorithm/permutation.hpp at line 3, boost/range/algorithm/random_shuffle.hpp at line 3, boost/range/algorithm/remove.hpp at line 3, boost/range/algorithm/remove_copy.hpp at line 3, boost/range/algorithm/remove_copy_if.hpp at line 3, boost/range/algorithm/remove_if.hpp at line 3, boost/range/algorithm/replace.hpp at line 3, boost/range/algorithm/replace_copy.hpp at line 3, boost/range/algorithm/replace_copy_if.hpp at line 3, boost/range/algorithm/replace_if.hpp at line 3, boost/range/algorithm/reverse.hpp at line 3, boost/range/algorithm/reverse_copy.hpp at line 3, boost/range/algorithm/rotate.hpp at line 3, boost/range/algorithm/rotate_copy.hpp at line 3, boost/range/algorithm/search.hpp at line 3, boost/range/algorithm/search_n.hpp at line 3, boost/range/algorithm/set_algorithm.hpp at line 3, boost/range/algorithm/sort.hpp at line 3, boost/range/algorithm/stable_partition.hpp at line 3, boost/range/algorithm/stable_sort.hpp at line 3, boost/range/algorithm/swap_ranges.hpp at line 3, boost/range/algorithm/transform.hpp at line 3, boost/range/algorithm/unique.hpp at line 3, boost/range/algorithm/unique_copy.hpp at line 3, boost/range/algorithm/upper_bound.hpp at line 3, boost/range/algorithm_ext/copy_n.hpp at line 3, boost/range/algorithm_ext/erase.hpp at line 5, boost/range/algorithm_ext/for_each.hpp at line 5, boost/range/algorithm_ext/insert.hpp at line 5, boost/range/algorithm_ext/iota.hpp at line 5, boost/range/algorithm_ext/is_sorted.hpp at line 3, boost/range/algorithm_ext/overwrite.hpp at line 5, boost/range/algorithm_ext/push_back.hpp at line 5, boost/range/algorithm_ext/push_front.hpp at line 5, boost/range/concepts.hpp at line 5, boost/range/detail/demote_iterator_traversal_tag.hpp at line 5, boost/range/detail/join_iterator.hpp at line 5, boost/range/detail/misc_concept.hpp at line 5, boost/range/detail/range_return.hpp at line 3, boost/range/iterator_range.hpp at line 5, boost/range/iterator_range_io.hpp at line 5, boost/range/join.hpp at line 5, boost/range/sub_range.hpp at line 5
- License text:
- // Copyright Neil Groves 2009. Use, modification and distribution
- // are subject to the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/range/algorithm/adjacent_find.hpp [1:3]
- boost/range/algorithm/binary_search.hpp [1:3]
- boost/range/algorithm/copy.hpp [1:3]
- boost/range/algorithm/copy_backward.hpp [1:3]
- boost/range/algorithm/count.hpp [1:3]
- boost/range/algorithm/count_if.hpp [1:3]
- boost/range/algorithm/equal.hpp [3:5]
- boost/range/algorithm/equal_range.hpp [1:3]
- boost/range/algorithm/fill.hpp [1:3]
- boost/range/algorithm/fill_n.hpp [1:3]
- boost/range/algorithm/find.hpp [1:3]
- boost/range/algorithm/find_end.hpp [1:3]
- boost/range/algorithm/find_first_of.hpp [1:3]
- boost/range/algorithm/find_if.hpp [1:3]
- boost/range/algorithm/for_each.hpp [1:3]
- boost/range/algorithm/generate.hpp [1:3]
- boost/range/algorithm/heap_algorithm.hpp [1:3]
- boost/range/algorithm/inplace_merge.hpp [1:3]
- boost/range/algorithm/lexicographical_compare.hpp [1:3]
- boost/range/algorithm/lower_bound.hpp [1:3]
- boost/range/algorithm/max_element.hpp [1:3]
- boost/range/algorithm/merge.hpp [1:3]
- boost/range/algorithm/min_element.hpp [1:3]
- boost/range/algorithm/mismatch.hpp [1:3]
- boost/range/algorithm/nth_element.hpp [1:3]
- boost/range/algorithm/partial_sort.hpp [1:3]
- boost/range/algorithm/partial_sort_copy.hpp [1:3]
- boost/range/algorithm/partition.hpp [1:3]
- boost/range/algorithm/permutation.hpp [1:3]
- boost/range/algorithm/random_shuffle.hpp [1:3]
- boost/range/algorithm/remove.hpp [1:3]
- boost/range/algorithm/remove_copy.hpp [1:3]
- boost/range/algorithm/remove_copy_if.hpp [1:3]
- boost/range/algorithm/remove_if.hpp [1:3]
- boost/range/algorithm/replace.hpp [1:3]
- boost/range/algorithm/replace_copy.hpp [1:3]
- boost/range/algorithm/replace_copy_if.hpp [1:3]
- boost/range/algorithm/replace_if.hpp [1:3]
- boost/range/algorithm/reverse.hpp [1:3]
- boost/range/algorithm/reverse_copy.hpp [1:3]
- boost/range/algorithm/rotate.hpp [1:3]
- boost/range/algorithm/rotate_copy.hpp [1:3]
- boost/range/algorithm/search.hpp [1:3]
- boost/range/algorithm/search_n.hpp [1:3]
- boost/range/algorithm/set_algorithm.hpp [1:3]
- boost/range/algorithm/sort.hpp [1:3]
- boost/range/algorithm/stable_partition.hpp [1:3]
- boost/range/algorithm/stable_sort.hpp [1:3]
- boost/range/algorithm/swap_ranges.hpp [1:3]
- boost/range/algorithm/transform.hpp [1:3]
- boost/range/algorithm/unique.hpp [1:3]
- boost/range/algorithm/unique_copy.hpp [1:3]
- boost/range/algorithm/upper_bound.hpp [1:3]
- boost/range/algorithm_ext/copy_n.hpp [1:3]
- boost/range/algorithm_ext/erase.hpp [3:5]
- boost/range/algorithm_ext/for_each.hpp [3:5]
- boost/range/algorithm_ext/insert.hpp [3:5]
- boost/range/algorithm_ext/iota.hpp [3:5]
- boost/range/algorithm_ext/is_sorted.hpp [1:4]
- boost/range/algorithm_ext/overwrite.hpp [3:5]
- boost/range/algorithm_ext/push_back.hpp [3:5]
- boost/range/algorithm_ext/push_front.hpp [3:5]
- boost/range/concepts.hpp [3:5]
- boost/range/detail/demote_iterator_traversal_tag.hpp [3:5]
- boost/range/detail/join_iterator.hpp [3:5]
- boost/range/detail/misc_concept.hpp [3:5]
- boost/range/detail/range_return.hpp [1:3]
- boost/range/iterator_range.hpp [3:5]
- boost/range/iterator_range_io.hpp [3:5]
- boost/range/join.hpp [3:5]
- boost/range/sub_range.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL a29c00fe5b0061523a733babce737eee
-BELONGS ya.make
- License text:
- Copyright (c) 2007-2011: Joachim Faulhaber
- Copyright (c) 1999-2006: Cortex Software GmbH, Kantstrasse 57, Berlin
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/icl/interval_base_set.hpp [2:3]
- boost/icl/map.hpp [2:2]
- boost/icl/set.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL a2ef13fa73a7e85b38cf6bc4b10345aa
-BELONGS ya.make
- License text:
- // (C) Copyright 2007-10 Anthony Williams
- // (C) Copyright 2011-2012 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/pthread/condition_variable.hpp [6:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL a3578986b89a9e4f4944d6e06bd16604
-BELONGS ya.make
- License text:
- // Copyright 2011-2012 Steven Watanabe
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_erasure/exception.hpp [3:3]
- boost/type_erasure/require_match.hpp [3:3]
- boost/type_erasure/tuple.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL a35b9ab4dc46c980de71e273c1106498
-BELONGS ya.make
- License text:
- // Copyright (c) 2003 Gerald I. Evenden
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/srs/projections/proj/sterea.hpp [26:26]
-
-KEEP COPYRIGHT_SERVICE_LABEL a3aea5c3abd2998ef419f4cfd468161c
-BELONGS ya.make
- License text:
- // Copyright (C) 2011 Júlio Hoffimann.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpi/collectives/gatherv.hpp [1:1]
- boost/mpi/collectives/scatterv.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL a3bf073a03ecfa244ec22a3a4fddf10d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/detail/remove_extent.hpp at line 5
- License text:
- // Copyright Jonathan Turkanis 2005. Use, modification and
- // distribution is subject to the Boost Software License, Version
- // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/range/detail/remove_extent.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL a3ceba6f7698685b264af6347b8fb8c7
-BELONGS ya.make
- License text:
- // Copyright (c) 2007 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/detail/sp_counted_base_sync.hpp [12:12]
-
-KEEP COPYRIGHT_SERVICE_LABEL a4132e16f1452f080d8f88a3ca863143
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/io/wkt/write.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL a41ad2da0912020d91a14b82ad75b7a9
-BELONGS ya.make
- License text:
- // Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
- // Copyright (c) 2002 Lars Gullik Bjønnes <larsbj@lyx.org>
- // Copyright 2003-2005 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/detail/atomic_count_gcc.hpp [11:13]
-
-KEEP COPYRIGHT_SERVICE_LABEL a427df9ff905dc0a2071778ea1acc982
-BELONGS ya.make
- License text:
- Copyright (c) 2007-2012: Joachim Faulhaber
- Copyright (c) 1999-2006: Cortex Software GmbH, Kantstrasse 57, Berlin
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/icl/detail/notate.hpp [4:4]
- boost/icl/detail/set_algo.hpp [4:4]
- boost/icl/interval_base_map.hpp [2:3]
- boost/icl/interval_base_set.hpp [2:3]
- boost/icl/interval_set.hpp [2:3]
- boost/icl/split_interval_map.hpp [2:3]
- boost/icl/split_interval_set.hpp [2:3]
- boost/icl/type_traits/to_string.hpp [4:4]
- boost/icl/type_traits/value_size.hpp [4:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL a4d2f494b445bbe883a6e73ea92be0a4
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/area.hpp [3:6]
- boost/geometry/algorithms/detail/buffer/buffered_piece_collection.hpp [3:4]
- boost/geometry/algorithms/detail/buffer/get_piece_turns.hpp [3:4]
- boost/geometry/algorithms/detail/buffer/turn_in_piece_visitor.hpp [3:4]
- boost/geometry/algorithms/detail/disjoint/multipoint_geometry.hpp [3:4]
- boost/geometry/algorithms/detail/has_self_intersections.hpp [3:4]
- boost/geometry/algorithms/detail/is_valid/polygon.hpp [3:3]
- boost/geometry/algorithms/detail/is_valid/ring.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/add_rings.hpp [3:4]
- boost/geometry/algorithms/detail/overlay/assign_parents.hpp [3:4]
- boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp [3:4]
- boost/geometry/algorithms/detail/overlay/follow.hpp [3:4]
- boost/geometry/algorithms/detail/overlay/follow_linear_linear.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/get_turn_info.hpp [3:4]
- boost/geometry/algorithms/detail/overlay/get_turn_info_la.hpp [3:4]
- boost/geometry/algorithms/detail/overlay/get_turn_info_ll.hpp [3:4]
- boost/geometry/algorithms/detail/overlay/handle_colocations.hpp [3:4]
- boost/geometry/algorithms/detail/overlay/handle_self_turns.hpp [3:4]
- boost/geometry/algorithms/detail/overlay/is_self_turn.hpp [3:4]
- boost/geometry/algorithms/detail/overlay/pointlike_linear.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/self_turn_points.hpp [3:4]
- boost/geometry/algorithms/detail/overlay/sort_by_side.hpp [3:4]
- boost/geometry/algorithms/detail/partition.hpp [3:4]
- boost/geometry/algorithms/detail/relate/result.hpp [3:4]
- boost/geometry/algorithms/detail/throw_on_empty_input.hpp [3:6]
- boost/geometry/index/detail/algorithms/nth_element.hpp [3:3]
- boost/geometry/io/wkt/read.hpp [3:6]
- boost/geometry/strategies/area.hpp [3:6]
- boost/geometry/strategies/area_result.hpp [3:3]
- boost/geometry/strategies/cartesian/area.hpp [3:6]
- boost/geometry/strategies/cartesian/area_surveyor.hpp [3:6]
- boost/geometry/strategies/cartesian/centroid_average.hpp [3:6]
- boost/geometry/strategies/concepts/area_concept.hpp [3:6]
- boost/geometry/strategies/default_area_result.hpp [3:6]
- boost/geometry/strategies/geographic/area.hpp [3:3]
- boost/geometry/strategies/geographic/intersection.hpp [3:3]
- boost/geometry/strategies/spherical/area.hpp [3:3]
- boost/geometry/strategies/spherical/get_radius.hpp [3:3]
- boost/geometry/strategies/spherical/intersection.hpp [3:3]
- boost/geometry/strategies/strategies.hpp [3:6]
- boost/geometry/util/normalize_spheroidal_coordinates.hpp [3:3]
- boost/geometry/util/select_sequence_element.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL a4e48d0c3c15487e193bc519c6d274b8
-BELONGS ya.make
- License text:
- // Copyright (c) 2014 Roshan <thisisroshansmail@gmail.com>
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/compute/algorithm/detail/balanced_path.hpp [2:2]
- boost/compute/algorithm/detail/binary_find.hpp [2:2]
- boost/compute/algorithm/detail/compact.hpp [2:2]
- boost/compute/algorithm/detail/merge_path.hpp [2:2]
- boost/compute/algorithm/detail/merge_with_merge_path.hpp [2:2]
- boost/compute/algorithm/detail/search_all.hpp [2:2]
- boost/compute/algorithm/find_end.hpp [2:2]
- boost/compute/algorithm/includes.hpp [2:2]
- boost/compute/algorithm/is_permutation.hpp [2:2]
- boost/compute/algorithm/next_permutation.hpp [2:2]
- boost/compute/algorithm/partition_point.hpp [2:2]
- boost/compute/algorithm/prev_permutation.hpp [2:2]
- boost/compute/algorithm/rotate.hpp [2:2]
- boost/compute/algorithm/rotate_copy.hpp [2:2]
- boost/compute/algorithm/search.hpp [2:2]
- boost/compute/algorithm/search_n.hpp [2:2]
- boost/compute/algorithm/set_difference.hpp [2:2]
- boost/compute/algorithm/set_intersection.hpp [2:2]
- boost/compute/algorithm/set_symmetric_difference.hpp [2:2]
- boost/compute/algorithm/set_union.hpp [2:2]
- boost/compute/algorithm/stable_partition.hpp [2:2]
- boost/compute/algorithm/unique.hpp [2:2]
- boost/compute/algorithm/unique_copy.hpp [2:2]
- boost/compute/random/bernoulli_distribution.hpp [2:2]
- boost/compute/random/discrete_distribution.hpp [2:2]
- boost/compute/random/linear_congruential_engine.hpp [2:2]
- boost/compute/random/uniform_int_distribution.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL a51c313c96c40df66faddb32c40c8845
-BELONGS ya.make
- License text:
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2001 Daniel Nuffer
- Copyright (c) 2002 Hartmut Kaiser
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/core/composite/alternative.hpp [2:5]
- boost/spirit/home/classic/core/composite/difference.hpp [2:5]
- boost/spirit/home/classic/core/composite/exclusive_or.hpp [2:5]
- boost/spirit/home/classic/core/composite/impl/alternative.ipp [2:5]
- boost/spirit/home/classic/core/composite/impl/difference.ipp [2:5]
- boost/spirit/home/classic/core/composite/impl/directives.ipp [2:6]
- boost/spirit/home/classic/core/composite/impl/exclusive_or.ipp [2:5]
- boost/spirit/home/classic/core/composite/impl/intersection.ipp [2:5]
- boost/spirit/home/classic/core/composite/impl/kleene_star.ipp [2:5]
- boost/spirit/home/classic/core/composite/impl/list.ipp [2:5]
- boost/spirit/home/classic/core/composite/impl/optional.ipp [2:5]
- boost/spirit/home/classic/core/composite/impl/positive.ipp [2:5]
- boost/spirit/home/classic/core/composite/impl/sequence.ipp [2:5]
- boost/spirit/home/classic/core/composite/impl/sequential_and.ipp [2:5]
- boost/spirit/home/classic/core/composite/impl/sequential_or.ipp [2:5]
- boost/spirit/home/classic/core/composite/intersection.hpp [2:5]
- boost/spirit/home/classic/core/composite/kleene_star.hpp [2:5]
- boost/spirit/home/classic/core/composite/list.hpp [2:5]
- boost/spirit/home/classic/core/composite/operators.hpp [2:5]
- boost/spirit/home/classic/core/composite/optional.hpp [2:5]
- boost/spirit/home/classic/core/composite/positive.hpp [2:5]
- boost/spirit/home/classic/core/composite/sequence.hpp [2:5]
- boost/spirit/home/classic/core/composite/sequential_and.hpp [2:5]
- boost/spirit/home/classic/core/composite/sequential_or.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL a53a4399b67c24bd1f890aba101e2930
-BELONGS ya.make
- License text:
- // Copyright 2008 Howard Hinnant
- // Copyright 2008 Beman Dawes
- // Copyright 2009-2011 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/chrono/duration.hpp [3:5]
- boost/chrono/system_clocks.hpp [3:5]
- boost/chrono/time_point.hpp [3:5]
- boost/ratio/detail/overflow_helpers.hpp [3:5]
- boost/ratio/ratio.hpp [3:5]
- boost/ratio/ratio_fwd.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL a542bc4ffee8ff4fefee589d7e422332
-BELONGS ya.make
- License text:
- Copyright (c) 2004 Angus Leeming
- Copyright (c) 2006 Daniel Wallin
- Copyright (c) 2005 Dan Marsden
- Copyright (c) 2007 Joel de Guzman
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/phoenix/stl/algorithm.hpp [2:5]
- boost/phoenix/stl/container.hpp [2:3]
- boost/phoenix/stl/container/container.hpp [2:3]
- boost/phoenix/stl/container/detail/container.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL a546abb712c04722f781d7f8e7ebc8c7
-BELONGS ya.make
- License text:
- // Copyright (C) 2013 Eurodecision
- // Authors: Guillaume Pinot
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/property_map/compose_property_map.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL a57d11db934fe228c75f45e9ec83e339
-BELONGS ya.make
- License text:
- @copyright Louis Dionne 2013-2017
- @copyright Jason Rice 2017
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/hana/at_key.hpp [5:8]
- boost/hana/detail/index_if.hpp [5:8]
- boost/hana/find_if.hpp [5:8]
- boost/hana/fwd/index_if.hpp [5:8]
- boost/hana/index_if.hpp [5:8]
- boost/hana/tuple.hpp [5:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL a57e7bc1a642b17ae2068cf3d13d7cec
-BELONGS ya.make
- License text:
- Copyright (c) Marshall Clow 2011-2012.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/algorithm/cxx11/copy_n.hpp [2:2]
- boost/algorithm/cxx11/find_if_not.hpp [2:2]
- boost/algorithm/cxx11/is_partitioned.hpp [2:2]
- boost/algorithm/cxx11/is_permutation.hpp [2:2]
- boost/algorithm/cxx11/partition_copy.hpp [2:2]
- boost/algorithm/cxx11/partition_point.hpp [2:2]
- boost/algorithm/hex.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL a581ea4614243c73584c408309608092
-BELONGS ya.make
- License text:
- // (C) Copyright Joaquin M Lopez Munoz 2006-2013
- // (C) Copyright Ion Gaztanaga 2014-2014
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/intrusive/detail/ebo_functor_holder.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL a59f2047a630f8952ca52dde7c3dd260
-BELONGS ya.make
- License text:
- // Copyright 2014 LASMEA UMR 6602 CNRS/Univ. Clermont II
- // Copyright 2014 LRI UMR 8623 CNRS/Univ Paris Sud XI
- // Copyright 2014 MetaScale SAS
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/external/nt2/nt2_copy.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL a5dd7d1f5a4a8ccb330aa699dc8acc9f
-BELONGS ya.make
- License text:
- // Copyright (C) 2005, 2006 Douglas Gregor <doug.gregor -at- gmail.com>.
- // Copyright (C) 2016 K. Noel Belcourt <kbelco -at- sandia.gov>.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpi/collectives/all_gather.hpp [1:1]
- boost/mpi/collectives/all_gatherv.hpp [1:1]
- boost/mpi/collectives/all_to_all.hpp [1:1]
- boost/mpi/collectives/broadcast.hpp [1:1]
- boost/mpi/collectives/gather.hpp [1:1]
- boost/mpi/collectives/scatter.hpp [1:1]
- boost/mpi/communicator.hpp [1:2]
- boost/mpi/detail/broadcast_sc.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL a5ea09ee095272ea2e3f101bf6849666
-BELONGS ya.make
- License text:
- // Copyright (c) 2002, 2003 Peter Dimov
- // Copyright (c) 2003 Daniel Frey
- // Copyright (c) 2003 Howard Hinnant
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/core/checked_delete.hpp [13:15]
-
-KEEP COPYRIGHT_SERVICE_LABEL a5eedf01d2ff92e079b113bd7640a18e
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/range_fwd.hpp at line 5
- License text:
- // Copyright Neil Groves 2003-2004.
- // Use, modification and distribution is subject to the Boost Software
- // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/range/range_fwd.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL a5ff08d3c46ed63807fc02b63b95a45c
-BELONGS ya.make
- License text:
- Copyright 2012-2013 Andreas Angelopoulos
- Copyright 2012-2013 Karsten Ahnert
- Copyright 2012-2013 Mario Mulansky
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/external/mtl4/implicit_euler_mtl4.hpp [6:8]
- boost/numeric/odeint/external/mtl4/mtl4_resize.hpp [6:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL a6413cb4e8168913b2c37765900ff385
-BELONGS ya.make
- License text:
- Copyright 2009-2013 Karsten Ahnert
- Copyright 2010-2013 Mario Mulansky
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint.hpp [9:10]
- boost/numeric/odeint/external/compute/compute.hpp [9:10]
- boost/numeric/odeint/external/compute/compute_algebra_dispatcher.hpp [9:10]
- boost/numeric/odeint/external/compute/compute_operations_dispatcher.hpp [9:10]
- boost/numeric/odeint/external/vexcl/vexcl_abs.hpp [9:10]
- boost/numeric/odeint/external/vexcl/vexcl_norm_inf.hpp [9:10]
- boost/numeric/odeint/integrate/detail/functors.hpp [9:10]
- boost/numeric/odeint/iterator/impl/n_step_iterator_impl.hpp [9:10]
- boost/numeric/odeint/iterator/impl/times_iterator_impl.hpp [9:10]
- boost/numeric/odeint/iterator/integrate/detail/functors.hpp [9:10]
- boost/numeric/odeint/iterator/n_step_iterator.hpp [10:11]
- boost/numeric/odeint/iterator/n_step_time_iterator.hpp [11:12]
- boost/numeric/odeint/iterator/times_iterator.hpp [10:11]
- boost/numeric/odeint/iterator/times_time_iterator.hpp [11:12]
-
-KEEP COPYRIGHT_SERVICE_LABEL a6d2481bfa41c78d4c8e8538ea484d02
-BELONGS ya.make
- License text:
- // Copyright Aleksey Gurtovoy 2001-2004
- // Copyright Dave Abrahams 2001-2002
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/reverse_iter_fold.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL a6d72e2504df6c83ce797b15cdb057db
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/metaparse/v1/change_error_message.hpp at line 6, boost/metaparse/v1/debug_parsing_error.hpp at line 6, boost/metaparse/v1/entire_input.hpp at line 6, boost/metaparse/v1/foldl.hpp at line 6, boost/metaparse/v1/foldl1.hpp at line 6, boost/metaparse/v1/foldr1.hpp at line 6, boost/metaparse/v1/get_col.hpp at line 6, boost/metaparse/v1/get_line.hpp at line 6, boost/metaparse/v1/get_position.hpp at line 6, boost/metaparse/v1/get_prev_char.hpp at line 6, boost/metaparse/v1/get_remaining.hpp at line 6, boost/metaparse/v1/get_result.hpp at line 6, boost/metaparse/v1/int_.hpp at line 6, boost/metaparse/v1/is_error.hpp at line 6, boost/metaparse/v1/iterate_c.hpp at line 6, boost/metaparse/v1/look_ahead.hpp at line 6, boost/metaparse/v1/next_char.hpp at line 6, boost/metaparse/v1/next_line.hpp at line 6, boost/metaparse/v1/one_char_except.hpp at line 6, boost/metaparse/v1/one_char_except_c.hpp at line 6, boost/metaparse/v1/source_position.hpp at line 6, boost/metaparse/v1/unless_error.hpp at line 6
- License text:
- // Copyright Abel Sinkovics (abel@sinkovics.hu) 2011.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/metaparse/v1/change_error_message.hpp [4:6]
- boost/metaparse/v1/debug_parsing_error.hpp [4:6]
- boost/metaparse/v1/entire_input.hpp [4:6]
- boost/metaparse/v1/foldl.hpp [4:6]
- boost/metaparse/v1/foldl1.hpp [4:6]
- boost/metaparse/v1/foldr1.hpp [4:6]
- boost/metaparse/v1/get_col.hpp [4:6]
- boost/metaparse/v1/get_line.hpp [4:6]
- boost/metaparse/v1/get_position.hpp [4:6]
- boost/metaparse/v1/get_prev_char.hpp [4:6]
- boost/metaparse/v1/get_remaining.hpp [4:6]
- boost/metaparse/v1/get_result.hpp [4:6]
- boost/metaparse/v1/int_.hpp [4:6]
- boost/metaparse/v1/is_error.hpp [4:6]
- boost/metaparse/v1/iterate_c.hpp [4:6]
- boost/metaparse/v1/look_ahead.hpp [4:6]
- boost/metaparse/v1/next_char.hpp [4:6]
- boost/metaparse/v1/next_line.hpp [4:6]
- boost/metaparse/v1/one_char_except.hpp [4:6]
- boost/metaparse/v1/one_char_except_c.hpp [4:6]
- boost/metaparse/v1/source_position.hpp [4:6]
- boost/metaparse/v1/unless_error.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL a6dc9218b480c1cfac28c3b861e08fb7
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/optional.hpp at line 5
- License text:
- // (C) Copyright 2002-4 Pavel Vozenilek .
- // Use, modification and distribution is subject to the Boost Software
- // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/serialization/optional.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL a6ef7153044344ef13f1aa7f6f26a4df
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multi_index/detail/header_holder.hpp at line 3
- License text:
- /* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/multi_index/detail/header_holder.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL a6fd7216a1ac9930b2655802aed9e478
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/random/discrete_distribution.hpp at line 5
- License text:
- * Copyright Steven Watanabe 2009-2011
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/random/discrete_distribution.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL a70d1de046a7f07a72bd05b73f591262
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2009 Joel de Guzman
- Copyright (c) 2009-2010 Hartmut Kaiser
- Copyright (c) 2010-2011 Christopher Schmidt
- Copyright (c) 2013-2014 Damien Buhl
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/adapted/adt/adapt_adt.hpp [2:5]
- boost/fusion/adapted/adt/adapt_adt_named.hpp [2:4]
- boost/fusion/adapted/struct/adapt_struct_named.hpp [2:4]
- boost/fusion/adapted/struct/detail/namespace.hpp [2:3]
- boost/fusion/adapted/struct/detail/proxy_type.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL a710f97cab1f756de65cb7fa81633cdb
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/array/data.hpp at line 5, boost/preprocessor/array/elem.hpp at line 5, boost/preprocessor/array/insert.hpp at line 5, boost/preprocessor/array/pop_back.hpp at line 5, boost/preprocessor/array/pop_front.hpp at line 5, boost/preprocessor/array/push_back.hpp at line 5, boost/preprocessor/array/push_front.hpp at line 5, boost/preprocessor/array/remove.hpp at line 5, boost/preprocessor/array/replace.hpp at line 5, boost/preprocessor/array/reverse.hpp at line 5, boost/preprocessor/array/size.hpp at line 5, boost/preprocessor/assert_msg.hpp at line 5, boost/preprocessor/comma.hpp at line 5, boost/preprocessor/comma_if.hpp at line 5, boost/preprocessor/control.hpp at line 5, boost/preprocessor/control/deduce_d.hpp at line 5, boost/preprocessor/control/expr_iif.hpp at line 5, boost/preprocessor/control/iif.hpp at line 5, boost/preprocessor/debug.hpp at line 5, boost/preprocessor/debug/error.hpp at line 5, boost/preprocessor/debug/line.hpp at line 5, boost/preprocessor/dec.hpp at line 5, boost/preprocessor/detail/auto_rec.hpp at line 5, boost/preprocessor/detail/check.hpp at line 5, boost/preprocessor/detail/dmc/auto_rec.hpp at line 5, boost/preprocessor/detail/is_binary.hpp at line 5, boost/preprocessor/detail/is_nullary.hpp at line 5, boost/preprocessor/detail/is_unary.hpp at line 5, boost/preprocessor/detail/null.hpp at line 5, boost/preprocessor/detail/split.hpp at line 5, boost/preprocessor/empty.hpp at line 5, boost/preprocessor/enum.hpp at line 5, boost/preprocessor/enum_params.hpp at line 5, boost/preprocessor/enum_params_with_a_default.hpp at line 5, boost/preprocessor/enum_params_with_defaults.hpp at line 5, boost/preprocessor/enum_shifted.hpp at line 5, boost/preprocessor/enum_shifted_params.hpp at line 5, boost/preprocessor/expand.hpp at line 5, boost/preprocessor/expr_if.hpp at line 5, boost/preprocessor/facilities/apply.hpp at line 5, boost/preprocessor/facilities/intercept.hpp at line 5, boost/preprocessor/for.hpp at line 5, boost/preprocessor/identity.hpp at line 5, boost/preprocessor/if.hpp at line 5, boost/preprocessor/inc.hpp at line 5, boost/preprocessor/iterate.hpp at line 5, boost/preprocessor/iteration.hpp at line 5, boost/preprocessor/iteration/detail/bounds/lower1.hpp at line 5, boost/preprocessor/iteration/detail/bounds/lower2.hpp at line 5, boost/preprocessor/iteration/detail/bounds/lower3.hpp at line 5, boost/preprocessor/iteration/detail/bounds/lower4.hpp at line 5, boost/preprocessor/iteration/detail/bounds/lower5.hpp at line 5, boost/preprocessor/iteration/detail/bounds/upper1.hpp at line 5, boost/preprocessor/iteration/detail/bounds/upper2.hpp at line 5, boost/preprocessor/iteration/detail/bounds/upper3.hpp at line 5, boost/preprocessor/iteration/detail/bounds/upper4.hpp at line 5, boost/preprocessor/iteration/detail/bounds/upper5.hpp at line 5, boost/preprocessor/iteration/detail/finish.hpp at line 5, boost/preprocessor/iteration/detail/iter/forward1.hpp at line 5, boost/preprocessor/iteration/detail/iter/forward2.hpp at line 5, boost/preprocessor/iteration/detail/iter/forward3.hpp at line 5, boost/preprocessor/iteration/detail/iter/forward4.hpp at line 5, boost/preprocessor/iteration/detail/iter/forward5.hpp at line 5, boost/preprocessor/iteration/detail/iter/reverse1.hpp at line 5, boost/preprocessor/iteration/detail/iter/reverse2.hpp at line 5, boost/preprocessor/iteration/detail/iter/reverse3.hpp at line 5, boost/preprocessor/iteration/detail/iter/reverse4.hpp at line 5, boost/preprocessor/iteration/detail/iter/reverse5.hpp at line 5, boost/preprocessor/iteration/detail/local.hpp at line 5, boost/preprocessor/iteration/detail/rlocal.hpp at line 5, boost/preprocessor/iteration/detail/self.hpp at line 5, boost/preprocessor/iteration/detail/start.hpp at line 5, boost/preprocessor/iteration/iterate.hpp at line 5, boost/preprocessor/iteration/local.hpp at line 5, boost/preprocessor/iteration/self.hpp at line 5, boost/preprocessor/limits.hpp at line 5, boost/preprocessor/logical/bitand.hpp at line 5, boost/preprocessor/logical/bitnor.hpp at line 5, boost/preprocessor/logical/bitor.hpp at line 5, boost/preprocessor/logical/bitxor.hpp at line 5, boost/preprocessor/logical/compl.hpp at line 5, boost/preprocessor/max.hpp at line 5, boost/preprocessor/min.hpp at line 5, boost/preprocessor/punctuation.hpp at line 5, boost/preprocessor/punctuation/paren.hpp at line 5, boost/preprocessor/punctuation/paren_if.hpp at line 5, boost/preprocessor/repeat.hpp at line 5, boost/preprocessor/repeat_2nd.hpp at line 5, boost/preprocessor/repeat_3rd.hpp at line 5, boost/preprocessor/repeat_from_to.hpp at line 5, boost/preprocessor/repeat_from_to_2nd.hpp at line 5, boost/preprocessor/repeat_from_to_3rd.hpp at line 5, boost/preprocessor/repetition.hpp at line 5, boost/preprocessor/repetition/deduce_r.hpp at line 5, boost/preprocessor/repetition/deduce_z.hpp at line 5, boost/preprocessor/repetition/enum_binary_params.hpp at line 5, boost/preprocessor/repetition/enum_trailing.hpp at line 5, boost/preprocessor/repetition/enum_trailing_binary_params.hpp at line 5, boost/preprocessor/repetition/enum_trailing_params.hpp at line 5, boost/preprocessor/selection.hpp at line 5, boost/preprocessor/seq/cat.hpp at line 5, boost/preprocessor/seq/detail/split.hpp at line 5, boost/preprocessor/seq/elem.hpp at line 5, boost/preprocessor/seq/enum.hpp at line 5, boost/preprocessor/seq/filter.hpp at line 5, boost/preprocessor/seq/first_n.hpp at line 5, boost/preprocessor/seq/fold_left.hpp at line 5, boost/preprocessor/seq/fold_right.hpp at line 5, boost/preprocessor/seq/for_each.hpp at line 5, boost/preprocessor/seq/for_each_i.hpp at line 5, boost/preprocessor/seq/for_each_product.hpp at line 5, boost/preprocessor/seq/insert.hpp at line 5, boost/preprocessor/seq/pop_back.hpp at line 5, boost/preprocessor/seq/pop_front.hpp at line 5, boost/preprocessor/seq/push_back.hpp at line 5, boost/preprocessor/seq/push_front.hpp at line 5, boost/preprocessor/seq/remove.hpp at line 5, boost/preprocessor/seq/replace.hpp at line 5, boost/preprocessor/seq/rest_n.hpp at line 5, boost/preprocessor/seq/reverse.hpp at line 5, boost/preprocessor/seq/seq.hpp at line 5, boost/preprocessor/seq/size.hpp at line 5, boost/preprocessor/seq/subseq.hpp at line 5, boost/preprocessor/seq/to_array.hpp at line 5, boost/preprocessor/seq/to_tuple.hpp at line 5, boost/preprocessor/seq/transform.hpp at line 5, boost/preprocessor/slot.hpp at line 5, boost/preprocessor/slot/detail/def.hpp at line 5, boost/preprocessor/slot/detail/shared.hpp at line 5, boost/preprocessor/slot/detail/slot1.hpp at line 5, boost/preprocessor/slot/detail/slot2.hpp at line 5, boost/preprocessor/slot/detail/slot3.hpp at line 5, boost/preprocessor/slot/detail/slot4.hpp at line 5, boost/preprocessor/slot/detail/slot5.hpp at line 5, boost/preprocessor/slot/slot.hpp at line 5, boost/preprocessor/while.hpp at line 5, boost/preprocessor/wstringize.hpp at line 5
- License text:
- \# * (C) Copyright Paul Mensonides 2002.
- \# * Distributed under the Boost Software License, Version 1.0. (See
- \# * accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/preprocessor/array/data.hpp [3:5]
- boost/preprocessor/array/elem.hpp [3:5]
- boost/preprocessor/array/insert.hpp [3:5]
- boost/preprocessor/array/pop_back.hpp [3:5]
- boost/preprocessor/array/pop_front.hpp [3:5]
- boost/preprocessor/array/push_back.hpp [3:6]
- boost/preprocessor/array/push_front.hpp [3:6]
- boost/preprocessor/array/remove.hpp [3:5]
- boost/preprocessor/array/replace.hpp [3:5]
- boost/preprocessor/array/reverse.hpp [3:5]
- boost/preprocessor/array/size.hpp [3:5]
- boost/preprocessor/assert_msg.hpp [3:5]
- boost/preprocessor/comma.hpp [3:5]
- boost/preprocessor/comma_if.hpp [3:5]
- boost/preprocessor/control.hpp [3:5]
- boost/preprocessor/control/deduce_d.hpp [3:5]
- boost/preprocessor/control/expr_iif.hpp [3:5]
- boost/preprocessor/control/iif.hpp [3:5]
- boost/preprocessor/debug.hpp [3:5]
- boost/preprocessor/debug/error.hpp [3:5]
- boost/preprocessor/debug/line.hpp [3:5]
- boost/preprocessor/dec.hpp [3:5]
- boost/preprocessor/detail/auto_rec.hpp [3:5]
- boost/preprocessor/detail/check.hpp [3:5]
- boost/preprocessor/detail/dmc/auto_rec.hpp [3:5]
- boost/preprocessor/detail/is_binary.hpp [3:5]
- boost/preprocessor/detail/is_nullary.hpp [3:5]
- boost/preprocessor/detail/is_unary.hpp [3:5]
- boost/preprocessor/detail/null.hpp [3:5]
- boost/preprocessor/detail/split.hpp [3:5]
- boost/preprocessor/empty.hpp [3:5]
- boost/preprocessor/enum.hpp [3:5]
- boost/preprocessor/enum_params.hpp [3:5]
- boost/preprocessor/enum_params_with_a_default.hpp [3:5]
- boost/preprocessor/enum_params_with_defaults.hpp [3:5]
- boost/preprocessor/enum_shifted.hpp [3:5]
- boost/preprocessor/enum_shifted_params.hpp [3:5]
- boost/preprocessor/expand.hpp [3:5]
- boost/preprocessor/expr_if.hpp [3:5]
- boost/preprocessor/facilities/apply.hpp [3:5]
- boost/preprocessor/facilities/intercept.hpp [3:5]
- boost/preprocessor/for.hpp [3:5]
- boost/preprocessor/identity.hpp [3:5]
- boost/preprocessor/if.hpp [3:5]
- boost/preprocessor/inc.hpp [3:5]
- boost/preprocessor/iterate.hpp [3:5]
- boost/preprocessor/iteration.hpp [3:5]
- boost/preprocessor/iteration/detail/bounds/lower1.hpp [3:5]
- boost/preprocessor/iteration/detail/bounds/lower2.hpp [3:5]
- boost/preprocessor/iteration/detail/bounds/lower3.hpp [3:5]
- boost/preprocessor/iteration/detail/bounds/lower4.hpp [3:5]
- boost/preprocessor/iteration/detail/bounds/lower5.hpp [3:5]
- boost/preprocessor/iteration/detail/bounds/upper1.hpp [3:5]
- boost/preprocessor/iteration/detail/bounds/upper2.hpp [3:5]
- boost/preprocessor/iteration/detail/bounds/upper3.hpp [3:5]
- boost/preprocessor/iteration/detail/bounds/upper4.hpp [3:5]
- boost/preprocessor/iteration/detail/bounds/upper5.hpp [3:5]
- boost/preprocessor/iteration/detail/finish.hpp [3:5]
- boost/preprocessor/iteration/detail/iter/forward1.hpp [3:5]
- boost/preprocessor/iteration/detail/iter/forward2.hpp [3:5]
- boost/preprocessor/iteration/detail/iter/forward3.hpp [3:5]
- boost/preprocessor/iteration/detail/iter/forward4.hpp [3:5]
- boost/preprocessor/iteration/detail/iter/forward5.hpp [3:5]
- boost/preprocessor/iteration/detail/iter/reverse1.hpp [3:5]
- boost/preprocessor/iteration/detail/iter/reverse2.hpp [3:5]
- boost/preprocessor/iteration/detail/iter/reverse3.hpp [3:5]
- boost/preprocessor/iteration/detail/iter/reverse4.hpp [3:5]
- boost/preprocessor/iteration/detail/iter/reverse5.hpp [3:5]
- boost/preprocessor/iteration/detail/local.hpp [3:5]
- boost/preprocessor/iteration/detail/rlocal.hpp [3:5]
- boost/preprocessor/iteration/detail/self.hpp [3:5]
- boost/preprocessor/iteration/detail/start.hpp [3:5]
- boost/preprocessor/iteration/iterate.hpp [3:5]
- boost/preprocessor/iteration/local.hpp [3:5]
- boost/preprocessor/iteration/self.hpp [3:5]
- boost/preprocessor/limits.hpp [3:5]
- boost/preprocessor/logical/bitand.hpp [3:5]
- boost/preprocessor/logical/bitnor.hpp [3:5]
- boost/preprocessor/logical/bitor.hpp [3:5]
- boost/preprocessor/logical/bitxor.hpp [3:5]
- boost/preprocessor/logical/compl.hpp [3:5]
- boost/preprocessor/max.hpp [3:5]
- boost/preprocessor/min.hpp [3:5]
- boost/preprocessor/punctuation.hpp [3:5]
- boost/preprocessor/punctuation/paren.hpp [3:5]
- boost/preprocessor/punctuation/paren_if.hpp [3:5]
- boost/preprocessor/repeat.hpp [3:5]
- boost/preprocessor/repeat_2nd.hpp [3:5]
- boost/preprocessor/repeat_3rd.hpp [3:5]
- boost/preprocessor/repeat_from_to.hpp [3:5]
- boost/preprocessor/repeat_from_to_2nd.hpp [3:5]
- boost/preprocessor/repeat_from_to_3rd.hpp [3:5]
- boost/preprocessor/repetition.hpp [3:5]
- boost/preprocessor/repetition/deduce_r.hpp [3:5]
- boost/preprocessor/repetition/deduce_z.hpp [3:5]
- boost/preprocessor/repetition/enum_binary_params.hpp [3:5]
- boost/preprocessor/repetition/enum_trailing.hpp [3:5]
- boost/preprocessor/repetition/enum_trailing_binary_params.hpp [3:5]
- boost/preprocessor/repetition/enum_trailing_params.hpp [3:5]
- boost/preprocessor/selection.hpp [3:5]
- boost/preprocessor/seq/cat.hpp [3:5]
- boost/preprocessor/seq/detail/split.hpp [3:5]
- boost/preprocessor/seq/elem.hpp [3:5]
- boost/preprocessor/seq/enum.hpp [3:5]
- boost/preprocessor/seq/filter.hpp [3:5]
- boost/preprocessor/seq/first_n.hpp [3:5]
- boost/preprocessor/seq/fold_left.hpp [3:5]
- boost/preprocessor/seq/fold_right.hpp [3:5]
- boost/preprocessor/seq/for_each.hpp [3:5]
- boost/preprocessor/seq/for_each_i.hpp [3:5]
- boost/preprocessor/seq/for_each_product.hpp [3:5]
- boost/preprocessor/seq/insert.hpp [3:5]
- boost/preprocessor/seq/pop_back.hpp [3:5]
- boost/preprocessor/seq/pop_front.hpp [3:5]
- boost/preprocessor/seq/push_back.hpp [3:5]
- boost/preprocessor/seq/push_front.hpp [3:5]
- boost/preprocessor/seq/remove.hpp [3:5]
- boost/preprocessor/seq/replace.hpp [3:5]
- boost/preprocessor/seq/rest_n.hpp [3:5]
- boost/preprocessor/seq/reverse.hpp [3:5]
- boost/preprocessor/seq/seq.hpp [3:5]
- boost/preprocessor/seq/size.hpp [3:5]
- boost/preprocessor/seq/subseq.hpp [3:5]
- boost/preprocessor/seq/to_array.hpp [3:5]
- boost/preprocessor/seq/to_tuple.hpp [3:5]
- boost/preprocessor/seq/transform.hpp [3:5]
- boost/preprocessor/slot.hpp [3:5]
- boost/preprocessor/slot/detail/def.hpp [3:5]
- boost/preprocessor/slot/detail/shared.hpp [3:5]
- boost/preprocessor/slot/detail/slot1.hpp [3:5]
- boost/preprocessor/slot/detail/slot2.hpp [3:5]
- boost/preprocessor/slot/detail/slot3.hpp [3:5]
- boost/preprocessor/slot/detail/slot4.hpp [3:5]
- boost/preprocessor/slot/detail/slot5.hpp [3:5]
- boost/preprocessor/slot/slot.hpp [3:5]
- boost/preprocessor/while.hpp [3:5]
- boost/preprocessor/wstringize.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL a717e4b7c213ca28bbeaec4750bb98ec
-BELONGS ya.make
- License text:
- // Copyright 2004, 2005 The Trustees of Indiana University.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/distributed/rmat_graph_generator.hpp [1:1]
- boost/graph/erdos_renyi_generator.hpp [1:1]
- boost/graph/fruchterman_reingold.hpp [1:1]
- boost/graph/mesh_graph_generator.hpp [1:1]
- boost/graph/point_traits.hpp [1:1]
- boost/graph/rmat_graph_generator.hpp [1:1]
- boost/graph/ssca_graph_generator.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL a7831931571cb11df5942e281a68009f
-BELONGS ya.make
- License text:
- * Copyright (c) 1994
- * Hewlett-Packard Company
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/detail/algorithm.hpp [7:8]
- boost/detail/binary_search.hpp [6:7]
- boost/multi_array/algorithm.hpp [6:7]
- boost/multi_index/detail/ord_index_impl.hpp [23:24]
- boost/multi_index/detail/ord_index_node.hpp [23:24]
- boost/multi_index/detail/ord_index_ops.hpp [23:24]
-
-KEEP COPYRIGHT_SERVICE_LABEL a7890834ac7e904f210a19fb2b0ad11d
-BELONGS ya.make
- License text:
- // Copyright Peter Dimov 2001
- // Copyright Aleksey Gurtovoy 2001-2004
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/aux_/basic_bind.hpp [5:6]
- boost/mpl/aux_/preprocessed/bcc/basic_bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc/bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc551/basic_bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc551/bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc_pre590/basic_bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc_pre590/bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/dmc/basic_bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/dmc/bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/gcc/basic_bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/gcc/bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc60/basic_bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc60/bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc70/basic_bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc70/bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/mwcw/basic_bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/mwcw/bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ctps/basic_bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ctps/bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ttp/basic_bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ttp/bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/plain/basic_bind.hpp [2:3]
- boost/mpl/aux_/preprocessed/plain/bind.hpp [2:3]
- boost/mpl/bind.hpp [9:10]
- boost/mpl/protect.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL a791d76d11657f61fc7d724e28607e82
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signals2/trackable.hpp at line 7
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/signals2/trackable.hpp [3:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL a7b291408d5b386698800c270987d816
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/qi/numeric/detail/numeric_utils.hpp [2:6]
- boost/spirit/home/x3/support/numeric_utils/detail/extract_int.hpp [2:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL a7eb31adebbe4ac555a6d1f417f84187
-BELONGS ya.make
- License text:
- // (C) Copyright Ion Gaztanaga 2006-2012
- // (C) Copyright Markus Schoepflin 2007
- // (C) Copyright Bryce Lelbach 2010
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/interprocess/detail/atomic.hpp [3:5]
- boost/interprocess/detail/file_wrapper.hpp [3:5]
- boost/interprocess/detail/managed_open_or_create_impl.hpp [3:5]
- boost/interprocess/detail/ptime_wrk.hpp [3:5]
- boost/interprocess/smart_ptr/detail/shared_count.hpp [5:9]
- boost/interprocess/smart_ptr/enable_shared_from_this.hpp [5:8]
- boost/interprocess/smart_ptr/intrusive_ptr.hpp [5:8]
- boost/interprocess/smart_ptr/scoped_ptr.hpp [5:9]
- boost/interprocess/smart_ptr/shared_ptr.hpp [5:9]
- boost/interprocess/smart_ptr/weak_ptr.hpp [5:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL a8022a1fcbc50c9b88173a9ea8f85905
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/functional.hpp at line 4
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/functional.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL a8052e92fe6f00f953d51bb1b9eabb8a
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2007 Joel de Guzman
- Copyright (c) 2014 John Fletcher
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/phoenix/bind/bind_member_variable.hpp [2:3]
- boost/phoenix/bind/detail/cpp03/bind_member_function.hpp [2:3]
- boost/phoenix/core/actor.hpp [2:5]
- boost/phoenix/core/debug.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL a81e6b59bf6cb32af7d53ed2b68efdcf
-BELONGS ya.make
- License text:
- Copyright 2012 Lucanus Simonson
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/polygon/segment_utils.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL a81f16b19633169e29f73443fb23e585
-BELONGS ya.make
- License text:
- // Copyright (c) 2003 David Abrahams
- // Copyright (c) 2003 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/detail/quick_allocator.hpp [13:14]
- boost/smart_ptr/detail/quick_allocator.hpp [13:14]
-
-KEEP COPYRIGHT_SERVICE_LABEL a82e1cdd44c59d927ac69ec1ca05ab28
-BELONGS ya.make
- License text:
- // (C) Copyright Noel Belcourt 2007.
- // Copyright 2017, NVIDIA CORPORATION.
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/pgi.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL a873bfeecc5128a8bf6d86778cd42652
-BELONGS ya.make
- License text:
- @copyright Louis Dionne 2016
- @copyright Jason Rice 2016
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/hana/concept/hashable.hpp [5:8]
- boost/hana/detail/hash_table.hpp [5:8]
- boost/hana/fwd/concept/hashable.hpp [5:8]
- boost/hana/fwd/hash.hpp [5:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL a89f79f040019b19486891ea84fe064c
-BELONGS ya.make
- License text:
- // Copyright (C) 2008-2016 Tim Blechmann
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/lockfree/detail/freelist.hpp [3:3]
- boost/lockfree/lockfree_forward.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL a8a1037395e0ad6175aa2ab2e85af5b6
-BELONGS ya.make
- License text:
- // (C) Copyright Ion Gaztanaga 2005-2013.
- // (C) Copyright Gennaro Prota 2003 - 2004.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/container/detail/iterators.hpp [3:4]
- boost/container/detail/transform_iterator.hpp [3:4]
- boost/interprocess/detail/pointer_type.hpp [3:4]
- boost/interprocess/detail/transform_iterator.hpp [3:4]
- boost/interprocess/detail/utilities.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL a8b3a4297e61473986978ae0e07bca11
-BELONGS ya.make
- License text:
- // (C) Copyright Nick Thompson 2017.
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/chebyshev.hpp [1:3]
- boost/math/special_functions/chebyshev_transform.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL a8d89d0d87e1b3d47b9f31d23c4eb2ce
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic.hpp [2:14]
- boost/spirit/home/classic/phoenix/new.hpp [3:5]
- boost/spirit/repository/home/qi/directive/distinct.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL a90d6f9cea595f4ae9c35ab6094b9c7f
-BELONGS ya.make
- License text:
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2003 Martin Wille
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/core/primitives/impl/primitives.ipp [2:4]
- boost/spirit/home/classic/core/primitives/primitives.hpp [2:4]
- boost/spirit/home/classic/meta/impl/parser_traits.ipp [2:5]
- boost/spirit/home/classic/meta/parser_traits.hpp [2:5]
- boost/spirit/home/classic/utility/scoped_lock.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL a94d96368a66ee33343f336d0ba81d21
-BELONGS ya.make
- License text:
- // Copyright (c) 2007-2011 Barend Gehrels, Amsterdam, the Netherlands.
- // Copyright (c) 2008-2011 Bruno Lalande, Paris, France.
- // Copyright (c) 2009-2011 Mateusz Loskot, London, UK.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL a9a214e2eed0b89d70377475968a7415
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/gcc.hpp [1:9]
- boost/config/compiler/visualc.hpp [1:8]
- boost/config/platform/macos.hpp [1:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL a9c8a7c9fcd186be6ad7d96495fef966
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2006-7, 2013-14.
- // Copyright Paul A. Bristow 2007, 2013-14.
- // Copyright Nikhar Agrawal 2013-14
- // Copyright Christopher Kormanyos 2013-14
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/gamma.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL a9d1fd602f0c19f310f168a4ca8ae204
-BELONGS libs/thread/ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- libs/thread/src/win32/tss_pe.cpp [2:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL a9d5074bdc20d985f64135ae02f955a0
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/pending/container_traits.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/pending/container_traits.hpp [1:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL a9eb6f13fc57f56c47d8459914a5a52e
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/detail/polygamma.hpp [3:8]
- boost/math/special_functions/polygamma.hpp [3:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL aa0bfcec74e862504934e7d8670be932
-BELONGS ya.make
- License text:
- Copyright (c) 2009 Chris Hoeppler
- Copyright (c) 2014 Lee Clagett
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/x3/directive/confix.hpp [2:3]
- boost/spirit/repository/home/qi/directive/confix.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL aa26c33c3118e86bb6d726d742cff87d
-BELONGS ya.make
- License text:
- // Copyright (c) 2014 Mageswaran.D <mageswaran1989@gmail.com>
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/compute/algorithm/lexicographical_compare.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL aa2ee27a7e59b446f91a7e1ce9f20050
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2006.
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/concepts/distributions.hpp [1:3]
- boost/math/concepts/real_concept.hpp [1:3]
- boost/math/concepts/std_real_concept.hpp [1:3]
- boost/math/distributions/bernoulli.hpp [3:4]
- boost/math/distributions/beta.hpp [3:4]
- boost/math/distributions/binomial.hpp [3:4]
- boost/math/distributions/detail/derived_accessors.hpp [1:3]
- boost/math/distributions/exponential.hpp [1:3]
- boost/math/distributions/extreme_value.hpp [1:3]
- boost/math/distributions/fisher_f.hpp [1:1]
- boost/math/distributions/gamma.hpp [1:3]
- boost/math/distributions/lognormal.hpp [1:3]
- boost/math/distributions/poisson.hpp [3:4]
- boost/math/distributions/students_t.hpp [1:3]
- boost/math/distributions/uniform.hpp [1:4]
- boost/math/distributions/weibull.hpp [1:3]
- boost/math/special_functions/binomial.hpp [1:3]
- boost/math/special_functions/detail/ibeta_inverse.hpp [1:4]
- boost/math/special_functions/detail/igamma_large.hpp [1:3]
- boost/math/special_functions/detail/unchecked_factorial.hpp [1:3]
- boost/math/special_functions/math_fwd.hpp [5:6]
- boost/math/tools/promotion.hpp [3:4]
- boost/math/tools/real_cast.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL aa4b6b5a567bcedd7e044e9f17cef556
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2006-7, 2013-14.
- // Copyright Paul A. Bristow 2007, 2013-14.
- // Copyright Nikhar Agrawal 2013-14
- // Copyright Christopher Kormanyos 2013-14
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/gamma.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL aa4f3bb63ff4fdd4e894b9af2925c00e
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2011 Hartmut Kaiser
- Copyright (c) 2001-2014 Joel de Guzman
- Copyright (c) 2013 Agustin Berge
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/x3/auxiliary/attr.hpp [2:4]
- boost/spirit/home/x3/core/parser.hpp [2:3]
- boost/spirit/home/x3/directive/no_skip.hpp [2:4]
- boost/spirit/home/x3/directive/skip.hpp [2:3]
- boost/spirit/home/x3/support/traits/handles_container.hpp [2:3]
- boost/spirit/home/x3/support/utility/sfinae.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL aa5d0b1566cd2b1ccc445732a6682e0d
-BELONGS ya.make
- License text:
- // Copyright (C) 2004-2006 The Trustees of Indiana University.
- // Copyright (C) 2002 Brad King and Douglas Gregor
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/distributed/page_rank.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL aae0314f7fb4ec80f57017d1bfb6dba7
-BELONGS ya.make
- License text:
- @copyright Louis Dionne 2013-2017
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/hana.hpp [6:8]
- boost/hana/accessors.hpp [5:7]
- boost/hana/adapt_adt.hpp [5:7]
- boost/hana/adapt_struct.hpp [5:7]
- boost/hana/adjust.hpp [5:7]
- boost/hana/adjust_if.hpp [5:7]
- boost/hana/all.hpp [5:7]
- boost/hana/all_of.hpp [5:7]
- boost/hana/and.hpp [5:7]
- boost/hana/any.hpp [5:7]
- boost/hana/any_of.hpp [5:7]
- boost/hana/ap.hpp [5:7]
- boost/hana/append.hpp [5:7]
- boost/hana/assert.hpp [5:7]
- boost/hana/at.hpp [5:7]
- boost/hana/at_key.hpp [5:8]
- boost/hana/back.hpp [5:7]
- boost/hana/basic_tuple.hpp [5:7]
- boost/hana/bool.hpp [5:7]
- boost/hana/cartesian_product.hpp [5:7]
- boost/hana/chain.hpp [5:7]
- boost/hana/comparing.hpp [5:7]
- boost/hana/concat.hpp [5:7]
- boost/hana/concept.hpp [5:7]
- boost/hana/concept/applicative.hpp [5:7]
- boost/hana/concept/comonad.hpp [5:7]
- boost/hana/concept/comparable.hpp [5:7]
- boost/hana/concept/constant.hpp [5:7]
- boost/hana/concept/euclidean_ring.hpp [5:7]
- boost/hana/concept/foldable.hpp [5:7]
- boost/hana/concept/functor.hpp [5:7]
- boost/hana/concept/group.hpp [5:7]
- boost/hana/concept/integral_constant.hpp [5:7]
- boost/hana/concept/iterable.hpp [5:7]
- boost/hana/concept/logical.hpp [5:7]
- boost/hana/concept/metafunction.hpp [5:7]
- boost/hana/concept/monad.hpp [5:7]
- boost/hana/concept/monad_plus.hpp [5:7]
- boost/hana/concept/monoid.hpp [5:7]
- boost/hana/concept/orderable.hpp [5:7]
- boost/hana/concept/product.hpp [5:7]
- boost/hana/concept/ring.hpp [5:7]
- boost/hana/concept/searchable.hpp [5:7]
- boost/hana/concept/sequence.hpp [5:7]
- boost/hana/concept/struct.hpp [5:7]
- boost/hana/config.hpp [5:7]
- boost/hana/contains.hpp [5:7]
- boost/hana/core.hpp [5:7]
- boost/hana/core/common.hpp [5:7]
- boost/hana/core/default.hpp [5:7]
- boost/hana/core/dispatch.hpp [5:7]
- boost/hana/core/is_a.hpp [5:7]
- boost/hana/core/make.hpp [5:7]
- boost/hana/core/tag_of.hpp [5:7]
- boost/hana/core/to.hpp [5:7]
- boost/hana/core/when.hpp [5:7]
- boost/hana/count.hpp [5:7]
- boost/hana/count_if.hpp [5:7]
- boost/hana/cycle.hpp [5:7]
- boost/hana/define_struct.hpp [5:7]
- boost/hana/detail/algorithm.hpp [5:7]
- boost/hana/detail/any_of.hpp [5:7]
- boost/hana/detail/array.hpp [5:7]
- boost/hana/detail/canonical_constant.hpp [5:7]
- boost/hana/detail/concepts.hpp [5:7]
- boost/hana/detail/create.hpp [5:7]
- boost/hana/detail/decay.hpp [6:8]
- boost/hana/detail/dispatch_if.hpp [5:7]
- boost/hana/detail/fast_and.hpp [5:7]
- boost/hana/detail/first_unsatisfied_index.hpp [5:7]
- boost/hana/detail/has_common_embedding.hpp [5:7]
- boost/hana/detail/has_duplicates.hpp [5:7]
- boost/hana/detail/index_if.hpp [5:8]
- boost/hana/detail/integral_constant.hpp [6:8]
- boost/hana/detail/intrinsics.hpp [5:7]
- boost/hana/detail/nested_by.hpp [5:7]
- boost/hana/detail/nested_by_fwd.hpp [5:7]
- boost/hana/detail/nested_than.hpp [5:7]
- boost/hana/detail/nested_than_fwd.hpp [5:7]
- boost/hana/detail/nested_to.hpp [5:7]
- boost/hana/detail/nested_to_fwd.hpp [5:7]
- boost/hana/detail/operators/adl.hpp [5:7]
- boost/hana/detail/operators/arithmetic.hpp [5:7]
- boost/hana/detail/operators/comparable.hpp [5:7]
- boost/hana/detail/operators/iterable.hpp [5:7]
- boost/hana/detail/operators/logical.hpp [5:7]
- boost/hana/detail/operators/monad.hpp [5:7]
- boost/hana/detail/operators/orderable.hpp [5:7]
- boost/hana/detail/operators/searchable.hpp [5:7]
- boost/hana/detail/preprocessor.hpp [5:7]
- boost/hana/detail/std_common_type.hpp [5:7]
- boost/hana/detail/struct_macros.hpp [10:12]
- boost/hana/detail/type_at.hpp [5:7]
- boost/hana/detail/type_foldl1.hpp [5:7]
- boost/hana/detail/type_foldr1.hpp [5:7]
- boost/hana/detail/unpack_flatten.hpp [5:7]
- boost/hana/detail/variadic/at.hpp [5:7]
- boost/hana/detail/variadic/drop_into.hpp [5:7]
- boost/hana/detail/variadic/foldl1.hpp [5:7]
- boost/hana/detail/variadic/foldr1.hpp [5:7]
- boost/hana/detail/variadic/reverse_apply.hpp [5:7]
- boost/hana/detail/variadic/reverse_apply/flat.hpp [5:7]
- boost/hana/detail/variadic/reverse_apply/unrolled.hpp [5:7]
- boost/hana/detail/variadic/split_at.hpp [5:7]
- boost/hana/detail/variadic/take.hpp [5:7]
- boost/hana/detail/void_t.hpp [5:7]
- boost/hana/detail/wrong.hpp [5:7]
- boost/hana/difference.hpp [5:7]
- boost/hana/div.hpp [5:7]
- boost/hana/drop_back.hpp [5:7]
- boost/hana/drop_front.hpp [5:7]
- boost/hana/drop_front_exactly.hpp [5:7]
- boost/hana/drop_while.hpp [5:7]
- boost/hana/duplicate.hpp [5:7]
- boost/hana/empty.hpp [5:7]
- boost/hana/equal.hpp [5:7]
- boost/hana/erase_key.hpp [5:7]
- boost/hana/eval.hpp [5:7]
- boost/hana/eval_if.hpp [5:7]
- boost/hana/experimental/printable.hpp [5:7]
- boost/hana/experimental/type_name.hpp [5:7]
- boost/hana/experimental/types.hpp [5:7]
- boost/hana/experimental/view.hpp [5:7]
- boost/hana/ext/boost.hpp [5:7]
- boost/hana/ext/boost/fusion.hpp [5:7]
- boost/hana/ext/boost/fusion/deque.hpp [5:7]
- boost/hana/ext/boost/fusion/detail/common.hpp [5:7]
- boost/hana/ext/boost/fusion/list.hpp [5:7]
- boost/hana/ext/boost/fusion/tuple.hpp [9:11]
- boost/hana/ext/boost/fusion/vector.hpp [5:7]
- boost/hana/ext/boost/mpl.hpp [5:7]
- boost/hana/ext/boost/mpl/integral_c.hpp [5:7]
- boost/hana/ext/boost/mpl/list.hpp [5:7]
- boost/hana/ext/boost/mpl/vector.hpp [5:7]
- boost/hana/ext/boost/tuple.hpp [5:7]
- boost/hana/ext/std.hpp [5:7]
- boost/hana/ext/std/array.hpp [5:7]
- boost/hana/ext/std/integer_sequence.hpp [5:7]
- boost/hana/ext/std/integral_constant.hpp [5:7]
- boost/hana/ext/std/pair.hpp [5:7]
- boost/hana/ext/std/ratio.hpp [5:7]
- boost/hana/ext/std/tuple.hpp [5:7]
- boost/hana/ext/std/vector.hpp [5:8]
- boost/hana/extend.hpp [5:7]
- boost/hana/extract.hpp [5:7]
- boost/hana/fill.hpp [5:7]
- boost/hana/filter.hpp [5:7]
- boost/hana/find.hpp [5:7]
- boost/hana/find_if.hpp [5:8]
- boost/hana/first.hpp [5:7]
- boost/hana/flatten.hpp [5:7]
- boost/hana/fold.hpp [5:7]
- boost/hana/fold_left.hpp [5:7]
- boost/hana/fold_right.hpp [5:7]
- boost/hana/for_each.hpp [5:7]
- boost/hana/front.hpp [5:7]
- boost/hana/functional.hpp [5:7]
- boost/hana/functional/always.hpp [5:7]
- boost/hana/functional/apply.hpp [5:7]
- boost/hana/functional/arg.hpp [5:7]
- boost/hana/functional/capture.hpp [5:7]
- boost/hana/functional/compose.hpp [5:7]
- boost/hana/functional/curry.hpp [5:7]
- boost/hana/functional/demux.hpp [5:7]
- boost/hana/functional/fix.hpp [5:7]
- boost/hana/functional/flip.hpp [5:7]
- boost/hana/functional/id.hpp [5:7]
- boost/hana/functional/infix.hpp [5:7]
- boost/hana/functional/iterate.hpp [5:7]
- boost/hana/functional/lockstep.hpp [5:7]
- boost/hana/functional/on.hpp [5:7]
- boost/hana/functional/overload.hpp [5:7]
- boost/hana/functional/overload_linearly.hpp [5:7]
- boost/hana/functional/partial.hpp [5:7]
- boost/hana/functional/placeholder.hpp [5:7]
- boost/hana/functional/reverse_partial.hpp [5:7]
- boost/hana/fuse.hpp [5:7]
- boost/hana/fwd/accessors.hpp [5:7]
- boost/hana/fwd/adapt_adt.hpp [5:7]
- boost/hana/fwd/adapt_struct.hpp [5:7]
- boost/hana/fwd/adjust.hpp [5:7]
- boost/hana/fwd/adjust_if.hpp [5:7]
- boost/hana/fwd/all.hpp [5:7]
- boost/hana/fwd/all_of.hpp [5:7]
- boost/hana/fwd/and.hpp [5:7]
- boost/hana/fwd/any.hpp [5:7]
- boost/hana/fwd/any_of.hpp [5:7]
- boost/hana/fwd/ap.hpp [5:7]
- boost/hana/fwd/append.hpp [5:7]
- boost/hana/fwd/at.hpp [5:7]
- boost/hana/fwd/at_key.hpp [5:7]
- boost/hana/fwd/back.hpp [5:7]
- boost/hana/fwd/basic_tuple.hpp [5:7]
- boost/hana/fwd/bool.hpp [5:7]
- boost/hana/fwd/cartesian_product.hpp [5:7]
- boost/hana/fwd/chain.hpp [5:7]
- boost/hana/fwd/comparing.hpp [5:7]
- boost/hana/fwd/concat.hpp [5:7]
- boost/hana/fwd/concept/applicative.hpp [5:7]
- boost/hana/fwd/concept/comonad.hpp [5:7]
- boost/hana/fwd/concept/comparable.hpp [5:7]
- boost/hana/fwd/concept/constant.hpp [5:7]
- boost/hana/fwd/concept/euclidean_ring.hpp [5:7]
- boost/hana/fwd/concept/foldable.hpp [5:7]
- boost/hana/fwd/concept/functor.hpp [5:7]
- boost/hana/fwd/concept/group.hpp [5:7]
- boost/hana/fwd/concept/integral_constant.hpp [5:7]
- boost/hana/fwd/concept/iterable.hpp [5:7]
- boost/hana/fwd/concept/logical.hpp [5:7]
- boost/hana/fwd/concept/metafunction.hpp [5:7]
- boost/hana/fwd/concept/monad.hpp [5:7]
- boost/hana/fwd/concept/monad_plus.hpp [5:7]
- boost/hana/fwd/concept/monoid.hpp [5:7]
- boost/hana/fwd/concept/orderable.hpp [5:7]
- boost/hana/fwd/concept/product.hpp [5:7]
- boost/hana/fwd/concept/ring.hpp [5:7]
- boost/hana/fwd/concept/searchable.hpp [5:7]
- boost/hana/fwd/concept/sequence.hpp [5:7]
- boost/hana/fwd/concept/struct.hpp [5:7]
- boost/hana/fwd/contains.hpp [5:7]
- boost/hana/fwd/core.hpp [5:7]
- boost/hana/fwd/core/common.hpp [5:7]
- boost/hana/fwd/core/default.hpp [5:7]
- boost/hana/fwd/core/is_a.hpp [5:7]
- boost/hana/fwd/core/make.hpp [5:7]
- boost/hana/fwd/core/tag_of.hpp [5:7]
- boost/hana/fwd/core/to.hpp [5:7]
- boost/hana/fwd/core/when.hpp [5:7]
- boost/hana/fwd/count.hpp [5:7]
- boost/hana/fwd/count_if.hpp [5:7]
- boost/hana/fwd/cycle.hpp [5:7]
- boost/hana/fwd/define_struct.hpp [5:7]
- boost/hana/fwd/difference.hpp [5:7]
- boost/hana/fwd/div.hpp [5:7]
- boost/hana/fwd/drop_back.hpp [5:7]
- boost/hana/fwd/drop_front.hpp [5:7]
- boost/hana/fwd/drop_front_exactly.hpp [5:7]
- boost/hana/fwd/drop_while.hpp [5:7]
- boost/hana/fwd/duplicate.hpp [5:7]
- boost/hana/fwd/empty.hpp [5:7]
- boost/hana/fwd/equal.hpp [5:7]
- boost/hana/fwd/erase_key.hpp [5:7]
- boost/hana/fwd/eval.hpp [5:7]
- boost/hana/fwd/eval_if.hpp [5:7]
- boost/hana/fwd/extend.hpp [5:7]
- boost/hana/fwd/extract.hpp [5:7]
- boost/hana/fwd/fill.hpp [5:7]
- boost/hana/fwd/filter.hpp [5:7]
- boost/hana/fwd/find.hpp [5:7]
- boost/hana/fwd/find_if.hpp [5:7]
- boost/hana/fwd/first.hpp [5:7]
- boost/hana/fwd/flatten.hpp [5:7]
- boost/hana/fwd/fold.hpp [5:7]
- boost/hana/fwd/fold_left.hpp [5:7]
- boost/hana/fwd/fold_right.hpp [5:7]
- boost/hana/fwd/for_each.hpp [5:7]
- boost/hana/fwd/front.hpp [5:7]
- boost/hana/fwd/fuse.hpp [5:7]
- boost/hana/fwd/greater.hpp [5:7]
- boost/hana/fwd/greater_equal.hpp [5:7]
- boost/hana/fwd/group.hpp [5:7]
- boost/hana/fwd/if.hpp [5:7]
- boost/hana/fwd/index_if.hpp [5:8]
- boost/hana/fwd/insert.hpp [5:7]
- boost/hana/fwd/insert_range.hpp [5:7]
- boost/hana/fwd/integral_constant.hpp [5:7]
- boost/hana/fwd/intersection.hpp [5:7]
- boost/hana/fwd/intersperse.hpp [5:7]
- boost/hana/fwd/is_disjoint.hpp [5:7]
- boost/hana/fwd/is_empty.hpp [5:7]
- boost/hana/fwd/is_subset.hpp [5:7]
- boost/hana/fwd/keys.hpp [5:7]
- boost/hana/fwd/lazy.hpp [5:7]
- boost/hana/fwd/length.hpp [5:7]
- boost/hana/fwd/less.hpp [5:7]
- boost/hana/fwd/less_equal.hpp [5:7]
- boost/hana/fwd/lexicographical_compare.hpp [5:7]
- boost/hana/fwd/lift.hpp [5:7]
- boost/hana/fwd/map.hpp [5:7]
- boost/hana/fwd/max.hpp [5:7]
- boost/hana/fwd/maximum.hpp [5:7]
- boost/hana/fwd/members.hpp [5:7]
- boost/hana/fwd/min.hpp [5:7]
- boost/hana/fwd/minimum.hpp [5:7]
- boost/hana/fwd/minus.hpp [5:7]
- boost/hana/fwd/mod.hpp [5:7]
- boost/hana/fwd/monadic_compose.hpp [5:7]
- boost/hana/fwd/monadic_fold_left.hpp [5:7]
- boost/hana/fwd/monadic_fold_right.hpp [5:7]
- boost/hana/fwd/mult.hpp [5:7]
- boost/hana/fwd/negate.hpp [5:7]
- boost/hana/fwd/none.hpp [5:7]
- boost/hana/fwd/none_of.hpp [5:7]
- boost/hana/fwd/not.hpp [5:7]
- boost/hana/fwd/not_equal.hpp [5:7]
- boost/hana/fwd/one.hpp [5:7]
- boost/hana/fwd/optional.hpp [5:7]
- boost/hana/fwd/or.hpp [5:7]
- boost/hana/fwd/ordering.hpp [5:7]
- boost/hana/fwd/pair.hpp [5:7]
- boost/hana/fwd/partition.hpp [5:7]
- boost/hana/fwd/permutations.hpp [5:7]
- boost/hana/fwd/plus.hpp [5:7]
- boost/hana/fwd/power.hpp [5:7]
- boost/hana/fwd/prefix.hpp [5:7]
- boost/hana/fwd/prepend.hpp [5:7]
- boost/hana/fwd/product.hpp [5:7]
- boost/hana/fwd/range.hpp [5:7]
- boost/hana/fwd/remove.hpp [5:7]
- boost/hana/fwd/remove_at.hpp [5:7]
- boost/hana/fwd/remove_if.hpp [5:7]
- boost/hana/fwd/remove_range.hpp [5:7]
- boost/hana/fwd/repeat.hpp [5:7]
- boost/hana/fwd/replace.hpp [5:7]
- boost/hana/fwd/replace_if.hpp [5:7]
- boost/hana/fwd/replicate.hpp [5:7]
- boost/hana/fwd/reverse.hpp [5:7]
- boost/hana/fwd/reverse_fold.hpp [5:7]
- boost/hana/fwd/scan_left.hpp [5:7]
- boost/hana/fwd/scan_right.hpp [5:7]
- boost/hana/fwd/second.hpp [5:7]
- boost/hana/fwd/set.hpp [5:7]
- boost/hana/fwd/size.hpp [5:7]
- boost/hana/fwd/slice.hpp [5:7]
- boost/hana/fwd/sort.hpp [5:7]
- boost/hana/fwd/span.hpp [5:7]
- boost/hana/fwd/string.hpp [5:7]
- boost/hana/fwd/suffix.hpp [5:7]
- boost/hana/fwd/sum.hpp [5:7]
- boost/hana/fwd/symmetric_difference.hpp [5:7]
- boost/hana/fwd/take_back.hpp [5:7]
- boost/hana/fwd/take_front.hpp [5:7]
- boost/hana/fwd/take_while.hpp [5:7]
- boost/hana/fwd/tap.hpp [5:7]
- boost/hana/fwd/then.hpp [5:7]
- boost/hana/fwd/transform.hpp [5:7]
- boost/hana/fwd/tuple.hpp [5:7]
- boost/hana/fwd/type.hpp [5:7]
- boost/hana/fwd/unfold_left.hpp [5:7]
- boost/hana/fwd/unfold_right.hpp [5:7]
- boost/hana/fwd/union.hpp [5:7]
- boost/hana/fwd/unique.hpp [5:7]
- boost/hana/fwd/unpack.hpp [5:7]
- boost/hana/fwd/value.hpp [5:7]
- boost/hana/fwd/while.hpp [5:7]
- boost/hana/fwd/zero.hpp [5:7]
- boost/hana/fwd/zip.hpp [5:7]
- boost/hana/fwd/zip_shortest.hpp [5:7]
- boost/hana/fwd/zip_shortest_with.hpp [5:7]
- boost/hana/fwd/zip_with.hpp [5:7]
- boost/hana/greater.hpp [5:7]
- boost/hana/greater_equal.hpp [5:7]
- boost/hana/group.hpp [5:7]
- boost/hana/if.hpp [5:7]
- boost/hana/index_if.hpp [5:8]
- boost/hana/insert.hpp [5:7]
- boost/hana/insert_range.hpp [5:7]
- boost/hana/integral_constant.hpp [5:7]
- boost/hana/intersection.hpp [5:7]
- boost/hana/intersperse.hpp [5:7]
- boost/hana/is_disjoint.hpp [5:7]
- boost/hana/is_empty.hpp [5:7]
- boost/hana/is_subset.hpp [5:7]
- boost/hana/keys.hpp [5:7]
- boost/hana/lazy.hpp [5:7]
- boost/hana/length.hpp [5:7]
- boost/hana/less.hpp [5:7]
- boost/hana/less_equal.hpp [5:7]
- boost/hana/lexicographical_compare.hpp [5:7]
- boost/hana/lift.hpp [5:7]
- boost/hana/map.hpp [5:7]
- boost/hana/max.hpp [5:7]
- boost/hana/maximum.hpp [5:7]
- boost/hana/members.hpp [5:7]
- boost/hana/min.hpp [5:7]
- boost/hana/minimum.hpp [5:7]
- boost/hana/minus.hpp [5:7]
- boost/hana/mod.hpp [5:7]
- boost/hana/monadic_compose.hpp [5:7]
- boost/hana/monadic_fold_left.hpp [5:7]
- boost/hana/monadic_fold_right.hpp [5:7]
- boost/hana/mult.hpp [5:7]
- boost/hana/negate.hpp [5:7]
- boost/hana/none.hpp [5:7]
- boost/hana/none_of.hpp [5:7]
- boost/hana/not.hpp [5:7]
- boost/hana/not_equal.hpp [5:7]
- boost/hana/one.hpp [5:7]
- boost/hana/optional.hpp [5:7]
- boost/hana/or.hpp [5:7]
- boost/hana/ordering.hpp [5:7]
- boost/hana/pair.hpp [5:7]
- boost/hana/partition.hpp [5:7]
- boost/hana/permutations.hpp [5:7]
- boost/hana/plus.hpp [5:7]
- boost/hana/power.hpp [5:7]
- boost/hana/prefix.hpp [5:7]
- boost/hana/prepend.hpp [5:7]
- boost/hana/product.hpp [5:7]
- boost/hana/range.hpp [5:7]
- boost/hana/remove.hpp [5:7]
- boost/hana/remove_at.hpp [5:7]
- boost/hana/remove_if.hpp [5:7]
- boost/hana/remove_range.hpp [5:7]
- boost/hana/repeat.hpp [5:7]
- boost/hana/replace.hpp [5:7]
- boost/hana/replace_if.hpp [5:7]
- boost/hana/replicate.hpp [5:7]
- boost/hana/reverse.hpp [5:7]
- boost/hana/reverse_fold.hpp [5:7]
- boost/hana/scan_left.hpp [5:7]
- boost/hana/scan_right.hpp [5:7]
- boost/hana/second.hpp [5:7]
- boost/hana/set.hpp [5:7]
- boost/hana/size.hpp [5:7]
- boost/hana/slice.hpp [5:7]
- boost/hana/sort.hpp [5:7]
- boost/hana/span.hpp [5:7]
- boost/hana/string.hpp [5:7]
- boost/hana/suffix.hpp [5:7]
- boost/hana/sum.hpp [5:7]
- boost/hana/symmetric_difference.hpp [5:7]
- boost/hana/take_back.hpp [5:7]
- boost/hana/take_front.hpp [5:7]
- boost/hana/take_while.hpp [5:7]
- boost/hana/tap.hpp [5:7]
- boost/hana/then.hpp [5:7]
- boost/hana/traits.hpp [6:8]
- boost/hana/transform.hpp [5:7]
- boost/hana/tuple.hpp [5:8]
- boost/hana/type.hpp [5:7]
- boost/hana/unfold_left.hpp [5:7]
- boost/hana/unfold_right.hpp [5:7]
- boost/hana/union.hpp [5:7]
- boost/hana/unique.hpp [5:7]
- boost/hana/unpack.hpp [5:7]
- boost/hana/value.hpp [5:7]
- boost/hana/version.hpp [5:7]
- boost/hana/while.hpp [5:7]
- boost/hana/zero.hpp [5:7]
- boost/hana/zip.hpp [5:7]
- boost/hana/zip_shortest.hpp [5:7]
- boost/hana/zip_shortest_with.hpp [5:7]
- boost/hana/zip_with.hpp [5:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL aaff3eaecad3b3ed7e234cf1c70b346a
-BELONGS ya.make
- License text:
- // Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
- // Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/throw_exception.hpp [19:20]
-
-KEEP COPYRIGHT_SERVICE_LABEL aaff8fbf592953725a89204981472fff
-BELONGS ya.make
- License text:
- // Copyright Beman Dawes, 2009
- // Copyright (C) 2011-2012 Vicente J. Botet Escriba
- // Copyright (C) 2012 Anthony Williams
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/core/scoped_enum.hpp [3:5]
- boost/core/underlying_type.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL ab0e461ec3c22b7d8e543cb65284d5ae
-BELONGS ya.make
- License text:
- * Copyright (c) 2009 Helge Bahmann
- * Copyright (c) 2012 Tim Blechmann
- * Copyright (c) 2013 - 2018 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/atomic/detail/bitwise_cast.hpp [6:8]
- boost/atomic/detail/caps_gcc_alpha.hpp [6:8]
- boost/atomic/detail/caps_gcc_arm.hpp [6:10]
- boost/atomic/detail/caps_gcc_ppc.hpp [6:8]
- boost/atomic/detail/caps_gcc_x86.hpp [6:8]
- boost/atomic/detail/caps_msvc_arm.hpp [6:8]
- boost/atomic/detail/caps_msvc_x86.hpp [6:8]
- boost/atomic/detail/caps_windows.hpp [6:8]
- boost/atomic/detail/interlocked.hpp [4:5]
- boost/atomic/detail/ops_gcc_alpha.hpp [6:8]
- boost/atomic/detail/ops_gcc_arm.hpp [6:8]
- boost/atomic/detail/ops_gcc_arm_common.hpp [6:8]
- boost/atomic/detail/ops_gcc_ppc.hpp [6:8]
- boost/atomic/detail/ops_gcc_ppc_common.hpp [6:8]
- boost/atomic/detail/ops_gcc_x86.hpp [6:8]
- boost/atomic/detail/ops_gcc_x86_dcas-linux.hpp [6:8]
- boost/atomic/detail/ops_gcc_x86_dcas-osx.hpp [6:8]
- boost/atomic/detail/ops_gcc_x86_dcas.hpp [6:8]
- boost/atomic/detail/ops_msvc_arm.hpp [6:8]
- boost/atomic/detail/ops_msvc_common.hpp [6:8]
- boost/atomic/detail/ops_msvc_x86.hpp [6:8]
- boost/atomic/detail/ops_windows.hpp [6:8]
- boost/atomic/detail/platform.hpp [6:7]
- boost/atomic/detail/storage_type.hpp [6:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL ab1582f8f7920ffaebfb8d0874561682
-BELONGS ya.make
- License text:
- // Copyright (c) 2017 Barend Gehrels, Amsterdam, the Netherlands.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/correct_closure.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/handle_self_turns.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL ab52442e18290412f599104f036282c6
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/intel.hpp [1:10]
- boost/config/compiler/sunpro_cc.hpp [1:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL ab55c1af00e5063abe7c47185db8e544
-BELONGS ya.make
- License text:
- Copyright (c) 2011 Eric Niebler
- Copyright (c) 2015 Kohei Takahashi
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/algorithm/iteration/accumulate_fwd.hpp [2:3]
- boost/fusion/algorithm/iteration/detail/segmented_fold.hpp [2:2]
- boost/fusion/algorithm/iteration/detail/segmented_for_each.hpp [2:2]
- boost/fusion/algorithm/iteration/fold_fwd.hpp [2:2]
- boost/fusion/algorithm/iteration/for_each_fwd.hpp [2:2]
- boost/fusion/algorithm/iteration/iter_fold_fwd.hpp [2:2]
- boost/fusion/algorithm/iteration/reverse_fold_fwd.hpp [2:2]
- boost/fusion/algorithm/iteration/reverse_iter_fold_fwd.hpp [2:2]
- boost/fusion/algorithm/query/detail/segmented_find.hpp [2:2]
- boost/fusion/algorithm/query/detail/segmented_find_if.hpp [2:2]
- boost/fusion/algorithm/query/find.hpp [2:3]
- boost/fusion/algorithm/query/find_fwd.hpp [2:2]
- boost/fusion/algorithm/query/find_if.hpp [2:3]
- boost/fusion/algorithm/query/find_if_fwd.hpp [2:2]
- boost/fusion/container/list/detail/reverse_cons.hpp [2:2]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector10_fwd.hpp [2:3]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector20_fwd.hpp [2:3]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector30_fwd.hpp [2:3]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector40_fwd.hpp [2:3]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector50_fwd.hpp [2:3]
- boost/fusion/container/vector/detail/cpp03/vector10_fwd.hpp [3:4]
- boost/fusion/container/vector/detail/cpp03/vector10_fwd.hpp [31:32]
- boost/fusion/container/vector/detail/cpp03/vector20_fwd.hpp [3:4]
- boost/fusion/container/vector/detail/cpp03/vector20_fwd.hpp [25:26]
- boost/fusion/container/vector/detail/cpp03/vector30_fwd.hpp [3:4]
- boost/fusion/container/vector/detail/cpp03/vector30_fwd.hpp [25:26]
- boost/fusion/container/vector/detail/cpp03/vector40_fwd.hpp [3:4]
- boost/fusion/container/vector/detail/cpp03/vector40_fwd.hpp [25:26]
- boost/fusion/container/vector/detail/cpp03/vector50_fwd.hpp [3:4]
- boost/fusion/container/vector/detail/cpp03/vector50_fwd.hpp [25:26]
- boost/fusion/include/is_segmented.hpp [2:2]
- boost/fusion/include/segmented_fold_until.hpp [2:2]
- boost/fusion/include/segmented_iterator.hpp [2:2]
- boost/fusion/include/segments.hpp [2:2]
- boost/fusion/iterator/detail/segment_sequence.hpp [2:2]
- boost/fusion/iterator/detail/segmented_equal_to.hpp [2:2]
- boost/fusion/iterator/detail/segmented_iterator.hpp [2:2]
- boost/fusion/iterator/detail/segmented_next_impl.hpp [2:2]
- boost/fusion/iterator/segmented_iterator.hpp [2:2]
- boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp [2:2]
- boost/fusion/sequence/intrinsic/detail/segmented_begin_impl.hpp [2:2]
- boost/fusion/sequence/intrinsic/detail/segmented_end.hpp [2:2]
- boost/fusion/sequence/intrinsic/detail/segmented_end_impl.hpp [2:2]
- boost/fusion/sequence/intrinsic/detail/segmented_size.hpp [2:2]
- boost/fusion/support/detail/segmented_fold_until_impl.hpp [2:2]
- boost/fusion/support/segmented_fold_until.hpp [2:2]
- boost/fusion/view/iterator_range/detail/is_segmented_impl.hpp [2:2]
- boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp [2:2]
- boost/fusion/view/iterator_range/detail/segments_impl.hpp [2:2]
- boost/fusion/view/iterator_range/detail/size_impl.hpp [2:2]
- boost/fusion/view/joint_view/joint_view_fwd.hpp [2:2]
- boost/fusion/view/single_view/detail/advance_impl.hpp [2:2]
- boost/fusion/view/single_view/detail/at_impl.hpp [2:2]
- boost/fusion/view/single_view/detail/begin_impl.hpp [2:3]
- boost/fusion/view/single_view/detail/deref_impl.hpp [2:3]
- boost/fusion/view/single_view/detail/distance_impl.hpp [2:2]
- boost/fusion/view/single_view/detail/end_impl.hpp [2:3]
- boost/fusion/view/single_view/detail/equal_to_impl.hpp [2:2]
- boost/fusion/view/single_view/detail/next_impl.hpp [2:3]
- boost/fusion/view/single_view/detail/prior_impl.hpp [2:2]
- boost/fusion/view/single_view/detail/size_impl.hpp [2:2]
- boost/fusion/view/single_view/detail/value_at_impl.hpp [2:2]
- boost/fusion/view/single_view/detail/value_of_impl.hpp [2:3]
- boost/fusion/view/single_view/single_view.hpp [2:3]
- boost/fusion/view/single_view/single_view_iterator.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL ab6e44ab43f9d94c918f3af9054f4430
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/comeau.hpp [1:8]
- boost/config/platform/irix.hpp [1:4]
- boost/config/platform/solaris.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL ab71254ad02f316b826c74cda23fc7de
-BELONGS ya.make
- License text:
- // Copyright 2001 Universite Joseph Fourier, Grenoble.
- // Author: Francois Faure
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/adjacency_list_io.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL ab774de6282a1b30f7f425fb700259c5
-BELONGS ya.make
- License text:
- // This file was modified by Oracle on 2016, 2017.
- // Modifications copyright (c) 2016-2017, Oracle and/or its affiliates.
- // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/strategies/cartesian/area.hpp [8:9]
- boost/geometry/strategies/cartesian/area_surveyor.hpp [8:9]
- boost/geometry/strategies/cartesian/box_in_box.hpp [8:9]
- boost/geometry/strategies/intersection_strategies.hpp [5:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL ab7b56c39397a34cede4359db0be9235
-BELONGS ya.make
- License text:
- // Copyright (C) 2008, 2016 Tim Blechmann
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/lockfree/detail/tagged_ptr.hpp [3:3]
- boost/lockfree/detail/tagged_ptr_dcas.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL ac00ecc6c5b600ddc218a5925ef8d1c6
-BELONGS ya.make
- License text:
- // This file was modified by Oracle on 2014, 2015.
- // Modifications copyright (c) 2014-2015 Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/centroid.hpp [8:9]
- boost/geometry/algorithms/convex_hull.hpp [7:8]
- boost/geometry/io/wkt/read.hpp [8:9]
-
-KEEP COPYRIGHT_SERVICE_LABEL ac019423baf07909ddd9038922e85359
-BELONGS ya.make
- License text:
- // Copyright 2005 The Trustees of Indiana University.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/accounting.hpp [1:1]
- boost/graph/detail/indexed_properties.hpp [1:1]
- boost/graph/dimacs.hpp [1:1]
- boost/graph/distributed/hohberg_biconnected_components.hpp [1:1]
- boost/graph/graph_stats.hpp [1:1]
- boost/graph/metis.hpp [1:1]
- boost/graph/parallel/basic_reduce.hpp [1:1]
- boost/graph/parallel/detail/inplace_all_to_all.hpp [1:1]
- boost/property_map/parallel/basic_reduce.hpp [1:1]
- boost/property_map/parallel/global_index_map.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL ac25c56d5929cc20ba4b94f51c899d05
-BELONGS ya.make
- License text:
- // Copyright 2011, Andrew Ross
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/polygon/detail/polygon_simplify.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL ac35770391c69072ea1722a98afaa216
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/facilities/is_1.hpp at line 5, boost/preprocessor/facilities/is_empty.hpp at line 5, boost/preprocessor/facilities/is_empty_or_1.hpp at line 5
- License text:
- \# * (C) Copyright Paul Mensonides 2003.
- \# * Distributed under the Boost Software License, Version 1.0. (See
- \# * accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/preprocessor/facilities/is_1.hpp [3:5]
- boost/preprocessor/facilities/is_empty.hpp [3:6]
- boost/preprocessor/facilities/is_empty_or_1.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL ac779fd1b3e977a7dddb992cc87eb8b1
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2006-7, 2013-14.
- // Copyright Paul A. Bristow 2007, 2013-14.
- // Copyright Nikhar Agrawal 2013-14
- // Copyright Christopher Kormanyos 2013-14
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/gamma.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL ac83ed7b90a09af352c97496e6042a0d
-BELONGS ya.make
- License text:
- // Copyright Frank Mori Hess 2009
- // Use, modification and
- // distribution is subject to the Boost Software License, Version
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/signals2/detail/foreign_ptr.hpp [4:6]
- boost/signals2/detail/preprocessed_arg_type_template.hpp [1:1]
- boost/signals2/detail/variadic_arg_type.hpp [1:1]
- boost/signals2/detail/variadic_slot_invoker.hpp [7:9]
- boost/signals2/signal_type.hpp [9:11]
- boost/signals2/slot.hpp [3:3]
- boost/signals2/variadic_signal.hpp [8:10]
- boost/signals2/variadic_slot.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL acc348f5a2ea4eaed65d2d40f169ca8e
-BELONGS ya.make
- License text:
- // Copyright (c) 2018 Adam Wulkiewicz, Lodz, Poland.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/formulas/andoyer_inverse.hpp [3:3]
- boost/geometry/formulas/vincenty_inverse.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL accedf6178f4d186ddc5b8d4eb049fb4
-BELONGS ya.make
- License text:
- // Copyright (c) 2002-2003 Eric Friedman
- // Copyright (c) 2014-2017 Antony Polukhin
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/variant/detail/apply_visitor_binary.hpp [6:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL acec60e7a5ccc2aee8d37ebb5ffda3a2
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2009 Joel de Guzman
- Copyright (c) 2009-2010 Hartmut Kaiser
- Copyright (c) 2010-2011 Christopher Schmidt
- Copyright (c) 2013-2014 Damien Buhl
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/adapted/adt/adapt_adt.hpp [2:5]
- boost/fusion/adapted/adt/adapt_assoc_adt.hpp [2:5]
- boost/fusion/adapted/adt/detail/adapt_base_assoc_attr_filler.hpp [2:2]
- boost/fusion/adapted/adt/detail/adapt_base_attr_filler.hpp [2:2]
- boost/fusion/adapted/struct/adapt_struct.hpp [2:4]
- boost/fusion/adapted/struct/detail/adapt_auto.hpp [2:2]
- boost/fusion/adapted/struct/detail/adapt_base.hpp [2:5]
- boost/fusion/adapted/struct/detail/adapt_base_assoc_attr_filler.hpp [2:2]
- boost/fusion/adapted/struct/detail/adapt_base_attr_filler.hpp [2:2]
- boost/fusion/adapted/struct/detail/adapt_is_tpl.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL ad300b162eb925702ac6418338faee35
-BELONGS libs/ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: libs/test/src/decorator.cpp at line 3
- License text:
- // (C) Copyright Gennadiy Rozental 2011.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- libs/test/src/decorator.cpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL ad4755ce2f8b4e99db92172a166cc496
-BELONGS ya.make
- License text:
- // Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
- // Copyright 2004-2005 Peter Dimov
- // Copyright 2005 Rene Rivera
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp [13:15]
-
-KEEP COPYRIGHT_SERVICE_LABEL ad834a54e6d96a73491e6f259770ab00
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iostreams/detail/is_dereferenceable.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/iostreams/detail/is_dereferenceable.hpp [1:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL adbebcecb122c685dde3643cfded4a6e
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/has_default_constructor.hpp at line 4
- License text:
- // (C) Copyright Matthias Troyerk 2006.
- // Use, modification and distribution are subject to the Boost Software License,
- // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/detail/has_default_constructor.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL adccd417789bfad3e5ed6df22fec8ed2
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/cstdfloat.hpp at line 6, boost/math/cstdfloat/cstdfloat_cmath.hpp at line 6, boost/math/cstdfloat/cstdfloat_complex.hpp at line 6, boost/math/cstdfloat/cstdfloat_complex_std.hpp at line 6, boost/math/cstdfloat/cstdfloat_iostream.hpp at line 6, boost/math/cstdfloat/cstdfloat_limits.hpp at line 6, boost/math/cstdfloat/cstdfloat_types.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/cstdfloat.hpp [2:6]
- boost/math/cstdfloat/cstdfloat_cmath.hpp [2:6]
- boost/math/cstdfloat/cstdfloat_complex.hpp [2:6]
- boost/math/cstdfloat/cstdfloat_complex_std.hpp [2:6]
- boost/math/cstdfloat/cstdfloat_iostream.hpp [2:6]
- boost/math/cstdfloat/cstdfloat_limits.hpp [2:6]
- boost/math/cstdfloat/cstdfloat_types.hpp [2:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL ae0871888f9cfe458fdd3b5ec0ed18de
-BELONGS ya.make
- License text:
- // Copyright (c) Antony Polukhin, 2012-2018.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_index.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL ae1d0c8850404c20b8ecd59e25bcabb5
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/sort/spreadsort/spreadsort.hpp at line 5, boost/sort/spreadsort/string_sort.hpp at line 5
- License text:
- // Copyright Steven J. Ross 2001 - 2009.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/sort/spreadsort/spreadsort.hpp [3:5]
- boost/sort/spreadsort/string_sort.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL ae6c75314a374199dd4eb8179394a65c
-BELONGS libs/program_options/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/program_options/options_description.hpp at line 4, libs/program_options/src/options_description.cpp at line 4
- License text:
- // Copyright Vladimir Prus 2002-2004.
- // Copyright Bertolt Mildner 2004.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/program_options/options_description.hpp [1:4]
- libs/program_options/src/options_description.cpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL ae7a728b400655ba8b5bcff4a64ffb58
-BELONGS ya.make
- License text:
- // Copyright (C) 2007 Douglas Gregor
- // Copyright (C) 2007 Hartmut Kaiser
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/distributed/named_graph.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL ae8704046854e24740f868187f810e75
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/utility/detail/result_of_iterate.hpp at line 10
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/utility/detail/result_of_iterate.hpp [8:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL ae8ac6d67230cc94903efa59b420c903
-BELONGS libs/thread/ya.make
- License text:
- // (C) Copyright 2007 Anthony Williams
- // (C) Copyright 2007 David Deakins
- // (C) Copyright 2011-2018 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- libs/thread/src/win32/thread.cpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL aeaee3b43c9a47f861a6ff5d3039fb8c
-BELONGS ya.make
- License text:
- Copyright (c) Alexander Zaitsev <zamazan4ik@gmail.com>, 2016
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/algorithm/is_palindrome.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL aec679ee74952b219e93e1261f2a5b69
-BELONGS libs/serialization/ya.make ya.make
- License text:
- // (C) Copyright 2005 Robert Ramey - http://www.rrsd.com
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/archive/basic_streambuf_locale_saver.hpp [12:12]
- boost/serialization/void_cast_fwd.hpp [12:14]
- libs/serialization/src/stl_port.cpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL af0fca03eae52a46a7850a8202dec665
-BELONGS ya.make
- License text:
- // Copyright (C) 2001 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
- // 2001 Gary Powell (gary.powell@sierra.com)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/tuple/tuple_io.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL af4aaeb4595b4e2e72d13075cdc42e70
-BELONGS ya.make
- License text:
- /* Copyright (c) 2005 CrystalClear Software, Inc.
- * Use, modification and distribution is subject to the
- * Boost Software License, Version 1.0. (See accompanying
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/date_time/date_generator_parser.hpp [5:7]
- boost/date_time/special_values_parser.hpp [5:7]
- boost/date_time/string_convert.hpp [4:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL af611d3851b540f380d5470baf50822f
-BELONGS ya.make
- License text:
- Copyright 2013-2014 Karsten Ahnert
- Copyright 2013-2014 Mario Mulansky
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/external/thrust/thrust_operations_dispatcher.hpp [9:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL affa528d742a158f1852feeb711a60b5
-BELONGS ya.make
- License text:
- // Copyright 2004 The Trustees of Indiana University.
- // Copyright 2005 Matthias Troyer.
- // Copyright 2006 Douglas Gregor <doug.gregor -at- gmail.com>.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpi/datatype.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL b05bb05d6ff4c93d750af62df916b423
-BELONGS ya.make
- License text:
- Copyright (c) 2008-2012: Joachim Faulhaber
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/icl/interval_map.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL b05e8d821dedb1c4725a22b027a22663
-BELONGS ya.make
- License text:
- // Copyright Aleksey Gurtovoy 2000-2009
- // Copyright Jaap Suter 2003
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/bitand.hpp [5:6]
- boost/mpl/bitor.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL b05eb40bb3bae6be16123d31cff82a10
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/comeau.hpp [1:8]
- boost/config/platform/win32.hpp [1:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL b09edac6bc0b2db05bdae89ff848fba0
-BELONGS ya.make
- License text:
- // (C) Copyright Jeremy William Murphy 2016.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/integer/common_factor_rt.hpp [1:1]
- boost/math/tools/polynomial_gcd.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL b0acda8e3df319a68e9a5e75c455f627
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/move/detail/move_helpers.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2010-2016.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/move/detail/move_helpers.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL b10a349d839f11abf2ae65daa684e1ef
-BELONGS libs/python/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/object/pickle_support.hpp at line 3, libs/python/src/object/pickle_support.cpp at line 3
- License text:
- // (C) Copyright R.W. Grosse-Kunstleve 2002.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/python/object/pickle_support.hpp [1:3]
- libs/python/src/object/pickle_support.cpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL b115999a21015dd266d010727a799415
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iterator/function_input_iterator.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/iterator/function_input_iterator.hpp [1:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL b13bccd796707ee307c756c5292480d5
-BELONGS ya.make
- License text:
- // (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
- // Copyright (c) 2001, 2002 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/interprocess/smart_ptr/scoped_ptr.hpp [5:9]
- boost/interprocess/smart_ptr/shared_ptr.hpp [5:9]
- boost/scoped_array.hpp [4:5]
- boost/scoped_ptr.hpp [4:5]
- boost/serialization/detail/shared_ptr_132.hpp [7:8]
- boost/serialization/detail/shared_ptr_nmt_132.hpp [7:8]
- boost/shared_array.hpp [7:8]
- boost/shared_ptr.hpp [7:8]
- boost/smart_ptr/scoped_array.hpp [4:5]
- boost/smart_ptr/scoped_ptr.hpp [4:5]
- boost/smart_ptr/shared_array.hpp [7:8]
- boost/smart_ptr/shared_ptr.hpp [7:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL b14d407341145f68aa7fea9536f026aa
-BELONGS ya.make
- License text:
- * Copyright 2002-2003 Guillaume Melquiond
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/interval/compare/lexicographic.hpp [3:3]
- boost/numeric/interval/compare/set.hpp [3:3]
- boost/numeric/interval/compare/tribool.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL b16469fd47ce5aa5a005d8f08caf9bf6
-BELONGS ya.make
- License text:
- // Copyright 2011 Christophe Henry
- // henry UNDERSCORE christophe AT hotmail DOT com
- // This is an extended version of the state machine available in the boost::mpl library
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/msm/front/euml/phoenix_placeholders.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL b16508c75fd7b6f67dabe4880511636f
-BELONGS ya.make
- License text:
- // Copyright (c) 2012-2014 Barend Gehrels, Amsterdam, the Netherlands.
- // Copyright (c) 2012-2014 Bruno Lalande, Paris, France.
- // Copyright (c) 2012-2014 Mateusz Loskot, London, UK.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/multi/algorithms/disjoint.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL b1820d2cd3cc81402964cf6c2c64f349
-BELONGS ya.make
- License text:
- // Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
- // Copyright 2010 Thomas Claveirole
- // Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek, Thomas Claveirole
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/adjacency_list.hpp [2:4]
- boost/graph/detail/adjacency_list.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL b184c1576725880afe7824383236246f
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/weighted_moment.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/accumulators/statistics/weighted_moment.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL b1b0461f5b5534483530205d8f3b8f16
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signals2/detail/preprocessed_arg_type.hpp at line 7, boost/signals2/detail/slot_template.hpp at line 7, boost/signals2/detail/tracked_objects_visitor.hpp at line 7, boost/signals2/preprocessed_slot.hpp at line 7, boost/signals2/slot_base.hpp at line 7, boost/signals2/trackable.hpp at line 7
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/signals2/detail/preprocessed_arg_type.hpp [3:7]
- boost/signals2/detail/slot_template.hpp [3:7]
- boost/signals2/detail/tracked_objects_visitor.hpp [3:7]
- boost/signals2/preprocessed_slot.hpp [3:7]
- boost/signals2/slot_base.hpp [3:7]
- boost/signals2/trackable.hpp [3:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL b1c79ab18bb6dbf3066b7e1c132fe10c
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/p_square_cumulative_distribution.hpp at line 6, boost/accumulators/statistics/weighted_p_square_cumulative_distribution.hpp at line 6, boost/proto/detail/any.hpp at line 7, boost/proto/functional/range.hpp at line 7, boost/proto/functional/range/begin.hpp at line 7, boost/proto/functional/range/empty.hpp at line 7, boost/proto/functional/range/end.hpp at line 7, boost/proto/functional/range/rbegin.hpp at line 7, boost/proto/functional/range/rend.hpp at line 7, boost/proto/functional/range/size.hpp at line 7, boost/proto/functional/std/iterator.hpp at line 7, boost/proto/transform/detail/expand_pack.hpp at line 17, boost/proto/transform/detail/pack.hpp at line 7, boost/proto/transform/detail/pack_impl.hpp at line 17, boost/proto/transform/detail/preprocessed/expand_pack.hpp at line 7, boost/proto/transform/detail/preprocessed/pack_impl.hpp at line 7, boost/proto/transform/env.hpp at line 7
- License text:
- // Copyright 2012 Eric Niebler. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/accumulators/statistics/p_square_cumulative_distribution.hpp [4:6]
- boost/accumulators/statistics/weighted_p_square_cumulative_distribution.hpp [4:6]
- boost/proto/detail/any.hpp [5:7]
- boost/proto/functional/range.hpp [5:7]
- boost/proto/functional/range/begin.hpp [5:7]
- boost/proto/functional/range/empty.hpp [5:7]
- boost/proto/functional/range/end.hpp [5:7]
- boost/proto/functional/range/rbegin.hpp [5:7]
- boost/proto/functional/range/rend.hpp [5:7]
- boost/proto/functional/range/size.hpp [5:7]
- boost/proto/functional/std/iterator.hpp [5:7]
- boost/proto/transform/detail/expand_pack.hpp [15:17]
- boost/proto/transform/detail/pack.hpp [5:7]
- boost/proto/transform/detail/pack_impl.hpp [15:17]
- boost/proto/transform/detail/preprocessed/expand_pack.hpp [5:7]
- boost/proto/transform/detail/preprocessed/pack_impl.hpp [5:7]
- boost/proto/transform/env.hpp [5:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL b1c8015966a7ee6e2e16f052030573b6
-BELONGS ya.make
- License text:
- // Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/core/ignore_unused.hpp [1:1]
- boost/geometry/algorithms/convert.hpp [3:6]
- boost/geometry/algorithms/detail/calculate_sum.hpp [3:6]
- boost/geometry/algorithms/detail/centroid/translating_transformer.hpp [3:6]
- boost/geometry/algorithms/detail/counting.hpp [3:6]
- boost/geometry/algorithms/detail/get_max_size.hpp [3:6]
- boost/geometry/algorithms/detail/interior_iterator.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/select_rings.hpp [3:4]
- boost/geometry/algorithms/detail/within/point_in_geometry.hpp [3:6]
- boost/geometry/algorithms/for_each.hpp [3:6]
- boost/geometry/algorithms/num_points.hpp [3:6]
- boost/geometry/algorithms/reverse.hpp [3:6]
- boost/geometry/algorithms/transform.hpp [3:6]
- boost/geometry/algorithms/unique.hpp [3:6]
- boost/geometry/geometries/linestring.hpp [3:6]
- boost/geometry/geometries/multi_linestring.hpp [3:6]
- boost/geometry/geometries/multi_point.hpp [3:6]
- boost/geometry/geometries/multi_polygon.hpp [3:6]
- boost/geometry/geometries/point.hpp [3:6]
- boost/geometry/geometries/ring.hpp [3:6]
- boost/geometry/io/dsv/write.hpp [3:6]
- boost/geometry/io/svg/write.hpp [3:4]
- boost/geometry/io/svg/write_svg.hpp [3:4]
- boost/geometry/policies/robustness/robust_type.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL b1cdf58fa303a8f4ede708fdd775aaaa
-BELONGS ya.make
- License text:
- // Copyright (c) 2003 Eric Friedman
- // Copyright (c) 2016 Antony Polukhin
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/variant/detail/config.hpp [6:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL b1d8599132305166f8d3329e2357d761
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multi_index/detail/index_base.hpp at line 3, boost/multi_index/detail/promotes_arg.hpp at line 3, boost/multi_index/detail/rnk_index_ops.hpp at line 3, boost/multi_index/ranked_index.hpp at line 3
- License text:
- /* Copyright 2003-2017 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/multi_index/detail/index_base.hpp [1:3]
- boost/multi_index/detail/promotes_arg.hpp [1:3]
- boost/multi_index/detail/rnk_index_ops.hpp [1:3]
- boost/multi_index/ranked_index.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL b1f8901cb8c9428d0a6f94081716c15b
-BELONGS ya.make
- License text:
- // Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/support/detail/lexer/char_traits.hpp [2:2]
- boost/spirit/home/support/detail/lexer/consts.hpp [2:2]
- boost/spirit/home/support/detail/lexer/containers/ptr_list.hpp [2:2]
- boost/spirit/home/support/detail/lexer/containers/ptr_vector.hpp [2:2]
- boost/spirit/home/support/detail/lexer/conversion/char_state_machine.hpp [2:2]
- boost/spirit/home/support/detail/lexer/debug.hpp [2:2]
- boost/spirit/home/support/detail/lexer/generator.hpp [2:2]
- boost/spirit/home/support/detail/lexer/parser/parser.hpp [2:2]
- boost/spirit/home/support/detail/lexer/parser/tokeniser/num_token.hpp [2:2]
- boost/spirit/home/support/detail/lexer/parser/tokeniser/re_tokeniser.hpp [2:2]
- boost/spirit/home/support/detail/lexer/parser/tokeniser/re_tokeniser_helper.hpp [2:2]
- boost/spirit/home/support/detail/lexer/parser/tokeniser/re_tokeniser_state.hpp [2:2]
- boost/spirit/home/support/detail/lexer/parser/tree/end_node.hpp [2:2]
- boost/spirit/home/support/detail/lexer/parser/tree/iteration_node.hpp [2:2]
- boost/spirit/home/support/detail/lexer/parser/tree/leaf_node.hpp [2:2]
- boost/spirit/home/support/detail/lexer/parser/tree/node.hpp [2:2]
- boost/spirit/home/support/detail/lexer/parser/tree/selection_node.hpp [2:2]
- boost/spirit/home/support/detail/lexer/parser/tree/sequence_node.hpp [2:2]
- boost/spirit/home/support/detail/lexer/partition/charset.hpp [2:2]
- boost/spirit/home/support/detail/lexer/partition/equivset.hpp [2:2]
- boost/spirit/home/support/detail/lexer/rules.hpp [2:2]
- boost/spirit/home/support/detail/lexer/runtime_error.hpp [2:2]
- boost/spirit/home/support/detail/lexer/serialise.hpp [2:2]
- boost/spirit/home/support/detail/lexer/size_t.hpp [2:2]
- boost/spirit/home/support/detail/lexer/state_machine.hpp [2:2]
- boost/spirit/home/support/detail/lexer/string_token.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL b22616ad6909bb1b6914df1bbe9f7d72
-BELONGS ya.make
- License text:
- // Copyright Beman Dawes 2013
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/endian/detail/intrinsic.hpp [3:4]
- boost/endian/std_pair.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL b2365a202e25d6cb47c747294c287f01
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2003 Joel de Guzman
- Copyright (c) 2002-2003 Hartmut Kaiser
- Copyright (c) 2003 Gustavo Guerra
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/debug/debug_node.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL b237bc327f11220f8661319eedc55a67
-BELONGS ya.make
- License text:
- Copyright (c) 2003 Giovanni Bajo
- Copyright (c) 2003 Martin Wille
- Copyright (c) 2003 Hartmut Kaiser
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/iterator/impl/file_iterator.ipp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL b25c8fff5a7c50544f2f1f7552b2ef6b
-BELONGS ya.make
- License text:
- // Copyright (c) 2015 John Maddock
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/ellint_rg.hpp [1:3]
- boost/math/special_functions/heuman_lambda.hpp [1:3]
- boost/math/special_functions/jacobi_zeta.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL b28d2fde6ba5b098618944cd7d0b3376
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/win32/mutex.hpp at line 6, boost/thread/win32/once.hpp at line 9, boost/thread/win32/thread_primitives.hpp at line 9
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/win32/mutex.hpp [3:6]
- boost/thread/win32/once.hpp [6:8]
- boost/thread/win32/thread_primitives.hpp [6:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL b2df7e5a7a957bf86ae4c6503becd8c4
-BELONGS ya.make
- License text:
- // Copyright Aleksey Gurtovoy 2001-2004
- // Copyright David Abrahams 2001-2002
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/accumulate.hpp [5:6]
- boost/mpl/aux_/iter_fold_if_impl.hpp [5:6]
- boost/mpl/aux_/preprocessed/bcc/iter_fold_if_impl.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc551/iter_fold_if_impl.hpp [2:3]
- boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_if_impl.hpp [2:3]
- boost/mpl/aux_/preprocessed/dmc/iter_fold_if_impl.hpp [2:3]
- boost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc60/iter_fold_if_impl.hpp [2:3]
- boost/mpl/aux_/preprocessed/msvc70/iter_fold_if_impl.hpp [2:3]
- boost/mpl/aux_/preprocessed/mwcw/iter_fold_if_impl.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ctps/iter_fold_if_impl.hpp [2:3]
- boost/mpl/aux_/preprocessed/no_ttp/iter_fold_if_impl.hpp [2:3]
- boost/mpl/aux_/preprocessed/plain/iter_fold_if_impl.hpp [2:3]
- boost/mpl/fold.hpp [5:6]
- boost/mpl/iter_fold.hpp [5:6]
- boost/mpl/reverse_fold.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL b303e8bf396c51ea4c645078eb2128ab
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/typeof/template_encoding.hpp at line 4, boost/typeof/template_template_param.hpp at line 4, boost/typeof/typeof_impl.hpp at line 4, boost/typeof/vector.hpp at line 4, boost/typeof/vector100.hpp at line 5, boost/typeof/vector150.hpp at line 5, boost/typeof/vector200.hpp at line 5, boost/typeof/vector50.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/typeof/template_encoding.hpp [1:4]
- boost/typeof/template_template_param.hpp [1:4]
- boost/typeof/typeof_impl.hpp [1:4]
- boost/typeof/vector.hpp [1:2]
- boost/typeof/vector100.hpp [2:3]
- boost/typeof/vector150.hpp [2:3]
- boost/typeof/vector200.hpp [2:3]
- boost/typeof/vector50.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL b39477fb74de6923f82fd930b22fa1ef
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multi_index/detail/auto_space.hpp at line 3, boost/multi_index/detail/copy_map.hpp at line 3, boost/multi_index/detail/hash_index_node.hpp at line 3, boost/multi_index/detail/ord_index_impl.hpp at line 3, boost/multi_index/detail/ord_index_node.hpp at line 3, boost/multi_index/detail/rnd_index_node.hpp at line 3, boost/multi_index/detail/rnd_index_ptr_array.hpp at line 3, boost/multi_index/detail/seq_index_node.hpp at line 3, boost/multi_index/hashed_index.hpp at line 3, boost/multi_index/random_access_index.hpp at line 3, boost/multi_index/sequenced_index.hpp at line 3, boost/multi_index_container.hpp at line 5
- License text:
- * Copyright 2003-2018 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/multi_index/detail/auto_space.hpp [1:3]
- boost/multi_index/detail/copy_map.hpp [1:3]
- boost/multi_index/detail/hash_index_node.hpp [1:3]
- boost/multi_index/detail/ord_index_impl.hpp [1:3]
- boost/multi_index/detail/ord_index_node.hpp [1:3]
- boost/multi_index/detail/rnd_index_node.hpp [1:3]
- boost/multi_index/detail/rnd_index_ptr_array.hpp [1:3]
- boost/multi_index/detail/seq_index_node.hpp [1:3]
- boost/multi_index/hashed_index.hpp [1:3]
- boost/multi_index/random_access_index.hpp [1:3]
- boost/multi_index/sequenced_index.hpp [1:3]
- boost/multi_index_container.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL b3ae8d5fa08389df2a8eb4a5184974c9
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/math_fwd.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math_fwd.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL b4926da9285e9a7d8815bc373325f082
-BELONGS ya.make
- License text:
- // Copyright (C) 2012-2013 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/detail/invoke.hpp [1:1]
- boost/thread/detail/make_tuple_indices.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL b4a590731990d46da1db97cbe472aa42
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/integer/integer_mask.hpp at line 5, boost/integer/static_min_max.hpp at line 5
- License text:
- // (C) Copyright Daryle Walker 2001.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/integer/integer_mask.hpp [3:5]
- boost/integer/static_min_max.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL b4c664be9a8d4af073dd2d3ce7c75b24
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic.hpp [2:14]
- boost/spirit/home/classic/iterator/file_iterator.hpp [2:5]
- boost/spirit/home/classic/iterator/impl/file_iterator.ipp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL b4d502c99ef9e3a6fa33d58757314d75
-BELONGS ya.make
- License text:
- Autogenerated by MultiStageTable.py (Unicode multi-stage
- table builder) (c) Peter Kankowski, 2008
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/support/char_encoding/unicode/query.hpp [7:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL b4f5a55de50af359f9bfe971eb3941df
-BELONGS ya.make
- License text:
- * (C) Copyright Nicolai M. Josuttis 2001.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/array.hpp [10:10]
- boost/iostreams/device/file_descriptor.hpp [8:9]
-
-KEEP COPYRIGHT_SERVICE_LABEL b517037ab6887c277a72af6da5e6d9e2
-BELONGS ya.make
- License text:
- // Copyright (c) 2011-2015 Adam Wulkiewicz, Lodz, Poland.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/index/detail/assert.hpp [3:3]
- boost/geometry/index/detail/distance_predicates.hpp [6:6]
- boost/geometry/index/detail/is_bounding_geometry.hpp [3:3]
- boost/geometry/index/detail/is_indexable.hpp [3:3]
- boost/geometry/index/detail/predicates.hpp [5:5]
- boost/geometry/index/detail/rtree/iterators.hpp [5:5]
- boost/geometry/index/detail/rtree/node/node.hpp [5:5]
- boost/geometry/index/detail/rtree/node/node_elements.hpp [5:5]
- boost/geometry/index/detail/rtree/node/subtree_destroyer.hpp [5:5]
- boost/geometry/index/detail/rtree/quadratic/redistribute_elements.hpp [5:5]
- boost/geometry/index/detail/rtree/query_iterators.hpp [5:5]
- boost/geometry/index/detail/rtree/rstar/insert.hpp [5:5]
- boost/geometry/index/detail/rtree/utilities/are_boxes_ok.hpp [5:5]
- boost/geometry/index/detail/rtree/utilities/are_counts_ok.hpp [5:5]
- boost/geometry/index/detail/rtree/visitors/children_box.hpp [5:5]
- boost/geometry/index/detail/rtree/visitors/copy.hpp [5:5]
- boost/geometry/index/detail/rtree/visitors/insert.hpp [5:5]
- boost/geometry/index/detail/rtree/visitors/is_leaf.hpp [5:5]
- boost/geometry/index/detail/rtree/visitors/iterator.hpp [5:5]
- boost/geometry/index/detail/serialization.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL b51b582fd41e8d5e59edf0ea1f331e9d
-BELONGS ya.make
- License text:
- // (C) Copyright John Maddock 2006.
- // (C) Copyright Johan Rade 2006.
- // (C) Copyright Paul A. Bristow 2011 (added changesign).
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/sign.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL b52e6d8c8099fbbc21dd26f9da622ebd
-BELONGS ya.make
- License text:
- // Copyright (C) 2000 Stephen Cleary
- // Copyright (C) 2008 Ion Gaztanaga
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/container/detail/singleton.hpp [1:2]
- boost/pool/detail/guard.hpp [1:1]
- boost/pool/detail/mutex.hpp [1:1]
- boost/pool/detail/pool_construct.ipp [1:1]
- boost/pool/detail/pool_construct_simple.ipp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL b55de55bf9cf2ea9ad89223e9c74d22d
-BELONGS ya.make
- License text:
- // Copyright 2007 David Jenkins.
- // Copyright 2007 Eric Niebler.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/xpressive/detail/utility/symbols.hpp [9:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL b577ef3450332ce971ed9f06a436e353
-BELONGS ya.make
- License text:
- // (C) Copyright Jeremy Siek 1999-2001.
- // Copyright (C) 2006 Trustees of Indiana University
- // Authors: Douglas Gregor and Jeremy Siek
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/property_map/parallel/parallel_property_maps.hpp [1:3]
- boost/property_map/property_map.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL b5798aa67e74d9f05dec809f252a358b
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2010 Joel de Guzman
- Copyright (c) 2010 Eric Niebler
- Copyright (c) 2014-2015 John Fletcher
- Copyright (c) 2016 Kohei Takahashi
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/phoenix/bind/bind_function.hpp [2:2]
- boost/phoenix/bind/bind_function_object.hpp [2:2]
- boost/phoenix/bind/bind_member_function.hpp [2:2]
- boost/phoenix/config.hpp [2:5]
- boost/phoenix/core/detail/cpp03/function_eval_expr.hpp [2:2]
- boost/phoenix/core/detail/cpp03/function_eval_expr.hpp [17:18]
- boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr.hpp [2:2]
- boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_10.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_20.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_30.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_40.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_50.hpp [2:3]
- boost/phoenix/core/detail/index_sequence.hpp [2:2]
- boost/phoenix/core/expression.hpp [2:2]
- boost/phoenix/object/detail/cpp03/construct_expr.hpp [12:12]
- boost/phoenix/object/detail/cpp03/new_expr.hpp [12:12]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_expr.hpp [2:2]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_10.hpp [2:2]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_20.hpp [2:2]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_30.hpp [2:2]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_40.hpp [2:2]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_50.hpp [2:2]
- boost/phoenix/object/detail/cpp03/preprocessed/new_expr.hpp [2:2]
- boost/phoenix/object/detail/cpp03/preprocessed/new_expr_10.hpp [2:2]
- boost/phoenix/object/detail/cpp03/preprocessed/new_expr_20.hpp [2:2]
- boost/phoenix/object/detail/cpp03/preprocessed/new_expr_30.hpp [2:2]
- boost/phoenix/object/detail/cpp03/preprocessed/new_expr_40.hpp [2:2]
- boost/phoenix/object/detail/cpp03/preprocessed/new_expr_50.hpp [2:2]
- boost/phoenix/operator/detail/cpp03/mem_fun_ptr_eval.hpp [15:17]
- boost/phoenix/operator/detail/cpp03/mem_fun_ptr_expr.hpp [11:11]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval.hpp [2:2]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_10.hpp [2:4]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_20.hpp [2:4]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_30.hpp [2:4]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_40.hpp [2:4]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_50.hpp [2:4]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of.hpp [2:2]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr.hpp [2:2]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_10.hpp [2:2]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_20.hpp [2:2]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_30.hpp [2:2]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_40.hpp [2:2]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_50.hpp [2:2]
- boost/phoenix/operator/member.hpp [2:4]
- boost/phoenix/scope/detail/cpp03/lambda.hpp [14:17]
- boost/phoenix/scope/detail/cpp03/preprocessed/lambda_10.hpp [2:5]
- boost/phoenix/scope/detail/cpp03/preprocessed/lambda_20.hpp [2:5]
- boost/phoenix/scope/detail/cpp03/preprocessed/lambda_30.hpp [2:5]
- boost/phoenix/scope/detail/cpp03/preprocessed/lambda_40.hpp [2:5]
- boost/phoenix/scope/detail/cpp03/preprocessed/lambda_50.hpp [2:5]
- boost/phoenix/scope/detail/local_gen.hpp [2:2]
- boost/phoenix/scope/lambda.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL b5946573aa2a793324ebafe24646df01
-BELONGS ya.make
- License text:
- // Copyright (c) 2001 Peter Dimov and Multi Media Ltd.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/bind/bind_cc.hpp [6:6]
- boost/bind/bind_mf2_cc.hpp [6:7]
- boost/bind/bind_mf_cc.hpp [6:6]
- boost/bind/mem_fn_cc.hpp [6:6]
- boost/bind/mem_fn_template.hpp [6:6]
- boost/bind/mem_fn_vw.hpp [6:6]
- boost/callable_traits/detail/unguarded/pmf.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL b594eb502e937a54ebdadbe8bd5a68df
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/metrowerks.hpp [1:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL b5a162d9d913c26341a042009f7916b7
-BELONGS ya.make
- License text:
- Copyright 2010-2013 Mario Mulansky
- Copyright 2010-2011 Karsten Ahnert
- Copyright 2013 Kyle Lutz
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/external/thrust/thrust_algebra.hpp [9:11]
-
-KEEP COPYRIGHT_SERVICE_LABEL b5eb1d52d66d293c4156fbe683998b96
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/uuid/detail/random_provider_posix.ipp at line 5, boost/uuid/detail/random_provider_wincrypt.ipp at line 5, boost/uuid/detail/sha1.hpp at line 5, boost/uuid/uuid_serialize.hpp at line 5
- License text:
- // Copyright 2007 Andy Tompkins.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/uuid/detail/random_provider_posix.ipp [3:6]
- boost/uuid/detail/random_provider_wincrypt.ipp [3:6]
- boost/uuid/detail/sha1.hpp [3:5]
- boost/uuid/uuid_serialize.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL b608aafcf17c3fbc3a9abfa54ff163ce
-BELONGS ya.make
- License text:
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ libs/test/src/decorator.cpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL ad4755ce2f8b4e99db92172a166cc496
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
+ // Copyright 2004-2005 Peter Dimov
+ // Copyright 2005 Rene Rivera
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp [13:15]
+
+KEEP COPYRIGHT_SERVICE_LABEL ad834a54e6d96a73491e6f259770ab00
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iostreams/detail/is_dereferenceable.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/iostreams/detail/is_dereferenceable.hpp [1:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL adbebcecb122c685dde3643cfded4a6e
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/has_default_constructor.hpp at line 4
+ License text:
+ // (C) Copyright Matthias Troyerk 2006.
+ // Use, modification and distribution are subject to the Boost Software License,
+ // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/detail/has_default_constructor.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL adccd417789bfad3e5ed6df22fec8ed2
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/cstdfloat.hpp at line 6, boost/math/cstdfloat/cstdfloat_cmath.hpp at line 6, boost/math/cstdfloat/cstdfloat_complex.hpp at line 6, boost/math/cstdfloat/cstdfloat_complex_std.hpp at line 6, boost/math/cstdfloat/cstdfloat_iostream.hpp at line 6, boost/math/cstdfloat/cstdfloat_limits.hpp at line 6, boost/math/cstdfloat/cstdfloat_types.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/cstdfloat.hpp [2:6]
+ boost/math/cstdfloat/cstdfloat_cmath.hpp [2:6]
+ boost/math/cstdfloat/cstdfloat_complex.hpp [2:6]
+ boost/math/cstdfloat/cstdfloat_complex_std.hpp [2:6]
+ boost/math/cstdfloat/cstdfloat_iostream.hpp [2:6]
+ boost/math/cstdfloat/cstdfloat_limits.hpp [2:6]
+ boost/math/cstdfloat/cstdfloat_types.hpp [2:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL ae0871888f9cfe458fdd3b5ec0ed18de
+BELONGS ya.make
+ License text:
+ // Copyright (c) Antony Polukhin, 2012-2018.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_index.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL ae1d0c8850404c20b8ecd59e25bcabb5
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/sort/spreadsort/spreadsort.hpp at line 5, boost/sort/spreadsort/string_sort.hpp at line 5
+ License text:
+ // Copyright Steven J. Ross 2001 - 2009.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/sort/spreadsort/spreadsort.hpp [3:5]
+ boost/sort/spreadsort/string_sort.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL ae6c75314a374199dd4eb8179394a65c
+BELONGS libs/program_options/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/program_options/options_description.hpp at line 4, libs/program_options/src/options_description.cpp at line 4
+ License text:
+ // Copyright Vladimir Prus 2002-2004.
+ // Copyright Bertolt Mildner 2004.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/program_options/options_description.hpp [1:4]
+ libs/program_options/src/options_description.cpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL ae7a728b400655ba8b5bcff4a64ffb58
+BELONGS ya.make
+ License text:
// Copyright (C) 2007 Douglas Gregor
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/distributed/adjacency_list.hpp [1:2]
- boost/graph/distributed/adjlist/handlers.hpp [1:1]
- boost/graph/distributed/adjlist/initialize.hpp [1:1]
- boost/graph/distributed/mpi_process_group.hpp [1:3]
- boost/graph/distributed/named_graph.hpp [1:2]
- boost/graph/named_graph.hpp [1:1]
- boost/graph/parallel/simple_trigger.hpp [1:1]
- boost/property_map/parallel/simple_trigger.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL b60b728810c5d736d2650873aa7fb51c
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/detail/suffix.hpp at line 14
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/detail/suffix.hpp [4:14]
-
-KEEP COPYRIGHT_SERVICE_LABEL b626a4b5c2666eca8400c2f213679a2f
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/cerrno.hpp at line 5
- License text:
- // Copyright Beman Dawes 2005.
- // Use, modification, and distribution is subject to the Boost Software
- // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/cerrno.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL b6374b67068608f679513fec4a3a3cb2
-BELONGS ya.make
- License text:
- // Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
- // Copyright (c) 2007, 2014 Peter Dimov
- // Copyright (c) Beman Dawes 2011
- // Copyright (c) 2015 Ion Gaztanaga
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/assert.hpp [8:11]
- boost/geometry/core/assert.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL b638be5dce43d5e4914245ec2ed92e62
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/common_edg.hpp [1:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL b6597e31d130c612b92d43fa977abd87
-BELONGS ya.make
- License text:
- // Copyright Kevlin Henney, 2000-2005.
- // Copyright Alexander Nasonov, 2006-2010.
- // Copyright Antony Polukhin, 2011-2014.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/lexical_cast.hpp [1:3]
- boost/lexical_cast/bad_lexical_cast.hpp [1:3]
- boost/lexical_cast/detail/converter_lexical.hpp [1:3]
- boost/lexical_cast/detail/inf_nan.hpp [1:3]
- boost/lexical_cast/detail/is_character.hpp [1:3]
- boost/lexical_cast/detail/lcast_char_constants.hpp [1:3]
- boost/lexical_cast/detail/lcast_unsigned_converters.hpp [1:3]
- boost/lexical_cast/detail/widest_char.hpp [1:3]
- boost/lexical_cast/lexical_cast_old.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL b689ce1fe944d38c833b037be6d9f281
-BELONGS ya.make
- License text:
- // Copyright 2010 Andy Tompkins.
- // Copyright 2017 James E. King III
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/uuid/basic_name_generator.hpp [3:4]
- boost/uuid/detail/random_provider_posix.ipp [3:6]
- boost/uuid/detail/random_provider_wincrypt.ipp [3:6]
- boost/uuid/name_generator.hpp [3:4]
- boost/uuid/name_generator_md5.hpp [3:3]
- boost/uuid/name_generator_sha1.hpp [3:4]
- boost/uuid/random_generator.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL b699bdd7154fcb798353c82e7ca92221
-BELONGS ya.make
- License text:
- Copyright (c) 2002-2003 Joel de Guzman
- Copyright (c) 2002 Juan Carlos Arevalo-Baeza
- Copyright (c) 2002-2003 Martin Wille
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/core/composite/epsilon.hpp [2:4]
- boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp [2:4]
- boost/spirit/home/classic/dynamic.hpp [2:5]
- boost/spirit/home/classic/dynamic/for.hpp [2:4]
- boost/spirit/home/classic/dynamic/if.hpp [2:5]
- boost/spirit/home/classic/dynamic/impl/conditions.ipp [2:3]
- boost/spirit/home/classic/dynamic/while.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL b69cd572ce3ce471a26628f4b752dfa6
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/ssize_t.hpp at line 3
- License text:
- // Copyright Ralf W. Grosse-Kunstleve & David Abrahams 2006.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/python/ssize_t.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL b6a6c5573404f793e44c835405785861
-BELONGS ya.make
- License text:
- * Copyright 2013, 2017 Andrey Semashev
- * Copyright 2017 James E. King, III
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/winapi/config.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL b70793e631467eef3612697ba0d613b7
-BELONGS ya.make
- License text:
- // Copyright (c) Antony Polukhin, 2013-2018.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_index/ctti_type_index.hpp [2:2]
- boost/type_index/stl_type_index.hpp [2:2]
- boost/type_index/type_index_facade.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL b71904ec3fd3b6cc7f3210440fa9db89
-BELONGS ya.make
- License text:
- Copyright 2012-2015 Mario Mulansky
- Copyright 2012 Christoph Koke
- Copyright 2012 Karsten Ahnert
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/integrate/detail/integrate_const.hpp [9:11]
- boost/numeric/odeint/integrate/detail/integrate_n_steps.hpp [9:11]
- boost/numeric/odeint/util/detail/less_with_sign.hpp [9:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL b72643731dd6fbb6ddf9d496532b79ba
-BELONGS ya.make
- License text:
- // Copyright (c) 2016, Oracle and/or its affiliates.
- // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/arithmetic/normalize.hpp [3:4]
- boost/geometry/formulas/spherical.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL b772c78fde56122bdba5336e5bb0a93a
-BELONGS ya.make
- License text:
- // Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
- // Copyright 2004-2006 Peter Dimov
- // Copyright 2005 Ben Hutchings
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp [7:9]
-
-KEEP COPYRIGHT_SERVICE_LABEL b77da1c4ebbae4dc54759034a4876f63
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/fiber/algo/algorithm.hpp at line 3, boost/fiber/algo/round_robin.hpp at line 3, boost/fiber/all.hpp at line 4, boost/fiber/barrier.hpp at line 4, boost/fiber/channel_op_status.hpp at line 3, boost/fiber/condition_variable.hpp at line 4, boost/fiber/context.hpp at line 4, boost/fiber/detail/config.hpp at line 4, boost/fiber/detail/context_spmc_queue.hpp at line 4, boost/fiber/detail/convert.hpp at line 4, boost/fiber/detail/data.hpp at line 4, boost/fiber/detail/fss.hpp at line 4, boost/fiber/detail/spinlock.hpp at line 4, boost/fiber/exceptions.hpp at line 4, boost/fiber/fiber.hpp at line 4, boost/fiber/fss.hpp at line 4, boost/fiber/future.hpp at line 4, boost/fiber/future/async.hpp at line 4, boost/fiber/future/detail/shared_state.hpp at line 4, boost/fiber/future/detail/shared_state_object.hpp at line 4, boost/fiber/future/detail/task_base.hpp at line 3, boost/fiber/future/detail/task_object.hpp at line 4, boost/fiber/future/future.hpp at line 4, boost/fiber/future/future_status.hpp at line 4, boost/fiber/future/packaged_task.hpp at line 4, boost/fiber/future/promise.hpp at line 4, boost/fiber/mutex.hpp at line 4, boost/fiber/operations.hpp at line 3, boost/fiber/policy.hpp at line 4, boost/fiber/recursive_mutex.hpp at line 4, boost/fiber/recursive_timed_mutex.hpp at line 4, boost/fiber/scheduler.hpp at line 3, boost/fiber/timed_mutex.hpp at line 4, boost/fiber/type.hpp at line 4
- License text:
- // Copyright Oliver Kowalke 2013.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fiber/algo/algorithm.hpp [1:3]
- boost/fiber/algo/round_robin.hpp [1:3]
- boost/fiber/all.hpp [2:4]
- boost/fiber/barrier.hpp [2:4]
- boost/fiber/channel_op_status.hpp [1:3]
- boost/fiber/condition_variable.hpp [2:4]
- boost/fiber/context.hpp [2:4]
- boost/fiber/detail/config.hpp [2:4]
- boost/fiber/detail/context_spmc_queue.hpp [2:4]
- boost/fiber/detail/convert.hpp [2:4]
- boost/fiber/detail/data.hpp [2:4]
- boost/fiber/detail/fss.hpp [2:4]
- boost/fiber/detail/spinlock.hpp [2:4]
- boost/fiber/exceptions.hpp [2:4]
- boost/fiber/fiber.hpp [2:4]
- boost/fiber/fss.hpp [2:4]
- boost/fiber/future.hpp [2:4]
- boost/fiber/future/async.hpp [2:4]
- boost/fiber/future/detail/shared_state.hpp [2:4]
- boost/fiber/future/detail/shared_state_object.hpp [2:4]
- boost/fiber/future/detail/task_base.hpp [1:3]
- boost/fiber/future/detail/task_object.hpp [2:4]
- boost/fiber/future/future.hpp [2:4]
- boost/fiber/future/future_status.hpp [2:4]
- boost/fiber/future/packaged_task.hpp [2:4]
- boost/fiber/future/promise.hpp [2:4]
- boost/fiber/mutex.hpp [2:4]
- boost/fiber/operations.hpp [1:3]
- boost/fiber/policy.hpp [2:4]
- boost/fiber/recursive_mutex.hpp [2:4]
- boost/fiber/recursive_timed_mutex.hpp [2:4]
- boost/fiber/scheduler.hpp [1:3]
- boost/fiber/timed_mutex.hpp [2:4]
- boost/fiber/type.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL b79a0f43ba0efea8c1e8e8b615f4a4d3
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/random/exponential_distribution.hpp at line 7
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/random/exponential_distribution.hpp [3:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL b79d46b779b3668422685b4b8d6ded42
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/wave/whitespace_handling.hpp at line 10
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/wave/whitespace_handling.hpp [7:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL b7a8a4916fe446a46dfd7a3665c2a01f
-BELONGS ya.make
- License text:
- // (C) Copyright 2005-8 Anthony Williams
- // (C) Copyright 2012 Vicente J. Botet Escriba
- // (C) Copyright 2017 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/win32/interlocked_read.hpp [6:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL b8264448f2302918d52d12ed19e342eb
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/archive/basic_streambuf_locale_saver.hpp at line 23, boost/io/ios_state.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/archive/basic_streambuf_locale_saver.hpp [21:23]
- boost/io/ios_state.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL b82c0e3e5bd7dc73511173cbf94198dd
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2015 Joel de Guzman
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/x3/directive.hpp [2:2]
- boost/spirit/home/x3/support/utility/annotate_on_success.hpp [2:2]
- boost/spirit/home/x3/support/utility/testing.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL b84fa64c3d4d6ba86bf480239d56f982
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/sort/common/deque_cnc.hpp at line 8, boost/sort/common/int_array.hpp at line 9, boost/sort/common/pivot.hpp at line 7, boost/sort/common/scheduler.hpp at line 8, boost/sort/common/spinlock.hpp at line 7, boost/sort/common/stack_cnc.hpp at line 7, boost/sort/common/time_measure.hpp at line 8, boost/sort/common/util/circular_buffer.hpp at line 7
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/sort/common/deque_cnc.hpp [6:8]
- boost/sort/common/int_array.hpp [7:9]
- boost/sort/common/pivot.hpp [5:7]
- boost/sort/common/scheduler.hpp [6:8]
- boost/sort/common/spinlock.hpp [5:7]
- boost/sort/common/stack_cnc.hpp [5:7]
- boost/sort/common/time_measure.hpp [6:8]
- boost/sort/common/util/circular_buffer.hpp [5:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL b8547beed83546072ae6f84e3538f2ff
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/synchronized_value.hpp at line 4
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/synchronized_value.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL b85fc3b662d75b6c8499a3f035f4deec
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2007.
+ // Copyright (C) 2007 Hartmut Kaiser
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/distributed/named_graph.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL ae8704046854e24740f868187f810e75
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/utility/detail/result_of_iterate.hpp at line 10
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/utility/detail/result_of_iterate.hpp [8:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL ae8ac6d67230cc94903efa59b420c903
+BELONGS libs/thread/ya.make
+ License text:
+ // (C) Copyright 2007 Anthony Williams
+ // (C) Copyright 2007 David Deakins
+ // (C) Copyright 2011-2018 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ libs/thread/src/win32/thread.cpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL aeaee3b43c9a47f861a6ff5d3039fb8c
+BELONGS ya.make
+ License text:
+ Copyright (c) Alexander Zaitsev <zamazan4ik@gmail.com>, 2016
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/algorithm/is_palindrome.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL aec679ee74952b219e93e1261f2a5b69
+BELONGS libs/serialization/ya.make ya.make
+ License text:
+ // (C) Copyright 2005 Robert Ramey - http://www.rrsd.com
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/archive/basic_streambuf_locale_saver.hpp [12:12]
+ boost/serialization/void_cast_fwd.hpp [12:14]
+ libs/serialization/src/stl_port.cpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL af0fca03eae52a46a7850a8202dec665
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2001 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
+ // 2001 Gary Powell (gary.powell@sierra.com)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/tuple/tuple_io.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL af4aaeb4595b4e2e72d13075cdc42e70
+BELONGS ya.make
+ License text:
+ /* Copyright (c) 2005 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/date_time/date_generator_parser.hpp [5:7]
+ boost/date_time/special_values_parser.hpp [5:7]
+ boost/date_time/string_convert.hpp [4:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL af611d3851b540f380d5470baf50822f
+BELONGS ya.make
+ License text:
+ Copyright 2013-2014 Karsten Ahnert
+ Copyright 2013-2014 Mario Mulansky
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/external/thrust/thrust_operations_dispatcher.hpp [9:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL affa528d742a158f1852feeb711a60b5
+BELONGS ya.make
+ License text:
+ // Copyright 2004 The Trustees of Indiana University.
+ // Copyright 2005 Matthias Troyer.
+ // Copyright 2006 Douglas Gregor <doug.gregor -at- gmail.com>.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpi/datatype.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL b05bb05d6ff4c93d750af62df916b423
+BELONGS ya.make
+ License text:
+ Copyright (c) 2008-2012: Joachim Faulhaber
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/icl/interval_map.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL b05e8d821dedb1c4725a22b027a22663
+BELONGS ya.make
+ License text:
+ // Copyright Aleksey Gurtovoy 2000-2009
+ // Copyright Jaap Suter 2003
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/bitand.hpp [5:6]
+ boost/mpl/bitor.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL b05eb40bb3bae6be16123d31cff82a10
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/comeau.hpp [1:8]
+ boost/config/platform/win32.hpp [1:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL b09edac6bc0b2db05bdae89ff848fba0
+BELONGS ya.make
+ License text:
+ // (C) Copyright Jeremy William Murphy 2016.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/integer/common_factor_rt.hpp [1:1]
+ boost/math/tools/polynomial_gcd.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL b0acda8e3df319a68e9a5e75c455f627
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/move/detail/move_helpers.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2010-2016.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/move/detail/move_helpers.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL b10a349d839f11abf2ae65daa684e1ef
+BELONGS libs/python/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/object/pickle_support.hpp at line 3, libs/python/src/object/pickle_support.cpp at line 3
+ License text:
+ // (C) Copyright R.W. Grosse-Kunstleve 2002.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/python/object/pickle_support.hpp [1:3]
+ libs/python/src/object/pickle_support.cpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL b115999a21015dd266d010727a799415
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iterator/function_input_iterator.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/iterator/function_input_iterator.hpp [1:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL b13bccd796707ee307c756c5292480d5
+BELONGS ya.make
+ License text:
+ // (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
+ // Copyright (c) 2001, 2002 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/interprocess/smart_ptr/scoped_ptr.hpp [5:9]
+ boost/interprocess/smart_ptr/shared_ptr.hpp [5:9]
+ boost/scoped_array.hpp [4:5]
+ boost/scoped_ptr.hpp [4:5]
+ boost/serialization/detail/shared_ptr_132.hpp [7:8]
+ boost/serialization/detail/shared_ptr_nmt_132.hpp [7:8]
+ boost/shared_array.hpp [7:8]
+ boost/shared_ptr.hpp [7:8]
+ boost/smart_ptr/scoped_array.hpp [4:5]
+ boost/smart_ptr/scoped_ptr.hpp [4:5]
+ boost/smart_ptr/shared_array.hpp [7:8]
+ boost/smart_ptr/shared_ptr.hpp [7:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL b14d407341145f68aa7fea9536f026aa
+BELONGS ya.make
+ License text:
+ * Copyright 2002-2003 Guillaume Melquiond
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/interval/compare/lexicographic.hpp [3:3]
+ boost/numeric/interval/compare/set.hpp [3:3]
+ boost/numeric/interval/compare/tribool.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL b16469fd47ce5aa5a005d8f08caf9bf6
+BELONGS ya.make
+ License text:
+ // Copyright 2011 Christophe Henry
+ // henry UNDERSCORE christophe AT hotmail DOT com
+ // This is an extended version of the state machine available in the boost::mpl library
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/msm/front/euml/phoenix_placeholders.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL b16508c75fd7b6f67dabe4880511636f
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2012-2014 Barend Gehrels, Amsterdam, the Netherlands.
+ // Copyright (c) 2012-2014 Bruno Lalande, Paris, France.
+ // Copyright (c) 2012-2014 Mateusz Loskot, London, UK.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/multi/algorithms/disjoint.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL b1820d2cd3cc81402964cf6c2c64f349
+BELONGS ya.make
+ License text:
+ // Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
+ // Copyright 2010 Thomas Claveirole
+ // Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek, Thomas Claveirole
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/adjacency_list.hpp [2:4]
+ boost/graph/detail/adjacency_list.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL b184c1576725880afe7824383236246f
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/weighted_moment.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/accumulators/statistics/weighted_moment.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL b1b0461f5b5534483530205d8f3b8f16
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signals2/detail/preprocessed_arg_type.hpp at line 7, boost/signals2/detail/slot_template.hpp at line 7, boost/signals2/detail/tracked_objects_visitor.hpp at line 7, boost/signals2/preprocessed_slot.hpp at line 7, boost/signals2/slot_base.hpp at line 7, boost/signals2/trackable.hpp at line 7
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/signals2/detail/preprocessed_arg_type.hpp [3:7]
+ boost/signals2/detail/slot_template.hpp [3:7]
+ boost/signals2/detail/tracked_objects_visitor.hpp [3:7]
+ boost/signals2/preprocessed_slot.hpp [3:7]
+ boost/signals2/slot_base.hpp [3:7]
+ boost/signals2/trackable.hpp [3:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL b1c79ab18bb6dbf3066b7e1c132fe10c
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/p_square_cumulative_distribution.hpp at line 6, boost/accumulators/statistics/weighted_p_square_cumulative_distribution.hpp at line 6, boost/proto/detail/any.hpp at line 7, boost/proto/functional/range.hpp at line 7, boost/proto/functional/range/begin.hpp at line 7, boost/proto/functional/range/empty.hpp at line 7, boost/proto/functional/range/end.hpp at line 7, boost/proto/functional/range/rbegin.hpp at line 7, boost/proto/functional/range/rend.hpp at line 7, boost/proto/functional/range/size.hpp at line 7, boost/proto/functional/std/iterator.hpp at line 7, boost/proto/transform/detail/expand_pack.hpp at line 17, boost/proto/transform/detail/pack.hpp at line 7, boost/proto/transform/detail/pack_impl.hpp at line 17, boost/proto/transform/detail/preprocessed/expand_pack.hpp at line 7, boost/proto/transform/detail/preprocessed/pack_impl.hpp at line 7, boost/proto/transform/env.hpp at line 7
+ License text:
+ // Copyright 2012 Eric Niebler. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/accumulators/statistics/p_square_cumulative_distribution.hpp [4:6]
+ boost/accumulators/statistics/weighted_p_square_cumulative_distribution.hpp [4:6]
+ boost/proto/detail/any.hpp [5:7]
+ boost/proto/functional/range.hpp [5:7]
+ boost/proto/functional/range/begin.hpp [5:7]
+ boost/proto/functional/range/empty.hpp [5:7]
+ boost/proto/functional/range/end.hpp [5:7]
+ boost/proto/functional/range/rbegin.hpp [5:7]
+ boost/proto/functional/range/rend.hpp [5:7]
+ boost/proto/functional/range/size.hpp [5:7]
+ boost/proto/functional/std/iterator.hpp [5:7]
+ boost/proto/transform/detail/expand_pack.hpp [15:17]
+ boost/proto/transform/detail/pack.hpp [5:7]
+ boost/proto/transform/detail/pack_impl.hpp [15:17]
+ boost/proto/transform/detail/preprocessed/expand_pack.hpp [5:7]
+ boost/proto/transform/detail/preprocessed/pack_impl.hpp [5:7]
+ boost/proto/transform/env.hpp [5:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL b1c8015966a7ee6e2e16f052030573b6
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/core/ignore_unused.hpp [1:1]
+ boost/geometry/algorithms/convert.hpp [3:6]
+ boost/geometry/algorithms/detail/calculate_sum.hpp [3:6]
+ boost/geometry/algorithms/detail/centroid/translating_transformer.hpp [3:6]
+ boost/geometry/algorithms/detail/counting.hpp [3:6]
+ boost/geometry/algorithms/detail/get_max_size.hpp [3:6]
+ boost/geometry/algorithms/detail/interior_iterator.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/select_rings.hpp [3:4]
+ boost/geometry/algorithms/detail/within/point_in_geometry.hpp [3:6]
+ boost/geometry/algorithms/for_each.hpp [3:6]
+ boost/geometry/algorithms/num_points.hpp [3:6]
+ boost/geometry/algorithms/reverse.hpp [3:6]
+ boost/geometry/algorithms/transform.hpp [3:6]
+ boost/geometry/algorithms/unique.hpp [3:6]
+ boost/geometry/geometries/linestring.hpp [3:6]
+ boost/geometry/geometries/multi_linestring.hpp [3:6]
+ boost/geometry/geometries/multi_point.hpp [3:6]
+ boost/geometry/geometries/multi_polygon.hpp [3:6]
+ boost/geometry/geometries/point.hpp [3:6]
+ boost/geometry/geometries/ring.hpp [3:6]
+ boost/geometry/io/dsv/write.hpp [3:6]
+ boost/geometry/io/svg/write.hpp [3:4]
+ boost/geometry/io/svg/write_svg.hpp [3:4]
+ boost/geometry/policies/robustness/robust_type.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL b1cdf58fa303a8f4ede708fdd775aaaa
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2003 Eric Friedman
+ // Copyright (c) 2016 Antony Polukhin
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/variant/detail/config.hpp [6:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL b1d8599132305166f8d3329e2357d761
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multi_index/detail/index_base.hpp at line 3, boost/multi_index/detail/promotes_arg.hpp at line 3, boost/multi_index/detail/rnk_index_ops.hpp at line 3, boost/multi_index/ranked_index.hpp at line 3
+ License text:
+ /* Copyright 2003-2017 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/multi_index/detail/index_base.hpp [1:3]
+ boost/multi_index/detail/promotes_arg.hpp [1:3]
+ boost/multi_index/detail/rnk_index_ops.hpp [1:3]
+ boost/multi_index/ranked_index.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL b1f8901cb8c9428d0a6f94081716c15b
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/support/detail/lexer/char_traits.hpp [2:2]
+ boost/spirit/home/support/detail/lexer/consts.hpp [2:2]
+ boost/spirit/home/support/detail/lexer/containers/ptr_list.hpp [2:2]
+ boost/spirit/home/support/detail/lexer/containers/ptr_vector.hpp [2:2]
+ boost/spirit/home/support/detail/lexer/conversion/char_state_machine.hpp [2:2]
+ boost/spirit/home/support/detail/lexer/debug.hpp [2:2]
+ boost/spirit/home/support/detail/lexer/generator.hpp [2:2]
+ boost/spirit/home/support/detail/lexer/parser/parser.hpp [2:2]
+ boost/spirit/home/support/detail/lexer/parser/tokeniser/num_token.hpp [2:2]
+ boost/spirit/home/support/detail/lexer/parser/tokeniser/re_tokeniser.hpp [2:2]
+ boost/spirit/home/support/detail/lexer/parser/tokeniser/re_tokeniser_helper.hpp [2:2]
+ boost/spirit/home/support/detail/lexer/parser/tokeniser/re_tokeniser_state.hpp [2:2]
+ boost/spirit/home/support/detail/lexer/parser/tree/end_node.hpp [2:2]
+ boost/spirit/home/support/detail/lexer/parser/tree/iteration_node.hpp [2:2]
+ boost/spirit/home/support/detail/lexer/parser/tree/leaf_node.hpp [2:2]
+ boost/spirit/home/support/detail/lexer/parser/tree/node.hpp [2:2]
+ boost/spirit/home/support/detail/lexer/parser/tree/selection_node.hpp [2:2]
+ boost/spirit/home/support/detail/lexer/parser/tree/sequence_node.hpp [2:2]
+ boost/spirit/home/support/detail/lexer/partition/charset.hpp [2:2]
+ boost/spirit/home/support/detail/lexer/partition/equivset.hpp [2:2]
+ boost/spirit/home/support/detail/lexer/rules.hpp [2:2]
+ boost/spirit/home/support/detail/lexer/runtime_error.hpp [2:2]
+ boost/spirit/home/support/detail/lexer/serialise.hpp [2:2]
+ boost/spirit/home/support/detail/lexer/size_t.hpp [2:2]
+ boost/spirit/home/support/detail/lexer/state_machine.hpp [2:2]
+ boost/spirit/home/support/detail/lexer/string_token.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL b22616ad6909bb1b6914df1bbe9f7d72
+BELONGS ya.make
+ License text:
+ // Copyright Beman Dawes 2013
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/endian/detail/intrinsic.hpp [3:4]
+ boost/endian/std_pair.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL b2365a202e25d6cb47c747294c287f01
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2003 Joel de Guzman
+ Copyright (c) 2002-2003 Hartmut Kaiser
+ Copyright (c) 2003 Gustavo Guerra
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/debug/debug_node.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL b237bc327f11220f8661319eedc55a67
+BELONGS ya.make
+ License text:
+ Copyright (c) 2003 Giovanni Bajo
+ Copyright (c) 2003 Martin Wille
+ Copyright (c) 2003 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/iterator/impl/file_iterator.ipp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL b25c8fff5a7c50544f2f1f7552b2ef6b
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2015 John Maddock
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/ellint_rg.hpp [1:3]
+ boost/math/special_functions/heuman_lambda.hpp [1:3]
+ boost/math/special_functions/jacobi_zeta.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL b28d2fde6ba5b098618944cd7d0b3376
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/win32/mutex.hpp at line 6, boost/thread/win32/once.hpp at line 9, boost/thread/win32/thread_primitives.hpp at line 9
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/win32/mutex.hpp [3:6]
+ boost/thread/win32/once.hpp [6:8]
+ boost/thread/win32/thread_primitives.hpp [6:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL b2df7e5a7a957bf86ae4c6503becd8c4
+BELONGS ya.make
+ License text:
+ // Copyright Aleksey Gurtovoy 2001-2004
+ // Copyright David Abrahams 2001-2002
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/accumulate.hpp [5:6]
+ boost/mpl/aux_/iter_fold_if_impl.hpp [5:6]
+ boost/mpl/aux_/preprocessed/bcc/iter_fold_if_impl.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc551/iter_fold_if_impl.hpp [2:3]
+ boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_if_impl.hpp [2:3]
+ boost/mpl/aux_/preprocessed/dmc/iter_fold_if_impl.hpp [2:3]
+ boost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc60/iter_fold_if_impl.hpp [2:3]
+ boost/mpl/aux_/preprocessed/msvc70/iter_fold_if_impl.hpp [2:3]
+ boost/mpl/aux_/preprocessed/mwcw/iter_fold_if_impl.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ctps/iter_fold_if_impl.hpp [2:3]
+ boost/mpl/aux_/preprocessed/no_ttp/iter_fold_if_impl.hpp [2:3]
+ boost/mpl/aux_/preprocessed/plain/iter_fold_if_impl.hpp [2:3]
+ boost/mpl/fold.hpp [5:6]
+ boost/mpl/iter_fold.hpp [5:6]
+ boost/mpl/reverse_fold.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL b303e8bf396c51ea4c645078eb2128ab
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/typeof/template_encoding.hpp at line 4, boost/typeof/template_template_param.hpp at line 4, boost/typeof/typeof_impl.hpp at line 4, boost/typeof/vector.hpp at line 4, boost/typeof/vector100.hpp at line 5, boost/typeof/vector150.hpp at line 5, boost/typeof/vector200.hpp at line 5, boost/typeof/vector50.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/typeof/template_encoding.hpp [1:4]
+ boost/typeof/template_template_param.hpp [1:4]
+ boost/typeof/typeof_impl.hpp [1:4]
+ boost/typeof/vector.hpp [1:2]
+ boost/typeof/vector100.hpp [2:3]
+ boost/typeof/vector150.hpp [2:3]
+ boost/typeof/vector200.hpp [2:3]
+ boost/typeof/vector50.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL b39477fb74de6923f82fd930b22fa1ef
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multi_index/detail/auto_space.hpp at line 3, boost/multi_index/detail/copy_map.hpp at line 3, boost/multi_index/detail/hash_index_node.hpp at line 3, boost/multi_index/detail/ord_index_impl.hpp at line 3, boost/multi_index/detail/ord_index_node.hpp at line 3, boost/multi_index/detail/rnd_index_node.hpp at line 3, boost/multi_index/detail/rnd_index_ptr_array.hpp at line 3, boost/multi_index/detail/seq_index_node.hpp at line 3, boost/multi_index/hashed_index.hpp at line 3, boost/multi_index/random_access_index.hpp at line 3, boost/multi_index/sequenced_index.hpp at line 3, boost/multi_index_container.hpp at line 5
+ License text:
+ * Copyright 2003-2018 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/multi_index/detail/auto_space.hpp [1:3]
+ boost/multi_index/detail/copy_map.hpp [1:3]
+ boost/multi_index/detail/hash_index_node.hpp [1:3]
+ boost/multi_index/detail/ord_index_impl.hpp [1:3]
+ boost/multi_index/detail/ord_index_node.hpp [1:3]
+ boost/multi_index/detail/rnd_index_node.hpp [1:3]
+ boost/multi_index/detail/rnd_index_ptr_array.hpp [1:3]
+ boost/multi_index/detail/seq_index_node.hpp [1:3]
+ boost/multi_index/hashed_index.hpp [1:3]
+ boost/multi_index/random_access_index.hpp [1:3]
+ boost/multi_index/sequenced_index.hpp [1:3]
+ boost/multi_index_container.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL b3ae8d5fa08389df2a8eb4a5184974c9
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/math_fwd.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math_fwd.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL b4926da9285e9a7d8815bc373325f082
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2012-2013 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/detail/invoke.hpp [1:1]
+ boost/thread/detail/make_tuple_indices.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL b4a590731990d46da1db97cbe472aa42
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/integer/integer_mask.hpp at line 5, boost/integer/static_min_max.hpp at line 5
+ License text:
+ // (C) Copyright Daryle Walker 2001.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/integer/integer_mask.hpp [3:5]
+ boost/integer/static_min_max.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL b4c664be9a8d4af073dd2d3ce7c75b24
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic.hpp [2:14]
+ boost/spirit/home/classic/iterator/file_iterator.hpp [2:5]
+ boost/spirit/home/classic/iterator/impl/file_iterator.ipp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL b4d502c99ef9e3a6fa33d58757314d75
+BELONGS ya.make
+ License text:
+ Autogenerated by MultiStageTable.py (Unicode multi-stage
+ table builder) (c) Peter Kankowski, 2008
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/support/char_encoding/unicode/query.hpp [7:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL b4f5a55de50af359f9bfe971eb3941df
+BELONGS ya.make
+ License text:
+ * (C) Copyright Nicolai M. Josuttis 2001.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/array.hpp [10:10]
+ boost/iostreams/device/file_descriptor.hpp [8:9]
+
+KEEP COPYRIGHT_SERVICE_LABEL b517037ab6887c277a72af6da5e6d9e2
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2011-2015 Adam Wulkiewicz, Lodz, Poland.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/index/detail/assert.hpp [3:3]
+ boost/geometry/index/detail/distance_predicates.hpp [6:6]
+ boost/geometry/index/detail/is_bounding_geometry.hpp [3:3]
+ boost/geometry/index/detail/is_indexable.hpp [3:3]
+ boost/geometry/index/detail/predicates.hpp [5:5]
+ boost/geometry/index/detail/rtree/iterators.hpp [5:5]
+ boost/geometry/index/detail/rtree/node/node.hpp [5:5]
+ boost/geometry/index/detail/rtree/node/node_elements.hpp [5:5]
+ boost/geometry/index/detail/rtree/node/subtree_destroyer.hpp [5:5]
+ boost/geometry/index/detail/rtree/quadratic/redistribute_elements.hpp [5:5]
+ boost/geometry/index/detail/rtree/query_iterators.hpp [5:5]
+ boost/geometry/index/detail/rtree/rstar/insert.hpp [5:5]
+ boost/geometry/index/detail/rtree/utilities/are_boxes_ok.hpp [5:5]
+ boost/geometry/index/detail/rtree/utilities/are_counts_ok.hpp [5:5]
+ boost/geometry/index/detail/rtree/visitors/children_box.hpp [5:5]
+ boost/geometry/index/detail/rtree/visitors/copy.hpp [5:5]
+ boost/geometry/index/detail/rtree/visitors/insert.hpp [5:5]
+ boost/geometry/index/detail/rtree/visitors/is_leaf.hpp [5:5]
+ boost/geometry/index/detail/rtree/visitors/iterator.hpp [5:5]
+ boost/geometry/index/detail/serialization.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL b51b582fd41e8d5e59edf0ea1f331e9d
+BELONGS ya.make
+ License text:
+ // (C) Copyright John Maddock 2006.
+ // (C) Copyright Johan Rade 2006.
+ // (C) Copyright Paul A. Bristow 2011 (added changesign).
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/sign.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL b52e6d8c8099fbbc21dd26f9da622ebd
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2000 Stephen Cleary
+ // Copyright (C) 2008 Ion Gaztanaga
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/container/detail/singleton.hpp [1:2]
+ boost/pool/detail/guard.hpp [1:1]
+ boost/pool/detail/mutex.hpp [1:1]
+ boost/pool/detail/pool_construct.ipp [1:1]
+ boost/pool/detail/pool_construct_simple.ipp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL b55de55bf9cf2ea9ad89223e9c74d22d
+BELONGS ya.make
+ License text:
+ // Copyright 2007 David Jenkins.
+ // Copyright 2007 Eric Niebler.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/xpressive/detail/utility/symbols.hpp [9:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL b577ef3450332ce971ed9f06a436e353
+BELONGS ya.make
+ License text:
+ // (C) Copyright Jeremy Siek 1999-2001.
+ // Copyright (C) 2006 Trustees of Indiana University
+ // Authors: Douglas Gregor and Jeremy Siek
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/property_map/parallel/parallel_property_maps.hpp [1:3]
+ boost/property_map/property_map.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL b5798aa67e74d9f05dec809f252a358b
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2010 Joel de Guzman
+ Copyright (c) 2010 Eric Niebler
+ Copyright (c) 2014-2015 John Fletcher
+ Copyright (c) 2016 Kohei Takahashi
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/phoenix/bind/bind_function.hpp [2:2]
+ boost/phoenix/bind/bind_function_object.hpp [2:2]
+ boost/phoenix/bind/bind_member_function.hpp [2:2]
+ boost/phoenix/config.hpp [2:5]
+ boost/phoenix/core/detail/cpp03/function_eval_expr.hpp [2:2]
+ boost/phoenix/core/detail/cpp03/function_eval_expr.hpp [17:18]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr.hpp [2:2]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_10.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_20.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_30.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_40.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_50.hpp [2:3]
+ boost/phoenix/core/detail/index_sequence.hpp [2:2]
+ boost/phoenix/core/expression.hpp [2:2]
+ boost/phoenix/object/detail/cpp03/construct_expr.hpp [12:12]
+ boost/phoenix/object/detail/cpp03/new_expr.hpp [12:12]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_expr.hpp [2:2]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_10.hpp [2:2]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_20.hpp [2:2]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_30.hpp [2:2]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_40.hpp [2:2]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_50.hpp [2:2]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_expr.hpp [2:2]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_expr_10.hpp [2:2]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_expr_20.hpp [2:2]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_expr_30.hpp [2:2]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_expr_40.hpp [2:2]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_expr_50.hpp [2:2]
+ boost/phoenix/operator/detail/cpp03/mem_fun_ptr_eval.hpp [15:17]
+ boost/phoenix/operator/detail/cpp03/mem_fun_ptr_expr.hpp [11:11]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval.hpp [2:2]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_10.hpp [2:4]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_20.hpp [2:4]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_30.hpp [2:4]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_40.hpp [2:4]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_50.hpp [2:4]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of.hpp [2:2]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr.hpp [2:2]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_10.hpp [2:2]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_20.hpp [2:2]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_30.hpp [2:2]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_40.hpp [2:2]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_50.hpp [2:2]
+ boost/phoenix/operator/member.hpp [2:4]
+ boost/phoenix/scope/detail/cpp03/lambda.hpp [14:17]
+ boost/phoenix/scope/detail/cpp03/preprocessed/lambda_10.hpp [2:5]
+ boost/phoenix/scope/detail/cpp03/preprocessed/lambda_20.hpp [2:5]
+ boost/phoenix/scope/detail/cpp03/preprocessed/lambda_30.hpp [2:5]
+ boost/phoenix/scope/detail/cpp03/preprocessed/lambda_40.hpp [2:5]
+ boost/phoenix/scope/detail/cpp03/preprocessed/lambda_50.hpp [2:5]
+ boost/phoenix/scope/detail/local_gen.hpp [2:2]
+ boost/phoenix/scope/lambda.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL b5946573aa2a793324ebafe24646df01
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001 Peter Dimov and Multi Media Ltd.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/bind/bind_cc.hpp [6:6]
+ boost/bind/bind_mf2_cc.hpp [6:7]
+ boost/bind/bind_mf_cc.hpp [6:6]
+ boost/bind/mem_fn_cc.hpp [6:6]
+ boost/bind/mem_fn_template.hpp [6:6]
+ boost/bind/mem_fn_vw.hpp [6:6]
+ boost/callable_traits/detail/unguarded/pmf.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL b594eb502e937a54ebdadbe8bd5a68df
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/metrowerks.hpp [1:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL b5a162d9d913c26341a042009f7916b7
+BELONGS ya.make
+ License text:
+ Copyright 2010-2013 Mario Mulansky
+ Copyright 2010-2011 Karsten Ahnert
+ Copyright 2013 Kyle Lutz
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/external/thrust/thrust_algebra.hpp [9:11]
+
+KEEP COPYRIGHT_SERVICE_LABEL b5eb1d52d66d293c4156fbe683998b96
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/uuid/detail/random_provider_posix.ipp at line 5, boost/uuid/detail/random_provider_wincrypt.ipp at line 5, boost/uuid/detail/sha1.hpp at line 5, boost/uuid/uuid_serialize.hpp at line 5
+ License text:
+ // Copyright 2007 Andy Tompkins.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/uuid/detail/random_provider_posix.ipp [3:6]
+ boost/uuid/detail/random_provider_wincrypt.ipp [3:6]
+ boost/uuid/detail/sha1.hpp [3:5]
+ boost/uuid/uuid_serialize.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL b608aafcf17c3fbc3a9abfa54ff163ce
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2007 Douglas Gregor
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/distributed/adjacency_list.hpp [1:2]
+ boost/graph/distributed/adjlist/handlers.hpp [1:1]
+ boost/graph/distributed/adjlist/initialize.hpp [1:1]
+ boost/graph/distributed/mpi_process_group.hpp [1:3]
+ boost/graph/distributed/named_graph.hpp [1:2]
+ boost/graph/named_graph.hpp [1:1]
+ boost/graph/parallel/simple_trigger.hpp [1:1]
+ boost/property_map/parallel/simple_trigger.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL b60b728810c5d736d2650873aa7fb51c
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/detail/suffix.hpp at line 14
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/detail/suffix.hpp [4:14]
+
+KEEP COPYRIGHT_SERVICE_LABEL b626a4b5c2666eca8400c2f213679a2f
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/cerrno.hpp at line 5
+ License text:
+ // Copyright Beman Dawes 2005.
+ // Use, modification, and distribution is subject to the Boost Software
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/cerrno.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL b6374b67068608f679513fec4a3a3cb2
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
+ // Copyright (c) 2007, 2014 Peter Dimov
+ // Copyright (c) Beman Dawes 2011
+ // Copyright (c) 2015 Ion Gaztanaga
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/assert.hpp [8:11]
+ boost/geometry/core/assert.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL b638be5dce43d5e4914245ec2ed92e62
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/common_edg.hpp [1:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL b6597e31d130c612b92d43fa977abd87
+BELONGS ya.make
+ License text:
+ // Copyright Kevlin Henney, 2000-2005.
+ // Copyright Alexander Nasonov, 2006-2010.
+ // Copyright Antony Polukhin, 2011-2014.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/lexical_cast.hpp [1:3]
+ boost/lexical_cast/bad_lexical_cast.hpp [1:3]
+ boost/lexical_cast/detail/converter_lexical.hpp [1:3]
+ boost/lexical_cast/detail/inf_nan.hpp [1:3]
+ boost/lexical_cast/detail/is_character.hpp [1:3]
+ boost/lexical_cast/detail/lcast_char_constants.hpp [1:3]
+ boost/lexical_cast/detail/lcast_unsigned_converters.hpp [1:3]
+ boost/lexical_cast/detail/widest_char.hpp [1:3]
+ boost/lexical_cast/lexical_cast_old.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL b689ce1fe944d38c833b037be6d9f281
+BELONGS ya.make
+ License text:
+ // Copyright 2010 Andy Tompkins.
+ // Copyright 2017 James E. King III
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/uuid/basic_name_generator.hpp [3:4]
+ boost/uuid/detail/random_provider_posix.ipp [3:6]
+ boost/uuid/detail/random_provider_wincrypt.ipp [3:6]
+ boost/uuid/name_generator.hpp [3:4]
+ boost/uuid/name_generator_md5.hpp [3:3]
+ boost/uuid/name_generator_sha1.hpp [3:4]
+ boost/uuid/random_generator.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL b699bdd7154fcb798353c82e7ca92221
+BELONGS ya.make
+ License text:
+ Copyright (c) 2002-2003 Joel de Guzman
+ Copyright (c) 2002 Juan Carlos Arevalo-Baeza
+ Copyright (c) 2002-2003 Martin Wille
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/core/composite/epsilon.hpp [2:4]
+ boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp [2:4]
+ boost/spirit/home/classic/dynamic.hpp [2:5]
+ boost/spirit/home/classic/dynamic/for.hpp [2:4]
+ boost/spirit/home/classic/dynamic/if.hpp [2:5]
+ boost/spirit/home/classic/dynamic/impl/conditions.ipp [2:3]
+ boost/spirit/home/classic/dynamic/while.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL b69cd572ce3ce471a26628f4b752dfa6
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/ssize_t.hpp at line 3
+ License text:
+ // Copyright Ralf W. Grosse-Kunstleve & David Abrahams 2006.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/python/ssize_t.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL b6a6c5573404f793e44c835405785861
+BELONGS ya.make
+ License text:
+ * Copyright 2013, 2017 Andrey Semashev
+ * Copyright 2017 James E. King, III
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/winapi/config.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL b70793e631467eef3612697ba0d613b7
+BELONGS ya.make
+ License text:
+ // Copyright (c) Antony Polukhin, 2013-2018.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_index/ctti_type_index.hpp [2:2]
+ boost/type_index/stl_type_index.hpp [2:2]
+ boost/type_index/type_index_facade.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL b71904ec3fd3b6cc7f3210440fa9db89
+BELONGS ya.make
+ License text:
+ Copyright 2012-2015 Mario Mulansky
+ Copyright 2012 Christoph Koke
+ Copyright 2012 Karsten Ahnert
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/integrate/detail/integrate_const.hpp [9:11]
+ boost/numeric/odeint/integrate/detail/integrate_n_steps.hpp [9:11]
+ boost/numeric/odeint/util/detail/less_with_sign.hpp [9:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL b72643731dd6fbb6ddf9d496532b79ba
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2016, Oracle and/or its affiliates.
+ // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/arithmetic/normalize.hpp [3:4]
+ boost/geometry/formulas/spherical.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL b772c78fde56122bdba5336e5bb0a93a
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
+ // Copyright 2004-2006 Peter Dimov
+ // Copyright 2005 Ben Hutchings
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp [7:9]
+
+KEEP COPYRIGHT_SERVICE_LABEL b77da1c4ebbae4dc54759034a4876f63
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/fiber/algo/algorithm.hpp at line 3, boost/fiber/algo/round_robin.hpp at line 3, boost/fiber/all.hpp at line 4, boost/fiber/barrier.hpp at line 4, boost/fiber/channel_op_status.hpp at line 3, boost/fiber/condition_variable.hpp at line 4, boost/fiber/context.hpp at line 4, boost/fiber/detail/config.hpp at line 4, boost/fiber/detail/context_spmc_queue.hpp at line 4, boost/fiber/detail/convert.hpp at line 4, boost/fiber/detail/data.hpp at line 4, boost/fiber/detail/fss.hpp at line 4, boost/fiber/detail/spinlock.hpp at line 4, boost/fiber/exceptions.hpp at line 4, boost/fiber/fiber.hpp at line 4, boost/fiber/fss.hpp at line 4, boost/fiber/future.hpp at line 4, boost/fiber/future/async.hpp at line 4, boost/fiber/future/detail/shared_state.hpp at line 4, boost/fiber/future/detail/shared_state_object.hpp at line 4, boost/fiber/future/detail/task_base.hpp at line 3, boost/fiber/future/detail/task_object.hpp at line 4, boost/fiber/future/future.hpp at line 4, boost/fiber/future/future_status.hpp at line 4, boost/fiber/future/packaged_task.hpp at line 4, boost/fiber/future/promise.hpp at line 4, boost/fiber/mutex.hpp at line 4, boost/fiber/operations.hpp at line 3, boost/fiber/policy.hpp at line 4, boost/fiber/recursive_mutex.hpp at line 4, boost/fiber/recursive_timed_mutex.hpp at line 4, boost/fiber/scheduler.hpp at line 3, boost/fiber/timed_mutex.hpp at line 4, boost/fiber/type.hpp at line 4
+ License text:
+ // Copyright Oliver Kowalke 2013.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fiber/algo/algorithm.hpp [1:3]
+ boost/fiber/algo/round_robin.hpp [1:3]
+ boost/fiber/all.hpp [2:4]
+ boost/fiber/barrier.hpp [2:4]
+ boost/fiber/channel_op_status.hpp [1:3]
+ boost/fiber/condition_variable.hpp [2:4]
+ boost/fiber/context.hpp [2:4]
+ boost/fiber/detail/config.hpp [2:4]
+ boost/fiber/detail/context_spmc_queue.hpp [2:4]
+ boost/fiber/detail/convert.hpp [2:4]
+ boost/fiber/detail/data.hpp [2:4]
+ boost/fiber/detail/fss.hpp [2:4]
+ boost/fiber/detail/spinlock.hpp [2:4]
+ boost/fiber/exceptions.hpp [2:4]
+ boost/fiber/fiber.hpp [2:4]
+ boost/fiber/fss.hpp [2:4]
+ boost/fiber/future.hpp [2:4]
+ boost/fiber/future/async.hpp [2:4]
+ boost/fiber/future/detail/shared_state.hpp [2:4]
+ boost/fiber/future/detail/shared_state_object.hpp [2:4]
+ boost/fiber/future/detail/task_base.hpp [1:3]
+ boost/fiber/future/detail/task_object.hpp [2:4]
+ boost/fiber/future/future.hpp [2:4]
+ boost/fiber/future/future_status.hpp [2:4]
+ boost/fiber/future/packaged_task.hpp [2:4]
+ boost/fiber/future/promise.hpp [2:4]
+ boost/fiber/mutex.hpp [2:4]
+ boost/fiber/operations.hpp [1:3]
+ boost/fiber/policy.hpp [2:4]
+ boost/fiber/recursive_mutex.hpp [2:4]
+ boost/fiber/recursive_timed_mutex.hpp [2:4]
+ boost/fiber/scheduler.hpp [1:3]
+ boost/fiber/timed_mutex.hpp [2:4]
+ boost/fiber/type.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL b79a0f43ba0efea8c1e8e8b615f4a4d3
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/random/exponential_distribution.hpp at line 7
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/random/exponential_distribution.hpp [3:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL b79d46b779b3668422685b4b8d6ded42
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/wave/whitespace_handling.hpp at line 10
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/wave/whitespace_handling.hpp [7:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL b7a8a4916fe446a46dfd7a3665c2a01f
+BELONGS ya.make
+ License text:
+ // (C) Copyright 2005-8 Anthony Williams
+ // (C) Copyright 2012 Vicente J. Botet Escriba
+ // (C) Copyright 2017 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/win32/interlocked_read.hpp [6:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL b8264448f2302918d52d12ed19e342eb
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/archive/basic_streambuf_locale_saver.hpp at line 23, boost/io/ios_state.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/archive/basic_streambuf_locale_saver.hpp [21:23]
+ boost/io/ios_state.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL b82c0e3e5bd7dc73511173cbf94198dd
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2015 Joel de Guzman
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/x3/directive.hpp [2:2]
+ boost/spirit/home/x3/support/utility/annotate_on_success.hpp [2:2]
+ boost/spirit/home/x3/support/utility/testing.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL b84fa64c3d4d6ba86bf480239d56f982
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/sort/common/deque_cnc.hpp at line 8, boost/sort/common/int_array.hpp at line 9, boost/sort/common/pivot.hpp at line 7, boost/sort/common/scheduler.hpp at line 8, boost/sort/common/spinlock.hpp at line 7, boost/sort/common/stack_cnc.hpp at line 7, boost/sort/common/time_measure.hpp at line 8, boost/sort/common/util/circular_buffer.hpp at line 7
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/sort/common/deque_cnc.hpp [6:8]
+ boost/sort/common/int_array.hpp [7:9]
+ boost/sort/common/pivot.hpp [5:7]
+ boost/sort/common/scheduler.hpp [6:8]
+ boost/sort/common/spinlock.hpp [5:7]
+ boost/sort/common/stack_cnc.hpp [5:7]
+ boost/sort/common/time_measure.hpp [6:8]
+ boost/sort/common/util/circular_buffer.hpp [5:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL b8547beed83546072ae6f84e3538f2ff
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/synchronized_value.hpp at line 4
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/synchronized_value.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL b85fc3b662d75b6c8499a3f035f4deec
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2007.
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/bindings/rr.hpp [1:3]
+ boost/math/distributions/detail/inv_discrete_quantile.hpp [1:3]
+ boost/math/distributions/find_location.hpp [1:2]
+ boost/math/distributions/find_scale.hpp [1:2]
+ boost/math/distributions/fwd.hpp [3:4]
+ boost/math/distributions/negative_binomial.hpp [3:4]
+ boost/math/distributions/pareto.hpp [1:4]
+ boost/math/policies/error_handling.hpp [1:2]
+ boost/math/policies/policy.hpp [1:3]
+ boost/math/special_functions/detail/t_distribution_inv.hpp [1:4]
+ boost/math/special_functions/expint.hpp [1:3]
+ boost/math/special_functions/modf.hpp [1:3]
+ boost/math/special_functions/round.hpp [1:3]
+ boost/math/special_functions/trunc.hpp [1:3]
+ boost/math/tools/traits.hpp [1:1]
+ boost/math/tools/user.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL b8672d715f306402af3ec5601de62c7d
+BELONGS ya.make
+ License text:
+ // Copyright (c) 1996-1998
+ // Silicon Graphics Computer Systems, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/multi_array/algorithm.hpp [18:19]
+
+KEEP COPYRIGHT_SERVICE_LABEL b907d8eaaeb4f79ea96802618880431f
+BELONGS ya.make
+ License text:
+ Copyright (c) 1998-2003 Joel de Guzman
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/core/composite/actions.hpp [2:3]
+ boost/spirit/home/classic/core/composite/composite.hpp [2:3]
+ boost/spirit/home/classic/core/impl/match.ipp [2:3]
+ boost/spirit/home/classic/core/impl/match_attr_traits.ipp [2:3]
+ boost/spirit/home/classic/core/impl/parser.ipp [2:3]
+ boost/spirit/home/classic/core/match.hpp [2:3]
+ boost/spirit/home/classic/core/non_terminal/impl/rule.ipp [2:3]
+ boost/spirit/home/classic/core/non_terminal/rule.hpp [2:3]
+ boost/spirit/home/classic/core/parser.hpp [2:3]
+ boost/spirit/home/classic/core/scanner/impl/skipper.ipp [2:3]
+ boost/spirit/home/classic/core/scanner/skipper.hpp [2:3]
+ boost/spirit/home/classic/dynamic/rule_alias.hpp [2:3]
+ boost/spirit/home/classic/dynamic/stored_rule.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL b949b0b096894aa6f558866792d8101e
+BELONGS ya.make
+ License text:
+ // Copyright 2007 Baruch Zilber
+ // Copyright 2007 Boris Gubenko
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp [7:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL b998aa996eb22879e21eb05330b58e14
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/metaparse/v1/cpp11/string.hpp at line 6, boost/metaparse/v1/cpp98/string.hpp at line 6, boost/metaparse/v1/foldl_start_with_parser.hpp at line 6, boost/metaparse/v1/foldr_start_with_parser.hpp at line 6, boost/metaparse/v1/grammar.hpp at line 6, boost/metaparse/v1/util/int_to_digit.hpp at line 6
+ License text:
+ // Copyright Abel Sinkovics (abel@sinkovics.hu) 2012.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/metaparse/v1/cpp11/string.hpp [4:6]
+ boost/metaparse/v1/cpp98/string.hpp [4:6]
+ boost/metaparse/v1/foldl_start_with_parser.hpp [4:6]
+ boost/metaparse/v1/foldr_start_with_parser.hpp [4:6]
+ boost/metaparse/v1/grammar.hpp [4:6]
+ boost/metaparse/v1/util/int_to_digit.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL b9f3ad3a077b36756db8dbac805868c6
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/intel.hpp [1:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL b9fab516a91e9614fb3222f1244b7186
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2015-2017, Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/envelope/multipoint.hpp [3:3]
+ boost/geometry/algorithms/detail/envelope/range_of_boxes.hpp [3:3]
+ boost/geometry/algorithms/detail/normalize.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/pointlike_linear.hpp [5:5]
+ boost/geometry/geometries/helper_geometry.hpp [3:3]
+ boost/geometry/util/normalize_spheroidal_box_coordinates.hpp [3:3]
+ boost/geometry/util/normalize_spheroidal_coordinates.hpp [5:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL ba5506df7530081f1cb89a1a0c3dde35
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/vector_as_graph.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL baa2e80f36559136e553f8b3692be5fb
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iostreams/detail/config/unreachable_return.hpp at line 3
+ License text:
+ // (C) Copyright 2010 Daniel James
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/iostreams/detail/config/unreachable_return.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL baa6d964f4d73195dec9a2283827c156
+BELONGS libs/thread/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/detail/lockable_wrapper.hpp at line 6, boost/thread/detail/platform_time.hpp at line 5, boost/thread/detail/thread_interruption.hpp at line 8, boost/thread/externally_locked.hpp at line 3, boost/thread/externally_locked_stream.hpp at line 3, boost/thread/is_locked_by_this_thread.hpp at line 3, boost/thread/lock_factories.hpp at line 6, boost/thread/pthread/shared_mutex.hpp at line 6, boost/thread/reverse_lock.hpp at line 6, boost/thread/scoped_thread.hpp at line 6, boost/thread/shared_lock_guard.hpp at line 6, boost/thread/synchronized_value.hpp at line 3, boost/thread/testable_mutex.hpp at line 3, boost/thread/thread_functors.hpp at line 6, boost/thread/thread_guard.hpp at line 6, boost/thread/win32/interlocked_read.hpp at line 8, libs/thread/src/future.cpp at line 3
+ License text:
+ // (C) Copyright 2012 Vicente J. Botet Escriba
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/detail/lockable_wrapper.hpp [4:4]
+ boost/thread/detail/platform_time.hpp [3:4]
+ boost/thread/detail/thread_interruption.hpp [6:7]
+ boost/thread/externally_locked.hpp [1:3]
+ boost/thread/externally_locked_stream.hpp [1:3]
+ boost/thread/is_locked_by_this_thread.hpp [1:3]
+ boost/thread/lock_factories.hpp [4:4]
+ boost/thread/pthread/shared_mutex.hpp [4:5]
+ boost/thread/reverse_lock.hpp [4:4]
+ boost/thread/scoped_thread.hpp [4:5]
+ boost/thread/shared_lock_guard.hpp [4:4]
+ boost/thread/synchronized_value.hpp [1:4]
+ boost/thread/testable_mutex.hpp [1:3]
+ boost/thread/thread_functors.hpp [4:5]
+ boost/thread/thread_guard.hpp [4:5]
+ boost/thread/win32/interlocked_read.hpp [6:8]
+ libs/thread/src/future.cpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL baf28d14712b3b53f3b722d4d80fdb6c
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/pending/container_traits.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/pending/container_traits.hpp [1:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL bb17343149a36c684ba9e6f67a8113f6
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2006 Johan Rade
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/detail/fp_traits.hpp [6:6]
+ boost/spirit/home/support/detail/math/detail/fp_traits.hpp [6:6]
+ boost/spirit/home/support/detail/math/fpclassify.hpp [6:6]
+ boost/spirit/home/support/detail/math/signbit.hpp [6:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL bb55147ae1dc454d4781bbd8a6e366f9
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/function.hpp at line 5, boost/last_value.hpp at line 5, boost/signals/signal0.hpp at line 5, boost/signals/signal1.hpp at line 5, boost/signals/signal10.hpp at line 5, boost/signals/signal2.hpp at line 5, boost/signals/signal3.hpp at line 5, boost/signals/signal4.hpp at line 5, boost/signals/signal5.hpp at line 5, boost/signals/signal6.hpp at line 5, boost/signals/signal7.hpp at line 5, boost/signals/signal8.hpp at line 5, boost/signals/signal9.hpp at line 5, boost/signals2/last_value.hpp at line 5, boost/signals2/optional_last_value.hpp at line 5, boost/visit_each.hpp at line 5
+ License text:
+ // Copyright Douglas Gregor 2001-2003. Use, modification and
+ // distribution is subject to the Boost Software License, Version
+ // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/function.hpp [3:5]
+ boost/last_value.hpp [3:5]
+ boost/signals/signal0.hpp [3:5]
+ boost/signals/signal1.hpp [3:5]
+ boost/signals/signal10.hpp [3:5]
+ boost/signals/signal2.hpp [3:5]
+ boost/signals/signal3.hpp [3:5]
+ boost/signals/signal4.hpp [3:5]
+ boost/signals/signal5.hpp [3:5]
+ boost/signals/signal6.hpp [3:5]
+ boost/signals/signal7.hpp [3:5]
+ boost/signals/signal8.hpp [3:5]
+ boost/signals/signal9.hpp [3:5]
+ boost/signals2/last_value.hpp [3:6]
+ boost/signals2/optional_last_value.hpp [3:6]
+ boost/visit_each.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL bb7b884ff256f4037b889da384920a8c
+BELONGS ya.make
+ License text:
+ Copyright 2011-2013 Mario Mulansky
+ Copyright 2011-2012 Karsten Ahnert
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/algebra/array_algebra.hpp [13:14]
+ boost/numeric/odeint/algebra/fusion_algebra.hpp [9:10]
+ boost/numeric/odeint/stepper/adams_bashforth.hpp [10:13]
+ boost/numeric/odeint/stepper/adams_bashforth_moulton.hpp [9:11]
+ boost/numeric/odeint/stepper/adams_moulton.hpp [10:12]
+ boost/numeric/odeint/stepper/base/symplectic_rkn_stepper_base.hpp [9:11]
+ boost/numeric/odeint/stepper/bulirsch_stoer.hpp [12:14]
+ boost/numeric/odeint/stepper/detail/generic_rk_algorithm.hpp [9:11]
+ boost/numeric/odeint/stepper/explicit_error_generic_rk.hpp [9:11]
+ boost/numeric/odeint/stepper/explicit_generic_rk.hpp [9:11]
+ boost/numeric/odeint/stepper/modified_midpoint.hpp [9:11]
+ boost/numeric/odeint/stepper/runge_kutta4.hpp [9:10]
+ boost/numeric/odeint/stepper/runge_kutta_cash_karp54.hpp [9:10]
+ boost/numeric/odeint/stepper/runge_kutta_fehlberg78.hpp [9:10]
+ boost/numeric/odeint/stepper/symplectic_euler.hpp [9:10]
+ boost/numeric/odeint/stepper/symplectic_rkn_sb3a_mclachlan.hpp [9:10]
+ boost/numeric/odeint/util/ublas_wrapper.hpp [9:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL bb8609171f692ca0c3e57eded453579a
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
+ // Copyright (c) 2007, 2014 Peter Dimov
+ // Copyright (c) Beman Dawes 2011
+ // Copyright (c) 2015 Ion Gaztanaga
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/assert.hpp [8:11]
+ boost/geometry/core/assert.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL bbcd1acfe8595de9d40645962088e6b2
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/detail/suffix.hpp at line 14, boost/integer/static_log2.hpp at line 13
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/detail/suffix.hpp [4:14]
+ boost/integer/static_log2.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL bbcd3b9c129140dc13e07157844ae740
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2015 Muhammad Junaid Muzammil <mjunaidmuzammil@gmail.com>
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/compute/random/threefry_engine.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL bc186e328c5eaa608188302749112295
+BELONGS libs/date_time/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/date_time/compiler_config.hpp at line 6, boost/date_time/date_formatting.hpp at line 6, boost/date_time/date_formatting_limited.hpp at line 6, boost/date_time/gregorian/gregorian.hpp at line 6, boost/date_time/period_formatter.hpp at line 7, boost/date_time/period_parser.hpp at line 7, boost/date_time/posix_time/posix_time_legacy_io.hpp at line 6, boost/date_time/posix_time/time_formatters.hpp at line 6, libs/date_time/src/gregorian/greg_names.hpp at line 3, libs/date_time/src/gregorian/greg_weekday.cpp at line 3, libs/date_time/src/posix_time/posix_time_types.cpp at line 4
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/date_time/compiler_config.hpp [4:8]
+ boost/date_time/date_formatting.hpp [4:6]
+ boost/date_time/date_formatting_limited.hpp [4:6]
+ boost/date_time/gregorian/gregorian.hpp [4:6]
+ boost/date_time/period_formatter.hpp [5:7]
+ boost/date_time/period_parser.hpp [5:7]
+ boost/date_time/posix_time/posix_time_legacy_io.hpp [4:6]
+ boost/date_time/posix_time/time_formatters.hpp [4:6]
+ libs/date_time/src/gregorian/greg_names.hpp [1:3]
+ libs/date_time/src/gregorian/greg_weekday.cpp [1:3]
+ libs/date_time/src/posix_time/posix_time_types.cpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL bc274ba061b1240f436aa4dc92d69ea1
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/random.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/multiprecision/random.hpp [2:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL bc37ce97fb02b60eb85225c35a229933
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iterator.hpp at line 3
+ License text:
+ // (C) Copyright Beman Dawes 2000. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/iterator.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL bc7bca5db7fc6833cadc5abca6abb6fb
+BELONGS ya.make
+ License text:
+ * Copyright (c) 2009-2012, Marco Guazzone
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/ublas/operation/num_rows.hpp [8:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL bcbb3a6b632caa261d7292128b881a3f
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signals/connection.hpp at line 5, boost/signals/detail/named_slot_map.hpp at line 5, boost/signals/detail/signal_base.hpp at line 5, boost/signals/detail/signals_common.hpp at line 5, boost/signals/detail/slot_call_iterator.hpp at line 5, boost/signals/signal_template.hpp at line 5, boost/signals/slot.hpp at line 5, boost/signals/trackable.hpp at line 5, boost/signals2/detail/preprocessed_arg_type.hpp at line 5, boost/signals2/detail/result_type_wrapper.hpp at line 5, boost/signals2/detail/signals_common.hpp at line 5, boost/signals2/detail/slot_call_iterator.hpp at line 5, boost/signals2/detail/slot_template.hpp at line 5, boost/signals2/detail/tracked_objects_visitor.hpp at line 5, boost/signals2/preprocessed_slot.hpp at line 5, boost/signals2/slot_base.hpp at line 5, boost/signals2/trackable.hpp at line 5
+ License text:
+ // Copyright Douglas Gregor 2001-2004. Use, modification and
+ // distribution is subject to the Boost Software License, Version
+ // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/signals/connection.hpp [3:5]
+ boost/signals/detail/named_slot_map.hpp [3:5]
+ boost/signals/detail/signal_base.hpp [3:5]
+ boost/signals/detail/signals_common.hpp [3:5]
+ boost/signals/detail/slot_call_iterator.hpp [3:5]
+ boost/signals/signal_template.hpp [3:5]
+ boost/signals/slot.hpp [3:5]
+ boost/signals/trackable.hpp [3:5]
+ boost/signals2/detail/preprocessed_arg_type.hpp [3:7]
+ boost/signals2/detail/result_type_wrapper.hpp [3:6]
+ boost/signals2/detail/signals_common.hpp [3:6]
+ boost/signals2/detail/slot_call_iterator.hpp [3:6]
+ boost/signals2/detail/slot_template.hpp [3:7]
+ boost/signals2/detail/tracked_objects_visitor.hpp [3:7]
+ boost/signals2/preprocessed_slot.hpp [3:7]
+ boost/signals2/slot_base.hpp [3:7]
+ boost/signals2/trackable.hpp [3:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL bcf9526e6a123308486499aa33ea3d65
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/stable_vector.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2008-2015. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/container/stable_vector.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL bd245b6a4002991b18b7e17769d392c9
+BELONGS ya.make
+ License text:
+ Copyright (c) 2007-2009: Joachim Faulhaber
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/icl/detail/notate.hpp [2:2]
+ boost/icl/functors.hpp [2:2]
+ boost/icl/separate_interval_set.hpp [2:2]
+ boost/icl/split_interval_set.hpp [2:3]
+ boost/icl/type_traits/to_string.hpp [2:2]
+ boost/icl/type_traits/type_to_string.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL bd2c815ca0e6c7ee8e23105e3a910fe1
+BELONGS ya.make
+ License text:
+ // copyright (c) 2005
+ // troy d. straszheim <troy@resophonic.com>
+ // http://www.resophonic.com
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/serialization/variant.hpp [12:14]
+
+KEEP COPYRIGHT_SERVICE_LABEL bd50790614a99115ac76f35dc0c47a91
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/detail/advanced_insert_int.hpp at line 5, boost/container/detail/variadic_templates_tools.hpp at line 5, boost/container/node_allocator.hpp at line 5, boost/intrusive/treap.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2008-2013. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/container/detail/advanced_insert_int.hpp [3:5]
+ boost/container/detail/variadic_templates_tools.hpp [3:5]
+ boost/container/node_allocator.hpp [3:5]
+ boost/intrusive/treap.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL bd75bfad6ac2e0a0d39453ffda173eae
+BELONGS ya.make
+ License text:
+ // Copyright (c) Antony Polukhin, 2013-2014.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_index/detail/ctti_register_class.hpp [2:2]
+ boost/type_index/detail/stl_register_class.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL bda792b52a7a784797c1280c82f443a0
+BELONGS libs/python/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/reverse_graph.hpp at line 3, boost/python/detail/config.hpp at line 3, boost/python/detail/none.hpp at line 3, boost/python/detail/wrap_python.hpp at line 3, boost/python/errors.hpp at line 3, libs/python/src/module.cpp at line 3
+ License text:
+ // (C) Copyright David Abrahams 2000.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/reverse_graph.hpp [1:3]
+ boost/python/detail/config.hpp [1:3]
+ boost/python/detail/none.hpp [1:3]
+ boost/python/detail/wrap_python.hpp [1:3]
+ boost/python/errors.hpp [1:3]
+ libs/python/src/module.cpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL bda851fc939db851e4440dc9806f0d16
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2003, 2008 Fernando Luis Cacciola Carballal.
+ // Copyright (C) 2014-2016 Andrzej Krzemienski.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/optional/detail/old_optional_implementation.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL bdb654e3fbbec678064a117bc379b41b
+BELONGS libs/context/ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: libs/context/src/asm/jump_combined_sysv_macho_gas.S at line 4, libs/context/src/asm/jump_i386_x86_64_sysv_macho_gas.S at line 4, libs/context/src/asm/jump_ppc32_ppc64_sysv_macho_gas.S at line 4, libs/context/src/asm/make_combined_sysv_macho_gas.S at line 4, libs/context/src/asm/make_i386_x86_64_sysv_macho_gas.S at line 4, libs/context/src/asm/make_ppc32_ppc64_sysv_macho_gas.S at line 4, libs/context/src/asm/ontop_combined_sysv_macho_gas.S at line 4, libs/context/src/asm/ontop_i386_x86_64_sysv_macho_gas.S at line 4, libs/context/src/asm/ontop_ppc32_ppc64_sysv_macho_gas.S at line 4
+ License text:
+ Copyright Sergue E. Leontiev 2013.
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ libs/context/src/asm/jump_combined_sysv_macho_gas.S [2:4]
+ libs/context/src/asm/jump_i386_x86_64_sysv_macho_gas.S [2:4]
+ libs/context/src/asm/jump_ppc32_ppc64_sysv_macho_gas.S [2:4]
+ libs/context/src/asm/make_combined_sysv_macho_gas.S [2:4]
+ libs/context/src/asm/make_i386_x86_64_sysv_macho_gas.S [2:4]
+ libs/context/src/asm/make_ppc32_ppc64_sysv_macho_gas.S [2:4]
+ libs/context/src/asm/ontop_combined_sysv_macho_gas.S [2:4]
+ libs/context/src/asm/ontop_i386_x86_64_sysv_macho_gas.S [2:4]
+ libs/context/src/asm/ontop_ppc32_ppc64_sysv_macho_gas.S [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL bdcd6bb2eda5f6f01984cfe4c78ef425
+BELONGS ya.make
+ License text:
+ Copyright (c) 1998-2003 Joel de Guzman
+ Copyright (c) 2003 Vaclav Vesely
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/core/composite/no_actions.hpp [2:4]
+ boost/spirit/home/classic/dynamic/lazy.hpp [2:4]
+ boost/spirit/home/classic/utility/distinct.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL bdd38c252695f513ef7a120c9b662f31
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2016-2017, Oracle and/or its affiliates.
+ // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/formulas/geographic.hpp [3:4]
+ boost/geometry/strategies/geographic/distance_cross_track.hpp [3:3]
+ boost/geometry/strategies/geographic/intersection.hpp [5:6]
+ boost/geometry/strategies/geographic/intersection_elliptic.hpp [3:4]
+ boost/geometry/strategies/intersection.hpp [3:4]
+ boost/geometry/strategies/spherical/intersection.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL bdde4763d6a57dbe14d89f4fed53a008
+BELONGS ya.make
+ License text:
+ // Copyright Beman Dawes 2002
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/filesystem/fstream.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL bdeb97af7bd5bc8e73d3c9fc21c8f21f
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2000, 2001 Stephen Cleary
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/pool/object_pool.hpp [1:1]
+ boost/pool/pool.hpp [1:1]
+ boost/pool/pool_alloc.hpp [1:2]
+ boost/pool/poolfwd.hpp [1:1]
+ boost/pool/simple_segregated_storage.hpp [1:1]
+ boost/pool/singleton_pool.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL be0cf01b578e63b364470b7332f83307
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2010, 2012.
+ // Copyright Paul A. Bristow 2011, 2012.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/constants/calculate_constants.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL be44267cfc427e35019ccaf97e96aacb
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/comeau.hpp [1:8]
+ boost/config/compiler/intel.hpp [1:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL be5c67e7ba15e8061895f6a1cea1c23b
+BELONGS ya.make
+ License text:
+ // (C) Copyright Eric Jourdanneau, Joel Falcou 2010
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/bindings/rr.hpp [1:3]
- boost/math/distributions/detail/inv_discrete_quantile.hpp [1:3]
- boost/math/distributions/find_location.hpp [1:2]
- boost/math/distributions/find_scale.hpp [1:2]
- boost/math/distributions/fwd.hpp [3:4]
- boost/math/distributions/negative_binomial.hpp [3:4]
- boost/math/distributions/pareto.hpp [1:4]
- boost/math/policies/error_handling.hpp [1:2]
- boost/math/policies/policy.hpp [1:3]
- boost/math/special_functions/detail/t_distribution_inv.hpp [1:4]
- boost/math/special_functions/expint.hpp [1:3]
- boost/math/special_functions/modf.hpp [1:3]
- boost/math/special_functions/round.hpp [1:3]
- boost/math/special_functions/trunc.hpp [1:3]
- boost/math/tools/traits.hpp [1:1]
- boost/math/tools/user.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL b8672d715f306402af3ec5601de62c7d
-BELONGS ya.make
- License text:
- // Copyright (c) 1996-1998
- // Silicon Graphics Computer Systems, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/multi_array/algorithm.hpp [18:19]
-
-KEEP COPYRIGHT_SERVICE_LABEL b907d8eaaeb4f79ea96802618880431f
-BELONGS ya.make
- License text:
- Copyright (c) 1998-2003 Joel de Guzman
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/core/composite/actions.hpp [2:3]
- boost/spirit/home/classic/core/composite/composite.hpp [2:3]
- boost/spirit/home/classic/core/impl/match.ipp [2:3]
- boost/spirit/home/classic/core/impl/match_attr_traits.ipp [2:3]
- boost/spirit/home/classic/core/impl/parser.ipp [2:3]
- boost/spirit/home/classic/core/match.hpp [2:3]
- boost/spirit/home/classic/core/non_terminal/impl/rule.ipp [2:3]
- boost/spirit/home/classic/core/non_terminal/rule.hpp [2:3]
- boost/spirit/home/classic/core/parser.hpp [2:3]
- boost/spirit/home/classic/core/scanner/impl/skipper.ipp [2:3]
- boost/spirit/home/classic/core/scanner/skipper.hpp [2:3]
- boost/spirit/home/classic/dynamic/rule_alias.hpp [2:3]
- boost/spirit/home/classic/dynamic/stored_rule.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL b949b0b096894aa6f558866792d8101e
-BELONGS ya.make
- License text:
- // Copyright 2007 Baruch Zilber
- // Copyright 2007 Boris Gubenko
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp [7:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL b998aa996eb22879e21eb05330b58e14
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/metaparse/v1/cpp11/string.hpp at line 6, boost/metaparse/v1/cpp98/string.hpp at line 6, boost/metaparse/v1/foldl_start_with_parser.hpp at line 6, boost/metaparse/v1/foldr_start_with_parser.hpp at line 6, boost/metaparse/v1/grammar.hpp at line 6, boost/metaparse/v1/util/int_to_digit.hpp at line 6
- License text:
- // Copyright Abel Sinkovics (abel@sinkovics.hu) 2012.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/metaparse/v1/cpp11/string.hpp [4:6]
- boost/metaparse/v1/cpp98/string.hpp [4:6]
- boost/metaparse/v1/foldl_start_with_parser.hpp [4:6]
- boost/metaparse/v1/foldr_start_with_parser.hpp [4:6]
- boost/metaparse/v1/grammar.hpp [4:6]
- boost/metaparse/v1/util/int_to_digit.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL b9f3ad3a077b36756db8dbac805868c6
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/intel.hpp [1:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL b9fab516a91e9614fb3222f1244b7186
-BELONGS ya.make
- License text:
- // Copyright (c) 2015-2017, Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/envelope/multipoint.hpp [3:3]
- boost/geometry/algorithms/detail/envelope/range_of_boxes.hpp [3:3]
- boost/geometry/algorithms/detail/normalize.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/pointlike_linear.hpp [5:5]
- boost/geometry/geometries/helper_geometry.hpp [3:3]
- boost/geometry/util/normalize_spheroidal_box_coordinates.hpp [3:3]
- boost/geometry/util/normalize_spheroidal_coordinates.hpp [5:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL ba5506df7530081f1cb89a1a0c3dde35
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/vector_as_graph.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL baa2e80f36559136e553f8b3692be5fb
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iostreams/detail/config/unreachable_return.hpp at line 3
- License text:
- // (C) Copyright 2010 Daniel James
- // Distributed under the Boost Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/iostreams/detail/config/unreachable_return.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL baa6d964f4d73195dec9a2283827c156
-BELONGS libs/thread/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/detail/lockable_wrapper.hpp at line 6, boost/thread/detail/platform_time.hpp at line 5, boost/thread/detail/thread_interruption.hpp at line 8, boost/thread/externally_locked.hpp at line 3, boost/thread/externally_locked_stream.hpp at line 3, boost/thread/is_locked_by_this_thread.hpp at line 3, boost/thread/lock_factories.hpp at line 6, boost/thread/pthread/shared_mutex.hpp at line 6, boost/thread/reverse_lock.hpp at line 6, boost/thread/scoped_thread.hpp at line 6, boost/thread/shared_lock_guard.hpp at line 6, boost/thread/synchronized_value.hpp at line 3, boost/thread/testable_mutex.hpp at line 3, boost/thread/thread_functors.hpp at line 6, boost/thread/thread_guard.hpp at line 6, boost/thread/win32/interlocked_read.hpp at line 8, libs/thread/src/future.cpp at line 3
- License text:
- // (C) Copyright 2012 Vicente J. Botet Escriba
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/detail/lockable_wrapper.hpp [4:4]
- boost/thread/detail/platform_time.hpp [3:4]
- boost/thread/detail/thread_interruption.hpp [6:7]
- boost/thread/externally_locked.hpp [1:3]
- boost/thread/externally_locked_stream.hpp [1:3]
- boost/thread/is_locked_by_this_thread.hpp [1:3]
- boost/thread/lock_factories.hpp [4:4]
- boost/thread/pthread/shared_mutex.hpp [4:5]
- boost/thread/reverse_lock.hpp [4:4]
- boost/thread/scoped_thread.hpp [4:5]
- boost/thread/shared_lock_guard.hpp [4:4]
- boost/thread/synchronized_value.hpp [1:4]
- boost/thread/testable_mutex.hpp [1:3]
- boost/thread/thread_functors.hpp [4:5]
- boost/thread/thread_guard.hpp [4:5]
- boost/thread/win32/interlocked_read.hpp [6:8]
- libs/thread/src/future.cpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL baf28d14712b3b53f3b722d4d80fdb6c
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/pending/container_traits.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/pending/container_traits.hpp [1:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL bb17343149a36c684ba9e6f67a8113f6
-BELONGS ya.make
- License text:
- // Copyright (c) 2006 Johan Rade
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/detail/fp_traits.hpp [6:6]
- boost/spirit/home/support/detail/math/detail/fp_traits.hpp [6:6]
- boost/spirit/home/support/detail/math/fpclassify.hpp [6:6]
- boost/spirit/home/support/detail/math/signbit.hpp [6:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL bb55147ae1dc454d4781bbd8a6e366f9
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/function.hpp at line 5, boost/last_value.hpp at line 5, boost/signals/signal0.hpp at line 5, boost/signals/signal1.hpp at line 5, boost/signals/signal10.hpp at line 5, boost/signals/signal2.hpp at line 5, boost/signals/signal3.hpp at line 5, boost/signals/signal4.hpp at line 5, boost/signals/signal5.hpp at line 5, boost/signals/signal6.hpp at line 5, boost/signals/signal7.hpp at line 5, boost/signals/signal8.hpp at line 5, boost/signals/signal9.hpp at line 5, boost/signals2/last_value.hpp at line 5, boost/signals2/optional_last_value.hpp at line 5, boost/visit_each.hpp at line 5
- License text:
- // Copyright Douglas Gregor 2001-2003. Use, modification and
- // distribution is subject to the Boost Software License, Version
- // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/function.hpp [3:5]
- boost/last_value.hpp [3:5]
- boost/signals/signal0.hpp [3:5]
- boost/signals/signal1.hpp [3:5]
- boost/signals/signal10.hpp [3:5]
- boost/signals/signal2.hpp [3:5]
- boost/signals/signal3.hpp [3:5]
- boost/signals/signal4.hpp [3:5]
- boost/signals/signal5.hpp [3:5]
- boost/signals/signal6.hpp [3:5]
- boost/signals/signal7.hpp [3:5]
- boost/signals/signal8.hpp [3:5]
- boost/signals/signal9.hpp [3:5]
- boost/signals2/last_value.hpp [3:6]
- boost/signals2/optional_last_value.hpp [3:6]
- boost/visit_each.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL bb7b884ff256f4037b889da384920a8c
-BELONGS ya.make
- License text:
- Copyright 2011-2013 Mario Mulansky
- Copyright 2011-2012 Karsten Ahnert
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/algebra/array_algebra.hpp [13:14]
- boost/numeric/odeint/algebra/fusion_algebra.hpp [9:10]
- boost/numeric/odeint/stepper/adams_bashforth.hpp [10:13]
- boost/numeric/odeint/stepper/adams_bashforth_moulton.hpp [9:11]
- boost/numeric/odeint/stepper/adams_moulton.hpp [10:12]
- boost/numeric/odeint/stepper/base/symplectic_rkn_stepper_base.hpp [9:11]
- boost/numeric/odeint/stepper/bulirsch_stoer.hpp [12:14]
- boost/numeric/odeint/stepper/detail/generic_rk_algorithm.hpp [9:11]
- boost/numeric/odeint/stepper/explicit_error_generic_rk.hpp [9:11]
- boost/numeric/odeint/stepper/explicit_generic_rk.hpp [9:11]
- boost/numeric/odeint/stepper/modified_midpoint.hpp [9:11]
- boost/numeric/odeint/stepper/runge_kutta4.hpp [9:10]
- boost/numeric/odeint/stepper/runge_kutta_cash_karp54.hpp [9:10]
- boost/numeric/odeint/stepper/runge_kutta_fehlberg78.hpp [9:10]
- boost/numeric/odeint/stepper/symplectic_euler.hpp [9:10]
- boost/numeric/odeint/stepper/symplectic_rkn_sb3a_mclachlan.hpp [9:10]
- boost/numeric/odeint/util/ublas_wrapper.hpp [9:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL bb8609171f692ca0c3e57eded453579a
-BELONGS ya.make
- License text:
- // Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
- // Copyright (c) 2007, 2014 Peter Dimov
- // Copyright (c) Beman Dawes 2011
- // Copyright (c) 2015 Ion Gaztanaga
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/assert.hpp [8:11]
- boost/geometry/core/assert.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL bbcd1acfe8595de9d40645962088e6b2
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/detail/suffix.hpp at line 14, boost/integer/static_log2.hpp at line 13
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/detail/suffix.hpp [4:14]
- boost/integer/static_log2.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL bbcd3b9c129140dc13e07157844ae740
-BELONGS ya.make
- License text:
- // Copyright (c) 2015 Muhammad Junaid Muzammil <mjunaidmuzammil@gmail.com>
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/compute/random/threefry_engine.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL bc186e328c5eaa608188302749112295
-BELONGS libs/date_time/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/date_time/compiler_config.hpp at line 6, boost/date_time/date_formatting.hpp at line 6, boost/date_time/date_formatting_limited.hpp at line 6, boost/date_time/gregorian/gregorian.hpp at line 6, boost/date_time/period_formatter.hpp at line 7, boost/date_time/period_parser.hpp at line 7, boost/date_time/posix_time/posix_time_legacy_io.hpp at line 6, boost/date_time/posix_time/time_formatters.hpp at line 6, libs/date_time/src/gregorian/greg_names.hpp at line 3, libs/date_time/src/gregorian/greg_weekday.cpp at line 3, libs/date_time/src/posix_time/posix_time_types.cpp at line 4
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/date_time/compiler_config.hpp [4:8]
- boost/date_time/date_formatting.hpp [4:6]
- boost/date_time/date_formatting_limited.hpp [4:6]
- boost/date_time/gregorian/gregorian.hpp [4:6]
- boost/date_time/period_formatter.hpp [5:7]
- boost/date_time/period_parser.hpp [5:7]
- boost/date_time/posix_time/posix_time_legacy_io.hpp [4:6]
- boost/date_time/posix_time/time_formatters.hpp [4:6]
- libs/date_time/src/gregorian/greg_names.hpp [1:3]
- libs/date_time/src/gregorian/greg_weekday.cpp [1:3]
- libs/date_time/src/posix_time/posix_time_types.cpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL bc274ba061b1240f436aa4dc92d69ea1
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/random.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/multiprecision/random.hpp [2:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL bc37ce97fb02b60eb85225c35a229933
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iterator.hpp at line 3
- License text:
- // (C) Copyright Beman Dawes 2000. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/iterator.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL bc7bca5db7fc6833cadc5abca6abb6fb
-BELONGS ya.make
- License text:
- * Copyright (c) 2009-2012, Marco Guazzone
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/ublas/operation/num_rows.hpp [8:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL bcbb3a6b632caa261d7292128b881a3f
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signals/connection.hpp at line 5, boost/signals/detail/named_slot_map.hpp at line 5, boost/signals/detail/signal_base.hpp at line 5, boost/signals/detail/signals_common.hpp at line 5, boost/signals/detail/slot_call_iterator.hpp at line 5, boost/signals/signal_template.hpp at line 5, boost/signals/slot.hpp at line 5, boost/signals/trackable.hpp at line 5, boost/signals2/detail/preprocessed_arg_type.hpp at line 5, boost/signals2/detail/result_type_wrapper.hpp at line 5, boost/signals2/detail/signals_common.hpp at line 5, boost/signals2/detail/slot_call_iterator.hpp at line 5, boost/signals2/detail/slot_template.hpp at line 5, boost/signals2/detail/tracked_objects_visitor.hpp at line 5, boost/signals2/preprocessed_slot.hpp at line 5, boost/signals2/slot_base.hpp at line 5, boost/signals2/trackable.hpp at line 5
- License text:
- // Copyright Douglas Gregor 2001-2004. Use, modification and
- // distribution is subject to the Boost Software License, Version
- // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/signals/connection.hpp [3:5]
- boost/signals/detail/named_slot_map.hpp [3:5]
- boost/signals/detail/signal_base.hpp [3:5]
- boost/signals/detail/signals_common.hpp [3:5]
- boost/signals/detail/slot_call_iterator.hpp [3:5]
- boost/signals/signal_template.hpp [3:5]
- boost/signals/slot.hpp [3:5]
- boost/signals/trackable.hpp [3:5]
- boost/signals2/detail/preprocessed_arg_type.hpp [3:7]
- boost/signals2/detail/result_type_wrapper.hpp [3:6]
- boost/signals2/detail/signals_common.hpp [3:6]
- boost/signals2/detail/slot_call_iterator.hpp [3:6]
- boost/signals2/detail/slot_template.hpp [3:7]
- boost/signals2/detail/tracked_objects_visitor.hpp [3:7]
- boost/signals2/preprocessed_slot.hpp [3:7]
- boost/signals2/slot_base.hpp [3:7]
- boost/signals2/trackable.hpp [3:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL bcf9526e6a123308486499aa33ea3d65
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/stable_vector.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2008-2015. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/container/stable_vector.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL bd245b6a4002991b18b7e17769d392c9
-BELONGS ya.make
- License text:
- Copyright (c) 2007-2009: Joachim Faulhaber
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/icl/detail/notate.hpp [2:2]
- boost/icl/functors.hpp [2:2]
- boost/icl/separate_interval_set.hpp [2:2]
- boost/icl/split_interval_set.hpp [2:3]
- boost/icl/type_traits/to_string.hpp [2:2]
- boost/icl/type_traits/type_to_string.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL bd2c815ca0e6c7ee8e23105e3a910fe1
-BELONGS ya.make
- License text:
- // copyright (c) 2005
- // troy d. straszheim <troy@resophonic.com>
- // http://www.resophonic.com
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/serialization/variant.hpp [12:14]
-
-KEEP COPYRIGHT_SERVICE_LABEL bd50790614a99115ac76f35dc0c47a91
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/detail/advanced_insert_int.hpp at line 5, boost/container/detail/variadic_templates_tools.hpp at line 5, boost/container/node_allocator.hpp at line 5, boost/intrusive/treap.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2008-2013. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/container/detail/advanced_insert_int.hpp [3:5]
- boost/container/detail/variadic_templates_tools.hpp [3:5]
- boost/container/node_allocator.hpp [3:5]
- boost/intrusive/treap.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL bd75bfad6ac2e0a0d39453ffda173eae
-BELONGS ya.make
- License text:
- // Copyright (c) Antony Polukhin, 2013-2014.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_index/detail/ctti_register_class.hpp [2:2]
- boost/type_index/detail/stl_register_class.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL bda792b52a7a784797c1280c82f443a0
-BELONGS libs/python/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/reverse_graph.hpp at line 3, boost/python/detail/config.hpp at line 3, boost/python/detail/none.hpp at line 3, boost/python/detail/wrap_python.hpp at line 3, boost/python/errors.hpp at line 3, libs/python/src/module.cpp at line 3
- License text:
- // (C) Copyright David Abrahams 2000.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/reverse_graph.hpp [1:3]
- boost/python/detail/config.hpp [1:3]
- boost/python/detail/none.hpp [1:3]
- boost/python/detail/wrap_python.hpp [1:3]
- boost/python/errors.hpp [1:3]
- libs/python/src/module.cpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL bda851fc939db851e4440dc9806f0d16
-BELONGS ya.make
- License text:
- // Copyright (C) 2003, 2008 Fernando Luis Cacciola Carballal.
- // Copyright (C) 2014-2016 Andrzej Krzemienski.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/optional/detail/old_optional_implementation.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL bdb654e3fbbec678064a117bc379b41b
-BELONGS libs/context/ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: libs/context/src/asm/jump_combined_sysv_macho_gas.S at line 4, libs/context/src/asm/jump_i386_x86_64_sysv_macho_gas.S at line 4, libs/context/src/asm/jump_ppc32_ppc64_sysv_macho_gas.S at line 4, libs/context/src/asm/make_combined_sysv_macho_gas.S at line 4, libs/context/src/asm/make_i386_x86_64_sysv_macho_gas.S at line 4, libs/context/src/asm/make_ppc32_ppc64_sysv_macho_gas.S at line 4, libs/context/src/asm/ontop_combined_sysv_macho_gas.S at line 4, libs/context/src/asm/ontop_i386_x86_64_sysv_macho_gas.S at line 4, libs/context/src/asm/ontop_ppc32_ppc64_sysv_macho_gas.S at line 4
- License text:
- Copyright Sergue E. Leontiev 2013.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- libs/context/src/asm/jump_combined_sysv_macho_gas.S [2:4]
- libs/context/src/asm/jump_i386_x86_64_sysv_macho_gas.S [2:4]
- libs/context/src/asm/jump_ppc32_ppc64_sysv_macho_gas.S [2:4]
- libs/context/src/asm/make_combined_sysv_macho_gas.S [2:4]
- libs/context/src/asm/make_i386_x86_64_sysv_macho_gas.S [2:4]
- libs/context/src/asm/make_ppc32_ppc64_sysv_macho_gas.S [2:4]
- libs/context/src/asm/ontop_combined_sysv_macho_gas.S [2:4]
- libs/context/src/asm/ontop_i386_x86_64_sysv_macho_gas.S [2:4]
- libs/context/src/asm/ontop_ppc32_ppc64_sysv_macho_gas.S [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL bdcd6bb2eda5f6f01984cfe4c78ef425
-BELONGS ya.make
- License text:
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2003 Vaclav Vesely
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/core/composite/no_actions.hpp [2:4]
- boost/spirit/home/classic/dynamic/lazy.hpp [2:4]
- boost/spirit/home/classic/utility/distinct.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL bdd38c252695f513ef7a120c9b662f31
-BELONGS ya.make
- License text:
- // Copyright (c) 2016-2017, Oracle and/or its affiliates.
- // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/formulas/geographic.hpp [3:4]
- boost/geometry/strategies/geographic/distance_cross_track.hpp [3:3]
- boost/geometry/strategies/geographic/intersection.hpp [5:6]
- boost/geometry/strategies/geographic/intersection_elliptic.hpp [3:4]
- boost/geometry/strategies/intersection.hpp [3:4]
- boost/geometry/strategies/spherical/intersection.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL bdde4763d6a57dbe14d89f4fed53a008
-BELONGS ya.make
- License text:
- // Copyright Beman Dawes 2002
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/filesystem/fstream.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL bdeb97af7bd5bc8e73d3c9fc21c8f21f
-BELONGS ya.make
- License text:
- // Copyright (C) 2000, 2001 Stephen Cleary
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/pool/object_pool.hpp [1:1]
- boost/pool/pool.hpp [1:1]
- boost/pool/pool_alloc.hpp [1:2]
- boost/pool/poolfwd.hpp [1:1]
- boost/pool/simple_segregated_storage.hpp [1:1]
- boost/pool/singleton_pool.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL be0cf01b578e63b364470b7332f83307
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2010, 2012.
- // Copyright Paul A. Bristow 2011, 2012.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/constants/calculate_constants.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL be44267cfc427e35019ccaf97e96aacb
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/comeau.hpp [1:8]
- boost/config/compiler/intel.hpp [1:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL be5c67e7ba15e8061895f6a1cea1c23b
-BELONGS ya.make
- License text:
- // (C) Copyright Eric Jourdanneau, Joel Falcou 2010
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/nvcc.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL beaaefd3c7a2121b29605a685da1b68f
-BELONGS ya.make
- License text:
- // Copyright 2012 Steven Watanabe
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_erasure/detail/check_call.hpp [3:3]
- boost/type_erasure/detail/check_map.hpp [3:3]
- boost/type_erasure/detail/const.hpp [3:3]
- boost/type_erasure/detail/get_signature.hpp [3:3]
- boost/type_erasure/detail/instantiate.hpp [3:3]
- boost/type_erasure/detail/macro.hpp [3:3]
- boost/type_erasure/detail/null.hpp [3:3]
- boost/type_erasure/free.hpp [3:3]
- boost/type_erasure/is_empty.hpp [3:3]
- boost/type_erasure/is_subconcept.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL bed6ffae4a6ad5065eb6fafd56f354c5
-BELONGS ya.make
- License text:
- Copyright (c) 2010-2011: Joachim Faulhaber
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/icl/type_traits/infinity.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL bf1a568c053500311f215d9d3eb34330
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/get_max_size.hpp [3:6]
- boost/geometry/policies/robustness/robust_type.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL bf1e7519f596cad8592beac9135468f3
-BELONGS ya.make
- License text:
- Copyright (c) 2003 Jonathan de Halleux (dehalleux@pelikhan.com)
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/actor.hpp [2:3]
- boost/spirit/home/classic/actor/assign_actor.hpp [2:3]
- boost/spirit/home/classic/actor/assign_key_actor.hpp [2:3]
- boost/spirit/home/classic/actor/clear_actor.hpp [2:3]
- boost/spirit/home/classic/actor/decrement_actor.hpp [2:3]
- boost/spirit/home/classic/actor/erase_actor.hpp [2:3]
- boost/spirit/home/classic/actor/increment_actor.hpp [2:3]
- boost/spirit/home/classic/actor/insert_at_actor.hpp [2:3]
- boost/spirit/home/classic/actor/insert_key_actor.hpp [2:3]
- boost/spirit/home/classic/actor/push_back_actor.hpp [2:3]
- boost/spirit/home/classic/actor/push_front_actor.hpp [2:3]
- boost/spirit/home/classic/actor/ref_actor.hpp [2:3]
- boost/spirit/home/classic/actor/ref_const_ref_actor.hpp [2:3]
- boost/spirit/home/classic/actor/ref_const_ref_const_ref_a.hpp [2:3]
- boost/spirit/home/classic/actor/ref_const_ref_value_actor.hpp [2:3]
- boost/spirit/home/classic/actor/swap_actor.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL bf20d066d738abb72ed031e29830590e
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/complex.hpp at line 15, boost/serialization/ephemeral.hpp at line 14, boost/serialization/is_bitwise_serializable.hpp at line 3
- License text:
- // (C) Copyright 2007 Matthias Troyer .
- // Use, modification and distribution is subject to the Boost Software
- // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/serialization/complex.hpp [13:15]
- boost/serialization/ephemeral.hpp [12:14]
- boost/serialization/is_bitwise_serializable.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL bf2ff0620c8b458255469b3f16d47c29
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/math/octonion.hpp at line 5, boost/math/quaternion.hpp at line 5, boost/math/special_functions/atanh.hpp at line 5, boost/math/special_functions/sinc.hpp at line 5, boost/math/special_functions/sinhc.hpp at line 5
- License text:
- // (C) Copyright Hubert Holin 2001.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/octonion.hpp [3:5]
- boost/math/quaternion.hpp [3:5]
- boost/math/special_functions/atanh.hpp [3:6]
- boost/math/special_functions/sinc.hpp [3:5]
- boost/math/special_functions/sinhc.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL bf641215d684707e5ad94b61496844f2
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/lockable_adapter.hpp at line 5, boost/thread/null_mutex.hpp at line 5, boost/thread/poly_lockable.hpp at line 5, boost/thread/poly_lockable_adapter.hpp at line 5, boost/thread/poly_shared_lockable.hpp at line 5, boost/thread/poly_shared_lockable_adapter.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/lockable_adapter.hpp [3:5]
- boost/thread/null_mutex.hpp [3:5]
- boost/thread/poly_lockable.hpp [3:5]
- boost/thread/poly_lockable_adapter.hpp [3:5]
- boost/thread/poly_shared_lockable.hpp [3:5]
- boost/thread/poly_shared_lockable_adapter.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL bfdb31b5eecacab9825848f2ef7ae35b
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/extreme_points.hpp [3:6]
- boost/geometry/algorithms/detail/overlay/overlay.hpp [3:4]
- boost/geometry/algorithms/point_on_surface.hpp [3:6]
- boost/geometry/strategies/cartesian/intersection.hpp [3:4]
- boost/geometry/strategies/spherical/point_in_poly_winding.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL bfe32bdf692840baf1378322cd282268
-BELONGS ya.make
- License text:
- Copyright (c) 2006 Tobias Schwinger
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/actor/typeof.hpp [2:3]
- boost/spirit/home/classic/attribute/closure_fwd.hpp [2:3]
- boost/spirit/home/classic/attribute/typeof.hpp [2:3]
- boost/spirit/home/classic/core/non_terminal/subrule_fwd.hpp [2:3]
- boost/spirit/home/classic/core/primitives/numerics_fwd.hpp [2:3]
- boost/spirit/home/classic/core/scanner/scanner_fwd.hpp [2:3]
- boost/spirit/home/classic/core/scanner/skipper_fwd.hpp [2:3]
- boost/spirit/home/classic/core/typeof.hpp [2:3]
- boost/spirit/home/classic/debug/typeof.hpp [2:3]
- boost/spirit/home/classic/dynamic/stored_rule_fwd.hpp [2:3]
- boost/spirit/home/classic/dynamic/typeof.hpp [2:3]
- boost/spirit/home/classic/error_handling/exceptions_fwd.hpp [2:3]
- boost/spirit/home/classic/error_handling/typeof.hpp [2:3]
- boost/spirit/home/classic/iterator/file_iterator_fwd.hpp [2:3]
- boost/spirit/home/classic/iterator/multi_pass_fwd.hpp [2:3]
- boost/spirit/home/classic/iterator/typeof.hpp [2:3]
- boost/spirit/home/classic/symbols/symbols_fwd.hpp [2:3]
- boost/spirit/home/classic/symbols/typeof.hpp [2:3]
- boost/spirit/home/classic/tree/ast_fwd.hpp [2:3]
- boost/spirit/home/classic/tree/common_fwd.hpp [2:3]
- boost/spirit/home/classic/tree/parse_tree_fwd.hpp [2:3]
- boost/spirit/home/classic/tree/typeof.hpp [2:3]
- boost/spirit/home/classic/utility/confix_fwd.hpp [2:3]
- boost/spirit/home/classic/utility/distinct_fwd.hpp [2:3]
- boost/spirit/home/classic/utility/escape_char_fwd.hpp [2:3]
- boost/spirit/home/classic/utility/grammar_def_fwd.hpp [2:3]
- boost/spirit/home/classic/utility/lists_fwd.hpp [2:3]
- boost/spirit/home/classic/utility/rule_parser.hpp [2:3]
- boost/spirit/home/classic/utility/typeof.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL bfe968029d2d7c0f9f5dd472d766b65f
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2011 Hartmut Kaiser
- Copyright (c) 2011 Bryce Lelbach
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/qi/numeric/bool.hpp [2:3]
- boost/spirit/home/qi/numeric/int.hpp [2:3]
- boost/spirit/home/qi/numeric/real.hpp [2:3]
- boost/spirit/home/qi/numeric/uint.hpp [2:4]
- boost/spirit/home/support/utree/detail/utree_detail1.hpp [2:4]
- boost/spirit/home/support/utree/detail/utree_detail2.hpp [2:4]
- boost/spirit/home/support/utree/operators.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL c00bfc5c4d0ddbae4e5f2f2570d510e6
-BELONGS ya.make
- License text:
- * Copyright (c) 2017 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/atomic/detail/extra_operations.hpp [6:6]
- boost/atomic/detail/extra_operations_fwd.hpp [6:6]
- boost/atomic/detail/extra_ops_msvc_arm.hpp [6:6]
- boost/atomic/detail/extra_ops_msvc_x86.hpp [6:6]
- boost/atomic/detail/hwcaps_gcc_arm.hpp [6:6]
- boost/atomic/detail/hwcaps_gcc_ppc.hpp [6:6]
- boost/atomic/detail/hwcaps_gcc_x86.hpp [6:6]
- boost/atomic/detail/type_traits/conditional.hpp [6:6]
- boost/atomic/detail/type_traits/integral_constant.hpp [6:6]
- boost/atomic/detail/type_traits/is_function.hpp [6:6]
- boost/atomic/detail/type_traits/is_integral.hpp [6:6]
- boost/atomic/detail/type_traits/is_signed.hpp [6:6]
- boost/atomic/detail/type_traits/make_signed.hpp [6:6]
- boost/atomic/detail/type_traits/make_unsigned.hpp [6:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL c0163954740bc8af1c3c3e15261a286e
-BELONGS ya.make
- License text:
- // Copyright Beman Dawes 2008
- // Copyright Vicente J. Botet Escriba 2009
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/chrono/detail/inlined/chrono.hpp [3:4]
- boost/chrono/detail/inlined/mac/process_cpu_clocks.hpp [3:4]
- boost/chrono/detail/inlined/posix/chrono.hpp [3:4]
- boost/chrono/detail/inlined/posix/process_cpu_clocks.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL c01ae716b2d1d913ab203a9f2242558c
-BELONGS ya.make
- License text:
- // Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
- // Copyright 2004-2005 Peter Dimov
- // Copyright 2006 Michael van der Westhuizen
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/detail/sp_counted_base_aix.hpp [8:10]
- boost/smart_ptr/detail/sp_counted_base_solaris.hpp [8:10]
- boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp [8:11]
-
-KEEP COPYRIGHT_SERVICE_LABEL c03642adfbfa6845d494d4322dfc657d
-BELONGS ya.make
- License text:
- // Copyright (c) 2017 Denis Demidov <dennis.demidov@gmail.com>
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/compute/types/size_t.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL c053c607b6febdd053e512373ca02521
-BELONGS ya.make
- License text:
- // is handled by pj_transform.c.
- // Author: Frank Warmerdam, warmerdam@pobox.com
- // Copyright (c) 2002, Frank Warmerdam
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/srs/projections/proj/geocent.hpp [28:30]
-
-KEEP COPYRIGHT_SERVICE_LABEL c06c9ff8636443eb86616d2d2c0497be
-BELONGS ya.make
- License text:
- // Copyright (C) Christof Meerwald 2003
- // Copyright (C) Dan Watkins 2003
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/digitalmars.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL c09f6e1583eaa14d572ddf59bb46a094
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/get_pointer.hpp at line 3
- License text:
- // Copyright Peter Dimov and David Abrahams 2002.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/get_pointer.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL c0cc7e92279cc3a48222bedfe56172b7
-BELONGS ya.make
- License text:
- // Copyright Vicente J. Botet Escriba 2010
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/ratio/detail/mpl/abs.hpp [3:3]
- boost/ratio/detail/mpl/gcd.hpp [3:3]
- boost/ratio/detail/mpl/lcm.hpp [3:3]
- boost/ratio/detail/mpl/sign.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL c0d96450cb0615da66f558ed677a7814
-BELONGS libs/ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: libs/test/src/debug.cpp at line 3
- License text:
- // (C) Copyright Gennadiy Rozental 2006-2010.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- libs/test/src/debug.cpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL c0f674f1c6cab703b5219f707cbe9dfb
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2006, 2007.
- // Copyright Paul A. Bristow 2006, 2007, 2009, 2010.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/distributions.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL c1075534b934af727571516a0c60c43f
-BELONGS ya.make
- License text:
- Copyright 2017-2018 Glen Joseph Fernandes
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_traits/detail/detector.hpp [2:2]
- boost/type_traits/detected.hpp [2:2]
- boost/type_traits/detected_or.hpp [2:2]
- boost/type_traits/is_detected.hpp [2:2]
- boost/type_traits/is_detected_convertible.hpp [2:2]
- boost/type_traits/is_detected_exact.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL c13e1def70a329f1d91812ef6ac1c8a3
-BELONGS ya.make
- License text:
- // Copyright (C) 2010 Tim Blechmann
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/heap/binomial_heap.hpp [3:3]
- boost/heap/d_ary_heap.hpp [3:3]
- boost/heap/detail/heap_comparison.hpp [3:3]
- boost/heap/detail/heap_node.hpp [3:3]
- boost/heap/detail/ilog2.hpp [3:3]
- boost/heap/detail/mutable_heap.hpp [3:3]
- boost/heap/detail/stable_heap.hpp [3:3]
- boost/heap/detail/tree_iterator.hpp [3:3]
- boost/heap/fibonacci_heap.hpp [3:3]
- boost/heap/heap_concepts.hpp [3:3]
- boost/heap/pairing_heap.hpp [3:3]
- boost/heap/priority_queue.hpp [3:3]
- boost/heap/skew_heap.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL c1a3993adb0438ffac1f5423da136f0b
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/ptr_container/detail/is_convertible.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/ptr_container/detail/is_convertible.hpp [1:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL c1ad1eba3e3dc2cbb9f429a55bf844e6
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iostreams/detail/config/windows_posix.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/iostreams/detail/config/windows_posix.hpp [1:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL c1b95253eef284c58b6ab544fca6d743
-BELONGS ya.make
- License text:
- // Copyright (c) 2012 Oswin Krause
- // Copyright (c) 2013 Joaquim Duran
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/ublas/matrix_vector.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL c1dec1e9437c6eb354abe1a9562b2d77
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/decay.hpp at line 3
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_traits/decay.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL c22913d29a72689a4dc05182fbd952c3
-BELONGS ya.make
- License text:
- // (C) Copyright 2013,2014 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/executors/work.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL c24b5b08917188c6ae925e003535d186
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/rolling_count.hpp at line 6, boost/accumulators/statistics/rolling_sum.hpp at line 6, boost/accumulators/statistics/rolling_window.hpp at line 6, boost/msm/back/fold_to_list.hpp at line 3, boost/proto/args.hpp at line 8, boost/proto/context.hpp at line 7, boost/proto/context/callable.hpp at line 11, boost/proto/context/default.hpp at line 9, boost/proto/context/detail/callable_eval.hpp at line 25, boost/proto/context/detail/default_eval.hpp at line 21, boost/proto/context/detail/null_eval.hpp at line 21, boost/proto/context/detail/preprocessed/callable_eval.hpp at line 7, boost/proto/context/detail/preprocessed/default_eval.hpp at line 7, boost/proto/context/detail/preprocessed/null_eval.hpp at line 7, boost/proto/context/null.hpp at line 9, boost/proto/core.hpp at line 8, boost/proto/debug.hpp at line 7, boost/proto/deep_copy.hpp at line 7, boost/proto/detail/and_n.hpp at line 17, boost/proto/detail/args.hpp at line 30, boost/proto/detail/as_lvalue.hpp at line 7, boost/proto/detail/basic_expr.hpp at line 30, boost/proto/detail/class_member_traits.hpp at line 17, boost/proto/detail/decltype.hpp at line 7, boost/proto/detail/deduce_domain_n.hpp at line 23, boost/proto/detail/deep_copy.hpp at line 29, boost/proto/detail/deprecated.hpp at line 8, boost/proto/detail/dont_care.hpp at line 7, boost/proto/detail/expr.hpp at line 35, boost/proto/detail/expr.hpp at line 63, boost/proto/detail/expr_funop.hpp at line 7, boost/proto/detail/extends_funop.hpp at line 27, boost/proto/detail/extends_funop_const.hpp at line 26, boost/proto/detail/funop.hpp at line 25, boost/proto/detail/generate_by_value.hpp at line 17, boost/proto/detail/ignore_unused.hpp at line 8, boost/proto/detail/is_noncopyable.hpp at line 7, boost/proto/detail/lambda_matches.hpp at line 23, boost/proto/detail/local.hpp at line 7, boost/proto/detail/make_expr.hpp at line 17, boost/proto/detail/make_expr_.hpp at line 17, boost/proto/detail/make_expr_funop.hpp at line 17, boost/proto/detail/matches_.hpp at line 31, boost/proto/detail/memfun_funop.hpp at line 17, boost/proto/detail/or_n.hpp at line 17, boost/proto/detail/poly_function.hpp at line 9, boost/proto/detail/poly_function_funop.hpp at line 22, boost/proto/detail/poly_function_traits.hpp at line 17, boost/proto/detail/preprocessed/and_n.hpp at line 7, boost/proto/detail/preprocessed/args.hpp at line 8, boost/proto/detail/preprocessed/basic_expr.hpp at line 7, boost/proto/detail/preprocessed/class_member_traits.hpp at line 7, boost/proto/detail/preprocessed/deduce_domain_n.hpp at line 7, boost/proto/detail/preprocessed/deep_copy.hpp at line 7, boost/proto/detail/preprocessed/expr.hpp at line 7, boost/proto/detail/preprocessed/expr_variadic.hpp at line 7, boost/proto/detail/preprocessed/extends_funop.hpp at line 7, boost/proto/detail/preprocessed/extends_funop_const.hpp at line 7, boost/proto/detail/preprocessed/funop.hpp at line 7, boost/proto/detail/preprocessed/generate_by_value.hpp at line 7, boost/proto/detail/preprocessed/lambda_matches.hpp at line 7, boost/proto/detail/preprocessed/make_expr.hpp at line 7, boost/proto/detail/preprocessed/make_expr_.hpp at line 7, boost/proto/detail/preprocessed/make_expr_funop.hpp at line 7, boost/proto/detail/preprocessed/matches_.hpp at line 7, boost/proto/detail/preprocessed/memfun_funop.hpp at line 7, boost/proto/detail/preprocessed/or_n.hpp at line 7, boost/proto/detail/preprocessed/poly_function_funop.hpp at line 7, boost/proto/detail/preprocessed/poly_function_traits.hpp at line 7, boost/proto/detail/preprocessed/template_arity_helper.hpp at line 7, boost/proto/detail/preprocessed/traits.hpp at line 7, boost/proto/detail/preprocessed/unpack_expr_.hpp at line 7, boost/proto/detail/preprocessed/vararg_matches_impl.hpp at line 7, boost/proto/detail/static_const.hpp at line 7, boost/proto/detail/template_arity_helper.hpp at line 17, boost/proto/detail/traits.hpp at line 22, boost/proto/detail/unpack_expr_.hpp at line 82, boost/proto/detail/vararg_matches_impl.hpp at line 17, boost/proto/domain.hpp at line 9, boost/proto/eval.hpp at line 7, boost/proto/expr.hpp at line 7, boost/proto/extends.hpp at line 7, boost/proto/fusion.hpp at line 7, boost/proto/generate.hpp at line 8, boost/proto/literal.hpp at line 8, boost/proto/make_expr.hpp at line 9, boost/proto/matches.hpp at line 8, boost/proto/operators.hpp at line 8, boost/proto/proto.hpp at line 7, boost/proto/proto_fwd.hpp at line 7, boost/proto/proto_typeof.hpp at line 8, boost/proto/repeat.hpp at line 7, boost/proto/tags.hpp at line 7, boost/proto/traits.hpp at line 9, boost/proto/transform.hpp at line 7, boost/proto/transform/arg.hpp at line 7, boost/proto/transform/call.hpp at line 7, boost/proto/transform/default.hpp at line 8, boost/proto/transform/detail/call.hpp at line 28, boost/proto/transform/detail/construct_funop.hpp at line 17, boost/proto/transform/detail/construct_pod_funop.hpp at line 17, boost/proto/transform/detail/default_function_impl.hpp at line 21, boost/proto/transform/detail/fold_impl.hpp at line 75, boost/proto/transform/detail/lazy.hpp at line 17, boost/proto/transform/detail/make.hpp at line 35, boost/proto/transform/detail/make_gcc_workaround.hpp at line 26, boost/proto/transform/detail/pass_through_impl.hpp at line 37, boost/proto/transform/detail/preprocessed/call.hpp at line 7, boost/proto/transform/detail/preprocessed/construct_funop.hpp at line 7, boost/proto/transform/detail/preprocessed/construct_pod_funop.hpp at line 7, boost/proto/transform/detail/preprocessed/default_function_impl.hpp at line 8, boost/proto/transform/detail/preprocessed/fold_impl.hpp at line 7, boost/proto/transform/detail/preprocessed/lazy.hpp at line 7, boost/proto/transform/detail/preprocessed/make.hpp at line 7, boost/proto/transform/detail/preprocessed/make_gcc_workaround.hpp at line 8, boost/proto/transform/detail/preprocessed/pass_through_impl.hpp at line 9, boost/proto/transform/detail/preprocessed/when.hpp at line 7, boost/proto/transform/detail/when.hpp at line 17, boost/proto/transform/fold.hpp at line 7, boost/proto/transform/fold_tree.hpp at line 7, boost/proto/transform/impl.hpp at line 7, boost/proto/transform/lazy.hpp at line 7, boost/proto/transform/make.hpp at line 7, boost/proto/transform/pass_through.hpp at line 10, boost/proto/transform/when.hpp at line 7, boost/regex/v4/regex_format.hpp at line 5, boost/xpressive/basic_regex.hpp at line 8, boost/xpressive/detail/core/access.hpp at line 6, boost/xpressive/detail/core/action.hpp at line 6, boost/xpressive/detail/core/adaptor.hpp at line 6, boost/xpressive/detail/core/finder.hpp at line 5, boost/xpressive/detail/core/flow_control.hpp at line 6, boost/xpressive/detail/core/icase.hpp at line 6, boost/xpressive/detail/core/linker.hpp at line 6, boost/xpressive/detail/core/matcher/action_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/alternate_end_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/alternate_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/any_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/assert_bol_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/assert_bos_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/assert_eol_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/assert_eos_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/assert_line_base.hpp at line 6, boost/xpressive/detail/core/matcher/assert_word_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/attr_begin_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/attr_end_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/attr_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/charset_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/end_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/epsilon_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/keeper_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/literal_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/logical_newline_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/lookahead_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/lookbehind_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/mark_begin_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/mark_end_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/mark_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/optional_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/posix_charset_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/predicate_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/range_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/regex_byref_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/regex_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/repeat_begin_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/repeat_end_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/set_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/simple_repeat_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/string_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/true_matcher.hpp at line 6, boost/xpressive/detail/core/matchers.hpp at line 6, boost/xpressive/detail/core/optimize.hpp at line 6, boost/xpressive/detail/core/peeker.hpp at line 6, boost/xpressive/detail/core/quant_style.hpp at line 6, boost/xpressive/detail/core/regex_impl.hpp at line 6, boost/xpressive/detail/core/results_cache.hpp at line 6, boost/xpressive/detail/core/state.hpp at line 6, boost/xpressive/detail/core/sub_match_impl.hpp at line 6, boost/xpressive/detail/core/sub_match_vector.hpp at line 6, boost/xpressive/detail/detail_fwd.hpp at line 6, boost/xpressive/detail/dynamic/dynamic.hpp at line 6, boost/xpressive/detail/dynamic/matchable.hpp at line 6, boost/xpressive/detail/dynamic/parse_charset.hpp at line 6, boost/xpressive/detail/dynamic/parser.hpp at line 8, boost/xpressive/detail/dynamic/parser_enum.hpp at line 6, boost/xpressive/detail/dynamic/parser_traits.hpp at line 6, boost/xpressive/detail/dynamic/sequence.hpp at line 6, boost/xpressive/detail/static/compile.hpp at line 6, boost/xpressive/detail/static/grammar.hpp at line 6, boost/xpressive/detail/static/is_pure.hpp at line 6, boost/xpressive/detail/static/modifier.hpp at line 6, boost/xpressive/detail/static/placeholders.hpp at line 6, boost/xpressive/detail/static/static.hpp at line 6, boost/xpressive/detail/static/transforms/as_action.hpp at line 6, boost/xpressive/detail/static/transforms/as_alternate.hpp at line 6, boost/xpressive/detail/static/transforms/as_independent.hpp at line 6, boost/xpressive/detail/static/transforms/as_inverse.hpp at line 6, boost/xpressive/detail/static/transforms/as_marker.hpp at line 6, boost/xpressive/detail/static/transforms/as_matcher.hpp at line 6, boost/xpressive/detail/static/transforms/as_modifier.hpp at line 6, boost/xpressive/detail/static/transforms/as_quantifier.hpp at line 6, boost/xpressive/detail/static/transforms/as_sequence.hpp at line 6, boost/xpressive/detail/static/transforms/as_set.hpp at line 6, boost/xpressive/detail/static/transmogrify.hpp at line 6, boost/xpressive/detail/static/type_traits.hpp at line 6, boost/xpressive/detail/static/visitor.hpp at line 6, boost/xpressive/detail/static/width_of.hpp at line 6, boost/xpressive/detail/utility/algorithm.hpp at line 6, boost/xpressive/detail/utility/any.hpp at line 6, boost/xpressive/detail/utility/boyer_moore.hpp at line 9, boost/xpressive/detail/utility/chset/chset.hpp at line 6, boost/xpressive/detail/utility/cons.hpp at line 6, boost/xpressive/detail/utility/dont_care.hpp at line 6, boost/xpressive/detail/utility/hash_peek_bitset.hpp at line 6, boost/xpressive/detail/utility/ignore_unused.hpp at line 6, boost/xpressive/detail/utility/literals.hpp at line 6, boost/xpressive/detail/utility/never_true.hpp at line 6, boost/xpressive/detail/utility/save_restore.hpp at line 6, boost/xpressive/detail/utility/sequence_stack.hpp at line 6, boost/xpressive/detail/utility/tracking_ptr.hpp at line 6, boost/xpressive/detail/utility/traits_utils.hpp at line 6, boost/xpressive/detail/utility/width.hpp at line 6, boost/xpressive/match_results.hpp at line 9, boost/xpressive/regex_actions.hpp at line 7, boost/xpressive/regex_algorithms.hpp at line 7, boost/xpressive/regex_compiler.hpp at line 8, boost/xpressive/regex_constants.hpp at line 8, boost/xpressive/regex_error.hpp at line 7, boost/xpressive/regex_iterator.hpp at line 8, boost/xpressive/regex_primitives.hpp at line 7, boost/xpressive/regex_token_iterator.hpp at line 8, boost/xpressive/regex_traits.hpp at line 8, boost/xpressive/sub_match.hpp at line 8, boost/xpressive/traits/c_regex_traits.hpp at line 9, boost/xpressive/traits/cpp_regex_traits.hpp at line 9, boost/xpressive/traits/detail/c_ctype.hpp at line 6, boost/xpressive/traits/null_regex_traits.hpp at line 9, boost/xpressive/xpressive.hpp at line 8, boost/xpressive/xpressive_dynamic.hpp at line 7, boost/xpressive/xpressive_fwd.hpp at line 7, boost/xpressive/xpressive_static.hpp at line 8, boost/xpressive/xpressive_typeof.hpp at line 7
- License text:
- // Copyright 2008 Eric Niebler. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/accumulators/statistics/rolling_count.hpp [4:6]
- boost/accumulators/statistics/rolling_sum.hpp [4:6]
- boost/accumulators/statistics/rolling_window.hpp [4:6]
- boost/msm/back/fold_to_list.hpp [1:7]
- boost/proto/args.hpp [6:8]
- boost/proto/context.hpp [5:7]
- boost/proto/context/callable.hpp [9:11]
- boost/proto/context/default.hpp [7:9]
- boost/proto/context/detail/callable_eval.hpp [23:25]
- boost/proto/context/detail/default_eval.hpp [19:21]
- boost/proto/context/detail/null_eval.hpp [19:21]
- boost/proto/context/detail/preprocessed/callable_eval.hpp [5:7]
- boost/proto/context/detail/preprocessed/default_eval.hpp [5:7]
- boost/proto/context/detail/preprocessed/null_eval.hpp [5:7]
- boost/proto/context/null.hpp [7:9]
- boost/proto/core.hpp [6:8]
- boost/proto/debug.hpp [5:7]
- boost/proto/deep_copy.hpp [5:7]
- boost/proto/detail/and_n.hpp [15:17]
- boost/proto/detail/args.hpp [28:30]
- boost/proto/detail/as_lvalue.hpp [5:7]
- boost/proto/detail/basic_expr.hpp [28:30]
- boost/proto/detail/class_member_traits.hpp [15:17]
- boost/proto/detail/decltype.hpp [5:7]
- boost/proto/detail/deduce_domain_n.hpp [21:23]
- boost/proto/detail/deep_copy.hpp [27:29]
- boost/proto/detail/deprecated.hpp [6:8]
- boost/proto/detail/dont_care.hpp [5:7]
- boost/proto/detail/expr.hpp [33:35]
- boost/proto/detail/expr.hpp [61:63]
- boost/proto/detail/expr_funop.hpp [5:7]
- boost/proto/detail/extends_funop.hpp [25:27]
- boost/proto/detail/extends_funop_const.hpp [24:26]
- boost/proto/detail/funop.hpp [23:25]
- boost/proto/detail/generate_by_value.hpp [15:17]
- boost/proto/detail/ignore_unused.hpp [6:8]
- boost/proto/detail/is_noncopyable.hpp [5:7]
- boost/proto/detail/lambda_matches.hpp [21:23]
- boost/proto/detail/local.hpp [5:7]
- boost/proto/detail/make_expr.hpp [15:17]
- boost/proto/detail/make_expr_.hpp [15:17]
- boost/proto/detail/make_expr_funop.hpp [15:17]
- boost/proto/detail/matches_.hpp [29:31]
- boost/proto/detail/memfun_funop.hpp [15:17]
- boost/proto/detail/or_n.hpp [15:17]
- boost/proto/detail/poly_function.hpp [7:9]
- boost/proto/detail/poly_function_funop.hpp [20:22]
- boost/proto/detail/poly_function_traits.hpp [15:17]
- boost/proto/detail/preprocessed/and_n.hpp [5:7]
- boost/proto/detail/preprocessed/args.hpp [6:8]
- boost/proto/detail/preprocessed/basic_expr.hpp [5:7]
- boost/proto/detail/preprocessed/class_member_traits.hpp [5:7]
- boost/proto/detail/preprocessed/deduce_domain_n.hpp [5:7]
- boost/proto/detail/preprocessed/deep_copy.hpp [5:7]
- boost/proto/detail/preprocessed/expr.hpp [5:7]
- boost/proto/detail/preprocessed/expr_variadic.hpp [5:7]
- boost/proto/detail/preprocessed/extends_funop.hpp [5:7]
- boost/proto/detail/preprocessed/extends_funop_const.hpp [5:7]
- boost/proto/detail/preprocessed/funop.hpp [5:7]
- boost/proto/detail/preprocessed/generate_by_value.hpp [5:7]
- boost/proto/detail/preprocessed/lambda_matches.hpp [5:7]
- boost/proto/detail/preprocessed/make_expr.hpp [5:7]
- boost/proto/detail/preprocessed/make_expr_.hpp [5:7]
- boost/proto/detail/preprocessed/make_expr_funop.hpp [5:7]
- boost/proto/detail/preprocessed/matches_.hpp [5:7]
- boost/proto/detail/preprocessed/memfun_funop.hpp [5:7]
- boost/proto/detail/preprocessed/or_n.hpp [5:7]
- boost/proto/detail/preprocessed/poly_function_funop.hpp [5:7]
- boost/proto/detail/preprocessed/poly_function_traits.hpp [5:7]
- boost/proto/detail/preprocessed/template_arity_helper.hpp [5:7]
- boost/proto/detail/preprocessed/traits.hpp [5:7]
- boost/proto/detail/preprocessed/unpack_expr_.hpp [5:7]
- boost/proto/detail/preprocessed/vararg_matches_impl.hpp [5:7]
- boost/proto/detail/static_const.hpp [5:7]
- boost/proto/detail/template_arity_helper.hpp [15:17]
- boost/proto/detail/traits.hpp [20:22]
- boost/proto/detail/unpack_expr_.hpp [80:82]
- boost/proto/detail/vararg_matches_impl.hpp [15:17]
- boost/proto/domain.hpp [7:9]
- boost/proto/eval.hpp [5:7]
- boost/proto/expr.hpp [5:7]
- boost/proto/extends.hpp [5:7]
- boost/proto/fusion.hpp [5:7]
- boost/proto/generate.hpp [6:8]
- boost/proto/literal.hpp [6:8]
- boost/proto/make_expr.hpp [7:9]
- boost/proto/matches.hpp [6:8]
- boost/proto/operators.hpp [6:8]
- boost/proto/proto.hpp [5:7]
- boost/proto/proto_fwd.hpp [5:7]
- boost/proto/proto_typeof.hpp [6:8]
- boost/proto/repeat.hpp [5:7]
- boost/proto/tags.hpp [5:7]
- boost/proto/traits.hpp [7:9]
- boost/proto/transform.hpp [5:7]
- boost/proto/transform/arg.hpp [5:7]
- boost/proto/transform/call.hpp [5:7]
- boost/proto/transform/default.hpp [6:8]
- boost/proto/transform/detail/call.hpp [26:28]
- boost/proto/transform/detail/construct_funop.hpp [15:17]
- boost/proto/transform/detail/construct_pod_funop.hpp [15:17]
- boost/proto/transform/detail/default_function_impl.hpp [19:21]
- boost/proto/transform/detail/fold_impl.hpp [73:75]
- boost/proto/transform/detail/lazy.hpp [15:17]
- boost/proto/transform/detail/make.hpp [33:35]
- boost/proto/transform/detail/make_gcc_workaround.hpp [24:26]
- boost/proto/transform/detail/pass_through_impl.hpp [35:37]
- boost/proto/transform/detail/preprocessed/call.hpp [5:7]
- boost/proto/transform/detail/preprocessed/construct_funop.hpp [5:7]
- boost/proto/transform/detail/preprocessed/construct_pod_funop.hpp [5:7]
- boost/proto/transform/detail/preprocessed/default_function_impl.hpp [6:8]
- boost/proto/transform/detail/preprocessed/fold_impl.hpp [5:7]
- boost/proto/transform/detail/preprocessed/lazy.hpp [5:7]
- boost/proto/transform/detail/preprocessed/make.hpp [5:7]
- boost/proto/transform/detail/preprocessed/make_gcc_workaround.hpp [6:8]
- boost/proto/transform/detail/preprocessed/pass_through_impl.hpp [7:9]
- boost/proto/transform/detail/preprocessed/when.hpp [5:7]
- boost/proto/transform/detail/when.hpp [15:17]
- boost/proto/transform/fold.hpp [5:7]
- boost/proto/transform/fold_tree.hpp [5:7]
- boost/proto/transform/impl.hpp [5:7]
- boost/proto/transform/lazy.hpp [5:7]
- boost/proto/transform/make.hpp [5:7]
- boost/proto/transform/pass_through.hpp [8:10]
- boost/proto/transform/when.hpp [5:7]
- boost/regex/v4/regex_format.hpp [3:4]
- boost/xpressive/basic_regex.hpp [6:8]
- boost/xpressive/detail/core/access.hpp [4:6]
- boost/xpressive/detail/core/action.hpp [4:6]
- boost/xpressive/detail/core/adaptor.hpp [4:6]
- boost/xpressive/detail/core/finder.hpp [3:5]
- boost/xpressive/detail/core/flow_control.hpp [4:6]
- boost/xpressive/detail/core/icase.hpp [4:6]
- boost/xpressive/detail/core/linker.hpp [4:6]
- boost/xpressive/detail/core/matcher/action_matcher.hpp [4:5]
- boost/xpressive/detail/core/matcher/alternate_end_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/alternate_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/any_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/assert_bol_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/assert_bos_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/assert_eol_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/assert_eos_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/assert_line_base.hpp [4:6]
- boost/xpressive/detail/core/matcher/assert_word_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/attr_begin_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/attr_end_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/attr_matcher.hpp [4:5]
- boost/xpressive/detail/core/matcher/charset_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/end_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/epsilon_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/keeper_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/literal_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/logical_newline_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/lookahead_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/lookbehind_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/mark_begin_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/mark_end_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/mark_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/optional_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/posix_charset_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/predicate_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/range_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/regex_byref_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/regex_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/repeat_begin_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/repeat_end_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/set_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/simple_repeat_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/string_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/true_matcher.hpp [4:6]
- boost/xpressive/detail/core/matchers.hpp [4:6]
- boost/xpressive/detail/core/optimize.hpp [4:6]
- boost/xpressive/detail/core/peeker.hpp [4:6]
- boost/xpressive/detail/core/quant_style.hpp [4:6]
- boost/xpressive/detail/core/regex_impl.hpp [4:6]
- boost/xpressive/detail/core/results_cache.hpp [4:6]
- boost/xpressive/detail/core/state.hpp [4:6]
- boost/xpressive/detail/core/sub_match_impl.hpp [4:6]
- boost/xpressive/detail/core/sub_match_vector.hpp [4:6]
- boost/xpressive/detail/detail_fwd.hpp [4:6]
- boost/xpressive/detail/dynamic/dynamic.hpp [4:6]
- boost/xpressive/detail/dynamic/matchable.hpp [4:6]
- boost/xpressive/detail/dynamic/parse_charset.hpp [4:6]
- boost/xpressive/detail/dynamic/parser.hpp [6:8]
- boost/xpressive/detail/dynamic/parser_enum.hpp [4:6]
- boost/xpressive/detail/dynamic/parser_traits.hpp [4:6]
- boost/xpressive/detail/dynamic/sequence.hpp [4:6]
- boost/xpressive/detail/static/compile.hpp [4:6]
- boost/xpressive/detail/static/grammar.hpp [4:6]
- boost/xpressive/detail/static/is_pure.hpp [4:6]
- boost/xpressive/detail/static/modifier.hpp [4:6]
- boost/xpressive/detail/static/placeholders.hpp [4:6]
- boost/xpressive/detail/static/static.hpp [4:6]
- boost/xpressive/detail/static/transforms/as_action.hpp [4:5]
- boost/xpressive/detail/static/transforms/as_alternate.hpp [4:6]
- boost/xpressive/detail/static/transforms/as_independent.hpp [4:6]
- boost/xpressive/detail/static/transforms/as_inverse.hpp [4:6]
- boost/xpressive/detail/static/transforms/as_marker.hpp [4:6]
- boost/xpressive/detail/static/transforms/as_matcher.hpp [4:6]
- boost/xpressive/detail/static/transforms/as_modifier.hpp [4:6]
- boost/xpressive/detail/static/transforms/as_quantifier.hpp [4:6]
- boost/xpressive/detail/static/transforms/as_sequence.hpp [4:6]
- boost/xpressive/detail/static/transforms/as_set.hpp [4:6]
- boost/xpressive/detail/static/transmogrify.hpp [4:6]
- boost/xpressive/detail/static/type_traits.hpp [4:6]
- boost/xpressive/detail/static/visitor.hpp [4:6]
- boost/xpressive/detail/static/width_of.hpp [4:6]
- boost/xpressive/detail/utility/algorithm.hpp [4:6]
- boost/xpressive/detail/utility/any.hpp [4:6]
- boost/xpressive/detail/utility/boyer_moore.hpp [7:9]
- boost/xpressive/detail/utility/chset/chset.hpp [4:6]
- boost/xpressive/detail/utility/cons.hpp [4:6]
- boost/xpressive/detail/utility/dont_care.hpp [4:6]
- boost/xpressive/detail/utility/hash_peek_bitset.hpp [4:6]
- boost/xpressive/detail/utility/ignore_unused.hpp [4:6]
- boost/xpressive/detail/utility/literals.hpp [4:6]
- boost/xpressive/detail/utility/never_true.hpp [4:6]
- boost/xpressive/detail/utility/save_restore.hpp [4:6]
- boost/xpressive/detail/utility/sequence_stack.hpp [4:6]
- boost/xpressive/detail/utility/tracking_ptr.hpp [4:6]
- boost/xpressive/detail/utility/traits_utils.hpp [4:6]
- boost/xpressive/detail/utility/width.hpp [4:6]
- boost/xpressive/match_results.hpp [7:9]
- boost/xpressive/regex_actions.hpp [5:7]
- boost/xpressive/regex_algorithms.hpp [5:7]
- boost/xpressive/regex_compiler.hpp [6:8]
- boost/xpressive/regex_constants.hpp [6:8]
- boost/xpressive/regex_error.hpp [5:7]
- boost/xpressive/regex_iterator.hpp [6:8]
- boost/xpressive/regex_primitives.hpp [5:7]
- boost/xpressive/regex_token_iterator.hpp [6:8]
- boost/xpressive/regex_traits.hpp [6:8]
- boost/xpressive/sub_match.hpp [6:8]
- boost/xpressive/traits/c_regex_traits.hpp [7:9]
- boost/xpressive/traits/cpp_regex_traits.hpp [7:9]
- boost/xpressive/traits/detail/c_ctype.hpp [4:6]
- boost/xpressive/traits/null_regex_traits.hpp [7:9]
- boost/xpressive/xpressive.hpp [6:8]
- boost/xpressive/xpressive_dynamic.hpp [5:7]
- boost/xpressive/xpressive_fwd.hpp [5:7]
- boost/xpressive/xpressive_static.hpp [6:8]
- boost/xpressive/xpressive_typeof.hpp [5:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL c2741368ba398ca55c95dc8b018d1cb0
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/context/all.hpp at line 4, boost/coroutine2/detail/pull_control_block_cc.hpp at line 4, boost/coroutine2/detail/pull_control_block_cc.ipp at line 4, boost/fiber/buffered_channel.hpp at line 4, boost/fiber/detail/cpu_relax.hpp at line 4, boost/fiber/detail/futex.hpp at line 4, boost/fiber/detail/spinlock_ttas.hpp at line 4, boost/fiber/detail/spinlock_ttas_adaptive.hpp at line 4, boost/fiber/detail/spinlock_ttas_adaptive_futex.hpp at line 4, boost/fiber/detail/spinlock_ttas_futex.hpp at line 4, boost/fiber/unbuffered_channel.hpp at line 4
- License text:
- // Copyright Oliver Kowalke 2016.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/context/all.hpp [2:4]
- boost/coroutine2/detail/pull_control_block_cc.hpp [2:4]
- boost/coroutine2/detail/pull_control_block_cc.ipp [2:4]
- boost/fiber/buffered_channel.hpp [2:4]
- boost/fiber/detail/cpu_relax.hpp [2:4]
- boost/fiber/detail/futex.hpp [2:4]
- boost/fiber/detail/spinlock_ttas.hpp [2:4]
- boost/fiber/detail/spinlock_ttas_adaptive.hpp [2:4]
- boost/fiber/detail/spinlock_ttas_adaptive_futex.hpp [2:4]
- boost/fiber/detail/spinlock_ttas_futex.hpp [2:4]
- boost/fiber/unbuffered_channel.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL c29d179088542ed9c943e7ea0446a664
-BELONGS ya.make
- License text:
- Copyright 2011-2013 Karsten Ahnert
- Copyright 2011-2013 Thorsten Ottosen
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/util/detail/is_range.hpp [9:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL c2a40dd3d7fc7e08707b6696db3af8f2
-BELONGS ya.make
- License text:
- Copyright (c) 2001, Daniel C. Nuffer
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/iterator/multi_pass.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL c2a75373687b831a8c883e962d773df6
-BELONGS ya.make
- License text:
- Copyright (c) 2012 Paul Fultz II
- first_of.h
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/hof/detail/delegate.hpp [2:4]
- boost/hof/detail/join.hpp [2:4]
- boost/hof/detail/seq.hpp [2:4]
- boost/hof/first_of.hpp [2:4]
- boost/hof/identity.hpp [2:4]
- boost/hof/implicit.hpp [2:4]
- boost/hof/match.hpp [2:4]
- boost/hof/partial.hpp [2:4]
- boost/hof/pipable.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL c2b674f0ff2226395728254aea84cfa4
-BELONGS ya.make
- License text:
- // Copyright (c) 2009-2015 Barend Gehrels, Amsterdam, the Netherlands.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/io/svg/svg_mapper.hpp [3:3]
- boost/geometry/strategies/cartesian/centroid_weighted_length.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL c2b774c26af57c9a8aa6c361e73bd74c
-BELONGS ya.make
- License text:
- Copyright (c) 2001, Daniel C. Nuffer
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/archive/impl/basic_xml_grammar.hpp [27:27]
- boost/spirit/home/classic/iterator/fixed_size_queue.hpp [2:4]
- boost/spirit/home/support/iterators/detail/buf_id_check_policy.hpp [1:2]
- boost/spirit/home/support/iterators/detail/first_owner_policy.hpp [1:2]
- boost/spirit/home/support/iterators/look_ahead.hpp [1:3]
- boost/spirit/home/support/iterators/multi_pass.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL c30de2713f6adb4cc18cd66c69ba60b2
-BELONGS ya.make
- License text:
- // Copyright (c) David Abrahams 2001.
- // Copyright (c) Jeremy Siek 2001-2003.
- // Copyright (c) Thomas Witt 2002.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/iterator/new_iterator_tests.hpp [5:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL c37cd15a7f997072c7c854c7d6195fe3
-BELONGS ya.make
- License text:
- // Copyright Beman Dawes 2006, 2007
- // Copyright Christoper Kohlhoff 2007
- // Copyright Peter Dimov 2017, 2018
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/system/error_code.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL c3813bc43fb45363daf247950761e4d4
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/library/c/_prefix.h at line 4, boost/predef/library/std/_prefix.h at line 4
- License text:
- Copyright Rene Rivera 2008-2013
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/predef/library/c/_prefix.h [2:4]
- boost/predef/library/std/_prefix.h [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL c3a440d06912f47e5190235167d26eea
-BELONGS ya.make
- License text:
- // Copyright 2001 University of Notre Dame.
- // Copyright 2006 Trustees of Indiana University
- // Authors: Jeremy G. Siek and Douglas Gregor <dgregor@cs.indiana.edu>
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/adjacency_matrix.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL c3ce9643507aa0942a28211fe8f95eff
-BELONGS libs/context/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/context/continuation.hpp at line 4, boost/context/continuation_fcontext.hpp at line 4, boost/context/continuation_ucontext.hpp at line 4, boost/context/continuation_winfib.hpp at line 4, boost/context/detail/prefetch.hpp at line 3, boost/context/fiber.hpp at line 4, boost/context/fiber_fcontext.hpp at line 4, boost/context/fiber_ucontext.hpp at line 4, boost/context/fiber_winfib.hpp at line 4, boost/fiber/algo/numa/work_stealing.hpp at line 4, boost/fiber/cuda/waitfor.hpp at line 4, boost/fiber/detail/is_all_same.hpp at line 4, boost/fiber/detail/rtm.hpp at line 4, boost/fiber/detail/spinlock_rtm.hpp at line 4, boost/fiber/detail/spinlock_status.hpp at line 4, boost/fiber/hip/waitfor.hpp at line 4, boost/fiber/numa/pin_thread.hpp at line 4, boost/fiber/numa/topology.hpp at line 4, libs/context/src/continuation.cpp at line 4, libs/context/src/fiber.cpp at line 4
- License text:
- // Copyright Oliver Kowalke 2017.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/nvcc.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL beaaefd3c7a2121b29605a685da1b68f
+BELONGS ya.make
+ License text:
+ // Copyright 2012 Steven Watanabe
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_erasure/detail/check_call.hpp [3:3]
+ boost/type_erasure/detail/check_map.hpp [3:3]
+ boost/type_erasure/detail/const.hpp [3:3]
+ boost/type_erasure/detail/get_signature.hpp [3:3]
+ boost/type_erasure/detail/instantiate.hpp [3:3]
+ boost/type_erasure/detail/macro.hpp [3:3]
+ boost/type_erasure/detail/null.hpp [3:3]
+ boost/type_erasure/free.hpp [3:3]
+ boost/type_erasure/is_empty.hpp [3:3]
+ boost/type_erasure/is_subconcept.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL bed6ffae4a6ad5065eb6fafd56f354c5
+BELONGS ya.make
+ License text:
+ Copyright (c) 2010-2011: Joachim Faulhaber
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/icl/type_traits/infinity.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL bf1a568c053500311f215d9d3eb34330
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/get_max_size.hpp [3:6]
+ boost/geometry/policies/robustness/robust_type.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL bf1e7519f596cad8592beac9135468f3
+BELONGS ya.make
+ License text:
+ Copyright (c) 2003 Jonathan de Halleux (dehalleux@pelikhan.com)
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/actor.hpp [2:3]
+ boost/spirit/home/classic/actor/assign_actor.hpp [2:3]
+ boost/spirit/home/classic/actor/assign_key_actor.hpp [2:3]
+ boost/spirit/home/classic/actor/clear_actor.hpp [2:3]
+ boost/spirit/home/classic/actor/decrement_actor.hpp [2:3]
+ boost/spirit/home/classic/actor/erase_actor.hpp [2:3]
+ boost/spirit/home/classic/actor/increment_actor.hpp [2:3]
+ boost/spirit/home/classic/actor/insert_at_actor.hpp [2:3]
+ boost/spirit/home/classic/actor/insert_key_actor.hpp [2:3]
+ boost/spirit/home/classic/actor/push_back_actor.hpp [2:3]
+ boost/spirit/home/classic/actor/push_front_actor.hpp [2:3]
+ boost/spirit/home/classic/actor/ref_actor.hpp [2:3]
+ boost/spirit/home/classic/actor/ref_const_ref_actor.hpp [2:3]
+ boost/spirit/home/classic/actor/ref_const_ref_const_ref_a.hpp [2:3]
+ boost/spirit/home/classic/actor/ref_const_ref_value_actor.hpp [2:3]
+ boost/spirit/home/classic/actor/swap_actor.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL bf20d066d738abb72ed031e29830590e
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/complex.hpp at line 15, boost/serialization/ephemeral.hpp at line 14, boost/serialization/is_bitwise_serializable.hpp at line 3
+ License text:
+ // (C) Copyright 2007 Matthias Troyer .
+ // Use, modification and distribution is subject to the Boost Software
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/serialization/complex.hpp [13:15]
+ boost/serialization/ephemeral.hpp [12:14]
+ boost/serialization/is_bitwise_serializable.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL bf2ff0620c8b458255469b3f16d47c29
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/math/octonion.hpp at line 5, boost/math/quaternion.hpp at line 5, boost/math/special_functions/atanh.hpp at line 5, boost/math/special_functions/sinc.hpp at line 5, boost/math/special_functions/sinhc.hpp at line 5
+ License text:
+ // (C) Copyright Hubert Holin 2001.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/octonion.hpp [3:5]
+ boost/math/quaternion.hpp [3:5]
+ boost/math/special_functions/atanh.hpp [3:6]
+ boost/math/special_functions/sinc.hpp [3:5]
+ boost/math/special_functions/sinhc.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL bf641215d684707e5ad94b61496844f2
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/lockable_adapter.hpp at line 5, boost/thread/null_mutex.hpp at line 5, boost/thread/poly_lockable.hpp at line 5, boost/thread/poly_lockable_adapter.hpp at line 5, boost/thread/poly_shared_lockable.hpp at line 5, boost/thread/poly_shared_lockable_adapter.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/lockable_adapter.hpp [3:5]
+ boost/thread/null_mutex.hpp [3:5]
+ boost/thread/poly_lockable.hpp [3:5]
+ boost/thread/poly_lockable_adapter.hpp [3:5]
+ boost/thread/poly_shared_lockable.hpp [3:5]
+ boost/thread/poly_shared_lockable_adapter.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL bfdb31b5eecacab9825848f2ef7ae35b
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/extreme_points.hpp [3:6]
+ boost/geometry/algorithms/detail/overlay/overlay.hpp [3:4]
+ boost/geometry/algorithms/point_on_surface.hpp [3:6]
+ boost/geometry/strategies/cartesian/intersection.hpp [3:4]
+ boost/geometry/strategies/spherical/point_in_poly_winding.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL bfe32bdf692840baf1378322cd282268
+BELONGS ya.make
+ License text:
+ Copyright (c) 2006 Tobias Schwinger
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/actor/typeof.hpp [2:3]
+ boost/spirit/home/classic/attribute/closure_fwd.hpp [2:3]
+ boost/spirit/home/classic/attribute/typeof.hpp [2:3]
+ boost/spirit/home/classic/core/non_terminal/subrule_fwd.hpp [2:3]
+ boost/spirit/home/classic/core/primitives/numerics_fwd.hpp [2:3]
+ boost/spirit/home/classic/core/scanner/scanner_fwd.hpp [2:3]
+ boost/spirit/home/classic/core/scanner/skipper_fwd.hpp [2:3]
+ boost/spirit/home/classic/core/typeof.hpp [2:3]
+ boost/spirit/home/classic/debug/typeof.hpp [2:3]
+ boost/spirit/home/classic/dynamic/stored_rule_fwd.hpp [2:3]
+ boost/spirit/home/classic/dynamic/typeof.hpp [2:3]
+ boost/spirit/home/classic/error_handling/exceptions_fwd.hpp [2:3]
+ boost/spirit/home/classic/error_handling/typeof.hpp [2:3]
+ boost/spirit/home/classic/iterator/file_iterator_fwd.hpp [2:3]
+ boost/spirit/home/classic/iterator/multi_pass_fwd.hpp [2:3]
+ boost/spirit/home/classic/iterator/typeof.hpp [2:3]
+ boost/spirit/home/classic/symbols/symbols_fwd.hpp [2:3]
+ boost/spirit/home/classic/symbols/typeof.hpp [2:3]
+ boost/spirit/home/classic/tree/ast_fwd.hpp [2:3]
+ boost/spirit/home/classic/tree/common_fwd.hpp [2:3]
+ boost/spirit/home/classic/tree/parse_tree_fwd.hpp [2:3]
+ boost/spirit/home/classic/tree/typeof.hpp [2:3]
+ boost/spirit/home/classic/utility/confix_fwd.hpp [2:3]
+ boost/spirit/home/classic/utility/distinct_fwd.hpp [2:3]
+ boost/spirit/home/classic/utility/escape_char_fwd.hpp [2:3]
+ boost/spirit/home/classic/utility/grammar_def_fwd.hpp [2:3]
+ boost/spirit/home/classic/utility/lists_fwd.hpp [2:3]
+ boost/spirit/home/classic/utility/rule_parser.hpp [2:3]
+ boost/spirit/home/classic/utility/typeof.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL bfe968029d2d7c0f9f5dd472d766b65f
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2011 Hartmut Kaiser
+ Copyright (c) 2011 Bryce Lelbach
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/qi/numeric/bool.hpp [2:3]
+ boost/spirit/home/qi/numeric/int.hpp [2:3]
+ boost/spirit/home/qi/numeric/real.hpp [2:3]
+ boost/spirit/home/qi/numeric/uint.hpp [2:4]
+ boost/spirit/home/support/utree/detail/utree_detail1.hpp [2:4]
+ boost/spirit/home/support/utree/detail/utree_detail2.hpp [2:4]
+ boost/spirit/home/support/utree/operators.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL c00bfc5c4d0ddbae4e5f2f2570d510e6
+BELONGS ya.make
+ License text:
+ * Copyright (c) 2017 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/atomic/detail/extra_operations.hpp [6:6]
+ boost/atomic/detail/extra_operations_fwd.hpp [6:6]
+ boost/atomic/detail/extra_ops_msvc_arm.hpp [6:6]
+ boost/atomic/detail/extra_ops_msvc_x86.hpp [6:6]
+ boost/atomic/detail/hwcaps_gcc_arm.hpp [6:6]
+ boost/atomic/detail/hwcaps_gcc_ppc.hpp [6:6]
+ boost/atomic/detail/hwcaps_gcc_x86.hpp [6:6]
+ boost/atomic/detail/type_traits/conditional.hpp [6:6]
+ boost/atomic/detail/type_traits/integral_constant.hpp [6:6]
+ boost/atomic/detail/type_traits/is_function.hpp [6:6]
+ boost/atomic/detail/type_traits/is_integral.hpp [6:6]
+ boost/atomic/detail/type_traits/is_signed.hpp [6:6]
+ boost/atomic/detail/type_traits/make_signed.hpp [6:6]
+ boost/atomic/detail/type_traits/make_unsigned.hpp [6:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL c0163954740bc8af1c3c3e15261a286e
+BELONGS ya.make
+ License text:
+ // Copyright Beman Dawes 2008
+ // Copyright Vicente J. Botet Escriba 2009
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/chrono/detail/inlined/chrono.hpp [3:4]
+ boost/chrono/detail/inlined/mac/process_cpu_clocks.hpp [3:4]
+ boost/chrono/detail/inlined/posix/chrono.hpp [3:4]
+ boost/chrono/detail/inlined/posix/process_cpu_clocks.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL c01ae716b2d1d913ab203a9f2242558c
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
+ // Copyright 2004-2005 Peter Dimov
+ // Copyright 2006 Michael van der Westhuizen
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/detail/sp_counted_base_aix.hpp [8:10]
+ boost/smart_ptr/detail/sp_counted_base_solaris.hpp [8:10]
+ boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp [8:11]
+
+KEEP COPYRIGHT_SERVICE_LABEL c03642adfbfa6845d494d4322dfc657d
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2017 Denis Demidov <dennis.demidov@gmail.com>
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/compute/types/size_t.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL c053c607b6febdd053e512373ca02521
+BELONGS ya.make
+ License text:
+ // is handled by pj_transform.c.
+ // Author: Frank Warmerdam, warmerdam@pobox.com
+ // Copyright (c) 2002, Frank Warmerdam
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/srs/projections/proj/geocent.hpp [28:30]
+
+KEEP COPYRIGHT_SERVICE_LABEL c06c9ff8636443eb86616d2d2c0497be
+BELONGS ya.make
+ License text:
+ // Copyright (C) Christof Meerwald 2003
+ // Copyright (C) Dan Watkins 2003
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/digitalmars.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL c09f6e1583eaa14d572ddf59bb46a094
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/get_pointer.hpp at line 3
+ License text:
+ // Copyright Peter Dimov and David Abrahams 2002.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/get_pointer.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL c0cc7e92279cc3a48222bedfe56172b7
+BELONGS ya.make
+ License text:
+ // Copyright Vicente J. Botet Escriba 2010
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/ratio/detail/mpl/abs.hpp [3:3]
+ boost/ratio/detail/mpl/gcd.hpp [3:3]
+ boost/ratio/detail/mpl/lcm.hpp [3:3]
+ boost/ratio/detail/mpl/sign.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL c0d96450cb0615da66f558ed677a7814
+BELONGS libs/ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: libs/test/src/debug.cpp at line 3
+ License text:
+ // (C) Copyright Gennadiy Rozental 2006-2010.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ libs/test/src/debug.cpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL c0f674f1c6cab703b5219f707cbe9dfb
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2006, 2007.
+ // Copyright Paul A. Bristow 2006, 2007, 2009, 2010.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/distributions.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL c1075534b934af727571516a0c60c43f
+BELONGS ya.make
+ License text:
+ Copyright 2017-2018 Glen Joseph Fernandes
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_traits/detail/detector.hpp [2:2]
+ boost/type_traits/detected.hpp [2:2]
+ boost/type_traits/detected_or.hpp [2:2]
+ boost/type_traits/is_detected.hpp [2:2]
+ boost/type_traits/is_detected_convertible.hpp [2:2]
+ boost/type_traits/is_detected_exact.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL c13e1def70a329f1d91812ef6ac1c8a3
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2010 Tim Blechmann
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/heap/binomial_heap.hpp [3:3]
+ boost/heap/d_ary_heap.hpp [3:3]
+ boost/heap/detail/heap_comparison.hpp [3:3]
+ boost/heap/detail/heap_node.hpp [3:3]
+ boost/heap/detail/ilog2.hpp [3:3]
+ boost/heap/detail/mutable_heap.hpp [3:3]
+ boost/heap/detail/stable_heap.hpp [3:3]
+ boost/heap/detail/tree_iterator.hpp [3:3]
+ boost/heap/fibonacci_heap.hpp [3:3]
+ boost/heap/heap_concepts.hpp [3:3]
+ boost/heap/pairing_heap.hpp [3:3]
+ boost/heap/priority_queue.hpp [3:3]
+ boost/heap/skew_heap.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL c1a3993adb0438ffac1f5423da136f0b
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/ptr_container/detail/is_convertible.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/ptr_container/detail/is_convertible.hpp [1:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL c1ad1eba3e3dc2cbb9f429a55bf844e6
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iostreams/detail/config/windows_posix.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/iostreams/detail/config/windows_posix.hpp [1:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL c1b95253eef284c58b6ab544fca6d743
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2012 Oswin Krause
+ // Copyright (c) 2013 Joaquim Duran
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/ublas/matrix_vector.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL c1dec1e9437c6eb354abe1a9562b2d77
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/decay.hpp at line 3
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_traits/decay.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL c22913d29a72689a4dc05182fbd952c3
+BELONGS ya.make
+ License text:
+ // (C) Copyright 2013,2014 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/executors/work.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL c24b5b08917188c6ae925e003535d186
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/rolling_count.hpp at line 6, boost/accumulators/statistics/rolling_sum.hpp at line 6, boost/accumulators/statistics/rolling_window.hpp at line 6, boost/msm/back/fold_to_list.hpp at line 3, boost/proto/args.hpp at line 8, boost/proto/context.hpp at line 7, boost/proto/context/callable.hpp at line 11, boost/proto/context/default.hpp at line 9, boost/proto/context/detail/callable_eval.hpp at line 25, boost/proto/context/detail/default_eval.hpp at line 21, boost/proto/context/detail/null_eval.hpp at line 21, boost/proto/context/detail/preprocessed/callable_eval.hpp at line 7, boost/proto/context/detail/preprocessed/default_eval.hpp at line 7, boost/proto/context/detail/preprocessed/null_eval.hpp at line 7, boost/proto/context/null.hpp at line 9, boost/proto/core.hpp at line 8, boost/proto/debug.hpp at line 7, boost/proto/deep_copy.hpp at line 7, boost/proto/detail/and_n.hpp at line 17, boost/proto/detail/args.hpp at line 30, boost/proto/detail/as_lvalue.hpp at line 7, boost/proto/detail/basic_expr.hpp at line 30, boost/proto/detail/class_member_traits.hpp at line 17, boost/proto/detail/decltype.hpp at line 7, boost/proto/detail/deduce_domain_n.hpp at line 23, boost/proto/detail/deep_copy.hpp at line 29, boost/proto/detail/deprecated.hpp at line 8, boost/proto/detail/dont_care.hpp at line 7, boost/proto/detail/expr.hpp at line 35, boost/proto/detail/expr.hpp at line 63, boost/proto/detail/expr_funop.hpp at line 7, boost/proto/detail/extends_funop.hpp at line 27, boost/proto/detail/extends_funop_const.hpp at line 26, boost/proto/detail/funop.hpp at line 25, boost/proto/detail/generate_by_value.hpp at line 17, boost/proto/detail/ignore_unused.hpp at line 8, boost/proto/detail/is_noncopyable.hpp at line 7, boost/proto/detail/lambda_matches.hpp at line 23, boost/proto/detail/local.hpp at line 7, boost/proto/detail/make_expr.hpp at line 17, boost/proto/detail/make_expr_.hpp at line 17, boost/proto/detail/make_expr_funop.hpp at line 17, boost/proto/detail/matches_.hpp at line 31, boost/proto/detail/memfun_funop.hpp at line 17, boost/proto/detail/or_n.hpp at line 17, boost/proto/detail/poly_function.hpp at line 9, boost/proto/detail/poly_function_funop.hpp at line 22, boost/proto/detail/poly_function_traits.hpp at line 17, boost/proto/detail/preprocessed/and_n.hpp at line 7, boost/proto/detail/preprocessed/args.hpp at line 8, boost/proto/detail/preprocessed/basic_expr.hpp at line 7, boost/proto/detail/preprocessed/class_member_traits.hpp at line 7, boost/proto/detail/preprocessed/deduce_domain_n.hpp at line 7, boost/proto/detail/preprocessed/deep_copy.hpp at line 7, boost/proto/detail/preprocessed/expr.hpp at line 7, boost/proto/detail/preprocessed/expr_variadic.hpp at line 7, boost/proto/detail/preprocessed/extends_funop.hpp at line 7, boost/proto/detail/preprocessed/extends_funop_const.hpp at line 7, boost/proto/detail/preprocessed/funop.hpp at line 7, boost/proto/detail/preprocessed/generate_by_value.hpp at line 7, boost/proto/detail/preprocessed/lambda_matches.hpp at line 7, boost/proto/detail/preprocessed/make_expr.hpp at line 7, boost/proto/detail/preprocessed/make_expr_.hpp at line 7, boost/proto/detail/preprocessed/make_expr_funop.hpp at line 7, boost/proto/detail/preprocessed/matches_.hpp at line 7, boost/proto/detail/preprocessed/memfun_funop.hpp at line 7, boost/proto/detail/preprocessed/or_n.hpp at line 7, boost/proto/detail/preprocessed/poly_function_funop.hpp at line 7, boost/proto/detail/preprocessed/poly_function_traits.hpp at line 7, boost/proto/detail/preprocessed/template_arity_helper.hpp at line 7, boost/proto/detail/preprocessed/traits.hpp at line 7, boost/proto/detail/preprocessed/unpack_expr_.hpp at line 7, boost/proto/detail/preprocessed/vararg_matches_impl.hpp at line 7, boost/proto/detail/static_const.hpp at line 7, boost/proto/detail/template_arity_helper.hpp at line 17, boost/proto/detail/traits.hpp at line 22, boost/proto/detail/unpack_expr_.hpp at line 82, boost/proto/detail/vararg_matches_impl.hpp at line 17, boost/proto/domain.hpp at line 9, boost/proto/eval.hpp at line 7, boost/proto/expr.hpp at line 7, boost/proto/extends.hpp at line 7, boost/proto/fusion.hpp at line 7, boost/proto/generate.hpp at line 8, boost/proto/literal.hpp at line 8, boost/proto/make_expr.hpp at line 9, boost/proto/matches.hpp at line 8, boost/proto/operators.hpp at line 8, boost/proto/proto.hpp at line 7, boost/proto/proto_fwd.hpp at line 7, boost/proto/proto_typeof.hpp at line 8, boost/proto/repeat.hpp at line 7, boost/proto/tags.hpp at line 7, boost/proto/traits.hpp at line 9, boost/proto/transform.hpp at line 7, boost/proto/transform/arg.hpp at line 7, boost/proto/transform/call.hpp at line 7, boost/proto/transform/default.hpp at line 8, boost/proto/transform/detail/call.hpp at line 28, boost/proto/transform/detail/construct_funop.hpp at line 17, boost/proto/transform/detail/construct_pod_funop.hpp at line 17, boost/proto/transform/detail/default_function_impl.hpp at line 21, boost/proto/transform/detail/fold_impl.hpp at line 75, boost/proto/transform/detail/lazy.hpp at line 17, boost/proto/transform/detail/make.hpp at line 35, boost/proto/transform/detail/make_gcc_workaround.hpp at line 26, boost/proto/transform/detail/pass_through_impl.hpp at line 37, boost/proto/transform/detail/preprocessed/call.hpp at line 7, boost/proto/transform/detail/preprocessed/construct_funop.hpp at line 7, boost/proto/transform/detail/preprocessed/construct_pod_funop.hpp at line 7, boost/proto/transform/detail/preprocessed/default_function_impl.hpp at line 8, boost/proto/transform/detail/preprocessed/fold_impl.hpp at line 7, boost/proto/transform/detail/preprocessed/lazy.hpp at line 7, boost/proto/transform/detail/preprocessed/make.hpp at line 7, boost/proto/transform/detail/preprocessed/make_gcc_workaround.hpp at line 8, boost/proto/transform/detail/preprocessed/pass_through_impl.hpp at line 9, boost/proto/transform/detail/preprocessed/when.hpp at line 7, boost/proto/transform/detail/when.hpp at line 17, boost/proto/transform/fold.hpp at line 7, boost/proto/transform/fold_tree.hpp at line 7, boost/proto/transform/impl.hpp at line 7, boost/proto/transform/lazy.hpp at line 7, boost/proto/transform/make.hpp at line 7, boost/proto/transform/pass_through.hpp at line 10, boost/proto/transform/when.hpp at line 7, boost/regex/v4/regex_format.hpp at line 5, boost/xpressive/basic_regex.hpp at line 8, boost/xpressive/detail/core/access.hpp at line 6, boost/xpressive/detail/core/action.hpp at line 6, boost/xpressive/detail/core/adaptor.hpp at line 6, boost/xpressive/detail/core/finder.hpp at line 5, boost/xpressive/detail/core/flow_control.hpp at line 6, boost/xpressive/detail/core/icase.hpp at line 6, boost/xpressive/detail/core/linker.hpp at line 6, boost/xpressive/detail/core/matcher/action_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/alternate_end_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/alternate_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/any_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/assert_bol_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/assert_bos_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/assert_eol_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/assert_eos_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/assert_line_base.hpp at line 6, boost/xpressive/detail/core/matcher/assert_word_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/attr_begin_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/attr_end_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/attr_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/charset_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/end_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/epsilon_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/keeper_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/literal_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/logical_newline_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/lookahead_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/lookbehind_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/mark_begin_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/mark_end_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/mark_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/optional_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/posix_charset_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/predicate_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/range_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/regex_byref_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/regex_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/repeat_begin_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/repeat_end_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/set_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/simple_repeat_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/string_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/true_matcher.hpp at line 6, boost/xpressive/detail/core/matchers.hpp at line 6, boost/xpressive/detail/core/optimize.hpp at line 6, boost/xpressive/detail/core/peeker.hpp at line 6, boost/xpressive/detail/core/quant_style.hpp at line 6, boost/xpressive/detail/core/regex_impl.hpp at line 6, boost/xpressive/detail/core/results_cache.hpp at line 6, boost/xpressive/detail/core/state.hpp at line 6, boost/xpressive/detail/core/sub_match_impl.hpp at line 6, boost/xpressive/detail/core/sub_match_vector.hpp at line 6, boost/xpressive/detail/detail_fwd.hpp at line 6, boost/xpressive/detail/dynamic/dynamic.hpp at line 6, boost/xpressive/detail/dynamic/matchable.hpp at line 6, boost/xpressive/detail/dynamic/parse_charset.hpp at line 6, boost/xpressive/detail/dynamic/parser.hpp at line 8, boost/xpressive/detail/dynamic/parser_enum.hpp at line 6, boost/xpressive/detail/dynamic/parser_traits.hpp at line 6, boost/xpressive/detail/dynamic/sequence.hpp at line 6, boost/xpressive/detail/static/compile.hpp at line 6, boost/xpressive/detail/static/grammar.hpp at line 6, boost/xpressive/detail/static/is_pure.hpp at line 6, boost/xpressive/detail/static/modifier.hpp at line 6, boost/xpressive/detail/static/placeholders.hpp at line 6, boost/xpressive/detail/static/static.hpp at line 6, boost/xpressive/detail/static/transforms/as_action.hpp at line 6, boost/xpressive/detail/static/transforms/as_alternate.hpp at line 6, boost/xpressive/detail/static/transforms/as_independent.hpp at line 6, boost/xpressive/detail/static/transforms/as_inverse.hpp at line 6, boost/xpressive/detail/static/transforms/as_marker.hpp at line 6, boost/xpressive/detail/static/transforms/as_matcher.hpp at line 6, boost/xpressive/detail/static/transforms/as_modifier.hpp at line 6, boost/xpressive/detail/static/transforms/as_quantifier.hpp at line 6, boost/xpressive/detail/static/transforms/as_sequence.hpp at line 6, boost/xpressive/detail/static/transforms/as_set.hpp at line 6, boost/xpressive/detail/static/transmogrify.hpp at line 6, boost/xpressive/detail/static/type_traits.hpp at line 6, boost/xpressive/detail/static/visitor.hpp at line 6, boost/xpressive/detail/static/width_of.hpp at line 6, boost/xpressive/detail/utility/algorithm.hpp at line 6, boost/xpressive/detail/utility/any.hpp at line 6, boost/xpressive/detail/utility/boyer_moore.hpp at line 9, boost/xpressive/detail/utility/chset/chset.hpp at line 6, boost/xpressive/detail/utility/cons.hpp at line 6, boost/xpressive/detail/utility/dont_care.hpp at line 6, boost/xpressive/detail/utility/hash_peek_bitset.hpp at line 6, boost/xpressive/detail/utility/ignore_unused.hpp at line 6, boost/xpressive/detail/utility/literals.hpp at line 6, boost/xpressive/detail/utility/never_true.hpp at line 6, boost/xpressive/detail/utility/save_restore.hpp at line 6, boost/xpressive/detail/utility/sequence_stack.hpp at line 6, boost/xpressive/detail/utility/tracking_ptr.hpp at line 6, boost/xpressive/detail/utility/traits_utils.hpp at line 6, boost/xpressive/detail/utility/width.hpp at line 6, boost/xpressive/match_results.hpp at line 9, boost/xpressive/regex_actions.hpp at line 7, boost/xpressive/regex_algorithms.hpp at line 7, boost/xpressive/regex_compiler.hpp at line 8, boost/xpressive/regex_constants.hpp at line 8, boost/xpressive/regex_error.hpp at line 7, boost/xpressive/regex_iterator.hpp at line 8, boost/xpressive/regex_primitives.hpp at line 7, boost/xpressive/regex_token_iterator.hpp at line 8, boost/xpressive/regex_traits.hpp at line 8, boost/xpressive/sub_match.hpp at line 8, boost/xpressive/traits/c_regex_traits.hpp at line 9, boost/xpressive/traits/cpp_regex_traits.hpp at line 9, boost/xpressive/traits/detail/c_ctype.hpp at line 6, boost/xpressive/traits/null_regex_traits.hpp at line 9, boost/xpressive/xpressive.hpp at line 8, boost/xpressive/xpressive_dynamic.hpp at line 7, boost/xpressive/xpressive_fwd.hpp at line 7, boost/xpressive/xpressive_static.hpp at line 8, boost/xpressive/xpressive_typeof.hpp at line 7
+ License text:
+ // Copyright 2008 Eric Niebler. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/accumulators/statistics/rolling_count.hpp [4:6]
+ boost/accumulators/statistics/rolling_sum.hpp [4:6]
+ boost/accumulators/statistics/rolling_window.hpp [4:6]
+ boost/msm/back/fold_to_list.hpp [1:7]
+ boost/proto/args.hpp [6:8]
+ boost/proto/context.hpp [5:7]
+ boost/proto/context/callable.hpp [9:11]
+ boost/proto/context/default.hpp [7:9]
+ boost/proto/context/detail/callable_eval.hpp [23:25]
+ boost/proto/context/detail/default_eval.hpp [19:21]
+ boost/proto/context/detail/null_eval.hpp [19:21]
+ boost/proto/context/detail/preprocessed/callable_eval.hpp [5:7]
+ boost/proto/context/detail/preprocessed/default_eval.hpp [5:7]
+ boost/proto/context/detail/preprocessed/null_eval.hpp [5:7]
+ boost/proto/context/null.hpp [7:9]
+ boost/proto/core.hpp [6:8]
+ boost/proto/debug.hpp [5:7]
+ boost/proto/deep_copy.hpp [5:7]
+ boost/proto/detail/and_n.hpp [15:17]
+ boost/proto/detail/args.hpp [28:30]
+ boost/proto/detail/as_lvalue.hpp [5:7]
+ boost/proto/detail/basic_expr.hpp [28:30]
+ boost/proto/detail/class_member_traits.hpp [15:17]
+ boost/proto/detail/decltype.hpp [5:7]
+ boost/proto/detail/deduce_domain_n.hpp [21:23]
+ boost/proto/detail/deep_copy.hpp [27:29]
+ boost/proto/detail/deprecated.hpp [6:8]
+ boost/proto/detail/dont_care.hpp [5:7]
+ boost/proto/detail/expr.hpp [33:35]
+ boost/proto/detail/expr.hpp [61:63]
+ boost/proto/detail/expr_funop.hpp [5:7]
+ boost/proto/detail/extends_funop.hpp [25:27]
+ boost/proto/detail/extends_funop_const.hpp [24:26]
+ boost/proto/detail/funop.hpp [23:25]
+ boost/proto/detail/generate_by_value.hpp [15:17]
+ boost/proto/detail/ignore_unused.hpp [6:8]
+ boost/proto/detail/is_noncopyable.hpp [5:7]
+ boost/proto/detail/lambda_matches.hpp [21:23]
+ boost/proto/detail/local.hpp [5:7]
+ boost/proto/detail/make_expr.hpp [15:17]
+ boost/proto/detail/make_expr_.hpp [15:17]
+ boost/proto/detail/make_expr_funop.hpp [15:17]
+ boost/proto/detail/matches_.hpp [29:31]
+ boost/proto/detail/memfun_funop.hpp [15:17]
+ boost/proto/detail/or_n.hpp [15:17]
+ boost/proto/detail/poly_function.hpp [7:9]
+ boost/proto/detail/poly_function_funop.hpp [20:22]
+ boost/proto/detail/poly_function_traits.hpp [15:17]
+ boost/proto/detail/preprocessed/and_n.hpp [5:7]
+ boost/proto/detail/preprocessed/args.hpp [6:8]
+ boost/proto/detail/preprocessed/basic_expr.hpp [5:7]
+ boost/proto/detail/preprocessed/class_member_traits.hpp [5:7]
+ boost/proto/detail/preprocessed/deduce_domain_n.hpp [5:7]
+ boost/proto/detail/preprocessed/deep_copy.hpp [5:7]
+ boost/proto/detail/preprocessed/expr.hpp [5:7]
+ boost/proto/detail/preprocessed/expr_variadic.hpp [5:7]
+ boost/proto/detail/preprocessed/extends_funop.hpp [5:7]
+ boost/proto/detail/preprocessed/extends_funop_const.hpp [5:7]
+ boost/proto/detail/preprocessed/funop.hpp [5:7]
+ boost/proto/detail/preprocessed/generate_by_value.hpp [5:7]
+ boost/proto/detail/preprocessed/lambda_matches.hpp [5:7]
+ boost/proto/detail/preprocessed/make_expr.hpp [5:7]
+ boost/proto/detail/preprocessed/make_expr_.hpp [5:7]
+ boost/proto/detail/preprocessed/make_expr_funop.hpp [5:7]
+ boost/proto/detail/preprocessed/matches_.hpp [5:7]
+ boost/proto/detail/preprocessed/memfun_funop.hpp [5:7]
+ boost/proto/detail/preprocessed/or_n.hpp [5:7]
+ boost/proto/detail/preprocessed/poly_function_funop.hpp [5:7]
+ boost/proto/detail/preprocessed/poly_function_traits.hpp [5:7]
+ boost/proto/detail/preprocessed/template_arity_helper.hpp [5:7]
+ boost/proto/detail/preprocessed/traits.hpp [5:7]
+ boost/proto/detail/preprocessed/unpack_expr_.hpp [5:7]
+ boost/proto/detail/preprocessed/vararg_matches_impl.hpp [5:7]
+ boost/proto/detail/static_const.hpp [5:7]
+ boost/proto/detail/template_arity_helper.hpp [15:17]
+ boost/proto/detail/traits.hpp [20:22]
+ boost/proto/detail/unpack_expr_.hpp [80:82]
+ boost/proto/detail/vararg_matches_impl.hpp [15:17]
+ boost/proto/domain.hpp [7:9]
+ boost/proto/eval.hpp [5:7]
+ boost/proto/expr.hpp [5:7]
+ boost/proto/extends.hpp [5:7]
+ boost/proto/fusion.hpp [5:7]
+ boost/proto/generate.hpp [6:8]
+ boost/proto/literal.hpp [6:8]
+ boost/proto/make_expr.hpp [7:9]
+ boost/proto/matches.hpp [6:8]
+ boost/proto/operators.hpp [6:8]
+ boost/proto/proto.hpp [5:7]
+ boost/proto/proto_fwd.hpp [5:7]
+ boost/proto/proto_typeof.hpp [6:8]
+ boost/proto/repeat.hpp [5:7]
+ boost/proto/tags.hpp [5:7]
+ boost/proto/traits.hpp [7:9]
+ boost/proto/transform.hpp [5:7]
+ boost/proto/transform/arg.hpp [5:7]
+ boost/proto/transform/call.hpp [5:7]
+ boost/proto/transform/default.hpp [6:8]
+ boost/proto/transform/detail/call.hpp [26:28]
+ boost/proto/transform/detail/construct_funop.hpp [15:17]
+ boost/proto/transform/detail/construct_pod_funop.hpp [15:17]
+ boost/proto/transform/detail/default_function_impl.hpp [19:21]
+ boost/proto/transform/detail/fold_impl.hpp [73:75]
+ boost/proto/transform/detail/lazy.hpp [15:17]
+ boost/proto/transform/detail/make.hpp [33:35]
+ boost/proto/transform/detail/make_gcc_workaround.hpp [24:26]
+ boost/proto/transform/detail/pass_through_impl.hpp [35:37]
+ boost/proto/transform/detail/preprocessed/call.hpp [5:7]
+ boost/proto/transform/detail/preprocessed/construct_funop.hpp [5:7]
+ boost/proto/transform/detail/preprocessed/construct_pod_funop.hpp [5:7]
+ boost/proto/transform/detail/preprocessed/default_function_impl.hpp [6:8]
+ boost/proto/transform/detail/preprocessed/fold_impl.hpp [5:7]
+ boost/proto/transform/detail/preprocessed/lazy.hpp [5:7]
+ boost/proto/transform/detail/preprocessed/make.hpp [5:7]
+ boost/proto/transform/detail/preprocessed/make_gcc_workaround.hpp [6:8]
+ boost/proto/transform/detail/preprocessed/pass_through_impl.hpp [7:9]
+ boost/proto/transform/detail/preprocessed/when.hpp [5:7]
+ boost/proto/transform/detail/when.hpp [15:17]
+ boost/proto/transform/fold.hpp [5:7]
+ boost/proto/transform/fold_tree.hpp [5:7]
+ boost/proto/transform/impl.hpp [5:7]
+ boost/proto/transform/lazy.hpp [5:7]
+ boost/proto/transform/make.hpp [5:7]
+ boost/proto/transform/pass_through.hpp [8:10]
+ boost/proto/transform/when.hpp [5:7]
+ boost/regex/v4/regex_format.hpp [3:4]
+ boost/xpressive/basic_regex.hpp [6:8]
+ boost/xpressive/detail/core/access.hpp [4:6]
+ boost/xpressive/detail/core/action.hpp [4:6]
+ boost/xpressive/detail/core/adaptor.hpp [4:6]
+ boost/xpressive/detail/core/finder.hpp [3:5]
+ boost/xpressive/detail/core/flow_control.hpp [4:6]
+ boost/xpressive/detail/core/icase.hpp [4:6]
+ boost/xpressive/detail/core/linker.hpp [4:6]
+ boost/xpressive/detail/core/matcher/action_matcher.hpp [4:5]
+ boost/xpressive/detail/core/matcher/alternate_end_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/alternate_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/any_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/assert_bol_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/assert_bos_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/assert_eol_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/assert_eos_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/assert_line_base.hpp [4:6]
+ boost/xpressive/detail/core/matcher/assert_word_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/attr_begin_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/attr_end_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/attr_matcher.hpp [4:5]
+ boost/xpressive/detail/core/matcher/charset_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/end_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/epsilon_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/keeper_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/literal_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/logical_newline_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/lookahead_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/lookbehind_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/mark_begin_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/mark_end_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/mark_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/optional_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/posix_charset_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/predicate_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/range_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/regex_byref_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/regex_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/repeat_begin_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/repeat_end_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/set_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/simple_repeat_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/string_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/true_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matchers.hpp [4:6]
+ boost/xpressive/detail/core/optimize.hpp [4:6]
+ boost/xpressive/detail/core/peeker.hpp [4:6]
+ boost/xpressive/detail/core/quant_style.hpp [4:6]
+ boost/xpressive/detail/core/regex_impl.hpp [4:6]
+ boost/xpressive/detail/core/results_cache.hpp [4:6]
+ boost/xpressive/detail/core/state.hpp [4:6]
+ boost/xpressive/detail/core/sub_match_impl.hpp [4:6]
+ boost/xpressive/detail/core/sub_match_vector.hpp [4:6]
+ boost/xpressive/detail/detail_fwd.hpp [4:6]
+ boost/xpressive/detail/dynamic/dynamic.hpp [4:6]
+ boost/xpressive/detail/dynamic/matchable.hpp [4:6]
+ boost/xpressive/detail/dynamic/parse_charset.hpp [4:6]
+ boost/xpressive/detail/dynamic/parser.hpp [6:8]
+ boost/xpressive/detail/dynamic/parser_enum.hpp [4:6]
+ boost/xpressive/detail/dynamic/parser_traits.hpp [4:6]
+ boost/xpressive/detail/dynamic/sequence.hpp [4:6]
+ boost/xpressive/detail/static/compile.hpp [4:6]
+ boost/xpressive/detail/static/grammar.hpp [4:6]
+ boost/xpressive/detail/static/is_pure.hpp [4:6]
+ boost/xpressive/detail/static/modifier.hpp [4:6]
+ boost/xpressive/detail/static/placeholders.hpp [4:6]
+ boost/xpressive/detail/static/static.hpp [4:6]
+ boost/xpressive/detail/static/transforms/as_action.hpp [4:5]
+ boost/xpressive/detail/static/transforms/as_alternate.hpp [4:6]
+ boost/xpressive/detail/static/transforms/as_independent.hpp [4:6]
+ boost/xpressive/detail/static/transforms/as_inverse.hpp [4:6]
+ boost/xpressive/detail/static/transforms/as_marker.hpp [4:6]
+ boost/xpressive/detail/static/transforms/as_matcher.hpp [4:6]
+ boost/xpressive/detail/static/transforms/as_modifier.hpp [4:6]
+ boost/xpressive/detail/static/transforms/as_quantifier.hpp [4:6]
+ boost/xpressive/detail/static/transforms/as_sequence.hpp [4:6]
+ boost/xpressive/detail/static/transforms/as_set.hpp [4:6]
+ boost/xpressive/detail/static/transmogrify.hpp [4:6]
+ boost/xpressive/detail/static/type_traits.hpp [4:6]
+ boost/xpressive/detail/static/visitor.hpp [4:6]
+ boost/xpressive/detail/static/width_of.hpp [4:6]
+ boost/xpressive/detail/utility/algorithm.hpp [4:6]
+ boost/xpressive/detail/utility/any.hpp [4:6]
+ boost/xpressive/detail/utility/boyer_moore.hpp [7:9]
+ boost/xpressive/detail/utility/chset/chset.hpp [4:6]
+ boost/xpressive/detail/utility/cons.hpp [4:6]
+ boost/xpressive/detail/utility/dont_care.hpp [4:6]
+ boost/xpressive/detail/utility/hash_peek_bitset.hpp [4:6]
+ boost/xpressive/detail/utility/ignore_unused.hpp [4:6]
+ boost/xpressive/detail/utility/literals.hpp [4:6]
+ boost/xpressive/detail/utility/never_true.hpp [4:6]
+ boost/xpressive/detail/utility/save_restore.hpp [4:6]
+ boost/xpressive/detail/utility/sequence_stack.hpp [4:6]
+ boost/xpressive/detail/utility/tracking_ptr.hpp [4:6]
+ boost/xpressive/detail/utility/traits_utils.hpp [4:6]
+ boost/xpressive/detail/utility/width.hpp [4:6]
+ boost/xpressive/match_results.hpp [7:9]
+ boost/xpressive/regex_actions.hpp [5:7]
+ boost/xpressive/regex_algorithms.hpp [5:7]
+ boost/xpressive/regex_compiler.hpp [6:8]
+ boost/xpressive/regex_constants.hpp [6:8]
+ boost/xpressive/regex_error.hpp [5:7]
+ boost/xpressive/regex_iterator.hpp [6:8]
+ boost/xpressive/regex_primitives.hpp [5:7]
+ boost/xpressive/regex_token_iterator.hpp [6:8]
+ boost/xpressive/regex_traits.hpp [6:8]
+ boost/xpressive/sub_match.hpp [6:8]
+ boost/xpressive/traits/c_regex_traits.hpp [7:9]
+ boost/xpressive/traits/cpp_regex_traits.hpp [7:9]
+ boost/xpressive/traits/detail/c_ctype.hpp [4:6]
+ boost/xpressive/traits/null_regex_traits.hpp [7:9]
+ boost/xpressive/xpressive.hpp [6:8]
+ boost/xpressive/xpressive_dynamic.hpp [5:7]
+ boost/xpressive/xpressive_fwd.hpp [5:7]
+ boost/xpressive/xpressive_static.hpp [6:8]
+ boost/xpressive/xpressive_typeof.hpp [5:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL c2741368ba398ca55c95dc8b018d1cb0
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/context/all.hpp at line 4, boost/coroutine2/detail/pull_control_block_cc.hpp at line 4, boost/coroutine2/detail/pull_control_block_cc.ipp at line 4, boost/fiber/buffered_channel.hpp at line 4, boost/fiber/detail/cpu_relax.hpp at line 4, boost/fiber/detail/futex.hpp at line 4, boost/fiber/detail/spinlock_ttas.hpp at line 4, boost/fiber/detail/spinlock_ttas_adaptive.hpp at line 4, boost/fiber/detail/spinlock_ttas_adaptive_futex.hpp at line 4, boost/fiber/detail/spinlock_ttas_futex.hpp at line 4, boost/fiber/unbuffered_channel.hpp at line 4
+ License text:
+ // Copyright Oliver Kowalke 2016.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/context/all.hpp [2:4]
+ boost/coroutine2/detail/pull_control_block_cc.hpp [2:4]
+ boost/coroutine2/detail/pull_control_block_cc.ipp [2:4]
+ boost/fiber/buffered_channel.hpp [2:4]
+ boost/fiber/detail/cpu_relax.hpp [2:4]
+ boost/fiber/detail/futex.hpp [2:4]
+ boost/fiber/detail/spinlock_ttas.hpp [2:4]
+ boost/fiber/detail/spinlock_ttas_adaptive.hpp [2:4]
+ boost/fiber/detail/spinlock_ttas_adaptive_futex.hpp [2:4]
+ boost/fiber/detail/spinlock_ttas_futex.hpp [2:4]
+ boost/fiber/unbuffered_channel.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL c29d179088542ed9c943e7ea0446a664
+BELONGS ya.make
+ License text:
+ Copyright 2011-2013 Karsten Ahnert
+ Copyright 2011-2013 Thorsten Ottosen
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/util/detail/is_range.hpp [9:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL c2a40dd3d7fc7e08707b6696db3af8f2
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001, Daniel C. Nuffer
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/iterator/multi_pass.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL c2a75373687b831a8c883e962d773df6
+BELONGS ya.make
+ License text:
+ Copyright (c) 2012 Paul Fultz II
+ first_of.h
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/hof/detail/delegate.hpp [2:4]
+ boost/hof/detail/join.hpp [2:4]
+ boost/hof/detail/seq.hpp [2:4]
+ boost/hof/first_of.hpp [2:4]
+ boost/hof/identity.hpp [2:4]
+ boost/hof/implicit.hpp [2:4]
+ boost/hof/match.hpp [2:4]
+ boost/hof/partial.hpp [2:4]
+ boost/hof/pipable.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL c2b674f0ff2226395728254aea84cfa4
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2009-2015 Barend Gehrels, Amsterdam, the Netherlands.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/io/svg/svg_mapper.hpp [3:3]
+ boost/geometry/strategies/cartesian/centroid_weighted_length.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL c2b774c26af57c9a8aa6c361e73bd74c
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001, Daniel C. Nuffer
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/archive/impl/basic_xml_grammar.hpp [27:27]
+ boost/spirit/home/classic/iterator/fixed_size_queue.hpp [2:4]
+ boost/spirit/home/support/iterators/detail/buf_id_check_policy.hpp [1:2]
+ boost/spirit/home/support/iterators/detail/first_owner_policy.hpp [1:2]
+ boost/spirit/home/support/iterators/look_ahead.hpp [1:3]
+ boost/spirit/home/support/iterators/multi_pass.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL c30de2713f6adb4cc18cd66c69ba60b2
+BELONGS ya.make
+ License text:
+ // Copyright (c) David Abrahams 2001.
+ // Copyright (c) Jeremy Siek 2001-2003.
+ // Copyright (c) Thomas Witt 2002.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/iterator/new_iterator_tests.hpp [5:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL c37cd15a7f997072c7c854c7d6195fe3
+BELONGS ya.make
+ License text:
+ // Copyright Beman Dawes 2006, 2007
+ // Copyright Christoper Kohlhoff 2007
+ // Copyright Peter Dimov 2017, 2018
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/system/error_code.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL c3813bc43fb45363daf247950761e4d4
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/library/c/_prefix.h at line 4, boost/predef/library/std/_prefix.h at line 4
+ License text:
+ Copyright Rene Rivera 2008-2013
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/predef/library/c/_prefix.h [2:4]
+ boost/predef/library/std/_prefix.h [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL c3a440d06912f47e5190235167d26eea
+BELONGS ya.make
+ License text:
+ // Copyright 2001 University of Notre Dame.
+ // Copyright 2006 Trustees of Indiana University
+ // Authors: Jeremy G. Siek and Douglas Gregor <dgregor@cs.indiana.edu>
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/adjacency_matrix.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL c3ce9643507aa0942a28211fe8f95eff
+BELONGS libs/context/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/context/continuation.hpp at line 4, boost/context/continuation_fcontext.hpp at line 4, boost/context/continuation_ucontext.hpp at line 4, boost/context/continuation_winfib.hpp at line 4, boost/context/detail/prefetch.hpp at line 3, boost/context/fiber.hpp at line 4, boost/context/fiber_fcontext.hpp at line 4, boost/context/fiber_ucontext.hpp at line 4, boost/context/fiber_winfib.hpp at line 4, boost/fiber/algo/numa/work_stealing.hpp at line 4, boost/fiber/cuda/waitfor.hpp at line 4, boost/fiber/detail/is_all_same.hpp at line 4, boost/fiber/detail/rtm.hpp at line 4, boost/fiber/detail/spinlock_rtm.hpp at line 4, boost/fiber/detail/spinlock_status.hpp at line 4, boost/fiber/hip/waitfor.hpp at line 4, boost/fiber/numa/pin_thread.hpp at line 4, boost/fiber/numa/topology.hpp at line 4, libs/context/src/continuation.cpp at line 4, libs/context/src/fiber.cpp at line 4
+ License text:
+ // Copyright Oliver Kowalke 2017.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/context/continuation.hpp [2:4]
+ boost/context/continuation_fcontext.hpp [2:4]
+ boost/context/continuation_ucontext.hpp [2:4]
+ boost/context/continuation_winfib.hpp [2:4]
+ boost/context/detail/prefetch.hpp [1:3]
+ boost/context/fiber.hpp [2:4]
+ boost/context/fiber_fcontext.hpp [2:4]
+ boost/context/fiber_ucontext.hpp [2:4]
+ boost/context/fiber_winfib.hpp [2:4]
+ boost/fiber/algo/numa/work_stealing.hpp [2:4]
+ boost/fiber/cuda/waitfor.hpp [2:4]
+ boost/fiber/detail/is_all_same.hpp [2:4]
+ boost/fiber/detail/rtm.hpp [2:4]
+ boost/fiber/detail/spinlock_rtm.hpp [2:4]
+ boost/fiber/detail/spinlock_status.hpp [2:4]
+ boost/fiber/hip/waitfor.hpp [2:4]
+ boost/fiber/numa/pin_thread.hpp [2:4]
+ boost/fiber/numa/topology.hpp [2:4]
+ libs/context/src/continuation.cpp [2:4]
+ libs/context/src/fiber.cpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL c3f6937fa9ed593f0837a0f91c6d568a
+BELONGS libs/chrono/ya.make ya.make
+ License text:
+ // Copyright 2010 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/chrono/detail/inlined/thread_clock.hpp [3:3]
+ boost/chrono/detail/inlined/win/thread_clock.hpp [3:3]
+ boost/chrono/detail/scan_keyword.hpp [12:12]
+ boost/ratio.hpp [3:3]
+ boost/type_traits/add_rvalue_reference.hpp [3:3]
+ boost/type_traits/declval.hpp [3:3]
+ boost/utility/declval.hpp [3:3]
+ boost/winapi/apc.hpp [2:3]
+ boost/winapi/basic_types.hpp [2:3]
+ boost/winapi/condition_variable.hpp [2:3]
+ boost/winapi/critical_section.hpp [2:3]
+ boost/winapi/directory_management.hpp [2:3]
+ boost/winapi/dll.hpp [2:5]
+ boost/winapi/error_handling.hpp [2:4]
+ boost/winapi/event.hpp [2:3]
+ boost/winapi/file_management.hpp [2:5]
+ boost/winapi/file_mapping.hpp [2:5]
+ boost/winapi/get_current_process.hpp [2:3]
+ boost/winapi/get_current_process_id.hpp [2:2]
+ boost/winapi/get_current_thread.hpp [2:3]
+ boost/winapi/get_current_thread_id.hpp [2:3]
+ boost/winapi/get_last_error.hpp [2:3]
+ boost/winapi/get_process_times.hpp [2:2]
+ boost/winapi/get_thread_times.hpp [2:3]
+ boost/winapi/handles.hpp [2:3]
+ boost/winapi/heap_memory.hpp [2:3]
+ boost/winapi/init_once.hpp [2:3]
+ boost/winapi/local_memory.hpp [2:3]
+ boost/winapi/memory.hpp [2:3]
+ boost/winapi/mutex.hpp [2:3]
+ boost/winapi/security.hpp [2:3]
+ boost/winapi/semaphore.hpp [2:3]
+ boost/winapi/srw_lock.hpp [2:3]
+ boost/winapi/synchronization.hpp [2:3]
+ boost/winapi/system.hpp [2:4]
+ boost/winapi/thread.hpp [2:3]
+ boost/winapi/time.hpp [2:4]
+ boost/winapi/timers.hpp [2:3]
+ boost/winapi/wait.hpp [2:4]
+ libs/chrono/src/thread_clock.cpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL c42c62dc83160665ca873f9cf86d5120
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2007 The Trustees of Indiana University.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/distributed/delta_stepping_shortest_paths.hpp [1:1]
+ boost/mpi/intercommunicator.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL c43f1a8f551d96ac636a4afde37c7277
+BELONGS ya.make
+ License text:
+ // (C) Copyright 2009 Eric Bose-Wolf
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/transitive_reduction.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL c44aa21684966e124d964b7f61ceb274
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2006 The Trustees of Indiana University.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/distributed/compressed_sparse_row_graph.hpp [1:1]
+ boost/graph/distributed/selector.hpp [1:1]
+ boost/graph/distributed/st_connected.hpp [1:1]
+ boost/graph/distributed/two_bit_color_map.hpp [1:1]
+ boost/graph/distributed/unsafe_serialize.hpp [1:1]
+ boost/graph/st_connected.hpp [1:1]
+ boost/property_map/parallel/unsafe_serialize.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL c4522d1369b94279fbb23ab0ac17f56f
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2013-2014 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/csbl/memory/unique_ptr.hpp [1:1]
+ boost/thread/executors/basic_thread_pool.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL c46012eca8a3e5ac59a255e4e1b4af11
+BELONGS ya.make
+ License text:
+ // Copyright Beman Dawes 2003, 2006, 2008
+ // Copyright 2009-2011 Vicente J. Botet Escriba
+ // Copyright (c) Microsoft Corporation 2014
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/chrono/config.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL c49f54d66ea47f16d108769b63951ae7
+BELONGS ya.make
+ License text:
+ Author: Joachim Faulhaber
+ Copyright (c) 2009-2010: Joachim Faulhaber
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/icl/detail/design_config.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL c4fca1d4b932defc8caff94eaf8ea7e8
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2010 Peder Holt
+ // Use, modification and distribution is subject to the Boost Software
+ // License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/typeof/unsupported.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL c511f6b71fbe5ddd178ed0f458fb2bd2
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/flyweight/detail/recursive_lw_mutex.hpp at line 3
+ License text:
+ /* Copyright 2006-2013 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/flyweight/detail/recursive_lw_mutex.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL c53a70d05211d1267ddeb5866bb86169
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2010 Nuovation System Designs, LLC
+ // Grant Erickson <gerickson@nuovations.com>
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/algorithm/cxx11/is_sorted.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL c5a98cb7899420f8c9cbc5618165814f
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/policies/robustness/get_rescale_policy.hpp [3:6]
+ boost/geometry/policies/robustness/rescale_policy.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL c5e47f450728151ab0ae75f0eff6e2ec
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/expand/box.hpp [3:6]
+ boost/geometry/algorithms/detail/expand/implementation.hpp [3:6]
+ boost/geometry/algorithms/detail/expand/indexed.hpp [3:6]
+ boost/geometry/algorithms/detail/expand/interface.hpp [3:6]
+ boost/geometry/algorithms/detail/expand/point.hpp [3:6]
+ boost/geometry/algorithms/detail/expand/segment.hpp [3:6]
+ boost/geometry/algorithms/dispatch/expand.hpp [3:6]
+ boost/geometry/algorithms/expand.hpp [3:6]
+ boost/geometry/strategies/distance_result.hpp [3:7]
+ boost/geometry/util/combine_if.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL c60de0ab1b87180baa8dac7f813ae3b4
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/constants/constants.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL c640a5601cfe103fea089d974c7050b7
+BELONGS ya.make
+ License text:
+ // (C) Copyright Darin Adler 2000
+ // (C) Copyright Beman Dawes 2006, 2009, 2014
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/endian/arithmetic.hpp [3:4]
+ boost/endian/buffers.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL c6910ec25728192b1e3d5d011fd08bc4
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/rolling_moment.hpp at line 6, boost/accumulators/statistics/rolling_variance.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/accumulators/statistics/rolling_moment.hpp [3:6]
+ boost/accumulators/statistics/rolling_variance.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL c6ddcace49cae4846a1e1f29e64a3cb8
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2002 Eric Friedman, Itay Maman
+ // Copyright (c) 2016-2017 Antony Polukhin
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/variant/recursive_wrapper_fwd.hpp [6:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL c6f32cbdc60da329c029d3eceb822cb5
+BELONGS ya.make
+ License text:
+ // Copyright 2001 Indiana University
+ // Author: Jeremy G. Siek
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/iteration_macros.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL c709b7e0fb1043b3cbf5a01d9703ab0b
+BELONGS ya.make
+ License text:
+ // (C) Copyright 2007-8 Anthony Williams
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/detail/move.hpp [4:5]
+ boost/thread/detail/platform_time.hpp [3:4]
+ boost/thread/pthread/condition_variable_fwd.hpp [6:7]
+ boost/thread/pthread/mutex.hpp [3:6]
+ boost/thread/pthread/once.hpp [6:7]
+ boost/thread/pthread/pthread_mutex_scoped_lock.hpp [3:3]
+ boost/thread/pthread/recursive_mutex.hpp [3:6]
+ boost/thread/thread.hpp [6:6]
+ boost/thread/tss.hpp [6:6]
+ boost/thread/win32/condition_variable.hpp [6:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL c71c982168dadac76afc264af18e2e74
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2012-2015 Barend Gehrels, Amsterdam, the Netherlands.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/buffer/buffered_ring.hpp [3:3]
+ boost/geometry/strategies/cartesian/buffer_end_round.hpp [3:3]
+ boost/geometry/strategies/cartesian/buffer_join_round.hpp [3:3]
+ boost/geometry/strategies/cartesian/buffer_point_circle.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL c76a2f55366b4f9354548d6ef58f5636
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/array.hpp at line 6, boost/preprocessor/array/enum.hpp at line 6, boost/preprocessor/array/to_list.hpp at line 6, boost/preprocessor/array/to_seq.hpp at line 6, boost/preprocessor/array/to_tuple.hpp at line 6, boost/preprocessor/config/config.hpp at line 6, boost/preprocessor/facilities.hpp at line 6, boost/preprocessor/facilities/overload.hpp at line 6, boost/preprocessor/library.hpp at line 6, boost/preprocessor/list/to_seq.hpp at line 6, boost/preprocessor/seq.hpp at line 6, boost/preprocessor/seq/to_list.hpp at line 6, boost/preprocessor/tuple/enum.hpp at line 6, boost/preprocessor/tuple/size.hpp at line 6, boost/preprocessor/tuple/to_array.hpp at line 6, boost/preprocessor/tuple/to_seq.hpp at line 6, boost/preprocessor/variadic.hpp at line 6, boost/preprocessor/variadic/elem.hpp at line 6, boost/preprocessor/variadic/size.hpp at line 6, boost/preprocessor/variadic/to_array.hpp at line 6, boost/preprocessor/variadic/to_list.hpp at line 6, boost/preprocessor/variadic/to_seq.hpp at line 6, boost/preprocessor/variadic/to_tuple.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/preprocessor/array.hpp [3:6]
+ boost/preprocessor/array/enum.hpp [3:6]
+ boost/preprocessor/array/to_list.hpp [3:6]
+ boost/preprocessor/array/to_seq.hpp [3:6]
+ boost/preprocessor/array/to_tuple.hpp [3:6]
+ boost/preprocessor/config/config.hpp [3:6]
+ boost/preprocessor/facilities.hpp [3:6]
+ boost/preprocessor/facilities/overload.hpp [3:6]
+ boost/preprocessor/library.hpp [3:6]
+ boost/preprocessor/list/to_seq.hpp [3:5]
+ boost/preprocessor/seq.hpp [3:6]
+ boost/preprocessor/seq/to_list.hpp [3:6]
+ boost/preprocessor/tuple/enum.hpp [3:6]
+ boost/preprocessor/tuple/size.hpp [3:6]
+ boost/preprocessor/tuple/to_array.hpp [3:6]
+ boost/preprocessor/tuple/to_seq.hpp [3:6]
+ boost/preprocessor/variadic.hpp [3:6]
+ boost/preprocessor/variadic/elem.hpp [3:6]
+ boost/preprocessor/variadic/size.hpp [3:6]
+ boost/preprocessor/variadic/to_array.hpp [3:6]
+ boost/preprocessor/variadic/to_list.hpp [3:6]
+ boost/preprocessor/variadic/to_seq.hpp [3:6]
+ boost/preprocessor/variadic/to_tuple.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL c78d51f4dac16e21ce87ad483fecbb48
+BELONGS ya.make
+ License text:
+ Copyright 2009-2013 Karsten Ahnert
+ Copyright 2010-2013 Mario Mulansky
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint.hpp [9:10]
+ boost/numeric/odeint/algebra/default_operations.hpp [9:10]
+ boost/numeric/odeint/algebra/range_algebra.hpp [10:11]
+ boost/numeric/odeint/algebra/vector_space_algebra.hpp [9:10]
+ boost/numeric/odeint/external/thrust/thrust_algebra.hpp [9:11]
+ boost/numeric/odeint/external/thrust/thrust_operations.hpp [9:10]
+ boost/numeric/odeint/stepper/euler.hpp [10:11]
+ boost/numeric/odeint/stepper/runge_kutta4_classic.hpp [9:11]
+ boost/numeric/odeint/stepper/runge_kutta_cash_karp54_classic.hpp [9:11]
+ boost/numeric/odeint/stepper/runge_kutta_dopri5.hpp [9:11]
+
+KEEP COPYRIGHT_SERVICE_LABEL c7981cf792be7f48f85bf12a688929cc
+BELONGS ya.make
+ License text:
+ //Copyright (c) 2008-2017 Emil Dotchevski and Reverge Studios, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/qvm/gen/mat_assign2.hpp [1:1]
+ boost/qvm/gen/mat_assign3.hpp [1:1]
+ boost/qvm/gen/mat_assign4.hpp [1:1]
+ boost/qvm/gen/mat_operations2.hpp [1:1]
+ boost/qvm/gen/mat_operations3.hpp [1:1]
+ boost/qvm/gen/mat_operations4.hpp [1:1]
+ boost/qvm/gen/swizzle2.hpp [1:1]
+ boost/qvm/gen/swizzle3.hpp [1:1]
+ boost/qvm/gen/swizzle4.hpp [1:1]
+ boost/qvm/gen/vec_assign2.hpp [1:1]
+ boost/qvm/gen/vec_assign3.hpp [1:1]
+ boost/qvm/gen/vec_assign4.hpp [1:1]
+ boost/qvm/gen/vec_mat_operations2.hpp [1:1]
+ boost/qvm/gen/vec_mat_operations3.hpp [1:1]
+ boost/qvm/gen/vec_mat_operations4.hpp [1:1]
+ boost/qvm/gen/vec_operations2.hpp [1:1]
+ boost/qvm/gen/vec_operations3.hpp [1:1]
+ boost/qvm/gen/vec_operations4.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL c7cb1452efce1db5158dd9b492eedf8a
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/adaptor/formatted.hpp at line 5, boost/range/detail/combine_cxx03.hpp at line 5, boost/range/detail/combine_cxx11.hpp at line 3, boost/range/detail/combine_no_rvalue.hpp at line 5, boost/range/detail/combine_rvalue.hpp at line 5, boost/range/detail/default_constructible_unary_fn.hpp at line 5, boost/range/detail/has_member_size.hpp at line 5, boost/range/iterator_range_hash.hpp at line 5, boost/range/traversal.hpp at line 5
+ License text:
+ // Copyright Neil Groves 2014
+ // Use, modification and distribution is subject to the Boost Software
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/range/adaptor/formatted.hpp [3:5]
+ boost/range/detail/combine_cxx03.hpp [3:5]
+ boost/range/detail/combine_cxx11.hpp [1:3]
+ boost/range/detail/combine_no_rvalue.hpp [3:5]
+ boost/range/detail/combine_rvalue.hpp [3:5]
+ boost/range/detail/default_constructible_unary_fn.hpp [3:5]
+ boost/range/detail/has_member_size.hpp [3:3]
+ boost/range/iterator_range_hash.hpp [3:5]
+ boost/range/traversal.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL c7cf09499d2dd399cc5598f624cdc124
+BELONGS ya.make
+ License text:
+ Copyright 2011-2012 Mario Mulansky
+ Copyright 2011-2012 Karsten Ahnert
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/config.hpp [9:10]
+ boost/numeric/odeint/external/gsl/gsl_wrapper.hpp [9:10]
+ boost/numeric/odeint/integrate/integrate.hpp [9:10]
+ boost/numeric/odeint/integrate/null_observer.hpp [9:10]
+ boost/numeric/odeint/integrate/observer_collection.hpp [9:10]
+ boost/numeric/odeint/stepper/detail/adams_bashforth_coefficients.hpp [9:10]
+ boost/numeric/odeint/stepper/detail/adams_moulton_coefficients.hpp [9:10]
+ boost/numeric/odeint/stepper/detail/generic_rk_call_algebra.hpp [9:10]
+ boost/numeric/odeint/stepper/generation/generation_controlled_runge_kutta.hpp [9:10]
+ boost/numeric/odeint/stepper/generation/generation_dense_output_runge_kutta.hpp [9:10]
+ boost/numeric/odeint/stepper/generation/generation_rosenbrock4.hpp [9:10]
+ boost/numeric/odeint/stepper/generation/make_controlled.hpp [9:10]
+ boost/numeric/odeint/stepper/generation/make_dense_output.hpp [9:10]
+ boost/numeric/odeint/stepper/rosenbrock4.hpp [10:12]
+ boost/numeric/odeint/stepper/rosenbrock4_controller.hpp [9:11]
+ boost/numeric/odeint/util/copy.hpp [9:10]
+ boost/numeric/odeint/util/resizer.hpp [9:10]
+ boost/numeric/odeint/util/state_wrapper.hpp [10:11]
+ boost/numeric/odeint/version.hpp [9:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL c7fb90bfcebe93e2405dc45f1e9ec21a
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/equals/implementation.hpp [3:6]
+ boost/geometry/algorithms/detail/equals/interface.hpp [3:6]
+ boost/geometry/algorithms/detail/sections/sectionalize.hpp [3:6]
+ boost/geometry/algorithms/equals.hpp [3:6]
+ boost/geometry/index/detail/bounded_view.hpp [6:6]
+ boost/geometry/policies/robustness/get_rescale_policy.hpp [3:6]
+ boost/geometry/policies/robustness/rescale_policy.hpp [3:6]
+ boost/geometry/views/detail/indexed_point_view.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL c80445a5f7df9ecc827dd650da9cbaa8
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2002, 2003 Peter Dimov
+ // Copyright (c) 2003 Daniel Frey
+ // Copyright (c) 2003 Howard Hinnant
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/core/checked_delete.hpp [13:15]
+
+KEEP COPYRIGHT_SERVICE_LABEL c8491f9471a05c66b2b0b94793f3fadc
+BELONGS ya.make
+ License text:
+ // Copyright Pavol Droba 2002-2003.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/algorithm/string/case_conv.hpp [3:3]
+ boost/algorithm/string/classification.hpp [3:3]
+ boost/algorithm/string/concept.hpp [3:3]
+ boost/algorithm/string/config.hpp [3:3]
+ boost/algorithm/string/constants.hpp [3:3]
+ boost/algorithm/string/detail/case_conv.hpp [3:3]
+ boost/algorithm/string/detail/classification.hpp [3:3]
+ boost/algorithm/string/detail/find_format.hpp [3:3]
+ boost/algorithm/string/detail/find_format_all.hpp [3:3]
+ boost/algorithm/string/detail/find_format_store.hpp [3:3]
+ boost/algorithm/string/detail/find_iterator.hpp [3:3]
+ boost/algorithm/string/detail/finder_regex.hpp [3:3]
+ boost/algorithm/string/detail/formatter.hpp [3:3]
+ boost/algorithm/string/detail/formatter_regex.hpp [3:3]
+ boost/algorithm/string/detail/predicate.hpp [3:3]
+ boost/algorithm/string/detail/replace_storage.hpp [3:3]
+ boost/algorithm/string/detail/sequence.hpp [3:3]
+ boost/algorithm/string/detail/trim.hpp [3:3]
+ boost/algorithm/string/detail/util.hpp [3:3]
+ boost/algorithm/string/find.hpp [3:3]
+ boost/algorithm/string/find_format.hpp [3:3]
+ boost/algorithm/string/formatter.hpp [3:3]
+ boost/algorithm/string/iter_find.hpp [3:3]
+ boost/algorithm/string/predicate.hpp [3:3]
+ boost/algorithm/string/predicate_facade.hpp [3:3]
+ boost/algorithm/string/regex.hpp [3:3]
+ boost/algorithm/string/regex_find_format.hpp [3:3]
+ boost/algorithm/string/sequence_traits.hpp [3:3]
+ boost/algorithm/string/std/list_traits.hpp [3:3]
+ boost/algorithm/string/std/rope_traits.hpp [3:3]
+ boost/algorithm/string/std/slist_traits.hpp [3:3]
+ boost/algorithm/string/std/string_traits.hpp [3:3]
+ boost/algorithm/string/std_containers_traits.hpp [3:3]
+ boost/algorithm/string/trim.hpp [3:3]
+ boost/algorithm/string/trim_all.hpp [3:3]
+ boost/algorithm/string/yes_no_type.hpp [3:3]
+ boost/range/detail/collection_traits.hpp [3:5]
+ boost/range/detail/collection_traits_detail.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL c852fa161dd8444a44450deac07d7631
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/geometries/polygon.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL c8b2225195e675e39283e940da8d4aca
+BELONGS ya.make
+ License text:
+ // Copyright 2013 Maciej Piechotka
+ // Authors: Maciej Piechotka
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/edge_coloring.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL c8d4e667a2b45ad481c6365ab8ff146a
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2003, 2008 Fernando Luis Cacciola Carballal.
+ // Copyright (C) 2015 Andrzej Krzemienski.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/optional/detail/optional_relops.hpp [1:2]
+ boost/optional/detail/optional_swap.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL c8f7e91cd195e8c07907b91700843aa8
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/is_floating_point.hpp at line 3, boost/type_traits/remove_extent.hpp at line 4
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_traits/is_floating_point.hpp [1:3]
+ boost/type_traits/remove_extent.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL c91df6862997c9f36164f1308b236bf7
+BELONGS ya.make
+ License text:
+ // Copyright 2007 Aaron Windsor
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/boyer_myrvold_planar_test.hpp [2:2]
+ boost/graph/is_kuratowski_subgraph.hpp [2:2]
+ boost/graph/is_straight_line_drawing.hpp [2:2]
+ boost/graph/make_biconnected_planar.hpp [2:2]
+ boost/graph/make_connected.hpp [2:2]
+ boost/graph/make_maximal_planar.hpp [2:2]
+ boost/graph/planar_detail/add_edge_visitors.hpp [2:2]
+ boost/graph/planar_detail/bucket_sort.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL c98683db2d8fa0352ce99bf5eb8af524
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/version.h at line 4
+ License text:
+ Copyright Rene Rivera 2015-2016
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/predef/version.h [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL c99a2d96dc6e8183a5787f5bf53caeab
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2013-2015 Kyle Lutz <kyle.r.lutz@gmail.com>
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/compute/algorithm/transform_if.hpp [2:2]
+ boost/compute/async/wait_guard.hpp [2:2]
+ boost/compute/detail/parameter_cache.hpp [2:2]
+ boost/compute/exception/no_device_found.hpp [2:2]
+ boost/compute/image.hpp [2:2]
+ boost/compute/image/image1d.hpp [2:2]
+ boost/compute/image/image2d.hpp [2:2]
+ boost/compute/image/image3d.hpp [2:2]
+ boost/compute/image/image_format.hpp [2:2]
+ boost/compute/image/image_object.hpp [2:2]
+ boost/compute/image/image_sampler.hpp [2:2]
+ boost/compute/image2d.hpp [2:2]
+ boost/compute/image3d.hpp [2:2]
+ boost/compute/image_format.hpp [2:2]
+ boost/compute/image_sampler.hpp [2:2]
+ boost/compute/utility/invoke.hpp [2:2]
+ boost/compute/version.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL c9d011950648c03f29cc58f664ea728e
+BELONGS libs/locale/ya.make
+ License text:
+ // Copyright (c) 2009-2015 Artyom Beilis (Tonkikh)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ libs/locale/src/shared/message.cpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL c9d0d72a3dcde4707176a755657f4634
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/concept_archetype.hpp at line 4, boost/concept_check.hpp at line 4
+ License text:
+ // (C) Copyright Jeremy Siek 2000.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/concept_archetype.hpp [2:4]
+ boost/concept_check.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL c9db06a8bf4ea409ad302e3c081fa876
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/shared_ptr.hpp at line 14, boost/serialization/weak_ptr.hpp at line 14
+ License text:
+ // (C) Copyright 2004 Robert Ramey and Martin Ecker
+ // Use, modification and distribution is subject to the Boost Software
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/serialization/shared_ptr.hpp [12:14]
+ boost/serialization/weak_ptr.hpp [12:14]
+
+KEEP COPYRIGHT_SERVICE_LABEL c9effb8498cdb387e324169d172eb069
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/shared_ptr_helper.hpp at line 14
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/serialization/shared_ptr_helper.hpp [12:14]
+
+KEEP COPYRIGHT_SERVICE_LABEL c9f218034b8fe07a7f09b0c82b8312e3
+BELONGS libs/python/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/converter/registered.hpp at line 4, boost/python/converter/shared_ptr_from_python.hpp at line 4, boost/python/converter/shared_ptr_to_python.hpp at line 4, boost/python/detail/is_shared_ptr.hpp at line 4, boost/python/detail/value_is_shared_ptr.hpp at line 4, boost/python/numpy.hpp at line 4, boost/python/numpy/dtype.hpp at line 4, boost/python/numpy/internal.hpp at line 4, boost/python/numpy/invoke_matching.hpp at line 4, boost/python/numpy/matrix.hpp at line 4, boost/python/numpy/ndarray.hpp at line 4, boost/python/numpy/numpy_object_mgr_traits.hpp at line 4, boost/python/numpy/scalars.hpp at line 4, boost/python/numpy/ufunc.hpp at line 4, boost/python/object/class_metadata.hpp at line 4, boost/python/to_python_value.hpp at line 4, libs/python/src/numpy/dtype.cpp at line 4, libs/python/src/numpy/matrix.cpp at line 4, libs/python/src/numpy/ndarray.cpp at line 4, libs/python/src/numpy/numpy.cpp at line 4, libs/python/src/numpy/scalars.cpp at line 4, libs/python/src/numpy/ufunc.cpp at line 4
+ License text:
+ // Copyright Jim Bosch 2010-2012.
+ // Copyright Stefan Seefeld 2016.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/python/converter/registered.hpp [1:4]
+ boost/python/converter/shared_ptr_from_python.hpp [1:4]
+ boost/python/converter/shared_ptr_to_python.hpp [1:4]
+ boost/python/detail/is_shared_ptr.hpp [1:4]
+ boost/python/detail/value_is_shared_ptr.hpp [1:4]
+ boost/python/numpy.hpp [1:4]
+ boost/python/numpy/dtype.hpp [1:4]
+ boost/python/numpy/internal.hpp [1:4]
+ boost/python/numpy/invoke_matching.hpp [1:4]
+ boost/python/numpy/matrix.hpp [1:4]
+ boost/python/numpy/ndarray.hpp [1:4]
+ boost/python/numpy/numpy_object_mgr_traits.hpp [1:4]
+ boost/python/numpy/scalars.hpp [1:4]
+ boost/python/numpy/ufunc.hpp [1:4]
+ boost/python/object/class_metadata.hpp [1:4]
+ boost/python/to_python_value.hpp [1:4]
+ libs/python/src/numpy/dtype.cpp [1:4]
+ libs/python/src/numpy/matrix.cpp [1:4]
+ libs/python/src/numpy/ndarray.cpp [1:4]
+ libs/python/src/numpy/numpy.cpp [1:4]
+ libs/python/src/numpy/scalars.cpp [1:4]
+ libs/python/src/numpy/ufunc.cpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL ca20b75eb2dae2abec8bb941a89db522
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/move/move.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/move/move.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL ca676dbdf976b8c423696b3ace2a200a
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
+ // Copyright (c) 2013 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/detail/atomic_count.hpp [13:14]
+ boost/smart_ptr/detail/atomic_count_spin.hpp [7:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL ca7f81dcda042dfffe2f75e2fa3c6acc
+BELONGS ya.make
+ License text:
+ // (C) Copyright Antony Polukhin 2014.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/cast.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL cadd4a896c84c64078dec6563a7cf410
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic.hpp [2:14]
+
+KEEP COPYRIGHT_SERVICE_LABEL caf6818f96cbd63eb0a359a0d1dd3ac5
+BELONGS ya.make
+ License text:
+ // (C) Copyright Kevlin Henney and Dave Abrahams 1999.
+ // (C) Copyright Boris Rasin 2014.
+ // Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/conversion/detail/old_numeric_cast.hpp [3:5]
+ boost/polymorphic_cast.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL cb01f383bb8952e129846d11f898f3c8
+BELONGS ya.make
+ License text:
+ // This file was modified by Oracle on 2013-2017.
+ // Modifications copyright (c) 2013-2017, Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/disjoint/areal_areal.hpp [8:9]
+ boost/geometry/algorithms/detail/disjoint/box_box.hpp [8:9]
+ boost/geometry/algorithms/detail/disjoint/implementation.hpp [8:9]
+ boost/geometry/algorithms/detail/disjoint/interface.hpp [8:9]
+ boost/geometry/algorithms/detail/disjoint/linear_areal.hpp [8:9]
+ boost/geometry/algorithms/detail/disjoint/linear_linear.hpp [8:9]
+ boost/geometry/algorithms/detail/disjoint/point_box.hpp [8:9]
+ boost/geometry/algorithms/detail/disjoint/point_point.hpp [8:9]
+ boost/geometry/algorithms/detail/disjoint/segment_box.hpp [8:9]
+ boost/geometry/algorithms/detail/intersects/implementation.hpp [7:8]
+ boost/geometry/algorithms/detail/intersects/interface.hpp [7:8]
+ boost/geometry/algorithms/detail/relate/point_point.hpp [5:6]
+ boost/geometry/algorithms/detail/touches/implementation.hpp [8:9]
+ boost/geometry/algorithms/detail/touches/interface.hpp [8:9]
+ boost/geometry/algorithms/detail/within/point_in_geometry.hpp [8:9]
+ boost/geometry/algorithms/dispatch/disjoint.hpp [8:9]
+ boost/geometry/algorithms/intersects.hpp [7:8]
+ boost/geometry/algorithms/touches.hpp [8:9]
+ boost/geometry/strategies/cartesian/disjoint_segment_box.hpp [8:9]
+
+KEEP COPYRIGHT_SERVICE_LABEL cb0dc5088d9ead71cc376b520c9be516
+BELONGS ya.make
+ License text:
+ Author: Joachim Faulhaber
+ Copyright (c) 2009-2011: Joachim Faulhaber
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/icl/impl_config.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL cb4c77138a8eb0afa37b2363d470714c
+BELONGS ya.make
+ License text:
+ // (C) Copyright Daniel K. O. 2005.
+ // (C) Copyright Ion Gaztanaga 2007-2014
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/intrusive/avltree_algorithms.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL cba287530567f506b4683cd1a18cce1d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/detail/addressof.hpp at line 5, boost/container/detail/alloc_helpers.hpp at line 5, boost/container/detail/iterator_to_raw_pointer.hpp at line 5, boost/container/detail/minimal_char_traits_header.hpp at line 5, boost/container/detail/next_capacity.hpp at line 5, boost/container/detail/placement_new.hpp at line 7, boost/container/new_allocator.hpp at line 5, boost/interprocess/detail/nothrow.hpp at line 5, boost/interprocess/detail/simple_swap.hpp at line 7, boost/interprocess/detail/std_fwd.hpp at line 5, boost/intrusive/detail/minimal_less_equal_header.hpp at line 5, boost/intrusive/detail/minimal_pair_header.hpp at line 5, boost/move/detail/iterator_to_raw_pointer.hpp at line 5, boost/move/detail/placement_new.hpp at line 7
+ License text:
+ // (C) Copyright Ion Gaztanaga 2014-2015. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/container/detail/addressof.hpp [3:5]
+ boost/container/detail/alloc_helpers.hpp [3:5]
+ boost/container/detail/iterator_to_raw_pointer.hpp [3:5]
+ boost/container/detail/minimal_char_traits_header.hpp [3:3]
+ boost/container/detail/next_capacity.hpp [3:5]
+ boost/container/detail/placement_new.hpp [5:7]
+ boost/container/new_allocator.hpp [3:5]
+ boost/interprocess/detail/nothrow.hpp [3:5]
+ boost/interprocess/detail/simple_swap.hpp [5:7]
+ boost/interprocess/detail/std_fwd.hpp [3:5]
+ boost/intrusive/detail/minimal_less_equal_header.hpp [3:3]
+ boost/intrusive/detail/minimal_pair_header.hpp [3:3]
+ boost/move/detail/iterator_to_raw_pointer.hpp [3:5]
+ boost/move/detail/placement_new.hpp [5:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL cc1022dd712816d11c03b1dfe171b614
+BELONGS ya.make
+ License text:
+ // (C) Copyright Ion Gaztanaga 2009-2013.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/container/detail/function_detector.hpp [3:3]
+ boost/intrusive/detail/function_detector.hpp [3:3]
+ boost/intrusive/detail/is_stateful_value_traits.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL cc1d970568793824ad7593567509ba7b
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/detail/ice_and.hpp at line 3, boost/type_traits/detail/ice_eq.hpp at line 3, boost/type_traits/detail/ice_not.hpp at line 3, boost/type_traits/detail/ice_or.hpp at line 3, boost/type_traits/detail/yes_no_type.hpp at line 4, boost/type_traits/ice.hpp at line 4
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_traits/detail/ice_and.hpp [1:1]
+ boost/type_traits/detail/ice_eq.hpp [1:3]
+ boost/type_traits/detail/ice_not.hpp [1:3]
+ boost/type_traits/detail/ice_or.hpp [1:3]
+ boost/type_traits/detail/yes_no_type.hpp [2:4]
+ boost/type_traits/ice.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL cc20f3be80fcae2741d451fd54843c93
+BELONGS ya.make
+ License text:
+ // Copyright 2001 University of Notre Dame.
+ // Copyright 2006 Trustees of Indiana University
+ // Authors: Jeremy G. Siek and Douglas Gregor <dgregor@cs.indiana.edu>
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/adjacency_matrix.hpp [2:4]
+ boost/graph/dll_import_export.hpp [2:4]
+ boost/graph/graphviz.hpp [2:4]
+ boost/graph/subgraph.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL cc7820f60bca73eee8e6e5903d73df38
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iostreams/checked_operations.hpp at line 4, boost/iostreams/compose.hpp at line 4, boost/iostreams/detail/adapter/non_blocking_adapter.hpp at line 4, boost/iostreams/detail/counted_array.hpp at line 4, boost/iostreams/detail/default_arg.hpp at line 4, boost/iostreams/detail/is_dereferenceable.hpp at line 4, boost/iostreams/detail/newline.hpp at line 4, boost/iostreams/detail/optional.hpp at line 4, boost/iostreams/detail/system_failure.hpp at line 4, boost/iostreams/filter/counter.hpp at line 4, boost/iostreams/filter/line.hpp at line 4, boost/iostreams/filter/stdio.hpp at line 4, boost/iostreams/filter/test.hpp at line 4, boost/iostreams/get.hpp at line 4, boost/iostreams/operations.hpp at line 4, boost/iostreams/put.hpp at line 4, boost/iostreams/putback.hpp at line 4, boost/iostreams/read.hpp at line 4, boost/iostreams/tee.hpp at line 4
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/iostreams/checked_operations.hpp [1:4]
+ boost/iostreams/compose.hpp [1:4]
+ boost/iostreams/detail/adapter/non_blocking_adapter.hpp [1:4]
+ boost/iostreams/detail/counted_array.hpp [1:4]
+ boost/iostreams/detail/default_arg.hpp [1:4]
+ boost/iostreams/detail/is_dereferenceable.hpp [1:5]
+ boost/iostreams/detail/newline.hpp [1:4]
+ boost/iostreams/detail/optional.hpp [1:4]
+ boost/iostreams/detail/system_failure.hpp [1:5]
+ boost/iostreams/filter/counter.hpp [1:4]
+ boost/iostreams/filter/line.hpp [1:4]
+ boost/iostreams/filter/stdio.hpp [1:4]
+ boost/iostreams/filter/test.hpp [1:4]
+ boost/iostreams/get.hpp [1:4]
+ boost/iostreams/operations.hpp [1:4]
+ boost/iostreams/put.hpp [1:4]
+ boost/iostreams/putback.hpp [1:4]
+ boost/iostreams/read.hpp [1:4]
+ boost/iostreams/tee.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL ccb190d60bb3bd793e2d9eb5fc91fb71
+BELONGS libs/thread/ya.make ya.make
+ License text:
+ // (C) Copyright 2007 Anthony Williams
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/condition.hpp [3:3]
+ boost/thread/condition_variable.hpp [6:6]
+ boost/thread/detail/platform.hpp [1:4]
+ boost/thread/lock_algorithms.hpp [4:5]
+ boost/thread/lock_guard.hpp [4:5]
+ boost/thread/lock_options.hpp [4:5]
+ boost/thread/lock_types.hpp [4:5]
+ boost/thread/lockable_traits.hpp [4:5]
+ boost/thread/locks.hpp [4:5]
+ boost/thread/mutex.hpp [6:6]
+ boost/thread/pthread/thread_data.hpp [6:7]
+ boost/thread/recursive_mutex.hpp [6:6]
+ boost/thread/shared_mutex.hpp [6:7]
+ boost/thread/thread_time.hpp [3:3]
+ boost/thread/win32/thread_heap_alloc.hpp [4:6]
+ libs/thread/src/tss_null.cpp [1:4]
+ libs/thread/src/win32/thread.cpp [4:6]
+ libs/thread/src/win32/tss_pe.cpp [2:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL ccc0cb954aa88f5dd5e62b4d653c439c
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2008, 2009 Peter Dimov
+ // Copyright (c) 2018 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/atomic/detail/addressof.hpp [6:6]
+ boost/atomic/detail/bitwise_fp_cast.hpp [6:6]
+ boost/atomic/detail/extra_fp_operations.hpp [6:6]
+ boost/atomic/detail/extra_fp_operations_fwd.hpp [6:6]
+ boost/atomic/detail/extra_fp_ops_emulated.hpp [6:6]
+ boost/atomic/detail/extra_fp_ops_generic.hpp [6:6]
+ boost/atomic/detail/extra_ops_emulated.hpp [6:6]
+ boost/atomic/detail/float_sizes.hpp [6:6]
+ boost/atomic/detail/fp_operations.hpp [6:6]
+ boost/atomic/detail/fp_operations_fwd.hpp [6:6]
+ boost/atomic/detail/fp_ops_emulated.hpp [6:6]
+ boost/atomic/detail/fp_ops_generic.hpp [6:6]
+ boost/atomic/detail/integral_extend.hpp [6:6]
+ boost/atomic/detail/string_ops.hpp [6:6]
+ boost/atomic/detail/type_traits/is_floating_point.hpp [6:6]
+ boost/atomic/detail/type_traits/is_iec559.hpp [6:6]
+ boost/atomic/detail/type_traits/is_trivially_default_constructible.hpp [6:6]
+ boost/memory_order.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL cce23f190bcbb33ec0fdc7d06d0dcba3
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/core/explicit_operator_bool.hpp at line 4, boost/smart_ptr/intrusive_ref_counter.hpp at line 4
+ License text:
+ * Copyright Andrey Semashev 2007 - 2013.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/core/explicit_operator_bool.hpp [2:4]
+ boost/smart_ptr/intrusive_ref_counter.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL ccec204a78ff77e65fd8e9cfdf00f467
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/core/null_deleter.hpp at line 4
+ License text:
+ * Copyright Andrey Semashev 2007 - 2014.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/core/null_deleter.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL ccf1ab00327a1d96b36157c35581b7c9
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2017 Oracle and/or its affiliates.
+ // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/overlay/range_in_geometry.hpp [3:4]
+ boost/geometry/algorithms/detail/relate/multi_point_geometry.hpp [3:3]
+ boost/geometry/algorithms/detail/within/multi_point.hpp [3:3]
+ boost/geometry/formulas/authalic_radius_sqr.hpp [3:3]
+ boost/geometry/formulas/elliptic_arc_length.hpp [3:3]
+ boost/geometry/formulas/mean_radius.hpp [3:3]
+ boost/geometry/formulas/unit_spheroid.hpp [3:3]
+ boost/geometry/strategies/cartesian/envelope_segment.hpp [3:5]
+ boost/geometry/strategies/geographic/disjoint_segment_box.hpp [3:3]
+ boost/geometry/strategies/geographic/envelope_segment.hpp [3:5]
+ boost/geometry/strategies/geographic/point_in_poly_winding.hpp [3:4]
+ boost/geometry/strategies/spherical/disjoint_segment_box.hpp [3:3]
+ boost/geometry/strategies/spherical/envelope_segment.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL cd0b2f82e07b1d0a2a2fe85ab053cf51
+BELONGS ya.make
+ License text:
+ // This file was modified by Oracle on 2017.
+ // Modifications copyright (c) 2017, Oracle and/or its affiliates.
+ // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/convert.hpp [8:10]
+ boost/geometry/algorithms/detail/buffer/buffer_policies.hpp [5:7]
+ boost/geometry/algorithms/detail/get_left_turns.hpp [5:6]
+ boost/geometry/algorithms/detail/occupation_info.hpp [5:6]
+ boost/geometry/algorithms/detail/overlay/add_rings.hpp [6:7]
+ boost/geometry/algorithms/detail/overlay/backtrack_check_si.hpp [5:7]
+ boost/geometry/algorithms/detail/overlay/traversal_ring_creator.hpp [5:7]
+ boost/geometry/algorithms/difference.hpp [5:6]
+ boost/geometry/policies/compare.hpp [5:6]
+ boost/geometry/srs/projection.hpp [5:7]
+ boost/geometry/srs/projections/epsg.hpp [5:7]
+ boost/geometry/srs/projections/exception.hpp [5:7]
+ boost/geometry/srs/projections/factory.hpp [5:7]
+ boost/geometry/srs/projections/impl/base_dynamic.hpp [5:7]
+ boost/geometry/srs/projections/impl/base_static.hpp [5:7]
+ boost/geometry/srs/projections/impl/factory_entry.hpp [5:7]
+ boost/geometry/srs/projections/impl/function_overloads.hpp [5:7]
+ boost/geometry/srs/projections/impl/geocent.hpp [4:6]
+ boost/geometry/srs/projections/impl/pj_auth.hpp [6:8]
+ boost/geometry/srs/projections/impl/pj_datums.hpp [6:8]
+ boost/geometry/srs/projections/impl/pj_ellps.hpp [6:8]
+ boost/geometry/srs/projections/impl/pj_fwd.hpp [6:8]
+ boost/geometry/srs/projections/impl/pj_gauss.hpp [6:8]
+ boost/geometry/srs/projections/impl/pj_inv.hpp [6:8]
+ boost/geometry/srs/projections/impl/pj_mlfn.hpp [6:8]
+ boost/geometry/srs/projections/impl/pj_msfn.hpp [6:8]
+ boost/geometry/srs/projections/impl/pj_param.hpp [6:8]
+ boost/geometry/srs/projections/impl/pj_phi2.hpp [6:8]
+ boost/geometry/srs/projections/impl/pj_qsfn.hpp [6:8]
+ boost/geometry/srs/projections/impl/pj_tsfn.hpp [6:8]
+ boost/geometry/srs/projections/impl/pj_units.hpp [6:8]
+ boost/geometry/srs/projections/impl/pj_zpoly1.hpp [6:8]
+ boost/geometry/srs/projections/impl/projects.hpp [6:8]
+ boost/geometry/srs/projections/proj/aea.hpp [9:11]
+ boost/geometry/srs/projections/proj/airy.hpp [9:11]
+ boost/geometry/srs/projections/proj/aitoff.hpp [9:11]
+ boost/geometry/srs/projections/proj/august.hpp [9:11]
+ boost/geometry/srs/projections/proj/bacon.hpp [9:11]
+ boost/geometry/srs/projections/proj/bipc.hpp [9:11]
+ boost/geometry/srs/projections/proj/boggs.hpp [9:11]
+ boost/geometry/srs/projections/proj/bonne.hpp [9:11]
+ boost/geometry/srs/projections/proj/cass.hpp [9:11]
+ boost/geometry/srs/projections/proj/cea.hpp [9:11]
+ boost/geometry/srs/projections/proj/chamb.hpp [9:11]
+ boost/geometry/srs/projections/proj/collg.hpp [9:11]
+ boost/geometry/srs/projections/proj/crast.hpp [9:11]
+ boost/geometry/srs/projections/proj/denoy.hpp [9:11]
+ boost/geometry/srs/projections/proj/eck1.hpp [9:11]
+ boost/geometry/srs/projections/proj/eck2.hpp [9:11]
+ boost/geometry/srs/projections/proj/eck3.hpp [9:11]
+ boost/geometry/srs/projections/proj/eck4.hpp [9:11]
+ boost/geometry/srs/projections/proj/eck5.hpp [9:11]
+ boost/geometry/srs/projections/proj/eqc.hpp [9:11]
+ boost/geometry/srs/projections/proj/eqdc.hpp [9:11]
+ boost/geometry/srs/projections/proj/etmerc.hpp [9:11]
+ boost/geometry/srs/projections/proj/fahey.hpp [9:11]
+ boost/geometry/srs/projections/proj/fouc_s.hpp [9:11]
+ boost/geometry/srs/projections/proj/gall.hpp [9:11]
+ boost/geometry/srs/projections/proj/geocent.hpp [9:11]
+ boost/geometry/srs/projections/proj/geos.hpp [9:11]
+ boost/geometry/srs/projections/proj/gins8.hpp [9:11]
+ boost/geometry/srs/projections/proj/gn_sinu.hpp [9:11]
+ boost/geometry/srs/projections/proj/gstmerc.hpp [9:11]
+ boost/geometry/srs/projections/proj/hammer.hpp [9:11]
+ boost/geometry/srs/projections/proj/hatano.hpp [9:11]
+ boost/geometry/srs/projections/proj/igh.hpp [9:11]
+ boost/geometry/srs/projections/proj/imw_p.hpp [9:11]
+ boost/geometry/srs/projections/proj/krovak.hpp [9:11]
+ boost/geometry/srs/projections/proj/labrd.hpp [9:11]
+ boost/geometry/srs/projections/proj/lagrng.hpp [9:11]
+ boost/geometry/srs/projections/proj/larr.hpp [9:11]
+ boost/geometry/srs/projections/proj/lask.hpp [9:11]
+ boost/geometry/srs/projections/proj/latlong.hpp [9:11]
+ boost/geometry/srs/projections/proj/lcc.hpp [9:11]
+ boost/geometry/srs/projections/proj/lcca.hpp [9:11]
+ boost/geometry/srs/projections/proj/loxim.hpp [9:11]
+ boost/geometry/srs/projections/proj/mbt_fps.hpp [9:11]
+ boost/geometry/srs/projections/proj/mbtfpp.hpp [9:11]
+ boost/geometry/srs/projections/proj/mbtfpq.hpp [9:11]
+ boost/geometry/srs/projections/proj/merc.hpp [9:11]
+ boost/geometry/srs/projections/proj/mill.hpp [9:11]
+ boost/geometry/srs/projections/proj/mod_ster.hpp [9:11]
+ boost/geometry/srs/projections/proj/moll.hpp [9:11]
+ boost/geometry/srs/projections/proj/natearth.hpp [9:11]
+ boost/geometry/srs/projections/proj/nell.hpp [9:11]
+ boost/geometry/srs/projections/proj/nell_h.hpp [9:11]
+ boost/geometry/srs/projections/proj/nocol.hpp [9:11]
+ boost/geometry/srs/projections/proj/nzmg.hpp [9:11]
+ boost/geometry/srs/projections/proj/ocea.hpp [9:11]
+ boost/geometry/srs/projections/proj/oea.hpp [9:11]
+ boost/geometry/srs/projections/proj/omerc.hpp [9:11]
+ boost/geometry/srs/projections/proj/poly.hpp [9:11]
+ boost/geometry/srs/projections/proj/putp2.hpp [9:11]
+ boost/geometry/srs/projections/proj/putp3.hpp [9:11]
+ boost/geometry/srs/projections/proj/putp4p.hpp [9:11]
+ boost/geometry/srs/projections/proj/putp5.hpp [9:11]
+ boost/geometry/srs/projections/proj/putp6.hpp [9:11]
+ boost/geometry/srs/projections/proj/qsc.hpp [9:11]
+ boost/geometry/srs/projections/proj/robin.hpp [9:11]
+ boost/geometry/srs/projections/proj/rouss.hpp [9:11]
+ boost/geometry/srs/projections/proj/rpoly.hpp [9:11]
+ boost/geometry/srs/projections/proj/sconics.hpp [9:11]
+ boost/geometry/srs/projections/proj/somerc.hpp [9:11]
+ boost/geometry/srs/projections/proj/sterea.hpp [9:11]
+ boost/geometry/srs/projections/proj/sts.hpp [9:11]
+ boost/geometry/srs/projections/proj/tcea.hpp [9:11]
+ boost/geometry/srs/projections/proj/tmerc.hpp [9:11]
+ boost/geometry/srs/projections/proj/tpeqd.hpp [9:11]
+ boost/geometry/srs/projections/proj/urm5.hpp [9:11]
+ boost/geometry/srs/projections/proj/urmfps.hpp [9:11]
+ boost/geometry/srs/projections/proj/vandg.hpp [9:11]
+ boost/geometry/srs/projections/proj/vandg4.hpp [9:11]
+ boost/geometry/srs/projections/proj/wag2.hpp [9:11]
+ boost/geometry/srs/projections/proj/wag3.hpp [9:11]
+ boost/geometry/srs/projections/proj/wag7.hpp [9:11]
+ boost/geometry/srs/projections/proj/wink1.hpp [9:11]
+ boost/geometry/srs/projections/proj/wink2.hpp [9:11]
+ boost/geometry/strategies/compare.hpp [7:8]
+ boost/geometry/strategies/covered_by.hpp [7:8]
+ boost/geometry/strategies/spherical/compare.hpp [5:6]
+ boost/geometry/strategies/transform/srs_transformer.hpp [5:7]
+ boost/geometry/strategies/within.hpp [7:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL cd1474941b42642228272cd4bfb1e677
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2013-2014 Kyle Lutz <kyle.r.lutz@gmail.com>
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/compute/algorithm/adjacent_difference.hpp [2:2]
+ boost/compute/algorithm/adjacent_find.hpp [2:2]
+ boost/compute/algorithm/for_each_n.hpp [2:2]
+ boost/compute/algorithm/is_sorted.hpp [2:2]
+ boost/compute/allocator.hpp [2:2]
+ boost/compute/allocator/buffer_allocator.hpp [2:2]
+ boost/compute/allocator/pinned_allocator.hpp [2:2]
+ boost/compute/async/wait.hpp [2:2]
+ boost/compute/closure.hpp [2:2]
+ boost/compute/container/dynamic_bitset.hpp [2:2]
+ boost/compute/container/mapped_view.hpp [2:2]
+ boost/compute/core.hpp [2:2]
+ boost/compute/detail/duration.hpp [2:2]
+ boost/compute/detail/get_object_info.hpp [2:2]
+ boost/compute/detail/getenv.hpp [2:2]
+ boost/compute/detail/global_static.hpp [2:2]
+ boost/compute/detail/literal.hpp [2:2]
+ boost/compute/detail/nvidia_compute_capability.hpp [2:2]
+ boost/compute/detail/path.hpp [2:2]
+ boost/compute/detail/sha1.hpp [2:2]
+ boost/compute/detail/variadic_macros.hpp [2:2]
+ boost/compute/detail/vendor.hpp [2:2]
+ boost/compute/detail/work_size.hpp [2:2]
+ boost/compute/exception/unsupported_extension_error.hpp [2:2]
+ boost/compute/functional/bind.hpp [2:2]
+ boost/compute/functional/hash.hpp [2:2]
+ boost/compute/functional/identity.hpp [2:2]
+ boost/compute/functional/popcount.hpp [2:2]
+ boost/compute/interop/eigen.hpp [2:2]
+ boost/compute/interop/eigen/core.hpp [2:2]
+ boost/compute/interop/opencv.hpp [2:2]
+ boost/compute/interop/opencv/core.hpp [2:2]
+ boost/compute/interop/opencv/highgui.hpp [2:2]
+ boost/compute/interop/opencv/ocl.hpp [2:2]
+ boost/compute/interop/opengl.hpp [2:2]
+ boost/compute/interop/opengl/acquire.hpp [2:2]
+ boost/compute/interop/opengl/cl_gl.hpp [2:2]
+ boost/compute/interop/opengl/cl_gl_ext.hpp [2:2]
+ boost/compute/interop/opengl/context.hpp [2:2]
+ boost/compute/interop/opengl/gl.hpp [2:2]
+ boost/compute/interop/opengl/opengl_buffer.hpp [2:2]
+ boost/compute/interop/opengl/opengl_renderbuffer.hpp [2:2]
+ boost/compute/interop/opengl/opengl_texture.hpp [2:2]
+ boost/compute/interop/qt.hpp [2:2]
+ boost/compute/interop/qt/qimage.hpp [2:2]
+ boost/compute/interop/qt/qpoint.hpp [2:2]
+ boost/compute/interop/qt/qpointf.hpp [2:2]
+ boost/compute/interop/qt/qtcore.hpp [2:2]
+ boost/compute/interop/qt/qtgui.hpp [2:2]
+ boost/compute/interop/qt/qvector.hpp [2:2]
+ boost/compute/interop/vtk.hpp [2:2]
+ boost/compute/interop/vtk/bounds.hpp [2:2]
+ boost/compute/interop/vtk/data_array.hpp [2:2]
+ boost/compute/interop/vtk/matrix4x4.hpp [2:2]
+ boost/compute/interop/vtk/points.hpp [2:2]
+ boost/compute/iterator/discard_iterator.hpp [2:2]
+ boost/compute/lambda/get.hpp [2:2]
+ boost/compute/lambda/make_pair.hpp [2:2]
+ boost/compute/lambda/make_tuple.hpp [2:2]
+ boost/compute/lambda/placeholder.hpp [2:2]
+ boost/compute/memory.hpp [2:2]
+ boost/compute/memory/local_buffer.hpp [2:2]
+ boost/compute/memory/svm_ptr.hpp [2:2]
+ boost/compute/pipe.hpp [2:2]
+ boost/compute/random/normal_distribution.hpp [2:2]
+ boost/compute/source.hpp [2:2]
+ boost/compute/svm.hpp [2:2]
+ boost/compute/type_traits/detail/capture_traits.hpp [2:2]
+ boost/compute/type_traits/is_device_iterator.hpp [2:2]
+ boost/compute/type_traits/is_fundamental.hpp [2:2]
+ boost/compute/type_traits/result_of.hpp [2:2]
+ boost/compute/type_traits/type_definition.hpp [2:2]
+ boost/compute/types/builtin.hpp [2:2]
+ boost/compute/types/fundamental.hpp [2:2]
+ boost/compute/types/struct.hpp [2:2]
+ boost/compute/user_event.hpp [2:2]
+ boost/compute/utility.hpp [2:2]
+ boost/compute/utility/dim.hpp [2:2]
+ boost/compute/utility/extents.hpp [2:2]
+ boost/compute/utility/program_cache.hpp [2:2]
+ boost/compute/utility/source.hpp [2:2]
+ boost/compute/utility/wait_list.hpp [2:2]
+ boost/compute/wait_list.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL cd4c6e3cb475973fc7258930701fdb80
+BELONGS ya.make
+ License text:
+ * Copyright 2010 Vicente J. Botet Escriba
+ * Copyright 2015 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/winapi/apc.hpp [2:3]
+ boost/winapi/basic_types.hpp [2:3]
+ boost/winapi/condition_variable.hpp [2:3]
+ boost/winapi/critical_section.hpp [2:3]
+ boost/winapi/crypt.hpp [2:3]
+ boost/winapi/detail/cast_ptr.hpp [2:2]
+ boost/winapi/directory_management.hpp [2:3]
+ boost/winapi/dll.hpp [2:5]
+ boost/winapi/error_handling.hpp [2:4]
+ boost/winapi/file_management.hpp [2:5]
+ boost/winapi/file_mapping.hpp [2:5]
+ boost/winapi/get_current_process.hpp [2:3]
+ boost/winapi/get_current_thread.hpp [2:3]
+ boost/winapi/get_current_thread_id.hpp [2:3]
+ boost/winapi/get_last_error.hpp [2:3]
+ boost/winapi/get_thread_times.hpp [2:3]
+ boost/winapi/handles.hpp [2:3]
+ boost/winapi/init_once.hpp [2:3]
+ boost/winapi/local_memory.hpp [2:3]
+ boost/winapi/memory.hpp [2:3]
+ boost/winapi/security.hpp [2:3]
+ boost/winapi/semaphore.hpp [2:3]
+ boost/winapi/srw_lock.hpp [2:3]
+ boost/winapi/synchronization.hpp [2:3]
+ boost/winapi/system.hpp [2:4]
+ boost/winapi/thread.hpp [2:3]
+ boost/winapi/timers.hpp [2:3]
+ boost/winapi/wait.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL cd59a9b17dba1f12cc9f24d0e732702a
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/bernoulli.hpp [3:8]
+ boost/math/special_functions/detail/polygamma.hpp [3:8]
+ boost/math/special_functions/detail/unchecked_bernoulli.hpp [3:8]
+ boost/math/special_functions/polygamma.hpp [3:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL cd8a570f75918ca6f3caece0eb324bb0
+BELONGS ya.make
+ License text:
+ // Copyright Aleksey Gurtovoy 2001-2006
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/list/aux_/include_preprocessed.hpp [2:2]
+ boost/mpl/set/aux_/include_preprocessed.hpp [4:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL cd8edc8af825e6157a14facda49b7e5c
+BELONGS ya.make
+ License text:
+ // Copyright Aleksey Gurtovoy 2000-2002
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/count_if.hpp [5:5]
+ boost/mpl/find.hpp [5:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL cdd68d4b0cd7f8ae4946423a38dc8906
+BELONGS ya.make
+ License text:
+ // (C) Copyright Ion Gaztanaga 2006-2014
+ // (C) Copyright Microsoft Corporation 2014
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/intrusive/detail/mpl.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL cde0b758663026af6e7dea405ee6bf38
+BELONGS ya.make
+ License text:
+ // Copyright Louis Dionne 2013
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/hawick_circuits.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL cdfbce28eaa4af51d14557c79abbbb12
+BELONGS ya.make
+ License text:
+ Copyright 2012-2013 Andreas Angelopoulos
+ Copyright 2012-2013 Karsten Ahnert
+ Copyright 2012-2013 Mario Mulansky
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/external/mtl4/implicit_euler_mtl4.hpp [6:8]
+ boost/numeric/odeint/external/mtl4/mtl4_resize.hpp [6:8]
+ boost/numeric/odeint/iterator/adaptive_iterator.hpp [10:11]
+ boost/numeric/odeint/iterator/adaptive_time_iterator.hpp [10:11]
+ boost/numeric/odeint/iterator/const_step_iterator.hpp [10:11]
+ boost/numeric/odeint/iterator/const_step_time_iterator.hpp [10:11]
+ boost/numeric/odeint/iterator/detail/ode_iterator_base.hpp [10:11]
+ boost/numeric/odeint/stepper/base/algebra_stepper_base.hpp [9:10]
+ boost/numeric/odeint/stepper/runge_kutta_fehlberg78.hpp [9:10]
+ boost/numeric/odeint/stepper/symplectic_rkn_sb3a_m4_mclachlan.hpp [9:10]
+ boost/numeric/odeint/util/unit_helper.hpp [9:10]
+ boost/numeric/odeint/util/unwrap_reference.hpp [9:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL ce101c632c87f8e9105b0f2a857b342c
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2011-2013, 2016 Tim Blechmann
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/lockfree/detail/atomic.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL ce20686b00eb9d579c5ea2542edbbd3a
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2008-2012 Bruno Lalande, Paris, France.
+ // Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands.
+ // Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/arithmetic/arithmetic.hpp [3:5]
+ boost/geometry/arithmetic/cross_product.hpp [3:5]
+ boost/geometry/arithmetic/determinant.hpp [3:5]
+ boost/geometry/arithmetic/dot_product.hpp [3:5]
+ boost/geometry/core/access.hpp [3:5]
+ boost/geometry/core/coordinate_dimension.hpp [3:5]
+ boost/geometry/core/coordinate_system.hpp [3:5]
+ boost/geometry/core/coordinate_type.hpp [3:5]
+ boost/geometry/geometries/adapted/boost_tuple.hpp [3:5]
+ boost/geometry/geometries/adapted/std_pair_as_segment.hpp [3:5]
+ boost/geometry/geometries/concepts/box_concept.hpp [3:5]
+ boost/geometry/geometries/concepts/check.hpp [3:5]
+ boost/geometry/geometries/concepts/linestring_concept.hpp [3:5]
+ boost/geometry/geometries/concepts/polygon_concept.hpp [3:5]
+ boost/geometry/geometries/concepts/ring_concept.hpp [3:5]
+ boost/geometry/geometries/concepts/segment_concept.hpp [3:5]
+ boost/geometry/srs/projection.hpp [3:3]
+ boost/geometry/srs/projections/epsg.hpp [3:3]
+ boost/geometry/srs/projections/epsg_traits.hpp [3:3]
+ boost/geometry/srs/projections/exception.hpp [3:3]
+ boost/geometry/srs/projections/factory.hpp [3:3]
+ boost/geometry/srs/projections/impl/aasincos.hpp [4:4]
+ boost/geometry/srs/projections/impl/adjlon.hpp [4:4]
+ boost/geometry/srs/projections/impl/pj_auth.hpp [4:4]
+ boost/geometry/srs/projections/impl/pj_datum_set.hpp [4:4]
+ boost/geometry/srs/projections/impl/pj_datums.hpp [4:4]
+ boost/geometry/srs/projections/impl/pj_ell_set.hpp [4:4]
+ boost/geometry/srs/projections/impl/pj_ellps.hpp [4:4]
+ boost/geometry/srs/projections/impl/pj_fwd.hpp [4:4]
+ boost/geometry/srs/projections/impl/pj_gauss.hpp [4:4]
+ boost/geometry/srs/projections/impl/pj_init.hpp [4:4]
+ boost/geometry/srs/projections/impl/pj_inv.hpp [4:4]
+ boost/geometry/srs/projections/impl/pj_mlfn.hpp [4:4]
+ boost/geometry/srs/projections/impl/pj_msfn.hpp [4:4]
+ boost/geometry/srs/projections/impl/pj_param.hpp [4:4]
+ boost/geometry/srs/projections/impl/pj_phi2.hpp [4:4]
+ boost/geometry/srs/projections/impl/pj_qsfn.hpp [4:4]
+ boost/geometry/srs/projections/impl/pj_tsfn.hpp [4:4]
+ boost/geometry/srs/projections/impl/pj_units.hpp [4:4]
+ boost/geometry/srs/projections/impl/pj_zpoly1.hpp [4:4]
+ boost/geometry/srs/projections/impl/proj_mdist.hpp [4:4]
+ boost/geometry/srs/projections/impl/projects.hpp [4:4]
+ boost/geometry/strategies/cartesian/distance_pythagoras.hpp [3:5]
+ boost/geometry/strategies/transform/srs_transformer.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL ce7f8267f10d0d0f27e059eb588024e7
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/metaparse/accept.hpp at line 6, boost/metaparse/get_message.hpp at line 6, boost/metaparse/range.hpp at line 6, boost/metaparse/range_c.hpp at line 6, boost/metaparse/reject.hpp at line 6, boost/metaparse/util/in_range_c.hpp at line 6, boost/metaparse/v1/accept.hpp at line 6, boost/metaparse/v1/fwd/accept.hpp at line 6, boost/metaparse/v1/fwd/get_message.hpp at line 6, boost/metaparse/v1/fwd/reject.hpp at line 6, boost/metaparse/v1/get_message.hpp at line 6, boost/metaparse/v1/impl/assert_string_length.hpp at line 6, boost/metaparse/v1/impl/has_type.hpp at line 6, boost/metaparse/v1/impl/returns.hpp at line 6, boost/metaparse/v1/range.hpp at line 6, boost/metaparse/v1/range_c.hpp at line 6, boost/metaparse/v1/reject.hpp at line 6, boost/metaparse/v1/util/in_range_c.hpp at line 6
+ License text:
+ // Copyright Abel Sinkovics (abel@sinkovics.hu) 2014.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/metaparse/accept.hpp [4:6]
+ boost/metaparse/get_message.hpp [4:6]
+ boost/metaparse/range.hpp [4:6]
+ boost/metaparse/range_c.hpp [4:6]
+ boost/metaparse/reject.hpp [4:6]
+ boost/metaparse/util/in_range_c.hpp [4:6]
+ boost/metaparse/v1/accept.hpp [4:6]
+ boost/metaparse/v1/fwd/accept.hpp [4:6]
+ boost/metaparse/v1/fwd/get_message.hpp [4:6]
+ boost/metaparse/v1/fwd/reject.hpp [4:6]
+ boost/metaparse/v1/get_message.hpp [4:6]
+ boost/metaparse/v1/impl/assert_string_length.hpp [4:6]
+ boost/metaparse/v1/impl/has_type.hpp [4:6]
+ boost/metaparse/v1/impl/returns.hpp [4:6]
+ boost/metaparse/v1/range.hpp [4:6]
+ boost/metaparse/v1/range_c.hpp [4:6]
+ boost/metaparse/v1/reject.hpp [4:6]
+ boost/metaparse/v1/util/in_range_c.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL ce8ac05cf9bf1bac069f4e120344d860
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2001-2011 Hartmut Kaiser
+ Copyright (c) 2009 Francois Barel
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/repository/include/karma_nonterminal.hpp [2:5]
+ boost/spirit/repository/include/karma_subrule.hpp [2:5]
+ boost/spirit/repository/include/qi_nonterminal.hpp [2:5]
+ boost/spirit/repository/include/qi_subrule.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL ce97343ca1928bb25180cf14d4f5b41a
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/unordered/detail/implementation.hpp at line 4, boost/unordered/unordered_map.hpp at line 5, boost/unordered/unordered_set.hpp at line 5, boost/unordered_map.hpp at line 5, boost/unordered_set.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/unordered/detail/implementation.hpp [1:2]
+ boost/unordered/unordered_map.hpp [2:5]
+ boost/unordered/unordered_set.hpp [2:5]
+ boost/unordered_map.hpp [2:5]
+ boost/unordered_set.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL ceb96d27818fc0169ccc2782fc50054b
+BELONGS ya.make
+ License text:
+ * Copyright 2005 Felix Höfling, Guillaume Melquiond
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/interval/detail/alpha_rounding_control.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL cebf58260049d5068e5abf459a4e867f
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2007 Trustees of Indiana University
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpi/graph_communicator.hpp [1:1]
+ boost/mpi/group.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL cec519351b68fb385bc916223bd0753a
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+ // Copyright (c) 2011 Boris Schaeling (boris@highscore.de)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/asio/detail/impl/win_object_handle_service.ipp [5:6]
+ boost/asio/detail/win_object_handle_service.hpp [5:6]
+ boost/asio/windows/basic_object_handle.hpp [5:6]
+ boost/asio/windows/object_handle.hpp [5:6]
+ boost/asio/windows/object_handle_service.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL cecdd0e10d272b13f1cba1074643fb5c
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/tti/detail/dnotype.hpp at line 4, boost/tti/gen/has_member_data_gen.hpp at line 4, boost/tti/gen/has_member_function_gen.hpp at line 4, boost/tti/gen/has_static_member_data_gen.hpp at line 4, boost/tti/gen/has_static_member_function_gen.hpp at line 4, boost/tti/gen/has_template_gen.hpp at line 4, boost/tti/gen/has_type_gen.hpp at line 4, boost/tti/gen/member_type_gen.hpp at line 4, boost/tti/gen/namespace_gen.hpp at line 4, boost/tti/has_template.hpp at line 4, boost/tti/tti.hpp at line 4
+ License text:
+ // (C) Copyright Edward Diener 2011,2012
+ // Use, modification and distribution are subject to the Boost Software License,
+ // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/tti/detail/dnotype.hpp [2:4]
+ boost/tti/gen/has_member_data_gen.hpp [2:4]
+ boost/tti/gen/has_member_function_gen.hpp [2:4]
+ boost/tti/gen/has_static_member_data_gen.hpp [2:4]
+ boost/tti/gen/has_static_member_function_gen.hpp [2:4]
+ boost/tti/gen/has_template_gen.hpp [2:4]
+ boost/tti/gen/has_type_gen.hpp [2:4]
+ boost/tti/gen/member_type_gen.hpp [2:4]
+ boost/tti/gen/namespace_gen.hpp [2:4]
+ boost/tti/has_template.hpp [2:4]
+ boost/tti/tti.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL cedac5e193993d7d0917a56ff3e3b834
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/covariance.hpp at line 6, boost/accumulators/statistics/density.hpp at line 7, boost/accumulators/statistics/peaks_over_threshold.hpp at line 6, boost/accumulators/statistics/pot_quantile.hpp at line 6, boost/accumulators/statistics/pot_tail_mean.hpp at line 6, boost/accumulators/statistics/tail_mean.hpp at line 6, boost/accumulators/statistics/tail_quantile.hpp at line 6, boost/accumulators/statistics/tail_variate_means.hpp at line 6, boost/accumulators/statistics/weighted_covariance.hpp at line 6, boost/accumulators/statistics/weighted_density.hpp at line 6, boost/accumulators/statistics/weighted_p_square_cumul_dist.hpp at line 6, boost/accumulators/statistics/weighted_peaks_over_threshold.hpp at line 6, boost/accumulators/statistics/weighted_tail_mean.hpp at line 6, boost/accumulators/statistics/weighted_tail_quantile.hpp at line 6, boost/accumulators/statistics/weighted_tail_variate_means.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/accumulators/statistics/covariance.hpp [4:6]
+ boost/accumulators/statistics/density.hpp [5:7]
+ boost/accumulators/statistics/peaks_over_threshold.hpp [4:6]
+ boost/accumulators/statistics/pot_quantile.hpp [4:6]
+ boost/accumulators/statistics/pot_tail_mean.hpp [4:6]
+ boost/accumulators/statistics/tail_mean.hpp [4:6]
+ boost/accumulators/statistics/tail_quantile.hpp [4:6]
+ boost/accumulators/statistics/tail_variate_means.hpp [4:6]
+ boost/accumulators/statistics/weighted_covariance.hpp [4:6]
+ boost/accumulators/statistics/weighted_density.hpp [4:6]
+ boost/accumulators/statistics/weighted_p_square_cumul_dist.hpp [4:6]
+ boost/accumulators/statistics/weighted_peaks_over_threshold.hpp [4:6]
+ boost/accumulators/statistics/weighted_tail_mean.hpp [4:6]
+ boost/accumulators/statistics/weighted_tail_quantile.hpp [4:6]
+ boost/accumulators/statistics/weighted_tail_variate_means.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL cee063e2263d7e63a1a5f516090e8359
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2006, 2007, 2012, 2014.
+ // Copyright Paul A. Bristow 2006, 2007, 2012
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL cef1ae82ac7cfc6fbbbae11befc918d0
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/allocators/detail/allocator_common.hpp at line 5, boost/interprocess/containers/allocation_type.hpp at line 5, boost/interprocess/containers/deque.hpp at line 5, boost/interprocess/containers/flat_map.hpp at line 5, boost/interprocess/containers/flat_set.hpp at line 5, boost/interprocess/containers/list.hpp at line 5, boost/interprocess/containers/map.hpp at line 5, boost/interprocess/containers/pair.hpp at line 5, boost/interprocess/containers/set.hpp at line 5, boost/interprocess/containers/slist.hpp at line 5, boost/interprocess/containers/stable_vector.hpp at line 5, boost/interprocess/containers/string.hpp at line 5, boost/interprocess/containers/vector.hpp at line 5, boost/interprocess/containers/version_type.hpp at line 5, boost/interprocess/detail/variadic_templates_tools.hpp at line 5, boost/interprocess/managed_xsi_shared_memory.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2008-2012. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/interprocess/allocators/detail/allocator_common.hpp [3:5]
+ boost/interprocess/containers/allocation_type.hpp [3:5]
+ boost/interprocess/containers/deque.hpp [3:5]
+ boost/interprocess/containers/flat_map.hpp [3:5]
+ boost/interprocess/containers/flat_set.hpp [3:5]
+ boost/interprocess/containers/list.hpp [3:5]
+ boost/interprocess/containers/map.hpp [3:5]
+ boost/interprocess/containers/pair.hpp [3:5]
+ boost/interprocess/containers/set.hpp [3:5]
+ boost/interprocess/containers/slist.hpp [3:5]
+ boost/interprocess/containers/stable_vector.hpp [3:5]
+ boost/interprocess/containers/string.hpp [3:5]
+ boost/interprocess/containers/vector.hpp [3:5]
+ boost/interprocess/containers/version_type.hpp [3:5]
+ boost/interprocess/detail/variadic_templates_tools.hpp [3:5]
+ boost/interprocess/managed_xsi_shared_memory.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL cefbb022b3ae5f3ac530ca0a8d9e20c1
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/random/binomial_distribution.hpp at line 5, boost/random/detail/auto_link.hpp at line 5, boost/random/detail/generator_seed_seq.hpp at line 5, boost/random/discard_block.hpp at line 5, boost/random/extreme_value_distribution.hpp at line 5, boost/random/gamma_distribution.hpp at line 5, boost/random/mersenne_twister.hpp at line 5, boost/random/negative_binomial_distribution.hpp at line 5, boost/random/poisson_distribution.hpp at line 5, boost/random/seed_seq.hpp at line 5, boost/random/shuffle_order.hpp at line 5, boost/random/weibull_distribution.hpp at line 5
+ License text:
+ * Copyright Steven Watanabe 2010
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/random/binomial_distribution.hpp [3:5]
+ boost/random/detail/auto_link.hpp [3:5]
+ boost/random/detail/generator_seed_seq.hpp [3:6]
+ boost/random/discard_block.hpp [3:6]
+ boost/random/extreme_value_distribution.hpp [3:5]
+ boost/random/gamma_distribution.hpp [3:6]
+ boost/random/mersenne_twister.hpp [3:6]
+ boost/random/negative_binomial_distribution.hpp [3:5]
+ boost/random/poisson_distribution.hpp [3:6]
+ boost/random/seed_seq.hpp [3:5]
+ boost/random/shuffle_order.hpp [3:6]
+ boost/random/weibull_distribution.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL cf16777a1dfdf5f4dcd957c2ccbf8ffc
+BELONGS ya.make
+ License text:
+ // Copyright 2008 Howard Hinnant
+ // Copyright 2008 Beman Dawes
+ // Copyright 2009-2011 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/chrono/duration.hpp [3:5]
+ boost/chrono/system_clocks.hpp [3:5]
+ boost/chrono/time_point.hpp [3:5]
+ boost/ratio/detail/overflow_helpers.hpp [3:5]
+ boost/ratio/ratio.hpp [3:5]
+ boost/ratio/ratio_fwd.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL cf493f6fefc669355a842f7bfa617427
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/container_fwd.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2005-2014. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/container/container_fwd.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL cf501a6385edda09aa31f2586022bac5
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
+ // Copyright (c) 2011-2012 Bruno Lalande, Paris, France.
+ // Copyright (c) 2011-2012 Mateusz Loskot, London, UK.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/util/rational.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL cf5d38de6aecb51f9114e6992bbe0c7f
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2007-2015 Barend Gehrels, Amsterdam, the Netherlands.
+ // Copyright (c) 2008-2015 Bruno Lalande, Paris, France.
+ // Copyright (c) 2009-2015 Mateusz Loskot, London, UK.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/centroid.hpp [3:6]
+ boost/geometry/algorithms/convex_hull.hpp [3:5]
+ boost/geometry/algorithms/detail/disjoint/box_box.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/point_box.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/point_geometry.hpp [3:6]
+ boost/geometry/algorithms/detail/disjoint/point_point.hpp [3:6]
+ boost/geometry/algorithms/detail/envelope/box.hpp [3:5]
+ boost/geometry/algorithms/detail/envelope/implementation.hpp [3:5]
+ boost/geometry/algorithms/detail/envelope/interface.hpp [3:5]
+ boost/geometry/algorithms/detail/envelope/linear.hpp [3:5]
+ boost/geometry/algorithms/detail/envelope/point.hpp [3:5]
+ boost/geometry/algorithms/detail/envelope/range.hpp [3:5]
+ boost/geometry/algorithms/detail/envelope/segment.hpp [3:5]
+ boost/geometry/algorithms/detail/equals/implementation.hpp [3:6]
+ boost/geometry/algorithms/detail/equals/interface.hpp [3:6]
+ boost/geometry/algorithms/detail/expand/box.hpp [3:6]
+ boost/geometry/algorithms/detail/expand/implementation.hpp [3:6]
+ boost/geometry/algorithms/detail/expand/indexed.hpp [3:6]
+ boost/geometry/algorithms/detail/expand/interface.hpp [3:6]
+ boost/geometry/algorithms/detail/expand/point.hpp [3:6]
+ boost/geometry/algorithms/detail/expand/segment.hpp [3:6]
+ boost/geometry/algorithms/detail/intersection/multi.hpp [3:3]
+ boost/geometry/algorithms/detail/not.hpp [3:5]
+ boost/geometry/algorithms/detail/overlaps/implementation.hpp [3:5]
+ boost/geometry/algorithms/detail/overlaps/interface.hpp [3:5]
+ boost/geometry/algorithms/detail/overlay/clip_linestring.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/intersection_box_box.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/intersection_insert.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/less_by_segment_ratio.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/overlay.hpp [3:4]
+ boost/geometry/algorithms/detail/point_is_spike_or_equal.hpp [3:6]
+ boost/geometry/algorithms/detail/relate/de9im.hpp [3:3]
+ boost/geometry/algorithms/detail/relate/result.hpp [3:4]
+ boost/geometry/algorithms/detail/relate/turns.hpp [3:3]
+ boost/geometry/algorithms/detail/relation/interface.hpp [3:3]
+ boost/geometry/algorithms/detail/sections/sectionalize.hpp [3:6]
+ boost/geometry/algorithms/detail/throw_on_empty_input.hpp [3:6]
+ boost/geometry/algorithms/detail/touches/implementation.hpp [3:6]
+ boost/geometry/algorithms/detail/touches/interface.hpp [3:6]
+ boost/geometry/algorithms/dispatch/envelope.hpp [3:5]
+ boost/geometry/algorithms/dispatch/expand.hpp [3:6]
+ boost/geometry/algorithms/envelope.hpp [3:5]
+ boost/geometry/algorithms/equals.hpp [3:6]
+ boost/geometry/algorithms/expand.hpp [3:6]
+ boost/geometry/algorithms/not_implemented.hpp [3:5]
+ boost/geometry/algorithms/overlaps.hpp [3:5]
+ boost/geometry/algorithms/simplify.hpp [3:5]
+ boost/geometry/algorithms/sym_difference.hpp [3:3]
+ boost/geometry/algorithms/touches.hpp [3:6]
+ boost/geometry/core/exception.hpp [3:5]
+ boost/geometry/core/radian_access.hpp [3:5]
+ boost/geometry/core/ring_type.hpp [3:5]
+ boost/geometry/geometry.hpp [3:5]
+ boost/geometry/multi/multi.hpp [3:5]
+ boost/geometry/strategies/cartesian/box_in_box.hpp [3:6]
+ boost/geometry/strategies/cartesian/centroid_bashein_detmer.hpp [3:5]
+ boost/geometry/strategies/cartesian/point_in_box.hpp [3:5]
+ boost/geometry/strategies/cartesian/side_by_triangle.hpp [3:5]
+ boost/geometry/strategies/distance_result.hpp [3:7]
+ boost/geometry/strategies/intersection_result.hpp [3:3]
+ boost/geometry/strategies/strategy_transform.hpp [3:5]
+ boost/geometry/strategies/transform/matrix_transformers.hpp [3:5]
+ boost/geometry/util/compress_variant.hpp [3:5]
+ boost/geometry/util/math.hpp [3:5]
+ boost/geometry/util/transform_variant.hpp [3:5]
+ boost/geometry/views/detail/indexed_point_view.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL cf5e56ae189ec8cdbf6a61c940073563
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/filesystem/operations.hpp at line 5, boost/filesystem/path.hpp at line 5, boost/program_options.hpp at line 3
+ License text:
+ // Copyright Vladimir Prus 2002.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/filesystem/operations.hpp [3:6]
+ boost/filesystem/path.hpp [3:4]
+ boost/program_options.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL cf7e80573064ef58d887ce45ac2987ab
+BELONGS ya.make
+ License text:
+ // This file was modified by Oracle on 2013, 2014, 2015.
+ // Modifications copyright (c) 2013-2015 Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/relate/de9im.hpp [5:6]
+ boost/geometry/algorithms/detail/relate/relate_impl.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL d008844cf3c6e538e8ef03085426c78c
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/metaparse/v1/foldr.hpp at line 6
+ License text:
+ // Copyright Abel Sinkovics (abel@sinkovics.hu) 2011 - 2012.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/metaparse/v1/foldr.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL d029d22004bd9ecc9a0c8c630af36231
+BELONGS ya.make
+ License text:
+ Copyright Paul Mensonides 2003
+ Copyright Aleksey Gurtovoy 2003-2004
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/adapted/struct/detail/preprocessor/is_seq.hpp [5:6]
+ boost/mpl/aux_/config/arrays.hpp [5:5]
+ boost/mpl/aux_/config/operators.hpp [5:5]
+ boost/mpl/aux_/config/typeof.hpp [5:5]
+ boost/mpl/aux_/inserter_algorithm.hpp [5:6]
+ boost/mpl/aux_/numeric_cast_utils.hpp [5:5]
+ boost/mpl/aux_/order_impl.hpp [5:6]
+ boost/mpl/aux_/preprocessor/is_seq.hpp [5:6]
+ boost/mpl/aux_/preprocessor/token_equal.hpp [5:6]
+ boost/mpl/aux_/ptr_to_ref.hpp [5:5]
+ boost/mpl/back_inserter.hpp [5:6]
+ boost/mpl/bitwise.hpp [5:6]
+ boost/mpl/front_inserter.hpp [5:6]
+ boost/mpl/has_key.hpp [5:6]
+ boost/mpl/has_key_fwd.hpp [5:6]
+ boost/mpl/index_of.hpp [5:6]
+ boost/mpl/inserter.hpp [5:6]
+ boost/mpl/iter_fold_if.hpp [5:6]
+ boost/mpl/key_type.hpp [5:6]
+ boost/mpl/key_type_fwd.hpp [5:6]
+ boost/mpl/map/aux_/at_impl.hpp [5:6]
+ boost/mpl/map/aux_/begin_end_impl.hpp [5:6]
+ boost/mpl/map/aux_/clear_impl.hpp [5:6]
+ boost/mpl/map/aux_/contains_impl.hpp [5:5]
+ boost/mpl/map/aux_/empty_impl.hpp [5:5]
+ boost/mpl/map/aux_/erase_impl.hpp [5:6]
+ boost/mpl/map/aux_/erase_key_impl.hpp [5:6]
+ boost/mpl/map/aux_/has_key_impl.hpp [5:6]
+ boost/mpl/map/aux_/insert_impl.hpp [5:6]
+ boost/mpl/map/aux_/item.hpp [5:6]
+ boost/mpl/map/aux_/iterator.hpp [5:6]
+ boost/mpl/map/aux_/key_type_impl.hpp [5:6]
+ boost/mpl/map/aux_/map0.hpp [5:6]
+ boost/mpl/map/aux_/size_impl.hpp [5:5]
+ boost/mpl/map/aux_/tag.hpp [5:6]
+ boost/mpl/map/aux_/value_type_impl.hpp [5:6]
+ boost/mpl/map/map0.hpp [5:6]
+ boost/mpl/multiset/aux_/count_impl.hpp [5:5]
+ boost/mpl/multiset/aux_/insert_impl.hpp [5:5]
+ boost/mpl/multiset/aux_/item.hpp [5:5]
+ boost/mpl/multiset/aux_/multiset0.hpp [5:5]
+ boost/mpl/multiset/aux_/tag.hpp [5:5]
+ boost/mpl/multiset/multiset0.hpp [5:5]
+ boost/mpl/numeric_cast.hpp [5:5]
+ boost/mpl/order.hpp [5:6]
+ boost/mpl/order_fwd.hpp [5:6]
+ boost/mpl/set/aux_/at_impl.hpp [5:5]
+ boost/mpl/set/aux_/clear_impl.hpp [5:6]
+ boost/mpl/set/aux_/empty_impl.hpp [5:5]
+ boost/mpl/set/aux_/erase_impl.hpp [5:6]
+ boost/mpl/set/aux_/has_key_impl.hpp [5:6]
+ boost/mpl/set/aux_/key_type_impl.hpp [5:6]
+ boost/mpl/set/aux_/set0.hpp [5:6]
+ boost/mpl/set/aux_/size_impl.hpp [5:5]
+ boost/mpl/set/aux_/tag.hpp [5:6]
+ boost/mpl/set/aux_/value_type_impl.hpp [5:6]
+ boost/mpl/set/set0.hpp [5:6]
+ boost/mpl/set/set0_c.hpp [5:6]
+ boost/mpl/switch.hpp [5:5]
+ boost/mpl/value_type.hpp [5:6]
+ boost/mpl/value_type_fwd.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL d077f78d89db735c5477f98382d3f111
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2015 Jakub Pola <jakub.pola@gmail.com>
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/compute/algorithm/scatter_if.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL d08b64268e9bf8233011a58377066d90
+BELONGS libs/context/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/context/detail/apply.hpp at line 4, boost/context/detail/config.hpp at line 4, boost/context/detail/disable_overload.hpp at line 4, boost/context/detail/exception.hpp at line 4, boost/context/detail/exchange.hpp at line 4, boost/context/detail/externc.hpp at line 4, boost/context/detail/index_sequence.hpp at line 4, boost/context/detail/invoke.hpp at line 4, boost/context/detail/tuple.hpp at line 4, boost/context/execution_context.hpp at line 4, boost/context/execution_context_v1.hpp at line 4, boost/context/execution_context_v2.hpp at line 4, boost/context/execution_context_v2_void.ipp at line 4, boost/context/fixedsize_stack.hpp at line 4, boost/context/flags.hpp at line 4, boost/context/pooled_fixedsize_stack.hpp at line 4, boost/context/posix/protected_fixedsize_stack.hpp at line 4, boost/context/posix/segmented_stack.hpp at line 4, boost/context/preallocated.hpp at line 4, boost/context/protected_fixedsize_stack.hpp at line 4, boost/context/segmented_stack.hpp at line 4, boost/context/stack_context.hpp at line 4, boost/context/stack_traits.hpp at line 4, boost/context/windows/protected_fixedsize_stack.hpp at line 4, boost/coroutine2/all.hpp at line 4, boost/coroutine2/coroutine.hpp at line 4, boost/coroutine2/detail/config.hpp at line 4, boost/coroutine2/detail/coroutine.hpp at line 4, boost/coroutine2/detail/create_control_block.ipp at line 4, boost/coroutine2/detail/decay_copy.hpp at line 4, boost/coroutine2/detail/disable_overload.hpp at line 4, boost/coroutine2/detail/forced_unwind.hpp at line 4, boost/coroutine2/detail/pull_coroutine.hpp at line 4, boost/coroutine2/detail/pull_coroutine.ipp at line 4, boost/coroutine2/detail/push_control_block_cc.hpp at line 4, boost/coroutine2/detail/push_control_block_cc.ipp at line 4, boost/coroutine2/detail/push_coroutine.hpp at line 4, boost/coroutine2/detail/push_coroutine.ipp at line 4, boost/coroutine2/detail/state.hpp at line 4, boost/coroutine2/detail/wrap.hpp at line 4, boost/coroutine2/fixedsize_stack.hpp at line 4, boost/coroutine2/pooled_fixedsize_stack.hpp at line 4, boost/coroutine2/protected_fixedsize_stack.hpp at line 4, boost/coroutine2/segmented_stack.hpp at line 4, boost/fiber/detail/decay_copy.hpp at line 4, boost/fiber/detail/disable_overload.hpp at line 4, boost/fiber/fixedsize_stack.hpp at line 4, boost/fiber/pooled_fixedsize_stack.hpp at line 4, boost/fiber/protected_fixedsize_stack.hpp at line 4, boost/fiber/segmented_stack.hpp at line 4, libs/context/src/posix/stack_traits.cpp at line 4, libs/context/src/windows/stack_traits.cpp at line 4
+ License text:
+ // Copyright Oliver Kowalke 2014.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/context/detail/apply.hpp [2:4]
+ boost/context/detail/config.hpp [2:4]
+ boost/context/detail/disable_overload.hpp [2:4]
+ boost/context/detail/exception.hpp [2:4]
+ boost/context/detail/exchange.hpp [2:4]
+ boost/context/detail/externc.hpp [2:4]
+ boost/context/detail/index_sequence.hpp [2:4]
+ boost/context/detail/invoke.hpp [2:4]
+ boost/context/detail/tuple.hpp [2:4]
+ boost/context/execution_context.hpp [2:4]
+ boost/context/execution_context_v1.hpp [2:4]
+ boost/context/execution_context_v2.hpp [2:4]
+ boost/context/execution_context_v2_void.ipp [2:4]
+ boost/context/fixedsize_stack.hpp [2:4]
+ boost/context/flags.hpp [2:4]
+ boost/context/pooled_fixedsize_stack.hpp [2:4]
+ boost/context/posix/protected_fixedsize_stack.hpp [2:4]
+ boost/context/posix/segmented_stack.hpp [2:4]
+ boost/context/preallocated.hpp [2:4]
+ boost/context/protected_fixedsize_stack.hpp [2:4]
+ boost/context/segmented_stack.hpp [2:4]
+ boost/context/stack_context.hpp [2:4]
+ boost/context/stack_traits.hpp [2:4]
+ boost/context/windows/protected_fixedsize_stack.hpp [2:4]
+ boost/coroutine2/all.hpp [2:4]
+ boost/coroutine2/coroutine.hpp [2:4]
+ boost/coroutine2/detail/config.hpp [2:4]
+ boost/coroutine2/detail/coroutine.hpp [2:4]
+ boost/coroutine2/detail/create_control_block.ipp [2:4]
+ boost/coroutine2/detail/decay_copy.hpp [2:4]
+ boost/coroutine2/detail/disable_overload.hpp [2:4]
+ boost/coroutine2/detail/forced_unwind.hpp [2:4]
+ boost/coroutine2/detail/pull_coroutine.hpp [2:4]
+ boost/coroutine2/detail/pull_coroutine.ipp [2:4]
+ boost/coroutine2/detail/push_control_block_cc.hpp [2:4]
+ boost/coroutine2/detail/push_control_block_cc.ipp [2:4]
+ boost/coroutine2/detail/push_coroutine.hpp [2:4]
+ boost/coroutine2/detail/push_coroutine.ipp [2:4]
+ boost/coroutine2/detail/state.hpp [2:4]
+ boost/coroutine2/detail/wrap.hpp [2:4]
+ boost/coroutine2/fixedsize_stack.hpp [2:4]
+ boost/coroutine2/pooled_fixedsize_stack.hpp [2:4]
+ boost/coroutine2/protected_fixedsize_stack.hpp [2:4]
+ boost/coroutine2/segmented_stack.hpp [2:4]
+ boost/fiber/detail/decay_copy.hpp [2:4]
+ boost/fiber/detail/disable_overload.hpp [2:4]
+ boost/fiber/fixedsize_stack.hpp [2:4]
+ boost/fiber/pooled_fixedsize_stack.hpp [2:4]
+ boost/fiber/protected_fixedsize_stack.hpp [2:4]
+ boost/fiber/segmented_stack.hpp [2:4]
+ libs/context/src/posix/stack_traits.cpp [2:4]
+ libs/context/src/windows/stack_traits.cpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL d08ee88acc4c1b352aea89d4523daace
+BELONGS ya.make
+ License text:
+ // Copyright 2009, Andrew Sutton
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/graph_concepts.hpp [6:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL d0a2ba3c20953d96004719528e4b7464
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/detail/defaults_def.hpp at line 5, boost/python/detail/defaults_gen.hpp at line 5, boost/python/init.hpp at line 5, boost/python/signature.hpp at line 5
+ License text:
+ // Copyright David Abrahams 2002, Joel de Guzman, 2002.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/python/detail/defaults_def.hpp [3:5]
+ boost/python/detail/defaults_gen.hpp [3:5]
+ boost/python/init.hpp [3:5]
+ boost/python/signature.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL d0b7b4d9414b744a276dde50efc26987
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2017.
+ // Copyright Nick Thompson 2017.
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/quadrature/gauss_kronrod.hpp [1:4]
+ boost/math/special_functions/legendre_stieltjes.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL d0be2d8de4aedec01573af923ce64bf0
+BELONGS ya.make
+ License text:
+ // (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
+ // Howard Hinnant and John Maddock 2000, 2010.
+ // (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 2001
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_traits/is_reference.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL d0df6b231fc0d50a4fbb01672c996b9d
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2008-2013 Tim Blechmann
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/lockfree/queue.hpp [5:5]
+ boost/lockfree/stack.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL d13138d28bff8572a5d27fe6a28aab70
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/errors.hpp at line 16
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/interprocess/errors.hpp [13:16]
+
+KEEP COPYRIGHT_SERVICE_LABEL d1539939d3ea353afc27eefdf3b67a31
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/typeof/register_fundamental.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL d1621c6c21ccfd4947a100ffad23e459
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2014 Glen Joseph Fernandes
+ // glenfe at live dot com
+ // Copyright (C) 2014 Agustin Berge
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/core/ref.hpp [21:23]
+ boost/spirit/home/x3/support/traits/is_parser.hpp [2:3]
+ boost/type_traits/is_final.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL d166aaec24788ba33ec179aaaedaf93d
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2000-2010
+ // Joerg Walter, Mathias Koch, Gunter Winkler, David Bellot
+ // Copyright (c) 2014, Athanasios Iliopoulos
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/ublas/matrix.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL d1819f46d6f27ddacf021ceff86b106f
+BELONGS ya.make
+ License text:
+ // (C) Copyright Gennaro Prota 2003.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/non_type.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL d1ac3c25c828d7ba6c559ef23e5e88a1
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/platform/vxworks.hpp [1:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL d1e593bd85d0eb5a452ed45663a23154
+BELONGS ya.make
+ License text:
+ // (C) Copyright Beman Dawes 1999.
+ // (C) Copyright Jens Mauer 2001
+ // (C) Copyright John Maddock 2001
+ // Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/cstdint.hpp [3:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL d1e7f9bd90cf97484f0926c3d9377996
+BELONGS libs/program_options/ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: libs/program_options/src/split.cpp at line 3
+ License text:
+ // Copyright Sascha Ochsenknecht 2009.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ libs/program_options/src/split.cpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL d1eeae51f362a32140f64b39499ca9bf
+BELONGS libs/context/ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: libs/context/src/asm/jump_i386_ms_pe_gas.asm at line 5, libs/context/src/asm/jump_x86_64_ms_pe_gas.asm at line 5, libs/context/src/asm/make_i386_ms_pe_gas.asm at line 5, libs/context/src/asm/make_x86_64_ms_pe_gas.asm at line 5, libs/context/src/asm/ontop_i386_ms_pe_gas.asm at line 5, libs/context/src/asm/ontop_x86_64_ms_pe_gas.asm at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ libs/context/src/asm/jump_i386_ms_pe_gas.asm [2:5]
+ libs/context/src/asm/jump_x86_64_ms_pe_gas.asm [2:5]
+ libs/context/src/asm/make_i386_ms_pe_gas.asm [2:5]
+ libs/context/src/asm/make_x86_64_ms_pe_gas.asm [2:5]
+ libs/context/src/asm/ontop_i386_ms_pe_gas.asm [2:5]
+ libs/context/src/asm/ontop_x86_64_ms_pe_gas.asm [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL d2d6569dd19f792f7541651756026c28
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/utility.hpp [2:9]
+ boost/spirit/home/classic/utility/loops.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL d2ee995cb5903575db47d47b28186882
+BELONGS ya.make
+ License text:
+ Copyright (c) 2009-2009: Joachim Faulhaber
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/icl/detail/concept_check.hpp [2:2]
+ boost/icl/detail/element_iterator.hpp [2:2]
+ boost/icl/detail/mapped_reference.hpp [2:2]
+ boost/icl/detail/relation_state.hpp [2:3]
+ boost/icl/iterator.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL d2f73b81273d8de95d251814749aa165
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/ptr_container/ptr_container.hpp at line 6
+ License text:
+ // Copyright Thorsten Ottosen 2003-2008. Use, modification and
+ // distribution is subject to the Boost Software License, Version
+ // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/ptr_container/ptr_container.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL d2fc4a5805963e793129ad966a663afb
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/polygon/detail/voronoi_ctypes.hpp at line 5, boost/polygon/detail/voronoi_predicates.hpp at line 5, boost/polygon/detail/voronoi_robust_fpt.hpp at line 5, boost/polygon/detail/voronoi_structures.hpp at line 5, boost/polygon/voronoi.hpp at line 5, boost/polygon/voronoi_builder.hpp at line 5, boost/polygon/voronoi_diagram.hpp at line 5, boost/polygon/voronoi_geometry_type.hpp at line 5
+ License text:
+ // Copyright Andrii Sydorchuk 2010-2012.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/polygon/detail/voronoi_ctypes.hpp [3:5]
+ boost/polygon/detail/voronoi_predicates.hpp [3:5]
+ boost/polygon/detail/voronoi_robust_fpt.hpp [3:5]
+ boost/polygon/detail/voronoi_structures.hpp [3:5]
+ boost/polygon/voronoi.hpp [3:5]
+ boost/polygon/voronoi_builder.hpp [3:5]
+ boost/polygon/voronoi_diagram.hpp [3:5]
+ boost/polygon/voronoi_geometry_type.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL d33733b6812586c20c76107355a1b34c
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2017 Kohei Takahashi
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/container/vector/detail/cpp03/vector.hpp [2:3]
+ boost/fusion/include/std_array.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL d34a9a3fbfc60fa896c038960d122b12
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2009-2016 Vladimir Batov.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/convert.hpp [3:3]
+ boost/convert/base.hpp [1:3]
+ boost/convert/detail/boost_parameter_ext.hpp [1:3]
+ boost/convert/detail/char.hpp [1:3]
+ boost/convert/detail/config.hpp [1:3]
+ boost/convert/detail/has_member.hpp [1:3]
+ boost/convert/detail/is_callable.hpp [1:3]
+ boost/convert/detail/is_converter.hpp [1:3]
+ boost/convert/detail/is_fun.hpp [1:3]
+ boost/convert/detail/is_string.hpp [1:3]
+ boost/convert/detail/range.hpp [1:3]
+ boost/convert/lexical_cast.hpp [1:3]
+ boost/convert/parameters.hpp [1:3]
+ boost/convert/printf.hpp [1:3]
+ boost/convert/spirit.hpp [1:3]
+ boost/convert/stream.hpp [1:3]
+ boost/convert/strtol.hpp [1:3]
+ boost/make_default.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL d350900b2e39e132319537297cfbe520
+BELONGS ya.make
+ License text:
+ // (C) Copyright Ion Gaztanaga 2006-2015
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/intrusive/hashtable.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL d352bc8699bf942eeba5c2df746a55f4
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2014-2018, Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/is_valid/interface.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL d39b002100b0e8167c07ba134cd22ec6
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/flyweight/detail/is_placeholder_expr.hpp at line 3, boost/flyweight/detail/nested_xxx_if_not_ph.hpp at line 3, boost/flyweight/set_factory.hpp at line 3, boost/flyweight/static_holder.hpp at line 3
+ License text:
+ /* Copyright 2006-2009 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/flyweight/detail/is_placeholder_expr.hpp [1:3]
+ boost/flyweight/detail/nested_xxx_if_not_ph.hpp [1:3]
+ boost/flyweight/set_factory.hpp [1:3]
+ boost/flyweight/static_holder.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL d3e56c8e29d98a9f5feed4a5b99585ad
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/index/adaptors/query.hpp [5:5]
+ boost/geometry/index/detail/algorithms/diff_abs.hpp [5:5]
+ boost/geometry/index/detail/algorithms/smallest_for_indexable.hpp [5:5]
+ boost/geometry/index/detail/algorithms/sum_for_indexable.hpp [5:5]
+ boost/geometry/index/detail/algorithms/union_content.hpp [5:6]
+ boost/geometry/index/detail/config_begin.hpp [3:3]
+ boost/geometry/index/detail/config_end.hpp [3:3]
+ boost/geometry/index/detail/meta.hpp [3:3]
+ boost/geometry/index/detail/rtree/adaptors.hpp [5:5]
+ boost/geometry/index/detail/rtree/kmeans/kmeans.hpp [5:5]
+ boost/geometry/index/detail/rtree/kmeans/split.hpp [5:5]
+ boost/geometry/index/detail/rtree/linear/linear.hpp [5:5]
+ boost/geometry/index/detail/rtree/node/concept.hpp [5:5]
+ boost/geometry/index/detail/rtree/node/pairs.hpp [5:5]
+ boost/geometry/index/detail/rtree/quadratic/quadratic.hpp [5:5]
+ boost/geometry/index/detail/rtree/rstar/rstar.hpp [5:5]
+ boost/geometry/index/detail/rtree/utilities/are_levels_ok.hpp [5:5]
+ boost/geometry/index/detail/rtree/utilities/gl_draw.hpp [5:5]
+ boost/geometry/index/detail/rtree/utilities/print.hpp [5:5]
+ boost/geometry/index/detail/rtree/utilities/statistics.hpp [5:6]
+ boost/geometry/index/detail/rtree/utilities/view.hpp [5:5]
+ boost/geometry/index/detail/tags.hpp [5:5]
+ boost/geometry/index/detail/translator.hpp [3:3]
+ boost/geometry/index/detail/tuples.hpp [3:3]
+ boost/geometry/index/detail/utilities.hpp [3:3]
+ boost/geometry/index/distance_predicates.hpp [5:5]
+ boost/geometry/index/inserter.hpp [5:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL d3f7a028120af640b01efe1aa0ac7ac2
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/poly_collection/detail/any_iterator.hpp at line 3, boost/poly_collection/detail/auto_iterator.hpp at line 3, boost/poly_collection/detail/callable_wrapper_iterator.hpp at line 3, boost/poly_collection/detail/integer_sequence.hpp at line 3, boost/poly_collection/function_collection_fwd.hpp at line 3
+ License text:
+ /* Copyright 2016 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/poly_collection/detail/any_iterator.hpp [1:3]
+ boost/poly_collection/detail/auto_iterator.hpp [1:3]
+ boost/poly_collection/detail/callable_wrapper_iterator.hpp [1:3]
+ boost/poly_collection/detail/integer_sequence.hpp [1:3]
+ boost/poly_collection/function_collection_fwd.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL d3fbabf96f022c1b21e5ea1626e363ac
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2012-2014 Barend Gehrels, Amsterdam, the Netherlands.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/buffer/buffer_inserter.hpp [3:3]
+ boost/geometry/algorithms/detail/buffer/buffer_policies.hpp [3:3]
+ boost/geometry/algorithms/detail/buffer/buffered_piece_collection.hpp [3:4]
+ boost/geometry/algorithms/detail/buffer/get_piece_turns.hpp [3:4]
+ boost/geometry/algorithms/detail/buffer/line_line_intersection.hpp [3:3]
+ boost/geometry/algorithms/detail/buffer/parallel_continue.hpp [3:3]
+ boost/geometry/algorithms/detail/buffer/turn_in_piece_visitor.hpp [3:4]
+ boost/geometry/algorithms/detail/get_left_turns.hpp [3:3]
+ boost/geometry/algorithms/detail/occupation_info.hpp [3:3]
+ boost/geometry/multi/algorithms/disjoint.hpp [3:5]
+ boost/geometry/strategies/agnostic/buffer_distance_asymmetric.hpp [3:3]
+ boost/geometry/strategies/agnostic/buffer_distance_symmetric.hpp [3:3]
+ boost/geometry/strategies/buffer.hpp [3:3]
+ boost/geometry/strategies/cartesian/buffer_end_flat.hpp [3:3]
+ boost/geometry/strategies/cartesian/buffer_join_miter.hpp [3:3]
+ boost/geometry/strategies/cartesian/buffer_join_round_by_divide.hpp [3:3]
+ boost/geometry/strategies/cartesian/buffer_point_square.hpp [2:4]
+ boost/geometry/strategies/cartesian/buffer_side_straight.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL d4340d0d736b54981d79b03c9fdb5dd0
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2013 Joel de Guzman
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/algorithm/auxiliary/move.hpp [2:2]
+ boost/fusion/container/generation/deque_tie.hpp [2:2]
+ boost/fusion/container/generation/make_deque.hpp [2:2]
+ boost/fusion/container/generation/make_map.hpp [2:2]
+ boost/fusion/container/generation/map_tie.hpp [2:2]
+ boost/fusion/container/map/detail/at_impl.hpp [2:2]
+ boost/fusion/container/map/detail/at_key_impl.hpp [2:2]
+ boost/fusion/container/map/detail/value_at_impl.hpp [2:2]
+ boost/fusion/container/map/detail/value_at_key_impl.hpp [2:2]
+ boost/fusion/include/move.hpp [2:2]
+ boost/spirit/home/x3.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL d44a7af240f3d7a5737ce860f09d57dc
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2015 Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/relation/implementation.hpp [3:3]
+ boost/geometry/algorithms/relate.hpp [3:3]
+ boost/geometry/algorithms/relation.hpp [3:3]
+ boost/geometry/core/assert.hpp [3:6]
+ boost/geometry/util/condition.hpp [3:3]
+ boost/geometry/util/has_infinite_coordinate.hpp [3:3]
+ boost/geometry/util/has_nan_coordinate.hpp [3:3]
+ boost/geometry/util/has_non_finite_coordinate.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL d4cc8d0ff6a85a6cd36e6baa01a74613
+BELONGS ya.make
+ License text:
+ // Copyright 2014-2015 Renato Tegon Forti, Antony Polukhin.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/dll/detail/posix/path_from_handle.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL d4d3b84605f6db76e76a70a7f3101696
+BELONGS ya.make
+ License text:
+ // (C) Copyright 2012 Vicente Botet
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/lock_concepts.hpp [1:1]
+ boost/thread/lockable_concepts.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL d5560a9b5388fcb00fcee11320a6d25a
+BELONGS ya.make
+ License text:
+ Copyright 2018 Glen Joseph Fernandes
+ (glenjofe@gmail.com)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/core/empty_value.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL d59fc852d5689f688dbbd0404c839c4e
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/concepts/mp_number_archetypes.hpp at line 4, boost/multiprecision/cpp_int.hpp at line 4, boost/multiprecision/cpp_int/add.hpp at line 4, boost/multiprecision/cpp_int/bitwise.hpp at line 4, boost/multiprecision/cpp_int/checked.hpp at line 4, boost/multiprecision/cpp_int/comparison.hpp at line 4, boost/multiprecision/cpp_int/cpp_int_config.hpp at line 4, boost/multiprecision/cpp_int/divide.hpp at line 4, boost/multiprecision/cpp_int/limits.hpp at line 4, boost/multiprecision/cpp_int/misc.hpp at line 4, boost/multiprecision/cpp_int/multiply.hpp at line 4, boost/multiprecision/debug_adaptor.hpp at line 4, boost/multiprecision/detail/digits.hpp at line 4, boost/multiprecision/detail/dynamic_array.hpp at line 4, boost/multiprecision/detail/integer_ops.hpp at line 4, boost/multiprecision/detail/no_et_ops.hpp at line 4, boost/multiprecision/detail/number_compare.hpp at line 4, boost/multiprecision/detail/rebind.hpp at line 4, boost/multiprecision/detail/utype_helper.hpp at line 4, boost/multiprecision/integer.hpp at line 4, boost/multiprecision/logged_adaptor.hpp at line 4, boost/multiprecision/miller_rabin.hpp at line 4, boost/multiprecision/random.hpp at line 4, boost/multiprecision/traits/explicit_conversion.hpp at line 4, boost/multiprecision/traits/extract_exponent_type.hpp at line 4, boost/multiprecision/traits/is_restricted_conversion.hpp at line 4
+ License text:
+ // Copyright 2012 John Maddock. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/multiprecision/concepts/mp_number_archetypes.hpp [2:4]
+ boost/multiprecision/cpp_int.hpp [2:4]
+ boost/multiprecision/cpp_int/add.hpp [2:4]
+ boost/multiprecision/cpp_int/bitwise.hpp [2:4]
+ boost/multiprecision/cpp_int/checked.hpp [2:4]
+ boost/multiprecision/cpp_int/comparison.hpp [2:4]
+ boost/multiprecision/cpp_int/cpp_int_config.hpp [2:4]
+ boost/multiprecision/cpp_int/divide.hpp [2:4]
+ boost/multiprecision/cpp_int/limits.hpp [2:4]
+ boost/multiprecision/cpp_int/misc.hpp [2:4]
+ boost/multiprecision/cpp_int/multiply.hpp [2:4]
+ boost/multiprecision/debug_adaptor.hpp [2:4]
+ boost/multiprecision/detail/digits.hpp [2:4]
+ boost/multiprecision/detail/dynamic_array.hpp [2:5]
+ boost/multiprecision/detail/integer_ops.hpp [2:4]
+ boost/multiprecision/detail/no_et_ops.hpp [2:4]
+ boost/multiprecision/detail/number_compare.hpp [2:4]
+ boost/multiprecision/detail/rebind.hpp [2:5]
+ boost/multiprecision/detail/utype_helper.hpp [2:5]
+ boost/multiprecision/integer.hpp [2:4]
+ boost/multiprecision/logged_adaptor.hpp [2:4]
+ boost/multiprecision/miller_rabin.hpp [2:4]
+ boost/multiprecision/random.hpp [2:6]
+ boost/multiprecision/traits/explicit_conversion.hpp [2:5]
+ boost/multiprecision/traits/extract_exponent_type.hpp [2:4]
+ boost/multiprecision/traits/is_restricted_conversion.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL d5a8bd6fe5b77ae660806951d65c6d09
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/msm/mpl_graph/adjacency_list_graph.hpp at line 3, boost/msm/mpl_graph/breadth_first_search.hpp at line 3, boost/msm/mpl_graph/depth_first_search.hpp at line 3, boost/msm/mpl_graph/detail/adjacency_list_graph.ipp at line 3, boost/msm/mpl_graph/detail/graph_implementation_interface.ipp at line 3, boost/msm/mpl_graph/detail/incidence_list_graph.ipp at line 3, boost/msm/mpl_graph/incidence_list_graph.hpp at line 3, boost/msm/mpl_graph/mpl_graph.hpp at line 3, boost/msm/mpl_graph/mpl_utils.hpp at line 3, boost/msm/mpl_graph/search_colors.hpp at line 3
+ License text:
+ // Copyright 2008-2010 Gordon Woodhull
// Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/context/continuation.hpp [2:4]
- boost/context/continuation_fcontext.hpp [2:4]
- boost/context/continuation_ucontext.hpp [2:4]
- boost/context/continuation_winfib.hpp [2:4]
- boost/context/detail/prefetch.hpp [1:3]
- boost/context/fiber.hpp [2:4]
- boost/context/fiber_fcontext.hpp [2:4]
- boost/context/fiber_ucontext.hpp [2:4]
- boost/context/fiber_winfib.hpp [2:4]
- boost/fiber/algo/numa/work_stealing.hpp [2:4]
- boost/fiber/cuda/waitfor.hpp [2:4]
- boost/fiber/detail/is_all_same.hpp [2:4]
- boost/fiber/detail/rtm.hpp [2:4]
- boost/fiber/detail/spinlock_rtm.hpp [2:4]
- boost/fiber/detail/spinlock_status.hpp [2:4]
- boost/fiber/hip/waitfor.hpp [2:4]
- boost/fiber/numa/pin_thread.hpp [2:4]
- boost/fiber/numa/topology.hpp [2:4]
- libs/context/src/continuation.cpp [2:4]
- libs/context/src/fiber.cpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL c3f6937fa9ed593f0837a0f91c6d568a
-BELONGS libs/chrono/ya.make ya.make
- License text:
- // Copyright 2010 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/chrono/detail/inlined/thread_clock.hpp [3:3]
- boost/chrono/detail/inlined/win/thread_clock.hpp [3:3]
- boost/chrono/detail/scan_keyword.hpp [12:12]
- boost/ratio.hpp [3:3]
- boost/type_traits/add_rvalue_reference.hpp [3:3]
- boost/type_traits/declval.hpp [3:3]
- boost/utility/declval.hpp [3:3]
- boost/winapi/apc.hpp [2:3]
- boost/winapi/basic_types.hpp [2:3]
- boost/winapi/condition_variable.hpp [2:3]
- boost/winapi/critical_section.hpp [2:3]
- boost/winapi/directory_management.hpp [2:3]
- boost/winapi/dll.hpp [2:5]
- boost/winapi/error_handling.hpp [2:4]
- boost/winapi/event.hpp [2:3]
- boost/winapi/file_management.hpp [2:5]
- boost/winapi/file_mapping.hpp [2:5]
- boost/winapi/get_current_process.hpp [2:3]
- boost/winapi/get_current_process_id.hpp [2:2]
- boost/winapi/get_current_thread.hpp [2:3]
- boost/winapi/get_current_thread_id.hpp [2:3]
- boost/winapi/get_last_error.hpp [2:3]
- boost/winapi/get_process_times.hpp [2:2]
- boost/winapi/get_thread_times.hpp [2:3]
- boost/winapi/handles.hpp [2:3]
- boost/winapi/heap_memory.hpp [2:3]
- boost/winapi/init_once.hpp [2:3]
- boost/winapi/local_memory.hpp [2:3]
- boost/winapi/memory.hpp [2:3]
- boost/winapi/mutex.hpp [2:3]
- boost/winapi/security.hpp [2:3]
- boost/winapi/semaphore.hpp [2:3]
- boost/winapi/srw_lock.hpp [2:3]
- boost/winapi/synchronization.hpp [2:3]
- boost/winapi/system.hpp [2:4]
- boost/winapi/thread.hpp [2:3]
- boost/winapi/time.hpp [2:4]
- boost/winapi/timers.hpp [2:3]
- boost/winapi/wait.hpp [2:4]
- libs/chrono/src/thread_clock.cpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL c42c62dc83160665ca873f9cf86d5120
-BELONGS ya.make
- License text:
- // Copyright (C) 2007 The Trustees of Indiana University.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/distributed/delta_stepping_shortest_paths.hpp [1:1]
- boost/mpi/intercommunicator.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL c43f1a8f551d96ac636a4afde37c7277
-BELONGS ya.make
- License text:
- // (C) Copyright 2009 Eric Bose-Wolf
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/transitive_reduction.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL c44aa21684966e124d964b7f61ceb274
-BELONGS ya.make
- License text:
- // Copyright (C) 2006 The Trustees of Indiana University.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/distributed/compressed_sparse_row_graph.hpp [1:1]
- boost/graph/distributed/selector.hpp [1:1]
- boost/graph/distributed/st_connected.hpp [1:1]
- boost/graph/distributed/two_bit_color_map.hpp [1:1]
- boost/graph/distributed/unsafe_serialize.hpp [1:1]
- boost/graph/st_connected.hpp [1:1]
- boost/property_map/parallel/unsafe_serialize.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL c4522d1369b94279fbb23ab0ac17f56f
-BELONGS ya.make
- License text:
- // Copyright (C) 2013-2014 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/csbl/memory/unique_ptr.hpp [1:1]
- boost/thread/executors/basic_thread_pool.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL c46012eca8a3e5ac59a255e4e1b4af11
-BELONGS ya.make
- License text:
- // Copyright Beman Dawes 2003, 2006, 2008
- // Copyright 2009-2011 Vicente J. Botet Escriba
- // Copyright (c) Microsoft Corporation 2014
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/chrono/config.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL c49f54d66ea47f16d108769b63951ae7
-BELONGS ya.make
- License text:
- Author: Joachim Faulhaber
- Copyright (c) 2009-2010: Joachim Faulhaber
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/icl/detail/design_config.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL c4fca1d4b932defc8caff94eaf8ea7e8
-BELONGS ya.make
- License text:
- // Copyright (C) 2010 Peder Holt
- // Use, modification and distribution is subject to the Boost Software
- // License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/typeof/unsupported.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL c511f6b71fbe5ddd178ed0f458fb2bd2
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/flyweight/detail/recursive_lw_mutex.hpp at line 3
- License text:
- /* Copyright 2006-2013 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/flyweight/detail/recursive_lw_mutex.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL c53a70d05211d1267ddeb5866bb86169
-BELONGS ya.make
- License text:
- // Copyright (c) 2010 Nuovation System Designs, LLC
- // Grant Erickson <gerickson@nuovations.com>
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/algorithm/cxx11/is_sorted.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL c5a98cb7899420f8c9cbc5618165814f
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/policies/robustness/get_rescale_policy.hpp [3:6]
- boost/geometry/policies/robustness/rescale_policy.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL c5e47f450728151ab0ae75f0eff6e2ec
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/expand/box.hpp [3:6]
- boost/geometry/algorithms/detail/expand/implementation.hpp [3:6]
- boost/geometry/algorithms/detail/expand/indexed.hpp [3:6]
- boost/geometry/algorithms/detail/expand/interface.hpp [3:6]
- boost/geometry/algorithms/detail/expand/point.hpp [3:6]
- boost/geometry/algorithms/detail/expand/segment.hpp [3:6]
- boost/geometry/algorithms/dispatch/expand.hpp [3:6]
- boost/geometry/algorithms/expand.hpp [3:6]
- boost/geometry/strategies/distance_result.hpp [3:7]
- boost/geometry/util/combine_if.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL c60de0ab1b87180baa8dac7f813ae3b4
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/constants/constants.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL c640a5601cfe103fea089d974c7050b7
-BELONGS ya.make
- License text:
- // (C) Copyright Darin Adler 2000
- // (C) Copyright Beman Dawes 2006, 2009, 2014
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/endian/arithmetic.hpp [3:4]
- boost/endian/buffers.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL c6910ec25728192b1e3d5d011fd08bc4
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/rolling_moment.hpp at line 6, boost/accumulators/statistics/rolling_variance.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/accumulators/statistics/rolling_moment.hpp [3:6]
- boost/accumulators/statistics/rolling_variance.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL c6ddcace49cae4846a1e1f29e64a3cb8
-BELONGS ya.make
- License text:
- // Copyright (c) 2002 Eric Friedman, Itay Maman
- // Copyright (c) 2016-2017 Antony Polukhin
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/variant/recursive_wrapper_fwd.hpp [6:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL c6f32cbdc60da329c029d3eceb822cb5
-BELONGS ya.make
- License text:
- // Copyright 2001 Indiana University
- // Author: Jeremy G. Siek
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/iteration_macros.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL c709b7e0fb1043b3cbf5a01d9703ab0b
-BELONGS ya.make
- License text:
- // (C) Copyright 2007-8 Anthony Williams
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/detail/move.hpp [4:5]
- boost/thread/detail/platform_time.hpp [3:4]
- boost/thread/pthread/condition_variable_fwd.hpp [6:7]
- boost/thread/pthread/mutex.hpp [3:6]
- boost/thread/pthread/once.hpp [6:7]
- boost/thread/pthread/pthread_mutex_scoped_lock.hpp [3:3]
- boost/thread/pthread/recursive_mutex.hpp [3:6]
- boost/thread/thread.hpp [6:6]
- boost/thread/tss.hpp [6:6]
- boost/thread/win32/condition_variable.hpp [6:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL c71c982168dadac76afc264af18e2e74
-BELONGS ya.make
- License text:
- // Copyright (c) 2012-2015 Barend Gehrels, Amsterdam, the Netherlands.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/buffer/buffered_ring.hpp [3:3]
- boost/geometry/strategies/cartesian/buffer_end_round.hpp [3:3]
- boost/geometry/strategies/cartesian/buffer_join_round.hpp [3:3]
- boost/geometry/strategies/cartesian/buffer_point_circle.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL c76a2f55366b4f9354548d6ef58f5636
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/array.hpp at line 6, boost/preprocessor/array/enum.hpp at line 6, boost/preprocessor/array/to_list.hpp at line 6, boost/preprocessor/array/to_seq.hpp at line 6, boost/preprocessor/array/to_tuple.hpp at line 6, boost/preprocessor/config/config.hpp at line 6, boost/preprocessor/facilities.hpp at line 6, boost/preprocessor/facilities/overload.hpp at line 6, boost/preprocessor/library.hpp at line 6, boost/preprocessor/list/to_seq.hpp at line 6, boost/preprocessor/seq.hpp at line 6, boost/preprocessor/seq/to_list.hpp at line 6, boost/preprocessor/tuple/enum.hpp at line 6, boost/preprocessor/tuple/size.hpp at line 6, boost/preprocessor/tuple/to_array.hpp at line 6, boost/preprocessor/tuple/to_seq.hpp at line 6, boost/preprocessor/variadic.hpp at line 6, boost/preprocessor/variadic/elem.hpp at line 6, boost/preprocessor/variadic/size.hpp at line 6, boost/preprocessor/variadic/to_array.hpp at line 6, boost/preprocessor/variadic/to_list.hpp at line 6, boost/preprocessor/variadic/to_seq.hpp at line 6, boost/preprocessor/variadic/to_tuple.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/preprocessor/array.hpp [3:6]
- boost/preprocessor/array/enum.hpp [3:6]
- boost/preprocessor/array/to_list.hpp [3:6]
- boost/preprocessor/array/to_seq.hpp [3:6]
- boost/preprocessor/array/to_tuple.hpp [3:6]
- boost/preprocessor/config/config.hpp [3:6]
- boost/preprocessor/facilities.hpp [3:6]
- boost/preprocessor/facilities/overload.hpp [3:6]
- boost/preprocessor/library.hpp [3:6]
- boost/preprocessor/list/to_seq.hpp [3:5]
- boost/preprocessor/seq.hpp [3:6]
- boost/preprocessor/seq/to_list.hpp [3:6]
- boost/preprocessor/tuple/enum.hpp [3:6]
- boost/preprocessor/tuple/size.hpp [3:6]
- boost/preprocessor/tuple/to_array.hpp [3:6]
- boost/preprocessor/tuple/to_seq.hpp [3:6]
- boost/preprocessor/variadic.hpp [3:6]
- boost/preprocessor/variadic/elem.hpp [3:6]
- boost/preprocessor/variadic/size.hpp [3:6]
- boost/preprocessor/variadic/to_array.hpp [3:6]
- boost/preprocessor/variadic/to_list.hpp [3:6]
- boost/preprocessor/variadic/to_seq.hpp [3:6]
- boost/preprocessor/variadic/to_tuple.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL c78d51f4dac16e21ce87ad483fecbb48
-BELONGS ya.make
- License text:
- Copyright 2009-2013 Karsten Ahnert
- Copyright 2010-2013 Mario Mulansky
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint.hpp [9:10]
- boost/numeric/odeint/algebra/default_operations.hpp [9:10]
- boost/numeric/odeint/algebra/range_algebra.hpp [10:11]
- boost/numeric/odeint/algebra/vector_space_algebra.hpp [9:10]
- boost/numeric/odeint/external/thrust/thrust_algebra.hpp [9:11]
- boost/numeric/odeint/external/thrust/thrust_operations.hpp [9:10]
- boost/numeric/odeint/stepper/euler.hpp [10:11]
- boost/numeric/odeint/stepper/runge_kutta4_classic.hpp [9:11]
- boost/numeric/odeint/stepper/runge_kutta_cash_karp54_classic.hpp [9:11]
- boost/numeric/odeint/stepper/runge_kutta_dopri5.hpp [9:11]
-
-KEEP COPYRIGHT_SERVICE_LABEL c7981cf792be7f48f85bf12a688929cc
-BELONGS ya.make
- License text:
- //Copyright (c) 2008-2017 Emil Dotchevski and Reverge Studios, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/qvm/gen/mat_assign2.hpp [1:1]
- boost/qvm/gen/mat_assign3.hpp [1:1]
- boost/qvm/gen/mat_assign4.hpp [1:1]
- boost/qvm/gen/mat_operations2.hpp [1:1]
- boost/qvm/gen/mat_operations3.hpp [1:1]
- boost/qvm/gen/mat_operations4.hpp [1:1]
- boost/qvm/gen/swizzle2.hpp [1:1]
- boost/qvm/gen/swizzle3.hpp [1:1]
- boost/qvm/gen/swizzle4.hpp [1:1]
- boost/qvm/gen/vec_assign2.hpp [1:1]
- boost/qvm/gen/vec_assign3.hpp [1:1]
- boost/qvm/gen/vec_assign4.hpp [1:1]
- boost/qvm/gen/vec_mat_operations2.hpp [1:1]
- boost/qvm/gen/vec_mat_operations3.hpp [1:1]
- boost/qvm/gen/vec_mat_operations4.hpp [1:1]
- boost/qvm/gen/vec_operations2.hpp [1:1]
- boost/qvm/gen/vec_operations3.hpp [1:1]
- boost/qvm/gen/vec_operations4.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL c7cb1452efce1db5158dd9b492eedf8a
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/adaptor/formatted.hpp at line 5, boost/range/detail/combine_cxx03.hpp at line 5, boost/range/detail/combine_cxx11.hpp at line 3, boost/range/detail/combine_no_rvalue.hpp at line 5, boost/range/detail/combine_rvalue.hpp at line 5, boost/range/detail/default_constructible_unary_fn.hpp at line 5, boost/range/detail/has_member_size.hpp at line 5, boost/range/iterator_range_hash.hpp at line 5, boost/range/traversal.hpp at line 5
- License text:
- // Copyright Neil Groves 2014
- // Use, modification and distribution is subject to the Boost Software
- // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/range/adaptor/formatted.hpp [3:5]
- boost/range/detail/combine_cxx03.hpp [3:5]
- boost/range/detail/combine_cxx11.hpp [1:3]
- boost/range/detail/combine_no_rvalue.hpp [3:5]
- boost/range/detail/combine_rvalue.hpp [3:5]
- boost/range/detail/default_constructible_unary_fn.hpp [3:5]
- boost/range/detail/has_member_size.hpp [3:3]
- boost/range/iterator_range_hash.hpp [3:5]
- boost/range/traversal.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL c7cf09499d2dd399cc5598f624cdc124
-BELONGS ya.make
- License text:
- Copyright 2011-2012 Mario Mulansky
- Copyright 2011-2012 Karsten Ahnert
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/config.hpp [9:10]
- boost/numeric/odeint/external/gsl/gsl_wrapper.hpp [9:10]
- boost/numeric/odeint/integrate/integrate.hpp [9:10]
- boost/numeric/odeint/integrate/null_observer.hpp [9:10]
- boost/numeric/odeint/integrate/observer_collection.hpp [9:10]
- boost/numeric/odeint/stepper/detail/adams_bashforth_coefficients.hpp [9:10]
- boost/numeric/odeint/stepper/detail/adams_moulton_coefficients.hpp [9:10]
- boost/numeric/odeint/stepper/detail/generic_rk_call_algebra.hpp [9:10]
- boost/numeric/odeint/stepper/generation/generation_controlled_runge_kutta.hpp [9:10]
- boost/numeric/odeint/stepper/generation/generation_dense_output_runge_kutta.hpp [9:10]
- boost/numeric/odeint/stepper/generation/generation_rosenbrock4.hpp [9:10]
- boost/numeric/odeint/stepper/generation/make_controlled.hpp [9:10]
- boost/numeric/odeint/stepper/generation/make_dense_output.hpp [9:10]
- boost/numeric/odeint/stepper/rosenbrock4.hpp [10:12]
- boost/numeric/odeint/stepper/rosenbrock4_controller.hpp [9:11]
- boost/numeric/odeint/util/copy.hpp [9:10]
- boost/numeric/odeint/util/resizer.hpp [9:10]
- boost/numeric/odeint/util/state_wrapper.hpp [10:11]
- boost/numeric/odeint/version.hpp [9:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL c7fb90bfcebe93e2405dc45f1e9ec21a
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/equals/implementation.hpp [3:6]
- boost/geometry/algorithms/detail/equals/interface.hpp [3:6]
- boost/geometry/algorithms/detail/sections/sectionalize.hpp [3:6]
- boost/geometry/algorithms/equals.hpp [3:6]
- boost/geometry/index/detail/bounded_view.hpp [6:6]
- boost/geometry/policies/robustness/get_rescale_policy.hpp [3:6]
- boost/geometry/policies/robustness/rescale_policy.hpp [3:6]
- boost/geometry/views/detail/indexed_point_view.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL c80445a5f7df9ecc827dd650da9cbaa8
-BELONGS ya.make
- License text:
- // Copyright (c) 2002, 2003 Peter Dimov
- // Copyright (c) 2003 Daniel Frey
- // Copyright (c) 2003 Howard Hinnant
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/core/checked_delete.hpp [13:15]
-
-KEEP COPYRIGHT_SERVICE_LABEL c8491f9471a05c66b2b0b94793f3fadc
-BELONGS ya.make
- License text:
- // Copyright Pavol Droba 2002-2003.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/algorithm/string/case_conv.hpp [3:3]
- boost/algorithm/string/classification.hpp [3:3]
- boost/algorithm/string/concept.hpp [3:3]
- boost/algorithm/string/config.hpp [3:3]
- boost/algorithm/string/constants.hpp [3:3]
- boost/algorithm/string/detail/case_conv.hpp [3:3]
- boost/algorithm/string/detail/classification.hpp [3:3]
- boost/algorithm/string/detail/find_format.hpp [3:3]
- boost/algorithm/string/detail/find_format_all.hpp [3:3]
- boost/algorithm/string/detail/find_format_store.hpp [3:3]
- boost/algorithm/string/detail/find_iterator.hpp [3:3]
- boost/algorithm/string/detail/finder_regex.hpp [3:3]
- boost/algorithm/string/detail/formatter.hpp [3:3]
- boost/algorithm/string/detail/formatter_regex.hpp [3:3]
- boost/algorithm/string/detail/predicate.hpp [3:3]
- boost/algorithm/string/detail/replace_storage.hpp [3:3]
- boost/algorithm/string/detail/sequence.hpp [3:3]
- boost/algorithm/string/detail/trim.hpp [3:3]
- boost/algorithm/string/detail/util.hpp [3:3]
- boost/algorithm/string/find.hpp [3:3]
- boost/algorithm/string/find_format.hpp [3:3]
- boost/algorithm/string/formatter.hpp [3:3]
- boost/algorithm/string/iter_find.hpp [3:3]
- boost/algorithm/string/predicate.hpp [3:3]
- boost/algorithm/string/predicate_facade.hpp [3:3]
- boost/algorithm/string/regex.hpp [3:3]
- boost/algorithm/string/regex_find_format.hpp [3:3]
- boost/algorithm/string/sequence_traits.hpp [3:3]
- boost/algorithm/string/std/list_traits.hpp [3:3]
- boost/algorithm/string/std/rope_traits.hpp [3:3]
- boost/algorithm/string/std/slist_traits.hpp [3:3]
- boost/algorithm/string/std/string_traits.hpp [3:3]
- boost/algorithm/string/std_containers_traits.hpp [3:3]
- boost/algorithm/string/trim.hpp [3:3]
- boost/algorithm/string/trim_all.hpp [3:3]
- boost/algorithm/string/yes_no_type.hpp [3:3]
- boost/range/detail/collection_traits.hpp [3:5]
- boost/range/detail/collection_traits_detail.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL c852fa161dd8444a44450deac07d7631
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/geometries/polygon.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL c8b2225195e675e39283e940da8d4aca
-BELONGS ya.make
- License text:
- // Copyright 2013 Maciej Piechotka
- // Authors: Maciej Piechotka
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/edge_coloring.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL c8d4e667a2b45ad481c6365ab8ff146a
-BELONGS ya.make
- License text:
- // Copyright (C) 2003, 2008 Fernando Luis Cacciola Carballal.
- // Copyright (C) 2015 Andrzej Krzemienski.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/optional/detail/optional_relops.hpp [1:2]
- boost/optional/detail/optional_swap.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL c8f7e91cd195e8c07907b91700843aa8
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/is_floating_point.hpp at line 3, boost/type_traits/remove_extent.hpp at line 4
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_traits/is_floating_point.hpp [1:3]
- boost/type_traits/remove_extent.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL c91df6862997c9f36164f1308b236bf7
-BELONGS ya.make
- License text:
- // Copyright 2007 Aaron Windsor
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/boyer_myrvold_planar_test.hpp [2:2]
- boost/graph/is_kuratowski_subgraph.hpp [2:2]
- boost/graph/is_straight_line_drawing.hpp [2:2]
- boost/graph/make_biconnected_planar.hpp [2:2]
- boost/graph/make_connected.hpp [2:2]
- boost/graph/make_maximal_planar.hpp [2:2]
- boost/graph/planar_detail/add_edge_visitors.hpp [2:2]
- boost/graph/planar_detail/bucket_sort.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL c98683db2d8fa0352ce99bf5eb8af524
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/version.h at line 4
- License text:
- Copyright Rene Rivera 2015-2016
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/predef/version.h [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL c99a2d96dc6e8183a5787f5bf53caeab
-BELONGS ya.make
- License text:
- // Copyright (c) 2013-2015 Kyle Lutz <kyle.r.lutz@gmail.com>
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/compute/algorithm/transform_if.hpp [2:2]
- boost/compute/async/wait_guard.hpp [2:2]
- boost/compute/detail/parameter_cache.hpp [2:2]
- boost/compute/exception/no_device_found.hpp [2:2]
- boost/compute/image.hpp [2:2]
- boost/compute/image/image1d.hpp [2:2]
- boost/compute/image/image2d.hpp [2:2]
- boost/compute/image/image3d.hpp [2:2]
- boost/compute/image/image_format.hpp [2:2]
- boost/compute/image/image_object.hpp [2:2]
- boost/compute/image/image_sampler.hpp [2:2]
- boost/compute/image2d.hpp [2:2]
- boost/compute/image3d.hpp [2:2]
- boost/compute/image_format.hpp [2:2]
- boost/compute/image_sampler.hpp [2:2]
- boost/compute/utility/invoke.hpp [2:2]
- boost/compute/version.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL c9d011950648c03f29cc58f664ea728e
-BELONGS libs/locale/ya.make
- License text:
- // Copyright (c) 2009-2015 Artyom Beilis (Tonkikh)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- libs/locale/src/shared/message.cpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL c9d0d72a3dcde4707176a755657f4634
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/concept_archetype.hpp at line 4, boost/concept_check.hpp at line 4
- License text:
- // (C) Copyright Jeremy Siek 2000.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/concept_archetype.hpp [2:4]
- boost/concept_check.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL c9db06a8bf4ea409ad302e3c081fa876
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/shared_ptr.hpp at line 14, boost/serialization/weak_ptr.hpp at line 14
- License text:
- // (C) Copyright 2004 Robert Ramey and Martin Ecker
- // Use, modification and distribution is subject to the Boost Software
- // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/serialization/shared_ptr.hpp [12:14]
- boost/serialization/weak_ptr.hpp [12:14]
-
-KEEP COPYRIGHT_SERVICE_LABEL c9effb8498cdb387e324169d172eb069
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/shared_ptr_helper.hpp at line 14
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/serialization/shared_ptr_helper.hpp [12:14]
-
-KEEP COPYRIGHT_SERVICE_LABEL c9f218034b8fe07a7f09b0c82b8312e3
-BELONGS libs/python/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/converter/registered.hpp at line 4, boost/python/converter/shared_ptr_from_python.hpp at line 4, boost/python/converter/shared_ptr_to_python.hpp at line 4, boost/python/detail/is_shared_ptr.hpp at line 4, boost/python/detail/value_is_shared_ptr.hpp at line 4, boost/python/numpy.hpp at line 4, boost/python/numpy/dtype.hpp at line 4, boost/python/numpy/internal.hpp at line 4, boost/python/numpy/invoke_matching.hpp at line 4, boost/python/numpy/matrix.hpp at line 4, boost/python/numpy/ndarray.hpp at line 4, boost/python/numpy/numpy_object_mgr_traits.hpp at line 4, boost/python/numpy/scalars.hpp at line 4, boost/python/numpy/ufunc.hpp at line 4, boost/python/object/class_metadata.hpp at line 4, boost/python/to_python_value.hpp at line 4, libs/python/src/numpy/dtype.cpp at line 4, libs/python/src/numpy/matrix.cpp at line 4, libs/python/src/numpy/ndarray.cpp at line 4, libs/python/src/numpy/numpy.cpp at line 4, libs/python/src/numpy/scalars.cpp at line 4, libs/python/src/numpy/ufunc.cpp at line 4
- License text:
- // Copyright Jim Bosch 2010-2012.
- // Copyright Stefan Seefeld 2016.
+ // (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/msm/mpl_graph/adjacency_list_graph.hpp [1:3]
+ boost/msm/mpl_graph/breadth_first_search.hpp [1:3]
+ boost/msm/mpl_graph/depth_first_search.hpp [1:3]
+ boost/msm/mpl_graph/detail/adjacency_list_graph.ipp [1:3]
+ boost/msm/mpl_graph/detail/graph_implementation_interface.ipp [1:3]
+ boost/msm/mpl_graph/detail/incidence_list_graph.ipp [1:3]
+ boost/msm/mpl_graph/incidence_list_graph.hpp [1:3]
+ boost/msm/mpl_graph/mpl_graph.hpp [1:3]
+ boost/msm/mpl_graph/mpl_utils.hpp [1:3]
+ boost/msm/mpl_graph/search_colors.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL d60703bc7febb0860dcd48b70a594212
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/p_square_cumul_dist.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/accumulators/statistics/p_square_cumul_dist.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL d63fdf414caaa23ffde811fd7c826e92
+BELONGS ya.make
+ License text:
+ // (C) Copyright 2005-7 Anthony Williams
+ // (C) Copyright 2005 John Maddock
+ // (C) Copyright 2011-2013 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/win32/once.hpp [6:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL d663678a9bb1e4b6f410ded7c0853610
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2014 Glen Joseph Fernandes
+ // glenfe at live dot com
+ // Copyright (c) 2014 Riccardo Marcangelo
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/dynamic_bitset/dynamic_bitset.hpp [7:9]
+
+KEEP COPYRIGHT_SERVICE_LABEL d6c2647ffc3e2dcd7ddff5aa0c37c678
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2003 Eric Friedman, Itay Maman
+ // Copyright (c) 2014 Antony Polukhin
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/variant/detail/apply_visitor_unary.hpp [6:7]
+ boost/variant/get.hpp [6:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL d6c9133530a2ec1b94a5d854024c3bd8
+BELONGS libs/python/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/numpy.hpp at line 4, boost/python/numpy/dtype.hpp at line 4, boost/python/numpy/internal.hpp at line 4, boost/python/numpy/invoke_matching.hpp at line 4, boost/python/numpy/matrix.hpp at line 4, boost/python/numpy/ndarray.hpp at line 4, boost/python/numpy/numpy_object_mgr_traits.hpp at line 4, boost/python/numpy/scalars.hpp at line 4, boost/python/numpy/ufunc.hpp at line 4, libs/python/src/numpy/dtype.cpp at line 4, libs/python/src/numpy/matrix.cpp at line 4, libs/python/src/numpy/ndarray.cpp at line 4, libs/python/src/numpy/numpy.cpp at line 4, libs/python/src/numpy/scalars.cpp at line 4, libs/python/src/numpy/ufunc.cpp at line 4
+ License text:
+ // Copyright Jim Bosch 2010-2012.
+ // Copyright Stefan Seefeld 2016.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/python/numpy.hpp [1:4]
+ boost/python/numpy/dtype.hpp [1:4]
+ boost/python/numpy/internal.hpp [1:4]
+ boost/python/numpy/invoke_matching.hpp [1:4]
+ boost/python/numpy/matrix.hpp [1:4]
+ boost/python/numpy/ndarray.hpp [1:4]
+ boost/python/numpy/numpy_object_mgr_traits.hpp [1:4]
+ boost/python/numpy/scalars.hpp [1:4]
+ boost/python/numpy/ufunc.hpp [1:4]
+ libs/python/src/numpy/dtype.cpp [1:4]
+ libs/python/src/numpy/matrix.cpp [1:4]
+ libs/python/src/numpy/ndarray.cpp [1:4]
+ libs/python/src/numpy/numpy.cpp [1:4]
+ libs/python/src/numpy/scalars.cpp [1:4]
+ libs/python/src/numpy/ufunc.cpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL d6db1f5c1ba3fd89e8e302ce1d41dc7e
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2012 Barend Gehrels, Amsterdam, the Netherlands.
+ // Copyright (c) 2012 Bruno Lalande, Paris, France.
+ // Copyright (c) 2012 Mateusz Loskot, London, UK.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/util/bare_type.hpp [3:5]
+ boost/geometry/util/calculation_type.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL d6ffc9c8b7faf6b69be894dbb468e1ac
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/hardware.h at line 5, boost/predef/hardware/simd.h at line 5, boost/predef/hardware/simd/arm.h at line 5, boost/predef/hardware/simd/arm/versions.h at line 5, boost/predef/hardware/simd/ppc.h at line 5, boost/predef/hardware/simd/ppc/versions.h at line 5, boost/predef/hardware/simd/x86.h at line 5, boost/predef/hardware/simd/x86/versions.h at line 5, boost/predef/hardware/simd/x86_amd.h at line 5, boost/predef/hardware/simd/x86_amd/versions.h at line 5
+ License text:
+ Copyright Charly Chevalier 2015
+ Copyright Joel Falcou 2015
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/predef/hardware.h [2:5]
+ boost/predef/hardware/simd.h [2:5]
+ boost/predef/hardware/simd/arm.h [2:5]
+ boost/predef/hardware/simd/arm/versions.h [2:5]
+ boost/predef/hardware/simd/ppc.h [2:5]
+ boost/predef/hardware/simd/ppc/versions.h [2:5]
+ boost/predef/hardware/simd/x86.h [2:5]
+ boost/predef/hardware/simd/x86/versions.h [2:5]
+ boost/predef/hardware/simd/x86_amd.h [2:5]
+ boost/predef/hardware/simd/x86_amd/versions.h [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL d706b4945aea7b91948639454fe2562e
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2013 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/csbl/deque.hpp [1:1]
+ boost/thread/csbl/devector.hpp [1:1]
+ boost/thread/csbl/functional.hpp [1:1]
+ boost/thread/csbl/list.hpp [1:1]
+ boost/thread/csbl/memory.hpp [1:1]
+ boost/thread/csbl/memory/allocator_arg.hpp [1:1]
+ boost/thread/csbl/memory/allocator_traits.hpp [1:1]
+ boost/thread/csbl/memory/config.hpp [1:1]
+ boost/thread/csbl/memory/default_delete.hpp [1:1]
+ boost/thread/csbl/memory/pointer_traits.hpp [1:1]
+ boost/thread/csbl/memory/scoped_allocator.hpp [1:1]
+ boost/thread/csbl/tuple.hpp [1:1]
+ boost/thread/csbl/vector.hpp [1:1]
+ boost/thread/detail/atomic_redef_macros.hpp [1:1]
+ boost/thread/detail/atomic_undef_macros.hpp [1:1]
+ boost/thread/detail/function_wrapper.hpp [1:1]
+ boost/thread/detail/nullary_function.hpp [1:1]
+ boost/thread/detail/variadic_footer.hpp [1:1]
+ boost/thread/detail/variadic_header.hpp [1:1]
+ boost/thread/executor.hpp [1:1]
+ boost/thread/executors/serial_executor.hpp [1:1]
+ boost/thread/thread_pool.hpp [1:1]
+ boost/thread/user_scheduler.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL d7369b8aa594e0b3dc161a249b283b86
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2006, 2007.
+ // Copyright Paul A. Bristow 2006, 2007, 2009, 2010.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/distributions.hpp [1:2]
+ boost/math/distributions/cauchy.hpp [1:2]
+ boost/math/distributions/chi_squared.hpp [1:2]
+ boost/math/distributions/detail/common_error_handling.hpp [1:2]
+ boost/math/distributions/normal.hpp [1:2]
+ boost/math/distributions/triangular.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL d73b88cee593256b0d7ec85d5b8fa25a
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/compiler/intel.h at line 4
+ License text:
+ Copyright Rene Rivera 2008-2017
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/predef/compiler/intel.h [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL d73db9dfef39806d118c487419c17a2c
+BELONGS ya.make
+ License text:
+ Copyright (c) 2006 Joao Abecasis
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/core/non_terminal/impl/static.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL d746f25f7b87dc815ab804cbdd5ee875
+BELONGS libs/thread/ya.make ya.make
+ License text:
+ * (C) Copyright 2013 Tim Blechmann
+ * (C) Copyright 2013 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/atomic/detail/pause.hpp [6:7]
+ boost/thread/pthread/once_atomic.hpp [6:7]
+ libs/thread/src/pthread/once_atomic.cpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL d75225060f193b9147dad5e0d7d42983
+BELONGS ya.make
+ License text:
+ // Copyright John Maddock 2006-7, 2013-14.
+ // Copyright Paul A. Bristow 2007, 2013-14.
+ // Copyright Nikhar Agrawal 2013-14
+ // Copyright Christopher Kormanyos 2013-14
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/gamma.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL d78b6dbfe1069ef1912985a3ebb3d094
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard.
+ // Copyright (C) 2005-2016 Daniel James
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/unordered/detail/implementation.hpp [1:2]
+ boost/unordered/detail/map.hpp [2:4]
+ boost/unordered/detail/set.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL d7903d14a6322f299ddbba6647135742
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/item_version_type.hpp at line 6
+ License text:
+ // (C) Copyright 2010 Robert Ramey
+ // Use, modification and distribution is subject to the Boost Software
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/serialization/item_version_type.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL d7ec3b31087d40f4ec8d4f38c2654306
+BELONGS libs/container/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/detail/block_list.hpp at line 5, boost/container/detail/block_slist.hpp at line 5, boost/container/detail/dispatch_uses_allocator.hpp at line 5, boost/container/detail/dlmalloc.hpp at line 5, boost/container/detail/pool_resource.hpp at line 5, boost/container/pmr/deque.hpp at line 5, boost/container/pmr/flat_map.hpp at line 5, boost/container/pmr/flat_set.hpp at line 5, boost/container/pmr/global_resource.hpp at line 5, boost/container/pmr/list.hpp at line 5, boost/container/pmr/map.hpp at line 5, boost/container/pmr/memory_resource.hpp at line 5, boost/container/pmr/monotonic_buffer_resource.hpp at line 5, boost/container/pmr/polymorphic_allocator.hpp at line 5, boost/container/pmr/pool_options.hpp at line 5, boost/container/pmr/resource_adaptor.hpp at line 5, boost/container/pmr/set.hpp at line 5, boost/container/pmr/slist.hpp at line 5, boost/container/pmr/small_vector.hpp at line 5, boost/container/pmr/stable_vector.hpp at line 5, boost/container/pmr/string.hpp at line 5, boost/container/pmr/synchronized_pool_resource.hpp at line 5, boost/container/pmr/unsynchronized_pool_resource.hpp at line 5, boost/container/pmr/vector.hpp at line 5, boost/container/scoped_allocator_fwd.hpp at line 5, boost/container/small_vector.hpp at line 5, boost/container/uses_allocator_fwd.hpp at line 5, boost/intrusive/detail/tree_value_compare.hpp at line 5, boost/move/detail/meta_utils_core.hpp at line 5, boost/move/detail/std_ns_begin.hpp at line 5, boost/move/detail/std_ns_end.hpp at line 5, libs/container/src/global_resource.cpp at line 5, libs/container/src/monotonic_buffer_resource.cpp at line 5, libs/container/src/pool_resource.cpp at line 5, libs/container/src/synchronized_pool_resource.cpp at line 5, libs/container/src/unsynchronized_pool_resource.cpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2015-2015. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/container/detail/block_list.hpp [3:5]
+ boost/container/detail/block_slist.hpp [3:5]
+ boost/container/detail/dispatch_uses_allocator.hpp [3:5]
+ boost/container/detail/dlmalloc.hpp [3:5]
+ boost/container/detail/pool_resource.hpp [3:5]
+ boost/container/pmr/deque.hpp [3:5]
+ boost/container/pmr/flat_map.hpp [3:5]
+ boost/container/pmr/flat_set.hpp [3:5]
+ boost/container/pmr/global_resource.hpp [3:5]
+ boost/container/pmr/list.hpp [3:5]
+ boost/container/pmr/map.hpp [3:5]
+ boost/container/pmr/memory_resource.hpp [3:5]
+ boost/container/pmr/monotonic_buffer_resource.hpp [3:5]
+ boost/container/pmr/polymorphic_allocator.hpp [3:5]
+ boost/container/pmr/pool_options.hpp [3:5]
+ boost/container/pmr/resource_adaptor.hpp [3:5]
+ boost/container/pmr/set.hpp [3:5]
+ boost/container/pmr/slist.hpp [3:5]
+ boost/container/pmr/small_vector.hpp [3:5]
+ boost/container/pmr/stable_vector.hpp [3:5]
+ boost/container/pmr/string.hpp [3:5]
+ boost/container/pmr/synchronized_pool_resource.hpp [3:5]
+ boost/container/pmr/unsynchronized_pool_resource.hpp [3:5]
+ boost/container/pmr/vector.hpp [3:5]
+ boost/container/scoped_allocator_fwd.hpp [3:5]
+ boost/container/small_vector.hpp [3:5]
+ boost/container/uses_allocator_fwd.hpp [3:5]
+ boost/intrusive/detail/tree_value_compare.hpp [3:5]
+ boost/move/detail/meta_utils_core.hpp [3:5]
+ boost/move/detail/std_ns_begin.hpp [3:5]
+ boost/move/detail/std_ns_end.hpp [3:5]
+ libs/container/src/global_resource.cpp [3:5]
+ libs/container/src/monotonic_buffer_resource.cpp [3:5]
+ libs/container/src/pool_resource.cpp [3:5]
+ libs/container/src/synchronized_pool_resource.cpp [3:5]
+ libs/container/src/unsynchronized_pool_resource.cpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL d85d3237917b72f16dba239a303134fa
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/concepts.hpp at line 10
+ License text:
+ // Copyright Daniel Walker 2006. Use, modification and distribution
+ // are subject to the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/range/concepts.hpp [8:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL d87b243958a7d8cd7ed9864055dfd125
+BELONGS ya.make
+ License text:
+ * Copyright (C) 2017 James E. King III
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/predef/library/c/cloudabi.h [2:2]
+ boost/uuid/detail/random_provider.hpp [2:2]
+ boost/uuid/detail/random_provider_arc4random.ipp [2:2]
+ boost/uuid/detail/random_provider_bcrypt.ipp [2:2]
+ boost/uuid/detail/random_provider_detect_platform.hpp [2:2]
+ boost/uuid/detail/random_provider_getentropy.ipp [2:2]
+ boost/uuid/detail/random_provider_include_platform.hpp [2:2]
+ boost/uuid/entropy_error.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL d892d3dedd0208083374d9b1e5af7c28
+BELONGS ya.make
+ License text:
+ Copyright 2013 Christian Shelton
+ Copyright 2013 Karsten Ahnert
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/external/eigen/eigen_algebra.hpp [9:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL d8cbf9ce59bc4b7472faf3c297642429
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2008, 2009, 2016 Tim Blechmann, based on code by Cory Nelson
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/lockfree/detail/tagged_ptr_ptrcompression.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL d8d379e820d70d3ab6d3e5b12ee52da1
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2003 Daniel Nuffer
+ Copyright (c) 2001-2007 Hartmut Kaiser
+ Revised 2007, Copyright (c) Tobias Schwinger
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/tree/common.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL d8fd2c7143c4fbec8b1689bfb853227e
+BELONGS ya.make
+ License text:
+ // Copyright 2012-2013 Steven Watanabe
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_erasure/member.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL d91946878c8cc10edec238acbae07c4c
+BELONGS ya.make
+ License text:
+ // Copyright 2005-2009 The Trustees of Indiana University.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/compressed_sparse_row_graph.hpp [1:1]
+ boost/graph/detail/compressed_sparse_row_struct.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL d91f655d9cf3592a631666b8d61bf13a
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/flyweight/detail/archive_constructed.hpp at line 3, boost/flyweight/detail/default_value_policy.hpp at line 3, boost/flyweight/detail/dyn_perfect_fwd.hpp at line 3, boost/flyweight/detail/flyweight_core.hpp at line 3, boost/flyweight/detail/perfect_fwd.hpp at line 3, boost/flyweight/detail/pp_perfect_fwd.hpp at line 3, boost/flyweight/detail/serialization_helper.hpp at line 3, boost/flyweight/hashed_factory.hpp at line 3, boost/flyweight/key_value.hpp at line 3, boost/flyweight/refcounted.hpp at line 3
+ License text:
+ /* Copyright 2006-2014 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/flyweight/detail/archive_constructed.hpp [1:3]
+ boost/flyweight/detail/default_value_policy.hpp [1:3]
+ boost/flyweight/detail/dyn_perfect_fwd.hpp [1:3]
+ boost/flyweight/detail/flyweight_core.hpp [1:3]
+ boost/flyweight/detail/perfect_fwd.hpp [1:3]
+ boost/flyweight/detail/pp_perfect_fwd.hpp [1:3]
+ boost/flyweight/detail/serialization_helper.hpp [1:3]
+ boost/flyweight/hashed_factory.hpp [1:3]
+ boost/flyweight/key_value.hpp [1:3]
+ boost/flyweight/refcounted.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL d946256ef076f98c4b7b458a2317cae5
+BELONGS ya.make
+ License text:
+ // Copyright (c) Antony Polukhin, 2012-2016.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_index/detail/compile_time_type_info.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL d9680887664a695927a719b1b889a56c
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2012 David Stone
+ // Copyright Beman Dawes 2013
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/endian/detail/intrinsic.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL d989ff9c2bd62725fe9987a9d8746019
+BELONGS libs/program_options/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/program_options/detail/cmdline.hpp at line 3, boost/program_options/detail/config_file.hpp at line 3, boost/program_options/errors.hpp at line 3, boost/program_options/options_description.hpp at line 3, boost/program_options/parsers.hpp at line 3, boost/program_options/variables_map.hpp at line 3, libs/program_options/src/cmdline.cpp at line 3, libs/program_options/src/config_file.cpp at line 3, libs/program_options/src/options_description.cpp at line 3, libs/program_options/src/parsers.cpp at line 3, libs/program_options/src/variables_map.cpp at line 3, libs/program_options/src/winmain.cpp at line 3
+ License text:
+ // Copyright Vladimir Prus 2002-2004.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/program_options/detail/cmdline.hpp [1:3]
+ boost/program_options/detail/config_file.hpp [1:3]
+ boost/program_options/errors.hpp [1:3]
+ boost/program_options/options_description.hpp [1:4]
+ boost/program_options/parsers.hpp [1:3]
+ boost/program_options/variables_map.hpp [1:3]
+ libs/program_options/src/cmdline.cpp [1:3]
+ libs/program_options/src/config_file.cpp [1:3]
+ libs/program_options/src/options_description.cpp [1:4]
+ libs/program_options/src/parsers.cpp [1:3]
+ libs/program_options/src/variables_map.cpp [1:3]
+ libs/program_options/src/winmain.cpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL d9b034219784147e9de3ba70c9964f7f
+BELONGS ya.make
+ License text:
+ // Copyright 2006 Johan Rade
+ // Copyright 2012 K R Walker
+ // Copyright 2011, 2012 Paul A. Bristow
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/nonfinite_num_facets.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL d9b8b05a31819f01ee9a3e7db2208124
+BELONGS ya.make
+ License text:
+ // Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
+ // Copyright (C) 2000 Gary Powell (gary.powell@sierra.com)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/lambda/detail/member_ptr.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL d9cc7750d38e73a2832b5d2da121f533
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/flyweight.hpp at line 3, boost/flyweight/assoc_container_factory_fwd.hpp at line 3, boost/flyweight/detail/not_placeholder_expr.hpp at line 3, boost/flyweight/detail/value_tag.hpp at line 3, boost/flyweight/factory_tag.hpp at line 3, boost/flyweight/hashed_factory_fwd.hpp at line 3, boost/flyweight/holder_tag.hpp at line 3, boost/flyweight/intermodule_holder_fwd.hpp at line 3, boost/flyweight/key_value_fwd.hpp at line 3, boost/flyweight/locking_tag.hpp at line 3, boost/flyweight/no_locking.hpp at line 3, boost/flyweight/no_locking_fwd.hpp at line 3, boost/flyweight/no_tracking.hpp at line 3, boost/flyweight/no_tracking_fwd.hpp at line 3, boost/flyweight/refcounted_fwd.hpp at line 3, boost/flyweight/set_factory_fwd.hpp at line 3, boost/flyweight/simple_locking.hpp at line 3, boost/flyweight/simple_locking_fwd.hpp at line 3, boost/flyweight/static_holder_fwd.hpp at line 3, boost/flyweight/tag.hpp at line 3, boost/flyweight/tracking_tag.hpp at line 3
+ License text:
+ /* Copyright 2006-2008 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/flyweight.hpp [1:3]
+ boost/flyweight/assoc_container_factory_fwd.hpp [1:3]
+ boost/flyweight/detail/not_placeholder_expr.hpp [1:3]
+ boost/flyweight/detail/value_tag.hpp [1:3]
+ boost/flyweight/factory_tag.hpp [1:3]
+ boost/flyweight/hashed_factory_fwd.hpp [1:3]
+ boost/flyweight/holder_tag.hpp [1:3]
+ boost/flyweight/intermodule_holder_fwd.hpp [1:3]
+ boost/flyweight/key_value_fwd.hpp [1:3]
+ boost/flyweight/locking_tag.hpp [1:3]
+ boost/flyweight/no_locking.hpp [1:3]
+ boost/flyweight/no_locking_fwd.hpp [1:3]
+ boost/flyweight/no_tracking.hpp [1:3]
+ boost/flyweight/no_tracking_fwd.hpp [1:3]
+ boost/flyweight/refcounted_fwd.hpp [1:3]
+ boost/flyweight/set_factory_fwd.hpp [1:3]
+ boost/flyweight/simple_locking.hpp [1:3]
+ boost/flyweight/simple_locking_fwd.hpp [1:3]
+ boost/flyweight/static_holder_fwd.hpp [1:3]
+ boost/flyweight/tag.hpp [1:3]
+ boost/flyweight/tracking_tag.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL d9d3f9179a9781a228af49eebba2dba2
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/leda_graph.hpp [2:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL da5722f501f78f050c4fc5ddba00e44a
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2014-2015, Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/is_simple/debug_print_boundary_points.hpp [3:3]
+ boost/geometry/algorithms/detail/is_valid/debug_print_turns.hpp [3:3]
+ boost/geometry/algorithms/detail/is_valid/has_duplicates.hpp [3:3]
+ boost/geometry/algorithms/detail/is_valid/has_invalid_coordinate.hpp [3:3]
+ boost/geometry/algorithms/detail/is_valid/is_acceptable_turn.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/inconsistent_turns_exception.hpp [3:3]
+ boost/geometry/algorithms/detail/signed_size_type.hpp [3:3]
+ boost/geometry/algorithms/detail/turns/compare_turns.hpp [3:3]
+ boost/geometry/iterators/detail/segment_iterator/value_type.hpp [3:3]
+ boost/geometry/strategies/comparable_distance_result.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL da66650aa87474a034356b9ab7d20069
+BELONGS ya.make
+ License text:
+ Copyright 2010-2011 Mario Mulansky
+ Copyright 2011-2013 Karsten Ahnert
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/external/mkl/mkl_operations.hpp [11:12]
+ boost/numeric/odeint/stepper/stepper_categories.hpp [9:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL da74bde384bb9591220ea65cbfd6ed00
+BELONGS ya.make
+ License text:
+ // Copyright (c) David Abrahams 2001.
+ // Copyright (c) Jeremy Siek 2001-2003.
+ // Copyright (c) Thomas Witt 2002.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/iterator/new_iterator_tests.hpp [5:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL da7c41d93828ed41770e2d19294b77ae
+BELONGS ya.make
+ License text:
+ Copyright (c) 2014 Paul Fultz II
+ always.h
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/hof/always.hpp [2:4]
+ boost/hof/arg.hpp [2:4]
+ boost/hof/compose.hpp [2:4]
+ boost/hof/detail/forward.hpp [2:4]
+ boost/hof/detail/holder.hpp [2:4]
+ boost/hof/detail/move.hpp [2:4]
+ boost/hof/detail/pp.hpp [2:4]
+ boost/hof/detail/remove_rvalue_reference.hpp [2:4]
+ boost/hof/detail/unwrap.hpp [2:4]
+ boost/hof/fix.hpp [2:4]
+ boost/hof/function.hpp [2:4]
+ boost/hof/indirect.hpp [2:4]
+ boost/hof/infix.hpp [2:4]
+ boost/hof/is_invocable.hpp [2:4]
+ boost/hof/lambda.hpp [2:4]
+ boost/hof/lazy.hpp [2:4]
+ boost/hof/mutable.hpp [2:4]
+ boost/hof/pack.hpp [2:4]
+ boost/hof/placeholders.hpp [2:4]
+ boost/hof/proj.hpp [2:4]
+ boost/hof/protect.hpp [2:4]
+ boost/hof/result.hpp [2:4]
+ boost/hof/returns.hpp [2:4]
+ boost/hof/reveal.hpp [2:4]
+ boost/hof/static.hpp [2:4]
+ boost/hof/tap.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL da91943a65a421cd0926c06fe85346a6
+BELONGS ya.make
+ License text:
+ // This file was modified by Oracle on 2013, 2014, 2015.
+ // Modifications copyright (c) 2013-2015, Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/disjoint/point_geometry.hpp [8:9]
+ boost/geometry/multi/multi.hpp [7:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL da9efae22788f28294f7f9a2902ac5c7
+BELONGS ya.make
+ License text:
+ * Copyright (c) 2001-2003 Joel de Guzman
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/ublas/detail/returntype_deduction.hpp [2:2]
+ boost/spirit/home/classic/attribute.hpp [2:4]
+ boost/spirit/home/classic/attribute/closure.hpp [2:4]
+ boost/spirit/home/classic/core/assert.hpp [2:4]
+ boost/spirit/home/classic/core/non_terminal/grammar.hpp [2:5]
+ boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp [2:5]
+ boost/spirit/home/classic/core/non_terminal/parser_id.hpp [2:4]
+ boost/spirit/home/classic/debug.hpp [2:4]
+ boost/spirit/home/classic/debug/debug_node.hpp [2:5]
+ boost/spirit/home/classic/debug/impl/parser_names.ipp [2:4]
+ boost/spirit/home/classic/debug/minimal.hpp [2:4]
+ boost/spirit/home/classic/debug/parser_names.hpp [2:4]
+ boost/spirit/home/classic/phoenix/casts.hpp [3:4]
+ boost/spirit/home/classic/phoenix/new.hpp [3:5]
+ boost/spirit/home/classic/utility/chset.hpp [2:4]
+ boost/spirit/home/classic/utility/chset_operators.hpp [2:4]
+ boost/spirit/home/classic/utility/impl/chset.ipp [2:4]
+ boost/spirit/home/classic/utility/impl/chset/basic_chset.hpp [2:4]
+ boost/spirit/home/classic/utility/impl/chset/basic_chset.ipp [2:4]
+ boost/xpressive/detail/utility/chset/basic_chset.hpp [2:4]
+ boost/xpressive/detail/utility/chset/basic_chset.ipp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL dac98d69c928f039b4107e09246ed62f
+BELONGS ya.make
+ License text:
+ // This file was modified by Oracle on 2016.
+ // Modifications copyright (c) 2016 Oracle and/or its affiliates.
+ // Contributed and/or modified by Vissarion Fysikopoulos, on behalf of Oracle
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/buffer/turn_in_original_visitor.hpp [5:7]
+ boost/geometry/algorithms/detail/buffer/turn_in_piece_visitor.hpp [6:8]
+ boost/geometry/algorithms/detail/calculate_sum.hpp [11:13]
+ boost/geometry/policies/relate/intersection_points.hpp [5:7]
+ boost/geometry/policies/robustness/segment_ratio.hpp [5:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL dade72e8f17d6f5ad231015a08f18f49
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/smart_ptr/unique_ptr.hpp at line 5, boost/intrusive/circular_list_algorithms.hpp at line 5, boost/intrusive/circular_slist_algorithms.hpp at line 5, boost/intrusive/detail/any_node_and_algorithms.hpp at line 5, boost/intrusive/detail/hook_traits.hpp at line 5, boost/intrusive/detail/iiterator.hpp at line 5, boost/intrusive/detail/mpl.hpp at line 5, boost/intrusive/detail/uncast.hpp at line 5, boost/intrusive/linear_slist_algorithms.hpp at line 5, boost/intrusive/list.hpp at line 5, boost/intrusive/rbtree.hpp at line 5, boost/intrusive/rbtree_algorithms.hpp at line 5, boost/intrusive/set.hpp at line 5, boost/intrusive/slist.hpp at line 5, boost/intrusive/treap_algorithms.hpp at line 5, boost/intrusive/unordered_set.hpp at line 5, boost/move/make_unique.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2006-2014. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/interprocess/smart_ptr/unique_ptr.hpp [3:5]
+ boost/intrusive/circular_list_algorithms.hpp [3:4]
+ boost/intrusive/circular_slist_algorithms.hpp [3:4]
+ boost/intrusive/detail/any_node_and_algorithms.hpp [3:3]
+ boost/intrusive/detail/hook_traits.hpp [3:3]
+ boost/intrusive/detail/iiterator.hpp [3:3]
+ boost/intrusive/detail/mpl.hpp [3:4]
+ boost/intrusive/detail/uncast.hpp [3:3]
+ boost/intrusive/linear_slist_algorithms.hpp [3:4]
+ boost/intrusive/list.hpp [3:4]
+ boost/intrusive/rbtree.hpp [3:3]
+ boost/intrusive/rbtree_algorithms.hpp [3:4]
+ boost/intrusive/set.hpp [3:4]
+ boost/intrusive/slist.hpp [3:4]
+ boost/intrusive/treap_algorithms.hpp [3:3]
+ boost/intrusive/unordered_set.hpp [3:4]
+ boost/move/make_unique.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL db0443ef1ac24a2215b5dcee7e8a6a38
+BELONGS libs/date_time/ya.make ya.make
+ License text:
+ /* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/date_time/adjust_functors.hpp [4:6]
+ boost/date_time/constrained_value.hpp [4:6]
+ boost/date_time/date.hpp [4:6]
+ boost/date_time/date_defs.hpp [4:6]
+ boost/date_time/date_duration.hpp [4:6]
+ boost/date_time/date_format_simple.hpp [4:6]
+ boost/date_time/date_formatting_locales.hpp [4:6]
+ boost/date_time/date_iterator.hpp [4:6]
+ boost/date_time/gregorian/formatters.hpp [4:6]
+ boost/date_time/gregorian/formatters_limited.hpp [4:6]
+ boost/date_time/gregorian/greg_calendar.hpp [4:6]
+ boost/date_time/gregorian/greg_date.hpp [4:6]
+ boost/date_time/gregorian/greg_day.hpp [4:6]
+ boost/date_time/gregorian/greg_day_of_year.hpp [4:6]
+ boost/date_time/gregorian/greg_duration.hpp [4:6]
+ boost/date_time/gregorian/greg_facet.hpp [4:6]
+ boost/date_time/gregorian/greg_month.hpp [4:6]
+ boost/date_time/gregorian/greg_weekday.hpp [4:6]
+ boost/date_time/gregorian/greg_year.hpp [4:6]
+ boost/date_time/gregorian/greg_ymd.hpp [4:6]
+ boost/date_time/gregorian/gregorian_types.hpp [4:6]
+ boost/date_time/gregorian_calendar.hpp [4:6]
+ boost/date_time/gregorian_calendar.ipp [1:3]
+ boost/date_time/int_adapter.hpp [4:6]
+ boost/date_time/iso_format.hpp [4:6]
+ boost/date_time/local_time_adjustor.hpp [4:6]
+ boost/date_time/local_timezone_defs.hpp [4:6]
+ boost/date_time/parse_format_base.hpp [4:6]
+ boost/date_time/period.hpp [4:6]
+ boost/date_time/posix_time/posix_time_duration.hpp [4:6]
+ boost/date_time/posix_time/posix_time_system.hpp [4:6]
+ boost/date_time/posix_time/posix_time_types.hpp [1:3]
+ boost/date_time/posix_time/ptime.hpp [4:6]
+ boost/date_time/posix_time/time_formatters_limited.hpp [4:6]
+ boost/date_time/posix_time/time_parsers.hpp [4:6]
+ boost/date_time/posix_time/time_period.hpp [4:6]
+ boost/date_time/special_defs.hpp [4:6]
+ boost/date_time/time_defs.hpp [4:6]
+ boost/date_time/time_duration.hpp [4:6]
+ boost/date_time/time_formatting_streams.hpp [4:6]
+ boost/date_time/time_iterator.hpp [4:6]
+ boost/date_time/time_resolution_traits.hpp [4:6]
+ boost/date_time/time_system_counted.hpp [4:6]
+ boost/date_time/year_month_day.hpp [4:6]
+ libs/date_time/src/gregorian/date_generators.cpp [1:3]
+ libs/date_time/src/gregorian/gregorian_types.cpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL db302fba9b60620d0f529b393c443760
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/parameter/aux_/cast.hpp at line 3, boost/parameter/aux_/maybe.hpp at line 3, boost/parameter/aux_/set.hpp at line 3, boost/parameter/aux_/template_keyword.hpp at line 3, boost/parameter/name.hpp at line 3, boost/parameter/preprocessor.hpp at line 3, boost/parameter/python.hpp at line 3, boost/parameter/value_type.hpp at line 3
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/parameter/aux_/cast.hpp [1:3]
+ boost/parameter/aux_/maybe.hpp [1:3]
+ boost/parameter/aux_/set.hpp [1:3]
+ boost/parameter/aux_/template_keyword.hpp [1:3]
+ boost/parameter/name.hpp [1:3]
+ boost/parameter/preprocessor.hpp [1:3]
+ boost/parameter/python.hpp [1:3]
+ boost/parameter/value_type.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL db499a5ed298660439fc712d0054f814
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001 Doug Gregor
+ Copyright (c) 1999-2003 Jaakko Jarvi
+ Copyright (c) 2001-2011 Joel de Guzman
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/container/generation/ignore.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL dbc2f407aa3399bea12ef980f5509329
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001-2005 Peter Dimov
+ // Copyright (c) 2006 Michael van der Westhuizen
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/detail/atomic_count_solaris.hpp [8:9]
+
+KEEP COPYRIGHT_SERVICE_LABEL dc1428e992645fc469a5b35c6395d317
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/assign.hpp at line 5, boost/assign/assignment_exception.hpp at line 5, boost/assign/list_inserter.hpp at line 5, boost/assign/list_of.hpp at line 5, boost/assign/std.hpp at line 5, boost/assign/std/deque.hpp at line 5, boost/assign/std/list.hpp at line 5, boost/assign/std/map.hpp at line 5, boost/assign/std/queue.hpp at line 5, boost/assign/std/set.hpp at line 5, boost/assign/std/slist.hpp at line 5, boost/assign/std/stack.hpp at line 5, boost/assign/std/vector.hpp at line 5, boost/range.hpp at line 5, boost/range/begin.hpp at line 5, boost/range/config.hpp at line 5, boost/range/const_iterator.hpp at line 5, boost/range/const_reverse_iterator.hpp at line 5, boost/range/detail/begin.hpp at line 5, boost/range/detail/common.hpp at line 5, boost/range/detail/detail_str.hpp at line 5, boost/range/detail/difference_type.hpp at line 5, boost/range/detail/empty.hpp at line 5, boost/range/detail/end.hpp at line 5, boost/range/detail/implementation_help.hpp at line 5, boost/range/detail/sfinae.hpp at line 5, boost/range/detail/size_type.hpp at line 5, boost/range/detail/sizer.hpp at line 5, boost/range/detail/value_type.hpp at line 5, boost/range/difference_type.hpp at line 5, boost/range/empty.hpp at line 5, boost/range/end.hpp at line 5, boost/range/iterator.hpp at line 5, boost/range/metafunctions.hpp at line 5, boost/range/mutable_iterator.hpp at line 5, boost/range/rbegin.hpp at line 5, boost/range/reference.hpp at line 5, boost/range/rend.hpp at line 5, boost/range/result_iterator.hpp at line 5, boost/range/reverse_iterator.hpp at line 5, boost/range/reverse_result_iterator.hpp at line 5, boost/range/size.hpp at line 5, boost/range/size_type.hpp at line 5, boost/range/sub_range.hpp at line 5, boost/range/value_type.hpp at line 5
+ License text:
+ // Copyright Thorsten Ottosen 2003-2004. Use, modification and
+ // distribution is subject to the Boost Software License, Version
+ // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/assign.hpp [3:5]
+ boost/assign/assignment_exception.hpp [3:5]
+ boost/assign/list_inserter.hpp [3:5]
+ boost/assign/list_of.hpp [3:5]
+ boost/assign/std.hpp [3:5]
+ boost/assign/std/deque.hpp [3:5]
+ boost/assign/std/list.hpp [3:5]
+ boost/assign/std/map.hpp [3:5]
+ boost/assign/std/queue.hpp [3:5]
+ boost/assign/std/set.hpp [3:5]
+ boost/assign/std/slist.hpp [3:5]
+ boost/assign/std/stack.hpp [3:5]
+ boost/assign/std/vector.hpp [3:5]
+ boost/range.hpp [3:5]
+ boost/range/begin.hpp [3:5]
+ boost/range/config.hpp [3:5]
+ boost/range/const_iterator.hpp [3:5]
+ boost/range/const_reverse_iterator.hpp [3:5]
+ boost/range/detail/begin.hpp [3:5]
+ boost/range/detail/common.hpp [3:5]
+ boost/range/detail/detail_str.hpp [3:5]
+ boost/range/detail/difference_type.hpp [3:5]
+ boost/range/detail/empty.hpp [3:5]
+ boost/range/detail/end.hpp [3:5]
+ boost/range/detail/implementation_help.hpp [3:5]
+ boost/range/detail/sfinae.hpp [3:5]
+ boost/range/detail/size_type.hpp [3:5]
+ boost/range/detail/sizer.hpp [3:5]
+ boost/range/detail/value_type.hpp [3:5]
+ boost/range/difference_type.hpp [3:5]
+ boost/range/empty.hpp [3:5]
+ boost/range/end.hpp [3:5]
+ boost/range/iterator.hpp [3:5]
+ boost/range/metafunctions.hpp [3:5]
+ boost/range/mutable_iterator.hpp [3:5]
+ boost/range/rbegin.hpp [3:5]
+ boost/range/reference.hpp [3:5]
+ boost/range/rend.hpp [3:5]
+ boost/range/result_iterator.hpp [3:5]
+ boost/range/reverse_iterator.hpp [3:5]
+ boost/range/reverse_result_iterator.hpp [3:5]
+ boost/range/size.hpp [3:5]
+ boost/range/size_type.hpp [3:5]
+ boost/range/sub_range.hpp [3:6]
+ boost/range/value_type.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL dc340c37a98d33ae61515bc914683bde
+BELONGS ya.make
+ License text:
+ * Copyright 2003 Guillaume Melquiond
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/interval/arith3.hpp [8:8]
+ boost/numeric/interval/compare/certain.hpp [3:3]
+ boost/numeric/interval/compare/possible.hpp [3:3]
+ boost/numeric/interval/ext/integer.hpp [3:3]
+ boost/numeric/interval/io.hpp [10:10]
+ boost/numeric/interval/policies.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL dcc3768299b5e568b89e4cebc118422e
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/typeof/msvc/typeof_impl.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL dd20af87a7fdf9f589db31af1358ab8c
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2000 Gary Powell (gwpowell@hotmail.com)
+ // Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/lambda/exceptions.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL dd7064b16e3bfd8491f05e3483f06f45
+BELONGS ya.make
+ License text:
+ // Copyright 2000 John Maddock (john@johnmaddock.co.uk)
+ // Copyright 2000 Jeremy Siek (jsiek@lsc.nd.edu)
+ // Copyright 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_traits/conversion_traits.hpp [2:4]
+ boost/type_traits/is_convertible.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL dd8c56c665cbeb0d19508d2df3017bfb
+BELONGS ya.make
+ License text:
+ // (C) Copyright Ion Gaztanaga 2008
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/intrusive/priority_compare.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL dd8f136175da98ea2d07dcd9de1ecaf5
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2008, 2011 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/detail/spinlock_gcc_arm.hpp [5:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL ddb0c5bfffd13fe5495adc6471731e23
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2013 Christopher Kormanyos
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/detail/airy_ai_bi_zero.hpp [1:3]
+ boost/math/special_functions/detail/bessel_jy_zero.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL de436355f6cfaff01d7ce0d889764ae9
+BELONGS ya.make
+ License text:
+ // Copyright Beman Dawes 2002-2009
+ // Copyright Jan Langer 2002
+ // Copyright Dietmar Kuehl 2001
+ // Copyright Vladimir Prus 2002
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/filesystem/operations.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL de5950ef4f0982e19312dacc44bc035d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/cstdfloat.hpp at line 6, boost/math/cstdfloat/cstdfloat_cmath.hpp at line 6, boost/math/cstdfloat/cstdfloat_complex.hpp at line 6, boost/math/cstdfloat/cstdfloat_complex_std.hpp at line 6, boost/math/cstdfloat/cstdfloat_iostream.hpp at line 6, boost/math/cstdfloat/cstdfloat_limits.hpp at line 6, boost/math/cstdfloat/cstdfloat_types.hpp at line 6, boost/math/distributions/arcsine.hpp at line 7
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/cstdfloat.hpp [2:6]
+ boost/math/cstdfloat/cstdfloat_cmath.hpp [2:6]
+ boost/math/cstdfloat/cstdfloat_complex.hpp [2:6]
+ boost/math/cstdfloat/cstdfloat_complex_std.hpp [2:6]
+ boost/math/cstdfloat/cstdfloat_iostream.hpp [2:6]
+ boost/math/cstdfloat/cstdfloat_limits.hpp [2:6]
+ boost/math/cstdfloat/cstdfloat_types.hpp [2:6]
+ boost/math/distributions/arcsine.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL de772d73074b2097bc4d45f814122331
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2017 Dynatrace
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/xlcpp_zos.hpp [1:1]
+ boost/config/platform/zos.hpp [1:1]
+ boost/config/stdlib/xlcpp_zos.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL de89ae6eae04701fcbcc7e54b40b1fe6
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/assign/ptr_list_inserter.hpp at line 5, boost/assign/ptr_list_of.hpp at line 5, boost/ptr_container/clone_allocator.hpp at line 6, boost/ptr_container/detail/associative_ptr_container.hpp at line 6, boost/ptr_container/detail/map_iterator.hpp at line 6, boost/ptr_container/detail/reversible_ptr_container.hpp at line 6, boost/ptr_container/detail/scoped_deleter.hpp at line 6, boost/ptr_container/detail/void_ptr_iterator.hpp at line 6, boost/ptr_container/exception.hpp at line 6, boost/ptr_container/nullable.hpp at line 6, boost/ptr_container/ptr_array.hpp at line 6, boost/ptr_container/ptr_deque.hpp at line 6, boost/ptr_container/ptr_list.hpp at line 6, boost/ptr_container/ptr_map.hpp at line 6, boost/ptr_container/ptr_map_adapter.hpp at line 6, boost/ptr_container/ptr_sequence_adapter.hpp at line 6, boost/ptr_container/ptr_set.hpp at line 6, boost/ptr_container/ptr_set_adapter.hpp at line 6, boost/ptr_container/ptr_vector.hpp at line 6
+ License text:
+ // Copyright Thorsten Ottosen 2003-2005. Use, modification and
+ // distribution is subject to the Boost Software License, Version
+ // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/assign/ptr_list_inserter.hpp [3:5]
+ boost/assign/ptr_list_of.hpp [3:5]
+ boost/ptr_container/clone_allocator.hpp [4:6]
+ boost/ptr_container/detail/associative_ptr_container.hpp [4:6]
+ boost/ptr_container/detail/map_iterator.hpp [4:6]
+ boost/ptr_container/detail/reversible_ptr_container.hpp [4:6]
+ boost/ptr_container/detail/scoped_deleter.hpp [4:6]
+ boost/ptr_container/detail/void_ptr_iterator.hpp [4:6]
+ boost/ptr_container/exception.hpp [4:6]
+ boost/ptr_container/nullable.hpp [4:6]
+ boost/ptr_container/ptr_array.hpp [4:6]
+ boost/ptr_container/ptr_deque.hpp [4:6]
+ boost/ptr_container/ptr_list.hpp [4:6]
+ boost/ptr_container/ptr_map.hpp [4:6]
+ boost/ptr_container/ptr_map_adapter.hpp [4:6]
+ boost/ptr_container/ptr_sequence_adapter.hpp [4:6]
+ boost/ptr_container/ptr_set.hpp [4:6]
+ boost/ptr_container/ptr_set_adapter.hpp [4:6]
+ boost/ptr_container/ptr_vector.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL dea2c85dcebaf59c9970e07c8eec47d4
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/vacpp.hpp [1:7]
+ boost/config/compiler/visualc.hpp [1:8]
+ boost/config/stdlib/libcomo.hpp [1:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL dec05a67099272938bba13a652ec746e
+BELONGS ya.make
+ License text:
+ Copyright (c) 2002 Joel de Guzman
+ Copyright (c) 2002-2003 Hartmut Kaiser
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/phoenix/tuple_helpers.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL df0ccc1d436763dd3030b1b12f23d451
+BELONGS ya.make
+ License text:
+ // Copyright 2008,2012 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/detail/sp_forward.hpp [12:12]
+
+KEEP COPYRIGHT_SERVICE_LABEL df8244b2e7ca5d0a2a5c57b5a44ef2f1
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2012 Barend Gehrels, Amsterdam, the Netherlands.
+ // Copyright (c) 2012 Bruno Lalande, Paris, France.
+ // Copyright (c) 2012 Mateusz Loskot, London, UK.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/util/bare_type.hpp [3:5]
+ boost/geometry/util/calculation_type.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL dfa7e438d1da1445b96c94c2d5856b8e
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2016-2017 Vinnie Falco (vinnie dot falco at gmail dot com)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/beast/core.hpp [2:2]
+ boost/beast/core/bind_handler.hpp [2:2]
+ boost/beast/core/buffered_read_stream.hpp [2:2]
+ boost/beast/core/buffers_adapter.hpp [2:2]
+ boost/beast/core/buffers_cat.hpp [2:2]
+ boost/beast/core/buffers_prefix.hpp [2:2]
+ boost/beast/core/buffers_suffix.hpp [2:2]
+ boost/beast/core/buffers_to_string.hpp [2:2]
+ boost/beast/core/detail/allocator.hpp [2:2]
+ boost/beast/core/detail/base64.hpp [2:2]
+ boost/beast/core/detail/bind_handler.hpp [2:2]
+ boost/beast/core/detail/buffers_ref.hpp [2:2]
+ boost/beast/core/detail/clamp.hpp [2:2]
+ boost/beast/core/detail/config.hpp [2:2]
+ boost/beast/core/detail/empty_base_optimization.hpp [2:2]
+ boost/beast/core/detail/integer_sequence.hpp [2:2]
+ boost/beast/core/detail/ostream.hpp [2:2]
+ boost/beast/core/detail/sha1.hpp [2:2]
+ boost/beast/core/detail/static_ostream.hpp [2:2]
+ boost/beast/core/detail/static_string.hpp [2:2]
+ boost/beast/core/detail/type_traits.hpp [2:2]
+ boost/beast/core/detail/variant.hpp [2:2]
+ boost/beast/core/error.hpp [2:2]
+ boost/beast/core/flat_buffer.hpp [2:2]
+ boost/beast/core/flat_static_buffer.hpp [2:2]
+ boost/beast/core/handler_ptr.hpp [2:2]
+ boost/beast/core/impl/buffered_read_stream.ipp [2:2]
+ boost/beast/core/impl/buffers_adapter.ipp [2:2]
+ boost/beast/core/impl/buffers_cat.ipp [2:2]
+ boost/beast/core/impl/buffers_prefix.ipp [2:2]
+ boost/beast/core/impl/buffers_suffix.ipp [2:2]
+ boost/beast/core/impl/flat_buffer.ipp [2:2]
+ boost/beast/core/impl/flat_static_buffer.ipp [2:2]
+ boost/beast/core/impl/handler_ptr.ipp [2:2]
+ boost/beast/core/impl/multi_buffer.ipp [2:2]
+ boost/beast/core/impl/read_size.ipp [2:2]
+ boost/beast/core/impl/static_buffer.ipp [2:2]
+ boost/beast/core/impl/static_string.ipp [2:2]
+ boost/beast/core/impl/string_param.ipp [2:2]
+ boost/beast/core/multi_buffer.hpp [2:2]
+ boost/beast/core/ostream.hpp [2:2]
+ boost/beast/core/read_size.hpp [2:2]
+ boost/beast/core/span.hpp [2:2]
+ boost/beast/core/static_buffer.hpp [2:2]
+ boost/beast/core/static_string.hpp [2:2]
+ boost/beast/core/string.hpp [2:2]
+ boost/beast/core/string_param.hpp [2:2]
+ boost/beast/core/type_traits.hpp [2:2]
+ boost/beast/http.hpp [2:2]
+ boost/beast/http/basic_dynamic_body.hpp [2:2]
+ boost/beast/http/basic_file_body.hpp [2:2]
+ boost/beast/http/basic_parser.hpp [2:2]
+ boost/beast/http/buffer_body.hpp [2:2]
+ boost/beast/http/chunk_encode.hpp [2:2]
+ boost/beast/http/detail/basic_parsed_list.hpp [2:2]
+ boost/beast/http/detail/basic_parser.hpp [2:2]
+ boost/beast/http/detail/chunk_encode.hpp [2:2]
+ boost/beast/http/detail/rfc7230.hpp [2:2]
+ boost/beast/http/detail/type_traits.hpp [2:2]
+ boost/beast/http/dynamic_body.hpp [2:2]
+ boost/beast/http/empty_body.hpp [2:2]
+ boost/beast/http/error.hpp [2:2]
+ boost/beast/http/field.hpp [2:2]
+ boost/beast/http/fields.hpp [2:2]
+ boost/beast/http/file_body.hpp [2:2]
+ boost/beast/http/impl/basic_parser.ipp [2:2]
+ boost/beast/http/impl/chunk_encode.ipp [2:2]
+ boost/beast/http/impl/error.ipp [2:2]
+ boost/beast/http/impl/field.ipp [2:2]
+ boost/beast/http/impl/fields.ipp [2:2]
+ boost/beast/http/impl/file_body_win32.ipp [2:2]
+ boost/beast/http/impl/message.ipp [2:2]
+ boost/beast/http/impl/parser.ipp [2:2]
+ boost/beast/http/impl/read.ipp [2:2]
+ boost/beast/http/impl/rfc7230.ipp [2:2]
+ boost/beast/http/impl/serializer.ipp [2:2]
+ boost/beast/http/impl/status.ipp [2:2]
+ boost/beast/http/impl/verb.ipp [2:2]
+ boost/beast/http/impl/write.ipp [2:2]
+ boost/beast/http/message.hpp [2:2]
+ boost/beast/http/parser.hpp [2:2]
+ boost/beast/http/read.hpp [2:2]
+ boost/beast/http/rfc7230.hpp [2:2]
+ boost/beast/http/serializer.hpp [2:2]
+ boost/beast/http/span_body.hpp [2:2]
+ boost/beast/http/status.hpp [2:2]
+ boost/beast/http/string_body.hpp [2:2]
+ boost/beast/http/type_traits.hpp [2:2]
+ boost/beast/http/vector_body.hpp [2:2]
+ boost/beast/http/verb.hpp [2:2]
+ boost/beast/http/write.hpp [2:2]
+ boost/beast/version.hpp [2:2]
+ boost/beast/websocket.hpp [2:2]
+ boost/beast/websocket/detail/error.hpp [2:2]
+ boost/beast/websocket/detail/frame.hpp [2:2]
+ boost/beast/websocket/detail/hybi13.hpp [2:2]
+ boost/beast/websocket/detail/mask.hpp [2:2]
+ boost/beast/websocket/detail/pausation.hpp [2:2]
+ boost/beast/websocket/detail/pmd_extension.hpp [2:2]
+ boost/beast/websocket/detail/stream_base.hpp [2:2]
+ boost/beast/websocket/detail/type_traits.hpp [2:2]
+ boost/beast/websocket/detail/utf8_checker.hpp [2:2]
+ boost/beast/websocket/error.hpp [2:2]
+ boost/beast/websocket/impl/accept.ipp [2:2]
+ boost/beast/websocket/impl/close.ipp [2:2]
+ boost/beast/websocket/impl/error.ipp [2:2]
+ boost/beast/websocket/impl/handshake.ipp [2:2]
+ boost/beast/websocket/impl/ping.ipp [2:2]
+ boost/beast/websocket/impl/read.ipp [2:2]
+ boost/beast/websocket/impl/rfc6455.ipp [2:2]
+ boost/beast/websocket/impl/ssl.ipp [2:2]
+ boost/beast/websocket/impl/stream.ipp [2:2]
+ boost/beast/websocket/impl/teardown.ipp [2:2]
+ boost/beast/websocket/impl/write.ipp [2:2]
+ boost/beast/websocket/option.hpp [2:2]
+ boost/beast/websocket/rfc6455.hpp [2:2]
+ boost/beast/websocket/role.hpp [2:2]
+ boost/beast/websocket/ssl.hpp [2:2]
+ boost/beast/websocket/stream.hpp [2:2]
+ boost/beast/websocket/stream_fwd.hpp [2:2]
+ boost/beast/websocket/teardown.hpp [2:2]
+ boost/beast/zlib.hpp [2:2]
+ boost/beast/zlib/deflate_stream.hpp [2:2]
+ boost/beast/zlib/detail/bitstream.hpp [2:2]
+ boost/beast/zlib/detail/deflate_stream.hpp [2:2]
+ boost/beast/zlib/detail/inflate_stream.hpp [2:2]
+ boost/beast/zlib/detail/ranges.hpp [2:2]
+ boost/beast/zlib/detail/window.hpp [2:2]
+ boost/beast/zlib/error.hpp [2:2]
+ boost/beast/zlib/impl/error.ipp [2:2]
+ boost/beast/zlib/inflate_stream.hpp [2:2]
+ boost/beast/zlib/zlib.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL e00f1e8f667cb6fd0131b3aaf2dc86a1
+BELONGS ya.make
+ License text:
+ // Copyright 2012, Philipp Moeller
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/property_map/function_property_map.hpp [5:5]
+ boost/property_map/transform_value_property_map.hpp [5:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL e030a2caab5278ef969181ef6d2dc9cb
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2012-2015 Adam Wulkiewicz, Lodz, Poland.
+ // Copyright (c) 2011-2013 Andrew Hundt.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/index/detail/varray.hpp [3:4]
+ boost/geometry/index/detail/varray_detail.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL e09ea41bd5eb67cdd8fbe0f78743b80e
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/integer/common_factor.hpp at line 5, boost/math/common_factor.hpp at line 5
+ License text:
+ // (C) Copyright Daryle Walker 2001-2002.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/integer/common_factor.hpp [3:5]
+ boost/math/common_factor.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL e0a85874f71f22af59d2d33636d28925
+BELONGS ya.make
+ License text:
+ Copyright (c) 2005-2011 Joel de Guzman
+ Copyright (c) 2011 Thomas Heller
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/phoenix/scope/this.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL e0de0d48e0b069a801b1ac89d6186a5b
+BELONGS ya.make
+ License text:
+ Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/beast/zlib/deflate_stream.hpp [29:29]
+ boost/beast/zlib/detail/bitstream.hpp [11:11]
+ boost/beast/zlib/detail/deflate_stream.hpp [11:11]
+ boost/beast/zlib/detail/inflate_stream.hpp [11:11]
+ boost/beast/zlib/detail/ranges.hpp [11:11]
+ boost/beast/zlib/detail/window.hpp [11:11]
+ boost/beast/zlib/error.hpp [22:22]
+ boost/beast/zlib/impl/error.ipp [11:11]
+ boost/beast/zlib/inflate_stream.hpp [18:18]
+ boost/beast/zlib/zlib.hpp [19:19]
+
+KEEP COPYRIGHT_SERVICE_LABEL e0fed193286f3ac61728fdf5e779701e
+BELONGS ya.make
+ License text:
+ // Copyright 2012 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/ratio/config.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL e10cb8d2c225a3e0c9808754430d0602
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/detail/platform.hpp at line 4
+ License text:
+ // Copyright 2006 Roland Schwarz.
+ // (C) Copyright 2007 Anthony Williams
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/detail/platform.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL e1162d87fffbacf38e42e78ebd71eed4
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2005, Fernando Luis Cacciola Carballal.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/optional/optional_io.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL e14097bb568a6fdfd4955810061426a2
+BELONGS ya.make
+ License text:
+ Copyright (c) Marshall Clow 2012-2015.
+ Copyright (c) Beman Dawes 2015
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/utility/string_view.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL e145b329e7fa084f9f500c3f9a0444c3
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2015-2018 Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/formulas/thomas_inverse.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL e185740764090ee8ec31be4719fbb5e2
+BELONGS ya.make
+ License text:
+ Copyright 2015 NumScale SAS
+ Copyright 2015 LRI UMR 8623 CNRS/University Paris Sud XI
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/align/assume_aligned.hpp [2:3]
+ boost/align/detail/assume_aligned.hpp [2:3]
+ boost/align/detail/assume_aligned_gcc.hpp [2:3]
+ boost/align/detail/assume_aligned_intel.hpp [2:3]
+ boost/align/detail/assume_aligned_msvc.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL e1b07ee82c29a145784d4cf62ade4b2a
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic.hpp [2:14]
+ boost/spirit/home/classic/core.hpp [2:8]
+ boost/spirit/home/classic/core/non_terminal/grammar.hpp [2:5]
+ boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp [2:5]
+ boost/spirit/home/classic/phoenix/closures.hpp [3:4]
+ boost/spirit/home/classic/utility.hpp [2:9]
+
+KEEP COPYRIGHT_SERVICE_LABEL e1dbb02b4e43747286367cdd693bef41
+BELONGS ya.make
+ License text:
+ // This file was modified by Oracle on 2013-2016.
+ // Modifications copyright (c) 2013-2016 Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/relate/result.hpp [6:7]
+ boost/geometry/util/range.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL e20ed79246192f741a7943dd114bd714
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2017
+ // Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/pthread/pthread_helpers.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL e213d73918aa882afa60f3d0e8ec7b88
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/adaptor/define_adaptor.hpp at line 5, boost/range/adaptor/type_erased.hpp at line 5, boost/range/any_range.hpp at line 3, boost/range/combine.hpp at line 3, boost/range/counting_range.hpp at line 3, boost/range/detail/any_iterator.hpp at line 5, boost/range/detail/any_iterator_buffer.hpp at line 5, boost/range/detail/any_iterator_interface.hpp at line 5, boost/range/detail/any_iterator_wrapper.hpp at line 5, boost/range/has_range_iterator.hpp at line 5, boost/range/irange.hpp at line 5, boost/range/istream_range.hpp at line 3
+ License text:
+ // Copyright Neil Groves 2010. Use, modification and
+ // distribution is subject to the Boost Software License, Version
+ // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/range/adaptor/define_adaptor.hpp [3:5]
+ boost/range/adaptor/type_erased.hpp [3:5]
+ boost/range/any_range.hpp [1:3]
+ boost/range/combine.hpp [1:3]
+ boost/range/counting_range.hpp [1:3]
+ boost/range/detail/any_iterator.hpp [3:5]
+ boost/range/detail/any_iterator_buffer.hpp [3:5]
+ boost/range/detail/any_iterator_interface.hpp [3:5]
+ boost/range/detail/any_iterator_wrapper.hpp [3:5]
+ boost/range/has_range_iterator.hpp [3:5]
+ boost/range/irange.hpp [3:5]
+ boost/range/istream_range.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL e21e25840accbca4a29aa542c16dee62
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/detail/min_max.hpp at line 4
+ License text:
+ // Copyright 2016 John Maddock. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/multiprecision/detail/min_max.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL e231c4f18ec32c50a689f1faad621776
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/algorithm.hpp at line 10
+ License text:
+ // Copyright 2009 Neil Groves.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/range/algorithm.hpp [8:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL e238b7f2d3a3ead245b8ba50c408e028
+BELONGS ya.make
+ License text:
+ // Copyright Aleksey Gurtovoy 2000-2010
+ // Copyright David Abrahams 2000-2002
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/zip_view.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL e242cf22a8569c95827537aca7b8285d
+BELONGS ya.make
+ License text:
+ * Copyright (c) 2003
+ * John Maddock
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/regex/v4/regex_iterator.hpp [3:4]
+ boost/regex/v4/regex_token_iterator.hpp [3:4]
+ boost/regex/v4/regex_traits.hpp [3:4]
+ boost/regex/v4/syntax_type.hpp [3:4]
+ boost/regex/v4/u32regex_iterator.hpp [3:4]
+ boost/regex/v4/u32regex_token_iterator.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL e2ac57f2ea4023ec9b11936484e4a2f0
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+ Copyright (c) 2010 Christopher Schmidt
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/adapted/adt.hpp [2:4]
+ boost/fusion/adapted/adt/adapt_adt_named.hpp [2:4]
+ boost/fusion/adapted/adt/adapt_assoc_adt_named.hpp [2:2]
+ boost/fusion/adapted/adt/detail/adapt_base.hpp [2:4]
+ boost/fusion/adapted/adt/detail/extension.hpp [2:4]
+ boost/fusion/adapted/array.hpp [2:4]
+ boost/fusion/adapted/array/at_impl.hpp [2:2]
+ boost/fusion/adapted/array/begin_impl.hpp [2:2]
+ boost/fusion/adapted/array/category_of_impl.hpp [2:2]
+ boost/fusion/adapted/array/deref_impl.hpp [2:2]
+ boost/fusion/adapted/array/end_impl.hpp [2:2]
+ boost/fusion/adapted/array/is_sequence_impl.hpp [2:2]
+ boost/fusion/adapted/array/is_view_impl.hpp [2:2]
+ boost/fusion/adapted/array/size_impl.hpp [2:2]
+ boost/fusion/adapted/array/tag_of.hpp [2:2]
+ boost/fusion/adapted/array/value_at_impl.hpp [2:2]
+ boost/fusion/adapted/array/value_of_impl.hpp [2:2]
+ boost/fusion/adapted/struct/detail/namespace.hpp [2:3]
+ boost/fusion/adapted/struct/detail/proxy_type.hpp [2:3]
+ boost/fusion/algorithm/iteration/detail/preprocessed/iter_fold.hpp [2:3]
+ boost/fusion/algorithm/iteration/detail/preprocessed/reverse_iter_fold.hpp [2:3]
+ boost/fusion/algorithm/iteration/iter_fold.hpp [2:4]
+ boost/fusion/algorithm/iteration/iter_fold.hpp [37:38]
+ boost/fusion/algorithm/iteration/reverse_fold.hpp [2:4]
+ boost/fusion/algorithm/iteration/reverse_iter_fold.hpp [2:4]
+ boost/fusion/algorithm/iteration/reverse_iter_fold.hpp [37:38]
+ boost/fusion/container/deque/detail/is_sequence_impl.hpp [2:2]
+ boost/fusion/include/adapt_adt_named.hpp [2:2]
+ boost/fusion/include/adapt_assoc_adt.hpp [2:2]
+ boost/fusion/include/adapt_assoc_adt_named.hpp [2:2]
+ boost/fusion/include/adapt_assoc_struct.hpp [2:2]
+ boost/fusion/include/adapt_assoc_struct_named.hpp [2:2]
+ boost/fusion/include/adapt_struct_named.hpp [2:2]
+ boost/fusion/include/boost_array.hpp [2:2]
+ boost/fusion/include/define_assoc_struct.hpp [2:2]
+ boost/fusion/include/define_struct.hpp [2:2]
+ boost/fusion/include/iter_fold.hpp [2:2]
+ boost/fusion/include/make_unfused.hpp [2:2]
+ boost/fusion/include/proxy_type.hpp [2:2]
+ boost/fusion/include/reverse_fold.hpp [2:2]
+ boost/fusion/include/reverse_iter_fold.hpp [2:2]
+ boost/fusion/include/unfused.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL e2b2efa860250bc2b6d99e29d6f93fba
+BELONGS libs/python/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/detail/python_type.hpp at line 3, boost/python/object/function_doc_signature.hpp at line 3, libs/python/src/object/function_doc_signature.cpp at line 3
+ License text:
+ // Copyright Nikolay Mladenov 2007.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/python/detail/python_type.hpp [1:3]
+ boost/python/object/function_doc_signature.hpp [1:3]
+ libs/python/src/object/function_doc_signature.cpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL e2b926c2da0d2e8f0d9454a3cbeec2b9
+BELONGS ya.make
+ License text:
+ Copyright (c) 2006 Daniel Wallin
+ Copyright (c) 2005 Dan Marsden
+ Copyright (c) 2007 Joel de Guzman
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/phoenix/stl.hpp [2:4]
+ boost/phoenix/stl/algorithm.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL e2de2ade95c3c77ab6db64df93e27390
+BELONGS ya.make
+ License text:
+ Copyright (c) 2002 Juan Carlos Arevalo-Baeza
+ Copyright (c) 2002-2006 Hartmut Kaiser
+ Copyright (c) 2003 Giovanni Bajo
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/iterator/impl/position_iterator.ipp [2:5]
+ boost/spirit/home/classic/iterator/position_iterator.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL e2f2608b1a713fdf90c3ec334ab18042
+BELONGS ya.make
+ License text:
+ // (C) Copyright John Maddock 2001 - 2003.
+ // (C) Copyright Martin Wille 2003.
+ // (C) Copyright Guillaume Melquiond 2003.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/detail/select_compiler_config.hpp [3:5]
+ boost/config/stdlib/dinkumware.hpp [1:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL e323857368fb1433c9c3079428ca51d3
+BELONGS ya.make
+ License text:
+ // Copyright 2017 Peter Dimov.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/header_deprecated.hpp [4:4]
+ boost/config/helper_macros.hpp [4:5]
+ boost/config/pragma_message.hpp [4:4]
+ boost/mp11/bind.hpp [4:4]
+ boost/mp11/detail/mp_with_index.hpp [4:4]
+ boost/mp11/mpl.hpp [4:4]
+ boost/smart_ptr/atomic_shared_ptr.hpp [7:7]
+ boost/smart_ptr/detail/local_counted_base.hpp [12:12]
+ boost/smart_ptr/detail/local_sp_deleter.hpp [12:12]
+ boost/smart_ptr/local_shared_ptr.hpp [6:6]
+ boost/smart_ptr/make_local_shared.hpp [6:6]
+ boost/smart_ptr/make_local_shared_array.hpp [2:4]
+ boost/smart_ptr/make_local_shared_object.hpp [6:6]
+ boost/type_traits/is_list_constructible.hpp [4:4]
+ boost/type_traits/is_nothrow_swappable.hpp [4:4]
+ boost/utility/detail/minstd_rand.hpp [4:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL e3241f812d8d89240eef1d3f12c35cf1
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic.hpp [2:14]
+ boost/spirit/home/classic/core/composite/impl/directives.ipp [2:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL e33f9b0942991a1015e55f9d51fcdfe9
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2007 Joel de Guzman
+ Copyright (c) 2007 Dan Marsden
+ Copyright (c) 2009-2011 Christopher Schmidt
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/adapted/struct/adapt_assoc_struct.hpp [2:4]
+ boost/fusion/adapted/struct/adapt_struct.hpp [2:4]
+ boost/fusion/adapted/struct/adapt_struct_named.hpp [2:4]
+ boost/fusion/adapted/struct/detail/extension.hpp [2:4]
+ boost/fusion/algorithm/iteration/for_each.hpp [2:3]
+ boost/fusion/include/accumulate.hpp [2:2]
+ boost/fusion/include/adapt_adt.hpp [2:2]
+ boost/fusion/include/adapt_struct.hpp [2:2]
+ boost/fusion/include/adapted.hpp [2:2]
+ boost/fusion/include/adapter.hpp [2:2]
+ boost/fusion/include/advance.hpp [2:2]
+ boost/fusion/include/algorithm.hpp [2:2]
+ boost/fusion/include/all.hpp [2:2]
+ boost/fusion/include/any.hpp [2:2]
+ boost/fusion/include/array.hpp [2:2]
+ boost/fusion/include/as_deque.hpp [2:2]
+ boost/fusion/include/as_list.hpp [2:2]
+ boost/fusion/include/as_map.hpp [2:2]
+ boost/fusion/include/as_set.hpp [2:2]
+ boost/fusion/include/as_vector.hpp [2:2]
+ boost/fusion/include/at.hpp [2:2]
+ boost/fusion/include/at_c.hpp [2:2]
+ boost/fusion/include/at_key.hpp [2:2]
+ boost/fusion/include/back.hpp [2:2]
+ boost/fusion/include/begin.hpp [2:2]
+ boost/fusion/include/boost_tuple.hpp [2:2]
+ boost/fusion/include/category_of.hpp [2:2]
+ boost/fusion/include/clear.hpp [2:2]
+ boost/fusion/include/comparison.hpp [2:2]
+ boost/fusion/include/cons.hpp [2:2]
+ boost/fusion/include/cons_tie.hpp [2:2]
+ boost/fusion/include/container.hpp [2:2]
+ boost/fusion/include/convert.hpp [2:2]
+ boost/fusion/include/count.hpp [2:2]
+ boost/fusion/include/count_if.hpp [2:2]
+ boost/fusion/include/deduce.hpp [2:2]
+ boost/fusion/include/deduce_sequence.hpp [2:2]
+ boost/fusion/include/deque.hpp [2:2]
+ boost/fusion/include/deque_fwd.hpp [2:2]
+ boost/fusion/include/deque_tie.hpp [2:2]
+ boost/fusion/include/deref.hpp [2:2]
+ boost/fusion/include/distance.hpp [2:2]
+ boost/fusion/include/empty.hpp [2:2]
+ boost/fusion/include/end.hpp [2:2]
+ boost/fusion/include/equal_to.hpp [2:2]
+ boost/fusion/include/erase.hpp [2:2]
+ boost/fusion/include/erase_key.hpp [2:2]
+ boost/fusion/include/filter.hpp [2:2]
+ boost/fusion/include/filter_if.hpp [2:2]
+ boost/fusion/include/filter_view.hpp [2:2]
+ boost/fusion/include/find.hpp [2:2]
+ boost/fusion/include/find_if.hpp [2:2]
+ boost/fusion/include/fold.hpp [2:2]
+ boost/fusion/include/for_each.hpp [2:2]
+ boost/fusion/include/front.hpp [2:2]
+ boost/fusion/include/functional.hpp [2:2]
+ boost/fusion/include/fused.hpp [2:2]
+ boost/fusion/include/fused_function_object.hpp [2:2]
+ boost/fusion/include/fused_procedure.hpp [2:2]
+ boost/fusion/include/generation.hpp [2:2]
+ boost/fusion/include/greater.hpp [2:2]
+ boost/fusion/include/greater_equal.hpp [2:2]
+ boost/fusion/include/has_key.hpp [2:2]
+ boost/fusion/include/ignore.hpp [2:2]
+ boost/fusion/include/insert.hpp [2:2]
+ boost/fusion/include/insert_range.hpp [2:2]
+ boost/fusion/include/intrinsic.hpp [2:2]
+ boost/fusion/include/invocation.hpp [2:2]
+ boost/fusion/include/invoke.hpp [2:2]
+ boost/fusion/include/invoke_function_object.hpp [2:2]
+ boost/fusion/include/invoke_procedure.hpp [2:2]
+ boost/fusion/include/is_iterator.hpp [2:2]
+ boost/fusion/include/is_sequence.hpp [2:2]
+ boost/fusion/include/is_view.hpp [2:2]
+ boost/fusion/include/iteration.hpp [2:2]
+ boost/fusion/include/iterator.hpp [2:2]
+ boost/fusion/include/iterator_base.hpp [2:2]
+ boost/fusion/include/iterator_facade.hpp [2:2]
+ boost/fusion/include/iterator_range.hpp [2:2]
+ boost/fusion/include/join.hpp [2:2]
+ boost/fusion/include/joint_view.hpp [2:2]
+ boost/fusion/include/less.hpp [2:2]
+ boost/fusion/include/less_equal.hpp [2:2]
+ boost/fusion/include/list.hpp [2:2]
+ boost/fusion/include/list_fwd.hpp [2:2]
+ boost/fusion/include/list_tie.hpp [2:2]
+ boost/fusion/include/make_cons.hpp [2:2]
+ boost/fusion/include/make_deque.hpp [2:2]
+ boost/fusion/include/make_fused.hpp [2:2]
+ boost/fusion/include/make_fused_function_object.hpp [2:2]
+ boost/fusion/include/make_fused_procedure.hpp [2:2]
+ boost/fusion/include/make_list.hpp [2:2]
+ boost/fusion/include/make_map.hpp [2:2]
+ boost/fusion/include/make_set.hpp [2:2]
+ boost/fusion/include/make_tuple.hpp [2:2]
+ boost/fusion/include/make_vector.hpp [2:2]
+ boost/fusion/include/map.hpp [2:2]
+ boost/fusion/include/map_fwd.hpp [2:2]
+ boost/fusion/include/map_tie.hpp [2:2]
+ boost/fusion/include/mpl.hpp [2:2]
+ boost/fusion/include/next.hpp [2:2]
+ boost/fusion/include/none.hpp [2:2]
+ boost/fusion/include/not_equal_to.hpp [2:2]
+ boost/fusion/include/nview.hpp [2:2]
+ boost/fusion/include/pair.hpp [2:2]
+ boost/fusion/include/pair_tie.hpp [2:2]
+ boost/fusion/include/pop_back.hpp [2:2]
+ boost/fusion/include/pop_front.hpp [2:2]
+ boost/fusion/include/prior.hpp [2:2]
+ boost/fusion/include/push_back.hpp [2:2]
+ boost/fusion/include/push_front.hpp [2:2]
+ boost/fusion/include/query.hpp [2:2]
+ boost/fusion/include/remove.hpp [2:2]
+ boost/fusion/include/remove_if.hpp [2:2]
+ boost/fusion/include/repetitive_view.hpp [2:2]
+ boost/fusion/include/replace.hpp [2:2]
+ boost/fusion/include/replace_if.hpp [2:2]
+ boost/fusion/include/reverse.hpp [2:2]
+ boost/fusion/include/reverse_view.hpp [2:2]
+ boost/fusion/include/sequence.hpp [2:2]
+ boost/fusion/include/sequence_base.hpp [2:2]
+ boost/fusion/include/sequence_facade.hpp [2:2]
+ boost/fusion/include/set.hpp [2:2]
+ boost/fusion/include/set_fwd.hpp [2:2]
+ boost/fusion/include/single_view.hpp [2:2]
+ boost/fusion/include/size.hpp [2:2]
+ boost/fusion/include/std_pair.hpp [2:2]
+ boost/fusion/include/struct.hpp [2:2]
+ boost/fusion/include/support.hpp [2:2]
+ boost/fusion/include/swap.hpp [2:2]
+ boost/fusion/include/tag_of.hpp [2:2]
+ boost/fusion/include/tag_of_fwd.hpp [2:2]
+ boost/fusion/include/transform.hpp [2:2]
+ boost/fusion/include/transform_view.hpp [2:2]
+ boost/fusion/include/transformation.hpp [2:2]
+ boost/fusion/include/tuple.hpp [2:2]
+ boost/fusion/include/tuple_fwd.hpp [2:2]
+ boost/fusion/include/tuple_tie.hpp [2:2]
+ boost/fusion/include/unfused_typed.hpp [2:2]
+ boost/fusion/include/unused.hpp [2:2]
+ boost/fusion/include/value_at_key.hpp [2:2]
+ boost/fusion/include/value_of.hpp [2:2]
+ boost/fusion/include/vector.hpp [2:2]
+ boost/fusion/include/vector10.hpp [2:2]
+ boost/fusion/include/vector20.hpp [2:2]
+ boost/fusion/include/vector30.hpp [2:2]
+ boost/fusion/include/vector40.hpp [2:2]
+ boost/fusion/include/vector50.hpp [2:2]
+ boost/fusion/include/vector_fwd.hpp [2:2]
+ boost/fusion/include/vector_tie.hpp [2:2]
+ boost/fusion/include/view.hpp [2:2]
+ boost/fusion/include/void.hpp [2:2]
+ boost/fusion/include/zip.hpp [2:2]
+ boost/fusion/include/zip_view.hpp [2:2]
+ boost/phoenix/bind/bind_member_variable.hpp [2:3]
+ boost/phoenix/bind/detail/cpp03/bind_function.hpp [2:2]
+ boost/phoenix/bind/detail/cpp03/bind_function.hpp [54:54]
+ boost/phoenix/bind/detail/cpp03/bind_function_object.hpp [2:2]
+ boost/phoenix/bind/detail/cpp03/bind_function_object.hpp [31:31]
+ boost/phoenix/bind/detail/cpp03/bind_member_function.hpp [2:3]
+ boost/phoenix/bind/detail/cpp03/bind_member_function.hpp [106:106]
+ boost/phoenix/bind/detail/cpp03/function_ptr.hpp [2:2]
+ boost/phoenix/bind/detail/cpp03/function_ptr.hpp [95:95]
+ boost/phoenix/bind/detail/cpp03/member_function_ptr.hpp [2:2]
+ boost/phoenix/bind/detail/cpp03/member_function_ptr.hpp [84:84]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_10.hpp [2:2]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_20.hpp [2:2]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_30.hpp [2:2]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_40.hpp [2:2]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_50.hpp [2:2]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_10.hpp [2:2]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_20.hpp [2:2]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_30.hpp [2:2]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_40.hpp [2:2]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_50.hpp [2:2]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_10.hpp [2:2]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_20.hpp [2:2]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_30.hpp [2:2]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_40.hpp [2:2]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_50.hpp [2:2]
+ boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_10.hpp [2:2]
+ boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_20.hpp [2:2]
+ boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_30.hpp [2:2]
+ boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_40.hpp [2:2]
+ boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_50.hpp [2:2]
+ boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_10.hpp [2:2]
+ boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_20.hpp [2:2]
+ boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_30.hpp [2:2]
+ boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_40.hpp [2:2]
+ boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_50.hpp [2:2]
+ boost/phoenix/bind/detail/member_variable.hpp [2:2]
+ boost/phoenix/core/as_actor.hpp [2:2]
+ boost/phoenix/core/detail/cpp03/function_eval.hpp [13:13]
+ boost/phoenix/core/detail/cpp03/function_eval_expr.hpp [17:18]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_eval_10.hpp [2:2]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_eval_20.hpp [2:2]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_eval_30.hpp [2:2]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_eval_40.hpp [2:2]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_eval_50.hpp [2:2]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_10.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_20.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_30.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_40.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_50.hpp [2:3]
+ boost/phoenix/core/detail/function_eval.hpp [2:3]
+ boost/phoenix/core/limits.hpp [2:2]
+ boost/phoenix/function/lazy_list.hpp [33:35]
+ boost/phoenix/function/lazy_operator.hpp [27:29]
+ boost/phoenix/function/lazy_prelude.hpp [115:117]
+ boost/phoenix/function/lazy_reuse.hpp [24:26]
+ boost/phoenix/function/lazy_signature.hpp [34:36]
+ boost/phoenix/function/lazy_smart.hpp [11:13]
+ boost/phoenix/scope/detail/local_variable.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL e375f9f33ab97263bdffba2a16e216e8
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/os/android.h at line 4, boost/predef/os/ios.h at line 4, boost/predef/platform/windows_desktop.h at line 4, boost/predef/platform/windows_phone.h at line 4, boost/predef/platform/windows_runtime.h at line 4, boost/predef/platform/windows_store.h at line 4
+ License text:
+ Copyright Rene Rivera 2015
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/predef/os/android.h [2:4]
+ boost/predef/os/ios.h [2:5]
+ boost/predef/platform/windows_desktop.h [2:5]
+ boost/predef/platform/windows_phone.h [2:5]
+ boost/predef/platform/windows_runtime.h [2:5]
+ boost/predef/platform/windows_store.h [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL e381b710b97e62e701d329d7f5fafc9a
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/parameter/aux_/is_maybe.hpp at line 3
+ License text:
+ // Copyright Daniel Wallin, David Abrahams 2010. Use, modification and
+ // distribution is subject to the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/parameter/aux_/is_maybe.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL e38d04805dcf88e6564ae734a4cd8a49
+BELONGS ya.make
+ License text:
+ // Copyright Beman Dawes 2002-2009
+ // Copyright Jan Langer 2002
+ // Copyright Dietmar Kuehl 2001
+ // Copyright Vladimir Prus 2002
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/filesystem/operations.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL e392bd367f352dd8f8162db5d1fa72e7
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/extreme_points.hpp [3:6]
+ boost/geometry/algorithms/point_on_surface.hpp [3:6]
+ boost/geometry/algorithms/remove_spikes.hpp [3:6]
+ boost/geometry/multi/algorithms/detail/extreme_points.hpp [3:6]
+ boost/geometry/multi/algorithms/remove_spikes.hpp [3:6]
+ boost/geometry/strategies/default_strategy.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL e3adff0ee350b1ce3e1bf4597996eaa2
+BELONGS ya.make
+ License text:
+ // (C) Copyright John Maddock 2007.
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/tools/detail/polynomial_horner1_10.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner1_11.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner1_12.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner1_13.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner1_14.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner1_15.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner1_16.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner1_17.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner1_18.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner1_19.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner1_2.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner1_20.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner1_3.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner1_4.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner1_5.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner1_6.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner1_7.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner1_8.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner1_9.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner2_10.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner2_11.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner2_12.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner2_13.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner2_14.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner2_15.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner2_16.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner2_17.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner2_18.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner2_19.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner2_2.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner2_20.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner2_3.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner2_4.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner2_5.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner2_6.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner2_7.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner2_8.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner2_9.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner3_10.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner3_11.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner3_12.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner3_13.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner3_14.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner3_15.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner3_16.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner3_17.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner3_18.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner3_19.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner3_2.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner3_20.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner3_3.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner3_4.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner3_5.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner3_6.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner3_7.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner3_8.hpp [1:3]
+ boost/math/tools/detail/polynomial_horner3_9.hpp [1:3]
+ boost/math/tools/detail/rational_horner1_10.hpp [1:3]
+ boost/math/tools/detail/rational_horner1_11.hpp [1:3]
+ boost/math/tools/detail/rational_horner1_12.hpp [1:3]
+ boost/math/tools/detail/rational_horner1_13.hpp [1:3]
+ boost/math/tools/detail/rational_horner1_14.hpp [1:3]
+ boost/math/tools/detail/rational_horner1_15.hpp [1:3]
+ boost/math/tools/detail/rational_horner1_16.hpp [1:3]
+ boost/math/tools/detail/rational_horner1_17.hpp [1:3]
+ boost/math/tools/detail/rational_horner1_18.hpp [1:3]
+ boost/math/tools/detail/rational_horner1_19.hpp [1:3]
+ boost/math/tools/detail/rational_horner1_2.hpp [1:3]
+ boost/math/tools/detail/rational_horner1_20.hpp [1:3]
+ boost/math/tools/detail/rational_horner1_3.hpp [1:3]
+ boost/math/tools/detail/rational_horner1_4.hpp [1:3]
+ boost/math/tools/detail/rational_horner1_5.hpp [1:3]
+ boost/math/tools/detail/rational_horner1_6.hpp [1:3]
+ boost/math/tools/detail/rational_horner1_7.hpp [1:3]
+ boost/math/tools/detail/rational_horner1_8.hpp [1:3]
+ boost/math/tools/detail/rational_horner1_9.hpp [1:3]
+ boost/math/tools/detail/rational_horner2_10.hpp [1:3]
+ boost/math/tools/detail/rational_horner2_11.hpp [1:3]
+ boost/math/tools/detail/rational_horner2_12.hpp [1:3]
+ boost/math/tools/detail/rational_horner2_13.hpp [1:3]
+ boost/math/tools/detail/rational_horner2_14.hpp [1:3]
+ boost/math/tools/detail/rational_horner2_15.hpp [1:3]
+ boost/math/tools/detail/rational_horner2_16.hpp [1:3]
+ boost/math/tools/detail/rational_horner2_17.hpp [1:3]
+ boost/math/tools/detail/rational_horner2_18.hpp [1:3]
+ boost/math/tools/detail/rational_horner2_19.hpp [1:3]
+ boost/math/tools/detail/rational_horner2_2.hpp [1:3]
+ boost/math/tools/detail/rational_horner2_20.hpp [1:3]
+ boost/math/tools/detail/rational_horner2_3.hpp [1:3]
+ boost/math/tools/detail/rational_horner2_4.hpp [1:3]
+ boost/math/tools/detail/rational_horner2_5.hpp [1:3]
+ boost/math/tools/detail/rational_horner2_6.hpp [1:3]
+ boost/math/tools/detail/rational_horner2_7.hpp [1:3]
+ boost/math/tools/detail/rational_horner2_8.hpp [1:3]
+ boost/math/tools/detail/rational_horner2_9.hpp [1:3]
+ boost/math/tools/detail/rational_horner3_10.hpp [1:3]
+ boost/math/tools/detail/rational_horner3_11.hpp [1:3]
+ boost/math/tools/detail/rational_horner3_12.hpp [1:3]
+ boost/math/tools/detail/rational_horner3_13.hpp [1:3]
+ boost/math/tools/detail/rational_horner3_14.hpp [1:3]
+ boost/math/tools/detail/rational_horner3_15.hpp [1:3]
+ boost/math/tools/detail/rational_horner3_16.hpp [1:3]
+ boost/math/tools/detail/rational_horner3_17.hpp [1:3]
+ boost/math/tools/detail/rational_horner3_18.hpp [1:3]
+ boost/math/tools/detail/rational_horner3_19.hpp [1:3]
+ boost/math/tools/detail/rational_horner3_2.hpp [1:3]
+ boost/math/tools/detail/rational_horner3_20.hpp [1:3]
+ boost/math/tools/detail/rational_horner3_3.hpp [1:3]
+ boost/math/tools/detail/rational_horner3_4.hpp [1:3]
+ boost/math/tools/detail/rational_horner3_5.hpp [1:3]
+ boost/math/tools/detail/rational_horner3_6.hpp [1:3]
+ boost/math/tools/detail/rational_horner3_7.hpp [1:3]
+ boost/math/tools/detail/rational_horner3_8.hpp [1:3]
+ boost/math/tools/detail/rational_horner3_9.hpp [1:3]
+ boost/type_traits/is_complex.hpp [1:3]
+ boost/type_traits/make_signed.hpp [2:4]
+ boost/type_traits/make_unsigned.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL e3e1028aa1cce5414c38eefd261dbb49
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/tti/detail/ddata.hpp at line 4, boost/tti/detail/dftclass.hpp at line 4, boost/tti/detail/dfunction.hpp at line 4, boost/tti/detail/dlambda.hpp at line 4, boost/tti/detail/dmetafunc.hpp at line 4, boost/tti/detail/dplaceholder.hpp at line 4, boost/tti/has_data.hpp at line 4, boost/tti/has_function.hpp at line 4
+ License text:
+ // (C) Copyright Edward Diener 2012,2013
+ // Use, modification and distribution are subject to the Boost Software License,
+ // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/tti/detail/ddata.hpp [2:4]
+ boost/tti/detail/dftclass.hpp [2:4]
+ boost/tti/detail/dfunction.hpp [2:4]
+ boost/tti/detail/dlambda.hpp [2:4]
+ boost/tti/detail/dmetafunc.hpp [2:4]
+ boost/tti/detail/dplaceholder.hpp [2:4]
+ boost/tti/has_data.hpp [2:4]
+ boost/tti/has_function.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL e41424d54e8473c39effea8f755418d2
+BELONGS ya.make
+ License text:
+ // (C) Copyright Boris Rasin and Antony Polukhin 2014-2015.
+ // Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/polymorphic_pointer_cast.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL e4625bf9a635d6b910598e4a6885eab0
+BELONGS ya.make
+ License text:
+ Copyright 2011-2013 Karsten Ahnert
+ Copyright 2011-2015 Mario Mulansky
+ Copyright 2012 Christoph Koke
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/integrate/detail/integrate_adaptive.hpp [9:11]
+ boost/numeric/odeint/integrate/detail/integrate_const.hpp [9:11]
+ boost/numeric/odeint/integrate/detail/integrate_n_steps.hpp [9:11]
+ boost/numeric/odeint/integrate/detail/integrate_times.hpp [9:11]
+ boost/numeric/odeint/stepper/adams_bashforth.hpp [10:13]
+ boost/numeric/odeint/stepper/adams_bashforth_moulton.hpp [9:11]
+ boost/numeric/odeint/stepper/adams_moulton.hpp [10:12]
+ boost/numeric/odeint/stepper/base/explicit_error_stepper_base.hpp [9:11]
+ boost/numeric/odeint/stepper/base/explicit_error_stepper_fsal_base.hpp [9:11]
+ boost/numeric/odeint/stepper/base/explicit_stepper_base.hpp [9:11]
+ boost/numeric/odeint/stepper/base/symplectic_rkn_stepper_base.hpp [9:11]
+ boost/numeric/odeint/stepper/bulirsch_stoer.hpp [12:14]
+ boost/numeric/odeint/stepper/bulirsch_stoer_dense_out.hpp [9:11]
+ boost/numeric/odeint/stepper/controlled_runge_kutta.hpp [8:10]
+ boost/numeric/odeint/stepper/dense_output_runge_kutta.hpp [10:12]
+ boost/numeric/odeint/stepper/detail/generic_rk_algorithm.hpp [9:11]
+ boost/numeric/odeint/stepper/explicit_error_generic_rk.hpp [9:11]
+ boost/numeric/odeint/stepper/explicit_generic_rk.hpp [9:11]
+ boost/numeric/odeint/stepper/implicit_euler.hpp [9:11]
+ boost/numeric/odeint/stepper/modified_midpoint.hpp [9:11]
+ boost/numeric/odeint/stepper/rosenbrock4.hpp [10:12]
+ boost/numeric/odeint/stepper/rosenbrock4_controller.hpp [9:11]
+ boost/numeric/odeint/stepper/rosenbrock4_dense_output.hpp [9:11]
+ boost/numeric/odeint/stepper/runge_kutta4_classic.hpp [9:11]
+ boost/numeric/odeint/stepper/runge_kutta_cash_karp54_classic.hpp [9:11]
+ boost/numeric/odeint/stepper/runge_kutta_dopri5.hpp [9:11]
+ boost/numeric/odeint/util/bind.hpp [9:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL e4700525f1ca13f160dcc093f20bd1d2
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/atomic/detail/caps_gcc_arm.hpp [6:10]
+ boost/atomic/detail/caps_linux_arm.hpp [6:10]
+ boost/atomic/detail/ops_linux_arm.hpp [6:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL e48b4e47d76d88b5aebcf8c8588596c0
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2014 Ian Forbed
+ // Copyright (C) 2014-2017 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/concurrent_queues/sync_priority_queue.hpp [1:2]
+ boost/thread/concurrent_queues/sync_timed_queue.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL e48b5698327b63513b38fe20f3b27554
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/platform/symbian.hpp [1:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL e48b5b59655db222047e250fd037f63e
+BELONGS ya.make
+ License text:
+ // (C) Copyright Beman Dawes 1999.
+ // (C) Copyright Jens Mauer 2001
+ // (C) Copyright John Maddock 2001
+ // Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/cstdint.hpp [3:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL e4a00a40e577089cb7fa0eea90b9aa23
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/numeric.hpp at line 8
+ License text:
+ // Copyright 2006 Thorsten Ottosen.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/range/numeric.hpp [6:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL e4b3fa7ad3fac11d4da8163314c008b6
+BELONGS ya.make
+ License text:
+ // Author: Gerald Evenden
+ // Copyright (c) 1995, Gerald Evenden
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/srs/projections/proj/aea.hpp [27:28]
+ boost/geometry/srs/projections/proj/aeqd.hpp [27:28]
+ boost/geometry/srs/projections/proj/airy.hpp [27:28]
+ boost/geometry/srs/projections/proj/aitoff.hpp [28:29]
+ boost/geometry/srs/projections/proj/nzmg.hpp [27:29]
+
+KEEP COPYRIGHT_SERVICE_LABEL e4e5cd68aeaf73ab0c3db975bca46744
+BELONGS ya.make
+ License text:
+ /* Copyright (c) 2006 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/date_time.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL e4f41bc4385b63c1a2c1762dbb10fdba
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/metaparse/v1/cpp11/impl/string_at.hpp at line 6
+ License text:
+ // Copyright Abel Sinkovics (abel@sinkovics.hu) 2016.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/metaparse/v1/cpp11/impl/string_at.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL e52d2d00c0bddf195fcd2e865710a087
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2001 Jeremy Siek, Douglas Gregor, Brian Osman
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/isomorphism.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL e5360be9eee83c576021171be4c1dcfa
+BELONGS ya.make
+ License text:
+ Copyright (c) 2013 Mateusz Loskot
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/adapted/std_array.hpp [2:4]
+ boost/fusion/adapted/std_array/detail/array_size.hpp [2:2]
+ boost/fusion/adapted/std_array/detail/begin_impl.hpp [2:4]
+ boost/fusion/adapted/std_array/detail/end_impl.hpp [2:4]
+ boost/fusion/adapted/std_array/detail/is_sequence_impl.hpp [2:4]
+ boost/fusion/adapted/std_array/detail/is_view_impl.hpp [2:4]
+ boost/fusion/adapted/std_array/detail/size_impl.hpp [2:4]
+ boost/fusion/adapted/std_array/std_array_iterator.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL e58ccf339db5d63f1209f6f67af482fe
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/docstring_options.hpp at line 3
+ License text:
+ // Copyright Ralf W. Grosse-Kunstleve 2006.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/python/docstring_options.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL e5a9ae03bc33a706044f95d904b199c9
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001-2002 Chuck Allison and Jeremy Siek
+ // Copyright (c) 2003-2004 Gennaro Prota
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/dynamic_bitset_fwd.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL e63a42a391669dbd82501fe78900f57d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/chrono/io_v1/chrono_io.hpp at line 7, boost/ratio/detail/ratio_io.hpp at line 6, boost/ratio/ratio_io.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/chrono/io_v1/chrono_io.hpp [4:7]
+ boost/ratio/detail/ratio_io.hpp [3:6]
+ boost/ratio/ratio_io.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL e660351224f73455ec6e8b19ff54015b
+BELONGS ya.make
+ License text:
+ // Copyright 2013 University of Warsaw.
+ // Authors: Piotr Wygocki
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/cycle_canceling.hpp [2:3]
+ boost/graph/detail/augment.hpp [2:3]
+ boost/graph/find_flow_cost.hpp [2:3]
+ boost/graph/successive_shortest_path_nonnegative_weights.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL e66b15bc122266f3d72955f7399d4bc0
+BELONGS libs/atomic/ya.make ya.make
+ License text:
+ * Copyright (c) 2011 Helge Bahmann
+ * Copyright (c) 2013-2014 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/atomic/detail/lockpool.hpp [6:7]
+ libs/atomic/src/lockpool.cpp [6:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL e6c06124784422b679ce63978c69cc3a
+BELONGS ya.make
+ License text:
+ * Copyright (c) 2009 Helge Bahmann
+ * Copyright (c) 2012 Tim Blechmann
+ * Copyright (c) 2013 - 2018 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/atomic/detail/bitwise_cast.hpp [6:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL e6f75bab1aaec3fbff9729d2c7fcfc9b
+BELONGS ya.make
+ License text:
+ // (C) Copyright John Maddock 2006.
+ // (C) Copyright Johan Rade 2006.
+ // (C) Copyright Paul A. Bristow 2011 (added changesign).
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/sign.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL e70dc68d7bd75089121a8ad29188eecc
+BELONGS ya.make
+ License text:
+ // (C) Copyright Darin Adler 2000
+ // (C) Copyright Beman Dawes 2006, 2009, 2014
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/endian/arithmetic.hpp [3:4]
+ boost/endian/buffers.hpp [3:4]
+ boost/spirit/home/support/detail/endian/endian.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL e772cb4d7089d9b8f7565f8b8c9f7936
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001-2002 Chuck Allison and Jeremy Siek
+ // Copyright (c) 2003-2006, 2008 Gennaro Prota
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/detail/dynamic_bitset.hpp [3:4]
+ boost/dynamic_bitset/config.hpp [3:4]
+ boost/dynamic_bitset/dynamic_bitset.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL e777cb8c0600e2a77090b952364f50e2
+BELONGS ya.make
+ License text:
+ Copyright (c) 1999-2003 Jaakko Jarvi
+ Copyright (c) 1999-2003 Jeremiah Willcock
+ Copyright (c) 2001-2011 Joel de Guzman
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/sequence/io/detail/in.hpp [2:4]
+ boost/fusion/sequence/io/detail/manip.hpp [2:4]
+ boost/fusion/sequence/io/detail/out.hpp [2:4]
+ boost/fusion/sequence/io/in.hpp [2:4]
+ boost/fusion/sequence/io/out.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL e7839fbcad9c12a3056bd593ac5607a1
+BELONGS ya.make
+ License text:
+ //! Copyright (c) 2011-2012
+ //! Brandon Kohn
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/conversion/detail/numeric_cast_traits.hpp [2:3]
+ boost/numeric/conversion/detail/numeric_cast_traits.hpp [29:30]
+ boost/numeric/conversion/detail/numeric_cast_traits.hpp [80:81]
+ boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_common.hpp [2:3]
+ boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_long_long.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL e7b0cb15f49a0534732f0753e83b9649
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/pointer_cast.hpp at line 5, boost/pointer_to_other.hpp at line 9
+ License text:
+ // (C) Copyright Ion Gaztanaga 2005.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/python/converter/registered.hpp [1:4]
- boost/python/converter/shared_ptr_from_python.hpp [1:4]
- boost/python/converter/shared_ptr_to_python.hpp [1:4]
- boost/python/detail/is_shared_ptr.hpp [1:4]
- boost/python/detail/value_is_shared_ptr.hpp [1:4]
- boost/python/numpy.hpp [1:4]
- boost/python/numpy/dtype.hpp [1:4]
- boost/python/numpy/internal.hpp [1:4]
- boost/python/numpy/invoke_matching.hpp [1:4]
- boost/python/numpy/matrix.hpp [1:4]
- boost/python/numpy/ndarray.hpp [1:4]
- boost/python/numpy/numpy_object_mgr_traits.hpp [1:4]
- boost/python/numpy/scalars.hpp [1:4]
- boost/python/numpy/ufunc.hpp [1:4]
- boost/python/object/class_metadata.hpp [1:4]
- boost/python/to_python_value.hpp [1:4]
- libs/python/src/numpy/dtype.cpp [1:4]
- libs/python/src/numpy/matrix.cpp [1:4]
- libs/python/src/numpy/ndarray.cpp [1:4]
- libs/python/src/numpy/numpy.cpp [1:4]
- libs/python/src/numpy/scalars.cpp [1:4]
- libs/python/src/numpy/ufunc.cpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL ca20b75eb2dae2abec8bb941a89db522
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/move/move.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/move/move.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL ca676dbdf976b8c423696b3ace2a200a
-BELONGS ya.make
- License text:
- // Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
- // Copyright (c) 2013 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/detail/atomic_count.hpp [13:14]
- boost/smart_ptr/detail/atomic_count_spin.hpp [7:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL ca7f81dcda042dfffe2f75e2fa3c6acc
-BELONGS ya.make
- License text:
- // (C) Copyright Antony Polukhin 2014.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/cast.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL cadd4a896c84c64078dec6563a7cf410
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic.hpp [2:14]
-
-KEEP COPYRIGHT_SERVICE_LABEL caf6818f96cbd63eb0a359a0d1dd3ac5
-BELONGS ya.make
- License text:
- // (C) Copyright Kevlin Henney and Dave Abrahams 1999.
- // (C) Copyright Boris Rasin 2014.
- // Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/conversion/detail/old_numeric_cast.hpp [3:5]
- boost/polymorphic_cast.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL cb01f383bb8952e129846d11f898f3c8
-BELONGS ya.make
- License text:
- // This file was modified by Oracle on 2013-2017.
- // Modifications copyright (c) 2013-2017, Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/disjoint/areal_areal.hpp [8:9]
- boost/geometry/algorithms/detail/disjoint/box_box.hpp [8:9]
- boost/geometry/algorithms/detail/disjoint/implementation.hpp [8:9]
- boost/geometry/algorithms/detail/disjoint/interface.hpp [8:9]
- boost/geometry/algorithms/detail/disjoint/linear_areal.hpp [8:9]
- boost/geometry/algorithms/detail/disjoint/linear_linear.hpp [8:9]
- boost/geometry/algorithms/detail/disjoint/point_box.hpp [8:9]
- boost/geometry/algorithms/detail/disjoint/point_point.hpp [8:9]
- boost/geometry/algorithms/detail/disjoint/segment_box.hpp [8:9]
- boost/geometry/algorithms/detail/intersects/implementation.hpp [7:8]
- boost/geometry/algorithms/detail/intersects/interface.hpp [7:8]
- boost/geometry/algorithms/detail/relate/point_point.hpp [5:6]
- boost/geometry/algorithms/detail/touches/implementation.hpp [8:9]
- boost/geometry/algorithms/detail/touches/interface.hpp [8:9]
- boost/geometry/algorithms/detail/within/point_in_geometry.hpp [8:9]
- boost/geometry/algorithms/dispatch/disjoint.hpp [8:9]
- boost/geometry/algorithms/intersects.hpp [7:8]
- boost/geometry/algorithms/touches.hpp [8:9]
- boost/geometry/strategies/cartesian/disjoint_segment_box.hpp [8:9]
-
-KEEP COPYRIGHT_SERVICE_LABEL cb0dc5088d9ead71cc376b520c9be516
-BELONGS ya.make
- License text:
- Author: Joachim Faulhaber
- Copyright (c) 2009-2011: Joachim Faulhaber
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/icl/impl_config.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL cb4c77138a8eb0afa37b2363d470714c
-BELONGS ya.make
- License text:
- // (C) Copyright Daniel K. O. 2005.
- // (C) Copyright Ion Gaztanaga 2007-2014
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/intrusive/avltree_algorithms.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL cba287530567f506b4683cd1a18cce1d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/detail/addressof.hpp at line 5, boost/container/detail/alloc_helpers.hpp at line 5, boost/container/detail/iterator_to_raw_pointer.hpp at line 5, boost/container/detail/minimal_char_traits_header.hpp at line 5, boost/container/detail/next_capacity.hpp at line 5, boost/container/detail/placement_new.hpp at line 7, boost/container/new_allocator.hpp at line 5, boost/interprocess/detail/nothrow.hpp at line 5, boost/interprocess/detail/simple_swap.hpp at line 7, boost/interprocess/detail/std_fwd.hpp at line 5, boost/intrusive/detail/minimal_less_equal_header.hpp at line 5, boost/intrusive/detail/minimal_pair_header.hpp at line 5, boost/move/detail/iterator_to_raw_pointer.hpp at line 5, boost/move/detail/placement_new.hpp at line 7
- License text:
- // (C) Copyright Ion Gaztanaga 2014-2015. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/container/detail/addressof.hpp [3:5]
- boost/container/detail/alloc_helpers.hpp [3:5]
- boost/container/detail/iterator_to_raw_pointer.hpp [3:5]
- boost/container/detail/minimal_char_traits_header.hpp [3:3]
- boost/container/detail/next_capacity.hpp [3:5]
- boost/container/detail/placement_new.hpp [5:7]
- boost/container/new_allocator.hpp [3:5]
- boost/interprocess/detail/nothrow.hpp [3:5]
- boost/interprocess/detail/simple_swap.hpp [5:7]
- boost/interprocess/detail/std_fwd.hpp [3:5]
- boost/intrusive/detail/minimal_less_equal_header.hpp [3:3]
- boost/intrusive/detail/minimal_pair_header.hpp [3:3]
- boost/move/detail/iterator_to_raw_pointer.hpp [3:5]
- boost/move/detail/placement_new.hpp [5:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL cc1022dd712816d11c03b1dfe171b614
-BELONGS ya.make
- License text:
- // (C) Copyright Ion Gaztanaga 2009-2013.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/container/detail/function_detector.hpp [3:3]
- boost/intrusive/detail/function_detector.hpp [3:3]
- boost/intrusive/detail/is_stateful_value_traits.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL cc1d970568793824ad7593567509ba7b
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/detail/ice_and.hpp at line 3, boost/type_traits/detail/ice_eq.hpp at line 3, boost/type_traits/detail/ice_not.hpp at line 3, boost/type_traits/detail/ice_or.hpp at line 3, boost/type_traits/detail/yes_no_type.hpp at line 4, boost/type_traits/ice.hpp at line 4
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_traits/detail/ice_and.hpp [1:1]
- boost/type_traits/detail/ice_eq.hpp [1:3]
- boost/type_traits/detail/ice_not.hpp [1:3]
- boost/type_traits/detail/ice_or.hpp [1:3]
- boost/type_traits/detail/yes_no_type.hpp [2:4]
- boost/type_traits/ice.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL cc20f3be80fcae2741d451fd54843c93
-BELONGS ya.make
- License text:
- // Copyright 2001 University of Notre Dame.
- // Copyright 2006 Trustees of Indiana University
- // Authors: Jeremy G. Siek and Douglas Gregor <dgregor@cs.indiana.edu>
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/adjacency_matrix.hpp [2:4]
- boost/graph/dll_import_export.hpp [2:4]
- boost/graph/graphviz.hpp [2:4]
- boost/graph/subgraph.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL cc7820f60bca73eee8e6e5903d73df38
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iostreams/checked_operations.hpp at line 4, boost/iostreams/compose.hpp at line 4, boost/iostreams/detail/adapter/non_blocking_adapter.hpp at line 4, boost/iostreams/detail/counted_array.hpp at line 4, boost/iostreams/detail/default_arg.hpp at line 4, boost/iostreams/detail/is_dereferenceable.hpp at line 4, boost/iostreams/detail/newline.hpp at line 4, boost/iostreams/detail/optional.hpp at line 4, boost/iostreams/detail/system_failure.hpp at line 4, boost/iostreams/filter/counter.hpp at line 4, boost/iostreams/filter/line.hpp at line 4, boost/iostreams/filter/stdio.hpp at line 4, boost/iostreams/filter/test.hpp at line 4, boost/iostreams/get.hpp at line 4, boost/iostreams/operations.hpp at line 4, boost/iostreams/put.hpp at line 4, boost/iostreams/putback.hpp at line 4, boost/iostreams/read.hpp at line 4, boost/iostreams/tee.hpp at line 4
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/iostreams/checked_operations.hpp [1:4]
- boost/iostreams/compose.hpp [1:4]
- boost/iostreams/detail/adapter/non_blocking_adapter.hpp [1:4]
- boost/iostreams/detail/counted_array.hpp [1:4]
- boost/iostreams/detail/default_arg.hpp [1:4]
- boost/iostreams/detail/is_dereferenceable.hpp [1:5]
- boost/iostreams/detail/newline.hpp [1:4]
- boost/iostreams/detail/optional.hpp [1:4]
- boost/iostreams/detail/system_failure.hpp [1:5]
- boost/iostreams/filter/counter.hpp [1:4]
- boost/iostreams/filter/line.hpp [1:4]
- boost/iostreams/filter/stdio.hpp [1:4]
- boost/iostreams/filter/test.hpp [1:4]
- boost/iostreams/get.hpp [1:4]
- boost/iostreams/operations.hpp [1:4]
- boost/iostreams/put.hpp [1:4]
- boost/iostreams/putback.hpp [1:4]
- boost/iostreams/read.hpp [1:4]
- boost/iostreams/tee.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL ccb190d60bb3bd793e2d9eb5fc91fb71
-BELONGS libs/thread/ya.make ya.make
- License text:
- // (C) Copyright 2007 Anthony Williams
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/condition.hpp [3:3]
- boost/thread/condition_variable.hpp [6:6]
- boost/thread/detail/platform.hpp [1:4]
- boost/thread/lock_algorithms.hpp [4:5]
- boost/thread/lock_guard.hpp [4:5]
- boost/thread/lock_options.hpp [4:5]
- boost/thread/lock_types.hpp [4:5]
- boost/thread/lockable_traits.hpp [4:5]
- boost/thread/locks.hpp [4:5]
- boost/thread/mutex.hpp [6:6]
- boost/thread/pthread/thread_data.hpp [6:7]
- boost/thread/recursive_mutex.hpp [6:6]
- boost/thread/shared_mutex.hpp [6:7]
- boost/thread/thread_time.hpp [3:3]
- boost/thread/win32/thread_heap_alloc.hpp [4:6]
- libs/thread/src/tss_null.cpp [1:4]
- libs/thread/src/win32/thread.cpp [4:6]
- libs/thread/src/win32/tss_pe.cpp [2:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL ccc0cb954aa88f5dd5e62b4d653c439c
-BELONGS ya.make
- License text:
- // Copyright (c) 2008, 2009 Peter Dimov
- // Copyright (c) 2018 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/atomic/detail/addressof.hpp [6:6]
- boost/atomic/detail/bitwise_fp_cast.hpp [6:6]
- boost/atomic/detail/extra_fp_operations.hpp [6:6]
- boost/atomic/detail/extra_fp_operations_fwd.hpp [6:6]
- boost/atomic/detail/extra_fp_ops_emulated.hpp [6:6]
- boost/atomic/detail/extra_fp_ops_generic.hpp [6:6]
- boost/atomic/detail/extra_ops_emulated.hpp [6:6]
- boost/atomic/detail/float_sizes.hpp [6:6]
- boost/atomic/detail/fp_operations.hpp [6:6]
- boost/atomic/detail/fp_operations_fwd.hpp [6:6]
- boost/atomic/detail/fp_ops_emulated.hpp [6:6]
- boost/atomic/detail/fp_ops_generic.hpp [6:6]
- boost/atomic/detail/integral_extend.hpp [6:6]
- boost/atomic/detail/string_ops.hpp [6:6]
- boost/atomic/detail/type_traits/is_floating_point.hpp [6:6]
- boost/atomic/detail/type_traits/is_iec559.hpp [6:6]
- boost/atomic/detail/type_traits/is_trivially_default_constructible.hpp [6:6]
- boost/memory_order.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL cce23f190bcbb33ec0fdc7d06d0dcba3
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/core/explicit_operator_bool.hpp at line 4, boost/smart_ptr/intrusive_ref_counter.hpp at line 4
- License text:
- * Copyright Andrey Semashev 2007 - 2013.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/core/explicit_operator_bool.hpp [2:4]
- boost/smart_ptr/intrusive_ref_counter.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL ccec204a78ff77e65fd8e9cfdf00f467
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/core/null_deleter.hpp at line 4
- License text:
- * Copyright Andrey Semashev 2007 - 2014.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/core/null_deleter.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL ccf1ab00327a1d96b36157c35581b7c9
-BELONGS ya.make
- License text:
- // Copyright (c) 2017 Oracle and/or its affiliates.
- // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/overlay/range_in_geometry.hpp [3:4]
- boost/geometry/algorithms/detail/relate/multi_point_geometry.hpp [3:3]
- boost/geometry/algorithms/detail/within/multi_point.hpp [3:3]
- boost/geometry/formulas/authalic_radius_sqr.hpp [3:3]
- boost/geometry/formulas/elliptic_arc_length.hpp [3:3]
- boost/geometry/formulas/mean_radius.hpp [3:3]
- boost/geometry/formulas/unit_spheroid.hpp [3:3]
- boost/geometry/strategies/cartesian/envelope_segment.hpp [3:5]
- boost/geometry/strategies/geographic/disjoint_segment_box.hpp [3:3]
- boost/geometry/strategies/geographic/envelope_segment.hpp [3:5]
- boost/geometry/strategies/geographic/point_in_poly_winding.hpp [3:4]
- boost/geometry/strategies/spherical/disjoint_segment_box.hpp [3:3]
- boost/geometry/strategies/spherical/envelope_segment.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL cd0b2f82e07b1d0a2a2fe85ab053cf51
-BELONGS ya.make
- License text:
- // This file was modified by Oracle on 2017.
- // Modifications copyright (c) 2017, Oracle and/or its affiliates.
- // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/convert.hpp [8:10]
- boost/geometry/algorithms/detail/buffer/buffer_policies.hpp [5:7]
- boost/geometry/algorithms/detail/get_left_turns.hpp [5:6]
- boost/geometry/algorithms/detail/occupation_info.hpp [5:6]
- boost/geometry/algorithms/detail/overlay/add_rings.hpp [6:7]
- boost/geometry/algorithms/detail/overlay/backtrack_check_si.hpp [5:7]
- boost/geometry/algorithms/detail/overlay/traversal_ring_creator.hpp [5:7]
- boost/geometry/algorithms/difference.hpp [5:6]
- boost/geometry/policies/compare.hpp [5:6]
- boost/geometry/srs/projection.hpp [5:7]
- boost/geometry/srs/projections/epsg.hpp [5:7]
- boost/geometry/srs/projections/exception.hpp [5:7]
- boost/geometry/srs/projections/factory.hpp [5:7]
- boost/geometry/srs/projections/impl/base_dynamic.hpp [5:7]
- boost/geometry/srs/projections/impl/base_static.hpp [5:7]
- boost/geometry/srs/projections/impl/factory_entry.hpp [5:7]
- boost/geometry/srs/projections/impl/function_overloads.hpp [5:7]
- boost/geometry/srs/projections/impl/geocent.hpp [4:6]
- boost/geometry/srs/projections/impl/pj_auth.hpp [6:8]
- boost/geometry/srs/projections/impl/pj_datums.hpp [6:8]
- boost/geometry/srs/projections/impl/pj_ellps.hpp [6:8]
- boost/geometry/srs/projections/impl/pj_fwd.hpp [6:8]
- boost/geometry/srs/projections/impl/pj_gauss.hpp [6:8]
- boost/geometry/srs/projections/impl/pj_inv.hpp [6:8]
- boost/geometry/srs/projections/impl/pj_mlfn.hpp [6:8]
- boost/geometry/srs/projections/impl/pj_msfn.hpp [6:8]
- boost/geometry/srs/projections/impl/pj_param.hpp [6:8]
- boost/geometry/srs/projections/impl/pj_phi2.hpp [6:8]
- boost/geometry/srs/projections/impl/pj_qsfn.hpp [6:8]
- boost/geometry/srs/projections/impl/pj_tsfn.hpp [6:8]
- boost/geometry/srs/projections/impl/pj_units.hpp [6:8]
- boost/geometry/srs/projections/impl/pj_zpoly1.hpp [6:8]
- boost/geometry/srs/projections/impl/projects.hpp [6:8]
- boost/geometry/srs/projections/proj/aea.hpp [9:11]
- boost/geometry/srs/projections/proj/airy.hpp [9:11]
- boost/geometry/srs/projections/proj/aitoff.hpp [9:11]
- boost/geometry/srs/projections/proj/august.hpp [9:11]
- boost/geometry/srs/projections/proj/bacon.hpp [9:11]
- boost/geometry/srs/projections/proj/bipc.hpp [9:11]
- boost/geometry/srs/projections/proj/boggs.hpp [9:11]
- boost/geometry/srs/projections/proj/bonne.hpp [9:11]
- boost/geometry/srs/projections/proj/cass.hpp [9:11]
- boost/geometry/srs/projections/proj/cea.hpp [9:11]
- boost/geometry/srs/projections/proj/chamb.hpp [9:11]
- boost/geometry/srs/projections/proj/collg.hpp [9:11]
- boost/geometry/srs/projections/proj/crast.hpp [9:11]
- boost/geometry/srs/projections/proj/denoy.hpp [9:11]
- boost/geometry/srs/projections/proj/eck1.hpp [9:11]
- boost/geometry/srs/projections/proj/eck2.hpp [9:11]
- boost/geometry/srs/projections/proj/eck3.hpp [9:11]
- boost/geometry/srs/projections/proj/eck4.hpp [9:11]
- boost/geometry/srs/projections/proj/eck5.hpp [9:11]
- boost/geometry/srs/projections/proj/eqc.hpp [9:11]
- boost/geometry/srs/projections/proj/eqdc.hpp [9:11]
- boost/geometry/srs/projections/proj/etmerc.hpp [9:11]
- boost/geometry/srs/projections/proj/fahey.hpp [9:11]
- boost/geometry/srs/projections/proj/fouc_s.hpp [9:11]
- boost/geometry/srs/projections/proj/gall.hpp [9:11]
- boost/geometry/srs/projections/proj/geocent.hpp [9:11]
- boost/geometry/srs/projections/proj/geos.hpp [9:11]
- boost/geometry/srs/projections/proj/gins8.hpp [9:11]
- boost/geometry/srs/projections/proj/gn_sinu.hpp [9:11]
- boost/geometry/srs/projections/proj/gstmerc.hpp [9:11]
- boost/geometry/srs/projections/proj/hammer.hpp [9:11]
- boost/geometry/srs/projections/proj/hatano.hpp [9:11]
- boost/geometry/srs/projections/proj/igh.hpp [9:11]
- boost/geometry/srs/projections/proj/imw_p.hpp [9:11]
- boost/geometry/srs/projections/proj/krovak.hpp [9:11]
- boost/geometry/srs/projections/proj/labrd.hpp [9:11]
- boost/geometry/srs/projections/proj/lagrng.hpp [9:11]
- boost/geometry/srs/projections/proj/larr.hpp [9:11]
- boost/geometry/srs/projections/proj/lask.hpp [9:11]
- boost/geometry/srs/projections/proj/latlong.hpp [9:11]
- boost/geometry/srs/projections/proj/lcc.hpp [9:11]
- boost/geometry/srs/projections/proj/lcca.hpp [9:11]
- boost/geometry/srs/projections/proj/loxim.hpp [9:11]
- boost/geometry/srs/projections/proj/mbt_fps.hpp [9:11]
- boost/geometry/srs/projections/proj/mbtfpp.hpp [9:11]
- boost/geometry/srs/projections/proj/mbtfpq.hpp [9:11]
- boost/geometry/srs/projections/proj/merc.hpp [9:11]
- boost/geometry/srs/projections/proj/mill.hpp [9:11]
- boost/geometry/srs/projections/proj/mod_ster.hpp [9:11]
- boost/geometry/srs/projections/proj/moll.hpp [9:11]
- boost/geometry/srs/projections/proj/natearth.hpp [9:11]
- boost/geometry/srs/projections/proj/nell.hpp [9:11]
- boost/geometry/srs/projections/proj/nell_h.hpp [9:11]
- boost/geometry/srs/projections/proj/nocol.hpp [9:11]
- boost/geometry/srs/projections/proj/nzmg.hpp [9:11]
- boost/geometry/srs/projections/proj/ocea.hpp [9:11]
- boost/geometry/srs/projections/proj/oea.hpp [9:11]
- boost/geometry/srs/projections/proj/omerc.hpp [9:11]
- boost/geometry/srs/projections/proj/poly.hpp [9:11]
- boost/geometry/srs/projections/proj/putp2.hpp [9:11]
- boost/geometry/srs/projections/proj/putp3.hpp [9:11]
- boost/geometry/srs/projections/proj/putp4p.hpp [9:11]
- boost/geometry/srs/projections/proj/putp5.hpp [9:11]
- boost/geometry/srs/projections/proj/putp6.hpp [9:11]
- boost/geometry/srs/projections/proj/qsc.hpp [9:11]
- boost/geometry/srs/projections/proj/robin.hpp [9:11]
- boost/geometry/srs/projections/proj/rouss.hpp [9:11]
- boost/geometry/srs/projections/proj/rpoly.hpp [9:11]
- boost/geometry/srs/projections/proj/sconics.hpp [9:11]
- boost/geometry/srs/projections/proj/somerc.hpp [9:11]
- boost/geometry/srs/projections/proj/sterea.hpp [9:11]
- boost/geometry/srs/projections/proj/sts.hpp [9:11]
- boost/geometry/srs/projections/proj/tcea.hpp [9:11]
- boost/geometry/srs/projections/proj/tmerc.hpp [9:11]
- boost/geometry/srs/projections/proj/tpeqd.hpp [9:11]
- boost/geometry/srs/projections/proj/urm5.hpp [9:11]
- boost/geometry/srs/projections/proj/urmfps.hpp [9:11]
- boost/geometry/srs/projections/proj/vandg.hpp [9:11]
- boost/geometry/srs/projections/proj/vandg4.hpp [9:11]
- boost/geometry/srs/projections/proj/wag2.hpp [9:11]
- boost/geometry/srs/projections/proj/wag3.hpp [9:11]
- boost/geometry/srs/projections/proj/wag7.hpp [9:11]
- boost/geometry/srs/projections/proj/wink1.hpp [9:11]
- boost/geometry/srs/projections/proj/wink2.hpp [9:11]
- boost/geometry/strategies/compare.hpp [7:8]
- boost/geometry/strategies/covered_by.hpp [7:8]
- boost/geometry/strategies/spherical/compare.hpp [5:6]
- boost/geometry/strategies/transform/srs_transformer.hpp [5:7]
- boost/geometry/strategies/within.hpp [7:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL cd1474941b42642228272cd4bfb1e677
-BELONGS ya.make
- License text:
- // Copyright (c) 2013-2014 Kyle Lutz <kyle.r.lutz@gmail.com>
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/compute/algorithm/adjacent_difference.hpp [2:2]
- boost/compute/algorithm/adjacent_find.hpp [2:2]
- boost/compute/algorithm/for_each_n.hpp [2:2]
- boost/compute/algorithm/is_sorted.hpp [2:2]
- boost/compute/allocator.hpp [2:2]
- boost/compute/allocator/buffer_allocator.hpp [2:2]
- boost/compute/allocator/pinned_allocator.hpp [2:2]
- boost/compute/async/wait.hpp [2:2]
- boost/compute/closure.hpp [2:2]
- boost/compute/container/dynamic_bitset.hpp [2:2]
- boost/compute/container/mapped_view.hpp [2:2]
- boost/compute/core.hpp [2:2]
- boost/compute/detail/duration.hpp [2:2]
- boost/compute/detail/get_object_info.hpp [2:2]
- boost/compute/detail/getenv.hpp [2:2]
- boost/compute/detail/global_static.hpp [2:2]
- boost/compute/detail/literal.hpp [2:2]
- boost/compute/detail/nvidia_compute_capability.hpp [2:2]
- boost/compute/detail/path.hpp [2:2]
- boost/compute/detail/sha1.hpp [2:2]
- boost/compute/detail/variadic_macros.hpp [2:2]
- boost/compute/detail/vendor.hpp [2:2]
- boost/compute/detail/work_size.hpp [2:2]
- boost/compute/exception/unsupported_extension_error.hpp [2:2]
- boost/compute/functional/bind.hpp [2:2]
- boost/compute/functional/hash.hpp [2:2]
- boost/compute/functional/identity.hpp [2:2]
- boost/compute/functional/popcount.hpp [2:2]
- boost/compute/interop/eigen.hpp [2:2]
- boost/compute/interop/eigen/core.hpp [2:2]
- boost/compute/interop/opencv.hpp [2:2]
- boost/compute/interop/opencv/core.hpp [2:2]
- boost/compute/interop/opencv/highgui.hpp [2:2]
- boost/compute/interop/opencv/ocl.hpp [2:2]
- boost/compute/interop/opengl.hpp [2:2]
- boost/compute/interop/opengl/acquire.hpp [2:2]
- boost/compute/interop/opengl/cl_gl.hpp [2:2]
- boost/compute/interop/opengl/cl_gl_ext.hpp [2:2]
- boost/compute/interop/opengl/context.hpp [2:2]
- boost/compute/interop/opengl/gl.hpp [2:2]
- boost/compute/interop/opengl/opengl_buffer.hpp [2:2]
- boost/compute/interop/opengl/opengl_renderbuffer.hpp [2:2]
- boost/compute/interop/opengl/opengl_texture.hpp [2:2]
- boost/compute/interop/qt.hpp [2:2]
- boost/compute/interop/qt/qimage.hpp [2:2]
- boost/compute/interop/qt/qpoint.hpp [2:2]
- boost/compute/interop/qt/qpointf.hpp [2:2]
- boost/compute/interop/qt/qtcore.hpp [2:2]
- boost/compute/interop/qt/qtgui.hpp [2:2]
- boost/compute/interop/qt/qvector.hpp [2:2]
- boost/compute/interop/vtk.hpp [2:2]
- boost/compute/interop/vtk/bounds.hpp [2:2]
- boost/compute/interop/vtk/data_array.hpp [2:2]
- boost/compute/interop/vtk/matrix4x4.hpp [2:2]
- boost/compute/interop/vtk/points.hpp [2:2]
- boost/compute/iterator/discard_iterator.hpp [2:2]
- boost/compute/lambda/get.hpp [2:2]
- boost/compute/lambda/make_pair.hpp [2:2]
- boost/compute/lambda/make_tuple.hpp [2:2]
- boost/compute/lambda/placeholder.hpp [2:2]
- boost/compute/memory.hpp [2:2]
- boost/compute/memory/local_buffer.hpp [2:2]
- boost/compute/memory/svm_ptr.hpp [2:2]
- boost/compute/pipe.hpp [2:2]
- boost/compute/random/normal_distribution.hpp [2:2]
- boost/compute/source.hpp [2:2]
- boost/compute/svm.hpp [2:2]
- boost/compute/type_traits/detail/capture_traits.hpp [2:2]
- boost/compute/type_traits/is_device_iterator.hpp [2:2]
- boost/compute/type_traits/is_fundamental.hpp [2:2]
- boost/compute/type_traits/result_of.hpp [2:2]
- boost/compute/type_traits/type_definition.hpp [2:2]
- boost/compute/types/builtin.hpp [2:2]
- boost/compute/types/fundamental.hpp [2:2]
- boost/compute/types/struct.hpp [2:2]
- boost/compute/user_event.hpp [2:2]
- boost/compute/utility.hpp [2:2]
- boost/compute/utility/dim.hpp [2:2]
- boost/compute/utility/extents.hpp [2:2]
- boost/compute/utility/program_cache.hpp [2:2]
- boost/compute/utility/source.hpp [2:2]
- boost/compute/utility/wait_list.hpp [2:2]
- boost/compute/wait_list.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL cd4c6e3cb475973fc7258930701fdb80
-BELONGS ya.make
- License text:
- * Copyright 2010 Vicente J. Botet Escriba
- * Copyright 2015 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/winapi/apc.hpp [2:3]
- boost/winapi/basic_types.hpp [2:3]
- boost/winapi/condition_variable.hpp [2:3]
- boost/winapi/critical_section.hpp [2:3]
- boost/winapi/crypt.hpp [2:3]
- boost/winapi/detail/cast_ptr.hpp [2:2]
- boost/winapi/directory_management.hpp [2:3]
- boost/winapi/dll.hpp [2:5]
- boost/winapi/error_handling.hpp [2:4]
- boost/winapi/file_management.hpp [2:5]
- boost/winapi/file_mapping.hpp [2:5]
- boost/winapi/get_current_process.hpp [2:3]
- boost/winapi/get_current_thread.hpp [2:3]
- boost/winapi/get_current_thread_id.hpp [2:3]
- boost/winapi/get_last_error.hpp [2:3]
- boost/winapi/get_thread_times.hpp [2:3]
- boost/winapi/handles.hpp [2:3]
- boost/winapi/init_once.hpp [2:3]
- boost/winapi/local_memory.hpp [2:3]
- boost/winapi/memory.hpp [2:3]
- boost/winapi/security.hpp [2:3]
- boost/winapi/semaphore.hpp [2:3]
- boost/winapi/srw_lock.hpp [2:3]
- boost/winapi/synchronization.hpp [2:3]
- boost/winapi/system.hpp [2:4]
- boost/winapi/thread.hpp [2:3]
- boost/winapi/timers.hpp [2:3]
- boost/winapi/wait.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL cd59a9b17dba1f12cc9f24d0e732702a
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/bernoulli.hpp [3:8]
- boost/math/special_functions/detail/polygamma.hpp [3:8]
- boost/math/special_functions/detail/unchecked_bernoulli.hpp [3:8]
- boost/math/special_functions/polygamma.hpp [3:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL cd8a570f75918ca6f3caece0eb324bb0
-BELONGS ya.make
- License text:
- // Copyright Aleksey Gurtovoy 2001-2006
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/list/aux_/include_preprocessed.hpp [2:2]
- boost/mpl/set/aux_/include_preprocessed.hpp [4:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL cd8edc8af825e6157a14facda49b7e5c
-BELONGS ya.make
- License text:
- // Copyright Aleksey Gurtovoy 2000-2002
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/count_if.hpp [5:5]
- boost/mpl/find.hpp [5:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL cdd68d4b0cd7f8ae4946423a38dc8906
-BELONGS ya.make
- License text:
- // (C) Copyright Ion Gaztanaga 2006-2014
- // (C) Copyright Microsoft Corporation 2014
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/intrusive/detail/mpl.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL cde0b758663026af6e7dea405ee6bf38
-BELONGS ya.make
- License text:
- // Copyright Louis Dionne 2013
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/hawick_circuits.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL cdfbce28eaa4af51d14557c79abbbb12
-BELONGS ya.make
- License text:
- Copyright 2012-2013 Andreas Angelopoulos
- Copyright 2012-2013 Karsten Ahnert
- Copyright 2012-2013 Mario Mulansky
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/external/mtl4/implicit_euler_mtl4.hpp [6:8]
- boost/numeric/odeint/external/mtl4/mtl4_resize.hpp [6:8]
- boost/numeric/odeint/iterator/adaptive_iterator.hpp [10:11]
- boost/numeric/odeint/iterator/adaptive_time_iterator.hpp [10:11]
- boost/numeric/odeint/iterator/const_step_iterator.hpp [10:11]
- boost/numeric/odeint/iterator/const_step_time_iterator.hpp [10:11]
- boost/numeric/odeint/iterator/detail/ode_iterator_base.hpp [10:11]
- boost/numeric/odeint/stepper/base/algebra_stepper_base.hpp [9:10]
- boost/numeric/odeint/stepper/runge_kutta_fehlberg78.hpp [9:10]
- boost/numeric/odeint/stepper/symplectic_rkn_sb3a_m4_mclachlan.hpp [9:10]
- boost/numeric/odeint/util/unit_helper.hpp [9:10]
- boost/numeric/odeint/util/unwrap_reference.hpp [9:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL ce101c632c87f8e9105b0f2a857b342c
-BELONGS ya.make
- License text:
- // Copyright (C) 2011-2013, 2016 Tim Blechmann
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/lockfree/detail/atomic.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL ce20686b00eb9d579c5ea2542edbbd3a
-BELONGS ya.make
- License text:
- // Copyright (c) 2008-2012 Bruno Lalande, Paris, France.
- // Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands.
- // Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/arithmetic/arithmetic.hpp [3:5]
- boost/geometry/arithmetic/cross_product.hpp [3:5]
- boost/geometry/arithmetic/determinant.hpp [3:5]
- boost/geometry/arithmetic/dot_product.hpp [3:5]
- boost/geometry/core/access.hpp [3:5]
- boost/geometry/core/coordinate_dimension.hpp [3:5]
- boost/geometry/core/coordinate_system.hpp [3:5]
- boost/geometry/core/coordinate_type.hpp [3:5]
- boost/geometry/geometries/adapted/boost_tuple.hpp [3:5]
- boost/geometry/geometries/adapted/std_pair_as_segment.hpp [3:5]
- boost/geometry/geometries/concepts/box_concept.hpp [3:5]
- boost/geometry/geometries/concepts/check.hpp [3:5]
- boost/geometry/geometries/concepts/linestring_concept.hpp [3:5]
- boost/geometry/geometries/concepts/polygon_concept.hpp [3:5]
- boost/geometry/geometries/concepts/ring_concept.hpp [3:5]
- boost/geometry/geometries/concepts/segment_concept.hpp [3:5]
- boost/geometry/srs/projection.hpp [3:3]
- boost/geometry/srs/projections/epsg.hpp [3:3]
- boost/geometry/srs/projections/epsg_traits.hpp [3:3]
- boost/geometry/srs/projections/exception.hpp [3:3]
- boost/geometry/srs/projections/factory.hpp [3:3]
- boost/geometry/srs/projections/impl/aasincos.hpp [4:4]
- boost/geometry/srs/projections/impl/adjlon.hpp [4:4]
- boost/geometry/srs/projections/impl/pj_auth.hpp [4:4]
- boost/geometry/srs/projections/impl/pj_datum_set.hpp [4:4]
- boost/geometry/srs/projections/impl/pj_datums.hpp [4:4]
- boost/geometry/srs/projections/impl/pj_ell_set.hpp [4:4]
- boost/geometry/srs/projections/impl/pj_ellps.hpp [4:4]
- boost/geometry/srs/projections/impl/pj_fwd.hpp [4:4]
- boost/geometry/srs/projections/impl/pj_gauss.hpp [4:4]
- boost/geometry/srs/projections/impl/pj_init.hpp [4:4]
- boost/geometry/srs/projections/impl/pj_inv.hpp [4:4]
- boost/geometry/srs/projections/impl/pj_mlfn.hpp [4:4]
- boost/geometry/srs/projections/impl/pj_msfn.hpp [4:4]
- boost/geometry/srs/projections/impl/pj_param.hpp [4:4]
- boost/geometry/srs/projections/impl/pj_phi2.hpp [4:4]
- boost/geometry/srs/projections/impl/pj_qsfn.hpp [4:4]
- boost/geometry/srs/projections/impl/pj_tsfn.hpp [4:4]
- boost/geometry/srs/projections/impl/pj_units.hpp [4:4]
- boost/geometry/srs/projections/impl/pj_zpoly1.hpp [4:4]
- boost/geometry/srs/projections/impl/proj_mdist.hpp [4:4]
- boost/geometry/srs/projections/impl/projects.hpp [4:4]
- boost/geometry/strategies/cartesian/distance_pythagoras.hpp [3:5]
- boost/geometry/strategies/transform/srs_transformer.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL ce7f8267f10d0d0f27e059eb588024e7
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/metaparse/accept.hpp at line 6, boost/metaparse/get_message.hpp at line 6, boost/metaparse/range.hpp at line 6, boost/metaparse/range_c.hpp at line 6, boost/metaparse/reject.hpp at line 6, boost/metaparse/util/in_range_c.hpp at line 6, boost/metaparse/v1/accept.hpp at line 6, boost/metaparse/v1/fwd/accept.hpp at line 6, boost/metaparse/v1/fwd/get_message.hpp at line 6, boost/metaparse/v1/fwd/reject.hpp at line 6, boost/metaparse/v1/get_message.hpp at line 6, boost/metaparse/v1/impl/assert_string_length.hpp at line 6, boost/metaparse/v1/impl/has_type.hpp at line 6, boost/metaparse/v1/impl/returns.hpp at line 6, boost/metaparse/v1/range.hpp at line 6, boost/metaparse/v1/range_c.hpp at line 6, boost/metaparse/v1/reject.hpp at line 6, boost/metaparse/v1/util/in_range_c.hpp at line 6
- License text:
- // Copyright Abel Sinkovics (abel@sinkovics.hu) 2014.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/metaparse/accept.hpp [4:6]
- boost/metaparse/get_message.hpp [4:6]
- boost/metaparse/range.hpp [4:6]
- boost/metaparse/range_c.hpp [4:6]
- boost/metaparse/reject.hpp [4:6]
- boost/metaparse/util/in_range_c.hpp [4:6]
- boost/metaparse/v1/accept.hpp [4:6]
- boost/metaparse/v1/fwd/accept.hpp [4:6]
- boost/metaparse/v1/fwd/get_message.hpp [4:6]
- boost/metaparse/v1/fwd/reject.hpp [4:6]
- boost/metaparse/v1/get_message.hpp [4:6]
- boost/metaparse/v1/impl/assert_string_length.hpp [4:6]
- boost/metaparse/v1/impl/has_type.hpp [4:6]
- boost/metaparse/v1/impl/returns.hpp [4:6]
- boost/metaparse/v1/range.hpp [4:6]
- boost/metaparse/v1/range_c.hpp [4:6]
- boost/metaparse/v1/reject.hpp [4:6]
- boost/metaparse/v1/util/in_range_c.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL ce8ac05cf9bf1bac069f4e120344d860
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2001-2011 Hartmut Kaiser
- Copyright (c) 2009 Francois Barel
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/repository/include/karma_nonterminal.hpp [2:5]
- boost/spirit/repository/include/karma_subrule.hpp [2:5]
- boost/spirit/repository/include/qi_nonterminal.hpp [2:5]
- boost/spirit/repository/include/qi_subrule.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL ce97343ca1928bb25180cf14d4f5b41a
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/unordered/detail/implementation.hpp at line 4, boost/unordered/unordered_map.hpp at line 5, boost/unordered/unordered_set.hpp at line 5, boost/unordered_map.hpp at line 5, boost/unordered_set.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/unordered/detail/implementation.hpp [1:2]
- boost/unordered/unordered_map.hpp [2:5]
- boost/unordered/unordered_set.hpp [2:5]
- boost/unordered_map.hpp [2:5]
- boost/unordered_set.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL ceb96d27818fc0169ccc2782fc50054b
-BELONGS ya.make
- License text:
- * Copyright 2005 Felix Höfling, Guillaume Melquiond
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/interval/detail/alpha_rounding_control.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL cebf58260049d5068e5abf459a4e867f
-BELONGS ya.make
- License text:
- // Copyright (C) 2007 Trustees of Indiana University
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpi/graph_communicator.hpp [1:1]
- boost/mpi/group.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL cec519351b68fb385bc916223bd0753a
-BELONGS ya.make
- License text:
- // Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
- // Copyright (c) 2011 Boris Schaeling (boris@highscore.de)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/asio/detail/impl/win_object_handle_service.ipp [5:6]
- boost/asio/detail/win_object_handle_service.hpp [5:6]
- boost/asio/windows/basic_object_handle.hpp [5:6]
- boost/asio/windows/object_handle.hpp [5:6]
- boost/asio/windows/object_handle_service.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL cecdd0e10d272b13f1cba1074643fb5c
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/tti/detail/dnotype.hpp at line 4, boost/tti/gen/has_member_data_gen.hpp at line 4, boost/tti/gen/has_member_function_gen.hpp at line 4, boost/tti/gen/has_static_member_data_gen.hpp at line 4, boost/tti/gen/has_static_member_function_gen.hpp at line 4, boost/tti/gen/has_template_gen.hpp at line 4, boost/tti/gen/has_type_gen.hpp at line 4, boost/tti/gen/member_type_gen.hpp at line 4, boost/tti/gen/namespace_gen.hpp at line 4, boost/tti/has_template.hpp at line 4, boost/tti/tti.hpp at line 4
- License text:
- // (C) Copyright Edward Diener 2011,2012
- // Use, modification and distribution are subject to the Boost Software License,
- // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/tti/detail/dnotype.hpp [2:4]
- boost/tti/gen/has_member_data_gen.hpp [2:4]
- boost/tti/gen/has_member_function_gen.hpp [2:4]
- boost/tti/gen/has_static_member_data_gen.hpp [2:4]
- boost/tti/gen/has_static_member_function_gen.hpp [2:4]
- boost/tti/gen/has_template_gen.hpp [2:4]
- boost/tti/gen/has_type_gen.hpp [2:4]
- boost/tti/gen/member_type_gen.hpp [2:4]
- boost/tti/gen/namespace_gen.hpp [2:4]
- boost/tti/has_template.hpp [2:4]
- boost/tti/tti.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL cedac5e193993d7d0917a56ff3e3b834
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/covariance.hpp at line 6, boost/accumulators/statistics/density.hpp at line 7, boost/accumulators/statistics/peaks_over_threshold.hpp at line 6, boost/accumulators/statistics/pot_quantile.hpp at line 6, boost/accumulators/statistics/pot_tail_mean.hpp at line 6, boost/accumulators/statistics/tail_mean.hpp at line 6, boost/accumulators/statistics/tail_quantile.hpp at line 6, boost/accumulators/statistics/tail_variate_means.hpp at line 6, boost/accumulators/statistics/weighted_covariance.hpp at line 6, boost/accumulators/statistics/weighted_density.hpp at line 6, boost/accumulators/statistics/weighted_p_square_cumul_dist.hpp at line 6, boost/accumulators/statistics/weighted_peaks_over_threshold.hpp at line 6, boost/accumulators/statistics/weighted_tail_mean.hpp at line 6, boost/accumulators/statistics/weighted_tail_quantile.hpp at line 6, boost/accumulators/statistics/weighted_tail_variate_means.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/accumulators/statistics/covariance.hpp [4:6]
- boost/accumulators/statistics/density.hpp [5:7]
- boost/accumulators/statistics/peaks_over_threshold.hpp [4:6]
- boost/accumulators/statistics/pot_quantile.hpp [4:6]
- boost/accumulators/statistics/pot_tail_mean.hpp [4:6]
- boost/accumulators/statistics/tail_mean.hpp [4:6]
- boost/accumulators/statistics/tail_quantile.hpp [4:6]
- boost/accumulators/statistics/tail_variate_means.hpp [4:6]
- boost/accumulators/statistics/weighted_covariance.hpp [4:6]
- boost/accumulators/statistics/weighted_density.hpp [4:6]
- boost/accumulators/statistics/weighted_p_square_cumul_dist.hpp [4:6]
- boost/accumulators/statistics/weighted_peaks_over_threshold.hpp [4:6]
- boost/accumulators/statistics/weighted_tail_mean.hpp [4:6]
- boost/accumulators/statistics/weighted_tail_quantile.hpp [4:6]
- boost/accumulators/statistics/weighted_tail_variate_means.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL cee063e2263d7e63a1a5f516090e8359
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2006, 2007, 2012, 2014.
- // Copyright Paul A. Bristow 2006, 2007, 2012
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL cef1ae82ac7cfc6fbbbae11befc918d0
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/allocators/detail/allocator_common.hpp at line 5, boost/interprocess/containers/allocation_type.hpp at line 5, boost/interprocess/containers/deque.hpp at line 5, boost/interprocess/containers/flat_map.hpp at line 5, boost/interprocess/containers/flat_set.hpp at line 5, boost/interprocess/containers/list.hpp at line 5, boost/interprocess/containers/map.hpp at line 5, boost/interprocess/containers/pair.hpp at line 5, boost/interprocess/containers/set.hpp at line 5, boost/interprocess/containers/slist.hpp at line 5, boost/interprocess/containers/stable_vector.hpp at line 5, boost/interprocess/containers/string.hpp at line 5, boost/interprocess/containers/vector.hpp at line 5, boost/interprocess/containers/version_type.hpp at line 5, boost/interprocess/detail/variadic_templates_tools.hpp at line 5, boost/interprocess/managed_xsi_shared_memory.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2008-2012. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/interprocess/allocators/detail/allocator_common.hpp [3:5]
- boost/interprocess/containers/allocation_type.hpp [3:5]
- boost/interprocess/containers/deque.hpp [3:5]
- boost/interprocess/containers/flat_map.hpp [3:5]
- boost/interprocess/containers/flat_set.hpp [3:5]
- boost/interprocess/containers/list.hpp [3:5]
- boost/interprocess/containers/map.hpp [3:5]
- boost/interprocess/containers/pair.hpp [3:5]
- boost/interprocess/containers/set.hpp [3:5]
- boost/interprocess/containers/slist.hpp [3:5]
- boost/interprocess/containers/stable_vector.hpp [3:5]
- boost/interprocess/containers/string.hpp [3:5]
- boost/interprocess/containers/vector.hpp [3:5]
- boost/interprocess/containers/version_type.hpp [3:5]
- boost/interprocess/detail/variadic_templates_tools.hpp [3:5]
- boost/interprocess/managed_xsi_shared_memory.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL cefbb022b3ae5f3ac530ca0a8d9e20c1
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/random/binomial_distribution.hpp at line 5, boost/random/detail/auto_link.hpp at line 5, boost/random/detail/generator_seed_seq.hpp at line 5, boost/random/discard_block.hpp at line 5, boost/random/extreme_value_distribution.hpp at line 5, boost/random/gamma_distribution.hpp at line 5, boost/random/mersenne_twister.hpp at line 5, boost/random/negative_binomial_distribution.hpp at line 5, boost/random/poisson_distribution.hpp at line 5, boost/random/seed_seq.hpp at line 5, boost/random/shuffle_order.hpp at line 5, boost/random/weibull_distribution.hpp at line 5
- License text:
- * Copyright Steven Watanabe 2010
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/random/binomial_distribution.hpp [3:5]
- boost/random/detail/auto_link.hpp [3:5]
- boost/random/detail/generator_seed_seq.hpp [3:6]
- boost/random/discard_block.hpp [3:6]
- boost/random/extreme_value_distribution.hpp [3:5]
- boost/random/gamma_distribution.hpp [3:6]
- boost/random/mersenne_twister.hpp [3:6]
- boost/random/negative_binomial_distribution.hpp [3:5]
- boost/random/poisson_distribution.hpp [3:6]
- boost/random/seed_seq.hpp [3:5]
- boost/random/shuffle_order.hpp [3:6]
- boost/random/weibull_distribution.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL cf16777a1dfdf5f4dcd957c2ccbf8ffc
-BELONGS ya.make
- License text:
- // Copyright 2008 Howard Hinnant
- // Copyright 2008 Beman Dawes
- // Copyright 2009-2011 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/chrono/duration.hpp [3:5]
- boost/chrono/system_clocks.hpp [3:5]
- boost/chrono/time_point.hpp [3:5]
- boost/ratio/detail/overflow_helpers.hpp [3:5]
- boost/ratio/ratio.hpp [3:5]
- boost/ratio/ratio_fwd.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL cf493f6fefc669355a842f7bfa617427
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/container_fwd.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2005-2014. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/container/container_fwd.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL cf501a6385edda09aa31f2586022bac5
-BELONGS ya.make
- License text:
- // Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
- // Copyright (c) 2011-2012 Bruno Lalande, Paris, France.
- // Copyright (c) 2011-2012 Mateusz Loskot, London, UK.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/util/rational.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL cf5d38de6aecb51f9114e6992bbe0c7f
-BELONGS ya.make
- License text:
- // Copyright (c) 2007-2015 Barend Gehrels, Amsterdam, the Netherlands.
- // Copyright (c) 2008-2015 Bruno Lalande, Paris, France.
- // Copyright (c) 2009-2015 Mateusz Loskot, London, UK.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/centroid.hpp [3:6]
- boost/geometry/algorithms/convex_hull.hpp [3:5]
- boost/geometry/algorithms/detail/disjoint/box_box.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/point_box.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/point_geometry.hpp [3:6]
- boost/geometry/algorithms/detail/disjoint/point_point.hpp [3:6]
- boost/geometry/algorithms/detail/envelope/box.hpp [3:5]
- boost/geometry/algorithms/detail/envelope/implementation.hpp [3:5]
- boost/geometry/algorithms/detail/envelope/interface.hpp [3:5]
- boost/geometry/algorithms/detail/envelope/linear.hpp [3:5]
- boost/geometry/algorithms/detail/envelope/point.hpp [3:5]
- boost/geometry/algorithms/detail/envelope/range.hpp [3:5]
- boost/geometry/algorithms/detail/envelope/segment.hpp [3:5]
- boost/geometry/algorithms/detail/equals/implementation.hpp [3:6]
- boost/geometry/algorithms/detail/equals/interface.hpp [3:6]
- boost/geometry/algorithms/detail/expand/box.hpp [3:6]
- boost/geometry/algorithms/detail/expand/implementation.hpp [3:6]
- boost/geometry/algorithms/detail/expand/indexed.hpp [3:6]
- boost/geometry/algorithms/detail/expand/interface.hpp [3:6]
- boost/geometry/algorithms/detail/expand/point.hpp [3:6]
- boost/geometry/algorithms/detail/expand/segment.hpp [3:6]
- boost/geometry/algorithms/detail/intersection/multi.hpp [3:3]
- boost/geometry/algorithms/detail/not.hpp [3:5]
- boost/geometry/algorithms/detail/overlaps/implementation.hpp [3:5]
- boost/geometry/algorithms/detail/overlaps/interface.hpp [3:5]
- boost/geometry/algorithms/detail/overlay/clip_linestring.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/intersection_box_box.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/intersection_insert.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/less_by_segment_ratio.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/overlay.hpp [3:4]
- boost/geometry/algorithms/detail/point_is_spike_or_equal.hpp [3:6]
- boost/geometry/algorithms/detail/relate/de9im.hpp [3:3]
- boost/geometry/algorithms/detail/relate/result.hpp [3:4]
- boost/geometry/algorithms/detail/relate/turns.hpp [3:3]
- boost/geometry/algorithms/detail/relation/interface.hpp [3:3]
- boost/geometry/algorithms/detail/sections/sectionalize.hpp [3:6]
- boost/geometry/algorithms/detail/throw_on_empty_input.hpp [3:6]
- boost/geometry/algorithms/detail/touches/implementation.hpp [3:6]
- boost/geometry/algorithms/detail/touches/interface.hpp [3:6]
- boost/geometry/algorithms/dispatch/envelope.hpp [3:5]
- boost/geometry/algorithms/dispatch/expand.hpp [3:6]
- boost/geometry/algorithms/envelope.hpp [3:5]
- boost/geometry/algorithms/equals.hpp [3:6]
- boost/geometry/algorithms/expand.hpp [3:6]
- boost/geometry/algorithms/not_implemented.hpp [3:5]
- boost/geometry/algorithms/overlaps.hpp [3:5]
- boost/geometry/algorithms/simplify.hpp [3:5]
- boost/geometry/algorithms/sym_difference.hpp [3:3]
- boost/geometry/algorithms/touches.hpp [3:6]
- boost/geometry/core/exception.hpp [3:5]
- boost/geometry/core/radian_access.hpp [3:5]
- boost/geometry/core/ring_type.hpp [3:5]
- boost/geometry/geometry.hpp [3:5]
- boost/geometry/multi/multi.hpp [3:5]
- boost/geometry/strategies/cartesian/box_in_box.hpp [3:6]
- boost/geometry/strategies/cartesian/centroid_bashein_detmer.hpp [3:5]
- boost/geometry/strategies/cartesian/point_in_box.hpp [3:5]
- boost/geometry/strategies/cartesian/side_by_triangle.hpp [3:5]
- boost/geometry/strategies/distance_result.hpp [3:7]
- boost/geometry/strategies/intersection_result.hpp [3:3]
- boost/geometry/strategies/strategy_transform.hpp [3:5]
- boost/geometry/strategies/transform/matrix_transformers.hpp [3:5]
- boost/geometry/util/compress_variant.hpp [3:5]
- boost/geometry/util/math.hpp [3:5]
- boost/geometry/util/transform_variant.hpp [3:5]
- boost/geometry/views/detail/indexed_point_view.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL cf5e56ae189ec8cdbf6a61c940073563
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/filesystem/operations.hpp at line 5, boost/filesystem/path.hpp at line 5, boost/program_options.hpp at line 3
- License text:
- // Copyright Vladimir Prus 2002.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/filesystem/operations.hpp [3:6]
- boost/filesystem/path.hpp [3:4]
- boost/program_options.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL cf7e80573064ef58d887ce45ac2987ab
-BELONGS ya.make
- License text:
- // This file was modified by Oracle on 2013, 2014, 2015.
- // Modifications copyright (c) 2013-2015 Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/relate/de9im.hpp [5:6]
- boost/geometry/algorithms/detail/relate/relate_impl.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL d008844cf3c6e538e8ef03085426c78c
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/metaparse/v1/foldr.hpp at line 6
- License text:
- // Copyright Abel Sinkovics (abel@sinkovics.hu) 2011 - 2012.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/metaparse/v1/foldr.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL d029d22004bd9ecc9a0c8c630af36231
-BELONGS ya.make
- License text:
- Copyright Paul Mensonides 2003
- Copyright Aleksey Gurtovoy 2003-2004
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/adapted/struct/detail/preprocessor/is_seq.hpp [5:6]
- boost/mpl/aux_/config/arrays.hpp [5:5]
- boost/mpl/aux_/config/operators.hpp [5:5]
- boost/mpl/aux_/config/typeof.hpp [5:5]
- boost/mpl/aux_/inserter_algorithm.hpp [5:6]
- boost/mpl/aux_/numeric_cast_utils.hpp [5:5]
- boost/mpl/aux_/order_impl.hpp [5:6]
- boost/mpl/aux_/preprocessor/is_seq.hpp [5:6]
- boost/mpl/aux_/preprocessor/token_equal.hpp [5:6]
- boost/mpl/aux_/ptr_to_ref.hpp [5:5]
- boost/mpl/back_inserter.hpp [5:6]
- boost/mpl/bitwise.hpp [5:6]
- boost/mpl/front_inserter.hpp [5:6]
- boost/mpl/has_key.hpp [5:6]
- boost/mpl/has_key_fwd.hpp [5:6]
- boost/mpl/index_of.hpp [5:6]
- boost/mpl/inserter.hpp [5:6]
- boost/mpl/iter_fold_if.hpp [5:6]
- boost/mpl/key_type.hpp [5:6]
- boost/mpl/key_type_fwd.hpp [5:6]
- boost/mpl/map/aux_/at_impl.hpp [5:6]
- boost/mpl/map/aux_/begin_end_impl.hpp [5:6]
- boost/mpl/map/aux_/clear_impl.hpp [5:6]
- boost/mpl/map/aux_/contains_impl.hpp [5:5]
- boost/mpl/map/aux_/empty_impl.hpp [5:5]
- boost/mpl/map/aux_/erase_impl.hpp [5:6]
- boost/mpl/map/aux_/erase_key_impl.hpp [5:6]
- boost/mpl/map/aux_/has_key_impl.hpp [5:6]
- boost/mpl/map/aux_/insert_impl.hpp [5:6]
- boost/mpl/map/aux_/item.hpp [5:6]
- boost/mpl/map/aux_/iterator.hpp [5:6]
- boost/mpl/map/aux_/key_type_impl.hpp [5:6]
- boost/mpl/map/aux_/map0.hpp [5:6]
- boost/mpl/map/aux_/size_impl.hpp [5:5]
- boost/mpl/map/aux_/tag.hpp [5:6]
- boost/mpl/map/aux_/value_type_impl.hpp [5:6]
- boost/mpl/map/map0.hpp [5:6]
- boost/mpl/multiset/aux_/count_impl.hpp [5:5]
- boost/mpl/multiset/aux_/insert_impl.hpp [5:5]
- boost/mpl/multiset/aux_/item.hpp [5:5]
- boost/mpl/multiset/aux_/multiset0.hpp [5:5]
- boost/mpl/multiset/aux_/tag.hpp [5:5]
- boost/mpl/multiset/multiset0.hpp [5:5]
- boost/mpl/numeric_cast.hpp [5:5]
- boost/mpl/order.hpp [5:6]
- boost/mpl/order_fwd.hpp [5:6]
- boost/mpl/set/aux_/at_impl.hpp [5:5]
- boost/mpl/set/aux_/clear_impl.hpp [5:6]
- boost/mpl/set/aux_/empty_impl.hpp [5:5]
- boost/mpl/set/aux_/erase_impl.hpp [5:6]
- boost/mpl/set/aux_/has_key_impl.hpp [5:6]
- boost/mpl/set/aux_/key_type_impl.hpp [5:6]
- boost/mpl/set/aux_/set0.hpp [5:6]
- boost/mpl/set/aux_/size_impl.hpp [5:5]
- boost/mpl/set/aux_/tag.hpp [5:6]
- boost/mpl/set/aux_/value_type_impl.hpp [5:6]
- boost/mpl/set/set0.hpp [5:6]
- boost/mpl/set/set0_c.hpp [5:6]
- boost/mpl/switch.hpp [5:5]
- boost/mpl/value_type.hpp [5:6]
- boost/mpl/value_type_fwd.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL d077f78d89db735c5477f98382d3f111
-BELONGS ya.make
- License text:
- // Copyright (c) 2015 Jakub Pola <jakub.pola@gmail.com>
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/compute/algorithm/scatter_if.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL d08b64268e9bf8233011a58377066d90
-BELONGS libs/context/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/context/detail/apply.hpp at line 4, boost/context/detail/config.hpp at line 4, boost/context/detail/disable_overload.hpp at line 4, boost/context/detail/exception.hpp at line 4, boost/context/detail/exchange.hpp at line 4, boost/context/detail/externc.hpp at line 4, boost/context/detail/index_sequence.hpp at line 4, boost/context/detail/invoke.hpp at line 4, boost/context/detail/tuple.hpp at line 4, boost/context/execution_context.hpp at line 4, boost/context/execution_context_v1.hpp at line 4, boost/context/execution_context_v2.hpp at line 4, boost/context/execution_context_v2_void.ipp at line 4, boost/context/fixedsize_stack.hpp at line 4, boost/context/flags.hpp at line 4, boost/context/pooled_fixedsize_stack.hpp at line 4, boost/context/posix/protected_fixedsize_stack.hpp at line 4, boost/context/posix/segmented_stack.hpp at line 4, boost/context/preallocated.hpp at line 4, boost/context/protected_fixedsize_stack.hpp at line 4, boost/context/segmented_stack.hpp at line 4, boost/context/stack_context.hpp at line 4, boost/context/stack_traits.hpp at line 4, boost/context/windows/protected_fixedsize_stack.hpp at line 4, boost/coroutine2/all.hpp at line 4, boost/coroutine2/coroutine.hpp at line 4, boost/coroutine2/detail/config.hpp at line 4, boost/coroutine2/detail/coroutine.hpp at line 4, boost/coroutine2/detail/create_control_block.ipp at line 4, boost/coroutine2/detail/decay_copy.hpp at line 4, boost/coroutine2/detail/disable_overload.hpp at line 4, boost/coroutine2/detail/forced_unwind.hpp at line 4, boost/coroutine2/detail/pull_coroutine.hpp at line 4, boost/coroutine2/detail/pull_coroutine.ipp at line 4, boost/coroutine2/detail/push_control_block_cc.hpp at line 4, boost/coroutine2/detail/push_control_block_cc.ipp at line 4, boost/coroutine2/detail/push_coroutine.hpp at line 4, boost/coroutine2/detail/push_coroutine.ipp at line 4, boost/coroutine2/detail/state.hpp at line 4, boost/coroutine2/detail/wrap.hpp at line 4, boost/coroutine2/fixedsize_stack.hpp at line 4, boost/coroutine2/pooled_fixedsize_stack.hpp at line 4, boost/coroutine2/protected_fixedsize_stack.hpp at line 4, boost/coroutine2/segmented_stack.hpp at line 4, boost/fiber/detail/decay_copy.hpp at line 4, boost/fiber/detail/disable_overload.hpp at line 4, boost/fiber/fixedsize_stack.hpp at line 4, boost/fiber/pooled_fixedsize_stack.hpp at line 4, boost/fiber/protected_fixedsize_stack.hpp at line 4, boost/fiber/segmented_stack.hpp at line 4, libs/context/src/posix/stack_traits.cpp at line 4, libs/context/src/windows/stack_traits.cpp at line 4
- License text:
- // Copyright Oliver Kowalke 2014.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/context/detail/apply.hpp [2:4]
- boost/context/detail/config.hpp [2:4]
- boost/context/detail/disable_overload.hpp [2:4]
- boost/context/detail/exception.hpp [2:4]
- boost/context/detail/exchange.hpp [2:4]
- boost/context/detail/externc.hpp [2:4]
- boost/context/detail/index_sequence.hpp [2:4]
- boost/context/detail/invoke.hpp [2:4]
- boost/context/detail/tuple.hpp [2:4]
- boost/context/execution_context.hpp [2:4]
- boost/context/execution_context_v1.hpp [2:4]
- boost/context/execution_context_v2.hpp [2:4]
- boost/context/execution_context_v2_void.ipp [2:4]
- boost/context/fixedsize_stack.hpp [2:4]
- boost/context/flags.hpp [2:4]
- boost/context/pooled_fixedsize_stack.hpp [2:4]
- boost/context/posix/protected_fixedsize_stack.hpp [2:4]
- boost/context/posix/segmented_stack.hpp [2:4]
- boost/context/preallocated.hpp [2:4]
- boost/context/protected_fixedsize_stack.hpp [2:4]
- boost/context/segmented_stack.hpp [2:4]
- boost/context/stack_context.hpp [2:4]
- boost/context/stack_traits.hpp [2:4]
- boost/context/windows/protected_fixedsize_stack.hpp [2:4]
- boost/coroutine2/all.hpp [2:4]
- boost/coroutine2/coroutine.hpp [2:4]
- boost/coroutine2/detail/config.hpp [2:4]
- boost/coroutine2/detail/coroutine.hpp [2:4]
- boost/coroutine2/detail/create_control_block.ipp [2:4]
- boost/coroutine2/detail/decay_copy.hpp [2:4]
- boost/coroutine2/detail/disable_overload.hpp [2:4]
- boost/coroutine2/detail/forced_unwind.hpp [2:4]
- boost/coroutine2/detail/pull_coroutine.hpp [2:4]
- boost/coroutine2/detail/pull_coroutine.ipp [2:4]
- boost/coroutine2/detail/push_control_block_cc.hpp [2:4]
- boost/coroutine2/detail/push_control_block_cc.ipp [2:4]
- boost/coroutine2/detail/push_coroutine.hpp [2:4]
- boost/coroutine2/detail/push_coroutine.ipp [2:4]
- boost/coroutine2/detail/state.hpp [2:4]
- boost/coroutine2/detail/wrap.hpp [2:4]
- boost/coroutine2/fixedsize_stack.hpp [2:4]
- boost/coroutine2/pooled_fixedsize_stack.hpp [2:4]
- boost/coroutine2/protected_fixedsize_stack.hpp [2:4]
- boost/coroutine2/segmented_stack.hpp [2:4]
- boost/fiber/detail/decay_copy.hpp [2:4]
- boost/fiber/detail/disable_overload.hpp [2:4]
- boost/fiber/fixedsize_stack.hpp [2:4]
- boost/fiber/pooled_fixedsize_stack.hpp [2:4]
- boost/fiber/protected_fixedsize_stack.hpp [2:4]
- boost/fiber/segmented_stack.hpp [2:4]
- libs/context/src/posix/stack_traits.cpp [2:4]
- libs/context/src/windows/stack_traits.cpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL d08ee88acc4c1b352aea89d4523daace
-BELONGS ya.make
- License text:
- // Copyright 2009, Andrew Sutton
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/graph_concepts.hpp [6:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL d0a2ba3c20953d96004719528e4b7464
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/detail/defaults_def.hpp at line 5, boost/python/detail/defaults_gen.hpp at line 5, boost/python/init.hpp at line 5, boost/python/signature.hpp at line 5
- License text:
- // Copyright David Abrahams 2002, Joel de Guzman, 2002.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/python/detail/defaults_def.hpp [3:5]
- boost/python/detail/defaults_gen.hpp [3:5]
- boost/python/init.hpp [3:5]
- boost/python/signature.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL d0b7b4d9414b744a276dde50efc26987
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2017.
- // Copyright Nick Thompson 2017.
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/quadrature/gauss_kronrod.hpp [1:4]
- boost/math/special_functions/legendre_stieltjes.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL d0be2d8de4aedec01573af923ce64bf0
-BELONGS ya.make
- License text:
- // (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
- // Howard Hinnant and John Maddock 2000, 2010.
- // (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 2001
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_traits/is_reference.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL d0df6b231fc0d50a4fbb01672c996b9d
-BELONGS ya.make
- License text:
- // Copyright (C) 2008-2013 Tim Blechmann
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/lockfree/queue.hpp [5:5]
- boost/lockfree/stack.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL d13138d28bff8572a5d27fe6a28aab70
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/errors.hpp at line 16
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/interprocess/errors.hpp [13:16]
-
-KEEP COPYRIGHT_SERVICE_LABEL d1539939d3ea353afc27eefdf3b67a31
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/typeof/register_fundamental.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL d1621c6c21ccfd4947a100ffad23e459
-BELONGS ya.make
- License text:
- // Copyright (C) 2014 Glen Joseph Fernandes
- // glenfe at live dot com
- // Copyright (C) 2014 Agustin Berge
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/core/ref.hpp [21:23]
- boost/spirit/home/x3/support/traits/is_parser.hpp [2:3]
- boost/type_traits/is_final.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL d166aaec24788ba33ec179aaaedaf93d
-BELONGS ya.make
- License text:
- // Copyright (c) 2000-2010
- // Joerg Walter, Mathias Koch, Gunter Winkler, David Bellot
- // Copyright (c) 2014, Athanasios Iliopoulos
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/ublas/matrix.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL d1819f46d6f27ddacf021ceff86b106f
-BELONGS ya.make
- License text:
- // (C) Copyright Gennaro Prota 2003.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/non_type.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL d1ac3c25c828d7ba6c559ef23e5e88a1
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/platform/vxworks.hpp [1:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL d1e593bd85d0eb5a452ed45663a23154
-BELONGS ya.make
- License text:
- // (C) Copyright Beman Dawes 1999.
- // (C) Copyright Jens Mauer 2001
- // (C) Copyright John Maddock 2001
- // Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/cstdint.hpp [3:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL d1e7f9bd90cf97484f0926c3d9377996
-BELONGS libs/program_options/ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: libs/program_options/src/split.cpp at line 3
- License text:
- // Copyright Sascha Ochsenknecht 2009.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- libs/program_options/src/split.cpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL d1eeae51f362a32140f64b39499ca9bf
-BELONGS libs/context/ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: libs/context/src/asm/jump_i386_ms_pe_gas.asm at line 5, libs/context/src/asm/jump_x86_64_ms_pe_gas.asm at line 5, libs/context/src/asm/make_i386_ms_pe_gas.asm at line 5, libs/context/src/asm/make_x86_64_ms_pe_gas.asm at line 5, libs/context/src/asm/ontop_i386_ms_pe_gas.asm at line 5, libs/context/src/asm/ontop_x86_64_ms_pe_gas.asm at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- libs/context/src/asm/jump_i386_ms_pe_gas.asm [2:5]
- libs/context/src/asm/jump_x86_64_ms_pe_gas.asm [2:5]
- libs/context/src/asm/make_i386_ms_pe_gas.asm [2:5]
- libs/context/src/asm/make_x86_64_ms_pe_gas.asm [2:5]
- libs/context/src/asm/ontop_i386_ms_pe_gas.asm [2:5]
- libs/context/src/asm/ontop_x86_64_ms_pe_gas.asm [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL d2d6569dd19f792f7541651756026c28
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/utility.hpp [2:9]
- boost/spirit/home/classic/utility/loops.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL d2ee995cb5903575db47d47b28186882
-BELONGS ya.make
- License text:
- Copyright (c) 2009-2009: Joachim Faulhaber
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/icl/detail/concept_check.hpp [2:2]
- boost/icl/detail/element_iterator.hpp [2:2]
- boost/icl/detail/mapped_reference.hpp [2:2]
- boost/icl/detail/relation_state.hpp [2:3]
- boost/icl/iterator.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL d2f73b81273d8de95d251814749aa165
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/ptr_container/ptr_container.hpp at line 6
- License text:
- // Copyright Thorsten Ottosen 2003-2008. Use, modification and
- // distribution is subject to the Boost Software License, Version
- // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/ptr_container/ptr_container.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL d2fc4a5805963e793129ad966a663afb
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/polygon/detail/voronoi_ctypes.hpp at line 5, boost/polygon/detail/voronoi_predicates.hpp at line 5, boost/polygon/detail/voronoi_robust_fpt.hpp at line 5, boost/polygon/detail/voronoi_structures.hpp at line 5, boost/polygon/voronoi.hpp at line 5, boost/polygon/voronoi_builder.hpp at line 5, boost/polygon/voronoi_diagram.hpp at line 5, boost/polygon/voronoi_geometry_type.hpp at line 5
- License text:
- // Copyright Andrii Sydorchuk 2010-2012.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/polygon/detail/voronoi_ctypes.hpp [3:5]
- boost/polygon/detail/voronoi_predicates.hpp [3:5]
- boost/polygon/detail/voronoi_robust_fpt.hpp [3:5]
- boost/polygon/detail/voronoi_structures.hpp [3:5]
- boost/polygon/voronoi.hpp [3:5]
- boost/polygon/voronoi_builder.hpp [3:5]
- boost/polygon/voronoi_diagram.hpp [3:5]
- boost/polygon/voronoi_geometry_type.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL d33733b6812586c20c76107355a1b34c
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2017 Kohei Takahashi
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/container/vector/detail/cpp03/vector.hpp [2:3]
- boost/fusion/include/std_array.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL d34a9a3fbfc60fa896c038960d122b12
-BELONGS ya.make
- License text:
- // Copyright (c) 2009-2016 Vladimir Batov.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/convert.hpp [3:3]
- boost/convert/base.hpp [1:3]
- boost/convert/detail/boost_parameter_ext.hpp [1:3]
- boost/convert/detail/char.hpp [1:3]
- boost/convert/detail/config.hpp [1:3]
- boost/convert/detail/has_member.hpp [1:3]
- boost/convert/detail/is_callable.hpp [1:3]
- boost/convert/detail/is_converter.hpp [1:3]
- boost/convert/detail/is_fun.hpp [1:3]
- boost/convert/detail/is_string.hpp [1:3]
- boost/convert/detail/range.hpp [1:3]
- boost/convert/lexical_cast.hpp [1:3]
- boost/convert/parameters.hpp [1:3]
- boost/convert/printf.hpp [1:3]
- boost/convert/spirit.hpp [1:3]
- boost/convert/stream.hpp [1:3]
- boost/convert/strtol.hpp [1:3]
- boost/make_default.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL d350900b2e39e132319537297cfbe520
-BELONGS ya.make
- License text:
- // (C) Copyright Ion Gaztanaga 2006-2015
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/intrusive/hashtable.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL d352bc8699bf942eeba5c2df746a55f4
-BELONGS ya.make
- License text:
- // Copyright (c) 2014-2018, Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/is_valid/interface.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL d39b002100b0e8167c07ba134cd22ec6
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/flyweight/detail/is_placeholder_expr.hpp at line 3, boost/flyweight/detail/nested_xxx_if_not_ph.hpp at line 3, boost/flyweight/set_factory.hpp at line 3, boost/flyweight/static_holder.hpp at line 3
- License text:
- /* Copyright 2006-2009 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/flyweight/detail/is_placeholder_expr.hpp [1:3]
- boost/flyweight/detail/nested_xxx_if_not_ph.hpp [1:3]
- boost/flyweight/set_factory.hpp [1:3]
- boost/flyweight/static_holder.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL d3e56c8e29d98a9f5feed4a5b99585ad
-BELONGS ya.make
- License text:
- // Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/index/adaptors/query.hpp [5:5]
- boost/geometry/index/detail/algorithms/diff_abs.hpp [5:5]
- boost/geometry/index/detail/algorithms/smallest_for_indexable.hpp [5:5]
- boost/geometry/index/detail/algorithms/sum_for_indexable.hpp [5:5]
- boost/geometry/index/detail/algorithms/union_content.hpp [5:6]
- boost/geometry/index/detail/config_begin.hpp [3:3]
- boost/geometry/index/detail/config_end.hpp [3:3]
- boost/geometry/index/detail/meta.hpp [3:3]
- boost/geometry/index/detail/rtree/adaptors.hpp [5:5]
- boost/geometry/index/detail/rtree/kmeans/kmeans.hpp [5:5]
- boost/geometry/index/detail/rtree/kmeans/split.hpp [5:5]
- boost/geometry/index/detail/rtree/linear/linear.hpp [5:5]
- boost/geometry/index/detail/rtree/node/concept.hpp [5:5]
- boost/geometry/index/detail/rtree/node/pairs.hpp [5:5]
- boost/geometry/index/detail/rtree/quadratic/quadratic.hpp [5:5]
- boost/geometry/index/detail/rtree/rstar/rstar.hpp [5:5]
- boost/geometry/index/detail/rtree/utilities/are_levels_ok.hpp [5:5]
- boost/geometry/index/detail/rtree/utilities/gl_draw.hpp [5:5]
- boost/geometry/index/detail/rtree/utilities/print.hpp [5:5]
- boost/geometry/index/detail/rtree/utilities/statistics.hpp [5:6]
- boost/geometry/index/detail/rtree/utilities/view.hpp [5:5]
- boost/geometry/index/detail/tags.hpp [5:5]
- boost/geometry/index/detail/translator.hpp [3:3]
- boost/geometry/index/detail/tuples.hpp [3:3]
- boost/geometry/index/detail/utilities.hpp [3:3]
- boost/geometry/index/distance_predicates.hpp [5:5]
- boost/geometry/index/inserter.hpp [5:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL d3f7a028120af640b01efe1aa0ac7ac2
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/poly_collection/detail/any_iterator.hpp at line 3, boost/poly_collection/detail/auto_iterator.hpp at line 3, boost/poly_collection/detail/callable_wrapper_iterator.hpp at line 3, boost/poly_collection/detail/integer_sequence.hpp at line 3, boost/poly_collection/function_collection_fwd.hpp at line 3
- License text:
- /* Copyright 2016 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/poly_collection/detail/any_iterator.hpp [1:3]
- boost/poly_collection/detail/auto_iterator.hpp [1:3]
- boost/poly_collection/detail/callable_wrapper_iterator.hpp [1:3]
- boost/poly_collection/detail/integer_sequence.hpp [1:3]
- boost/poly_collection/function_collection_fwd.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL d3fbabf96f022c1b21e5ea1626e363ac
-BELONGS ya.make
- License text:
- // Copyright (c) 2012-2014 Barend Gehrels, Amsterdam, the Netherlands.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/buffer/buffer_inserter.hpp [3:3]
- boost/geometry/algorithms/detail/buffer/buffer_policies.hpp [3:3]
- boost/geometry/algorithms/detail/buffer/buffered_piece_collection.hpp [3:4]
- boost/geometry/algorithms/detail/buffer/get_piece_turns.hpp [3:4]
- boost/geometry/algorithms/detail/buffer/line_line_intersection.hpp [3:3]
- boost/geometry/algorithms/detail/buffer/parallel_continue.hpp [3:3]
- boost/geometry/algorithms/detail/buffer/turn_in_piece_visitor.hpp [3:4]
- boost/geometry/algorithms/detail/get_left_turns.hpp [3:3]
- boost/geometry/algorithms/detail/occupation_info.hpp [3:3]
- boost/geometry/multi/algorithms/disjoint.hpp [3:5]
- boost/geometry/strategies/agnostic/buffer_distance_asymmetric.hpp [3:3]
- boost/geometry/strategies/agnostic/buffer_distance_symmetric.hpp [3:3]
- boost/geometry/strategies/buffer.hpp [3:3]
- boost/geometry/strategies/cartesian/buffer_end_flat.hpp [3:3]
- boost/geometry/strategies/cartesian/buffer_join_miter.hpp [3:3]
- boost/geometry/strategies/cartesian/buffer_join_round_by_divide.hpp [3:3]
- boost/geometry/strategies/cartesian/buffer_point_square.hpp [2:4]
- boost/geometry/strategies/cartesian/buffer_side_straight.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL d4340d0d736b54981d79b03c9fdb5dd0
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2013 Joel de Guzman
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/algorithm/auxiliary/move.hpp [2:2]
- boost/fusion/container/generation/deque_tie.hpp [2:2]
- boost/fusion/container/generation/make_deque.hpp [2:2]
- boost/fusion/container/generation/make_map.hpp [2:2]
- boost/fusion/container/generation/map_tie.hpp [2:2]
- boost/fusion/container/map/detail/at_impl.hpp [2:2]
- boost/fusion/container/map/detail/at_key_impl.hpp [2:2]
- boost/fusion/container/map/detail/value_at_impl.hpp [2:2]
- boost/fusion/container/map/detail/value_at_key_impl.hpp [2:2]
- boost/fusion/include/move.hpp [2:2]
- boost/spirit/home/x3.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL d44a7af240f3d7a5737ce860f09d57dc
-BELONGS ya.make
- License text:
- // Copyright (c) 2015 Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/relation/implementation.hpp [3:3]
- boost/geometry/algorithms/relate.hpp [3:3]
- boost/geometry/algorithms/relation.hpp [3:3]
- boost/geometry/core/assert.hpp [3:6]
- boost/geometry/util/condition.hpp [3:3]
- boost/geometry/util/has_infinite_coordinate.hpp [3:3]
- boost/geometry/util/has_nan_coordinate.hpp [3:3]
- boost/geometry/util/has_non_finite_coordinate.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL d4cc8d0ff6a85a6cd36e6baa01a74613
-BELONGS ya.make
- License text:
- // Copyright 2014-2015 Renato Tegon Forti, Antony Polukhin.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/dll/detail/posix/path_from_handle.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL d4d3b84605f6db76e76a70a7f3101696
-BELONGS ya.make
- License text:
- // (C) Copyright 2012 Vicente Botet
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/lock_concepts.hpp [1:1]
- boost/thread/lockable_concepts.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL d5560a9b5388fcb00fcee11320a6d25a
-BELONGS ya.make
- License text:
- Copyright 2018 Glen Joseph Fernandes
- (glenjofe@gmail.com)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/core/empty_value.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL d59fc852d5689f688dbbd0404c839c4e
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/concepts/mp_number_archetypes.hpp at line 4, boost/multiprecision/cpp_int.hpp at line 4, boost/multiprecision/cpp_int/add.hpp at line 4, boost/multiprecision/cpp_int/bitwise.hpp at line 4, boost/multiprecision/cpp_int/checked.hpp at line 4, boost/multiprecision/cpp_int/comparison.hpp at line 4, boost/multiprecision/cpp_int/cpp_int_config.hpp at line 4, boost/multiprecision/cpp_int/divide.hpp at line 4, boost/multiprecision/cpp_int/limits.hpp at line 4, boost/multiprecision/cpp_int/misc.hpp at line 4, boost/multiprecision/cpp_int/multiply.hpp at line 4, boost/multiprecision/debug_adaptor.hpp at line 4, boost/multiprecision/detail/digits.hpp at line 4, boost/multiprecision/detail/dynamic_array.hpp at line 4, boost/multiprecision/detail/integer_ops.hpp at line 4, boost/multiprecision/detail/no_et_ops.hpp at line 4, boost/multiprecision/detail/number_compare.hpp at line 4, boost/multiprecision/detail/rebind.hpp at line 4, boost/multiprecision/detail/utype_helper.hpp at line 4, boost/multiprecision/integer.hpp at line 4, boost/multiprecision/logged_adaptor.hpp at line 4, boost/multiprecision/miller_rabin.hpp at line 4, boost/multiprecision/random.hpp at line 4, boost/multiprecision/traits/explicit_conversion.hpp at line 4, boost/multiprecision/traits/extract_exponent_type.hpp at line 4, boost/multiprecision/traits/is_restricted_conversion.hpp at line 4
- License text:
- // Copyright 2012 John Maddock. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/multiprecision/concepts/mp_number_archetypes.hpp [2:4]
- boost/multiprecision/cpp_int.hpp [2:4]
- boost/multiprecision/cpp_int/add.hpp [2:4]
- boost/multiprecision/cpp_int/bitwise.hpp [2:4]
- boost/multiprecision/cpp_int/checked.hpp [2:4]
- boost/multiprecision/cpp_int/comparison.hpp [2:4]
- boost/multiprecision/cpp_int/cpp_int_config.hpp [2:4]
- boost/multiprecision/cpp_int/divide.hpp [2:4]
- boost/multiprecision/cpp_int/limits.hpp [2:4]
- boost/multiprecision/cpp_int/misc.hpp [2:4]
- boost/multiprecision/cpp_int/multiply.hpp [2:4]
- boost/multiprecision/debug_adaptor.hpp [2:4]
- boost/multiprecision/detail/digits.hpp [2:4]
- boost/multiprecision/detail/dynamic_array.hpp [2:5]
- boost/multiprecision/detail/integer_ops.hpp [2:4]
- boost/multiprecision/detail/no_et_ops.hpp [2:4]
- boost/multiprecision/detail/number_compare.hpp [2:4]
- boost/multiprecision/detail/rebind.hpp [2:5]
- boost/multiprecision/detail/utype_helper.hpp [2:5]
- boost/multiprecision/integer.hpp [2:4]
- boost/multiprecision/logged_adaptor.hpp [2:4]
- boost/multiprecision/miller_rabin.hpp [2:4]
- boost/multiprecision/random.hpp [2:6]
- boost/multiprecision/traits/explicit_conversion.hpp [2:5]
- boost/multiprecision/traits/extract_exponent_type.hpp [2:4]
- boost/multiprecision/traits/is_restricted_conversion.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL d5a8bd6fe5b77ae660806951d65c6d09
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/msm/mpl_graph/adjacency_list_graph.hpp at line 3, boost/msm/mpl_graph/breadth_first_search.hpp at line 3, boost/msm/mpl_graph/depth_first_search.hpp at line 3, boost/msm/mpl_graph/detail/adjacency_list_graph.ipp at line 3, boost/msm/mpl_graph/detail/graph_implementation_interface.ipp at line 3, boost/msm/mpl_graph/detail/incidence_list_graph.ipp at line 3, boost/msm/mpl_graph/incidence_list_graph.hpp at line 3, boost/msm/mpl_graph/mpl_graph.hpp at line 3, boost/msm/mpl_graph/mpl_utils.hpp at line 3, boost/msm/mpl_graph/search_colors.hpp at line 3
- License text:
- // Copyright 2008-2010 Gordon Woodhull
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/msm/mpl_graph/adjacency_list_graph.hpp [1:3]
- boost/msm/mpl_graph/breadth_first_search.hpp [1:3]
- boost/msm/mpl_graph/depth_first_search.hpp [1:3]
- boost/msm/mpl_graph/detail/adjacency_list_graph.ipp [1:3]
- boost/msm/mpl_graph/detail/graph_implementation_interface.ipp [1:3]
- boost/msm/mpl_graph/detail/incidence_list_graph.ipp [1:3]
- boost/msm/mpl_graph/incidence_list_graph.hpp [1:3]
- boost/msm/mpl_graph/mpl_graph.hpp [1:3]
- boost/msm/mpl_graph/mpl_utils.hpp [1:3]
- boost/msm/mpl_graph/search_colors.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL d60703bc7febb0860dcd48b70a594212
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/p_square_cumul_dist.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/accumulators/statistics/p_square_cumul_dist.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL d63fdf414caaa23ffde811fd7c826e92
-BELONGS ya.make
- License text:
- // (C) Copyright 2005-7 Anthony Williams
- // (C) Copyright 2005 John Maddock
- // (C) Copyright 2011-2013 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/win32/once.hpp [6:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL d663678a9bb1e4b6f410ded7c0853610
-BELONGS ya.make
- License text:
- // Copyright (c) 2014 Glen Joseph Fernandes
- // glenfe at live dot com
- // Copyright (c) 2014 Riccardo Marcangelo
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/dynamic_bitset/dynamic_bitset.hpp [7:9]
-
-KEEP COPYRIGHT_SERVICE_LABEL d6c2647ffc3e2dcd7ddff5aa0c37c678
-BELONGS ya.make
- License text:
- // Copyright (c) 2003 Eric Friedman, Itay Maman
- // Copyright (c) 2014 Antony Polukhin
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/variant/detail/apply_visitor_unary.hpp [6:7]
- boost/variant/get.hpp [6:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL d6c9133530a2ec1b94a5d854024c3bd8
-BELONGS libs/python/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/numpy.hpp at line 4, boost/python/numpy/dtype.hpp at line 4, boost/python/numpy/internal.hpp at line 4, boost/python/numpy/invoke_matching.hpp at line 4, boost/python/numpy/matrix.hpp at line 4, boost/python/numpy/ndarray.hpp at line 4, boost/python/numpy/numpy_object_mgr_traits.hpp at line 4, boost/python/numpy/scalars.hpp at line 4, boost/python/numpy/ufunc.hpp at line 4, libs/python/src/numpy/dtype.cpp at line 4, libs/python/src/numpy/matrix.cpp at line 4, libs/python/src/numpy/ndarray.cpp at line 4, libs/python/src/numpy/numpy.cpp at line 4, libs/python/src/numpy/scalars.cpp at line 4, libs/python/src/numpy/ufunc.cpp at line 4
- License text:
- // Copyright Jim Bosch 2010-2012.
- // Copyright Stefan Seefeld 2016.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/pointer_cast.hpp [3:5]
+ boost/pointer_to_other.hpp [7:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL e7d0db279089836ea6f07df6e7203678
+BELONGS ya.make
+ License text:
+ * Copyright 2015 Klemens Morgenstern
+ * Copyright 2016 Jorge Lodos
+ * Copyright 2016 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/winapi/dbghelp.hpp [2:4]
+ boost/winapi/error_handling.hpp [2:4]
+ boost/winapi/file_management.hpp [2:5]
+ boost/winapi/file_mapping.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL e7ec39c5081e21fd01abce1315e1d826
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signals.hpp at line 5
+ License text:
+ // Copyright Douglas Gregor 2003-2004. Use, modification and
+ // distribution is subject to the Boost Software License, Version
+ // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/signals.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL e7f91dd2d0775121b806452e251ea945
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/chrono/include.hpp at line 6, boost/chrono/io/duration_get.hpp at line 3, boost/chrono/io/duration_io.hpp at line 3, boost/chrono/io/duration_put.hpp at line 3, boost/chrono/io/duration_style.hpp at line 3, boost/chrono/io/duration_units.hpp at line 3, boost/chrono/io/ios_base_state.hpp at line 3, boost/chrono/io/time_point_get.hpp at line 3, boost/chrono/io/time_point_put.hpp at line 3, boost/chrono/io/time_point_units.hpp at line 3, boost/ratio/mpl/abs.hpp at line 5, boost/ratio/mpl/divides.hpp at line 5, boost/ratio/mpl/equal_to.hpp at line 5, boost/ratio/mpl/gcd.hpp at line 5, boost/ratio/mpl/greater.hpp at line 5, boost/ratio/mpl/greater_equal.hpp at line 5, boost/ratio/mpl/lcm.hpp at line 5, boost/ratio/mpl/less.hpp at line 5, boost/ratio/mpl/less_equal.hpp at line 5, boost/ratio/mpl/minus.hpp at line 5, boost/ratio/mpl/negate.hpp at line 5, boost/ratio/mpl/not_equal_to.hpp at line 5, boost/ratio/mpl/numeric_cast.hpp at line 5, boost/ratio/mpl/rational_c_tag.hpp at line 5, boost/ratio/mpl/sign.hpp at line 5, boost/ratio/mpl/times.hpp at line 5
+ License text:
+ // (C) Copyright 2011 Vicente J. Botet Escriba
+ // Use, modification and distribution are subject to the Boost Software License,
+ // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/chrono/include.hpp [4:6]
+ boost/chrono/io/duration_get.hpp [1:4]
+ boost/chrono/io/duration_io.hpp [1:4]
+ boost/chrono/io/duration_put.hpp [1:4]
+ boost/chrono/io/duration_style.hpp [1:4]
+ boost/chrono/io/duration_units.hpp [1:4]
+ boost/chrono/io/ios_base_state.hpp [1:3]
+ boost/chrono/io/time_point_get.hpp [1:4]
+ boost/chrono/io/time_point_put.hpp [1:4]
+ boost/chrono/io/time_point_units.hpp [1:5]
+ boost/ratio/mpl/abs.hpp [3:5]
+ boost/ratio/mpl/divides.hpp [3:5]
+ boost/ratio/mpl/equal_to.hpp [3:5]
+ boost/ratio/mpl/gcd.hpp [3:5]
+ boost/ratio/mpl/greater.hpp [3:5]
+ boost/ratio/mpl/greater_equal.hpp [3:5]
+ boost/ratio/mpl/lcm.hpp [3:5]
+ boost/ratio/mpl/less.hpp [3:5]
+ boost/ratio/mpl/less_equal.hpp [3:5]
+ boost/ratio/mpl/minus.hpp [3:5]
+ boost/ratio/mpl/negate.hpp [3:5]
+ boost/ratio/mpl/not_equal_to.hpp [3:5]
+ boost/ratio/mpl/numeric_cast.hpp [3:5]
+ boost/ratio/mpl/rational_c_tag.hpp [3:5]
+ boost/ratio/mpl/sign.hpp [3:5]
+ boost/ratio/mpl/times.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL e80099ca7d9554b99489b2a34e8f9497
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2015 Barend Gehrels, Amsterdam, the Netherlands.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/direction_code.hpp [3:3]
+ boost/geometry/algorithms/detail/overlay/handle_colocations.hpp [3:4]
+ boost/geometry/algorithms/detail/overlay/sort_by_side.hpp [3:4]
+ boost/geometry/algorithms/detail/sections/section_box_policies.hpp [3:3]
+ boost/geometry/algorithms/detail/sections/section_functions.hpp [3:3]
+ boost/geometry/algorithms/is_convex.hpp [3:3]
+ boost/geometry/strategies/cartesian/side_of_intersection.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL e8c8fa26afa0b2fea67db2fed458b026
+BELONGS ya.make
+ License text:
+ Copyright 2008 Intel Corporation
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/polygon/detail/boolean_op.hpp [2:2]
+ boost/polygon/detail/boolean_op_45.hpp [2:2]
+ boost/polygon/detail/iterator_compact_to_points.hpp [2:2]
+ boost/polygon/detail/iterator_geometry_to_set.hpp [2:2]
+ boost/polygon/detail/iterator_points_to_compact.hpp [2:2]
+ boost/polygon/detail/max_cover.hpp [2:2]
+ boost/polygon/detail/minkowski.hpp [2:2]
+ boost/polygon/detail/polygon_45_formation.hpp [2:2]
+ boost/polygon/detail/polygon_45_set_view.hpp [2:2]
+ boost/polygon/detail/polygon_45_touch.hpp [2:2]
+ boost/polygon/detail/polygon_90_set_view.hpp [2:2]
+ boost/polygon/detail/polygon_90_touch.hpp [2:2]
+ boost/polygon/detail/polygon_arbitrary_formation.hpp [2:2]
+ boost/polygon/detail/polygon_formation.hpp [2:2]
+ boost/polygon/detail/polygon_set_view.hpp [2:2]
+ boost/polygon/detail/polygon_sort_adaptor.hpp [2:2]
+ boost/polygon/detail/property_merge.hpp [2:2]
+ boost/polygon/detail/property_merge_45.hpp [2:2]
+ boost/polygon/detail/rectangle_formation.hpp [2:2]
+ boost/polygon/detail/scan_arbitrary.hpp [2:2]
+ boost/polygon/gmp_override.hpp [2:2]
+ boost/polygon/gtl.hpp [2:2]
+ boost/polygon/isotropy.hpp [2:2]
+ boost/polygon/polygon.hpp [2:2]
+ boost/polygon/polygon_45_data.hpp [2:2]
+ boost/polygon/polygon_45_set_concept.hpp [2:2]
+ boost/polygon/polygon_45_set_data.hpp [2:2]
+ boost/polygon/polygon_45_set_traits.hpp [2:2]
+ boost/polygon/polygon_45_with_holes_data.hpp [2:2]
+ boost/polygon/polygon_90_data.hpp [2:2]
+ boost/polygon/polygon_90_set_concept.hpp [2:2]
+ boost/polygon/polygon_90_set_data.hpp [2:2]
+ boost/polygon/polygon_90_set_traits.hpp [2:2]
+ boost/polygon/polygon_90_with_holes_data.hpp [2:2]
+ boost/polygon/polygon_data.hpp [2:2]
+ boost/polygon/polygon_set_concept.hpp [2:2]
+ boost/polygon/polygon_set_data.hpp [2:2]
+ boost/polygon/polygon_set_traits.hpp [2:2]
+ boost/polygon/polygon_traits.hpp [2:2]
+ boost/polygon/polygon_with_holes_data.hpp [2:2]
+ boost/polygon/rectangle_concept.hpp [2:2]
+ boost/polygon/rectangle_data.hpp [2:2]
+ boost/polygon/rectangle_traits.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL e8f7853c4a6700eeac6f2514116bb8a9
+BELONGS ya.make
+ License text:
+ // (C) Copyright Ion Gaztanaga 2006-2012
+ // (C) Copyright Markus Schoepflin 2007
+ // (C) Copyright Bryce Lelbach 2010
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/interprocess/detail/atomic.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL e90054354c2fc6179de794b9b381eb6d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/atl.hpp at line 11, boost/range/detail/microsoft.hpp at line 8, boost/range/mfc.hpp at line 11
+ License text:
+ // Copyright Shunsuke Sogame 2005-2006.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/python/numpy.hpp [1:4]
- boost/python/numpy/dtype.hpp [1:4]
- boost/python/numpy/internal.hpp [1:4]
- boost/python/numpy/invoke_matching.hpp [1:4]
- boost/python/numpy/matrix.hpp [1:4]
- boost/python/numpy/ndarray.hpp [1:4]
- boost/python/numpy/numpy_object_mgr_traits.hpp [1:4]
- boost/python/numpy/scalars.hpp [1:4]
- boost/python/numpy/ufunc.hpp [1:4]
- libs/python/src/numpy/dtype.cpp [1:4]
- libs/python/src/numpy/matrix.cpp [1:4]
- libs/python/src/numpy/ndarray.cpp [1:4]
- libs/python/src/numpy/numpy.cpp [1:4]
- libs/python/src/numpy/scalars.cpp [1:4]
- libs/python/src/numpy/ufunc.cpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL d6db1f5c1ba3fd89e8e302ce1d41dc7e
-BELONGS ya.make
- License text:
- // Copyright (c) 2012 Barend Gehrels, Amsterdam, the Netherlands.
- // Copyright (c) 2012 Bruno Lalande, Paris, France.
- // Copyright (c) 2012 Mateusz Loskot, London, UK.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/util/bare_type.hpp [3:5]
- boost/geometry/util/calculation_type.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL d6ffc9c8b7faf6b69be894dbb468e1ac
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/hardware.h at line 5, boost/predef/hardware/simd.h at line 5, boost/predef/hardware/simd/arm.h at line 5, boost/predef/hardware/simd/arm/versions.h at line 5, boost/predef/hardware/simd/ppc.h at line 5, boost/predef/hardware/simd/ppc/versions.h at line 5, boost/predef/hardware/simd/x86.h at line 5, boost/predef/hardware/simd/x86/versions.h at line 5, boost/predef/hardware/simd/x86_amd.h at line 5, boost/predef/hardware/simd/x86_amd/versions.h at line 5
- License text:
- Copyright Charly Chevalier 2015
- Copyright Joel Falcou 2015
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/predef/hardware.h [2:5]
- boost/predef/hardware/simd.h [2:5]
- boost/predef/hardware/simd/arm.h [2:5]
- boost/predef/hardware/simd/arm/versions.h [2:5]
- boost/predef/hardware/simd/ppc.h [2:5]
- boost/predef/hardware/simd/ppc/versions.h [2:5]
- boost/predef/hardware/simd/x86.h [2:5]
- boost/predef/hardware/simd/x86/versions.h [2:5]
- boost/predef/hardware/simd/x86_amd.h [2:5]
- boost/predef/hardware/simd/x86_amd/versions.h [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL d706b4945aea7b91948639454fe2562e
-BELONGS ya.make
- License text:
- // Copyright (C) 2013 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/csbl/deque.hpp [1:1]
- boost/thread/csbl/devector.hpp [1:1]
- boost/thread/csbl/functional.hpp [1:1]
- boost/thread/csbl/list.hpp [1:1]
- boost/thread/csbl/memory.hpp [1:1]
- boost/thread/csbl/memory/allocator_arg.hpp [1:1]
- boost/thread/csbl/memory/allocator_traits.hpp [1:1]
- boost/thread/csbl/memory/config.hpp [1:1]
- boost/thread/csbl/memory/default_delete.hpp [1:1]
- boost/thread/csbl/memory/pointer_traits.hpp [1:1]
- boost/thread/csbl/memory/scoped_allocator.hpp [1:1]
- boost/thread/csbl/tuple.hpp [1:1]
- boost/thread/csbl/vector.hpp [1:1]
- boost/thread/detail/atomic_redef_macros.hpp [1:1]
- boost/thread/detail/atomic_undef_macros.hpp [1:1]
- boost/thread/detail/function_wrapper.hpp [1:1]
- boost/thread/detail/nullary_function.hpp [1:1]
- boost/thread/detail/variadic_footer.hpp [1:1]
- boost/thread/detail/variadic_header.hpp [1:1]
- boost/thread/executor.hpp [1:1]
- boost/thread/executors/serial_executor.hpp [1:1]
- boost/thread/thread_pool.hpp [1:1]
- boost/thread/user_scheduler.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL d7369b8aa594e0b3dc161a249b283b86
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2006, 2007.
- // Copyright Paul A. Bristow 2006, 2007, 2009, 2010.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/distributions.hpp [1:2]
- boost/math/distributions/cauchy.hpp [1:2]
- boost/math/distributions/chi_squared.hpp [1:2]
- boost/math/distributions/detail/common_error_handling.hpp [1:2]
- boost/math/distributions/normal.hpp [1:2]
- boost/math/distributions/triangular.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL d73b88cee593256b0d7ec85d5b8fa25a
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/compiler/intel.h at line 4
- License text:
- Copyright Rene Rivera 2008-2017
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/predef/compiler/intel.h [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL d73db9dfef39806d118c487419c17a2c
-BELONGS ya.make
- License text:
- Copyright (c) 2006 Joao Abecasis
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/core/non_terminal/impl/static.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL d746f25f7b87dc815ab804cbdd5ee875
-BELONGS libs/thread/ya.make ya.make
- License text:
- * (C) Copyright 2013 Tim Blechmann
- * (C) Copyright 2013 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/atomic/detail/pause.hpp [6:7]
- boost/thread/pthread/once_atomic.hpp [6:7]
- libs/thread/src/pthread/once_atomic.cpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL d75225060f193b9147dad5e0d7d42983
-BELONGS ya.make
- License text:
- // Copyright John Maddock 2006-7, 2013-14.
- // Copyright Paul A. Bristow 2007, 2013-14.
- // Copyright Nikhar Agrawal 2013-14
- // Copyright Christopher Kormanyos 2013-14
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/gamma.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL d78b6dbfe1069ef1912985a3ebb3d094
-BELONGS ya.make
- License text:
- // Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard.
- // Copyright (C) 2005-2016 Daniel James
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/unordered/detail/implementation.hpp [1:2]
- boost/unordered/detail/map.hpp [2:4]
- boost/unordered/detail/set.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL d7903d14a6322f299ddbba6647135742
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/item_version_type.hpp at line 6
- License text:
- // (C) Copyright 2010 Robert Ramey
- // Use, modification and distribution is subject to the Boost Software
- // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/serialization/item_version_type.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL d7ec3b31087d40f4ec8d4f38c2654306
-BELONGS libs/container/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/detail/block_list.hpp at line 5, boost/container/detail/block_slist.hpp at line 5, boost/container/detail/dispatch_uses_allocator.hpp at line 5, boost/container/detail/dlmalloc.hpp at line 5, boost/container/detail/pool_resource.hpp at line 5, boost/container/pmr/deque.hpp at line 5, boost/container/pmr/flat_map.hpp at line 5, boost/container/pmr/flat_set.hpp at line 5, boost/container/pmr/global_resource.hpp at line 5, boost/container/pmr/list.hpp at line 5, boost/container/pmr/map.hpp at line 5, boost/container/pmr/memory_resource.hpp at line 5, boost/container/pmr/monotonic_buffer_resource.hpp at line 5, boost/container/pmr/polymorphic_allocator.hpp at line 5, boost/container/pmr/pool_options.hpp at line 5, boost/container/pmr/resource_adaptor.hpp at line 5, boost/container/pmr/set.hpp at line 5, boost/container/pmr/slist.hpp at line 5, boost/container/pmr/small_vector.hpp at line 5, boost/container/pmr/stable_vector.hpp at line 5, boost/container/pmr/string.hpp at line 5, boost/container/pmr/synchronized_pool_resource.hpp at line 5, boost/container/pmr/unsynchronized_pool_resource.hpp at line 5, boost/container/pmr/vector.hpp at line 5, boost/container/scoped_allocator_fwd.hpp at line 5, boost/container/small_vector.hpp at line 5, boost/container/uses_allocator_fwd.hpp at line 5, boost/intrusive/detail/tree_value_compare.hpp at line 5, boost/move/detail/meta_utils_core.hpp at line 5, boost/move/detail/std_ns_begin.hpp at line 5, boost/move/detail/std_ns_end.hpp at line 5, libs/container/src/global_resource.cpp at line 5, libs/container/src/monotonic_buffer_resource.cpp at line 5, libs/container/src/pool_resource.cpp at line 5, libs/container/src/synchronized_pool_resource.cpp at line 5, libs/container/src/unsynchronized_pool_resource.cpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2015-2015. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/container/detail/block_list.hpp [3:5]
- boost/container/detail/block_slist.hpp [3:5]
- boost/container/detail/dispatch_uses_allocator.hpp [3:5]
- boost/container/detail/dlmalloc.hpp [3:5]
- boost/container/detail/pool_resource.hpp [3:5]
- boost/container/pmr/deque.hpp [3:5]
- boost/container/pmr/flat_map.hpp [3:5]
- boost/container/pmr/flat_set.hpp [3:5]
- boost/container/pmr/global_resource.hpp [3:5]
- boost/container/pmr/list.hpp [3:5]
- boost/container/pmr/map.hpp [3:5]
- boost/container/pmr/memory_resource.hpp [3:5]
- boost/container/pmr/monotonic_buffer_resource.hpp [3:5]
- boost/container/pmr/polymorphic_allocator.hpp [3:5]
- boost/container/pmr/pool_options.hpp [3:5]
- boost/container/pmr/resource_adaptor.hpp [3:5]
- boost/container/pmr/set.hpp [3:5]
- boost/container/pmr/slist.hpp [3:5]
- boost/container/pmr/small_vector.hpp [3:5]
- boost/container/pmr/stable_vector.hpp [3:5]
- boost/container/pmr/string.hpp [3:5]
- boost/container/pmr/synchronized_pool_resource.hpp [3:5]
- boost/container/pmr/unsynchronized_pool_resource.hpp [3:5]
- boost/container/pmr/vector.hpp [3:5]
- boost/container/scoped_allocator_fwd.hpp [3:5]
- boost/container/small_vector.hpp [3:5]
- boost/container/uses_allocator_fwd.hpp [3:5]
- boost/intrusive/detail/tree_value_compare.hpp [3:5]
- boost/move/detail/meta_utils_core.hpp [3:5]
- boost/move/detail/std_ns_begin.hpp [3:5]
- boost/move/detail/std_ns_end.hpp [3:5]
- libs/container/src/global_resource.cpp [3:5]
- libs/container/src/monotonic_buffer_resource.cpp [3:5]
- libs/container/src/pool_resource.cpp [3:5]
- libs/container/src/synchronized_pool_resource.cpp [3:5]
- libs/container/src/unsynchronized_pool_resource.cpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL d85d3237917b72f16dba239a303134fa
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/concepts.hpp at line 10
- License text:
- // Copyright Daniel Walker 2006. Use, modification and distribution
- // are subject to the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/range/concepts.hpp [8:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL d87b243958a7d8cd7ed9864055dfd125
-BELONGS ya.make
- License text:
- * Copyright (C) 2017 James E. King III
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/predef/library/c/cloudabi.h [2:2]
- boost/uuid/detail/random_provider.hpp [2:2]
- boost/uuid/detail/random_provider_arc4random.ipp [2:2]
- boost/uuid/detail/random_provider_bcrypt.ipp [2:2]
- boost/uuid/detail/random_provider_detect_platform.hpp [2:2]
- boost/uuid/detail/random_provider_getentropy.ipp [2:2]
- boost/uuid/detail/random_provider_include_platform.hpp [2:2]
- boost/uuid/entropy_error.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL d892d3dedd0208083374d9b1e5af7c28
-BELONGS ya.make
- License text:
- Copyright 2013 Christian Shelton
- Copyright 2013 Karsten Ahnert
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/external/eigen/eigen_algebra.hpp [9:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL d8cbf9ce59bc4b7472faf3c297642429
-BELONGS ya.make
- License text:
- // Copyright (C) 2008, 2009, 2016 Tim Blechmann, based on code by Cory Nelson
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/lockfree/detail/tagged_ptr_ptrcompression.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL d8d379e820d70d3ab6d3e5b12ee52da1
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2003 Daniel Nuffer
- Copyright (c) 2001-2007 Hartmut Kaiser
- Revised 2007, Copyright (c) Tobias Schwinger
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/tree/common.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL d8fd2c7143c4fbec8b1689bfb853227e
-BELONGS ya.make
- License text:
- // Copyright 2012-2013 Steven Watanabe
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_erasure/member.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL d91946878c8cc10edec238acbae07c4c
-BELONGS ya.make
- License text:
- // Copyright 2005-2009 The Trustees of Indiana University.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/compressed_sparse_row_graph.hpp [1:1]
- boost/graph/detail/compressed_sparse_row_struct.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL d91f655d9cf3592a631666b8d61bf13a
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/flyweight/detail/archive_constructed.hpp at line 3, boost/flyweight/detail/default_value_policy.hpp at line 3, boost/flyweight/detail/dyn_perfect_fwd.hpp at line 3, boost/flyweight/detail/flyweight_core.hpp at line 3, boost/flyweight/detail/perfect_fwd.hpp at line 3, boost/flyweight/detail/pp_perfect_fwd.hpp at line 3, boost/flyweight/detail/serialization_helper.hpp at line 3, boost/flyweight/hashed_factory.hpp at line 3, boost/flyweight/key_value.hpp at line 3, boost/flyweight/refcounted.hpp at line 3
- License text:
- /* Copyright 2006-2014 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/flyweight/detail/archive_constructed.hpp [1:3]
- boost/flyweight/detail/default_value_policy.hpp [1:3]
- boost/flyweight/detail/dyn_perfect_fwd.hpp [1:3]
- boost/flyweight/detail/flyweight_core.hpp [1:3]
- boost/flyweight/detail/perfect_fwd.hpp [1:3]
- boost/flyweight/detail/pp_perfect_fwd.hpp [1:3]
- boost/flyweight/detail/serialization_helper.hpp [1:3]
- boost/flyweight/hashed_factory.hpp [1:3]
- boost/flyweight/key_value.hpp [1:3]
- boost/flyweight/refcounted.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL d946256ef076f98c4b7b458a2317cae5
-BELONGS ya.make
- License text:
- // Copyright (c) Antony Polukhin, 2012-2016.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_index/detail/compile_time_type_info.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL d9680887664a695927a719b1b889a56c
-BELONGS ya.make
- License text:
- // Copyright (C) 2012 David Stone
- // Copyright Beman Dawes 2013
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/endian/detail/intrinsic.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL d989ff9c2bd62725fe9987a9d8746019
-BELONGS libs/program_options/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/program_options/detail/cmdline.hpp at line 3, boost/program_options/detail/config_file.hpp at line 3, boost/program_options/errors.hpp at line 3, boost/program_options/options_description.hpp at line 3, boost/program_options/parsers.hpp at line 3, boost/program_options/variables_map.hpp at line 3, libs/program_options/src/cmdline.cpp at line 3, libs/program_options/src/config_file.cpp at line 3, libs/program_options/src/options_description.cpp at line 3, libs/program_options/src/parsers.cpp at line 3, libs/program_options/src/variables_map.cpp at line 3, libs/program_options/src/winmain.cpp at line 3
- License text:
- // Copyright Vladimir Prus 2002-2004.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/program_options/detail/cmdline.hpp [1:3]
- boost/program_options/detail/config_file.hpp [1:3]
- boost/program_options/errors.hpp [1:3]
- boost/program_options/options_description.hpp [1:4]
- boost/program_options/parsers.hpp [1:3]
- boost/program_options/variables_map.hpp [1:3]
- libs/program_options/src/cmdline.cpp [1:3]
- libs/program_options/src/config_file.cpp [1:3]
- libs/program_options/src/options_description.cpp [1:4]
- libs/program_options/src/parsers.cpp [1:3]
- libs/program_options/src/variables_map.cpp [1:3]
- libs/program_options/src/winmain.cpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL d9b034219784147e9de3ba70c9964f7f
-BELONGS ya.make
- License text:
- // Copyright 2006 Johan Rade
- // Copyright 2012 K R Walker
- // Copyright 2011, 2012 Paul A. Bristow
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/nonfinite_num_facets.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL d9b8b05a31819f01ee9a3e7db2208124
-BELONGS ya.make
- License text:
- // Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
- // Copyright (C) 2000 Gary Powell (gary.powell@sierra.com)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/lambda/detail/member_ptr.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL d9cc7750d38e73a2832b5d2da121f533
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/flyweight.hpp at line 3, boost/flyweight/assoc_container_factory_fwd.hpp at line 3, boost/flyweight/detail/not_placeholder_expr.hpp at line 3, boost/flyweight/detail/value_tag.hpp at line 3, boost/flyweight/factory_tag.hpp at line 3, boost/flyweight/hashed_factory_fwd.hpp at line 3, boost/flyweight/holder_tag.hpp at line 3, boost/flyweight/intermodule_holder_fwd.hpp at line 3, boost/flyweight/key_value_fwd.hpp at line 3, boost/flyweight/locking_tag.hpp at line 3, boost/flyweight/no_locking.hpp at line 3, boost/flyweight/no_locking_fwd.hpp at line 3, boost/flyweight/no_tracking.hpp at line 3, boost/flyweight/no_tracking_fwd.hpp at line 3, boost/flyweight/refcounted_fwd.hpp at line 3, boost/flyweight/set_factory_fwd.hpp at line 3, boost/flyweight/simple_locking.hpp at line 3, boost/flyweight/simple_locking_fwd.hpp at line 3, boost/flyweight/static_holder_fwd.hpp at line 3, boost/flyweight/tag.hpp at line 3, boost/flyweight/tracking_tag.hpp at line 3
- License text:
- /* Copyright 2006-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/flyweight.hpp [1:3]
- boost/flyweight/assoc_container_factory_fwd.hpp [1:3]
- boost/flyweight/detail/not_placeholder_expr.hpp [1:3]
- boost/flyweight/detail/value_tag.hpp [1:3]
- boost/flyweight/factory_tag.hpp [1:3]
- boost/flyweight/hashed_factory_fwd.hpp [1:3]
- boost/flyweight/holder_tag.hpp [1:3]
- boost/flyweight/intermodule_holder_fwd.hpp [1:3]
- boost/flyweight/key_value_fwd.hpp [1:3]
- boost/flyweight/locking_tag.hpp [1:3]
- boost/flyweight/no_locking.hpp [1:3]
- boost/flyweight/no_locking_fwd.hpp [1:3]
- boost/flyweight/no_tracking.hpp [1:3]
- boost/flyweight/no_tracking_fwd.hpp [1:3]
- boost/flyweight/refcounted_fwd.hpp [1:3]
- boost/flyweight/set_factory_fwd.hpp [1:3]
- boost/flyweight/simple_locking.hpp [1:3]
- boost/flyweight/simple_locking_fwd.hpp [1:3]
- boost/flyweight/static_holder_fwd.hpp [1:3]
- boost/flyweight/tag.hpp [1:3]
- boost/flyweight/tracking_tag.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL d9d3f9179a9781a228af49eebba2dba2
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/leda_graph.hpp [2:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL da5722f501f78f050c4fc5ddba00e44a
-BELONGS ya.make
- License text:
- // Copyright (c) 2014-2015, Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/is_simple/debug_print_boundary_points.hpp [3:3]
- boost/geometry/algorithms/detail/is_valid/debug_print_turns.hpp [3:3]
- boost/geometry/algorithms/detail/is_valid/has_duplicates.hpp [3:3]
- boost/geometry/algorithms/detail/is_valid/has_invalid_coordinate.hpp [3:3]
- boost/geometry/algorithms/detail/is_valid/is_acceptable_turn.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/inconsistent_turns_exception.hpp [3:3]
- boost/geometry/algorithms/detail/signed_size_type.hpp [3:3]
- boost/geometry/algorithms/detail/turns/compare_turns.hpp [3:3]
- boost/geometry/iterators/detail/segment_iterator/value_type.hpp [3:3]
- boost/geometry/strategies/comparable_distance_result.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL da66650aa87474a034356b9ab7d20069
-BELONGS ya.make
- License text:
- Copyright 2010-2011 Mario Mulansky
- Copyright 2011-2013 Karsten Ahnert
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/external/mkl/mkl_operations.hpp [11:12]
- boost/numeric/odeint/stepper/stepper_categories.hpp [9:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL da74bde384bb9591220ea65cbfd6ed00
-BELONGS ya.make
- License text:
- // Copyright (c) David Abrahams 2001.
- // Copyright (c) Jeremy Siek 2001-2003.
- // Copyright (c) Thomas Witt 2002.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/iterator/new_iterator_tests.hpp [5:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL da7c41d93828ed41770e2d19294b77ae
-BELONGS ya.make
- License text:
- Copyright (c) 2014 Paul Fultz II
- always.h
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/hof/always.hpp [2:4]
- boost/hof/arg.hpp [2:4]
- boost/hof/compose.hpp [2:4]
- boost/hof/detail/forward.hpp [2:4]
- boost/hof/detail/holder.hpp [2:4]
- boost/hof/detail/move.hpp [2:4]
- boost/hof/detail/pp.hpp [2:4]
- boost/hof/detail/remove_rvalue_reference.hpp [2:4]
- boost/hof/detail/unwrap.hpp [2:4]
- boost/hof/fix.hpp [2:4]
- boost/hof/function.hpp [2:4]
- boost/hof/indirect.hpp [2:4]
- boost/hof/infix.hpp [2:4]
- boost/hof/is_invocable.hpp [2:4]
- boost/hof/lambda.hpp [2:4]
- boost/hof/lazy.hpp [2:4]
- boost/hof/mutable.hpp [2:4]
- boost/hof/pack.hpp [2:4]
- boost/hof/placeholders.hpp [2:4]
- boost/hof/proj.hpp [2:4]
- boost/hof/protect.hpp [2:4]
- boost/hof/result.hpp [2:4]
- boost/hof/returns.hpp [2:4]
- boost/hof/reveal.hpp [2:4]
- boost/hof/static.hpp [2:4]
- boost/hof/tap.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL da91943a65a421cd0926c06fe85346a6
-BELONGS ya.make
- License text:
- // This file was modified by Oracle on 2013, 2014, 2015.
- // Modifications copyright (c) 2013-2015, Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/disjoint/point_geometry.hpp [8:9]
- boost/geometry/multi/multi.hpp [7:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL da9efae22788f28294f7f9a2902ac5c7
-BELONGS ya.make
- License text:
- * Copyright (c) 2001-2003 Joel de Guzman
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/ublas/detail/returntype_deduction.hpp [2:2]
- boost/spirit/home/classic/attribute.hpp [2:4]
- boost/spirit/home/classic/attribute/closure.hpp [2:4]
- boost/spirit/home/classic/core/assert.hpp [2:4]
- boost/spirit/home/classic/core/non_terminal/grammar.hpp [2:5]
- boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp [2:5]
- boost/spirit/home/classic/core/non_terminal/parser_id.hpp [2:4]
- boost/spirit/home/classic/debug.hpp [2:4]
- boost/spirit/home/classic/debug/debug_node.hpp [2:5]
- boost/spirit/home/classic/debug/impl/parser_names.ipp [2:4]
- boost/spirit/home/classic/debug/minimal.hpp [2:4]
- boost/spirit/home/classic/debug/parser_names.hpp [2:4]
- boost/spirit/home/classic/phoenix/casts.hpp [3:4]
- boost/spirit/home/classic/phoenix/new.hpp [3:5]
- boost/spirit/home/classic/utility/chset.hpp [2:4]
- boost/spirit/home/classic/utility/chset_operators.hpp [2:4]
- boost/spirit/home/classic/utility/impl/chset.ipp [2:4]
- boost/spirit/home/classic/utility/impl/chset/basic_chset.hpp [2:4]
- boost/spirit/home/classic/utility/impl/chset/basic_chset.ipp [2:4]
- boost/xpressive/detail/utility/chset/basic_chset.hpp [2:4]
- boost/xpressive/detail/utility/chset/basic_chset.ipp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL dac98d69c928f039b4107e09246ed62f
-BELONGS ya.make
- License text:
- // This file was modified by Oracle on 2016.
- // Modifications copyright (c) 2016 Oracle and/or its affiliates.
- // Contributed and/or modified by Vissarion Fysikopoulos, on behalf of Oracle
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/buffer/turn_in_original_visitor.hpp [5:7]
- boost/geometry/algorithms/detail/buffer/turn_in_piece_visitor.hpp [6:8]
- boost/geometry/algorithms/detail/calculate_sum.hpp [11:13]
- boost/geometry/policies/relate/intersection_points.hpp [5:7]
- boost/geometry/policies/robustness/segment_ratio.hpp [5:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL dade72e8f17d6f5ad231015a08f18f49
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/smart_ptr/unique_ptr.hpp at line 5, boost/intrusive/circular_list_algorithms.hpp at line 5, boost/intrusive/circular_slist_algorithms.hpp at line 5, boost/intrusive/detail/any_node_and_algorithms.hpp at line 5, boost/intrusive/detail/hook_traits.hpp at line 5, boost/intrusive/detail/iiterator.hpp at line 5, boost/intrusive/detail/mpl.hpp at line 5, boost/intrusive/detail/uncast.hpp at line 5, boost/intrusive/linear_slist_algorithms.hpp at line 5, boost/intrusive/list.hpp at line 5, boost/intrusive/rbtree.hpp at line 5, boost/intrusive/rbtree_algorithms.hpp at line 5, boost/intrusive/set.hpp at line 5, boost/intrusive/slist.hpp at line 5, boost/intrusive/treap_algorithms.hpp at line 5, boost/intrusive/unordered_set.hpp at line 5, boost/move/make_unique.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2006-2014. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/interprocess/smart_ptr/unique_ptr.hpp [3:5]
- boost/intrusive/circular_list_algorithms.hpp [3:4]
- boost/intrusive/circular_slist_algorithms.hpp [3:4]
- boost/intrusive/detail/any_node_and_algorithms.hpp [3:3]
- boost/intrusive/detail/hook_traits.hpp [3:3]
- boost/intrusive/detail/iiterator.hpp [3:3]
- boost/intrusive/detail/mpl.hpp [3:4]
- boost/intrusive/detail/uncast.hpp [3:3]
- boost/intrusive/linear_slist_algorithms.hpp [3:4]
- boost/intrusive/list.hpp [3:4]
- boost/intrusive/rbtree.hpp [3:3]
- boost/intrusive/rbtree_algorithms.hpp [3:4]
- boost/intrusive/set.hpp [3:4]
- boost/intrusive/slist.hpp [3:4]
- boost/intrusive/treap_algorithms.hpp [3:3]
- boost/intrusive/unordered_set.hpp [3:4]
- boost/move/make_unique.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL db0443ef1ac24a2215b5dcee7e8a6a38
-BELONGS libs/date_time/ya.make ya.make
- License text:
- /* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/range/atl.hpp [9:11]
+ boost/range/detail/microsoft.hpp [6:8]
+ boost/range/mfc.hpp [9:11]
+
+KEEP COPYRIGHT_SERVICE_LABEL e911fa8ed8154051a5ba24779b58fe24
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2003-2008 Jan Gaspar
+ // Copyright (c) 2013 Paul A. Bristow // Doxygen comments changed.
+ // Copyright (c) 2013 Antony Polukhin // Move semantics implementation.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/circular_buffer/base.hpp [3:5]
+ boost/circular_buffer/space_optimized.hpp [3:5]
+ boost/variant/detail/make_variant_list.hpp [6:7]
+ boost/variant/recursive_variant.hpp [6:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL e948c32bb4fec5a27e9bbe3a45398269
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/pending/property_serialize.hpp at line 3
+ License text:
+ // (C) Copyright Jeremy Siek 2006
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/pending/property_serialize.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL e96cb88f0e61b70a27c80d50f101304a
+BELONGS ya.make
+ License text:
+ // Copyright 2008 Gautam Sewani
+ // Copyright 2008 John Maddock
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/distributions/detail/hypergeometric_cdf.hpp [1:1]
+ boost/math/distributions/detail/hypergeometric_pdf.hpp [1:2]
+ boost/math/distributions/detail/hypergeometric_quantile.hpp [1:1]
+ boost/math/distributions/hypergeometric.hpp [1:2]
+ boost/math/special_functions/prime.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL e97656f9dec509a30c28f6e372e5c562
+BELONGS ya.make
+ License text:
+ Copyright (C) 2002, 2008, 2013 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/core/addressof.hpp [5:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL e988593c62f4794020b8d577270883fc
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2008-2009 Ben Hanson
+ // Copyright (c) 2008-2011 Hartmut Kaiser
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/lex/lexer/lexertl/generate_static.hpp [1:2]
+ boost/spirit/home/lex/lexer/lexertl/generate_static.hpp [890:893]
+
+KEEP COPYRIGHT_SERVICE_LABEL e99f2084817df228034b7674cdcfeeb0
+BELONGS ya.make
+ License text:
+ Copyright (c) 2007-2011 Hartmut Kaiser
+ Copyright (c) Christopher Diggins 2005
+ Copyright (c) Pablo Aguilar 2005
+ Copyright (c) Kevlin Henney 2001
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/support/detail/hold_any.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL e9c01b978ee54abfd69646f14ef22a7a
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/detail/shared_dir_helpers.hpp at line 5, boost/intrusive/avl_set.hpp at line 5, boost/intrusive/avltree_algorithms.hpp at line 5, boost/intrusive/bstree_algorithms.hpp at line 5, boost/intrusive/detail/common_slist_algorithms.hpp at line 5, boost/intrusive/detail/hashtable_node.hpp at line 5, boost/intrusive/options.hpp at line 5, boost/intrusive/sg_set.hpp at line 5, boost/intrusive/sgtree.hpp at line 5, boost/intrusive/sgtree_algorithms.hpp at line 5, boost/intrusive/splay_set.hpp at line 5, boost/intrusive/splaytree.hpp at line 5, boost/intrusive/splaytree_algorithms.hpp at line 5, boost/intrusive/treap_set.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2007-2014. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/interprocess/detail/shared_dir_helpers.hpp [3:5]
+ boost/intrusive/avl_set.hpp [3:3]
+ boost/intrusive/avltree_algorithms.hpp [3:4]
+ boost/intrusive/bstree_algorithms.hpp [3:3]
+ boost/intrusive/detail/common_slist_algorithms.hpp [3:3]
+ boost/intrusive/detail/hashtable_node.hpp [3:3]
+ boost/intrusive/options.hpp [3:3]
+ boost/intrusive/sg_set.hpp [3:3]
+ boost/intrusive/sgtree.hpp [3:3]
+ boost/intrusive/sgtree_algorithms.hpp [3:3]
+ boost/intrusive/splay_set.hpp [3:3]
+ boost/intrusive/splaytree.hpp [3:3]
+ boost/intrusive/splaytree_algorithms.hpp [3:3]
+ boost/intrusive/treap_set.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL e9c139c5d04d10ee2bf656ff900cbbaf
+BELONGS ya.make
+ License text:
+ // Copyright (c) Aaron Windsor 2007
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/chrobak_payne_drawing.hpp [2:2]
+ boost/graph/planar_canonical_ordering.hpp [2:2]
+ boost/graph/planar_detail/boyer_myrvold_impl.hpp [2:2]
+ boost/graph/planar_detail/face_handles.hpp [2:2]
+ boost/graph/planar_detail/face_iterators.hpp [2:2]
+ boost/graph/planar_face_traversal.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL e9da6936cb0ee5a3c700b8021f2e4668
+BELONGS ya.make
+ License text:
+ Copyright (c) 2003 Joel de Guzman
+ Copyright (c) 2003 Vaclav Vesely
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/dynamic/lazy.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL ea2a1d88ab559901c962fffaa443db62
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/date_time/local_time/conversion.hpp at line 6, boost/date_time/local_time/dst_transition_day_rules.hpp at line 6, boost/date_time/local_time/local_time.hpp at line 6, boost/date_time/local_time/local_time_io.hpp at line 6, boost/date_time/local_time/local_time_types.hpp at line 6, boost/date_time/local_time/tz_database.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/date_time/local_time/conversion.hpp [4:8]
+ boost/date_time/local_time/dst_transition_day_rules.hpp [4:8]
+ boost/date_time/local_time/local_time.hpp [4:8]
+ boost/date_time/local_time/local_time_io.hpp [4:8]
+ boost/date_time/local_time/local_time_types.hpp [4:8]
+ boost/date_time/local_time/tz_database.hpp [4:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL ea6952b116e7dc3746a21d3d95928c35
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2008 Frank Mori Hess
+ // Copyright (c) 2016 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/owner_less.hpp [7:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL eaaa450f0bcecbc273ad0a9250e79ddc
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001-2002 Chuck Allison and Jeremy Siek
+ // Copyright (c) 2003-2004, 2008 Gennaro Prota
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/dynamic_bitset.hpp [3:4]
+ boost/integer/integer_log2.hpp [7:7]
+ boost/pending/lowest_bit.hpp [6:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL eacd4b2bbe3922f7890d60fb0812ecae
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/process.hpp [1:7]
+ boost/process/args.hpp [1:6]
+ boost/process/async_pipe.hpp [1:5]
+ boost/process/async_system.hpp [1:6]
+ boost/process/child.hpp [1:6]
+ boost/process/cmd.hpp [1:6]
+ boost/process/detail/child_decl.hpp [1:6]
+ boost/process/detail/config.hpp [1:6]
+ boost/process/detail/execute_impl.hpp [1:6]
+ boost/process/detail/handler_base.hpp [1:6]
+ boost/process/detail/posix/async_in.hpp [1:5]
+ boost/process/detail/posix/async_out.hpp [1:5]
+ boost/process/detail/posix/basic_pipe.hpp [1:5]
+ boost/process/detail/posix/child_handle.hpp [1:5]
+ boost/process/detail/posix/close_in.hpp [1:5]
+ boost/process/detail/posix/close_out.hpp [1:5]
+ boost/process/detail/posix/executor.hpp [1:5]
+ boost/process/detail/posix/fd.hpp [1:5]
+ boost/process/detail/posix/file_in.hpp [1:5]
+ boost/process/detail/posix/file_out.hpp [1:6]
+ boost/process/detail/posix/null_in.hpp [1:5]
+ boost/process/detail/posix/null_out.hpp [1:6]
+ boost/process/detail/posix/pipe_in.hpp [1:5]
+ boost/process/detail/posix/pipe_out.hpp [1:6]
+ boost/process/detail/posix/search_path.hpp [1:5]
+ boost/process/detail/posix/shell_path.hpp [1:5]
+ boost/process/detail/posix/signal.hpp [1:6]
+ boost/process/detail/posix/start_dir.hpp [1:5]
+ boost/process/detail/posix/terminate.hpp [1:5]
+ boost/process/detail/posix/wait_for_exit.hpp [1:5]
+ boost/process/detail/posix/wait_group.hpp [1:5]
+ boost/process/detail/throw_on_error.hpp [1:6]
+ boost/process/detail/windows/async_in.hpp [1:5]
+ boost/process/detail/windows/async_out.hpp [1:5]
+ boost/process/detail/windows/child_handle.hpp [1:5]
+ boost/process/detail/windows/close_in.hpp [1:5]
+ boost/process/detail/windows/close_out.hpp [1:5]
+ boost/process/detail/windows/executor.hpp [1:6]
+ boost/process/detail/windows/file_in.hpp [1:5]
+ boost/process/detail/windows/file_out.hpp [1:5]
+ boost/process/detail/windows/null_in.hpp [1:5]
+ boost/process/detail/windows/null_out.hpp [1:5]
+ boost/process/detail/windows/pipe_in.hpp [1:5]
+ boost/process/detail/windows/pipe_out.hpp [1:6]
+ boost/process/detail/windows/search_path.hpp [1:5]
+ boost/process/detail/windows/shell_path.hpp [1:5]
+ boost/process/detail/windows/show_window.hpp [1:6]
+ boost/process/detail/windows/start_dir.hpp [1:5]
+ boost/process/detail/windows/terminate.hpp [1:5]
+ boost/process/detail/windows/wait_for_exit.hpp [1:6]
+ boost/process/error.hpp [1:6]
+ boost/process/exe.hpp [1:6]
+ boost/process/pipe.hpp [1:5]
+ boost/process/search_path.hpp [1:5]
+ boost/process/shell.hpp [1:6]
+ boost/process/spawn.hpp [1:6]
+ boost/process/start_dir.hpp [1:5]
+ boost/process/system.hpp [1:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL eae331fb4d1aaf9e360dffe9377f0a1e
+BELONGS ya.make
+ License text:
+ // Copyright (c) Intel Corporation 2008.
+ // Copyright (c) 2008-2012 Simonson Lucanus.
+ // Copyright (c) 2012-2012 Andrii Sydorchuk.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/polygon/interval_concept.hpp [3:5]
+ boost/polygon/interval_data.hpp [3:5]
+ boost/polygon/interval_traits.hpp [3:5]
+ boost/polygon/point_concept.hpp [3:5]
+ boost/polygon/point_data.hpp [3:5]
+ boost/polygon/point_traits.hpp [3:5]
+ boost/polygon/segment_concept.hpp [3:5]
+ boost/polygon/segment_data.hpp [3:5]
+ boost/polygon/segment_traits.hpp [3:5]
+ boost/polygon/transform.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL eafe3be020a3a887925e9a047938c57b
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2007
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/algorithm/query/count.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL eb0cfdfe47ae07331ac5726d7374e2de
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/hana/ext/std/vector.hpp [5:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL eb177c2d4de38073bbfeff4b54fea4fb
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/io/wkt/write.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL eb1a7a239eede3df076875abfbb7cf41
+BELONGS ya.make
+ License text:
+ // Copyright 2005-2013 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/detail/sp_counted_base.hpp [13:13]
+
+KEEP COPYRIGHT_SERVICE_LABEL eb5cebe314db358e0f35ffe2fb48f762
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/allocators/adaptive_pool.hpp at line 5, boost/interprocess/allocators/allocator.hpp at line 5, boost/interprocess/allocators/cached_adaptive_pool.hpp at line 5, boost/interprocess/allocators/cached_node_allocator.hpp at line 5, boost/interprocess/allocators/detail/adaptive_node_pool.hpp at line 5, boost/interprocess/allocators/detail/node_pool.hpp at line 5, boost/interprocess/allocators/node_allocator.hpp at line 5, boost/interprocess/allocators/private_adaptive_pool.hpp at line 5, boost/interprocess/allocators/private_node_allocator.hpp at line 5, boost/interprocess/anonymous_shared_memory.hpp at line 5, boost/interprocess/creation_tags.hpp at line 5, boost/interprocess/detail/cast_tags.hpp at line 5, boost/interprocess/detail/config_begin.hpp at line 5, boost/interprocess/detail/config_end.hpp at line 5, boost/interprocess/detail/in_place_interface.hpp at line 5, boost/interprocess/detail/intersegment_ptr.hpp at line 5, boost/interprocess/detail/managed_memory_impl.hpp at line 5, boost/interprocess/detail/managed_multi_shared_memory.hpp at line 5, boost/interprocess/detail/min_max.hpp at line 5, boost/interprocess/detail/named_proxy.hpp at line 5, boost/interprocess/detail/os_file_functions.hpp at line 5, boost/interprocess/detail/pointer_type.hpp at line 5, boost/interprocess/detail/posix_time_types_wrk.hpp at line 5, boost/interprocess/detail/segment_manager_helper.hpp at line 5, boost/interprocess/detail/type_traits.hpp at line 4, boost/interprocess/errors.hpp at line 5, boost/interprocess/file_mapping.hpp at line 5, boost/interprocess/indexes/flat_map_index.hpp at line 5, boost/interprocess/indexes/iset_index.hpp at line 5, boost/interprocess/indexes/iunordered_set_index.hpp at line 5, boost/interprocess/indexes/map_index.hpp at line 5, boost/interprocess/indexes/null_index.hpp at line 5, boost/interprocess/indexes/unordered_map_index.hpp at line 5, boost/interprocess/interprocess_fwd.hpp at line 5, boost/interprocess/ipc/message_queue.hpp at line 5, boost/interprocess/managed_external_buffer.hpp at line 5, boost/interprocess/managed_heap_memory.hpp at line 5, boost/interprocess/managed_mapped_file.hpp at line 5, boost/interprocess/managed_shared_memory.hpp at line 5, boost/interprocess/managed_windows_shared_memory.hpp at line 5, boost/interprocess/mapped_region.hpp at line 5, boost/interprocess/mem_algo/detail/mem_algo_common.hpp at line 5, boost/interprocess/mem_algo/detail/simple_seq_fit_impl.hpp at line 5, boost/interprocess/mem_algo/rbtree_best_fit.hpp at line 5, boost/interprocess/mem_algo/simple_seq_fit.hpp at line 5, boost/interprocess/permissions.hpp at line 5, boost/interprocess/segment_manager.hpp at line 5, boost/interprocess/shared_memory_object.hpp at line 5, boost/interprocess/streams/bufferstream.hpp at line 5, boost/interprocess/streams/vectorstream.hpp at line 5, boost/interprocess/sync/detail/condition_algorithm_8a.hpp at line 5, boost/interprocess/sync/file_lock.hpp at line 5, boost/interprocess/sync/interprocess_condition.hpp at line 5, boost/interprocess/sync/interprocess_mutex.hpp at line 5, boost/interprocess/sync/interprocess_recursive_mutex.hpp at line 5, boost/interprocess/sync/interprocess_semaphore.hpp at line 5, boost/interprocess/sync/interprocess_sharable_mutex.hpp at line 9, boost/interprocess/sync/interprocess_upgradable_mutex.hpp at line 7, boost/interprocess/sync/lock_options.hpp at line 5, boost/interprocess/sync/mutex_family.hpp at line 5, boost/interprocess/sync/named_condition.hpp at line 5, boost/interprocess/sync/named_condition_any.hpp at line 5, boost/interprocess/sync/named_mutex.hpp at line 5, boost/interprocess/sync/named_recursive_mutex.hpp at line 5, boost/interprocess/sync/named_semaphore.hpp at line 5, boost/interprocess/sync/named_sharable_mutex.hpp at line 5, boost/interprocess/sync/named_upgradable_mutex.hpp at line 5, boost/interprocess/sync/null_mutex.hpp at line 5, boost/interprocess/sync/posix/condition.hpp at line 5, boost/interprocess/sync/posix/mutex.hpp at line 5, boost/interprocess/sync/posix/named_mutex.hpp at line 5, boost/interprocess/sync/posix/named_semaphore.hpp at line 5, boost/interprocess/sync/posix/pthread_helpers.hpp at line 5, boost/interprocess/sync/posix/ptime_to_timespec.hpp at line 5, boost/interprocess/sync/posix/recursive_mutex.hpp at line 5, boost/interprocess/sync/posix/semaphore.hpp at line 5, boost/interprocess/sync/posix/semaphore_wrapper.hpp at line 5, boost/interprocess/sync/scoped_lock.hpp at line 5, boost/interprocess/sync/sharable_lock.hpp at line 5, boost/interprocess/sync/shm/named_condition.hpp at line 5, boost/interprocess/sync/shm/named_condition_any.hpp at line 5, boost/interprocess/sync/shm/named_mutex.hpp at line 5, boost/interprocess/sync/shm/named_recursive_mutex.hpp at line 5, boost/interprocess/sync/shm/named_semaphore.hpp at line 5, boost/interprocess/sync/shm/named_upgradable_mutex.hpp at line 5, boost/interprocess/sync/spin/condition.hpp at line 5, boost/interprocess/sync/spin/mutex.hpp at line 5, boost/interprocess/sync/spin/recursive_mutex.hpp at line 5, boost/interprocess/sync/spin/semaphore.hpp at line 5, boost/interprocess/sync/upgradable_lock.hpp at line 5, boost/interprocess/sync/windows/condition.hpp at line 5, boost/interprocess/sync/windows/mutex.hpp at line 5, boost/interprocess/sync/windows/recursive_mutex.hpp at line 5, boost/interprocess/sync/windows/semaphore.hpp at line 5, boost/interprocess/sync/windows/sync_utils.hpp at line 5, boost/interprocess/windows_shared_memory.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/interprocess/allocators/adaptive_pool.hpp [3:5]
+ boost/interprocess/allocators/allocator.hpp [3:5]
+ boost/interprocess/allocators/cached_adaptive_pool.hpp [3:5]
+ boost/interprocess/allocators/cached_node_allocator.hpp [3:5]
+ boost/interprocess/allocators/detail/adaptive_node_pool.hpp [3:5]
+ boost/interprocess/allocators/detail/node_pool.hpp [3:5]
+ boost/interprocess/allocators/node_allocator.hpp [3:5]
+ boost/interprocess/allocators/private_adaptive_pool.hpp [3:5]
+ boost/interprocess/allocators/private_node_allocator.hpp [3:5]
+ boost/interprocess/anonymous_shared_memory.hpp [3:5]
+ boost/interprocess/creation_tags.hpp [3:5]
+ boost/interprocess/detail/cast_tags.hpp [3:5]
+ boost/interprocess/detail/config_begin.hpp [3:5]
+ boost/interprocess/detail/config_end.hpp [3:5]
+ boost/interprocess/detail/in_place_interface.hpp [3:5]
+ boost/interprocess/detail/intersegment_ptr.hpp [3:5]
+ boost/interprocess/detail/managed_memory_impl.hpp [3:5]
+ boost/interprocess/detail/managed_multi_shared_memory.hpp [3:5]
+ boost/interprocess/detail/min_max.hpp [3:3]
+ boost/interprocess/detail/named_proxy.hpp [3:5]
+ boost/interprocess/detail/os_file_functions.hpp [3:5]
+ boost/interprocess/detail/pointer_type.hpp [3:4]
+ boost/interprocess/detail/posix_time_types_wrk.hpp [3:5]
+ boost/interprocess/detail/segment_manager_helper.hpp [3:5]
+ boost/interprocess/detail/type_traits.hpp [2:3]
+ boost/interprocess/errors.hpp [3:5]
+ boost/interprocess/file_mapping.hpp [3:5]
+ boost/interprocess/indexes/flat_map_index.hpp [3:5]
+ boost/interprocess/indexes/iset_index.hpp [3:5]
+ boost/interprocess/indexes/iunordered_set_index.hpp [3:5]
+ boost/interprocess/indexes/map_index.hpp [3:5]
+ boost/interprocess/indexes/null_index.hpp [3:5]
+ boost/interprocess/indexes/unordered_map_index.hpp [3:5]
+ boost/interprocess/interprocess_fwd.hpp [3:5]
+ boost/interprocess/ipc/message_queue.hpp [3:5]
+ boost/interprocess/managed_external_buffer.hpp [3:5]
+ boost/interprocess/managed_heap_memory.hpp [3:5]
+ boost/interprocess/managed_mapped_file.hpp [3:5]
+ boost/interprocess/managed_shared_memory.hpp [3:5]
+ boost/interprocess/managed_windows_shared_memory.hpp [3:5]
+ boost/interprocess/mapped_region.hpp [3:5]
+ boost/interprocess/mem_algo/detail/mem_algo_common.hpp [3:5]
+ boost/interprocess/mem_algo/detail/simple_seq_fit_impl.hpp [3:5]
+ boost/interprocess/mem_algo/rbtree_best_fit.hpp [3:5]
+ boost/interprocess/mem_algo/simple_seq_fit.hpp [3:5]
+ boost/interprocess/permissions.hpp [3:5]
+ boost/interprocess/segment_manager.hpp [3:5]
+ boost/interprocess/shared_memory_object.hpp [3:5]
+ boost/interprocess/streams/bufferstream.hpp [3:5]
+ boost/interprocess/streams/vectorstream.hpp [3:5]
+ boost/interprocess/sync/detail/condition_algorithm_8a.hpp [3:5]
+ boost/interprocess/sync/file_lock.hpp [3:5]
+ boost/interprocess/sync/interprocess_condition.hpp [3:5]
+ boost/interprocess/sync/interprocess_mutex.hpp [3:5]
+ boost/interprocess/sync/interprocess_recursive_mutex.hpp [3:5]
+ boost/interprocess/sync/interprocess_semaphore.hpp [3:5]
+ boost/interprocess/sync/interprocess_sharable_mutex.hpp [7:9]
+ boost/interprocess/sync/interprocess_upgradable_mutex.hpp [5:7]
+ boost/interprocess/sync/lock_options.hpp [3:5]
+ boost/interprocess/sync/mutex_family.hpp [3:5]
+ boost/interprocess/sync/named_condition.hpp [3:5]
+ boost/interprocess/sync/named_condition_any.hpp [3:5]
+ boost/interprocess/sync/named_mutex.hpp [3:5]
+ boost/interprocess/sync/named_recursive_mutex.hpp [3:5]
+ boost/interprocess/sync/named_semaphore.hpp [3:5]
+ boost/interprocess/sync/named_sharable_mutex.hpp [3:5]
+ boost/interprocess/sync/named_upgradable_mutex.hpp [3:5]
+ boost/interprocess/sync/null_mutex.hpp [3:5]
+ boost/interprocess/sync/posix/condition.hpp [3:5]
+ boost/interprocess/sync/posix/mutex.hpp [3:5]
+ boost/interprocess/sync/posix/named_mutex.hpp [3:5]
+ boost/interprocess/sync/posix/named_semaphore.hpp [3:5]
+ boost/interprocess/sync/posix/pthread_helpers.hpp [3:5]
+ boost/interprocess/sync/posix/ptime_to_timespec.hpp [3:5]
+ boost/interprocess/sync/posix/recursive_mutex.hpp [3:5]
+ boost/interprocess/sync/posix/semaphore.hpp [3:5]
+ boost/interprocess/sync/posix/semaphore_wrapper.hpp [3:5]
+ boost/interprocess/sync/scoped_lock.hpp [3:5]
+ boost/interprocess/sync/sharable_lock.hpp [3:5]
+ boost/interprocess/sync/shm/named_condition.hpp [3:5]
+ boost/interprocess/sync/shm/named_condition_any.hpp [3:5]
+ boost/interprocess/sync/shm/named_mutex.hpp [3:5]
+ boost/interprocess/sync/shm/named_recursive_mutex.hpp [3:5]
+ boost/interprocess/sync/shm/named_semaphore.hpp [3:5]
+ boost/interprocess/sync/shm/named_upgradable_mutex.hpp [3:5]
+ boost/interprocess/sync/spin/condition.hpp [3:5]
+ boost/interprocess/sync/spin/mutex.hpp [3:5]
+ boost/interprocess/sync/spin/recursive_mutex.hpp [3:5]
+ boost/interprocess/sync/spin/semaphore.hpp [3:5]
+ boost/interprocess/sync/upgradable_lock.hpp [3:5]
+ boost/interprocess/sync/windows/condition.hpp [3:5]
+ boost/interprocess/sync/windows/mutex.hpp [3:5]
+ boost/interprocess/sync/windows/recursive_mutex.hpp [3:5]
+ boost/interprocess/sync/windows/semaphore.hpp [3:5]
+ boost/interprocess/sync/windows/sync_utils.hpp [3:5]
+ boost/interprocess/windows_shared_memory.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL eb6bb6f91accb539f5892840b9273ed5
+BELONGS ya.make
+ License text:
+ /* Copyright (c) 2002,2003, 2007 CrystalClear Software, Inc.
* Use, modification and distribution is subject to the
- * Boost Software License, Version 1.0. (See accompanying
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/date_time/adjust_functors.hpp [4:6]
- boost/date_time/constrained_value.hpp [4:6]
- boost/date_time/date.hpp [4:6]
- boost/date_time/date_defs.hpp [4:6]
- boost/date_time/date_duration.hpp [4:6]
- boost/date_time/date_format_simple.hpp [4:6]
- boost/date_time/date_formatting_locales.hpp [4:6]
- boost/date_time/date_iterator.hpp [4:6]
- boost/date_time/gregorian/formatters.hpp [4:6]
- boost/date_time/gregorian/formatters_limited.hpp [4:6]
- boost/date_time/gregorian/greg_calendar.hpp [4:6]
- boost/date_time/gregorian/greg_date.hpp [4:6]
- boost/date_time/gregorian/greg_day.hpp [4:6]
- boost/date_time/gregorian/greg_day_of_year.hpp [4:6]
- boost/date_time/gregorian/greg_duration.hpp [4:6]
- boost/date_time/gregorian/greg_facet.hpp [4:6]
- boost/date_time/gregorian/greg_month.hpp [4:6]
- boost/date_time/gregorian/greg_weekday.hpp [4:6]
- boost/date_time/gregorian/greg_year.hpp [4:6]
- boost/date_time/gregorian/greg_ymd.hpp [4:6]
- boost/date_time/gregorian/gregorian_types.hpp [4:6]
- boost/date_time/gregorian_calendar.hpp [4:6]
- boost/date_time/gregorian_calendar.ipp [1:3]
- boost/date_time/int_adapter.hpp [4:6]
- boost/date_time/iso_format.hpp [4:6]
- boost/date_time/local_time_adjustor.hpp [4:6]
- boost/date_time/local_timezone_defs.hpp [4:6]
- boost/date_time/parse_format_base.hpp [4:6]
- boost/date_time/period.hpp [4:6]
- boost/date_time/posix_time/posix_time_duration.hpp [4:6]
- boost/date_time/posix_time/posix_time_system.hpp [4:6]
- boost/date_time/posix_time/posix_time_types.hpp [1:3]
- boost/date_time/posix_time/ptime.hpp [4:6]
- boost/date_time/posix_time/time_formatters_limited.hpp [4:6]
- boost/date_time/posix_time/time_parsers.hpp [4:6]
- boost/date_time/posix_time/time_period.hpp [4:6]
- boost/date_time/special_defs.hpp [4:6]
- boost/date_time/time_defs.hpp [4:6]
- boost/date_time/time_duration.hpp [4:6]
- boost/date_time/time_formatting_streams.hpp [4:6]
- boost/date_time/time_iterator.hpp [4:6]
- boost/date_time/time_resolution_traits.hpp [4:6]
- boost/date_time/time_system_counted.hpp [4:6]
- boost/date_time/year_month_day.hpp [4:6]
- libs/date_time/src/gregorian/date_generators.cpp [1:3]
- libs/date_time/src/gregorian/gregorian_types.cpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL db302fba9b60620d0f529b393c443760
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/parameter/aux_/cast.hpp at line 3, boost/parameter/aux_/maybe.hpp at line 3, boost/parameter/aux_/set.hpp at line 3, boost/parameter/aux_/template_keyword.hpp at line 3, boost/parameter/name.hpp at line 3, boost/parameter/preprocessor.hpp at line 3, boost/parameter/python.hpp at line 3, boost/parameter/value_type.hpp at line 3
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/parameter/aux_/cast.hpp [1:3]
- boost/parameter/aux_/maybe.hpp [1:3]
- boost/parameter/aux_/set.hpp [1:3]
- boost/parameter/aux_/template_keyword.hpp [1:3]
- boost/parameter/name.hpp [1:3]
- boost/parameter/preprocessor.hpp [1:3]
- boost/parameter/python.hpp [1:3]
- boost/parameter/value_type.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL db499a5ed298660439fc712d0054f814
-BELONGS ya.make
- License text:
- Copyright (c) 2001 Doug Gregor
- Copyright (c) 1999-2003 Jaakko Jarvi
- Copyright (c) 2001-2011 Joel de Guzman
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/container/generation/ignore.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL dbc2f407aa3399bea12ef980f5509329
-BELONGS ya.make
- License text:
- // Copyright (c) 2001-2005 Peter Dimov
- // Copyright (c) 2006 Michael van der Westhuizen
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/detail/atomic_count_solaris.hpp [8:9]
-
-KEEP COPYRIGHT_SERVICE_LABEL dc1428e992645fc469a5b35c6395d317
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/assign.hpp at line 5, boost/assign/assignment_exception.hpp at line 5, boost/assign/list_inserter.hpp at line 5, boost/assign/list_of.hpp at line 5, boost/assign/std.hpp at line 5, boost/assign/std/deque.hpp at line 5, boost/assign/std/list.hpp at line 5, boost/assign/std/map.hpp at line 5, boost/assign/std/queue.hpp at line 5, boost/assign/std/set.hpp at line 5, boost/assign/std/slist.hpp at line 5, boost/assign/std/stack.hpp at line 5, boost/assign/std/vector.hpp at line 5, boost/range.hpp at line 5, boost/range/begin.hpp at line 5, boost/range/config.hpp at line 5, boost/range/const_iterator.hpp at line 5, boost/range/const_reverse_iterator.hpp at line 5, boost/range/detail/begin.hpp at line 5, boost/range/detail/common.hpp at line 5, boost/range/detail/detail_str.hpp at line 5, boost/range/detail/difference_type.hpp at line 5, boost/range/detail/empty.hpp at line 5, boost/range/detail/end.hpp at line 5, boost/range/detail/implementation_help.hpp at line 5, boost/range/detail/sfinae.hpp at line 5, boost/range/detail/size_type.hpp at line 5, boost/range/detail/sizer.hpp at line 5, boost/range/detail/value_type.hpp at line 5, boost/range/difference_type.hpp at line 5, boost/range/empty.hpp at line 5, boost/range/end.hpp at line 5, boost/range/iterator.hpp at line 5, boost/range/metafunctions.hpp at line 5, boost/range/mutable_iterator.hpp at line 5, boost/range/rbegin.hpp at line 5, boost/range/reference.hpp at line 5, boost/range/rend.hpp at line 5, boost/range/result_iterator.hpp at line 5, boost/range/reverse_iterator.hpp at line 5, boost/range/reverse_result_iterator.hpp at line 5, boost/range/size.hpp at line 5, boost/range/size_type.hpp at line 5, boost/range/sub_range.hpp at line 5, boost/range/value_type.hpp at line 5
- License text:
- // Copyright Thorsten Ottosen 2003-2004. Use, modification and
- // distribution is subject to the Boost Software License, Version
- // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/assign.hpp [3:5]
- boost/assign/assignment_exception.hpp [3:5]
- boost/assign/list_inserter.hpp [3:5]
- boost/assign/list_of.hpp [3:5]
- boost/assign/std.hpp [3:5]
- boost/assign/std/deque.hpp [3:5]
- boost/assign/std/list.hpp [3:5]
- boost/assign/std/map.hpp [3:5]
- boost/assign/std/queue.hpp [3:5]
- boost/assign/std/set.hpp [3:5]
- boost/assign/std/slist.hpp [3:5]
- boost/assign/std/stack.hpp [3:5]
- boost/assign/std/vector.hpp [3:5]
- boost/range.hpp [3:5]
- boost/range/begin.hpp [3:5]
- boost/range/config.hpp [3:5]
- boost/range/const_iterator.hpp [3:5]
- boost/range/const_reverse_iterator.hpp [3:5]
- boost/range/detail/begin.hpp [3:5]
- boost/range/detail/common.hpp [3:5]
- boost/range/detail/detail_str.hpp [3:5]
- boost/range/detail/difference_type.hpp [3:5]
- boost/range/detail/empty.hpp [3:5]
- boost/range/detail/end.hpp [3:5]
- boost/range/detail/implementation_help.hpp [3:5]
- boost/range/detail/sfinae.hpp [3:5]
- boost/range/detail/size_type.hpp [3:5]
- boost/range/detail/sizer.hpp [3:5]
- boost/range/detail/value_type.hpp [3:5]
- boost/range/difference_type.hpp [3:5]
- boost/range/empty.hpp [3:5]
- boost/range/end.hpp [3:5]
- boost/range/iterator.hpp [3:5]
- boost/range/metafunctions.hpp [3:5]
- boost/range/mutable_iterator.hpp [3:5]
- boost/range/rbegin.hpp [3:5]
- boost/range/reference.hpp [3:5]
- boost/range/rend.hpp [3:5]
- boost/range/result_iterator.hpp [3:5]
- boost/range/reverse_iterator.hpp [3:5]
- boost/range/reverse_result_iterator.hpp [3:5]
- boost/range/size.hpp [3:5]
- boost/range/size_type.hpp [3:5]
- boost/range/sub_range.hpp [3:6]
- boost/range/value_type.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL dc340c37a98d33ae61515bc914683bde
-BELONGS ya.make
- License text:
- * Copyright 2003 Guillaume Melquiond
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/interval/arith3.hpp [8:8]
- boost/numeric/interval/compare/certain.hpp [3:3]
- boost/numeric/interval/compare/possible.hpp [3:3]
- boost/numeric/interval/ext/integer.hpp [3:3]
- boost/numeric/interval/io.hpp [10:10]
- boost/numeric/interval/policies.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL dcc3768299b5e568b89e4cebc118422e
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/typeof/msvc/typeof_impl.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL dd20af87a7fdf9f589db31af1358ab8c
-BELONGS ya.make
- License text:
- // Copyright (C) 2000 Gary Powell (gwpowell@hotmail.com)
- // Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/lambda/exceptions.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL dd7064b16e3bfd8491f05e3483f06f45
-BELONGS ya.make
- License text:
- // Copyright 2000 John Maddock (john@johnmaddock.co.uk)
- // Copyright 2000 Jeremy Siek (jsiek@lsc.nd.edu)
- // Copyright 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_traits/conversion_traits.hpp [2:4]
- boost/type_traits/is_convertible.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL dd8c56c665cbeb0d19508d2df3017bfb
-BELONGS ya.make
- License text:
- // (C) Copyright Ion Gaztanaga 2008
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/intrusive/priority_compare.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL dd8f136175da98ea2d07dcd9de1ecaf5
-BELONGS ya.make
- License text:
- // Copyright (c) 2008, 2011 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/detail/spinlock_gcc_arm.hpp [5:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL ddb0c5bfffd13fe5495adc6471731e23
-BELONGS ya.make
- License text:
- // Copyright (c) 2013 Christopher Kormanyos
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/detail/airy_ai_bi_zero.hpp [1:3]
- boost/math/special_functions/detail/bessel_jy_zero.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL de436355f6cfaff01d7ce0d889764ae9
-BELONGS ya.make
- License text:
- // Copyright Beman Dawes 2002-2009
- // Copyright Jan Langer 2002
- // Copyright Dietmar Kuehl 2001
- // Copyright Vladimir Prus 2002
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/filesystem/operations.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL de5950ef4f0982e19312dacc44bc035d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/cstdfloat.hpp at line 6, boost/math/cstdfloat/cstdfloat_cmath.hpp at line 6, boost/math/cstdfloat/cstdfloat_complex.hpp at line 6, boost/math/cstdfloat/cstdfloat_complex_std.hpp at line 6, boost/math/cstdfloat/cstdfloat_iostream.hpp at line 6, boost/math/cstdfloat/cstdfloat_limits.hpp at line 6, boost/math/cstdfloat/cstdfloat_types.hpp at line 6, boost/math/distributions/arcsine.hpp at line 7
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/cstdfloat.hpp [2:6]
- boost/math/cstdfloat/cstdfloat_cmath.hpp [2:6]
- boost/math/cstdfloat/cstdfloat_complex.hpp [2:6]
- boost/math/cstdfloat/cstdfloat_complex_std.hpp [2:6]
- boost/math/cstdfloat/cstdfloat_iostream.hpp [2:6]
- boost/math/cstdfloat/cstdfloat_limits.hpp [2:6]
- boost/math/cstdfloat/cstdfloat_types.hpp [2:6]
- boost/math/distributions/arcsine.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL de772d73074b2097bc4d45f814122331
-BELONGS ya.make
- License text:
- // Copyright (c) 2017 Dynatrace
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/xlcpp_zos.hpp [1:1]
- boost/config/platform/zos.hpp [1:1]
- boost/config/stdlib/xlcpp_zos.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL de89ae6eae04701fcbcc7e54b40b1fe6
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/assign/ptr_list_inserter.hpp at line 5, boost/assign/ptr_list_of.hpp at line 5, boost/ptr_container/clone_allocator.hpp at line 6, boost/ptr_container/detail/associative_ptr_container.hpp at line 6, boost/ptr_container/detail/map_iterator.hpp at line 6, boost/ptr_container/detail/reversible_ptr_container.hpp at line 6, boost/ptr_container/detail/scoped_deleter.hpp at line 6, boost/ptr_container/detail/void_ptr_iterator.hpp at line 6, boost/ptr_container/exception.hpp at line 6, boost/ptr_container/nullable.hpp at line 6, boost/ptr_container/ptr_array.hpp at line 6, boost/ptr_container/ptr_deque.hpp at line 6, boost/ptr_container/ptr_list.hpp at line 6, boost/ptr_container/ptr_map.hpp at line 6, boost/ptr_container/ptr_map_adapter.hpp at line 6, boost/ptr_container/ptr_sequence_adapter.hpp at line 6, boost/ptr_container/ptr_set.hpp at line 6, boost/ptr_container/ptr_set_adapter.hpp at line 6, boost/ptr_container/ptr_vector.hpp at line 6
- License text:
- // Copyright Thorsten Ottosen 2003-2005. Use, modification and
- // distribution is subject to the Boost Software License, Version
- // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/assign/ptr_list_inserter.hpp [3:5]
- boost/assign/ptr_list_of.hpp [3:5]
- boost/ptr_container/clone_allocator.hpp [4:6]
- boost/ptr_container/detail/associative_ptr_container.hpp [4:6]
- boost/ptr_container/detail/map_iterator.hpp [4:6]
- boost/ptr_container/detail/reversible_ptr_container.hpp [4:6]
- boost/ptr_container/detail/scoped_deleter.hpp [4:6]
- boost/ptr_container/detail/void_ptr_iterator.hpp [4:6]
- boost/ptr_container/exception.hpp [4:6]
- boost/ptr_container/nullable.hpp [4:6]
- boost/ptr_container/ptr_array.hpp [4:6]
- boost/ptr_container/ptr_deque.hpp [4:6]
- boost/ptr_container/ptr_list.hpp [4:6]
- boost/ptr_container/ptr_map.hpp [4:6]
- boost/ptr_container/ptr_map_adapter.hpp [4:6]
- boost/ptr_container/ptr_sequence_adapter.hpp [4:6]
- boost/ptr_container/ptr_set.hpp [4:6]
- boost/ptr_container/ptr_set_adapter.hpp [4:6]
- boost/ptr_container/ptr_vector.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL dea2c85dcebaf59c9970e07c8eec47d4
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/vacpp.hpp [1:7]
- boost/config/compiler/visualc.hpp [1:8]
- boost/config/stdlib/libcomo.hpp [1:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL dec05a67099272938bba13a652ec746e
-BELONGS ya.make
- License text:
- Copyright (c) 2002 Joel de Guzman
- Copyright (c) 2002-2003 Hartmut Kaiser
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/phoenix/tuple_helpers.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL df0ccc1d436763dd3030b1b12f23d451
-BELONGS ya.make
- License text:
- // Copyright 2008,2012 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/detail/sp_forward.hpp [12:12]
-
-KEEP COPYRIGHT_SERVICE_LABEL df8244b2e7ca5d0a2a5c57b5a44ef2f1
-BELONGS ya.make
- License text:
- // Copyright (c) 2012 Barend Gehrels, Amsterdam, the Netherlands.
- // Copyright (c) 2012 Bruno Lalande, Paris, France.
- // Copyright (c) 2012 Mateusz Loskot, London, UK.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/util/bare_type.hpp [3:5]
- boost/geometry/util/calculation_type.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL dfa7e438d1da1445b96c94c2d5856b8e
-BELONGS ya.make
- License text:
- // Copyright (c) 2016-2017 Vinnie Falco (vinnie dot falco at gmail dot com)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/beast/core.hpp [2:2]
- boost/beast/core/bind_handler.hpp [2:2]
- boost/beast/core/buffered_read_stream.hpp [2:2]
- boost/beast/core/buffers_adapter.hpp [2:2]
- boost/beast/core/buffers_cat.hpp [2:2]
- boost/beast/core/buffers_prefix.hpp [2:2]
- boost/beast/core/buffers_suffix.hpp [2:2]
- boost/beast/core/buffers_to_string.hpp [2:2]
- boost/beast/core/detail/allocator.hpp [2:2]
- boost/beast/core/detail/base64.hpp [2:2]
- boost/beast/core/detail/bind_handler.hpp [2:2]
- boost/beast/core/detail/buffers_ref.hpp [2:2]
- boost/beast/core/detail/clamp.hpp [2:2]
- boost/beast/core/detail/config.hpp [2:2]
- boost/beast/core/detail/empty_base_optimization.hpp [2:2]
- boost/beast/core/detail/integer_sequence.hpp [2:2]
- boost/beast/core/detail/ostream.hpp [2:2]
- boost/beast/core/detail/sha1.hpp [2:2]
- boost/beast/core/detail/static_ostream.hpp [2:2]
- boost/beast/core/detail/static_string.hpp [2:2]
- boost/beast/core/detail/type_traits.hpp [2:2]
- boost/beast/core/detail/variant.hpp [2:2]
- boost/beast/core/error.hpp [2:2]
- boost/beast/core/flat_buffer.hpp [2:2]
- boost/beast/core/flat_static_buffer.hpp [2:2]
- boost/beast/core/handler_ptr.hpp [2:2]
- boost/beast/core/impl/buffered_read_stream.ipp [2:2]
- boost/beast/core/impl/buffers_adapter.ipp [2:2]
- boost/beast/core/impl/buffers_cat.ipp [2:2]
- boost/beast/core/impl/buffers_prefix.ipp [2:2]
- boost/beast/core/impl/buffers_suffix.ipp [2:2]
- boost/beast/core/impl/flat_buffer.ipp [2:2]
- boost/beast/core/impl/flat_static_buffer.ipp [2:2]
- boost/beast/core/impl/handler_ptr.ipp [2:2]
- boost/beast/core/impl/multi_buffer.ipp [2:2]
- boost/beast/core/impl/read_size.ipp [2:2]
- boost/beast/core/impl/static_buffer.ipp [2:2]
- boost/beast/core/impl/static_string.ipp [2:2]
- boost/beast/core/impl/string_param.ipp [2:2]
- boost/beast/core/multi_buffer.hpp [2:2]
- boost/beast/core/ostream.hpp [2:2]
- boost/beast/core/read_size.hpp [2:2]
- boost/beast/core/span.hpp [2:2]
- boost/beast/core/static_buffer.hpp [2:2]
- boost/beast/core/static_string.hpp [2:2]
- boost/beast/core/string.hpp [2:2]
- boost/beast/core/string_param.hpp [2:2]
- boost/beast/core/type_traits.hpp [2:2]
- boost/beast/http.hpp [2:2]
- boost/beast/http/basic_dynamic_body.hpp [2:2]
- boost/beast/http/basic_file_body.hpp [2:2]
- boost/beast/http/basic_parser.hpp [2:2]
- boost/beast/http/buffer_body.hpp [2:2]
- boost/beast/http/chunk_encode.hpp [2:2]
- boost/beast/http/detail/basic_parsed_list.hpp [2:2]
- boost/beast/http/detail/basic_parser.hpp [2:2]
- boost/beast/http/detail/chunk_encode.hpp [2:2]
- boost/beast/http/detail/rfc7230.hpp [2:2]
- boost/beast/http/detail/type_traits.hpp [2:2]
- boost/beast/http/dynamic_body.hpp [2:2]
- boost/beast/http/empty_body.hpp [2:2]
- boost/beast/http/error.hpp [2:2]
- boost/beast/http/field.hpp [2:2]
- boost/beast/http/fields.hpp [2:2]
- boost/beast/http/file_body.hpp [2:2]
- boost/beast/http/impl/basic_parser.ipp [2:2]
- boost/beast/http/impl/chunk_encode.ipp [2:2]
- boost/beast/http/impl/error.ipp [2:2]
- boost/beast/http/impl/field.ipp [2:2]
- boost/beast/http/impl/fields.ipp [2:2]
- boost/beast/http/impl/file_body_win32.ipp [2:2]
- boost/beast/http/impl/message.ipp [2:2]
- boost/beast/http/impl/parser.ipp [2:2]
- boost/beast/http/impl/read.ipp [2:2]
- boost/beast/http/impl/rfc7230.ipp [2:2]
- boost/beast/http/impl/serializer.ipp [2:2]
- boost/beast/http/impl/status.ipp [2:2]
- boost/beast/http/impl/verb.ipp [2:2]
- boost/beast/http/impl/write.ipp [2:2]
- boost/beast/http/message.hpp [2:2]
- boost/beast/http/parser.hpp [2:2]
- boost/beast/http/read.hpp [2:2]
- boost/beast/http/rfc7230.hpp [2:2]
- boost/beast/http/serializer.hpp [2:2]
- boost/beast/http/span_body.hpp [2:2]
- boost/beast/http/status.hpp [2:2]
- boost/beast/http/string_body.hpp [2:2]
- boost/beast/http/type_traits.hpp [2:2]
- boost/beast/http/vector_body.hpp [2:2]
- boost/beast/http/verb.hpp [2:2]
- boost/beast/http/write.hpp [2:2]
- boost/beast/version.hpp [2:2]
- boost/beast/websocket.hpp [2:2]
- boost/beast/websocket/detail/error.hpp [2:2]
- boost/beast/websocket/detail/frame.hpp [2:2]
- boost/beast/websocket/detail/hybi13.hpp [2:2]
- boost/beast/websocket/detail/mask.hpp [2:2]
- boost/beast/websocket/detail/pausation.hpp [2:2]
- boost/beast/websocket/detail/pmd_extension.hpp [2:2]
- boost/beast/websocket/detail/stream_base.hpp [2:2]
- boost/beast/websocket/detail/type_traits.hpp [2:2]
- boost/beast/websocket/detail/utf8_checker.hpp [2:2]
- boost/beast/websocket/error.hpp [2:2]
- boost/beast/websocket/impl/accept.ipp [2:2]
- boost/beast/websocket/impl/close.ipp [2:2]
- boost/beast/websocket/impl/error.ipp [2:2]
- boost/beast/websocket/impl/handshake.ipp [2:2]
- boost/beast/websocket/impl/ping.ipp [2:2]
- boost/beast/websocket/impl/read.ipp [2:2]
- boost/beast/websocket/impl/rfc6455.ipp [2:2]
- boost/beast/websocket/impl/ssl.ipp [2:2]
- boost/beast/websocket/impl/stream.ipp [2:2]
- boost/beast/websocket/impl/teardown.ipp [2:2]
- boost/beast/websocket/impl/write.ipp [2:2]
- boost/beast/websocket/option.hpp [2:2]
- boost/beast/websocket/rfc6455.hpp [2:2]
- boost/beast/websocket/role.hpp [2:2]
- boost/beast/websocket/ssl.hpp [2:2]
- boost/beast/websocket/stream.hpp [2:2]
- boost/beast/websocket/stream_fwd.hpp [2:2]
- boost/beast/websocket/teardown.hpp [2:2]
- boost/beast/zlib.hpp [2:2]
- boost/beast/zlib/deflate_stream.hpp [2:2]
- boost/beast/zlib/detail/bitstream.hpp [2:2]
- boost/beast/zlib/detail/deflate_stream.hpp [2:2]
- boost/beast/zlib/detail/inflate_stream.hpp [2:2]
- boost/beast/zlib/detail/ranges.hpp [2:2]
- boost/beast/zlib/detail/window.hpp [2:2]
- boost/beast/zlib/error.hpp [2:2]
- boost/beast/zlib/impl/error.ipp [2:2]
- boost/beast/zlib/inflate_stream.hpp [2:2]
- boost/beast/zlib/zlib.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL e00f1e8f667cb6fd0131b3aaf2dc86a1
-BELONGS ya.make
- License text:
- // Copyright 2012, Philipp Moeller
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/property_map/function_property_map.hpp [5:5]
- boost/property_map/transform_value_property_map.hpp [5:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL e030a2caab5278ef969181ef6d2dc9cb
-BELONGS ya.make
- License text:
- // Copyright (c) 2012-2015 Adam Wulkiewicz, Lodz, Poland.
- // Copyright (c) 2011-2013 Andrew Hundt.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/index/detail/varray.hpp [3:4]
- boost/geometry/index/detail/varray_detail.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL e09ea41bd5eb67cdd8fbe0f78743b80e
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/integer/common_factor.hpp at line 5, boost/math/common_factor.hpp at line 5
- License text:
- // (C) Copyright Daryle Walker 2001-2002.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/integer/common_factor.hpp [3:5]
- boost/math/common_factor.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL e0a85874f71f22af59d2d33636d28925
-BELONGS ya.make
- License text:
- Copyright (c) 2005-2011 Joel de Guzman
- Copyright (c) 2011 Thomas Heller
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/phoenix/scope/this.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL e0de0d48e0b069a801b1ac89d6186a5b
-BELONGS ya.make
- License text:
- Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/beast/zlib/deflate_stream.hpp [29:29]
- boost/beast/zlib/detail/bitstream.hpp [11:11]
- boost/beast/zlib/detail/deflate_stream.hpp [11:11]
- boost/beast/zlib/detail/inflate_stream.hpp [11:11]
- boost/beast/zlib/detail/ranges.hpp [11:11]
- boost/beast/zlib/detail/window.hpp [11:11]
- boost/beast/zlib/error.hpp [22:22]
- boost/beast/zlib/impl/error.ipp [11:11]
- boost/beast/zlib/inflate_stream.hpp [18:18]
- boost/beast/zlib/zlib.hpp [19:19]
-
-KEEP COPYRIGHT_SERVICE_LABEL e0fed193286f3ac61728fdf5e779701e
-BELONGS ya.make
- License text:
- // Copyright 2012 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/ratio/config.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL e10cb8d2c225a3e0c9808754430d0602
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/detail/platform.hpp at line 4
- License text:
- // Copyright 2006 Roland Schwarz.
- // (C) Copyright 2007 Anthony Williams
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/detail/platform.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL e1162d87fffbacf38e42e78ebd71eed4
-BELONGS ya.make
- License text:
- // Copyright (C) 2005, Fernando Luis Cacciola Carballal.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/optional/optional_io.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL e14097bb568a6fdfd4955810061426a2
-BELONGS ya.make
- License text:
- Copyright (c) Marshall Clow 2012-2015.
- Copyright (c) Beman Dawes 2015
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/utility/string_view.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL e145b329e7fa084f9f500c3f9a0444c3
-BELONGS ya.make
- License text:
- // Copyright (c) 2015-2018 Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/formulas/thomas_inverse.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL e185740764090ee8ec31be4719fbb5e2
-BELONGS ya.make
- License text:
- Copyright 2015 NumScale SAS
- Copyright 2015 LRI UMR 8623 CNRS/University Paris Sud XI
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/align/assume_aligned.hpp [2:3]
- boost/align/detail/assume_aligned.hpp [2:3]
- boost/align/detail/assume_aligned_gcc.hpp [2:3]
- boost/align/detail/assume_aligned_intel.hpp [2:3]
- boost/align/detail/assume_aligned_msvc.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL e1b07ee82c29a145784d4cf62ade4b2a
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic.hpp [2:14]
- boost/spirit/home/classic/core.hpp [2:8]
- boost/spirit/home/classic/core/non_terminal/grammar.hpp [2:5]
- boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp [2:5]
- boost/spirit/home/classic/phoenix/closures.hpp [3:4]
- boost/spirit/home/classic/utility.hpp [2:9]
-
-KEEP COPYRIGHT_SERVICE_LABEL e1dbb02b4e43747286367cdd693bef41
-BELONGS ya.make
- License text:
- // This file was modified by Oracle on 2013-2016.
- // Modifications copyright (c) 2013-2016 Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/relate/result.hpp [6:7]
- boost/geometry/util/range.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL e20ed79246192f741a7943dd114bd714
-BELONGS ya.make
- License text:
- // Copyright (C) 2017
- // Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/pthread/pthread_helpers.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL e213d73918aa882afa60f3d0e8ec7b88
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/adaptor/define_adaptor.hpp at line 5, boost/range/adaptor/type_erased.hpp at line 5, boost/range/any_range.hpp at line 3, boost/range/combine.hpp at line 3, boost/range/counting_range.hpp at line 3, boost/range/detail/any_iterator.hpp at line 5, boost/range/detail/any_iterator_buffer.hpp at line 5, boost/range/detail/any_iterator_interface.hpp at line 5, boost/range/detail/any_iterator_wrapper.hpp at line 5, boost/range/has_range_iterator.hpp at line 5, boost/range/irange.hpp at line 5, boost/range/istream_range.hpp at line 3
- License text:
- // Copyright Neil Groves 2010. Use, modification and
- // distribution is subject to the Boost Software License, Version
- // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/range/adaptor/define_adaptor.hpp [3:5]
- boost/range/adaptor/type_erased.hpp [3:5]
- boost/range/any_range.hpp [1:3]
- boost/range/combine.hpp [1:3]
- boost/range/counting_range.hpp [1:3]
- boost/range/detail/any_iterator.hpp [3:5]
- boost/range/detail/any_iterator_buffer.hpp [3:5]
- boost/range/detail/any_iterator_interface.hpp [3:5]
- boost/range/detail/any_iterator_wrapper.hpp [3:5]
- boost/range/has_range_iterator.hpp [3:5]
- boost/range/irange.hpp [3:5]
- boost/range/istream_range.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL e21e25840accbca4a29aa542c16dee62
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/detail/min_max.hpp at line 4
- License text:
- // Copyright 2016 John Maddock. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/multiprecision/detail/min_max.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL e231c4f18ec32c50a689f1faad621776
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/algorithm.hpp at line 10
- License text:
- // Copyright 2009 Neil Groves.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/range/algorithm.hpp [8:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL e238b7f2d3a3ead245b8ba50c408e028
-BELONGS ya.make
- License text:
- // Copyright Aleksey Gurtovoy 2000-2010
- // Copyright David Abrahams 2000-2002
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/zip_view.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL e242cf22a8569c95827537aca7b8285d
-BELONGS ya.make
- License text:
- * Copyright (c) 2003
- * John Maddock
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/regex/v4/regex_iterator.hpp [3:4]
- boost/regex/v4/regex_token_iterator.hpp [3:4]
- boost/regex/v4/regex_traits.hpp [3:4]
- boost/regex/v4/syntax_type.hpp [3:4]
- boost/regex/v4/u32regex_iterator.hpp [3:4]
- boost/regex/v4/u32regex_token_iterator.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL e2ac57f2ea4023ec9b11936484e4a2f0
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2005-2006 Dan Marsden
- Copyright (c) 2010 Christopher Schmidt
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/adapted/adt.hpp [2:4]
- boost/fusion/adapted/adt/adapt_adt_named.hpp [2:4]
- boost/fusion/adapted/adt/adapt_assoc_adt_named.hpp [2:2]
- boost/fusion/adapted/adt/detail/adapt_base.hpp [2:4]
- boost/fusion/adapted/adt/detail/extension.hpp [2:4]
- boost/fusion/adapted/array.hpp [2:4]
- boost/fusion/adapted/array/at_impl.hpp [2:2]
- boost/fusion/adapted/array/begin_impl.hpp [2:2]
- boost/fusion/adapted/array/category_of_impl.hpp [2:2]
- boost/fusion/adapted/array/deref_impl.hpp [2:2]
- boost/fusion/adapted/array/end_impl.hpp [2:2]
- boost/fusion/adapted/array/is_sequence_impl.hpp [2:2]
- boost/fusion/adapted/array/is_view_impl.hpp [2:2]
- boost/fusion/adapted/array/size_impl.hpp [2:2]
- boost/fusion/adapted/array/tag_of.hpp [2:2]
- boost/fusion/adapted/array/value_at_impl.hpp [2:2]
- boost/fusion/adapted/array/value_of_impl.hpp [2:2]
- boost/fusion/adapted/struct/detail/namespace.hpp [2:3]
- boost/fusion/adapted/struct/detail/proxy_type.hpp [2:3]
- boost/fusion/algorithm/iteration/detail/preprocessed/iter_fold.hpp [2:3]
- boost/fusion/algorithm/iteration/detail/preprocessed/reverse_iter_fold.hpp [2:3]
- boost/fusion/algorithm/iteration/iter_fold.hpp [2:4]
- boost/fusion/algorithm/iteration/iter_fold.hpp [37:38]
- boost/fusion/algorithm/iteration/reverse_fold.hpp [2:4]
- boost/fusion/algorithm/iteration/reverse_iter_fold.hpp [2:4]
- boost/fusion/algorithm/iteration/reverse_iter_fold.hpp [37:38]
- boost/fusion/container/deque/detail/is_sequence_impl.hpp [2:2]
- boost/fusion/include/adapt_adt_named.hpp [2:2]
- boost/fusion/include/adapt_assoc_adt.hpp [2:2]
- boost/fusion/include/adapt_assoc_adt_named.hpp [2:2]
- boost/fusion/include/adapt_assoc_struct.hpp [2:2]
- boost/fusion/include/adapt_assoc_struct_named.hpp [2:2]
- boost/fusion/include/adapt_struct_named.hpp [2:2]
- boost/fusion/include/boost_array.hpp [2:2]
- boost/fusion/include/define_assoc_struct.hpp [2:2]
- boost/fusion/include/define_struct.hpp [2:2]
- boost/fusion/include/iter_fold.hpp [2:2]
- boost/fusion/include/make_unfused.hpp [2:2]
- boost/fusion/include/proxy_type.hpp [2:2]
- boost/fusion/include/reverse_fold.hpp [2:2]
- boost/fusion/include/reverse_iter_fold.hpp [2:2]
- boost/fusion/include/unfused.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL e2b2efa860250bc2b6d99e29d6f93fba
-BELONGS libs/python/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/detail/python_type.hpp at line 3, boost/python/object/function_doc_signature.hpp at line 3, libs/python/src/object/function_doc_signature.cpp at line 3
- License text:
- // Copyright Nikolay Mladenov 2007.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/python/detail/python_type.hpp [1:3]
- boost/python/object/function_doc_signature.hpp [1:3]
- libs/python/src/object/function_doc_signature.cpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL e2b926c2da0d2e8f0d9454a3cbeec2b9
-BELONGS ya.make
- License text:
- Copyright (c) 2006 Daniel Wallin
- Copyright (c) 2005 Dan Marsden
- Copyright (c) 2007 Joel de Guzman
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/phoenix/stl.hpp [2:4]
- boost/phoenix/stl/algorithm.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL e2de2ade95c3c77ab6db64df93e27390
-BELONGS ya.make
- License text:
- Copyright (c) 2002 Juan Carlos Arevalo-Baeza
- Copyright (c) 2002-2006 Hartmut Kaiser
- Copyright (c) 2003 Giovanni Bajo
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/iterator/impl/position_iterator.ipp [2:5]
- boost/spirit/home/classic/iterator/position_iterator.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL e2f2608b1a713fdf90c3ec334ab18042
-BELONGS ya.make
- License text:
- // (C) Copyright John Maddock 2001 - 2003.
- // (C) Copyright Martin Wille 2003.
- // (C) Copyright Guillaume Melquiond 2003.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/detail/select_compiler_config.hpp [3:5]
- boost/config/stdlib/dinkumware.hpp [1:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL e323857368fb1433c9c3079428ca51d3
-BELONGS ya.make
- License text:
- // Copyright 2017 Peter Dimov.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/header_deprecated.hpp [4:4]
- boost/config/helper_macros.hpp [4:5]
- boost/config/pragma_message.hpp [4:4]
- boost/mp11/bind.hpp [4:4]
- boost/mp11/detail/mp_with_index.hpp [4:4]
- boost/mp11/mpl.hpp [4:4]
- boost/smart_ptr/atomic_shared_ptr.hpp [7:7]
- boost/smart_ptr/detail/local_counted_base.hpp [12:12]
- boost/smart_ptr/detail/local_sp_deleter.hpp [12:12]
- boost/smart_ptr/local_shared_ptr.hpp [6:6]
- boost/smart_ptr/make_local_shared.hpp [6:6]
- boost/smart_ptr/make_local_shared_array.hpp [2:4]
- boost/smart_ptr/make_local_shared_object.hpp [6:6]
- boost/type_traits/is_list_constructible.hpp [4:4]
- boost/type_traits/is_nothrow_swappable.hpp [4:4]
- boost/utility/detail/minstd_rand.hpp [4:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL e3241f812d8d89240eef1d3f12c35cf1
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic.hpp [2:14]
- boost/spirit/home/classic/core/composite/impl/directives.ipp [2:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL e33f9b0942991a1015e55f9d51fcdfe9
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2007 Joel de Guzman
- Copyright (c) 2007 Dan Marsden
- Copyright (c) 2009-2011 Christopher Schmidt
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/adapted/struct/adapt_assoc_struct.hpp [2:4]
- boost/fusion/adapted/struct/adapt_struct.hpp [2:4]
- boost/fusion/adapted/struct/adapt_struct_named.hpp [2:4]
- boost/fusion/adapted/struct/detail/extension.hpp [2:4]
- boost/fusion/algorithm/iteration/for_each.hpp [2:3]
- boost/fusion/include/accumulate.hpp [2:2]
- boost/fusion/include/adapt_adt.hpp [2:2]
- boost/fusion/include/adapt_struct.hpp [2:2]
- boost/fusion/include/adapted.hpp [2:2]
- boost/fusion/include/adapter.hpp [2:2]
- boost/fusion/include/advance.hpp [2:2]
- boost/fusion/include/algorithm.hpp [2:2]
- boost/fusion/include/all.hpp [2:2]
- boost/fusion/include/any.hpp [2:2]
- boost/fusion/include/array.hpp [2:2]
- boost/fusion/include/as_deque.hpp [2:2]
- boost/fusion/include/as_list.hpp [2:2]
- boost/fusion/include/as_map.hpp [2:2]
- boost/fusion/include/as_set.hpp [2:2]
- boost/fusion/include/as_vector.hpp [2:2]
- boost/fusion/include/at.hpp [2:2]
- boost/fusion/include/at_c.hpp [2:2]
- boost/fusion/include/at_key.hpp [2:2]
- boost/fusion/include/back.hpp [2:2]
- boost/fusion/include/begin.hpp [2:2]
- boost/fusion/include/boost_tuple.hpp [2:2]
- boost/fusion/include/category_of.hpp [2:2]
- boost/fusion/include/clear.hpp [2:2]
- boost/fusion/include/comparison.hpp [2:2]
- boost/fusion/include/cons.hpp [2:2]
- boost/fusion/include/cons_tie.hpp [2:2]
- boost/fusion/include/container.hpp [2:2]
- boost/fusion/include/convert.hpp [2:2]
- boost/fusion/include/count.hpp [2:2]
- boost/fusion/include/count_if.hpp [2:2]
- boost/fusion/include/deduce.hpp [2:2]
- boost/fusion/include/deduce_sequence.hpp [2:2]
- boost/fusion/include/deque.hpp [2:2]
- boost/fusion/include/deque_fwd.hpp [2:2]
- boost/fusion/include/deque_tie.hpp [2:2]
- boost/fusion/include/deref.hpp [2:2]
- boost/fusion/include/distance.hpp [2:2]
- boost/fusion/include/empty.hpp [2:2]
- boost/fusion/include/end.hpp [2:2]
- boost/fusion/include/equal_to.hpp [2:2]
- boost/fusion/include/erase.hpp [2:2]
- boost/fusion/include/erase_key.hpp [2:2]
- boost/fusion/include/filter.hpp [2:2]
- boost/fusion/include/filter_if.hpp [2:2]
- boost/fusion/include/filter_view.hpp [2:2]
- boost/fusion/include/find.hpp [2:2]
- boost/fusion/include/find_if.hpp [2:2]
- boost/fusion/include/fold.hpp [2:2]
- boost/fusion/include/for_each.hpp [2:2]
- boost/fusion/include/front.hpp [2:2]
- boost/fusion/include/functional.hpp [2:2]
- boost/fusion/include/fused.hpp [2:2]
- boost/fusion/include/fused_function_object.hpp [2:2]
- boost/fusion/include/fused_procedure.hpp [2:2]
- boost/fusion/include/generation.hpp [2:2]
- boost/fusion/include/greater.hpp [2:2]
- boost/fusion/include/greater_equal.hpp [2:2]
- boost/fusion/include/has_key.hpp [2:2]
- boost/fusion/include/ignore.hpp [2:2]
- boost/fusion/include/insert.hpp [2:2]
- boost/fusion/include/insert_range.hpp [2:2]
- boost/fusion/include/intrinsic.hpp [2:2]
- boost/fusion/include/invocation.hpp [2:2]
- boost/fusion/include/invoke.hpp [2:2]
- boost/fusion/include/invoke_function_object.hpp [2:2]
- boost/fusion/include/invoke_procedure.hpp [2:2]
- boost/fusion/include/is_iterator.hpp [2:2]
- boost/fusion/include/is_sequence.hpp [2:2]
- boost/fusion/include/is_view.hpp [2:2]
- boost/fusion/include/iteration.hpp [2:2]
- boost/fusion/include/iterator.hpp [2:2]
- boost/fusion/include/iterator_base.hpp [2:2]
- boost/fusion/include/iterator_facade.hpp [2:2]
- boost/fusion/include/iterator_range.hpp [2:2]
- boost/fusion/include/join.hpp [2:2]
- boost/fusion/include/joint_view.hpp [2:2]
- boost/fusion/include/less.hpp [2:2]
- boost/fusion/include/less_equal.hpp [2:2]
- boost/fusion/include/list.hpp [2:2]
- boost/fusion/include/list_fwd.hpp [2:2]
- boost/fusion/include/list_tie.hpp [2:2]
- boost/fusion/include/make_cons.hpp [2:2]
- boost/fusion/include/make_deque.hpp [2:2]
- boost/fusion/include/make_fused.hpp [2:2]
- boost/fusion/include/make_fused_function_object.hpp [2:2]
- boost/fusion/include/make_fused_procedure.hpp [2:2]
- boost/fusion/include/make_list.hpp [2:2]
- boost/fusion/include/make_map.hpp [2:2]
- boost/fusion/include/make_set.hpp [2:2]
- boost/fusion/include/make_tuple.hpp [2:2]
- boost/fusion/include/make_vector.hpp [2:2]
- boost/fusion/include/map.hpp [2:2]
- boost/fusion/include/map_fwd.hpp [2:2]
- boost/fusion/include/map_tie.hpp [2:2]
- boost/fusion/include/mpl.hpp [2:2]
- boost/fusion/include/next.hpp [2:2]
- boost/fusion/include/none.hpp [2:2]
- boost/fusion/include/not_equal_to.hpp [2:2]
- boost/fusion/include/nview.hpp [2:2]
- boost/fusion/include/pair.hpp [2:2]
- boost/fusion/include/pair_tie.hpp [2:2]
- boost/fusion/include/pop_back.hpp [2:2]
- boost/fusion/include/pop_front.hpp [2:2]
- boost/fusion/include/prior.hpp [2:2]
- boost/fusion/include/push_back.hpp [2:2]
- boost/fusion/include/push_front.hpp [2:2]
- boost/fusion/include/query.hpp [2:2]
- boost/fusion/include/remove.hpp [2:2]
- boost/fusion/include/remove_if.hpp [2:2]
- boost/fusion/include/repetitive_view.hpp [2:2]
- boost/fusion/include/replace.hpp [2:2]
- boost/fusion/include/replace_if.hpp [2:2]
- boost/fusion/include/reverse.hpp [2:2]
- boost/fusion/include/reverse_view.hpp [2:2]
- boost/fusion/include/sequence.hpp [2:2]
- boost/fusion/include/sequence_base.hpp [2:2]
- boost/fusion/include/sequence_facade.hpp [2:2]
- boost/fusion/include/set.hpp [2:2]
- boost/fusion/include/set_fwd.hpp [2:2]
- boost/fusion/include/single_view.hpp [2:2]
- boost/fusion/include/size.hpp [2:2]
- boost/fusion/include/std_pair.hpp [2:2]
- boost/fusion/include/struct.hpp [2:2]
- boost/fusion/include/support.hpp [2:2]
- boost/fusion/include/swap.hpp [2:2]
- boost/fusion/include/tag_of.hpp [2:2]
- boost/fusion/include/tag_of_fwd.hpp [2:2]
- boost/fusion/include/transform.hpp [2:2]
- boost/fusion/include/transform_view.hpp [2:2]
- boost/fusion/include/transformation.hpp [2:2]
- boost/fusion/include/tuple.hpp [2:2]
- boost/fusion/include/tuple_fwd.hpp [2:2]
- boost/fusion/include/tuple_tie.hpp [2:2]
- boost/fusion/include/unfused_typed.hpp [2:2]
- boost/fusion/include/unused.hpp [2:2]
- boost/fusion/include/value_at_key.hpp [2:2]
- boost/fusion/include/value_of.hpp [2:2]
- boost/fusion/include/vector.hpp [2:2]
- boost/fusion/include/vector10.hpp [2:2]
- boost/fusion/include/vector20.hpp [2:2]
- boost/fusion/include/vector30.hpp [2:2]
- boost/fusion/include/vector40.hpp [2:2]
- boost/fusion/include/vector50.hpp [2:2]
- boost/fusion/include/vector_fwd.hpp [2:2]
- boost/fusion/include/vector_tie.hpp [2:2]
- boost/fusion/include/view.hpp [2:2]
- boost/fusion/include/void.hpp [2:2]
- boost/fusion/include/zip.hpp [2:2]
- boost/fusion/include/zip_view.hpp [2:2]
- boost/phoenix/bind/bind_member_variable.hpp [2:3]
- boost/phoenix/bind/detail/cpp03/bind_function.hpp [2:2]
- boost/phoenix/bind/detail/cpp03/bind_function.hpp [54:54]
- boost/phoenix/bind/detail/cpp03/bind_function_object.hpp [2:2]
- boost/phoenix/bind/detail/cpp03/bind_function_object.hpp [31:31]
- boost/phoenix/bind/detail/cpp03/bind_member_function.hpp [2:3]
- boost/phoenix/bind/detail/cpp03/bind_member_function.hpp [106:106]
- boost/phoenix/bind/detail/cpp03/function_ptr.hpp [2:2]
- boost/phoenix/bind/detail/cpp03/function_ptr.hpp [95:95]
- boost/phoenix/bind/detail/cpp03/member_function_ptr.hpp [2:2]
- boost/phoenix/bind/detail/cpp03/member_function_ptr.hpp [84:84]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_10.hpp [2:2]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_20.hpp [2:2]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_30.hpp [2:2]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_40.hpp [2:2]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_50.hpp [2:2]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_10.hpp [2:2]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_20.hpp [2:2]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_30.hpp [2:2]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_40.hpp [2:2]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_50.hpp [2:2]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_10.hpp [2:2]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_20.hpp [2:2]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_30.hpp [2:2]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_40.hpp [2:2]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_50.hpp [2:2]
- boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_10.hpp [2:2]
- boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_20.hpp [2:2]
- boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_30.hpp [2:2]
- boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_40.hpp [2:2]
- boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_50.hpp [2:2]
- boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_10.hpp [2:2]
- boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_20.hpp [2:2]
- boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_30.hpp [2:2]
- boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_40.hpp [2:2]
- boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_50.hpp [2:2]
- boost/phoenix/bind/detail/member_variable.hpp [2:2]
- boost/phoenix/core/as_actor.hpp [2:2]
- boost/phoenix/core/detail/cpp03/function_eval.hpp [13:13]
- boost/phoenix/core/detail/cpp03/function_eval_expr.hpp [17:18]
- boost/phoenix/core/detail/cpp03/preprocessed/function_eval_10.hpp [2:2]
- boost/phoenix/core/detail/cpp03/preprocessed/function_eval_20.hpp [2:2]
- boost/phoenix/core/detail/cpp03/preprocessed/function_eval_30.hpp [2:2]
- boost/phoenix/core/detail/cpp03/preprocessed/function_eval_40.hpp [2:2]
- boost/phoenix/core/detail/cpp03/preprocessed/function_eval_50.hpp [2:2]
- boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_10.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_20.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_30.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_40.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_50.hpp [2:3]
- boost/phoenix/core/detail/function_eval.hpp [2:3]
- boost/phoenix/core/limits.hpp [2:2]
- boost/phoenix/function/lazy_list.hpp [33:35]
- boost/phoenix/function/lazy_operator.hpp [27:29]
- boost/phoenix/function/lazy_prelude.hpp [115:117]
- boost/phoenix/function/lazy_reuse.hpp [24:26]
- boost/phoenix/function/lazy_signature.hpp [34:36]
- boost/phoenix/function/lazy_smart.hpp [11:13]
- boost/phoenix/scope/detail/local_variable.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL e375f9f33ab97263bdffba2a16e216e8
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/os/android.h at line 4, boost/predef/os/ios.h at line 4, boost/predef/platform/windows_desktop.h at line 4, boost/predef/platform/windows_phone.h at line 4, boost/predef/platform/windows_runtime.h at line 4, boost/predef/platform/windows_store.h at line 4
- License text:
- Copyright Rene Rivera 2015
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/predef/os/android.h [2:4]
- boost/predef/os/ios.h [2:5]
- boost/predef/platform/windows_desktop.h [2:5]
- boost/predef/platform/windows_phone.h [2:5]
- boost/predef/platform/windows_runtime.h [2:5]
- boost/predef/platform/windows_store.h [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL e381b710b97e62e701d329d7f5fafc9a
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/parameter/aux_/is_maybe.hpp at line 3
- License text:
- // Copyright Daniel Wallin, David Abrahams 2010. Use, modification and
- // distribution is subject to the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/parameter/aux_/is_maybe.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL e38d04805dcf88e6564ae734a4cd8a49
-BELONGS ya.make
- License text:
- // Copyright Beman Dawes 2002-2009
- // Copyright Jan Langer 2002
- // Copyright Dietmar Kuehl 2001
- // Copyright Vladimir Prus 2002
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/filesystem/operations.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL e392bd367f352dd8f8162db5d1fa72e7
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/extreme_points.hpp [3:6]
- boost/geometry/algorithms/point_on_surface.hpp [3:6]
- boost/geometry/algorithms/remove_spikes.hpp [3:6]
- boost/geometry/multi/algorithms/detail/extreme_points.hpp [3:6]
- boost/geometry/multi/algorithms/remove_spikes.hpp [3:6]
- boost/geometry/strategies/default_strategy.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL e3adff0ee350b1ce3e1bf4597996eaa2
-BELONGS ya.make
- License text:
- // (C) Copyright John Maddock 2007.
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/tools/detail/polynomial_horner1_10.hpp [1:3]
- boost/math/tools/detail/polynomial_horner1_11.hpp [1:3]
- boost/math/tools/detail/polynomial_horner1_12.hpp [1:3]
- boost/math/tools/detail/polynomial_horner1_13.hpp [1:3]
- boost/math/tools/detail/polynomial_horner1_14.hpp [1:3]
- boost/math/tools/detail/polynomial_horner1_15.hpp [1:3]
- boost/math/tools/detail/polynomial_horner1_16.hpp [1:3]
- boost/math/tools/detail/polynomial_horner1_17.hpp [1:3]
- boost/math/tools/detail/polynomial_horner1_18.hpp [1:3]
- boost/math/tools/detail/polynomial_horner1_19.hpp [1:3]
- boost/math/tools/detail/polynomial_horner1_2.hpp [1:3]
- boost/math/tools/detail/polynomial_horner1_20.hpp [1:3]
- boost/math/tools/detail/polynomial_horner1_3.hpp [1:3]
- boost/math/tools/detail/polynomial_horner1_4.hpp [1:3]
- boost/math/tools/detail/polynomial_horner1_5.hpp [1:3]
- boost/math/tools/detail/polynomial_horner1_6.hpp [1:3]
- boost/math/tools/detail/polynomial_horner1_7.hpp [1:3]
- boost/math/tools/detail/polynomial_horner1_8.hpp [1:3]
- boost/math/tools/detail/polynomial_horner1_9.hpp [1:3]
- boost/math/tools/detail/polynomial_horner2_10.hpp [1:3]
- boost/math/tools/detail/polynomial_horner2_11.hpp [1:3]
- boost/math/tools/detail/polynomial_horner2_12.hpp [1:3]
- boost/math/tools/detail/polynomial_horner2_13.hpp [1:3]
- boost/math/tools/detail/polynomial_horner2_14.hpp [1:3]
- boost/math/tools/detail/polynomial_horner2_15.hpp [1:3]
- boost/math/tools/detail/polynomial_horner2_16.hpp [1:3]
- boost/math/tools/detail/polynomial_horner2_17.hpp [1:3]
- boost/math/tools/detail/polynomial_horner2_18.hpp [1:3]
- boost/math/tools/detail/polynomial_horner2_19.hpp [1:3]
- boost/math/tools/detail/polynomial_horner2_2.hpp [1:3]
- boost/math/tools/detail/polynomial_horner2_20.hpp [1:3]
- boost/math/tools/detail/polynomial_horner2_3.hpp [1:3]
- boost/math/tools/detail/polynomial_horner2_4.hpp [1:3]
- boost/math/tools/detail/polynomial_horner2_5.hpp [1:3]
- boost/math/tools/detail/polynomial_horner2_6.hpp [1:3]
- boost/math/tools/detail/polynomial_horner2_7.hpp [1:3]
- boost/math/tools/detail/polynomial_horner2_8.hpp [1:3]
- boost/math/tools/detail/polynomial_horner2_9.hpp [1:3]
- boost/math/tools/detail/polynomial_horner3_10.hpp [1:3]
- boost/math/tools/detail/polynomial_horner3_11.hpp [1:3]
- boost/math/tools/detail/polynomial_horner3_12.hpp [1:3]
- boost/math/tools/detail/polynomial_horner3_13.hpp [1:3]
- boost/math/tools/detail/polynomial_horner3_14.hpp [1:3]
- boost/math/tools/detail/polynomial_horner3_15.hpp [1:3]
- boost/math/tools/detail/polynomial_horner3_16.hpp [1:3]
- boost/math/tools/detail/polynomial_horner3_17.hpp [1:3]
- boost/math/tools/detail/polynomial_horner3_18.hpp [1:3]
- boost/math/tools/detail/polynomial_horner3_19.hpp [1:3]
- boost/math/tools/detail/polynomial_horner3_2.hpp [1:3]
- boost/math/tools/detail/polynomial_horner3_20.hpp [1:3]
- boost/math/tools/detail/polynomial_horner3_3.hpp [1:3]
- boost/math/tools/detail/polynomial_horner3_4.hpp [1:3]
- boost/math/tools/detail/polynomial_horner3_5.hpp [1:3]
- boost/math/tools/detail/polynomial_horner3_6.hpp [1:3]
- boost/math/tools/detail/polynomial_horner3_7.hpp [1:3]
- boost/math/tools/detail/polynomial_horner3_8.hpp [1:3]
- boost/math/tools/detail/polynomial_horner3_9.hpp [1:3]
- boost/math/tools/detail/rational_horner1_10.hpp [1:3]
- boost/math/tools/detail/rational_horner1_11.hpp [1:3]
- boost/math/tools/detail/rational_horner1_12.hpp [1:3]
- boost/math/tools/detail/rational_horner1_13.hpp [1:3]
- boost/math/tools/detail/rational_horner1_14.hpp [1:3]
- boost/math/tools/detail/rational_horner1_15.hpp [1:3]
- boost/math/tools/detail/rational_horner1_16.hpp [1:3]
- boost/math/tools/detail/rational_horner1_17.hpp [1:3]
- boost/math/tools/detail/rational_horner1_18.hpp [1:3]
- boost/math/tools/detail/rational_horner1_19.hpp [1:3]
- boost/math/tools/detail/rational_horner1_2.hpp [1:3]
- boost/math/tools/detail/rational_horner1_20.hpp [1:3]
- boost/math/tools/detail/rational_horner1_3.hpp [1:3]
- boost/math/tools/detail/rational_horner1_4.hpp [1:3]
- boost/math/tools/detail/rational_horner1_5.hpp [1:3]
- boost/math/tools/detail/rational_horner1_6.hpp [1:3]
- boost/math/tools/detail/rational_horner1_7.hpp [1:3]
- boost/math/tools/detail/rational_horner1_8.hpp [1:3]
- boost/math/tools/detail/rational_horner1_9.hpp [1:3]
- boost/math/tools/detail/rational_horner2_10.hpp [1:3]
- boost/math/tools/detail/rational_horner2_11.hpp [1:3]
- boost/math/tools/detail/rational_horner2_12.hpp [1:3]
- boost/math/tools/detail/rational_horner2_13.hpp [1:3]
- boost/math/tools/detail/rational_horner2_14.hpp [1:3]
- boost/math/tools/detail/rational_horner2_15.hpp [1:3]
- boost/math/tools/detail/rational_horner2_16.hpp [1:3]
- boost/math/tools/detail/rational_horner2_17.hpp [1:3]
- boost/math/tools/detail/rational_horner2_18.hpp [1:3]
- boost/math/tools/detail/rational_horner2_19.hpp [1:3]
- boost/math/tools/detail/rational_horner2_2.hpp [1:3]
- boost/math/tools/detail/rational_horner2_20.hpp [1:3]
- boost/math/tools/detail/rational_horner2_3.hpp [1:3]
- boost/math/tools/detail/rational_horner2_4.hpp [1:3]
- boost/math/tools/detail/rational_horner2_5.hpp [1:3]
- boost/math/tools/detail/rational_horner2_6.hpp [1:3]
- boost/math/tools/detail/rational_horner2_7.hpp [1:3]
- boost/math/tools/detail/rational_horner2_8.hpp [1:3]
- boost/math/tools/detail/rational_horner2_9.hpp [1:3]
- boost/math/tools/detail/rational_horner3_10.hpp [1:3]
- boost/math/tools/detail/rational_horner3_11.hpp [1:3]
- boost/math/tools/detail/rational_horner3_12.hpp [1:3]
- boost/math/tools/detail/rational_horner3_13.hpp [1:3]
- boost/math/tools/detail/rational_horner3_14.hpp [1:3]
- boost/math/tools/detail/rational_horner3_15.hpp [1:3]
- boost/math/tools/detail/rational_horner3_16.hpp [1:3]
- boost/math/tools/detail/rational_horner3_17.hpp [1:3]
- boost/math/tools/detail/rational_horner3_18.hpp [1:3]
- boost/math/tools/detail/rational_horner3_19.hpp [1:3]
- boost/math/tools/detail/rational_horner3_2.hpp [1:3]
- boost/math/tools/detail/rational_horner3_20.hpp [1:3]
- boost/math/tools/detail/rational_horner3_3.hpp [1:3]
- boost/math/tools/detail/rational_horner3_4.hpp [1:3]
- boost/math/tools/detail/rational_horner3_5.hpp [1:3]
- boost/math/tools/detail/rational_horner3_6.hpp [1:3]
- boost/math/tools/detail/rational_horner3_7.hpp [1:3]
- boost/math/tools/detail/rational_horner3_8.hpp [1:3]
- boost/math/tools/detail/rational_horner3_9.hpp [1:3]
- boost/type_traits/is_complex.hpp [1:3]
- boost/type_traits/make_signed.hpp [2:4]
- boost/type_traits/make_unsigned.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL e3e1028aa1cce5414c38eefd261dbb49
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/tti/detail/ddata.hpp at line 4, boost/tti/detail/dftclass.hpp at line 4, boost/tti/detail/dfunction.hpp at line 4, boost/tti/detail/dlambda.hpp at line 4, boost/tti/detail/dmetafunc.hpp at line 4, boost/tti/detail/dplaceholder.hpp at line 4, boost/tti/has_data.hpp at line 4, boost/tti/has_function.hpp at line 4
- License text:
- // (C) Copyright Edward Diener 2012,2013
- // Use, modification and distribution are subject to the Boost Software License,
- // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/tti/detail/ddata.hpp [2:4]
- boost/tti/detail/dftclass.hpp [2:4]
- boost/tti/detail/dfunction.hpp [2:4]
- boost/tti/detail/dlambda.hpp [2:4]
- boost/tti/detail/dmetafunc.hpp [2:4]
- boost/tti/detail/dplaceholder.hpp [2:4]
- boost/tti/has_data.hpp [2:4]
- boost/tti/has_function.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL e41424d54e8473c39effea8f755418d2
-BELONGS ya.make
- License text:
- // (C) Copyright Boris Rasin and Antony Polukhin 2014-2015.
- // Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/polymorphic_pointer_cast.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL e4625bf9a635d6b910598e4a6885eab0
-BELONGS ya.make
- License text:
- Copyright 2011-2013 Karsten Ahnert
- Copyright 2011-2015 Mario Mulansky
- Copyright 2012 Christoph Koke
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/integrate/detail/integrate_adaptive.hpp [9:11]
- boost/numeric/odeint/integrate/detail/integrate_const.hpp [9:11]
- boost/numeric/odeint/integrate/detail/integrate_n_steps.hpp [9:11]
- boost/numeric/odeint/integrate/detail/integrate_times.hpp [9:11]
- boost/numeric/odeint/stepper/adams_bashforth.hpp [10:13]
- boost/numeric/odeint/stepper/adams_bashforth_moulton.hpp [9:11]
- boost/numeric/odeint/stepper/adams_moulton.hpp [10:12]
- boost/numeric/odeint/stepper/base/explicit_error_stepper_base.hpp [9:11]
- boost/numeric/odeint/stepper/base/explicit_error_stepper_fsal_base.hpp [9:11]
- boost/numeric/odeint/stepper/base/explicit_stepper_base.hpp [9:11]
- boost/numeric/odeint/stepper/base/symplectic_rkn_stepper_base.hpp [9:11]
- boost/numeric/odeint/stepper/bulirsch_stoer.hpp [12:14]
- boost/numeric/odeint/stepper/bulirsch_stoer_dense_out.hpp [9:11]
- boost/numeric/odeint/stepper/controlled_runge_kutta.hpp [8:10]
- boost/numeric/odeint/stepper/dense_output_runge_kutta.hpp [10:12]
- boost/numeric/odeint/stepper/detail/generic_rk_algorithm.hpp [9:11]
- boost/numeric/odeint/stepper/explicit_error_generic_rk.hpp [9:11]
- boost/numeric/odeint/stepper/explicit_generic_rk.hpp [9:11]
- boost/numeric/odeint/stepper/implicit_euler.hpp [9:11]
- boost/numeric/odeint/stepper/modified_midpoint.hpp [9:11]
- boost/numeric/odeint/stepper/rosenbrock4.hpp [10:12]
- boost/numeric/odeint/stepper/rosenbrock4_controller.hpp [9:11]
- boost/numeric/odeint/stepper/rosenbrock4_dense_output.hpp [9:11]
- boost/numeric/odeint/stepper/runge_kutta4_classic.hpp [9:11]
- boost/numeric/odeint/stepper/runge_kutta_cash_karp54_classic.hpp [9:11]
- boost/numeric/odeint/stepper/runge_kutta_dopri5.hpp [9:11]
- boost/numeric/odeint/util/bind.hpp [9:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL e4700525f1ca13f160dcc093f20bd1d2
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/atomic/detail/caps_gcc_arm.hpp [6:10]
- boost/atomic/detail/caps_linux_arm.hpp [6:10]
- boost/atomic/detail/ops_linux_arm.hpp [6:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL e48b4e47d76d88b5aebcf8c8588596c0
-BELONGS ya.make
- License text:
- // Copyright (C) 2014 Ian Forbed
- // Copyright (C) 2014-2017 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/concurrent_queues/sync_priority_queue.hpp [1:2]
- boost/thread/concurrent_queues/sync_timed_queue.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL e48b5698327b63513b38fe20f3b27554
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/platform/symbian.hpp [1:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL e48b5b59655db222047e250fd037f63e
-BELONGS ya.make
- License text:
- // (C) Copyright Beman Dawes 1999.
- // (C) Copyright Jens Mauer 2001
- // (C) Copyright John Maddock 2001
- // Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/cstdint.hpp [3:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL e4a00a40e577089cb7fa0eea90b9aa23
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/numeric.hpp at line 8
- License text:
- // Copyright 2006 Thorsten Ottosen.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/range/numeric.hpp [6:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL e4b3fa7ad3fac11d4da8163314c008b6
-BELONGS ya.make
- License text:
- // Author: Gerald Evenden
- // Copyright (c) 1995, Gerald Evenden
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/srs/projections/proj/aea.hpp [27:28]
- boost/geometry/srs/projections/proj/aeqd.hpp [27:28]
- boost/geometry/srs/projections/proj/airy.hpp [27:28]
- boost/geometry/srs/projections/proj/aitoff.hpp [28:29]
- boost/geometry/srs/projections/proj/nzmg.hpp [27:29]
-
-KEEP COPYRIGHT_SERVICE_LABEL e4e5cd68aeaf73ab0c3db975bca46744
-BELONGS ya.make
- License text:
- /* Copyright (c) 2006 CrystalClear Software, Inc.
- * Use, modification and distribution is subject to the
- * Boost Software License, Version 1.0. (See accompanying
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/date_time.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL e4f41bc4385b63c1a2c1762dbb10fdba
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/metaparse/v1/cpp11/impl/string_at.hpp at line 6
- License text:
- // Copyright Abel Sinkovics (abel@sinkovics.hu) 2016.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/metaparse/v1/cpp11/impl/string_at.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL e52d2d00c0bddf195fcd2e865710a087
-BELONGS ya.make
- License text:
- // Copyright (C) 2001 Jeremy Siek, Douglas Gregor, Brian Osman
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/isomorphism.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL e5360be9eee83c576021171be4c1dcfa
-BELONGS ya.make
- License text:
- Copyright (c) 2013 Mateusz Loskot
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2005-2006 Dan Marsden
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/adapted/std_array.hpp [2:4]
- boost/fusion/adapted/std_array/detail/array_size.hpp [2:2]
- boost/fusion/adapted/std_array/detail/begin_impl.hpp [2:4]
- boost/fusion/adapted/std_array/detail/end_impl.hpp [2:4]
- boost/fusion/adapted/std_array/detail/is_sequence_impl.hpp [2:4]
- boost/fusion/adapted/std_array/detail/is_view_impl.hpp [2:4]
- boost/fusion/adapted/std_array/detail/size_impl.hpp [2:4]
- boost/fusion/adapted/std_array/std_array_iterator.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL e58ccf339db5d63f1209f6f67af482fe
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/docstring_options.hpp at line 3
- License text:
- // Copyright Ralf W. Grosse-Kunstleve 2006.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/python/docstring_options.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL e5a9ae03bc33a706044f95d904b199c9
-BELONGS ya.make
- License text:
- // Copyright (c) 2001-2002 Chuck Allison and Jeremy Siek
- // Copyright (c) 2003-2004 Gennaro Prota
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/dynamic_bitset_fwd.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL e63a42a391669dbd82501fe78900f57d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/chrono/io_v1/chrono_io.hpp at line 7, boost/ratio/detail/ratio_io.hpp at line 6, boost/ratio/ratio_io.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/chrono/io_v1/chrono_io.hpp [4:7]
- boost/ratio/detail/ratio_io.hpp [3:6]
- boost/ratio/ratio_io.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL e660351224f73455ec6e8b19ff54015b
-BELONGS ya.make
- License text:
- // Copyright 2013 University of Warsaw.
- // Authors: Piotr Wygocki
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/cycle_canceling.hpp [2:3]
- boost/graph/detail/augment.hpp [2:3]
- boost/graph/find_flow_cost.hpp [2:3]
- boost/graph/successive_shortest_path_nonnegative_weights.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL e66b15bc122266f3d72955f7399d4bc0
-BELONGS libs/atomic/ya.make ya.make
- License text:
- * Copyright (c) 2011 Helge Bahmann
- * Copyright (c) 2013-2014 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/atomic/detail/lockpool.hpp [6:7]
- libs/atomic/src/lockpool.cpp [6:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL e6c06124784422b679ce63978c69cc3a
-BELONGS ya.make
- License text:
- * Copyright (c) 2009 Helge Bahmann
- * Copyright (c) 2012 Tim Blechmann
- * Copyright (c) 2013 - 2018 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/atomic/detail/bitwise_cast.hpp [6:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL e6f75bab1aaec3fbff9729d2c7fcfc9b
-BELONGS ya.make
- License text:
- // (C) Copyright John Maddock 2006.
- // (C) Copyright Johan Rade 2006.
- // (C) Copyright Paul A. Bristow 2011 (added changesign).
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/sign.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL e70dc68d7bd75089121a8ad29188eecc
-BELONGS ya.make
- License text:
- // (C) Copyright Darin Adler 2000
- // (C) Copyright Beman Dawes 2006, 2009, 2014
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/endian/arithmetic.hpp [3:4]
- boost/endian/buffers.hpp [3:4]
- boost/spirit/home/support/detail/endian/endian.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL e772cb4d7089d9b8f7565f8b8c9f7936
-BELONGS ya.make
- License text:
- // Copyright (c) 2001-2002 Chuck Allison and Jeremy Siek
- // Copyright (c) 2003-2006, 2008 Gennaro Prota
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/detail/dynamic_bitset.hpp [3:4]
- boost/dynamic_bitset/config.hpp [3:4]
- boost/dynamic_bitset/dynamic_bitset.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL e777cb8c0600e2a77090b952364f50e2
-BELONGS ya.make
- License text:
- Copyright (c) 1999-2003 Jaakko Jarvi
- Copyright (c) 1999-2003 Jeremiah Willcock
- Copyright (c) 2001-2011 Joel de Guzman
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/sequence/io/detail/in.hpp [2:4]
- boost/fusion/sequence/io/detail/manip.hpp [2:4]
- boost/fusion/sequence/io/detail/out.hpp [2:4]
- boost/fusion/sequence/io/in.hpp [2:4]
- boost/fusion/sequence/io/out.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL e7839fbcad9c12a3056bd593ac5607a1
-BELONGS ya.make
- License text:
- //! Copyright (c) 2011-2012
- //! Brandon Kohn
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/conversion/detail/numeric_cast_traits.hpp [2:3]
- boost/numeric/conversion/detail/numeric_cast_traits.hpp [29:30]
- boost/numeric/conversion/detail/numeric_cast_traits.hpp [80:81]
- boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_common.hpp [2:3]
- boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_long_long.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL e7b0cb15f49a0534732f0753e83b9649
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/pointer_cast.hpp at line 5, boost/pointer_to_other.hpp at line 9
- License text:
- // (C) Copyright Ion Gaztanaga 2005.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/pointer_cast.hpp [3:5]
- boost/pointer_to_other.hpp [7:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL e7d0db279089836ea6f07df6e7203678
-BELONGS ya.make
- License text:
- * Copyright 2015 Klemens Morgenstern
- * Copyright 2016 Jorge Lodos
- * Copyright 2016 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/winapi/dbghelp.hpp [2:4]
- boost/winapi/error_handling.hpp [2:4]
- boost/winapi/file_management.hpp [2:5]
- boost/winapi/file_mapping.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL e7ec39c5081e21fd01abce1315e1d826
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signals.hpp at line 5
- License text:
- // Copyright Douglas Gregor 2003-2004. Use, modification and
- // distribution is subject to the Boost Software License, Version
- // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/signals.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL e7f91dd2d0775121b806452e251ea945
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/chrono/include.hpp at line 6, boost/chrono/io/duration_get.hpp at line 3, boost/chrono/io/duration_io.hpp at line 3, boost/chrono/io/duration_put.hpp at line 3, boost/chrono/io/duration_style.hpp at line 3, boost/chrono/io/duration_units.hpp at line 3, boost/chrono/io/ios_base_state.hpp at line 3, boost/chrono/io/time_point_get.hpp at line 3, boost/chrono/io/time_point_put.hpp at line 3, boost/chrono/io/time_point_units.hpp at line 3, boost/ratio/mpl/abs.hpp at line 5, boost/ratio/mpl/divides.hpp at line 5, boost/ratio/mpl/equal_to.hpp at line 5, boost/ratio/mpl/gcd.hpp at line 5, boost/ratio/mpl/greater.hpp at line 5, boost/ratio/mpl/greater_equal.hpp at line 5, boost/ratio/mpl/lcm.hpp at line 5, boost/ratio/mpl/less.hpp at line 5, boost/ratio/mpl/less_equal.hpp at line 5, boost/ratio/mpl/minus.hpp at line 5, boost/ratio/mpl/negate.hpp at line 5, boost/ratio/mpl/not_equal_to.hpp at line 5, boost/ratio/mpl/numeric_cast.hpp at line 5, boost/ratio/mpl/rational_c_tag.hpp at line 5, boost/ratio/mpl/sign.hpp at line 5, boost/ratio/mpl/times.hpp at line 5
- License text:
- // (C) Copyright 2011 Vicente J. Botet Escriba
- // Use, modification and distribution are subject to the Boost Software License,
- // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/chrono/include.hpp [4:6]
- boost/chrono/io/duration_get.hpp [1:4]
- boost/chrono/io/duration_io.hpp [1:4]
- boost/chrono/io/duration_put.hpp [1:4]
- boost/chrono/io/duration_style.hpp [1:4]
- boost/chrono/io/duration_units.hpp [1:4]
- boost/chrono/io/ios_base_state.hpp [1:3]
- boost/chrono/io/time_point_get.hpp [1:4]
- boost/chrono/io/time_point_put.hpp [1:4]
- boost/chrono/io/time_point_units.hpp [1:5]
- boost/ratio/mpl/abs.hpp [3:5]
- boost/ratio/mpl/divides.hpp [3:5]
- boost/ratio/mpl/equal_to.hpp [3:5]
- boost/ratio/mpl/gcd.hpp [3:5]
- boost/ratio/mpl/greater.hpp [3:5]
- boost/ratio/mpl/greater_equal.hpp [3:5]
- boost/ratio/mpl/lcm.hpp [3:5]
- boost/ratio/mpl/less.hpp [3:5]
- boost/ratio/mpl/less_equal.hpp [3:5]
- boost/ratio/mpl/minus.hpp [3:5]
- boost/ratio/mpl/negate.hpp [3:5]
- boost/ratio/mpl/not_equal_to.hpp [3:5]
- boost/ratio/mpl/numeric_cast.hpp [3:5]
- boost/ratio/mpl/rational_c_tag.hpp [3:5]
- boost/ratio/mpl/sign.hpp [3:5]
- boost/ratio/mpl/times.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL e80099ca7d9554b99489b2a34e8f9497
-BELONGS ya.make
- License text:
- // Copyright (c) 2015 Barend Gehrels, Amsterdam, the Netherlands.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/direction_code.hpp [3:3]
- boost/geometry/algorithms/detail/overlay/handle_colocations.hpp [3:4]
- boost/geometry/algorithms/detail/overlay/sort_by_side.hpp [3:4]
- boost/geometry/algorithms/detail/sections/section_box_policies.hpp [3:3]
- boost/geometry/algorithms/detail/sections/section_functions.hpp [3:3]
- boost/geometry/algorithms/is_convex.hpp [3:3]
- boost/geometry/strategies/cartesian/side_of_intersection.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL e8c8fa26afa0b2fea67db2fed458b026
-BELONGS ya.make
- License text:
- Copyright 2008 Intel Corporation
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/polygon/detail/boolean_op.hpp [2:2]
- boost/polygon/detail/boolean_op_45.hpp [2:2]
- boost/polygon/detail/iterator_compact_to_points.hpp [2:2]
- boost/polygon/detail/iterator_geometry_to_set.hpp [2:2]
- boost/polygon/detail/iterator_points_to_compact.hpp [2:2]
- boost/polygon/detail/max_cover.hpp [2:2]
- boost/polygon/detail/minkowski.hpp [2:2]
- boost/polygon/detail/polygon_45_formation.hpp [2:2]
- boost/polygon/detail/polygon_45_set_view.hpp [2:2]
- boost/polygon/detail/polygon_45_touch.hpp [2:2]
- boost/polygon/detail/polygon_90_set_view.hpp [2:2]
- boost/polygon/detail/polygon_90_touch.hpp [2:2]
- boost/polygon/detail/polygon_arbitrary_formation.hpp [2:2]
- boost/polygon/detail/polygon_formation.hpp [2:2]
- boost/polygon/detail/polygon_set_view.hpp [2:2]
- boost/polygon/detail/polygon_sort_adaptor.hpp [2:2]
- boost/polygon/detail/property_merge.hpp [2:2]
- boost/polygon/detail/property_merge_45.hpp [2:2]
- boost/polygon/detail/rectangle_formation.hpp [2:2]
- boost/polygon/detail/scan_arbitrary.hpp [2:2]
- boost/polygon/gmp_override.hpp [2:2]
- boost/polygon/gtl.hpp [2:2]
- boost/polygon/isotropy.hpp [2:2]
- boost/polygon/polygon.hpp [2:2]
- boost/polygon/polygon_45_data.hpp [2:2]
- boost/polygon/polygon_45_set_concept.hpp [2:2]
- boost/polygon/polygon_45_set_data.hpp [2:2]
- boost/polygon/polygon_45_set_traits.hpp [2:2]
- boost/polygon/polygon_45_with_holes_data.hpp [2:2]
- boost/polygon/polygon_90_data.hpp [2:2]
- boost/polygon/polygon_90_set_concept.hpp [2:2]
- boost/polygon/polygon_90_set_data.hpp [2:2]
- boost/polygon/polygon_90_set_traits.hpp [2:2]
- boost/polygon/polygon_90_with_holes_data.hpp [2:2]
- boost/polygon/polygon_data.hpp [2:2]
- boost/polygon/polygon_set_concept.hpp [2:2]
- boost/polygon/polygon_set_data.hpp [2:2]
- boost/polygon/polygon_set_traits.hpp [2:2]
- boost/polygon/polygon_traits.hpp [2:2]
- boost/polygon/polygon_with_holes_data.hpp [2:2]
- boost/polygon/rectangle_concept.hpp [2:2]
- boost/polygon/rectangle_data.hpp [2:2]
- boost/polygon/rectangle_traits.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL e8f7853c4a6700eeac6f2514116bb8a9
-BELONGS ya.make
- License text:
- // (C) Copyright Ion Gaztanaga 2006-2012
- // (C) Copyright Markus Schoepflin 2007
- // (C) Copyright Bryce Lelbach 2010
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/interprocess/detail/atomic.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL e90054354c2fc6179de794b9b381eb6d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/atl.hpp at line 11, boost/range/detail/microsoft.hpp at line 8, boost/range/mfc.hpp at line 11
- License text:
- // Copyright Shunsuke Sogame 2005-2006.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/range/atl.hpp [9:11]
- boost/range/detail/microsoft.hpp [6:8]
- boost/range/mfc.hpp [9:11]
-
-KEEP COPYRIGHT_SERVICE_LABEL e911fa8ed8154051a5ba24779b58fe24
-BELONGS ya.make
- License text:
- // Copyright (c) 2003-2008 Jan Gaspar
- // Copyright (c) 2013 Paul A. Bristow // Doxygen comments changed.
- // Copyright (c) 2013 Antony Polukhin // Move semantics implementation.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/circular_buffer/base.hpp [3:5]
- boost/circular_buffer/space_optimized.hpp [3:5]
- boost/variant/detail/make_variant_list.hpp [6:7]
- boost/variant/recursive_variant.hpp [6:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL e948c32bb4fec5a27e9bbe3a45398269
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/pending/property_serialize.hpp at line 3
- License text:
- // (C) Copyright Jeremy Siek 2006
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/pending/property_serialize.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL e96cb88f0e61b70a27c80d50f101304a
-BELONGS ya.make
- License text:
- // Copyright 2008 Gautam Sewani
- // Copyright 2008 John Maddock
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/distributions/detail/hypergeometric_cdf.hpp [1:1]
- boost/math/distributions/detail/hypergeometric_pdf.hpp [1:2]
- boost/math/distributions/detail/hypergeometric_quantile.hpp [1:1]
- boost/math/distributions/hypergeometric.hpp [1:2]
- boost/math/special_functions/prime.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL e97656f9dec509a30c28f6e372e5c562
-BELONGS ya.make
- License text:
- Copyright (C) 2002, 2008, 2013 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/core/addressof.hpp [5:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL e988593c62f4794020b8d577270883fc
-BELONGS ya.make
- License text:
- // Copyright (c) 2008-2009 Ben Hanson
- // Copyright (c) 2008-2011 Hartmut Kaiser
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/lex/lexer/lexertl/generate_static.hpp [1:2]
- boost/spirit/home/lex/lexer/lexertl/generate_static.hpp [890:893]
-
-KEEP COPYRIGHT_SERVICE_LABEL e99f2084817df228034b7674cdcfeeb0
-BELONGS ya.make
- License text:
- Copyright (c) 2007-2011 Hartmut Kaiser
- Copyright (c) Christopher Diggins 2005
- Copyright (c) Pablo Aguilar 2005
- Copyright (c) Kevlin Henney 2001
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/support/detail/hold_any.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL e9c01b978ee54abfd69646f14ef22a7a
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/detail/shared_dir_helpers.hpp at line 5, boost/intrusive/avl_set.hpp at line 5, boost/intrusive/avltree_algorithms.hpp at line 5, boost/intrusive/bstree_algorithms.hpp at line 5, boost/intrusive/detail/common_slist_algorithms.hpp at line 5, boost/intrusive/detail/hashtable_node.hpp at line 5, boost/intrusive/options.hpp at line 5, boost/intrusive/sg_set.hpp at line 5, boost/intrusive/sgtree.hpp at line 5, boost/intrusive/sgtree_algorithms.hpp at line 5, boost/intrusive/splay_set.hpp at line 5, boost/intrusive/splaytree.hpp at line 5, boost/intrusive/splaytree_algorithms.hpp at line 5, boost/intrusive/treap_set.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2007-2014. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/interprocess/detail/shared_dir_helpers.hpp [3:5]
- boost/intrusive/avl_set.hpp [3:3]
- boost/intrusive/avltree_algorithms.hpp [3:4]
- boost/intrusive/bstree_algorithms.hpp [3:3]
- boost/intrusive/detail/common_slist_algorithms.hpp [3:3]
- boost/intrusive/detail/hashtable_node.hpp [3:3]
- boost/intrusive/options.hpp [3:3]
- boost/intrusive/sg_set.hpp [3:3]
- boost/intrusive/sgtree.hpp [3:3]
- boost/intrusive/sgtree_algorithms.hpp [3:3]
- boost/intrusive/splay_set.hpp [3:3]
- boost/intrusive/splaytree.hpp [3:3]
- boost/intrusive/splaytree_algorithms.hpp [3:3]
- boost/intrusive/treap_set.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL e9c139c5d04d10ee2bf656ff900cbbaf
-BELONGS ya.make
- License text:
- // Copyright (c) Aaron Windsor 2007
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/chrobak_payne_drawing.hpp [2:2]
- boost/graph/planar_canonical_ordering.hpp [2:2]
- boost/graph/planar_detail/boyer_myrvold_impl.hpp [2:2]
- boost/graph/planar_detail/face_handles.hpp [2:2]
- boost/graph/planar_detail/face_iterators.hpp [2:2]
- boost/graph/planar_face_traversal.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL e9da6936cb0ee5a3c700b8021f2e4668
-BELONGS ya.make
- License text:
- Copyright (c) 2003 Joel de Guzman
- Copyright (c) 2003 Vaclav Vesely
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/dynamic/lazy.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL ea2a1d88ab559901c962fffaa443db62
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/date_time/local_time/conversion.hpp at line 6, boost/date_time/local_time/dst_transition_day_rules.hpp at line 6, boost/date_time/local_time/local_time.hpp at line 6, boost/date_time/local_time/local_time_io.hpp at line 6, boost/date_time/local_time/local_time_types.hpp at line 6, boost/date_time/local_time/tz_database.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/date_time/local_time/conversion.hpp [4:8]
- boost/date_time/local_time/dst_transition_day_rules.hpp [4:8]
- boost/date_time/local_time/local_time.hpp [4:8]
- boost/date_time/local_time/local_time_io.hpp [4:8]
- boost/date_time/local_time/local_time_types.hpp [4:8]
- boost/date_time/local_time/tz_database.hpp [4:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL ea6952b116e7dc3746a21d3d95928c35
-BELONGS ya.make
- License text:
- // Copyright (c) 2008 Frank Mori Hess
- // Copyright (c) 2016 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/owner_less.hpp [7:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL eaaa450f0bcecbc273ad0a9250e79ddc
-BELONGS ya.make
- License text:
- // Copyright (c) 2001-2002 Chuck Allison and Jeremy Siek
- // Copyright (c) 2003-2004, 2008 Gennaro Prota
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/dynamic_bitset.hpp [3:4]
- boost/integer/integer_log2.hpp [7:7]
- boost/pending/lowest_bit.hpp [6:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL eacd4b2bbe3922f7890d60fb0812ecae
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/process.hpp [1:7]
- boost/process/args.hpp [1:6]
- boost/process/async_pipe.hpp [1:5]
- boost/process/async_system.hpp [1:6]
- boost/process/child.hpp [1:6]
- boost/process/cmd.hpp [1:6]
- boost/process/detail/child_decl.hpp [1:6]
- boost/process/detail/config.hpp [1:6]
- boost/process/detail/execute_impl.hpp [1:6]
- boost/process/detail/handler_base.hpp [1:6]
- boost/process/detail/posix/async_in.hpp [1:5]
- boost/process/detail/posix/async_out.hpp [1:5]
- boost/process/detail/posix/basic_pipe.hpp [1:5]
- boost/process/detail/posix/child_handle.hpp [1:5]
- boost/process/detail/posix/close_in.hpp [1:5]
- boost/process/detail/posix/close_out.hpp [1:5]
- boost/process/detail/posix/executor.hpp [1:5]
- boost/process/detail/posix/fd.hpp [1:5]
- boost/process/detail/posix/file_in.hpp [1:5]
- boost/process/detail/posix/file_out.hpp [1:6]
- boost/process/detail/posix/null_in.hpp [1:5]
- boost/process/detail/posix/null_out.hpp [1:6]
- boost/process/detail/posix/pipe_in.hpp [1:5]
- boost/process/detail/posix/pipe_out.hpp [1:6]
- boost/process/detail/posix/search_path.hpp [1:5]
- boost/process/detail/posix/shell_path.hpp [1:5]
- boost/process/detail/posix/signal.hpp [1:6]
- boost/process/detail/posix/start_dir.hpp [1:5]
- boost/process/detail/posix/terminate.hpp [1:5]
- boost/process/detail/posix/wait_for_exit.hpp [1:5]
- boost/process/detail/posix/wait_group.hpp [1:5]
- boost/process/detail/throw_on_error.hpp [1:6]
- boost/process/detail/windows/async_in.hpp [1:5]
- boost/process/detail/windows/async_out.hpp [1:5]
- boost/process/detail/windows/child_handle.hpp [1:5]
- boost/process/detail/windows/close_in.hpp [1:5]
- boost/process/detail/windows/close_out.hpp [1:5]
- boost/process/detail/windows/executor.hpp [1:6]
- boost/process/detail/windows/file_in.hpp [1:5]
- boost/process/detail/windows/file_out.hpp [1:5]
- boost/process/detail/windows/null_in.hpp [1:5]
- boost/process/detail/windows/null_out.hpp [1:5]
- boost/process/detail/windows/pipe_in.hpp [1:5]
- boost/process/detail/windows/pipe_out.hpp [1:6]
- boost/process/detail/windows/search_path.hpp [1:5]
- boost/process/detail/windows/shell_path.hpp [1:5]
- boost/process/detail/windows/show_window.hpp [1:6]
- boost/process/detail/windows/start_dir.hpp [1:5]
- boost/process/detail/windows/terminate.hpp [1:5]
- boost/process/detail/windows/wait_for_exit.hpp [1:6]
- boost/process/error.hpp [1:6]
- boost/process/exe.hpp [1:6]
- boost/process/pipe.hpp [1:5]
- boost/process/search_path.hpp [1:5]
- boost/process/shell.hpp [1:6]
- boost/process/spawn.hpp [1:6]
- boost/process/start_dir.hpp [1:5]
- boost/process/system.hpp [1:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL eae331fb4d1aaf9e360dffe9377f0a1e
-BELONGS ya.make
- License text:
- // Copyright (c) Intel Corporation 2008.
- // Copyright (c) 2008-2012 Simonson Lucanus.
- // Copyright (c) 2012-2012 Andrii Sydorchuk.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/polygon/interval_concept.hpp [3:5]
- boost/polygon/interval_data.hpp [3:5]
- boost/polygon/interval_traits.hpp [3:5]
- boost/polygon/point_concept.hpp [3:5]
- boost/polygon/point_data.hpp [3:5]
- boost/polygon/point_traits.hpp [3:5]
- boost/polygon/segment_concept.hpp [3:5]
- boost/polygon/segment_data.hpp [3:5]
- boost/polygon/segment_traits.hpp [3:5]
- boost/polygon/transform.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL eafe3be020a3a887925e9a047938c57b
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2007
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/algorithm/query/count.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL eb0cfdfe47ae07331ac5726d7374e2de
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/hana/ext/std/vector.hpp [5:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL eb177c2d4de38073bbfeff4b54fea4fb
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/io/wkt/write.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL eb1a7a239eede3df076875abfbb7cf41
-BELONGS ya.make
- License text:
- // Copyright 2005-2013 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/detail/sp_counted_base.hpp [13:13]
-
-KEEP COPYRIGHT_SERVICE_LABEL eb5cebe314db358e0f35ffe2fb48f762
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/allocators/adaptive_pool.hpp at line 5, boost/interprocess/allocators/allocator.hpp at line 5, boost/interprocess/allocators/cached_adaptive_pool.hpp at line 5, boost/interprocess/allocators/cached_node_allocator.hpp at line 5, boost/interprocess/allocators/detail/adaptive_node_pool.hpp at line 5, boost/interprocess/allocators/detail/node_pool.hpp at line 5, boost/interprocess/allocators/node_allocator.hpp at line 5, boost/interprocess/allocators/private_adaptive_pool.hpp at line 5, boost/interprocess/allocators/private_node_allocator.hpp at line 5, boost/interprocess/anonymous_shared_memory.hpp at line 5, boost/interprocess/creation_tags.hpp at line 5, boost/interprocess/detail/cast_tags.hpp at line 5, boost/interprocess/detail/config_begin.hpp at line 5, boost/interprocess/detail/config_end.hpp at line 5, boost/interprocess/detail/in_place_interface.hpp at line 5, boost/interprocess/detail/intersegment_ptr.hpp at line 5, boost/interprocess/detail/managed_memory_impl.hpp at line 5, boost/interprocess/detail/managed_multi_shared_memory.hpp at line 5, boost/interprocess/detail/min_max.hpp at line 5, boost/interprocess/detail/named_proxy.hpp at line 5, boost/interprocess/detail/os_file_functions.hpp at line 5, boost/interprocess/detail/pointer_type.hpp at line 5, boost/interprocess/detail/posix_time_types_wrk.hpp at line 5, boost/interprocess/detail/segment_manager_helper.hpp at line 5, boost/interprocess/detail/type_traits.hpp at line 4, boost/interprocess/errors.hpp at line 5, boost/interprocess/file_mapping.hpp at line 5, boost/interprocess/indexes/flat_map_index.hpp at line 5, boost/interprocess/indexes/iset_index.hpp at line 5, boost/interprocess/indexes/iunordered_set_index.hpp at line 5, boost/interprocess/indexes/map_index.hpp at line 5, boost/interprocess/indexes/null_index.hpp at line 5, boost/interprocess/indexes/unordered_map_index.hpp at line 5, boost/interprocess/interprocess_fwd.hpp at line 5, boost/interprocess/ipc/message_queue.hpp at line 5, boost/interprocess/managed_external_buffer.hpp at line 5, boost/interprocess/managed_heap_memory.hpp at line 5, boost/interprocess/managed_mapped_file.hpp at line 5, boost/interprocess/managed_shared_memory.hpp at line 5, boost/interprocess/managed_windows_shared_memory.hpp at line 5, boost/interprocess/mapped_region.hpp at line 5, boost/interprocess/mem_algo/detail/mem_algo_common.hpp at line 5, boost/interprocess/mem_algo/detail/simple_seq_fit_impl.hpp at line 5, boost/interprocess/mem_algo/rbtree_best_fit.hpp at line 5, boost/interprocess/mem_algo/simple_seq_fit.hpp at line 5, boost/interprocess/permissions.hpp at line 5, boost/interprocess/segment_manager.hpp at line 5, boost/interprocess/shared_memory_object.hpp at line 5, boost/interprocess/streams/bufferstream.hpp at line 5, boost/interprocess/streams/vectorstream.hpp at line 5, boost/interprocess/sync/detail/condition_algorithm_8a.hpp at line 5, boost/interprocess/sync/file_lock.hpp at line 5, boost/interprocess/sync/interprocess_condition.hpp at line 5, boost/interprocess/sync/interprocess_mutex.hpp at line 5, boost/interprocess/sync/interprocess_recursive_mutex.hpp at line 5, boost/interprocess/sync/interprocess_semaphore.hpp at line 5, boost/interprocess/sync/interprocess_sharable_mutex.hpp at line 9, boost/interprocess/sync/interprocess_upgradable_mutex.hpp at line 7, boost/interprocess/sync/lock_options.hpp at line 5, boost/interprocess/sync/mutex_family.hpp at line 5, boost/interprocess/sync/named_condition.hpp at line 5, boost/interprocess/sync/named_condition_any.hpp at line 5, boost/interprocess/sync/named_mutex.hpp at line 5, boost/interprocess/sync/named_recursive_mutex.hpp at line 5, boost/interprocess/sync/named_semaphore.hpp at line 5, boost/interprocess/sync/named_sharable_mutex.hpp at line 5, boost/interprocess/sync/named_upgradable_mutex.hpp at line 5, boost/interprocess/sync/null_mutex.hpp at line 5, boost/interprocess/sync/posix/condition.hpp at line 5, boost/interprocess/sync/posix/mutex.hpp at line 5, boost/interprocess/sync/posix/named_mutex.hpp at line 5, boost/interprocess/sync/posix/named_semaphore.hpp at line 5, boost/interprocess/sync/posix/pthread_helpers.hpp at line 5, boost/interprocess/sync/posix/ptime_to_timespec.hpp at line 5, boost/interprocess/sync/posix/recursive_mutex.hpp at line 5, boost/interprocess/sync/posix/semaphore.hpp at line 5, boost/interprocess/sync/posix/semaphore_wrapper.hpp at line 5, boost/interprocess/sync/scoped_lock.hpp at line 5, boost/interprocess/sync/sharable_lock.hpp at line 5, boost/interprocess/sync/shm/named_condition.hpp at line 5, boost/interprocess/sync/shm/named_condition_any.hpp at line 5, boost/interprocess/sync/shm/named_mutex.hpp at line 5, boost/interprocess/sync/shm/named_recursive_mutex.hpp at line 5, boost/interprocess/sync/shm/named_semaphore.hpp at line 5, boost/interprocess/sync/shm/named_upgradable_mutex.hpp at line 5, boost/interprocess/sync/spin/condition.hpp at line 5, boost/interprocess/sync/spin/mutex.hpp at line 5, boost/interprocess/sync/spin/recursive_mutex.hpp at line 5, boost/interprocess/sync/spin/semaphore.hpp at line 5, boost/interprocess/sync/upgradable_lock.hpp at line 5, boost/interprocess/sync/windows/condition.hpp at line 5, boost/interprocess/sync/windows/mutex.hpp at line 5, boost/interprocess/sync/windows/recursive_mutex.hpp at line 5, boost/interprocess/sync/windows/semaphore.hpp at line 5, boost/interprocess/sync/windows/sync_utils.hpp at line 5, boost/interprocess/windows_shared_memory.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/interprocess/allocators/adaptive_pool.hpp [3:5]
- boost/interprocess/allocators/allocator.hpp [3:5]
- boost/interprocess/allocators/cached_adaptive_pool.hpp [3:5]
- boost/interprocess/allocators/cached_node_allocator.hpp [3:5]
- boost/interprocess/allocators/detail/adaptive_node_pool.hpp [3:5]
- boost/interprocess/allocators/detail/node_pool.hpp [3:5]
- boost/interprocess/allocators/node_allocator.hpp [3:5]
- boost/interprocess/allocators/private_adaptive_pool.hpp [3:5]
- boost/interprocess/allocators/private_node_allocator.hpp [3:5]
- boost/interprocess/anonymous_shared_memory.hpp [3:5]
- boost/interprocess/creation_tags.hpp [3:5]
- boost/interprocess/detail/cast_tags.hpp [3:5]
- boost/interprocess/detail/config_begin.hpp [3:5]
- boost/interprocess/detail/config_end.hpp [3:5]
- boost/interprocess/detail/in_place_interface.hpp [3:5]
- boost/interprocess/detail/intersegment_ptr.hpp [3:5]
- boost/interprocess/detail/managed_memory_impl.hpp [3:5]
- boost/interprocess/detail/managed_multi_shared_memory.hpp [3:5]
- boost/interprocess/detail/min_max.hpp [3:3]
- boost/interprocess/detail/named_proxy.hpp [3:5]
- boost/interprocess/detail/os_file_functions.hpp [3:5]
- boost/interprocess/detail/pointer_type.hpp [3:4]
- boost/interprocess/detail/posix_time_types_wrk.hpp [3:5]
- boost/interprocess/detail/segment_manager_helper.hpp [3:5]
- boost/interprocess/detail/type_traits.hpp [2:3]
- boost/interprocess/errors.hpp [3:5]
- boost/interprocess/file_mapping.hpp [3:5]
- boost/interprocess/indexes/flat_map_index.hpp [3:5]
- boost/interprocess/indexes/iset_index.hpp [3:5]
- boost/interprocess/indexes/iunordered_set_index.hpp [3:5]
- boost/interprocess/indexes/map_index.hpp [3:5]
- boost/interprocess/indexes/null_index.hpp [3:5]
- boost/interprocess/indexes/unordered_map_index.hpp [3:5]
- boost/interprocess/interprocess_fwd.hpp [3:5]
- boost/interprocess/ipc/message_queue.hpp [3:5]
- boost/interprocess/managed_external_buffer.hpp [3:5]
- boost/interprocess/managed_heap_memory.hpp [3:5]
- boost/interprocess/managed_mapped_file.hpp [3:5]
- boost/interprocess/managed_shared_memory.hpp [3:5]
- boost/interprocess/managed_windows_shared_memory.hpp [3:5]
- boost/interprocess/mapped_region.hpp [3:5]
- boost/interprocess/mem_algo/detail/mem_algo_common.hpp [3:5]
- boost/interprocess/mem_algo/detail/simple_seq_fit_impl.hpp [3:5]
- boost/interprocess/mem_algo/rbtree_best_fit.hpp [3:5]
- boost/interprocess/mem_algo/simple_seq_fit.hpp [3:5]
- boost/interprocess/permissions.hpp [3:5]
- boost/interprocess/segment_manager.hpp [3:5]
- boost/interprocess/shared_memory_object.hpp [3:5]
- boost/interprocess/streams/bufferstream.hpp [3:5]
- boost/interprocess/streams/vectorstream.hpp [3:5]
- boost/interprocess/sync/detail/condition_algorithm_8a.hpp [3:5]
- boost/interprocess/sync/file_lock.hpp [3:5]
- boost/interprocess/sync/interprocess_condition.hpp [3:5]
- boost/interprocess/sync/interprocess_mutex.hpp [3:5]
- boost/interprocess/sync/interprocess_recursive_mutex.hpp [3:5]
- boost/interprocess/sync/interprocess_semaphore.hpp [3:5]
- boost/interprocess/sync/interprocess_sharable_mutex.hpp [7:9]
- boost/interprocess/sync/interprocess_upgradable_mutex.hpp [5:7]
- boost/interprocess/sync/lock_options.hpp [3:5]
- boost/interprocess/sync/mutex_family.hpp [3:5]
- boost/interprocess/sync/named_condition.hpp [3:5]
- boost/interprocess/sync/named_condition_any.hpp [3:5]
- boost/interprocess/sync/named_mutex.hpp [3:5]
- boost/interprocess/sync/named_recursive_mutex.hpp [3:5]
- boost/interprocess/sync/named_semaphore.hpp [3:5]
- boost/interprocess/sync/named_sharable_mutex.hpp [3:5]
- boost/interprocess/sync/named_upgradable_mutex.hpp [3:5]
- boost/interprocess/sync/null_mutex.hpp [3:5]
- boost/interprocess/sync/posix/condition.hpp [3:5]
- boost/interprocess/sync/posix/mutex.hpp [3:5]
- boost/interprocess/sync/posix/named_mutex.hpp [3:5]
- boost/interprocess/sync/posix/named_semaphore.hpp [3:5]
- boost/interprocess/sync/posix/pthread_helpers.hpp [3:5]
- boost/interprocess/sync/posix/ptime_to_timespec.hpp [3:5]
- boost/interprocess/sync/posix/recursive_mutex.hpp [3:5]
- boost/interprocess/sync/posix/semaphore.hpp [3:5]
- boost/interprocess/sync/posix/semaphore_wrapper.hpp [3:5]
- boost/interprocess/sync/scoped_lock.hpp [3:5]
- boost/interprocess/sync/sharable_lock.hpp [3:5]
- boost/interprocess/sync/shm/named_condition.hpp [3:5]
- boost/interprocess/sync/shm/named_condition_any.hpp [3:5]
- boost/interprocess/sync/shm/named_mutex.hpp [3:5]
- boost/interprocess/sync/shm/named_recursive_mutex.hpp [3:5]
- boost/interprocess/sync/shm/named_semaphore.hpp [3:5]
- boost/interprocess/sync/shm/named_upgradable_mutex.hpp [3:5]
- boost/interprocess/sync/spin/condition.hpp [3:5]
- boost/interprocess/sync/spin/mutex.hpp [3:5]
- boost/interprocess/sync/spin/recursive_mutex.hpp [3:5]
- boost/interprocess/sync/spin/semaphore.hpp [3:5]
- boost/interprocess/sync/upgradable_lock.hpp [3:5]
- boost/interprocess/sync/windows/condition.hpp [3:5]
- boost/interprocess/sync/windows/mutex.hpp [3:5]
- boost/interprocess/sync/windows/recursive_mutex.hpp [3:5]
- boost/interprocess/sync/windows/semaphore.hpp [3:5]
- boost/interprocess/sync/windows/sync_utils.hpp [3:5]
- boost/interprocess/windows_shared_memory.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL eb6bb6f91accb539f5892840b9273ed5
-BELONGS ya.make
- License text:
- /* Copyright (c) 2002,2003, 2007 CrystalClear Software, Inc.
- * Use, modification and distribution is subject to the
- * Boost Software License, Version 1.0. (See accompanying
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/date_time/dst_rules.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL eb972dd55e000e751d7fd37efbdbfa39
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signals2/connection.hpp at line 9, boost/signals2/deconstruct_ptr.hpp at line 10, boost/signals2/detail/signal_template.hpp at line 9, boost/signals2/detail/signals_common_macros.hpp at line 7, boost/signals2/detail/slot_call_iterator.hpp at line 5, boost/signals2/detail/slot_groups.hpp at line 5, boost/signals2/detail/slot_template.hpp at line 5, boost/signals2/detail/tracked_objects_visitor.hpp at line 5, boost/signals2/optional_last_value.hpp at line 5, boost/signals2/postconstructible.hpp at line 10, boost/signals2/predestructible.hpp at line 10, boost/signals2/preprocessed_signal.hpp at line 9, boost/signals2/shared_connection_block.hpp at line 5, boost/signals2/signal_base.hpp at line 5, boost/signals2/slot_base.hpp at line 5
- License text:
- // Copyright Frank Mori Hess 2007-2008.
- // Distributed under the Boost Software License, Version
- // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/signals2/connection.hpp [7:9]
- boost/signals2/deconstruct_ptr.hpp [8:8]
- boost/signals2/detail/signal_template.hpp [7:7]
- boost/signals2/detail/signals_common_macros.hpp [5:7]
- boost/signals2/detail/slot_call_iterator.hpp [3:6]
- boost/signals2/detail/slot_groups.hpp [3:5]
- boost/signals2/detail/slot_template.hpp [3:7]
- boost/signals2/detail/tracked_objects_visitor.hpp [3:7]
- boost/signals2/optional_last_value.hpp [3:6]
- boost/signals2/postconstructible.hpp [8:8]
- boost/signals2/predestructible.hpp [8:8]
- boost/signals2/preprocessed_signal.hpp [7:9]
- boost/signals2/shared_connection_block.hpp [3:5]
- boost/signals2/signal_base.hpp [3:5]
- boost/signals2/slot_base.hpp [3:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL eba1043e8dcee6c64ce99ad2b5a99136
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/utility/base_from_member.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/utility/base_from_member.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL ebd56477946bcb207d304fc80a8cfbaa
-BELONGS ya.make
- License text:
- // Copyright (c) 2016-2017 Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/formulas/differential_quantities.hpp [3:3]
- boost/geometry/formulas/sjoberg_intersection.hpp [3:3]
- boost/geometry/formulas/thomas_direct.hpp [3:3]
- boost/geometry/formulas/vertex_latitude.hpp [3:3]
- boost/geometry/formulas/vertex_longitude.hpp [3:3]
- boost/geometry/strategies/azimuth.hpp [3:5]
- boost/geometry/strategies/cartesian/azimuth.hpp [3:5]
- boost/geometry/strategies/envelope.hpp [3:5]
- boost/geometry/strategies/geographic/azimuth.hpp [3:5]
- boost/geometry/strategies/spherical/azimuth.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL ec3c1b709196af39dada4f5a515a0bea
-BELONGS ya.make
- License text:
- Copyright 2005-2007 Adobe Systems Incorporated
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/gil/algorithm.hpp [2:2]
- boost/gil/bit_aligned_pixel_iterator.hpp [2:2]
- boost/gil/bit_aligned_pixel_reference.hpp [2:2]
- boost/gil/channel.hpp [2:2]
- boost/gil/channel_algorithm.hpp [2:2]
- boost/gil/cmyk.hpp [2:2]
- boost/gil/color_base.hpp [2:2]
- boost/gil/color_base_algorithm.hpp [2:2]
- boost/gil/color_convert.hpp [2:2]
- boost/gil/deprecated.hpp [2:2]
- boost/gil/device_n.hpp [2:2]
- boost/gil/extension/dynamic_image/algorithm.hpp [2:2]
- boost/gil/extension/dynamic_image/any_image.hpp [2:2]
- boost/gil/extension/dynamic_image/any_image_view.hpp [2:2]
- boost/gil/extension/dynamic_image/apply_operation.hpp [2:2]
- boost/gil/extension/dynamic_image/apply_operation_base.hpp [2:2]
- boost/gil/extension/dynamic_image/dynamic_at_c.hpp [2:2]
- boost/gil/extension/dynamic_image/dynamic_image_all.hpp [2:2]
- boost/gil/extension/dynamic_image/image_view_factory.hpp [2:2]
- boost/gil/extension/dynamic_image/reduce.hpp [2:2]
- boost/gil/extension/dynamic_image/variant.hpp [2:2]
- boost/gil/extension/io/dynamic_io.hpp [2:2]
- boost/gil/extension/io/io_error.hpp [2:2]
- boost/gil/extension/io/jpeg_dynamic_io.hpp [2:2]
- boost/gil/extension/io/jpeg_io.hpp [2:2]
- boost/gil/extension/io/jpeg_io_private.hpp [2:2]
- boost/gil/extension/io/png_dynamic_io.hpp [2:2]
- boost/gil/extension/io/png_io.hpp [2:2]
- boost/gil/extension/io/png_io_private.hpp [2:2]
- boost/gil/extension/io/tiff_dynamic_io.hpp [2:2]
- boost/gil/extension/io/tiff_io.hpp [2:2]
- boost/gil/gil_all.hpp [2:2]
- boost/gil/gil_concept.hpp [2:2]
- boost/gil/gil_config.hpp [2:2]
- boost/gil/gray.hpp [2:2]
- boost/gil/image.hpp [2:2]
- boost/gil/image_view.hpp [2:2]
- boost/gil/image_view_factory.hpp [2:2]
- boost/gil/iterator_from_2d.hpp [2:2]
- boost/gil/locator.hpp [2:2]
- boost/gil/metafunctions.hpp [2:2]
- boost/gil/packed_pixel.hpp [2:2]
- boost/gil/pixel.hpp [2:2]
- boost/gil/pixel_iterator.hpp [2:2]
- boost/gil/pixel_iterator_adaptor.hpp [2:2]
- boost/gil/planar_pixel_iterator.hpp [2:2]
- boost/gil/planar_pixel_reference.hpp [2:2]
- boost/gil/position_iterator.hpp [2:2]
- boost/gil/rgb.hpp [2:2]
- boost/gil/rgba.hpp [2:2]
- boost/gil/step_iterator.hpp [2:2]
- boost/gil/typedefs.hpp [2:2]
- boost/gil/utilities.hpp [2:2]
- boost/gil/virtual_locator.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL ec409aaa055f9ff0ccdde38e327ecdf4
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2005-2006 Dan Marsden
- Copyright (c) 2009-2010 Christopher Schmidt
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/adapted/std_pair.hpp [2:4]
- boost/fusion/adapted/struct.hpp [2:4]
- boost/fusion/adapted/struct/detail/at_impl.hpp [2:4]
- boost/fusion/adapted/struct/detail/begin_impl.hpp [2:4]
- boost/fusion/adapted/struct/detail/category_of_impl.hpp [2:4]
- boost/fusion/adapted/struct/detail/deref_data_impl.hpp [2:2]
- boost/fusion/adapted/struct/detail/deref_impl.hpp [2:2]
- boost/fusion/adapted/struct/detail/end_impl.hpp [2:4]
- boost/fusion/adapted/struct/detail/extension.hpp [2:4]
- boost/fusion/adapted/struct/detail/is_sequence_impl.hpp [2:4]
- boost/fusion/adapted/struct/detail/is_view_impl.hpp [2:4]
- boost/fusion/adapted/struct/detail/key_of_impl.hpp [2:2]
- boost/fusion/adapted/struct/detail/size_impl.hpp [2:4]
- boost/fusion/adapted/struct/detail/value_at_impl.hpp [2:4]
- boost/fusion/adapted/struct/detail/value_of_data_impl.hpp [2:2]
- boost/fusion/adapted/struct/detail/value_of_impl.hpp [2:2]
- boost/fusion/algorithm/iteration/detail/fold.hpp [2:5]
- boost/fusion/algorithm/iteration/detail/preprocessed/fold.hpp [2:4]
- boost/fusion/algorithm/iteration/detail/preprocessed/reverse_fold.hpp [2:3]
- boost/fusion/algorithm/iteration/fold.hpp [2:5]
- boost/fusion/algorithm/iteration/fold.hpp [35:37]
- boost/fusion/algorithm/iteration/reverse_fold.hpp [37:38]
-
-KEEP COPYRIGHT_SERVICE_LABEL ec75cff59ada83cd656e0f98a04ceb7d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/rolling_mean.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/accumulators/statistics/rolling_mean.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL ecaa20be5d98e1e0a2f58d58307540fd
-BELONGS ya.make
- License text:
- // This file was modified by Oracle on 2013, 2014.
- // Modifications copyright (c) 2013-2014 Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/relate/follow_helpers.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL eccfc79f4bc874aa87c7a2d097dd730f
-BELONGS ya.make
- License text:
- // Copyright (c) 2007, 2008 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/make_shared.hpp [6:6]
- boost/signals2/deconstruct.hpp [16:18]
-
-KEEP COPYRIGHT_SERVICE_LABEL ecdca441295ae759827f996dedc739c0
-BELONGS libs/iostreams/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iostreams/device/mapped_file.hpp at line 5, libs/iostreams/src/lzma.cpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/iostreams/device/mapped_file.hpp [1:5]
- libs/iostreams/src/lzma.cpp [1:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL ecfc68e71298029a5aa1e76441c84c15
-BELONGS ya.make
- License text:
- // (C) Copyright Jessica Hamilton 2014.
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/platform/haiku.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL ed1a89a5137856dcab08de627f32141d
-BELONGS ya.make
- License text:
- // Copyright Aleksey Gurtovoy 2002-2006
- // Copyright David Abrahams 2002-2003
- // Copyright Daniel Walker 2007
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/aux_/config/has_xxx.hpp [5:6]
- boost/mpl/has_xxx.hpp [5:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL ed1b188a6ba6638935d97d62b3f63c2c
-BELONGS ya.make
- License text:
- // Copyright 2005 Daniel Wallin.
- // Copyright 2005 Joel de Guzman.
- // Copyright 2005 Dan Marsden.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/phoenix/stl/algorithm/detail/begin.hpp [1:3]
- boost/phoenix/stl/algorithm/detail/decay_array.hpp [1:2]
- boost/phoenix/stl/algorithm/detail/end.hpp [1:3]
- boost/phoenix/stl/algorithm/detail/has_equal_range.hpp [1:2]
- boost/phoenix/stl/algorithm/detail/has_find.hpp [2:4]
- boost/phoenix/stl/algorithm/detail/has_lower_bound.hpp [1:2]
- boost/phoenix/stl/algorithm/detail/has_remove.hpp [1:2]
- boost/phoenix/stl/algorithm/detail/has_remove_if.hpp [1:2]
- boost/phoenix/stl/algorithm/detail/has_reverse.hpp [1:2]
- boost/phoenix/stl/algorithm/detail/has_sort.hpp [1:2]
- boost/phoenix/stl/algorithm/detail/has_unique.hpp [1:2]
- boost/phoenix/stl/algorithm/detail/has_upper_bound.hpp [1:2]
- boost/phoenix/stl/algorithm/detail/is_std_hash_map.hpp [1:2]
- boost/phoenix/stl/algorithm/detail/is_std_hash_set.hpp [1:2]
- boost/phoenix/stl/algorithm/detail/is_std_list.hpp [1:2]
- boost/phoenix/stl/algorithm/detail/is_std_map.hpp [1:2]
- boost/phoenix/stl/algorithm/detail/is_std_set.hpp [1:2]
- boost/phoenix/stl/algorithm/detail/is_unordered_set_or_map.hpp [2:4]
- boost/phoenix/stl/algorithm/iteration.hpp [1:3]
- boost/phoenix/stl/algorithm/querying.hpp [1:5]
- boost/phoenix/stl/algorithm/transformation.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL ed6bcd8dbc21acf811b7047c38c1a3b9
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/unordered/unordered_map_fwd.hpp at line 4, boost/unordered/unordered_set_fwd.hpp at line 4
- License text:
- // Copyright (C) 2008-2011 Daniel James.
- // Distributed under the Boost Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/unordered/unordered_map_fwd.hpp [2:4]
- boost/unordered/unordered_set_fwd.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL ed74a56708958a0e69848c4205e33dae
-BELONGS ya.make
- License text:
- // (C) Copyright Christopher Jefferson 2011.
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/stdlib/libcpp.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL edcaf1fe274bdd8386838aee1de0e9b8
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/detail/_cassert.h at line 4, boost/predef/detail/_exception.h at line 4, boost/predef/detail/test.h at line 4
- License text:
- Copyright Rene Rivera 2011-2012
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/predef/detail/_cassert.h [2:4]
- boost/predef/detail/_exception.h [2:4]
- boost/predef/detail/test.h [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL edcba52e7efc035e59b3977cc8670681
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2012 Joel de Guzman
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/qi/copy.hpp [2:2]
- boost/spirit/home/support/auto.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL edd357e5bb31d28a8d2f7af650d68345
-BELONGS ya.make
- License text:
- // Copyright (C) 2006-2009 Dmitry Bufistov and Andrey Parfenov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/howard_cycle_ratio.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL eddab603f446c4316fdb122bfdbc8e84
-BELONGS ya.make
- License text:
- // (C) Copyright 2006-8 Anthony Williams
- // (C) Copyright 2012 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/pthread/shared_mutex.hpp [4:5]
- boost/thread/win32/basic_recursive_mutex.hpp [6:7]
- boost/thread/win32/basic_timed_mutex.hpp [6:7]
- boost/thread/win32/shared_mutex.hpp [4:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL ede994e659efc353e0f29d6360b48dda
-BELONGS ya.make
- License text:
- Copyright Paul Mensonides 2003
- Copyright Aleksey Gurtovoy 2003-2004
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/adapted/struct/detail/preprocessor/is_seq.hpp [5:6]
- boost/mpl/aux_/preprocessor/is_seq.hpp [5:6]
- boost/mpl/aux_/preprocessor/token_equal.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL edf0d1dafd8396a0a845cddaf95f73bc
-BELONGS ya.make
- License text:
- // Copyright (C) 2002-2006 Marcin Kalicinski
- // Copyright (C) 2009 Sebastian Redl
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/property_tree/detail/exception_implementation.hpp [2:3]
- boost/property_tree/detail/ptree_implementation.hpp [2:3]
- boost/property_tree/exceptions.hpp [2:3]
- boost/property_tree/id_translator.hpp [2:2]
- boost/property_tree/ini_parser.hpp [2:3]
- boost/property_tree/ptree.hpp [2:3]
- boost/property_tree/ptree_fwd.hpp [2:3]
- boost/property_tree/stream_translator.hpp [2:2]
- boost/property_tree/string_path.hpp [2:2]
- boost/property_tree/xml_parser.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL ee741c1374d2ba8f90a01a789e14e65b
-BELONGS ya.make
- License text:
- // Copyright Frank Mori Hess 2007-2010.
- // Use, modification and
- // distribution is subject to the Boost Software License, Version
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/signals2/expired_slot.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL ee98626c63f8749be5d12af9adcde601
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/metaparse/v1/except.hpp at line 6, boost/metaparse/v1/one_char.hpp at line 6
- License text:
- // Copyright Abel Sinkovics (abel@sinkovics.hu) 2009 - 2011.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/metaparse/v1/except.hpp [4:6]
- boost/metaparse/v1/one_char.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL eecb44649514b05c6320f2629932cbe8
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/detail/suffix.hpp at line 14
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/detail/suffix.hpp [4:14]
-
-KEEP COPYRIGHT_SERVICE_LABEL eef36e86f5884df0402a5f7ab97a623e
-BELONGS ya.make
- License text:
- * Copyright (c) 2009, 2011 Helge Bahmann
- * Copyright (c) 2009 Phil Endecott
- * Copyright (c) 2013 Tim Blechmann
- * Linux-specific code by Phil Endecott
- * Copyright (c) 2014 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/atomic/detail/caps_linux_arm.hpp [6:10]
- boost/atomic/detail/ops_linux_arm.hpp [6:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL eef8c39388037a9d3f0f99a5d323045d
-BELONGS libs/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/test/impl/junit_log_formatter.ipp at line 3, boost/test/output/junit_log_formatter.hpp at line 3, libs/test/src/junit_log_formatter.cpp at line 3
- License text:
- // (C) Copyright 2016 Raffi Enficiaud.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/test/impl/junit_log_formatter.ipp [1:3]
- boost/test/output/junit_log_formatter.hpp [1:3]
- libs/test/src/junit_log_formatter.cpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL ef065a1edbfbbc1a66c01819893fb0ae
-BELONGS ya.make
- License text:
- // Copyright (c) 2006 Piotr Wyderski
- // Copyright (c) 2006 Tomas Puverle
- // Copyright (c) 2006 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp [12:14]
- boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp [11:14]
-
-KEEP COPYRIGHT_SERVICE_LABEL ef7d8354f40bb9b4612d75303421dce4
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/move/algo/detail/heap_sort.hpp at line 5, boost/move/algo/detail/is_sorted.hpp at line 7, boost/move/algo/detail/pdqsort.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2017-2018.
- // Distributed under the Boost Software License, Version 1.0.
+ * Boost Software License, Version 1.0. (See accompanying
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/date_time/dst_rules.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL eb972dd55e000e751d7fd37efbdbfa39
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signals2/connection.hpp at line 9, boost/signals2/deconstruct_ptr.hpp at line 10, boost/signals2/detail/signal_template.hpp at line 9, boost/signals2/detail/signals_common_macros.hpp at line 7, boost/signals2/detail/slot_call_iterator.hpp at line 5, boost/signals2/detail/slot_groups.hpp at line 5, boost/signals2/detail/slot_template.hpp at line 5, boost/signals2/detail/tracked_objects_visitor.hpp at line 5, boost/signals2/optional_last_value.hpp at line 5, boost/signals2/postconstructible.hpp at line 10, boost/signals2/predestructible.hpp at line 10, boost/signals2/preprocessed_signal.hpp at line 9, boost/signals2/shared_connection_block.hpp at line 5, boost/signals2/signal_base.hpp at line 5, boost/signals2/slot_base.hpp at line 5
+ License text:
+ // Copyright Frank Mori Hess 2007-2008.
+ // Distributed under the Boost Software License, Version
+ // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/signals2/connection.hpp [7:9]
+ boost/signals2/deconstruct_ptr.hpp [8:8]
+ boost/signals2/detail/signal_template.hpp [7:7]
+ boost/signals2/detail/signals_common_macros.hpp [5:7]
+ boost/signals2/detail/slot_call_iterator.hpp [3:6]
+ boost/signals2/detail/slot_groups.hpp [3:5]
+ boost/signals2/detail/slot_template.hpp [3:7]
+ boost/signals2/detail/tracked_objects_visitor.hpp [3:7]
+ boost/signals2/optional_last_value.hpp [3:6]
+ boost/signals2/postconstructible.hpp [8:8]
+ boost/signals2/predestructible.hpp [8:8]
+ boost/signals2/preprocessed_signal.hpp [7:9]
+ boost/signals2/shared_connection_block.hpp [3:5]
+ boost/signals2/signal_base.hpp [3:5]
+ boost/signals2/slot_base.hpp [3:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL eba1043e8dcee6c64ce99ad2b5a99136
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/utility/base_from_member.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/utility/base_from_member.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL ebd56477946bcb207d304fc80a8cfbaa
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2016-2017 Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/formulas/differential_quantities.hpp [3:3]
+ boost/geometry/formulas/sjoberg_intersection.hpp [3:3]
+ boost/geometry/formulas/thomas_direct.hpp [3:3]
+ boost/geometry/formulas/vertex_latitude.hpp [3:3]
+ boost/geometry/formulas/vertex_longitude.hpp [3:3]
+ boost/geometry/strategies/azimuth.hpp [3:5]
+ boost/geometry/strategies/cartesian/azimuth.hpp [3:5]
+ boost/geometry/strategies/envelope.hpp [3:5]
+ boost/geometry/strategies/geographic/azimuth.hpp [3:5]
+ boost/geometry/strategies/spherical/azimuth.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL ec3c1b709196af39dada4f5a515a0bea
+BELONGS ya.make
+ License text:
+ Copyright 2005-2007 Adobe Systems Incorporated
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/gil/algorithm.hpp [2:2]
+ boost/gil/bit_aligned_pixel_iterator.hpp [2:2]
+ boost/gil/bit_aligned_pixel_reference.hpp [2:2]
+ boost/gil/channel.hpp [2:2]
+ boost/gil/channel_algorithm.hpp [2:2]
+ boost/gil/cmyk.hpp [2:2]
+ boost/gil/color_base.hpp [2:2]
+ boost/gil/color_base_algorithm.hpp [2:2]
+ boost/gil/color_convert.hpp [2:2]
+ boost/gil/deprecated.hpp [2:2]
+ boost/gil/device_n.hpp [2:2]
+ boost/gil/extension/dynamic_image/algorithm.hpp [2:2]
+ boost/gil/extension/dynamic_image/any_image.hpp [2:2]
+ boost/gil/extension/dynamic_image/any_image_view.hpp [2:2]
+ boost/gil/extension/dynamic_image/apply_operation.hpp [2:2]
+ boost/gil/extension/dynamic_image/apply_operation_base.hpp [2:2]
+ boost/gil/extension/dynamic_image/dynamic_at_c.hpp [2:2]
+ boost/gil/extension/dynamic_image/dynamic_image_all.hpp [2:2]
+ boost/gil/extension/dynamic_image/image_view_factory.hpp [2:2]
+ boost/gil/extension/dynamic_image/reduce.hpp [2:2]
+ boost/gil/extension/dynamic_image/variant.hpp [2:2]
+ boost/gil/extension/io/dynamic_io.hpp [2:2]
+ boost/gil/extension/io/io_error.hpp [2:2]
+ boost/gil/extension/io/jpeg_dynamic_io.hpp [2:2]
+ boost/gil/extension/io/jpeg_io.hpp [2:2]
+ boost/gil/extension/io/jpeg_io_private.hpp [2:2]
+ boost/gil/extension/io/png_dynamic_io.hpp [2:2]
+ boost/gil/extension/io/png_io.hpp [2:2]
+ boost/gil/extension/io/png_io_private.hpp [2:2]
+ boost/gil/extension/io/tiff_dynamic_io.hpp [2:2]
+ boost/gil/extension/io/tiff_io.hpp [2:2]
+ boost/gil/gil_all.hpp [2:2]
+ boost/gil/gil_concept.hpp [2:2]
+ boost/gil/gil_config.hpp [2:2]
+ boost/gil/gray.hpp [2:2]
+ boost/gil/image.hpp [2:2]
+ boost/gil/image_view.hpp [2:2]
+ boost/gil/image_view_factory.hpp [2:2]
+ boost/gil/iterator_from_2d.hpp [2:2]
+ boost/gil/locator.hpp [2:2]
+ boost/gil/metafunctions.hpp [2:2]
+ boost/gil/packed_pixel.hpp [2:2]
+ boost/gil/pixel.hpp [2:2]
+ boost/gil/pixel_iterator.hpp [2:2]
+ boost/gil/pixel_iterator_adaptor.hpp [2:2]
+ boost/gil/planar_pixel_iterator.hpp [2:2]
+ boost/gil/planar_pixel_reference.hpp [2:2]
+ boost/gil/position_iterator.hpp [2:2]
+ boost/gil/rgb.hpp [2:2]
+ boost/gil/rgba.hpp [2:2]
+ boost/gil/step_iterator.hpp [2:2]
+ boost/gil/typedefs.hpp [2:2]
+ boost/gil/utilities.hpp [2:2]
+ boost/gil/virtual_locator.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL ec409aaa055f9ff0ccdde38e327ecdf4
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+ Copyright (c) 2009-2010 Christopher Schmidt
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/adapted/std_pair.hpp [2:4]
+ boost/fusion/adapted/struct.hpp [2:4]
+ boost/fusion/adapted/struct/detail/at_impl.hpp [2:4]
+ boost/fusion/adapted/struct/detail/begin_impl.hpp [2:4]
+ boost/fusion/adapted/struct/detail/category_of_impl.hpp [2:4]
+ boost/fusion/adapted/struct/detail/deref_data_impl.hpp [2:2]
+ boost/fusion/adapted/struct/detail/deref_impl.hpp [2:2]
+ boost/fusion/adapted/struct/detail/end_impl.hpp [2:4]
+ boost/fusion/adapted/struct/detail/extension.hpp [2:4]
+ boost/fusion/adapted/struct/detail/is_sequence_impl.hpp [2:4]
+ boost/fusion/adapted/struct/detail/is_view_impl.hpp [2:4]
+ boost/fusion/adapted/struct/detail/key_of_impl.hpp [2:2]
+ boost/fusion/adapted/struct/detail/size_impl.hpp [2:4]
+ boost/fusion/adapted/struct/detail/value_at_impl.hpp [2:4]
+ boost/fusion/adapted/struct/detail/value_of_data_impl.hpp [2:2]
+ boost/fusion/adapted/struct/detail/value_of_impl.hpp [2:2]
+ boost/fusion/algorithm/iteration/detail/fold.hpp [2:5]
+ boost/fusion/algorithm/iteration/detail/preprocessed/fold.hpp [2:4]
+ boost/fusion/algorithm/iteration/detail/preprocessed/reverse_fold.hpp [2:3]
+ boost/fusion/algorithm/iteration/fold.hpp [2:5]
+ boost/fusion/algorithm/iteration/fold.hpp [35:37]
+ boost/fusion/algorithm/iteration/reverse_fold.hpp [37:38]
+
+KEEP COPYRIGHT_SERVICE_LABEL ec75cff59ada83cd656e0f98a04ceb7d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/rolling_mean.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/accumulators/statistics/rolling_mean.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL ecaa20be5d98e1e0a2f58d58307540fd
+BELONGS ya.make
+ License text:
+ // This file was modified by Oracle on 2013, 2014.
+ // Modifications copyright (c) 2013-2014 Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/relate/follow_helpers.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL eccfc79f4bc874aa87c7a2d097dd730f
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2007, 2008 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/make_shared.hpp [6:6]
+ boost/signals2/deconstruct.hpp [16:18]
+
+KEEP COPYRIGHT_SERVICE_LABEL ecdca441295ae759827f996dedc739c0
+BELONGS libs/iostreams/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iostreams/device/mapped_file.hpp at line 5, libs/iostreams/src/lzma.cpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/iostreams/device/mapped_file.hpp [1:5]
+ libs/iostreams/src/lzma.cpp [1:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL ecfc68e71298029a5aa1e76441c84c15
+BELONGS ya.make
+ License text:
+ // (C) Copyright Jessica Hamilton 2014.
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/platform/haiku.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL ed1a89a5137856dcab08de627f32141d
+BELONGS ya.make
+ License text:
+ // Copyright Aleksey Gurtovoy 2002-2006
+ // Copyright David Abrahams 2002-2003
+ // Copyright Daniel Walker 2007
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/aux_/config/has_xxx.hpp [5:6]
+ boost/mpl/has_xxx.hpp [5:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL ed1b188a6ba6638935d97d62b3f63c2c
+BELONGS ya.make
+ License text:
+ // Copyright 2005 Daniel Wallin.
+ // Copyright 2005 Joel de Guzman.
+ // Copyright 2005 Dan Marsden.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/phoenix/stl/algorithm/detail/begin.hpp [1:3]
+ boost/phoenix/stl/algorithm/detail/decay_array.hpp [1:2]
+ boost/phoenix/stl/algorithm/detail/end.hpp [1:3]
+ boost/phoenix/stl/algorithm/detail/has_equal_range.hpp [1:2]
+ boost/phoenix/stl/algorithm/detail/has_find.hpp [2:4]
+ boost/phoenix/stl/algorithm/detail/has_lower_bound.hpp [1:2]
+ boost/phoenix/stl/algorithm/detail/has_remove.hpp [1:2]
+ boost/phoenix/stl/algorithm/detail/has_remove_if.hpp [1:2]
+ boost/phoenix/stl/algorithm/detail/has_reverse.hpp [1:2]
+ boost/phoenix/stl/algorithm/detail/has_sort.hpp [1:2]
+ boost/phoenix/stl/algorithm/detail/has_unique.hpp [1:2]
+ boost/phoenix/stl/algorithm/detail/has_upper_bound.hpp [1:2]
+ boost/phoenix/stl/algorithm/detail/is_std_hash_map.hpp [1:2]
+ boost/phoenix/stl/algorithm/detail/is_std_hash_set.hpp [1:2]
+ boost/phoenix/stl/algorithm/detail/is_std_list.hpp [1:2]
+ boost/phoenix/stl/algorithm/detail/is_std_map.hpp [1:2]
+ boost/phoenix/stl/algorithm/detail/is_std_set.hpp [1:2]
+ boost/phoenix/stl/algorithm/detail/is_unordered_set_or_map.hpp [2:4]
+ boost/phoenix/stl/algorithm/iteration.hpp [1:3]
+ boost/phoenix/stl/algorithm/querying.hpp [1:5]
+ boost/phoenix/stl/algorithm/transformation.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL ed6bcd8dbc21acf811b7047c38c1a3b9
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/unordered/unordered_map_fwd.hpp at line 4, boost/unordered/unordered_set_fwd.hpp at line 4
+ License text:
+ // Copyright (C) 2008-2011 Daniel James.
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/unordered/unordered_map_fwd.hpp [2:4]
+ boost/unordered/unordered_set_fwd.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL ed74a56708958a0e69848c4205e33dae
+BELONGS ya.make
+ License text:
+ // (C) Copyright Christopher Jefferson 2011.
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/stdlib/libcpp.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL edcaf1fe274bdd8386838aee1de0e9b8
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/detail/_cassert.h at line 4, boost/predef/detail/_exception.h at line 4, boost/predef/detail/test.h at line 4
+ License text:
+ Copyright Rene Rivera 2011-2012
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/predef/detail/_cassert.h [2:4]
+ boost/predef/detail/_exception.h [2:4]
+ boost/predef/detail/test.h [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL edcba52e7efc035e59b3977cc8670681
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2012 Joel de Guzman
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/qi/copy.hpp [2:2]
+ boost/spirit/home/support/auto.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL edd357e5bb31d28a8d2f7af650d68345
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2006-2009 Dmitry Bufistov and Andrey Parfenov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/howard_cycle_ratio.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL eddab603f446c4316fdb122bfdbc8e84
+BELONGS ya.make
+ License text:
+ // (C) Copyright 2006-8 Anthony Williams
+ // (C) Copyright 2012 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/pthread/shared_mutex.hpp [4:5]
+ boost/thread/win32/basic_recursive_mutex.hpp [6:7]
+ boost/thread/win32/basic_timed_mutex.hpp [6:7]
+ boost/thread/win32/shared_mutex.hpp [4:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL ede994e659efc353e0f29d6360b48dda
+BELONGS ya.make
+ License text:
+ Copyright Paul Mensonides 2003
+ Copyright Aleksey Gurtovoy 2003-2004
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/adapted/struct/detail/preprocessor/is_seq.hpp [5:6]
+ boost/mpl/aux_/preprocessor/is_seq.hpp [5:6]
+ boost/mpl/aux_/preprocessor/token_equal.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL edf0d1dafd8396a0a845cddaf95f73bc
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2002-2006 Marcin Kalicinski
+ // Copyright (C) 2009 Sebastian Redl
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/property_tree/detail/exception_implementation.hpp [2:3]
+ boost/property_tree/detail/ptree_implementation.hpp [2:3]
+ boost/property_tree/exceptions.hpp [2:3]
+ boost/property_tree/id_translator.hpp [2:2]
+ boost/property_tree/ini_parser.hpp [2:3]
+ boost/property_tree/ptree.hpp [2:3]
+ boost/property_tree/ptree_fwd.hpp [2:3]
+ boost/property_tree/stream_translator.hpp [2:2]
+ boost/property_tree/string_path.hpp [2:2]
+ boost/property_tree/xml_parser.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL ee741c1374d2ba8f90a01a789e14e65b
+BELONGS ya.make
+ License text:
+ // Copyright Frank Mori Hess 2007-2010.
+ // Use, modification and
+ // distribution is subject to the Boost Software License, Version
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/signals2/expired_slot.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL ee98626c63f8749be5d12af9adcde601
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/metaparse/v1/except.hpp at line 6, boost/metaparse/v1/one_char.hpp at line 6
+ License text:
+ // Copyright Abel Sinkovics (abel@sinkovics.hu) 2009 - 2011.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/metaparse/v1/except.hpp [4:6]
+ boost/metaparse/v1/one_char.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL eecb44649514b05c6320f2629932cbe8
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/detail/suffix.hpp at line 14
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/detail/suffix.hpp [4:14]
+
+KEEP COPYRIGHT_SERVICE_LABEL eef36e86f5884df0402a5f7ab97a623e
+BELONGS ya.make
+ License text:
+ * Copyright (c) 2009, 2011 Helge Bahmann
+ * Copyright (c) 2009 Phil Endecott
+ * Copyright (c) 2013 Tim Blechmann
+ * Linux-specific code by Phil Endecott
+ * Copyright (c) 2014 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/atomic/detail/caps_linux_arm.hpp [6:10]
+ boost/atomic/detail/ops_linux_arm.hpp [6:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL eef8c39388037a9d3f0f99a5d323045d
+BELONGS libs/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/test/impl/junit_log_formatter.ipp at line 3, boost/test/output/junit_log_formatter.hpp at line 3, libs/test/src/junit_log_formatter.cpp at line 3
+ License text:
+ // (C) Copyright 2016 Raffi Enficiaud.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/test/impl/junit_log_formatter.ipp [1:3]
+ boost/test/output/junit_log_formatter.hpp [1:3]
+ libs/test/src/junit_log_formatter.cpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL ef065a1edbfbbc1a66c01819893fb0ae
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2006 Piotr Wyderski
+ // Copyright (c) 2006 Tomas Puverle
+ // Copyright (c) 2006 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp [12:14]
+ boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp [11:14]
+
+KEEP COPYRIGHT_SERVICE_LABEL ef7d8354f40bb9b4612d75303421dce4
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/move/algo/detail/heap_sort.hpp at line 5, boost/move/algo/detail/is_sorted.hpp at line 7, boost/move/algo/detail/pdqsort.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2017-2018.
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/move/algo/detail/heap_sort.hpp [3:5]
+ boost/move/algo/detail/is_sorted.hpp [5:7]
+ boost/move/algo/detail/pdqsort.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL ef855b94e2b0220e8b57c56cf044988c
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2009-2013 Tim Blechmann
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/lockfree/spsc_queue.hpp [4:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL f06bc27adb2e965a6733be74af56d166
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2001-2011 Hartmut Kaiser
+ Copyright (c) 2011 Thomas Bernard
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/repository/include/qi_keywords.hpp [2:5]
+ boost/spirit/repository/include/qi_kwd.hpp [2:5]
+ boost/spirit/repository/include/qi_kwd.hpp [21:24]
+
+KEEP COPYRIGHT_SERVICE_LABEL f091662b8bb6cc43b1bae6fb4713d892
+BELONGS ya.make
+ License text:
+ // Copyright 2000 John Maddock (john@johnmaddock.co.uk)
+ // Copyright 2000 Jeremy Siek (jsiek@lsc.nd.edu)
+ // Copyright 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/type_traits/conversion_traits.hpp [2:4]
+ boost/type_traits/detail/is_function_ptr_helper.hpp [2:3]
+ boost/type_traits/function_traits.hpp [2:4]
+ boost/type_traits/is_convertible.hpp [2:4]
+ boost/type_traits/is_function.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL f0b8ed03b3e6768e72562e606eb71763
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/sort/common/file_vector.hpp at line 9
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/sort/common/file_vector.hpp [7:9]
+
+KEEP COPYRIGHT_SERVICE_LABEL f0f1ab3959ce5327ccd605b1a43fefbf
+BELONGS ya.make
+ License text:
+ // (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry.hpp [8:8]
+ boost/geometry/algorithms/append.hpp [14:14]
+ boost/geometry/algorithms/area.hpp [13:13]
+ boost/geometry/algorithms/assign.hpp [9:9]
+ boost/geometry/algorithms/buffer.hpp [12:12]
+ boost/geometry/algorithms/centroid.hpp [15:15]
+ boost/geometry/algorithms/clear.hpp [8:8]
+ boost/geometry/algorithms/comparable_distance.hpp [13:13]
+ boost/geometry/algorithms/convert.hpp [13:13]
+ boost/geometry/algorithms/convex_hull.hpp [14:14]
+ boost/geometry/algorithms/correct.hpp [13:13]
+ boost/geometry/algorithms/covered_by.hpp [13:13]
+ boost/geometry/algorithms/crosses.hpp [14:14]
+ boost/geometry/algorithms/detail/as_range.hpp [8:8]
+ boost/geometry/algorithms/detail/assign_box_corners.hpp [8:8]
+ boost/geometry/algorithms/detail/assign_indexed_point.hpp [8:8]
+ boost/geometry/algorithms/detail/assign_values.hpp [8:8]
+ boost/geometry/algorithms/detail/calculate_null.hpp [8:8]
+ boost/geometry/algorithms/detail/calculate_sum.hpp [9:9]
+ boost/geometry/algorithms/detail/comparable_distance/implementation.hpp [13:13]
+ boost/geometry/algorithms/detail/comparable_distance/interface.hpp [13:13]
+ boost/geometry/algorithms/detail/convert_indexed_to_indexed.hpp [8:8]
+ boost/geometry/algorithms/detail/convert_point_to_point.hpp [8:8]
+ boost/geometry/algorithms/detail/counting.hpp [14:14]
+ boost/geometry/algorithms/detail/covered_by/implementation.hpp [13:13]
+ boost/geometry/algorithms/detail/covered_by/interface.hpp [13:13]
+ boost/geometry/algorithms/detail/disjoint/areal_areal.hpp [15:15]
+ boost/geometry/algorithms/detail/disjoint/box_box.hpp [15:15]
+ boost/geometry/algorithms/detail/disjoint/implementation.hpp [15:15]
+ boost/geometry/algorithms/detail/disjoint/interface.hpp [15:15]
+ boost/geometry/algorithms/detail/disjoint/linear_areal.hpp [15:15]
+ boost/geometry/algorithms/detail/disjoint/linear_linear.hpp [15:15]
+ boost/geometry/algorithms/detail/disjoint/linear_segment_or_box.hpp [15:15]
+ boost/geometry/algorithms/detail/disjoint/point_box.hpp [15:15]
+ boost/geometry/algorithms/detail/disjoint/point_geometry.hpp [15:15]
+ boost/geometry/algorithms/detail/disjoint/point_point.hpp [15:15]
+ boost/geometry/algorithms/detail/disjoint/segment_box.hpp [16:16]
+ boost/geometry/algorithms/detail/distance/backward_compatibility.hpp [14:14]
+ boost/geometry/algorithms/detail/distance/default_strategies.hpp [14:14]
+ boost/geometry/algorithms/detail/distance/implementation.hpp [14:14]
+ boost/geometry/algorithms/detail/distance/interface.hpp [15:15]
+ boost/geometry/algorithms/detail/distance/point_to_geometry.hpp [14:14]
+ boost/geometry/algorithms/detail/envelope/implementation.hpp [14:14]
+ boost/geometry/algorithms/detail/envelope/interface.hpp [15:15]
+ boost/geometry/algorithms/detail/envelope/range.hpp [14:14]
+ boost/geometry/algorithms/detail/equals/collect_vectors.hpp [14:14]
+ boost/geometry/algorithms/detail/equals/implementation.hpp [15:15]
+ boost/geometry/algorithms/detail/equals/interface.hpp [15:15]
+ boost/geometry/algorithms/detail/equals/point_point.hpp [15:15]
+ boost/geometry/algorithms/detail/expand/implementation.hpp [14:14]
+ boost/geometry/algorithms/detail/expand/indexed.hpp [16:16]
+ boost/geometry/algorithms/detail/expand/interface.hpp [15:15]
+ boost/geometry/algorithms/detail/expand/point.hpp [16:16]
+ boost/geometry/algorithms/detail/for_each_range.hpp [8:8]
+ boost/geometry/algorithms/detail/intersects/implementation.hpp [14:14]
+ boost/geometry/algorithms/detail/intersects/interface.hpp [14:14]
+ boost/geometry/algorithms/detail/multi_modify.hpp [12:12]
+ boost/geometry/algorithms/detail/multi_modify_with_predicate.hpp [8:8]
+ boost/geometry/algorithms/detail/multi_sum.hpp [8:8]
+ boost/geometry/algorithms/detail/not.hpp [14:14]
+ boost/geometry/algorithms/detail/overlaps/implementation.hpp [13:13]
+ boost/geometry/algorithms/detail/overlaps/interface.hpp [13:13]
+ boost/geometry/algorithms/detail/point_on_border.hpp [12:12]
+ boost/geometry/algorithms/detail/sections/range_by_section.hpp [8:8]
+ boost/geometry/algorithms/detail/sections/sectionalize.hpp [15:15]
+ boost/geometry/algorithms/detail/touches/implementation.hpp [14:14]
+ boost/geometry/algorithms/detail/touches/interface.hpp [14:14]
+ boost/geometry/algorithms/detail/within/implementation.hpp [13:13]
+ boost/geometry/algorithms/detail/within/interface.hpp [13:13]
+ boost/geometry/algorithms/detail/within/point_in_geometry.hpp [14:14]
+ boost/geometry/algorithms/detail/within/within_no_turns.hpp [11:11]
+ boost/geometry/algorithms/disjoint.hpp [15:15]
+ boost/geometry/algorithms/dispatch/disjoint.hpp [15:15]
+ boost/geometry/algorithms/dispatch/distance.hpp [14:14]
+ boost/geometry/algorithms/dispatch/envelope.hpp [13:13]
+ boost/geometry/algorithms/dispatch/expand.hpp [15:15]
+ boost/geometry/algorithms/distance.hpp [14:14]
+ boost/geometry/algorithms/envelope.hpp [13:13]
+ boost/geometry/algorithms/equals.hpp [15:15]
+ boost/geometry/algorithms/expand.hpp [14:14]
+ boost/geometry/algorithms/for_each.hpp [14:14]
+ boost/geometry/algorithms/intersects.hpp [14:14]
+ boost/geometry/algorithms/length.hpp [14:14]
+ boost/geometry/algorithms/make.hpp [8:8]
+ boost/geometry/algorithms/not_implemented.hpp [13:13]
+ boost/geometry/algorithms/num_geometries.hpp [13:13]
+ boost/geometry/algorithms/num_interior_rings.hpp [14:14]
+ boost/geometry/algorithms/num_points.hpp [14:14]
+ boost/geometry/algorithms/overlaps.hpp [13:13]
+ boost/geometry/algorithms/perimeter.hpp [13:13]
+ boost/geometry/algorithms/reverse.hpp [9:9]
+ boost/geometry/algorithms/simplify.hpp [8:8]
+ boost/geometry/algorithms/touches.hpp [14:14]
+ boost/geometry/algorithms/transform.hpp [9:9]
+ boost/geometry/algorithms/unique.hpp [9:9]
+ boost/geometry/algorithms/within.hpp [13:13]
+ boost/geometry/arithmetic/arithmetic.hpp [8:8]
+ boost/geometry/arithmetic/dot_product.hpp [8:8]
+ boost/geometry/core/access.hpp [8:8]
+ boost/geometry/core/closure.hpp [13:13]
+ boost/geometry/core/coordinate_dimension.hpp [8:8]
+ boost/geometry/core/coordinate_system.hpp [8:8]
+ boost/geometry/core/coordinate_type.hpp [8:8]
+ boost/geometry/core/cs.hpp [13:13]
+ boost/geometry/core/exception.hpp [13:13]
+ boost/geometry/core/exterior_ring.hpp [8:8]
+ boost/geometry/core/geometry_id.hpp [8:8]
+ boost/geometry/core/interior_rings.hpp [8:8]
+ boost/geometry/core/interior_type.hpp [8:8]
+ boost/geometry/core/is_areal.hpp [8:8]
+ boost/geometry/core/mutable_range.hpp [8:8]
+ boost/geometry/core/point_order.hpp [13:13]
+ boost/geometry/core/point_type.hpp [8:8]
+ boost/geometry/core/radian_access.hpp [13:13]
+ boost/geometry/core/radius.hpp [13:13]
+ boost/geometry/core/reverse_dispatch.hpp [8:8]
+ boost/geometry/core/ring_type.hpp [13:13]
+ boost/geometry/core/tag.hpp [8:8]
+ boost/geometry/core/tag_cast.hpp [8:8]
+ boost/geometry/core/tags.hpp [13:13]
+ boost/geometry/core/topological_dimension.hpp [8:8]
+ boost/geometry/geometries/adapted/boost_tuple.hpp [8:8]
+ boost/geometry/geometries/adapted/c_array.hpp [8:8]
+ boost/geometry/geometries/adapted/std_pair_as_segment.hpp [8:8]
+ boost/geometry/geometries/box.hpp [8:8]
+ boost/geometry/geometries/concepts/box_concept.hpp [8:8]
+ boost/geometry/geometries/concepts/check.hpp [8:8]
+ boost/geometry/geometries/concepts/linestring_concept.hpp [8:8]
+ boost/geometry/geometries/concepts/multi_linestring_concept.hpp [8:8]
+ boost/geometry/geometries/concepts/multi_point_concept.hpp [8:8]
+ boost/geometry/geometries/concepts/multi_polygon_concept.hpp [8:8]
+ boost/geometry/geometries/concepts/point_concept.hpp [13:13]
+ boost/geometry/geometries/concepts/polygon_concept.hpp [8:8]
+ boost/geometry/geometries/concepts/ring_concept.hpp [8:8]
+ boost/geometry/geometries/concepts/segment_concept.hpp [8:8]
+ boost/geometry/geometries/geometries.hpp [8:8]
+ boost/geometry/geometries/linestring.hpp [9:9]
+ boost/geometry/geometries/multi_linestring.hpp [9:9]
+ boost/geometry/geometries/multi_point.hpp [9:9]
+ boost/geometry/geometries/multi_polygon.hpp [9:9]
+ boost/geometry/geometries/point.hpp [14:14]
+ boost/geometry/geometries/point_xy.hpp [8:8]
+ boost/geometry/geometries/polygon.hpp [9:9]
+ boost/geometry/geometries/register/box.hpp [8:8]
+ boost/geometry/geometries/register/linestring.hpp [8:8]
+ boost/geometry/geometries/register/multi_linestring.hpp [8:8]
+ boost/geometry/geometries/register/multi_point.hpp [8:8]
+ boost/geometry/geometries/register/multi_polygon.hpp [8:8]
+ boost/geometry/geometries/register/point.hpp [8:8]
+ boost/geometry/geometries/register/ring.hpp [8:8]
+ boost/geometry/geometries/register/segment.hpp [8:8]
+ boost/geometry/geometries/ring.hpp [9:9]
+ boost/geometry/geometries/segment.hpp [8:8]
+ boost/geometry/geometries/variant.hpp [8:8]
+ boost/geometry/geometry.hpp [14:14]
+ boost/geometry/io/dsv/write.hpp [9:9]
+ boost/geometry/io/io.hpp [8:8]
+ boost/geometry/io/svg/svg_mapper.hpp [12:12]
+ boost/geometry/io/svg/write.hpp [12:12]
+ boost/geometry/io/svg/write_svg.hpp [12:12]
+ boost/geometry/io/svg/write_svg_multi.hpp [11:11]
+ boost/geometry/io/wkt/detail/prefix.hpp [8:8]
+ boost/geometry/io/wkt/detail/wkt_multi.hpp [8:8]
+ boost/geometry/io/wkt/read.hpp [14:14]
+ boost/geometry/io/wkt/stream.hpp [8:8]
+ boost/geometry/io/wkt/wkt.hpp [8:8]
+ boost/geometry/io/wkt/write.hpp [14:14]
+ boost/geometry/iterators/base.hpp [8:8]
+ boost/geometry/iterators/closing_iterator.hpp [8:8]
+ boost/geometry/iterators/ever_circling_iterator.hpp [8:8]
+ boost/geometry/multi/algorithms/append.hpp [14:14]
+ boost/geometry/multi/algorithms/area.hpp [8:8]
+ boost/geometry/multi/algorithms/centroid.hpp [8:8]
+ boost/geometry/multi/algorithms/clear.hpp [8:8]
+ boost/geometry/multi/algorithms/convert.hpp [8:8]
+ boost/geometry/multi/algorithms/correct.hpp [8:8]
+ boost/geometry/multi/algorithms/covered_by.hpp [12:12]
+ boost/geometry/multi/algorithms/detail/for_each_range.hpp [8:8]
+ boost/geometry/multi/algorithms/detail/modify.hpp [8:8]
+ boost/geometry/multi/algorithms/detail/modify_with_predicate.hpp [8:8]
+ boost/geometry/multi/algorithms/detail/multi_sum.hpp [8:8]
+ boost/geometry/multi/algorithms/detail/point_on_border.hpp [11:11]
+ boost/geometry/multi/algorithms/detail/sections/range_by_section.hpp [11:11]
+ boost/geometry/multi/algorithms/detail/sections/sectionalize.hpp [11:11]
+ boost/geometry/multi/algorithms/distance.hpp [13:13]
+ boost/geometry/multi/algorithms/envelope.hpp [8:8]
+ boost/geometry/multi/algorithms/equals.hpp [8:8]
+ boost/geometry/multi/algorithms/for_each.hpp [8:8]
+ boost/geometry/multi/algorithms/length.hpp [8:8]
+ boost/geometry/multi/algorithms/num_geometries.hpp [8:8]
+ boost/geometry/multi/algorithms/num_interior_rings.hpp [13:13]
+ boost/geometry/multi/algorithms/num_points.hpp [13:13]
+ boost/geometry/multi/algorithms/perimeter.hpp [8:8]
+ boost/geometry/multi/algorithms/reverse.hpp [8:8]
+ boost/geometry/multi/algorithms/simplify.hpp [8:8]
+ boost/geometry/multi/algorithms/transform.hpp [8:8]
+ boost/geometry/multi/algorithms/unique.hpp [8:8]
+ boost/geometry/multi/algorithms/within.hpp [12:12]
+ boost/geometry/multi/core/closure.hpp [8:8]
+ boost/geometry/multi/core/geometry_id.hpp [8:8]
+ boost/geometry/multi/core/interior_rings.hpp [8:8]
+ boost/geometry/multi/core/is_areal.hpp [8:8]
+ boost/geometry/multi/core/point_order.hpp [8:8]
+ boost/geometry/multi/core/point_type.hpp [8:8]
+ boost/geometry/multi/core/ring_type.hpp [11:11]
+ boost/geometry/multi/core/tags.hpp [8:8]
+ boost/geometry/multi/core/topological_dimension.hpp [8:8]
+ boost/geometry/multi/geometries/concepts/check.hpp [8:8]
+ boost/geometry/multi/geometries/concepts/multi_linestring_concept.hpp [8:8]
+ boost/geometry/multi/geometries/concepts/multi_point_concept.hpp [8:8]
+ boost/geometry/multi/geometries/concepts/multi_polygon_concept.hpp [8:8]
+ boost/geometry/multi/geometries/multi_geometries.hpp [8:8]
+ boost/geometry/multi/geometries/multi_linestring.hpp [8:8]
+ boost/geometry/multi/geometries/multi_point.hpp [8:8]
+ boost/geometry/multi/geometries/multi_polygon.hpp [8:8]
+ boost/geometry/multi/geometries/register/multi_linestring.hpp [8:8]
+ boost/geometry/multi/geometries/register/multi_point.hpp [8:8]
+ boost/geometry/multi/geometries/register/multi_polygon.hpp [8:8]
+ boost/geometry/multi/io/dsv/write.hpp [8:8]
+ boost/geometry/multi/io/wkt/detail/prefix.hpp [8:8]
+ boost/geometry/multi/io/wkt/read.hpp [8:8]
+ boost/geometry/multi/io/wkt/wkt.hpp [8:8]
+ boost/geometry/multi/io/wkt/write.hpp [8:8]
+ boost/geometry/multi/multi.hpp [11:11]
+ boost/geometry/multi/strategies/cartesian/centroid_average.hpp [8:8]
+ boost/geometry/multi/views/detail/range_type.hpp [8:8]
+ boost/geometry/policies/disjoint_interrupt_policy.hpp [15:15]
+ boost/geometry/srs/sphere.hpp [13:13]
+ boost/geometry/srs/spheroid.hpp [13:13]
+ boost/geometry/srs/srs.hpp [13:13]
+ boost/geometry/strategies/agnostic/hull_graham_andrew.hpp [11:11]
+ boost/geometry/strategies/agnostic/point_in_box_by_side.hpp [8:8]
+ boost/geometry/strategies/agnostic/point_in_poly_oriented_winding.hpp [6:6]
+ boost/geometry/strategies/agnostic/point_in_poly_winding.hpp [11:11]
+ boost/geometry/strategies/agnostic/simplify_douglas_peucker.hpp [12:12]
+ boost/geometry/strategies/area.hpp [9:9]
+ boost/geometry/strategies/cartesian/area.hpp [14:14]
+ boost/geometry/strategies/cartesian/area_surveyor.hpp [14:14]
+ boost/geometry/strategies/cartesian/box_in_box.hpp [14:14]
+ boost/geometry/strategies/cartesian/centroid_average.hpp [14:14]
+ boost/geometry/strategies/cartesian/centroid_bashein_detmer.hpp [13:13]
+ boost/geometry/strategies/cartesian/centroid_weighted_length.hpp [12:12]
+ boost/geometry/strategies/cartesian/distance_projected_point.hpp [13:13]
+ boost/geometry/strategies/cartesian/distance_projected_point_ax.hpp [14:14]
+ boost/geometry/strategies/cartesian/distance_pythagoras.hpp [8:8]
+ boost/geometry/strategies/cartesian/distance_pythagoras_box_box.hpp [13:13]
+ boost/geometry/strategies/cartesian/distance_pythagoras_point_box.hpp [13:13]
+ boost/geometry/strategies/cartesian/point_in_box.hpp [13:13]
+ boost/geometry/strategies/cartesian/point_in_poly_crossings_multiply.hpp [8:8]
+ boost/geometry/strategies/cartesian/point_in_poly_franklin.hpp [8:8]
+ boost/geometry/strategies/cartesian/point_in_poly_winding.hpp [11:11]
+ boost/geometry/strategies/cartesian/side_by_triangle.hpp [14:14]
+ boost/geometry/strategies/centroid.hpp [8:8]
+ boost/geometry/strategies/compare.hpp [13:13]
+ boost/geometry/strategies/concepts/area_concept.hpp [9:9]
+ boost/geometry/strategies/concepts/centroid_concept.hpp [8:8]
+ boost/geometry/strategies/concepts/convex_hull_concept.hpp [13:13]
+ boost/geometry/strategies/concepts/distance_concept.hpp [13:13]
+ boost/geometry/strategies/concepts/segment_intersect_concept.hpp [8:8]
+ boost/geometry/strategies/concepts/simplify_concept.hpp [8:8]
+ boost/geometry/strategies/concepts/within_concept.hpp [8:8]
+ boost/geometry/strategies/convex_hull.hpp [8:8]
+ boost/geometry/strategies/covered_by.hpp [13:13]
+ boost/geometry/strategies/default_area_result.hpp [9:9]
+ boost/geometry/strategies/default_comparable_distance_result.hpp [13:13]
+ boost/geometry/strategies/default_distance_result.hpp [13:13]
+ boost/geometry/strategies/default_length_result.hpp [13:13]
+ boost/geometry/strategies/default_strategy.hpp [8:8]
+ boost/geometry/strategies/distance.hpp [13:13]
+ boost/geometry/strategies/distance_result.hpp [15:15]
+ boost/geometry/strategies/side.hpp [8:8]
+ boost/geometry/strategies/side_info.hpp [8:8]
+ boost/geometry/strategies/spherical/point_in_poly_winding.hpp [11:11]
+ boost/geometry/strategies/strategies.hpp [15:15]
+ boost/geometry/strategies/strategy_transform.hpp [13:13]
+ boost/geometry/strategies/tags.hpp [8:8]
+ boost/geometry/strategies/transform.hpp [8:8]
+ boost/geometry/strategies/transform/inverse_transformer.hpp [8:8]
+ boost/geometry/strategies/transform/map_transformer.hpp [8:8]
+ boost/geometry/strategies/transform/matrix_transformers.hpp [13:13]
+ boost/geometry/strategies/within.hpp [13:13]
+ boost/geometry/util/add_const_if_c.hpp [8:8]
+ boost/geometry/util/closure_as_bool.hpp [8:8]
+ boost/geometry/util/combine_if.hpp [11:11]
+ boost/geometry/util/compress_variant.hpp [13:13]
+ boost/geometry/util/coordinate_cast.hpp [8:8]
+ boost/geometry/util/for_each_coordinate.hpp [8:8]
+ boost/geometry/util/math.hpp [14:14]
+ boost/geometry/util/order_as_direction.hpp [8:8]
+ boost/geometry/util/parameter_type_of.hpp [8:8]
+ boost/geometry/util/promote_floating_point.hpp [8:8]
+ boost/geometry/util/rational.hpp [8:8]
+ boost/geometry/util/select_calculation_type.hpp [13:13]
+ boost/geometry/util/select_coordinate_type.hpp [13:13]
+ boost/geometry/util/select_most_precise.hpp [13:13]
+ boost/geometry/util/transform_variant.hpp [13:13]
+ boost/geometry/views/box_view.hpp [8:8]
+ boost/geometry/views/closeable_view.hpp [8:8]
+ boost/geometry/views/detail/normalized_view.hpp [11:11]
+ boost/geometry/views/detail/points_view.hpp [8:8]
+ boost/geometry/views/detail/range_type.hpp [8:8]
+ boost/geometry/views/identity_view.hpp [8:8]
+ boost/geometry/views/reversible_view.hpp [8:8]
+ boost/geometry/views/segment_view.hpp [8:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL f135edc02c00b6582ebdd933caabbc00
+BELONGS ya.make
+ License text:
+ // Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
+ // Copyright 2003 Bruce Barr
+ // Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/depth_first_search.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL f15f8f43993e18e16026611500a6b2f8
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001-2013 Hartmut Kaiser
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/support/assert_msg.hpp [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL f1833f35f2f6f9d7db5a9bac86c50bf4
+BELONGS libs/thread/ya.make ya.make
+ License text:
+ // (C) Copyright 2005-7 Anthony Williams
+ // (C) Copyright 2007 David Deakins
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/win32/thread_primitives.hpp [6:7]
+ libs/thread/src/win32/thread.cpp [4:6]
+ libs/thread/src/win32/tss_pe.cpp [2:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL f19bb76a109bcd2142b125200d42ea4d
+BELONGS ya.make
+ License text:
+ // (C) Copyright John Maddock 2011.
+ // (C) Copyright Cray, Inc. 2013
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/cray.hpp [1:4]
+ boost/config/platform/cray.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL f1ac7bc8521aa0e32b429682f728df8d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/array.hpp at line 6, boost/preprocessor/config/config.hpp at line 6, boost/preprocessor/facilities.hpp at line 6, boost/preprocessor/library.hpp at line 6, boost/preprocessor/seq.hpp at line 6, boost/preprocessor/tuple/rem.hpp at line 6, boost/preprocessor/tuple/to_seq.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/preprocessor/array.hpp [3:6]
+ boost/preprocessor/config/config.hpp [3:6]
+ boost/preprocessor/facilities.hpp [3:6]
+ boost/preprocessor/library.hpp [3:6]
+ boost/preprocessor/seq.hpp [3:6]
+ boost/preprocessor/tuple/rem.hpp [3:6]
+ boost/preprocessor/tuple/to_seq.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL f1d40a1d82c85324753390829c6e1279
+BELONGS ya.make
+ License text:
+ // Copyright 2006 Johan Rade
+ // Copyright 2012 K R Walker
+ // Copyright 2011, 2012 Paul A. Bristow
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/nonfinite_num_facets.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL f1f8468601bd581bae0bf23eba4b070b
+BELONGS ya.make
+ License text:
+ // Copyright (c) Jeremy Siek 2001
+ // Copyright (c) Douglas Gregor 2004
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/biconnected_components.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL f25ed8ad442cba4762a4ba108afb3f71
+BELONGS ya.make
+ License text:
+ // (C) Copyright Ion Gaztanaga 2006-2013
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/intrusive/any_hook.hpp [3:3]
+ boost/intrusive/derivation_value_traits.hpp [3:3]
+ boost/intrusive/detail/assert.hpp [3:3]
+ boost/intrusive/detail/config_begin.hpp [3:3]
+ boost/intrusive/detail/config_end.hpp [3:3]
+ boost/intrusive/detail/list_iterator.hpp [3:4]
+ boost/intrusive/detail/list_node.hpp [3:4]
+ boost/intrusive/detail/rbtree_node.hpp [3:4]
+ boost/intrusive/detail/slist_iterator.hpp [3:4]
+ boost/intrusive/detail/slist_node.hpp [3:4]
+ boost/intrusive/link_mode.hpp [3:3]
+ boost/intrusive/list_hook.hpp [3:4]
+ boost/intrusive/member_value_traits.hpp [3:3]
+ boost/intrusive/set_hook.hpp [3:4]
+ boost/intrusive/slist_hook.hpp [3:4]
+ boost/intrusive/trivial_value_traits.hpp [3:3]
+ boost/intrusive/unordered_set_hook.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL f262c9244ed9c83395a88fc18f2e9a96
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2003-2008 Jan Gaspar
+ // Copyright (c) 2013 Paul A. Bristow // Doxygen comments changed.
+ // Copyright (c) 2013 Antony Polukhin // Move semantics implementation.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/circular_buffer/base.hpp [3:5]
+ boost/circular_buffer/space_optimized.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL f292e7aaed3f315448930281fe405402
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2005, 2014 Eric Niebler
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/container/list/nil.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL f2afe39f6ff7491f267ce9bc28a07daa
+BELONGS ya.make
+ License text:
+ // Copyright 1997-2001 University of Notre Dame.
+ // Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/connected_components.hpp [3:4]
+ boost/graph/copy.hpp [3:4]
+ boost/graph/incremental_components.hpp [3:5]
+ boost/graph/minimum_degree_ordering.hpp [3:4]
+ boost/graph/stanford_graph.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL f2e8fa2c7f3eaab9a7c6f279d4ecb902
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/concurrent_queues/deque_adaptor.hpp at line 8, boost/thread/concurrent_queues/deque_base.hpp at line 8, boost/thread/concurrent_queues/deque_views.hpp at line 8, boost/thread/concurrent_queues/queue_adaptor.hpp at line 8, boost/thread/concurrent_queues/queue_base.hpp at line 8, boost/thread/concurrent_queues/queue_op_status.hpp at line 8, boost/thread/concurrent_queues/queue_views.hpp at line 8, boost/thread/experimental/config/inline_namespace.hpp at line 8, boost/thread/experimental/exception_list.hpp at line 8, boost/thread/experimental/parallel/v1/exception_list.hpp at line 8, boost/thread/experimental/parallel/v1/inline_namespace.hpp at line 8, boost/thread/experimental/parallel/v2/inline_namespace.hpp at line 8, boost/thread/experimental/task_region.hpp at line 8
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/concurrent_queues/deque_adaptor.hpp [6:8]
+ boost/thread/concurrent_queues/deque_base.hpp [6:8]
+ boost/thread/concurrent_queues/deque_views.hpp [6:8]
+ boost/thread/concurrent_queues/queue_adaptor.hpp [6:8]
+ boost/thread/concurrent_queues/queue_base.hpp [6:8]
+ boost/thread/concurrent_queues/queue_op_status.hpp [6:8]
+ boost/thread/concurrent_queues/queue_views.hpp [6:8]
+ boost/thread/experimental/config/inline_namespace.hpp [6:8]
+ boost/thread/experimental/exception_list.hpp [6:8]
+ boost/thread/experimental/parallel/v1/exception_list.hpp [6:8]
+ boost/thread/experimental/parallel/v1/inline_namespace.hpp [6:8]
+ boost/thread/experimental/parallel/v2/inline_namespace.hpp [6:8]
+ boost/thread/experimental/task_region.hpp [6:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL f2ea0ebe0ed5b434328b3bbd19527a30
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/common_edg.hpp [1:7]
+ boost/config/compiler/mpw.hpp [1:4]
+ boost/config/compiler/sgi_mipspro.hpp [1:3]
+ boost/config/detail/select_platform_config.hpp [3:6]
+ boost/config/platform/aix.hpp [1:3]
+ boost/config/stdlib/stlport.hpp [1:5]
+ boost/config/stdlib/vacpp.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL f3008d52e14a91ed6de12783e5d840df
+BELONGS libs/log/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/log/sinks/text_ipc_message_queue_backend.hpp at line 5, boost/log/utility/ipc/reliable_message_queue.hpp at line 5, boost/log/utility/permissions.hpp at line 5, libs/log/src/posix/ipc_reliable_message_queue.cpp at line 5, libs/log/src/windows/ipc_reliable_message_queue.cpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/log/sinks/text_ipc_message_queue_backend.hpp [2:5]
+ boost/log/utility/ipc/reliable_message_queue.hpp [2:5]
+ boost/log/utility/permissions.hpp [2:5]
+ libs/log/src/posix/ipc_reliable_message_queue.cpp [2:5]
+ libs/log/src/windows/ipc_reliable_message_queue.cpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL f30d746d8ccdc43f8396322bb683a3c5
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2006 Xiaogang Zhang
+ // Copyright (c) 2006 John Maddock
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/detail/bessel_i0.hpp [1:4]
+ boost/math/special_functions/detail/bessel_ik.hpp [1:3]
+ boost/math/special_functions/detail/bessel_j0.hpp [1:3]
+ boost/math/special_functions/detail/bessel_j1.hpp [1:3]
+ boost/math/special_functions/detail/bessel_jn.hpp [1:3]
+ boost/math/special_functions/detail/bessel_jy.hpp [1:3]
+ boost/math/special_functions/detail/bessel_k0.hpp [1:4]
+ boost/math/special_functions/detail/bessel_k1.hpp [1:4]
+ boost/math/special_functions/detail/bessel_kn.hpp [1:3]
+ boost/math/special_functions/detail/bessel_y0.hpp [1:3]
+ boost/math/special_functions/detail/bessel_y1.hpp [1:3]
+ boost/math/special_functions/detail/bessel_yn.hpp [1:3]
+ boost/math/special_functions/ellint_1.hpp [1:4]
+ boost/math/special_functions/ellint_2.hpp [1:4]
+ boost/math/special_functions/ellint_3.hpp [1:4]
+ boost/math/special_functions/ellint_d.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL f31debd319fd7ba575571aa043c6bfdd
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
+ // Copyright (c) 2011-2012 Bruno Lalande, Paris, France.
+ // Copyright (c) 2011-2012 Mateusz Loskot, London, UK.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/util/rational.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL f31fa17e583a9909468b7674bc36b032
+BELONGS ya.make
+ License text:
+ Copyright (c) 1998-2003 Joel de Guzman
+ Copyright (c) 2001 Daniel Nuffer
+ Copyright (c) 2002 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/core/composite/alternative.hpp [2:5]
+ boost/spirit/home/classic/core/composite/difference.hpp [2:5]
+ boost/spirit/home/classic/core/composite/exclusive_or.hpp [2:5]
+ boost/spirit/home/classic/core/composite/impl/alternative.ipp [2:5]
+ boost/spirit/home/classic/core/composite/impl/difference.ipp [2:5]
+ boost/spirit/home/classic/core/composite/impl/exclusive_or.ipp [2:5]
+ boost/spirit/home/classic/core/composite/impl/intersection.ipp [2:5]
+ boost/spirit/home/classic/core/composite/impl/kleene_star.ipp [2:5]
+ boost/spirit/home/classic/core/composite/impl/list.ipp [2:5]
+ boost/spirit/home/classic/core/composite/impl/optional.ipp [2:5]
+ boost/spirit/home/classic/core/composite/impl/positive.ipp [2:5]
+ boost/spirit/home/classic/core/composite/impl/sequence.ipp [2:5]
+ boost/spirit/home/classic/core/composite/impl/sequential_and.ipp [2:5]
+ boost/spirit/home/classic/core/composite/impl/sequential_or.ipp [2:5]
+ boost/spirit/home/classic/core/composite/intersection.hpp [2:5]
+ boost/spirit/home/classic/core/composite/kleene_star.hpp [2:5]
+ boost/spirit/home/classic/core/composite/list.hpp [2:5]
+ boost/spirit/home/classic/core/composite/operators.hpp [2:5]
+ boost/spirit/home/classic/core/composite/optional.hpp [2:5]
+ boost/spirit/home/classic/core/composite/positive.hpp [2:5]
+ boost/spirit/home/classic/core/composite/sequence.hpp [2:5]
+ boost/spirit/home/classic/core/composite/sequential_and.hpp [2:5]
+ boost/spirit/home/classic/core/composite/sequential_or.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL f33a64b4b1ee1bea603ff632b1a22ec0
+BELONGS ya.make
+ License text:
+ Copyright (c) Marshall Clow 2014.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/algorithm/algorithm.hpp [2:2]
+ boost/algorithm/cxx14/is_permutation.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL f3740778d3f36d8f0818515a788483db
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/metrowerks.hpp [1:8]
+ boost/config/platform/bsd.hpp [1:5]
+ boost/config/stdlib/msl.hpp [1:4]
+ boost/config/stdlib/sgi.hpp [1:5]
+ boost/config/stdlib/stlport.hpp [1:5]
+ boost/filesystem/detail/macro_value.hpp [3:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL f38404a02e69976b94505df0c691bed0
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/uuid/detail/md5.hpp [8:13]
+
+KEEP COPYRIGHT_SERVICE_LABEL f38ca055640371bbcd1b424bd86c7d04
+BELONGS ya.make
+ License text:
+ // Copyright Thijs van den Berg, 2008.
+ // Copyright John Maddock 2008.
+ // Copyright Paul A. Bristow 2008, 2014.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/distributions/laplace.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL f3a0a38a75a0c0ab13f53c75c602545c
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/parameter.hpp at line 3
+ License text:
+ // Copyright David Abrahams, Daniel Wallin 2005. Use, modification and
+ // distribution is subject to the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/move/algo/detail/heap_sort.hpp [3:5]
- boost/move/algo/detail/is_sorted.hpp [5:7]
- boost/move/algo/detail/pdqsort.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL ef855b94e2b0220e8b57c56cf044988c
-BELONGS ya.make
- License text:
- // Copyright (C) 2009-2013 Tim Blechmann
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/lockfree/spsc_queue.hpp [4:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL f06bc27adb2e965a6733be74af56d166
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2001-2011 Hartmut Kaiser
- Copyright (c) 2011 Thomas Bernard
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/repository/include/qi_keywords.hpp [2:5]
- boost/spirit/repository/include/qi_kwd.hpp [2:5]
- boost/spirit/repository/include/qi_kwd.hpp [21:24]
-
-KEEP COPYRIGHT_SERVICE_LABEL f091662b8bb6cc43b1bae6fb4713d892
-BELONGS ya.make
- License text:
- // Copyright 2000 John Maddock (john@johnmaddock.co.uk)
- // Copyright 2000 Jeremy Siek (jsiek@lsc.nd.edu)
- // Copyright 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/type_traits/conversion_traits.hpp [2:4]
- boost/type_traits/detail/is_function_ptr_helper.hpp [2:3]
- boost/type_traits/function_traits.hpp [2:4]
- boost/type_traits/is_convertible.hpp [2:4]
- boost/type_traits/is_function.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL f0b8ed03b3e6768e72562e606eb71763
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/sort/common/file_vector.hpp at line 9
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/sort/common/file_vector.hpp [7:9]
-
-KEEP COPYRIGHT_SERVICE_LABEL f0f1ab3959ce5327ccd605b1a43fefbf
-BELONGS ya.make
- License text:
- // (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry.hpp [8:8]
- boost/geometry/algorithms/append.hpp [14:14]
- boost/geometry/algorithms/area.hpp [13:13]
- boost/geometry/algorithms/assign.hpp [9:9]
- boost/geometry/algorithms/buffer.hpp [12:12]
- boost/geometry/algorithms/centroid.hpp [15:15]
- boost/geometry/algorithms/clear.hpp [8:8]
- boost/geometry/algorithms/comparable_distance.hpp [13:13]
- boost/geometry/algorithms/convert.hpp [13:13]
- boost/geometry/algorithms/convex_hull.hpp [14:14]
- boost/geometry/algorithms/correct.hpp [13:13]
- boost/geometry/algorithms/covered_by.hpp [13:13]
- boost/geometry/algorithms/crosses.hpp [14:14]
- boost/geometry/algorithms/detail/as_range.hpp [8:8]
- boost/geometry/algorithms/detail/assign_box_corners.hpp [8:8]
- boost/geometry/algorithms/detail/assign_indexed_point.hpp [8:8]
- boost/geometry/algorithms/detail/assign_values.hpp [8:8]
- boost/geometry/algorithms/detail/calculate_null.hpp [8:8]
- boost/geometry/algorithms/detail/calculate_sum.hpp [9:9]
- boost/geometry/algorithms/detail/comparable_distance/implementation.hpp [13:13]
- boost/geometry/algorithms/detail/comparable_distance/interface.hpp [13:13]
- boost/geometry/algorithms/detail/convert_indexed_to_indexed.hpp [8:8]
- boost/geometry/algorithms/detail/convert_point_to_point.hpp [8:8]
- boost/geometry/algorithms/detail/counting.hpp [14:14]
- boost/geometry/algorithms/detail/covered_by/implementation.hpp [13:13]
- boost/geometry/algorithms/detail/covered_by/interface.hpp [13:13]
- boost/geometry/algorithms/detail/disjoint/areal_areal.hpp [15:15]
- boost/geometry/algorithms/detail/disjoint/box_box.hpp [15:15]
- boost/geometry/algorithms/detail/disjoint/implementation.hpp [15:15]
- boost/geometry/algorithms/detail/disjoint/interface.hpp [15:15]
- boost/geometry/algorithms/detail/disjoint/linear_areal.hpp [15:15]
- boost/geometry/algorithms/detail/disjoint/linear_linear.hpp [15:15]
- boost/geometry/algorithms/detail/disjoint/linear_segment_or_box.hpp [15:15]
- boost/geometry/algorithms/detail/disjoint/point_box.hpp [15:15]
- boost/geometry/algorithms/detail/disjoint/point_geometry.hpp [15:15]
- boost/geometry/algorithms/detail/disjoint/point_point.hpp [15:15]
- boost/geometry/algorithms/detail/disjoint/segment_box.hpp [16:16]
- boost/geometry/algorithms/detail/distance/backward_compatibility.hpp [14:14]
- boost/geometry/algorithms/detail/distance/default_strategies.hpp [14:14]
- boost/geometry/algorithms/detail/distance/implementation.hpp [14:14]
- boost/geometry/algorithms/detail/distance/interface.hpp [15:15]
- boost/geometry/algorithms/detail/distance/point_to_geometry.hpp [14:14]
- boost/geometry/algorithms/detail/envelope/implementation.hpp [14:14]
- boost/geometry/algorithms/detail/envelope/interface.hpp [15:15]
- boost/geometry/algorithms/detail/envelope/range.hpp [14:14]
- boost/geometry/algorithms/detail/equals/collect_vectors.hpp [14:14]
- boost/geometry/algorithms/detail/equals/implementation.hpp [15:15]
- boost/geometry/algorithms/detail/equals/interface.hpp [15:15]
- boost/geometry/algorithms/detail/equals/point_point.hpp [15:15]
- boost/geometry/algorithms/detail/expand/implementation.hpp [14:14]
- boost/geometry/algorithms/detail/expand/indexed.hpp [16:16]
- boost/geometry/algorithms/detail/expand/interface.hpp [15:15]
- boost/geometry/algorithms/detail/expand/point.hpp [16:16]
- boost/geometry/algorithms/detail/for_each_range.hpp [8:8]
- boost/geometry/algorithms/detail/intersects/implementation.hpp [14:14]
- boost/geometry/algorithms/detail/intersects/interface.hpp [14:14]
- boost/geometry/algorithms/detail/multi_modify.hpp [12:12]
- boost/geometry/algorithms/detail/multi_modify_with_predicate.hpp [8:8]
- boost/geometry/algorithms/detail/multi_sum.hpp [8:8]
- boost/geometry/algorithms/detail/not.hpp [14:14]
- boost/geometry/algorithms/detail/overlaps/implementation.hpp [13:13]
- boost/geometry/algorithms/detail/overlaps/interface.hpp [13:13]
- boost/geometry/algorithms/detail/point_on_border.hpp [12:12]
- boost/geometry/algorithms/detail/sections/range_by_section.hpp [8:8]
- boost/geometry/algorithms/detail/sections/sectionalize.hpp [15:15]
- boost/geometry/algorithms/detail/touches/implementation.hpp [14:14]
- boost/geometry/algorithms/detail/touches/interface.hpp [14:14]
- boost/geometry/algorithms/detail/within/implementation.hpp [13:13]
- boost/geometry/algorithms/detail/within/interface.hpp [13:13]
- boost/geometry/algorithms/detail/within/point_in_geometry.hpp [14:14]
- boost/geometry/algorithms/detail/within/within_no_turns.hpp [11:11]
- boost/geometry/algorithms/disjoint.hpp [15:15]
- boost/geometry/algorithms/dispatch/disjoint.hpp [15:15]
- boost/geometry/algorithms/dispatch/distance.hpp [14:14]
- boost/geometry/algorithms/dispatch/envelope.hpp [13:13]
- boost/geometry/algorithms/dispatch/expand.hpp [15:15]
- boost/geometry/algorithms/distance.hpp [14:14]
- boost/geometry/algorithms/envelope.hpp [13:13]
- boost/geometry/algorithms/equals.hpp [15:15]
- boost/geometry/algorithms/expand.hpp [14:14]
- boost/geometry/algorithms/for_each.hpp [14:14]
- boost/geometry/algorithms/intersects.hpp [14:14]
- boost/geometry/algorithms/length.hpp [14:14]
- boost/geometry/algorithms/make.hpp [8:8]
- boost/geometry/algorithms/not_implemented.hpp [13:13]
- boost/geometry/algorithms/num_geometries.hpp [13:13]
- boost/geometry/algorithms/num_interior_rings.hpp [14:14]
- boost/geometry/algorithms/num_points.hpp [14:14]
- boost/geometry/algorithms/overlaps.hpp [13:13]
- boost/geometry/algorithms/perimeter.hpp [13:13]
- boost/geometry/algorithms/reverse.hpp [9:9]
- boost/geometry/algorithms/simplify.hpp [8:8]
- boost/geometry/algorithms/touches.hpp [14:14]
- boost/geometry/algorithms/transform.hpp [9:9]
- boost/geometry/algorithms/unique.hpp [9:9]
- boost/geometry/algorithms/within.hpp [13:13]
- boost/geometry/arithmetic/arithmetic.hpp [8:8]
- boost/geometry/arithmetic/dot_product.hpp [8:8]
- boost/geometry/core/access.hpp [8:8]
- boost/geometry/core/closure.hpp [13:13]
- boost/geometry/core/coordinate_dimension.hpp [8:8]
- boost/geometry/core/coordinate_system.hpp [8:8]
- boost/geometry/core/coordinate_type.hpp [8:8]
- boost/geometry/core/cs.hpp [13:13]
- boost/geometry/core/exception.hpp [13:13]
- boost/geometry/core/exterior_ring.hpp [8:8]
- boost/geometry/core/geometry_id.hpp [8:8]
- boost/geometry/core/interior_rings.hpp [8:8]
- boost/geometry/core/interior_type.hpp [8:8]
- boost/geometry/core/is_areal.hpp [8:8]
- boost/geometry/core/mutable_range.hpp [8:8]
- boost/geometry/core/point_order.hpp [13:13]
- boost/geometry/core/point_type.hpp [8:8]
- boost/geometry/core/radian_access.hpp [13:13]
- boost/geometry/core/radius.hpp [13:13]
- boost/geometry/core/reverse_dispatch.hpp [8:8]
- boost/geometry/core/ring_type.hpp [13:13]
- boost/geometry/core/tag.hpp [8:8]
- boost/geometry/core/tag_cast.hpp [8:8]
- boost/geometry/core/tags.hpp [13:13]
- boost/geometry/core/topological_dimension.hpp [8:8]
- boost/geometry/geometries/adapted/boost_tuple.hpp [8:8]
- boost/geometry/geometries/adapted/c_array.hpp [8:8]
- boost/geometry/geometries/adapted/std_pair_as_segment.hpp [8:8]
- boost/geometry/geometries/box.hpp [8:8]
- boost/geometry/geometries/concepts/box_concept.hpp [8:8]
- boost/geometry/geometries/concepts/check.hpp [8:8]
- boost/geometry/geometries/concepts/linestring_concept.hpp [8:8]
- boost/geometry/geometries/concepts/multi_linestring_concept.hpp [8:8]
- boost/geometry/geometries/concepts/multi_point_concept.hpp [8:8]
- boost/geometry/geometries/concepts/multi_polygon_concept.hpp [8:8]
- boost/geometry/geometries/concepts/point_concept.hpp [13:13]
- boost/geometry/geometries/concepts/polygon_concept.hpp [8:8]
- boost/geometry/geometries/concepts/ring_concept.hpp [8:8]
- boost/geometry/geometries/concepts/segment_concept.hpp [8:8]
- boost/geometry/geometries/geometries.hpp [8:8]
- boost/geometry/geometries/linestring.hpp [9:9]
- boost/geometry/geometries/multi_linestring.hpp [9:9]
- boost/geometry/geometries/multi_point.hpp [9:9]
- boost/geometry/geometries/multi_polygon.hpp [9:9]
- boost/geometry/geometries/point.hpp [14:14]
- boost/geometry/geometries/point_xy.hpp [8:8]
- boost/geometry/geometries/polygon.hpp [9:9]
- boost/geometry/geometries/register/box.hpp [8:8]
- boost/geometry/geometries/register/linestring.hpp [8:8]
- boost/geometry/geometries/register/multi_linestring.hpp [8:8]
- boost/geometry/geometries/register/multi_point.hpp [8:8]
- boost/geometry/geometries/register/multi_polygon.hpp [8:8]
- boost/geometry/geometries/register/point.hpp [8:8]
- boost/geometry/geometries/register/ring.hpp [8:8]
- boost/geometry/geometries/register/segment.hpp [8:8]
- boost/geometry/geometries/ring.hpp [9:9]
- boost/geometry/geometries/segment.hpp [8:8]
- boost/geometry/geometries/variant.hpp [8:8]
- boost/geometry/geometry.hpp [14:14]
- boost/geometry/io/dsv/write.hpp [9:9]
- boost/geometry/io/io.hpp [8:8]
- boost/geometry/io/svg/svg_mapper.hpp [12:12]
- boost/geometry/io/svg/write.hpp [12:12]
- boost/geometry/io/svg/write_svg.hpp [12:12]
- boost/geometry/io/svg/write_svg_multi.hpp [11:11]
- boost/geometry/io/wkt/detail/prefix.hpp [8:8]
- boost/geometry/io/wkt/detail/wkt_multi.hpp [8:8]
- boost/geometry/io/wkt/read.hpp [14:14]
- boost/geometry/io/wkt/stream.hpp [8:8]
- boost/geometry/io/wkt/wkt.hpp [8:8]
- boost/geometry/io/wkt/write.hpp [14:14]
- boost/geometry/iterators/base.hpp [8:8]
- boost/geometry/iterators/closing_iterator.hpp [8:8]
- boost/geometry/iterators/ever_circling_iterator.hpp [8:8]
- boost/geometry/multi/algorithms/append.hpp [14:14]
- boost/geometry/multi/algorithms/area.hpp [8:8]
- boost/geometry/multi/algorithms/centroid.hpp [8:8]
- boost/geometry/multi/algorithms/clear.hpp [8:8]
- boost/geometry/multi/algorithms/convert.hpp [8:8]
- boost/geometry/multi/algorithms/correct.hpp [8:8]
- boost/geometry/multi/algorithms/covered_by.hpp [12:12]
- boost/geometry/multi/algorithms/detail/for_each_range.hpp [8:8]
- boost/geometry/multi/algorithms/detail/modify.hpp [8:8]
- boost/geometry/multi/algorithms/detail/modify_with_predicate.hpp [8:8]
- boost/geometry/multi/algorithms/detail/multi_sum.hpp [8:8]
- boost/geometry/multi/algorithms/detail/point_on_border.hpp [11:11]
- boost/geometry/multi/algorithms/detail/sections/range_by_section.hpp [11:11]
- boost/geometry/multi/algorithms/detail/sections/sectionalize.hpp [11:11]
- boost/geometry/multi/algorithms/distance.hpp [13:13]
- boost/geometry/multi/algorithms/envelope.hpp [8:8]
- boost/geometry/multi/algorithms/equals.hpp [8:8]
- boost/geometry/multi/algorithms/for_each.hpp [8:8]
- boost/geometry/multi/algorithms/length.hpp [8:8]
- boost/geometry/multi/algorithms/num_geometries.hpp [8:8]
- boost/geometry/multi/algorithms/num_interior_rings.hpp [13:13]
- boost/geometry/multi/algorithms/num_points.hpp [13:13]
- boost/geometry/multi/algorithms/perimeter.hpp [8:8]
- boost/geometry/multi/algorithms/reverse.hpp [8:8]
- boost/geometry/multi/algorithms/simplify.hpp [8:8]
- boost/geometry/multi/algorithms/transform.hpp [8:8]
- boost/geometry/multi/algorithms/unique.hpp [8:8]
- boost/geometry/multi/algorithms/within.hpp [12:12]
- boost/geometry/multi/core/closure.hpp [8:8]
- boost/geometry/multi/core/geometry_id.hpp [8:8]
- boost/geometry/multi/core/interior_rings.hpp [8:8]
- boost/geometry/multi/core/is_areal.hpp [8:8]
- boost/geometry/multi/core/point_order.hpp [8:8]
- boost/geometry/multi/core/point_type.hpp [8:8]
- boost/geometry/multi/core/ring_type.hpp [11:11]
- boost/geometry/multi/core/tags.hpp [8:8]
- boost/geometry/multi/core/topological_dimension.hpp [8:8]
- boost/geometry/multi/geometries/concepts/check.hpp [8:8]
- boost/geometry/multi/geometries/concepts/multi_linestring_concept.hpp [8:8]
- boost/geometry/multi/geometries/concepts/multi_point_concept.hpp [8:8]
- boost/geometry/multi/geometries/concepts/multi_polygon_concept.hpp [8:8]
- boost/geometry/multi/geometries/multi_geometries.hpp [8:8]
- boost/geometry/multi/geometries/multi_linestring.hpp [8:8]
- boost/geometry/multi/geometries/multi_point.hpp [8:8]
- boost/geometry/multi/geometries/multi_polygon.hpp [8:8]
- boost/geometry/multi/geometries/register/multi_linestring.hpp [8:8]
- boost/geometry/multi/geometries/register/multi_point.hpp [8:8]
- boost/geometry/multi/geometries/register/multi_polygon.hpp [8:8]
- boost/geometry/multi/io/dsv/write.hpp [8:8]
- boost/geometry/multi/io/wkt/detail/prefix.hpp [8:8]
- boost/geometry/multi/io/wkt/read.hpp [8:8]
- boost/geometry/multi/io/wkt/wkt.hpp [8:8]
- boost/geometry/multi/io/wkt/write.hpp [8:8]
- boost/geometry/multi/multi.hpp [11:11]
- boost/geometry/multi/strategies/cartesian/centroid_average.hpp [8:8]
- boost/geometry/multi/views/detail/range_type.hpp [8:8]
- boost/geometry/policies/disjoint_interrupt_policy.hpp [15:15]
- boost/geometry/srs/sphere.hpp [13:13]
- boost/geometry/srs/spheroid.hpp [13:13]
- boost/geometry/srs/srs.hpp [13:13]
- boost/geometry/strategies/agnostic/hull_graham_andrew.hpp [11:11]
- boost/geometry/strategies/agnostic/point_in_box_by_side.hpp [8:8]
- boost/geometry/strategies/agnostic/point_in_poly_oriented_winding.hpp [6:6]
- boost/geometry/strategies/agnostic/point_in_poly_winding.hpp [11:11]
- boost/geometry/strategies/agnostic/simplify_douglas_peucker.hpp [12:12]
- boost/geometry/strategies/area.hpp [9:9]
- boost/geometry/strategies/cartesian/area.hpp [14:14]
- boost/geometry/strategies/cartesian/area_surveyor.hpp [14:14]
- boost/geometry/strategies/cartesian/box_in_box.hpp [14:14]
- boost/geometry/strategies/cartesian/centroid_average.hpp [14:14]
- boost/geometry/strategies/cartesian/centroid_bashein_detmer.hpp [13:13]
- boost/geometry/strategies/cartesian/centroid_weighted_length.hpp [12:12]
- boost/geometry/strategies/cartesian/distance_projected_point.hpp [13:13]
- boost/geometry/strategies/cartesian/distance_projected_point_ax.hpp [14:14]
- boost/geometry/strategies/cartesian/distance_pythagoras.hpp [8:8]
- boost/geometry/strategies/cartesian/distance_pythagoras_box_box.hpp [13:13]
- boost/geometry/strategies/cartesian/distance_pythagoras_point_box.hpp [13:13]
- boost/geometry/strategies/cartesian/point_in_box.hpp [13:13]
- boost/geometry/strategies/cartesian/point_in_poly_crossings_multiply.hpp [8:8]
- boost/geometry/strategies/cartesian/point_in_poly_franklin.hpp [8:8]
- boost/geometry/strategies/cartesian/point_in_poly_winding.hpp [11:11]
- boost/geometry/strategies/cartesian/side_by_triangle.hpp [14:14]
- boost/geometry/strategies/centroid.hpp [8:8]
- boost/geometry/strategies/compare.hpp [13:13]
- boost/geometry/strategies/concepts/area_concept.hpp [9:9]
- boost/geometry/strategies/concepts/centroid_concept.hpp [8:8]
- boost/geometry/strategies/concepts/convex_hull_concept.hpp [13:13]
- boost/geometry/strategies/concepts/distance_concept.hpp [13:13]
- boost/geometry/strategies/concepts/segment_intersect_concept.hpp [8:8]
- boost/geometry/strategies/concepts/simplify_concept.hpp [8:8]
- boost/geometry/strategies/concepts/within_concept.hpp [8:8]
- boost/geometry/strategies/convex_hull.hpp [8:8]
- boost/geometry/strategies/covered_by.hpp [13:13]
- boost/geometry/strategies/default_area_result.hpp [9:9]
- boost/geometry/strategies/default_comparable_distance_result.hpp [13:13]
- boost/geometry/strategies/default_distance_result.hpp [13:13]
- boost/geometry/strategies/default_length_result.hpp [13:13]
- boost/geometry/strategies/default_strategy.hpp [8:8]
- boost/geometry/strategies/distance.hpp [13:13]
- boost/geometry/strategies/distance_result.hpp [15:15]
- boost/geometry/strategies/side.hpp [8:8]
- boost/geometry/strategies/side_info.hpp [8:8]
- boost/geometry/strategies/spherical/point_in_poly_winding.hpp [11:11]
- boost/geometry/strategies/strategies.hpp [15:15]
- boost/geometry/strategies/strategy_transform.hpp [13:13]
- boost/geometry/strategies/tags.hpp [8:8]
- boost/geometry/strategies/transform.hpp [8:8]
- boost/geometry/strategies/transform/inverse_transformer.hpp [8:8]
- boost/geometry/strategies/transform/map_transformer.hpp [8:8]
- boost/geometry/strategies/transform/matrix_transformers.hpp [13:13]
- boost/geometry/strategies/within.hpp [13:13]
- boost/geometry/util/add_const_if_c.hpp [8:8]
- boost/geometry/util/closure_as_bool.hpp [8:8]
- boost/geometry/util/combine_if.hpp [11:11]
- boost/geometry/util/compress_variant.hpp [13:13]
- boost/geometry/util/coordinate_cast.hpp [8:8]
- boost/geometry/util/for_each_coordinate.hpp [8:8]
- boost/geometry/util/math.hpp [14:14]
- boost/geometry/util/order_as_direction.hpp [8:8]
- boost/geometry/util/parameter_type_of.hpp [8:8]
- boost/geometry/util/promote_floating_point.hpp [8:8]
- boost/geometry/util/rational.hpp [8:8]
- boost/geometry/util/select_calculation_type.hpp [13:13]
- boost/geometry/util/select_coordinate_type.hpp [13:13]
- boost/geometry/util/select_most_precise.hpp [13:13]
- boost/geometry/util/transform_variant.hpp [13:13]
- boost/geometry/views/box_view.hpp [8:8]
- boost/geometry/views/closeable_view.hpp [8:8]
- boost/geometry/views/detail/normalized_view.hpp [11:11]
- boost/geometry/views/detail/points_view.hpp [8:8]
- boost/geometry/views/detail/range_type.hpp [8:8]
- boost/geometry/views/identity_view.hpp [8:8]
- boost/geometry/views/reversible_view.hpp [8:8]
- boost/geometry/views/segment_view.hpp [8:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL f135edc02c00b6582ebdd933caabbc00
-BELONGS ya.make
- License text:
- // Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
- // Copyright 2003 Bruce Barr
- // Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/depth_first_search.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL f15f8f43993e18e16026611500a6b2f8
-BELONGS ya.make
- License text:
- // Copyright (c) 2001-2013 Hartmut Kaiser
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/support/assert_msg.hpp [1:1]
-
-KEEP COPYRIGHT_SERVICE_LABEL f1833f35f2f6f9d7db5a9bac86c50bf4
-BELONGS libs/thread/ya.make ya.make
- License text:
- // (C) Copyright 2005-7 Anthony Williams
- // (C) Copyright 2007 David Deakins
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/win32/thread_primitives.hpp [6:7]
- libs/thread/src/win32/thread.cpp [4:6]
- libs/thread/src/win32/tss_pe.cpp [2:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL f19bb76a109bcd2142b125200d42ea4d
-BELONGS ya.make
- License text:
- // (C) Copyright John Maddock 2011.
- // (C) Copyright Cray, Inc. 2013
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/cray.hpp [1:4]
- boost/config/platform/cray.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL f1ac7bc8521aa0e32b429682f728df8d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/array.hpp at line 6, boost/preprocessor/config/config.hpp at line 6, boost/preprocessor/facilities.hpp at line 6, boost/preprocessor/library.hpp at line 6, boost/preprocessor/seq.hpp at line 6, boost/preprocessor/tuple/rem.hpp at line 6, boost/preprocessor/tuple/to_seq.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/preprocessor/array.hpp [3:6]
- boost/preprocessor/config/config.hpp [3:6]
- boost/preprocessor/facilities.hpp [3:6]
- boost/preprocessor/library.hpp [3:6]
- boost/preprocessor/seq.hpp [3:6]
- boost/preprocessor/tuple/rem.hpp [3:6]
- boost/preprocessor/tuple/to_seq.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL f1d40a1d82c85324753390829c6e1279
-BELONGS ya.make
- License text:
- // Copyright 2006 Johan Rade
- // Copyright 2012 K R Walker
- // Copyright 2011, 2012 Paul A. Bristow
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/nonfinite_num_facets.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL f1f8468601bd581bae0bf23eba4b070b
-BELONGS ya.make
- License text:
- // Copyright (c) Jeremy Siek 2001
- // Copyright (c) Douglas Gregor 2004
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/biconnected_components.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL f25ed8ad442cba4762a4ba108afb3f71
-BELONGS ya.make
- License text:
- // (C) Copyright Ion Gaztanaga 2006-2013
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/intrusive/any_hook.hpp [3:3]
- boost/intrusive/derivation_value_traits.hpp [3:3]
- boost/intrusive/detail/assert.hpp [3:3]
- boost/intrusive/detail/config_begin.hpp [3:3]
- boost/intrusive/detail/config_end.hpp [3:3]
- boost/intrusive/detail/list_iterator.hpp [3:4]
- boost/intrusive/detail/list_node.hpp [3:4]
- boost/intrusive/detail/rbtree_node.hpp [3:4]
- boost/intrusive/detail/slist_iterator.hpp [3:4]
- boost/intrusive/detail/slist_node.hpp [3:4]
- boost/intrusive/link_mode.hpp [3:3]
- boost/intrusive/list_hook.hpp [3:4]
- boost/intrusive/member_value_traits.hpp [3:3]
- boost/intrusive/set_hook.hpp [3:4]
- boost/intrusive/slist_hook.hpp [3:4]
- boost/intrusive/trivial_value_traits.hpp [3:3]
- boost/intrusive/unordered_set_hook.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL f262c9244ed9c83395a88fc18f2e9a96
-BELONGS ya.make
- License text:
- // Copyright (c) 2003-2008 Jan Gaspar
- // Copyright (c) 2013 Paul A. Bristow // Doxygen comments changed.
- // Copyright (c) 2013 Antony Polukhin // Move semantics implementation.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/circular_buffer/base.hpp [3:5]
- boost/circular_buffer/space_optimized.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL f292e7aaed3f315448930281fe405402
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2005, 2014 Eric Niebler
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/container/list/nil.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL f2afe39f6ff7491f267ce9bc28a07daa
-BELONGS ya.make
- License text:
- // Copyright 1997-2001 University of Notre Dame.
- // Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/connected_components.hpp [3:4]
- boost/graph/copy.hpp [3:4]
- boost/graph/incremental_components.hpp [3:5]
- boost/graph/minimum_degree_ordering.hpp [3:4]
- boost/graph/stanford_graph.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL f2e8fa2c7f3eaab9a7c6f279d4ecb902
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/concurrent_queues/deque_adaptor.hpp at line 8, boost/thread/concurrent_queues/deque_base.hpp at line 8, boost/thread/concurrent_queues/deque_views.hpp at line 8, boost/thread/concurrent_queues/queue_adaptor.hpp at line 8, boost/thread/concurrent_queues/queue_base.hpp at line 8, boost/thread/concurrent_queues/queue_op_status.hpp at line 8, boost/thread/concurrent_queues/queue_views.hpp at line 8, boost/thread/experimental/config/inline_namespace.hpp at line 8, boost/thread/experimental/exception_list.hpp at line 8, boost/thread/experimental/parallel/v1/exception_list.hpp at line 8, boost/thread/experimental/parallel/v1/inline_namespace.hpp at line 8, boost/thread/experimental/parallel/v2/inline_namespace.hpp at line 8, boost/thread/experimental/task_region.hpp at line 8
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/concurrent_queues/deque_adaptor.hpp [6:8]
- boost/thread/concurrent_queues/deque_base.hpp [6:8]
- boost/thread/concurrent_queues/deque_views.hpp [6:8]
- boost/thread/concurrent_queues/queue_adaptor.hpp [6:8]
- boost/thread/concurrent_queues/queue_base.hpp [6:8]
- boost/thread/concurrent_queues/queue_op_status.hpp [6:8]
- boost/thread/concurrent_queues/queue_views.hpp [6:8]
- boost/thread/experimental/config/inline_namespace.hpp [6:8]
- boost/thread/experimental/exception_list.hpp [6:8]
- boost/thread/experimental/parallel/v1/exception_list.hpp [6:8]
- boost/thread/experimental/parallel/v1/inline_namespace.hpp [6:8]
- boost/thread/experimental/parallel/v2/inline_namespace.hpp [6:8]
- boost/thread/experimental/task_region.hpp [6:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL f2ea0ebe0ed5b434328b3bbd19527a30
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/common_edg.hpp [1:7]
- boost/config/compiler/mpw.hpp [1:4]
- boost/config/compiler/sgi_mipspro.hpp [1:3]
- boost/config/detail/select_platform_config.hpp [3:6]
- boost/config/platform/aix.hpp [1:3]
- boost/config/stdlib/stlport.hpp [1:5]
- boost/config/stdlib/vacpp.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL f3008d52e14a91ed6de12783e5d840df
-BELONGS libs/log/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/log/sinks/text_ipc_message_queue_backend.hpp at line 5, boost/log/utility/ipc/reliable_message_queue.hpp at line 5, boost/log/utility/permissions.hpp at line 5, libs/log/src/posix/ipc_reliable_message_queue.cpp at line 5, libs/log/src/windows/ipc_reliable_message_queue.cpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/log/sinks/text_ipc_message_queue_backend.hpp [2:5]
- boost/log/utility/ipc/reliable_message_queue.hpp [2:5]
- boost/log/utility/permissions.hpp [2:5]
- libs/log/src/posix/ipc_reliable_message_queue.cpp [2:5]
- libs/log/src/windows/ipc_reliable_message_queue.cpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL f30d746d8ccdc43f8396322bb683a3c5
-BELONGS ya.make
- License text:
- // Copyright (c) 2006 Xiaogang Zhang
- // Copyright (c) 2006 John Maddock
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/detail/bessel_i0.hpp [1:4]
- boost/math/special_functions/detail/bessel_ik.hpp [1:3]
- boost/math/special_functions/detail/bessel_j0.hpp [1:3]
- boost/math/special_functions/detail/bessel_j1.hpp [1:3]
- boost/math/special_functions/detail/bessel_jn.hpp [1:3]
- boost/math/special_functions/detail/bessel_jy.hpp [1:3]
- boost/math/special_functions/detail/bessel_k0.hpp [1:4]
- boost/math/special_functions/detail/bessel_k1.hpp [1:4]
- boost/math/special_functions/detail/bessel_kn.hpp [1:3]
- boost/math/special_functions/detail/bessel_y0.hpp [1:3]
- boost/math/special_functions/detail/bessel_y1.hpp [1:3]
- boost/math/special_functions/detail/bessel_yn.hpp [1:3]
- boost/math/special_functions/ellint_1.hpp [1:4]
- boost/math/special_functions/ellint_2.hpp [1:4]
- boost/math/special_functions/ellint_3.hpp [1:4]
- boost/math/special_functions/ellint_d.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL f31debd319fd7ba575571aa043c6bfdd
-BELONGS ya.make
- License text:
- // Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
- // Copyright (c) 2011-2012 Bruno Lalande, Paris, France.
- // Copyright (c) 2011-2012 Mateusz Loskot, London, UK.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/util/rational.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL f31fa17e583a9909468b7674bc36b032
-BELONGS ya.make
- License text:
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2001 Daniel Nuffer
- Copyright (c) 2002 Hartmut Kaiser
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/core/composite/alternative.hpp [2:5]
- boost/spirit/home/classic/core/composite/difference.hpp [2:5]
- boost/spirit/home/classic/core/composite/exclusive_or.hpp [2:5]
- boost/spirit/home/classic/core/composite/impl/alternative.ipp [2:5]
- boost/spirit/home/classic/core/composite/impl/difference.ipp [2:5]
- boost/spirit/home/classic/core/composite/impl/exclusive_or.ipp [2:5]
- boost/spirit/home/classic/core/composite/impl/intersection.ipp [2:5]
- boost/spirit/home/classic/core/composite/impl/kleene_star.ipp [2:5]
- boost/spirit/home/classic/core/composite/impl/list.ipp [2:5]
- boost/spirit/home/classic/core/composite/impl/optional.ipp [2:5]
- boost/spirit/home/classic/core/composite/impl/positive.ipp [2:5]
- boost/spirit/home/classic/core/composite/impl/sequence.ipp [2:5]
- boost/spirit/home/classic/core/composite/impl/sequential_and.ipp [2:5]
- boost/spirit/home/classic/core/composite/impl/sequential_or.ipp [2:5]
- boost/spirit/home/classic/core/composite/intersection.hpp [2:5]
- boost/spirit/home/classic/core/composite/kleene_star.hpp [2:5]
- boost/spirit/home/classic/core/composite/list.hpp [2:5]
- boost/spirit/home/classic/core/composite/operators.hpp [2:5]
- boost/spirit/home/classic/core/composite/optional.hpp [2:5]
- boost/spirit/home/classic/core/composite/positive.hpp [2:5]
- boost/spirit/home/classic/core/composite/sequence.hpp [2:5]
- boost/spirit/home/classic/core/composite/sequential_and.hpp [2:5]
- boost/spirit/home/classic/core/composite/sequential_or.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL f33a64b4b1ee1bea603ff632b1a22ec0
-BELONGS ya.make
- License text:
- Copyright (c) Marshall Clow 2014.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/algorithm/algorithm.hpp [2:2]
- boost/algorithm/cxx14/is_permutation.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL f3740778d3f36d8f0818515a788483db
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/metrowerks.hpp [1:8]
- boost/config/platform/bsd.hpp [1:5]
- boost/config/stdlib/msl.hpp [1:4]
- boost/config/stdlib/sgi.hpp [1:5]
- boost/config/stdlib/stlport.hpp [1:5]
- boost/filesystem/detail/macro_value.hpp [3:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL f38404a02e69976b94505df0c691bed0
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/uuid/detail/md5.hpp [8:13]
-
-KEEP COPYRIGHT_SERVICE_LABEL f38ca055640371bbcd1b424bd86c7d04
-BELONGS ya.make
- License text:
- // Copyright Thijs van den Berg, 2008.
- // Copyright John Maddock 2008.
- // Copyright Paul A. Bristow 2008, 2014.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/distributions/laplace.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL f3a0a38a75a0c0ab13f53c75c602545c
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/parameter.hpp at line 3
- License text:
- // Copyright David Abrahams, Daniel Wallin 2005. Use, modification and
- // distribution is subject to the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/parameter.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL f3bb9876570b28b088005ec3b18e12ba
-BELONGS ya.make
- License text:
- * \author Brian Ravnsgaard Riis
- * \author Kenneth Riddile
- * \date 16.09.2004, updated 04.03.2009
- * \copyright 2004 Brian Ravnsgaard Riis
- * \license Boost Software License 1.0
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/serialization/bitset.hpp [4:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL f3d5b11267b04733324e332e93eecd5d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/function/detail/prologue.hpp at line 5, boost/function/function0.hpp at line 5, boost/function/function1.hpp at line 5, boost/function/function10.hpp at line 5, boost/function/function2.hpp at line 5, boost/function/function3.hpp at line 5, boost/function/function4.hpp at line 5, boost/function/function5.hpp at line 5, boost/function/function6.hpp at line 5, boost/function/function7.hpp at line 5, boost/function/function8.hpp at line 5, boost/function/function9.hpp at line 5
- License text:
- // Copyright Douglas Gregor 2002-2003. Use, modification and
- // distribution is subject to the Boost Software License, Version
- // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/function/detail/prologue.hpp [3:5]
- boost/function/function0.hpp [3:5]
- boost/function/function1.hpp [3:5]
- boost/function/function10.hpp [3:5]
- boost/function/function2.hpp [3:5]
- boost/function/function3.hpp [3:5]
- boost/function/function4.hpp [3:5]
- boost/function/function5.hpp [3:5]
- boost/function/function6.hpp [3:5]
- boost/function/function7.hpp [3:5]
- boost/function/function8.hpp [3:5]
- boost/function/function9.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL f3fec170734df3a8a40a5e82f887b3e2
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/sync/spin/wait.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/interprocess/sync/spin/wait.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL f40f201d75853f8a103026d9bee71250
-BELONGS ya.make
- License text:
- // Copyright (c) 2000-2013
- // Joerg Walter, Mathias Koch, Athanasios Iliopoulos
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/ublas/banded.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL f41f47106ff9d3d86e887a637f9944a7
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/sum_kahan.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/accumulators/statistics/sum_kahan.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL f46c07aeeff7e94e0071372e60321960
-BELONGS ya.make
- License text:
- // Copyright (c) 2008-2009 Frank Mori Hess
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/signals2.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL f47d692aff1724cf5d6cfdcc998f6b84
-BELONGS ya.make
- License text:
- // Copyright Beman Dawes 2002-2009
- // Copyright Jan Langer 2002
- // Copyright Dietmar Kuehl 2001
- // Copyright Vladimir Prus 2002
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/filesystem/operations.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL f4830fdeb395462fff1e25512fbbb137
-BELONGS ya.make
- License text:
- // Copyright (c) 2014-2016 Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/formulas/flattening.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL f4998aec45d0ba8d6662017c1cf0fdee
-BELONGS ya.make
- License text:
- // (C) Copyright John Maddock 2011.
- // (C) Copyright Cray, Inc. 2013
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/cray.hpp [1:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL f4a325f0484c0bb7a3c17c3f81fb8c89
-BELONGS ya.make
- License text:
- // (C) Copyright John Maddock 2015.
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/ulp.hpp [1:3]
- boost/type_traits/integral_constant.hpp [1:3]
- boost/type_traits/is_assignable.hpp [2:4]
- boost/type_traits/is_constructible.hpp [2:4]
- boost/type_traits/is_default_constructible.hpp [2:4]
- boost/type_traits/is_destructible.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL f4e26fc31fa1f72f9590a00e311382b9
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/date_time/local_time/custom_time_zone.hpp at line 6, boost/date_time/local_time/local_date_time.hpp at line 6, boost/date_time/local_time/posix_time_zone.hpp at line 6, boost/date_time/time_zone_base.hpp at line 6, boost/date_time/tz_db_base.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/date_time/local_time/custom_time_zone.hpp [4:8]
- boost/date_time/local_time/local_date_time.hpp [4:8]
- boost/date_time/local_time/posix_time_zone.hpp [4:8]
- boost/date_time/time_zone_base.hpp [4:8]
- boost/date_time/tz_db_base.hpp [4:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL f51d2fa7c29e17335f28cf0a01ef2570
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/process.hpp [1:7]
- boost/process/args.hpp [1:6]
- boost/process/async_pipe.hpp [1:5]
- boost/process/async_system.hpp [1:6]
- boost/process/child.hpp [1:6]
- boost/process/cmd.hpp [1:6]
- boost/process/detail/child_decl.hpp [1:6]
- boost/process/detail/config.hpp [1:6]
- boost/process/detail/execute_impl.hpp [1:6]
- boost/process/detail/handler_base.hpp [1:6]
- boost/process/detail/posix/async_in.hpp [1:5]
- boost/process/detail/posix/async_out.hpp [1:5]
- boost/process/detail/posix/basic_pipe.hpp [1:5]
- boost/process/detail/posix/child_handle.hpp [1:5]
- boost/process/detail/posix/close_in.hpp [1:5]
- boost/process/detail/posix/close_out.hpp [1:5]
- boost/process/detail/posix/executor.hpp [1:5]
- boost/process/detail/posix/fd.hpp [1:5]
- boost/process/detail/posix/file_in.hpp [1:5]
- boost/process/detail/posix/file_out.hpp [1:6]
- boost/process/detail/posix/null_in.hpp [1:5]
- boost/process/detail/posix/null_out.hpp [1:6]
- boost/process/detail/posix/pipe_in.hpp [1:5]
- boost/process/detail/posix/pipe_out.hpp [1:6]
- boost/process/detail/posix/search_path.hpp [1:5]
- boost/process/detail/posix/shell_path.hpp [1:5]
- boost/process/detail/posix/signal.hpp [1:6]
- boost/process/detail/posix/start_dir.hpp [1:5]
- boost/process/detail/posix/terminate.hpp [1:5]
- boost/process/detail/posix/wait_for_exit.hpp [1:5]
- boost/process/detail/posix/wait_group.hpp [1:5]
- boost/process/detail/throw_on_error.hpp [1:6]
- boost/process/detail/windows/async_in.hpp [1:5]
- boost/process/detail/windows/async_out.hpp [1:5]
- boost/process/detail/windows/child_handle.hpp [1:5]
- boost/process/detail/windows/close_in.hpp [1:5]
- boost/process/detail/windows/close_out.hpp [1:5]
- boost/process/detail/windows/executor.hpp [1:6]
- boost/process/detail/windows/file_in.hpp [1:5]
- boost/process/detail/windows/file_out.hpp [1:5]
- boost/process/detail/windows/null_in.hpp [1:5]
- boost/process/detail/windows/null_out.hpp [1:5]
- boost/process/detail/windows/pipe_in.hpp [1:5]
- boost/process/detail/windows/pipe_out.hpp [1:6]
- boost/process/detail/windows/search_path.hpp [1:5]
- boost/process/detail/windows/shell_path.hpp [1:5]
- boost/process/detail/windows/show_window.hpp [1:6]
- boost/process/detail/windows/start_dir.hpp [1:5]
- boost/process/detail/windows/terminate.hpp [1:5]
- boost/process/detail/windows/wait_for_exit.hpp [1:6]
- boost/process/error.hpp [1:6]
- boost/process/exe.hpp [1:6]
- boost/process/pipe.hpp [1:5]
- boost/process/search_path.hpp [1:5]
- boost/process/shell.hpp [1:6]
- boost/process/spawn.hpp [1:6]
- boost/process/start_dir.hpp [1:5]
- boost/process/system.hpp [1:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL f53b7a592ff7a9a840351208940bff87
-BELONGS ya.make
- License text:
- // Copyright (c) 2002-2003 Eric Friedman, Itay Maman
- // Copyright (c) 2012-2016 Antony Polukhin
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/variant/variant.hpp [6:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL f54ebc6944a0fc1c23ca95f5e7187c55
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/random.hpp at line 5, boost/random/additive_combine.hpp at line 5, boost/random/bernoulli_distribution.hpp at line 5, boost/random/cauchy_distribution.hpp at line 5, boost/random/detail/const_mod.hpp at line 5, boost/random/detail/generator_seed_seq.hpp at line 5, boost/random/detail/int_float_pair.hpp at line 5, boost/random/detail/iterator_mixin.hpp at line 5, boost/random/detail/uniform_int_float.hpp at line 5, boost/random/exponential_distribution.hpp at line 5, boost/random/geometric_distribution.hpp at line 5, boost/random/inversive_congruential.hpp at line 5, boost/random/lagged_fibonacci.hpp at line 5, boost/random/linear_congruential.hpp at line 5, boost/random/lognormal_distribution.hpp at line 5, boost/random/mersenne_twister.hpp at line 5, boost/random/normal_distribution.hpp at line 5, boost/random/random_number_generator.hpp at line 5, boost/random/shuffle_order.hpp at line 5, boost/random/shuffle_output.hpp at line 5, boost/random/taus88.hpp at line 5, boost/random/triangle_distribution.hpp at line 5, boost/random/uniform_01.hpp at line 5, boost/random/uniform_int.hpp at line 5, boost/random/uniform_int_distribution.hpp at line 5, boost/random/uniform_on_sphere.hpp at line 5, boost/random/uniform_real.hpp at line 5, boost/random/uniform_real_distribution.hpp at line 5, boost/random/uniform_smallint.hpp at line 5
- License text:
- * Copyright Jens Maurer 2000-2001
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/random.hpp [3:5]
- boost/random/additive_combine.hpp [3:5]
- boost/random/bernoulli_distribution.hpp [3:6]
- boost/random/cauchy_distribution.hpp [3:5]
- boost/random/detail/const_mod.hpp [3:5]
- boost/random/detail/generator_seed_seq.hpp [3:6]
- boost/random/detail/int_float_pair.hpp [3:6]
- boost/random/detail/iterator_mixin.hpp [3:5]
- boost/random/detail/uniform_int_float.hpp [3:6]
- boost/random/exponential_distribution.hpp [3:7]
- boost/random/geometric_distribution.hpp [3:6]
- boost/random/inversive_congruential.hpp [3:5]
- boost/random/lagged_fibonacci.hpp [3:5]
- boost/random/linear_congruential.hpp [3:5]
- boost/random/lognormal_distribution.hpp [3:6]
- boost/random/mersenne_twister.hpp [3:6]
- boost/random/normal_distribution.hpp [3:6]
- boost/random/random_number_generator.hpp [3:5]
- boost/random/shuffle_order.hpp [3:6]
- boost/random/shuffle_output.hpp [3:5]
- boost/random/taus88.hpp [3:6]
- boost/random/triangle_distribution.hpp [3:6]
- boost/random/uniform_01.hpp [3:5]
- boost/random/uniform_int.hpp [3:5]
- boost/random/uniform_int_distribution.hpp [3:6]
- boost/random/uniform_on_sphere.hpp [3:6]
- boost/random/uniform_real.hpp [3:5]
- boost/random/uniform_real_distribution.hpp [3:6]
- boost/random/uniform_smallint.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL f58f9e759307d0cd1407b7ffdc0de5ee
-BELONGS ya.make
- License text:
- // (C) Copyright Jeremy Siek 1999-2001.
- // Copyright (C) 2006 Trustees of Indiana University
- // Authors: Douglas Gregor and Jeremy Siek
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/property_map/parallel/parallel_property_maps.hpp [1:3]
- boost/property_map/property_map.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL f5bb10adeab32a85a8058f4c7409e355
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/stdlib/roguewave.hpp [1:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL f5e28497f7d46b75936cac4feeb981f4
-BELONGS ya.make
- License text:
- // Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
- // Copyright (c) 2014 Oliver Kowalke (oliver dot kowalke at gmail dot com)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/asio/ip/impl/network_v4.hpp [5:6]
- boost/asio/ip/impl/network_v4.ipp [5:6]
- boost/asio/ip/impl/network_v6.ipp [5:6]
- boost/asio/ip/network_v4.hpp [5:6]
- boost/asio/ip/network_v6.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL f6223a18ba26579ca79a1e3b6d297844
-BELONGS ya.make
- License text:
- // Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
- // Copyright (C) 2001, 2002 Peter Dimov
- // Copyright (C) 2002 David Abrahams
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/core/ref.hpp [17:19]
- boost/lambda/casts.hpp [3:4]
- boost/lambda/construct.hpp [3:4]
- boost/lambda/control_structures.hpp [2:2]
- boost/lambda/core.hpp [3:4]
- boost/lambda/detail/actions.hpp [3:3]
- boost/lambda/detail/arity_code.hpp [3:3]
- boost/lambda/detail/bind_functions.hpp [3:3]
- boost/lambda/detail/control_constructs_common.hpp [3:4]
- boost/lambda/detail/function_adaptors.hpp [3:3]
- boost/lambda/detail/lambda_config.hpp [3:3]
- boost/lambda/detail/lambda_functor_base.hpp [3:3]
- boost/lambda/detail/lambda_functors.hpp [3:3]
- boost/lambda/detail/lambda_fwd.hpp [3:3]
- boost/lambda/detail/lambda_traits.hpp [3:3]
- boost/lambda/detail/member_ptr.hpp [3:4]
- boost/lambda/detail/operator_actions.hpp [3:3]
- boost/lambda/detail/operator_lambda_func_base.hpp [3:3]
- boost/lambda/detail/operator_return_type_traits.hpp [3:3]
- boost/lambda/detail/operators.hpp [3:3]
- boost/lambda/detail/ret.hpp [3:3]
- boost/lambda/detail/return_type_traits.hpp [3:3]
- boost/lambda/detail/select_functions.hpp [3:3]
- boost/lambda/exceptions.hpp [3:4]
- boost/lambda/if.hpp [3:5]
- boost/lambda/lambda.hpp [2:2]
- boost/lambda/loops.hpp [3:5]
- boost/lambda/switch.hpp [3:4]
- boost/python/ptr.hpp [11:12]
- boost/tuple/detail/tuple_basic.hpp [3:3]
- boost/tuple/tuple.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL f654a91ae5842daef6292616876810df
-BELONGS ya.make
- License text:
- Copyright (c) 2012 Nathan Ridge
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/adapted/struct/define_struct_inline.hpp [2:2]
- boost/fusion/adapted/struct/detail/define_struct_inline.hpp [2:2]
- boost/fusion/include/define_struct_inline.hpp [2:2]
- boost/fusion/support/as_const.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL f68164228ffa5c0764d510b1da25be15
-BELONGS ya.make
- License text:
- // Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
- // Copyright 2004-2005 Peter Dimov
- // Copyright 2006 Michael van der Westhuizen
- // Copyright 2012 IBM Corp.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp [8:11]
-
-KEEP COPYRIGHT_SERVICE_LABEL f6e13419ff45640c01826efe04ffd1e9
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2010 Joel de Guzman
- Copyright (c) 2004 Daniel Wallin
- Copyright (c) 2010 Thomas Heller
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/phoenix/core/detail/cpp03/function_equal.hpp [21:23]
- boost/phoenix/core/detail/cpp03/preprocessed/function_equal_10.hpp [2:4]
- boost/phoenix/core/detail/cpp03/preprocessed/function_equal_20.hpp [2:4]
- boost/phoenix/core/detail/cpp03/preprocessed/function_equal_30.hpp [2:4]
- boost/phoenix/core/detail/cpp03/preprocessed/function_equal_40.hpp [2:4]
- boost/phoenix/core/detail/cpp03/preprocessed/function_equal_50.hpp [2:4]
- boost/phoenix/scope/detail/cpp03/lambda.hpp [14:17]
- boost/phoenix/scope/detail/cpp03/preprocessed/lambda_10.hpp [2:5]
- boost/phoenix/scope/detail/cpp03/preprocessed/lambda_20.hpp [2:5]
- boost/phoenix/scope/detail/cpp03/preprocessed/lambda_30.hpp [2:5]
- boost/phoenix/scope/detail/cpp03/preprocessed/lambda_40.hpp [2:5]
- boost/phoenix/scope/detail/cpp03/preprocessed/lambda_50.hpp [2:5]
- boost/phoenix/scope/detail/local_variable.hpp [2:4]
- boost/phoenix/scope/dynamic.hpp [2:4]
- boost/phoenix/scope/lambda.hpp [2:5]
- boost/phoenix/scope/let.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL f6e6097f7091e8af239964ccde4737f4
-BELONGS ya.make
- License text:
- // Copyright Aleksey Gurtovoy 2000-2004
- // Copyright John R. Bandela 2000-2002
- // Copyright David Abrahams 2003-2004
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/replace.hpp [5:7]
- boost/mpl/replace_if.hpp [5:7]
- boost/mpl/unique.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL f6f9fad1b42d83826bdb8713dc511159
-BELONGS ya.make
- License text:
- Copyright (c) 2015 Agustin K-ballo Berge
- Copyright (c) 2015 Kohei Takahashi
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/support/detail/index_sequence.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL f7093e82ac001e00e3a31b49c58f9abe
-BELONGS ya.make
- License text:
- // This file was modified by Oracle on 2013, 2014, 2017.
- // Modifications copyright (c) 2013-2017 Oracle and/or its affiliates.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/covered_by.hpp [7:8]
- boost/geometry/algorithms/detail/covered_by/implementation.hpp [7:8]
- boost/geometry/algorithms/detail/covered_by/interface.hpp [7:8]
- boost/geometry/algorithms/detail/overlay/get_turn_info_for_endpoint.hpp [5:6]
- boost/geometry/algorithms/detail/overlay/get_turn_info_helpers.hpp [5:6]
- boost/geometry/algorithms/detail/overlay/get_turn_info_la.hpp [6:7]
- boost/geometry/algorithms/detail/overlay/get_turn_info_ll.hpp [6:7]
- boost/geometry/algorithms/detail/relate/areal_areal.hpp [5:6]
- boost/geometry/algorithms/detail/relate/implementation.hpp [5:6]
- boost/geometry/algorithms/detail/relate/interface.hpp [5:6]
- boost/geometry/algorithms/detail/relate/linear_areal.hpp [5:6]
- boost/geometry/algorithms/detail/relate/linear_linear.hpp [5:6]
- boost/geometry/algorithms/detail/relate/point_geometry.hpp [5:6]
- boost/geometry/algorithms/detail/relate/turns.hpp [5:6]
- boost/geometry/algorithms/detail/relation/interface.hpp [5:6]
- boost/geometry/algorithms/detail/sections/sectionalize.hpp [8:9]
- boost/geometry/algorithms/detail/within/implementation.hpp [7:8]
- boost/geometry/algorithms/detail/within/interface.hpp [7:8]
- boost/geometry/algorithms/within.hpp [7:8]
- boost/geometry/strategies/agnostic/point_in_poly_winding.hpp [6:8]
- boost/geometry/strategies/cartesian/point_in_poly_winding.hpp [6:8]
- boost/geometry/strategies/spherical/point_in_poly_winding.hpp [6:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL f737ed06addb0e3798f6d97ca33809b1
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/implicit_cast.hpp at line 3, boost/iterator/counting_iterator.hpp at line 3, boost/iterator/detail/any_conversion_eater.hpp at line 3, boost/iterator/detail/facade_iterator_category.hpp at line 3, boost/iterator/detail/minimum_category.hpp at line 3, boost/iterator/is_lvalue_iterator.hpp at line 3, boost/iterator/is_readable_iterator.hpp at line 3, boost/iterator/iterator_traits.hpp at line 3, boost/iterator/minimum_category.hpp at line 3, boost/mpl/aux_/has_key_impl.hpp at line 7, boost/mpl/print.hpp at line 7, boost/pending/iterator_adaptors.hpp at line 3, boost/python/converter/context_result_converter.hpp at line 3, boost/python/converter/shared_ptr_to_python.hpp at line 3, boost/python/def_visitor.hpp at line 3, boost/python/detail/copy_ctor_mutates_rhs.hpp at line 3, boost/python/detail/def_helper_fwd.hpp at line 3, boost/python/detail/is_auto_ptr.hpp at line 3, boost/python/detail/is_shared_ptr.hpp at line 3, boost/python/detail/nullary_function_adaptor.hpp at line 3, boost/python/detail/prefix.hpp at line 3, boost/python/detail/value_is_shared_ptr.hpp at line 3, boost/python/detail/value_is_xxx.hpp at line 3, boost/python/object/inheritance_query.hpp at line 3, boost/python/pure_virtual.hpp at line 3, boost/python/raw_function.hpp at line 3
- License text:
- // Copyright David Abrahams 2003.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/implicit_cast.hpp [1:3]
- boost/iterator/counting_iterator.hpp [1:3]
- boost/iterator/detail/any_conversion_eater.hpp [1:3]
- boost/iterator/detail/facade_iterator_category.hpp [1:3]
- boost/iterator/detail/minimum_category.hpp [1:3]
- boost/iterator/is_lvalue_iterator.hpp [1:3]
- boost/iterator/is_readable_iterator.hpp [1:3]
- boost/iterator/iterator_traits.hpp [1:3]
- boost/iterator/minimum_category.hpp [1:3]
- boost/mpl/aux_/has_key_impl.hpp [5:6]
- boost/mpl/print.hpp [5:6]
- boost/pending/iterator_adaptors.hpp [1:3]
- boost/python/converter/context_result_converter.hpp [1:3]
- boost/python/converter/shared_ptr_to_python.hpp [1:4]
- boost/python/def_visitor.hpp [1:3]
- boost/python/detail/copy_ctor_mutates_rhs.hpp [1:3]
- boost/python/detail/def_helper_fwd.hpp [1:3]
- boost/python/detail/is_auto_ptr.hpp [1:3]
- boost/python/detail/is_shared_ptr.hpp [1:4]
- boost/python/detail/nullary_function_adaptor.hpp [1:3]
- boost/python/detail/prefix.hpp [1:3]
- boost/python/detail/value_is_shared_ptr.hpp [1:4]
- boost/python/detail/value_is_xxx.hpp [1:3]
- boost/python/object/inheritance_query.hpp [1:3]
- boost/python/pure_virtual.hpp [1:3]
- boost/python/raw_function.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL f7a61a4b8a24a380f195fe3c28c7fb47
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2010 Joel de Guzman
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/phoenix/bind.hpp [2:2]
- boost/phoenix/config.hpp [2:5]
- boost/phoenix/core.hpp [2:2]
- boost/phoenix/core/argument.hpp [2:4]
- boost/phoenix/core/argument.hpp [86:87]
- boost/phoenix/core/argument.hpp [117:118]
- boost/phoenix/core/detail/argument.hpp [2:4]
- boost/phoenix/core/detail/cpp03/function_equal.hpp [21:23]
- boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_10.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_20.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_30.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_40.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_50.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_10.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_20.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_30.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_40.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_50.hpp [2:3]
- boost/phoenix/core/detail/cpp03/preprocessed/function_equal_10.hpp [2:4]
- boost/phoenix/core/detail/cpp03/preprocessed/function_equal_20.hpp [2:4]
- boost/phoenix/core/detail/cpp03/preprocessed/function_equal_30.hpp [2:4]
- boost/phoenix/core/detail/cpp03/preprocessed/function_equal_40.hpp [2:4]
- boost/phoenix/core/detail/cpp03/preprocessed/function_equal_50.hpp [2:4]
- boost/phoenix/core/reference.hpp [2:3]
- boost/phoenix/core/value.hpp [2:3]
- boost/phoenix/function.hpp [2:2]
- boost/phoenix/function/function.hpp [2:4]
- boost/phoenix/object.hpp [2:3]
- boost/phoenix/object/const_cast.hpp [2:3]
- boost/phoenix/object/construct.hpp [2:3]
- boost/phoenix/object/delete.hpp [2:3]
- boost/phoenix/object/detail/target.hpp [2:3]
- boost/phoenix/object/dynamic_cast.hpp [2:3]
- boost/phoenix/object/new.hpp [2:3]
- boost/phoenix/object/reinterpret_cast.hpp [2:3]
- boost/phoenix/object/static_cast.hpp [2:3]
- boost/phoenix/operator/detail/cpp03/mem_fun_ptr_gen.hpp [15:16]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_10.hpp [2:3]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_20.hpp [2:3]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_30.hpp [2:3]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_40.hpp [2:3]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_50.hpp [2:3]
- boost/phoenix/operator/if_else.hpp [2:3]
- boost/phoenix/operator/io.hpp [2:3]
- boost/phoenix/scope/detail/cpp03/lambda.hpp [14:17]
- boost/phoenix/scope/detail/cpp03/preprocessed/lambda_10.hpp [2:5]
- boost/phoenix/scope/detail/cpp03/preprocessed/lambda_20.hpp [2:5]
- boost/phoenix/scope/detail/cpp03/preprocessed/lambda_30.hpp [2:5]
- boost/phoenix/scope/detail/cpp03/preprocessed/lambda_40.hpp [2:5]
- boost/phoenix/scope/detail/cpp03/preprocessed/lambda_50.hpp [2:5]
- boost/phoenix/scope/dynamic.hpp [2:4]
- boost/phoenix/scope/lambda.hpp [2:5]
- boost/phoenix/scope/let.hpp [2:5]
- boost/phoenix/statement.hpp [2:2]
- boost/phoenix/statement/do_while.hpp [2:3]
- boost/phoenix/statement/for.hpp [2:3]
- boost/phoenix/statement/if.hpp [2:3]
- boost/phoenix/statement/sequence.hpp [2:4]
- boost/phoenix/statement/switch.hpp [2:3]
- boost/phoenix/statement/while.hpp [2:3]
- boost/spirit/home/support/detail/make_vector.hpp [2:2]
- boost/spirit/include/karma_as.hpp [2:5]
- boost/spirit/include/karma_duplicate.hpp [2:4]
- boost/spirit/include/karma_grammar.hpp [2:4]
- boost/spirit/include/karma_rule.hpp [2:4]
- boost/spirit/include/lex_char_token_def.hpp [2:4]
- boost/spirit/include/lex_generate_static_lexertl.hpp [2:4]
- boost/spirit/include/lex_plain_token.hpp [2:4]
- boost/spirit/include/lex_primitives.hpp [2:4]
- boost/spirit/include/lex_tokenize_and_parse_attr.hpp [2:4]
- boost/spirit/include/qi_as.hpp [2:5]
- boost/spirit/include/qi_matches.hpp [2:4]
- boost/spirit/include/qi_no_skip.hpp [2:4]
- boost/spirit/include/support_adapt_adt_attributes.hpp [2:4]
- boost/spirit/include/support_attributes_fwd.hpp [2:4]
- boost/spirit/include/support_container.hpp [2:4]
- boost/spirit/include/support_extended_variant.hpp [2:4]
- boost/spirit/include/support_line_pos_iterator.hpp [2:5]
- boost/spirit/include/support_ostream_iterator.hpp [2:4]
- boost/spirit/include/support_utree.hpp [2:4]
- boost/spirit/repository/home/support/subrule_context.hpp [2:3]
- boost/spirit/repository/include/qi_nonterminal.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL f7b79570ab951aee1d4600e3cfada7f6
-BELONGS ya.make
- License text:
- * Copyright Nick Thompson, 2017
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/interpolators/barycentric_rational.hpp [2:4]
- boost/math/interpolators/cubic_b_spline.hpp [1:3]
- boost/math/interpolators/detail/barycentric_rational_detail.hpp [2:4]
- boost/math/interpolators/detail/cubic_b_spline_detail.hpp [1:3]
- boost/math/quadrature/detail/exp_sinh_detail.hpp [1:3]
- boost/math/quadrature/detail/sinh_sinh_detail.hpp [1:3]
- boost/math/quadrature/detail/tanh_sinh_constants.hpp [1:3]
- boost/math/quadrature/detail/tanh_sinh_detail.hpp [1:3]
- boost/math/quadrature/exp_sinh.hpp [1:3]
- boost/math/quadrature/sinh_sinh.hpp [1:3]
- boost/math/quadrature/tanh_sinh.hpp [1:3]
- boost/math/quadrature/trapezoidal.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL f8523423e94e4738f1a90221affa3c6d
-BELONGS ya.make
- License text:
- Copyright 2009-2011 Karsten Ahnert
- Copyright 2009-2011 Mario Mulansky
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/external/compute/compute_algebra.hpp [9:10]
- boost/numeric/odeint/external/compute/compute_operations.hpp [9:10]
- boost/numeric/odeint/external/compute/compute_resize.hpp [9:10]
- boost/numeric/odeint/external/vexcl/vexcl_copy.hpp [9:10]
- boost/numeric/odeint/external/vexcl/vexcl_same_instance.hpp [9:10]
- boost/numeric/odeint/iterator/integrate/detail/integrate_adaptive.hpp [9:10]
- boost/numeric/odeint/iterator/integrate/integrate.hpp [9:10]
- boost/numeric/odeint/iterator/integrate/integrate_adaptive.hpp [9:10]
- boost/numeric/odeint/iterator/integrate/integrate_const.hpp [10:11]
- boost/numeric/odeint/iterator/integrate/integrate_n_steps.hpp [9:10]
- boost/numeric/odeint/iterator/integrate/integrate_times.hpp [9:10]
- boost/numeric/odeint/iterator/integrate/null_observer.hpp [9:10]
- boost/numeric/odeint/iterator/integrate/observer_collection.hpp [9:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL f8951bf69b11cc80f1addaa803fe6615
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/qi/numeric/detail/numeric_utils.hpp [2:6]
- boost/spirit/home/x3/support/numeric_utils/detail/extract_int.hpp [2:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL f89bd28fdc7f4fd3d37706b722eab1dc
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/ptr_container/detail/move.hpp at line 3, boost/ptr_container/detail/static_move_ptr.hpp at line 3
- License text:
- // (C) Copyright Daniel Wallin 2004.
- // Distributed under the Boost Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/ptr_container/detail/move.hpp [1:3]
- boost/ptr_container/detail/static_move_ptr.hpp [1:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL f8bb10155b581266fee4384d92ffbd4b
-BELONGS ya.make
- License text:
- // (C) Copyright 2009-2012 Vicente J. Botet Escriba
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/lock_traits.hpp [4:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL f8c5c0c04a0be7e5cac5b8b3649d747d
-BELONGS ya.make
- License text:
- Copyright (c) 2003 Joel de Guzman
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/core/safe_bool.hpp [2:3]
- boost/spirit/home/classic/utility/grammar_def.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL f8de78cca950a4830aa0a2a534686dc6
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/weighted_sum_kahan.hpp at line 6
- License text:
- // Copyright 2011 Simon West. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/accumulators/statistics/weighted_sum_kahan.hpp [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL f936e9b0685f44284dbdcdc5d4021540
-BELONGS ya.make
- License text:
- // Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
- // Copyright (c) 2010 Beman Dawes
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/system/detail/local_free_on_destruction.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL f937ec1156626f6e299bd234778b3fd8
-BELONGS ya.make
- License text:
- * Copyright 2017 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/detail/winapi/access_rights.hpp [2:2]
- boost/detail/winapi/apc.hpp [2:2]
- boost/detail/winapi/basic_types.hpp [2:2]
- boost/detail/winapi/bcrypt.hpp [2:2]
- boost/detail/winapi/character_code_conversion.hpp [2:2]
- boost/detail/winapi/condition_variable.hpp [2:2]
- boost/detail/winapi/config.hpp [2:2]
- boost/detail/winapi/critical_section.hpp [2:2]
- boost/detail/winapi/crypt.hpp [2:2]
- boost/detail/winapi/dbghelp.hpp [2:2]
- boost/detail/winapi/debugapi.hpp [2:2]
- boost/detail/winapi/detail/deprecated_namespace.hpp [2:2]
- boost/detail/winapi/directory_management.hpp [2:2]
- boost/detail/winapi/dll.hpp [2:2]
- boost/detail/winapi/environment.hpp [2:2]
- boost/detail/winapi/error_codes.hpp [2:2]
- boost/detail/winapi/error_handling.hpp [2:2]
- boost/detail/winapi/event.hpp [2:2]
- boost/detail/winapi/file_management.hpp [2:2]
- boost/detail/winapi/file_mapping.hpp [2:2]
- boost/detail/winapi/get_current_process.hpp [2:2]
- boost/detail/winapi/get_current_process_id.hpp [2:2]
- boost/detail/winapi/get_current_thread.hpp [2:2]
- boost/detail/winapi/get_current_thread_id.hpp [2:2]
- boost/detail/winapi/get_last_error.hpp [2:2]
- boost/detail/winapi/get_process_times.hpp [2:2]
- boost/detail/winapi/get_system_directory.hpp [2:2]
- boost/detail/winapi/get_thread_times.hpp [2:2]
- boost/detail/winapi/handle_info.hpp [2:2]
- boost/detail/winapi/handles.hpp [2:2]
- boost/detail/winapi/heap_memory.hpp [2:2]
- boost/detail/winapi/init_once.hpp [2:2]
- boost/detail/winapi/jobs.hpp [2:2]
- boost/detail/winapi/limits.hpp [2:2]
- boost/detail/winapi/local_memory.hpp [2:2]
- boost/detail/winapi/memory.hpp [2:2]
- boost/detail/winapi/mutex.hpp [2:2]
- boost/detail/winapi/overlapped.hpp [2:2]
- boost/detail/winapi/page_protection_flags.hpp [2:2]
- boost/detail/winapi/pipes.hpp [2:2]
- boost/detail/winapi/priority_class.hpp [2:2]
- boost/detail/winapi/process.hpp [2:2]
- boost/detail/winapi/security.hpp [2:2]
- boost/detail/winapi/semaphore.hpp [2:2]
- boost/detail/winapi/shell.hpp [2:2]
- boost/detail/winapi/show_window.hpp [2:2]
- boost/detail/winapi/srw_lock.hpp [2:2]
- boost/detail/winapi/stack_backtrace.hpp [2:2]
- boost/detail/winapi/synchronization.hpp [2:2]
- boost/detail/winapi/system.hpp [2:2]
- boost/detail/winapi/thread.hpp [2:2]
- boost/detail/winapi/thread_pool.hpp [2:2]
- boost/detail/winapi/time.hpp [2:2]
- boost/detail/winapi/timers.hpp [2:2]
- boost/detail/winapi/tls.hpp [2:2]
- boost/detail/winapi/wait.hpp [2:2]
- boost/detail/winapi/waitable_timer.hpp [2:2]
- boost/winapi/stack_backtrace.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL f94cb856c9e5e6fd69d03e77e07fdd8a
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iterator/function_input_iterator.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/iterator/function_input_iterator.hpp [1:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL f9749f4e13e703364be469134935d614
-BELONGS ya.make
- License text:
- // Copyright (C) 1999-2001 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
- // Gary Powell (gwpowell@hotmail.com)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/lambda/bind.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL f9a846689286adc00201dd976f81ff02
-BELONGS ya.make
- License text:
- Copyright (c) 2006-2007 Tobias Schwinger
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/functional.hpp [2:2]
- boost/fusion/functional/adapter.hpp [2:2]
- boost/fusion/functional/adapter/detail/access.hpp [2:2]
- boost/fusion/functional/adapter/fused.hpp [2:2]
- boost/fusion/functional/adapter/fused_function_object.hpp [2:2]
- boost/fusion/functional/adapter/fused_procedure.hpp [2:2]
- boost/fusion/functional/adapter/limits.hpp [2:2]
- boost/fusion/functional/adapter/unfused.hpp [2:2]
- boost/fusion/functional/adapter/unfused_typed.hpp [2:2]
- boost/fusion/functional/invocation.hpp [2:2]
- boost/fusion/functional/invocation/detail/that_ptr.hpp [2:2]
- boost/fusion/functional/invocation/invoke.hpp [2:3]
- boost/fusion/functional/invocation/invoke_function_object.hpp [2:3]
- boost/fusion/functional/invocation/invoke_procedure.hpp [2:3]
- boost/fusion/functional/invocation/limits.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL f9e3fe08b0242a1ca57099bf39432eed
-BELONGS ya.make
- License text:
- * Copyright (c) 1998-2009
- * John Maddock
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/regex/v4/match_results.hpp [3:4]
- boost/regex/v4/regex_format.hpp [3:4]
- boost/regex/v4/regex_replace.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL f9f12f7fd5f198cd90b9b717616fc6d6
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/classic/core.hpp [2:8]
- boost/spirit/home/classic/core/composite/alternative.hpp [2:5]
- boost/spirit/home/classic/core/composite/difference.hpp [2:5]
- boost/spirit/home/classic/core/composite/directives.hpp [2:4]
- boost/spirit/home/classic/core/composite/epsilon.hpp [2:4]
- boost/spirit/home/classic/core/composite/exclusive_or.hpp [2:5]
- boost/spirit/home/classic/core/composite/impl/alternative.ipp [2:5]
- boost/spirit/home/classic/core/composite/impl/difference.ipp [2:5]
- boost/spirit/home/classic/core/composite/impl/directives.ipp [2:6]
- boost/spirit/home/classic/core/composite/impl/exclusive_or.ipp [2:5]
- boost/spirit/home/classic/core/composite/impl/intersection.ipp [2:5]
- boost/spirit/home/classic/core/composite/impl/kleene_star.ipp [2:5]
- boost/spirit/home/classic/core/composite/impl/list.ipp [2:5]
- boost/spirit/home/classic/core/composite/impl/optional.ipp [2:5]
- boost/spirit/home/classic/core/composite/impl/positive.ipp [2:5]
- boost/spirit/home/classic/core/composite/impl/sequence.ipp [2:5]
- boost/spirit/home/classic/core/composite/impl/sequential_and.ipp [2:5]
- boost/spirit/home/classic/core/composite/impl/sequential_or.ipp [2:5]
- boost/spirit/home/classic/core/composite/intersection.hpp [2:5]
- boost/spirit/home/classic/core/composite/kleene_star.hpp [2:5]
- boost/spirit/home/classic/core/composite/list.hpp [2:5]
- boost/spirit/home/classic/core/composite/no_actions.hpp [2:4]
- boost/spirit/home/classic/core/composite/operators.hpp [2:5]
- boost/spirit/home/classic/core/composite/optional.hpp [2:5]
- boost/spirit/home/classic/core/composite/positive.hpp [2:5]
- boost/spirit/home/classic/core/composite/sequence.hpp [2:5]
- boost/spirit/home/classic/core/composite/sequential_and.hpp [2:5]
- boost/spirit/home/classic/core/composite/sequential_or.hpp [2:5]
- boost/spirit/home/classic/core/primitives/impl/numerics.ipp [2:4]
- boost/spirit/home/classic/core/primitives/impl/primitives.ipp [2:4]
- boost/spirit/home/classic/core/primitives/numerics.hpp [2:4]
- boost/spirit/home/classic/core/primitives/primitives.hpp [2:4]
- boost/spirit/home/classic/meta.hpp [2:4]
- boost/spirit/home/classic/utility.hpp [2:9]
- boost/spirit/home/classic/utility/distinct.hpp [2:4]
- boost/spirit/home/classic/utility/loops.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL f9f21cf5cc873fe5cc18d20988035289
-BELONGS ya.make
- License text:
- // Copyright (c) 2010 Artyom Beilis (Tonkikh)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/locale/hold_ptr.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL fa9a32968bea29cee8bae21e3db66f48
-BELONGS ya.make
- License text:
- Copyright (c) 2014-2015 Kohei Takahashi
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/container/generation/make_set.hpp [2:2]
- boost/fusion/container/generation/make_vector.hpp [2:2]
- boost/fusion/container/list/detail/list_to_cons.hpp [2:2]
- boost/fusion/container/list/list.hpp [2:2]
- boost/fusion/container/set/detail/as_set.hpp [2:2]
- boost/fusion/container/set/set.hpp [2:2]
- boost/fusion/container/vector/detail/as_vector.hpp [2:2]
- boost/fusion/container/vector/detail/config.hpp [2:2]
- boost/fusion/container/vector/vector.hpp [2:2]
- boost/fusion/container/vector/vector_fwd.hpp [2:2]
- boost/fusion/support/detail/is_same_size.hpp [2:2]
- boost/fusion/tuple/tuple.hpp [2:2]
- boost/fusion/tuple/tuple_fwd.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL fa9c01424457f45357412ffbaa103b87
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/archive/xml_archive_exception.hpp at line 14
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/archive/xml_archive_exception.hpp [12:14]
-
-KEEP COPYRIGHT_SERVICE_LABEL fac2acbeb5b5ff0e22a994c8b805305c
-BELONGS ya.make
- License text:
- // Copyright (c) 2009 John Maddock
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/detail/iconv.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL fae7f98b6a716f76e1a04de0592d1b47
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/concurrent_queues/sync_bounded_queue.hpp at line 8, boost/thread/concurrent_queues/sync_deque.hpp at line 8, boost/thread/concurrent_queues/sync_queue.hpp at line 8, boost/thread/sync_bounded_queue.hpp at line 8, boost/thread/sync_queue.hpp at line 8
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/thread/concurrent_queues/sync_bounded_queue.hpp [6:8]
- boost/thread/concurrent_queues/sync_deque.hpp [6:8]
- boost/thread/concurrent_queues/sync_queue.hpp [6:8]
- boost/thread/sync_bounded_queue.hpp [6:8]
- boost/thread/sync_queue.hpp [6:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL faef8c3be0a1612051d45827262d7799
-BELONGS ya.make
- License text:
- // (C) Copyright John Maddock 2008.
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/no_tr1/cmath.hpp [1:3]
- boost/math/special_functions/acosh.hpp [3:6]
- boost/math/special_functions/asinh.hpp [3:6]
- boost/math/special_functions/atanh.hpp [3:6]
- boost/math/special_functions/next.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL fb0c843abf394387c8df0eca1810bb44
-BELONGS ya.make
- License text:
- // (C) Copyright John Maddock 2005.
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/no_tr1/complex.hpp [1:3]
- boost/config/no_tr1/functional.hpp [1:3]
- boost/config/no_tr1/memory.hpp [1:3]
- boost/config/no_tr1/utility.hpp [1:3]
- boost/math/complex.hpp [1:3]
- boost/math/complex/acos.hpp [1:3]
- boost/math/complex/acosh.hpp [1:3]
- boost/math/complex/asin.hpp [1:3]
- boost/math/complex/asinh.hpp [1:3]
- boost/math/complex/atan.hpp [1:3]
- boost/math/complex/atanh.hpp [1:3]
- boost/math/complex/details.hpp [1:3]
- boost/math/complex/fabs.hpp [1:3]
- boost/type_traits/extent.hpp [2:4]
- boost/type_traits/has_virtual_destructor.hpp [2:4]
- boost/type_traits/is_member_object_pointer.hpp [2:4]
- boost/type_traits/is_signed.hpp [2:4]
- boost/type_traits/is_unsigned.hpp [2:4]
- boost/type_traits/rank.hpp [2:4]
- boost/type_traits/remove_all_extents.hpp [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL fb19913edf2b294113c26397c854cb87
-BELONGS ya.make
- License text:
- Copyright (c) 2007-2010: Joachim Faulhaber
- Copyright (c) 1999-2006: Cortex Software GmbH, Kantstrasse 57, Berlin
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/icl/detail/map_algo.hpp [2:2]
- boost/icl/detail/set_algo.hpp [2:2]
- boost/icl/detail/std_set.hpp [2:2]
- boost/icl/interval_set.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL fb315c16d1fe23c296a6568a9dea2777
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/scope_exit.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/scope_exit.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL fb36b29faf58b57823a283e76940e43d
-BELONGS ya.make
- License text:
- * Copyright (c) 2012 Hartmut Kaiser
- * Copyright (c) 2014 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/atomic/detail/config.hpp [6:7]
- boost/atomic/detail/link.hpp [6:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL fb56a746a3cac247b27d3293104f2b01
-BELONGS ya.make
- License text:
- // Copyright (c) 2009, 2015 Peter Dimov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/bind.hpp [13:13]
-
-KEEP COPYRIGHT_SERVICE_LABEL fba684797df4f48e06fa78e2e64b11b4
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/category.hpp at line 5, boost/range/distance.hpp at line 5, boost/range/functions.hpp at line 5, boost/range/pointer.hpp at line 5
- License text:
- // Copyright Thorsten Ottosen 2003-2006. Use, modification and
- // distribution is subject to the Boost Software License, Version
- // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/range/category.hpp [3:5]
- boost/range/distance.hpp [3:5]
- boost/range/functions.hpp [3:5]
- boost/range/pointer.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL fc2a9fc530edf9f16f6eaac267113149
-BELONGS libs/iostreams/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iostreams/device/mapped_file.hpp at line 5, libs/iostreams/src/mapped_file.cpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/iostreams/device/mapped_file.hpp [1:5]
- libs/iostreams/src/mapped_file.cpp [1:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL fc552a5881ad9783ae6c8d511dd6c13a
-BELONGS ya.make
- License text:
- Copyright (c) 2001-2011 Joel de Guzman
- http://spirit.sourceforge.net/
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/support/common_terminals.hpp [2:3]
- boost/spirit/home/support/detail/make_cons.hpp [2:3]
- boost/spirit/home/support/make_component.hpp [2:3]
- boost/spirit/home/support/meta_compiler.hpp [2:3]
- boost/spirit/home/support/modify.hpp [2:3]
- boost/spirit/include/support_info.hpp [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL fccaaf374e92bea92a91f3c3f74bfb06
-BELONGS ya.make
- License text:
- // (C) Copyright Kevlin Henney and Dave Abrahams 1999.
- // (C) Copyright Boris Rasin 2014.
- // Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/polymorphic_cast.hpp [3:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL fcd2c8a16a246d6c41d59f33179993f4
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/gcc.hpp [1:9]
- boost/config/compiler/metrowerks.hpp [1:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL fce4baaad3a86f36324f1a7918e15e7d
-BELONGS ya.make
- License text:
- // Copyright (c) 2007-2016 Barend Gehrels, Amsterdam, the Netherlands.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/geometry/algorithms/detail/overlay/cluster_info.hpp [3:3]
- boost/geometry/strategies/geographic/distance.hpp [3:3]
- boost/geometry/strategies/geographic/distance_andoyer.hpp [3:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL fceca3d59218ef75da3cdc95a9a29691
-BELONGS ya.make
- License text:
- // Copyright (c) 2009 Ben Hanson (http://www.benhanson.net/)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/spirit/home/support/detail/lexer/generate_re2c.hpp [2:2]
- boost/spirit/home/support/detail/lexer/internals.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL fcfedf71451d1e8697ddad44e1797902
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/function/detail/function_iterate.hpp at line 5, boost/function/detail/maybe_include.hpp at line 5
- License text:
- // Copyright Douglas Gregor 2003. Use, modification and
- // distribution is subject to the Boost Software License, Version
- // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/function/detail/function_iterate.hpp [3:5]
- boost/function/detail/maybe_include.hpp [3:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL fcff9832642f1fc146a81e1a466219bc
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/config/compiler/borland.hpp [1:5]
- boost/config/compiler/codegear.hpp [1:5]
- boost/config/compiler/common_edg.hpp [1:7]
- boost/config/compiler/hp_acc.hpp [1:8]
- boost/config/compiler/kai.hpp [1:5]
- boost/config/compiler/mpw.hpp [1:4]
- boost/config/compiler/visualc.hpp [1:8]
-
-KEEP COPYRIGHT_SERVICE_LABEL fd55be335299a3413c6cfe0983242e0e
-BELONGS ya.make
- License text:
- // Copyright Aleksey Gurtovoy 2000-2008
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/apply_wrap.hpp [9:9]
- boost/mpl/aux_/preprocessed/bcc/apply_wrap.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc/quote.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc/vector_c.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/apply_wrap.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/quote.hpp [2:2]
- boost/mpl/aux_/preprocessed/bcc_pre590/vector_c.hpp [2:2]
- boost/mpl/aux_/push_back_impl.hpp [5:5]
- boost/mpl/aux_/push_front_impl.hpp [5:5]
- boost/mpl/aux_/sequence_wrapper.hpp [8:8]
- boost/mpl/aux_/traits_lambda_spec.hpp [5:5]
- boost/mpl/for_each.hpp [5:5]
- boost/mpl/min_max.hpp [5:5]
- boost/mpl/quote.hpp [9:9]
- boost/mpl/vector/aux_/front.hpp [5:5]
- boost/mpl/vector_c.hpp [5:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL fd6578dd286e9257f73d8cc59e377eb7
-BELONGS ya.make
- License text:
- // Copyright (C) 2005-2009 Jongsoo Park <jongsoo.park -at- gmail.com>
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/dominator_tree.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL fd82c8c920d2d55a272cb4473c4c8e01
-BELONGS ya.make
- License text:
- // Copyright 2014 Peter Dimov
- // Copyright 2014 Andrey Semashev
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/core/demangle.hpp [6:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL fd84e5521c389f735db1160443952431
-BELONGS ya.make
- License text:
- Copyright (c) 2013 Jamboree
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/fusion/algorithm/transformation/flatten.hpp [2:2]
- boost/fusion/view/flatten_view.hpp [2:2]
- boost/fusion/view/flatten_view/flatten_view.hpp [2:2]
- boost/fusion/view/flatten_view/flatten_view_iterator.hpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL fda42ec6f8d7fcf06eb7924a33f02d3c
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/cuthill_mckee_ordering.hpp [2:5]
- boost/graph/detail/sparse_ordering.hpp [2:5]
- boost/graph/king_ordering.hpp [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL fdaa6e15501e6c6b69d62a55e2cc2e3c
-BELONGS ya.make
- License text:
- // Copyright Aleksey Gurtovoy 2003-2007
- // Copyright David Abrahams 2003-2004
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/set/aux_/begin_end_impl.hpp [5:6]
- boost/mpl/set/aux_/erase_key_impl.hpp [5:6]
- boost/mpl/set/aux_/insert_impl.hpp [5:6]
- boost/mpl/set/aux_/item.hpp [5:6]
- boost/mpl/set/aux_/iterator.hpp [5:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL fdb89500e86761890c1be8217c26304c
-BELONGS ya.make
- License text:
- Copyright 2012 Karsten Ahnert
- Copyright 2012 Mario Mulansky
- Copyright 2012 Denis Demidov
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/odeint/external/vexcl/vexcl_resize.hpp [9:11]
- boost/numeric/odeint/external/viennacl/viennacl_operations.hpp [9:11]
- boost/numeric/odeint/external/viennacl/viennacl_resize.hpp [9:11]
- boost/numeric/odeint/integrate/detail/integrate_const.hpp [9:11]
- boost/numeric/odeint/integrate/detail/integrate_n_steps.hpp [9:11]
- boost/numeric/odeint/integrate/detail/integrate_times.hpp [9:11]
- boost/numeric/odeint/util/bind.hpp [9:10]
- boost/numeric/odeint/util/detail/less_with_sign.hpp [9:10]
- boost/numeric/odeint/util/same_instance.hpp [9:10]
-
-KEEP COPYRIGHT_SERVICE_LABEL fdc872a02f9fa212032838b53061b71b
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/process.hpp [1:7]
- boost/process/args.hpp [1:6]
- boost/process/async_pipe.hpp [1:5]
- boost/process/async_system.hpp [1:6]
- boost/process/child.hpp [1:6]
- boost/process/cmd.hpp [1:6]
- boost/process/detail/child_decl.hpp [1:6]
- boost/process/detail/config.hpp [1:6]
- boost/process/detail/execute_impl.hpp [1:6]
- boost/process/detail/handler_base.hpp [1:6]
- boost/process/detail/posix/async_in.hpp [1:5]
- boost/process/detail/posix/async_out.hpp [1:5]
- boost/process/detail/posix/basic_pipe.hpp [1:5]
- boost/process/detail/posix/child_handle.hpp [1:5]
- boost/process/detail/posix/close_in.hpp [1:5]
- boost/process/detail/posix/close_out.hpp [1:5]
- boost/process/detail/posix/executor.hpp [1:5]
- boost/process/detail/posix/fd.hpp [1:5]
- boost/process/detail/posix/file_in.hpp [1:5]
- boost/process/detail/posix/file_out.hpp [1:6]
- boost/process/detail/posix/null_in.hpp [1:5]
- boost/process/detail/posix/null_out.hpp [1:6]
- boost/process/detail/posix/pipe_in.hpp [1:5]
- boost/process/detail/posix/pipe_out.hpp [1:6]
- boost/process/detail/posix/search_path.hpp [1:5]
- boost/process/detail/posix/shell_path.hpp [1:5]
- boost/process/detail/posix/signal.hpp [1:6]
- boost/process/detail/posix/start_dir.hpp [1:5]
- boost/process/detail/posix/terminate.hpp [1:5]
- boost/process/detail/posix/wait_for_exit.hpp [1:5]
- boost/process/detail/posix/wait_group.hpp [1:5]
- boost/process/detail/throw_on_error.hpp [1:6]
- boost/process/detail/windows/async_in.hpp [1:5]
- boost/process/detail/windows/async_out.hpp [1:5]
- boost/process/detail/windows/child_handle.hpp [1:5]
- boost/process/detail/windows/close_in.hpp [1:5]
- boost/process/detail/windows/close_out.hpp [1:5]
- boost/process/detail/windows/executor.hpp [1:6]
- boost/process/detail/windows/file_in.hpp [1:5]
- boost/process/detail/windows/file_out.hpp [1:5]
- boost/process/detail/windows/null_in.hpp [1:5]
- boost/process/detail/windows/null_out.hpp [1:5]
- boost/process/detail/windows/pipe_in.hpp [1:5]
- boost/process/detail/windows/pipe_out.hpp [1:6]
- boost/process/detail/windows/search_path.hpp [1:5]
- boost/process/detail/windows/shell_path.hpp [1:5]
- boost/process/detail/windows/show_window.hpp [1:6]
- boost/process/detail/windows/start_dir.hpp [1:5]
- boost/process/detail/windows/terminate.hpp [1:5]
- boost/process/detail/windows/wait_for_exit.hpp [1:6]
- boost/process/error.hpp [1:6]
- boost/process/exe.hpp [1:6]
- boost/process/pipe.hpp [1:5]
- boost/process/search_path.hpp [1:5]
- boost/process/shell.hpp [1:6]
- boost/process/spawn.hpp [1:6]
- boost/process/start_dir.hpp [1:5]
- boost/process/system.hpp [1:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL fdfa61b5c29bc0c08a5bd50229bcc525
-BELONGS ya.make
- License text:
- // Copyright (c) 2007, 2008 Peter Dimov
- // Copyright (c) 2008 Michael Marcin
- // Copyright (c) 2009 Frank Mori Hess
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/signals2/deconstruct.hpp [16:18]
-
-KEEP COPYRIGHT_SERVICE_LABEL fe409df214ddedae04ea04fe60c33c48
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/process.hpp [1:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL fea2e5ed18f9a052be7348a249bd333a
-BELONGS ya.make
- License text:
- // Copyright Kevlin Henney, 2000-2005.
- // Copyright Alexander Nasonov, 2006-2010.
- // Copyright Antony Polukhin, 2011-2016.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/lexical_cast/detail/converter_lexical_streams.hpp [1:3]
- boost/lexical_cast/detail/converter_numeric.hpp [1:3]
- boost/lexical_cast/try_lexical_convert.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL febe05bc8ec6f388612334cf870b660c
-BELONGS ya.make
- License text:
- * Copyright (c) 1998-2005
- * John Maddock
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/regex/v4/regex_workaround.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL ff121923a9c0b6799597434faafbacb1
-BELONGS ya.make
- License text:
- // Copyright (C) 2006 Tiago de Paula Peixoto <tiago@forked.de>
- // Copyright (C) 2004 The Trustees of Indiana University.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/graph/graphml.hpp [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL ff357b8617179cd55397e194bbf9afa9
-BELONGS ya.make
- License text:
- // Copyright Sergey Krivonos 2017
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/mpl/get_tag.hpp [5:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL ff57d62db593b2575f4cc431df71e1d1
-BELONGS ya.make
- License text:
- // Copyright (C) 2001 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/lambda/detail/is_instance_of.hpp [3:3]
- boost/tuple/tuple_comparison.hpp [3:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL ff6cfc5093caf6fa33f3e0e3622368ef
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/contract.hpp at line 7, boost/contract/assert.hpp at line 7, boost/contract/base_types.hpp at line 7, boost/contract/call_if.hpp at line 7, boost/contract/check.hpp at line 7, boost/contract/constructor.hpp at line 7, boost/contract/core/access.hpp at line 7, boost/contract/core/check_macro.hpp at line 7, boost/contract/core/config.hpp at line 7, boost/contract/core/constructor_precondition.hpp at line 7, boost/contract/core/exception.hpp at line 7, boost/contract/core/specify.hpp at line 7, boost/contract/core/virtual.hpp at line 7, boost/contract/destructor.hpp at line 7, boost/contract/detail/assert.hpp at line 7, boost/contract/detail/auto_ptr.hpp at line 7, boost/contract/detail/check.hpp at line 7, boost/contract/detail/checking.hpp at line 7, boost/contract/detail/condition/cond_base.hpp at line 7, boost/contract/detail/condition/cond_inv.hpp at line 7, boost/contract/detail/condition/cond_post.hpp at line 7, boost/contract/detail/condition/cond_subcontracting.hpp at line 7, boost/contract/detail/config.hpp at line 7, boost/contract/detail/debug.hpp at line 7, boost/contract/detail/decl.hpp at line 7, boost/contract/detail/declspec.hpp at line 7, boost/contract/detail/inlined.hpp at line 7, boost/contract/detail/inlined/core/exception.hpp at line 7, boost/contract/detail/inlined/detail/checking.hpp at line 7, boost/contract/detail/inlined/old.hpp at line 7, boost/contract/detail/name.hpp at line 7, boost/contract/detail/none.hpp at line 7, boost/contract/detail/noop.hpp at line 7, boost/contract/detail/operation/constructor.hpp at line 7, boost/contract/detail/operation/destructor.hpp at line 7, boost/contract/detail/operation/function.hpp at line 7, boost/contract/detail/operation/public_function.hpp at line 7, boost/contract/detail/operation/static_public_function.hpp at line 7, boost/contract/detail/operator_safe_bool.hpp at line 7, boost/contract/detail/preprocessor/keyword/private.hpp at line 7, boost/contract/detail/preprocessor/keyword/protected.hpp at line 7, boost/contract/detail/preprocessor/keyword/public.hpp at line 7, boost/contract/detail/preprocessor/keyword/utility/is.hpp at line 7, boost/contract/detail/preprocessor/keyword/virtual.hpp at line 7, boost/contract/detail/static_local_var.hpp at line 7, boost/contract/detail/tvariadic.hpp at line 7, boost/contract/detail/type_traits/member_function_types.hpp at line 7, boost/contract/detail/type_traits/mirror.hpp at line 7, boost/contract/detail/type_traits/optional.hpp at line 7, boost/contract/function.hpp at line 7, boost/contract/old.hpp at line 7, boost/contract/override.hpp at line 7, boost/contract/public_function.hpp at line 7, boost/contract_macro.hpp at line 7
- License text:
- // Copyright (C) 2008-2018 Lorenzo Caminiti
- // Distributed under the Boost Software License, Version 1.0 (see accompanying
- // file LICENSE_1_0.txt or a copy at http://www.boost.org/LICENSE_1_0.txt).
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/contract.hpp [5:7]
- boost/contract/assert.hpp [5:7]
- boost/contract/base_types.hpp [5:7]
- boost/contract/call_if.hpp [5:7]
- boost/contract/check.hpp [5:7]
- boost/contract/constructor.hpp [5:7]
- boost/contract/core/access.hpp [5:7]
- boost/contract/core/check_macro.hpp [5:7]
- boost/contract/core/config.hpp [5:7]
- boost/contract/core/constructor_precondition.hpp [5:7]
- boost/contract/core/exception.hpp [5:7]
- boost/contract/core/specify.hpp [5:7]
- boost/contract/core/virtual.hpp [5:7]
- boost/contract/destructor.hpp [5:7]
- boost/contract/detail/assert.hpp [5:7]
- boost/contract/detail/auto_ptr.hpp [5:7]
- boost/contract/detail/check.hpp [5:7]
- boost/contract/detail/checking.hpp [5:7]
- boost/contract/detail/condition/cond_base.hpp [5:7]
- boost/contract/detail/condition/cond_inv.hpp [5:7]
- boost/contract/detail/condition/cond_post.hpp [5:7]
- boost/contract/detail/condition/cond_subcontracting.hpp [5:7]
- boost/contract/detail/config.hpp [5:7]
- boost/contract/detail/debug.hpp [5:7]
- boost/contract/detail/decl.hpp [5:7]
- boost/contract/detail/declspec.hpp [5:7]
- boost/contract/detail/inlined.hpp [5:7]
- boost/contract/detail/inlined/core/exception.hpp [5:7]
- boost/contract/detail/inlined/detail/checking.hpp [5:7]
- boost/contract/detail/inlined/old.hpp [5:7]
- boost/contract/detail/name.hpp [5:7]
- boost/contract/detail/none.hpp [5:7]
- boost/contract/detail/noop.hpp [5:7]
- boost/contract/detail/operation/constructor.hpp [5:7]
- boost/contract/detail/operation/destructor.hpp [5:7]
- boost/contract/detail/operation/function.hpp [5:7]
- boost/contract/detail/operation/public_function.hpp [5:7]
- boost/contract/detail/operation/static_public_function.hpp [5:7]
- boost/contract/detail/operator_safe_bool.hpp [5:7]
- boost/contract/detail/preprocessor/keyword/private.hpp [5:7]
- boost/contract/detail/preprocessor/keyword/protected.hpp [5:7]
- boost/contract/detail/preprocessor/keyword/public.hpp [5:7]
- boost/contract/detail/preprocessor/keyword/utility/is.hpp [5:7]
- boost/contract/detail/preprocessor/keyword/virtual.hpp [5:7]
- boost/contract/detail/static_local_var.hpp [5:7]
- boost/contract/detail/tvariadic.hpp [5:7]
- boost/contract/detail/type_traits/member_function_types.hpp [5:7]
- boost/contract/detail/type_traits/mirror.hpp [5:7]
- boost/contract/detail/type_traits/optional.hpp [5:7]
- boost/contract/function.hpp [5:7]
- boost/contract/old.hpp [5:7]
- boost/contract/override.hpp [5:7]
- boost/contract/public_function.hpp [5:7]
- boost/contract_macro.hpp [5:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL ffb359d2e5030fecfe6707e998ce6117
-BELONGS ya.make
- License text:
- // Copyright (c) 2006 Xiaogang Zhang, 2015 John Maddock
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/math/special_functions/ellint_rc.hpp [1:3]
- boost/math/special_functions/ellint_rd.hpp [1:3]
- boost/math/special_functions/ellint_rf.hpp [1:3]
- boost/math/special_functions/ellint_rj.hpp [1:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL ffda52db2697e08e0d2b391573cd37f6
-BELONGS ya.make
- License text:
- * Copyright (c) 2009, Gunter Winkler
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- boost/numeric/ublas/operation/c_array.hpp [8:8]
- boost/numeric/ublas/operations.hpp [8:8]
- boost/numeric/ublas/traits/c_array.hpp [8:8]
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/parameter.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL f3bb9876570b28b088005ec3b18e12ba
+BELONGS ya.make
+ License text:
+ * \author Brian Ravnsgaard Riis
+ * \author Kenneth Riddile
+ * \date 16.09.2004, updated 04.03.2009
+ * \copyright 2004 Brian Ravnsgaard Riis
+ * \license Boost Software License 1.0
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/serialization/bitset.hpp [4:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL f3d5b11267b04733324e332e93eecd5d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/function/detail/prologue.hpp at line 5, boost/function/function0.hpp at line 5, boost/function/function1.hpp at line 5, boost/function/function10.hpp at line 5, boost/function/function2.hpp at line 5, boost/function/function3.hpp at line 5, boost/function/function4.hpp at line 5, boost/function/function5.hpp at line 5, boost/function/function6.hpp at line 5, boost/function/function7.hpp at line 5, boost/function/function8.hpp at line 5, boost/function/function9.hpp at line 5
+ License text:
+ // Copyright Douglas Gregor 2002-2003. Use, modification and
+ // distribution is subject to the Boost Software License, Version
+ // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/function/detail/prologue.hpp [3:5]
+ boost/function/function0.hpp [3:5]
+ boost/function/function1.hpp [3:5]
+ boost/function/function10.hpp [3:5]
+ boost/function/function2.hpp [3:5]
+ boost/function/function3.hpp [3:5]
+ boost/function/function4.hpp [3:5]
+ boost/function/function5.hpp [3:5]
+ boost/function/function6.hpp [3:5]
+ boost/function/function7.hpp [3:5]
+ boost/function/function8.hpp [3:5]
+ boost/function/function9.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL f3fec170734df3a8a40a5e82f887b3e2
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/sync/spin/wait.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/interprocess/sync/spin/wait.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL f40f201d75853f8a103026d9bee71250
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2000-2013
+ // Joerg Walter, Mathias Koch, Athanasios Iliopoulos
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/ublas/banded.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL f41f47106ff9d3d86e887a637f9944a7
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/sum_kahan.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/accumulators/statistics/sum_kahan.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL f46c07aeeff7e94e0071372e60321960
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2008-2009 Frank Mori Hess
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/signals2.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL f47d692aff1724cf5d6cfdcc998f6b84
+BELONGS ya.make
+ License text:
+ // Copyright Beman Dawes 2002-2009
+ // Copyright Jan Langer 2002
+ // Copyright Dietmar Kuehl 2001
+ // Copyright Vladimir Prus 2002
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/filesystem/operations.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL f4830fdeb395462fff1e25512fbbb137
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2014-2016 Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/formulas/flattening.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL f4998aec45d0ba8d6662017c1cf0fdee
+BELONGS ya.make
+ License text:
+ // (C) Copyright John Maddock 2011.
+ // (C) Copyright Cray, Inc. 2013
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/cray.hpp [1:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL f4a325f0484c0bb7a3c17c3f81fb8c89
+BELONGS ya.make
+ License text:
+ // (C) Copyright John Maddock 2015.
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/ulp.hpp [1:3]
+ boost/type_traits/integral_constant.hpp [1:3]
+ boost/type_traits/is_assignable.hpp [2:4]
+ boost/type_traits/is_constructible.hpp [2:4]
+ boost/type_traits/is_default_constructible.hpp [2:4]
+ boost/type_traits/is_destructible.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL f4e26fc31fa1f72f9590a00e311382b9
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/date_time/local_time/custom_time_zone.hpp at line 6, boost/date_time/local_time/local_date_time.hpp at line 6, boost/date_time/local_time/posix_time_zone.hpp at line 6, boost/date_time/time_zone_base.hpp at line 6, boost/date_time/tz_db_base.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/date_time/local_time/custom_time_zone.hpp [4:8]
+ boost/date_time/local_time/local_date_time.hpp [4:8]
+ boost/date_time/local_time/posix_time_zone.hpp [4:8]
+ boost/date_time/time_zone_base.hpp [4:8]
+ boost/date_time/tz_db_base.hpp [4:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL f51d2fa7c29e17335f28cf0a01ef2570
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/process.hpp [1:7]
+ boost/process/args.hpp [1:6]
+ boost/process/async_pipe.hpp [1:5]
+ boost/process/async_system.hpp [1:6]
+ boost/process/child.hpp [1:6]
+ boost/process/cmd.hpp [1:6]
+ boost/process/detail/child_decl.hpp [1:6]
+ boost/process/detail/config.hpp [1:6]
+ boost/process/detail/execute_impl.hpp [1:6]
+ boost/process/detail/handler_base.hpp [1:6]
+ boost/process/detail/posix/async_in.hpp [1:5]
+ boost/process/detail/posix/async_out.hpp [1:5]
+ boost/process/detail/posix/basic_pipe.hpp [1:5]
+ boost/process/detail/posix/child_handle.hpp [1:5]
+ boost/process/detail/posix/close_in.hpp [1:5]
+ boost/process/detail/posix/close_out.hpp [1:5]
+ boost/process/detail/posix/executor.hpp [1:5]
+ boost/process/detail/posix/fd.hpp [1:5]
+ boost/process/detail/posix/file_in.hpp [1:5]
+ boost/process/detail/posix/file_out.hpp [1:6]
+ boost/process/detail/posix/null_in.hpp [1:5]
+ boost/process/detail/posix/null_out.hpp [1:6]
+ boost/process/detail/posix/pipe_in.hpp [1:5]
+ boost/process/detail/posix/pipe_out.hpp [1:6]
+ boost/process/detail/posix/search_path.hpp [1:5]
+ boost/process/detail/posix/shell_path.hpp [1:5]
+ boost/process/detail/posix/signal.hpp [1:6]
+ boost/process/detail/posix/start_dir.hpp [1:5]
+ boost/process/detail/posix/terminate.hpp [1:5]
+ boost/process/detail/posix/wait_for_exit.hpp [1:5]
+ boost/process/detail/posix/wait_group.hpp [1:5]
+ boost/process/detail/throw_on_error.hpp [1:6]
+ boost/process/detail/windows/async_in.hpp [1:5]
+ boost/process/detail/windows/async_out.hpp [1:5]
+ boost/process/detail/windows/child_handle.hpp [1:5]
+ boost/process/detail/windows/close_in.hpp [1:5]
+ boost/process/detail/windows/close_out.hpp [1:5]
+ boost/process/detail/windows/executor.hpp [1:6]
+ boost/process/detail/windows/file_in.hpp [1:5]
+ boost/process/detail/windows/file_out.hpp [1:5]
+ boost/process/detail/windows/null_in.hpp [1:5]
+ boost/process/detail/windows/null_out.hpp [1:5]
+ boost/process/detail/windows/pipe_in.hpp [1:5]
+ boost/process/detail/windows/pipe_out.hpp [1:6]
+ boost/process/detail/windows/search_path.hpp [1:5]
+ boost/process/detail/windows/shell_path.hpp [1:5]
+ boost/process/detail/windows/show_window.hpp [1:6]
+ boost/process/detail/windows/start_dir.hpp [1:5]
+ boost/process/detail/windows/terminate.hpp [1:5]
+ boost/process/detail/windows/wait_for_exit.hpp [1:6]
+ boost/process/error.hpp [1:6]
+ boost/process/exe.hpp [1:6]
+ boost/process/pipe.hpp [1:5]
+ boost/process/search_path.hpp [1:5]
+ boost/process/shell.hpp [1:6]
+ boost/process/spawn.hpp [1:6]
+ boost/process/start_dir.hpp [1:5]
+ boost/process/system.hpp [1:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL f53b7a592ff7a9a840351208940bff87
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2002-2003 Eric Friedman, Itay Maman
+ // Copyright (c) 2012-2016 Antony Polukhin
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/variant/variant.hpp [6:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL f54ebc6944a0fc1c23ca95f5e7187c55
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/random.hpp at line 5, boost/random/additive_combine.hpp at line 5, boost/random/bernoulli_distribution.hpp at line 5, boost/random/cauchy_distribution.hpp at line 5, boost/random/detail/const_mod.hpp at line 5, boost/random/detail/generator_seed_seq.hpp at line 5, boost/random/detail/int_float_pair.hpp at line 5, boost/random/detail/iterator_mixin.hpp at line 5, boost/random/detail/uniform_int_float.hpp at line 5, boost/random/exponential_distribution.hpp at line 5, boost/random/geometric_distribution.hpp at line 5, boost/random/inversive_congruential.hpp at line 5, boost/random/lagged_fibonacci.hpp at line 5, boost/random/linear_congruential.hpp at line 5, boost/random/lognormal_distribution.hpp at line 5, boost/random/mersenne_twister.hpp at line 5, boost/random/normal_distribution.hpp at line 5, boost/random/random_number_generator.hpp at line 5, boost/random/shuffle_order.hpp at line 5, boost/random/shuffle_output.hpp at line 5, boost/random/taus88.hpp at line 5, boost/random/triangle_distribution.hpp at line 5, boost/random/uniform_01.hpp at line 5, boost/random/uniform_int.hpp at line 5, boost/random/uniform_int_distribution.hpp at line 5, boost/random/uniform_on_sphere.hpp at line 5, boost/random/uniform_real.hpp at line 5, boost/random/uniform_real_distribution.hpp at line 5, boost/random/uniform_smallint.hpp at line 5
+ License text:
+ * Copyright Jens Maurer 2000-2001
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/random.hpp [3:5]
+ boost/random/additive_combine.hpp [3:5]
+ boost/random/bernoulli_distribution.hpp [3:6]
+ boost/random/cauchy_distribution.hpp [3:5]
+ boost/random/detail/const_mod.hpp [3:5]
+ boost/random/detail/generator_seed_seq.hpp [3:6]
+ boost/random/detail/int_float_pair.hpp [3:6]
+ boost/random/detail/iterator_mixin.hpp [3:5]
+ boost/random/detail/uniform_int_float.hpp [3:6]
+ boost/random/exponential_distribution.hpp [3:7]
+ boost/random/geometric_distribution.hpp [3:6]
+ boost/random/inversive_congruential.hpp [3:5]
+ boost/random/lagged_fibonacci.hpp [3:5]
+ boost/random/linear_congruential.hpp [3:5]
+ boost/random/lognormal_distribution.hpp [3:6]
+ boost/random/mersenne_twister.hpp [3:6]
+ boost/random/normal_distribution.hpp [3:6]
+ boost/random/random_number_generator.hpp [3:5]
+ boost/random/shuffle_order.hpp [3:6]
+ boost/random/shuffle_output.hpp [3:5]
+ boost/random/taus88.hpp [3:6]
+ boost/random/triangle_distribution.hpp [3:6]
+ boost/random/uniform_01.hpp [3:5]
+ boost/random/uniform_int.hpp [3:5]
+ boost/random/uniform_int_distribution.hpp [3:6]
+ boost/random/uniform_on_sphere.hpp [3:6]
+ boost/random/uniform_real.hpp [3:5]
+ boost/random/uniform_real_distribution.hpp [3:6]
+ boost/random/uniform_smallint.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL f58f9e759307d0cd1407b7ffdc0de5ee
+BELONGS ya.make
+ License text:
+ // (C) Copyright Jeremy Siek 1999-2001.
+ // Copyright (C) 2006 Trustees of Indiana University
+ // Authors: Douglas Gregor and Jeremy Siek
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/property_map/parallel/parallel_property_maps.hpp [1:3]
+ boost/property_map/property_map.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL f5bb10adeab32a85a8058f4c7409e355
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/stdlib/roguewave.hpp [1:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL f5e28497f7d46b75936cac4feeb981f4
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+ // Copyright (c) 2014 Oliver Kowalke (oliver dot kowalke at gmail dot com)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/asio/ip/impl/network_v4.hpp [5:6]
+ boost/asio/ip/impl/network_v4.ipp [5:6]
+ boost/asio/ip/impl/network_v6.ipp [5:6]
+ boost/asio/ip/network_v4.hpp [5:6]
+ boost/asio/ip/network_v6.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL f6223a18ba26579ca79a1e3b6d297844
+BELONGS ya.make
+ License text:
+ // Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
+ // Copyright (C) 2001, 2002 Peter Dimov
+ // Copyright (C) 2002 David Abrahams
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/core/ref.hpp [17:19]
+ boost/lambda/casts.hpp [3:4]
+ boost/lambda/construct.hpp [3:4]
+ boost/lambda/control_structures.hpp [2:2]
+ boost/lambda/core.hpp [3:4]
+ boost/lambda/detail/actions.hpp [3:3]
+ boost/lambda/detail/arity_code.hpp [3:3]
+ boost/lambda/detail/bind_functions.hpp [3:3]
+ boost/lambda/detail/control_constructs_common.hpp [3:4]
+ boost/lambda/detail/function_adaptors.hpp [3:3]
+ boost/lambda/detail/lambda_config.hpp [3:3]
+ boost/lambda/detail/lambda_functor_base.hpp [3:3]
+ boost/lambda/detail/lambda_functors.hpp [3:3]
+ boost/lambda/detail/lambda_fwd.hpp [3:3]
+ boost/lambda/detail/lambda_traits.hpp [3:3]
+ boost/lambda/detail/member_ptr.hpp [3:4]
+ boost/lambda/detail/operator_actions.hpp [3:3]
+ boost/lambda/detail/operator_lambda_func_base.hpp [3:3]
+ boost/lambda/detail/operator_return_type_traits.hpp [3:3]
+ boost/lambda/detail/operators.hpp [3:3]
+ boost/lambda/detail/ret.hpp [3:3]
+ boost/lambda/detail/return_type_traits.hpp [3:3]
+ boost/lambda/detail/select_functions.hpp [3:3]
+ boost/lambda/exceptions.hpp [3:4]
+ boost/lambda/if.hpp [3:5]
+ boost/lambda/lambda.hpp [2:2]
+ boost/lambda/loops.hpp [3:5]
+ boost/lambda/switch.hpp [3:4]
+ boost/python/ptr.hpp [11:12]
+ boost/tuple/detail/tuple_basic.hpp [3:3]
+ boost/tuple/tuple.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL f654a91ae5842daef6292616876810df
+BELONGS ya.make
+ License text:
+ Copyright (c) 2012 Nathan Ridge
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/adapted/struct/define_struct_inline.hpp [2:2]
+ boost/fusion/adapted/struct/detail/define_struct_inline.hpp [2:2]
+ boost/fusion/include/define_struct_inline.hpp [2:2]
+ boost/fusion/support/as_const.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL f68164228ffa5c0764d510b1da25be15
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
+ // Copyright 2004-2005 Peter Dimov
+ // Copyright 2006 Michael van der Westhuizen
+ // Copyright 2012 IBM Corp.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp [8:11]
+
+KEEP COPYRIGHT_SERVICE_LABEL f6e13419ff45640c01826efe04ffd1e9
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2010 Joel de Guzman
+ Copyright (c) 2004 Daniel Wallin
+ Copyright (c) 2010 Thomas Heller
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/phoenix/core/detail/cpp03/function_equal.hpp [21:23]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_equal_10.hpp [2:4]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_equal_20.hpp [2:4]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_equal_30.hpp [2:4]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_equal_40.hpp [2:4]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_equal_50.hpp [2:4]
+ boost/phoenix/scope/detail/cpp03/lambda.hpp [14:17]
+ boost/phoenix/scope/detail/cpp03/preprocessed/lambda_10.hpp [2:5]
+ boost/phoenix/scope/detail/cpp03/preprocessed/lambda_20.hpp [2:5]
+ boost/phoenix/scope/detail/cpp03/preprocessed/lambda_30.hpp [2:5]
+ boost/phoenix/scope/detail/cpp03/preprocessed/lambda_40.hpp [2:5]
+ boost/phoenix/scope/detail/cpp03/preprocessed/lambda_50.hpp [2:5]
+ boost/phoenix/scope/detail/local_variable.hpp [2:4]
+ boost/phoenix/scope/dynamic.hpp [2:4]
+ boost/phoenix/scope/lambda.hpp [2:5]
+ boost/phoenix/scope/let.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL f6e6097f7091e8af239964ccde4737f4
+BELONGS ya.make
+ License text:
+ // Copyright Aleksey Gurtovoy 2000-2004
+ // Copyright John R. Bandela 2000-2002
+ // Copyright David Abrahams 2003-2004
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/replace.hpp [5:7]
+ boost/mpl/replace_if.hpp [5:7]
+ boost/mpl/unique.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL f6f9fad1b42d83826bdb8713dc511159
+BELONGS ya.make
+ License text:
+ Copyright (c) 2015 Agustin K-ballo Berge
+ Copyright (c) 2015 Kohei Takahashi
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/support/detail/index_sequence.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL f7093e82ac001e00e3a31b49c58f9abe
+BELONGS ya.make
+ License text:
+ // This file was modified by Oracle on 2013, 2014, 2017.
+ // Modifications copyright (c) 2013-2017 Oracle and/or its affiliates.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/covered_by.hpp [7:8]
+ boost/geometry/algorithms/detail/covered_by/implementation.hpp [7:8]
+ boost/geometry/algorithms/detail/covered_by/interface.hpp [7:8]
+ boost/geometry/algorithms/detail/overlay/get_turn_info_for_endpoint.hpp [5:6]
+ boost/geometry/algorithms/detail/overlay/get_turn_info_helpers.hpp [5:6]
+ boost/geometry/algorithms/detail/overlay/get_turn_info_la.hpp [6:7]
+ boost/geometry/algorithms/detail/overlay/get_turn_info_ll.hpp [6:7]
+ boost/geometry/algorithms/detail/relate/areal_areal.hpp [5:6]
+ boost/geometry/algorithms/detail/relate/implementation.hpp [5:6]
+ boost/geometry/algorithms/detail/relate/interface.hpp [5:6]
+ boost/geometry/algorithms/detail/relate/linear_areal.hpp [5:6]
+ boost/geometry/algorithms/detail/relate/linear_linear.hpp [5:6]
+ boost/geometry/algorithms/detail/relate/point_geometry.hpp [5:6]
+ boost/geometry/algorithms/detail/relate/turns.hpp [5:6]
+ boost/geometry/algorithms/detail/relation/interface.hpp [5:6]
+ boost/geometry/algorithms/detail/sections/sectionalize.hpp [8:9]
+ boost/geometry/algorithms/detail/within/implementation.hpp [7:8]
+ boost/geometry/algorithms/detail/within/interface.hpp [7:8]
+ boost/geometry/algorithms/within.hpp [7:8]
+ boost/geometry/strategies/agnostic/point_in_poly_winding.hpp [6:8]
+ boost/geometry/strategies/cartesian/point_in_poly_winding.hpp [6:8]
+ boost/geometry/strategies/spherical/point_in_poly_winding.hpp [6:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL f737ed06addb0e3798f6d97ca33809b1
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/implicit_cast.hpp at line 3, boost/iterator/counting_iterator.hpp at line 3, boost/iterator/detail/any_conversion_eater.hpp at line 3, boost/iterator/detail/facade_iterator_category.hpp at line 3, boost/iterator/detail/minimum_category.hpp at line 3, boost/iterator/is_lvalue_iterator.hpp at line 3, boost/iterator/is_readable_iterator.hpp at line 3, boost/iterator/iterator_traits.hpp at line 3, boost/iterator/minimum_category.hpp at line 3, boost/mpl/aux_/has_key_impl.hpp at line 7, boost/mpl/print.hpp at line 7, boost/pending/iterator_adaptors.hpp at line 3, boost/python/converter/context_result_converter.hpp at line 3, boost/python/converter/shared_ptr_to_python.hpp at line 3, boost/python/def_visitor.hpp at line 3, boost/python/detail/copy_ctor_mutates_rhs.hpp at line 3, boost/python/detail/def_helper_fwd.hpp at line 3, boost/python/detail/is_auto_ptr.hpp at line 3, boost/python/detail/is_shared_ptr.hpp at line 3, boost/python/detail/nullary_function_adaptor.hpp at line 3, boost/python/detail/prefix.hpp at line 3, boost/python/detail/value_is_shared_ptr.hpp at line 3, boost/python/detail/value_is_xxx.hpp at line 3, boost/python/object/inheritance_query.hpp at line 3, boost/python/pure_virtual.hpp at line 3, boost/python/raw_function.hpp at line 3
+ License text:
+ // Copyright David Abrahams 2003.
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/implicit_cast.hpp [1:3]
+ boost/iterator/counting_iterator.hpp [1:3]
+ boost/iterator/detail/any_conversion_eater.hpp [1:3]
+ boost/iterator/detail/facade_iterator_category.hpp [1:3]
+ boost/iterator/detail/minimum_category.hpp [1:3]
+ boost/iterator/is_lvalue_iterator.hpp [1:3]
+ boost/iterator/is_readable_iterator.hpp [1:3]
+ boost/iterator/iterator_traits.hpp [1:3]
+ boost/iterator/minimum_category.hpp [1:3]
+ boost/mpl/aux_/has_key_impl.hpp [5:6]
+ boost/mpl/print.hpp [5:6]
+ boost/pending/iterator_adaptors.hpp [1:3]
+ boost/python/converter/context_result_converter.hpp [1:3]
+ boost/python/converter/shared_ptr_to_python.hpp [1:4]
+ boost/python/def_visitor.hpp [1:3]
+ boost/python/detail/copy_ctor_mutates_rhs.hpp [1:3]
+ boost/python/detail/def_helper_fwd.hpp [1:3]
+ boost/python/detail/is_auto_ptr.hpp [1:3]
+ boost/python/detail/is_shared_ptr.hpp [1:4]
+ boost/python/detail/nullary_function_adaptor.hpp [1:3]
+ boost/python/detail/prefix.hpp [1:3]
+ boost/python/detail/value_is_shared_ptr.hpp [1:4]
+ boost/python/detail/value_is_xxx.hpp [1:3]
+ boost/python/object/inheritance_query.hpp [1:3]
+ boost/python/pure_virtual.hpp [1:3]
+ boost/python/raw_function.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL f7a61a4b8a24a380f195fe3c28c7fb47
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2010 Joel de Guzman
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/phoenix/bind.hpp [2:2]
+ boost/phoenix/config.hpp [2:5]
+ boost/phoenix/core.hpp [2:2]
+ boost/phoenix/core/argument.hpp [2:4]
+ boost/phoenix/core/argument.hpp [86:87]
+ boost/phoenix/core/argument.hpp [117:118]
+ boost/phoenix/core/detail/argument.hpp [2:4]
+ boost/phoenix/core/detail/cpp03/function_equal.hpp [21:23]
+ boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_10.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_20.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_30.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_40.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_50.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_10.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_20.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_30.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_40.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_50.hpp [2:3]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_equal_10.hpp [2:4]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_equal_20.hpp [2:4]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_equal_30.hpp [2:4]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_equal_40.hpp [2:4]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_equal_50.hpp [2:4]
+ boost/phoenix/core/reference.hpp [2:3]
+ boost/phoenix/core/value.hpp [2:3]
+ boost/phoenix/function.hpp [2:2]
+ boost/phoenix/function/function.hpp [2:4]
+ boost/phoenix/object.hpp [2:3]
+ boost/phoenix/object/const_cast.hpp [2:3]
+ boost/phoenix/object/construct.hpp [2:3]
+ boost/phoenix/object/delete.hpp [2:3]
+ boost/phoenix/object/detail/target.hpp [2:3]
+ boost/phoenix/object/dynamic_cast.hpp [2:3]
+ boost/phoenix/object/new.hpp [2:3]
+ boost/phoenix/object/reinterpret_cast.hpp [2:3]
+ boost/phoenix/object/static_cast.hpp [2:3]
+ boost/phoenix/operator/detail/cpp03/mem_fun_ptr_gen.hpp [15:16]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_10.hpp [2:3]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_20.hpp [2:3]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_30.hpp [2:3]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_40.hpp [2:3]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_50.hpp [2:3]
+ boost/phoenix/operator/if_else.hpp [2:3]
+ boost/phoenix/operator/io.hpp [2:3]
+ boost/phoenix/scope/detail/cpp03/lambda.hpp [14:17]
+ boost/phoenix/scope/detail/cpp03/preprocessed/lambda_10.hpp [2:5]
+ boost/phoenix/scope/detail/cpp03/preprocessed/lambda_20.hpp [2:5]
+ boost/phoenix/scope/detail/cpp03/preprocessed/lambda_30.hpp [2:5]
+ boost/phoenix/scope/detail/cpp03/preprocessed/lambda_40.hpp [2:5]
+ boost/phoenix/scope/detail/cpp03/preprocessed/lambda_50.hpp [2:5]
+ boost/phoenix/scope/dynamic.hpp [2:4]
+ boost/phoenix/scope/lambda.hpp [2:5]
+ boost/phoenix/scope/let.hpp [2:5]
+ boost/phoenix/statement.hpp [2:2]
+ boost/phoenix/statement/do_while.hpp [2:3]
+ boost/phoenix/statement/for.hpp [2:3]
+ boost/phoenix/statement/if.hpp [2:3]
+ boost/phoenix/statement/sequence.hpp [2:4]
+ boost/phoenix/statement/switch.hpp [2:3]
+ boost/phoenix/statement/while.hpp [2:3]
+ boost/spirit/home/support/detail/make_vector.hpp [2:2]
+ boost/spirit/include/karma_as.hpp [2:5]
+ boost/spirit/include/karma_duplicate.hpp [2:4]
+ boost/spirit/include/karma_grammar.hpp [2:4]
+ boost/spirit/include/karma_rule.hpp [2:4]
+ boost/spirit/include/lex_char_token_def.hpp [2:4]
+ boost/spirit/include/lex_generate_static_lexertl.hpp [2:4]
+ boost/spirit/include/lex_plain_token.hpp [2:4]
+ boost/spirit/include/lex_primitives.hpp [2:4]
+ boost/spirit/include/lex_tokenize_and_parse_attr.hpp [2:4]
+ boost/spirit/include/qi_as.hpp [2:5]
+ boost/spirit/include/qi_matches.hpp [2:4]
+ boost/spirit/include/qi_no_skip.hpp [2:4]
+ boost/spirit/include/support_adapt_adt_attributes.hpp [2:4]
+ boost/spirit/include/support_attributes_fwd.hpp [2:4]
+ boost/spirit/include/support_container.hpp [2:4]
+ boost/spirit/include/support_extended_variant.hpp [2:4]
+ boost/spirit/include/support_line_pos_iterator.hpp [2:5]
+ boost/spirit/include/support_ostream_iterator.hpp [2:4]
+ boost/spirit/include/support_utree.hpp [2:4]
+ boost/spirit/repository/home/support/subrule_context.hpp [2:3]
+ boost/spirit/repository/include/qi_nonterminal.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL f7b79570ab951aee1d4600e3cfada7f6
+BELONGS ya.make
+ License text:
+ * Copyright Nick Thompson, 2017
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/interpolators/barycentric_rational.hpp [2:4]
+ boost/math/interpolators/cubic_b_spline.hpp [1:3]
+ boost/math/interpolators/detail/barycentric_rational_detail.hpp [2:4]
+ boost/math/interpolators/detail/cubic_b_spline_detail.hpp [1:3]
+ boost/math/quadrature/detail/exp_sinh_detail.hpp [1:3]
+ boost/math/quadrature/detail/sinh_sinh_detail.hpp [1:3]
+ boost/math/quadrature/detail/tanh_sinh_constants.hpp [1:3]
+ boost/math/quadrature/detail/tanh_sinh_detail.hpp [1:3]
+ boost/math/quadrature/exp_sinh.hpp [1:3]
+ boost/math/quadrature/sinh_sinh.hpp [1:3]
+ boost/math/quadrature/tanh_sinh.hpp [1:3]
+ boost/math/quadrature/trapezoidal.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL f8523423e94e4738f1a90221affa3c6d
+BELONGS ya.make
+ License text:
+ Copyright 2009-2011 Karsten Ahnert
+ Copyright 2009-2011 Mario Mulansky
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/external/compute/compute_algebra.hpp [9:10]
+ boost/numeric/odeint/external/compute/compute_operations.hpp [9:10]
+ boost/numeric/odeint/external/compute/compute_resize.hpp [9:10]
+ boost/numeric/odeint/external/vexcl/vexcl_copy.hpp [9:10]
+ boost/numeric/odeint/external/vexcl/vexcl_same_instance.hpp [9:10]
+ boost/numeric/odeint/iterator/integrate/detail/integrate_adaptive.hpp [9:10]
+ boost/numeric/odeint/iterator/integrate/integrate.hpp [9:10]
+ boost/numeric/odeint/iterator/integrate/integrate_adaptive.hpp [9:10]
+ boost/numeric/odeint/iterator/integrate/integrate_const.hpp [10:11]
+ boost/numeric/odeint/iterator/integrate/integrate_n_steps.hpp [9:10]
+ boost/numeric/odeint/iterator/integrate/integrate_times.hpp [9:10]
+ boost/numeric/odeint/iterator/integrate/null_observer.hpp [9:10]
+ boost/numeric/odeint/iterator/integrate/observer_collection.hpp [9:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL f8951bf69b11cc80f1addaa803fe6615
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/qi/numeric/detail/numeric_utils.hpp [2:6]
+ boost/spirit/home/x3/support/numeric_utils/detail/extract_int.hpp [2:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL f89bd28fdc7f4fd3d37706b722eab1dc
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/ptr_container/detail/move.hpp at line 3, boost/ptr_container/detail/static_move_ptr.hpp at line 3
+ License text:
+ // (C) Copyright Daniel Wallin 2004.
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/ptr_container/detail/move.hpp [1:3]
+ boost/ptr_container/detail/static_move_ptr.hpp [1:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL f8bb10155b581266fee4384d92ffbd4b
+BELONGS ya.make
+ License text:
+ // (C) Copyright 2009-2012 Vicente J. Botet Escriba
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/lock_traits.hpp [4:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL f8c5c0c04a0be7e5cac5b8b3649d747d
+BELONGS ya.make
+ License text:
+ Copyright (c) 2003 Joel de Guzman
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/core/safe_bool.hpp [2:3]
+ boost/spirit/home/classic/utility/grammar_def.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL f8de78cca950a4830aa0a2a534686dc6
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/weighted_sum_kahan.hpp at line 6
+ License text:
+ // Copyright 2011 Simon West. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/accumulators/statistics/weighted_sum_kahan.hpp [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL f936e9b0685f44284dbdcdc5d4021540
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+ // Copyright (c) 2010 Beman Dawes
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/system/detail/local_free_on_destruction.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL f937ec1156626f6e299bd234778b3fd8
+BELONGS ya.make
+ License text:
+ * Copyright 2017 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/detail/winapi/access_rights.hpp [2:2]
+ boost/detail/winapi/apc.hpp [2:2]
+ boost/detail/winapi/basic_types.hpp [2:2]
+ boost/detail/winapi/bcrypt.hpp [2:2]
+ boost/detail/winapi/character_code_conversion.hpp [2:2]
+ boost/detail/winapi/condition_variable.hpp [2:2]
+ boost/detail/winapi/config.hpp [2:2]
+ boost/detail/winapi/critical_section.hpp [2:2]
+ boost/detail/winapi/crypt.hpp [2:2]
+ boost/detail/winapi/dbghelp.hpp [2:2]
+ boost/detail/winapi/debugapi.hpp [2:2]
+ boost/detail/winapi/detail/deprecated_namespace.hpp [2:2]
+ boost/detail/winapi/directory_management.hpp [2:2]
+ boost/detail/winapi/dll.hpp [2:2]
+ boost/detail/winapi/environment.hpp [2:2]
+ boost/detail/winapi/error_codes.hpp [2:2]
+ boost/detail/winapi/error_handling.hpp [2:2]
+ boost/detail/winapi/event.hpp [2:2]
+ boost/detail/winapi/file_management.hpp [2:2]
+ boost/detail/winapi/file_mapping.hpp [2:2]
+ boost/detail/winapi/get_current_process.hpp [2:2]
+ boost/detail/winapi/get_current_process_id.hpp [2:2]
+ boost/detail/winapi/get_current_thread.hpp [2:2]
+ boost/detail/winapi/get_current_thread_id.hpp [2:2]
+ boost/detail/winapi/get_last_error.hpp [2:2]
+ boost/detail/winapi/get_process_times.hpp [2:2]
+ boost/detail/winapi/get_system_directory.hpp [2:2]
+ boost/detail/winapi/get_thread_times.hpp [2:2]
+ boost/detail/winapi/handle_info.hpp [2:2]
+ boost/detail/winapi/handles.hpp [2:2]
+ boost/detail/winapi/heap_memory.hpp [2:2]
+ boost/detail/winapi/init_once.hpp [2:2]
+ boost/detail/winapi/jobs.hpp [2:2]
+ boost/detail/winapi/limits.hpp [2:2]
+ boost/detail/winapi/local_memory.hpp [2:2]
+ boost/detail/winapi/memory.hpp [2:2]
+ boost/detail/winapi/mutex.hpp [2:2]
+ boost/detail/winapi/overlapped.hpp [2:2]
+ boost/detail/winapi/page_protection_flags.hpp [2:2]
+ boost/detail/winapi/pipes.hpp [2:2]
+ boost/detail/winapi/priority_class.hpp [2:2]
+ boost/detail/winapi/process.hpp [2:2]
+ boost/detail/winapi/security.hpp [2:2]
+ boost/detail/winapi/semaphore.hpp [2:2]
+ boost/detail/winapi/shell.hpp [2:2]
+ boost/detail/winapi/show_window.hpp [2:2]
+ boost/detail/winapi/srw_lock.hpp [2:2]
+ boost/detail/winapi/stack_backtrace.hpp [2:2]
+ boost/detail/winapi/synchronization.hpp [2:2]
+ boost/detail/winapi/system.hpp [2:2]
+ boost/detail/winapi/thread.hpp [2:2]
+ boost/detail/winapi/thread_pool.hpp [2:2]
+ boost/detail/winapi/time.hpp [2:2]
+ boost/detail/winapi/timers.hpp [2:2]
+ boost/detail/winapi/tls.hpp [2:2]
+ boost/detail/winapi/wait.hpp [2:2]
+ boost/detail/winapi/waitable_timer.hpp [2:2]
+ boost/winapi/stack_backtrace.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL f94cb856c9e5e6fd69d03e77e07fdd8a
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iterator/function_input_iterator.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/iterator/function_input_iterator.hpp [1:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL f9749f4e13e703364be469134935d614
+BELONGS ya.make
+ License text:
+ // Copyright (C) 1999-2001 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
+ // Gary Powell (gwpowell@hotmail.com)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/lambda/bind.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL f9a846689286adc00201dd976f81ff02
+BELONGS ya.make
+ License text:
+ Copyright (c) 2006-2007 Tobias Schwinger
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/functional.hpp [2:2]
+ boost/fusion/functional/adapter.hpp [2:2]
+ boost/fusion/functional/adapter/detail/access.hpp [2:2]
+ boost/fusion/functional/adapter/fused.hpp [2:2]
+ boost/fusion/functional/adapter/fused_function_object.hpp [2:2]
+ boost/fusion/functional/adapter/fused_procedure.hpp [2:2]
+ boost/fusion/functional/adapter/limits.hpp [2:2]
+ boost/fusion/functional/adapter/unfused.hpp [2:2]
+ boost/fusion/functional/adapter/unfused_typed.hpp [2:2]
+ boost/fusion/functional/invocation.hpp [2:2]
+ boost/fusion/functional/invocation/detail/that_ptr.hpp [2:2]
+ boost/fusion/functional/invocation/invoke.hpp [2:3]
+ boost/fusion/functional/invocation/invoke_function_object.hpp [2:3]
+ boost/fusion/functional/invocation/invoke_procedure.hpp [2:3]
+ boost/fusion/functional/invocation/limits.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL f9e3fe08b0242a1ca57099bf39432eed
+BELONGS ya.make
+ License text:
+ * Copyright (c) 1998-2009
+ * John Maddock
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/regex/v4/match_results.hpp [3:4]
+ boost/regex/v4/regex_format.hpp [3:4]
+ boost/regex/v4/regex_replace.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL f9f12f7fd5f198cd90b9b717616fc6d6
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/classic/core.hpp [2:8]
+ boost/spirit/home/classic/core/composite/alternative.hpp [2:5]
+ boost/spirit/home/classic/core/composite/difference.hpp [2:5]
+ boost/spirit/home/classic/core/composite/directives.hpp [2:4]
+ boost/spirit/home/classic/core/composite/epsilon.hpp [2:4]
+ boost/spirit/home/classic/core/composite/exclusive_or.hpp [2:5]
+ boost/spirit/home/classic/core/composite/impl/alternative.ipp [2:5]
+ boost/spirit/home/classic/core/composite/impl/difference.ipp [2:5]
+ boost/spirit/home/classic/core/composite/impl/directives.ipp [2:6]
+ boost/spirit/home/classic/core/composite/impl/exclusive_or.ipp [2:5]
+ boost/spirit/home/classic/core/composite/impl/intersection.ipp [2:5]
+ boost/spirit/home/classic/core/composite/impl/kleene_star.ipp [2:5]
+ boost/spirit/home/classic/core/composite/impl/list.ipp [2:5]
+ boost/spirit/home/classic/core/composite/impl/optional.ipp [2:5]
+ boost/spirit/home/classic/core/composite/impl/positive.ipp [2:5]
+ boost/spirit/home/classic/core/composite/impl/sequence.ipp [2:5]
+ boost/spirit/home/classic/core/composite/impl/sequential_and.ipp [2:5]
+ boost/spirit/home/classic/core/composite/impl/sequential_or.ipp [2:5]
+ boost/spirit/home/classic/core/composite/intersection.hpp [2:5]
+ boost/spirit/home/classic/core/composite/kleene_star.hpp [2:5]
+ boost/spirit/home/classic/core/composite/list.hpp [2:5]
+ boost/spirit/home/classic/core/composite/no_actions.hpp [2:4]
+ boost/spirit/home/classic/core/composite/operators.hpp [2:5]
+ boost/spirit/home/classic/core/composite/optional.hpp [2:5]
+ boost/spirit/home/classic/core/composite/positive.hpp [2:5]
+ boost/spirit/home/classic/core/composite/sequence.hpp [2:5]
+ boost/spirit/home/classic/core/composite/sequential_and.hpp [2:5]
+ boost/spirit/home/classic/core/composite/sequential_or.hpp [2:5]
+ boost/spirit/home/classic/core/primitives/impl/numerics.ipp [2:4]
+ boost/spirit/home/classic/core/primitives/impl/primitives.ipp [2:4]
+ boost/spirit/home/classic/core/primitives/numerics.hpp [2:4]
+ boost/spirit/home/classic/core/primitives/primitives.hpp [2:4]
+ boost/spirit/home/classic/meta.hpp [2:4]
+ boost/spirit/home/classic/utility.hpp [2:9]
+ boost/spirit/home/classic/utility/distinct.hpp [2:4]
+ boost/spirit/home/classic/utility/loops.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL f9f21cf5cc873fe5cc18d20988035289
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2010 Artyom Beilis (Tonkikh)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/locale/hold_ptr.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL fa9a32968bea29cee8bae21e3db66f48
+BELONGS ya.make
+ License text:
+ Copyright (c) 2014-2015 Kohei Takahashi
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/container/generation/make_set.hpp [2:2]
+ boost/fusion/container/generation/make_vector.hpp [2:2]
+ boost/fusion/container/list/detail/list_to_cons.hpp [2:2]
+ boost/fusion/container/list/list.hpp [2:2]
+ boost/fusion/container/set/detail/as_set.hpp [2:2]
+ boost/fusion/container/set/set.hpp [2:2]
+ boost/fusion/container/vector/detail/as_vector.hpp [2:2]
+ boost/fusion/container/vector/detail/config.hpp [2:2]
+ boost/fusion/container/vector/vector.hpp [2:2]
+ boost/fusion/container/vector/vector_fwd.hpp [2:2]
+ boost/fusion/support/detail/is_same_size.hpp [2:2]
+ boost/fusion/tuple/tuple.hpp [2:2]
+ boost/fusion/tuple/tuple_fwd.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL fa9c01424457f45357412ffbaa103b87
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/archive/xml_archive_exception.hpp at line 14
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/archive/xml_archive_exception.hpp [12:14]
+
+KEEP COPYRIGHT_SERVICE_LABEL fac2acbeb5b5ff0e22a994c8b805305c
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2009 John Maddock
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/detail/iconv.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL fae7f98b6a716f76e1a04de0592d1b47
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/concurrent_queues/sync_bounded_queue.hpp at line 8, boost/thread/concurrent_queues/sync_deque.hpp at line 8, boost/thread/concurrent_queues/sync_queue.hpp at line 8, boost/thread/sync_bounded_queue.hpp at line 8, boost/thread/sync_queue.hpp at line 8
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/thread/concurrent_queues/sync_bounded_queue.hpp [6:8]
+ boost/thread/concurrent_queues/sync_deque.hpp [6:8]
+ boost/thread/concurrent_queues/sync_queue.hpp [6:8]
+ boost/thread/sync_bounded_queue.hpp [6:8]
+ boost/thread/sync_queue.hpp [6:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL faef8c3be0a1612051d45827262d7799
+BELONGS ya.make
+ License text:
+ // (C) Copyright John Maddock 2008.
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/no_tr1/cmath.hpp [1:3]
+ boost/math/special_functions/acosh.hpp [3:6]
+ boost/math/special_functions/asinh.hpp [3:6]
+ boost/math/special_functions/atanh.hpp [3:6]
+ boost/math/special_functions/next.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL fb0c843abf394387c8df0eca1810bb44
+BELONGS ya.make
+ License text:
+ // (C) Copyright John Maddock 2005.
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/no_tr1/complex.hpp [1:3]
+ boost/config/no_tr1/functional.hpp [1:3]
+ boost/config/no_tr1/memory.hpp [1:3]
+ boost/config/no_tr1/utility.hpp [1:3]
+ boost/math/complex.hpp [1:3]
+ boost/math/complex/acos.hpp [1:3]
+ boost/math/complex/acosh.hpp [1:3]
+ boost/math/complex/asin.hpp [1:3]
+ boost/math/complex/asinh.hpp [1:3]
+ boost/math/complex/atan.hpp [1:3]
+ boost/math/complex/atanh.hpp [1:3]
+ boost/math/complex/details.hpp [1:3]
+ boost/math/complex/fabs.hpp [1:3]
+ boost/type_traits/extent.hpp [2:4]
+ boost/type_traits/has_virtual_destructor.hpp [2:4]
+ boost/type_traits/is_member_object_pointer.hpp [2:4]
+ boost/type_traits/is_signed.hpp [2:4]
+ boost/type_traits/is_unsigned.hpp [2:4]
+ boost/type_traits/rank.hpp [2:4]
+ boost/type_traits/remove_all_extents.hpp [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL fb19913edf2b294113c26397c854cb87
+BELONGS ya.make
+ License text:
+ Copyright (c) 2007-2010: Joachim Faulhaber
+ Copyright (c) 1999-2006: Cortex Software GmbH, Kantstrasse 57, Berlin
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/icl/detail/map_algo.hpp [2:2]
+ boost/icl/detail/set_algo.hpp [2:2]
+ boost/icl/detail/std_set.hpp [2:2]
+ boost/icl/interval_set.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL fb315c16d1fe23c296a6568a9dea2777
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/scope_exit.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/scope_exit.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL fb36b29faf58b57823a283e76940e43d
+BELONGS ya.make
+ License text:
+ * Copyright (c) 2012 Hartmut Kaiser
+ * Copyright (c) 2014 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/atomic/detail/config.hpp [6:7]
+ boost/atomic/detail/link.hpp [6:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL fb56a746a3cac247b27d3293104f2b01
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2009, 2015 Peter Dimov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/bind.hpp [13:13]
+
+KEEP COPYRIGHT_SERVICE_LABEL fba684797df4f48e06fa78e2e64b11b4
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/category.hpp at line 5, boost/range/distance.hpp at line 5, boost/range/functions.hpp at line 5, boost/range/pointer.hpp at line 5
+ License text:
+ // Copyright Thorsten Ottosen 2003-2006. Use, modification and
+ // distribution is subject to the Boost Software License, Version
+ // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/range/category.hpp [3:5]
+ boost/range/distance.hpp [3:5]
+ boost/range/functions.hpp [3:5]
+ boost/range/pointer.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL fc2a9fc530edf9f16f6eaac267113149
+BELONGS libs/iostreams/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iostreams/device/mapped_file.hpp at line 5, libs/iostreams/src/mapped_file.cpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/iostreams/device/mapped_file.hpp [1:5]
+ libs/iostreams/src/mapped_file.cpp [1:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL fc552a5881ad9783ae6c8d511dd6c13a
+BELONGS ya.make
+ License text:
+ Copyright (c) 2001-2011 Joel de Guzman
+ http://spirit.sourceforge.net/
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/support/common_terminals.hpp [2:3]
+ boost/spirit/home/support/detail/make_cons.hpp [2:3]
+ boost/spirit/home/support/make_component.hpp [2:3]
+ boost/spirit/home/support/meta_compiler.hpp [2:3]
+ boost/spirit/home/support/modify.hpp [2:3]
+ boost/spirit/include/support_info.hpp [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL fccaaf374e92bea92a91f3c3f74bfb06
+BELONGS ya.make
+ License text:
+ // (C) Copyright Kevlin Henney and Dave Abrahams 1999.
+ // (C) Copyright Boris Rasin 2014.
+ // Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/polymorphic_cast.hpp [3:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL fcd2c8a16a246d6c41d59f33179993f4
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/gcc.hpp [1:9]
+ boost/config/compiler/metrowerks.hpp [1:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL fce4baaad3a86f36324f1a7918e15e7d
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2007-2016 Barend Gehrels, Amsterdam, the Netherlands.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/geometry/algorithms/detail/overlay/cluster_info.hpp [3:3]
+ boost/geometry/strategies/geographic/distance.hpp [3:3]
+ boost/geometry/strategies/geographic/distance_andoyer.hpp [3:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL fceca3d59218ef75da3cdc95a9a29691
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2009 Ben Hanson (http://www.benhanson.net/)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/spirit/home/support/detail/lexer/generate_re2c.hpp [2:2]
+ boost/spirit/home/support/detail/lexer/internals.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL fcfedf71451d1e8697ddad44e1797902
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/function/detail/function_iterate.hpp at line 5, boost/function/detail/maybe_include.hpp at line 5
+ License text:
+ // Copyright Douglas Gregor 2003. Use, modification and
+ // distribution is subject to the Boost Software License, Version
+ // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/function/detail/function_iterate.hpp [3:5]
+ boost/function/detail/maybe_include.hpp [3:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL fcff9832642f1fc146a81e1a466219bc
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/config/compiler/borland.hpp [1:5]
+ boost/config/compiler/codegear.hpp [1:5]
+ boost/config/compiler/common_edg.hpp [1:7]
+ boost/config/compiler/hp_acc.hpp [1:8]
+ boost/config/compiler/kai.hpp [1:5]
+ boost/config/compiler/mpw.hpp [1:4]
+ boost/config/compiler/visualc.hpp [1:8]
+
+KEEP COPYRIGHT_SERVICE_LABEL fd55be335299a3413c6cfe0983242e0e
+BELONGS ya.make
+ License text:
+ // Copyright Aleksey Gurtovoy 2000-2008
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/apply_wrap.hpp [9:9]
+ boost/mpl/aux_/preprocessed/bcc/apply_wrap.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc/quote.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc/vector_c.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/apply_wrap.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/quote.hpp [2:2]
+ boost/mpl/aux_/preprocessed/bcc_pre590/vector_c.hpp [2:2]
+ boost/mpl/aux_/push_back_impl.hpp [5:5]
+ boost/mpl/aux_/push_front_impl.hpp [5:5]
+ boost/mpl/aux_/sequence_wrapper.hpp [8:8]
+ boost/mpl/aux_/traits_lambda_spec.hpp [5:5]
+ boost/mpl/for_each.hpp [5:5]
+ boost/mpl/min_max.hpp [5:5]
+ boost/mpl/quote.hpp [9:9]
+ boost/mpl/vector/aux_/front.hpp [5:5]
+ boost/mpl/vector_c.hpp [5:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL fd6578dd286e9257f73d8cc59e377eb7
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2005-2009 Jongsoo Park <jongsoo.park -at- gmail.com>
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/dominator_tree.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL fd82c8c920d2d55a272cb4473c4c8e01
+BELONGS ya.make
+ License text:
+ // Copyright 2014 Peter Dimov
+ // Copyright 2014 Andrey Semashev
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/core/demangle.hpp [6:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL fd84e5521c389f735db1160443952431
+BELONGS ya.make
+ License text:
+ Copyright (c) 2013 Jamboree
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/fusion/algorithm/transformation/flatten.hpp [2:2]
+ boost/fusion/view/flatten_view.hpp [2:2]
+ boost/fusion/view/flatten_view/flatten_view.hpp [2:2]
+ boost/fusion/view/flatten_view/flatten_view_iterator.hpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL fda42ec6f8d7fcf06eb7924a33f02d3c
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/cuthill_mckee_ordering.hpp [2:5]
+ boost/graph/detail/sparse_ordering.hpp [2:5]
+ boost/graph/king_ordering.hpp [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL fdaa6e15501e6c6b69d62a55e2cc2e3c
+BELONGS ya.make
+ License text:
+ // Copyright Aleksey Gurtovoy 2003-2007
+ // Copyright David Abrahams 2003-2004
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/set/aux_/begin_end_impl.hpp [5:6]
+ boost/mpl/set/aux_/erase_key_impl.hpp [5:6]
+ boost/mpl/set/aux_/insert_impl.hpp [5:6]
+ boost/mpl/set/aux_/item.hpp [5:6]
+ boost/mpl/set/aux_/iterator.hpp [5:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL fdb89500e86761890c1be8217c26304c
+BELONGS ya.make
+ License text:
+ Copyright 2012 Karsten Ahnert
+ Copyright 2012 Mario Mulansky
+ Copyright 2012 Denis Demidov
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/odeint/external/vexcl/vexcl_resize.hpp [9:11]
+ boost/numeric/odeint/external/viennacl/viennacl_operations.hpp [9:11]
+ boost/numeric/odeint/external/viennacl/viennacl_resize.hpp [9:11]
+ boost/numeric/odeint/integrate/detail/integrate_const.hpp [9:11]
+ boost/numeric/odeint/integrate/detail/integrate_n_steps.hpp [9:11]
+ boost/numeric/odeint/integrate/detail/integrate_times.hpp [9:11]
+ boost/numeric/odeint/util/bind.hpp [9:10]
+ boost/numeric/odeint/util/detail/less_with_sign.hpp [9:10]
+ boost/numeric/odeint/util/same_instance.hpp [9:10]
+
+KEEP COPYRIGHT_SERVICE_LABEL fdc872a02f9fa212032838b53061b71b
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/process.hpp [1:7]
+ boost/process/args.hpp [1:6]
+ boost/process/async_pipe.hpp [1:5]
+ boost/process/async_system.hpp [1:6]
+ boost/process/child.hpp [1:6]
+ boost/process/cmd.hpp [1:6]
+ boost/process/detail/child_decl.hpp [1:6]
+ boost/process/detail/config.hpp [1:6]
+ boost/process/detail/execute_impl.hpp [1:6]
+ boost/process/detail/handler_base.hpp [1:6]
+ boost/process/detail/posix/async_in.hpp [1:5]
+ boost/process/detail/posix/async_out.hpp [1:5]
+ boost/process/detail/posix/basic_pipe.hpp [1:5]
+ boost/process/detail/posix/child_handle.hpp [1:5]
+ boost/process/detail/posix/close_in.hpp [1:5]
+ boost/process/detail/posix/close_out.hpp [1:5]
+ boost/process/detail/posix/executor.hpp [1:5]
+ boost/process/detail/posix/fd.hpp [1:5]
+ boost/process/detail/posix/file_in.hpp [1:5]
+ boost/process/detail/posix/file_out.hpp [1:6]
+ boost/process/detail/posix/null_in.hpp [1:5]
+ boost/process/detail/posix/null_out.hpp [1:6]
+ boost/process/detail/posix/pipe_in.hpp [1:5]
+ boost/process/detail/posix/pipe_out.hpp [1:6]
+ boost/process/detail/posix/search_path.hpp [1:5]
+ boost/process/detail/posix/shell_path.hpp [1:5]
+ boost/process/detail/posix/signal.hpp [1:6]
+ boost/process/detail/posix/start_dir.hpp [1:5]
+ boost/process/detail/posix/terminate.hpp [1:5]
+ boost/process/detail/posix/wait_for_exit.hpp [1:5]
+ boost/process/detail/posix/wait_group.hpp [1:5]
+ boost/process/detail/throw_on_error.hpp [1:6]
+ boost/process/detail/windows/async_in.hpp [1:5]
+ boost/process/detail/windows/async_out.hpp [1:5]
+ boost/process/detail/windows/child_handle.hpp [1:5]
+ boost/process/detail/windows/close_in.hpp [1:5]
+ boost/process/detail/windows/close_out.hpp [1:5]
+ boost/process/detail/windows/executor.hpp [1:6]
+ boost/process/detail/windows/file_in.hpp [1:5]
+ boost/process/detail/windows/file_out.hpp [1:5]
+ boost/process/detail/windows/null_in.hpp [1:5]
+ boost/process/detail/windows/null_out.hpp [1:5]
+ boost/process/detail/windows/pipe_in.hpp [1:5]
+ boost/process/detail/windows/pipe_out.hpp [1:6]
+ boost/process/detail/windows/search_path.hpp [1:5]
+ boost/process/detail/windows/shell_path.hpp [1:5]
+ boost/process/detail/windows/show_window.hpp [1:6]
+ boost/process/detail/windows/start_dir.hpp [1:5]
+ boost/process/detail/windows/terminate.hpp [1:5]
+ boost/process/detail/windows/wait_for_exit.hpp [1:6]
+ boost/process/error.hpp [1:6]
+ boost/process/exe.hpp [1:6]
+ boost/process/pipe.hpp [1:5]
+ boost/process/search_path.hpp [1:5]
+ boost/process/shell.hpp [1:6]
+ boost/process/spawn.hpp [1:6]
+ boost/process/start_dir.hpp [1:5]
+ boost/process/system.hpp [1:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL fdfa61b5c29bc0c08a5bd50229bcc525
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2007, 2008 Peter Dimov
+ // Copyright (c) 2008 Michael Marcin
+ // Copyright (c) 2009 Frank Mori Hess
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/signals2/deconstruct.hpp [16:18]
+
+KEEP COPYRIGHT_SERVICE_LABEL fe409df214ddedae04ea04fe60c33c48
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/process.hpp [1:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL fea2e5ed18f9a052be7348a249bd333a
+BELONGS ya.make
+ License text:
+ // Copyright Kevlin Henney, 2000-2005.
+ // Copyright Alexander Nasonov, 2006-2010.
+ // Copyright Antony Polukhin, 2011-2016.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/lexical_cast/detail/converter_lexical_streams.hpp [1:3]
+ boost/lexical_cast/detail/converter_numeric.hpp [1:3]
+ boost/lexical_cast/try_lexical_convert.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL febe05bc8ec6f388612334cf870b660c
+BELONGS ya.make
+ License text:
+ * Copyright (c) 1998-2005
+ * John Maddock
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/regex/v4/regex_workaround.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL ff121923a9c0b6799597434faafbacb1
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2006 Tiago de Paula Peixoto <tiago@forked.de>
+ // Copyright (C) 2004 The Trustees of Indiana University.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/graph/graphml.hpp [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL ff357b8617179cd55397e194bbf9afa9
+BELONGS ya.make
+ License text:
+ // Copyright Sergey Krivonos 2017
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/mpl/get_tag.hpp [5:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL ff57d62db593b2575f4cc431df71e1d1
+BELONGS ya.make
+ License text:
+ // Copyright (C) 2001 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/lambda/detail/is_instance_of.hpp [3:3]
+ boost/tuple/tuple_comparison.hpp [3:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL ff6cfc5093caf6fa33f3e0e3622368ef
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/contract.hpp at line 7, boost/contract/assert.hpp at line 7, boost/contract/base_types.hpp at line 7, boost/contract/call_if.hpp at line 7, boost/contract/check.hpp at line 7, boost/contract/constructor.hpp at line 7, boost/contract/core/access.hpp at line 7, boost/contract/core/check_macro.hpp at line 7, boost/contract/core/config.hpp at line 7, boost/contract/core/constructor_precondition.hpp at line 7, boost/contract/core/exception.hpp at line 7, boost/contract/core/specify.hpp at line 7, boost/contract/core/virtual.hpp at line 7, boost/contract/destructor.hpp at line 7, boost/contract/detail/assert.hpp at line 7, boost/contract/detail/auto_ptr.hpp at line 7, boost/contract/detail/check.hpp at line 7, boost/contract/detail/checking.hpp at line 7, boost/contract/detail/condition/cond_base.hpp at line 7, boost/contract/detail/condition/cond_inv.hpp at line 7, boost/contract/detail/condition/cond_post.hpp at line 7, boost/contract/detail/condition/cond_subcontracting.hpp at line 7, boost/contract/detail/config.hpp at line 7, boost/contract/detail/debug.hpp at line 7, boost/contract/detail/decl.hpp at line 7, boost/contract/detail/declspec.hpp at line 7, boost/contract/detail/inlined.hpp at line 7, boost/contract/detail/inlined/core/exception.hpp at line 7, boost/contract/detail/inlined/detail/checking.hpp at line 7, boost/contract/detail/inlined/old.hpp at line 7, boost/contract/detail/name.hpp at line 7, boost/contract/detail/none.hpp at line 7, boost/contract/detail/noop.hpp at line 7, boost/contract/detail/operation/constructor.hpp at line 7, boost/contract/detail/operation/destructor.hpp at line 7, boost/contract/detail/operation/function.hpp at line 7, boost/contract/detail/operation/public_function.hpp at line 7, boost/contract/detail/operation/static_public_function.hpp at line 7, boost/contract/detail/operator_safe_bool.hpp at line 7, boost/contract/detail/preprocessor/keyword/private.hpp at line 7, boost/contract/detail/preprocessor/keyword/protected.hpp at line 7, boost/contract/detail/preprocessor/keyword/public.hpp at line 7, boost/contract/detail/preprocessor/keyword/utility/is.hpp at line 7, boost/contract/detail/preprocessor/keyword/virtual.hpp at line 7, boost/contract/detail/static_local_var.hpp at line 7, boost/contract/detail/tvariadic.hpp at line 7, boost/contract/detail/type_traits/member_function_types.hpp at line 7, boost/contract/detail/type_traits/mirror.hpp at line 7, boost/contract/detail/type_traits/optional.hpp at line 7, boost/contract/function.hpp at line 7, boost/contract/old.hpp at line 7, boost/contract/override.hpp at line 7, boost/contract/public_function.hpp at line 7, boost/contract_macro.hpp at line 7
+ License text:
+ // Copyright (C) 2008-2018 Lorenzo Caminiti
+ // Distributed under the Boost Software License, Version 1.0 (see accompanying
+ // file LICENSE_1_0.txt or a copy at http://www.boost.org/LICENSE_1_0.txt).
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/contract.hpp [5:7]
+ boost/contract/assert.hpp [5:7]
+ boost/contract/base_types.hpp [5:7]
+ boost/contract/call_if.hpp [5:7]
+ boost/contract/check.hpp [5:7]
+ boost/contract/constructor.hpp [5:7]
+ boost/contract/core/access.hpp [5:7]
+ boost/contract/core/check_macro.hpp [5:7]
+ boost/contract/core/config.hpp [5:7]
+ boost/contract/core/constructor_precondition.hpp [5:7]
+ boost/contract/core/exception.hpp [5:7]
+ boost/contract/core/specify.hpp [5:7]
+ boost/contract/core/virtual.hpp [5:7]
+ boost/contract/destructor.hpp [5:7]
+ boost/contract/detail/assert.hpp [5:7]
+ boost/contract/detail/auto_ptr.hpp [5:7]
+ boost/contract/detail/check.hpp [5:7]
+ boost/contract/detail/checking.hpp [5:7]
+ boost/contract/detail/condition/cond_base.hpp [5:7]
+ boost/contract/detail/condition/cond_inv.hpp [5:7]
+ boost/contract/detail/condition/cond_post.hpp [5:7]
+ boost/contract/detail/condition/cond_subcontracting.hpp [5:7]
+ boost/contract/detail/config.hpp [5:7]
+ boost/contract/detail/debug.hpp [5:7]
+ boost/contract/detail/decl.hpp [5:7]
+ boost/contract/detail/declspec.hpp [5:7]
+ boost/contract/detail/inlined.hpp [5:7]
+ boost/contract/detail/inlined/core/exception.hpp [5:7]
+ boost/contract/detail/inlined/detail/checking.hpp [5:7]
+ boost/contract/detail/inlined/old.hpp [5:7]
+ boost/contract/detail/name.hpp [5:7]
+ boost/contract/detail/none.hpp [5:7]
+ boost/contract/detail/noop.hpp [5:7]
+ boost/contract/detail/operation/constructor.hpp [5:7]
+ boost/contract/detail/operation/destructor.hpp [5:7]
+ boost/contract/detail/operation/function.hpp [5:7]
+ boost/contract/detail/operation/public_function.hpp [5:7]
+ boost/contract/detail/operation/static_public_function.hpp [5:7]
+ boost/contract/detail/operator_safe_bool.hpp [5:7]
+ boost/contract/detail/preprocessor/keyword/private.hpp [5:7]
+ boost/contract/detail/preprocessor/keyword/protected.hpp [5:7]
+ boost/contract/detail/preprocessor/keyword/public.hpp [5:7]
+ boost/contract/detail/preprocessor/keyword/utility/is.hpp [5:7]
+ boost/contract/detail/preprocessor/keyword/virtual.hpp [5:7]
+ boost/contract/detail/static_local_var.hpp [5:7]
+ boost/contract/detail/tvariadic.hpp [5:7]
+ boost/contract/detail/type_traits/member_function_types.hpp [5:7]
+ boost/contract/detail/type_traits/mirror.hpp [5:7]
+ boost/contract/detail/type_traits/optional.hpp [5:7]
+ boost/contract/function.hpp [5:7]
+ boost/contract/old.hpp [5:7]
+ boost/contract/override.hpp [5:7]
+ boost/contract/public_function.hpp [5:7]
+ boost/contract_macro.hpp [5:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL ffb359d2e5030fecfe6707e998ce6117
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2006 Xiaogang Zhang, 2015 John Maddock
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/math/special_functions/ellint_rc.hpp [1:3]
+ boost/math/special_functions/ellint_rd.hpp [1:3]
+ boost/math/special_functions/ellint_rf.hpp [1:3]
+ boost/math/special_functions/ellint_rj.hpp [1:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL ffda52db2697e08e0d2b391573cd37f6
+BELONGS ya.make
+ License text:
+ * Copyright (c) 2009, Gunter Winkler
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ boost/numeric/ublas/operation/c_array.hpp [8:8]
+ boost/numeric/ublas/operations.hpp [8:8]
+ boost/numeric/ublas/traits/c_array.hpp [8:8]
diff --git a/contrib/restricted/boost/.yandex_meta/devtools.licenses.report b/contrib/restricted/boost/.yandex_meta/devtools.licenses.report
index abcbd94ada..5f35e568d3 100644
--- a/contrib/restricted/boost/.yandex_meta/devtools.licenses.report
+++ b/contrib/restricted/boost/.yandex_meta/devtools.licenses.report
@@ -1,19360 +1,19360 @@
-# File format ($ symbol means the beginning of a line):
-#
-# $ # this message
-# $ # =======================
-# $ # comments (all commentaries should starts with some number of spaces and # symbol)
-# $ IGNORE_FILES {file1.ext1} {file2.ext2} - (optional) ignore listed files when generating license macro and credits
-# $
-# ${action} {license id} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
-# ${all_file_action} filename
-# $ # user commentaries (many lines)
-# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
-# ${action} {license spdx} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/3/ya.make
-# ${all_file_action} filename
-# $ # user commentaries
-# $ generated description
-# $ ...
-#
-# You can modify action, all_file_action and add commentaries
-# Available actions:
-# keep - keep license in contrib and use in credits
-# skip - skip license
-# remove - remove all files with this license
-# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
-#
-# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
-# We suppose that that files can contain some license info
-# Available all file actions:
-# FILE_IGNORE - ignore file (do nothing)
-# FILE_INCLUDE - include all file data into licenses text file
-# =======================
-
-KEEP BSL-1.0 0056bb214b60416bd2a0fa8da64af3a6
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/detail/singleton.hpp at line 5, boost/pool/detail/guard.hpp at line 4, boost/pool/detail/mutex.hpp at line 4, boost/pool/detail/pool_construct_simple.ipp at line 4, boost/pool/object_pool.hpp at line 4, boost/pool/pool.hpp at line 4, boost/pool/pool_alloc.hpp at line 5, boost/pool/poolfwd.hpp at line 4, boost/pool/simple_segregated_storage.hpp at line 4, boost/pool/singleton_pool.hpp at line 4
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/container/detail/singleton.hpp [4:8]
- boost/pool/detail/guard.hpp [3:7]
- boost/pool/detail/mutex.hpp [3:7]
- boost/pool/detail/pool_construct_simple.ipp [3:7]
- boost/pool/object_pool.hpp [3:7]
- boost/pool/pool.hpp [3:7]
- boost/pool/pool_alloc.hpp [4:8]
- boost/pool/poolfwd.hpp [3:7]
- boost/pool/simple_segregated_storage.hpp [3:7]
- boost/pool/singleton_pool.hpp [3:7]
-
-KEEP BSL-1.0 011fcbacb89caf6fb7d35d5ddd8327fb
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/archive/detail/auto_link_archive.hpp at line 14, boost/archive/detail/auto_link_warchive.hpp at line 14, boost/archive/detail/decl.hpp at line 14, boost/cerrno.hpp at line 5, boost/config/warning_disable.hpp at line 3, boost/filesystem/convenience.hpp at line 6, boost/filesystem/exception.hpp at line 5, boost/numeric/conversion/bounds.hpp at line 3, boost/numeric/conversion/cast.hpp at line 3, boost/numeric/conversion/conversion_traits.hpp at line 3, boost/numeric/conversion/converter.hpp at line 3, boost/numeric/conversion/converter_policies.hpp at line 3, boost/numeric/conversion/detail/bounds.hpp at line 3, boost/numeric/conversion/detail/conversion_traits.hpp at line 3, boost/numeric/conversion/detail/converter.hpp at line 3, boost/numeric/conversion/detail/int_float_mixture.hpp at line 3, boost/numeric/conversion/detail/is_subranged.hpp at line 3, boost/numeric/conversion/detail/meta.hpp at line 3, boost/numeric/conversion/detail/sign_mixture.hpp at line 3, boost/numeric/conversion/detail/udt_builtin_mixture.hpp at line 3, boost/numeric/conversion/int_float_mixture.hpp at line 3, boost/numeric/conversion/int_float_mixture_enum.hpp at line 3, boost/numeric/conversion/is_subranged.hpp at line 3, boost/numeric/conversion/sign_mixture.hpp at line 3, boost/numeric/conversion/sign_mixture_enum.hpp at line 3, boost/numeric/conversion/udt_builtin_mixture.hpp at line 3, boost/numeric/conversion/udt_builtin_mixture_enum.hpp at line 3, boost/serialization/config.hpp at line 8
- License text:
- // Use, modification, and distribution is subject to the Boost Software
- // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/archive/detail/auto_link_archive.hpp [13:15]
- boost/archive/detail/auto_link_warchive.hpp [13:15]
- boost/archive/detail/decl.hpp [13:15]
- boost/cerrno.hpp [4:6]
- boost/config/warning_disable.hpp [2:4]
- boost/filesystem/convenience.hpp [5:7]
- boost/filesystem/exception.hpp [4:6]
- boost/numeric/conversion/bounds.hpp [2:4]
- boost/numeric/conversion/cast.hpp [2:4]
- boost/numeric/conversion/conversion_traits.hpp [2:4]
- boost/numeric/conversion/converter.hpp [2:4]
- boost/numeric/conversion/converter_policies.hpp [2:4]
- boost/numeric/conversion/detail/bounds.hpp [2:4]
- boost/numeric/conversion/detail/conversion_traits.hpp [2:4]
- boost/numeric/conversion/detail/converter.hpp [2:4]
- boost/numeric/conversion/detail/int_float_mixture.hpp [2:4]
- boost/numeric/conversion/detail/is_subranged.hpp [2:4]
- boost/numeric/conversion/detail/meta.hpp [2:4]
- boost/numeric/conversion/detail/sign_mixture.hpp [2:4]
- boost/numeric/conversion/detail/udt_builtin_mixture.hpp [2:4]
- boost/numeric/conversion/int_float_mixture.hpp [2:4]
- boost/numeric/conversion/int_float_mixture_enum.hpp [2:4]
- boost/numeric/conversion/is_subranged.hpp [2:4]
- boost/numeric/conversion/sign_mixture.hpp [2:4]
- boost/numeric/conversion/sign_mixture_enum.hpp [2:4]
- boost/numeric/conversion/udt_builtin_mixture.hpp [2:4]
- boost/numeric/conversion/udt_builtin_mixture_enum.hpp [2:4]
- boost/serialization/config.hpp [7:9]
-
-KEEP BSL-1.0 019b02292c2133b845d73735b595410b
-BELONGS ya.make
- License text:
- // Use modification and distribution are subject to the boost Software License,
- // Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 59.38
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/function_types/detail/classifier_impl/arity20_0.hpp [4:5]
- boost/function_types/detail/classifier_impl/arity20_1.hpp [4:5]
- boost/function_types/detail/classifier_impl/arity30_0.hpp [4:5]
- boost/function_types/detail/classifier_impl/arity30_1.hpp [4:5]
- boost/function_types/detail/classifier_impl/arity40_0.hpp [4:5]
- boost/function_types/detail/classifier_impl/arity40_1.hpp [4:5]
- boost/function_types/detail/classifier_impl/arity50_0.hpp [4:5]
- boost/function_types/detail/classifier_impl/arity50_1.hpp [4:5]
- boost/function_types/detail/components_impl/arity20_0.hpp [4:5]
- boost/function_types/detail/components_impl/arity20_1.hpp [4:5]
- boost/function_types/detail/components_impl/arity30_0.hpp [4:5]
- boost/function_types/detail/components_impl/arity30_1.hpp [4:5]
- boost/function_types/detail/components_impl/arity40_0.hpp [4:5]
- boost/function_types/detail/components_impl/arity40_1.hpp [4:5]
- boost/function_types/detail/components_impl/arity50_0.hpp [4:5]
- boost/function_types/detail/components_impl/arity50_1.hpp [4:5]
- boost/function_types/detail/synthesize_impl/arity20_0.hpp [4:5]
- boost/function_types/detail/synthesize_impl/arity20_1.hpp [4:5]
- boost/function_types/detail/synthesize_impl/arity30_0.hpp [4:5]
- boost/function_types/detail/synthesize_impl/arity30_1.hpp [4:5]
- boost/function_types/detail/synthesize_impl/arity40_0.hpp [4:5]
- boost/function_types/detail/synthesize_impl/arity40_1.hpp [4:5]
- boost/function_types/detail/synthesize_impl/arity50_0.hpp [4:5]
- boost/function_types/detail/synthesize_impl/arity50_1.hpp [4:5]
-
-KEEP BSL-1.0 02174c266cd94438c7459adf8172f0a0
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/variant.hpp at line 17
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 94.74
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/serialization/variant.hpp [16:20]
-
-KEEP BSL-1.0 02c5d3cff474bc6841ea7b84039888fe
-BELONGS libs/log/ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: libs/log/src/windows/simple_event_log.h at line 4
- License text:
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- libs/log/src/windows/simple_event_log.h [3:5]
-
-KEEP BSL-1.0 047703a180d1874c006c6f9eec627f0d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/logic/tribool.hpp at line 5, boost/logic/tribool_fwd.hpp at line 5, boost/logic/tribool_io.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/logic/tribool.hpp [3:6]
- boost/logic/tribool_fwd.hpp [3:6]
- boost/logic/tribool_io.hpp [3:6]
-
-KEEP BSL-1.0 0498682e5e2a8a1b73b9fef23aa5669e
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/times2_iterator.hpp at line 6
- License text:
- // Copyright 2006 Eric Niebler. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/accumulators/statistics/times2_iterator.hpp [4:6]
-
-KEEP BSL-1.0 05954ae47dedb48ccaf95b3af88bc2aa
-BELONGS libs/serialization/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/utf8_codecvt_facet.ipp at line 7, boost/graph/accounting.hpp at line 4, boost/graph/detail/labeled_graph_traits.hpp at line 4, boost/graph/dimacs.hpp at line 4, boost/graph/distributed/adjacency_list.hpp at line 5, boost/graph/distributed/adjlist/handlers.hpp at line 4, boost/graph/distributed/adjlist/initialize.hpp at line 4, boost/graph/distributed/adjlist/redistribute.hpp at line 4, boost/graph/distributed/boman_et_al_graph_coloring.hpp at line 4, boost/graph/distributed/breadth_first_search.hpp at line 4, boost/graph/distributed/compressed_sparse_row_graph.hpp at line 4, boost/graph/distributed/concepts.hpp at line 4, boost/graph/distributed/connected_components.hpp at line 4, boost/graph/distributed/connected_components_parallel_search.hpp at line 4, boost/graph/distributed/crauser_et_al_shortest_paths.hpp at line 4, boost/graph/distributed/dehne_gotz_min_spanning_tree.hpp at line 4, boost/graph/distributed/delta_stepping_shortest_paths.hpp at line 4, boost/graph/distributed/depth_first_search.hpp at line 4, boost/graph/distributed/detail/dijkstra_shortest_paths.hpp at line 4, boost/graph/distributed/detail/filtered_queue.hpp at line 4, boost/graph/distributed/detail/mpi_process_group.ipp at line 8, boost/graph/distributed/detail/queue.ipp at line 4, boost/graph/distributed/detail/remote_update_set.hpp at line 4, boost/graph/distributed/detail/tag_allocator.hpp at line 6, boost/graph/distributed/dijkstra_shortest_paths.hpp at line 4, boost/graph/distributed/distributed_graph_utility.hpp at line 3, boost/graph/distributed/eager_dijkstra_shortest_paths.hpp at line 4, boost/graph/distributed/filtered_graph.hpp at line 4, boost/graph/distributed/fruchterman_reingold.hpp at line 4, boost/graph/distributed/graphviz.hpp at line 4, boost/graph/distributed/hohberg_biconnected_components.hpp at line 4, boost/graph/distributed/local_subgraph.hpp at line 4, boost/graph/distributed/mpi_process_group.hpp at line 6, boost/graph/distributed/named_graph.hpp at line 5, boost/graph/distributed/one_bit_color_map.hpp at line 4, boost/graph/distributed/page_rank.hpp at line 5, boost/graph/distributed/queue.hpp at line 4, boost/graph/distributed/reverse_graph.hpp at line 4, boost/graph/distributed/rmat_graph_generator.hpp at line 4, boost/graph/distributed/selector.hpp at line 4, boost/graph/distributed/st_connected.hpp at line 4, boost/graph/distributed/strong_components.hpp at line 4, boost/graph/distributed/two_bit_color_map.hpp at line 4, boost/graph/distributed/unsafe_serialize.hpp at line 4, boost/graph/distributed/vertex_list_adaptor.hpp at line 4, boost/graph/edmunds_karp_max_flow.hpp at line 4, boost/graph/graph_mutability_traits.hpp at line 4, boost/graph/graph_stats.hpp at line 4, boost/graph/graphml.hpp at line 5, boost/graph/howard_cycle_ratio.hpp at line 4, boost/graph/labeled_graph.hpp at line 4, boost/graph/mesh_graph_generator.hpp at line 4, boost/graph/metis.hpp at line 4, boost/graph/overloading.hpp at line 4, boost/graph/parallel/algorithm.hpp at line 4, boost/graph/parallel/basic_reduce.hpp at line 4, boost/graph/parallel/container_traits.hpp at line 4, boost/graph/parallel/detail/inplace_all_to_all.hpp at line 4, boost/graph/parallel/distribution.hpp at line 4, boost/graph/parallel/process_group.hpp at line 4, boost/graph/parallel/properties.hpp at line 4, boost/graph/parallel/simple_trigger.hpp at line 4, boost/graph/point_traits.hpp at line 4, boost/graph/rmat_graph_generator.hpp at line 4, boost/graph/ssca_graph_generator.hpp at line 4, boost/graph/st_connected.hpp at line 4, boost/graph/use_mpi.hpp at line 4, boost/graph/vertex_and_edge_range.hpp at line 4, boost/mpi.hpp at line 4, boost/mpi/allocator.hpp at line 4, boost/mpi/collectives.hpp at line 4, boost/mpi/collectives/all_gather.hpp at line 4, boost/mpi/collectives/all_gatherv.hpp at line 4, boost/mpi/collectives/all_reduce.hpp at line 5, boost/mpi/collectives/all_to_all.hpp at line 4, boost/mpi/collectives/broadcast.hpp at line 4, boost/mpi/collectives/gather.hpp at line 4, boost/mpi/collectives/gatherv.hpp at line 4, boost/mpi/collectives/reduce.hpp at line 5, boost/mpi/collectives/scan.hpp at line 5, boost/mpi/collectives/scatter.hpp at line 4, boost/mpi/collectives/scatterv.hpp at line 4, boost/mpi/collectives_fwd.hpp at line 4, boost/mpi/communicator.hpp at line 5, boost/mpi/config.hpp at line 4, boost/mpi/datatype.hpp at line 6, boost/mpi/datatype_fwd.hpp at line 4, boost/mpi/detail/binary_buffer_iprimitive.hpp at line 4, boost/mpi/detail/binary_buffer_oprimitive.hpp at line 4, boost/mpi/detail/broadcast_sc.hpp at line 4, boost/mpi/detail/communicator_sc.hpp at line 4, boost/mpi/detail/computation_tree.hpp at line 4, boost/mpi/detail/content_oarchive.hpp at line 4, boost/mpi/detail/forward_iprimitive.hpp at line 4, boost/mpi/detail/forward_oprimitive.hpp at line 4, boost/mpi/detail/forward_skeleton_iarchive.hpp at line 4, boost/mpi/detail/forward_skeleton_oarchive.hpp at line 4, boost/mpi/detail/ignore_iprimitive.hpp at line 4, boost/mpi/detail/ignore_oprimitive.hpp at line 4, boost/mpi/detail/ignore_skeleton_oarchive.hpp at line 4, boost/mpi/detail/mpi_datatype_cache.hpp at line 4, boost/mpi/detail/mpi_datatype_oarchive.hpp at line 4, boost/mpi/detail/mpi_datatype_primitive.hpp at line 4, boost/mpi/detail/packed_iprimitive.hpp at line 4, boost/mpi/detail/packed_oprimitive.hpp at line 4, boost/mpi/detail/point_to_point.hpp at line 4, boost/mpi/detail/text_skeleton_oarchive.hpp at line 4, boost/mpi/environment.hpp at line 4, boost/mpi/exception.hpp at line 4, boost/mpi/graph_communicator.hpp at line 7, boost/mpi/group.hpp at line 7, boost/mpi/inplace.hpp at line 4, boost/mpi/intercommunicator.hpp at line 7, boost/mpi/nonblocking.hpp at line 4, boost/mpi/operations.hpp at line 5, boost/mpi/packed_iarchive.hpp at line 5, boost/mpi/packed_oarchive.hpp at line 5, boost/mpi/python.hpp at line 4, boost/mpi/python/config.hpp at line 4, boost/mpi/python/serialize.hpp at line 4, boost/mpi/python/skeleton_and_content.hpp at line 4, boost/mpi/request.hpp at line 4, boost/mpi/skeleton_and_content.hpp at line 5, boost/mpi/skeleton_and_content_fwd.hpp at line 4, boost/mpi/status.hpp at line 4, boost/mpi/timer.hpp at line 4, boost/pending/relaxed_heap.hpp at line 4, boost/phoenix/stl/algorithm/detail/begin.hpp at line 6, boost/phoenix/stl/algorithm/detail/end.hpp at line 6, boost/phoenix/stl/algorithm/detail/has_equal_range.hpp at line 5, boost/phoenix/stl/algorithm/detail/has_find.hpp at line 7, boost/phoenix/stl/algorithm/detail/has_lower_bound.hpp at line 5, boost/phoenix/stl/algorithm/detail/has_remove.hpp at line 5, boost/phoenix/stl/algorithm/detail/has_remove_if.hpp at line 5, boost/phoenix/stl/algorithm/detail/has_reverse.hpp at line 5, boost/phoenix/stl/algorithm/detail/has_sort.hpp at line 5, boost/phoenix/stl/algorithm/detail/has_unique.hpp at line 5, boost/phoenix/stl/algorithm/detail/has_upper_bound.hpp at line 5, boost/phoenix/stl/algorithm/detail/is_std_hash_map.hpp at line 5, boost/phoenix/stl/algorithm/detail/is_std_hash_set.hpp at line 5, boost/phoenix/stl/algorithm/detail/is_std_list.hpp at line 5, boost/phoenix/stl/algorithm/detail/is_std_map.hpp at line 5, boost/phoenix/stl/algorithm/detail/is_std_set.hpp at line 5, boost/phoenix/stl/algorithm/detail/is_unordered_set_or_map.hpp at line 7, boost/phoenix/stl/algorithm/querying.hpp at line 8, boost/phoenix/stl/algorithm/transformation.hpp at line 7, boost/property_map/dynamic_property_map.hpp at line 7, boost/property_map/parallel/basic_reduce.hpp at line 4, boost/property_map/parallel/caching_property_map.hpp at line 4, boost/property_map/parallel/distributed_property_map.hpp at line 4, boost/property_map/parallel/global_index_map.hpp at line 4, boost/property_map/parallel/impl/distributed_property_map.ipp at line 4, boost/property_map/parallel/local_property_map.hpp at line 4, boost/property_map/parallel/process_group.hpp at line 4, boost/property_map/parallel/simple_trigger.hpp at line 4, boost/property_map/parallel/unsafe_serialize.hpp at line 4, boost/serialization/array.hpp at line 6, boost/serialization/array_optimization.hpp at line 6, boost/serialization/array_wrapper.hpp at line 6, boost/serialization/boost_array.hpp at line 6, boost/serialization/collection_size_type.hpp at line 6, boost/serialization/is_bitwise_serializable.hpp at line 4, boost/serialization/item_version_type.hpp at line 6, boost/serialization/optional.hpp at line 5, boost/serialization/scoped_ptr.hpp at line 10, boost/serialization/wrapper.hpp at line 6, libs/serialization/src/codecvt_null.cpp at line 7
- License text:
- // Use, modification and distribution is subject to the Boost Software
- // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/detail/utf8_codecvt_facet.ipp [6:8]
- boost/graph/accounting.hpp [3:5]
- boost/graph/detail/labeled_graph_traits.hpp [3:5]
- boost/graph/dimacs.hpp [3:5]
- boost/graph/distributed/adjacency_list.hpp [4:6]
- boost/graph/distributed/adjlist/handlers.hpp [3:5]
- boost/graph/distributed/adjlist/initialize.hpp [3:5]
- boost/graph/distributed/adjlist/redistribute.hpp [3:5]
- boost/graph/distributed/boman_et_al_graph_coloring.hpp [3:5]
- boost/graph/distributed/breadth_first_search.hpp [3:5]
- boost/graph/distributed/compressed_sparse_row_graph.hpp [3:5]
- boost/graph/distributed/concepts.hpp [3:5]
- boost/graph/distributed/connected_components.hpp [3:5]
- boost/graph/distributed/connected_components_parallel_search.hpp [3:5]
- boost/graph/distributed/crauser_et_al_shortest_paths.hpp [3:5]
- boost/graph/distributed/dehne_gotz_min_spanning_tree.hpp [3:5]
- boost/graph/distributed/delta_stepping_shortest_paths.hpp [3:5]
- boost/graph/distributed/depth_first_search.hpp [3:5]
- boost/graph/distributed/detail/dijkstra_shortest_paths.hpp [3:5]
- boost/graph/distributed/detail/filtered_queue.hpp [3:5]
- boost/graph/distributed/detail/mpi_process_group.ipp [7:9]
- boost/graph/distributed/detail/queue.ipp [3:5]
- boost/graph/distributed/detail/remote_update_set.hpp [3:5]
- boost/graph/distributed/detail/tag_allocator.hpp [5:7]
- boost/graph/distributed/dijkstra_shortest_paths.hpp [3:5]
- boost/graph/distributed/distributed_graph_utility.hpp [2:4]
- boost/graph/distributed/eager_dijkstra_shortest_paths.hpp [3:5]
- boost/graph/distributed/filtered_graph.hpp [3:5]
- boost/graph/distributed/fruchterman_reingold.hpp [3:5]
- boost/graph/distributed/graphviz.hpp [3:5]
- boost/graph/distributed/hohberg_biconnected_components.hpp [3:5]
- boost/graph/distributed/local_subgraph.hpp [3:5]
- boost/graph/distributed/mpi_process_group.hpp [5:7]
- boost/graph/distributed/named_graph.hpp [4:6]
- boost/graph/distributed/one_bit_color_map.hpp [3:5]
- boost/graph/distributed/page_rank.hpp [4:6]
- boost/graph/distributed/queue.hpp [3:5]
- boost/graph/distributed/reverse_graph.hpp [3:5]
- boost/graph/distributed/rmat_graph_generator.hpp [3:5]
- boost/graph/distributed/selector.hpp [3:5]
- boost/graph/distributed/st_connected.hpp [3:5]
- boost/graph/distributed/strong_components.hpp [3:5]
- boost/graph/distributed/two_bit_color_map.hpp [3:5]
- boost/graph/distributed/unsafe_serialize.hpp [3:5]
- boost/graph/distributed/vertex_list_adaptor.hpp [3:5]
- boost/graph/edmunds_karp_max_flow.hpp [3:5]
- boost/graph/graph_mutability_traits.hpp [3:5]
- boost/graph/graph_stats.hpp [3:5]
- boost/graph/graphml.hpp [4:6]
- boost/graph/howard_cycle_ratio.hpp [3:5]
- boost/graph/labeled_graph.hpp [3:5]
- boost/graph/mesh_graph_generator.hpp [3:5]
- boost/graph/metis.hpp [3:5]
- boost/graph/overloading.hpp [3:5]
- boost/graph/parallel/algorithm.hpp [3:5]
- boost/graph/parallel/basic_reduce.hpp [3:5]
- boost/graph/parallel/container_traits.hpp [3:5]
- boost/graph/parallel/detail/inplace_all_to_all.hpp [3:5]
- boost/graph/parallel/distribution.hpp [3:5]
- boost/graph/parallel/process_group.hpp [3:5]
- boost/graph/parallel/properties.hpp [3:5]
- boost/graph/parallel/simple_trigger.hpp [3:5]
- boost/graph/point_traits.hpp [3:5]
- boost/graph/rmat_graph_generator.hpp [3:5]
- boost/graph/ssca_graph_generator.hpp [3:5]
- boost/graph/st_connected.hpp [3:5]
- boost/graph/use_mpi.hpp [3:5]
- boost/graph/vertex_and_edge_range.hpp [3:5]
- boost/mpi.hpp [3:5]
- boost/mpi/allocator.hpp [3:5]
- boost/mpi/collectives.hpp [3:5]
- boost/mpi/collectives/all_gather.hpp [3:5]
- boost/mpi/collectives/all_gatherv.hpp [3:5]
- boost/mpi/collectives/all_reduce.hpp [4:6]
- boost/mpi/collectives/all_to_all.hpp [3:5]
- boost/mpi/collectives/broadcast.hpp [3:5]
- boost/mpi/collectives/gather.hpp [3:5]
- boost/mpi/collectives/gatherv.hpp [3:5]
- boost/mpi/collectives/reduce.hpp [4:6]
- boost/mpi/collectives/scan.hpp [4:6]
- boost/mpi/collectives/scatter.hpp [3:5]
- boost/mpi/collectives/scatterv.hpp [3:5]
- boost/mpi/collectives_fwd.hpp [3:5]
- boost/mpi/communicator.hpp [4:6]
- boost/mpi/config.hpp [3:5]
- boost/mpi/datatype.hpp [5:7]
- boost/mpi/datatype_fwd.hpp [3:5]
- boost/mpi/detail/binary_buffer_iprimitive.hpp [3:5]
- boost/mpi/detail/binary_buffer_oprimitive.hpp [3:5]
- boost/mpi/detail/broadcast_sc.hpp [3:5]
- boost/mpi/detail/communicator_sc.hpp [3:5]
- boost/mpi/detail/computation_tree.hpp [3:5]
- boost/mpi/detail/content_oarchive.hpp [3:5]
- boost/mpi/detail/forward_iprimitive.hpp [3:5]
- boost/mpi/detail/forward_oprimitive.hpp [3:5]
- boost/mpi/detail/forward_skeleton_iarchive.hpp [3:5]
- boost/mpi/detail/forward_skeleton_oarchive.hpp [3:5]
- boost/mpi/detail/ignore_iprimitive.hpp [3:5]
- boost/mpi/detail/ignore_oprimitive.hpp [3:5]
- boost/mpi/detail/ignore_skeleton_oarchive.hpp [3:5]
- boost/mpi/detail/mpi_datatype_cache.hpp [3:5]
- boost/mpi/detail/mpi_datatype_oarchive.hpp [3:5]
- boost/mpi/detail/mpi_datatype_primitive.hpp [3:5]
- boost/mpi/detail/packed_iprimitive.hpp [3:5]
- boost/mpi/detail/packed_oprimitive.hpp [3:5]
- boost/mpi/detail/point_to_point.hpp [3:5]
- boost/mpi/detail/text_skeleton_oarchive.hpp [3:5]
- boost/mpi/environment.hpp [3:5]
- boost/mpi/exception.hpp [3:5]
- boost/mpi/graph_communicator.hpp [6:8]
- boost/mpi/group.hpp [6:8]
- boost/mpi/inplace.hpp [3:5]
- boost/mpi/intercommunicator.hpp [6:8]
- boost/mpi/nonblocking.hpp [3:5]
- boost/mpi/operations.hpp [4:6]
- boost/mpi/packed_iarchive.hpp [4:6]
- boost/mpi/packed_oarchive.hpp [4:6]
- boost/mpi/python.hpp [3:5]
- boost/mpi/python/config.hpp [3:5]
- boost/mpi/python/serialize.hpp [3:5]
- boost/mpi/python/skeleton_and_content.hpp [3:5]
- boost/mpi/request.hpp [3:5]
- boost/mpi/skeleton_and_content.hpp [4:6]
- boost/mpi/skeleton_and_content_fwd.hpp [3:5]
- boost/mpi/status.hpp [3:5]
- boost/mpi/timer.hpp [3:5]
- boost/pending/relaxed_heap.hpp [3:5]
- boost/phoenix/stl/algorithm/detail/begin.hpp [5:7]
- boost/phoenix/stl/algorithm/detail/end.hpp [5:7]
- boost/phoenix/stl/algorithm/detail/has_equal_range.hpp [4:6]
- boost/phoenix/stl/algorithm/detail/has_find.hpp [6:8]
- boost/phoenix/stl/algorithm/detail/has_lower_bound.hpp [4:6]
- boost/phoenix/stl/algorithm/detail/has_remove.hpp [4:6]
- boost/phoenix/stl/algorithm/detail/has_remove_if.hpp [4:6]
- boost/phoenix/stl/algorithm/detail/has_reverse.hpp [4:6]
- boost/phoenix/stl/algorithm/detail/has_sort.hpp [4:6]
- boost/phoenix/stl/algorithm/detail/has_unique.hpp [4:6]
- boost/phoenix/stl/algorithm/detail/has_upper_bound.hpp [4:6]
- boost/phoenix/stl/algorithm/detail/is_std_hash_map.hpp [4:6]
- boost/phoenix/stl/algorithm/detail/is_std_hash_set.hpp [4:6]
- boost/phoenix/stl/algorithm/detail/is_std_list.hpp [4:6]
- boost/phoenix/stl/algorithm/detail/is_std_map.hpp [4:6]
- boost/phoenix/stl/algorithm/detail/is_std_set.hpp [4:6]
- boost/phoenix/stl/algorithm/detail/is_unordered_set_or_map.hpp [6:8]
- boost/phoenix/stl/algorithm/querying.hpp [7:9]
- boost/phoenix/stl/algorithm/transformation.hpp [6:8]
- boost/property_map/dynamic_property_map.hpp [6:8]
- boost/property_map/parallel/basic_reduce.hpp [3:5]
- boost/property_map/parallel/caching_property_map.hpp [3:5]
- boost/property_map/parallel/distributed_property_map.hpp [3:5]
- boost/property_map/parallel/global_index_map.hpp [3:5]
- boost/property_map/parallel/impl/distributed_property_map.ipp [3:5]
- boost/property_map/parallel/local_property_map.hpp [3:5]
- boost/property_map/parallel/process_group.hpp [3:5]
- boost/property_map/parallel/simple_trigger.hpp [3:5]
- boost/property_map/parallel/unsafe_serialize.hpp [3:5]
- boost/serialization/array.hpp [5:7]
- boost/serialization/array_optimization.hpp [5:7]
- boost/serialization/array_wrapper.hpp [5:7]
- boost/serialization/boost_array.hpp [5:7]
- boost/serialization/collection_size_type.hpp [5:7]
- boost/serialization/is_bitwise_serializable.hpp [3:5]
- boost/serialization/item_version_type.hpp [5:7]
- boost/serialization/optional.hpp [4:6]
- boost/serialization/scoped_ptr.hpp [9:11]
- boost/serialization/wrapper.hpp [5:7]
- libs/serialization/src/codecvt_null.cpp [6:8]
-
-KEEP BSL-1.0 05cc48a3f35f6c4cd26b75b91f9d84bb
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/date_time/compiler_config.hpp at line 6, boost/date_time/local_time/posix_time_zone.hpp at line 6, boost/date_time/string_convert.hpp at line 6
- License text:
- * Subject to the Boost Software License, Version 1.0. (See accompanying
- * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 78.12
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/date_time/compiler_config.hpp [5:6]
- boost/date_time/local_time/posix_time_zone.hpp [5:6]
- boost/date_time/string_convert.hpp [5:6]
-
-KEEP BSL-1.0 06e856a793d5d61c7219b6427a238daf
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/function/function_base.hpp at line 6, boost/function/function_template.hpp at line 6
- License text:
- // Use, modification and distribution is subject to the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/function/function_base.hpp [5:7]
- boost/function/function_template.hpp [5:7]
-
-SKIP MPL-1.1 0719c83d37f34864e67338e4334355cc
-BELONGS ya.make
- License text:
- //! Lift a MPL-style metafunction to a Metafunction.
- Scancode info:
- Original SPDX id: MPL-1.1
- Score : 80.00
- Match type : REFERENCE
- Links : http://www.mozilla.com/MPL/1.1/index.html, http://www.mozilla.org/MPL/MPL-1.1.html, https://spdx.org/licenses/MPL-1.1
- Files with this license:
- boost/hana/fwd/type.hpp [419:419]
-
-KEEP BSL-1.0 07d4ea27a275fc0b7043690f14bf03f1
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/detail/file_wrapper.hpp at line 5, boost/interprocess/detail/managed_open_or_create_impl.hpp at line 5, boost/interprocess/detail/ptime_wrk.hpp at line 5, boost/interprocess/smart_ptr/detail/shared_count.hpp at line 9, boost/interprocess/smart_ptr/enable_shared_from_this.hpp at line 8, boost/interprocess/smart_ptr/intrusive_ptr.hpp at line 8, boost/interprocess/smart_ptr/scoped_ptr.hpp at line 9
- License text:
- // (C) Copyright Ion Gaztanaga 2006-2012. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/interprocess/detail/file_wrapper.hpp [3:5]
- boost/interprocess/detail/managed_open_or_create_impl.hpp [3:5]
- boost/interprocess/detail/ptime_wrk.hpp [3:5]
- boost/interprocess/smart_ptr/detail/shared_count.hpp [7:9]
- boost/interprocess/smart_ptr/enable_shared_from_this.hpp [6:8]
- boost/interprocess/smart_ptr/intrusive_ptr.hpp [6:8]
- boost/interprocess/smart_ptr/scoped_ptr.hpp [7:9]
-
-KEEP BSL-1.0 0974809ca97a6ae3d4791e1b39276ddd
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/regex/v4/basic_regex_parser.hpp at line 8, boost/regex/v4/regex_token_iterator.hpp at line 8
- License text:
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/regex/v4/basic_regex_parser.hpp [6:8]
- boost/regex/v4/regex_token_iterator.hpp [6:8]
-
-KEEP BSL-1.0 09c716a03fbe135e9481759f58d4c044
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signals2.hpp at line 7, boost/signals2/deconstruct_ptr.hpp at line 12, boost/signals2/detail/preprocessed_arg_type_template.hpp at line 5, boost/signals2/detail/replace_slot_function.hpp at line 5, boost/signals2/detail/signal_template.hpp at line 11, boost/signals2/detail/signals_common_macros.hpp at line 8, boost/signals2/detail/slot_call_iterator.hpp at line 7, boost/signals2/detail/slot_groups.hpp at line 6, boost/signals2/detail/variadic_arg_type.hpp at line 5, boost/signals2/detail/variadic_slot_invoker.hpp at line 10, boost/signals2/expired_slot.hpp at line 6, boost/signals2/postconstructible.hpp at line 12, boost/signals2/preprocessed_signal.hpp at line 10, boost/signals2/shared_connection_block.hpp at line 6, boost/signals2/signal.hpp at line 7, boost/signals2/signal_base.hpp at line 6, boost/signals2/signal_type.hpp at line 12, boost/signals2/slot.hpp at line 7, boost/signals2/variadic_signal.hpp at line 11
- License text:
- // Use, modification and
- // distribution is subject to the Boost Software License, Version
- // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/signals2.hpp [5:8]
- boost/signals2/deconstruct_ptr.hpp [10:13]
- boost/signals2/detail/preprocessed_arg_type_template.hpp [3:6]
- boost/signals2/detail/replace_slot_function.hpp [3:6]
- boost/signals2/detail/signal_template.hpp [9:12]
- boost/signals2/detail/signals_common_macros.hpp [6:9]
- boost/signals2/detail/slot_call_iterator.hpp [5:8]
- boost/signals2/detail/slot_groups.hpp [4:7]
- boost/signals2/detail/variadic_arg_type.hpp [3:6]
- boost/signals2/detail/variadic_slot_invoker.hpp [8:11]
- boost/signals2/expired_slot.hpp [4:7]
- boost/signals2/postconstructible.hpp [10:13]
- boost/signals2/preprocessed_signal.hpp [8:11]
- boost/signals2/shared_connection_block.hpp [4:7]
- boost/signals2/signal.hpp [5:8]
- boost/signals2/signal_base.hpp [4:7]
- boost/signals2/signal_type.hpp [10:13]
- boost/signals2/slot.hpp [5:8]
- boost/signals2/variadic_signal.hpp [9:12]
-
-KEEP BSL-1.0 09eeed6bf2283f582f9d6171c7544ac2
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/parallel/detail/property_holders.hpp at line 4, boost/graph/parallel/detail/untracked_pair.hpp at line 4, boost/property_map/parallel/detail/untracked_pair.hpp at line 4
- License text:
- // Use, modification and distribution is subject to the Boost Software
- // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 71.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/graph/parallel/detail/property_holders.hpp [3:4]
- boost/graph/parallel/detail/untracked_pair.hpp [3:4]
- boost/property_map/parallel/detail/untracked_pair.hpp [3:4]
-
-KEEP BSL-1.0 0b1ca66f26dbf14fa8ecd8f8a2eced55
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/static_vector.hpp at line 8, boost/core/ignore_unused.hpp at line 4, boost/geometry.hpp at line 11, boost/geometry/algorithms/append.hpp at line 17, boost/geometry/algorithms/area.hpp at line 16, boost/geometry/algorithms/assign.hpp at line 12, boost/geometry/algorithms/buffer.hpp at line 15, boost/geometry/algorithms/centroid.hpp at line 18, boost/geometry/algorithms/clear.hpp at line 11, boost/geometry/algorithms/comparable_distance.hpp at line 16, boost/geometry/algorithms/convert.hpp at line 16, boost/geometry/algorithms/convex_hull.hpp at line 17, boost/geometry/algorithms/correct.hpp at line 16, boost/geometry/algorithms/correct_closure.hpp at line 6, boost/geometry/algorithms/covered_by.hpp at line 16, boost/geometry/algorithms/crosses.hpp at line 17, boost/geometry/algorithms/detail/as_range.hpp at line 11, boost/geometry/algorithms/detail/assign_box_corners.hpp at line 11, boost/geometry/algorithms/detail/assign_indexed_point.hpp at line 11, boost/geometry/algorithms/detail/assign_values.hpp at line 11, boost/geometry/algorithms/detail/azimuth.hpp at line 12, boost/geometry/algorithms/detail/buffer/buffer_inserter.hpp at line 10, boost/geometry/algorithms/detail/buffer/buffer_policies.hpp at line 10, boost/geometry/algorithms/detail/buffer/buffered_piece_collection.hpp at line 11, boost/geometry/algorithms/detail/buffer/buffered_ring.hpp at line 6, boost/geometry/algorithms/detail/buffer/get_piece_turns.hpp at line 11, boost/geometry/algorithms/detail/buffer/line_line_intersection.hpp at line 6, boost/geometry/algorithms/detail/buffer/parallel_continue.hpp at line 6, boost/geometry/algorithms/detail/buffer/turn_in_original_visitor.hpp at line 10, boost/geometry/algorithms/detail/buffer/turn_in_piece_visitor.hpp at line 11, boost/geometry/algorithms/detail/calculate_null.hpp at line 11, boost/geometry/algorithms/detail/calculate_sum.hpp at line 16, boost/geometry/algorithms/detail/centroid/translating_transformer.hpp at line 14, boost/geometry/algorithms/detail/comparable_distance/implementation.hpp at line 16, boost/geometry/algorithms/detail/comparable_distance/interface.hpp at line 16, boost/geometry/algorithms/detail/convert_indexed_to_indexed.hpp at line 11, boost/geometry/algorithms/detail/convert_point_to_point.hpp at line 11, boost/geometry/algorithms/detail/counting.hpp at line 17, boost/geometry/algorithms/detail/course.hpp at line 11, boost/geometry/algorithms/detail/covered_by/implementation.hpp at line 16, boost/geometry/algorithms/detail/covered_by/interface.hpp at line 16, boost/geometry/algorithms/detail/direction_code.hpp at line 12, boost/geometry/algorithms/detail/disjoint/areal_areal.hpp at line 18, boost/geometry/algorithms/detail/disjoint/box_box.hpp at line 18, boost/geometry/algorithms/detail/disjoint/implementation.hpp at line 18, boost/geometry/algorithms/detail/disjoint/interface.hpp at line 18, boost/geometry/algorithms/detail/disjoint/linear_areal.hpp at line 18, boost/geometry/algorithms/detail/disjoint/linear_linear.hpp at line 18, boost/geometry/algorithms/detail/disjoint/linear_segment_or_box.hpp at line 18, boost/geometry/algorithms/detail/disjoint/point_box.hpp at line 18, boost/geometry/algorithms/detail/disjoint/point_geometry.hpp at line 18, boost/geometry/algorithms/detail/disjoint/point_point.hpp at line 18, boost/geometry/algorithms/detail/disjoint/segment_box.hpp at line 19, boost/geometry/algorithms/detail/distance/backward_compatibility.hpp at line 17, boost/geometry/algorithms/detail/distance/default_strategies.hpp at line 17, boost/geometry/algorithms/detail/distance/implementation.hpp at line 17, boost/geometry/algorithms/detail/distance/interface.hpp at line 18, boost/geometry/algorithms/detail/distance/point_to_geometry.hpp at line 17, boost/geometry/algorithms/detail/equals/collect_vectors.hpp at line 17, boost/geometry/algorithms/detail/equals/implementation.hpp at line 18, boost/geometry/algorithms/detail/equals/interface.hpp at line 18, boost/geometry/algorithms/detail/equals/point_point.hpp at line 18, boost/geometry/algorithms/detail/extreme_points.hpp at line 14, boost/geometry/algorithms/detail/for_each_range.hpp at line 11, boost/geometry/algorithms/detail/get_left_turns.hpp at line 11, boost/geometry/algorithms/detail/get_max_size.hpp at line 9, boost/geometry/algorithms/detail/has_self_intersections.hpp at line 11, boost/geometry/algorithms/detail/interior_iterator.hpp at line 6, boost/geometry/algorithms/detail/intersection/box_box.hpp at line 11, boost/geometry/algorithms/detail/intersection/implementation.hpp at line 11, boost/geometry/algorithms/detail/intersection/interface.hpp at line 11, boost/geometry/algorithms/detail/intersection/multi.hpp at line 11, boost/geometry/algorithms/detail/intersects/implementation.hpp at line 17, boost/geometry/algorithms/detail/intersects/interface.hpp at line 17, boost/geometry/algorithms/detail/multi_modify.hpp at line 15, boost/geometry/algorithms/detail/multi_modify_with_predicate.hpp at line 11, boost/geometry/algorithms/detail/multi_sum.hpp at line 11, boost/geometry/algorithms/detail/not.hpp at line 17, boost/geometry/algorithms/detail/occupation_info.hpp at line 11, boost/geometry/algorithms/detail/overlaps/implementation.hpp at line 16, boost/geometry/algorithms/detail/overlaps/interface.hpp at line 16, boost/geometry/algorithms/detail/overlay/add_rings.hpp at line 12, boost/geometry/algorithms/detail/overlay/append_no_duplicates.hpp at line 6, boost/geometry/algorithms/detail/overlay/append_no_dups_or_spikes.hpp at line 11, boost/geometry/algorithms/detail/overlay/assign_parents.hpp at line 11, boost/geometry/algorithms/detail/overlay/backtrack_check_si.hpp at line 10, boost/geometry/algorithms/detail/overlay/check_enrich.hpp at line 6, boost/geometry/algorithms/detail/overlay/clip_linestring.hpp at line 11, boost/geometry/algorithms/detail/overlay/cluster_info.hpp at line 6, boost/geometry/algorithms/detail/overlay/convert_ring.hpp at line 6, boost/geometry/algorithms/detail/overlay/copy_segment_point.hpp at line 6, boost/geometry/algorithms/detail/overlay/copy_segments.hpp at line 12, boost/geometry/algorithms/detail/overlay/debug_turn_info.hpp at line 6, boost/geometry/algorithms/detail/overlay/do_reverse.hpp at line 7, boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp at line 12, boost/geometry/algorithms/detail/overlay/enrichment_info.hpp at line 6, boost/geometry/algorithms/detail/overlay/follow.hpp at line 12, boost/geometry/algorithms/detail/overlay/get_intersection_points.hpp at line 11, boost/geometry/algorithms/detail/overlay/get_relative_order.hpp at line 11, boost/geometry/algorithms/detail/overlay/get_ring.hpp at line 6, boost/geometry/algorithms/detail/overlay/get_turn_info.hpp at line 12, boost/geometry/algorithms/detail/overlay/get_turn_info_for_endpoint.hpp at line 11, boost/geometry/algorithms/detail/overlay/get_turn_info_helpers.hpp at line 11, boost/geometry/algorithms/detail/overlay/get_turn_info_la.hpp at line 12, boost/geometry/algorithms/detail/overlay/get_turn_info_ll.hpp at line 12, boost/geometry/algorithms/detail/overlay/get_turns.hpp at line 12, boost/geometry/algorithms/detail/overlay/handle_colocations.hpp at line 12, boost/geometry/algorithms/detail/overlay/handle_self_turns.hpp at line 7, boost/geometry/algorithms/detail/overlay/intersection_box_box.hpp at line 11, boost/geometry/algorithms/detail/overlay/intersection_insert.hpp at line 12, boost/geometry/algorithms/detail/overlay/is_self_turn.hpp at line 7, boost/geometry/algorithms/detail/overlay/less_by_segment_ratio.hpp at line 11, boost/geometry/algorithms/detail/overlay/needs_self_turns.hpp at line 6, boost/geometry/algorithms/detail/overlay/overlay.hpp at line 13, boost/geometry/algorithms/detail/overlay/overlay_type.hpp at line 6, boost/geometry/algorithms/detail/overlay/range_in_geometry.hpp at line 7, boost/geometry/algorithms/detail/overlay/ring_properties.hpp at line 10, boost/geometry/algorithms/detail/overlay/segment_identifier.hpp at line 6, boost/geometry/algorithms/detail/overlay/select_rings.hpp at line 11, boost/geometry/algorithms/detail/overlay/self_turn_points.hpp at line 12, boost/geometry/algorithms/detail/overlay/sort_by_side.hpp at line 12, boost/geometry/algorithms/detail/overlay/stream_info.hpp at line 6, boost/geometry/algorithms/detail/overlay/traversal.hpp at line 11, boost/geometry/algorithms/detail/overlay/traversal_info.hpp at line 6, boost/geometry/algorithms/detail/overlay/traversal_ring_creator.hpp at line 10, boost/geometry/algorithms/detail/overlay/traversal_switch_detector.hpp at line 6, boost/geometry/algorithms/detail/overlay/traverse.hpp at line 6, boost/geometry/algorithms/detail/overlay/turn_info.hpp at line 6, boost/geometry/algorithms/detail/overlay/visit_info.hpp at line 6, boost/geometry/algorithms/detail/partition.hpp at line 13, boost/geometry/algorithms/detail/point_is_spike_or_equal.hpp at line 15, boost/geometry/algorithms/detail/recalculate.hpp at line 9, boost/geometry/algorithms/detail/relate/areal_areal.hpp at line 11, boost/geometry/algorithms/detail/relate/boundary_checker.hpp at line 6, boost/geometry/algorithms/detail/relate/de9im.hpp at line 11, boost/geometry/algorithms/detail/relate/follow_helpers.hpp at line 9, boost/geometry/algorithms/detail/relate/implementation.hpp at line 11, boost/geometry/algorithms/detail/relate/interface.hpp at line 11, boost/geometry/algorithms/detail/relate/linear_areal.hpp at line 11, boost/geometry/algorithms/detail/relate/linear_linear.hpp at line 11, boost/geometry/algorithms/detail/relate/multi_point_geometry.hpp at line 8, boost/geometry/algorithms/detail/relate/point_geometry.hpp at line 11, boost/geometry/algorithms/detail/relate/point_point.hpp at line 11, boost/geometry/algorithms/detail/relate/relate_impl.hpp at line 11, boost/geometry/algorithms/detail/relate/result.hpp at line 12, boost/geometry/algorithms/detail/relate/topology_check.hpp at line 8, boost/geometry/algorithms/detail/relate/turns.hpp at line 12, boost/geometry/algorithms/detail/relation/implementation.hpp at line 8, boost/geometry/algorithms/detail/relation/interface.hpp at line 11, boost/geometry/algorithms/detail/ring_identifier.hpp at line 6, boost/geometry/algorithms/detail/sections/range_by_section.hpp at line 14, boost/geometry/algorithms/detail/sections/section_box_policies.hpp at line 6, boost/geometry/algorithms/detail/sections/section_functions.hpp at line 11, boost/geometry/algorithms/detail/sections/sectionalize.hpp at line 18, boost/geometry/algorithms/detail/signed_size_type.hpp at line 8, boost/geometry/algorithms/detail/single_geometry.hpp at line 9, boost/geometry/algorithms/detail/sub_range.hpp at line 9, boost/geometry/algorithms/detail/throw_on_empty_input.hpp at line 14, boost/geometry/algorithms/detail/touches/implementation.hpp at line 17, boost/geometry/algorithms/detail/touches/interface.hpp at line 17, boost/geometry/algorithms/detail/within/implementation.hpp at line 16, boost/geometry/algorithms/detail/within/interface.hpp at line 16, boost/geometry/algorithms/detail/within/multi_point.hpp at line 8, boost/geometry/algorithms/detail/within/point_in_geometry.hpp at line 17, boost/geometry/algorithms/detail/within/within_no_turns.hpp at line 14, boost/geometry/algorithms/difference.hpp at line 11, boost/geometry/algorithms/disjoint.hpp at line 18, boost/geometry/algorithms/dispatch/disjoint.hpp at line 18, boost/geometry/algorithms/dispatch/distance.hpp at line 17, boost/geometry/algorithms/distance.hpp at line 17, boost/geometry/algorithms/equals.hpp at line 18, boost/geometry/algorithms/for_each.hpp at line 17, boost/geometry/algorithms/intersection.hpp at line 11, boost/geometry/algorithms/intersects.hpp at line 17, boost/geometry/algorithms/is_convex.hpp at line 11, boost/geometry/algorithms/length.hpp at line 17, boost/geometry/algorithms/make.hpp at line 11, boost/geometry/algorithms/not_implemented.hpp at line 16, boost/geometry/algorithms/num_geometries.hpp at line 16, boost/geometry/algorithms/num_interior_rings.hpp at line 17, boost/geometry/algorithms/num_points.hpp at line 17, boost/geometry/algorithms/overlaps.hpp at line 16, boost/geometry/algorithms/perimeter.hpp at line 16, boost/geometry/algorithms/point_on_surface.hpp at line 14, boost/geometry/algorithms/relate.hpp at line 8, boost/geometry/algorithms/relation.hpp at line 8, boost/geometry/algorithms/remove_spikes.hpp at line 14, boost/geometry/algorithms/reverse.hpp at line 12, boost/geometry/algorithms/simplify.hpp at line 11, boost/geometry/algorithms/sym_difference.hpp at line 12, boost/geometry/algorithms/touches.hpp at line 17, boost/geometry/algorithms/transform.hpp at line 12, boost/geometry/algorithms/union.hpp at line 12, boost/geometry/algorithms/unique.hpp at line 12, boost/geometry/algorithms/within.hpp at line 16, boost/geometry/arithmetic/arithmetic.hpp at line 11, boost/geometry/arithmetic/cross_product.hpp at line 12, boost/geometry/arithmetic/determinant.hpp at line 8, boost/geometry/arithmetic/dot_product.hpp at line 11, boost/geometry/arithmetic/normalize.hpp at line 7, boost/geometry/core/access.hpp at line 11, boost/geometry/core/assert.hpp at line 11, boost/geometry/core/closure.hpp at line 16, boost/geometry/core/coordinate_dimension.hpp at line 11, boost/geometry/core/coordinate_system.hpp at line 11, boost/geometry/core/coordinate_type.hpp at line 11, boost/geometry/core/cs.hpp at line 16, boost/geometry/core/exception.hpp at line 16, boost/geometry/core/exterior_ring.hpp at line 11, boost/geometry/core/geometry_id.hpp at line 11, boost/geometry/core/interior_rings.hpp at line 11, boost/geometry/core/interior_type.hpp at line 11, boost/geometry/core/is_areal.hpp at line 11, boost/geometry/core/mutable_range.hpp at line 11, boost/geometry/core/point_order.hpp at line 16, boost/geometry/core/point_type.hpp at line 11, boost/geometry/core/radian_access.hpp at line 16, boost/geometry/core/radius.hpp at line 16, boost/geometry/core/reverse_dispatch.hpp at line 11, boost/geometry/core/ring_type.hpp at line 16, boost/geometry/core/tag.hpp at line 11, boost/geometry/core/tag_cast.hpp at line 11, boost/geometry/core/tags.hpp at line 16, boost/geometry/core/topological_dimension.hpp at line 11, boost/geometry/formulas/andoyer_inverse.hpp at line 10, boost/geometry/formulas/area_formulas.hpp at line 9, boost/geometry/formulas/authalic_radius_sqr.hpp at line 8, boost/geometry/formulas/differential_quantities.hpp at line 8, boost/geometry/formulas/eccentricity_sqr.hpp at line 8, boost/geometry/formulas/elliptic_arc_length.hpp at line 8, boost/geometry/formulas/flattening.hpp at line 8, boost/geometry/formulas/geographic.hpp at line 7, boost/geometry/formulas/gnomonic_intersection.hpp at line 8, boost/geometry/formulas/gnomonic_spheroid.hpp at line 8, boost/geometry/formulas/mean_radius.hpp at line 8, boost/geometry/formulas/result_direct.hpp at line 8, boost/geometry/formulas/result_inverse.hpp at line 8, boost/geometry/formulas/sjoberg_intersection.hpp at line 8, boost/geometry/formulas/spherical.hpp at line 8, boost/geometry/formulas/thomas_direct.hpp at line 8, boost/geometry/formulas/thomas_inverse.hpp at line 9, boost/geometry/formulas/unit_spheroid.hpp at line 8, boost/geometry/formulas/vertex_latitude.hpp at line 9, boost/geometry/formulas/vertex_longitude.hpp at line 9, boost/geometry/formulas/vincenty_direct.hpp at line 11, boost/geometry/formulas/vincenty_inverse.hpp at line 12, boost/geometry/geometries/adapted/boost_array.hpp at line 7, boost/geometry/geometries/adapted/boost_fusion.hpp at line 12, boost/geometry/geometries/adapted/boost_polygon.hpp at line 6, boost/geometry/geometries/adapted/boost_polygon/box.hpp at line 6, boost/geometry/geometries/adapted/boost_polygon/hole_iterator.hpp at line 6, boost/geometry/geometries/adapted/boost_polygon/holes_proxy.hpp at line 6, boost/geometry/geometries/adapted/boost_polygon/point.hpp at line 6, boost/geometry/geometries/adapted/boost_polygon/polygon.hpp at line 6, boost/geometry/geometries/adapted/boost_polygon/ring.hpp at line 6, boost/geometry/geometries/adapted/boost_polygon/ring_proxy.hpp at line 6, boost/geometry/geometries/adapted/boost_range/adjacent_filtered.hpp at line 6, boost/geometry/geometries/adapted/boost_range/filtered.hpp at line 6, boost/geometry/geometries/adapted/boost_range/reversed.hpp at line 6, boost/geometry/geometries/adapted/boost_range/sliced.hpp at line 6, boost/geometry/geometries/adapted/boost_range/strided.hpp at line 6, boost/geometry/geometries/adapted/boost_range/uniqued.hpp at line 6, boost/geometry/geometries/adapted/boost_tuple.hpp at line 11, boost/geometry/geometries/adapted/c_array.hpp at line 11, boost/geometry/geometries/adapted/std_array.hpp at line 8, boost/geometry/geometries/adapted/std_pair_as_segment.hpp at line 11, boost/geometry/geometries/box.hpp at line 11, boost/geometry/geometries/concepts/box_concept.hpp at line 11, boost/geometry/geometries/concepts/check.hpp at line 11, boost/geometry/geometries/concepts/linestring_concept.hpp at line 11, boost/geometry/geometries/concepts/multi_linestring_concept.hpp at line 11, boost/geometry/geometries/concepts/multi_point_concept.hpp at line 11, boost/geometry/geometries/concepts/multi_polygon_concept.hpp at line 11, boost/geometry/geometries/concepts/point_concept.hpp at line 16, boost/geometry/geometries/concepts/polygon_concept.hpp at line 11, boost/geometry/geometries/concepts/ring_concept.hpp at line 11, boost/geometry/geometries/concepts/segment_concept.hpp at line 11, boost/geometry/geometries/geometries.hpp at line 11, boost/geometry/geometries/linestring.hpp at line 12, boost/geometry/geometries/multi_linestring.hpp at line 12, boost/geometry/geometries/multi_point.hpp at line 12, boost/geometry/geometries/multi_polygon.hpp at line 12, boost/geometry/geometries/point.hpp at line 17, boost/geometry/geometries/point_xy.hpp at line 11, boost/geometry/geometries/polygon.hpp at line 12, boost/geometry/geometries/register/box.hpp at line 11, boost/geometry/geometries/register/linestring.hpp at line 11, boost/geometry/geometries/register/multi_linestring.hpp at line 11, boost/geometry/geometries/register/multi_point.hpp at line 11, boost/geometry/geometries/register/multi_polygon.hpp at line 11, boost/geometry/geometries/register/point.hpp at line 11, boost/geometry/geometries/register/ring.hpp at line 11, boost/geometry/geometries/register/segment.hpp at line 11, boost/geometry/geometries/ring.hpp at line 12, boost/geometry/geometries/segment.hpp at line 11, boost/geometry/geometries/variant.hpp at line 11, boost/geometry/geometry.hpp at line 17, boost/geometry/index/adaptors/query.hpp at line 8, boost/geometry/index/detail/algorithms/bounds.hpp at line 8, boost/geometry/index/detail/algorithms/comparable_distance_centroid.hpp at line 8, boost/geometry/index/detail/algorithms/comparable_distance_far.hpp at line 8, boost/geometry/index/detail/algorithms/comparable_distance_near.hpp at line 8, boost/geometry/index/detail/algorithms/content.hpp at line 8, boost/geometry/index/detail/algorithms/diff_abs.hpp at line 8, boost/geometry/index/detail/algorithms/intersection_content.hpp at line 8, boost/geometry/index/detail/algorithms/is_valid.hpp at line 8, boost/geometry/index/detail/algorithms/margin.hpp at line 8, boost/geometry/index/detail/algorithms/minmaxdist.hpp at line 8, boost/geometry/index/detail/algorithms/nth_element.hpp at line 6, boost/geometry/index/detail/algorithms/path_intersection.hpp at line 8, boost/geometry/index/detail/algorithms/segment_intersection.hpp at line 8, boost/geometry/index/detail/algorithms/smallest_for_indexable.hpp at line 8, boost/geometry/index/detail/algorithms/sum_for_indexable.hpp at line 8, boost/geometry/index/detail/algorithms/union_content.hpp at line 9, boost/geometry/index/detail/assert.hpp at line 6, boost/geometry/index/detail/bounded_view.hpp at line 9, boost/geometry/index/detail/config_begin.hpp at line 6, boost/geometry/index/detail/config_end.hpp at line 6, boost/geometry/index/detail/distance_predicates.hpp at line 9, boost/geometry/index/detail/exception.hpp at line 6, boost/geometry/index/detail/is_bounding_geometry.hpp at line 6, boost/geometry/index/detail/is_indexable.hpp at line 6, boost/geometry/index/detail/meta.hpp at line 6, boost/geometry/index/detail/predicates.hpp at line 8, boost/geometry/index/detail/rtree/adaptors.hpp at line 8, boost/geometry/index/detail/rtree/iterators.hpp at line 8, boost/geometry/index/detail/rtree/kmeans/kmeans.hpp at line 8, boost/geometry/index/detail/rtree/kmeans/split.hpp at line 8, boost/geometry/index/detail/rtree/linear/linear.hpp at line 8, boost/geometry/index/detail/rtree/linear/redistribute_elements.hpp at line 9, boost/geometry/index/detail/rtree/node/concept.hpp at line 8, boost/geometry/index/detail/rtree/node/node.hpp at line 8, boost/geometry/index/detail/rtree/node/node_elements.hpp at line 8, boost/geometry/index/detail/rtree/node/pairs.hpp at line 8, boost/geometry/index/detail/rtree/node/scoped_deallocator.hpp at line 8, boost/geometry/index/detail/rtree/node/subtree_destroyer.hpp at line 8, boost/geometry/index/detail/rtree/node/variant_dynamic.hpp at line 8, boost/geometry/index/detail/rtree/node/variant_static.hpp at line 8, boost/geometry/index/detail/rtree/node/variant_visitor.hpp at line 8, boost/geometry/index/detail/rtree/node/weak_dynamic.hpp at line 8, boost/geometry/index/detail/rtree/node/weak_static.hpp at line 8, boost/geometry/index/detail/rtree/node/weak_visitor.hpp at line 8, boost/geometry/index/detail/rtree/options.hpp at line 8, boost/geometry/index/detail/rtree/pack_create.hpp at line 8, boost/geometry/index/detail/rtree/quadratic/quadratic.hpp at line 8, boost/geometry/index/detail/rtree/quadratic/redistribute_elements.hpp at line 8, boost/geometry/index/detail/rtree/query_iterators.hpp at line 8, boost/geometry/index/detail/rtree/rstar/choose_next_node.hpp at line 8, boost/geometry/index/detail/rtree/rstar/insert.hpp at line 8, boost/geometry/index/detail/rtree/rstar/redistribute_elements.hpp at line 8, boost/geometry/index/detail/rtree/rstar/rstar.hpp at line 8, boost/geometry/index/detail/rtree/utilities/are_boxes_ok.hpp at line 8, boost/geometry/index/detail/rtree/utilities/are_counts_ok.hpp at line 8, boost/geometry/index/detail/rtree/utilities/are_levels_ok.hpp at line 8, boost/geometry/index/detail/rtree/utilities/gl_draw.hpp at line 8, boost/geometry/index/detail/rtree/utilities/print.hpp at line 8, boost/geometry/index/detail/rtree/utilities/statistics.hpp at line 9, boost/geometry/index/detail/rtree/utilities/view.hpp at line 8, boost/geometry/index/detail/rtree/visitors/children_box.hpp at line 8, boost/geometry/index/detail/rtree/visitors/copy.hpp at line 8, boost/geometry/index/detail/rtree/visitors/count.hpp at line 8, boost/geometry/index/detail/rtree/visitors/destroy.hpp at line 8, boost/geometry/index/detail/rtree/visitors/distance_query.hpp at line 8, boost/geometry/index/detail/rtree/visitors/insert.hpp at line 8, boost/geometry/index/detail/rtree/visitors/is_leaf.hpp at line 8, boost/geometry/index/detail/rtree/visitors/iterator.hpp at line 8, boost/geometry/index/detail/rtree/visitors/remove.hpp at line 8, boost/geometry/index/detail/rtree/visitors/spatial_query.hpp at line 8, boost/geometry/index/detail/serialization.hpp at line 6, boost/geometry/index/detail/tags.hpp at line 8, boost/geometry/index/detail/translator.hpp at line 6, boost/geometry/index/detail/tuples.hpp at line 6, boost/geometry/index/detail/utilities.hpp at line 6, boost/geometry/index/detail/varray.hpp at line 7, boost/geometry/index/detail/varray_detail.hpp at line 9, boost/geometry/index/distance_predicates.hpp at line 8, boost/geometry/index/equal_to.hpp at line 6, boost/geometry/index/indexable.hpp at line 6, boost/geometry/index/inserter.hpp at line 8, boost/geometry/index/parameters.hpp at line 8, boost/geometry/index/predicates.hpp at line 8, boost/geometry/index/rtree.hpp at line 9, boost/geometry/io/dsv/write.hpp at line 12, boost/geometry/io/io.hpp at line 11, boost/geometry/io/svg/svg_mapper.hpp at line 15, boost/geometry/io/svg/write.hpp at line 15, boost/geometry/io/svg/write_svg.hpp at line 15, boost/geometry/io/svg/write_svg_multi.hpp at line 14, boost/geometry/io/wkt/detail/prefix.hpp at line 11, boost/geometry/io/wkt/detail/wkt_multi.hpp at line 11, boost/geometry/io/wkt/read.hpp at line 17, boost/geometry/io/wkt/stream.hpp at line 11, boost/geometry/io/wkt/wkt.hpp at line 11, boost/geometry/io/wkt/write.hpp at line 17, boost/geometry/iterators/base.hpp at line 11, boost/geometry/iterators/closing_iterator.hpp at line 11, boost/geometry/iterators/ever_circling_iterator.hpp at line 11, boost/geometry/multi/algorithms/append.hpp at line 17, boost/geometry/multi/algorithms/area.hpp at line 11, boost/geometry/multi/algorithms/centroid.hpp at line 11, boost/geometry/multi/algorithms/clear.hpp at line 11, boost/geometry/multi/algorithms/convert.hpp at line 11, boost/geometry/multi/algorithms/correct.hpp at line 11, boost/geometry/multi/algorithms/covered_by.hpp at line 15, boost/geometry/multi/algorithms/detail/extreme_points.hpp at line 9, boost/geometry/multi/algorithms/detail/for_each_range.hpp at line 11, boost/geometry/multi/algorithms/detail/modify.hpp at line 11, boost/geometry/multi/algorithms/detail/modify_with_predicate.hpp at line 11, boost/geometry/multi/algorithms/detail/multi_sum.hpp at line 11, boost/geometry/multi/algorithms/detail/overlay/copy_segment_point.hpp at line 9, boost/geometry/multi/algorithms/detail/overlay/copy_segments.hpp at line 6, boost/geometry/multi/algorithms/detail/overlay/get_ring.hpp at line 6, boost/geometry/multi/algorithms/detail/overlay/get_turns.hpp at line 6, boost/geometry/multi/algorithms/detail/overlay/self_turn_points.hpp at line 6, boost/geometry/multi/algorithms/detail/point_on_border.hpp at line 14, boost/geometry/multi/algorithms/detail/sections/range_by_section.hpp at line 14, boost/geometry/multi/algorithms/detail/sections/sectionalize.hpp at line 14, boost/geometry/multi/algorithms/disjoint.hpp at line 13, boost/geometry/multi/algorithms/distance.hpp at line 16, boost/geometry/multi/algorithms/envelope.hpp at line 11, boost/geometry/multi/algorithms/equals.hpp at line 11, boost/geometry/multi/algorithms/for_each.hpp at line 11, boost/geometry/multi/algorithms/intersection.hpp at line 11, boost/geometry/multi/algorithms/length.hpp at line 11, boost/geometry/multi/algorithms/num_geometries.hpp at line 11, boost/geometry/multi/algorithms/num_interior_rings.hpp at line 16, boost/geometry/multi/algorithms/num_points.hpp at line 16, boost/geometry/multi/algorithms/perimeter.hpp at line 11, boost/geometry/multi/algorithms/remove_spikes.hpp at line 9, boost/geometry/multi/algorithms/reverse.hpp at line 11, boost/geometry/multi/algorithms/simplify.hpp at line 11, boost/geometry/multi/algorithms/transform.hpp at line 11, boost/geometry/multi/algorithms/unique.hpp at line 11, boost/geometry/multi/algorithms/within.hpp at line 15, boost/geometry/multi/core/closure.hpp at line 11, boost/geometry/multi/core/geometry_id.hpp at line 11, boost/geometry/multi/core/interior_rings.hpp at line 11, boost/geometry/multi/core/is_areal.hpp at line 11, boost/geometry/multi/core/point_order.hpp at line 11, boost/geometry/multi/core/point_type.hpp at line 11, boost/geometry/multi/core/ring_type.hpp at line 14, boost/geometry/multi/core/tags.hpp at line 11, boost/geometry/multi/core/topological_dimension.hpp at line 11, boost/geometry/multi/geometries/concepts/check.hpp at line 11, boost/geometry/multi/geometries/concepts/multi_linestring_concept.hpp at line 11, boost/geometry/multi/geometries/concepts/multi_point_concept.hpp at line 11, boost/geometry/multi/geometries/concepts/multi_polygon_concept.hpp at line 11, boost/geometry/multi/geometries/multi_geometries.hpp at line 11, boost/geometry/multi/geometries/multi_linestring.hpp at line 11, boost/geometry/multi/geometries/multi_point.hpp at line 11, boost/geometry/multi/geometries/multi_polygon.hpp at line 11, boost/geometry/multi/geometries/register/multi_linestring.hpp at line 11, boost/geometry/multi/geometries/register/multi_point.hpp at line 11, boost/geometry/multi/geometries/register/multi_polygon.hpp at line 11, boost/geometry/multi/io/dsv/write.hpp at line 11, boost/geometry/multi/io/wkt/detail/prefix.hpp at line 11, boost/geometry/multi/io/wkt/read.hpp at line 11, boost/geometry/multi/io/wkt/wkt.hpp at line 11, boost/geometry/multi/io/wkt/write.hpp at line 11, boost/geometry/multi/multi.hpp at line 14, boost/geometry/multi/strategies/cartesian/centroid_average.hpp at line 11, boost/geometry/multi/views/detail/range_type.hpp at line 11, boost/geometry/policies/compare.hpp at line 11, boost/geometry/policies/disjoint_interrupt_policy.hpp at line 18, boost/geometry/policies/relate/direction.hpp at line 6, boost/geometry/policies/relate/intersection_points.hpp at line 10, boost/geometry/policies/relate/intersection_ratios.hpp at line 6, boost/geometry/policies/relate/tupled.hpp at line 6, boost/geometry/policies/robustness/get_rescale_policy.hpp at line 14, boost/geometry/policies/robustness/no_rescale_policy.hpp at line 9, boost/geometry/policies/robustness/rescale_policy.hpp at line 13, boost/geometry/policies/robustness/robust_point_type.hpp at line 9, boost/geometry/policies/robustness/robust_type.hpp at line 9, boost/geometry/policies/robustness/segment_ratio.hpp at line 10, boost/geometry/policies/robustness/segment_ratio_type.hpp at line 9, boost/geometry/srs/epsg.hpp at line 7, boost/geometry/srs/esri.hpp at line 7, boost/geometry/srs/iau2000.hpp at line 7, boost/geometry/srs/projection.hpp at line 10, boost/geometry/srs/projections/code.hpp at line 7, boost/geometry/srs/projections/epsg.hpp at line 10, boost/geometry/srs/projections/epsg_params.hpp at line 7, boost/geometry/srs/projections/epsg_traits.hpp at line 10, boost/geometry/srs/projections/esri.hpp at line 7, boost/geometry/srs/projections/esri_params.hpp at line 7, boost/geometry/srs/projections/esri_traits.hpp at line 7, boost/geometry/srs/projections/exception.hpp at line 10, boost/geometry/srs/projections/factory.hpp at line 10, boost/geometry/srs/projections/iau2000.hpp at line 7, boost/geometry/srs/projections/iau2000_params.hpp at line 7, boost/geometry/srs/projections/iau2000_traits.hpp at line 7, boost/geometry/srs/projections/impl/aasincos.hpp at line 7, boost/geometry/srs/projections/impl/adjlon.hpp at line 7, boost/geometry/srs/projections/impl/base_dynamic.hpp at line 10, boost/geometry/srs/projections/impl/base_static.hpp at line 10, boost/geometry/srs/projections/impl/dms_parser.hpp at line 10, boost/geometry/srs/projections/impl/factory_entry.hpp at line 10, boost/geometry/srs/projections/impl/function_overloads.hpp at line 10, boost/geometry/srs/projections/impl/geocent.hpp at line 9, boost/geometry/srs/projections/impl/pj_auth.hpp at line 11, boost/geometry/srs/projections/impl/pj_datum_set.hpp at line 11, boost/geometry/srs/projections/impl/pj_datums.hpp at line 11, boost/geometry/srs/projections/impl/pj_ell_set.hpp at line 11, boost/geometry/srs/projections/impl/pj_ellps.hpp at line 11, boost/geometry/srs/projections/impl/pj_fwd.hpp at line 11, boost/geometry/srs/projections/impl/pj_gauss.hpp at line 11, boost/geometry/srs/projections/impl/pj_init.hpp at line 11, boost/geometry/srs/projections/impl/pj_inv.hpp at line 11, boost/geometry/srs/projections/impl/pj_mlfn.hpp at line 11, boost/geometry/srs/projections/impl/pj_msfn.hpp at line 11, boost/geometry/srs/projections/impl/pj_param.hpp at line 11, boost/geometry/srs/projections/impl/pj_phi2.hpp at line 11, boost/geometry/srs/projections/impl/pj_qsfn.hpp at line 11, boost/geometry/srs/projections/impl/pj_strerrno.hpp at line 9, boost/geometry/srs/projections/impl/pj_transform.hpp at line 9, boost/geometry/srs/projections/impl/pj_tsfn.hpp at line 11, boost/geometry/srs/projections/impl/pj_units.hpp at line 11, boost/geometry/srs/projections/impl/pj_zpoly1.hpp at line 11, boost/geometry/srs/projections/impl/proj_mdist.hpp at line 7, boost/geometry/srs/projections/impl/projects.hpp at line 11, boost/geometry/srs/projections/invalid_point.hpp at line 7, boost/geometry/srs/projections/par4.hpp at line 7, boost/geometry/srs/projections/proj/aea.hpp at line 14, boost/geometry/srs/projections/proj/aeqd.hpp at line 14, boost/geometry/srs/projections/proj/airy.hpp at line 14, boost/geometry/srs/projections/proj/aitoff.hpp at line 14, boost/geometry/srs/projections/proj/august.hpp at line 14, boost/geometry/srs/projections/proj/bacon.hpp at line 14, boost/geometry/srs/projections/proj/bipc.hpp at line 14, boost/geometry/srs/projections/proj/boggs.hpp at line 14, boost/geometry/srs/projections/proj/bonne.hpp at line 14, boost/geometry/srs/projections/proj/cass.hpp at line 14, boost/geometry/srs/projections/proj/cc.hpp at line 14, boost/geometry/srs/projections/proj/cea.hpp at line 14, boost/geometry/srs/projections/proj/chamb.hpp at line 14, boost/geometry/srs/projections/proj/collg.hpp at line 14, boost/geometry/srs/projections/proj/crast.hpp at line 14, boost/geometry/srs/projections/proj/denoy.hpp at line 14, boost/geometry/srs/projections/proj/eck1.hpp at line 14, boost/geometry/srs/projections/proj/eck2.hpp at line 14, boost/geometry/srs/projections/proj/eck3.hpp at line 14, boost/geometry/srs/projections/proj/eck4.hpp at line 14, boost/geometry/srs/projections/proj/eck5.hpp at line 14, boost/geometry/srs/projections/proj/eqc.hpp at line 14, boost/geometry/srs/projections/proj/eqdc.hpp at line 14, boost/geometry/srs/projections/proj/etmerc.hpp at line 14, boost/geometry/srs/projections/proj/fahey.hpp at line 14, boost/geometry/srs/projections/proj/fouc_s.hpp at line 14, boost/geometry/srs/projections/proj/gall.hpp at line 14, boost/geometry/srs/projections/proj/geocent.hpp at line 14, boost/geometry/srs/projections/proj/geos.hpp at line 14, boost/geometry/srs/projections/proj/gins8.hpp at line 14, boost/geometry/srs/projections/proj/gn_sinu.hpp at line 14, boost/geometry/srs/projections/proj/gnom.hpp at line 14, boost/geometry/srs/projections/proj/goode.hpp at line 14, boost/geometry/srs/projections/proj/hammer.hpp at line 14, boost/geometry/srs/projections/proj/hatano.hpp at line 14, boost/geometry/srs/projections/proj/healpix.hpp at line 14, boost/geometry/srs/projections/proj/igh.hpp at line 14, boost/geometry/srs/projections/proj/imw_p.hpp at line 14, boost/geometry/srs/projections/proj/isea.hpp at line 14, boost/geometry/srs/projections/proj/krovak.hpp at line 14, boost/geometry/srs/projections/proj/labrd.hpp at line 14, boost/geometry/srs/projections/proj/laea.hpp at line 14, boost/geometry/srs/projections/proj/lagrng.hpp at line 14, boost/geometry/srs/projections/proj/larr.hpp at line 14, boost/geometry/srs/projections/proj/lask.hpp at line 14, boost/geometry/srs/projections/proj/latlong.hpp at line 14, boost/geometry/srs/projections/proj/lcc.hpp at line 14, boost/geometry/srs/projections/proj/lcca.hpp at line 14, boost/geometry/srs/projections/proj/loxim.hpp at line 14, boost/geometry/srs/projections/proj/lsat.hpp at line 14, boost/geometry/srs/projections/proj/mbt_fps.hpp at line 14, boost/geometry/srs/projections/proj/mbtfpp.hpp at line 14, boost/geometry/srs/projections/proj/mbtfpq.hpp at line 14, boost/geometry/srs/projections/proj/merc.hpp at line 14, boost/geometry/srs/projections/proj/mill.hpp at line 14, boost/geometry/srs/projections/proj/mod_ster.hpp at line 14, boost/geometry/srs/projections/proj/moll.hpp at line 14, boost/geometry/srs/projections/proj/natearth.hpp at line 14, boost/geometry/srs/projections/proj/nell.hpp at line 14, boost/geometry/srs/projections/proj/nell_h.hpp at line 14, boost/geometry/srs/projections/proj/nocol.hpp at line 14, boost/geometry/srs/projections/proj/nsper.hpp at line 14, boost/geometry/srs/projections/proj/nzmg.hpp at line 14, boost/geometry/srs/projections/proj/ob_tran.hpp at line 14, boost/geometry/srs/projections/proj/ocea.hpp at line 14, boost/geometry/srs/projections/proj/oea.hpp at line 14, boost/geometry/srs/projections/proj/omerc.hpp at line 14, boost/geometry/srs/projections/proj/ortho.hpp at line 14, boost/geometry/srs/projections/proj/poly.hpp at line 14, boost/geometry/srs/projections/proj/putp2.hpp at line 14, boost/geometry/srs/projections/proj/putp3.hpp at line 14, boost/geometry/srs/projections/proj/putp4p.hpp at line 14, boost/geometry/srs/projections/proj/putp5.hpp at line 14, boost/geometry/srs/projections/proj/putp6.hpp at line 14, boost/geometry/srs/projections/proj/qsc.hpp at line 14, boost/geometry/srs/projections/proj/robin.hpp at line 14, boost/geometry/srs/projections/proj/rouss.hpp at line 14, boost/geometry/srs/projections/proj/rpoly.hpp at line 14, boost/geometry/srs/projections/proj/sconics.hpp at line 14, boost/geometry/srs/projections/proj/somerc.hpp at line 14, boost/geometry/srs/projections/proj/stere.hpp at line 14, boost/geometry/srs/projections/proj/sterea.hpp at line 14, boost/geometry/srs/projections/proj/sts.hpp at line 14, boost/geometry/srs/projections/proj/tcc.hpp at line 14, boost/geometry/srs/projections/proj/tcea.hpp at line 14, boost/geometry/srs/projections/proj/tmerc.hpp at line 14, boost/geometry/srs/projections/proj/tpeqd.hpp at line 14, boost/geometry/srs/projections/proj/urm5.hpp at line 14, boost/geometry/srs/projections/proj/urmfps.hpp at line 14, boost/geometry/srs/projections/proj/vandg.hpp at line 14, boost/geometry/srs/projections/proj/vandg2.hpp at line 14, boost/geometry/srs/projections/proj/vandg4.hpp at line 14, boost/geometry/srs/projections/proj/wag2.hpp at line 14, boost/geometry/srs/projections/proj/wag3.hpp at line 14, boost/geometry/srs/projections/proj/wag7.hpp at line 14, boost/geometry/srs/projections/proj/wink1.hpp at line 14, boost/geometry/srs/projections/proj/wink2.hpp at line 14, boost/geometry/srs/projections/proj4.hpp at line 7, boost/geometry/srs/projections/srid_traits.hpp at line 7, boost/geometry/srs/sphere.hpp at line 16, boost/geometry/srs/spheroid.hpp at line 16, boost/geometry/srs/srs.hpp at line 16, boost/geometry/srs/transformation.hpp at line 7, boost/geometry/strategies/agnostic/buffer_distance_asymmetric.hpp at line 6, boost/geometry/strategies/agnostic/buffer_distance_symmetric.hpp at line 6, boost/geometry/strategies/agnostic/hull_graham_andrew.hpp at line 14, boost/geometry/strategies/agnostic/point_in_box_by_side.hpp at line 11, boost/geometry/strategies/agnostic/point_in_point.hpp at line 8, boost/geometry/strategies/agnostic/point_in_poly_oriented_winding.hpp at line 9, boost/geometry/strategies/agnostic/point_in_poly_winding.hpp at line 14, boost/geometry/strategies/agnostic/simplify_douglas_peucker.hpp at line 15, boost/geometry/strategies/area.hpp at line 12, boost/geometry/strategies/area_result.hpp at line 6, boost/geometry/strategies/azimuth.hpp at line 8, boost/geometry/strategies/buffer.hpp at line 6, boost/geometry/strategies/cartesian/area.hpp at line 17, boost/geometry/strategies/cartesian/area_surveyor.hpp at line 17, boost/geometry/strategies/cartesian/azimuth.hpp at line 8, boost/geometry/strategies/cartesian/box_in_box.hpp at line 17, boost/geometry/strategies/cartesian/buffer_end_flat.hpp at line 6, boost/geometry/strategies/cartesian/buffer_end_round.hpp at line 11, boost/geometry/strategies/cartesian/buffer_join_miter.hpp at line 6, boost/geometry/strategies/cartesian/buffer_join_round.hpp at line 11, boost/geometry/strategies/cartesian/buffer_join_round_by_divide.hpp at line 6, boost/geometry/strategies/cartesian/buffer_point_circle.hpp at line 11, boost/geometry/strategies/cartesian/buffer_point_square.hpp at line 4, boost/geometry/strategies/cartesian/buffer_side_straight.hpp at line 4, boost/geometry/strategies/cartesian/centroid_average.hpp at line 17, boost/geometry/strategies/cartesian/centroid_bashein_detmer.hpp at line 16, boost/geometry/strategies/cartesian/centroid_weighted_length.hpp at line 15, boost/geometry/strategies/cartesian/disjoint_segment_box.hpp at line 16, boost/geometry/strategies/cartesian/distance_projected_point.hpp at line 16, boost/geometry/strategies/cartesian/distance_projected_point_ax.hpp at line 17, boost/geometry/strategies/cartesian/distance_pythagoras.hpp at line 11, boost/geometry/strategies/cartesian/distance_pythagoras_box_box.hpp at line 16, boost/geometry/strategies/cartesian/distance_pythagoras_point_box.hpp at line 16, boost/geometry/strategies/cartesian/envelope_segment.hpp at line 8, boost/geometry/strategies/cartesian/intersection.hpp at line 13, boost/geometry/strategies/cartesian/point_in_box.hpp at line 16, boost/geometry/strategies/cartesian/point_in_poly_crossings_multiply.hpp at line 11, boost/geometry/strategies/cartesian/point_in_poly_franklin.hpp at line 11, boost/geometry/strategies/cartesian/point_in_poly_winding.hpp at line 14, boost/geometry/strategies/cartesian/side_by_triangle.hpp at line 17, boost/geometry/strategies/cartesian/side_of_intersection.hpp at line 11, boost/geometry/strategies/centroid.hpp at line 11, boost/geometry/strategies/compare.hpp at line 16, boost/geometry/strategies/concepts/area_concept.hpp at line 12, boost/geometry/strategies/concepts/centroid_concept.hpp at line 11, boost/geometry/strategies/concepts/convex_hull_concept.hpp at line 16, boost/geometry/strategies/concepts/distance_concept.hpp at line 16, boost/geometry/strategies/concepts/segment_intersect_concept.hpp at line 11, boost/geometry/strategies/concepts/simplify_concept.hpp at line 11, boost/geometry/strategies/concepts/within_concept.hpp at line 11, boost/geometry/strategies/convex_hull.hpp at line 11, boost/geometry/strategies/covered_by.hpp at line 16, boost/geometry/strategies/default_area_result.hpp at line 12, boost/geometry/strategies/default_comparable_distance_result.hpp at line 16, boost/geometry/strategies/default_distance_result.hpp at line 16, boost/geometry/strategies/default_length_result.hpp at line 16, boost/geometry/strategies/default_strategy.hpp at line 11, boost/geometry/strategies/disjoint.hpp at line 8, boost/geometry/strategies/distance.hpp at line 16, boost/geometry/strategies/distance_result.hpp at line 18, boost/geometry/strategies/envelope.hpp at line 8, boost/geometry/strategies/geographic/area.hpp at line 10, boost/geometry/strategies/geographic/azimuth.hpp at line 8, boost/geometry/strategies/geographic/disjoint_segment_box.hpp at line 9, boost/geometry/strategies/geographic/distance.hpp at line 12, boost/geometry/strategies/geographic/distance_andoyer.hpp at line 11, boost/geometry/strategies/geographic/distance_cross_track.hpp at line 8, boost/geometry/strategies/geographic/distance_cross_track_box_box.hpp at line 9, boost/geometry/strategies/geographic/distance_cross_track_point_box.hpp at line 9, boost/geometry/strategies/geographic/distance_thomas.hpp at line 11, boost/geometry/strategies/geographic/distance_vincenty.hpp at line 11, boost/geometry/strategies/geographic/envelope_segment.hpp at line 8, boost/geometry/strategies/geographic/intersection.hpp at line 9, boost/geometry/strategies/geographic/intersection_elliptic.hpp at line 7, boost/geometry/strategies/geographic/mapping_ssf.hpp at line 11, boost/geometry/strategies/geographic/parameters.hpp at line 7, boost/geometry/strategies/geographic/point_in_poly_winding.hpp at line 7, boost/geometry/strategies/geographic/side.hpp at line 11, boost/geometry/strategies/geographic/side_andoyer.hpp at line 11, boost/geometry/strategies/geographic/side_thomas.hpp at line 11, boost/geometry/strategies/geographic/side_vincenty.hpp at line 11, boost/geometry/strategies/intersection.hpp at line 7, boost/geometry/strategies/intersection_result.hpp at line 10, boost/geometry/strategies/intersection_strategies.hpp at line 10, boost/geometry/strategies/relate.hpp at line 7, boost/geometry/strategies/side.hpp at line 11, boost/geometry/strategies/side_info.hpp at line 11, boost/geometry/strategies/spherical/area.hpp at line 10, boost/geometry/strategies/spherical/azimuth.hpp at line 8, boost/geometry/strategies/spherical/compare.hpp at line 11, boost/geometry/strategies/spherical/disjoint_segment_box.hpp at line 9, boost/geometry/strategies/spherical/distance_cross_track.hpp at line 12, boost/geometry/strategies/spherical/distance_cross_track_box_box.hpp at line 8, boost/geometry/strategies/spherical/distance_cross_track_point_box.hpp at line 15, boost/geometry/strategies/spherical/distance_haversine.hpp at line 12, boost/geometry/strategies/spherical/envelope_segment.hpp at line 8, boost/geometry/strategies/spherical/get_radius.hpp at line 10, boost/geometry/strategies/spherical/intersection.hpp at line 9, boost/geometry/strategies/spherical/point_in_poly_winding.hpp at line 14, boost/geometry/strategies/spherical/side_by_cross_track.hpp at line 12, boost/geometry/strategies/spherical/ssf.hpp at line 10, boost/geometry/strategies/strategies.hpp at line 18, boost/geometry/strategies/strategy_transform.hpp at line 16, boost/geometry/strategies/tags.hpp at line 11, boost/geometry/strategies/transform.hpp at line 11, boost/geometry/strategies/transform/inverse_transformer.hpp at line 11, boost/geometry/strategies/transform/map_transformer.hpp at line 11, boost/geometry/strategies/transform/matrix_transformers.hpp at line 16, boost/geometry/strategies/transform/srs_transformer.hpp at line 10, boost/geometry/strategies/within.hpp at line 16, boost/geometry/util/add_const_if_c.hpp at line 11, boost/geometry/util/bare_type.hpp at line 13, boost/geometry/util/calculation_type.hpp at line 8, boost/geometry/util/closure_as_bool.hpp at line 11, boost/geometry/util/combine_if.hpp at line 14, boost/geometry/util/compress_variant.hpp at line 16, boost/geometry/util/condition.hpp at line 8, boost/geometry/util/coordinate_cast.hpp at line 11, boost/geometry/util/for_each_coordinate.hpp at line 11, boost/geometry/util/has_infinite_coordinate.hpp at line 8, boost/geometry/util/has_nan_coordinate.hpp at line 9, boost/geometry/util/has_non_finite_coordinate.hpp at line 8, boost/geometry/util/math.hpp at line 17, boost/geometry/util/order_as_direction.hpp at line 11, boost/geometry/util/parameter_type_of.hpp at line 11, boost/geometry/util/promote_floating_point.hpp at line 11, boost/geometry/util/range.hpp at line 11, boost/geometry/util/rational.hpp at line 11, boost/geometry/util/select_calculation_type.hpp at line 16, boost/geometry/util/select_coordinate_type.hpp at line 16, boost/geometry/util/select_most_precise.hpp at line 16, boost/geometry/util/select_sequence_element.hpp at line 6, boost/geometry/util/transform_variant.hpp at line 16, boost/geometry/views/box_view.hpp at line 11, boost/geometry/views/closeable_view.hpp at line 11, boost/geometry/views/detail/indexed_point_view.hpp at line 14, boost/geometry/views/detail/normalized_view.hpp at line 14, boost/geometry/views/detail/points_view.hpp at line 11, boost/geometry/views/detail/range_type.hpp at line 11, boost/geometry/views/identity_view.hpp at line 11, boost/geometry/views/reversible_view.hpp at line 11, boost/geometry/views/segment_view.hpp at line 11, boost/polygon/interval_concept.hpp at line 9, boost/polygon/interval_data.hpp at line 9, boost/polygon/interval_traits.hpp at line 9, boost/polygon/point_concept.hpp at line 9, boost/polygon/point_data.hpp at line 9, boost/polygon/point_traits.hpp at line 9, boost/polygon/segment_concept.hpp at line 9, boost/polygon/segment_data.hpp at line 9, boost/polygon/segment_traits.hpp at line 9, boost/polygon/transform.hpp at line 9
- License text:
- // Use, modification and distribution is subject to the Boost Software License,
- // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/container/static_vector.hpp [7:9]
- boost/core/ignore_unused.hpp [3:5]
- boost/geometry.hpp [10:12]
- boost/geometry/algorithms/append.hpp [16:18]
- boost/geometry/algorithms/area.hpp [15:17]
- boost/geometry/algorithms/assign.hpp [11:13]
- boost/geometry/algorithms/buffer.hpp [14:16]
- boost/geometry/algorithms/centroid.hpp [17:19]
- boost/geometry/algorithms/clear.hpp [10:12]
- boost/geometry/algorithms/comparable_distance.hpp [15:17]
- boost/geometry/algorithms/convert.hpp [15:17]
- boost/geometry/algorithms/convex_hull.hpp [16:18]
- boost/geometry/algorithms/correct.hpp [15:17]
- boost/geometry/algorithms/correct_closure.hpp [5:7]
- boost/geometry/algorithms/covered_by.hpp [15:17]
- boost/geometry/algorithms/crosses.hpp [16:18]
- boost/geometry/algorithms/detail/as_range.hpp [10:12]
- boost/geometry/algorithms/detail/assign_box_corners.hpp [10:12]
- boost/geometry/algorithms/detail/assign_indexed_point.hpp [10:12]
- boost/geometry/algorithms/detail/assign_values.hpp [10:12]
- boost/geometry/algorithms/detail/azimuth.hpp [11:13]
- boost/geometry/algorithms/detail/buffer/buffer_inserter.hpp [9:11]
- boost/geometry/algorithms/detail/buffer/buffer_policies.hpp [9:11]
- boost/geometry/algorithms/detail/buffer/buffered_piece_collection.hpp [10:12]
- boost/geometry/algorithms/detail/buffer/buffered_ring.hpp [5:7]
- boost/geometry/algorithms/detail/buffer/get_piece_turns.hpp [10:12]
- boost/geometry/algorithms/detail/buffer/line_line_intersection.hpp [5:7]
- boost/geometry/algorithms/detail/buffer/parallel_continue.hpp [5:7]
- boost/geometry/algorithms/detail/buffer/turn_in_original_visitor.hpp [9:11]
- boost/geometry/algorithms/detail/buffer/turn_in_piece_visitor.hpp [10:12]
- boost/geometry/algorithms/detail/calculate_null.hpp [10:12]
- boost/geometry/algorithms/detail/calculate_sum.hpp [15:17]
- boost/geometry/algorithms/detail/centroid/translating_transformer.hpp [13:15]
- boost/geometry/algorithms/detail/comparable_distance/implementation.hpp [15:17]
- boost/geometry/algorithms/detail/comparable_distance/interface.hpp [15:17]
- boost/geometry/algorithms/detail/convert_indexed_to_indexed.hpp [10:12]
- boost/geometry/algorithms/detail/convert_point_to_point.hpp [10:12]
- boost/geometry/algorithms/detail/counting.hpp [16:18]
- boost/geometry/algorithms/detail/course.hpp [10:12]
- boost/geometry/algorithms/detail/covered_by/implementation.hpp [15:17]
- boost/geometry/algorithms/detail/covered_by/interface.hpp [15:17]
- boost/geometry/algorithms/detail/direction_code.hpp [11:13]
- boost/geometry/algorithms/detail/disjoint/areal_areal.hpp [17:19]
- boost/geometry/algorithms/detail/disjoint/box_box.hpp [17:19]
- boost/geometry/algorithms/detail/disjoint/implementation.hpp [17:19]
- boost/geometry/algorithms/detail/disjoint/interface.hpp [17:19]
- boost/geometry/algorithms/detail/disjoint/linear_areal.hpp [17:19]
- boost/geometry/algorithms/detail/disjoint/linear_linear.hpp [17:19]
- boost/geometry/algorithms/detail/disjoint/linear_segment_or_box.hpp [17:19]
- boost/geometry/algorithms/detail/disjoint/point_box.hpp [17:19]
- boost/geometry/algorithms/detail/disjoint/point_geometry.hpp [17:19]
- boost/geometry/algorithms/detail/disjoint/point_point.hpp [17:19]
- boost/geometry/algorithms/detail/disjoint/segment_box.hpp [18:20]
- boost/geometry/algorithms/detail/distance/backward_compatibility.hpp [16:18]
- boost/geometry/algorithms/detail/distance/default_strategies.hpp [16:18]
- boost/geometry/algorithms/detail/distance/implementation.hpp [16:18]
- boost/geometry/algorithms/detail/distance/interface.hpp [17:19]
- boost/geometry/algorithms/detail/distance/point_to_geometry.hpp [16:18]
- boost/geometry/algorithms/detail/equals/collect_vectors.hpp [16:18]
- boost/geometry/algorithms/detail/equals/implementation.hpp [17:19]
- boost/geometry/algorithms/detail/equals/interface.hpp [17:19]
- boost/geometry/algorithms/detail/equals/point_point.hpp [17:19]
- boost/geometry/algorithms/detail/extreme_points.hpp [13:15]
- boost/geometry/algorithms/detail/for_each_range.hpp [10:12]
- boost/geometry/algorithms/detail/get_left_turns.hpp [10:12]
- boost/geometry/algorithms/detail/get_max_size.hpp [8:10]
- boost/geometry/algorithms/detail/has_self_intersections.hpp [10:12]
- boost/geometry/algorithms/detail/interior_iterator.hpp [5:7]
- boost/geometry/algorithms/detail/intersection/box_box.hpp [10:12]
- boost/geometry/algorithms/detail/intersection/implementation.hpp [10:12]
- boost/geometry/algorithms/detail/intersection/interface.hpp [10:12]
- boost/geometry/algorithms/detail/intersection/multi.hpp [10:12]
- boost/geometry/algorithms/detail/intersects/implementation.hpp [16:18]
- boost/geometry/algorithms/detail/intersects/interface.hpp [16:18]
- boost/geometry/algorithms/detail/multi_modify.hpp [14:16]
- boost/geometry/algorithms/detail/multi_modify_with_predicate.hpp [10:12]
- boost/geometry/algorithms/detail/multi_sum.hpp [10:12]
- boost/geometry/algorithms/detail/not.hpp [16:18]
- boost/geometry/algorithms/detail/occupation_info.hpp [10:12]
- boost/geometry/algorithms/detail/overlaps/implementation.hpp [15:17]
- boost/geometry/algorithms/detail/overlaps/interface.hpp [15:17]
- boost/geometry/algorithms/detail/overlay/add_rings.hpp [11:13]
- boost/geometry/algorithms/detail/overlay/append_no_duplicates.hpp [5:7]
- boost/geometry/algorithms/detail/overlay/append_no_dups_or_spikes.hpp [10:12]
- boost/geometry/algorithms/detail/overlay/assign_parents.hpp [10:12]
- boost/geometry/algorithms/detail/overlay/backtrack_check_si.hpp [9:11]
- boost/geometry/algorithms/detail/overlay/check_enrich.hpp [5:7]
- boost/geometry/algorithms/detail/overlay/clip_linestring.hpp [10:12]
- boost/geometry/algorithms/detail/overlay/cluster_info.hpp [5:7]
- boost/geometry/algorithms/detail/overlay/convert_ring.hpp [5:7]
- boost/geometry/algorithms/detail/overlay/copy_segment_point.hpp [5:7]
- boost/geometry/algorithms/detail/overlay/copy_segments.hpp [11:13]
- boost/geometry/algorithms/detail/overlay/debug_turn_info.hpp [5:7]
- boost/geometry/algorithms/detail/overlay/do_reverse.hpp [6:8]
- boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp [11:13]
- boost/geometry/algorithms/detail/overlay/enrichment_info.hpp [5:7]
- boost/geometry/algorithms/detail/overlay/follow.hpp [11:13]
- boost/geometry/algorithms/detail/overlay/get_intersection_points.hpp [10:12]
- boost/geometry/algorithms/detail/overlay/get_relative_order.hpp [10:12]
- boost/geometry/algorithms/detail/overlay/get_ring.hpp [5:7]
- boost/geometry/algorithms/detail/overlay/get_turn_info.hpp [11:13]
- boost/geometry/algorithms/detail/overlay/get_turn_info_for_endpoint.hpp [10:12]
- boost/geometry/algorithms/detail/overlay/get_turn_info_helpers.hpp [10:12]
- boost/geometry/algorithms/detail/overlay/get_turn_info_la.hpp [11:13]
- boost/geometry/algorithms/detail/overlay/get_turn_info_ll.hpp [11:13]
- boost/geometry/algorithms/detail/overlay/get_turns.hpp [11:13]
- boost/geometry/algorithms/detail/overlay/handle_colocations.hpp [11:13]
- boost/geometry/algorithms/detail/overlay/handle_self_turns.hpp [6:8]
- boost/geometry/algorithms/detail/overlay/intersection_box_box.hpp [10:12]
- boost/geometry/algorithms/detail/overlay/intersection_insert.hpp [11:13]
- boost/geometry/algorithms/detail/overlay/is_self_turn.hpp [6:8]
- boost/geometry/algorithms/detail/overlay/less_by_segment_ratio.hpp [10:12]
- boost/geometry/algorithms/detail/overlay/needs_self_turns.hpp [5:7]
- boost/geometry/algorithms/detail/overlay/overlay.hpp [12:14]
- boost/geometry/algorithms/detail/overlay/overlay_type.hpp [5:7]
- boost/geometry/algorithms/detail/overlay/range_in_geometry.hpp [6:8]
- boost/geometry/algorithms/detail/overlay/ring_properties.hpp [9:11]
- boost/geometry/algorithms/detail/overlay/segment_identifier.hpp [5:7]
- boost/geometry/algorithms/detail/overlay/select_rings.hpp [10:12]
- boost/geometry/algorithms/detail/overlay/self_turn_points.hpp [11:13]
- boost/geometry/algorithms/detail/overlay/sort_by_side.hpp [11:13]
- boost/geometry/algorithms/detail/overlay/stream_info.hpp [5:7]
- boost/geometry/algorithms/detail/overlay/traversal.hpp [10:12]
- boost/geometry/algorithms/detail/overlay/traversal_info.hpp [5:7]
- boost/geometry/algorithms/detail/overlay/traversal_ring_creator.hpp [9:11]
- boost/geometry/algorithms/detail/overlay/traversal_switch_detector.hpp [5:7]
- boost/geometry/algorithms/detail/overlay/traverse.hpp [5:7]
- boost/geometry/algorithms/detail/overlay/turn_info.hpp [5:7]
- boost/geometry/algorithms/detail/overlay/visit_info.hpp [5:7]
- boost/geometry/algorithms/detail/partition.hpp [12:14]
- boost/geometry/algorithms/detail/point_is_spike_or_equal.hpp [14:16]
- boost/geometry/algorithms/detail/recalculate.hpp [8:10]
- boost/geometry/algorithms/detail/relate/areal_areal.hpp [10:12]
- boost/geometry/algorithms/detail/relate/boundary_checker.hpp [5:7]
- boost/geometry/algorithms/detail/relate/de9im.hpp [10:12]
- boost/geometry/algorithms/detail/relate/follow_helpers.hpp [8:10]
- boost/geometry/algorithms/detail/relate/implementation.hpp [10:12]
- boost/geometry/algorithms/detail/relate/interface.hpp [10:12]
- boost/geometry/algorithms/detail/relate/linear_areal.hpp [10:12]
- boost/geometry/algorithms/detail/relate/linear_linear.hpp [10:12]
- boost/geometry/algorithms/detail/relate/multi_point_geometry.hpp [7:9]
- boost/geometry/algorithms/detail/relate/point_geometry.hpp [10:12]
- boost/geometry/algorithms/detail/relate/point_point.hpp [10:12]
- boost/geometry/algorithms/detail/relate/relate_impl.hpp [10:12]
- boost/geometry/algorithms/detail/relate/result.hpp [11:13]
- boost/geometry/algorithms/detail/relate/topology_check.hpp [7:9]
- boost/geometry/algorithms/detail/relate/turns.hpp [11:13]
- boost/geometry/algorithms/detail/relation/implementation.hpp [7:9]
- boost/geometry/algorithms/detail/relation/interface.hpp [10:12]
- boost/geometry/algorithms/detail/ring_identifier.hpp [5:7]
- boost/geometry/algorithms/detail/sections/range_by_section.hpp [13:15]
- boost/geometry/algorithms/detail/sections/section_box_policies.hpp [5:7]
- boost/geometry/algorithms/detail/sections/section_functions.hpp [10:12]
- boost/geometry/algorithms/detail/sections/sectionalize.hpp [17:19]
- boost/geometry/algorithms/detail/signed_size_type.hpp [7:9]
- boost/geometry/algorithms/detail/single_geometry.hpp [8:10]
- boost/geometry/algorithms/detail/sub_range.hpp [8:10]
- boost/geometry/algorithms/detail/throw_on_empty_input.hpp [13:15]
- boost/geometry/algorithms/detail/touches/implementation.hpp [16:18]
- boost/geometry/algorithms/detail/touches/interface.hpp [16:18]
- boost/geometry/algorithms/detail/within/implementation.hpp [15:17]
- boost/geometry/algorithms/detail/within/interface.hpp [15:17]
- boost/geometry/algorithms/detail/within/multi_point.hpp [7:9]
- boost/geometry/algorithms/detail/within/point_in_geometry.hpp [16:18]
- boost/geometry/algorithms/detail/within/within_no_turns.hpp [13:15]
- boost/geometry/algorithms/difference.hpp [10:12]
- boost/geometry/algorithms/disjoint.hpp [17:19]
- boost/geometry/algorithms/dispatch/disjoint.hpp [17:19]
- boost/geometry/algorithms/dispatch/distance.hpp [16:18]
- boost/geometry/algorithms/distance.hpp [16:18]
- boost/geometry/algorithms/equals.hpp [17:19]
- boost/geometry/algorithms/for_each.hpp [16:18]
- boost/geometry/algorithms/intersection.hpp [10:12]
- boost/geometry/algorithms/intersects.hpp [16:18]
- boost/geometry/algorithms/is_convex.hpp [10:12]
- boost/geometry/algorithms/length.hpp [16:18]
- boost/geometry/algorithms/make.hpp [10:12]
- boost/geometry/algorithms/not_implemented.hpp [15:17]
- boost/geometry/algorithms/num_geometries.hpp [15:17]
- boost/geometry/algorithms/num_interior_rings.hpp [16:18]
- boost/geometry/algorithms/num_points.hpp [16:18]
- boost/geometry/algorithms/overlaps.hpp [15:17]
- boost/geometry/algorithms/perimeter.hpp [15:17]
- boost/geometry/algorithms/point_on_surface.hpp [13:15]
- boost/geometry/algorithms/relate.hpp [7:9]
- boost/geometry/algorithms/relation.hpp [7:9]
- boost/geometry/algorithms/remove_spikes.hpp [13:15]
- boost/geometry/algorithms/reverse.hpp [11:13]
- boost/geometry/algorithms/simplify.hpp [10:12]
- boost/geometry/algorithms/sym_difference.hpp [11:13]
- boost/geometry/algorithms/touches.hpp [16:18]
- boost/geometry/algorithms/transform.hpp [11:13]
- boost/geometry/algorithms/union.hpp [11:13]
- boost/geometry/algorithms/unique.hpp [11:13]
- boost/geometry/algorithms/within.hpp [15:17]
- boost/geometry/arithmetic/arithmetic.hpp [10:12]
- boost/geometry/arithmetic/cross_product.hpp [11:13]
- boost/geometry/arithmetic/determinant.hpp [7:9]
- boost/geometry/arithmetic/dot_product.hpp [10:12]
- boost/geometry/arithmetic/normalize.hpp [6:8]
- boost/geometry/core/access.hpp [10:12]
- boost/geometry/core/assert.hpp [10:12]
- boost/geometry/core/closure.hpp [15:17]
- boost/geometry/core/coordinate_dimension.hpp [10:12]
- boost/geometry/core/coordinate_system.hpp [10:12]
- boost/geometry/core/coordinate_type.hpp [10:12]
- boost/geometry/core/cs.hpp [15:17]
- boost/geometry/core/exception.hpp [15:17]
- boost/geometry/core/exterior_ring.hpp [10:12]
- boost/geometry/core/geometry_id.hpp [10:12]
- boost/geometry/core/interior_rings.hpp [10:12]
- boost/geometry/core/interior_type.hpp [10:12]
- boost/geometry/core/is_areal.hpp [10:12]
- boost/geometry/core/mutable_range.hpp [10:12]
- boost/geometry/core/point_order.hpp [15:17]
- boost/geometry/core/point_type.hpp [10:12]
- boost/geometry/core/radian_access.hpp [15:17]
- boost/geometry/core/radius.hpp [15:17]
- boost/geometry/core/reverse_dispatch.hpp [10:12]
- boost/geometry/core/ring_type.hpp [15:17]
- boost/geometry/core/tag.hpp [10:12]
- boost/geometry/core/tag_cast.hpp [10:12]
- boost/geometry/core/tags.hpp [15:17]
- boost/geometry/core/topological_dimension.hpp [10:12]
- boost/geometry/formulas/andoyer_inverse.hpp [9:11]
- boost/geometry/formulas/area_formulas.hpp [8:10]
- boost/geometry/formulas/authalic_radius_sqr.hpp [7:9]
- boost/geometry/formulas/differential_quantities.hpp [7:9]
- boost/geometry/formulas/eccentricity_sqr.hpp [7:9]
- boost/geometry/formulas/elliptic_arc_length.hpp [7:9]
- boost/geometry/formulas/flattening.hpp [7:9]
- boost/geometry/formulas/geographic.hpp [6:8]
- boost/geometry/formulas/gnomonic_intersection.hpp [7:9]
- boost/geometry/formulas/gnomonic_spheroid.hpp [7:9]
- boost/geometry/formulas/mean_radius.hpp [7:9]
- boost/geometry/formulas/result_direct.hpp [7:9]
- boost/geometry/formulas/result_inverse.hpp [7:9]
- boost/geometry/formulas/sjoberg_intersection.hpp [7:9]
- boost/geometry/formulas/spherical.hpp [7:9]
- boost/geometry/formulas/thomas_direct.hpp [7:9]
- boost/geometry/formulas/thomas_inverse.hpp [8:10]
- boost/geometry/formulas/unit_spheroid.hpp [7:9]
- boost/geometry/formulas/vertex_latitude.hpp [8:10]
- boost/geometry/formulas/vertex_longitude.hpp [8:10]
- boost/geometry/formulas/vincenty_direct.hpp [10:12]
- boost/geometry/formulas/vincenty_inverse.hpp [11:13]
- boost/geometry/geometries/adapted/boost_array.hpp [6:8]
- boost/geometry/geometries/adapted/boost_fusion.hpp [11:13]
- boost/geometry/geometries/adapted/boost_polygon.hpp [5:7]
- boost/geometry/geometries/adapted/boost_polygon/box.hpp [5:7]
- boost/geometry/geometries/adapted/boost_polygon/hole_iterator.hpp [5:7]
- boost/geometry/geometries/adapted/boost_polygon/holes_proxy.hpp [5:7]
- boost/geometry/geometries/adapted/boost_polygon/point.hpp [5:7]
- boost/geometry/geometries/adapted/boost_polygon/polygon.hpp [5:7]
- boost/geometry/geometries/adapted/boost_polygon/ring.hpp [5:7]
- boost/geometry/geometries/adapted/boost_polygon/ring_proxy.hpp [5:7]
- boost/geometry/geometries/adapted/boost_range/adjacent_filtered.hpp [5:7]
- boost/geometry/geometries/adapted/boost_range/filtered.hpp [5:7]
- boost/geometry/geometries/adapted/boost_range/reversed.hpp [5:7]
- boost/geometry/geometries/adapted/boost_range/sliced.hpp [5:7]
- boost/geometry/geometries/adapted/boost_range/strided.hpp [5:7]
- boost/geometry/geometries/adapted/boost_range/uniqued.hpp [5:7]
- boost/geometry/geometries/adapted/boost_tuple.hpp [10:12]
- boost/geometry/geometries/adapted/c_array.hpp [10:12]
- boost/geometry/geometries/adapted/std_array.hpp [7:9]
- boost/geometry/geometries/adapted/std_pair_as_segment.hpp [10:12]
- boost/geometry/geometries/box.hpp [10:12]
- boost/geometry/geometries/concepts/box_concept.hpp [10:12]
- boost/geometry/geometries/concepts/check.hpp [10:12]
- boost/geometry/geometries/concepts/linestring_concept.hpp [10:12]
- boost/geometry/geometries/concepts/multi_linestring_concept.hpp [10:12]
- boost/geometry/geometries/concepts/multi_point_concept.hpp [10:12]
- boost/geometry/geometries/concepts/multi_polygon_concept.hpp [10:12]
- boost/geometry/geometries/concepts/point_concept.hpp [15:17]
- boost/geometry/geometries/concepts/polygon_concept.hpp [10:12]
- boost/geometry/geometries/concepts/ring_concept.hpp [10:12]
- boost/geometry/geometries/concepts/segment_concept.hpp [10:12]
- boost/geometry/geometries/geometries.hpp [10:12]
- boost/geometry/geometries/linestring.hpp [11:13]
- boost/geometry/geometries/multi_linestring.hpp [11:13]
- boost/geometry/geometries/multi_point.hpp [11:13]
- boost/geometry/geometries/multi_polygon.hpp [11:13]
- boost/geometry/geometries/point.hpp [16:18]
- boost/geometry/geometries/point_xy.hpp [10:12]
- boost/geometry/geometries/polygon.hpp [11:13]
- boost/geometry/geometries/register/box.hpp [10:12]
- boost/geometry/geometries/register/linestring.hpp [10:12]
- boost/geometry/geometries/register/multi_linestring.hpp [10:12]
- boost/geometry/geometries/register/multi_point.hpp [10:12]
- boost/geometry/geometries/register/multi_polygon.hpp [10:12]
- boost/geometry/geometries/register/point.hpp [10:12]
- boost/geometry/geometries/register/ring.hpp [10:12]
- boost/geometry/geometries/register/segment.hpp [10:12]
- boost/geometry/geometries/ring.hpp [11:13]
- boost/geometry/geometries/segment.hpp [10:12]
- boost/geometry/geometries/variant.hpp [10:12]
- boost/geometry/geometry.hpp [16:18]
- boost/geometry/index/adaptors/query.hpp [7:9]
- boost/geometry/index/detail/algorithms/bounds.hpp [7:9]
- boost/geometry/index/detail/algorithms/comparable_distance_centroid.hpp [7:9]
- boost/geometry/index/detail/algorithms/comparable_distance_far.hpp [7:9]
- boost/geometry/index/detail/algorithms/comparable_distance_near.hpp [7:9]
- boost/geometry/index/detail/algorithms/content.hpp [7:9]
- boost/geometry/index/detail/algorithms/diff_abs.hpp [7:9]
- boost/geometry/index/detail/algorithms/intersection_content.hpp [7:9]
- boost/geometry/index/detail/algorithms/is_valid.hpp [7:9]
- boost/geometry/index/detail/algorithms/margin.hpp [7:9]
- boost/geometry/index/detail/algorithms/minmaxdist.hpp [7:9]
- boost/geometry/index/detail/algorithms/nth_element.hpp [5:7]
- boost/geometry/index/detail/algorithms/path_intersection.hpp [7:9]
- boost/geometry/index/detail/algorithms/segment_intersection.hpp [7:9]
- boost/geometry/index/detail/algorithms/smallest_for_indexable.hpp [7:9]
- boost/geometry/index/detail/algorithms/sum_for_indexable.hpp [7:9]
- boost/geometry/index/detail/algorithms/union_content.hpp [8:10]
- boost/geometry/index/detail/assert.hpp [5:7]
- boost/geometry/index/detail/bounded_view.hpp [8:10]
- boost/geometry/index/detail/config_begin.hpp [5:7]
- boost/geometry/index/detail/config_end.hpp [5:7]
- boost/geometry/index/detail/distance_predicates.hpp [8:10]
- boost/geometry/index/detail/exception.hpp [5:7]
- boost/geometry/index/detail/is_bounding_geometry.hpp [5:7]
- boost/geometry/index/detail/is_indexable.hpp [5:7]
- boost/geometry/index/detail/meta.hpp [5:7]
- boost/geometry/index/detail/predicates.hpp [7:9]
- boost/geometry/index/detail/rtree/adaptors.hpp [7:9]
- boost/geometry/index/detail/rtree/iterators.hpp [7:9]
- boost/geometry/index/detail/rtree/kmeans/kmeans.hpp [7:9]
- boost/geometry/index/detail/rtree/kmeans/split.hpp [7:9]
- boost/geometry/index/detail/rtree/linear/linear.hpp [7:9]
- boost/geometry/index/detail/rtree/linear/redistribute_elements.hpp [8:10]
- boost/geometry/index/detail/rtree/node/concept.hpp [7:9]
- boost/geometry/index/detail/rtree/node/node.hpp [7:9]
- boost/geometry/index/detail/rtree/node/node_elements.hpp [7:9]
- boost/geometry/index/detail/rtree/node/pairs.hpp [7:9]
- boost/geometry/index/detail/rtree/node/scoped_deallocator.hpp [7:9]
- boost/geometry/index/detail/rtree/node/subtree_destroyer.hpp [7:9]
- boost/geometry/index/detail/rtree/node/variant_dynamic.hpp [7:9]
- boost/geometry/index/detail/rtree/node/variant_static.hpp [7:9]
- boost/geometry/index/detail/rtree/node/variant_visitor.hpp [7:9]
- boost/geometry/index/detail/rtree/node/weak_dynamic.hpp [7:9]
- boost/geometry/index/detail/rtree/node/weak_static.hpp [7:9]
- boost/geometry/index/detail/rtree/node/weak_visitor.hpp [7:9]
- boost/geometry/index/detail/rtree/options.hpp [7:9]
- boost/geometry/index/detail/rtree/pack_create.hpp [7:9]
- boost/geometry/index/detail/rtree/quadratic/quadratic.hpp [7:9]
- boost/geometry/index/detail/rtree/quadratic/redistribute_elements.hpp [7:9]
- boost/geometry/index/detail/rtree/query_iterators.hpp [7:9]
- boost/geometry/index/detail/rtree/rstar/choose_next_node.hpp [7:9]
- boost/geometry/index/detail/rtree/rstar/insert.hpp [7:9]
- boost/geometry/index/detail/rtree/rstar/redistribute_elements.hpp [7:9]
- boost/geometry/index/detail/rtree/rstar/rstar.hpp [7:9]
- boost/geometry/index/detail/rtree/utilities/are_boxes_ok.hpp [7:9]
- boost/geometry/index/detail/rtree/utilities/are_counts_ok.hpp [7:9]
- boost/geometry/index/detail/rtree/utilities/are_levels_ok.hpp [7:9]
- boost/geometry/index/detail/rtree/utilities/gl_draw.hpp [7:9]
- boost/geometry/index/detail/rtree/utilities/print.hpp [7:9]
- boost/geometry/index/detail/rtree/utilities/statistics.hpp [8:10]
- boost/geometry/index/detail/rtree/utilities/view.hpp [7:9]
- boost/geometry/index/detail/rtree/visitors/children_box.hpp [7:9]
- boost/geometry/index/detail/rtree/visitors/copy.hpp [7:9]
- boost/geometry/index/detail/rtree/visitors/count.hpp [7:9]
- boost/geometry/index/detail/rtree/visitors/destroy.hpp [7:9]
- boost/geometry/index/detail/rtree/visitors/distance_query.hpp [7:9]
- boost/geometry/index/detail/rtree/visitors/insert.hpp [7:9]
- boost/geometry/index/detail/rtree/visitors/is_leaf.hpp [7:9]
- boost/geometry/index/detail/rtree/visitors/iterator.hpp [7:9]
- boost/geometry/index/detail/rtree/visitors/remove.hpp [7:9]
- boost/geometry/index/detail/rtree/visitors/spatial_query.hpp [7:9]
- boost/geometry/index/detail/serialization.hpp [5:7]
- boost/geometry/index/detail/tags.hpp [7:9]
- boost/geometry/index/detail/translator.hpp [5:7]
- boost/geometry/index/detail/tuples.hpp [5:7]
- boost/geometry/index/detail/utilities.hpp [5:7]
- boost/geometry/index/detail/varray.hpp [6:8]
- boost/geometry/index/detail/varray_detail.hpp [8:10]
- boost/geometry/index/distance_predicates.hpp [7:9]
- boost/geometry/index/equal_to.hpp [5:7]
- boost/geometry/index/indexable.hpp [5:7]
- boost/geometry/index/inserter.hpp [7:9]
- boost/geometry/index/parameters.hpp [7:9]
- boost/geometry/index/predicates.hpp [7:9]
- boost/geometry/index/rtree.hpp [8:10]
- boost/geometry/io/dsv/write.hpp [11:13]
- boost/geometry/io/io.hpp [10:12]
- boost/geometry/io/svg/svg_mapper.hpp [14:16]
- boost/geometry/io/svg/write.hpp [14:16]
- boost/geometry/io/svg/write_svg.hpp [14:16]
- boost/geometry/io/svg/write_svg_multi.hpp [13:15]
- boost/geometry/io/wkt/detail/prefix.hpp [10:12]
- boost/geometry/io/wkt/detail/wkt_multi.hpp [10:12]
- boost/geometry/io/wkt/read.hpp [16:18]
- boost/geometry/io/wkt/stream.hpp [10:12]
- boost/geometry/io/wkt/wkt.hpp [10:12]
- boost/geometry/io/wkt/write.hpp [16:18]
- boost/geometry/iterators/base.hpp [10:12]
- boost/geometry/iterators/closing_iterator.hpp [10:12]
- boost/geometry/iterators/ever_circling_iterator.hpp [10:12]
- boost/geometry/multi/algorithms/append.hpp [16:18]
- boost/geometry/multi/algorithms/area.hpp [10:12]
- boost/geometry/multi/algorithms/centroid.hpp [10:12]
- boost/geometry/multi/algorithms/clear.hpp [10:12]
- boost/geometry/multi/algorithms/convert.hpp [10:12]
- boost/geometry/multi/algorithms/correct.hpp [10:12]
- boost/geometry/multi/algorithms/covered_by.hpp [14:16]
- boost/geometry/multi/algorithms/detail/extreme_points.hpp [8:10]
- boost/geometry/multi/algorithms/detail/for_each_range.hpp [10:12]
- boost/geometry/multi/algorithms/detail/modify.hpp [10:12]
- boost/geometry/multi/algorithms/detail/modify_with_predicate.hpp [10:12]
- boost/geometry/multi/algorithms/detail/multi_sum.hpp [10:12]
- boost/geometry/multi/algorithms/detail/overlay/copy_segment_point.hpp [8:10]
- boost/geometry/multi/algorithms/detail/overlay/copy_segments.hpp [5:7]
- boost/geometry/multi/algorithms/detail/overlay/get_ring.hpp [5:7]
- boost/geometry/multi/algorithms/detail/overlay/get_turns.hpp [5:7]
- boost/geometry/multi/algorithms/detail/overlay/self_turn_points.hpp [5:7]
- boost/geometry/multi/algorithms/detail/point_on_border.hpp [13:15]
- boost/geometry/multi/algorithms/detail/sections/range_by_section.hpp [13:15]
- boost/geometry/multi/algorithms/detail/sections/sectionalize.hpp [13:15]
- boost/geometry/multi/algorithms/disjoint.hpp [12:14]
- boost/geometry/multi/algorithms/distance.hpp [15:17]
- boost/geometry/multi/algorithms/envelope.hpp [10:12]
- boost/geometry/multi/algorithms/equals.hpp [10:12]
- boost/geometry/multi/algorithms/for_each.hpp [10:12]
- boost/geometry/multi/algorithms/intersection.hpp [10:12]
- boost/geometry/multi/algorithms/length.hpp [10:12]
- boost/geometry/multi/algorithms/num_geometries.hpp [10:12]
- boost/geometry/multi/algorithms/num_interior_rings.hpp [15:17]
- boost/geometry/multi/algorithms/num_points.hpp [15:17]
- boost/geometry/multi/algorithms/perimeter.hpp [10:12]
- boost/geometry/multi/algorithms/remove_spikes.hpp [8:10]
- boost/geometry/multi/algorithms/reverse.hpp [10:12]
- boost/geometry/multi/algorithms/simplify.hpp [10:12]
- boost/geometry/multi/algorithms/transform.hpp [10:12]
- boost/geometry/multi/algorithms/unique.hpp [10:12]
- boost/geometry/multi/algorithms/within.hpp [14:16]
- boost/geometry/multi/core/closure.hpp [10:12]
- boost/geometry/multi/core/geometry_id.hpp [10:12]
- boost/geometry/multi/core/interior_rings.hpp [10:12]
- boost/geometry/multi/core/is_areal.hpp [10:12]
- boost/geometry/multi/core/point_order.hpp [10:12]
- boost/geometry/multi/core/point_type.hpp [10:12]
- boost/geometry/multi/core/ring_type.hpp [13:15]
- boost/geometry/multi/core/tags.hpp [10:12]
- boost/geometry/multi/core/topological_dimension.hpp [10:12]
- boost/geometry/multi/geometries/concepts/check.hpp [10:12]
- boost/geometry/multi/geometries/concepts/multi_linestring_concept.hpp [10:12]
- boost/geometry/multi/geometries/concepts/multi_point_concept.hpp [10:12]
- boost/geometry/multi/geometries/concepts/multi_polygon_concept.hpp [10:12]
- boost/geometry/multi/geometries/multi_geometries.hpp [10:12]
- boost/geometry/multi/geometries/multi_linestring.hpp [10:12]
- boost/geometry/multi/geometries/multi_point.hpp [10:12]
- boost/geometry/multi/geometries/multi_polygon.hpp [10:12]
- boost/geometry/multi/geometries/register/multi_linestring.hpp [10:12]
- boost/geometry/multi/geometries/register/multi_point.hpp [10:12]
- boost/geometry/multi/geometries/register/multi_polygon.hpp [10:12]
- boost/geometry/multi/io/dsv/write.hpp [10:12]
- boost/geometry/multi/io/wkt/detail/prefix.hpp [10:12]
- boost/geometry/multi/io/wkt/read.hpp [10:12]
- boost/geometry/multi/io/wkt/wkt.hpp [10:12]
- boost/geometry/multi/io/wkt/write.hpp [10:12]
- boost/geometry/multi/multi.hpp [13:15]
- boost/geometry/multi/strategies/cartesian/centroid_average.hpp [10:12]
- boost/geometry/multi/views/detail/range_type.hpp [10:12]
- boost/geometry/policies/compare.hpp [10:12]
- boost/geometry/policies/disjoint_interrupt_policy.hpp [17:19]
- boost/geometry/policies/relate/direction.hpp [5:7]
- boost/geometry/policies/relate/intersection_points.hpp [9:11]
- boost/geometry/policies/relate/intersection_ratios.hpp [5:7]
- boost/geometry/policies/relate/tupled.hpp [5:7]
- boost/geometry/policies/robustness/get_rescale_policy.hpp [13:15]
- boost/geometry/policies/robustness/no_rescale_policy.hpp [8:10]
- boost/geometry/policies/robustness/rescale_policy.hpp [12:14]
- boost/geometry/policies/robustness/robust_point_type.hpp [8:10]
- boost/geometry/policies/robustness/robust_type.hpp [8:10]
- boost/geometry/policies/robustness/segment_ratio.hpp [9:11]
- boost/geometry/policies/robustness/segment_ratio_type.hpp [8:10]
- boost/geometry/srs/epsg.hpp [6:8]
- boost/geometry/srs/esri.hpp [6:8]
- boost/geometry/srs/iau2000.hpp [6:8]
- boost/geometry/srs/projection.hpp [9:11]
- boost/geometry/srs/projections/code.hpp [6:8]
- boost/geometry/srs/projections/epsg.hpp [9:11]
- boost/geometry/srs/projections/epsg_params.hpp [6:8]
- boost/geometry/srs/projections/epsg_traits.hpp [9:11]
- boost/geometry/srs/projections/esri.hpp [6:8]
- boost/geometry/srs/projections/esri_params.hpp [6:8]
- boost/geometry/srs/projections/esri_traits.hpp [6:8]
- boost/geometry/srs/projections/exception.hpp [9:11]
- boost/geometry/srs/projections/factory.hpp [9:11]
- boost/geometry/srs/projections/iau2000.hpp [6:8]
- boost/geometry/srs/projections/iau2000_params.hpp [6:8]
- boost/geometry/srs/projections/iau2000_traits.hpp [6:8]
- boost/geometry/srs/projections/impl/aasincos.hpp [6:8]
- boost/geometry/srs/projections/impl/adjlon.hpp [6:8]
- boost/geometry/srs/projections/impl/base_dynamic.hpp [9:11]
- boost/geometry/srs/projections/impl/base_static.hpp [9:11]
- boost/geometry/srs/projections/impl/dms_parser.hpp [9:11]
- boost/geometry/srs/projections/impl/factory_entry.hpp [9:11]
- boost/geometry/srs/projections/impl/function_overloads.hpp [9:11]
- boost/geometry/srs/projections/impl/geocent.hpp [8:10]
- boost/geometry/srs/projections/impl/pj_auth.hpp [10:12]
- boost/geometry/srs/projections/impl/pj_datum_set.hpp [10:12]
- boost/geometry/srs/projections/impl/pj_datums.hpp [10:12]
- boost/geometry/srs/projections/impl/pj_ell_set.hpp [10:12]
- boost/geometry/srs/projections/impl/pj_ellps.hpp [10:12]
- boost/geometry/srs/projections/impl/pj_fwd.hpp [10:12]
- boost/geometry/srs/projections/impl/pj_gauss.hpp [10:12]
- boost/geometry/srs/projections/impl/pj_init.hpp [10:12]
- boost/geometry/srs/projections/impl/pj_inv.hpp [10:12]
- boost/geometry/srs/projections/impl/pj_mlfn.hpp [10:12]
- boost/geometry/srs/projections/impl/pj_msfn.hpp [10:12]
- boost/geometry/srs/projections/impl/pj_param.hpp [10:12]
- boost/geometry/srs/projections/impl/pj_phi2.hpp [10:12]
- boost/geometry/srs/projections/impl/pj_qsfn.hpp [10:12]
- boost/geometry/srs/projections/impl/pj_strerrno.hpp [8:10]
- boost/geometry/srs/projections/impl/pj_transform.hpp [8:10]
- boost/geometry/srs/projections/impl/pj_tsfn.hpp [10:12]
- boost/geometry/srs/projections/impl/pj_units.hpp [10:12]
- boost/geometry/srs/projections/impl/pj_zpoly1.hpp [10:12]
- boost/geometry/srs/projections/impl/proj_mdist.hpp [6:8]
- boost/geometry/srs/projections/impl/projects.hpp [10:12]
- boost/geometry/srs/projections/invalid_point.hpp [6:8]
- boost/geometry/srs/projections/par4.hpp [6:8]
- boost/geometry/srs/projections/proj/aea.hpp [13:15]
- boost/geometry/srs/projections/proj/aeqd.hpp [13:15]
- boost/geometry/srs/projections/proj/airy.hpp [13:15]
- boost/geometry/srs/projections/proj/aitoff.hpp [13:15]
- boost/geometry/srs/projections/proj/august.hpp [13:15]
- boost/geometry/srs/projections/proj/bacon.hpp [13:15]
- boost/geometry/srs/projections/proj/bipc.hpp [13:15]
- boost/geometry/srs/projections/proj/boggs.hpp [13:15]
- boost/geometry/srs/projections/proj/bonne.hpp [13:15]
- boost/geometry/srs/projections/proj/cass.hpp [13:15]
- boost/geometry/srs/projections/proj/cc.hpp [13:15]
- boost/geometry/srs/projections/proj/cea.hpp [13:15]
- boost/geometry/srs/projections/proj/chamb.hpp [13:15]
- boost/geometry/srs/projections/proj/collg.hpp [13:15]
- boost/geometry/srs/projections/proj/crast.hpp [13:15]
- boost/geometry/srs/projections/proj/denoy.hpp [13:15]
- boost/geometry/srs/projections/proj/eck1.hpp [13:15]
- boost/geometry/srs/projections/proj/eck2.hpp [13:15]
- boost/geometry/srs/projections/proj/eck3.hpp [13:15]
- boost/geometry/srs/projections/proj/eck4.hpp [13:15]
- boost/geometry/srs/projections/proj/eck5.hpp [13:15]
- boost/geometry/srs/projections/proj/eqc.hpp [13:15]
- boost/geometry/srs/projections/proj/eqdc.hpp [13:15]
- boost/geometry/srs/projections/proj/etmerc.hpp [13:15]
- boost/geometry/srs/projections/proj/fahey.hpp [13:15]
- boost/geometry/srs/projections/proj/fouc_s.hpp [13:15]
- boost/geometry/srs/projections/proj/gall.hpp [13:15]
- boost/geometry/srs/projections/proj/geocent.hpp [13:15]
- boost/geometry/srs/projections/proj/geos.hpp [13:15]
- boost/geometry/srs/projections/proj/gins8.hpp [13:15]
- boost/geometry/srs/projections/proj/gn_sinu.hpp [13:15]
- boost/geometry/srs/projections/proj/gnom.hpp [13:15]
- boost/geometry/srs/projections/proj/goode.hpp [13:15]
- boost/geometry/srs/projections/proj/hammer.hpp [13:15]
- boost/geometry/srs/projections/proj/hatano.hpp [13:15]
- boost/geometry/srs/projections/proj/healpix.hpp [13:15]
- boost/geometry/srs/projections/proj/igh.hpp [13:15]
- boost/geometry/srs/projections/proj/imw_p.hpp [13:15]
- boost/geometry/srs/projections/proj/isea.hpp [13:15]
- boost/geometry/srs/projections/proj/krovak.hpp [13:15]
- boost/geometry/srs/projections/proj/labrd.hpp [13:15]
- boost/geometry/srs/projections/proj/laea.hpp [13:15]
- boost/geometry/srs/projections/proj/lagrng.hpp [13:15]
- boost/geometry/srs/projections/proj/larr.hpp [13:15]
- boost/geometry/srs/projections/proj/lask.hpp [13:15]
- boost/geometry/srs/projections/proj/latlong.hpp [13:15]
- boost/geometry/srs/projections/proj/lcc.hpp [13:15]
- boost/geometry/srs/projections/proj/lcca.hpp [13:15]
- boost/geometry/srs/projections/proj/loxim.hpp [13:15]
- boost/geometry/srs/projections/proj/lsat.hpp [13:15]
- boost/geometry/srs/projections/proj/mbt_fps.hpp [13:15]
- boost/geometry/srs/projections/proj/mbtfpp.hpp [13:15]
- boost/geometry/srs/projections/proj/mbtfpq.hpp [13:15]
- boost/geometry/srs/projections/proj/merc.hpp [13:15]
- boost/geometry/srs/projections/proj/mill.hpp [13:15]
- boost/geometry/srs/projections/proj/mod_ster.hpp [13:15]
- boost/geometry/srs/projections/proj/moll.hpp [13:15]
- boost/geometry/srs/projections/proj/natearth.hpp [13:15]
- boost/geometry/srs/projections/proj/nell.hpp [13:15]
- boost/geometry/srs/projections/proj/nell_h.hpp [13:15]
- boost/geometry/srs/projections/proj/nocol.hpp [13:15]
- boost/geometry/srs/projections/proj/nsper.hpp [13:15]
- boost/geometry/srs/projections/proj/nzmg.hpp [13:15]
- boost/geometry/srs/projections/proj/ob_tran.hpp [13:15]
- boost/geometry/srs/projections/proj/ocea.hpp [13:15]
- boost/geometry/srs/projections/proj/oea.hpp [13:15]
- boost/geometry/srs/projections/proj/omerc.hpp [13:15]
- boost/geometry/srs/projections/proj/ortho.hpp [13:15]
- boost/geometry/srs/projections/proj/poly.hpp [13:15]
- boost/geometry/srs/projections/proj/putp2.hpp [13:15]
- boost/geometry/srs/projections/proj/putp3.hpp [13:15]
- boost/geometry/srs/projections/proj/putp4p.hpp [13:15]
- boost/geometry/srs/projections/proj/putp5.hpp [13:15]
- boost/geometry/srs/projections/proj/putp6.hpp [13:15]
- boost/geometry/srs/projections/proj/qsc.hpp [13:15]
- boost/geometry/srs/projections/proj/robin.hpp [13:15]
- boost/geometry/srs/projections/proj/rouss.hpp [13:15]
- boost/geometry/srs/projections/proj/rpoly.hpp [13:15]
- boost/geometry/srs/projections/proj/sconics.hpp [13:15]
- boost/geometry/srs/projections/proj/somerc.hpp [13:15]
- boost/geometry/srs/projections/proj/stere.hpp [13:15]
- boost/geometry/srs/projections/proj/sterea.hpp [13:15]
- boost/geometry/srs/projections/proj/sts.hpp [13:15]
- boost/geometry/srs/projections/proj/tcc.hpp [13:15]
- boost/geometry/srs/projections/proj/tcea.hpp [13:15]
- boost/geometry/srs/projections/proj/tmerc.hpp [13:15]
- boost/geometry/srs/projections/proj/tpeqd.hpp [13:15]
- boost/geometry/srs/projections/proj/urm5.hpp [13:15]
- boost/geometry/srs/projections/proj/urmfps.hpp [13:15]
- boost/geometry/srs/projections/proj/vandg.hpp [13:15]
- boost/geometry/srs/projections/proj/vandg2.hpp [13:15]
- boost/geometry/srs/projections/proj/vandg4.hpp [13:15]
- boost/geometry/srs/projections/proj/wag2.hpp [13:15]
- boost/geometry/srs/projections/proj/wag3.hpp [13:15]
- boost/geometry/srs/projections/proj/wag7.hpp [13:15]
- boost/geometry/srs/projections/proj/wink1.hpp [13:15]
- boost/geometry/srs/projections/proj/wink2.hpp [13:15]
- boost/geometry/srs/projections/proj4.hpp [6:8]
- boost/geometry/srs/projections/srid_traits.hpp [6:8]
- boost/geometry/srs/sphere.hpp [15:17]
- boost/geometry/srs/spheroid.hpp [15:17]
- boost/geometry/srs/srs.hpp [15:17]
- boost/geometry/srs/transformation.hpp [6:8]
- boost/geometry/strategies/agnostic/buffer_distance_asymmetric.hpp [5:7]
- boost/geometry/strategies/agnostic/buffer_distance_symmetric.hpp [5:7]
- boost/geometry/strategies/agnostic/hull_graham_andrew.hpp [13:15]
- boost/geometry/strategies/agnostic/point_in_box_by_side.hpp [10:12]
- boost/geometry/strategies/agnostic/point_in_point.hpp [7:9]
- boost/geometry/strategies/agnostic/point_in_poly_oriented_winding.hpp [8:10]
- boost/geometry/strategies/agnostic/point_in_poly_winding.hpp [13:15]
- boost/geometry/strategies/agnostic/simplify_douglas_peucker.hpp [14:16]
- boost/geometry/strategies/area.hpp [11:13]
- boost/geometry/strategies/area_result.hpp [5:7]
- boost/geometry/strategies/azimuth.hpp [7:9]
- boost/geometry/strategies/buffer.hpp [5:7]
- boost/geometry/strategies/cartesian/area.hpp [16:18]
- boost/geometry/strategies/cartesian/area_surveyor.hpp [16:18]
- boost/geometry/strategies/cartesian/azimuth.hpp [7:9]
- boost/geometry/strategies/cartesian/box_in_box.hpp [16:18]
- boost/geometry/strategies/cartesian/buffer_end_flat.hpp [5:7]
- boost/geometry/strategies/cartesian/buffer_end_round.hpp [10:12]
- boost/geometry/strategies/cartesian/buffer_join_miter.hpp [5:7]
- boost/geometry/strategies/cartesian/buffer_join_round.hpp [10:12]
- boost/geometry/strategies/cartesian/buffer_join_round_by_divide.hpp [5:7]
- boost/geometry/strategies/cartesian/buffer_point_circle.hpp [10:12]
- boost/geometry/strategies/cartesian/buffer_point_square.hpp [3:5]
- boost/geometry/strategies/cartesian/buffer_side_straight.hpp [3:5]
- boost/geometry/strategies/cartesian/centroid_average.hpp [16:18]
- boost/geometry/strategies/cartesian/centroid_bashein_detmer.hpp [15:17]
- boost/geometry/strategies/cartesian/centroid_weighted_length.hpp [14:16]
- boost/geometry/strategies/cartesian/disjoint_segment_box.hpp [15:17]
- boost/geometry/strategies/cartesian/distance_projected_point.hpp [15:17]
- boost/geometry/strategies/cartesian/distance_projected_point_ax.hpp [16:18]
- boost/geometry/strategies/cartesian/distance_pythagoras.hpp [10:12]
- boost/geometry/strategies/cartesian/distance_pythagoras_box_box.hpp [15:17]
- boost/geometry/strategies/cartesian/distance_pythagoras_point_box.hpp [15:17]
- boost/geometry/strategies/cartesian/envelope_segment.hpp [7:9]
- boost/geometry/strategies/cartesian/intersection.hpp [12:14]
- boost/geometry/strategies/cartesian/point_in_box.hpp [15:17]
- boost/geometry/strategies/cartesian/point_in_poly_crossings_multiply.hpp [10:12]
- boost/geometry/strategies/cartesian/point_in_poly_franklin.hpp [10:12]
- boost/geometry/strategies/cartesian/point_in_poly_winding.hpp [13:15]
- boost/geometry/strategies/cartesian/side_by_triangle.hpp [16:18]
- boost/geometry/strategies/cartesian/side_of_intersection.hpp [10:12]
- boost/geometry/strategies/centroid.hpp [10:12]
- boost/geometry/strategies/compare.hpp [15:17]
- boost/geometry/strategies/concepts/area_concept.hpp [11:13]
- boost/geometry/strategies/concepts/centroid_concept.hpp [10:12]
- boost/geometry/strategies/concepts/convex_hull_concept.hpp [15:17]
- boost/geometry/strategies/concepts/distance_concept.hpp [15:17]
- boost/geometry/strategies/concepts/segment_intersect_concept.hpp [10:12]
- boost/geometry/strategies/concepts/simplify_concept.hpp [10:12]
- boost/geometry/strategies/concepts/within_concept.hpp [10:12]
- boost/geometry/strategies/convex_hull.hpp [10:12]
- boost/geometry/strategies/covered_by.hpp [15:17]
- boost/geometry/strategies/default_area_result.hpp [11:13]
- boost/geometry/strategies/default_comparable_distance_result.hpp [15:17]
- boost/geometry/strategies/default_distance_result.hpp [15:17]
- boost/geometry/strategies/default_length_result.hpp [15:17]
- boost/geometry/strategies/default_strategy.hpp [10:12]
- boost/geometry/strategies/disjoint.hpp [7:9]
- boost/geometry/strategies/distance.hpp [15:17]
- boost/geometry/strategies/distance_result.hpp [17:19]
- boost/geometry/strategies/envelope.hpp [7:9]
- boost/geometry/strategies/geographic/area.hpp [9:11]
- boost/geometry/strategies/geographic/azimuth.hpp [7:9]
- boost/geometry/strategies/geographic/disjoint_segment_box.hpp [8:10]
- boost/geometry/strategies/geographic/distance.hpp [11:13]
- boost/geometry/strategies/geographic/distance_andoyer.hpp [10:12]
- boost/geometry/strategies/geographic/distance_cross_track.hpp [7:9]
- boost/geometry/strategies/geographic/distance_cross_track_box_box.hpp [8:10]
- boost/geometry/strategies/geographic/distance_cross_track_point_box.hpp [8:10]
- boost/geometry/strategies/geographic/distance_thomas.hpp [10:12]
- boost/geometry/strategies/geographic/distance_vincenty.hpp [10:12]
- boost/geometry/strategies/geographic/envelope_segment.hpp [7:9]
- boost/geometry/strategies/geographic/intersection.hpp [8:10]
- boost/geometry/strategies/geographic/intersection_elliptic.hpp [6:8]
- boost/geometry/strategies/geographic/mapping_ssf.hpp [10:12]
- boost/geometry/strategies/geographic/parameters.hpp [6:8]
- boost/geometry/strategies/geographic/point_in_poly_winding.hpp [6:8]
- boost/geometry/strategies/geographic/side.hpp [10:12]
- boost/geometry/strategies/geographic/side_andoyer.hpp [10:12]
- boost/geometry/strategies/geographic/side_thomas.hpp [10:12]
- boost/geometry/strategies/geographic/side_vincenty.hpp [10:12]
- boost/geometry/strategies/intersection.hpp [6:8]
- boost/geometry/strategies/intersection_result.hpp [9:11]
- boost/geometry/strategies/intersection_strategies.hpp [9:11]
- boost/geometry/strategies/relate.hpp [6:8]
- boost/geometry/strategies/side.hpp [10:12]
- boost/geometry/strategies/side_info.hpp [10:12]
- boost/geometry/strategies/spherical/area.hpp [9:11]
- boost/geometry/strategies/spherical/azimuth.hpp [7:9]
- boost/geometry/strategies/spherical/compare.hpp [10:12]
- boost/geometry/strategies/spherical/disjoint_segment_box.hpp [8:10]
- boost/geometry/strategies/spherical/distance_cross_track.hpp [11:13]
- boost/geometry/strategies/spherical/distance_cross_track_box_box.hpp [7:9]
- boost/geometry/strategies/spherical/distance_cross_track_point_box.hpp [14:16]
- boost/geometry/strategies/spherical/distance_haversine.hpp [11:13]
- boost/geometry/strategies/spherical/envelope_segment.hpp [7:9]
- boost/geometry/strategies/spherical/get_radius.hpp [9:11]
- boost/geometry/strategies/spherical/intersection.hpp [8:10]
- boost/geometry/strategies/spherical/point_in_poly_winding.hpp [13:15]
- boost/geometry/strategies/spherical/side_by_cross_track.hpp [11:13]
- boost/geometry/strategies/spherical/ssf.hpp [9:11]
- boost/geometry/strategies/strategies.hpp [17:19]
- boost/geometry/strategies/strategy_transform.hpp [15:17]
- boost/geometry/strategies/tags.hpp [10:12]
- boost/geometry/strategies/transform.hpp [10:12]
- boost/geometry/strategies/transform/inverse_transformer.hpp [10:12]
- boost/geometry/strategies/transform/map_transformer.hpp [10:12]
- boost/geometry/strategies/transform/matrix_transformers.hpp [15:17]
- boost/geometry/strategies/transform/srs_transformer.hpp [9:11]
- boost/geometry/strategies/within.hpp [15:17]
- boost/geometry/util/add_const_if_c.hpp [10:12]
- boost/geometry/util/bare_type.hpp [12:14]
- boost/geometry/util/calculation_type.hpp [7:9]
- boost/geometry/util/closure_as_bool.hpp [10:12]
- boost/geometry/util/combine_if.hpp [13:15]
- boost/geometry/util/compress_variant.hpp [15:17]
- boost/geometry/util/condition.hpp [7:9]
- boost/geometry/util/coordinate_cast.hpp [10:12]
- boost/geometry/util/for_each_coordinate.hpp [10:12]
- boost/geometry/util/has_infinite_coordinate.hpp [7:9]
- boost/geometry/util/has_nan_coordinate.hpp [8:10]
- boost/geometry/util/has_non_finite_coordinate.hpp [7:9]
- boost/geometry/util/math.hpp [16:18]
- boost/geometry/util/order_as_direction.hpp [10:12]
- boost/geometry/util/parameter_type_of.hpp [10:12]
- boost/geometry/util/promote_floating_point.hpp [10:12]
- boost/geometry/util/range.hpp [10:12]
- boost/geometry/util/rational.hpp [10:12]
- boost/geometry/util/select_calculation_type.hpp [15:17]
- boost/geometry/util/select_coordinate_type.hpp [15:17]
- boost/geometry/util/select_most_precise.hpp [15:17]
- boost/geometry/util/select_sequence_element.hpp [5:7]
- boost/geometry/util/transform_variant.hpp [15:17]
- boost/geometry/views/box_view.hpp [10:12]
- boost/geometry/views/closeable_view.hpp [10:12]
- boost/geometry/views/detail/indexed_point_view.hpp [13:15]
- boost/geometry/views/detail/normalized_view.hpp [13:15]
- boost/geometry/views/detail/points_view.hpp [10:12]
- boost/geometry/views/detail/range_type.hpp [10:12]
- boost/geometry/views/identity_view.hpp [10:12]
- boost/geometry/views/reversible_view.hpp [10:12]
- boost/geometry/views/segment_view.hpp [10:12]
- boost/polygon/interval_concept.hpp [8:10]
- boost/polygon/interval_data.hpp [8:10]
- boost/polygon/interval_traits.hpp [8:10]
- boost/polygon/point_concept.hpp [8:10]
- boost/polygon/point_data.hpp [8:10]
- boost/polygon/point_traits.hpp [8:10]
- boost/polygon/segment_concept.hpp [8:10]
- boost/polygon/segment_data.hpp [8:10]
- boost/polygon/segment_traits.hpp [8:10]
- boost/polygon/transform.hpp [8:10]
-
-KEEP BSL-1.0 0b7aba75ea29f82495a3ea92aa29dffb
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/version.hpp at line 5
- License text:
- // (C) Copyright John maddock 1999. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/version.hpp [3:5]
-
-KEEP BSL-1.0 0b90e853579764b76ff6265207710247
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/integer_fwd.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/integer_fwd.hpp [3:5]
-
-SKIP LicenseRef-scancode-other-permissive 0bee3b00e8750de5f3ce9c579c53bed5
-BELONGS ya.make
- License text:
- // in supporting documentation. William E. Kempf makes no representations
- // about the suitability of this software for any purpose.
- // It is provided "as is" without express or implied warranty.
- Scancode info:
- Original SPDX id: LicenseRef-scancode-other-permissive
- Score : 100.00
- Match type : NOTICE
- Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/other-permissive.LICENSE
- Files with this license:
- boost/interprocess/sync/interprocess_recursive_mutex.hpp [22:24]
- boost/interprocess/sync/posix/mutex.hpp [22:24]
- boost/interprocess/sync/posix/recursive_mutex.hpp [22:24]
- boost/interprocess/sync/spin/recursive_mutex.hpp [22:24]
-
-KEEP BSL-1.0 0bfa54b6d82598f1c5f117adedeec37c
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/algorithm/algorithm.hpp at line 5, boost/algorithm/clamp.hpp at line 5, boost/algorithm/cxx11/all_of.hpp at line 5, boost/algorithm/cxx11/any_of.hpp at line 5, boost/algorithm/cxx11/copy_if.hpp at line 5, boost/algorithm/cxx11/copy_n.hpp at line 5, boost/algorithm/cxx11/find_if_not.hpp at line 5, boost/algorithm/cxx11/iota.hpp at line 5, boost/algorithm/cxx11/is_partitioned.hpp at line 5, boost/algorithm/cxx11/is_permutation.hpp at line 5, boost/algorithm/cxx11/none_of.hpp at line 5, boost/algorithm/cxx11/one_of.hpp at line 5, boost/algorithm/cxx11/partition_copy.hpp at line 5, boost/algorithm/cxx11/partition_point.hpp at line 5, boost/algorithm/cxx14/equal.hpp at line 5, boost/algorithm/cxx14/is_permutation.hpp at line 5, boost/algorithm/gather.hpp at line 5, boost/algorithm/hex.hpp at line 5, boost/algorithm/is_partitioned_until.hpp at line 5, boost/algorithm/searching/boyer_moore.hpp at line 5, boost/algorithm/searching/boyer_moore_horspool.hpp at line 5, boost/algorithm/searching/detail/bm_traits.hpp at line 5, boost/algorithm/searching/detail/debugging.hpp at line 5, boost/algorithm/searching/knuth_morris_pratt.hpp at line 5, boost/algorithm/sort_subrange.hpp at line 5, boost/utility/string_ref.hpp at line 5, boost/utility/string_ref_fwd.hpp at line 5, boost/utility/string_view.hpp at line 6, boost/utility/string_view_fwd.hpp at line 5
- License text:
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/algorithm/algorithm.hpp [4:5]
- boost/algorithm/clamp.hpp [4:5]
- boost/algorithm/cxx11/all_of.hpp [4:5]
- boost/algorithm/cxx11/any_of.hpp [4:5]
- boost/algorithm/cxx11/copy_if.hpp [4:5]
- boost/algorithm/cxx11/copy_n.hpp [4:5]
- boost/algorithm/cxx11/find_if_not.hpp [4:5]
- boost/algorithm/cxx11/iota.hpp [4:5]
- boost/algorithm/cxx11/is_partitioned.hpp [4:5]
- boost/algorithm/cxx11/is_permutation.hpp [4:5]
- boost/algorithm/cxx11/none_of.hpp [4:5]
- boost/algorithm/cxx11/one_of.hpp [4:5]
- boost/algorithm/cxx11/partition_copy.hpp [4:5]
- boost/algorithm/cxx11/partition_point.hpp [4:5]
- boost/algorithm/cxx14/equal.hpp [4:5]
- boost/algorithm/cxx14/is_permutation.hpp [4:5]
- boost/algorithm/gather.hpp [4:5]
- boost/algorithm/hex.hpp [4:5]
- boost/algorithm/is_partitioned_until.hpp [4:5]
- boost/algorithm/searching/boyer_moore.hpp [4:5]
- boost/algorithm/searching/boyer_moore_horspool.hpp [4:5]
- boost/algorithm/searching/detail/bm_traits.hpp [4:5]
- boost/algorithm/searching/detail/debugging.hpp [4:5]
- boost/algorithm/searching/knuth_morris_pratt.hpp [4:5]
- boost/algorithm/sort_subrange.hpp [4:5]
- boost/utility/string_ref.hpp [4:5]
- boost/utility/string_ref_fwd.hpp [4:5]
- boost/utility/string_view.hpp [5:6]
- boost/utility/string_view_fwd.hpp [4:5]
-
-KEEP BSL-1.0 0c343589979bf7b72c670455ba9f8279
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/proto/transform/detail/expand_pack.hpp at line 17, boost/proto/transform/detail/pack_impl.hpp at line 17
- License text:
- // Copyright 2012 Eric Niebler. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/proto/transform/detail/expand_pack.hpp [15:17]
- boost/proto/transform/detail/pack_impl.hpp [15:17]
-
-KEEP BSL-1.0 0cdc4a13eeef26a385639963d67b2617
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/spirit/home/karma/action.hpp at line 4, boost/spirit/home/karma/auxiliary.hpp at line 4, boost/spirit/home/karma/auxiliary/eol.hpp at line 4, boost/spirit/home/karma/auxiliary/lazy.hpp at line 5, boost/spirit/home/karma/binary.hpp at line 4, boost/spirit/home/karma/binary/padding.hpp at line 4, boost/spirit/home/karma/char.hpp at line 4, boost/spirit/home/karma/delimit_flag.hpp at line 4, boost/spirit/home/karma/detail/fail_function.hpp at line 5, boost/spirit/home/karma/detail/generate.hpp at line 4, boost/spirit/home/karma/detail/generate_auto.hpp at line 4, boost/spirit/home/karma/detail/generate_to.hpp at line 4, boost/spirit/home/karma/detail/get_casetag.hpp at line 5, boost/spirit/home/karma/detail/get_stricttag.hpp at line 4, boost/spirit/home/karma/detail/output_iterator.hpp at line 4, boost/spirit/home/karma/detail/string_compare.hpp at line 4, boost/spirit/home/karma/detail/string_generate.hpp at line 4, boost/spirit/home/karma/directive.hpp at line 4, boost/spirit/home/karma/directive/no_delimit.hpp at line 4, boost/spirit/home/karma/directive/strict_relaxed.hpp at line 4, boost/spirit/home/karma/directive/upper_lower_case.hpp at line 5, boost/spirit/home/karma/directive/verbatim.hpp at line 4, boost/spirit/home/karma/generate.hpp at line 4, boost/spirit/home/karma/generate_attr.hpp at line 4, boost/spirit/home/karma/generator.hpp at line 5, boost/spirit/home/karma/meta_compiler.hpp at line 5, boost/spirit/home/karma/nonterminal.hpp at line 4, boost/spirit/home/karma/nonterminal/detail/fcall.hpp at line 5, boost/spirit/home/karma/nonterminal/detail/generator_binder.hpp at line 5, boost/spirit/home/karma/nonterminal/detail/parameterized.hpp at line 6, boost/spirit/home/karma/nonterminal/grammar.hpp at line 5, boost/spirit/home/karma/nonterminal/nonterminal_fwd.hpp at line 4, boost/spirit/home/karma/numeric.hpp at line 4, boost/spirit/home/karma/numeric/bool_policies.hpp at line 4, boost/spirit/home/karma/numeric/detail/bool_utils.hpp at line 4, boost/spirit/home/karma/numeric/detail/real_utils.hpp at line 4, boost/spirit/home/karma/numeric/real_policies.hpp at line 4, boost/spirit/home/karma/operator.hpp at line 4, boost/spirit/home/karma/phoenix_attributes.hpp at line 4, boost/spirit/home/karma/reference.hpp at line 5, boost/spirit/home/karma/stream/detail/format_manip.hpp at line 4, boost/spirit/home/karma/stream/detail/format_manip_auto.hpp at line 4, boost/spirit/home/karma/stream/format_manip.hpp at line 4, boost/spirit/home/karma/stream/format_manip_attr.hpp at line 4, boost/spirit/home/karma/stream/ostream_iterator.hpp at line 4, boost/spirit/home/karma/string.hpp at line 4, boost/spirit/home/karma/what.hpp at line 4, boost/spirit/home/lex.hpp at line 4, boost/spirit/home/lex/argument.hpp at line 7, boost/spirit/home/lex/argument_phoenix.hpp at line 5, boost/spirit/home/lex/detail/sequence_function.hpp at line 4, boost/spirit/home/lex/domain.hpp at line 5, boost/spirit/home/lex/lexer.hpp at line 4, boost/spirit/home/lex/lexer/action.hpp at line 4, boost/spirit/home/lex/lexer/char_token_def.hpp at line 4, boost/spirit/home/lex/lexer/lexer.hpp at line 4, boost/spirit/home/lex/lexer/lexertl/functor.hpp at line 4, boost/spirit/home/lex/lexer/lexertl/functor_data.hpp at line 4, boost/spirit/home/lex/lexer/lexertl/iterator.hpp at line 4, boost/spirit/home/lex/lexer/lexertl/iterator_tokenizer.hpp at line 4, boost/spirit/home/lex/lexer/lexertl/position_token.hpp at line 4, boost/spirit/home/lex/lexer/lexertl/semantic_action_data.hpp at line 4, boost/spirit/home/lex/lexer/lexertl/static_functor_data.hpp at line 4, boost/spirit/home/lex/lexer/lexertl/static_lexer.hpp at line 4, boost/spirit/home/lex/lexer/lexertl/static_version.hpp at line 4, boost/spirit/home/lex/lexer/lexertl/token.hpp at line 4, boost/spirit/home/lex/lexer/pass_flags.hpp at line 4, boost/spirit/home/lex/lexer/sequence.hpp at line 4, boost/spirit/home/lex/lexer/string_token_def.hpp at line 4, boost/spirit/home/lex/lexer/support_functions.hpp at line 4, boost/spirit/home/lex/lexer/support_functions_expression.hpp at line 5, boost/spirit/home/lex/lexer/terminals.hpp at line 4, boost/spirit/home/lex/lexer/token_def.hpp at line 4, boost/spirit/home/lex/lexer_lexertl.hpp at line 4, boost/spirit/home/lex/lexer_static_lexertl.hpp at line 4, boost/spirit/home/lex/lexer_type.hpp at line 5, boost/spirit/home/lex/meta_compiler.hpp at line 5, boost/spirit/home/lex/primitives.hpp at line 4, boost/spirit/home/lex/qi.hpp at line 4, boost/spirit/home/lex/qi/in_state.hpp at line 4, boost/spirit/home/lex/reference.hpp at line 5, boost/spirit/home/lex/tokenize_and_parse.hpp at line 4, boost/spirit/home/lex/tokenize_and_parse_attr.hpp at line 6, boost/spirit/home/qi/nonterminal/nonterminal_fwd.hpp at line 4, boost/spirit/home/qi/parse_attr.hpp at line 6, boost/spirit/home/support/multi_pass_wrapper.hpp at line 4, boost/spirit/repository/home/karma/directive/confix.hpp at line 4, boost/spirit/repository/home/qi/directive/confix.hpp at line 4, boost/spirit/repository/home/qi/primitive/flush_multi_pass.hpp at line 4, boost/spirit/repository/home/qi/primitive/iter_pos.hpp at line 4, boost/spirit/repository/home/support/confix.hpp at line 4, boost/spirit/repository/home/support/distinct.hpp at line 4, boost/spirit/repository/home/support/flush_multi_pass.hpp at line 4, boost/spirit/repository/home/support/kwd.hpp at line 4
- License text:
- // Distributed under the Boost Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/spirit/home/karma/action.hpp [3:4]
- boost/spirit/home/karma/auxiliary.hpp [3:4]
- boost/spirit/home/karma/auxiliary/eol.hpp [3:4]
- boost/spirit/home/karma/auxiliary/lazy.hpp [4:5]
- boost/spirit/home/karma/binary.hpp [3:4]
- boost/spirit/home/karma/binary/padding.hpp [3:4]
- boost/spirit/home/karma/char.hpp [3:4]
- boost/spirit/home/karma/delimit_flag.hpp [3:4]
- boost/spirit/home/karma/detail/fail_function.hpp [4:5]
- boost/spirit/home/karma/detail/generate.hpp [3:4]
- boost/spirit/home/karma/detail/generate_auto.hpp [3:4]
- boost/spirit/home/karma/detail/generate_to.hpp [3:4]
- boost/spirit/home/karma/detail/get_casetag.hpp [4:5]
- boost/spirit/home/karma/detail/get_stricttag.hpp [3:4]
- boost/spirit/home/karma/detail/output_iterator.hpp [3:4]
- boost/spirit/home/karma/detail/string_compare.hpp [3:4]
- boost/spirit/home/karma/detail/string_generate.hpp [3:4]
- boost/spirit/home/karma/directive.hpp [3:4]
- boost/spirit/home/karma/directive/no_delimit.hpp [3:4]
- boost/spirit/home/karma/directive/strict_relaxed.hpp [3:4]
- boost/spirit/home/karma/directive/upper_lower_case.hpp [4:5]
- boost/spirit/home/karma/directive/verbatim.hpp [3:4]
- boost/spirit/home/karma/generate.hpp [3:4]
- boost/spirit/home/karma/generate_attr.hpp [3:4]
- boost/spirit/home/karma/generator.hpp [4:5]
- boost/spirit/home/karma/meta_compiler.hpp [4:5]
- boost/spirit/home/karma/nonterminal.hpp [3:4]
- boost/spirit/home/karma/nonterminal/detail/fcall.hpp [4:5]
- boost/spirit/home/karma/nonterminal/detail/generator_binder.hpp [4:5]
- boost/spirit/home/karma/nonterminal/detail/parameterized.hpp [5:6]
- boost/spirit/home/karma/nonterminal/grammar.hpp [4:5]
- boost/spirit/home/karma/nonterminal/nonterminal_fwd.hpp [3:4]
- boost/spirit/home/karma/numeric.hpp [3:4]
- boost/spirit/home/karma/numeric/bool_policies.hpp [3:4]
- boost/spirit/home/karma/numeric/detail/bool_utils.hpp [3:4]
- boost/spirit/home/karma/numeric/detail/real_utils.hpp [3:4]
- boost/spirit/home/karma/numeric/real_policies.hpp [3:4]
- boost/spirit/home/karma/operator.hpp [3:4]
- boost/spirit/home/karma/phoenix_attributes.hpp [3:4]
- boost/spirit/home/karma/reference.hpp [4:5]
- boost/spirit/home/karma/stream/detail/format_manip.hpp [3:4]
- boost/spirit/home/karma/stream/detail/format_manip_auto.hpp [3:4]
- boost/spirit/home/karma/stream/format_manip.hpp [3:4]
- boost/spirit/home/karma/stream/format_manip_attr.hpp [3:4]
- boost/spirit/home/karma/stream/ostream_iterator.hpp [3:4]
- boost/spirit/home/karma/string.hpp [3:4]
- boost/spirit/home/karma/what.hpp [3:4]
- boost/spirit/home/lex.hpp [3:4]
- boost/spirit/home/lex/argument.hpp [6:7]
- boost/spirit/home/lex/argument_phoenix.hpp [4:5]
- boost/spirit/home/lex/detail/sequence_function.hpp [3:4]
- boost/spirit/home/lex/domain.hpp [4:5]
- boost/spirit/home/lex/lexer.hpp [3:4]
- boost/spirit/home/lex/lexer/action.hpp [3:4]
- boost/spirit/home/lex/lexer/char_token_def.hpp [3:4]
- boost/spirit/home/lex/lexer/lexer.hpp [3:4]
- boost/spirit/home/lex/lexer/lexertl/functor.hpp [3:4]
- boost/spirit/home/lex/lexer/lexertl/functor_data.hpp [3:4]
- boost/spirit/home/lex/lexer/lexertl/iterator.hpp [3:4]
- boost/spirit/home/lex/lexer/lexertl/iterator_tokenizer.hpp [3:4]
- boost/spirit/home/lex/lexer/lexertl/position_token.hpp [3:4]
- boost/spirit/home/lex/lexer/lexertl/semantic_action_data.hpp [3:4]
- boost/spirit/home/lex/lexer/lexertl/static_functor_data.hpp [3:4]
- boost/spirit/home/lex/lexer/lexertl/static_lexer.hpp [3:4]
- boost/spirit/home/lex/lexer/lexertl/static_version.hpp [3:4]
- boost/spirit/home/lex/lexer/lexertl/token.hpp [3:4]
- boost/spirit/home/lex/lexer/pass_flags.hpp [3:4]
- boost/spirit/home/lex/lexer/sequence.hpp [3:4]
- boost/spirit/home/lex/lexer/string_token_def.hpp [3:4]
- boost/spirit/home/lex/lexer/support_functions.hpp [3:4]
- boost/spirit/home/lex/lexer/support_functions_expression.hpp [4:5]
- boost/spirit/home/lex/lexer/terminals.hpp [3:4]
- boost/spirit/home/lex/lexer/token_def.hpp [3:4]
- boost/spirit/home/lex/lexer_lexertl.hpp [3:4]
- boost/spirit/home/lex/lexer_static_lexertl.hpp [3:4]
- boost/spirit/home/lex/lexer_type.hpp [4:5]
- boost/spirit/home/lex/meta_compiler.hpp [4:5]
- boost/spirit/home/lex/primitives.hpp [3:4]
- boost/spirit/home/lex/qi.hpp [3:4]
- boost/spirit/home/lex/qi/in_state.hpp [3:4]
- boost/spirit/home/lex/reference.hpp [4:5]
- boost/spirit/home/lex/tokenize_and_parse.hpp [3:4]
- boost/spirit/home/lex/tokenize_and_parse_attr.hpp [5:6]
- boost/spirit/home/qi/nonterminal/nonterminal_fwd.hpp [3:4]
- boost/spirit/home/qi/parse_attr.hpp [5:6]
- boost/spirit/home/support/multi_pass_wrapper.hpp [3:4]
- boost/spirit/repository/home/karma/directive/confix.hpp [3:4]
- boost/spirit/repository/home/qi/directive/confix.hpp [3:4]
- boost/spirit/repository/home/qi/primitive/flush_multi_pass.hpp [3:4]
- boost/spirit/repository/home/qi/primitive/iter_pos.hpp [3:4]
- boost/spirit/repository/home/support/confix.hpp [3:4]
- boost/spirit/repository/home/support/distinct.hpp [3:4]
- boost/spirit/repository/home/support/flush_multi_pass.hpp [3:4]
- boost/spirit/repository/home/support/kwd.hpp [3:4]
-
-KEEP BSL-1.0 0f69183a9abbaa4c04784abb1ed11d48
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread.hpp at line 6
- License text:
- // Distributed under the Boost Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/thread.hpp [5:6]
-
-KEEP BSL-1.0 10125f34e10cfbd1d22b3a71ea1344d0
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iostreams/detail/config/fpos.hpp at line 3
- License text:
- * Distributed under the Boost Software License, Version 1.0.(See accompanying
- * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/iostreams/detail/config/fpos.hpp [2:3]
-
-KEEP BSL-1.0 109c052486685fdcd3c62f6626e916c6
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/static_warning.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/serialization/static_warning.hpp [5:12]
-
-KEEP BSD-3-Clause 10c780d53468f8ec46403841a1d90c29
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSD-3-Clause
- Score : 98.59
- Match type : TEXT
- Links : http://www.opensource.org/licenses/BSD-3-Clause, https://spdx.org/licenses/BSD-3-Clause
- Files with this license:
- boost/compute/random/threefry_engine.hpp [83:108]
-
-KEEP BSL-1.0 1122abc9579bd663d9e0afd146af9996
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/spirit.hpp at line 7, boost/spirit/home/classic.hpp at line 17, boost/spirit/home/classic/actor.hpp at line 6, boost/spirit/home/classic/actor/assign_actor.hpp at line 6, boost/spirit/home/classic/actor/assign_key_actor.hpp at line 6, boost/spirit/home/classic/actor/clear_actor.hpp at line 6, boost/spirit/home/classic/actor/decrement_actor.hpp at line 6, boost/spirit/home/classic/actor/erase_actor.hpp at line 6, boost/spirit/home/classic/actor/increment_actor.hpp at line 6, boost/spirit/home/classic/actor/insert_at_actor.hpp at line 6, boost/spirit/home/classic/actor/insert_key_actor.hpp at line 6, boost/spirit/home/classic/actor/push_back_actor.hpp at line 6, boost/spirit/home/classic/actor/push_front_actor.hpp at line 6, boost/spirit/home/classic/actor/ref_actor.hpp at line 6, boost/spirit/home/classic/actor/ref_const_ref_actor.hpp at line 6, boost/spirit/home/classic/actor/ref_const_ref_const_ref_a.hpp at line 6, boost/spirit/home/classic/actor/ref_const_ref_value_actor.hpp at line 6, boost/spirit/home/classic/actor/ref_value_actor.hpp at line 7, boost/spirit/home/classic/actor/swap_actor.hpp at line 6, boost/spirit/home/classic/actor/typeof.hpp at line 6, boost/spirit/home/classic/attribute.hpp at line 7, boost/spirit/home/classic/attribute/closure.hpp at line 7, boost/spirit/home/classic/attribute/closure_context.hpp at line 7, boost/spirit/home/classic/attribute/closure_fwd.hpp at line 6, boost/spirit/home/classic/attribute/parametric.hpp at line 6, boost/spirit/home/classic/attribute/typeof.hpp at line 6, boost/spirit/home/classic/core.hpp at line 11, boost/spirit/home/classic/core/assert.hpp at line 7, boost/spirit/home/classic/core/composite/actions.hpp at line 6, boost/spirit/home/classic/core/composite/alternative.hpp at line 8, boost/spirit/home/classic/core/composite/composite.hpp at line 6, boost/spirit/home/classic/core/composite/difference.hpp at line 8, boost/spirit/home/classic/core/composite/directives.hpp at line 7, boost/spirit/home/classic/core/composite/epsilon.hpp at line 7, boost/spirit/home/classic/core/composite/exclusive_or.hpp at line 8, boost/spirit/home/classic/core/composite/intersection.hpp at line 8, boost/spirit/home/classic/core/composite/kleene_star.hpp at line 8, boost/spirit/home/classic/core/composite/list.hpp at line 8, boost/spirit/home/classic/core/composite/no_actions.hpp at line 7, boost/spirit/home/classic/core/composite/operators.hpp at line 8, boost/spirit/home/classic/core/composite/optional.hpp at line 8, boost/spirit/home/classic/core/composite/positive.hpp at line 8, boost/spirit/home/classic/core/composite/sequence.hpp at line 8, boost/spirit/home/classic/core/composite/sequential_and.hpp at line 8, boost/spirit/home/classic/core/composite/sequential_or.hpp at line 8, boost/spirit/home/classic/core/config.hpp at line 6, boost/spirit/home/classic/core/match.hpp at line 6, boost/spirit/home/classic/core/nil.hpp at line 6, boost/spirit/home/classic/core/non_terminal/grammar.hpp at line 8, boost/spirit/home/classic/core/non_terminal/impl/static.hpp at line 6, boost/spirit/home/classic/core/non_terminal/parser_context.hpp at line 7, boost/spirit/home/classic/core/non_terminal/parser_id.hpp at line 7, boost/spirit/home/classic/core/non_terminal/rule.hpp at line 6, boost/spirit/home/classic/core/non_terminal/subrule.hpp at line 7, boost/spirit/home/classic/core/non_terminal/subrule_fwd.hpp at line 6, boost/spirit/home/classic/core/parser.hpp at line 6, boost/spirit/home/classic/core/primitives/numerics.hpp at line 7, boost/spirit/home/classic/core/primitives/numerics_fwd.hpp at line 6, boost/spirit/home/classic/core/primitives/primitives.hpp at line 7, boost/spirit/home/classic/core/safe_bool.hpp at line 6, boost/spirit/home/classic/core/scanner/scanner.hpp at line 6, boost/spirit/home/classic/core/scanner/scanner_fwd.hpp at line 6, boost/spirit/home/classic/core/scanner/skipper.hpp at line 6, boost/spirit/home/classic/core/scanner/skipper_fwd.hpp at line 6, boost/spirit/home/classic/core/typeof.hpp at line 6, boost/spirit/home/classic/debug.hpp at line 7, boost/spirit/home/classic/debug/debug_node.hpp at line 8, boost/spirit/home/classic/debug/minimal.hpp at line 7, boost/spirit/home/classic/debug/parser_names.hpp at line 7, boost/spirit/home/classic/debug/typeof.hpp at line 6, boost/spirit/home/classic/dynamic.hpp at line 8, boost/spirit/home/classic/dynamic/for.hpp at line 7, boost/spirit/home/classic/dynamic/if.hpp at line 8, boost/spirit/home/classic/dynamic/lazy.hpp at line 7, boost/spirit/home/classic/dynamic/rule_alias.hpp at line 6, boost/spirit/home/classic/dynamic/select.hpp at line 6, boost/spirit/home/classic/dynamic/stored_rule.hpp at line 6, boost/spirit/home/classic/dynamic/stored_rule_fwd.hpp at line 6, boost/spirit/home/classic/dynamic/switch.hpp at line 6, boost/spirit/home/classic/dynamic/typeof.hpp at line 6, boost/spirit/home/classic/dynamic/while.hpp at line 7, boost/spirit/home/classic/error_handling.hpp at line 6, boost/spirit/home/classic/error_handling/exceptions.hpp at line 6, boost/spirit/home/classic/error_handling/exceptions_fwd.hpp at line 6, boost/spirit/home/classic/error_handling/typeof.hpp at line 6, boost/spirit/home/classic/iterator.hpp at line 7, boost/spirit/home/classic/iterator/file_iterator.hpp at line 8, boost/spirit/home/classic/iterator/file_iterator_fwd.hpp at line 6, boost/spirit/home/classic/iterator/fixed_size_queue.hpp at line 7, boost/spirit/home/classic/iterator/multi_pass.hpp at line 6, boost/spirit/home/classic/iterator/multi_pass_fwd.hpp at line 6, boost/spirit/home/classic/iterator/position_iterator.hpp at line 8, boost/spirit/home/classic/iterator/position_iterator_fwd.hpp at line 7, boost/spirit/home/classic/iterator/typeof.hpp at line 6, boost/spirit/home/classic/meta.hpp at line 7, boost/spirit/home/classic/meta/as_parser.hpp at line 7, boost/spirit/home/classic/meta/fundamental.hpp at line 6, boost/spirit/home/classic/meta/parser_traits.hpp at line 8, boost/spirit/home/classic/meta/refactoring.hpp at line 6, boost/spirit/home/classic/meta/traverse.hpp at line 7, boost/spirit/home/classic/namespace.hpp at line 7, boost/spirit/home/classic/phoenix.hpp at line 6, boost/spirit/home/classic/phoenix/actor.hpp at line 6, boost/spirit/home/classic/phoenix/binders.hpp at line 6, boost/spirit/home/classic/phoenix/casts.hpp at line 7, boost/spirit/home/classic/phoenix/closures.hpp at line 7, boost/spirit/home/classic/phoenix/composite.hpp at line 6, boost/spirit/home/classic/phoenix/functions.hpp at line 6, boost/spirit/home/classic/phoenix/new.hpp at line 8, boost/spirit/home/classic/phoenix/operators.hpp at line 6, boost/spirit/home/classic/phoenix/primitives.hpp at line 6, boost/spirit/home/classic/phoenix/special_ops.hpp at line 6, boost/spirit/home/classic/phoenix/statements.hpp at line 6, boost/spirit/home/classic/phoenix/tuple_helpers.hpp at line 7, boost/spirit/home/classic/phoenix/tuples.hpp at line 6, boost/spirit/home/classic/symbols.hpp at line 6, boost/spirit/home/classic/symbols/symbols.hpp at line 6, boost/spirit/home/classic/symbols/symbols_fwd.hpp at line 6, boost/spirit/home/classic/symbols/typeof.hpp at line 6, boost/spirit/home/classic/tree/ast.hpp at line 7, boost/spirit/home/classic/tree/ast_fwd.hpp at line 6, boost/spirit/home/classic/tree/common.hpp at line 8, boost/spirit/home/classic/tree/common_fwd.hpp at line 6, boost/spirit/home/classic/tree/parse_tree.hpp at line 7, boost/spirit/home/classic/tree/parse_tree_fwd.hpp at line 6, boost/spirit/home/classic/tree/parse_tree_utils.hpp at line 7, boost/spirit/home/classic/tree/tree_to_xml.hpp at line 7, boost/spirit/home/classic/tree/typeof.hpp at line 6, boost/spirit/home/classic/utility.hpp at line 12, boost/spirit/home/classic/utility/chset.hpp at line 7, boost/spirit/home/classic/utility/chset_operators.hpp at line 7, boost/spirit/home/classic/utility/confix.hpp at line 6, boost/spirit/home/classic/utility/confix_fwd.hpp at line 6, boost/spirit/home/classic/utility/distinct.hpp at line 7, boost/spirit/home/classic/utility/distinct_fwd.hpp at line 6, boost/spirit/home/classic/utility/escape_char.hpp at line 6, boost/spirit/home/classic/utility/escape_char_fwd.hpp at line 6, boost/spirit/home/classic/utility/flush_multi_pass.hpp at line 6, boost/spirit/home/classic/utility/functor_parser.hpp at line 7, boost/spirit/home/classic/utility/grammar_def.hpp at line 7, boost/spirit/home/classic/utility/grammar_def_fwd.hpp at line 6, boost/spirit/home/classic/utility/impl/chset/basic_chset.hpp at line 7, boost/spirit/home/classic/utility/impl/chset/range_run.hpp at line 6, boost/spirit/home/classic/utility/lists.hpp at line 6, boost/spirit/home/classic/utility/lists_fwd.hpp at line 6, boost/spirit/home/classic/utility/loops.hpp at line 8, boost/spirit/home/classic/utility/regex.hpp at line 6, boost/spirit/home/classic/utility/rule_parser.hpp at line 6, boost/spirit/home/classic/utility/scoped_lock.hpp at line 6, boost/spirit/home/classic/utility/typeof.hpp at line 6, boost/spirit/home/classic/version.hpp at line 6, boost/spirit/home/support/char_set/basic_chset.hpp at line 7, boost/spirit/home/support/common_terminals.hpp at line 6, boost/spirit/home/support/detail/make_cons.hpp at line 6, boost/spirit/home/support/make_component.hpp at line 6, boost/spirit/home/support/meta_compiler.hpp at line 6, boost/spirit/home/support/modify.hpp at line 6, boost/spirit/home/x3/version.hpp at line 7, boost/spirit/include/classic.hpp at line 7, boost/spirit/include/classic_actions.hpp at line 7, boost/spirit/include/classic_actor.hpp at line 7, boost/spirit/include/classic_alternative.hpp at line 7, boost/spirit/include/classic_as_parser.hpp at line 7, boost/spirit/include/classic_assert.hpp at line 7, boost/spirit/include/classic_assign_actor.hpp at line 7, boost/spirit/include/classic_assign_key_actor.hpp at line 7, boost/spirit/include/classic_ast.hpp at line 7, boost/spirit/include/classic_ast_fwd.hpp at line 7, boost/spirit/include/classic_attribute.hpp at line 7, boost/spirit/include/classic_basic_chset.hpp at line 7, boost/spirit/include/classic_chset.hpp at line 7, boost/spirit/include/classic_chset_operators.hpp at line 7, boost/spirit/include/classic_clear_actor.hpp at line 7, boost/spirit/include/classic_closure.hpp at line 7, boost/spirit/include/classic_closure_context.hpp at line 7, boost/spirit/include/classic_closure_fwd.hpp at line 7, boost/spirit/include/classic_common.hpp at line 7, boost/spirit/include/classic_common_fwd.hpp at line 7, boost/spirit/include/classic_composite.hpp at line 7, boost/spirit/include/classic_config.hpp at line 7, boost/spirit/include/classic_confix.hpp at line 7, boost/spirit/include/classic_confix_fwd.hpp at line 7, boost/spirit/include/classic_core.hpp at line 7, boost/spirit/include/classic_debug.hpp at line 7, boost/spirit/include/classic_debug_node.hpp at line 7, boost/spirit/include/classic_decrement_actor.hpp at line 7, boost/spirit/include/classic_difference.hpp at line 7, boost/spirit/include/classic_directives.hpp at line 7, boost/spirit/include/classic_distinct.hpp at line 7, boost/spirit/include/classic_distinct_fwd.hpp at line 7, boost/spirit/include/classic_dynamic.hpp at line 7, boost/spirit/include/classic_epsilon.hpp at line 7, boost/spirit/include/classic_erase_actor.hpp at line 7, boost/spirit/include/classic_error_handling.hpp at line 7, boost/spirit/include/classic_escape_char.hpp at line 7, boost/spirit/include/classic_escape_char_fwd.hpp at line 7, boost/spirit/include/classic_exceptions.hpp at line 7, boost/spirit/include/classic_exceptions_fwd.hpp at line 7, boost/spirit/include/classic_exclusive_or.hpp at line 7, boost/spirit/include/classic_file_iterator.hpp at line 7, boost/spirit/include/classic_file_iterator_fwd.hpp at line 7, boost/spirit/include/classic_fixed_size_queue.hpp at line 7, boost/spirit/include/classic_flush_multi_pass.hpp at line 7, boost/spirit/include/classic_for.hpp at line 7, boost/spirit/include/classic_functor_parser.hpp at line 7, boost/spirit/include/classic_fundamental.hpp at line 7, boost/spirit/include/classic_grammar.hpp at line 7, boost/spirit/include/classic_grammar_def.hpp at line 7, boost/spirit/include/classic_grammar_def_fwd.hpp at line 7, boost/spirit/include/classic_if.hpp at line 7, boost/spirit/include/classic_increment_actor.hpp at line 7, boost/spirit/include/classic_insert_at_actor.hpp at line 7, boost/spirit/include/classic_insert_key_actor.hpp at line 7, boost/spirit/include/classic_intersection.hpp at line 7, boost/spirit/include/classic_iterator.hpp at line 7, boost/spirit/include/classic_kleene_star.hpp at line 7, boost/spirit/include/classic_lazy.hpp at line 7, boost/spirit/include/classic_list.hpp at line 7, boost/spirit/include/classic_lists.hpp at line 7, boost/spirit/include/classic_lists_fwd.hpp at line 7, boost/spirit/include/classic_loops.hpp at line 7, boost/spirit/include/classic_match.hpp at line 7, boost/spirit/include/classic_meta.hpp at line 7, boost/spirit/include/classic_minimal.hpp at line 7, boost/spirit/include/classic_multi_pass.hpp at line 7, boost/spirit/include/classic_multi_pass_fwd.hpp at line 7, boost/spirit/include/classic_nil.hpp at line 7, boost/spirit/include/classic_no_actions.hpp at line 7, boost/spirit/include/classic_numerics.hpp at line 7, boost/spirit/include/classic_numerics_fwd.hpp at line 7, boost/spirit/include/classic_operators.hpp at line 7, boost/spirit/include/classic_optional.hpp at line 7, boost/spirit/include/classic_parametric.hpp at line 7, boost/spirit/include/classic_parse_tree.hpp at line 7, boost/spirit/include/classic_parse_tree_fwd.hpp at line 7, boost/spirit/include/classic_parse_tree_utils.hpp at line 7, boost/spirit/include/classic_parser.hpp at line 7, boost/spirit/include/classic_parser_context.hpp at line 7, boost/spirit/include/classic_parser_id.hpp at line 7, boost/spirit/include/classic_parser_names.hpp at line 7, boost/spirit/include/classic_parser_traits.hpp at line 7, boost/spirit/include/classic_position_iterator.hpp at line 7, boost/spirit/include/classic_position_iterator_fwd.hpp at line 7, boost/spirit/include/classic_positive.hpp at line 7, boost/spirit/include/classic_primitives.hpp at line 7, boost/spirit/include/classic_push_back_actor.hpp at line 7, boost/spirit/include/classic_push_front_actor.hpp at line 7, boost/spirit/include/classic_range_run.hpp at line 7, boost/spirit/include/classic_ref_actor.hpp at line 7, boost/spirit/include/classic_ref_const_ref_actor.hpp at line 7, boost/spirit/include/classic_ref_const_ref_const_ref_a.hpp at line 7, boost/spirit/include/classic_ref_const_ref_value_actor.hpp at line 7, boost/spirit/include/classic_ref_value_actor.hpp at line 7, boost/spirit/include/classic_refactoring.hpp at line 7, boost/spirit/include/classic_regex.hpp at line 7, boost/spirit/include/classic_rule.hpp at line 7, boost/spirit/include/classic_rule_alias.hpp at line 7, boost/spirit/include/classic_rule_parser.hpp at line 7, boost/spirit/include/classic_safe_bool.hpp at line 7, boost/spirit/include/classic_scanner.hpp at line 7, boost/spirit/include/classic_scanner_fwd.hpp at line 7, boost/spirit/include/classic_scoped_lock.hpp at line 7, boost/spirit/include/classic_select.hpp at line 7, boost/spirit/include/classic_sequence.hpp at line 7, boost/spirit/include/classic_sequential_and.hpp at line 7, boost/spirit/include/classic_sequential_or.hpp at line 7, boost/spirit/include/classic_skipper.hpp at line 7, boost/spirit/include/classic_skipper_fwd.hpp at line 7, boost/spirit/include/classic_spirit.hpp at line 6, boost/spirit/include/classic_static.hpp at line 7, boost/spirit/include/classic_stored_rule.hpp at line 7, boost/spirit/include/classic_stored_rule_fwd.hpp at line 7, boost/spirit/include/classic_subrule.hpp at line 7, boost/spirit/include/classic_subrule_fwd.hpp at line 7, boost/spirit/include/classic_swap_actor.hpp at line 7, boost/spirit/include/classic_switch.hpp at line 7, boost/spirit/include/classic_symbols.hpp at line 7, boost/spirit/include/classic_symbols_fwd.hpp at line 7, boost/spirit/include/classic_traverse.hpp at line 7, boost/spirit/include/classic_tree_to_xml.hpp at line 7, boost/spirit/include/classic_typeof.hpp at line 7, boost/spirit/include/classic_utility.hpp at line 7, boost/spirit/include/classic_version.hpp at line 7, boost/spirit/include/classic_while.hpp at line 7, boost/spirit/include/phoenix1.hpp at line 7, boost/spirit/include/phoenix1_actor.hpp at line 7, boost/spirit/include/phoenix1_binders.hpp at line 7, boost/spirit/include/phoenix1_casts.hpp at line 7, boost/spirit/include/phoenix1_closures.hpp at line 7, boost/spirit/include/phoenix1_composite.hpp at line 7, boost/spirit/include/phoenix1_functions.hpp at line 7, boost/spirit/include/phoenix1_new.hpp at line 7, boost/spirit/include/phoenix1_operators.hpp at line 7, boost/spirit/include/phoenix1_primitives.hpp at line 7, boost/spirit/include/phoenix1_special_ops.hpp at line 7, boost/spirit/include/phoenix1_statements.hpp at line 7, boost/spirit/include/phoenix1_tuple_helpers.hpp at line 7, boost/spirit/include/phoenix1_tuples.hpp at line 7, boost/spirit/include/version.hpp at line 7, boost/spirit/repository/home/qi/operator/detail/keywords.hpp at line 5, boost/spirit/version.hpp at line 7
- License text:
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/spirit.hpp [6:7]
- boost/spirit/home/classic.hpp [16:17]
- boost/spirit/home/classic/actor.hpp [5:6]
- boost/spirit/home/classic/actor/assign_actor.hpp [5:6]
- boost/spirit/home/classic/actor/assign_key_actor.hpp [5:6]
- boost/spirit/home/classic/actor/clear_actor.hpp [5:6]
- boost/spirit/home/classic/actor/decrement_actor.hpp [5:6]
- boost/spirit/home/classic/actor/erase_actor.hpp [5:6]
- boost/spirit/home/classic/actor/increment_actor.hpp [5:6]
- boost/spirit/home/classic/actor/insert_at_actor.hpp [5:6]
- boost/spirit/home/classic/actor/insert_key_actor.hpp [5:6]
- boost/spirit/home/classic/actor/push_back_actor.hpp [5:6]
- boost/spirit/home/classic/actor/push_front_actor.hpp [5:6]
- boost/spirit/home/classic/actor/ref_actor.hpp [5:6]
- boost/spirit/home/classic/actor/ref_const_ref_actor.hpp [5:6]
- boost/spirit/home/classic/actor/ref_const_ref_const_ref_a.hpp [5:6]
- boost/spirit/home/classic/actor/ref_const_ref_value_actor.hpp [5:6]
- boost/spirit/home/classic/actor/ref_value_actor.hpp [6:7]
- boost/spirit/home/classic/actor/swap_actor.hpp [5:6]
- boost/spirit/home/classic/actor/typeof.hpp [5:6]
- boost/spirit/home/classic/attribute.hpp [6:7]
- boost/spirit/home/classic/attribute/closure.hpp [6:7]
- boost/spirit/home/classic/attribute/closure_context.hpp [6:7]
- boost/spirit/home/classic/attribute/closure_fwd.hpp [5:6]
- boost/spirit/home/classic/attribute/parametric.hpp [5:6]
- boost/spirit/home/classic/attribute/typeof.hpp [5:6]
- boost/spirit/home/classic/core.hpp [10:11]
- boost/spirit/home/classic/core/assert.hpp [6:7]
- boost/spirit/home/classic/core/composite/actions.hpp [5:6]
- boost/spirit/home/classic/core/composite/alternative.hpp [7:8]
- boost/spirit/home/classic/core/composite/composite.hpp [5:6]
- boost/spirit/home/classic/core/composite/difference.hpp [7:8]
- boost/spirit/home/classic/core/composite/directives.hpp [6:7]
- boost/spirit/home/classic/core/composite/epsilon.hpp [6:7]
- boost/spirit/home/classic/core/composite/exclusive_or.hpp [7:8]
- boost/spirit/home/classic/core/composite/intersection.hpp [7:8]
- boost/spirit/home/classic/core/composite/kleene_star.hpp [7:8]
- boost/spirit/home/classic/core/composite/list.hpp [7:8]
- boost/spirit/home/classic/core/composite/no_actions.hpp [6:7]
- boost/spirit/home/classic/core/composite/operators.hpp [7:8]
- boost/spirit/home/classic/core/composite/optional.hpp [7:8]
- boost/spirit/home/classic/core/composite/positive.hpp [7:8]
- boost/spirit/home/classic/core/composite/sequence.hpp [7:8]
- boost/spirit/home/classic/core/composite/sequential_and.hpp [7:8]
- boost/spirit/home/classic/core/composite/sequential_or.hpp [7:8]
- boost/spirit/home/classic/core/config.hpp [5:6]
- boost/spirit/home/classic/core/match.hpp [5:6]
- boost/spirit/home/classic/core/nil.hpp [5:6]
- boost/spirit/home/classic/core/non_terminal/grammar.hpp [7:8]
- boost/spirit/home/classic/core/non_terminal/impl/static.hpp [5:6]
- boost/spirit/home/classic/core/non_terminal/parser_context.hpp [6:7]
- boost/spirit/home/classic/core/non_terminal/parser_id.hpp [6:7]
- boost/spirit/home/classic/core/non_terminal/rule.hpp [5:6]
- boost/spirit/home/classic/core/non_terminal/subrule.hpp [6:7]
- boost/spirit/home/classic/core/non_terminal/subrule_fwd.hpp [5:6]
- boost/spirit/home/classic/core/parser.hpp [5:6]
- boost/spirit/home/classic/core/primitives/numerics.hpp [6:7]
- boost/spirit/home/classic/core/primitives/numerics_fwd.hpp [5:6]
- boost/spirit/home/classic/core/primitives/primitives.hpp [6:7]
- boost/spirit/home/classic/core/safe_bool.hpp [5:6]
- boost/spirit/home/classic/core/scanner/scanner.hpp [5:6]
- boost/spirit/home/classic/core/scanner/scanner_fwd.hpp [5:6]
- boost/spirit/home/classic/core/scanner/skipper.hpp [5:6]
- boost/spirit/home/classic/core/scanner/skipper_fwd.hpp [5:6]
- boost/spirit/home/classic/core/typeof.hpp [5:6]
- boost/spirit/home/classic/debug.hpp [6:7]
- boost/spirit/home/classic/debug/debug_node.hpp [7:8]
- boost/spirit/home/classic/debug/minimal.hpp [6:7]
- boost/spirit/home/classic/debug/parser_names.hpp [6:7]
- boost/spirit/home/classic/debug/typeof.hpp [5:6]
- boost/spirit/home/classic/dynamic.hpp [7:8]
- boost/spirit/home/classic/dynamic/for.hpp [6:7]
- boost/spirit/home/classic/dynamic/if.hpp [7:8]
- boost/spirit/home/classic/dynamic/lazy.hpp [6:7]
- boost/spirit/home/classic/dynamic/rule_alias.hpp [5:6]
- boost/spirit/home/classic/dynamic/select.hpp [5:6]
- boost/spirit/home/classic/dynamic/stored_rule.hpp [5:6]
- boost/spirit/home/classic/dynamic/stored_rule_fwd.hpp [5:6]
- boost/spirit/home/classic/dynamic/switch.hpp [5:6]
- boost/spirit/home/classic/dynamic/typeof.hpp [5:6]
- boost/spirit/home/classic/dynamic/while.hpp [6:7]
- boost/spirit/home/classic/error_handling.hpp [5:6]
- boost/spirit/home/classic/error_handling/exceptions.hpp [5:6]
- boost/spirit/home/classic/error_handling/exceptions_fwd.hpp [5:6]
- boost/spirit/home/classic/error_handling/typeof.hpp [5:6]
- boost/spirit/home/classic/iterator.hpp [6:7]
- boost/spirit/home/classic/iterator/file_iterator.hpp [7:8]
- boost/spirit/home/classic/iterator/file_iterator_fwd.hpp [5:6]
- boost/spirit/home/classic/iterator/fixed_size_queue.hpp [6:7]
- boost/spirit/home/classic/iterator/multi_pass.hpp [5:6]
- boost/spirit/home/classic/iterator/multi_pass_fwd.hpp [5:6]
- boost/spirit/home/classic/iterator/position_iterator.hpp [7:8]
- boost/spirit/home/classic/iterator/position_iterator_fwd.hpp [6:7]
- boost/spirit/home/classic/iterator/typeof.hpp [5:6]
- boost/spirit/home/classic/meta.hpp [6:7]
- boost/spirit/home/classic/meta/as_parser.hpp [6:7]
- boost/spirit/home/classic/meta/fundamental.hpp [5:6]
- boost/spirit/home/classic/meta/parser_traits.hpp [7:8]
- boost/spirit/home/classic/meta/refactoring.hpp [5:6]
- boost/spirit/home/classic/meta/traverse.hpp [6:7]
- boost/spirit/home/classic/namespace.hpp [6:7]
- boost/spirit/home/classic/phoenix.hpp [5:6]
- boost/spirit/home/classic/phoenix/actor.hpp [5:6]
- boost/spirit/home/classic/phoenix/binders.hpp [5:6]
- boost/spirit/home/classic/phoenix/casts.hpp [6:7]
- boost/spirit/home/classic/phoenix/closures.hpp [6:7]
- boost/spirit/home/classic/phoenix/composite.hpp [5:6]
- boost/spirit/home/classic/phoenix/functions.hpp [5:6]
- boost/spirit/home/classic/phoenix/new.hpp [7:8]
- boost/spirit/home/classic/phoenix/operators.hpp [5:6]
- boost/spirit/home/classic/phoenix/primitives.hpp [5:6]
- boost/spirit/home/classic/phoenix/special_ops.hpp [5:6]
- boost/spirit/home/classic/phoenix/statements.hpp [5:6]
- boost/spirit/home/classic/phoenix/tuple_helpers.hpp [6:7]
- boost/spirit/home/classic/phoenix/tuples.hpp [5:6]
- boost/spirit/home/classic/symbols.hpp [5:6]
- boost/spirit/home/classic/symbols/symbols.hpp [5:6]
- boost/spirit/home/classic/symbols/symbols_fwd.hpp [5:6]
- boost/spirit/home/classic/symbols/typeof.hpp [5:6]
- boost/spirit/home/classic/tree/ast.hpp [6:7]
- boost/spirit/home/classic/tree/ast_fwd.hpp [5:6]
- boost/spirit/home/classic/tree/common.hpp [7:8]
- boost/spirit/home/classic/tree/common_fwd.hpp [5:6]
- boost/spirit/home/classic/tree/parse_tree.hpp [6:7]
- boost/spirit/home/classic/tree/parse_tree_fwd.hpp [5:6]
- boost/spirit/home/classic/tree/parse_tree_utils.hpp [6:7]
- boost/spirit/home/classic/tree/tree_to_xml.hpp [6:7]
- boost/spirit/home/classic/tree/typeof.hpp [5:6]
- boost/spirit/home/classic/utility.hpp [11:12]
- boost/spirit/home/classic/utility/chset.hpp [6:7]
- boost/spirit/home/classic/utility/chset_operators.hpp [6:7]
- boost/spirit/home/classic/utility/confix.hpp [5:6]
- boost/spirit/home/classic/utility/confix_fwd.hpp [5:6]
- boost/spirit/home/classic/utility/distinct.hpp [6:7]
- boost/spirit/home/classic/utility/distinct_fwd.hpp [5:6]
- boost/spirit/home/classic/utility/escape_char.hpp [5:6]
- boost/spirit/home/classic/utility/escape_char_fwd.hpp [5:6]
- boost/spirit/home/classic/utility/flush_multi_pass.hpp [5:6]
- boost/spirit/home/classic/utility/functor_parser.hpp [6:7]
- boost/spirit/home/classic/utility/grammar_def.hpp [6:7]
- boost/spirit/home/classic/utility/grammar_def_fwd.hpp [5:6]
- boost/spirit/home/classic/utility/impl/chset/basic_chset.hpp [6:7]
- boost/spirit/home/classic/utility/impl/chset/range_run.hpp [5:6]
- boost/spirit/home/classic/utility/lists.hpp [5:6]
- boost/spirit/home/classic/utility/lists_fwd.hpp [5:6]
- boost/spirit/home/classic/utility/loops.hpp [7:8]
- boost/spirit/home/classic/utility/regex.hpp [5:6]
- boost/spirit/home/classic/utility/rule_parser.hpp [5:6]
- boost/spirit/home/classic/utility/scoped_lock.hpp [5:6]
- boost/spirit/home/classic/utility/typeof.hpp [5:6]
- boost/spirit/home/classic/version.hpp [5:6]
- boost/spirit/home/support/char_set/basic_chset.hpp [6:7]
- boost/spirit/home/support/common_terminals.hpp [5:6]
- boost/spirit/home/support/detail/make_cons.hpp [5:6]
- boost/spirit/home/support/make_component.hpp [5:6]
- boost/spirit/home/support/meta_compiler.hpp [5:6]
- boost/spirit/home/support/modify.hpp [5:6]
- boost/spirit/home/x3/version.hpp [6:7]
- boost/spirit/include/classic.hpp [6:7]
- boost/spirit/include/classic_actions.hpp [6:7]
- boost/spirit/include/classic_actor.hpp [6:7]
- boost/spirit/include/classic_alternative.hpp [6:7]
- boost/spirit/include/classic_as_parser.hpp [6:7]
- boost/spirit/include/classic_assert.hpp [6:7]
- boost/spirit/include/classic_assign_actor.hpp [6:7]
- boost/spirit/include/classic_assign_key_actor.hpp [6:7]
- boost/spirit/include/classic_ast.hpp [6:7]
- boost/spirit/include/classic_ast_fwd.hpp [6:7]
- boost/spirit/include/classic_attribute.hpp [6:7]
- boost/spirit/include/classic_basic_chset.hpp [6:7]
- boost/spirit/include/classic_chset.hpp [6:7]
- boost/spirit/include/classic_chset_operators.hpp [6:7]
- boost/spirit/include/classic_clear_actor.hpp [6:7]
- boost/spirit/include/classic_closure.hpp [6:7]
- boost/spirit/include/classic_closure_context.hpp [6:7]
- boost/spirit/include/classic_closure_fwd.hpp [6:7]
- boost/spirit/include/classic_common.hpp [6:7]
- boost/spirit/include/classic_common_fwd.hpp [6:7]
- boost/spirit/include/classic_composite.hpp [6:7]
- boost/spirit/include/classic_config.hpp [6:7]
- boost/spirit/include/classic_confix.hpp [6:7]
- boost/spirit/include/classic_confix_fwd.hpp [6:7]
- boost/spirit/include/classic_core.hpp [6:7]
- boost/spirit/include/classic_debug.hpp [6:7]
- boost/spirit/include/classic_debug_node.hpp [6:7]
- boost/spirit/include/classic_decrement_actor.hpp [6:7]
- boost/spirit/include/classic_difference.hpp [6:7]
- boost/spirit/include/classic_directives.hpp [6:7]
- boost/spirit/include/classic_distinct.hpp [6:7]
- boost/spirit/include/classic_distinct_fwd.hpp [6:7]
- boost/spirit/include/classic_dynamic.hpp [6:7]
- boost/spirit/include/classic_epsilon.hpp [6:7]
- boost/spirit/include/classic_erase_actor.hpp [6:7]
- boost/spirit/include/classic_error_handling.hpp [6:7]
- boost/spirit/include/classic_escape_char.hpp [6:7]
- boost/spirit/include/classic_escape_char_fwd.hpp [6:7]
- boost/spirit/include/classic_exceptions.hpp [6:7]
- boost/spirit/include/classic_exceptions_fwd.hpp [6:7]
- boost/spirit/include/classic_exclusive_or.hpp [6:7]
- boost/spirit/include/classic_file_iterator.hpp [6:7]
- boost/spirit/include/classic_file_iterator_fwd.hpp [6:7]
- boost/spirit/include/classic_fixed_size_queue.hpp [6:7]
- boost/spirit/include/classic_flush_multi_pass.hpp [6:7]
- boost/spirit/include/classic_for.hpp [6:7]
- boost/spirit/include/classic_functor_parser.hpp [6:7]
- boost/spirit/include/classic_fundamental.hpp [6:7]
- boost/spirit/include/classic_grammar.hpp [6:7]
- boost/spirit/include/classic_grammar_def.hpp [6:7]
- boost/spirit/include/classic_grammar_def_fwd.hpp [6:7]
- boost/spirit/include/classic_if.hpp [6:7]
- boost/spirit/include/classic_increment_actor.hpp [6:7]
- boost/spirit/include/classic_insert_at_actor.hpp [6:7]
- boost/spirit/include/classic_insert_key_actor.hpp [6:7]
- boost/spirit/include/classic_intersection.hpp [6:7]
- boost/spirit/include/classic_iterator.hpp [6:7]
- boost/spirit/include/classic_kleene_star.hpp [6:7]
- boost/spirit/include/classic_lazy.hpp [6:7]
- boost/spirit/include/classic_list.hpp [6:7]
- boost/spirit/include/classic_lists.hpp [6:7]
- boost/spirit/include/classic_lists_fwd.hpp [6:7]
- boost/spirit/include/classic_loops.hpp [6:7]
- boost/spirit/include/classic_match.hpp [6:7]
- boost/spirit/include/classic_meta.hpp [6:7]
- boost/spirit/include/classic_minimal.hpp [6:7]
- boost/spirit/include/classic_multi_pass.hpp [6:7]
- boost/spirit/include/classic_multi_pass_fwd.hpp [6:7]
- boost/spirit/include/classic_nil.hpp [6:7]
- boost/spirit/include/classic_no_actions.hpp [6:7]
- boost/spirit/include/classic_numerics.hpp [6:7]
- boost/spirit/include/classic_numerics_fwd.hpp [6:7]
- boost/spirit/include/classic_operators.hpp [6:7]
- boost/spirit/include/classic_optional.hpp [6:7]
- boost/spirit/include/classic_parametric.hpp [6:7]
- boost/spirit/include/classic_parse_tree.hpp [6:7]
- boost/spirit/include/classic_parse_tree_fwd.hpp [6:7]
- boost/spirit/include/classic_parse_tree_utils.hpp [6:7]
- boost/spirit/include/classic_parser.hpp [6:7]
- boost/spirit/include/classic_parser_context.hpp [6:7]
- boost/spirit/include/classic_parser_id.hpp [6:7]
- boost/spirit/include/classic_parser_names.hpp [6:7]
- boost/spirit/include/classic_parser_traits.hpp [6:7]
- boost/spirit/include/classic_position_iterator.hpp [6:7]
- boost/spirit/include/classic_position_iterator_fwd.hpp [6:7]
- boost/spirit/include/classic_positive.hpp [6:7]
- boost/spirit/include/classic_primitives.hpp [6:7]
- boost/spirit/include/classic_push_back_actor.hpp [6:7]
- boost/spirit/include/classic_push_front_actor.hpp [6:7]
- boost/spirit/include/classic_range_run.hpp [6:7]
- boost/spirit/include/classic_ref_actor.hpp [6:7]
- boost/spirit/include/classic_ref_const_ref_actor.hpp [6:7]
- boost/spirit/include/classic_ref_const_ref_const_ref_a.hpp [6:7]
- boost/spirit/include/classic_ref_const_ref_value_actor.hpp [6:7]
- boost/spirit/include/classic_ref_value_actor.hpp [6:7]
- boost/spirit/include/classic_refactoring.hpp [6:7]
- boost/spirit/include/classic_regex.hpp [6:7]
- boost/spirit/include/classic_rule.hpp [6:7]
- boost/spirit/include/classic_rule_alias.hpp [6:7]
- boost/spirit/include/classic_rule_parser.hpp [6:7]
- boost/spirit/include/classic_safe_bool.hpp [6:7]
- boost/spirit/include/classic_scanner.hpp [6:7]
- boost/spirit/include/classic_scanner_fwd.hpp [6:7]
- boost/spirit/include/classic_scoped_lock.hpp [6:7]
- boost/spirit/include/classic_select.hpp [6:7]
- boost/spirit/include/classic_sequence.hpp [6:7]
- boost/spirit/include/classic_sequential_and.hpp [6:7]
- boost/spirit/include/classic_sequential_or.hpp [6:7]
- boost/spirit/include/classic_skipper.hpp [6:7]
- boost/spirit/include/classic_skipper_fwd.hpp [6:7]
- boost/spirit/include/classic_spirit.hpp [5:6]
- boost/spirit/include/classic_static.hpp [6:7]
- boost/spirit/include/classic_stored_rule.hpp [6:7]
- boost/spirit/include/classic_stored_rule_fwd.hpp [6:7]
- boost/spirit/include/classic_subrule.hpp [6:7]
- boost/spirit/include/classic_subrule_fwd.hpp [6:7]
- boost/spirit/include/classic_swap_actor.hpp [6:7]
- boost/spirit/include/classic_switch.hpp [6:7]
- boost/spirit/include/classic_symbols.hpp [6:7]
- boost/spirit/include/classic_symbols_fwd.hpp [6:7]
- boost/spirit/include/classic_traverse.hpp [6:7]
- boost/spirit/include/classic_tree_to_xml.hpp [6:7]
- boost/spirit/include/classic_typeof.hpp [6:7]
- boost/spirit/include/classic_utility.hpp [6:7]
- boost/spirit/include/classic_version.hpp [6:7]
- boost/spirit/include/classic_while.hpp [6:7]
- boost/spirit/include/phoenix1.hpp [6:7]
- boost/spirit/include/phoenix1_actor.hpp [6:7]
- boost/spirit/include/phoenix1_binders.hpp [6:7]
- boost/spirit/include/phoenix1_casts.hpp [6:7]
- boost/spirit/include/phoenix1_closures.hpp [6:7]
- boost/spirit/include/phoenix1_composite.hpp [6:7]
- boost/spirit/include/phoenix1_functions.hpp [6:7]
- boost/spirit/include/phoenix1_new.hpp [6:7]
- boost/spirit/include/phoenix1_operators.hpp [6:7]
- boost/spirit/include/phoenix1_primitives.hpp [6:7]
- boost/spirit/include/phoenix1_special_ops.hpp [6:7]
- boost/spirit/include/phoenix1_statements.hpp [6:7]
- boost/spirit/include/phoenix1_tuple_helpers.hpp [6:7]
- boost/spirit/include/phoenix1_tuples.hpp [6:7]
- boost/spirit/include/version.hpp [6:7]
- boost/spirit/repository/home/qi/operator/detail/keywords.hpp [4:5]
- boost/spirit/version.hpp [6:7]
-
-KEEP BSL-1.0 118b3ba302185a79b12cdba1c2e58ffc
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/cstdfloat.hpp at line 6, boost/math/cstdfloat/cstdfloat_cmath.hpp at line 6, boost/math/cstdfloat/cstdfloat_complex.hpp at line 6, boost/math/cstdfloat/cstdfloat_iostream.hpp at line 6, boost/math/cstdfloat/cstdfloat_limits.hpp at line 6, boost/math/cstdfloat/cstdfloat_types.hpp at line 6
- License text:
- // Distributed under the Boost Software License,
- // Version 1.0. (See accompanying file LICENSE_1_0.txt
- // or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/cstdfloat.hpp [5:7]
- boost/math/cstdfloat/cstdfloat_cmath.hpp [5:7]
- boost/math/cstdfloat/cstdfloat_complex.hpp [5:7]
- boost/math/cstdfloat/cstdfloat_iostream.hpp [5:7]
- boost/math/cstdfloat/cstdfloat_limits.hpp [5:7]
- boost/math/cstdfloat/cstdfloat_types.hpp [5:7]
-
-KEEP BSL-1.0 128c17e73213317d8ae187104d4937dc
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/qvm/all.hpp at line 4, boost/qvm/assert.hpp at line 4, boost/qvm/deduce_mat.hpp at line 4, boost/qvm/deduce_quat.hpp at line 4, boost/qvm/deduce_scalar.hpp at line 4, boost/qvm/deduce_vec.hpp at line 4, boost/qvm/detail/cofactor_impl.hpp at line 4, boost/qvm/detail/determinant_impl.hpp at line 4, boost/qvm/detail/mat_assign.hpp at line 4, boost/qvm/detail/quat_assign.hpp at line 4, boost/qvm/detail/remove_const.hpp at line 4, boost/qvm/detail/swizzle_traits.hpp at line 4, boost/qvm/detail/transp_impl.hpp at line 4, boost/qvm/detail/vec_assign.hpp at line 4, boost/qvm/enable_if.hpp at line 4, boost/qvm/error.hpp at line 4, boost/qvm/gen/mat_assign2.hpp at line 4, boost/qvm/gen/mat_assign3.hpp at line 4, boost/qvm/gen/mat_assign4.hpp at line 4, boost/qvm/gen/mat_operations2.hpp at line 4, boost/qvm/gen/mat_operations3.hpp at line 4, boost/qvm/gen/mat_operations4.hpp at line 4, boost/qvm/gen/swizzle2.hpp at line 4, boost/qvm/gen/swizzle3.hpp at line 4, boost/qvm/gen/swizzle4.hpp at line 4, boost/qvm/gen/vec_assign2.hpp at line 4, boost/qvm/gen/vec_assign3.hpp at line 4, boost/qvm/gen/vec_assign4.hpp at line 4, boost/qvm/gen/vec_mat_operations2.hpp at line 4, boost/qvm/gen/vec_mat_operations3.hpp at line 4, boost/qvm/gen/vec_mat_operations4.hpp at line 4, boost/qvm/gen/vec_operations2.hpp at line 4, boost/qvm/gen/vec_operations3.hpp at line 4, boost/qvm/gen/vec_operations4.hpp at line 4, boost/qvm/inline.hpp at line 4, boost/qvm/map.hpp at line 4, boost/qvm/map_mat_mat.hpp at line 4, boost/qvm/map_mat_vec.hpp at line 4, boost/qvm/map_vec_mat.hpp at line 4, boost/qvm/mat.hpp at line 4, boost/qvm/mat_access.hpp at line 4, boost/qvm/mat_operations.hpp at line 4, boost/qvm/mat_operations2.hpp at line 4, boost/qvm/mat_operations3.hpp at line 4, boost/qvm/mat_operations4.hpp at line 4, boost/qvm/mat_traits.hpp at line 4, boost/qvm/mat_traits_array.hpp at line 4, boost/qvm/mat_traits_defaults.hpp at line 4, boost/qvm/math.hpp at line 4, boost/qvm/operations.hpp at line 4, boost/qvm/quat.hpp at line 4, boost/qvm/quat_access.hpp at line 4, boost/qvm/quat_operations.hpp at line 4, boost/qvm/quat_traits.hpp at line 4, boost/qvm/quat_traits_array.hpp at line 4, boost/qvm/quat_traits_defaults.hpp at line 4, boost/qvm/quat_vec_operations.hpp at line 4, boost/qvm/scalar_traits.hpp at line 4, boost/qvm/static_assert.hpp at line 4, boost/qvm/swizzle.hpp at line 4, boost/qvm/swizzle2.hpp at line 4, boost/qvm/swizzle3.hpp at line 4, boost/qvm/swizzle4.hpp at line 4, boost/qvm/throw_exception.hpp at line 4, boost/qvm/to_string.hpp at line 4, boost/qvm/vec.hpp at line 4, boost/qvm/vec_access.hpp at line 4, boost/qvm/vec_mat_operations.hpp at line 4, boost/qvm/vec_mat_operations2.hpp at line 4, boost/qvm/vec_mat_operations3.hpp at line 4, boost/qvm/vec_mat_operations4.hpp at line 4, boost/qvm/vec_operations.hpp at line 4, boost/qvm/vec_operations2.hpp at line 4, boost/qvm/vec_operations3.hpp at line 4, boost/qvm/vec_operations4.hpp at line 4, boost/qvm/vec_traits.hpp at line 4, boost/qvm/vec_traits_array.hpp at line 4, boost/qvm/vec_traits_defaults.hpp at line 4
- License text:
- //Distributed under the Boost Software License, Version 1.0. (See accompanying
- //file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/qvm/all.hpp [3:4]
- boost/qvm/assert.hpp [3:4]
- boost/qvm/deduce_mat.hpp [3:4]
- boost/qvm/deduce_quat.hpp [3:4]
- boost/qvm/deduce_scalar.hpp [3:4]
- boost/qvm/deduce_vec.hpp [3:4]
- boost/qvm/detail/cofactor_impl.hpp [3:4]
- boost/qvm/detail/determinant_impl.hpp [3:4]
- boost/qvm/detail/mat_assign.hpp [3:4]
- boost/qvm/detail/quat_assign.hpp [3:4]
- boost/qvm/detail/remove_const.hpp [3:4]
- boost/qvm/detail/swizzle_traits.hpp [3:4]
- boost/qvm/detail/transp_impl.hpp [3:4]
- boost/qvm/detail/vec_assign.hpp [3:4]
- boost/qvm/enable_if.hpp [3:4]
- boost/qvm/error.hpp [3:4]
- boost/qvm/gen/mat_assign2.hpp [3:4]
- boost/qvm/gen/mat_assign3.hpp [3:4]
- boost/qvm/gen/mat_assign4.hpp [3:4]
- boost/qvm/gen/mat_operations2.hpp [3:4]
- boost/qvm/gen/mat_operations3.hpp [3:4]
- boost/qvm/gen/mat_operations4.hpp [3:4]
- boost/qvm/gen/swizzle2.hpp [3:4]
- boost/qvm/gen/swizzle3.hpp [3:4]
- boost/qvm/gen/swizzle4.hpp [3:4]
- boost/qvm/gen/vec_assign2.hpp [3:4]
- boost/qvm/gen/vec_assign3.hpp [3:4]
- boost/qvm/gen/vec_assign4.hpp [3:4]
- boost/qvm/gen/vec_mat_operations2.hpp [3:4]
- boost/qvm/gen/vec_mat_operations3.hpp [3:4]
- boost/qvm/gen/vec_mat_operations4.hpp [3:4]
- boost/qvm/gen/vec_operations2.hpp [3:4]
- boost/qvm/gen/vec_operations3.hpp [3:4]
- boost/qvm/gen/vec_operations4.hpp [3:4]
- boost/qvm/inline.hpp [3:4]
- boost/qvm/map.hpp [3:4]
- boost/qvm/map_mat_mat.hpp [3:4]
- boost/qvm/map_mat_vec.hpp [3:4]
- boost/qvm/map_vec_mat.hpp [3:4]
- boost/qvm/mat.hpp [3:4]
- boost/qvm/mat_access.hpp [3:4]
- boost/qvm/mat_operations.hpp [3:4]
- boost/qvm/mat_operations2.hpp [3:4]
- boost/qvm/mat_operations3.hpp [3:4]
- boost/qvm/mat_operations4.hpp [3:4]
- boost/qvm/mat_traits.hpp [3:4]
- boost/qvm/mat_traits_array.hpp [3:4]
- boost/qvm/mat_traits_defaults.hpp [3:4]
- boost/qvm/math.hpp [3:4]
- boost/qvm/operations.hpp [3:4]
- boost/qvm/quat.hpp [3:4]
- boost/qvm/quat_access.hpp [3:4]
- boost/qvm/quat_operations.hpp [3:4]
- boost/qvm/quat_traits.hpp [3:4]
- boost/qvm/quat_traits_array.hpp [3:4]
- boost/qvm/quat_traits_defaults.hpp [3:4]
- boost/qvm/quat_vec_operations.hpp [3:4]
- boost/qvm/scalar_traits.hpp [3:4]
- boost/qvm/static_assert.hpp [3:4]
- boost/qvm/swizzle.hpp [3:4]
- boost/qvm/swizzle2.hpp [3:4]
- boost/qvm/swizzle3.hpp [3:4]
- boost/qvm/swizzle4.hpp [3:4]
- boost/qvm/throw_exception.hpp [3:4]
- boost/qvm/to_string.hpp [3:4]
- boost/qvm/vec.hpp [3:4]
- boost/qvm/vec_access.hpp [3:4]
- boost/qvm/vec_mat_operations.hpp [3:4]
- boost/qvm/vec_mat_operations2.hpp [3:4]
- boost/qvm/vec_mat_operations3.hpp [3:4]
- boost/qvm/vec_mat_operations4.hpp [3:4]
- boost/qvm/vec_operations.hpp [3:4]
- boost/qvm/vec_operations2.hpp [3:4]
- boost/qvm/vec_operations3.hpp [3:4]
- boost/qvm/vec_operations4.hpp [3:4]
- boost/qvm/vec_traits.hpp [3:4]
- boost/qvm/vec_traits_array.hpp [3:4]
- boost/qvm/vec_traits_defaults.hpp [3:4]
-
-KEEP BSL-1.0 13ab6f5e798d74384b45b33ca7c58d68
-BELONGS libs/context/ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: libs/context/src/asm/jump_i386_ms_pe_masm.asm at line 4, libs/context/src/asm/jump_i386_ms_pe_masm.masm at line 4, libs/context/src/asm/jump_x86_64_ms_pe_masm.asm at line 4, libs/context/src/asm/jump_x86_64_ms_pe_masm.masm at line 4, libs/context/src/asm/make_i386_ms_pe_masm.asm at line 4, libs/context/src/asm/make_i386_ms_pe_masm.masm at line 4, libs/context/src/asm/make_x86_64_ms_pe_masm.asm at line 4, libs/context/src/asm/make_x86_64_ms_pe_masm.masm at line 4, libs/context/src/asm/ontop_i386_ms_pe_masm.asm at line 4, libs/context/src/asm/ontop_i386_ms_pe_masm.masm at line 4, libs/context/src/asm/ontop_x86_64_ms_pe_masm.asm at line 4, libs/context/src/asm/ontop_x86_64_ms_pe_masm.masm at line 4
- License text:
- ; Distributed under the Boost Software License, Version 1.0.
- ; (See accompanying file LICENSE_1_0.txt or copy at
- ; http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- libs/context/src/asm/jump_i386_ms_pe_masm.asm [3:5]
- libs/context/src/asm/jump_i386_ms_pe_masm.masm [3:5]
- libs/context/src/asm/jump_x86_64_ms_pe_masm.asm [3:5]
- libs/context/src/asm/jump_x86_64_ms_pe_masm.masm [3:5]
- libs/context/src/asm/make_i386_ms_pe_masm.asm [3:5]
- libs/context/src/asm/make_i386_ms_pe_masm.masm [3:5]
- libs/context/src/asm/make_x86_64_ms_pe_masm.asm [3:5]
- libs/context/src/asm/make_x86_64_ms_pe_masm.masm [3:5]
- libs/context/src/asm/ontop_i386_ms_pe_masm.asm [3:5]
- libs/context/src/asm/ontop_i386_ms_pe_masm.masm [3:5]
- libs/context/src/asm/ontop_x86_64_ms_pe_masm.asm [3:5]
- libs/context/src/asm/ontop_x86_64_ms_pe_masm.masm [3:5]
-
-KEEP BSL-1.0 16183dd745250c0ebe94aaec82ad7455
-BELONGS ya.make
- License text:
- // Use, modification, and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 65.62
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/test/impl/debug.ipp [2:4]
- boost/test/impl/execution_monitor.ipp [3:5]
-
-KEEP BSL-1.0 16b657614c09f3c453fe6a1aa0ffd686
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/assign/ptr_map_inserter.hpp at line 5, boost/ptr_container/detail/throw_exception.hpp at line 6, boost/range/algorithm_ext.hpp at line 10, boost/range/as_array.hpp at line 5, boost/range/as_literal.hpp at line 5, boost/range/detail/as_literal.hpp at line 5, boost/range/detail/str_types.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/assign/ptr_map_inserter.hpp [3:6]
- boost/ptr_container/detail/throw_exception.hpp [4:7]
- boost/range/algorithm_ext.hpp [8:11]
- boost/range/as_array.hpp [3:6]
- boost/range/as_literal.hpp [3:6]
- boost/range/detail/as_literal.hpp [3:6]
- boost/range/detail/str_types.hpp [3:6]
-
-SKIP MPL-1.1 174fd41ba7f8a6897edce2ffe88b2b8e
-BELONGS ya.make
- License text:
- //! Given a MPL-style metafunction class, `metafunction_class<f>` is a
- Scancode info:
- Original SPDX id: MPL-1.1
- Score : 80.00
- Match type : REFERENCE
- Links : http://www.mozilla.com/MPL/1.1/index.html, http://www.mozilla.org/MPL/MPL-1.1.html, https://spdx.org/licenses/MPL-1.1
- Files with this license:
- boost/hana/fwd/type.hpp [449:449]
-
-KEEP BSL-1.0 17737caa978fa8ec0868ed818b864f37
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/date_time/date_duration_types.hpp at line 6, boost/date_time/local_time/date_duration_operators.hpp at line 6, boost/date_time/posix_time/date_duration_operators.hpp at line 6
- License text:
- * Subject to the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or
- * http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 78.12
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/date_time/date_duration_types.hpp [5:7]
- boost/date_time/local_time/date_duration_operators.hpp [5:7]
- boost/date_time/posix_time/date_duration_operators.hpp [5:7]
-
-KEEP BSL-1.0 17b918dacae9f9fa2bf0c63a057b8f7d
-BELONGS libs/context/ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: libs/context/src/asm/jump_arm_aapcs_pe_armasm.asm at line 4, libs/context/src/asm/jump_arm_aapcs_pe_armasm.masm at line 4, libs/context/src/asm/make_arm_aapcs_pe_armasm.asm at line 4, libs/context/src/asm/make_arm_aapcs_pe_armasm.masm at line 4, libs/context/src/asm/ontop_arm_aapcs_pe_armasm.asm at line 4, libs/context/src/asm/ontop_arm_aapcs_pe_armasm.masm at line 4
- License text:
- ; Distributed under the Boost Software License, Version 1.0.
- ; (See accompanying file LICENSE_1_0.txt or copy at
- ; http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- libs/context/src/asm/jump_arm_aapcs_pe_armasm.asm [3:5]
- libs/context/src/asm/jump_arm_aapcs_pe_armasm.masm [3:5]
- libs/context/src/asm/make_arm_aapcs_pe_armasm.asm [3:5]
- libs/context/src/asm/make_arm_aapcs_pe_armasm.masm [3:5]
- libs/context/src/asm/ontop_arm_aapcs_pe_armasm.asm [3:5]
- libs/context/src/asm/ontop_arm_aapcs_pe_armasm.masm [3:5]
-
-KEEP BSL-1.0 17c78abfb72b607685d239798799adf0
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/select_type.hpp at line 3
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 92.11
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/detail/select_type.hpp [2:8]
-
-KEEP Public-Domain 17d79a73205393436cf0e2fea510d697
-BELONGS ya.make
- License text:
- // This also contains public domain code from MurmurHash. From the
- Scancode info:
- Original SPDX id: LicenseRef-scancode-public-domain
- Score : 100.00
- Match type : NOTICE
- Links : http://www.linfo.org/publicdomain.html, https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/public-domain.LICENSE
- Files with this license:
- boost/container_hash/hash.hpp [10:10]
-
-KEEP BSL-1.0 183e86c91b8c37c98adc93220ae9a174
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/pointer_to_other.hpp at line 12
- License text:
- // Distributed under the Boost Software License, Version 1.0.
- //
- // (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/pointer_to_other.hpp [10:13]
-
-KEEP BSL-1.0 18cc6219abca4ab596a367d46ceb4662
-BELONGS ya.make
- License text:
- // Distributed under the Boost Software License, Version 1.0.
- // http://www.boost.org/LICENSE_1_0.txt
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 94.44
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/endian/conversion.hpp [5:6]
- boost/endian/detail/intrinsic.hpp [6:7]
-
-KEEP BSL-1.0 18fdd9d2369476efe1064640cd661a14
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/container_fwd.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2005-2014. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/container/container_fwd.hpp [3:5]
-
-SKIP LicenseRef-scancode-unknown-license-reference 1abf24efa7605ba648c826259919ecd7
-BELONGS ya.make
- License text:
- // Copyright 2011 - 2013 John Maddock. Distributed under the Boost
- Scancode info:
- Original SPDX id: LicenseRef-scancode-unknown-license-reference
- Score : 11.00
- Match type : INTRO
- Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/unknown-license-reference.LICENSE
- Files with this license:
- boost/multiprecision/detail/functions/pow.hpp [3:3]
-
-KEEP BSL-1.0 1bc23f67ca27c295e38b46190cdce22f
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/algorithm/minmax.hpp at line 4, boost/algorithm/minmax_element.hpp at line 4, boost/asio.hpp at line 8, boost/asio/associated_allocator.hpp at line 8, boost/asio/associated_executor.hpp at line 8, boost/asio/async_result.hpp at line 8, boost/asio/basic_datagram_socket.hpp at line 8, boost/asio/basic_deadline_timer.hpp at line 8, boost/asio/basic_io_object.hpp at line 8, boost/asio/basic_raw_socket.hpp at line 8, boost/asio/basic_seq_packet_socket.hpp at line 8, boost/asio/basic_serial_port.hpp at line 9, boost/asio/basic_signal_set.hpp at line 8, boost/asio/basic_socket.hpp at line 8, boost/asio/basic_socket_acceptor.hpp at line 8, boost/asio/basic_socket_iostream.hpp at line 8, boost/asio/basic_socket_streambuf.hpp at line 8, boost/asio/basic_stream_socket.hpp at line 8, boost/asio/basic_streambuf.hpp at line 8, boost/asio/basic_streambuf_fwd.hpp at line 8, boost/asio/basic_waitable_timer.hpp at line 8, boost/asio/bind_executor.hpp at line 8, boost/asio/buffer.hpp at line 8, boost/asio/buffered_read_stream.hpp at line 8, boost/asio/buffered_read_stream_fwd.hpp at line 8, boost/asio/buffered_stream.hpp at line 8, boost/asio/buffered_stream_fwd.hpp at line 8, boost/asio/buffered_write_stream.hpp at line 8, boost/asio/buffered_write_stream_fwd.hpp at line 8, boost/asio/buffers_iterator.hpp at line 8, boost/asio/completion_condition.hpp at line 8, boost/asio/connect.hpp at line 8, boost/asio/coroutine.hpp at line 8, boost/asio/datagram_socket_service.hpp at line 8, boost/asio/deadline_timer.hpp at line 8, boost/asio/deadline_timer_service.hpp at line 8, boost/asio/defer.hpp at line 8, boost/asio/detail/array.hpp at line 8, boost/asio/detail/array_fwd.hpp at line 8, boost/asio/detail/assert.hpp at line 8, boost/asio/detail/atomic_count.hpp at line 8, boost/asio/detail/base_from_completion_cond.hpp at line 8, boost/asio/detail/bind_handler.hpp at line 8, boost/asio/detail/buffer_resize_guard.hpp at line 8, boost/asio/detail/buffer_sequence_adapter.hpp at line 8, boost/asio/detail/buffered_stream_storage.hpp at line 8, boost/asio/detail/call_stack.hpp at line 8, boost/asio/detail/chrono.hpp at line 8, boost/asio/detail/chrono_time_traits.hpp at line 8, boost/asio/detail/completion_handler.hpp at line 8, boost/asio/detail/concurrency_hint.hpp at line 8, boost/asio/detail/conditionally_enabled_event.hpp at line 8, boost/asio/detail/conditionally_enabled_mutex.hpp at line 8, boost/asio/detail/config.hpp at line 8, boost/asio/detail/consuming_buffers.hpp at line 8, boost/asio/detail/cstddef.hpp at line 8, boost/asio/detail/cstdint.hpp at line 8, boost/asio/detail/date_time_fwd.hpp at line 8, boost/asio/detail/deadline_timer_service.hpp at line 8, boost/asio/detail/dependent_type.hpp at line 8, boost/asio/detail/descriptor_ops.hpp at line 8, boost/asio/detail/descriptor_read_op.hpp at line 8, boost/asio/detail/descriptor_write_op.hpp at line 8, boost/asio/detail/dev_poll_reactor.hpp at line 8, boost/asio/detail/epoll_reactor.hpp at line 8, boost/asio/detail/event.hpp at line 8, boost/asio/detail/eventfd_select_interrupter.hpp at line 9, boost/asio/detail/executor_op.hpp at line 8, boost/asio/detail/fd_set_adapter.hpp at line 8, boost/asio/detail/fenced_block.hpp at line 8, boost/asio/detail/functional.hpp at line 8, boost/asio/detail/gcc_arm_fenced_block.hpp at line 8, boost/asio/detail/gcc_hppa_fenced_block.hpp at line 8, boost/asio/detail/gcc_sync_fenced_block.hpp at line 8, boost/asio/detail/gcc_x86_fenced_block.hpp at line 8, boost/asio/detail/global.hpp at line 8, boost/asio/detail/handler_alloc_helpers.hpp at line 8, boost/asio/detail/handler_cont_helpers.hpp at line 8, boost/asio/detail/handler_invoke_helpers.hpp at line 8, boost/asio/detail/handler_tracking.hpp at line 8, boost/asio/detail/handler_type_requirements.hpp at line 8, boost/asio/detail/handler_work.hpp at line 8, boost/asio/detail/hash_map.hpp at line 8, boost/asio/detail/impl/buffer_sequence_adapter.ipp at line 8, boost/asio/detail/impl/descriptor_ops.ipp at line 8, boost/asio/detail/impl/dev_poll_reactor.hpp at line 8, boost/asio/detail/impl/dev_poll_reactor.ipp at line 8, boost/asio/detail/impl/epoll_reactor.hpp at line 8, boost/asio/detail/impl/epoll_reactor.ipp at line 8, boost/asio/detail/impl/eventfd_select_interrupter.ipp at line 9, boost/asio/detail/impl/handler_tracking.ipp at line 8, boost/asio/detail/impl/kqueue_reactor.hpp at line 9, boost/asio/detail/impl/kqueue_reactor.ipp at line 9, boost/asio/detail/impl/null_event.ipp at line 8, boost/asio/detail/impl/pipe_select_interrupter.ipp at line 8, boost/asio/detail/impl/posix_event.ipp at line 8, boost/asio/detail/impl/posix_mutex.ipp at line 8, boost/asio/detail/impl/posix_thread.ipp at line 8, boost/asio/detail/impl/posix_tss_ptr.ipp at line 8, boost/asio/detail/impl/reactive_descriptor_service.ipp at line 8, boost/asio/detail/impl/reactive_serial_port_service.ipp at line 9, boost/asio/detail/impl/reactive_socket_service_base.ipp at line 8, boost/asio/detail/impl/resolver_service_base.ipp at line 8, boost/asio/detail/impl/scheduler.ipp at line 8, boost/asio/detail/impl/select_reactor.hpp at line 8, boost/asio/detail/impl/select_reactor.ipp at line 8, boost/asio/detail/impl/service_registry.hpp at line 8, boost/asio/detail/impl/service_registry.ipp at line 8, boost/asio/detail/impl/signal_set_service.ipp at line 8, boost/asio/detail/impl/socket_ops.ipp at line 8, boost/asio/detail/impl/socket_select_interrupter.ipp at line 8, boost/asio/detail/impl/strand_executor_service.hpp at line 8, boost/asio/detail/impl/strand_executor_service.ipp at line 8, boost/asio/detail/impl/strand_service.hpp at line 8, boost/asio/detail/impl/strand_service.ipp at line 8, boost/asio/detail/impl/throw_error.ipp at line 8, boost/asio/detail/impl/timer_queue_ptime.ipp at line 8, boost/asio/detail/impl/timer_queue_set.ipp at line 8, boost/asio/detail/impl/win_event.ipp at line 8, boost/asio/detail/impl/win_iocp_handle_service.ipp at line 9, boost/asio/detail/impl/win_iocp_io_context.hpp at line 8, boost/asio/detail/impl/win_iocp_io_context.ipp at line 8, boost/asio/detail/impl/win_iocp_serial_port_service.ipp at line 9, boost/asio/detail/impl/win_iocp_socket_service_base.ipp at line 8, boost/asio/detail/impl/win_mutex.ipp at line 8, boost/asio/detail/impl/win_object_handle_service.ipp at line 9, boost/asio/detail/impl/win_static_mutex.ipp at line 8, boost/asio/detail/impl/win_thread.ipp at line 8, boost/asio/detail/impl/win_tss_ptr.ipp at line 8, boost/asio/detail/impl/winrt_ssocket_service_base.ipp at line 8, boost/asio/detail/impl/winrt_timer_scheduler.hpp at line 8, boost/asio/detail/impl/winrt_timer_scheduler.ipp at line 8, boost/asio/detail/impl/winsock_init.ipp at line 8, boost/asio/detail/io_control.hpp at line 8, boost/asio/detail/is_buffer_sequence.hpp at line 8, boost/asio/detail/is_executor.hpp at line 8, boost/asio/detail/keyword_tss_ptr.hpp at line 8, boost/asio/detail/kqueue_reactor.hpp at line 9, boost/asio/detail/limits.hpp at line 8, boost/asio/detail/local_free_on_block_exit.hpp at line 8, boost/asio/detail/macos_fenced_block.hpp at line 8, boost/asio/detail/memory.hpp at line 8, boost/asio/detail/mutex.hpp at line 8, boost/asio/detail/noncopyable.hpp at line 8, boost/asio/detail/null_event.hpp at line 8, boost/asio/detail/null_fenced_block.hpp at line 8, boost/asio/detail/null_global.hpp at line 8, boost/asio/detail/null_mutex.hpp at line 8, boost/asio/detail/null_reactor.hpp at line 8, boost/asio/detail/null_signal_blocker.hpp at line 8, boost/asio/detail/null_socket_service.hpp at line 8, boost/asio/detail/null_static_mutex.hpp at line 8, boost/asio/detail/null_thread.hpp at line 8, boost/asio/detail/null_tss_ptr.hpp at line 8, boost/asio/detail/object_pool.hpp at line 8, boost/asio/detail/old_win_sdk_compat.hpp at line 8, boost/asio/detail/op_queue.hpp at line 8, boost/asio/detail/operation.hpp at line 8, boost/asio/detail/pipe_select_interrupter.hpp at line 8, boost/asio/detail/pop_options.hpp at line 8, boost/asio/detail/posix_event.hpp at line 8, boost/asio/detail/posix_fd_set_adapter.hpp at line 8, boost/asio/detail/posix_global.hpp at line 8, boost/asio/detail/posix_mutex.hpp at line 8, boost/asio/detail/posix_signal_blocker.hpp at line 8, boost/asio/detail/posix_static_mutex.hpp at line 8, boost/asio/detail/posix_thread.hpp at line 8, boost/asio/detail/posix_tss_ptr.hpp at line 8, boost/asio/detail/push_options.hpp at line 8, boost/asio/detail/reactive_descriptor_service.hpp at line 8, boost/asio/detail/reactive_null_buffers_op.hpp at line 8, boost/asio/detail/reactive_serial_port_service.hpp at line 9, boost/asio/detail/reactive_socket_accept_op.hpp at line 8, boost/asio/detail/reactive_socket_connect_op.hpp at line 8, boost/asio/detail/reactive_socket_recv_op.hpp at line 8, boost/asio/detail/reactive_socket_recvfrom_op.hpp at line 8, boost/asio/detail/reactive_socket_recvmsg_op.hpp at line 8, boost/asio/detail/reactive_socket_send_op.hpp at line 8, boost/asio/detail/reactive_socket_sendto_op.hpp at line 8, boost/asio/detail/reactive_socket_service.hpp at line 8, boost/asio/detail/reactive_socket_service_base.hpp at line 8, boost/asio/detail/reactive_wait_op.hpp at line 8, boost/asio/detail/reactor.hpp at line 8, boost/asio/detail/reactor_fwd.hpp at line 8, boost/asio/detail/reactor_op.hpp at line 8, boost/asio/detail/reactor_op_queue.hpp at line 8, boost/asio/detail/recycling_allocator.hpp at line 8, boost/asio/detail/regex_fwd.hpp at line 8, boost/asio/detail/resolve_endpoint_op.hpp at line 8, boost/asio/detail/resolve_op.hpp at line 8, boost/asio/detail/resolve_query_op.hpp at line 8, boost/asio/detail/resolver_service.hpp at line 8, boost/asio/detail/resolver_service_base.hpp at line 8, boost/asio/detail/scheduler.hpp at line 8, boost/asio/detail/scheduler_operation.hpp at line 8, boost/asio/detail/scheduler_thread_info.hpp at line 8, boost/asio/detail/scoped_lock.hpp at line 8, boost/asio/detail/scoped_ptr.hpp at line 8, boost/asio/detail/select_interrupter.hpp at line 8, boost/asio/detail/select_reactor.hpp at line 8, boost/asio/detail/service_registry.hpp at line 8, boost/asio/detail/signal_blocker.hpp at line 8, boost/asio/detail/signal_handler.hpp at line 8, boost/asio/detail/signal_init.hpp at line 8, boost/asio/detail/signal_op.hpp at line 8, boost/asio/detail/signal_set_service.hpp at line 8, boost/asio/detail/socket_holder.hpp at line 8, boost/asio/detail/socket_ops.hpp at line 8, boost/asio/detail/socket_option.hpp at line 8, boost/asio/detail/socket_select_interrupter.hpp at line 8, boost/asio/detail/socket_types.hpp at line 8, boost/asio/detail/solaris_fenced_block.hpp at line 8, boost/asio/detail/static_mutex.hpp at line 8, boost/asio/detail/std_event.hpp at line 8, boost/asio/detail/std_fenced_block.hpp at line 8, boost/asio/detail/std_global.hpp at line 8, boost/asio/detail/std_mutex.hpp at line 8, boost/asio/detail/std_static_mutex.hpp at line 8, boost/asio/detail/std_thread.hpp at line 8, boost/asio/detail/strand_executor_service.hpp at line 8, boost/asio/detail/strand_service.hpp at line 8, boost/asio/detail/string_view.hpp at line 8, boost/asio/detail/thread.hpp at line 8, boost/asio/detail/thread_context.hpp at line 8, boost/asio/detail/thread_group.hpp at line 8, boost/asio/detail/thread_info_base.hpp at line 8, boost/asio/detail/throw_error.hpp at line 8, boost/asio/detail/throw_exception.hpp at line 8, boost/asio/detail/timer_queue.hpp at line 8, boost/asio/detail/timer_queue_base.hpp at line 8, boost/asio/detail/timer_queue_ptime.hpp at line 8, boost/asio/detail/timer_queue_set.hpp at line 8, boost/asio/detail/timer_scheduler.hpp at line 8, boost/asio/detail/timer_scheduler_fwd.hpp at line 8, boost/asio/detail/tss_ptr.hpp at line 8, boost/asio/detail/type_traits.hpp at line 8, boost/asio/detail/variadic_templates.hpp at line 8, boost/asio/detail/wait_handler.hpp at line 8, boost/asio/detail/wait_op.hpp at line 8, boost/asio/detail/win_event.hpp at line 8, boost/asio/detail/win_fd_set_adapter.hpp at line 8, boost/asio/detail/win_fenced_block.hpp at line 8, boost/asio/detail/win_global.hpp at line 8, boost/asio/detail/win_iocp_handle_read_op.hpp at line 9, boost/asio/detail/win_iocp_handle_service.hpp at line 9, boost/asio/detail/win_iocp_handle_write_op.hpp at line 9, boost/asio/detail/win_iocp_io_context.hpp at line 8, boost/asio/detail/win_iocp_null_buffers_op.hpp at line 8, boost/asio/detail/win_iocp_operation.hpp at line 8, boost/asio/detail/win_iocp_overlapped_op.hpp at line 8, boost/asio/detail/win_iocp_overlapped_ptr.hpp at line 8, boost/asio/detail/win_iocp_serial_port_service.hpp at line 9, boost/asio/detail/win_iocp_socket_accept_op.hpp at line 8, boost/asio/detail/win_iocp_socket_connect_op.hpp at line 8, boost/asio/detail/win_iocp_socket_recv_op.hpp at line 8, boost/asio/detail/win_iocp_socket_recvfrom_op.hpp at line 8, boost/asio/detail/win_iocp_socket_recvmsg_op.hpp at line 8, boost/asio/detail/win_iocp_socket_send_op.hpp at line 8, boost/asio/detail/win_iocp_socket_service.hpp at line 8, boost/asio/detail/win_iocp_socket_service_base.hpp at line 8, boost/asio/detail/win_iocp_thread_info.hpp at line 8, boost/asio/detail/win_iocp_wait_op.hpp at line 8, boost/asio/detail/win_mutex.hpp at line 8, boost/asio/detail/win_object_handle_service.hpp at line 9, boost/asio/detail/win_static_mutex.hpp at line 8, boost/asio/detail/win_thread.hpp at line 8, boost/asio/detail/win_tss_ptr.hpp at line 8, boost/asio/detail/winapp_thread.hpp at line 8, boost/asio/detail/wince_thread.hpp at line 8, boost/asio/detail/winrt_async_manager.hpp at line 8, boost/asio/detail/winrt_async_op.hpp at line 8, boost/asio/detail/winrt_resolve_op.hpp at line 8, boost/asio/detail/winrt_resolver_service.hpp at line 8, boost/asio/detail/winrt_socket_connect_op.hpp at line 8, boost/asio/detail/winrt_socket_recv_op.hpp at line 8, boost/asio/detail/winrt_socket_send_op.hpp at line 8, boost/asio/detail/winrt_ssocket_service.hpp at line 8, boost/asio/detail/winrt_ssocket_service_base.hpp at line 8, boost/asio/detail/winrt_timer_scheduler.hpp at line 8, boost/asio/detail/winrt_utils.hpp at line 8, boost/asio/detail/winsock_init.hpp at line 8, boost/asio/detail/work_dispatcher.hpp at line 8, boost/asio/detail/wrapped_handler.hpp at line 8, boost/asio/dispatch.hpp at line 8, boost/asio/error.hpp at line 8, boost/asio/execution_context.hpp at line 8, boost/asio/executor.hpp at line 8, boost/asio/executor_work_guard.hpp at line 8, boost/asio/experimental.hpp at line 8, boost/asio/experimental/co_spawn.hpp at line 8, boost/asio/experimental/detached.hpp at line 8, boost/asio/experimental/impl/co_spawn.hpp at line 8, boost/asio/experimental/impl/detached.hpp at line 8, boost/asio/experimental/impl/redirect_error.hpp at line 8, boost/asio/experimental/redirect_error.hpp at line 8, boost/asio/generic/basic_endpoint.hpp at line 8, boost/asio/generic/datagram_protocol.hpp at line 8, boost/asio/generic/detail/endpoint.hpp at line 8, boost/asio/generic/detail/impl/endpoint.ipp at line 8, boost/asio/generic/raw_protocol.hpp at line 8, boost/asio/generic/seq_packet_protocol.hpp at line 8, boost/asio/generic/stream_protocol.hpp at line 8, boost/asio/handler_alloc_hook.hpp at line 8, boost/asio/handler_continuation_hook.hpp at line 8, boost/asio/handler_invoke_hook.hpp at line 8, boost/asio/handler_type.hpp at line 8, boost/asio/high_resolution_timer.hpp at line 8, boost/asio/impl/buffered_read_stream.hpp at line 8, boost/asio/impl/buffered_write_stream.hpp at line 8, boost/asio/impl/connect.hpp at line 8, boost/asio/impl/defer.hpp at line 8, boost/asio/impl/dispatch.hpp at line 8, boost/asio/impl/error.ipp at line 8, boost/asio/impl/execution_context.hpp at line 8, boost/asio/impl/execution_context.ipp at line 8, boost/asio/impl/executor.hpp at line 8, boost/asio/impl/executor.ipp at line 8, boost/asio/impl/handler_alloc_hook.ipp at line 8, boost/asio/impl/io_context.hpp at line 8, boost/asio/impl/io_context.ipp at line 8, boost/asio/impl/post.hpp at line 8, boost/asio/impl/read.hpp at line 8, boost/asio/impl/read_at.hpp at line 8, boost/asio/impl/read_until.hpp at line 8, boost/asio/impl/serial_port_base.hpp at line 9, boost/asio/impl/serial_port_base.ipp at line 9, boost/asio/impl/spawn.hpp at line 8, boost/asio/impl/src.cpp at line 8, boost/asio/impl/src.hpp at line 8, boost/asio/impl/system_context.hpp at line 8, boost/asio/impl/system_context.ipp at line 8, boost/asio/impl/system_executor.hpp at line 8, boost/asio/impl/thread_pool.hpp at line 8, boost/asio/impl/thread_pool.ipp at line 8, boost/asio/impl/use_future.hpp at line 8, boost/asio/impl/write.hpp at line 8, boost/asio/impl/write_at.hpp at line 8, boost/asio/io_context.hpp at line 8, boost/asio/io_context_strand.hpp at line 8, boost/asio/io_service.hpp at line 8, boost/asio/io_service_strand.hpp at line 8, boost/asio/ip/address.hpp at line 8, boost/asio/ip/address_v4.hpp at line 8, boost/asio/ip/address_v4_iterator.hpp at line 8, boost/asio/ip/address_v4_range.hpp at line 8, boost/asio/ip/address_v6.hpp at line 8, boost/asio/ip/address_v6_iterator.hpp at line 9, boost/asio/ip/address_v6_range.hpp at line 9, boost/asio/ip/bad_address_cast.hpp at line 8, boost/asio/ip/basic_endpoint.hpp at line 8, boost/asio/ip/basic_resolver.hpp at line 8, boost/asio/ip/basic_resolver_entry.hpp at line 8, boost/asio/ip/basic_resolver_iterator.hpp at line 8, boost/asio/ip/basic_resolver_query.hpp at line 8, boost/asio/ip/basic_resolver_results.hpp at line 8, boost/asio/ip/detail/endpoint.hpp at line 8, boost/asio/ip/detail/impl/endpoint.ipp at line 8, boost/asio/ip/detail/socket_option.hpp at line 8, boost/asio/ip/host_name.hpp at line 8, boost/asio/ip/icmp.hpp at line 8, boost/asio/ip/impl/address.hpp at line 8, boost/asio/ip/impl/address.ipp at line 8, boost/asio/ip/impl/address_v4.hpp at line 8, boost/asio/ip/impl/address_v4.ipp at line 8, boost/asio/ip/impl/address_v6.hpp at line 8, boost/asio/ip/impl/address_v6.ipp at line 8, boost/asio/ip/impl/basic_endpoint.hpp at line 8, boost/asio/ip/impl/host_name.ipp at line 8, boost/asio/ip/impl/network_v4.hpp at line 9, boost/asio/ip/impl/network_v4.ipp at line 9, boost/asio/ip/impl/network_v6.hpp at line 8, boost/asio/ip/impl/network_v6.ipp at line 9, boost/asio/ip/multicast.hpp at line 8, boost/asio/ip/network_v4.hpp at line 9, boost/asio/ip/network_v6.hpp at line 9, boost/asio/ip/resolver_base.hpp at line 8, boost/asio/ip/resolver_query_base.hpp at line 8, boost/asio/ip/resolver_service.hpp at line 8, boost/asio/ip/tcp.hpp at line 8, boost/asio/ip/udp.hpp at line 8, boost/asio/ip/unicast.hpp at line 8, boost/asio/ip/v6_only.hpp at line 8, boost/asio/is_executor.hpp at line 8, boost/asio/is_read_buffered.hpp at line 8, boost/asio/is_write_buffered.hpp at line 8, boost/asio/local/basic_endpoint.hpp at line 9, boost/asio/local/connect_pair.hpp at line 8, boost/asio/local/datagram_protocol.hpp at line 8, boost/asio/local/detail/endpoint.hpp at line 9, boost/asio/local/detail/impl/endpoint.ipp at line 9, boost/asio/local/stream_protocol.hpp at line 8, boost/asio/packaged_task.hpp at line 8, boost/asio/placeholders.hpp at line 8, boost/asio/posix/basic_descriptor.hpp at line 8, boost/asio/posix/basic_stream_descriptor.hpp at line 8, boost/asio/posix/descriptor.hpp at line 8, boost/asio/posix/descriptor_base.hpp at line 8, boost/asio/posix/stream_descriptor.hpp at line 8, boost/asio/posix/stream_descriptor_service.hpp at line 8, boost/asio/post.hpp at line 8, boost/asio/raw_socket_service.hpp at line 8, boost/asio/read.hpp at line 8, boost/asio/read_at.hpp at line 8, boost/asio/read_until.hpp at line 8, boost/asio/seq_packet_socket_service.hpp at line 8, boost/asio/serial_port.hpp at line 9, boost/asio/serial_port_base.hpp at line 9, boost/asio/serial_port_service.hpp at line 8, boost/asio/signal_set.hpp at line 8, boost/asio/signal_set_service.hpp at line 8, boost/asio/socket_acceptor_service.hpp at line 8, boost/asio/socket_base.hpp at line 8, boost/asio/spawn.hpp at line 8, boost/asio/ssl.hpp at line 8, boost/asio/ssl/context.hpp at line 8, boost/asio/ssl/context_base.hpp at line 8, boost/asio/ssl/detail/buffered_handshake_op.hpp at line 8, boost/asio/ssl/detail/engine.hpp at line 8, boost/asio/ssl/detail/handshake_op.hpp at line 8, boost/asio/ssl/detail/impl/engine.ipp at line 8, boost/asio/ssl/detail/impl/openssl_init.ipp at line 9, boost/asio/ssl/detail/io.hpp at line 8, boost/asio/ssl/detail/openssl_init.hpp at line 8, boost/asio/ssl/detail/openssl_types.hpp at line 8, boost/asio/ssl/detail/password_callback.hpp at line 8, boost/asio/ssl/detail/read_op.hpp at line 8, boost/asio/ssl/detail/shutdown_op.hpp at line 8, boost/asio/ssl/detail/stream_core.hpp at line 8, boost/asio/ssl/detail/verify_callback.hpp at line 8, boost/asio/ssl/detail/write_op.hpp at line 8, boost/asio/ssl/error.hpp at line 8, boost/asio/ssl/impl/context.hpp at line 9, boost/asio/ssl/impl/context.ipp at line 9, boost/asio/ssl/impl/error.ipp at line 8, boost/asio/ssl/impl/rfc2818_verification.ipp at line 8, boost/asio/ssl/impl/src.hpp at line 8, boost/asio/ssl/rfc2818_verification.hpp at line 8, boost/asio/ssl/stream.hpp at line 8, boost/asio/ssl/stream_base.hpp at line 8, boost/asio/ssl/verify_context.hpp at line 8, boost/asio/ssl/verify_mode.hpp at line 8, boost/asio/steady_timer.hpp at line 8, boost/asio/strand.hpp at line 8, boost/asio/stream_socket_service.hpp at line 8, boost/asio/streambuf.hpp at line 8, boost/asio/system_context.hpp at line 8, boost/asio/system_executor.hpp at line 8, boost/asio/system_timer.hpp at line 8, boost/asio/thread_pool.hpp at line 8, boost/asio/time_traits.hpp at line 8, boost/asio/ts/buffer.hpp at line 8, boost/asio/ts/executor.hpp at line 8, boost/asio/ts/internet.hpp at line 8, boost/asio/ts/io_context.hpp at line 8, boost/asio/ts/net.hpp at line 8, boost/asio/ts/netfwd.hpp at line 8, boost/asio/ts/socket.hpp at line 8, boost/asio/ts/timer.hpp at line 8, boost/asio/unyield.hpp at line 8, boost/asio/use_future.hpp at line 8, boost/asio/uses_executor.hpp at line 8, boost/asio/version.hpp at line 8, boost/asio/wait_traits.hpp at line 8, boost/asio/waitable_timer_service.hpp at line 8, boost/asio/windows/basic_handle.hpp at line 8, boost/asio/windows/basic_object_handle.hpp at line 9, boost/asio/windows/basic_random_access_handle.hpp at line 8, boost/asio/windows/basic_stream_handle.hpp at line 8, boost/asio/windows/object_handle.hpp at line 9, boost/asio/windows/object_handle_service.hpp at line 9, boost/asio/windows/overlapped_handle.hpp at line 8, boost/asio/windows/overlapped_ptr.hpp at line 8, boost/asio/windows/random_access_handle.hpp at line 8, boost/asio/windows/random_access_handle_service.hpp at line 8, boost/asio/windows/stream_handle.hpp at line 8, boost/asio/windows/stream_handle_service.hpp at line 8, boost/asio/write.hpp at line 8, boost/asio/write_at.hpp at line 8, boost/asio/yield.hpp at line 8, boost/beast.hpp at line 5, boost/beast/core.hpp at line 5, boost/beast/core/bind_handler.hpp at line 5, boost/beast/core/buffered_read_stream.hpp at line 5, boost/beast/core/buffers_adapter.hpp at line 5, boost/beast/core/buffers_cat.hpp at line 5, boost/beast/core/buffers_prefix.hpp at line 5, boost/beast/core/buffers_suffix.hpp at line 5, boost/beast/core/buffers_to_string.hpp at line 5, boost/beast/core/detail/allocator.hpp at line 5, boost/beast/core/detail/base64.hpp at line 5, boost/beast/core/detail/bind_handler.hpp at line 5, boost/beast/core/detail/buffers_ref.hpp at line 5, boost/beast/core/detail/clamp.hpp at line 5, boost/beast/core/detail/config.hpp at line 5, boost/beast/core/detail/cpu_info.hpp at line 5, boost/beast/core/detail/empty_base_optimization.hpp at line 5, boost/beast/core/detail/integer_sequence.hpp at line 5, boost/beast/core/detail/ostream.hpp at line 5, boost/beast/core/detail/sha1.hpp at line 5, boost/beast/core/detail/static_ostream.hpp at line 5, boost/beast/core/detail/static_string.hpp at line 5, boost/beast/core/detail/type_traits.hpp at line 5, boost/beast/core/detail/variant.hpp at line 5, boost/beast/core/detail/varint.hpp at line 5, boost/beast/core/error.hpp at line 5, boost/beast/core/file.hpp at line 5, boost/beast/core/file_base.hpp at line 5, boost/beast/core/file_posix.hpp at line 5, boost/beast/core/file_stdio.hpp at line 5, boost/beast/core/file_win32.hpp at line 5, boost/beast/core/flat_buffer.hpp at line 5, boost/beast/core/flat_static_buffer.hpp at line 5, boost/beast/core/handler_ptr.hpp at line 5, boost/beast/core/impl/buffered_read_stream.ipp at line 5, boost/beast/core/impl/buffers_adapter.ipp at line 5, boost/beast/core/impl/buffers_cat.ipp at line 5, boost/beast/core/impl/buffers_prefix.ipp at line 5, boost/beast/core/impl/buffers_suffix.ipp at line 5, boost/beast/core/impl/file_posix.ipp at line 5, boost/beast/core/impl/file_stdio.ipp at line 5, boost/beast/core/impl/file_win32.ipp at line 5, boost/beast/core/impl/flat_buffer.ipp at line 5, boost/beast/core/impl/flat_static_buffer.ipp at line 5, boost/beast/core/impl/handler_ptr.ipp at line 5, boost/beast/core/impl/multi_buffer.ipp at line 5, boost/beast/core/impl/read_size.ipp at line 5, boost/beast/core/impl/static_buffer.ipp at line 5, boost/beast/core/impl/static_string.ipp at line 5, boost/beast/core/impl/string_param.ipp at line 5, boost/beast/core/multi_buffer.hpp at line 5, boost/beast/core/ostream.hpp at line 5, boost/beast/core/read_size.hpp at line 5, boost/beast/core/span.hpp at line 5, boost/beast/core/static_buffer.hpp at line 5, boost/beast/core/static_string.hpp at line 5, boost/beast/core/string.hpp at line 5, boost/beast/core/string_param.hpp at line 5, boost/beast/core/type_traits.hpp at line 5, boost/beast/http.hpp at line 5, boost/beast/http/basic_dynamic_body.hpp at line 5, boost/beast/http/basic_file_body.hpp at line 5, boost/beast/http/basic_parser.hpp at line 5, boost/beast/http/buffer_body.hpp at line 5, boost/beast/http/chunk_encode.hpp at line 5, boost/beast/http/detail/basic_parsed_list.hpp at line 5, boost/beast/http/detail/basic_parser.hpp at line 5, boost/beast/http/detail/chunk_encode.hpp at line 5, boost/beast/http/detail/rfc7230.hpp at line 5, boost/beast/http/detail/type_traits.hpp at line 5, boost/beast/http/dynamic_body.hpp at line 5, boost/beast/http/empty_body.hpp at line 5, boost/beast/http/error.hpp at line 5, boost/beast/http/field.hpp at line 5, boost/beast/http/fields.hpp at line 5, boost/beast/http/file_body.hpp at line 5, boost/beast/http/impl/basic_parser.ipp at line 5, boost/beast/http/impl/chunk_encode.ipp at line 5, boost/beast/http/impl/error.ipp at line 5, boost/beast/http/impl/field.ipp at line 5, boost/beast/http/impl/fields.ipp at line 5, boost/beast/http/impl/file_body_win32.ipp at line 5, boost/beast/http/impl/message.ipp at line 5, boost/beast/http/impl/parser.ipp at line 5, boost/beast/http/impl/read.ipp at line 5, boost/beast/http/impl/rfc7230.ipp at line 5, boost/beast/http/impl/serializer.ipp at line 5, boost/beast/http/impl/status.ipp at line 5, boost/beast/http/impl/verb.ipp at line 5, boost/beast/http/impl/write.ipp at line 5, boost/beast/http/message.hpp at line 5, boost/beast/http/parser.hpp at line 5, boost/beast/http/read.hpp at line 5, boost/beast/http/rfc7230.hpp at line 5, boost/beast/http/serializer.hpp at line 5, boost/beast/http/span_body.hpp at line 5, boost/beast/http/status.hpp at line 5, boost/beast/http/string_body.hpp at line 5, boost/beast/http/type_traits.hpp at line 5, boost/beast/http/vector_body.hpp at line 5, boost/beast/http/verb.hpp at line 5, boost/beast/http/write.hpp at line 5, boost/beast/version.hpp at line 5, boost/beast/websocket.hpp at line 5, boost/beast/websocket/detail/error.hpp at line 5, boost/beast/websocket/detail/frame.hpp at line 5, boost/beast/websocket/detail/hybi13.hpp at line 5, boost/beast/websocket/detail/mask.hpp at line 5, boost/beast/websocket/detail/pausation.hpp at line 5, boost/beast/websocket/detail/pmd_extension.hpp at line 5, boost/beast/websocket/detail/stream_base.hpp at line 5, boost/beast/websocket/detail/type_traits.hpp at line 5, boost/beast/websocket/detail/utf8_checker.hpp at line 5, boost/beast/websocket/error.hpp at line 5, boost/beast/websocket/impl/accept.ipp at line 5, boost/beast/websocket/impl/close.ipp at line 5, boost/beast/websocket/impl/error.ipp at line 5, boost/beast/websocket/impl/handshake.ipp at line 5, boost/beast/websocket/impl/ping.ipp at line 5, boost/beast/websocket/impl/read.ipp at line 5, boost/beast/websocket/impl/rfc6455.ipp at line 5, boost/beast/websocket/impl/ssl.ipp at line 5, boost/beast/websocket/impl/stream.ipp at line 5, boost/beast/websocket/impl/teardown.ipp at line 5, boost/beast/websocket/impl/write.ipp at line 5, boost/beast/websocket/option.hpp at line 5, boost/beast/websocket/rfc6455.hpp at line 5, boost/beast/websocket/role.hpp at line 5, boost/beast/websocket/ssl.hpp at line 5, boost/beast/websocket/stream.hpp at line 5, boost/beast/websocket/stream_fwd.hpp at line 5, boost/beast/websocket/teardown.hpp at line 5, boost/beast/zlib.hpp at line 5, boost/beast/zlib/deflate_stream.hpp at line 5, boost/beast/zlib/detail/bitstream.hpp at line 5, boost/beast/zlib/detail/deflate_stream.hpp at line 5, boost/beast/zlib/detail/inflate_stream.hpp at line 5, boost/beast/zlib/detail/ranges.hpp at line 5, boost/beast/zlib/detail/window.hpp at line 5, boost/beast/zlib/error.hpp at line 5, boost/beast/zlib/impl/error.ipp at line 5, boost/beast/zlib/inflate_stream.hpp at line 5, boost/beast/zlib/zlib.hpp at line 5, boost/container_hash/detail/float_functions.hpp at line 4, boost/container_hash/detail/hash_float.hpp at line 4, boost/container_hash/detail/limits.hpp at line 4, boost/container_hash/extensions.hpp at line 4, boost/container_hash/hash.hpp at line 4, boost/container_hash/hash_fwd.hpp at line 4, boost/detail/container_fwd.hpp at line 4, boost/functional/hash.hpp at line 4, boost/functional/hash/extensions.hpp at line 4, boost/functional/hash/hash.hpp at line 4, boost/functional/hash/hash_fwd.hpp at line 4, boost/functional/hash_fwd.hpp at line 4, boost/process.hpp at line 10, boost/process/args.hpp at line 9, boost/process/async.hpp at line 4, boost/process/async_pipe.hpp at line 8, boost/process/async_system.hpp at line 9, boost/process/child.hpp at line 9, boost/process/cmd.hpp at line 9, boost/process/detail/basic_cmd.hpp at line 4, boost/process/detail/child_decl.hpp at line 9, boost/process/detail/config.hpp at line 9, boost/process/detail/execute_impl.hpp at line 9, boost/process/detail/handler.hpp at line 4, boost/process/detail/handler_base.hpp at line 9, boost/process/detail/on_exit.hpp at line 4, boost/process/detail/posix/asio_fwd.hpp at line 4, boost/process/detail/posix/async_handler.hpp at line 4, boost/process/detail/posix/async_in.hpp at line 8, boost/process/detail/posix/async_out.hpp at line 8, boost/process/detail/posix/async_pipe.hpp at line 4, boost/process/detail/posix/basic_cmd.hpp at line 4, boost/process/detail/posix/basic_pipe.hpp at line 8, boost/process/detail/posix/child_handle.hpp at line 8, boost/process/detail/posix/close_in.hpp at line 8, boost/process/detail/posix/close_out.hpp at line 8, boost/process/detail/posix/cmd.hpp at line 4, boost/process/detail/posix/compare_handles.hpp at line 4, boost/process/detail/posix/env_init.hpp at line 4, boost/process/detail/posix/environment.hpp at line 4, boost/process/detail/posix/exe.hpp at line 4, boost/process/detail/posix/executor.hpp at line 8, boost/process/detail/posix/fd.hpp at line 8, boost/process/detail/posix/file_descriptor.hpp at line 4, boost/process/detail/posix/file_in.hpp at line 8, boost/process/detail/posix/file_out.hpp at line 9, boost/process/detail/posix/group_handle.hpp at line 4, boost/process/detail/posix/group_ref.hpp at line 4, boost/process/detail/posix/handler.hpp at line 4, boost/process/detail/posix/io_context_ref.hpp at line 4, boost/process/detail/posix/is_running.hpp at line 4, boost/process/detail/posix/null_in.hpp at line 8, boost/process/detail/posix/null_out.hpp at line 9, boost/process/detail/posix/on_exit.hpp at line 4, boost/process/detail/posix/pipe_in.hpp at line 8, boost/process/detail/posix/pipe_out.hpp at line 9, boost/process/detail/posix/search_path.hpp at line 8, boost/process/detail/posix/shell_path.hpp at line 8, boost/process/detail/posix/sigchld_service.hpp at line 4, boost/process/detail/posix/signal.hpp at line 9, boost/process/detail/posix/start_dir.hpp at line 8, boost/process/detail/posix/terminate.hpp at line 8, boost/process/detail/posix/wait_for_exit.hpp at line 8, boost/process/detail/posix/wait_group.hpp at line 8, boost/process/detail/throw_on_error.hpp at line 9, boost/process/detail/traits.hpp at line 4, boost/process/detail/traits/async.hpp at line 4, boost/process/detail/traits/cmd_or_exe.hpp at line 4, boost/process/detail/traits/decl.hpp at line 4, boost/process/detail/traits/env.hpp at line 4, boost/process/detail/traits/error.hpp at line 4, boost/process/detail/traits/group.hpp at line 4, boost/process/detail/traits/wchar_t.hpp at line 4, boost/process/detail/windows/asio_fwd.hpp at line 4, boost/process/detail/windows/async_handler.hpp at line 4, boost/process/detail/windows/async_in.hpp at line 8, boost/process/detail/windows/async_out.hpp at line 8, boost/process/detail/windows/async_pipe.hpp at line 4, boost/process/detail/windows/basic_cmd.hpp at line 4, boost/process/detail/windows/basic_pipe.hpp at line 4, boost/process/detail/windows/child_handle.hpp at line 8, boost/process/detail/windows/close_in.hpp at line 8, boost/process/detail/windows/close_out.hpp at line 8, boost/process/detail/windows/cmd.hpp at line 4, boost/process/detail/windows/compare_handles.hpp at line 4, boost/process/detail/windows/env_init.hpp at line 4, boost/process/detail/windows/environment.hpp at line 4, boost/process/detail/windows/executor.hpp at line 9, boost/process/detail/windows/file_descriptor.hpp at line 4, boost/process/detail/windows/file_in.hpp at line 8, boost/process/detail/windows/file_out.hpp at line 8, boost/process/detail/windows/group_handle.hpp at line 4, boost/process/detail/windows/group_ref.hpp at line 4, boost/process/detail/windows/handler.hpp at line 4, boost/process/detail/windows/io_context_ref.hpp at line 4, boost/process/detail/windows/is_running.hpp at line 4, boost/process/detail/windows/job_workaround.hpp at line 4, boost/process/detail/windows/locale.hpp at line 5, boost/process/detail/windows/null_in.hpp at line 8, boost/process/detail/windows/null_out.hpp at line 8, boost/process/detail/windows/on_exit.hpp at line 4, boost/process/detail/windows/pipe_in.hpp at line 8, boost/process/detail/windows/pipe_out.hpp at line 9, boost/process/detail/windows/search_path.hpp at line 8, boost/process/detail/windows/shell_path.hpp at line 8, boost/process/detail/windows/show_window.hpp at line 9, boost/process/detail/windows/start_dir.hpp at line 8, boost/process/detail/windows/terminate.hpp at line 8, boost/process/detail/windows/wait_for_exit.hpp at line 9, boost/process/detail/windows/wait_group.hpp at line 4, boost/process/env.hpp at line 4, boost/process/environment.hpp at line 4, boost/process/error.hpp at line 9, boost/process/exception.hpp at line 4, boost/process/exe.hpp at line 9, boost/process/extend.hpp at line 4, boost/process/group.hpp at line 4, boost/process/io.hpp at line 4, boost/process/locale.hpp at line 4, boost/process/pipe.hpp at line 8, boost/process/posix.hpp at line 4, boost/process/search_path.hpp at line 8, boost/process/spawn.hpp at line 9, boost/process/start_dir.hpp at line 8, boost/process/system.hpp at line 9, boost/process/windows.hpp at line 4, boost/thread/with_lock_guard.hpp at line 5, boost/type_index.hpp at line 5, boost/type_index/ctti_type_index.hpp at line 6, boost/type_index/detail/compile_time_type_info.hpp at line 6, boost/type_index/detail/ctti_register_class.hpp at line 6, boost/type_index/detail/stl_register_class.hpp at line 6, boost/type_index/runtime_cast.hpp at line 6, boost/type_index/runtime_cast/boost_shared_ptr_cast.hpp at line 6, boost/type_index/runtime_cast/detail/runtime_cast_impl.hpp at line 6, boost/type_index/runtime_cast/pointer_cast.hpp at line 6, boost/type_index/runtime_cast/reference_cast.hpp at line 6, boost/type_index/runtime_cast/register_runtime_class.hpp at line 6, boost/type_index/runtime_cast/std_shared_ptr_cast.hpp at line 6, boost/type_index/stl_type_index.hpp at line 6, boost/type_index/type_index_facade.hpp at line 6, boost/typeof/encode_decode.hpp at line 4, boost/typeof/encode_decode_params.hpp at line 3, boost/typeof/integral_template_param.hpp at line 3, boost/typeof/modifiers.hpp at line 3, boost/typeof/register_functions_iterate.hpp at line 3, boost/typeof/template_encoding.hpp at line 4, boost/typeof/template_template_param.hpp at line 4, boost/typeof/type_encoding.hpp at line 3, boost/typeof/type_template_param.hpp at line 3, boost/typeof/typeof.hpp at line 3, boost/typeof/typeof_impl.hpp at line 4, boost/unordered/detail/fwd.hpp at line 4, boost/unordered/detail/implementation.hpp at line 5, boost/unordered/detail/map.hpp at line 4, boost/unordered/detail/set.hpp at line 4, boost/unordered/unordered_map.hpp at line 5, boost/unordered/unordered_map_fwd.hpp at line 4, boost/unordered/unordered_set.hpp at line 5, boost/unordered/unordered_set_fwd.hpp at line 4, boost/unordered_map.hpp at line 5, boost/unordered_set.hpp at line 5
- License text:
- // Distributed under the Boost Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/algorithm/minmax.hpp [3:4]
- boost/algorithm/minmax_element.hpp [3:4]
- boost/asio.hpp [7:8]
- boost/asio/associated_allocator.hpp [7:8]
- boost/asio/associated_executor.hpp [7:8]
- boost/asio/async_result.hpp [7:8]
- boost/asio/basic_datagram_socket.hpp [7:8]
- boost/asio/basic_deadline_timer.hpp [7:8]
- boost/asio/basic_io_object.hpp [7:8]
- boost/asio/basic_raw_socket.hpp [7:8]
- boost/asio/basic_seq_packet_socket.hpp [7:8]
- boost/asio/basic_serial_port.hpp [8:9]
- boost/asio/basic_signal_set.hpp [7:8]
- boost/asio/basic_socket.hpp [7:8]
- boost/asio/basic_socket_acceptor.hpp [7:8]
- boost/asio/basic_socket_iostream.hpp [7:8]
- boost/asio/basic_socket_streambuf.hpp [7:8]
- boost/asio/basic_stream_socket.hpp [7:8]
- boost/asio/basic_streambuf.hpp [7:8]
- boost/asio/basic_streambuf_fwd.hpp [7:8]
- boost/asio/basic_waitable_timer.hpp [7:8]
- boost/asio/bind_executor.hpp [7:8]
- boost/asio/buffer.hpp [7:8]
- boost/asio/buffered_read_stream.hpp [7:8]
- boost/asio/buffered_read_stream_fwd.hpp [7:8]
- boost/asio/buffered_stream.hpp [7:8]
- boost/asio/buffered_stream_fwd.hpp [7:8]
- boost/asio/buffered_write_stream.hpp [7:8]
- boost/asio/buffered_write_stream_fwd.hpp [7:8]
- boost/asio/buffers_iterator.hpp [7:8]
- boost/asio/completion_condition.hpp [7:8]
- boost/asio/connect.hpp [7:8]
- boost/asio/coroutine.hpp [7:8]
- boost/asio/datagram_socket_service.hpp [7:8]
- boost/asio/deadline_timer.hpp [7:8]
- boost/asio/deadline_timer_service.hpp [7:8]
- boost/asio/defer.hpp [7:8]
- boost/asio/detail/array.hpp [7:8]
- boost/asio/detail/array_fwd.hpp [7:8]
- boost/asio/detail/assert.hpp [7:8]
- boost/asio/detail/atomic_count.hpp [7:8]
- boost/asio/detail/base_from_completion_cond.hpp [7:8]
- boost/asio/detail/bind_handler.hpp [7:8]
- boost/asio/detail/buffer_resize_guard.hpp [7:8]
- boost/asio/detail/buffer_sequence_adapter.hpp [7:8]
- boost/asio/detail/buffered_stream_storage.hpp [7:8]
- boost/asio/detail/call_stack.hpp [7:8]
- boost/asio/detail/chrono.hpp [7:8]
- boost/asio/detail/chrono_time_traits.hpp [7:8]
- boost/asio/detail/completion_handler.hpp [7:8]
- boost/asio/detail/concurrency_hint.hpp [7:8]
- boost/asio/detail/conditionally_enabled_event.hpp [7:8]
- boost/asio/detail/conditionally_enabled_mutex.hpp [7:8]
- boost/asio/detail/config.hpp [7:8]
- boost/asio/detail/consuming_buffers.hpp [7:8]
- boost/asio/detail/cstddef.hpp [7:8]
- boost/asio/detail/cstdint.hpp [7:8]
- boost/asio/detail/date_time_fwd.hpp [7:8]
- boost/asio/detail/deadline_timer_service.hpp [7:8]
- boost/asio/detail/dependent_type.hpp [7:8]
- boost/asio/detail/descriptor_ops.hpp [7:8]
- boost/asio/detail/descriptor_read_op.hpp [7:8]
- boost/asio/detail/descriptor_write_op.hpp [7:8]
- boost/asio/detail/dev_poll_reactor.hpp [7:8]
- boost/asio/detail/epoll_reactor.hpp [7:8]
- boost/asio/detail/event.hpp [7:8]
- boost/asio/detail/eventfd_select_interrupter.hpp [8:9]
- boost/asio/detail/executor_op.hpp [7:8]
- boost/asio/detail/fd_set_adapter.hpp [7:8]
- boost/asio/detail/fenced_block.hpp [7:8]
- boost/asio/detail/functional.hpp [7:8]
- boost/asio/detail/gcc_arm_fenced_block.hpp [7:8]
- boost/asio/detail/gcc_hppa_fenced_block.hpp [7:8]
- boost/asio/detail/gcc_sync_fenced_block.hpp [7:8]
- boost/asio/detail/gcc_x86_fenced_block.hpp [7:8]
- boost/asio/detail/global.hpp [7:8]
- boost/asio/detail/handler_alloc_helpers.hpp [7:8]
- boost/asio/detail/handler_cont_helpers.hpp [7:8]
- boost/asio/detail/handler_invoke_helpers.hpp [7:8]
- boost/asio/detail/handler_tracking.hpp [7:8]
- boost/asio/detail/handler_type_requirements.hpp [7:8]
- boost/asio/detail/handler_work.hpp [7:8]
- boost/asio/detail/hash_map.hpp [7:8]
- boost/asio/detail/impl/buffer_sequence_adapter.ipp [7:8]
- boost/asio/detail/impl/descriptor_ops.ipp [7:8]
- boost/asio/detail/impl/dev_poll_reactor.hpp [7:8]
- boost/asio/detail/impl/dev_poll_reactor.ipp [7:8]
- boost/asio/detail/impl/epoll_reactor.hpp [7:8]
- boost/asio/detail/impl/epoll_reactor.ipp [7:8]
- boost/asio/detail/impl/eventfd_select_interrupter.ipp [8:9]
- boost/asio/detail/impl/handler_tracking.ipp [7:8]
- boost/asio/detail/impl/kqueue_reactor.hpp [8:9]
- boost/asio/detail/impl/kqueue_reactor.ipp [8:9]
- boost/asio/detail/impl/null_event.ipp [7:8]
- boost/asio/detail/impl/pipe_select_interrupter.ipp [7:8]
- boost/asio/detail/impl/posix_event.ipp [7:8]
- boost/asio/detail/impl/posix_mutex.ipp [7:8]
- boost/asio/detail/impl/posix_thread.ipp [7:8]
- boost/asio/detail/impl/posix_tss_ptr.ipp [7:8]
- boost/asio/detail/impl/reactive_descriptor_service.ipp [7:8]
- boost/asio/detail/impl/reactive_serial_port_service.ipp [8:9]
- boost/asio/detail/impl/reactive_socket_service_base.ipp [7:8]
- boost/asio/detail/impl/resolver_service_base.ipp [7:8]
- boost/asio/detail/impl/scheduler.ipp [7:8]
- boost/asio/detail/impl/select_reactor.hpp [7:8]
- boost/asio/detail/impl/select_reactor.ipp [7:8]
- boost/asio/detail/impl/service_registry.hpp [7:8]
- boost/asio/detail/impl/service_registry.ipp [7:8]
- boost/asio/detail/impl/signal_set_service.ipp [7:8]
- boost/asio/detail/impl/socket_ops.ipp [7:8]
- boost/asio/detail/impl/socket_select_interrupter.ipp [7:8]
- boost/asio/detail/impl/strand_executor_service.hpp [7:8]
- boost/asio/detail/impl/strand_executor_service.ipp [7:8]
- boost/asio/detail/impl/strand_service.hpp [7:8]
- boost/asio/detail/impl/strand_service.ipp [7:8]
- boost/asio/detail/impl/throw_error.ipp [7:8]
- boost/asio/detail/impl/timer_queue_ptime.ipp [7:8]
- boost/asio/detail/impl/timer_queue_set.ipp [7:8]
- boost/asio/detail/impl/win_event.ipp [7:8]
- boost/asio/detail/impl/win_iocp_handle_service.ipp [8:9]
- boost/asio/detail/impl/win_iocp_io_context.hpp [7:8]
- boost/asio/detail/impl/win_iocp_io_context.ipp [7:8]
- boost/asio/detail/impl/win_iocp_serial_port_service.ipp [8:9]
- boost/asio/detail/impl/win_iocp_socket_service_base.ipp [7:8]
- boost/asio/detail/impl/win_mutex.ipp [7:8]
- boost/asio/detail/impl/win_object_handle_service.ipp [8:9]
- boost/asio/detail/impl/win_static_mutex.ipp [7:8]
- boost/asio/detail/impl/win_thread.ipp [7:8]
- boost/asio/detail/impl/win_tss_ptr.ipp [7:8]
- boost/asio/detail/impl/winrt_ssocket_service_base.ipp [7:8]
- boost/asio/detail/impl/winrt_timer_scheduler.hpp [7:8]
- boost/asio/detail/impl/winrt_timer_scheduler.ipp [7:8]
- boost/asio/detail/impl/winsock_init.ipp [7:8]
- boost/asio/detail/io_control.hpp [7:8]
- boost/asio/detail/is_buffer_sequence.hpp [7:8]
- boost/asio/detail/is_executor.hpp [7:8]
- boost/asio/detail/keyword_tss_ptr.hpp [7:8]
- boost/asio/detail/kqueue_reactor.hpp [8:9]
- boost/asio/detail/limits.hpp [7:8]
- boost/asio/detail/local_free_on_block_exit.hpp [7:8]
- boost/asio/detail/macos_fenced_block.hpp [7:8]
- boost/asio/detail/memory.hpp [7:8]
- boost/asio/detail/mutex.hpp [7:8]
- boost/asio/detail/noncopyable.hpp [7:8]
- boost/asio/detail/null_event.hpp [7:8]
- boost/asio/detail/null_fenced_block.hpp [7:8]
- boost/asio/detail/null_global.hpp [7:8]
- boost/asio/detail/null_mutex.hpp [7:8]
- boost/asio/detail/null_reactor.hpp [7:8]
- boost/asio/detail/null_signal_blocker.hpp [7:8]
- boost/asio/detail/null_socket_service.hpp [7:8]
- boost/asio/detail/null_static_mutex.hpp [7:8]
- boost/asio/detail/null_thread.hpp [7:8]
- boost/asio/detail/null_tss_ptr.hpp [7:8]
- boost/asio/detail/object_pool.hpp [7:8]
- boost/asio/detail/old_win_sdk_compat.hpp [7:8]
- boost/asio/detail/op_queue.hpp [7:8]
- boost/asio/detail/operation.hpp [7:8]
- boost/asio/detail/pipe_select_interrupter.hpp [7:8]
- boost/asio/detail/pop_options.hpp [7:8]
- boost/asio/detail/posix_event.hpp [7:8]
- boost/asio/detail/posix_fd_set_adapter.hpp [7:8]
- boost/asio/detail/posix_global.hpp [7:8]
- boost/asio/detail/posix_mutex.hpp [7:8]
- boost/asio/detail/posix_signal_blocker.hpp [7:8]
- boost/asio/detail/posix_static_mutex.hpp [7:8]
- boost/asio/detail/posix_thread.hpp [7:8]
- boost/asio/detail/posix_tss_ptr.hpp [7:8]
- boost/asio/detail/push_options.hpp [7:8]
- boost/asio/detail/reactive_descriptor_service.hpp [7:8]
- boost/asio/detail/reactive_null_buffers_op.hpp [7:8]
- boost/asio/detail/reactive_serial_port_service.hpp [8:9]
- boost/asio/detail/reactive_socket_accept_op.hpp [7:8]
- boost/asio/detail/reactive_socket_connect_op.hpp [7:8]
- boost/asio/detail/reactive_socket_recv_op.hpp [7:8]
- boost/asio/detail/reactive_socket_recvfrom_op.hpp [7:8]
- boost/asio/detail/reactive_socket_recvmsg_op.hpp [7:8]
- boost/asio/detail/reactive_socket_send_op.hpp [7:8]
- boost/asio/detail/reactive_socket_sendto_op.hpp [7:8]
- boost/asio/detail/reactive_socket_service.hpp [7:8]
- boost/asio/detail/reactive_socket_service_base.hpp [7:8]
- boost/asio/detail/reactive_wait_op.hpp [7:8]
- boost/asio/detail/reactor.hpp [7:8]
- boost/asio/detail/reactor_fwd.hpp [7:8]
- boost/asio/detail/reactor_op.hpp [7:8]
- boost/asio/detail/reactor_op_queue.hpp [7:8]
- boost/asio/detail/recycling_allocator.hpp [7:8]
- boost/asio/detail/regex_fwd.hpp [7:8]
- boost/asio/detail/resolve_endpoint_op.hpp [7:8]
- boost/asio/detail/resolve_op.hpp [7:8]
- boost/asio/detail/resolve_query_op.hpp [7:8]
- boost/asio/detail/resolver_service.hpp [7:8]
- boost/asio/detail/resolver_service_base.hpp [7:8]
- boost/asio/detail/scheduler.hpp [7:8]
- boost/asio/detail/scheduler_operation.hpp [7:8]
- boost/asio/detail/scheduler_thread_info.hpp [7:8]
- boost/asio/detail/scoped_lock.hpp [7:8]
- boost/asio/detail/scoped_ptr.hpp [7:8]
- boost/asio/detail/select_interrupter.hpp [7:8]
- boost/asio/detail/select_reactor.hpp [7:8]
- boost/asio/detail/service_registry.hpp [7:8]
- boost/asio/detail/signal_blocker.hpp [7:8]
- boost/asio/detail/signal_handler.hpp [7:8]
- boost/asio/detail/signal_init.hpp [7:8]
- boost/asio/detail/signal_op.hpp [7:8]
- boost/asio/detail/signal_set_service.hpp [7:8]
- boost/asio/detail/socket_holder.hpp [7:8]
- boost/asio/detail/socket_ops.hpp [7:8]
- boost/asio/detail/socket_option.hpp [7:8]
- boost/asio/detail/socket_select_interrupter.hpp [7:8]
- boost/asio/detail/socket_types.hpp [7:8]
- boost/asio/detail/solaris_fenced_block.hpp [7:8]
- boost/asio/detail/static_mutex.hpp [7:8]
- boost/asio/detail/std_event.hpp [7:8]
- boost/asio/detail/std_fenced_block.hpp [7:8]
- boost/asio/detail/std_global.hpp [7:8]
- boost/asio/detail/std_mutex.hpp [7:8]
- boost/asio/detail/std_static_mutex.hpp [7:8]
- boost/asio/detail/std_thread.hpp [7:8]
- boost/asio/detail/strand_executor_service.hpp [7:8]
- boost/asio/detail/strand_service.hpp [7:8]
- boost/asio/detail/string_view.hpp [7:8]
- boost/asio/detail/thread.hpp [7:8]
- boost/asio/detail/thread_context.hpp [7:8]
- boost/asio/detail/thread_group.hpp [7:8]
- boost/asio/detail/thread_info_base.hpp [7:8]
- boost/asio/detail/throw_error.hpp [7:8]
- boost/asio/detail/throw_exception.hpp [7:8]
- boost/asio/detail/timer_queue.hpp [7:8]
- boost/asio/detail/timer_queue_base.hpp [7:8]
- boost/asio/detail/timer_queue_ptime.hpp [7:8]
- boost/asio/detail/timer_queue_set.hpp [7:8]
- boost/asio/detail/timer_scheduler.hpp [7:8]
- boost/asio/detail/timer_scheduler_fwd.hpp [7:8]
- boost/asio/detail/tss_ptr.hpp [7:8]
- boost/asio/detail/type_traits.hpp [7:8]
- boost/asio/detail/variadic_templates.hpp [7:8]
- boost/asio/detail/wait_handler.hpp [7:8]
- boost/asio/detail/wait_op.hpp [7:8]
- boost/asio/detail/win_event.hpp [7:8]
- boost/asio/detail/win_fd_set_adapter.hpp [7:8]
- boost/asio/detail/win_fenced_block.hpp [7:8]
- boost/asio/detail/win_global.hpp [7:8]
- boost/asio/detail/win_iocp_handle_read_op.hpp [8:9]
- boost/asio/detail/win_iocp_handle_service.hpp [8:9]
- boost/asio/detail/win_iocp_handle_write_op.hpp [8:9]
- boost/asio/detail/win_iocp_io_context.hpp [7:8]
- boost/asio/detail/win_iocp_null_buffers_op.hpp [7:8]
- boost/asio/detail/win_iocp_operation.hpp [7:8]
- boost/asio/detail/win_iocp_overlapped_op.hpp [7:8]
- boost/asio/detail/win_iocp_overlapped_ptr.hpp [7:8]
- boost/asio/detail/win_iocp_serial_port_service.hpp [8:9]
- boost/asio/detail/win_iocp_socket_accept_op.hpp [7:8]
- boost/asio/detail/win_iocp_socket_connect_op.hpp [7:8]
- boost/asio/detail/win_iocp_socket_recv_op.hpp [7:8]
- boost/asio/detail/win_iocp_socket_recvfrom_op.hpp [7:8]
- boost/asio/detail/win_iocp_socket_recvmsg_op.hpp [7:8]
- boost/asio/detail/win_iocp_socket_send_op.hpp [7:8]
- boost/asio/detail/win_iocp_socket_service.hpp [7:8]
- boost/asio/detail/win_iocp_socket_service_base.hpp [7:8]
- boost/asio/detail/win_iocp_thread_info.hpp [7:8]
- boost/asio/detail/win_iocp_wait_op.hpp [7:8]
- boost/asio/detail/win_mutex.hpp [7:8]
- boost/asio/detail/win_object_handle_service.hpp [8:9]
- boost/asio/detail/win_static_mutex.hpp [7:8]
- boost/asio/detail/win_thread.hpp [7:8]
- boost/asio/detail/win_tss_ptr.hpp [7:8]
- boost/asio/detail/winapp_thread.hpp [7:8]
- boost/asio/detail/wince_thread.hpp [7:8]
- boost/asio/detail/winrt_async_manager.hpp [7:8]
- boost/asio/detail/winrt_async_op.hpp [7:8]
- boost/asio/detail/winrt_resolve_op.hpp [7:8]
- boost/asio/detail/winrt_resolver_service.hpp [7:8]
- boost/asio/detail/winrt_socket_connect_op.hpp [7:8]
- boost/asio/detail/winrt_socket_recv_op.hpp [7:8]
- boost/asio/detail/winrt_socket_send_op.hpp [7:8]
- boost/asio/detail/winrt_ssocket_service.hpp [7:8]
- boost/asio/detail/winrt_ssocket_service_base.hpp [7:8]
- boost/asio/detail/winrt_timer_scheduler.hpp [7:8]
- boost/asio/detail/winrt_utils.hpp [7:8]
- boost/asio/detail/winsock_init.hpp [7:8]
- boost/asio/detail/work_dispatcher.hpp [7:8]
- boost/asio/detail/wrapped_handler.hpp [7:8]
- boost/asio/dispatch.hpp [7:8]
- boost/asio/error.hpp [7:8]
- boost/asio/execution_context.hpp [7:8]
- boost/asio/executor.hpp [7:8]
- boost/asio/executor_work_guard.hpp [7:8]
- boost/asio/experimental.hpp [7:8]
- boost/asio/experimental/co_spawn.hpp [7:8]
- boost/asio/experimental/detached.hpp [7:8]
- boost/asio/experimental/impl/co_spawn.hpp [7:8]
- boost/asio/experimental/impl/detached.hpp [7:8]
- boost/asio/experimental/impl/redirect_error.hpp [7:8]
- boost/asio/experimental/redirect_error.hpp [7:8]
- boost/asio/generic/basic_endpoint.hpp [7:8]
- boost/asio/generic/datagram_protocol.hpp [7:8]
- boost/asio/generic/detail/endpoint.hpp [7:8]
- boost/asio/generic/detail/impl/endpoint.ipp [7:8]
- boost/asio/generic/raw_protocol.hpp [7:8]
- boost/asio/generic/seq_packet_protocol.hpp [7:8]
- boost/asio/generic/stream_protocol.hpp [7:8]
- boost/asio/handler_alloc_hook.hpp [7:8]
- boost/asio/handler_continuation_hook.hpp [7:8]
- boost/asio/handler_invoke_hook.hpp [7:8]
- boost/asio/handler_type.hpp [7:8]
- boost/asio/high_resolution_timer.hpp [7:8]
- boost/asio/impl/buffered_read_stream.hpp [7:8]
- boost/asio/impl/buffered_write_stream.hpp [7:8]
- boost/asio/impl/connect.hpp [7:8]
- boost/asio/impl/defer.hpp [7:8]
- boost/asio/impl/dispatch.hpp [7:8]
- boost/asio/impl/error.ipp [7:8]
- boost/asio/impl/execution_context.hpp [7:8]
- boost/asio/impl/execution_context.ipp [7:8]
- boost/asio/impl/executor.hpp [7:8]
- boost/asio/impl/executor.ipp [7:8]
- boost/asio/impl/handler_alloc_hook.ipp [7:8]
- boost/asio/impl/io_context.hpp [7:8]
- boost/asio/impl/io_context.ipp [7:8]
- boost/asio/impl/post.hpp [7:8]
- boost/asio/impl/read.hpp [7:8]
- boost/asio/impl/read_at.hpp [7:8]
- boost/asio/impl/read_until.hpp [7:8]
- boost/asio/impl/serial_port_base.hpp [8:9]
- boost/asio/impl/serial_port_base.ipp [8:9]
- boost/asio/impl/spawn.hpp [7:8]
- boost/asio/impl/src.cpp [7:8]
- boost/asio/impl/src.hpp [7:8]
- boost/asio/impl/system_context.hpp [7:8]
- boost/asio/impl/system_context.ipp [7:8]
- boost/asio/impl/system_executor.hpp [7:8]
- boost/asio/impl/thread_pool.hpp [7:8]
- boost/asio/impl/thread_pool.ipp [7:8]
- boost/asio/impl/use_future.hpp [7:8]
- boost/asio/impl/write.hpp [7:8]
- boost/asio/impl/write_at.hpp [7:8]
- boost/asio/io_context.hpp [7:8]
- boost/asio/io_context_strand.hpp [7:8]
- boost/asio/io_service.hpp [7:8]
- boost/asio/io_service_strand.hpp [7:8]
- boost/asio/ip/address.hpp [7:8]
- boost/asio/ip/address_v4.hpp [7:8]
- boost/asio/ip/address_v4_iterator.hpp [7:8]
- boost/asio/ip/address_v4_range.hpp [7:8]
- boost/asio/ip/address_v6.hpp [7:8]
- boost/asio/ip/address_v6_iterator.hpp [8:9]
- boost/asio/ip/address_v6_range.hpp [8:9]
- boost/asio/ip/bad_address_cast.hpp [7:8]
- boost/asio/ip/basic_endpoint.hpp [7:8]
- boost/asio/ip/basic_resolver.hpp [7:8]
- boost/asio/ip/basic_resolver_entry.hpp [7:8]
- boost/asio/ip/basic_resolver_iterator.hpp [7:8]
- boost/asio/ip/basic_resolver_query.hpp [7:8]
- boost/asio/ip/basic_resolver_results.hpp [7:8]
- boost/asio/ip/detail/endpoint.hpp [7:8]
- boost/asio/ip/detail/impl/endpoint.ipp [7:8]
- boost/asio/ip/detail/socket_option.hpp [7:8]
- boost/asio/ip/host_name.hpp [7:8]
- boost/asio/ip/icmp.hpp [7:8]
- boost/asio/ip/impl/address.hpp [7:8]
- boost/asio/ip/impl/address.ipp [7:8]
- boost/asio/ip/impl/address_v4.hpp [7:8]
- boost/asio/ip/impl/address_v4.ipp [7:8]
- boost/asio/ip/impl/address_v6.hpp [7:8]
- boost/asio/ip/impl/address_v6.ipp [7:8]
- boost/asio/ip/impl/basic_endpoint.hpp [7:8]
- boost/asio/ip/impl/host_name.ipp [7:8]
- boost/asio/ip/impl/network_v4.hpp [8:9]
- boost/asio/ip/impl/network_v4.ipp [8:9]
- boost/asio/ip/impl/network_v6.hpp [7:8]
- boost/asio/ip/impl/network_v6.ipp [8:9]
- boost/asio/ip/multicast.hpp [7:8]
- boost/asio/ip/network_v4.hpp [8:9]
- boost/asio/ip/network_v6.hpp [8:9]
- boost/asio/ip/resolver_base.hpp [7:8]
- boost/asio/ip/resolver_query_base.hpp [7:8]
- boost/asio/ip/resolver_service.hpp [7:8]
- boost/asio/ip/tcp.hpp [7:8]
- boost/asio/ip/udp.hpp [7:8]
- boost/asio/ip/unicast.hpp [7:8]
- boost/asio/ip/v6_only.hpp [7:8]
- boost/asio/is_executor.hpp [7:8]
- boost/asio/is_read_buffered.hpp [7:8]
- boost/asio/is_write_buffered.hpp [7:8]
- boost/asio/local/basic_endpoint.hpp [8:9]
- boost/asio/local/connect_pair.hpp [7:8]
- boost/asio/local/datagram_protocol.hpp [7:8]
- boost/asio/local/detail/endpoint.hpp [8:9]
- boost/asio/local/detail/impl/endpoint.ipp [8:9]
- boost/asio/local/stream_protocol.hpp [7:8]
- boost/asio/packaged_task.hpp [7:8]
- boost/asio/placeholders.hpp [7:8]
- boost/asio/posix/basic_descriptor.hpp [7:8]
- boost/asio/posix/basic_stream_descriptor.hpp [7:8]
- boost/asio/posix/descriptor.hpp [7:8]
- boost/asio/posix/descriptor_base.hpp [7:8]
- boost/asio/posix/stream_descriptor.hpp [7:8]
- boost/asio/posix/stream_descriptor_service.hpp [7:8]
- boost/asio/post.hpp [7:8]
- boost/asio/raw_socket_service.hpp [7:8]
- boost/asio/read.hpp [7:8]
- boost/asio/read_at.hpp [7:8]
- boost/asio/read_until.hpp [7:8]
- boost/asio/seq_packet_socket_service.hpp [7:8]
- boost/asio/serial_port.hpp [8:9]
- boost/asio/serial_port_base.hpp [8:9]
- boost/asio/serial_port_service.hpp [7:8]
- boost/asio/signal_set.hpp [7:8]
- boost/asio/signal_set_service.hpp [7:8]
- boost/asio/socket_acceptor_service.hpp [7:8]
- boost/asio/socket_base.hpp [7:8]
- boost/asio/spawn.hpp [7:8]
- boost/asio/ssl.hpp [7:8]
- boost/asio/ssl/context.hpp [7:8]
- boost/asio/ssl/context_base.hpp [7:8]
- boost/asio/ssl/detail/buffered_handshake_op.hpp [7:8]
- boost/asio/ssl/detail/engine.hpp [7:8]
- boost/asio/ssl/detail/handshake_op.hpp [7:8]
- boost/asio/ssl/detail/impl/engine.ipp [7:8]
- boost/asio/ssl/detail/impl/openssl_init.ipp [8:9]
- boost/asio/ssl/detail/io.hpp [7:8]
- boost/asio/ssl/detail/openssl_init.hpp [7:8]
- boost/asio/ssl/detail/openssl_types.hpp [7:8]
- boost/asio/ssl/detail/password_callback.hpp [7:8]
- boost/asio/ssl/detail/read_op.hpp [7:8]
- boost/asio/ssl/detail/shutdown_op.hpp [7:8]
- boost/asio/ssl/detail/stream_core.hpp [7:8]
- boost/asio/ssl/detail/verify_callback.hpp [7:8]
- boost/asio/ssl/detail/write_op.hpp [7:8]
- boost/asio/ssl/error.hpp [7:8]
- boost/asio/ssl/impl/context.hpp [8:9]
- boost/asio/ssl/impl/context.ipp [8:9]
- boost/asio/ssl/impl/error.ipp [7:8]
- boost/asio/ssl/impl/rfc2818_verification.ipp [7:8]
- boost/asio/ssl/impl/src.hpp [7:8]
- boost/asio/ssl/rfc2818_verification.hpp [7:8]
- boost/asio/ssl/stream.hpp [7:8]
- boost/asio/ssl/stream_base.hpp [7:8]
- boost/asio/ssl/verify_context.hpp [7:8]
- boost/asio/ssl/verify_mode.hpp [7:8]
- boost/asio/steady_timer.hpp [7:8]
- boost/asio/strand.hpp [7:8]
- boost/asio/stream_socket_service.hpp [7:8]
- boost/asio/streambuf.hpp [7:8]
- boost/asio/system_context.hpp [7:8]
- boost/asio/system_executor.hpp [7:8]
- boost/asio/system_timer.hpp [7:8]
- boost/asio/thread_pool.hpp [7:8]
- boost/asio/time_traits.hpp [7:8]
- boost/asio/ts/buffer.hpp [7:8]
- boost/asio/ts/executor.hpp [7:8]
- boost/asio/ts/internet.hpp [7:8]
- boost/asio/ts/io_context.hpp [7:8]
- boost/asio/ts/net.hpp [7:8]
- boost/asio/ts/netfwd.hpp [7:8]
- boost/asio/ts/socket.hpp [7:8]
- boost/asio/ts/timer.hpp [7:8]
- boost/asio/unyield.hpp [7:8]
- boost/asio/use_future.hpp [7:8]
- boost/asio/uses_executor.hpp [7:8]
- boost/asio/version.hpp [7:8]
- boost/asio/wait_traits.hpp [7:8]
- boost/asio/waitable_timer_service.hpp [7:8]
- boost/asio/windows/basic_handle.hpp [7:8]
- boost/asio/windows/basic_object_handle.hpp [8:9]
- boost/asio/windows/basic_random_access_handle.hpp [7:8]
- boost/asio/windows/basic_stream_handle.hpp [7:8]
- boost/asio/windows/object_handle.hpp [8:9]
- boost/asio/windows/object_handle_service.hpp [8:9]
- boost/asio/windows/overlapped_handle.hpp [7:8]
- boost/asio/windows/overlapped_ptr.hpp [7:8]
- boost/asio/windows/random_access_handle.hpp [7:8]
- boost/asio/windows/random_access_handle_service.hpp [7:8]
- boost/asio/windows/stream_handle.hpp [7:8]
- boost/asio/windows/stream_handle_service.hpp [7:8]
- boost/asio/write.hpp [7:8]
- boost/asio/write_at.hpp [7:8]
- boost/asio/yield.hpp [7:8]
- boost/beast.hpp [4:5]
- boost/beast/core.hpp [4:5]
- boost/beast/core/bind_handler.hpp [4:5]
- boost/beast/core/buffered_read_stream.hpp [4:5]
- boost/beast/core/buffers_adapter.hpp [4:5]
- boost/beast/core/buffers_cat.hpp [4:5]
- boost/beast/core/buffers_prefix.hpp [4:5]
- boost/beast/core/buffers_suffix.hpp [4:5]
- boost/beast/core/buffers_to_string.hpp [4:5]
- boost/beast/core/detail/allocator.hpp [4:5]
- boost/beast/core/detail/base64.hpp [4:5]
- boost/beast/core/detail/bind_handler.hpp [4:5]
- boost/beast/core/detail/buffers_ref.hpp [4:5]
- boost/beast/core/detail/clamp.hpp [4:5]
- boost/beast/core/detail/config.hpp [4:5]
- boost/beast/core/detail/cpu_info.hpp [4:5]
- boost/beast/core/detail/empty_base_optimization.hpp [4:5]
- boost/beast/core/detail/integer_sequence.hpp [4:5]
- boost/beast/core/detail/ostream.hpp [4:5]
- boost/beast/core/detail/sha1.hpp [4:5]
- boost/beast/core/detail/static_ostream.hpp [4:5]
- boost/beast/core/detail/static_string.hpp [4:5]
- boost/beast/core/detail/type_traits.hpp [4:5]
- boost/beast/core/detail/variant.hpp [4:5]
- boost/beast/core/detail/varint.hpp [4:5]
- boost/beast/core/error.hpp [4:5]
- boost/beast/core/file.hpp [4:5]
- boost/beast/core/file_base.hpp [4:5]
- boost/beast/core/file_posix.hpp [4:5]
- boost/beast/core/file_stdio.hpp [4:5]
- boost/beast/core/file_win32.hpp [4:5]
- boost/beast/core/flat_buffer.hpp [4:5]
- boost/beast/core/flat_static_buffer.hpp [4:5]
- boost/beast/core/handler_ptr.hpp [4:5]
- boost/beast/core/impl/buffered_read_stream.ipp [4:5]
- boost/beast/core/impl/buffers_adapter.ipp [4:5]
- boost/beast/core/impl/buffers_cat.ipp [4:5]
- boost/beast/core/impl/buffers_prefix.ipp [4:5]
- boost/beast/core/impl/buffers_suffix.ipp [4:5]
- boost/beast/core/impl/file_posix.ipp [4:5]
- boost/beast/core/impl/file_stdio.ipp [4:5]
- boost/beast/core/impl/file_win32.ipp [4:5]
- boost/beast/core/impl/flat_buffer.ipp [4:5]
- boost/beast/core/impl/flat_static_buffer.ipp [4:5]
- boost/beast/core/impl/handler_ptr.ipp [4:5]
- boost/beast/core/impl/multi_buffer.ipp [4:5]
- boost/beast/core/impl/read_size.ipp [4:5]
- boost/beast/core/impl/static_buffer.ipp [4:5]
- boost/beast/core/impl/static_string.ipp [4:5]
- boost/beast/core/impl/string_param.ipp [4:5]
- boost/beast/core/multi_buffer.hpp [4:5]
- boost/beast/core/ostream.hpp [4:5]
- boost/beast/core/read_size.hpp [4:5]
- boost/beast/core/span.hpp [4:5]
- boost/beast/core/static_buffer.hpp [4:5]
- boost/beast/core/static_string.hpp [4:5]
- boost/beast/core/string.hpp [4:5]
- boost/beast/core/string_param.hpp [4:5]
- boost/beast/core/type_traits.hpp [4:5]
- boost/beast/http.hpp [4:5]
- boost/beast/http/basic_dynamic_body.hpp [4:5]
- boost/beast/http/basic_file_body.hpp [4:5]
- boost/beast/http/basic_parser.hpp [4:5]
- boost/beast/http/buffer_body.hpp [4:5]
- boost/beast/http/chunk_encode.hpp [4:5]
- boost/beast/http/detail/basic_parsed_list.hpp [4:5]
- boost/beast/http/detail/basic_parser.hpp [4:5]
- boost/beast/http/detail/chunk_encode.hpp [4:5]
- boost/beast/http/detail/rfc7230.hpp [4:5]
- boost/beast/http/detail/type_traits.hpp [4:5]
- boost/beast/http/dynamic_body.hpp [4:5]
- boost/beast/http/empty_body.hpp [4:5]
- boost/beast/http/error.hpp [4:5]
- boost/beast/http/field.hpp [4:5]
- boost/beast/http/fields.hpp [4:5]
- boost/beast/http/file_body.hpp [4:5]
- boost/beast/http/impl/basic_parser.ipp [4:5]
- boost/beast/http/impl/chunk_encode.ipp [4:5]
- boost/beast/http/impl/error.ipp [4:5]
- boost/beast/http/impl/field.ipp [4:5]
- boost/beast/http/impl/fields.ipp [4:5]
- boost/beast/http/impl/file_body_win32.ipp [4:5]
- boost/beast/http/impl/message.ipp [4:5]
- boost/beast/http/impl/parser.ipp [4:5]
- boost/beast/http/impl/read.ipp [4:5]
- boost/beast/http/impl/rfc7230.ipp [4:5]
- boost/beast/http/impl/serializer.ipp [4:5]
- boost/beast/http/impl/status.ipp [4:5]
- boost/beast/http/impl/verb.ipp [4:5]
- boost/beast/http/impl/write.ipp [4:5]
- boost/beast/http/message.hpp [4:5]
- boost/beast/http/parser.hpp [4:5]
- boost/beast/http/read.hpp [4:5]
- boost/beast/http/rfc7230.hpp [4:5]
- boost/beast/http/serializer.hpp [4:5]
- boost/beast/http/span_body.hpp [4:5]
- boost/beast/http/status.hpp [4:5]
- boost/beast/http/string_body.hpp [4:5]
- boost/beast/http/type_traits.hpp [4:5]
- boost/beast/http/vector_body.hpp [4:5]
- boost/beast/http/verb.hpp [4:5]
- boost/beast/http/write.hpp [4:5]
- boost/beast/version.hpp [4:5]
- boost/beast/websocket.hpp [4:5]
- boost/beast/websocket/detail/error.hpp [4:5]
- boost/beast/websocket/detail/frame.hpp [4:5]
- boost/beast/websocket/detail/hybi13.hpp [4:5]
- boost/beast/websocket/detail/mask.hpp [4:5]
- boost/beast/websocket/detail/pausation.hpp [4:5]
- boost/beast/websocket/detail/pmd_extension.hpp [4:5]
- boost/beast/websocket/detail/stream_base.hpp [4:5]
- boost/beast/websocket/detail/type_traits.hpp [4:5]
- boost/beast/websocket/detail/utf8_checker.hpp [4:5]
- boost/beast/websocket/error.hpp [4:5]
- boost/beast/websocket/impl/accept.ipp [4:5]
- boost/beast/websocket/impl/close.ipp [4:5]
- boost/beast/websocket/impl/error.ipp [4:5]
- boost/beast/websocket/impl/handshake.ipp [4:5]
- boost/beast/websocket/impl/ping.ipp [4:5]
- boost/beast/websocket/impl/read.ipp [4:5]
- boost/beast/websocket/impl/rfc6455.ipp [4:5]
- boost/beast/websocket/impl/ssl.ipp [4:5]
- boost/beast/websocket/impl/stream.ipp [4:5]
- boost/beast/websocket/impl/teardown.ipp [4:5]
- boost/beast/websocket/impl/write.ipp [4:5]
- boost/beast/websocket/option.hpp [4:5]
- boost/beast/websocket/rfc6455.hpp [4:5]
- boost/beast/websocket/role.hpp [4:5]
- boost/beast/websocket/ssl.hpp [4:5]
- boost/beast/websocket/stream.hpp [4:5]
- boost/beast/websocket/stream_fwd.hpp [4:5]
- boost/beast/websocket/teardown.hpp [4:5]
- boost/beast/zlib.hpp [4:5]
- boost/beast/zlib/deflate_stream.hpp [4:5]
- boost/beast/zlib/detail/bitstream.hpp [4:5]
- boost/beast/zlib/detail/deflate_stream.hpp [4:5]
- boost/beast/zlib/detail/inflate_stream.hpp [4:5]
- boost/beast/zlib/detail/ranges.hpp [4:5]
- boost/beast/zlib/detail/window.hpp [4:5]
- boost/beast/zlib/error.hpp [4:5]
- boost/beast/zlib/impl/error.ipp [4:5]
- boost/beast/zlib/inflate_stream.hpp [4:5]
- boost/beast/zlib/zlib.hpp [4:5]
- boost/container_hash/detail/float_functions.hpp [3:4]
- boost/container_hash/detail/hash_float.hpp [3:4]
- boost/container_hash/detail/limits.hpp [3:4]
- boost/container_hash/extensions.hpp [3:4]
- boost/container_hash/hash.hpp [3:4]
- boost/container_hash/hash_fwd.hpp [3:4]
- boost/detail/container_fwd.hpp [3:4]
- boost/functional/hash.hpp [3:4]
- boost/functional/hash/extensions.hpp [3:4]
- boost/functional/hash/hash.hpp [3:4]
- boost/functional/hash/hash_fwd.hpp [3:4]
- boost/functional/hash_fwd.hpp [3:4]
- boost/process.hpp [9:10]
- boost/process/args.hpp [8:9]
- boost/process/async.hpp [3:4]
- boost/process/async_pipe.hpp [7:8]
- boost/process/async_system.hpp [8:9]
- boost/process/child.hpp [8:9]
- boost/process/cmd.hpp [8:9]
- boost/process/detail/basic_cmd.hpp [3:4]
- boost/process/detail/child_decl.hpp [8:9]
- boost/process/detail/config.hpp [8:9]
- boost/process/detail/execute_impl.hpp [8:9]
- boost/process/detail/handler.hpp [3:4]
- boost/process/detail/handler_base.hpp [8:9]
- boost/process/detail/on_exit.hpp [3:4]
- boost/process/detail/posix/asio_fwd.hpp [3:4]
- boost/process/detail/posix/async_handler.hpp [3:4]
- boost/process/detail/posix/async_in.hpp [7:8]
- boost/process/detail/posix/async_out.hpp [7:8]
- boost/process/detail/posix/async_pipe.hpp [3:4]
- boost/process/detail/posix/basic_cmd.hpp [3:4]
- boost/process/detail/posix/basic_pipe.hpp [7:8]
- boost/process/detail/posix/child_handle.hpp [7:8]
- boost/process/detail/posix/close_in.hpp [7:8]
- boost/process/detail/posix/close_out.hpp [7:8]
- boost/process/detail/posix/cmd.hpp [3:4]
- boost/process/detail/posix/compare_handles.hpp [3:4]
- boost/process/detail/posix/env_init.hpp [3:4]
- boost/process/detail/posix/environment.hpp [3:4]
- boost/process/detail/posix/exe.hpp [3:4]
- boost/process/detail/posix/executor.hpp [7:8]
- boost/process/detail/posix/fd.hpp [7:8]
- boost/process/detail/posix/file_descriptor.hpp [3:4]
- boost/process/detail/posix/file_in.hpp [7:8]
- boost/process/detail/posix/file_out.hpp [8:9]
- boost/process/detail/posix/group_handle.hpp [3:4]
- boost/process/detail/posix/group_ref.hpp [3:4]
- boost/process/detail/posix/handler.hpp [3:4]
- boost/process/detail/posix/io_context_ref.hpp [3:4]
- boost/process/detail/posix/is_running.hpp [3:4]
- boost/process/detail/posix/null_in.hpp [7:8]
- boost/process/detail/posix/null_out.hpp [8:9]
- boost/process/detail/posix/on_exit.hpp [3:4]
- boost/process/detail/posix/pipe_in.hpp [7:8]
- boost/process/detail/posix/pipe_out.hpp [8:9]
- boost/process/detail/posix/search_path.hpp [7:8]
- boost/process/detail/posix/shell_path.hpp [7:8]
- boost/process/detail/posix/sigchld_service.hpp [3:4]
- boost/process/detail/posix/signal.hpp [8:9]
- boost/process/detail/posix/start_dir.hpp [7:8]
- boost/process/detail/posix/terminate.hpp [7:8]
- boost/process/detail/posix/wait_for_exit.hpp [7:8]
- boost/process/detail/posix/wait_group.hpp [7:8]
- boost/process/detail/throw_on_error.hpp [8:9]
- boost/process/detail/traits.hpp [3:4]
- boost/process/detail/traits/async.hpp [3:4]
- boost/process/detail/traits/cmd_or_exe.hpp [3:4]
- boost/process/detail/traits/decl.hpp [3:4]
- boost/process/detail/traits/env.hpp [3:4]
- boost/process/detail/traits/error.hpp [3:4]
- boost/process/detail/traits/group.hpp [3:4]
- boost/process/detail/traits/wchar_t.hpp [3:4]
- boost/process/detail/windows/asio_fwd.hpp [3:4]
- boost/process/detail/windows/async_handler.hpp [3:4]
- boost/process/detail/windows/async_in.hpp [7:8]
- boost/process/detail/windows/async_out.hpp [7:8]
- boost/process/detail/windows/async_pipe.hpp [3:4]
- boost/process/detail/windows/basic_cmd.hpp [3:4]
- boost/process/detail/windows/basic_pipe.hpp [3:4]
- boost/process/detail/windows/child_handle.hpp [7:8]
- boost/process/detail/windows/close_in.hpp [7:8]
- boost/process/detail/windows/close_out.hpp [7:8]
- boost/process/detail/windows/cmd.hpp [3:4]
- boost/process/detail/windows/compare_handles.hpp [3:4]
- boost/process/detail/windows/env_init.hpp [3:4]
- boost/process/detail/windows/environment.hpp [3:4]
- boost/process/detail/windows/executor.hpp [8:9]
- boost/process/detail/windows/file_descriptor.hpp [3:4]
- boost/process/detail/windows/file_in.hpp [7:8]
- boost/process/detail/windows/file_out.hpp [7:8]
- boost/process/detail/windows/group_handle.hpp [3:4]
- boost/process/detail/windows/group_ref.hpp [3:4]
- boost/process/detail/windows/handler.hpp [3:4]
- boost/process/detail/windows/io_context_ref.hpp [3:4]
- boost/process/detail/windows/is_running.hpp [3:4]
- boost/process/detail/windows/job_workaround.hpp [3:4]
- boost/process/detail/windows/locale.hpp [4:5]
- boost/process/detail/windows/null_in.hpp [7:8]
- boost/process/detail/windows/null_out.hpp [7:8]
- boost/process/detail/windows/on_exit.hpp [3:4]
- boost/process/detail/windows/pipe_in.hpp [7:8]
- boost/process/detail/windows/pipe_out.hpp [8:9]
- boost/process/detail/windows/search_path.hpp [7:8]
- boost/process/detail/windows/shell_path.hpp [7:8]
- boost/process/detail/windows/show_window.hpp [8:9]
- boost/process/detail/windows/start_dir.hpp [7:8]
- boost/process/detail/windows/terminate.hpp [7:8]
- boost/process/detail/windows/wait_for_exit.hpp [8:9]
- boost/process/detail/windows/wait_group.hpp [3:4]
- boost/process/env.hpp [3:4]
- boost/process/environment.hpp [3:4]
- boost/process/error.hpp [8:9]
- boost/process/exception.hpp [3:4]
- boost/process/exe.hpp [8:9]
- boost/process/extend.hpp [3:4]
- boost/process/group.hpp [3:4]
- boost/process/io.hpp [3:4]
- boost/process/locale.hpp [3:4]
- boost/process/pipe.hpp [7:8]
- boost/process/posix.hpp [3:4]
- boost/process/search_path.hpp [7:8]
- boost/process/spawn.hpp [8:9]
- boost/process/start_dir.hpp [7:8]
- boost/process/system.hpp [8:9]
- boost/process/windows.hpp [3:4]
- boost/thread/with_lock_guard.hpp [4:5]
- boost/type_index.hpp [4:5]
- boost/type_index/ctti_type_index.hpp [5:6]
- boost/type_index/detail/compile_time_type_info.hpp [5:6]
- boost/type_index/detail/ctti_register_class.hpp [5:6]
- boost/type_index/detail/stl_register_class.hpp [5:6]
- boost/type_index/runtime_cast.hpp [5:6]
- boost/type_index/runtime_cast/boost_shared_ptr_cast.hpp [5:6]
- boost/type_index/runtime_cast/detail/runtime_cast_impl.hpp [5:6]
- boost/type_index/runtime_cast/pointer_cast.hpp [5:6]
- boost/type_index/runtime_cast/reference_cast.hpp [5:6]
- boost/type_index/runtime_cast/register_runtime_class.hpp [5:6]
- boost/type_index/runtime_cast/std_shared_ptr_cast.hpp [5:6]
- boost/type_index/stl_type_index.hpp [5:6]
- boost/type_index/type_index_facade.hpp [5:6]
- boost/typeof/encode_decode.hpp [3:4]
- boost/typeof/encode_decode_params.hpp [2:3]
- boost/typeof/integral_template_param.hpp [2:3]
- boost/typeof/modifiers.hpp [2:3]
- boost/typeof/register_functions_iterate.hpp [2:3]
- boost/typeof/template_encoding.hpp [3:4]
- boost/typeof/template_template_param.hpp [3:4]
- boost/typeof/type_encoding.hpp [2:3]
- boost/typeof/type_template_param.hpp [2:3]
- boost/typeof/typeof.hpp [2:3]
- boost/typeof/typeof_impl.hpp [3:4]
- boost/unordered/detail/fwd.hpp [3:4]
- boost/unordered/detail/implementation.hpp [4:5]
- boost/unordered/detail/map.hpp [3:4]
- boost/unordered/detail/set.hpp [3:4]
- boost/unordered/unordered_map.hpp [4:5]
- boost/unordered/unordered_map_fwd.hpp [3:4]
- boost/unordered/unordered_set.hpp [4:5]
- boost/unordered/unordered_set_fwd.hpp [3:4]
- boost/unordered_map.hpp [4:5]
- boost/unordered_set.hpp [4:5]
-
-KEEP BSL-1.0 1bc67f06e2f0ef648be482cbd0f129ee
-BELONGS ya.make
- License text:
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE10.txt or copy at http://www.boost.org/LICENSE10.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 85.71
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/algorithm/cxx14/mismatch.hpp [4:5]
- boost/algorithm/cxx17/exclusive_scan.hpp [4:5]
- boost/algorithm/cxx17/for_each_n.hpp [4:5]
- boost/algorithm/cxx17/inclusive_scan.hpp [4:5]
- boost/algorithm/cxx17/reduce.hpp [4:5]
- boost/algorithm/cxx17/transform_exclusive_scan.hpp [4:5]
- boost/algorithm/cxx17/transform_inclusive_scan.hpp [4:5]
- boost/algorithm/cxx17/transform_reduce.hpp [4:5]
-
-KEEP BSL-1.0 1d7cd1eda70644f6f1ed6eac7bbf2c13
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/concepts.hpp at line 5, boost/range/detail/misc_concept.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/range/concepts.hpp [3:6]
- boost/range/detail/misc_concept.hpp [3:6]
-
-KEEP BSL-1.0 1e1b35c3ae13c65f63b2c7467cce8a87
-BELONGS libs/filesystem/ya.make libs/program_options/ya.make libs/serialization/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/dll.hpp at line 5, boost/dll/alias.hpp at line 5, boost/dll/detail/aggressive_ptr_cast.hpp at line 5, boost/dll/detail/ctor_dtor.hpp at line 4, boost/dll/detail/demangling/itanium.hpp at line 4, boost/dll/detail/demangling/mangled_storage_base.hpp at line 4, boost/dll/detail/demangling/msvc.hpp at line 4, boost/dll/detail/elf_info.hpp at line 5, boost/dll/detail/get_mem_fn_type.hpp at line 4, boost/dll/detail/import_mangled_helpers.hpp at line 4, boost/dll/detail/macho_info.hpp at line 5, boost/dll/detail/pe_info.hpp at line 5, boost/dll/detail/posix/path_from_handle.hpp at line 4, boost/dll/detail/posix/program_location_impl.hpp at line 5, boost/dll/detail/posix/shared_library_impl.hpp at line 5, boost/dll/detail/system_error.hpp at line 4, boost/dll/detail/type_info.hpp at line 4, boost/dll/detail/windows/path_from_handle.hpp at line 5, boost/dll/detail/windows/shared_library_impl.hpp at line 5, boost/dll/detail/x_info_interface.hpp at line 5, boost/dll/import.hpp at line 5, boost/dll/import_class.hpp at line 4, boost/dll/import_mangled.hpp at line 4, boost/dll/library_info.hpp at line 5, boost/dll/runtime_symbol_info.hpp at line 5, boost/dll/shared_library.hpp at line 5, boost/dll/shared_library_load_mode.hpp at line 5, boost/dll/smart_library.hpp at line 4, boost/math/special_functions/detail/fp_traits.hpp at line 9, boost/math/special_functions/nonfinite_num_facets.hpp at line 9, boost/program_options/cmdline.hpp at line 3, boost/program_options/detail/cmdline.hpp at line 3, boost/program_options/detail/config_file.hpp at line 3, boost/program_options/detail/convert.hpp at line 3, boost/program_options/detail/parsers.hpp at line 3, boost/program_options/detail/value_semantic.hpp at line 3, boost/program_options/environment_iterator.hpp at line 3, boost/program_options/eof_iterator.hpp at line 3, boost/program_options/errors.hpp at line 3, boost/program_options/option.hpp at line 3, boost/program_options/options_description.hpp at line 4, boost/program_options/parsers.hpp at line 3, boost/program_options/positional_options.hpp at line 3, boost/program_options/value_semantic.hpp at line 3, boost/program_options/variables_map.hpp at line 3, boost/program_options/version.hpp at line 3, boost/spirit/home/support/detail/math/detail/fp_traits.hpp at line 9, boost/spirit/home/support/detail/math/fpclassify.hpp at line 9, boost/spirit/home/support/detail/math/signbit.hpp at line 9, boost/stacktrace/detail/void_ptr_cast.hpp at line 5, libs/filesystem/src/utf8_codecvt_facet.cpp at line 3, libs/program_options/src/cmdline.cpp at line 3, libs/program_options/src/config_file.cpp at line 3, libs/program_options/src/convert.cpp at line 3, libs/program_options/src/options_description.cpp at line 4, libs/program_options/src/parsers.cpp at line 3, libs/program_options/src/positional_options.cpp at line 3, libs/program_options/src/split.cpp at line 3, libs/program_options/src/utf8_codecvt_facet.cpp at line 3, libs/program_options/src/value_semantic.cpp at line 3, libs/program_options/src/variables_map.cpp at line 3, libs/program_options/src/winmain.cpp at line 3, libs/serialization/src/utf8_codecvt_facet.cpp at line 3
- License text:
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt
- // or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/dll.hpp [4:6]
- boost/dll/alias.hpp [4:6]
- boost/dll/detail/aggressive_ptr_cast.hpp [4:6]
- boost/dll/detail/ctor_dtor.hpp [3:5]
- boost/dll/detail/demangling/itanium.hpp [3:5]
- boost/dll/detail/demangling/mangled_storage_base.hpp [3:5]
- boost/dll/detail/demangling/msvc.hpp [3:5]
- boost/dll/detail/elf_info.hpp [4:6]
- boost/dll/detail/get_mem_fn_type.hpp [3:5]
- boost/dll/detail/import_mangled_helpers.hpp [3:5]
- boost/dll/detail/macho_info.hpp [4:6]
- boost/dll/detail/pe_info.hpp [4:6]
- boost/dll/detail/posix/path_from_handle.hpp [3:5]
- boost/dll/detail/posix/program_location_impl.hpp [4:6]
- boost/dll/detail/posix/shared_library_impl.hpp [4:6]
- boost/dll/detail/system_error.hpp [3:5]
- boost/dll/detail/type_info.hpp [3:5]
- boost/dll/detail/windows/path_from_handle.hpp [4:6]
- boost/dll/detail/windows/shared_library_impl.hpp [4:6]
- boost/dll/detail/x_info_interface.hpp [4:6]
- boost/dll/import.hpp [4:6]
- boost/dll/import_class.hpp [3:5]
- boost/dll/import_mangled.hpp [3:5]
- boost/dll/library_info.hpp [4:6]
- boost/dll/runtime_symbol_info.hpp [4:6]
- boost/dll/shared_library.hpp [4:6]
- boost/dll/shared_library_load_mode.hpp [4:6]
- boost/dll/smart_library.hpp [3:5]
- boost/math/special_functions/detail/fp_traits.hpp [8:10]
- boost/math/special_functions/nonfinite_num_facets.hpp [8:10]
- boost/program_options/cmdline.hpp [2:4]
- boost/program_options/detail/cmdline.hpp [2:4]
- boost/program_options/detail/config_file.hpp [2:4]
- boost/program_options/detail/convert.hpp [2:4]
- boost/program_options/detail/parsers.hpp [2:4]
- boost/program_options/detail/value_semantic.hpp [2:4]
- boost/program_options/environment_iterator.hpp [2:4]
- boost/program_options/eof_iterator.hpp [2:4]
- boost/program_options/errors.hpp [2:4]
- boost/program_options/option.hpp [2:4]
- boost/program_options/options_description.hpp [3:5]
- boost/program_options/parsers.hpp [2:4]
- boost/program_options/positional_options.hpp [2:4]
- boost/program_options/value_semantic.hpp [2:4]
- boost/program_options/variables_map.hpp [2:4]
- boost/program_options/version.hpp [2:4]
- boost/spirit/home/support/detail/math/detail/fp_traits.hpp [8:10]
- boost/spirit/home/support/detail/math/fpclassify.hpp [8:10]
- boost/spirit/home/support/detail/math/signbit.hpp [8:10]
- boost/stacktrace/detail/void_ptr_cast.hpp [4:6]
- libs/filesystem/src/utf8_codecvt_facet.cpp [2:4]
- libs/program_options/src/cmdline.cpp [2:4]
- libs/program_options/src/config_file.cpp [2:4]
- libs/program_options/src/convert.cpp [2:4]
- libs/program_options/src/options_description.cpp [3:5]
- libs/program_options/src/parsers.cpp [2:4]
- libs/program_options/src/positional_options.cpp [2:4]
- libs/program_options/src/split.cpp [2:4]
- libs/program_options/src/utf8_codecvt_facet.cpp [2:4]
- libs/program_options/src/value_semantic.cpp [2:4]
- libs/program_options/src/variables_map.cpp [2:4]
- libs/program_options/src/winmain.cpp [2:4]
- libs/serialization/src/utf8_codecvt_facet.cpp [2:4]
-
-KEEP BSL-1.0 1e28520c071df585290674c85c8738dc
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/numeric/odeint/external/mtl4/implicit_euler_mtl4.hpp at line 11, boost/numeric/odeint/external/mtl4/mtl4_resize.hpp at line 11
- License text:
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or
- copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/numeric/odeint/external/mtl4/implicit_euler_mtl4.hpp [10:12]
- boost/numeric/odeint/external/mtl4/mtl4_resize.hpp [10:12]
-
-KEEP BSL-1.0 1ec9e97d434c804aa0e6b4b93376301c
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/contract.hpp at line 7, boost/contract/assert.hpp at line 7, boost/contract/base_types.hpp at line 7, boost/contract/call_if.hpp at line 7, boost/contract/check.hpp at line 7, boost/contract/constructor.hpp at line 7, boost/contract/core/access.hpp at line 7, boost/contract/core/check_macro.hpp at line 7, boost/contract/core/config.hpp at line 7, boost/contract/core/constructor_precondition.hpp at line 7, boost/contract/core/exception.hpp at line 7, boost/contract/core/specify.hpp at line 7, boost/contract/core/virtual.hpp at line 7, boost/contract/destructor.hpp at line 7, boost/contract/detail/assert.hpp at line 7, boost/contract/detail/auto_ptr.hpp at line 7, boost/contract/detail/check.hpp at line 7, boost/contract/detail/checking.hpp at line 7, boost/contract/detail/condition/cond_base.hpp at line 7, boost/contract/detail/condition/cond_inv.hpp at line 7, boost/contract/detail/condition/cond_post.hpp at line 7, boost/contract/detail/condition/cond_subcontracting.hpp at line 7, boost/contract/detail/config.hpp at line 7, boost/contract/detail/debug.hpp at line 7, boost/contract/detail/decl.hpp at line 7, boost/contract/detail/declspec.hpp at line 7, boost/contract/detail/inlined.hpp at line 7, boost/contract/detail/inlined/core/exception.hpp at line 7, boost/contract/detail/inlined/detail/checking.hpp at line 7, boost/contract/detail/inlined/old.hpp at line 7, boost/contract/detail/name.hpp at line 7, boost/contract/detail/none.hpp at line 7, boost/contract/detail/noop.hpp at line 7, boost/contract/detail/operation/constructor.hpp at line 7, boost/contract/detail/operation/destructor.hpp at line 7, boost/contract/detail/operation/function.hpp at line 7, boost/contract/detail/operation/public_function.hpp at line 7, boost/contract/detail/operation/static_public_function.hpp at line 7, boost/contract/detail/operator_safe_bool.hpp at line 7, boost/contract/detail/preprocessor/keyword/private.hpp at line 7, boost/contract/detail/preprocessor/keyword/protected.hpp at line 7, boost/contract/detail/preprocessor/keyword/public.hpp at line 7, boost/contract/detail/preprocessor/keyword/utility/is.hpp at line 7, boost/contract/detail/preprocessor/keyword/virtual.hpp at line 7, boost/contract/detail/static_local_var.hpp at line 7, boost/contract/detail/tvariadic.hpp at line 7, boost/contract/detail/type_traits/member_function_types.hpp at line 7, boost/contract/detail/type_traits/mirror.hpp at line 7, boost/contract/detail/type_traits/optional.hpp at line 7, boost/contract/function.hpp at line 7, boost/contract/old.hpp at line 7, boost/contract/override.hpp at line 7, boost/contract/public_function.hpp at line 7, boost/contract_macro.hpp at line 7
- License text:
- // Distributed under the Boost Software License, Version 1.0 (see accompanying
- // file LICENSE_1_0.txt or a copy at http://www.boost.org/LICENSE_1_0.txt).
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/contract.hpp [6:7]
- boost/contract/assert.hpp [6:7]
- boost/contract/base_types.hpp [6:7]
- boost/contract/call_if.hpp [6:7]
- boost/contract/check.hpp [6:7]
- boost/contract/constructor.hpp [6:7]
- boost/contract/core/access.hpp [6:7]
- boost/contract/core/check_macro.hpp [6:7]
- boost/contract/core/config.hpp [6:7]
- boost/contract/core/constructor_precondition.hpp [6:7]
- boost/contract/core/exception.hpp [6:7]
- boost/contract/core/specify.hpp [6:7]
- boost/contract/core/virtual.hpp [6:7]
- boost/contract/destructor.hpp [6:7]
- boost/contract/detail/assert.hpp [6:7]
- boost/contract/detail/auto_ptr.hpp [6:7]
- boost/contract/detail/check.hpp [6:7]
- boost/contract/detail/checking.hpp [6:7]
- boost/contract/detail/condition/cond_base.hpp [6:7]
- boost/contract/detail/condition/cond_inv.hpp [6:7]
- boost/contract/detail/condition/cond_post.hpp [6:7]
- boost/contract/detail/condition/cond_subcontracting.hpp [6:7]
- boost/contract/detail/config.hpp [6:7]
- boost/contract/detail/debug.hpp [6:7]
- boost/contract/detail/decl.hpp [6:7]
- boost/contract/detail/declspec.hpp [6:7]
- boost/contract/detail/inlined.hpp [6:7]
- boost/contract/detail/inlined/core/exception.hpp [6:7]
- boost/contract/detail/inlined/detail/checking.hpp [6:7]
- boost/contract/detail/inlined/old.hpp [6:7]
- boost/contract/detail/name.hpp [6:7]
- boost/contract/detail/none.hpp [6:7]
- boost/contract/detail/noop.hpp [6:7]
- boost/contract/detail/operation/constructor.hpp [6:7]
- boost/contract/detail/operation/destructor.hpp [6:7]
- boost/contract/detail/operation/function.hpp [6:7]
- boost/contract/detail/operation/public_function.hpp [6:7]
- boost/contract/detail/operation/static_public_function.hpp [6:7]
- boost/contract/detail/operator_safe_bool.hpp [6:7]
- boost/contract/detail/preprocessor/keyword/private.hpp [6:7]
- boost/contract/detail/preprocessor/keyword/protected.hpp [6:7]
- boost/contract/detail/preprocessor/keyword/public.hpp [6:7]
- boost/contract/detail/preprocessor/keyword/utility/is.hpp [6:7]
- boost/contract/detail/preprocessor/keyword/virtual.hpp [6:7]
- boost/contract/detail/static_local_var.hpp [6:7]
- boost/contract/detail/tvariadic.hpp [6:7]
- boost/contract/detail/type_traits/member_function_types.hpp [6:7]
- boost/contract/detail/type_traits/mirror.hpp [6:7]
- boost/contract/detail/type_traits/optional.hpp [6:7]
- boost/contract/function.hpp [6:7]
- boost/contract/old.hpp [6:7]
- boost/contract/override.hpp [6:7]
- boost/contract/public_function.hpp [6:7]
- boost/contract_macro.hpp [6:7]
-
-KEEP BSL-1.0 1f86bcce1bbfb6d9a7d6c733166e7bba
-BELONGS libs/python/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/auto_link.hpp at line 4, boost/config/compiler/borland.hpp at line 6, boost/config/compiler/clang.hpp at line 5, boost/config/compiler/codegear.hpp at line 6, boost/config/compiler/common_edg.hpp at line 8, boost/config/compiler/cray.hpp at line 5, boost/config/compiler/diab.hpp at line 4, boost/config/compiler/digitalmars.hpp at line 6, boost/config/compiler/gcc.hpp at line 10, boost/config/compiler/gcc_xml.hpp at line 4, boost/config/compiler/hp_acc.hpp at line 9, boost/config/compiler/intel.hpp at line 11, boost/config/compiler/metrowerks.hpp at line 9, boost/config/compiler/mpw.hpp at line 5, boost/config/compiler/pathscale.hpp at line 5, boost/config/compiler/pgi.hpp at line 5, boost/config/compiler/sunpro_cc.hpp at line 8, boost/config/compiler/vacpp.hpp at line 8, boost/config/compiler/visualc.hpp at line 9, boost/config/compiler/xlcpp.hpp at line 5, boost/config/no_tr1/cmath.hpp at line 4, boost/config/no_tr1/complex.hpp at line 4, boost/config/no_tr1/functional.hpp at line 4, boost/config/no_tr1/memory.hpp at line 4, boost/config/no_tr1/utility.hpp at line 4, boost/config/platform/cray.hpp at line 4, boost/config/platform/haiku.hpp at line 4, boost/config/platform/vxworks.hpp at line 6, boost/config/stdlib/dinkumware.hpp at line 8, boost/config/stdlib/libcpp.hpp at line 4, boost/config/stdlib/libstdcpp3.hpp at line 5, boost/integer/common_factor_rt.hpp at line 5, boost/math/bindings/detail/big_digamma.hpp at line 4, boost/math/bindings/detail/big_lanczos.hpp at line 4, boost/math/bindings/e_float.hpp at line 4, boost/math/bindings/mpfr.hpp at line 4, boost/math/bindings/mpreal.hpp at line 4, boost/math/bindings/rr.hpp at line 4, boost/math/common_factor_rt.hpp at line 5, boost/math/complex.hpp at line 4, boost/math/complex/acosh.hpp at line 4, boost/math/complex/asinh.hpp at line 4, boost/math/complex/atan.hpp at line 4, boost/math/complex/atanh.hpp at line 4, boost/math/complex/details.hpp at line 4, boost/math/complex/fabs.hpp at line 4, boost/math/concepts/distributions.hpp at line 4, boost/math/concepts/real_concept.hpp at line 4, boost/math/concepts/real_type_concept.hpp at line 4, boost/math/concepts/std_real_concept.hpp at line 4, boost/math/constants/calculate_constants.hpp at line 6, boost/math/constants/constants.hpp at line 5, boost/math/constants/info.hpp at line 4, boost/math/distributions.hpp at line 6, boost/math/distributions/cauchy.hpp at line 6, boost/math/distributions/complement.hpp at line 5, boost/math/distributions/detail/derived_accessors.hpp at line 4, boost/math/distributions/detail/generic_quantile.hpp at line 4, boost/math/distributions/detail/inv_discrete_quantile.hpp at line 4, boost/math/distributions/exponential.hpp at line 4, boost/math/distributions/extreme_value.hpp at line 4, boost/math/distributions/find_location.hpp at line 6, boost/math/distributions/find_scale.hpp at line 6, boost/math/distributions/gamma.hpp at line 4, boost/math/distributions/hyperexponential.hpp at line 5, boost/math/distributions/inverse_gamma.hpp at line 7, boost/math/distributions/inverse_gaussian.hpp at line 6, boost/math/distributions/laplace.hpp at line 7, boost/math/distributions/lognormal.hpp at line 4, boost/math/distributions/normal.hpp at line 6, boost/math/distributions/pareto.hpp at line 5, boost/math/distributions/rayleigh.hpp at line 4, boost/math/distributions/skew_normal.hpp at line 5, boost/math/distributions/triangular.hpp at line 5, boost/math/distributions/uniform.hpp at line 5, boost/math/distributions/weibull.hpp at line 4, boost/math/policies/error_handling.hpp at line 6, boost/math/policies/policy.hpp at line 4, boost/math/quadrature/gauss.hpp at line 4, boost/math/quadrature/gauss_kronrod.hpp at line 5, boost/math/special_functions.hpp at line 6, boost/math/special_functions/bessel.hpp at line 5, boost/math/special_functions/bessel_prime.hpp at line 4, boost/math/special_functions/beta.hpp at line 4, boost/math/special_functions/binomial.hpp at line 4, boost/math/special_functions/cbrt.hpp at line 4, boost/math/special_functions/chebyshev.hpp at line 4, boost/math/special_functions/chebyshev_transform.hpp at line 4, boost/math/special_functions/cos_pi.hpp at line 4, boost/math/special_functions/detail/airy_ai_bi_zero.hpp at line 4, boost/math/special_functions/detail/bessel_derivatives_linear.hpp at line 4, boost/math/special_functions/detail/bessel_i0.hpp at line 5, boost/math/special_functions/detail/bessel_i1.hpp at line 4, boost/math/special_functions/detail/bessel_ik.hpp at line 4, boost/math/special_functions/detail/bessel_j0.hpp at line 4, boost/math/special_functions/detail/bessel_j1.hpp at line 4, boost/math/special_functions/detail/bessel_jn.hpp at line 4, boost/math/special_functions/detail/bessel_jy.hpp at line 4, boost/math/special_functions/detail/bessel_jy_asym.hpp at line 4, boost/math/special_functions/detail/bessel_jy_derivatives_asym.hpp at line 4, boost/math/special_functions/detail/bessel_jy_derivatives_series.hpp at line 4, boost/math/special_functions/detail/bessel_jy_series.hpp at line 4, boost/math/special_functions/detail/bessel_jy_zero.hpp at line 4, boost/math/special_functions/detail/bessel_k0.hpp at line 5, boost/math/special_functions/detail/bessel_k1.hpp at line 5, boost/math/special_functions/detail/bessel_kn.hpp at line 4, boost/math/special_functions/detail/bessel_y0.hpp at line 4, boost/math/special_functions/detail/bessel_y1.hpp at line 4, boost/math/special_functions/detail/bessel_yn.hpp at line 4, boost/math/special_functions/detail/erf_inv.hpp at line 4, boost/math/special_functions/detail/gamma_inva.hpp at line 4, boost/math/special_functions/detail/ibeta_inv_ab.hpp at line 4, boost/math/special_functions/detail/ibeta_inverse.hpp at line 5, boost/math/special_functions/detail/iconv.hpp at line 4, boost/math/special_functions/detail/igamma_inverse.hpp at line 4, boost/math/special_functions/detail/igamma_large.hpp at line 4, boost/math/special_functions/detail/lanczos_sse2.hpp at line 4, boost/math/special_functions/detail/lgamma_small.hpp at line 4, boost/math/special_functions/detail/t_distribution_inv.hpp at line 5, boost/math/special_functions/detail/unchecked_factorial.hpp at line 4, boost/math/special_functions/digamma.hpp at line 4, boost/math/special_functions/ellint_1.hpp at line 5, boost/math/special_functions/ellint_2.hpp at line 5, boost/math/special_functions/ellint_3.hpp at line 5, boost/math/special_functions/ellint_d.hpp at line 5, boost/math/special_functions/ellint_rc.hpp at line 4, boost/math/special_functions/ellint_rd.hpp at line 4, boost/math/special_functions/ellint_rf.hpp at line 4, boost/math/special_functions/ellint_rg.hpp at line 4, boost/math/special_functions/ellint_rj.hpp at line 4, boost/math/special_functions/erf.hpp at line 4, boost/math/special_functions/expint.hpp at line 4, boost/math/special_functions/expm1.hpp at line 4, boost/math/special_functions/factorials.hpp at line 4, boost/math/special_functions/fpclassify.hpp at line 5, boost/math/special_functions/gamma.hpp at line 9, boost/math/special_functions/hermite.hpp at line 5, boost/math/special_functions/heuman_lambda.hpp at line 4, boost/math/special_functions/hypot.hpp at line 4, boost/math/special_functions/jacobi_zeta.hpp at line 4, boost/math/special_functions/laguerre.hpp at line 5, boost/math/special_functions/lanczos.hpp at line 4, boost/math/special_functions/legendre.hpp at line 5, boost/math/special_functions/log1p.hpp at line 4, boost/math/special_functions/modf.hpp at line 4, boost/math/special_functions/owens_t.hpp at line 5, boost/math/special_functions/powm1.hpp at line 4, boost/math/special_functions/relative_difference.hpp at line 4, boost/math/special_functions/round.hpp at line 4, boost/math/special_functions/sign.hpp at line 7, boost/math/special_functions/sin_pi.hpp at line 4, boost/math/special_functions/spherical_harmonic.hpp at line 5, boost/math/special_functions/sqrt1pm1.hpp at line 4, boost/math/special_functions/trigamma.hpp at line 4, boost/math/special_functions/trunc.hpp at line 4, boost/math/special_functions/ulp.hpp at line 4, boost/math/tools/config.hpp at line 4, boost/math/tools/convert_from_string.hpp at line 4, boost/math/tools/detail/polynomial_horner1_10.hpp at line 4, boost/math/tools/detail/polynomial_horner1_11.hpp at line 4, boost/math/tools/detail/polynomial_horner1_12.hpp at line 4, boost/math/tools/detail/polynomial_horner1_13.hpp at line 4, boost/math/tools/detail/polynomial_horner1_14.hpp at line 4, boost/math/tools/detail/polynomial_horner1_15.hpp at line 4, boost/math/tools/detail/polynomial_horner1_16.hpp at line 4, boost/math/tools/detail/polynomial_horner1_17.hpp at line 4, boost/math/tools/detail/polynomial_horner1_18.hpp at line 4, boost/math/tools/detail/polynomial_horner1_19.hpp at line 4, boost/math/tools/detail/polynomial_horner1_2.hpp at line 4, boost/math/tools/detail/polynomial_horner1_20.hpp at line 4, boost/math/tools/detail/polynomial_horner1_3.hpp at line 4, boost/math/tools/detail/polynomial_horner1_4.hpp at line 4, boost/math/tools/detail/polynomial_horner1_5.hpp at line 4, boost/math/tools/detail/polynomial_horner1_6.hpp at line 4, boost/math/tools/detail/polynomial_horner1_7.hpp at line 4, boost/math/tools/detail/polynomial_horner1_8.hpp at line 4, boost/math/tools/detail/polynomial_horner1_9.hpp at line 4, boost/math/tools/detail/polynomial_horner2_10.hpp at line 4, boost/math/tools/detail/polynomial_horner2_11.hpp at line 4, boost/math/tools/detail/polynomial_horner2_12.hpp at line 4, boost/math/tools/detail/polynomial_horner2_13.hpp at line 4, boost/math/tools/detail/polynomial_horner2_14.hpp at line 4, boost/math/tools/detail/polynomial_horner2_15.hpp at line 4, boost/math/tools/detail/polynomial_horner2_16.hpp at line 4, boost/math/tools/detail/polynomial_horner2_17.hpp at line 4, boost/math/tools/detail/polynomial_horner2_18.hpp at line 4, boost/math/tools/detail/polynomial_horner2_19.hpp at line 4, boost/math/tools/detail/polynomial_horner2_2.hpp at line 4, boost/math/tools/detail/polynomial_horner2_3.hpp at line 4, boost/math/tools/detail/polynomial_horner2_4.hpp at line 4, boost/math/tools/detail/polynomial_horner2_5.hpp at line 4, boost/math/tools/detail/polynomial_horner2_6.hpp at line 4, boost/math/tools/detail/polynomial_horner2_7.hpp at line 4, boost/math/tools/detail/polynomial_horner2_8.hpp at line 4, boost/math/tools/detail/polynomial_horner2_9.hpp at line 4, boost/math/tools/detail/polynomial_horner3_10.hpp at line 4, boost/math/tools/detail/polynomial_horner3_11.hpp at line 4, boost/math/tools/detail/polynomial_horner3_12.hpp at line 4, boost/math/tools/detail/polynomial_horner3_13.hpp at line 4, boost/math/tools/detail/polynomial_horner3_14.hpp at line 4, boost/math/tools/detail/polynomial_horner3_15.hpp at line 4, boost/math/tools/detail/polynomial_horner3_16.hpp at line 4, boost/math/tools/detail/polynomial_horner3_17.hpp at line 4, boost/math/tools/detail/polynomial_horner3_18.hpp at line 4, boost/math/tools/detail/polynomial_horner3_19.hpp at line 4, boost/math/tools/detail/polynomial_horner3_2.hpp at line 4, boost/math/tools/detail/polynomial_horner3_20.hpp at line 4, boost/math/tools/detail/polynomial_horner3_3.hpp at line 4, boost/math/tools/detail/polynomial_horner3_4.hpp at line 4, boost/math/tools/detail/polynomial_horner3_5.hpp at line 4, boost/math/tools/detail/polynomial_horner3_6.hpp at line 4, boost/math/tools/detail/polynomial_horner3_7.hpp at line 4, boost/math/tools/detail/polynomial_horner3_8.hpp at line 4, boost/math/tools/detail/polynomial_horner3_9.hpp at line 4, boost/math/tools/detail/rational_horner1_10.hpp at line 4, boost/math/tools/detail/rational_horner1_2.hpp at line 4, boost/math/tools/detail/rational_horner1_3.hpp at line 4, boost/math/tools/detail/rational_horner1_4.hpp at line 4, boost/math/tools/detail/rational_horner1_5.hpp at line 4, boost/math/tools/detail/rational_horner1_6.hpp at line 4, boost/math/tools/detail/rational_horner1_7.hpp at line 4, boost/math/tools/detail/rational_horner1_8.hpp at line 4, boost/math/tools/detail/rational_horner1_9.hpp at line 4, boost/math/tools/detail/rational_horner2_10.hpp at line 4, boost/math/tools/detail/rational_horner2_2.hpp at line 4, boost/math/tools/detail/rational_horner2_3.hpp at line 4, boost/math/tools/detail/rational_horner2_4.hpp at line 4, boost/math/tools/detail/rational_horner2_5.hpp at line 4, boost/math/tools/detail/rational_horner2_6.hpp at line 4, boost/math/tools/detail/rational_horner2_7.hpp at line 4, boost/math/tools/detail/rational_horner2_8.hpp at line 4, boost/math/tools/detail/rational_horner2_9.hpp at line 4, boost/math/tools/detail/rational_horner3_10.hpp at line 4, boost/math/tools/detail/rational_horner3_11.hpp at line 4, boost/math/tools/detail/rational_horner3_12.hpp at line 4, boost/math/tools/detail/rational_horner3_13.hpp at line 4, boost/math/tools/detail/rational_horner3_14.hpp at line 4, boost/math/tools/detail/rational_horner3_15.hpp at line 4, boost/math/tools/detail/rational_horner3_16.hpp at line 4, boost/math/tools/detail/rational_horner3_17.hpp at line 4, boost/math/tools/detail/rational_horner3_18.hpp at line 4, boost/math/tools/detail/rational_horner3_19.hpp at line 4, boost/math/tools/detail/rational_horner3_2.hpp at line 4, boost/math/tools/detail/rational_horner3_20.hpp at line 4, boost/math/tools/detail/rational_horner3_3.hpp at line 4, boost/math/tools/detail/rational_horner3_4.hpp at line 4, boost/math/tools/detail/rational_horner3_5.hpp at line 4, boost/math/tools/detail/rational_horner3_6.hpp at line 4, boost/math/tools/detail/rational_horner3_7.hpp at line 4, boost/math/tools/detail/rational_horner3_8.hpp at line 4, boost/math/tools/detail/rational_horner3_9.hpp at line 4, boost/math/tools/fraction.hpp at line 4, boost/math/tools/minima.hpp at line 4, boost/math/tools/numerical_differentiation.hpp at line 4, boost/math/tools/polynomial.hpp at line 7, boost/math/tools/polynomial_gcd.hpp at line 5, boost/math/tools/precision.hpp at line 4, boost/math/tools/rational.hpp at line 4, boost/math/tools/real_cast.hpp at line 4, boost/math/tools/roots.hpp at line 4, boost/math/tools/series.hpp at line 4, boost/math/tools/stats.hpp at line 4, boost/math/tools/toms748_solve.hpp at line 4, boost/math/tools/traits.hpp at line 5, boost/math/tools/tuple.hpp at line 4, boost/math/tools/workaround.hpp at line 4, boost/multiprecision/detail/big_lanczos.hpp at line 5, boost/variant/detail/move.hpp at line 12, libs/python/src/slice.cpp at line 6
- License text:
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/config/auto_link.hpp [2:4]
- boost/config/compiler/borland.hpp [4:6]
- boost/config/compiler/clang.hpp [3:5]
- boost/config/compiler/codegear.hpp [4:6]
- boost/config/compiler/common_edg.hpp [6:8]
- boost/config/compiler/cray.hpp [3:5]
- boost/config/compiler/diab.hpp [2:4]
- boost/config/compiler/digitalmars.hpp [4:6]
- boost/config/compiler/gcc.hpp [8:10]
- boost/config/compiler/gcc_xml.hpp [2:4]
- boost/config/compiler/hp_acc.hpp [7:9]
- boost/config/compiler/intel.hpp [9:11]
- boost/config/compiler/metrowerks.hpp [7:9]
- boost/config/compiler/mpw.hpp [3:5]
- boost/config/compiler/pathscale.hpp [3:5]
- boost/config/compiler/pgi.hpp [3:5]
- boost/config/compiler/sunpro_cc.hpp [6:8]
- boost/config/compiler/vacpp.hpp [6:8]
- boost/config/compiler/visualc.hpp [7:9]
- boost/config/compiler/xlcpp.hpp [3:5]
- boost/config/no_tr1/cmath.hpp [2:4]
- boost/config/no_tr1/complex.hpp [2:4]
- boost/config/no_tr1/functional.hpp [2:4]
- boost/config/no_tr1/memory.hpp [2:4]
- boost/config/no_tr1/utility.hpp [2:4]
- boost/config/platform/cray.hpp [2:4]
- boost/config/platform/haiku.hpp [2:4]
- boost/config/platform/vxworks.hpp [4:6]
- boost/config/stdlib/dinkumware.hpp [6:8]
- boost/config/stdlib/libcpp.hpp [2:4]
- boost/config/stdlib/libstdcpp3.hpp [3:5]
- boost/integer/common_factor_rt.hpp [3:5]
- boost/math/bindings/detail/big_digamma.hpp [2:4]
- boost/math/bindings/detail/big_lanczos.hpp [2:4]
- boost/math/bindings/e_float.hpp [2:4]
- boost/math/bindings/mpfr.hpp [2:4]
- boost/math/bindings/mpreal.hpp [2:4]
- boost/math/bindings/rr.hpp [2:4]
- boost/math/common_factor_rt.hpp [3:5]
- boost/math/complex.hpp [2:4]
- boost/math/complex/acosh.hpp [2:4]
- boost/math/complex/asinh.hpp [2:4]
- boost/math/complex/atan.hpp [2:4]
- boost/math/complex/atanh.hpp [2:4]
- boost/math/complex/details.hpp [2:4]
- boost/math/complex/fabs.hpp [2:4]
- boost/math/concepts/distributions.hpp [2:4]
- boost/math/concepts/real_concept.hpp [2:4]
- boost/math/concepts/real_type_concept.hpp [2:4]
- boost/math/concepts/std_real_concept.hpp [2:4]
- boost/math/constants/calculate_constants.hpp [4:6]
- boost/math/constants/constants.hpp [3:5]
- boost/math/constants/info.hpp [2:4]
- boost/math/distributions.hpp [4:6]
- boost/math/distributions/cauchy.hpp [4:6]
- boost/math/distributions/complement.hpp [3:5]
- boost/math/distributions/detail/derived_accessors.hpp [2:4]
- boost/math/distributions/detail/generic_quantile.hpp [2:4]
- boost/math/distributions/detail/inv_discrete_quantile.hpp [2:4]
- boost/math/distributions/exponential.hpp [2:4]
- boost/math/distributions/extreme_value.hpp [2:4]
- boost/math/distributions/find_location.hpp [4:6]
- boost/math/distributions/find_scale.hpp [4:6]
- boost/math/distributions/gamma.hpp [2:4]
- boost/math/distributions/hyperexponential.hpp [3:5]
- boost/math/distributions/inverse_gamma.hpp [5:7]
- boost/math/distributions/inverse_gaussian.hpp [4:6]
- boost/math/distributions/laplace.hpp [5:7]
- boost/math/distributions/lognormal.hpp [2:4]
- boost/math/distributions/normal.hpp [4:6]
- boost/math/distributions/pareto.hpp [3:5]
- boost/math/distributions/rayleigh.hpp [2:4]
- boost/math/distributions/skew_normal.hpp [3:5]
- boost/math/distributions/triangular.hpp [3:5]
- boost/math/distributions/uniform.hpp [3:5]
- boost/math/distributions/weibull.hpp [2:4]
- boost/math/policies/error_handling.hpp [4:6]
- boost/math/policies/policy.hpp [2:4]
- boost/math/quadrature/gauss.hpp [2:4]
- boost/math/quadrature/gauss_kronrod.hpp [3:5]
- boost/math/special_functions.hpp [4:6]
- boost/math/special_functions/bessel.hpp [3:5]
- boost/math/special_functions/bessel_prime.hpp [2:4]
- boost/math/special_functions/beta.hpp [2:4]
- boost/math/special_functions/binomial.hpp [2:4]
- boost/math/special_functions/cbrt.hpp [2:4]
- boost/math/special_functions/chebyshev.hpp [2:4]
- boost/math/special_functions/chebyshev_transform.hpp [2:4]
- boost/math/special_functions/cos_pi.hpp [2:4]
- boost/math/special_functions/detail/airy_ai_bi_zero.hpp [2:4]
- boost/math/special_functions/detail/bessel_derivatives_linear.hpp [2:4]
- boost/math/special_functions/detail/bessel_i0.hpp [3:5]
- boost/math/special_functions/detail/bessel_i1.hpp [2:4]
- boost/math/special_functions/detail/bessel_ik.hpp [2:4]
- boost/math/special_functions/detail/bessel_j0.hpp [2:4]
- boost/math/special_functions/detail/bessel_j1.hpp [2:4]
- boost/math/special_functions/detail/bessel_jn.hpp [2:4]
- boost/math/special_functions/detail/bessel_jy.hpp [2:4]
- boost/math/special_functions/detail/bessel_jy_asym.hpp [2:4]
- boost/math/special_functions/detail/bessel_jy_derivatives_asym.hpp [2:4]
- boost/math/special_functions/detail/bessel_jy_derivatives_series.hpp [2:4]
- boost/math/special_functions/detail/bessel_jy_series.hpp [2:4]
- boost/math/special_functions/detail/bessel_jy_zero.hpp [2:4]
- boost/math/special_functions/detail/bessel_k0.hpp [3:5]
- boost/math/special_functions/detail/bessel_k1.hpp [3:5]
- boost/math/special_functions/detail/bessel_kn.hpp [2:4]
- boost/math/special_functions/detail/bessel_y0.hpp [2:4]
- boost/math/special_functions/detail/bessel_y1.hpp [2:4]
- boost/math/special_functions/detail/bessel_yn.hpp [2:4]
- boost/math/special_functions/detail/erf_inv.hpp [2:4]
- boost/math/special_functions/detail/gamma_inva.hpp [2:4]
- boost/math/special_functions/detail/ibeta_inv_ab.hpp [2:4]
- boost/math/special_functions/detail/ibeta_inverse.hpp [3:5]
- boost/math/special_functions/detail/iconv.hpp [2:4]
- boost/math/special_functions/detail/igamma_inverse.hpp [2:4]
- boost/math/special_functions/detail/igamma_large.hpp [2:4]
- boost/math/special_functions/detail/lanczos_sse2.hpp [2:4]
- boost/math/special_functions/detail/lgamma_small.hpp [2:4]
- boost/math/special_functions/detail/t_distribution_inv.hpp [3:5]
- boost/math/special_functions/detail/unchecked_factorial.hpp [2:4]
- boost/math/special_functions/digamma.hpp [2:4]
- boost/math/special_functions/ellint_1.hpp [3:5]
- boost/math/special_functions/ellint_2.hpp [3:5]
- boost/math/special_functions/ellint_3.hpp [3:5]
- boost/math/special_functions/ellint_d.hpp [3:5]
- boost/math/special_functions/ellint_rc.hpp [2:4]
- boost/math/special_functions/ellint_rd.hpp [2:4]
- boost/math/special_functions/ellint_rf.hpp [2:4]
- boost/math/special_functions/ellint_rg.hpp [2:4]
- boost/math/special_functions/ellint_rj.hpp [2:4]
- boost/math/special_functions/erf.hpp [2:4]
- boost/math/special_functions/expint.hpp [2:4]
- boost/math/special_functions/expm1.hpp [2:4]
- boost/math/special_functions/factorials.hpp [2:4]
- boost/math/special_functions/fpclassify.hpp [3:5]
- boost/math/special_functions/gamma.hpp [7:9]
- boost/math/special_functions/hermite.hpp [3:5]
- boost/math/special_functions/heuman_lambda.hpp [2:4]
- boost/math/special_functions/hypot.hpp [2:4]
- boost/math/special_functions/jacobi_zeta.hpp [2:4]
- boost/math/special_functions/laguerre.hpp [3:5]
- boost/math/special_functions/lanczos.hpp [2:4]
- boost/math/special_functions/legendre.hpp [3:5]
- boost/math/special_functions/log1p.hpp [2:4]
- boost/math/special_functions/modf.hpp [2:4]
- boost/math/special_functions/owens_t.hpp [3:5]
- boost/math/special_functions/powm1.hpp [2:4]
- boost/math/special_functions/relative_difference.hpp [2:4]
- boost/math/special_functions/round.hpp [2:4]
- boost/math/special_functions/sign.hpp [5:7]
- boost/math/special_functions/sin_pi.hpp [2:4]
- boost/math/special_functions/spherical_harmonic.hpp [3:5]
- boost/math/special_functions/sqrt1pm1.hpp [2:4]
- boost/math/special_functions/trigamma.hpp [2:4]
- boost/math/special_functions/trunc.hpp [2:4]
- boost/math/special_functions/ulp.hpp [2:4]
- boost/math/tools/config.hpp [2:4]
- boost/math/tools/convert_from_string.hpp [2:4]
- boost/math/tools/detail/polynomial_horner1_10.hpp [2:4]
- boost/math/tools/detail/polynomial_horner1_11.hpp [2:4]
- boost/math/tools/detail/polynomial_horner1_12.hpp [2:4]
- boost/math/tools/detail/polynomial_horner1_13.hpp [2:4]
- boost/math/tools/detail/polynomial_horner1_14.hpp [2:4]
- boost/math/tools/detail/polynomial_horner1_15.hpp [2:4]
- boost/math/tools/detail/polynomial_horner1_16.hpp [2:4]
- boost/math/tools/detail/polynomial_horner1_17.hpp [2:4]
- boost/math/tools/detail/polynomial_horner1_18.hpp [2:4]
- boost/math/tools/detail/polynomial_horner1_19.hpp [2:4]
- boost/math/tools/detail/polynomial_horner1_2.hpp [2:4]
- boost/math/tools/detail/polynomial_horner1_20.hpp [2:4]
- boost/math/tools/detail/polynomial_horner1_3.hpp [2:4]
- boost/math/tools/detail/polynomial_horner1_4.hpp [2:4]
- boost/math/tools/detail/polynomial_horner1_5.hpp [2:4]
- boost/math/tools/detail/polynomial_horner1_6.hpp [2:4]
- boost/math/tools/detail/polynomial_horner1_7.hpp [2:4]
- boost/math/tools/detail/polynomial_horner1_8.hpp [2:4]
- boost/math/tools/detail/polynomial_horner1_9.hpp [2:4]
- boost/math/tools/detail/polynomial_horner2_10.hpp [2:4]
- boost/math/tools/detail/polynomial_horner2_11.hpp [2:4]
- boost/math/tools/detail/polynomial_horner2_12.hpp [2:4]
- boost/math/tools/detail/polynomial_horner2_13.hpp [2:4]
- boost/math/tools/detail/polynomial_horner2_14.hpp [2:4]
- boost/math/tools/detail/polynomial_horner2_15.hpp [2:4]
- boost/math/tools/detail/polynomial_horner2_16.hpp [2:4]
- boost/math/tools/detail/polynomial_horner2_17.hpp [2:4]
- boost/math/tools/detail/polynomial_horner2_18.hpp [2:4]
- boost/math/tools/detail/polynomial_horner2_19.hpp [2:4]
- boost/math/tools/detail/polynomial_horner2_2.hpp [2:4]
- boost/math/tools/detail/polynomial_horner2_3.hpp [2:4]
- boost/math/tools/detail/polynomial_horner2_4.hpp [2:4]
- boost/math/tools/detail/polynomial_horner2_5.hpp [2:4]
- boost/math/tools/detail/polynomial_horner2_6.hpp [2:4]
- boost/math/tools/detail/polynomial_horner2_7.hpp [2:4]
- boost/math/tools/detail/polynomial_horner2_8.hpp [2:4]
- boost/math/tools/detail/polynomial_horner2_9.hpp [2:4]
- boost/math/tools/detail/polynomial_horner3_10.hpp [2:4]
- boost/math/tools/detail/polynomial_horner3_11.hpp [2:4]
- boost/math/tools/detail/polynomial_horner3_12.hpp [2:4]
- boost/math/tools/detail/polynomial_horner3_13.hpp [2:4]
- boost/math/tools/detail/polynomial_horner3_14.hpp [2:4]
- boost/math/tools/detail/polynomial_horner3_15.hpp [2:4]
- boost/math/tools/detail/polynomial_horner3_16.hpp [2:4]
- boost/math/tools/detail/polynomial_horner3_17.hpp [2:4]
- boost/math/tools/detail/polynomial_horner3_18.hpp [2:4]
- boost/math/tools/detail/polynomial_horner3_19.hpp [2:4]
- boost/math/tools/detail/polynomial_horner3_2.hpp [2:4]
- boost/math/tools/detail/polynomial_horner3_20.hpp [2:4]
- boost/math/tools/detail/polynomial_horner3_3.hpp [2:4]
- boost/math/tools/detail/polynomial_horner3_4.hpp [2:4]
- boost/math/tools/detail/polynomial_horner3_5.hpp [2:4]
- boost/math/tools/detail/polynomial_horner3_6.hpp [2:4]
- boost/math/tools/detail/polynomial_horner3_7.hpp [2:4]
- boost/math/tools/detail/polynomial_horner3_8.hpp [2:4]
- boost/math/tools/detail/polynomial_horner3_9.hpp [2:4]
- boost/math/tools/detail/rational_horner1_10.hpp [2:4]
- boost/math/tools/detail/rational_horner1_2.hpp [2:4]
- boost/math/tools/detail/rational_horner1_3.hpp [2:4]
- boost/math/tools/detail/rational_horner1_4.hpp [2:4]
- boost/math/tools/detail/rational_horner1_5.hpp [2:4]
- boost/math/tools/detail/rational_horner1_6.hpp [2:4]
- boost/math/tools/detail/rational_horner1_7.hpp [2:4]
- boost/math/tools/detail/rational_horner1_8.hpp [2:4]
- boost/math/tools/detail/rational_horner1_9.hpp [2:4]
- boost/math/tools/detail/rational_horner2_10.hpp [2:4]
- boost/math/tools/detail/rational_horner2_2.hpp [2:4]
- boost/math/tools/detail/rational_horner2_3.hpp [2:4]
- boost/math/tools/detail/rational_horner2_4.hpp [2:4]
- boost/math/tools/detail/rational_horner2_5.hpp [2:4]
- boost/math/tools/detail/rational_horner2_6.hpp [2:4]
- boost/math/tools/detail/rational_horner2_7.hpp [2:4]
- boost/math/tools/detail/rational_horner2_8.hpp [2:4]
- boost/math/tools/detail/rational_horner2_9.hpp [2:4]
- boost/math/tools/detail/rational_horner3_10.hpp [2:4]
- boost/math/tools/detail/rational_horner3_11.hpp [2:4]
- boost/math/tools/detail/rational_horner3_12.hpp [2:4]
- boost/math/tools/detail/rational_horner3_13.hpp [2:4]
- boost/math/tools/detail/rational_horner3_14.hpp [2:4]
- boost/math/tools/detail/rational_horner3_15.hpp [2:4]
- boost/math/tools/detail/rational_horner3_16.hpp [2:4]
- boost/math/tools/detail/rational_horner3_17.hpp [2:4]
- boost/math/tools/detail/rational_horner3_18.hpp [2:4]
- boost/math/tools/detail/rational_horner3_19.hpp [2:4]
- boost/math/tools/detail/rational_horner3_2.hpp [2:4]
- boost/math/tools/detail/rational_horner3_20.hpp [2:4]
- boost/math/tools/detail/rational_horner3_3.hpp [2:4]
- boost/math/tools/detail/rational_horner3_4.hpp [2:4]
- boost/math/tools/detail/rational_horner3_5.hpp [2:4]
- boost/math/tools/detail/rational_horner3_6.hpp [2:4]
- boost/math/tools/detail/rational_horner3_7.hpp [2:4]
- boost/math/tools/detail/rational_horner3_8.hpp [2:4]
- boost/math/tools/detail/rational_horner3_9.hpp [2:4]
- boost/math/tools/fraction.hpp [2:4]
- boost/math/tools/minima.hpp [2:4]
- boost/math/tools/numerical_differentiation.hpp [2:4]
- boost/math/tools/polynomial.hpp [5:7]
- boost/math/tools/polynomial_gcd.hpp [3:5]
- boost/math/tools/precision.hpp [2:4]
- boost/math/tools/rational.hpp [2:4]
- boost/math/tools/real_cast.hpp [2:4]
- boost/math/tools/roots.hpp [2:4]
- boost/math/tools/series.hpp [2:4]
- boost/math/tools/stats.hpp [2:4]
- boost/math/tools/toms748_solve.hpp [2:4]
- boost/math/tools/traits.hpp [3:5]
- boost/math/tools/tuple.hpp [2:4]
- boost/math/tools/workaround.hpp [2:4]
- boost/multiprecision/detail/big_lanczos.hpp [3:5]
- boost/variant/detail/move.hpp [10:12]
- libs/python/src/slice.cpp [4:6]
-
-KEEP BSL-1.0 1fd942b1f6641317251c68ee4193c5d0
-BELONGS ya.make
- License text:
- // boostinspect:nolicense (don't complain about the lack of a Boost license)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 99.00
- Match type : REFERENCE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/python/detail/python22_fixed.h [7:7]
- boost/rational.hpp [8:8]
-
-KEEP Public-Domain 21577f2cb1203d157fe2eb4bb8089091
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: LicenseRef-scancode-public-domain
- Score : 93.14
- Match type : NOTICE
- Links : http://www.linfo.org/publicdomain.html, https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/public-domain.LICENSE
- Files with this license:
- boost/uuid/detail/md5.hpp [3:22]
- Scancode info:
- Original SPDX id: LicenseRef-scancode-other-permissive
- Score : 93.14
- Match type : NOTICE
- Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/other-permissive.LICENSE
- Files with this license:
- boost/uuid/detail/md5.hpp [3:22]
-
-KEEP BSL-1.0 23fa5e94f51ba7a8e51ff1feb5b64098
-BELONGS libs/date_time/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/date_time.hpp at line 7, boost/date_time/c_local_time_adjustor.hpp at line 7, boost/date_time/constrained_value.hpp at line 7, boost/date_time/date_clock_device.hpp at line 7, boost/date_time/date_defs.hpp at line 7, boost/date_time/date_format_simple.hpp at line 7, boost/date_time/date_formatting.hpp at line 7, boost/date_time/date_formatting_limited.hpp at line 7, boost/date_time/date_generator_formatter.hpp at line 7, boost/date_time/date_generator_parser.hpp at line 8, boost/date_time/dst_rules.hpp at line 7, boost/date_time/dst_transition_generators.hpp at line 4, boost/date_time/format_date_parser.hpp at line 8, boost/date_time/gregorian/formatters.hpp at line 7, boost/date_time/gregorian/formatters_limited.hpp at line 7, boost/date_time/gregorian/greg_day.hpp at line 7, boost/date_time/gregorian/greg_day_of_year.hpp at line 7, boost/date_time/gregorian/greg_duration.hpp at line 7, boost/date_time/gregorian/greg_facet.hpp at line 7, boost/date_time/gregorian/greg_month.hpp at line 7, boost/date_time/gregorian/greg_serialize.hpp at line 7, boost/date_time/gregorian/greg_weekday.hpp at line 7, boost/date_time/gregorian/greg_year.hpp at line 7, boost/date_time/gregorian/greg_ymd.hpp at line 7, boost/date_time/gregorian/gregorian.hpp at line 7, boost/date_time/gregorian/gregorian_types.hpp at line 7, boost/date_time/gregorian/parsers.hpp at line 7, boost/date_time/int_adapter.hpp at line 7, boost/date_time/iso_format.hpp at line 7, boost/date_time/local_time_adjustor.hpp at line 7, boost/date_time/local_timezone_defs.hpp at line 7, boost/date_time/parse_format_base.hpp at line 7, boost/date_time/period.hpp at line 7, boost/date_time/period_formatter.hpp at line 8, boost/date_time/period_parser.hpp at line 8, boost/date_time/posix_time/posix_time.hpp at line 7, boost/date_time/posix_time/posix_time_duration.hpp at line 7, boost/date_time/posix_time/posix_time_legacy_io.hpp at line 7, boost/date_time/posix_time/posix_time_system.hpp at line 7, boost/date_time/posix_time/posix_time_types.hpp at line 4, boost/date_time/posix_time/ptime.hpp at line 7, boost/date_time/posix_time/time_parsers.hpp at line 7, boost/date_time/posix_time/time_period.hpp at line 7, boost/date_time/posix_time/time_serialize.hpp at line 7, boost/date_time/special_defs.hpp at line 7, boost/date_time/special_values_formatter.hpp at line 8, boost/date_time/special_values_parser.hpp at line 8, boost/date_time/time.hpp at line 7, boost/date_time/time_defs.hpp at line 7, boost/date_time/time_formatting_streams.hpp at line 7, boost/date_time/time_parsing.hpp at line 7, boost/date_time/time_system_counted.hpp at line 7, boost/date_time/time_system_split.hpp at line 7, boost/date_time/time_zone_names.hpp at line 7, boost/date_time/year_month_day.hpp at line 7, libs/date_time/src/gregorian/date_generators.cpp at line 4, libs/date_time/src/gregorian/greg_month.cpp at line 4, libs/date_time/src/gregorian/greg_names.hpp at line 4, libs/date_time/src/gregorian/greg_weekday.cpp at line 4, libs/date_time/src/gregorian/gregorian_types.cpp at line 4, libs/date_time/src/posix_time/posix_time_types.cpp at line 5
- License text:
- * Use, modification and distribution is subject to the
- * Boost Software License, Version 1.0. (See accompanying
- * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 90.62
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/date_time.hpp [5:7]
- boost/date_time/c_local_time_adjustor.hpp [5:7]
- boost/date_time/constrained_value.hpp [5:7]
- boost/date_time/date_clock_device.hpp [5:7]
- boost/date_time/date_defs.hpp [5:7]
- boost/date_time/date_format_simple.hpp [5:7]
- boost/date_time/date_formatting.hpp [5:7]
- boost/date_time/date_formatting_limited.hpp [5:7]
- boost/date_time/date_generator_formatter.hpp [5:7]
- boost/date_time/date_generator_parser.hpp [6:8]
- boost/date_time/dst_rules.hpp [5:7]
- boost/date_time/dst_transition_generators.hpp [2:4]
- boost/date_time/format_date_parser.hpp [6:8]
- boost/date_time/gregorian/formatters.hpp [5:7]
- boost/date_time/gregorian/formatters_limited.hpp [5:7]
- boost/date_time/gregorian/greg_day.hpp [5:7]
- boost/date_time/gregorian/greg_day_of_year.hpp [5:7]
- boost/date_time/gregorian/greg_duration.hpp [5:7]
- boost/date_time/gregorian/greg_facet.hpp [5:7]
- boost/date_time/gregorian/greg_month.hpp [5:7]
- boost/date_time/gregorian/greg_serialize.hpp [5:7]
- boost/date_time/gregorian/greg_weekday.hpp [5:7]
- boost/date_time/gregorian/greg_year.hpp [5:7]
- boost/date_time/gregorian/greg_ymd.hpp [5:7]
- boost/date_time/gregorian/gregorian.hpp [5:7]
- boost/date_time/gregorian/gregorian_types.hpp [5:7]
- boost/date_time/gregorian/parsers.hpp [5:7]
- boost/date_time/int_adapter.hpp [5:7]
- boost/date_time/iso_format.hpp [5:7]
- boost/date_time/local_time_adjustor.hpp [5:7]
- boost/date_time/local_timezone_defs.hpp [5:7]
- boost/date_time/parse_format_base.hpp [5:7]
- boost/date_time/period.hpp [5:7]
- boost/date_time/period_formatter.hpp [6:8]
- boost/date_time/period_parser.hpp [6:8]
- boost/date_time/posix_time/posix_time.hpp [5:7]
- boost/date_time/posix_time/posix_time_duration.hpp [5:7]
- boost/date_time/posix_time/posix_time_legacy_io.hpp [5:7]
- boost/date_time/posix_time/posix_time_system.hpp [5:7]
- boost/date_time/posix_time/posix_time_types.hpp [2:4]
- boost/date_time/posix_time/ptime.hpp [5:7]
- boost/date_time/posix_time/time_parsers.hpp [5:7]
- boost/date_time/posix_time/time_period.hpp [5:7]
- boost/date_time/posix_time/time_serialize.hpp [5:7]
- boost/date_time/special_defs.hpp [5:7]
- boost/date_time/special_values_formatter.hpp [6:8]
- boost/date_time/special_values_parser.hpp [6:8]
- boost/date_time/time.hpp [5:7]
- boost/date_time/time_defs.hpp [5:7]
- boost/date_time/time_formatting_streams.hpp [5:7]
- boost/date_time/time_parsing.hpp [5:7]
- boost/date_time/time_system_counted.hpp [5:7]
- boost/date_time/time_system_split.hpp [5:7]
- boost/date_time/time_zone_names.hpp [5:7]
- boost/date_time/year_month_day.hpp [5:7]
- libs/date_time/src/gregorian/date_generators.cpp [2:4]
- libs/date_time/src/gregorian/greg_month.cpp [2:4]
- libs/date_time/src/gregorian/greg_names.hpp [2:4]
- libs/date_time/src/gregorian/greg_weekday.cpp [2:4]
- libs/date_time/src/gregorian/gregorian_types.cpp [2:4]
- libs/date_time/src/posix_time/posix_time_types.cpp [3:5]
-
-KEEP BSL-1.0 243b3372a909401f618724a7b3f24df1
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/format.hpp at line 7, boost/format/alt_sstream.hpp at line 7, boost/format/alt_sstream_impl.hpp at line 7, boost/format/detail/compat_workarounds.hpp at line 7, boost/format/detail/config_macros.hpp at line 10, boost/format/detail/msvc_disambiguater.hpp at line 8, boost/format/detail/unset_macros.hpp at line 7, boost/format/detail/workarounds_gcc-2_95.hpp at line 7, boost/format/detail/workarounds_stlport.hpp at line 7, boost/format/feed_args.hpp at line 8, boost/format/format_class.hpp at line 7, boost/format/format_fwd.hpp at line 7, boost/format/format_implementation.hpp at line 7, boost/format/free_funcs.hpp at line 7, boost/format/group.hpp at line 8, boost/format/internals.hpp at line 8, boost/format/internals_fwd.hpp at line 7, boost/format/parsing.hpp at line 8
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/format.hpp [5:7]
- boost/format/alt_sstream.hpp [5:7]
- boost/format/alt_sstream_impl.hpp [5:7]
- boost/format/detail/compat_workarounds.hpp [5:7]
- boost/format/detail/config_macros.hpp [8:10]
- boost/format/detail/msvc_disambiguater.hpp [6:8]
- boost/format/detail/unset_macros.hpp [5:7]
- boost/format/detail/workarounds_gcc-2_95.hpp [5:7]
- boost/format/detail/workarounds_stlport.hpp [5:7]
- boost/format/feed_args.hpp [6:8]
- boost/format/format_class.hpp [5:7]
- boost/format/format_fwd.hpp [5:7]
- boost/format/format_implementation.hpp [5:7]
- boost/format/free_funcs.hpp [5:7]
- boost/format/group.hpp [6:8]
- boost/format/internals.hpp [6:8]
- boost/format/internals_fwd.hpp [5:7]
- boost/format/parsing.hpp [6:8]
-
-KEEP BSL-1.0 25b833610087bb7e6f661eb119acc062
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/allocator_traits.hpp at line 11, boost/container/scoped_allocator.hpp at line 11, boost/container/uses_allocator.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2011-2013. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/container/allocator_traits.hpp [9:11]
- boost/container/scoped_allocator.hpp [9:11]
- boost/container/uses_allocator.hpp [3:5]
-
-KEEP BSL-1.0 25da87a37081f3d8c9d00550e1eebd63
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/parameter/aux_/preprocessor/flatten.hpp at line 3, boost/parameter/aux_/preprocessor/for_each.hpp at line 3, boost/parameter/aux_/python/invoker.hpp at line 3, boost/parameter/aux_/python/invoker_iterate.hpp at line 3
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/parameter/aux_/preprocessor/flatten.hpp [1:3]
- boost/parameter/aux_/preprocessor/for_each.hpp [1:3]
- boost/parameter/aux_/python/invoker.hpp [1:3]
- boost/parameter/aux_/python/invoker_iterate.hpp [1:3]
-
-KEEP BSL-1.0 267bc4e38676657a4d90f57e3323ff7c
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/math/distributions/students_t.hpp at line 7, boost/math/special_functions/next.hpp at line 4, boost/math/special_functions/zeta.hpp at line 4, boost/math/tools/big_constant.hpp at line 5, boost/math/tools/detail/polynomial_horner2_20.hpp at line 4, boost/math/tools/detail/rational_horner1_11.hpp at line 4, boost/math/tools/detail/rational_horner1_12.hpp at line 4, boost/math/tools/detail/rational_horner1_13.hpp at line 4, boost/math/tools/detail/rational_horner1_14.hpp at line 4, boost/math/tools/detail/rational_horner1_15.hpp at line 4, boost/math/tools/detail/rational_horner1_16.hpp at line 4, boost/math/tools/detail/rational_horner1_17.hpp at line 4, boost/math/tools/detail/rational_horner1_18.hpp at line 4, boost/math/tools/detail/rational_horner1_19.hpp at line 4, boost/math/tools/detail/rational_horner1_20.hpp at line 4, boost/math/tools/detail/rational_horner2_11.hpp at line 4, boost/math/tools/detail/rational_horner2_12.hpp at line 4, boost/math/tools/detail/rational_horner2_13.hpp at line 4, boost/math/tools/detail/rational_horner2_14.hpp at line 4, boost/math/tools/detail/rational_horner2_15.hpp at line 4, boost/math/tools/detail/rational_horner2_16.hpp at line 4, boost/math/tools/detail/rational_horner2_17.hpp at line 4, boost/math/tools/detail/rational_horner2_18.hpp at line 4, boost/math/tools/detail/rational_horner2_19.hpp at line 4, boost/math/tools/detail/rational_horner2_20.hpp at line 4
- License text:
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/math/distributions/students_t.hpp [5:7]
- boost/math/special_functions/next.hpp [2:4]
- boost/math/special_functions/zeta.hpp [2:4]
- boost/math/tools/big_constant.hpp [3:5]
- boost/math/tools/detail/polynomial_horner2_20.hpp [2:4]
- boost/math/tools/detail/rational_horner1_11.hpp [2:4]
- boost/math/tools/detail/rational_horner1_12.hpp [2:4]
- boost/math/tools/detail/rational_horner1_13.hpp [2:4]
- boost/math/tools/detail/rational_horner1_14.hpp [2:4]
- boost/math/tools/detail/rational_horner1_15.hpp [2:4]
- boost/math/tools/detail/rational_horner1_16.hpp [2:4]
- boost/math/tools/detail/rational_horner1_17.hpp [2:4]
- boost/math/tools/detail/rational_horner1_18.hpp [2:4]
- boost/math/tools/detail/rational_horner1_19.hpp [2:4]
- boost/math/tools/detail/rational_horner1_20.hpp [2:4]
- boost/math/tools/detail/rational_horner2_11.hpp [2:4]
- boost/math/tools/detail/rational_horner2_12.hpp [2:4]
- boost/math/tools/detail/rational_horner2_13.hpp [2:4]
- boost/math/tools/detail/rational_horner2_14.hpp [2:4]
- boost/math/tools/detail/rational_horner2_15.hpp [2:4]
- boost/math/tools/detail/rational_horner2_16.hpp [2:4]
- boost/math/tools/detail/rational_horner2_17.hpp [2:4]
- boost/math/tools/detail/rational_horner2_18.hpp [2:4]
- boost/math/tools/detail/rational_horner2_19.hpp [2:4]
- boost/math/tools/detail/rational_horner2_20.hpp [2:4]
-
-KEEP BSL-1.0 2680a252584e97559a5e2d3fd8fa06b7
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/detail/dynamic_array.hpp at line 5, boost/multiprecision/detail/rebind.hpp at line 5, boost/multiprecision/detail/utype_helper.hpp at line 5
- License text:
- // Copyright Christopher Kormanyos 2013. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/multiprecision/detail/dynamic_array.hpp [3:5]
- boost/multiprecision/detail/rebind.hpp [3:5]
- boost/multiprecision/detail/utype_helper.hpp [3:5]
-
-KEEP BSL-1.0 273e902bd13375207ae0e2368cfe6098
-BELONGS libs/iostreams/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iostreams/categories.hpp at line 4, boost/iostreams/chain.hpp at line 4, boost/iostreams/char_traits.hpp at line 4, boost/iostreams/checked_operations.hpp at line 4, boost/iostreams/close.hpp at line 4, boost/iostreams/code_converter.hpp at line 4, boost/iostreams/combine.hpp at line 4, boost/iostreams/compose.hpp at line 4, boost/iostreams/concepts.hpp at line 4, boost/iostreams/constants.hpp at line 4, boost/iostreams/copy.hpp at line 4, boost/iostreams/detail/access_control.hpp at line 4, boost/iostreams/detail/adapter/concept_adapter.hpp at line 4, boost/iostreams/detail/adapter/direct_adapter.hpp at line 4, boost/iostreams/detail/adapter/mode_adapter.hpp at line 4, boost/iostreams/detail/adapter/non_blocking_adapter.hpp at line 4, boost/iostreams/detail/adapter/output_iterator_adapter.hpp at line 4, boost/iostreams/detail/adapter/range_adapter.hpp at line 4, boost/iostreams/detail/add_facet.hpp at line 4, boost/iostreams/detail/bool_trait_def.hpp at line 4, boost/iostreams/detail/broken_overload_resolution/forward.hpp at line 4, boost/iostreams/detail/broken_overload_resolution/stream.hpp at line 4, boost/iostreams/detail/broken_overload_resolution/stream_buffer.hpp at line 4, boost/iostreams/detail/buffer.hpp at line 4, boost/iostreams/detail/call_traits.hpp at line 4, boost/iostreams/detail/char_traits.hpp at line 4, boost/iostreams/detail/codecvt_helper.hpp at line 4, boost/iostreams/detail/codecvt_holder.hpp at line 4, boost/iostreams/detail/config/auto_link.hpp at line 4, boost/iostreams/detail/config/bzip2.hpp at line 4, boost/iostreams/detail/config/codecvt.hpp at line 4, boost/iostreams/detail/config/disable_warnings.hpp at line 4, boost/iostreams/detail/config/dyn_link.hpp at line 4, boost/iostreams/detail/config/enable_warnings.hpp at line 4, boost/iostreams/detail/config/gcc.hpp at line 4, boost/iostreams/detail/config/limits.hpp at line 4, boost/iostreams/detail/config/overload_resolution.hpp at line 4, boost/iostreams/detail/config/unreachable_return.hpp at line 3, boost/iostreams/detail/config/wide_streams.hpp at line 4, boost/iostreams/detail/config/windows_posix.hpp at line 5, boost/iostreams/detail/config/zlib.hpp at line 4, boost/iostreams/detail/counted_array.hpp at line 4, boost/iostreams/detail/default_arg.hpp at line 4, boost/iostreams/detail/dispatch.hpp at line 4, boost/iostreams/detail/double_object.hpp at line 4, boost/iostreams/detail/enable_if_stream.hpp at line 4, boost/iostreams/detail/error.hpp at line 4, boost/iostreams/detail/forward.hpp at line 4, boost/iostreams/detail/fstream.hpp at line 4, boost/iostreams/detail/ios.hpp at line 4, boost/iostreams/detail/iostream.hpp at line 4, boost/iostreams/detail/is_dereferenceable.hpp at line 5, boost/iostreams/detail/is_iterator_range.hpp at line 4, boost/iostreams/detail/newline.hpp at line 4, boost/iostreams/detail/optional.hpp at line 4, boost/iostreams/detail/param_type.hpp at line 4, boost/iostreams/detail/push.hpp at line 4, boost/iostreams/detail/push_params.hpp at line 4, boost/iostreams/detail/resolve.hpp at line 4, boost/iostreams/detail/select.hpp at line 4, boost/iostreams/detail/select_by_size.hpp at line 4, boost/iostreams/detail/streambuf.hpp at line 4, boost/iostreams/detail/streambuf/chainbuf.hpp at line 4, boost/iostreams/detail/streambuf/direct_streambuf.hpp at line 4, boost/iostreams/detail/streambuf/indirect_streambuf.hpp at line 4, boost/iostreams/detail/streambuf/linked_streambuf.hpp at line 4, boost/iostreams/detail/system_failure.hpp at line 5, boost/iostreams/detail/template_params.hpp at line 4, boost/iostreams/detail/translate_int_type.hpp at line 4, boost/iostreams/detail/wrap_unwrap.hpp at line 4, boost/iostreams/device/array.hpp at line 4, boost/iostreams/device/back_inserter.hpp at line 4, boost/iostreams/device/file.hpp at line 4, boost/iostreams/device/file_descriptor.hpp at line 4, boost/iostreams/device/mapped_file.hpp at line 5, boost/iostreams/device/null.hpp at line 4, boost/iostreams/filter/aggregate.hpp at line 4, boost/iostreams/filter/bzip2.hpp at line 4, boost/iostreams/filter/counter.hpp at line 4, boost/iostreams/filter/gzip.hpp at line 4, boost/iostreams/filter/line.hpp at line 4, boost/iostreams/filter/lzma.hpp at line 4, boost/iostreams/filter/newline.hpp at line 4, boost/iostreams/filter/regex.hpp at line 4, boost/iostreams/filter/stdio.hpp at line 4, boost/iostreams/filter/symmetric.hpp at line 4, boost/iostreams/filter/test.hpp at line 4, boost/iostreams/filter/zlib.hpp at line 4, boost/iostreams/filtering_stream.hpp at line 4, boost/iostreams/filtering_streambuf.hpp at line 4, boost/iostreams/flush.hpp at line 4, boost/iostreams/get.hpp at line 4, boost/iostreams/imbue.hpp at line 4, boost/iostreams/input_sequence.hpp at line 4, boost/iostreams/invert.hpp at line 4, boost/iostreams/operations.hpp at line 4, boost/iostreams/operations_fwd.hpp at line 4, boost/iostreams/optimal_buffer_size.hpp at line 4, boost/iostreams/output_sequence.hpp at line 4, boost/iostreams/pipeline.hpp at line 4, boost/iostreams/positioning.hpp at line 4, boost/iostreams/put.hpp at line 4, boost/iostreams/putback.hpp at line 4, boost/iostreams/read.hpp at line 4, boost/iostreams/seek.hpp at line 4, boost/iostreams/skip.hpp at line 4, boost/iostreams/stream.hpp at line 4, boost/iostreams/stream_buffer.hpp at line 4, boost/iostreams/tee.hpp at line 4, boost/iostreams/traits.hpp at line 4, boost/iostreams/traits_fwd.hpp at line 4, boost/iostreams/write.hpp at line 4, boost/ptr_container/detail/default_deleter.hpp at line 3, boost/ptr_container/detail/is_convertible.hpp at line 5, boost/ptr_container/detail/move.hpp at line 3, boost/ptr_container/detail/static_move_ptr.hpp at line 5, libs/iostreams/src/bzip2.cpp at line 4, libs/iostreams/src/file_descriptor.cpp at line 4, libs/iostreams/src/gzip.cpp at line 4, libs/iostreams/src/lzma.cpp at line 6, libs/iostreams/src/mapped_file.cpp at line 6, libs/iostreams/src/zlib.cpp at line 4
- License text:
+# File format ($ symbol means the beginning of a line):
+#
+# $ # this message
+# $ # =======================
+# $ # comments (all commentaries should starts with some number of spaces and # symbol)
+# $ IGNORE_FILES {file1.ext1} {file2.ext2} - (optional) ignore listed files when generating license macro and credits
+# $
+# ${action} {license id} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
+# ${all_file_action} filename
+# $ # user commentaries (many lines)
+# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
+# ${action} {license spdx} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/3/ya.make
+# ${all_file_action} filename
+# $ # user commentaries
+# $ generated description
+# $ ...
+#
+# You can modify action, all_file_action and add commentaries
+# Available actions:
+# keep - keep license in contrib and use in credits
+# skip - skip license
+# remove - remove all files with this license
+# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
+#
+# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
+# We suppose that that files can contain some license info
+# Available all file actions:
+# FILE_IGNORE - ignore file (do nothing)
+# FILE_INCLUDE - include all file data into licenses text file
+# =======================
+
+KEEP BSL-1.0 0056bb214b60416bd2a0fa8da64af3a6
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/detail/singleton.hpp at line 5, boost/pool/detail/guard.hpp at line 4, boost/pool/detail/mutex.hpp at line 4, boost/pool/detail/pool_construct_simple.ipp at line 4, boost/pool/object_pool.hpp at line 4, boost/pool/pool.hpp at line 4, boost/pool/pool_alloc.hpp at line 5, boost/pool/poolfwd.hpp at line 4, boost/pool/simple_segregated_storage.hpp at line 4, boost/pool/singleton_pool.hpp at line 4
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/container/detail/singleton.hpp [4:8]
+ boost/pool/detail/guard.hpp [3:7]
+ boost/pool/detail/mutex.hpp [3:7]
+ boost/pool/detail/pool_construct_simple.ipp [3:7]
+ boost/pool/object_pool.hpp [3:7]
+ boost/pool/pool.hpp [3:7]
+ boost/pool/pool_alloc.hpp [4:8]
+ boost/pool/poolfwd.hpp [3:7]
+ boost/pool/simple_segregated_storage.hpp [3:7]
+ boost/pool/singleton_pool.hpp [3:7]
+
+KEEP BSL-1.0 011fcbacb89caf6fb7d35d5ddd8327fb
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/archive/detail/auto_link_archive.hpp at line 14, boost/archive/detail/auto_link_warchive.hpp at line 14, boost/archive/detail/decl.hpp at line 14, boost/cerrno.hpp at line 5, boost/config/warning_disable.hpp at line 3, boost/filesystem/convenience.hpp at line 6, boost/filesystem/exception.hpp at line 5, boost/numeric/conversion/bounds.hpp at line 3, boost/numeric/conversion/cast.hpp at line 3, boost/numeric/conversion/conversion_traits.hpp at line 3, boost/numeric/conversion/converter.hpp at line 3, boost/numeric/conversion/converter_policies.hpp at line 3, boost/numeric/conversion/detail/bounds.hpp at line 3, boost/numeric/conversion/detail/conversion_traits.hpp at line 3, boost/numeric/conversion/detail/converter.hpp at line 3, boost/numeric/conversion/detail/int_float_mixture.hpp at line 3, boost/numeric/conversion/detail/is_subranged.hpp at line 3, boost/numeric/conversion/detail/meta.hpp at line 3, boost/numeric/conversion/detail/sign_mixture.hpp at line 3, boost/numeric/conversion/detail/udt_builtin_mixture.hpp at line 3, boost/numeric/conversion/int_float_mixture.hpp at line 3, boost/numeric/conversion/int_float_mixture_enum.hpp at line 3, boost/numeric/conversion/is_subranged.hpp at line 3, boost/numeric/conversion/sign_mixture.hpp at line 3, boost/numeric/conversion/sign_mixture_enum.hpp at line 3, boost/numeric/conversion/udt_builtin_mixture.hpp at line 3, boost/numeric/conversion/udt_builtin_mixture_enum.hpp at line 3, boost/serialization/config.hpp at line 8
+ License text:
+ // Use, modification, and distribution is subject to the Boost Software
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/archive/detail/auto_link_archive.hpp [13:15]
+ boost/archive/detail/auto_link_warchive.hpp [13:15]
+ boost/archive/detail/decl.hpp [13:15]
+ boost/cerrno.hpp [4:6]
+ boost/config/warning_disable.hpp [2:4]
+ boost/filesystem/convenience.hpp [5:7]
+ boost/filesystem/exception.hpp [4:6]
+ boost/numeric/conversion/bounds.hpp [2:4]
+ boost/numeric/conversion/cast.hpp [2:4]
+ boost/numeric/conversion/conversion_traits.hpp [2:4]
+ boost/numeric/conversion/converter.hpp [2:4]
+ boost/numeric/conversion/converter_policies.hpp [2:4]
+ boost/numeric/conversion/detail/bounds.hpp [2:4]
+ boost/numeric/conversion/detail/conversion_traits.hpp [2:4]
+ boost/numeric/conversion/detail/converter.hpp [2:4]
+ boost/numeric/conversion/detail/int_float_mixture.hpp [2:4]
+ boost/numeric/conversion/detail/is_subranged.hpp [2:4]
+ boost/numeric/conversion/detail/meta.hpp [2:4]
+ boost/numeric/conversion/detail/sign_mixture.hpp [2:4]
+ boost/numeric/conversion/detail/udt_builtin_mixture.hpp [2:4]
+ boost/numeric/conversion/int_float_mixture.hpp [2:4]
+ boost/numeric/conversion/int_float_mixture_enum.hpp [2:4]
+ boost/numeric/conversion/is_subranged.hpp [2:4]
+ boost/numeric/conversion/sign_mixture.hpp [2:4]
+ boost/numeric/conversion/sign_mixture_enum.hpp [2:4]
+ boost/numeric/conversion/udt_builtin_mixture.hpp [2:4]
+ boost/numeric/conversion/udt_builtin_mixture_enum.hpp [2:4]
+ boost/serialization/config.hpp [7:9]
+
+KEEP BSL-1.0 019b02292c2133b845d73735b595410b
+BELONGS ya.make
+ License text:
+ // Use modification and distribution are subject to the boost Software License,
+ // Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 59.38
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/function_types/detail/classifier_impl/arity20_0.hpp [4:5]
+ boost/function_types/detail/classifier_impl/arity20_1.hpp [4:5]
+ boost/function_types/detail/classifier_impl/arity30_0.hpp [4:5]
+ boost/function_types/detail/classifier_impl/arity30_1.hpp [4:5]
+ boost/function_types/detail/classifier_impl/arity40_0.hpp [4:5]
+ boost/function_types/detail/classifier_impl/arity40_1.hpp [4:5]
+ boost/function_types/detail/classifier_impl/arity50_0.hpp [4:5]
+ boost/function_types/detail/classifier_impl/arity50_1.hpp [4:5]
+ boost/function_types/detail/components_impl/arity20_0.hpp [4:5]
+ boost/function_types/detail/components_impl/arity20_1.hpp [4:5]
+ boost/function_types/detail/components_impl/arity30_0.hpp [4:5]
+ boost/function_types/detail/components_impl/arity30_1.hpp [4:5]
+ boost/function_types/detail/components_impl/arity40_0.hpp [4:5]
+ boost/function_types/detail/components_impl/arity40_1.hpp [4:5]
+ boost/function_types/detail/components_impl/arity50_0.hpp [4:5]
+ boost/function_types/detail/components_impl/arity50_1.hpp [4:5]
+ boost/function_types/detail/synthesize_impl/arity20_0.hpp [4:5]
+ boost/function_types/detail/synthesize_impl/arity20_1.hpp [4:5]
+ boost/function_types/detail/synthesize_impl/arity30_0.hpp [4:5]
+ boost/function_types/detail/synthesize_impl/arity30_1.hpp [4:5]
+ boost/function_types/detail/synthesize_impl/arity40_0.hpp [4:5]
+ boost/function_types/detail/synthesize_impl/arity40_1.hpp [4:5]
+ boost/function_types/detail/synthesize_impl/arity50_0.hpp [4:5]
+ boost/function_types/detail/synthesize_impl/arity50_1.hpp [4:5]
+
+KEEP BSL-1.0 02174c266cd94438c7459adf8172f0a0
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/variant.hpp at line 17
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 94.74
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/serialization/variant.hpp [16:20]
+
+KEEP BSL-1.0 02c5d3cff474bc6841ea7b84039888fe
+BELONGS libs/log/ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: libs/log/src/windows/simple_event_log.h at line 4
+ License text:
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ libs/log/src/windows/simple_event_log.h [3:5]
+
+KEEP BSL-1.0 047703a180d1874c006c6f9eec627f0d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/logic/tribool.hpp at line 5, boost/logic/tribool_fwd.hpp at line 5, boost/logic/tribool_io.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/logic/tribool.hpp [3:6]
+ boost/logic/tribool_fwd.hpp [3:6]
+ boost/logic/tribool_io.hpp [3:6]
+
+KEEP BSL-1.0 0498682e5e2a8a1b73b9fef23aa5669e
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/times2_iterator.hpp at line 6
+ License text:
+ // Copyright 2006 Eric Niebler. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/accumulators/statistics/times2_iterator.hpp [4:6]
+
+KEEP BSL-1.0 05954ae47dedb48ccaf95b3af88bc2aa
+BELONGS libs/serialization/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/utf8_codecvt_facet.ipp at line 7, boost/graph/accounting.hpp at line 4, boost/graph/detail/labeled_graph_traits.hpp at line 4, boost/graph/dimacs.hpp at line 4, boost/graph/distributed/adjacency_list.hpp at line 5, boost/graph/distributed/adjlist/handlers.hpp at line 4, boost/graph/distributed/adjlist/initialize.hpp at line 4, boost/graph/distributed/adjlist/redistribute.hpp at line 4, boost/graph/distributed/boman_et_al_graph_coloring.hpp at line 4, boost/graph/distributed/breadth_first_search.hpp at line 4, boost/graph/distributed/compressed_sparse_row_graph.hpp at line 4, boost/graph/distributed/concepts.hpp at line 4, boost/graph/distributed/connected_components.hpp at line 4, boost/graph/distributed/connected_components_parallel_search.hpp at line 4, boost/graph/distributed/crauser_et_al_shortest_paths.hpp at line 4, boost/graph/distributed/dehne_gotz_min_spanning_tree.hpp at line 4, boost/graph/distributed/delta_stepping_shortest_paths.hpp at line 4, boost/graph/distributed/depth_first_search.hpp at line 4, boost/graph/distributed/detail/dijkstra_shortest_paths.hpp at line 4, boost/graph/distributed/detail/filtered_queue.hpp at line 4, boost/graph/distributed/detail/mpi_process_group.ipp at line 8, boost/graph/distributed/detail/queue.ipp at line 4, boost/graph/distributed/detail/remote_update_set.hpp at line 4, boost/graph/distributed/detail/tag_allocator.hpp at line 6, boost/graph/distributed/dijkstra_shortest_paths.hpp at line 4, boost/graph/distributed/distributed_graph_utility.hpp at line 3, boost/graph/distributed/eager_dijkstra_shortest_paths.hpp at line 4, boost/graph/distributed/filtered_graph.hpp at line 4, boost/graph/distributed/fruchterman_reingold.hpp at line 4, boost/graph/distributed/graphviz.hpp at line 4, boost/graph/distributed/hohberg_biconnected_components.hpp at line 4, boost/graph/distributed/local_subgraph.hpp at line 4, boost/graph/distributed/mpi_process_group.hpp at line 6, boost/graph/distributed/named_graph.hpp at line 5, boost/graph/distributed/one_bit_color_map.hpp at line 4, boost/graph/distributed/page_rank.hpp at line 5, boost/graph/distributed/queue.hpp at line 4, boost/graph/distributed/reverse_graph.hpp at line 4, boost/graph/distributed/rmat_graph_generator.hpp at line 4, boost/graph/distributed/selector.hpp at line 4, boost/graph/distributed/st_connected.hpp at line 4, boost/graph/distributed/strong_components.hpp at line 4, boost/graph/distributed/two_bit_color_map.hpp at line 4, boost/graph/distributed/unsafe_serialize.hpp at line 4, boost/graph/distributed/vertex_list_adaptor.hpp at line 4, boost/graph/edmunds_karp_max_flow.hpp at line 4, boost/graph/graph_mutability_traits.hpp at line 4, boost/graph/graph_stats.hpp at line 4, boost/graph/graphml.hpp at line 5, boost/graph/howard_cycle_ratio.hpp at line 4, boost/graph/labeled_graph.hpp at line 4, boost/graph/mesh_graph_generator.hpp at line 4, boost/graph/metis.hpp at line 4, boost/graph/overloading.hpp at line 4, boost/graph/parallel/algorithm.hpp at line 4, boost/graph/parallel/basic_reduce.hpp at line 4, boost/graph/parallel/container_traits.hpp at line 4, boost/graph/parallel/detail/inplace_all_to_all.hpp at line 4, boost/graph/parallel/distribution.hpp at line 4, boost/graph/parallel/process_group.hpp at line 4, boost/graph/parallel/properties.hpp at line 4, boost/graph/parallel/simple_trigger.hpp at line 4, boost/graph/point_traits.hpp at line 4, boost/graph/rmat_graph_generator.hpp at line 4, boost/graph/ssca_graph_generator.hpp at line 4, boost/graph/st_connected.hpp at line 4, boost/graph/use_mpi.hpp at line 4, boost/graph/vertex_and_edge_range.hpp at line 4, boost/mpi.hpp at line 4, boost/mpi/allocator.hpp at line 4, boost/mpi/collectives.hpp at line 4, boost/mpi/collectives/all_gather.hpp at line 4, boost/mpi/collectives/all_gatherv.hpp at line 4, boost/mpi/collectives/all_reduce.hpp at line 5, boost/mpi/collectives/all_to_all.hpp at line 4, boost/mpi/collectives/broadcast.hpp at line 4, boost/mpi/collectives/gather.hpp at line 4, boost/mpi/collectives/gatherv.hpp at line 4, boost/mpi/collectives/reduce.hpp at line 5, boost/mpi/collectives/scan.hpp at line 5, boost/mpi/collectives/scatter.hpp at line 4, boost/mpi/collectives/scatterv.hpp at line 4, boost/mpi/collectives_fwd.hpp at line 4, boost/mpi/communicator.hpp at line 5, boost/mpi/config.hpp at line 4, boost/mpi/datatype.hpp at line 6, boost/mpi/datatype_fwd.hpp at line 4, boost/mpi/detail/binary_buffer_iprimitive.hpp at line 4, boost/mpi/detail/binary_buffer_oprimitive.hpp at line 4, boost/mpi/detail/broadcast_sc.hpp at line 4, boost/mpi/detail/communicator_sc.hpp at line 4, boost/mpi/detail/computation_tree.hpp at line 4, boost/mpi/detail/content_oarchive.hpp at line 4, boost/mpi/detail/forward_iprimitive.hpp at line 4, boost/mpi/detail/forward_oprimitive.hpp at line 4, boost/mpi/detail/forward_skeleton_iarchive.hpp at line 4, boost/mpi/detail/forward_skeleton_oarchive.hpp at line 4, boost/mpi/detail/ignore_iprimitive.hpp at line 4, boost/mpi/detail/ignore_oprimitive.hpp at line 4, boost/mpi/detail/ignore_skeleton_oarchive.hpp at line 4, boost/mpi/detail/mpi_datatype_cache.hpp at line 4, boost/mpi/detail/mpi_datatype_oarchive.hpp at line 4, boost/mpi/detail/mpi_datatype_primitive.hpp at line 4, boost/mpi/detail/packed_iprimitive.hpp at line 4, boost/mpi/detail/packed_oprimitive.hpp at line 4, boost/mpi/detail/point_to_point.hpp at line 4, boost/mpi/detail/text_skeleton_oarchive.hpp at line 4, boost/mpi/environment.hpp at line 4, boost/mpi/exception.hpp at line 4, boost/mpi/graph_communicator.hpp at line 7, boost/mpi/group.hpp at line 7, boost/mpi/inplace.hpp at line 4, boost/mpi/intercommunicator.hpp at line 7, boost/mpi/nonblocking.hpp at line 4, boost/mpi/operations.hpp at line 5, boost/mpi/packed_iarchive.hpp at line 5, boost/mpi/packed_oarchive.hpp at line 5, boost/mpi/python.hpp at line 4, boost/mpi/python/config.hpp at line 4, boost/mpi/python/serialize.hpp at line 4, boost/mpi/python/skeleton_and_content.hpp at line 4, boost/mpi/request.hpp at line 4, boost/mpi/skeleton_and_content.hpp at line 5, boost/mpi/skeleton_and_content_fwd.hpp at line 4, boost/mpi/status.hpp at line 4, boost/mpi/timer.hpp at line 4, boost/pending/relaxed_heap.hpp at line 4, boost/phoenix/stl/algorithm/detail/begin.hpp at line 6, boost/phoenix/stl/algorithm/detail/end.hpp at line 6, boost/phoenix/stl/algorithm/detail/has_equal_range.hpp at line 5, boost/phoenix/stl/algorithm/detail/has_find.hpp at line 7, boost/phoenix/stl/algorithm/detail/has_lower_bound.hpp at line 5, boost/phoenix/stl/algorithm/detail/has_remove.hpp at line 5, boost/phoenix/stl/algorithm/detail/has_remove_if.hpp at line 5, boost/phoenix/stl/algorithm/detail/has_reverse.hpp at line 5, boost/phoenix/stl/algorithm/detail/has_sort.hpp at line 5, boost/phoenix/stl/algorithm/detail/has_unique.hpp at line 5, boost/phoenix/stl/algorithm/detail/has_upper_bound.hpp at line 5, boost/phoenix/stl/algorithm/detail/is_std_hash_map.hpp at line 5, boost/phoenix/stl/algorithm/detail/is_std_hash_set.hpp at line 5, boost/phoenix/stl/algorithm/detail/is_std_list.hpp at line 5, boost/phoenix/stl/algorithm/detail/is_std_map.hpp at line 5, boost/phoenix/stl/algorithm/detail/is_std_set.hpp at line 5, boost/phoenix/stl/algorithm/detail/is_unordered_set_or_map.hpp at line 7, boost/phoenix/stl/algorithm/querying.hpp at line 8, boost/phoenix/stl/algorithm/transformation.hpp at line 7, boost/property_map/dynamic_property_map.hpp at line 7, boost/property_map/parallel/basic_reduce.hpp at line 4, boost/property_map/parallel/caching_property_map.hpp at line 4, boost/property_map/parallel/distributed_property_map.hpp at line 4, boost/property_map/parallel/global_index_map.hpp at line 4, boost/property_map/parallel/impl/distributed_property_map.ipp at line 4, boost/property_map/parallel/local_property_map.hpp at line 4, boost/property_map/parallel/process_group.hpp at line 4, boost/property_map/parallel/simple_trigger.hpp at line 4, boost/property_map/parallel/unsafe_serialize.hpp at line 4, boost/serialization/array.hpp at line 6, boost/serialization/array_optimization.hpp at line 6, boost/serialization/array_wrapper.hpp at line 6, boost/serialization/boost_array.hpp at line 6, boost/serialization/collection_size_type.hpp at line 6, boost/serialization/is_bitwise_serializable.hpp at line 4, boost/serialization/item_version_type.hpp at line 6, boost/serialization/optional.hpp at line 5, boost/serialization/scoped_ptr.hpp at line 10, boost/serialization/wrapper.hpp at line 6, libs/serialization/src/codecvt_null.cpp at line 7
+ License text:
+ // Use, modification and distribution is subject to the Boost Software
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/detail/utf8_codecvt_facet.ipp [6:8]
+ boost/graph/accounting.hpp [3:5]
+ boost/graph/detail/labeled_graph_traits.hpp [3:5]
+ boost/graph/dimacs.hpp [3:5]
+ boost/graph/distributed/adjacency_list.hpp [4:6]
+ boost/graph/distributed/adjlist/handlers.hpp [3:5]
+ boost/graph/distributed/adjlist/initialize.hpp [3:5]
+ boost/graph/distributed/adjlist/redistribute.hpp [3:5]
+ boost/graph/distributed/boman_et_al_graph_coloring.hpp [3:5]
+ boost/graph/distributed/breadth_first_search.hpp [3:5]
+ boost/graph/distributed/compressed_sparse_row_graph.hpp [3:5]
+ boost/graph/distributed/concepts.hpp [3:5]
+ boost/graph/distributed/connected_components.hpp [3:5]
+ boost/graph/distributed/connected_components_parallel_search.hpp [3:5]
+ boost/graph/distributed/crauser_et_al_shortest_paths.hpp [3:5]
+ boost/graph/distributed/dehne_gotz_min_spanning_tree.hpp [3:5]
+ boost/graph/distributed/delta_stepping_shortest_paths.hpp [3:5]
+ boost/graph/distributed/depth_first_search.hpp [3:5]
+ boost/graph/distributed/detail/dijkstra_shortest_paths.hpp [3:5]
+ boost/graph/distributed/detail/filtered_queue.hpp [3:5]
+ boost/graph/distributed/detail/mpi_process_group.ipp [7:9]
+ boost/graph/distributed/detail/queue.ipp [3:5]
+ boost/graph/distributed/detail/remote_update_set.hpp [3:5]
+ boost/graph/distributed/detail/tag_allocator.hpp [5:7]
+ boost/graph/distributed/dijkstra_shortest_paths.hpp [3:5]
+ boost/graph/distributed/distributed_graph_utility.hpp [2:4]
+ boost/graph/distributed/eager_dijkstra_shortest_paths.hpp [3:5]
+ boost/graph/distributed/filtered_graph.hpp [3:5]
+ boost/graph/distributed/fruchterman_reingold.hpp [3:5]
+ boost/graph/distributed/graphviz.hpp [3:5]
+ boost/graph/distributed/hohberg_biconnected_components.hpp [3:5]
+ boost/graph/distributed/local_subgraph.hpp [3:5]
+ boost/graph/distributed/mpi_process_group.hpp [5:7]
+ boost/graph/distributed/named_graph.hpp [4:6]
+ boost/graph/distributed/one_bit_color_map.hpp [3:5]
+ boost/graph/distributed/page_rank.hpp [4:6]
+ boost/graph/distributed/queue.hpp [3:5]
+ boost/graph/distributed/reverse_graph.hpp [3:5]
+ boost/graph/distributed/rmat_graph_generator.hpp [3:5]
+ boost/graph/distributed/selector.hpp [3:5]
+ boost/graph/distributed/st_connected.hpp [3:5]
+ boost/graph/distributed/strong_components.hpp [3:5]
+ boost/graph/distributed/two_bit_color_map.hpp [3:5]
+ boost/graph/distributed/unsafe_serialize.hpp [3:5]
+ boost/graph/distributed/vertex_list_adaptor.hpp [3:5]
+ boost/graph/edmunds_karp_max_flow.hpp [3:5]
+ boost/graph/graph_mutability_traits.hpp [3:5]
+ boost/graph/graph_stats.hpp [3:5]
+ boost/graph/graphml.hpp [4:6]
+ boost/graph/howard_cycle_ratio.hpp [3:5]
+ boost/graph/labeled_graph.hpp [3:5]
+ boost/graph/mesh_graph_generator.hpp [3:5]
+ boost/graph/metis.hpp [3:5]
+ boost/graph/overloading.hpp [3:5]
+ boost/graph/parallel/algorithm.hpp [3:5]
+ boost/graph/parallel/basic_reduce.hpp [3:5]
+ boost/graph/parallel/container_traits.hpp [3:5]
+ boost/graph/parallel/detail/inplace_all_to_all.hpp [3:5]
+ boost/graph/parallel/distribution.hpp [3:5]
+ boost/graph/parallel/process_group.hpp [3:5]
+ boost/graph/parallel/properties.hpp [3:5]
+ boost/graph/parallel/simple_trigger.hpp [3:5]
+ boost/graph/point_traits.hpp [3:5]
+ boost/graph/rmat_graph_generator.hpp [3:5]
+ boost/graph/ssca_graph_generator.hpp [3:5]
+ boost/graph/st_connected.hpp [3:5]
+ boost/graph/use_mpi.hpp [3:5]
+ boost/graph/vertex_and_edge_range.hpp [3:5]
+ boost/mpi.hpp [3:5]
+ boost/mpi/allocator.hpp [3:5]
+ boost/mpi/collectives.hpp [3:5]
+ boost/mpi/collectives/all_gather.hpp [3:5]
+ boost/mpi/collectives/all_gatherv.hpp [3:5]
+ boost/mpi/collectives/all_reduce.hpp [4:6]
+ boost/mpi/collectives/all_to_all.hpp [3:5]
+ boost/mpi/collectives/broadcast.hpp [3:5]
+ boost/mpi/collectives/gather.hpp [3:5]
+ boost/mpi/collectives/gatherv.hpp [3:5]
+ boost/mpi/collectives/reduce.hpp [4:6]
+ boost/mpi/collectives/scan.hpp [4:6]
+ boost/mpi/collectives/scatter.hpp [3:5]
+ boost/mpi/collectives/scatterv.hpp [3:5]
+ boost/mpi/collectives_fwd.hpp [3:5]
+ boost/mpi/communicator.hpp [4:6]
+ boost/mpi/config.hpp [3:5]
+ boost/mpi/datatype.hpp [5:7]
+ boost/mpi/datatype_fwd.hpp [3:5]
+ boost/mpi/detail/binary_buffer_iprimitive.hpp [3:5]
+ boost/mpi/detail/binary_buffer_oprimitive.hpp [3:5]
+ boost/mpi/detail/broadcast_sc.hpp [3:5]
+ boost/mpi/detail/communicator_sc.hpp [3:5]
+ boost/mpi/detail/computation_tree.hpp [3:5]
+ boost/mpi/detail/content_oarchive.hpp [3:5]
+ boost/mpi/detail/forward_iprimitive.hpp [3:5]
+ boost/mpi/detail/forward_oprimitive.hpp [3:5]
+ boost/mpi/detail/forward_skeleton_iarchive.hpp [3:5]
+ boost/mpi/detail/forward_skeleton_oarchive.hpp [3:5]
+ boost/mpi/detail/ignore_iprimitive.hpp [3:5]
+ boost/mpi/detail/ignore_oprimitive.hpp [3:5]
+ boost/mpi/detail/ignore_skeleton_oarchive.hpp [3:5]
+ boost/mpi/detail/mpi_datatype_cache.hpp [3:5]
+ boost/mpi/detail/mpi_datatype_oarchive.hpp [3:5]
+ boost/mpi/detail/mpi_datatype_primitive.hpp [3:5]
+ boost/mpi/detail/packed_iprimitive.hpp [3:5]
+ boost/mpi/detail/packed_oprimitive.hpp [3:5]
+ boost/mpi/detail/point_to_point.hpp [3:5]
+ boost/mpi/detail/text_skeleton_oarchive.hpp [3:5]
+ boost/mpi/environment.hpp [3:5]
+ boost/mpi/exception.hpp [3:5]
+ boost/mpi/graph_communicator.hpp [6:8]
+ boost/mpi/group.hpp [6:8]
+ boost/mpi/inplace.hpp [3:5]
+ boost/mpi/intercommunicator.hpp [6:8]
+ boost/mpi/nonblocking.hpp [3:5]
+ boost/mpi/operations.hpp [4:6]
+ boost/mpi/packed_iarchive.hpp [4:6]
+ boost/mpi/packed_oarchive.hpp [4:6]
+ boost/mpi/python.hpp [3:5]
+ boost/mpi/python/config.hpp [3:5]
+ boost/mpi/python/serialize.hpp [3:5]
+ boost/mpi/python/skeleton_and_content.hpp [3:5]
+ boost/mpi/request.hpp [3:5]
+ boost/mpi/skeleton_and_content.hpp [4:6]
+ boost/mpi/skeleton_and_content_fwd.hpp [3:5]
+ boost/mpi/status.hpp [3:5]
+ boost/mpi/timer.hpp [3:5]
+ boost/pending/relaxed_heap.hpp [3:5]
+ boost/phoenix/stl/algorithm/detail/begin.hpp [5:7]
+ boost/phoenix/stl/algorithm/detail/end.hpp [5:7]
+ boost/phoenix/stl/algorithm/detail/has_equal_range.hpp [4:6]
+ boost/phoenix/stl/algorithm/detail/has_find.hpp [6:8]
+ boost/phoenix/stl/algorithm/detail/has_lower_bound.hpp [4:6]
+ boost/phoenix/stl/algorithm/detail/has_remove.hpp [4:6]
+ boost/phoenix/stl/algorithm/detail/has_remove_if.hpp [4:6]
+ boost/phoenix/stl/algorithm/detail/has_reverse.hpp [4:6]
+ boost/phoenix/stl/algorithm/detail/has_sort.hpp [4:6]
+ boost/phoenix/stl/algorithm/detail/has_unique.hpp [4:6]
+ boost/phoenix/stl/algorithm/detail/has_upper_bound.hpp [4:6]
+ boost/phoenix/stl/algorithm/detail/is_std_hash_map.hpp [4:6]
+ boost/phoenix/stl/algorithm/detail/is_std_hash_set.hpp [4:6]
+ boost/phoenix/stl/algorithm/detail/is_std_list.hpp [4:6]
+ boost/phoenix/stl/algorithm/detail/is_std_map.hpp [4:6]
+ boost/phoenix/stl/algorithm/detail/is_std_set.hpp [4:6]
+ boost/phoenix/stl/algorithm/detail/is_unordered_set_or_map.hpp [6:8]
+ boost/phoenix/stl/algorithm/querying.hpp [7:9]
+ boost/phoenix/stl/algorithm/transformation.hpp [6:8]
+ boost/property_map/dynamic_property_map.hpp [6:8]
+ boost/property_map/parallel/basic_reduce.hpp [3:5]
+ boost/property_map/parallel/caching_property_map.hpp [3:5]
+ boost/property_map/parallel/distributed_property_map.hpp [3:5]
+ boost/property_map/parallel/global_index_map.hpp [3:5]
+ boost/property_map/parallel/impl/distributed_property_map.ipp [3:5]
+ boost/property_map/parallel/local_property_map.hpp [3:5]
+ boost/property_map/parallel/process_group.hpp [3:5]
+ boost/property_map/parallel/simple_trigger.hpp [3:5]
+ boost/property_map/parallel/unsafe_serialize.hpp [3:5]
+ boost/serialization/array.hpp [5:7]
+ boost/serialization/array_optimization.hpp [5:7]
+ boost/serialization/array_wrapper.hpp [5:7]
+ boost/serialization/boost_array.hpp [5:7]
+ boost/serialization/collection_size_type.hpp [5:7]
+ boost/serialization/is_bitwise_serializable.hpp [3:5]
+ boost/serialization/item_version_type.hpp [5:7]
+ boost/serialization/optional.hpp [4:6]
+ boost/serialization/scoped_ptr.hpp [9:11]
+ boost/serialization/wrapper.hpp [5:7]
+ libs/serialization/src/codecvt_null.cpp [6:8]
+
+KEEP BSL-1.0 05cc48a3f35f6c4cd26b75b91f9d84bb
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/date_time/compiler_config.hpp at line 6, boost/date_time/local_time/posix_time_zone.hpp at line 6, boost/date_time/string_convert.hpp at line 6
+ License text:
+ * Subject to the Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 78.12
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/date_time/compiler_config.hpp [5:6]
+ boost/date_time/local_time/posix_time_zone.hpp [5:6]
+ boost/date_time/string_convert.hpp [5:6]
+
+KEEP BSL-1.0 06e856a793d5d61c7219b6427a238daf
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/function/function_base.hpp at line 6, boost/function/function_template.hpp at line 6
+ License text:
+ // Use, modification and distribution is subject to the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/function/function_base.hpp [5:7]
+ boost/function/function_template.hpp [5:7]
+
+SKIP MPL-1.1 0719c83d37f34864e67338e4334355cc
+BELONGS ya.make
+ License text:
+ //! Lift a MPL-style metafunction to a Metafunction.
+ Scancode info:
+ Original SPDX id: MPL-1.1
+ Score : 80.00
+ Match type : REFERENCE
+ Links : http://www.mozilla.com/MPL/1.1/index.html, http://www.mozilla.org/MPL/MPL-1.1.html, https://spdx.org/licenses/MPL-1.1
+ Files with this license:
+ boost/hana/fwd/type.hpp [419:419]
+
+KEEP BSL-1.0 07d4ea27a275fc0b7043690f14bf03f1
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/detail/file_wrapper.hpp at line 5, boost/interprocess/detail/managed_open_or_create_impl.hpp at line 5, boost/interprocess/detail/ptime_wrk.hpp at line 5, boost/interprocess/smart_ptr/detail/shared_count.hpp at line 9, boost/interprocess/smart_ptr/enable_shared_from_this.hpp at line 8, boost/interprocess/smart_ptr/intrusive_ptr.hpp at line 8, boost/interprocess/smart_ptr/scoped_ptr.hpp at line 9
+ License text:
+ // (C) Copyright Ion Gaztanaga 2006-2012. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/interprocess/detail/file_wrapper.hpp [3:5]
+ boost/interprocess/detail/managed_open_or_create_impl.hpp [3:5]
+ boost/interprocess/detail/ptime_wrk.hpp [3:5]
+ boost/interprocess/smart_ptr/detail/shared_count.hpp [7:9]
+ boost/interprocess/smart_ptr/enable_shared_from_this.hpp [6:8]
+ boost/interprocess/smart_ptr/intrusive_ptr.hpp [6:8]
+ boost/interprocess/smart_ptr/scoped_ptr.hpp [7:9]
+
+KEEP BSL-1.0 0974809ca97a6ae3d4791e1b39276ddd
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/regex/v4/basic_regex_parser.hpp at line 8, boost/regex/v4/regex_token_iterator.hpp at line 8
+ License text:
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/regex/v4/basic_regex_parser.hpp [6:8]
+ boost/regex/v4/regex_token_iterator.hpp [6:8]
+
+KEEP BSL-1.0 09c716a03fbe135e9481759f58d4c044
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signals2.hpp at line 7, boost/signals2/deconstruct_ptr.hpp at line 12, boost/signals2/detail/preprocessed_arg_type_template.hpp at line 5, boost/signals2/detail/replace_slot_function.hpp at line 5, boost/signals2/detail/signal_template.hpp at line 11, boost/signals2/detail/signals_common_macros.hpp at line 8, boost/signals2/detail/slot_call_iterator.hpp at line 7, boost/signals2/detail/slot_groups.hpp at line 6, boost/signals2/detail/variadic_arg_type.hpp at line 5, boost/signals2/detail/variadic_slot_invoker.hpp at line 10, boost/signals2/expired_slot.hpp at line 6, boost/signals2/postconstructible.hpp at line 12, boost/signals2/preprocessed_signal.hpp at line 10, boost/signals2/shared_connection_block.hpp at line 6, boost/signals2/signal.hpp at line 7, boost/signals2/signal_base.hpp at line 6, boost/signals2/signal_type.hpp at line 12, boost/signals2/slot.hpp at line 7, boost/signals2/variadic_signal.hpp at line 11
+ License text:
+ // Use, modification and
+ // distribution is subject to the Boost Software License, Version
+ // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/signals2.hpp [5:8]
+ boost/signals2/deconstruct_ptr.hpp [10:13]
+ boost/signals2/detail/preprocessed_arg_type_template.hpp [3:6]
+ boost/signals2/detail/replace_slot_function.hpp [3:6]
+ boost/signals2/detail/signal_template.hpp [9:12]
+ boost/signals2/detail/signals_common_macros.hpp [6:9]
+ boost/signals2/detail/slot_call_iterator.hpp [5:8]
+ boost/signals2/detail/slot_groups.hpp [4:7]
+ boost/signals2/detail/variadic_arg_type.hpp [3:6]
+ boost/signals2/detail/variadic_slot_invoker.hpp [8:11]
+ boost/signals2/expired_slot.hpp [4:7]
+ boost/signals2/postconstructible.hpp [10:13]
+ boost/signals2/preprocessed_signal.hpp [8:11]
+ boost/signals2/shared_connection_block.hpp [4:7]
+ boost/signals2/signal.hpp [5:8]
+ boost/signals2/signal_base.hpp [4:7]
+ boost/signals2/signal_type.hpp [10:13]
+ boost/signals2/slot.hpp [5:8]
+ boost/signals2/variadic_signal.hpp [9:12]
+
+KEEP BSL-1.0 09eeed6bf2283f582f9d6171c7544ac2
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/parallel/detail/property_holders.hpp at line 4, boost/graph/parallel/detail/untracked_pair.hpp at line 4, boost/property_map/parallel/detail/untracked_pair.hpp at line 4
+ License text:
+ // Use, modification and distribution is subject to the Boost Software
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 71.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/graph/parallel/detail/property_holders.hpp [3:4]
+ boost/graph/parallel/detail/untracked_pair.hpp [3:4]
+ boost/property_map/parallel/detail/untracked_pair.hpp [3:4]
+
+KEEP BSL-1.0 0b1ca66f26dbf14fa8ecd8f8a2eced55
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/static_vector.hpp at line 8, boost/core/ignore_unused.hpp at line 4, boost/geometry.hpp at line 11, boost/geometry/algorithms/append.hpp at line 17, boost/geometry/algorithms/area.hpp at line 16, boost/geometry/algorithms/assign.hpp at line 12, boost/geometry/algorithms/buffer.hpp at line 15, boost/geometry/algorithms/centroid.hpp at line 18, boost/geometry/algorithms/clear.hpp at line 11, boost/geometry/algorithms/comparable_distance.hpp at line 16, boost/geometry/algorithms/convert.hpp at line 16, boost/geometry/algorithms/convex_hull.hpp at line 17, boost/geometry/algorithms/correct.hpp at line 16, boost/geometry/algorithms/correct_closure.hpp at line 6, boost/geometry/algorithms/covered_by.hpp at line 16, boost/geometry/algorithms/crosses.hpp at line 17, boost/geometry/algorithms/detail/as_range.hpp at line 11, boost/geometry/algorithms/detail/assign_box_corners.hpp at line 11, boost/geometry/algorithms/detail/assign_indexed_point.hpp at line 11, boost/geometry/algorithms/detail/assign_values.hpp at line 11, boost/geometry/algorithms/detail/azimuth.hpp at line 12, boost/geometry/algorithms/detail/buffer/buffer_inserter.hpp at line 10, boost/geometry/algorithms/detail/buffer/buffer_policies.hpp at line 10, boost/geometry/algorithms/detail/buffer/buffered_piece_collection.hpp at line 11, boost/geometry/algorithms/detail/buffer/buffered_ring.hpp at line 6, boost/geometry/algorithms/detail/buffer/get_piece_turns.hpp at line 11, boost/geometry/algorithms/detail/buffer/line_line_intersection.hpp at line 6, boost/geometry/algorithms/detail/buffer/parallel_continue.hpp at line 6, boost/geometry/algorithms/detail/buffer/turn_in_original_visitor.hpp at line 10, boost/geometry/algorithms/detail/buffer/turn_in_piece_visitor.hpp at line 11, boost/geometry/algorithms/detail/calculate_null.hpp at line 11, boost/geometry/algorithms/detail/calculate_sum.hpp at line 16, boost/geometry/algorithms/detail/centroid/translating_transformer.hpp at line 14, boost/geometry/algorithms/detail/comparable_distance/implementation.hpp at line 16, boost/geometry/algorithms/detail/comparable_distance/interface.hpp at line 16, boost/geometry/algorithms/detail/convert_indexed_to_indexed.hpp at line 11, boost/geometry/algorithms/detail/convert_point_to_point.hpp at line 11, boost/geometry/algorithms/detail/counting.hpp at line 17, boost/geometry/algorithms/detail/course.hpp at line 11, boost/geometry/algorithms/detail/covered_by/implementation.hpp at line 16, boost/geometry/algorithms/detail/covered_by/interface.hpp at line 16, boost/geometry/algorithms/detail/direction_code.hpp at line 12, boost/geometry/algorithms/detail/disjoint/areal_areal.hpp at line 18, boost/geometry/algorithms/detail/disjoint/box_box.hpp at line 18, boost/geometry/algorithms/detail/disjoint/implementation.hpp at line 18, boost/geometry/algorithms/detail/disjoint/interface.hpp at line 18, boost/geometry/algorithms/detail/disjoint/linear_areal.hpp at line 18, boost/geometry/algorithms/detail/disjoint/linear_linear.hpp at line 18, boost/geometry/algorithms/detail/disjoint/linear_segment_or_box.hpp at line 18, boost/geometry/algorithms/detail/disjoint/point_box.hpp at line 18, boost/geometry/algorithms/detail/disjoint/point_geometry.hpp at line 18, boost/geometry/algorithms/detail/disjoint/point_point.hpp at line 18, boost/geometry/algorithms/detail/disjoint/segment_box.hpp at line 19, boost/geometry/algorithms/detail/distance/backward_compatibility.hpp at line 17, boost/geometry/algorithms/detail/distance/default_strategies.hpp at line 17, boost/geometry/algorithms/detail/distance/implementation.hpp at line 17, boost/geometry/algorithms/detail/distance/interface.hpp at line 18, boost/geometry/algorithms/detail/distance/point_to_geometry.hpp at line 17, boost/geometry/algorithms/detail/equals/collect_vectors.hpp at line 17, boost/geometry/algorithms/detail/equals/implementation.hpp at line 18, boost/geometry/algorithms/detail/equals/interface.hpp at line 18, boost/geometry/algorithms/detail/equals/point_point.hpp at line 18, boost/geometry/algorithms/detail/extreme_points.hpp at line 14, boost/geometry/algorithms/detail/for_each_range.hpp at line 11, boost/geometry/algorithms/detail/get_left_turns.hpp at line 11, boost/geometry/algorithms/detail/get_max_size.hpp at line 9, boost/geometry/algorithms/detail/has_self_intersections.hpp at line 11, boost/geometry/algorithms/detail/interior_iterator.hpp at line 6, boost/geometry/algorithms/detail/intersection/box_box.hpp at line 11, boost/geometry/algorithms/detail/intersection/implementation.hpp at line 11, boost/geometry/algorithms/detail/intersection/interface.hpp at line 11, boost/geometry/algorithms/detail/intersection/multi.hpp at line 11, boost/geometry/algorithms/detail/intersects/implementation.hpp at line 17, boost/geometry/algorithms/detail/intersects/interface.hpp at line 17, boost/geometry/algorithms/detail/multi_modify.hpp at line 15, boost/geometry/algorithms/detail/multi_modify_with_predicate.hpp at line 11, boost/geometry/algorithms/detail/multi_sum.hpp at line 11, boost/geometry/algorithms/detail/not.hpp at line 17, boost/geometry/algorithms/detail/occupation_info.hpp at line 11, boost/geometry/algorithms/detail/overlaps/implementation.hpp at line 16, boost/geometry/algorithms/detail/overlaps/interface.hpp at line 16, boost/geometry/algorithms/detail/overlay/add_rings.hpp at line 12, boost/geometry/algorithms/detail/overlay/append_no_duplicates.hpp at line 6, boost/geometry/algorithms/detail/overlay/append_no_dups_or_spikes.hpp at line 11, boost/geometry/algorithms/detail/overlay/assign_parents.hpp at line 11, boost/geometry/algorithms/detail/overlay/backtrack_check_si.hpp at line 10, boost/geometry/algorithms/detail/overlay/check_enrich.hpp at line 6, boost/geometry/algorithms/detail/overlay/clip_linestring.hpp at line 11, boost/geometry/algorithms/detail/overlay/cluster_info.hpp at line 6, boost/geometry/algorithms/detail/overlay/convert_ring.hpp at line 6, boost/geometry/algorithms/detail/overlay/copy_segment_point.hpp at line 6, boost/geometry/algorithms/detail/overlay/copy_segments.hpp at line 12, boost/geometry/algorithms/detail/overlay/debug_turn_info.hpp at line 6, boost/geometry/algorithms/detail/overlay/do_reverse.hpp at line 7, boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp at line 12, boost/geometry/algorithms/detail/overlay/enrichment_info.hpp at line 6, boost/geometry/algorithms/detail/overlay/follow.hpp at line 12, boost/geometry/algorithms/detail/overlay/get_intersection_points.hpp at line 11, boost/geometry/algorithms/detail/overlay/get_relative_order.hpp at line 11, boost/geometry/algorithms/detail/overlay/get_ring.hpp at line 6, boost/geometry/algorithms/detail/overlay/get_turn_info.hpp at line 12, boost/geometry/algorithms/detail/overlay/get_turn_info_for_endpoint.hpp at line 11, boost/geometry/algorithms/detail/overlay/get_turn_info_helpers.hpp at line 11, boost/geometry/algorithms/detail/overlay/get_turn_info_la.hpp at line 12, boost/geometry/algorithms/detail/overlay/get_turn_info_ll.hpp at line 12, boost/geometry/algorithms/detail/overlay/get_turns.hpp at line 12, boost/geometry/algorithms/detail/overlay/handle_colocations.hpp at line 12, boost/geometry/algorithms/detail/overlay/handle_self_turns.hpp at line 7, boost/geometry/algorithms/detail/overlay/intersection_box_box.hpp at line 11, boost/geometry/algorithms/detail/overlay/intersection_insert.hpp at line 12, boost/geometry/algorithms/detail/overlay/is_self_turn.hpp at line 7, boost/geometry/algorithms/detail/overlay/less_by_segment_ratio.hpp at line 11, boost/geometry/algorithms/detail/overlay/needs_self_turns.hpp at line 6, boost/geometry/algorithms/detail/overlay/overlay.hpp at line 13, boost/geometry/algorithms/detail/overlay/overlay_type.hpp at line 6, boost/geometry/algorithms/detail/overlay/range_in_geometry.hpp at line 7, boost/geometry/algorithms/detail/overlay/ring_properties.hpp at line 10, boost/geometry/algorithms/detail/overlay/segment_identifier.hpp at line 6, boost/geometry/algorithms/detail/overlay/select_rings.hpp at line 11, boost/geometry/algorithms/detail/overlay/self_turn_points.hpp at line 12, boost/geometry/algorithms/detail/overlay/sort_by_side.hpp at line 12, boost/geometry/algorithms/detail/overlay/stream_info.hpp at line 6, boost/geometry/algorithms/detail/overlay/traversal.hpp at line 11, boost/geometry/algorithms/detail/overlay/traversal_info.hpp at line 6, boost/geometry/algorithms/detail/overlay/traversal_ring_creator.hpp at line 10, boost/geometry/algorithms/detail/overlay/traversal_switch_detector.hpp at line 6, boost/geometry/algorithms/detail/overlay/traverse.hpp at line 6, boost/geometry/algorithms/detail/overlay/turn_info.hpp at line 6, boost/geometry/algorithms/detail/overlay/visit_info.hpp at line 6, boost/geometry/algorithms/detail/partition.hpp at line 13, boost/geometry/algorithms/detail/point_is_spike_or_equal.hpp at line 15, boost/geometry/algorithms/detail/recalculate.hpp at line 9, boost/geometry/algorithms/detail/relate/areal_areal.hpp at line 11, boost/geometry/algorithms/detail/relate/boundary_checker.hpp at line 6, boost/geometry/algorithms/detail/relate/de9im.hpp at line 11, boost/geometry/algorithms/detail/relate/follow_helpers.hpp at line 9, boost/geometry/algorithms/detail/relate/implementation.hpp at line 11, boost/geometry/algorithms/detail/relate/interface.hpp at line 11, boost/geometry/algorithms/detail/relate/linear_areal.hpp at line 11, boost/geometry/algorithms/detail/relate/linear_linear.hpp at line 11, boost/geometry/algorithms/detail/relate/multi_point_geometry.hpp at line 8, boost/geometry/algorithms/detail/relate/point_geometry.hpp at line 11, boost/geometry/algorithms/detail/relate/point_point.hpp at line 11, boost/geometry/algorithms/detail/relate/relate_impl.hpp at line 11, boost/geometry/algorithms/detail/relate/result.hpp at line 12, boost/geometry/algorithms/detail/relate/topology_check.hpp at line 8, boost/geometry/algorithms/detail/relate/turns.hpp at line 12, boost/geometry/algorithms/detail/relation/implementation.hpp at line 8, boost/geometry/algorithms/detail/relation/interface.hpp at line 11, boost/geometry/algorithms/detail/ring_identifier.hpp at line 6, boost/geometry/algorithms/detail/sections/range_by_section.hpp at line 14, boost/geometry/algorithms/detail/sections/section_box_policies.hpp at line 6, boost/geometry/algorithms/detail/sections/section_functions.hpp at line 11, boost/geometry/algorithms/detail/sections/sectionalize.hpp at line 18, boost/geometry/algorithms/detail/signed_size_type.hpp at line 8, boost/geometry/algorithms/detail/single_geometry.hpp at line 9, boost/geometry/algorithms/detail/sub_range.hpp at line 9, boost/geometry/algorithms/detail/throw_on_empty_input.hpp at line 14, boost/geometry/algorithms/detail/touches/implementation.hpp at line 17, boost/geometry/algorithms/detail/touches/interface.hpp at line 17, boost/geometry/algorithms/detail/within/implementation.hpp at line 16, boost/geometry/algorithms/detail/within/interface.hpp at line 16, boost/geometry/algorithms/detail/within/multi_point.hpp at line 8, boost/geometry/algorithms/detail/within/point_in_geometry.hpp at line 17, boost/geometry/algorithms/detail/within/within_no_turns.hpp at line 14, boost/geometry/algorithms/difference.hpp at line 11, boost/geometry/algorithms/disjoint.hpp at line 18, boost/geometry/algorithms/dispatch/disjoint.hpp at line 18, boost/geometry/algorithms/dispatch/distance.hpp at line 17, boost/geometry/algorithms/distance.hpp at line 17, boost/geometry/algorithms/equals.hpp at line 18, boost/geometry/algorithms/for_each.hpp at line 17, boost/geometry/algorithms/intersection.hpp at line 11, boost/geometry/algorithms/intersects.hpp at line 17, boost/geometry/algorithms/is_convex.hpp at line 11, boost/geometry/algorithms/length.hpp at line 17, boost/geometry/algorithms/make.hpp at line 11, boost/geometry/algorithms/not_implemented.hpp at line 16, boost/geometry/algorithms/num_geometries.hpp at line 16, boost/geometry/algorithms/num_interior_rings.hpp at line 17, boost/geometry/algorithms/num_points.hpp at line 17, boost/geometry/algorithms/overlaps.hpp at line 16, boost/geometry/algorithms/perimeter.hpp at line 16, boost/geometry/algorithms/point_on_surface.hpp at line 14, boost/geometry/algorithms/relate.hpp at line 8, boost/geometry/algorithms/relation.hpp at line 8, boost/geometry/algorithms/remove_spikes.hpp at line 14, boost/geometry/algorithms/reverse.hpp at line 12, boost/geometry/algorithms/simplify.hpp at line 11, boost/geometry/algorithms/sym_difference.hpp at line 12, boost/geometry/algorithms/touches.hpp at line 17, boost/geometry/algorithms/transform.hpp at line 12, boost/geometry/algorithms/union.hpp at line 12, boost/geometry/algorithms/unique.hpp at line 12, boost/geometry/algorithms/within.hpp at line 16, boost/geometry/arithmetic/arithmetic.hpp at line 11, boost/geometry/arithmetic/cross_product.hpp at line 12, boost/geometry/arithmetic/determinant.hpp at line 8, boost/geometry/arithmetic/dot_product.hpp at line 11, boost/geometry/arithmetic/normalize.hpp at line 7, boost/geometry/core/access.hpp at line 11, boost/geometry/core/assert.hpp at line 11, boost/geometry/core/closure.hpp at line 16, boost/geometry/core/coordinate_dimension.hpp at line 11, boost/geometry/core/coordinate_system.hpp at line 11, boost/geometry/core/coordinate_type.hpp at line 11, boost/geometry/core/cs.hpp at line 16, boost/geometry/core/exception.hpp at line 16, boost/geometry/core/exterior_ring.hpp at line 11, boost/geometry/core/geometry_id.hpp at line 11, boost/geometry/core/interior_rings.hpp at line 11, boost/geometry/core/interior_type.hpp at line 11, boost/geometry/core/is_areal.hpp at line 11, boost/geometry/core/mutable_range.hpp at line 11, boost/geometry/core/point_order.hpp at line 16, boost/geometry/core/point_type.hpp at line 11, boost/geometry/core/radian_access.hpp at line 16, boost/geometry/core/radius.hpp at line 16, boost/geometry/core/reverse_dispatch.hpp at line 11, boost/geometry/core/ring_type.hpp at line 16, boost/geometry/core/tag.hpp at line 11, boost/geometry/core/tag_cast.hpp at line 11, boost/geometry/core/tags.hpp at line 16, boost/geometry/core/topological_dimension.hpp at line 11, boost/geometry/formulas/andoyer_inverse.hpp at line 10, boost/geometry/formulas/area_formulas.hpp at line 9, boost/geometry/formulas/authalic_radius_sqr.hpp at line 8, boost/geometry/formulas/differential_quantities.hpp at line 8, boost/geometry/formulas/eccentricity_sqr.hpp at line 8, boost/geometry/formulas/elliptic_arc_length.hpp at line 8, boost/geometry/formulas/flattening.hpp at line 8, boost/geometry/formulas/geographic.hpp at line 7, boost/geometry/formulas/gnomonic_intersection.hpp at line 8, boost/geometry/formulas/gnomonic_spheroid.hpp at line 8, boost/geometry/formulas/mean_radius.hpp at line 8, boost/geometry/formulas/result_direct.hpp at line 8, boost/geometry/formulas/result_inverse.hpp at line 8, boost/geometry/formulas/sjoberg_intersection.hpp at line 8, boost/geometry/formulas/spherical.hpp at line 8, boost/geometry/formulas/thomas_direct.hpp at line 8, boost/geometry/formulas/thomas_inverse.hpp at line 9, boost/geometry/formulas/unit_spheroid.hpp at line 8, boost/geometry/formulas/vertex_latitude.hpp at line 9, boost/geometry/formulas/vertex_longitude.hpp at line 9, boost/geometry/formulas/vincenty_direct.hpp at line 11, boost/geometry/formulas/vincenty_inverse.hpp at line 12, boost/geometry/geometries/adapted/boost_array.hpp at line 7, boost/geometry/geometries/adapted/boost_fusion.hpp at line 12, boost/geometry/geometries/adapted/boost_polygon.hpp at line 6, boost/geometry/geometries/adapted/boost_polygon/box.hpp at line 6, boost/geometry/geometries/adapted/boost_polygon/hole_iterator.hpp at line 6, boost/geometry/geometries/adapted/boost_polygon/holes_proxy.hpp at line 6, boost/geometry/geometries/adapted/boost_polygon/point.hpp at line 6, boost/geometry/geometries/adapted/boost_polygon/polygon.hpp at line 6, boost/geometry/geometries/adapted/boost_polygon/ring.hpp at line 6, boost/geometry/geometries/adapted/boost_polygon/ring_proxy.hpp at line 6, boost/geometry/geometries/adapted/boost_range/adjacent_filtered.hpp at line 6, boost/geometry/geometries/adapted/boost_range/filtered.hpp at line 6, boost/geometry/geometries/adapted/boost_range/reversed.hpp at line 6, boost/geometry/geometries/adapted/boost_range/sliced.hpp at line 6, boost/geometry/geometries/adapted/boost_range/strided.hpp at line 6, boost/geometry/geometries/adapted/boost_range/uniqued.hpp at line 6, boost/geometry/geometries/adapted/boost_tuple.hpp at line 11, boost/geometry/geometries/adapted/c_array.hpp at line 11, boost/geometry/geometries/adapted/std_array.hpp at line 8, boost/geometry/geometries/adapted/std_pair_as_segment.hpp at line 11, boost/geometry/geometries/box.hpp at line 11, boost/geometry/geometries/concepts/box_concept.hpp at line 11, boost/geometry/geometries/concepts/check.hpp at line 11, boost/geometry/geometries/concepts/linestring_concept.hpp at line 11, boost/geometry/geometries/concepts/multi_linestring_concept.hpp at line 11, boost/geometry/geometries/concepts/multi_point_concept.hpp at line 11, boost/geometry/geometries/concepts/multi_polygon_concept.hpp at line 11, boost/geometry/geometries/concepts/point_concept.hpp at line 16, boost/geometry/geometries/concepts/polygon_concept.hpp at line 11, boost/geometry/geometries/concepts/ring_concept.hpp at line 11, boost/geometry/geometries/concepts/segment_concept.hpp at line 11, boost/geometry/geometries/geometries.hpp at line 11, boost/geometry/geometries/linestring.hpp at line 12, boost/geometry/geometries/multi_linestring.hpp at line 12, boost/geometry/geometries/multi_point.hpp at line 12, boost/geometry/geometries/multi_polygon.hpp at line 12, boost/geometry/geometries/point.hpp at line 17, boost/geometry/geometries/point_xy.hpp at line 11, boost/geometry/geometries/polygon.hpp at line 12, boost/geometry/geometries/register/box.hpp at line 11, boost/geometry/geometries/register/linestring.hpp at line 11, boost/geometry/geometries/register/multi_linestring.hpp at line 11, boost/geometry/geometries/register/multi_point.hpp at line 11, boost/geometry/geometries/register/multi_polygon.hpp at line 11, boost/geometry/geometries/register/point.hpp at line 11, boost/geometry/geometries/register/ring.hpp at line 11, boost/geometry/geometries/register/segment.hpp at line 11, boost/geometry/geometries/ring.hpp at line 12, boost/geometry/geometries/segment.hpp at line 11, boost/geometry/geometries/variant.hpp at line 11, boost/geometry/geometry.hpp at line 17, boost/geometry/index/adaptors/query.hpp at line 8, boost/geometry/index/detail/algorithms/bounds.hpp at line 8, boost/geometry/index/detail/algorithms/comparable_distance_centroid.hpp at line 8, boost/geometry/index/detail/algorithms/comparable_distance_far.hpp at line 8, boost/geometry/index/detail/algorithms/comparable_distance_near.hpp at line 8, boost/geometry/index/detail/algorithms/content.hpp at line 8, boost/geometry/index/detail/algorithms/diff_abs.hpp at line 8, boost/geometry/index/detail/algorithms/intersection_content.hpp at line 8, boost/geometry/index/detail/algorithms/is_valid.hpp at line 8, boost/geometry/index/detail/algorithms/margin.hpp at line 8, boost/geometry/index/detail/algorithms/minmaxdist.hpp at line 8, boost/geometry/index/detail/algorithms/nth_element.hpp at line 6, boost/geometry/index/detail/algorithms/path_intersection.hpp at line 8, boost/geometry/index/detail/algorithms/segment_intersection.hpp at line 8, boost/geometry/index/detail/algorithms/smallest_for_indexable.hpp at line 8, boost/geometry/index/detail/algorithms/sum_for_indexable.hpp at line 8, boost/geometry/index/detail/algorithms/union_content.hpp at line 9, boost/geometry/index/detail/assert.hpp at line 6, boost/geometry/index/detail/bounded_view.hpp at line 9, boost/geometry/index/detail/config_begin.hpp at line 6, boost/geometry/index/detail/config_end.hpp at line 6, boost/geometry/index/detail/distance_predicates.hpp at line 9, boost/geometry/index/detail/exception.hpp at line 6, boost/geometry/index/detail/is_bounding_geometry.hpp at line 6, boost/geometry/index/detail/is_indexable.hpp at line 6, boost/geometry/index/detail/meta.hpp at line 6, boost/geometry/index/detail/predicates.hpp at line 8, boost/geometry/index/detail/rtree/adaptors.hpp at line 8, boost/geometry/index/detail/rtree/iterators.hpp at line 8, boost/geometry/index/detail/rtree/kmeans/kmeans.hpp at line 8, boost/geometry/index/detail/rtree/kmeans/split.hpp at line 8, boost/geometry/index/detail/rtree/linear/linear.hpp at line 8, boost/geometry/index/detail/rtree/linear/redistribute_elements.hpp at line 9, boost/geometry/index/detail/rtree/node/concept.hpp at line 8, boost/geometry/index/detail/rtree/node/node.hpp at line 8, boost/geometry/index/detail/rtree/node/node_elements.hpp at line 8, boost/geometry/index/detail/rtree/node/pairs.hpp at line 8, boost/geometry/index/detail/rtree/node/scoped_deallocator.hpp at line 8, boost/geometry/index/detail/rtree/node/subtree_destroyer.hpp at line 8, boost/geometry/index/detail/rtree/node/variant_dynamic.hpp at line 8, boost/geometry/index/detail/rtree/node/variant_static.hpp at line 8, boost/geometry/index/detail/rtree/node/variant_visitor.hpp at line 8, boost/geometry/index/detail/rtree/node/weak_dynamic.hpp at line 8, boost/geometry/index/detail/rtree/node/weak_static.hpp at line 8, boost/geometry/index/detail/rtree/node/weak_visitor.hpp at line 8, boost/geometry/index/detail/rtree/options.hpp at line 8, boost/geometry/index/detail/rtree/pack_create.hpp at line 8, boost/geometry/index/detail/rtree/quadratic/quadratic.hpp at line 8, boost/geometry/index/detail/rtree/quadratic/redistribute_elements.hpp at line 8, boost/geometry/index/detail/rtree/query_iterators.hpp at line 8, boost/geometry/index/detail/rtree/rstar/choose_next_node.hpp at line 8, boost/geometry/index/detail/rtree/rstar/insert.hpp at line 8, boost/geometry/index/detail/rtree/rstar/redistribute_elements.hpp at line 8, boost/geometry/index/detail/rtree/rstar/rstar.hpp at line 8, boost/geometry/index/detail/rtree/utilities/are_boxes_ok.hpp at line 8, boost/geometry/index/detail/rtree/utilities/are_counts_ok.hpp at line 8, boost/geometry/index/detail/rtree/utilities/are_levels_ok.hpp at line 8, boost/geometry/index/detail/rtree/utilities/gl_draw.hpp at line 8, boost/geometry/index/detail/rtree/utilities/print.hpp at line 8, boost/geometry/index/detail/rtree/utilities/statistics.hpp at line 9, boost/geometry/index/detail/rtree/utilities/view.hpp at line 8, boost/geometry/index/detail/rtree/visitors/children_box.hpp at line 8, boost/geometry/index/detail/rtree/visitors/copy.hpp at line 8, boost/geometry/index/detail/rtree/visitors/count.hpp at line 8, boost/geometry/index/detail/rtree/visitors/destroy.hpp at line 8, boost/geometry/index/detail/rtree/visitors/distance_query.hpp at line 8, boost/geometry/index/detail/rtree/visitors/insert.hpp at line 8, boost/geometry/index/detail/rtree/visitors/is_leaf.hpp at line 8, boost/geometry/index/detail/rtree/visitors/iterator.hpp at line 8, boost/geometry/index/detail/rtree/visitors/remove.hpp at line 8, boost/geometry/index/detail/rtree/visitors/spatial_query.hpp at line 8, boost/geometry/index/detail/serialization.hpp at line 6, boost/geometry/index/detail/tags.hpp at line 8, boost/geometry/index/detail/translator.hpp at line 6, boost/geometry/index/detail/tuples.hpp at line 6, boost/geometry/index/detail/utilities.hpp at line 6, boost/geometry/index/detail/varray.hpp at line 7, boost/geometry/index/detail/varray_detail.hpp at line 9, boost/geometry/index/distance_predicates.hpp at line 8, boost/geometry/index/equal_to.hpp at line 6, boost/geometry/index/indexable.hpp at line 6, boost/geometry/index/inserter.hpp at line 8, boost/geometry/index/parameters.hpp at line 8, boost/geometry/index/predicates.hpp at line 8, boost/geometry/index/rtree.hpp at line 9, boost/geometry/io/dsv/write.hpp at line 12, boost/geometry/io/io.hpp at line 11, boost/geometry/io/svg/svg_mapper.hpp at line 15, boost/geometry/io/svg/write.hpp at line 15, boost/geometry/io/svg/write_svg.hpp at line 15, boost/geometry/io/svg/write_svg_multi.hpp at line 14, boost/geometry/io/wkt/detail/prefix.hpp at line 11, boost/geometry/io/wkt/detail/wkt_multi.hpp at line 11, boost/geometry/io/wkt/read.hpp at line 17, boost/geometry/io/wkt/stream.hpp at line 11, boost/geometry/io/wkt/wkt.hpp at line 11, boost/geometry/io/wkt/write.hpp at line 17, boost/geometry/iterators/base.hpp at line 11, boost/geometry/iterators/closing_iterator.hpp at line 11, boost/geometry/iterators/ever_circling_iterator.hpp at line 11, boost/geometry/multi/algorithms/append.hpp at line 17, boost/geometry/multi/algorithms/area.hpp at line 11, boost/geometry/multi/algorithms/centroid.hpp at line 11, boost/geometry/multi/algorithms/clear.hpp at line 11, boost/geometry/multi/algorithms/convert.hpp at line 11, boost/geometry/multi/algorithms/correct.hpp at line 11, boost/geometry/multi/algorithms/covered_by.hpp at line 15, boost/geometry/multi/algorithms/detail/extreme_points.hpp at line 9, boost/geometry/multi/algorithms/detail/for_each_range.hpp at line 11, boost/geometry/multi/algorithms/detail/modify.hpp at line 11, boost/geometry/multi/algorithms/detail/modify_with_predicate.hpp at line 11, boost/geometry/multi/algorithms/detail/multi_sum.hpp at line 11, boost/geometry/multi/algorithms/detail/overlay/copy_segment_point.hpp at line 9, boost/geometry/multi/algorithms/detail/overlay/copy_segments.hpp at line 6, boost/geometry/multi/algorithms/detail/overlay/get_ring.hpp at line 6, boost/geometry/multi/algorithms/detail/overlay/get_turns.hpp at line 6, boost/geometry/multi/algorithms/detail/overlay/self_turn_points.hpp at line 6, boost/geometry/multi/algorithms/detail/point_on_border.hpp at line 14, boost/geometry/multi/algorithms/detail/sections/range_by_section.hpp at line 14, boost/geometry/multi/algorithms/detail/sections/sectionalize.hpp at line 14, boost/geometry/multi/algorithms/disjoint.hpp at line 13, boost/geometry/multi/algorithms/distance.hpp at line 16, boost/geometry/multi/algorithms/envelope.hpp at line 11, boost/geometry/multi/algorithms/equals.hpp at line 11, boost/geometry/multi/algorithms/for_each.hpp at line 11, boost/geometry/multi/algorithms/intersection.hpp at line 11, boost/geometry/multi/algorithms/length.hpp at line 11, boost/geometry/multi/algorithms/num_geometries.hpp at line 11, boost/geometry/multi/algorithms/num_interior_rings.hpp at line 16, boost/geometry/multi/algorithms/num_points.hpp at line 16, boost/geometry/multi/algorithms/perimeter.hpp at line 11, boost/geometry/multi/algorithms/remove_spikes.hpp at line 9, boost/geometry/multi/algorithms/reverse.hpp at line 11, boost/geometry/multi/algorithms/simplify.hpp at line 11, boost/geometry/multi/algorithms/transform.hpp at line 11, boost/geometry/multi/algorithms/unique.hpp at line 11, boost/geometry/multi/algorithms/within.hpp at line 15, boost/geometry/multi/core/closure.hpp at line 11, boost/geometry/multi/core/geometry_id.hpp at line 11, boost/geometry/multi/core/interior_rings.hpp at line 11, boost/geometry/multi/core/is_areal.hpp at line 11, boost/geometry/multi/core/point_order.hpp at line 11, boost/geometry/multi/core/point_type.hpp at line 11, boost/geometry/multi/core/ring_type.hpp at line 14, boost/geometry/multi/core/tags.hpp at line 11, boost/geometry/multi/core/topological_dimension.hpp at line 11, boost/geometry/multi/geometries/concepts/check.hpp at line 11, boost/geometry/multi/geometries/concepts/multi_linestring_concept.hpp at line 11, boost/geometry/multi/geometries/concepts/multi_point_concept.hpp at line 11, boost/geometry/multi/geometries/concepts/multi_polygon_concept.hpp at line 11, boost/geometry/multi/geometries/multi_geometries.hpp at line 11, boost/geometry/multi/geometries/multi_linestring.hpp at line 11, boost/geometry/multi/geometries/multi_point.hpp at line 11, boost/geometry/multi/geometries/multi_polygon.hpp at line 11, boost/geometry/multi/geometries/register/multi_linestring.hpp at line 11, boost/geometry/multi/geometries/register/multi_point.hpp at line 11, boost/geometry/multi/geometries/register/multi_polygon.hpp at line 11, boost/geometry/multi/io/dsv/write.hpp at line 11, boost/geometry/multi/io/wkt/detail/prefix.hpp at line 11, boost/geometry/multi/io/wkt/read.hpp at line 11, boost/geometry/multi/io/wkt/wkt.hpp at line 11, boost/geometry/multi/io/wkt/write.hpp at line 11, boost/geometry/multi/multi.hpp at line 14, boost/geometry/multi/strategies/cartesian/centroid_average.hpp at line 11, boost/geometry/multi/views/detail/range_type.hpp at line 11, boost/geometry/policies/compare.hpp at line 11, boost/geometry/policies/disjoint_interrupt_policy.hpp at line 18, boost/geometry/policies/relate/direction.hpp at line 6, boost/geometry/policies/relate/intersection_points.hpp at line 10, boost/geometry/policies/relate/intersection_ratios.hpp at line 6, boost/geometry/policies/relate/tupled.hpp at line 6, boost/geometry/policies/robustness/get_rescale_policy.hpp at line 14, boost/geometry/policies/robustness/no_rescale_policy.hpp at line 9, boost/geometry/policies/robustness/rescale_policy.hpp at line 13, boost/geometry/policies/robustness/robust_point_type.hpp at line 9, boost/geometry/policies/robustness/robust_type.hpp at line 9, boost/geometry/policies/robustness/segment_ratio.hpp at line 10, boost/geometry/policies/robustness/segment_ratio_type.hpp at line 9, boost/geometry/srs/epsg.hpp at line 7, boost/geometry/srs/esri.hpp at line 7, boost/geometry/srs/iau2000.hpp at line 7, boost/geometry/srs/projection.hpp at line 10, boost/geometry/srs/projections/code.hpp at line 7, boost/geometry/srs/projections/epsg.hpp at line 10, boost/geometry/srs/projections/epsg_params.hpp at line 7, boost/geometry/srs/projections/epsg_traits.hpp at line 10, boost/geometry/srs/projections/esri.hpp at line 7, boost/geometry/srs/projections/esri_params.hpp at line 7, boost/geometry/srs/projections/esri_traits.hpp at line 7, boost/geometry/srs/projections/exception.hpp at line 10, boost/geometry/srs/projections/factory.hpp at line 10, boost/geometry/srs/projections/iau2000.hpp at line 7, boost/geometry/srs/projections/iau2000_params.hpp at line 7, boost/geometry/srs/projections/iau2000_traits.hpp at line 7, boost/geometry/srs/projections/impl/aasincos.hpp at line 7, boost/geometry/srs/projections/impl/adjlon.hpp at line 7, boost/geometry/srs/projections/impl/base_dynamic.hpp at line 10, boost/geometry/srs/projections/impl/base_static.hpp at line 10, boost/geometry/srs/projections/impl/dms_parser.hpp at line 10, boost/geometry/srs/projections/impl/factory_entry.hpp at line 10, boost/geometry/srs/projections/impl/function_overloads.hpp at line 10, boost/geometry/srs/projections/impl/geocent.hpp at line 9, boost/geometry/srs/projections/impl/pj_auth.hpp at line 11, boost/geometry/srs/projections/impl/pj_datum_set.hpp at line 11, boost/geometry/srs/projections/impl/pj_datums.hpp at line 11, boost/geometry/srs/projections/impl/pj_ell_set.hpp at line 11, boost/geometry/srs/projections/impl/pj_ellps.hpp at line 11, boost/geometry/srs/projections/impl/pj_fwd.hpp at line 11, boost/geometry/srs/projections/impl/pj_gauss.hpp at line 11, boost/geometry/srs/projections/impl/pj_init.hpp at line 11, boost/geometry/srs/projections/impl/pj_inv.hpp at line 11, boost/geometry/srs/projections/impl/pj_mlfn.hpp at line 11, boost/geometry/srs/projections/impl/pj_msfn.hpp at line 11, boost/geometry/srs/projections/impl/pj_param.hpp at line 11, boost/geometry/srs/projections/impl/pj_phi2.hpp at line 11, boost/geometry/srs/projections/impl/pj_qsfn.hpp at line 11, boost/geometry/srs/projections/impl/pj_strerrno.hpp at line 9, boost/geometry/srs/projections/impl/pj_transform.hpp at line 9, boost/geometry/srs/projections/impl/pj_tsfn.hpp at line 11, boost/geometry/srs/projections/impl/pj_units.hpp at line 11, boost/geometry/srs/projections/impl/pj_zpoly1.hpp at line 11, boost/geometry/srs/projections/impl/proj_mdist.hpp at line 7, boost/geometry/srs/projections/impl/projects.hpp at line 11, boost/geometry/srs/projections/invalid_point.hpp at line 7, boost/geometry/srs/projections/par4.hpp at line 7, boost/geometry/srs/projections/proj/aea.hpp at line 14, boost/geometry/srs/projections/proj/aeqd.hpp at line 14, boost/geometry/srs/projections/proj/airy.hpp at line 14, boost/geometry/srs/projections/proj/aitoff.hpp at line 14, boost/geometry/srs/projections/proj/august.hpp at line 14, boost/geometry/srs/projections/proj/bacon.hpp at line 14, boost/geometry/srs/projections/proj/bipc.hpp at line 14, boost/geometry/srs/projections/proj/boggs.hpp at line 14, boost/geometry/srs/projections/proj/bonne.hpp at line 14, boost/geometry/srs/projections/proj/cass.hpp at line 14, boost/geometry/srs/projections/proj/cc.hpp at line 14, boost/geometry/srs/projections/proj/cea.hpp at line 14, boost/geometry/srs/projections/proj/chamb.hpp at line 14, boost/geometry/srs/projections/proj/collg.hpp at line 14, boost/geometry/srs/projections/proj/crast.hpp at line 14, boost/geometry/srs/projections/proj/denoy.hpp at line 14, boost/geometry/srs/projections/proj/eck1.hpp at line 14, boost/geometry/srs/projections/proj/eck2.hpp at line 14, boost/geometry/srs/projections/proj/eck3.hpp at line 14, boost/geometry/srs/projections/proj/eck4.hpp at line 14, boost/geometry/srs/projections/proj/eck5.hpp at line 14, boost/geometry/srs/projections/proj/eqc.hpp at line 14, boost/geometry/srs/projections/proj/eqdc.hpp at line 14, boost/geometry/srs/projections/proj/etmerc.hpp at line 14, boost/geometry/srs/projections/proj/fahey.hpp at line 14, boost/geometry/srs/projections/proj/fouc_s.hpp at line 14, boost/geometry/srs/projections/proj/gall.hpp at line 14, boost/geometry/srs/projections/proj/geocent.hpp at line 14, boost/geometry/srs/projections/proj/geos.hpp at line 14, boost/geometry/srs/projections/proj/gins8.hpp at line 14, boost/geometry/srs/projections/proj/gn_sinu.hpp at line 14, boost/geometry/srs/projections/proj/gnom.hpp at line 14, boost/geometry/srs/projections/proj/goode.hpp at line 14, boost/geometry/srs/projections/proj/hammer.hpp at line 14, boost/geometry/srs/projections/proj/hatano.hpp at line 14, boost/geometry/srs/projections/proj/healpix.hpp at line 14, boost/geometry/srs/projections/proj/igh.hpp at line 14, boost/geometry/srs/projections/proj/imw_p.hpp at line 14, boost/geometry/srs/projections/proj/isea.hpp at line 14, boost/geometry/srs/projections/proj/krovak.hpp at line 14, boost/geometry/srs/projections/proj/labrd.hpp at line 14, boost/geometry/srs/projections/proj/laea.hpp at line 14, boost/geometry/srs/projections/proj/lagrng.hpp at line 14, boost/geometry/srs/projections/proj/larr.hpp at line 14, boost/geometry/srs/projections/proj/lask.hpp at line 14, boost/geometry/srs/projections/proj/latlong.hpp at line 14, boost/geometry/srs/projections/proj/lcc.hpp at line 14, boost/geometry/srs/projections/proj/lcca.hpp at line 14, boost/geometry/srs/projections/proj/loxim.hpp at line 14, boost/geometry/srs/projections/proj/lsat.hpp at line 14, boost/geometry/srs/projections/proj/mbt_fps.hpp at line 14, boost/geometry/srs/projections/proj/mbtfpp.hpp at line 14, boost/geometry/srs/projections/proj/mbtfpq.hpp at line 14, boost/geometry/srs/projections/proj/merc.hpp at line 14, boost/geometry/srs/projections/proj/mill.hpp at line 14, boost/geometry/srs/projections/proj/mod_ster.hpp at line 14, boost/geometry/srs/projections/proj/moll.hpp at line 14, boost/geometry/srs/projections/proj/natearth.hpp at line 14, boost/geometry/srs/projections/proj/nell.hpp at line 14, boost/geometry/srs/projections/proj/nell_h.hpp at line 14, boost/geometry/srs/projections/proj/nocol.hpp at line 14, boost/geometry/srs/projections/proj/nsper.hpp at line 14, boost/geometry/srs/projections/proj/nzmg.hpp at line 14, boost/geometry/srs/projections/proj/ob_tran.hpp at line 14, boost/geometry/srs/projections/proj/ocea.hpp at line 14, boost/geometry/srs/projections/proj/oea.hpp at line 14, boost/geometry/srs/projections/proj/omerc.hpp at line 14, boost/geometry/srs/projections/proj/ortho.hpp at line 14, boost/geometry/srs/projections/proj/poly.hpp at line 14, boost/geometry/srs/projections/proj/putp2.hpp at line 14, boost/geometry/srs/projections/proj/putp3.hpp at line 14, boost/geometry/srs/projections/proj/putp4p.hpp at line 14, boost/geometry/srs/projections/proj/putp5.hpp at line 14, boost/geometry/srs/projections/proj/putp6.hpp at line 14, boost/geometry/srs/projections/proj/qsc.hpp at line 14, boost/geometry/srs/projections/proj/robin.hpp at line 14, boost/geometry/srs/projections/proj/rouss.hpp at line 14, boost/geometry/srs/projections/proj/rpoly.hpp at line 14, boost/geometry/srs/projections/proj/sconics.hpp at line 14, boost/geometry/srs/projections/proj/somerc.hpp at line 14, boost/geometry/srs/projections/proj/stere.hpp at line 14, boost/geometry/srs/projections/proj/sterea.hpp at line 14, boost/geometry/srs/projections/proj/sts.hpp at line 14, boost/geometry/srs/projections/proj/tcc.hpp at line 14, boost/geometry/srs/projections/proj/tcea.hpp at line 14, boost/geometry/srs/projections/proj/tmerc.hpp at line 14, boost/geometry/srs/projections/proj/tpeqd.hpp at line 14, boost/geometry/srs/projections/proj/urm5.hpp at line 14, boost/geometry/srs/projections/proj/urmfps.hpp at line 14, boost/geometry/srs/projections/proj/vandg.hpp at line 14, boost/geometry/srs/projections/proj/vandg2.hpp at line 14, boost/geometry/srs/projections/proj/vandg4.hpp at line 14, boost/geometry/srs/projections/proj/wag2.hpp at line 14, boost/geometry/srs/projections/proj/wag3.hpp at line 14, boost/geometry/srs/projections/proj/wag7.hpp at line 14, boost/geometry/srs/projections/proj/wink1.hpp at line 14, boost/geometry/srs/projections/proj/wink2.hpp at line 14, boost/geometry/srs/projections/proj4.hpp at line 7, boost/geometry/srs/projections/srid_traits.hpp at line 7, boost/geometry/srs/sphere.hpp at line 16, boost/geometry/srs/spheroid.hpp at line 16, boost/geometry/srs/srs.hpp at line 16, boost/geometry/srs/transformation.hpp at line 7, boost/geometry/strategies/agnostic/buffer_distance_asymmetric.hpp at line 6, boost/geometry/strategies/agnostic/buffer_distance_symmetric.hpp at line 6, boost/geometry/strategies/agnostic/hull_graham_andrew.hpp at line 14, boost/geometry/strategies/agnostic/point_in_box_by_side.hpp at line 11, boost/geometry/strategies/agnostic/point_in_point.hpp at line 8, boost/geometry/strategies/agnostic/point_in_poly_oriented_winding.hpp at line 9, boost/geometry/strategies/agnostic/point_in_poly_winding.hpp at line 14, boost/geometry/strategies/agnostic/simplify_douglas_peucker.hpp at line 15, boost/geometry/strategies/area.hpp at line 12, boost/geometry/strategies/area_result.hpp at line 6, boost/geometry/strategies/azimuth.hpp at line 8, boost/geometry/strategies/buffer.hpp at line 6, boost/geometry/strategies/cartesian/area.hpp at line 17, boost/geometry/strategies/cartesian/area_surveyor.hpp at line 17, boost/geometry/strategies/cartesian/azimuth.hpp at line 8, boost/geometry/strategies/cartesian/box_in_box.hpp at line 17, boost/geometry/strategies/cartesian/buffer_end_flat.hpp at line 6, boost/geometry/strategies/cartesian/buffer_end_round.hpp at line 11, boost/geometry/strategies/cartesian/buffer_join_miter.hpp at line 6, boost/geometry/strategies/cartesian/buffer_join_round.hpp at line 11, boost/geometry/strategies/cartesian/buffer_join_round_by_divide.hpp at line 6, boost/geometry/strategies/cartesian/buffer_point_circle.hpp at line 11, boost/geometry/strategies/cartesian/buffer_point_square.hpp at line 4, boost/geometry/strategies/cartesian/buffer_side_straight.hpp at line 4, boost/geometry/strategies/cartesian/centroid_average.hpp at line 17, boost/geometry/strategies/cartesian/centroid_bashein_detmer.hpp at line 16, boost/geometry/strategies/cartesian/centroid_weighted_length.hpp at line 15, boost/geometry/strategies/cartesian/disjoint_segment_box.hpp at line 16, boost/geometry/strategies/cartesian/distance_projected_point.hpp at line 16, boost/geometry/strategies/cartesian/distance_projected_point_ax.hpp at line 17, boost/geometry/strategies/cartesian/distance_pythagoras.hpp at line 11, boost/geometry/strategies/cartesian/distance_pythagoras_box_box.hpp at line 16, boost/geometry/strategies/cartesian/distance_pythagoras_point_box.hpp at line 16, boost/geometry/strategies/cartesian/envelope_segment.hpp at line 8, boost/geometry/strategies/cartesian/intersection.hpp at line 13, boost/geometry/strategies/cartesian/point_in_box.hpp at line 16, boost/geometry/strategies/cartesian/point_in_poly_crossings_multiply.hpp at line 11, boost/geometry/strategies/cartesian/point_in_poly_franklin.hpp at line 11, boost/geometry/strategies/cartesian/point_in_poly_winding.hpp at line 14, boost/geometry/strategies/cartesian/side_by_triangle.hpp at line 17, boost/geometry/strategies/cartesian/side_of_intersection.hpp at line 11, boost/geometry/strategies/centroid.hpp at line 11, boost/geometry/strategies/compare.hpp at line 16, boost/geometry/strategies/concepts/area_concept.hpp at line 12, boost/geometry/strategies/concepts/centroid_concept.hpp at line 11, boost/geometry/strategies/concepts/convex_hull_concept.hpp at line 16, boost/geometry/strategies/concepts/distance_concept.hpp at line 16, boost/geometry/strategies/concepts/segment_intersect_concept.hpp at line 11, boost/geometry/strategies/concepts/simplify_concept.hpp at line 11, boost/geometry/strategies/concepts/within_concept.hpp at line 11, boost/geometry/strategies/convex_hull.hpp at line 11, boost/geometry/strategies/covered_by.hpp at line 16, boost/geometry/strategies/default_area_result.hpp at line 12, boost/geometry/strategies/default_comparable_distance_result.hpp at line 16, boost/geometry/strategies/default_distance_result.hpp at line 16, boost/geometry/strategies/default_length_result.hpp at line 16, boost/geometry/strategies/default_strategy.hpp at line 11, boost/geometry/strategies/disjoint.hpp at line 8, boost/geometry/strategies/distance.hpp at line 16, boost/geometry/strategies/distance_result.hpp at line 18, boost/geometry/strategies/envelope.hpp at line 8, boost/geometry/strategies/geographic/area.hpp at line 10, boost/geometry/strategies/geographic/azimuth.hpp at line 8, boost/geometry/strategies/geographic/disjoint_segment_box.hpp at line 9, boost/geometry/strategies/geographic/distance.hpp at line 12, boost/geometry/strategies/geographic/distance_andoyer.hpp at line 11, boost/geometry/strategies/geographic/distance_cross_track.hpp at line 8, boost/geometry/strategies/geographic/distance_cross_track_box_box.hpp at line 9, boost/geometry/strategies/geographic/distance_cross_track_point_box.hpp at line 9, boost/geometry/strategies/geographic/distance_thomas.hpp at line 11, boost/geometry/strategies/geographic/distance_vincenty.hpp at line 11, boost/geometry/strategies/geographic/envelope_segment.hpp at line 8, boost/geometry/strategies/geographic/intersection.hpp at line 9, boost/geometry/strategies/geographic/intersection_elliptic.hpp at line 7, boost/geometry/strategies/geographic/mapping_ssf.hpp at line 11, boost/geometry/strategies/geographic/parameters.hpp at line 7, boost/geometry/strategies/geographic/point_in_poly_winding.hpp at line 7, boost/geometry/strategies/geographic/side.hpp at line 11, boost/geometry/strategies/geographic/side_andoyer.hpp at line 11, boost/geometry/strategies/geographic/side_thomas.hpp at line 11, boost/geometry/strategies/geographic/side_vincenty.hpp at line 11, boost/geometry/strategies/intersection.hpp at line 7, boost/geometry/strategies/intersection_result.hpp at line 10, boost/geometry/strategies/intersection_strategies.hpp at line 10, boost/geometry/strategies/relate.hpp at line 7, boost/geometry/strategies/side.hpp at line 11, boost/geometry/strategies/side_info.hpp at line 11, boost/geometry/strategies/spherical/area.hpp at line 10, boost/geometry/strategies/spherical/azimuth.hpp at line 8, boost/geometry/strategies/spherical/compare.hpp at line 11, boost/geometry/strategies/spherical/disjoint_segment_box.hpp at line 9, boost/geometry/strategies/spherical/distance_cross_track.hpp at line 12, boost/geometry/strategies/spherical/distance_cross_track_box_box.hpp at line 8, boost/geometry/strategies/spherical/distance_cross_track_point_box.hpp at line 15, boost/geometry/strategies/spherical/distance_haversine.hpp at line 12, boost/geometry/strategies/spherical/envelope_segment.hpp at line 8, boost/geometry/strategies/spherical/get_radius.hpp at line 10, boost/geometry/strategies/spherical/intersection.hpp at line 9, boost/geometry/strategies/spherical/point_in_poly_winding.hpp at line 14, boost/geometry/strategies/spherical/side_by_cross_track.hpp at line 12, boost/geometry/strategies/spherical/ssf.hpp at line 10, boost/geometry/strategies/strategies.hpp at line 18, boost/geometry/strategies/strategy_transform.hpp at line 16, boost/geometry/strategies/tags.hpp at line 11, boost/geometry/strategies/transform.hpp at line 11, boost/geometry/strategies/transform/inverse_transformer.hpp at line 11, boost/geometry/strategies/transform/map_transformer.hpp at line 11, boost/geometry/strategies/transform/matrix_transformers.hpp at line 16, boost/geometry/strategies/transform/srs_transformer.hpp at line 10, boost/geometry/strategies/within.hpp at line 16, boost/geometry/util/add_const_if_c.hpp at line 11, boost/geometry/util/bare_type.hpp at line 13, boost/geometry/util/calculation_type.hpp at line 8, boost/geometry/util/closure_as_bool.hpp at line 11, boost/geometry/util/combine_if.hpp at line 14, boost/geometry/util/compress_variant.hpp at line 16, boost/geometry/util/condition.hpp at line 8, boost/geometry/util/coordinate_cast.hpp at line 11, boost/geometry/util/for_each_coordinate.hpp at line 11, boost/geometry/util/has_infinite_coordinate.hpp at line 8, boost/geometry/util/has_nan_coordinate.hpp at line 9, boost/geometry/util/has_non_finite_coordinate.hpp at line 8, boost/geometry/util/math.hpp at line 17, boost/geometry/util/order_as_direction.hpp at line 11, boost/geometry/util/parameter_type_of.hpp at line 11, boost/geometry/util/promote_floating_point.hpp at line 11, boost/geometry/util/range.hpp at line 11, boost/geometry/util/rational.hpp at line 11, boost/geometry/util/select_calculation_type.hpp at line 16, boost/geometry/util/select_coordinate_type.hpp at line 16, boost/geometry/util/select_most_precise.hpp at line 16, boost/geometry/util/select_sequence_element.hpp at line 6, boost/geometry/util/transform_variant.hpp at line 16, boost/geometry/views/box_view.hpp at line 11, boost/geometry/views/closeable_view.hpp at line 11, boost/geometry/views/detail/indexed_point_view.hpp at line 14, boost/geometry/views/detail/normalized_view.hpp at line 14, boost/geometry/views/detail/points_view.hpp at line 11, boost/geometry/views/detail/range_type.hpp at line 11, boost/geometry/views/identity_view.hpp at line 11, boost/geometry/views/reversible_view.hpp at line 11, boost/geometry/views/segment_view.hpp at line 11, boost/polygon/interval_concept.hpp at line 9, boost/polygon/interval_data.hpp at line 9, boost/polygon/interval_traits.hpp at line 9, boost/polygon/point_concept.hpp at line 9, boost/polygon/point_data.hpp at line 9, boost/polygon/point_traits.hpp at line 9, boost/polygon/segment_concept.hpp at line 9, boost/polygon/segment_data.hpp at line 9, boost/polygon/segment_traits.hpp at line 9, boost/polygon/transform.hpp at line 9
+ License text:
+ // Use, modification and distribution is subject to the Boost Software License,
+ // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/container/static_vector.hpp [7:9]
+ boost/core/ignore_unused.hpp [3:5]
+ boost/geometry.hpp [10:12]
+ boost/geometry/algorithms/append.hpp [16:18]
+ boost/geometry/algorithms/area.hpp [15:17]
+ boost/geometry/algorithms/assign.hpp [11:13]
+ boost/geometry/algorithms/buffer.hpp [14:16]
+ boost/geometry/algorithms/centroid.hpp [17:19]
+ boost/geometry/algorithms/clear.hpp [10:12]
+ boost/geometry/algorithms/comparable_distance.hpp [15:17]
+ boost/geometry/algorithms/convert.hpp [15:17]
+ boost/geometry/algorithms/convex_hull.hpp [16:18]
+ boost/geometry/algorithms/correct.hpp [15:17]
+ boost/geometry/algorithms/correct_closure.hpp [5:7]
+ boost/geometry/algorithms/covered_by.hpp [15:17]
+ boost/geometry/algorithms/crosses.hpp [16:18]
+ boost/geometry/algorithms/detail/as_range.hpp [10:12]
+ boost/geometry/algorithms/detail/assign_box_corners.hpp [10:12]
+ boost/geometry/algorithms/detail/assign_indexed_point.hpp [10:12]
+ boost/geometry/algorithms/detail/assign_values.hpp [10:12]
+ boost/geometry/algorithms/detail/azimuth.hpp [11:13]
+ boost/geometry/algorithms/detail/buffer/buffer_inserter.hpp [9:11]
+ boost/geometry/algorithms/detail/buffer/buffer_policies.hpp [9:11]
+ boost/geometry/algorithms/detail/buffer/buffered_piece_collection.hpp [10:12]
+ boost/geometry/algorithms/detail/buffer/buffered_ring.hpp [5:7]
+ boost/geometry/algorithms/detail/buffer/get_piece_turns.hpp [10:12]
+ boost/geometry/algorithms/detail/buffer/line_line_intersection.hpp [5:7]
+ boost/geometry/algorithms/detail/buffer/parallel_continue.hpp [5:7]
+ boost/geometry/algorithms/detail/buffer/turn_in_original_visitor.hpp [9:11]
+ boost/geometry/algorithms/detail/buffer/turn_in_piece_visitor.hpp [10:12]
+ boost/geometry/algorithms/detail/calculate_null.hpp [10:12]
+ boost/geometry/algorithms/detail/calculate_sum.hpp [15:17]
+ boost/geometry/algorithms/detail/centroid/translating_transformer.hpp [13:15]
+ boost/geometry/algorithms/detail/comparable_distance/implementation.hpp [15:17]
+ boost/geometry/algorithms/detail/comparable_distance/interface.hpp [15:17]
+ boost/geometry/algorithms/detail/convert_indexed_to_indexed.hpp [10:12]
+ boost/geometry/algorithms/detail/convert_point_to_point.hpp [10:12]
+ boost/geometry/algorithms/detail/counting.hpp [16:18]
+ boost/geometry/algorithms/detail/course.hpp [10:12]
+ boost/geometry/algorithms/detail/covered_by/implementation.hpp [15:17]
+ boost/geometry/algorithms/detail/covered_by/interface.hpp [15:17]
+ boost/geometry/algorithms/detail/direction_code.hpp [11:13]
+ boost/geometry/algorithms/detail/disjoint/areal_areal.hpp [17:19]
+ boost/geometry/algorithms/detail/disjoint/box_box.hpp [17:19]
+ boost/geometry/algorithms/detail/disjoint/implementation.hpp [17:19]
+ boost/geometry/algorithms/detail/disjoint/interface.hpp [17:19]
+ boost/geometry/algorithms/detail/disjoint/linear_areal.hpp [17:19]
+ boost/geometry/algorithms/detail/disjoint/linear_linear.hpp [17:19]
+ boost/geometry/algorithms/detail/disjoint/linear_segment_or_box.hpp [17:19]
+ boost/geometry/algorithms/detail/disjoint/point_box.hpp [17:19]
+ boost/geometry/algorithms/detail/disjoint/point_geometry.hpp [17:19]
+ boost/geometry/algorithms/detail/disjoint/point_point.hpp [17:19]
+ boost/geometry/algorithms/detail/disjoint/segment_box.hpp [18:20]
+ boost/geometry/algorithms/detail/distance/backward_compatibility.hpp [16:18]
+ boost/geometry/algorithms/detail/distance/default_strategies.hpp [16:18]
+ boost/geometry/algorithms/detail/distance/implementation.hpp [16:18]
+ boost/geometry/algorithms/detail/distance/interface.hpp [17:19]
+ boost/geometry/algorithms/detail/distance/point_to_geometry.hpp [16:18]
+ boost/geometry/algorithms/detail/equals/collect_vectors.hpp [16:18]
+ boost/geometry/algorithms/detail/equals/implementation.hpp [17:19]
+ boost/geometry/algorithms/detail/equals/interface.hpp [17:19]
+ boost/geometry/algorithms/detail/equals/point_point.hpp [17:19]
+ boost/geometry/algorithms/detail/extreme_points.hpp [13:15]
+ boost/geometry/algorithms/detail/for_each_range.hpp [10:12]
+ boost/geometry/algorithms/detail/get_left_turns.hpp [10:12]
+ boost/geometry/algorithms/detail/get_max_size.hpp [8:10]
+ boost/geometry/algorithms/detail/has_self_intersections.hpp [10:12]
+ boost/geometry/algorithms/detail/interior_iterator.hpp [5:7]
+ boost/geometry/algorithms/detail/intersection/box_box.hpp [10:12]
+ boost/geometry/algorithms/detail/intersection/implementation.hpp [10:12]
+ boost/geometry/algorithms/detail/intersection/interface.hpp [10:12]
+ boost/geometry/algorithms/detail/intersection/multi.hpp [10:12]
+ boost/geometry/algorithms/detail/intersects/implementation.hpp [16:18]
+ boost/geometry/algorithms/detail/intersects/interface.hpp [16:18]
+ boost/geometry/algorithms/detail/multi_modify.hpp [14:16]
+ boost/geometry/algorithms/detail/multi_modify_with_predicate.hpp [10:12]
+ boost/geometry/algorithms/detail/multi_sum.hpp [10:12]
+ boost/geometry/algorithms/detail/not.hpp [16:18]
+ boost/geometry/algorithms/detail/occupation_info.hpp [10:12]
+ boost/geometry/algorithms/detail/overlaps/implementation.hpp [15:17]
+ boost/geometry/algorithms/detail/overlaps/interface.hpp [15:17]
+ boost/geometry/algorithms/detail/overlay/add_rings.hpp [11:13]
+ boost/geometry/algorithms/detail/overlay/append_no_duplicates.hpp [5:7]
+ boost/geometry/algorithms/detail/overlay/append_no_dups_or_spikes.hpp [10:12]
+ boost/geometry/algorithms/detail/overlay/assign_parents.hpp [10:12]
+ boost/geometry/algorithms/detail/overlay/backtrack_check_si.hpp [9:11]
+ boost/geometry/algorithms/detail/overlay/check_enrich.hpp [5:7]
+ boost/geometry/algorithms/detail/overlay/clip_linestring.hpp [10:12]
+ boost/geometry/algorithms/detail/overlay/cluster_info.hpp [5:7]
+ boost/geometry/algorithms/detail/overlay/convert_ring.hpp [5:7]
+ boost/geometry/algorithms/detail/overlay/copy_segment_point.hpp [5:7]
+ boost/geometry/algorithms/detail/overlay/copy_segments.hpp [11:13]
+ boost/geometry/algorithms/detail/overlay/debug_turn_info.hpp [5:7]
+ boost/geometry/algorithms/detail/overlay/do_reverse.hpp [6:8]
+ boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp [11:13]
+ boost/geometry/algorithms/detail/overlay/enrichment_info.hpp [5:7]
+ boost/geometry/algorithms/detail/overlay/follow.hpp [11:13]
+ boost/geometry/algorithms/detail/overlay/get_intersection_points.hpp [10:12]
+ boost/geometry/algorithms/detail/overlay/get_relative_order.hpp [10:12]
+ boost/geometry/algorithms/detail/overlay/get_ring.hpp [5:7]
+ boost/geometry/algorithms/detail/overlay/get_turn_info.hpp [11:13]
+ boost/geometry/algorithms/detail/overlay/get_turn_info_for_endpoint.hpp [10:12]
+ boost/geometry/algorithms/detail/overlay/get_turn_info_helpers.hpp [10:12]
+ boost/geometry/algorithms/detail/overlay/get_turn_info_la.hpp [11:13]
+ boost/geometry/algorithms/detail/overlay/get_turn_info_ll.hpp [11:13]
+ boost/geometry/algorithms/detail/overlay/get_turns.hpp [11:13]
+ boost/geometry/algorithms/detail/overlay/handle_colocations.hpp [11:13]
+ boost/geometry/algorithms/detail/overlay/handle_self_turns.hpp [6:8]
+ boost/geometry/algorithms/detail/overlay/intersection_box_box.hpp [10:12]
+ boost/geometry/algorithms/detail/overlay/intersection_insert.hpp [11:13]
+ boost/geometry/algorithms/detail/overlay/is_self_turn.hpp [6:8]
+ boost/geometry/algorithms/detail/overlay/less_by_segment_ratio.hpp [10:12]
+ boost/geometry/algorithms/detail/overlay/needs_self_turns.hpp [5:7]
+ boost/geometry/algorithms/detail/overlay/overlay.hpp [12:14]
+ boost/geometry/algorithms/detail/overlay/overlay_type.hpp [5:7]
+ boost/geometry/algorithms/detail/overlay/range_in_geometry.hpp [6:8]
+ boost/geometry/algorithms/detail/overlay/ring_properties.hpp [9:11]
+ boost/geometry/algorithms/detail/overlay/segment_identifier.hpp [5:7]
+ boost/geometry/algorithms/detail/overlay/select_rings.hpp [10:12]
+ boost/geometry/algorithms/detail/overlay/self_turn_points.hpp [11:13]
+ boost/geometry/algorithms/detail/overlay/sort_by_side.hpp [11:13]
+ boost/geometry/algorithms/detail/overlay/stream_info.hpp [5:7]
+ boost/geometry/algorithms/detail/overlay/traversal.hpp [10:12]
+ boost/geometry/algorithms/detail/overlay/traversal_info.hpp [5:7]
+ boost/geometry/algorithms/detail/overlay/traversal_ring_creator.hpp [9:11]
+ boost/geometry/algorithms/detail/overlay/traversal_switch_detector.hpp [5:7]
+ boost/geometry/algorithms/detail/overlay/traverse.hpp [5:7]
+ boost/geometry/algorithms/detail/overlay/turn_info.hpp [5:7]
+ boost/geometry/algorithms/detail/overlay/visit_info.hpp [5:7]
+ boost/geometry/algorithms/detail/partition.hpp [12:14]
+ boost/geometry/algorithms/detail/point_is_spike_or_equal.hpp [14:16]
+ boost/geometry/algorithms/detail/recalculate.hpp [8:10]
+ boost/geometry/algorithms/detail/relate/areal_areal.hpp [10:12]
+ boost/geometry/algorithms/detail/relate/boundary_checker.hpp [5:7]
+ boost/geometry/algorithms/detail/relate/de9im.hpp [10:12]
+ boost/geometry/algorithms/detail/relate/follow_helpers.hpp [8:10]
+ boost/geometry/algorithms/detail/relate/implementation.hpp [10:12]
+ boost/geometry/algorithms/detail/relate/interface.hpp [10:12]
+ boost/geometry/algorithms/detail/relate/linear_areal.hpp [10:12]
+ boost/geometry/algorithms/detail/relate/linear_linear.hpp [10:12]
+ boost/geometry/algorithms/detail/relate/multi_point_geometry.hpp [7:9]
+ boost/geometry/algorithms/detail/relate/point_geometry.hpp [10:12]
+ boost/geometry/algorithms/detail/relate/point_point.hpp [10:12]
+ boost/geometry/algorithms/detail/relate/relate_impl.hpp [10:12]
+ boost/geometry/algorithms/detail/relate/result.hpp [11:13]
+ boost/geometry/algorithms/detail/relate/topology_check.hpp [7:9]
+ boost/geometry/algorithms/detail/relate/turns.hpp [11:13]
+ boost/geometry/algorithms/detail/relation/implementation.hpp [7:9]
+ boost/geometry/algorithms/detail/relation/interface.hpp [10:12]
+ boost/geometry/algorithms/detail/ring_identifier.hpp [5:7]
+ boost/geometry/algorithms/detail/sections/range_by_section.hpp [13:15]
+ boost/geometry/algorithms/detail/sections/section_box_policies.hpp [5:7]
+ boost/geometry/algorithms/detail/sections/section_functions.hpp [10:12]
+ boost/geometry/algorithms/detail/sections/sectionalize.hpp [17:19]
+ boost/geometry/algorithms/detail/signed_size_type.hpp [7:9]
+ boost/geometry/algorithms/detail/single_geometry.hpp [8:10]
+ boost/geometry/algorithms/detail/sub_range.hpp [8:10]
+ boost/geometry/algorithms/detail/throw_on_empty_input.hpp [13:15]
+ boost/geometry/algorithms/detail/touches/implementation.hpp [16:18]
+ boost/geometry/algorithms/detail/touches/interface.hpp [16:18]
+ boost/geometry/algorithms/detail/within/implementation.hpp [15:17]
+ boost/geometry/algorithms/detail/within/interface.hpp [15:17]
+ boost/geometry/algorithms/detail/within/multi_point.hpp [7:9]
+ boost/geometry/algorithms/detail/within/point_in_geometry.hpp [16:18]
+ boost/geometry/algorithms/detail/within/within_no_turns.hpp [13:15]
+ boost/geometry/algorithms/difference.hpp [10:12]
+ boost/geometry/algorithms/disjoint.hpp [17:19]
+ boost/geometry/algorithms/dispatch/disjoint.hpp [17:19]
+ boost/geometry/algorithms/dispatch/distance.hpp [16:18]
+ boost/geometry/algorithms/distance.hpp [16:18]
+ boost/geometry/algorithms/equals.hpp [17:19]
+ boost/geometry/algorithms/for_each.hpp [16:18]
+ boost/geometry/algorithms/intersection.hpp [10:12]
+ boost/geometry/algorithms/intersects.hpp [16:18]
+ boost/geometry/algorithms/is_convex.hpp [10:12]
+ boost/geometry/algorithms/length.hpp [16:18]
+ boost/geometry/algorithms/make.hpp [10:12]
+ boost/geometry/algorithms/not_implemented.hpp [15:17]
+ boost/geometry/algorithms/num_geometries.hpp [15:17]
+ boost/geometry/algorithms/num_interior_rings.hpp [16:18]
+ boost/geometry/algorithms/num_points.hpp [16:18]
+ boost/geometry/algorithms/overlaps.hpp [15:17]
+ boost/geometry/algorithms/perimeter.hpp [15:17]
+ boost/geometry/algorithms/point_on_surface.hpp [13:15]
+ boost/geometry/algorithms/relate.hpp [7:9]
+ boost/geometry/algorithms/relation.hpp [7:9]
+ boost/geometry/algorithms/remove_spikes.hpp [13:15]
+ boost/geometry/algorithms/reverse.hpp [11:13]
+ boost/geometry/algorithms/simplify.hpp [10:12]
+ boost/geometry/algorithms/sym_difference.hpp [11:13]
+ boost/geometry/algorithms/touches.hpp [16:18]
+ boost/geometry/algorithms/transform.hpp [11:13]
+ boost/geometry/algorithms/union.hpp [11:13]
+ boost/geometry/algorithms/unique.hpp [11:13]
+ boost/geometry/algorithms/within.hpp [15:17]
+ boost/geometry/arithmetic/arithmetic.hpp [10:12]
+ boost/geometry/arithmetic/cross_product.hpp [11:13]
+ boost/geometry/arithmetic/determinant.hpp [7:9]
+ boost/geometry/arithmetic/dot_product.hpp [10:12]
+ boost/geometry/arithmetic/normalize.hpp [6:8]
+ boost/geometry/core/access.hpp [10:12]
+ boost/geometry/core/assert.hpp [10:12]
+ boost/geometry/core/closure.hpp [15:17]
+ boost/geometry/core/coordinate_dimension.hpp [10:12]
+ boost/geometry/core/coordinate_system.hpp [10:12]
+ boost/geometry/core/coordinate_type.hpp [10:12]
+ boost/geometry/core/cs.hpp [15:17]
+ boost/geometry/core/exception.hpp [15:17]
+ boost/geometry/core/exterior_ring.hpp [10:12]
+ boost/geometry/core/geometry_id.hpp [10:12]
+ boost/geometry/core/interior_rings.hpp [10:12]
+ boost/geometry/core/interior_type.hpp [10:12]
+ boost/geometry/core/is_areal.hpp [10:12]
+ boost/geometry/core/mutable_range.hpp [10:12]
+ boost/geometry/core/point_order.hpp [15:17]
+ boost/geometry/core/point_type.hpp [10:12]
+ boost/geometry/core/radian_access.hpp [15:17]
+ boost/geometry/core/radius.hpp [15:17]
+ boost/geometry/core/reverse_dispatch.hpp [10:12]
+ boost/geometry/core/ring_type.hpp [15:17]
+ boost/geometry/core/tag.hpp [10:12]
+ boost/geometry/core/tag_cast.hpp [10:12]
+ boost/geometry/core/tags.hpp [15:17]
+ boost/geometry/core/topological_dimension.hpp [10:12]
+ boost/geometry/formulas/andoyer_inverse.hpp [9:11]
+ boost/geometry/formulas/area_formulas.hpp [8:10]
+ boost/geometry/formulas/authalic_radius_sqr.hpp [7:9]
+ boost/geometry/formulas/differential_quantities.hpp [7:9]
+ boost/geometry/formulas/eccentricity_sqr.hpp [7:9]
+ boost/geometry/formulas/elliptic_arc_length.hpp [7:9]
+ boost/geometry/formulas/flattening.hpp [7:9]
+ boost/geometry/formulas/geographic.hpp [6:8]
+ boost/geometry/formulas/gnomonic_intersection.hpp [7:9]
+ boost/geometry/formulas/gnomonic_spheroid.hpp [7:9]
+ boost/geometry/formulas/mean_radius.hpp [7:9]
+ boost/geometry/formulas/result_direct.hpp [7:9]
+ boost/geometry/formulas/result_inverse.hpp [7:9]
+ boost/geometry/formulas/sjoberg_intersection.hpp [7:9]
+ boost/geometry/formulas/spherical.hpp [7:9]
+ boost/geometry/formulas/thomas_direct.hpp [7:9]
+ boost/geometry/formulas/thomas_inverse.hpp [8:10]
+ boost/geometry/formulas/unit_spheroid.hpp [7:9]
+ boost/geometry/formulas/vertex_latitude.hpp [8:10]
+ boost/geometry/formulas/vertex_longitude.hpp [8:10]
+ boost/geometry/formulas/vincenty_direct.hpp [10:12]
+ boost/geometry/formulas/vincenty_inverse.hpp [11:13]
+ boost/geometry/geometries/adapted/boost_array.hpp [6:8]
+ boost/geometry/geometries/adapted/boost_fusion.hpp [11:13]
+ boost/geometry/geometries/adapted/boost_polygon.hpp [5:7]
+ boost/geometry/geometries/adapted/boost_polygon/box.hpp [5:7]
+ boost/geometry/geometries/adapted/boost_polygon/hole_iterator.hpp [5:7]
+ boost/geometry/geometries/adapted/boost_polygon/holes_proxy.hpp [5:7]
+ boost/geometry/geometries/adapted/boost_polygon/point.hpp [5:7]
+ boost/geometry/geometries/adapted/boost_polygon/polygon.hpp [5:7]
+ boost/geometry/geometries/adapted/boost_polygon/ring.hpp [5:7]
+ boost/geometry/geometries/adapted/boost_polygon/ring_proxy.hpp [5:7]
+ boost/geometry/geometries/adapted/boost_range/adjacent_filtered.hpp [5:7]
+ boost/geometry/geometries/adapted/boost_range/filtered.hpp [5:7]
+ boost/geometry/geometries/adapted/boost_range/reversed.hpp [5:7]
+ boost/geometry/geometries/adapted/boost_range/sliced.hpp [5:7]
+ boost/geometry/geometries/adapted/boost_range/strided.hpp [5:7]
+ boost/geometry/geometries/adapted/boost_range/uniqued.hpp [5:7]
+ boost/geometry/geometries/adapted/boost_tuple.hpp [10:12]
+ boost/geometry/geometries/adapted/c_array.hpp [10:12]
+ boost/geometry/geometries/adapted/std_array.hpp [7:9]
+ boost/geometry/geometries/adapted/std_pair_as_segment.hpp [10:12]
+ boost/geometry/geometries/box.hpp [10:12]
+ boost/geometry/geometries/concepts/box_concept.hpp [10:12]
+ boost/geometry/geometries/concepts/check.hpp [10:12]
+ boost/geometry/geometries/concepts/linestring_concept.hpp [10:12]
+ boost/geometry/geometries/concepts/multi_linestring_concept.hpp [10:12]
+ boost/geometry/geometries/concepts/multi_point_concept.hpp [10:12]
+ boost/geometry/geometries/concepts/multi_polygon_concept.hpp [10:12]
+ boost/geometry/geometries/concepts/point_concept.hpp [15:17]
+ boost/geometry/geometries/concepts/polygon_concept.hpp [10:12]
+ boost/geometry/geometries/concepts/ring_concept.hpp [10:12]
+ boost/geometry/geometries/concepts/segment_concept.hpp [10:12]
+ boost/geometry/geometries/geometries.hpp [10:12]
+ boost/geometry/geometries/linestring.hpp [11:13]
+ boost/geometry/geometries/multi_linestring.hpp [11:13]
+ boost/geometry/geometries/multi_point.hpp [11:13]
+ boost/geometry/geometries/multi_polygon.hpp [11:13]
+ boost/geometry/geometries/point.hpp [16:18]
+ boost/geometry/geometries/point_xy.hpp [10:12]
+ boost/geometry/geometries/polygon.hpp [11:13]
+ boost/geometry/geometries/register/box.hpp [10:12]
+ boost/geometry/geometries/register/linestring.hpp [10:12]
+ boost/geometry/geometries/register/multi_linestring.hpp [10:12]
+ boost/geometry/geometries/register/multi_point.hpp [10:12]
+ boost/geometry/geometries/register/multi_polygon.hpp [10:12]
+ boost/geometry/geometries/register/point.hpp [10:12]
+ boost/geometry/geometries/register/ring.hpp [10:12]
+ boost/geometry/geometries/register/segment.hpp [10:12]
+ boost/geometry/geometries/ring.hpp [11:13]
+ boost/geometry/geometries/segment.hpp [10:12]
+ boost/geometry/geometries/variant.hpp [10:12]
+ boost/geometry/geometry.hpp [16:18]
+ boost/geometry/index/adaptors/query.hpp [7:9]
+ boost/geometry/index/detail/algorithms/bounds.hpp [7:9]
+ boost/geometry/index/detail/algorithms/comparable_distance_centroid.hpp [7:9]
+ boost/geometry/index/detail/algorithms/comparable_distance_far.hpp [7:9]
+ boost/geometry/index/detail/algorithms/comparable_distance_near.hpp [7:9]
+ boost/geometry/index/detail/algorithms/content.hpp [7:9]
+ boost/geometry/index/detail/algorithms/diff_abs.hpp [7:9]
+ boost/geometry/index/detail/algorithms/intersection_content.hpp [7:9]
+ boost/geometry/index/detail/algorithms/is_valid.hpp [7:9]
+ boost/geometry/index/detail/algorithms/margin.hpp [7:9]
+ boost/geometry/index/detail/algorithms/minmaxdist.hpp [7:9]
+ boost/geometry/index/detail/algorithms/nth_element.hpp [5:7]
+ boost/geometry/index/detail/algorithms/path_intersection.hpp [7:9]
+ boost/geometry/index/detail/algorithms/segment_intersection.hpp [7:9]
+ boost/geometry/index/detail/algorithms/smallest_for_indexable.hpp [7:9]
+ boost/geometry/index/detail/algorithms/sum_for_indexable.hpp [7:9]
+ boost/geometry/index/detail/algorithms/union_content.hpp [8:10]
+ boost/geometry/index/detail/assert.hpp [5:7]
+ boost/geometry/index/detail/bounded_view.hpp [8:10]
+ boost/geometry/index/detail/config_begin.hpp [5:7]
+ boost/geometry/index/detail/config_end.hpp [5:7]
+ boost/geometry/index/detail/distance_predicates.hpp [8:10]
+ boost/geometry/index/detail/exception.hpp [5:7]
+ boost/geometry/index/detail/is_bounding_geometry.hpp [5:7]
+ boost/geometry/index/detail/is_indexable.hpp [5:7]
+ boost/geometry/index/detail/meta.hpp [5:7]
+ boost/geometry/index/detail/predicates.hpp [7:9]
+ boost/geometry/index/detail/rtree/adaptors.hpp [7:9]
+ boost/geometry/index/detail/rtree/iterators.hpp [7:9]
+ boost/geometry/index/detail/rtree/kmeans/kmeans.hpp [7:9]
+ boost/geometry/index/detail/rtree/kmeans/split.hpp [7:9]
+ boost/geometry/index/detail/rtree/linear/linear.hpp [7:9]
+ boost/geometry/index/detail/rtree/linear/redistribute_elements.hpp [8:10]
+ boost/geometry/index/detail/rtree/node/concept.hpp [7:9]
+ boost/geometry/index/detail/rtree/node/node.hpp [7:9]
+ boost/geometry/index/detail/rtree/node/node_elements.hpp [7:9]
+ boost/geometry/index/detail/rtree/node/pairs.hpp [7:9]
+ boost/geometry/index/detail/rtree/node/scoped_deallocator.hpp [7:9]
+ boost/geometry/index/detail/rtree/node/subtree_destroyer.hpp [7:9]
+ boost/geometry/index/detail/rtree/node/variant_dynamic.hpp [7:9]
+ boost/geometry/index/detail/rtree/node/variant_static.hpp [7:9]
+ boost/geometry/index/detail/rtree/node/variant_visitor.hpp [7:9]
+ boost/geometry/index/detail/rtree/node/weak_dynamic.hpp [7:9]
+ boost/geometry/index/detail/rtree/node/weak_static.hpp [7:9]
+ boost/geometry/index/detail/rtree/node/weak_visitor.hpp [7:9]
+ boost/geometry/index/detail/rtree/options.hpp [7:9]
+ boost/geometry/index/detail/rtree/pack_create.hpp [7:9]
+ boost/geometry/index/detail/rtree/quadratic/quadratic.hpp [7:9]
+ boost/geometry/index/detail/rtree/quadratic/redistribute_elements.hpp [7:9]
+ boost/geometry/index/detail/rtree/query_iterators.hpp [7:9]
+ boost/geometry/index/detail/rtree/rstar/choose_next_node.hpp [7:9]
+ boost/geometry/index/detail/rtree/rstar/insert.hpp [7:9]
+ boost/geometry/index/detail/rtree/rstar/redistribute_elements.hpp [7:9]
+ boost/geometry/index/detail/rtree/rstar/rstar.hpp [7:9]
+ boost/geometry/index/detail/rtree/utilities/are_boxes_ok.hpp [7:9]
+ boost/geometry/index/detail/rtree/utilities/are_counts_ok.hpp [7:9]
+ boost/geometry/index/detail/rtree/utilities/are_levels_ok.hpp [7:9]
+ boost/geometry/index/detail/rtree/utilities/gl_draw.hpp [7:9]
+ boost/geometry/index/detail/rtree/utilities/print.hpp [7:9]
+ boost/geometry/index/detail/rtree/utilities/statistics.hpp [8:10]
+ boost/geometry/index/detail/rtree/utilities/view.hpp [7:9]
+ boost/geometry/index/detail/rtree/visitors/children_box.hpp [7:9]
+ boost/geometry/index/detail/rtree/visitors/copy.hpp [7:9]
+ boost/geometry/index/detail/rtree/visitors/count.hpp [7:9]
+ boost/geometry/index/detail/rtree/visitors/destroy.hpp [7:9]
+ boost/geometry/index/detail/rtree/visitors/distance_query.hpp [7:9]
+ boost/geometry/index/detail/rtree/visitors/insert.hpp [7:9]
+ boost/geometry/index/detail/rtree/visitors/is_leaf.hpp [7:9]
+ boost/geometry/index/detail/rtree/visitors/iterator.hpp [7:9]
+ boost/geometry/index/detail/rtree/visitors/remove.hpp [7:9]
+ boost/geometry/index/detail/rtree/visitors/spatial_query.hpp [7:9]
+ boost/geometry/index/detail/serialization.hpp [5:7]
+ boost/geometry/index/detail/tags.hpp [7:9]
+ boost/geometry/index/detail/translator.hpp [5:7]
+ boost/geometry/index/detail/tuples.hpp [5:7]
+ boost/geometry/index/detail/utilities.hpp [5:7]
+ boost/geometry/index/detail/varray.hpp [6:8]
+ boost/geometry/index/detail/varray_detail.hpp [8:10]
+ boost/geometry/index/distance_predicates.hpp [7:9]
+ boost/geometry/index/equal_to.hpp [5:7]
+ boost/geometry/index/indexable.hpp [5:7]
+ boost/geometry/index/inserter.hpp [7:9]
+ boost/geometry/index/parameters.hpp [7:9]
+ boost/geometry/index/predicates.hpp [7:9]
+ boost/geometry/index/rtree.hpp [8:10]
+ boost/geometry/io/dsv/write.hpp [11:13]
+ boost/geometry/io/io.hpp [10:12]
+ boost/geometry/io/svg/svg_mapper.hpp [14:16]
+ boost/geometry/io/svg/write.hpp [14:16]
+ boost/geometry/io/svg/write_svg.hpp [14:16]
+ boost/geometry/io/svg/write_svg_multi.hpp [13:15]
+ boost/geometry/io/wkt/detail/prefix.hpp [10:12]
+ boost/geometry/io/wkt/detail/wkt_multi.hpp [10:12]
+ boost/geometry/io/wkt/read.hpp [16:18]
+ boost/geometry/io/wkt/stream.hpp [10:12]
+ boost/geometry/io/wkt/wkt.hpp [10:12]
+ boost/geometry/io/wkt/write.hpp [16:18]
+ boost/geometry/iterators/base.hpp [10:12]
+ boost/geometry/iterators/closing_iterator.hpp [10:12]
+ boost/geometry/iterators/ever_circling_iterator.hpp [10:12]
+ boost/geometry/multi/algorithms/append.hpp [16:18]
+ boost/geometry/multi/algorithms/area.hpp [10:12]
+ boost/geometry/multi/algorithms/centroid.hpp [10:12]
+ boost/geometry/multi/algorithms/clear.hpp [10:12]
+ boost/geometry/multi/algorithms/convert.hpp [10:12]
+ boost/geometry/multi/algorithms/correct.hpp [10:12]
+ boost/geometry/multi/algorithms/covered_by.hpp [14:16]
+ boost/geometry/multi/algorithms/detail/extreme_points.hpp [8:10]
+ boost/geometry/multi/algorithms/detail/for_each_range.hpp [10:12]
+ boost/geometry/multi/algorithms/detail/modify.hpp [10:12]
+ boost/geometry/multi/algorithms/detail/modify_with_predicate.hpp [10:12]
+ boost/geometry/multi/algorithms/detail/multi_sum.hpp [10:12]
+ boost/geometry/multi/algorithms/detail/overlay/copy_segment_point.hpp [8:10]
+ boost/geometry/multi/algorithms/detail/overlay/copy_segments.hpp [5:7]
+ boost/geometry/multi/algorithms/detail/overlay/get_ring.hpp [5:7]
+ boost/geometry/multi/algorithms/detail/overlay/get_turns.hpp [5:7]
+ boost/geometry/multi/algorithms/detail/overlay/self_turn_points.hpp [5:7]
+ boost/geometry/multi/algorithms/detail/point_on_border.hpp [13:15]
+ boost/geometry/multi/algorithms/detail/sections/range_by_section.hpp [13:15]
+ boost/geometry/multi/algorithms/detail/sections/sectionalize.hpp [13:15]
+ boost/geometry/multi/algorithms/disjoint.hpp [12:14]
+ boost/geometry/multi/algorithms/distance.hpp [15:17]
+ boost/geometry/multi/algorithms/envelope.hpp [10:12]
+ boost/geometry/multi/algorithms/equals.hpp [10:12]
+ boost/geometry/multi/algorithms/for_each.hpp [10:12]
+ boost/geometry/multi/algorithms/intersection.hpp [10:12]
+ boost/geometry/multi/algorithms/length.hpp [10:12]
+ boost/geometry/multi/algorithms/num_geometries.hpp [10:12]
+ boost/geometry/multi/algorithms/num_interior_rings.hpp [15:17]
+ boost/geometry/multi/algorithms/num_points.hpp [15:17]
+ boost/geometry/multi/algorithms/perimeter.hpp [10:12]
+ boost/geometry/multi/algorithms/remove_spikes.hpp [8:10]
+ boost/geometry/multi/algorithms/reverse.hpp [10:12]
+ boost/geometry/multi/algorithms/simplify.hpp [10:12]
+ boost/geometry/multi/algorithms/transform.hpp [10:12]
+ boost/geometry/multi/algorithms/unique.hpp [10:12]
+ boost/geometry/multi/algorithms/within.hpp [14:16]
+ boost/geometry/multi/core/closure.hpp [10:12]
+ boost/geometry/multi/core/geometry_id.hpp [10:12]
+ boost/geometry/multi/core/interior_rings.hpp [10:12]
+ boost/geometry/multi/core/is_areal.hpp [10:12]
+ boost/geometry/multi/core/point_order.hpp [10:12]
+ boost/geometry/multi/core/point_type.hpp [10:12]
+ boost/geometry/multi/core/ring_type.hpp [13:15]
+ boost/geometry/multi/core/tags.hpp [10:12]
+ boost/geometry/multi/core/topological_dimension.hpp [10:12]
+ boost/geometry/multi/geometries/concepts/check.hpp [10:12]
+ boost/geometry/multi/geometries/concepts/multi_linestring_concept.hpp [10:12]
+ boost/geometry/multi/geometries/concepts/multi_point_concept.hpp [10:12]
+ boost/geometry/multi/geometries/concepts/multi_polygon_concept.hpp [10:12]
+ boost/geometry/multi/geometries/multi_geometries.hpp [10:12]
+ boost/geometry/multi/geometries/multi_linestring.hpp [10:12]
+ boost/geometry/multi/geometries/multi_point.hpp [10:12]
+ boost/geometry/multi/geometries/multi_polygon.hpp [10:12]
+ boost/geometry/multi/geometries/register/multi_linestring.hpp [10:12]
+ boost/geometry/multi/geometries/register/multi_point.hpp [10:12]
+ boost/geometry/multi/geometries/register/multi_polygon.hpp [10:12]
+ boost/geometry/multi/io/dsv/write.hpp [10:12]
+ boost/geometry/multi/io/wkt/detail/prefix.hpp [10:12]
+ boost/geometry/multi/io/wkt/read.hpp [10:12]
+ boost/geometry/multi/io/wkt/wkt.hpp [10:12]
+ boost/geometry/multi/io/wkt/write.hpp [10:12]
+ boost/geometry/multi/multi.hpp [13:15]
+ boost/geometry/multi/strategies/cartesian/centroid_average.hpp [10:12]
+ boost/geometry/multi/views/detail/range_type.hpp [10:12]
+ boost/geometry/policies/compare.hpp [10:12]
+ boost/geometry/policies/disjoint_interrupt_policy.hpp [17:19]
+ boost/geometry/policies/relate/direction.hpp [5:7]
+ boost/geometry/policies/relate/intersection_points.hpp [9:11]
+ boost/geometry/policies/relate/intersection_ratios.hpp [5:7]
+ boost/geometry/policies/relate/tupled.hpp [5:7]
+ boost/geometry/policies/robustness/get_rescale_policy.hpp [13:15]
+ boost/geometry/policies/robustness/no_rescale_policy.hpp [8:10]
+ boost/geometry/policies/robustness/rescale_policy.hpp [12:14]
+ boost/geometry/policies/robustness/robust_point_type.hpp [8:10]
+ boost/geometry/policies/robustness/robust_type.hpp [8:10]
+ boost/geometry/policies/robustness/segment_ratio.hpp [9:11]
+ boost/geometry/policies/robustness/segment_ratio_type.hpp [8:10]
+ boost/geometry/srs/epsg.hpp [6:8]
+ boost/geometry/srs/esri.hpp [6:8]
+ boost/geometry/srs/iau2000.hpp [6:8]
+ boost/geometry/srs/projection.hpp [9:11]
+ boost/geometry/srs/projections/code.hpp [6:8]
+ boost/geometry/srs/projections/epsg.hpp [9:11]
+ boost/geometry/srs/projections/epsg_params.hpp [6:8]
+ boost/geometry/srs/projections/epsg_traits.hpp [9:11]
+ boost/geometry/srs/projections/esri.hpp [6:8]
+ boost/geometry/srs/projections/esri_params.hpp [6:8]
+ boost/geometry/srs/projections/esri_traits.hpp [6:8]
+ boost/geometry/srs/projections/exception.hpp [9:11]
+ boost/geometry/srs/projections/factory.hpp [9:11]
+ boost/geometry/srs/projections/iau2000.hpp [6:8]
+ boost/geometry/srs/projections/iau2000_params.hpp [6:8]
+ boost/geometry/srs/projections/iau2000_traits.hpp [6:8]
+ boost/geometry/srs/projections/impl/aasincos.hpp [6:8]
+ boost/geometry/srs/projections/impl/adjlon.hpp [6:8]
+ boost/geometry/srs/projections/impl/base_dynamic.hpp [9:11]
+ boost/geometry/srs/projections/impl/base_static.hpp [9:11]
+ boost/geometry/srs/projections/impl/dms_parser.hpp [9:11]
+ boost/geometry/srs/projections/impl/factory_entry.hpp [9:11]
+ boost/geometry/srs/projections/impl/function_overloads.hpp [9:11]
+ boost/geometry/srs/projections/impl/geocent.hpp [8:10]
+ boost/geometry/srs/projections/impl/pj_auth.hpp [10:12]
+ boost/geometry/srs/projections/impl/pj_datum_set.hpp [10:12]
+ boost/geometry/srs/projections/impl/pj_datums.hpp [10:12]
+ boost/geometry/srs/projections/impl/pj_ell_set.hpp [10:12]
+ boost/geometry/srs/projections/impl/pj_ellps.hpp [10:12]
+ boost/geometry/srs/projections/impl/pj_fwd.hpp [10:12]
+ boost/geometry/srs/projections/impl/pj_gauss.hpp [10:12]
+ boost/geometry/srs/projections/impl/pj_init.hpp [10:12]
+ boost/geometry/srs/projections/impl/pj_inv.hpp [10:12]
+ boost/geometry/srs/projections/impl/pj_mlfn.hpp [10:12]
+ boost/geometry/srs/projections/impl/pj_msfn.hpp [10:12]
+ boost/geometry/srs/projections/impl/pj_param.hpp [10:12]
+ boost/geometry/srs/projections/impl/pj_phi2.hpp [10:12]
+ boost/geometry/srs/projections/impl/pj_qsfn.hpp [10:12]
+ boost/geometry/srs/projections/impl/pj_strerrno.hpp [8:10]
+ boost/geometry/srs/projections/impl/pj_transform.hpp [8:10]
+ boost/geometry/srs/projections/impl/pj_tsfn.hpp [10:12]
+ boost/geometry/srs/projections/impl/pj_units.hpp [10:12]
+ boost/geometry/srs/projections/impl/pj_zpoly1.hpp [10:12]
+ boost/geometry/srs/projections/impl/proj_mdist.hpp [6:8]
+ boost/geometry/srs/projections/impl/projects.hpp [10:12]
+ boost/geometry/srs/projections/invalid_point.hpp [6:8]
+ boost/geometry/srs/projections/par4.hpp [6:8]
+ boost/geometry/srs/projections/proj/aea.hpp [13:15]
+ boost/geometry/srs/projections/proj/aeqd.hpp [13:15]
+ boost/geometry/srs/projections/proj/airy.hpp [13:15]
+ boost/geometry/srs/projections/proj/aitoff.hpp [13:15]
+ boost/geometry/srs/projections/proj/august.hpp [13:15]
+ boost/geometry/srs/projections/proj/bacon.hpp [13:15]
+ boost/geometry/srs/projections/proj/bipc.hpp [13:15]
+ boost/geometry/srs/projections/proj/boggs.hpp [13:15]
+ boost/geometry/srs/projections/proj/bonne.hpp [13:15]
+ boost/geometry/srs/projections/proj/cass.hpp [13:15]
+ boost/geometry/srs/projections/proj/cc.hpp [13:15]
+ boost/geometry/srs/projections/proj/cea.hpp [13:15]
+ boost/geometry/srs/projections/proj/chamb.hpp [13:15]
+ boost/geometry/srs/projections/proj/collg.hpp [13:15]
+ boost/geometry/srs/projections/proj/crast.hpp [13:15]
+ boost/geometry/srs/projections/proj/denoy.hpp [13:15]
+ boost/geometry/srs/projections/proj/eck1.hpp [13:15]
+ boost/geometry/srs/projections/proj/eck2.hpp [13:15]
+ boost/geometry/srs/projections/proj/eck3.hpp [13:15]
+ boost/geometry/srs/projections/proj/eck4.hpp [13:15]
+ boost/geometry/srs/projections/proj/eck5.hpp [13:15]
+ boost/geometry/srs/projections/proj/eqc.hpp [13:15]
+ boost/geometry/srs/projections/proj/eqdc.hpp [13:15]
+ boost/geometry/srs/projections/proj/etmerc.hpp [13:15]
+ boost/geometry/srs/projections/proj/fahey.hpp [13:15]
+ boost/geometry/srs/projections/proj/fouc_s.hpp [13:15]
+ boost/geometry/srs/projections/proj/gall.hpp [13:15]
+ boost/geometry/srs/projections/proj/geocent.hpp [13:15]
+ boost/geometry/srs/projections/proj/geos.hpp [13:15]
+ boost/geometry/srs/projections/proj/gins8.hpp [13:15]
+ boost/geometry/srs/projections/proj/gn_sinu.hpp [13:15]
+ boost/geometry/srs/projections/proj/gnom.hpp [13:15]
+ boost/geometry/srs/projections/proj/goode.hpp [13:15]
+ boost/geometry/srs/projections/proj/hammer.hpp [13:15]
+ boost/geometry/srs/projections/proj/hatano.hpp [13:15]
+ boost/geometry/srs/projections/proj/healpix.hpp [13:15]
+ boost/geometry/srs/projections/proj/igh.hpp [13:15]
+ boost/geometry/srs/projections/proj/imw_p.hpp [13:15]
+ boost/geometry/srs/projections/proj/isea.hpp [13:15]
+ boost/geometry/srs/projections/proj/krovak.hpp [13:15]
+ boost/geometry/srs/projections/proj/labrd.hpp [13:15]
+ boost/geometry/srs/projections/proj/laea.hpp [13:15]
+ boost/geometry/srs/projections/proj/lagrng.hpp [13:15]
+ boost/geometry/srs/projections/proj/larr.hpp [13:15]
+ boost/geometry/srs/projections/proj/lask.hpp [13:15]
+ boost/geometry/srs/projections/proj/latlong.hpp [13:15]
+ boost/geometry/srs/projections/proj/lcc.hpp [13:15]
+ boost/geometry/srs/projections/proj/lcca.hpp [13:15]
+ boost/geometry/srs/projections/proj/loxim.hpp [13:15]
+ boost/geometry/srs/projections/proj/lsat.hpp [13:15]
+ boost/geometry/srs/projections/proj/mbt_fps.hpp [13:15]
+ boost/geometry/srs/projections/proj/mbtfpp.hpp [13:15]
+ boost/geometry/srs/projections/proj/mbtfpq.hpp [13:15]
+ boost/geometry/srs/projections/proj/merc.hpp [13:15]
+ boost/geometry/srs/projections/proj/mill.hpp [13:15]
+ boost/geometry/srs/projections/proj/mod_ster.hpp [13:15]
+ boost/geometry/srs/projections/proj/moll.hpp [13:15]
+ boost/geometry/srs/projections/proj/natearth.hpp [13:15]
+ boost/geometry/srs/projections/proj/nell.hpp [13:15]
+ boost/geometry/srs/projections/proj/nell_h.hpp [13:15]
+ boost/geometry/srs/projections/proj/nocol.hpp [13:15]
+ boost/geometry/srs/projections/proj/nsper.hpp [13:15]
+ boost/geometry/srs/projections/proj/nzmg.hpp [13:15]
+ boost/geometry/srs/projections/proj/ob_tran.hpp [13:15]
+ boost/geometry/srs/projections/proj/ocea.hpp [13:15]
+ boost/geometry/srs/projections/proj/oea.hpp [13:15]
+ boost/geometry/srs/projections/proj/omerc.hpp [13:15]
+ boost/geometry/srs/projections/proj/ortho.hpp [13:15]
+ boost/geometry/srs/projections/proj/poly.hpp [13:15]
+ boost/geometry/srs/projections/proj/putp2.hpp [13:15]
+ boost/geometry/srs/projections/proj/putp3.hpp [13:15]
+ boost/geometry/srs/projections/proj/putp4p.hpp [13:15]
+ boost/geometry/srs/projections/proj/putp5.hpp [13:15]
+ boost/geometry/srs/projections/proj/putp6.hpp [13:15]
+ boost/geometry/srs/projections/proj/qsc.hpp [13:15]
+ boost/geometry/srs/projections/proj/robin.hpp [13:15]
+ boost/geometry/srs/projections/proj/rouss.hpp [13:15]
+ boost/geometry/srs/projections/proj/rpoly.hpp [13:15]
+ boost/geometry/srs/projections/proj/sconics.hpp [13:15]
+ boost/geometry/srs/projections/proj/somerc.hpp [13:15]
+ boost/geometry/srs/projections/proj/stere.hpp [13:15]
+ boost/geometry/srs/projections/proj/sterea.hpp [13:15]
+ boost/geometry/srs/projections/proj/sts.hpp [13:15]
+ boost/geometry/srs/projections/proj/tcc.hpp [13:15]
+ boost/geometry/srs/projections/proj/tcea.hpp [13:15]
+ boost/geometry/srs/projections/proj/tmerc.hpp [13:15]
+ boost/geometry/srs/projections/proj/tpeqd.hpp [13:15]
+ boost/geometry/srs/projections/proj/urm5.hpp [13:15]
+ boost/geometry/srs/projections/proj/urmfps.hpp [13:15]
+ boost/geometry/srs/projections/proj/vandg.hpp [13:15]
+ boost/geometry/srs/projections/proj/vandg2.hpp [13:15]
+ boost/geometry/srs/projections/proj/vandg4.hpp [13:15]
+ boost/geometry/srs/projections/proj/wag2.hpp [13:15]
+ boost/geometry/srs/projections/proj/wag3.hpp [13:15]
+ boost/geometry/srs/projections/proj/wag7.hpp [13:15]
+ boost/geometry/srs/projections/proj/wink1.hpp [13:15]
+ boost/geometry/srs/projections/proj/wink2.hpp [13:15]
+ boost/geometry/srs/projections/proj4.hpp [6:8]
+ boost/geometry/srs/projections/srid_traits.hpp [6:8]
+ boost/geometry/srs/sphere.hpp [15:17]
+ boost/geometry/srs/spheroid.hpp [15:17]
+ boost/geometry/srs/srs.hpp [15:17]
+ boost/geometry/srs/transformation.hpp [6:8]
+ boost/geometry/strategies/agnostic/buffer_distance_asymmetric.hpp [5:7]
+ boost/geometry/strategies/agnostic/buffer_distance_symmetric.hpp [5:7]
+ boost/geometry/strategies/agnostic/hull_graham_andrew.hpp [13:15]
+ boost/geometry/strategies/agnostic/point_in_box_by_side.hpp [10:12]
+ boost/geometry/strategies/agnostic/point_in_point.hpp [7:9]
+ boost/geometry/strategies/agnostic/point_in_poly_oriented_winding.hpp [8:10]
+ boost/geometry/strategies/agnostic/point_in_poly_winding.hpp [13:15]
+ boost/geometry/strategies/agnostic/simplify_douglas_peucker.hpp [14:16]
+ boost/geometry/strategies/area.hpp [11:13]
+ boost/geometry/strategies/area_result.hpp [5:7]
+ boost/geometry/strategies/azimuth.hpp [7:9]
+ boost/geometry/strategies/buffer.hpp [5:7]
+ boost/geometry/strategies/cartesian/area.hpp [16:18]
+ boost/geometry/strategies/cartesian/area_surveyor.hpp [16:18]
+ boost/geometry/strategies/cartesian/azimuth.hpp [7:9]
+ boost/geometry/strategies/cartesian/box_in_box.hpp [16:18]
+ boost/geometry/strategies/cartesian/buffer_end_flat.hpp [5:7]
+ boost/geometry/strategies/cartesian/buffer_end_round.hpp [10:12]
+ boost/geometry/strategies/cartesian/buffer_join_miter.hpp [5:7]
+ boost/geometry/strategies/cartesian/buffer_join_round.hpp [10:12]
+ boost/geometry/strategies/cartesian/buffer_join_round_by_divide.hpp [5:7]
+ boost/geometry/strategies/cartesian/buffer_point_circle.hpp [10:12]
+ boost/geometry/strategies/cartesian/buffer_point_square.hpp [3:5]
+ boost/geometry/strategies/cartesian/buffer_side_straight.hpp [3:5]
+ boost/geometry/strategies/cartesian/centroid_average.hpp [16:18]
+ boost/geometry/strategies/cartesian/centroid_bashein_detmer.hpp [15:17]
+ boost/geometry/strategies/cartesian/centroid_weighted_length.hpp [14:16]
+ boost/geometry/strategies/cartesian/disjoint_segment_box.hpp [15:17]
+ boost/geometry/strategies/cartesian/distance_projected_point.hpp [15:17]
+ boost/geometry/strategies/cartesian/distance_projected_point_ax.hpp [16:18]
+ boost/geometry/strategies/cartesian/distance_pythagoras.hpp [10:12]
+ boost/geometry/strategies/cartesian/distance_pythagoras_box_box.hpp [15:17]
+ boost/geometry/strategies/cartesian/distance_pythagoras_point_box.hpp [15:17]
+ boost/geometry/strategies/cartesian/envelope_segment.hpp [7:9]
+ boost/geometry/strategies/cartesian/intersection.hpp [12:14]
+ boost/geometry/strategies/cartesian/point_in_box.hpp [15:17]
+ boost/geometry/strategies/cartesian/point_in_poly_crossings_multiply.hpp [10:12]
+ boost/geometry/strategies/cartesian/point_in_poly_franklin.hpp [10:12]
+ boost/geometry/strategies/cartesian/point_in_poly_winding.hpp [13:15]
+ boost/geometry/strategies/cartesian/side_by_triangle.hpp [16:18]
+ boost/geometry/strategies/cartesian/side_of_intersection.hpp [10:12]
+ boost/geometry/strategies/centroid.hpp [10:12]
+ boost/geometry/strategies/compare.hpp [15:17]
+ boost/geometry/strategies/concepts/area_concept.hpp [11:13]
+ boost/geometry/strategies/concepts/centroid_concept.hpp [10:12]
+ boost/geometry/strategies/concepts/convex_hull_concept.hpp [15:17]
+ boost/geometry/strategies/concepts/distance_concept.hpp [15:17]
+ boost/geometry/strategies/concepts/segment_intersect_concept.hpp [10:12]
+ boost/geometry/strategies/concepts/simplify_concept.hpp [10:12]
+ boost/geometry/strategies/concepts/within_concept.hpp [10:12]
+ boost/geometry/strategies/convex_hull.hpp [10:12]
+ boost/geometry/strategies/covered_by.hpp [15:17]
+ boost/geometry/strategies/default_area_result.hpp [11:13]
+ boost/geometry/strategies/default_comparable_distance_result.hpp [15:17]
+ boost/geometry/strategies/default_distance_result.hpp [15:17]
+ boost/geometry/strategies/default_length_result.hpp [15:17]
+ boost/geometry/strategies/default_strategy.hpp [10:12]
+ boost/geometry/strategies/disjoint.hpp [7:9]
+ boost/geometry/strategies/distance.hpp [15:17]
+ boost/geometry/strategies/distance_result.hpp [17:19]
+ boost/geometry/strategies/envelope.hpp [7:9]
+ boost/geometry/strategies/geographic/area.hpp [9:11]
+ boost/geometry/strategies/geographic/azimuth.hpp [7:9]
+ boost/geometry/strategies/geographic/disjoint_segment_box.hpp [8:10]
+ boost/geometry/strategies/geographic/distance.hpp [11:13]
+ boost/geometry/strategies/geographic/distance_andoyer.hpp [10:12]
+ boost/geometry/strategies/geographic/distance_cross_track.hpp [7:9]
+ boost/geometry/strategies/geographic/distance_cross_track_box_box.hpp [8:10]
+ boost/geometry/strategies/geographic/distance_cross_track_point_box.hpp [8:10]
+ boost/geometry/strategies/geographic/distance_thomas.hpp [10:12]
+ boost/geometry/strategies/geographic/distance_vincenty.hpp [10:12]
+ boost/geometry/strategies/geographic/envelope_segment.hpp [7:9]
+ boost/geometry/strategies/geographic/intersection.hpp [8:10]
+ boost/geometry/strategies/geographic/intersection_elliptic.hpp [6:8]
+ boost/geometry/strategies/geographic/mapping_ssf.hpp [10:12]
+ boost/geometry/strategies/geographic/parameters.hpp [6:8]
+ boost/geometry/strategies/geographic/point_in_poly_winding.hpp [6:8]
+ boost/geometry/strategies/geographic/side.hpp [10:12]
+ boost/geometry/strategies/geographic/side_andoyer.hpp [10:12]
+ boost/geometry/strategies/geographic/side_thomas.hpp [10:12]
+ boost/geometry/strategies/geographic/side_vincenty.hpp [10:12]
+ boost/geometry/strategies/intersection.hpp [6:8]
+ boost/geometry/strategies/intersection_result.hpp [9:11]
+ boost/geometry/strategies/intersection_strategies.hpp [9:11]
+ boost/geometry/strategies/relate.hpp [6:8]
+ boost/geometry/strategies/side.hpp [10:12]
+ boost/geometry/strategies/side_info.hpp [10:12]
+ boost/geometry/strategies/spherical/area.hpp [9:11]
+ boost/geometry/strategies/spherical/azimuth.hpp [7:9]
+ boost/geometry/strategies/spherical/compare.hpp [10:12]
+ boost/geometry/strategies/spherical/disjoint_segment_box.hpp [8:10]
+ boost/geometry/strategies/spherical/distance_cross_track.hpp [11:13]
+ boost/geometry/strategies/spherical/distance_cross_track_box_box.hpp [7:9]
+ boost/geometry/strategies/spherical/distance_cross_track_point_box.hpp [14:16]
+ boost/geometry/strategies/spherical/distance_haversine.hpp [11:13]
+ boost/geometry/strategies/spherical/envelope_segment.hpp [7:9]
+ boost/geometry/strategies/spherical/get_radius.hpp [9:11]
+ boost/geometry/strategies/spherical/intersection.hpp [8:10]
+ boost/geometry/strategies/spherical/point_in_poly_winding.hpp [13:15]
+ boost/geometry/strategies/spherical/side_by_cross_track.hpp [11:13]
+ boost/geometry/strategies/spherical/ssf.hpp [9:11]
+ boost/geometry/strategies/strategies.hpp [17:19]
+ boost/geometry/strategies/strategy_transform.hpp [15:17]
+ boost/geometry/strategies/tags.hpp [10:12]
+ boost/geometry/strategies/transform.hpp [10:12]
+ boost/geometry/strategies/transform/inverse_transformer.hpp [10:12]
+ boost/geometry/strategies/transform/map_transformer.hpp [10:12]
+ boost/geometry/strategies/transform/matrix_transformers.hpp [15:17]
+ boost/geometry/strategies/transform/srs_transformer.hpp [9:11]
+ boost/geometry/strategies/within.hpp [15:17]
+ boost/geometry/util/add_const_if_c.hpp [10:12]
+ boost/geometry/util/bare_type.hpp [12:14]
+ boost/geometry/util/calculation_type.hpp [7:9]
+ boost/geometry/util/closure_as_bool.hpp [10:12]
+ boost/geometry/util/combine_if.hpp [13:15]
+ boost/geometry/util/compress_variant.hpp [15:17]
+ boost/geometry/util/condition.hpp [7:9]
+ boost/geometry/util/coordinate_cast.hpp [10:12]
+ boost/geometry/util/for_each_coordinate.hpp [10:12]
+ boost/geometry/util/has_infinite_coordinate.hpp [7:9]
+ boost/geometry/util/has_nan_coordinate.hpp [8:10]
+ boost/geometry/util/has_non_finite_coordinate.hpp [7:9]
+ boost/geometry/util/math.hpp [16:18]
+ boost/geometry/util/order_as_direction.hpp [10:12]
+ boost/geometry/util/parameter_type_of.hpp [10:12]
+ boost/geometry/util/promote_floating_point.hpp [10:12]
+ boost/geometry/util/range.hpp [10:12]
+ boost/geometry/util/rational.hpp [10:12]
+ boost/geometry/util/select_calculation_type.hpp [15:17]
+ boost/geometry/util/select_coordinate_type.hpp [15:17]
+ boost/geometry/util/select_most_precise.hpp [15:17]
+ boost/geometry/util/select_sequence_element.hpp [5:7]
+ boost/geometry/util/transform_variant.hpp [15:17]
+ boost/geometry/views/box_view.hpp [10:12]
+ boost/geometry/views/closeable_view.hpp [10:12]
+ boost/geometry/views/detail/indexed_point_view.hpp [13:15]
+ boost/geometry/views/detail/normalized_view.hpp [13:15]
+ boost/geometry/views/detail/points_view.hpp [10:12]
+ boost/geometry/views/detail/range_type.hpp [10:12]
+ boost/geometry/views/identity_view.hpp [10:12]
+ boost/geometry/views/reversible_view.hpp [10:12]
+ boost/geometry/views/segment_view.hpp [10:12]
+ boost/polygon/interval_concept.hpp [8:10]
+ boost/polygon/interval_data.hpp [8:10]
+ boost/polygon/interval_traits.hpp [8:10]
+ boost/polygon/point_concept.hpp [8:10]
+ boost/polygon/point_data.hpp [8:10]
+ boost/polygon/point_traits.hpp [8:10]
+ boost/polygon/segment_concept.hpp [8:10]
+ boost/polygon/segment_data.hpp [8:10]
+ boost/polygon/segment_traits.hpp [8:10]
+ boost/polygon/transform.hpp [8:10]
+
+KEEP BSL-1.0 0b7aba75ea29f82495a3ea92aa29dffb
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/version.hpp at line 5
+ License text:
+ // (C) Copyright John maddock 1999. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/version.hpp [3:5]
+
+KEEP BSL-1.0 0b90e853579764b76ff6265207710247
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/integer_fwd.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/integer_fwd.hpp [3:5]
+
+SKIP LicenseRef-scancode-other-permissive 0bee3b00e8750de5f3ce9c579c53bed5
+BELONGS ya.make
+ License text:
+ // in supporting documentation. William E. Kempf makes no representations
+ // about the suitability of this software for any purpose.
+ // It is provided "as is" without express or implied warranty.
+ Scancode info:
+ Original SPDX id: LicenseRef-scancode-other-permissive
+ Score : 100.00
+ Match type : NOTICE
+ Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/other-permissive.LICENSE
+ Files with this license:
+ boost/interprocess/sync/interprocess_recursive_mutex.hpp [22:24]
+ boost/interprocess/sync/posix/mutex.hpp [22:24]
+ boost/interprocess/sync/posix/recursive_mutex.hpp [22:24]
+ boost/interprocess/sync/spin/recursive_mutex.hpp [22:24]
+
+KEEP BSL-1.0 0bfa54b6d82598f1c5f117adedeec37c
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/algorithm/algorithm.hpp at line 5, boost/algorithm/clamp.hpp at line 5, boost/algorithm/cxx11/all_of.hpp at line 5, boost/algorithm/cxx11/any_of.hpp at line 5, boost/algorithm/cxx11/copy_if.hpp at line 5, boost/algorithm/cxx11/copy_n.hpp at line 5, boost/algorithm/cxx11/find_if_not.hpp at line 5, boost/algorithm/cxx11/iota.hpp at line 5, boost/algorithm/cxx11/is_partitioned.hpp at line 5, boost/algorithm/cxx11/is_permutation.hpp at line 5, boost/algorithm/cxx11/none_of.hpp at line 5, boost/algorithm/cxx11/one_of.hpp at line 5, boost/algorithm/cxx11/partition_copy.hpp at line 5, boost/algorithm/cxx11/partition_point.hpp at line 5, boost/algorithm/cxx14/equal.hpp at line 5, boost/algorithm/cxx14/is_permutation.hpp at line 5, boost/algorithm/gather.hpp at line 5, boost/algorithm/hex.hpp at line 5, boost/algorithm/is_partitioned_until.hpp at line 5, boost/algorithm/searching/boyer_moore.hpp at line 5, boost/algorithm/searching/boyer_moore_horspool.hpp at line 5, boost/algorithm/searching/detail/bm_traits.hpp at line 5, boost/algorithm/searching/detail/debugging.hpp at line 5, boost/algorithm/searching/knuth_morris_pratt.hpp at line 5, boost/algorithm/sort_subrange.hpp at line 5, boost/utility/string_ref.hpp at line 5, boost/utility/string_ref_fwd.hpp at line 5, boost/utility/string_view.hpp at line 6, boost/utility/string_view_fwd.hpp at line 5
+ License text:
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/algorithm/algorithm.hpp [4:5]
+ boost/algorithm/clamp.hpp [4:5]
+ boost/algorithm/cxx11/all_of.hpp [4:5]
+ boost/algorithm/cxx11/any_of.hpp [4:5]
+ boost/algorithm/cxx11/copy_if.hpp [4:5]
+ boost/algorithm/cxx11/copy_n.hpp [4:5]
+ boost/algorithm/cxx11/find_if_not.hpp [4:5]
+ boost/algorithm/cxx11/iota.hpp [4:5]
+ boost/algorithm/cxx11/is_partitioned.hpp [4:5]
+ boost/algorithm/cxx11/is_permutation.hpp [4:5]
+ boost/algorithm/cxx11/none_of.hpp [4:5]
+ boost/algorithm/cxx11/one_of.hpp [4:5]
+ boost/algorithm/cxx11/partition_copy.hpp [4:5]
+ boost/algorithm/cxx11/partition_point.hpp [4:5]
+ boost/algorithm/cxx14/equal.hpp [4:5]
+ boost/algorithm/cxx14/is_permutation.hpp [4:5]
+ boost/algorithm/gather.hpp [4:5]
+ boost/algorithm/hex.hpp [4:5]
+ boost/algorithm/is_partitioned_until.hpp [4:5]
+ boost/algorithm/searching/boyer_moore.hpp [4:5]
+ boost/algorithm/searching/boyer_moore_horspool.hpp [4:5]
+ boost/algorithm/searching/detail/bm_traits.hpp [4:5]
+ boost/algorithm/searching/detail/debugging.hpp [4:5]
+ boost/algorithm/searching/knuth_morris_pratt.hpp [4:5]
+ boost/algorithm/sort_subrange.hpp [4:5]
+ boost/utility/string_ref.hpp [4:5]
+ boost/utility/string_ref_fwd.hpp [4:5]
+ boost/utility/string_view.hpp [5:6]
+ boost/utility/string_view_fwd.hpp [4:5]
+
+KEEP BSL-1.0 0c343589979bf7b72c670455ba9f8279
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/proto/transform/detail/expand_pack.hpp at line 17, boost/proto/transform/detail/pack_impl.hpp at line 17
+ License text:
+ // Copyright 2012 Eric Niebler. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/proto/transform/detail/expand_pack.hpp [15:17]
+ boost/proto/transform/detail/pack_impl.hpp [15:17]
+
+KEEP BSL-1.0 0cdc4a13eeef26a385639963d67b2617
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/spirit/home/karma/action.hpp at line 4, boost/spirit/home/karma/auxiliary.hpp at line 4, boost/spirit/home/karma/auxiliary/eol.hpp at line 4, boost/spirit/home/karma/auxiliary/lazy.hpp at line 5, boost/spirit/home/karma/binary.hpp at line 4, boost/spirit/home/karma/binary/padding.hpp at line 4, boost/spirit/home/karma/char.hpp at line 4, boost/spirit/home/karma/delimit_flag.hpp at line 4, boost/spirit/home/karma/detail/fail_function.hpp at line 5, boost/spirit/home/karma/detail/generate.hpp at line 4, boost/spirit/home/karma/detail/generate_auto.hpp at line 4, boost/spirit/home/karma/detail/generate_to.hpp at line 4, boost/spirit/home/karma/detail/get_casetag.hpp at line 5, boost/spirit/home/karma/detail/get_stricttag.hpp at line 4, boost/spirit/home/karma/detail/output_iterator.hpp at line 4, boost/spirit/home/karma/detail/string_compare.hpp at line 4, boost/spirit/home/karma/detail/string_generate.hpp at line 4, boost/spirit/home/karma/directive.hpp at line 4, boost/spirit/home/karma/directive/no_delimit.hpp at line 4, boost/spirit/home/karma/directive/strict_relaxed.hpp at line 4, boost/spirit/home/karma/directive/upper_lower_case.hpp at line 5, boost/spirit/home/karma/directive/verbatim.hpp at line 4, boost/spirit/home/karma/generate.hpp at line 4, boost/spirit/home/karma/generate_attr.hpp at line 4, boost/spirit/home/karma/generator.hpp at line 5, boost/spirit/home/karma/meta_compiler.hpp at line 5, boost/spirit/home/karma/nonterminal.hpp at line 4, boost/spirit/home/karma/nonterminal/detail/fcall.hpp at line 5, boost/spirit/home/karma/nonterminal/detail/generator_binder.hpp at line 5, boost/spirit/home/karma/nonterminal/detail/parameterized.hpp at line 6, boost/spirit/home/karma/nonterminal/grammar.hpp at line 5, boost/spirit/home/karma/nonterminal/nonterminal_fwd.hpp at line 4, boost/spirit/home/karma/numeric.hpp at line 4, boost/spirit/home/karma/numeric/bool_policies.hpp at line 4, boost/spirit/home/karma/numeric/detail/bool_utils.hpp at line 4, boost/spirit/home/karma/numeric/detail/real_utils.hpp at line 4, boost/spirit/home/karma/numeric/real_policies.hpp at line 4, boost/spirit/home/karma/operator.hpp at line 4, boost/spirit/home/karma/phoenix_attributes.hpp at line 4, boost/spirit/home/karma/reference.hpp at line 5, boost/spirit/home/karma/stream/detail/format_manip.hpp at line 4, boost/spirit/home/karma/stream/detail/format_manip_auto.hpp at line 4, boost/spirit/home/karma/stream/format_manip.hpp at line 4, boost/spirit/home/karma/stream/format_manip_attr.hpp at line 4, boost/spirit/home/karma/stream/ostream_iterator.hpp at line 4, boost/spirit/home/karma/string.hpp at line 4, boost/spirit/home/karma/what.hpp at line 4, boost/spirit/home/lex.hpp at line 4, boost/spirit/home/lex/argument.hpp at line 7, boost/spirit/home/lex/argument_phoenix.hpp at line 5, boost/spirit/home/lex/detail/sequence_function.hpp at line 4, boost/spirit/home/lex/domain.hpp at line 5, boost/spirit/home/lex/lexer.hpp at line 4, boost/spirit/home/lex/lexer/action.hpp at line 4, boost/spirit/home/lex/lexer/char_token_def.hpp at line 4, boost/spirit/home/lex/lexer/lexer.hpp at line 4, boost/spirit/home/lex/lexer/lexertl/functor.hpp at line 4, boost/spirit/home/lex/lexer/lexertl/functor_data.hpp at line 4, boost/spirit/home/lex/lexer/lexertl/iterator.hpp at line 4, boost/spirit/home/lex/lexer/lexertl/iterator_tokenizer.hpp at line 4, boost/spirit/home/lex/lexer/lexertl/position_token.hpp at line 4, boost/spirit/home/lex/lexer/lexertl/semantic_action_data.hpp at line 4, boost/spirit/home/lex/lexer/lexertl/static_functor_data.hpp at line 4, boost/spirit/home/lex/lexer/lexertl/static_lexer.hpp at line 4, boost/spirit/home/lex/lexer/lexertl/static_version.hpp at line 4, boost/spirit/home/lex/lexer/lexertl/token.hpp at line 4, boost/spirit/home/lex/lexer/pass_flags.hpp at line 4, boost/spirit/home/lex/lexer/sequence.hpp at line 4, boost/spirit/home/lex/lexer/string_token_def.hpp at line 4, boost/spirit/home/lex/lexer/support_functions.hpp at line 4, boost/spirit/home/lex/lexer/support_functions_expression.hpp at line 5, boost/spirit/home/lex/lexer/terminals.hpp at line 4, boost/spirit/home/lex/lexer/token_def.hpp at line 4, boost/spirit/home/lex/lexer_lexertl.hpp at line 4, boost/spirit/home/lex/lexer_static_lexertl.hpp at line 4, boost/spirit/home/lex/lexer_type.hpp at line 5, boost/spirit/home/lex/meta_compiler.hpp at line 5, boost/spirit/home/lex/primitives.hpp at line 4, boost/spirit/home/lex/qi.hpp at line 4, boost/spirit/home/lex/qi/in_state.hpp at line 4, boost/spirit/home/lex/reference.hpp at line 5, boost/spirit/home/lex/tokenize_and_parse.hpp at line 4, boost/spirit/home/lex/tokenize_and_parse_attr.hpp at line 6, boost/spirit/home/qi/nonterminal/nonterminal_fwd.hpp at line 4, boost/spirit/home/qi/parse_attr.hpp at line 6, boost/spirit/home/support/multi_pass_wrapper.hpp at line 4, boost/spirit/repository/home/karma/directive/confix.hpp at line 4, boost/spirit/repository/home/qi/directive/confix.hpp at line 4, boost/spirit/repository/home/qi/primitive/flush_multi_pass.hpp at line 4, boost/spirit/repository/home/qi/primitive/iter_pos.hpp at line 4, boost/spirit/repository/home/support/confix.hpp at line 4, boost/spirit/repository/home/support/distinct.hpp at line 4, boost/spirit/repository/home/support/flush_multi_pass.hpp at line 4, boost/spirit/repository/home/support/kwd.hpp at line 4
+ License text:
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/spirit/home/karma/action.hpp [3:4]
+ boost/spirit/home/karma/auxiliary.hpp [3:4]
+ boost/spirit/home/karma/auxiliary/eol.hpp [3:4]
+ boost/spirit/home/karma/auxiliary/lazy.hpp [4:5]
+ boost/spirit/home/karma/binary.hpp [3:4]
+ boost/spirit/home/karma/binary/padding.hpp [3:4]
+ boost/spirit/home/karma/char.hpp [3:4]
+ boost/spirit/home/karma/delimit_flag.hpp [3:4]
+ boost/spirit/home/karma/detail/fail_function.hpp [4:5]
+ boost/spirit/home/karma/detail/generate.hpp [3:4]
+ boost/spirit/home/karma/detail/generate_auto.hpp [3:4]
+ boost/spirit/home/karma/detail/generate_to.hpp [3:4]
+ boost/spirit/home/karma/detail/get_casetag.hpp [4:5]
+ boost/spirit/home/karma/detail/get_stricttag.hpp [3:4]
+ boost/spirit/home/karma/detail/output_iterator.hpp [3:4]
+ boost/spirit/home/karma/detail/string_compare.hpp [3:4]
+ boost/spirit/home/karma/detail/string_generate.hpp [3:4]
+ boost/spirit/home/karma/directive.hpp [3:4]
+ boost/spirit/home/karma/directive/no_delimit.hpp [3:4]
+ boost/spirit/home/karma/directive/strict_relaxed.hpp [3:4]
+ boost/spirit/home/karma/directive/upper_lower_case.hpp [4:5]
+ boost/spirit/home/karma/directive/verbatim.hpp [3:4]
+ boost/spirit/home/karma/generate.hpp [3:4]
+ boost/spirit/home/karma/generate_attr.hpp [3:4]
+ boost/spirit/home/karma/generator.hpp [4:5]
+ boost/spirit/home/karma/meta_compiler.hpp [4:5]
+ boost/spirit/home/karma/nonterminal.hpp [3:4]
+ boost/spirit/home/karma/nonterminal/detail/fcall.hpp [4:5]
+ boost/spirit/home/karma/nonterminal/detail/generator_binder.hpp [4:5]
+ boost/spirit/home/karma/nonterminal/detail/parameterized.hpp [5:6]
+ boost/spirit/home/karma/nonterminal/grammar.hpp [4:5]
+ boost/spirit/home/karma/nonterminal/nonterminal_fwd.hpp [3:4]
+ boost/spirit/home/karma/numeric.hpp [3:4]
+ boost/spirit/home/karma/numeric/bool_policies.hpp [3:4]
+ boost/spirit/home/karma/numeric/detail/bool_utils.hpp [3:4]
+ boost/spirit/home/karma/numeric/detail/real_utils.hpp [3:4]
+ boost/spirit/home/karma/numeric/real_policies.hpp [3:4]
+ boost/spirit/home/karma/operator.hpp [3:4]
+ boost/spirit/home/karma/phoenix_attributes.hpp [3:4]
+ boost/spirit/home/karma/reference.hpp [4:5]
+ boost/spirit/home/karma/stream/detail/format_manip.hpp [3:4]
+ boost/spirit/home/karma/stream/detail/format_manip_auto.hpp [3:4]
+ boost/spirit/home/karma/stream/format_manip.hpp [3:4]
+ boost/spirit/home/karma/stream/format_manip_attr.hpp [3:4]
+ boost/spirit/home/karma/stream/ostream_iterator.hpp [3:4]
+ boost/spirit/home/karma/string.hpp [3:4]
+ boost/spirit/home/karma/what.hpp [3:4]
+ boost/spirit/home/lex.hpp [3:4]
+ boost/spirit/home/lex/argument.hpp [6:7]
+ boost/spirit/home/lex/argument_phoenix.hpp [4:5]
+ boost/spirit/home/lex/detail/sequence_function.hpp [3:4]
+ boost/spirit/home/lex/domain.hpp [4:5]
+ boost/spirit/home/lex/lexer.hpp [3:4]
+ boost/spirit/home/lex/lexer/action.hpp [3:4]
+ boost/spirit/home/lex/lexer/char_token_def.hpp [3:4]
+ boost/spirit/home/lex/lexer/lexer.hpp [3:4]
+ boost/spirit/home/lex/lexer/lexertl/functor.hpp [3:4]
+ boost/spirit/home/lex/lexer/lexertl/functor_data.hpp [3:4]
+ boost/spirit/home/lex/lexer/lexertl/iterator.hpp [3:4]
+ boost/spirit/home/lex/lexer/lexertl/iterator_tokenizer.hpp [3:4]
+ boost/spirit/home/lex/lexer/lexertl/position_token.hpp [3:4]
+ boost/spirit/home/lex/lexer/lexertl/semantic_action_data.hpp [3:4]
+ boost/spirit/home/lex/lexer/lexertl/static_functor_data.hpp [3:4]
+ boost/spirit/home/lex/lexer/lexertl/static_lexer.hpp [3:4]
+ boost/spirit/home/lex/lexer/lexertl/static_version.hpp [3:4]
+ boost/spirit/home/lex/lexer/lexertl/token.hpp [3:4]
+ boost/spirit/home/lex/lexer/pass_flags.hpp [3:4]
+ boost/spirit/home/lex/lexer/sequence.hpp [3:4]
+ boost/spirit/home/lex/lexer/string_token_def.hpp [3:4]
+ boost/spirit/home/lex/lexer/support_functions.hpp [3:4]
+ boost/spirit/home/lex/lexer/support_functions_expression.hpp [4:5]
+ boost/spirit/home/lex/lexer/terminals.hpp [3:4]
+ boost/spirit/home/lex/lexer/token_def.hpp [3:4]
+ boost/spirit/home/lex/lexer_lexertl.hpp [3:4]
+ boost/spirit/home/lex/lexer_static_lexertl.hpp [3:4]
+ boost/spirit/home/lex/lexer_type.hpp [4:5]
+ boost/spirit/home/lex/meta_compiler.hpp [4:5]
+ boost/spirit/home/lex/primitives.hpp [3:4]
+ boost/spirit/home/lex/qi.hpp [3:4]
+ boost/spirit/home/lex/qi/in_state.hpp [3:4]
+ boost/spirit/home/lex/reference.hpp [4:5]
+ boost/spirit/home/lex/tokenize_and_parse.hpp [3:4]
+ boost/spirit/home/lex/tokenize_and_parse_attr.hpp [5:6]
+ boost/spirit/home/qi/nonterminal/nonterminal_fwd.hpp [3:4]
+ boost/spirit/home/qi/parse_attr.hpp [5:6]
+ boost/spirit/home/support/multi_pass_wrapper.hpp [3:4]
+ boost/spirit/repository/home/karma/directive/confix.hpp [3:4]
+ boost/spirit/repository/home/qi/directive/confix.hpp [3:4]
+ boost/spirit/repository/home/qi/primitive/flush_multi_pass.hpp [3:4]
+ boost/spirit/repository/home/qi/primitive/iter_pos.hpp [3:4]
+ boost/spirit/repository/home/support/confix.hpp [3:4]
+ boost/spirit/repository/home/support/distinct.hpp [3:4]
+ boost/spirit/repository/home/support/flush_multi_pass.hpp [3:4]
+ boost/spirit/repository/home/support/kwd.hpp [3:4]
+
+KEEP BSL-1.0 0f69183a9abbaa4c04784abb1ed11d48
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread.hpp at line 6
+ License text:
// Distributed under the Boost Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/iostreams/categories.hpp [3:4]
- boost/iostreams/chain.hpp [3:4]
- boost/iostreams/char_traits.hpp [3:4]
- boost/iostreams/checked_operations.hpp [3:4]
- boost/iostreams/close.hpp [3:4]
- boost/iostreams/code_converter.hpp [3:4]
- boost/iostreams/combine.hpp [3:4]
- boost/iostreams/compose.hpp [3:4]
- boost/iostreams/concepts.hpp [3:4]
- boost/iostreams/constants.hpp [3:4]
- boost/iostreams/copy.hpp [3:4]
- boost/iostreams/detail/access_control.hpp [3:4]
- boost/iostreams/detail/adapter/concept_adapter.hpp [3:4]
- boost/iostreams/detail/adapter/direct_adapter.hpp [3:4]
- boost/iostreams/detail/adapter/mode_adapter.hpp [3:4]
- boost/iostreams/detail/adapter/non_blocking_adapter.hpp [3:4]
- boost/iostreams/detail/adapter/output_iterator_adapter.hpp [3:4]
- boost/iostreams/detail/adapter/range_adapter.hpp [3:4]
- boost/iostreams/detail/add_facet.hpp [3:4]
- boost/iostreams/detail/bool_trait_def.hpp [3:4]
- boost/iostreams/detail/broken_overload_resolution/forward.hpp [3:4]
- boost/iostreams/detail/broken_overload_resolution/stream.hpp [3:4]
- boost/iostreams/detail/broken_overload_resolution/stream_buffer.hpp [3:4]
- boost/iostreams/detail/buffer.hpp [3:4]
- boost/iostreams/detail/call_traits.hpp [3:4]
- boost/iostreams/detail/char_traits.hpp [3:4]
- boost/iostreams/detail/codecvt_helper.hpp [3:4]
- boost/iostreams/detail/codecvt_holder.hpp [3:4]
- boost/iostreams/detail/config/auto_link.hpp [3:4]
- boost/iostreams/detail/config/bzip2.hpp [3:4]
- boost/iostreams/detail/config/codecvt.hpp [3:4]
- boost/iostreams/detail/config/disable_warnings.hpp [3:4]
- boost/iostreams/detail/config/dyn_link.hpp [3:4]
- boost/iostreams/detail/config/enable_warnings.hpp [3:4]
- boost/iostreams/detail/config/gcc.hpp [3:4]
- boost/iostreams/detail/config/limits.hpp [3:4]
- boost/iostreams/detail/config/overload_resolution.hpp [3:4]
- boost/iostreams/detail/config/unreachable_return.hpp [2:3]
- boost/iostreams/detail/config/wide_streams.hpp [3:4]
- boost/iostreams/detail/config/windows_posix.hpp [4:5]
- boost/iostreams/detail/config/zlib.hpp [3:4]
- boost/iostreams/detail/counted_array.hpp [3:4]
- boost/iostreams/detail/default_arg.hpp [3:4]
- boost/iostreams/detail/dispatch.hpp [3:4]
- boost/iostreams/detail/double_object.hpp [3:4]
- boost/iostreams/detail/enable_if_stream.hpp [3:4]
- boost/iostreams/detail/error.hpp [3:4]
- boost/iostreams/detail/forward.hpp [3:4]
- boost/iostreams/detail/fstream.hpp [3:4]
- boost/iostreams/detail/ios.hpp [3:4]
- boost/iostreams/detail/iostream.hpp [3:4]
- boost/iostreams/detail/is_dereferenceable.hpp [4:5]
- boost/iostreams/detail/is_iterator_range.hpp [3:4]
- boost/iostreams/detail/newline.hpp [3:4]
- boost/iostreams/detail/optional.hpp [3:4]
- boost/iostreams/detail/param_type.hpp [3:4]
- boost/iostreams/detail/push.hpp [3:4]
- boost/iostreams/detail/push_params.hpp [3:4]
- boost/iostreams/detail/resolve.hpp [3:4]
- boost/iostreams/detail/select.hpp [3:4]
- boost/iostreams/detail/select_by_size.hpp [3:4]
- boost/iostreams/detail/streambuf.hpp [3:4]
- boost/iostreams/detail/streambuf/chainbuf.hpp [3:4]
- boost/iostreams/detail/streambuf/direct_streambuf.hpp [3:4]
- boost/iostreams/detail/streambuf/indirect_streambuf.hpp [3:4]
- boost/iostreams/detail/streambuf/linked_streambuf.hpp [3:4]
- boost/iostreams/detail/system_failure.hpp [4:5]
- boost/iostreams/detail/template_params.hpp [3:4]
- boost/iostreams/detail/translate_int_type.hpp [3:4]
- boost/iostreams/detail/wrap_unwrap.hpp [3:4]
- boost/iostreams/device/array.hpp [3:4]
- boost/iostreams/device/back_inserter.hpp [3:4]
- boost/iostreams/device/file.hpp [3:4]
- boost/iostreams/device/file_descriptor.hpp [3:4]
- boost/iostreams/device/mapped_file.hpp [4:5]
- boost/iostreams/device/null.hpp [3:4]
- boost/iostreams/filter/aggregate.hpp [3:4]
- boost/iostreams/filter/bzip2.hpp [3:4]
- boost/iostreams/filter/counter.hpp [3:4]
- boost/iostreams/filter/gzip.hpp [3:4]
- boost/iostreams/filter/line.hpp [3:4]
- boost/iostreams/filter/lzma.hpp [3:4]
- boost/iostreams/filter/newline.hpp [3:4]
- boost/iostreams/filter/regex.hpp [3:4]
- boost/iostreams/filter/stdio.hpp [3:4]
- boost/iostreams/filter/symmetric.hpp [3:4]
- boost/iostreams/filter/test.hpp [3:4]
- boost/iostreams/filter/zlib.hpp [3:4]
- boost/iostreams/filtering_stream.hpp [3:4]
- boost/iostreams/filtering_streambuf.hpp [3:4]
- boost/iostreams/flush.hpp [3:4]
- boost/iostreams/get.hpp [3:4]
- boost/iostreams/imbue.hpp [3:4]
- boost/iostreams/input_sequence.hpp [3:4]
- boost/iostreams/invert.hpp [3:4]
- boost/iostreams/operations.hpp [3:4]
- boost/iostreams/operations_fwd.hpp [3:4]
- boost/iostreams/optimal_buffer_size.hpp [3:4]
- boost/iostreams/output_sequence.hpp [3:4]
- boost/iostreams/pipeline.hpp [3:4]
- boost/iostreams/positioning.hpp [3:4]
- boost/iostreams/put.hpp [3:4]
- boost/iostreams/putback.hpp [3:4]
- boost/iostreams/read.hpp [3:4]
- boost/iostreams/seek.hpp [3:4]
- boost/iostreams/skip.hpp [3:4]
- boost/iostreams/stream.hpp [3:4]
- boost/iostreams/stream_buffer.hpp [3:4]
- boost/iostreams/tee.hpp [3:4]
- boost/iostreams/traits.hpp [3:4]
- boost/iostreams/traits_fwd.hpp [3:4]
- boost/iostreams/write.hpp [3:4]
- boost/ptr_container/detail/default_deleter.hpp [2:3]
- boost/ptr_container/detail/is_convertible.hpp [4:5]
- boost/ptr_container/detail/move.hpp [2:3]
- boost/ptr_container/detail/static_move_ptr.hpp [4:5]
- libs/iostreams/src/bzip2.cpp [3:4]
- libs/iostreams/src/file_descriptor.cpp [3:4]
- libs/iostreams/src/gzip.cpp [3:4]
- libs/iostreams/src/lzma.cpp [5:6]
- libs/iostreams/src/mapped_file.cpp [5:6]
- libs/iostreams/src/zlib.cpp [3:4]
-
-KEEP BSL-1.0 2835e331aa3449aef001bf68ecb39fb9
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/control/while.hpp at line 6, boost/preprocessor/tuple/eat.hpp at line 6, boost/preprocessor/tuple/elem.hpp at line 6, boost/preprocessor/tuple/reverse.hpp at line 6, boost/preprocessor/tuple/to_list.hpp at line 6
- License text:
- \# * Distributed under the Boost Software License, Version 1.0. (See
- \# * accompanying file LICENSE_1_0.txt or copy at
- \# * http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/preprocessor/control/while.hpp [5:7]
- boost/preprocessor/tuple/eat.hpp [5:7]
- boost/preprocessor/tuple/elem.hpp [5:7]
- boost/preprocessor/tuple/reverse.hpp [5:7]
- boost/preprocessor/tuple/to_list.hpp [5:7]
-
-KEEP BSL-1.0 28b2e46eb6f911b5064bd6681069737e
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/fusion/algorithm/transformation/detail/preprocessed/zip10.hpp at line 6, boost/fusion/algorithm/transformation/detail/preprocessed/zip20.hpp at line 6, boost/fusion/algorithm/transformation/detail/preprocessed/zip30.hpp at line 6, boost/fusion/algorithm/transformation/detail/preprocessed/zip40.hpp at line 6, boost/fusion/algorithm/transformation/detail/preprocessed/zip50.hpp at line 6, boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque10.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque20.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque30.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque40.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque50.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque10.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque20.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque20_fwd.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque30.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque30_fwd.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque40.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque40_fwd.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque50.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque50_fwd.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size20.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size30.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size40.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size50.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values10.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values20.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values30.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values40.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values50.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/deque_tie20.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/deque_tie30.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/deque_tie40.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/deque_tie50.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/list_tie20.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/list_tie30.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/list_tie40.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/list_tie50.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_deque10.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_deque20.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_deque30.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_deque40.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_deque50.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_list10.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_list20.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_list30.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_list40.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_list50.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_map10.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_map20.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_map30.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_map40.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_map50.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_set10.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_set20.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_set30.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_set40.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_set50.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_vector10.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_vector20.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_vector30.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_vector40.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_vector50.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/map_tie10.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/map_tie20.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/map_tie30.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/map_tie40.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/map_tie50.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/vector_tie20.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/vector_tie30.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/vector_tie40.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/vector_tie50.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list10.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list20.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list20_fwd.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list30.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list30_fwd.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list40.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list40_fwd.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list50.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list50_fwd.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons10.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons20.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons30.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons40.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons50.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/as_map10.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/as_map20.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/as_map30.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/as_map40.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/as_map50.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/map10.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/map20.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/map20_fwd.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/map30.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/map30_fwd.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/map40.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/map40_fwd.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/map50.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/map50_fwd.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/as_set10.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/as_set20.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/as_set30.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/as_set40.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/as_set50.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/set10.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/set20.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/set20_fwd.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/set30.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/set30_fwd.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/set40.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/set40_fwd.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/set50.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/set50_fwd.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector10.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector20.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector30.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector40.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector50.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vector10.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vector20.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vector20_fwd.hpp at line 6, boost/fusion/container/vector/detail/cpp03/preprocessed/vector30.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vector30_fwd.hpp at line 6, boost/fusion/container/vector/detail/cpp03/preprocessed/vector40.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vector40_fwd.hpp at line 6, boost/fusion/container/vector/detail/cpp03/preprocessed/vector50.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vector50_fwd.hpp at line 6, boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser20.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser30.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser40.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser50.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20_fwd.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30_fwd.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40_fwd.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50_fwd.hpp at line 5, boost/fusion/tuple/detail/preprocessed/make_tuple10.hpp at line 5, boost/fusion/tuple/detail/preprocessed/make_tuple20.hpp at line 5, boost/fusion/tuple/detail/preprocessed/make_tuple30.hpp at line 5, boost/fusion/tuple/detail/preprocessed/make_tuple40.hpp at line 5, boost/fusion/tuple/detail/preprocessed/make_tuple50.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple10.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple20.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple20_fwd.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple30.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple30_fwd.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple40.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple40_fwd.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple50.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple50_fwd.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple_tie20.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple_tie30.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple_tie40.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple_tie50.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_10.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_20.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_30.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_40.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_50.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_20.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_30.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_40.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_50.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_10.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_20.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_30.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_40.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_50.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_10.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_20.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_30.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_40.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_50.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/call_10.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/call_20.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/call_30.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/call_40.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/call_50.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/expression_10.hpp at line 7, boost/phoenix/core/detail/cpp03/preprocessed/expression_20.hpp at line 7, boost/phoenix/core/detail/cpp03/preprocessed/expression_30.hpp at line 7, boost/phoenix/core/detail/cpp03/preprocessed/expression_40.hpp at line 7, boost/phoenix/core/detail/cpp03/preprocessed/expression_50.hpp at line 7, boost/phoenix/core/detail/cpp03/preprocessed/function_equal_10.hpp at line 7, boost/phoenix/core/detail/cpp03/preprocessed/function_equal_20.hpp at line 7, boost/phoenix/core/detail/cpp03/preprocessed/function_equal_30.hpp at line 7, boost/phoenix/core/detail/cpp03/preprocessed/function_equal_40.hpp at line 7, boost/phoenix/core/detail/cpp03/preprocessed/function_equal_50.hpp at line 7, boost/phoenix/core/detail/cpp03/preprocessed/function_eval_10.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/function_eval_20.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/function_eval_30.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/function_eval_40.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/function_eval_50.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_10.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_20.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_30.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_40.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_50.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_20.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_30.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_40.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_50.hpp at line 5, boost/phoenix/function/detail/cpp03/preprocessed/function_operator_20.hpp at line 6, boost/phoenix/function/detail/cpp03/preprocessed/function_operator_30.hpp at line 6, boost/phoenix/function/detail/cpp03/preprocessed/function_operator_40.hpp at line 6, boost/phoenix/function/detail/cpp03/preprocessed/function_operator_50.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/construct_20.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/construct_30.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/construct_40.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/construct_50.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_10.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_20.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_30.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_40.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_50.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_10.hpp at line 5, boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_20.hpp at line 5, boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_30.hpp at line 5, boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_40.hpp at line 5, boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_50.hpp at line 5, boost/phoenix/object/detail/cpp03/preprocessed/new_20.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/new_30.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/new_40.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/new_50.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/new_eval_10.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/new_eval_20.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/new_eval_30.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/new_eval_40.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/new_eval_50.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/new_expr_10.hpp at line 5, boost/phoenix/object/detail/cpp03/preprocessed/new_expr_20.hpp at line 5, boost/phoenix/object/detail/cpp03/preprocessed/new_expr_30.hpp at line 5, boost/phoenix/object/detail/cpp03/preprocessed/new_expr_40.hpp at line 5, boost/phoenix/object/detail/cpp03/preprocessed/new_expr_50.hpp at line 5, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_20.hpp at line 7, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_30.hpp at line 7, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_40.hpp at line 7, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_50.hpp at line 7, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_10.hpp at line 7, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_20.hpp at line 7, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_30.hpp at line 7, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_40.hpp at line 7, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_50.hpp at line 7, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_10.hpp at line 5, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_20.hpp at line 5, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_30.hpp at line 5, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_40.hpp at line 5, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_50.hpp at line 5, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_20.hpp at line 6, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_30.hpp at line 6, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_40.hpp at line 6, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_50.hpp at line 6, boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_10.hpp at line 6, boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_20.hpp at line 6, boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_30.hpp at line 6, boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_40.hpp at line 6, boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_50.hpp at line 6, boost/phoenix/scope/detail/cpp03/preprocessed/lambda_10.hpp at line 8, boost/phoenix/scope/detail/cpp03/preprocessed/lambda_20.hpp at line 8, boost/phoenix/scope/detail/cpp03/preprocessed/lambda_30.hpp at line 8, boost/phoenix/scope/detail/cpp03/preprocessed/lambda_40.hpp at line 8, boost/phoenix/scope/detail/cpp03/preprocessed/lambda_50.hpp at line 8, boost/phoenix/statement/detail/preprocessed/catch_push_back_10.hpp at line 6, boost/phoenix/statement/detail/preprocessed/catch_push_back_20.hpp at line 6, boost/phoenix/statement/detail/preprocessed/catch_push_back_30.hpp at line 6, boost/phoenix/statement/detail/preprocessed/catch_push_back_40.hpp at line 6, boost/phoenix/statement/detail/preprocessed/catch_push_back_50.hpp at line 6, boost/phoenix/statement/detail/preprocessed/switch_10.hpp at line 6, boost/phoenix/statement/detail/preprocessed/switch_20.hpp at line 6, boost/phoenix/statement/detail/preprocessed/switch_30.hpp at line 6, boost/phoenix/statement/detail/preprocessed/switch_40.hpp at line 6, boost/phoenix/statement/detail/preprocessed/switch_50.hpp at line 6, boost/phoenix/statement/detail/preprocessed/try_catch_eval_10.hpp at line 6, boost/phoenix/statement/detail/preprocessed/try_catch_eval_20.hpp at line 6, boost/phoenix/statement/detail/preprocessed/try_catch_eval_30.hpp at line 6, boost/phoenix/statement/detail/preprocessed/try_catch_eval_40.hpp at line 6, boost/phoenix/statement/detail/preprocessed/try_catch_eval_50.hpp at line 6, boost/phoenix/statement/detail/preprocessed/try_catch_expression_30.hpp at line 6, boost/phoenix/statement/detail/preprocessed/try_catch_expression_40.hpp at line 6, boost/phoenix/statement/detail/preprocessed/try_catch_expression_50.hpp at line 6, boost/phoenix/support/preprocessed/vector_10.hpp at line 6, boost/phoenix/support/preprocessed/vector_20.hpp at line 6, boost/phoenix/support/preprocessed/vector_30.hpp at line 6, boost/phoenix/support/preprocessed/vector_40.hpp at line 6, boost/phoenix/support/preprocessed/vector_50.hpp at line 6
- License text:
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/fusion/algorithm/transformation/detail/preprocessed/zip10.hpp [5:6]
- boost/fusion/algorithm/transformation/detail/preprocessed/zip20.hpp [5:6]
- boost/fusion/algorithm/transformation/detail/preprocessed/zip30.hpp [5:6]
- boost/fusion/algorithm/transformation/detail/preprocessed/zip40.hpp [5:6]
- boost/fusion/algorithm/transformation/detail/preprocessed/zip50.hpp [5:6]
- boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque10.hpp [4:5]
- boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque20.hpp [4:5]
- boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque30.hpp [4:5]
- boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque40.hpp [4:5]
- boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque50.hpp [4:5]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque10.hpp [4:5]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque20.hpp [4:5]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque20_fwd.hpp [4:5]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque30.hpp [4:5]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque30_fwd.hpp [4:5]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque40.hpp [4:5]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque40_fwd.hpp [4:5]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque50.hpp [4:5]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque50_fwd.hpp [4:5]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size20.hpp [4:5]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size30.hpp [4:5]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size40.hpp [4:5]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size50.hpp [4:5]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values10.hpp [4:5]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values20.hpp [4:5]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values30.hpp [4:5]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values40.hpp [4:5]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values50.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/deque_tie20.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/deque_tie30.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/deque_tie40.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/deque_tie50.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/list_tie20.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/list_tie30.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/list_tie40.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/list_tie50.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/make_deque10.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/make_deque20.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/make_deque30.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/make_deque40.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/make_deque50.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/make_list10.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/make_list20.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/make_list30.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/make_list40.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/make_list50.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/make_map10.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/make_map20.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/make_map30.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/make_map40.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/make_map50.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/make_set10.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/make_set20.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/make_set30.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/make_set40.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/make_set50.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/make_vector10.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/make_vector20.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/make_vector30.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/make_vector40.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/make_vector50.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/map_tie10.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/map_tie20.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/map_tie30.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/map_tie40.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/map_tie50.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/vector_tie20.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/vector_tie30.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/vector_tie40.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/vector_tie50.hpp [4:5]
- boost/fusion/container/list/detail/cpp03/preprocessed/list10.hpp [4:5]
- boost/fusion/container/list/detail/cpp03/preprocessed/list20.hpp [4:5]
- boost/fusion/container/list/detail/cpp03/preprocessed/list20_fwd.hpp [4:5]
- boost/fusion/container/list/detail/cpp03/preprocessed/list30.hpp [4:5]
- boost/fusion/container/list/detail/cpp03/preprocessed/list30_fwd.hpp [4:5]
- boost/fusion/container/list/detail/cpp03/preprocessed/list40.hpp [4:5]
- boost/fusion/container/list/detail/cpp03/preprocessed/list40_fwd.hpp [4:5]
- boost/fusion/container/list/detail/cpp03/preprocessed/list50.hpp [4:5]
- boost/fusion/container/list/detail/cpp03/preprocessed/list50_fwd.hpp [4:5]
- boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons10.hpp [4:5]
- boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons20.hpp [4:5]
- boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons30.hpp [4:5]
- boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons40.hpp [4:5]
- boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons50.hpp [4:5]
- boost/fusion/container/map/detail/cpp03/preprocessed/as_map10.hpp [4:5]
- boost/fusion/container/map/detail/cpp03/preprocessed/as_map20.hpp [4:5]
- boost/fusion/container/map/detail/cpp03/preprocessed/as_map30.hpp [4:5]
- boost/fusion/container/map/detail/cpp03/preprocessed/as_map40.hpp [4:5]
- boost/fusion/container/map/detail/cpp03/preprocessed/as_map50.hpp [4:5]
- boost/fusion/container/map/detail/cpp03/preprocessed/map10.hpp [4:5]
- boost/fusion/container/map/detail/cpp03/preprocessed/map20.hpp [4:5]
- boost/fusion/container/map/detail/cpp03/preprocessed/map20_fwd.hpp [4:5]
- boost/fusion/container/map/detail/cpp03/preprocessed/map30.hpp [4:5]
- boost/fusion/container/map/detail/cpp03/preprocessed/map30_fwd.hpp [4:5]
- boost/fusion/container/map/detail/cpp03/preprocessed/map40.hpp [4:5]
- boost/fusion/container/map/detail/cpp03/preprocessed/map40_fwd.hpp [4:5]
- boost/fusion/container/map/detail/cpp03/preprocessed/map50.hpp [4:5]
- boost/fusion/container/map/detail/cpp03/preprocessed/map50_fwd.hpp [4:5]
- boost/fusion/container/set/detail/cpp03/preprocessed/as_set10.hpp [4:5]
- boost/fusion/container/set/detail/cpp03/preprocessed/as_set20.hpp [4:5]
- boost/fusion/container/set/detail/cpp03/preprocessed/as_set30.hpp [4:5]
- boost/fusion/container/set/detail/cpp03/preprocessed/as_set40.hpp [4:5]
- boost/fusion/container/set/detail/cpp03/preprocessed/as_set50.hpp [4:5]
- boost/fusion/container/set/detail/cpp03/preprocessed/set10.hpp [4:5]
- boost/fusion/container/set/detail/cpp03/preprocessed/set20.hpp [4:5]
- boost/fusion/container/set/detail/cpp03/preprocessed/set20_fwd.hpp [4:5]
- boost/fusion/container/set/detail/cpp03/preprocessed/set30.hpp [4:5]
- boost/fusion/container/set/detail/cpp03/preprocessed/set30_fwd.hpp [4:5]
- boost/fusion/container/set/detail/cpp03/preprocessed/set40.hpp [4:5]
- boost/fusion/container/set/detail/cpp03/preprocessed/set40_fwd.hpp [4:5]
- boost/fusion/container/set/detail/cpp03/preprocessed/set50.hpp [4:5]
- boost/fusion/container/set/detail/cpp03/preprocessed/set50_fwd.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector10.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector20.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector30.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector40.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector50.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector10.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector20.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector20_fwd.hpp [5:6]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector30.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector30_fwd.hpp [5:6]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector40.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector40_fwd.hpp [5:6]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector50.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector50_fwd.hpp [5:6]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser20.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser30.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser40.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser50.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20_fwd.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30_fwd.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40_fwd.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50_fwd.hpp [4:5]
- boost/fusion/tuple/detail/preprocessed/make_tuple10.hpp [4:5]
- boost/fusion/tuple/detail/preprocessed/make_tuple20.hpp [4:5]
- boost/fusion/tuple/detail/preprocessed/make_tuple30.hpp [4:5]
- boost/fusion/tuple/detail/preprocessed/make_tuple40.hpp [4:5]
- boost/fusion/tuple/detail/preprocessed/make_tuple50.hpp [4:5]
- boost/fusion/tuple/detail/preprocessed/tuple10.hpp [4:5]
- boost/fusion/tuple/detail/preprocessed/tuple20.hpp [4:5]
- boost/fusion/tuple/detail/preprocessed/tuple20_fwd.hpp [4:5]
- boost/fusion/tuple/detail/preprocessed/tuple30.hpp [4:5]
- boost/fusion/tuple/detail/preprocessed/tuple30_fwd.hpp [4:5]
- boost/fusion/tuple/detail/preprocessed/tuple40.hpp [4:5]
- boost/fusion/tuple/detail/preprocessed/tuple40_fwd.hpp [4:5]
- boost/fusion/tuple/detail/preprocessed/tuple50.hpp [4:5]
- boost/fusion/tuple/detail/preprocessed/tuple50_fwd.hpp [4:5]
- boost/fusion/tuple/detail/preprocessed/tuple_tie20.hpp [4:5]
- boost/fusion/tuple/detail/preprocessed/tuple_tie30.hpp [4:5]
- boost/fusion/tuple/detail/preprocessed/tuple_tie40.hpp [4:5]
- boost/fusion/tuple/detail/preprocessed/tuple_tie50.hpp [4:5]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_10.hpp [5:6]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_20.hpp [5:6]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_30.hpp [5:6]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_40.hpp [5:6]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_50.hpp [5:6]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_20.hpp [5:6]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_30.hpp [5:6]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_40.hpp [5:6]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_50.hpp [5:6]
- boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_10.hpp [5:6]
- boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_20.hpp [5:6]
- boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_30.hpp [5:6]
- boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_40.hpp [5:6]
- boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_50.hpp [5:6]
- boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_10.hpp [5:6]
- boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_20.hpp [5:6]
- boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_30.hpp [5:6]
- boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_40.hpp [5:6]
- boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_50.hpp [5:6]
- boost/phoenix/core/detail/cpp03/preprocessed/call_10.hpp [5:6]
- boost/phoenix/core/detail/cpp03/preprocessed/call_20.hpp [5:6]
- boost/phoenix/core/detail/cpp03/preprocessed/call_30.hpp [5:6]
- boost/phoenix/core/detail/cpp03/preprocessed/call_40.hpp [5:6]
- boost/phoenix/core/detail/cpp03/preprocessed/call_50.hpp [5:6]
- boost/phoenix/core/detail/cpp03/preprocessed/expression_10.hpp [6:7]
- boost/phoenix/core/detail/cpp03/preprocessed/expression_20.hpp [6:7]
- boost/phoenix/core/detail/cpp03/preprocessed/expression_30.hpp [6:7]
- boost/phoenix/core/detail/cpp03/preprocessed/expression_40.hpp [6:7]
- boost/phoenix/core/detail/cpp03/preprocessed/expression_50.hpp [6:7]
- boost/phoenix/core/detail/cpp03/preprocessed/function_equal_10.hpp [6:7]
- boost/phoenix/core/detail/cpp03/preprocessed/function_equal_20.hpp [6:7]
- boost/phoenix/core/detail/cpp03/preprocessed/function_equal_30.hpp [6:7]
- boost/phoenix/core/detail/cpp03/preprocessed/function_equal_40.hpp [6:7]
- boost/phoenix/core/detail/cpp03/preprocessed/function_equal_50.hpp [6:7]
- boost/phoenix/core/detail/cpp03/preprocessed/function_eval_10.hpp [4:5]
- boost/phoenix/core/detail/cpp03/preprocessed/function_eval_20.hpp [4:5]
- boost/phoenix/core/detail/cpp03/preprocessed/function_eval_30.hpp [4:5]
- boost/phoenix/core/detail/cpp03/preprocessed/function_eval_40.hpp [4:5]
- boost/phoenix/core/detail/cpp03/preprocessed/function_eval_50.hpp [4:5]
- boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_10.hpp [5:6]
- boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_20.hpp [5:6]
- boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_30.hpp [5:6]
- boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_40.hpp [5:6]
- boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_50.hpp [5:6]
- boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_20.hpp [4:5]
- boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_30.hpp [4:5]
- boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_40.hpp [4:5]
- boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_50.hpp [4:5]
- boost/phoenix/function/detail/cpp03/preprocessed/function_operator_20.hpp [5:6]
- boost/phoenix/function/detail/cpp03/preprocessed/function_operator_30.hpp [5:6]
- boost/phoenix/function/detail/cpp03/preprocessed/function_operator_40.hpp [5:6]
- boost/phoenix/function/detail/cpp03/preprocessed/function_operator_50.hpp [5:6]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_20.hpp [5:6]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_30.hpp [5:6]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_40.hpp [5:6]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_50.hpp [5:6]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_10.hpp [5:6]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_20.hpp [5:6]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_30.hpp [5:6]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_40.hpp [5:6]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_50.hpp [5:6]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_10.hpp [4:5]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_20.hpp [4:5]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_30.hpp [4:5]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_40.hpp [4:5]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_50.hpp [4:5]
- boost/phoenix/object/detail/cpp03/preprocessed/new_20.hpp [5:6]
- boost/phoenix/object/detail/cpp03/preprocessed/new_30.hpp [5:6]
- boost/phoenix/object/detail/cpp03/preprocessed/new_40.hpp [5:6]
- boost/phoenix/object/detail/cpp03/preprocessed/new_50.hpp [5:6]
- boost/phoenix/object/detail/cpp03/preprocessed/new_eval_10.hpp [5:6]
- boost/phoenix/object/detail/cpp03/preprocessed/new_eval_20.hpp [5:6]
- boost/phoenix/object/detail/cpp03/preprocessed/new_eval_30.hpp [5:6]
- boost/phoenix/object/detail/cpp03/preprocessed/new_eval_40.hpp [5:6]
- boost/phoenix/object/detail/cpp03/preprocessed/new_eval_50.hpp [5:6]
- boost/phoenix/object/detail/cpp03/preprocessed/new_expr_10.hpp [4:5]
- boost/phoenix/object/detail/cpp03/preprocessed/new_expr_20.hpp [4:5]
- boost/phoenix/object/detail/cpp03/preprocessed/new_expr_30.hpp [4:5]
- boost/phoenix/object/detail/cpp03/preprocessed/new_expr_40.hpp [4:5]
- boost/phoenix/object/detail/cpp03/preprocessed/new_expr_50.hpp [4:5]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_20.hpp [6:7]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_30.hpp [6:7]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_40.hpp [6:7]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_50.hpp [6:7]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_10.hpp [6:7]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_20.hpp [6:7]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_30.hpp [6:7]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_40.hpp [6:7]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_50.hpp [6:7]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_10.hpp [4:5]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_20.hpp [4:5]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_30.hpp [4:5]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_40.hpp [4:5]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_50.hpp [4:5]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_20.hpp [5:6]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_30.hpp [5:6]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_40.hpp [5:6]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_50.hpp [5:6]
- boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_10.hpp [5:6]
- boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_20.hpp [5:6]
- boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_30.hpp [5:6]
- boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_40.hpp [5:6]
- boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_50.hpp [5:6]
- boost/phoenix/scope/detail/cpp03/preprocessed/lambda_10.hpp [7:8]
- boost/phoenix/scope/detail/cpp03/preprocessed/lambda_20.hpp [7:8]
- boost/phoenix/scope/detail/cpp03/preprocessed/lambda_30.hpp [7:8]
- boost/phoenix/scope/detail/cpp03/preprocessed/lambda_40.hpp [7:8]
- boost/phoenix/scope/detail/cpp03/preprocessed/lambda_50.hpp [7:8]
- boost/phoenix/statement/detail/preprocessed/catch_push_back_10.hpp [5:6]
- boost/phoenix/statement/detail/preprocessed/catch_push_back_20.hpp [5:6]
- boost/phoenix/statement/detail/preprocessed/catch_push_back_30.hpp [5:6]
- boost/phoenix/statement/detail/preprocessed/catch_push_back_40.hpp [5:6]
- boost/phoenix/statement/detail/preprocessed/catch_push_back_50.hpp [5:6]
- boost/phoenix/statement/detail/preprocessed/switch_10.hpp [5:6]
- boost/phoenix/statement/detail/preprocessed/switch_20.hpp [5:6]
- boost/phoenix/statement/detail/preprocessed/switch_30.hpp [5:6]
- boost/phoenix/statement/detail/preprocessed/switch_40.hpp [5:6]
- boost/phoenix/statement/detail/preprocessed/switch_50.hpp [5:6]
- boost/phoenix/statement/detail/preprocessed/try_catch_eval_10.hpp [5:6]
- boost/phoenix/statement/detail/preprocessed/try_catch_eval_20.hpp [5:6]
- boost/phoenix/statement/detail/preprocessed/try_catch_eval_30.hpp [5:6]
- boost/phoenix/statement/detail/preprocessed/try_catch_eval_40.hpp [5:6]
- boost/phoenix/statement/detail/preprocessed/try_catch_eval_50.hpp [5:6]
- boost/phoenix/statement/detail/preprocessed/try_catch_expression_30.hpp [5:6]
- boost/phoenix/statement/detail/preprocessed/try_catch_expression_40.hpp [5:6]
- boost/phoenix/statement/detail/preprocessed/try_catch_expression_50.hpp [5:6]
- boost/phoenix/support/preprocessed/vector_10.hpp [5:6]
- boost/phoenix/support/preprocessed/vector_20.hpp [5:6]
- boost/phoenix/support/preprocessed/vector_30.hpp [5:6]
- boost/phoenix/support/preprocessed/vector_40.hpp [5:6]
- boost/phoenix/support/preprocessed/vector_50.hpp [5:6]
-
-KEEP BSL-1.0 29ab2af23720ebdd1e2ad342a8e0137f
-BELONGS libs/container/ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: libs/container/src/dlmalloc_ext_2_8_6.c at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2007-2015. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- libs/container/src/dlmalloc_ext_2_8_6.c [3:5]
-
-KEEP Public-Domain 2ab151edee0159eccbbf18b52c0ec403
-BELONGS ya.make
- License text:
- // This code is in the public domain. Anyone may use it or change it in any way that
- Scancode info:
- Original SPDX id: LicenseRef-scancode-public-domain
- Score : 100.00
- Match type : TEXT
- Links : http://www.linfo.org/publicdomain.html, https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/public-domain.LICENSE
- Files with this license:
- boost/intrusive/rbtree_algorithms.hpp [16:16]
-
-KEEP BSL-1.0 2c7a3fa82e66676005cd4ee2608fd7d2
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : TEXT
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- LICENSE_1_0.txt [1:23]
-
-KEEP BSL-1.0 2cc71fe4bd12718a9884bf7ff37269f3
-BELONGS libs/python/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/rolling_mean.hpp at line 6, boost/accumulators/statistics/rolling_moment.hpp at line 6, boost/accumulators/statistics/rolling_variance.hpp at line 6, boost/bimap.hpp at line 6, boost/bimap/bimap.hpp at line 6, boost/bimap/container_adaptor/associative_container_adaptor.hpp at line 6, boost/bimap/container_adaptor/container_adaptor.hpp at line 6, boost/bimap/container_adaptor/detail/comparison_adaptor.hpp at line 6, boost/bimap/container_adaptor/detail/functor_bag.hpp at line 6, boost/bimap/container_adaptor/detail/identity_converters.hpp at line 6, boost/bimap/container_adaptor/detail/key_extractor.hpp at line 6, boost/bimap/container_adaptor/detail/non_unique_container_helper.hpp at line 6, boost/bimap/container_adaptor/list_adaptor.hpp at line 6, boost/bimap/container_adaptor/list_map_adaptor.hpp at line 6, boost/bimap/container_adaptor/map_adaptor.hpp at line 6, boost/bimap/container_adaptor/multimap_adaptor.hpp at line 6, boost/bimap/container_adaptor/multiset_adaptor.hpp at line 6, boost/bimap/container_adaptor/ordered_associative_container_adaptor.hpp at line 6, boost/bimap/container_adaptor/sequence_container_adaptor.hpp at line 6, boost/bimap/container_adaptor/set_adaptor.hpp at line 6, boost/bimap/container_adaptor/support/iterator_facade_converters.hpp at line 6, boost/bimap/container_adaptor/unordered_associative_container_adaptor.hpp at line 6, boost/bimap/container_adaptor/unordered_map_adaptor.hpp at line 6, boost/bimap/container_adaptor/unordered_multimap_adaptor.hpp at line 6, boost/bimap/container_adaptor/unordered_multiset_adaptor.hpp at line 6, boost/bimap/container_adaptor/unordered_set_adaptor.hpp at line 6, boost/bimap/container_adaptor/vector_adaptor.hpp at line 6, boost/bimap/container_adaptor/vector_map_adaptor.hpp at line 6, boost/bimap/detail/bimap_core.hpp at line 6, boost/bimap/detail/concept_tags.hpp at line 6, boost/bimap/detail/debug/static_error.hpp at line 6, boost/bimap/detail/generate_index_binder.hpp at line 6, boost/bimap/detail/generate_relation_binder.hpp at line 6, boost/bimap/detail/generate_view_binder.hpp at line 6, boost/bimap/detail/is_set_type_of.hpp at line 6, boost/bimap/detail/manage_additional_parameters.hpp at line 6, boost/bimap/detail/manage_bimap_key.hpp at line 6, boost/bimap/detail/map_view_base.hpp at line 6, boost/bimap/detail/map_view_iterator.hpp at line 6, boost/bimap/detail/modifier_adaptor.hpp at line 6, boost/bimap/detail/non_unique_views_helper.hpp at line 6, boost/bimap/detail/set_view_base.hpp at line 6, boost/bimap/detail/set_view_iterator.hpp at line 6, boost/bimap/detail/test/check_metadata.hpp at line 6, boost/bimap/detail/user_interface_config.hpp at line 6, boost/bimap/list_of.hpp at line 6, boost/bimap/multiset_of.hpp at line 6, boost/bimap/property_map/set_support.hpp at line 6, boost/bimap/property_map/unordered_set_support.hpp at line 6, boost/bimap/relation/detail/access_builder.hpp at line 6, boost/bimap/relation/detail/metadata_access_builder.hpp at line 6, boost/bimap/relation/detail/mutant.hpp at line 6, boost/bimap/relation/detail/static_access_builder.hpp at line 6, boost/bimap/relation/detail/to_mutable_relation_functor.hpp at line 6, boost/bimap/relation/member_at.hpp at line 6, boost/bimap/relation/mutant_relation.hpp at line 6, boost/bimap/relation/pair_layout.hpp at line 6, boost/bimap/relation/structured_pair.hpp at line 6, boost/bimap/relation/support/data_extractor.hpp at line 6, boost/bimap/relation/support/get.hpp at line 6, boost/bimap/relation/support/get_pair_functor.hpp at line 6, boost/bimap/relation/support/is_tag_of_member_at.hpp at line 6, boost/bimap/relation/support/member_with_tag.hpp at line 6, boost/bimap/relation/support/opposite_tag.hpp at line 6, boost/bimap/relation/support/pair_by.hpp at line 6, boost/bimap/relation/support/pair_type_by.hpp at line 6, boost/bimap/relation/support/value_type_of.hpp at line 6, boost/bimap/relation/symmetrical_base.hpp at line 6, boost/bimap/set_of.hpp at line 6, boost/bimap/support/data_type_by.hpp at line 6, boost/bimap/support/iterator_type_by.hpp at line 6, boost/bimap/support/key_type_by.hpp at line 6, boost/bimap/support/lambda.hpp at line 6, boost/bimap/support/map_by.hpp at line 6, boost/bimap/support/map_type_by.hpp at line 6, boost/bimap/support/value_type_by.hpp at line 6, boost/bimap/tags/support/apply_to_value_type.hpp at line 6, boost/bimap/tags/support/default_tagged.hpp at line 6, boost/bimap/tags/support/is_tagged.hpp at line 6, boost/bimap/tags/support/overwrite_tagged.hpp at line 6, boost/bimap/tags/support/tag_of.hpp at line 6, boost/bimap/tags/support/value_type_of.hpp at line 6, boost/bimap/tags/tagged.hpp at line 6, boost/bimap/unconstrained_set_of.hpp at line 6, boost/bimap/unordered_multiset_of.hpp at line 6, boost/bimap/unordered_set_of.hpp at line 6, boost/bimap/vector_of.hpp at line 6, boost/bimap/views/list_map_view.hpp at line 6, boost/bimap/views/list_set_view.hpp at line 6, boost/bimap/views/map_view.hpp at line 6, boost/bimap/views/multimap_view.hpp at line 6, boost/bimap/views/multiset_view.hpp at line 6, boost/bimap/views/set_view.hpp at line 6, boost/bimap/views/unconstrained_map_view.hpp at line 6, boost/bimap/views/unconstrained_set_view.hpp at line 6, boost/bimap/views/unordered_map_view.hpp at line 6, boost/bimap/views/unordered_multimap_view.hpp at line 6, boost/bimap/views/unordered_multiset_view.hpp at line 6, boost/bimap/views/unordered_set_view.hpp at line 6, boost/bimap/views/vector_map_view.hpp at line 6, boost/bimap/views/vector_set_view.hpp at line 6, boost/container/detail/algorithm.hpp at line 6, boost/container/detail/construct_in_place.hpp at line 6, boost/container/detail/destroyers.hpp at line 6, boost/container/detail/iterator.hpp at line 6, boost/container/detail/iterators.hpp at line 7, boost/container/detail/mpl.hpp at line 6, boost/container/detail/pair.hpp at line 6, boost/container/detail/transform_iterator.hpp at line 7, boost/container/detail/type_traits.hpp at line 6, boost/container/detail/value_init.hpp at line 6, boost/container/stable_vector.hpp at line 14, boost/geometry/algorithms/detail/envelope/box.hpp at line 15, boost/geometry/algorithms/detail/envelope/implementation.hpp at line 17, boost/geometry/algorithms/detail/envelope/initialize.hpp at line 8, boost/geometry/algorithms/detail/envelope/interface.hpp at line 18, boost/geometry/algorithms/detail/envelope/intersects_antimeridian.hpp at line 8, boost/geometry/algorithms/detail/envelope/linear.hpp at line 14, boost/geometry/algorithms/detail/envelope/multipoint.hpp at line 10, boost/geometry/algorithms/detail/envelope/point.hpp at line 15, boost/geometry/algorithms/detail/envelope/range.hpp at line 17, boost/geometry/algorithms/detail/envelope/range_of_boxes.hpp at line 10, boost/geometry/algorithms/detail/envelope/segment.hpp at line 15, boost/geometry/algorithms/detail/envelope/transform_units.hpp at line 8, boost/geometry/algorithms/detail/expand/box.hpp at line 16, boost/geometry/algorithms/detail/expand/implementation.hpp at line 17, boost/geometry/algorithms/detail/expand/indexed.hpp at line 19, boost/geometry/algorithms/detail/expand/interface.hpp at line 18, boost/geometry/algorithms/detail/expand/point.hpp at line 19, boost/geometry/algorithms/detail/expand/segment.hpp at line 16, boost/geometry/algorithms/detail/expand_by_epsilon.hpp at line 8, boost/geometry/algorithms/dispatch/envelope.hpp at line 16, boost/geometry/algorithms/dispatch/expand.hpp at line 18, boost/geometry/algorithms/envelope.hpp at line 16, boost/geometry/algorithms/expand.hpp at line 17, boost/graph/bc_clustering.hpp at line 4, boost/graph/betweenness_centrality.hpp at line 4, boost/graph/circle_layout.hpp at line 4, boost/graph/compressed_sparse_row_graph.hpp at line 4, boost/graph/detail/compressed_sparse_row_struct.hpp at line 4, boost/graph/detail/histogram_sort.hpp at line 4, boost/graph/detail/indexed_properties.hpp at line 4, boost/graph/detail/is_distributed_selector.hpp at line 4, boost/graph/detail/read_graphviz_new.hpp at line 4, boost/graph/detail/read_graphviz_spirit.hpp at line 4, boost/graph/distributed/betweenness_centrality.hpp at line 4, boost/graph/dominator_tree.hpp at line 5, boost/graph/erdos_renyi_generator.hpp at line 4, boost/graph/floyd_warshall_shortest.hpp at line 4, boost/graph/fruchterman_reingold.hpp at line 4, boost/graph/gursoy_atun_layout.hpp at line 4, boost/graph/kamada_kawai_spring_layout.hpp at line 4, boost/graph/loop_erased_random_walk.hpp at line 4, boost/graph/one_bit_color_map.hpp at line 4, boost/graph/page_rank.hpp at line 5, boost/graph/plod_generator.hpp at line 4, boost/graph/random_layout.hpp at line 4, boost/graph/random_spanning_tree.hpp at line 4, boost/graph/small_world_generator.hpp at line 4, boost/graph/topology.hpp at line 4, boost/graph/two_bit_color_map.hpp at line 4, boost/interprocess/detail/min_max.hpp at line 6, boost/interprocess/detail/move.hpp at line 5, boost/interprocess/detail/mpl.hpp at line 6, boost/interprocess/detail/pointer_type.hpp at line 7, boost/interprocess/detail/transform_iterator.hpp at line 7, boost/interprocess/detail/type_traits.hpp at line 6, boost/interprocess/detail/utilities.hpp at line 7, boost/interprocess/smart_ptr/deleter.hpp at line 6, boost/interprocess/smart_ptr/detail/sp_counted_base.hpp at line 6, boost/interprocess/smart_ptr/shared_ptr.hpp at line 9, boost/interprocess/smart_ptr/weak_ptr.hpp at line 8, boost/intrusive/detail/algorithm.hpp at line 6, boost/iterator/advance.hpp at line 4, boost/iterator/distance.hpp at line 4, boost/move/algo/adaptive_merge.hpp at line 5, boost/move/algo/adaptive_sort.hpp at line 5, boost/move/algo/detail/adaptive_sort_merge.hpp at line 5, boost/move/algo/detail/basic_op.hpp at line 5, boost/move/algo/detail/heap_sort.hpp at line 5, boost/move/algo/detail/insertion_sort.hpp at line 5, boost/move/algo/detail/merge.hpp at line 5, boost/move/algo/detail/merge_sort.hpp at line 5, boost/move/algo/detail/pdqsort.hpp at line 6, boost/move/algo/detail/set_difference.hpp at line 5, boost/move/algo/move.hpp at line 5, boost/move/algo/predicate.hpp at line 5, boost/move/algo/unique.hpp at line 5, boost/move/algorithm.hpp at line 5, boost/move/core.hpp at line 5, boost/move/detail/destruct_n.hpp at line 5, boost/move/detail/iterator_traits.hpp at line 5, boost/move/detail/meta_utils.hpp at line 5, boost/move/detail/meta_utils_core.hpp at line 5, boost/move/detail/move_helpers.hpp at line 5, boost/move/detail/type_traits.hpp at line 6, boost/move/detail/unique_ptr_meta_utils.hpp at line 5, boost/move/iterator.hpp at line 5, boost/move/move.hpp at line 6, boost/move/traits.hpp at line 5, boost/move/utility.hpp at line 5, boost/move/utility_core.hpp at line 5, boost/mpl/aux_/config/gpu.hpp at line 8, boost/mpl/eval_if.hpp at line 8, boost/mpl/get_tag.hpp at line 8, boost/mpl/numeric_cast.hpp at line 8, boost/mpl/string.hpp at line 8, boost/none.hpp at line 5, boost/property_tree/detail/ptree_implementation.hpp at line 6, boost/python/numpy.hpp at line 4, boost/python/numpy/dtype.hpp at line 4, boost/python/numpy/internal.hpp at line 4, boost/python/numpy/invoke_matching.hpp at line 4, boost/python/numpy/matrix.hpp at line 4, boost/python/numpy/ndarray.hpp at line 4, boost/python/numpy/numpy_object_mgr_traits.hpp at line 4, boost/python/numpy/scalars.hpp at line 4, boost/python/numpy/ufunc.hpp at line 4, boost/python/object/class_metadata.hpp at line 4, boost/ratio/detail/mpl/abs.hpp at line 6, boost/ratio/detail/mpl/gcd.hpp at line 6, boost/ratio/detail/mpl/lcm.hpp at line 6, boost/ratio/detail/mpl/sign.hpp at line 6, boost/test/impl/test_framework_init_observer.ipp at line 3, boost/test/test_framework_init_observer.hpp at line 3, libs/python/src/numpy/dtype.cpp at line 4, libs/python/src/numpy/matrix.cpp at line 4, libs/python/src/numpy/ndarray.cpp at line 4, libs/python/src/numpy/numpy.cpp at line 4, libs/python/src/numpy/scalars.cpp at line 4, libs/python/src/numpy/ufunc.cpp at line 4
- License text:
- // Distributed under the Boost Software License, Version 1.0.
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/thread.hpp [5:6]
+
+KEEP BSL-1.0 10125f34e10cfbd1d22b3a71ea1344d0
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iostreams/detail/config/fpos.hpp at line 3
+ License text:
+ * Distributed under the Boost Software License, Version 1.0.(See accompanying
+ * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/iostreams/detail/config/fpos.hpp [2:3]
+
+KEEP BSL-1.0 109c052486685fdcd3c62f6626e916c6
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/static_warning.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/serialization/static_warning.hpp [5:12]
+
+KEEP BSD-3-Clause 10c780d53468f8ec46403841a1d90c29
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSD-3-Clause
+ Score : 98.59
+ Match type : TEXT
+ Links : http://www.opensource.org/licenses/BSD-3-Clause, https://spdx.org/licenses/BSD-3-Clause
+ Files with this license:
+ boost/compute/random/threefry_engine.hpp [83:108]
+
+KEEP BSL-1.0 1122abc9579bd663d9e0afd146af9996
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/spirit.hpp at line 7, boost/spirit/home/classic.hpp at line 17, boost/spirit/home/classic/actor.hpp at line 6, boost/spirit/home/classic/actor/assign_actor.hpp at line 6, boost/spirit/home/classic/actor/assign_key_actor.hpp at line 6, boost/spirit/home/classic/actor/clear_actor.hpp at line 6, boost/spirit/home/classic/actor/decrement_actor.hpp at line 6, boost/spirit/home/classic/actor/erase_actor.hpp at line 6, boost/spirit/home/classic/actor/increment_actor.hpp at line 6, boost/spirit/home/classic/actor/insert_at_actor.hpp at line 6, boost/spirit/home/classic/actor/insert_key_actor.hpp at line 6, boost/spirit/home/classic/actor/push_back_actor.hpp at line 6, boost/spirit/home/classic/actor/push_front_actor.hpp at line 6, boost/spirit/home/classic/actor/ref_actor.hpp at line 6, boost/spirit/home/classic/actor/ref_const_ref_actor.hpp at line 6, boost/spirit/home/classic/actor/ref_const_ref_const_ref_a.hpp at line 6, boost/spirit/home/classic/actor/ref_const_ref_value_actor.hpp at line 6, boost/spirit/home/classic/actor/ref_value_actor.hpp at line 7, boost/spirit/home/classic/actor/swap_actor.hpp at line 6, boost/spirit/home/classic/actor/typeof.hpp at line 6, boost/spirit/home/classic/attribute.hpp at line 7, boost/spirit/home/classic/attribute/closure.hpp at line 7, boost/spirit/home/classic/attribute/closure_context.hpp at line 7, boost/spirit/home/classic/attribute/closure_fwd.hpp at line 6, boost/spirit/home/classic/attribute/parametric.hpp at line 6, boost/spirit/home/classic/attribute/typeof.hpp at line 6, boost/spirit/home/classic/core.hpp at line 11, boost/spirit/home/classic/core/assert.hpp at line 7, boost/spirit/home/classic/core/composite/actions.hpp at line 6, boost/spirit/home/classic/core/composite/alternative.hpp at line 8, boost/spirit/home/classic/core/composite/composite.hpp at line 6, boost/spirit/home/classic/core/composite/difference.hpp at line 8, boost/spirit/home/classic/core/composite/directives.hpp at line 7, boost/spirit/home/classic/core/composite/epsilon.hpp at line 7, boost/spirit/home/classic/core/composite/exclusive_or.hpp at line 8, boost/spirit/home/classic/core/composite/intersection.hpp at line 8, boost/spirit/home/classic/core/composite/kleene_star.hpp at line 8, boost/spirit/home/classic/core/composite/list.hpp at line 8, boost/spirit/home/classic/core/composite/no_actions.hpp at line 7, boost/spirit/home/classic/core/composite/operators.hpp at line 8, boost/spirit/home/classic/core/composite/optional.hpp at line 8, boost/spirit/home/classic/core/composite/positive.hpp at line 8, boost/spirit/home/classic/core/composite/sequence.hpp at line 8, boost/spirit/home/classic/core/composite/sequential_and.hpp at line 8, boost/spirit/home/classic/core/composite/sequential_or.hpp at line 8, boost/spirit/home/classic/core/config.hpp at line 6, boost/spirit/home/classic/core/match.hpp at line 6, boost/spirit/home/classic/core/nil.hpp at line 6, boost/spirit/home/classic/core/non_terminal/grammar.hpp at line 8, boost/spirit/home/classic/core/non_terminal/impl/static.hpp at line 6, boost/spirit/home/classic/core/non_terminal/parser_context.hpp at line 7, boost/spirit/home/classic/core/non_terminal/parser_id.hpp at line 7, boost/spirit/home/classic/core/non_terminal/rule.hpp at line 6, boost/spirit/home/classic/core/non_terminal/subrule.hpp at line 7, boost/spirit/home/classic/core/non_terminal/subrule_fwd.hpp at line 6, boost/spirit/home/classic/core/parser.hpp at line 6, boost/spirit/home/classic/core/primitives/numerics.hpp at line 7, boost/spirit/home/classic/core/primitives/numerics_fwd.hpp at line 6, boost/spirit/home/classic/core/primitives/primitives.hpp at line 7, boost/spirit/home/classic/core/safe_bool.hpp at line 6, boost/spirit/home/classic/core/scanner/scanner.hpp at line 6, boost/spirit/home/classic/core/scanner/scanner_fwd.hpp at line 6, boost/spirit/home/classic/core/scanner/skipper.hpp at line 6, boost/spirit/home/classic/core/scanner/skipper_fwd.hpp at line 6, boost/spirit/home/classic/core/typeof.hpp at line 6, boost/spirit/home/classic/debug.hpp at line 7, boost/spirit/home/classic/debug/debug_node.hpp at line 8, boost/spirit/home/classic/debug/minimal.hpp at line 7, boost/spirit/home/classic/debug/parser_names.hpp at line 7, boost/spirit/home/classic/debug/typeof.hpp at line 6, boost/spirit/home/classic/dynamic.hpp at line 8, boost/spirit/home/classic/dynamic/for.hpp at line 7, boost/spirit/home/classic/dynamic/if.hpp at line 8, boost/spirit/home/classic/dynamic/lazy.hpp at line 7, boost/spirit/home/classic/dynamic/rule_alias.hpp at line 6, boost/spirit/home/classic/dynamic/select.hpp at line 6, boost/spirit/home/classic/dynamic/stored_rule.hpp at line 6, boost/spirit/home/classic/dynamic/stored_rule_fwd.hpp at line 6, boost/spirit/home/classic/dynamic/switch.hpp at line 6, boost/spirit/home/classic/dynamic/typeof.hpp at line 6, boost/spirit/home/classic/dynamic/while.hpp at line 7, boost/spirit/home/classic/error_handling.hpp at line 6, boost/spirit/home/classic/error_handling/exceptions.hpp at line 6, boost/spirit/home/classic/error_handling/exceptions_fwd.hpp at line 6, boost/spirit/home/classic/error_handling/typeof.hpp at line 6, boost/spirit/home/classic/iterator.hpp at line 7, boost/spirit/home/classic/iterator/file_iterator.hpp at line 8, boost/spirit/home/classic/iterator/file_iterator_fwd.hpp at line 6, boost/spirit/home/classic/iterator/fixed_size_queue.hpp at line 7, boost/spirit/home/classic/iterator/multi_pass.hpp at line 6, boost/spirit/home/classic/iterator/multi_pass_fwd.hpp at line 6, boost/spirit/home/classic/iterator/position_iterator.hpp at line 8, boost/spirit/home/classic/iterator/position_iterator_fwd.hpp at line 7, boost/spirit/home/classic/iterator/typeof.hpp at line 6, boost/spirit/home/classic/meta.hpp at line 7, boost/spirit/home/classic/meta/as_parser.hpp at line 7, boost/spirit/home/classic/meta/fundamental.hpp at line 6, boost/spirit/home/classic/meta/parser_traits.hpp at line 8, boost/spirit/home/classic/meta/refactoring.hpp at line 6, boost/spirit/home/classic/meta/traverse.hpp at line 7, boost/spirit/home/classic/namespace.hpp at line 7, boost/spirit/home/classic/phoenix.hpp at line 6, boost/spirit/home/classic/phoenix/actor.hpp at line 6, boost/spirit/home/classic/phoenix/binders.hpp at line 6, boost/spirit/home/classic/phoenix/casts.hpp at line 7, boost/spirit/home/classic/phoenix/closures.hpp at line 7, boost/spirit/home/classic/phoenix/composite.hpp at line 6, boost/spirit/home/classic/phoenix/functions.hpp at line 6, boost/spirit/home/classic/phoenix/new.hpp at line 8, boost/spirit/home/classic/phoenix/operators.hpp at line 6, boost/spirit/home/classic/phoenix/primitives.hpp at line 6, boost/spirit/home/classic/phoenix/special_ops.hpp at line 6, boost/spirit/home/classic/phoenix/statements.hpp at line 6, boost/spirit/home/classic/phoenix/tuple_helpers.hpp at line 7, boost/spirit/home/classic/phoenix/tuples.hpp at line 6, boost/spirit/home/classic/symbols.hpp at line 6, boost/spirit/home/classic/symbols/symbols.hpp at line 6, boost/spirit/home/classic/symbols/symbols_fwd.hpp at line 6, boost/spirit/home/classic/symbols/typeof.hpp at line 6, boost/spirit/home/classic/tree/ast.hpp at line 7, boost/spirit/home/classic/tree/ast_fwd.hpp at line 6, boost/spirit/home/classic/tree/common.hpp at line 8, boost/spirit/home/classic/tree/common_fwd.hpp at line 6, boost/spirit/home/classic/tree/parse_tree.hpp at line 7, boost/spirit/home/classic/tree/parse_tree_fwd.hpp at line 6, boost/spirit/home/classic/tree/parse_tree_utils.hpp at line 7, boost/spirit/home/classic/tree/tree_to_xml.hpp at line 7, boost/spirit/home/classic/tree/typeof.hpp at line 6, boost/spirit/home/classic/utility.hpp at line 12, boost/spirit/home/classic/utility/chset.hpp at line 7, boost/spirit/home/classic/utility/chset_operators.hpp at line 7, boost/spirit/home/classic/utility/confix.hpp at line 6, boost/spirit/home/classic/utility/confix_fwd.hpp at line 6, boost/spirit/home/classic/utility/distinct.hpp at line 7, boost/spirit/home/classic/utility/distinct_fwd.hpp at line 6, boost/spirit/home/classic/utility/escape_char.hpp at line 6, boost/spirit/home/classic/utility/escape_char_fwd.hpp at line 6, boost/spirit/home/classic/utility/flush_multi_pass.hpp at line 6, boost/spirit/home/classic/utility/functor_parser.hpp at line 7, boost/spirit/home/classic/utility/grammar_def.hpp at line 7, boost/spirit/home/classic/utility/grammar_def_fwd.hpp at line 6, boost/spirit/home/classic/utility/impl/chset/basic_chset.hpp at line 7, boost/spirit/home/classic/utility/impl/chset/range_run.hpp at line 6, boost/spirit/home/classic/utility/lists.hpp at line 6, boost/spirit/home/classic/utility/lists_fwd.hpp at line 6, boost/spirit/home/classic/utility/loops.hpp at line 8, boost/spirit/home/classic/utility/regex.hpp at line 6, boost/spirit/home/classic/utility/rule_parser.hpp at line 6, boost/spirit/home/classic/utility/scoped_lock.hpp at line 6, boost/spirit/home/classic/utility/typeof.hpp at line 6, boost/spirit/home/classic/version.hpp at line 6, boost/spirit/home/support/char_set/basic_chset.hpp at line 7, boost/spirit/home/support/common_terminals.hpp at line 6, boost/spirit/home/support/detail/make_cons.hpp at line 6, boost/spirit/home/support/make_component.hpp at line 6, boost/spirit/home/support/meta_compiler.hpp at line 6, boost/spirit/home/support/modify.hpp at line 6, boost/spirit/home/x3/version.hpp at line 7, boost/spirit/include/classic.hpp at line 7, boost/spirit/include/classic_actions.hpp at line 7, boost/spirit/include/classic_actor.hpp at line 7, boost/spirit/include/classic_alternative.hpp at line 7, boost/spirit/include/classic_as_parser.hpp at line 7, boost/spirit/include/classic_assert.hpp at line 7, boost/spirit/include/classic_assign_actor.hpp at line 7, boost/spirit/include/classic_assign_key_actor.hpp at line 7, boost/spirit/include/classic_ast.hpp at line 7, boost/spirit/include/classic_ast_fwd.hpp at line 7, boost/spirit/include/classic_attribute.hpp at line 7, boost/spirit/include/classic_basic_chset.hpp at line 7, boost/spirit/include/classic_chset.hpp at line 7, boost/spirit/include/classic_chset_operators.hpp at line 7, boost/spirit/include/classic_clear_actor.hpp at line 7, boost/spirit/include/classic_closure.hpp at line 7, boost/spirit/include/classic_closure_context.hpp at line 7, boost/spirit/include/classic_closure_fwd.hpp at line 7, boost/spirit/include/classic_common.hpp at line 7, boost/spirit/include/classic_common_fwd.hpp at line 7, boost/spirit/include/classic_composite.hpp at line 7, boost/spirit/include/classic_config.hpp at line 7, boost/spirit/include/classic_confix.hpp at line 7, boost/spirit/include/classic_confix_fwd.hpp at line 7, boost/spirit/include/classic_core.hpp at line 7, boost/spirit/include/classic_debug.hpp at line 7, boost/spirit/include/classic_debug_node.hpp at line 7, boost/spirit/include/classic_decrement_actor.hpp at line 7, boost/spirit/include/classic_difference.hpp at line 7, boost/spirit/include/classic_directives.hpp at line 7, boost/spirit/include/classic_distinct.hpp at line 7, boost/spirit/include/classic_distinct_fwd.hpp at line 7, boost/spirit/include/classic_dynamic.hpp at line 7, boost/spirit/include/classic_epsilon.hpp at line 7, boost/spirit/include/classic_erase_actor.hpp at line 7, boost/spirit/include/classic_error_handling.hpp at line 7, boost/spirit/include/classic_escape_char.hpp at line 7, boost/spirit/include/classic_escape_char_fwd.hpp at line 7, boost/spirit/include/classic_exceptions.hpp at line 7, boost/spirit/include/classic_exceptions_fwd.hpp at line 7, boost/spirit/include/classic_exclusive_or.hpp at line 7, boost/spirit/include/classic_file_iterator.hpp at line 7, boost/spirit/include/classic_file_iterator_fwd.hpp at line 7, boost/spirit/include/classic_fixed_size_queue.hpp at line 7, boost/spirit/include/classic_flush_multi_pass.hpp at line 7, boost/spirit/include/classic_for.hpp at line 7, boost/spirit/include/classic_functor_parser.hpp at line 7, boost/spirit/include/classic_fundamental.hpp at line 7, boost/spirit/include/classic_grammar.hpp at line 7, boost/spirit/include/classic_grammar_def.hpp at line 7, boost/spirit/include/classic_grammar_def_fwd.hpp at line 7, boost/spirit/include/classic_if.hpp at line 7, boost/spirit/include/classic_increment_actor.hpp at line 7, boost/spirit/include/classic_insert_at_actor.hpp at line 7, boost/spirit/include/classic_insert_key_actor.hpp at line 7, boost/spirit/include/classic_intersection.hpp at line 7, boost/spirit/include/classic_iterator.hpp at line 7, boost/spirit/include/classic_kleene_star.hpp at line 7, boost/spirit/include/classic_lazy.hpp at line 7, boost/spirit/include/classic_list.hpp at line 7, boost/spirit/include/classic_lists.hpp at line 7, boost/spirit/include/classic_lists_fwd.hpp at line 7, boost/spirit/include/classic_loops.hpp at line 7, boost/spirit/include/classic_match.hpp at line 7, boost/spirit/include/classic_meta.hpp at line 7, boost/spirit/include/classic_minimal.hpp at line 7, boost/spirit/include/classic_multi_pass.hpp at line 7, boost/spirit/include/classic_multi_pass_fwd.hpp at line 7, boost/spirit/include/classic_nil.hpp at line 7, boost/spirit/include/classic_no_actions.hpp at line 7, boost/spirit/include/classic_numerics.hpp at line 7, boost/spirit/include/classic_numerics_fwd.hpp at line 7, boost/spirit/include/classic_operators.hpp at line 7, boost/spirit/include/classic_optional.hpp at line 7, boost/spirit/include/classic_parametric.hpp at line 7, boost/spirit/include/classic_parse_tree.hpp at line 7, boost/spirit/include/classic_parse_tree_fwd.hpp at line 7, boost/spirit/include/classic_parse_tree_utils.hpp at line 7, boost/spirit/include/classic_parser.hpp at line 7, boost/spirit/include/classic_parser_context.hpp at line 7, boost/spirit/include/classic_parser_id.hpp at line 7, boost/spirit/include/classic_parser_names.hpp at line 7, boost/spirit/include/classic_parser_traits.hpp at line 7, boost/spirit/include/classic_position_iterator.hpp at line 7, boost/spirit/include/classic_position_iterator_fwd.hpp at line 7, boost/spirit/include/classic_positive.hpp at line 7, boost/spirit/include/classic_primitives.hpp at line 7, boost/spirit/include/classic_push_back_actor.hpp at line 7, boost/spirit/include/classic_push_front_actor.hpp at line 7, boost/spirit/include/classic_range_run.hpp at line 7, boost/spirit/include/classic_ref_actor.hpp at line 7, boost/spirit/include/classic_ref_const_ref_actor.hpp at line 7, boost/spirit/include/classic_ref_const_ref_const_ref_a.hpp at line 7, boost/spirit/include/classic_ref_const_ref_value_actor.hpp at line 7, boost/spirit/include/classic_ref_value_actor.hpp at line 7, boost/spirit/include/classic_refactoring.hpp at line 7, boost/spirit/include/classic_regex.hpp at line 7, boost/spirit/include/classic_rule.hpp at line 7, boost/spirit/include/classic_rule_alias.hpp at line 7, boost/spirit/include/classic_rule_parser.hpp at line 7, boost/spirit/include/classic_safe_bool.hpp at line 7, boost/spirit/include/classic_scanner.hpp at line 7, boost/spirit/include/classic_scanner_fwd.hpp at line 7, boost/spirit/include/classic_scoped_lock.hpp at line 7, boost/spirit/include/classic_select.hpp at line 7, boost/spirit/include/classic_sequence.hpp at line 7, boost/spirit/include/classic_sequential_and.hpp at line 7, boost/spirit/include/classic_sequential_or.hpp at line 7, boost/spirit/include/classic_skipper.hpp at line 7, boost/spirit/include/classic_skipper_fwd.hpp at line 7, boost/spirit/include/classic_spirit.hpp at line 6, boost/spirit/include/classic_static.hpp at line 7, boost/spirit/include/classic_stored_rule.hpp at line 7, boost/spirit/include/classic_stored_rule_fwd.hpp at line 7, boost/spirit/include/classic_subrule.hpp at line 7, boost/spirit/include/classic_subrule_fwd.hpp at line 7, boost/spirit/include/classic_swap_actor.hpp at line 7, boost/spirit/include/classic_switch.hpp at line 7, boost/spirit/include/classic_symbols.hpp at line 7, boost/spirit/include/classic_symbols_fwd.hpp at line 7, boost/spirit/include/classic_traverse.hpp at line 7, boost/spirit/include/classic_tree_to_xml.hpp at line 7, boost/spirit/include/classic_typeof.hpp at line 7, boost/spirit/include/classic_utility.hpp at line 7, boost/spirit/include/classic_version.hpp at line 7, boost/spirit/include/classic_while.hpp at line 7, boost/spirit/include/phoenix1.hpp at line 7, boost/spirit/include/phoenix1_actor.hpp at line 7, boost/spirit/include/phoenix1_binders.hpp at line 7, boost/spirit/include/phoenix1_casts.hpp at line 7, boost/spirit/include/phoenix1_closures.hpp at line 7, boost/spirit/include/phoenix1_composite.hpp at line 7, boost/spirit/include/phoenix1_functions.hpp at line 7, boost/spirit/include/phoenix1_new.hpp at line 7, boost/spirit/include/phoenix1_operators.hpp at line 7, boost/spirit/include/phoenix1_primitives.hpp at line 7, boost/spirit/include/phoenix1_special_ops.hpp at line 7, boost/spirit/include/phoenix1_statements.hpp at line 7, boost/spirit/include/phoenix1_tuple_helpers.hpp at line 7, boost/spirit/include/phoenix1_tuples.hpp at line 7, boost/spirit/include/version.hpp at line 7, boost/spirit/repository/home/qi/operator/detail/keywords.hpp at line 5, boost/spirit/version.hpp at line 7
+ License text:
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/spirit.hpp [6:7]
+ boost/spirit/home/classic.hpp [16:17]
+ boost/spirit/home/classic/actor.hpp [5:6]
+ boost/spirit/home/classic/actor/assign_actor.hpp [5:6]
+ boost/spirit/home/classic/actor/assign_key_actor.hpp [5:6]
+ boost/spirit/home/classic/actor/clear_actor.hpp [5:6]
+ boost/spirit/home/classic/actor/decrement_actor.hpp [5:6]
+ boost/spirit/home/classic/actor/erase_actor.hpp [5:6]
+ boost/spirit/home/classic/actor/increment_actor.hpp [5:6]
+ boost/spirit/home/classic/actor/insert_at_actor.hpp [5:6]
+ boost/spirit/home/classic/actor/insert_key_actor.hpp [5:6]
+ boost/spirit/home/classic/actor/push_back_actor.hpp [5:6]
+ boost/spirit/home/classic/actor/push_front_actor.hpp [5:6]
+ boost/spirit/home/classic/actor/ref_actor.hpp [5:6]
+ boost/spirit/home/classic/actor/ref_const_ref_actor.hpp [5:6]
+ boost/spirit/home/classic/actor/ref_const_ref_const_ref_a.hpp [5:6]
+ boost/spirit/home/classic/actor/ref_const_ref_value_actor.hpp [5:6]
+ boost/spirit/home/classic/actor/ref_value_actor.hpp [6:7]
+ boost/spirit/home/classic/actor/swap_actor.hpp [5:6]
+ boost/spirit/home/classic/actor/typeof.hpp [5:6]
+ boost/spirit/home/classic/attribute.hpp [6:7]
+ boost/spirit/home/classic/attribute/closure.hpp [6:7]
+ boost/spirit/home/classic/attribute/closure_context.hpp [6:7]
+ boost/spirit/home/classic/attribute/closure_fwd.hpp [5:6]
+ boost/spirit/home/classic/attribute/parametric.hpp [5:6]
+ boost/spirit/home/classic/attribute/typeof.hpp [5:6]
+ boost/spirit/home/classic/core.hpp [10:11]
+ boost/spirit/home/classic/core/assert.hpp [6:7]
+ boost/spirit/home/classic/core/composite/actions.hpp [5:6]
+ boost/spirit/home/classic/core/composite/alternative.hpp [7:8]
+ boost/spirit/home/classic/core/composite/composite.hpp [5:6]
+ boost/spirit/home/classic/core/composite/difference.hpp [7:8]
+ boost/spirit/home/classic/core/composite/directives.hpp [6:7]
+ boost/spirit/home/classic/core/composite/epsilon.hpp [6:7]
+ boost/spirit/home/classic/core/composite/exclusive_or.hpp [7:8]
+ boost/spirit/home/classic/core/composite/intersection.hpp [7:8]
+ boost/spirit/home/classic/core/composite/kleene_star.hpp [7:8]
+ boost/spirit/home/classic/core/composite/list.hpp [7:8]
+ boost/spirit/home/classic/core/composite/no_actions.hpp [6:7]
+ boost/spirit/home/classic/core/composite/operators.hpp [7:8]
+ boost/spirit/home/classic/core/composite/optional.hpp [7:8]
+ boost/spirit/home/classic/core/composite/positive.hpp [7:8]
+ boost/spirit/home/classic/core/composite/sequence.hpp [7:8]
+ boost/spirit/home/classic/core/composite/sequential_and.hpp [7:8]
+ boost/spirit/home/classic/core/composite/sequential_or.hpp [7:8]
+ boost/spirit/home/classic/core/config.hpp [5:6]
+ boost/spirit/home/classic/core/match.hpp [5:6]
+ boost/spirit/home/classic/core/nil.hpp [5:6]
+ boost/spirit/home/classic/core/non_terminal/grammar.hpp [7:8]
+ boost/spirit/home/classic/core/non_terminal/impl/static.hpp [5:6]
+ boost/spirit/home/classic/core/non_terminal/parser_context.hpp [6:7]
+ boost/spirit/home/classic/core/non_terminal/parser_id.hpp [6:7]
+ boost/spirit/home/classic/core/non_terminal/rule.hpp [5:6]
+ boost/spirit/home/classic/core/non_terminal/subrule.hpp [6:7]
+ boost/spirit/home/classic/core/non_terminal/subrule_fwd.hpp [5:6]
+ boost/spirit/home/classic/core/parser.hpp [5:6]
+ boost/spirit/home/classic/core/primitives/numerics.hpp [6:7]
+ boost/spirit/home/classic/core/primitives/numerics_fwd.hpp [5:6]
+ boost/spirit/home/classic/core/primitives/primitives.hpp [6:7]
+ boost/spirit/home/classic/core/safe_bool.hpp [5:6]
+ boost/spirit/home/classic/core/scanner/scanner.hpp [5:6]
+ boost/spirit/home/classic/core/scanner/scanner_fwd.hpp [5:6]
+ boost/spirit/home/classic/core/scanner/skipper.hpp [5:6]
+ boost/spirit/home/classic/core/scanner/skipper_fwd.hpp [5:6]
+ boost/spirit/home/classic/core/typeof.hpp [5:6]
+ boost/spirit/home/classic/debug.hpp [6:7]
+ boost/spirit/home/classic/debug/debug_node.hpp [7:8]
+ boost/spirit/home/classic/debug/minimal.hpp [6:7]
+ boost/spirit/home/classic/debug/parser_names.hpp [6:7]
+ boost/spirit/home/classic/debug/typeof.hpp [5:6]
+ boost/spirit/home/classic/dynamic.hpp [7:8]
+ boost/spirit/home/classic/dynamic/for.hpp [6:7]
+ boost/spirit/home/classic/dynamic/if.hpp [7:8]
+ boost/spirit/home/classic/dynamic/lazy.hpp [6:7]
+ boost/spirit/home/classic/dynamic/rule_alias.hpp [5:6]
+ boost/spirit/home/classic/dynamic/select.hpp [5:6]
+ boost/spirit/home/classic/dynamic/stored_rule.hpp [5:6]
+ boost/spirit/home/classic/dynamic/stored_rule_fwd.hpp [5:6]
+ boost/spirit/home/classic/dynamic/switch.hpp [5:6]
+ boost/spirit/home/classic/dynamic/typeof.hpp [5:6]
+ boost/spirit/home/classic/dynamic/while.hpp [6:7]
+ boost/spirit/home/classic/error_handling.hpp [5:6]
+ boost/spirit/home/classic/error_handling/exceptions.hpp [5:6]
+ boost/spirit/home/classic/error_handling/exceptions_fwd.hpp [5:6]
+ boost/spirit/home/classic/error_handling/typeof.hpp [5:6]
+ boost/spirit/home/classic/iterator.hpp [6:7]
+ boost/spirit/home/classic/iterator/file_iterator.hpp [7:8]
+ boost/spirit/home/classic/iterator/file_iterator_fwd.hpp [5:6]
+ boost/spirit/home/classic/iterator/fixed_size_queue.hpp [6:7]
+ boost/spirit/home/classic/iterator/multi_pass.hpp [5:6]
+ boost/spirit/home/classic/iterator/multi_pass_fwd.hpp [5:6]
+ boost/spirit/home/classic/iterator/position_iterator.hpp [7:8]
+ boost/spirit/home/classic/iterator/position_iterator_fwd.hpp [6:7]
+ boost/spirit/home/classic/iterator/typeof.hpp [5:6]
+ boost/spirit/home/classic/meta.hpp [6:7]
+ boost/spirit/home/classic/meta/as_parser.hpp [6:7]
+ boost/spirit/home/classic/meta/fundamental.hpp [5:6]
+ boost/spirit/home/classic/meta/parser_traits.hpp [7:8]
+ boost/spirit/home/classic/meta/refactoring.hpp [5:6]
+ boost/spirit/home/classic/meta/traverse.hpp [6:7]
+ boost/spirit/home/classic/namespace.hpp [6:7]
+ boost/spirit/home/classic/phoenix.hpp [5:6]
+ boost/spirit/home/classic/phoenix/actor.hpp [5:6]
+ boost/spirit/home/classic/phoenix/binders.hpp [5:6]
+ boost/spirit/home/classic/phoenix/casts.hpp [6:7]
+ boost/spirit/home/classic/phoenix/closures.hpp [6:7]
+ boost/spirit/home/classic/phoenix/composite.hpp [5:6]
+ boost/spirit/home/classic/phoenix/functions.hpp [5:6]
+ boost/spirit/home/classic/phoenix/new.hpp [7:8]
+ boost/spirit/home/classic/phoenix/operators.hpp [5:6]
+ boost/spirit/home/classic/phoenix/primitives.hpp [5:6]
+ boost/spirit/home/classic/phoenix/special_ops.hpp [5:6]
+ boost/spirit/home/classic/phoenix/statements.hpp [5:6]
+ boost/spirit/home/classic/phoenix/tuple_helpers.hpp [6:7]
+ boost/spirit/home/classic/phoenix/tuples.hpp [5:6]
+ boost/spirit/home/classic/symbols.hpp [5:6]
+ boost/spirit/home/classic/symbols/symbols.hpp [5:6]
+ boost/spirit/home/classic/symbols/symbols_fwd.hpp [5:6]
+ boost/spirit/home/classic/symbols/typeof.hpp [5:6]
+ boost/spirit/home/classic/tree/ast.hpp [6:7]
+ boost/spirit/home/classic/tree/ast_fwd.hpp [5:6]
+ boost/spirit/home/classic/tree/common.hpp [7:8]
+ boost/spirit/home/classic/tree/common_fwd.hpp [5:6]
+ boost/spirit/home/classic/tree/parse_tree.hpp [6:7]
+ boost/spirit/home/classic/tree/parse_tree_fwd.hpp [5:6]
+ boost/spirit/home/classic/tree/parse_tree_utils.hpp [6:7]
+ boost/spirit/home/classic/tree/tree_to_xml.hpp [6:7]
+ boost/spirit/home/classic/tree/typeof.hpp [5:6]
+ boost/spirit/home/classic/utility.hpp [11:12]
+ boost/spirit/home/classic/utility/chset.hpp [6:7]
+ boost/spirit/home/classic/utility/chset_operators.hpp [6:7]
+ boost/spirit/home/classic/utility/confix.hpp [5:6]
+ boost/spirit/home/classic/utility/confix_fwd.hpp [5:6]
+ boost/spirit/home/classic/utility/distinct.hpp [6:7]
+ boost/spirit/home/classic/utility/distinct_fwd.hpp [5:6]
+ boost/spirit/home/classic/utility/escape_char.hpp [5:6]
+ boost/spirit/home/classic/utility/escape_char_fwd.hpp [5:6]
+ boost/spirit/home/classic/utility/flush_multi_pass.hpp [5:6]
+ boost/spirit/home/classic/utility/functor_parser.hpp [6:7]
+ boost/spirit/home/classic/utility/grammar_def.hpp [6:7]
+ boost/spirit/home/classic/utility/grammar_def_fwd.hpp [5:6]
+ boost/spirit/home/classic/utility/impl/chset/basic_chset.hpp [6:7]
+ boost/spirit/home/classic/utility/impl/chset/range_run.hpp [5:6]
+ boost/spirit/home/classic/utility/lists.hpp [5:6]
+ boost/spirit/home/classic/utility/lists_fwd.hpp [5:6]
+ boost/spirit/home/classic/utility/loops.hpp [7:8]
+ boost/spirit/home/classic/utility/regex.hpp [5:6]
+ boost/spirit/home/classic/utility/rule_parser.hpp [5:6]
+ boost/spirit/home/classic/utility/scoped_lock.hpp [5:6]
+ boost/spirit/home/classic/utility/typeof.hpp [5:6]
+ boost/spirit/home/classic/version.hpp [5:6]
+ boost/spirit/home/support/char_set/basic_chset.hpp [6:7]
+ boost/spirit/home/support/common_terminals.hpp [5:6]
+ boost/spirit/home/support/detail/make_cons.hpp [5:6]
+ boost/spirit/home/support/make_component.hpp [5:6]
+ boost/spirit/home/support/meta_compiler.hpp [5:6]
+ boost/spirit/home/support/modify.hpp [5:6]
+ boost/spirit/home/x3/version.hpp [6:7]
+ boost/spirit/include/classic.hpp [6:7]
+ boost/spirit/include/classic_actions.hpp [6:7]
+ boost/spirit/include/classic_actor.hpp [6:7]
+ boost/spirit/include/classic_alternative.hpp [6:7]
+ boost/spirit/include/classic_as_parser.hpp [6:7]
+ boost/spirit/include/classic_assert.hpp [6:7]
+ boost/spirit/include/classic_assign_actor.hpp [6:7]
+ boost/spirit/include/classic_assign_key_actor.hpp [6:7]
+ boost/spirit/include/classic_ast.hpp [6:7]
+ boost/spirit/include/classic_ast_fwd.hpp [6:7]
+ boost/spirit/include/classic_attribute.hpp [6:7]
+ boost/spirit/include/classic_basic_chset.hpp [6:7]
+ boost/spirit/include/classic_chset.hpp [6:7]
+ boost/spirit/include/classic_chset_operators.hpp [6:7]
+ boost/spirit/include/classic_clear_actor.hpp [6:7]
+ boost/spirit/include/classic_closure.hpp [6:7]
+ boost/spirit/include/classic_closure_context.hpp [6:7]
+ boost/spirit/include/classic_closure_fwd.hpp [6:7]
+ boost/spirit/include/classic_common.hpp [6:7]
+ boost/spirit/include/classic_common_fwd.hpp [6:7]
+ boost/spirit/include/classic_composite.hpp [6:7]
+ boost/spirit/include/classic_config.hpp [6:7]
+ boost/spirit/include/classic_confix.hpp [6:7]
+ boost/spirit/include/classic_confix_fwd.hpp [6:7]
+ boost/spirit/include/classic_core.hpp [6:7]
+ boost/spirit/include/classic_debug.hpp [6:7]
+ boost/spirit/include/classic_debug_node.hpp [6:7]
+ boost/spirit/include/classic_decrement_actor.hpp [6:7]
+ boost/spirit/include/classic_difference.hpp [6:7]
+ boost/spirit/include/classic_directives.hpp [6:7]
+ boost/spirit/include/classic_distinct.hpp [6:7]
+ boost/spirit/include/classic_distinct_fwd.hpp [6:7]
+ boost/spirit/include/classic_dynamic.hpp [6:7]
+ boost/spirit/include/classic_epsilon.hpp [6:7]
+ boost/spirit/include/classic_erase_actor.hpp [6:7]
+ boost/spirit/include/classic_error_handling.hpp [6:7]
+ boost/spirit/include/classic_escape_char.hpp [6:7]
+ boost/spirit/include/classic_escape_char_fwd.hpp [6:7]
+ boost/spirit/include/classic_exceptions.hpp [6:7]
+ boost/spirit/include/classic_exceptions_fwd.hpp [6:7]
+ boost/spirit/include/classic_exclusive_or.hpp [6:7]
+ boost/spirit/include/classic_file_iterator.hpp [6:7]
+ boost/spirit/include/classic_file_iterator_fwd.hpp [6:7]
+ boost/spirit/include/classic_fixed_size_queue.hpp [6:7]
+ boost/spirit/include/classic_flush_multi_pass.hpp [6:7]
+ boost/spirit/include/classic_for.hpp [6:7]
+ boost/spirit/include/classic_functor_parser.hpp [6:7]
+ boost/spirit/include/classic_fundamental.hpp [6:7]
+ boost/spirit/include/classic_grammar.hpp [6:7]
+ boost/spirit/include/classic_grammar_def.hpp [6:7]
+ boost/spirit/include/classic_grammar_def_fwd.hpp [6:7]
+ boost/spirit/include/classic_if.hpp [6:7]
+ boost/spirit/include/classic_increment_actor.hpp [6:7]
+ boost/spirit/include/classic_insert_at_actor.hpp [6:7]
+ boost/spirit/include/classic_insert_key_actor.hpp [6:7]
+ boost/spirit/include/classic_intersection.hpp [6:7]
+ boost/spirit/include/classic_iterator.hpp [6:7]
+ boost/spirit/include/classic_kleene_star.hpp [6:7]
+ boost/spirit/include/classic_lazy.hpp [6:7]
+ boost/spirit/include/classic_list.hpp [6:7]
+ boost/spirit/include/classic_lists.hpp [6:7]
+ boost/spirit/include/classic_lists_fwd.hpp [6:7]
+ boost/spirit/include/classic_loops.hpp [6:7]
+ boost/spirit/include/classic_match.hpp [6:7]
+ boost/spirit/include/classic_meta.hpp [6:7]
+ boost/spirit/include/classic_minimal.hpp [6:7]
+ boost/spirit/include/classic_multi_pass.hpp [6:7]
+ boost/spirit/include/classic_multi_pass_fwd.hpp [6:7]
+ boost/spirit/include/classic_nil.hpp [6:7]
+ boost/spirit/include/classic_no_actions.hpp [6:7]
+ boost/spirit/include/classic_numerics.hpp [6:7]
+ boost/spirit/include/classic_numerics_fwd.hpp [6:7]
+ boost/spirit/include/classic_operators.hpp [6:7]
+ boost/spirit/include/classic_optional.hpp [6:7]
+ boost/spirit/include/classic_parametric.hpp [6:7]
+ boost/spirit/include/classic_parse_tree.hpp [6:7]
+ boost/spirit/include/classic_parse_tree_fwd.hpp [6:7]
+ boost/spirit/include/classic_parse_tree_utils.hpp [6:7]
+ boost/spirit/include/classic_parser.hpp [6:7]
+ boost/spirit/include/classic_parser_context.hpp [6:7]
+ boost/spirit/include/classic_parser_id.hpp [6:7]
+ boost/spirit/include/classic_parser_names.hpp [6:7]
+ boost/spirit/include/classic_parser_traits.hpp [6:7]
+ boost/spirit/include/classic_position_iterator.hpp [6:7]
+ boost/spirit/include/classic_position_iterator_fwd.hpp [6:7]
+ boost/spirit/include/classic_positive.hpp [6:7]
+ boost/spirit/include/classic_primitives.hpp [6:7]
+ boost/spirit/include/classic_push_back_actor.hpp [6:7]
+ boost/spirit/include/classic_push_front_actor.hpp [6:7]
+ boost/spirit/include/classic_range_run.hpp [6:7]
+ boost/spirit/include/classic_ref_actor.hpp [6:7]
+ boost/spirit/include/classic_ref_const_ref_actor.hpp [6:7]
+ boost/spirit/include/classic_ref_const_ref_const_ref_a.hpp [6:7]
+ boost/spirit/include/classic_ref_const_ref_value_actor.hpp [6:7]
+ boost/spirit/include/classic_ref_value_actor.hpp [6:7]
+ boost/spirit/include/classic_refactoring.hpp [6:7]
+ boost/spirit/include/classic_regex.hpp [6:7]
+ boost/spirit/include/classic_rule.hpp [6:7]
+ boost/spirit/include/classic_rule_alias.hpp [6:7]
+ boost/spirit/include/classic_rule_parser.hpp [6:7]
+ boost/spirit/include/classic_safe_bool.hpp [6:7]
+ boost/spirit/include/classic_scanner.hpp [6:7]
+ boost/spirit/include/classic_scanner_fwd.hpp [6:7]
+ boost/spirit/include/classic_scoped_lock.hpp [6:7]
+ boost/spirit/include/classic_select.hpp [6:7]
+ boost/spirit/include/classic_sequence.hpp [6:7]
+ boost/spirit/include/classic_sequential_and.hpp [6:7]
+ boost/spirit/include/classic_sequential_or.hpp [6:7]
+ boost/spirit/include/classic_skipper.hpp [6:7]
+ boost/spirit/include/classic_skipper_fwd.hpp [6:7]
+ boost/spirit/include/classic_spirit.hpp [5:6]
+ boost/spirit/include/classic_static.hpp [6:7]
+ boost/spirit/include/classic_stored_rule.hpp [6:7]
+ boost/spirit/include/classic_stored_rule_fwd.hpp [6:7]
+ boost/spirit/include/classic_subrule.hpp [6:7]
+ boost/spirit/include/classic_subrule_fwd.hpp [6:7]
+ boost/spirit/include/classic_swap_actor.hpp [6:7]
+ boost/spirit/include/classic_switch.hpp [6:7]
+ boost/spirit/include/classic_symbols.hpp [6:7]
+ boost/spirit/include/classic_symbols_fwd.hpp [6:7]
+ boost/spirit/include/classic_traverse.hpp [6:7]
+ boost/spirit/include/classic_tree_to_xml.hpp [6:7]
+ boost/spirit/include/classic_typeof.hpp [6:7]
+ boost/spirit/include/classic_utility.hpp [6:7]
+ boost/spirit/include/classic_version.hpp [6:7]
+ boost/spirit/include/classic_while.hpp [6:7]
+ boost/spirit/include/phoenix1.hpp [6:7]
+ boost/spirit/include/phoenix1_actor.hpp [6:7]
+ boost/spirit/include/phoenix1_binders.hpp [6:7]
+ boost/spirit/include/phoenix1_casts.hpp [6:7]
+ boost/spirit/include/phoenix1_closures.hpp [6:7]
+ boost/spirit/include/phoenix1_composite.hpp [6:7]
+ boost/spirit/include/phoenix1_functions.hpp [6:7]
+ boost/spirit/include/phoenix1_new.hpp [6:7]
+ boost/spirit/include/phoenix1_operators.hpp [6:7]
+ boost/spirit/include/phoenix1_primitives.hpp [6:7]
+ boost/spirit/include/phoenix1_special_ops.hpp [6:7]
+ boost/spirit/include/phoenix1_statements.hpp [6:7]
+ boost/spirit/include/phoenix1_tuple_helpers.hpp [6:7]
+ boost/spirit/include/phoenix1_tuples.hpp [6:7]
+ boost/spirit/include/version.hpp [6:7]
+ boost/spirit/repository/home/qi/operator/detail/keywords.hpp [4:5]
+ boost/spirit/version.hpp [6:7]
+
+KEEP BSL-1.0 118b3ba302185a79b12cdba1c2e58ffc
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/cstdfloat.hpp at line 6, boost/math/cstdfloat/cstdfloat_cmath.hpp at line 6, boost/math/cstdfloat/cstdfloat_complex.hpp at line 6, boost/math/cstdfloat/cstdfloat_iostream.hpp at line 6, boost/math/cstdfloat/cstdfloat_limits.hpp at line 6, boost/math/cstdfloat/cstdfloat_types.hpp at line 6
+ License text:
+ // Distributed under the Boost Software License,
+ // Version 1.0. (See accompanying file LICENSE_1_0.txt
+ // or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/cstdfloat.hpp [5:7]
+ boost/math/cstdfloat/cstdfloat_cmath.hpp [5:7]
+ boost/math/cstdfloat/cstdfloat_complex.hpp [5:7]
+ boost/math/cstdfloat/cstdfloat_iostream.hpp [5:7]
+ boost/math/cstdfloat/cstdfloat_limits.hpp [5:7]
+ boost/math/cstdfloat/cstdfloat_types.hpp [5:7]
+
+KEEP BSL-1.0 128c17e73213317d8ae187104d4937dc
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/qvm/all.hpp at line 4, boost/qvm/assert.hpp at line 4, boost/qvm/deduce_mat.hpp at line 4, boost/qvm/deduce_quat.hpp at line 4, boost/qvm/deduce_scalar.hpp at line 4, boost/qvm/deduce_vec.hpp at line 4, boost/qvm/detail/cofactor_impl.hpp at line 4, boost/qvm/detail/determinant_impl.hpp at line 4, boost/qvm/detail/mat_assign.hpp at line 4, boost/qvm/detail/quat_assign.hpp at line 4, boost/qvm/detail/remove_const.hpp at line 4, boost/qvm/detail/swizzle_traits.hpp at line 4, boost/qvm/detail/transp_impl.hpp at line 4, boost/qvm/detail/vec_assign.hpp at line 4, boost/qvm/enable_if.hpp at line 4, boost/qvm/error.hpp at line 4, boost/qvm/gen/mat_assign2.hpp at line 4, boost/qvm/gen/mat_assign3.hpp at line 4, boost/qvm/gen/mat_assign4.hpp at line 4, boost/qvm/gen/mat_operations2.hpp at line 4, boost/qvm/gen/mat_operations3.hpp at line 4, boost/qvm/gen/mat_operations4.hpp at line 4, boost/qvm/gen/swizzle2.hpp at line 4, boost/qvm/gen/swizzle3.hpp at line 4, boost/qvm/gen/swizzle4.hpp at line 4, boost/qvm/gen/vec_assign2.hpp at line 4, boost/qvm/gen/vec_assign3.hpp at line 4, boost/qvm/gen/vec_assign4.hpp at line 4, boost/qvm/gen/vec_mat_operations2.hpp at line 4, boost/qvm/gen/vec_mat_operations3.hpp at line 4, boost/qvm/gen/vec_mat_operations4.hpp at line 4, boost/qvm/gen/vec_operations2.hpp at line 4, boost/qvm/gen/vec_operations3.hpp at line 4, boost/qvm/gen/vec_operations4.hpp at line 4, boost/qvm/inline.hpp at line 4, boost/qvm/map.hpp at line 4, boost/qvm/map_mat_mat.hpp at line 4, boost/qvm/map_mat_vec.hpp at line 4, boost/qvm/map_vec_mat.hpp at line 4, boost/qvm/mat.hpp at line 4, boost/qvm/mat_access.hpp at line 4, boost/qvm/mat_operations.hpp at line 4, boost/qvm/mat_operations2.hpp at line 4, boost/qvm/mat_operations3.hpp at line 4, boost/qvm/mat_operations4.hpp at line 4, boost/qvm/mat_traits.hpp at line 4, boost/qvm/mat_traits_array.hpp at line 4, boost/qvm/mat_traits_defaults.hpp at line 4, boost/qvm/math.hpp at line 4, boost/qvm/operations.hpp at line 4, boost/qvm/quat.hpp at line 4, boost/qvm/quat_access.hpp at line 4, boost/qvm/quat_operations.hpp at line 4, boost/qvm/quat_traits.hpp at line 4, boost/qvm/quat_traits_array.hpp at line 4, boost/qvm/quat_traits_defaults.hpp at line 4, boost/qvm/quat_vec_operations.hpp at line 4, boost/qvm/scalar_traits.hpp at line 4, boost/qvm/static_assert.hpp at line 4, boost/qvm/swizzle.hpp at line 4, boost/qvm/swizzle2.hpp at line 4, boost/qvm/swizzle3.hpp at line 4, boost/qvm/swizzle4.hpp at line 4, boost/qvm/throw_exception.hpp at line 4, boost/qvm/to_string.hpp at line 4, boost/qvm/vec.hpp at line 4, boost/qvm/vec_access.hpp at line 4, boost/qvm/vec_mat_operations.hpp at line 4, boost/qvm/vec_mat_operations2.hpp at line 4, boost/qvm/vec_mat_operations3.hpp at line 4, boost/qvm/vec_mat_operations4.hpp at line 4, boost/qvm/vec_operations.hpp at line 4, boost/qvm/vec_operations2.hpp at line 4, boost/qvm/vec_operations3.hpp at line 4, boost/qvm/vec_operations4.hpp at line 4, boost/qvm/vec_traits.hpp at line 4, boost/qvm/vec_traits_array.hpp at line 4, boost/qvm/vec_traits_defaults.hpp at line 4
+ License text:
+ //Distributed under the Boost Software License, Version 1.0. (See accompanying
+ //file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/qvm/all.hpp [3:4]
+ boost/qvm/assert.hpp [3:4]
+ boost/qvm/deduce_mat.hpp [3:4]
+ boost/qvm/deduce_quat.hpp [3:4]
+ boost/qvm/deduce_scalar.hpp [3:4]
+ boost/qvm/deduce_vec.hpp [3:4]
+ boost/qvm/detail/cofactor_impl.hpp [3:4]
+ boost/qvm/detail/determinant_impl.hpp [3:4]
+ boost/qvm/detail/mat_assign.hpp [3:4]
+ boost/qvm/detail/quat_assign.hpp [3:4]
+ boost/qvm/detail/remove_const.hpp [3:4]
+ boost/qvm/detail/swizzle_traits.hpp [3:4]
+ boost/qvm/detail/transp_impl.hpp [3:4]
+ boost/qvm/detail/vec_assign.hpp [3:4]
+ boost/qvm/enable_if.hpp [3:4]
+ boost/qvm/error.hpp [3:4]
+ boost/qvm/gen/mat_assign2.hpp [3:4]
+ boost/qvm/gen/mat_assign3.hpp [3:4]
+ boost/qvm/gen/mat_assign4.hpp [3:4]
+ boost/qvm/gen/mat_operations2.hpp [3:4]
+ boost/qvm/gen/mat_operations3.hpp [3:4]
+ boost/qvm/gen/mat_operations4.hpp [3:4]
+ boost/qvm/gen/swizzle2.hpp [3:4]
+ boost/qvm/gen/swizzle3.hpp [3:4]
+ boost/qvm/gen/swizzle4.hpp [3:4]
+ boost/qvm/gen/vec_assign2.hpp [3:4]
+ boost/qvm/gen/vec_assign3.hpp [3:4]
+ boost/qvm/gen/vec_assign4.hpp [3:4]
+ boost/qvm/gen/vec_mat_operations2.hpp [3:4]
+ boost/qvm/gen/vec_mat_operations3.hpp [3:4]
+ boost/qvm/gen/vec_mat_operations4.hpp [3:4]
+ boost/qvm/gen/vec_operations2.hpp [3:4]
+ boost/qvm/gen/vec_operations3.hpp [3:4]
+ boost/qvm/gen/vec_operations4.hpp [3:4]
+ boost/qvm/inline.hpp [3:4]
+ boost/qvm/map.hpp [3:4]
+ boost/qvm/map_mat_mat.hpp [3:4]
+ boost/qvm/map_mat_vec.hpp [3:4]
+ boost/qvm/map_vec_mat.hpp [3:4]
+ boost/qvm/mat.hpp [3:4]
+ boost/qvm/mat_access.hpp [3:4]
+ boost/qvm/mat_operations.hpp [3:4]
+ boost/qvm/mat_operations2.hpp [3:4]
+ boost/qvm/mat_operations3.hpp [3:4]
+ boost/qvm/mat_operations4.hpp [3:4]
+ boost/qvm/mat_traits.hpp [3:4]
+ boost/qvm/mat_traits_array.hpp [3:4]
+ boost/qvm/mat_traits_defaults.hpp [3:4]
+ boost/qvm/math.hpp [3:4]
+ boost/qvm/operations.hpp [3:4]
+ boost/qvm/quat.hpp [3:4]
+ boost/qvm/quat_access.hpp [3:4]
+ boost/qvm/quat_operations.hpp [3:4]
+ boost/qvm/quat_traits.hpp [3:4]
+ boost/qvm/quat_traits_array.hpp [3:4]
+ boost/qvm/quat_traits_defaults.hpp [3:4]
+ boost/qvm/quat_vec_operations.hpp [3:4]
+ boost/qvm/scalar_traits.hpp [3:4]
+ boost/qvm/static_assert.hpp [3:4]
+ boost/qvm/swizzle.hpp [3:4]
+ boost/qvm/swizzle2.hpp [3:4]
+ boost/qvm/swizzle3.hpp [3:4]
+ boost/qvm/swizzle4.hpp [3:4]
+ boost/qvm/throw_exception.hpp [3:4]
+ boost/qvm/to_string.hpp [3:4]
+ boost/qvm/vec.hpp [3:4]
+ boost/qvm/vec_access.hpp [3:4]
+ boost/qvm/vec_mat_operations.hpp [3:4]
+ boost/qvm/vec_mat_operations2.hpp [3:4]
+ boost/qvm/vec_mat_operations3.hpp [3:4]
+ boost/qvm/vec_mat_operations4.hpp [3:4]
+ boost/qvm/vec_operations.hpp [3:4]
+ boost/qvm/vec_operations2.hpp [3:4]
+ boost/qvm/vec_operations3.hpp [3:4]
+ boost/qvm/vec_operations4.hpp [3:4]
+ boost/qvm/vec_traits.hpp [3:4]
+ boost/qvm/vec_traits_array.hpp [3:4]
+ boost/qvm/vec_traits_defaults.hpp [3:4]
+
+KEEP BSL-1.0 13ab6f5e798d74384b45b33ca7c58d68
+BELONGS libs/context/ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: libs/context/src/asm/jump_i386_ms_pe_masm.asm at line 4, libs/context/src/asm/jump_i386_ms_pe_masm.masm at line 4, libs/context/src/asm/jump_x86_64_ms_pe_masm.asm at line 4, libs/context/src/asm/jump_x86_64_ms_pe_masm.masm at line 4, libs/context/src/asm/make_i386_ms_pe_masm.asm at line 4, libs/context/src/asm/make_i386_ms_pe_masm.masm at line 4, libs/context/src/asm/make_x86_64_ms_pe_masm.asm at line 4, libs/context/src/asm/make_x86_64_ms_pe_masm.masm at line 4, libs/context/src/asm/ontop_i386_ms_pe_masm.asm at line 4, libs/context/src/asm/ontop_i386_ms_pe_masm.masm at line 4, libs/context/src/asm/ontop_x86_64_ms_pe_masm.asm at line 4, libs/context/src/asm/ontop_x86_64_ms_pe_masm.masm at line 4
+ License text:
+ ; Distributed under the Boost Software License, Version 1.0.
+ ; (See accompanying file LICENSE_1_0.txt or copy at
+ ; http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ libs/context/src/asm/jump_i386_ms_pe_masm.asm [3:5]
+ libs/context/src/asm/jump_i386_ms_pe_masm.masm [3:5]
+ libs/context/src/asm/jump_x86_64_ms_pe_masm.asm [3:5]
+ libs/context/src/asm/jump_x86_64_ms_pe_masm.masm [3:5]
+ libs/context/src/asm/make_i386_ms_pe_masm.asm [3:5]
+ libs/context/src/asm/make_i386_ms_pe_masm.masm [3:5]
+ libs/context/src/asm/make_x86_64_ms_pe_masm.asm [3:5]
+ libs/context/src/asm/make_x86_64_ms_pe_masm.masm [3:5]
+ libs/context/src/asm/ontop_i386_ms_pe_masm.asm [3:5]
+ libs/context/src/asm/ontop_i386_ms_pe_masm.masm [3:5]
+ libs/context/src/asm/ontop_x86_64_ms_pe_masm.asm [3:5]
+ libs/context/src/asm/ontop_x86_64_ms_pe_masm.masm [3:5]
+
+KEEP BSL-1.0 16183dd745250c0ebe94aaec82ad7455
+BELONGS ya.make
+ License text:
+ // Use, modification, and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 65.62
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/test/impl/debug.ipp [2:4]
+ boost/test/impl/execution_monitor.ipp [3:5]
+
+KEEP BSL-1.0 16b657614c09f3c453fe6a1aa0ffd686
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/assign/ptr_map_inserter.hpp at line 5, boost/ptr_container/detail/throw_exception.hpp at line 6, boost/range/algorithm_ext.hpp at line 10, boost/range/as_array.hpp at line 5, boost/range/as_literal.hpp at line 5, boost/range/detail/as_literal.hpp at line 5, boost/range/detail/str_types.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/assign/ptr_map_inserter.hpp [3:6]
+ boost/ptr_container/detail/throw_exception.hpp [4:7]
+ boost/range/algorithm_ext.hpp [8:11]
+ boost/range/as_array.hpp [3:6]
+ boost/range/as_literal.hpp [3:6]
+ boost/range/detail/as_literal.hpp [3:6]
+ boost/range/detail/str_types.hpp [3:6]
+
+SKIP MPL-1.1 174fd41ba7f8a6897edce2ffe88b2b8e
+BELONGS ya.make
+ License text:
+ //! Given a MPL-style metafunction class, `metafunction_class<f>` is a
+ Scancode info:
+ Original SPDX id: MPL-1.1
+ Score : 80.00
+ Match type : REFERENCE
+ Links : http://www.mozilla.com/MPL/1.1/index.html, http://www.mozilla.org/MPL/MPL-1.1.html, https://spdx.org/licenses/MPL-1.1
+ Files with this license:
+ boost/hana/fwd/type.hpp [449:449]
+
+KEEP BSL-1.0 17737caa978fa8ec0868ed818b864f37
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/date_time/date_duration_types.hpp at line 6, boost/date_time/local_time/date_duration_operators.hpp at line 6, boost/date_time/posix_time/date_duration_operators.hpp at line 6
+ License text:
+ * Subject to the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or
+ * http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 78.12
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/date_time/date_duration_types.hpp [5:7]
+ boost/date_time/local_time/date_duration_operators.hpp [5:7]
+ boost/date_time/posix_time/date_duration_operators.hpp [5:7]
+
+KEEP BSL-1.0 17b918dacae9f9fa2bf0c63a057b8f7d
+BELONGS libs/context/ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: libs/context/src/asm/jump_arm_aapcs_pe_armasm.asm at line 4, libs/context/src/asm/jump_arm_aapcs_pe_armasm.masm at line 4, libs/context/src/asm/make_arm_aapcs_pe_armasm.asm at line 4, libs/context/src/asm/make_arm_aapcs_pe_armasm.masm at line 4, libs/context/src/asm/ontop_arm_aapcs_pe_armasm.asm at line 4, libs/context/src/asm/ontop_arm_aapcs_pe_armasm.masm at line 4
+ License text:
+ ; Distributed under the Boost Software License, Version 1.0.
+ ; (See accompanying file LICENSE_1_0.txt or copy at
+ ; http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ libs/context/src/asm/jump_arm_aapcs_pe_armasm.asm [3:5]
+ libs/context/src/asm/jump_arm_aapcs_pe_armasm.masm [3:5]
+ libs/context/src/asm/make_arm_aapcs_pe_armasm.asm [3:5]
+ libs/context/src/asm/make_arm_aapcs_pe_armasm.masm [3:5]
+ libs/context/src/asm/ontop_arm_aapcs_pe_armasm.asm [3:5]
+ libs/context/src/asm/ontop_arm_aapcs_pe_armasm.masm [3:5]
+
+KEEP BSL-1.0 17c78abfb72b607685d239798799adf0
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/select_type.hpp at line 3
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 92.11
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/detail/select_type.hpp [2:8]
+
+KEEP Public-Domain 17d79a73205393436cf0e2fea510d697
+BELONGS ya.make
+ License text:
+ // This also contains public domain code from MurmurHash. From the
+ Scancode info:
+ Original SPDX id: LicenseRef-scancode-public-domain
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.linfo.org/publicdomain.html, https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/public-domain.LICENSE
+ Files with this license:
+ boost/container_hash/hash.hpp [10:10]
+
+KEEP BSL-1.0 183e86c91b8c37c98adc93220ae9a174
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/pointer_to_other.hpp at line 12
+ License text:
+ // Distributed under the Boost Software License, Version 1.0.
+ //
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/pointer_to_other.hpp [10:13]
+
+KEEP BSL-1.0 18cc6219abca4ab596a367d46ceb4662
+BELONGS ya.make
+ License text:
+ // Distributed under the Boost Software License, Version 1.0.
+ // http://www.boost.org/LICENSE_1_0.txt
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 94.44
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/endian/conversion.hpp [5:6]
+ boost/endian/detail/intrinsic.hpp [6:7]
+
+KEEP BSL-1.0 18fdd9d2369476efe1064640cd661a14
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/container_fwd.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2005-2014. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/container/container_fwd.hpp [3:5]
+
+SKIP LicenseRef-scancode-unknown-license-reference 1abf24efa7605ba648c826259919ecd7
+BELONGS ya.make
+ License text:
+ // Copyright 2011 - 2013 John Maddock. Distributed under the Boost
+ Scancode info:
+ Original SPDX id: LicenseRef-scancode-unknown-license-reference
+ Score : 11.00
+ Match type : INTRO
+ Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/unknown-license-reference.LICENSE
+ Files with this license:
+ boost/multiprecision/detail/functions/pow.hpp [3:3]
+
+KEEP BSL-1.0 1bc23f67ca27c295e38b46190cdce22f
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/algorithm/minmax.hpp at line 4, boost/algorithm/minmax_element.hpp at line 4, boost/asio.hpp at line 8, boost/asio/associated_allocator.hpp at line 8, boost/asio/associated_executor.hpp at line 8, boost/asio/async_result.hpp at line 8, boost/asio/basic_datagram_socket.hpp at line 8, boost/asio/basic_deadline_timer.hpp at line 8, boost/asio/basic_io_object.hpp at line 8, boost/asio/basic_raw_socket.hpp at line 8, boost/asio/basic_seq_packet_socket.hpp at line 8, boost/asio/basic_serial_port.hpp at line 9, boost/asio/basic_signal_set.hpp at line 8, boost/asio/basic_socket.hpp at line 8, boost/asio/basic_socket_acceptor.hpp at line 8, boost/asio/basic_socket_iostream.hpp at line 8, boost/asio/basic_socket_streambuf.hpp at line 8, boost/asio/basic_stream_socket.hpp at line 8, boost/asio/basic_streambuf.hpp at line 8, boost/asio/basic_streambuf_fwd.hpp at line 8, boost/asio/basic_waitable_timer.hpp at line 8, boost/asio/bind_executor.hpp at line 8, boost/asio/buffer.hpp at line 8, boost/asio/buffered_read_stream.hpp at line 8, boost/asio/buffered_read_stream_fwd.hpp at line 8, boost/asio/buffered_stream.hpp at line 8, boost/asio/buffered_stream_fwd.hpp at line 8, boost/asio/buffered_write_stream.hpp at line 8, boost/asio/buffered_write_stream_fwd.hpp at line 8, boost/asio/buffers_iterator.hpp at line 8, boost/asio/completion_condition.hpp at line 8, boost/asio/connect.hpp at line 8, boost/asio/coroutine.hpp at line 8, boost/asio/datagram_socket_service.hpp at line 8, boost/asio/deadline_timer.hpp at line 8, boost/asio/deadline_timer_service.hpp at line 8, boost/asio/defer.hpp at line 8, boost/asio/detail/array.hpp at line 8, boost/asio/detail/array_fwd.hpp at line 8, boost/asio/detail/assert.hpp at line 8, boost/asio/detail/atomic_count.hpp at line 8, boost/asio/detail/base_from_completion_cond.hpp at line 8, boost/asio/detail/bind_handler.hpp at line 8, boost/asio/detail/buffer_resize_guard.hpp at line 8, boost/asio/detail/buffer_sequence_adapter.hpp at line 8, boost/asio/detail/buffered_stream_storage.hpp at line 8, boost/asio/detail/call_stack.hpp at line 8, boost/asio/detail/chrono.hpp at line 8, boost/asio/detail/chrono_time_traits.hpp at line 8, boost/asio/detail/completion_handler.hpp at line 8, boost/asio/detail/concurrency_hint.hpp at line 8, boost/asio/detail/conditionally_enabled_event.hpp at line 8, boost/asio/detail/conditionally_enabled_mutex.hpp at line 8, boost/asio/detail/config.hpp at line 8, boost/asio/detail/consuming_buffers.hpp at line 8, boost/asio/detail/cstddef.hpp at line 8, boost/asio/detail/cstdint.hpp at line 8, boost/asio/detail/date_time_fwd.hpp at line 8, boost/asio/detail/deadline_timer_service.hpp at line 8, boost/asio/detail/dependent_type.hpp at line 8, boost/asio/detail/descriptor_ops.hpp at line 8, boost/asio/detail/descriptor_read_op.hpp at line 8, boost/asio/detail/descriptor_write_op.hpp at line 8, boost/asio/detail/dev_poll_reactor.hpp at line 8, boost/asio/detail/epoll_reactor.hpp at line 8, boost/asio/detail/event.hpp at line 8, boost/asio/detail/eventfd_select_interrupter.hpp at line 9, boost/asio/detail/executor_op.hpp at line 8, boost/asio/detail/fd_set_adapter.hpp at line 8, boost/asio/detail/fenced_block.hpp at line 8, boost/asio/detail/functional.hpp at line 8, boost/asio/detail/gcc_arm_fenced_block.hpp at line 8, boost/asio/detail/gcc_hppa_fenced_block.hpp at line 8, boost/asio/detail/gcc_sync_fenced_block.hpp at line 8, boost/asio/detail/gcc_x86_fenced_block.hpp at line 8, boost/asio/detail/global.hpp at line 8, boost/asio/detail/handler_alloc_helpers.hpp at line 8, boost/asio/detail/handler_cont_helpers.hpp at line 8, boost/asio/detail/handler_invoke_helpers.hpp at line 8, boost/asio/detail/handler_tracking.hpp at line 8, boost/asio/detail/handler_type_requirements.hpp at line 8, boost/asio/detail/handler_work.hpp at line 8, boost/asio/detail/hash_map.hpp at line 8, boost/asio/detail/impl/buffer_sequence_adapter.ipp at line 8, boost/asio/detail/impl/descriptor_ops.ipp at line 8, boost/asio/detail/impl/dev_poll_reactor.hpp at line 8, boost/asio/detail/impl/dev_poll_reactor.ipp at line 8, boost/asio/detail/impl/epoll_reactor.hpp at line 8, boost/asio/detail/impl/epoll_reactor.ipp at line 8, boost/asio/detail/impl/eventfd_select_interrupter.ipp at line 9, boost/asio/detail/impl/handler_tracking.ipp at line 8, boost/asio/detail/impl/kqueue_reactor.hpp at line 9, boost/asio/detail/impl/kqueue_reactor.ipp at line 9, boost/asio/detail/impl/null_event.ipp at line 8, boost/asio/detail/impl/pipe_select_interrupter.ipp at line 8, boost/asio/detail/impl/posix_event.ipp at line 8, boost/asio/detail/impl/posix_mutex.ipp at line 8, boost/asio/detail/impl/posix_thread.ipp at line 8, boost/asio/detail/impl/posix_tss_ptr.ipp at line 8, boost/asio/detail/impl/reactive_descriptor_service.ipp at line 8, boost/asio/detail/impl/reactive_serial_port_service.ipp at line 9, boost/asio/detail/impl/reactive_socket_service_base.ipp at line 8, boost/asio/detail/impl/resolver_service_base.ipp at line 8, boost/asio/detail/impl/scheduler.ipp at line 8, boost/asio/detail/impl/select_reactor.hpp at line 8, boost/asio/detail/impl/select_reactor.ipp at line 8, boost/asio/detail/impl/service_registry.hpp at line 8, boost/asio/detail/impl/service_registry.ipp at line 8, boost/asio/detail/impl/signal_set_service.ipp at line 8, boost/asio/detail/impl/socket_ops.ipp at line 8, boost/asio/detail/impl/socket_select_interrupter.ipp at line 8, boost/asio/detail/impl/strand_executor_service.hpp at line 8, boost/asio/detail/impl/strand_executor_service.ipp at line 8, boost/asio/detail/impl/strand_service.hpp at line 8, boost/asio/detail/impl/strand_service.ipp at line 8, boost/asio/detail/impl/throw_error.ipp at line 8, boost/asio/detail/impl/timer_queue_ptime.ipp at line 8, boost/asio/detail/impl/timer_queue_set.ipp at line 8, boost/asio/detail/impl/win_event.ipp at line 8, boost/asio/detail/impl/win_iocp_handle_service.ipp at line 9, boost/asio/detail/impl/win_iocp_io_context.hpp at line 8, boost/asio/detail/impl/win_iocp_io_context.ipp at line 8, boost/asio/detail/impl/win_iocp_serial_port_service.ipp at line 9, boost/asio/detail/impl/win_iocp_socket_service_base.ipp at line 8, boost/asio/detail/impl/win_mutex.ipp at line 8, boost/asio/detail/impl/win_object_handle_service.ipp at line 9, boost/asio/detail/impl/win_static_mutex.ipp at line 8, boost/asio/detail/impl/win_thread.ipp at line 8, boost/asio/detail/impl/win_tss_ptr.ipp at line 8, boost/asio/detail/impl/winrt_ssocket_service_base.ipp at line 8, boost/asio/detail/impl/winrt_timer_scheduler.hpp at line 8, boost/asio/detail/impl/winrt_timer_scheduler.ipp at line 8, boost/asio/detail/impl/winsock_init.ipp at line 8, boost/asio/detail/io_control.hpp at line 8, boost/asio/detail/is_buffer_sequence.hpp at line 8, boost/asio/detail/is_executor.hpp at line 8, boost/asio/detail/keyword_tss_ptr.hpp at line 8, boost/asio/detail/kqueue_reactor.hpp at line 9, boost/asio/detail/limits.hpp at line 8, boost/asio/detail/local_free_on_block_exit.hpp at line 8, boost/asio/detail/macos_fenced_block.hpp at line 8, boost/asio/detail/memory.hpp at line 8, boost/asio/detail/mutex.hpp at line 8, boost/asio/detail/noncopyable.hpp at line 8, boost/asio/detail/null_event.hpp at line 8, boost/asio/detail/null_fenced_block.hpp at line 8, boost/asio/detail/null_global.hpp at line 8, boost/asio/detail/null_mutex.hpp at line 8, boost/asio/detail/null_reactor.hpp at line 8, boost/asio/detail/null_signal_blocker.hpp at line 8, boost/asio/detail/null_socket_service.hpp at line 8, boost/asio/detail/null_static_mutex.hpp at line 8, boost/asio/detail/null_thread.hpp at line 8, boost/asio/detail/null_tss_ptr.hpp at line 8, boost/asio/detail/object_pool.hpp at line 8, boost/asio/detail/old_win_sdk_compat.hpp at line 8, boost/asio/detail/op_queue.hpp at line 8, boost/asio/detail/operation.hpp at line 8, boost/asio/detail/pipe_select_interrupter.hpp at line 8, boost/asio/detail/pop_options.hpp at line 8, boost/asio/detail/posix_event.hpp at line 8, boost/asio/detail/posix_fd_set_adapter.hpp at line 8, boost/asio/detail/posix_global.hpp at line 8, boost/asio/detail/posix_mutex.hpp at line 8, boost/asio/detail/posix_signal_blocker.hpp at line 8, boost/asio/detail/posix_static_mutex.hpp at line 8, boost/asio/detail/posix_thread.hpp at line 8, boost/asio/detail/posix_tss_ptr.hpp at line 8, boost/asio/detail/push_options.hpp at line 8, boost/asio/detail/reactive_descriptor_service.hpp at line 8, boost/asio/detail/reactive_null_buffers_op.hpp at line 8, boost/asio/detail/reactive_serial_port_service.hpp at line 9, boost/asio/detail/reactive_socket_accept_op.hpp at line 8, boost/asio/detail/reactive_socket_connect_op.hpp at line 8, boost/asio/detail/reactive_socket_recv_op.hpp at line 8, boost/asio/detail/reactive_socket_recvfrom_op.hpp at line 8, boost/asio/detail/reactive_socket_recvmsg_op.hpp at line 8, boost/asio/detail/reactive_socket_send_op.hpp at line 8, boost/asio/detail/reactive_socket_sendto_op.hpp at line 8, boost/asio/detail/reactive_socket_service.hpp at line 8, boost/asio/detail/reactive_socket_service_base.hpp at line 8, boost/asio/detail/reactive_wait_op.hpp at line 8, boost/asio/detail/reactor.hpp at line 8, boost/asio/detail/reactor_fwd.hpp at line 8, boost/asio/detail/reactor_op.hpp at line 8, boost/asio/detail/reactor_op_queue.hpp at line 8, boost/asio/detail/recycling_allocator.hpp at line 8, boost/asio/detail/regex_fwd.hpp at line 8, boost/asio/detail/resolve_endpoint_op.hpp at line 8, boost/asio/detail/resolve_op.hpp at line 8, boost/asio/detail/resolve_query_op.hpp at line 8, boost/asio/detail/resolver_service.hpp at line 8, boost/asio/detail/resolver_service_base.hpp at line 8, boost/asio/detail/scheduler.hpp at line 8, boost/asio/detail/scheduler_operation.hpp at line 8, boost/asio/detail/scheduler_thread_info.hpp at line 8, boost/asio/detail/scoped_lock.hpp at line 8, boost/asio/detail/scoped_ptr.hpp at line 8, boost/asio/detail/select_interrupter.hpp at line 8, boost/asio/detail/select_reactor.hpp at line 8, boost/asio/detail/service_registry.hpp at line 8, boost/asio/detail/signal_blocker.hpp at line 8, boost/asio/detail/signal_handler.hpp at line 8, boost/asio/detail/signal_init.hpp at line 8, boost/asio/detail/signal_op.hpp at line 8, boost/asio/detail/signal_set_service.hpp at line 8, boost/asio/detail/socket_holder.hpp at line 8, boost/asio/detail/socket_ops.hpp at line 8, boost/asio/detail/socket_option.hpp at line 8, boost/asio/detail/socket_select_interrupter.hpp at line 8, boost/asio/detail/socket_types.hpp at line 8, boost/asio/detail/solaris_fenced_block.hpp at line 8, boost/asio/detail/static_mutex.hpp at line 8, boost/asio/detail/std_event.hpp at line 8, boost/asio/detail/std_fenced_block.hpp at line 8, boost/asio/detail/std_global.hpp at line 8, boost/asio/detail/std_mutex.hpp at line 8, boost/asio/detail/std_static_mutex.hpp at line 8, boost/asio/detail/std_thread.hpp at line 8, boost/asio/detail/strand_executor_service.hpp at line 8, boost/asio/detail/strand_service.hpp at line 8, boost/asio/detail/string_view.hpp at line 8, boost/asio/detail/thread.hpp at line 8, boost/asio/detail/thread_context.hpp at line 8, boost/asio/detail/thread_group.hpp at line 8, boost/asio/detail/thread_info_base.hpp at line 8, boost/asio/detail/throw_error.hpp at line 8, boost/asio/detail/throw_exception.hpp at line 8, boost/asio/detail/timer_queue.hpp at line 8, boost/asio/detail/timer_queue_base.hpp at line 8, boost/asio/detail/timer_queue_ptime.hpp at line 8, boost/asio/detail/timer_queue_set.hpp at line 8, boost/asio/detail/timer_scheduler.hpp at line 8, boost/asio/detail/timer_scheduler_fwd.hpp at line 8, boost/asio/detail/tss_ptr.hpp at line 8, boost/asio/detail/type_traits.hpp at line 8, boost/asio/detail/variadic_templates.hpp at line 8, boost/asio/detail/wait_handler.hpp at line 8, boost/asio/detail/wait_op.hpp at line 8, boost/asio/detail/win_event.hpp at line 8, boost/asio/detail/win_fd_set_adapter.hpp at line 8, boost/asio/detail/win_fenced_block.hpp at line 8, boost/asio/detail/win_global.hpp at line 8, boost/asio/detail/win_iocp_handle_read_op.hpp at line 9, boost/asio/detail/win_iocp_handle_service.hpp at line 9, boost/asio/detail/win_iocp_handle_write_op.hpp at line 9, boost/asio/detail/win_iocp_io_context.hpp at line 8, boost/asio/detail/win_iocp_null_buffers_op.hpp at line 8, boost/asio/detail/win_iocp_operation.hpp at line 8, boost/asio/detail/win_iocp_overlapped_op.hpp at line 8, boost/asio/detail/win_iocp_overlapped_ptr.hpp at line 8, boost/asio/detail/win_iocp_serial_port_service.hpp at line 9, boost/asio/detail/win_iocp_socket_accept_op.hpp at line 8, boost/asio/detail/win_iocp_socket_connect_op.hpp at line 8, boost/asio/detail/win_iocp_socket_recv_op.hpp at line 8, boost/asio/detail/win_iocp_socket_recvfrom_op.hpp at line 8, boost/asio/detail/win_iocp_socket_recvmsg_op.hpp at line 8, boost/asio/detail/win_iocp_socket_send_op.hpp at line 8, boost/asio/detail/win_iocp_socket_service.hpp at line 8, boost/asio/detail/win_iocp_socket_service_base.hpp at line 8, boost/asio/detail/win_iocp_thread_info.hpp at line 8, boost/asio/detail/win_iocp_wait_op.hpp at line 8, boost/asio/detail/win_mutex.hpp at line 8, boost/asio/detail/win_object_handle_service.hpp at line 9, boost/asio/detail/win_static_mutex.hpp at line 8, boost/asio/detail/win_thread.hpp at line 8, boost/asio/detail/win_tss_ptr.hpp at line 8, boost/asio/detail/winapp_thread.hpp at line 8, boost/asio/detail/wince_thread.hpp at line 8, boost/asio/detail/winrt_async_manager.hpp at line 8, boost/asio/detail/winrt_async_op.hpp at line 8, boost/asio/detail/winrt_resolve_op.hpp at line 8, boost/asio/detail/winrt_resolver_service.hpp at line 8, boost/asio/detail/winrt_socket_connect_op.hpp at line 8, boost/asio/detail/winrt_socket_recv_op.hpp at line 8, boost/asio/detail/winrt_socket_send_op.hpp at line 8, boost/asio/detail/winrt_ssocket_service.hpp at line 8, boost/asio/detail/winrt_ssocket_service_base.hpp at line 8, boost/asio/detail/winrt_timer_scheduler.hpp at line 8, boost/asio/detail/winrt_utils.hpp at line 8, boost/asio/detail/winsock_init.hpp at line 8, boost/asio/detail/work_dispatcher.hpp at line 8, boost/asio/detail/wrapped_handler.hpp at line 8, boost/asio/dispatch.hpp at line 8, boost/asio/error.hpp at line 8, boost/asio/execution_context.hpp at line 8, boost/asio/executor.hpp at line 8, boost/asio/executor_work_guard.hpp at line 8, boost/asio/experimental.hpp at line 8, boost/asio/experimental/co_spawn.hpp at line 8, boost/asio/experimental/detached.hpp at line 8, boost/asio/experimental/impl/co_spawn.hpp at line 8, boost/asio/experimental/impl/detached.hpp at line 8, boost/asio/experimental/impl/redirect_error.hpp at line 8, boost/asio/experimental/redirect_error.hpp at line 8, boost/asio/generic/basic_endpoint.hpp at line 8, boost/asio/generic/datagram_protocol.hpp at line 8, boost/asio/generic/detail/endpoint.hpp at line 8, boost/asio/generic/detail/impl/endpoint.ipp at line 8, boost/asio/generic/raw_protocol.hpp at line 8, boost/asio/generic/seq_packet_protocol.hpp at line 8, boost/asio/generic/stream_protocol.hpp at line 8, boost/asio/handler_alloc_hook.hpp at line 8, boost/asio/handler_continuation_hook.hpp at line 8, boost/asio/handler_invoke_hook.hpp at line 8, boost/asio/handler_type.hpp at line 8, boost/asio/high_resolution_timer.hpp at line 8, boost/asio/impl/buffered_read_stream.hpp at line 8, boost/asio/impl/buffered_write_stream.hpp at line 8, boost/asio/impl/connect.hpp at line 8, boost/asio/impl/defer.hpp at line 8, boost/asio/impl/dispatch.hpp at line 8, boost/asio/impl/error.ipp at line 8, boost/asio/impl/execution_context.hpp at line 8, boost/asio/impl/execution_context.ipp at line 8, boost/asio/impl/executor.hpp at line 8, boost/asio/impl/executor.ipp at line 8, boost/asio/impl/handler_alloc_hook.ipp at line 8, boost/asio/impl/io_context.hpp at line 8, boost/asio/impl/io_context.ipp at line 8, boost/asio/impl/post.hpp at line 8, boost/asio/impl/read.hpp at line 8, boost/asio/impl/read_at.hpp at line 8, boost/asio/impl/read_until.hpp at line 8, boost/asio/impl/serial_port_base.hpp at line 9, boost/asio/impl/serial_port_base.ipp at line 9, boost/asio/impl/spawn.hpp at line 8, boost/asio/impl/src.cpp at line 8, boost/asio/impl/src.hpp at line 8, boost/asio/impl/system_context.hpp at line 8, boost/asio/impl/system_context.ipp at line 8, boost/asio/impl/system_executor.hpp at line 8, boost/asio/impl/thread_pool.hpp at line 8, boost/asio/impl/thread_pool.ipp at line 8, boost/asio/impl/use_future.hpp at line 8, boost/asio/impl/write.hpp at line 8, boost/asio/impl/write_at.hpp at line 8, boost/asio/io_context.hpp at line 8, boost/asio/io_context_strand.hpp at line 8, boost/asio/io_service.hpp at line 8, boost/asio/io_service_strand.hpp at line 8, boost/asio/ip/address.hpp at line 8, boost/asio/ip/address_v4.hpp at line 8, boost/asio/ip/address_v4_iterator.hpp at line 8, boost/asio/ip/address_v4_range.hpp at line 8, boost/asio/ip/address_v6.hpp at line 8, boost/asio/ip/address_v6_iterator.hpp at line 9, boost/asio/ip/address_v6_range.hpp at line 9, boost/asio/ip/bad_address_cast.hpp at line 8, boost/asio/ip/basic_endpoint.hpp at line 8, boost/asio/ip/basic_resolver.hpp at line 8, boost/asio/ip/basic_resolver_entry.hpp at line 8, boost/asio/ip/basic_resolver_iterator.hpp at line 8, boost/asio/ip/basic_resolver_query.hpp at line 8, boost/asio/ip/basic_resolver_results.hpp at line 8, boost/asio/ip/detail/endpoint.hpp at line 8, boost/asio/ip/detail/impl/endpoint.ipp at line 8, boost/asio/ip/detail/socket_option.hpp at line 8, boost/asio/ip/host_name.hpp at line 8, boost/asio/ip/icmp.hpp at line 8, boost/asio/ip/impl/address.hpp at line 8, boost/asio/ip/impl/address.ipp at line 8, boost/asio/ip/impl/address_v4.hpp at line 8, boost/asio/ip/impl/address_v4.ipp at line 8, boost/asio/ip/impl/address_v6.hpp at line 8, boost/asio/ip/impl/address_v6.ipp at line 8, boost/asio/ip/impl/basic_endpoint.hpp at line 8, boost/asio/ip/impl/host_name.ipp at line 8, boost/asio/ip/impl/network_v4.hpp at line 9, boost/asio/ip/impl/network_v4.ipp at line 9, boost/asio/ip/impl/network_v6.hpp at line 8, boost/asio/ip/impl/network_v6.ipp at line 9, boost/asio/ip/multicast.hpp at line 8, boost/asio/ip/network_v4.hpp at line 9, boost/asio/ip/network_v6.hpp at line 9, boost/asio/ip/resolver_base.hpp at line 8, boost/asio/ip/resolver_query_base.hpp at line 8, boost/asio/ip/resolver_service.hpp at line 8, boost/asio/ip/tcp.hpp at line 8, boost/asio/ip/udp.hpp at line 8, boost/asio/ip/unicast.hpp at line 8, boost/asio/ip/v6_only.hpp at line 8, boost/asio/is_executor.hpp at line 8, boost/asio/is_read_buffered.hpp at line 8, boost/asio/is_write_buffered.hpp at line 8, boost/asio/local/basic_endpoint.hpp at line 9, boost/asio/local/connect_pair.hpp at line 8, boost/asio/local/datagram_protocol.hpp at line 8, boost/asio/local/detail/endpoint.hpp at line 9, boost/asio/local/detail/impl/endpoint.ipp at line 9, boost/asio/local/stream_protocol.hpp at line 8, boost/asio/packaged_task.hpp at line 8, boost/asio/placeholders.hpp at line 8, boost/asio/posix/basic_descriptor.hpp at line 8, boost/asio/posix/basic_stream_descriptor.hpp at line 8, boost/asio/posix/descriptor.hpp at line 8, boost/asio/posix/descriptor_base.hpp at line 8, boost/asio/posix/stream_descriptor.hpp at line 8, boost/asio/posix/stream_descriptor_service.hpp at line 8, boost/asio/post.hpp at line 8, boost/asio/raw_socket_service.hpp at line 8, boost/asio/read.hpp at line 8, boost/asio/read_at.hpp at line 8, boost/asio/read_until.hpp at line 8, boost/asio/seq_packet_socket_service.hpp at line 8, boost/asio/serial_port.hpp at line 9, boost/asio/serial_port_base.hpp at line 9, boost/asio/serial_port_service.hpp at line 8, boost/asio/signal_set.hpp at line 8, boost/asio/signal_set_service.hpp at line 8, boost/asio/socket_acceptor_service.hpp at line 8, boost/asio/socket_base.hpp at line 8, boost/asio/spawn.hpp at line 8, boost/asio/ssl.hpp at line 8, boost/asio/ssl/context.hpp at line 8, boost/asio/ssl/context_base.hpp at line 8, boost/asio/ssl/detail/buffered_handshake_op.hpp at line 8, boost/asio/ssl/detail/engine.hpp at line 8, boost/asio/ssl/detail/handshake_op.hpp at line 8, boost/asio/ssl/detail/impl/engine.ipp at line 8, boost/asio/ssl/detail/impl/openssl_init.ipp at line 9, boost/asio/ssl/detail/io.hpp at line 8, boost/asio/ssl/detail/openssl_init.hpp at line 8, boost/asio/ssl/detail/openssl_types.hpp at line 8, boost/asio/ssl/detail/password_callback.hpp at line 8, boost/asio/ssl/detail/read_op.hpp at line 8, boost/asio/ssl/detail/shutdown_op.hpp at line 8, boost/asio/ssl/detail/stream_core.hpp at line 8, boost/asio/ssl/detail/verify_callback.hpp at line 8, boost/asio/ssl/detail/write_op.hpp at line 8, boost/asio/ssl/error.hpp at line 8, boost/asio/ssl/impl/context.hpp at line 9, boost/asio/ssl/impl/context.ipp at line 9, boost/asio/ssl/impl/error.ipp at line 8, boost/asio/ssl/impl/rfc2818_verification.ipp at line 8, boost/asio/ssl/impl/src.hpp at line 8, boost/asio/ssl/rfc2818_verification.hpp at line 8, boost/asio/ssl/stream.hpp at line 8, boost/asio/ssl/stream_base.hpp at line 8, boost/asio/ssl/verify_context.hpp at line 8, boost/asio/ssl/verify_mode.hpp at line 8, boost/asio/steady_timer.hpp at line 8, boost/asio/strand.hpp at line 8, boost/asio/stream_socket_service.hpp at line 8, boost/asio/streambuf.hpp at line 8, boost/asio/system_context.hpp at line 8, boost/asio/system_executor.hpp at line 8, boost/asio/system_timer.hpp at line 8, boost/asio/thread_pool.hpp at line 8, boost/asio/time_traits.hpp at line 8, boost/asio/ts/buffer.hpp at line 8, boost/asio/ts/executor.hpp at line 8, boost/asio/ts/internet.hpp at line 8, boost/asio/ts/io_context.hpp at line 8, boost/asio/ts/net.hpp at line 8, boost/asio/ts/netfwd.hpp at line 8, boost/asio/ts/socket.hpp at line 8, boost/asio/ts/timer.hpp at line 8, boost/asio/unyield.hpp at line 8, boost/asio/use_future.hpp at line 8, boost/asio/uses_executor.hpp at line 8, boost/asio/version.hpp at line 8, boost/asio/wait_traits.hpp at line 8, boost/asio/waitable_timer_service.hpp at line 8, boost/asio/windows/basic_handle.hpp at line 8, boost/asio/windows/basic_object_handle.hpp at line 9, boost/asio/windows/basic_random_access_handle.hpp at line 8, boost/asio/windows/basic_stream_handle.hpp at line 8, boost/asio/windows/object_handle.hpp at line 9, boost/asio/windows/object_handle_service.hpp at line 9, boost/asio/windows/overlapped_handle.hpp at line 8, boost/asio/windows/overlapped_ptr.hpp at line 8, boost/asio/windows/random_access_handle.hpp at line 8, boost/asio/windows/random_access_handle_service.hpp at line 8, boost/asio/windows/stream_handle.hpp at line 8, boost/asio/windows/stream_handle_service.hpp at line 8, boost/asio/write.hpp at line 8, boost/asio/write_at.hpp at line 8, boost/asio/yield.hpp at line 8, boost/beast.hpp at line 5, boost/beast/core.hpp at line 5, boost/beast/core/bind_handler.hpp at line 5, boost/beast/core/buffered_read_stream.hpp at line 5, boost/beast/core/buffers_adapter.hpp at line 5, boost/beast/core/buffers_cat.hpp at line 5, boost/beast/core/buffers_prefix.hpp at line 5, boost/beast/core/buffers_suffix.hpp at line 5, boost/beast/core/buffers_to_string.hpp at line 5, boost/beast/core/detail/allocator.hpp at line 5, boost/beast/core/detail/base64.hpp at line 5, boost/beast/core/detail/bind_handler.hpp at line 5, boost/beast/core/detail/buffers_ref.hpp at line 5, boost/beast/core/detail/clamp.hpp at line 5, boost/beast/core/detail/config.hpp at line 5, boost/beast/core/detail/cpu_info.hpp at line 5, boost/beast/core/detail/empty_base_optimization.hpp at line 5, boost/beast/core/detail/integer_sequence.hpp at line 5, boost/beast/core/detail/ostream.hpp at line 5, boost/beast/core/detail/sha1.hpp at line 5, boost/beast/core/detail/static_ostream.hpp at line 5, boost/beast/core/detail/static_string.hpp at line 5, boost/beast/core/detail/type_traits.hpp at line 5, boost/beast/core/detail/variant.hpp at line 5, boost/beast/core/detail/varint.hpp at line 5, boost/beast/core/error.hpp at line 5, boost/beast/core/file.hpp at line 5, boost/beast/core/file_base.hpp at line 5, boost/beast/core/file_posix.hpp at line 5, boost/beast/core/file_stdio.hpp at line 5, boost/beast/core/file_win32.hpp at line 5, boost/beast/core/flat_buffer.hpp at line 5, boost/beast/core/flat_static_buffer.hpp at line 5, boost/beast/core/handler_ptr.hpp at line 5, boost/beast/core/impl/buffered_read_stream.ipp at line 5, boost/beast/core/impl/buffers_adapter.ipp at line 5, boost/beast/core/impl/buffers_cat.ipp at line 5, boost/beast/core/impl/buffers_prefix.ipp at line 5, boost/beast/core/impl/buffers_suffix.ipp at line 5, boost/beast/core/impl/file_posix.ipp at line 5, boost/beast/core/impl/file_stdio.ipp at line 5, boost/beast/core/impl/file_win32.ipp at line 5, boost/beast/core/impl/flat_buffer.ipp at line 5, boost/beast/core/impl/flat_static_buffer.ipp at line 5, boost/beast/core/impl/handler_ptr.ipp at line 5, boost/beast/core/impl/multi_buffer.ipp at line 5, boost/beast/core/impl/read_size.ipp at line 5, boost/beast/core/impl/static_buffer.ipp at line 5, boost/beast/core/impl/static_string.ipp at line 5, boost/beast/core/impl/string_param.ipp at line 5, boost/beast/core/multi_buffer.hpp at line 5, boost/beast/core/ostream.hpp at line 5, boost/beast/core/read_size.hpp at line 5, boost/beast/core/span.hpp at line 5, boost/beast/core/static_buffer.hpp at line 5, boost/beast/core/static_string.hpp at line 5, boost/beast/core/string.hpp at line 5, boost/beast/core/string_param.hpp at line 5, boost/beast/core/type_traits.hpp at line 5, boost/beast/http.hpp at line 5, boost/beast/http/basic_dynamic_body.hpp at line 5, boost/beast/http/basic_file_body.hpp at line 5, boost/beast/http/basic_parser.hpp at line 5, boost/beast/http/buffer_body.hpp at line 5, boost/beast/http/chunk_encode.hpp at line 5, boost/beast/http/detail/basic_parsed_list.hpp at line 5, boost/beast/http/detail/basic_parser.hpp at line 5, boost/beast/http/detail/chunk_encode.hpp at line 5, boost/beast/http/detail/rfc7230.hpp at line 5, boost/beast/http/detail/type_traits.hpp at line 5, boost/beast/http/dynamic_body.hpp at line 5, boost/beast/http/empty_body.hpp at line 5, boost/beast/http/error.hpp at line 5, boost/beast/http/field.hpp at line 5, boost/beast/http/fields.hpp at line 5, boost/beast/http/file_body.hpp at line 5, boost/beast/http/impl/basic_parser.ipp at line 5, boost/beast/http/impl/chunk_encode.ipp at line 5, boost/beast/http/impl/error.ipp at line 5, boost/beast/http/impl/field.ipp at line 5, boost/beast/http/impl/fields.ipp at line 5, boost/beast/http/impl/file_body_win32.ipp at line 5, boost/beast/http/impl/message.ipp at line 5, boost/beast/http/impl/parser.ipp at line 5, boost/beast/http/impl/read.ipp at line 5, boost/beast/http/impl/rfc7230.ipp at line 5, boost/beast/http/impl/serializer.ipp at line 5, boost/beast/http/impl/status.ipp at line 5, boost/beast/http/impl/verb.ipp at line 5, boost/beast/http/impl/write.ipp at line 5, boost/beast/http/message.hpp at line 5, boost/beast/http/parser.hpp at line 5, boost/beast/http/read.hpp at line 5, boost/beast/http/rfc7230.hpp at line 5, boost/beast/http/serializer.hpp at line 5, boost/beast/http/span_body.hpp at line 5, boost/beast/http/status.hpp at line 5, boost/beast/http/string_body.hpp at line 5, boost/beast/http/type_traits.hpp at line 5, boost/beast/http/vector_body.hpp at line 5, boost/beast/http/verb.hpp at line 5, boost/beast/http/write.hpp at line 5, boost/beast/version.hpp at line 5, boost/beast/websocket.hpp at line 5, boost/beast/websocket/detail/error.hpp at line 5, boost/beast/websocket/detail/frame.hpp at line 5, boost/beast/websocket/detail/hybi13.hpp at line 5, boost/beast/websocket/detail/mask.hpp at line 5, boost/beast/websocket/detail/pausation.hpp at line 5, boost/beast/websocket/detail/pmd_extension.hpp at line 5, boost/beast/websocket/detail/stream_base.hpp at line 5, boost/beast/websocket/detail/type_traits.hpp at line 5, boost/beast/websocket/detail/utf8_checker.hpp at line 5, boost/beast/websocket/error.hpp at line 5, boost/beast/websocket/impl/accept.ipp at line 5, boost/beast/websocket/impl/close.ipp at line 5, boost/beast/websocket/impl/error.ipp at line 5, boost/beast/websocket/impl/handshake.ipp at line 5, boost/beast/websocket/impl/ping.ipp at line 5, boost/beast/websocket/impl/read.ipp at line 5, boost/beast/websocket/impl/rfc6455.ipp at line 5, boost/beast/websocket/impl/ssl.ipp at line 5, boost/beast/websocket/impl/stream.ipp at line 5, boost/beast/websocket/impl/teardown.ipp at line 5, boost/beast/websocket/impl/write.ipp at line 5, boost/beast/websocket/option.hpp at line 5, boost/beast/websocket/rfc6455.hpp at line 5, boost/beast/websocket/role.hpp at line 5, boost/beast/websocket/ssl.hpp at line 5, boost/beast/websocket/stream.hpp at line 5, boost/beast/websocket/stream_fwd.hpp at line 5, boost/beast/websocket/teardown.hpp at line 5, boost/beast/zlib.hpp at line 5, boost/beast/zlib/deflate_stream.hpp at line 5, boost/beast/zlib/detail/bitstream.hpp at line 5, boost/beast/zlib/detail/deflate_stream.hpp at line 5, boost/beast/zlib/detail/inflate_stream.hpp at line 5, boost/beast/zlib/detail/ranges.hpp at line 5, boost/beast/zlib/detail/window.hpp at line 5, boost/beast/zlib/error.hpp at line 5, boost/beast/zlib/impl/error.ipp at line 5, boost/beast/zlib/inflate_stream.hpp at line 5, boost/beast/zlib/zlib.hpp at line 5, boost/container_hash/detail/float_functions.hpp at line 4, boost/container_hash/detail/hash_float.hpp at line 4, boost/container_hash/detail/limits.hpp at line 4, boost/container_hash/extensions.hpp at line 4, boost/container_hash/hash.hpp at line 4, boost/container_hash/hash_fwd.hpp at line 4, boost/detail/container_fwd.hpp at line 4, boost/functional/hash.hpp at line 4, boost/functional/hash/extensions.hpp at line 4, boost/functional/hash/hash.hpp at line 4, boost/functional/hash/hash_fwd.hpp at line 4, boost/functional/hash_fwd.hpp at line 4, boost/process.hpp at line 10, boost/process/args.hpp at line 9, boost/process/async.hpp at line 4, boost/process/async_pipe.hpp at line 8, boost/process/async_system.hpp at line 9, boost/process/child.hpp at line 9, boost/process/cmd.hpp at line 9, boost/process/detail/basic_cmd.hpp at line 4, boost/process/detail/child_decl.hpp at line 9, boost/process/detail/config.hpp at line 9, boost/process/detail/execute_impl.hpp at line 9, boost/process/detail/handler.hpp at line 4, boost/process/detail/handler_base.hpp at line 9, boost/process/detail/on_exit.hpp at line 4, boost/process/detail/posix/asio_fwd.hpp at line 4, boost/process/detail/posix/async_handler.hpp at line 4, boost/process/detail/posix/async_in.hpp at line 8, boost/process/detail/posix/async_out.hpp at line 8, boost/process/detail/posix/async_pipe.hpp at line 4, boost/process/detail/posix/basic_cmd.hpp at line 4, boost/process/detail/posix/basic_pipe.hpp at line 8, boost/process/detail/posix/child_handle.hpp at line 8, boost/process/detail/posix/close_in.hpp at line 8, boost/process/detail/posix/close_out.hpp at line 8, boost/process/detail/posix/cmd.hpp at line 4, boost/process/detail/posix/compare_handles.hpp at line 4, boost/process/detail/posix/env_init.hpp at line 4, boost/process/detail/posix/environment.hpp at line 4, boost/process/detail/posix/exe.hpp at line 4, boost/process/detail/posix/executor.hpp at line 8, boost/process/detail/posix/fd.hpp at line 8, boost/process/detail/posix/file_descriptor.hpp at line 4, boost/process/detail/posix/file_in.hpp at line 8, boost/process/detail/posix/file_out.hpp at line 9, boost/process/detail/posix/group_handle.hpp at line 4, boost/process/detail/posix/group_ref.hpp at line 4, boost/process/detail/posix/handler.hpp at line 4, boost/process/detail/posix/io_context_ref.hpp at line 4, boost/process/detail/posix/is_running.hpp at line 4, boost/process/detail/posix/null_in.hpp at line 8, boost/process/detail/posix/null_out.hpp at line 9, boost/process/detail/posix/on_exit.hpp at line 4, boost/process/detail/posix/pipe_in.hpp at line 8, boost/process/detail/posix/pipe_out.hpp at line 9, boost/process/detail/posix/search_path.hpp at line 8, boost/process/detail/posix/shell_path.hpp at line 8, boost/process/detail/posix/sigchld_service.hpp at line 4, boost/process/detail/posix/signal.hpp at line 9, boost/process/detail/posix/start_dir.hpp at line 8, boost/process/detail/posix/terminate.hpp at line 8, boost/process/detail/posix/wait_for_exit.hpp at line 8, boost/process/detail/posix/wait_group.hpp at line 8, boost/process/detail/throw_on_error.hpp at line 9, boost/process/detail/traits.hpp at line 4, boost/process/detail/traits/async.hpp at line 4, boost/process/detail/traits/cmd_or_exe.hpp at line 4, boost/process/detail/traits/decl.hpp at line 4, boost/process/detail/traits/env.hpp at line 4, boost/process/detail/traits/error.hpp at line 4, boost/process/detail/traits/group.hpp at line 4, boost/process/detail/traits/wchar_t.hpp at line 4, boost/process/detail/windows/asio_fwd.hpp at line 4, boost/process/detail/windows/async_handler.hpp at line 4, boost/process/detail/windows/async_in.hpp at line 8, boost/process/detail/windows/async_out.hpp at line 8, boost/process/detail/windows/async_pipe.hpp at line 4, boost/process/detail/windows/basic_cmd.hpp at line 4, boost/process/detail/windows/basic_pipe.hpp at line 4, boost/process/detail/windows/child_handle.hpp at line 8, boost/process/detail/windows/close_in.hpp at line 8, boost/process/detail/windows/close_out.hpp at line 8, boost/process/detail/windows/cmd.hpp at line 4, boost/process/detail/windows/compare_handles.hpp at line 4, boost/process/detail/windows/env_init.hpp at line 4, boost/process/detail/windows/environment.hpp at line 4, boost/process/detail/windows/executor.hpp at line 9, boost/process/detail/windows/file_descriptor.hpp at line 4, boost/process/detail/windows/file_in.hpp at line 8, boost/process/detail/windows/file_out.hpp at line 8, boost/process/detail/windows/group_handle.hpp at line 4, boost/process/detail/windows/group_ref.hpp at line 4, boost/process/detail/windows/handler.hpp at line 4, boost/process/detail/windows/io_context_ref.hpp at line 4, boost/process/detail/windows/is_running.hpp at line 4, boost/process/detail/windows/job_workaround.hpp at line 4, boost/process/detail/windows/locale.hpp at line 5, boost/process/detail/windows/null_in.hpp at line 8, boost/process/detail/windows/null_out.hpp at line 8, boost/process/detail/windows/on_exit.hpp at line 4, boost/process/detail/windows/pipe_in.hpp at line 8, boost/process/detail/windows/pipe_out.hpp at line 9, boost/process/detail/windows/search_path.hpp at line 8, boost/process/detail/windows/shell_path.hpp at line 8, boost/process/detail/windows/show_window.hpp at line 9, boost/process/detail/windows/start_dir.hpp at line 8, boost/process/detail/windows/terminate.hpp at line 8, boost/process/detail/windows/wait_for_exit.hpp at line 9, boost/process/detail/windows/wait_group.hpp at line 4, boost/process/env.hpp at line 4, boost/process/environment.hpp at line 4, boost/process/error.hpp at line 9, boost/process/exception.hpp at line 4, boost/process/exe.hpp at line 9, boost/process/extend.hpp at line 4, boost/process/group.hpp at line 4, boost/process/io.hpp at line 4, boost/process/locale.hpp at line 4, boost/process/pipe.hpp at line 8, boost/process/posix.hpp at line 4, boost/process/search_path.hpp at line 8, boost/process/spawn.hpp at line 9, boost/process/start_dir.hpp at line 8, boost/process/system.hpp at line 9, boost/process/windows.hpp at line 4, boost/thread/with_lock_guard.hpp at line 5, boost/type_index.hpp at line 5, boost/type_index/ctti_type_index.hpp at line 6, boost/type_index/detail/compile_time_type_info.hpp at line 6, boost/type_index/detail/ctti_register_class.hpp at line 6, boost/type_index/detail/stl_register_class.hpp at line 6, boost/type_index/runtime_cast.hpp at line 6, boost/type_index/runtime_cast/boost_shared_ptr_cast.hpp at line 6, boost/type_index/runtime_cast/detail/runtime_cast_impl.hpp at line 6, boost/type_index/runtime_cast/pointer_cast.hpp at line 6, boost/type_index/runtime_cast/reference_cast.hpp at line 6, boost/type_index/runtime_cast/register_runtime_class.hpp at line 6, boost/type_index/runtime_cast/std_shared_ptr_cast.hpp at line 6, boost/type_index/stl_type_index.hpp at line 6, boost/type_index/type_index_facade.hpp at line 6, boost/typeof/encode_decode.hpp at line 4, boost/typeof/encode_decode_params.hpp at line 3, boost/typeof/integral_template_param.hpp at line 3, boost/typeof/modifiers.hpp at line 3, boost/typeof/register_functions_iterate.hpp at line 3, boost/typeof/template_encoding.hpp at line 4, boost/typeof/template_template_param.hpp at line 4, boost/typeof/type_encoding.hpp at line 3, boost/typeof/type_template_param.hpp at line 3, boost/typeof/typeof.hpp at line 3, boost/typeof/typeof_impl.hpp at line 4, boost/unordered/detail/fwd.hpp at line 4, boost/unordered/detail/implementation.hpp at line 5, boost/unordered/detail/map.hpp at line 4, boost/unordered/detail/set.hpp at line 4, boost/unordered/unordered_map.hpp at line 5, boost/unordered/unordered_map_fwd.hpp at line 4, boost/unordered/unordered_set.hpp at line 5, boost/unordered/unordered_set_fwd.hpp at line 4, boost/unordered_map.hpp at line 5, boost/unordered_set.hpp at line 5
+ License text:
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/algorithm/minmax.hpp [3:4]
+ boost/algorithm/minmax_element.hpp [3:4]
+ boost/asio.hpp [7:8]
+ boost/asio/associated_allocator.hpp [7:8]
+ boost/asio/associated_executor.hpp [7:8]
+ boost/asio/async_result.hpp [7:8]
+ boost/asio/basic_datagram_socket.hpp [7:8]
+ boost/asio/basic_deadline_timer.hpp [7:8]
+ boost/asio/basic_io_object.hpp [7:8]
+ boost/asio/basic_raw_socket.hpp [7:8]
+ boost/asio/basic_seq_packet_socket.hpp [7:8]
+ boost/asio/basic_serial_port.hpp [8:9]
+ boost/asio/basic_signal_set.hpp [7:8]
+ boost/asio/basic_socket.hpp [7:8]
+ boost/asio/basic_socket_acceptor.hpp [7:8]
+ boost/asio/basic_socket_iostream.hpp [7:8]
+ boost/asio/basic_socket_streambuf.hpp [7:8]
+ boost/asio/basic_stream_socket.hpp [7:8]
+ boost/asio/basic_streambuf.hpp [7:8]
+ boost/asio/basic_streambuf_fwd.hpp [7:8]
+ boost/asio/basic_waitable_timer.hpp [7:8]
+ boost/asio/bind_executor.hpp [7:8]
+ boost/asio/buffer.hpp [7:8]
+ boost/asio/buffered_read_stream.hpp [7:8]
+ boost/asio/buffered_read_stream_fwd.hpp [7:8]
+ boost/asio/buffered_stream.hpp [7:8]
+ boost/asio/buffered_stream_fwd.hpp [7:8]
+ boost/asio/buffered_write_stream.hpp [7:8]
+ boost/asio/buffered_write_stream_fwd.hpp [7:8]
+ boost/asio/buffers_iterator.hpp [7:8]
+ boost/asio/completion_condition.hpp [7:8]
+ boost/asio/connect.hpp [7:8]
+ boost/asio/coroutine.hpp [7:8]
+ boost/asio/datagram_socket_service.hpp [7:8]
+ boost/asio/deadline_timer.hpp [7:8]
+ boost/asio/deadline_timer_service.hpp [7:8]
+ boost/asio/defer.hpp [7:8]
+ boost/asio/detail/array.hpp [7:8]
+ boost/asio/detail/array_fwd.hpp [7:8]
+ boost/asio/detail/assert.hpp [7:8]
+ boost/asio/detail/atomic_count.hpp [7:8]
+ boost/asio/detail/base_from_completion_cond.hpp [7:8]
+ boost/asio/detail/bind_handler.hpp [7:8]
+ boost/asio/detail/buffer_resize_guard.hpp [7:8]
+ boost/asio/detail/buffer_sequence_adapter.hpp [7:8]
+ boost/asio/detail/buffered_stream_storage.hpp [7:8]
+ boost/asio/detail/call_stack.hpp [7:8]
+ boost/asio/detail/chrono.hpp [7:8]
+ boost/asio/detail/chrono_time_traits.hpp [7:8]
+ boost/asio/detail/completion_handler.hpp [7:8]
+ boost/asio/detail/concurrency_hint.hpp [7:8]
+ boost/asio/detail/conditionally_enabled_event.hpp [7:8]
+ boost/asio/detail/conditionally_enabled_mutex.hpp [7:8]
+ boost/asio/detail/config.hpp [7:8]
+ boost/asio/detail/consuming_buffers.hpp [7:8]
+ boost/asio/detail/cstddef.hpp [7:8]
+ boost/asio/detail/cstdint.hpp [7:8]
+ boost/asio/detail/date_time_fwd.hpp [7:8]
+ boost/asio/detail/deadline_timer_service.hpp [7:8]
+ boost/asio/detail/dependent_type.hpp [7:8]
+ boost/asio/detail/descriptor_ops.hpp [7:8]
+ boost/asio/detail/descriptor_read_op.hpp [7:8]
+ boost/asio/detail/descriptor_write_op.hpp [7:8]
+ boost/asio/detail/dev_poll_reactor.hpp [7:8]
+ boost/asio/detail/epoll_reactor.hpp [7:8]
+ boost/asio/detail/event.hpp [7:8]
+ boost/asio/detail/eventfd_select_interrupter.hpp [8:9]
+ boost/asio/detail/executor_op.hpp [7:8]
+ boost/asio/detail/fd_set_adapter.hpp [7:8]
+ boost/asio/detail/fenced_block.hpp [7:8]
+ boost/asio/detail/functional.hpp [7:8]
+ boost/asio/detail/gcc_arm_fenced_block.hpp [7:8]
+ boost/asio/detail/gcc_hppa_fenced_block.hpp [7:8]
+ boost/asio/detail/gcc_sync_fenced_block.hpp [7:8]
+ boost/asio/detail/gcc_x86_fenced_block.hpp [7:8]
+ boost/asio/detail/global.hpp [7:8]
+ boost/asio/detail/handler_alloc_helpers.hpp [7:8]
+ boost/asio/detail/handler_cont_helpers.hpp [7:8]
+ boost/asio/detail/handler_invoke_helpers.hpp [7:8]
+ boost/asio/detail/handler_tracking.hpp [7:8]
+ boost/asio/detail/handler_type_requirements.hpp [7:8]
+ boost/asio/detail/handler_work.hpp [7:8]
+ boost/asio/detail/hash_map.hpp [7:8]
+ boost/asio/detail/impl/buffer_sequence_adapter.ipp [7:8]
+ boost/asio/detail/impl/descriptor_ops.ipp [7:8]
+ boost/asio/detail/impl/dev_poll_reactor.hpp [7:8]
+ boost/asio/detail/impl/dev_poll_reactor.ipp [7:8]
+ boost/asio/detail/impl/epoll_reactor.hpp [7:8]
+ boost/asio/detail/impl/epoll_reactor.ipp [7:8]
+ boost/asio/detail/impl/eventfd_select_interrupter.ipp [8:9]
+ boost/asio/detail/impl/handler_tracking.ipp [7:8]
+ boost/asio/detail/impl/kqueue_reactor.hpp [8:9]
+ boost/asio/detail/impl/kqueue_reactor.ipp [8:9]
+ boost/asio/detail/impl/null_event.ipp [7:8]
+ boost/asio/detail/impl/pipe_select_interrupter.ipp [7:8]
+ boost/asio/detail/impl/posix_event.ipp [7:8]
+ boost/asio/detail/impl/posix_mutex.ipp [7:8]
+ boost/asio/detail/impl/posix_thread.ipp [7:8]
+ boost/asio/detail/impl/posix_tss_ptr.ipp [7:8]
+ boost/asio/detail/impl/reactive_descriptor_service.ipp [7:8]
+ boost/asio/detail/impl/reactive_serial_port_service.ipp [8:9]
+ boost/asio/detail/impl/reactive_socket_service_base.ipp [7:8]
+ boost/asio/detail/impl/resolver_service_base.ipp [7:8]
+ boost/asio/detail/impl/scheduler.ipp [7:8]
+ boost/asio/detail/impl/select_reactor.hpp [7:8]
+ boost/asio/detail/impl/select_reactor.ipp [7:8]
+ boost/asio/detail/impl/service_registry.hpp [7:8]
+ boost/asio/detail/impl/service_registry.ipp [7:8]
+ boost/asio/detail/impl/signal_set_service.ipp [7:8]
+ boost/asio/detail/impl/socket_ops.ipp [7:8]
+ boost/asio/detail/impl/socket_select_interrupter.ipp [7:8]
+ boost/asio/detail/impl/strand_executor_service.hpp [7:8]
+ boost/asio/detail/impl/strand_executor_service.ipp [7:8]
+ boost/asio/detail/impl/strand_service.hpp [7:8]
+ boost/asio/detail/impl/strand_service.ipp [7:8]
+ boost/asio/detail/impl/throw_error.ipp [7:8]
+ boost/asio/detail/impl/timer_queue_ptime.ipp [7:8]
+ boost/asio/detail/impl/timer_queue_set.ipp [7:8]
+ boost/asio/detail/impl/win_event.ipp [7:8]
+ boost/asio/detail/impl/win_iocp_handle_service.ipp [8:9]
+ boost/asio/detail/impl/win_iocp_io_context.hpp [7:8]
+ boost/asio/detail/impl/win_iocp_io_context.ipp [7:8]
+ boost/asio/detail/impl/win_iocp_serial_port_service.ipp [8:9]
+ boost/asio/detail/impl/win_iocp_socket_service_base.ipp [7:8]
+ boost/asio/detail/impl/win_mutex.ipp [7:8]
+ boost/asio/detail/impl/win_object_handle_service.ipp [8:9]
+ boost/asio/detail/impl/win_static_mutex.ipp [7:8]
+ boost/asio/detail/impl/win_thread.ipp [7:8]
+ boost/asio/detail/impl/win_tss_ptr.ipp [7:8]
+ boost/asio/detail/impl/winrt_ssocket_service_base.ipp [7:8]
+ boost/asio/detail/impl/winrt_timer_scheduler.hpp [7:8]
+ boost/asio/detail/impl/winrt_timer_scheduler.ipp [7:8]
+ boost/asio/detail/impl/winsock_init.ipp [7:8]
+ boost/asio/detail/io_control.hpp [7:8]
+ boost/asio/detail/is_buffer_sequence.hpp [7:8]
+ boost/asio/detail/is_executor.hpp [7:8]
+ boost/asio/detail/keyword_tss_ptr.hpp [7:8]
+ boost/asio/detail/kqueue_reactor.hpp [8:9]
+ boost/asio/detail/limits.hpp [7:8]
+ boost/asio/detail/local_free_on_block_exit.hpp [7:8]
+ boost/asio/detail/macos_fenced_block.hpp [7:8]
+ boost/asio/detail/memory.hpp [7:8]
+ boost/asio/detail/mutex.hpp [7:8]
+ boost/asio/detail/noncopyable.hpp [7:8]
+ boost/asio/detail/null_event.hpp [7:8]
+ boost/asio/detail/null_fenced_block.hpp [7:8]
+ boost/asio/detail/null_global.hpp [7:8]
+ boost/asio/detail/null_mutex.hpp [7:8]
+ boost/asio/detail/null_reactor.hpp [7:8]
+ boost/asio/detail/null_signal_blocker.hpp [7:8]
+ boost/asio/detail/null_socket_service.hpp [7:8]
+ boost/asio/detail/null_static_mutex.hpp [7:8]
+ boost/asio/detail/null_thread.hpp [7:8]
+ boost/asio/detail/null_tss_ptr.hpp [7:8]
+ boost/asio/detail/object_pool.hpp [7:8]
+ boost/asio/detail/old_win_sdk_compat.hpp [7:8]
+ boost/asio/detail/op_queue.hpp [7:8]
+ boost/asio/detail/operation.hpp [7:8]
+ boost/asio/detail/pipe_select_interrupter.hpp [7:8]
+ boost/asio/detail/pop_options.hpp [7:8]
+ boost/asio/detail/posix_event.hpp [7:8]
+ boost/asio/detail/posix_fd_set_adapter.hpp [7:8]
+ boost/asio/detail/posix_global.hpp [7:8]
+ boost/asio/detail/posix_mutex.hpp [7:8]
+ boost/asio/detail/posix_signal_blocker.hpp [7:8]
+ boost/asio/detail/posix_static_mutex.hpp [7:8]
+ boost/asio/detail/posix_thread.hpp [7:8]
+ boost/asio/detail/posix_tss_ptr.hpp [7:8]
+ boost/asio/detail/push_options.hpp [7:8]
+ boost/asio/detail/reactive_descriptor_service.hpp [7:8]
+ boost/asio/detail/reactive_null_buffers_op.hpp [7:8]
+ boost/asio/detail/reactive_serial_port_service.hpp [8:9]
+ boost/asio/detail/reactive_socket_accept_op.hpp [7:8]
+ boost/asio/detail/reactive_socket_connect_op.hpp [7:8]
+ boost/asio/detail/reactive_socket_recv_op.hpp [7:8]
+ boost/asio/detail/reactive_socket_recvfrom_op.hpp [7:8]
+ boost/asio/detail/reactive_socket_recvmsg_op.hpp [7:8]
+ boost/asio/detail/reactive_socket_send_op.hpp [7:8]
+ boost/asio/detail/reactive_socket_sendto_op.hpp [7:8]
+ boost/asio/detail/reactive_socket_service.hpp [7:8]
+ boost/asio/detail/reactive_socket_service_base.hpp [7:8]
+ boost/asio/detail/reactive_wait_op.hpp [7:8]
+ boost/asio/detail/reactor.hpp [7:8]
+ boost/asio/detail/reactor_fwd.hpp [7:8]
+ boost/asio/detail/reactor_op.hpp [7:8]
+ boost/asio/detail/reactor_op_queue.hpp [7:8]
+ boost/asio/detail/recycling_allocator.hpp [7:8]
+ boost/asio/detail/regex_fwd.hpp [7:8]
+ boost/asio/detail/resolve_endpoint_op.hpp [7:8]
+ boost/asio/detail/resolve_op.hpp [7:8]
+ boost/asio/detail/resolve_query_op.hpp [7:8]
+ boost/asio/detail/resolver_service.hpp [7:8]
+ boost/asio/detail/resolver_service_base.hpp [7:8]
+ boost/asio/detail/scheduler.hpp [7:8]
+ boost/asio/detail/scheduler_operation.hpp [7:8]
+ boost/asio/detail/scheduler_thread_info.hpp [7:8]
+ boost/asio/detail/scoped_lock.hpp [7:8]
+ boost/asio/detail/scoped_ptr.hpp [7:8]
+ boost/asio/detail/select_interrupter.hpp [7:8]
+ boost/asio/detail/select_reactor.hpp [7:8]
+ boost/asio/detail/service_registry.hpp [7:8]
+ boost/asio/detail/signal_blocker.hpp [7:8]
+ boost/asio/detail/signal_handler.hpp [7:8]
+ boost/asio/detail/signal_init.hpp [7:8]
+ boost/asio/detail/signal_op.hpp [7:8]
+ boost/asio/detail/signal_set_service.hpp [7:8]
+ boost/asio/detail/socket_holder.hpp [7:8]
+ boost/asio/detail/socket_ops.hpp [7:8]
+ boost/asio/detail/socket_option.hpp [7:8]
+ boost/asio/detail/socket_select_interrupter.hpp [7:8]
+ boost/asio/detail/socket_types.hpp [7:8]
+ boost/asio/detail/solaris_fenced_block.hpp [7:8]
+ boost/asio/detail/static_mutex.hpp [7:8]
+ boost/asio/detail/std_event.hpp [7:8]
+ boost/asio/detail/std_fenced_block.hpp [7:8]
+ boost/asio/detail/std_global.hpp [7:8]
+ boost/asio/detail/std_mutex.hpp [7:8]
+ boost/asio/detail/std_static_mutex.hpp [7:8]
+ boost/asio/detail/std_thread.hpp [7:8]
+ boost/asio/detail/strand_executor_service.hpp [7:8]
+ boost/asio/detail/strand_service.hpp [7:8]
+ boost/asio/detail/string_view.hpp [7:8]
+ boost/asio/detail/thread.hpp [7:8]
+ boost/asio/detail/thread_context.hpp [7:8]
+ boost/asio/detail/thread_group.hpp [7:8]
+ boost/asio/detail/thread_info_base.hpp [7:8]
+ boost/asio/detail/throw_error.hpp [7:8]
+ boost/asio/detail/throw_exception.hpp [7:8]
+ boost/asio/detail/timer_queue.hpp [7:8]
+ boost/asio/detail/timer_queue_base.hpp [7:8]
+ boost/asio/detail/timer_queue_ptime.hpp [7:8]
+ boost/asio/detail/timer_queue_set.hpp [7:8]
+ boost/asio/detail/timer_scheduler.hpp [7:8]
+ boost/asio/detail/timer_scheduler_fwd.hpp [7:8]
+ boost/asio/detail/tss_ptr.hpp [7:8]
+ boost/asio/detail/type_traits.hpp [7:8]
+ boost/asio/detail/variadic_templates.hpp [7:8]
+ boost/asio/detail/wait_handler.hpp [7:8]
+ boost/asio/detail/wait_op.hpp [7:8]
+ boost/asio/detail/win_event.hpp [7:8]
+ boost/asio/detail/win_fd_set_adapter.hpp [7:8]
+ boost/asio/detail/win_fenced_block.hpp [7:8]
+ boost/asio/detail/win_global.hpp [7:8]
+ boost/asio/detail/win_iocp_handle_read_op.hpp [8:9]
+ boost/asio/detail/win_iocp_handle_service.hpp [8:9]
+ boost/asio/detail/win_iocp_handle_write_op.hpp [8:9]
+ boost/asio/detail/win_iocp_io_context.hpp [7:8]
+ boost/asio/detail/win_iocp_null_buffers_op.hpp [7:8]
+ boost/asio/detail/win_iocp_operation.hpp [7:8]
+ boost/asio/detail/win_iocp_overlapped_op.hpp [7:8]
+ boost/asio/detail/win_iocp_overlapped_ptr.hpp [7:8]
+ boost/asio/detail/win_iocp_serial_port_service.hpp [8:9]
+ boost/asio/detail/win_iocp_socket_accept_op.hpp [7:8]
+ boost/asio/detail/win_iocp_socket_connect_op.hpp [7:8]
+ boost/asio/detail/win_iocp_socket_recv_op.hpp [7:8]
+ boost/asio/detail/win_iocp_socket_recvfrom_op.hpp [7:8]
+ boost/asio/detail/win_iocp_socket_recvmsg_op.hpp [7:8]
+ boost/asio/detail/win_iocp_socket_send_op.hpp [7:8]
+ boost/asio/detail/win_iocp_socket_service.hpp [7:8]
+ boost/asio/detail/win_iocp_socket_service_base.hpp [7:8]
+ boost/asio/detail/win_iocp_thread_info.hpp [7:8]
+ boost/asio/detail/win_iocp_wait_op.hpp [7:8]
+ boost/asio/detail/win_mutex.hpp [7:8]
+ boost/asio/detail/win_object_handle_service.hpp [8:9]
+ boost/asio/detail/win_static_mutex.hpp [7:8]
+ boost/asio/detail/win_thread.hpp [7:8]
+ boost/asio/detail/win_tss_ptr.hpp [7:8]
+ boost/asio/detail/winapp_thread.hpp [7:8]
+ boost/asio/detail/wince_thread.hpp [7:8]
+ boost/asio/detail/winrt_async_manager.hpp [7:8]
+ boost/asio/detail/winrt_async_op.hpp [7:8]
+ boost/asio/detail/winrt_resolve_op.hpp [7:8]
+ boost/asio/detail/winrt_resolver_service.hpp [7:8]
+ boost/asio/detail/winrt_socket_connect_op.hpp [7:8]
+ boost/asio/detail/winrt_socket_recv_op.hpp [7:8]
+ boost/asio/detail/winrt_socket_send_op.hpp [7:8]
+ boost/asio/detail/winrt_ssocket_service.hpp [7:8]
+ boost/asio/detail/winrt_ssocket_service_base.hpp [7:8]
+ boost/asio/detail/winrt_timer_scheduler.hpp [7:8]
+ boost/asio/detail/winrt_utils.hpp [7:8]
+ boost/asio/detail/winsock_init.hpp [7:8]
+ boost/asio/detail/work_dispatcher.hpp [7:8]
+ boost/asio/detail/wrapped_handler.hpp [7:8]
+ boost/asio/dispatch.hpp [7:8]
+ boost/asio/error.hpp [7:8]
+ boost/asio/execution_context.hpp [7:8]
+ boost/asio/executor.hpp [7:8]
+ boost/asio/executor_work_guard.hpp [7:8]
+ boost/asio/experimental.hpp [7:8]
+ boost/asio/experimental/co_spawn.hpp [7:8]
+ boost/asio/experimental/detached.hpp [7:8]
+ boost/asio/experimental/impl/co_spawn.hpp [7:8]
+ boost/asio/experimental/impl/detached.hpp [7:8]
+ boost/asio/experimental/impl/redirect_error.hpp [7:8]
+ boost/asio/experimental/redirect_error.hpp [7:8]
+ boost/asio/generic/basic_endpoint.hpp [7:8]
+ boost/asio/generic/datagram_protocol.hpp [7:8]
+ boost/asio/generic/detail/endpoint.hpp [7:8]
+ boost/asio/generic/detail/impl/endpoint.ipp [7:8]
+ boost/asio/generic/raw_protocol.hpp [7:8]
+ boost/asio/generic/seq_packet_protocol.hpp [7:8]
+ boost/asio/generic/stream_protocol.hpp [7:8]
+ boost/asio/handler_alloc_hook.hpp [7:8]
+ boost/asio/handler_continuation_hook.hpp [7:8]
+ boost/asio/handler_invoke_hook.hpp [7:8]
+ boost/asio/handler_type.hpp [7:8]
+ boost/asio/high_resolution_timer.hpp [7:8]
+ boost/asio/impl/buffered_read_stream.hpp [7:8]
+ boost/asio/impl/buffered_write_stream.hpp [7:8]
+ boost/asio/impl/connect.hpp [7:8]
+ boost/asio/impl/defer.hpp [7:8]
+ boost/asio/impl/dispatch.hpp [7:8]
+ boost/asio/impl/error.ipp [7:8]
+ boost/asio/impl/execution_context.hpp [7:8]
+ boost/asio/impl/execution_context.ipp [7:8]
+ boost/asio/impl/executor.hpp [7:8]
+ boost/asio/impl/executor.ipp [7:8]
+ boost/asio/impl/handler_alloc_hook.ipp [7:8]
+ boost/asio/impl/io_context.hpp [7:8]
+ boost/asio/impl/io_context.ipp [7:8]
+ boost/asio/impl/post.hpp [7:8]
+ boost/asio/impl/read.hpp [7:8]
+ boost/asio/impl/read_at.hpp [7:8]
+ boost/asio/impl/read_until.hpp [7:8]
+ boost/asio/impl/serial_port_base.hpp [8:9]
+ boost/asio/impl/serial_port_base.ipp [8:9]
+ boost/asio/impl/spawn.hpp [7:8]
+ boost/asio/impl/src.cpp [7:8]
+ boost/asio/impl/src.hpp [7:8]
+ boost/asio/impl/system_context.hpp [7:8]
+ boost/asio/impl/system_context.ipp [7:8]
+ boost/asio/impl/system_executor.hpp [7:8]
+ boost/asio/impl/thread_pool.hpp [7:8]
+ boost/asio/impl/thread_pool.ipp [7:8]
+ boost/asio/impl/use_future.hpp [7:8]
+ boost/asio/impl/write.hpp [7:8]
+ boost/asio/impl/write_at.hpp [7:8]
+ boost/asio/io_context.hpp [7:8]
+ boost/asio/io_context_strand.hpp [7:8]
+ boost/asio/io_service.hpp [7:8]
+ boost/asio/io_service_strand.hpp [7:8]
+ boost/asio/ip/address.hpp [7:8]
+ boost/asio/ip/address_v4.hpp [7:8]
+ boost/asio/ip/address_v4_iterator.hpp [7:8]
+ boost/asio/ip/address_v4_range.hpp [7:8]
+ boost/asio/ip/address_v6.hpp [7:8]
+ boost/asio/ip/address_v6_iterator.hpp [8:9]
+ boost/asio/ip/address_v6_range.hpp [8:9]
+ boost/asio/ip/bad_address_cast.hpp [7:8]
+ boost/asio/ip/basic_endpoint.hpp [7:8]
+ boost/asio/ip/basic_resolver.hpp [7:8]
+ boost/asio/ip/basic_resolver_entry.hpp [7:8]
+ boost/asio/ip/basic_resolver_iterator.hpp [7:8]
+ boost/asio/ip/basic_resolver_query.hpp [7:8]
+ boost/asio/ip/basic_resolver_results.hpp [7:8]
+ boost/asio/ip/detail/endpoint.hpp [7:8]
+ boost/asio/ip/detail/impl/endpoint.ipp [7:8]
+ boost/asio/ip/detail/socket_option.hpp [7:8]
+ boost/asio/ip/host_name.hpp [7:8]
+ boost/asio/ip/icmp.hpp [7:8]
+ boost/asio/ip/impl/address.hpp [7:8]
+ boost/asio/ip/impl/address.ipp [7:8]
+ boost/asio/ip/impl/address_v4.hpp [7:8]
+ boost/asio/ip/impl/address_v4.ipp [7:8]
+ boost/asio/ip/impl/address_v6.hpp [7:8]
+ boost/asio/ip/impl/address_v6.ipp [7:8]
+ boost/asio/ip/impl/basic_endpoint.hpp [7:8]
+ boost/asio/ip/impl/host_name.ipp [7:8]
+ boost/asio/ip/impl/network_v4.hpp [8:9]
+ boost/asio/ip/impl/network_v4.ipp [8:9]
+ boost/asio/ip/impl/network_v6.hpp [7:8]
+ boost/asio/ip/impl/network_v6.ipp [8:9]
+ boost/asio/ip/multicast.hpp [7:8]
+ boost/asio/ip/network_v4.hpp [8:9]
+ boost/asio/ip/network_v6.hpp [8:9]
+ boost/asio/ip/resolver_base.hpp [7:8]
+ boost/asio/ip/resolver_query_base.hpp [7:8]
+ boost/asio/ip/resolver_service.hpp [7:8]
+ boost/asio/ip/tcp.hpp [7:8]
+ boost/asio/ip/udp.hpp [7:8]
+ boost/asio/ip/unicast.hpp [7:8]
+ boost/asio/ip/v6_only.hpp [7:8]
+ boost/asio/is_executor.hpp [7:8]
+ boost/asio/is_read_buffered.hpp [7:8]
+ boost/asio/is_write_buffered.hpp [7:8]
+ boost/asio/local/basic_endpoint.hpp [8:9]
+ boost/asio/local/connect_pair.hpp [7:8]
+ boost/asio/local/datagram_protocol.hpp [7:8]
+ boost/asio/local/detail/endpoint.hpp [8:9]
+ boost/asio/local/detail/impl/endpoint.ipp [8:9]
+ boost/asio/local/stream_protocol.hpp [7:8]
+ boost/asio/packaged_task.hpp [7:8]
+ boost/asio/placeholders.hpp [7:8]
+ boost/asio/posix/basic_descriptor.hpp [7:8]
+ boost/asio/posix/basic_stream_descriptor.hpp [7:8]
+ boost/asio/posix/descriptor.hpp [7:8]
+ boost/asio/posix/descriptor_base.hpp [7:8]
+ boost/asio/posix/stream_descriptor.hpp [7:8]
+ boost/asio/posix/stream_descriptor_service.hpp [7:8]
+ boost/asio/post.hpp [7:8]
+ boost/asio/raw_socket_service.hpp [7:8]
+ boost/asio/read.hpp [7:8]
+ boost/asio/read_at.hpp [7:8]
+ boost/asio/read_until.hpp [7:8]
+ boost/asio/seq_packet_socket_service.hpp [7:8]
+ boost/asio/serial_port.hpp [8:9]
+ boost/asio/serial_port_base.hpp [8:9]
+ boost/asio/serial_port_service.hpp [7:8]
+ boost/asio/signal_set.hpp [7:8]
+ boost/asio/signal_set_service.hpp [7:8]
+ boost/asio/socket_acceptor_service.hpp [7:8]
+ boost/asio/socket_base.hpp [7:8]
+ boost/asio/spawn.hpp [7:8]
+ boost/asio/ssl.hpp [7:8]
+ boost/asio/ssl/context.hpp [7:8]
+ boost/asio/ssl/context_base.hpp [7:8]
+ boost/asio/ssl/detail/buffered_handshake_op.hpp [7:8]
+ boost/asio/ssl/detail/engine.hpp [7:8]
+ boost/asio/ssl/detail/handshake_op.hpp [7:8]
+ boost/asio/ssl/detail/impl/engine.ipp [7:8]
+ boost/asio/ssl/detail/impl/openssl_init.ipp [8:9]
+ boost/asio/ssl/detail/io.hpp [7:8]
+ boost/asio/ssl/detail/openssl_init.hpp [7:8]
+ boost/asio/ssl/detail/openssl_types.hpp [7:8]
+ boost/asio/ssl/detail/password_callback.hpp [7:8]
+ boost/asio/ssl/detail/read_op.hpp [7:8]
+ boost/asio/ssl/detail/shutdown_op.hpp [7:8]
+ boost/asio/ssl/detail/stream_core.hpp [7:8]
+ boost/asio/ssl/detail/verify_callback.hpp [7:8]
+ boost/asio/ssl/detail/write_op.hpp [7:8]
+ boost/asio/ssl/error.hpp [7:8]
+ boost/asio/ssl/impl/context.hpp [8:9]
+ boost/asio/ssl/impl/context.ipp [8:9]
+ boost/asio/ssl/impl/error.ipp [7:8]
+ boost/asio/ssl/impl/rfc2818_verification.ipp [7:8]
+ boost/asio/ssl/impl/src.hpp [7:8]
+ boost/asio/ssl/rfc2818_verification.hpp [7:8]
+ boost/asio/ssl/stream.hpp [7:8]
+ boost/asio/ssl/stream_base.hpp [7:8]
+ boost/asio/ssl/verify_context.hpp [7:8]
+ boost/asio/ssl/verify_mode.hpp [7:8]
+ boost/asio/steady_timer.hpp [7:8]
+ boost/asio/strand.hpp [7:8]
+ boost/asio/stream_socket_service.hpp [7:8]
+ boost/asio/streambuf.hpp [7:8]
+ boost/asio/system_context.hpp [7:8]
+ boost/asio/system_executor.hpp [7:8]
+ boost/asio/system_timer.hpp [7:8]
+ boost/asio/thread_pool.hpp [7:8]
+ boost/asio/time_traits.hpp [7:8]
+ boost/asio/ts/buffer.hpp [7:8]
+ boost/asio/ts/executor.hpp [7:8]
+ boost/asio/ts/internet.hpp [7:8]
+ boost/asio/ts/io_context.hpp [7:8]
+ boost/asio/ts/net.hpp [7:8]
+ boost/asio/ts/netfwd.hpp [7:8]
+ boost/asio/ts/socket.hpp [7:8]
+ boost/asio/ts/timer.hpp [7:8]
+ boost/asio/unyield.hpp [7:8]
+ boost/asio/use_future.hpp [7:8]
+ boost/asio/uses_executor.hpp [7:8]
+ boost/asio/version.hpp [7:8]
+ boost/asio/wait_traits.hpp [7:8]
+ boost/asio/waitable_timer_service.hpp [7:8]
+ boost/asio/windows/basic_handle.hpp [7:8]
+ boost/asio/windows/basic_object_handle.hpp [8:9]
+ boost/asio/windows/basic_random_access_handle.hpp [7:8]
+ boost/asio/windows/basic_stream_handle.hpp [7:8]
+ boost/asio/windows/object_handle.hpp [8:9]
+ boost/asio/windows/object_handle_service.hpp [8:9]
+ boost/asio/windows/overlapped_handle.hpp [7:8]
+ boost/asio/windows/overlapped_ptr.hpp [7:8]
+ boost/asio/windows/random_access_handle.hpp [7:8]
+ boost/asio/windows/random_access_handle_service.hpp [7:8]
+ boost/asio/windows/stream_handle.hpp [7:8]
+ boost/asio/windows/stream_handle_service.hpp [7:8]
+ boost/asio/write.hpp [7:8]
+ boost/asio/write_at.hpp [7:8]
+ boost/asio/yield.hpp [7:8]
+ boost/beast.hpp [4:5]
+ boost/beast/core.hpp [4:5]
+ boost/beast/core/bind_handler.hpp [4:5]
+ boost/beast/core/buffered_read_stream.hpp [4:5]
+ boost/beast/core/buffers_adapter.hpp [4:5]
+ boost/beast/core/buffers_cat.hpp [4:5]
+ boost/beast/core/buffers_prefix.hpp [4:5]
+ boost/beast/core/buffers_suffix.hpp [4:5]
+ boost/beast/core/buffers_to_string.hpp [4:5]
+ boost/beast/core/detail/allocator.hpp [4:5]
+ boost/beast/core/detail/base64.hpp [4:5]
+ boost/beast/core/detail/bind_handler.hpp [4:5]
+ boost/beast/core/detail/buffers_ref.hpp [4:5]
+ boost/beast/core/detail/clamp.hpp [4:5]
+ boost/beast/core/detail/config.hpp [4:5]
+ boost/beast/core/detail/cpu_info.hpp [4:5]
+ boost/beast/core/detail/empty_base_optimization.hpp [4:5]
+ boost/beast/core/detail/integer_sequence.hpp [4:5]
+ boost/beast/core/detail/ostream.hpp [4:5]
+ boost/beast/core/detail/sha1.hpp [4:5]
+ boost/beast/core/detail/static_ostream.hpp [4:5]
+ boost/beast/core/detail/static_string.hpp [4:5]
+ boost/beast/core/detail/type_traits.hpp [4:5]
+ boost/beast/core/detail/variant.hpp [4:5]
+ boost/beast/core/detail/varint.hpp [4:5]
+ boost/beast/core/error.hpp [4:5]
+ boost/beast/core/file.hpp [4:5]
+ boost/beast/core/file_base.hpp [4:5]
+ boost/beast/core/file_posix.hpp [4:5]
+ boost/beast/core/file_stdio.hpp [4:5]
+ boost/beast/core/file_win32.hpp [4:5]
+ boost/beast/core/flat_buffer.hpp [4:5]
+ boost/beast/core/flat_static_buffer.hpp [4:5]
+ boost/beast/core/handler_ptr.hpp [4:5]
+ boost/beast/core/impl/buffered_read_stream.ipp [4:5]
+ boost/beast/core/impl/buffers_adapter.ipp [4:5]
+ boost/beast/core/impl/buffers_cat.ipp [4:5]
+ boost/beast/core/impl/buffers_prefix.ipp [4:5]
+ boost/beast/core/impl/buffers_suffix.ipp [4:5]
+ boost/beast/core/impl/file_posix.ipp [4:5]
+ boost/beast/core/impl/file_stdio.ipp [4:5]
+ boost/beast/core/impl/file_win32.ipp [4:5]
+ boost/beast/core/impl/flat_buffer.ipp [4:5]
+ boost/beast/core/impl/flat_static_buffer.ipp [4:5]
+ boost/beast/core/impl/handler_ptr.ipp [4:5]
+ boost/beast/core/impl/multi_buffer.ipp [4:5]
+ boost/beast/core/impl/read_size.ipp [4:5]
+ boost/beast/core/impl/static_buffer.ipp [4:5]
+ boost/beast/core/impl/static_string.ipp [4:5]
+ boost/beast/core/impl/string_param.ipp [4:5]
+ boost/beast/core/multi_buffer.hpp [4:5]
+ boost/beast/core/ostream.hpp [4:5]
+ boost/beast/core/read_size.hpp [4:5]
+ boost/beast/core/span.hpp [4:5]
+ boost/beast/core/static_buffer.hpp [4:5]
+ boost/beast/core/static_string.hpp [4:5]
+ boost/beast/core/string.hpp [4:5]
+ boost/beast/core/string_param.hpp [4:5]
+ boost/beast/core/type_traits.hpp [4:5]
+ boost/beast/http.hpp [4:5]
+ boost/beast/http/basic_dynamic_body.hpp [4:5]
+ boost/beast/http/basic_file_body.hpp [4:5]
+ boost/beast/http/basic_parser.hpp [4:5]
+ boost/beast/http/buffer_body.hpp [4:5]
+ boost/beast/http/chunk_encode.hpp [4:5]
+ boost/beast/http/detail/basic_parsed_list.hpp [4:5]
+ boost/beast/http/detail/basic_parser.hpp [4:5]
+ boost/beast/http/detail/chunk_encode.hpp [4:5]
+ boost/beast/http/detail/rfc7230.hpp [4:5]
+ boost/beast/http/detail/type_traits.hpp [4:5]
+ boost/beast/http/dynamic_body.hpp [4:5]
+ boost/beast/http/empty_body.hpp [4:5]
+ boost/beast/http/error.hpp [4:5]
+ boost/beast/http/field.hpp [4:5]
+ boost/beast/http/fields.hpp [4:5]
+ boost/beast/http/file_body.hpp [4:5]
+ boost/beast/http/impl/basic_parser.ipp [4:5]
+ boost/beast/http/impl/chunk_encode.ipp [4:5]
+ boost/beast/http/impl/error.ipp [4:5]
+ boost/beast/http/impl/field.ipp [4:5]
+ boost/beast/http/impl/fields.ipp [4:5]
+ boost/beast/http/impl/file_body_win32.ipp [4:5]
+ boost/beast/http/impl/message.ipp [4:5]
+ boost/beast/http/impl/parser.ipp [4:5]
+ boost/beast/http/impl/read.ipp [4:5]
+ boost/beast/http/impl/rfc7230.ipp [4:5]
+ boost/beast/http/impl/serializer.ipp [4:5]
+ boost/beast/http/impl/status.ipp [4:5]
+ boost/beast/http/impl/verb.ipp [4:5]
+ boost/beast/http/impl/write.ipp [4:5]
+ boost/beast/http/message.hpp [4:5]
+ boost/beast/http/parser.hpp [4:5]
+ boost/beast/http/read.hpp [4:5]
+ boost/beast/http/rfc7230.hpp [4:5]
+ boost/beast/http/serializer.hpp [4:5]
+ boost/beast/http/span_body.hpp [4:5]
+ boost/beast/http/status.hpp [4:5]
+ boost/beast/http/string_body.hpp [4:5]
+ boost/beast/http/type_traits.hpp [4:5]
+ boost/beast/http/vector_body.hpp [4:5]
+ boost/beast/http/verb.hpp [4:5]
+ boost/beast/http/write.hpp [4:5]
+ boost/beast/version.hpp [4:5]
+ boost/beast/websocket.hpp [4:5]
+ boost/beast/websocket/detail/error.hpp [4:5]
+ boost/beast/websocket/detail/frame.hpp [4:5]
+ boost/beast/websocket/detail/hybi13.hpp [4:5]
+ boost/beast/websocket/detail/mask.hpp [4:5]
+ boost/beast/websocket/detail/pausation.hpp [4:5]
+ boost/beast/websocket/detail/pmd_extension.hpp [4:5]
+ boost/beast/websocket/detail/stream_base.hpp [4:5]
+ boost/beast/websocket/detail/type_traits.hpp [4:5]
+ boost/beast/websocket/detail/utf8_checker.hpp [4:5]
+ boost/beast/websocket/error.hpp [4:5]
+ boost/beast/websocket/impl/accept.ipp [4:5]
+ boost/beast/websocket/impl/close.ipp [4:5]
+ boost/beast/websocket/impl/error.ipp [4:5]
+ boost/beast/websocket/impl/handshake.ipp [4:5]
+ boost/beast/websocket/impl/ping.ipp [4:5]
+ boost/beast/websocket/impl/read.ipp [4:5]
+ boost/beast/websocket/impl/rfc6455.ipp [4:5]
+ boost/beast/websocket/impl/ssl.ipp [4:5]
+ boost/beast/websocket/impl/stream.ipp [4:5]
+ boost/beast/websocket/impl/teardown.ipp [4:5]
+ boost/beast/websocket/impl/write.ipp [4:5]
+ boost/beast/websocket/option.hpp [4:5]
+ boost/beast/websocket/rfc6455.hpp [4:5]
+ boost/beast/websocket/role.hpp [4:5]
+ boost/beast/websocket/ssl.hpp [4:5]
+ boost/beast/websocket/stream.hpp [4:5]
+ boost/beast/websocket/stream_fwd.hpp [4:5]
+ boost/beast/websocket/teardown.hpp [4:5]
+ boost/beast/zlib.hpp [4:5]
+ boost/beast/zlib/deflate_stream.hpp [4:5]
+ boost/beast/zlib/detail/bitstream.hpp [4:5]
+ boost/beast/zlib/detail/deflate_stream.hpp [4:5]
+ boost/beast/zlib/detail/inflate_stream.hpp [4:5]
+ boost/beast/zlib/detail/ranges.hpp [4:5]
+ boost/beast/zlib/detail/window.hpp [4:5]
+ boost/beast/zlib/error.hpp [4:5]
+ boost/beast/zlib/impl/error.ipp [4:5]
+ boost/beast/zlib/inflate_stream.hpp [4:5]
+ boost/beast/zlib/zlib.hpp [4:5]
+ boost/container_hash/detail/float_functions.hpp [3:4]
+ boost/container_hash/detail/hash_float.hpp [3:4]
+ boost/container_hash/detail/limits.hpp [3:4]
+ boost/container_hash/extensions.hpp [3:4]
+ boost/container_hash/hash.hpp [3:4]
+ boost/container_hash/hash_fwd.hpp [3:4]
+ boost/detail/container_fwd.hpp [3:4]
+ boost/functional/hash.hpp [3:4]
+ boost/functional/hash/extensions.hpp [3:4]
+ boost/functional/hash/hash.hpp [3:4]
+ boost/functional/hash/hash_fwd.hpp [3:4]
+ boost/functional/hash_fwd.hpp [3:4]
+ boost/process.hpp [9:10]
+ boost/process/args.hpp [8:9]
+ boost/process/async.hpp [3:4]
+ boost/process/async_pipe.hpp [7:8]
+ boost/process/async_system.hpp [8:9]
+ boost/process/child.hpp [8:9]
+ boost/process/cmd.hpp [8:9]
+ boost/process/detail/basic_cmd.hpp [3:4]
+ boost/process/detail/child_decl.hpp [8:9]
+ boost/process/detail/config.hpp [8:9]
+ boost/process/detail/execute_impl.hpp [8:9]
+ boost/process/detail/handler.hpp [3:4]
+ boost/process/detail/handler_base.hpp [8:9]
+ boost/process/detail/on_exit.hpp [3:4]
+ boost/process/detail/posix/asio_fwd.hpp [3:4]
+ boost/process/detail/posix/async_handler.hpp [3:4]
+ boost/process/detail/posix/async_in.hpp [7:8]
+ boost/process/detail/posix/async_out.hpp [7:8]
+ boost/process/detail/posix/async_pipe.hpp [3:4]
+ boost/process/detail/posix/basic_cmd.hpp [3:4]
+ boost/process/detail/posix/basic_pipe.hpp [7:8]
+ boost/process/detail/posix/child_handle.hpp [7:8]
+ boost/process/detail/posix/close_in.hpp [7:8]
+ boost/process/detail/posix/close_out.hpp [7:8]
+ boost/process/detail/posix/cmd.hpp [3:4]
+ boost/process/detail/posix/compare_handles.hpp [3:4]
+ boost/process/detail/posix/env_init.hpp [3:4]
+ boost/process/detail/posix/environment.hpp [3:4]
+ boost/process/detail/posix/exe.hpp [3:4]
+ boost/process/detail/posix/executor.hpp [7:8]
+ boost/process/detail/posix/fd.hpp [7:8]
+ boost/process/detail/posix/file_descriptor.hpp [3:4]
+ boost/process/detail/posix/file_in.hpp [7:8]
+ boost/process/detail/posix/file_out.hpp [8:9]
+ boost/process/detail/posix/group_handle.hpp [3:4]
+ boost/process/detail/posix/group_ref.hpp [3:4]
+ boost/process/detail/posix/handler.hpp [3:4]
+ boost/process/detail/posix/io_context_ref.hpp [3:4]
+ boost/process/detail/posix/is_running.hpp [3:4]
+ boost/process/detail/posix/null_in.hpp [7:8]
+ boost/process/detail/posix/null_out.hpp [8:9]
+ boost/process/detail/posix/on_exit.hpp [3:4]
+ boost/process/detail/posix/pipe_in.hpp [7:8]
+ boost/process/detail/posix/pipe_out.hpp [8:9]
+ boost/process/detail/posix/search_path.hpp [7:8]
+ boost/process/detail/posix/shell_path.hpp [7:8]
+ boost/process/detail/posix/sigchld_service.hpp [3:4]
+ boost/process/detail/posix/signal.hpp [8:9]
+ boost/process/detail/posix/start_dir.hpp [7:8]
+ boost/process/detail/posix/terminate.hpp [7:8]
+ boost/process/detail/posix/wait_for_exit.hpp [7:8]
+ boost/process/detail/posix/wait_group.hpp [7:8]
+ boost/process/detail/throw_on_error.hpp [8:9]
+ boost/process/detail/traits.hpp [3:4]
+ boost/process/detail/traits/async.hpp [3:4]
+ boost/process/detail/traits/cmd_or_exe.hpp [3:4]
+ boost/process/detail/traits/decl.hpp [3:4]
+ boost/process/detail/traits/env.hpp [3:4]
+ boost/process/detail/traits/error.hpp [3:4]
+ boost/process/detail/traits/group.hpp [3:4]
+ boost/process/detail/traits/wchar_t.hpp [3:4]
+ boost/process/detail/windows/asio_fwd.hpp [3:4]
+ boost/process/detail/windows/async_handler.hpp [3:4]
+ boost/process/detail/windows/async_in.hpp [7:8]
+ boost/process/detail/windows/async_out.hpp [7:8]
+ boost/process/detail/windows/async_pipe.hpp [3:4]
+ boost/process/detail/windows/basic_cmd.hpp [3:4]
+ boost/process/detail/windows/basic_pipe.hpp [3:4]
+ boost/process/detail/windows/child_handle.hpp [7:8]
+ boost/process/detail/windows/close_in.hpp [7:8]
+ boost/process/detail/windows/close_out.hpp [7:8]
+ boost/process/detail/windows/cmd.hpp [3:4]
+ boost/process/detail/windows/compare_handles.hpp [3:4]
+ boost/process/detail/windows/env_init.hpp [3:4]
+ boost/process/detail/windows/environment.hpp [3:4]
+ boost/process/detail/windows/executor.hpp [8:9]
+ boost/process/detail/windows/file_descriptor.hpp [3:4]
+ boost/process/detail/windows/file_in.hpp [7:8]
+ boost/process/detail/windows/file_out.hpp [7:8]
+ boost/process/detail/windows/group_handle.hpp [3:4]
+ boost/process/detail/windows/group_ref.hpp [3:4]
+ boost/process/detail/windows/handler.hpp [3:4]
+ boost/process/detail/windows/io_context_ref.hpp [3:4]
+ boost/process/detail/windows/is_running.hpp [3:4]
+ boost/process/detail/windows/job_workaround.hpp [3:4]
+ boost/process/detail/windows/locale.hpp [4:5]
+ boost/process/detail/windows/null_in.hpp [7:8]
+ boost/process/detail/windows/null_out.hpp [7:8]
+ boost/process/detail/windows/on_exit.hpp [3:4]
+ boost/process/detail/windows/pipe_in.hpp [7:8]
+ boost/process/detail/windows/pipe_out.hpp [8:9]
+ boost/process/detail/windows/search_path.hpp [7:8]
+ boost/process/detail/windows/shell_path.hpp [7:8]
+ boost/process/detail/windows/show_window.hpp [8:9]
+ boost/process/detail/windows/start_dir.hpp [7:8]
+ boost/process/detail/windows/terminate.hpp [7:8]
+ boost/process/detail/windows/wait_for_exit.hpp [8:9]
+ boost/process/detail/windows/wait_group.hpp [3:4]
+ boost/process/env.hpp [3:4]
+ boost/process/environment.hpp [3:4]
+ boost/process/error.hpp [8:9]
+ boost/process/exception.hpp [3:4]
+ boost/process/exe.hpp [8:9]
+ boost/process/extend.hpp [3:4]
+ boost/process/group.hpp [3:4]
+ boost/process/io.hpp [3:4]
+ boost/process/locale.hpp [3:4]
+ boost/process/pipe.hpp [7:8]
+ boost/process/posix.hpp [3:4]
+ boost/process/search_path.hpp [7:8]
+ boost/process/spawn.hpp [8:9]
+ boost/process/start_dir.hpp [7:8]
+ boost/process/system.hpp [8:9]
+ boost/process/windows.hpp [3:4]
+ boost/thread/with_lock_guard.hpp [4:5]
+ boost/type_index.hpp [4:5]
+ boost/type_index/ctti_type_index.hpp [5:6]
+ boost/type_index/detail/compile_time_type_info.hpp [5:6]
+ boost/type_index/detail/ctti_register_class.hpp [5:6]
+ boost/type_index/detail/stl_register_class.hpp [5:6]
+ boost/type_index/runtime_cast.hpp [5:6]
+ boost/type_index/runtime_cast/boost_shared_ptr_cast.hpp [5:6]
+ boost/type_index/runtime_cast/detail/runtime_cast_impl.hpp [5:6]
+ boost/type_index/runtime_cast/pointer_cast.hpp [5:6]
+ boost/type_index/runtime_cast/reference_cast.hpp [5:6]
+ boost/type_index/runtime_cast/register_runtime_class.hpp [5:6]
+ boost/type_index/runtime_cast/std_shared_ptr_cast.hpp [5:6]
+ boost/type_index/stl_type_index.hpp [5:6]
+ boost/type_index/type_index_facade.hpp [5:6]
+ boost/typeof/encode_decode.hpp [3:4]
+ boost/typeof/encode_decode_params.hpp [2:3]
+ boost/typeof/integral_template_param.hpp [2:3]
+ boost/typeof/modifiers.hpp [2:3]
+ boost/typeof/register_functions_iterate.hpp [2:3]
+ boost/typeof/template_encoding.hpp [3:4]
+ boost/typeof/template_template_param.hpp [3:4]
+ boost/typeof/type_encoding.hpp [2:3]
+ boost/typeof/type_template_param.hpp [2:3]
+ boost/typeof/typeof.hpp [2:3]
+ boost/typeof/typeof_impl.hpp [3:4]
+ boost/unordered/detail/fwd.hpp [3:4]
+ boost/unordered/detail/implementation.hpp [4:5]
+ boost/unordered/detail/map.hpp [3:4]
+ boost/unordered/detail/set.hpp [3:4]
+ boost/unordered/unordered_map.hpp [4:5]
+ boost/unordered/unordered_map_fwd.hpp [3:4]
+ boost/unordered/unordered_set.hpp [4:5]
+ boost/unordered/unordered_set_fwd.hpp [3:4]
+ boost/unordered_map.hpp [4:5]
+ boost/unordered_set.hpp [4:5]
+
+KEEP BSL-1.0 1bc67f06e2f0ef648be482cbd0f129ee
+BELONGS ya.make
+ License text:
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE10.txt or copy at http://www.boost.org/LICENSE10.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 85.71
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/algorithm/cxx14/mismatch.hpp [4:5]
+ boost/algorithm/cxx17/exclusive_scan.hpp [4:5]
+ boost/algorithm/cxx17/for_each_n.hpp [4:5]
+ boost/algorithm/cxx17/inclusive_scan.hpp [4:5]
+ boost/algorithm/cxx17/reduce.hpp [4:5]
+ boost/algorithm/cxx17/transform_exclusive_scan.hpp [4:5]
+ boost/algorithm/cxx17/transform_inclusive_scan.hpp [4:5]
+ boost/algorithm/cxx17/transform_reduce.hpp [4:5]
+
+KEEP BSL-1.0 1d7cd1eda70644f6f1ed6eac7bbf2c13
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/concepts.hpp at line 5, boost/range/detail/misc_concept.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/range/concepts.hpp [3:6]
+ boost/range/detail/misc_concept.hpp [3:6]
+
+KEEP BSL-1.0 1e1b35c3ae13c65f63b2c7467cce8a87
+BELONGS libs/filesystem/ya.make libs/program_options/ya.make libs/serialization/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/dll.hpp at line 5, boost/dll/alias.hpp at line 5, boost/dll/detail/aggressive_ptr_cast.hpp at line 5, boost/dll/detail/ctor_dtor.hpp at line 4, boost/dll/detail/demangling/itanium.hpp at line 4, boost/dll/detail/demangling/mangled_storage_base.hpp at line 4, boost/dll/detail/demangling/msvc.hpp at line 4, boost/dll/detail/elf_info.hpp at line 5, boost/dll/detail/get_mem_fn_type.hpp at line 4, boost/dll/detail/import_mangled_helpers.hpp at line 4, boost/dll/detail/macho_info.hpp at line 5, boost/dll/detail/pe_info.hpp at line 5, boost/dll/detail/posix/path_from_handle.hpp at line 4, boost/dll/detail/posix/program_location_impl.hpp at line 5, boost/dll/detail/posix/shared_library_impl.hpp at line 5, boost/dll/detail/system_error.hpp at line 4, boost/dll/detail/type_info.hpp at line 4, boost/dll/detail/windows/path_from_handle.hpp at line 5, boost/dll/detail/windows/shared_library_impl.hpp at line 5, boost/dll/detail/x_info_interface.hpp at line 5, boost/dll/import.hpp at line 5, boost/dll/import_class.hpp at line 4, boost/dll/import_mangled.hpp at line 4, boost/dll/library_info.hpp at line 5, boost/dll/runtime_symbol_info.hpp at line 5, boost/dll/shared_library.hpp at line 5, boost/dll/shared_library_load_mode.hpp at line 5, boost/dll/smart_library.hpp at line 4, boost/math/special_functions/detail/fp_traits.hpp at line 9, boost/math/special_functions/nonfinite_num_facets.hpp at line 9, boost/program_options/cmdline.hpp at line 3, boost/program_options/detail/cmdline.hpp at line 3, boost/program_options/detail/config_file.hpp at line 3, boost/program_options/detail/convert.hpp at line 3, boost/program_options/detail/parsers.hpp at line 3, boost/program_options/detail/value_semantic.hpp at line 3, boost/program_options/environment_iterator.hpp at line 3, boost/program_options/eof_iterator.hpp at line 3, boost/program_options/errors.hpp at line 3, boost/program_options/option.hpp at line 3, boost/program_options/options_description.hpp at line 4, boost/program_options/parsers.hpp at line 3, boost/program_options/positional_options.hpp at line 3, boost/program_options/value_semantic.hpp at line 3, boost/program_options/variables_map.hpp at line 3, boost/program_options/version.hpp at line 3, boost/spirit/home/support/detail/math/detail/fp_traits.hpp at line 9, boost/spirit/home/support/detail/math/fpclassify.hpp at line 9, boost/spirit/home/support/detail/math/signbit.hpp at line 9, boost/stacktrace/detail/void_ptr_cast.hpp at line 5, libs/filesystem/src/utf8_codecvt_facet.cpp at line 3, libs/program_options/src/cmdline.cpp at line 3, libs/program_options/src/config_file.cpp at line 3, libs/program_options/src/convert.cpp at line 3, libs/program_options/src/options_description.cpp at line 4, libs/program_options/src/parsers.cpp at line 3, libs/program_options/src/positional_options.cpp at line 3, libs/program_options/src/split.cpp at line 3, libs/program_options/src/utf8_codecvt_facet.cpp at line 3, libs/program_options/src/value_semantic.cpp at line 3, libs/program_options/src/variables_map.cpp at line 3, libs/program_options/src/winmain.cpp at line 3, libs/serialization/src/utf8_codecvt_facet.cpp at line 3
+ License text:
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt
+ // or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/dll.hpp [4:6]
+ boost/dll/alias.hpp [4:6]
+ boost/dll/detail/aggressive_ptr_cast.hpp [4:6]
+ boost/dll/detail/ctor_dtor.hpp [3:5]
+ boost/dll/detail/demangling/itanium.hpp [3:5]
+ boost/dll/detail/demangling/mangled_storage_base.hpp [3:5]
+ boost/dll/detail/demangling/msvc.hpp [3:5]
+ boost/dll/detail/elf_info.hpp [4:6]
+ boost/dll/detail/get_mem_fn_type.hpp [3:5]
+ boost/dll/detail/import_mangled_helpers.hpp [3:5]
+ boost/dll/detail/macho_info.hpp [4:6]
+ boost/dll/detail/pe_info.hpp [4:6]
+ boost/dll/detail/posix/path_from_handle.hpp [3:5]
+ boost/dll/detail/posix/program_location_impl.hpp [4:6]
+ boost/dll/detail/posix/shared_library_impl.hpp [4:6]
+ boost/dll/detail/system_error.hpp [3:5]
+ boost/dll/detail/type_info.hpp [3:5]
+ boost/dll/detail/windows/path_from_handle.hpp [4:6]
+ boost/dll/detail/windows/shared_library_impl.hpp [4:6]
+ boost/dll/detail/x_info_interface.hpp [4:6]
+ boost/dll/import.hpp [4:6]
+ boost/dll/import_class.hpp [3:5]
+ boost/dll/import_mangled.hpp [3:5]
+ boost/dll/library_info.hpp [4:6]
+ boost/dll/runtime_symbol_info.hpp [4:6]
+ boost/dll/shared_library.hpp [4:6]
+ boost/dll/shared_library_load_mode.hpp [4:6]
+ boost/dll/smart_library.hpp [3:5]
+ boost/math/special_functions/detail/fp_traits.hpp [8:10]
+ boost/math/special_functions/nonfinite_num_facets.hpp [8:10]
+ boost/program_options/cmdline.hpp [2:4]
+ boost/program_options/detail/cmdline.hpp [2:4]
+ boost/program_options/detail/config_file.hpp [2:4]
+ boost/program_options/detail/convert.hpp [2:4]
+ boost/program_options/detail/parsers.hpp [2:4]
+ boost/program_options/detail/value_semantic.hpp [2:4]
+ boost/program_options/environment_iterator.hpp [2:4]
+ boost/program_options/eof_iterator.hpp [2:4]
+ boost/program_options/errors.hpp [2:4]
+ boost/program_options/option.hpp [2:4]
+ boost/program_options/options_description.hpp [3:5]
+ boost/program_options/parsers.hpp [2:4]
+ boost/program_options/positional_options.hpp [2:4]
+ boost/program_options/value_semantic.hpp [2:4]
+ boost/program_options/variables_map.hpp [2:4]
+ boost/program_options/version.hpp [2:4]
+ boost/spirit/home/support/detail/math/detail/fp_traits.hpp [8:10]
+ boost/spirit/home/support/detail/math/fpclassify.hpp [8:10]
+ boost/spirit/home/support/detail/math/signbit.hpp [8:10]
+ boost/stacktrace/detail/void_ptr_cast.hpp [4:6]
+ libs/filesystem/src/utf8_codecvt_facet.cpp [2:4]
+ libs/program_options/src/cmdline.cpp [2:4]
+ libs/program_options/src/config_file.cpp [2:4]
+ libs/program_options/src/convert.cpp [2:4]
+ libs/program_options/src/options_description.cpp [3:5]
+ libs/program_options/src/parsers.cpp [2:4]
+ libs/program_options/src/positional_options.cpp [2:4]
+ libs/program_options/src/split.cpp [2:4]
+ libs/program_options/src/utf8_codecvt_facet.cpp [2:4]
+ libs/program_options/src/value_semantic.cpp [2:4]
+ libs/program_options/src/variables_map.cpp [2:4]
+ libs/program_options/src/winmain.cpp [2:4]
+ libs/serialization/src/utf8_codecvt_facet.cpp [2:4]
+
+KEEP BSL-1.0 1e28520c071df585290674c85c8738dc
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/numeric/odeint/external/mtl4/implicit_euler_mtl4.hpp at line 11, boost/numeric/odeint/external/mtl4/mtl4_resize.hpp at line 11
+ License text:
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or
+ copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/numeric/odeint/external/mtl4/implicit_euler_mtl4.hpp [10:12]
+ boost/numeric/odeint/external/mtl4/mtl4_resize.hpp [10:12]
+
+KEEP BSL-1.0 1ec9e97d434c804aa0e6b4b93376301c
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/contract.hpp at line 7, boost/contract/assert.hpp at line 7, boost/contract/base_types.hpp at line 7, boost/contract/call_if.hpp at line 7, boost/contract/check.hpp at line 7, boost/contract/constructor.hpp at line 7, boost/contract/core/access.hpp at line 7, boost/contract/core/check_macro.hpp at line 7, boost/contract/core/config.hpp at line 7, boost/contract/core/constructor_precondition.hpp at line 7, boost/contract/core/exception.hpp at line 7, boost/contract/core/specify.hpp at line 7, boost/contract/core/virtual.hpp at line 7, boost/contract/destructor.hpp at line 7, boost/contract/detail/assert.hpp at line 7, boost/contract/detail/auto_ptr.hpp at line 7, boost/contract/detail/check.hpp at line 7, boost/contract/detail/checking.hpp at line 7, boost/contract/detail/condition/cond_base.hpp at line 7, boost/contract/detail/condition/cond_inv.hpp at line 7, boost/contract/detail/condition/cond_post.hpp at line 7, boost/contract/detail/condition/cond_subcontracting.hpp at line 7, boost/contract/detail/config.hpp at line 7, boost/contract/detail/debug.hpp at line 7, boost/contract/detail/decl.hpp at line 7, boost/contract/detail/declspec.hpp at line 7, boost/contract/detail/inlined.hpp at line 7, boost/contract/detail/inlined/core/exception.hpp at line 7, boost/contract/detail/inlined/detail/checking.hpp at line 7, boost/contract/detail/inlined/old.hpp at line 7, boost/contract/detail/name.hpp at line 7, boost/contract/detail/none.hpp at line 7, boost/contract/detail/noop.hpp at line 7, boost/contract/detail/operation/constructor.hpp at line 7, boost/contract/detail/operation/destructor.hpp at line 7, boost/contract/detail/operation/function.hpp at line 7, boost/contract/detail/operation/public_function.hpp at line 7, boost/contract/detail/operation/static_public_function.hpp at line 7, boost/contract/detail/operator_safe_bool.hpp at line 7, boost/contract/detail/preprocessor/keyword/private.hpp at line 7, boost/contract/detail/preprocessor/keyword/protected.hpp at line 7, boost/contract/detail/preprocessor/keyword/public.hpp at line 7, boost/contract/detail/preprocessor/keyword/utility/is.hpp at line 7, boost/contract/detail/preprocessor/keyword/virtual.hpp at line 7, boost/contract/detail/static_local_var.hpp at line 7, boost/contract/detail/tvariadic.hpp at line 7, boost/contract/detail/type_traits/member_function_types.hpp at line 7, boost/contract/detail/type_traits/mirror.hpp at line 7, boost/contract/detail/type_traits/optional.hpp at line 7, boost/contract/function.hpp at line 7, boost/contract/old.hpp at line 7, boost/contract/override.hpp at line 7, boost/contract/public_function.hpp at line 7, boost/contract_macro.hpp at line 7
+ License text:
+ // Distributed under the Boost Software License, Version 1.0 (see accompanying
+ // file LICENSE_1_0.txt or a copy at http://www.boost.org/LICENSE_1_0.txt).
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/contract.hpp [6:7]
+ boost/contract/assert.hpp [6:7]
+ boost/contract/base_types.hpp [6:7]
+ boost/contract/call_if.hpp [6:7]
+ boost/contract/check.hpp [6:7]
+ boost/contract/constructor.hpp [6:7]
+ boost/contract/core/access.hpp [6:7]
+ boost/contract/core/check_macro.hpp [6:7]
+ boost/contract/core/config.hpp [6:7]
+ boost/contract/core/constructor_precondition.hpp [6:7]
+ boost/contract/core/exception.hpp [6:7]
+ boost/contract/core/specify.hpp [6:7]
+ boost/contract/core/virtual.hpp [6:7]
+ boost/contract/destructor.hpp [6:7]
+ boost/contract/detail/assert.hpp [6:7]
+ boost/contract/detail/auto_ptr.hpp [6:7]
+ boost/contract/detail/check.hpp [6:7]
+ boost/contract/detail/checking.hpp [6:7]
+ boost/contract/detail/condition/cond_base.hpp [6:7]
+ boost/contract/detail/condition/cond_inv.hpp [6:7]
+ boost/contract/detail/condition/cond_post.hpp [6:7]
+ boost/contract/detail/condition/cond_subcontracting.hpp [6:7]
+ boost/contract/detail/config.hpp [6:7]
+ boost/contract/detail/debug.hpp [6:7]
+ boost/contract/detail/decl.hpp [6:7]
+ boost/contract/detail/declspec.hpp [6:7]
+ boost/contract/detail/inlined.hpp [6:7]
+ boost/contract/detail/inlined/core/exception.hpp [6:7]
+ boost/contract/detail/inlined/detail/checking.hpp [6:7]
+ boost/contract/detail/inlined/old.hpp [6:7]
+ boost/contract/detail/name.hpp [6:7]
+ boost/contract/detail/none.hpp [6:7]
+ boost/contract/detail/noop.hpp [6:7]
+ boost/contract/detail/operation/constructor.hpp [6:7]
+ boost/contract/detail/operation/destructor.hpp [6:7]
+ boost/contract/detail/operation/function.hpp [6:7]
+ boost/contract/detail/operation/public_function.hpp [6:7]
+ boost/contract/detail/operation/static_public_function.hpp [6:7]
+ boost/contract/detail/operator_safe_bool.hpp [6:7]
+ boost/contract/detail/preprocessor/keyword/private.hpp [6:7]
+ boost/contract/detail/preprocessor/keyword/protected.hpp [6:7]
+ boost/contract/detail/preprocessor/keyword/public.hpp [6:7]
+ boost/contract/detail/preprocessor/keyword/utility/is.hpp [6:7]
+ boost/contract/detail/preprocessor/keyword/virtual.hpp [6:7]
+ boost/contract/detail/static_local_var.hpp [6:7]
+ boost/contract/detail/tvariadic.hpp [6:7]
+ boost/contract/detail/type_traits/member_function_types.hpp [6:7]
+ boost/contract/detail/type_traits/mirror.hpp [6:7]
+ boost/contract/detail/type_traits/optional.hpp [6:7]
+ boost/contract/function.hpp [6:7]
+ boost/contract/old.hpp [6:7]
+ boost/contract/override.hpp [6:7]
+ boost/contract/public_function.hpp [6:7]
+ boost/contract_macro.hpp [6:7]
+
+KEEP BSL-1.0 1f86bcce1bbfb6d9a7d6c733166e7bba
+BELONGS libs/python/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/auto_link.hpp at line 4, boost/config/compiler/borland.hpp at line 6, boost/config/compiler/clang.hpp at line 5, boost/config/compiler/codegear.hpp at line 6, boost/config/compiler/common_edg.hpp at line 8, boost/config/compiler/cray.hpp at line 5, boost/config/compiler/diab.hpp at line 4, boost/config/compiler/digitalmars.hpp at line 6, boost/config/compiler/gcc.hpp at line 10, boost/config/compiler/gcc_xml.hpp at line 4, boost/config/compiler/hp_acc.hpp at line 9, boost/config/compiler/intel.hpp at line 11, boost/config/compiler/metrowerks.hpp at line 9, boost/config/compiler/mpw.hpp at line 5, boost/config/compiler/pathscale.hpp at line 5, boost/config/compiler/pgi.hpp at line 5, boost/config/compiler/sunpro_cc.hpp at line 8, boost/config/compiler/vacpp.hpp at line 8, boost/config/compiler/visualc.hpp at line 9, boost/config/compiler/xlcpp.hpp at line 5, boost/config/no_tr1/cmath.hpp at line 4, boost/config/no_tr1/complex.hpp at line 4, boost/config/no_tr1/functional.hpp at line 4, boost/config/no_tr1/memory.hpp at line 4, boost/config/no_tr1/utility.hpp at line 4, boost/config/platform/cray.hpp at line 4, boost/config/platform/haiku.hpp at line 4, boost/config/platform/vxworks.hpp at line 6, boost/config/stdlib/dinkumware.hpp at line 8, boost/config/stdlib/libcpp.hpp at line 4, boost/config/stdlib/libstdcpp3.hpp at line 5, boost/integer/common_factor_rt.hpp at line 5, boost/math/bindings/detail/big_digamma.hpp at line 4, boost/math/bindings/detail/big_lanczos.hpp at line 4, boost/math/bindings/e_float.hpp at line 4, boost/math/bindings/mpfr.hpp at line 4, boost/math/bindings/mpreal.hpp at line 4, boost/math/bindings/rr.hpp at line 4, boost/math/common_factor_rt.hpp at line 5, boost/math/complex.hpp at line 4, boost/math/complex/acosh.hpp at line 4, boost/math/complex/asinh.hpp at line 4, boost/math/complex/atan.hpp at line 4, boost/math/complex/atanh.hpp at line 4, boost/math/complex/details.hpp at line 4, boost/math/complex/fabs.hpp at line 4, boost/math/concepts/distributions.hpp at line 4, boost/math/concepts/real_concept.hpp at line 4, boost/math/concepts/real_type_concept.hpp at line 4, boost/math/concepts/std_real_concept.hpp at line 4, boost/math/constants/calculate_constants.hpp at line 6, boost/math/constants/constants.hpp at line 5, boost/math/constants/info.hpp at line 4, boost/math/distributions.hpp at line 6, boost/math/distributions/cauchy.hpp at line 6, boost/math/distributions/complement.hpp at line 5, boost/math/distributions/detail/derived_accessors.hpp at line 4, boost/math/distributions/detail/generic_quantile.hpp at line 4, boost/math/distributions/detail/inv_discrete_quantile.hpp at line 4, boost/math/distributions/exponential.hpp at line 4, boost/math/distributions/extreme_value.hpp at line 4, boost/math/distributions/find_location.hpp at line 6, boost/math/distributions/find_scale.hpp at line 6, boost/math/distributions/gamma.hpp at line 4, boost/math/distributions/hyperexponential.hpp at line 5, boost/math/distributions/inverse_gamma.hpp at line 7, boost/math/distributions/inverse_gaussian.hpp at line 6, boost/math/distributions/laplace.hpp at line 7, boost/math/distributions/lognormal.hpp at line 4, boost/math/distributions/normal.hpp at line 6, boost/math/distributions/pareto.hpp at line 5, boost/math/distributions/rayleigh.hpp at line 4, boost/math/distributions/skew_normal.hpp at line 5, boost/math/distributions/triangular.hpp at line 5, boost/math/distributions/uniform.hpp at line 5, boost/math/distributions/weibull.hpp at line 4, boost/math/policies/error_handling.hpp at line 6, boost/math/policies/policy.hpp at line 4, boost/math/quadrature/gauss.hpp at line 4, boost/math/quadrature/gauss_kronrod.hpp at line 5, boost/math/special_functions.hpp at line 6, boost/math/special_functions/bessel.hpp at line 5, boost/math/special_functions/bessel_prime.hpp at line 4, boost/math/special_functions/beta.hpp at line 4, boost/math/special_functions/binomial.hpp at line 4, boost/math/special_functions/cbrt.hpp at line 4, boost/math/special_functions/chebyshev.hpp at line 4, boost/math/special_functions/chebyshev_transform.hpp at line 4, boost/math/special_functions/cos_pi.hpp at line 4, boost/math/special_functions/detail/airy_ai_bi_zero.hpp at line 4, boost/math/special_functions/detail/bessel_derivatives_linear.hpp at line 4, boost/math/special_functions/detail/bessel_i0.hpp at line 5, boost/math/special_functions/detail/bessel_i1.hpp at line 4, boost/math/special_functions/detail/bessel_ik.hpp at line 4, boost/math/special_functions/detail/bessel_j0.hpp at line 4, boost/math/special_functions/detail/bessel_j1.hpp at line 4, boost/math/special_functions/detail/bessel_jn.hpp at line 4, boost/math/special_functions/detail/bessel_jy.hpp at line 4, boost/math/special_functions/detail/bessel_jy_asym.hpp at line 4, boost/math/special_functions/detail/bessel_jy_derivatives_asym.hpp at line 4, boost/math/special_functions/detail/bessel_jy_derivatives_series.hpp at line 4, boost/math/special_functions/detail/bessel_jy_series.hpp at line 4, boost/math/special_functions/detail/bessel_jy_zero.hpp at line 4, boost/math/special_functions/detail/bessel_k0.hpp at line 5, boost/math/special_functions/detail/bessel_k1.hpp at line 5, boost/math/special_functions/detail/bessel_kn.hpp at line 4, boost/math/special_functions/detail/bessel_y0.hpp at line 4, boost/math/special_functions/detail/bessel_y1.hpp at line 4, boost/math/special_functions/detail/bessel_yn.hpp at line 4, boost/math/special_functions/detail/erf_inv.hpp at line 4, boost/math/special_functions/detail/gamma_inva.hpp at line 4, boost/math/special_functions/detail/ibeta_inv_ab.hpp at line 4, boost/math/special_functions/detail/ibeta_inverse.hpp at line 5, boost/math/special_functions/detail/iconv.hpp at line 4, boost/math/special_functions/detail/igamma_inverse.hpp at line 4, boost/math/special_functions/detail/igamma_large.hpp at line 4, boost/math/special_functions/detail/lanczos_sse2.hpp at line 4, boost/math/special_functions/detail/lgamma_small.hpp at line 4, boost/math/special_functions/detail/t_distribution_inv.hpp at line 5, boost/math/special_functions/detail/unchecked_factorial.hpp at line 4, boost/math/special_functions/digamma.hpp at line 4, boost/math/special_functions/ellint_1.hpp at line 5, boost/math/special_functions/ellint_2.hpp at line 5, boost/math/special_functions/ellint_3.hpp at line 5, boost/math/special_functions/ellint_d.hpp at line 5, boost/math/special_functions/ellint_rc.hpp at line 4, boost/math/special_functions/ellint_rd.hpp at line 4, boost/math/special_functions/ellint_rf.hpp at line 4, boost/math/special_functions/ellint_rg.hpp at line 4, boost/math/special_functions/ellint_rj.hpp at line 4, boost/math/special_functions/erf.hpp at line 4, boost/math/special_functions/expint.hpp at line 4, boost/math/special_functions/expm1.hpp at line 4, boost/math/special_functions/factorials.hpp at line 4, boost/math/special_functions/fpclassify.hpp at line 5, boost/math/special_functions/gamma.hpp at line 9, boost/math/special_functions/hermite.hpp at line 5, boost/math/special_functions/heuman_lambda.hpp at line 4, boost/math/special_functions/hypot.hpp at line 4, boost/math/special_functions/jacobi_zeta.hpp at line 4, boost/math/special_functions/laguerre.hpp at line 5, boost/math/special_functions/lanczos.hpp at line 4, boost/math/special_functions/legendre.hpp at line 5, boost/math/special_functions/log1p.hpp at line 4, boost/math/special_functions/modf.hpp at line 4, boost/math/special_functions/owens_t.hpp at line 5, boost/math/special_functions/powm1.hpp at line 4, boost/math/special_functions/relative_difference.hpp at line 4, boost/math/special_functions/round.hpp at line 4, boost/math/special_functions/sign.hpp at line 7, boost/math/special_functions/sin_pi.hpp at line 4, boost/math/special_functions/spherical_harmonic.hpp at line 5, boost/math/special_functions/sqrt1pm1.hpp at line 4, boost/math/special_functions/trigamma.hpp at line 4, boost/math/special_functions/trunc.hpp at line 4, boost/math/special_functions/ulp.hpp at line 4, boost/math/tools/config.hpp at line 4, boost/math/tools/convert_from_string.hpp at line 4, boost/math/tools/detail/polynomial_horner1_10.hpp at line 4, boost/math/tools/detail/polynomial_horner1_11.hpp at line 4, boost/math/tools/detail/polynomial_horner1_12.hpp at line 4, boost/math/tools/detail/polynomial_horner1_13.hpp at line 4, boost/math/tools/detail/polynomial_horner1_14.hpp at line 4, boost/math/tools/detail/polynomial_horner1_15.hpp at line 4, boost/math/tools/detail/polynomial_horner1_16.hpp at line 4, boost/math/tools/detail/polynomial_horner1_17.hpp at line 4, boost/math/tools/detail/polynomial_horner1_18.hpp at line 4, boost/math/tools/detail/polynomial_horner1_19.hpp at line 4, boost/math/tools/detail/polynomial_horner1_2.hpp at line 4, boost/math/tools/detail/polynomial_horner1_20.hpp at line 4, boost/math/tools/detail/polynomial_horner1_3.hpp at line 4, boost/math/tools/detail/polynomial_horner1_4.hpp at line 4, boost/math/tools/detail/polynomial_horner1_5.hpp at line 4, boost/math/tools/detail/polynomial_horner1_6.hpp at line 4, boost/math/tools/detail/polynomial_horner1_7.hpp at line 4, boost/math/tools/detail/polynomial_horner1_8.hpp at line 4, boost/math/tools/detail/polynomial_horner1_9.hpp at line 4, boost/math/tools/detail/polynomial_horner2_10.hpp at line 4, boost/math/tools/detail/polynomial_horner2_11.hpp at line 4, boost/math/tools/detail/polynomial_horner2_12.hpp at line 4, boost/math/tools/detail/polynomial_horner2_13.hpp at line 4, boost/math/tools/detail/polynomial_horner2_14.hpp at line 4, boost/math/tools/detail/polynomial_horner2_15.hpp at line 4, boost/math/tools/detail/polynomial_horner2_16.hpp at line 4, boost/math/tools/detail/polynomial_horner2_17.hpp at line 4, boost/math/tools/detail/polynomial_horner2_18.hpp at line 4, boost/math/tools/detail/polynomial_horner2_19.hpp at line 4, boost/math/tools/detail/polynomial_horner2_2.hpp at line 4, boost/math/tools/detail/polynomial_horner2_3.hpp at line 4, boost/math/tools/detail/polynomial_horner2_4.hpp at line 4, boost/math/tools/detail/polynomial_horner2_5.hpp at line 4, boost/math/tools/detail/polynomial_horner2_6.hpp at line 4, boost/math/tools/detail/polynomial_horner2_7.hpp at line 4, boost/math/tools/detail/polynomial_horner2_8.hpp at line 4, boost/math/tools/detail/polynomial_horner2_9.hpp at line 4, boost/math/tools/detail/polynomial_horner3_10.hpp at line 4, boost/math/tools/detail/polynomial_horner3_11.hpp at line 4, boost/math/tools/detail/polynomial_horner3_12.hpp at line 4, boost/math/tools/detail/polynomial_horner3_13.hpp at line 4, boost/math/tools/detail/polynomial_horner3_14.hpp at line 4, boost/math/tools/detail/polynomial_horner3_15.hpp at line 4, boost/math/tools/detail/polynomial_horner3_16.hpp at line 4, boost/math/tools/detail/polynomial_horner3_17.hpp at line 4, boost/math/tools/detail/polynomial_horner3_18.hpp at line 4, boost/math/tools/detail/polynomial_horner3_19.hpp at line 4, boost/math/tools/detail/polynomial_horner3_2.hpp at line 4, boost/math/tools/detail/polynomial_horner3_20.hpp at line 4, boost/math/tools/detail/polynomial_horner3_3.hpp at line 4, boost/math/tools/detail/polynomial_horner3_4.hpp at line 4, boost/math/tools/detail/polynomial_horner3_5.hpp at line 4, boost/math/tools/detail/polynomial_horner3_6.hpp at line 4, boost/math/tools/detail/polynomial_horner3_7.hpp at line 4, boost/math/tools/detail/polynomial_horner3_8.hpp at line 4, boost/math/tools/detail/polynomial_horner3_9.hpp at line 4, boost/math/tools/detail/rational_horner1_10.hpp at line 4, boost/math/tools/detail/rational_horner1_2.hpp at line 4, boost/math/tools/detail/rational_horner1_3.hpp at line 4, boost/math/tools/detail/rational_horner1_4.hpp at line 4, boost/math/tools/detail/rational_horner1_5.hpp at line 4, boost/math/tools/detail/rational_horner1_6.hpp at line 4, boost/math/tools/detail/rational_horner1_7.hpp at line 4, boost/math/tools/detail/rational_horner1_8.hpp at line 4, boost/math/tools/detail/rational_horner1_9.hpp at line 4, boost/math/tools/detail/rational_horner2_10.hpp at line 4, boost/math/tools/detail/rational_horner2_2.hpp at line 4, boost/math/tools/detail/rational_horner2_3.hpp at line 4, boost/math/tools/detail/rational_horner2_4.hpp at line 4, boost/math/tools/detail/rational_horner2_5.hpp at line 4, boost/math/tools/detail/rational_horner2_6.hpp at line 4, boost/math/tools/detail/rational_horner2_7.hpp at line 4, boost/math/tools/detail/rational_horner2_8.hpp at line 4, boost/math/tools/detail/rational_horner2_9.hpp at line 4, boost/math/tools/detail/rational_horner3_10.hpp at line 4, boost/math/tools/detail/rational_horner3_11.hpp at line 4, boost/math/tools/detail/rational_horner3_12.hpp at line 4, boost/math/tools/detail/rational_horner3_13.hpp at line 4, boost/math/tools/detail/rational_horner3_14.hpp at line 4, boost/math/tools/detail/rational_horner3_15.hpp at line 4, boost/math/tools/detail/rational_horner3_16.hpp at line 4, boost/math/tools/detail/rational_horner3_17.hpp at line 4, boost/math/tools/detail/rational_horner3_18.hpp at line 4, boost/math/tools/detail/rational_horner3_19.hpp at line 4, boost/math/tools/detail/rational_horner3_2.hpp at line 4, boost/math/tools/detail/rational_horner3_20.hpp at line 4, boost/math/tools/detail/rational_horner3_3.hpp at line 4, boost/math/tools/detail/rational_horner3_4.hpp at line 4, boost/math/tools/detail/rational_horner3_5.hpp at line 4, boost/math/tools/detail/rational_horner3_6.hpp at line 4, boost/math/tools/detail/rational_horner3_7.hpp at line 4, boost/math/tools/detail/rational_horner3_8.hpp at line 4, boost/math/tools/detail/rational_horner3_9.hpp at line 4, boost/math/tools/fraction.hpp at line 4, boost/math/tools/minima.hpp at line 4, boost/math/tools/numerical_differentiation.hpp at line 4, boost/math/tools/polynomial.hpp at line 7, boost/math/tools/polynomial_gcd.hpp at line 5, boost/math/tools/precision.hpp at line 4, boost/math/tools/rational.hpp at line 4, boost/math/tools/real_cast.hpp at line 4, boost/math/tools/roots.hpp at line 4, boost/math/tools/series.hpp at line 4, boost/math/tools/stats.hpp at line 4, boost/math/tools/toms748_solve.hpp at line 4, boost/math/tools/traits.hpp at line 5, boost/math/tools/tuple.hpp at line 4, boost/math/tools/workaround.hpp at line 4, boost/multiprecision/detail/big_lanczos.hpp at line 5, boost/variant/detail/move.hpp at line 12, libs/python/src/slice.cpp at line 6
+ License text:
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/config/auto_link.hpp [2:4]
+ boost/config/compiler/borland.hpp [4:6]
+ boost/config/compiler/clang.hpp [3:5]
+ boost/config/compiler/codegear.hpp [4:6]
+ boost/config/compiler/common_edg.hpp [6:8]
+ boost/config/compiler/cray.hpp [3:5]
+ boost/config/compiler/diab.hpp [2:4]
+ boost/config/compiler/digitalmars.hpp [4:6]
+ boost/config/compiler/gcc.hpp [8:10]
+ boost/config/compiler/gcc_xml.hpp [2:4]
+ boost/config/compiler/hp_acc.hpp [7:9]
+ boost/config/compiler/intel.hpp [9:11]
+ boost/config/compiler/metrowerks.hpp [7:9]
+ boost/config/compiler/mpw.hpp [3:5]
+ boost/config/compiler/pathscale.hpp [3:5]
+ boost/config/compiler/pgi.hpp [3:5]
+ boost/config/compiler/sunpro_cc.hpp [6:8]
+ boost/config/compiler/vacpp.hpp [6:8]
+ boost/config/compiler/visualc.hpp [7:9]
+ boost/config/compiler/xlcpp.hpp [3:5]
+ boost/config/no_tr1/cmath.hpp [2:4]
+ boost/config/no_tr1/complex.hpp [2:4]
+ boost/config/no_tr1/functional.hpp [2:4]
+ boost/config/no_tr1/memory.hpp [2:4]
+ boost/config/no_tr1/utility.hpp [2:4]
+ boost/config/platform/cray.hpp [2:4]
+ boost/config/platform/haiku.hpp [2:4]
+ boost/config/platform/vxworks.hpp [4:6]
+ boost/config/stdlib/dinkumware.hpp [6:8]
+ boost/config/stdlib/libcpp.hpp [2:4]
+ boost/config/stdlib/libstdcpp3.hpp [3:5]
+ boost/integer/common_factor_rt.hpp [3:5]
+ boost/math/bindings/detail/big_digamma.hpp [2:4]
+ boost/math/bindings/detail/big_lanczos.hpp [2:4]
+ boost/math/bindings/e_float.hpp [2:4]
+ boost/math/bindings/mpfr.hpp [2:4]
+ boost/math/bindings/mpreal.hpp [2:4]
+ boost/math/bindings/rr.hpp [2:4]
+ boost/math/common_factor_rt.hpp [3:5]
+ boost/math/complex.hpp [2:4]
+ boost/math/complex/acosh.hpp [2:4]
+ boost/math/complex/asinh.hpp [2:4]
+ boost/math/complex/atan.hpp [2:4]
+ boost/math/complex/atanh.hpp [2:4]
+ boost/math/complex/details.hpp [2:4]
+ boost/math/complex/fabs.hpp [2:4]
+ boost/math/concepts/distributions.hpp [2:4]
+ boost/math/concepts/real_concept.hpp [2:4]
+ boost/math/concepts/real_type_concept.hpp [2:4]
+ boost/math/concepts/std_real_concept.hpp [2:4]
+ boost/math/constants/calculate_constants.hpp [4:6]
+ boost/math/constants/constants.hpp [3:5]
+ boost/math/constants/info.hpp [2:4]
+ boost/math/distributions.hpp [4:6]
+ boost/math/distributions/cauchy.hpp [4:6]
+ boost/math/distributions/complement.hpp [3:5]
+ boost/math/distributions/detail/derived_accessors.hpp [2:4]
+ boost/math/distributions/detail/generic_quantile.hpp [2:4]
+ boost/math/distributions/detail/inv_discrete_quantile.hpp [2:4]
+ boost/math/distributions/exponential.hpp [2:4]
+ boost/math/distributions/extreme_value.hpp [2:4]
+ boost/math/distributions/find_location.hpp [4:6]
+ boost/math/distributions/find_scale.hpp [4:6]
+ boost/math/distributions/gamma.hpp [2:4]
+ boost/math/distributions/hyperexponential.hpp [3:5]
+ boost/math/distributions/inverse_gamma.hpp [5:7]
+ boost/math/distributions/inverse_gaussian.hpp [4:6]
+ boost/math/distributions/laplace.hpp [5:7]
+ boost/math/distributions/lognormal.hpp [2:4]
+ boost/math/distributions/normal.hpp [4:6]
+ boost/math/distributions/pareto.hpp [3:5]
+ boost/math/distributions/rayleigh.hpp [2:4]
+ boost/math/distributions/skew_normal.hpp [3:5]
+ boost/math/distributions/triangular.hpp [3:5]
+ boost/math/distributions/uniform.hpp [3:5]
+ boost/math/distributions/weibull.hpp [2:4]
+ boost/math/policies/error_handling.hpp [4:6]
+ boost/math/policies/policy.hpp [2:4]
+ boost/math/quadrature/gauss.hpp [2:4]
+ boost/math/quadrature/gauss_kronrod.hpp [3:5]
+ boost/math/special_functions.hpp [4:6]
+ boost/math/special_functions/bessel.hpp [3:5]
+ boost/math/special_functions/bessel_prime.hpp [2:4]
+ boost/math/special_functions/beta.hpp [2:4]
+ boost/math/special_functions/binomial.hpp [2:4]
+ boost/math/special_functions/cbrt.hpp [2:4]
+ boost/math/special_functions/chebyshev.hpp [2:4]
+ boost/math/special_functions/chebyshev_transform.hpp [2:4]
+ boost/math/special_functions/cos_pi.hpp [2:4]
+ boost/math/special_functions/detail/airy_ai_bi_zero.hpp [2:4]
+ boost/math/special_functions/detail/bessel_derivatives_linear.hpp [2:4]
+ boost/math/special_functions/detail/bessel_i0.hpp [3:5]
+ boost/math/special_functions/detail/bessel_i1.hpp [2:4]
+ boost/math/special_functions/detail/bessel_ik.hpp [2:4]
+ boost/math/special_functions/detail/bessel_j0.hpp [2:4]
+ boost/math/special_functions/detail/bessel_j1.hpp [2:4]
+ boost/math/special_functions/detail/bessel_jn.hpp [2:4]
+ boost/math/special_functions/detail/bessel_jy.hpp [2:4]
+ boost/math/special_functions/detail/bessel_jy_asym.hpp [2:4]
+ boost/math/special_functions/detail/bessel_jy_derivatives_asym.hpp [2:4]
+ boost/math/special_functions/detail/bessel_jy_derivatives_series.hpp [2:4]
+ boost/math/special_functions/detail/bessel_jy_series.hpp [2:4]
+ boost/math/special_functions/detail/bessel_jy_zero.hpp [2:4]
+ boost/math/special_functions/detail/bessel_k0.hpp [3:5]
+ boost/math/special_functions/detail/bessel_k1.hpp [3:5]
+ boost/math/special_functions/detail/bessel_kn.hpp [2:4]
+ boost/math/special_functions/detail/bessel_y0.hpp [2:4]
+ boost/math/special_functions/detail/bessel_y1.hpp [2:4]
+ boost/math/special_functions/detail/bessel_yn.hpp [2:4]
+ boost/math/special_functions/detail/erf_inv.hpp [2:4]
+ boost/math/special_functions/detail/gamma_inva.hpp [2:4]
+ boost/math/special_functions/detail/ibeta_inv_ab.hpp [2:4]
+ boost/math/special_functions/detail/ibeta_inverse.hpp [3:5]
+ boost/math/special_functions/detail/iconv.hpp [2:4]
+ boost/math/special_functions/detail/igamma_inverse.hpp [2:4]
+ boost/math/special_functions/detail/igamma_large.hpp [2:4]
+ boost/math/special_functions/detail/lanczos_sse2.hpp [2:4]
+ boost/math/special_functions/detail/lgamma_small.hpp [2:4]
+ boost/math/special_functions/detail/t_distribution_inv.hpp [3:5]
+ boost/math/special_functions/detail/unchecked_factorial.hpp [2:4]
+ boost/math/special_functions/digamma.hpp [2:4]
+ boost/math/special_functions/ellint_1.hpp [3:5]
+ boost/math/special_functions/ellint_2.hpp [3:5]
+ boost/math/special_functions/ellint_3.hpp [3:5]
+ boost/math/special_functions/ellint_d.hpp [3:5]
+ boost/math/special_functions/ellint_rc.hpp [2:4]
+ boost/math/special_functions/ellint_rd.hpp [2:4]
+ boost/math/special_functions/ellint_rf.hpp [2:4]
+ boost/math/special_functions/ellint_rg.hpp [2:4]
+ boost/math/special_functions/ellint_rj.hpp [2:4]
+ boost/math/special_functions/erf.hpp [2:4]
+ boost/math/special_functions/expint.hpp [2:4]
+ boost/math/special_functions/expm1.hpp [2:4]
+ boost/math/special_functions/factorials.hpp [2:4]
+ boost/math/special_functions/fpclassify.hpp [3:5]
+ boost/math/special_functions/gamma.hpp [7:9]
+ boost/math/special_functions/hermite.hpp [3:5]
+ boost/math/special_functions/heuman_lambda.hpp [2:4]
+ boost/math/special_functions/hypot.hpp [2:4]
+ boost/math/special_functions/jacobi_zeta.hpp [2:4]
+ boost/math/special_functions/laguerre.hpp [3:5]
+ boost/math/special_functions/lanczos.hpp [2:4]
+ boost/math/special_functions/legendre.hpp [3:5]
+ boost/math/special_functions/log1p.hpp [2:4]
+ boost/math/special_functions/modf.hpp [2:4]
+ boost/math/special_functions/owens_t.hpp [3:5]
+ boost/math/special_functions/powm1.hpp [2:4]
+ boost/math/special_functions/relative_difference.hpp [2:4]
+ boost/math/special_functions/round.hpp [2:4]
+ boost/math/special_functions/sign.hpp [5:7]
+ boost/math/special_functions/sin_pi.hpp [2:4]
+ boost/math/special_functions/spherical_harmonic.hpp [3:5]
+ boost/math/special_functions/sqrt1pm1.hpp [2:4]
+ boost/math/special_functions/trigamma.hpp [2:4]
+ boost/math/special_functions/trunc.hpp [2:4]
+ boost/math/special_functions/ulp.hpp [2:4]
+ boost/math/tools/config.hpp [2:4]
+ boost/math/tools/convert_from_string.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner1_10.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner1_11.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner1_12.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner1_13.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner1_14.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner1_15.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner1_16.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner1_17.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner1_18.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner1_19.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner1_2.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner1_20.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner1_3.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner1_4.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner1_5.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner1_6.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner1_7.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner1_8.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner1_9.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner2_10.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner2_11.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner2_12.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner2_13.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner2_14.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner2_15.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner2_16.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner2_17.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner2_18.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner2_19.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner2_2.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner2_3.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner2_4.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner2_5.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner2_6.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner2_7.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner2_8.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner2_9.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner3_10.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner3_11.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner3_12.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner3_13.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner3_14.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner3_15.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner3_16.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner3_17.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner3_18.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner3_19.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner3_2.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner3_20.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner3_3.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner3_4.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner3_5.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner3_6.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner3_7.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner3_8.hpp [2:4]
+ boost/math/tools/detail/polynomial_horner3_9.hpp [2:4]
+ boost/math/tools/detail/rational_horner1_10.hpp [2:4]
+ boost/math/tools/detail/rational_horner1_2.hpp [2:4]
+ boost/math/tools/detail/rational_horner1_3.hpp [2:4]
+ boost/math/tools/detail/rational_horner1_4.hpp [2:4]
+ boost/math/tools/detail/rational_horner1_5.hpp [2:4]
+ boost/math/tools/detail/rational_horner1_6.hpp [2:4]
+ boost/math/tools/detail/rational_horner1_7.hpp [2:4]
+ boost/math/tools/detail/rational_horner1_8.hpp [2:4]
+ boost/math/tools/detail/rational_horner1_9.hpp [2:4]
+ boost/math/tools/detail/rational_horner2_10.hpp [2:4]
+ boost/math/tools/detail/rational_horner2_2.hpp [2:4]
+ boost/math/tools/detail/rational_horner2_3.hpp [2:4]
+ boost/math/tools/detail/rational_horner2_4.hpp [2:4]
+ boost/math/tools/detail/rational_horner2_5.hpp [2:4]
+ boost/math/tools/detail/rational_horner2_6.hpp [2:4]
+ boost/math/tools/detail/rational_horner2_7.hpp [2:4]
+ boost/math/tools/detail/rational_horner2_8.hpp [2:4]
+ boost/math/tools/detail/rational_horner2_9.hpp [2:4]
+ boost/math/tools/detail/rational_horner3_10.hpp [2:4]
+ boost/math/tools/detail/rational_horner3_11.hpp [2:4]
+ boost/math/tools/detail/rational_horner3_12.hpp [2:4]
+ boost/math/tools/detail/rational_horner3_13.hpp [2:4]
+ boost/math/tools/detail/rational_horner3_14.hpp [2:4]
+ boost/math/tools/detail/rational_horner3_15.hpp [2:4]
+ boost/math/tools/detail/rational_horner3_16.hpp [2:4]
+ boost/math/tools/detail/rational_horner3_17.hpp [2:4]
+ boost/math/tools/detail/rational_horner3_18.hpp [2:4]
+ boost/math/tools/detail/rational_horner3_19.hpp [2:4]
+ boost/math/tools/detail/rational_horner3_2.hpp [2:4]
+ boost/math/tools/detail/rational_horner3_20.hpp [2:4]
+ boost/math/tools/detail/rational_horner3_3.hpp [2:4]
+ boost/math/tools/detail/rational_horner3_4.hpp [2:4]
+ boost/math/tools/detail/rational_horner3_5.hpp [2:4]
+ boost/math/tools/detail/rational_horner3_6.hpp [2:4]
+ boost/math/tools/detail/rational_horner3_7.hpp [2:4]
+ boost/math/tools/detail/rational_horner3_8.hpp [2:4]
+ boost/math/tools/detail/rational_horner3_9.hpp [2:4]
+ boost/math/tools/fraction.hpp [2:4]
+ boost/math/tools/minima.hpp [2:4]
+ boost/math/tools/numerical_differentiation.hpp [2:4]
+ boost/math/tools/polynomial.hpp [5:7]
+ boost/math/tools/polynomial_gcd.hpp [3:5]
+ boost/math/tools/precision.hpp [2:4]
+ boost/math/tools/rational.hpp [2:4]
+ boost/math/tools/real_cast.hpp [2:4]
+ boost/math/tools/roots.hpp [2:4]
+ boost/math/tools/series.hpp [2:4]
+ boost/math/tools/stats.hpp [2:4]
+ boost/math/tools/toms748_solve.hpp [2:4]
+ boost/math/tools/traits.hpp [3:5]
+ boost/math/tools/tuple.hpp [2:4]
+ boost/math/tools/workaround.hpp [2:4]
+ boost/multiprecision/detail/big_lanczos.hpp [3:5]
+ boost/variant/detail/move.hpp [10:12]
+ libs/python/src/slice.cpp [4:6]
+
+KEEP BSL-1.0 1fd942b1f6641317251c68ee4193c5d0
+BELONGS ya.make
+ License text:
+ // boostinspect:nolicense (don't complain about the lack of a Boost license)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 99.00
+ Match type : REFERENCE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/python/detail/python22_fixed.h [7:7]
+ boost/rational.hpp [8:8]
+
+KEEP Public-Domain 21577f2cb1203d157fe2eb4bb8089091
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: LicenseRef-scancode-public-domain
+ Score : 93.14
+ Match type : NOTICE
+ Links : http://www.linfo.org/publicdomain.html, https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/public-domain.LICENSE
+ Files with this license:
+ boost/uuid/detail/md5.hpp [3:22]
+ Scancode info:
+ Original SPDX id: LicenseRef-scancode-other-permissive
+ Score : 93.14
+ Match type : NOTICE
+ Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/other-permissive.LICENSE
+ Files with this license:
+ boost/uuid/detail/md5.hpp [3:22]
+
+KEEP BSL-1.0 23fa5e94f51ba7a8e51ff1feb5b64098
+BELONGS libs/date_time/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/date_time.hpp at line 7, boost/date_time/c_local_time_adjustor.hpp at line 7, boost/date_time/constrained_value.hpp at line 7, boost/date_time/date_clock_device.hpp at line 7, boost/date_time/date_defs.hpp at line 7, boost/date_time/date_format_simple.hpp at line 7, boost/date_time/date_formatting.hpp at line 7, boost/date_time/date_formatting_limited.hpp at line 7, boost/date_time/date_generator_formatter.hpp at line 7, boost/date_time/date_generator_parser.hpp at line 8, boost/date_time/dst_rules.hpp at line 7, boost/date_time/dst_transition_generators.hpp at line 4, boost/date_time/format_date_parser.hpp at line 8, boost/date_time/gregorian/formatters.hpp at line 7, boost/date_time/gregorian/formatters_limited.hpp at line 7, boost/date_time/gregorian/greg_day.hpp at line 7, boost/date_time/gregorian/greg_day_of_year.hpp at line 7, boost/date_time/gregorian/greg_duration.hpp at line 7, boost/date_time/gregorian/greg_facet.hpp at line 7, boost/date_time/gregorian/greg_month.hpp at line 7, boost/date_time/gregorian/greg_serialize.hpp at line 7, boost/date_time/gregorian/greg_weekday.hpp at line 7, boost/date_time/gregorian/greg_year.hpp at line 7, boost/date_time/gregorian/greg_ymd.hpp at line 7, boost/date_time/gregorian/gregorian.hpp at line 7, boost/date_time/gregorian/gregorian_types.hpp at line 7, boost/date_time/gregorian/parsers.hpp at line 7, boost/date_time/int_adapter.hpp at line 7, boost/date_time/iso_format.hpp at line 7, boost/date_time/local_time_adjustor.hpp at line 7, boost/date_time/local_timezone_defs.hpp at line 7, boost/date_time/parse_format_base.hpp at line 7, boost/date_time/period.hpp at line 7, boost/date_time/period_formatter.hpp at line 8, boost/date_time/period_parser.hpp at line 8, boost/date_time/posix_time/posix_time.hpp at line 7, boost/date_time/posix_time/posix_time_duration.hpp at line 7, boost/date_time/posix_time/posix_time_legacy_io.hpp at line 7, boost/date_time/posix_time/posix_time_system.hpp at line 7, boost/date_time/posix_time/posix_time_types.hpp at line 4, boost/date_time/posix_time/ptime.hpp at line 7, boost/date_time/posix_time/time_parsers.hpp at line 7, boost/date_time/posix_time/time_period.hpp at line 7, boost/date_time/posix_time/time_serialize.hpp at line 7, boost/date_time/special_defs.hpp at line 7, boost/date_time/special_values_formatter.hpp at line 8, boost/date_time/special_values_parser.hpp at line 8, boost/date_time/time.hpp at line 7, boost/date_time/time_defs.hpp at line 7, boost/date_time/time_formatting_streams.hpp at line 7, boost/date_time/time_parsing.hpp at line 7, boost/date_time/time_system_counted.hpp at line 7, boost/date_time/time_system_split.hpp at line 7, boost/date_time/time_zone_names.hpp at line 7, boost/date_time/year_month_day.hpp at line 7, libs/date_time/src/gregorian/date_generators.cpp at line 4, libs/date_time/src/gregorian/greg_month.cpp at line 4, libs/date_time/src/gregorian/greg_names.hpp at line 4, libs/date_time/src/gregorian/greg_weekday.cpp at line 4, libs/date_time/src/gregorian/gregorian_types.cpp at line 4, libs/date_time/src/posix_time/posix_time_types.cpp at line 5
+ License text:
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 90.62
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/date_time.hpp [5:7]
+ boost/date_time/c_local_time_adjustor.hpp [5:7]
+ boost/date_time/constrained_value.hpp [5:7]
+ boost/date_time/date_clock_device.hpp [5:7]
+ boost/date_time/date_defs.hpp [5:7]
+ boost/date_time/date_format_simple.hpp [5:7]
+ boost/date_time/date_formatting.hpp [5:7]
+ boost/date_time/date_formatting_limited.hpp [5:7]
+ boost/date_time/date_generator_formatter.hpp [5:7]
+ boost/date_time/date_generator_parser.hpp [6:8]
+ boost/date_time/dst_rules.hpp [5:7]
+ boost/date_time/dst_transition_generators.hpp [2:4]
+ boost/date_time/format_date_parser.hpp [6:8]
+ boost/date_time/gregorian/formatters.hpp [5:7]
+ boost/date_time/gregorian/formatters_limited.hpp [5:7]
+ boost/date_time/gregorian/greg_day.hpp [5:7]
+ boost/date_time/gregorian/greg_day_of_year.hpp [5:7]
+ boost/date_time/gregorian/greg_duration.hpp [5:7]
+ boost/date_time/gregorian/greg_facet.hpp [5:7]
+ boost/date_time/gregorian/greg_month.hpp [5:7]
+ boost/date_time/gregorian/greg_serialize.hpp [5:7]
+ boost/date_time/gregorian/greg_weekday.hpp [5:7]
+ boost/date_time/gregorian/greg_year.hpp [5:7]
+ boost/date_time/gregorian/greg_ymd.hpp [5:7]
+ boost/date_time/gregorian/gregorian.hpp [5:7]
+ boost/date_time/gregorian/gregorian_types.hpp [5:7]
+ boost/date_time/gregorian/parsers.hpp [5:7]
+ boost/date_time/int_adapter.hpp [5:7]
+ boost/date_time/iso_format.hpp [5:7]
+ boost/date_time/local_time_adjustor.hpp [5:7]
+ boost/date_time/local_timezone_defs.hpp [5:7]
+ boost/date_time/parse_format_base.hpp [5:7]
+ boost/date_time/period.hpp [5:7]
+ boost/date_time/period_formatter.hpp [6:8]
+ boost/date_time/period_parser.hpp [6:8]
+ boost/date_time/posix_time/posix_time.hpp [5:7]
+ boost/date_time/posix_time/posix_time_duration.hpp [5:7]
+ boost/date_time/posix_time/posix_time_legacy_io.hpp [5:7]
+ boost/date_time/posix_time/posix_time_system.hpp [5:7]
+ boost/date_time/posix_time/posix_time_types.hpp [2:4]
+ boost/date_time/posix_time/ptime.hpp [5:7]
+ boost/date_time/posix_time/time_parsers.hpp [5:7]
+ boost/date_time/posix_time/time_period.hpp [5:7]
+ boost/date_time/posix_time/time_serialize.hpp [5:7]
+ boost/date_time/special_defs.hpp [5:7]
+ boost/date_time/special_values_formatter.hpp [6:8]
+ boost/date_time/special_values_parser.hpp [6:8]
+ boost/date_time/time.hpp [5:7]
+ boost/date_time/time_defs.hpp [5:7]
+ boost/date_time/time_formatting_streams.hpp [5:7]
+ boost/date_time/time_parsing.hpp [5:7]
+ boost/date_time/time_system_counted.hpp [5:7]
+ boost/date_time/time_system_split.hpp [5:7]
+ boost/date_time/time_zone_names.hpp [5:7]
+ boost/date_time/year_month_day.hpp [5:7]
+ libs/date_time/src/gregorian/date_generators.cpp [2:4]
+ libs/date_time/src/gregorian/greg_month.cpp [2:4]
+ libs/date_time/src/gregorian/greg_names.hpp [2:4]
+ libs/date_time/src/gregorian/greg_weekday.cpp [2:4]
+ libs/date_time/src/gregorian/gregorian_types.cpp [2:4]
+ libs/date_time/src/posix_time/posix_time_types.cpp [3:5]
+
+KEEP BSL-1.0 243b3372a909401f618724a7b3f24df1
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/format.hpp at line 7, boost/format/alt_sstream.hpp at line 7, boost/format/alt_sstream_impl.hpp at line 7, boost/format/detail/compat_workarounds.hpp at line 7, boost/format/detail/config_macros.hpp at line 10, boost/format/detail/msvc_disambiguater.hpp at line 8, boost/format/detail/unset_macros.hpp at line 7, boost/format/detail/workarounds_gcc-2_95.hpp at line 7, boost/format/detail/workarounds_stlport.hpp at line 7, boost/format/feed_args.hpp at line 8, boost/format/format_class.hpp at line 7, boost/format/format_fwd.hpp at line 7, boost/format/format_implementation.hpp at line 7, boost/format/free_funcs.hpp at line 7, boost/format/group.hpp at line 8, boost/format/internals.hpp at line 8, boost/format/internals_fwd.hpp at line 7, boost/format/parsing.hpp at line 8
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/format.hpp [5:7]
+ boost/format/alt_sstream.hpp [5:7]
+ boost/format/alt_sstream_impl.hpp [5:7]
+ boost/format/detail/compat_workarounds.hpp [5:7]
+ boost/format/detail/config_macros.hpp [8:10]
+ boost/format/detail/msvc_disambiguater.hpp [6:8]
+ boost/format/detail/unset_macros.hpp [5:7]
+ boost/format/detail/workarounds_gcc-2_95.hpp [5:7]
+ boost/format/detail/workarounds_stlport.hpp [5:7]
+ boost/format/feed_args.hpp [6:8]
+ boost/format/format_class.hpp [5:7]
+ boost/format/format_fwd.hpp [5:7]
+ boost/format/format_implementation.hpp [5:7]
+ boost/format/free_funcs.hpp [5:7]
+ boost/format/group.hpp [6:8]
+ boost/format/internals.hpp [6:8]
+ boost/format/internals_fwd.hpp [5:7]
+ boost/format/parsing.hpp [6:8]
+
+KEEP BSL-1.0 25b833610087bb7e6f661eb119acc062
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/allocator_traits.hpp at line 11, boost/container/scoped_allocator.hpp at line 11, boost/container/uses_allocator.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2011-2013. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/container/allocator_traits.hpp [9:11]
+ boost/container/scoped_allocator.hpp [9:11]
+ boost/container/uses_allocator.hpp [3:5]
+
+KEEP BSL-1.0 25da87a37081f3d8c9d00550e1eebd63
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/parameter/aux_/preprocessor/flatten.hpp at line 3, boost/parameter/aux_/preprocessor/for_each.hpp at line 3, boost/parameter/aux_/python/invoker.hpp at line 3, boost/parameter/aux_/python/invoker_iterate.hpp at line 3
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/parameter/aux_/preprocessor/flatten.hpp [1:3]
+ boost/parameter/aux_/preprocessor/for_each.hpp [1:3]
+ boost/parameter/aux_/python/invoker.hpp [1:3]
+ boost/parameter/aux_/python/invoker_iterate.hpp [1:3]
+
+KEEP BSL-1.0 267bc4e38676657a4d90f57e3323ff7c
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/math/distributions/students_t.hpp at line 7, boost/math/special_functions/next.hpp at line 4, boost/math/special_functions/zeta.hpp at line 4, boost/math/tools/big_constant.hpp at line 5, boost/math/tools/detail/polynomial_horner2_20.hpp at line 4, boost/math/tools/detail/rational_horner1_11.hpp at line 4, boost/math/tools/detail/rational_horner1_12.hpp at line 4, boost/math/tools/detail/rational_horner1_13.hpp at line 4, boost/math/tools/detail/rational_horner1_14.hpp at line 4, boost/math/tools/detail/rational_horner1_15.hpp at line 4, boost/math/tools/detail/rational_horner1_16.hpp at line 4, boost/math/tools/detail/rational_horner1_17.hpp at line 4, boost/math/tools/detail/rational_horner1_18.hpp at line 4, boost/math/tools/detail/rational_horner1_19.hpp at line 4, boost/math/tools/detail/rational_horner1_20.hpp at line 4, boost/math/tools/detail/rational_horner2_11.hpp at line 4, boost/math/tools/detail/rational_horner2_12.hpp at line 4, boost/math/tools/detail/rational_horner2_13.hpp at line 4, boost/math/tools/detail/rational_horner2_14.hpp at line 4, boost/math/tools/detail/rational_horner2_15.hpp at line 4, boost/math/tools/detail/rational_horner2_16.hpp at line 4, boost/math/tools/detail/rational_horner2_17.hpp at line 4, boost/math/tools/detail/rational_horner2_18.hpp at line 4, boost/math/tools/detail/rational_horner2_19.hpp at line 4, boost/math/tools/detail/rational_horner2_20.hpp at line 4
+ License text:
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/math/distributions/students_t.hpp [5:7]
+ boost/math/special_functions/next.hpp [2:4]
+ boost/math/special_functions/zeta.hpp [2:4]
+ boost/math/tools/big_constant.hpp [3:5]
+ boost/math/tools/detail/polynomial_horner2_20.hpp [2:4]
+ boost/math/tools/detail/rational_horner1_11.hpp [2:4]
+ boost/math/tools/detail/rational_horner1_12.hpp [2:4]
+ boost/math/tools/detail/rational_horner1_13.hpp [2:4]
+ boost/math/tools/detail/rational_horner1_14.hpp [2:4]
+ boost/math/tools/detail/rational_horner1_15.hpp [2:4]
+ boost/math/tools/detail/rational_horner1_16.hpp [2:4]
+ boost/math/tools/detail/rational_horner1_17.hpp [2:4]
+ boost/math/tools/detail/rational_horner1_18.hpp [2:4]
+ boost/math/tools/detail/rational_horner1_19.hpp [2:4]
+ boost/math/tools/detail/rational_horner1_20.hpp [2:4]
+ boost/math/tools/detail/rational_horner2_11.hpp [2:4]
+ boost/math/tools/detail/rational_horner2_12.hpp [2:4]
+ boost/math/tools/detail/rational_horner2_13.hpp [2:4]
+ boost/math/tools/detail/rational_horner2_14.hpp [2:4]
+ boost/math/tools/detail/rational_horner2_15.hpp [2:4]
+ boost/math/tools/detail/rational_horner2_16.hpp [2:4]
+ boost/math/tools/detail/rational_horner2_17.hpp [2:4]
+ boost/math/tools/detail/rational_horner2_18.hpp [2:4]
+ boost/math/tools/detail/rational_horner2_19.hpp [2:4]
+ boost/math/tools/detail/rational_horner2_20.hpp [2:4]
+
+KEEP BSL-1.0 2680a252584e97559a5e2d3fd8fa06b7
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/detail/dynamic_array.hpp at line 5, boost/multiprecision/detail/rebind.hpp at line 5, boost/multiprecision/detail/utype_helper.hpp at line 5
+ License text:
+ // Copyright Christopher Kormanyos 2013. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/multiprecision/detail/dynamic_array.hpp [3:5]
+ boost/multiprecision/detail/rebind.hpp [3:5]
+ boost/multiprecision/detail/utype_helper.hpp [3:5]
+
+KEEP BSL-1.0 273e902bd13375207ae0e2368cfe6098
+BELONGS libs/iostreams/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iostreams/categories.hpp at line 4, boost/iostreams/chain.hpp at line 4, boost/iostreams/char_traits.hpp at line 4, boost/iostreams/checked_operations.hpp at line 4, boost/iostreams/close.hpp at line 4, boost/iostreams/code_converter.hpp at line 4, boost/iostreams/combine.hpp at line 4, boost/iostreams/compose.hpp at line 4, boost/iostreams/concepts.hpp at line 4, boost/iostreams/constants.hpp at line 4, boost/iostreams/copy.hpp at line 4, boost/iostreams/detail/access_control.hpp at line 4, boost/iostreams/detail/adapter/concept_adapter.hpp at line 4, boost/iostreams/detail/adapter/direct_adapter.hpp at line 4, boost/iostreams/detail/adapter/mode_adapter.hpp at line 4, boost/iostreams/detail/adapter/non_blocking_adapter.hpp at line 4, boost/iostreams/detail/adapter/output_iterator_adapter.hpp at line 4, boost/iostreams/detail/adapter/range_adapter.hpp at line 4, boost/iostreams/detail/add_facet.hpp at line 4, boost/iostreams/detail/bool_trait_def.hpp at line 4, boost/iostreams/detail/broken_overload_resolution/forward.hpp at line 4, boost/iostreams/detail/broken_overload_resolution/stream.hpp at line 4, boost/iostreams/detail/broken_overload_resolution/stream_buffer.hpp at line 4, boost/iostreams/detail/buffer.hpp at line 4, boost/iostreams/detail/call_traits.hpp at line 4, boost/iostreams/detail/char_traits.hpp at line 4, boost/iostreams/detail/codecvt_helper.hpp at line 4, boost/iostreams/detail/codecvt_holder.hpp at line 4, boost/iostreams/detail/config/auto_link.hpp at line 4, boost/iostreams/detail/config/bzip2.hpp at line 4, boost/iostreams/detail/config/codecvt.hpp at line 4, boost/iostreams/detail/config/disable_warnings.hpp at line 4, boost/iostreams/detail/config/dyn_link.hpp at line 4, boost/iostreams/detail/config/enable_warnings.hpp at line 4, boost/iostreams/detail/config/gcc.hpp at line 4, boost/iostreams/detail/config/limits.hpp at line 4, boost/iostreams/detail/config/overload_resolution.hpp at line 4, boost/iostreams/detail/config/unreachable_return.hpp at line 3, boost/iostreams/detail/config/wide_streams.hpp at line 4, boost/iostreams/detail/config/windows_posix.hpp at line 5, boost/iostreams/detail/config/zlib.hpp at line 4, boost/iostreams/detail/counted_array.hpp at line 4, boost/iostreams/detail/default_arg.hpp at line 4, boost/iostreams/detail/dispatch.hpp at line 4, boost/iostreams/detail/double_object.hpp at line 4, boost/iostreams/detail/enable_if_stream.hpp at line 4, boost/iostreams/detail/error.hpp at line 4, boost/iostreams/detail/forward.hpp at line 4, boost/iostreams/detail/fstream.hpp at line 4, boost/iostreams/detail/ios.hpp at line 4, boost/iostreams/detail/iostream.hpp at line 4, boost/iostreams/detail/is_dereferenceable.hpp at line 5, boost/iostreams/detail/is_iterator_range.hpp at line 4, boost/iostreams/detail/newline.hpp at line 4, boost/iostreams/detail/optional.hpp at line 4, boost/iostreams/detail/param_type.hpp at line 4, boost/iostreams/detail/push.hpp at line 4, boost/iostreams/detail/push_params.hpp at line 4, boost/iostreams/detail/resolve.hpp at line 4, boost/iostreams/detail/select.hpp at line 4, boost/iostreams/detail/select_by_size.hpp at line 4, boost/iostreams/detail/streambuf.hpp at line 4, boost/iostreams/detail/streambuf/chainbuf.hpp at line 4, boost/iostreams/detail/streambuf/direct_streambuf.hpp at line 4, boost/iostreams/detail/streambuf/indirect_streambuf.hpp at line 4, boost/iostreams/detail/streambuf/linked_streambuf.hpp at line 4, boost/iostreams/detail/system_failure.hpp at line 5, boost/iostreams/detail/template_params.hpp at line 4, boost/iostreams/detail/translate_int_type.hpp at line 4, boost/iostreams/detail/wrap_unwrap.hpp at line 4, boost/iostreams/device/array.hpp at line 4, boost/iostreams/device/back_inserter.hpp at line 4, boost/iostreams/device/file.hpp at line 4, boost/iostreams/device/file_descriptor.hpp at line 4, boost/iostreams/device/mapped_file.hpp at line 5, boost/iostreams/device/null.hpp at line 4, boost/iostreams/filter/aggregate.hpp at line 4, boost/iostreams/filter/bzip2.hpp at line 4, boost/iostreams/filter/counter.hpp at line 4, boost/iostreams/filter/gzip.hpp at line 4, boost/iostreams/filter/line.hpp at line 4, boost/iostreams/filter/lzma.hpp at line 4, boost/iostreams/filter/newline.hpp at line 4, boost/iostreams/filter/regex.hpp at line 4, boost/iostreams/filter/stdio.hpp at line 4, boost/iostreams/filter/symmetric.hpp at line 4, boost/iostreams/filter/test.hpp at line 4, boost/iostreams/filter/zlib.hpp at line 4, boost/iostreams/filtering_stream.hpp at line 4, boost/iostreams/filtering_streambuf.hpp at line 4, boost/iostreams/flush.hpp at line 4, boost/iostreams/get.hpp at line 4, boost/iostreams/imbue.hpp at line 4, boost/iostreams/input_sequence.hpp at line 4, boost/iostreams/invert.hpp at line 4, boost/iostreams/operations.hpp at line 4, boost/iostreams/operations_fwd.hpp at line 4, boost/iostreams/optimal_buffer_size.hpp at line 4, boost/iostreams/output_sequence.hpp at line 4, boost/iostreams/pipeline.hpp at line 4, boost/iostreams/positioning.hpp at line 4, boost/iostreams/put.hpp at line 4, boost/iostreams/putback.hpp at line 4, boost/iostreams/read.hpp at line 4, boost/iostreams/seek.hpp at line 4, boost/iostreams/skip.hpp at line 4, boost/iostreams/stream.hpp at line 4, boost/iostreams/stream_buffer.hpp at line 4, boost/iostreams/tee.hpp at line 4, boost/iostreams/traits.hpp at line 4, boost/iostreams/traits_fwd.hpp at line 4, boost/iostreams/write.hpp at line 4, boost/ptr_container/detail/default_deleter.hpp at line 3, boost/ptr_container/detail/is_convertible.hpp at line 5, boost/ptr_container/detail/move.hpp at line 3, boost/ptr_container/detail/static_move_ptr.hpp at line 5, libs/iostreams/src/bzip2.cpp at line 4, libs/iostreams/src/file_descriptor.cpp at line 4, libs/iostreams/src/gzip.cpp at line 4, libs/iostreams/src/lzma.cpp at line 6, libs/iostreams/src/mapped_file.cpp at line 6, libs/iostreams/src/zlib.cpp at line 4
+ License text:
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/iostreams/categories.hpp [3:4]
+ boost/iostreams/chain.hpp [3:4]
+ boost/iostreams/char_traits.hpp [3:4]
+ boost/iostreams/checked_operations.hpp [3:4]
+ boost/iostreams/close.hpp [3:4]
+ boost/iostreams/code_converter.hpp [3:4]
+ boost/iostreams/combine.hpp [3:4]
+ boost/iostreams/compose.hpp [3:4]
+ boost/iostreams/concepts.hpp [3:4]
+ boost/iostreams/constants.hpp [3:4]
+ boost/iostreams/copy.hpp [3:4]
+ boost/iostreams/detail/access_control.hpp [3:4]
+ boost/iostreams/detail/adapter/concept_adapter.hpp [3:4]
+ boost/iostreams/detail/adapter/direct_adapter.hpp [3:4]
+ boost/iostreams/detail/adapter/mode_adapter.hpp [3:4]
+ boost/iostreams/detail/adapter/non_blocking_adapter.hpp [3:4]
+ boost/iostreams/detail/adapter/output_iterator_adapter.hpp [3:4]
+ boost/iostreams/detail/adapter/range_adapter.hpp [3:4]
+ boost/iostreams/detail/add_facet.hpp [3:4]
+ boost/iostreams/detail/bool_trait_def.hpp [3:4]
+ boost/iostreams/detail/broken_overload_resolution/forward.hpp [3:4]
+ boost/iostreams/detail/broken_overload_resolution/stream.hpp [3:4]
+ boost/iostreams/detail/broken_overload_resolution/stream_buffer.hpp [3:4]
+ boost/iostreams/detail/buffer.hpp [3:4]
+ boost/iostreams/detail/call_traits.hpp [3:4]
+ boost/iostreams/detail/char_traits.hpp [3:4]
+ boost/iostreams/detail/codecvt_helper.hpp [3:4]
+ boost/iostreams/detail/codecvt_holder.hpp [3:4]
+ boost/iostreams/detail/config/auto_link.hpp [3:4]
+ boost/iostreams/detail/config/bzip2.hpp [3:4]
+ boost/iostreams/detail/config/codecvt.hpp [3:4]
+ boost/iostreams/detail/config/disable_warnings.hpp [3:4]
+ boost/iostreams/detail/config/dyn_link.hpp [3:4]
+ boost/iostreams/detail/config/enable_warnings.hpp [3:4]
+ boost/iostreams/detail/config/gcc.hpp [3:4]
+ boost/iostreams/detail/config/limits.hpp [3:4]
+ boost/iostreams/detail/config/overload_resolution.hpp [3:4]
+ boost/iostreams/detail/config/unreachable_return.hpp [2:3]
+ boost/iostreams/detail/config/wide_streams.hpp [3:4]
+ boost/iostreams/detail/config/windows_posix.hpp [4:5]
+ boost/iostreams/detail/config/zlib.hpp [3:4]
+ boost/iostreams/detail/counted_array.hpp [3:4]
+ boost/iostreams/detail/default_arg.hpp [3:4]
+ boost/iostreams/detail/dispatch.hpp [3:4]
+ boost/iostreams/detail/double_object.hpp [3:4]
+ boost/iostreams/detail/enable_if_stream.hpp [3:4]
+ boost/iostreams/detail/error.hpp [3:4]
+ boost/iostreams/detail/forward.hpp [3:4]
+ boost/iostreams/detail/fstream.hpp [3:4]
+ boost/iostreams/detail/ios.hpp [3:4]
+ boost/iostreams/detail/iostream.hpp [3:4]
+ boost/iostreams/detail/is_dereferenceable.hpp [4:5]
+ boost/iostreams/detail/is_iterator_range.hpp [3:4]
+ boost/iostreams/detail/newline.hpp [3:4]
+ boost/iostreams/detail/optional.hpp [3:4]
+ boost/iostreams/detail/param_type.hpp [3:4]
+ boost/iostreams/detail/push.hpp [3:4]
+ boost/iostreams/detail/push_params.hpp [3:4]
+ boost/iostreams/detail/resolve.hpp [3:4]
+ boost/iostreams/detail/select.hpp [3:4]
+ boost/iostreams/detail/select_by_size.hpp [3:4]
+ boost/iostreams/detail/streambuf.hpp [3:4]
+ boost/iostreams/detail/streambuf/chainbuf.hpp [3:4]
+ boost/iostreams/detail/streambuf/direct_streambuf.hpp [3:4]
+ boost/iostreams/detail/streambuf/indirect_streambuf.hpp [3:4]
+ boost/iostreams/detail/streambuf/linked_streambuf.hpp [3:4]
+ boost/iostreams/detail/system_failure.hpp [4:5]
+ boost/iostreams/detail/template_params.hpp [3:4]
+ boost/iostreams/detail/translate_int_type.hpp [3:4]
+ boost/iostreams/detail/wrap_unwrap.hpp [3:4]
+ boost/iostreams/device/array.hpp [3:4]
+ boost/iostreams/device/back_inserter.hpp [3:4]
+ boost/iostreams/device/file.hpp [3:4]
+ boost/iostreams/device/file_descriptor.hpp [3:4]
+ boost/iostreams/device/mapped_file.hpp [4:5]
+ boost/iostreams/device/null.hpp [3:4]
+ boost/iostreams/filter/aggregate.hpp [3:4]
+ boost/iostreams/filter/bzip2.hpp [3:4]
+ boost/iostreams/filter/counter.hpp [3:4]
+ boost/iostreams/filter/gzip.hpp [3:4]
+ boost/iostreams/filter/line.hpp [3:4]
+ boost/iostreams/filter/lzma.hpp [3:4]
+ boost/iostreams/filter/newline.hpp [3:4]
+ boost/iostreams/filter/regex.hpp [3:4]
+ boost/iostreams/filter/stdio.hpp [3:4]
+ boost/iostreams/filter/symmetric.hpp [3:4]
+ boost/iostreams/filter/test.hpp [3:4]
+ boost/iostreams/filter/zlib.hpp [3:4]
+ boost/iostreams/filtering_stream.hpp [3:4]
+ boost/iostreams/filtering_streambuf.hpp [3:4]
+ boost/iostreams/flush.hpp [3:4]
+ boost/iostreams/get.hpp [3:4]
+ boost/iostreams/imbue.hpp [3:4]
+ boost/iostreams/input_sequence.hpp [3:4]
+ boost/iostreams/invert.hpp [3:4]
+ boost/iostreams/operations.hpp [3:4]
+ boost/iostreams/operations_fwd.hpp [3:4]
+ boost/iostreams/optimal_buffer_size.hpp [3:4]
+ boost/iostreams/output_sequence.hpp [3:4]
+ boost/iostreams/pipeline.hpp [3:4]
+ boost/iostreams/positioning.hpp [3:4]
+ boost/iostreams/put.hpp [3:4]
+ boost/iostreams/putback.hpp [3:4]
+ boost/iostreams/read.hpp [3:4]
+ boost/iostreams/seek.hpp [3:4]
+ boost/iostreams/skip.hpp [3:4]
+ boost/iostreams/stream.hpp [3:4]
+ boost/iostreams/stream_buffer.hpp [3:4]
+ boost/iostreams/tee.hpp [3:4]
+ boost/iostreams/traits.hpp [3:4]
+ boost/iostreams/traits_fwd.hpp [3:4]
+ boost/iostreams/write.hpp [3:4]
+ boost/ptr_container/detail/default_deleter.hpp [2:3]
+ boost/ptr_container/detail/is_convertible.hpp [4:5]
+ boost/ptr_container/detail/move.hpp [2:3]
+ boost/ptr_container/detail/static_move_ptr.hpp [4:5]
+ libs/iostreams/src/bzip2.cpp [3:4]
+ libs/iostreams/src/file_descriptor.cpp [3:4]
+ libs/iostreams/src/gzip.cpp [3:4]
+ libs/iostreams/src/lzma.cpp [5:6]
+ libs/iostreams/src/mapped_file.cpp [5:6]
+ libs/iostreams/src/zlib.cpp [3:4]
+
+KEEP BSL-1.0 2835e331aa3449aef001bf68ecb39fb9
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/control/while.hpp at line 6, boost/preprocessor/tuple/eat.hpp at line 6, boost/preprocessor/tuple/elem.hpp at line 6, boost/preprocessor/tuple/reverse.hpp at line 6, boost/preprocessor/tuple/to_list.hpp at line 6
+ License text:
+ \# * Distributed under the Boost Software License, Version 1.0. (See
+ \# * accompanying file LICENSE_1_0.txt or copy at
+ \# * http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/preprocessor/control/while.hpp [5:7]
+ boost/preprocessor/tuple/eat.hpp [5:7]
+ boost/preprocessor/tuple/elem.hpp [5:7]
+ boost/preprocessor/tuple/reverse.hpp [5:7]
+ boost/preprocessor/tuple/to_list.hpp [5:7]
+
+KEEP BSL-1.0 28b2e46eb6f911b5064bd6681069737e
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/fusion/algorithm/transformation/detail/preprocessed/zip10.hpp at line 6, boost/fusion/algorithm/transformation/detail/preprocessed/zip20.hpp at line 6, boost/fusion/algorithm/transformation/detail/preprocessed/zip30.hpp at line 6, boost/fusion/algorithm/transformation/detail/preprocessed/zip40.hpp at line 6, boost/fusion/algorithm/transformation/detail/preprocessed/zip50.hpp at line 6, boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque10.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque20.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque30.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque40.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque50.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque10.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque20.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque20_fwd.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque30.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque30_fwd.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque40.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque40_fwd.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque50.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque50_fwd.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size20.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size30.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size40.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size50.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values10.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values20.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values30.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values40.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values50.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/deque_tie20.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/deque_tie30.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/deque_tie40.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/deque_tie50.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/list_tie20.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/list_tie30.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/list_tie40.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/list_tie50.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_deque10.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_deque20.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_deque30.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_deque40.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_deque50.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_list10.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_list20.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_list30.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_list40.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_list50.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_map10.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_map20.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_map30.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_map40.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_map50.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_set10.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_set20.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_set30.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_set40.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_set50.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_vector10.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_vector20.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_vector30.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_vector40.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_vector50.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/map_tie10.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/map_tie20.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/map_tie30.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/map_tie40.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/map_tie50.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/vector_tie20.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/vector_tie30.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/vector_tie40.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/vector_tie50.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list10.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list20.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list20_fwd.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list30.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list30_fwd.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list40.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list40_fwd.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list50.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list50_fwd.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons10.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons20.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons30.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons40.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons50.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/as_map10.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/as_map20.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/as_map30.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/as_map40.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/as_map50.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/map10.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/map20.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/map20_fwd.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/map30.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/map30_fwd.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/map40.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/map40_fwd.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/map50.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/map50_fwd.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/as_set10.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/as_set20.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/as_set30.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/as_set40.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/as_set50.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/set10.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/set20.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/set20_fwd.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/set30.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/set30_fwd.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/set40.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/set40_fwd.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/set50.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/set50_fwd.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector10.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector20.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector30.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector40.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector50.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vector10.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vector20.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vector20_fwd.hpp at line 6, boost/fusion/container/vector/detail/cpp03/preprocessed/vector30.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vector30_fwd.hpp at line 6, boost/fusion/container/vector/detail/cpp03/preprocessed/vector40.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vector40_fwd.hpp at line 6, boost/fusion/container/vector/detail/cpp03/preprocessed/vector50.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vector50_fwd.hpp at line 6, boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser20.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser30.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser40.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser50.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20_fwd.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30_fwd.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40_fwd.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50_fwd.hpp at line 5, boost/fusion/tuple/detail/preprocessed/make_tuple10.hpp at line 5, boost/fusion/tuple/detail/preprocessed/make_tuple20.hpp at line 5, boost/fusion/tuple/detail/preprocessed/make_tuple30.hpp at line 5, boost/fusion/tuple/detail/preprocessed/make_tuple40.hpp at line 5, boost/fusion/tuple/detail/preprocessed/make_tuple50.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple10.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple20.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple20_fwd.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple30.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple30_fwd.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple40.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple40_fwd.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple50.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple50_fwd.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple_tie20.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple_tie30.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple_tie40.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple_tie50.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_10.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_20.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_30.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_40.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_50.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_20.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_30.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_40.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_50.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_10.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_20.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_30.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_40.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_50.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_10.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_20.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_30.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_40.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_50.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/call_10.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/call_20.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/call_30.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/call_40.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/call_50.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/expression_10.hpp at line 7, boost/phoenix/core/detail/cpp03/preprocessed/expression_20.hpp at line 7, boost/phoenix/core/detail/cpp03/preprocessed/expression_30.hpp at line 7, boost/phoenix/core/detail/cpp03/preprocessed/expression_40.hpp at line 7, boost/phoenix/core/detail/cpp03/preprocessed/expression_50.hpp at line 7, boost/phoenix/core/detail/cpp03/preprocessed/function_equal_10.hpp at line 7, boost/phoenix/core/detail/cpp03/preprocessed/function_equal_20.hpp at line 7, boost/phoenix/core/detail/cpp03/preprocessed/function_equal_30.hpp at line 7, boost/phoenix/core/detail/cpp03/preprocessed/function_equal_40.hpp at line 7, boost/phoenix/core/detail/cpp03/preprocessed/function_equal_50.hpp at line 7, boost/phoenix/core/detail/cpp03/preprocessed/function_eval_10.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/function_eval_20.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/function_eval_30.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/function_eval_40.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/function_eval_50.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_10.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_20.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_30.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_40.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_50.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_20.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_30.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_40.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_50.hpp at line 5, boost/phoenix/function/detail/cpp03/preprocessed/function_operator_20.hpp at line 6, boost/phoenix/function/detail/cpp03/preprocessed/function_operator_30.hpp at line 6, boost/phoenix/function/detail/cpp03/preprocessed/function_operator_40.hpp at line 6, boost/phoenix/function/detail/cpp03/preprocessed/function_operator_50.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/construct_20.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/construct_30.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/construct_40.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/construct_50.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_10.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_20.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_30.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_40.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_50.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_10.hpp at line 5, boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_20.hpp at line 5, boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_30.hpp at line 5, boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_40.hpp at line 5, boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_50.hpp at line 5, boost/phoenix/object/detail/cpp03/preprocessed/new_20.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/new_30.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/new_40.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/new_50.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/new_eval_10.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/new_eval_20.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/new_eval_30.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/new_eval_40.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/new_eval_50.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/new_expr_10.hpp at line 5, boost/phoenix/object/detail/cpp03/preprocessed/new_expr_20.hpp at line 5, boost/phoenix/object/detail/cpp03/preprocessed/new_expr_30.hpp at line 5, boost/phoenix/object/detail/cpp03/preprocessed/new_expr_40.hpp at line 5, boost/phoenix/object/detail/cpp03/preprocessed/new_expr_50.hpp at line 5, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_20.hpp at line 7, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_30.hpp at line 7, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_40.hpp at line 7, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_50.hpp at line 7, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_10.hpp at line 7, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_20.hpp at line 7, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_30.hpp at line 7, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_40.hpp at line 7, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_50.hpp at line 7, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_10.hpp at line 5, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_20.hpp at line 5, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_30.hpp at line 5, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_40.hpp at line 5, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_50.hpp at line 5, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_20.hpp at line 6, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_30.hpp at line 6, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_40.hpp at line 6, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_50.hpp at line 6, boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_10.hpp at line 6, boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_20.hpp at line 6, boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_30.hpp at line 6, boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_40.hpp at line 6, boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_50.hpp at line 6, boost/phoenix/scope/detail/cpp03/preprocessed/lambda_10.hpp at line 8, boost/phoenix/scope/detail/cpp03/preprocessed/lambda_20.hpp at line 8, boost/phoenix/scope/detail/cpp03/preprocessed/lambda_30.hpp at line 8, boost/phoenix/scope/detail/cpp03/preprocessed/lambda_40.hpp at line 8, boost/phoenix/scope/detail/cpp03/preprocessed/lambda_50.hpp at line 8, boost/phoenix/statement/detail/preprocessed/catch_push_back_10.hpp at line 6, boost/phoenix/statement/detail/preprocessed/catch_push_back_20.hpp at line 6, boost/phoenix/statement/detail/preprocessed/catch_push_back_30.hpp at line 6, boost/phoenix/statement/detail/preprocessed/catch_push_back_40.hpp at line 6, boost/phoenix/statement/detail/preprocessed/catch_push_back_50.hpp at line 6, boost/phoenix/statement/detail/preprocessed/switch_10.hpp at line 6, boost/phoenix/statement/detail/preprocessed/switch_20.hpp at line 6, boost/phoenix/statement/detail/preprocessed/switch_30.hpp at line 6, boost/phoenix/statement/detail/preprocessed/switch_40.hpp at line 6, boost/phoenix/statement/detail/preprocessed/switch_50.hpp at line 6, boost/phoenix/statement/detail/preprocessed/try_catch_eval_10.hpp at line 6, boost/phoenix/statement/detail/preprocessed/try_catch_eval_20.hpp at line 6, boost/phoenix/statement/detail/preprocessed/try_catch_eval_30.hpp at line 6, boost/phoenix/statement/detail/preprocessed/try_catch_eval_40.hpp at line 6, boost/phoenix/statement/detail/preprocessed/try_catch_eval_50.hpp at line 6, boost/phoenix/statement/detail/preprocessed/try_catch_expression_30.hpp at line 6, boost/phoenix/statement/detail/preprocessed/try_catch_expression_40.hpp at line 6, boost/phoenix/statement/detail/preprocessed/try_catch_expression_50.hpp at line 6, boost/phoenix/support/preprocessed/vector_10.hpp at line 6, boost/phoenix/support/preprocessed/vector_20.hpp at line 6, boost/phoenix/support/preprocessed/vector_30.hpp at line 6, boost/phoenix/support/preprocessed/vector_40.hpp at line 6, boost/phoenix/support/preprocessed/vector_50.hpp at line 6
+ License text:
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/fusion/algorithm/transformation/detail/preprocessed/zip10.hpp [5:6]
+ boost/fusion/algorithm/transformation/detail/preprocessed/zip20.hpp [5:6]
+ boost/fusion/algorithm/transformation/detail/preprocessed/zip30.hpp [5:6]
+ boost/fusion/algorithm/transformation/detail/preprocessed/zip40.hpp [5:6]
+ boost/fusion/algorithm/transformation/detail/preprocessed/zip50.hpp [5:6]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque10.hpp [4:5]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque20.hpp [4:5]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque30.hpp [4:5]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque40.hpp [4:5]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque50.hpp [4:5]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque10.hpp [4:5]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque20.hpp [4:5]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque20_fwd.hpp [4:5]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque30.hpp [4:5]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque30_fwd.hpp [4:5]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque40.hpp [4:5]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque40_fwd.hpp [4:5]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque50.hpp [4:5]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque50_fwd.hpp [4:5]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size20.hpp [4:5]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size30.hpp [4:5]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size40.hpp [4:5]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size50.hpp [4:5]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values10.hpp [4:5]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values20.hpp [4:5]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values30.hpp [4:5]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values40.hpp [4:5]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values50.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/deque_tie20.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/deque_tie30.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/deque_tie40.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/deque_tie50.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/list_tie20.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/list_tie30.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/list_tie40.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/list_tie50.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/make_deque10.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/make_deque20.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/make_deque30.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/make_deque40.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/make_deque50.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/make_list10.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/make_list20.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/make_list30.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/make_list40.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/make_list50.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/make_map10.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/make_map20.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/make_map30.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/make_map40.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/make_map50.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/make_set10.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/make_set20.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/make_set30.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/make_set40.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/make_set50.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/make_vector10.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/make_vector20.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/make_vector30.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/make_vector40.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/make_vector50.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/map_tie10.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/map_tie20.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/map_tie30.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/map_tie40.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/map_tie50.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/vector_tie20.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/vector_tie30.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/vector_tie40.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/vector_tie50.hpp [4:5]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list10.hpp [4:5]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list20.hpp [4:5]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list20_fwd.hpp [4:5]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list30.hpp [4:5]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list30_fwd.hpp [4:5]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list40.hpp [4:5]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list40_fwd.hpp [4:5]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list50.hpp [4:5]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list50_fwd.hpp [4:5]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons10.hpp [4:5]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons20.hpp [4:5]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons30.hpp [4:5]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons40.hpp [4:5]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons50.hpp [4:5]
+ boost/fusion/container/map/detail/cpp03/preprocessed/as_map10.hpp [4:5]
+ boost/fusion/container/map/detail/cpp03/preprocessed/as_map20.hpp [4:5]
+ boost/fusion/container/map/detail/cpp03/preprocessed/as_map30.hpp [4:5]
+ boost/fusion/container/map/detail/cpp03/preprocessed/as_map40.hpp [4:5]
+ boost/fusion/container/map/detail/cpp03/preprocessed/as_map50.hpp [4:5]
+ boost/fusion/container/map/detail/cpp03/preprocessed/map10.hpp [4:5]
+ boost/fusion/container/map/detail/cpp03/preprocessed/map20.hpp [4:5]
+ boost/fusion/container/map/detail/cpp03/preprocessed/map20_fwd.hpp [4:5]
+ boost/fusion/container/map/detail/cpp03/preprocessed/map30.hpp [4:5]
+ boost/fusion/container/map/detail/cpp03/preprocessed/map30_fwd.hpp [4:5]
+ boost/fusion/container/map/detail/cpp03/preprocessed/map40.hpp [4:5]
+ boost/fusion/container/map/detail/cpp03/preprocessed/map40_fwd.hpp [4:5]
+ boost/fusion/container/map/detail/cpp03/preprocessed/map50.hpp [4:5]
+ boost/fusion/container/map/detail/cpp03/preprocessed/map50_fwd.hpp [4:5]
+ boost/fusion/container/set/detail/cpp03/preprocessed/as_set10.hpp [4:5]
+ boost/fusion/container/set/detail/cpp03/preprocessed/as_set20.hpp [4:5]
+ boost/fusion/container/set/detail/cpp03/preprocessed/as_set30.hpp [4:5]
+ boost/fusion/container/set/detail/cpp03/preprocessed/as_set40.hpp [4:5]
+ boost/fusion/container/set/detail/cpp03/preprocessed/as_set50.hpp [4:5]
+ boost/fusion/container/set/detail/cpp03/preprocessed/set10.hpp [4:5]
+ boost/fusion/container/set/detail/cpp03/preprocessed/set20.hpp [4:5]
+ boost/fusion/container/set/detail/cpp03/preprocessed/set20_fwd.hpp [4:5]
+ boost/fusion/container/set/detail/cpp03/preprocessed/set30.hpp [4:5]
+ boost/fusion/container/set/detail/cpp03/preprocessed/set30_fwd.hpp [4:5]
+ boost/fusion/container/set/detail/cpp03/preprocessed/set40.hpp [4:5]
+ boost/fusion/container/set/detail/cpp03/preprocessed/set40_fwd.hpp [4:5]
+ boost/fusion/container/set/detail/cpp03/preprocessed/set50.hpp [4:5]
+ boost/fusion/container/set/detail/cpp03/preprocessed/set50_fwd.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector10.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector20.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector30.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector40.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector50.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector10.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector20.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector20_fwd.hpp [5:6]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector30.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector30_fwd.hpp [5:6]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector40.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector40_fwd.hpp [5:6]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector50.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector50_fwd.hpp [5:6]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser20.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser30.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser40.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser50.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20_fwd.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30_fwd.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40_fwd.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50_fwd.hpp [4:5]
+ boost/fusion/tuple/detail/preprocessed/make_tuple10.hpp [4:5]
+ boost/fusion/tuple/detail/preprocessed/make_tuple20.hpp [4:5]
+ boost/fusion/tuple/detail/preprocessed/make_tuple30.hpp [4:5]
+ boost/fusion/tuple/detail/preprocessed/make_tuple40.hpp [4:5]
+ boost/fusion/tuple/detail/preprocessed/make_tuple50.hpp [4:5]
+ boost/fusion/tuple/detail/preprocessed/tuple10.hpp [4:5]
+ boost/fusion/tuple/detail/preprocessed/tuple20.hpp [4:5]
+ boost/fusion/tuple/detail/preprocessed/tuple20_fwd.hpp [4:5]
+ boost/fusion/tuple/detail/preprocessed/tuple30.hpp [4:5]
+ boost/fusion/tuple/detail/preprocessed/tuple30_fwd.hpp [4:5]
+ boost/fusion/tuple/detail/preprocessed/tuple40.hpp [4:5]
+ boost/fusion/tuple/detail/preprocessed/tuple40_fwd.hpp [4:5]
+ boost/fusion/tuple/detail/preprocessed/tuple50.hpp [4:5]
+ boost/fusion/tuple/detail/preprocessed/tuple50_fwd.hpp [4:5]
+ boost/fusion/tuple/detail/preprocessed/tuple_tie20.hpp [4:5]
+ boost/fusion/tuple/detail/preprocessed/tuple_tie30.hpp [4:5]
+ boost/fusion/tuple/detail/preprocessed/tuple_tie40.hpp [4:5]
+ boost/fusion/tuple/detail/preprocessed/tuple_tie50.hpp [4:5]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_10.hpp [5:6]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_20.hpp [5:6]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_30.hpp [5:6]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_40.hpp [5:6]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_50.hpp [5:6]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_20.hpp [5:6]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_30.hpp [5:6]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_40.hpp [5:6]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_50.hpp [5:6]
+ boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_10.hpp [5:6]
+ boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_20.hpp [5:6]
+ boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_30.hpp [5:6]
+ boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_40.hpp [5:6]
+ boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_50.hpp [5:6]
+ boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_10.hpp [5:6]
+ boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_20.hpp [5:6]
+ boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_30.hpp [5:6]
+ boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_40.hpp [5:6]
+ boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_50.hpp [5:6]
+ boost/phoenix/core/detail/cpp03/preprocessed/call_10.hpp [5:6]
+ boost/phoenix/core/detail/cpp03/preprocessed/call_20.hpp [5:6]
+ boost/phoenix/core/detail/cpp03/preprocessed/call_30.hpp [5:6]
+ boost/phoenix/core/detail/cpp03/preprocessed/call_40.hpp [5:6]
+ boost/phoenix/core/detail/cpp03/preprocessed/call_50.hpp [5:6]
+ boost/phoenix/core/detail/cpp03/preprocessed/expression_10.hpp [6:7]
+ boost/phoenix/core/detail/cpp03/preprocessed/expression_20.hpp [6:7]
+ boost/phoenix/core/detail/cpp03/preprocessed/expression_30.hpp [6:7]
+ boost/phoenix/core/detail/cpp03/preprocessed/expression_40.hpp [6:7]
+ boost/phoenix/core/detail/cpp03/preprocessed/expression_50.hpp [6:7]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_equal_10.hpp [6:7]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_equal_20.hpp [6:7]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_equal_30.hpp [6:7]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_equal_40.hpp [6:7]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_equal_50.hpp [6:7]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_eval_10.hpp [4:5]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_eval_20.hpp [4:5]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_eval_30.hpp [4:5]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_eval_40.hpp [4:5]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_eval_50.hpp [4:5]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_10.hpp [5:6]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_20.hpp [5:6]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_30.hpp [5:6]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_40.hpp [5:6]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_50.hpp [5:6]
+ boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_20.hpp [4:5]
+ boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_30.hpp [4:5]
+ boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_40.hpp [4:5]
+ boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_50.hpp [4:5]
+ boost/phoenix/function/detail/cpp03/preprocessed/function_operator_20.hpp [5:6]
+ boost/phoenix/function/detail/cpp03/preprocessed/function_operator_30.hpp [5:6]
+ boost/phoenix/function/detail/cpp03/preprocessed/function_operator_40.hpp [5:6]
+ boost/phoenix/function/detail/cpp03/preprocessed/function_operator_50.hpp [5:6]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_20.hpp [5:6]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_30.hpp [5:6]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_40.hpp [5:6]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_50.hpp [5:6]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_10.hpp [5:6]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_20.hpp [5:6]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_30.hpp [5:6]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_40.hpp [5:6]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_50.hpp [5:6]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_10.hpp [4:5]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_20.hpp [4:5]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_30.hpp [4:5]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_40.hpp [4:5]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_50.hpp [4:5]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_20.hpp [5:6]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_30.hpp [5:6]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_40.hpp [5:6]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_50.hpp [5:6]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_eval_10.hpp [5:6]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_eval_20.hpp [5:6]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_eval_30.hpp [5:6]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_eval_40.hpp [5:6]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_eval_50.hpp [5:6]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_expr_10.hpp [4:5]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_expr_20.hpp [4:5]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_expr_30.hpp [4:5]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_expr_40.hpp [4:5]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_expr_50.hpp [4:5]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_20.hpp [6:7]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_30.hpp [6:7]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_40.hpp [6:7]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_50.hpp [6:7]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_10.hpp [6:7]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_20.hpp [6:7]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_30.hpp [6:7]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_40.hpp [6:7]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_50.hpp [6:7]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_10.hpp [4:5]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_20.hpp [4:5]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_30.hpp [4:5]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_40.hpp [4:5]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_50.hpp [4:5]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_20.hpp [5:6]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_30.hpp [5:6]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_40.hpp [5:6]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_50.hpp [5:6]
+ boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_10.hpp [5:6]
+ boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_20.hpp [5:6]
+ boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_30.hpp [5:6]
+ boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_40.hpp [5:6]
+ boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_50.hpp [5:6]
+ boost/phoenix/scope/detail/cpp03/preprocessed/lambda_10.hpp [7:8]
+ boost/phoenix/scope/detail/cpp03/preprocessed/lambda_20.hpp [7:8]
+ boost/phoenix/scope/detail/cpp03/preprocessed/lambda_30.hpp [7:8]
+ boost/phoenix/scope/detail/cpp03/preprocessed/lambda_40.hpp [7:8]
+ boost/phoenix/scope/detail/cpp03/preprocessed/lambda_50.hpp [7:8]
+ boost/phoenix/statement/detail/preprocessed/catch_push_back_10.hpp [5:6]
+ boost/phoenix/statement/detail/preprocessed/catch_push_back_20.hpp [5:6]
+ boost/phoenix/statement/detail/preprocessed/catch_push_back_30.hpp [5:6]
+ boost/phoenix/statement/detail/preprocessed/catch_push_back_40.hpp [5:6]
+ boost/phoenix/statement/detail/preprocessed/catch_push_back_50.hpp [5:6]
+ boost/phoenix/statement/detail/preprocessed/switch_10.hpp [5:6]
+ boost/phoenix/statement/detail/preprocessed/switch_20.hpp [5:6]
+ boost/phoenix/statement/detail/preprocessed/switch_30.hpp [5:6]
+ boost/phoenix/statement/detail/preprocessed/switch_40.hpp [5:6]
+ boost/phoenix/statement/detail/preprocessed/switch_50.hpp [5:6]
+ boost/phoenix/statement/detail/preprocessed/try_catch_eval_10.hpp [5:6]
+ boost/phoenix/statement/detail/preprocessed/try_catch_eval_20.hpp [5:6]
+ boost/phoenix/statement/detail/preprocessed/try_catch_eval_30.hpp [5:6]
+ boost/phoenix/statement/detail/preprocessed/try_catch_eval_40.hpp [5:6]
+ boost/phoenix/statement/detail/preprocessed/try_catch_eval_50.hpp [5:6]
+ boost/phoenix/statement/detail/preprocessed/try_catch_expression_30.hpp [5:6]
+ boost/phoenix/statement/detail/preprocessed/try_catch_expression_40.hpp [5:6]
+ boost/phoenix/statement/detail/preprocessed/try_catch_expression_50.hpp [5:6]
+ boost/phoenix/support/preprocessed/vector_10.hpp [5:6]
+ boost/phoenix/support/preprocessed/vector_20.hpp [5:6]
+ boost/phoenix/support/preprocessed/vector_30.hpp [5:6]
+ boost/phoenix/support/preprocessed/vector_40.hpp [5:6]
+ boost/phoenix/support/preprocessed/vector_50.hpp [5:6]
+
+KEEP BSL-1.0 29ab2af23720ebdd1e2ad342a8e0137f
+BELONGS libs/container/ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: libs/container/src/dlmalloc_ext_2_8_6.c at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2007-2015. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ libs/container/src/dlmalloc_ext_2_8_6.c [3:5]
+
+KEEP Public-Domain 2ab151edee0159eccbbf18b52c0ec403
+BELONGS ya.make
+ License text:
+ // This code is in the public domain. Anyone may use it or change it in any way that
+ Scancode info:
+ Original SPDX id: LicenseRef-scancode-public-domain
+ Score : 100.00
+ Match type : TEXT
+ Links : http://www.linfo.org/publicdomain.html, https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/public-domain.LICENSE
+ Files with this license:
+ boost/intrusive/rbtree_algorithms.hpp [16:16]
+
+KEEP BSL-1.0 2c7a3fa82e66676005cd4ee2608fd7d2
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : TEXT
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ LICENSE_1_0.txt [1:23]
+
+KEEP BSL-1.0 2cc71fe4bd12718a9884bf7ff37269f3
+BELONGS libs/python/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/rolling_mean.hpp at line 6, boost/accumulators/statistics/rolling_moment.hpp at line 6, boost/accumulators/statistics/rolling_variance.hpp at line 6, boost/bimap.hpp at line 6, boost/bimap/bimap.hpp at line 6, boost/bimap/container_adaptor/associative_container_adaptor.hpp at line 6, boost/bimap/container_adaptor/container_adaptor.hpp at line 6, boost/bimap/container_adaptor/detail/comparison_adaptor.hpp at line 6, boost/bimap/container_adaptor/detail/functor_bag.hpp at line 6, boost/bimap/container_adaptor/detail/identity_converters.hpp at line 6, boost/bimap/container_adaptor/detail/key_extractor.hpp at line 6, boost/bimap/container_adaptor/detail/non_unique_container_helper.hpp at line 6, boost/bimap/container_adaptor/list_adaptor.hpp at line 6, boost/bimap/container_adaptor/list_map_adaptor.hpp at line 6, boost/bimap/container_adaptor/map_adaptor.hpp at line 6, boost/bimap/container_adaptor/multimap_adaptor.hpp at line 6, boost/bimap/container_adaptor/multiset_adaptor.hpp at line 6, boost/bimap/container_adaptor/ordered_associative_container_adaptor.hpp at line 6, boost/bimap/container_adaptor/sequence_container_adaptor.hpp at line 6, boost/bimap/container_adaptor/set_adaptor.hpp at line 6, boost/bimap/container_adaptor/support/iterator_facade_converters.hpp at line 6, boost/bimap/container_adaptor/unordered_associative_container_adaptor.hpp at line 6, boost/bimap/container_adaptor/unordered_map_adaptor.hpp at line 6, boost/bimap/container_adaptor/unordered_multimap_adaptor.hpp at line 6, boost/bimap/container_adaptor/unordered_multiset_adaptor.hpp at line 6, boost/bimap/container_adaptor/unordered_set_adaptor.hpp at line 6, boost/bimap/container_adaptor/vector_adaptor.hpp at line 6, boost/bimap/container_adaptor/vector_map_adaptor.hpp at line 6, boost/bimap/detail/bimap_core.hpp at line 6, boost/bimap/detail/concept_tags.hpp at line 6, boost/bimap/detail/debug/static_error.hpp at line 6, boost/bimap/detail/generate_index_binder.hpp at line 6, boost/bimap/detail/generate_relation_binder.hpp at line 6, boost/bimap/detail/generate_view_binder.hpp at line 6, boost/bimap/detail/is_set_type_of.hpp at line 6, boost/bimap/detail/manage_additional_parameters.hpp at line 6, boost/bimap/detail/manage_bimap_key.hpp at line 6, boost/bimap/detail/map_view_base.hpp at line 6, boost/bimap/detail/map_view_iterator.hpp at line 6, boost/bimap/detail/modifier_adaptor.hpp at line 6, boost/bimap/detail/non_unique_views_helper.hpp at line 6, boost/bimap/detail/set_view_base.hpp at line 6, boost/bimap/detail/set_view_iterator.hpp at line 6, boost/bimap/detail/test/check_metadata.hpp at line 6, boost/bimap/detail/user_interface_config.hpp at line 6, boost/bimap/list_of.hpp at line 6, boost/bimap/multiset_of.hpp at line 6, boost/bimap/property_map/set_support.hpp at line 6, boost/bimap/property_map/unordered_set_support.hpp at line 6, boost/bimap/relation/detail/access_builder.hpp at line 6, boost/bimap/relation/detail/metadata_access_builder.hpp at line 6, boost/bimap/relation/detail/mutant.hpp at line 6, boost/bimap/relation/detail/static_access_builder.hpp at line 6, boost/bimap/relation/detail/to_mutable_relation_functor.hpp at line 6, boost/bimap/relation/member_at.hpp at line 6, boost/bimap/relation/mutant_relation.hpp at line 6, boost/bimap/relation/pair_layout.hpp at line 6, boost/bimap/relation/structured_pair.hpp at line 6, boost/bimap/relation/support/data_extractor.hpp at line 6, boost/bimap/relation/support/get.hpp at line 6, boost/bimap/relation/support/get_pair_functor.hpp at line 6, boost/bimap/relation/support/is_tag_of_member_at.hpp at line 6, boost/bimap/relation/support/member_with_tag.hpp at line 6, boost/bimap/relation/support/opposite_tag.hpp at line 6, boost/bimap/relation/support/pair_by.hpp at line 6, boost/bimap/relation/support/pair_type_by.hpp at line 6, boost/bimap/relation/support/value_type_of.hpp at line 6, boost/bimap/relation/symmetrical_base.hpp at line 6, boost/bimap/set_of.hpp at line 6, boost/bimap/support/data_type_by.hpp at line 6, boost/bimap/support/iterator_type_by.hpp at line 6, boost/bimap/support/key_type_by.hpp at line 6, boost/bimap/support/lambda.hpp at line 6, boost/bimap/support/map_by.hpp at line 6, boost/bimap/support/map_type_by.hpp at line 6, boost/bimap/support/value_type_by.hpp at line 6, boost/bimap/tags/support/apply_to_value_type.hpp at line 6, boost/bimap/tags/support/default_tagged.hpp at line 6, boost/bimap/tags/support/is_tagged.hpp at line 6, boost/bimap/tags/support/overwrite_tagged.hpp at line 6, boost/bimap/tags/support/tag_of.hpp at line 6, boost/bimap/tags/support/value_type_of.hpp at line 6, boost/bimap/tags/tagged.hpp at line 6, boost/bimap/unconstrained_set_of.hpp at line 6, boost/bimap/unordered_multiset_of.hpp at line 6, boost/bimap/unordered_set_of.hpp at line 6, boost/bimap/vector_of.hpp at line 6, boost/bimap/views/list_map_view.hpp at line 6, boost/bimap/views/list_set_view.hpp at line 6, boost/bimap/views/map_view.hpp at line 6, boost/bimap/views/multimap_view.hpp at line 6, boost/bimap/views/multiset_view.hpp at line 6, boost/bimap/views/set_view.hpp at line 6, boost/bimap/views/unconstrained_map_view.hpp at line 6, boost/bimap/views/unconstrained_set_view.hpp at line 6, boost/bimap/views/unordered_map_view.hpp at line 6, boost/bimap/views/unordered_multimap_view.hpp at line 6, boost/bimap/views/unordered_multiset_view.hpp at line 6, boost/bimap/views/unordered_set_view.hpp at line 6, boost/bimap/views/vector_map_view.hpp at line 6, boost/bimap/views/vector_set_view.hpp at line 6, boost/container/detail/algorithm.hpp at line 6, boost/container/detail/construct_in_place.hpp at line 6, boost/container/detail/destroyers.hpp at line 6, boost/container/detail/iterator.hpp at line 6, boost/container/detail/iterators.hpp at line 7, boost/container/detail/mpl.hpp at line 6, boost/container/detail/pair.hpp at line 6, boost/container/detail/transform_iterator.hpp at line 7, boost/container/detail/type_traits.hpp at line 6, boost/container/detail/value_init.hpp at line 6, boost/container/stable_vector.hpp at line 14, boost/geometry/algorithms/detail/envelope/box.hpp at line 15, boost/geometry/algorithms/detail/envelope/implementation.hpp at line 17, boost/geometry/algorithms/detail/envelope/initialize.hpp at line 8, boost/geometry/algorithms/detail/envelope/interface.hpp at line 18, boost/geometry/algorithms/detail/envelope/intersects_antimeridian.hpp at line 8, boost/geometry/algorithms/detail/envelope/linear.hpp at line 14, boost/geometry/algorithms/detail/envelope/multipoint.hpp at line 10, boost/geometry/algorithms/detail/envelope/point.hpp at line 15, boost/geometry/algorithms/detail/envelope/range.hpp at line 17, boost/geometry/algorithms/detail/envelope/range_of_boxes.hpp at line 10, boost/geometry/algorithms/detail/envelope/segment.hpp at line 15, boost/geometry/algorithms/detail/envelope/transform_units.hpp at line 8, boost/geometry/algorithms/detail/expand/box.hpp at line 16, boost/geometry/algorithms/detail/expand/implementation.hpp at line 17, boost/geometry/algorithms/detail/expand/indexed.hpp at line 19, boost/geometry/algorithms/detail/expand/interface.hpp at line 18, boost/geometry/algorithms/detail/expand/point.hpp at line 19, boost/geometry/algorithms/detail/expand/segment.hpp at line 16, boost/geometry/algorithms/detail/expand_by_epsilon.hpp at line 8, boost/geometry/algorithms/dispatch/envelope.hpp at line 16, boost/geometry/algorithms/dispatch/expand.hpp at line 18, boost/geometry/algorithms/envelope.hpp at line 16, boost/geometry/algorithms/expand.hpp at line 17, boost/graph/bc_clustering.hpp at line 4, boost/graph/betweenness_centrality.hpp at line 4, boost/graph/circle_layout.hpp at line 4, boost/graph/compressed_sparse_row_graph.hpp at line 4, boost/graph/detail/compressed_sparse_row_struct.hpp at line 4, boost/graph/detail/histogram_sort.hpp at line 4, boost/graph/detail/indexed_properties.hpp at line 4, boost/graph/detail/is_distributed_selector.hpp at line 4, boost/graph/detail/read_graphviz_new.hpp at line 4, boost/graph/detail/read_graphviz_spirit.hpp at line 4, boost/graph/distributed/betweenness_centrality.hpp at line 4, boost/graph/dominator_tree.hpp at line 5, boost/graph/erdos_renyi_generator.hpp at line 4, boost/graph/floyd_warshall_shortest.hpp at line 4, boost/graph/fruchterman_reingold.hpp at line 4, boost/graph/gursoy_atun_layout.hpp at line 4, boost/graph/kamada_kawai_spring_layout.hpp at line 4, boost/graph/loop_erased_random_walk.hpp at line 4, boost/graph/one_bit_color_map.hpp at line 4, boost/graph/page_rank.hpp at line 5, boost/graph/plod_generator.hpp at line 4, boost/graph/random_layout.hpp at line 4, boost/graph/random_spanning_tree.hpp at line 4, boost/graph/small_world_generator.hpp at line 4, boost/graph/topology.hpp at line 4, boost/graph/two_bit_color_map.hpp at line 4, boost/interprocess/detail/min_max.hpp at line 6, boost/interprocess/detail/move.hpp at line 5, boost/interprocess/detail/mpl.hpp at line 6, boost/interprocess/detail/pointer_type.hpp at line 7, boost/interprocess/detail/transform_iterator.hpp at line 7, boost/interprocess/detail/type_traits.hpp at line 6, boost/interprocess/detail/utilities.hpp at line 7, boost/interprocess/smart_ptr/deleter.hpp at line 6, boost/interprocess/smart_ptr/detail/sp_counted_base.hpp at line 6, boost/interprocess/smart_ptr/shared_ptr.hpp at line 9, boost/interprocess/smart_ptr/weak_ptr.hpp at line 8, boost/intrusive/detail/algorithm.hpp at line 6, boost/iterator/advance.hpp at line 4, boost/iterator/distance.hpp at line 4, boost/move/algo/adaptive_merge.hpp at line 5, boost/move/algo/adaptive_sort.hpp at line 5, boost/move/algo/detail/adaptive_sort_merge.hpp at line 5, boost/move/algo/detail/basic_op.hpp at line 5, boost/move/algo/detail/heap_sort.hpp at line 5, boost/move/algo/detail/insertion_sort.hpp at line 5, boost/move/algo/detail/merge.hpp at line 5, boost/move/algo/detail/merge_sort.hpp at line 5, boost/move/algo/detail/pdqsort.hpp at line 6, boost/move/algo/detail/set_difference.hpp at line 5, boost/move/algo/move.hpp at line 5, boost/move/algo/predicate.hpp at line 5, boost/move/algo/unique.hpp at line 5, boost/move/algorithm.hpp at line 5, boost/move/core.hpp at line 5, boost/move/detail/destruct_n.hpp at line 5, boost/move/detail/iterator_traits.hpp at line 5, boost/move/detail/meta_utils.hpp at line 5, boost/move/detail/meta_utils_core.hpp at line 5, boost/move/detail/move_helpers.hpp at line 5, boost/move/detail/type_traits.hpp at line 6, boost/move/detail/unique_ptr_meta_utils.hpp at line 5, boost/move/iterator.hpp at line 5, boost/move/move.hpp at line 6, boost/move/traits.hpp at line 5, boost/move/utility.hpp at line 5, boost/move/utility_core.hpp at line 5, boost/mpl/aux_/config/gpu.hpp at line 8, boost/mpl/eval_if.hpp at line 8, boost/mpl/get_tag.hpp at line 8, boost/mpl/numeric_cast.hpp at line 8, boost/mpl/string.hpp at line 8, boost/none.hpp at line 5, boost/property_tree/detail/ptree_implementation.hpp at line 6, boost/python/numpy.hpp at line 4, boost/python/numpy/dtype.hpp at line 4, boost/python/numpy/internal.hpp at line 4, boost/python/numpy/invoke_matching.hpp at line 4, boost/python/numpy/matrix.hpp at line 4, boost/python/numpy/ndarray.hpp at line 4, boost/python/numpy/numpy_object_mgr_traits.hpp at line 4, boost/python/numpy/scalars.hpp at line 4, boost/python/numpy/ufunc.hpp at line 4, boost/python/object/class_metadata.hpp at line 4, boost/ratio/detail/mpl/abs.hpp at line 6, boost/ratio/detail/mpl/gcd.hpp at line 6, boost/ratio/detail/mpl/lcm.hpp at line 6, boost/ratio/detail/mpl/sign.hpp at line 6, boost/test/impl/test_framework_init_observer.ipp at line 3, boost/test/test_framework_init_observer.hpp at line 3, libs/python/src/numpy/dtype.cpp at line 4, libs/python/src/numpy/matrix.cpp at line 4, libs/python/src/numpy/ndarray.cpp at line 4, libs/python/src/numpy/numpy.cpp at line 4, libs/python/src/numpy/scalars.cpp at line 4, libs/python/src/numpy/ufunc.cpp at line 4
+ License text:
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/accumulators/statistics/rolling_mean.hpp [5:7]
+ boost/accumulators/statistics/rolling_moment.hpp [5:7]
+ boost/accumulators/statistics/rolling_variance.hpp [5:7]
+ boost/bimap.hpp [5:7]
+ boost/bimap/bimap.hpp [5:7]
+ boost/bimap/container_adaptor/associative_container_adaptor.hpp [5:7]
+ boost/bimap/container_adaptor/container_adaptor.hpp [5:7]
+ boost/bimap/container_adaptor/detail/comparison_adaptor.hpp [5:7]
+ boost/bimap/container_adaptor/detail/functor_bag.hpp [5:7]
+ boost/bimap/container_adaptor/detail/identity_converters.hpp [5:7]
+ boost/bimap/container_adaptor/detail/key_extractor.hpp [5:7]
+ boost/bimap/container_adaptor/detail/non_unique_container_helper.hpp [5:7]
+ boost/bimap/container_adaptor/list_adaptor.hpp [5:7]
+ boost/bimap/container_adaptor/list_map_adaptor.hpp [5:7]
+ boost/bimap/container_adaptor/map_adaptor.hpp [5:7]
+ boost/bimap/container_adaptor/multimap_adaptor.hpp [5:7]
+ boost/bimap/container_adaptor/multiset_adaptor.hpp [5:7]
+ boost/bimap/container_adaptor/ordered_associative_container_adaptor.hpp [5:7]
+ boost/bimap/container_adaptor/sequence_container_adaptor.hpp [5:7]
+ boost/bimap/container_adaptor/set_adaptor.hpp [5:7]
+ boost/bimap/container_adaptor/support/iterator_facade_converters.hpp [5:7]
+ boost/bimap/container_adaptor/unordered_associative_container_adaptor.hpp [5:7]
+ boost/bimap/container_adaptor/unordered_map_adaptor.hpp [5:7]
+ boost/bimap/container_adaptor/unordered_multimap_adaptor.hpp [5:7]
+ boost/bimap/container_adaptor/unordered_multiset_adaptor.hpp [5:7]
+ boost/bimap/container_adaptor/unordered_set_adaptor.hpp [5:7]
+ boost/bimap/container_adaptor/vector_adaptor.hpp [5:7]
+ boost/bimap/container_adaptor/vector_map_adaptor.hpp [5:7]
+ boost/bimap/detail/bimap_core.hpp [5:7]
+ boost/bimap/detail/concept_tags.hpp [5:7]
+ boost/bimap/detail/debug/static_error.hpp [5:7]
+ boost/bimap/detail/generate_index_binder.hpp [5:7]
+ boost/bimap/detail/generate_relation_binder.hpp [5:7]
+ boost/bimap/detail/generate_view_binder.hpp [5:7]
+ boost/bimap/detail/is_set_type_of.hpp [5:7]
+ boost/bimap/detail/manage_additional_parameters.hpp [5:7]
+ boost/bimap/detail/manage_bimap_key.hpp [5:7]
+ boost/bimap/detail/map_view_base.hpp [5:7]
+ boost/bimap/detail/map_view_iterator.hpp [5:7]
+ boost/bimap/detail/modifier_adaptor.hpp [5:7]
+ boost/bimap/detail/non_unique_views_helper.hpp [5:7]
+ boost/bimap/detail/set_view_base.hpp [5:7]
+ boost/bimap/detail/set_view_iterator.hpp [5:7]
+ boost/bimap/detail/test/check_metadata.hpp [5:7]
+ boost/bimap/detail/user_interface_config.hpp [5:7]
+ boost/bimap/list_of.hpp [5:7]
+ boost/bimap/multiset_of.hpp [5:7]
+ boost/bimap/property_map/set_support.hpp [5:7]
+ boost/bimap/property_map/unordered_set_support.hpp [5:7]
+ boost/bimap/relation/detail/access_builder.hpp [5:7]
+ boost/bimap/relation/detail/metadata_access_builder.hpp [5:7]
+ boost/bimap/relation/detail/mutant.hpp [5:7]
+ boost/bimap/relation/detail/static_access_builder.hpp [5:7]
+ boost/bimap/relation/detail/to_mutable_relation_functor.hpp [5:7]
+ boost/bimap/relation/member_at.hpp [5:7]
+ boost/bimap/relation/mutant_relation.hpp [5:7]
+ boost/bimap/relation/pair_layout.hpp [5:7]
+ boost/bimap/relation/structured_pair.hpp [5:7]
+ boost/bimap/relation/support/data_extractor.hpp [5:7]
+ boost/bimap/relation/support/get.hpp [5:7]
+ boost/bimap/relation/support/get_pair_functor.hpp [5:7]
+ boost/bimap/relation/support/is_tag_of_member_at.hpp [5:7]
+ boost/bimap/relation/support/member_with_tag.hpp [5:7]
+ boost/bimap/relation/support/opposite_tag.hpp [5:7]
+ boost/bimap/relation/support/pair_by.hpp [5:7]
+ boost/bimap/relation/support/pair_type_by.hpp [5:7]
+ boost/bimap/relation/support/value_type_of.hpp [5:7]
+ boost/bimap/relation/symmetrical_base.hpp [5:7]
+ boost/bimap/set_of.hpp [5:7]
+ boost/bimap/support/data_type_by.hpp [5:7]
+ boost/bimap/support/iterator_type_by.hpp [5:7]
+ boost/bimap/support/key_type_by.hpp [5:7]
+ boost/bimap/support/lambda.hpp [5:7]
+ boost/bimap/support/map_by.hpp [5:7]
+ boost/bimap/support/map_type_by.hpp [5:7]
+ boost/bimap/support/value_type_by.hpp [5:7]
+ boost/bimap/tags/support/apply_to_value_type.hpp [5:7]
+ boost/bimap/tags/support/default_tagged.hpp [5:7]
+ boost/bimap/tags/support/is_tagged.hpp [5:7]
+ boost/bimap/tags/support/overwrite_tagged.hpp [5:7]
+ boost/bimap/tags/support/tag_of.hpp [5:7]
+ boost/bimap/tags/support/value_type_of.hpp [5:7]
+ boost/bimap/tags/tagged.hpp [5:7]
+ boost/bimap/unconstrained_set_of.hpp [5:7]
+ boost/bimap/unordered_multiset_of.hpp [5:7]
+ boost/bimap/unordered_set_of.hpp [5:7]
+ boost/bimap/vector_of.hpp [5:7]
+ boost/bimap/views/list_map_view.hpp [5:7]
+ boost/bimap/views/list_set_view.hpp [5:7]
+ boost/bimap/views/map_view.hpp [5:7]
+ boost/bimap/views/multimap_view.hpp [5:7]
+ boost/bimap/views/multiset_view.hpp [5:7]
+ boost/bimap/views/set_view.hpp [5:7]
+ boost/bimap/views/unconstrained_map_view.hpp [5:7]
+ boost/bimap/views/unconstrained_set_view.hpp [5:7]
+ boost/bimap/views/unordered_map_view.hpp [5:7]
+ boost/bimap/views/unordered_multimap_view.hpp [5:7]
+ boost/bimap/views/unordered_multiset_view.hpp [5:7]
+ boost/bimap/views/unordered_set_view.hpp [5:7]
+ boost/bimap/views/vector_map_view.hpp [5:7]
+ boost/bimap/views/vector_set_view.hpp [5:7]
+ boost/container/detail/algorithm.hpp [5:7]
+ boost/container/detail/construct_in_place.hpp [5:7]
+ boost/container/detail/destroyers.hpp [5:7]
+ boost/container/detail/iterator.hpp [5:7]
+ boost/container/detail/iterators.hpp [6:8]
+ boost/container/detail/mpl.hpp [5:7]
+ boost/container/detail/pair.hpp [5:7]
+ boost/container/detail/transform_iterator.hpp [6:8]
+ boost/container/detail/type_traits.hpp [5:7]
+ boost/container/detail/value_init.hpp [5:7]
+ boost/container/stable_vector.hpp [13:15]
+ boost/geometry/algorithms/detail/envelope/box.hpp [14:16]
+ boost/geometry/algorithms/detail/envelope/implementation.hpp [16:18]
+ boost/geometry/algorithms/detail/envelope/initialize.hpp [7:9]
+ boost/geometry/algorithms/detail/envelope/interface.hpp [17:19]
+ boost/geometry/algorithms/detail/envelope/intersects_antimeridian.hpp [7:9]
+ boost/geometry/algorithms/detail/envelope/linear.hpp [13:15]
+ boost/geometry/algorithms/detail/envelope/multipoint.hpp [9:11]
+ boost/geometry/algorithms/detail/envelope/point.hpp [14:16]
+ boost/geometry/algorithms/detail/envelope/range.hpp [16:18]
+ boost/geometry/algorithms/detail/envelope/range_of_boxes.hpp [9:11]
+ boost/geometry/algorithms/detail/envelope/segment.hpp [14:16]
+ boost/geometry/algorithms/detail/envelope/transform_units.hpp [7:9]
+ boost/geometry/algorithms/detail/expand/box.hpp [15:17]
+ boost/geometry/algorithms/detail/expand/implementation.hpp [16:18]
+ boost/geometry/algorithms/detail/expand/indexed.hpp [18:20]
+ boost/geometry/algorithms/detail/expand/interface.hpp [17:19]
+ boost/geometry/algorithms/detail/expand/point.hpp [18:20]
+ boost/geometry/algorithms/detail/expand/segment.hpp [15:17]
+ boost/geometry/algorithms/detail/expand_by_epsilon.hpp [7:9]
+ boost/geometry/algorithms/dispatch/envelope.hpp [15:17]
+ boost/geometry/algorithms/dispatch/expand.hpp [17:19]
+ boost/geometry/algorithms/envelope.hpp [15:17]
+ boost/geometry/algorithms/expand.hpp [16:18]
+ boost/graph/bc_clustering.hpp [3:5]
+ boost/graph/betweenness_centrality.hpp [3:5]
+ boost/graph/circle_layout.hpp [3:5]
+ boost/graph/compressed_sparse_row_graph.hpp [3:5]
+ boost/graph/detail/compressed_sparse_row_struct.hpp [3:5]
+ boost/graph/detail/histogram_sort.hpp [3:5]
+ boost/graph/detail/indexed_properties.hpp [3:5]
+ boost/graph/detail/is_distributed_selector.hpp [3:5]
+ boost/graph/detail/read_graphviz_new.hpp [3:5]
+ boost/graph/detail/read_graphviz_spirit.hpp [3:5]
+ boost/graph/distributed/betweenness_centrality.hpp [3:5]
+ boost/graph/dominator_tree.hpp [4:6]
+ boost/graph/erdos_renyi_generator.hpp [3:5]
+ boost/graph/floyd_warshall_shortest.hpp [3:5]
+ boost/graph/fruchterman_reingold.hpp [3:5]
+ boost/graph/gursoy_atun_layout.hpp [3:5]
+ boost/graph/kamada_kawai_spring_layout.hpp [3:5]
+ boost/graph/loop_erased_random_walk.hpp [3:5]
+ boost/graph/one_bit_color_map.hpp [3:5]
+ boost/graph/page_rank.hpp [4:6]
+ boost/graph/plod_generator.hpp [3:5]
+ boost/graph/random_layout.hpp [3:5]
+ boost/graph/random_spanning_tree.hpp [3:5]
+ boost/graph/small_world_generator.hpp [3:5]
+ boost/graph/topology.hpp [3:5]
+ boost/graph/two_bit_color_map.hpp [3:5]
+ boost/interprocess/detail/min_max.hpp [5:7]
+ boost/interprocess/detail/move.hpp [4:6]
+ boost/interprocess/detail/mpl.hpp [5:7]
+ boost/interprocess/detail/pointer_type.hpp [6:8]
+ boost/interprocess/detail/transform_iterator.hpp [6:8]
+ boost/interprocess/detail/type_traits.hpp [5:7]
+ boost/interprocess/detail/utilities.hpp [6:8]
+ boost/interprocess/smart_ptr/deleter.hpp [5:7]
+ boost/interprocess/smart_ptr/detail/sp_counted_base.hpp [5:7]
+ boost/interprocess/smart_ptr/shared_ptr.hpp [8:10]
+ boost/interprocess/smart_ptr/weak_ptr.hpp [7:9]
+ boost/intrusive/detail/algorithm.hpp [5:7]
+ boost/iterator/advance.hpp [3:5]
+ boost/iterator/distance.hpp [3:5]
+ boost/move/algo/adaptive_merge.hpp [4:6]
+ boost/move/algo/adaptive_sort.hpp [4:6]
+ boost/move/algo/detail/adaptive_sort_merge.hpp [4:6]
+ boost/move/algo/detail/basic_op.hpp [4:6]
+ boost/move/algo/detail/heap_sort.hpp [4:6]
+ boost/move/algo/detail/insertion_sort.hpp [4:6]
+ boost/move/algo/detail/merge.hpp [4:6]
+ boost/move/algo/detail/merge_sort.hpp [4:6]
+ boost/move/algo/detail/pdqsort.hpp [5:7]
+ boost/move/algo/detail/set_difference.hpp [4:6]
+ boost/move/algo/move.hpp [4:6]
+ boost/move/algo/predicate.hpp [4:6]
+ boost/move/algo/unique.hpp [4:6]
+ boost/move/algorithm.hpp [4:6]
+ boost/move/core.hpp [4:6]
+ boost/move/detail/destruct_n.hpp [4:6]
+ boost/move/detail/iterator_traits.hpp [4:6]
+ boost/move/detail/meta_utils.hpp [4:6]
+ boost/move/detail/meta_utils_core.hpp [4:6]
+ boost/move/detail/move_helpers.hpp [4:6]
+ boost/move/detail/type_traits.hpp [5:7]
+ boost/move/detail/unique_ptr_meta_utils.hpp [4:6]
+ boost/move/iterator.hpp [4:6]
+ boost/move/move.hpp [5:7]
+ boost/move/traits.hpp [4:6]
+ boost/move/utility.hpp [4:6]
+ boost/move/utility_core.hpp [4:6]
+ boost/mpl/aux_/config/gpu.hpp [7:9]
+ boost/mpl/eval_if.hpp [7:9]
+ boost/mpl/get_tag.hpp [7:9]
+ boost/mpl/numeric_cast.hpp [7:9]
+ boost/mpl/string.hpp [7:9]
+ boost/none.hpp [4:6]
+ boost/property_tree/detail/ptree_implementation.hpp [5:7]
+ boost/python/numpy.hpp [3:5]
+ boost/python/numpy/dtype.hpp [3:5]
+ boost/python/numpy/internal.hpp [3:5]
+ boost/python/numpy/invoke_matching.hpp [3:5]
+ boost/python/numpy/matrix.hpp [3:5]
+ boost/python/numpy/ndarray.hpp [3:5]
+ boost/python/numpy/numpy_object_mgr_traits.hpp [3:5]
+ boost/python/numpy/scalars.hpp [3:5]
+ boost/python/numpy/ufunc.hpp [3:5]
+ boost/python/object/class_metadata.hpp [3:5]
+ boost/ratio/detail/mpl/abs.hpp [5:7]
+ boost/ratio/detail/mpl/gcd.hpp [5:7]
+ boost/ratio/detail/mpl/lcm.hpp [5:7]
+ boost/ratio/detail/mpl/sign.hpp [5:7]
+ boost/test/impl/test_framework_init_observer.ipp [2:4]
+ boost/test/test_framework_init_observer.hpp [2:4]
+ libs/python/src/numpy/dtype.cpp [3:5]
+ libs/python/src/numpy/matrix.cpp [3:5]
+ libs/python/src/numpy/ndarray.cpp [3:5]
+ libs/python/src/numpy/numpy.cpp [3:5]
+ libs/python/src/numpy/scalars.cpp [3:5]
+ libs/python/src/numpy/ufunc.cpp [3:5]
+
+KEEP BSL-1.0 2d0ff12029b5a0864e69427697633f03
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/adaptor/indexed.hpp at line 6
+ License text:
+ // Use, modification and distribution is subject to the Boost Software License,
+ // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/range/adaptor/indexed.hpp [5:7]
+
+KEEP BSL-1.0 2d55719f98bbe62f68a3838e1b53ad94
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/geometry/srs/projections/proj/gstmerc.hpp at line 14
+ License text:
+ // Use, modification and distribution is subject to the Boost Software License,
+ // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/geometry/srs/projections/proj/gstmerc.hpp [13:15]
+
+KEEP BSL-1.0 2d6ab63dc95009634a63de40db7de32e
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/detail/mutex.hpp at line 8
+ License text:
+ // Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/container/detail/mutex.hpp [6:8]
+
+KEEP BSL-1.0 2e471ec5429d12b5840cf0c8decb7941
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/concurrent_queues/deque_adaptor.hpp at line 8, boost/thread/concurrent_queues/deque_base.hpp at line 8, boost/thread/concurrent_queues/deque_views.hpp at line 8, boost/thread/concurrent_queues/queue_adaptor.hpp at line 8, boost/thread/concurrent_queues/queue_base.hpp at line 8, boost/thread/concurrent_queues/queue_op_status.hpp at line 8, boost/thread/concurrent_queues/queue_views.hpp at line 8, boost/thread/experimental/config/inline_namespace.hpp at line 8, boost/thread/experimental/exception_list.hpp at line 8, boost/thread/experimental/parallel/v1/exception_list.hpp at line 8, boost/thread/experimental/parallel/v1/inline_namespace.hpp at line 8, boost/thread/experimental/parallel/v2/inline_namespace.hpp at line 8, boost/thread/experimental/task_region.hpp at line 8
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/thread/concurrent_queues/deque_adaptor.hpp [6:8]
+ boost/thread/concurrent_queues/deque_base.hpp [6:8]
+ boost/thread/concurrent_queues/deque_views.hpp [6:8]
+ boost/thread/concurrent_queues/queue_adaptor.hpp [6:8]
+ boost/thread/concurrent_queues/queue_base.hpp [6:8]
+ boost/thread/concurrent_queues/queue_op_status.hpp [6:8]
+ boost/thread/concurrent_queues/queue_views.hpp [6:8]
+ boost/thread/experimental/config/inline_namespace.hpp [6:8]
+ boost/thread/experimental/exception_list.hpp [6:8]
+ boost/thread/experimental/parallel/v1/exception_list.hpp [6:8]
+ boost/thread/experimental/parallel/v1/inline_namespace.hpp [6:8]
+ boost/thread/experimental/parallel/v2/inline_namespace.hpp [6:8]
+ boost/thread/experimental/task_region.hpp [6:8]
+
+KEEP BSL-1.0 2f8abd22762c4abb1562c53c6171e2b7
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/spirit/home/karma/stream/detail/iterator_sink.hpp at line 4
+ License text:
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
+ // file LICENSE_1_0.txt or copy at http://www.boist.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.30
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/spirit/home/karma/stream/detail/iterator_sink.hpp [3:4]
+
+KEEP BSL-1.0 304c8552dc56cab871c2de4763ff6fc9
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/detail/math_functions.hpp at line 7, boost/interprocess/detail/math_functions.hpp at line 7
+ License text:
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/container/detail/math_functions.hpp [6:8]
+ boost/interprocess/detail/math_functions.hpp [6:8]
+
+KEEP BSL-1.0 305e9dd5dbce133b82679ef0a4cf2c0d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/msm/back/fold_to_list.hpp at line 7
+ License text:
+ // Copyright 2008 Eric Niebler. Distributed
+ // under the Boost Software License, Version 1.0. (See accompanying
+ // file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/msm/back/fold_to_list.hpp [5:8]
+
+KEEP BSL-1.0 31439101f50cb5506911fc6b6c9cff76
+BELONGS libs/chrono/ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/laps_accumulator_set.hpp at line 4, libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/laps_sequence_container.hpp at line 4, libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/last_lap.hpp at line 4, libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/no_memory.hpp at line 4, libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/clock_default_formatter.hpp at line 4, libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/laps_accumulator_set_stopwatch_default_formatter.hpp at line 4, libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/laps_stopclock.hpp at line 4, libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/laps_stopwatch_default_formatter.hpp at line 5, libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/process_default_formatter.hpp at line 5, libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/stopclock.hpp at line 4, libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/stopwatch_reporter.hpp at line 4, libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/stopwatch_reporter_default_formatter.hpp at line 4, libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/strict_stopclock.hpp at line 4, libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/system_default_formatter.hpp at line 4, libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/thread_default_formatter.hpp at line 4
+ License text:
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or
+ // copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/laps_accumulator_set.hpp [3:5]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/laps_sequence_container.hpp [3:5]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/last_lap.hpp [3:5]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/no_memory.hpp [3:5]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/clock_default_formatter.hpp [3:5]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/laps_accumulator_set_stopwatch_default_formatter.hpp [3:5]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/laps_stopclock.hpp [3:5]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/laps_stopwatch_default_formatter.hpp [4:6]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/process_default_formatter.hpp [4:6]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/stopclock.hpp [3:5]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/stopwatch_reporter.hpp [3:5]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/stopwatch_reporter_default_formatter.hpp [3:5]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/strict_stopclock.hpp [3:5]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/system_default_formatter.hpp [3:5]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/thread_default_formatter.hpp [3:5]
+
+KEEP BSL-1.0 31b5f7cf1ea991a6516437dc785d8c86
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/move/algo/detail/is_sorted.hpp at line 7
+ License text:
+ // (C) Copyright Ion Gaztanaga 2017-2018. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/move/algo/detail/is_sorted.hpp [5:7]
+
+SKIP LicenseRef-scancode-unknown-license-reference 3257251aa1e704634f03c869b6fe90d3
+BELONGS ya.make
+ License text:
+ // Distributed under the same license as the original.
+ Scancode info:
+ Original SPDX id: LicenseRef-scancode-unknown-license-reference
+ Score : 11.00
+ Match type : INTRO
+ Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/unknown-license-reference.LICENSE
+ Files with this license:
+ boost/msm/active_state_switching_policies.hpp [4:4]
+ boost/msm/back/args.hpp [4:4]
+ boost/msm/back/bind_helpers.hpp [4:4]
+ boost/msm/back/common_types.hpp [4:4]
+ boost/msm/back/copy_policies.hpp [4:4]
+ boost/msm/back/default_compile_policy.hpp [4:4]
+ boost/msm/back/dispatch_table.hpp [4:4]
+ boost/msm/back/favor_compile_time.hpp [4:4]
+ boost/msm/back/history_policies.hpp [4:4]
+ boost/msm/back/metafunctions.hpp [4:4]
+ boost/msm/back/mpl_graph_fsm_check.hpp [4:4]
+ boost/msm/back/no_fsm_check.hpp [4:4]
+ boost/msm/back/queue_container_circular.hpp [4:4]
+ boost/msm/back/queue_container_deque.hpp [4:4]
+ boost/msm/back/state_machine.hpp [4:4]
+ boost/msm/back/tools.hpp [4:4]
+ boost/msm/common.hpp [4:4]
+ boost/msm/event_traits.hpp [4:4]
+ boost/msm/front/common_states.hpp [4:4]
+ boost/msm/front/completion_event.hpp [4:4]
+ boost/msm/front/detail/common_states.hpp [4:4]
+ boost/msm/front/detail/row2_helper.hpp [4:4]
+ boost/msm/front/euml/algorithm.hpp [4:4]
+ boost/msm/front/euml/common.hpp [4:4]
+ boost/msm/front/euml/container.hpp [4:4]
+ boost/msm/front/euml/euml.hpp [4:4]
+ boost/msm/front/euml/euml_typeof.hpp [4:4]
+ boost/msm/front/euml/guard_grammar.hpp [4:4]
+ boost/msm/front/euml/iteration.hpp [4:4]
+ boost/msm/front/euml/operator.hpp [4:4]
+ boost/msm/front/euml/phoenix_placeholders.hpp [4:4]
+ boost/msm/front/euml/querying.hpp [4:4]
+ boost/msm/front/euml/state_grammar.hpp [4:4]
+ boost/msm/front/euml/stl.hpp [4:4]
+ boost/msm/front/euml/stt_grammar.hpp [4:4]
+ boost/msm/front/euml/transformation.hpp [4:4]
+ boost/msm/front/functor_row.hpp [4:4]
+ boost/msm/front/internal_row.hpp [4:4]
+ boost/msm/front/row2.hpp [4:4]
+ boost/msm/front/state_machine_def.hpp [4:4]
+ boost/msm/front/states.hpp [4:4]
+ boost/msm/msm_grammar.hpp [4:4]
+ boost/msm/proto_config.hpp [4:4]
+ boost/msm/row_tags.hpp [4:4]
+
+KEEP BSL-1.0 AND BSL-1.0 33fc845ed42b9e0c4f3b191ad7caac10
+BELONGS ya.make
+ License text:
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENCE.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 59.26
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/icl/associative_element_container.hpp [4:6]
+ boost/icl/associative_interval_container.hpp [4:6]
+ boost/icl/closed_interval.hpp [4:6]
+ boost/icl/concept/comparable.hpp [4:6]
+ boost/icl/concept/container.hpp [4:6]
+ boost/icl/concept/element_associator.hpp [4:6]
+ boost/icl/concept/element_map.hpp [4:6]
+ boost/icl/concept/element_set.hpp [4:6]
+ boost/icl/concept/element_set_value.hpp [4:6]
+ boost/icl/concept/interval.hpp [4:6]
+ boost/icl/concept/interval_associator.hpp [4:6]
+ boost/icl/concept/interval_associator_base.hpp [4:6]
+ boost/icl/concept/interval_bounds.hpp [4:6]
+ boost/icl/concept/interval_map.hpp [4:6]
+ boost/icl/concept/interval_set.hpp [4:6]
+ boost/icl/concept/interval_set_value.hpp [4:6]
+ boost/icl/concept/joinable.hpp [4:6]
+ boost/icl/concept/map_value.hpp [4:6]
+ boost/icl/concept/set_value.hpp [4:6]
+ boost/icl/continuous_interval.hpp [4:6]
+ boost/icl/detail/associated_value.hpp [4:6]
+ boost/icl/detail/boost_config.hpp [4:6]
+ boost/icl/detail/concept_check.hpp [4:6]
+ boost/icl/detail/design_config.hpp [5:7]
+ boost/icl/detail/element_comparer.hpp [4:6]
+ boost/icl/detail/element_iterator.hpp [4:6]
+ boost/icl/detail/exclusive_less_than.hpp [4:6]
+ boost/icl/detail/interval_map_algo.hpp [4:6]
+ boost/icl/detail/interval_morphism.hpp [4:6]
+ boost/icl/detail/interval_set_algo.hpp [4:6]
+ boost/icl/detail/interval_subset_comparer.hpp [4:6]
+ boost/icl/detail/map_algo.hpp [4:6]
+ boost/icl/detail/mapped_reference.hpp [4:6]
+ boost/icl/detail/notate.hpp [6:8]
+ boost/icl/detail/on_absorbtion.hpp [4:6]
+ boost/icl/detail/relation_state.hpp [5:7]
+ boost/icl/detail/set_algo.hpp [6:8]
+ boost/icl/detail/std_set.hpp [4:6]
+ boost/icl/detail/subset_comparer.hpp [4:6]
+ boost/icl/discrete_interval.hpp [4:6]
+ boost/icl/dynamic_interval_traits.hpp [4:6]
+ boost/icl/functors.hpp [4:6]
+ boost/icl/gregorian.hpp [4:6]
+ boost/icl/impl_config.hpp [5:7]
+ boost/icl/interval.hpp [4:6]
+ boost/icl/interval_base_map.hpp [5:7]
+ boost/icl/interval_base_set.hpp [5:7]
+ boost/icl/interval_bounds.hpp [4:6]
+ boost/icl/interval_combining_style.hpp [4:6]
+ boost/icl/interval_map.hpp [4:6]
+ boost/icl/interval_set.hpp [5:7]
+ boost/icl/interval_traits.hpp [4:6]
+ boost/icl/iterator.hpp [4:6]
+ boost/icl/left_open_interval.hpp [4:6]
+ boost/icl/map.hpp [4:6]
+ boost/icl/open_interval.hpp [4:6]
+ boost/icl/predicates/distinct_equal.hpp [4:6]
+ boost/icl/predicates/element_equal.hpp [4:6]
+ boost/icl/predicates/std_equal.hpp [4:6]
+ boost/icl/predicates/sub_super_set.hpp [4:6]
+ boost/icl/ptime.hpp [4:6]
+ boost/icl/rational.hpp [4:6]
+ boost/icl/right_open_interval.hpp [4:6]
+ boost/icl/separate_interval_set.hpp [4:6]
+ boost/icl/set.hpp [4:6]
+ boost/icl/split_interval_map.hpp [5:7]
+ boost/icl/split_interval_set.hpp [5:7]
+ boost/icl/type_traits/absorbs_identities.hpp [4:6]
+ boost/icl/type_traits/adds_inversely.hpp [4:6]
+ boost/icl/type_traits/codomain_type_of.hpp [4:6]
+ boost/icl/type_traits/difference.hpp [4:6]
+ boost/icl/type_traits/difference_type_of.hpp [4:6]
+ boost/icl/type_traits/domain_type_of.hpp [4:6]
+ boost/icl/type_traits/element_type_of.hpp [4:6]
+ boost/icl/type_traits/has_inverse.hpp [4:6]
+ boost/icl/type_traits/has_set_semantics.hpp [4:6]
+ boost/icl/type_traits/identity_element.hpp [4:6]
+ boost/icl/type_traits/infinity.hpp [4:6]
+ boost/icl/type_traits/interval_type_default.hpp [4:6]
+ boost/icl/type_traits/interval_type_of.hpp [4:6]
+ boost/icl/type_traits/is_associative_element_container.hpp [4:6]
+ boost/icl/type_traits/is_asymmetric_interval.hpp [4:6]
+ boost/icl/type_traits/is_combinable.hpp [4:6]
+ boost/icl/type_traits/is_concept_equivalent.hpp [4:6]
+ boost/icl/type_traits/is_container.hpp [4:6]
+ boost/icl/type_traits/is_continuous.hpp [4:6]
+ boost/icl/type_traits/is_continuous_interval.hpp [4:6]
+ boost/icl/type_traits/is_discrete.hpp [4:6]
+ boost/icl/type_traits/is_discrete_interval.hpp [4:6]
+ boost/icl/type_traits/is_element_container.hpp [4:6]
+ boost/icl/type_traits/is_icl_container.hpp [4:6]
+ boost/icl/type_traits/is_increasing.hpp [4:6]
+ boost/icl/type_traits/is_interval.hpp [4:6]
+ boost/icl/type_traits/is_interval_container.hpp [4:6]
+ boost/icl/type_traits/is_interval_joiner.hpp [4:6]
+ boost/icl/type_traits/is_interval_separator.hpp [4:6]
+ boost/icl/type_traits/is_interval_splitter.hpp [4:6]
+ boost/icl/type_traits/is_key_container_of.hpp [4:6]
+ boost/icl/type_traits/is_map.hpp [4:6]
+ boost/icl/type_traits/is_numeric.hpp [4:6]
+ boost/icl/type_traits/is_set.hpp [4:6]
+ boost/icl/type_traits/is_total.hpp [4:6]
+ boost/icl/type_traits/no_type.hpp [4:6]
+ boost/icl/type_traits/predicate.hpp [4:6]
+ boost/icl/type_traits/rep_type_of.hpp [4:6]
+ boost/icl/type_traits/segment_type_of.hpp [4:6]
+ boost/icl/type_traits/size.hpp [4:6]
+ boost/icl/type_traits/size_type_of.hpp [4:6]
+ boost/icl/type_traits/succ_pred.hpp [4:6]
+ boost/icl/type_traits/to_string.hpp [6:8]
+ boost/icl/type_traits/type_to_string.hpp [4:6]
+ boost/icl/type_traits/unit_element.hpp [4:6]
+ boost/icl/type_traits/value_size.hpp [6:8]
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 72.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/icl/associative_element_container.hpp [4:6]
+ boost/icl/associative_interval_container.hpp [4:6]
+ boost/icl/closed_interval.hpp [4:6]
+ boost/icl/concept/comparable.hpp [4:6]
+ boost/icl/concept/container.hpp [4:6]
+ boost/icl/concept/element_associator.hpp [4:6]
+ boost/icl/concept/element_map.hpp [4:6]
+ boost/icl/concept/element_set.hpp [4:6]
+ boost/icl/concept/element_set_value.hpp [4:6]
+ boost/icl/concept/interval.hpp [4:6]
+ boost/icl/concept/interval_associator.hpp [4:6]
+ boost/icl/concept/interval_associator_base.hpp [4:6]
+ boost/icl/concept/interval_bounds.hpp [4:6]
+ boost/icl/concept/interval_map.hpp [4:6]
+ boost/icl/concept/interval_set.hpp [4:6]
+ boost/icl/concept/interval_set_value.hpp [4:6]
+ boost/icl/concept/joinable.hpp [4:6]
+ boost/icl/concept/map_value.hpp [4:6]
+ boost/icl/concept/set_value.hpp [4:6]
+ boost/icl/continuous_interval.hpp [4:6]
+ boost/icl/detail/associated_value.hpp [4:6]
+ boost/icl/detail/boost_config.hpp [4:6]
+ boost/icl/detail/concept_check.hpp [4:6]
+ boost/icl/detail/design_config.hpp [5:7]
+ boost/icl/detail/element_comparer.hpp [4:6]
+ boost/icl/detail/element_iterator.hpp [4:6]
+ boost/icl/detail/exclusive_less_than.hpp [4:6]
+ boost/icl/detail/interval_map_algo.hpp [4:6]
+ boost/icl/detail/interval_morphism.hpp [4:6]
+ boost/icl/detail/interval_set_algo.hpp [4:6]
+ boost/icl/detail/interval_subset_comparer.hpp [4:6]
+ boost/icl/detail/map_algo.hpp [4:6]
+ boost/icl/detail/mapped_reference.hpp [4:6]
+ boost/icl/detail/notate.hpp [6:8]
+ boost/icl/detail/on_absorbtion.hpp [4:6]
+ boost/icl/detail/relation_state.hpp [5:7]
+ boost/icl/detail/set_algo.hpp [6:8]
+ boost/icl/detail/std_set.hpp [4:6]
+ boost/icl/detail/subset_comparer.hpp [4:6]
+ boost/icl/discrete_interval.hpp [4:6]
+ boost/icl/dynamic_interval_traits.hpp [4:6]
+ boost/icl/functors.hpp [4:6]
+ boost/icl/gregorian.hpp [4:6]
+ boost/icl/impl_config.hpp [5:7]
+ boost/icl/interval.hpp [4:6]
+ boost/icl/interval_base_map.hpp [5:7]
+ boost/icl/interval_base_set.hpp [5:7]
+ boost/icl/interval_bounds.hpp [4:6]
+ boost/icl/interval_combining_style.hpp [4:6]
+ boost/icl/interval_map.hpp [4:6]
+ boost/icl/interval_set.hpp [5:7]
+ boost/icl/interval_traits.hpp [4:6]
+ boost/icl/iterator.hpp [4:6]
+ boost/icl/left_open_interval.hpp [4:6]
+ boost/icl/map.hpp [4:6]
+ boost/icl/open_interval.hpp [4:6]
+ boost/icl/predicates/distinct_equal.hpp [4:6]
+ boost/icl/predicates/element_equal.hpp [4:6]
+ boost/icl/predicates/std_equal.hpp [4:6]
+ boost/icl/predicates/sub_super_set.hpp [4:6]
+ boost/icl/ptime.hpp [4:6]
+ boost/icl/rational.hpp [4:6]
+ boost/icl/right_open_interval.hpp [4:6]
+ boost/icl/separate_interval_set.hpp [4:6]
+ boost/icl/set.hpp [4:6]
+ boost/icl/split_interval_map.hpp [5:7]
+ boost/icl/split_interval_set.hpp [5:7]
+ boost/icl/type_traits/absorbs_identities.hpp [4:6]
+ boost/icl/type_traits/adds_inversely.hpp [4:6]
+ boost/icl/type_traits/codomain_type_of.hpp [4:6]
+ boost/icl/type_traits/difference.hpp [4:6]
+ boost/icl/type_traits/difference_type_of.hpp [4:6]
+ boost/icl/type_traits/domain_type_of.hpp [4:6]
+ boost/icl/type_traits/element_type_of.hpp [4:6]
+ boost/icl/type_traits/has_inverse.hpp [4:6]
+ boost/icl/type_traits/has_set_semantics.hpp [4:6]
+ boost/icl/type_traits/identity_element.hpp [4:6]
+ boost/icl/type_traits/infinity.hpp [4:6]
+ boost/icl/type_traits/interval_type_default.hpp [4:6]
+ boost/icl/type_traits/interval_type_of.hpp [4:6]
+ boost/icl/type_traits/is_associative_element_container.hpp [4:6]
+ boost/icl/type_traits/is_asymmetric_interval.hpp [4:6]
+ boost/icl/type_traits/is_combinable.hpp [4:6]
+ boost/icl/type_traits/is_concept_equivalent.hpp [4:6]
+ boost/icl/type_traits/is_container.hpp [4:6]
+ boost/icl/type_traits/is_continuous.hpp [4:6]
+ boost/icl/type_traits/is_continuous_interval.hpp [4:6]
+ boost/icl/type_traits/is_discrete.hpp [4:6]
+ boost/icl/type_traits/is_discrete_interval.hpp [4:6]
+ boost/icl/type_traits/is_element_container.hpp [4:6]
+ boost/icl/type_traits/is_icl_container.hpp [4:6]
+ boost/icl/type_traits/is_increasing.hpp [4:6]
+ boost/icl/type_traits/is_interval.hpp [4:6]
+ boost/icl/type_traits/is_interval_container.hpp [4:6]
+ boost/icl/type_traits/is_interval_joiner.hpp [4:6]
+ boost/icl/type_traits/is_interval_separator.hpp [4:6]
+ boost/icl/type_traits/is_interval_splitter.hpp [4:6]
+ boost/icl/type_traits/is_key_container_of.hpp [4:6]
+ boost/icl/type_traits/is_map.hpp [4:6]
+ boost/icl/type_traits/is_numeric.hpp [4:6]
+ boost/icl/type_traits/is_set.hpp [4:6]
+ boost/icl/type_traits/is_total.hpp [4:6]
+ boost/icl/type_traits/no_type.hpp [4:6]
+ boost/icl/type_traits/predicate.hpp [4:6]
+ boost/icl/type_traits/rep_type_of.hpp [4:6]
+ boost/icl/type_traits/segment_type_of.hpp [4:6]
+ boost/icl/type_traits/size.hpp [4:6]
+ boost/icl/type_traits/size_type_of.hpp [4:6]
+ boost/icl/type_traits/succ_pred.hpp [4:6]
+ boost/icl/type_traits/to_string.hpp [6:8]
+ boost/icl/type_traits/type_to_string.hpp [4:6]
+ boost/icl/type_traits/unit_element.hpp [4:6]
+ boost/icl/type_traits/value_size.hpp [6:8]
+
+SKIP LicenseRef-scancode-unknown-license-reference 346344a00d161342f7e58de27d74c5b4
+BELONGS ya.make
+ License text:
+ // Copyright 2011 John Maddock. Distributed under the Boost
+ Scancode info:
+ Original SPDX id: LicenseRef-scancode-unknown-license-reference
+ Score : 11.00
+ Match type : INTRO
+ Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/unknown-license-reference.LICENSE
+ Files with this license:
+ boost/multiprecision/detail/functions/constants.hpp [1:1]
+ boost/multiprecision/detail/functions/trig.hpp [3:3]
+
+KEEP BSL-1.0 3483ad6500a5ec5c1eed3d256900b057
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/boykov_kolmogorov_max_flow.hpp at line 29, boost/graph/write_dimacs.hpp at line 29
+ License text:
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/graph/boykov_kolmogorov_max_flow.hpp [28:30]
+ boost/graph/write_dimacs.hpp [28:30]
+
+KEEP BSL-1.0 35406de8a58b639b59f98aff7f113718
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/concurrent_queues/sync_bounded_queue.hpp at line 8, boost/thread/concurrent_queues/sync_deque.hpp at line 8, boost/thread/concurrent_queues/sync_queue.hpp at line 8, boost/thread/sync_bounded_queue.hpp at line 8, boost/thread/sync_queue.hpp at line 8
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/thread/concurrent_queues/sync_bounded_queue.hpp [6:8]
+ boost/thread/concurrent_queues/sync_deque.hpp [6:8]
+ boost/thread/concurrent_queues/sync_queue.hpp [6:8]
+ boost/thread/sync_bounded_queue.hpp [6:8]
+ boost/thread/sync_queue.hpp [6:8]
+
+KEEP BSL-1.0 35e6ad25ab77c8494504ce9164a0c424
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/detail/remove_extent.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/range/detail/remove_extent.hpp [3:6]
+
+KEEP BSL-1.0 367057ccd06eefdae0d0832b1147fc90
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/category.hpp at line 5, boost/range/distance.hpp at line 5, boost/range/functions.hpp at line 5, boost/range/pointer.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/range/category.hpp [3:6]
+ boost/range/distance.hpp [3:6]
+ boost/range/functions.hpp [3:6]
+ boost/range/pointer.hpp [3:6]
+
+KEEP BSL-1.0 3710ab6c91fd312a2333398b653684bb
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/r_c_shortest_paths.hpp at line 5
+ License text:
+ // Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/accumulators/statistics/rolling_mean.hpp [5:7]
- boost/accumulators/statistics/rolling_moment.hpp [5:7]
- boost/accumulators/statistics/rolling_variance.hpp [5:7]
- boost/bimap.hpp [5:7]
- boost/bimap/bimap.hpp [5:7]
- boost/bimap/container_adaptor/associative_container_adaptor.hpp [5:7]
- boost/bimap/container_adaptor/container_adaptor.hpp [5:7]
- boost/bimap/container_adaptor/detail/comparison_adaptor.hpp [5:7]
- boost/bimap/container_adaptor/detail/functor_bag.hpp [5:7]
- boost/bimap/container_adaptor/detail/identity_converters.hpp [5:7]
- boost/bimap/container_adaptor/detail/key_extractor.hpp [5:7]
- boost/bimap/container_adaptor/detail/non_unique_container_helper.hpp [5:7]
- boost/bimap/container_adaptor/list_adaptor.hpp [5:7]
- boost/bimap/container_adaptor/list_map_adaptor.hpp [5:7]
- boost/bimap/container_adaptor/map_adaptor.hpp [5:7]
- boost/bimap/container_adaptor/multimap_adaptor.hpp [5:7]
- boost/bimap/container_adaptor/multiset_adaptor.hpp [5:7]
- boost/bimap/container_adaptor/ordered_associative_container_adaptor.hpp [5:7]
- boost/bimap/container_adaptor/sequence_container_adaptor.hpp [5:7]
- boost/bimap/container_adaptor/set_adaptor.hpp [5:7]
- boost/bimap/container_adaptor/support/iterator_facade_converters.hpp [5:7]
- boost/bimap/container_adaptor/unordered_associative_container_adaptor.hpp [5:7]
- boost/bimap/container_adaptor/unordered_map_adaptor.hpp [5:7]
- boost/bimap/container_adaptor/unordered_multimap_adaptor.hpp [5:7]
- boost/bimap/container_adaptor/unordered_multiset_adaptor.hpp [5:7]
- boost/bimap/container_adaptor/unordered_set_adaptor.hpp [5:7]
- boost/bimap/container_adaptor/vector_adaptor.hpp [5:7]
- boost/bimap/container_adaptor/vector_map_adaptor.hpp [5:7]
- boost/bimap/detail/bimap_core.hpp [5:7]
- boost/bimap/detail/concept_tags.hpp [5:7]
- boost/bimap/detail/debug/static_error.hpp [5:7]
- boost/bimap/detail/generate_index_binder.hpp [5:7]
- boost/bimap/detail/generate_relation_binder.hpp [5:7]
- boost/bimap/detail/generate_view_binder.hpp [5:7]
- boost/bimap/detail/is_set_type_of.hpp [5:7]
- boost/bimap/detail/manage_additional_parameters.hpp [5:7]
- boost/bimap/detail/manage_bimap_key.hpp [5:7]
- boost/bimap/detail/map_view_base.hpp [5:7]
- boost/bimap/detail/map_view_iterator.hpp [5:7]
- boost/bimap/detail/modifier_adaptor.hpp [5:7]
- boost/bimap/detail/non_unique_views_helper.hpp [5:7]
- boost/bimap/detail/set_view_base.hpp [5:7]
- boost/bimap/detail/set_view_iterator.hpp [5:7]
- boost/bimap/detail/test/check_metadata.hpp [5:7]
- boost/bimap/detail/user_interface_config.hpp [5:7]
- boost/bimap/list_of.hpp [5:7]
- boost/bimap/multiset_of.hpp [5:7]
- boost/bimap/property_map/set_support.hpp [5:7]
- boost/bimap/property_map/unordered_set_support.hpp [5:7]
- boost/bimap/relation/detail/access_builder.hpp [5:7]
- boost/bimap/relation/detail/metadata_access_builder.hpp [5:7]
- boost/bimap/relation/detail/mutant.hpp [5:7]
- boost/bimap/relation/detail/static_access_builder.hpp [5:7]
- boost/bimap/relation/detail/to_mutable_relation_functor.hpp [5:7]
- boost/bimap/relation/member_at.hpp [5:7]
- boost/bimap/relation/mutant_relation.hpp [5:7]
- boost/bimap/relation/pair_layout.hpp [5:7]
- boost/bimap/relation/structured_pair.hpp [5:7]
- boost/bimap/relation/support/data_extractor.hpp [5:7]
- boost/bimap/relation/support/get.hpp [5:7]
- boost/bimap/relation/support/get_pair_functor.hpp [5:7]
- boost/bimap/relation/support/is_tag_of_member_at.hpp [5:7]
- boost/bimap/relation/support/member_with_tag.hpp [5:7]
- boost/bimap/relation/support/opposite_tag.hpp [5:7]
- boost/bimap/relation/support/pair_by.hpp [5:7]
- boost/bimap/relation/support/pair_type_by.hpp [5:7]
- boost/bimap/relation/support/value_type_of.hpp [5:7]
- boost/bimap/relation/symmetrical_base.hpp [5:7]
- boost/bimap/set_of.hpp [5:7]
- boost/bimap/support/data_type_by.hpp [5:7]
- boost/bimap/support/iterator_type_by.hpp [5:7]
- boost/bimap/support/key_type_by.hpp [5:7]
- boost/bimap/support/lambda.hpp [5:7]
- boost/bimap/support/map_by.hpp [5:7]
- boost/bimap/support/map_type_by.hpp [5:7]
- boost/bimap/support/value_type_by.hpp [5:7]
- boost/bimap/tags/support/apply_to_value_type.hpp [5:7]
- boost/bimap/tags/support/default_tagged.hpp [5:7]
- boost/bimap/tags/support/is_tagged.hpp [5:7]
- boost/bimap/tags/support/overwrite_tagged.hpp [5:7]
- boost/bimap/tags/support/tag_of.hpp [5:7]
- boost/bimap/tags/support/value_type_of.hpp [5:7]
- boost/bimap/tags/tagged.hpp [5:7]
- boost/bimap/unconstrained_set_of.hpp [5:7]
- boost/bimap/unordered_multiset_of.hpp [5:7]
- boost/bimap/unordered_set_of.hpp [5:7]
- boost/bimap/vector_of.hpp [5:7]
- boost/bimap/views/list_map_view.hpp [5:7]
- boost/bimap/views/list_set_view.hpp [5:7]
- boost/bimap/views/map_view.hpp [5:7]
- boost/bimap/views/multimap_view.hpp [5:7]
- boost/bimap/views/multiset_view.hpp [5:7]
- boost/bimap/views/set_view.hpp [5:7]
- boost/bimap/views/unconstrained_map_view.hpp [5:7]
- boost/bimap/views/unconstrained_set_view.hpp [5:7]
- boost/bimap/views/unordered_map_view.hpp [5:7]
- boost/bimap/views/unordered_multimap_view.hpp [5:7]
- boost/bimap/views/unordered_multiset_view.hpp [5:7]
- boost/bimap/views/unordered_set_view.hpp [5:7]
- boost/bimap/views/vector_map_view.hpp [5:7]
- boost/bimap/views/vector_set_view.hpp [5:7]
- boost/container/detail/algorithm.hpp [5:7]
- boost/container/detail/construct_in_place.hpp [5:7]
- boost/container/detail/destroyers.hpp [5:7]
- boost/container/detail/iterator.hpp [5:7]
- boost/container/detail/iterators.hpp [6:8]
- boost/container/detail/mpl.hpp [5:7]
- boost/container/detail/pair.hpp [5:7]
- boost/container/detail/transform_iterator.hpp [6:8]
- boost/container/detail/type_traits.hpp [5:7]
- boost/container/detail/value_init.hpp [5:7]
- boost/container/stable_vector.hpp [13:15]
- boost/geometry/algorithms/detail/envelope/box.hpp [14:16]
- boost/geometry/algorithms/detail/envelope/implementation.hpp [16:18]
- boost/geometry/algorithms/detail/envelope/initialize.hpp [7:9]
- boost/geometry/algorithms/detail/envelope/interface.hpp [17:19]
- boost/geometry/algorithms/detail/envelope/intersects_antimeridian.hpp [7:9]
- boost/geometry/algorithms/detail/envelope/linear.hpp [13:15]
- boost/geometry/algorithms/detail/envelope/multipoint.hpp [9:11]
- boost/geometry/algorithms/detail/envelope/point.hpp [14:16]
- boost/geometry/algorithms/detail/envelope/range.hpp [16:18]
- boost/geometry/algorithms/detail/envelope/range_of_boxes.hpp [9:11]
- boost/geometry/algorithms/detail/envelope/segment.hpp [14:16]
- boost/geometry/algorithms/detail/envelope/transform_units.hpp [7:9]
- boost/geometry/algorithms/detail/expand/box.hpp [15:17]
- boost/geometry/algorithms/detail/expand/implementation.hpp [16:18]
- boost/geometry/algorithms/detail/expand/indexed.hpp [18:20]
- boost/geometry/algorithms/detail/expand/interface.hpp [17:19]
- boost/geometry/algorithms/detail/expand/point.hpp [18:20]
- boost/geometry/algorithms/detail/expand/segment.hpp [15:17]
- boost/geometry/algorithms/detail/expand_by_epsilon.hpp [7:9]
- boost/geometry/algorithms/dispatch/envelope.hpp [15:17]
- boost/geometry/algorithms/dispatch/expand.hpp [17:19]
- boost/geometry/algorithms/envelope.hpp [15:17]
- boost/geometry/algorithms/expand.hpp [16:18]
- boost/graph/bc_clustering.hpp [3:5]
- boost/graph/betweenness_centrality.hpp [3:5]
- boost/graph/circle_layout.hpp [3:5]
- boost/graph/compressed_sparse_row_graph.hpp [3:5]
- boost/graph/detail/compressed_sparse_row_struct.hpp [3:5]
- boost/graph/detail/histogram_sort.hpp [3:5]
- boost/graph/detail/indexed_properties.hpp [3:5]
- boost/graph/detail/is_distributed_selector.hpp [3:5]
- boost/graph/detail/read_graphviz_new.hpp [3:5]
- boost/graph/detail/read_graphviz_spirit.hpp [3:5]
- boost/graph/distributed/betweenness_centrality.hpp [3:5]
- boost/graph/dominator_tree.hpp [4:6]
- boost/graph/erdos_renyi_generator.hpp [3:5]
- boost/graph/floyd_warshall_shortest.hpp [3:5]
- boost/graph/fruchterman_reingold.hpp [3:5]
- boost/graph/gursoy_atun_layout.hpp [3:5]
- boost/graph/kamada_kawai_spring_layout.hpp [3:5]
- boost/graph/loop_erased_random_walk.hpp [3:5]
- boost/graph/one_bit_color_map.hpp [3:5]
- boost/graph/page_rank.hpp [4:6]
- boost/graph/plod_generator.hpp [3:5]
- boost/graph/random_layout.hpp [3:5]
- boost/graph/random_spanning_tree.hpp [3:5]
- boost/graph/small_world_generator.hpp [3:5]
- boost/graph/topology.hpp [3:5]
- boost/graph/two_bit_color_map.hpp [3:5]
- boost/interprocess/detail/min_max.hpp [5:7]
- boost/interprocess/detail/move.hpp [4:6]
- boost/interprocess/detail/mpl.hpp [5:7]
- boost/interprocess/detail/pointer_type.hpp [6:8]
- boost/interprocess/detail/transform_iterator.hpp [6:8]
- boost/interprocess/detail/type_traits.hpp [5:7]
- boost/interprocess/detail/utilities.hpp [6:8]
- boost/interprocess/smart_ptr/deleter.hpp [5:7]
- boost/interprocess/smart_ptr/detail/sp_counted_base.hpp [5:7]
- boost/interprocess/smart_ptr/shared_ptr.hpp [8:10]
- boost/interprocess/smart_ptr/weak_ptr.hpp [7:9]
- boost/intrusive/detail/algorithm.hpp [5:7]
- boost/iterator/advance.hpp [3:5]
- boost/iterator/distance.hpp [3:5]
- boost/move/algo/adaptive_merge.hpp [4:6]
- boost/move/algo/adaptive_sort.hpp [4:6]
- boost/move/algo/detail/adaptive_sort_merge.hpp [4:6]
- boost/move/algo/detail/basic_op.hpp [4:6]
- boost/move/algo/detail/heap_sort.hpp [4:6]
- boost/move/algo/detail/insertion_sort.hpp [4:6]
- boost/move/algo/detail/merge.hpp [4:6]
- boost/move/algo/detail/merge_sort.hpp [4:6]
- boost/move/algo/detail/pdqsort.hpp [5:7]
- boost/move/algo/detail/set_difference.hpp [4:6]
- boost/move/algo/move.hpp [4:6]
- boost/move/algo/predicate.hpp [4:6]
- boost/move/algo/unique.hpp [4:6]
- boost/move/algorithm.hpp [4:6]
- boost/move/core.hpp [4:6]
- boost/move/detail/destruct_n.hpp [4:6]
- boost/move/detail/iterator_traits.hpp [4:6]
- boost/move/detail/meta_utils.hpp [4:6]
- boost/move/detail/meta_utils_core.hpp [4:6]
- boost/move/detail/move_helpers.hpp [4:6]
- boost/move/detail/type_traits.hpp [5:7]
- boost/move/detail/unique_ptr_meta_utils.hpp [4:6]
- boost/move/iterator.hpp [4:6]
- boost/move/move.hpp [5:7]
- boost/move/traits.hpp [4:6]
- boost/move/utility.hpp [4:6]
- boost/move/utility_core.hpp [4:6]
- boost/mpl/aux_/config/gpu.hpp [7:9]
- boost/mpl/eval_if.hpp [7:9]
- boost/mpl/get_tag.hpp [7:9]
- boost/mpl/numeric_cast.hpp [7:9]
- boost/mpl/string.hpp [7:9]
- boost/none.hpp [4:6]
- boost/property_tree/detail/ptree_implementation.hpp [5:7]
- boost/python/numpy.hpp [3:5]
- boost/python/numpy/dtype.hpp [3:5]
- boost/python/numpy/internal.hpp [3:5]
- boost/python/numpy/invoke_matching.hpp [3:5]
- boost/python/numpy/matrix.hpp [3:5]
- boost/python/numpy/ndarray.hpp [3:5]
- boost/python/numpy/numpy_object_mgr_traits.hpp [3:5]
- boost/python/numpy/scalars.hpp [3:5]
- boost/python/numpy/ufunc.hpp [3:5]
- boost/python/object/class_metadata.hpp [3:5]
- boost/ratio/detail/mpl/abs.hpp [5:7]
- boost/ratio/detail/mpl/gcd.hpp [5:7]
- boost/ratio/detail/mpl/lcm.hpp [5:7]
- boost/ratio/detail/mpl/sign.hpp [5:7]
- boost/test/impl/test_framework_init_observer.ipp [2:4]
- boost/test/test_framework_init_observer.hpp [2:4]
- libs/python/src/numpy/dtype.cpp [3:5]
- libs/python/src/numpy/matrix.cpp [3:5]
- libs/python/src/numpy/ndarray.cpp [3:5]
- libs/python/src/numpy/numpy.cpp [3:5]
- libs/python/src/numpy/scalars.cpp [3:5]
- libs/python/src/numpy/ufunc.cpp [3:5]
-
-KEEP BSL-1.0 2d0ff12029b5a0864e69427697633f03
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/adaptor/indexed.hpp at line 6
- License text:
- // Use, modification and distribution is subject to the Boost Software License,
- // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/range/adaptor/indexed.hpp [5:7]
-
-KEEP BSL-1.0 2d55719f98bbe62f68a3838e1b53ad94
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/geometry/srs/projections/proj/gstmerc.hpp at line 14
- License text:
- // Use, modification and distribution is subject to the Boost Software License,
- // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/geometry/srs/projections/proj/gstmerc.hpp [13:15]
-
-KEEP BSL-1.0 2d6ab63dc95009634a63de40db7de32e
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/detail/mutex.hpp at line 8
- License text:
- // Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/container/detail/mutex.hpp [6:8]
-
-KEEP BSL-1.0 2e471ec5429d12b5840cf0c8decb7941
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/concurrent_queues/deque_adaptor.hpp at line 8, boost/thread/concurrent_queues/deque_base.hpp at line 8, boost/thread/concurrent_queues/deque_views.hpp at line 8, boost/thread/concurrent_queues/queue_adaptor.hpp at line 8, boost/thread/concurrent_queues/queue_base.hpp at line 8, boost/thread/concurrent_queues/queue_op_status.hpp at line 8, boost/thread/concurrent_queues/queue_views.hpp at line 8, boost/thread/experimental/config/inline_namespace.hpp at line 8, boost/thread/experimental/exception_list.hpp at line 8, boost/thread/experimental/parallel/v1/exception_list.hpp at line 8, boost/thread/experimental/parallel/v1/inline_namespace.hpp at line 8, boost/thread/experimental/parallel/v2/inline_namespace.hpp at line 8, boost/thread/experimental/task_region.hpp at line 8
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/thread/concurrent_queues/deque_adaptor.hpp [6:8]
- boost/thread/concurrent_queues/deque_base.hpp [6:8]
- boost/thread/concurrent_queues/deque_views.hpp [6:8]
- boost/thread/concurrent_queues/queue_adaptor.hpp [6:8]
- boost/thread/concurrent_queues/queue_base.hpp [6:8]
- boost/thread/concurrent_queues/queue_op_status.hpp [6:8]
- boost/thread/concurrent_queues/queue_views.hpp [6:8]
- boost/thread/experimental/config/inline_namespace.hpp [6:8]
- boost/thread/experimental/exception_list.hpp [6:8]
- boost/thread/experimental/parallel/v1/exception_list.hpp [6:8]
- boost/thread/experimental/parallel/v1/inline_namespace.hpp [6:8]
- boost/thread/experimental/parallel/v2/inline_namespace.hpp [6:8]
- boost/thread/experimental/task_region.hpp [6:8]
-
-KEEP BSL-1.0 2f8abd22762c4abb1562c53c6171e2b7
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/spirit/home/karma/stream/detail/iterator_sink.hpp at line 4
- License text:
- // Distributed under the Boost Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at http://www.boist.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.30
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/spirit/home/karma/stream/detail/iterator_sink.hpp [3:4]
-
-KEEP BSL-1.0 304c8552dc56cab871c2de4763ff6fc9
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/detail/math_functions.hpp at line 7, boost/interprocess/detail/math_functions.hpp at line 7
- License text:
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/container/detail/math_functions.hpp [6:8]
- boost/interprocess/detail/math_functions.hpp [6:8]
-
-KEEP BSL-1.0 305e9dd5dbce133b82679ef0a4cf2c0d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/msm/back/fold_to_list.hpp at line 7
- License text:
- // Copyright 2008 Eric Niebler. Distributed
- // under the Boost Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/msm/back/fold_to_list.hpp [5:8]
-
-KEEP BSL-1.0 31439101f50cb5506911fc6b6c9cff76
-BELONGS libs/chrono/ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/laps_accumulator_set.hpp at line 4, libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/laps_sequence_container.hpp at line 4, libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/last_lap.hpp at line 4, libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/no_memory.hpp at line 4, libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/clock_default_formatter.hpp at line 4, libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/laps_accumulator_set_stopwatch_default_formatter.hpp at line 4, libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/laps_stopclock.hpp at line 4, libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/laps_stopwatch_default_formatter.hpp at line 5, libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/process_default_formatter.hpp at line 5, libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/stopclock.hpp at line 4, libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/stopwatch_reporter.hpp at line 4, libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/stopwatch_reporter_default_formatter.hpp at line 4, libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/strict_stopclock.hpp at line 4, libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/system_default_formatter.hpp at line 4, libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/thread_default_formatter.hpp at line 4
- License text:
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or
- // copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/laps_accumulator_set.hpp [3:5]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/laps_sequence_container.hpp [3:5]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/last_lap.hpp [3:5]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/no_memory.hpp [3:5]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/clock_default_formatter.hpp [3:5]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/laps_accumulator_set_stopwatch_default_formatter.hpp [3:5]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/laps_stopclock.hpp [3:5]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/laps_stopwatch_default_formatter.hpp [4:6]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/process_default_formatter.hpp [4:6]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/stopclock.hpp [3:5]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/stopwatch_reporter.hpp [3:5]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/stopwatch_reporter_default_formatter.hpp [3:5]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/strict_stopclock.hpp [3:5]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/system_default_formatter.hpp [3:5]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/thread_default_formatter.hpp [3:5]
-
-KEEP BSL-1.0 31b5f7cf1ea991a6516437dc785d8c86
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/move/algo/detail/is_sorted.hpp at line 7
- License text:
- // (C) Copyright Ion Gaztanaga 2017-2018. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/move/algo/detail/is_sorted.hpp [5:7]
-
-SKIP LicenseRef-scancode-unknown-license-reference 3257251aa1e704634f03c869b6fe90d3
-BELONGS ya.make
- License text:
- // Distributed under the same license as the original.
- Scancode info:
- Original SPDX id: LicenseRef-scancode-unknown-license-reference
- Score : 11.00
- Match type : INTRO
- Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/unknown-license-reference.LICENSE
- Files with this license:
- boost/msm/active_state_switching_policies.hpp [4:4]
- boost/msm/back/args.hpp [4:4]
- boost/msm/back/bind_helpers.hpp [4:4]
- boost/msm/back/common_types.hpp [4:4]
- boost/msm/back/copy_policies.hpp [4:4]
- boost/msm/back/default_compile_policy.hpp [4:4]
- boost/msm/back/dispatch_table.hpp [4:4]
- boost/msm/back/favor_compile_time.hpp [4:4]
- boost/msm/back/history_policies.hpp [4:4]
- boost/msm/back/metafunctions.hpp [4:4]
- boost/msm/back/mpl_graph_fsm_check.hpp [4:4]
- boost/msm/back/no_fsm_check.hpp [4:4]
- boost/msm/back/queue_container_circular.hpp [4:4]
- boost/msm/back/queue_container_deque.hpp [4:4]
- boost/msm/back/state_machine.hpp [4:4]
- boost/msm/back/tools.hpp [4:4]
- boost/msm/common.hpp [4:4]
- boost/msm/event_traits.hpp [4:4]
- boost/msm/front/common_states.hpp [4:4]
- boost/msm/front/completion_event.hpp [4:4]
- boost/msm/front/detail/common_states.hpp [4:4]
- boost/msm/front/detail/row2_helper.hpp [4:4]
- boost/msm/front/euml/algorithm.hpp [4:4]
- boost/msm/front/euml/common.hpp [4:4]
- boost/msm/front/euml/container.hpp [4:4]
- boost/msm/front/euml/euml.hpp [4:4]
- boost/msm/front/euml/euml_typeof.hpp [4:4]
- boost/msm/front/euml/guard_grammar.hpp [4:4]
- boost/msm/front/euml/iteration.hpp [4:4]
- boost/msm/front/euml/operator.hpp [4:4]
- boost/msm/front/euml/phoenix_placeholders.hpp [4:4]
- boost/msm/front/euml/querying.hpp [4:4]
- boost/msm/front/euml/state_grammar.hpp [4:4]
- boost/msm/front/euml/stl.hpp [4:4]
- boost/msm/front/euml/stt_grammar.hpp [4:4]
- boost/msm/front/euml/transformation.hpp [4:4]
- boost/msm/front/functor_row.hpp [4:4]
- boost/msm/front/internal_row.hpp [4:4]
- boost/msm/front/row2.hpp [4:4]
- boost/msm/front/state_machine_def.hpp [4:4]
- boost/msm/front/states.hpp [4:4]
- boost/msm/msm_grammar.hpp [4:4]
- boost/msm/proto_config.hpp [4:4]
- boost/msm/row_tags.hpp [4:4]
-
-KEEP BSL-1.0 AND BSL-1.0 33fc845ed42b9e0c4f3b191ad7caac10
-BELONGS ya.make
- License text:
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENCE.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 59.26
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/icl/associative_element_container.hpp [4:6]
- boost/icl/associative_interval_container.hpp [4:6]
- boost/icl/closed_interval.hpp [4:6]
- boost/icl/concept/comparable.hpp [4:6]
- boost/icl/concept/container.hpp [4:6]
- boost/icl/concept/element_associator.hpp [4:6]
- boost/icl/concept/element_map.hpp [4:6]
- boost/icl/concept/element_set.hpp [4:6]
- boost/icl/concept/element_set_value.hpp [4:6]
- boost/icl/concept/interval.hpp [4:6]
- boost/icl/concept/interval_associator.hpp [4:6]
- boost/icl/concept/interval_associator_base.hpp [4:6]
- boost/icl/concept/interval_bounds.hpp [4:6]
- boost/icl/concept/interval_map.hpp [4:6]
- boost/icl/concept/interval_set.hpp [4:6]
- boost/icl/concept/interval_set_value.hpp [4:6]
- boost/icl/concept/joinable.hpp [4:6]
- boost/icl/concept/map_value.hpp [4:6]
- boost/icl/concept/set_value.hpp [4:6]
- boost/icl/continuous_interval.hpp [4:6]
- boost/icl/detail/associated_value.hpp [4:6]
- boost/icl/detail/boost_config.hpp [4:6]
- boost/icl/detail/concept_check.hpp [4:6]
- boost/icl/detail/design_config.hpp [5:7]
- boost/icl/detail/element_comparer.hpp [4:6]
- boost/icl/detail/element_iterator.hpp [4:6]
- boost/icl/detail/exclusive_less_than.hpp [4:6]
- boost/icl/detail/interval_map_algo.hpp [4:6]
- boost/icl/detail/interval_morphism.hpp [4:6]
- boost/icl/detail/interval_set_algo.hpp [4:6]
- boost/icl/detail/interval_subset_comparer.hpp [4:6]
- boost/icl/detail/map_algo.hpp [4:6]
- boost/icl/detail/mapped_reference.hpp [4:6]
- boost/icl/detail/notate.hpp [6:8]
- boost/icl/detail/on_absorbtion.hpp [4:6]
- boost/icl/detail/relation_state.hpp [5:7]
- boost/icl/detail/set_algo.hpp [6:8]
- boost/icl/detail/std_set.hpp [4:6]
- boost/icl/detail/subset_comparer.hpp [4:6]
- boost/icl/discrete_interval.hpp [4:6]
- boost/icl/dynamic_interval_traits.hpp [4:6]
- boost/icl/functors.hpp [4:6]
- boost/icl/gregorian.hpp [4:6]
- boost/icl/impl_config.hpp [5:7]
- boost/icl/interval.hpp [4:6]
- boost/icl/interval_base_map.hpp [5:7]
- boost/icl/interval_base_set.hpp [5:7]
- boost/icl/interval_bounds.hpp [4:6]
- boost/icl/interval_combining_style.hpp [4:6]
- boost/icl/interval_map.hpp [4:6]
- boost/icl/interval_set.hpp [5:7]
- boost/icl/interval_traits.hpp [4:6]
- boost/icl/iterator.hpp [4:6]
- boost/icl/left_open_interval.hpp [4:6]
- boost/icl/map.hpp [4:6]
- boost/icl/open_interval.hpp [4:6]
- boost/icl/predicates/distinct_equal.hpp [4:6]
- boost/icl/predicates/element_equal.hpp [4:6]
- boost/icl/predicates/std_equal.hpp [4:6]
- boost/icl/predicates/sub_super_set.hpp [4:6]
- boost/icl/ptime.hpp [4:6]
- boost/icl/rational.hpp [4:6]
- boost/icl/right_open_interval.hpp [4:6]
- boost/icl/separate_interval_set.hpp [4:6]
- boost/icl/set.hpp [4:6]
- boost/icl/split_interval_map.hpp [5:7]
- boost/icl/split_interval_set.hpp [5:7]
- boost/icl/type_traits/absorbs_identities.hpp [4:6]
- boost/icl/type_traits/adds_inversely.hpp [4:6]
- boost/icl/type_traits/codomain_type_of.hpp [4:6]
- boost/icl/type_traits/difference.hpp [4:6]
- boost/icl/type_traits/difference_type_of.hpp [4:6]
- boost/icl/type_traits/domain_type_of.hpp [4:6]
- boost/icl/type_traits/element_type_of.hpp [4:6]
- boost/icl/type_traits/has_inverse.hpp [4:6]
- boost/icl/type_traits/has_set_semantics.hpp [4:6]
- boost/icl/type_traits/identity_element.hpp [4:6]
- boost/icl/type_traits/infinity.hpp [4:6]
- boost/icl/type_traits/interval_type_default.hpp [4:6]
- boost/icl/type_traits/interval_type_of.hpp [4:6]
- boost/icl/type_traits/is_associative_element_container.hpp [4:6]
- boost/icl/type_traits/is_asymmetric_interval.hpp [4:6]
- boost/icl/type_traits/is_combinable.hpp [4:6]
- boost/icl/type_traits/is_concept_equivalent.hpp [4:6]
- boost/icl/type_traits/is_container.hpp [4:6]
- boost/icl/type_traits/is_continuous.hpp [4:6]
- boost/icl/type_traits/is_continuous_interval.hpp [4:6]
- boost/icl/type_traits/is_discrete.hpp [4:6]
- boost/icl/type_traits/is_discrete_interval.hpp [4:6]
- boost/icl/type_traits/is_element_container.hpp [4:6]
- boost/icl/type_traits/is_icl_container.hpp [4:6]
- boost/icl/type_traits/is_increasing.hpp [4:6]
- boost/icl/type_traits/is_interval.hpp [4:6]
- boost/icl/type_traits/is_interval_container.hpp [4:6]
- boost/icl/type_traits/is_interval_joiner.hpp [4:6]
- boost/icl/type_traits/is_interval_separator.hpp [4:6]
- boost/icl/type_traits/is_interval_splitter.hpp [4:6]
- boost/icl/type_traits/is_key_container_of.hpp [4:6]
- boost/icl/type_traits/is_map.hpp [4:6]
- boost/icl/type_traits/is_numeric.hpp [4:6]
- boost/icl/type_traits/is_set.hpp [4:6]
- boost/icl/type_traits/is_total.hpp [4:6]
- boost/icl/type_traits/no_type.hpp [4:6]
- boost/icl/type_traits/predicate.hpp [4:6]
- boost/icl/type_traits/rep_type_of.hpp [4:6]
- boost/icl/type_traits/segment_type_of.hpp [4:6]
- boost/icl/type_traits/size.hpp [4:6]
- boost/icl/type_traits/size_type_of.hpp [4:6]
- boost/icl/type_traits/succ_pred.hpp [4:6]
- boost/icl/type_traits/to_string.hpp [6:8]
- boost/icl/type_traits/type_to_string.hpp [4:6]
- boost/icl/type_traits/unit_element.hpp [4:6]
- boost/icl/type_traits/value_size.hpp [6:8]
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 72.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/icl/associative_element_container.hpp [4:6]
- boost/icl/associative_interval_container.hpp [4:6]
- boost/icl/closed_interval.hpp [4:6]
- boost/icl/concept/comparable.hpp [4:6]
- boost/icl/concept/container.hpp [4:6]
- boost/icl/concept/element_associator.hpp [4:6]
- boost/icl/concept/element_map.hpp [4:6]
- boost/icl/concept/element_set.hpp [4:6]
- boost/icl/concept/element_set_value.hpp [4:6]
- boost/icl/concept/interval.hpp [4:6]
- boost/icl/concept/interval_associator.hpp [4:6]
- boost/icl/concept/interval_associator_base.hpp [4:6]
- boost/icl/concept/interval_bounds.hpp [4:6]
- boost/icl/concept/interval_map.hpp [4:6]
- boost/icl/concept/interval_set.hpp [4:6]
- boost/icl/concept/interval_set_value.hpp [4:6]
- boost/icl/concept/joinable.hpp [4:6]
- boost/icl/concept/map_value.hpp [4:6]
- boost/icl/concept/set_value.hpp [4:6]
- boost/icl/continuous_interval.hpp [4:6]
- boost/icl/detail/associated_value.hpp [4:6]
- boost/icl/detail/boost_config.hpp [4:6]
- boost/icl/detail/concept_check.hpp [4:6]
- boost/icl/detail/design_config.hpp [5:7]
- boost/icl/detail/element_comparer.hpp [4:6]
- boost/icl/detail/element_iterator.hpp [4:6]
- boost/icl/detail/exclusive_less_than.hpp [4:6]
- boost/icl/detail/interval_map_algo.hpp [4:6]
- boost/icl/detail/interval_morphism.hpp [4:6]
- boost/icl/detail/interval_set_algo.hpp [4:6]
- boost/icl/detail/interval_subset_comparer.hpp [4:6]
- boost/icl/detail/map_algo.hpp [4:6]
- boost/icl/detail/mapped_reference.hpp [4:6]
- boost/icl/detail/notate.hpp [6:8]
- boost/icl/detail/on_absorbtion.hpp [4:6]
- boost/icl/detail/relation_state.hpp [5:7]
- boost/icl/detail/set_algo.hpp [6:8]
- boost/icl/detail/std_set.hpp [4:6]
- boost/icl/detail/subset_comparer.hpp [4:6]
- boost/icl/discrete_interval.hpp [4:6]
- boost/icl/dynamic_interval_traits.hpp [4:6]
- boost/icl/functors.hpp [4:6]
- boost/icl/gregorian.hpp [4:6]
- boost/icl/impl_config.hpp [5:7]
- boost/icl/interval.hpp [4:6]
- boost/icl/interval_base_map.hpp [5:7]
- boost/icl/interval_base_set.hpp [5:7]
- boost/icl/interval_bounds.hpp [4:6]
- boost/icl/interval_combining_style.hpp [4:6]
- boost/icl/interval_map.hpp [4:6]
- boost/icl/interval_set.hpp [5:7]
- boost/icl/interval_traits.hpp [4:6]
- boost/icl/iterator.hpp [4:6]
- boost/icl/left_open_interval.hpp [4:6]
- boost/icl/map.hpp [4:6]
- boost/icl/open_interval.hpp [4:6]
- boost/icl/predicates/distinct_equal.hpp [4:6]
- boost/icl/predicates/element_equal.hpp [4:6]
- boost/icl/predicates/std_equal.hpp [4:6]
- boost/icl/predicates/sub_super_set.hpp [4:6]
- boost/icl/ptime.hpp [4:6]
- boost/icl/rational.hpp [4:6]
- boost/icl/right_open_interval.hpp [4:6]
- boost/icl/separate_interval_set.hpp [4:6]
- boost/icl/set.hpp [4:6]
- boost/icl/split_interval_map.hpp [5:7]
- boost/icl/split_interval_set.hpp [5:7]
- boost/icl/type_traits/absorbs_identities.hpp [4:6]
- boost/icl/type_traits/adds_inversely.hpp [4:6]
- boost/icl/type_traits/codomain_type_of.hpp [4:6]
- boost/icl/type_traits/difference.hpp [4:6]
- boost/icl/type_traits/difference_type_of.hpp [4:6]
- boost/icl/type_traits/domain_type_of.hpp [4:6]
- boost/icl/type_traits/element_type_of.hpp [4:6]
- boost/icl/type_traits/has_inverse.hpp [4:6]
- boost/icl/type_traits/has_set_semantics.hpp [4:6]
- boost/icl/type_traits/identity_element.hpp [4:6]
- boost/icl/type_traits/infinity.hpp [4:6]
- boost/icl/type_traits/interval_type_default.hpp [4:6]
- boost/icl/type_traits/interval_type_of.hpp [4:6]
- boost/icl/type_traits/is_associative_element_container.hpp [4:6]
- boost/icl/type_traits/is_asymmetric_interval.hpp [4:6]
- boost/icl/type_traits/is_combinable.hpp [4:6]
- boost/icl/type_traits/is_concept_equivalent.hpp [4:6]
- boost/icl/type_traits/is_container.hpp [4:6]
- boost/icl/type_traits/is_continuous.hpp [4:6]
- boost/icl/type_traits/is_continuous_interval.hpp [4:6]
- boost/icl/type_traits/is_discrete.hpp [4:6]
- boost/icl/type_traits/is_discrete_interval.hpp [4:6]
- boost/icl/type_traits/is_element_container.hpp [4:6]
- boost/icl/type_traits/is_icl_container.hpp [4:6]
- boost/icl/type_traits/is_increasing.hpp [4:6]
- boost/icl/type_traits/is_interval.hpp [4:6]
- boost/icl/type_traits/is_interval_container.hpp [4:6]
- boost/icl/type_traits/is_interval_joiner.hpp [4:6]
- boost/icl/type_traits/is_interval_separator.hpp [4:6]
- boost/icl/type_traits/is_interval_splitter.hpp [4:6]
- boost/icl/type_traits/is_key_container_of.hpp [4:6]
- boost/icl/type_traits/is_map.hpp [4:6]
- boost/icl/type_traits/is_numeric.hpp [4:6]
- boost/icl/type_traits/is_set.hpp [4:6]
- boost/icl/type_traits/is_total.hpp [4:6]
- boost/icl/type_traits/no_type.hpp [4:6]
- boost/icl/type_traits/predicate.hpp [4:6]
- boost/icl/type_traits/rep_type_of.hpp [4:6]
- boost/icl/type_traits/segment_type_of.hpp [4:6]
- boost/icl/type_traits/size.hpp [4:6]
- boost/icl/type_traits/size_type_of.hpp [4:6]
- boost/icl/type_traits/succ_pred.hpp [4:6]
- boost/icl/type_traits/to_string.hpp [6:8]
- boost/icl/type_traits/type_to_string.hpp [4:6]
- boost/icl/type_traits/unit_element.hpp [4:6]
- boost/icl/type_traits/value_size.hpp [6:8]
-
-SKIP LicenseRef-scancode-unknown-license-reference 346344a00d161342f7e58de27d74c5b4
-BELONGS ya.make
- License text:
- // Copyright 2011 John Maddock. Distributed under the Boost
- Scancode info:
- Original SPDX id: LicenseRef-scancode-unknown-license-reference
- Score : 11.00
- Match type : INTRO
- Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/unknown-license-reference.LICENSE
- Files with this license:
- boost/multiprecision/detail/functions/constants.hpp [1:1]
- boost/multiprecision/detail/functions/trig.hpp [3:3]
-
-KEEP BSL-1.0 3483ad6500a5ec5c1eed3d256900b057
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/boykov_kolmogorov_max_flow.hpp at line 29, boost/graph/write_dimacs.hpp at line 29
- License text:
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/graph/boykov_kolmogorov_max_flow.hpp [28:30]
- boost/graph/write_dimacs.hpp [28:30]
-
-KEEP BSL-1.0 35406de8a58b639b59f98aff7f113718
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/concurrent_queues/sync_bounded_queue.hpp at line 8, boost/thread/concurrent_queues/sync_deque.hpp at line 8, boost/thread/concurrent_queues/sync_queue.hpp at line 8, boost/thread/sync_bounded_queue.hpp at line 8, boost/thread/sync_queue.hpp at line 8
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/thread/concurrent_queues/sync_bounded_queue.hpp [6:8]
- boost/thread/concurrent_queues/sync_deque.hpp [6:8]
- boost/thread/concurrent_queues/sync_queue.hpp [6:8]
- boost/thread/sync_bounded_queue.hpp [6:8]
- boost/thread/sync_queue.hpp [6:8]
-
-KEEP BSL-1.0 35e6ad25ab77c8494504ce9164a0c424
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/detail/remove_extent.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/range/detail/remove_extent.hpp [3:6]
-
-KEEP BSL-1.0 367057ccd06eefdae0d0832b1147fc90
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/category.hpp at line 5, boost/range/distance.hpp at line 5, boost/range/functions.hpp at line 5, boost/range/pointer.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/range/category.hpp [3:6]
- boost/range/distance.hpp [3:6]
- boost/range/functions.hpp [3:6]
- boost/range/pointer.hpp [3:6]
-
-KEEP BSL-1.0 3710ab6c91fd312a2333398b653684bb
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/r_c_shortest_paths.hpp at line 5
- License text:
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- // http://boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.30
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/graph/r_c_shortest_paths.hpp [4:6]
-
-KEEP NCSA AND MIT 38e692f6c8ccfacfe3b038aeea770be4
-BELONGS ya.make
- License text:
- // This file is dual licensed under the MIT and the University of Illinois Open
- // Source Licenses. See LICENSE.TXT for details.
- Scancode info:
- Original SPDX id: NCSA
- Score : 100.00
- Match type : NOTICE
- Links : http://www.otm.illinois.edu/faculty/forms/opensource.asp, https://spdx.org/licenses/NCSA
- Files with this license:
- boost/chrono/io/time_point_io.hpp [11:12]
- Scancode info:
- Original SPDX id: MIT
- Score : 100.00
- Match type : NOTICE
- Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
- Files with this license:
- boost/chrono/io/time_point_io.hpp [11:12]
-
-KEEP BSL-1.0 39f2e337dcbf282f5b5d0240c455d33e
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/allocator_traits.hpp at line 5, boost/container/scoped_allocator.hpp at line 5, boost/intrusive/pointer_traits.hpp at line 5
- License text:
- // (C) Copyright Pablo Halpern 2009. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/container/allocator_traits.hpp [3:5]
- boost/container/scoped_allocator.hpp [3:5]
- boost/intrusive/pointer_traits.hpp [3:5]
-
-KEEP BSL-1.0 3a69d67d5822ad2987752d722c44ca2a
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/detail/shared_dir_helpers.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2007-2014. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/interprocess/detail/shared_dir_helpers.hpp [3:5]
-
-KEEP BSL-1.0 3a9fe8c6f3dc56da59da6bb70a0cef2c
-BELONGS ya.make
- License text:
- Distributed under the Boost Software License, Version 1.0.
- (http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 94.44
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/align.hpp [5:6]
- boost/align/aligned_alloc.hpp [5:6]
- boost/align/aligned_allocator.hpp [5:6]
- boost/align/aligned_allocator_adaptor.hpp [5:6]
- boost/align/aligned_allocator_adaptor_forward.hpp [5:6]
- boost/align/aligned_allocator_forward.hpp [5:6]
- boost/align/aligned_delete.hpp [5:6]
- boost/align/aligned_delete_forward.hpp [5:6]
- boost/align/assume_aligned.hpp [8:9]
- boost/align/detail/aligned_alloc.hpp [5:6]
- boost/align/detail/aligned_alloc_android.hpp [5:6]
- boost/align/detail/aligned_alloc_macos.hpp [5:6]
- boost/align/detail/aligned_alloc_msvc.hpp [5:6]
- boost/align/detail/aligned_alloc_posix.hpp [5:6]
- boost/align/detail/aligned_alloc_sunos.hpp [5:6]
- boost/align/detail/assume_aligned.hpp [8:9]
- boost/align/detail/assume_aligned_clang.hpp [5:6]
- boost/align/detail/assume_aligned_gcc.hpp [8:9]
- boost/align/detail/assume_aligned_intel.hpp [8:9]
- boost/align/detail/assume_aligned_msvc.hpp [8:9]
- boost/align/detail/is_aligned.hpp [5:6]
- boost/align/is_aligned.hpp [5:6]
- boost/core/allocator_access.hpp [5:6]
- boost/core/empty_value.hpp [5:6]
- boost/smart_ptr/allocate_shared_array.hpp [5:6]
-
-KEEP BSL-1.0 3b7ba38d3301bd8fa20e5d271abee5fe
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/mfc_map.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/range/mfc_map.hpp [3:6]
-
-KEEP MIT 3cf5c004fe748204a7f55c19948b5231
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: MIT
- Score : 100.00
- Match type : TEXT
- Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
- Files with this license:
- boost/geometry/srs/projections/impl/aasincos.hpp [17:33]
- boost/geometry/srs/projections/impl/adjlon.hpp [17:33]
- boost/geometry/srs/projections/impl/dms_parser.hpp [24:40]
- boost/geometry/srs/projections/impl/pj_auth.hpp [21:37]
- boost/geometry/srs/projections/impl/pj_datum_set.hpp [21:37]
- boost/geometry/srs/projections/impl/pj_datums.hpp [21:37]
- boost/geometry/srs/projections/impl/pj_ell_set.hpp [21:37]
- boost/geometry/srs/projections/impl/pj_ellps.hpp [21:37]
- boost/geometry/srs/projections/impl/pj_fwd.hpp [21:37]
- boost/geometry/srs/projections/impl/pj_gauss.hpp [21:37]
- boost/geometry/srs/projections/impl/pj_init.hpp [21:37]
- boost/geometry/srs/projections/impl/pj_inv.hpp [21:37]
- boost/geometry/srs/projections/impl/pj_mlfn.hpp [21:37]
- boost/geometry/srs/projections/impl/pj_msfn.hpp [21:37]
- boost/geometry/srs/projections/impl/pj_param.hpp [21:37]
- boost/geometry/srs/projections/impl/pj_phi2.hpp [21:37]
- boost/geometry/srs/projections/impl/pj_qsfn.hpp [21:37]
- boost/geometry/srs/projections/impl/pj_transform.hpp [21:37]
- boost/geometry/srs/projections/impl/pj_tsfn.hpp [21:37]
- boost/geometry/srs/projections/impl/pj_units.hpp [21:37]
- boost/geometry/srs/projections/impl/pj_zpoly1.hpp [21:37]
- boost/geometry/srs/projections/impl/proj_mdist.hpp [17:33]
- boost/geometry/srs/projections/impl/projects.hpp [21:37]
- boost/geometry/srs/projections/proj/aea.hpp [30:46]
- boost/geometry/srs/projections/proj/aeqd.hpp [30:46]
- boost/geometry/srs/projections/proj/airy.hpp [30:46]
- boost/geometry/srs/projections/proj/aitoff.hpp [31:47]
- boost/geometry/srs/projections/proj/august.hpp [26:42]
- boost/geometry/srs/projections/proj/bacon.hpp [26:42]
- boost/geometry/srs/projections/proj/bipc.hpp [26:42]
- boost/geometry/srs/projections/proj/boggs.hpp [26:42]
- boost/geometry/srs/projections/proj/bonne.hpp [26:42]
- boost/geometry/srs/projections/proj/cass.hpp [26:42]
- boost/geometry/srs/projections/proj/cc.hpp [26:42]
- boost/geometry/srs/projections/proj/cea.hpp [26:42]
- boost/geometry/srs/projections/proj/chamb.hpp [26:42]
- boost/geometry/srs/projections/proj/collg.hpp [26:42]
- boost/geometry/srs/projections/proj/crast.hpp [26:42]
- boost/geometry/srs/projections/proj/denoy.hpp [26:42]
- boost/geometry/srs/projections/proj/eck1.hpp [26:42]
- boost/geometry/srs/projections/proj/eck2.hpp [26:42]
- boost/geometry/srs/projections/proj/eck3.hpp [26:42]
- boost/geometry/srs/projections/proj/eck4.hpp [26:42]
- boost/geometry/srs/projections/proj/eck5.hpp [26:42]
- boost/geometry/srs/projections/proj/eqc.hpp [26:42]
- boost/geometry/srs/projections/proj/eqdc.hpp [26:42]
- boost/geometry/srs/projections/proj/etmerc.hpp [28:44]
- boost/geometry/srs/projections/proj/fahey.hpp [26:42]
- boost/geometry/srs/projections/proj/fouc_s.hpp [26:42]
- boost/geometry/srs/projections/proj/gall.hpp [26:42]
- boost/geometry/srs/projections/proj/geocent.hpp [32:48]
- boost/geometry/srs/projections/proj/geos.hpp [31:47]
- boost/geometry/srs/projections/proj/gins8.hpp [26:42]
- boost/geometry/srs/projections/proj/gn_sinu.hpp [26:42]
- boost/geometry/srs/projections/proj/gnom.hpp [26:42]
- boost/geometry/srs/projections/proj/goode.hpp [26:42]
- boost/geometry/srs/projections/proj/hammer.hpp [26:42]
- boost/geometry/srs/projections/proj/hatano.hpp [26:42]
- boost/geometry/srs/projections/proj/healpix.hpp [34:50]
- boost/geometry/srs/projections/proj/igh.hpp [26:42]
- boost/geometry/srs/projections/proj/imw_p.hpp [26:42]
- boost/geometry/srs/projections/proj/isea.hpp [29:45]
- boost/geometry/srs/projections/proj/krovak.hpp [31:47]
- boost/geometry/srs/projections/proj/labrd.hpp [26:42]
- boost/geometry/srs/projections/proj/laea.hpp [26:42]
- boost/geometry/srs/projections/proj/lagrng.hpp [26:42]
- boost/geometry/srs/projections/proj/larr.hpp [26:42]
- boost/geometry/srs/projections/proj/lask.hpp [26:42]
- boost/geometry/srs/projections/proj/latlong.hpp [32:48]
- boost/geometry/srs/projections/proj/lcc.hpp [26:42]
- boost/geometry/srs/projections/proj/lcca.hpp [26:42]
- boost/geometry/srs/projections/proj/loxim.hpp [26:42]
- boost/geometry/srs/projections/proj/lsat.hpp [26:42]
- boost/geometry/srs/projections/proj/mbt_fps.hpp [26:42]
- boost/geometry/srs/projections/proj/mbtfpp.hpp [26:42]
- boost/geometry/srs/projections/proj/mbtfpq.hpp [26:42]
- boost/geometry/srs/projections/proj/merc.hpp [26:42]
- boost/geometry/srs/projections/proj/mill.hpp [26:42]
- boost/geometry/srs/projections/proj/mod_ster.hpp [26:42]
- boost/geometry/srs/projections/proj/moll.hpp [26:42]
- boost/geometry/srs/projections/proj/natearth.hpp [39:55]
- boost/geometry/srs/projections/proj/nell.hpp [26:42]
- boost/geometry/srs/projections/proj/nell_h.hpp [26:42]
- boost/geometry/srs/projections/proj/nocol.hpp [26:42]
- boost/geometry/srs/projections/proj/nsper.hpp [26:42]
- boost/geometry/srs/projections/proj/nzmg.hpp [31:47]
- boost/geometry/srs/projections/proj/ob_tran.hpp [26:42]
- boost/geometry/srs/projections/proj/ocea.hpp [26:42]
- boost/geometry/srs/projections/proj/oea.hpp [26:42]
- boost/geometry/srs/projections/proj/omerc.hpp [28:44]
- boost/geometry/srs/projections/proj/ortho.hpp [26:42]
- boost/geometry/srs/projections/proj/poly.hpp [26:42]
- boost/geometry/srs/projections/proj/putp2.hpp [26:42]
- boost/geometry/srs/projections/proj/putp3.hpp [26:42]
- boost/geometry/srs/projections/proj/putp4p.hpp [26:42]
- boost/geometry/srs/projections/proj/putp5.hpp [26:42]
- boost/geometry/srs/projections/proj/putp6.hpp [26:42]
- boost/geometry/srs/projections/proj/qsc.hpp [58:74]
- boost/geometry/srs/projections/proj/robin.hpp [26:42]
- boost/geometry/srs/projections/proj/rouss.hpp [28:44]
- boost/geometry/srs/projections/proj/rpoly.hpp [26:42]
- boost/geometry/srs/projections/proj/sconics.hpp [26:42]
- boost/geometry/srs/projections/proj/somerc.hpp [26:42]
- boost/geometry/srs/projections/proj/stere.hpp [26:42]
- boost/geometry/srs/projections/proj/sterea.hpp [28:44]
- boost/geometry/srs/projections/proj/sts.hpp [26:42]
- boost/geometry/srs/projections/proj/tcc.hpp [26:42]
- boost/geometry/srs/projections/proj/tcea.hpp [26:42]
- boost/geometry/srs/projections/proj/tmerc.hpp [26:42]
- boost/geometry/srs/projections/proj/tpeqd.hpp [26:42]
- boost/geometry/srs/projections/proj/urm5.hpp [26:42]
- boost/geometry/srs/projections/proj/urmfps.hpp [26:42]
- boost/geometry/srs/projections/proj/vandg.hpp [26:42]
- boost/geometry/srs/projections/proj/vandg2.hpp [26:42]
- boost/geometry/srs/projections/proj/vandg4.hpp [26:42]
- boost/geometry/srs/projections/proj/wag2.hpp [26:42]
- boost/geometry/srs/projections/proj/wag3.hpp [26:42]
- boost/geometry/srs/projections/proj/wag7.hpp [26:42]
- boost/geometry/srs/projections/proj/wink1.hpp [26:42]
- boost/geometry/srs/projections/proj/wink2.hpp [26:42]
-
-KEEP BSL-1.0 3d79e3d57a57a8bd7ad187d68dc979f1
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/uuid/detail/random_provider_posix.ipp at line 9, boost/uuid/detail/random_provider_wincrypt.ipp at line 9
- License text:
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/uuid/detail/random_provider_posix.ipp [8:10]
- boost/uuid/detail/random_provider_wincrypt.ipp [8:10]
-
-KEEP BSL-1.0 3dc626ff78bf44fdf3a99b804f677fe6
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/cast.hpp at line 7, boost/cstdint.hpp at line 8, boost/math/special_functions/bernoulli.hpp at line 9, boost/math/special_functions/detail/bernoulli_details.hpp at line 5, boost/math/special_functions/detail/polygamma.hpp at line 9, boost/math/special_functions/polygamma.hpp at line 9, boost/math/tools/atomic.hpp at line 5, boost/numeric/conversion/detail/old_numeric_cast.hpp at line 6, boost/polymorphic_cast.hpp at line 7, boost/polymorphic_pointer_cast.hpp at line 5
- License text:
- // Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/cast.hpp [5:7]
- boost/cstdint.hpp [6:8]
- boost/math/special_functions/bernoulli.hpp [7:9]
- boost/math/special_functions/detail/bernoulli_details.hpp [3:5]
- boost/math/special_functions/detail/polygamma.hpp [7:9]
- boost/math/special_functions/polygamma.hpp [7:9]
- boost/math/tools/atomic.hpp [3:5]
- boost/numeric/conversion/detail/old_numeric_cast.hpp [4:6]
- boost/polymorphic_cast.hpp [5:7]
- boost/polymorphic_pointer_cast.hpp [3:5]
-
-KEEP BSL-1.0 3e0c1cf439330b613e9a358372456112
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/assign.hpp at line 5, boost/assign/assignment_exception.hpp at line 5, boost/assign/list_inserter.hpp at line 5, boost/assign/list_of.hpp at line 5, boost/assign/std.hpp at line 5, boost/assign/std/deque.hpp at line 5, boost/assign/std/list.hpp at line 5, boost/assign/std/map.hpp at line 5, boost/assign/std/queue.hpp at line 5, boost/assign/std/set.hpp at line 5, boost/assign/std/slist.hpp at line 5, boost/assign/std/stack.hpp at line 5, boost/assign/std/vector.hpp at line 5, boost/range.hpp at line 5, boost/range/begin.hpp at line 5, boost/range/config.hpp at line 5, boost/range/const_iterator.hpp at line 5, boost/range/const_reverse_iterator.hpp at line 5, boost/range/detail/begin.hpp at line 5, boost/range/detail/common.hpp at line 5, boost/range/detail/detail_str.hpp at line 5, boost/range/detail/difference_type.hpp at line 5, boost/range/detail/empty.hpp at line 5, boost/range/detail/end.hpp at line 5, boost/range/detail/implementation_help.hpp at line 5, boost/range/detail/sfinae.hpp at line 5, boost/range/detail/size_type.hpp at line 5, boost/range/detail/sizer.hpp at line 5, boost/range/detail/value_type.hpp at line 5, boost/range/difference_type.hpp at line 5, boost/range/empty.hpp at line 5, boost/range/end.hpp at line 5, boost/range/iterator.hpp at line 5, boost/range/metafunctions.hpp at line 5, boost/range/mutable_iterator.hpp at line 5, boost/range/rbegin.hpp at line 5, boost/range/reference.hpp at line 5, boost/range/rend.hpp at line 5, boost/range/result_iterator.hpp at line 5, boost/range/reverse_iterator.hpp at line 5, boost/range/reverse_result_iterator.hpp at line 5, boost/range/size.hpp at line 5, boost/range/size_type.hpp at line 5, boost/range/sub_range.hpp at line 6, boost/range/value_type.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/assign.hpp [3:6]
- boost/assign/assignment_exception.hpp [3:6]
- boost/assign/list_inserter.hpp [3:6]
- boost/assign/list_of.hpp [3:6]
- boost/assign/std.hpp [3:6]
- boost/assign/std/deque.hpp [3:6]
- boost/assign/std/list.hpp [3:6]
- boost/assign/std/map.hpp [3:6]
- boost/assign/std/queue.hpp [3:6]
- boost/assign/std/set.hpp [3:6]
- boost/assign/std/slist.hpp [3:6]
- boost/assign/std/stack.hpp [3:6]
- boost/assign/std/vector.hpp [3:6]
- boost/range.hpp [3:6]
- boost/range/begin.hpp [3:6]
- boost/range/config.hpp [3:6]
- boost/range/const_iterator.hpp [3:6]
- boost/range/const_reverse_iterator.hpp [3:6]
- boost/range/detail/begin.hpp [3:6]
- boost/range/detail/common.hpp [3:6]
- boost/range/detail/detail_str.hpp [3:6]
- boost/range/detail/difference_type.hpp [3:6]
- boost/range/detail/empty.hpp [3:6]
- boost/range/detail/end.hpp [3:6]
- boost/range/detail/implementation_help.hpp [3:6]
- boost/range/detail/sfinae.hpp [3:6]
- boost/range/detail/size_type.hpp [3:6]
- boost/range/detail/sizer.hpp [3:6]
- boost/range/detail/value_type.hpp [3:6]
- boost/range/difference_type.hpp [3:6]
- boost/range/empty.hpp [3:6]
- boost/range/end.hpp [3:6]
- boost/range/iterator.hpp [3:6]
- boost/range/metafunctions.hpp [3:6]
- boost/range/mutable_iterator.hpp [3:6]
- boost/range/rbegin.hpp [3:6]
- boost/range/reference.hpp [3:6]
- boost/range/rend.hpp [3:6]
- boost/range/result_iterator.hpp [3:6]
- boost/range/reverse_iterator.hpp [3:6]
- boost/range/reverse_result_iterator.hpp [3:6]
- boost/range/size.hpp [3:6]
- boost/range/size_type.hpp [3:6]
- boost/range/sub_range.hpp [4:7]
- boost/range/value_type.hpp [3:6]
-
-KEEP BSL-1.0 3e6cbcd55ea14c3be54705bb0cc42706
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/phoenix/core.hpp at line 5
- License text:
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/phoenix/core.hpp [4:5]
-
-KEEP BSL-1.0 40b79e770b4583bc7a2b54d225914470
-BELONGS ya.make
- License text:
- // Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : REFERENCE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/typeof/vector50.hpp [6:6]
-
-KEEP Public-Domain 4364b0fe48ff1582f5b0ef1163db6465
-BELONGS ya.make
- License text:
- // MurmurHash3 was written by Austin Appleby, and is placed in the public
- // domain. The author hereby disclaims copyright to this source code.
- Scancode info:
- Original SPDX id: LicenseRef-scancode-public-domain
- Score : 100.00
- Match type : TEXT
- Links : http://www.linfo.org/publicdomain.html, https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/public-domain.LICENSE
- Files with this license:
- boost/container_hash/hash.hpp [13:14]
-
-SKIP LicenseRef-scancode-proprietary-license 448f6f7563b34b8597aafd34f62a4215
-BELONGS ya.make
- License text:
- Get a free, non-commercial download of MKL at
- Scancode info:
- Original SPDX id: LicenseRef-scancode-proprietary-license
- Score : 100.00
- Match type : REFERENCE
- Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/proprietary-license.LICENSE
- Files with this license:
- boost/numeric/odeint/external/mkl/mkl_operations.hpp [7:7]
-
-KEEP BSL-1.0 4558629d40e3aec5b6182de5189b66d3
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/accumulators.hpp at line 7, boost/accumulators/accumulators_fwd.hpp at line 6, boost/accumulators/framework/accumulator_base.hpp at line 6, boost/accumulators/framework/accumulator_concept.hpp at line 6, boost/accumulators/framework/accumulator_set.hpp at line 6, boost/accumulators/framework/accumulators/droppable_accumulator.hpp at line 6, boost/accumulators/framework/accumulators/external_accumulator.hpp at line 6, boost/accumulators/framework/accumulators/reference_accumulator.hpp at line 6, boost/accumulators/framework/depends_on.hpp at line 6, boost/accumulators/framework/external.hpp at line 6, boost/accumulators/framework/extractor.hpp at line 6, boost/accumulators/framework/features.hpp at line 6, boost/accumulators/framework/parameters/accumulator.hpp at line 6, boost/accumulators/framework/parameters/sample.hpp at line 6, boost/accumulators/framework/parameters/weight.hpp at line 6, boost/accumulators/framework/parameters/weights.hpp at line 6, boost/accumulators/numeric/functional.hpp at line 6, boost/accumulators/numeric/functional/complex.hpp at line 6, boost/accumulators/numeric/functional/valarray.hpp at line 6, boost/accumulators/numeric/functional/vector.hpp at line 6, boost/accumulators/numeric/functional_fwd.hpp at line 6, boost/accumulators/statistics.hpp at line 7, boost/accumulators/statistics/count.hpp at line 6, boost/accumulators/statistics/error_of.hpp at line 6, boost/accumulators/statistics/error_of_mean.hpp at line 6, boost/accumulators/statistics/max.hpp at line 6, boost/accumulators/statistics/mean.hpp at line 6, boost/accumulators/statistics/min.hpp at line 6, boost/accumulators/statistics/moment.hpp at line 6, boost/accumulators/statistics/parameters/quantile_probability.hpp at line 6, boost/accumulators/statistics/stats.hpp at line 7, boost/accumulators/statistics/sum.hpp at line 6, boost/accumulators/statistics/variates/covariate.hpp at line 6, boost/accumulators/statistics/with_error.hpp at line 6, boost/accumulators/statistics_fwd.hpp at line 6
- License text:
- // Copyright 2005 Eric Niebler. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/accumulators/accumulators.hpp [5:7]
- boost/accumulators/accumulators_fwd.hpp [4:6]
- boost/accumulators/framework/accumulator_base.hpp [4:6]
- boost/accumulators/framework/accumulator_concept.hpp [4:6]
- boost/accumulators/framework/accumulator_set.hpp [4:6]
- boost/accumulators/framework/accumulators/droppable_accumulator.hpp [4:6]
- boost/accumulators/framework/accumulators/external_accumulator.hpp [4:6]
- boost/accumulators/framework/accumulators/reference_accumulator.hpp [4:6]
- boost/accumulators/framework/depends_on.hpp [4:6]
- boost/accumulators/framework/external.hpp [4:6]
- boost/accumulators/framework/extractor.hpp [4:6]
- boost/accumulators/framework/features.hpp [4:6]
- boost/accumulators/framework/parameters/accumulator.hpp [4:6]
- boost/accumulators/framework/parameters/sample.hpp [4:6]
- boost/accumulators/framework/parameters/weight.hpp [4:6]
- boost/accumulators/framework/parameters/weights.hpp [4:6]
- boost/accumulators/numeric/functional.hpp [4:6]
- boost/accumulators/numeric/functional/complex.hpp [4:6]
- boost/accumulators/numeric/functional/valarray.hpp [4:6]
- boost/accumulators/numeric/functional/vector.hpp [4:6]
- boost/accumulators/numeric/functional_fwd.hpp [4:6]
- boost/accumulators/statistics.hpp [5:7]
- boost/accumulators/statistics/count.hpp [4:6]
- boost/accumulators/statistics/error_of.hpp [4:6]
- boost/accumulators/statistics/error_of_mean.hpp [4:6]
- boost/accumulators/statistics/max.hpp [4:6]
- boost/accumulators/statistics/mean.hpp [4:6]
- boost/accumulators/statistics/min.hpp [4:6]
- boost/accumulators/statistics/moment.hpp [4:6]
- boost/accumulators/statistics/parameters/quantile_probability.hpp [4:6]
- boost/accumulators/statistics/stats.hpp [5:7]
- boost/accumulators/statistics/sum.hpp [4:6]
- boost/accumulators/statistics/variates/covariate.hpp [4:6]
- boost/accumulators/statistics/with_error.hpp [4:6]
- boost/accumulators/statistics_fwd.hpp [4:6]
-
-KEEP BSL-1.0 45e6804496b42c113a568514b7edcf98
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/detail/collection_traits_detail.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 94.74
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/range/detail/collection_traits_detail.hpp [4:8]
-
-KEEP BSL-1.0 464dd62f778620e8b4f71d787b2b1c6e
-BELONGS libs/serialization/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/archive/archive_exception.hpp at line 14, boost/archive/basic_archive.hpp at line 14, boost/archive/basic_binary_iarchive.hpp at line 21, boost/archive/basic_binary_iprimitive.hpp at line 25, boost/archive/basic_binary_oarchive.hpp at line 14, boost/archive/basic_binary_oprimitive.hpp at line 14, boost/archive/basic_streambuf_locale_saver.hpp at line 15, boost/archive/basic_text_iarchive.hpp at line 14, boost/archive/basic_text_iprimitive.hpp at line 14, boost/archive/basic_text_oarchive.hpp at line 14, boost/archive/basic_text_oprimitive.hpp at line 14, boost/archive/basic_xml_archive.hpp at line 14, boost/archive/basic_xml_iarchive.hpp at line 14, boost/archive/basic_xml_oarchive.hpp at line 14, boost/archive/binary_iarchive.hpp at line 14, boost/archive/binary_iarchive_impl.hpp at line 14, boost/archive/binary_oarchive.hpp at line 14, boost/archive/binary_oarchive_impl.hpp at line 14, boost/archive/binary_wiarchive.hpp at line 14, boost/archive/binary_woarchive.hpp at line 14, boost/archive/codecvt_null.hpp at line 14, boost/archive/detail/abi_prefix.hpp at line 6, boost/archive/detail/abi_suffix.hpp at line 6, boost/archive/detail/archive_serializer_map.hpp at line 15, boost/archive/detail/basic_iarchive.hpp at line 14, boost/archive/detail/basic_iserializer.hpp at line 14, boost/archive/detail/basic_oarchive.hpp at line 14, boost/archive/detail/basic_oserializer.hpp at line 14, boost/archive/detail/basic_pointer_iserializer.hpp at line 15, boost/archive/detail/basic_pointer_oserializer.hpp at line 15, boost/archive/detail/basic_serializer.hpp at line 14, boost/archive/detail/basic_serializer_map.hpp at line 14, boost/archive/detail/check.hpp at line 20, boost/archive/detail/common_iarchive.hpp at line 14, boost/archive/detail/common_oarchive.hpp at line 14, boost/archive/detail/helper_collection.hpp at line 14, boost/archive/detail/interface_iarchive.hpp at line 18, boost/archive/detail/interface_oarchive.hpp at line 14, boost/archive/detail/iserializer.hpp at line 20, boost/archive/detail/oserializer.hpp at line 20, boost/archive/detail/polymorphic_iarchive_route.hpp at line 14, boost/archive/detail/polymorphic_oarchive_route.hpp at line 14, boost/archive/dinkumware.hpp at line 14, boost/archive/impl/basic_binary_iarchive.ipp at line 6, boost/archive/impl/basic_binary_iprimitive.ipp at line 6, boost/archive/impl/basic_binary_oarchive.ipp at line 6, boost/archive/impl/basic_binary_oprimitive.ipp at line 6, boost/archive/impl/basic_text_iarchive.ipp at line 6, boost/archive/impl/basic_text_oarchive.ipp at line 6, boost/archive/impl/basic_text_oprimitive.ipp at line 6, boost/archive/impl/basic_xml_grammar.hpp at line 14, boost/archive/impl/basic_xml_iarchive.ipp at line 6, boost/archive/iterators/base64_exception.hpp at line 14, boost/archive/iterators/base64_from_binary.hpp at line 14, boost/archive/iterators/binary_from_base64.hpp at line 14, boost/archive/iterators/dataflow.hpp at line 14, boost/archive/iterators/dataflow_exception.hpp at line 14, boost/archive/iterators/escape.hpp at line 14, boost/archive/iterators/insert_linebreaks.hpp at line 14, boost/archive/iterators/istream_iterator.hpp at line 14, boost/archive/iterators/mb_from_wchar.hpp at line 14, boost/archive/iterators/ostream_iterator.hpp at line 14, boost/archive/iterators/remove_whitespace.hpp at line 14, boost/archive/iterators/transform_width.hpp at line 14, boost/archive/iterators/unescape.hpp at line 14, boost/archive/iterators/wchar_from_mb.hpp at line 14, boost/archive/iterators/xml_escape.hpp at line 14, boost/archive/iterators/xml_unescape.hpp at line 14, boost/archive/iterators/xml_unescape_exception.hpp at line 14, boost/archive/polymorphic_binary_iarchive.hpp at line 14, boost/archive/polymorphic_binary_oarchive.hpp at line 14, boost/archive/polymorphic_iarchive.hpp at line 14, boost/archive/polymorphic_oarchive.hpp at line 14, boost/archive/polymorphic_text_iarchive.hpp at line 14, boost/archive/polymorphic_text_oarchive.hpp at line 14, boost/archive/polymorphic_text_wiarchive.hpp at line 14, boost/archive/polymorphic_text_woarchive.hpp at line 14, boost/archive/polymorphic_xml_iarchive.hpp at line 14, boost/archive/polymorphic_xml_oarchive.hpp at line 14, boost/archive/polymorphic_xml_wiarchive.hpp at line 14, boost/archive/polymorphic_xml_woarchive.hpp at line 14, boost/archive/text_iarchive.hpp at line 14, boost/archive/text_oarchive.hpp at line 14, boost/archive/text_wiarchive.hpp at line 14, boost/archive/text_woarchive.hpp at line 14, boost/archive/tmpdir.hpp at line 14, boost/archive/wcslen.hpp at line 14, boost/archive/xml_archive_exception.hpp at line 14, boost/archive/xml_iarchive.hpp at line 14, boost/archive/xml_oarchive.hpp at line 14, boost/archive/xml_wiarchive.hpp at line 14, boost/archive/xml_woarchive.hpp at line 14, boost/serialization/access.hpp at line 14, boost/serialization/archive_input_unordered_map.hpp at line 16, boost/serialization/archive_input_unordered_set.hpp at line 15, boost/serialization/assume_abstract.hpp at line 14, boost/serialization/base_object.hpp at line 14, boost/serialization/binary_object.hpp at line 14, boost/serialization/boost_unordered_map.hpp at line 16, boost/serialization/boost_unordered_set.hpp at line 15, boost/serialization/collection_traits.hpp at line 14, boost/serialization/collections_load_imp.hpp at line 18, boost/serialization/collections_save_imp.hpp at line 14, boost/serialization/complex.hpp at line 15, boost/serialization/deque.hpp at line 14, boost/serialization/detail/is_default_constructible.hpp at line 14, boost/serialization/detail/stack_constructor.hpp at line 14, boost/serialization/ephemeral.hpp at line 14, boost/serialization/export.hpp at line 14, boost/serialization/extended_type_info.hpp at line 14, boost/serialization/extended_type_info_no_rtti.hpp at line 16, boost/serialization/extended_type_info_typeid.hpp at line 16, boost/serialization/factory.hpp at line 14, boost/serialization/force_include.hpp at line 14, boost/serialization/forward_list.hpp at line 14, boost/serialization/hash_collections_load_imp.hpp at line 15, boost/serialization/hash_collections_save_imp.hpp at line 14, boost/serialization/hash_map.hpp at line 15, boost/serialization/hash_set.hpp at line 14, boost/serialization/level.hpp at line 14, boost/serialization/level_enum.hpp at line 14, boost/serialization/list.hpp at line 14, boost/serialization/map.hpp at line 15, boost/serialization/nvp.hpp at line 14, boost/serialization/priority_queue.hpp at line 14, boost/serialization/queue.hpp at line 14, boost/serialization/serialization.hpp at line 21, boost/serialization/set.hpp at line 14, boost/serialization/shared_ptr.hpp at line 14, boost/serialization/shared_ptr_132.hpp at line 14, boost/serialization/shared_ptr_helper.hpp at line 14, boost/serialization/slist.hpp at line 14, boost/serialization/split_free.hpp at line 14, boost/serialization/split_member.hpp at line 14, boost/serialization/stack.hpp at line 14, boost/serialization/string.hpp at line 15, boost/serialization/tracking.hpp at line 14, boost/serialization/tracking_enum.hpp at line 14, boost/serialization/traits.hpp at line 14, boost/serialization/type_info_implementation.hpp at line 14, boost/serialization/unique_ptr.hpp at line 14, boost/serialization/unordered_collections_load_imp.hpp at line 16, boost/serialization/unordered_collections_save_imp.hpp at line 15, boost/serialization/unordered_map.hpp at line 16, boost/serialization/unordered_set.hpp at line 15, boost/serialization/utility.hpp at line 15, boost/serialization/valarray.hpp at line 14, boost/serialization/vector.hpp at line 15, boost/serialization/vector_135.hpp at line 7, boost/serialization/version.hpp at line 14, boost/serialization/weak_ptr.hpp at line 14, libs/serialization/src/archive_exception.cpp at line 6, libs/serialization/src/basic_archive.cpp at line 6, libs/serialization/src/basic_iarchive.cpp at line 6, libs/serialization/src/basic_iserializer.cpp at line 6, libs/serialization/src/basic_oarchive.cpp at line 6, libs/serialization/src/basic_oserializer.cpp at line 6, libs/serialization/src/basic_pointer_iserializer.cpp at line 6, libs/serialization/src/basic_pointer_oserializer.cpp at line 6, libs/serialization/src/basic_serializer_map.cpp at line 6, libs/serialization/src/basic_text_iprimitive.cpp at line 6, libs/serialization/src/basic_text_oprimitive.cpp at line 6, libs/serialization/src/basic_text_wiprimitive.cpp at line 6, libs/serialization/src/basic_text_woprimitive.cpp at line 6, libs/serialization/src/basic_xml_archive.cpp at line 6, libs/serialization/src/basic_xml_grammar.ipp at line 6, libs/serialization/src/binary_iarchive.cpp at line 6, libs/serialization/src/binary_oarchive.cpp at line 6, libs/serialization/src/binary_wiarchive.cpp at line 6, libs/serialization/src/binary_woarchive.cpp at line 6, libs/serialization/src/extended_type_info.cpp at line 6, libs/serialization/src/extended_type_info_no_rtti.cpp at line 7, libs/serialization/src/extended_type_info_typeid.cpp at line 7, libs/serialization/src/polymorphic_iarchive.cpp at line 6, libs/serialization/src/polymorphic_oarchive.cpp at line 6, libs/serialization/src/stl_port.cpp at line 6, libs/serialization/src/text_iarchive.cpp at line 6, libs/serialization/src/text_oarchive.cpp at line 6, libs/serialization/src/text_wiarchive.cpp at line 6, libs/serialization/src/text_woarchive.cpp at line 6, libs/serialization/src/xml_archive_exception.cpp at line 6, libs/serialization/src/xml_grammar.cpp at line 6, libs/serialization/src/xml_iarchive.cpp at line 6, libs/serialization/src/xml_oarchive.cpp at line 6, libs/serialization/src/xml_wgrammar.cpp at line 6, libs/serialization/src/xml_wiarchive.cpp at line 6, libs/serialization/src/xml_woarchive.cpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 94.74
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/archive/archive_exception.hpp [13:17]
- boost/archive/basic_archive.hpp [13:17]
- boost/archive/basic_binary_iarchive.hpp [20:24]
- boost/archive/basic_binary_iprimitive.hpp [24:28]
- boost/archive/basic_binary_oarchive.hpp [13:17]
- boost/archive/basic_binary_oprimitive.hpp [13:17]
- boost/archive/basic_streambuf_locale_saver.hpp [14:18]
- boost/archive/basic_text_iarchive.hpp [13:17]
- boost/archive/basic_text_iprimitive.hpp [13:17]
- boost/archive/basic_text_oarchive.hpp [13:17]
- boost/archive/basic_text_oprimitive.hpp [13:17]
- boost/archive/basic_xml_archive.hpp [13:17]
- boost/archive/basic_xml_iarchive.hpp [13:17]
- boost/archive/basic_xml_oarchive.hpp [13:17]
- boost/archive/binary_iarchive.hpp [13:17]
- boost/archive/binary_iarchive_impl.hpp [13:17]
- boost/archive/binary_oarchive.hpp [13:17]
- boost/archive/binary_oarchive_impl.hpp [13:17]
- boost/archive/binary_wiarchive.hpp [13:17]
- boost/archive/binary_woarchive.hpp [13:17]
- boost/archive/codecvt_null.hpp [13:17]
- boost/archive/detail/abi_prefix.hpp [5:9]
- boost/archive/detail/abi_suffix.hpp [5:9]
- boost/archive/detail/archive_serializer_map.hpp [14:18]
- boost/archive/detail/basic_iarchive.hpp [13:17]
- boost/archive/detail/basic_iserializer.hpp [13:17]
- boost/archive/detail/basic_oarchive.hpp [13:17]
- boost/archive/detail/basic_oserializer.hpp [13:17]
- boost/archive/detail/basic_pointer_iserializer.hpp [14:18]
- boost/archive/detail/basic_pointer_oserializer.hpp [14:18]
- boost/archive/detail/basic_serializer.hpp [13:17]
- boost/archive/detail/basic_serializer_map.hpp [13:17]
- boost/archive/detail/check.hpp [19:23]
- boost/archive/detail/common_iarchive.hpp [13:17]
- boost/archive/detail/common_oarchive.hpp [13:17]
- boost/archive/detail/helper_collection.hpp [13:17]
- boost/archive/detail/interface_iarchive.hpp [17:21]
- boost/archive/detail/interface_oarchive.hpp [13:17]
- boost/archive/detail/iserializer.hpp [19:23]
- boost/archive/detail/oserializer.hpp [19:23]
- boost/archive/detail/polymorphic_iarchive_route.hpp [13:17]
- boost/archive/detail/polymorphic_oarchive_route.hpp [13:17]
- boost/archive/dinkumware.hpp [13:17]
- boost/archive/impl/basic_binary_iarchive.ipp [5:9]
- boost/archive/impl/basic_binary_iprimitive.ipp [5:9]
- boost/archive/impl/basic_binary_oarchive.ipp [5:9]
- boost/archive/impl/basic_binary_oprimitive.ipp [5:9]
- boost/archive/impl/basic_text_iarchive.ipp [5:9]
- boost/archive/impl/basic_text_oarchive.ipp [5:9]
- boost/archive/impl/basic_text_oprimitive.ipp [5:9]
- boost/archive/impl/basic_xml_grammar.hpp [13:17]
- boost/archive/impl/basic_xml_iarchive.ipp [5:9]
- boost/archive/iterators/base64_exception.hpp [13:17]
- boost/archive/iterators/base64_from_binary.hpp [13:17]
- boost/archive/iterators/binary_from_base64.hpp [13:17]
- boost/archive/iterators/dataflow.hpp [13:17]
- boost/archive/iterators/dataflow_exception.hpp [13:17]
- boost/archive/iterators/escape.hpp [13:17]
- boost/archive/iterators/insert_linebreaks.hpp [13:17]
- boost/archive/iterators/istream_iterator.hpp [13:17]
- boost/archive/iterators/mb_from_wchar.hpp [13:17]
- boost/archive/iterators/ostream_iterator.hpp [13:17]
- boost/archive/iterators/remove_whitespace.hpp [13:17]
- boost/archive/iterators/transform_width.hpp [13:17]
- boost/archive/iterators/unescape.hpp [13:17]
- boost/archive/iterators/wchar_from_mb.hpp [13:17]
- boost/archive/iterators/xml_escape.hpp [13:17]
- boost/archive/iterators/xml_unescape.hpp [13:17]
- boost/archive/iterators/xml_unescape_exception.hpp [13:17]
- boost/archive/polymorphic_binary_iarchive.hpp [13:17]
- boost/archive/polymorphic_binary_oarchive.hpp [13:17]
- boost/archive/polymorphic_iarchive.hpp [13:17]
- boost/archive/polymorphic_oarchive.hpp [13:17]
- boost/archive/polymorphic_text_iarchive.hpp [13:17]
- boost/archive/polymorphic_text_oarchive.hpp [13:17]
- boost/archive/polymorphic_text_wiarchive.hpp [13:17]
- boost/archive/polymorphic_text_woarchive.hpp [13:17]
- boost/archive/polymorphic_xml_iarchive.hpp [13:17]
- boost/archive/polymorphic_xml_oarchive.hpp [13:17]
- boost/archive/polymorphic_xml_wiarchive.hpp [13:17]
- boost/archive/polymorphic_xml_woarchive.hpp [13:17]
- boost/archive/text_iarchive.hpp [13:17]
- boost/archive/text_oarchive.hpp [13:17]
- boost/archive/text_wiarchive.hpp [13:17]
- boost/archive/text_woarchive.hpp [13:17]
- boost/archive/tmpdir.hpp [13:17]
- boost/archive/wcslen.hpp [13:17]
- boost/archive/xml_archive_exception.hpp [13:17]
- boost/archive/xml_iarchive.hpp [13:17]
- boost/archive/xml_oarchive.hpp [13:17]
- boost/archive/xml_wiarchive.hpp [13:17]
- boost/archive/xml_woarchive.hpp [13:17]
- boost/serialization/access.hpp [13:17]
- boost/serialization/archive_input_unordered_map.hpp [15:19]
- boost/serialization/archive_input_unordered_set.hpp [14:18]
- boost/serialization/assume_abstract.hpp [13:17]
- boost/serialization/base_object.hpp [13:17]
- boost/serialization/binary_object.hpp [13:17]
- boost/serialization/boost_unordered_map.hpp [15:19]
- boost/serialization/boost_unordered_set.hpp [14:18]
- boost/serialization/collection_traits.hpp [13:17]
- boost/serialization/collections_load_imp.hpp [17:21]
- boost/serialization/collections_save_imp.hpp [13:17]
- boost/serialization/complex.hpp [14:18]
- boost/serialization/deque.hpp [13:17]
- boost/serialization/detail/is_default_constructible.hpp [13:17]
- boost/serialization/detail/stack_constructor.hpp [13:17]
- boost/serialization/ephemeral.hpp [13:17]
- boost/serialization/export.hpp [13:17]
- boost/serialization/extended_type_info.hpp [13:17]
- boost/serialization/extended_type_info_no_rtti.hpp [15:19]
- boost/serialization/extended_type_info_typeid.hpp [15:19]
- boost/serialization/factory.hpp [13:17]
- boost/serialization/force_include.hpp [13:17]
- boost/serialization/forward_list.hpp [13:17]
- boost/serialization/hash_collections_load_imp.hpp [14:18]
- boost/serialization/hash_collections_save_imp.hpp [13:17]
- boost/serialization/hash_map.hpp [14:18]
- boost/serialization/hash_set.hpp [13:17]
- boost/serialization/level.hpp [13:17]
- boost/serialization/level_enum.hpp [13:17]
- boost/serialization/list.hpp [13:17]
- boost/serialization/map.hpp [14:18]
- boost/serialization/nvp.hpp [13:17]
- boost/serialization/priority_queue.hpp [13:17]
- boost/serialization/queue.hpp [13:17]
- boost/serialization/serialization.hpp [20:24]
- boost/serialization/set.hpp [13:17]
- boost/serialization/shared_ptr.hpp [13:17]
- boost/serialization/shared_ptr_132.hpp [13:17]
- boost/serialization/shared_ptr_helper.hpp [13:17]
- boost/serialization/slist.hpp [13:17]
- boost/serialization/split_free.hpp [13:17]
- boost/serialization/split_member.hpp [13:17]
- boost/serialization/stack.hpp [13:17]
- boost/serialization/string.hpp [14:18]
- boost/serialization/tracking.hpp [13:17]
- boost/serialization/tracking_enum.hpp [13:17]
- boost/serialization/traits.hpp [13:17]
- boost/serialization/type_info_implementation.hpp [13:17]
- boost/serialization/unique_ptr.hpp [13:17]
- boost/serialization/unordered_collections_load_imp.hpp [15:19]
- boost/serialization/unordered_collections_save_imp.hpp [14:18]
- boost/serialization/unordered_map.hpp [15:19]
- boost/serialization/unordered_set.hpp [14:18]
- boost/serialization/utility.hpp [14:18]
- boost/serialization/valarray.hpp [13:17]
- boost/serialization/vector.hpp [14:18]
- boost/serialization/vector_135.hpp [6:10]
- boost/serialization/version.hpp [13:17]
- boost/serialization/weak_ptr.hpp [13:17]
- libs/serialization/src/archive_exception.cpp [5:9]
- libs/serialization/src/basic_archive.cpp [5:9]
- libs/serialization/src/basic_iarchive.cpp [5:9]
- libs/serialization/src/basic_iserializer.cpp [5:9]
- libs/serialization/src/basic_oarchive.cpp [5:9]
- libs/serialization/src/basic_oserializer.cpp [5:9]
- libs/serialization/src/basic_pointer_iserializer.cpp [5:9]
- libs/serialization/src/basic_pointer_oserializer.cpp [5:9]
- libs/serialization/src/basic_serializer_map.cpp [5:9]
- libs/serialization/src/basic_text_iprimitive.cpp [5:9]
- libs/serialization/src/basic_text_oprimitive.cpp [5:9]
- libs/serialization/src/basic_text_wiprimitive.cpp [5:9]
- libs/serialization/src/basic_text_woprimitive.cpp [5:9]
- libs/serialization/src/basic_xml_archive.cpp [5:9]
- libs/serialization/src/basic_xml_grammar.ipp [5:9]
- libs/serialization/src/binary_iarchive.cpp [5:9]
- libs/serialization/src/binary_oarchive.cpp [5:9]
- libs/serialization/src/binary_wiarchive.cpp [5:9]
- libs/serialization/src/binary_woarchive.cpp [5:9]
- libs/serialization/src/extended_type_info.cpp [5:9]
- libs/serialization/src/extended_type_info_no_rtti.cpp [6:10]
- libs/serialization/src/extended_type_info_typeid.cpp [6:10]
- libs/serialization/src/polymorphic_iarchive.cpp [5:9]
- libs/serialization/src/polymorphic_oarchive.cpp [5:9]
- libs/serialization/src/stl_port.cpp [5:9]
- libs/serialization/src/text_iarchive.cpp [5:9]
- libs/serialization/src/text_oarchive.cpp [5:9]
- libs/serialization/src/text_wiarchive.cpp [5:9]
- libs/serialization/src/text_woarchive.cpp [5:9]
- libs/serialization/src/xml_archive_exception.cpp [5:9]
- libs/serialization/src/xml_grammar.cpp [5:9]
- libs/serialization/src/xml_iarchive.cpp [5:9]
- libs/serialization/src/xml_oarchive.cpp [5:9]
- libs/serialization/src/xml_wgrammar.cpp [5:9]
- libs/serialization/src/xml_wiarchive.cpp [5:9]
- libs/serialization/src/xml_woarchive.cpp [5:9]
-
-KEEP BSL-1.0 4685b9c982cdf2c34731d3ee55e65b45
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/named_graph.hpp at line 4
- License text:
- // Use, modification and distribution is subject to the Boost Software
- // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/graph/named_graph.hpp [3:5]
-
-KEEP BSL-1.0 476ce185bbfb7af264a4b35c8c5d052e
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/move/detail/std_ns_begin.hpp at line 5, boost/move/detail/std_ns_end.hpp at line 5
- License text:
- \#// Distributed under the Boost Software License, Version 1.0.
- \#// (See accompanying file LICENSE_1_0.txt or copy at
- \#// http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/move/detail/std_ns_begin.hpp [4:6]
- boost/move/detail/std_ns_end.hpp [4:6]
-
-KEEP BSL-1.0 47a0454637d4fa45d78eb2557ccd70c4
-BELONGS libs/python/ya.make libs/thread/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/aligned_storage.hpp at line 10, boost/any.hpp at line 334, boost/archive/detail/utf8_codecvt_facet.hpp at line 4, boost/archive/impl/xml_oarchive_impl.ipp at line 6, boost/archive/impl/xml_woarchive_impl.ipp at line 6, boost/bind/apply.hpp at line 10, boost/bind/arg.hpp at line 16, boost/bind/bind.hpp at line 18, boost/bind/bind_cc.hpp at line 9, boost/bind/bind_mf_cc.hpp at line 9, boost/bind/bind_template.hpp at line 9, boost/bind/make_adaptable.hpp at line 10, boost/bind/mem_fn.hpp at line 18, boost/bind/mem_fn_cc.hpp at line 9, boost/bind/mem_fn_template.hpp at line 9, boost/bind/protect.hpp at line 11, boost/blank.hpp at line 10, boost/blank_fwd.hpp at line 10, boost/concept_archetype.hpp at line 4, boost/concept_check.hpp at line 6, boost/config/detail/suffix.hpp at line 14, boost/config/workaround.hpp at line 3, boost/core/ref.hpp at line 26, boost/core/swap.hpp at line 4, boost/detail/basic_pointerbuf.hpp at line 10, boost/detail/indirect_traits.hpp at line 3, boost/detail/iterator.hpp at line 3, boost/detail/named_template_params.hpp at line 3, boost/detail/numeric_traits.hpp at line 4, boost/detail/reference_content.hpp at line 10, boost/detail/templated_streams.hpp at line 10, boost/detail/workaround.hpp at line 3, boost/foreach.hpp at line 6, boost/foreach_fwd.hpp at line 6, boost/function_output_iterator.hpp at line 3, boost/generator_iterator.hpp at line 3, boost/get_pointer.hpp at line 3, boost/graph/adj_list_serialize.hpp at line 6, boost/graph/adjacency_iterator.hpp at line 6, boost/graph/adjacency_list.hpp at line 7, boost/graph/adjacency_list_io.hpp at line 6, boost/graph/adjacency_matrix.hpp at line 7, boost/graph/astar_search.hpp at line 8, boost/graph/bandwidth.hpp at line 4, boost/graph/bellman_ford_shortest_paths.hpp at line 7, boost/graph/biconnected_components.hpp at line 5, boost/graph/boyer_myrvold_planar_test.hpp at line 5, boost/graph/breadth_first_search.hpp at line 7, boost/graph/chrobak_payne_drawing.hpp at line 5, boost/graph/connected_components.hpp at line 7, boost/graph/copy.hpp at line 7, boost/graph/core_numbers.hpp at line 7, boost/graph/create_condensation_graph.hpp at line 6, boost/graph/cuthill_mckee_ordering.hpp at line 8, boost/graph/cycle_canceling.hpp at line 6, boost/graph/dag_shortest_paths.hpp at line 6, boost/graph/depth_first_search.hpp at line 7, boost/graph/detail/adj_list_edge_iterator.hpp at line 7, boost/graph/detail/adjacency_list.hpp at line 8, boost/graph/detail/array_binary_tree.hpp at line 7, boost/graph/detail/augment.hpp at line 6, boost/graph/detail/connected_components.hpp at line 6, boost/graph/detail/d_ary_heap.hpp at line 7, boost/graph/detail/edge.hpp at line 7, boost/graph/detail/incidence_iterator.hpp at line 7, boost/graph/detail/incremental_components.hpp at line 7, boost/graph/detail/list_base.hpp at line 6, boost/graph/detail/permutation.hpp at line 3, boost/graph/detail/self_avoiding_walk.hpp at line 6, boost/graph/detail/set_adaptor.hpp at line 3, boost/graph/detail/shadow_iterator.hpp at line 3, boost/graph/detail/sparse_ordering.hpp at line 8, boost/graph/dijkstra_shortest_paths.hpp at line 6, boost/graph/dijkstra_shortest_paths_no_color_map.hpp at line 7, boost/graph/dll_import_export.hpp at line 7, boost/graph/edge_coloring.hpp at line 6, boost/graph/edge_connectivity.hpp at line 6, boost/graph/edge_list.hpp at line 6, boost/graph/edmonds_karp_max_flow.hpp at line 6, boost/graph/exception.hpp at line 6, boost/graph/filtered_graph.hpp at line 6, boost/graph/find_flow_cost.hpp at line 6, boost/graph/graph_archetypes.hpp at line 6, boost/graph/graph_as_tree.hpp at line 7, boost/graph/graph_concepts.hpp at line 9, boost/graph/graph_selectors.hpp at line 6, boost/graph/graph_test.hpp at line 6, boost/graph/graph_traits.hpp at line 6, boost/graph/graph_utility.hpp at line 7, boost/graph/graphviz.hpp at line 7, boost/graph/grid_graph.hpp at line 6, boost/graph/incremental_components.hpp at line 8, boost/graph/is_kuratowski_subgraph.hpp at line 5, boost/graph/is_straight_line_drawing.hpp at line 5, boost/graph/isomorphism.hpp at line 4, boost/graph/iteration_macros.hpp at line 6, boost/graph/iteration_macros_undef.hpp at line 6, boost/graph/johnson_all_pairs_shortest.hpp at line 6, boost/graph/king_ordering.hpp at line 8, boost/graph/kruskal_min_spanning_tree.hpp at line 7, boost/graph/leda_graph.hpp at line 9, boost/graph/lookup_edge.hpp at line 6, boost/graph/make_biconnected_planar.hpp at line 5, boost/graph/make_connected.hpp at line 5, boost/graph/make_maximal_planar.hpp at line 5, boost/graph/matrix_as_graph.hpp at line 7, boost/graph/maximum_adjacency_search.hpp at line 7, boost/graph/mcgregor_common_subgraphs.hpp at line 6, boost/graph/metric_tsp_approx.hpp at line 7, boost/graph/minimum_degree_ordering.hpp at line 7, boost/graph/named_function_params.hpp at line 6, boost/graph/neighbor_bfs.hpp at line 7, boost/graph/planar_canonical_ordering.hpp at line 5, boost/graph/planar_detail/add_edge_visitors.hpp at line 5, boost/graph/planar_detail/boyer_myrvold_impl.hpp at line 5, boost/graph/planar_detail/bucket_sort.hpp at line 5, boost/graph/planar_detail/face_handles.hpp at line 5, boost/graph/planar_detail/face_iterators.hpp at line 5, boost/graph/planar_face_traversal.hpp at line 5, boost/graph/prim_minimum_spanning_tree.hpp at line 6, boost/graph/profile.hpp at line 7, boost/graph/properties.hpp at line 6, boost/graph/property_iter_range.hpp at line 5, boost/graph/push_relabel_max_flow.hpp at line 6, boost/graph/random.hpp at line 7, boost/graph/read_dimacs.hpp at line 6, boost/graph/relax.hpp at line 6, boost/graph/reverse_graph.hpp at line 3, boost/graph/sequential_vertex_coloring.hpp at line 7, boost/graph/simple_point.hpp at line 6, boost/graph/sloan_ordering.hpp at line 7, boost/graph/smallest_last_ordering.hpp at line 6, boost/graph/stanford_graph.hpp at line 6, boost/graph/strong_components.hpp at line 7, boost/graph/subgraph.hpp at line 6, boost/graph/successive_shortest_path_nonnegative_weights.hpp at line 6, boost/graph/topological_sort.hpp at line 7, boost/graph/transitive_closure.hpp at line 4, boost/graph/transpose_graph.hpp at line 7, boost/graph/tree_traits.hpp at line 3, boost/graph/undirected_dfs.hpp at line 7, boost/graph/vector_as_graph.hpp at line 8, boost/graph/vf2_sub_graph_iso.hpp at line 10, boost/graph/visitors.hpp at line 6, boost/graph/wavefront.hpp at line 7, boost/heap/binomial_heap.hpp at line 6, boost/heap/d_ary_heap.hpp at line 6, boost/heap/detail/heap_comparison.hpp at line 6, boost/heap/detail/heap_node.hpp at line 6, boost/heap/detail/ilog2.hpp at line 6, boost/heap/detail/mutable_heap.hpp at line 6, boost/heap/detail/ordered_adaptor_iterator.hpp at line 6, boost/heap/detail/stable_heap.hpp at line 6, boost/heap/detail/tree_iterator.hpp at line 6, boost/heap/fibonacci_heap.hpp at line 6, boost/heap/heap_concepts.hpp at line 6, boost/heap/heap_merge.hpp at line 6, boost/heap/pairing_heap.hpp at line 6, boost/heap/policies.hpp at line 6, boost/heap/priority_queue.hpp at line 6, boost/heap/skew_heap.hpp at line 6, boost/implicit_cast.hpp at line 3, boost/interprocess/detail/atomic.hpp at line 8, boost/interprocess/smart_ptr/detail/sp_counted_base_atomic.hpp at line 17, boost/interprocess/smart_ptr/detail/sp_counted_impl.hpp at line 21, boost/iterator/counting_iterator.hpp at line 3, boost/iterator/detail/config_def.hpp at line 5, boost/iterator/detail/config_undef.hpp at line 3, boost/iterator/detail/enable_if.hpp at line 5, boost/iterator/filter_iterator.hpp at line 5, boost/iterator/function_input_iterator.hpp at line 5, boost/iterator/function_output_iterator.hpp at line 3, boost/iterator/indirect_iterator.hpp at line 5, boost/iterator/interoperable.hpp at line 5, boost/iterator/iterator_adaptor.hpp at line 5, boost/iterator/iterator_archetypes.hpp at line 3, boost/iterator/iterator_categories.hpp at line 3, boost/iterator/iterator_concepts.hpp at line 3, boost/iterator/iterator_facade.hpp at line 5, boost/iterator/iterator_traits.hpp at line 3, boost/iterator/permutation_iterator.hpp at line 5, boost/iterator/reverse_iterator.hpp at line 5, boost/iterator/transform_iterator.hpp at line 5, boost/iterator/zip_iterator.hpp at line 5, boost/lambda/algorithm.hpp at line 6, boost/lambda/bind.hpp at line 7, boost/lambda/casts.hpp at line 7, boost/lambda/construct.hpp at line 7, boost/lambda/control_structures.hpp at line 5, boost/lambda/core.hpp at line 7, boost/lambda/detail/actions.hpp at line 6, boost/lambda/detail/arity_code.hpp at line 6, boost/lambda/detail/bind_functions.hpp at line 6, boost/lambda/detail/control_constructs_common.hpp at line 7, boost/lambda/detail/function_adaptors.hpp at line 6, boost/lambda/detail/is_instance_of.hpp at line 6, boost/lambda/detail/lambda_config.hpp at line 6, boost/lambda/detail/lambda_functor_base.hpp at line 6, boost/lambda/detail/lambda_functors.hpp at line 6, boost/lambda/detail/lambda_fwd.hpp at line 6, boost/lambda/detail/lambda_traits.hpp at line 6, boost/lambda/detail/member_ptr.hpp at line 7, boost/lambda/detail/operator_actions.hpp at line 6, boost/lambda/detail/operator_lambda_func_base.hpp at line 6, boost/lambda/detail/operator_return_type_traits.hpp at line 6, boost/lambda/detail/operators.hpp at line 6, boost/lambda/detail/ret.hpp at line 6, boost/lambda/detail/return_type_traits.hpp at line 6, boost/lambda/detail/select_functions.hpp at line 6, boost/lambda/detail/suppress_unused.hpp at line 6, boost/lambda/exceptions.hpp at line 7, boost/lambda/if.hpp at line 8, boost/lambda/lambda.hpp at line 5, boost/lambda/loops.hpp at line 8, boost/lambda/numeric.hpp at line 6, boost/lambda/switch.hpp at line 7, boost/lexical_cast.hpp at line 6, boost/lexical_cast/bad_lexical_cast.hpp at line 6, boost/lexical_cast/detail/converter_lexical.hpp at line 6, boost/lexical_cast/detail/converter_lexical_streams.hpp at line 6, boost/lexical_cast/detail/converter_numeric.hpp at line 6, boost/lexical_cast/detail/inf_nan.hpp at line 6, boost/lexical_cast/detail/is_character.hpp at line 6, boost/lexical_cast/detail/lcast_char_constants.hpp at line 6, boost/lexical_cast/detail/lcast_unsigned_converters.hpp at line 6, boost/lexical_cast/detail/widest_char.hpp at line 6, boost/lexical_cast/lexical_cast_old.hpp at line 6, boost/lexical_cast/try_lexical_convert.hpp at line 6, boost/lockfree/detail/parameter.hpp at line 6, boost/lockfree/policies.hpp at line 6, boost/pending/bucket_sorter.hpp at line 7, boost/pending/disjoint_sets.hpp at line 7, boost/pending/fibonacci_heap.hpp at line 3, boost/pending/indirect_cmp.hpp at line 7, boost/pending/is_heap.hpp at line 7, boost/pending/iterator_adaptors.hpp at line 3, boost/pending/iterator_tests.hpp at line 3, boost/pending/mutable_heap.hpp at line 7, boost/pending/mutable_queue.hpp at line 7, boost/program_options.hpp at line 3, boost/property_map/compose_property_map.hpp at line 5, boost/property_map/function_property_map.hpp at line 8, boost/property_map/parallel/parallel_property_maps.hpp at line 6, boost/property_map/parallel/vector_property_map.hpp at line 3, boost/property_map/property_map.hpp at line 6, boost/property_map/property_map_iterator.hpp at line 3, boost/property_map/shared_array_property_map.hpp at line 5, boost/property_map/transform_value_property_map.hpp at line 8, boost/property_map/vector_property_map.hpp at line 3, boost/ptr_container/detail/serialize_ptr_map_adapter.hpp at line 3, boost/ptr_container/detail/serialize_reversible_cont.hpp at line 3, boost/ptr_container/serialize_ptr_array.hpp at line 3, boost/ptr_container/serialize_ptr_container.hpp at line 3, boost/ptr_container/serialize_ptr_deque.hpp at line 3, boost/ptr_container/serialize_ptr_list.hpp at line 3, boost/ptr_container/serialize_ptr_map.hpp at line 3, boost/ptr_container/serialize_ptr_set.hpp at line 3, boost/ptr_container/serialize_ptr_vector.hpp at line 3, boost/python.hpp at line 3, boost/python/arg_from_python.hpp at line 3, boost/python/args.hpp at line 3, boost/python/args_fwd.hpp at line 3, boost/python/back_reference.hpp at line 3, boost/python/base_type_traits.hpp at line 3, boost/python/bases.hpp at line 3, boost/python/borrowed.hpp at line 3, boost/python/call.hpp at line 5, boost/python/call_method.hpp at line 5, boost/python/cast.hpp at line 3, boost/python/class.hpp at line 3, boost/python/class_fwd.hpp at line 3, boost/python/converter/arg_from_python.hpp at line 3, boost/python/converter/arg_to_python.hpp at line 3, boost/python/converter/arg_to_python_base.hpp at line 3, boost/python/converter/as_to_python_function.hpp at line 3, boost/python/converter/builtin_converters.hpp at line 3, boost/python/converter/constructor_function.hpp at line 3, boost/python/converter/context_result_converter.hpp at line 3, boost/python/converter/convertible_function.hpp at line 3, boost/python/converter/from_python.hpp at line 3, boost/python/converter/implicit.hpp at line 3, boost/python/converter/obj_mgr_arg_from_python.hpp at line 3, boost/python/converter/object_manager.hpp at line 3, boost/python/converter/pointer_type_id.hpp at line 3, boost/python/converter/pyobject_traits.hpp at line 3, boost/python/converter/pyobject_type.hpp at line 3, boost/python/converter/pytype_function.hpp at line 3, boost/python/converter/pytype_object_mgr_traits.hpp at line 3, boost/python/converter/registered.hpp at line 4, boost/python/converter/registered_pointee.hpp at line 3, boost/python/converter/registrations.hpp at line 3, boost/python/converter/registry.hpp at line 3, boost/python/converter/return_from_python.hpp at line 3, boost/python/converter/rvalue_from_python_data.hpp at line 3, boost/python/converter/shared_ptr_deleter.hpp at line 3, boost/python/converter/shared_ptr_from_python.hpp at line 4, boost/python/converter/shared_ptr_to_python.hpp at line 4, boost/python/converter/to_python_function_type.hpp at line 3, boost/python/copy_const_reference.hpp at line 3, boost/python/copy_non_const_reference.hpp at line 3, boost/python/data_members.hpp at line 3, boost/python/def.hpp at line 3, boost/python/def_visitor.hpp at line 3, boost/python/default_call_policies.hpp at line 3, boost/python/detail/aix_init_module.hpp at line 3, boost/python/detail/api_placeholder.hpp at line 3, boost/python/detail/borrowed_ptr.hpp at line 5, boost/python/detail/caller.hpp at line 5, boost/python/detail/config.hpp at line 3, boost/python/detail/construct.hpp at line 3, boost/python/detail/convertible.hpp at line 3, boost/python/detail/copy_ctor_mutates_rhs.hpp at line 3, boost/python/detail/cv_category.hpp at line 3, boost/python/detail/dealloc.hpp at line 3, boost/python/detail/decorated_type_id.hpp at line 3, boost/python/detail/decref_guard.hpp at line 3, boost/python/detail/def_helper.hpp at line 3, boost/python/detail/def_helper_fwd.hpp at line 3, boost/python/detail/defaults_def.hpp at line 5, boost/python/detail/defaults_gen.hpp at line 5, boost/python/detail/dependent.hpp at line 3, boost/python/detail/destroy.hpp at line 3, boost/python/detail/exception_handler.hpp at line 3, boost/python/detail/force_instantiate.hpp at line 3, boost/python/detail/if_else.hpp at line 3, boost/python/detail/invoke.hpp at line 5, boost/python/detail/is_auto_ptr.hpp at line 3, boost/python/detail/is_shared_ptr.hpp at line 4, boost/python/detail/is_xxx.hpp at line 3, boost/python/detail/make_keyword_range_fn.hpp at line 3, boost/python/detail/map_entry.hpp at line 3, boost/python/detail/mpl_lambda.hpp at line 3, boost/python/detail/msvc_typeinfo.hpp at line 3, boost/python/detail/none.hpp at line 3, boost/python/detail/not_specified.hpp at line 3, boost/python/detail/nullary_function_adaptor.hpp at line 3, boost/python/detail/operator_id.hpp at line 3, boost/python/detail/overloads_fwd.hpp at line 3, boost/python/detail/pointee.hpp at line 3, boost/python/detail/prefix.hpp at line 3, boost/python/detail/preprocessor.hpp at line 3, boost/python/detail/python_type.hpp at line 3, boost/python/detail/raw_pyobject.hpp at line 3, boost/python/detail/referent_storage.hpp at line 3, boost/python/detail/result.hpp at line 5, boost/python/detail/scope.hpp at line 3, boost/python/detail/signature.hpp at line 5, boost/python/detail/string_literal.hpp at line 3, boost/python/detail/target.hpp at line 5, boost/python/detail/translate_exception.hpp at line 3, boost/python/detail/type_list.hpp at line 3, boost/python/detail/type_list_impl.hpp at line 4, boost/python/detail/type_traits.hpp at line 3, boost/python/detail/unwind_type.hpp at line 3, boost/python/detail/value_is_shared_ptr.hpp at line 4, boost/python/detail/value_is_xxx.hpp at line 3, boost/python/detail/void_ptr.hpp at line 3, boost/python/detail/void_return.hpp at line 3, boost/python/detail/wrap_python.hpp at line 3, boost/python/dict.hpp at line 3, boost/python/docstring_options.hpp at line 3, boost/python/enum.hpp at line 3, boost/python/errors.hpp at line 3, boost/python/exception_translator.hpp at line 3, boost/python/exec.hpp at line 3, boost/python/extract.hpp at line 3, boost/python/handle.hpp at line 3, boost/python/handle_fwd.hpp at line 3, boost/python/has_back_reference.hpp at line 3, boost/python/implicit.hpp at line 3, boost/python/import.hpp at line 3, boost/python/init.hpp at line 5, boost/python/instance_holder.hpp at line 3, boost/python/iterator.hpp at line 3, boost/python/list.hpp at line 3, boost/python/long.hpp at line 3, boost/python/lvalue_from_pytype.hpp at line 3, boost/python/make_constructor.hpp at line 3, boost/python/make_function.hpp at line 3, boost/python/manage_new_object.hpp at line 3, boost/python/module.hpp at line 3, boost/python/module_init.hpp at line 3, boost/python/numpy/config.hpp at line 3, boost/python/object.hpp at line 3, boost/python/object/add_to_namespace.hpp at line 3, boost/python/object/class.hpp at line 3, boost/python/object/class_detail.hpp at line 3, boost/python/object/class_wrapper.hpp at line 3, boost/python/object/enum_base.hpp at line 3, boost/python/object/find_instance.hpp at line 3, boost/python/object/forward.hpp at line 3, boost/python/object/function.hpp at line 3, boost/python/object/function_doc_signature.hpp at line 3, boost/python/object/function_handle.hpp at line 3, boost/python/object/function_object.hpp at line 3, boost/python/object/inheritance.hpp at line 3, boost/python/object/inheritance_query.hpp at line 3, boost/python/object/instance.hpp at line 3, boost/python/object/iterator.hpp at line 3, boost/python/object/iterator_core.hpp at line 3, boost/python/object/life_support.hpp at line 3, boost/python/object/make_holder.hpp at line 5, boost/python/object/make_instance.hpp at line 3, boost/python/object/make_ptr_instance.hpp at line 3, boost/python/object/pointer_holder.hpp at line 5, boost/python/object/py_function.hpp at line 3, boost/python/object/stl_iterator_core.hpp at line 3, boost/python/object/value_holder.hpp at line 5, boost/python/object/value_holder_fwd.hpp at line 3, boost/python/object_attributes.hpp at line 3, boost/python/object_core.hpp at line 3, boost/python/object_fwd.hpp at line 3, boost/python/object_items.hpp at line 3, boost/python/object_operators.hpp at line 3, boost/python/object_protocol.hpp at line 3, boost/python/object_protocol_core.hpp at line 3, boost/python/object_slices.hpp at line 3, boost/python/opaque_pointer_converter.hpp at line 3, boost/python/operators.hpp at line 3, boost/python/other.hpp at line 7, boost/python/overloads.hpp at line 3, boost/python/pointee.hpp at line 3, boost/python/proxy.hpp at line 3, boost/python/ptr.hpp at line 7, boost/python/pure_virtual.hpp at line 3, boost/python/raw_function.hpp at line 3, boost/python/refcount.hpp at line 3, boost/python/reference_existing_object.hpp at line 3, boost/python/register_ptr_to_python.hpp at line 3, boost/python/return_arg.hpp at line 3, boost/python/return_by_value.hpp at line 3, boost/python/return_internal_reference.hpp at line 3, boost/python/return_opaque_pointer.hpp at line 3, boost/python/return_value_policy.hpp at line 3, boost/python/scope.hpp at line 3, boost/python/self.hpp at line 3, boost/python/signature.hpp at line 5, boost/python/slice_nil.hpp at line 3, boost/python/ssize_t.hpp at line 3, boost/python/stl_iterator.hpp at line 3, boost/python/str.hpp at line 3, boost/python/tag.hpp at line 3, boost/python/to_python_converter.hpp at line 3, boost/python/to_python_indirect.hpp at line 3, boost/python/to_python_value.hpp at line 4, boost/python/tuple.hpp at line 3, boost/python/type_id.hpp at line 3, boost/python/with_custodian_and_ward.hpp at line 3, boost/range/algorithm.hpp at line 10, boost/range/numeric.hpp at line 13, boost/range/numeric.hpp at line 3, boost/range/numeric.hpp at line 8, boost/serialization/detail/shared_count_132.hpp at line 16, boost/serialization/throw_exception.hpp at line 15, boost/signals2/detail/auto_buffer.hpp at line 3, boost/signals2/detail/lwm_nop.hpp at line 8, boost/signals2/detail/lwm_pthreads.hpp at line 8, boost/signals2/detail/lwm_win32_cs.hpp at line 9, boost/signals2/mutex.hpp at line 8, boost/smart_ptr/bad_weak_ptr.hpp at line 16, boost/smart_ptr/detail/atomic_count_pt.hpp at line 10, boost/smart_ptr/detail/atomic_count_solaris.hpp at line 12, boost/smart_ptr/detail/atomic_count_win32.hpp at line 16, boost/smart_ptr/detail/lightweight_mutex.hpp at line 16, boost/smart_ptr/detail/lwm_nop.hpp at line 16, boost/smart_ptr/detail/lwm_pthreads.hpp at line 16, boost/smart_ptr/detail/lwm_win32_cs.hpp at line 17, boost/smart_ptr/detail/quick_allocator.hpp at line 17, boost/smart_ptr/detail/shared_count.hpp at line 17, boost/smart_ptr/detail/sp_counted_base.hpp at line 16, boost/smart_ptr/detail/sp_counted_base_nt.hpp at line 17, boost/smart_ptr/detail/sp_counted_base_pt.hpp at line 17, boost/smart_ptr/detail/sp_counted_impl.hpp at line 17, boost/stacktrace.hpp at line 4, boost/stacktrace/detail/addr2line_impls.hpp at line 4, boost/stacktrace/detail/collect_msvc.ipp at line 4, boost/stacktrace/detail/collect_noop.ipp at line 4, boost/stacktrace/detail/collect_unwind.ipp at line 4, boost/stacktrace/detail/frame_decl.hpp at line 4, boost/stacktrace/detail/frame_msvc.ipp at line 4, boost/stacktrace/detail/frame_noop.ipp at line 4, boost/stacktrace/detail/frame_unwind.ipp at line 4, boost/stacktrace/detail/libbacktrace_impls.hpp at line 4, boost/stacktrace/detail/location_from_symbol.hpp at line 4, boost/stacktrace/detail/pop_options.h at line 4, boost/stacktrace/detail/push_options.h at line 4, boost/stacktrace/detail/safe_dump_noop.ipp at line 4, boost/stacktrace/detail/safe_dump_posix.ipp at line 4, boost/stacktrace/detail/safe_dump_win.ipp at line 4, boost/stacktrace/detail/to_hex_array.hpp at line 4, boost/stacktrace/detail/unwind_base_impls.hpp at line 4, boost/stacktrace/frame.hpp at line 4, boost/stacktrace/safe_dump_to.hpp at line 4, boost/stacktrace/stacktrace.hpp at line 4, boost/stacktrace/stacktrace_fwd.hpp at line 4, boost/thread/caller_context.hpp at line 3, boost/thread/completion_latch.hpp at line 2, boost/thread/detail/counter.hpp at line 2, boost/thread/detail/force_cast.hpp at line 5, boost/thread/detail/lockable_wrapper.hpp at line 2, boost/thread/detail/move.hpp at line 2, boost/thread/detail/platform.hpp at line 4, boost/thread/detail/singleton.hpp at line 5, boost/thread/detail/thread.hpp at line 4, boost/thread/detail/thread_group.hpp at line 4, boost/thread/detail/thread_interruption.hpp at line 4, boost/thread/exceptional_ptr.hpp at line 2, boost/thread/externally_locked.hpp at line 3, boost/thread/externally_locked_stream.hpp at line 3, boost/thread/is_locked_by_this_thread.hpp at line 3, boost/thread/latch.hpp at line 2, boost/thread/lock_algorithms.hpp at line 2, boost/thread/lock_factories.hpp at line 2, boost/thread/lock_guard.hpp at line 2, boost/thread/lock_options.hpp at line 2, boost/thread/lock_traits.hpp at line 2, boost/thread/lock_types.hpp at line 2, boost/thread/lockable_traits.hpp at line 2, boost/thread/locks.hpp at line 2, boost/thread/ostream_buffer.hpp at line 3, boost/thread/pthread/condition_variable.hpp at line 4, boost/thread/pthread/condition_variable_fwd.hpp at line 4, boost/thread/pthread/mutex.hpp at line 6, boost/thread/pthread/recursive_mutex.hpp at line 6, boost/thread/pthread/thread_data.hpp at line 4, boost/thread/pthread/thread_heap_alloc.hpp at line 2, boost/thread/reverse_lock.hpp at line 2, boost/thread/scoped_thread.hpp at line 2, boost/thread/shared_lock_guard.hpp at line 2, boost/thread/strict_lock.hpp at line 2, boost/thread/synchronized_value.hpp at line 4, boost/thread/testable_mutex.hpp at line 3, boost/thread/thread_functors.hpp at line 2, boost/thread/thread_guard.hpp at line 2, boost/thread/tss.hpp at line 4, boost/thread/win32/condition_variable.hpp at line 4, boost/thread/win32/mfc_thread_init.hpp at line 4, boost/thread/win32/mutex.hpp at line 6, boost/thread/win32/thread_data.hpp at line 4, boost/thread/win32/thread_heap_alloc.hpp at line 2, boost/tuple/detail/tuple_basic.hpp at line 6, boost/tuple/tuple.hpp at line 6, boost/tuple/tuple_comparison.hpp at line 7, boost/tuple/tuple_io.hpp at line 7, boost/type.hpp at line 3, boost/type_traits/aligned_storage.hpp at line 10, boost/type_traits/floating_point_promotion.hpp at line 3, boost/type_traits/integral_promotion.hpp at line 3, boost/type_traits/promote.hpp at line 3, boost/units/absolute.hpp at line 8, boost/units/base_dimension.hpp at line 8, boost/units/base_unit.hpp at line 8, boost/units/base_units/angle/arcminute.hpp at line 8, boost/units/base_units/angle/arcsecond.hpp at line 8, boost/units/base_units/angle/degree.hpp at line 8, boost/units/base_units/angle/gradian.hpp at line 8, boost/units/base_units/angle/radian.hpp at line 8, boost/units/base_units/angle/revolution.hpp at line 8, boost/units/base_units/angle/steradian.hpp at line 8, boost/units/base_units/astronomical/astronomical_unit.hpp at line 8, boost/units/base_units/astronomical/light_day.hpp at line 8, boost/units/base_units/astronomical/light_hour.hpp at line 8, boost/units/base_units/astronomical/light_minute.hpp at line 8, boost/units/base_units/astronomical/light_second.hpp at line 8, boost/units/base_units/astronomical/light_year.hpp at line 8, boost/units/base_units/astronomical/parsec.hpp at line 8, boost/units/base_units/cgs/biot.hpp at line 8, boost/units/base_units/cgs/centimeter.hpp at line 8, boost/units/base_units/cgs/gram.hpp at line 8, boost/units/base_units/imperial/conversions.hpp at line 8, boost/units/base_units/imperial/drachm.hpp at line 8, boost/units/base_units/imperial/fluid_ounce.hpp at line 8, boost/units/base_units/imperial/foot.hpp at line 8, boost/units/base_units/imperial/furlong.hpp at line 8, boost/units/base_units/imperial/gallon.hpp at line 8, boost/units/base_units/imperial/gill.hpp at line 8, boost/units/base_units/imperial/grain.hpp at line 8, boost/units/base_units/imperial/hundredweight.hpp at line 8, boost/units/base_units/imperial/inch.hpp at line 8, boost/units/base_units/imperial/league.hpp at line 8, boost/units/base_units/imperial/mile.hpp at line 8, boost/units/base_units/imperial/ounce.hpp at line 8, boost/units/base_units/imperial/pint.hpp at line 8, boost/units/base_units/imperial/pound.hpp at line 8, boost/units/base_units/imperial/quart.hpp at line 8, boost/units/base_units/imperial/quarter.hpp at line 8, boost/units/base_units/imperial/stone.hpp at line 8, boost/units/base_units/imperial/thou.hpp at line 8, boost/units/base_units/imperial/ton.hpp at line 8, boost/units/base_units/imperial/yard.hpp at line 8, boost/units/base_units/information/bit.hpp at line 7, boost/units/base_units/information/byte.hpp at line 7, boost/units/base_units/information/hartley.hpp at line 7, boost/units/base_units/information/nat.hpp at line 7, boost/units/base_units/information/shannon.hpp at line 7, boost/units/base_units/metric/angstrom.hpp at line 8, boost/units/base_units/metric/are.hpp at line 8, boost/units/base_units/metric/atmosphere.hpp at line 8, boost/units/base_units/metric/bar.hpp at line 8, boost/units/base_units/metric/barn.hpp at line 8, boost/units/base_units/metric/day.hpp at line 8, boost/units/base_units/metric/fermi.hpp at line 8, boost/units/base_units/metric/hectare.hpp at line 8, boost/units/base_units/metric/hour.hpp at line 8, boost/units/base_units/metric/knot.hpp at line 8, boost/units/base_units/metric/liter.hpp at line 8, boost/units/base_units/metric/micron.hpp at line 8, boost/units/base_units/metric/minute.hpp at line 8, boost/units/base_units/metric/mmHg.hpp at line 8, boost/units/base_units/metric/nautical_mile.hpp at line 8, boost/units/base_units/metric/ton.hpp at line 8, boost/units/base_units/metric/torr.hpp at line 8, boost/units/base_units/metric/year.hpp at line 8, boost/units/base_units/si/ampere.hpp at line 8, boost/units/base_units/si/candela.hpp at line 8, boost/units/base_units/si/kelvin.hpp at line 8, boost/units/base_units/si/kilogram.hpp at line 8, boost/units/base_units/si/meter.hpp at line 8, boost/units/base_units/si/mole.hpp at line 8, boost/units/base_units/si/second.hpp at line 8, boost/units/base_units/temperature/celsius.hpp at line 8, boost/units/base_units/temperature/conversions.hpp at line 8, boost/units/base_units/temperature/fahrenheit.hpp at line 8, boost/units/base_units/us/cup.hpp at line 8, boost/units/base_units/us/dram.hpp at line 8, boost/units/base_units/us/fluid_dram.hpp at line 8, boost/units/base_units/us/fluid_ounce.hpp at line 8, boost/units/base_units/us/foot.hpp at line 8, boost/units/base_units/us/gallon.hpp at line 8, boost/units/base_units/us/gill.hpp at line 8, boost/units/base_units/us/grain.hpp at line 8, boost/units/base_units/us/hundredweight.hpp at line 8, boost/units/base_units/us/inch.hpp at line 8, boost/units/base_units/us/mil.hpp at line 8, boost/units/base_units/us/mile.hpp at line 8, boost/units/base_units/us/minim.hpp at line 8, boost/units/base_units/us/ounce.hpp at line 8, boost/units/base_units/us/pint.hpp at line 8, boost/units/base_units/us/pound.hpp at line 8, boost/units/base_units/us/pound_force.hpp at line 8, boost/units/base_units/us/quart.hpp at line 8, boost/units/base_units/us/tablespoon.hpp at line 8, boost/units/base_units/us/teaspoon.hpp at line 8, boost/units/base_units/us/ton.hpp at line 8, boost/units/base_units/us/yard.hpp at line 8, boost/units/cmath.hpp at line 8, boost/units/config.hpp at line 8, boost/units/conversion.hpp at line 8, boost/units/derived_dimension.hpp at line 8, boost/units/detail/absolute_impl.hpp at line 8, boost/units/detail/cmath_impl.hpp at line 8, boost/units/detail/conversion_impl.hpp at line 8, boost/units/detail/dim_impl.hpp at line 8, boost/units/detail/dimension_impl.hpp at line 8, boost/units/detail/dimension_list.hpp at line 8, boost/units/detail/dimensionless_unit.hpp at line 8, boost/units/detail/heterogeneous_conversion.hpp at line 8, boost/units/detail/linear_algebra.hpp at line 8, boost/units/detail/one.hpp at line 8, boost/units/detail/ordinal.hpp at line 8, boost/units/detail/prevent_redefinition.hpp at line 8, boost/units/detail/push_front_if.hpp at line 8, boost/units/detail/push_front_or_add.hpp at line 8, boost/units/detail/sort.hpp at line 8, boost/units/detail/static_rational_power.hpp at line 8, boost/units/detail/unscale.hpp at line 8, boost/units/detail/utility.hpp at line 8, boost/units/dim.hpp at line 8, boost/units/dimension.hpp at line 8, boost/units/dimensionless_quantity.hpp at line 8, boost/units/dimensionless_type.hpp at line 8, boost/units/dimensionless_unit.hpp at line 8, boost/units/get_dimension.hpp at line 8, boost/units/get_system.hpp at line 8, boost/units/heterogeneous_system.hpp at line 8, boost/units/homogeneous_system.hpp at line 8, boost/units/io.hpp at line 8, boost/units/is_dim.hpp at line 8, boost/units/is_dimension_list.hpp at line 8, boost/units/is_dimensionless.hpp at line 8, boost/units/is_dimensionless_quantity.hpp at line 8, boost/units/is_dimensionless_unit.hpp at line 8, boost/units/is_quantity.hpp at line 8, boost/units/is_quantity_of_dimension.hpp at line 8, boost/units/is_quantity_of_system.hpp at line 8, boost/units/is_unit.hpp at line 8, boost/units/is_unit_of_dimension.hpp at line 8, boost/units/is_unit_of_system.hpp at line 8, boost/units/lambda.hpp at line 8, boost/units/limits.hpp at line 8, boost/units/make_scaled_unit.hpp at line 8, boost/units/make_system.hpp at line 8, boost/units/operators.hpp at line 8, boost/units/physical_dimensions.hpp at line 8, boost/units/physical_dimensions/absorbed_dose.hpp at line 8, boost/units/physical_dimensions/acceleration.hpp at line 8, boost/units/physical_dimensions/action.hpp at line 8, boost/units/physical_dimensions/activity.hpp at line 8, boost/units/physical_dimensions/amount.hpp at line 8, boost/units/physical_dimensions/angular_acceleration.hpp at line 8, boost/units/physical_dimensions/angular_momentum.hpp at line 8, boost/units/physical_dimensions/angular_velocity.hpp at line 8, boost/units/physical_dimensions/area.hpp at line 8, boost/units/physical_dimensions/capacitance.hpp at line 8, boost/units/physical_dimensions/conductance.hpp at line 8, boost/units/physical_dimensions/conductivity.hpp at line 8, boost/units/physical_dimensions/current.hpp at line 8, boost/units/physical_dimensions/dose_equivalent.hpp at line 8, boost/units/physical_dimensions/dynamic_viscosity.hpp at line 8, boost/units/physical_dimensions/electric_charge.hpp at line 8, boost/units/physical_dimensions/electric_potential.hpp at line 8, boost/units/physical_dimensions/energy.hpp at line 8, boost/units/physical_dimensions/energy_density.hpp at line 8, boost/units/physical_dimensions/force.hpp at line 8, boost/units/physical_dimensions/frequency.hpp at line 8, boost/units/physical_dimensions/heat_capacity.hpp at line 8, boost/units/physical_dimensions/illuminance.hpp at line 8, boost/units/physical_dimensions/impedance.hpp at line 8, boost/units/physical_dimensions/inductance.hpp at line 8, boost/units/physical_dimensions/information.hpp at line 7, boost/units/physical_dimensions/kinematic_viscosity.hpp at line 8, boost/units/physical_dimensions/length.hpp at line 8, boost/units/physical_dimensions/luminance.hpp at line 8, boost/units/physical_dimensions/luminous_flux.hpp at line 8, boost/units/physical_dimensions/luminous_intensity.hpp at line 8, boost/units/physical_dimensions/magnetic_field_intensity.hpp at line 8, boost/units/physical_dimensions/magnetic_flux.hpp at line 8, boost/units/physical_dimensions/magnetic_flux_density.hpp at line 8, boost/units/physical_dimensions/mass.hpp at line 8, boost/units/physical_dimensions/mass_density.hpp at line 8, boost/units/physical_dimensions/molar_energy.hpp at line 8, boost/units/physical_dimensions/molar_heat_capacity.hpp at line 8, boost/units/physical_dimensions/moment_of_inertia.hpp at line 8, boost/units/physical_dimensions/momentum.hpp at line 8, boost/units/physical_dimensions/permeability.hpp at line 8, boost/units/physical_dimensions/permittivity.hpp at line 8, boost/units/physical_dimensions/plane_angle.hpp at line 8, boost/units/physical_dimensions/power.hpp at line 8, boost/units/physical_dimensions/pressure.hpp at line 8, boost/units/physical_dimensions/reluctance.hpp at line 8, boost/units/physical_dimensions/resistance.hpp at line 8, boost/units/physical_dimensions/resistivity.hpp at line 8, boost/units/physical_dimensions/solid_angle.hpp at line 8, boost/units/physical_dimensions/specific_energy.hpp at line 8, boost/units/physical_dimensions/specific_heat_capacity.hpp at line 8, boost/units/physical_dimensions/specific_volume.hpp at line 8, boost/units/physical_dimensions/stress.hpp at line 8, boost/units/physical_dimensions/surface_density.hpp at line 8, boost/units/physical_dimensions/surface_tension.hpp at line 8, boost/units/physical_dimensions/temperature.hpp at line 8, boost/units/physical_dimensions/thermal_conductivity.hpp at line 8, boost/units/physical_dimensions/time.hpp at line 8, boost/units/physical_dimensions/torque.hpp at line 8, boost/units/physical_dimensions/velocity.hpp at line 8, boost/units/physical_dimensions/volume.hpp at line 8, boost/units/physical_dimensions/wavenumber.hpp at line 8, boost/units/pow.hpp at line 8, boost/units/quantity.hpp at line 8, boost/units/reduce_unit.hpp at line 8, boost/units/scale.hpp at line 8, boost/units/scaled_base_unit.hpp at line 8, boost/units/static_constant.hpp at line 8, boost/units/static_rational.hpp at line 8, boost/units/systems/abstract.hpp at line 8, boost/units/systems/angle/degrees.hpp at line 8, boost/units/systems/angle/gradians.hpp at line 8, boost/units/systems/angle/revolutions.hpp at line 8, boost/units/systems/cgs.hpp at line 8, boost/units/systems/cgs/acceleration.hpp at line 8, boost/units/systems/cgs/area.hpp at line 8, boost/units/systems/cgs/base.hpp at line 8, boost/units/systems/cgs/current.hpp at line 8, boost/units/systems/cgs/dimensionless.hpp at line 8, boost/units/systems/cgs/dynamic_viscosity.hpp at line 8, boost/units/systems/cgs/energy.hpp at line 8, boost/units/systems/cgs/force.hpp at line 8, boost/units/systems/cgs/frequency.hpp at line 8, boost/units/systems/cgs/io.hpp at line 8, boost/units/systems/cgs/kinematic_viscosity.hpp at line 8, boost/units/systems/cgs/length.hpp at line 8, boost/units/systems/cgs/mass.hpp at line 8, boost/units/systems/cgs/mass_density.hpp at line 8, boost/units/systems/cgs/momentum.hpp at line 8, boost/units/systems/cgs/power.hpp at line 8, boost/units/systems/cgs/pressure.hpp at line 8, boost/units/systems/cgs/time.hpp at line 8, boost/units/systems/cgs/velocity.hpp at line 8, boost/units/systems/cgs/volume.hpp at line 8, boost/units/systems/cgs/wavenumber.hpp at line 8, boost/units/systems/detail/constants.hpp at line 8, boost/units/systems/information.hpp at line 7, boost/units/systems/information/bit.hpp at line 7, boost/units/systems/information/byte.hpp at line 7, boost/units/systems/information/hartley.hpp at line 7, boost/units/systems/information/nat.hpp at line 7, boost/units/systems/information/prefixes.hpp at line 7, boost/units/systems/information/shannon.hpp at line 7, boost/units/systems/si.hpp at line 8, boost/units/systems/si/absorbed_dose.hpp at line 8, boost/units/systems/si/acceleration.hpp at line 8, boost/units/systems/si/action.hpp at line 8, boost/units/systems/si/activity.hpp at line 8, boost/units/systems/si/amount.hpp at line 8, boost/units/systems/si/angular_acceleration.hpp at line 8, boost/units/systems/si/angular_momentum.hpp at line 8, boost/units/systems/si/angular_velocity.hpp at line 8, boost/units/systems/si/area.hpp at line 8, boost/units/systems/si/base.hpp at line 8, boost/units/systems/si/capacitance.hpp at line 8, boost/units/systems/si/catalytic_activity.hpp at line 8, boost/units/systems/si/codata/alpha_constants.hpp at line 8, boost/units/systems/si/codata/atomic-nuclear_constants.hpp at line 8, boost/units/systems/si/codata/deuteron_constants.hpp at line 8, boost/units/systems/si/codata/electromagnetic_constants.hpp at line 8, boost/units/systems/si/codata/electron_constants.hpp at line 8, boost/units/systems/si/codata/helion_constants.hpp at line 8, boost/units/systems/si/codata/muon_constants.hpp at line 8, boost/units/systems/si/codata/neutron_constants.hpp at line 8, boost/units/systems/si/codata/physico-chemical_constants.hpp at line 8, boost/units/systems/si/codata/proton_constants.hpp at line 8, boost/units/systems/si/codata/tau_constants.hpp at line 8, boost/units/systems/si/codata/triton_constants.hpp at line 8, boost/units/systems/si/codata/typedefs.hpp at line 8, boost/units/systems/si/codata/universal_constants.hpp at line 8, boost/units/systems/si/codata_constants.hpp at line 8, boost/units/systems/si/conductance.hpp at line 8, boost/units/systems/si/conductivity.hpp at line 8, boost/units/systems/si/current.hpp at line 8, boost/units/systems/si/dimensionless.hpp at line 8, boost/units/systems/si/dose_equivalent.hpp at line 8, boost/units/systems/si/dynamic_viscosity.hpp at line 8, boost/units/systems/si/electric_charge.hpp at line 8, boost/units/systems/si/electric_potential.hpp at line 8, boost/units/systems/si/energy.hpp at line 8, boost/units/systems/si/force.hpp at line 8, boost/units/systems/si/frequency.hpp at line 8, boost/units/systems/si/illuminance.hpp at line 8, boost/units/systems/si/impedance.hpp at line 8, boost/units/systems/si/inductance.hpp at line 8, boost/units/systems/si/io.hpp at line 8, boost/units/systems/si/kinematic_viscosity.hpp at line 8, boost/units/systems/si/length.hpp at line 8, boost/units/systems/si/luminous_flux.hpp at line 8, boost/units/systems/si/luminous_intensity.hpp at line 8, boost/units/systems/si/magnetic_field_intensity.hpp at line 8, boost/units/systems/si/magnetic_flux.hpp at line 8, boost/units/systems/si/magnetic_flux_density.hpp at line 8, boost/units/systems/si/mass.hpp at line 8, boost/units/systems/si/mass_density.hpp at line 8, boost/units/systems/si/moment_of_inertia.hpp at line 8, boost/units/systems/si/momentum.hpp at line 8, boost/units/systems/si/permeability.hpp at line 8, boost/units/systems/si/permittivity.hpp at line 8, boost/units/systems/si/plane_angle.hpp at line 8, boost/units/systems/si/power.hpp at line 8, boost/units/systems/si/prefixes.hpp at line 8, boost/units/systems/si/pressure.hpp at line 8, boost/units/systems/si/reluctance.hpp at line 8, boost/units/systems/si/resistance.hpp at line 8, boost/units/systems/si/resistivity.hpp at line 8, boost/units/systems/si/solid_angle.hpp at line 8, boost/units/systems/si/surface_density.hpp at line 8, boost/units/systems/si/surface_tension.hpp at line 8, boost/units/systems/si/temperature.hpp at line 8, boost/units/systems/si/time.hpp at line 8, boost/units/systems/si/torque.hpp at line 8, boost/units/systems/si/velocity.hpp at line 8, boost/units/systems/si/volume.hpp at line 8, boost/units/systems/si/wavenumber.hpp at line 8, boost/units/systems/temperature/celsius.hpp at line 8, boost/units/systems/temperature/fahrenheit.hpp at line 8, boost/units/unit.hpp at line 8, boost/units/units_fwd.hpp at line 8, boost/utility/value_init.hpp at line 4, boost/uuid/detail/md5.hpp at line 23, boost/uuid/detail/sha1.hpp at line 5, boost/uuid/nil_generator.hpp at line 5, boost/uuid/random_generator.hpp at line 6, boost/uuid/string_generator.hpp at line 5, boost/uuid/uuid.hpp at line 5, boost/uuid/uuid_generators.hpp at line 5, boost/uuid/uuid_io.hpp at line 5, boost/uuid/uuid_serialize.hpp at line 5, boost/variant.hpp at line 10, boost/variant/apply_visitor.hpp at line 10, boost/variant/bad_visit.hpp at line 10, boost/variant/detail/apply_visitor_binary.hpp at line 10, boost/variant/detail/apply_visitor_delayed.hpp at line 10, boost/variant/detail/apply_visitor_unary.hpp at line 10, boost/variant/detail/backup_holder.hpp at line 10, boost/variant/detail/cast_storage.hpp at line 10, boost/variant/detail/config.hpp at line 10, boost/variant/detail/element_index.hpp at line 9, boost/variant/detail/enable_recursive.hpp at line 10, boost/variant/detail/enable_recursive_fwd.hpp at line 10, boost/variant/detail/forced_return.hpp at line 10, boost/variant/detail/generic_result_type.hpp at line 10, boost/variant/detail/has_result_type.hpp at line 9, boost/variant/detail/hash_variant.hpp at line 10, boost/variant/detail/initializer.hpp at line 10, boost/variant/detail/make_variant_list.hpp at line 10, boost/variant/detail/over_sequence.hpp at line 12, boost/variant/detail/substitute.hpp at line 15, boost/variant/detail/substitute_fwd.hpp at line 10, boost/variant/detail/variant_io.hpp at line 10, boost/variant/detail/visitation_impl.hpp at line 10, boost/variant/get.hpp at line 10, boost/variant/polymorphic_get.hpp at line 9, boost/variant/recursive_variant.hpp at line 10, boost/variant/recursive_wrapper.hpp at line 10, boost/variant/recursive_wrapper_fwd.hpp at line 12, boost/variant/static_visitor.hpp at line 10, boost/variant/variant.hpp at line 10, boost/variant/variant_fwd.hpp at line 10, boost/variant/visitor_ptr.hpp at line 10, libs/python/src/converter/arg_to_python_base.cpp at line 3, libs/python/src/converter/builtin_converters.cpp at line 3, libs/python/src/converter/from_python.cpp at line 3, libs/python/src/converter/registry.cpp at line 3, libs/python/src/converter/type_id.cpp at line 3, libs/python/src/errors.cpp at line 3, libs/python/src/exec.cpp at line 3, libs/python/src/import.cpp at line 3, libs/python/src/list.cpp at line 3, libs/python/src/long.cpp at line 3, libs/python/src/module.cpp at line 3, libs/python/src/object/class.cpp at line 3, libs/python/src/object/enum.cpp at line 3, libs/python/src/object/function.cpp at line 3, libs/python/src/object/function_doc_signature.cpp at line 3, libs/python/src/object/inheritance.cpp at line 3, libs/python/src/object/iterator.cpp at line 3, libs/python/src/object/life_support.cpp at line 3, libs/python/src/object/stl_iterator.cpp at line 3, libs/python/src/object_operators.cpp at line 3, libs/python/src/object_protocol.cpp at line 3, libs/python/src/tuple.cpp at line 3, libs/thread/src/win32/thread.cpp at line 2
- License text:
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/aligned_storage.hpp [9:11]
- boost/any.hpp [333:335]
- boost/archive/detail/utf8_codecvt_facet.hpp [3:5]
- boost/archive/impl/xml_oarchive_impl.ipp [5:7]
- boost/archive/impl/xml_woarchive_impl.ipp [5:7]
- boost/bind/apply.hpp [9:11]
- boost/bind/arg.hpp [15:17]
- boost/bind/bind.hpp [17:19]
- boost/bind/bind_cc.hpp [8:10]
- boost/bind/bind_mf_cc.hpp [8:10]
- boost/bind/bind_template.hpp [8:10]
- boost/bind/make_adaptable.hpp [9:11]
- boost/bind/mem_fn.hpp [17:19]
- boost/bind/mem_fn_cc.hpp [8:10]
- boost/bind/mem_fn_template.hpp [8:10]
- boost/bind/protect.hpp [10:12]
- boost/blank.hpp [9:11]
- boost/blank_fwd.hpp [9:11]
- boost/concept_archetype.hpp [3:5]
- boost/concept_check.hpp [5:7]
- boost/config/detail/suffix.hpp [13:15]
- boost/config/workaround.hpp [2:4]
- boost/core/ref.hpp [25:27]
- boost/core/swap.hpp [3:5]
- boost/detail/basic_pointerbuf.hpp [9:11]
- boost/detail/indirect_traits.hpp [2:4]
- boost/detail/iterator.hpp [2:4]
- boost/detail/named_template_params.hpp [2:4]
- boost/detail/numeric_traits.hpp [3:5]
- boost/detail/reference_content.hpp [9:11]
- boost/detail/templated_streams.hpp [9:11]
- boost/detail/workaround.hpp [2:4]
- boost/foreach.hpp [5:7]
- boost/foreach_fwd.hpp [5:7]
- boost/function_output_iterator.hpp [2:4]
- boost/generator_iterator.hpp [2:4]
- boost/get_pointer.hpp [2:4]
- boost/graph/adj_list_serialize.hpp [5:7]
- boost/graph/adjacency_iterator.hpp [5:7]
- boost/graph/adjacency_list.hpp [6:8]
- boost/graph/adjacency_list_io.hpp [5:7]
- boost/graph/adjacency_matrix.hpp [6:8]
- boost/graph/astar_search.hpp [7:9]
- boost/graph/bandwidth.hpp [3:5]
- boost/graph/bellman_ford_shortest_paths.hpp [6:8]
- boost/graph/biconnected_components.hpp [4:6]
- boost/graph/boyer_myrvold_planar_test.hpp [4:6]
- boost/graph/breadth_first_search.hpp [6:8]
- boost/graph/chrobak_payne_drawing.hpp [4:6]
- boost/graph/connected_components.hpp [6:8]
- boost/graph/copy.hpp [6:8]
- boost/graph/core_numbers.hpp [6:8]
- boost/graph/create_condensation_graph.hpp [5:7]
- boost/graph/cuthill_mckee_ordering.hpp [7:9]
- boost/graph/cycle_canceling.hpp [5:7]
- boost/graph/dag_shortest_paths.hpp [5:7]
- boost/graph/depth_first_search.hpp [6:8]
- boost/graph/detail/adj_list_edge_iterator.hpp [6:8]
- boost/graph/detail/adjacency_list.hpp [7:9]
- boost/graph/detail/array_binary_tree.hpp [6:8]
- boost/graph/detail/augment.hpp [5:7]
- boost/graph/detail/connected_components.hpp [5:7]
- boost/graph/detail/d_ary_heap.hpp [6:8]
- boost/graph/detail/edge.hpp [6:8]
- boost/graph/detail/incidence_iterator.hpp [6:8]
- boost/graph/detail/incremental_components.hpp [6:8]
- boost/graph/detail/list_base.hpp [5:7]
- boost/graph/detail/permutation.hpp [2:4]
- boost/graph/detail/self_avoiding_walk.hpp [5:7]
- boost/graph/detail/set_adaptor.hpp [2:4]
- boost/graph/detail/shadow_iterator.hpp [2:4]
- boost/graph/detail/sparse_ordering.hpp [7:9]
- boost/graph/dijkstra_shortest_paths.hpp [5:7]
- boost/graph/dijkstra_shortest_paths_no_color_map.hpp [6:8]
- boost/graph/dll_import_export.hpp [6:8]
- boost/graph/edge_coloring.hpp [5:7]
- boost/graph/edge_connectivity.hpp [5:7]
- boost/graph/edge_list.hpp [5:7]
- boost/graph/edmonds_karp_max_flow.hpp [5:7]
- boost/graph/exception.hpp [5:7]
- boost/graph/filtered_graph.hpp [5:7]
- boost/graph/find_flow_cost.hpp [5:7]
- boost/graph/graph_archetypes.hpp [5:7]
- boost/graph/graph_as_tree.hpp [6:8]
- boost/graph/graph_concepts.hpp [8:10]
- boost/graph/graph_selectors.hpp [5:7]
- boost/graph/graph_test.hpp [5:7]
- boost/graph/graph_traits.hpp [5:7]
- boost/graph/graph_utility.hpp [6:8]
- boost/graph/graphviz.hpp [6:8]
- boost/graph/grid_graph.hpp [5:7]
- boost/graph/incremental_components.hpp [7:9]
- boost/graph/is_kuratowski_subgraph.hpp [4:6]
- boost/graph/is_straight_line_drawing.hpp [4:6]
- boost/graph/isomorphism.hpp [3:5]
- boost/graph/iteration_macros.hpp [5:7]
- boost/graph/iteration_macros_undef.hpp [5:7]
- boost/graph/johnson_all_pairs_shortest.hpp [5:7]
- boost/graph/king_ordering.hpp [7:9]
- boost/graph/kruskal_min_spanning_tree.hpp [6:8]
- boost/graph/leda_graph.hpp [8:10]
- boost/graph/lookup_edge.hpp [5:7]
- boost/graph/make_biconnected_planar.hpp [4:6]
- boost/graph/make_connected.hpp [4:6]
- boost/graph/make_maximal_planar.hpp [4:6]
- boost/graph/matrix_as_graph.hpp [6:8]
- boost/graph/maximum_adjacency_search.hpp [6:8]
- boost/graph/mcgregor_common_subgraphs.hpp [5:7]
- boost/graph/metric_tsp_approx.hpp [6:8]
- boost/graph/minimum_degree_ordering.hpp [6:8]
- boost/graph/named_function_params.hpp [5:7]
- boost/graph/neighbor_bfs.hpp [6:8]
- boost/graph/planar_canonical_ordering.hpp [4:6]
- boost/graph/planar_detail/add_edge_visitors.hpp [4:6]
- boost/graph/planar_detail/boyer_myrvold_impl.hpp [4:6]
- boost/graph/planar_detail/bucket_sort.hpp [4:6]
- boost/graph/planar_detail/face_handles.hpp [4:6]
- boost/graph/planar_detail/face_iterators.hpp [4:6]
- boost/graph/planar_face_traversal.hpp [4:6]
- boost/graph/prim_minimum_spanning_tree.hpp [5:7]
- boost/graph/profile.hpp [6:8]
- boost/graph/properties.hpp [5:7]
- boost/graph/property_iter_range.hpp [4:6]
- boost/graph/push_relabel_max_flow.hpp [5:7]
- boost/graph/random.hpp [6:8]
- boost/graph/read_dimacs.hpp [5:7]
- boost/graph/relax.hpp [5:7]
- boost/graph/reverse_graph.hpp [2:4]
- boost/graph/sequential_vertex_coloring.hpp [6:8]
- boost/graph/simple_point.hpp [5:7]
- boost/graph/sloan_ordering.hpp [6:8]
- boost/graph/smallest_last_ordering.hpp [5:7]
- boost/graph/stanford_graph.hpp [5:7]
- boost/graph/strong_components.hpp [6:8]
- boost/graph/subgraph.hpp [5:7]
- boost/graph/successive_shortest_path_nonnegative_weights.hpp [5:7]
- boost/graph/topological_sort.hpp [6:8]
- boost/graph/transitive_closure.hpp [3:5]
- boost/graph/transpose_graph.hpp [6:8]
- boost/graph/tree_traits.hpp [2:4]
- boost/graph/undirected_dfs.hpp [6:8]
- boost/graph/vector_as_graph.hpp [7:9]
- boost/graph/vf2_sub_graph_iso.hpp [9:11]
- boost/graph/visitors.hpp [5:7]
- boost/graph/wavefront.hpp [6:8]
- boost/heap/binomial_heap.hpp [5:7]
- boost/heap/d_ary_heap.hpp [5:7]
- boost/heap/detail/heap_comparison.hpp [5:7]
- boost/heap/detail/heap_node.hpp [5:7]
- boost/heap/detail/ilog2.hpp [5:7]
- boost/heap/detail/mutable_heap.hpp [5:7]
- boost/heap/detail/ordered_adaptor_iterator.hpp [5:7]
- boost/heap/detail/stable_heap.hpp [5:7]
- boost/heap/detail/tree_iterator.hpp [5:7]
- boost/heap/fibonacci_heap.hpp [5:7]
- boost/heap/heap_concepts.hpp [5:7]
- boost/heap/heap_merge.hpp [5:7]
- boost/heap/pairing_heap.hpp [5:7]
- boost/heap/policies.hpp [5:7]
- boost/heap/priority_queue.hpp [5:7]
- boost/heap/skew_heap.hpp [5:7]
- boost/implicit_cast.hpp [2:4]
- boost/interprocess/detail/atomic.hpp [7:9]
- boost/interprocess/smart_ptr/detail/sp_counted_base_atomic.hpp [16:18]
- boost/interprocess/smart_ptr/detail/sp_counted_impl.hpp [20:22]
- boost/iterator/counting_iterator.hpp [2:4]
- boost/iterator/detail/config_def.hpp [4:6]
- boost/iterator/detail/config_undef.hpp [2:4]
- boost/iterator/detail/enable_if.hpp [4:6]
- boost/iterator/filter_iterator.hpp [4:6]
- boost/iterator/function_input_iterator.hpp [4:6]
- boost/iterator/function_output_iterator.hpp [2:4]
- boost/iterator/indirect_iterator.hpp [4:6]
- boost/iterator/interoperable.hpp [4:6]
- boost/iterator/iterator_adaptor.hpp [4:6]
- boost/iterator/iterator_archetypes.hpp [2:4]
- boost/iterator/iterator_categories.hpp [2:4]
- boost/iterator/iterator_concepts.hpp [2:4]
- boost/iterator/iterator_facade.hpp [4:6]
- boost/iterator/iterator_traits.hpp [2:4]
- boost/iterator/permutation_iterator.hpp [4:6]
- boost/iterator/reverse_iterator.hpp [4:6]
- boost/iterator/transform_iterator.hpp [4:6]
- boost/iterator/zip_iterator.hpp [4:6]
- boost/lambda/algorithm.hpp [5:7]
- boost/lambda/bind.hpp [6:8]
- boost/lambda/casts.hpp [6:8]
- boost/lambda/construct.hpp [6:8]
- boost/lambda/control_structures.hpp [4:6]
- boost/lambda/core.hpp [6:8]
- boost/lambda/detail/actions.hpp [5:7]
- boost/lambda/detail/arity_code.hpp [5:7]
- boost/lambda/detail/bind_functions.hpp [5:7]
- boost/lambda/detail/control_constructs_common.hpp [6:8]
- boost/lambda/detail/function_adaptors.hpp [5:7]
- boost/lambda/detail/is_instance_of.hpp [5:7]
- boost/lambda/detail/lambda_config.hpp [5:7]
- boost/lambda/detail/lambda_functor_base.hpp [5:7]
- boost/lambda/detail/lambda_functors.hpp [5:7]
- boost/lambda/detail/lambda_fwd.hpp [5:7]
- boost/lambda/detail/lambda_traits.hpp [5:7]
- boost/lambda/detail/member_ptr.hpp [6:8]
- boost/lambda/detail/operator_actions.hpp [5:7]
- boost/lambda/detail/operator_lambda_func_base.hpp [5:7]
- boost/lambda/detail/operator_return_type_traits.hpp [5:7]
- boost/lambda/detail/operators.hpp [5:7]
- boost/lambda/detail/ret.hpp [5:7]
- boost/lambda/detail/return_type_traits.hpp [5:7]
- boost/lambda/detail/select_functions.hpp [5:7]
- boost/lambda/detail/suppress_unused.hpp [5:7]
- boost/lambda/exceptions.hpp [6:8]
- boost/lambda/if.hpp [7:9]
- boost/lambda/lambda.hpp [4:6]
- boost/lambda/loops.hpp [7:9]
- boost/lambda/numeric.hpp [5:7]
- boost/lambda/switch.hpp [6:8]
- boost/lexical_cast.hpp [5:7]
- boost/lexical_cast/bad_lexical_cast.hpp [5:7]
- boost/lexical_cast/detail/converter_lexical.hpp [5:7]
- boost/lexical_cast/detail/converter_lexical_streams.hpp [5:7]
- boost/lexical_cast/detail/converter_numeric.hpp [5:7]
- boost/lexical_cast/detail/inf_nan.hpp [5:7]
- boost/lexical_cast/detail/is_character.hpp [5:7]
- boost/lexical_cast/detail/lcast_char_constants.hpp [5:7]
- boost/lexical_cast/detail/lcast_unsigned_converters.hpp [5:7]
- boost/lexical_cast/detail/widest_char.hpp [5:7]
- boost/lexical_cast/lexical_cast_old.hpp [5:7]
- boost/lexical_cast/try_lexical_convert.hpp [5:7]
- boost/lockfree/detail/parameter.hpp [5:7]
- boost/lockfree/policies.hpp [5:7]
- boost/pending/bucket_sorter.hpp [6:8]
- boost/pending/disjoint_sets.hpp [6:8]
- boost/pending/fibonacci_heap.hpp [2:4]
- boost/pending/indirect_cmp.hpp [6:8]
- boost/pending/is_heap.hpp [6:8]
- boost/pending/iterator_adaptors.hpp [2:4]
- boost/pending/iterator_tests.hpp [2:4]
- boost/pending/mutable_heap.hpp [6:8]
- boost/pending/mutable_queue.hpp [6:8]
- boost/program_options.hpp [2:4]
- boost/property_map/compose_property_map.hpp [4:6]
- boost/property_map/function_property_map.hpp [7:9]
- boost/property_map/parallel/parallel_property_maps.hpp [5:7]
- boost/property_map/parallel/vector_property_map.hpp [2:4]
- boost/property_map/property_map.hpp [5:7]
- boost/property_map/property_map_iterator.hpp [2:4]
- boost/property_map/shared_array_property_map.hpp [4:6]
- boost/property_map/transform_value_property_map.hpp [7:9]
- boost/property_map/vector_property_map.hpp [2:4]
- boost/ptr_container/detail/serialize_ptr_map_adapter.hpp [2:4]
- boost/ptr_container/detail/serialize_reversible_cont.hpp [2:4]
- boost/ptr_container/serialize_ptr_array.hpp [2:4]
- boost/ptr_container/serialize_ptr_container.hpp [2:4]
- boost/ptr_container/serialize_ptr_deque.hpp [2:4]
- boost/ptr_container/serialize_ptr_list.hpp [2:4]
- boost/ptr_container/serialize_ptr_map.hpp [2:4]
- boost/ptr_container/serialize_ptr_set.hpp [2:4]
- boost/ptr_container/serialize_ptr_vector.hpp [2:4]
- boost/python.hpp [2:4]
- boost/python/arg_from_python.hpp [2:4]
- boost/python/args.hpp [2:4]
- boost/python/args_fwd.hpp [2:4]
- boost/python/back_reference.hpp [2:4]
- boost/python/base_type_traits.hpp [2:4]
- boost/python/bases.hpp [2:4]
- boost/python/borrowed.hpp [2:4]
- boost/python/call.hpp [4:6]
- boost/python/call_method.hpp [4:6]
- boost/python/cast.hpp [2:4]
- boost/python/class.hpp [2:4]
- boost/python/class_fwd.hpp [2:4]
- boost/python/converter/arg_from_python.hpp [2:4]
- boost/python/converter/arg_to_python.hpp [2:4]
- boost/python/converter/arg_to_python_base.hpp [2:4]
- boost/python/converter/as_to_python_function.hpp [2:4]
- boost/python/converter/builtin_converters.hpp [2:4]
- boost/python/converter/constructor_function.hpp [2:4]
- boost/python/converter/context_result_converter.hpp [2:4]
- boost/python/converter/convertible_function.hpp [2:4]
- boost/python/converter/from_python.hpp [2:4]
- boost/python/converter/implicit.hpp [2:4]
- boost/python/converter/obj_mgr_arg_from_python.hpp [2:4]
- boost/python/converter/object_manager.hpp [2:4]
- boost/python/converter/pointer_type_id.hpp [2:4]
- boost/python/converter/pyobject_traits.hpp [2:4]
- boost/python/converter/pyobject_type.hpp [2:4]
- boost/python/converter/pytype_function.hpp [2:4]
- boost/python/converter/pytype_object_mgr_traits.hpp [2:4]
- boost/python/converter/registered.hpp [3:5]
- boost/python/converter/registered_pointee.hpp [2:4]
- boost/python/converter/registrations.hpp [2:4]
- boost/python/converter/registry.hpp [2:4]
- boost/python/converter/return_from_python.hpp [2:4]
- boost/python/converter/rvalue_from_python_data.hpp [2:4]
- boost/python/converter/shared_ptr_deleter.hpp [2:4]
- boost/python/converter/shared_ptr_from_python.hpp [3:5]
- boost/python/converter/shared_ptr_to_python.hpp [3:5]
- boost/python/converter/to_python_function_type.hpp [2:4]
- boost/python/copy_const_reference.hpp [2:4]
- boost/python/copy_non_const_reference.hpp [2:4]
- boost/python/data_members.hpp [2:4]
- boost/python/def.hpp [2:4]
- boost/python/def_visitor.hpp [2:4]
- boost/python/default_call_policies.hpp [2:4]
- boost/python/detail/aix_init_module.hpp [2:4]
- boost/python/detail/api_placeholder.hpp [2:4]
- boost/python/detail/borrowed_ptr.hpp [4:6]
- boost/python/detail/caller.hpp [4:6]
- boost/python/detail/config.hpp [2:4]
- boost/python/detail/construct.hpp [2:4]
- boost/python/detail/convertible.hpp [2:4]
- boost/python/detail/copy_ctor_mutates_rhs.hpp [2:4]
- boost/python/detail/cv_category.hpp [2:4]
- boost/python/detail/dealloc.hpp [2:4]
- boost/python/detail/decorated_type_id.hpp [2:4]
- boost/python/detail/decref_guard.hpp [2:4]
- boost/python/detail/def_helper.hpp [2:4]
- boost/python/detail/def_helper_fwd.hpp [2:4]
- boost/python/detail/defaults_def.hpp [4:6]
- boost/python/detail/defaults_gen.hpp [4:6]
- boost/python/detail/dependent.hpp [2:4]
- boost/python/detail/destroy.hpp [2:4]
- boost/python/detail/exception_handler.hpp [2:4]
- boost/python/detail/force_instantiate.hpp [2:4]
- boost/python/detail/if_else.hpp [2:4]
- boost/python/detail/invoke.hpp [4:6]
- boost/python/detail/is_auto_ptr.hpp [2:4]
- boost/python/detail/is_shared_ptr.hpp [3:5]
- boost/python/detail/is_xxx.hpp [2:4]
- boost/python/detail/make_keyword_range_fn.hpp [2:4]
- boost/python/detail/map_entry.hpp [2:4]
- boost/python/detail/mpl_lambda.hpp [2:4]
- boost/python/detail/msvc_typeinfo.hpp [2:4]
- boost/python/detail/none.hpp [2:4]
- boost/python/detail/not_specified.hpp [2:4]
- boost/python/detail/nullary_function_adaptor.hpp [2:4]
- boost/python/detail/operator_id.hpp [2:4]
- boost/python/detail/overloads_fwd.hpp [2:4]
- boost/python/detail/pointee.hpp [2:4]
- boost/python/detail/prefix.hpp [2:4]
- boost/python/detail/preprocessor.hpp [2:4]
- boost/python/detail/python_type.hpp [2:4]
- boost/python/detail/raw_pyobject.hpp [2:4]
- boost/python/detail/referent_storage.hpp [2:4]
- boost/python/detail/result.hpp [4:6]
- boost/python/detail/scope.hpp [2:4]
- boost/python/detail/signature.hpp [4:6]
- boost/python/detail/string_literal.hpp [2:4]
- boost/python/detail/target.hpp [4:6]
- boost/python/detail/translate_exception.hpp [2:4]
- boost/python/detail/type_list.hpp [2:4]
- boost/python/detail/type_list_impl.hpp [3:5]
- boost/python/detail/type_traits.hpp [2:4]
- boost/python/detail/unwind_type.hpp [2:4]
- boost/python/detail/value_is_shared_ptr.hpp [3:5]
- boost/python/detail/value_is_xxx.hpp [2:4]
- boost/python/detail/void_ptr.hpp [2:4]
- boost/python/detail/void_return.hpp [2:4]
- boost/python/detail/wrap_python.hpp [2:4]
- boost/python/dict.hpp [2:4]
- boost/python/docstring_options.hpp [2:4]
- boost/python/enum.hpp [2:4]
- boost/python/errors.hpp [2:4]
- boost/python/exception_translator.hpp [2:4]
- boost/python/exec.hpp [2:4]
- boost/python/extract.hpp [2:4]
- boost/python/handle.hpp [2:4]
- boost/python/handle_fwd.hpp [2:4]
- boost/python/has_back_reference.hpp [2:4]
- boost/python/implicit.hpp [2:4]
- boost/python/import.hpp [2:4]
- boost/python/init.hpp [4:6]
- boost/python/instance_holder.hpp [2:4]
- boost/python/iterator.hpp [2:4]
- boost/python/list.hpp [2:4]
- boost/python/long.hpp [2:4]
- boost/python/lvalue_from_pytype.hpp [2:4]
- boost/python/make_constructor.hpp [2:4]
- boost/python/make_function.hpp [2:4]
- boost/python/manage_new_object.hpp [2:4]
- boost/python/module.hpp [2:4]
- boost/python/module_init.hpp [2:4]
- boost/python/numpy/config.hpp [2:4]
- boost/python/object.hpp [2:4]
- boost/python/object/add_to_namespace.hpp [2:4]
- boost/python/object/class.hpp [2:4]
- boost/python/object/class_detail.hpp [2:4]
- boost/python/object/class_wrapper.hpp [2:4]
- boost/python/object/enum_base.hpp [2:4]
- boost/python/object/find_instance.hpp [2:4]
- boost/python/object/forward.hpp [2:4]
- boost/python/object/function.hpp [2:4]
- boost/python/object/function_doc_signature.hpp [2:4]
- boost/python/object/function_handle.hpp [2:4]
- boost/python/object/function_object.hpp [2:4]
- boost/python/object/inheritance.hpp [2:4]
- boost/python/object/inheritance_query.hpp [2:4]
- boost/python/object/instance.hpp [2:4]
- boost/python/object/iterator.hpp [2:4]
- boost/python/object/iterator_core.hpp [2:4]
- boost/python/object/life_support.hpp [2:4]
- boost/python/object/make_holder.hpp [4:6]
- boost/python/object/make_instance.hpp [2:4]
- boost/python/object/make_ptr_instance.hpp [2:4]
- boost/python/object/pointer_holder.hpp [4:6]
- boost/python/object/py_function.hpp [2:4]
- boost/python/object/stl_iterator_core.hpp [2:4]
- boost/python/object/value_holder.hpp [4:6]
- boost/python/object/value_holder_fwd.hpp [2:4]
- boost/python/object_attributes.hpp [2:4]
- boost/python/object_core.hpp [2:4]
- boost/python/object_fwd.hpp [2:4]
- boost/python/object_items.hpp [2:4]
- boost/python/object_operators.hpp [2:4]
- boost/python/object_protocol.hpp [2:4]
- boost/python/object_protocol_core.hpp [2:4]
- boost/python/object_slices.hpp [2:4]
- boost/python/opaque_pointer_converter.hpp [2:4]
- boost/python/operators.hpp [2:4]
- boost/python/other.hpp [6:8]
- boost/python/overloads.hpp [2:4]
- boost/python/pointee.hpp [2:4]
- boost/python/proxy.hpp [2:4]
- boost/python/ptr.hpp [6:8]
- boost/python/pure_virtual.hpp [2:4]
- boost/python/raw_function.hpp [2:4]
- boost/python/refcount.hpp [2:4]
- boost/python/reference_existing_object.hpp [2:4]
- boost/python/register_ptr_to_python.hpp [2:4]
- boost/python/return_arg.hpp [2:4]
- boost/python/return_by_value.hpp [2:4]
- boost/python/return_internal_reference.hpp [2:4]
- boost/python/return_opaque_pointer.hpp [2:4]
- boost/python/return_value_policy.hpp [2:4]
- boost/python/scope.hpp [2:4]
- boost/python/self.hpp [2:4]
- boost/python/signature.hpp [4:6]
- boost/python/slice_nil.hpp [2:4]
- boost/python/ssize_t.hpp [2:4]
- boost/python/stl_iterator.hpp [2:4]
- boost/python/str.hpp [2:4]
- boost/python/tag.hpp [2:4]
- boost/python/to_python_converter.hpp [2:4]
- boost/python/to_python_indirect.hpp [2:4]
- boost/python/to_python_value.hpp [3:5]
- boost/python/tuple.hpp [2:4]
- boost/python/type_id.hpp [2:4]
- boost/python/with_custodian_and_ward.hpp [2:4]
- boost/range/algorithm.hpp [9:11]
- boost/range/numeric.hpp [2:4]
- boost/range/numeric.hpp [7:9]
- boost/range/numeric.hpp [12:14]
- boost/serialization/detail/shared_count_132.hpp [15:17]
- boost/serialization/throw_exception.hpp [14:16]
- boost/signals2/detail/auto_buffer.hpp [2:4]
- boost/signals2/detail/lwm_nop.hpp [7:9]
- boost/signals2/detail/lwm_pthreads.hpp [7:9]
- boost/signals2/detail/lwm_win32_cs.hpp [8:10]
- boost/signals2/mutex.hpp [7:9]
- boost/smart_ptr/bad_weak_ptr.hpp [15:17]
- boost/smart_ptr/detail/atomic_count_pt.hpp [9:11]
- boost/smart_ptr/detail/atomic_count_solaris.hpp [11:13]
- boost/smart_ptr/detail/atomic_count_win32.hpp [15:17]
- boost/smart_ptr/detail/lightweight_mutex.hpp [15:17]
- boost/smart_ptr/detail/lwm_nop.hpp [15:17]
- boost/smart_ptr/detail/lwm_pthreads.hpp [15:17]
- boost/smart_ptr/detail/lwm_win32_cs.hpp [16:18]
- boost/smart_ptr/detail/quick_allocator.hpp [16:18]
- boost/smart_ptr/detail/shared_count.hpp [16:18]
- boost/smart_ptr/detail/sp_counted_base.hpp [15:17]
- boost/smart_ptr/detail/sp_counted_base_nt.hpp [16:18]
- boost/smart_ptr/detail/sp_counted_base_pt.hpp [16:18]
- boost/smart_ptr/detail/sp_counted_impl.hpp [16:18]
- boost/stacktrace.hpp [3:5]
- boost/stacktrace/detail/addr2line_impls.hpp [3:5]
- boost/stacktrace/detail/collect_msvc.ipp [3:5]
- boost/stacktrace/detail/collect_noop.ipp [3:5]
- boost/stacktrace/detail/collect_unwind.ipp [3:5]
- boost/stacktrace/detail/frame_decl.hpp [3:5]
- boost/stacktrace/detail/frame_msvc.ipp [3:5]
- boost/stacktrace/detail/frame_noop.ipp [3:5]
- boost/stacktrace/detail/frame_unwind.ipp [3:5]
- boost/stacktrace/detail/libbacktrace_impls.hpp [3:5]
- boost/stacktrace/detail/location_from_symbol.hpp [3:5]
- boost/stacktrace/detail/pop_options.h [3:5]
- boost/stacktrace/detail/push_options.h [3:5]
- boost/stacktrace/detail/safe_dump_noop.ipp [3:5]
- boost/stacktrace/detail/safe_dump_posix.ipp [3:5]
- boost/stacktrace/detail/safe_dump_win.ipp [3:5]
- boost/stacktrace/detail/to_hex_array.hpp [3:5]
- boost/stacktrace/detail/unwind_base_impls.hpp [3:5]
- boost/stacktrace/frame.hpp [3:5]
- boost/stacktrace/safe_dump_to.hpp [3:5]
- boost/stacktrace/stacktrace.hpp [3:5]
- boost/stacktrace/stacktrace_fwd.hpp [3:5]
- boost/thread/caller_context.hpp [2:4]
- boost/thread/completion_latch.hpp [1:3]
- boost/thread/detail/counter.hpp [1:3]
- boost/thread/detail/force_cast.hpp [4:6]
- boost/thread/detail/lockable_wrapper.hpp [1:3]
- boost/thread/detail/move.hpp [1:3]
- boost/thread/detail/platform.hpp [3:5]
- boost/thread/detail/singleton.hpp [4:6]
- boost/thread/detail/thread.hpp [3:5]
- boost/thread/detail/thread_group.hpp [3:5]
- boost/thread/detail/thread_interruption.hpp [3:5]
- boost/thread/exceptional_ptr.hpp [1:3]
- boost/thread/externally_locked.hpp [2:4]
- boost/thread/externally_locked_stream.hpp [2:4]
- boost/thread/is_locked_by_this_thread.hpp [2:4]
- boost/thread/latch.hpp [1:3]
- boost/thread/lock_algorithms.hpp [1:3]
- boost/thread/lock_factories.hpp [1:3]
- boost/thread/lock_guard.hpp [1:3]
- boost/thread/lock_options.hpp [1:3]
- boost/thread/lock_traits.hpp [1:3]
- boost/thread/lock_types.hpp [1:3]
- boost/thread/lockable_traits.hpp [1:3]
- boost/thread/locks.hpp [1:3]
- boost/thread/ostream_buffer.hpp [2:4]
- boost/thread/pthread/condition_variable.hpp [3:5]
- boost/thread/pthread/condition_variable_fwd.hpp [3:5]
- boost/thread/pthread/mutex.hpp [5:7]
- boost/thread/pthread/recursive_mutex.hpp [5:7]
- boost/thread/pthread/thread_data.hpp [3:5]
- boost/thread/pthread/thread_heap_alloc.hpp [1:3]
- boost/thread/reverse_lock.hpp [1:3]
- boost/thread/scoped_thread.hpp [1:3]
- boost/thread/shared_lock_guard.hpp [1:3]
- boost/thread/strict_lock.hpp [1:3]
- boost/thread/synchronized_value.hpp [3:5]
- boost/thread/testable_mutex.hpp [2:4]
- boost/thread/thread_functors.hpp [1:3]
- boost/thread/thread_guard.hpp [1:3]
- boost/thread/tss.hpp [3:5]
- boost/thread/win32/condition_variable.hpp [3:5]
- boost/thread/win32/mfc_thread_init.hpp [3:5]
- boost/thread/win32/mutex.hpp [5:7]
- boost/thread/win32/thread_data.hpp [3:5]
- boost/thread/win32/thread_heap_alloc.hpp [1:3]
- boost/tuple/detail/tuple_basic.hpp [5:7]
- boost/tuple/tuple.hpp [5:7]
- boost/tuple/tuple_comparison.hpp [6:8]
- boost/tuple/tuple_io.hpp [6:8]
- boost/type.hpp [2:4]
- boost/type_traits/aligned_storage.hpp [9:11]
- boost/type_traits/floating_point_promotion.hpp [2:4]
- boost/type_traits/integral_promotion.hpp [2:4]
- boost/type_traits/promote.hpp [2:4]
- boost/units/absolute.hpp [7:9]
- boost/units/base_dimension.hpp [7:9]
- boost/units/base_unit.hpp [7:9]
- boost/units/base_units/angle/arcminute.hpp [7:9]
- boost/units/base_units/angle/arcsecond.hpp [7:9]
- boost/units/base_units/angle/degree.hpp [7:9]
- boost/units/base_units/angle/gradian.hpp [7:9]
- boost/units/base_units/angle/radian.hpp [7:9]
- boost/units/base_units/angle/revolution.hpp [7:9]
- boost/units/base_units/angle/steradian.hpp [7:9]
- boost/units/base_units/astronomical/astronomical_unit.hpp [7:9]
- boost/units/base_units/astronomical/light_day.hpp [7:9]
- boost/units/base_units/astronomical/light_hour.hpp [7:9]
- boost/units/base_units/astronomical/light_minute.hpp [7:9]
- boost/units/base_units/astronomical/light_second.hpp [7:9]
- boost/units/base_units/astronomical/light_year.hpp [7:9]
- boost/units/base_units/astronomical/parsec.hpp [7:9]
- boost/units/base_units/cgs/biot.hpp [7:9]
- boost/units/base_units/cgs/centimeter.hpp [7:9]
- boost/units/base_units/cgs/gram.hpp [7:9]
- boost/units/base_units/imperial/conversions.hpp [7:9]
- boost/units/base_units/imperial/drachm.hpp [7:9]
- boost/units/base_units/imperial/fluid_ounce.hpp [7:9]
- boost/units/base_units/imperial/foot.hpp [7:9]
- boost/units/base_units/imperial/furlong.hpp [7:9]
- boost/units/base_units/imperial/gallon.hpp [7:9]
- boost/units/base_units/imperial/gill.hpp [7:9]
- boost/units/base_units/imperial/grain.hpp [7:9]
- boost/units/base_units/imperial/hundredweight.hpp [7:9]
- boost/units/base_units/imperial/inch.hpp [7:9]
- boost/units/base_units/imperial/league.hpp [7:9]
- boost/units/base_units/imperial/mile.hpp [7:9]
- boost/units/base_units/imperial/ounce.hpp [7:9]
- boost/units/base_units/imperial/pint.hpp [7:9]
- boost/units/base_units/imperial/pound.hpp [7:9]
- boost/units/base_units/imperial/quart.hpp [7:9]
- boost/units/base_units/imperial/quarter.hpp [7:9]
- boost/units/base_units/imperial/stone.hpp [7:9]
- boost/units/base_units/imperial/thou.hpp [7:9]
- boost/units/base_units/imperial/ton.hpp [7:9]
- boost/units/base_units/imperial/yard.hpp [7:9]
- boost/units/base_units/information/bit.hpp [6:8]
- boost/units/base_units/information/byte.hpp [6:8]
- boost/units/base_units/information/hartley.hpp [6:8]
- boost/units/base_units/information/nat.hpp [6:8]
- boost/units/base_units/information/shannon.hpp [6:8]
- boost/units/base_units/metric/angstrom.hpp [7:9]
- boost/units/base_units/metric/are.hpp [7:9]
- boost/units/base_units/metric/atmosphere.hpp [7:9]
- boost/units/base_units/metric/bar.hpp [7:9]
- boost/units/base_units/metric/barn.hpp [7:9]
- boost/units/base_units/metric/day.hpp [7:9]
- boost/units/base_units/metric/fermi.hpp [7:9]
- boost/units/base_units/metric/hectare.hpp [7:9]
- boost/units/base_units/metric/hour.hpp [7:9]
- boost/units/base_units/metric/knot.hpp [7:9]
- boost/units/base_units/metric/liter.hpp [7:9]
- boost/units/base_units/metric/micron.hpp [7:9]
- boost/units/base_units/metric/minute.hpp [7:9]
- boost/units/base_units/metric/mmHg.hpp [7:9]
- boost/units/base_units/metric/nautical_mile.hpp [7:9]
- boost/units/base_units/metric/ton.hpp [7:9]
- boost/units/base_units/metric/torr.hpp [7:9]
- boost/units/base_units/metric/year.hpp [7:9]
- boost/units/base_units/si/ampere.hpp [7:9]
- boost/units/base_units/si/candela.hpp [7:9]
- boost/units/base_units/si/kelvin.hpp [7:9]
- boost/units/base_units/si/kilogram.hpp [7:9]
- boost/units/base_units/si/meter.hpp [7:9]
- boost/units/base_units/si/mole.hpp [7:9]
- boost/units/base_units/si/second.hpp [7:9]
- boost/units/base_units/temperature/celsius.hpp [7:9]
- boost/units/base_units/temperature/conversions.hpp [7:9]
- boost/units/base_units/temperature/fahrenheit.hpp [7:9]
- boost/units/base_units/us/cup.hpp [7:9]
- boost/units/base_units/us/dram.hpp [7:9]
- boost/units/base_units/us/fluid_dram.hpp [7:9]
- boost/units/base_units/us/fluid_ounce.hpp [7:9]
- boost/units/base_units/us/foot.hpp [7:9]
- boost/units/base_units/us/gallon.hpp [7:9]
- boost/units/base_units/us/gill.hpp [7:9]
- boost/units/base_units/us/grain.hpp [7:9]
- boost/units/base_units/us/hundredweight.hpp [7:9]
- boost/units/base_units/us/inch.hpp [7:9]
- boost/units/base_units/us/mil.hpp [7:9]
- boost/units/base_units/us/mile.hpp [7:9]
- boost/units/base_units/us/minim.hpp [7:9]
- boost/units/base_units/us/ounce.hpp [7:9]
- boost/units/base_units/us/pint.hpp [7:9]
- boost/units/base_units/us/pound.hpp [7:9]
- boost/units/base_units/us/pound_force.hpp [7:9]
- boost/units/base_units/us/quart.hpp [7:9]
- boost/units/base_units/us/tablespoon.hpp [7:9]
- boost/units/base_units/us/teaspoon.hpp [7:9]
- boost/units/base_units/us/ton.hpp [7:9]
- boost/units/base_units/us/yard.hpp [7:9]
- boost/units/cmath.hpp [7:9]
- boost/units/config.hpp [7:9]
- boost/units/conversion.hpp [7:9]
- boost/units/derived_dimension.hpp [7:9]
- boost/units/detail/absolute_impl.hpp [7:9]
- boost/units/detail/cmath_impl.hpp [7:9]
- boost/units/detail/conversion_impl.hpp [7:9]
- boost/units/detail/dim_impl.hpp [7:9]
- boost/units/detail/dimension_impl.hpp [7:9]
- boost/units/detail/dimension_list.hpp [7:9]
- boost/units/detail/dimensionless_unit.hpp [7:9]
- boost/units/detail/heterogeneous_conversion.hpp [7:9]
- boost/units/detail/linear_algebra.hpp [7:9]
- boost/units/detail/one.hpp [7:9]
- boost/units/detail/ordinal.hpp [7:9]
- boost/units/detail/prevent_redefinition.hpp [7:9]
- boost/units/detail/push_front_if.hpp [7:9]
- boost/units/detail/push_front_or_add.hpp [7:9]
- boost/units/detail/sort.hpp [7:9]
- boost/units/detail/static_rational_power.hpp [7:9]
- boost/units/detail/unscale.hpp [7:9]
- boost/units/detail/utility.hpp [7:9]
- boost/units/dim.hpp [7:9]
- boost/units/dimension.hpp [7:9]
- boost/units/dimensionless_quantity.hpp [7:9]
- boost/units/dimensionless_type.hpp [7:9]
- boost/units/dimensionless_unit.hpp [7:9]
- boost/units/get_dimension.hpp [7:9]
- boost/units/get_system.hpp [7:9]
- boost/units/heterogeneous_system.hpp [7:9]
- boost/units/homogeneous_system.hpp [7:9]
- boost/units/io.hpp [7:9]
- boost/units/is_dim.hpp [7:9]
- boost/units/is_dimension_list.hpp [7:9]
- boost/units/is_dimensionless.hpp [7:9]
- boost/units/is_dimensionless_quantity.hpp [7:9]
- boost/units/is_dimensionless_unit.hpp [7:9]
- boost/units/is_quantity.hpp [7:9]
- boost/units/is_quantity_of_dimension.hpp [7:9]
- boost/units/is_quantity_of_system.hpp [7:9]
- boost/units/is_unit.hpp [7:9]
- boost/units/is_unit_of_dimension.hpp [7:9]
- boost/units/is_unit_of_system.hpp [7:9]
- boost/units/lambda.hpp [7:9]
- boost/units/limits.hpp [7:9]
- boost/units/make_scaled_unit.hpp [7:9]
- boost/units/make_system.hpp [7:9]
- boost/units/operators.hpp [7:9]
- boost/units/physical_dimensions.hpp [7:9]
- boost/units/physical_dimensions/absorbed_dose.hpp [7:9]
- boost/units/physical_dimensions/acceleration.hpp [7:9]
- boost/units/physical_dimensions/action.hpp [7:9]
- boost/units/physical_dimensions/activity.hpp [7:9]
- boost/units/physical_dimensions/amount.hpp [7:9]
- boost/units/physical_dimensions/angular_acceleration.hpp [7:9]
- boost/units/physical_dimensions/angular_momentum.hpp [7:9]
- boost/units/physical_dimensions/angular_velocity.hpp [7:9]
- boost/units/physical_dimensions/area.hpp [7:9]
- boost/units/physical_dimensions/capacitance.hpp [7:9]
- boost/units/physical_dimensions/conductance.hpp [7:9]
- boost/units/physical_dimensions/conductivity.hpp [7:9]
- boost/units/physical_dimensions/current.hpp [7:9]
- boost/units/physical_dimensions/dose_equivalent.hpp [7:9]
- boost/units/physical_dimensions/dynamic_viscosity.hpp [7:9]
- boost/units/physical_dimensions/electric_charge.hpp [7:9]
- boost/units/physical_dimensions/electric_potential.hpp [7:9]
- boost/units/physical_dimensions/energy.hpp [7:9]
- boost/units/physical_dimensions/energy_density.hpp [7:9]
- boost/units/physical_dimensions/force.hpp [7:9]
- boost/units/physical_dimensions/frequency.hpp [7:9]
- boost/units/physical_dimensions/heat_capacity.hpp [7:9]
- boost/units/physical_dimensions/illuminance.hpp [7:9]
- boost/units/physical_dimensions/impedance.hpp [7:9]
- boost/units/physical_dimensions/inductance.hpp [7:9]
- boost/units/physical_dimensions/information.hpp [6:8]
- boost/units/physical_dimensions/kinematic_viscosity.hpp [7:9]
- boost/units/physical_dimensions/length.hpp [7:9]
- boost/units/physical_dimensions/luminance.hpp [7:9]
- boost/units/physical_dimensions/luminous_flux.hpp [7:9]
- boost/units/physical_dimensions/luminous_intensity.hpp [7:9]
- boost/units/physical_dimensions/magnetic_field_intensity.hpp [7:9]
- boost/units/physical_dimensions/magnetic_flux.hpp [7:9]
- boost/units/physical_dimensions/magnetic_flux_density.hpp [7:9]
- boost/units/physical_dimensions/mass.hpp [7:9]
- boost/units/physical_dimensions/mass_density.hpp [7:9]
- boost/units/physical_dimensions/molar_energy.hpp [7:9]
- boost/units/physical_dimensions/molar_heat_capacity.hpp [7:9]
- boost/units/physical_dimensions/moment_of_inertia.hpp [7:9]
- boost/units/physical_dimensions/momentum.hpp [7:9]
- boost/units/physical_dimensions/permeability.hpp [7:9]
- boost/units/physical_dimensions/permittivity.hpp [7:9]
- boost/units/physical_dimensions/plane_angle.hpp [7:9]
- boost/units/physical_dimensions/power.hpp [7:9]
- boost/units/physical_dimensions/pressure.hpp [7:9]
- boost/units/physical_dimensions/reluctance.hpp [7:9]
- boost/units/physical_dimensions/resistance.hpp [7:9]
- boost/units/physical_dimensions/resistivity.hpp [7:9]
- boost/units/physical_dimensions/solid_angle.hpp [7:9]
- boost/units/physical_dimensions/specific_energy.hpp [7:9]
- boost/units/physical_dimensions/specific_heat_capacity.hpp [7:9]
- boost/units/physical_dimensions/specific_volume.hpp [7:9]
- boost/units/physical_dimensions/stress.hpp [7:9]
- boost/units/physical_dimensions/surface_density.hpp [7:9]
- boost/units/physical_dimensions/surface_tension.hpp [7:9]
- boost/units/physical_dimensions/temperature.hpp [7:9]
- boost/units/physical_dimensions/thermal_conductivity.hpp [7:9]
- boost/units/physical_dimensions/time.hpp [7:9]
- boost/units/physical_dimensions/torque.hpp [7:9]
- boost/units/physical_dimensions/velocity.hpp [7:9]
- boost/units/physical_dimensions/volume.hpp [7:9]
- boost/units/physical_dimensions/wavenumber.hpp [7:9]
- boost/units/pow.hpp [7:9]
- boost/units/quantity.hpp [7:9]
- boost/units/reduce_unit.hpp [7:9]
- boost/units/scale.hpp [7:9]
- boost/units/scaled_base_unit.hpp [7:9]
- boost/units/static_constant.hpp [7:9]
- boost/units/static_rational.hpp [7:9]
- boost/units/systems/abstract.hpp [7:9]
- boost/units/systems/angle/degrees.hpp [7:9]
- boost/units/systems/angle/gradians.hpp [7:9]
- boost/units/systems/angle/revolutions.hpp [7:9]
- boost/units/systems/cgs.hpp [7:9]
- boost/units/systems/cgs/acceleration.hpp [7:9]
- boost/units/systems/cgs/area.hpp [7:9]
- boost/units/systems/cgs/base.hpp [7:9]
- boost/units/systems/cgs/current.hpp [7:9]
- boost/units/systems/cgs/dimensionless.hpp [7:9]
- boost/units/systems/cgs/dynamic_viscosity.hpp [7:9]
- boost/units/systems/cgs/energy.hpp [7:9]
- boost/units/systems/cgs/force.hpp [7:9]
- boost/units/systems/cgs/frequency.hpp [7:9]
- boost/units/systems/cgs/io.hpp [7:9]
- boost/units/systems/cgs/kinematic_viscosity.hpp [7:9]
- boost/units/systems/cgs/length.hpp [7:9]
- boost/units/systems/cgs/mass.hpp [7:9]
- boost/units/systems/cgs/mass_density.hpp [7:9]
- boost/units/systems/cgs/momentum.hpp [7:9]
- boost/units/systems/cgs/power.hpp [7:9]
- boost/units/systems/cgs/pressure.hpp [7:9]
- boost/units/systems/cgs/time.hpp [7:9]
- boost/units/systems/cgs/velocity.hpp [7:9]
- boost/units/systems/cgs/volume.hpp [7:9]
- boost/units/systems/cgs/wavenumber.hpp [7:9]
- boost/units/systems/detail/constants.hpp [7:9]
- boost/units/systems/information.hpp [6:8]
- boost/units/systems/information/bit.hpp [6:8]
- boost/units/systems/information/byte.hpp [6:8]
- boost/units/systems/information/hartley.hpp [6:8]
- boost/units/systems/information/nat.hpp [6:8]
- boost/units/systems/information/prefixes.hpp [6:8]
- boost/units/systems/information/shannon.hpp [6:8]
- boost/units/systems/si.hpp [7:9]
- boost/units/systems/si/absorbed_dose.hpp [7:9]
- boost/units/systems/si/acceleration.hpp [7:9]
- boost/units/systems/si/action.hpp [7:9]
- boost/units/systems/si/activity.hpp [7:9]
- boost/units/systems/si/amount.hpp [7:9]
- boost/units/systems/si/angular_acceleration.hpp [7:9]
- boost/units/systems/si/angular_momentum.hpp [7:9]
- boost/units/systems/si/angular_velocity.hpp [7:9]
- boost/units/systems/si/area.hpp [7:9]
- boost/units/systems/si/base.hpp [7:9]
- boost/units/systems/si/capacitance.hpp [7:9]
- boost/units/systems/si/catalytic_activity.hpp [7:9]
- boost/units/systems/si/codata/alpha_constants.hpp [7:9]
- boost/units/systems/si/codata/atomic-nuclear_constants.hpp [7:9]
- boost/units/systems/si/codata/deuteron_constants.hpp [7:9]
- boost/units/systems/si/codata/electromagnetic_constants.hpp [7:9]
- boost/units/systems/si/codata/electron_constants.hpp [7:9]
- boost/units/systems/si/codata/helion_constants.hpp [7:9]
- boost/units/systems/si/codata/muon_constants.hpp [7:9]
- boost/units/systems/si/codata/neutron_constants.hpp [7:9]
- boost/units/systems/si/codata/physico-chemical_constants.hpp [7:9]
- boost/units/systems/si/codata/proton_constants.hpp [7:9]
- boost/units/systems/si/codata/tau_constants.hpp [7:9]
- boost/units/systems/si/codata/triton_constants.hpp [7:9]
- boost/units/systems/si/codata/typedefs.hpp [7:9]
- boost/units/systems/si/codata/universal_constants.hpp [7:9]
- boost/units/systems/si/codata_constants.hpp [7:9]
- boost/units/systems/si/conductance.hpp [7:9]
- boost/units/systems/si/conductivity.hpp [7:9]
- boost/units/systems/si/current.hpp [7:9]
- boost/units/systems/si/dimensionless.hpp [7:9]
- boost/units/systems/si/dose_equivalent.hpp [7:9]
- boost/units/systems/si/dynamic_viscosity.hpp [7:9]
- boost/units/systems/si/electric_charge.hpp [7:9]
- boost/units/systems/si/electric_potential.hpp [7:9]
- boost/units/systems/si/energy.hpp [7:9]
- boost/units/systems/si/force.hpp [7:9]
- boost/units/systems/si/frequency.hpp [7:9]
- boost/units/systems/si/illuminance.hpp [7:9]
- boost/units/systems/si/impedance.hpp [7:9]
- boost/units/systems/si/inductance.hpp [7:9]
- boost/units/systems/si/io.hpp [7:9]
- boost/units/systems/si/kinematic_viscosity.hpp [7:9]
- boost/units/systems/si/length.hpp [7:9]
- boost/units/systems/si/luminous_flux.hpp [7:9]
- boost/units/systems/si/luminous_intensity.hpp [7:9]
- boost/units/systems/si/magnetic_field_intensity.hpp [7:9]
- boost/units/systems/si/magnetic_flux.hpp [7:9]
- boost/units/systems/si/magnetic_flux_density.hpp [7:9]
- boost/units/systems/si/mass.hpp [7:9]
- boost/units/systems/si/mass_density.hpp [7:9]
- boost/units/systems/si/moment_of_inertia.hpp [7:9]
- boost/units/systems/si/momentum.hpp [7:9]
- boost/units/systems/si/permeability.hpp [7:9]
- boost/units/systems/si/permittivity.hpp [7:9]
- boost/units/systems/si/plane_angle.hpp [7:9]
- boost/units/systems/si/power.hpp [7:9]
- boost/units/systems/si/prefixes.hpp [7:9]
- boost/units/systems/si/pressure.hpp [7:9]
- boost/units/systems/si/reluctance.hpp [7:9]
- boost/units/systems/si/resistance.hpp [7:9]
- boost/units/systems/si/resistivity.hpp [7:9]
- boost/units/systems/si/solid_angle.hpp [7:9]
- boost/units/systems/si/surface_density.hpp [7:9]
- boost/units/systems/si/surface_tension.hpp [7:9]
- boost/units/systems/si/temperature.hpp [7:9]
- boost/units/systems/si/time.hpp [7:9]
- boost/units/systems/si/torque.hpp [7:9]
- boost/units/systems/si/velocity.hpp [7:9]
- boost/units/systems/si/volume.hpp [7:9]
- boost/units/systems/si/wavenumber.hpp [7:9]
- boost/units/systems/temperature/celsius.hpp [7:9]
- boost/units/systems/temperature/fahrenheit.hpp [7:9]
- boost/units/unit.hpp [7:9]
- boost/units/units_fwd.hpp [7:9]
- boost/utility/value_init.hpp [3:5]
- boost/uuid/detail/md5.hpp [22:24]
- boost/uuid/detail/sha1.hpp [4:6]
- boost/uuid/nil_generator.hpp [4:6]
- boost/uuid/random_generator.hpp [5:7]
- boost/uuid/string_generator.hpp [4:6]
- boost/uuid/uuid.hpp [4:6]
- boost/uuid/uuid_generators.hpp [4:6]
- boost/uuid/uuid_io.hpp [4:6]
- boost/uuid/uuid_serialize.hpp [4:6]
- boost/variant.hpp [9:11]
- boost/variant/apply_visitor.hpp [9:11]
- boost/variant/bad_visit.hpp [9:11]
- boost/variant/detail/apply_visitor_binary.hpp [9:11]
- boost/variant/detail/apply_visitor_delayed.hpp [9:11]
- boost/variant/detail/apply_visitor_unary.hpp [9:11]
- boost/variant/detail/backup_holder.hpp [9:11]
- boost/variant/detail/cast_storage.hpp [9:11]
- boost/variant/detail/config.hpp [9:11]
- boost/variant/detail/element_index.hpp [8:10]
- boost/variant/detail/enable_recursive.hpp [9:11]
- boost/variant/detail/enable_recursive_fwd.hpp [9:11]
- boost/variant/detail/forced_return.hpp [9:11]
- boost/variant/detail/generic_result_type.hpp [9:11]
- boost/variant/detail/has_result_type.hpp [8:10]
- boost/variant/detail/hash_variant.hpp [9:11]
- boost/variant/detail/initializer.hpp [9:11]
- boost/variant/detail/make_variant_list.hpp [9:11]
- boost/variant/detail/over_sequence.hpp [11:13]
- boost/variant/detail/substitute.hpp [14:16]
- boost/variant/detail/substitute_fwd.hpp [9:11]
- boost/variant/detail/variant_io.hpp [9:11]
- boost/variant/detail/visitation_impl.hpp [9:11]
- boost/variant/get.hpp [9:11]
- boost/variant/polymorphic_get.hpp [8:10]
- boost/variant/recursive_variant.hpp [9:11]
- boost/variant/recursive_wrapper.hpp [9:11]
- boost/variant/recursive_wrapper_fwd.hpp [11:13]
- boost/variant/static_visitor.hpp [9:11]
- boost/variant/variant.hpp [9:11]
- boost/variant/variant_fwd.hpp [9:11]
- boost/variant/visitor_ptr.hpp [9:11]
- libs/python/src/converter/arg_to_python_base.cpp [2:4]
- libs/python/src/converter/builtin_converters.cpp [2:4]
- libs/python/src/converter/from_python.cpp [2:4]
- libs/python/src/converter/registry.cpp [2:4]
- libs/python/src/converter/type_id.cpp [2:4]
- libs/python/src/errors.cpp [2:4]
- libs/python/src/exec.cpp [2:4]
- libs/python/src/import.cpp [2:4]
- libs/python/src/list.cpp [2:4]
- libs/python/src/long.cpp [2:4]
- libs/python/src/module.cpp [2:4]
- libs/python/src/object/class.cpp [2:4]
- libs/python/src/object/enum.cpp [2:4]
- libs/python/src/object/function.cpp [2:4]
- libs/python/src/object/function_doc_signature.cpp [2:4]
- libs/python/src/object/inheritance.cpp [2:4]
- libs/python/src/object/iterator.cpp [2:4]
- libs/python/src/object/life_support.cpp [2:4]
- libs/python/src/object/stl_iterator.cpp [2:4]
- libs/python/src/object_operators.cpp [2:4]
- libs/python/src/object_protocol.cpp [2:4]
- libs/python/src/tuple.cpp [2:4]
- libs/thread/src/win32/thread.cpp [1:3]
-
-KEEP BSL-1.0 47b22ecd1545b89e29a01cd6793d7a40
-BELONGS ya.make
- License text:
- // Version 1.0. See http://www.boost.org/LICENSE_1_0.txt.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : REFERENCE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/convert/detail/boost_parameter_ext.hpp [3:3]
- boost/convert/detail/is_converter.hpp [3:3]
- boost/convert/detail/is_string.hpp [3:3]
- boost/convert/spirit.hpp [3:3]
-
-KEEP BSL-1.0 47b4c0f9d07b7c64eb3da0cafc305103
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signals2/connection.hpp at line 9, boost/signals2/detail/foreign_ptr.hpp at line 6, boost/signals2/detail/null_output_iterator.hpp at line 6, boost/signals2/detail/unique_lock.hpp at line 7, boost/signals2/dummy_mutex.hpp at line 8, boost/signals2/optional_last_value.hpp at line 6
- License text:
- // Distributed under the Boost Software License, Version
- // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/signals2/connection.hpp [8:10]
- boost/signals2/detail/foreign_ptr.hpp [5:7]
- boost/signals2/detail/null_output_iterator.hpp [5:7]
- boost/signals2/detail/unique_lock.hpp [6:8]
- boost/signals2/dummy_mutex.hpp [7:9]
- boost/signals2/optional_last_value.hpp [5:7]
-
-KEEP BSL-1.0 48493a6f602d8228b384d9aab3e50dbd
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/date_time/local_time/conversion.hpp at line 6, boost/date_time/local_time/custom_time_zone.hpp at line 6, boost/date_time/local_time/local_date_time.hpp at line 6, boost/date_time/local_time/local_time_io.hpp at line 6, boost/date_time/time_zone_base.hpp at line 6
- License text:
+ // http://boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.30
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/graph/r_c_shortest_paths.hpp [4:6]
+
+KEEP NCSA AND MIT 38e692f6c8ccfacfe3b038aeea770be4
+BELONGS ya.make
+ License text:
+ // This file is dual licensed under the MIT and the University of Illinois Open
+ // Source Licenses. See LICENSE.TXT for details.
+ Scancode info:
+ Original SPDX id: NCSA
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.otm.illinois.edu/faculty/forms/opensource.asp, https://spdx.org/licenses/NCSA
+ Files with this license:
+ boost/chrono/io/time_point_io.hpp [11:12]
+ Scancode info:
+ Original SPDX id: MIT
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
+ Files with this license:
+ boost/chrono/io/time_point_io.hpp [11:12]
+
+KEEP BSL-1.0 39f2e337dcbf282f5b5d0240c455d33e
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/allocator_traits.hpp at line 5, boost/container/scoped_allocator.hpp at line 5, boost/intrusive/pointer_traits.hpp at line 5
+ License text:
+ // (C) Copyright Pablo Halpern 2009. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/container/allocator_traits.hpp [3:5]
+ boost/container/scoped_allocator.hpp [3:5]
+ boost/intrusive/pointer_traits.hpp [3:5]
+
+KEEP BSL-1.0 3a69d67d5822ad2987752d722c44ca2a
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/detail/shared_dir_helpers.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2007-2014. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/interprocess/detail/shared_dir_helpers.hpp [3:5]
+
+KEEP BSL-1.0 3a9fe8c6f3dc56da59da6bb70a0cef2c
+BELONGS ya.make
+ License text:
+ Distributed under the Boost Software License, Version 1.0.
+ (http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 94.44
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/align.hpp [5:6]
+ boost/align/aligned_alloc.hpp [5:6]
+ boost/align/aligned_allocator.hpp [5:6]
+ boost/align/aligned_allocator_adaptor.hpp [5:6]
+ boost/align/aligned_allocator_adaptor_forward.hpp [5:6]
+ boost/align/aligned_allocator_forward.hpp [5:6]
+ boost/align/aligned_delete.hpp [5:6]
+ boost/align/aligned_delete_forward.hpp [5:6]
+ boost/align/assume_aligned.hpp [8:9]
+ boost/align/detail/aligned_alloc.hpp [5:6]
+ boost/align/detail/aligned_alloc_android.hpp [5:6]
+ boost/align/detail/aligned_alloc_macos.hpp [5:6]
+ boost/align/detail/aligned_alloc_msvc.hpp [5:6]
+ boost/align/detail/aligned_alloc_posix.hpp [5:6]
+ boost/align/detail/aligned_alloc_sunos.hpp [5:6]
+ boost/align/detail/assume_aligned.hpp [8:9]
+ boost/align/detail/assume_aligned_clang.hpp [5:6]
+ boost/align/detail/assume_aligned_gcc.hpp [8:9]
+ boost/align/detail/assume_aligned_intel.hpp [8:9]
+ boost/align/detail/assume_aligned_msvc.hpp [8:9]
+ boost/align/detail/is_aligned.hpp [5:6]
+ boost/align/is_aligned.hpp [5:6]
+ boost/core/allocator_access.hpp [5:6]
+ boost/core/empty_value.hpp [5:6]
+ boost/smart_ptr/allocate_shared_array.hpp [5:6]
+
+KEEP BSL-1.0 3b7ba38d3301bd8fa20e5d271abee5fe
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/mfc_map.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/range/mfc_map.hpp [3:6]
+
+KEEP MIT 3cf5c004fe748204a7f55c19948b5231
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: MIT
+ Score : 100.00
+ Match type : TEXT
+ Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
+ Files with this license:
+ boost/geometry/srs/projections/impl/aasincos.hpp [17:33]
+ boost/geometry/srs/projections/impl/adjlon.hpp [17:33]
+ boost/geometry/srs/projections/impl/dms_parser.hpp [24:40]
+ boost/geometry/srs/projections/impl/pj_auth.hpp [21:37]
+ boost/geometry/srs/projections/impl/pj_datum_set.hpp [21:37]
+ boost/geometry/srs/projections/impl/pj_datums.hpp [21:37]
+ boost/geometry/srs/projections/impl/pj_ell_set.hpp [21:37]
+ boost/geometry/srs/projections/impl/pj_ellps.hpp [21:37]
+ boost/geometry/srs/projections/impl/pj_fwd.hpp [21:37]
+ boost/geometry/srs/projections/impl/pj_gauss.hpp [21:37]
+ boost/geometry/srs/projections/impl/pj_init.hpp [21:37]
+ boost/geometry/srs/projections/impl/pj_inv.hpp [21:37]
+ boost/geometry/srs/projections/impl/pj_mlfn.hpp [21:37]
+ boost/geometry/srs/projections/impl/pj_msfn.hpp [21:37]
+ boost/geometry/srs/projections/impl/pj_param.hpp [21:37]
+ boost/geometry/srs/projections/impl/pj_phi2.hpp [21:37]
+ boost/geometry/srs/projections/impl/pj_qsfn.hpp [21:37]
+ boost/geometry/srs/projections/impl/pj_transform.hpp [21:37]
+ boost/geometry/srs/projections/impl/pj_tsfn.hpp [21:37]
+ boost/geometry/srs/projections/impl/pj_units.hpp [21:37]
+ boost/geometry/srs/projections/impl/pj_zpoly1.hpp [21:37]
+ boost/geometry/srs/projections/impl/proj_mdist.hpp [17:33]
+ boost/geometry/srs/projections/impl/projects.hpp [21:37]
+ boost/geometry/srs/projections/proj/aea.hpp [30:46]
+ boost/geometry/srs/projections/proj/aeqd.hpp [30:46]
+ boost/geometry/srs/projections/proj/airy.hpp [30:46]
+ boost/geometry/srs/projections/proj/aitoff.hpp [31:47]
+ boost/geometry/srs/projections/proj/august.hpp [26:42]
+ boost/geometry/srs/projections/proj/bacon.hpp [26:42]
+ boost/geometry/srs/projections/proj/bipc.hpp [26:42]
+ boost/geometry/srs/projections/proj/boggs.hpp [26:42]
+ boost/geometry/srs/projections/proj/bonne.hpp [26:42]
+ boost/geometry/srs/projections/proj/cass.hpp [26:42]
+ boost/geometry/srs/projections/proj/cc.hpp [26:42]
+ boost/geometry/srs/projections/proj/cea.hpp [26:42]
+ boost/geometry/srs/projections/proj/chamb.hpp [26:42]
+ boost/geometry/srs/projections/proj/collg.hpp [26:42]
+ boost/geometry/srs/projections/proj/crast.hpp [26:42]
+ boost/geometry/srs/projections/proj/denoy.hpp [26:42]
+ boost/geometry/srs/projections/proj/eck1.hpp [26:42]
+ boost/geometry/srs/projections/proj/eck2.hpp [26:42]
+ boost/geometry/srs/projections/proj/eck3.hpp [26:42]
+ boost/geometry/srs/projections/proj/eck4.hpp [26:42]
+ boost/geometry/srs/projections/proj/eck5.hpp [26:42]
+ boost/geometry/srs/projections/proj/eqc.hpp [26:42]
+ boost/geometry/srs/projections/proj/eqdc.hpp [26:42]
+ boost/geometry/srs/projections/proj/etmerc.hpp [28:44]
+ boost/geometry/srs/projections/proj/fahey.hpp [26:42]
+ boost/geometry/srs/projections/proj/fouc_s.hpp [26:42]
+ boost/geometry/srs/projections/proj/gall.hpp [26:42]
+ boost/geometry/srs/projections/proj/geocent.hpp [32:48]
+ boost/geometry/srs/projections/proj/geos.hpp [31:47]
+ boost/geometry/srs/projections/proj/gins8.hpp [26:42]
+ boost/geometry/srs/projections/proj/gn_sinu.hpp [26:42]
+ boost/geometry/srs/projections/proj/gnom.hpp [26:42]
+ boost/geometry/srs/projections/proj/goode.hpp [26:42]
+ boost/geometry/srs/projections/proj/hammer.hpp [26:42]
+ boost/geometry/srs/projections/proj/hatano.hpp [26:42]
+ boost/geometry/srs/projections/proj/healpix.hpp [34:50]
+ boost/geometry/srs/projections/proj/igh.hpp [26:42]
+ boost/geometry/srs/projections/proj/imw_p.hpp [26:42]
+ boost/geometry/srs/projections/proj/isea.hpp [29:45]
+ boost/geometry/srs/projections/proj/krovak.hpp [31:47]
+ boost/geometry/srs/projections/proj/labrd.hpp [26:42]
+ boost/geometry/srs/projections/proj/laea.hpp [26:42]
+ boost/geometry/srs/projections/proj/lagrng.hpp [26:42]
+ boost/geometry/srs/projections/proj/larr.hpp [26:42]
+ boost/geometry/srs/projections/proj/lask.hpp [26:42]
+ boost/geometry/srs/projections/proj/latlong.hpp [32:48]
+ boost/geometry/srs/projections/proj/lcc.hpp [26:42]
+ boost/geometry/srs/projections/proj/lcca.hpp [26:42]
+ boost/geometry/srs/projections/proj/loxim.hpp [26:42]
+ boost/geometry/srs/projections/proj/lsat.hpp [26:42]
+ boost/geometry/srs/projections/proj/mbt_fps.hpp [26:42]
+ boost/geometry/srs/projections/proj/mbtfpp.hpp [26:42]
+ boost/geometry/srs/projections/proj/mbtfpq.hpp [26:42]
+ boost/geometry/srs/projections/proj/merc.hpp [26:42]
+ boost/geometry/srs/projections/proj/mill.hpp [26:42]
+ boost/geometry/srs/projections/proj/mod_ster.hpp [26:42]
+ boost/geometry/srs/projections/proj/moll.hpp [26:42]
+ boost/geometry/srs/projections/proj/natearth.hpp [39:55]
+ boost/geometry/srs/projections/proj/nell.hpp [26:42]
+ boost/geometry/srs/projections/proj/nell_h.hpp [26:42]
+ boost/geometry/srs/projections/proj/nocol.hpp [26:42]
+ boost/geometry/srs/projections/proj/nsper.hpp [26:42]
+ boost/geometry/srs/projections/proj/nzmg.hpp [31:47]
+ boost/geometry/srs/projections/proj/ob_tran.hpp [26:42]
+ boost/geometry/srs/projections/proj/ocea.hpp [26:42]
+ boost/geometry/srs/projections/proj/oea.hpp [26:42]
+ boost/geometry/srs/projections/proj/omerc.hpp [28:44]
+ boost/geometry/srs/projections/proj/ortho.hpp [26:42]
+ boost/geometry/srs/projections/proj/poly.hpp [26:42]
+ boost/geometry/srs/projections/proj/putp2.hpp [26:42]
+ boost/geometry/srs/projections/proj/putp3.hpp [26:42]
+ boost/geometry/srs/projections/proj/putp4p.hpp [26:42]
+ boost/geometry/srs/projections/proj/putp5.hpp [26:42]
+ boost/geometry/srs/projections/proj/putp6.hpp [26:42]
+ boost/geometry/srs/projections/proj/qsc.hpp [58:74]
+ boost/geometry/srs/projections/proj/robin.hpp [26:42]
+ boost/geometry/srs/projections/proj/rouss.hpp [28:44]
+ boost/geometry/srs/projections/proj/rpoly.hpp [26:42]
+ boost/geometry/srs/projections/proj/sconics.hpp [26:42]
+ boost/geometry/srs/projections/proj/somerc.hpp [26:42]
+ boost/geometry/srs/projections/proj/stere.hpp [26:42]
+ boost/geometry/srs/projections/proj/sterea.hpp [28:44]
+ boost/geometry/srs/projections/proj/sts.hpp [26:42]
+ boost/geometry/srs/projections/proj/tcc.hpp [26:42]
+ boost/geometry/srs/projections/proj/tcea.hpp [26:42]
+ boost/geometry/srs/projections/proj/tmerc.hpp [26:42]
+ boost/geometry/srs/projections/proj/tpeqd.hpp [26:42]
+ boost/geometry/srs/projections/proj/urm5.hpp [26:42]
+ boost/geometry/srs/projections/proj/urmfps.hpp [26:42]
+ boost/geometry/srs/projections/proj/vandg.hpp [26:42]
+ boost/geometry/srs/projections/proj/vandg2.hpp [26:42]
+ boost/geometry/srs/projections/proj/vandg4.hpp [26:42]
+ boost/geometry/srs/projections/proj/wag2.hpp [26:42]
+ boost/geometry/srs/projections/proj/wag3.hpp [26:42]
+ boost/geometry/srs/projections/proj/wag7.hpp [26:42]
+ boost/geometry/srs/projections/proj/wink1.hpp [26:42]
+ boost/geometry/srs/projections/proj/wink2.hpp [26:42]
+
+KEEP BSL-1.0 3d79e3d57a57a8bd7ad187d68dc979f1
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/uuid/detail/random_provider_posix.ipp at line 9, boost/uuid/detail/random_provider_wincrypt.ipp at line 9
+ License text:
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/uuid/detail/random_provider_posix.ipp [8:10]
+ boost/uuid/detail/random_provider_wincrypt.ipp [8:10]
+
+KEEP BSL-1.0 3dc626ff78bf44fdf3a99b804f677fe6
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/cast.hpp at line 7, boost/cstdint.hpp at line 8, boost/math/special_functions/bernoulli.hpp at line 9, boost/math/special_functions/detail/bernoulli_details.hpp at line 5, boost/math/special_functions/detail/polygamma.hpp at line 9, boost/math/special_functions/polygamma.hpp at line 9, boost/math/tools/atomic.hpp at line 5, boost/numeric/conversion/detail/old_numeric_cast.hpp at line 6, boost/polymorphic_cast.hpp at line 7, boost/polymorphic_pointer_cast.hpp at line 5
+ License text:
+ // Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/cast.hpp [5:7]
+ boost/cstdint.hpp [6:8]
+ boost/math/special_functions/bernoulli.hpp [7:9]
+ boost/math/special_functions/detail/bernoulli_details.hpp [3:5]
+ boost/math/special_functions/detail/polygamma.hpp [7:9]
+ boost/math/special_functions/polygamma.hpp [7:9]
+ boost/math/tools/atomic.hpp [3:5]
+ boost/numeric/conversion/detail/old_numeric_cast.hpp [4:6]
+ boost/polymorphic_cast.hpp [5:7]
+ boost/polymorphic_pointer_cast.hpp [3:5]
+
+KEEP BSL-1.0 3e0c1cf439330b613e9a358372456112
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/assign.hpp at line 5, boost/assign/assignment_exception.hpp at line 5, boost/assign/list_inserter.hpp at line 5, boost/assign/list_of.hpp at line 5, boost/assign/std.hpp at line 5, boost/assign/std/deque.hpp at line 5, boost/assign/std/list.hpp at line 5, boost/assign/std/map.hpp at line 5, boost/assign/std/queue.hpp at line 5, boost/assign/std/set.hpp at line 5, boost/assign/std/slist.hpp at line 5, boost/assign/std/stack.hpp at line 5, boost/assign/std/vector.hpp at line 5, boost/range.hpp at line 5, boost/range/begin.hpp at line 5, boost/range/config.hpp at line 5, boost/range/const_iterator.hpp at line 5, boost/range/const_reverse_iterator.hpp at line 5, boost/range/detail/begin.hpp at line 5, boost/range/detail/common.hpp at line 5, boost/range/detail/detail_str.hpp at line 5, boost/range/detail/difference_type.hpp at line 5, boost/range/detail/empty.hpp at line 5, boost/range/detail/end.hpp at line 5, boost/range/detail/implementation_help.hpp at line 5, boost/range/detail/sfinae.hpp at line 5, boost/range/detail/size_type.hpp at line 5, boost/range/detail/sizer.hpp at line 5, boost/range/detail/value_type.hpp at line 5, boost/range/difference_type.hpp at line 5, boost/range/empty.hpp at line 5, boost/range/end.hpp at line 5, boost/range/iterator.hpp at line 5, boost/range/metafunctions.hpp at line 5, boost/range/mutable_iterator.hpp at line 5, boost/range/rbegin.hpp at line 5, boost/range/reference.hpp at line 5, boost/range/rend.hpp at line 5, boost/range/result_iterator.hpp at line 5, boost/range/reverse_iterator.hpp at line 5, boost/range/reverse_result_iterator.hpp at line 5, boost/range/size.hpp at line 5, boost/range/size_type.hpp at line 5, boost/range/sub_range.hpp at line 6, boost/range/value_type.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/assign.hpp [3:6]
+ boost/assign/assignment_exception.hpp [3:6]
+ boost/assign/list_inserter.hpp [3:6]
+ boost/assign/list_of.hpp [3:6]
+ boost/assign/std.hpp [3:6]
+ boost/assign/std/deque.hpp [3:6]
+ boost/assign/std/list.hpp [3:6]
+ boost/assign/std/map.hpp [3:6]
+ boost/assign/std/queue.hpp [3:6]
+ boost/assign/std/set.hpp [3:6]
+ boost/assign/std/slist.hpp [3:6]
+ boost/assign/std/stack.hpp [3:6]
+ boost/assign/std/vector.hpp [3:6]
+ boost/range.hpp [3:6]
+ boost/range/begin.hpp [3:6]
+ boost/range/config.hpp [3:6]
+ boost/range/const_iterator.hpp [3:6]
+ boost/range/const_reverse_iterator.hpp [3:6]
+ boost/range/detail/begin.hpp [3:6]
+ boost/range/detail/common.hpp [3:6]
+ boost/range/detail/detail_str.hpp [3:6]
+ boost/range/detail/difference_type.hpp [3:6]
+ boost/range/detail/empty.hpp [3:6]
+ boost/range/detail/end.hpp [3:6]
+ boost/range/detail/implementation_help.hpp [3:6]
+ boost/range/detail/sfinae.hpp [3:6]
+ boost/range/detail/size_type.hpp [3:6]
+ boost/range/detail/sizer.hpp [3:6]
+ boost/range/detail/value_type.hpp [3:6]
+ boost/range/difference_type.hpp [3:6]
+ boost/range/empty.hpp [3:6]
+ boost/range/end.hpp [3:6]
+ boost/range/iterator.hpp [3:6]
+ boost/range/metafunctions.hpp [3:6]
+ boost/range/mutable_iterator.hpp [3:6]
+ boost/range/rbegin.hpp [3:6]
+ boost/range/reference.hpp [3:6]
+ boost/range/rend.hpp [3:6]
+ boost/range/result_iterator.hpp [3:6]
+ boost/range/reverse_iterator.hpp [3:6]
+ boost/range/reverse_result_iterator.hpp [3:6]
+ boost/range/size.hpp [3:6]
+ boost/range/size_type.hpp [3:6]
+ boost/range/sub_range.hpp [4:7]
+ boost/range/value_type.hpp [3:6]
+
+KEEP BSL-1.0 3e6cbcd55ea14c3be54705bb0cc42706
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/phoenix/core.hpp at line 5
+ License text:
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/phoenix/core.hpp [4:5]
+
+KEEP BSL-1.0 40b79e770b4583bc7a2b54d225914470
+BELONGS ya.make
+ License text:
+ // Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : REFERENCE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/typeof/vector50.hpp [6:6]
+
+KEEP Public-Domain 4364b0fe48ff1582f5b0ef1163db6465
+BELONGS ya.make
+ License text:
+ // MurmurHash3 was written by Austin Appleby, and is placed in the public
+ // domain. The author hereby disclaims copyright to this source code.
+ Scancode info:
+ Original SPDX id: LicenseRef-scancode-public-domain
+ Score : 100.00
+ Match type : TEXT
+ Links : http://www.linfo.org/publicdomain.html, https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/public-domain.LICENSE
+ Files with this license:
+ boost/container_hash/hash.hpp [13:14]
+
+SKIP LicenseRef-scancode-proprietary-license 448f6f7563b34b8597aafd34f62a4215
+BELONGS ya.make
+ License text:
+ Get a free, non-commercial download of MKL at
+ Scancode info:
+ Original SPDX id: LicenseRef-scancode-proprietary-license
+ Score : 100.00
+ Match type : REFERENCE
+ Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/proprietary-license.LICENSE
+ Files with this license:
+ boost/numeric/odeint/external/mkl/mkl_operations.hpp [7:7]
+
+KEEP BSL-1.0 4558629d40e3aec5b6182de5189b66d3
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/accumulators.hpp at line 7, boost/accumulators/accumulators_fwd.hpp at line 6, boost/accumulators/framework/accumulator_base.hpp at line 6, boost/accumulators/framework/accumulator_concept.hpp at line 6, boost/accumulators/framework/accumulator_set.hpp at line 6, boost/accumulators/framework/accumulators/droppable_accumulator.hpp at line 6, boost/accumulators/framework/accumulators/external_accumulator.hpp at line 6, boost/accumulators/framework/accumulators/reference_accumulator.hpp at line 6, boost/accumulators/framework/depends_on.hpp at line 6, boost/accumulators/framework/external.hpp at line 6, boost/accumulators/framework/extractor.hpp at line 6, boost/accumulators/framework/features.hpp at line 6, boost/accumulators/framework/parameters/accumulator.hpp at line 6, boost/accumulators/framework/parameters/sample.hpp at line 6, boost/accumulators/framework/parameters/weight.hpp at line 6, boost/accumulators/framework/parameters/weights.hpp at line 6, boost/accumulators/numeric/functional.hpp at line 6, boost/accumulators/numeric/functional/complex.hpp at line 6, boost/accumulators/numeric/functional/valarray.hpp at line 6, boost/accumulators/numeric/functional/vector.hpp at line 6, boost/accumulators/numeric/functional_fwd.hpp at line 6, boost/accumulators/statistics.hpp at line 7, boost/accumulators/statistics/count.hpp at line 6, boost/accumulators/statistics/error_of.hpp at line 6, boost/accumulators/statistics/error_of_mean.hpp at line 6, boost/accumulators/statistics/max.hpp at line 6, boost/accumulators/statistics/mean.hpp at line 6, boost/accumulators/statistics/min.hpp at line 6, boost/accumulators/statistics/moment.hpp at line 6, boost/accumulators/statistics/parameters/quantile_probability.hpp at line 6, boost/accumulators/statistics/stats.hpp at line 7, boost/accumulators/statistics/sum.hpp at line 6, boost/accumulators/statistics/variates/covariate.hpp at line 6, boost/accumulators/statistics/with_error.hpp at line 6, boost/accumulators/statistics_fwd.hpp at line 6
+ License text:
+ // Copyright 2005 Eric Niebler. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/accumulators/accumulators.hpp [5:7]
+ boost/accumulators/accumulators_fwd.hpp [4:6]
+ boost/accumulators/framework/accumulator_base.hpp [4:6]
+ boost/accumulators/framework/accumulator_concept.hpp [4:6]
+ boost/accumulators/framework/accumulator_set.hpp [4:6]
+ boost/accumulators/framework/accumulators/droppable_accumulator.hpp [4:6]
+ boost/accumulators/framework/accumulators/external_accumulator.hpp [4:6]
+ boost/accumulators/framework/accumulators/reference_accumulator.hpp [4:6]
+ boost/accumulators/framework/depends_on.hpp [4:6]
+ boost/accumulators/framework/external.hpp [4:6]
+ boost/accumulators/framework/extractor.hpp [4:6]
+ boost/accumulators/framework/features.hpp [4:6]
+ boost/accumulators/framework/parameters/accumulator.hpp [4:6]
+ boost/accumulators/framework/parameters/sample.hpp [4:6]
+ boost/accumulators/framework/parameters/weight.hpp [4:6]
+ boost/accumulators/framework/parameters/weights.hpp [4:6]
+ boost/accumulators/numeric/functional.hpp [4:6]
+ boost/accumulators/numeric/functional/complex.hpp [4:6]
+ boost/accumulators/numeric/functional/valarray.hpp [4:6]
+ boost/accumulators/numeric/functional/vector.hpp [4:6]
+ boost/accumulators/numeric/functional_fwd.hpp [4:6]
+ boost/accumulators/statistics.hpp [5:7]
+ boost/accumulators/statistics/count.hpp [4:6]
+ boost/accumulators/statistics/error_of.hpp [4:6]
+ boost/accumulators/statistics/error_of_mean.hpp [4:6]
+ boost/accumulators/statistics/max.hpp [4:6]
+ boost/accumulators/statistics/mean.hpp [4:6]
+ boost/accumulators/statistics/min.hpp [4:6]
+ boost/accumulators/statistics/moment.hpp [4:6]
+ boost/accumulators/statistics/parameters/quantile_probability.hpp [4:6]
+ boost/accumulators/statistics/stats.hpp [5:7]
+ boost/accumulators/statistics/sum.hpp [4:6]
+ boost/accumulators/statistics/variates/covariate.hpp [4:6]
+ boost/accumulators/statistics/with_error.hpp [4:6]
+ boost/accumulators/statistics_fwd.hpp [4:6]
+
+KEEP BSL-1.0 45e6804496b42c113a568514b7edcf98
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/detail/collection_traits_detail.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 94.74
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/range/detail/collection_traits_detail.hpp [4:8]
+
+KEEP BSL-1.0 464dd62f778620e8b4f71d787b2b1c6e
+BELONGS libs/serialization/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/archive/archive_exception.hpp at line 14, boost/archive/basic_archive.hpp at line 14, boost/archive/basic_binary_iarchive.hpp at line 21, boost/archive/basic_binary_iprimitive.hpp at line 25, boost/archive/basic_binary_oarchive.hpp at line 14, boost/archive/basic_binary_oprimitive.hpp at line 14, boost/archive/basic_streambuf_locale_saver.hpp at line 15, boost/archive/basic_text_iarchive.hpp at line 14, boost/archive/basic_text_iprimitive.hpp at line 14, boost/archive/basic_text_oarchive.hpp at line 14, boost/archive/basic_text_oprimitive.hpp at line 14, boost/archive/basic_xml_archive.hpp at line 14, boost/archive/basic_xml_iarchive.hpp at line 14, boost/archive/basic_xml_oarchive.hpp at line 14, boost/archive/binary_iarchive.hpp at line 14, boost/archive/binary_iarchive_impl.hpp at line 14, boost/archive/binary_oarchive.hpp at line 14, boost/archive/binary_oarchive_impl.hpp at line 14, boost/archive/binary_wiarchive.hpp at line 14, boost/archive/binary_woarchive.hpp at line 14, boost/archive/codecvt_null.hpp at line 14, boost/archive/detail/abi_prefix.hpp at line 6, boost/archive/detail/abi_suffix.hpp at line 6, boost/archive/detail/archive_serializer_map.hpp at line 15, boost/archive/detail/basic_iarchive.hpp at line 14, boost/archive/detail/basic_iserializer.hpp at line 14, boost/archive/detail/basic_oarchive.hpp at line 14, boost/archive/detail/basic_oserializer.hpp at line 14, boost/archive/detail/basic_pointer_iserializer.hpp at line 15, boost/archive/detail/basic_pointer_oserializer.hpp at line 15, boost/archive/detail/basic_serializer.hpp at line 14, boost/archive/detail/basic_serializer_map.hpp at line 14, boost/archive/detail/check.hpp at line 20, boost/archive/detail/common_iarchive.hpp at line 14, boost/archive/detail/common_oarchive.hpp at line 14, boost/archive/detail/helper_collection.hpp at line 14, boost/archive/detail/interface_iarchive.hpp at line 18, boost/archive/detail/interface_oarchive.hpp at line 14, boost/archive/detail/iserializer.hpp at line 20, boost/archive/detail/oserializer.hpp at line 20, boost/archive/detail/polymorphic_iarchive_route.hpp at line 14, boost/archive/detail/polymorphic_oarchive_route.hpp at line 14, boost/archive/dinkumware.hpp at line 14, boost/archive/impl/basic_binary_iarchive.ipp at line 6, boost/archive/impl/basic_binary_iprimitive.ipp at line 6, boost/archive/impl/basic_binary_oarchive.ipp at line 6, boost/archive/impl/basic_binary_oprimitive.ipp at line 6, boost/archive/impl/basic_text_iarchive.ipp at line 6, boost/archive/impl/basic_text_oarchive.ipp at line 6, boost/archive/impl/basic_text_oprimitive.ipp at line 6, boost/archive/impl/basic_xml_grammar.hpp at line 14, boost/archive/impl/basic_xml_iarchive.ipp at line 6, boost/archive/iterators/base64_exception.hpp at line 14, boost/archive/iterators/base64_from_binary.hpp at line 14, boost/archive/iterators/binary_from_base64.hpp at line 14, boost/archive/iterators/dataflow.hpp at line 14, boost/archive/iterators/dataflow_exception.hpp at line 14, boost/archive/iterators/escape.hpp at line 14, boost/archive/iterators/insert_linebreaks.hpp at line 14, boost/archive/iterators/istream_iterator.hpp at line 14, boost/archive/iterators/mb_from_wchar.hpp at line 14, boost/archive/iterators/ostream_iterator.hpp at line 14, boost/archive/iterators/remove_whitespace.hpp at line 14, boost/archive/iterators/transform_width.hpp at line 14, boost/archive/iterators/unescape.hpp at line 14, boost/archive/iterators/wchar_from_mb.hpp at line 14, boost/archive/iterators/xml_escape.hpp at line 14, boost/archive/iterators/xml_unescape.hpp at line 14, boost/archive/iterators/xml_unescape_exception.hpp at line 14, boost/archive/polymorphic_binary_iarchive.hpp at line 14, boost/archive/polymorphic_binary_oarchive.hpp at line 14, boost/archive/polymorphic_iarchive.hpp at line 14, boost/archive/polymorphic_oarchive.hpp at line 14, boost/archive/polymorphic_text_iarchive.hpp at line 14, boost/archive/polymorphic_text_oarchive.hpp at line 14, boost/archive/polymorphic_text_wiarchive.hpp at line 14, boost/archive/polymorphic_text_woarchive.hpp at line 14, boost/archive/polymorphic_xml_iarchive.hpp at line 14, boost/archive/polymorphic_xml_oarchive.hpp at line 14, boost/archive/polymorphic_xml_wiarchive.hpp at line 14, boost/archive/polymorphic_xml_woarchive.hpp at line 14, boost/archive/text_iarchive.hpp at line 14, boost/archive/text_oarchive.hpp at line 14, boost/archive/text_wiarchive.hpp at line 14, boost/archive/text_woarchive.hpp at line 14, boost/archive/tmpdir.hpp at line 14, boost/archive/wcslen.hpp at line 14, boost/archive/xml_archive_exception.hpp at line 14, boost/archive/xml_iarchive.hpp at line 14, boost/archive/xml_oarchive.hpp at line 14, boost/archive/xml_wiarchive.hpp at line 14, boost/archive/xml_woarchive.hpp at line 14, boost/serialization/access.hpp at line 14, boost/serialization/archive_input_unordered_map.hpp at line 16, boost/serialization/archive_input_unordered_set.hpp at line 15, boost/serialization/assume_abstract.hpp at line 14, boost/serialization/base_object.hpp at line 14, boost/serialization/binary_object.hpp at line 14, boost/serialization/boost_unordered_map.hpp at line 16, boost/serialization/boost_unordered_set.hpp at line 15, boost/serialization/collection_traits.hpp at line 14, boost/serialization/collections_load_imp.hpp at line 18, boost/serialization/collections_save_imp.hpp at line 14, boost/serialization/complex.hpp at line 15, boost/serialization/deque.hpp at line 14, boost/serialization/detail/is_default_constructible.hpp at line 14, boost/serialization/detail/stack_constructor.hpp at line 14, boost/serialization/ephemeral.hpp at line 14, boost/serialization/export.hpp at line 14, boost/serialization/extended_type_info.hpp at line 14, boost/serialization/extended_type_info_no_rtti.hpp at line 16, boost/serialization/extended_type_info_typeid.hpp at line 16, boost/serialization/factory.hpp at line 14, boost/serialization/force_include.hpp at line 14, boost/serialization/forward_list.hpp at line 14, boost/serialization/hash_collections_load_imp.hpp at line 15, boost/serialization/hash_collections_save_imp.hpp at line 14, boost/serialization/hash_map.hpp at line 15, boost/serialization/hash_set.hpp at line 14, boost/serialization/level.hpp at line 14, boost/serialization/level_enum.hpp at line 14, boost/serialization/list.hpp at line 14, boost/serialization/map.hpp at line 15, boost/serialization/nvp.hpp at line 14, boost/serialization/priority_queue.hpp at line 14, boost/serialization/queue.hpp at line 14, boost/serialization/serialization.hpp at line 21, boost/serialization/set.hpp at line 14, boost/serialization/shared_ptr.hpp at line 14, boost/serialization/shared_ptr_132.hpp at line 14, boost/serialization/shared_ptr_helper.hpp at line 14, boost/serialization/slist.hpp at line 14, boost/serialization/split_free.hpp at line 14, boost/serialization/split_member.hpp at line 14, boost/serialization/stack.hpp at line 14, boost/serialization/string.hpp at line 15, boost/serialization/tracking.hpp at line 14, boost/serialization/tracking_enum.hpp at line 14, boost/serialization/traits.hpp at line 14, boost/serialization/type_info_implementation.hpp at line 14, boost/serialization/unique_ptr.hpp at line 14, boost/serialization/unordered_collections_load_imp.hpp at line 16, boost/serialization/unordered_collections_save_imp.hpp at line 15, boost/serialization/unordered_map.hpp at line 16, boost/serialization/unordered_set.hpp at line 15, boost/serialization/utility.hpp at line 15, boost/serialization/valarray.hpp at line 14, boost/serialization/vector.hpp at line 15, boost/serialization/vector_135.hpp at line 7, boost/serialization/version.hpp at line 14, boost/serialization/weak_ptr.hpp at line 14, libs/serialization/src/archive_exception.cpp at line 6, libs/serialization/src/basic_archive.cpp at line 6, libs/serialization/src/basic_iarchive.cpp at line 6, libs/serialization/src/basic_iserializer.cpp at line 6, libs/serialization/src/basic_oarchive.cpp at line 6, libs/serialization/src/basic_oserializer.cpp at line 6, libs/serialization/src/basic_pointer_iserializer.cpp at line 6, libs/serialization/src/basic_pointer_oserializer.cpp at line 6, libs/serialization/src/basic_serializer_map.cpp at line 6, libs/serialization/src/basic_text_iprimitive.cpp at line 6, libs/serialization/src/basic_text_oprimitive.cpp at line 6, libs/serialization/src/basic_text_wiprimitive.cpp at line 6, libs/serialization/src/basic_text_woprimitive.cpp at line 6, libs/serialization/src/basic_xml_archive.cpp at line 6, libs/serialization/src/basic_xml_grammar.ipp at line 6, libs/serialization/src/binary_iarchive.cpp at line 6, libs/serialization/src/binary_oarchive.cpp at line 6, libs/serialization/src/binary_wiarchive.cpp at line 6, libs/serialization/src/binary_woarchive.cpp at line 6, libs/serialization/src/extended_type_info.cpp at line 6, libs/serialization/src/extended_type_info_no_rtti.cpp at line 7, libs/serialization/src/extended_type_info_typeid.cpp at line 7, libs/serialization/src/polymorphic_iarchive.cpp at line 6, libs/serialization/src/polymorphic_oarchive.cpp at line 6, libs/serialization/src/stl_port.cpp at line 6, libs/serialization/src/text_iarchive.cpp at line 6, libs/serialization/src/text_oarchive.cpp at line 6, libs/serialization/src/text_wiarchive.cpp at line 6, libs/serialization/src/text_woarchive.cpp at line 6, libs/serialization/src/xml_archive_exception.cpp at line 6, libs/serialization/src/xml_grammar.cpp at line 6, libs/serialization/src/xml_iarchive.cpp at line 6, libs/serialization/src/xml_oarchive.cpp at line 6, libs/serialization/src/xml_wgrammar.cpp at line 6, libs/serialization/src/xml_wiarchive.cpp at line 6, libs/serialization/src/xml_woarchive.cpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 94.74
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/archive/archive_exception.hpp [13:17]
+ boost/archive/basic_archive.hpp [13:17]
+ boost/archive/basic_binary_iarchive.hpp [20:24]
+ boost/archive/basic_binary_iprimitive.hpp [24:28]
+ boost/archive/basic_binary_oarchive.hpp [13:17]
+ boost/archive/basic_binary_oprimitive.hpp [13:17]
+ boost/archive/basic_streambuf_locale_saver.hpp [14:18]
+ boost/archive/basic_text_iarchive.hpp [13:17]
+ boost/archive/basic_text_iprimitive.hpp [13:17]
+ boost/archive/basic_text_oarchive.hpp [13:17]
+ boost/archive/basic_text_oprimitive.hpp [13:17]
+ boost/archive/basic_xml_archive.hpp [13:17]
+ boost/archive/basic_xml_iarchive.hpp [13:17]
+ boost/archive/basic_xml_oarchive.hpp [13:17]
+ boost/archive/binary_iarchive.hpp [13:17]
+ boost/archive/binary_iarchive_impl.hpp [13:17]
+ boost/archive/binary_oarchive.hpp [13:17]
+ boost/archive/binary_oarchive_impl.hpp [13:17]
+ boost/archive/binary_wiarchive.hpp [13:17]
+ boost/archive/binary_woarchive.hpp [13:17]
+ boost/archive/codecvt_null.hpp [13:17]
+ boost/archive/detail/abi_prefix.hpp [5:9]
+ boost/archive/detail/abi_suffix.hpp [5:9]
+ boost/archive/detail/archive_serializer_map.hpp [14:18]
+ boost/archive/detail/basic_iarchive.hpp [13:17]
+ boost/archive/detail/basic_iserializer.hpp [13:17]
+ boost/archive/detail/basic_oarchive.hpp [13:17]
+ boost/archive/detail/basic_oserializer.hpp [13:17]
+ boost/archive/detail/basic_pointer_iserializer.hpp [14:18]
+ boost/archive/detail/basic_pointer_oserializer.hpp [14:18]
+ boost/archive/detail/basic_serializer.hpp [13:17]
+ boost/archive/detail/basic_serializer_map.hpp [13:17]
+ boost/archive/detail/check.hpp [19:23]
+ boost/archive/detail/common_iarchive.hpp [13:17]
+ boost/archive/detail/common_oarchive.hpp [13:17]
+ boost/archive/detail/helper_collection.hpp [13:17]
+ boost/archive/detail/interface_iarchive.hpp [17:21]
+ boost/archive/detail/interface_oarchive.hpp [13:17]
+ boost/archive/detail/iserializer.hpp [19:23]
+ boost/archive/detail/oserializer.hpp [19:23]
+ boost/archive/detail/polymorphic_iarchive_route.hpp [13:17]
+ boost/archive/detail/polymorphic_oarchive_route.hpp [13:17]
+ boost/archive/dinkumware.hpp [13:17]
+ boost/archive/impl/basic_binary_iarchive.ipp [5:9]
+ boost/archive/impl/basic_binary_iprimitive.ipp [5:9]
+ boost/archive/impl/basic_binary_oarchive.ipp [5:9]
+ boost/archive/impl/basic_binary_oprimitive.ipp [5:9]
+ boost/archive/impl/basic_text_iarchive.ipp [5:9]
+ boost/archive/impl/basic_text_oarchive.ipp [5:9]
+ boost/archive/impl/basic_text_oprimitive.ipp [5:9]
+ boost/archive/impl/basic_xml_grammar.hpp [13:17]
+ boost/archive/impl/basic_xml_iarchive.ipp [5:9]
+ boost/archive/iterators/base64_exception.hpp [13:17]
+ boost/archive/iterators/base64_from_binary.hpp [13:17]
+ boost/archive/iterators/binary_from_base64.hpp [13:17]
+ boost/archive/iterators/dataflow.hpp [13:17]
+ boost/archive/iterators/dataflow_exception.hpp [13:17]
+ boost/archive/iterators/escape.hpp [13:17]
+ boost/archive/iterators/insert_linebreaks.hpp [13:17]
+ boost/archive/iterators/istream_iterator.hpp [13:17]
+ boost/archive/iterators/mb_from_wchar.hpp [13:17]
+ boost/archive/iterators/ostream_iterator.hpp [13:17]
+ boost/archive/iterators/remove_whitespace.hpp [13:17]
+ boost/archive/iterators/transform_width.hpp [13:17]
+ boost/archive/iterators/unescape.hpp [13:17]
+ boost/archive/iterators/wchar_from_mb.hpp [13:17]
+ boost/archive/iterators/xml_escape.hpp [13:17]
+ boost/archive/iterators/xml_unescape.hpp [13:17]
+ boost/archive/iterators/xml_unescape_exception.hpp [13:17]
+ boost/archive/polymorphic_binary_iarchive.hpp [13:17]
+ boost/archive/polymorphic_binary_oarchive.hpp [13:17]
+ boost/archive/polymorphic_iarchive.hpp [13:17]
+ boost/archive/polymorphic_oarchive.hpp [13:17]
+ boost/archive/polymorphic_text_iarchive.hpp [13:17]
+ boost/archive/polymorphic_text_oarchive.hpp [13:17]
+ boost/archive/polymorphic_text_wiarchive.hpp [13:17]
+ boost/archive/polymorphic_text_woarchive.hpp [13:17]
+ boost/archive/polymorphic_xml_iarchive.hpp [13:17]
+ boost/archive/polymorphic_xml_oarchive.hpp [13:17]
+ boost/archive/polymorphic_xml_wiarchive.hpp [13:17]
+ boost/archive/polymorphic_xml_woarchive.hpp [13:17]
+ boost/archive/text_iarchive.hpp [13:17]
+ boost/archive/text_oarchive.hpp [13:17]
+ boost/archive/text_wiarchive.hpp [13:17]
+ boost/archive/text_woarchive.hpp [13:17]
+ boost/archive/tmpdir.hpp [13:17]
+ boost/archive/wcslen.hpp [13:17]
+ boost/archive/xml_archive_exception.hpp [13:17]
+ boost/archive/xml_iarchive.hpp [13:17]
+ boost/archive/xml_oarchive.hpp [13:17]
+ boost/archive/xml_wiarchive.hpp [13:17]
+ boost/archive/xml_woarchive.hpp [13:17]
+ boost/serialization/access.hpp [13:17]
+ boost/serialization/archive_input_unordered_map.hpp [15:19]
+ boost/serialization/archive_input_unordered_set.hpp [14:18]
+ boost/serialization/assume_abstract.hpp [13:17]
+ boost/serialization/base_object.hpp [13:17]
+ boost/serialization/binary_object.hpp [13:17]
+ boost/serialization/boost_unordered_map.hpp [15:19]
+ boost/serialization/boost_unordered_set.hpp [14:18]
+ boost/serialization/collection_traits.hpp [13:17]
+ boost/serialization/collections_load_imp.hpp [17:21]
+ boost/serialization/collections_save_imp.hpp [13:17]
+ boost/serialization/complex.hpp [14:18]
+ boost/serialization/deque.hpp [13:17]
+ boost/serialization/detail/is_default_constructible.hpp [13:17]
+ boost/serialization/detail/stack_constructor.hpp [13:17]
+ boost/serialization/ephemeral.hpp [13:17]
+ boost/serialization/export.hpp [13:17]
+ boost/serialization/extended_type_info.hpp [13:17]
+ boost/serialization/extended_type_info_no_rtti.hpp [15:19]
+ boost/serialization/extended_type_info_typeid.hpp [15:19]
+ boost/serialization/factory.hpp [13:17]
+ boost/serialization/force_include.hpp [13:17]
+ boost/serialization/forward_list.hpp [13:17]
+ boost/serialization/hash_collections_load_imp.hpp [14:18]
+ boost/serialization/hash_collections_save_imp.hpp [13:17]
+ boost/serialization/hash_map.hpp [14:18]
+ boost/serialization/hash_set.hpp [13:17]
+ boost/serialization/level.hpp [13:17]
+ boost/serialization/level_enum.hpp [13:17]
+ boost/serialization/list.hpp [13:17]
+ boost/serialization/map.hpp [14:18]
+ boost/serialization/nvp.hpp [13:17]
+ boost/serialization/priority_queue.hpp [13:17]
+ boost/serialization/queue.hpp [13:17]
+ boost/serialization/serialization.hpp [20:24]
+ boost/serialization/set.hpp [13:17]
+ boost/serialization/shared_ptr.hpp [13:17]
+ boost/serialization/shared_ptr_132.hpp [13:17]
+ boost/serialization/shared_ptr_helper.hpp [13:17]
+ boost/serialization/slist.hpp [13:17]
+ boost/serialization/split_free.hpp [13:17]
+ boost/serialization/split_member.hpp [13:17]
+ boost/serialization/stack.hpp [13:17]
+ boost/serialization/string.hpp [14:18]
+ boost/serialization/tracking.hpp [13:17]
+ boost/serialization/tracking_enum.hpp [13:17]
+ boost/serialization/traits.hpp [13:17]
+ boost/serialization/type_info_implementation.hpp [13:17]
+ boost/serialization/unique_ptr.hpp [13:17]
+ boost/serialization/unordered_collections_load_imp.hpp [15:19]
+ boost/serialization/unordered_collections_save_imp.hpp [14:18]
+ boost/serialization/unordered_map.hpp [15:19]
+ boost/serialization/unordered_set.hpp [14:18]
+ boost/serialization/utility.hpp [14:18]
+ boost/serialization/valarray.hpp [13:17]
+ boost/serialization/vector.hpp [14:18]
+ boost/serialization/vector_135.hpp [6:10]
+ boost/serialization/version.hpp [13:17]
+ boost/serialization/weak_ptr.hpp [13:17]
+ libs/serialization/src/archive_exception.cpp [5:9]
+ libs/serialization/src/basic_archive.cpp [5:9]
+ libs/serialization/src/basic_iarchive.cpp [5:9]
+ libs/serialization/src/basic_iserializer.cpp [5:9]
+ libs/serialization/src/basic_oarchive.cpp [5:9]
+ libs/serialization/src/basic_oserializer.cpp [5:9]
+ libs/serialization/src/basic_pointer_iserializer.cpp [5:9]
+ libs/serialization/src/basic_pointer_oserializer.cpp [5:9]
+ libs/serialization/src/basic_serializer_map.cpp [5:9]
+ libs/serialization/src/basic_text_iprimitive.cpp [5:9]
+ libs/serialization/src/basic_text_oprimitive.cpp [5:9]
+ libs/serialization/src/basic_text_wiprimitive.cpp [5:9]
+ libs/serialization/src/basic_text_woprimitive.cpp [5:9]
+ libs/serialization/src/basic_xml_archive.cpp [5:9]
+ libs/serialization/src/basic_xml_grammar.ipp [5:9]
+ libs/serialization/src/binary_iarchive.cpp [5:9]
+ libs/serialization/src/binary_oarchive.cpp [5:9]
+ libs/serialization/src/binary_wiarchive.cpp [5:9]
+ libs/serialization/src/binary_woarchive.cpp [5:9]
+ libs/serialization/src/extended_type_info.cpp [5:9]
+ libs/serialization/src/extended_type_info_no_rtti.cpp [6:10]
+ libs/serialization/src/extended_type_info_typeid.cpp [6:10]
+ libs/serialization/src/polymorphic_iarchive.cpp [5:9]
+ libs/serialization/src/polymorphic_oarchive.cpp [5:9]
+ libs/serialization/src/stl_port.cpp [5:9]
+ libs/serialization/src/text_iarchive.cpp [5:9]
+ libs/serialization/src/text_oarchive.cpp [5:9]
+ libs/serialization/src/text_wiarchive.cpp [5:9]
+ libs/serialization/src/text_woarchive.cpp [5:9]
+ libs/serialization/src/xml_archive_exception.cpp [5:9]
+ libs/serialization/src/xml_grammar.cpp [5:9]
+ libs/serialization/src/xml_iarchive.cpp [5:9]
+ libs/serialization/src/xml_oarchive.cpp [5:9]
+ libs/serialization/src/xml_wgrammar.cpp [5:9]
+ libs/serialization/src/xml_wiarchive.cpp [5:9]
+ libs/serialization/src/xml_woarchive.cpp [5:9]
+
+KEEP BSL-1.0 4685b9c982cdf2c34731d3ee55e65b45
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/named_graph.hpp at line 4
+ License text:
+ // Use, modification and distribution is subject to the Boost Software
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/graph/named_graph.hpp [3:5]
+
+KEEP BSL-1.0 476ce185bbfb7af264a4b35c8c5d052e
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/move/detail/std_ns_begin.hpp at line 5, boost/move/detail/std_ns_end.hpp at line 5
+ License text:
+ \#// Distributed under the Boost Software License, Version 1.0.
+ \#// (See accompanying file LICENSE_1_0.txt or copy at
+ \#// http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/move/detail/std_ns_begin.hpp [4:6]
+ boost/move/detail/std_ns_end.hpp [4:6]
+
+KEEP BSL-1.0 47a0454637d4fa45d78eb2557ccd70c4
+BELONGS libs/python/ya.make libs/thread/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/aligned_storage.hpp at line 10, boost/any.hpp at line 334, boost/archive/detail/utf8_codecvt_facet.hpp at line 4, boost/archive/impl/xml_oarchive_impl.ipp at line 6, boost/archive/impl/xml_woarchive_impl.ipp at line 6, boost/bind/apply.hpp at line 10, boost/bind/arg.hpp at line 16, boost/bind/bind.hpp at line 18, boost/bind/bind_cc.hpp at line 9, boost/bind/bind_mf_cc.hpp at line 9, boost/bind/bind_template.hpp at line 9, boost/bind/make_adaptable.hpp at line 10, boost/bind/mem_fn.hpp at line 18, boost/bind/mem_fn_cc.hpp at line 9, boost/bind/mem_fn_template.hpp at line 9, boost/bind/protect.hpp at line 11, boost/blank.hpp at line 10, boost/blank_fwd.hpp at line 10, boost/concept_archetype.hpp at line 4, boost/concept_check.hpp at line 6, boost/config/detail/suffix.hpp at line 14, boost/config/workaround.hpp at line 3, boost/core/ref.hpp at line 26, boost/core/swap.hpp at line 4, boost/detail/basic_pointerbuf.hpp at line 10, boost/detail/indirect_traits.hpp at line 3, boost/detail/iterator.hpp at line 3, boost/detail/named_template_params.hpp at line 3, boost/detail/numeric_traits.hpp at line 4, boost/detail/reference_content.hpp at line 10, boost/detail/templated_streams.hpp at line 10, boost/detail/workaround.hpp at line 3, boost/foreach.hpp at line 6, boost/foreach_fwd.hpp at line 6, boost/function_output_iterator.hpp at line 3, boost/generator_iterator.hpp at line 3, boost/get_pointer.hpp at line 3, boost/graph/adj_list_serialize.hpp at line 6, boost/graph/adjacency_iterator.hpp at line 6, boost/graph/adjacency_list.hpp at line 7, boost/graph/adjacency_list_io.hpp at line 6, boost/graph/adjacency_matrix.hpp at line 7, boost/graph/astar_search.hpp at line 8, boost/graph/bandwidth.hpp at line 4, boost/graph/bellman_ford_shortest_paths.hpp at line 7, boost/graph/biconnected_components.hpp at line 5, boost/graph/boyer_myrvold_planar_test.hpp at line 5, boost/graph/breadth_first_search.hpp at line 7, boost/graph/chrobak_payne_drawing.hpp at line 5, boost/graph/connected_components.hpp at line 7, boost/graph/copy.hpp at line 7, boost/graph/core_numbers.hpp at line 7, boost/graph/create_condensation_graph.hpp at line 6, boost/graph/cuthill_mckee_ordering.hpp at line 8, boost/graph/cycle_canceling.hpp at line 6, boost/graph/dag_shortest_paths.hpp at line 6, boost/graph/depth_first_search.hpp at line 7, boost/graph/detail/adj_list_edge_iterator.hpp at line 7, boost/graph/detail/adjacency_list.hpp at line 8, boost/graph/detail/array_binary_tree.hpp at line 7, boost/graph/detail/augment.hpp at line 6, boost/graph/detail/connected_components.hpp at line 6, boost/graph/detail/d_ary_heap.hpp at line 7, boost/graph/detail/edge.hpp at line 7, boost/graph/detail/incidence_iterator.hpp at line 7, boost/graph/detail/incremental_components.hpp at line 7, boost/graph/detail/list_base.hpp at line 6, boost/graph/detail/permutation.hpp at line 3, boost/graph/detail/self_avoiding_walk.hpp at line 6, boost/graph/detail/set_adaptor.hpp at line 3, boost/graph/detail/shadow_iterator.hpp at line 3, boost/graph/detail/sparse_ordering.hpp at line 8, boost/graph/dijkstra_shortest_paths.hpp at line 6, boost/graph/dijkstra_shortest_paths_no_color_map.hpp at line 7, boost/graph/dll_import_export.hpp at line 7, boost/graph/edge_coloring.hpp at line 6, boost/graph/edge_connectivity.hpp at line 6, boost/graph/edge_list.hpp at line 6, boost/graph/edmonds_karp_max_flow.hpp at line 6, boost/graph/exception.hpp at line 6, boost/graph/filtered_graph.hpp at line 6, boost/graph/find_flow_cost.hpp at line 6, boost/graph/graph_archetypes.hpp at line 6, boost/graph/graph_as_tree.hpp at line 7, boost/graph/graph_concepts.hpp at line 9, boost/graph/graph_selectors.hpp at line 6, boost/graph/graph_test.hpp at line 6, boost/graph/graph_traits.hpp at line 6, boost/graph/graph_utility.hpp at line 7, boost/graph/graphviz.hpp at line 7, boost/graph/grid_graph.hpp at line 6, boost/graph/incremental_components.hpp at line 8, boost/graph/is_kuratowski_subgraph.hpp at line 5, boost/graph/is_straight_line_drawing.hpp at line 5, boost/graph/isomorphism.hpp at line 4, boost/graph/iteration_macros.hpp at line 6, boost/graph/iteration_macros_undef.hpp at line 6, boost/graph/johnson_all_pairs_shortest.hpp at line 6, boost/graph/king_ordering.hpp at line 8, boost/graph/kruskal_min_spanning_tree.hpp at line 7, boost/graph/leda_graph.hpp at line 9, boost/graph/lookup_edge.hpp at line 6, boost/graph/make_biconnected_planar.hpp at line 5, boost/graph/make_connected.hpp at line 5, boost/graph/make_maximal_planar.hpp at line 5, boost/graph/matrix_as_graph.hpp at line 7, boost/graph/maximum_adjacency_search.hpp at line 7, boost/graph/mcgregor_common_subgraphs.hpp at line 6, boost/graph/metric_tsp_approx.hpp at line 7, boost/graph/minimum_degree_ordering.hpp at line 7, boost/graph/named_function_params.hpp at line 6, boost/graph/neighbor_bfs.hpp at line 7, boost/graph/planar_canonical_ordering.hpp at line 5, boost/graph/planar_detail/add_edge_visitors.hpp at line 5, boost/graph/planar_detail/boyer_myrvold_impl.hpp at line 5, boost/graph/planar_detail/bucket_sort.hpp at line 5, boost/graph/planar_detail/face_handles.hpp at line 5, boost/graph/planar_detail/face_iterators.hpp at line 5, boost/graph/planar_face_traversal.hpp at line 5, boost/graph/prim_minimum_spanning_tree.hpp at line 6, boost/graph/profile.hpp at line 7, boost/graph/properties.hpp at line 6, boost/graph/property_iter_range.hpp at line 5, boost/graph/push_relabel_max_flow.hpp at line 6, boost/graph/random.hpp at line 7, boost/graph/read_dimacs.hpp at line 6, boost/graph/relax.hpp at line 6, boost/graph/reverse_graph.hpp at line 3, boost/graph/sequential_vertex_coloring.hpp at line 7, boost/graph/simple_point.hpp at line 6, boost/graph/sloan_ordering.hpp at line 7, boost/graph/smallest_last_ordering.hpp at line 6, boost/graph/stanford_graph.hpp at line 6, boost/graph/strong_components.hpp at line 7, boost/graph/subgraph.hpp at line 6, boost/graph/successive_shortest_path_nonnegative_weights.hpp at line 6, boost/graph/topological_sort.hpp at line 7, boost/graph/transitive_closure.hpp at line 4, boost/graph/transpose_graph.hpp at line 7, boost/graph/tree_traits.hpp at line 3, boost/graph/undirected_dfs.hpp at line 7, boost/graph/vector_as_graph.hpp at line 8, boost/graph/vf2_sub_graph_iso.hpp at line 10, boost/graph/visitors.hpp at line 6, boost/graph/wavefront.hpp at line 7, boost/heap/binomial_heap.hpp at line 6, boost/heap/d_ary_heap.hpp at line 6, boost/heap/detail/heap_comparison.hpp at line 6, boost/heap/detail/heap_node.hpp at line 6, boost/heap/detail/ilog2.hpp at line 6, boost/heap/detail/mutable_heap.hpp at line 6, boost/heap/detail/ordered_adaptor_iterator.hpp at line 6, boost/heap/detail/stable_heap.hpp at line 6, boost/heap/detail/tree_iterator.hpp at line 6, boost/heap/fibonacci_heap.hpp at line 6, boost/heap/heap_concepts.hpp at line 6, boost/heap/heap_merge.hpp at line 6, boost/heap/pairing_heap.hpp at line 6, boost/heap/policies.hpp at line 6, boost/heap/priority_queue.hpp at line 6, boost/heap/skew_heap.hpp at line 6, boost/implicit_cast.hpp at line 3, boost/interprocess/detail/atomic.hpp at line 8, boost/interprocess/smart_ptr/detail/sp_counted_base_atomic.hpp at line 17, boost/interprocess/smart_ptr/detail/sp_counted_impl.hpp at line 21, boost/iterator/counting_iterator.hpp at line 3, boost/iterator/detail/config_def.hpp at line 5, boost/iterator/detail/config_undef.hpp at line 3, boost/iterator/detail/enable_if.hpp at line 5, boost/iterator/filter_iterator.hpp at line 5, boost/iterator/function_input_iterator.hpp at line 5, boost/iterator/function_output_iterator.hpp at line 3, boost/iterator/indirect_iterator.hpp at line 5, boost/iterator/interoperable.hpp at line 5, boost/iterator/iterator_adaptor.hpp at line 5, boost/iterator/iterator_archetypes.hpp at line 3, boost/iterator/iterator_categories.hpp at line 3, boost/iterator/iterator_concepts.hpp at line 3, boost/iterator/iterator_facade.hpp at line 5, boost/iterator/iterator_traits.hpp at line 3, boost/iterator/permutation_iterator.hpp at line 5, boost/iterator/reverse_iterator.hpp at line 5, boost/iterator/transform_iterator.hpp at line 5, boost/iterator/zip_iterator.hpp at line 5, boost/lambda/algorithm.hpp at line 6, boost/lambda/bind.hpp at line 7, boost/lambda/casts.hpp at line 7, boost/lambda/construct.hpp at line 7, boost/lambda/control_structures.hpp at line 5, boost/lambda/core.hpp at line 7, boost/lambda/detail/actions.hpp at line 6, boost/lambda/detail/arity_code.hpp at line 6, boost/lambda/detail/bind_functions.hpp at line 6, boost/lambda/detail/control_constructs_common.hpp at line 7, boost/lambda/detail/function_adaptors.hpp at line 6, boost/lambda/detail/is_instance_of.hpp at line 6, boost/lambda/detail/lambda_config.hpp at line 6, boost/lambda/detail/lambda_functor_base.hpp at line 6, boost/lambda/detail/lambda_functors.hpp at line 6, boost/lambda/detail/lambda_fwd.hpp at line 6, boost/lambda/detail/lambda_traits.hpp at line 6, boost/lambda/detail/member_ptr.hpp at line 7, boost/lambda/detail/operator_actions.hpp at line 6, boost/lambda/detail/operator_lambda_func_base.hpp at line 6, boost/lambda/detail/operator_return_type_traits.hpp at line 6, boost/lambda/detail/operators.hpp at line 6, boost/lambda/detail/ret.hpp at line 6, boost/lambda/detail/return_type_traits.hpp at line 6, boost/lambda/detail/select_functions.hpp at line 6, boost/lambda/detail/suppress_unused.hpp at line 6, boost/lambda/exceptions.hpp at line 7, boost/lambda/if.hpp at line 8, boost/lambda/lambda.hpp at line 5, boost/lambda/loops.hpp at line 8, boost/lambda/numeric.hpp at line 6, boost/lambda/switch.hpp at line 7, boost/lexical_cast.hpp at line 6, boost/lexical_cast/bad_lexical_cast.hpp at line 6, boost/lexical_cast/detail/converter_lexical.hpp at line 6, boost/lexical_cast/detail/converter_lexical_streams.hpp at line 6, boost/lexical_cast/detail/converter_numeric.hpp at line 6, boost/lexical_cast/detail/inf_nan.hpp at line 6, boost/lexical_cast/detail/is_character.hpp at line 6, boost/lexical_cast/detail/lcast_char_constants.hpp at line 6, boost/lexical_cast/detail/lcast_unsigned_converters.hpp at line 6, boost/lexical_cast/detail/widest_char.hpp at line 6, boost/lexical_cast/lexical_cast_old.hpp at line 6, boost/lexical_cast/try_lexical_convert.hpp at line 6, boost/lockfree/detail/parameter.hpp at line 6, boost/lockfree/policies.hpp at line 6, boost/pending/bucket_sorter.hpp at line 7, boost/pending/disjoint_sets.hpp at line 7, boost/pending/fibonacci_heap.hpp at line 3, boost/pending/indirect_cmp.hpp at line 7, boost/pending/is_heap.hpp at line 7, boost/pending/iterator_adaptors.hpp at line 3, boost/pending/iterator_tests.hpp at line 3, boost/pending/mutable_heap.hpp at line 7, boost/pending/mutable_queue.hpp at line 7, boost/program_options.hpp at line 3, boost/property_map/compose_property_map.hpp at line 5, boost/property_map/function_property_map.hpp at line 8, boost/property_map/parallel/parallel_property_maps.hpp at line 6, boost/property_map/parallel/vector_property_map.hpp at line 3, boost/property_map/property_map.hpp at line 6, boost/property_map/property_map_iterator.hpp at line 3, boost/property_map/shared_array_property_map.hpp at line 5, boost/property_map/transform_value_property_map.hpp at line 8, boost/property_map/vector_property_map.hpp at line 3, boost/ptr_container/detail/serialize_ptr_map_adapter.hpp at line 3, boost/ptr_container/detail/serialize_reversible_cont.hpp at line 3, boost/ptr_container/serialize_ptr_array.hpp at line 3, boost/ptr_container/serialize_ptr_container.hpp at line 3, boost/ptr_container/serialize_ptr_deque.hpp at line 3, boost/ptr_container/serialize_ptr_list.hpp at line 3, boost/ptr_container/serialize_ptr_map.hpp at line 3, boost/ptr_container/serialize_ptr_set.hpp at line 3, boost/ptr_container/serialize_ptr_vector.hpp at line 3, boost/python.hpp at line 3, boost/python/arg_from_python.hpp at line 3, boost/python/args.hpp at line 3, boost/python/args_fwd.hpp at line 3, boost/python/back_reference.hpp at line 3, boost/python/base_type_traits.hpp at line 3, boost/python/bases.hpp at line 3, boost/python/borrowed.hpp at line 3, boost/python/call.hpp at line 5, boost/python/call_method.hpp at line 5, boost/python/cast.hpp at line 3, boost/python/class.hpp at line 3, boost/python/class_fwd.hpp at line 3, boost/python/converter/arg_from_python.hpp at line 3, boost/python/converter/arg_to_python.hpp at line 3, boost/python/converter/arg_to_python_base.hpp at line 3, boost/python/converter/as_to_python_function.hpp at line 3, boost/python/converter/builtin_converters.hpp at line 3, boost/python/converter/constructor_function.hpp at line 3, boost/python/converter/context_result_converter.hpp at line 3, boost/python/converter/convertible_function.hpp at line 3, boost/python/converter/from_python.hpp at line 3, boost/python/converter/implicit.hpp at line 3, boost/python/converter/obj_mgr_arg_from_python.hpp at line 3, boost/python/converter/object_manager.hpp at line 3, boost/python/converter/pointer_type_id.hpp at line 3, boost/python/converter/pyobject_traits.hpp at line 3, boost/python/converter/pyobject_type.hpp at line 3, boost/python/converter/pytype_function.hpp at line 3, boost/python/converter/pytype_object_mgr_traits.hpp at line 3, boost/python/converter/registered.hpp at line 4, boost/python/converter/registered_pointee.hpp at line 3, boost/python/converter/registrations.hpp at line 3, boost/python/converter/registry.hpp at line 3, boost/python/converter/return_from_python.hpp at line 3, boost/python/converter/rvalue_from_python_data.hpp at line 3, boost/python/converter/shared_ptr_deleter.hpp at line 3, boost/python/converter/shared_ptr_from_python.hpp at line 4, boost/python/converter/shared_ptr_to_python.hpp at line 4, boost/python/converter/to_python_function_type.hpp at line 3, boost/python/copy_const_reference.hpp at line 3, boost/python/copy_non_const_reference.hpp at line 3, boost/python/data_members.hpp at line 3, boost/python/def.hpp at line 3, boost/python/def_visitor.hpp at line 3, boost/python/default_call_policies.hpp at line 3, boost/python/detail/aix_init_module.hpp at line 3, boost/python/detail/api_placeholder.hpp at line 3, boost/python/detail/borrowed_ptr.hpp at line 5, boost/python/detail/caller.hpp at line 5, boost/python/detail/config.hpp at line 3, boost/python/detail/construct.hpp at line 3, boost/python/detail/convertible.hpp at line 3, boost/python/detail/copy_ctor_mutates_rhs.hpp at line 3, boost/python/detail/cv_category.hpp at line 3, boost/python/detail/dealloc.hpp at line 3, boost/python/detail/decorated_type_id.hpp at line 3, boost/python/detail/decref_guard.hpp at line 3, boost/python/detail/def_helper.hpp at line 3, boost/python/detail/def_helper_fwd.hpp at line 3, boost/python/detail/defaults_def.hpp at line 5, boost/python/detail/defaults_gen.hpp at line 5, boost/python/detail/dependent.hpp at line 3, boost/python/detail/destroy.hpp at line 3, boost/python/detail/exception_handler.hpp at line 3, boost/python/detail/force_instantiate.hpp at line 3, boost/python/detail/if_else.hpp at line 3, boost/python/detail/invoke.hpp at line 5, boost/python/detail/is_auto_ptr.hpp at line 3, boost/python/detail/is_shared_ptr.hpp at line 4, boost/python/detail/is_xxx.hpp at line 3, boost/python/detail/make_keyword_range_fn.hpp at line 3, boost/python/detail/map_entry.hpp at line 3, boost/python/detail/mpl_lambda.hpp at line 3, boost/python/detail/msvc_typeinfo.hpp at line 3, boost/python/detail/none.hpp at line 3, boost/python/detail/not_specified.hpp at line 3, boost/python/detail/nullary_function_adaptor.hpp at line 3, boost/python/detail/operator_id.hpp at line 3, boost/python/detail/overloads_fwd.hpp at line 3, boost/python/detail/pointee.hpp at line 3, boost/python/detail/prefix.hpp at line 3, boost/python/detail/preprocessor.hpp at line 3, boost/python/detail/python_type.hpp at line 3, boost/python/detail/raw_pyobject.hpp at line 3, boost/python/detail/referent_storage.hpp at line 3, boost/python/detail/result.hpp at line 5, boost/python/detail/scope.hpp at line 3, boost/python/detail/signature.hpp at line 5, boost/python/detail/string_literal.hpp at line 3, boost/python/detail/target.hpp at line 5, boost/python/detail/translate_exception.hpp at line 3, boost/python/detail/type_list.hpp at line 3, boost/python/detail/type_list_impl.hpp at line 4, boost/python/detail/type_traits.hpp at line 3, boost/python/detail/unwind_type.hpp at line 3, boost/python/detail/value_is_shared_ptr.hpp at line 4, boost/python/detail/value_is_xxx.hpp at line 3, boost/python/detail/void_ptr.hpp at line 3, boost/python/detail/void_return.hpp at line 3, boost/python/detail/wrap_python.hpp at line 3, boost/python/dict.hpp at line 3, boost/python/docstring_options.hpp at line 3, boost/python/enum.hpp at line 3, boost/python/errors.hpp at line 3, boost/python/exception_translator.hpp at line 3, boost/python/exec.hpp at line 3, boost/python/extract.hpp at line 3, boost/python/handle.hpp at line 3, boost/python/handle_fwd.hpp at line 3, boost/python/has_back_reference.hpp at line 3, boost/python/implicit.hpp at line 3, boost/python/import.hpp at line 3, boost/python/init.hpp at line 5, boost/python/instance_holder.hpp at line 3, boost/python/iterator.hpp at line 3, boost/python/list.hpp at line 3, boost/python/long.hpp at line 3, boost/python/lvalue_from_pytype.hpp at line 3, boost/python/make_constructor.hpp at line 3, boost/python/make_function.hpp at line 3, boost/python/manage_new_object.hpp at line 3, boost/python/module.hpp at line 3, boost/python/module_init.hpp at line 3, boost/python/numpy/config.hpp at line 3, boost/python/object.hpp at line 3, boost/python/object/add_to_namespace.hpp at line 3, boost/python/object/class.hpp at line 3, boost/python/object/class_detail.hpp at line 3, boost/python/object/class_wrapper.hpp at line 3, boost/python/object/enum_base.hpp at line 3, boost/python/object/find_instance.hpp at line 3, boost/python/object/forward.hpp at line 3, boost/python/object/function.hpp at line 3, boost/python/object/function_doc_signature.hpp at line 3, boost/python/object/function_handle.hpp at line 3, boost/python/object/function_object.hpp at line 3, boost/python/object/inheritance.hpp at line 3, boost/python/object/inheritance_query.hpp at line 3, boost/python/object/instance.hpp at line 3, boost/python/object/iterator.hpp at line 3, boost/python/object/iterator_core.hpp at line 3, boost/python/object/life_support.hpp at line 3, boost/python/object/make_holder.hpp at line 5, boost/python/object/make_instance.hpp at line 3, boost/python/object/make_ptr_instance.hpp at line 3, boost/python/object/pointer_holder.hpp at line 5, boost/python/object/py_function.hpp at line 3, boost/python/object/stl_iterator_core.hpp at line 3, boost/python/object/value_holder.hpp at line 5, boost/python/object/value_holder_fwd.hpp at line 3, boost/python/object_attributes.hpp at line 3, boost/python/object_core.hpp at line 3, boost/python/object_fwd.hpp at line 3, boost/python/object_items.hpp at line 3, boost/python/object_operators.hpp at line 3, boost/python/object_protocol.hpp at line 3, boost/python/object_protocol_core.hpp at line 3, boost/python/object_slices.hpp at line 3, boost/python/opaque_pointer_converter.hpp at line 3, boost/python/operators.hpp at line 3, boost/python/other.hpp at line 7, boost/python/overloads.hpp at line 3, boost/python/pointee.hpp at line 3, boost/python/proxy.hpp at line 3, boost/python/ptr.hpp at line 7, boost/python/pure_virtual.hpp at line 3, boost/python/raw_function.hpp at line 3, boost/python/refcount.hpp at line 3, boost/python/reference_existing_object.hpp at line 3, boost/python/register_ptr_to_python.hpp at line 3, boost/python/return_arg.hpp at line 3, boost/python/return_by_value.hpp at line 3, boost/python/return_internal_reference.hpp at line 3, boost/python/return_opaque_pointer.hpp at line 3, boost/python/return_value_policy.hpp at line 3, boost/python/scope.hpp at line 3, boost/python/self.hpp at line 3, boost/python/signature.hpp at line 5, boost/python/slice_nil.hpp at line 3, boost/python/ssize_t.hpp at line 3, boost/python/stl_iterator.hpp at line 3, boost/python/str.hpp at line 3, boost/python/tag.hpp at line 3, boost/python/to_python_converter.hpp at line 3, boost/python/to_python_indirect.hpp at line 3, boost/python/to_python_value.hpp at line 4, boost/python/tuple.hpp at line 3, boost/python/type_id.hpp at line 3, boost/python/with_custodian_and_ward.hpp at line 3, boost/range/algorithm.hpp at line 10, boost/range/numeric.hpp at line 13, boost/range/numeric.hpp at line 3, boost/range/numeric.hpp at line 8, boost/serialization/detail/shared_count_132.hpp at line 16, boost/serialization/throw_exception.hpp at line 15, boost/signals2/detail/auto_buffer.hpp at line 3, boost/signals2/detail/lwm_nop.hpp at line 8, boost/signals2/detail/lwm_pthreads.hpp at line 8, boost/signals2/detail/lwm_win32_cs.hpp at line 9, boost/signals2/mutex.hpp at line 8, boost/smart_ptr/bad_weak_ptr.hpp at line 16, boost/smart_ptr/detail/atomic_count_pt.hpp at line 10, boost/smart_ptr/detail/atomic_count_solaris.hpp at line 12, boost/smart_ptr/detail/atomic_count_win32.hpp at line 16, boost/smart_ptr/detail/lightweight_mutex.hpp at line 16, boost/smart_ptr/detail/lwm_nop.hpp at line 16, boost/smart_ptr/detail/lwm_pthreads.hpp at line 16, boost/smart_ptr/detail/lwm_win32_cs.hpp at line 17, boost/smart_ptr/detail/quick_allocator.hpp at line 17, boost/smart_ptr/detail/shared_count.hpp at line 17, boost/smart_ptr/detail/sp_counted_base.hpp at line 16, boost/smart_ptr/detail/sp_counted_base_nt.hpp at line 17, boost/smart_ptr/detail/sp_counted_base_pt.hpp at line 17, boost/smart_ptr/detail/sp_counted_impl.hpp at line 17, boost/stacktrace.hpp at line 4, boost/stacktrace/detail/addr2line_impls.hpp at line 4, boost/stacktrace/detail/collect_msvc.ipp at line 4, boost/stacktrace/detail/collect_noop.ipp at line 4, boost/stacktrace/detail/collect_unwind.ipp at line 4, boost/stacktrace/detail/frame_decl.hpp at line 4, boost/stacktrace/detail/frame_msvc.ipp at line 4, boost/stacktrace/detail/frame_noop.ipp at line 4, boost/stacktrace/detail/frame_unwind.ipp at line 4, boost/stacktrace/detail/libbacktrace_impls.hpp at line 4, boost/stacktrace/detail/location_from_symbol.hpp at line 4, boost/stacktrace/detail/pop_options.h at line 4, boost/stacktrace/detail/push_options.h at line 4, boost/stacktrace/detail/safe_dump_noop.ipp at line 4, boost/stacktrace/detail/safe_dump_posix.ipp at line 4, boost/stacktrace/detail/safe_dump_win.ipp at line 4, boost/stacktrace/detail/to_hex_array.hpp at line 4, boost/stacktrace/detail/unwind_base_impls.hpp at line 4, boost/stacktrace/frame.hpp at line 4, boost/stacktrace/safe_dump_to.hpp at line 4, boost/stacktrace/stacktrace.hpp at line 4, boost/stacktrace/stacktrace_fwd.hpp at line 4, boost/thread/caller_context.hpp at line 3, boost/thread/completion_latch.hpp at line 2, boost/thread/detail/counter.hpp at line 2, boost/thread/detail/force_cast.hpp at line 5, boost/thread/detail/lockable_wrapper.hpp at line 2, boost/thread/detail/move.hpp at line 2, boost/thread/detail/platform.hpp at line 4, boost/thread/detail/singleton.hpp at line 5, boost/thread/detail/thread.hpp at line 4, boost/thread/detail/thread_group.hpp at line 4, boost/thread/detail/thread_interruption.hpp at line 4, boost/thread/exceptional_ptr.hpp at line 2, boost/thread/externally_locked.hpp at line 3, boost/thread/externally_locked_stream.hpp at line 3, boost/thread/is_locked_by_this_thread.hpp at line 3, boost/thread/latch.hpp at line 2, boost/thread/lock_algorithms.hpp at line 2, boost/thread/lock_factories.hpp at line 2, boost/thread/lock_guard.hpp at line 2, boost/thread/lock_options.hpp at line 2, boost/thread/lock_traits.hpp at line 2, boost/thread/lock_types.hpp at line 2, boost/thread/lockable_traits.hpp at line 2, boost/thread/locks.hpp at line 2, boost/thread/ostream_buffer.hpp at line 3, boost/thread/pthread/condition_variable.hpp at line 4, boost/thread/pthread/condition_variable_fwd.hpp at line 4, boost/thread/pthread/mutex.hpp at line 6, boost/thread/pthread/recursive_mutex.hpp at line 6, boost/thread/pthread/thread_data.hpp at line 4, boost/thread/pthread/thread_heap_alloc.hpp at line 2, boost/thread/reverse_lock.hpp at line 2, boost/thread/scoped_thread.hpp at line 2, boost/thread/shared_lock_guard.hpp at line 2, boost/thread/strict_lock.hpp at line 2, boost/thread/synchronized_value.hpp at line 4, boost/thread/testable_mutex.hpp at line 3, boost/thread/thread_functors.hpp at line 2, boost/thread/thread_guard.hpp at line 2, boost/thread/tss.hpp at line 4, boost/thread/win32/condition_variable.hpp at line 4, boost/thread/win32/mfc_thread_init.hpp at line 4, boost/thread/win32/mutex.hpp at line 6, boost/thread/win32/thread_data.hpp at line 4, boost/thread/win32/thread_heap_alloc.hpp at line 2, boost/tuple/detail/tuple_basic.hpp at line 6, boost/tuple/tuple.hpp at line 6, boost/tuple/tuple_comparison.hpp at line 7, boost/tuple/tuple_io.hpp at line 7, boost/type.hpp at line 3, boost/type_traits/aligned_storage.hpp at line 10, boost/type_traits/floating_point_promotion.hpp at line 3, boost/type_traits/integral_promotion.hpp at line 3, boost/type_traits/promote.hpp at line 3, boost/units/absolute.hpp at line 8, boost/units/base_dimension.hpp at line 8, boost/units/base_unit.hpp at line 8, boost/units/base_units/angle/arcminute.hpp at line 8, boost/units/base_units/angle/arcsecond.hpp at line 8, boost/units/base_units/angle/degree.hpp at line 8, boost/units/base_units/angle/gradian.hpp at line 8, boost/units/base_units/angle/radian.hpp at line 8, boost/units/base_units/angle/revolution.hpp at line 8, boost/units/base_units/angle/steradian.hpp at line 8, boost/units/base_units/astronomical/astronomical_unit.hpp at line 8, boost/units/base_units/astronomical/light_day.hpp at line 8, boost/units/base_units/astronomical/light_hour.hpp at line 8, boost/units/base_units/astronomical/light_minute.hpp at line 8, boost/units/base_units/astronomical/light_second.hpp at line 8, boost/units/base_units/astronomical/light_year.hpp at line 8, boost/units/base_units/astronomical/parsec.hpp at line 8, boost/units/base_units/cgs/biot.hpp at line 8, boost/units/base_units/cgs/centimeter.hpp at line 8, boost/units/base_units/cgs/gram.hpp at line 8, boost/units/base_units/imperial/conversions.hpp at line 8, boost/units/base_units/imperial/drachm.hpp at line 8, boost/units/base_units/imperial/fluid_ounce.hpp at line 8, boost/units/base_units/imperial/foot.hpp at line 8, boost/units/base_units/imperial/furlong.hpp at line 8, boost/units/base_units/imperial/gallon.hpp at line 8, boost/units/base_units/imperial/gill.hpp at line 8, boost/units/base_units/imperial/grain.hpp at line 8, boost/units/base_units/imperial/hundredweight.hpp at line 8, boost/units/base_units/imperial/inch.hpp at line 8, boost/units/base_units/imperial/league.hpp at line 8, boost/units/base_units/imperial/mile.hpp at line 8, boost/units/base_units/imperial/ounce.hpp at line 8, boost/units/base_units/imperial/pint.hpp at line 8, boost/units/base_units/imperial/pound.hpp at line 8, boost/units/base_units/imperial/quart.hpp at line 8, boost/units/base_units/imperial/quarter.hpp at line 8, boost/units/base_units/imperial/stone.hpp at line 8, boost/units/base_units/imperial/thou.hpp at line 8, boost/units/base_units/imperial/ton.hpp at line 8, boost/units/base_units/imperial/yard.hpp at line 8, boost/units/base_units/information/bit.hpp at line 7, boost/units/base_units/information/byte.hpp at line 7, boost/units/base_units/information/hartley.hpp at line 7, boost/units/base_units/information/nat.hpp at line 7, boost/units/base_units/information/shannon.hpp at line 7, boost/units/base_units/metric/angstrom.hpp at line 8, boost/units/base_units/metric/are.hpp at line 8, boost/units/base_units/metric/atmosphere.hpp at line 8, boost/units/base_units/metric/bar.hpp at line 8, boost/units/base_units/metric/barn.hpp at line 8, boost/units/base_units/metric/day.hpp at line 8, boost/units/base_units/metric/fermi.hpp at line 8, boost/units/base_units/metric/hectare.hpp at line 8, boost/units/base_units/metric/hour.hpp at line 8, boost/units/base_units/metric/knot.hpp at line 8, boost/units/base_units/metric/liter.hpp at line 8, boost/units/base_units/metric/micron.hpp at line 8, boost/units/base_units/metric/minute.hpp at line 8, boost/units/base_units/metric/mmHg.hpp at line 8, boost/units/base_units/metric/nautical_mile.hpp at line 8, boost/units/base_units/metric/ton.hpp at line 8, boost/units/base_units/metric/torr.hpp at line 8, boost/units/base_units/metric/year.hpp at line 8, boost/units/base_units/si/ampere.hpp at line 8, boost/units/base_units/si/candela.hpp at line 8, boost/units/base_units/si/kelvin.hpp at line 8, boost/units/base_units/si/kilogram.hpp at line 8, boost/units/base_units/si/meter.hpp at line 8, boost/units/base_units/si/mole.hpp at line 8, boost/units/base_units/si/second.hpp at line 8, boost/units/base_units/temperature/celsius.hpp at line 8, boost/units/base_units/temperature/conversions.hpp at line 8, boost/units/base_units/temperature/fahrenheit.hpp at line 8, boost/units/base_units/us/cup.hpp at line 8, boost/units/base_units/us/dram.hpp at line 8, boost/units/base_units/us/fluid_dram.hpp at line 8, boost/units/base_units/us/fluid_ounce.hpp at line 8, boost/units/base_units/us/foot.hpp at line 8, boost/units/base_units/us/gallon.hpp at line 8, boost/units/base_units/us/gill.hpp at line 8, boost/units/base_units/us/grain.hpp at line 8, boost/units/base_units/us/hundredweight.hpp at line 8, boost/units/base_units/us/inch.hpp at line 8, boost/units/base_units/us/mil.hpp at line 8, boost/units/base_units/us/mile.hpp at line 8, boost/units/base_units/us/minim.hpp at line 8, boost/units/base_units/us/ounce.hpp at line 8, boost/units/base_units/us/pint.hpp at line 8, boost/units/base_units/us/pound.hpp at line 8, boost/units/base_units/us/pound_force.hpp at line 8, boost/units/base_units/us/quart.hpp at line 8, boost/units/base_units/us/tablespoon.hpp at line 8, boost/units/base_units/us/teaspoon.hpp at line 8, boost/units/base_units/us/ton.hpp at line 8, boost/units/base_units/us/yard.hpp at line 8, boost/units/cmath.hpp at line 8, boost/units/config.hpp at line 8, boost/units/conversion.hpp at line 8, boost/units/derived_dimension.hpp at line 8, boost/units/detail/absolute_impl.hpp at line 8, boost/units/detail/cmath_impl.hpp at line 8, boost/units/detail/conversion_impl.hpp at line 8, boost/units/detail/dim_impl.hpp at line 8, boost/units/detail/dimension_impl.hpp at line 8, boost/units/detail/dimension_list.hpp at line 8, boost/units/detail/dimensionless_unit.hpp at line 8, boost/units/detail/heterogeneous_conversion.hpp at line 8, boost/units/detail/linear_algebra.hpp at line 8, boost/units/detail/one.hpp at line 8, boost/units/detail/ordinal.hpp at line 8, boost/units/detail/prevent_redefinition.hpp at line 8, boost/units/detail/push_front_if.hpp at line 8, boost/units/detail/push_front_or_add.hpp at line 8, boost/units/detail/sort.hpp at line 8, boost/units/detail/static_rational_power.hpp at line 8, boost/units/detail/unscale.hpp at line 8, boost/units/detail/utility.hpp at line 8, boost/units/dim.hpp at line 8, boost/units/dimension.hpp at line 8, boost/units/dimensionless_quantity.hpp at line 8, boost/units/dimensionless_type.hpp at line 8, boost/units/dimensionless_unit.hpp at line 8, boost/units/get_dimension.hpp at line 8, boost/units/get_system.hpp at line 8, boost/units/heterogeneous_system.hpp at line 8, boost/units/homogeneous_system.hpp at line 8, boost/units/io.hpp at line 8, boost/units/is_dim.hpp at line 8, boost/units/is_dimension_list.hpp at line 8, boost/units/is_dimensionless.hpp at line 8, boost/units/is_dimensionless_quantity.hpp at line 8, boost/units/is_dimensionless_unit.hpp at line 8, boost/units/is_quantity.hpp at line 8, boost/units/is_quantity_of_dimension.hpp at line 8, boost/units/is_quantity_of_system.hpp at line 8, boost/units/is_unit.hpp at line 8, boost/units/is_unit_of_dimension.hpp at line 8, boost/units/is_unit_of_system.hpp at line 8, boost/units/lambda.hpp at line 8, boost/units/limits.hpp at line 8, boost/units/make_scaled_unit.hpp at line 8, boost/units/make_system.hpp at line 8, boost/units/operators.hpp at line 8, boost/units/physical_dimensions.hpp at line 8, boost/units/physical_dimensions/absorbed_dose.hpp at line 8, boost/units/physical_dimensions/acceleration.hpp at line 8, boost/units/physical_dimensions/action.hpp at line 8, boost/units/physical_dimensions/activity.hpp at line 8, boost/units/physical_dimensions/amount.hpp at line 8, boost/units/physical_dimensions/angular_acceleration.hpp at line 8, boost/units/physical_dimensions/angular_momentum.hpp at line 8, boost/units/physical_dimensions/angular_velocity.hpp at line 8, boost/units/physical_dimensions/area.hpp at line 8, boost/units/physical_dimensions/capacitance.hpp at line 8, boost/units/physical_dimensions/conductance.hpp at line 8, boost/units/physical_dimensions/conductivity.hpp at line 8, boost/units/physical_dimensions/current.hpp at line 8, boost/units/physical_dimensions/dose_equivalent.hpp at line 8, boost/units/physical_dimensions/dynamic_viscosity.hpp at line 8, boost/units/physical_dimensions/electric_charge.hpp at line 8, boost/units/physical_dimensions/electric_potential.hpp at line 8, boost/units/physical_dimensions/energy.hpp at line 8, boost/units/physical_dimensions/energy_density.hpp at line 8, boost/units/physical_dimensions/force.hpp at line 8, boost/units/physical_dimensions/frequency.hpp at line 8, boost/units/physical_dimensions/heat_capacity.hpp at line 8, boost/units/physical_dimensions/illuminance.hpp at line 8, boost/units/physical_dimensions/impedance.hpp at line 8, boost/units/physical_dimensions/inductance.hpp at line 8, boost/units/physical_dimensions/information.hpp at line 7, boost/units/physical_dimensions/kinematic_viscosity.hpp at line 8, boost/units/physical_dimensions/length.hpp at line 8, boost/units/physical_dimensions/luminance.hpp at line 8, boost/units/physical_dimensions/luminous_flux.hpp at line 8, boost/units/physical_dimensions/luminous_intensity.hpp at line 8, boost/units/physical_dimensions/magnetic_field_intensity.hpp at line 8, boost/units/physical_dimensions/magnetic_flux.hpp at line 8, boost/units/physical_dimensions/magnetic_flux_density.hpp at line 8, boost/units/physical_dimensions/mass.hpp at line 8, boost/units/physical_dimensions/mass_density.hpp at line 8, boost/units/physical_dimensions/molar_energy.hpp at line 8, boost/units/physical_dimensions/molar_heat_capacity.hpp at line 8, boost/units/physical_dimensions/moment_of_inertia.hpp at line 8, boost/units/physical_dimensions/momentum.hpp at line 8, boost/units/physical_dimensions/permeability.hpp at line 8, boost/units/physical_dimensions/permittivity.hpp at line 8, boost/units/physical_dimensions/plane_angle.hpp at line 8, boost/units/physical_dimensions/power.hpp at line 8, boost/units/physical_dimensions/pressure.hpp at line 8, boost/units/physical_dimensions/reluctance.hpp at line 8, boost/units/physical_dimensions/resistance.hpp at line 8, boost/units/physical_dimensions/resistivity.hpp at line 8, boost/units/physical_dimensions/solid_angle.hpp at line 8, boost/units/physical_dimensions/specific_energy.hpp at line 8, boost/units/physical_dimensions/specific_heat_capacity.hpp at line 8, boost/units/physical_dimensions/specific_volume.hpp at line 8, boost/units/physical_dimensions/stress.hpp at line 8, boost/units/physical_dimensions/surface_density.hpp at line 8, boost/units/physical_dimensions/surface_tension.hpp at line 8, boost/units/physical_dimensions/temperature.hpp at line 8, boost/units/physical_dimensions/thermal_conductivity.hpp at line 8, boost/units/physical_dimensions/time.hpp at line 8, boost/units/physical_dimensions/torque.hpp at line 8, boost/units/physical_dimensions/velocity.hpp at line 8, boost/units/physical_dimensions/volume.hpp at line 8, boost/units/physical_dimensions/wavenumber.hpp at line 8, boost/units/pow.hpp at line 8, boost/units/quantity.hpp at line 8, boost/units/reduce_unit.hpp at line 8, boost/units/scale.hpp at line 8, boost/units/scaled_base_unit.hpp at line 8, boost/units/static_constant.hpp at line 8, boost/units/static_rational.hpp at line 8, boost/units/systems/abstract.hpp at line 8, boost/units/systems/angle/degrees.hpp at line 8, boost/units/systems/angle/gradians.hpp at line 8, boost/units/systems/angle/revolutions.hpp at line 8, boost/units/systems/cgs.hpp at line 8, boost/units/systems/cgs/acceleration.hpp at line 8, boost/units/systems/cgs/area.hpp at line 8, boost/units/systems/cgs/base.hpp at line 8, boost/units/systems/cgs/current.hpp at line 8, boost/units/systems/cgs/dimensionless.hpp at line 8, boost/units/systems/cgs/dynamic_viscosity.hpp at line 8, boost/units/systems/cgs/energy.hpp at line 8, boost/units/systems/cgs/force.hpp at line 8, boost/units/systems/cgs/frequency.hpp at line 8, boost/units/systems/cgs/io.hpp at line 8, boost/units/systems/cgs/kinematic_viscosity.hpp at line 8, boost/units/systems/cgs/length.hpp at line 8, boost/units/systems/cgs/mass.hpp at line 8, boost/units/systems/cgs/mass_density.hpp at line 8, boost/units/systems/cgs/momentum.hpp at line 8, boost/units/systems/cgs/power.hpp at line 8, boost/units/systems/cgs/pressure.hpp at line 8, boost/units/systems/cgs/time.hpp at line 8, boost/units/systems/cgs/velocity.hpp at line 8, boost/units/systems/cgs/volume.hpp at line 8, boost/units/systems/cgs/wavenumber.hpp at line 8, boost/units/systems/detail/constants.hpp at line 8, boost/units/systems/information.hpp at line 7, boost/units/systems/information/bit.hpp at line 7, boost/units/systems/information/byte.hpp at line 7, boost/units/systems/information/hartley.hpp at line 7, boost/units/systems/information/nat.hpp at line 7, boost/units/systems/information/prefixes.hpp at line 7, boost/units/systems/information/shannon.hpp at line 7, boost/units/systems/si.hpp at line 8, boost/units/systems/si/absorbed_dose.hpp at line 8, boost/units/systems/si/acceleration.hpp at line 8, boost/units/systems/si/action.hpp at line 8, boost/units/systems/si/activity.hpp at line 8, boost/units/systems/si/amount.hpp at line 8, boost/units/systems/si/angular_acceleration.hpp at line 8, boost/units/systems/si/angular_momentum.hpp at line 8, boost/units/systems/si/angular_velocity.hpp at line 8, boost/units/systems/si/area.hpp at line 8, boost/units/systems/si/base.hpp at line 8, boost/units/systems/si/capacitance.hpp at line 8, boost/units/systems/si/catalytic_activity.hpp at line 8, boost/units/systems/si/codata/alpha_constants.hpp at line 8, boost/units/systems/si/codata/atomic-nuclear_constants.hpp at line 8, boost/units/systems/si/codata/deuteron_constants.hpp at line 8, boost/units/systems/si/codata/electromagnetic_constants.hpp at line 8, boost/units/systems/si/codata/electron_constants.hpp at line 8, boost/units/systems/si/codata/helion_constants.hpp at line 8, boost/units/systems/si/codata/muon_constants.hpp at line 8, boost/units/systems/si/codata/neutron_constants.hpp at line 8, boost/units/systems/si/codata/physico-chemical_constants.hpp at line 8, boost/units/systems/si/codata/proton_constants.hpp at line 8, boost/units/systems/si/codata/tau_constants.hpp at line 8, boost/units/systems/si/codata/triton_constants.hpp at line 8, boost/units/systems/si/codata/typedefs.hpp at line 8, boost/units/systems/si/codata/universal_constants.hpp at line 8, boost/units/systems/si/codata_constants.hpp at line 8, boost/units/systems/si/conductance.hpp at line 8, boost/units/systems/si/conductivity.hpp at line 8, boost/units/systems/si/current.hpp at line 8, boost/units/systems/si/dimensionless.hpp at line 8, boost/units/systems/si/dose_equivalent.hpp at line 8, boost/units/systems/si/dynamic_viscosity.hpp at line 8, boost/units/systems/si/electric_charge.hpp at line 8, boost/units/systems/si/electric_potential.hpp at line 8, boost/units/systems/si/energy.hpp at line 8, boost/units/systems/si/force.hpp at line 8, boost/units/systems/si/frequency.hpp at line 8, boost/units/systems/si/illuminance.hpp at line 8, boost/units/systems/si/impedance.hpp at line 8, boost/units/systems/si/inductance.hpp at line 8, boost/units/systems/si/io.hpp at line 8, boost/units/systems/si/kinematic_viscosity.hpp at line 8, boost/units/systems/si/length.hpp at line 8, boost/units/systems/si/luminous_flux.hpp at line 8, boost/units/systems/si/luminous_intensity.hpp at line 8, boost/units/systems/si/magnetic_field_intensity.hpp at line 8, boost/units/systems/si/magnetic_flux.hpp at line 8, boost/units/systems/si/magnetic_flux_density.hpp at line 8, boost/units/systems/si/mass.hpp at line 8, boost/units/systems/si/mass_density.hpp at line 8, boost/units/systems/si/moment_of_inertia.hpp at line 8, boost/units/systems/si/momentum.hpp at line 8, boost/units/systems/si/permeability.hpp at line 8, boost/units/systems/si/permittivity.hpp at line 8, boost/units/systems/si/plane_angle.hpp at line 8, boost/units/systems/si/power.hpp at line 8, boost/units/systems/si/prefixes.hpp at line 8, boost/units/systems/si/pressure.hpp at line 8, boost/units/systems/si/reluctance.hpp at line 8, boost/units/systems/si/resistance.hpp at line 8, boost/units/systems/si/resistivity.hpp at line 8, boost/units/systems/si/solid_angle.hpp at line 8, boost/units/systems/si/surface_density.hpp at line 8, boost/units/systems/si/surface_tension.hpp at line 8, boost/units/systems/si/temperature.hpp at line 8, boost/units/systems/si/time.hpp at line 8, boost/units/systems/si/torque.hpp at line 8, boost/units/systems/si/velocity.hpp at line 8, boost/units/systems/si/volume.hpp at line 8, boost/units/systems/si/wavenumber.hpp at line 8, boost/units/systems/temperature/celsius.hpp at line 8, boost/units/systems/temperature/fahrenheit.hpp at line 8, boost/units/unit.hpp at line 8, boost/units/units_fwd.hpp at line 8, boost/utility/value_init.hpp at line 4, boost/uuid/detail/md5.hpp at line 23, boost/uuid/detail/sha1.hpp at line 5, boost/uuid/nil_generator.hpp at line 5, boost/uuid/random_generator.hpp at line 6, boost/uuid/string_generator.hpp at line 5, boost/uuid/uuid.hpp at line 5, boost/uuid/uuid_generators.hpp at line 5, boost/uuid/uuid_io.hpp at line 5, boost/uuid/uuid_serialize.hpp at line 5, boost/variant.hpp at line 10, boost/variant/apply_visitor.hpp at line 10, boost/variant/bad_visit.hpp at line 10, boost/variant/detail/apply_visitor_binary.hpp at line 10, boost/variant/detail/apply_visitor_delayed.hpp at line 10, boost/variant/detail/apply_visitor_unary.hpp at line 10, boost/variant/detail/backup_holder.hpp at line 10, boost/variant/detail/cast_storage.hpp at line 10, boost/variant/detail/config.hpp at line 10, boost/variant/detail/element_index.hpp at line 9, boost/variant/detail/enable_recursive.hpp at line 10, boost/variant/detail/enable_recursive_fwd.hpp at line 10, boost/variant/detail/forced_return.hpp at line 10, boost/variant/detail/generic_result_type.hpp at line 10, boost/variant/detail/has_result_type.hpp at line 9, boost/variant/detail/hash_variant.hpp at line 10, boost/variant/detail/initializer.hpp at line 10, boost/variant/detail/make_variant_list.hpp at line 10, boost/variant/detail/over_sequence.hpp at line 12, boost/variant/detail/substitute.hpp at line 15, boost/variant/detail/substitute_fwd.hpp at line 10, boost/variant/detail/variant_io.hpp at line 10, boost/variant/detail/visitation_impl.hpp at line 10, boost/variant/get.hpp at line 10, boost/variant/polymorphic_get.hpp at line 9, boost/variant/recursive_variant.hpp at line 10, boost/variant/recursive_wrapper.hpp at line 10, boost/variant/recursive_wrapper_fwd.hpp at line 12, boost/variant/static_visitor.hpp at line 10, boost/variant/variant.hpp at line 10, boost/variant/variant_fwd.hpp at line 10, boost/variant/visitor_ptr.hpp at line 10, libs/python/src/converter/arg_to_python_base.cpp at line 3, libs/python/src/converter/builtin_converters.cpp at line 3, libs/python/src/converter/from_python.cpp at line 3, libs/python/src/converter/registry.cpp at line 3, libs/python/src/converter/type_id.cpp at line 3, libs/python/src/errors.cpp at line 3, libs/python/src/exec.cpp at line 3, libs/python/src/import.cpp at line 3, libs/python/src/list.cpp at line 3, libs/python/src/long.cpp at line 3, libs/python/src/module.cpp at line 3, libs/python/src/object/class.cpp at line 3, libs/python/src/object/enum.cpp at line 3, libs/python/src/object/function.cpp at line 3, libs/python/src/object/function_doc_signature.cpp at line 3, libs/python/src/object/inheritance.cpp at line 3, libs/python/src/object/iterator.cpp at line 3, libs/python/src/object/life_support.cpp at line 3, libs/python/src/object/stl_iterator.cpp at line 3, libs/python/src/object_operators.cpp at line 3, libs/python/src/object_protocol.cpp at line 3, libs/python/src/tuple.cpp at line 3, libs/thread/src/win32/thread.cpp at line 2
+ License text:
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/aligned_storage.hpp [9:11]
+ boost/any.hpp [333:335]
+ boost/archive/detail/utf8_codecvt_facet.hpp [3:5]
+ boost/archive/impl/xml_oarchive_impl.ipp [5:7]
+ boost/archive/impl/xml_woarchive_impl.ipp [5:7]
+ boost/bind/apply.hpp [9:11]
+ boost/bind/arg.hpp [15:17]
+ boost/bind/bind.hpp [17:19]
+ boost/bind/bind_cc.hpp [8:10]
+ boost/bind/bind_mf_cc.hpp [8:10]
+ boost/bind/bind_template.hpp [8:10]
+ boost/bind/make_adaptable.hpp [9:11]
+ boost/bind/mem_fn.hpp [17:19]
+ boost/bind/mem_fn_cc.hpp [8:10]
+ boost/bind/mem_fn_template.hpp [8:10]
+ boost/bind/protect.hpp [10:12]
+ boost/blank.hpp [9:11]
+ boost/blank_fwd.hpp [9:11]
+ boost/concept_archetype.hpp [3:5]
+ boost/concept_check.hpp [5:7]
+ boost/config/detail/suffix.hpp [13:15]
+ boost/config/workaround.hpp [2:4]
+ boost/core/ref.hpp [25:27]
+ boost/core/swap.hpp [3:5]
+ boost/detail/basic_pointerbuf.hpp [9:11]
+ boost/detail/indirect_traits.hpp [2:4]
+ boost/detail/iterator.hpp [2:4]
+ boost/detail/named_template_params.hpp [2:4]
+ boost/detail/numeric_traits.hpp [3:5]
+ boost/detail/reference_content.hpp [9:11]
+ boost/detail/templated_streams.hpp [9:11]
+ boost/detail/workaround.hpp [2:4]
+ boost/foreach.hpp [5:7]
+ boost/foreach_fwd.hpp [5:7]
+ boost/function_output_iterator.hpp [2:4]
+ boost/generator_iterator.hpp [2:4]
+ boost/get_pointer.hpp [2:4]
+ boost/graph/adj_list_serialize.hpp [5:7]
+ boost/graph/adjacency_iterator.hpp [5:7]
+ boost/graph/adjacency_list.hpp [6:8]
+ boost/graph/adjacency_list_io.hpp [5:7]
+ boost/graph/adjacency_matrix.hpp [6:8]
+ boost/graph/astar_search.hpp [7:9]
+ boost/graph/bandwidth.hpp [3:5]
+ boost/graph/bellman_ford_shortest_paths.hpp [6:8]
+ boost/graph/biconnected_components.hpp [4:6]
+ boost/graph/boyer_myrvold_planar_test.hpp [4:6]
+ boost/graph/breadth_first_search.hpp [6:8]
+ boost/graph/chrobak_payne_drawing.hpp [4:6]
+ boost/graph/connected_components.hpp [6:8]
+ boost/graph/copy.hpp [6:8]
+ boost/graph/core_numbers.hpp [6:8]
+ boost/graph/create_condensation_graph.hpp [5:7]
+ boost/graph/cuthill_mckee_ordering.hpp [7:9]
+ boost/graph/cycle_canceling.hpp [5:7]
+ boost/graph/dag_shortest_paths.hpp [5:7]
+ boost/graph/depth_first_search.hpp [6:8]
+ boost/graph/detail/adj_list_edge_iterator.hpp [6:8]
+ boost/graph/detail/adjacency_list.hpp [7:9]
+ boost/graph/detail/array_binary_tree.hpp [6:8]
+ boost/graph/detail/augment.hpp [5:7]
+ boost/graph/detail/connected_components.hpp [5:7]
+ boost/graph/detail/d_ary_heap.hpp [6:8]
+ boost/graph/detail/edge.hpp [6:8]
+ boost/graph/detail/incidence_iterator.hpp [6:8]
+ boost/graph/detail/incremental_components.hpp [6:8]
+ boost/graph/detail/list_base.hpp [5:7]
+ boost/graph/detail/permutation.hpp [2:4]
+ boost/graph/detail/self_avoiding_walk.hpp [5:7]
+ boost/graph/detail/set_adaptor.hpp [2:4]
+ boost/graph/detail/shadow_iterator.hpp [2:4]
+ boost/graph/detail/sparse_ordering.hpp [7:9]
+ boost/graph/dijkstra_shortest_paths.hpp [5:7]
+ boost/graph/dijkstra_shortest_paths_no_color_map.hpp [6:8]
+ boost/graph/dll_import_export.hpp [6:8]
+ boost/graph/edge_coloring.hpp [5:7]
+ boost/graph/edge_connectivity.hpp [5:7]
+ boost/graph/edge_list.hpp [5:7]
+ boost/graph/edmonds_karp_max_flow.hpp [5:7]
+ boost/graph/exception.hpp [5:7]
+ boost/graph/filtered_graph.hpp [5:7]
+ boost/graph/find_flow_cost.hpp [5:7]
+ boost/graph/graph_archetypes.hpp [5:7]
+ boost/graph/graph_as_tree.hpp [6:8]
+ boost/graph/graph_concepts.hpp [8:10]
+ boost/graph/graph_selectors.hpp [5:7]
+ boost/graph/graph_test.hpp [5:7]
+ boost/graph/graph_traits.hpp [5:7]
+ boost/graph/graph_utility.hpp [6:8]
+ boost/graph/graphviz.hpp [6:8]
+ boost/graph/grid_graph.hpp [5:7]
+ boost/graph/incremental_components.hpp [7:9]
+ boost/graph/is_kuratowski_subgraph.hpp [4:6]
+ boost/graph/is_straight_line_drawing.hpp [4:6]
+ boost/graph/isomorphism.hpp [3:5]
+ boost/graph/iteration_macros.hpp [5:7]
+ boost/graph/iteration_macros_undef.hpp [5:7]
+ boost/graph/johnson_all_pairs_shortest.hpp [5:7]
+ boost/graph/king_ordering.hpp [7:9]
+ boost/graph/kruskal_min_spanning_tree.hpp [6:8]
+ boost/graph/leda_graph.hpp [8:10]
+ boost/graph/lookup_edge.hpp [5:7]
+ boost/graph/make_biconnected_planar.hpp [4:6]
+ boost/graph/make_connected.hpp [4:6]
+ boost/graph/make_maximal_planar.hpp [4:6]
+ boost/graph/matrix_as_graph.hpp [6:8]
+ boost/graph/maximum_adjacency_search.hpp [6:8]
+ boost/graph/mcgregor_common_subgraphs.hpp [5:7]
+ boost/graph/metric_tsp_approx.hpp [6:8]
+ boost/graph/minimum_degree_ordering.hpp [6:8]
+ boost/graph/named_function_params.hpp [5:7]
+ boost/graph/neighbor_bfs.hpp [6:8]
+ boost/graph/planar_canonical_ordering.hpp [4:6]
+ boost/graph/planar_detail/add_edge_visitors.hpp [4:6]
+ boost/graph/planar_detail/boyer_myrvold_impl.hpp [4:6]
+ boost/graph/planar_detail/bucket_sort.hpp [4:6]
+ boost/graph/planar_detail/face_handles.hpp [4:6]
+ boost/graph/planar_detail/face_iterators.hpp [4:6]
+ boost/graph/planar_face_traversal.hpp [4:6]
+ boost/graph/prim_minimum_spanning_tree.hpp [5:7]
+ boost/graph/profile.hpp [6:8]
+ boost/graph/properties.hpp [5:7]
+ boost/graph/property_iter_range.hpp [4:6]
+ boost/graph/push_relabel_max_flow.hpp [5:7]
+ boost/graph/random.hpp [6:8]
+ boost/graph/read_dimacs.hpp [5:7]
+ boost/graph/relax.hpp [5:7]
+ boost/graph/reverse_graph.hpp [2:4]
+ boost/graph/sequential_vertex_coloring.hpp [6:8]
+ boost/graph/simple_point.hpp [5:7]
+ boost/graph/sloan_ordering.hpp [6:8]
+ boost/graph/smallest_last_ordering.hpp [5:7]
+ boost/graph/stanford_graph.hpp [5:7]
+ boost/graph/strong_components.hpp [6:8]
+ boost/graph/subgraph.hpp [5:7]
+ boost/graph/successive_shortest_path_nonnegative_weights.hpp [5:7]
+ boost/graph/topological_sort.hpp [6:8]
+ boost/graph/transitive_closure.hpp [3:5]
+ boost/graph/transpose_graph.hpp [6:8]
+ boost/graph/tree_traits.hpp [2:4]
+ boost/graph/undirected_dfs.hpp [6:8]
+ boost/graph/vector_as_graph.hpp [7:9]
+ boost/graph/vf2_sub_graph_iso.hpp [9:11]
+ boost/graph/visitors.hpp [5:7]
+ boost/graph/wavefront.hpp [6:8]
+ boost/heap/binomial_heap.hpp [5:7]
+ boost/heap/d_ary_heap.hpp [5:7]
+ boost/heap/detail/heap_comparison.hpp [5:7]
+ boost/heap/detail/heap_node.hpp [5:7]
+ boost/heap/detail/ilog2.hpp [5:7]
+ boost/heap/detail/mutable_heap.hpp [5:7]
+ boost/heap/detail/ordered_adaptor_iterator.hpp [5:7]
+ boost/heap/detail/stable_heap.hpp [5:7]
+ boost/heap/detail/tree_iterator.hpp [5:7]
+ boost/heap/fibonacci_heap.hpp [5:7]
+ boost/heap/heap_concepts.hpp [5:7]
+ boost/heap/heap_merge.hpp [5:7]
+ boost/heap/pairing_heap.hpp [5:7]
+ boost/heap/policies.hpp [5:7]
+ boost/heap/priority_queue.hpp [5:7]
+ boost/heap/skew_heap.hpp [5:7]
+ boost/implicit_cast.hpp [2:4]
+ boost/interprocess/detail/atomic.hpp [7:9]
+ boost/interprocess/smart_ptr/detail/sp_counted_base_atomic.hpp [16:18]
+ boost/interprocess/smart_ptr/detail/sp_counted_impl.hpp [20:22]
+ boost/iterator/counting_iterator.hpp [2:4]
+ boost/iterator/detail/config_def.hpp [4:6]
+ boost/iterator/detail/config_undef.hpp [2:4]
+ boost/iterator/detail/enable_if.hpp [4:6]
+ boost/iterator/filter_iterator.hpp [4:6]
+ boost/iterator/function_input_iterator.hpp [4:6]
+ boost/iterator/function_output_iterator.hpp [2:4]
+ boost/iterator/indirect_iterator.hpp [4:6]
+ boost/iterator/interoperable.hpp [4:6]
+ boost/iterator/iterator_adaptor.hpp [4:6]
+ boost/iterator/iterator_archetypes.hpp [2:4]
+ boost/iterator/iterator_categories.hpp [2:4]
+ boost/iterator/iterator_concepts.hpp [2:4]
+ boost/iterator/iterator_facade.hpp [4:6]
+ boost/iterator/iterator_traits.hpp [2:4]
+ boost/iterator/permutation_iterator.hpp [4:6]
+ boost/iterator/reverse_iterator.hpp [4:6]
+ boost/iterator/transform_iterator.hpp [4:6]
+ boost/iterator/zip_iterator.hpp [4:6]
+ boost/lambda/algorithm.hpp [5:7]
+ boost/lambda/bind.hpp [6:8]
+ boost/lambda/casts.hpp [6:8]
+ boost/lambda/construct.hpp [6:8]
+ boost/lambda/control_structures.hpp [4:6]
+ boost/lambda/core.hpp [6:8]
+ boost/lambda/detail/actions.hpp [5:7]
+ boost/lambda/detail/arity_code.hpp [5:7]
+ boost/lambda/detail/bind_functions.hpp [5:7]
+ boost/lambda/detail/control_constructs_common.hpp [6:8]
+ boost/lambda/detail/function_adaptors.hpp [5:7]
+ boost/lambda/detail/is_instance_of.hpp [5:7]
+ boost/lambda/detail/lambda_config.hpp [5:7]
+ boost/lambda/detail/lambda_functor_base.hpp [5:7]
+ boost/lambda/detail/lambda_functors.hpp [5:7]
+ boost/lambda/detail/lambda_fwd.hpp [5:7]
+ boost/lambda/detail/lambda_traits.hpp [5:7]
+ boost/lambda/detail/member_ptr.hpp [6:8]
+ boost/lambda/detail/operator_actions.hpp [5:7]
+ boost/lambda/detail/operator_lambda_func_base.hpp [5:7]
+ boost/lambda/detail/operator_return_type_traits.hpp [5:7]
+ boost/lambda/detail/operators.hpp [5:7]
+ boost/lambda/detail/ret.hpp [5:7]
+ boost/lambda/detail/return_type_traits.hpp [5:7]
+ boost/lambda/detail/select_functions.hpp [5:7]
+ boost/lambda/detail/suppress_unused.hpp [5:7]
+ boost/lambda/exceptions.hpp [6:8]
+ boost/lambda/if.hpp [7:9]
+ boost/lambda/lambda.hpp [4:6]
+ boost/lambda/loops.hpp [7:9]
+ boost/lambda/numeric.hpp [5:7]
+ boost/lambda/switch.hpp [6:8]
+ boost/lexical_cast.hpp [5:7]
+ boost/lexical_cast/bad_lexical_cast.hpp [5:7]
+ boost/lexical_cast/detail/converter_lexical.hpp [5:7]
+ boost/lexical_cast/detail/converter_lexical_streams.hpp [5:7]
+ boost/lexical_cast/detail/converter_numeric.hpp [5:7]
+ boost/lexical_cast/detail/inf_nan.hpp [5:7]
+ boost/lexical_cast/detail/is_character.hpp [5:7]
+ boost/lexical_cast/detail/lcast_char_constants.hpp [5:7]
+ boost/lexical_cast/detail/lcast_unsigned_converters.hpp [5:7]
+ boost/lexical_cast/detail/widest_char.hpp [5:7]
+ boost/lexical_cast/lexical_cast_old.hpp [5:7]
+ boost/lexical_cast/try_lexical_convert.hpp [5:7]
+ boost/lockfree/detail/parameter.hpp [5:7]
+ boost/lockfree/policies.hpp [5:7]
+ boost/pending/bucket_sorter.hpp [6:8]
+ boost/pending/disjoint_sets.hpp [6:8]
+ boost/pending/fibonacci_heap.hpp [2:4]
+ boost/pending/indirect_cmp.hpp [6:8]
+ boost/pending/is_heap.hpp [6:8]
+ boost/pending/iterator_adaptors.hpp [2:4]
+ boost/pending/iterator_tests.hpp [2:4]
+ boost/pending/mutable_heap.hpp [6:8]
+ boost/pending/mutable_queue.hpp [6:8]
+ boost/program_options.hpp [2:4]
+ boost/property_map/compose_property_map.hpp [4:6]
+ boost/property_map/function_property_map.hpp [7:9]
+ boost/property_map/parallel/parallel_property_maps.hpp [5:7]
+ boost/property_map/parallel/vector_property_map.hpp [2:4]
+ boost/property_map/property_map.hpp [5:7]
+ boost/property_map/property_map_iterator.hpp [2:4]
+ boost/property_map/shared_array_property_map.hpp [4:6]
+ boost/property_map/transform_value_property_map.hpp [7:9]
+ boost/property_map/vector_property_map.hpp [2:4]
+ boost/ptr_container/detail/serialize_ptr_map_adapter.hpp [2:4]
+ boost/ptr_container/detail/serialize_reversible_cont.hpp [2:4]
+ boost/ptr_container/serialize_ptr_array.hpp [2:4]
+ boost/ptr_container/serialize_ptr_container.hpp [2:4]
+ boost/ptr_container/serialize_ptr_deque.hpp [2:4]
+ boost/ptr_container/serialize_ptr_list.hpp [2:4]
+ boost/ptr_container/serialize_ptr_map.hpp [2:4]
+ boost/ptr_container/serialize_ptr_set.hpp [2:4]
+ boost/ptr_container/serialize_ptr_vector.hpp [2:4]
+ boost/python.hpp [2:4]
+ boost/python/arg_from_python.hpp [2:4]
+ boost/python/args.hpp [2:4]
+ boost/python/args_fwd.hpp [2:4]
+ boost/python/back_reference.hpp [2:4]
+ boost/python/base_type_traits.hpp [2:4]
+ boost/python/bases.hpp [2:4]
+ boost/python/borrowed.hpp [2:4]
+ boost/python/call.hpp [4:6]
+ boost/python/call_method.hpp [4:6]
+ boost/python/cast.hpp [2:4]
+ boost/python/class.hpp [2:4]
+ boost/python/class_fwd.hpp [2:4]
+ boost/python/converter/arg_from_python.hpp [2:4]
+ boost/python/converter/arg_to_python.hpp [2:4]
+ boost/python/converter/arg_to_python_base.hpp [2:4]
+ boost/python/converter/as_to_python_function.hpp [2:4]
+ boost/python/converter/builtin_converters.hpp [2:4]
+ boost/python/converter/constructor_function.hpp [2:4]
+ boost/python/converter/context_result_converter.hpp [2:4]
+ boost/python/converter/convertible_function.hpp [2:4]
+ boost/python/converter/from_python.hpp [2:4]
+ boost/python/converter/implicit.hpp [2:4]
+ boost/python/converter/obj_mgr_arg_from_python.hpp [2:4]
+ boost/python/converter/object_manager.hpp [2:4]
+ boost/python/converter/pointer_type_id.hpp [2:4]
+ boost/python/converter/pyobject_traits.hpp [2:4]
+ boost/python/converter/pyobject_type.hpp [2:4]
+ boost/python/converter/pytype_function.hpp [2:4]
+ boost/python/converter/pytype_object_mgr_traits.hpp [2:4]
+ boost/python/converter/registered.hpp [3:5]
+ boost/python/converter/registered_pointee.hpp [2:4]
+ boost/python/converter/registrations.hpp [2:4]
+ boost/python/converter/registry.hpp [2:4]
+ boost/python/converter/return_from_python.hpp [2:4]
+ boost/python/converter/rvalue_from_python_data.hpp [2:4]
+ boost/python/converter/shared_ptr_deleter.hpp [2:4]
+ boost/python/converter/shared_ptr_from_python.hpp [3:5]
+ boost/python/converter/shared_ptr_to_python.hpp [3:5]
+ boost/python/converter/to_python_function_type.hpp [2:4]
+ boost/python/copy_const_reference.hpp [2:4]
+ boost/python/copy_non_const_reference.hpp [2:4]
+ boost/python/data_members.hpp [2:4]
+ boost/python/def.hpp [2:4]
+ boost/python/def_visitor.hpp [2:4]
+ boost/python/default_call_policies.hpp [2:4]
+ boost/python/detail/aix_init_module.hpp [2:4]
+ boost/python/detail/api_placeholder.hpp [2:4]
+ boost/python/detail/borrowed_ptr.hpp [4:6]
+ boost/python/detail/caller.hpp [4:6]
+ boost/python/detail/config.hpp [2:4]
+ boost/python/detail/construct.hpp [2:4]
+ boost/python/detail/convertible.hpp [2:4]
+ boost/python/detail/copy_ctor_mutates_rhs.hpp [2:4]
+ boost/python/detail/cv_category.hpp [2:4]
+ boost/python/detail/dealloc.hpp [2:4]
+ boost/python/detail/decorated_type_id.hpp [2:4]
+ boost/python/detail/decref_guard.hpp [2:4]
+ boost/python/detail/def_helper.hpp [2:4]
+ boost/python/detail/def_helper_fwd.hpp [2:4]
+ boost/python/detail/defaults_def.hpp [4:6]
+ boost/python/detail/defaults_gen.hpp [4:6]
+ boost/python/detail/dependent.hpp [2:4]
+ boost/python/detail/destroy.hpp [2:4]
+ boost/python/detail/exception_handler.hpp [2:4]
+ boost/python/detail/force_instantiate.hpp [2:4]
+ boost/python/detail/if_else.hpp [2:4]
+ boost/python/detail/invoke.hpp [4:6]
+ boost/python/detail/is_auto_ptr.hpp [2:4]
+ boost/python/detail/is_shared_ptr.hpp [3:5]
+ boost/python/detail/is_xxx.hpp [2:4]
+ boost/python/detail/make_keyword_range_fn.hpp [2:4]
+ boost/python/detail/map_entry.hpp [2:4]
+ boost/python/detail/mpl_lambda.hpp [2:4]
+ boost/python/detail/msvc_typeinfo.hpp [2:4]
+ boost/python/detail/none.hpp [2:4]
+ boost/python/detail/not_specified.hpp [2:4]
+ boost/python/detail/nullary_function_adaptor.hpp [2:4]
+ boost/python/detail/operator_id.hpp [2:4]
+ boost/python/detail/overloads_fwd.hpp [2:4]
+ boost/python/detail/pointee.hpp [2:4]
+ boost/python/detail/prefix.hpp [2:4]
+ boost/python/detail/preprocessor.hpp [2:4]
+ boost/python/detail/python_type.hpp [2:4]
+ boost/python/detail/raw_pyobject.hpp [2:4]
+ boost/python/detail/referent_storage.hpp [2:4]
+ boost/python/detail/result.hpp [4:6]
+ boost/python/detail/scope.hpp [2:4]
+ boost/python/detail/signature.hpp [4:6]
+ boost/python/detail/string_literal.hpp [2:4]
+ boost/python/detail/target.hpp [4:6]
+ boost/python/detail/translate_exception.hpp [2:4]
+ boost/python/detail/type_list.hpp [2:4]
+ boost/python/detail/type_list_impl.hpp [3:5]
+ boost/python/detail/type_traits.hpp [2:4]
+ boost/python/detail/unwind_type.hpp [2:4]
+ boost/python/detail/value_is_shared_ptr.hpp [3:5]
+ boost/python/detail/value_is_xxx.hpp [2:4]
+ boost/python/detail/void_ptr.hpp [2:4]
+ boost/python/detail/void_return.hpp [2:4]
+ boost/python/detail/wrap_python.hpp [2:4]
+ boost/python/dict.hpp [2:4]
+ boost/python/docstring_options.hpp [2:4]
+ boost/python/enum.hpp [2:4]
+ boost/python/errors.hpp [2:4]
+ boost/python/exception_translator.hpp [2:4]
+ boost/python/exec.hpp [2:4]
+ boost/python/extract.hpp [2:4]
+ boost/python/handle.hpp [2:4]
+ boost/python/handle_fwd.hpp [2:4]
+ boost/python/has_back_reference.hpp [2:4]
+ boost/python/implicit.hpp [2:4]
+ boost/python/import.hpp [2:4]
+ boost/python/init.hpp [4:6]
+ boost/python/instance_holder.hpp [2:4]
+ boost/python/iterator.hpp [2:4]
+ boost/python/list.hpp [2:4]
+ boost/python/long.hpp [2:4]
+ boost/python/lvalue_from_pytype.hpp [2:4]
+ boost/python/make_constructor.hpp [2:4]
+ boost/python/make_function.hpp [2:4]
+ boost/python/manage_new_object.hpp [2:4]
+ boost/python/module.hpp [2:4]
+ boost/python/module_init.hpp [2:4]
+ boost/python/numpy/config.hpp [2:4]
+ boost/python/object.hpp [2:4]
+ boost/python/object/add_to_namespace.hpp [2:4]
+ boost/python/object/class.hpp [2:4]
+ boost/python/object/class_detail.hpp [2:4]
+ boost/python/object/class_wrapper.hpp [2:4]
+ boost/python/object/enum_base.hpp [2:4]
+ boost/python/object/find_instance.hpp [2:4]
+ boost/python/object/forward.hpp [2:4]
+ boost/python/object/function.hpp [2:4]
+ boost/python/object/function_doc_signature.hpp [2:4]
+ boost/python/object/function_handle.hpp [2:4]
+ boost/python/object/function_object.hpp [2:4]
+ boost/python/object/inheritance.hpp [2:4]
+ boost/python/object/inheritance_query.hpp [2:4]
+ boost/python/object/instance.hpp [2:4]
+ boost/python/object/iterator.hpp [2:4]
+ boost/python/object/iterator_core.hpp [2:4]
+ boost/python/object/life_support.hpp [2:4]
+ boost/python/object/make_holder.hpp [4:6]
+ boost/python/object/make_instance.hpp [2:4]
+ boost/python/object/make_ptr_instance.hpp [2:4]
+ boost/python/object/pointer_holder.hpp [4:6]
+ boost/python/object/py_function.hpp [2:4]
+ boost/python/object/stl_iterator_core.hpp [2:4]
+ boost/python/object/value_holder.hpp [4:6]
+ boost/python/object/value_holder_fwd.hpp [2:4]
+ boost/python/object_attributes.hpp [2:4]
+ boost/python/object_core.hpp [2:4]
+ boost/python/object_fwd.hpp [2:4]
+ boost/python/object_items.hpp [2:4]
+ boost/python/object_operators.hpp [2:4]
+ boost/python/object_protocol.hpp [2:4]
+ boost/python/object_protocol_core.hpp [2:4]
+ boost/python/object_slices.hpp [2:4]
+ boost/python/opaque_pointer_converter.hpp [2:4]
+ boost/python/operators.hpp [2:4]
+ boost/python/other.hpp [6:8]
+ boost/python/overloads.hpp [2:4]
+ boost/python/pointee.hpp [2:4]
+ boost/python/proxy.hpp [2:4]
+ boost/python/ptr.hpp [6:8]
+ boost/python/pure_virtual.hpp [2:4]
+ boost/python/raw_function.hpp [2:4]
+ boost/python/refcount.hpp [2:4]
+ boost/python/reference_existing_object.hpp [2:4]
+ boost/python/register_ptr_to_python.hpp [2:4]
+ boost/python/return_arg.hpp [2:4]
+ boost/python/return_by_value.hpp [2:4]
+ boost/python/return_internal_reference.hpp [2:4]
+ boost/python/return_opaque_pointer.hpp [2:4]
+ boost/python/return_value_policy.hpp [2:4]
+ boost/python/scope.hpp [2:4]
+ boost/python/self.hpp [2:4]
+ boost/python/signature.hpp [4:6]
+ boost/python/slice_nil.hpp [2:4]
+ boost/python/ssize_t.hpp [2:4]
+ boost/python/stl_iterator.hpp [2:4]
+ boost/python/str.hpp [2:4]
+ boost/python/tag.hpp [2:4]
+ boost/python/to_python_converter.hpp [2:4]
+ boost/python/to_python_indirect.hpp [2:4]
+ boost/python/to_python_value.hpp [3:5]
+ boost/python/tuple.hpp [2:4]
+ boost/python/type_id.hpp [2:4]
+ boost/python/with_custodian_and_ward.hpp [2:4]
+ boost/range/algorithm.hpp [9:11]
+ boost/range/numeric.hpp [2:4]
+ boost/range/numeric.hpp [7:9]
+ boost/range/numeric.hpp [12:14]
+ boost/serialization/detail/shared_count_132.hpp [15:17]
+ boost/serialization/throw_exception.hpp [14:16]
+ boost/signals2/detail/auto_buffer.hpp [2:4]
+ boost/signals2/detail/lwm_nop.hpp [7:9]
+ boost/signals2/detail/lwm_pthreads.hpp [7:9]
+ boost/signals2/detail/lwm_win32_cs.hpp [8:10]
+ boost/signals2/mutex.hpp [7:9]
+ boost/smart_ptr/bad_weak_ptr.hpp [15:17]
+ boost/smart_ptr/detail/atomic_count_pt.hpp [9:11]
+ boost/smart_ptr/detail/atomic_count_solaris.hpp [11:13]
+ boost/smart_ptr/detail/atomic_count_win32.hpp [15:17]
+ boost/smart_ptr/detail/lightweight_mutex.hpp [15:17]
+ boost/smart_ptr/detail/lwm_nop.hpp [15:17]
+ boost/smart_ptr/detail/lwm_pthreads.hpp [15:17]
+ boost/smart_ptr/detail/lwm_win32_cs.hpp [16:18]
+ boost/smart_ptr/detail/quick_allocator.hpp [16:18]
+ boost/smart_ptr/detail/shared_count.hpp [16:18]
+ boost/smart_ptr/detail/sp_counted_base.hpp [15:17]
+ boost/smart_ptr/detail/sp_counted_base_nt.hpp [16:18]
+ boost/smart_ptr/detail/sp_counted_base_pt.hpp [16:18]
+ boost/smart_ptr/detail/sp_counted_impl.hpp [16:18]
+ boost/stacktrace.hpp [3:5]
+ boost/stacktrace/detail/addr2line_impls.hpp [3:5]
+ boost/stacktrace/detail/collect_msvc.ipp [3:5]
+ boost/stacktrace/detail/collect_noop.ipp [3:5]
+ boost/stacktrace/detail/collect_unwind.ipp [3:5]
+ boost/stacktrace/detail/frame_decl.hpp [3:5]
+ boost/stacktrace/detail/frame_msvc.ipp [3:5]
+ boost/stacktrace/detail/frame_noop.ipp [3:5]
+ boost/stacktrace/detail/frame_unwind.ipp [3:5]
+ boost/stacktrace/detail/libbacktrace_impls.hpp [3:5]
+ boost/stacktrace/detail/location_from_symbol.hpp [3:5]
+ boost/stacktrace/detail/pop_options.h [3:5]
+ boost/stacktrace/detail/push_options.h [3:5]
+ boost/stacktrace/detail/safe_dump_noop.ipp [3:5]
+ boost/stacktrace/detail/safe_dump_posix.ipp [3:5]
+ boost/stacktrace/detail/safe_dump_win.ipp [3:5]
+ boost/stacktrace/detail/to_hex_array.hpp [3:5]
+ boost/stacktrace/detail/unwind_base_impls.hpp [3:5]
+ boost/stacktrace/frame.hpp [3:5]
+ boost/stacktrace/safe_dump_to.hpp [3:5]
+ boost/stacktrace/stacktrace.hpp [3:5]
+ boost/stacktrace/stacktrace_fwd.hpp [3:5]
+ boost/thread/caller_context.hpp [2:4]
+ boost/thread/completion_latch.hpp [1:3]
+ boost/thread/detail/counter.hpp [1:3]
+ boost/thread/detail/force_cast.hpp [4:6]
+ boost/thread/detail/lockable_wrapper.hpp [1:3]
+ boost/thread/detail/move.hpp [1:3]
+ boost/thread/detail/platform.hpp [3:5]
+ boost/thread/detail/singleton.hpp [4:6]
+ boost/thread/detail/thread.hpp [3:5]
+ boost/thread/detail/thread_group.hpp [3:5]
+ boost/thread/detail/thread_interruption.hpp [3:5]
+ boost/thread/exceptional_ptr.hpp [1:3]
+ boost/thread/externally_locked.hpp [2:4]
+ boost/thread/externally_locked_stream.hpp [2:4]
+ boost/thread/is_locked_by_this_thread.hpp [2:4]
+ boost/thread/latch.hpp [1:3]
+ boost/thread/lock_algorithms.hpp [1:3]
+ boost/thread/lock_factories.hpp [1:3]
+ boost/thread/lock_guard.hpp [1:3]
+ boost/thread/lock_options.hpp [1:3]
+ boost/thread/lock_traits.hpp [1:3]
+ boost/thread/lock_types.hpp [1:3]
+ boost/thread/lockable_traits.hpp [1:3]
+ boost/thread/locks.hpp [1:3]
+ boost/thread/ostream_buffer.hpp [2:4]
+ boost/thread/pthread/condition_variable.hpp [3:5]
+ boost/thread/pthread/condition_variable_fwd.hpp [3:5]
+ boost/thread/pthread/mutex.hpp [5:7]
+ boost/thread/pthread/recursive_mutex.hpp [5:7]
+ boost/thread/pthread/thread_data.hpp [3:5]
+ boost/thread/pthread/thread_heap_alloc.hpp [1:3]
+ boost/thread/reverse_lock.hpp [1:3]
+ boost/thread/scoped_thread.hpp [1:3]
+ boost/thread/shared_lock_guard.hpp [1:3]
+ boost/thread/strict_lock.hpp [1:3]
+ boost/thread/synchronized_value.hpp [3:5]
+ boost/thread/testable_mutex.hpp [2:4]
+ boost/thread/thread_functors.hpp [1:3]
+ boost/thread/thread_guard.hpp [1:3]
+ boost/thread/tss.hpp [3:5]
+ boost/thread/win32/condition_variable.hpp [3:5]
+ boost/thread/win32/mfc_thread_init.hpp [3:5]
+ boost/thread/win32/mutex.hpp [5:7]
+ boost/thread/win32/thread_data.hpp [3:5]
+ boost/thread/win32/thread_heap_alloc.hpp [1:3]
+ boost/tuple/detail/tuple_basic.hpp [5:7]
+ boost/tuple/tuple.hpp [5:7]
+ boost/tuple/tuple_comparison.hpp [6:8]
+ boost/tuple/tuple_io.hpp [6:8]
+ boost/type.hpp [2:4]
+ boost/type_traits/aligned_storage.hpp [9:11]
+ boost/type_traits/floating_point_promotion.hpp [2:4]
+ boost/type_traits/integral_promotion.hpp [2:4]
+ boost/type_traits/promote.hpp [2:4]
+ boost/units/absolute.hpp [7:9]
+ boost/units/base_dimension.hpp [7:9]
+ boost/units/base_unit.hpp [7:9]
+ boost/units/base_units/angle/arcminute.hpp [7:9]
+ boost/units/base_units/angle/arcsecond.hpp [7:9]
+ boost/units/base_units/angle/degree.hpp [7:9]
+ boost/units/base_units/angle/gradian.hpp [7:9]
+ boost/units/base_units/angle/radian.hpp [7:9]
+ boost/units/base_units/angle/revolution.hpp [7:9]
+ boost/units/base_units/angle/steradian.hpp [7:9]
+ boost/units/base_units/astronomical/astronomical_unit.hpp [7:9]
+ boost/units/base_units/astronomical/light_day.hpp [7:9]
+ boost/units/base_units/astronomical/light_hour.hpp [7:9]
+ boost/units/base_units/astronomical/light_minute.hpp [7:9]
+ boost/units/base_units/astronomical/light_second.hpp [7:9]
+ boost/units/base_units/astronomical/light_year.hpp [7:9]
+ boost/units/base_units/astronomical/parsec.hpp [7:9]
+ boost/units/base_units/cgs/biot.hpp [7:9]
+ boost/units/base_units/cgs/centimeter.hpp [7:9]
+ boost/units/base_units/cgs/gram.hpp [7:9]
+ boost/units/base_units/imperial/conversions.hpp [7:9]
+ boost/units/base_units/imperial/drachm.hpp [7:9]
+ boost/units/base_units/imperial/fluid_ounce.hpp [7:9]
+ boost/units/base_units/imperial/foot.hpp [7:9]
+ boost/units/base_units/imperial/furlong.hpp [7:9]
+ boost/units/base_units/imperial/gallon.hpp [7:9]
+ boost/units/base_units/imperial/gill.hpp [7:9]
+ boost/units/base_units/imperial/grain.hpp [7:9]
+ boost/units/base_units/imperial/hundredweight.hpp [7:9]
+ boost/units/base_units/imperial/inch.hpp [7:9]
+ boost/units/base_units/imperial/league.hpp [7:9]
+ boost/units/base_units/imperial/mile.hpp [7:9]
+ boost/units/base_units/imperial/ounce.hpp [7:9]
+ boost/units/base_units/imperial/pint.hpp [7:9]
+ boost/units/base_units/imperial/pound.hpp [7:9]
+ boost/units/base_units/imperial/quart.hpp [7:9]
+ boost/units/base_units/imperial/quarter.hpp [7:9]
+ boost/units/base_units/imperial/stone.hpp [7:9]
+ boost/units/base_units/imperial/thou.hpp [7:9]
+ boost/units/base_units/imperial/ton.hpp [7:9]
+ boost/units/base_units/imperial/yard.hpp [7:9]
+ boost/units/base_units/information/bit.hpp [6:8]
+ boost/units/base_units/information/byte.hpp [6:8]
+ boost/units/base_units/information/hartley.hpp [6:8]
+ boost/units/base_units/information/nat.hpp [6:8]
+ boost/units/base_units/information/shannon.hpp [6:8]
+ boost/units/base_units/metric/angstrom.hpp [7:9]
+ boost/units/base_units/metric/are.hpp [7:9]
+ boost/units/base_units/metric/atmosphere.hpp [7:9]
+ boost/units/base_units/metric/bar.hpp [7:9]
+ boost/units/base_units/metric/barn.hpp [7:9]
+ boost/units/base_units/metric/day.hpp [7:9]
+ boost/units/base_units/metric/fermi.hpp [7:9]
+ boost/units/base_units/metric/hectare.hpp [7:9]
+ boost/units/base_units/metric/hour.hpp [7:9]
+ boost/units/base_units/metric/knot.hpp [7:9]
+ boost/units/base_units/metric/liter.hpp [7:9]
+ boost/units/base_units/metric/micron.hpp [7:9]
+ boost/units/base_units/metric/minute.hpp [7:9]
+ boost/units/base_units/metric/mmHg.hpp [7:9]
+ boost/units/base_units/metric/nautical_mile.hpp [7:9]
+ boost/units/base_units/metric/ton.hpp [7:9]
+ boost/units/base_units/metric/torr.hpp [7:9]
+ boost/units/base_units/metric/year.hpp [7:9]
+ boost/units/base_units/si/ampere.hpp [7:9]
+ boost/units/base_units/si/candela.hpp [7:9]
+ boost/units/base_units/si/kelvin.hpp [7:9]
+ boost/units/base_units/si/kilogram.hpp [7:9]
+ boost/units/base_units/si/meter.hpp [7:9]
+ boost/units/base_units/si/mole.hpp [7:9]
+ boost/units/base_units/si/second.hpp [7:9]
+ boost/units/base_units/temperature/celsius.hpp [7:9]
+ boost/units/base_units/temperature/conversions.hpp [7:9]
+ boost/units/base_units/temperature/fahrenheit.hpp [7:9]
+ boost/units/base_units/us/cup.hpp [7:9]
+ boost/units/base_units/us/dram.hpp [7:9]
+ boost/units/base_units/us/fluid_dram.hpp [7:9]
+ boost/units/base_units/us/fluid_ounce.hpp [7:9]
+ boost/units/base_units/us/foot.hpp [7:9]
+ boost/units/base_units/us/gallon.hpp [7:9]
+ boost/units/base_units/us/gill.hpp [7:9]
+ boost/units/base_units/us/grain.hpp [7:9]
+ boost/units/base_units/us/hundredweight.hpp [7:9]
+ boost/units/base_units/us/inch.hpp [7:9]
+ boost/units/base_units/us/mil.hpp [7:9]
+ boost/units/base_units/us/mile.hpp [7:9]
+ boost/units/base_units/us/minim.hpp [7:9]
+ boost/units/base_units/us/ounce.hpp [7:9]
+ boost/units/base_units/us/pint.hpp [7:9]
+ boost/units/base_units/us/pound.hpp [7:9]
+ boost/units/base_units/us/pound_force.hpp [7:9]
+ boost/units/base_units/us/quart.hpp [7:9]
+ boost/units/base_units/us/tablespoon.hpp [7:9]
+ boost/units/base_units/us/teaspoon.hpp [7:9]
+ boost/units/base_units/us/ton.hpp [7:9]
+ boost/units/base_units/us/yard.hpp [7:9]
+ boost/units/cmath.hpp [7:9]
+ boost/units/config.hpp [7:9]
+ boost/units/conversion.hpp [7:9]
+ boost/units/derived_dimension.hpp [7:9]
+ boost/units/detail/absolute_impl.hpp [7:9]
+ boost/units/detail/cmath_impl.hpp [7:9]
+ boost/units/detail/conversion_impl.hpp [7:9]
+ boost/units/detail/dim_impl.hpp [7:9]
+ boost/units/detail/dimension_impl.hpp [7:9]
+ boost/units/detail/dimension_list.hpp [7:9]
+ boost/units/detail/dimensionless_unit.hpp [7:9]
+ boost/units/detail/heterogeneous_conversion.hpp [7:9]
+ boost/units/detail/linear_algebra.hpp [7:9]
+ boost/units/detail/one.hpp [7:9]
+ boost/units/detail/ordinal.hpp [7:9]
+ boost/units/detail/prevent_redefinition.hpp [7:9]
+ boost/units/detail/push_front_if.hpp [7:9]
+ boost/units/detail/push_front_or_add.hpp [7:9]
+ boost/units/detail/sort.hpp [7:9]
+ boost/units/detail/static_rational_power.hpp [7:9]
+ boost/units/detail/unscale.hpp [7:9]
+ boost/units/detail/utility.hpp [7:9]
+ boost/units/dim.hpp [7:9]
+ boost/units/dimension.hpp [7:9]
+ boost/units/dimensionless_quantity.hpp [7:9]
+ boost/units/dimensionless_type.hpp [7:9]
+ boost/units/dimensionless_unit.hpp [7:9]
+ boost/units/get_dimension.hpp [7:9]
+ boost/units/get_system.hpp [7:9]
+ boost/units/heterogeneous_system.hpp [7:9]
+ boost/units/homogeneous_system.hpp [7:9]
+ boost/units/io.hpp [7:9]
+ boost/units/is_dim.hpp [7:9]
+ boost/units/is_dimension_list.hpp [7:9]
+ boost/units/is_dimensionless.hpp [7:9]
+ boost/units/is_dimensionless_quantity.hpp [7:9]
+ boost/units/is_dimensionless_unit.hpp [7:9]
+ boost/units/is_quantity.hpp [7:9]
+ boost/units/is_quantity_of_dimension.hpp [7:9]
+ boost/units/is_quantity_of_system.hpp [7:9]
+ boost/units/is_unit.hpp [7:9]
+ boost/units/is_unit_of_dimension.hpp [7:9]
+ boost/units/is_unit_of_system.hpp [7:9]
+ boost/units/lambda.hpp [7:9]
+ boost/units/limits.hpp [7:9]
+ boost/units/make_scaled_unit.hpp [7:9]
+ boost/units/make_system.hpp [7:9]
+ boost/units/operators.hpp [7:9]
+ boost/units/physical_dimensions.hpp [7:9]
+ boost/units/physical_dimensions/absorbed_dose.hpp [7:9]
+ boost/units/physical_dimensions/acceleration.hpp [7:9]
+ boost/units/physical_dimensions/action.hpp [7:9]
+ boost/units/physical_dimensions/activity.hpp [7:9]
+ boost/units/physical_dimensions/amount.hpp [7:9]
+ boost/units/physical_dimensions/angular_acceleration.hpp [7:9]
+ boost/units/physical_dimensions/angular_momentum.hpp [7:9]
+ boost/units/physical_dimensions/angular_velocity.hpp [7:9]
+ boost/units/physical_dimensions/area.hpp [7:9]
+ boost/units/physical_dimensions/capacitance.hpp [7:9]
+ boost/units/physical_dimensions/conductance.hpp [7:9]
+ boost/units/physical_dimensions/conductivity.hpp [7:9]
+ boost/units/physical_dimensions/current.hpp [7:9]
+ boost/units/physical_dimensions/dose_equivalent.hpp [7:9]
+ boost/units/physical_dimensions/dynamic_viscosity.hpp [7:9]
+ boost/units/physical_dimensions/electric_charge.hpp [7:9]
+ boost/units/physical_dimensions/electric_potential.hpp [7:9]
+ boost/units/physical_dimensions/energy.hpp [7:9]
+ boost/units/physical_dimensions/energy_density.hpp [7:9]
+ boost/units/physical_dimensions/force.hpp [7:9]
+ boost/units/physical_dimensions/frequency.hpp [7:9]
+ boost/units/physical_dimensions/heat_capacity.hpp [7:9]
+ boost/units/physical_dimensions/illuminance.hpp [7:9]
+ boost/units/physical_dimensions/impedance.hpp [7:9]
+ boost/units/physical_dimensions/inductance.hpp [7:9]
+ boost/units/physical_dimensions/information.hpp [6:8]
+ boost/units/physical_dimensions/kinematic_viscosity.hpp [7:9]
+ boost/units/physical_dimensions/length.hpp [7:9]
+ boost/units/physical_dimensions/luminance.hpp [7:9]
+ boost/units/physical_dimensions/luminous_flux.hpp [7:9]
+ boost/units/physical_dimensions/luminous_intensity.hpp [7:9]
+ boost/units/physical_dimensions/magnetic_field_intensity.hpp [7:9]
+ boost/units/physical_dimensions/magnetic_flux.hpp [7:9]
+ boost/units/physical_dimensions/magnetic_flux_density.hpp [7:9]
+ boost/units/physical_dimensions/mass.hpp [7:9]
+ boost/units/physical_dimensions/mass_density.hpp [7:9]
+ boost/units/physical_dimensions/molar_energy.hpp [7:9]
+ boost/units/physical_dimensions/molar_heat_capacity.hpp [7:9]
+ boost/units/physical_dimensions/moment_of_inertia.hpp [7:9]
+ boost/units/physical_dimensions/momentum.hpp [7:9]
+ boost/units/physical_dimensions/permeability.hpp [7:9]
+ boost/units/physical_dimensions/permittivity.hpp [7:9]
+ boost/units/physical_dimensions/plane_angle.hpp [7:9]
+ boost/units/physical_dimensions/power.hpp [7:9]
+ boost/units/physical_dimensions/pressure.hpp [7:9]
+ boost/units/physical_dimensions/reluctance.hpp [7:9]
+ boost/units/physical_dimensions/resistance.hpp [7:9]
+ boost/units/physical_dimensions/resistivity.hpp [7:9]
+ boost/units/physical_dimensions/solid_angle.hpp [7:9]
+ boost/units/physical_dimensions/specific_energy.hpp [7:9]
+ boost/units/physical_dimensions/specific_heat_capacity.hpp [7:9]
+ boost/units/physical_dimensions/specific_volume.hpp [7:9]
+ boost/units/physical_dimensions/stress.hpp [7:9]
+ boost/units/physical_dimensions/surface_density.hpp [7:9]
+ boost/units/physical_dimensions/surface_tension.hpp [7:9]
+ boost/units/physical_dimensions/temperature.hpp [7:9]
+ boost/units/physical_dimensions/thermal_conductivity.hpp [7:9]
+ boost/units/physical_dimensions/time.hpp [7:9]
+ boost/units/physical_dimensions/torque.hpp [7:9]
+ boost/units/physical_dimensions/velocity.hpp [7:9]
+ boost/units/physical_dimensions/volume.hpp [7:9]
+ boost/units/physical_dimensions/wavenumber.hpp [7:9]
+ boost/units/pow.hpp [7:9]
+ boost/units/quantity.hpp [7:9]
+ boost/units/reduce_unit.hpp [7:9]
+ boost/units/scale.hpp [7:9]
+ boost/units/scaled_base_unit.hpp [7:9]
+ boost/units/static_constant.hpp [7:9]
+ boost/units/static_rational.hpp [7:9]
+ boost/units/systems/abstract.hpp [7:9]
+ boost/units/systems/angle/degrees.hpp [7:9]
+ boost/units/systems/angle/gradians.hpp [7:9]
+ boost/units/systems/angle/revolutions.hpp [7:9]
+ boost/units/systems/cgs.hpp [7:9]
+ boost/units/systems/cgs/acceleration.hpp [7:9]
+ boost/units/systems/cgs/area.hpp [7:9]
+ boost/units/systems/cgs/base.hpp [7:9]
+ boost/units/systems/cgs/current.hpp [7:9]
+ boost/units/systems/cgs/dimensionless.hpp [7:9]
+ boost/units/systems/cgs/dynamic_viscosity.hpp [7:9]
+ boost/units/systems/cgs/energy.hpp [7:9]
+ boost/units/systems/cgs/force.hpp [7:9]
+ boost/units/systems/cgs/frequency.hpp [7:9]
+ boost/units/systems/cgs/io.hpp [7:9]
+ boost/units/systems/cgs/kinematic_viscosity.hpp [7:9]
+ boost/units/systems/cgs/length.hpp [7:9]
+ boost/units/systems/cgs/mass.hpp [7:9]
+ boost/units/systems/cgs/mass_density.hpp [7:9]
+ boost/units/systems/cgs/momentum.hpp [7:9]
+ boost/units/systems/cgs/power.hpp [7:9]
+ boost/units/systems/cgs/pressure.hpp [7:9]
+ boost/units/systems/cgs/time.hpp [7:9]
+ boost/units/systems/cgs/velocity.hpp [7:9]
+ boost/units/systems/cgs/volume.hpp [7:9]
+ boost/units/systems/cgs/wavenumber.hpp [7:9]
+ boost/units/systems/detail/constants.hpp [7:9]
+ boost/units/systems/information.hpp [6:8]
+ boost/units/systems/information/bit.hpp [6:8]
+ boost/units/systems/information/byte.hpp [6:8]
+ boost/units/systems/information/hartley.hpp [6:8]
+ boost/units/systems/information/nat.hpp [6:8]
+ boost/units/systems/information/prefixes.hpp [6:8]
+ boost/units/systems/information/shannon.hpp [6:8]
+ boost/units/systems/si.hpp [7:9]
+ boost/units/systems/si/absorbed_dose.hpp [7:9]
+ boost/units/systems/si/acceleration.hpp [7:9]
+ boost/units/systems/si/action.hpp [7:9]
+ boost/units/systems/si/activity.hpp [7:9]
+ boost/units/systems/si/amount.hpp [7:9]
+ boost/units/systems/si/angular_acceleration.hpp [7:9]
+ boost/units/systems/si/angular_momentum.hpp [7:9]
+ boost/units/systems/si/angular_velocity.hpp [7:9]
+ boost/units/systems/si/area.hpp [7:9]
+ boost/units/systems/si/base.hpp [7:9]
+ boost/units/systems/si/capacitance.hpp [7:9]
+ boost/units/systems/si/catalytic_activity.hpp [7:9]
+ boost/units/systems/si/codata/alpha_constants.hpp [7:9]
+ boost/units/systems/si/codata/atomic-nuclear_constants.hpp [7:9]
+ boost/units/systems/si/codata/deuteron_constants.hpp [7:9]
+ boost/units/systems/si/codata/electromagnetic_constants.hpp [7:9]
+ boost/units/systems/si/codata/electron_constants.hpp [7:9]
+ boost/units/systems/si/codata/helion_constants.hpp [7:9]
+ boost/units/systems/si/codata/muon_constants.hpp [7:9]
+ boost/units/systems/si/codata/neutron_constants.hpp [7:9]
+ boost/units/systems/si/codata/physico-chemical_constants.hpp [7:9]
+ boost/units/systems/si/codata/proton_constants.hpp [7:9]
+ boost/units/systems/si/codata/tau_constants.hpp [7:9]
+ boost/units/systems/si/codata/triton_constants.hpp [7:9]
+ boost/units/systems/si/codata/typedefs.hpp [7:9]
+ boost/units/systems/si/codata/universal_constants.hpp [7:9]
+ boost/units/systems/si/codata_constants.hpp [7:9]
+ boost/units/systems/si/conductance.hpp [7:9]
+ boost/units/systems/si/conductivity.hpp [7:9]
+ boost/units/systems/si/current.hpp [7:9]
+ boost/units/systems/si/dimensionless.hpp [7:9]
+ boost/units/systems/si/dose_equivalent.hpp [7:9]
+ boost/units/systems/si/dynamic_viscosity.hpp [7:9]
+ boost/units/systems/si/electric_charge.hpp [7:9]
+ boost/units/systems/si/electric_potential.hpp [7:9]
+ boost/units/systems/si/energy.hpp [7:9]
+ boost/units/systems/si/force.hpp [7:9]
+ boost/units/systems/si/frequency.hpp [7:9]
+ boost/units/systems/si/illuminance.hpp [7:9]
+ boost/units/systems/si/impedance.hpp [7:9]
+ boost/units/systems/si/inductance.hpp [7:9]
+ boost/units/systems/si/io.hpp [7:9]
+ boost/units/systems/si/kinematic_viscosity.hpp [7:9]
+ boost/units/systems/si/length.hpp [7:9]
+ boost/units/systems/si/luminous_flux.hpp [7:9]
+ boost/units/systems/si/luminous_intensity.hpp [7:9]
+ boost/units/systems/si/magnetic_field_intensity.hpp [7:9]
+ boost/units/systems/si/magnetic_flux.hpp [7:9]
+ boost/units/systems/si/magnetic_flux_density.hpp [7:9]
+ boost/units/systems/si/mass.hpp [7:9]
+ boost/units/systems/si/mass_density.hpp [7:9]
+ boost/units/systems/si/moment_of_inertia.hpp [7:9]
+ boost/units/systems/si/momentum.hpp [7:9]
+ boost/units/systems/si/permeability.hpp [7:9]
+ boost/units/systems/si/permittivity.hpp [7:9]
+ boost/units/systems/si/plane_angle.hpp [7:9]
+ boost/units/systems/si/power.hpp [7:9]
+ boost/units/systems/si/prefixes.hpp [7:9]
+ boost/units/systems/si/pressure.hpp [7:9]
+ boost/units/systems/si/reluctance.hpp [7:9]
+ boost/units/systems/si/resistance.hpp [7:9]
+ boost/units/systems/si/resistivity.hpp [7:9]
+ boost/units/systems/si/solid_angle.hpp [7:9]
+ boost/units/systems/si/surface_density.hpp [7:9]
+ boost/units/systems/si/surface_tension.hpp [7:9]
+ boost/units/systems/si/temperature.hpp [7:9]
+ boost/units/systems/si/time.hpp [7:9]
+ boost/units/systems/si/torque.hpp [7:9]
+ boost/units/systems/si/velocity.hpp [7:9]
+ boost/units/systems/si/volume.hpp [7:9]
+ boost/units/systems/si/wavenumber.hpp [7:9]
+ boost/units/systems/temperature/celsius.hpp [7:9]
+ boost/units/systems/temperature/fahrenheit.hpp [7:9]
+ boost/units/unit.hpp [7:9]
+ boost/units/units_fwd.hpp [7:9]
+ boost/utility/value_init.hpp [3:5]
+ boost/uuid/detail/md5.hpp [22:24]
+ boost/uuid/detail/sha1.hpp [4:6]
+ boost/uuid/nil_generator.hpp [4:6]
+ boost/uuid/random_generator.hpp [5:7]
+ boost/uuid/string_generator.hpp [4:6]
+ boost/uuid/uuid.hpp [4:6]
+ boost/uuid/uuid_generators.hpp [4:6]
+ boost/uuid/uuid_io.hpp [4:6]
+ boost/uuid/uuid_serialize.hpp [4:6]
+ boost/variant.hpp [9:11]
+ boost/variant/apply_visitor.hpp [9:11]
+ boost/variant/bad_visit.hpp [9:11]
+ boost/variant/detail/apply_visitor_binary.hpp [9:11]
+ boost/variant/detail/apply_visitor_delayed.hpp [9:11]
+ boost/variant/detail/apply_visitor_unary.hpp [9:11]
+ boost/variant/detail/backup_holder.hpp [9:11]
+ boost/variant/detail/cast_storage.hpp [9:11]
+ boost/variant/detail/config.hpp [9:11]
+ boost/variant/detail/element_index.hpp [8:10]
+ boost/variant/detail/enable_recursive.hpp [9:11]
+ boost/variant/detail/enable_recursive_fwd.hpp [9:11]
+ boost/variant/detail/forced_return.hpp [9:11]
+ boost/variant/detail/generic_result_type.hpp [9:11]
+ boost/variant/detail/has_result_type.hpp [8:10]
+ boost/variant/detail/hash_variant.hpp [9:11]
+ boost/variant/detail/initializer.hpp [9:11]
+ boost/variant/detail/make_variant_list.hpp [9:11]
+ boost/variant/detail/over_sequence.hpp [11:13]
+ boost/variant/detail/substitute.hpp [14:16]
+ boost/variant/detail/substitute_fwd.hpp [9:11]
+ boost/variant/detail/variant_io.hpp [9:11]
+ boost/variant/detail/visitation_impl.hpp [9:11]
+ boost/variant/get.hpp [9:11]
+ boost/variant/polymorphic_get.hpp [8:10]
+ boost/variant/recursive_variant.hpp [9:11]
+ boost/variant/recursive_wrapper.hpp [9:11]
+ boost/variant/recursive_wrapper_fwd.hpp [11:13]
+ boost/variant/static_visitor.hpp [9:11]
+ boost/variant/variant.hpp [9:11]
+ boost/variant/variant_fwd.hpp [9:11]
+ boost/variant/visitor_ptr.hpp [9:11]
+ libs/python/src/converter/arg_to_python_base.cpp [2:4]
+ libs/python/src/converter/builtin_converters.cpp [2:4]
+ libs/python/src/converter/from_python.cpp [2:4]
+ libs/python/src/converter/registry.cpp [2:4]
+ libs/python/src/converter/type_id.cpp [2:4]
+ libs/python/src/errors.cpp [2:4]
+ libs/python/src/exec.cpp [2:4]
+ libs/python/src/import.cpp [2:4]
+ libs/python/src/list.cpp [2:4]
+ libs/python/src/long.cpp [2:4]
+ libs/python/src/module.cpp [2:4]
+ libs/python/src/object/class.cpp [2:4]
+ libs/python/src/object/enum.cpp [2:4]
+ libs/python/src/object/function.cpp [2:4]
+ libs/python/src/object/function_doc_signature.cpp [2:4]
+ libs/python/src/object/inheritance.cpp [2:4]
+ libs/python/src/object/iterator.cpp [2:4]
+ libs/python/src/object/life_support.cpp [2:4]
+ libs/python/src/object/stl_iterator.cpp [2:4]
+ libs/python/src/object_operators.cpp [2:4]
+ libs/python/src/object_protocol.cpp [2:4]
+ libs/python/src/tuple.cpp [2:4]
+ libs/thread/src/win32/thread.cpp [1:3]
+
+KEEP BSL-1.0 47b22ecd1545b89e29a01cd6793d7a40
+BELONGS ya.make
+ License text:
+ // Version 1.0. See http://www.boost.org/LICENSE_1_0.txt.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : REFERENCE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/convert/detail/boost_parameter_ext.hpp [3:3]
+ boost/convert/detail/is_converter.hpp [3:3]
+ boost/convert/detail/is_string.hpp [3:3]
+ boost/convert/spirit.hpp [3:3]
+
+KEEP BSL-1.0 47b4c0f9d07b7c64eb3da0cafc305103
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signals2/connection.hpp at line 9, boost/signals2/detail/foreign_ptr.hpp at line 6, boost/signals2/detail/null_output_iterator.hpp at line 6, boost/signals2/detail/unique_lock.hpp at line 7, boost/signals2/dummy_mutex.hpp at line 8, boost/signals2/optional_last_value.hpp at line 6
+ License text:
+ // Distributed under the Boost Software License, Version
+ // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/signals2/connection.hpp [8:10]
+ boost/signals2/detail/foreign_ptr.hpp [5:7]
+ boost/signals2/detail/null_output_iterator.hpp [5:7]
+ boost/signals2/detail/unique_lock.hpp [6:8]
+ boost/signals2/dummy_mutex.hpp [7:9]
+ boost/signals2/optional_last_value.hpp [5:7]
+
+KEEP BSL-1.0 48493a6f602d8228b384d9aab3e50dbd
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/date_time/local_time/conversion.hpp at line 6, boost/date_time/local_time/custom_time_zone.hpp at line 6, boost/date_time/local_time/local_date_time.hpp at line 6, boost/date_time/local_time/local_time_io.hpp at line 6, boost/date_time/time_zone_base.hpp at line 6
+ License text:
+ * Subject to the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 78.12
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/date_time/local_time/conversion.hpp [5:6]
+ boost/date_time/local_time/custom_time_zone.hpp [5:6]
+ boost/date_time/local_time/local_date_time.hpp [5:6]
+ boost/date_time/local_time/local_time_io.hpp [5:6]
+ boost/date_time/time_zone_base.hpp [5:6]
+
+KEEP BSL-1.0 49e6bc77399e998df4a19b5127671d43
+BELONGS libs/python/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iterator_adaptors.hpp at line 3, boost/python/detail/enable_if.hpp at line 3, boost/python/detail/indirect_traits.hpp at line 3, boost/python/detail/is_wrapper.hpp at line 3, boost/python/detail/sfinae.hpp at line 3, boost/python/detail/unwrap_type_id.hpp at line 3, boost/python/detail/unwrap_wrapper.hpp at line 3, boost/python/detail/value_arg.hpp at line 3, boost/python/detail/wrapper_base.hpp at line 3, boost/python/override.hpp at line 5, boost/python/wrapper.hpp at line 3, libs/python/src/dict.cpp at line 3, libs/python/src/str.cpp at line 3, libs/python/src/wrapper.cpp at line 3
+ License text:
+ // Copyright David Abrahams 2004. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/iterator_adaptors.hpp [1:3]
+ boost/python/detail/enable_if.hpp [1:3]
+ boost/python/detail/indirect_traits.hpp [1:3]
+ boost/python/detail/is_wrapper.hpp [1:3]
+ boost/python/detail/sfinae.hpp [1:3]
+ boost/python/detail/unwrap_type_id.hpp [1:3]
+ boost/python/detail/unwrap_wrapper.hpp [1:3]
+ boost/python/detail/value_arg.hpp [1:3]
+ boost/python/detail/wrapper_base.hpp [1:3]
+ boost/python/override.hpp [3:5]
+ boost/python/wrapper.hpp [1:3]
+ libs/python/src/dict.cpp [1:3]
+ libs/python/src/str.cpp [1:3]
+ libs/python/src/wrapper.cpp [1:3]
+
+KEEP Mit-Old-Style 4a0ba219f46e4fe5625b9889e52ace5c
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: LicenseRef-scancode-mit-old-style
+ Score : 100.00
+ Match type : TEXT
+ Links : http://fedoraproject.org/wiki/Licensing:MIT#Old_Style, https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/mit-old-style.LICENSE
+ Files with this license:
+ boost/detail/binary_search.hpp [9:15]
+ boost/multi_array/algorithm.hpp [9:15]
+
+KEEP BSL-1.0 4bc1c5915859ce2250046550c5c61a3b
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/numeric/ublas/detail/returntype_deduction.hpp at line 5
+ License text:
+ * Use, modification and distribution is subject to the Boost Software
+ * License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/numeric/ublas/detail/returntype_deduction.hpp [4:6]
+
+KEEP BSL-1.0 4bf92e73158a277da24beb102ed42abb
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/rolling_count.hpp at line 6, boost/accumulators/statistics/rolling_sum.hpp at line 6, boost/accumulators/statistics/rolling_window.hpp at line 6
+ License text:
+ // Copyright 2008 Eric Niebler. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/accumulators/statistics/rolling_count.hpp [4:6]
+ boost/accumulators/statistics/rolling_sum.hpp [4:6]
+ boost/accumulators/statistics/rolling_window.hpp [4:6]
+
+KEEP BSL-1.0 4c18916c3f8400d0d3ea68d73e70192b
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/circular_buffer.hpp at line 6, boost/circular_buffer/base.hpp at line 11, boost/circular_buffer/debug.hpp at line 6, boost/circular_buffer/details.hpp at line 9, boost/circular_buffer/space_optimized.hpp at line 8, boost/circular_buffer_fwd.hpp at line 6, boost/core/enable_if.hpp at line 6, boost/none_t.hpp at line 5, boost/optional.hpp at line 4, boost/optional/bad_optional_access.hpp at line 4, boost/optional/detail/experimental_traits.hpp at line 4, boost/optional/detail/old_optional_implementation.hpp at line 5, boost/optional/detail/optional_aligned_storage.hpp at line 5, boost/optional/detail/optional_config.hpp at line 5, boost/optional/detail/optional_factory_support.hpp at line 5, boost/optional/detail/optional_reference_spec.hpp at line 4, boost/optional/detail/optional_relops.hpp at line 5, boost/optional/detail/optional_swap.hpp at line 5, boost/optional/optional.hpp at line 5, boost/optional/optional_fwd.hpp at line 5, boost/optional/optional_io.hpp at line 4, boost/utility/compare_pointees.hpp at line 4, boost/utility/detail/in_place_factory_prefix.hpp at line 5, boost/utility/detail/in_place_factory_suffix.hpp at line 5, boost/utility/in_place_factory.hpp at line 5, boost/utility/typed_in_place_factory.hpp at line 5
+ License text:
+ // Use, modification, and distribution is subject to the Boost Software
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/circular_buffer.hpp [5:7]
+ boost/circular_buffer/base.hpp [10:12]
+ boost/circular_buffer/debug.hpp [5:7]
+ boost/circular_buffer/details.hpp [8:10]
+ boost/circular_buffer/space_optimized.hpp [7:9]
+ boost/circular_buffer_fwd.hpp [5:7]
+ boost/core/enable_if.hpp [5:7]
+ boost/none_t.hpp [4:6]
+ boost/optional.hpp [3:5]
+ boost/optional/bad_optional_access.hpp [3:5]
+ boost/optional/detail/experimental_traits.hpp [3:5]
+ boost/optional/detail/old_optional_implementation.hpp [4:6]
+ boost/optional/detail/optional_aligned_storage.hpp [4:6]
+ boost/optional/detail/optional_config.hpp [4:6]
+ boost/optional/detail/optional_factory_support.hpp [4:6]
+ boost/optional/detail/optional_reference_spec.hpp [3:5]
+ boost/optional/detail/optional_relops.hpp [4:6]
+ boost/optional/detail/optional_swap.hpp [4:6]
+ boost/optional/optional.hpp [4:6]
+ boost/optional/optional_fwd.hpp [4:6]
+ boost/optional/optional_io.hpp [3:5]
+ boost/utility/compare_pointees.hpp [3:5]
+ boost/utility/detail/in_place_factory_prefix.hpp [4:6]
+ boost/utility/detail/in_place_factory_suffix.hpp [4:6]
+ boost/utility/in_place_factory.hpp [4:6]
+ boost/utility/typed_in_place_factory.hpp [4:6]
+
+KEEP BSL-1.0 4c9557897114277994abc82dcb05944a
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/chrono/typeof/boost/chrono/chrono.hpp at line 5, boost/chrono/typeof/boost/ratio.hpp at line 5
+ License text:
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or
+ // copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/chrono/typeof/boost/chrono/chrono.hpp [4:6]
+ boost/chrono/typeof/boost/ratio.hpp [4:6]
+
+KEEP BSL-1.0 4d2821c205f13355ac67ff2f0c1356b6
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: LicenseRef-scancode-boost-original
+ Score : 100.00
+ Match type : TEXT
+ Links : http://boost.org, https://github.com/boostorg/rational/blob/0fe0beca5397c812c4f85a7de0d0769de59e12e0/include/boost/rational.hpp, https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/boost-original.LICENSE
+ Files with this license:
+ boost/program_options/detail/utf8_codecvt_facet.hpp [2:6]
+
+KEEP BSL-1.0 4d2a8dc89c39573e23ad6a8f52bdd9a1
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/utility/base_from_member.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/utility/base_from_member.hpp [3:6]
+
+KEEP BSL-1.0 4d5252e413de14514a327fd589154ef8
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/adaptive_pool.hpp at line 5, boost/container/detail/adaptive_node_pool.hpp at line 5, boost/container/detail/adaptive_node_pool_impl.hpp at line 5, boost/container/detail/alloc_lib.h at line 5, boost/container/detail/allocation_type.hpp at line 5, boost/container/detail/config_begin.hpp at line 5, boost/container/detail/config_end.hpp at line 5, boost/container/detail/copy_move_algo.hpp at line 5, boost/container/detail/min_max.hpp at line 5, boost/container/detail/multiallocation_chain.hpp at line 5, boost/container/detail/node_alloc_holder.hpp at line 5, boost/container/detail/node_pool.hpp at line 5, boost/container/detail/node_pool_impl.hpp at line 5, boost/container/detail/pair_key_mapped_of_value.hpp at line 5, boost/container/detail/pool_common.hpp at line 5, boost/container/detail/pool_common_alloc.hpp at line 5, boost/container/detail/version_type.hpp at line 5, boost/container/detail/workaround.hpp at line 5, boost/container/flat_map.hpp at line 5, boost/container/flat_set.hpp at line 5, boost/container/map.hpp at line 5, boost/container/set.hpp at line 5, boost/interprocess/detail/os_thread_functions.hpp at line 5, boost/intrusive/detail/workaround.hpp at line 5, boost/move/adl_move_swap.hpp at line 6
+ License text:
+ // (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/container/adaptive_pool.hpp [3:5]
+ boost/container/detail/adaptive_node_pool.hpp [3:5]
+ boost/container/detail/adaptive_node_pool_impl.hpp [3:5]
+ boost/container/detail/alloc_lib.h [3:5]
+ boost/container/detail/allocation_type.hpp [3:5]
+ boost/container/detail/config_begin.hpp [3:5]
+ boost/container/detail/config_end.hpp [3:5]
+ boost/container/detail/copy_move_algo.hpp [3:5]
+ boost/container/detail/min_max.hpp [3:5]
+ boost/container/detail/multiallocation_chain.hpp [3:5]
+ boost/container/detail/node_alloc_holder.hpp [3:5]
+ boost/container/detail/node_pool.hpp [3:5]
+ boost/container/detail/node_pool_impl.hpp [3:5]
+ boost/container/detail/pair_key_mapped_of_value.hpp [3:5]
+ boost/container/detail/pool_common.hpp [3:5]
+ boost/container/detail/pool_common_alloc.hpp [3:5]
+ boost/container/detail/version_type.hpp [3:5]
+ boost/container/detail/workaround.hpp [3:5]
+ boost/container/flat_map.hpp [3:5]
+ boost/container/flat_set.hpp [3:5]
+ boost/container/map.hpp [3:5]
+ boost/container/set.hpp [3:5]
+ boost/interprocess/detail/os_thread_functions.hpp [3:5]
+ boost/intrusive/detail/workaround.hpp [3:5]
+ boost/move/adl_move_swap.hpp [4:6]
+
+KEEP BSL-1.0 4e866b0f702c0f86a7d853ca58d2b0d6
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/utility/detail/result_of_iterate.hpp at line 10
+ License text:
+ // Use, modification and distribution is subject to the Boost Software
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or
+ // copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/utility/detail/result_of_iterate.hpp [9:11]
+
+KEEP BSL-1.0 4ea1383dd870de8fa4ba78b3f077f660
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/containers/containers_fwd.hpp at line 5, boost/interprocess/detail/file_locking_helpers.hpp at line 5, boost/interprocess/detail/intermodule_singleton.hpp at line 5, boost/interprocess/detail/intermodule_singleton_common.hpp at line 5, boost/interprocess/detail/managed_global_memory.hpp at line 5, boost/interprocess/detail/portable_intermodule_singleton.hpp at line 5, boost/interprocess/detail/windows_intermodule_singleton.hpp at line 5, boost/interprocess/detail/xsi_shared_memory_file_wrapper.hpp at line 5, boost/interprocess/xsi_shared_memory.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2009-2012. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/interprocess/containers/containers_fwd.hpp [3:5]
+ boost/interprocess/detail/file_locking_helpers.hpp [3:5]
+ boost/interprocess/detail/intermodule_singleton.hpp [3:5]
+ boost/interprocess/detail/intermodule_singleton_common.hpp [3:5]
+ boost/interprocess/detail/managed_global_memory.hpp [3:5]
+ boost/interprocess/detail/portable_intermodule_singleton.hpp [3:5]
+ boost/interprocess/detail/windows_intermodule_singleton.hpp [3:5]
+ boost/interprocess/detail/xsi_shared_memory_file_wrapper.hpp [3:5]
+ boost/interprocess/xsi_shared_memory.hpp [3:5]
+
+KEEP BSL-1.0 4ebf5547dee6ab6b8aeb6b822352227b
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/deque.hpp at line 5, boost/container/detail/flat_tree.hpp at line 5, boost/container/detail/tree.hpp at line 5, boost/container/list.hpp at line 5, boost/container/string.hpp at line 5, boost/container/vector.hpp at line 5, boost/interprocess/detail/win32_api.hpp at line 5, boost/interprocess/detail/workaround.hpp at line 5, boost/interprocess/exceptions.hpp at line 5, boost/interprocess/offset_ptr.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2005-2015. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/container/deque.hpp [3:5]
+ boost/container/detail/flat_tree.hpp [3:5]
+ boost/container/detail/tree.hpp [3:5]
+ boost/container/list.hpp [3:5]
+ boost/container/string.hpp [3:5]
+ boost/container/vector.hpp [3:5]
+ boost/interprocess/detail/win32_api.hpp [3:5]
+ boost/interprocess/detail/workaround.hpp [3:5]
+ boost/interprocess/exceptions.hpp [3:5]
+ boost/interprocess/offset_ptr.hpp [3:5]
+
+KEEP BSL-1.0 4ee4563f1657e4bee051a7033c20db63
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/xsi_key.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2009. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/interprocess/xsi_key.hpp [3:5]
+
+KEEP BSL-1.0 50c03a0f9bee856a44f9bf0a4cffed91
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iostreams/detail/absolute_path.hpp at line 3, boost/iostreams/detail/adapter/device_adapter.hpp at line 13, boost/iostreams/detail/adapter/filter_adapter.hpp at line 12, boost/iostreams/detail/config/rtl.hpp at line 3, boost/iostreams/detail/current_directory.hpp at line 3, boost/iostreams/detail/execute.hpp at line 3, boost/iostreams/detail/file_handle.hpp at line 3, boost/iostreams/detail/functional.hpp at line 3, boost/iostreams/detail/path.hpp at line 3, boost/iostreams/detail/restrict_impl.hpp at line 3, boost/iostreams/filter/grep.hpp at line 3, boost/iostreams/restrict.hpp at line 3, boost/iostreams/slice.hpp at line 3
+ License text:
+ * Distributed under the Boost Software License, Version 1.0.(See accompanying
+ * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/iostreams/detail/absolute_path.hpp [2:3]
+ boost/iostreams/detail/adapter/device_adapter.hpp [12:13]
+ boost/iostreams/detail/adapter/filter_adapter.hpp [11:12]
+ boost/iostreams/detail/config/rtl.hpp [2:3]
+ boost/iostreams/detail/current_directory.hpp [2:3]
+ boost/iostreams/detail/execute.hpp [2:3]
+ boost/iostreams/detail/file_handle.hpp [2:3]
+ boost/iostreams/detail/functional.hpp [2:3]
+ boost/iostreams/detail/path.hpp [2:3]
+ boost/iostreams/detail/restrict_impl.hpp [2:3]
+ boost/iostreams/filter/grep.hpp [2:3]
+ boost/iostreams/restrict.hpp [2:3]
+ boost/iostreams/slice.hpp [2:3]
+
+KEEP BSL-1.0 50dc18b27f34dab68ff41aa3f7880dda
+BELONGS libs/context/ya.make libs/coroutine/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/platform/cloudabi.hpp at line 3, boost/container/detail/function_detector.hpp at line 6, boost/container/detail/minimal_char_traits_header.hpp at line 6, boost/container/options.hpp at line 6, boost/context/all.hpp at line 4, boost/context/continuation.hpp at line 4, boost/context/continuation_fcontext.hpp at line 4, boost/context/continuation_ucontext.hpp at line 4, boost/context/continuation_winfib.hpp at line 4, boost/context/detail/apply.hpp at line 4, boost/context/detail/config.hpp at line 4, boost/context/detail/disable_overload.hpp at line 4, boost/context/detail/exception.hpp at line 4, boost/context/detail/exchange.hpp at line 4, boost/context/detail/externc.hpp at line 4, boost/context/detail/fcontext.hpp at line 4, boost/context/detail/index_sequence.hpp at line 4, boost/context/detail/invoke.hpp at line 4, boost/context/detail/prefetch.hpp at line 3, boost/context/detail/tuple.hpp at line 4, boost/context/execution_context.hpp at line 4, boost/context/execution_context_v1.hpp at line 4, boost/context/execution_context_v2.hpp at line 4, boost/context/execution_context_v2_void.ipp at line 4, boost/context/fiber.hpp at line 4, boost/context/fiber_fcontext.hpp at line 4, boost/context/fiber_ucontext.hpp at line 4, boost/context/fiber_winfib.hpp at line 4, boost/context/fixedsize_stack.hpp at line 4, boost/context/flags.hpp at line 4, boost/context/pooled_fixedsize_stack.hpp at line 4, boost/context/posix/protected_fixedsize_stack.hpp at line 4, boost/context/posix/segmented_stack.hpp at line 4, boost/context/preallocated.hpp at line 4, boost/context/protected_fixedsize_stack.hpp at line 4, boost/context/segmented_stack.hpp at line 4, boost/context/stack_context.hpp at line 4, boost/context/stack_traits.hpp at line 4, boost/context/windows/protected_fixedsize_stack.hpp at line 4, boost/coroutine/all.hpp at line 4, boost/coroutine/asymmetric_coroutine.hpp at line 4, boost/coroutine/attributes.hpp at line 4, boost/coroutine/coroutine.hpp at line 4, boost/coroutine/detail/config.hpp at line 4, boost/coroutine/detail/coroutine_context.hpp at line 4, boost/coroutine/detail/data.hpp at line 4, boost/coroutine/detail/flags.hpp at line 4, boost/coroutine/detail/parameters.hpp at line 4, boost/coroutine/detail/preallocated.hpp at line 4, boost/coroutine/detail/pull_coroutine_impl.hpp at line 4, boost/coroutine/detail/pull_coroutine_object.hpp at line 4, boost/coroutine/detail/pull_coroutine_synthesized.hpp at line 4, boost/coroutine/detail/push_coroutine_impl.hpp at line 4, boost/coroutine/detail/push_coroutine_object.hpp at line 4, boost/coroutine/detail/push_coroutine_synthesized.hpp at line 4, boost/coroutine/detail/setup.hpp at line 4, boost/coroutine/detail/symmetric_coroutine_call.hpp at line 4, boost/coroutine/detail/symmetric_coroutine_impl.hpp at line 4, boost/coroutine/detail/symmetric_coroutine_object.hpp at line 4, boost/coroutine/detail/symmetric_coroutine_yield.hpp at line 4, boost/coroutine/detail/trampoline.hpp at line 4, boost/coroutine/detail/trampoline_pull.hpp at line 4, boost/coroutine/detail/trampoline_push.hpp at line 4, boost/coroutine/exceptions.hpp at line 4, boost/coroutine/flags.hpp at line 4, boost/coroutine/posix/protected_stack_allocator.hpp at line 4, boost/coroutine/posix/segmented_stack_allocator.hpp at line 4, boost/coroutine/protected_stack_allocator.hpp at line 4, boost/coroutine/segmented_stack_allocator.hpp at line 4, boost/coroutine/stack_allocator.hpp at line 4, boost/coroutine/stack_context.hpp at line 4, boost/coroutine/stack_traits.hpp at line 4, boost/coroutine/standard_stack_allocator.hpp at line 4, boost/coroutine/symmetric_coroutine.hpp at line 4, boost/coroutine/windows/protected_stack_allocator.hpp at line 4, boost/coroutine2/all.hpp at line 4, boost/coroutine2/coroutine.hpp at line 4, boost/coroutine2/detail/config.hpp at line 4, boost/coroutine2/detail/coroutine.hpp at line 4, boost/coroutine2/detail/create_control_block.ipp at line 4, boost/coroutine2/detail/decay_copy.hpp at line 4, boost/coroutine2/detail/disable_overload.hpp at line 4, boost/coroutine2/detail/forced_unwind.hpp at line 4, boost/coroutine2/detail/pull_control_block_cc.hpp at line 4, boost/coroutine2/detail/pull_control_block_cc.ipp at line 4, boost/coroutine2/detail/pull_coroutine.hpp at line 4, boost/coroutine2/detail/pull_coroutine.ipp at line 4, boost/coroutine2/detail/push_control_block_cc.hpp at line 4, boost/coroutine2/detail/push_control_block_cc.ipp at line 4, boost/coroutine2/detail/push_coroutine.hpp at line 4, boost/coroutine2/detail/push_coroutine.ipp at line 4, boost/coroutine2/detail/state.hpp at line 4, boost/coroutine2/detail/wrap.hpp at line 4, boost/coroutine2/fixedsize_stack.hpp at line 4, boost/coroutine2/pooled_fixedsize_stack.hpp at line 4, boost/coroutine2/protected_fixedsize_stack.hpp at line 4, boost/coroutine2/segmented_stack.hpp at line 4, boost/detail/dynamic_bitset.hpp at line 10, boost/dynamic_bitset.hpp at line 7, boost/dynamic_bitset/config.hpp at line 7, boost/dynamic_bitset/dynamic_bitset.hpp at line 12, boost/dynamic_bitset/serialization.hpp at line 6, boost/dynamic_bitset_fwd.hpp at line 7, boost/fiber/algo/algorithm.hpp at line 3, boost/fiber/algo/numa/work_stealing.hpp at line 4, boost/fiber/algo/round_robin.hpp at line 3, boost/fiber/algo/shared_work.hpp at line 4, boost/fiber/algo/work_stealing.hpp at line 4, boost/fiber/all.hpp at line 4, boost/fiber/barrier.hpp at line 4, boost/fiber/buffered_channel.hpp at line 4, boost/fiber/channel_op_status.hpp at line 3, boost/fiber/condition_variable.hpp at line 4, boost/fiber/context.hpp at line 4, boost/fiber/cuda/waitfor.hpp at line 4, boost/fiber/detail/config.hpp at line 4, boost/fiber/detail/context_spinlock_queue.hpp at line 4, boost/fiber/detail/context_spmc_queue.hpp at line 4, boost/fiber/detail/convert.hpp at line 4, boost/fiber/detail/cpu_relax.hpp at line 4, boost/fiber/detail/data.hpp at line 4, boost/fiber/detail/decay_copy.hpp at line 4, boost/fiber/detail/disable_overload.hpp at line 4, boost/fiber/detail/fss.hpp at line 4, boost/fiber/detail/futex.hpp at line 4, boost/fiber/detail/is_all_same.hpp at line 4, boost/fiber/detail/rtm.hpp at line 4, boost/fiber/detail/spinlock.hpp at line 4, boost/fiber/detail/spinlock_rtm.hpp at line 4, boost/fiber/detail/spinlock_status.hpp at line 4, boost/fiber/detail/spinlock_ttas.hpp at line 4, boost/fiber/detail/spinlock_ttas_adaptive.hpp at line 4, boost/fiber/detail/spinlock_ttas_adaptive_futex.hpp at line 4, boost/fiber/detail/spinlock_ttas_futex.hpp at line 4, boost/fiber/exceptions.hpp at line 4, boost/fiber/fiber.hpp at line 4, boost/fiber/fixedsize_stack.hpp at line 4, boost/fiber/fss.hpp at line 4, boost/fiber/future.hpp at line 4, boost/fiber/future/async.hpp at line 4, boost/fiber/future/detail/shared_state.hpp at line 4, boost/fiber/future/detail/shared_state_object.hpp at line 4, boost/fiber/future/detail/task_base.hpp at line 3, boost/fiber/future/detail/task_object.hpp at line 4, boost/fiber/future/future.hpp at line 4, boost/fiber/future/future_status.hpp at line 4, boost/fiber/future/packaged_task.hpp at line 4, boost/fiber/future/promise.hpp at line 4, boost/fiber/hip/waitfor.hpp at line 4, boost/fiber/mutex.hpp at line 4, boost/fiber/numa/pin_thread.hpp at line 4, boost/fiber/numa/topology.hpp at line 4, boost/fiber/operations.hpp at line 3, boost/fiber/policy.hpp at line 4, boost/fiber/pooled_fixedsize_stack.hpp at line 4, boost/fiber/properties.hpp at line 3, boost/fiber/protected_fixedsize_stack.hpp at line 4, boost/fiber/recursive_mutex.hpp at line 4, boost/fiber/recursive_timed_mutex.hpp at line 4, boost/fiber/scheduler.hpp at line 3, boost/fiber/segmented_stack.hpp at line 4, boost/fiber/timed_mutex.hpp at line 4, boost/fiber/type.hpp at line 4, boost/fiber/unbuffered_channel.hpp at line 4, boost/format/exceptions.hpp at line 8, boost/graph/two_graphs_common_spanning_trees.hpp at line 3, boost/integer/integer_log2.hpp at line 10, boost/intrusive/any_hook.hpp at line 6, boost/intrusive/avl_set.hpp at line 6, boost/intrusive/avl_set_hook.hpp at line 6, boost/intrusive/avltree.hpp at line 6, boost/intrusive/avltree_algorithms.hpp at line 7, boost/intrusive/bs_set.hpp at line 6, boost/intrusive/bs_set_hook.hpp at line 6, boost/intrusive/bstree.hpp at line 6, boost/intrusive/bstree_algorithms.hpp at line 6, boost/intrusive/circular_list_algorithms.hpp at line 7, boost/intrusive/circular_slist_algorithms.hpp at line 7, boost/intrusive/derivation_value_traits.hpp at line 6, boost/intrusive/detail/algo_type.hpp at line 6, boost/intrusive/detail/any_node_and_algorithms.hpp at line 6, boost/intrusive/detail/array_initializer.hpp at line 6, boost/intrusive/detail/assert.hpp at line 6, boost/intrusive/detail/avltree_node.hpp at line 6, boost/intrusive/detail/bstree_algorithms_base.hpp at line 6, boost/intrusive/detail/common_slist_algorithms.hpp at line 6, boost/intrusive/detail/config_begin.hpp at line 6, boost/intrusive/detail/config_end.hpp at line 6, boost/intrusive/detail/default_header_holder.hpp at line 6, boost/intrusive/detail/ebo_functor_holder.hpp at line 7, boost/intrusive/detail/empty_node_checker.hpp at line 6, boost/intrusive/detail/equal_to_value.hpp at line 6, boost/intrusive/detail/exception_disposer.hpp at line 6, boost/intrusive/detail/function_detector.hpp at line 6, boost/intrusive/detail/generic_hook.hpp at line 6, boost/intrusive/detail/get_value_traits.hpp at line 6, boost/intrusive/detail/hashtable_node.hpp at line 6, boost/intrusive/detail/hook_traits.hpp at line 6, boost/intrusive/detail/iiterator.hpp at line 6, boost/intrusive/detail/is_stateful_value_traits.hpp at line 6, boost/intrusive/detail/iterator.hpp at line 6, boost/intrusive/detail/key_nodeptr_comp.hpp at line 6, boost/intrusive/detail/list_iterator.hpp at line 7, boost/intrusive/detail/list_node.hpp at line 7, boost/intrusive/detail/math.hpp at line 6, boost/intrusive/detail/minimal_less_equal_header.hpp at line 6, boost/intrusive/detail/minimal_pair_header.hpp at line 6, boost/intrusive/detail/mpl.hpp at line 7, boost/intrusive/detail/node_cloner_disposer.hpp at line 6, boost/intrusive/detail/node_holder.hpp at line 6, boost/intrusive/detail/node_to_value.hpp at line 6, boost/intrusive/detail/parent_from_member.hpp at line 6, boost/intrusive/detail/rbtree_node.hpp at line 7, boost/intrusive/detail/reverse_iterator.hpp at line 6, boost/intrusive/detail/simple_disposers.hpp at line 6, boost/intrusive/detail/size_holder.hpp at line 6, boost/intrusive/detail/slist_iterator.hpp at line 7, boost/intrusive/detail/slist_node.hpp at line 7, boost/intrusive/detail/transform_iterator.hpp at line 6, boost/intrusive/detail/tree_iterator.hpp at line 6, boost/intrusive/detail/tree_node.hpp at line 6, boost/intrusive/detail/uncast.hpp at line 6, boost/intrusive/hashtable.hpp at line 6, boost/intrusive/intrusive_fwd.hpp at line 6, boost/intrusive/linear_slist_algorithms.hpp at line 7, boost/intrusive/link_mode.hpp at line 6, boost/intrusive/list.hpp at line 7, boost/intrusive/list_hook.hpp at line 7, boost/intrusive/member_value_traits.hpp at line 6, boost/intrusive/options.hpp at line 6, boost/intrusive/pack_options.hpp at line 6, boost/intrusive/parent_from_member.hpp at line 6, boost/intrusive/pointer_plus_bits.hpp at line 6, boost/intrusive/priority_compare.hpp at line 6, boost/intrusive/rbtree.hpp at line 6, boost/intrusive/rbtree_algorithms.hpp at line 7, boost/intrusive/set.hpp at line 7, boost/intrusive/set_hook.hpp at line 7, boost/intrusive/sg_set.hpp at line 6, boost/intrusive/sgtree.hpp at line 6, boost/intrusive/sgtree_algorithms.hpp at line 6, boost/intrusive/slist.hpp at line 7, boost/intrusive/slist_hook.hpp at line 7, boost/intrusive/splay_set.hpp at line 6, boost/intrusive/splaytree.hpp at line 6, boost/intrusive/splaytree_algorithms.hpp at line 6, boost/intrusive/treap.hpp at line 6, boost/intrusive/treap_algorithms.hpp at line 6, boost/intrusive/treap_set.hpp at line 6, boost/intrusive/trivial_value_traits.hpp at line 6, boost/intrusive/unordered_set.hpp at line 7, boost/intrusive/unordered_set_hook.hpp at line 7, boost/metaparse.hpp at line 3, boost/metaparse/accept.hpp at line 6, boost/metaparse/accept_tag.hpp at line 6, boost/metaparse/accept_when.hpp at line 6, boost/metaparse/alphanum.hpp at line 6, boost/metaparse/always.hpp at line 6, boost/metaparse/always_c.hpp at line 6, boost/metaparse/build_parser.hpp at line 6, boost/metaparse/change_error_message.hpp at line 6, boost/metaparse/config.hpp at line 6, boost/metaparse/debug_parsing_error.hpp at line 6, boost/metaparse/define_error.hpp at line 6, boost/metaparse/digit.hpp at line 6, boost/metaparse/digit_val.hpp at line 6, boost/metaparse/empty.hpp at line 6, boost/metaparse/entire_input.hpp at line 6, boost/metaparse/error/digit_expected.hpp at line 6, boost/metaparse/error/end_of_input_expected.hpp at line 6, boost/metaparse/error/index_out_of_range.hpp at line 6, boost/metaparse/error/letter_expected.hpp at line 6, boost/metaparse/error/literal_expected.hpp at line 6, boost/metaparse/error/none_of_the_expected_cases_found.hpp at line 6, boost/metaparse/error/unexpected_character.hpp at line 6, boost/metaparse/error/unexpected_end_of_input.hpp at line 6, boost/metaparse/error/unpaired.hpp at line 6, boost/metaparse/error/whitespace_expected.hpp at line 6, boost/metaparse/except.hpp at line 6, boost/metaparse/fail.hpp at line 6, boost/metaparse/fail_at_first_char_expected.hpp at line 6, boost/metaparse/fail_tag.hpp at line 6, boost/metaparse/first_of.hpp at line 6, boost/metaparse/foldl.hpp at line 6, boost/metaparse/foldl1.hpp at line 6, boost/metaparse/foldl_reject_incomplete.hpp at line 6, boost/metaparse/foldl_reject_incomplete1.hpp at line 6, boost/metaparse/foldl_reject_incomplete_start_with_parser.hpp at line 6, boost/metaparse/foldl_start_with_parser.hpp at line 6, boost/metaparse/foldr.hpp at line 6, boost/metaparse/foldr1.hpp at line 6, boost/metaparse/foldr_reject_incomplete.hpp at line 6, boost/metaparse/foldr_reject_incomplete1.hpp at line 6, boost/metaparse/foldr_start_with_parser.hpp at line 6, boost/metaparse/get_col.hpp at line 6, boost/metaparse/get_line.hpp at line 6, boost/metaparse/get_message.hpp at line 6, boost/metaparse/get_position.hpp at line 6, boost/metaparse/get_prev_char.hpp at line 6, boost/metaparse/get_remaining.hpp at line 6, boost/metaparse/get_result.hpp at line 6, boost/metaparse/grammar.hpp at line 6, boost/metaparse/if_.hpp at line 6, boost/metaparse/int_.hpp at line 6, boost/metaparse/is_error.hpp at line 6, boost/metaparse/iterate.hpp at line 6, boost/metaparse/iterate_c.hpp at line 6, boost/metaparse/keyword.hpp at line 6, boost/metaparse/last_of.hpp at line 6, boost/metaparse/letter.hpp at line 6, boost/metaparse/limit_one_char_except_size.hpp at line 6, boost/metaparse/limit_one_of_size.hpp at line 6, boost/metaparse/limit_sequence_size.hpp at line 6, boost/metaparse/limit_string_size.hpp at line 6, boost/metaparse/lit.hpp at line 6, boost/metaparse/lit_c.hpp at line 6, boost/metaparse/look_ahead.hpp at line 6, boost/metaparse/middle_of.hpp at line 6, boost/metaparse/next_char.hpp at line 6, boost/metaparse/next_line.hpp at line 6, boost/metaparse/nth_of.hpp at line 6, boost/metaparse/nth_of_c.hpp at line 6, boost/metaparse/one_char.hpp at line 6, boost/metaparse/one_char_except.hpp at line 6, boost/metaparse/one_char_except_c.hpp at line 6, boost/metaparse/one_of.hpp at line 6, boost/metaparse/one_of_c.hpp at line 6, boost/metaparse/optional.hpp at line 6, boost/metaparse/range.hpp at line 6, boost/metaparse/range_c.hpp at line 6, boost/metaparse/reject.hpp at line 6, boost/metaparse/repeated.hpp at line 6, boost/metaparse/repeated1.hpp at line 6, boost/metaparse/repeated_one_of.hpp at line 6, boost/metaparse/repeated_one_of1.hpp at line 6, boost/metaparse/repeated_reject_incomplete.hpp at line 6, boost/metaparse/repeated_reject_incomplete1.hpp at line 6, boost/metaparse/return_.hpp at line 6, boost/metaparse/sequence.hpp at line 6, boost/metaparse/sequence_apply.hpp at line 6, boost/metaparse/source_position.hpp at line 6, boost/metaparse/source_position_tag.hpp at line 6, boost/metaparse/space.hpp at line 6, boost/metaparse/spaces.hpp at line 6, boost/metaparse/start.hpp at line 6, boost/metaparse/string.hpp at line 3, boost/metaparse/string_tag.hpp at line 6, boost/metaparse/token.hpp at line 6, boost/metaparse/transform.hpp at line 6, boost/metaparse/transform_error.hpp at line 6, boost/metaparse/transform_error_message.hpp at line 6, boost/metaparse/unless_error.hpp at line 6, boost/metaparse/util/digit_to_int.hpp at line 6, boost/metaparse/util/digit_to_int_c.hpp at line 6, boost/metaparse/util/in_range.hpp at line 6, boost/metaparse/util/in_range_c.hpp at line 6, boost/metaparse/util/int_to_digit.hpp at line 6, boost/metaparse/util/int_to_digit_c.hpp at line 6, boost/metaparse/util/is_digit.hpp at line 6, boost/metaparse/util/is_lcase_letter.hpp at line 6, boost/metaparse/util/is_letter.hpp at line 6, boost/metaparse/util/is_ucase_letter.hpp at line 6, boost/metaparse/util/is_whitespace.hpp at line 6, boost/metaparse/util/is_whitespace_c.hpp at line 6, boost/metaparse/v1/accept.hpp at line 6, boost/metaparse/v1/accept_tag.hpp at line 6, boost/metaparse/v1/accept_when.hpp at line 6, boost/metaparse/v1/alphanum.hpp at line 6, boost/metaparse/v1/always.hpp at line 6, boost/metaparse/v1/always_c.hpp at line 6, boost/metaparse/v1/build_parser.hpp at line 6, boost/metaparse/v1/change_error_message.hpp at line 6, boost/metaparse/v1/cpp11/first_of.hpp at line 6, boost/metaparse/v1/cpp11/fwd/string.hpp at line 6, boost/metaparse/v1/cpp11/impl/at_c.hpp at line 6, boost/metaparse/v1/cpp11/impl/concat.hpp at line 6, boost/metaparse/v1/cpp11/impl/empty_string.hpp at line 6, boost/metaparse/v1/cpp11/impl/nth_of_c.hpp at line 6, boost/metaparse/v1/cpp11/impl/nth_of_c_skip_remaining.hpp at line 6, boost/metaparse/v1/cpp11/impl/pop_back.hpp at line 6, boost/metaparse/v1/cpp11/impl/pop_front.hpp at line 6, boost/metaparse/v1/cpp11/impl/push_back_c.hpp at line 6, boost/metaparse/v1/cpp11/impl/push_front_c.hpp at line 6, boost/metaparse/v1/cpp11/impl/remove_trailing_no_chars.hpp at line 6, boost/metaparse/v1/cpp11/impl/size.hpp at line 6, boost/metaparse/v1/cpp11/impl/string_at.hpp at line 6, boost/metaparse/v1/cpp11/last_of.hpp at line 6, boost/metaparse/v1/cpp11/nth_of.hpp at line 6, boost/metaparse/v1/cpp11/nth_of_c.hpp at line 6, boost/metaparse/v1/cpp11/string.hpp at line 6, boost/metaparse/v1/cpp98/first_of.hpp at line 6, boost/metaparse/v1/cpp98/fwd/string.hpp at line 6, boost/metaparse/v1/cpp98/impl/at_c.hpp at line 6, boost/metaparse/v1/cpp98/impl/empty_string.hpp at line 6, boost/metaparse/v1/cpp98/impl/nth_of_c.hpp at line 6, boost/metaparse/v1/cpp98/impl/nth_of_c_impl.hpp at line 6, boost/metaparse/v1/cpp98/impl/pop_back.hpp at line 6, boost/metaparse/v1/cpp98/impl/pop_front.hpp at line 6, boost/metaparse/v1/cpp98/impl/push_back_c.hpp at line 6, boost/metaparse/v1/cpp98/impl/push_front_c.hpp at line 6, boost/metaparse/v1/cpp98/impl/size.hpp at line 6, boost/metaparse/v1/cpp98/impl/skip_seq.hpp at line 6, boost/metaparse/v1/cpp98/impl/update_c.hpp at line 6, boost/metaparse/v1/cpp98/last_of.hpp at line 6, boost/metaparse/v1/cpp98/nth_of.hpp at line 6, boost/metaparse/v1/cpp98/nth_of_c.hpp at line 6, boost/metaparse/v1/cpp98/string.hpp at line 6, boost/metaparse/v1/debug_parsing_error.hpp at line 6, boost/metaparse/v1/define_error.hpp at line 6, boost/metaparse/v1/digit.hpp at line 6, boost/metaparse/v1/digit_val.hpp at line 6, boost/metaparse/v1/empty.hpp at line 6, boost/metaparse/v1/entire_input.hpp at line 6, boost/metaparse/v1/error/digit_expected.hpp at line 6, boost/metaparse/v1/error/end_of_input_expected.hpp at line 6, boost/metaparse/v1/error/expected_to_fail.hpp at line 6, boost/metaparse/v1/error/index_out_of_range.hpp at line 6, boost/metaparse/v1/error/letter_expected.hpp at line 6, boost/metaparse/v1/error/literal_expected.hpp at line 6, boost/metaparse/v1/error/none_of_the_expected_cases_found.hpp at line 6, boost/metaparse/v1/error/unexpected_character.hpp at line 6, boost/metaparse/v1/error/unexpected_end_of_input.hpp at line 6, boost/metaparse/v1/error/unpaired.hpp at line 6, boost/metaparse/v1/error/whitespace_expected.hpp at line 6, boost/metaparse/v1/except.hpp at line 6, boost/metaparse/v1/fail.hpp at line 6, boost/metaparse/v1/fail_at_first_char_expected.hpp at line 6, boost/metaparse/v1/fail_tag.hpp at line 6, boost/metaparse/v1/first_of.hpp at line 6, boost/metaparse/v1/foldl.hpp at line 6, boost/metaparse/v1/foldl1.hpp at line 6, boost/metaparse/v1/foldl_reject_incomplete.hpp at line 6, boost/metaparse/v1/foldl_reject_incomplete1.hpp at line 6, boost/metaparse/v1/foldl_reject_incomplete_start_with_parser.hpp at line 6, boost/metaparse/v1/foldl_start_with_parser.hpp at line 6, boost/metaparse/v1/foldr.hpp at line 6, boost/metaparse/v1/foldr1.hpp at line 6, boost/metaparse/v1/foldr_reject_incomplete.hpp at line 6, boost/metaparse/v1/foldr_reject_incomplete1.hpp at line 6, boost/metaparse/v1/foldr_start_with_parser.hpp at line 6, boost/metaparse/v1/fwd/accept.hpp at line 6, boost/metaparse/v1/fwd/build_parser.hpp at line 6, boost/metaparse/v1/fwd/get_col.hpp at line 6, boost/metaparse/v1/fwd/get_line.hpp at line 6, boost/metaparse/v1/fwd/get_message.hpp at line 6, boost/metaparse/v1/fwd/get_position.hpp at line 6, boost/metaparse/v1/fwd/get_prev_char.hpp at line 6, boost/metaparse/v1/fwd/get_remaining.hpp at line 6, boost/metaparse/v1/fwd/get_result.hpp at line 6, boost/metaparse/v1/fwd/next_char.hpp at line 6, boost/metaparse/v1/fwd/next_line.hpp at line 6, boost/metaparse/v1/fwd/reject.hpp at line 6, boost/metaparse/v1/fwd/source_position.hpp at line 6, boost/metaparse/v1/fwd/string.hpp at line 6, boost/metaparse/v1/get_col.hpp at line 6, boost/metaparse/v1/get_line.hpp at line 6, boost/metaparse/v1/get_message.hpp at line 6, boost/metaparse/v1/get_position.hpp at line 6, boost/metaparse/v1/get_prev_char.hpp at line 6, boost/metaparse/v1/get_remaining.hpp at line 6, boost/metaparse/v1/get_result.hpp at line 6, boost/metaparse/v1/grammar.hpp at line 6, boost/metaparse/v1/if_.hpp at line 6, boost/metaparse/v1/impl/apply_parser.hpp at line 6, boost/metaparse/v1/impl/assert_string_length.hpp at line 6, boost/metaparse/v1/impl/at_c.hpp at line 6, boost/metaparse/v1/impl/back_inserter.hpp at line 6, boost/metaparse/v1/impl/front_inserter.hpp at line 6, boost/metaparse/v1/impl/fwd/iterate_impl.hpp at line 6, boost/metaparse/v1/impl/has_type.hpp at line 6, boost/metaparse/v1/impl/is_any.hpp at line 6, boost/metaparse/v1/impl/is_char_c.hpp at line 6, boost/metaparse/v1/impl/iterate_impl.hpp at line 6, boost/metaparse/v1/impl/iterate_impl_unchecked.hpp at line 6, boost/metaparse/v1/impl/later_result.hpp at line 6, boost/metaparse/v1/impl/next_digit.hpp at line 6, boost/metaparse/v1/impl/no_char.hpp at line 6, boost/metaparse/v1/impl/one_char_except_not_used.hpp at line 6, boost/metaparse/v1/impl/one_of.hpp at line 6, boost/metaparse/v1/impl/one_of_fwd_op.hpp at line 6, boost/metaparse/v1/impl/returns.hpp at line 6, boost/metaparse/v1/impl/sequence.hpp at line 6, boost/metaparse/v1/impl/sequence_impl.hpp at line 6, boost/metaparse/v1/impl/string_iterator.hpp at line 6, boost/metaparse/v1/impl/string_iterator_tag.hpp at line 6, boost/metaparse/v1/impl/void_.hpp at line 6, boost/metaparse/v1/int_.hpp at line 6, boost/metaparse/v1/is_error.hpp at line 6, boost/metaparse/v1/iterate.hpp at line 6, boost/metaparse/v1/iterate_c.hpp at line 6, boost/metaparse/v1/keyword.hpp at line 6, boost/metaparse/v1/last_of.hpp at line 6, boost/metaparse/v1/letter.hpp at line 6, boost/metaparse/v1/lit.hpp at line 6, boost/metaparse/v1/lit_c.hpp at line 6, boost/metaparse/v1/look_ahead.hpp at line 6, boost/metaparse/v1/middle_of.hpp at line 6, boost/metaparse/v1/next_char.hpp at line 6, boost/metaparse/v1/next_line.hpp at line 6, boost/metaparse/v1/nth_of.hpp at line 6, boost/metaparse/v1/nth_of_c.hpp at line 6, boost/metaparse/v1/one_char.hpp at line 6, boost/metaparse/v1/one_char_except.hpp at line 6, boost/metaparse/v1/one_char_except_c.hpp at line 6, boost/metaparse/v1/one_of.hpp at line 6, boost/metaparse/v1/one_of_c.hpp at line 6, boost/metaparse/v1/optional.hpp at line 6, boost/metaparse/v1/range.hpp at line 6, boost/metaparse/v1/range_c.hpp at line 6, boost/metaparse/v1/reject.hpp at line 6, boost/metaparse/v1/repeated.hpp at line 6, boost/metaparse/v1/repeated1.hpp at line 6, boost/metaparse/v1/repeated_one_of.hpp at line 6, boost/metaparse/v1/repeated_one_of1.hpp at line 6, boost/metaparse/v1/repeated_reject_incomplete.hpp at line 6, boost/metaparse/v1/repeated_reject_incomplete1.hpp at line 6, boost/metaparse/v1/return_.hpp at line 6, boost/metaparse/v1/sequence.hpp at line 6, boost/metaparse/v1/sequence_apply.hpp at line 6, boost/metaparse/v1/source_position.hpp at line 6, boost/metaparse/v1/source_position_tag.hpp at line 6, boost/metaparse/v1/space.hpp at line 6, boost/metaparse/v1/spaces.hpp at line 6, boost/metaparse/v1/start.hpp at line 6, boost/metaparse/v1/string.hpp at line 6, boost/metaparse/v1/string_tag.hpp at line 6, boost/metaparse/v1/swap.hpp at line 6, boost/metaparse/v1/token.hpp at line 6, boost/metaparse/v1/transform.hpp at line 6, boost/metaparse/v1/transform_error.hpp at line 6, boost/metaparse/v1/transform_error_message.hpp at line 6, boost/metaparse/v1/unless_error.hpp at line 6, boost/metaparse/v1/util/digit_to_int.hpp at line 6, boost/metaparse/v1/util/digit_to_int_c.hpp at line 6, boost/metaparse/v1/util/in_range.hpp at line 6, boost/metaparse/v1/util/in_range_c.hpp at line 6, boost/metaparse/v1/util/int_to_digit.hpp at line 6, boost/metaparse/v1/util/int_to_digit_c.hpp at line 6, boost/metaparse/v1/util/is_digit.hpp at line 6, boost/metaparse/v1/util/is_lcase_letter.hpp at line 6, boost/metaparse/v1/util/is_letter.hpp at line 6, boost/metaparse/v1/util/is_ucase_letter.hpp at line 6, boost/metaparse/v1/util/is_whitespace.hpp at line 6, boost/metaparse/v1/util/is_whitespace_c.hpp at line 6, boost/metaparse/version.hpp at line 6, boost/move/detail/reverse_iterator.hpp at line 6, boost/move/detail/to_raw_pointer.hpp at line 6, boost/mpi/cartesian_communicator.hpp at line 3, boost/mpi/detail/antiques.hpp at line 3, boost/mpi/detail/offsets.hpp at line 3, boost/multiprecision/detail/functions/constants.hpp at line 3, boost/multiprecision/detail/functions/pow.hpp at line 5, boost/multiprecision/detail/functions/trig.hpp at line 5, boost/non_type.hpp at line 6, boost/pending/lowest_bit.hpp at line 9, boost/sort/pdqsort/pdqsort.hpp at line 5, boost/sort/sort.hpp at line 5, boost/sort/spreadsort/detail/constants.hpp at line 5, boost/sort/spreadsort/detail/float_sort.hpp at line 5, boost/sort/spreadsort/detail/integer_sort.hpp at line 5, boost/sort/spreadsort/detail/spreadsort_common.hpp at line 6, boost/sort/spreadsort/detail/string_sort.hpp at line 5, boost/sort/spreadsort/float_sort.hpp at line 5, boost/sort/spreadsort/integer_sort.hpp at line 5, boost/sort/spreadsort/spreadsort.hpp at line 5, boost/sort/spreadsort/string_sort.hpp at line 5, libs/context/src/continuation.cpp at line 4, libs/context/src/execution_context.cpp at line 4, libs/context/src/fiber.cpp at line 4, libs/context/src/posix/stack_traits.cpp at line 4, libs/context/src/untested.cpp at line 4, libs/context/src/windows/stack_traits.cpp at line 4, libs/coroutine/src/detail/coroutine_context.cpp at line 4, libs/coroutine/src/exceptions.cpp at line 4, libs/coroutine/src/posix/stack_traits.cpp at line 4, libs/coroutine/src/windows/stack_traits.cpp at line 4
+ License text:
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/config/platform/cloudabi.hpp [2:4]
+ boost/container/detail/function_detector.hpp [5:7]
+ boost/container/detail/minimal_char_traits_header.hpp [5:7]
+ boost/container/options.hpp [5:7]
+ boost/context/all.hpp [3:5]
+ boost/context/continuation.hpp [3:5]
+ boost/context/continuation_fcontext.hpp [3:5]
+ boost/context/continuation_ucontext.hpp [3:5]
+ boost/context/continuation_winfib.hpp [3:5]
+ boost/context/detail/apply.hpp [3:5]
+ boost/context/detail/config.hpp [3:5]
+ boost/context/detail/disable_overload.hpp [3:5]
+ boost/context/detail/exception.hpp [3:5]
+ boost/context/detail/exchange.hpp [3:5]
+ boost/context/detail/externc.hpp [3:5]
+ boost/context/detail/fcontext.hpp [3:5]
+ boost/context/detail/index_sequence.hpp [3:5]
+ boost/context/detail/invoke.hpp [3:5]
+ boost/context/detail/prefetch.hpp [2:4]
+ boost/context/detail/tuple.hpp [3:5]
+ boost/context/execution_context.hpp [3:5]
+ boost/context/execution_context_v1.hpp [3:5]
+ boost/context/execution_context_v2.hpp [3:5]
+ boost/context/execution_context_v2_void.ipp [3:5]
+ boost/context/fiber.hpp [3:5]
+ boost/context/fiber_fcontext.hpp [3:5]
+ boost/context/fiber_ucontext.hpp [3:5]
+ boost/context/fiber_winfib.hpp [3:5]
+ boost/context/fixedsize_stack.hpp [3:5]
+ boost/context/flags.hpp [3:5]
+ boost/context/pooled_fixedsize_stack.hpp [3:5]
+ boost/context/posix/protected_fixedsize_stack.hpp [3:5]
+ boost/context/posix/segmented_stack.hpp [3:5]
+ boost/context/preallocated.hpp [3:5]
+ boost/context/protected_fixedsize_stack.hpp [3:5]
+ boost/context/segmented_stack.hpp [3:5]
+ boost/context/stack_context.hpp [3:5]
+ boost/context/stack_traits.hpp [3:5]
+ boost/context/windows/protected_fixedsize_stack.hpp [3:5]
+ boost/coroutine/all.hpp [3:5]
+ boost/coroutine/asymmetric_coroutine.hpp [3:5]
+ boost/coroutine/attributes.hpp [3:5]
+ boost/coroutine/coroutine.hpp [3:5]
+ boost/coroutine/detail/config.hpp [3:5]
+ boost/coroutine/detail/coroutine_context.hpp [3:5]
+ boost/coroutine/detail/data.hpp [3:5]
+ boost/coroutine/detail/flags.hpp [3:5]
+ boost/coroutine/detail/parameters.hpp [3:5]
+ boost/coroutine/detail/preallocated.hpp [3:5]
+ boost/coroutine/detail/pull_coroutine_impl.hpp [3:5]
+ boost/coroutine/detail/pull_coroutine_object.hpp [3:5]
+ boost/coroutine/detail/pull_coroutine_synthesized.hpp [3:5]
+ boost/coroutine/detail/push_coroutine_impl.hpp [3:5]
+ boost/coroutine/detail/push_coroutine_object.hpp [3:5]
+ boost/coroutine/detail/push_coroutine_synthesized.hpp [3:5]
+ boost/coroutine/detail/setup.hpp [3:5]
+ boost/coroutine/detail/symmetric_coroutine_call.hpp [3:5]
+ boost/coroutine/detail/symmetric_coroutine_impl.hpp [3:5]
+ boost/coroutine/detail/symmetric_coroutine_object.hpp [3:5]
+ boost/coroutine/detail/symmetric_coroutine_yield.hpp [3:5]
+ boost/coroutine/detail/trampoline.hpp [3:5]
+ boost/coroutine/detail/trampoline_pull.hpp [3:5]
+ boost/coroutine/detail/trampoline_push.hpp [3:5]
+ boost/coroutine/exceptions.hpp [3:5]
+ boost/coroutine/flags.hpp [3:5]
+ boost/coroutine/posix/protected_stack_allocator.hpp [3:5]
+ boost/coroutine/posix/segmented_stack_allocator.hpp [3:5]
+ boost/coroutine/protected_stack_allocator.hpp [3:5]
+ boost/coroutine/segmented_stack_allocator.hpp [3:5]
+ boost/coroutine/stack_allocator.hpp [3:5]
+ boost/coroutine/stack_context.hpp [3:5]
+ boost/coroutine/stack_traits.hpp [3:5]
+ boost/coroutine/standard_stack_allocator.hpp [3:5]
+ boost/coroutine/symmetric_coroutine.hpp [3:5]
+ boost/coroutine/windows/protected_stack_allocator.hpp [3:5]
+ boost/coroutine2/all.hpp [3:5]
+ boost/coroutine2/coroutine.hpp [3:5]
+ boost/coroutine2/detail/config.hpp [3:5]
+ boost/coroutine2/detail/coroutine.hpp [3:5]
+ boost/coroutine2/detail/create_control_block.ipp [3:5]
+ boost/coroutine2/detail/decay_copy.hpp [3:5]
+ boost/coroutine2/detail/disable_overload.hpp [3:5]
+ boost/coroutine2/detail/forced_unwind.hpp [3:5]
+ boost/coroutine2/detail/pull_control_block_cc.hpp [3:5]
+ boost/coroutine2/detail/pull_control_block_cc.ipp [3:5]
+ boost/coroutine2/detail/pull_coroutine.hpp [3:5]
+ boost/coroutine2/detail/pull_coroutine.ipp [3:5]
+ boost/coroutine2/detail/push_control_block_cc.hpp [3:5]
+ boost/coroutine2/detail/push_control_block_cc.ipp [3:5]
+ boost/coroutine2/detail/push_coroutine.hpp [3:5]
+ boost/coroutine2/detail/push_coroutine.ipp [3:5]
+ boost/coroutine2/detail/state.hpp [3:5]
+ boost/coroutine2/detail/wrap.hpp [3:5]
+ boost/coroutine2/fixedsize_stack.hpp [3:5]
+ boost/coroutine2/pooled_fixedsize_stack.hpp [3:5]
+ boost/coroutine2/protected_fixedsize_stack.hpp [3:5]
+ boost/coroutine2/segmented_stack.hpp [3:5]
+ boost/detail/dynamic_bitset.hpp [9:11]
+ boost/dynamic_bitset.hpp [6:8]
+ boost/dynamic_bitset/config.hpp [6:8]
+ boost/dynamic_bitset/dynamic_bitset.hpp [11:13]
+ boost/dynamic_bitset/serialization.hpp [5:7]
+ boost/dynamic_bitset_fwd.hpp [6:8]
+ boost/fiber/algo/algorithm.hpp [2:4]
+ boost/fiber/algo/numa/work_stealing.hpp [3:5]
+ boost/fiber/algo/round_robin.hpp [2:4]
+ boost/fiber/algo/shared_work.hpp [3:5]
+ boost/fiber/algo/work_stealing.hpp [3:5]
+ boost/fiber/all.hpp [3:5]
+ boost/fiber/barrier.hpp [3:5]
+ boost/fiber/buffered_channel.hpp [3:5]
+ boost/fiber/channel_op_status.hpp [2:4]
+ boost/fiber/condition_variable.hpp [3:5]
+ boost/fiber/context.hpp [3:5]
+ boost/fiber/cuda/waitfor.hpp [3:5]
+ boost/fiber/detail/config.hpp [3:5]
+ boost/fiber/detail/context_spinlock_queue.hpp [3:5]
+ boost/fiber/detail/context_spmc_queue.hpp [3:5]
+ boost/fiber/detail/convert.hpp [3:5]
+ boost/fiber/detail/cpu_relax.hpp [3:5]
+ boost/fiber/detail/data.hpp [3:5]
+ boost/fiber/detail/decay_copy.hpp [3:5]
+ boost/fiber/detail/disable_overload.hpp [3:5]
+ boost/fiber/detail/fss.hpp [3:5]
+ boost/fiber/detail/futex.hpp [3:5]
+ boost/fiber/detail/is_all_same.hpp [3:5]
+ boost/fiber/detail/rtm.hpp [3:5]
+ boost/fiber/detail/spinlock.hpp [3:5]
+ boost/fiber/detail/spinlock_rtm.hpp [3:5]
+ boost/fiber/detail/spinlock_status.hpp [3:5]
+ boost/fiber/detail/spinlock_ttas.hpp [3:5]
+ boost/fiber/detail/spinlock_ttas_adaptive.hpp [3:5]
+ boost/fiber/detail/spinlock_ttas_adaptive_futex.hpp [3:5]
+ boost/fiber/detail/spinlock_ttas_futex.hpp [3:5]
+ boost/fiber/exceptions.hpp [3:5]
+ boost/fiber/fiber.hpp [3:5]
+ boost/fiber/fixedsize_stack.hpp [3:5]
+ boost/fiber/fss.hpp [3:5]
+ boost/fiber/future.hpp [3:5]
+ boost/fiber/future/async.hpp [3:5]
+ boost/fiber/future/detail/shared_state.hpp [3:5]
+ boost/fiber/future/detail/shared_state_object.hpp [3:5]
+ boost/fiber/future/detail/task_base.hpp [2:4]
+ boost/fiber/future/detail/task_object.hpp [3:5]
+ boost/fiber/future/future.hpp [3:5]
+ boost/fiber/future/future_status.hpp [3:5]
+ boost/fiber/future/packaged_task.hpp [3:5]
+ boost/fiber/future/promise.hpp [3:5]
+ boost/fiber/hip/waitfor.hpp [3:5]
+ boost/fiber/mutex.hpp [3:5]
+ boost/fiber/numa/pin_thread.hpp [3:5]
+ boost/fiber/numa/topology.hpp [3:5]
+ boost/fiber/operations.hpp [2:4]
+ boost/fiber/policy.hpp [3:5]
+ boost/fiber/pooled_fixedsize_stack.hpp [3:5]
+ boost/fiber/properties.hpp [2:4]
+ boost/fiber/protected_fixedsize_stack.hpp [3:5]
+ boost/fiber/recursive_mutex.hpp [3:5]
+ boost/fiber/recursive_timed_mutex.hpp [3:5]
+ boost/fiber/scheduler.hpp [2:4]
+ boost/fiber/segmented_stack.hpp [3:5]
+ boost/fiber/timed_mutex.hpp [3:5]
+ boost/fiber/type.hpp [3:5]
+ boost/fiber/unbuffered_channel.hpp [3:5]
+ boost/format/exceptions.hpp [7:9]
+ boost/graph/two_graphs_common_spanning_trees.hpp [2:4]
+ boost/integer/integer_log2.hpp [9:11]
+ boost/intrusive/any_hook.hpp [5:7]
+ boost/intrusive/avl_set.hpp [5:7]
+ boost/intrusive/avl_set_hook.hpp [5:7]
+ boost/intrusive/avltree.hpp [5:7]
+ boost/intrusive/avltree_algorithms.hpp [6:8]
+ boost/intrusive/bs_set.hpp [5:7]
+ boost/intrusive/bs_set_hook.hpp [5:7]
+ boost/intrusive/bstree.hpp [5:7]
+ boost/intrusive/bstree_algorithms.hpp [5:7]
+ boost/intrusive/circular_list_algorithms.hpp [6:8]
+ boost/intrusive/circular_slist_algorithms.hpp [6:8]
+ boost/intrusive/derivation_value_traits.hpp [5:7]
+ boost/intrusive/detail/algo_type.hpp [5:7]
+ boost/intrusive/detail/any_node_and_algorithms.hpp [5:7]
+ boost/intrusive/detail/array_initializer.hpp [5:7]
+ boost/intrusive/detail/assert.hpp [5:7]
+ boost/intrusive/detail/avltree_node.hpp [5:7]
+ boost/intrusive/detail/bstree_algorithms_base.hpp [5:7]
+ boost/intrusive/detail/common_slist_algorithms.hpp [5:7]
+ boost/intrusive/detail/config_begin.hpp [5:7]
+ boost/intrusive/detail/config_end.hpp [5:7]
+ boost/intrusive/detail/default_header_holder.hpp [5:7]
+ boost/intrusive/detail/ebo_functor_holder.hpp [6:8]
+ boost/intrusive/detail/empty_node_checker.hpp [5:7]
+ boost/intrusive/detail/equal_to_value.hpp [5:7]
+ boost/intrusive/detail/exception_disposer.hpp [5:7]
+ boost/intrusive/detail/function_detector.hpp [5:7]
+ boost/intrusive/detail/generic_hook.hpp [5:7]
+ boost/intrusive/detail/get_value_traits.hpp [5:7]
+ boost/intrusive/detail/hashtable_node.hpp [5:7]
+ boost/intrusive/detail/hook_traits.hpp [5:7]
+ boost/intrusive/detail/iiterator.hpp [5:7]
+ boost/intrusive/detail/is_stateful_value_traits.hpp [5:7]
+ boost/intrusive/detail/iterator.hpp [5:7]
+ boost/intrusive/detail/key_nodeptr_comp.hpp [5:7]
+ boost/intrusive/detail/list_iterator.hpp [6:8]
+ boost/intrusive/detail/list_node.hpp [6:8]
+ boost/intrusive/detail/math.hpp [5:7]
+ boost/intrusive/detail/minimal_less_equal_header.hpp [5:7]
+ boost/intrusive/detail/minimal_pair_header.hpp [5:7]
+ boost/intrusive/detail/mpl.hpp [6:8]
+ boost/intrusive/detail/node_cloner_disposer.hpp [5:7]
+ boost/intrusive/detail/node_holder.hpp [5:7]
+ boost/intrusive/detail/node_to_value.hpp [5:7]
+ boost/intrusive/detail/parent_from_member.hpp [5:7]
+ boost/intrusive/detail/rbtree_node.hpp [6:8]
+ boost/intrusive/detail/reverse_iterator.hpp [5:7]
+ boost/intrusive/detail/simple_disposers.hpp [5:7]
+ boost/intrusive/detail/size_holder.hpp [5:7]
+ boost/intrusive/detail/slist_iterator.hpp [6:8]
+ boost/intrusive/detail/slist_node.hpp [6:8]
+ boost/intrusive/detail/transform_iterator.hpp [5:7]
+ boost/intrusive/detail/tree_iterator.hpp [5:7]
+ boost/intrusive/detail/tree_node.hpp [5:7]
+ boost/intrusive/detail/uncast.hpp [5:7]
+ boost/intrusive/hashtable.hpp [5:7]
+ boost/intrusive/intrusive_fwd.hpp [5:7]
+ boost/intrusive/linear_slist_algorithms.hpp [6:8]
+ boost/intrusive/link_mode.hpp [5:7]
+ boost/intrusive/list.hpp [6:8]
+ boost/intrusive/list_hook.hpp [6:8]
+ boost/intrusive/member_value_traits.hpp [5:7]
+ boost/intrusive/options.hpp [5:7]
+ boost/intrusive/pack_options.hpp [5:7]
+ boost/intrusive/parent_from_member.hpp [5:7]
+ boost/intrusive/pointer_plus_bits.hpp [5:7]
+ boost/intrusive/priority_compare.hpp [5:7]
+ boost/intrusive/rbtree.hpp [5:7]
+ boost/intrusive/rbtree_algorithms.hpp [6:8]
+ boost/intrusive/set.hpp [6:8]
+ boost/intrusive/set_hook.hpp [6:8]
+ boost/intrusive/sg_set.hpp [5:7]
+ boost/intrusive/sgtree.hpp [5:7]
+ boost/intrusive/sgtree_algorithms.hpp [5:7]
+ boost/intrusive/slist.hpp [6:8]
+ boost/intrusive/slist_hook.hpp [6:8]
+ boost/intrusive/splay_set.hpp [5:7]
+ boost/intrusive/splaytree.hpp [5:7]
+ boost/intrusive/splaytree_algorithms.hpp [5:7]
+ boost/intrusive/treap.hpp [5:7]
+ boost/intrusive/treap_algorithms.hpp [5:7]
+ boost/intrusive/treap_set.hpp [5:7]
+ boost/intrusive/trivial_value_traits.hpp [5:7]
+ boost/intrusive/unordered_set.hpp [6:8]
+ boost/intrusive/unordered_set_hook.hpp [6:8]
+ boost/metaparse.hpp [2:4]
+ boost/metaparse/accept.hpp [5:7]
+ boost/metaparse/accept_tag.hpp [5:7]
+ boost/metaparse/accept_when.hpp [5:7]
+ boost/metaparse/alphanum.hpp [5:7]
+ boost/metaparse/always.hpp [5:7]
+ boost/metaparse/always_c.hpp [5:7]
+ boost/metaparse/build_parser.hpp [5:7]
+ boost/metaparse/change_error_message.hpp [5:7]
+ boost/metaparse/config.hpp [5:7]
+ boost/metaparse/debug_parsing_error.hpp [5:7]
+ boost/metaparse/define_error.hpp [5:7]
+ boost/metaparse/digit.hpp [5:7]
+ boost/metaparse/digit_val.hpp [5:7]
+ boost/metaparse/empty.hpp [5:7]
+ boost/metaparse/entire_input.hpp [5:7]
+ boost/metaparse/error/digit_expected.hpp [5:7]
+ boost/metaparse/error/end_of_input_expected.hpp [5:7]
+ boost/metaparse/error/index_out_of_range.hpp [5:7]
+ boost/metaparse/error/letter_expected.hpp [5:7]
+ boost/metaparse/error/literal_expected.hpp [5:7]
+ boost/metaparse/error/none_of_the_expected_cases_found.hpp [5:7]
+ boost/metaparse/error/unexpected_character.hpp [5:7]
+ boost/metaparse/error/unexpected_end_of_input.hpp [5:7]
+ boost/metaparse/error/unpaired.hpp [5:7]
+ boost/metaparse/error/whitespace_expected.hpp [5:7]
+ boost/metaparse/except.hpp [5:7]
+ boost/metaparse/fail.hpp [5:7]
+ boost/metaparse/fail_at_first_char_expected.hpp [5:7]
+ boost/metaparse/fail_tag.hpp [5:7]
+ boost/metaparse/first_of.hpp [5:7]
+ boost/metaparse/foldl.hpp [5:7]
+ boost/metaparse/foldl1.hpp [5:7]
+ boost/metaparse/foldl_reject_incomplete.hpp [5:7]
+ boost/metaparse/foldl_reject_incomplete1.hpp [5:7]
+ boost/metaparse/foldl_reject_incomplete_start_with_parser.hpp [5:7]
+ boost/metaparse/foldl_start_with_parser.hpp [5:7]
+ boost/metaparse/foldr.hpp [5:7]
+ boost/metaparse/foldr1.hpp [5:7]
+ boost/metaparse/foldr_reject_incomplete.hpp [5:7]
+ boost/metaparse/foldr_reject_incomplete1.hpp [5:7]
+ boost/metaparse/foldr_start_with_parser.hpp [5:7]
+ boost/metaparse/get_col.hpp [5:7]
+ boost/metaparse/get_line.hpp [5:7]
+ boost/metaparse/get_message.hpp [5:7]
+ boost/metaparse/get_position.hpp [5:7]
+ boost/metaparse/get_prev_char.hpp [5:7]
+ boost/metaparse/get_remaining.hpp [5:7]
+ boost/metaparse/get_result.hpp [5:7]
+ boost/metaparse/grammar.hpp [5:7]
+ boost/metaparse/if_.hpp [5:7]
+ boost/metaparse/int_.hpp [5:7]
+ boost/metaparse/is_error.hpp [5:7]
+ boost/metaparse/iterate.hpp [5:7]
+ boost/metaparse/iterate_c.hpp [5:7]
+ boost/metaparse/keyword.hpp [5:7]
+ boost/metaparse/last_of.hpp [5:7]
+ boost/metaparse/letter.hpp [5:7]
+ boost/metaparse/limit_one_char_except_size.hpp [5:7]
+ boost/metaparse/limit_one_of_size.hpp [5:7]
+ boost/metaparse/limit_sequence_size.hpp [5:7]
+ boost/metaparse/limit_string_size.hpp [5:7]
+ boost/metaparse/lit.hpp [5:7]
+ boost/metaparse/lit_c.hpp [5:7]
+ boost/metaparse/look_ahead.hpp [5:7]
+ boost/metaparse/middle_of.hpp [5:7]
+ boost/metaparse/next_char.hpp [5:7]
+ boost/metaparse/next_line.hpp [5:7]
+ boost/metaparse/nth_of.hpp [5:7]
+ boost/metaparse/nth_of_c.hpp [5:7]
+ boost/metaparse/one_char.hpp [5:7]
+ boost/metaparse/one_char_except.hpp [5:7]
+ boost/metaparse/one_char_except_c.hpp [5:7]
+ boost/metaparse/one_of.hpp [5:7]
+ boost/metaparse/one_of_c.hpp [5:7]
+ boost/metaparse/optional.hpp [5:7]
+ boost/metaparse/range.hpp [5:7]
+ boost/metaparse/range_c.hpp [5:7]
+ boost/metaparse/reject.hpp [5:7]
+ boost/metaparse/repeated.hpp [5:7]
+ boost/metaparse/repeated1.hpp [5:7]
+ boost/metaparse/repeated_one_of.hpp [5:7]
+ boost/metaparse/repeated_one_of1.hpp [5:7]
+ boost/metaparse/repeated_reject_incomplete.hpp [5:7]
+ boost/metaparse/repeated_reject_incomplete1.hpp [5:7]
+ boost/metaparse/return_.hpp [5:7]
+ boost/metaparse/sequence.hpp [5:7]
+ boost/metaparse/sequence_apply.hpp [5:7]
+ boost/metaparse/source_position.hpp [5:7]
+ boost/metaparse/source_position_tag.hpp [5:7]
+ boost/metaparse/space.hpp [5:7]
+ boost/metaparse/spaces.hpp [5:7]
+ boost/metaparse/start.hpp [5:7]
+ boost/metaparse/string.hpp [2:4]
+ boost/metaparse/string_tag.hpp [5:7]
+ boost/metaparse/token.hpp [5:7]
+ boost/metaparse/transform.hpp [5:7]
+ boost/metaparse/transform_error.hpp [5:7]
+ boost/metaparse/transform_error_message.hpp [5:7]
+ boost/metaparse/unless_error.hpp [5:7]
+ boost/metaparse/util/digit_to_int.hpp [5:7]
+ boost/metaparse/util/digit_to_int_c.hpp [5:7]
+ boost/metaparse/util/in_range.hpp [5:7]
+ boost/metaparse/util/in_range_c.hpp [5:7]
+ boost/metaparse/util/int_to_digit.hpp [5:7]
+ boost/metaparse/util/int_to_digit_c.hpp [5:7]
+ boost/metaparse/util/is_digit.hpp [5:7]
+ boost/metaparse/util/is_lcase_letter.hpp [5:7]
+ boost/metaparse/util/is_letter.hpp [5:7]
+ boost/metaparse/util/is_ucase_letter.hpp [5:7]
+ boost/metaparse/util/is_whitespace.hpp [5:7]
+ boost/metaparse/util/is_whitespace_c.hpp [5:7]
+ boost/metaparse/v1/accept.hpp [5:7]
+ boost/metaparse/v1/accept_tag.hpp [5:7]
+ boost/metaparse/v1/accept_when.hpp [5:7]
+ boost/metaparse/v1/alphanum.hpp [5:7]
+ boost/metaparse/v1/always.hpp [5:7]
+ boost/metaparse/v1/always_c.hpp [5:7]
+ boost/metaparse/v1/build_parser.hpp [5:7]
+ boost/metaparse/v1/change_error_message.hpp [5:7]
+ boost/metaparse/v1/cpp11/first_of.hpp [5:7]
+ boost/metaparse/v1/cpp11/fwd/string.hpp [5:7]
+ boost/metaparse/v1/cpp11/impl/at_c.hpp [5:7]
+ boost/metaparse/v1/cpp11/impl/concat.hpp [5:7]
+ boost/metaparse/v1/cpp11/impl/empty_string.hpp [5:7]
+ boost/metaparse/v1/cpp11/impl/nth_of_c.hpp [5:7]
+ boost/metaparse/v1/cpp11/impl/nth_of_c_skip_remaining.hpp [5:7]
+ boost/metaparse/v1/cpp11/impl/pop_back.hpp [5:7]
+ boost/metaparse/v1/cpp11/impl/pop_front.hpp [5:7]
+ boost/metaparse/v1/cpp11/impl/push_back_c.hpp [5:7]
+ boost/metaparse/v1/cpp11/impl/push_front_c.hpp [5:7]
+ boost/metaparse/v1/cpp11/impl/remove_trailing_no_chars.hpp [5:7]
+ boost/metaparse/v1/cpp11/impl/size.hpp [5:7]
+ boost/metaparse/v1/cpp11/impl/string_at.hpp [5:7]
+ boost/metaparse/v1/cpp11/last_of.hpp [5:7]
+ boost/metaparse/v1/cpp11/nth_of.hpp [5:7]
+ boost/metaparse/v1/cpp11/nth_of_c.hpp [5:7]
+ boost/metaparse/v1/cpp11/string.hpp [5:7]
+ boost/metaparse/v1/cpp98/first_of.hpp [5:7]
+ boost/metaparse/v1/cpp98/fwd/string.hpp [5:7]
+ boost/metaparse/v1/cpp98/impl/at_c.hpp [5:7]
+ boost/metaparse/v1/cpp98/impl/empty_string.hpp [5:7]
+ boost/metaparse/v1/cpp98/impl/nth_of_c.hpp [5:7]
+ boost/metaparse/v1/cpp98/impl/nth_of_c_impl.hpp [5:7]
+ boost/metaparse/v1/cpp98/impl/pop_back.hpp [5:7]
+ boost/metaparse/v1/cpp98/impl/pop_front.hpp [5:7]
+ boost/metaparse/v1/cpp98/impl/push_back_c.hpp [5:7]
+ boost/metaparse/v1/cpp98/impl/push_front_c.hpp [5:7]
+ boost/metaparse/v1/cpp98/impl/size.hpp [5:7]
+ boost/metaparse/v1/cpp98/impl/skip_seq.hpp [5:7]
+ boost/metaparse/v1/cpp98/impl/update_c.hpp [5:7]
+ boost/metaparse/v1/cpp98/last_of.hpp [5:7]
+ boost/metaparse/v1/cpp98/nth_of.hpp [5:7]
+ boost/metaparse/v1/cpp98/nth_of_c.hpp [5:7]
+ boost/metaparse/v1/cpp98/string.hpp [5:7]
+ boost/metaparse/v1/debug_parsing_error.hpp [5:7]
+ boost/metaparse/v1/define_error.hpp [5:7]
+ boost/metaparse/v1/digit.hpp [5:7]
+ boost/metaparse/v1/digit_val.hpp [5:7]
+ boost/metaparse/v1/empty.hpp [5:7]
+ boost/metaparse/v1/entire_input.hpp [5:7]
+ boost/metaparse/v1/error/digit_expected.hpp [5:7]
+ boost/metaparse/v1/error/end_of_input_expected.hpp [5:7]
+ boost/metaparse/v1/error/expected_to_fail.hpp [5:7]
+ boost/metaparse/v1/error/index_out_of_range.hpp [5:7]
+ boost/metaparse/v1/error/letter_expected.hpp [5:7]
+ boost/metaparse/v1/error/literal_expected.hpp [5:7]
+ boost/metaparse/v1/error/none_of_the_expected_cases_found.hpp [5:7]
+ boost/metaparse/v1/error/unexpected_character.hpp [5:7]
+ boost/metaparse/v1/error/unexpected_end_of_input.hpp [5:7]
+ boost/metaparse/v1/error/unpaired.hpp [5:7]
+ boost/metaparse/v1/error/whitespace_expected.hpp [5:7]
+ boost/metaparse/v1/except.hpp [5:7]
+ boost/metaparse/v1/fail.hpp [5:7]
+ boost/metaparse/v1/fail_at_first_char_expected.hpp [5:7]
+ boost/metaparse/v1/fail_tag.hpp [5:7]
+ boost/metaparse/v1/first_of.hpp [5:7]
+ boost/metaparse/v1/foldl.hpp [5:7]
+ boost/metaparse/v1/foldl1.hpp [5:7]
+ boost/metaparse/v1/foldl_reject_incomplete.hpp [5:7]
+ boost/metaparse/v1/foldl_reject_incomplete1.hpp [5:7]
+ boost/metaparse/v1/foldl_reject_incomplete_start_with_parser.hpp [5:7]
+ boost/metaparse/v1/foldl_start_with_parser.hpp [5:7]
+ boost/metaparse/v1/foldr.hpp [5:7]
+ boost/metaparse/v1/foldr1.hpp [5:7]
+ boost/metaparse/v1/foldr_reject_incomplete.hpp [5:7]
+ boost/metaparse/v1/foldr_reject_incomplete1.hpp [5:7]
+ boost/metaparse/v1/foldr_start_with_parser.hpp [5:7]
+ boost/metaparse/v1/fwd/accept.hpp [5:7]
+ boost/metaparse/v1/fwd/build_parser.hpp [5:7]
+ boost/metaparse/v1/fwd/get_col.hpp [5:7]
+ boost/metaparse/v1/fwd/get_line.hpp [5:7]
+ boost/metaparse/v1/fwd/get_message.hpp [5:7]
+ boost/metaparse/v1/fwd/get_position.hpp [5:7]
+ boost/metaparse/v1/fwd/get_prev_char.hpp [5:7]
+ boost/metaparse/v1/fwd/get_remaining.hpp [5:7]
+ boost/metaparse/v1/fwd/get_result.hpp [5:7]
+ boost/metaparse/v1/fwd/next_char.hpp [5:7]
+ boost/metaparse/v1/fwd/next_line.hpp [5:7]
+ boost/metaparse/v1/fwd/reject.hpp [5:7]
+ boost/metaparse/v1/fwd/source_position.hpp [5:7]
+ boost/metaparse/v1/fwd/string.hpp [5:7]
+ boost/metaparse/v1/get_col.hpp [5:7]
+ boost/metaparse/v1/get_line.hpp [5:7]
+ boost/metaparse/v1/get_message.hpp [5:7]
+ boost/metaparse/v1/get_position.hpp [5:7]
+ boost/metaparse/v1/get_prev_char.hpp [5:7]
+ boost/metaparse/v1/get_remaining.hpp [5:7]
+ boost/metaparse/v1/get_result.hpp [5:7]
+ boost/metaparse/v1/grammar.hpp [5:7]
+ boost/metaparse/v1/if_.hpp [5:7]
+ boost/metaparse/v1/impl/apply_parser.hpp [5:7]
+ boost/metaparse/v1/impl/assert_string_length.hpp [5:7]
+ boost/metaparse/v1/impl/at_c.hpp [5:7]
+ boost/metaparse/v1/impl/back_inserter.hpp [5:7]
+ boost/metaparse/v1/impl/front_inserter.hpp [5:7]
+ boost/metaparse/v1/impl/fwd/iterate_impl.hpp [5:7]
+ boost/metaparse/v1/impl/has_type.hpp [5:7]
+ boost/metaparse/v1/impl/is_any.hpp [5:7]
+ boost/metaparse/v1/impl/is_char_c.hpp [5:7]
+ boost/metaparse/v1/impl/iterate_impl.hpp [5:7]
+ boost/metaparse/v1/impl/iterate_impl_unchecked.hpp [5:7]
+ boost/metaparse/v1/impl/later_result.hpp [5:7]
+ boost/metaparse/v1/impl/next_digit.hpp [5:7]
+ boost/metaparse/v1/impl/no_char.hpp [5:7]
+ boost/metaparse/v1/impl/one_char_except_not_used.hpp [5:7]
+ boost/metaparse/v1/impl/one_of.hpp [5:7]
+ boost/metaparse/v1/impl/one_of_fwd_op.hpp [5:7]
+ boost/metaparse/v1/impl/returns.hpp [5:7]
+ boost/metaparse/v1/impl/sequence.hpp [5:7]
+ boost/metaparse/v1/impl/sequence_impl.hpp [5:7]
+ boost/metaparse/v1/impl/string_iterator.hpp [5:7]
+ boost/metaparse/v1/impl/string_iterator_tag.hpp [5:7]
+ boost/metaparse/v1/impl/void_.hpp [5:7]
+ boost/metaparse/v1/int_.hpp [5:7]
+ boost/metaparse/v1/is_error.hpp [5:7]
+ boost/metaparse/v1/iterate.hpp [5:7]
+ boost/metaparse/v1/iterate_c.hpp [5:7]
+ boost/metaparse/v1/keyword.hpp [5:7]
+ boost/metaparse/v1/last_of.hpp [5:7]
+ boost/metaparse/v1/letter.hpp [5:7]
+ boost/metaparse/v1/lit.hpp [5:7]
+ boost/metaparse/v1/lit_c.hpp [5:7]
+ boost/metaparse/v1/look_ahead.hpp [5:7]
+ boost/metaparse/v1/middle_of.hpp [5:7]
+ boost/metaparse/v1/next_char.hpp [5:7]
+ boost/metaparse/v1/next_line.hpp [5:7]
+ boost/metaparse/v1/nth_of.hpp [5:7]
+ boost/metaparse/v1/nth_of_c.hpp [5:7]
+ boost/metaparse/v1/one_char.hpp [5:7]
+ boost/metaparse/v1/one_char_except.hpp [5:7]
+ boost/metaparse/v1/one_char_except_c.hpp [5:7]
+ boost/metaparse/v1/one_of.hpp [5:7]
+ boost/metaparse/v1/one_of_c.hpp [5:7]
+ boost/metaparse/v1/optional.hpp [5:7]
+ boost/metaparse/v1/range.hpp [5:7]
+ boost/metaparse/v1/range_c.hpp [5:7]
+ boost/metaparse/v1/reject.hpp [5:7]
+ boost/metaparse/v1/repeated.hpp [5:7]
+ boost/metaparse/v1/repeated1.hpp [5:7]
+ boost/metaparse/v1/repeated_one_of.hpp [5:7]
+ boost/metaparse/v1/repeated_one_of1.hpp [5:7]
+ boost/metaparse/v1/repeated_reject_incomplete.hpp [5:7]
+ boost/metaparse/v1/repeated_reject_incomplete1.hpp [5:7]
+ boost/metaparse/v1/return_.hpp [5:7]
+ boost/metaparse/v1/sequence.hpp [5:7]
+ boost/metaparse/v1/sequence_apply.hpp [5:7]
+ boost/metaparse/v1/source_position.hpp [5:7]
+ boost/metaparse/v1/source_position_tag.hpp [5:7]
+ boost/metaparse/v1/space.hpp [5:7]
+ boost/metaparse/v1/spaces.hpp [5:7]
+ boost/metaparse/v1/start.hpp [5:7]
+ boost/metaparse/v1/string.hpp [5:7]
+ boost/metaparse/v1/string_tag.hpp [5:7]
+ boost/metaparse/v1/swap.hpp [5:7]
+ boost/metaparse/v1/token.hpp [5:7]
+ boost/metaparse/v1/transform.hpp [5:7]
+ boost/metaparse/v1/transform_error.hpp [5:7]
+ boost/metaparse/v1/transform_error_message.hpp [5:7]
+ boost/metaparse/v1/unless_error.hpp [5:7]
+ boost/metaparse/v1/util/digit_to_int.hpp [5:7]
+ boost/metaparse/v1/util/digit_to_int_c.hpp [5:7]
+ boost/metaparse/v1/util/in_range.hpp [5:7]
+ boost/metaparse/v1/util/in_range_c.hpp [5:7]
+ boost/metaparse/v1/util/int_to_digit.hpp [5:7]
+ boost/metaparse/v1/util/int_to_digit_c.hpp [5:7]
+ boost/metaparse/v1/util/is_digit.hpp [5:7]
+ boost/metaparse/v1/util/is_lcase_letter.hpp [5:7]
+ boost/metaparse/v1/util/is_letter.hpp [5:7]
+ boost/metaparse/v1/util/is_ucase_letter.hpp [5:7]
+ boost/metaparse/v1/util/is_whitespace.hpp [5:7]
+ boost/metaparse/v1/util/is_whitespace_c.hpp [5:7]
+ boost/metaparse/version.hpp [5:7]
+ boost/move/detail/reverse_iterator.hpp [5:7]
+ boost/move/detail/to_raw_pointer.hpp [5:7]
+ boost/mpi/cartesian_communicator.hpp [2:4]
+ boost/mpi/detail/antiques.hpp [2:4]
+ boost/mpi/detail/offsets.hpp [2:4]
+ boost/multiprecision/detail/functions/constants.hpp [2:4]
+ boost/multiprecision/detail/functions/pow.hpp [4:6]
+ boost/multiprecision/detail/functions/trig.hpp [4:6]
+ boost/non_type.hpp [5:7]
+ boost/pending/lowest_bit.hpp [8:10]
+ boost/sort/pdqsort/pdqsort.hpp [4:6]
+ boost/sort/sort.hpp [4:6]
+ boost/sort/spreadsort/detail/constants.hpp [4:6]
+ boost/sort/spreadsort/detail/float_sort.hpp [4:6]
+ boost/sort/spreadsort/detail/integer_sort.hpp [4:6]
+ boost/sort/spreadsort/detail/spreadsort_common.hpp [5:7]
+ boost/sort/spreadsort/detail/string_sort.hpp [4:6]
+ boost/sort/spreadsort/float_sort.hpp [4:6]
+ boost/sort/spreadsort/integer_sort.hpp [4:6]
+ boost/sort/spreadsort/spreadsort.hpp [4:6]
+ boost/sort/spreadsort/string_sort.hpp [4:6]
+ libs/context/src/continuation.cpp [3:5]
+ libs/context/src/execution_context.cpp [3:5]
+ libs/context/src/fiber.cpp [3:5]
+ libs/context/src/posix/stack_traits.cpp [3:5]
+ libs/context/src/untested.cpp [3:5]
+ libs/context/src/windows/stack_traits.cpp [3:5]
+ libs/coroutine/src/detail/coroutine_context.cpp [3:5]
+ libs/coroutine/src/exceptions.cpp [3:5]
+ libs/coroutine/src/posix/stack_traits.cpp [3:5]
+ libs/coroutine/src/windows/stack_traits.cpp [3:5]
+
+KEEP BSL-1.0 519e01acec4b7ae39f375d1d02c207c7
+BELONGS ya.make
+ License text:
+ * Distributed under the Boost Software License, Version 1.0.
+ * See http://www.boost.org/LICENSE_1_0.txt
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/detail/winapi/access_rights.hpp [4:5]
+ boost/detail/winapi/apc.hpp [4:5]
+ boost/detail/winapi/basic_types.hpp [4:5]
+ boost/detail/winapi/bcrypt.hpp [4:5]
+ boost/detail/winapi/character_code_conversion.hpp [4:5]
+ boost/detail/winapi/condition_variable.hpp [4:5]
+ boost/detail/winapi/config.hpp [4:5]
+ boost/detail/winapi/critical_section.hpp [4:5]
+ boost/detail/winapi/crypt.hpp [4:5]
+ boost/detail/winapi/dbghelp.hpp [4:5]
+ boost/detail/winapi/debugapi.hpp [4:5]
+ boost/detail/winapi/detail/deprecated_namespace.hpp [4:5]
+ boost/detail/winapi/directory_management.hpp [4:5]
+ boost/detail/winapi/dll.hpp [4:5]
+ boost/detail/winapi/environment.hpp [4:5]
+ boost/detail/winapi/error_codes.hpp [4:5]
+ boost/detail/winapi/error_handling.hpp [4:5]
+ boost/detail/winapi/event.hpp [4:5]
+ boost/detail/winapi/file_management.hpp [4:5]
+ boost/detail/winapi/file_mapping.hpp [4:5]
+ boost/detail/winapi/get_current_process.hpp [4:5]
+ boost/detail/winapi/get_current_process_id.hpp [4:5]
+ boost/detail/winapi/get_current_thread.hpp [4:5]
+ boost/detail/winapi/get_current_thread_id.hpp [4:5]
+ boost/detail/winapi/get_last_error.hpp [4:5]
+ boost/detail/winapi/get_process_times.hpp [4:5]
+ boost/detail/winapi/get_system_directory.hpp [4:5]
+ boost/detail/winapi/get_thread_times.hpp [4:5]
+ boost/detail/winapi/handle_info.hpp [4:5]
+ boost/detail/winapi/handles.hpp [4:5]
+ boost/detail/winapi/heap_memory.hpp [4:5]
+ boost/detail/winapi/init_once.hpp [4:5]
+ boost/detail/winapi/jobs.hpp [4:5]
+ boost/detail/winapi/limits.hpp [4:5]
+ boost/detail/winapi/local_memory.hpp [4:5]
+ boost/detail/winapi/memory.hpp [4:5]
+ boost/detail/winapi/mutex.hpp [4:5]
+ boost/detail/winapi/overlapped.hpp [4:5]
+ boost/detail/winapi/page_protection_flags.hpp [4:5]
+ boost/detail/winapi/pipes.hpp [4:5]
+ boost/detail/winapi/priority_class.hpp [4:5]
+ boost/detail/winapi/process.hpp [4:5]
+ boost/detail/winapi/security.hpp [4:5]
+ boost/detail/winapi/semaphore.hpp [4:5]
+ boost/detail/winapi/shell.hpp [4:5]
+ boost/detail/winapi/show_window.hpp [4:5]
+ boost/detail/winapi/srw_lock.hpp [4:5]
+ boost/detail/winapi/stack_backtrace.hpp [4:5]
+ boost/detail/winapi/synchronization.hpp [4:5]
+ boost/detail/winapi/system.hpp [4:5]
+ boost/detail/winapi/thread.hpp [4:5]
+ boost/detail/winapi/thread_pool.hpp [4:5]
+ boost/detail/winapi/time.hpp [4:5]
+ boost/detail/winapi/timers.hpp [4:5]
+ boost/detail/winapi/tls.hpp [4:5]
+ boost/detail/winapi/wait.hpp [4:5]
+ boost/detail/winapi/waitable_timer.hpp [4:5]
+ boost/winapi/access_rights.hpp [4:5]
+ boost/winapi/apc.hpp [5:6]
+ boost/winapi/basic_types.hpp [5:6]
+ boost/winapi/bcrypt.hpp [4:5]
+ boost/winapi/character_code_conversion.hpp [4:5]
+ boost/winapi/condition_variable.hpp [5:6]
+ boost/winapi/config.hpp [5:6]
+ boost/winapi/critical_section.hpp [5:6]
+ boost/winapi/crypt.hpp [5:6]
+ boost/winapi/dbghelp.hpp [6:7]
+ boost/winapi/debugapi.hpp [4:5]
+ boost/winapi/detail/cast_ptr.hpp [4:5]
+ boost/winapi/directory_management.hpp [5:6]
+ boost/winapi/dll.hpp [7:8]
+ boost/winapi/environment.hpp [4:5]
+ boost/winapi/error_codes.hpp [4:5]
+ boost/winapi/error_handling.hpp [6:7]
+ boost/winapi/event.hpp [5:6]
+ boost/winapi/file_management.hpp [7:8]
+ boost/winapi/file_mapping.hpp [7:8]
+ boost/winapi/get_current_process.hpp [5:6]
+ boost/winapi/get_current_process_id.hpp [4:5]
+ boost/winapi/get_current_thread.hpp [5:6]
+ boost/winapi/get_current_thread_id.hpp [5:6]
+ boost/winapi/get_last_error.hpp [5:6]
+ boost/winapi/get_process_times.hpp [4:5]
+ boost/winapi/get_system_directory.hpp [4:5]
+ boost/winapi/get_thread_times.hpp [5:6]
+ boost/winapi/handle_info.hpp [4:5]
+ boost/winapi/handles.hpp [5:6]
+ boost/winapi/heap_memory.hpp [5:6]
+ boost/winapi/init_once.hpp [5:6]
+ boost/winapi/jobs.hpp [4:5]
+ boost/winapi/limits.hpp [4:5]
+ boost/winapi/local_memory.hpp [5:6]
+ boost/winapi/memory.hpp [5:6]
+ boost/winapi/mutex.hpp [5:6]
+ boost/winapi/overlapped.hpp [4:5]
+ boost/winapi/page_protection_flags.hpp [4:5]
+ boost/winapi/pipes.hpp [5:6]
+ boost/winapi/priority_class.hpp [5:6]
+ boost/winapi/process.hpp [5:6]
+ boost/winapi/security.hpp [5:6]
+ boost/winapi/semaphore.hpp [5:6]
+ boost/winapi/shell.hpp [4:5]
+ boost/winapi/show_window.hpp [4:5]
+ boost/winapi/srw_lock.hpp [5:6]
+ boost/winapi/stack_backtrace.hpp [4:5]
+ boost/winapi/synchronization.hpp [5:6]
+ boost/winapi/system.hpp [6:7]
+ boost/winapi/thread.hpp [5:6]
+ boost/winapi/thread_pool.hpp [4:5]
+ boost/winapi/time.hpp [6:7]
+ boost/winapi/timers.hpp [5:6]
+ boost/winapi/tls.hpp [4:5]
+ boost/winapi/wait.hpp [6:7]
+ boost/winapi/waitable_timer.hpp [4:5]
+
+KEEP BSL-1.0 52079c0b53c8857e80de09aa3fcd4632
+BELONGS libs/chrono/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/chrono.hpp at line 6, libs/chrono/stopwatches/include/boost/chrono/stopwatches.hpp at line 6
+ License text:
+ // Distributed under the Boost
+ // Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or
+ // copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/chrono.hpp [4:7]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches.hpp [4:7]
+
+KEEP BSL-1.0 524e838f61fea095d692df7fee05bf3f
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: LicenseRef-scancode-boost-original
+ Score : 100.00
+ Match type : TEXT
+ Links : http://boost.org, https://github.com/boostorg/rational/blob/0fe0beca5397c812c4f85a7de0d0769de59e12e0/include/boost/rational.hpp, https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/boost-original.LICENSE
+ Files with this license:
+ boost/shared_container_iterator.hpp [1:4]
+
+KEEP BSL-1.0 526847f759a8183ebfa4b8cff5c6effb
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/date_time/local_time/dst_transition_day_rules.hpp at line 6, boost/date_time/local_time/local_time.hpp at line 6, boost/date_time/local_time/local_time_types.hpp at line 6, boost/date_time/local_time/tz_database.hpp at line 6, boost/date_time/tz_db_base.hpp at line 6
+ License text:
* Subject to the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 78.12
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/date_time/local_time/conversion.hpp [5:6]
- boost/date_time/local_time/custom_time_zone.hpp [5:6]
- boost/date_time/local_time/local_date_time.hpp [5:6]
- boost/date_time/local_time/local_time_io.hpp [5:6]
- boost/date_time/time_zone_base.hpp [5:6]
-
-KEEP BSL-1.0 49e6bc77399e998df4a19b5127671d43
-BELONGS libs/python/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iterator_adaptors.hpp at line 3, boost/python/detail/enable_if.hpp at line 3, boost/python/detail/indirect_traits.hpp at line 3, boost/python/detail/is_wrapper.hpp at line 3, boost/python/detail/sfinae.hpp at line 3, boost/python/detail/unwrap_type_id.hpp at line 3, boost/python/detail/unwrap_wrapper.hpp at line 3, boost/python/detail/value_arg.hpp at line 3, boost/python/detail/wrapper_base.hpp at line 3, boost/python/override.hpp at line 5, boost/python/wrapper.hpp at line 3, libs/python/src/dict.cpp at line 3, libs/python/src/str.cpp at line 3, libs/python/src/wrapper.cpp at line 3
- License text:
- // Copyright David Abrahams 2004. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/iterator_adaptors.hpp [1:3]
- boost/python/detail/enable_if.hpp [1:3]
- boost/python/detail/indirect_traits.hpp [1:3]
- boost/python/detail/is_wrapper.hpp [1:3]
- boost/python/detail/sfinae.hpp [1:3]
- boost/python/detail/unwrap_type_id.hpp [1:3]
- boost/python/detail/unwrap_wrapper.hpp [1:3]
- boost/python/detail/value_arg.hpp [1:3]
- boost/python/detail/wrapper_base.hpp [1:3]
- boost/python/override.hpp [3:5]
- boost/python/wrapper.hpp [1:3]
- libs/python/src/dict.cpp [1:3]
- libs/python/src/str.cpp [1:3]
- libs/python/src/wrapper.cpp [1:3]
-
-KEEP Mit-Old-Style 4a0ba219f46e4fe5625b9889e52ace5c
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: LicenseRef-scancode-mit-old-style
- Score : 100.00
- Match type : TEXT
- Links : http://fedoraproject.org/wiki/Licensing:MIT#Old_Style, https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/mit-old-style.LICENSE
- Files with this license:
- boost/detail/binary_search.hpp [9:15]
- boost/multi_array/algorithm.hpp [9:15]
-
-KEEP BSL-1.0 4bc1c5915859ce2250046550c5c61a3b
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/numeric/ublas/detail/returntype_deduction.hpp at line 5
- License text:
- * Use, modification and distribution is subject to the Boost Software
- * License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/numeric/ublas/detail/returntype_deduction.hpp [4:6]
-
-KEEP BSL-1.0 4bf92e73158a277da24beb102ed42abb
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/rolling_count.hpp at line 6, boost/accumulators/statistics/rolling_sum.hpp at line 6, boost/accumulators/statistics/rolling_window.hpp at line 6
- License text:
- // Copyright 2008 Eric Niebler. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/accumulators/statistics/rolling_count.hpp [4:6]
- boost/accumulators/statistics/rolling_sum.hpp [4:6]
- boost/accumulators/statistics/rolling_window.hpp [4:6]
-
-KEEP BSL-1.0 4c18916c3f8400d0d3ea68d73e70192b
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/circular_buffer.hpp at line 6, boost/circular_buffer/base.hpp at line 11, boost/circular_buffer/debug.hpp at line 6, boost/circular_buffer/details.hpp at line 9, boost/circular_buffer/space_optimized.hpp at line 8, boost/circular_buffer_fwd.hpp at line 6, boost/core/enable_if.hpp at line 6, boost/none_t.hpp at line 5, boost/optional.hpp at line 4, boost/optional/bad_optional_access.hpp at line 4, boost/optional/detail/experimental_traits.hpp at line 4, boost/optional/detail/old_optional_implementation.hpp at line 5, boost/optional/detail/optional_aligned_storage.hpp at line 5, boost/optional/detail/optional_config.hpp at line 5, boost/optional/detail/optional_factory_support.hpp at line 5, boost/optional/detail/optional_reference_spec.hpp at line 4, boost/optional/detail/optional_relops.hpp at line 5, boost/optional/detail/optional_swap.hpp at line 5, boost/optional/optional.hpp at line 5, boost/optional/optional_fwd.hpp at line 5, boost/optional/optional_io.hpp at line 4, boost/utility/compare_pointees.hpp at line 4, boost/utility/detail/in_place_factory_prefix.hpp at line 5, boost/utility/detail/in_place_factory_suffix.hpp at line 5, boost/utility/in_place_factory.hpp at line 5, boost/utility/typed_in_place_factory.hpp at line 5
- License text:
- // Use, modification, and distribution is subject to the Boost Software
- // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/circular_buffer.hpp [5:7]
- boost/circular_buffer/base.hpp [10:12]
- boost/circular_buffer/debug.hpp [5:7]
- boost/circular_buffer/details.hpp [8:10]
- boost/circular_buffer/space_optimized.hpp [7:9]
- boost/circular_buffer_fwd.hpp [5:7]
- boost/core/enable_if.hpp [5:7]
- boost/none_t.hpp [4:6]
- boost/optional.hpp [3:5]
- boost/optional/bad_optional_access.hpp [3:5]
- boost/optional/detail/experimental_traits.hpp [3:5]
- boost/optional/detail/old_optional_implementation.hpp [4:6]
- boost/optional/detail/optional_aligned_storage.hpp [4:6]
- boost/optional/detail/optional_config.hpp [4:6]
- boost/optional/detail/optional_factory_support.hpp [4:6]
- boost/optional/detail/optional_reference_spec.hpp [3:5]
- boost/optional/detail/optional_relops.hpp [4:6]
- boost/optional/detail/optional_swap.hpp [4:6]
- boost/optional/optional.hpp [4:6]
- boost/optional/optional_fwd.hpp [4:6]
- boost/optional/optional_io.hpp [3:5]
- boost/utility/compare_pointees.hpp [3:5]
- boost/utility/detail/in_place_factory_prefix.hpp [4:6]
- boost/utility/detail/in_place_factory_suffix.hpp [4:6]
- boost/utility/in_place_factory.hpp [4:6]
- boost/utility/typed_in_place_factory.hpp [4:6]
-
-KEEP BSL-1.0 4c9557897114277994abc82dcb05944a
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/chrono/typeof/boost/chrono/chrono.hpp at line 5, boost/chrono/typeof/boost/ratio.hpp at line 5
- License text:
+ * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 78.12
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/date_time/local_time/dst_transition_day_rules.hpp [5:6]
+ boost/date_time/local_time/local_time.hpp [5:6]
+ boost/date_time/local_time/local_time_types.hpp [5:6]
+ boost/date_time/local_time/tz_database.hpp [5:6]
+ boost/date_time/tz_db_base.hpp [5:6]
+
+KEEP BSL-1.0 52bb7ffef4964d9161d4ca3967722670
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/abi_prefix.hpp at line 6, boost/config/abi_suffix.hpp at line 6, boost/polygon/detail/polygon_simplify.hpp at line 4, boost/range/detail/has_member_size.hpp at line 6
+ License text:
+ // Use, modification and distribution are subject to the Boost Software License,
+ // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt).
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/config/abi_prefix.hpp [5:7]
+ boost/config/abi_suffix.hpp [5:7]
+ boost/polygon/detail/polygon_simplify.hpp [3:5]
+ boost/range/detail/has_member_size.hpp [5:7]
+
+KEEP BSL-1.0 53ad0b71e5a62dd6936dcbc49d561492
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/is_xxx.hpp at line 3, boost/parameter/aux_/result_of0.hpp at line 3, boost/parameter/aux_/tag.hpp at line 3, boost/parameter/binding.hpp at line 3, boost/parameter/match.hpp at line 3
+ License text:
+ // Copyright David Abrahams 2005. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/detail/is_xxx.hpp [1:3]
+ boost/parameter/aux_/result_of0.hpp [1:3]
+ boost/parameter/aux_/tag.hpp [1:3]
+ boost/parameter/binding.hpp [1:3]
+ boost/parameter/match.hpp [1:3]
+
+KEEP BSL-1.0 540637cc651c55d1ebf9438ca4ad8fbe
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/adaptor/formatted.hpp at line 5, boost/range/adaptors.hpp at line 6, boost/range/algorithm/equal.hpp at line 5, boost/range/detail/extract_optional_type.hpp at line 5, boost/range/iterator_range.hpp at line 5, boost/range/iterator_range_core.hpp at line 5, boost/range/iterator_range_hash.hpp at line 5, boost/range/iterator_range_io.hpp at line 5, boost/range/range_fwd.hpp at line 5
+ License text:
+ // Use, modification and distribution is subject to the Boost Software
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/range/adaptor/formatted.hpp [4:6]
+ boost/range/adaptors.hpp [5:7]
+ boost/range/algorithm/equal.hpp [4:6]
+ boost/range/detail/extract_optional_type.hpp [4:6]
+ boost/range/iterator_range.hpp [4:6]
+ boost/range/iterator_range_core.hpp [4:6]
+ boost/range/iterator_range_hash.hpp [4:6]
+ boost/range/iterator_range_io.hpp [4:6]
+ boost/range/range_fwd.hpp [4:6]
+
+KEEP BSL-1.0 5441d5621bc00e9e901c5b220a3040c4
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/array/data.hpp at line 5, boost/preprocessor/array/elem.hpp at line 5, boost/preprocessor/array/insert.hpp at line 5, boost/preprocessor/array/pop_back.hpp at line 5, boost/preprocessor/array/pop_front.hpp at line 5, boost/preprocessor/array/push_back.hpp at line 6, boost/preprocessor/array/push_front.hpp at line 6, boost/preprocessor/array/remove.hpp at line 5, boost/preprocessor/array/replace.hpp at line 5, boost/preprocessor/array/reverse.hpp at line 5, boost/preprocessor/array/size.hpp at line 5, boost/preprocessor/assert_msg.hpp at line 5, boost/preprocessor/comma.hpp at line 5, boost/preprocessor/comma_if.hpp at line 5, boost/preprocessor/control.hpp at line 5, boost/preprocessor/control/deduce_d.hpp at line 5, boost/preprocessor/control/expr_iif.hpp at line 5, boost/preprocessor/control/iif.hpp at line 5, boost/preprocessor/debug.hpp at line 5, boost/preprocessor/debug/error.hpp at line 5, boost/preprocessor/debug/line.hpp at line 5, boost/preprocessor/dec.hpp at line 5, boost/preprocessor/detail/auto_rec.hpp at line 5, boost/preprocessor/detail/check.hpp at line 5, boost/preprocessor/detail/dmc/auto_rec.hpp at line 5, boost/preprocessor/detail/is_binary.hpp at line 5, boost/preprocessor/detail/is_nullary.hpp at line 5, boost/preprocessor/detail/is_unary.hpp at line 5, boost/preprocessor/detail/null.hpp at line 5, boost/preprocessor/detail/split.hpp at line 5, boost/preprocessor/empty.hpp at line 5, boost/preprocessor/enum.hpp at line 5, boost/preprocessor/enum_params.hpp at line 5, boost/preprocessor/enum_params_with_a_default.hpp at line 5, boost/preprocessor/enum_params_with_defaults.hpp at line 5, boost/preprocessor/enum_shifted.hpp at line 5, boost/preprocessor/enum_shifted_params.hpp at line 5, boost/preprocessor/expand.hpp at line 5, boost/preprocessor/expr_if.hpp at line 5, boost/preprocessor/facilities/apply.hpp at line 5, boost/preprocessor/facilities/detail/is_empty.hpp at line 5, boost/preprocessor/facilities/intercept.hpp at line 5, boost/preprocessor/facilities/is_1.hpp at line 5, boost/preprocessor/facilities/is_empty.hpp at line 6, boost/preprocessor/facilities/is_empty_or_1.hpp at line 5, boost/preprocessor/facilities/is_empty_variadic.hpp at line 5, boost/preprocessor/for.hpp at line 5, boost/preprocessor/identity.hpp at line 5, boost/preprocessor/if.hpp at line 5, boost/preprocessor/inc.hpp at line 5, boost/preprocessor/iterate.hpp at line 5, boost/preprocessor/iteration.hpp at line 5, boost/preprocessor/iteration/detail/bounds/lower1.hpp at line 5, boost/preprocessor/iteration/detail/bounds/lower2.hpp at line 5, boost/preprocessor/iteration/detail/bounds/lower3.hpp at line 5, boost/preprocessor/iteration/detail/bounds/lower4.hpp at line 5, boost/preprocessor/iteration/detail/bounds/lower5.hpp at line 5, boost/preprocessor/iteration/detail/bounds/upper1.hpp at line 5, boost/preprocessor/iteration/detail/bounds/upper2.hpp at line 5, boost/preprocessor/iteration/detail/bounds/upper3.hpp at line 5, boost/preprocessor/iteration/detail/bounds/upper4.hpp at line 5, boost/preprocessor/iteration/detail/bounds/upper5.hpp at line 5, boost/preprocessor/iteration/detail/finish.hpp at line 5, boost/preprocessor/iteration/detail/iter/forward1.hpp at line 5, boost/preprocessor/iteration/detail/iter/forward2.hpp at line 5, boost/preprocessor/iteration/detail/iter/forward3.hpp at line 5, boost/preprocessor/iteration/detail/iter/forward4.hpp at line 5, boost/preprocessor/iteration/detail/iter/forward5.hpp at line 5, boost/preprocessor/iteration/detail/iter/reverse1.hpp at line 5, boost/preprocessor/iteration/detail/iter/reverse2.hpp at line 5, boost/preprocessor/iteration/detail/iter/reverse3.hpp at line 5, boost/preprocessor/iteration/detail/iter/reverse4.hpp at line 5, boost/preprocessor/iteration/detail/iter/reverse5.hpp at line 5, boost/preprocessor/iteration/detail/local.hpp at line 5, boost/preprocessor/iteration/detail/rlocal.hpp at line 5, boost/preprocessor/iteration/detail/self.hpp at line 5, boost/preprocessor/iteration/detail/start.hpp at line 5, boost/preprocessor/iteration/iterate.hpp at line 5, boost/preprocessor/iteration/local.hpp at line 5, boost/preprocessor/iteration/self.hpp at line 5, boost/preprocessor/limits.hpp at line 5, boost/preprocessor/list/to_seq.hpp at line 5, boost/preprocessor/logical/bitand.hpp at line 5, boost/preprocessor/logical/bitnor.hpp at line 5, boost/preprocessor/logical/bitor.hpp at line 5, boost/preprocessor/logical/bitxor.hpp at line 5, boost/preprocessor/logical/compl.hpp at line 5, boost/preprocessor/max.hpp at line 5, boost/preprocessor/min.hpp at line 5, boost/preprocessor/punctuation.hpp at line 5, boost/preprocessor/punctuation/detail/is_begin_parens.hpp at line 5, boost/preprocessor/punctuation/is_begin_parens.hpp at line 5, boost/preprocessor/punctuation/paren.hpp at line 5, boost/preprocessor/punctuation/paren_if.hpp at line 5, boost/preprocessor/punctuation/remove_parens.hpp at line 5, boost/preprocessor/repeat.hpp at line 5, boost/preprocessor/repeat_2nd.hpp at line 5, boost/preprocessor/repeat_3rd.hpp at line 5, boost/preprocessor/repeat_from_to.hpp at line 5, boost/preprocessor/repeat_from_to_2nd.hpp at line 5, boost/preprocessor/repeat_from_to_3rd.hpp at line 5, boost/preprocessor/repetition.hpp at line 5, boost/preprocessor/repetition/deduce_r.hpp at line 5, boost/preprocessor/repetition/deduce_z.hpp at line 5, boost/preprocessor/repetition/enum_binary_params.hpp at line 5, boost/preprocessor/repetition/enum_trailing.hpp at line 5, boost/preprocessor/repetition/enum_trailing_binary_params.hpp at line 5, boost/preprocessor/repetition/enum_trailing_params.hpp at line 5, boost/preprocessor/selection.hpp at line 5, boost/preprocessor/seq/cat.hpp at line 5, boost/preprocessor/seq/detail/is_empty.hpp at line 5, boost/preprocessor/seq/detail/split.hpp at line 5, boost/preprocessor/seq/elem.hpp at line 5, boost/preprocessor/seq/enum.hpp at line 5, boost/preprocessor/seq/filter.hpp at line 5, boost/preprocessor/seq/first_n.hpp at line 5, boost/preprocessor/seq/fold_left.hpp at line 5, boost/preprocessor/seq/fold_right.hpp at line 5, boost/preprocessor/seq/for_each.hpp at line 5, boost/preprocessor/seq/for_each_i.hpp at line 5, boost/preprocessor/seq/for_each_product.hpp at line 5, boost/preprocessor/seq/insert.hpp at line 5, boost/preprocessor/seq/pop_back.hpp at line 5, boost/preprocessor/seq/pop_front.hpp at line 5, boost/preprocessor/seq/push_back.hpp at line 5, boost/preprocessor/seq/push_front.hpp at line 5, boost/preprocessor/seq/remove.hpp at line 5, boost/preprocessor/seq/replace.hpp at line 5, boost/preprocessor/seq/rest_n.hpp at line 5, boost/preprocessor/seq/reverse.hpp at line 5, boost/preprocessor/seq/seq.hpp at line 5, boost/preprocessor/seq/size.hpp at line 5, boost/preprocessor/seq/subseq.hpp at line 5, boost/preprocessor/seq/to_array.hpp at line 5, boost/preprocessor/seq/to_tuple.hpp at line 5, boost/preprocessor/seq/transform.hpp at line 5, boost/preprocessor/slot.hpp at line 5, boost/preprocessor/slot/detail/def.hpp at line 5, boost/preprocessor/slot/detail/shared.hpp at line 5, boost/preprocessor/slot/detail/slot1.hpp at line 5, boost/preprocessor/slot/detail/slot2.hpp at line 5, boost/preprocessor/slot/detail/slot3.hpp at line 5, boost/preprocessor/slot/detail/slot4.hpp at line 5, boost/preprocessor/slot/detail/slot5.hpp at line 5, boost/preprocessor/slot/slot.hpp at line 5, boost/preprocessor/tuple/insert.hpp at line 5, boost/preprocessor/tuple/pop_back.hpp at line 5, boost/preprocessor/tuple/pop_front.hpp at line 5, boost/preprocessor/tuple/push_back.hpp at line 5, boost/preprocessor/tuple/push_front.hpp at line 5, boost/preprocessor/tuple/remove.hpp at line 5, boost/preprocessor/tuple/replace.hpp at line 5, boost/preprocessor/while.hpp at line 5, boost/preprocessor/wstringize.hpp at line 5
+ License text:
+ \# * Distributed under the Boost Software License, Version 1.0. (See
+ \# * accompanying file LICENSE_1_0.txt or copy at
+ \# * http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/preprocessor/array/data.hpp [4:6]
+ boost/preprocessor/array/elem.hpp [4:6]
+ boost/preprocessor/array/insert.hpp [4:6]
+ boost/preprocessor/array/pop_back.hpp [4:6]
+ boost/preprocessor/array/pop_front.hpp [4:6]
+ boost/preprocessor/array/push_back.hpp [5:7]
+ boost/preprocessor/array/push_front.hpp [5:7]
+ boost/preprocessor/array/remove.hpp [4:6]
+ boost/preprocessor/array/replace.hpp [4:6]
+ boost/preprocessor/array/reverse.hpp [4:6]
+ boost/preprocessor/array/size.hpp [4:6]
+ boost/preprocessor/assert_msg.hpp [4:6]
+ boost/preprocessor/comma.hpp [4:6]
+ boost/preprocessor/comma_if.hpp [4:6]
+ boost/preprocessor/control.hpp [4:6]
+ boost/preprocessor/control/deduce_d.hpp [4:6]
+ boost/preprocessor/control/expr_iif.hpp [4:6]
+ boost/preprocessor/control/iif.hpp [4:6]
+ boost/preprocessor/debug.hpp [4:6]
+ boost/preprocessor/debug/error.hpp [4:6]
+ boost/preprocessor/debug/line.hpp [4:6]
+ boost/preprocessor/dec.hpp [4:6]
+ boost/preprocessor/detail/auto_rec.hpp [4:6]
+ boost/preprocessor/detail/check.hpp [4:6]
+ boost/preprocessor/detail/dmc/auto_rec.hpp [4:6]
+ boost/preprocessor/detail/is_binary.hpp [4:6]
+ boost/preprocessor/detail/is_nullary.hpp [4:6]
+ boost/preprocessor/detail/is_unary.hpp [4:6]
+ boost/preprocessor/detail/null.hpp [4:6]
+ boost/preprocessor/detail/split.hpp [4:6]
+ boost/preprocessor/empty.hpp [4:6]
+ boost/preprocessor/enum.hpp [4:6]
+ boost/preprocessor/enum_params.hpp [4:6]
+ boost/preprocessor/enum_params_with_a_default.hpp [4:6]
+ boost/preprocessor/enum_params_with_defaults.hpp [4:6]
+ boost/preprocessor/enum_shifted.hpp [4:6]
+ boost/preprocessor/enum_shifted_params.hpp [4:6]
+ boost/preprocessor/expand.hpp [4:6]
+ boost/preprocessor/expr_if.hpp [4:6]
+ boost/preprocessor/facilities/apply.hpp [4:6]
+ boost/preprocessor/facilities/detail/is_empty.hpp [4:6]
+ boost/preprocessor/facilities/intercept.hpp [4:6]
+ boost/preprocessor/facilities/is_1.hpp [4:6]
+ boost/preprocessor/facilities/is_empty.hpp [5:7]
+ boost/preprocessor/facilities/is_empty_or_1.hpp [4:6]
+ boost/preprocessor/facilities/is_empty_variadic.hpp [4:6]
+ boost/preprocessor/for.hpp [4:6]
+ boost/preprocessor/identity.hpp [4:6]
+ boost/preprocessor/if.hpp [4:6]
+ boost/preprocessor/inc.hpp [4:6]
+ boost/preprocessor/iterate.hpp [4:6]
+ boost/preprocessor/iteration.hpp [4:6]
+ boost/preprocessor/iteration/detail/bounds/lower1.hpp [4:6]
+ boost/preprocessor/iteration/detail/bounds/lower2.hpp [4:6]
+ boost/preprocessor/iteration/detail/bounds/lower3.hpp [4:6]
+ boost/preprocessor/iteration/detail/bounds/lower4.hpp [4:6]
+ boost/preprocessor/iteration/detail/bounds/lower5.hpp [4:6]
+ boost/preprocessor/iteration/detail/bounds/upper1.hpp [4:6]
+ boost/preprocessor/iteration/detail/bounds/upper2.hpp [4:6]
+ boost/preprocessor/iteration/detail/bounds/upper3.hpp [4:6]
+ boost/preprocessor/iteration/detail/bounds/upper4.hpp [4:6]
+ boost/preprocessor/iteration/detail/bounds/upper5.hpp [4:6]
+ boost/preprocessor/iteration/detail/finish.hpp [4:6]
+ boost/preprocessor/iteration/detail/iter/forward1.hpp [4:6]
+ boost/preprocessor/iteration/detail/iter/forward2.hpp [4:6]
+ boost/preprocessor/iteration/detail/iter/forward3.hpp [4:6]
+ boost/preprocessor/iteration/detail/iter/forward4.hpp [4:6]
+ boost/preprocessor/iteration/detail/iter/forward5.hpp [4:6]
+ boost/preprocessor/iteration/detail/iter/reverse1.hpp [4:6]
+ boost/preprocessor/iteration/detail/iter/reverse2.hpp [4:6]
+ boost/preprocessor/iteration/detail/iter/reverse3.hpp [4:6]
+ boost/preprocessor/iteration/detail/iter/reverse4.hpp [4:6]
+ boost/preprocessor/iteration/detail/iter/reverse5.hpp [4:6]
+ boost/preprocessor/iteration/detail/local.hpp [4:6]
+ boost/preprocessor/iteration/detail/rlocal.hpp [4:6]
+ boost/preprocessor/iteration/detail/self.hpp [4:6]
+ boost/preprocessor/iteration/detail/start.hpp [4:6]
+ boost/preprocessor/iteration/iterate.hpp [4:6]
+ boost/preprocessor/iteration/local.hpp [4:6]
+ boost/preprocessor/iteration/self.hpp [4:6]
+ boost/preprocessor/limits.hpp [4:6]
+ boost/preprocessor/list/to_seq.hpp [4:6]
+ boost/preprocessor/logical/bitand.hpp [4:6]
+ boost/preprocessor/logical/bitnor.hpp [4:6]
+ boost/preprocessor/logical/bitor.hpp [4:6]
+ boost/preprocessor/logical/bitxor.hpp [4:6]
+ boost/preprocessor/logical/compl.hpp [4:6]
+ boost/preprocessor/max.hpp [4:6]
+ boost/preprocessor/min.hpp [4:6]
+ boost/preprocessor/punctuation.hpp [4:6]
+ boost/preprocessor/punctuation/detail/is_begin_parens.hpp [4:6]
+ boost/preprocessor/punctuation/is_begin_parens.hpp [4:6]
+ boost/preprocessor/punctuation/paren.hpp [4:6]
+ boost/preprocessor/punctuation/paren_if.hpp [4:6]
+ boost/preprocessor/punctuation/remove_parens.hpp [4:6]
+ boost/preprocessor/repeat.hpp [4:6]
+ boost/preprocessor/repeat_2nd.hpp [4:6]
+ boost/preprocessor/repeat_3rd.hpp [4:6]
+ boost/preprocessor/repeat_from_to.hpp [4:6]
+ boost/preprocessor/repeat_from_to_2nd.hpp [4:6]
+ boost/preprocessor/repeat_from_to_3rd.hpp [4:6]
+ boost/preprocessor/repetition.hpp [4:6]
+ boost/preprocessor/repetition/deduce_r.hpp [4:6]
+ boost/preprocessor/repetition/deduce_z.hpp [4:6]
+ boost/preprocessor/repetition/enum_binary_params.hpp [4:6]
+ boost/preprocessor/repetition/enum_trailing.hpp [4:6]
+ boost/preprocessor/repetition/enum_trailing_binary_params.hpp [4:6]
+ boost/preprocessor/repetition/enum_trailing_params.hpp [4:6]
+ boost/preprocessor/selection.hpp [4:6]
+ boost/preprocessor/seq/cat.hpp [4:6]
+ boost/preprocessor/seq/detail/is_empty.hpp [4:6]
+ boost/preprocessor/seq/detail/split.hpp [4:6]
+ boost/preprocessor/seq/elem.hpp [4:6]
+ boost/preprocessor/seq/enum.hpp [4:6]
+ boost/preprocessor/seq/filter.hpp [4:6]
+ boost/preprocessor/seq/first_n.hpp [4:6]
+ boost/preprocessor/seq/fold_left.hpp [4:6]
+ boost/preprocessor/seq/fold_right.hpp [4:6]
+ boost/preprocessor/seq/for_each.hpp [4:6]
+ boost/preprocessor/seq/for_each_i.hpp [4:6]
+ boost/preprocessor/seq/for_each_product.hpp [4:6]
+ boost/preprocessor/seq/insert.hpp [4:6]
+ boost/preprocessor/seq/pop_back.hpp [4:6]
+ boost/preprocessor/seq/pop_front.hpp [4:6]
+ boost/preprocessor/seq/push_back.hpp [4:6]
+ boost/preprocessor/seq/push_front.hpp [4:6]
+ boost/preprocessor/seq/remove.hpp [4:6]
+ boost/preprocessor/seq/replace.hpp [4:6]
+ boost/preprocessor/seq/rest_n.hpp [4:6]
+ boost/preprocessor/seq/reverse.hpp [4:6]
+ boost/preprocessor/seq/seq.hpp [4:6]
+ boost/preprocessor/seq/size.hpp [4:6]
+ boost/preprocessor/seq/subseq.hpp [4:6]
+ boost/preprocessor/seq/to_array.hpp [4:6]
+ boost/preprocessor/seq/to_tuple.hpp [4:6]
+ boost/preprocessor/seq/transform.hpp [4:6]
+ boost/preprocessor/slot.hpp [4:6]
+ boost/preprocessor/slot/detail/def.hpp [4:6]
+ boost/preprocessor/slot/detail/shared.hpp [4:6]
+ boost/preprocessor/slot/detail/slot1.hpp [4:6]
+ boost/preprocessor/slot/detail/slot2.hpp [4:6]
+ boost/preprocessor/slot/detail/slot3.hpp [4:6]
+ boost/preprocessor/slot/detail/slot4.hpp [4:6]
+ boost/preprocessor/slot/detail/slot5.hpp [4:6]
+ boost/preprocessor/slot/slot.hpp [4:6]
+ boost/preprocessor/tuple/insert.hpp [4:6]
+ boost/preprocessor/tuple/pop_back.hpp [4:6]
+ boost/preprocessor/tuple/pop_front.hpp [4:6]
+ boost/preprocessor/tuple/push_back.hpp [4:6]
+ boost/preprocessor/tuple/push_front.hpp [4:6]
+ boost/preprocessor/tuple/remove.hpp [4:6]
+ boost/preprocessor/tuple/replace.hpp [4:6]
+ boost/preprocessor/while.hpp [4:6]
+ boost/preprocessor/wstringize.hpp [4:6]
+
+KEEP BSL-1.0 559be58c893ad9d438fca25af1254413
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/is_abstract.hpp at line 13
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 94.74
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/type_traits/is_abstract.hpp [12:16]
+
+KEEP BSL-1.0 559c1c9a22131873e7b18f9995722903
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: LicenseRef-scancode-boost-original
+ Score : 100.00
+ Match type : TEXT
+ Links : http://boost.org, https://github.com/boostorg/rational/blob/0fe0beca5397c812c4f85a7de0d0769de59e12e0/include/boost/rational.hpp, https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/boost-original.LICENSE
+ Files with this license:
+ boost/rational.hpp [3:6]
+
+KEEP Mit-Old-Style 55e81d3c6ec19a0377f36e6e6d487cd9
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: LicenseRef-scancode-mit-old-style
+ Score : 100.00
+ Match type : TEXT
+ Links : http://fedoraproject.org/wiki/Licensing:MIT#Old_Style, https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/mit-old-style.LICENSE
+ Files with this license:
+ boost/interprocess/sync/interprocess_recursive_mutex.hpp [18:22]
+ boost/interprocess/sync/posix/mutex.hpp [18:22]
+ boost/interprocess/sync/posix/recursive_mutex.hpp [18:22]
+ boost/interprocess/sync/spin/recursive_mutex.hpp [18:22]
+
+KEEP BSL-1.0 563e4f804388196518aa056f2cf30221
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/proto/detail/as_expr.hpp at line 9, boost/proto/functional.hpp at line 7, boost/proto/functional/fusion.hpp at line 7, boost/proto/functional/fusion/at.hpp at line 7, boost/proto/functional/fusion/pop_back.hpp at line 7, boost/proto/functional/fusion/pop_front.hpp at line 7, boost/proto/functional/fusion/push_back.hpp at line 7, boost/proto/functional/fusion/push_front.hpp at line 7, boost/proto/functional/fusion/reverse.hpp at line 7, boost/proto/functional/std.hpp at line 7, boost/proto/functional/std/utility.hpp at line 7
+ License text:
+ // Copyright 2010 Eric Niebler. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/proto/detail/as_expr.hpp [7:9]
+ boost/proto/functional.hpp [5:7]
+ boost/proto/functional/fusion.hpp [5:7]
+ boost/proto/functional/fusion/at.hpp [5:7]
+ boost/proto/functional/fusion/pop_back.hpp [5:7]
+ boost/proto/functional/fusion/pop_front.hpp [5:7]
+ boost/proto/functional/fusion/push_back.hpp [5:7]
+ boost/proto/functional/fusion/push_front.hpp [5:7]
+ boost/proto/functional/fusion/reverse.hpp [5:7]
+ boost/proto/functional/std.hpp [5:7]
+ boost/proto/functional/std/utility.hpp [5:7]
+
+KEEP BSL-1.0 563f38bd7e093c7e1caf078634008d40
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/numeric/odeint.hpp at line 13, boost/numeric/odeint/algebra/algebra_dispatcher.hpp at line 13, boost/numeric/odeint/algebra/array_algebra.hpp at line 17, boost/numeric/odeint/algebra/detail/extract_value_type.hpp at line 13, boost/numeric/odeint/algebra/detail/macros.hpp at line 13, boost/numeric/odeint/algebra/detail/norm_inf.hpp at line 13, boost/numeric/odeint/algebra/fusion_algebra.hpp at line 13, boost/numeric/odeint/algebra/norm_result_type.hpp at line 13, boost/numeric/odeint/algebra/operations_dispatcher.hpp at line 13, boost/numeric/odeint/algebra/vector_space_algebra.hpp at line 13, boost/numeric/odeint/config.hpp at line 13, boost/numeric/odeint/external/compute/compute_algebra.hpp at line 13, boost/numeric/odeint/external/compute/compute_operations.hpp at line 13, boost/numeric/odeint/external/compute/compute_resize.hpp at line 13, boost/numeric/odeint/external/gsl/gsl_wrapper.hpp at line 13, boost/numeric/odeint/external/mkl/mkl_operations.hpp at line 15, boost/numeric/odeint/external/mpi/mpi.hpp at line 14, boost/numeric/odeint/external/mpi/mpi_nested_algebra.hpp at line 14, boost/numeric/odeint/external/mpi/mpi_state.hpp at line 14, boost/numeric/odeint/external/mpi/mpi_vector_state.hpp at line 14, boost/numeric/odeint/external/mtl4/mtl4.hpp at line 13, boost/numeric/odeint/external/mtl4/mtl4_algebra_dispatcher.hpp at line 13, boost/numeric/odeint/external/openmp/openmp.hpp at line 14, boost/numeric/odeint/external/openmp/openmp_state.hpp at line 14, boost/numeric/odeint/external/thrust/thrust_algebra.hpp at line 14, boost/numeric/odeint/external/thrust/thrust_operations.hpp at line 13, boost/numeric/odeint/external/thrust/thrust_resize.hpp at line 13, boost/numeric/odeint/external/vexcl/vexcl_copy.hpp at line 13, boost/numeric/odeint/external/vexcl/vexcl_resize.hpp at line 14, boost/numeric/odeint/external/vexcl/vexcl_same_instance.hpp at line 13, boost/numeric/odeint/external/viennacl/viennacl_operations.hpp at line 14, boost/numeric/odeint/external/viennacl/viennacl_resize.hpp at line 14, boost/numeric/odeint/integrate/check_adapter.hpp at line 12, boost/numeric/odeint/integrate/detail/functors.hpp at line 13, boost/numeric/odeint/integrate/detail/integrate_adaptive.hpp at line 14, boost/numeric/odeint/integrate/detail/integrate_const.hpp at line 14, boost/numeric/odeint/integrate/detail/integrate_n_steps.hpp at line 14, boost/numeric/odeint/integrate/detail/integrate_times.hpp at line 14, boost/numeric/odeint/integrate/integrate.hpp at line 13, boost/numeric/odeint/integrate/integrate_adaptive.hpp at line 13, boost/numeric/odeint/integrate/integrate_const.hpp at line 14, boost/numeric/odeint/integrate/integrate_n_steps.hpp at line 13, boost/numeric/odeint/integrate/integrate_times.hpp at line 13, boost/numeric/odeint/integrate/max_step_checker.hpp at line 12, boost/numeric/odeint/integrate/null_observer.hpp at line 13, boost/numeric/odeint/integrate/observer_collection.hpp at line 13, boost/numeric/odeint/iterator/adaptive_iterator.hpp at line 14, boost/numeric/odeint/iterator/adaptive_time_iterator.hpp at line 14, boost/numeric/odeint/iterator/const_step_iterator.hpp at line 14, boost/numeric/odeint/iterator/const_step_time_iterator.hpp at line 14, boost/numeric/odeint/iterator/detail/ode_iterator_base.hpp at line 14, boost/numeric/odeint/iterator/integrate/detail/functors.hpp at line 13, boost/numeric/odeint/iterator/integrate/detail/integrate_adaptive.hpp at line 13, boost/numeric/odeint/iterator/integrate/detail/integrate_const.hpp at line 13, boost/numeric/odeint/iterator/integrate/detail/integrate_n_steps.hpp at line 13, boost/numeric/odeint/iterator/integrate/detail/integrate_times.hpp at line 13, boost/numeric/odeint/iterator/integrate/integrate.hpp at line 13, boost/numeric/odeint/iterator/integrate/integrate_adaptive.hpp at line 13, boost/numeric/odeint/iterator/integrate/integrate_const.hpp at line 14, boost/numeric/odeint/iterator/integrate/integrate_n_steps.hpp at line 13, boost/numeric/odeint/iterator/integrate/integrate_times.hpp at line 13, boost/numeric/odeint/iterator/integrate/null_observer.hpp at line 13, boost/numeric/odeint/iterator/integrate/observer_collection.hpp at line 13, boost/numeric/odeint/iterator/n_step_iterator.hpp at line 14, boost/numeric/odeint/iterator/n_step_time_iterator.hpp at line 15, boost/numeric/odeint/iterator/times_iterator.hpp at line 14, boost/numeric/odeint/iterator/times_time_iterator.hpp at line 15, boost/numeric/odeint/stepper/adams_bashforth.hpp at line 16, boost/numeric/odeint/stepper/adams_bashforth_moulton.hpp at line 14, boost/numeric/odeint/stepper/adams_moulton.hpp at line 15, boost/numeric/odeint/stepper/base/algebra_stepper_base.hpp at line 13, boost/numeric/odeint/stepper/base/explicit_error_stepper_base.hpp at line 14, boost/numeric/odeint/stepper/base/explicit_error_stepper_fsal_base.hpp at line 14, boost/numeric/odeint/stepper/base/explicit_stepper_base.hpp at line 14, boost/numeric/odeint/stepper/base/symplectic_rkn_stepper_base.hpp at line 14, boost/numeric/odeint/stepper/bulirsch_stoer_dense_out.hpp at line 14, boost/numeric/odeint/stepper/controlled_runge_kutta.hpp at line 13, boost/numeric/odeint/stepper/controlled_step_result.hpp at line 13, boost/numeric/odeint/stepper/dense_output_runge_kutta.hpp at line 15, boost/numeric/odeint/stepper/detail/adams_bashforth_call_algebra.hpp at line 13, boost/numeric/odeint/stepper/detail/adams_bashforth_coefficients.hpp at line 13, boost/numeric/odeint/stepper/detail/adams_moulton_call_algebra.hpp at line 13, boost/numeric/odeint/stepper/detail/adams_moulton_coefficients.hpp at line 13, boost/numeric/odeint/stepper/detail/generic_rk_algorithm.hpp at line 14, boost/numeric/odeint/stepper/detail/generic_rk_call_algebra.hpp at line 13, boost/numeric/odeint/stepper/detail/generic_rk_operations.hpp at line 13, boost/numeric/odeint/stepper/detail/rotating_buffer.hpp at line 13, boost/numeric/odeint/stepper/euler.hpp at line 14, boost/numeric/odeint/stepper/explicit_error_generic_rk.hpp at line 14, boost/numeric/odeint/stepper/explicit_generic_rk.hpp at line 14, boost/numeric/odeint/stepper/generation.hpp at line 13, boost/numeric/odeint/stepper/generation/generation_controlled_runge_kutta.hpp at line 13, boost/numeric/odeint/stepper/generation/generation_dense_output_runge_kutta.hpp at line 13, boost/numeric/odeint/stepper/generation/generation_rosenbrock4.hpp at line 13, boost/numeric/odeint/stepper/generation/generation_runge_kutta_cash_karp54.hpp at line 13, boost/numeric/odeint/stepper/generation/generation_runge_kutta_cash_karp54_classic.hpp at line 14, boost/numeric/odeint/stepper/generation/generation_runge_kutta_dopri5.hpp at line 13, boost/numeric/odeint/stepper/generation/generation_runge_kutta_fehlberg78.hpp at line 13, boost/numeric/odeint/stepper/generation/make_controlled.hpp at line 13, boost/numeric/odeint/stepper/generation/make_dense_output.hpp at line 13, boost/numeric/odeint/stepper/implicit_euler.hpp at line 14, boost/numeric/odeint/stepper/modified_midpoint.hpp at line 14, boost/numeric/odeint/stepper/rosenbrock4.hpp at line 15, boost/numeric/odeint/stepper/rosenbrock4_controller.hpp at line 14, boost/numeric/odeint/stepper/rosenbrock4_dense_output.hpp at line 14, boost/numeric/odeint/stepper/runge_kutta4.hpp at line 13, boost/numeric/odeint/stepper/runge_kutta4_classic.hpp at line 14, boost/numeric/odeint/stepper/runge_kutta_cash_karp54.hpp at line 13, boost/numeric/odeint/stepper/runge_kutta_cash_karp54_classic.hpp at line 14, boost/numeric/odeint/stepper/runge_kutta_dopri5.hpp at line 14, boost/numeric/odeint/stepper/runge_kutta_fehlberg78.hpp at line 13, boost/numeric/odeint/stepper/stepper_categories.hpp at line 13, boost/numeric/odeint/stepper/symplectic_euler.hpp at line 13, boost/numeric/odeint/stepper/symplectic_rkn_sb3a_mclachlan.hpp at line 13, boost/numeric/odeint/util/copy.hpp at line 13, boost/numeric/odeint/util/detail/is_range.hpp at line 15, boost/numeric/odeint/util/detail/less_with_sign.hpp at line 13, boost/numeric/odeint/util/is_pair.hpp at line 13, boost/numeric/odeint/util/is_resizeable.hpp at line 13, boost/numeric/odeint/util/n_ary_helper.hpp at line 12, boost/numeric/odeint/util/odeint_error.hpp at line 12, boost/numeric/odeint/util/resize.hpp at line 14, boost/numeric/odeint/util/resizer.hpp at line 13, boost/numeric/odeint/util/same_instance.hpp at line 13, boost/numeric/odeint/util/same_size.hpp at line 14, boost/numeric/odeint/util/split.hpp at line 14, boost/numeric/odeint/util/split_adaptor.hpp at line 14, boost/numeric/odeint/util/state_wrapper.hpp at line 14, boost/numeric/odeint/util/ublas_wrapper.hpp at line 13, boost/numeric/odeint/util/unwrap_reference.hpp at line 13, boost/numeric/odeint/version.hpp at line 13
+ License text:
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or
+ copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/numeric/odeint.hpp [12:14]
+ boost/numeric/odeint/algebra/algebra_dispatcher.hpp [12:14]
+ boost/numeric/odeint/algebra/array_algebra.hpp [16:18]
+ boost/numeric/odeint/algebra/detail/extract_value_type.hpp [12:14]
+ boost/numeric/odeint/algebra/detail/macros.hpp [12:14]
+ boost/numeric/odeint/algebra/detail/norm_inf.hpp [12:14]
+ boost/numeric/odeint/algebra/fusion_algebra.hpp [12:14]
+ boost/numeric/odeint/algebra/norm_result_type.hpp [12:14]
+ boost/numeric/odeint/algebra/operations_dispatcher.hpp [12:14]
+ boost/numeric/odeint/algebra/vector_space_algebra.hpp [12:14]
+ boost/numeric/odeint/config.hpp [12:14]
+ boost/numeric/odeint/external/compute/compute_algebra.hpp [12:14]
+ boost/numeric/odeint/external/compute/compute_operations.hpp [12:14]
+ boost/numeric/odeint/external/compute/compute_resize.hpp [12:14]
+ boost/numeric/odeint/external/gsl/gsl_wrapper.hpp [12:14]
+ boost/numeric/odeint/external/mkl/mkl_operations.hpp [14:16]
+ boost/numeric/odeint/external/mpi/mpi.hpp [13:15]
+ boost/numeric/odeint/external/mpi/mpi_nested_algebra.hpp [13:15]
+ boost/numeric/odeint/external/mpi/mpi_state.hpp [13:15]
+ boost/numeric/odeint/external/mpi/mpi_vector_state.hpp [13:15]
+ boost/numeric/odeint/external/mtl4/mtl4.hpp [12:14]
+ boost/numeric/odeint/external/mtl4/mtl4_algebra_dispatcher.hpp [12:14]
+ boost/numeric/odeint/external/openmp/openmp.hpp [13:15]
+ boost/numeric/odeint/external/openmp/openmp_state.hpp [13:15]
+ boost/numeric/odeint/external/thrust/thrust_algebra.hpp [13:15]
+ boost/numeric/odeint/external/thrust/thrust_operations.hpp [12:14]
+ boost/numeric/odeint/external/thrust/thrust_resize.hpp [12:14]
+ boost/numeric/odeint/external/vexcl/vexcl_copy.hpp [12:14]
+ boost/numeric/odeint/external/vexcl/vexcl_resize.hpp [13:15]
+ boost/numeric/odeint/external/vexcl/vexcl_same_instance.hpp [12:14]
+ boost/numeric/odeint/external/viennacl/viennacl_operations.hpp [13:15]
+ boost/numeric/odeint/external/viennacl/viennacl_resize.hpp [13:15]
+ boost/numeric/odeint/integrate/check_adapter.hpp [11:13]
+ boost/numeric/odeint/integrate/detail/functors.hpp [12:14]
+ boost/numeric/odeint/integrate/detail/integrate_adaptive.hpp [13:15]
+ boost/numeric/odeint/integrate/detail/integrate_const.hpp [13:15]
+ boost/numeric/odeint/integrate/detail/integrate_n_steps.hpp [13:15]
+ boost/numeric/odeint/integrate/detail/integrate_times.hpp [13:15]
+ boost/numeric/odeint/integrate/integrate.hpp [12:14]
+ boost/numeric/odeint/integrate/integrate_adaptive.hpp [12:14]
+ boost/numeric/odeint/integrate/integrate_const.hpp [13:15]
+ boost/numeric/odeint/integrate/integrate_n_steps.hpp [12:14]
+ boost/numeric/odeint/integrate/integrate_times.hpp [12:14]
+ boost/numeric/odeint/integrate/max_step_checker.hpp [11:13]
+ boost/numeric/odeint/integrate/null_observer.hpp [12:14]
+ boost/numeric/odeint/integrate/observer_collection.hpp [12:14]
+ boost/numeric/odeint/iterator/adaptive_iterator.hpp [13:15]
+ boost/numeric/odeint/iterator/adaptive_time_iterator.hpp [13:15]
+ boost/numeric/odeint/iterator/const_step_iterator.hpp [13:15]
+ boost/numeric/odeint/iterator/const_step_time_iterator.hpp [13:15]
+ boost/numeric/odeint/iterator/detail/ode_iterator_base.hpp [13:15]
+ boost/numeric/odeint/iterator/integrate/detail/functors.hpp [12:14]
+ boost/numeric/odeint/iterator/integrate/detail/integrate_adaptive.hpp [12:14]
+ boost/numeric/odeint/iterator/integrate/detail/integrate_const.hpp [12:14]
+ boost/numeric/odeint/iterator/integrate/detail/integrate_n_steps.hpp [12:14]
+ boost/numeric/odeint/iterator/integrate/detail/integrate_times.hpp [12:14]
+ boost/numeric/odeint/iterator/integrate/integrate.hpp [12:14]
+ boost/numeric/odeint/iterator/integrate/integrate_adaptive.hpp [12:14]
+ boost/numeric/odeint/iterator/integrate/integrate_const.hpp [13:15]
+ boost/numeric/odeint/iterator/integrate/integrate_n_steps.hpp [12:14]
+ boost/numeric/odeint/iterator/integrate/integrate_times.hpp [12:14]
+ boost/numeric/odeint/iterator/integrate/null_observer.hpp [12:14]
+ boost/numeric/odeint/iterator/integrate/observer_collection.hpp [12:14]
+ boost/numeric/odeint/iterator/n_step_iterator.hpp [13:15]
+ boost/numeric/odeint/iterator/n_step_time_iterator.hpp [14:16]
+ boost/numeric/odeint/iterator/times_iterator.hpp [13:15]
+ boost/numeric/odeint/iterator/times_time_iterator.hpp [14:16]
+ boost/numeric/odeint/stepper/adams_bashforth.hpp [15:17]
+ boost/numeric/odeint/stepper/adams_bashforth_moulton.hpp [13:15]
+ boost/numeric/odeint/stepper/adams_moulton.hpp [14:16]
+ boost/numeric/odeint/stepper/base/algebra_stepper_base.hpp [12:14]
+ boost/numeric/odeint/stepper/base/explicit_error_stepper_base.hpp [13:15]
+ boost/numeric/odeint/stepper/base/explicit_error_stepper_fsal_base.hpp [13:15]
+ boost/numeric/odeint/stepper/base/explicit_stepper_base.hpp [13:15]
+ boost/numeric/odeint/stepper/base/symplectic_rkn_stepper_base.hpp [13:15]
+ boost/numeric/odeint/stepper/bulirsch_stoer_dense_out.hpp [13:15]
+ boost/numeric/odeint/stepper/controlled_runge_kutta.hpp [12:14]
+ boost/numeric/odeint/stepper/controlled_step_result.hpp [12:14]
+ boost/numeric/odeint/stepper/dense_output_runge_kutta.hpp [14:16]
+ boost/numeric/odeint/stepper/detail/adams_bashforth_call_algebra.hpp [12:14]
+ boost/numeric/odeint/stepper/detail/adams_bashforth_coefficients.hpp [12:14]
+ boost/numeric/odeint/stepper/detail/adams_moulton_call_algebra.hpp [12:14]
+ boost/numeric/odeint/stepper/detail/adams_moulton_coefficients.hpp [12:14]
+ boost/numeric/odeint/stepper/detail/generic_rk_algorithm.hpp [13:15]
+ boost/numeric/odeint/stepper/detail/generic_rk_call_algebra.hpp [12:14]
+ boost/numeric/odeint/stepper/detail/generic_rk_operations.hpp [12:14]
+ boost/numeric/odeint/stepper/detail/rotating_buffer.hpp [12:14]
+ boost/numeric/odeint/stepper/euler.hpp [13:15]
+ boost/numeric/odeint/stepper/explicit_error_generic_rk.hpp [13:15]
+ boost/numeric/odeint/stepper/explicit_generic_rk.hpp [13:15]
+ boost/numeric/odeint/stepper/generation.hpp [12:14]
+ boost/numeric/odeint/stepper/generation/generation_controlled_runge_kutta.hpp [12:14]
+ boost/numeric/odeint/stepper/generation/generation_dense_output_runge_kutta.hpp [12:14]
+ boost/numeric/odeint/stepper/generation/generation_rosenbrock4.hpp [12:14]
+ boost/numeric/odeint/stepper/generation/generation_runge_kutta_cash_karp54.hpp [12:14]
+ boost/numeric/odeint/stepper/generation/generation_runge_kutta_cash_karp54_classic.hpp [13:15]
+ boost/numeric/odeint/stepper/generation/generation_runge_kutta_dopri5.hpp [12:14]
+ boost/numeric/odeint/stepper/generation/generation_runge_kutta_fehlberg78.hpp [12:14]
+ boost/numeric/odeint/stepper/generation/make_controlled.hpp [12:14]
+ boost/numeric/odeint/stepper/generation/make_dense_output.hpp [12:14]
+ boost/numeric/odeint/stepper/implicit_euler.hpp [13:15]
+ boost/numeric/odeint/stepper/modified_midpoint.hpp [13:15]
+ boost/numeric/odeint/stepper/rosenbrock4.hpp [14:16]
+ boost/numeric/odeint/stepper/rosenbrock4_controller.hpp [13:15]
+ boost/numeric/odeint/stepper/rosenbrock4_dense_output.hpp [13:15]
+ boost/numeric/odeint/stepper/runge_kutta4.hpp [12:14]
+ boost/numeric/odeint/stepper/runge_kutta4_classic.hpp [13:15]
+ boost/numeric/odeint/stepper/runge_kutta_cash_karp54.hpp [12:14]
+ boost/numeric/odeint/stepper/runge_kutta_cash_karp54_classic.hpp [13:15]
+ boost/numeric/odeint/stepper/runge_kutta_dopri5.hpp [13:15]
+ boost/numeric/odeint/stepper/runge_kutta_fehlberg78.hpp [12:14]
+ boost/numeric/odeint/stepper/stepper_categories.hpp [12:14]
+ boost/numeric/odeint/stepper/symplectic_euler.hpp [12:14]
+ boost/numeric/odeint/stepper/symplectic_rkn_sb3a_mclachlan.hpp [12:14]
+ boost/numeric/odeint/util/copy.hpp [12:14]
+ boost/numeric/odeint/util/detail/is_range.hpp [14:16]
+ boost/numeric/odeint/util/detail/less_with_sign.hpp [12:14]
+ boost/numeric/odeint/util/is_pair.hpp [12:14]
+ boost/numeric/odeint/util/is_resizeable.hpp [12:14]
+ boost/numeric/odeint/util/n_ary_helper.hpp [11:13]
+ boost/numeric/odeint/util/odeint_error.hpp [11:13]
+ boost/numeric/odeint/util/resize.hpp [13:15]
+ boost/numeric/odeint/util/resizer.hpp [12:14]
+ boost/numeric/odeint/util/same_instance.hpp [12:14]
+ boost/numeric/odeint/util/same_size.hpp [13:15]
+ boost/numeric/odeint/util/split.hpp [13:15]
+ boost/numeric/odeint/util/split_adaptor.hpp [13:15]
+ boost/numeric/odeint/util/state_wrapper.hpp [13:15]
+ boost/numeric/odeint/util/ublas_wrapper.hpp [12:14]
+ boost/numeric/odeint/util/unwrap_reference.hpp [12:14]
+ boost/numeric/odeint/version.hpp [12:14]
+
+KEEP BSL-1.0 56f0f1ae21573cb9dc1a9925ad7eae91
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/detail/combine_cxx03.hpp at line 5, boost/range/detail/combine_cxx11.hpp at line 3, boost/range/detail/combine_no_rvalue.hpp at line 5, boost/range/detail/combine_rvalue.hpp at line 5, boost/range/detail/default_constructible_unary_fn.hpp at line 5, boost/range/traversal.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/range/detail/combine_cxx03.hpp [3:6]
+ boost/range/detail/combine_cxx11.hpp [1:4]
+ boost/range/detail/combine_no_rvalue.hpp [3:6]
+ boost/range/detail/combine_rvalue.hpp [3:6]
+ boost/range/detail/default_constructible_unary_fn.hpp [3:6]
+ boost/range/traversal.hpp [3:6]
+
+KEEP BSL-1.0 56f4fcb5d91e0daef7ad21bf68734337
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/allocators/detail/allocator_common.hpp at line 5, boost/interprocess/containers/allocation_type.hpp at line 5, boost/interprocess/containers/deque.hpp at line 5, boost/interprocess/containers/flat_map.hpp at line 5, boost/interprocess/containers/flat_set.hpp at line 5, boost/interprocess/containers/list.hpp at line 5, boost/interprocess/containers/map.hpp at line 5, boost/interprocess/containers/pair.hpp at line 5, boost/interprocess/containers/set.hpp at line 5, boost/interprocess/containers/slist.hpp at line 5, boost/interprocess/containers/stable_vector.hpp at line 5, boost/interprocess/containers/string.hpp at line 5, boost/interprocess/containers/vector.hpp at line 5, boost/interprocess/containers/version_type.hpp at line 5, boost/interprocess/detail/variadic_templates_tools.hpp at line 5, boost/interprocess/managed_xsi_shared_memory.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2008-2012. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/interprocess/allocators/detail/allocator_common.hpp [3:5]
+ boost/interprocess/containers/allocation_type.hpp [3:5]
+ boost/interprocess/containers/deque.hpp [3:5]
+ boost/interprocess/containers/flat_map.hpp [3:5]
+ boost/interprocess/containers/flat_set.hpp [3:5]
+ boost/interprocess/containers/list.hpp [3:5]
+ boost/interprocess/containers/map.hpp [3:5]
+ boost/interprocess/containers/pair.hpp [3:5]
+ boost/interprocess/containers/set.hpp [3:5]
+ boost/interprocess/containers/slist.hpp [3:5]
+ boost/interprocess/containers/stable_vector.hpp [3:5]
+ boost/interprocess/containers/string.hpp [3:5]
+ boost/interprocess/containers/vector.hpp [3:5]
+ boost/interprocess/containers/version_type.hpp [3:5]
+ boost/interprocess/detail/variadic_templates_tools.hpp [3:5]
+ boost/interprocess/managed_xsi_shared_memory.hpp [3:5]
+
+KEEP BSL-1.0 58d7e90122d79b0017c88c4661121868
+BELONGS ya.make
+ License text:
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 76.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/callable_traits.hpp [4:5]
+ boost/callable_traits/add_member_const.hpp [4:5]
+ boost/callable_traits/add_member_cv.hpp [4:5]
+ boost/callable_traits/add_member_lvalue_reference.hpp [4:5]
+ boost/callable_traits/add_member_rvalue_reference.hpp [4:5]
+ boost/callable_traits/add_member_volatile.hpp [4:5]
+ boost/callable_traits/add_noexcept.hpp [5:6]
+ boost/callable_traits/add_transaction_safe.hpp [5:6]
+ boost/callable_traits/add_varargs.hpp [4:5]
+ boost/callable_traits/apply_member_pointer.hpp [4:5]
+ boost/callable_traits/apply_return.hpp [4:5]
+ boost/callable_traits/args.hpp [4:5]
+ boost/callable_traits/class_of.hpp [4:5]
+ boost/callable_traits/detail/config.hpp [4:5]
+ boost/callable_traits/detail/core.hpp [4:5]
+ boost/callable_traits/detail/function.hpp [4:5]
+ boost/callable_traits/detail/function_object.hpp [4:5]
+ boost/callable_traits/detail/is_invocable_impl.hpp [5:6]
+ boost/callable_traits/detail/pmd.hpp [4:5]
+ boost/callable_traits/detail/pmf.hpp [4:5]
+ boost/callable_traits/detail/polyfills/disjunction.hpp [4:5]
+ boost/callable_traits/detail/polyfills/make_index_sequence.hpp [4:5]
+ boost/callable_traits/detail/qualifier_flags.hpp [5:6]
+ boost/callable_traits/detail/set_function_qualifiers.hpp [4:5]
+ boost/callable_traits/detail/sfinae_errors.hpp [4:5]
+ boost/callable_traits/detail/traits.hpp [4:5]
+ boost/callable_traits/detail/unguarded/function.hpp [4:5]
+ boost/callable_traits/detail/unguarded/function_2.hpp [4:5]
+ boost/callable_traits/detail/unguarded/function_3.hpp [4:5]
+ boost/callable_traits/detail/unguarded/function_ptr.hpp [4:5]
+ boost/callable_traits/detail/unguarded/function_ptr_2.hpp [4:5]
+ boost/callable_traits/detail/unguarded/function_ptr_3.hpp [4:5]
+ boost/callable_traits/detail/unguarded/function_ptr_varargs.hpp [4:5]
+ boost/callable_traits/detail/unguarded/function_ptr_varargs_2.hpp [4:5]
+ boost/callable_traits/detail/unguarded/function_ptr_varargs_3.hpp [4:5]
+ boost/callable_traits/detail/unguarded/pmf.hpp [5:6]
+ boost/callable_traits/detail/unguarded/pmf_2.hpp [4:5]
+ boost/callable_traits/detail/unguarded/pmf_3.hpp [4:5]
+ boost/callable_traits/detail/unguarded/pmf_4.hpp [4:5]
+ boost/callable_traits/detail/unguarded/pmf_varargs.hpp [4:5]
+ boost/callable_traits/detail/unguarded/pmf_varargs_2.hpp [4:5]
+ boost/callable_traits/detail/unguarded/pmf_varargs_3.hpp [4:5]
+ boost/callable_traits/detail/unguarded/pmf_varargs_4.hpp [4:5]
+ boost/callable_traits/detail/utility.hpp [4:5]
+ boost/callable_traits/function_type.hpp [4:5]
+ boost/callable_traits/has_member_qualifiers.hpp [4:5]
+ boost/callable_traits/has_varargs.hpp [4:5]
+ boost/callable_traits/has_void_return.hpp [4:5]
+ boost/callable_traits/is_const_member.hpp [4:5]
+ boost/callable_traits/is_cv_member.hpp [4:5]
+ boost/callable_traits/is_invocable.hpp [4:5]
+ boost/callable_traits/is_lvalue_reference_member.hpp [4:5]
+ boost/callable_traits/is_noexcept.hpp [5:6]
+ boost/callable_traits/is_reference_member.hpp [5:6]
+ boost/callable_traits/is_rvalue_reference_member.hpp [5:6]
+ boost/callable_traits/is_transaction_safe.hpp [5:6]
+ boost/callable_traits/is_volatile_member.hpp [5:6]
+ boost/callable_traits/qualified_class_of.hpp [5:6]
+ boost/callable_traits/remove_member_const.hpp [4:5]
+ boost/callable_traits/remove_member_cv.hpp [5:6]
+ boost/callable_traits/remove_member_reference.hpp [4:5]
+ boost/callable_traits/remove_member_volatile.hpp [4:5]
+ boost/callable_traits/remove_noexcept.hpp [5:6]
+ boost/callable_traits/remove_transaction_safe.hpp [5:6]
+ boost/callable_traits/remove_varargs.hpp [5:6]
+ boost/callable_traits/return_type.hpp [5:6]
+ boost/hana.hpp [7:8]
+ boost/hana/accessors.hpp [6:7]
+ boost/hana/adapt_adt.hpp [6:7]
+ boost/hana/adapt_struct.hpp [6:7]
+ boost/hana/adjust.hpp [6:7]
+ boost/hana/adjust_if.hpp [6:7]
+ boost/hana/all.hpp [6:7]
+ boost/hana/all_of.hpp [6:7]
+ boost/hana/and.hpp [6:7]
+ boost/hana/any.hpp [6:7]
+ boost/hana/any_of.hpp [6:7]
+ boost/hana/ap.hpp [6:7]
+ boost/hana/append.hpp [6:7]
+ boost/hana/assert.hpp [6:7]
+ boost/hana/at.hpp [6:7]
+ boost/hana/at_key.hpp [7:8]
+ boost/hana/back.hpp [6:7]
+ boost/hana/basic_tuple.hpp [6:7]
+ boost/hana/bool.hpp [6:7]
+ boost/hana/cartesian_product.hpp [6:7]
+ boost/hana/chain.hpp [6:7]
+ boost/hana/comparing.hpp [6:7]
+ boost/hana/concat.hpp [6:7]
+ boost/hana/concept.hpp [6:7]
+ boost/hana/concept/applicative.hpp [6:7]
+ boost/hana/concept/comonad.hpp [6:7]
+ boost/hana/concept/comparable.hpp [6:7]
+ boost/hana/concept/constant.hpp [6:7]
+ boost/hana/concept/euclidean_ring.hpp [6:7]
+ boost/hana/concept/foldable.hpp [6:7]
+ boost/hana/concept/functor.hpp [6:7]
+ boost/hana/concept/group.hpp [6:7]
+ boost/hana/concept/hashable.hpp [7:8]
+ boost/hana/concept/integral_constant.hpp [6:7]
+ boost/hana/concept/iterable.hpp [6:7]
+ boost/hana/concept/logical.hpp [6:7]
+ boost/hana/concept/metafunction.hpp [6:7]
+ boost/hana/concept/monad.hpp [6:7]
+ boost/hana/concept/monad_plus.hpp [6:7]
+ boost/hana/concept/monoid.hpp [6:7]
+ boost/hana/concept/orderable.hpp [6:7]
+ boost/hana/concept/product.hpp [6:7]
+ boost/hana/concept/ring.hpp [6:7]
+ boost/hana/concept/searchable.hpp [6:7]
+ boost/hana/concept/sequence.hpp [6:7]
+ boost/hana/concept/struct.hpp [6:7]
+ boost/hana/config.hpp [6:7]
+ boost/hana/contains.hpp [6:7]
+ boost/hana/core.hpp [6:7]
+ boost/hana/core/common.hpp [6:7]
+ boost/hana/core/default.hpp [6:7]
+ boost/hana/core/dispatch.hpp [6:7]
+ boost/hana/core/is_a.hpp [6:7]
+ boost/hana/core/make.hpp [6:7]
+ boost/hana/core/tag_of.hpp [6:7]
+ boost/hana/core/to.hpp [6:7]
+ boost/hana/core/when.hpp [6:7]
+ boost/hana/count.hpp [6:7]
+ boost/hana/count_if.hpp [6:7]
+ boost/hana/cycle.hpp [6:7]
+ boost/hana/define_struct.hpp [6:7]
+ boost/hana/detail/algorithm.hpp [6:7]
+ boost/hana/detail/any_of.hpp [6:7]
+ boost/hana/detail/array.hpp [6:7]
+ boost/hana/detail/canonical_constant.hpp [6:7]
+ boost/hana/detail/concepts.hpp [6:7]
+ boost/hana/detail/create.hpp [6:7]
+ boost/hana/detail/decay.hpp [7:8]
+ boost/hana/detail/dispatch_if.hpp [6:7]
+ boost/hana/detail/ebo.hpp [6:7]
+ boost/hana/detail/fast_and.hpp [6:7]
+ boost/hana/detail/first_unsatisfied_index.hpp [6:7]
+ boost/hana/detail/has_common_embedding.hpp [6:7]
+ boost/hana/detail/has_duplicates.hpp [6:7]
+ boost/hana/detail/hash_table.hpp [7:8]
+ boost/hana/detail/index_if.hpp [7:8]
+ boost/hana/detail/integral_constant.hpp [7:8]
+ boost/hana/detail/intrinsics.hpp [6:7]
+ boost/hana/detail/nested_by.hpp [6:7]
+ boost/hana/detail/nested_by_fwd.hpp [6:7]
+ boost/hana/detail/nested_than.hpp [6:7]
+ boost/hana/detail/nested_than_fwd.hpp [6:7]
+ boost/hana/detail/nested_to.hpp [6:7]
+ boost/hana/detail/nested_to_fwd.hpp [6:7]
+ boost/hana/detail/operators/adl.hpp [6:7]
+ boost/hana/detail/operators/arithmetic.hpp [6:7]
+ boost/hana/detail/operators/comparable.hpp [6:7]
+ boost/hana/detail/operators/iterable.hpp [6:7]
+ boost/hana/detail/operators/logical.hpp [6:7]
+ boost/hana/detail/operators/monad.hpp [6:7]
+ boost/hana/detail/operators/orderable.hpp [6:7]
+ boost/hana/detail/operators/searchable.hpp [6:7]
+ boost/hana/detail/preprocessor.hpp [6:7]
+ boost/hana/detail/std_common_type.hpp [6:7]
+ boost/hana/detail/struct_macros.hpp [11:12]
+ boost/hana/detail/type_at.hpp [6:7]
+ boost/hana/detail/type_foldl1.hpp [6:7]
+ boost/hana/detail/type_foldr1.hpp [6:7]
+ boost/hana/detail/unpack_flatten.hpp [6:7]
+ boost/hana/detail/variadic/at.hpp [6:7]
+ boost/hana/detail/variadic/drop_into.hpp [6:7]
+ boost/hana/detail/variadic/foldl1.hpp [6:7]
+ boost/hana/detail/variadic/foldr1.hpp [6:7]
+ boost/hana/detail/variadic/reverse_apply.hpp [6:7]
+ boost/hana/detail/variadic/reverse_apply/flat.hpp [6:7]
+ boost/hana/detail/variadic/reverse_apply/unrolled.hpp [6:7]
+ boost/hana/detail/variadic/split_at.hpp [6:7]
+ boost/hana/detail/variadic/take.hpp [6:7]
+ boost/hana/detail/void_t.hpp [6:7]
+ boost/hana/detail/wrong.hpp [6:7]
+ boost/hana/difference.hpp [6:7]
+ boost/hana/div.hpp [6:7]
+ boost/hana/drop_back.hpp [6:7]
+ boost/hana/drop_front.hpp [6:7]
+ boost/hana/drop_front_exactly.hpp [6:7]
+ boost/hana/drop_while.hpp [6:7]
+ boost/hana/duplicate.hpp [6:7]
+ boost/hana/empty.hpp [6:7]
+ boost/hana/equal.hpp [6:7]
+ boost/hana/erase_key.hpp [6:7]
+ boost/hana/eval.hpp [6:7]
+ boost/hana/eval_if.hpp [6:7]
+ boost/hana/experimental/printable.hpp [6:7]
+ boost/hana/experimental/type_name.hpp [6:7]
+ boost/hana/experimental/types.hpp [6:7]
+ boost/hana/experimental/view.hpp [6:7]
+ boost/hana/ext/boost.hpp [6:7]
+ boost/hana/ext/boost/fusion.hpp [6:7]
+ boost/hana/ext/boost/fusion/deque.hpp [6:7]
+ boost/hana/ext/boost/fusion/detail/common.hpp [6:7]
+ boost/hana/ext/boost/fusion/list.hpp [6:7]
+ boost/hana/ext/boost/fusion/tuple.hpp [10:11]
+ boost/hana/ext/boost/fusion/vector.hpp [6:7]
+ boost/hana/ext/boost/mpl.hpp [6:7]
+ boost/hana/ext/boost/mpl/integral_c.hpp [6:7]
+ boost/hana/ext/boost/mpl/list.hpp [6:7]
+ boost/hana/ext/boost/mpl/vector.hpp [6:7]
+ boost/hana/ext/boost/tuple.hpp [6:7]
+ boost/hana/ext/std.hpp [6:7]
+ boost/hana/ext/std/array.hpp [6:7]
+ boost/hana/ext/std/integer_sequence.hpp [6:7]
+ boost/hana/ext/std/integral_constant.hpp [6:7]
+ boost/hana/ext/std/pair.hpp [6:7]
+ boost/hana/ext/std/ratio.hpp [6:7]
+ boost/hana/ext/std/tuple.hpp [6:7]
+ boost/hana/ext/std/vector.hpp [7:8]
+ boost/hana/extend.hpp [6:7]
+ boost/hana/extract.hpp [6:7]
+ boost/hana/fill.hpp [6:7]
+ boost/hana/filter.hpp [6:7]
+ boost/hana/find.hpp [6:7]
+ boost/hana/find_if.hpp [7:8]
+ boost/hana/first.hpp [6:7]
+ boost/hana/flatten.hpp [6:7]
+ boost/hana/fold.hpp [6:7]
+ boost/hana/fold_left.hpp [6:7]
+ boost/hana/fold_right.hpp [6:7]
+ boost/hana/for_each.hpp [6:7]
+ boost/hana/front.hpp [6:7]
+ boost/hana/functional.hpp [6:7]
+ boost/hana/functional/always.hpp [6:7]
+ boost/hana/functional/apply.hpp [6:7]
+ boost/hana/functional/arg.hpp [6:7]
+ boost/hana/functional/capture.hpp [6:7]
+ boost/hana/functional/compose.hpp [6:7]
+ boost/hana/functional/curry.hpp [6:7]
+ boost/hana/functional/demux.hpp [6:7]
+ boost/hana/functional/fix.hpp [6:7]
+ boost/hana/functional/flip.hpp [6:7]
+ boost/hana/functional/id.hpp [6:7]
+ boost/hana/functional/infix.hpp [6:7]
+ boost/hana/functional/iterate.hpp [6:7]
+ boost/hana/functional/lockstep.hpp [6:7]
+ boost/hana/functional/on.hpp [6:7]
+ boost/hana/functional/overload.hpp [6:7]
+ boost/hana/functional/overload_linearly.hpp [6:7]
+ boost/hana/functional/partial.hpp [6:7]
+ boost/hana/functional/placeholder.hpp [6:7]
+ boost/hana/functional/reverse_partial.hpp [6:7]
+ boost/hana/fuse.hpp [6:7]
+ boost/hana/fwd/accessors.hpp [6:7]
+ boost/hana/fwd/adapt_adt.hpp [6:7]
+ boost/hana/fwd/adapt_struct.hpp [6:7]
+ boost/hana/fwd/adjust.hpp [6:7]
+ boost/hana/fwd/adjust_if.hpp [6:7]
+ boost/hana/fwd/all.hpp [6:7]
+ boost/hana/fwd/all_of.hpp [6:7]
+ boost/hana/fwd/and.hpp [6:7]
+ boost/hana/fwd/any.hpp [6:7]
+ boost/hana/fwd/any_of.hpp [6:7]
+ boost/hana/fwd/ap.hpp [6:7]
+ boost/hana/fwd/append.hpp [6:7]
+ boost/hana/fwd/at.hpp [6:7]
+ boost/hana/fwd/at_key.hpp [6:7]
+ boost/hana/fwd/back.hpp [6:7]
+ boost/hana/fwd/basic_tuple.hpp [6:7]
+ boost/hana/fwd/bool.hpp [6:7]
+ boost/hana/fwd/cartesian_product.hpp [6:7]
+ boost/hana/fwd/chain.hpp [6:7]
+ boost/hana/fwd/comparing.hpp [6:7]
+ boost/hana/fwd/concat.hpp [6:7]
+ boost/hana/fwd/concept/applicative.hpp [6:7]
+ boost/hana/fwd/concept/comonad.hpp [6:7]
+ boost/hana/fwd/concept/comparable.hpp [6:7]
+ boost/hana/fwd/concept/constant.hpp [6:7]
+ boost/hana/fwd/concept/euclidean_ring.hpp [6:7]
+ boost/hana/fwd/concept/foldable.hpp [6:7]
+ boost/hana/fwd/concept/functor.hpp [6:7]
+ boost/hana/fwd/concept/group.hpp [6:7]
+ boost/hana/fwd/concept/hashable.hpp [7:8]
+ boost/hana/fwd/concept/integral_constant.hpp [6:7]
+ boost/hana/fwd/concept/iterable.hpp [6:7]
+ boost/hana/fwd/concept/logical.hpp [6:7]
+ boost/hana/fwd/concept/metafunction.hpp [6:7]
+ boost/hana/fwd/concept/monad.hpp [6:7]
+ boost/hana/fwd/concept/monad_plus.hpp [6:7]
+ boost/hana/fwd/concept/monoid.hpp [6:7]
+ boost/hana/fwd/concept/orderable.hpp [6:7]
+ boost/hana/fwd/concept/product.hpp [6:7]
+ boost/hana/fwd/concept/ring.hpp [6:7]
+ boost/hana/fwd/concept/searchable.hpp [6:7]
+ boost/hana/fwd/concept/sequence.hpp [6:7]
+ boost/hana/fwd/concept/struct.hpp [6:7]
+ boost/hana/fwd/contains.hpp [6:7]
+ boost/hana/fwd/core.hpp [6:7]
+ boost/hana/fwd/core/common.hpp [6:7]
+ boost/hana/fwd/core/default.hpp [6:7]
+ boost/hana/fwd/core/is_a.hpp [6:7]
+ boost/hana/fwd/core/make.hpp [6:7]
+ boost/hana/fwd/core/tag_of.hpp [6:7]
+ boost/hana/fwd/core/to.hpp [6:7]
+ boost/hana/fwd/core/when.hpp [6:7]
+ boost/hana/fwd/count.hpp [6:7]
+ boost/hana/fwd/count_if.hpp [6:7]
+ boost/hana/fwd/cycle.hpp [6:7]
+ boost/hana/fwd/define_struct.hpp [6:7]
+ boost/hana/fwd/difference.hpp [6:7]
+ boost/hana/fwd/div.hpp [6:7]
+ boost/hana/fwd/drop_back.hpp [6:7]
+ boost/hana/fwd/drop_front.hpp [6:7]
+ boost/hana/fwd/drop_front_exactly.hpp [6:7]
+ boost/hana/fwd/drop_while.hpp [6:7]
+ boost/hana/fwd/duplicate.hpp [6:7]
+ boost/hana/fwd/empty.hpp [6:7]
+ boost/hana/fwd/equal.hpp [6:7]
+ boost/hana/fwd/erase_key.hpp [6:7]
+ boost/hana/fwd/eval.hpp [6:7]
+ boost/hana/fwd/eval_if.hpp [6:7]
+ boost/hana/fwd/extend.hpp [6:7]
+ boost/hana/fwd/extract.hpp [6:7]
+ boost/hana/fwd/fill.hpp [6:7]
+ boost/hana/fwd/filter.hpp [6:7]
+ boost/hana/fwd/find.hpp [6:7]
+ boost/hana/fwd/find_if.hpp [6:7]
+ boost/hana/fwd/first.hpp [6:7]
+ boost/hana/fwd/flatten.hpp [6:7]
+ boost/hana/fwd/fold.hpp [6:7]
+ boost/hana/fwd/fold_left.hpp [6:7]
+ boost/hana/fwd/fold_right.hpp [6:7]
+ boost/hana/fwd/for_each.hpp [6:7]
+ boost/hana/fwd/front.hpp [6:7]
+ boost/hana/fwd/fuse.hpp [6:7]
+ boost/hana/fwd/greater.hpp [6:7]
+ boost/hana/fwd/greater_equal.hpp [6:7]
+ boost/hana/fwd/group.hpp [6:7]
+ boost/hana/fwd/hash.hpp [7:8]
+ boost/hana/fwd/if.hpp [6:7]
+ boost/hana/fwd/index_if.hpp [7:8]
+ boost/hana/fwd/insert.hpp [6:7]
+ boost/hana/fwd/insert_range.hpp [6:7]
+ boost/hana/fwd/integral_constant.hpp [6:7]
+ boost/hana/fwd/intersection.hpp [6:7]
+ boost/hana/fwd/intersperse.hpp [6:7]
+ boost/hana/fwd/is_disjoint.hpp [6:7]
+ boost/hana/fwd/is_empty.hpp [6:7]
+ boost/hana/fwd/is_subset.hpp [6:7]
+ boost/hana/fwd/keys.hpp [6:7]
+ boost/hana/fwd/lazy.hpp [6:7]
+ boost/hana/fwd/length.hpp [6:7]
+ boost/hana/fwd/less.hpp [6:7]
+ boost/hana/fwd/less_equal.hpp [6:7]
+ boost/hana/fwd/lexicographical_compare.hpp [6:7]
+ boost/hana/fwd/lift.hpp [6:7]
+ boost/hana/fwd/map.hpp [6:7]
+ boost/hana/fwd/max.hpp [6:7]
+ boost/hana/fwd/maximum.hpp [6:7]
+ boost/hana/fwd/members.hpp [6:7]
+ boost/hana/fwd/min.hpp [6:7]
+ boost/hana/fwd/minimum.hpp [6:7]
+ boost/hana/fwd/minus.hpp [6:7]
+ boost/hana/fwd/mod.hpp [6:7]
+ boost/hana/fwd/monadic_compose.hpp [6:7]
+ boost/hana/fwd/monadic_fold_left.hpp [6:7]
+ boost/hana/fwd/monadic_fold_right.hpp [6:7]
+ boost/hana/fwd/mult.hpp [6:7]
+ boost/hana/fwd/negate.hpp [6:7]
+ boost/hana/fwd/none.hpp [6:7]
+ boost/hana/fwd/none_of.hpp [6:7]
+ boost/hana/fwd/not.hpp [6:7]
+ boost/hana/fwd/not_equal.hpp [6:7]
+ boost/hana/fwd/one.hpp [6:7]
+ boost/hana/fwd/optional.hpp [6:7]
+ boost/hana/fwd/or.hpp [6:7]
+ boost/hana/fwd/ordering.hpp [6:7]
+ boost/hana/fwd/pair.hpp [6:7]
+ boost/hana/fwd/partition.hpp [6:7]
+ boost/hana/fwd/permutations.hpp [6:7]
+ boost/hana/fwd/plus.hpp [6:7]
+ boost/hana/fwd/power.hpp [6:7]
+ boost/hana/fwd/prefix.hpp [6:7]
+ boost/hana/fwd/prepend.hpp [6:7]
+ boost/hana/fwd/product.hpp [6:7]
+ boost/hana/fwd/range.hpp [6:7]
+ boost/hana/fwd/remove.hpp [6:7]
+ boost/hana/fwd/remove_at.hpp [6:7]
+ boost/hana/fwd/remove_if.hpp [6:7]
+ boost/hana/fwd/remove_range.hpp [6:7]
+ boost/hana/fwd/repeat.hpp [6:7]
+ boost/hana/fwd/replace.hpp [6:7]
+ boost/hana/fwd/replace_if.hpp [6:7]
+ boost/hana/fwd/replicate.hpp [6:7]
+ boost/hana/fwd/reverse.hpp [6:7]
+ boost/hana/fwd/reverse_fold.hpp [6:7]
+ boost/hana/fwd/scan_left.hpp [6:7]
+ boost/hana/fwd/scan_right.hpp [6:7]
+ boost/hana/fwd/second.hpp [6:7]
+ boost/hana/fwd/set.hpp [6:7]
+ boost/hana/fwd/size.hpp [6:7]
+ boost/hana/fwd/slice.hpp [6:7]
+ boost/hana/fwd/sort.hpp [6:7]
+ boost/hana/fwd/span.hpp [6:7]
+ boost/hana/fwd/string.hpp [6:7]
+ boost/hana/fwd/suffix.hpp [6:7]
+ boost/hana/fwd/sum.hpp [6:7]
+ boost/hana/fwd/symmetric_difference.hpp [6:7]
+ boost/hana/fwd/take_back.hpp [6:7]
+ boost/hana/fwd/take_front.hpp [6:7]
+ boost/hana/fwd/take_while.hpp [6:7]
+ boost/hana/fwd/tap.hpp [6:7]
+ boost/hana/fwd/then.hpp [6:7]
+ boost/hana/fwd/transform.hpp [6:7]
+ boost/hana/fwd/tuple.hpp [6:7]
+ boost/hana/fwd/type.hpp [6:7]
+ boost/hana/fwd/unfold_left.hpp [6:7]
+ boost/hana/fwd/unfold_right.hpp [6:7]
+ boost/hana/fwd/union.hpp [6:7]
+ boost/hana/fwd/unique.hpp [6:7]
+ boost/hana/fwd/unpack.hpp [6:7]
+ boost/hana/fwd/value.hpp [6:7]
+ boost/hana/fwd/while.hpp [6:7]
+ boost/hana/fwd/zero.hpp [6:7]
+ boost/hana/fwd/zip.hpp [6:7]
+ boost/hana/fwd/zip_shortest.hpp [6:7]
+ boost/hana/fwd/zip_shortest_with.hpp [6:7]
+ boost/hana/fwd/zip_with.hpp [6:7]
+ boost/hana/greater.hpp [6:7]
+ boost/hana/greater_equal.hpp [6:7]
+ boost/hana/group.hpp [6:7]
+ boost/hana/hash.hpp [6:7]
+ boost/hana/if.hpp [6:7]
+ boost/hana/index_if.hpp [7:8]
+ boost/hana/insert.hpp [6:7]
+ boost/hana/insert_range.hpp [6:7]
+ boost/hana/integral_constant.hpp [6:7]
+ boost/hana/intersection.hpp [6:7]
+ boost/hana/intersperse.hpp [6:7]
+ boost/hana/is_disjoint.hpp [6:7]
+ boost/hana/is_empty.hpp [6:7]
+ boost/hana/is_subset.hpp [6:7]
+ boost/hana/keys.hpp [6:7]
+ boost/hana/lazy.hpp [6:7]
+ boost/hana/length.hpp [6:7]
+ boost/hana/less.hpp [6:7]
+ boost/hana/less_equal.hpp [6:7]
+ boost/hana/lexicographical_compare.hpp [6:7]
+ boost/hana/lift.hpp [6:7]
+ boost/hana/map.hpp [6:7]
+ boost/hana/max.hpp [6:7]
+ boost/hana/maximum.hpp [6:7]
+ boost/hana/members.hpp [6:7]
+ boost/hana/min.hpp [6:7]
+ boost/hana/minimum.hpp [6:7]
+ boost/hana/minus.hpp [6:7]
+ boost/hana/mod.hpp [6:7]
+ boost/hana/monadic_compose.hpp [6:7]
+ boost/hana/monadic_fold_left.hpp [6:7]
+ boost/hana/monadic_fold_right.hpp [6:7]
+ boost/hana/mult.hpp [6:7]
+ boost/hana/negate.hpp [6:7]
+ boost/hana/none.hpp [6:7]
+ boost/hana/none_of.hpp [6:7]
+ boost/hana/not.hpp [6:7]
+ boost/hana/not_equal.hpp [6:7]
+ boost/hana/one.hpp [6:7]
+ boost/hana/optional.hpp [6:7]
+ boost/hana/or.hpp [6:7]
+ boost/hana/ordering.hpp [6:7]
+ boost/hana/pair.hpp [6:7]
+ boost/hana/partition.hpp [6:7]
+ boost/hana/permutations.hpp [6:7]
+ boost/hana/plus.hpp [6:7]
+ boost/hana/power.hpp [6:7]
+ boost/hana/prefix.hpp [6:7]
+ boost/hana/prepend.hpp [6:7]
+ boost/hana/product.hpp [6:7]
+ boost/hana/range.hpp [6:7]
+ boost/hana/remove.hpp [6:7]
+ boost/hana/remove_at.hpp [6:7]
+ boost/hana/remove_if.hpp [6:7]
+ boost/hana/remove_range.hpp [6:7]
+ boost/hana/repeat.hpp [6:7]
+ boost/hana/replace.hpp [6:7]
+ boost/hana/replace_if.hpp [6:7]
+ boost/hana/replicate.hpp [6:7]
+ boost/hana/reverse.hpp [6:7]
+ boost/hana/reverse_fold.hpp [6:7]
+ boost/hana/scan_left.hpp [6:7]
+ boost/hana/scan_right.hpp [6:7]
+ boost/hana/second.hpp [6:7]
+ boost/hana/set.hpp [6:7]
+ boost/hana/size.hpp [6:7]
+ boost/hana/slice.hpp [6:7]
+ boost/hana/sort.hpp [6:7]
+ boost/hana/span.hpp [6:7]
+ boost/hana/string.hpp [6:7]
+ boost/hana/suffix.hpp [6:7]
+ boost/hana/sum.hpp [6:7]
+ boost/hana/symmetric_difference.hpp [6:7]
+ boost/hana/take_back.hpp [6:7]
+ boost/hana/take_front.hpp [6:7]
+ boost/hana/take_while.hpp [6:7]
+ boost/hana/tap.hpp [6:7]
+ boost/hana/then.hpp [6:7]
+ boost/hana/traits.hpp [7:8]
+ boost/hana/transform.hpp [6:7]
+ boost/hana/tuple.hpp [7:8]
+ boost/hana/type.hpp [6:7]
+ boost/hana/unfold_left.hpp [6:7]
+ boost/hana/unfold_right.hpp [6:7]
+ boost/hana/union.hpp [6:7]
+ boost/hana/unique.hpp [6:7]
+ boost/hana/unpack.hpp [6:7]
+ boost/hana/value.hpp [6:7]
+ boost/hana/version.hpp [6:7]
+ boost/hana/while.hpp [6:7]
+ boost/hana/zero.hpp [6:7]
+ boost/hana/zip.hpp [6:7]
+ boost/hana/zip_shortest.hpp [6:7]
+ boost/hana/zip_shortest_with.hpp [6:7]
+ boost/hana/zip_with.hpp [6:7]
+
+KEEP BSD-3-Clause 5921395c41a81cf68ebfde6c58320ef0
+BELONGS ya.make
+ License text:
+ // Using the Mac OS X system BSD-style C library.
+ Scancode info:
+ Original SPDX id: BSD-3-Clause
+ Score : 90.00
+ Match type : REFERENCE
+ Links : http://www.opensource.org/licenses/BSD-3-Clause, https://spdx.org/licenses/BSD-3-Clause
+ Files with this license:
+ boost/config/platform/macos.hpp [16:16]
+
+KEEP BSL-1.0 597dc579281e71ba9d4dd39bf2d15a12
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/proto/args.hpp at line 8, boost/proto/context.hpp at line 7, boost/proto/context/callable.hpp at line 11, boost/proto/context/default.hpp at line 9, boost/proto/context/null.hpp at line 9, boost/proto/core.hpp at line 8, boost/proto/debug.hpp at line 7, boost/proto/deep_copy.hpp at line 7, boost/proto/detail/as_lvalue.hpp at line 7, boost/proto/detail/decltype.hpp at line 7, boost/proto/detail/deprecated.hpp at line 8, boost/proto/detail/dont_care.hpp at line 7, boost/proto/detail/expr_funop.hpp at line 7, boost/proto/detail/ignore_unused.hpp at line 8, boost/proto/detail/is_noncopyable.hpp at line 7, boost/proto/detail/local.hpp at line 7, boost/proto/detail/poly_function.hpp at line 9, boost/proto/detail/static_const.hpp at line 7, boost/proto/domain.hpp at line 9, boost/proto/eval.hpp at line 7, boost/proto/expr.hpp at line 7, boost/proto/extends.hpp at line 7, boost/proto/fusion.hpp at line 7, boost/proto/generate.hpp at line 8, boost/proto/literal.hpp at line 8, boost/proto/make_expr.hpp at line 9, boost/proto/matches.hpp at line 8, boost/proto/operators.hpp at line 8, boost/proto/proto.hpp at line 7, boost/proto/proto_fwd.hpp at line 7, boost/proto/proto_typeof.hpp at line 8, boost/proto/repeat.hpp at line 7, boost/proto/tags.hpp at line 7, boost/proto/traits.hpp at line 9, boost/proto/transform.hpp at line 7, boost/proto/transform/arg.hpp at line 7, boost/proto/transform/call.hpp at line 7, boost/proto/transform/default.hpp at line 8, boost/proto/transform/fold.hpp at line 7, boost/proto/transform/fold_tree.hpp at line 7, boost/proto/transform/impl.hpp at line 7, boost/proto/transform/lazy.hpp at line 7, boost/proto/transform/make.hpp at line 7, boost/proto/transform/pass_through.hpp at line 10, boost/proto/transform/when.hpp at line 7, boost/xpressive/basic_regex.hpp at line 8, boost/xpressive/detail/core/access.hpp at line 6, boost/xpressive/detail/core/action.hpp at line 6, boost/xpressive/detail/core/adaptor.hpp at line 6, boost/xpressive/detail/core/finder.hpp at line 5, boost/xpressive/detail/core/flow_control.hpp at line 6, boost/xpressive/detail/core/icase.hpp at line 6, boost/xpressive/detail/core/linker.hpp at line 6, boost/xpressive/detail/core/matcher/alternate_end_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/alternate_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/any_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/assert_bol_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/assert_bos_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/assert_eol_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/assert_eos_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/assert_line_base.hpp at line 6, boost/xpressive/detail/core/matcher/assert_word_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/attr_begin_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/attr_end_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/charset_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/end_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/epsilon_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/keeper_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/literal_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/logical_newline_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/lookahead_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/lookbehind_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/mark_begin_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/mark_end_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/mark_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/optional_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/posix_charset_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/predicate_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/range_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/regex_byref_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/regex_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/repeat_begin_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/repeat_end_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/set_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/simple_repeat_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/string_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/true_matcher.hpp at line 6, boost/xpressive/detail/core/matchers.hpp at line 6, boost/xpressive/detail/core/optimize.hpp at line 6, boost/xpressive/detail/core/peeker.hpp at line 6, boost/xpressive/detail/core/quant_style.hpp at line 6, boost/xpressive/detail/core/regex_impl.hpp at line 6, boost/xpressive/detail/core/results_cache.hpp at line 6, boost/xpressive/detail/core/state.hpp at line 6, boost/xpressive/detail/core/sub_match_impl.hpp at line 6, boost/xpressive/detail/core/sub_match_vector.hpp at line 6, boost/xpressive/detail/detail_fwd.hpp at line 6, boost/xpressive/detail/dynamic/dynamic.hpp at line 6, boost/xpressive/detail/dynamic/matchable.hpp at line 6, boost/xpressive/detail/dynamic/parse_charset.hpp at line 6, boost/xpressive/detail/dynamic/parser.hpp at line 8, boost/xpressive/detail/dynamic/parser_enum.hpp at line 6, boost/xpressive/detail/dynamic/parser_traits.hpp at line 6, boost/xpressive/detail/dynamic/sequence.hpp at line 6, boost/xpressive/detail/static/compile.hpp at line 6, boost/xpressive/detail/static/grammar.hpp at line 6, boost/xpressive/detail/static/is_pure.hpp at line 6, boost/xpressive/detail/static/modifier.hpp at line 6, boost/xpressive/detail/static/placeholders.hpp at line 6, boost/xpressive/detail/static/static.hpp at line 6, boost/xpressive/detail/static/transforms/as_alternate.hpp at line 6, boost/xpressive/detail/static/transforms/as_independent.hpp at line 6, boost/xpressive/detail/static/transforms/as_inverse.hpp at line 6, boost/xpressive/detail/static/transforms/as_marker.hpp at line 6, boost/xpressive/detail/static/transforms/as_matcher.hpp at line 6, boost/xpressive/detail/static/transforms/as_modifier.hpp at line 6, boost/xpressive/detail/static/transforms/as_quantifier.hpp at line 6, boost/xpressive/detail/static/transforms/as_sequence.hpp at line 6, boost/xpressive/detail/static/transforms/as_set.hpp at line 6, boost/xpressive/detail/static/transmogrify.hpp at line 6, boost/xpressive/detail/static/type_traits.hpp at line 6, boost/xpressive/detail/static/visitor.hpp at line 6, boost/xpressive/detail/static/width_of.hpp at line 6, boost/xpressive/detail/utility/algorithm.hpp at line 6, boost/xpressive/detail/utility/any.hpp at line 6, boost/xpressive/detail/utility/boyer_moore.hpp at line 9, boost/xpressive/detail/utility/chset/chset.hpp at line 6, boost/xpressive/detail/utility/cons.hpp at line 6, boost/xpressive/detail/utility/dont_care.hpp at line 6, boost/xpressive/detail/utility/hash_peek_bitset.hpp at line 6, boost/xpressive/detail/utility/ignore_unused.hpp at line 6, boost/xpressive/detail/utility/literals.hpp at line 6, boost/xpressive/detail/utility/never_true.hpp at line 6, boost/xpressive/detail/utility/save_restore.hpp at line 6, boost/xpressive/detail/utility/sequence_stack.hpp at line 6, boost/xpressive/detail/utility/tracking_ptr.hpp at line 6, boost/xpressive/detail/utility/traits_utils.hpp at line 6, boost/xpressive/detail/utility/width.hpp at line 6, boost/xpressive/match_results.hpp at line 9, boost/xpressive/regex_actions.hpp at line 7, boost/xpressive/regex_algorithms.hpp at line 7, boost/xpressive/regex_compiler.hpp at line 8, boost/xpressive/regex_constants.hpp at line 8, boost/xpressive/regex_error.hpp at line 7, boost/xpressive/regex_iterator.hpp at line 8, boost/xpressive/regex_primitives.hpp at line 7, boost/xpressive/regex_token_iterator.hpp at line 8, boost/xpressive/regex_traits.hpp at line 8, boost/xpressive/sub_match.hpp at line 8, boost/xpressive/traits/c_regex_traits.hpp at line 9, boost/xpressive/traits/cpp_regex_traits.hpp at line 9, boost/xpressive/traits/detail/c_ctype.hpp at line 6, boost/xpressive/traits/null_regex_traits.hpp at line 9, boost/xpressive/xpressive.hpp at line 8, boost/xpressive/xpressive_dynamic.hpp at line 7, boost/xpressive/xpressive_fwd.hpp at line 7, boost/xpressive/xpressive_static.hpp at line 8, boost/xpressive/xpressive_typeof.hpp at line 7
+ License text:
+ // Copyright 2008 Eric Niebler. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/proto/args.hpp [6:8]
+ boost/proto/context.hpp [5:7]
+ boost/proto/context/callable.hpp [9:11]
+ boost/proto/context/default.hpp [7:9]
+ boost/proto/context/null.hpp [7:9]
+ boost/proto/core.hpp [6:8]
+ boost/proto/debug.hpp [5:7]
+ boost/proto/deep_copy.hpp [5:7]
+ boost/proto/detail/as_lvalue.hpp [5:7]
+ boost/proto/detail/decltype.hpp [5:7]
+ boost/proto/detail/deprecated.hpp [6:8]
+ boost/proto/detail/dont_care.hpp [5:7]
+ boost/proto/detail/expr_funop.hpp [5:7]
+ boost/proto/detail/ignore_unused.hpp [6:8]
+ boost/proto/detail/is_noncopyable.hpp [5:7]
+ boost/proto/detail/local.hpp [5:7]
+ boost/proto/detail/poly_function.hpp [7:9]
+ boost/proto/detail/static_const.hpp [5:7]
+ boost/proto/domain.hpp [7:9]
+ boost/proto/eval.hpp [5:7]
+ boost/proto/expr.hpp [5:7]
+ boost/proto/extends.hpp [5:7]
+ boost/proto/fusion.hpp [5:7]
+ boost/proto/generate.hpp [6:8]
+ boost/proto/literal.hpp [6:8]
+ boost/proto/make_expr.hpp [7:9]
+ boost/proto/matches.hpp [6:8]
+ boost/proto/operators.hpp [6:8]
+ boost/proto/proto.hpp [5:7]
+ boost/proto/proto_fwd.hpp [5:7]
+ boost/proto/proto_typeof.hpp [6:8]
+ boost/proto/repeat.hpp [5:7]
+ boost/proto/tags.hpp [5:7]
+ boost/proto/traits.hpp [7:9]
+ boost/proto/transform.hpp [5:7]
+ boost/proto/transform/arg.hpp [5:7]
+ boost/proto/transform/call.hpp [5:7]
+ boost/proto/transform/default.hpp [6:8]
+ boost/proto/transform/fold.hpp [5:7]
+ boost/proto/transform/fold_tree.hpp [5:7]
+ boost/proto/transform/impl.hpp [5:7]
+ boost/proto/transform/lazy.hpp [5:7]
+ boost/proto/transform/make.hpp [5:7]
+ boost/proto/transform/pass_through.hpp [8:10]
+ boost/proto/transform/when.hpp [5:7]
+ boost/xpressive/basic_regex.hpp [6:8]
+ boost/xpressive/detail/core/access.hpp [4:6]
+ boost/xpressive/detail/core/action.hpp [4:6]
+ boost/xpressive/detail/core/adaptor.hpp [4:6]
+ boost/xpressive/detail/core/finder.hpp [3:5]
+ boost/xpressive/detail/core/flow_control.hpp [4:6]
+ boost/xpressive/detail/core/icase.hpp [4:6]
+ boost/xpressive/detail/core/linker.hpp [4:6]
+ boost/xpressive/detail/core/matcher/alternate_end_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/alternate_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/any_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/assert_bol_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/assert_bos_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/assert_eol_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/assert_eos_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/assert_line_base.hpp [4:6]
+ boost/xpressive/detail/core/matcher/assert_word_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/attr_begin_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/attr_end_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/charset_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/end_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/epsilon_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/keeper_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/literal_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/logical_newline_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/lookahead_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/lookbehind_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/mark_begin_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/mark_end_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/mark_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/optional_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/posix_charset_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/predicate_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/range_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/regex_byref_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/regex_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/repeat_begin_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/repeat_end_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/set_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/simple_repeat_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/string_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matcher/true_matcher.hpp [4:6]
+ boost/xpressive/detail/core/matchers.hpp [4:6]
+ boost/xpressive/detail/core/optimize.hpp [4:6]
+ boost/xpressive/detail/core/peeker.hpp [4:6]
+ boost/xpressive/detail/core/quant_style.hpp [4:6]
+ boost/xpressive/detail/core/regex_impl.hpp [4:6]
+ boost/xpressive/detail/core/results_cache.hpp [4:6]
+ boost/xpressive/detail/core/state.hpp [4:6]
+ boost/xpressive/detail/core/sub_match_impl.hpp [4:6]
+ boost/xpressive/detail/core/sub_match_vector.hpp [4:6]
+ boost/xpressive/detail/detail_fwd.hpp [4:6]
+ boost/xpressive/detail/dynamic/dynamic.hpp [4:6]
+ boost/xpressive/detail/dynamic/matchable.hpp [4:6]
+ boost/xpressive/detail/dynamic/parse_charset.hpp [4:6]
+ boost/xpressive/detail/dynamic/parser.hpp [6:8]
+ boost/xpressive/detail/dynamic/parser_enum.hpp [4:6]
+ boost/xpressive/detail/dynamic/parser_traits.hpp [4:6]
+ boost/xpressive/detail/dynamic/sequence.hpp [4:6]
+ boost/xpressive/detail/static/compile.hpp [4:6]
+ boost/xpressive/detail/static/grammar.hpp [4:6]
+ boost/xpressive/detail/static/is_pure.hpp [4:6]
+ boost/xpressive/detail/static/modifier.hpp [4:6]
+ boost/xpressive/detail/static/placeholders.hpp [4:6]
+ boost/xpressive/detail/static/static.hpp [4:6]
+ boost/xpressive/detail/static/transforms/as_alternate.hpp [4:6]
+ boost/xpressive/detail/static/transforms/as_independent.hpp [4:6]
+ boost/xpressive/detail/static/transforms/as_inverse.hpp [4:6]
+ boost/xpressive/detail/static/transforms/as_marker.hpp [4:6]
+ boost/xpressive/detail/static/transforms/as_matcher.hpp [4:6]
+ boost/xpressive/detail/static/transforms/as_modifier.hpp [4:6]
+ boost/xpressive/detail/static/transforms/as_quantifier.hpp [4:6]
+ boost/xpressive/detail/static/transforms/as_sequence.hpp [4:6]
+ boost/xpressive/detail/static/transforms/as_set.hpp [4:6]
+ boost/xpressive/detail/static/transmogrify.hpp [4:6]
+ boost/xpressive/detail/static/type_traits.hpp [4:6]
+ boost/xpressive/detail/static/visitor.hpp [4:6]
+ boost/xpressive/detail/static/width_of.hpp [4:6]
+ boost/xpressive/detail/utility/algorithm.hpp [4:6]
+ boost/xpressive/detail/utility/any.hpp [4:6]
+ boost/xpressive/detail/utility/boyer_moore.hpp [7:9]
+ boost/xpressive/detail/utility/chset/chset.hpp [4:6]
+ boost/xpressive/detail/utility/cons.hpp [4:6]
+ boost/xpressive/detail/utility/dont_care.hpp [4:6]
+ boost/xpressive/detail/utility/hash_peek_bitset.hpp [4:6]
+ boost/xpressive/detail/utility/ignore_unused.hpp [4:6]
+ boost/xpressive/detail/utility/literals.hpp [4:6]
+ boost/xpressive/detail/utility/never_true.hpp [4:6]
+ boost/xpressive/detail/utility/save_restore.hpp [4:6]
+ boost/xpressive/detail/utility/sequence_stack.hpp [4:6]
+ boost/xpressive/detail/utility/tracking_ptr.hpp [4:6]
+ boost/xpressive/detail/utility/traits_utils.hpp [4:6]
+ boost/xpressive/detail/utility/width.hpp [4:6]
+ boost/xpressive/match_results.hpp [7:9]
+ boost/xpressive/regex_actions.hpp [5:7]
+ boost/xpressive/regex_algorithms.hpp [5:7]
+ boost/xpressive/regex_compiler.hpp [6:8]
+ boost/xpressive/regex_constants.hpp [6:8]
+ boost/xpressive/regex_error.hpp [5:7]
+ boost/xpressive/regex_iterator.hpp [6:8]
+ boost/xpressive/regex_primitives.hpp [5:7]
+ boost/xpressive/regex_token_iterator.hpp [6:8]
+ boost/xpressive/regex_traits.hpp [6:8]
+ boost/xpressive/sub_match.hpp [6:8]
+ boost/xpressive/traits/c_regex_traits.hpp [7:9]
+ boost/xpressive/traits/cpp_regex_traits.hpp [7:9]
+ boost/xpressive/traits/detail/c_ctype.hpp [4:6]
+ boost/xpressive/traits/null_regex_traits.hpp [7:9]
+ boost/xpressive/xpressive.hpp [6:8]
+ boost/xpressive/xpressive_dynamic.hpp [5:7]
+ boost/xpressive/xpressive_fwd.hpp [5:7]
+ boost/xpressive/xpressive_static.hpp [6:8]
+ boost/xpressive/xpressive_typeof.hpp [5:7]
+
+KEEP BSL-1.0 59b97879dbe85145abb5fd7c850cbd1e
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/detail/collection_traits.hpp at line 15
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/range/detail/collection_traits.hpp [13:16]
+
+KEEP BSL-1.0 59bff4c0e4760c67aaf640952b9691ab
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/detail/advanced_insert_int.hpp at line 5, boost/container/detail/variadic_templates_tools.hpp at line 5, boost/container/node_allocator.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2008-2013. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/container/detail/advanced_insert_int.hpp [3:5]
+ boost/container/detail/variadic_templates_tools.hpp [3:5]
+ boost/container/node_allocator.hpp [3:5]
+
+KEEP BSL-1.0 59e0ba9e4e0ad69ac0e39991a0f51a81
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/core/noncopyable.hpp at line 5
+ License text:
+ // (C) Copyright Beman Dawes 1999-2003. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/core/noncopyable.hpp [3:5]
+
+KEEP BSL-1.0 59f772b611d1719332041cf35a9361d2
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/adaptor/define_adaptor.hpp at line 5, boost/range/adaptor/type_erased.hpp at line 5, boost/range/any_range.hpp at line 3, boost/range/combine.hpp at line 3, boost/range/counting_range.hpp at line 3, boost/range/detail/any_iterator.hpp at line 5, boost/range/detail/any_iterator_buffer.hpp at line 5, boost/range/detail/any_iterator_interface.hpp at line 5, boost/range/detail/any_iterator_wrapper.hpp at line 5, boost/range/has_range_iterator.hpp at line 5, boost/range/irange.hpp at line 5, boost/range/istream_range.hpp at line 3
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/range/adaptor/define_adaptor.hpp [3:6]
+ boost/range/adaptor/type_erased.hpp [3:6]
+ boost/range/any_range.hpp [1:4]
+ boost/range/combine.hpp [1:4]
+ boost/range/counting_range.hpp [1:4]
+ boost/range/detail/any_iterator.hpp [3:6]
+ boost/range/detail/any_iterator_buffer.hpp [3:6]
+ boost/range/detail/any_iterator_interface.hpp [3:6]
+ boost/range/detail/any_iterator_wrapper.hpp [3:6]
+ boost/range/has_range_iterator.hpp [3:6]
+ boost/range/irange.hpp [3:6]
+ boost/range/istream_range.hpp [1:4]
+
+KEEP BSL-1.0 5a00611854a32f9db24177ae4dd00807
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/framework/accumulators/value_accumulator.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/accumulators/framework/accumulators/value_accumulator.hpp [4:6]
+
+KEEP BSL-1.0 5a63de69aa56c81fb958a32053feb9c1
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/msm/mpl_graph/adjacency_list_graph.hpp at line 3, boost/msm/mpl_graph/breadth_first_search.hpp at line 3, boost/msm/mpl_graph/depth_first_search.hpp at line 3, boost/msm/mpl_graph/detail/adjacency_list_graph.ipp at line 3, boost/msm/mpl_graph/detail/graph_implementation_interface.ipp at line 3, boost/msm/mpl_graph/detail/incidence_list_graph.ipp at line 3, boost/msm/mpl_graph/incidence_list_graph.hpp at line 3, boost/msm/mpl_graph/mpl_graph.hpp at line 3, boost/msm/mpl_graph/mpl_utils.hpp at line 3, boost/msm/mpl_graph/search_colors.hpp at line 3
+ License text:
// Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or
- // copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/chrono/typeof/boost/chrono/chrono.hpp [4:6]
- boost/chrono/typeof/boost/ratio.hpp [4:6]
-
-KEEP BSL-1.0 4d2821c205f13355ac67ff2f0c1356b6
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: LicenseRef-scancode-boost-original
- Score : 100.00
- Match type : TEXT
- Links : http://boost.org, https://github.com/boostorg/rational/blob/0fe0beca5397c812c4f85a7de0d0769de59e12e0/include/boost/rational.hpp, https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/boost-original.LICENSE
- Files with this license:
- boost/program_options/detail/utf8_codecvt_facet.hpp [2:6]
-
-KEEP BSL-1.0 4d2a8dc89c39573e23ad6a8f52bdd9a1
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/utility/base_from_member.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/utility/base_from_member.hpp [3:6]
-
-KEEP BSL-1.0 4d5252e413de14514a327fd589154ef8
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/adaptive_pool.hpp at line 5, boost/container/detail/adaptive_node_pool.hpp at line 5, boost/container/detail/adaptive_node_pool_impl.hpp at line 5, boost/container/detail/alloc_lib.h at line 5, boost/container/detail/allocation_type.hpp at line 5, boost/container/detail/config_begin.hpp at line 5, boost/container/detail/config_end.hpp at line 5, boost/container/detail/copy_move_algo.hpp at line 5, boost/container/detail/min_max.hpp at line 5, boost/container/detail/multiallocation_chain.hpp at line 5, boost/container/detail/node_alloc_holder.hpp at line 5, boost/container/detail/node_pool.hpp at line 5, boost/container/detail/node_pool_impl.hpp at line 5, boost/container/detail/pair_key_mapped_of_value.hpp at line 5, boost/container/detail/pool_common.hpp at line 5, boost/container/detail/pool_common_alloc.hpp at line 5, boost/container/detail/version_type.hpp at line 5, boost/container/detail/workaround.hpp at line 5, boost/container/flat_map.hpp at line 5, boost/container/flat_set.hpp at line 5, boost/container/map.hpp at line 5, boost/container/set.hpp at line 5, boost/interprocess/detail/os_thread_functions.hpp at line 5, boost/intrusive/detail/workaround.hpp at line 5, boost/move/adl_move_swap.hpp at line 6
- License text:
- // (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/container/adaptive_pool.hpp [3:5]
- boost/container/detail/adaptive_node_pool.hpp [3:5]
- boost/container/detail/adaptive_node_pool_impl.hpp [3:5]
- boost/container/detail/alloc_lib.h [3:5]
- boost/container/detail/allocation_type.hpp [3:5]
- boost/container/detail/config_begin.hpp [3:5]
- boost/container/detail/config_end.hpp [3:5]
- boost/container/detail/copy_move_algo.hpp [3:5]
- boost/container/detail/min_max.hpp [3:5]
- boost/container/detail/multiallocation_chain.hpp [3:5]
- boost/container/detail/node_alloc_holder.hpp [3:5]
- boost/container/detail/node_pool.hpp [3:5]
- boost/container/detail/node_pool_impl.hpp [3:5]
- boost/container/detail/pair_key_mapped_of_value.hpp [3:5]
- boost/container/detail/pool_common.hpp [3:5]
- boost/container/detail/pool_common_alloc.hpp [3:5]
- boost/container/detail/version_type.hpp [3:5]
- boost/container/detail/workaround.hpp [3:5]
- boost/container/flat_map.hpp [3:5]
- boost/container/flat_set.hpp [3:5]
- boost/container/map.hpp [3:5]
- boost/container/set.hpp [3:5]
- boost/interprocess/detail/os_thread_functions.hpp [3:5]
- boost/intrusive/detail/workaround.hpp [3:5]
- boost/move/adl_move_swap.hpp [4:6]
-
-KEEP BSL-1.0 4e866b0f702c0f86a7d853ca58d2b0d6
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/utility/detail/result_of_iterate.hpp at line 10
- License text:
- // Use, modification and distribution is subject to the Boost Software
- // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or
- // copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/utility/detail/result_of_iterate.hpp [9:11]
-
-KEEP BSL-1.0 4ea1383dd870de8fa4ba78b3f077f660
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/containers/containers_fwd.hpp at line 5, boost/interprocess/detail/file_locking_helpers.hpp at line 5, boost/interprocess/detail/intermodule_singleton.hpp at line 5, boost/interprocess/detail/intermodule_singleton_common.hpp at line 5, boost/interprocess/detail/managed_global_memory.hpp at line 5, boost/interprocess/detail/portable_intermodule_singleton.hpp at line 5, boost/interprocess/detail/windows_intermodule_singleton.hpp at line 5, boost/interprocess/detail/xsi_shared_memory_file_wrapper.hpp at line 5, boost/interprocess/xsi_shared_memory.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2009-2012. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/interprocess/containers/containers_fwd.hpp [3:5]
- boost/interprocess/detail/file_locking_helpers.hpp [3:5]
- boost/interprocess/detail/intermodule_singleton.hpp [3:5]
- boost/interprocess/detail/intermodule_singleton_common.hpp [3:5]
- boost/interprocess/detail/managed_global_memory.hpp [3:5]
- boost/interprocess/detail/portable_intermodule_singleton.hpp [3:5]
- boost/interprocess/detail/windows_intermodule_singleton.hpp [3:5]
- boost/interprocess/detail/xsi_shared_memory_file_wrapper.hpp [3:5]
- boost/interprocess/xsi_shared_memory.hpp [3:5]
-
-KEEP BSL-1.0 4ebf5547dee6ab6b8aeb6b822352227b
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/deque.hpp at line 5, boost/container/detail/flat_tree.hpp at line 5, boost/container/detail/tree.hpp at line 5, boost/container/list.hpp at line 5, boost/container/string.hpp at line 5, boost/container/vector.hpp at line 5, boost/interprocess/detail/win32_api.hpp at line 5, boost/interprocess/detail/workaround.hpp at line 5, boost/interprocess/exceptions.hpp at line 5, boost/interprocess/offset_ptr.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2005-2015. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/container/deque.hpp [3:5]
- boost/container/detail/flat_tree.hpp [3:5]
- boost/container/detail/tree.hpp [3:5]
- boost/container/list.hpp [3:5]
- boost/container/string.hpp [3:5]
- boost/container/vector.hpp [3:5]
- boost/interprocess/detail/win32_api.hpp [3:5]
- boost/interprocess/detail/workaround.hpp [3:5]
- boost/interprocess/exceptions.hpp [3:5]
- boost/interprocess/offset_ptr.hpp [3:5]
-
-KEEP BSL-1.0 4ee4563f1657e4bee051a7033c20db63
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/xsi_key.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2009. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/interprocess/xsi_key.hpp [3:5]
-
-KEEP BSL-1.0 50c03a0f9bee856a44f9bf0a4cffed91
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iostreams/detail/absolute_path.hpp at line 3, boost/iostreams/detail/adapter/device_adapter.hpp at line 13, boost/iostreams/detail/adapter/filter_adapter.hpp at line 12, boost/iostreams/detail/config/rtl.hpp at line 3, boost/iostreams/detail/current_directory.hpp at line 3, boost/iostreams/detail/execute.hpp at line 3, boost/iostreams/detail/file_handle.hpp at line 3, boost/iostreams/detail/functional.hpp at line 3, boost/iostreams/detail/path.hpp at line 3, boost/iostreams/detail/restrict_impl.hpp at line 3, boost/iostreams/filter/grep.hpp at line 3, boost/iostreams/restrict.hpp at line 3, boost/iostreams/slice.hpp at line 3
- License text:
- * Distributed under the Boost Software License, Version 1.0.(See accompanying
- * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/iostreams/detail/absolute_path.hpp [2:3]
- boost/iostreams/detail/adapter/device_adapter.hpp [12:13]
- boost/iostreams/detail/adapter/filter_adapter.hpp [11:12]
- boost/iostreams/detail/config/rtl.hpp [2:3]
- boost/iostreams/detail/current_directory.hpp [2:3]
- boost/iostreams/detail/execute.hpp [2:3]
- boost/iostreams/detail/file_handle.hpp [2:3]
- boost/iostreams/detail/functional.hpp [2:3]
- boost/iostreams/detail/path.hpp [2:3]
- boost/iostreams/detail/restrict_impl.hpp [2:3]
- boost/iostreams/filter/grep.hpp [2:3]
- boost/iostreams/restrict.hpp [2:3]
- boost/iostreams/slice.hpp [2:3]
-
-KEEP BSL-1.0 50dc18b27f34dab68ff41aa3f7880dda
-BELONGS libs/context/ya.make libs/coroutine/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/platform/cloudabi.hpp at line 3, boost/container/detail/function_detector.hpp at line 6, boost/container/detail/minimal_char_traits_header.hpp at line 6, boost/container/options.hpp at line 6, boost/context/all.hpp at line 4, boost/context/continuation.hpp at line 4, boost/context/continuation_fcontext.hpp at line 4, boost/context/continuation_ucontext.hpp at line 4, boost/context/continuation_winfib.hpp at line 4, boost/context/detail/apply.hpp at line 4, boost/context/detail/config.hpp at line 4, boost/context/detail/disable_overload.hpp at line 4, boost/context/detail/exception.hpp at line 4, boost/context/detail/exchange.hpp at line 4, boost/context/detail/externc.hpp at line 4, boost/context/detail/fcontext.hpp at line 4, boost/context/detail/index_sequence.hpp at line 4, boost/context/detail/invoke.hpp at line 4, boost/context/detail/prefetch.hpp at line 3, boost/context/detail/tuple.hpp at line 4, boost/context/execution_context.hpp at line 4, boost/context/execution_context_v1.hpp at line 4, boost/context/execution_context_v2.hpp at line 4, boost/context/execution_context_v2_void.ipp at line 4, boost/context/fiber.hpp at line 4, boost/context/fiber_fcontext.hpp at line 4, boost/context/fiber_ucontext.hpp at line 4, boost/context/fiber_winfib.hpp at line 4, boost/context/fixedsize_stack.hpp at line 4, boost/context/flags.hpp at line 4, boost/context/pooled_fixedsize_stack.hpp at line 4, boost/context/posix/protected_fixedsize_stack.hpp at line 4, boost/context/posix/segmented_stack.hpp at line 4, boost/context/preallocated.hpp at line 4, boost/context/protected_fixedsize_stack.hpp at line 4, boost/context/segmented_stack.hpp at line 4, boost/context/stack_context.hpp at line 4, boost/context/stack_traits.hpp at line 4, boost/context/windows/protected_fixedsize_stack.hpp at line 4, boost/coroutine/all.hpp at line 4, boost/coroutine/asymmetric_coroutine.hpp at line 4, boost/coroutine/attributes.hpp at line 4, boost/coroutine/coroutine.hpp at line 4, boost/coroutine/detail/config.hpp at line 4, boost/coroutine/detail/coroutine_context.hpp at line 4, boost/coroutine/detail/data.hpp at line 4, boost/coroutine/detail/flags.hpp at line 4, boost/coroutine/detail/parameters.hpp at line 4, boost/coroutine/detail/preallocated.hpp at line 4, boost/coroutine/detail/pull_coroutine_impl.hpp at line 4, boost/coroutine/detail/pull_coroutine_object.hpp at line 4, boost/coroutine/detail/pull_coroutine_synthesized.hpp at line 4, boost/coroutine/detail/push_coroutine_impl.hpp at line 4, boost/coroutine/detail/push_coroutine_object.hpp at line 4, boost/coroutine/detail/push_coroutine_synthesized.hpp at line 4, boost/coroutine/detail/setup.hpp at line 4, boost/coroutine/detail/symmetric_coroutine_call.hpp at line 4, boost/coroutine/detail/symmetric_coroutine_impl.hpp at line 4, boost/coroutine/detail/symmetric_coroutine_object.hpp at line 4, boost/coroutine/detail/symmetric_coroutine_yield.hpp at line 4, boost/coroutine/detail/trampoline.hpp at line 4, boost/coroutine/detail/trampoline_pull.hpp at line 4, boost/coroutine/detail/trampoline_push.hpp at line 4, boost/coroutine/exceptions.hpp at line 4, boost/coroutine/flags.hpp at line 4, boost/coroutine/posix/protected_stack_allocator.hpp at line 4, boost/coroutine/posix/segmented_stack_allocator.hpp at line 4, boost/coroutine/protected_stack_allocator.hpp at line 4, boost/coroutine/segmented_stack_allocator.hpp at line 4, boost/coroutine/stack_allocator.hpp at line 4, boost/coroutine/stack_context.hpp at line 4, boost/coroutine/stack_traits.hpp at line 4, boost/coroutine/standard_stack_allocator.hpp at line 4, boost/coroutine/symmetric_coroutine.hpp at line 4, boost/coroutine/windows/protected_stack_allocator.hpp at line 4, boost/coroutine2/all.hpp at line 4, boost/coroutine2/coroutine.hpp at line 4, boost/coroutine2/detail/config.hpp at line 4, boost/coroutine2/detail/coroutine.hpp at line 4, boost/coroutine2/detail/create_control_block.ipp at line 4, boost/coroutine2/detail/decay_copy.hpp at line 4, boost/coroutine2/detail/disable_overload.hpp at line 4, boost/coroutine2/detail/forced_unwind.hpp at line 4, boost/coroutine2/detail/pull_control_block_cc.hpp at line 4, boost/coroutine2/detail/pull_control_block_cc.ipp at line 4, boost/coroutine2/detail/pull_coroutine.hpp at line 4, boost/coroutine2/detail/pull_coroutine.ipp at line 4, boost/coroutine2/detail/push_control_block_cc.hpp at line 4, boost/coroutine2/detail/push_control_block_cc.ipp at line 4, boost/coroutine2/detail/push_coroutine.hpp at line 4, boost/coroutine2/detail/push_coroutine.ipp at line 4, boost/coroutine2/detail/state.hpp at line 4, boost/coroutine2/detail/wrap.hpp at line 4, boost/coroutine2/fixedsize_stack.hpp at line 4, boost/coroutine2/pooled_fixedsize_stack.hpp at line 4, boost/coroutine2/protected_fixedsize_stack.hpp at line 4, boost/coroutine2/segmented_stack.hpp at line 4, boost/detail/dynamic_bitset.hpp at line 10, boost/dynamic_bitset.hpp at line 7, boost/dynamic_bitset/config.hpp at line 7, boost/dynamic_bitset/dynamic_bitset.hpp at line 12, boost/dynamic_bitset/serialization.hpp at line 6, boost/dynamic_bitset_fwd.hpp at line 7, boost/fiber/algo/algorithm.hpp at line 3, boost/fiber/algo/numa/work_stealing.hpp at line 4, boost/fiber/algo/round_robin.hpp at line 3, boost/fiber/algo/shared_work.hpp at line 4, boost/fiber/algo/work_stealing.hpp at line 4, boost/fiber/all.hpp at line 4, boost/fiber/barrier.hpp at line 4, boost/fiber/buffered_channel.hpp at line 4, boost/fiber/channel_op_status.hpp at line 3, boost/fiber/condition_variable.hpp at line 4, boost/fiber/context.hpp at line 4, boost/fiber/cuda/waitfor.hpp at line 4, boost/fiber/detail/config.hpp at line 4, boost/fiber/detail/context_spinlock_queue.hpp at line 4, boost/fiber/detail/context_spmc_queue.hpp at line 4, boost/fiber/detail/convert.hpp at line 4, boost/fiber/detail/cpu_relax.hpp at line 4, boost/fiber/detail/data.hpp at line 4, boost/fiber/detail/decay_copy.hpp at line 4, boost/fiber/detail/disable_overload.hpp at line 4, boost/fiber/detail/fss.hpp at line 4, boost/fiber/detail/futex.hpp at line 4, boost/fiber/detail/is_all_same.hpp at line 4, boost/fiber/detail/rtm.hpp at line 4, boost/fiber/detail/spinlock.hpp at line 4, boost/fiber/detail/spinlock_rtm.hpp at line 4, boost/fiber/detail/spinlock_status.hpp at line 4, boost/fiber/detail/spinlock_ttas.hpp at line 4, boost/fiber/detail/spinlock_ttas_adaptive.hpp at line 4, boost/fiber/detail/spinlock_ttas_adaptive_futex.hpp at line 4, boost/fiber/detail/spinlock_ttas_futex.hpp at line 4, boost/fiber/exceptions.hpp at line 4, boost/fiber/fiber.hpp at line 4, boost/fiber/fixedsize_stack.hpp at line 4, boost/fiber/fss.hpp at line 4, boost/fiber/future.hpp at line 4, boost/fiber/future/async.hpp at line 4, boost/fiber/future/detail/shared_state.hpp at line 4, boost/fiber/future/detail/shared_state_object.hpp at line 4, boost/fiber/future/detail/task_base.hpp at line 3, boost/fiber/future/detail/task_object.hpp at line 4, boost/fiber/future/future.hpp at line 4, boost/fiber/future/future_status.hpp at line 4, boost/fiber/future/packaged_task.hpp at line 4, boost/fiber/future/promise.hpp at line 4, boost/fiber/hip/waitfor.hpp at line 4, boost/fiber/mutex.hpp at line 4, boost/fiber/numa/pin_thread.hpp at line 4, boost/fiber/numa/topology.hpp at line 4, boost/fiber/operations.hpp at line 3, boost/fiber/policy.hpp at line 4, boost/fiber/pooled_fixedsize_stack.hpp at line 4, boost/fiber/properties.hpp at line 3, boost/fiber/protected_fixedsize_stack.hpp at line 4, boost/fiber/recursive_mutex.hpp at line 4, boost/fiber/recursive_timed_mutex.hpp at line 4, boost/fiber/scheduler.hpp at line 3, boost/fiber/segmented_stack.hpp at line 4, boost/fiber/timed_mutex.hpp at line 4, boost/fiber/type.hpp at line 4, boost/fiber/unbuffered_channel.hpp at line 4, boost/format/exceptions.hpp at line 8, boost/graph/two_graphs_common_spanning_trees.hpp at line 3, boost/integer/integer_log2.hpp at line 10, boost/intrusive/any_hook.hpp at line 6, boost/intrusive/avl_set.hpp at line 6, boost/intrusive/avl_set_hook.hpp at line 6, boost/intrusive/avltree.hpp at line 6, boost/intrusive/avltree_algorithms.hpp at line 7, boost/intrusive/bs_set.hpp at line 6, boost/intrusive/bs_set_hook.hpp at line 6, boost/intrusive/bstree.hpp at line 6, boost/intrusive/bstree_algorithms.hpp at line 6, boost/intrusive/circular_list_algorithms.hpp at line 7, boost/intrusive/circular_slist_algorithms.hpp at line 7, boost/intrusive/derivation_value_traits.hpp at line 6, boost/intrusive/detail/algo_type.hpp at line 6, boost/intrusive/detail/any_node_and_algorithms.hpp at line 6, boost/intrusive/detail/array_initializer.hpp at line 6, boost/intrusive/detail/assert.hpp at line 6, boost/intrusive/detail/avltree_node.hpp at line 6, boost/intrusive/detail/bstree_algorithms_base.hpp at line 6, boost/intrusive/detail/common_slist_algorithms.hpp at line 6, boost/intrusive/detail/config_begin.hpp at line 6, boost/intrusive/detail/config_end.hpp at line 6, boost/intrusive/detail/default_header_holder.hpp at line 6, boost/intrusive/detail/ebo_functor_holder.hpp at line 7, boost/intrusive/detail/empty_node_checker.hpp at line 6, boost/intrusive/detail/equal_to_value.hpp at line 6, boost/intrusive/detail/exception_disposer.hpp at line 6, boost/intrusive/detail/function_detector.hpp at line 6, boost/intrusive/detail/generic_hook.hpp at line 6, boost/intrusive/detail/get_value_traits.hpp at line 6, boost/intrusive/detail/hashtable_node.hpp at line 6, boost/intrusive/detail/hook_traits.hpp at line 6, boost/intrusive/detail/iiterator.hpp at line 6, boost/intrusive/detail/is_stateful_value_traits.hpp at line 6, boost/intrusive/detail/iterator.hpp at line 6, boost/intrusive/detail/key_nodeptr_comp.hpp at line 6, boost/intrusive/detail/list_iterator.hpp at line 7, boost/intrusive/detail/list_node.hpp at line 7, boost/intrusive/detail/math.hpp at line 6, boost/intrusive/detail/minimal_less_equal_header.hpp at line 6, boost/intrusive/detail/minimal_pair_header.hpp at line 6, boost/intrusive/detail/mpl.hpp at line 7, boost/intrusive/detail/node_cloner_disposer.hpp at line 6, boost/intrusive/detail/node_holder.hpp at line 6, boost/intrusive/detail/node_to_value.hpp at line 6, boost/intrusive/detail/parent_from_member.hpp at line 6, boost/intrusive/detail/rbtree_node.hpp at line 7, boost/intrusive/detail/reverse_iterator.hpp at line 6, boost/intrusive/detail/simple_disposers.hpp at line 6, boost/intrusive/detail/size_holder.hpp at line 6, boost/intrusive/detail/slist_iterator.hpp at line 7, boost/intrusive/detail/slist_node.hpp at line 7, boost/intrusive/detail/transform_iterator.hpp at line 6, boost/intrusive/detail/tree_iterator.hpp at line 6, boost/intrusive/detail/tree_node.hpp at line 6, boost/intrusive/detail/uncast.hpp at line 6, boost/intrusive/hashtable.hpp at line 6, boost/intrusive/intrusive_fwd.hpp at line 6, boost/intrusive/linear_slist_algorithms.hpp at line 7, boost/intrusive/link_mode.hpp at line 6, boost/intrusive/list.hpp at line 7, boost/intrusive/list_hook.hpp at line 7, boost/intrusive/member_value_traits.hpp at line 6, boost/intrusive/options.hpp at line 6, boost/intrusive/pack_options.hpp at line 6, boost/intrusive/parent_from_member.hpp at line 6, boost/intrusive/pointer_plus_bits.hpp at line 6, boost/intrusive/priority_compare.hpp at line 6, boost/intrusive/rbtree.hpp at line 6, boost/intrusive/rbtree_algorithms.hpp at line 7, boost/intrusive/set.hpp at line 7, boost/intrusive/set_hook.hpp at line 7, boost/intrusive/sg_set.hpp at line 6, boost/intrusive/sgtree.hpp at line 6, boost/intrusive/sgtree_algorithms.hpp at line 6, boost/intrusive/slist.hpp at line 7, boost/intrusive/slist_hook.hpp at line 7, boost/intrusive/splay_set.hpp at line 6, boost/intrusive/splaytree.hpp at line 6, boost/intrusive/splaytree_algorithms.hpp at line 6, boost/intrusive/treap.hpp at line 6, boost/intrusive/treap_algorithms.hpp at line 6, boost/intrusive/treap_set.hpp at line 6, boost/intrusive/trivial_value_traits.hpp at line 6, boost/intrusive/unordered_set.hpp at line 7, boost/intrusive/unordered_set_hook.hpp at line 7, boost/metaparse.hpp at line 3, boost/metaparse/accept.hpp at line 6, boost/metaparse/accept_tag.hpp at line 6, boost/metaparse/accept_when.hpp at line 6, boost/metaparse/alphanum.hpp at line 6, boost/metaparse/always.hpp at line 6, boost/metaparse/always_c.hpp at line 6, boost/metaparse/build_parser.hpp at line 6, boost/metaparse/change_error_message.hpp at line 6, boost/metaparse/config.hpp at line 6, boost/metaparse/debug_parsing_error.hpp at line 6, boost/metaparse/define_error.hpp at line 6, boost/metaparse/digit.hpp at line 6, boost/metaparse/digit_val.hpp at line 6, boost/metaparse/empty.hpp at line 6, boost/metaparse/entire_input.hpp at line 6, boost/metaparse/error/digit_expected.hpp at line 6, boost/metaparse/error/end_of_input_expected.hpp at line 6, boost/metaparse/error/index_out_of_range.hpp at line 6, boost/metaparse/error/letter_expected.hpp at line 6, boost/metaparse/error/literal_expected.hpp at line 6, boost/metaparse/error/none_of_the_expected_cases_found.hpp at line 6, boost/metaparse/error/unexpected_character.hpp at line 6, boost/metaparse/error/unexpected_end_of_input.hpp at line 6, boost/metaparse/error/unpaired.hpp at line 6, boost/metaparse/error/whitespace_expected.hpp at line 6, boost/metaparse/except.hpp at line 6, boost/metaparse/fail.hpp at line 6, boost/metaparse/fail_at_first_char_expected.hpp at line 6, boost/metaparse/fail_tag.hpp at line 6, boost/metaparse/first_of.hpp at line 6, boost/metaparse/foldl.hpp at line 6, boost/metaparse/foldl1.hpp at line 6, boost/metaparse/foldl_reject_incomplete.hpp at line 6, boost/metaparse/foldl_reject_incomplete1.hpp at line 6, boost/metaparse/foldl_reject_incomplete_start_with_parser.hpp at line 6, boost/metaparse/foldl_start_with_parser.hpp at line 6, boost/metaparse/foldr.hpp at line 6, boost/metaparse/foldr1.hpp at line 6, boost/metaparse/foldr_reject_incomplete.hpp at line 6, boost/metaparse/foldr_reject_incomplete1.hpp at line 6, boost/metaparse/foldr_start_with_parser.hpp at line 6, boost/metaparse/get_col.hpp at line 6, boost/metaparse/get_line.hpp at line 6, boost/metaparse/get_message.hpp at line 6, boost/metaparse/get_position.hpp at line 6, boost/metaparse/get_prev_char.hpp at line 6, boost/metaparse/get_remaining.hpp at line 6, boost/metaparse/get_result.hpp at line 6, boost/metaparse/grammar.hpp at line 6, boost/metaparse/if_.hpp at line 6, boost/metaparse/int_.hpp at line 6, boost/metaparse/is_error.hpp at line 6, boost/metaparse/iterate.hpp at line 6, boost/metaparse/iterate_c.hpp at line 6, boost/metaparse/keyword.hpp at line 6, boost/metaparse/last_of.hpp at line 6, boost/metaparse/letter.hpp at line 6, boost/metaparse/limit_one_char_except_size.hpp at line 6, boost/metaparse/limit_one_of_size.hpp at line 6, boost/metaparse/limit_sequence_size.hpp at line 6, boost/metaparse/limit_string_size.hpp at line 6, boost/metaparse/lit.hpp at line 6, boost/metaparse/lit_c.hpp at line 6, boost/metaparse/look_ahead.hpp at line 6, boost/metaparse/middle_of.hpp at line 6, boost/metaparse/next_char.hpp at line 6, boost/metaparse/next_line.hpp at line 6, boost/metaparse/nth_of.hpp at line 6, boost/metaparse/nth_of_c.hpp at line 6, boost/metaparse/one_char.hpp at line 6, boost/metaparse/one_char_except.hpp at line 6, boost/metaparse/one_char_except_c.hpp at line 6, boost/metaparse/one_of.hpp at line 6, boost/metaparse/one_of_c.hpp at line 6, boost/metaparse/optional.hpp at line 6, boost/metaparse/range.hpp at line 6, boost/metaparse/range_c.hpp at line 6, boost/metaparse/reject.hpp at line 6, boost/metaparse/repeated.hpp at line 6, boost/metaparse/repeated1.hpp at line 6, boost/metaparse/repeated_one_of.hpp at line 6, boost/metaparse/repeated_one_of1.hpp at line 6, boost/metaparse/repeated_reject_incomplete.hpp at line 6, boost/metaparse/repeated_reject_incomplete1.hpp at line 6, boost/metaparse/return_.hpp at line 6, boost/metaparse/sequence.hpp at line 6, boost/metaparse/sequence_apply.hpp at line 6, boost/metaparse/source_position.hpp at line 6, boost/metaparse/source_position_tag.hpp at line 6, boost/metaparse/space.hpp at line 6, boost/metaparse/spaces.hpp at line 6, boost/metaparse/start.hpp at line 6, boost/metaparse/string.hpp at line 3, boost/metaparse/string_tag.hpp at line 6, boost/metaparse/token.hpp at line 6, boost/metaparse/transform.hpp at line 6, boost/metaparse/transform_error.hpp at line 6, boost/metaparse/transform_error_message.hpp at line 6, boost/metaparse/unless_error.hpp at line 6, boost/metaparse/util/digit_to_int.hpp at line 6, boost/metaparse/util/digit_to_int_c.hpp at line 6, boost/metaparse/util/in_range.hpp at line 6, boost/metaparse/util/in_range_c.hpp at line 6, boost/metaparse/util/int_to_digit.hpp at line 6, boost/metaparse/util/int_to_digit_c.hpp at line 6, boost/metaparse/util/is_digit.hpp at line 6, boost/metaparse/util/is_lcase_letter.hpp at line 6, boost/metaparse/util/is_letter.hpp at line 6, boost/metaparse/util/is_ucase_letter.hpp at line 6, boost/metaparse/util/is_whitespace.hpp at line 6, boost/metaparse/util/is_whitespace_c.hpp at line 6, boost/metaparse/v1/accept.hpp at line 6, boost/metaparse/v1/accept_tag.hpp at line 6, boost/metaparse/v1/accept_when.hpp at line 6, boost/metaparse/v1/alphanum.hpp at line 6, boost/metaparse/v1/always.hpp at line 6, boost/metaparse/v1/always_c.hpp at line 6, boost/metaparse/v1/build_parser.hpp at line 6, boost/metaparse/v1/change_error_message.hpp at line 6, boost/metaparse/v1/cpp11/first_of.hpp at line 6, boost/metaparse/v1/cpp11/fwd/string.hpp at line 6, boost/metaparse/v1/cpp11/impl/at_c.hpp at line 6, boost/metaparse/v1/cpp11/impl/concat.hpp at line 6, boost/metaparse/v1/cpp11/impl/empty_string.hpp at line 6, boost/metaparse/v1/cpp11/impl/nth_of_c.hpp at line 6, boost/metaparse/v1/cpp11/impl/nth_of_c_skip_remaining.hpp at line 6, boost/metaparse/v1/cpp11/impl/pop_back.hpp at line 6, boost/metaparse/v1/cpp11/impl/pop_front.hpp at line 6, boost/metaparse/v1/cpp11/impl/push_back_c.hpp at line 6, boost/metaparse/v1/cpp11/impl/push_front_c.hpp at line 6, boost/metaparse/v1/cpp11/impl/remove_trailing_no_chars.hpp at line 6, boost/metaparse/v1/cpp11/impl/size.hpp at line 6, boost/metaparse/v1/cpp11/impl/string_at.hpp at line 6, boost/metaparse/v1/cpp11/last_of.hpp at line 6, boost/metaparse/v1/cpp11/nth_of.hpp at line 6, boost/metaparse/v1/cpp11/nth_of_c.hpp at line 6, boost/metaparse/v1/cpp11/string.hpp at line 6, boost/metaparse/v1/cpp98/first_of.hpp at line 6, boost/metaparse/v1/cpp98/fwd/string.hpp at line 6, boost/metaparse/v1/cpp98/impl/at_c.hpp at line 6, boost/metaparse/v1/cpp98/impl/empty_string.hpp at line 6, boost/metaparse/v1/cpp98/impl/nth_of_c.hpp at line 6, boost/metaparse/v1/cpp98/impl/nth_of_c_impl.hpp at line 6, boost/metaparse/v1/cpp98/impl/pop_back.hpp at line 6, boost/metaparse/v1/cpp98/impl/pop_front.hpp at line 6, boost/metaparse/v1/cpp98/impl/push_back_c.hpp at line 6, boost/metaparse/v1/cpp98/impl/push_front_c.hpp at line 6, boost/metaparse/v1/cpp98/impl/size.hpp at line 6, boost/metaparse/v1/cpp98/impl/skip_seq.hpp at line 6, boost/metaparse/v1/cpp98/impl/update_c.hpp at line 6, boost/metaparse/v1/cpp98/last_of.hpp at line 6, boost/metaparse/v1/cpp98/nth_of.hpp at line 6, boost/metaparse/v1/cpp98/nth_of_c.hpp at line 6, boost/metaparse/v1/cpp98/string.hpp at line 6, boost/metaparse/v1/debug_parsing_error.hpp at line 6, boost/metaparse/v1/define_error.hpp at line 6, boost/metaparse/v1/digit.hpp at line 6, boost/metaparse/v1/digit_val.hpp at line 6, boost/metaparse/v1/empty.hpp at line 6, boost/metaparse/v1/entire_input.hpp at line 6, boost/metaparse/v1/error/digit_expected.hpp at line 6, boost/metaparse/v1/error/end_of_input_expected.hpp at line 6, boost/metaparse/v1/error/expected_to_fail.hpp at line 6, boost/metaparse/v1/error/index_out_of_range.hpp at line 6, boost/metaparse/v1/error/letter_expected.hpp at line 6, boost/metaparse/v1/error/literal_expected.hpp at line 6, boost/metaparse/v1/error/none_of_the_expected_cases_found.hpp at line 6, boost/metaparse/v1/error/unexpected_character.hpp at line 6, boost/metaparse/v1/error/unexpected_end_of_input.hpp at line 6, boost/metaparse/v1/error/unpaired.hpp at line 6, boost/metaparse/v1/error/whitespace_expected.hpp at line 6, boost/metaparse/v1/except.hpp at line 6, boost/metaparse/v1/fail.hpp at line 6, boost/metaparse/v1/fail_at_first_char_expected.hpp at line 6, boost/metaparse/v1/fail_tag.hpp at line 6, boost/metaparse/v1/first_of.hpp at line 6, boost/metaparse/v1/foldl.hpp at line 6, boost/metaparse/v1/foldl1.hpp at line 6, boost/metaparse/v1/foldl_reject_incomplete.hpp at line 6, boost/metaparse/v1/foldl_reject_incomplete1.hpp at line 6, boost/metaparse/v1/foldl_reject_incomplete_start_with_parser.hpp at line 6, boost/metaparse/v1/foldl_start_with_parser.hpp at line 6, boost/metaparse/v1/foldr.hpp at line 6, boost/metaparse/v1/foldr1.hpp at line 6, boost/metaparse/v1/foldr_reject_incomplete.hpp at line 6, boost/metaparse/v1/foldr_reject_incomplete1.hpp at line 6, boost/metaparse/v1/foldr_start_with_parser.hpp at line 6, boost/metaparse/v1/fwd/accept.hpp at line 6, boost/metaparse/v1/fwd/build_parser.hpp at line 6, boost/metaparse/v1/fwd/get_col.hpp at line 6, boost/metaparse/v1/fwd/get_line.hpp at line 6, boost/metaparse/v1/fwd/get_message.hpp at line 6, boost/metaparse/v1/fwd/get_position.hpp at line 6, boost/metaparse/v1/fwd/get_prev_char.hpp at line 6, boost/metaparse/v1/fwd/get_remaining.hpp at line 6, boost/metaparse/v1/fwd/get_result.hpp at line 6, boost/metaparse/v1/fwd/next_char.hpp at line 6, boost/metaparse/v1/fwd/next_line.hpp at line 6, boost/metaparse/v1/fwd/reject.hpp at line 6, boost/metaparse/v1/fwd/source_position.hpp at line 6, boost/metaparse/v1/fwd/string.hpp at line 6, boost/metaparse/v1/get_col.hpp at line 6, boost/metaparse/v1/get_line.hpp at line 6, boost/metaparse/v1/get_message.hpp at line 6, boost/metaparse/v1/get_position.hpp at line 6, boost/metaparse/v1/get_prev_char.hpp at line 6, boost/metaparse/v1/get_remaining.hpp at line 6, boost/metaparse/v1/get_result.hpp at line 6, boost/metaparse/v1/grammar.hpp at line 6, boost/metaparse/v1/if_.hpp at line 6, boost/metaparse/v1/impl/apply_parser.hpp at line 6, boost/metaparse/v1/impl/assert_string_length.hpp at line 6, boost/metaparse/v1/impl/at_c.hpp at line 6, boost/metaparse/v1/impl/back_inserter.hpp at line 6, boost/metaparse/v1/impl/front_inserter.hpp at line 6, boost/metaparse/v1/impl/fwd/iterate_impl.hpp at line 6, boost/metaparse/v1/impl/has_type.hpp at line 6, boost/metaparse/v1/impl/is_any.hpp at line 6, boost/metaparse/v1/impl/is_char_c.hpp at line 6, boost/metaparse/v1/impl/iterate_impl.hpp at line 6, boost/metaparse/v1/impl/iterate_impl_unchecked.hpp at line 6, boost/metaparse/v1/impl/later_result.hpp at line 6, boost/metaparse/v1/impl/next_digit.hpp at line 6, boost/metaparse/v1/impl/no_char.hpp at line 6, boost/metaparse/v1/impl/one_char_except_not_used.hpp at line 6, boost/metaparse/v1/impl/one_of.hpp at line 6, boost/metaparse/v1/impl/one_of_fwd_op.hpp at line 6, boost/metaparse/v1/impl/returns.hpp at line 6, boost/metaparse/v1/impl/sequence.hpp at line 6, boost/metaparse/v1/impl/sequence_impl.hpp at line 6, boost/metaparse/v1/impl/string_iterator.hpp at line 6, boost/metaparse/v1/impl/string_iterator_tag.hpp at line 6, boost/metaparse/v1/impl/void_.hpp at line 6, boost/metaparse/v1/int_.hpp at line 6, boost/metaparse/v1/is_error.hpp at line 6, boost/metaparse/v1/iterate.hpp at line 6, boost/metaparse/v1/iterate_c.hpp at line 6, boost/metaparse/v1/keyword.hpp at line 6, boost/metaparse/v1/last_of.hpp at line 6, boost/metaparse/v1/letter.hpp at line 6, boost/metaparse/v1/lit.hpp at line 6, boost/metaparse/v1/lit_c.hpp at line 6, boost/metaparse/v1/look_ahead.hpp at line 6, boost/metaparse/v1/middle_of.hpp at line 6, boost/metaparse/v1/next_char.hpp at line 6, boost/metaparse/v1/next_line.hpp at line 6, boost/metaparse/v1/nth_of.hpp at line 6, boost/metaparse/v1/nth_of_c.hpp at line 6, boost/metaparse/v1/one_char.hpp at line 6, boost/metaparse/v1/one_char_except.hpp at line 6, boost/metaparse/v1/one_char_except_c.hpp at line 6, boost/metaparse/v1/one_of.hpp at line 6, boost/metaparse/v1/one_of_c.hpp at line 6, boost/metaparse/v1/optional.hpp at line 6, boost/metaparse/v1/range.hpp at line 6, boost/metaparse/v1/range_c.hpp at line 6, boost/metaparse/v1/reject.hpp at line 6, boost/metaparse/v1/repeated.hpp at line 6, boost/metaparse/v1/repeated1.hpp at line 6, boost/metaparse/v1/repeated_one_of.hpp at line 6, boost/metaparse/v1/repeated_one_of1.hpp at line 6, boost/metaparse/v1/repeated_reject_incomplete.hpp at line 6, boost/metaparse/v1/repeated_reject_incomplete1.hpp at line 6, boost/metaparse/v1/return_.hpp at line 6, boost/metaparse/v1/sequence.hpp at line 6, boost/metaparse/v1/sequence_apply.hpp at line 6, boost/metaparse/v1/source_position.hpp at line 6, boost/metaparse/v1/source_position_tag.hpp at line 6, boost/metaparse/v1/space.hpp at line 6, boost/metaparse/v1/spaces.hpp at line 6, boost/metaparse/v1/start.hpp at line 6, boost/metaparse/v1/string.hpp at line 6, boost/metaparse/v1/string_tag.hpp at line 6, boost/metaparse/v1/swap.hpp at line 6, boost/metaparse/v1/token.hpp at line 6, boost/metaparse/v1/transform.hpp at line 6, boost/metaparse/v1/transform_error.hpp at line 6, boost/metaparse/v1/transform_error_message.hpp at line 6, boost/metaparse/v1/unless_error.hpp at line 6, boost/metaparse/v1/util/digit_to_int.hpp at line 6, boost/metaparse/v1/util/digit_to_int_c.hpp at line 6, boost/metaparse/v1/util/in_range.hpp at line 6, boost/metaparse/v1/util/in_range_c.hpp at line 6, boost/metaparse/v1/util/int_to_digit.hpp at line 6, boost/metaparse/v1/util/int_to_digit_c.hpp at line 6, boost/metaparse/v1/util/is_digit.hpp at line 6, boost/metaparse/v1/util/is_lcase_letter.hpp at line 6, boost/metaparse/v1/util/is_letter.hpp at line 6, boost/metaparse/v1/util/is_ucase_letter.hpp at line 6, boost/metaparse/v1/util/is_whitespace.hpp at line 6, boost/metaparse/v1/util/is_whitespace_c.hpp at line 6, boost/metaparse/version.hpp at line 6, boost/move/detail/reverse_iterator.hpp at line 6, boost/move/detail/to_raw_pointer.hpp at line 6, boost/mpi/cartesian_communicator.hpp at line 3, boost/mpi/detail/antiques.hpp at line 3, boost/mpi/detail/offsets.hpp at line 3, boost/multiprecision/detail/functions/constants.hpp at line 3, boost/multiprecision/detail/functions/pow.hpp at line 5, boost/multiprecision/detail/functions/trig.hpp at line 5, boost/non_type.hpp at line 6, boost/pending/lowest_bit.hpp at line 9, boost/sort/pdqsort/pdqsort.hpp at line 5, boost/sort/sort.hpp at line 5, boost/sort/spreadsort/detail/constants.hpp at line 5, boost/sort/spreadsort/detail/float_sort.hpp at line 5, boost/sort/spreadsort/detail/integer_sort.hpp at line 5, boost/sort/spreadsort/detail/spreadsort_common.hpp at line 6, boost/sort/spreadsort/detail/string_sort.hpp at line 5, boost/sort/spreadsort/float_sort.hpp at line 5, boost/sort/spreadsort/integer_sort.hpp at line 5, boost/sort/spreadsort/spreadsort.hpp at line 5, boost/sort/spreadsort/string_sort.hpp at line 5, libs/context/src/continuation.cpp at line 4, libs/context/src/execution_context.cpp at line 4, libs/context/src/fiber.cpp at line 4, libs/context/src/posix/stack_traits.cpp at line 4, libs/context/src/untested.cpp at line 4, libs/context/src/windows/stack_traits.cpp at line 4, libs/coroutine/src/detail/coroutine_context.cpp at line 4, libs/coroutine/src/exceptions.cpp at line 4, libs/coroutine/src/posix/stack_traits.cpp at line 4, libs/coroutine/src/windows/stack_traits.cpp at line 4
- License text:
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/config/platform/cloudabi.hpp [2:4]
- boost/container/detail/function_detector.hpp [5:7]
- boost/container/detail/minimal_char_traits_header.hpp [5:7]
- boost/container/options.hpp [5:7]
- boost/context/all.hpp [3:5]
- boost/context/continuation.hpp [3:5]
- boost/context/continuation_fcontext.hpp [3:5]
- boost/context/continuation_ucontext.hpp [3:5]
- boost/context/continuation_winfib.hpp [3:5]
- boost/context/detail/apply.hpp [3:5]
- boost/context/detail/config.hpp [3:5]
- boost/context/detail/disable_overload.hpp [3:5]
- boost/context/detail/exception.hpp [3:5]
- boost/context/detail/exchange.hpp [3:5]
- boost/context/detail/externc.hpp [3:5]
- boost/context/detail/fcontext.hpp [3:5]
- boost/context/detail/index_sequence.hpp [3:5]
- boost/context/detail/invoke.hpp [3:5]
- boost/context/detail/prefetch.hpp [2:4]
- boost/context/detail/tuple.hpp [3:5]
- boost/context/execution_context.hpp [3:5]
- boost/context/execution_context_v1.hpp [3:5]
- boost/context/execution_context_v2.hpp [3:5]
- boost/context/execution_context_v2_void.ipp [3:5]
- boost/context/fiber.hpp [3:5]
- boost/context/fiber_fcontext.hpp [3:5]
- boost/context/fiber_ucontext.hpp [3:5]
- boost/context/fiber_winfib.hpp [3:5]
- boost/context/fixedsize_stack.hpp [3:5]
- boost/context/flags.hpp [3:5]
- boost/context/pooled_fixedsize_stack.hpp [3:5]
- boost/context/posix/protected_fixedsize_stack.hpp [3:5]
- boost/context/posix/segmented_stack.hpp [3:5]
- boost/context/preallocated.hpp [3:5]
- boost/context/protected_fixedsize_stack.hpp [3:5]
- boost/context/segmented_stack.hpp [3:5]
- boost/context/stack_context.hpp [3:5]
- boost/context/stack_traits.hpp [3:5]
- boost/context/windows/protected_fixedsize_stack.hpp [3:5]
- boost/coroutine/all.hpp [3:5]
- boost/coroutine/asymmetric_coroutine.hpp [3:5]
- boost/coroutine/attributes.hpp [3:5]
- boost/coroutine/coroutine.hpp [3:5]
- boost/coroutine/detail/config.hpp [3:5]
- boost/coroutine/detail/coroutine_context.hpp [3:5]
- boost/coroutine/detail/data.hpp [3:5]
- boost/coroutine/detail/flags.hpp [3:5]
- boost/coroutine/detail/parameters.hpp [3:5]
- boost/coroutine/detail/preallocated.hpp [3:5]
- boost/coroutine/detail/pull_coroutine_impl.hpp [3:5]
- boost/coroutine/detail/pull_coroutine_object.hpp [3:5]
- boost/coroutine/detail/pull_coroutine_synthesized.hpp [3:5]
- boost/coroutine/detail/push_coroutine_impl.hpp [3:5]
- boost/coroutine/detail/push_coroutine_object.hpp [3:5]
- boost/coroutine/detail/push_coroutine_synthesized.hpp [3:5]
- boost/coroutine/detail/setup.hpp [3:5]
- boost/coroutine/detail/symmetric_coroutine_call.hpp [3:5]
- boost/coroutine/detail/symmetric_coroutine_impl.hpp [3:5]
- boost/coroutine/detail/symmetric_coroutine_object.hpp [3:5]
- boost/coroutine/detail/symmetric_coroutine_yield.hpp [3:5]
- boost/coroutine/detail/trampoline.hpp [3:5]
- boost/coroutine/detail/trampoline_pull.hpp [3:5]
- boost/coroutine/detail/trampoline_push.hpp [3:5]
- boost/coroutine/exceptions.hpp [3:5]
- boost/coroutine/flags.hpp [3:5]
- boost/coroutine/posix/protected_stack_allocator.hpp [3:5]
- boost/coroutine/posix/segmented_stack_allocator.hpp [3:5]
- boost/coroutine/protected_stack_allocator.hpp [3:5]
- boost/coroutine/segmented_stack_allocator.hpp [3:5]
- boost/coroutine/stack_allocator.hpp [3:5]
- boost/coroutine/stack_context.hpp [3:5]
- boost/coroutine/stack_traits.hpp [3:5]
- boost/coroutine/standard_stack_allocator.hpp [3:5]
- boost/coroutine/symmetric_coroutine.hpp [3:5]
- boost/coroutine/windows/protected_stack_allocator.hpp [3:5]
- boost/coroutine2/all.hpp [3:5]
- boost/coroutine2/coroutine.hpp [3:5]
- boost/coroutine2/detail/config.hpp [3:5]
- boost/coroutine2/detail/coroutine.hpp [3:5]
- boost/coroutine2/detail/create_control_block.ipp [3:5]
- boost/coroutine2/detail/decay_copy.hpp [3:5]
- boost/coroutine2/detail/disable_overload.hpp [3:5]
- boost/coroutine2/detail/forced_unwind.hpp [3:5]
- boost/coroutine2/detail/pull_control_block_cc.hpp [3:5]
- boost/coroutine2/detail/pull_control_block_cc.ipp [3:5]
- boost/coroutine2/detail/pull_coroutine.hpp [3:5]
- boost/coroutine2/detail/pull_coroutine.ipp [3:5]
- boost/coroutine2/detail/push_control_block_cc.hpp [3:5]
- boost/coroutine2/detail/push_control_block_cc.ipp [3:5]
- boost/coroutine2/detail/push_coroutine.hpp [3:5]
- boost/coroutine2/detail/push_coroutine.ipp [3:5]
- boost/coroutine2/detail/state.hpp [3:5]
- boost/coroutine2/detail/wrap.hpp [3:5]
- boost/coroutine2/fixedsize_stack.hpp [3:5]
- boost/coroutine2/pooled_fixedsize_stack.hpp [3:5]
- boost/coroutine2/protected_fixedsize_stack.hpp [3:5]
- boost/coroutine2/segmented_stack.hpp [3:5]
- boost/detail/dynamic_bitset.hpp [9:11]
- boost/dynamic_bitset.hpp [6:8]
- boost/dynamic_bitset/config.hpp [6:8]
- boost/dynamic_bitset/dynamic_bitset.hpp [11:13]
- boost/dynamic_bitset/serialization.hpp [5:7]
- boost/dynamic_bitset_fwd.hpp [6:8]
- boost/fiber/algo/algorithm.hpp [2:4]
- boost/fiber/algo/numa/work_stealing.hpp [3:5]
- boost/fiber/algo/round_robin.hpp [2:4]
- boost/fiber/algo/shared_work.hpp [3:5]
- boost/fiber/algo/work_stealing.hpp [3:5]
- boost/fiber/all.hpp [3:5]
- boost/fiber/barrier.hpp [3:5]
- boost/fiber/buffered_channel.hpp [3:5]
- boost/fiber/channel_op_status.hpp [2:4]
- boost/fiber/condition_variable.hpp [3:5]
- boost/fiber/context.hpp [3:5]
- boost/fiber/cuda/waitfor.hpp [3:5]
- boost/fiber/detail/config.hpp [3:5]
- boost/fiber/detail/context_spinlock_queue.hpp [3:5]
- boost/fiber/detail/context_spmc_queue.hpp [3:5]
- boost/fiber/detail/convert.hpp [3:5]
- boost/fiber/detail/cpu_relax.hpp [3:5]
- boost/fiber/detail/data.hpp [3:5]
- boost/fiber/detail/decay_copy.hpp [3:5]
- boost/fiber/detail/disable_overload.hpp [3:5]
- boost/fiber/detail/fss.hpp [3:5]
- boost/fiber/detail/futex.hpp [3:5]
- boost/fiber/detail/is_all_same.hpp [3:5]
- boost/fiber/detail/rtm.hpp [3:5]
- boost/fiber/detail/spinlock.hpp [3:5]
- boost/fiber/detail/spinlock_rtm.hpp [3:5]
- boost/fiber/detail/spinlock_status.hpp [3:5]
- boost/fiber/detail/spinlock_ttas.hpp [3:5]
- boost/fiber/detail/spinlock_ttas_adaptive.hpp [3:5]
- boost/fiber/detail/spinlock_ttas_adaptive_futex.hpp [3:5]
- boost/fiber/detail/spinlock_ttas_futex.hpp [3:5]
- boost/fiber/exceptions.hpp [3:5]
- boost/fiber/fiber.hpp [3:5]
- boost/fiber/fixedsize_stack.hpp [3:5]
- boost/fiber/fss.hpp [3:5]
- boost/fiber/future.hpp [3:5]
- boost/fiber/future/async.hpp [3:5]
- boost/fiber/future/detail/shared_state.hpp [3:5]
- boost/fiber/future/detail/shared_state_object.hpp [3:5]
- boost/fiber/future/detail/task_base.hpp [2:4]
- boost/fiber/future/detail/task_object.hpp [3:5]
- boost/fiber/future/future.hpp [3:5]
- boost/fiber/future/future_status.hpp [3:5]
- boost/fiber/future/packaged_task.hpp [3:5]
- boost/fiber/future/promise.hpp [3:5]
- boost/fiber/hip/waitfor.hpp [3:5]
- boost/fiber/mutex.hpp [3:5]
- boost/fiber/numa/pin_thread.hpp [3:5]
- boost/fiber/numa/topology.hpp [3:5]
- boost/fiber/operations.hpp [2:4]
- boost/fiber/policy.hpp [3:5]
- boost/fiber/pooled_fixedsize_stack.hpp [3:5]
- boost/fiber/properties.hpp [2:4]
- boost/fiber/protected_fixedsize_stack.hpp [3:5]
- boost/fiber/recursive_mutex.hpp [3:5]
- boost/fiber/recursive_timed_mutex.hpp [3:5]
- boost/fiber/scheduler.hpp [2:4]
- boost/fiber/segmented_stack.hpp [3:5]
- boost/fiber/timed_mutex.hpp [3:5]
- boost/fiber/type.hpp [3:5]
- boost/fiber/unbuffered_channel.hpp [3:5]
- boost/format/exceptions.hpp [7:9]
- boost/graph/two_graphs_common_spanning_trees.hpp [2:4]
- boost/integer/integer_log2.hpp [9:11]
- boost/intrusive/any_hook.hpp [5:7]
- boost/intrusive/avl_set.hpp [5:7]
- boost/intrusive/avl_set_hook.hpp [5:7]
- boost/intrusive/avltree.hpp [5:7]
- boost/intrusive/avltree_algorithms.hpp [6:8]
- boost/intrusive/bs_set.hpp [5:7]
- boost/intrusive/bs_set_hook.hpp [5:7]
- boost/intrusive/bstree.hpp [5:7]
- boost/intrusive/bstree_algorithms.hpp [5:7]
- boost/intrusive/circular_list_algorithms.hpp [6:8]
- boost/intrusive/circular_slist_algorithms.hpp [6:8]
- boost/intrusive/derivation_value_traits.hpp [5:7]
- boost/intrusive/detail/algo_type.hpp [5:7]
- boost/intrusive/detail/any_node_and_algorithms.hpp [5:7]
- boost/intrusive/detail/array_initializer.hpp [5:7]
- boost/intrusive/detail/assert.hpp [5:7]
- boost/intrusive/detail/avltree_node.hpp [5:7]
- boost/intrusive/detail/bstree_algorithms_base.hpp [5:7]
- boost/intrusive/detail/common_slist_algorithms.hpp [5:7]
- boost/intrusive/detail/config_begin.hpp [5:7]
- boost/intrusive/detail/config_end.hpp [5:7]
- boost/intrusive/detail/default_header_holder.hpp [5:7]
- boost/intrusive/detail/ebo_functor_holder.hpp [6:8]
- boost/intrusive/detail/empty_node_checker.hpp [5:7]
- boost/intrusive/detail/equal_to_value.hpp [5:7]
- boost/intrusive/detail/exception_disposer.hpp [5:7]
- boost/intrusive/detail/function_detector.hpp [5:7]
- boost/intrusive/detail/generic_hook.hpp [5:7]
- boost/intrusive/detail/get_value_traits.hpp [5:7]
- boost/intrusive/detail/hashtable_node.hpp [5:7]
- boost/intrusive/detail/hook_traits.hpp [5:7]
- boost/intrusive/detail/iiterator.hpp [5:7]
- boost/intrusive/detail/is_stateful_value_traits.hpp [5:7]
- boost/intrusive/detail/iterator.hpp [5:7]
- boost/intrusive/detail/key_nodeptr_comp.hpp [5:7]
- boost/intrusive/detail/list_iterator.hpp [6:8]
- boost/intrusive/detail/list_node.hpp [6:8]
- boost/intrusive/detail/math.hpp [5:7]
- boost/intrusive/detail/minimal_less_equal_header.hpp [5:7]
- boost/intrusive/detail/minimal_pair_header.hpp [5:7]
- boost/intrusive/detail/mpl.hpp [6:8]
- boost/intrusive/detail/node_cloner_disposer.hpp [5:7]
- boost/intrusive/detail/node_holder.hpp [5:7]
- boost/intrusive/detail/node_to_value.hpp [5:7]
- boost/intrusive/detail/parent_from_member.hpp [5:7]
- boost/intrusive/detail/rbtree_node.hpp [6:8]
- boost/intrusive/detail/reverse_iterator.hpp [5:7]
- boost/intrusive/detail/simple_disposers.hpp [5:7]
- boost/intrusive/detail/size_holder.hpp [5:7]
- boost/intrusive/detail/slist_iterator.hpp [6:8]
- boost/intrusive/detail/slist_node.hpp [6:8]
- boost/intrusive/detail/transform_iterator.hpp [5:7]
- boost/intrusive/detail/tree_iterator.hpp [5:7]
- boost/intrusive/detail/tree_node.hpp [5:7]
- boost/intrusive/detail/uncast.hpp [5:7]
- boost/intrusive/hashtable.hpp [5:7]
- boost/intrusive/intrusive_fwd.hpp [5:7]
- boost/intrusive/linear_slist_algorithms.hpp [6:8]
- boost/intrusive/link_mode.hpp [5:7]
- boost/intrusive/list.hpp [6:8]
- boost/intrusive/list_hook.hpp [6:8]
- boost/intrusive/member_value_traits.hpp [5:7]
- boost/intrusive/options.hpp [5:7]
- boost/intrusive/pack_options.hpp [5:7]
- boost/intrusive/parent_from_member.hpp [5:7]
- boost/intrusive/pointer_plus_bits.hpp [5:7]
- boost/intrusive/priority_compare.hpp [5:7]
- boost/intrusive/rbtree.hpp [5:7]
- boost/intrusive/rbtree_algorithms.hpp [6:8]
- boost/intrusive/set.hpp [6:8]
- boost/intrusive/set_hook.hpp [6:8]
- boost/intrusive/sg_set.hpp [5:7]
- boost/intrusive/sgtree.hpp [5:7]
- boost/intrusive/sgtree_algorithms.hpp [5:7]
- boost/intrusive/slist.hpp [6:8]
- boost/intrusive/slist_hook.hpp [6:8]
- boost/intrusive/splay_set.hpp [5:7]
- boost/intrusive/splaytree.hpp [5:7]
- boost/intrusive/splaytree_algorithms.hpp [5:7]
- boost/intrusive/treap.hpp [5:7]
- boost/intrusive/treap_algorithms.hpp [5:7]
- boost/intrusive/treap_set.hpp [5:7]
- boost/intrusive/trivial_value_traits.hpp [5:7]
- boost/intrusive/unordered_set.hpp [6:8]
- boost/intrusive/unordered_set_hook.hpp [6:8]
- boost/metaparse.hpp [2:4]
- boost/metaparse/accept.hpp [5:7]
- boost/metaparse/accept_tag.hpp [5:7]
- boost/metaparse/accept_when.hpp [5:7]
- boost/metaparse/alphanum.hpp [5:7]
- boost/metaparse/always.hpp [5:7]
- boost/metaparse/always_c.hpp [5:7]
- boost/metaparse/build_parser.hpp [5:7]
- boost/metaparse/change_error_message.hpp [5:7]
- boost/metaparse/config.hpp [5:7]
- boost/metaparse/debug_parsing_error.hpp [5:7]
- boost/metaparse/define_error.hpp [5:7]
- boost/metaparse/digit.hpp [5:7]
- boost/metaparse/digit_val.hpp [5:7]
- boost/metaparse/empty.hpp [5:7]
- boost/metaparse/entire_input.hpp [5:7]
- boost/metaparse/error/digit_expected.hpp [5:7]
- boost/metaparse/error/end_of_input_expected.hpp [5:7]
- boost/metaparse/error/index_out_of_range.hpp [5:7]
- boost/metaparse/error/letter_expected.hpp [5:7]
- boost/metaparse/error/literal_expected.hpp [5:7]
- boost/metaparse/error/none_of_the_expected_cases_found.hpp [5:7]
- boost/metaparse/error/unexpected_character.hpp [5:7]
- boost/metaparse/error/unexpected_end_of_input.hpp [5:7]
- boost/metaparse/error/unpaired.hpp [5:7]
- boost/metaparse/error/whitespace_expected.hpp [5:7]
- boost/metaparse/except.hpp [5:7]
- boost/metaparse/fail.hpp [5:7]
- boost/metaparse/fail_at_first_char_expected.hpp [5:7]
- boost/metaparse/fail_tag.hpp [5:7]
- boost/metaparse/first_of.hpp [5:7]
- boost/metaparse/foldl.hpp [5:7]
- boost/metaparse/foldl1.hpp [5:7]
- boost/metaparse/foldl_reject_incomplete.hpp [5:7]
- boost/metaparse/foldl_reject_incomplete1.hpp [5:7]
- boost/metaparse/foldl_reject_incomplete_start_with_parser.hpp [5:7]
- boost/metaparse/foldl_start_with_parser.hpp [5:7]
- boost/metaparse/foldr.hpp [5:7]
- boost/metaparse/foldr1.hpp [5:7]
- boost/metaparse/foldr_reject_incomplete.hpp [5:7]
- boost/metaparse/foldr_reject_incomplete1.hpp [5:7]
- boost/metaparse/foldr_start_with_parser.hpp [5:7]
- boost/metaparse/get_col.hpp [5:7]
- boost/metaparse/get_line.hpp [5:7]
- boost/metaparse/get_message.hpp [5:7]
- boost/metaparse/get_position.hpp [5:7]
- boost/metaparse/get_prev_char.hpp [5:7]
- boost/metaparse/get_remaining.hpp [5:7]
- boost/metaparse/get_result.hpp [5:7]
- boost/metaparse/grammar.hpp [5:7]
- boost/metaparse/if_.hpp [5:7]
- boost/metaparse/int_.hpp [5:7]
- boost/metaparse/is_error.hpp [5:7]
- boost/metaparse/iterate.hpp [5:7]
- boost/metaparse/iterate_c.hpp [5:7]
- boost/metaparse/keyword.hpp [5:7]
- boost/metaparse/last_of.hpp [5:7]
- boost/metaparse/letter.hpp [5:7]
- boost/metaparse/limit_one_char_except_size.hpp [5:7]
- boost/metaparse/limit_one_of_size.hpp [5:7]
- boost/metaparse/limit_sequence_size.hpp [5:7]
- boost/metaparse/limit_string_size.hpp [5:7]
- boost/metaparse/lit.hpp [5:7]
- boost/metaparse/lit_c.hpp [5:7]
- boost/metaparse/look_ahead.hpp [5:7]
- boost/metaparse/middle_of.hpp [5:7]
- boost/metaparse/next_char.hpp [5:7]
- boost/metaparse/next_line.hpp [5:7]
- boost/metaparse/nth_of.hpp [5:7]
- boost/metaparse/nth_of_c.hpp [5:7]
- boost/metaparse/one_char.hpp [5:7]
- boost/metaparse/one_char_except.hpp [5:7]
- boost/metaparse/one_char_except_c.hpp [5:7]
- boost/metaparse/one_of.hpp [5:7]
- boost/metaparse/one_of_c.hpp [5:7]
- boost/metaparse/optional.hpp [5:7]
- boost/metaparse/range.hpp [5:7]
- boost/metaparse/range_c.hpp [5:7]
- boost/metaparse/reject.hpp [5:7]
- boost/metaparse/repeated.hpp [5:7]
- boost/metaparse/repeated1.hpp [5:7]
- boost/metaparse/repeated_one_of.hpp [5:7]
- boost/metaparse/repeated_one_of1.hpp [5:7]
- boost/metaparse/repeated_reject_incomplete.hpp [5:7]
- boost/metaparse/repeated_reject_incomplete1.hpp [5:7]
- boost/metaparse/return_.hpp [5:7]
- boost/metaparse/sequence.hpp [5:7]
- boost/metaparse/sequence_apply.hpp [5:7]
- boost/metaparse/source_position.hpp [5:7]
- boost/metaparse/source_position_tag.hpp [5:7]
- boost/metaparse/space.hpp [5:7]
- boost/metaparse/spaces.hpp [5:7]
- boost/metaparse/start.hpp [5:7]
- boost/metaparse/string.hpp [2:4]
- boost/metaparse/string_tag.hpp [5:7]
- boost/metaparse/token.hpp [5:7]
- boost/metaparse/transform.hpp [5:7]
- boost/metaparse/transform_error.hpp [5:7]
- boost/metaparse/transform_error_message.hpp [5:7]
- boost/metaparse/unless_error.hpp [5:7]
- boost/metaparse/util/digit_to_int.hpp [5:7]
- boost/metaparse/util/digit_to_int_c.hpp [5:7]
- boost/metaparse/util/in_range.hpp [5:7]
- boost/metaparse/util/in_range_c.hpp [5:7]
- boost/metaparse/util/int_to_digit.hpp [5:7]
- boost/metaparse/util/int_to_digit_c.hpp [5:7]
- boost/metaparse/util/is_digit.hpp [5:7]
- boost/metaparse/util/is_lcase_letter.hpp [5:7]
- boost/metaparse/util/is_letter.hpp [5:7]
- boost/metaparse/util/is_ucase_letter.hpp [5:7]
- boost/metaparse/util/is_whitespace.hpp [5:7]
- boost/metaparse/util/is_whitespace_c.hpp [5:7]
- boost/metaparse/v1/accept.hpp [5:7]
- boost/metaparse/v1/accept_tag.hpp [5:7]
- boost/metaparse/v1/accept_when.hpp [5:7]
- boost/metaparse/v1/alphanum.hpp [5:7]
- boost/metaparse/v1/always.hpp [5:7]
- boost/metaparse/v1/always_c.hpp [5:7]
- boost/metaparse/v1/build_parser.hpp [5:7]
- boost/metaparse/v1/change_error_message.hpp [5:7]
- boost/metaparse/v1/cpp11/first_of.hpp [5:7]
- boost/metaparse/v1/cpp11/fwd/string.hpp [5:7]
- boost/metaparse/v1/cpp11/impl/at_c.hpp [5:7]
- boost/metaparse/v1/cpp11/impl/concat.hpp [5:7]
- boost/metaparse/v1/cpp11/impl/empty_string.hpp [5:7]
- boost/metaparse/v1/cpp11/impl/nth_of_c.hpp [5:7]
- boost/metaparse/v1/cpp11/impl/nth_of_c_skip_remaining.hpp [5:7]
- boost/metaparse/v1/cpp11/impl/pop_back.hpp [5:7]
- boost/metaparse/v1/cpp11/impl/pop_front.hpp [5:7]
- boost/metaparse/v1/cpp11/impl/push_back_c.hpp [5:7]
- boost/metaparse/v1/cpp11/impl/push_front_c.hpp [5:7]
- boost/metaparse/v1/cpp11/impl/remove_trailing_no_chars.hpp [5:7]
- boost/metaparse/v1/cpp11/impl/size.hpp [5:7]
- boost/metaparse/v1/cpp11/impl/string_at.hpp [5:7]
- boost/metaparse/v1/cpp11/last_of.hpp [5:7]
- boost/metaparse/v1/cpp11/nth_of.hpp [5:7]
- boost/metaparse/v1/cpp11/nth_of_c.hpp [5:7]
- boost/metaparse/v1/cpp11/string.hpp [5:7]
- boost/metaparse/v1/cpp98/first_of.hpp [5:7]
- boost/metaparse/v1/cpp98/fwd/string.hpp [5:7]
- boost/metaparse/v1/cpp98/impl/at_c.hpp [5:7]
- boost/metaparse/v1/cpp98/impl/empty_string.hpp [5:7]
- boost/metaparse/v1/cpp98/impl/nth_of_c.hpp [5:7]
- boost/metaparse/v1/cpp98/impl/nth_of_c_impl.hpp [5:7]
- boost/metaparse/v1/cpp98/impl/pop_back.hpp [5:7]
- boost/metaparse/v1/cpp98/impl/pop_front.hpp [5:7]
- boost/metaparse/v1/cpp98/impl/push_back_c.hpp [5:7]
- boost/metaparse/v1/cpp98/impl/push_front_c.hpp [5:7]
- boost/metaparse/v1/cpp98/impl/size.hpp [5:7]
- boost/metaparse/v1/cpp98/impl/skip_seq.hpp [5:7]
- boost/metaparse/v1/cpp98/impl/update_c.hpp [5:7]
- boost/metaparse/v1/cpp98/last_of.hpp [5:7]
- boost/metaparse/v1/cpp98/nth_of.hpp [5:7]
- boost/metaparse/v1/cpp98/nth_of_c.hpp [5:7]
- boost/metaparse/v1/cpp98/string.hpp [5:7]
- boost/metaparse/v1/debug_parsing_error.hpp [5:7]
- boost/metaparse/v1/define_error.hpp [5:7]
- boost/metaparse/v1/digit.hpp [5:7]
- boost/metaparse/v1/digit_val.hpp [5:7]
- boost/metaparse/v1/empty.hpp [5:7]
- boost/metaparse/v1/entire_input.hpp [5:7]
- boost/metaparse/v1/error/digit_expected.hpp [5:7]
- boost/metaparse/v1/error/end_of_input_expected.hpp [5:7]
- boost/metaparse/v1/error/expected_to_fail.hpp [5:7]
- boost/metaparse/v1/error/index_out_of_range.hpp [5:7]
- boost/metaparse/v1/error/letter_expected.hpp [5:7]
- boost/metaparse/v1/error/literal_expected.hpp [5:7]
- boost/metaparse/v1/error/none_of_the_expected_cases_found.hpp [5:7]
- boost/metaparse/v1/error/unexpected_character.hpp [5:7]
- boost/metaparse/v1/error/unexpected_end_of_input.hpp [5:7]
- boost/metaparse/v1/error/unpaired.hpp [5:7]
- boost/metaparse/v1/error/whitespace_expected.hpp [5:7]
- boost/metaparse/v1/except.hpp [5:7]
- boost/metaparse/v1/fail.hpp [5:7]
- boost/metaparse/v1/fail_at_first_char_expected.hpp [5:7]
- boost/metaparse/v1/fail_tag.hpp [5:7]
- boost/metaparse/v1/first_of.hpp [5:7]
- boost/metaparse/v1/foldl.hpp [5:7]
- boost/metaparse/v1/foldl1.hpp [5:7]
- boost/metaparse/v1/foldl_reject_incomplete.hpp [5:7]
- boost/metaparse/v1/foldl_reject_incomplete1.hpp [5:7]
- boost/metaparse/v1/foldl_reject_incomplete_start_with_parser.hpp [5:7]
- boost/metaparse/v1/foldl_start_with_parser.hpp [5:7]
- boost/metaparse/v1/foldr.hpp [5:7]
- boost/metaparse/v1/foldr1.hpp [5:7]
- boost/metaparse/v1/foldr_reject_incomplete.hpp [5:7]
- boost/metaparse/v1/foldr_reject_incomplete1.hpp [5:7]
- boost/metaparse/v1/foldr_start_with_parser.hpp [5:7]
- boost/metaparse/v1/fwd/accept.hpp [5:7]
- boost/metaparse/v1/fwd/build_parser.hpp [5:7]
- boost/metaparse/v1/fwd/get_col.hpp [5:7]
- boost/metaparse/v1/fwd/get_line.hpp [5:7]
- boost/metaparse/v1/fwd/get_message.hpp [5:7]
- boost/metaparse/v1/fwd/get_position.hpp [5:7]
- boost/metaparse/v1/fwd/get_prev_char.hpp [5:7]
- boost/metaparse/v1/fwd/get_remaining.hpp [5:7]
- boost/metaparse/v1/fwd/get_result.hpp [5:7]
- boost/metaparse/v1/fwd/next_char.hpp [5:7]
- boost/metaparse/v1/fwd/next_line.hpp [5:7]
- boost/metaparse/v1/fwd/reject.hpp [5:7]
- boost/metaparse/v1/fwd/source_position.hpp [5:7]
- boost/metaparse/v1/fwd/string.hpp [5:7]
- boost/metaparse/v1/get_col.hpp [5:7]
- boost/metaparse/v1/get_line.hpp [5:7]
- boost/metaparse/v1/get_message.hpp [5:7]
- boost/metaparse/v1/get_position.hpp [5:7]
- boost/metaparse/v1/get_prev_char.hpp [5:7]
- boost/metaparse/v1/get_remaining.hpp [5:7]
- boost/metaparse/v1/get_result.hpp [5:7]
- boost/metaparse/v1/grammar.hpp [5:7]
- boost/metaparse/v1/if_.hpp [5:7]
- boost/metaparse/v1/impl/apply_parser.hpp [5:7]
- boost/metaparse/v1/impl/assert_string_length.hpp [5:7]
- boost/metaparse/v1/impl/at_c.hpp [5:7]
- boost/metaparse/v1/impl/back_inserter.hpp [5:7]
- boost/metaparse/v1/impl/front_inserter.hpp [5:7]
- boost/metaparse/v1/impl/fwd/iterate_impl.hpp [5:7]
- boost/metaparse/v1/impl/has_type.hpp [5:7]
- boost/metaparse/v1/impl/is_any.hpp [5:7]
- boost/metaparse/v1/impl/is_char_c.hpp [5:7]
- boost/metaparse/v1/impl/iterate_impl.hpp [5:7]
- boost/metaparse/v1/impl/iterate_impl_unchecked.hpp [5:7]
- boost/metaparse/v1/impl/later_result.hpp [5:7]
- boost/metaparse/v1/impl/next_digit.hpp [5:7]
- boost/metaparse/v1/impl/no_char.hpp [5:7]
- boost/metaparse/v1/impl/one_char_except_not_used.hpp [5:7]
- boost/metaparse/v1/impl/one_of.hpp [5:7]
- boost/metaparse/v1/impl/one_of_fwd_op.hpp [5:7]
- boost/metaparse/v1/impl/returns.hpp [5:7]
- boost/metaparse/v1/impl/sequence.hpp [5:7]
- boost/metaparse/v1/impl/sequence_impl.hpp [5:7]
- boost/metaparse/v1/impl/string_iterator.hpp [5:7]
- boost/metaparse/v1/impl/string_iterator_tag.hpp [5:7]
- boost/metaparse/v1/impl/void_.hpp [5:7]
- boost/metaparse/v1/int_.hpp [5:7]
- boost/metaparse/v1/is_error.hpp [5:7]
- boost/metaparse/v1/iterate.hpp [5:7]
- boost/metaparse/v1/iterate_c.hpp [5:7]
- boost/metaparse/v1/keyword.hpp [5:7]
- boost/metaparse/v1/last_of.hpp [5:7]
- boost/metaparse/v1/letter.hpp [5:7]
- boost/metaparse/v1/lit.hpp [5:7]
- boost/metaparse/v1/lit_c.hpp [5:7]
- boost/metaparse/v1/look_ahead.hpp [5:7]
- boost/metaparse/v1/middle_of.hpp [5:7]
- boost/metaparse/v1/next_char.hpp [5:7]
- boost/metaparse/v1/next_line.hpp [5:7]
- boost/metaparse/v1/nth_of.hpp [5:7]
- boost/metaparse/v1/nth_of_c.hpp [5:7]
- boost/metaparse/v1/one_char.hpp [5:7]
- boost/metaparse/v1/one_char_except.hpp [5:7]
- boost/metaparse/v1/one_char_except_c.hpp [5:7]
- boost/metaparse/v1/one_of.hpp [5:7]
- boost/metaparse/v1/one_of_c.hpp [5:7]
- boost/metaparse/v1/optional.hpp [5:7]
- boost/metaparse/v1/range.hpp [5:7]
- boost/metaparse/v1/range_c.hpp [5:7]
- boost/metaparse/v1/reject.hpp [5:7]
- boost/metaparse/v1/repeated.hpp [5:7]
- boost/metaparse/v1/repeated1.hpp [5:7]
- boost/metaparse/v1/repeated_one_of.hpp [5:7]
- boost/metaparse/v1/repeated_one_of1.hpp [5:7]
- boost/metaparse/v1/repeated_reject_incomplete.hpp [5:7]
- boost/metaparse/v1/repeated_reject_incomplete1.hpp [5:7]
- boost/metaparse/v1/return_.hpp [5:7]
- boost/metaparse/v1/sequence.hpp [5:7]
- boost/metaparse/v1/sequence_apply.hpp [5:7]
- boost/metaparse/v1/source_position.hpp [5:7]
- boost/metaparse/v1/source_position_tag.hpp [5:7]
- boost/metaparse/v1/space.hpp [5:7]
- boost/metaparse/v1/spaces.hpp [5:7]
- boost/metaparse/v1/start.hpp [5:7]
- boost/metaparse/v1/string.hpp [5:7]
- boost/metaparse/v1/string_tag.hpp [5:7]
- boost/metaparse/v1/swap.hpp [5:7]
- boost/metaparse/v1/token.hpp [5:7]
- boost/metaparse/v1/transform.hpp [5:7]
- boost/metaparse/v1/transform_error.hpp [5:7]
- boost/metaparse/v1/transform_error_message.hpp [5:7]
- boost/metaparse/v1/unless_error.hpp [5:7]
- boost/metaparse/v1/util/digit_to_int.hpp [5:7]
- boost/metaparse/v1/util/digit_to_int_c.hpp [5:7]
- boost/metaparse/v1/util/in_range.hpp [5:7]
- boost/metaparse/v1/util/in_range_c.hpp [5:7]
- boost/metaparse/v1/util/int_to_digit.hpp [5:7]
- boost/metaparse/v1/util/int_to_digit_c.hpp [5:7]
- boost/metaparse/v1/util/is_digit.hpp [5:7]
- boost/metaparse/v1/util/is_lcase_letter.hpp [5:7]
- boost/metaparse/v1/util/is_letter.hpp [5:7]
- boost/metaparse/v1/util/is_ucase_letter.hpp [5:7]
- boost/metaparse/v1/util/is_whitespace.hpp [5:7]
- boost/metaparse/v1/util/is_whitespace_c.hpp [5:7]
- boost/metaparse/version.hpp [5:7]
- boost/move/detail/reverse_iterator.hpp [5:7]
- boost/move/detail/to_raw_pointer.hpp [5:7]
- boost/mpi/cartesian_communicator.hpp [2:4]
- boost/mpi/detail/antiques.hpp [2:4]
- boost/mpi/detail/offsets.hpp [2:4]
- boost/multiprecision/detail/functions/constants.hpp [2:4]
- boost/multiprecision/detail/functions/pow.hpp [4:6]
- boost/multiprecision/detail/functions/trig.hpp [4:6]
- boost/non_type.hpp [5:7]
- boost/pending/lowest_bit.hpp [8:10]
- boost/sort/pdqsort/pdqsort.hpp [4:6]
- boost/sort/sort.hpp [4:6]
- boost/sort/spreadsort/detail/constants.hpp [4:6]
- boost/sort/spreadsort/detail/float_sort.hpp [4:6]
- boost/sort/spreadsort/detail/integer_sort.hpp [4:6]
- boost/sort/spreadsort/detail/spreadsort_common.hpp [5:7]
- boost/sort/spreadsort/detail/string_sort.hpp [4:6]
- boost/sort/spreadsort/float_sort.hpp [4:6]
- boost/sort/spreadsort/integer_sort.hpp [4:6]
- boost/sort/spreadsort/spreadsort.hpp [4:6]
- boost/sort/spreadsort/string_sort.hpp [4:6]
- libs/context/src/continuation.cpp [3:5]
- libs/context/src/execution_context.cpp [3:5]
- libs/context/src/fiber.cpp [3:5]
- libs/context/src/posix/stack_traits.cpp [3:5]
- libs/context/src/untested.cpp [3:5]
- libs/context/src/windows/stack_traits.cpp [3:5]
- libs/coroutine/src/detail/coroutine_context.cpp [3:5]
- libs/coroutine/src/exceptions.cpp [3:5]
- libs/coroutine/src/posix/stack_traits.cpp [3:5]
- libs/coroutine/src/windows/stack_traits.cpp [3:5]
-
-KEEP BSL-1.0 519e01acec4b7ae39f375d1d02c207c7
-BELONGS ya.make
- License text:
- * Distributed under the Boost Software License, Version 1.0.
- * See http://www.boost.org/LICENSE_1_0.txt
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/detail/winapi/access_rights.hpp [4:5]
- boost/detail/winapi/apc.hpp [4:5]
- boost/detail/winapi/basic_types.hpp [4:5]
- boost/detail/winapi/bcrypt.hpp [4:5]
- boost/detail/winapi/character_code_conversion.hpp [4:5]
- boost/detail/winapi/condition_variable.hpp [4:5]
- boost/detail/winapi/config.hpp [4:5]
- boost/detail/winapi/critical_section.hpp [4:5]
- boost/detail/winapi/crypt.hpp [4:5]
- boost/detail/winapi/dbghelp.hpp [4:5]
- boost/detail/winapi/debugapi.hpp [4:5]
- boost/detail/winapi/detail/deprecated_namespace.hpp [4:5]
- boost/detail/winapi/directory_management.hpp [4:5]
- boost/detail/winapi/dll.hpp [4:5]
- boost/detail/winapi/environment.hpp [4:5]
- boost/detail/winapi/error_codes.hpp [4:5]
- boost/detail/winapi/error_handling.hpp [4:5]
- boost/detail/winapi/event.hpp [4:5]
- boost/detail/winapi/file_management.hpp [4:5]
- boost/detail/winapi/file_mapping.hpp [4:5]
- boost/detail/winapi/get_current_process.hpp [4:5]
- boost/detail/winapi/get_current_process_id.hpp [4:5]
- boost/detail/winapi/get_current_thread.hpp [4:5]
- boost/detail/winapi/get_current_thread_id.hpp [4:5]
- boost/detail/winapi/get_last_error.hpp [4:5]
- boost/detail/winapi/get_process_times.hpp [4:5]
- boost/detail/winapi/get_system_directory.hpp [4:5]
- boost/detail/winapi/get_thread_times.hpp [4:5]
- boost/detail/winapi/handle_info.hpp [4:5]
- boost/detail/winapi/handles.hpp [4:5]
- boost/detail/winapi/heap_memory.hpp [4:5]
- boost/detail/winapi/init_once.hpp [4:5]
- boost/detail/winapi/jobs.hpp [4:5]
- boost/detail/winapi/limits.hpp [4:5]
- boost/detail/winapi/local_memory.hpp [4:5]
- boost/detail/winapi/memory.hpp [4:5]
- boost/detail/winapi/mutex.hpp [4:5]
- boost/detail/winapi/overlapped.hpp [4:5]
- boost/detail/winapi/page_protection_flags.hpp [4:5]
- boost/detail/winapi/pipes.hpp [4:5]
- boost/detail/winapi/priority_class.hpp [4:5]
- boost/detail/winapi/process.hpp [4:5]
- boost/detail/winapi/security.hpp [4:5]
- boost/detail/winapi/semaphore.hpp [4:5]
- boost/detail/winapi/shell.hpp [4:5]
- boost/detail/winapi/show_window.hpp [4:5]
- boost/detail/winapi/srw_lock.hpp [4:5]
- boost/detail/winapi/stack_backtrace.hpp [4:5]
- boost/detail/winapi/synchronization.hpp [4:5]
- boost/detail/winapi/system.hpp [4:5]
- boost/detail/winapi/thread.hpp [4:5]
- boost/detail/winapi/thread_pool.hpp [4:5]
- boost/detail/winapi/time.hpp [4:5]
- boost/detail/winapi/timers.hpp [4:5]
- boost/detail/winapi/tls.hpp [4:5]
- boost/detail/winapi/wait.hpp [4:5]
- boost/detail/winapi/waitable_timer.hpp [4:5]
- boost/winapi/access_rights.hpp [4:5]
- boost/winapi/apc.hpp [5:6]
- boost/winapi/basic_types.hpp [5:6]
- boost/winapi/bcrypt.hpp [4:5]
- boost/winapi/character_code_conversion.hpp [4:5]
- boost/winapi/condition_variable.hpp [5:6]
- boost/winapi/config.hpp [5:6]
- boost/winapi/critical_section.hpp [5:6]
- boost/winapi/crypt.hpp [5:6]
- boost/winapi/dbghelp.hpp [6:7]
- boost/winapi/debugapi.hpp [4:5]
- boost/winapi/detail/cast_ptr.hpp [4:5]
- boost/winapi/directory_management.hpp [5:6]
- boost/winapi/dll.hpp [7:8]
- boost/winapi/environment.hpp [4:5]
- boost/winapi/error_codes.hpp [4:5]
- boost/winapi/error_handling.hpp [6:7]
- boost/winapi/event.hpp [5:6]
- boost/winapi/file_management.hpp [7:8]
- boost/winapi/file_mapping.hpp [7:8]
- boost/winapi/get_current_process.hpp [5:6]
- boost/winapi/get_current_process_id.hpp [4:5]
- boost/winapi/get_current_thread.hpp [5:6]
- boost/winapi/get_current_thread_id.hpp [5:6]
- boost/winapi/get_last_error.hpp [5:6]
- boost/winapi/get_process_times.hpp [4:5]
- boost/winapi/get_system_directory.hpp [4:5]
- boost/winapi/get_thread_times.hpp [5:6]
- boost/winapi/handle_info.hpp [4:5]
- boost/winapi/handles.hpp [5:6]
- boost/winapi/heap_memory.hpp [5:6]
- boost/winapi/init_once.hpp [5:6]
- boost/winapi/jobs.hpp [4:5]
- boost/winapi/limits.hpp [4:5]
- boost/winapi/local_memory.hpp [5:6]
- boost/winapi/memory.hpp [5:6]
- boost/winapi/mutex.hpp [5:6]
- boost/winapi/overlapped.hpp [4:5]
- boost/winapi/page_protection_flags.hpp [4:5]
- boost/winapi/pipes.hpp [5:6]
- boost/winapi/priority_class.hpp [5:6]
- boost/winapi/process.hpp [5:6]
- boost/winapi/security.hpp [5:6]
- boost/winapi/semaphore.hpp [5:6]
- boost/winapi/shell.hpp [4:5]
- boost/winapi/show_window.hpp [4:5]
- boost/winapi/srw_lock.hpp [5:6]
- boost/winapi/stack_backtrace.hpp [4:5]
- boost/winapi/synchronization.hpp [5:6]
- boost/winapi/system.hpp [6:7]
- boost/winapi/thread.hpp [5:6]
- boost/winapi/thread_pool.hpp [4:5]
- boost/winapi/time.hpp [6:7]
- boost/winapi/timers.hpp [5:6]
- boost/winapi/tls.hpp [4:5]
- boost/winapi/wait.hpp [6:7]
- boost/winapi/waitable_timer.hpp [4:5]
-
-KEEP BSL-1.0 52079c0b53c8857e80de09aa3fcd4632
-BELONGS libs/chrono/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/chrono.hpp at line 6, libs/chrono/stopwatches/include/boost/chrono/stopwatches.hpp at line 6
- License text:
- // Distributed under the Boost
- // Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or
- // copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/chrono.hpp [4:7]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches.hpp [4:7]
-
-KEEP BSL-1.0 524e838f61fea095d692df7fee05bf3f
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: LicenseRef-scancode-boost-original
- Score : 100.00
- Match type : TEXT
- Links : http://boost.org, https://github.com/boostorg/rational/blob/0fe0beca5397c812c4f85a7de0d0769de59e12e0/include/boost/rational.hpp, https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/boost-original.LICENSE
- Files with this license:
- boost/shared_container_iterator.hpp [1:4]
-
-KEEP BSL-1.0 526847f759a8183ebfa4b8cff5c6effb
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/date_time/local_time/dst_transition_day_rules.hpp at line 6, boost/date_time/local_time/local_time.hpp at line 6, boost/date_time/local_time/local_time_types.hpp at line 6, boost/date_time/local_time/tz_database.hpp at line 6, boost/date_time/tz_db_base.hpp at line 6
- License text:
- * Subject to the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 78.12
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/date_time/local_time/dst_transition_day_rules.hpp [5:6]
- boost/date_time/local_time/local_time.hpp [5:6]
- boost/date_time/local_time/local_time_types.hpp [5:6]
- boost/date_time/local_time/tz_database.hpp [5:6]
- boost/date_time/tz_db_base.hpp [5:6]
-
-KEEP BSL-1.0 52bb7ffef4964d9161d4ca3967722670
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/abi_prefix.hpp at line 6, boost/config/abi_suffix.hpp at line 6, boost/polygon/detail/polygon_simplify.hpp at line 4, boost/range/detail/has_member_size.hpp at line 6
- License text:
- // Use, modification and distribution are subject to the Boost Software License,
- // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt).
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/config/abi_prefix.hpp [5:7]
- boost/config/abi_suffix.hpp [5:7]
- boost/polygon/detail/polygon_simplify.hpp [3:5]
- boost/range/detail/has_member_size.hpp [5:7]
-
-KEEP BSL-1.0 53ad0b71e5a62dd6936dcbc49d561492
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/is_xxx.hpp at line 3, boost/parameter/aux_/result_of0.hpp at line 3, boost/parameter/aux_/tag.hpp at line 3, boost/parameter/binding.hpp at line 3, boost/parameter/match.hpp at line 3
- License text:
- // Copyright David Abrahams 2005. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/detail/is_xxx.hpp [1:3]
- boost/parameter/aux_/result_of0.hpp [1:3]
- boost/parameter/aux_/tag.hpp [1:3]
- boost/parameter/binding.hpp [1:3]
- boost/parameter/match.hpp [1:3]
-
-KEEP BSL-1.0 540637cc651c55d1ebf9438ca4ad8fbe
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/adaptor/formatted.hpp at line 5, boost/range/adaptors.hpp at line 6, boost/range/algorithm/equal.hpp at line 5, boost/range/detail/extract_optional_type.hpp at line 5, boost/range/iterator_range.hpp at line 5, boost/range/iterator_range_core.hpp at line 5, boost/range/iterator_range_hash.hpp at line 5, boost/range/iterator_range_io.hpp at line 5, boost/range/range_fwd.hpp at line 5
- License text:
- // Use, modification and distribution is subject to the Boost Software
- // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/range/adaptor/formatted.hpp [4:6]
- boost/range/adaptors.hpp [5:7]
- boost/range/algorithm/equal.hpp [4:6]
- boost/range/detail/extract_optional_type.hpp [4:6]
- boost/range/iterator_range.hpp [4:6]
- boost/range/iterator_range_core.hpp [4:6]
- boost/range/iterator_range_hash.hpp [4:6]
- boost/range/iterator_range_io.hpp [4:6]
- boost/range/range_fwd.hpp [4:6]
-
-KEEP BSL-1.0 5441d5621bc00e9e901c5b220a3040c4
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/array/data.hpp at line 5, boost/preprocessor/array/elem.hpp at line 5, boost/preprocessor/array/insert.hpp at line 5, boost/preprocessor/array/pop_back.hpp at line 5, boost/preprocessor/array/pop_front.hpp at line 5, boost/preprocessor/array/push_back.hpp at line 6, boost/preprocessor/array/push_front.hpp at line 6, boost/preprocessor/array/remove.hpp at line 5, boost/preprocessor/array/replace.hpp at line 5, boost/preprocessor/array/reverse.hpp at line 5, boost/preprocessor/array/size.hpp at line 5, boost/preprocessor/assert_msg.hpp at line 5, boost/preprocessor/comma.hpp at line 5, boost/preprocessor/comma_if.hpp at line 5, boost/preprocessor/control.hpp at line 5, boost/preprocessor/control/deduce_d.hpp at line 5, boost/preprocessor/control/expr_iif.hpp at line 5, boost/preprocessor/control/iif.hpp at line 5, boost/preprocessor/debug.hpp at line 5, boost/preprocessor/debug/error.hpp at line 5, boost/preprocessor/debug/line.hpp at line 5, boost/preprocessor/dec.hpp at line 5, boost/preprocessor/detail/auto_rec.hpp at line 5, boost/preprocessor/detail/check.hpp at line 5, boost/preprocessor/detail/dmc/auto_rec.hpp at line 5, boost/preprocessor/detail/is_binary.hpp at line 5, boost/preprocessor/detail/is_nullary.hpp at line 5, boost/preprocessor/detail/is_unary.hpp at line 5, boost/preprocessor/detail/null.hpp at line 5, boost/preprocessor/detail/split.hpp at line 5, boost/preprocessor/empty.hpp at line 5, boost/preprocessor/enum.hpp at line 5, boost/preprocessor/enum_params.hpp at line 5, boost/preprocessor/enum_params_with_a_default.hpp at line 5, boost/preprocessor/enum_params_with_defaults.hpp at line 5, boost/preprocessor/enum_shifted.hpp at line 5, boost/preprocessor/enum_shifted_params.hpp at line 5, boost/preprocessor/expand.hpp at line 5, boost/preprocessor/expr_if.hpp at line 5, boost/preprocessor/facilities/apply.hpp at line 5, boost/preprocessor/facilities/detail/is_empty.hpp at line 5, boost/preprocessor/facilities/intercept.hpp at line 5, boost/preprocessor/facilities/is_1.hpp at line 5, boost/preprocessor/facilities/is_empty.hpp at line 6, boost/preprocessor/facilities/is_empty_or_1.hpp at line 5, boost/preprocessor/facilities/is_empty_variadic.hpp at line 5, boost/preprocessor/for.hpp at line 5, boost/preprocessor/identity.hpp at line 5, boost/preprocessor/if.hpp at line 5, boost/preprocessor/inc.hpp at line 5, boost/preprocessor/iterate.hpp at line 5, boost/preprocessor/iteration.hpp at line 5, boost/preprocessor/iteration/detail/bounds/lower1.hpp at line 5, boost/preprocessor/iteration/detail/bounds/lower2.hpp at line 5, boost/preprocessor/iteration/detail/bounds/lower3.hpp at line 5, boost/preprocessor/iteration/detail/bounds/lower4.hpp at line 5, boost/preprocessor/iteration/detail/bounds/lower5.hpp at line 5, boost/preprocessor/iteration/detail/bounds/upper1.hpp at line 5, boost/preprocessor/iteration/detail/bounds/upper2.hpp at line 5, boost/preprocessor/iteration/detail/bounds/upper3.hpp at line 5, boost/preprocessor/iteration/detail/bounds/upper4.hpp at line 5, boost/preprocessor/iteration/detail/bounds/upper5.hpp at line 5, boost/preprocessor/iteration/detail/finish.hpp at line 5, boost/preprocessor/iteration/detail/iter/forward1.hpp at line 5, boost/preprocessor/iteration/detail/iter/forward2.hpp at line 5, boost/preprocessor/iteration/detail/iter/forward3.hpp at line 5, boost/preprocessor/iteration/detail/iter/forward4.hpp at line 5, boost/preprocessor/iteration/detail/iter/forward5.hpp at line 5, boost/preprocessor/iteration/detail/iter/reverse1.hpp at line 5, boost/preprocessor/iteration/detail/iter/reverse2.hpp at line 5, boost/preprocessor/iteration/detail/iter/reverse3.hpp at line 5, boost/preprocessor/iteration/detail/iter/reverse4.hpp at line 5, boost/preprocessor/iteration/detail/iter/reverse5.hpp at line 5, boost/preprocessor/iteration/detail/local.hpp at line 5, boost/preprocessor/iteration/detail/rlocal.hpp at line 5, boost/preprocessor/iteration/detail/self.hpp at line 5, boost/preprocessor/iteration/detail/start.hpp at line 5, boost/preprocessor/iteration/iterate.hpp at line 5, boost/preprocessor/iteration/local.hpp at line 5, boost/preprocessor/iteration/self.hpp at line 5, boost/preprocessor/limits.hpp at line 5, boost/preprocessor/list/to_seq.hpp at line 5, boost/preprocessor/logical/bitand.hpp at line 5, boost/preprocessor/logical/bitnor.hpp at line 5, boost/preprocessor/logical/bitor.hpp at line 5, boost/preprocessor/logical/bitxor.hpp at line 5, boost/preprocessor/logical/compl.hpp at line 5, boost/preprocessor/max.hpp at line 5, boost/preprocessor/min.hpp at line 5, boost/preprocessor/punctuation.hpp at line 5, boost/preprocessor/punctuation/detail/is_begin_parens.hpp at line 5, boost/preprocessor/punctuation/is_begin_parens.hpp at line 5, boost/preprocessor/punctuation/paren.hpp at line 5, boost/preprocessor/punctuation/paren_if.hpp at line 5, boost/preprocessor/punctuation/remove_parens.hpp at line 5, boost/preprocessor/repeat.hpp at line 5, boost/preprocessor/repeat_2nd.hpp at line 5, boost/preprocessor/repeat_3rd.hpp at line 5, boost/preprocessor/repeat_from_to.hpp at line 5, boost/preprocessor/repeat_from_to_2nd.hpp at line 5, boost/preprocessor/repeat_from_to_3rd.hpp at line 5, boost/preprocessor/repetition.hpp at line 5, boost/preprocessor/repetition/deduce_r.hpp at line 5, boost/preprocessor/repetition/deduce_z.hpp at line 5, boost/preprocessor/repetition/enum_binary_params.hpp at line 5, boost/preprocessor/repetition/enum_trailing.hpp at line 5, boost/preprocessor/repetition/enum_trailing_binary_params.hpp at line 5, boost/preprocessor/repetition/enum_trailing_params.hpp at line 5, boost/preprocessor/selection.hpp at line 5, boost/preprocessor/seq/cat.hpp at line 5, boost/preprocessor/seq/detail/is_empty.hpp at line 5, boost/preprocessor/seq/detail/split.hpp at line 5, boost/preprocessor/seq/elem.hpp at line 5, boost/preprocessor/seq/enum.hpp at line 5, boost/preprocessor/seq/filter.hpp at line 5, boost/preprocessor/seq/first_n.hpp at line 5, boost/preprocessor/seq/fold_left.hpp at line 5, boost/preprocessor/seq/fold_right.hpp at line 5, boost/preprocessor/seq/for_each.hpp at line 5, boost/preprocessor/seq/for_each_i.hpp at line 5, boost/preprocessor/seq/for_each_product.hpp at line 5, boost/preprocessor/seq/insert.hpp at line 5, boost/preprocessor/seq/pop_back.hpp at line 5, boost/preprocessor/seq/pop_front.hpp at line 5, boost/preprocessor/seq/push_back.hpp at line 5, boost/preprocessor/seq/push_front.hpp at line 5, boost/preprocessor/seq/remove.hpp at line 5, boost/preprocessor/seq/replace.hpp at line 5, boost/preprocessor/seq/rest_n.hpp at line 5, boost/preprocessor/seq/reverse.hpp at line 5, boost/preprocessor/seq/seq.hpp at line 5, boost/preprocessor/seq/size.hpp at line 5, boost/preprocessor/seq/subseq.hpp at line 5, boost/preprocessor/seq/to_array.hpp at line 5, boost/preprocessor/seq/to_tuple.hpp at line 5, boost/preprocessor/seq/transform.hpp at line 5, boost/preprocessor/slot.hpp at line 5, boost/preprocessor/slot/detail/def.hpp at line 5, boost/preprocessor/slot/detail/shared.hpp at line 5, boost/preprocessor/slot/detail/slot1.hpp at line 5, boost/preprocessor/slot/detail/slot2.hpp at line 5, boost/preprocessor/slot/detail/slot3.hpp at line 5, boost/preprocessor/slot/detail/slot4.hpp at line 5, boost/preprocessor/slot/detail/slot5.hpp at line 5, boost/preprocessor/slot/slot.hpp at line 5, boost/preprocessor/tuple/insert.hpp at line 5, boost/preprocessor/tuple/pop_back.hpp at line 5, boost/preprocessor/tuple/pop_front.hpp at line 5, boost/preprocessor/tuple/push_back.hpp at line 5, boost/preprocessor/tuple/push_front.hpp at line 5, boost/preprocessor/tuple/remove.hpp at line 5, boost/preprocessor/tuple/replace.hpp at line 5, boost/preprocessor/while.hpp at line 5, boost/preprocessor/wstringize.hpp at line 5
- License text:
- \# * Distributed under the Boost Software License, Version 1.0. (See
- \# * accompanying file LICENSE_1_0.txt or copy at
- \# * http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/preprocessor/array/data.hpp [4:6]
- boost/preprocessor/array/elem.hpp [4:6]
- boost/preprocessor/array/insert.hpp [4:6]
- boost/preprocessor/array/pop_back.hpp [4:6]
- boost/preprocessor/array/pop_front.hpp [4:6]
- boost/preprocessor/array/push_back.hpp [5:7]
- boost/preprocessor/array/push_front.hpp [5:7]
- boost/preprocessor/array/remove.hpp [4:6]
- boost/preprocessor/array/replace.hpp [4:6]
- boost/preprocessor/array/reverse.hpp [4:6]
- boost/preprocessor/array/size.hpp [4:6]
- boost/preprocessor/assert_msg.hpp [4:6]
- boost/preprocessor/comma.hpp [4:6]
- boost/preprocessor/comma_if.hpp [4:6]
- boost/preprocessor/control.hpp [4:6]
- boost/preprocessor/control/deduce_d.hpp [4:6]
- boost/preprocessor/control/expr_iif.hpp [4:6]
- boost/preprocessor/control/iif.hpp [4:6]
- boost/preprocessor/debug.hpp [4:6]
- boost/preprocessor/debug/error.hpp [4:6]
- boost/preprocessor/debug/line.hpp [4:6]
- boost/preprocessor/dec.hpp [4:6]
- boost/preprocessor/detail/auto_rec.hpp [4:6]
- boost/preprocessor/detail/check.hpp [4:6]
- boost/preprocessor/detail/dmc/auto_rec.hpp [4:6]
- boost/preprocessor/detail/is_binary.hpp [4:6]
- boost/preprocessor/detail/is_nullary.hpp [4:6]
- boost/preprocessor/detail/is_unary.hpp [4:6]
- boost/preprocessor/detail/null.hpp [4:6]
- boost/preprocessor/detail/split.hpp [4:6]
- boost/preprocessor/empty.hpp [4:6]
- boost/preprocessor/enum.hpp [4:6]
- boost/preprocessor/enum_params.hpp [4:6]
- boost/preprocessor/enum_params_with_a_default.hpp [4:6]
- boost/preprocessor/enum_params_with_defaults.hpp [4:6]
- boost/preprocessor/enum_shifted.hpp [4:6]
- boost/preprocessor/enum_shifted_params.hpp [4:6]
- boost/preprocessor/expand.hpp [4:6]
- boost/preprocessor/expr_if.hpp [4:6]
- boost/preprocessor/facilities/apply.hpp [4:6]
- boost/preprocessor/facilities/detail/is_empty.hpp [4:6]
- boost/preprocessor/facilities/intercept.hpp [4:6]
- boost/preprocessor/facilities/is_1.hpp [4:6]
- boost/preprocessor/facilities/is_empty.hpp [5:7]
- boost/preprocessor/facilities/is_empty_or_1.hpp [4:6]
- boost/preprocessor/facilities/is_empty_variadic.hpp [4:6]
- boost/preprocessor/for.hpp [4:6]
- boost/preprocessor/identity.hpp [4:6]
- boost/preprocessor/if.hpp [4:6]
- boost/preprocessor/inc.hpp [4:6]
- boost/preprocessor/iterate.hpp [4:6]
- boost/preprocessor/iteration.hpp [4:6]
- boost/preprocessor/iteration/detail/bounds/lower1.hpp [4:6]
- boost/preprocessor/iteration/detail/bounds/lower2.hpp [4:6]
- boost/preprocessor/iteration/detail/bounds/lower3.hpp [4:6]
- boost/preprocessor/iteration/detail/bounds/lower4.hpp [4:6]
- boost/preprocessor/iteration/detail/bounds/lower5.hpp [4:6]
- boost/preprocessor/iteration/detail/bounds/upper1.hpp [4:6]
- boost/preprocessor/iteration/detail/bounds/upper2.hpp [4:6]
- boost/preprocessor/iteration/detail/bounds/upper3.hpp [4:6]
- boost/preprocessor/iteration/detail/bounds/upper4.hpp [4:6]
- boost/preprocessor/iteration/detail/bounds/upper5.hpp [4:6]
- boost/preprocessor/iteration/detail/finish.hpp [4:6]
- boost/preprocessor/iteration/detail/iter/forward1.hpp [4:6]
- boost/preprocessor/iteration/detail/iter/forward2.hpp [4:6]
- boost/preprocessor/iteration/detail/iter/forward3.hpp [4:6]
- boost/preprocessor/iteration/detail/iter/forward4.hpp [4:6]
- boost/preprocessor/iteration/detail/iter/forward5.hpp [4:6]
- boost/preprocessor/iteration/detail/iter/reverse1.hpp [4:6]
- boost/preprocessor/iteration/detail/iter/reverse2.hpp [4:6]
- boost/preprocessor/iteration/detail/iter/reverse3.hpp [4:6]
- boost/preprocessor/iteration/detail/iter/reverse4.hpp [4:6]
- boost/preprocessor/iteration/detail/iter/reverse5.hpp [4:6]
- boost/preprocessor/iteration/detail/local.hpp [4:6]
- boost/preprocessor/iteration/detail/rlocal.hpp [4:6]
- boost/preprocessor/iteration/detail/self.hpp [4:6]
- boost/preprocessor/iteration/detail/start.hpp [4:6]
- boost/preprocessor/iteration/iterate.hpp [4:6]
- boost/preprocessor/iteration/local.hpp [4:6]
- boost/preprocessor/iteration/self.hpp [4:6]
- boost/preprocessor/limits.hpp [4:6]
- boost/preprocessor/list/to_seq.hpp [4:6]
- boost/preprocessor/logical/bitand.hpp [4:6]
- boost/preprocessor/logical/bitnor.hpp [4:6]
- boost/preprocessor/logical/bitor.hpp [4:6]
- boost/preprocessor/logical/bitxor.hpp [4:6]
- boost/preprocessor/logical/compl.hpp [4:6]
- boost/preprocessor/max.hpp [4:6]
- boost/preprocessor/min.hpp [4:6]
- boost/preprocessor/punctuation.hpp [4:6]
- boost/preprocessor/punctuation/detail/is_begin_parens.hpp [4:6]
- boost/preprocessor/punctuation/is_begin_parens.hpp [4:6]
- boost/preprocessor/punctuation/paren.hpp [4:6]
- boost/preprocessor/punctuation/paren_if.hpp [4:6]
- boost/preprocessor/punctuation/remove_parens.hpp [4:6]
- boost/preprocessor/repeat.hpp [4:6]
- boost/preprocessor/repeat_2nd.hpp [4:6]
- boost/preprocessor/repeat_3rd.hpp [4:6]
- boost/preprocessor/repeat_from_to.hpp [4:6]
- boost/preprocessor/repeat_from_to_2nd.hpp [4:6]
- boost/preprocessor/repeat_from_to_3rd.hpp [4:6]
- boost/preprocessor/repetition.hpp [4:6]
- boost/preprocessor/repetition/deduce_r.hpp [4:6]
- boost/preprocessor/repetition/deduce_z.hpp [4:6]
- boost/preprocessor/repetition/enum_binary_params.hpp [4:6]
- boost/preprocessor/repetition/enum_trailing.hpp [4:6]
- boost/preprocessor/repetition/enum_trailing_binary_params.hpp [4:6]
- boost/preprocessor/repetition/enum_trailing_params.hpp [4:6]
- boost/preprocessor/selection.hpp [4:6]
- boost/preprocessor/seq/cat.hpp [4:6]
- boost/preprocessor/seq/detail/is_empty.hpp [4:6]
- boost/preprocessor/seq/detail/split.hpp [4:6]
- boost/preprocessor/seq/elem.hpp [4:6]
- boost/preprocessor/seq/enum.hpp [4:6]
- boost/preprocessor/seq/filter.hpp [4:6]
- boost/preprocessor/seq/first_n.hpp [4:6]
- boost/preprocessor/seq/fold_left.hpp [4:6]
- boost/preprocessor/seq/fold_right.hpp [4:6]
- boost/preprocessor/seq/for_each.hpp [4:6]
- boost/preprocessor/seq/for_each_i.hpp [4:6]
- boost/preprocessor/seq/for_each_product.hpp [4:6]
- boost/preprocessor/seq/insert.hpp [4:6]
- boost/preprocessor/seq/pop_back.hpp [4:6]
- boost/preprocessor/seq/pop_front.hpp [4:6]
- boost/preprocessor/seq/push_back.hpp [4:6]
- boost/preprocessor/seq/push_front.hpp [4:6]
- boost/preprocessor/seq/remove.hpp [4:6]
- boost/preprocessor/seq/replace.hpp [4:6]
- boost/preprocessor/seq/rest_n.hpp [4:6]
- boost/preprocessor/seq/reverse.hpp [4:6]
- boost/preprocessor/seq/seq.hpp [4:6]
- boost/preprocessor/seq/size.hpp [4:6]
- boost/preprocessor/seq/subseq.hpp [4:6]
- boost/preprocessor/seq/to_array.hpp [4:6]
- boost/preprocessor/seq/to_tuple.hpp [4:6]
- boost/preprocessor/seq/transform.hpp [4:6]
- boost/preprocessor/slot.hpp [4:6]
- boost/preprocessor/slot/detail/def.hpp [4:6]
- boost/preprocessor/slot/detail/shared.hpp [4:6]
- boost/preprocessor/slot/detail/slot1.hpp [4:6]
- boost/preprocessor/slot/detail/slot2.hpp [4:6]
- boost/preprocessor/slot/detail/slot3.hpp [4:6]
- boost/preprocessor/slot/detail/slot4.hpp [4:6]
- boost/preprocessor/slot/detail/slot5.hpp [4:6]
- boost/preprocessor/slot/slot.hpp [4:6]
- boost/preprocessor/tuple/insert.hpp [4:6]
- boost/preprocessor/tuple/pop_back.hpp [4:6]
- boost/preprocessor/tuple/pop_front.hpp [4:6]
- boost/preprocessor/tuple/push_back.hpp [4:6]
- boost/preprocessor/tuple/push_front.hpp [4:6]
- boost/preprocessor/tuple/remove.hpp [4:6]
- boost/preprocessor/tuple/replace.hpp [4:6]
- boost/preprocessor/while.hpp [4:6]
- boost/preprocessor/wstringize.hpp [4:6]
-
-KEEP BSL-1.0 559be58c893ad9d438fca25af1254413
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/is_abstract.hpp at line 13
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 94.74
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/type_traits/is_abstract.hpp [12:16]
-
-KEEP BSL-1.0 559c1c9a22131873e7b18f9995722903
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: LicenseRef-scancode-boost-original
- Score : 100.00
- Match type : TEXT
- Links : http://boost.org, https://github.com/boostorg/rational/blob/0fe0beca5397c812c4f85a7de0d0769de59e12e0/include/boost/rational.hpp, https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/boost-original.LICENSE
- Files with this license:
- boost/rational.hpp [3:6]
-
-KEEP Mit-Old-Style 55e81d3c6ec19a0377f36e6e6d487cd9
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: LicenseRef-scancode-mit-old-style
- Score : 100.00
- Match type : TEXT
- Links : http://fedoraproject.org/wiki/Licensing:MIT#Old_Style, https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/mit-old-style.LICENSE
- Files with this license:
- boost/interprocess/sync/interprocess_recursive_mutex.hpp [18:22]
- boost/interprocess/sync/posix/mutex.hpp [18:22]
- boost/interprocess/sync/posix/recursive_mutex.hpp [18:22]
- boost/interprocess/sync/spin/recursive_mutex.hpp [18:22]
-
-KEEP BSL-1.0 563e4f804388196518aa056f2cf30221
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/proto/detail/as_expr.hpp at line 9, boost/proto/functional.hpp at line 7, boost/proto/functional/fusion.hpp at line 7, boost/proto/functional/fusion/at.hpp at line 7, boost/proto/functional/fusion/pop_back.hpp at line 7, boost/proto/functional/fusion/pop_front.hpp at line 7, boost/proto/functional/fusion/push_back.hpp at line 7, boost/proto/functional/fusion/push_front.hpp at line 7, boost/proto/functional/fusion/reverse.hpp at line 7, boost/proto/functional/std.hpp at line 7, boost/proto/functional/std/utility.hpp at line 7
- License text:
- // Copyright 2010 Eric Niebler. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/proto/detail/as_expr.hpp [7:9]
- boost/proto/functional.hpp [5:7]
- boost/proto/functional/fusion.hpp [5:7]
- boost/proto/functional/fusion/at.hpp [5:7]
- boost/proto/functional/fusion/pop_back.hpp [5:7]
- boost/proto/functional/fusion/pop_front.hpp [5:7]
- boost/proto/functional/fusion/push_back.hpp [5:7]
- boost/proto/functional/fusion/push_front.hpp [5:7]
- boost/proto/functional/fusion/reverse.hpp [5:7]
- boost/proto/functional/std.hpp [5:7]
- boost/proto/functional/std/utility.hpp [5:7]
-
-KEEP BSL-1.0 563f38bd7e093c7e1caf078634008d40
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/numeric/odeint.hpp at line 13, boost/numeric/odeint/algebra/algebra_dispatcher.hpp at line 13, boost/numeric/odeint/algebra/array_algebra.hpp at line 17, boost/numeric/odeint/algebra/detail/extract_value_type.hpp at line 13, boost/numeric/odeint/algebra/detail/macros.hpp at line 13, boost/numeric/odeint/algebra/detail/norm_inf.hpp at line 13, boost/numeric/odeint/algebra/fusion_algebra.hpp at line 13, boost/numeric/odeint/algebra/norm_result_type.hpp at line 13, boost/numeric/odeint/algebra/operations_dispatcher.hpp at line 13, boost/numeric/odeint/algebra/vector_space_algebra.hpp at line 13, boost/numeric/odeint/config.hpp at line 13, boost/numeric/odeint/external/compute/compute_algebra.hpp at line 13, boost/numeric/odeint/external/compute/compute_operations.hpp at line 13, boost/numeric/odeint/external/compute/compute_resize.hpp at line 13, boost/numeric/odeint/external/gsl/gsl_wrapper.hpp at line 13, boost/numeric/odeint/external/mkl/mkl_operations.hpp at line 15, boost/numeric/odeint/external/mpi/mpi.hpp at line 14, boost/numeric/odeint/external/mpi/mpi_nested_algebra.hpp at line 14, boost/numeric/odeint/external/mpi/mpi_state.hpp at line 14, boost/numeric/odeint/external/mpi/mpi_vector_state.hpp at line 14, boost/numeric/odeint/external/mtl4/mtl4.hpp at line 13, boost/numeric/odeint/external/mtl4/mtl4_algebra_dispatcher.hpp at line 13, boost/numeric/odeint/external/openmp/openmp.hpp at line 14, boost/numeric/odeint/external/openmp/openmp_state.hpp at line 14, boost/numeric/odeint/external/thrust/thrust_algebra.hpp at line 14, boost/numeric/odeint/external/thrust/thrust_operations.hpp at line 13, boost/numeric/odeint/external/thrust/thrust_resize.hpp at line 13, boost/numeric/odeint/external/vexcl/vexcl_copy.hpp at line 13, boost/numeric/odeint/external/vexcl/vexcl_resize.hpp at line 14, boost/numeric/odeint/external/vexcl/vexcl_same_instance.hpp at line 13, boost/numeric/odeint/external/viennacl/viennacl_operations.hpp at line 14, boost/numeric/odeint/external/viennacl/viennacl_resize.hpp at line 14, boost/numeric/odeint/integrate/check_adapter.hpp at line 12, boost/numeric/odeint/integrate/detail/functors.hpp at line 13, boost/numeric/odeint/integrate/detail/integrate_adaptive.hpp at line 14, boost/numeric/odeint/integrate/detail/integrate_const.hpp at line 14, boost/numeric/odeint/integrate/detail/integrate_n_steps.hpp at line 14, boost/numeric/odeint/integrate/detail/integrate_times.hpp at line 14, boost/numeric/odeint/integrate/integrate.hpp at line 13, boost/numeric/odeint/integrate/integrate_adaptive.hpp at line 13, boost/numeric/odeint/integrate/integrate_const.hpp at line 14, boost/numeric/odeint/integrate/integrate_n_steps.hpp at line 13, boost/numeric/odeint/integrate/integrate_times.hpp at line 13, boost/numeric/odeint/integrate/max_step_checker.hpp at line 12, boost/numeric/odeint/integrate/null_observer.hpp at line 13, boost/numeric/odeint/integrate/observer_collection.hpp at line 13, boost/numeric/odeint/iterator/adaptive_iterator.hpp at line 14, boost/numeric/odeint/iterator/adaptive_time_iterator.hpp at line 14, boost/numeric/odeint/iterator/const_step_iterator.hpp at line 14, boost/numeric/odeint/iterator/const_step_time_iterator.hpp at line 14, boost/numeric/odeint/iterator/detail/ode_iterator_base.hpp at line 14, boost/numeric/odeint/iterator/integrate/detail/functors.hpp at line 13, boost/numeric/odeint/iterator/integrate/detail/integrate_adaptive.hpp at line 13, boost/numeric/odeint/iterator/integrate/detail/integrate_const.hpp at line 13, boost/numeric/odeint/iterator/integrate/detail/integrate_n_steps.hpp at line 13, boost/numeric/odeint/iterator/integrate/detail/integrate_times.hpp at line 13, boost/numeric/odeint/iterator/integrate/integrate.hpp at line 13, boost/numeric/odeint/iterator/integrate/integrate_adaptive.hpp at line 13, boost/numeric/odeint/iterator/integrate/integrate_const.hpp at line 14, boost/numeric/odeint/iterator/integrate/integrate_n_steps.hpp at line 13, boost/numeric/odeint/iterator/integrate/integrate_times.hpp at line 13, boost/numeric/odeint/iterator/integrate/null_observer.hpp at line 13, boost/numeric/odeint/iterator/integrate/observer_collection.hpp at line 13, boost/numeric/odeint/iterator/n_step_iterator.hpp at line 14, boost/numeric/odeint/iterator/n_step_time_iterator.hpp at line 15, boost/numeric/odeint/iterator/times_iterator.hpp at line 14, boost/numeric/odeint/iterator/times_time_iterator.hpp at line 15, boost/numeric/odeint/stepper/adams_bashforth.hpp at line 16, boost/numeric/odeint/stepper/adams_bashforth_moulton.hpp at line 14, boost/numeric/odeint/stepper/adams_moulton.hpp at line 15, boost/numeric/odeint/stepper/base/algebra_stepper_base.hpp at line 13, boost/numeric/odeint/stepper/base/explicit_error_stepper_base.hpp at line 14, boost/numeric/odeint/stepper/base/explicit_error_stepper_fsal_base.hpp at line 14, boost/numeric/odeint/stepper/base/explicit_stepper_base.hpp at line 14, boost/numeric/odeint/stepper/base/symplectic_rkn_stepper_base.hpp at line 14, boost/numeric/odeint/stepper/bulirsch_stoer_dense_out.hpp at line 14, boost/numeric/odeint/stepper/controlled_runge_kutta.hpp at line 13, boost/numeric/odeint/stepper/controlled_step_result.hpp at line 13, boost/numeric/odeint/stepper/dense_output_runge_kutta.hpp at line 15, boost/numeric/odeint/stepper/detail/adams_bashforth_call_algebra.hpp at line 13, boost/numeric/odeint/stepper/detail/adams_bashforth_coefficients.hpp at line 13, boost/numeric/odeint/stepper/detail/adams_moulton_call_algebra.hpp at line 13, boost/numeric/odeint/stepper/detail/adams_moulton_coefficients.hpp at line 13, boost/numeric/odeint/stepper/detail/generic_rk_algorithm.hpp at line 14, boost/numeric/odeint/stepper/detail/generic_rk_call_algebra.hpp at line 13, boost/numeric/odeint/stepper/detail/generic_rk_operations.hpp at line 13, boost/numeric/odeint/stepper/detail/rotating_buffer.hpp at line 13, boost/numeric/odeint/stepper/euler.hpp at line 14, boost/numeric/odeint/stepper/explicit_error_generic_rk.hpp at line 14, boost/numeric/odeint/stepper/explicit_generic_rk.hpp at line 14, boost/numeric/odeint/stepper/generation.hpp at line 13, boost/numeric/odeint/stepper/generation/generation_controlled_runge_kutta.hpp at line 13, boost/numeric/odeint/stepper/generation/generation_dense_output_runge_kutta.hpp at line 13, boost/numeric/odeint/stepper/generation/generation_rosenbrock4.hpp at line 13, boost/numeric/odeint/stepper/generation/generation_runge_kutta_cash_karp54.hpp at line 13, boost/numeric/odeint/stepper/generation/generation_runge_kutta_cash_karp54_classic.hpp at line 14, boost/numeric/odeint/stepper/generation/generation_runge_kutta_dopri5.hpp at line 13, boost/numeric/odeint/stepper/generation/generation_runge_kutta_fehlberg78.hpp at line 13, boost/numeric/odeint/stepper/generation/make_controlled.hpp at line 13, boost/numeric/odeint/stepper/generation/make_dense_output.hpp at line 13, boost/numeric/odeint/stepper/implicit_euler.hpp at line 14, boost/numeric/odeint/stepper/modified_midpoint.hpp at line 14, boost/numeric/odeint/stepper/rosenbrock4.hpp at line 15, boost/numeric/odeint/stepper/rosenbrock4_controller.hpp at line 14, boost/numeric/odeint/stepper/rosenbrock4_dense_output.hpp at line 14, boost/numeric/odeint/stepper/runge_kutta4.hpp at line 13, boost/numeric/odeint/stepper/runge_kutta4_classic.hpp at line 14, boost/numeric/odeint/stepper/runge_kutta_cash_karp54.hpp at line 13, boost/numeric/odeint/stepper/runge_kutta_cash_karp54_classic.hpp at line 14, boost/numeric/odeint/stepper/runge_kutta_dopri5.hpp at line 14, boost/numeric/odeint/stepper/runge_kutta_fehlberg78.hpp at line 13, boost/numeric/odeint/stepper/stepper_categories.hpp at line 13, boost/numeric/odeint/stepper/symplectic_euler.hpp at line 13, boost/numeric/odeint/stepper/symplectic_rkn_sb3a_mclachlan.hpp at line 13, boost/numeric/odeint/util/copy.hpp at line 13, boost/numeric/odeint/util/detail/is_range.hpp at line 15, boost/numeric/odeint/util/detail/less_with_sign.hpp at line 13, boost/numeric/odeint/util/is_pair.hpp at line 13, boost/numeric/odeint/util/is_resizeable.hpp at line 13, boost/numeric/odeint/util/n_ary_helper.hpp at line 12, boost/numeric/odeint/util/odeint_error.hpp at line 12, boost/numeric/odeint/util/resize.hpp at line 14, boost/numeric/odeint/util/resizer.hpp at line 13, boost/numeric/odeint/util/same_instance.hpp at line 13, boost/numeric/odeint/util/same_size.hpp at line 14, boost/numeric/odeint/util/split.hpp at line 14, boost/numeric/odeint/util/split_adaptor.hpp at line 14, boost/numeric/odeint/util/state_wrapper.hpp at line 14, boost/numeric/odeint/util/ublas_wrapper.hpp at line 13, boost/numeric/odeint/util/unwrap_reference.hpp at line 13, boost/numeric/odeint/version.hpp at line 13
- License text:
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or
- copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/numeric/odeint.hpp [12:14]
- boost/numeric/odeint/algebra/algebra_dispatcher.hpp [12:14]
- boost/numeric/odeint/algebra/array_algebra.hpp [16:18]
- boost/numeric/odeint/algebra/detail/extract_value_type.hpp [12:14]
- boost/numeric/odeint/algebra/detail/macros.hpp [12:14]
- boost/numeric/odeint/algebra/detail/norm_inf.hpp [12:14]
- boost/numeric/odeint/algebra/fusion_algebra.hpp [12:14]
- boost/numeric/odeint/algebra/norm_result_type.hpp [12:14]
- boost/numeric/odeint/algebra/operations_dispatcher.hpp [12:14]
- boost/numeric/odeint/algebra/vector_space_algebra.hpp [12:14]
- boost/numeric/odeint/config.hpp [12:14]
- boost/numeric/odeint/external/compute/compute_algebra.hpp [12:14]
- boost/numeric/odeint/external/compute/compute_operations.hpp [12:14]
- boost/numeric/odeint/external/compute/compute_resize.hpp [12:14]
- boost/numeric/odeint/external/gsl/gsl_wrapper.hpp [12:14]
- boost/numeric/odeint/external/mkl/mkl_operations.hpp [14:16]
- boost/numeric/odeint/external/mpi/mpi.hpp [13:15]
- boost/numeric/odeint/external/mpi/mpi_nested_algebra.hpp [13:15]
- boost/numeric/odeint/external/mpi/mpi_state.hpp [13:15]
- boost/numeric/odeint/external/mpi/mpi_vector_state.hpp [13:15]
- boost/numeric/odeint/external/mtl4/mtl4.hpp [12:14]
- boost/numeric/odeint/external/mtl4/mtl4_algebra_dispatcher.hpp [12:14]
- boost/numeric/odeint/external/openmp/openmp.hpp [13:15]
- boost/numeric/odeint/external/openmp/openmp_state.hpp [13:15]
- boost/numeric/odeint/external/thrust/thrust_algebra.hpp [13:15]
- boost/numeric/odeint/external/thrust/thrust_operations.hpp [12:14]
- boost/numeric/odeint/external/thrust/thrust_resize.hpp [12:14]
- boost/numeric/odeint/external/vexcl/vexcl_copy.hpp [12:14]
- boost/numeric/odeint/external/vexcl/vexcl_resize.hpp [13:15]
- boost/numeric/odeint/external/vexcl/vexcl_same_instance.hpp [12:14]
- boost/numeric/odeint/external/viennacl/viennacl_operations.hpp [13:15]
- boost/numeric/odeint/external/viennacl/viennacl_resize.hpp [13:15]
- boost/numeric/odeint/integrate/check_adapter.hpp [11:13]
- boost/numeric/odeint/integrate/detail/functors.hpp [12:14]
- boost/numeric/odeint/integrate/detail/integrate_adaptive.hpp [13:15]
- boost/numeric/odeint/integrate/detail/integrate_const.hpp [13:15]
- boost/numeric/odeint/integrate/detail/integrate_n_steps.hpp [13:15]
- boost/numeric/odeint/integrate/detail/integrate_times.hpp [13:15]
- boost/numeric/odeint/integrate/integrate.hpp [12:14]
- boost/numeric/odeint/integrate/integrate_adaptive.hpp [12:14]
- boost/numeric/odeint/integrate/integrate_const.hpp [13:15]
- boost/numeric/odeint/integrate/integrate_n_steps.hpp [12:14]
- boost/numeric/odeint/integrate/integrate_times.hpp [12:14]
- boost/numeric/odeint/integrate/max_step_checker.hpp [11:13]
- boost/numeric/odeint/integrate/null_observer.hpp [12:14]
- boost/numeric/odeint/integrate/observer_collection.hpp [12:14]
- boost/numeric/odeint/iterator/adaptive_iterator.hpp [13:15]
- boost/numeric/odeint/iterator/adaptive_time_iterator.hpp [13:15]
- boost/numeric/odeint/iterator/const_step_iterator.hpp [13:15]
- boost/numeric/odeint/iterator/const_step_time_iterator.hpp [13:15]
- boost/numeric/odeint/iterator/detail/ode_iterator_base.hpp [13:15]
- boost/numeric/odeint/iterator/integrate/detail/functors.hpp [12:14]
- boost/numeric/odeint/iterator/integrate/detail/integrate_adaptive.hpp [12:14]
- boost/numeric/odeint/iterator/integrate/detail/integrate_const.hpp [12:14]
- boost/numeric/odeint/iterator/integrate/detail/integrate_n_steps.hpp [12:14]
- boost/numeric/odeint/iterator/integrate/detail/integrate_times.hpp [12:14]
- boost/numeric/odeint/iterator/integrate/integrate.hpp [12:14]
- boost/numeric/odeint/iterator/integrate/integrate_adaptive.hpp [12:14]
- boost/numeric/odeint/iterator/integrate/integrate_const.hpp [13:15]
- boost/numeric/odeint/iterator/integrate/integrate_n_steps.hpp [12:14]
- boost/numeric/odeint/iterator/integrate/integrate_times.hpp [12:14]
- boost/numeric/odeint/iterator/integrate/null_observer.hpp [12:14]
- boost/numeric/odeint/iterator/integrate/observer_collection.hpp [12:14]
- boost/numeric/odeint/iterator/n_step_iterator.hpp [13:15]
- boost/numeric/odeint/iterator/n_step_time_iterator.hpp [14:16]
- boost/numeric/odeint/iterator/times_iterator.hpp [13:15]
- boost/numeric/odeint/iterator/times_time_iterator.hpp [14:16]
- boost/numeric/odeint/stepper/adams_bashforth.hpp [15:17]
- boost/numeric/odeint/stepper/adams_bashforth_moulton.hpp [13:15]
- boost/numeric/odeint/stepper/adams_moulton.hpp [14:16]
- boost/numeric/odeint/stepper/base/algebra_stepper_base.hpp [12:14]
- boost/numeric/odeint/stepper/base/explicit_error_stepper_base.hpp [13:15]
- boost/numeric/odeint/stepper/base/explicit_error_stepper_fsal_base.hpp [13:15]
- boost/numeric/odeint/stepper/base/explicit_stepper_base.hpp [13:15]
- boost/numeric/odeint/stepper/base/symplectic_rkn_stepper_base.hpp [13:15]
- boost/numeric/odeint/stepper/bulirsch_stoer_dense_out.hpp [13:15]
- boost/numeric/odeint/stepper/controlled_runge_kutta.hpp [12:14]
- boost/numeric/odeint/stepper/controlled_step_result.hpp [12:14]
- boost/numeric/odeint/stepper/dense_output_runge_kutta.hpp [14:16]
- boost/numeric/odeint/stepper/detail/adams_bashforth_call_algebra.hpp [12:14]
- boost/numeric/odeint/stepper/detail/adams_bashforth_coefficients.hpp [12:14]
- boost/numeric/odeint/stepper/detail/adams_moulton_call_algebra.hpp [12:14]
- boost/numeric/odeint/stepper/detail/adams_moulton_coefficients.hpp [12:14]
- boost/numeric/odeint/stepper/detail/generic_rk_algorithm.hpp [13:15]
- boost/numeric/odeint/stepper/detail/generic_rk_call_algebra.hpp [12:14]
- boost/numeric/odeint/stepper/detail/generic_rk_operations.hpp [12:14]
- boost/numeric/odeint/stepper/detail/rotating_buffer.hpp [12:14]
- boost/numeric/odeint/stepper/euler.hpp [13:15]
- boost/numeric/odeint/stepper/explicit_error_generic_rk.hpp [13:15]
- boost/numeric/odeint/stepper/explicit_generic_rk.hpp [13:15]
- boost/numeric/odeint/stepper/generation.hpp [12:14]
- boost/numeric/odeint/stepper/generation/generation_controlled_runge_kutta.hpp [12:14]
- boost/numeric/odeint/stepper/generation/generation_dense_output_runge_kutta.hpp [12:14]
- boost/numeric/odeint/stepper/generation/generation_rosenbrock4.hpp [12:14]
- boost/numeric/odeint/stepper/generation/generation_runge_kutta_cash_karp54.hpp [12:14]
- boost/numeric/odeint/stepper/generation/generation_runge_kutta_cash_karp54_classic.hpp [13:15]
- boost/numeric/odeint/stepper/generation/generation_runge_kutta_dopri5.hpp [12:14]
- boost/numeric/odeint/stepper/generation/generation_runge_kutta_fehlberg78.hpp [12:14]
- boost/numeric/odeint/stepper/generation/make_controlled.hpp [12:14]
- boost/numeric/odeint/stepper/generation/make_dense_output.hpp [12:14]
- boost/numeric/odeint/stepper/implicit_euler.hpp [13:15]
- boost/numeric/odeint/stepper/modified_midpoint.hpp [13:15]
- boost/numeric/odeint/stepper/rosenbrock4.hpp [14:16]
- boost/numeric/odeint/stepper/rosenbrock4_controller.hpp [13:15]
- boost/numeric/odeint/stepper/rosenbrock4_dense_output.hpp [13:15]
- boost/numeric/odeint/stepper/runge_kutta4.hpp [12:14]
- boost/numeric/odeint/stepper/runge_kutta4_classic.hpp [13:15]
- boost/numeric/odeint/stepper/runge_kutta_cash_karp54.hpp [12:14]
- boost/numeric/odeint/stepper/runge_kutta_cash_karp54_classic.hpp [13:15]
- boost/numeric/odeint/stepper/runge_kutta_dopri5.hpp [13:15]
- boost/numeric/odeint/stepper/runge_kutta_fehlberg78.hpp [12:14]
- boost/numeric/odeint/stepper/stepper_categories.hpp [12:14]
- boost/numeric/odeint/stepper/symplectic_euler.hpp [12:14]
- boost/numeric/odeint/stepper/symplectic_rkn_sb3a_mclachlan.hpp [12:14]
- boost/numeric/odeint/util/copy.hpp [12:14]
- boost/numeric/odeint/util/detail/is_range.hpp [14:16]
- boost/numeric/odeint/util/detail/less_with_sign.hpp [12:14]
- boost/numeric/odeint/util/is_pair.hpp [12:14]
- boost/numeric/odeint/util/is_resizeable.hpp [12:14]
- boost/numeric/odeint/util/n_ary_helper.hpp [11:13]
- boost/numeric/odeint/util/odeint_error.hpp [11:13]
- boost/numeric/odeint/util/resize.hpp [13:15]
- boost/numeric/odeint/util/resizer.hpp [12:14]
- boost/numeric/odeint/util/same_instance.hpp [12:14]
- boost/numeric/odeint/util/same_size.hpp [13:15]
- boost/numeric/odeint/util/split.hpp [13:15]
- boost/numeric/odeint/util/split_adaptor.hpp [13:15]
- boost/numeric/odeint/util/state_wrapper.hpp [13:15]
- boost/numeric/odeint/util/ublas_wrapper.hpp [12:14]
- boost/numeric/odeint/util/unwrap_reference.hpp [12:14]
- boost/numeric/odeint/version.hpp [12:14]
-
-KEEP BSL-1.0 56f0f1ae21573cb9dc1a9925ad7eae91
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/detail/combine_cxx03.hpp at line 5, boost/range/detail/combine_cxx11.hpp at line 3, boost/range/detail/combine_no_rvalue.hpp at line 5, boost/range/detail/combine_rvalue.hpp at line 5, boost/range/detail/default_constructible_unary_fn.hpp at line 5, boost/range/traversal.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/range/detail/combine_cxx03.hpp [3:6]
- boost/range/detail/combine_cxx11.hpp [1:4]
- boost/range/detail/combine_no_rvalue.hpp [3:6]
- boost/range/detail/combine_rvalue.hpp [3:6]
- boost/range/detail/default_constructible_unary_fn.hpp [3:6]
- boost/range/traversal.hpp [3:6]
-
-KEEP BSL-1.0 56f4fcb5d91e0daef7ad21bf68734337
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/allocators/detail/allocator_common.hpp at line 5, boost/interprocess/containers/allocation_type.hpp at line 5, boost/interprocess/containers/deque.hpp at line 5, boost/interprocess/containers/flat_map.hpp at line 5, boost/interprocess/containers/flat_set.hpp at line 5, boost/interprocess/containers/list.hpp at line 5, boost/interprocess/containers/map.hpp at line 5, boost/interprocess/containers/pair.hpp at line 5, boost/interprocess/containers/set.hpp at line 5, boost/interprocess/containers/slist.hpp at line 5, boost/interprocess/containers/stable_vector.hpp at line 5, boost/interprocess/containers/string.hpp at line 5, boost/interprocess/containers/vector.hpp at line 5, boost/interprocess/containers/version_type.hpp at line 5, boost/interprocess/detail/variadic_templates_tools.hpp at line 5, boost/interprocess/managed_xsi_shared_memory.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2008-2012. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/interprocess/allocators/detail/allocator_common.hpp [3:5]
- boost/interprocess/containers/allocation_type.hpp [3:5]
- boost/interprocess/containers/deque.hpp [3:5]
- boost/interprocess/containers/flat_map.hpp [3:5]
- boost/interprocess/containers/flat_set.hpp [3:5]
- boost/interprocess/containers/list.hpp [3:5]
- boost/interprocess/containers/map.hpp [3:5]
- boost/interprocess/containers/pair.hpp [3:5]
- boost/interprocess/containers/set.hpp [3:5]
- boost/interprocess/containers/slist.hpp [3:5]
- boost/interprocess/containers/stable_vector.hpp [3:5]
- boost/interprocess/containers/string.hpp [3:5]
- boost/interprocess/containers/vector.hpp [3:5]
- boost/interprocess/containers/version_type.hpp [3:5]
- boost/interprocess/detail/variadic_templates_tools.hpp [3:5]
- boost/interprocess/managed_xsi_shared_memory.hpp [3:5]
-
-KEEP BSL-1.0 58d7e90122d79b0017c88c4661121868
-BELONGS ya.make
- License text:
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 76.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/callable_traits.hpp [4:5]
- boost/callable_traits/add_member_const.hpp [4:5]
- boost/callable_traits/add_member_cv.hpp [4:5]
- boost/callable_traits/add_member_lvalue_reference.hpp [4:5]
- boost/callable_traits/add_member_rvalue_reference.hpp [4:5]
- boost/callable_traits/add_member_volatile.hpp [4:5]
- boost/callable_traits/add_noexcept.hpp [5:6]
- boost/callable_traits/add_transaction_safe.hpp [5:6]
- boost/callable_traits/add_varargs.hpp [4:5]
- boost/callable_traits/apply_member_pointer.hpp [4:5]
- boost/callable_traits/apply_return.hpp [4:5]
- boost/callable_traits/args.hpp [4:5]
- boost/callable_traits/class_of.hpp [4:5]
- boost/callable_traits/detail/config.hpp [4:5]
- boost/callable_traits/detail/core.hpp [4:5]
- boost/callable_traits/detail/function.hpp [4:5]
- boost/callable_traits/detail/function_object.hpp [4:5]
- boost/callable_traits/detail/is_invocable_impl.hpp [5:6]
- boost/callable_traits/detail/pmd.hpp [4:5]
- boost/callable_traits/detail/pmf.hpp [4:5]
- boost/callable_traits/detail/polyfills/disjunction.hpp [4:5]
- boost/callable_traits/detail/polyfills/make_index_sequence.hpp [4:5]
- boost/callable_traits/detail/qualifier_flags.hpp [5:6]
- boost/callable_traits/detail/set_function_qualifiers.hpp [4:5]
- boost/callable_traits/detail/sfinae_errors.hpp [4:5]
- boost/callable_traits/detail/traits.hpp [4:5]
- boost/callable_traits/detail/unguarded/function.hpp [4:5]
- boost/callable_traits/detail/unguarded/function_2.hpp [4:5]
- boost/callable_traits/detail/unguarded/function_3.hpp [4:5]
- boost/callable_traits/detail/unguarded/function_ptr.hpp [4:5]
- boost/callable_traits/detail/unguarded/function_ptr_2.hpp [4:5]
- boost/callable_traits/detail/unguarded/function_ptr_3.hpp [4:5]
- boost/callable_traits/detail/unguarded/function_ptr_varargs.hpp [4:5]
- boost/callable_traits/detail/unguarded/function_ptr_varargs_2.hpp [4:5]
- boost/callable_traits/detail/unguarded/function_ptr_varargs_3.hpp [4:5]
- boost/callable_traits/detail/unguarded/pmf.hpp [5:6]
- boost/callable_traits/detail/unguarded/pmf_2.hpp [4:5]
- boost/callable_traits/detail/unguarded/pmf_3.hpp [4:5]
- boost/callable_traits/detail/unguarded/pmf_4.hpp [4:5]
- boost/callable_traits/detail/unguarded/pmf_varargs.hpp [4:5]
- boost/callable_traits/detail/unguarded/pmf_varargs_2.hpp [4:5]
- boost/callable_traits/detail/unguarded/pmf_varargs_3.hpp [4:5]
- boost/callable_traits/detail/unguarded/pmf_varargs_4.hpp [4:5]
- boost/callable_traits/detail/utility.hpp [4:5]
- boost/callable_traits/function_type.hpp [4:5]
- boost/callable_traits/has_member_qualifiers.hpp [4:5]
- boost/callable_traits/has_varargs.hpp [4:5]
- boost/callable_traits/has_void_return.hpp [4:5]
- boost/callable_traits/is_const_member.hpp [4:5]
- boost/callable_traits/is_cv_member.hpp [4:5]
- boost/callable_traits/is_invocable.hpp [4:5]
- boost/callable_traits/is_lvalue_reference_member.hpp [4:5]
- boost/callable_traits/is_noexcept.hpp [5:6]
- boost/callable_traits/is_reference_member.hpp [5:6]
- boost/callable_traits/is_rvalue_reference_member.hpp [5:6]
- boost/callable_traits/is_transaction_safe.hpp [5:6]
- boost/callable_traits/is_volatile_member.hpp [5:6]
- boost/callable_traits/qualified_class_of.hpp [5:6]
- boost/callable_traits/remove_member_const.hpp [4:5]
- boost/callable_traits/remove_member_cv.hpp [5:6]
- boost/callable_traits/remove_member_reference.hpp [4:5]
- boost/callable_traits/remove_member_volatile.hpp [4:5]
- boost/callable_traits/remove_noexcept.hpp [5:6]
- boost/callable_traits/remove_transaction_safe.hpp [5:6]
- boost/callable_traits/remove_varargs.hpp [5:6]
- boost/callable_traits/return_type.hpp [5:6]
- boost/hana.hpp [7:8]
- boost/hana/accessors.hpp [6:7]
- boost/hana/adapt_adt.hpp [6:7]
- boost/hana/adapt_struct.hpp [6:7]
- boost/hana/adjust.hpp [6:7]
- boost/hana/adjust_if.hpp [6:7]
- boost/hana/all.hpp [6:7]
- boost/hana/all_of.hpp [6:7]
- boost/hana/and.hpp [6:7]
- boost/hana/any.hpp [6:7]
- boost/hana/any_of.hpp [6:7]
- boost/hana/ap.hpp [6:7]
- boost/hana/append.hpp [6:7]
- boost/hana/assert.hpp [6:7]
- boost/hana/at.hpp [6:7]
- boost/hana/at_key.hpp [7:8]
- boost/hana/back.hpp [6:7]
- boost/hana/basic_tuple.hpp [6:7]
- boost/hana/bool.hpp [6:7]
- boost/hana/cartesian_product.hpp [6:7]
- boost/hana/chain.hpp [6:7]
- boost/hana/comparing.hpp [6:7]
- boost/hana/concat.hpp [6:7]
- boost/hana/concept.hpp [6:7]
- boost/hana/concept/applicative.hpp [6:7]
- boost/hana/concept/comonad.hpp [6:7]
- boost/hana/concept/comparable.hpp [6:7]
- boost/hana/concept/constant.hpp [6:7]
- boost/hana/concept/euclidean_ring.hpp [6:7]
- boost/hana/concept/foldable.hpp [6:7]
- boost/hana/concept/functor.hpp [6:7]
- boost/hana/concept/group.hpp [6:7]
- boost/hana/concept/hashable.hpp [7:8]
- boost/hana/concept/integral_constant.hpp [6:7]
- boost/hana/concept/iterable.hpp [6:7]
- boost/hana/concept/logical.hpp [6:7]
- boost/hana/concept/metafunction.hpp [6:7]
- boost/hana/concept/monad.hpp [6:7]
- boost/hana/concept/monad_plus.hpp [6:7]
- boost/hana/concept/monoid.hpp [6:7]
- boost/hana/concept/orderable.hpp [6:7]
- boost/hana/concept/product.hpp [6:7]
- boost/hana/concept/ring.hpp [6:7]
- boost/hana/concept/searchable.hpp [6:7]
- boost/hana/concept/sequence.hpp [6:7]
- boost/hana/concept/struct.hpp [6:7]
- boost/hana/config.hpp [6:7]
- boost/hana/contains.hpp [6:7]
- boost/hana/core.hpp [6:7]
- boost/hana/core/common.hpp [6:7]
- boost/hana/core/default.hpp [6:7]
- boost/hana/core/dispatch.hpp [6:7]
- boost/hana/core/is_a.hpp [6:7]
- boost/hana/core/make.hpp [6:7]
- boost/hana/core/tag_of.hpp [6:7]
- boost/hana/core/to.hpp [6:7]
- boost/hana/core/when.hpp [6:7]
- boost/hana/count.hpp [6:7]
- boost/hana/count_if.hpp [6:7]
- boost/hana/cycle.hpp [6:7]
- boost/hana/define_struct.hpp [6:7]
- boost/hana/detail/algorithm.hpp [6:7]
- boost/hana/detail/any_of.hpp [6:7]
- boost/hana/detail/array.hpp [6:7]
- boost/hana/detail/canonical_constant.hpp [6:7]
- boost/hana/detail/concepts.hpp [6:7]
- boost/hana/detail/create.hpp [6:7]
- boost/hana/detail/decay.hpp [7:8]
- boost/hana/detail/dispatch_if.hpp [6:7]
- boost/hana/detail/ebo.hpp [6:7]
- boost/hana/detail/fast_and.hpp [6:7]
- boost/hana/detail/first_unsatisfied_index.hpp [6:7]
- boost/hana/detail/has_common_embedding.hpp [6:7]
- boost/hana/detail/has_duplicates.hpp [6:7]
- boost/hana/detail/hash_table.hpp [7:8]
- boost/hana/detail/index_if.hpp [7:8]
- boost/hana/detail/integral_constant.hpp [7:8]
- boost/hana/detail/intrinsics.hpp [6:7]
- boost/hana/detail/nested_by.hpp [6:7]
- boost/hana/detail/nested_by_fwd.hpp [6:7]
- boost/hana/detail/nested_than.hpp [6:7]
- boost/hana/detail/nested_than_fwd.hpp [6:7]
- boost/hana/detail/nested_to.hpp [6:7]
- boost/hana/detail/nested_to_fwd.hpp [6:7]
- boost/hana/detail/operators/adl.hpp [6:7]
- boost/hana/detail/operators/arithmetic.hpp [6:7]
- boost/hana/detail/operators/comparable.hpp [6:7]
- boost/hana/detail/operators/iterable.hpp [6:7]
- boost/hana/detail/operators/logical.hpp [6:7]
- boost/hana/detail/operators/monad.hpp [6:7]
- boost/hana/detail/operators/orderable.hpp [6:7]
- boost/hana/detail/operators/searchable.hpp [6:7]
- boost/hana/detail/preprocessor.hpp [6:7]
- boost/hana/detail/std_common_type.hpp [6:7]
- boost/hana/detail/struct_macros.hpp [11:12]
- boost/hana/detail/type_at.hpp [6:7]
- boost/hana/detail/type_foldl1.hpp [6:7]
- boost/hana/detail/type_foldr1.hpp [6:7]
- boost/hana/detail/unpack_flatten.hpp [6:7]
- boost/hana/detail/variadic/at.hpp [6:7]
- boost/hana/detail/variadic/drop_into.hpp [6:7]
- boost/hana/detail/variadic/foldl1.hpp [6:7]
- boost/hana/detail/variadic/foldr1.hpp [6:7]
- boost/hana/detail/variadic/reverse_apply.hpp [6:7]
- boost/hana/detail/variadic/reverse_apply/flat.hpp [6:7]
- boost/hana/detail/variadic/reverse_apply/unrolled.hpp [6:7]
- boost/hana/detail/variadic/split_at.hpp [6:7]
- boost/hana/detail/variadic/take.hpp [6:7]
- boost/hana/detail/void_t.hpp [6:7]
- boost/hana/detail/wrong.hpp [6:7]
- boost/hana/difference.hpp [6:7]
- boost/hana/div.hpp [6:7]
- boost/hana/drop_back.hpp [6:7]
- boost/hana/drop_front.hpp [6:7]
- boost/hana/drop_front_exactly.hpp [6:7]
- boost/hana/drop_while.hpp [6:7]
- boost/hana/duplicate.hpp [6:7]
- boost/hana/empty.hpp [6:7]
- boost/hana/equal.hpp [6:7]
- boost/hana/erase_key.hpp [6:7]
- boost/hana/eval.hpp [6:7]
- boost/hana/eval_if.hpp [6:7]
- boost/hana/experimental/printable.hpp [6:7]
- boost/hana/experimental/type_name.hpp [6:7]
- boost/hana/experimental/types.hpp [6:7]
- boost/hana/experimental/view.hpp [6:7]
- boost/hana/ext/boost.hpp [6:7]
- boost/hana/ext/boost/fusion.hpp [6:7]
- boost/hana/ext/boost/fusion/deque.hpp [6:7]
- boost/hana/ext/boost/fusion/detail/common.hpp [6:7]
- boost/hana/ext/boost/fusion/list.hpp [6:7]
- boost/hana/ext/boost/fusion/tuple.hpp [10:11]
- boost/hana/ext/boost/fusion/vector.hpp [6:7]
- boost/hana/ext/boost/mpl.hpp [6:7]
- boost/hana/ext/boost/mpl/integral_c.hpp [6:7]
- boost/hana/ext/boost/mpl/list.hpp [6:7]
- boost/hana/ext/boost/mpl/vector.hpp [6:7]
- boost/hana/ext/boost/tuple.hpp [6:7]
- boost/hana/ext/std.hpp [6:7]
- boost/hana/ext/std/array.hpp [6:7]
- boost/hana/ext/std/integer_sequence.hpp [6:7]
- boost/hana/ext/std/integral_constant.hpp [6:7]
- boost/hana/ext/std/pair.hpp [6:7]
- boost/hana/ext/std/ratio.hpp [6:7]
- boost/hana/ext/std/tuple.hpp [6:7]
- boost/hana/ext/std/vector.hpp [7:8]
- boost/hana/extend.hpp [6:7]
- boost/hana/extract.hpp [6:7]
- boost/hana/fill.hpp [6:7]
- boost/hana/filter.hpp [6:7]
- boost/hana/find.hpp [6:7]
- boost/hana/find_if.hpp [7:8]
- boost/hana/first.hpp [6:7]
- boost/hana/flatten.hpp [6:7]
- boost/hana/fold.hpp [6:7]
- boost/hana/fold_left.hpp [6:7]
- boost/hana/fold_right.hpp [6:7]
- boost/hana/for_each.hpp [6:7]
- boost/hana/front.hpp [6:7]
- boost/hana/functional.hpp [6:7]
- boost/hana/functional/always.hpp [6:7]
- boost/hana/functional/apply.hpp [6:7]
- boost/hana/functional/arg.hpp [6:7]
- boost/hana/functional/capture.hpp [6:7]
- boost/hana/functional/compose.hpp [6:7]
- boost/hana/functional/curry.hpp [6:7]
- boost/hana/functional/demux.hpp [6:7]
- boost/hana/functional/fix.hpp [6:7]
- boost/hana/functional/flip.hpp [6:7]
- boost/hana/functional/id.hpp [6:7]
- boost/hana/functional/infix.hpp [6:7]
- boost/hana/functional/iterate.hpp [6:7]
- boost/hana/functional/lockstep.hpp [6:7]
- boost/hana/functional/on.hpp [6:7]
- boost/hana/functional/overload.hpp [6:7]
- boost/hana/functional/overload_linearly.hpp [6:7]
- boost/hana/functional/partial.hpp [6:7]
- boost/hana/functional/placeholder.hpp [6:7]
- boost/hana/functional/reverse_partial.hpp [6:7]
- boost/hana/fuse.hpp [6:7]
- boost/hana/fwd/accessors.hpp [6:7]
- boost/hana/fwd/adapt_adt.hpp [6:7]
- boost/hana/fwd/adapt_struct.hpp [6:7]
- boost/hana/fwd/adjust.hpp [6:7]
- boost/hana/fwd/adjust_if.hpp [6:7]
- boost/hana/fwd/all.hpp [6:7]
- boost/hana/fwd/all_of.hpp [6:7]
- boost/hana/fwd/and.hpp [6:7]
- boost/hana/fwd/any.hpp [6:7]
- boost/hana/fwd/any_of.hpp [6:7]
- boost/hana/fwd/ap.hpp [6:7]
- boost/hana/fwd/append.hpp [6:7]
- boost/hana/fwd/at.hpp [6:7]
- boost/hana/fwd/at_key.hpp [6:7]
- boost/hana/fwd/back.hpp [6:7]
- boost/hana/fwd/basic_tuple.hpp [6:7]
- boost/hana/fwd/bool.hpp [6:7]
- boost/hana/fwd/cartesian_product.hpp [6:7]
- boost/hana/fwd/chain.hpp [6:7]
- boost/hana/fwd/comparing.hpp [6:7]
- boost/hana/fwd/concat.hpp [6:7]
- boost/hana/fwd/concept/applicative.hpp [6:7]
- boost/hana/fwd/concept/comonad.hpp [6:7]
- boost/hana/fwd/concept/comparable.hpp [6:7]
- boost/hana/fwd/concept/constant.hpp [6:7]
- boost/hana/fwd/concept/euclidean_ring.hpp [6:7]
- boost/hana/fwd/concept/foldable.hpp [6:7]
- boost/hana/fwd/concept/functor.hpp [6:7]
- boost/hana/fwd/concept/group.hpp [6:7]
- boost/hana/fwd/concept/hashable.hpp [7:8]
- boost/hana/fwd/concept/integral_constant.hpp [6:7]
- boost/hana/fwd/concept/iterable.hpp [6:7]
- boost/hana/fwd/concept/logical.hpp [6:7]
- boost/hana/fwd/concept/metafunction.hpp [6:7]
- boost/hana/fwd/concept/monad.hpp [6:7]
- boost/hana/fwd/concept/monad_plus.hpp [6:7]
- boost/hana/fwd/concept/monoid.hpp [6:7]
- boost/hana/fwd/concept/orderable.hpp [6:7]
- boost/hana/fwd/concept/product.hpp [6:7]
- boost/hana/fwd/concept/ring.hpp [6:7]
- boost/hana/fwd/concept/searchable.hpp [6:7]
- boost/hana/fwd/concept/sequence.hpp [6:7]
- boost/hana/fwd/concept/struct.hpp [6:7]
- boost/hana/fwd/contains.hpp [6:7]
- boost/hana/fwd/core.hpp [6:7]
- boost/hana/fwd/core/common.hpp [6:7]
- boost/hana/fwd/core/default.hpp [6:7]
- boost/hana/fwd/core/is_a.hpp [6:7]
- boost/hana/fwd/core/make.hpp [6:7]
- boost/hana/fwd/core/tag_of.hpp [6:7]
- boost/hana/fwd/core/to.hpp [6:7]
- boost/hana/fwd/core/when.hpp [6:7]
- boost/hana/fwd/count.hpp [6:7]
- boost/hana/fwd/count_if.hpp [6:7]
- boost/hana/fwd/cycle.hpp [6:7]
- boost/hana/fwd/define_struct.hpp [6:7]
- boost/hana/fwd/difference.hpp [6:7]
- boost/hana/fwd/div.hpp [6:7]
- boost/hana/fwd/drop_back.hpp [6:7]
- boost/hana/fwd/drop_front.hpp [6:7]
- boost/hana/fwd/drop_front_exactly.hpp [6:7]
- boost/hana/fwd/drop_while.hpp [6:7]
- boost/hana/fwd/duplicate.hpp [6:7]
- boost/hana/fwd/empty.hpp [6:7]
- boost/hana/fwd/equal.hpp [6:7]
- boost/hana/fwd/erase_key.hpp [6:7]
- boost/hana/fwd/eval.hpp [6:7]
- boost/hana/fwd/eval_if.hpp [6:7]
- boost/hana/fwd/extend.hpp [6:7]
- boost/hana/fwd/extract.hpp [6:7]
- boost/hana/fwd/fill.hpp [6:7]
- boost/hana/fwd/filter.hpp [6:7]
- boost/hana/fwd/find.hpp [6:7]
- boost/hana/fwd/find_if.hpp [6:7]
- boost/hana/fwd/first.hpp [6:7]
- boost/hana/fwd/flatten.hpp [6:7]
- boost/hana/fwd/fold.hpp [6:7]
- boost/hana/fwd/fold_left.hpp [6:7]
- boost/hana/fwd/fold_right.hpp [6:7]
- boost/hana/fwd/for_each.hpp [6:7]
- boost/hana/fwd/front.hpp [6:7]
- boost/hana/fwd/fuse.hpp [6:7]
- boost/hana/fwd/greater.hpp [6:7]
- boost/hana/fwd/greater_equal.hpp [6:7]
- boost/hana/fwd/group.hpp [6:7]
- boost/hana/fwd/hash.hpp [7:8]
- boost/hana/fwd/if.hpp [6:7]
- boost/hana/fwd/index_if.hpp [7:8]
- boost/hana/fwd/insert.hpp [6:7]
- boost/hana/fwd/insert_range.hpp [6:7]
- boost/hana/fwd/integral_constant.hpp [6:7]
- boost/hana/fwd/intersection.hpp [6:7]
- boost/hana/fwd/intersperse.hpp [6:7]
- boost/hana/fwd/is_disjoint.hpp [6:7]
- boost/hana/fwd/is_empty.hpp [6:7]
- boost/hana/fwd/is_subset.hpp [6:7]
- boost/hana/fwd/keys.hpp [6:7]
- boost/hana/fwd/lazy.hpp [6:7]
- boost/hana/fwd/length.hpp [6:7]
- boost/hana/fwd/less.hpp [6:7]
- boost/hana/fwd/less_equal.hpp [6:7]
- boost/hana/fwd/lexicographical_compare.hpp [6:7]
- boost/hana/fwd/lift.hpp [6:7]
- boost/hana/fwd/map.hpp [6:7]
- boost/hana/fwd/max.hpp [6:7]
- boost/hana/fwd/maximum.hpp [6:7]
- boost/hana/fwd/members.hpp [6:7]
- boost/hana/fwd/min.hpp [6:7]
- boost/hana/fwd/minimum.hpp [6:7]
- boost/hana/fwd/minus.hpp [6:7]
- boost/hana/fwd/mod.hpp [6:7]
- boost/hana/fwd/monadic_compose.hpp [6:7]
- boost/hana/fwd/monadic_fold_left.hpp [6:7]
- boost/hana/fwd/monadic_fold_right.hpp [6:7]
- boost/hana/fwd/mult.hpp [6:7]
- boost/hana/fwd/negate.hpp [6:7]
- boost/hana/fwd/none.hpp [6:7]
- boost/hana/fwd/none_of.hpp [6:7]
- boost/hana/fwd/not.hpp [6:7]
- boost/hana/fwd/not_equal.hpp [6:7]
- boost/hana/fwd/one.hpp [6:7]
- boost/hana/fwd/optional.hpp [6:7]
- boost/hana/fwd/or.hpp [6:7]
- boost/hana/fwd/ordering.hpp [6:7]
- boost/hana/fwd/pair.hpp [6:7]
- boost/hana/fwd/partition.hpp [6:7]
- boost/hana/fwd/permutations.hpp [6:7]
- boost/hana/fwd/plus.hpp [6:7]
- boost/hana/fwd/power.hpp [6:7]
- boost/hana/fwd/prefix.hpp [6:7]
- boost/hana/fwd/prepend.hpp [6:7]
- boost/hana/fwd/product.hpp [6:7]
- boost/hana/fwd/range.hpp [6:7]
- boost/hana/fwd/remove.hpp [6:7]
- boost/hana/fwd/remove_at.hpp [6:7]
- boost/hana/fwd/remove_if.hpp [6:7]
- boost/hana/fwd/remove_range.hpp [6:7]
- boost/hana/fwd/repeat.hpp [6:7]
- boost/hana/fwd/replace.hpp [6:7]
- boost/hana/fwd/replace_if.hpp [6:7]
- boost/hana/fwd/replicate.hpp [6:7]
- boost/hana/fwd/reverse.hpp [6:7]
- boost/hana/fwd/reverse_fold.hpp [6:7]
- boost/hana/fwd/scan_left.hpp [6:7]
- boost/hana/fwd/scan_right.hpp [6:7]
- boost/hana/fwd/second.hpp [6:7]
- boost/hana/fwd/set.hpp [6:7]
- boost/hana/fwd/size.hpp [6:7]
- boost/hana/fwd/slice.hpp [6:7]
- boost/hana/fwd/sort.hpp [6:7]
- boost/hana/fwd/span.hpp [6:7]
- boost/hana/fwd/string.hpp [6:7]
- boost/hana/fwd/suffix.hpp [6:7]
- boost/hana/fwd/sum.hpp [6:7]
- boost/hana/fwd/symmetric_difference.hpp [6:7]
- boost/hana/fwd/take_back.hpp [6:7]
- boost/hana/fwd/take_front.hpp [6:7]
- boost/hana/fwd/take_while.hpp [6:7]
- boost/hana/fwd/tap.hpp [6:7]
- boost/hana/fwd/then.hpp [6:7]
- boost/hana/fwd/transform.hpp [6:7]
- boost/hana/fwd/tuple.hpp [6:7]
- boost/hana/fwd/type.hpp [6:7]
- boost/hana/fwd/unfold_left.hpp [6:7]
- boost/hana/fwd/unfold_right.hpp [6:7]
- boost/hana/fwd/union.hpp [6:7]
- boost/hana/fwd/unique.hpp [6:7]
- boost/hana/fwd/unpack.hpp [6:7]
- boost/hana/fwd/value.hpp [6:7]
- boost/hana/fwd/while.hpp [6:7]
- boost/hana/fwd/zero.hpp [6:7]
- boost/hana/fwd/zip.hpp [6:7]
- boost/hana/fwd/zip_shortest.hpp [6:7]
- boost/hana/fwd/zip_shortest_with.hpp [6:7]
- boost/hana/fwd/zip_with.hpp [6:7]
- boost/hana/greater.hpp [6:7]
- boost/hana/greater_equal.hpp [6:7]
- boost/hana/group.hpp [6:7]
- boost/hana/hash.hpp [6:7]
- boost/hana/if.hpp [6:7]
- boost/hana/index_if.hpp [7:8]
- boost/hana/insert.hpp [6:7]
- boost/hana/insert_range.hpp [6:7]
- boost/hana/integral_constant.hpp [6:7]
- boost/hana/intersection.hpp [6:7]
- boost/hana/intersperse.hpp [6:7]
- boost/hana/is_disjoint.hpp [6:7]
- boost/hana/is_empty.hpp [6:7]
- boost/hana/is_subset.hpp [6:7]
- boost/hana/keys.hpp [6:7]
- boost/hana/lazy.hpp [6:7]
- boost/hana/length.hpp [6:7]
- boost/hana/less.hpp [6:7]
- boost/hana/less_equal.hpp [6:7]
- boost/hana/lexicographical_compare.hpp [6:7]
- boost/hana/lift.hpp [6:7]
- boost/hana/map.hpp [6:7]
- boost/hana/max.hpp [6:7]
- boost/hana/maximum.hpp [6:7]
- boost/hana/members.hpp [6:7]
- boost/hana/min.hpp [6:7]
- boost/hana/minimum.hpp [6:7]
- boost/hana/minus.hpp [6:7]
- boost/hana/mod.hpp [6:7]
- boost/hana/monadic_compose.hpp [6:7]
- boost/hana/monadic_fold_left.hpp [6:7]
- boost/hana/monadic_fold_right.hpp [6:7]
- boost/hana/mult.hpp [6:7]
- boost/hana/negate.hpp [6:7]
- boost/hana/none.hpp [6:7]
- boost/hana/none_of.hpp [6:7]
- boost/hana/not.hpp [6:7]
- boost/hana/not_equal.hpp [6:7]
- boost/hana/one.hpp [6:7]
- boost/hana/optional.hpp [6:7]
- boost/hana/or.hpp [6:7]
- boost/hana/ordering.hpp [6:7]
- boost/hana/pair.hpp [6:7]
- boost/hana/partition.hpp [6:7]
- boost/hana/permutations.hpp [6:7]
- boost/hana/plus.hpp [6:7]
- boost/hana/power.hpp [6:7]
- boost/hana/prefix.hpp [6:7]
- boost/hana/prepend.hpp [6:7]
- boost/hana/product.hpp [6:7]
- boost/hana/range.hpp [6:7]
- boost/hana/remove.hpp [6:7]
- boost/hana/remove_at.hpp [6:7]
- boost/hana/remove_if.hpp [6:7]
- boost/hana/remove_range.hpp [6:7]
- boost/hana/repeat.hpp [6:7]
- boost/hana/replace.hpp [6:7]
- boost/hana/replace_if.hpp [6:7]
- boost/hana/replicate.hpp [6:7]
- boost/hana/reverse.hpp [6:7]
- boost/hana/reverse_fold.hpp [6:7]
- boost/hana/scan_left.hpp [6:7]
- boost/hana/scan_right.hpp [6:7]
- boost/hana/second.hpp [6:7]
- boost/hana/set.hpp [6:7]
- boost/hana/size.hpp [6:7]
- boost/hana/slice.hpp [6:7]
- boost/hana/sort.hpp [6:7]
- boost/hana/span.hpp [6:7]
- boost/hana/string.hpp [6:7]
- boost/hana/suffix.hpp [6:7]
- boost/hana/sum.hpp [6:7]
- boost/hana/symmetric_difference.hpp [6:7]
- boost/hana/take_back.hpp [6:7]
- boost/hana/take_front.hpp [6:7]
- boost/hana/take_while.hpp [6:7]
- boost/hana/tap.hpp [6:7]
- boost/hana/then.hpp [6:7]
- boost/hana/traits.hpp [7:8]
- boost/hana/transform.hpp [6:7]
- boost/hana/tuple.hpp [7:8]
- boost/hana/type.hpp [6:7]
- boost/hana/unfold_left.hpp [6:7]
- boost/hana/unfold_right.hpp [6:7]
- boost/hana/union.hpp [6:7]
- boost/hana/unique.hpp [6:7]
- boost/hana/unpack.hpp [6:7]
- boost/hana/value.hpp [6:7]
- boost/hana/version.hpp [6:7]
- boost/hana/while.hpp [6:7]
- boost/hana/zero.hpp [6:7]
- boost/hana/zip.hpp [6:7]
- boost/hana/zip_shortest.hpp [6:7]
- boost/hana/zip_shortest_with.hpp [6:7]
- boost/hana/zip_with.hpp [6:7]
-
-KEEP BSD-3-Clause 5921395c41a81cf68ebfde6c58320ef0
-BELONGS ya.make
- License text:
- // Using the Mac OS X system BSD-style C library.
- Scancode info:
- Original SPDX id: BSD-3-Clause
- Score : 90.00
- Match type : REFERENCE
- Links : http://www.opensource.org/licenses/BSD-3-Clause, https://spdx.org/licenses/BSD-3-Clause
- Files with this license:
- boost/config/platform/macos.hpp [16:16]
-
-KEEP BSL-1.0 597dc579281e71ba9d4dd39bf2d15a12
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/proto/args.hpp at line 8, boost/proto/context.hpp at line 7, boost/proto/context/callable.hpp at line 11, boost/proto/context/default.hpp at line 9, boost/proto/context/null.hpp at line 9, boost/proto/core.hpp at line 8, boost/proto/debug.hpp at line 7, boost/proto/deep_copy.hpp at line 7, boost/proto/detail/as_lvalue.hpp at line 7, boost/proto/detail/decltype.hpp at line 7, boost/proto/detail/deprecated.hpp at line 8, boost/proto/detail/dont_care.hpp at line 7, boost/proto/detail/expr_funop.hpp at line 7, boost/proto/detail/ignore_unused.hpp at line 8, boost/proto/detail/is_noncopyable.hpp at line 7, boost/proto/detail/local.hpp at line 7, boost/proto/detail/poly_function.hpp at line 9, boost/proto/detail/static_const.hpp at line 7, boost/proto/domain.hpp at line 9, boost/proto/eval.hpp at line 7, boost/proto/expr.hpp at line 7, boost/proto/extends.hpp at line 7, boost/proto/fusion.hpp at line 7, boost/proto/generate.hpp at line 8, boost/proto/literal.hpp at line 8, boost/proto/make_expr.hpp at line 9, boost/proto/matches.hpp at line 8, boost/proto/operators.hpp at line 8, boost/proto/proto.hpp at line 7, boost/proto/proto_fwd.hpp at line 7, boost/proto/proto_typeof.hpp at line 8, boost/proto/repeat.hpp at line 7, boost/proto/tags.hpp at line 7, boost/proto/traits.hpp at line 9, boost/proto/transform.hpp at line 7, boost/proto/transform/arg.hpp at line 7, boost/proto/transform/call.hpp at line 7, boost/proto/transform/default.hpp at line 8, boost/proto/transform/fold.hpp at line 7, boost/proto/transform/fold_tree.hpp at line 7, boost/proto/transform/impl.hpp at line 7, boost/proto/transform/lazy.hpp at line 7, boost/proto/transform/make.hpp at line 7, boost/proto/transform/pass_through.hpp at line 10, boost/proto/transform/when.hpp at line 7, boost/xpressive/basic_regex.hpp at line 8, boost/xpressive/detail/core/access.hpp at line 6, boost/xpressive/detail/core/action.hpp at line 6, boost/xpressive/detail/core/adaptor.hpp at line 6, boost/xpressive/detail/core/finder.hpp at line 5, boost/xpressive/detail/core/flow_control.hpp at line 6, boost/xpressive/detail/core/icase.hpp at line 6, boost/xpressive/detail/core/linker.hpp at line 6, boost/xpressive/detail/core/matcher/alternate_end_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/alternate_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/any_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/assert_bol_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/assert_bos_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/assert_eol_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/assert_eos_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/assert_line_base.hpp at line 6, boost/xpressive/detail/core/matcher/assert_word_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/attr_begin_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/attr_end_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/charset_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/end_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/epsilon_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/keeper_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/literal_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/logical_newline_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/lookahead_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/lookbehind_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/mark_begin_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/mark_end_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/mark_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/optional_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/posix_charset_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/predicate_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/range_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/regex_byref_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/regex_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/repeat_begin_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/repeat_end_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/set_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/simple_repeat_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/string_matcher.hpp at line 6, boost/xpressive/detail/core/matcher/true_matcher.hpp at line 6, boost/xpressive/detail/core/matchers.hpp at line 6, boost/xpressive/detail/core/optimize.hpp at line 6, boost/xpressive/detail/core/peeker.hpp at line 6, boost/xpressive/detail/core/quant_style.hpp at line 6, boost/xpressive/detail/core/regex_impl.hpp at line 6, boost/xpressive/detail/core/results_cache.hpp at line 6, boost/xpressive/detail/core/state.hpp at line 6, boost/xpressive/detail/core/sub_match_impl.hpp at line 6, boost/xpressive/detail/core/sub_match_vector.hpp at line 6, boost/xpressive/detail/detail_fwd.hpp at line 6, boost/xpressive/detail/dynamic/dynamic.hpp at line 6, boost/xpressive/detail/dynamic/matchable.hpp at line 6, boost/xpressive/detail/dynamic/parse_charset.hpp at line 6, boost/xpressive/detail/dynamic/parser.hpp at line 8, boost/xpressive/detail/dynamic/parser_enum.hpp at line 6, boost/xpressive/detail/dynamic/parser_traits.hpp at line 6, boost/xpressive/detail/dynamic/sequence.hpp at line 6, boost/xpressive/detail/static/compile.hpp at line 6, boost/xpressive/detail/static/grammar.hpp at line 6, boost/xpressive/detail/static/is_pure.hpp at line 6, boost/xpressive/detail/static/modifier.hpp at line 6, boost/xpressive/detail/static/placeholders.hpp at line 6, boost/xpressive/detail/static/static.hpp at line 6, boost/xpressive/detail/static/transforms/as_alternate.hpp at line 6, boost/xpressive/detail/static/transforms/as_independent.hpp at line 6, boost/xpressive/detail/static/transforms/as_inverse.hpp at line 6, boost/xpressive/detail/static/transforms/as_marker.hpp at line 6, boost/xpressive/detail/static/transforms/as_matcher.hpp at line 6, boost/xpressive/detail/static/transforms/as_modifier.hpp at line 6, boost/xpressive/detail/static/transforms/as_quantifier.hpp at line 6, boost/xpressive/detail/static/transforms/as_sequence.hpp at line 6, boost/xpressive/detail/static/transforms/as_set.hpp at line 6, boost/xpressive/detail/static/transmogrify.hpp at line 6, boost/xpressive/detail/static/type_traits.hpp at line 6, boost/xpressive/detail/static/visitor.hpp at line 6, boost/xpressive/detail/static/width_of.hpp at line 6, boost/xpressive/detail/utility/algorithm.hpp at line 6, boost/xpressive/detail/utility/any.hpp at line 6, boost/xpressive/detail/utility/boyer_moore.hpp at line 9, boost/xpressive/detail/utility/chset/chset.hpp at line 6, boost/xpressive/detail/utility/cons.hpp at line 6, boost/xpressive/detail/utility/dont_care.hpp at line 6, boost/xpressive/detail/utility/hash_peek_bitset.hpp at line 6, boost/xpressive/detail/utility/ignore_unused.hpp at line 6, boost/xpressive/detail/utility/literals.hpp at line 6, boost/xpressive/detail/utility/never_true.hpp at line 6, boost/xpressive/detail/utility/save_restore.hpp at line 6, boost/xpressive/detail/utility/sequence_stack.hpp at line 6, boost/xpressive/detail/utility/tracking_ptr.hpp at line 6, boost/xpressive/detail/utility/traits_utils.hpp at line 6, boost/xpressive/detail/utility/width.hpp at line 6, boost/xpressive/match_results.hpp at line 9, boost/xpressive/regex_actions.hpp at line 7, boost/xpressive/regex_algorithms.hpp at line 7, boost/xpressive/regex_compiler.hpp at line 8, boost/xpressive/regex_constants.hpp at line 8, boost/xpressive/regex_error.hpp at line 7, boost/xpressive/regex_iterator.hpp at line 8, boost/xpressive/regex_primitives.hpp at line 7, boost/xpressive/regex_token_iterator.hpp at line 8, boost/xpressive/regex_traits.hpp at line 8, boost/xpressive/sub_match.hpp at line 8, boost/xpressive/traits/c_regex_traits.hpp at line 9, boost/xpressive/traits/cpp_regex_traits.hpp at line 9, boost/xpressive/traits/detail/c_ctype.hpp at line 6, boost/xpressive/traits/null_regex_traits.hpp at line 9, boost/xpressive/xpressive.hpp at line 8, boost/xpressive/xpressive_dynamic.hpp at line 7, boost/xpressive/xpressive_fwd.hpp at line 7, boost/xpressive/xpressive_static.hpp at line 8, boost/xpressive/xpressive_typeof.hpp at line 7
- License text:
- // Copyright 2008 Eric Niebler. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/proto/args.hpp [6:8]
- boost/proto/context.hpp [5:7]
- boost/proto/context/callable.hpp [9:11]
- boost/proto/context/default.hpp [7:9]
- boost/proto/context/null.hpp [7:9]
- boost/proto/core.hpp [6:8]
- boost/proto/debug.hpp [5:7]
- boost/proto/deep_copy.hpp [5:7]
- boost/proto/detail/as_lvalue.hpp [5:7]
- boost/proto/detail/decltype.hpp [5:7]
- boost/proto/detail/deprecated.hpp [6:8]
- boost/proto/detail/dont_care.hpp [5:7]
- boost/proto/detail/expr_funop.hpp [5:7]
- boost/proto/detail/ignore_unused.hpp [6:8]
- boost/proto/detail/is_noncopyable.hpp [5:7]
- boost/proto/detail/local.hpp [5:7]
- boost/proto/detail/poly_function.hpp [7:9]
- boost/proto/detail/static_const.hpp [5:7]
- boost/proto/domain.hpp [7:9]
- boost/proto/eval.hpp [5:7]
- boost/proto/expr.hpp [5:7]
- boost/proto/extends.hpp [5:7]
- boost/proto/fusion.hpp [5:7]
- boost/proto/generate.hpp [6:8]
- boost/proto/literal.hpp [6:8]
- boost/proto/make_expr.hpp [7:9]
- boost/proto/matches.hpp [6:8]
- boost/proto/operators.hpp [6:8]
- boost/proto/proto.hpp [5:7]
- boost/proto/proto_fwd.hpp [5:7]
- boost/proto/proto_typeof.hpp [6:8]
- boost/proto/repeat.hpp [5:7]
- boost/proto/tags.hpp [5:7]
- boost/proto/traits.hpp [7:9]
- boost/proto/transform.hpp [5:7]
- boost/proto/transform/arg.hpp [5:7]
- boost/proto/transform/call.hpp [5:7]
- boost/proto/transform/default.hpp [6:8]
- boost/proto/transform/fold.hpp [5:7]
- boost/proto/transform/fold_tree.hpp [5:7]
- boost/proto/transform/impl.hpp [5:7]
- boost/proto/transform/lazy.hpp [5:7]
- boost/proto/transform/make.hpp [5:7]
- boost/proto/transform/pass_through.hpp [8:10]
- boost/proto/transform/when.hpp [5:7]
- boost/xpressive/basic_regex.hpp [6:8]
- boost/xpressive/detail/core/access.hpp [4:6]
- boost/xpressive/detail/core/action.hpp [4:6]
- boost/xpressive/detail/core/adaptor.hpp [4:6]
- boost/xpressive/detail/core/finder.hpp [3:5]
- boost/xpressive/detail/core/flow_control.hpp [4:6]
- boost/xpressive/detail/core/icase.hpp [4:6]
- boost/xpressive/detail/core/linker.hpp [4:6]
- boost/xpressive/detail/core/matcher/alternate_end_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/alternate_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/any_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/assert_bol_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/assert_bos_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/assert_eol_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/assert_eos_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/assert_line_base.hpp [4:6]
- boost/xpressive/detail/core/matcher/assert_word_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/attr_begin_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/attr_end_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/charset_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/end_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/epsilon_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/keeper_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/literal_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/logical_newline_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/lookahead_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/lookbehind_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/mark_begin_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/mark_end_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/mark_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/optional_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/posix_charset_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/predicate_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/range_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/regex_byref_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/regex_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/repeat_begin_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/repeat_end_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/set_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/simple_repeat_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/string_matcher.hpp [4:6]
- boost/xpressive/detail/core/matcher/true_matcher.hpp [4:6]
- boost/xpressive/detail/core/matchers.hpp [4:6]
- boost/xpressive/detail/core/optimize.hpp [4:6]
- boost/xpressive/detail/core/peeker.hpp [4:6]
- boost/xpressive/detail/core/quant_style.hpp [4:6]
- boost/xpressive/detail/core/regex_impl.hpp [4:6]
- boost/xpressive/detail/core/results_cache.hpp [4:6]
- boost/xpressive/detail/core/state.hpp [4:6]
- boost/xpressive/detail/core/sub_match_impl.hpp [4:6]
- boost/xpressive/detail/core/sub_match_vector.hpp [4:6]
- boost/xpressive/detail/detail_fwd.hpp [4:6]
- boost/xpressive/detail/dynamic/dynamic.hpp [4:6]
- boost/xpressive/detail/dynamic/matchable.hpp [4:6]
- boost/xpressive/detail/dynamic/parse_charset.hpp [4:6]
- boost/xpressive/detail/dynamic/parser.hpp [6:8]
- boost/xpressive/detail/dynamic/parser_enum.hpp [4:6]
- boost/xpressive/detail/dynamic/parser_traits.hpp [4:6]
- boost/xpressive/detail/dynamic/sequence.hpp [4:6]
- boost/xpressive/detail/static/compile.hpp [4:6]
- boost/xpressive/detail/static/grammar.hpp [4:6]
- boost/xpressive/detail/static/is_pure.hpp [4:6]
- boost/xpressive/detail/static/modifier.hpp [4:6]
- boost/xpressive/detail/static/placeholders.hpp [4:6]
- boost/xpressive/detail/static/static.hpp [4:6]
- boost/xpressive/detail/static/transforms/as_alternate.hpp [4:6]
- boost/xpressive/detail/static/transforms/as_independent.hpp [4:6]
- boost/xpressive/detail/static/transforms/as_inverse.hpp [4:6]
- boost/xpressive/detail/static/transforms/as_marker.hpp [4:6]
- boost/xpressive/detail/static/transforms/as_matcher.hpp [4:6]
- boost/xpressive/detail/static/transforms/as_modifier.hpp [4:6]
- boost/xpressive/detail/static/transforms/as_quantifier.hpp [4:6]
- boost/xpressive/detail/static/transforms/as_sequence.hpp [4:6]
- boost/xpressive/detail/static/transforms/as_set.hpp [4:6]
- boost/xpressive/detail/static/transmogrify.hpp [4:6]
- boost/xpressive/detail/static/type_traits.hpp [4:6]
- boost/xpressive/detail/static/visitor.hpp [4:6]
- boost/xpressive/detail/static/width_of.hpp [4:6]
- boost/xpressive/detail/utility/algorithm.hpp [4:6]
- boost/xpressive/detail/utility/any.hpp [4:6]
- boost/xpressive/detail/utility/boyer_moore.hpp [7:9]
- boost/xpressive/detail/utility/chset/chset.hpp [4:6]
- boost/xpressive/detail/utility/cons.hpp [4:6]
- boost/xpressive/detail/utility/dont_care.hpp [4:6]
- boost/xpressive/detail/utility/hash_peek_bitset.hpp [4:6]
- boost/xpressive/detail/utility/ignore_unused.hpp [4:6]
- boost/xpressive/detail/utility/literals.hpp [4:6]
- boost/xpressive/detail/utility/never_true.hpp [4:6]
- boost/xpressive/detail/utility/save_restore.hpp [4:6]
- boost/xpressive/detail/utility/sequence_stack.hpp [4:6]
- boost/xpressive/detail/utility/tracking_ptr.hpp [4:6]
- boost/xpressive/detail/utility/traits_utils.hpp [4:6]
- boost/xpressive/detail/utility/width.hpp [4:6]
- boost/xpressive/match_results.hpp [7:9]
- boost/xpressive/regex_actions.hpp [5:7]
- boost/xpressive/regex_algorithms.hpp [5:7]
- boost/xpressive/regex_compiler.hpp [6:8]
- boost/xpressive/regex_constants.hpp [6:8]
- boost/xpressive/regex_error.hpp [5:7]
- boost/xpressive/regex_iterator.hpp [6:8]
- boost/xpressive/regex_primitives.hpp [5:7]
- boost/xpressive/regex_token_iterator.hpp [6:8]
- boost/xpressive/regex_traits.hpp [6:8]
- boost/xpressive/sub_match.hpp [6:8]
- boost/xpressive/traits/c_regex_traits.hpp [7:9]
- boost/xpressive/traits/cpp_regex_traits.hpp [7:9]
- boost/xpressive/traits/detail/c_ctype.hpp [4:6]
- boost/xpressive/traits/null_regex_traits.hpp [7:9]
- boost/xpressive/xpressive.hpp [6:8]
- boost/xpressive/xpressive_dynamic.hpp [5:7]
- boost/xpressive/xpressive_fwd.hpp [5:7]
- boost/xpressive/xpressive_static.hpp [6:8]
- boost/xpressive/xpressive_typeof.hpp [5:7]
-
-KEEP BSL-1.0 59b97879dbe85145abb5fd7c850cbd1e
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/detail/collection_traits.hpp at line 15
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/range/detail/collection_traits.hpp [13:16]
-
-KEEP BSL-1.0 59bff4c0e4760c67aaf640952b9691ab
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/detail/advanced_insert_int.hpp at line 5, boost/container/detail/variadic_templates_tools.hpp at line 5, boost/container/node_allocator.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2008-2013. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/container/detail/advanced_insert_int.hpp [3:5]
- boost/container/detail/variadic_templates_tools.hpp [3:5]
- boost/container/node_allocator.hpp [3:5]
-
-KEEP BSL-1.0 59e0ba9e4e0ad69ac0e39991a0f51a81
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/core/noncopyable.hpp at line 5
- License text:
- // (C) Copyright Beman Dawes 1999-2003. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/core/noncopyable.hpp [3:5]
-
-KEEP BSL-1.0 59f772b611d1719332041cf35a9361d2
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/adaptor/define_adaptor.hpp at line 5, boost/range/adaptor/type_erased.hpp at line 5, boost/range/any_range.hpp at line 3, boost/range/combine.hpp at line 3, boost/range/counting_range.hpp at line 3, boost/range/detail/any_iterator.hpp at line 5, boost/range/detail/any_iterator_buffer.hpp at line 5, boost/range/detail/any_iterator_interface.hpp at line 5, boost/range/detail/any_iterator_wrapper.hpp at line 5, boost/range/has_range_iterator.hpp at line 5, boost/range/irange.hpp at line 5, boost/range/istream_range.hpp at line 3
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/range/adaptor/define_adaptor.hpp [3:6]
- boost/range/adaptor/type_erased.hpp [3:6]
- boost/range/any_range.hpp [1:4]
- boost/range/combine.hpp [1:4]
- boost/range/counting_range.hpp [1:4]
- boost/range/detail/any_iterator.hpp [3:6]
- boost/range/detail/any_iterator_buffer.hpp [3:6]
- boost/range/detail/any_iterator_interface.hpp [3:6]
- boost/range/detail/any_iterator_wrapper.hpp [3:6]
- boost/range/has_range_iterator.hpp [3:6]
- boost/range/irange.hpp [3:6]
- boost/range/istream_range.hpp [1:4]
-
-KEEP BSL-1.0 5a00611854a32f9db24177ae4dd00807
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/framework/accumulators/value_accumulator.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/accumulators/framework/accumulators/value_accumulator.hpp [4:6]
-
-KEEP BSL-1.0 5a63de69aa56c81fb958a32053feb9c1
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/msm/mpl_graph/adjacency_list_graph.hpp at line 3, boost/msm/mpl_graph/breadth_first_search.hpp at line 3, boost/msm/mpl_graph/depth_first_search.hpp at line 3, boost/msm/mpl_graph/detail/adjacency_list_graph.ipp at line 3, boost/msm/mpl_graph/detail/graph_implementation_interface.ipp at line 3, boost/msm/mpl_graph/detail/incidence_list_graph.ipp at line 3, boost/msm/mpl_graph/incidence_list_graph.hpp at line 3, boost/msm/mpl_graph/mpl_graph.hpp at line 3, boost/msm/mpl_graph/mpl_utils.hpp at line 3, boost/msm/mpl_graph/search_colors.hpp at line 3
- License text:
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/msm/mpl_graph/adjacency_list_graph.hpp [2:3]
- boost/msm/mpl_graph/breadth_first_search.hpp [2:3]
- boost/msm/mpl_graph/depth_first_search.hpp [2:3]
- boost/msm/mpl_graph/detail/adjacency_list_graph.ipp [2:3]
- boost/msm/mpl_graph/detail/graph_implementation_interface.ipp [2:3]
- boost/msm/mpl_graph/detail/incidence_list_graph.ipp [2:3]
- boost/msm/mpl_graph/incidence_list_graph.hpp [2:3]
- boost/msm/mpl_graph/mpl_graph.hpp [2:3]
- boost/msm/mpl_graph/mpl_utils.hpp [2:3]
- boost/msm/mpl_graph/search_colors.hpp [2:3]
-
-KEEP BSL-1.0 5cd4044c79f85aa40c2edd653c1d76f4
-BELONGS ya.make
- License text:
- (http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 44.00
- Match type : REFERENCE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/align/align.hpp [6:6]
- boost/align/align_down.hpp [6:6]
- boost/align/align_up.hpp [6:6]
- boost/align/alignment_of.hpp [6:6]
- boost/align/alignment_of_forward.hpp [6:6]
- boost/align/detail/addressof.hpp [6:6]
- boost/align/detail/align.hpp [6:6]
- boost/align/detail/align_cxx11.hpp [6:6]
- boost/align/detail/align_down.hpp [6:6]
- boost/align/detail/align_up.hpp [6:6]
- boost/align/detail/alignment_of.hpp [6:6]
- boost/align/detail/alignment_of_clang.hpp [6:6]
- boost/align/detail/alignment_of_codegear.hpp [6:6]
- boost/align/detail/alignment_of_cxx11.hpp [6:6]
- boost/align/detail/alignment_of_gcc.hpp [6:6]
- boost/align/detail/alignment_of_msvc.hpp [6:6]
- boost/align/detail/element_type.hpp [6:6]
- boost/align/detail/integral_constant.hpp [6:6]
- boost/align/detail/is_alignment.hpp [6:6]
- boost/align/detail/is_alignment_constant.hpp [6:6]
- boost/align/detail/max_align.hpp [6:6]
- boost/align/detail/max_objects.hpp [6:6]
- boost/align/detail/max_size.hpp [6:6]
- boost/align/detail/min_size.hpp [6:6]
- boost/core/pointer_traits.hpp [6:6]
- boost/make_unique.hpp [6:6]
- boost/smart_ptr/allocate_local_shared_array.hpp [6:6]
- boost/smart_ptr/make_local_shared_array.hpp [7:7]
- boost/smart_ptr/make_shared_array.hpp [6:6]
- boost/smart_ptr/make_unique.hpp [6:6]
-
-KEEP BSL-1.0 5d3f4e3a463155508087e87bdaed167f
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/bind/mem_fn_vw.hpp at line 9
- License text:
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/bind/mem_fn_vw.hpp [8:10]
-
-KEEP BSL-1.0 5e86ae8795e27b0044f152917a08e65a
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/random/additive_combine.hpp at line 5, boost/random/bernoulli_distribution.hpp at line 6, boost/random/cauchy_distribution.hpp at line 5, boost/random/detail/const_mod.hpp at line 5, boost/random/discard_block.hpp at line 6, boost/random/exponential_distribution.hpp at line 7, boost/random/geometric_distribution.hpp at line 6, boost/random/inversive_congruential.hpp at line 5, boost/random/lagged_fibonacci.hpp at line 5, boost/random/linear_congruential.hpp at line 5, boost/random/lognormal_distribution.hpp at line 6, boost/random/mersenne_twister.hpp at line 6, boost/random/normal_distribution.hpp at line 6, boost/random/random_number_generator.hpp at line 5, boost/random/ranlux.hpp at line 5, boost/random/shuffle_output.hpp at line 5, boost/random/subtract_with_carry.hpp at line 5, boost/random/triangle_distribution.hpp at line 6, boost/random/uniform_01.hpp at line 5, boost/random/uniform_int.hpp at line 5, boost/random/uniform_int_distribution.hpp at line 6, boost/random/uniform_on_sphere.hpp at line 6, boost/random/uniform_real.hpp at line 5, boost/random/uniform_smallint.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 92.11
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/random/additive_combine.hpp [4:12]
- boost/random/bernoulli_distribution.hpp [5:13]
- boost/random/cauchy_distribution.hpp [4:12]
- boost/random/detail/const_mod.hpp [4:12]
- boost/random/discard_block.hpp [5:13]
- boost/random/exponential_distribution.hpp [6:14]
- boost/random/geometric_distribution.hpp [5:13]
- boost/random/inversive_congruential.hpp [4:12]
- boost/random/lagged_fibonacci.hpp [4:12]
- boost/random/linear_congruential.hpp [4:12]
- boost/random/lognormal_distribution.hpp [5:13]
- boost/random/mersenne_twister.hpp [5:13]
- boost/random/normal_distribution.hpp [5:13]
- boost/random/random_number_generator.hpp [4:12]
- boost/random/ranlux.hpp [4:12]
- boost/random/shuffle_output.hpp [4:12]
- boost/random/subtract_with_carry.hpp [4:12]
- boost/random/triangle_distribution.hpp [5:13]
- boost/random/uniform_01.hpp [4:12]
- boost/random/uniform_int.hpp [4:12]
- boost/random/uniform_int_distribution.hpp [5:13]
- boost/random/uniform_on_sphere.hpp [5:13]
- boost/random/uniform_real.hpp [4:12]
- boost/random/uniform_smallint.hpp [4:12]
-
-KEEP BSL-1.0 5f5f9a893ece810d87b5e28ea7075229
-BELONGS ya.make
- License text:
- * \license Boost Software License 1.0
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : REFERENCE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/serialization/bitset.hpp [8:8]
-
-KEEP BSL-1.0 62881692e33fda8a4e634744b528c964
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/detail/collection_traits.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/range/detail/collection_traits.hpp [3:6]
-
-KEEP BSL-1.0 640497c5c0981032c5f90f36d23a054d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/local_function/detail/preprocessor/void_list.hpp at line 4, boost/scope_exit.hpp at line 5
- License text:
- // Distributed under the Boost Software License, Version 1.0
- // (see accompanying file LICENSE_1_0.txt or a copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/local_function/detail/preprocessor/void_list.hpp [3:5]
- boost/scope_exit.hpp [4:6]
-
-KEEP BSL-1.0 6412456b52d8f0c4f1bb7dcb4002993d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_20.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_30.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_40.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_50.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_20.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_30.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_40.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_50.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_20.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_30.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_40.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_50.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_20.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_30.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_40.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_50.hpp at line 5
- License text:
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_20.hpp [4:5]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_30.hpp [4:5]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_40.hpp [4:5]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_50.hpp [4:5]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_20.hpp [4:5]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_30.hpp [4:5]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_40.hpp [4:5]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_50.hpp [4:5]
- boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_20.hpp [4:5]
- boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_30.hpp [4:5]
- boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_40.hpp [4:5]
- boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_50.hpp [4:5]
- boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_20.hpp [4:5]
- boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_30.hpp [4:5]
- boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_40.hpp [4:5]
- boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_50.hpp [4:5]
-
-KEEP BSL-1.0 64cda77ac5c375c937ec6f7ef224550d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/spirit/home/classic/core/composite/impl/alternative.ipp at line 8, boost/spirit/home/classic/core/composite/impl/difference.ipp at line 8, boost/spirit/home/classic/core/composite/impl/directives.ipp at line 9, boost/spirit/home/classic/core/composite/impl/exclusive_or.ipp at line 8, boost/spirit/home/classic/core/composite/impl/intersection.ipp at line 8, boost/spirit/home/classic/core/composite/impl/kleene_star.ipp at line 8, boost/spirit/home/classic/core/composite/impl/list.ipp at line 8, boost/spirit/home/classic/core/composite/impl/optional.ipp at line 8, boost/spirit/home/classic/core/composite/impl/positive.ipp at line 8, boost/spirit/home/classic/core/composite/impl/sequence.ipp at line 8, boost/spirit/home/classic/core/composite/impl/sequential_and.ipp at line 8, boost/spirit/home/classic/core/composite/impl/sequential_or.ipp at line 8, boost/spirit/home/classic/core/impl/match.ipp at line 6, boost/spirit/home/classic/core/impl/match_attr_traits.ipp at line 6, boost/spirit/home/classic/core/impl/parser.ipp at line 6, boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp at line 8, boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp at line 7, boost/spirit/home/classic/core/non_terminal/impl/rule.ipp at line 6, boost/spirit/home/classic/core/non_terminal/impl/subrule.ipp at line 7, boost/spirit/home/classic/core/primitives/impl/numerics.ipp at line 7, boost/spirit/home/classic/core/primitives/impl/primitives.ipp at line 7, boost/spirit/home/classic/core/scanner/impl/skipper.ipp at line 6, boost/spirit/home/classic/debug/impl/parser_names.ipp at line 7, boost/spirit/home/classic/dynamic/impl/conditions.ipp at line 6, boost/spirit/home/classic/dynamic/impl/select.ipp at line 6, boost/spirit/home/classic/dynamic/impl/switch.ipp at line 6, boost/spirit/home/classic/error_handling/impl/exceptions.ipp at line 6, boost/spirit/home/classic/iterator/impl/file_iterator.ipp at line 8, boost/spirit/home/classic/iterator/impl/position_iterator.ipp at line 8, boost/spirit/home/classic/meta/impl/fundamental.ipp at line 6, boost/spirit/home/classic/meta/impl/parser_traits.ipp at line 8, boost/spirit/home/classic/meta/impl/refactoring.ipp at line 6, boost/spirit/home/classic/meta/impl/traverse.ipp at line 7, boost/spirit/home/classic/symbols/impl/symbols.ipp at line 6, boost/spirit/home/classic/symbols/impl/tst.ipp at line 6, boost/spirit/home/classic/tree/impl/parse_tree_utils.ipp at line 7, boost/spirit/home/classic/tree/impl/tree_to_xml.ipp at line 7, boost/spirit/home/classic/utility/impl/chset.ipp at line 7, boost/spirit/home/classic/utility/impl/chset/basic_chset.ipp at line 7, boost/spirit/home/classic/utility/impl/chset/range_run.ipp at line 6, boost/spirit/home/classic/utility/impl/chset_operators.ipp at line 6, boost/spirit/home/classic/utility/impl/confix.ipp at line 6, boost/spirit/home/classic/utility/impl/escape_char.ipp at line 7, boost/spirit/home/classic/utility/impl/lists.ipp at line 6, boost/spirit/home/classic/utility/impl/regex.ipp at line 6, boost/utility/binary.hpp at line 5, boost/xpressive/detail/utility/chset/basic_chset.hpp at line 7, boost/xpressive/detail/utility/chset/basic_chset.ipp at line 7, boost/xpressive/detail/utility/chset/range_run.hpp at line 6, boost/xpressive/detail/utility/chset/range_run.ipp at line 6
- License text:
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/spirit/home/classic/core/composite/impl/alternative.ipp [7:9]
- boost/spirit/home/classic/core/composite/impl/difference.ipp [7:9]
- boost/spirit/home/classic/core/composite/impl/directives.ipp [8:10]
- boost/spirit/home/classic/core/composite/impl/exclusive_or.ipp [7:9]
- boost/spirit/home/classic/core/composite/impl/intersection.ipp [7:9]
- boost/spirit/home/classic/core/composite/impl/kleene_star.ipp [7:9]
- boost/spirit/home/classic/core/composite/impl/list.ipp [7:9]
- boost/spirit/home/classic/core/composite/impl/optional.ipp [7:9]
- boost/spirit/home/classic/core/composite/impl/positive.ipp [7:9]
- boost/spirit/home/classic/core/composite/impl/sequence.ipp [7:9]
- boost/spirit/home/classic/core/composite/impl/sequential_and.ipp [7:9]
- boost/spirit/home/classic/core/composite/impl/sequential_or.ipp [7:9]
- boost/spirit/home/classic/core/impl/match.ipp [5:7]
- boost/spirit/home/classic/core/impl/match_attr_traits.ipp [5:7]
- boost/spirit/home/classic/core/impl/parser.ipp [5:7]
- boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp [7:9]
- boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp [6:8]
- boost/spirit/home/classic/core/non_terminal/impl/rule.ipp [5:7]
- boost/spirit/home/classic/core/non_terminal/impl/subrule.ipp [6:8]
- boost/spirit/home/classic/core/primitives/impl/numerics.ipp [6:8]
- boost/spirit/home/classic/core/primitives/impl/primitives.ipp [6:8]
- boost/spirit/home/classic/core/scanner/impl/skipper.ipp [5:7]
- boost/spirit/home/classic/debug/impl/parser_names.ipp [6:8]
- boost/spirit/home/classic/dynamic/impl/conditions.ipp [5:7]
- boost/spirit/home/classic/dynamic/impl/select.ipp [5:7]
- boost/spirit/home/classic/dynamic/impl/switch.ipp [5:7]
- boost/spirit/home/classic/error_handling/impl/exceptions.ipp [5:7]
- boost/spirit/home/classic/iterator/impl/file_iterator.ipp [7:9]
- boost/spirit/home/classic/iterator/impl/position_iterator.ipp [7:9]
- boost/spirit/home/classic/meta/impl/fundamental.ipp [5:7]
- boost/spirit/home/classic/meta/impl/parser_traits.ipp [7:9]
- boost/spirit/home/classic/meta/impl/refactoring.ipp [5:7]
- boost/spirit/home/classic/meta/impl/traverse.ipp [6:8]
- boost/spirit/home/classic/symbols/impl/symbols.ipp [5:7]
- boost/spirit/home/classic/symbols/impl/tst.ipp [5:7]
- boost/spirit/home/classic/tree/impl/parse_tree_utils.ipp [6:8]
- boost/spirit/home/classic/tree/impl/tree_to_xml.ipp [6:8]
- boost/spirit/home/classic/utility/impl/chset.ipp [6:8]
- boost/spirit/home/classic/utility/impl/chset/basic_chset.ipp [6:8]
- boost/spirit/home/classic/utility/impl/chset/range_run.ipp [5:7]
- boost/spirit/home/classic/utility/impl/chset_operators.ipp [5:7]
- boost/spirit/home/classic/utility/impl/confix.ipp [5:7]
- boost/spirit/home/classic/utility/impl/escape_char.ipp [6:8]
- boost/spirit/home/classic/utility/impl/lists.ipp [5:7]
- boost/spirit/home/classic/utility/impl/regex.ipp [5:7]
- boost/utility/binary.hpp [4:6]
- boost/xpressive/detail/utility/chset/basic_chset.hpp [6:8]
- boost/xpressive/detail/utility/chset/basic_chset.ipp [6:8]
- boost/xpressive/detail/utility/chset/range_run.hpp [5:7]
- boost/xpressive/detail/utility/chset/range_run.ipp [5:7]
-
-KEEP BSL-1.0 656ec37923a70b65b2e26f2b21cdb51b
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/p_square_cumul_dist.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/accumulators/statistics/p_square_cumul_dist.hpp [4:6]
-
-KEEP BSL-1.0 65724380ee1601b28f0db6323a0ad006
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/math/quadrature/naive_monte_carlo.hpp at line 5, boost/math/quadrature/trapezoidal.hpp at line 5, boost/regex/config.hpp at line 8, boost/regex/v4/char_regex_traits.hpp at line 8, boost/regex/v4/cregex.hpp at line 8, boost/regex/v4/error_type.hpp at line 8, boost/regex/v4/instances.hpp at line 8, boost/regex/v4/regex_traits_defaults.hpp at line 8
- License text:
+ // (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/msm/mpl_graph/adjacency_list_graph.hpp [2:3]
+ boost/msm/mpl_graph/breadth_first_search.hpp [2:3]
+ boost/msm/mpl_graph/depth_first_search.hpp [2:3]
+ boost/msm/mpl_graph/detail/adjacency_list_graph.ipp [2:3]
+ boost/msm/mpl_graph/detail/graph_implementation_interface.ipp [2:3]
+ boost/msm/mpl_graph/detail/incidence_list_graph.ipp [2:3]
+ boost/msm/mpl_graph/incidence_list_graph.hpp [2:3]
+ boost/msm/mpl_graph/mpl_graph.hpp [2:3]
+ boost/msm/mpl_graph/mpl_utils.hpp [2:3]
+ boost/msm/mpl_graph/search_colors.hpp [2:3]
+
+KEEP BSL-1.0 5cd4044c79f85aa40c2edd653c1d76f4
+BELONGS ya.make
+ License text:
+ (http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 44.00
+ Match type : REFERENCE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/align/align.hpp [6:6]
+ boost/align/align_down.hpp [6:6]
+ boost/align/align_up.hpp [6:6]
+ boost/align/alignment_of.hpp [6:6]
+ boost/align/alignment_of_forward.hpp [6:6]
+ boost/align/detail/addressof.hpp [6:6]
+ boost/align/detail/align.hpp [6:6]
+ boost/align/detail/align_cxx11.hpp [6:6]
+ boost/align/detail/align_down.hpp [6:6]
+ boost/align/detail/align_up.hpp [6:6]
+ boost/align/detail/alignment_of.hpp [6:6]
+ boost/align/detail/alignment_of_clang.hpp [6:6]
+ boost/align/detail/alignment_of_codegear.hpp [6:6]
+ boost/align/detail/alignment_of_cxx11.hpp [6:6]
+ boost/align/detail/alignment_of_gcc.hpp [6:6]
+ boost/align/detail/alignment_of_msvc.hpp [6:6]
+ boost/align/detail/element_type.hpp [6:6]
+ boost/align/detail/integral_constant.hpp [6:6]
+ boost/align/detail/is_alignment.hpp [6:6]
+ boost/align/detail/is_alignment_constant.hpp [6:6]
+ boost/align/detail/max_align.hpp [6:6]
+ boost/align/detail/max_objects.hpp [6:6]
+ boost/align/detail/max_size.hpp [6:6]
+ boost/align/detail/min_size.hpp [6:6]
+ boost/core/pointer_traits.hpp [6:6]
+ boost/make_unique.hpp [6:6]
+ boost/smart_ptr/allocate_local_shared_array.hpp [6:6]
+ boost/smart_ptr/make_local_shared_array.hpp [7:7]
+ boost/smart_ptr/make_shared_array.hpp [6:6]
+ boost/smart_ptr/make_unique.hpp [6:6]
+
+KEEP BSL-1.0 5d3f4e3a463155508087e87bdaed167f
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/bind/mem_fn_vw.hpp at line 9
+ License text:
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/bind/mem_fn_vw.hpp [8:10]
+
+KEEP BSL-1.0 5e86ae8795e27b0044f152917a08e65a
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/random/additive_combine.hpp at line 5, boost/random/bernoulli_distribution.hpp at line 6, boost/random/cauchy_distribution.hpp at line 5, boost/random/detail/const_mod.hpp at line 5, boost/random/discard_block.hpp at line 6, boost/random/exponential_distribution.hpp at line 7, boost/random/geometric_distribution.hpp at line 6, boost/random/inversive_congruential.hpp at line 5, boost/random/lagged_fibonacci.hpp at line 5, boost/random/linear_congruential.hpp at line 5, boost/random/lognormal_distribution.hpp at line 6, boost/random/mersenne_twister.hpp at line 6, boost/random/normal_distribution.hpp at line 6, boost/random/random_number_generator.hpp at line 5, boost/random/ranlux.hpp at line 5, boost/random/shuffle_output.hpp at line 5, boost/random/subtract_with_carry.hpp at line 5, boost/random/triangle_distribution.hpp at line 6, boost/random/uniform_01.hpp at line 5, boost/random/uniform_int.hpp at line 5, boost/random/uniform_int_distribution.hpp at line 6, boost/random/uniform_on_sphere.hpp at line 6, boost/random/uniform_real.hpp at line 5, boost/random/uniform_smallint.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 92.11
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/random/additive_combine.hpp [4:12]
+ boost/random/bernoulli_distribution.hpp [5:13]
+ boost/random/cauchy_distribution.hpp [4:12]
+ boost/random/detail/const_mod.hpp [4:12]
+ boost/random/discard_block.hpp [5:13]
+ boost/random/exponential_distribution.hpp [6:14]
+ boost/random/geometric_distribution.hpp [5:13]
+ boost/random/inversive_congruential.hpp [4:12]
+ boost/random/lagged_fibonacci.hpp [4:12]
+ boost/random/linear_congruential.hpp [4:12]
+ boost/random/lognormal_distribution.hpp [5:13]
+ boost/random/mersenne_twister.hpp [5:13]
+ boost/random/normal_distribution.hpp [5:13]
+ boost/random/random_number_generator.hpp [4:12]
+ boost/random/ranlux.hpp [4:12]
+ boost/random/shuffle_output.hpp [4:12]
+ boost/random/subtract_with_carry.hpp [4:12]
+ boost/random/triangle_distribution.hpp [5:13]
+ boost/random/uniform_01.hpp [4:12]
+ boost/random/uniform_int.hpp [4:12]
+ boost/random/uniform_int_distribution.hpp [5:13]
+ boost/random/uniform_on_sphere.hpp [5:13]
+ boost/random/uniform_real.hpp [4:12]
+ boost/random/uniform_smallint.hpp [4:12]
+
+KEEP BSL-1.0 5f5f9a893ece810d87b5e28ea7075229
+BELONGS ya.make
+ License text:
+ * \license Boost Software License 1.0
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : REFERENCE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/serialization/bitset.hpp [8:8]
+
+KEEP BSL-1.0 62881692e33fda8a4e634744b528c964
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/detail/collection_traits.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/range/detail/collection_traits.hpp [3:6]
+
+KEEP BSL-1.0 640497c5c0981032c5f90f36d23a054d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/local_function/detail/preprocessor/void_list.hpp at line 4, boost/scope_exit.hpp at line 5
+ License text:
+ // Distributed under the Boost Software License, Version 1.0
+ // (see accompanying file LICENSE_1_0.txt or a copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/local_function/detail/preprocessor/void_list.hpp [3:5]
+ boost/scope_exit.hpp [4:6]
+
+KEEP BSL-1.0 6412456b52d8f0c4f1bb7dcb4002993d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_20.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_30.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_40.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_50.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_20.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_30.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_40.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_50.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_20.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_30.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_40.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_50.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_20.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_30.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_40.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_50.hpp at line 5
+ License text:
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_20.hpp [4:5]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_30.hpp [4:5]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_40.hpp [4:5]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_50.hpp [4:5]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_20.hpp [4:5]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_30.hpp [4:5]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_40.hpp [4:5]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_50.hpp [4:5]
+ boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_20.hpp [4:5]
+ boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_30.hpp [4:5]
+ boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_40.hpp [4:5]
+ boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_50.hpp [4:5]
+ boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_20.hpp [4:5]
+ boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_30.hpp [4:5]
+ boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_40.hpp [4:5]
+ boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_50.hpp [4:5]
+
+KEEP BSL-1.0 64cda77ac5c375c937ec6f7ef224550d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/spirit/home/classic/core/composite/impl/alternative.ipp at line 8, boost/spirit/home/classic/core/composite/impl/difference.ipp at line 8, boost/spirit/home/classic/core/composite/impl/directives.ipp at line 9, boost/spirit/home/classic/core/composite/impl/exclusive_or.ipp at line 8, boost/spirit/home/classic/core/composite/impl/intersection.ipp at line 8, boost/spirit/home/classic/core/composite/impl/kleene_star.ipp at line 8, boost/spirit/home/classic/core/composite/impl/list.ipp at line 8, boost/spirit/home/classic/core/composite/impl/optional.ipp at line 8, boost/spirit/home/classic/core/composite/impl/positive.ipp at line 8, boost/spirit/home/classic/core/composite/impl/sequence.ipp at line 8, boost/spirit/home/classic/core/composite/impl/sequential_and.ipp at line 8, boost/spirit/home/classic/core/composite/impl/sequential_or.ipp at line 8, boost/spirit/home/classic/core/impl/match.ipp at line 6, boost/spirit/home/classic/core/impl/match_attr_traits.ipp at line 6, boost/spirit/home/classic/core/impl/parser.ipp at line 6, boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp at line 8, boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp at line 7, boost/spirit/home/classic/core/non_terminal/impl/rule.ipp at line 6, boost/spirit/home/classic/core/non_terminal/impl/subrule.ipp at line 7, boost/spirit/home/classic/core/primitives/impl/numerics.ipp at line 7, boost/spirit/home/classic/core/primitives/impl/primitives.ipp at line 7, boost/spirit/home/classic/core/scanner/impl/skipper.ipp at line 6, boost/spirit/home/classic/debug/impl/parser_names.ipp at line 7, boost/spirit/home/classic/dynamic/impl/conditions.ipp at line 6, boost/spirit/home/classic/dynamic/impl/select.ipp at line 6, boost/spirit/home/classic/dynamic/impl/switch.ipp at line 6, boost/spirit/home/classic/error_handling/impl/exceptions.ipp at line 6, boost/spirit/home/classic/iterator/impl/file_iterator.ipp at line 8, boost/spirit/home/classic/iterator/impl/position_iterator.ipp at line 8, boost/spirit/home/classic/meta/impl/fundamental.ipp at line 6, boost/spirit/home/classic/meta/impl/parser_traits.ipp at line 8, boost/spirit/home/classic/meta/impl/refactoring.ipp at line 6, boost/spirit/home/classic/meta/impl/traverse.ipp at line 7, boost/spirit/home/classic/symbols/impl/symbols.ipp at line 6, boost/spirit/home/classic/symbols/impl/tst.ipp at line 6, boost/spirit/home/classic/tree/impl/parse_tree_utils.ipp at line 7, boost/spirit/home/classic/tree/impl/tree_to_xml.ipp at line 7, boost/spirit/home/classic/utility/impl/chset.ipp at line 7, boost/spirit/home/classic/utility/impl/chset/basic_chset.ipp at line 7, boost/spirit/home/classic/utility/impl/chset/range_run.ipp at line 6, boost/spirit/home/classic/utility/impl/chset_operators.ipp at line 6, boost/spirit/home/classic/utility/impl/confix.ipp at line 6, boost/spirit/home/classic/utility/impl/escape_char.ipp at line 7, boost/spirit/home/classic/utility/impl/lists.ipp at line 6, boost/spirit/home/classic/utility/impl/regex.ipp at line 6, boost/utility/binary.hpp at line 5, boost/xpressive/detail/utility/chset/basic_chset.hpp at line 7, boost/xpressive/detail/utility/chset/basic_chset.ipp at line 7, boost/xpressive/detail/utility/chset/range_run.hpp at line 6, boost/xpressive/detail/utility/chset/range_run.ipp at line 6
+ License text:
+ Use, modification and distribution is subject to the Boost Software
+ License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/spirit/home/classic/core/composite/impl/alternative.ipp [7:9]
+ boost/spirit/home/classic/core/composite/impl/difference.ipp [7:9]
+ boost/spirit/home/classic/core/composite/impl/directives.ipp [8:10]
+ boost/spirit/home/classic/core/composite/impl/exclusive_or.ipp [7:9]
+ boost/spirit/home/classic/core/composite/impl/intersection.ipp [7:9]
+ boost/spirit/home/classic/core/composite/impl/kleene_star.ipp [7:9]
+ boost/spirit/home/classic/core/composite/impl/list.ipp [7:9]
+ boost/spirit/home/classic/core/composite/impl/optional.ipp [7:9]
+ boost/spirit/home/classic/core/composite/impl/positive.ipp [7:9]
+ boost/spirit/home/classic/core/composite/impl/sequence.ipp [7:9]
+ boost/spirit/home/classic/core/composite/impl/sequential_and.ipp [7:9]
+ boost/spirit/home/classic/core/composite/impl/sequential_or.ipp [7:9]
+ boost/spirit/home/classic/core/impl/match.ipp [5:7]
+ boost/spirit/home/classic/core/impl/match_attr_traits.ipp [5:7]
+ boost/spirit/home/classic/core/impl/parser.ipp [5:7]
+ boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp [7:9]
+ boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp [6:8]
+ boost/spirit/home/classic/core/non_terminal/impl/rule.ipp [5:7]
+ boost/spirit/home/classic/core/non_terminal/impl/subrule.ipp [6:8]
+ boost/spirit/home/classic/core/primitives/impl/numerics.ipp [6:8]
+ boost/spirit/home/classic/core/primitives/impl/primitives.ipp [6:8]
+ boost/spirit/home/classic/core/scanner/impl/skipper.ipp [5:7]
+ boost/spirit/home/classic/debug/impl/parser_names.ipp [6:8]
+ boost/spirit/home/classic/dynamic/impl/conditions.ipp [5:7]
+ boost/spirit/home/classic/dynamic/impl/select.ipp [5:7]
+ boost/spirit/home/classic/dynamic/impl/switch.ipp [5:7]
+ boost/spirit/home/classic/error_handling/impl/exceptions.ipp [5:7]
+ boost/spirit/home/classic/iterator/impl/file_iterator.ipp [7:9]
+ boost/spirit/home/classic/iterator/impl/position_iterator.ipp [7:9]
+ boost/spirit/home/classic/meta/impl/fundamental.ipp [5:7]
+ boost/spirit/home/classic/meta/impl/parser_traits.ipp [7:9]
+ boost/spirit/home/classic/meta/impl/refactoring.ipp [5:7]
+ boost/spirit/home/classic/meta/impl/traverse.ipp [6:8]
+ boost/spirit/home/classic/symbols/impl/symbols.ipp [5:7]
+ boost/spirit/home/classic/symbols/impl/tst.ipp [5:7]
+ boost/spirit/home/classic/tree/impl/parse_tree_utils.ipp [6:8]
+ boost/spirit/home/classic/tree/impl/tree_to_xml.ipp [6:8]
+ boost/spirit/home/classic/utility/impl/chset.ipp [6:8]
+ boost/spirit/home/classic/utility/impl/chset/basic_chset.ipp [6:8]
+ boost/spirit/home/classic/utility/impl/chset/range_run.ipp [5:7]
+ boost/spirit/home/classic/utility/impl/chset_operators.ipp [5:7]
+ boost/spirit/home/classic/utility/impl/confix.ipp [5:7]
+ boost/spirit/home/classic/utility/impl/escape_char.ipp [6:8]
+ boost/spirit/home/classic/utility/impl/lists.ipp [5:7]
+ boost/spirit/home/classic/utility/impl/regex.ipp [5:7]
+ boost/utility/binary.hpp [4:6]
+ boost/xpressive/detail/utility/chset/basic_chset.hpp [6:8]
+ boost/xpressive/detail/utility/chset/basic_chset.ipp [6:8]
+ boost/xpressive/detail/utility/chset/range_run.hpp [5:7]
+ boost/xpressive/detail/utility/chset/range_run.ipp [5:7]
+
+KEEP BSL-1.0 656ec37923a70b65b2e26f2b21cdb51b
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/p_square_cumul_dist.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/accumulators/statistics/p_square_cumul_dist.hpp [4:6]
+
+KEEP BSL-1.0 65724380ee1601b28f0db6323a0ad006
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/math/quadrature/naive_monte_carlo.hpp at line 5, boost/math/quadrature/trapezoidal.hpp at line 5, boost/regex/config.hpp at line 8, boost/regex/v4/char_regex_traits.hpp at line 8, boost/regex/v4/cregex.hpp at line 8, boost/regex/v4/error_type.hpp at line 8, boost/regex/v4/instances.hpp at line 8, boost/regex/v4/regex_traits_defaults.hpp at line 8
+ License text:
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/math/quadrature/naive_monte_carlo.hpp [3:5]
+ boost/math/quadrature/trapezoidal.hpp [3:5]
+ boost/regex/config.hpp [6:8]
+ boost/regex/v4/char_regex_traits.hpp [6:8]
+ boost/regex/v4/cregex.hpp [6:8]
+ boost/regex/v4/error_type.hpp [6:8]
+ boost/regex/v4/instances.hpp [6:8]
+ boost/regex/v4/regex_traits_defaults.hpp [6:8]
+
+KEEP BSL-1.0 65901d5d3d32ad3b749311a01a61016f
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/platform/cloudabi.h at line 4
+ License text:
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/predef/platform/cloudabi.h [3:5]
+
+KEEP BSL-1.0 65994368fe8331ee696a2db81b45b669
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/intrusive/pointer_traits.hpp at line 11
+ License text:
+ // (C) Copyright Ion Gaztanaga 2011-2014. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/intrusive/pointer_traits.hpp [9:11]
+
+KEEP BSL-1.0 65c29595096261f1e51b6f0288dd04dd
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/parameter.hpp at line 3
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/parameter.hpp [1:4]
+
+KEEP Zlib 65cdcfa09914055b79725d09bc2f36f2
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: Zlib
+ Score : 92.42
+ Match type : TEXT
+ Links : http://www.gzip.org/zlib/zlib_license.html, http://www.zlib.net/, https://spdx.org/licenses/Zlib
+ Files with this license:
+ boost/beast/core/detail/base64.hpp [18:34]
+
+KEEP BSL-1.0 65e937e8455a3a3eea3fd902b60ef37d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/math_fwd.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/math_fwd.hpp [3:5]
+
+KEEP BSL-1.0 66bc794ea150e32a66fbddbc258d931a
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/experimental/parallel/v2/task_region.hpp at line 8
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/thread/experimental/parallel/v2/task_region.hpp [6:8]
+
+KEEP BSL-1.0 6770682f396d57a247067122271a057b
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/catch_exceptions.hpp at line 5
+ License text:
+ // Copyright Beman Dawes 1995-2001. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/detail/catch_exceptions.hpp [3:5]
+
+KEEP BSL-1.0 67c315f84c9f7fe64ea5034b22a3514e
+BELONGS libs/filesystem/ya.make libs/timer/ya.make
+ License text:
+ // Distributed under the Boost Software License, Version 1.0.
+ // See http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ libs/filesystem/src/codecvt_error_category.cpp [5:6]
+ libs/timer/src/auto_timers_construction.cpp [5:6]
+
+KEEP BSL-1.0 67d6eeedc82fbc62f6f52eb0c128e9e6
+BELONGS libs/container/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/detail/allocator_version_traits.hpp at line 5, boost/container/throw_exception.hpp at line 5, boost/interprocess/sync/detail/common_algorithms.hpp at line 5, libs/container/src/alloc_lib.c at line 5, libs/container/src/dlmalloc.cpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2012-2013. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/container/detail/allocator_version_traits.hpp [3:5]
+ boost/container/throw_exception.hpp [3:5]
+ boost/interprocess/sync/detail/common_algorithms.hpp [3:5]
+ libs/container/src/alloc_lib.c [3:5]
+ libs/container/src/dlmalloc.cpp [3:5]
+
+KEEP BSL-1.0 690c428b6f6c5e3219b8dd9abdb64215
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/move/detail/pointer_element.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2014-2017. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/move/detail/pointer_element.hpp [3:5]
+
+KEEP BSL-1.0 AND BSL-1.0 694ab5306b45aee9eba6e6115bb8593f
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/uuid/detail/random_provider_arc4random.ipp at line 5
+ License text:
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENCE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 85.19
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/uuid/detail/random_provider.hpp [4:6]
+ boost/uuid/detail/random_provider_bcrypt.ipp [4:6]
+ boost/uuid/detail/random_provider_detect_platform.hpp [4:6]
+ boost/uuid/detail/random_provider_getentropy.ipp [4:6]
+ boost/uuid/detail/random_provider_include_platform.hpp [4:6]
+ boost/uuid/entropy_error.hpp [4:6]
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 65.62
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/uuid/detail/random_provider_arc4random.ipp [4:6]
+
+SKIP MPL-1.1 695c14b33a53ff0673eb14307611656b
+BELONGS ya.make
+ License text:
+ //! Given a MPL-style metafunction, `metafunction<f>` is a `Metafunction`
+ Scancode info:
+ Original SPDX id: MPL-1.1
+ Score : 80.00
+ Match type : REFERENCE
+ Links : http://www.mozilla.com/MPL/1.1/index.html, http://www.mozilla.org/MPL/MPL-1.1.html, https://spdx.org/licenses/MPL-1.1
+ Files with this license:
+ boost/hana/fwd/type.hpp [422:422]
+
+KEEP BSL-1.0 6b3c3fd5760f1bb9404086d2d1a83860
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/last_value.hpp at line 5, boost/signals/signal0.hpp at line 5, boost/signals/signal1.hpp at line 5, boost/signals/signal10.hpp at line 5, boost/signals/signal2.hpp at line 5, boost/signals/signal3.hpp at line 5, boost/signals/signal4.hpp at line 5, boost/signals/signal5.hpp at line 5, boost/signals/signal6.hpp at line 5, boost/signals/signal7.hpp at line 5, boost/signals/signal8.hpp at line 5, boost/signals/signal9.hpp at line 5, boost/signals2/last_value.hpp at line 6, boost/visit_each.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/last_value.hpp [3:6]
+ boost/signals/signal0.hpp [3:6]
+ boost/signals/signal1.hpp [3:6]
+ boost/signals/signal10.hpp [3:6]
+ boost/signals/signal2.hpp [3:6]
+ boost/signals/signal3.hpp [3:6]
+ boost/signals/signal4.hpp [3:6]
+ boost/signals/signal5.hpp [3:6]
+ boost/signals/signal6.hpp [3:6]
+ boost/signals/signal7.hpp [3:6]
+ boost/signals/signal8.hpp [3:6]
+ boost/signals/signal9.hpp [3:6]
+ boost/signals2/last_value.hpp [4:7]
+ boost/visit_each.hpp [3:6]
+
+KEEP BSL-1.0 6c55b338a1fa3f5f5d727d2dba9cb631
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/ptr_container/detail/meta_functions.hpp at line 6, boost/ptr_container/ptr_circular_buffer.hpp at line 6, boost/ptr_container/ptr_inserter.hpp at line 6, boost/ptr_container/ptr_unordered_map.hpp at line 6, boost/ptr_container/ptr_unordered_set.hpp at line 6, boost/ptr_container/serialize_ptr_circular_buffer.hpp at line 6, boost/ptr_container/serialize_ptr_unordered_map.hpp at line 6, boost/ptr_container/serialize_ptr_unordered_set.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/ptr_container/detail/meta_functions.hpp [4:7]
+ boost/ptr_container/ptr_circular_buffer.hpp [4:7]
+ boost/ptr_container/ptr_inserter.hpp [4:7]
+ boost/ptr_container/ptr_unordered_map.hpp [4:7]
+ boost/ptr_container/ptr_unordered_set.hpp [4:7]
+ boost/ptr_container/serialize_ptr_circular_buffer.hpp [4:7]
+ boost/ptr_container/serialize_ptr_unordered_map.hpp [4:7]
+ boost/ptr_container/serialize_ptr_unordered_set.hpp [4:7]
+
+KEEP BSL-1.0 6cee195f9161a1b94784d4975695337c
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/is_incrementable.hpp at line 3, boost/indirect_reference.hpp at line 7, boost/pointee.hpp at line 7
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/detail/is_incrementable.hpp [1:3]
+ boost/indirect_reference.hpp [5:7]
+ boost/pointee.hpp [5:7]
+
+KEEP BSL-1.0 6d847ee42ef80ba973b8bd6fff3322e0
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/io_fwd.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/io_fwd.hpp [3:5]
+
+KEEP BSL-1.0 6dd5c9f652ff038348bb42aa68a7164c
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/detail/robust_emulation.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2010-2012. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/interprocess/detail/robust_emulation.hpp [3:5]
+
+KEEP BSL-1.0 6e3b14a26b7c150c6f55f9b939af109f
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/detail/default_ops.hpp at line 4, boost/multiprecision/detail/et_ops.hpp at line 4, boost/multiprecision/detail/generic_interconvert.hpp at line 4, boost/multiprecision/detail/number_base.hpp at line 4, boost/multiprecision/gmp.hpp at line 4, boost/multiprecision/mpfi.hpp at line 4, boost/multiprecision/number.hpp at line 4, boost/multiprecision/tommath.hpp at line 4
+ License text:
+ // Copyright 2011 John Maddock. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/multiprecision/detail/default_ops.hpp [2:4]
+ boost/multiprecision/detail/et_ops.hpp [2:4]
+ boost/multiprecision/detail/generic_interconvert.hpp [2:4]
+ boost/multiprecision/detail/number_base.hpp [2:4]
+ boost/multiprecision/gmp.hpp [2:4]
+ boost/multiprecision/mpfi.hpp [2:4]
+ boost/multiprecision/number.hpp [2:4]
+ boost/multiprecision/tommath.hpp [2:4]
+
+KEEP BSL-1.0 6e9c8d42e61a3e26d6d176e26f813a97
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/rational_adaptor.hpp at line 4
+ License text:
+ // Copyright 2011 John Maddock. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 92.59
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/multiprecision/rational_adaptor.hpp [2:4]
+
+KEEP BSL-1.0 6ebf86a0841782c69f5ccb7da6b4b79d
+BELONGS libs/container/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/detail/block_list.hpp at line 5, boost/container/detail/block_slist.hpp at line 5, boost/container/detail/dispatch_uses_allocator.hpp at line 5, boost/container/detail/dlmalloc.hpp at line 5, boost/container/detail/pool_resource.hpp at line 5, boost/container/pmr/deque.hpp at line 5, boost/container/pmr/flat_map.hpp at line 5, boost/container/pmr/flat_set.hpp at line 5, boost/container/pmr/global_resource.hpp at line 5, boost/container/pmr/list.hpp at line 5, boost/container/pmr/map.hpp at line 5, boost/container/pmr/memory_resource.hpp at line 5, boost/container/pmr/monotonic_buffer_resource.hpp at line 5, boost/container/pmr/polymorphic_allocator.hpp at line 5, boost/container/pmr/pool_options.hpp at line 5, boost/container/pmr/resource_adaptor.hpp at line 5, boost/container/pmr/set.hpp at line 5, boost/container/pmr/slist.hpp at line 5, boost/container/pmr/small_vector.hpp at line 5, boost/container/pmr/stable_vector.hpp at line 5, boost/container/pmr/string.hpp at line 5, boost/container/pmr/synchronized_pool_resource.hpp at line 5, boost/container/pmr/unsynchronized_pool_resource.hpp at line 5, boost/container/pmr/vector.hpp at line 5, boost/container/scoped_allocator_fwd.hpp at line 5, boost/container/small_vector.hpp at line 5, boost/container/uses_allocator_fwd.hpp at line 5, boost/intrusive/detail/tree_value_compare.hpp at line 5, libs/container/src/global_resource.cpp at line 5, libs/container/src/monotonic_buffer_resource.cpp at line 5, libs/container/src/pool_resource.cpp at line 5, libs/container/src/synchronized_pool_resource.cpp at line 5, libs/container/src/unsynchronized_pool_resource.cpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2015-2015. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/container/detail/block_list.hpp [3:5]
+ boost/container/detail/block_slist.hpp [3:5]
+ boost/container/detail/dispatch_uses_allocator.hpp [3:5]
+ boost/container/detail/dlmalloc.hpp [3:5]
+ boost/container/detail/pool_resource.hpp [3:5]
+ boost/container/pmr/deque.hpp [3:5]
+ boost/container/pmr/flat_map.hpp [3:5]
+ boost/container/pmr/flat_set.hpp [3:5]
+ boost/container/pmr/global_resource.hpp [3:5]
+ boost/container/pmr/list.hpp [3:5]
+ boost/container/pmr/map.hpp [3:5]
+ boost/container/pmr/memory_resource.hpp [3:5]
+ boost/container/pmr/monotonic_buffer_resource.hpp [3:5]
+ boost/container/pmr/polymorphic_allocator.hpp [3:5]
+ boost/container/pmr/pool_options.hpp [3:5]
+ boost/container/pmr/resource_adaptor.hpp [3:5]
+ boost/container/pmr/set.hpp [3:5]
+ boost/container/pmr/slist.hpp [3:5]
+ boost/container/pmr/small_vector.hpp [3:5]
+ boost/container/pmr/stable_vector.hpp [3:5]
+ boost/container/pmr/string.hpp [3:5]
+ boost/container/pmr/synchronized_pool_resource.hpp [3:5]
+ boost/container/pmr/unsynchronized_pool_resource.hpp [3:5]
+ boost/container/pmr/vector.hpp [3:5]
+ boost/container/scoped_allocator_fwd.hpp [3:5]
+ boost/container/small_vector.hpp [3:5]
+ boost/container/uses_allocator_fwd.hpp [3:5]
+ boost/intrusive/detail/tree_value_compare.hpp [3:5]
+ libs/container/src/global_resource.cpp [3:5]
+ libs/container/src/monotonic_buffer_resource.cpp [3:5]
+ libs/container/src/pool_resource.cpp [3:5]
+ libs/container/src/synchronized_pool_resource.cpp [3:5]
+ libs/container/src/unsynchronized_pool_resource.cpp [3:5]
+
+KEEP BSL-1.0 6f142535a1deefdedb1f10f224c9b0ed
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/algorithm/string/detail/formatter.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/algorithm/string/detail/formatter.hpp [5:9]
+
+KEEP BSL-1.0 6f58c862f763ee945f279dbe9d509166
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/detail/compare_functors.hpp at line 5, boost/container/detail/std_fwd.hpp at line 5, boost/intrusive/detail/has_member_function_callable_with.hpp at line 5, boost/intrusive/detail/std_fwd.hpp at line 5, boost/intrusive/pointer_rebind.hpp at line 5, boost/move/default_delete.hpp at line 5, boost/move/detail/fwd_macros.hpp at line 5, boost/move/detail/workaround.hpp at line 5, boost/move/unique_ptr.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2014-2014. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/container/detail/compare_functors.hpp [3:5]
+ boost/container/detail/std_fwd.hpp [3:5]
+ boost/intrusive/detail/has_member_function_callable_with.hpp [3:5]
+ boost/intrusive/detail/std_fwd.hpp [3:5]
+ boost/intrusive/pointer_rebind.hpp [3:5]
+ boost/move/default_delete.hpp [3:5]
+ boost/move/detail/fwd_macros.hpp [3:5]
+ boost/move/detail/workaround.hpp [3:5]
+ boost/move/unique_ptr.hpp [3:5]
+
+KEEP BSL-1.0 6f5903013620b3e63b872211596c814c
+BELONGS libs/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/test/data/monomorphic/fwd.hpp at line 3, boost/test/data/monomorphic/generators/random.hpp at line 3, boost/test/data/monomorphic/singleton.hpp at line 3, boost/test/tools/floating_point_comparison.hpp at line 3, libs/test/src/compiler_log_formatter.cpp at line 3, libs/test/src/cpp_main.cpp at line 3, libs/test/src/debug.cpp at line 3, libs/test/src/decorator.cpp at line 3, libs/test/src/execution_monitor.cpp at line 3, libs/test/src/framework.cpp at line 3, libs/test/src/plain_report_formatter.cpp at line 3, libs/test/src/progress_monitor.cpp at line 3, libs/test/src/results_collector.cpp at line 3, libs/test/src/results_reporter.cpp at line 3, libs/test/src/test_main.cpp at line 3, libs/test/src/test_tools.cpp at line 3, libs/test/src/test_tree.cpp at line 3, libs/test/src/unit_test_log.cpp at line 3, libs/test/src/unit_test_main.cpp at line 3, libs/test/src/unit_test_monitor.cpp at line 3, libs/test/src/unit_test_parameters.cpp at line 3, libs/test/src/xml_log_formatter.cpp at line 3, libs/test/src/xml_report_formatter.cpp at line 3
+ License text:
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/test/data/monomorphic/fwd.hpp [2:4]
+ boost/test/data/monomorphic/generators/random.hpp [2:4]
+ boost/test/data/monomorphic/singleton.hpp [2:4]
+ boost/test/tools/floating_point_comparison.hpp [2:4]
+ libs/test/src/compiler_log_formatter.cpp [2:4]
+ libs/test/src/cpp_main.cpp [2:4]
+ libs/test/src/debug.cpp [2:4]
+ libs/test/src/decorator.cpp [2:4]
+ libs/test/src/execution_monitor.cpp [2:4]
+ libs/test/src/framework.cpp [2:4]
+ libs/test/src/plain_report_formatter.cpp [2:4]
+ libs/test/src/progress_monitor.cpp [2:4]
+ libs/test/src/results_collector.cpp [2:4]
+ libs/test/src/results_reporter.cpp [2:4]
+ libs/test/src/test_main.cpp [2:4]
+ libs/test/src/test_tools.cpp [2:4]
+ libs/test/src/test_tree.cpp [2:4]
+ libs/test/src/unit_test_log.cpp [2:4]
+ libs/test/src/unit_test_main.cpp [2:4]
+ libs/test/src/unit_test_monitor.cpp [2:4]
+ libs/test/src/unit_test_parameters.cpp [2:4]
+ libs/test/src/xml_log_formatter.cpp [2:4]
+ libs/test/src/xml_report_formatter.cpp [2:4]
+
+KEEP Zlib 6f639f15f71c2f16f1a3459658b193c0
+BELONGS ya.make
+ License text:
+ /* A std::uint16_t is an index in the character window. We use short instead of int to
+ * save space in the various tables. IPos is used only for parameter passing.
+ Scancode info:
+ Original SPDX id: Zlib
+ Score : 96.43
+ Match type : REFERENCE
+ Links : http://www.gzip.org/zlib/zlib_license.html, http://www.zlib.net/, https://spdx.org/licenses/Zlib
+ Files with this license:
+ boost/beast/zlib/detail/deflate_stream.hpp [291:292]
+
+KEEP BSL-1.0 6fb8dab2fa17abac18f239108501392d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/smart_ptr.hpp at line 12
+ License text:
+ // Copyright (c) 2003 Peter Dimov Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/smart_ptr.hpp [10:12]
+
+KEEP BSL-1.0 70284ad8e3e2d935ac16b320b8af06a2
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/integer/static_log2.hpp at line 8
+ License text:
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/integer/static_log2.hpp [7:9]
+
+KEEP BSL-1.0 7046eb5e05d97f8094aad004556f5459
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/smart_ptr/unique_ptr.hpp at line 5, boost/move/make_unique.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2006-2014. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/interprocess/smart_ptr/unique_ptr.hpp [3:5]
+ boost/move/make_unique.hpp [3:5]
+
+KEEP BSL-1.0 715771b101b3fd6543920c82e8bbf36b
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/archive/impl/archive_serializer_map.ipp at line 6, boost/archive/impl/basic_text_iprimitive.ipp at line 6, boost/archive/impl/basic_xml_oarchive.ipp at line 6, boost/archive/impl/text_iarchive_impl.ipp at line 6, boost/archive/impl/text_oarchive_impl.ipp at line 6, boost/archive/impl/text_wiarchive_impl.ipp at line 6, boost/archive/impl/text_woarchive_impl.ipp at line 6, boost/archive/impl/xml_iarchive_impl.ipp at line 6, boost/archive/impl/xml_wiarchive_impl.ipp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/archive/impl/archive_serializer_map.ipp [5:9]
+ boost/archive/impl/basic_text_iprimitive.ipp [5:9]
+ boost/archive/impl/basic_xml_oarchive.ipp [5:9]
+ boost/archive/impl/text_iarchive_impl.ipp [5:9]
+ boost/archive/impl/text_oarchive_impl.ipp [5:9]
+ boost/archive/impl/text_wiarchive_impl.ipp [5:9]
+ boost/archive/impl/text_woarchive_impl.ipp [5:9]
+ boost/archive/impl/xml_iarchive_impl.ipp [5:9]
+ boost/archive/impl/xml_wiarchive_impl.ipp [5:9]
+
+KEEP BSL-1.0 71e59b956feb5a436a3a5a5360ecfd21
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/sort/block_indirect_sort/blk_detail/backbone.hpp at line 8, boost/sort/block_indirect_sort/blk_detail/block.hpp at line 8, boost/sort/block_indirect_sort/blk_detail/constants.hpp at line 7, boost/sort/block_indirect_sort/blk_detail/merge_blocks.hpp at line 8, boost/sort/block_indirect_sort/blk_detail/move_blocks.hpp at line 8, boost/sort/block_indirect_sort/blk_detail/parallel_sort.hpp at line 8, boost/sort/block_indirect_sort/block_indirect_sort.hpp at line 7, boost/sort/common/indirect.hpp at line 7, boost/sort/common/merge_block.hpp at line 8, boost/sort/common/merge_four.hpp at line 7, boost/sort/common/merge_vector.hpp at line 8, boost/sort/common/pivot.hpp at line 7, boost/sort/common/rearrange.hpp at line 7, boost/sort/common/sort_basic.hpp at line 7, boost/sort/common/util/algorithm.hpp at line 7, boost/sort/common/util/atomic.hpp at line 6, boost/sort/common/util/insert.hpp at line 7, boost/sort/common/util/merge.hpp at line 7, boost/sort/common/util/traits.hpp at line 7, boost/sort/flat_stable_sort/flat_stable_sort.hpp at line 7, boost/sort/heap_sort/heap_sort.hpp at line 7, boost/sort/insert_sort/insert_sort.hpp at line 7, boost/sort/parallel_stable_sort/parallel_stable_sort.hpp at line 7, boost/sort/sample_sort/sample_sort.hpp at line 7, boost/sort/spinsort/spinsort.hpp at line 7
+ License text:
+ /// Distributed under the Boost Software License, Version 1.0.\n
+ /// ( See accompanying file LICENSE_1_0.txt or copy at
+ /// http://www.boost.org/LICENSE_1_0.txt )
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/sort/block_indirect_sort/blk_detail/backbone.hpp [7:9]
+ boost/sort/block_indirect_sort/blk_detail/block.hpp [7:9]
+ boost/sort/block_indirect_sort/blk_detail/constants.hpp [6:8]
+ boost/sort/block_indirect_sort/blk_detail/merge_blocks.hpp [7:9]
+ boost/sort/block_indirect_sort/blk_detail/move_blocks.hpp [7:9]
+ boost/sort/block_indirect_sort/blk_detail/parallel_sort.hpp [7:9]
+ boost/sort/block_indirect_sort/block_indirect_sort.hpp [6:8]
+ boost/sort/common/indirect.hpp [6:8]
+ boost/sort/common/merge_block.hpp [7:9]
+ boost/sort/common/merge_four.hpp [6:8]
+ boost/sort/common/merge_vector.hpp [7:9]
+ boost/sort/common/pivot.hpp [6:8]
+ boost/sort/common/rearrange.hpp [6:8]
+ boost/sort/common/sort_basic.hpp [6:8]
+ boost/sort/common/util/algorithm.hpp [6:8]
+ boost/sort/common/util/atomic.hpp [5:7]
+ boost/sort/common/util/insert.hpp [6:8]
+ boost/sort/common/util/merge.hpp [6:8]
+ boost/sort/common/util/traits.hpp [6:8]
+ boost/sort/flat_stable_sort/flat_stable_sort.hpp [6:8]
+ boost/sort/heap_sort/heap_sort.hpp [6:8]
+ boost/sort/insert_sort/insert_sort.hpp [6:8]
+ boost/sort/parallel_stable_sort/parallel_stable_sort.hpp [6:8]
+ boost/sort/sample_sort/sample_sort.hpp [6:8]
+ boost/sort/spinsort/spinsort.hpp [6:8]
+
+KEEP NCSA AND MIT 72d4e9e6f06ffb6f0c77cb800c3ac442
+BELONGS ya.make
+ License text:
+ // This file is dual licensed under the MIT and the University of Illinois Open
+ // Source Licenses. See LICENSE.TXT for details.
+ Scancode info:
+ Original SPDX id: NCSA
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.otm.illinois.edu/faculty/forms/opensource.asp, https://spdx.org/licenses/NCSA
+ Files with this license:
+ boost/chrono/detail/scan_keyword.hpp [6:7]
+ boost/thread/detail/invoke.hpp [19:20]
+ boost/thread/detail/invoker.hpp [17:18]
+ boost/thread/detail/make_tuple_indices.hpp [15:16]
+ Scancode info:
+ Original SPDX id: MIT
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
+ Files with this license:
+ boost/chrono/detail/scan_keyword.hpp [6:7]
+ boost/thread/detail/invoke.hpp [19:20]
+ boost/thread/detail/invoker.hpp [17:18]
+ boost/thread/detail/make_tuple_indices.hpp [15:16]
+
+KEEP BSL-1.0 72eb5cd559a68e29409e1e14d281e49e
+BELONGS ya.make
+ License text:
+ /// Distributed under the Boost Software License, Version 1.0.\n
+ /// ( See copy at http://www.boost.org/LICENSE_1_0.txt )
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 90.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/sort/common/util/search.hpp [5:6]
+
+KEEP BSL-1.0 732a43b99a41bcb7df6969a215704085
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/math/cstdfloat/cstdfloat_complex_std.hpp at line 6
+ License text:
+ // Distributed under the Boost Software License,
+ // Version 1.0. (See accompanying file LICENSE_1_0.txt
+ // or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/math/cstdfloat/cstdfloat_complex_std.hpp [5:7]
+
+KEEP BSL-1.0 744fe4ef3652113826a015c6780732de
+BELONGS libs/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/next_prior.hpp at line 7, boost/test/auto_unit_test.hpp at line 3, boost/test/data/config.hpp at line 3, boost/test/data/dataset.hpp at line 3, boost/test/data/for_each_sample.hpp at line 3, boost/test/data/generators.hpp at line 3, boost/test/data/index_sequence.hpp at line 3, boost/test/data/monomorphic.hpp at line 3, boost/test/data/monomorphic/array.hpp at line 3, boost/test/data/monomorphic/collection.hpp at line 3, boost/test/data/monomorphic/generate.hpp at line 3, boost/test/data/monomorphic/generators.hpp at line 3, boost/test/data/monomorphic/generators/keywords.hpp at line 3, boost/test/data/monomorphic/generators/xrange.hpp at line 3, boost/test/data/monomorphic/grid.hpp at line 3, boost/test/data/monomorphic/initializer_list.hpp at line 3, boost/test/data/monomorphic/join.hpp at line 3, boost/test/data/monomorphic/sample_merge.hpp at line 3, boost/test/data/monomorphic/zip.hpp at line 3, boost/test/data/size.hpp at line 3, boost/test/data/test_case.hpp at line 3, boost/test/debug.hpp at line 3, boost/test/debug_config.hpp at line 3, boost/test/detail/config.hpp at line 3, boost/test/detail/enable_warnings.hpp at line 3, boost/test/detail/fwd_decl.hpp at line 3, boost/test/detail/global_typedef.hpp at line 3, boost/test/detail/log_level.hpp at line 3, boost/test/detail/pp_variadic.hpp at line 3, boost/test/detail/suppress_warnings.hpp at line 3, boost/test/detail/throw_exception.hpp at line 3, boost/test/detail/workaround.hpp at line 3, boost/test/execution_monitor.hpp at line 4, boost/test/floating_point_comparison.hpp at line 3, boost/test/framework.hpp at line 3, boost/test/impl/compiler_log_formatter.ipp at line 3, boost/test/impl/cpp_main.ipp at line 4, boost/test/impl/decorator.ipp at line 3, boost/test/impl/framework.ipp at line 3, boost/test/impl/junit_log_formatter.ipp at line 3, boost/test/impl/plain_report_formatter.ipp at line 3, boost/test/impl/progress_monitor.ipp at line 3, boost/test/impl/results_collector.ipp at line 3, boost/test/impl/results_reporter.ipp at line 3, boost/test/impl/test_main.ipp at line 4, boost/test/impl/test_tools.ipp at line 3, boost/test/impl/test_tree.ipp at line 3, boost/test/impl/unit_test_log.ipp at line 3, boost/test/impl/unit_test_main.ipp at line 3, boost/test/impl/unit_test_monitor.ipp at line 3, boost/test/impl/unit_test_parameters.ipp at line 3, boost/test/impl/xml_log_formatter.ipp at line 3, boost/test/impl/xml_report_formatter.ipp at line 3, boost/test/included/execution_monitor.hpp at line 3, boost/test/included/prg_exec_monitor.hpp at line 3, boost/test/included/test_exec_monitor.hpp at line 3, boost/test/included/unit_test.hpp at line 3, boost/test/included/unit_test_framework.hpp at line 3, boost/test/minimal.hpp at line 3, boost/test/output/compiler_log_formatter.hpp at line 3, boost/test/output/junit_log_formatter.hpp at line 3, boost/test/output/plain_report_formatter.hpp at line 3, boost/test/output/xml_log_formatter.hpp at line 3, boost/test/output/xml_report_formatter.hpp at line 3, boost/test/output_test_stream.hpp at line 3, boost/test/parameterized_test.hpp at line 3, boost/test/predicate_result.hpp at line 3, boost/test/prg_exec_monitor.hpp at line 3, boost/test/progress_monitor.hpp at line 3, boost/test/results_collector.hpp at line 3, boost/test/results_reporter.hpp at line 3, boost/test/test_case_template.hpp at line 3, boost/test/test_exec_monitor.hpp at line 3, boost/test/test_tools.hpp at line 3, boost/test/tools/assertion.hpp at line 3, boost/test/tools/assertion_result.hpp at line 3, boost/test/tools/collection_comparison_op.hpp at line 3, boost/test/tools/context.hpp at line 3, boost/test/tools/cstring_comparison_op.hpp at line 3, boost/test/tools/detail/bitwise_manip.hpp at line 3, boost/test/tools/detail/expression_holder.hpp at line 3, boost/test/tools/detail/fwd.hpp at line 3, boost/test/tools/detail/indirections.hpp at line 3, boost/test/tools/detail/it_pair.hpp at line 3, boost/test/tools/detail/lexicographic_manip.hpp at line 3, boost/test/tools/detail/per_element_manip.hpp at line 3, boost/test/tools/detail/print_helper.hpp at line 3, boost/test/tools/detail/tolerance_manip.hpp at line 3, boost/test/tools/fpc_op.hpp at line 3, boost/test/tools/fpc_tolerance.hpp at line 3, boost/test/tools/interface.hpp at line 3, boost/test/tools/old/impl.hpp at line 3, boost/test/tools/old/interface.hpp at line 3, boost/test/tools/output_test_stream.hpp at line 3, boost/test/tree/auto_registration.hpp at line 3, boost/test/tree/decorator.hpp at line 3, boost/test/tree/fixture.hpp at line 3, boost/test/tree/global_fixture.hpp at line 3, boost/test/tree/observer.hpp at line 3, boost/test/tree/test_case_counter.hpp at line 3, boost/test/tree/test_case_template.hpp at line 3, boost/test/tree/test_unit.hpp at line 3, boost/test/tree/traverse.hpp at line 3, boost/test/tree/visitor.hpp at line 3, boost/test/unit_test.hpp at line 3, boost/test/unit_test_log.hpp at line 3, boost/test/unit_test_log_formatter.hpp at line 3, boost/test/unit_test_monitor.hpp at line 3, boost/test/unit_test_parameters.hpp at line 3, boost/test/unit_test_suite.hpp at line 3, boost/test/utils/algorithm.hpp at line 3, boost/test/utils/assign_op.hpp at line 3, boost/test/utils/basic_cstring/basic_cstring.hpp at line 3, boost/test/utils/basic_cstring/basic_cstring_fwd.hpp at line 3, boost/test/utils/basic_cstring/bcs_char_traits.hpp at line 3, boost/test/utils/basic_cstring/compare.hpp at line 3, boost/test/utils/basic_cstring/io.hpp at line 3, boost/test/utils/class_properties.hpp at line 3, boost/test/utils/custom_manip.hpp at line 3, boost/test/utils/foreach.hpp at line 4, boost/test/utils/is_cstring.hpp at line 3, boost/test/utils/is_forward_iterable.hpp at line 3, boost/test/utils/iterator/input_iterator_facade.hpp at line 3, boost/test/utils/iterator/token_iterator.hpp at line 3, boost/test/utils/lazy_ostream.hpp at line 3, boost/test/utils/named_params.hpp at line 3, boost/test/utils/nullstream.hpp at line 4, boost/test/utils/rtti.hpp at line 3, boost/test/utils/runtime/argument.hpp at line 3, boost/test/utils/runtime/argument_factory.hpp at line 3, boost/test/utils/runtime/env/fetch.hpp at line 3, boost/test/utils/runtime/errors.hpp at line 3, boost/test/utils/runtime/finalize.hpp at line 3, boost/test/utils/runtime/fwd.hpp at line 3, boost/test/utils/runtime/parameter.hpp at line 3, boost/test/utils/setcolor.hpp at line 3, boost/test/utils/string_cast.hpp at line 3, boost/test/utils/trivial_singleton.hpp at line 3, boost/test/utils/wrap_stringstream.hpp at line 3, boost/test/utils/xml_printer.hpp at line 3, libs/test/src/junit_log_formatter.cpp at line 3
+ License text:
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/next_prior.hpp [6:8]
+ boost/test/auto_unit_test.hpp [2:4]
+ boost/test/data/config.hpp [2:4]
+ boost/test/data/dataset.hpp [2:4]
+ boost/test/data/for_each_sample.hpp [2:4]
+ boost/test/data/generators.hpp [2:4]
+ boost/test/data/index_sequence.hpp [2:4]
+ boost/test/data/monomorphic.hpp [2:4]
+ boost/test/data/monomorphic/array.hpp [2:4]
+ boost/test/data/monomorphic/collection.hpp [2:4]
+ boost/test/data/monomorphic/generate.hpp [2:4]
+ boost/test/data/monomorphic/generators.hpp [2:4]
+ boost/test/data/monomorphic/generators/keywords.hpp [2:4]
+ boost/test/data/monomorphic/generators/xrange.hpp [2:4]
+ boost/test/data/monomorphic/grid.hpp [2:4]
+ boost/test/data/monomorphic/initializer_list.hpp [2:4]
+ boost/test/data/monomorphic/join.hpp [2:4]
+ boost/test/data/monomorphic/sample_merge.hpp [2:4]
+ boost/test/data/monomorphic/zip.hpp [2:4]
+ boost/test/data/size.hpp [2:4]
+ boost/test/data/test_case.hpp [2:4]
+ boost/test/debug.hpp [2:4]
+ boost/test/debug_config.hpp [2:4]
+ boost/test/detail/config.hpp [2:4]
+ boost/test/detail/enable_warnings.hpp [2:4]
+ boost/test/detail/fwd_decl.hpp [2:4]
+ boost/test/detail/global_typedef.hpp [2:4]
+ boost/test/detail/log_level.hpp [2:4]
+ boost/test/detail/pp_variadic.hpp [2:4]
+ boost/test/detail/suppress_warnings.hpp [2:4]
+ boost/test/detail/throw_exception.hpp [2:4]
+ boost/test/detail/workaround.hpp [2:4]
+ boost/test/execution_monitor.hpp [3:5]
+ boost/test/floating_point_comparison.hpp [2:4]
+ boost/test/framework.hpp [2:4]
+ boost/test/impl/compiler_log_formatter.ipp [2:4]
+ boost/test/impl/cpp_main.ipp [3:5]
+ boost/test/impl/decorator.ipp [2:4]
+ boost/test/impl/framework.ipp [2:4]
+ boost/test/impl/junit_log_formatter.ipp [2:4]
+ boost/test/impl/plain_report_formatter.ipp [2:4]
+ boost/test/impl/progress_monitor.ipp [2:4]
+ boost/test/impl/results_collector.ipp [2:4]
+ boost/test/impl/results_reporter.ipp [2:4]
+ boost/test/impl/test_main.ipp [3:5]
+ boost/test/impl/test_tools.ipp [2:4]
+ boost/test/impl/test_tree.ipp [2:4]
+ boost/test/impl/unit_test_log.ipp [2:4]
+ boost/test/impl/unit_test_main.ipp [2:4]
+ boost/test/impl/unit_test_monitor.ipp [2:4]
+ boost/test/impl/unit_test_parameters.ipp [2:4]
+ boost/test/impl/xml_log_formatter.ipp [2:4]
+ boost/test/impl/xml_report_formatter.ipp [2:4]
+ boost/test/included/execution_monitor.hpp [2:4]
+ boost/test/included/prg_exec_monitor.hpp [2:4]
+ boost/test/included/test_exec_monitor.hpp [2:4]
+ boost/test/included/unit_test.hpp [2:4]
+ boost/test/included/unit_test_framework.hpp [2:4]
+ boost/test/minimal.hpp [2:4]
+ boost/test/output/compiler_log_formatter.hpp [2:4]
+ boost/test/output/junit_log_formatter.hpp [2:4]
+ boost/test/output/plain_report_formatter.hpp [2:4]
+ boost/test/output/xml_log_formatter.hpp [2:4]
+ boost/test/output/xml_report_formatter.hpp [2:4]
+ boost/test/output_test_stream.hpp [2:4]
+ boost/test/parameterized_test.hpp [2:4]
+ boost/test/predicate_result.hpp [2:4]
+ boost/test/prg_exec_monitor.hpp [2:4]
+ boost/test/progress_monitor.hpp [2:4]
+ boost/test/results_collector.hpp [2:4]
+ boost/test/results_reporter.hpp [2:4]
+ boost/test/test_case_template.hpp [2:4]
+ boost/test/test_exec_monitor.hpp [2:4]
+ boost/test/test_tools.hpp [2:4]
+ boost/test/tools/assertion.hpp [2:4]
+ boost/test/tools/assertion_result.hpp [2:4]
+ boost/test/tools/collection_comparison_op.hpp [2:4]
+ boost/test/tools/context.hpp [2:4]
+ boost/test/tools/cstring_comparison_op.hpp [2:4]
+ boost/test/tools/detail/bitwise_manip.hpp [2:4]
+ boost/test/tools/detail/expression_holder.hpp [2:4]
+ boost/test/tools/detail/fwd.hpp [2:4]
+ boost/test/tools/detail/indirections.hpp [2:4]
+ boost/test/tools/detail/it_pair.hpp [2:4]
+ boost/test/tools/detail/lexicographic_manip.hpp [2:4]
+ boost/test/tools/detail/per_element_manip.hpp [2:4]
+ boost/test/tools/detail/print_helper.hpp [2:4]
+ boost/test/tools/detail/tolerance_manip.hpp [2:4]
+ boost/test/tools/fpc_op.hpp [2:4]
+ boost/test/tools/fpc_tolerance.hpp [2:4]
+ boost/test/tools/interface.hpp [2:4]
+ boost/test/tools/old/impl.hpp [2:4]
+ boost/test/tools/old/interface.hpp [2:4]
+ boost/test/tools/output_test_stream.hpp [2:4]
+ boost/test/tree/auto_registration.hpp [2:4]
+ boost/test/tree/decorator.hpp [2:4]
+ boost/test/tree/fixture.hpp [2:4]
+ boost/test/tree/global_fixture.hpp [2:4]
+ boost/test/tree/observer.hpp [2:4]
+ boost/test/tree/test_case_counter.hpp [2:4]
+ boost/test/tree/test_case_template.hpp [2:4]
+ boost/test/tree/test_unit.hpp [2:4]
+ boost/test/tree/traverse.hpp [2:4]
+ boost/test/tree/visitor.hpp [2:4]
+ boost/test/unit_test.hpp [2:4]
+ boost/test/unit_test_log.hpp [2:4]
+ boost/test/unit_test_log_formatter.hpp [2:4]
+ boost/test/unit_test_monitor.hpp [2:4]
+ boost/test/unit_test_parameters.hpp [2:4]
+ boost/test/unit_test_suite.hpp [2:4]
+ boost/test/utils/algorithm.hpp [2:4]
+ boost/test/utils/assign_op.hpp [2:4]
+ boost/test/utils/basic_cstring/basic_cstring.hpp [2:4]
+ boost/test/utils/basic_cstring/basic_cstring_fwd.hpp [2:4]
+ boost/test/utils/basic_cstring/bcs_char_traits.hpp [2:4]
+ boost/test/utils/basic_cstring/compare.hpp [2:4]
+ boost/test/utils/basic_cstring/io.hpp [2:4]
+ boost/test/utils/class_properties.hpp [2:4]
+ boost/test/utils/custom_manip.hpp [2:4]
+ boost/test/utils/foreach.hpp [3:5]
+ boost/test/utils/is_cstring.hpp [2:4]
+ boost/test/utils/is_forward_iterable.hpp [2:4]
+ boost/test/utils/iterator/input_iterator_facade.hpp [2:4]
+ boost/test/utils/iterator/token_iterator.hpp [2:4]
+ boost/test/utils/lazy_ostream.hpp [2:4]
+ boost/test/utils/named_params.hpp [2:4]
+ boost/test/utils/nullstream.hpp [3:5]
+ boost/test/utils/rtti.hpp [2:4]
+ boost/test/utils/runtime/argument.hpp [2:4]
+ boost/test/utils/runtime/argument_factory.hpp [2:4]
+ boost/test/utils/runtime/env/fetch.hpp [2:4]
+ boost/test/utils/runtime/errors.hpp [2:4]
+ boost/test/utils/runtime/finalize.hpp [2:4]
+ boost/test/utils/runtime/fwd.hpp [2:4]
+ boost/test/utils/runtime/parameter.hpp [2:4]
+ boost/test/utils/setcolor.hpp [2:4]
+ boost/test/utils/string_cast.hpp [2:4]
+ boost/test/utils/trivial_singleton.hpp [2:4]
+ boost/test/utils/wrap_stringstream.hpp [2:4]
+ boost/test/utils/xml_printer.hpp [2:4]
+ libs/test/src/junit_log_formatter.cpp [2:4]
+
+KEEP BSL-1.0 745252704aa72167f50d9aad40337785
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/assert.hpp at line 14, boost/bind.hpp at line 16, boost/bind/bind_mf2_cc.hpp at line 10, boost/bind/placeholders.hpp at line 17, boost/bind/storage.hpp at line 18, boost/config/compiler/xlcpp_zos.hpp at line 4, boost/config/platform/zos.hpp at line 4, boost/config/stdlib/xlcpp_zos.hpp at line 4, boost/core/lightweight_test.hpp at line 18, boost/current_function.hpp at line 16, boost/detail/atomic_count.hpp at line 16, boost/detail/lightweight_mutex.hpp at line 16, boost/detail/lightweight_thread.hpp at line 16, boost/detail/quick_allocator.hpp at line 17, boost/enable_shared_from_this.hpp at line 10, boost/interprocess/detail/os_thread_functions.hpp at line 19, boost/intrusive_ptr.hpp at line 10, boost/make_shared.hpp at line 9, boost/mem_fn.hpp at line 16, boost/range/detail/safe_bool.hpp at line 5, boost/signals2/deconstruct.hpp at line 21, boost/smart_ptr/detail/atomic_count.hpp at line 17, boost/smart_ptr/detail/atomic_count_nt.hpp at line 14, boost/smart_ptr/detail/atomic_count_spin.hpp at line 10, boost/smart_ptr/detail/atomic_count_std_atomic.hpp at line 12, boost/smart_ptr/detail/operator_bool.hpp at line 6, boost/smart_ptr/detail/sp_convertible.hpp at line 15, boost/smart_ptr/detail/sp_counted_base_clang.hpp at line 15, boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp at line 17, boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp at line 17, boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp at line 15, boost/smart_ptr/detail/sp_counted_base_sync.hpp at line 15, boost/smart_ptr/detail/sp_forward.hpp at line 15, boost/smart_ptr/detail/sp_interlocked.hpp at line 16, boost/smart_ptr/detail/sp_noexcept.hpp at line 15, boost/smart_ptr/detail/sp_nullptr_t.hpp at line 15, boost/smart_ptr/detail/yield_k.hpp at line 23, boost/smart_ptr/enable_shared_from_raw.hpp at line 11, boost/smart_ptr/enable_shared_from_this.hpp at line 10, boost/smart_ptr/make_local_shared.hpp at line 9, boost/smart_ptr/make_local_shared_object.hpp at line 9, boost/smart_ptr/make_shared.hpp at line 9, boost/smart_ptr/make_shared_object.hpp at line 9, boost/type_traits/common_type.hpp at line 8, boost/type_traits/copy_cv.hpp at line 8, boost/type_traits/detail/common_arithmetic_type.hpp at line 8, boost/type_traits/detail/common_type_impl.hpp at line 8, boost/type_traits/detail/composite_member_pointer_type.hpp at line 8, boost/type_traits/detail/composite_pointer_type.hpp at line 8, boost/type_traits/detail/mp_defer.hpp at line 8, boost/type_traits/is_list_constructible.hpp at line 7, boost/type_traits/is_nothrow_swappable.hpp at line 7, boost/type_traits/type_identity.hpp at line 8, boost/weak_ptr.hpp at line 10
+ License text:
+ // Distributed under the Boost Software License, Version 1.0.
+ // See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/assert.hpp [13:15]
+ boost/bind.hpp [15:17]
+ boost/bind/bind_mf2_cc.hpp [9:11]
+ boost/bind/placeholders.hpp [16:18]
+ boost/bind/storage.hpp [17:19]
+ boost/config/compiler/xlcpp_zos.hpp [3:5]
+ boost/config/platform/zos.hpp [3:5]
+ boost/config/stdlib/xlcpp_zos.hpp [3:5]
+ boost/core/lightweight_test.hpp [17:19]
+ boost/current_function.hpp [15:17]
+ boost/detail/atomic_count.hpp [15:17]
+ boost/detail/lightweight_mutex.hpp [15:17]
+ boost/detail/lightweight_thread.hpp [15:17]
+ boost/detail/quick_allocator.hpp [16:18]
+ boost/enable_shared_from_this.hpp [9:11]
+ boost/interprocess/detail/os_thread_functions.hpp [18:20]
+ boost/intrusive_ptr.hpp [9:11]
+ boost/make_shared.hpp [8:10]
+ boost/mem_fn.hpp [15:17]
+ boost/range/detail/safe_bool.hpp [4:6]
+ boost/signals2/deconstruct.hpp [20:22]
+ boost/smart_ptr/detail/atomic_count.hpp [16:18]
+ boost/smart_ptr/detail/atomic_count_nt.hpp [13:15]
+ boost/smart_ptr/detail/atomic_count_spin.hpp [9:11]
+ boost/smart_ptr/detail/atomic_count_std_atomic.hpp [11:13]
+ boost/smart_ptr/detail/operator_bool.hpp [5:7]
+ boost/smart_ptr/detail/sp_convertible.hpp [14:16]
+ boost/smart_ptr/detail/sp_counted_base_clang.hpp [14:16]
+ boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp [16:18]
+ boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp [16:18]
+ boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp [14:16]
+ boost/smart_ptr/detail/sp_counted_base_sync.hpp [14:16]
+ boost/smart_ptr/detail/sp_forward.hpp [14:16]
+ boost/smart_ptr/detail/sp_interlocked.hpp [15:17]
+ boost/smart_ptr/detail/sp_noexcept.hpp [14:16]
+ boost/smart_ptr/detail/sp_nullptr_t.hpp [14:16]
+ boost/smart_ptr/detail/yield_k.hpp [22:24]
+ boost/smart_ptr/enable_shared_from_raw.hpp [10:12]
+ boost/smart_ptr/enable_shared_from_this.hpp [9:11]
+ boost/smart_ptr/make_local_shared.hpp [8:10]
+ boost/smart_ptr/make_local_shared_object.hpp [8:10]
+ boost/smart_ptr/make_shared.hpp [8:10]
+ boost/smart_ptr/make_shared_object.hpp [8:10]
+ boost/type_traits/common_type.hpp [7:9]
+ boost/type_traits/copy_cv.hpp [7:9]
+ boost/type_traits/detail/common_arithmetic_type.hpp [7:9]
+ boost/type_traits/detail/common_type_impl.hpp [7:9]
+ boost/type_traits/detail/composite_member_pointer_type.hpp [7:9]
+ boost/type_traits/detail/composite_pointer_type.hpp [7:9]
+ boost/type_traits/detail/mp_defer.hpp [7:9]
+ boost/type_traits/is_list_constructible.hpp [6:8]
+ boost/type_traits/is_nothrow_swappable.hpp [6:8]
+ boost/type_traits/type_identity.hpp [7:9]
+ boost/weak_ptr.hpp [9:11]
+
+KEEP BSL-1.0 7526d5c5fd651b8d0d6103857fbf3a46
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/call_traits.hpp at line 3, boost/chrono/chrono_io.hpp at line 7, boost/chrono/clock_string.hpp at line 4, boost/chrono/include.hpp at line 6, boost/chrono/io/duration_get.hpp at line 4, boost/chrono/io/duration_io.hpp at line 4, boost/chrono/io/duration_put.hpp at line 4, boost/chrono/io/duration_style.hpp at line 4, boost/chrono/io/duration_units.hpp at line 4, boost/chrono/io/ios_base_state.hpp at line 3, boost/chrono/io/time_point_get.hpp at line 4, boost/chrono/io/time_point_put.hpp at line 4, boost/chrono/io/time_point_units.hpp at line 5, boost/chrono/io/timezone.hpp at line 4, boost/chrono/io/utility/to_string.hpp at line 5, boost/chrono/io_v1/chrono_io.hpp at line 7, boost/compressed_pair.hpp at line 3, boost/detail/call_traits.hpp at line 3, boost/detail/compressed_pair.hpp at line 3, boost/detail/has_default_constructor.hpp at line 4, boost/detail/ob_compressed_pair.hpp at line 3, boost/ratio/detail/ratio_io.hpp at line 6, boost/ratio/mpl/abs.hpp at line 5, boost/ratio/mpl/divides.hpp at line 5, boost/ratio/mpl/equal_to.hpp at line 5, boost/ratio/mpl/gcd.hpp at line 5, boost/ratio/mpl/greater.hpp at line 5, boost/ratio/mpl/greater_equal.hpp at line 5, boost/ratio/mpl/lcm.hpp at line 5, boost/ratio/mpl/less.hpp at line 5, boost/ratio/mpl/less_equal.hpp at line 5, boost/ratio/mpl/minus.hpp at line 5, boost/ratio/mpl/negate.hpp at line 5, boost/ratio/mpl/not_equal_to.hpp at line 5, boost/ratio/mpl/numeric_cast.hpp at line 5, boost/ratio/mpl/plus.hpp at line 5, boost/ratio/mpl/rational_c_tag.hpp at line 5, boost/ratio/mpl/sign.hpp at line 5, boost/ratio/mpl/times.hpp at line 5, boost/ratio/ratio_io.hpp at line 6, boost/tti/detail/dcomp_mem_fun.hpp at line 4, boost/tti/detail/ddata.hpp at line 4, boost/tti/detail/ddeftype.hpp at line 4, boost/tti/detail/dftclass.hpp at line 4, boost/tti/detail/dfunction.hpp at line 4, boost/tti/detail/dlambda.hpp at line 4, boost/tti/detail/dmem_data.hpp at line 4, boost/tti/detail/dmem_fun.hpp at line 4, boost/tti/detail/dmem_type.hpp at line 4, boost/tti/detail/dmetafunc.hpp at line 4, boost/tti/detail/dnotype.hpp at line 4, boost/tti/detail/dnullptr.hpp at line 4, boost/tti/detail/dplaceholder.hpp at line 4, boost/tti/detail/dptmf.hpp at line 4, boost/tti/detail/dstatic_mem_data.hpp at line 4, boost/tti/detail/dstatic_mem_fun.hpp at line 4, boost/tti/detail/dtclass.hpp at line 4, boost/tti/detail/dtemplate.hpp at line 4, boost/tti/detail/dtemplate_params.hpp at line 4, boost/tti/detail/dtfunction.hpp at line 4, boost/tti/detail/dtype.hpp at line 4, boost/tti/detail/dvm_template_params.hpp at line 4, boost/tti/gen/has_data_gen.hpp at line 4, boost/tti/gen/has_function_gen.hpp at line 4, boost/tti/gen/has_member_data_gen.hpp at line 4, boost/tti/gen/has_member_function_gen.hpp at line 4, boost/tti/gen/has_static_member_data_gen.hpp at line 4, boost/tti/gen/has_static_member_function_gen.hpp at line 4, boost/tti/gen/has_template_gen.hpp at line 4, boost/tti/gen/has_type_gen.hpp at line 4, boost/tti/gen/member_type_gen.hpp at line 4, boost/tti/gen/namespace_gen.hpp at line 4, boost/tti/has_data.hpp at line 4, boost/tti/has_function.hpp at line 4, boost/tti/has_member_data.hpp at line 4, boost/tti/has_member_function.hpp at line 4, boost/tti/has_static_member_data.hpp at line 4, boost/tti/has_static_member_function.hpp at line 4, boost/tti/has_template.hpp at line 4, boost/tti/has_type.hpp at line 4, boost/tti/member_type.hpp at line 4, boost/tti/tti.hpp at line 4, boost/type_traits.hpp at line 3, boost/type_traits/add_const.hpp at line 5, boost/type_traits/add_cv.hpp at line 5, boost/type_traits/add_pointer.hpp at line 4, boost/type_traits/add_reference.hpp at line 4, boost/type_traits/add_volatile.hpp at line 5, boost/type_traits/alignment_of.hpp at line 4, boost/type_traits/alignment_traits.hpp at line 4, boost/type_traits/arithmetic_traits.hpp at line 3, boost/type_traits/array_traits.hpp at line 4, boost/type_traits/broken_compiler_spec.hpp at line 4, boost/type_traits/composite_traits.hpp at line 4, boost/type_traits/conditional.hpp at line 3, boost/type_traits/config.hpp at line 4, boost/type_traits/conversion_traits.hpp at line 7, boost/type_traits/cv_traits.hpp at line 4, boost/type_traits/decay.hpp at line 3, boost/type_traits/detail/config.hpp at line 4, boost/type_traits/detail/has_binary_operator.hpp at line 4, boost/type_traits/detail/has_postfix_operator.hpp at line 4, boost/type_traits/detail/has_prefix_operator.hpp at line 4, boost/type_traits/detail/ice_and.hpp at line 4, boost/type_traits/detail/ice_eq.hpp at line 3, boost/type_traits/detail/ice_not.hpp at line 3, boost/type_traits/detail/ice_or.hpp at line 3, boost/type_traits/detail/is_function_ptr_helper.hpp at line 6, boost/type_traits/detail/is_mem_fun_pointer_impl.hpp at line 5, boost/type_traits/detail/is_mem_fun_pointer_tester.hpp at line 5, boost/type_traits/detail/yes_no_type.hpp at line 4, boost/type_traits/extent.hpp at line 4, boost/type_traits/function_traits.hpp at line 4, boost/type_traits/has_bit_and.hpp at line 4, boost/type_traits/has_bit_and_assign.hpp at line 4, boost/type_traits/has_bit_or.hpp at line 4, boost/type_traits/has_bit_or_assign.hpp at line 4, boost/type_traits/has_bit_xor.hpp at line 4, boost/type_traits/has_bit_xor_assign.hpp at line 4, boost/type_traits/has_complement.hpp at line 4, boost/type_traits/has_dereference.hpp at line 4, boost/type_traits/has_divides.hpp at line 4, boost/type_traits/has_divides_assign.hpp at line 4, boost/type_traits/has_equal_to.hpp at line 4, boost/type_traits/has_greater.hpp at line 4, boost/type_traits/has_greater_equal.hpp at line 4, boost/type_traits/has_left_shift.hpp at line 4, boost/type_traits/has_left_shift_assign.hpp at line 4, boost/type_traits/has_less.hpp at line 4, boost/type_traits/has_less_equal.hpp at line 4, boost/type_traits/has_logical_and.hpp at line 4, boost/type_traits/has_logical_not.hpp at line 4, boost/type_traits/has_logical_or.hpp at line 4, boost/type_traits/has_minus.hpp at line 4, boost/type_traits/has_minus_assign.hpp at line 4, boost/type_traits/has_modulus.hpp at line 4, boost/type_traits/has_modulus_assign.hpp at line 4, boost/type_traits/has_multiplies.hpp at line 4, boost/type_traits/has_multiplies_assign.hpp at line 4, boost/type_traits/has_negate.hpp at line 4, boost/type_traits/has_new_operator.hpp at line 4, boost/type_traits/has_not_equal_to.hpp at line 4, boost/type_traits/has_nothrow_assign.hpp at line 4, boost/type_traits/has_nothrow_constructor.hpp at line 4, boost/type_traits/has_nothrow_copy.hpp at line 4, boost/type_traits/has_nothrow_destructor.hpp at line 4, boost/type_traits/has_operator.hpp at line 4, boost/type_traits/has_plus.hpp at line 4, boost/type_traits/has_post_decrement.hpp at line 4, boost/type_traits/has_post_increment.hpp at line 4, boost/type_traits/has_pre_decrement.hpp at line 4, boost/type_traits/has_pre_increment.hpp at line 4, boost/type_traits/has_right_shift.hpp at line 4, boost/type_traits/has_right_shift_assign.hpp at line 4, boost/type_traits/has_trivial_assign.hpp at line 4, boost/type_traits/has_trivial_constructor.hpp at line 4, boost/type_traits/has_trivial_copy.hpp at line 4, boost/type_traits/has_trivial_destructor.hpp at line 4, boost/type_traits/has_trivial_move_assign.hpp at line 6, boost/type_traits/has_trivial_move_constructor.hpp at line 6, boost/type_traits/has_unary_minus.hpp at line 4, boost/type_traits/has_unary_plus.hpp at line 4, boost/type_traits/has_virtual_destructor.hpp at line 4, boost/type_traits/ice.hpp at line 4, boost/type_traits/intrinsics.hpp at line 3, boost/type_traits/is_arithmetic.hpp at line 4, boost/type_traits/is_array.hpp at line 5, boost/type_traits/is_assignable.hpp at line 4, boost/type_traits/is_base_and_derived.hpp at line 4, boost/type_traits/is_base_of.hpp at line 4, boost/type_traits/is_base_of_tr1.hpp at line 4, boost/type_traits/is_class.hpp at line 4, boost/type_traits/is_complete.hpp at line 4, boost/type_traits/is_complex.hpp at line 3, boost/type_traits/is_compound.hpp at line 4, boost/type_traits/is_const.hpp at line 7, boost/type_traits/is_constructible.hpp at line 4, boost/type_traits/is_convertible.hpp at line 7, boost/type_traits/is_copy_assignable.hpp at line 4, boost/type_traits/is_copy_constructible.hpp at line 4, boost/type_traits/is_default_constructible.hpp at line 4, boost/type_traits/is_destructible.hpp at line 4, boost/type_traits/is_empty.hpp at line 4, boost/type_traits/is_enum.hpp at line 5, boost/type_traits/is_final.hpp at line 5, boost/type_traits/is_float.hpp at line 3, boost/type_traits/is_floating_point.hpp at line 3, boost/type_traits/is_function.hpp at line 6, boost/type_traits/is_fundamental.hpp at line 4, boost/type_traits/is_integral.hpp at line 4, boost/type_traits/is_lvalue_reference.hpp at line 7, boost/type_traits/is_member_function_pointer.hpp at line 5, boost/type_traits/is_member_object_pointer.hpp at line 4, boost/type_traits/is_member_pointer.hpp at line 7, boost/type_traits/is_nothrow_move_assignable.hpp at line 6, boost/type_traits/is_nothrow_move_constructible.hpp at line 6, boost/type_traits/is_object.hpp at line 4, boost/type_traits/is_pod.hpp at line 4, boost/type_traits/is_pointer.hpp at line 7, boost/type_traits/is_polymorphic.hpp at line 3, boost/type_traits/is_reference.hpp at line 7, boost/type_traits/is_rvalue_reference.hpp at line 4, boost/type_traits/is_same.hpp at line 7, boost/type_traits/is_scalar.hpp at line 4, boost/type_traits/is_signed.hpp at line 4, boost/type_traits/is_stateless.hpp at line 4, boost/type_traits/is_union.hpp at line 5, boost/type_traits/is_unsigned.hpp at line 4, boost/type_traits/is_virtual_base_of.hpp at line 3, boost/type_traits/is_void.hpp at line 4, boost/type_traits/is_volatile.hpp at line 7, boost/type_traits/make_signed.hpp at line 4, boost/type_traits/make_unsigned.hpp at line 4, boost/type_traits/object_traits.hpp at line 3, boost/type_traits/rank.hpp at line 4, boost/type_traits/reference_traits.hpp at line 4, boost/type_traits/remove_all_extents.hpp at line 4, boost/type_traits/remove_bounds.hpp at line 4, boost/type_traits/remove_const.hpp at line 5, boost/type_traits/remove_cv.hpp at line 5, boost/type_traits/remove_cv_ref.hpp at line 4, boost/type_traits/remove_extent.hpp at line 4, boost/type_traits/remove_pointer.hpp at line 4, boost/type_traits/remove_reference.hpp at line 4, boost/type_traits/remove_volatile.hpp at line 5, boost/type_traits/same_traits.hpp at line 3, boost/type_traits/transform_traits.hpp at line 3, boost/type_traits/type_with_alignment.hpp at line 3, boost/vmd/array.hpp at line 4, boost/vmd/array/to_seq.hpp at line 4, boost/vmd/array/to_tuple.hpp at line 4, boost/vmd/assert.hpp at line 4, boost/vmd/assert_is_array.hpp at line 4, boost/vmd/assert_is_empty.hpp at line 4, boost/vmd/assert_is_identifier.hpp at line 4, boost/vmd/assert_is_list.hpp at line 4, boost/vmd/assert_is_number.hpp at line 4, boost/vmd/assert_is_seq.hpp at line 4, boost/vmd/assert_is_tuple.hpp at line 4, boost/vmd/assert_is_type.hpp at line 4, boost/vmd/detail/adjust_tuple_type.hpp at line 4, boost/vmd/detail/array.hpp at line 4, boost/vmd/detail/assert.hpp at line 4, boost/vmd/detail/data_equal.hpp at line 4, boost/vmd/detail/data_equal_common.hpp at line 4, boost/vmd/detail/empty_result.hpp at line 4, boost/vmd/detail/equal.hpp at line 4, boost/vmd/detail/equal_common.hpp at line 4, boost/vmd/detail/equal_type.hpp at line 4, boost/vmd/detail/identifier.hpp at line 4, boost/vmd/detail/identifier_concat.hpp at line 4, boost/vmd/detail/identifier_type.hpp at line 4, boost/vmd/detail/idprefix.hpp at line 4, boost/vmd/detail/is_array.hpp at line 4, boost/vmd/detail/is_array_common.hpp at line 4, boost/vmd/detail/is_empty.hpp at line 4, boost/vmd/detail/is_empty_array.hpp at line 4, boost/vmd/detail/is_empty_tuple.hpp at line 4, boost/vmd/detail/is_entire.hpp at line 4, boost/vmd/detail/is_identifier.hpp at line 4, boost/vmd/detail/is_list.hpp at line 4, boost/vmd/detail/is_number.hpp at line 4, boost/vmd/detail/is_seq.hpp at line 4, boost/vmd/detail/is_tuple.hpp at line 4, boost/vmd/detail/is_type.hpp at line 4, boost/vmd/detail/is_type_type.hpp at line 4, boost/vmd/detail/list.hpp at line 4, boost/vmd/detail/match_identifier.hpp at line 4, boost/vmd/detail/match_identifier_common.hpp at line 4, boost/vmd/detail/match_single_identifier.hpp at line 4, boost/vmd/detail/modifiers.hpp at line 4, boost/vmd/detail/mods.hpp at line 4, boost/vmd/detail/nil_registration.hpp at line 4, boost/vmd/detail/not_empty.hpp at line 4, boost/vmd/detail/number_registration.hpp at line 4, boost/vmd/detail/only_after.hpp at line 4, boost/vmd/detail/parens.hpp at line 4, boost/vmd/detail/parens_common.hpp at line 4, boost/vmd/detail/parens_split.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_1.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_10.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_11.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_12.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_13.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_14.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_15.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_16.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_2.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_3.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_4.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_5.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_6.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_7.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_8.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_9.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_specific.hpp at line 4, boost/vmd/detail/recurse/equal/equal_1.hpp at line 4, boost/vmd/detail/recurse/equal/equal_10.hpp at line 4, boost/vmd/detail/recurse/equal/equal_11.hpp at line 4, boost/vmd/detail/recurse/equal/equal_12.hpp at line 4, boost/vmd/detail/recurse/equal/equal_13.hpp at line 4, boost/vmd/detail/recurse/equal/equal_14.hpp at line 4, boost/vmd/detail/recurse/equal/equal_15.hpp at line 4, boost/vmd/detail/recurse/equal/equal_16.hpp at line 4, boost/vmd/detail/recurse/equal/equal_2.hpp at line 4, boost/vmd/detail/recurse/equal/equal_3.hpp at line 4, boost/vmd/detail/recurse/equal/equal_4.hpp at line 4, boost/vmd/detail/recurse/equal/equal_5.hpp at line 4, boost/vmd/detail/recurse/equal/equal_6.hpp at line 4, boost/vmd/detail/recurse/equal/equal_7.hpp at line 4, boost/vmd/detail/recurse/equal/equal_8.hpp at line 4, boost/vmd/detail/recurse/equal/equal_9.hpp at line 4, boost/vmd/detail/recurse/equal/equal_headers.hpp at line 4, boost/vmd/detail/seq.hpp at line 4, boost/vmd/detail/sequence_arity.hpp at line 4, boost/vmd/detail/sequence_common.hpp at line 4, boost/vmd/detail/sequence_elem.hpp at line 4, boost/vmd/detail/sequence_enum.hpp at line 4, boost/vmd/detail/sequence_size.hpp at line 4, boost/vmd/detail/sequence_to_array.hpp at line 4, boost/vmd/detail/sequence_to_list.hpp at line 4, boost/vmd/detail/sequence_to_seq.hpp at line 4, boost/vmd/detail/sequence_to_tuple.hpp at line 4, boost/vmd/detail/sequence_type.hpp at line 4, boost/vmd/detail/setup.hpp at line 4, boost/vmd/detail/tuple.hpp at line 4, boost/vmd/detail/type_registration.hpp at line 4, boost/vmd/detail/variadic_pop_front.hpp at line 4, boost/vmd/elem.hpp at line 4, boost/vmd/empty.hpp at line 4, boost/vmd/enum.hpp at line 4, boost/vmd/equal.hpp at line 4, boost/vmd/get_type.hpp at line 4, boost/vmd/identity.hpp at line 4, boost/vmd/is_array.hpp at line 4, boost/vmd/is_empty.hpp at line 4, boost/vmd/is_empty_array.hpp at line 4, boost/vmd/is_empty_list.hpp at line 4, boost/vmd/is_identifier.hpp at line 4, boost/vmd/is_list.hpp at line 4, boost/vmd/is_multi.hpp at line 4, boost/vmd/is_number.hpp at line 4, boost/vmd/is_parens_empty.hpp at line 4, boost/vmd/is_seq.hpp at line 4, boost/vmd/is_tuple.hpp at line 4, boost/vmd/is_type.hpp at line 4, boost/vmd/is_unary.hpp at line 4, boost/vmd/list.hpp at line 4, boost/vmd/list/to_seq.hpp at line 4, boost/vmd/list/to_tuple.hpp at line 4, boost/vmd/not_equal.hpp at line 4, boost/vmd/seq.hpp at line 4, boost/vmd/seq/is_vmd_seq.hpp at line 4, boost/vmd/seq/pop_back.hpp at line 4, boost/vmd/seq/pop_front.hpp at line 4, boost/vmd/seq/push_back.hpp at line 4, boost/vmd/seq/push_front.hpp at line 4, boost/vmd/seq/remove.hpp at line 4, boost/vmd/seq/size.hpp at line 4, boost/vmd/seq/to_array.hpp at line 4, boost/vmd/seq/to_list.hpp at line 4, boost/vmd/seq/to_tuple.hpp at line 4, boost/vmd/size.hpp at line 4, boost/vmd/to_array.hpp at line 4, boost/vmd/to_list.hpp at line 4, boost/vmd/to_seq.hpp at line 4, boost/vmd/to_tuple.hpp at line 4, boost/vmd/tuple.hpp at line 4, boost/vmd/tuple/is_vmd_tuple.hpp at line 4, boost/vmd/tuple/pop_back.hpp at line 4, boost/vmd/tuple/pop_front.hpp at line 4, boost/vmd/tuple/push_back.hpp at line 4, boost/vmd/tuple/push_front.hpp at line 4, boost/vmd/tuple/remove.hpp at line 4, boost/vmd/tuple/size.hpp at line 4, boost/vmd/tuple/to_array.hpp at line 4, boost/vmd/tuple/to_list.hpp at line 4, boost/vmd/tuple/to_seq.hpp at line 4, boost/vmd/vmd.hpp at line 4
+ License text:
+ // Use, modification and distribution are subject to the Boost Software License,
+ // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt).
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/call_traits.hpp [2:4]
+ boost/chrono/chrono_io.hpp [6:8]
+ boost/chrono/clock_string.hpp [3:5]
+ boost/chrono/include.hpp [5:7]
+ boost/chrono/io/duration_get.hpp [3:5]
+ boost/chrono/io/duration_io.hpp [3:5]
+ boost/chrono/io/duration_put.hpp [3:5]
+ boost/chrono/io/duration_style.hpp [3:5]
+ boost/chrono/io/duration_units.hpp [3:5]
+ boost/chrono/io/ios_base_state.hpp [2:4]
+ boost/chrono/io/time_point_get.hpp [3:5]
+ boost/chrono/io/time_point_put.hpp [3:5]
+ boost/chrono/io/time_point_units.hpp [4:6]
+ boost/chrono/io/timezone.hpp [3:5]
+ boost/chrono/io/utility/to_string.hpp [4:6]
+ boost/chrono/io_v1/chrono_io.hpp [6:8]
+ boost/compressed_pair.hpp [2:4]
+ boost/detail/call_traits.hpp [2:4]
+ boost/detail/compressed_pair.hpp [2:4]
+ boost/detail/has_default_constructor.hpp [3:5]
+ boost/detail/ob_compressed_pair.hpp [2:4]
+ boost/ratio/detail/ratio_io.hpp [5:7]
+ boost/ratio/mpl/abs.hpp [4:6]
+ boost/ratio/mpl/divides.hpp [4:6]
+ boost/ratio/mpl/equal_to.hpp [4:6]
+ boost/ratio/mpl/gcd.hpp [4:6]
+ boost/ratio/mpl/greater.hpp [4:6]
+ boost/ratio/mpl/greater_equal.hpp [4:6]
+ boost/ratio/mpl/lcm.hpp [4:6]
+ boost/ratio/mpl/less.hpp [4:6]
+ boost/ratio/mpl/less_equal.hpp [4:6]
+ boost/ratio/mpl/minus.hpp [4:6]
+ boost/ratio/mpl/negate.hpp [4:6]
+ boost/ratio/mpl/not_equal_to.hpp [4:6]
+ boost/ratio/mpl/numeric_cast.hpp [4:6]
+ boost/ratio/mpl/plus.hpp [4:6]
+ boost/ratio/mpl/rational_c_tag.hpp [4:6]
+ boost/ratio/mpl/sign.hpp [4:6]
+ boost/ratio/mpl/times.hpp [4:6]
+ boost/ratio/ratio_io.hpp [5:7]
+ boost/tti/detail/dcomp_mem_fun.hpp [3:5]
+ boost/tti/detail/ddata.hpp [3:5]
+ boost/tti/detail/ddeftype.hpp [3:5]
+ boost/tti/detail/dftclass.hpp [3:5]
+ boost/tti/detail/dfunction.hpp [3:5]
+ boost/tti/detail/dlambda.hpp [3:5]
+ boost/tti/detail/dmem_data.hpp [3:5]
+ boost/tti/detail/dmem_fun.hpp [3:5]
+ boost/tti/detail/dmem_type.hpp [3:5]
+ boost/tti/detail/dmetafunc.hpp [3:5]
+ boost/tti/detail/dnotype.hpp [3:5]
+ boost/tti/detail/dnullptr.hpp [3:5]
+ boost/tti/detail/dplaceholder.hpp [3:5]
+ boost/tti/detail/dptmf.hpp [3:5]
+ boost/tti/detail/dstatic_mem_data.hpp [3:5]
+ boost/tti/detail/dstatic_mem_fun.hpp [3:5]
+ boost/tti/detail/dtclass.hpp [3:5]
+ boost/tti/detail/dtemplate.hpp [3:5]
+ boost/tti/detail/dtemplate_params.hpp [3:5]
+ boost/tti/detail/dtfunction.hpp [3:5]
+ boost/tti/detail/dtype.hpp [3:5]
+ boost/tti/detail/dvm_template_params.hpp [3:5]
+ boost/tti/gen/has_data_gen.hpp [3:5]
+ boost/tti/gen/has_function_gen.hpp [3:5]
+ boost/tti/gen/has_member_data_gen.hpp [3:5]
+ boost/tti/gen/has_member_function_gen.hpp [3:5]
+ boost/tti/gen/has_static_member_data_gen.hpp [3:5]
+ boost/tti/gen/has_static_member_function_gen.hpp [3:5]
+ boost/tti/gen/has_template_gen.hpp [3:5]
+ boost/tti/gen/has_type_gen.hpp [3:5]
+ boost/tti/gen/member_type_gen.hpp [3:5]
+ boost/tti/gen/namespace_gen.hpp [3:5]
+ boost/tti/has_data.hpp [3:5]
+ boost/tti/has_function.hpp [3:5]
+ boost/tti/has_member_data.hpp [3:5]
+ boost/tti/has_member_function.hpp [3:5]
+ boost/tti/has_static_member_data.hpp [3:5]
+ boost/tti/has_static_member_function.hpp [3:5]
+ boost/tti/has_template.hpp [3:5]
+ boost/tti/has_type.hpp [3:5]
+ boost/tti/member_type.hpp [3:5]
+ boost/tti/tti.hpp [3:5]
+ boost/type_traits.hpp [2:4]
+ boost/type_traits/add_const.hpp [4:6]
+ boost/type_traits/add_cv.hpp [4:6]
+ boost/type_traits/add_pointer.hpp [3:5]
+ boost/type_traits/add_reference.hpp [3:5]
+ boost/type_traits/add_volatile.hpp [4:6]
+ boost/type_traits/alignment_of.hpp [3:5]
+ boost/type_traits/alignment_traits.hpp [3:5]
+ boost/type_traits/arithmetic_traits.hpp [2:4]
+ boost/type_traits/array_traits.hpp [3:5]
+ boost/type_traits/broken_compiler_spec.hpp [3:5]
+ boost/type_traits/composite_traits.hpp [3:5]
+ boost/type_traits/conditional.hpp [2:4]
+ boost/type_traits/config.hpp [3:5]
+ boost/type_traits/conversion_traits.hpp [6:8]
+ boost/type_traits/cv_traits.hpp [3:5]
+ boost/type_traits/decay.hpp [2:4]
+ boost/type_traits/detail/config.hpp [3:5]
+ boost/type_traits/detail/has_binary_operator.hpp [3:5]
+ boost/type_traits/detail/has_postfix_operator.hpp [3:5]
+ boost/type_traits/detail/has_prefix_operator.hpp [3:5]
+ boost/type_traits/detail/ice_and.hpp [3:5]
+ boost/type_traits/detail/ice_eq.hpp [2:4]
+ boost/type_traits/detail/ice_not.hpp [2:4]
+ boost/type_traits/detail/ice_or.hpp [2:4]
+ boost/type_traits/detail/is_function_ptr_helper.hpp [5:7]
+ boost/type_traits/detail/is_mem_fun_pointer_impl.hpp [4:6]
+ boost/type_traits/detail/is_mem_fun_pointer_tester.hpp [4:6]
+ boost/type_traits/detail/yes_no_type.hpp [3:5]
+ boost/type_traits/extent.hpp [3:5]
+ boost/type_traits/function_traits.hpp [3:5]
+ boost/type_traits/has_bit_and.hpp [3:5]
+ boost/type_traits/has_bit_and_assign.hpp [3:5]
+ boost/type_traits/has_bit_or.hpp [3:5]
+ boost/type_traits/has_bit_or_assign.hpp [3:5]
+ boost/type_traits/has_bit_xor.hpp [3:5]
+ boost/type_traits/has_bit_xor_assign.hpp [3:5]
+ boost/type_traits/has_complement.hpp [3:5]
+ boost/type_traits/has_dereference.hpp [3:5]
+ boost/type_traits/has_divides.hpp [3:5]
+ boost/type_traits/has_divides_assign.hpp [3:5]
+ boost/type_traits/has_equal_to.hpp [3:5]
+ boost/type_traits/has_greater.hpp [3:5]
+ boost/type_traits/has_greater_equal.hpp [3:5]
+ boost/type_traits/has_left_shift.hpp [3:5]
+ boost/type_traits/has_left_shift_assign.hpp [3:5]
+ boost/type_traits/has_less.hpp [3:5]
+ boost/type_traits/has_less_equal.hpp [3:5]
+ boost/type_traits/has_logical_and.hpp [3:5]
+ boost/type_traits/has_logical_not.hpp [3:5]
+ boost/type_traits/has_logical_or.hpp [3:5]
+ boost/type_traits/has_minus.hpp [3:5]
+ boost/type_traits/has_minus_assign.hpp [3:5]
+ boost/type_traits/has_modulus.hpp [3:5]
+ boost/type_traits/has_modulus_assign.hpp [3:5]
+ boost/type_traits/has_multiplies.hpp [3:5]
+ boost/type_traits/has_multiplies_assign.hpp [3:5]
+ boost/type_traits/has_negate.hpp [3:5]
+ boost/type_traits/has_new_operator.hpp [3:5]
+ boost/type_traits/has_not_equal_to.hpp [3:5]
+ boost/type_traits/has_nothrow_assign.hpp [3:5]
+ boost/type_traits/has_nothrow_constructor.hpp [3:5]
+ boost/type_traits/has_nothrow_copy.hpp [3:5]
+ boost/type_traits/has_nothrow_destructor.hpp [3:5]
+ boost/type_traits/has_operator.hpp [3:5]
+ boost/type_traits/has_plus.hpp [3:5]
+ boost/type_traits/has_post_decrement.hpp [3:5]
+ boost/type_traits/has_post_increment.hpp [3:5]
+ boost/type_traits/has_pre_decrement.hpp [3:5]
+ boost/type_traits/has_pre_increment.hpp [3:5]
+ boost/type_traits/has_right_shift.hpp [3:5]
+ boost/type_traits/has_right_shift_assign.hpp [3:5]
+ boost/type_traits/has_trivial_assign.hpp [3:5]
+ boost/type_traits/has_trivial_constructor.hpp [3:5]
+ boost/type_traits/has_trivial_copy.hpp [3:5]
+ boost/type_traits/has_trivial_destructor.hpp [3:5]
+ boost/type_traits/has_trivial_move_assign.hpp [5:7]
+ boost/type_traits/has_trivial_move_constructor.hpp [5:7]
+ boost/type_traits/has_unary_minus.hpp [3:5]
+ boost/type_traits/has_unary_plus.hpp [3:5]
+ boost/type_traits/has_virtual_destructor.hpp [3:5]
+ boost/type_traits/ice.hpp [3:5]
+ boost/type_traits/intrinsics.hpp [2:4]
+ boost/type_traits/is_arithmetic.hpp [3:5]
+ boost/type_traits/is_array.hpp [4:6]
+ boost/type_traits/is_assignable.hpp [3:5]
+ boost/type_traits/is_base_and_derived.hpp [3:5]
+ boost/type_traits/is_base_of.hpp [3:5]
+ boost/type_traits/is_base_of_tr1.hpp [3:5]
+ boost/type_traits/is_class.hpp [3:5]
+ boost/type_traits/is_complete.hpp [3:5]
+ boost/type_traits/is_complex.hpp [2:4]
+ boost/type_traits/is_compound.hpp [3:5]
+ boost/type_traits/is_const.hpp [6:8]
+ boost/type_traits/is_constructible.hpp [3:5]
+ boost/type_traits/is_convertible.hpp [6:8]
+ boost/type_traits/is_copy_assignable.hpp [3:5]
+ boost/type_traits/is_copy_constructible.hpp [3:5]
+ boost/type_traits/is_default_constructible.hpp [3:5]
+ boost/type_traits/is_destructible.hpp [3:5]
+ boost/type_traits/is_empty.hpp [3:5]
+ boost/type_traits/is_enum.hpp [4:6]
+ boost/type_traits/is_final.hpp [4:6]
+ boost/type_traits/is_float.hpp [2:4]
+ boost/type_traits/is_floating_point.hpp [2:4]
+ boost/type_traits/is_function.hpp [5:7]
+ boost/type_traits/is_fundamental.hpp [3:5]
+ boost/type_traits/is_integral.hpp [3:5]
+ boost/type_traits/is_lvalue_reference.hpp [6:8]
+ boost/type_traits/is_member_function_pointer.hpp [4:6]
+ boost/type_traits/is_member_object_pointer.hpp [3:5]
+ boost/type_traits/is_member_pointer.hpp [6:8]
+ boost/type_traits/is_nothrow_move_assignable.hpp [5:7]
+ boost/type_traits/is_nothrow_move_constructible.hpp [5:7]
+ boost/type_traits/is_object.hpp [3:5]
+ boost/type_traits/is_pod.hpp [3:5]
+ boost/type_traits/is_pointer.hpp [6:8]
+ boost/type_traits/is_polymorphic.hpp [2:4]
+ boost/type_traits/is_reference.hpp [6:8]
+ boost/type_traits/is_rvalue_reference.hpp [3:5]
+ boost/type_traits/is_same.hpp [6:8]
+ boost/type_traits/is_scalar.hpp [3:5]
+ boost/type_traits/is_signed.hpp [3:5]
+ boost/type_traits/is_stateless.hpp [3:5]
+ boost/type_traits/is_union.hpp [4:6]
+ boost/type_traits/is_unsigned.hpp [3:5]
+ boost/type_traits/is_virtual_base_of.hpp [2:4]
+ boost/type_traits/is_void.hpp [3:5]
+ boost/type_traits/is_volatile.hpp [6:8]
+ boost/type_traits/make_signed.hpp [3:5]
+ boost/type_traits/make_unsigned.hpp [3:5]
+ boost/type_traits/object_traits.hpp [2:4]
+ boost/type_traits/rank.hpp [3:5]
+ boost/type_traits/reference_traits.hpp [3:5]
+ boost/type_traits/remove_all_extents.hpp [3:5]
+ boost/type_traits/remove_bounds.hpp [3:5]
+ boost/type_traits/remove_const.hpp [4:6]
+ boost/type_traits/remove_cv.hpp [4:6]
+ boost/type_traits/remove_cv_ref.hpp [3:5]
+ boost/type_traits/remove_extent.hpp [3:5]
+ boost/type_traits/remove_pointer.hpp [3:5]
+ boost/type_traits/remove_reference.hpp [3:5]
+ boost/type_traits/remove_volatile.hpp [4:6]
+ boost/type_traits/same_traits.hpp [2:4]
+ boost/type_traits/transform_traits.hpp [2:4]
+ boost/type_traits/type_with_alignment.hpp [2:4]
+ boost/vmd/array.hpp [3:5]
+ boost/vmd/array/to_seq.hpp [3:5]
+ boost/vmd/array/to_tuple.hpp [3:5]
+ boost/vmd/assert.hpp [3:5]
+ boost/vmd/assert_is_array.hpp [3:5]
+ boost/vmd/assert_is_empty.hpp [3:5]
+ boost/vmd/assert_is_identifier.hpp [3:5]
+ boost/vmd/assert_is_list.hpp [3:5]
+ boost/vmd/assert_is_number.hpp [3:5]
+ boost/vmd/assert_is_seq.hpp [3:5]
+ boost/vmd/assert_is_tuple.hpp [3:5]
+ boost/vmd/assert_is_type.hpp [3:5]
+ boost/vmd/detail/adjust_tuple_type.hpp [3:5]
+ boost/vmd/detail/array.hpp [3:5]
+ boost/vmd/detail/assert.hpp [3:5]
+ boost/vmd/detail/data_equal.hpp [3:5]
+ boost/vmd/detail/data_equal_common.hpp [3:5]
+ boost/vmd/detail/empty_result.hpp [3:5]
+ boost/vmd/detail/equal.hpp [3:5]
+ boost/vmd/detail/equal_common.hpp [3:5]
+ boost/vmd/detail/equal_type.hpp [3:5]
+ boost/vmd/detail/identifier.hpp [3:5]
+ boost/vmd/detail/identifier_concat.hpp [3:5]
+ boost/vmd/detail/identifier_type.hpp [3:5]
+ boost/vmd/detail/idprefix.hpp [3:5]
+ boost/vmd/detail/is_array.hpp [3:5]
+ boost/vmd/detail/is_array_common.hpp [3:5]
+ boost/vmd/detail/is_empty.hpp [3:5]
+ boost/vmd/detail/is_empty_array.hpp [3:5]
+ boost/vmd/detail/is_empty_tuple.hpp [3:5]
+ boost/vmd/detail/is_entire.hpp [3:5]
+ boost/vmd/detail/is_identifier.hpp [3:5]
+ boost/vmd/detail/is_list.hpp [3:5]
+ boost/vmd/detail/is_number.hpp [3:5]
+ boost/vmd/detail/is_seq.hpp [3:5]
+ boost/vmd/detail/is_tuple.hpp [3:5]
+ boost/vmd/detail/is_type.hpp [3:5]
+ boost/vmd/detail/is_type_type.hpp [3:5]
+ boost/vmd/detail/list.hpp [3:5]
+ boost/vmd/detail/match_identifier.hpp [3:5]
+ boost/vmd/detail/match_identifier_common.hpp [3:5]
+ boost/vmd/detail/match_single_identifier.hpp [3:5]
+ boost/vmd/detail/modifiers.hpp [3:5]
+ boost/vmd/detail/mods.hpp [3:5]
+ boost/vmd/detail/nil_registration.hpp [3:5]
+ boost/vmd/detail/not_empty.hpp [3:5]
+ boost/vmd/detail/number_registration.hpp [3:5]
+ boost/vmd/detail/only_after.hpp [3:5]
+ boost/vmd/detail/parens.hpp [3:5]
+ boost/vmd/detail/parens_common.hpp [3:5]
+ boost/vmd/detail/parens_split.hpp [3:5]
+ boost/vmd/detail/recurse/data_equal/data_equal_1.hpp [3:5]
+ boost/vmd/detail/recurse/data_equal/data_equal_10.hpp [3:5]
+ boost/vmd/detail/recurse/data_equal/data_equal_11.hpp [3:5]
+ boost/vmd/detail/recurse/data_equal/data_equal_12.hpp [3:5]
+ boost/vmd/detail/recurse/data_equal/data_equal_13.hpp [3:5]
+ boost/vmd/detail/recurse/data_equal/data_equal_14.hpp [3:5]
+ boost/vmd/detail/recurse/data_equal/data_equal_15.hpp [3:5]
+ boost/vmd/detail/recurse/data_equal/data_equal_16.hpp [3:5]
+ boost/vmd/detail/recurse/data_equal/data_equal_2.hpp [3:5]
+ boost/vmd/detail/recurse/data_equal/data_equal_3.hpp [3:5]
+ boost/vmd/detail/recurse/data_equal/data_equal_4.hpp [3:5]
+ boost/vmd/detail/recurse/data_equal/data_equal_5.hpp [3:5]
+ boost/vmd/detail/recurse/data_equal/data_equal_6.hpp [3:5]
+ boost/vmd/detail/recurse/data_equal/data_equal_7.hpp [3:5]
+ boost/vmd/detail/recurse/data_equal/data_equal_8.hpp [3:5]
+ boost/vmd/detail/recurse/data_equal/data_equal_9.hpp [3:5]
+ boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp [3:5]
+ boost/vmd/detail/recurse/data_equal/data_equal_specific.hpp [3:5]
+ boost/vmd/detail/recurse/equal/equal_1.hpp [3:5]
+ boost/vmd/detail/recurse/equal/equal_10.hpp [3:5]
+ boost/vmd/detail/recurse/equal/equal_11.hpp [3:5]
+ boost/vmd/detail/recurse/equal/equal_12.hpp [3:5]
+ boost/vmd/detail/recurse/equal/equal_13.hpp [3:5]
+ boost/vmd/detail/recurse/equal/equal_14.hpp [3:5]
+ boost/vmd/detail/recurse/equal/equal_15.hpp [3:5]
+ boost/vmd/detail/recurse/equal/equal_16.hpp [3:5]
+ boost/vmd/detail/recurse/equal/equal_2.hpp [3:5]
+ boost/vmd/detail/recurse/equal/equal_3.hpp [3:5]
+ boost/vmd/detail/recurse/equal/equal_4.hpp [3:5]
+ boost/vmd/detail/recurse/equal/equal_5.hpp [3:5]
+ boost/vmd/detail/recurse/equal/equal_6.hpp [3:5]
+ boost/vmd/detail/recurse/equal/equal_7.hpp [3:5]
+ boost/vmd/detail/recurse/equal/equal_8.hpp [3:5]
+ boost/vmd/detail/recurse/equal/equal_9.hpp [3:5]
+ boost/vmd/detail/recurse/equal/equal_headers.hpp [3:5]
+ boost/vmd/detail/seq.hpp [3:5]
+ boost/vmd/detail/sequence_arity.hpp [3:5]
+ boost/vmd/detail/sequence_common.hpp [3:5]
+ boost/vmd/detail/sequence_elem.hpp [3:5]
+ boost/vmd/detail/sequence_enum.hpp [3:5]
+ boost/vmd/detail/sequence_size.hpp [3:5]
+ boost/vmd/detail/sequence_to_array.hpp [3:5]
+ boost/vmd/detail/sequence_to_list.hpp [3:5]
+ boost/vmd/detail/sequence_to_seq.hpp [3:5]
+ boost/vmd/detail/sequence_to_tuple.hpp [3:5]
+ boost/vmd/detail/sequence_type.hpp [3:5]
+ boost/vmd/detail/setup.hpp [3:5]
+ boost/vmd/detail/tuple.hpp [3:5]
+ boost/vmd/detail/type_registration.hpp [3:5]
+ boost/vmd/detail/variadic_pop_front.hpp [3:5]
+ boost/vmd/elem.hpp [3:5]
+ boost/vmd/empty.hpp [3:5]
+ boost/vmd/enum.hpp [3:5]
+ boost/vmd/equal.hpp [3:5]
+ boost/vmd/get_type.hpp [3:5]
+ boost/vmd/identity.hpp [3:5]
+ boost/vmd/is_array.hpp [3:5]
+ boost/vmd/is_empty.hpp [3:5]
+ boost/vmd/is_empty_array.hpp [3:5]
+ boost/vmd/is_empty_list.hpp [3:5]
+ boost/vmd/is_identifier.hpp [3:5]
+ boost/vmd/is_list.hpp [3:5]
+ boost/vmd/is_multi.hpp [3:5]
+ boost/vmd/is_number.hpp [3:5]
+ boost/vmd/is_parens_empty.hpp [3:5]
+ boost/vmd/is_seq.hpp [3:5]
+ boost/vmd/is_tuple.hpp [3:5]
+ boost/vmd/is_type.hpp [3:5]
+ boost/vmd/is_unary.hpp [3:5]
+ boost/vmd/list.hpp [3:5]
+ boost/vmd/list/to_seq.hpp [3:5]
+ boost/vmd/list/to_tuple.hpp [3:5]
+ boost/vmd/not_equal.hpp [3:5]
+ boost/vmd/seq.hpp [3:5]
+ boost/vmd/seq/is_vmd_seq.hpp [3:5]
+ boost/vmd/seq/pop_back.hpp [3:5]
+ boost/vmd/seq/pop_front.hpp [3:5]
+ boost/vmd/seq/push_back.hpp [3:5]
+ boost/vmd/seq/push_front.hpp [3:5]
+ boost/vmd/seq/remove.hpp [3:5]
+ boost/vmd/seq/size.hpp [3:5]
+ boost/vmd/seq/to_array.hpp [3:5]
+ boost/vmd/seq/to_list.hpp [3:5]
+ boost/vmd/seq/to_tuple.hpp [3:5]
+ boost/vmd/size.hpp [3:5]
+ boost/vmd/to_array.hpp [3:5]
+ boost/vmd/to_list.hpp [3:5]
+ boost/vmd/to_seq.hpp [3:5]
+ boost/vmd/to_tuple.hpp [3:5]
+ boost/vmd/tuple.hpp [3:5]
+ boost/vmd/tuple/is_vmd_tuple.hpp [3:5]
+ boost/vmd/tuple/pop_back.hpp [3:5]
+ boost/vmd/tuple/pop_front.hpp [3:5]
+ boost/vmd/tuple/push_back.hpp [3:5]
+ boost/vmd/tuple/push_front.hpp [3:5]
+ boost/vmd/tuple/remove.hpp [3:5]
+ boost/vmd/tuple/size.hpp [3:5]
+ boost/vmd/tuple/to_array.hpp [3:5]
+ boost/vmd/tuple/to_list.hpp [3:5]
+ boost/vmd/tuple/to_seq.hpp [3:5]
+ boost/vmd/vmd.hpp [3:5]
+
+KEEP BSL-1.0 7532067c3573c5daab384401428cd124
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/proto/detail/template_arity.hpp at line 7, boost/proto/transform/integral_c.hpp at line 7
+ License text:
+ // Copyright 2011 Eric Niebler. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/proto/detail/template_arity.hpp [5:7]
+ boost/proto/transform/integral_c.hpp [5:7]
+
+KEEP BSL-1.0 7593fec1642a6ccc15d9c9dadadd5985
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signals/connection.hpp at line 5, boost/signals/detail/named_slot_map.hpp at line 5, boost/signals/detail/signal_base.hpp at line 5, boost/signals/detail/signals_common.hpp at line 5, boost/signals/detail/slot_call_iterator.hpp at line 5, boost/signals/signal_template.hpp at line 5, boost/signals/slot.hpp at line 5, boost/signals/trackable.hpp at line 5, boost/signals2/detail/preprocessed_arg_type.hpp at line 7, boost/signals2/detail/slot_template.hpp at line 7, boost/signals2/detail/tracked_objects_visitor.hpp at line 7, boost/signals2/preprocessed_slot.hpp at line 7, boost/signals2/slot_base.hpp at line 7, boost/signals2/trackable.hpp at line 7
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/signals/connection.hpp [3:6]
+ boost/signals/detail/named_slot_map.hpp [3:6]
+ boost/signals/detail/signal_base.hpp [3:6]
+ boost/signals/detail/signals_common.hpp [3:6]
+ boost/signals/detail/slot_call_iterator.hpp [3:6]
+ boost/signals/signal_template.hpp [3:6]
+ boost/signals/slot.hpp [3:6]
+ boost/signals/trackable.hpp [3:6]
+ boost/signals2/detail/preprocessed_arg_type.hpp [5:8]
+ boost/signals2/detail/slot_template.hpp [5:8]
+ boost/signals2/detail/tracked_objects_visitor.hpp [5:8]
+ boost/signals2/preprocessed_slot.hpp [5:8]
+ boost/signals2/slot_base.hpp [5:8]
+ boost/signals2/trackable.hpp [5:8]
+
+KEEP BSL-1.0 75a19a6388a7f4489e2a025313437ca8
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/allocators/adaptive_pool.hpp at line 5, boost/interprocess/allocators/allocator.hpp at line 5, boost/interprocess/allocators/cached_adaptive_pool.hpp at line 5, boost/interprocess/allocators/cached_node_allocator.hpp at line 5, boost/interprocess/allocators/detail/adaptive_node_pool.hpp at line 5, boost/interprocess/allocators/detail/node_pool.hpp at line 5, boost/interprocess/allocators/node_allocator.hpp at line 5, boost/interprocess/allocators/private_adaptive_pool.hpp at line 5, boost/interprocess/allocators/private_node_allocator.hpp at line 5, boost/interprocess/anonymous_shared_memory.hpp at line 5, boost/interprocess/creation_tags.hpp at line 5, boost/interprocess/detail/cast_tags.hpp at line 5, boost/interprocess/detail/config_begin.hpp at line 5, boost/interprocess/detail/config_end.hpp at line 5, boost/interprocess/detail/in_place_interface.hpp at line 5, boost/interprocess/detail/intersegment_ptr.hpp at line 5, boost/interprocess/detail/managed_memory_impl.hpp at line 5, boost/interprocess/detail/managed_multi_shared_memory.hpp at line 5, boost/interprocess/detail/named_proxy.hpp at line 5, boost/interprocess/detail/os_file_functions.hpp at line 5, boost/interprocess/detail/posix_time_types_wrk.hpp at line 5, boost/interprocess/detail/segment_manager_helper.hpp at line 5, boost/interprocess/errors.hpp at line 5, boost/interprocess/file_mapping.hpp at line 5, boost/interprocess/indexes/flat_map_index.hpp at line 5, boost/interprocess/indexes/iset_index.hpp at line 5, boost/interprocess/indexes/iunordered_set_index.hpp at line 5, boost/interprocess/indexes/map_index.hpp at line 5, boost/interprocess/indexes/null_index.hpp at line 5, boost/interprocess/indexes/unordered_map_index.hpp at line 5, boost/interprocess/interprocess_fwd.hpp at line 5, boost/interprocess/ipc/message_queue.hpp at line 5, boost/interprocess/managed_external_buffer.hpp at line 5, boost/interprocess/managed_heap_memory.hpp at line 5, boost/interprocess/managed_mapped_file.hpp at line 5, boost/interprocess/managed_shared_memory.hpp at line 5, boost/interprocess/managed_windows_shared_memory.hpp at line 5, boost/interprocess/mapped_region.hpp at line 5, boost/interprocess/mem_algo/detail/mem_algo_common.hpp at line 5, boost/interprocess/mem_algo/detail/simple_seq_fit_impl.hpp at line 5, boost/interprocess/mem_algo/rbtree_best_fit.hpp at line 5, boost/interprocess/mem_algo/simple_seq_fit.hpp at line 5, boost/interprocess/permissions.hpp at line 5, boost/interprocess/segment_manager.hpp at line 5, boost/interprocess/shared_memory_object.hpp at line 5, boost/interprocess/streams/bufferstream.hpp at line 5, boost/interprocess/streams/vectorstream.hpp at line 5, boost/interprocess/sync/detail/condition_algorithm_8a.hpp at line 5, boost/interprocess/sync/file_lock.hpp at line 5, boost/interprocess/sync/interprocess_condition.hpp at line 5, boost/interprocess/sync/interprocess_mutex.hpp at line 5, boost/interprocess/sync/interprocess_recursive_mutex.hpp at line 5, boost/interprocess/sync/interprocess_semaphore.hpp at line 5, boost/interprocess/sync/interprocess_sharable_mutex.hpp at line 9, boost/interprocess/sync/interprocess_upgradable_mutex.hpp at line 7, boost/interprocess/sync/lock_options.hpp at line 5, boost/interprocess/sync/mutex_family.hpp at line 5, boost/interprocess/sync/named_condition.hpp at line 5, boost/interprocess/sync/named_condition_any.hpp at line 5, boost/interprocess/sync/named_mutex.hpp at line 5, boost/interprocess/sync/named_recursive_mutex.hpp at line 5, boost/interprocess/sync/named_semaphore.hpp at line 5, boost/interprocess/sync/named_sharable_mutex.hpp at line 5, boost/interprocess/sync/named_upgradable_mutex.hpp at line 5, boost/interprocess/sync/null_mutex.hpp at line 5, boost/interprocess/sync/posix/condition.hpp at line 5, boost/interprocess/sync/posix/mutex.hpp at line 5, boost/interprocess/sync/posix/named_mutex.hpp at line 5, boost/interprocess/sync/posix/named_semaphore.hpp at line 5, boost/interprocess/sync/posix/pthread_helpers.hpp at line 5, boost/interprocess/sync/posix/ptime_to_timespec.hpp at line 5, boost/interprocess/sync/posix/recursive_mutex.hpp at line 5, boost/interprocess/sync/posix/semaphore.hpp at line 5, boost/interprocess/sync/posix/semaphore_wrapper.hpp at line 5, boost/interprocess/sync/scoped_lock.hpp at line 5, boost/interprocess/sync/sharable_lock.hpp at line 5, boost/interprocess/sync/shm/named_condition.hpp at line 5, boost/interprocess/sync/shm/named_condition_any.hpp at line 5, boost/interprocess/sync/shm/named_mutex.hpp at line 5, boost/interprocess/sync/shm/named_recursive_mutex.hpp at line 5, boost/interprocess/sync/shm/named_semaphore.hpp at line 5, boost/interprocess/sync/shm/named_upgradable_mutex.hpp at line 5, boost/interprocess/sync/spin/condition.hpp at line 5, boost/interprocess/sync/spin/mutex.hpp at line 5, boost/interprocess/sync/spin/recursive_mutex.hpp at line 5, boost/interprocess/sync/spin/semaphore.hpp at line 5, boost/interprocess/sync/upgradable_lock.hpp at line 5, boost/interprocess/sync/windows/condition.hpp at line 5, boost/interprocess/sync/windows/mutex.hpp at line 5, boost/interprocess/sync/windows/recursive_mutex.hpp at line 5, boost/interprocess/sync/windows/semaphore.hpp at line 5, boost/interprocess/sync/windows/sync_utils.hpp at line 5, boost/interprocess/windows_shared_memory.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/interprocess/allocators/adaptive_pool.hpp [3:5]
+ boost/interprocess/allocators/allocator.hpp [3:5]
+ boost/interprocess/allocators/cached_adaptive_pool.hpp [3:5]
+ boost/interprocess/allocators/cached_node_allocator.hpp [3:5]
+ boost/interprocess/allocators/detail/adaptive_node_pool.hpp [3:5]
+ boost/interprocess/allocators/detail/node_pool.hpp [3:5]
+ boost/interprocess/allocators/node_allocator.hpp [3:5]
+ boost/interprocess/allocators/private_adaptive_pool.hpp [3:5]
+ boost/interprocess/allocators/private_node_allocator.hpp [3:5]
+ boost/interprocess/anonymous_shared_memory.hpp [3:5]
+ boost/interprocess/creation_tags.hpp [3:5]
+ boost/interprocess/detail/cast_tags.hpp [3:5]
+ boost/interprocess/detail/config_begin.hpp [3:5]
+ boost/interprocess/detail/config_end.hpp [3:5]
+ boost/interprocess/detail/in_place_interface.hpp [3:5]
+ boost/interprocess/detail/intersegment_ptr.hpp [3:5]
+ boost/interprocess/detail/managed_memory_impl.hpp [3:5]
+ boost/interprocess/detail/managed_multi_shared_memory.hpp [3:5]
+ boost/interprocess/detail/named_proxy.hpp [3:5]
+ boost/interprocess/detail/os_file_functions.hpp [3:5]
+ boost/interprocess/detail/posix_time_types_wrk.hpp [3:5]
+ boost/interprocess/detail/segment_manager_helper.hpp [3:5]
+ boost/interprocess/errors.hpp [3:5]
+ boost/interprocess/file_mapping.hpp [3:5]
+ boost/interprocess/indexes/flat_map_index.hpp [3:5]
+ boost/interprocess/indexes/iset_index.hpp [3:5]
+ boost/interprocess/indexes/iunordered_set_index.hpp [3:5]
+ boost/interprocess/indexes/map_index.hpp [3:5]
+ boost/interprocess/indexes/null_index.hpp [3:5]
+ boost/interprocess/indexes/unordered_map_index.hpp [3:5]
+ boost/interprocess/interprocess_fwd.hpp [3:5]
+ boost/interprocess/ipc/message_queue.hpp [3:5]
+ boost/interprocess/managed_external_buffer.hpp [3:5]
+ boost/interprocess/managed_heap_memory.hpp [3:5]
+ boost/interprocess/managed_mapped_file.hpp [3:5]
+ boost/interprocess/managed_shared_memory.hpp [3:5]
+ boost/interprocess/managed_windows_shared_memory.hpp [3:5]
+ boost/interprocess/mapped_region.hpp [3:5]
+ boost/interprocess/mem_algo/detail/mem_algo_common.hpp [3:5]
+ boost/interprocess/mem_algo/detail/simple_seq_fit_impl.hpp [3:5]
+ boost/interprocess/mem_algo/rbtree_best_fit.hpp [3:5]
+ boost/interprocess/mem_algo/simple_seq_fit.hpp [3:5]
+ boost/interprocess/permissions.hpp [3:5]
+ boost/interprocess/segment_manager.hpp [3:5]
+ boost/interprocess/shared_memory_object.hpp [3:5]
+ boost/interprocess/streams/bufferstream.hpp [3:5]
+ boost/interprocess/streams/vectorstream.hpp [3:5]
+ boost/interprocess/sync/detail/condition_algorithm_8a.hpp [3:5]
+ boost/interprocess/sync/file_lock.hpp [3:5]
+ boost/interprocess/sync/interprocess_condition.hpp [3:5]
+ boost/interprocess/sync/interprocess_mutex.hpp [3:5]
+ boost/interprocess/sync/interprocess_recursive_mutex.hpp [3:5]
+ boost/interprocess/sync/interprocess_semaphore.hpp [3:5]
+ boost/interprocess/sync/interprocess_sharable_mutex.hpp [7:9]
+ boost/interprocess/sync/interprocess_upgradable_mutex.hpp [5:7]
+ boost/interprocess/sync/lock_options.hpp [3:5]
+ boost/interprocess/sync/mutex_family.hpp [3:5]
+ boost/interprocess/sync/named_condition.hpp [3:5]
+ boost/interprocess/sync/named_condition_any.hpp [3:5]
+ boost/interprocess/sync/named_mutex.hpp [3:5]
+ boost/interprocess/sync/named_recursive_mutex.hpp [3:5]
+ boost/interprocess/sync/named_semaphore.hpp [3:5]
+ boost/interprocess/sync/named_sharable_mutex.hpp [3:5]
+ boost/interprocess/sync/named_upgradable_mutex.hpp [3:5]
+ boost/interprocess/sync/null_mutex.hpp [3:5]
+ boost/interprocess/sync/posix/condition.hpp [3:5]
+ boost/interprocess/sync/posix/mutex.hpp [3:5]
+ boost/interprocess/sync/posix/named_mutex.hpp [3:5]
+ boost/interprocess/sync/posix/named_semaphore.hpp [3:5]
+ boost/interprocess/sync/posix/pthread_helpers.hpp [3:5]
+ boost/interprocess/sync/posix/ptime_to_timespec.hpp [3:5]
+ boost/interprocess/sync/posix/recursive_mutex.hpp [3:5]
+ boost/interprocess/sync/posix/semaphore.hpp [3:5]
+ boost/interprocess/sync/posix/semaphore_wrapper.hpp [3:5]
+ boost/interprocess/sync/scoped_lock.hpp [3:5]
+ boost/interprocess/sync/sharable_lock.hpp [3:5]
+ boost/interprocess/sync/shm/named_condition.hpp [3:5]
+ boost/interprocess/sync/shm/named_condition_any.hpp [3:5]
+ boost/interprocess/sync/shm/named_mutex.hpp [3:5]
+ boost/interprocess/sync/shm/named_recursive_mutex.hpp [3:5]
+ boost/interprocess/sync/shm/named_semaphore.hpp [3:5]
+ boost/interprocess/sync/shm/named_upgradable_mutex.hpp [3:5]
+ boost/interprocess/sync/spin/condition.hpp [3:5]
+ boost/interprocess/sync/spin/mutex.hpp [3:5]
+ boost/interprocess/sync/spin/recursive_mutex.hpp [3:5]
+ boost/interprocess/sync/spin/semaphore.hpp [3:5]
+ boost/interprocess/sync/upgradable_lock.hpp [3:5]
+ boost/interprocess/sync/windows/condition.hpp [3:5]
+ boost/interprocess/sync/windows/mutex.hpp [3:5]
+ boost/interprocess/sync/windows/recursive_mutex.hpp [3:5]
+ boost/interprocess/sync/windows/semaphore.hpp [3:5]
+ boost/interprocess/sync/windows/sync_utils.hpp [3:5]
+ boost/interprocess/windows_shared_memory.hpp [3:5]
+
+KEEP BSL-1.0 75ef0605ddf04e80832100a2bfa49411
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/covariance.hpp at line 6, boost/accumulators/statistics/density.hpp at line 7, boost/accumulators/statistics/peaks_over_threshold.hpp at line 6, boost/accumulators/statistics/pot_quantile.hpp at line 6, boost/accumulators/statistics/pot_tail_mean.hpp at line 6, boost/accumulators/statistics/tail_mean.hpp at line 6, boost/accumulators/statistics/tail_quantile.hpp at line 6, boost/accumulators/statistics/tail_variate_means.hpp at line 6, boost/accumulators/statistics/weighted_covariance.hpp at line 6, boost/accumulators/statistics/weighted_density.hpp at line 6, boost/accumulators/statistics/weighted_p_square_cumul_dist.hpp at line 6, boost/accumulators/statistics/weighted_peaks_over_threshold.hpp at line 6, boost/accumulators/statistics/weighted_tail_mean.hpp at line 6, boost/accumulators/statistics/weighted_tail_quantile.hpp at line 6, boost/accumulators/statistics/weighted_tail_variate_means.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/accumulators/statistics/covariance.hpp [4:6]
+ boost/accumulators/statistics/density.hpp [5:7]
+ boost/accumulators/statistics/peaks_over_threshold.hpp [4:6]
+ boost/accumulators/statistics/pot_quantile.hpp [4:6]
+ boost/accumulators/statistics/pot_tail_mean.hpp [4:6]
+ boost/accumulators/statistics/tail_mean.hpp [4:6]
+ boost/accumulators/statistics/tail_quantile.hpp [4:6]
+ boost/accumulators/statistics/tail_variate_means.hpp [4:6]
+ boost/accumulators/statistics/weighted_covariance.hpp [4:6]
+ boost/accumulators/statistics/weighted_density.hpp [4:6]
+ boost/accumulators/statistics/weighted_p_square_cumul_dist.hpp [4:6]
+ boost/accumulators/statistics/weighted_peaks_over_threshold.hpp [4:6]
+ boost/accumulators/statistics/weighted_tail_mean.hpp [4:6]
+ boost/accumulators/statistics/weighted_tail_quantile.hpp [4:6]
+ boost/accumulators/statistics/weighted_tail_variate_means.hpp [4:6]
+
+KEEP BSL-1.0 76283d3ba21930b39430ed67346ed1df
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signals2/predestructible.hpp at line 12
+ License text:
+ //Use, modification and
+ // distribution is subject to the Boost Software License, Version
+ // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/signals2/predestructible.hpp [10:13]
+
+KEEP BSL-1.0 76d332554d0e0dcfe9c9b3caf48262f9
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/function/detail/function_iterate.hpp at line 5, boost/function/detail/maybe_include.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/function/detail/function_iterate.hpp [3:6]
+ boost/function/detail/maybe_include.hpp [3:6]
+
+KEEP BSL-1.0 77795e223e37217964bfdecbffd04c93
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/proto/context/detail/callable_eval.hpp at line 25, boost/proto/context/detail/default_eval.hpp at line 21, boost/proto/context/detail/null_eval.hpp at line 21, boost/proto/detail/and_n.hpp at line 17, boost/proto/detail/args.hpp at line 30, boost/proto/detail/basic_expr.hpp at line 30, boost/proto/detail/class_member_traits.hpp at line 17, boost/proto/detail/deduce_domain_n.hpp at line 23, boost/proto/detail/deep_copy.hpp at line 29, boost/proto/detail/expr.hpp at line 35, boost/proto/detail/extends_funop.hpp at line 27, boost/proto/detail/extends_funop_const.hpp at line 26, boost/proto/detail/funop.hpp at line 25, boost/proto/detail/generate_by_value.hpp at line 17, boost/proto/detail/lambda_matches.hpp at line 23, boost/proto/detail/make_expr.hpp at line 17, boost/proto/detail/make_expr_.hpp at line 17, boost/proto/detail/make_expr_funop.hpp at line 17, boost/proto/detail/matches_.hpp at line 31, boost/proto/detail/memfun_funop.hpp at line 17, boost/proto/detail/or_n.hpp at line 17, boost/proto/detail/poly_function_funop.hpp at line 22, boost/proto/detail/poly_function_traits.hpp at line 17, boost/proto/detail/preprocessed/args.hpp at line 8, boost/proto/detail/preprocessed/class_member_traits.hpp at line 7, boost/proto/detail/preprocessed/make_expr.hpp at line 7, boost/proto/detail/preprocessed/make_expr_funop.hpp at line 7, boost/proto/detail/preprocessed/memfun_funop.hpp at line 7, boost/proto/detail/preprocessed/or_n.hpp at line 7, boost/proto/detail/preprocessed/poly_function_traits.hpp at line 7, boost/proto/detail/preprocessed/template_arity_helper.hpp at line 7, boost/proto/detail/preprocessed/vararg_matches_impl.hpp at line 7, boost/proto/detail/template_arity_helper.hpp at line 17, boost/proto/detail/traits.hpp at line 22, boost/proto/detail/unpack_expr_.hpp at line 82, boost/proto/detail/vararg_matches_impl.hpp at line 17, boost/proto/transform/detail/call.hpp at line 28, boost/proto/transform/detail/construct_funop.hpp at line 17, boost/proto/transform/detail/construct_pod_funop.hpp at line 17, boost/proto/transform/detail/default_function_impl.hpp at line 21, boost/proto/transform/detail/fold_impl.hpp at line 75, boost/proto/transform/detail/lazy.hpp at line 17, boost/proto/transform/detail/make.hpp at line 35, boost/proto/transform/detail/make_gcc_workaround.hpp at line 26, boost/proto/transform/detail/pass_through_impl.hpp at line 37, boost/proto/transform/detail/preprocessed/construct_funop.hpp at line 7, boost/proto/transform/detail/preprocessed/construct_pod_funop.hpp at line 7, boost/proto/transform/detail/preprocessed/lazy.hpp at line 7, boost/proto/transform/detail/preprocessed/when.hpp at line 7, boost/proto/transform/detail/when.hpp at line 17
+ License text:
+ // Copyright 2008 Eric Niebler. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/proto/context/detail/callable_eval.hpp [23:25]
+ boost/proto/context/detail/default_eval.hpp [19:21]
+ boost/proto/context/detail/null_eval.hpp [19:21]
+ boost/proto/detail/and_n.hpp [15:17]
+ boost/proto/detail/args.hpp [28:30]
+ boost/proto/detail/basic_expr.hpp [28:30]
+ boost/proto/detail/class_member_traits.hpp [15:17]
+ boost/proto/detail/deduce_domain_n.hpp [21:23]
+ boost/proto/detail/deep_copy.hpp [27:29]
+ boost/proto/detail/expr.hpp [33:35]
+ boost/proto/detail/extends_funop.hpp [25:27]
+ boost/proto/detail/extends_funop_const.hpp [24:26]
+ boost/proto/detail/funop.hpp [23:25]
+ boost/proto/detail/generate_by_value.hpp [15:17]
+ boost/proto/detail/lambda_matches.hpp [21:23]
+ boost/proto/detail/make_expr.hpp [15:17]
+ boost/proto/detail/make_expr_.hpp [15:17]
+ boost/proto/detail/make_expr_funop.hpp [15:17]
+ boost/proto/detail/matches_.hpp [29:31]
+ boost/proto/detail/memfun_funop.hpp [15:17]
+ boost/proto/detail/or_n.hpp [15:17]
+ boost/proto/detail/poly_function_funop.hpp [20:22]
+ boost/proto/detail/poly_function_traits.hpp [15:17]
+ boost/proto/detail/preprocessed/args.hpp [6:8]
+ boost/proto/detail/preprocessed/class_member_traits.hpp [5:7]
+ boost/proto/detail/preprocessed/make_expr.hpp [5:7]
+ boost/proto/detail/preprocessed/make_expr_funop.hpp [5:7]
+ boost/proto/detail/preprocessed/memfun_funop.hpp [5:7]
+ boost/proto/detail/preprocessed/or_n.hpp [5:7]
+ boost/proto/detail/preprocessed/poly_function_traits.hpp [5:7]
+ boost/proto/detail/preprocessed/template_arity_helper.hpp [5:7]
+ boost/proto/detail/preprocessed/vararg_matches_impl.hpp [5:7]
+ boost/proto/detail/template_arity_helper.hpp [15:17]
+ boost/proto/detail/traits.hpp [20:22]
+ boost/proto/detail/unpack_expr_.hpp [80:82]
+ boost/proto/detail/vararg_matches_impl.hpp [15:17]
+ boost/proto/transform/detail/call.hpp [26:28]
+ boost/proto/transform/detail/construct_funop.hpp [15:17]
+ boost/proto/transform/detail/construct_pod_funop.hpp [15:17]
+ boost/proto/transform/detail/default_function_impl.hpp [19:21]
+ boost/proto/transform/detail/fold_impl.hpp [73:75]
+ boost/proto/transform/detail/lazy.hpp [15:17]
+ boost/proto/transform/detail/make.hpp [33:35]
+ boost/proto/transform/detail/make_gcc_workaround.hpp [24:26]
+ boost/proto/transform/detail/pass_through_impl.hpp [35:37]
+ boost/proto/transform/detail/preprocessed/construct_funop.hpp [5:7]
+ boost/proto/transform/detail/preprocessed/construct_pod_funop.hpp [5:7]
+ boost/proto/transform/detail/preprocessed/lazy.hpp [5:7]
+ boost/proto/transform/detail/preprocessed/when.hpp [5:7]
+ boost/proto/transform/detail/when.hpp [15:17]
+
+KEEP BSL-1.0 78aea327bac86d71b524e110a6804d07
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/numeric/odeint/util/bind.hpp at line 13
+ License text:
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or
+ * copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/numeric/odeint/util/bind.hpp [12:14]
+
+KEEP BSL-1.0 78e141595344e7e88ebac427a369a9d6
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/p_square_cumulative_distribution.hpp at line 6, boost/accumulators/statistics/weighted_p_square_cumulative_distribution.hpp at line 6, boost/proto/detail/any.hpp at line 7, boost/proto/functional/range.hpp at line 7, boost/proto/functional/range/begin.hpp at line 7, boost/proto/functional/range/empty.hpp at line 7, boost/proto/functional/range/end.hpp at line 7, boost/proto/functional/range/rbegin.hpp at line 7, boost/proto/functional/range/rend.hpp at line 7, boost/proto/functional/range/size.hpp at line 7, boost/proto/functional/std/iterator.hpp at line 7, boost/proto/transform/detail/pack.hpp at line 7, boost/proto/transform/env.hpp at line 7
+ License text:
+ // Copyright 2012 Eric Niebler. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/accumulators/statistics/p_square_cumulative_distribution.hpp [4:6]
+ boost/accumulators/statistics/weighted_p_square_cumulative_distribution.hpp [4:6]
+ boost/proto/detail/any.hpp [5:7]
+ boost/proto/functional/range.hpp [5:7]
+ boost/proto/functional/range/begin.hpp [5:7]
+ boost/proto/functional/range/empty.hpp [5:7]
+ boost/proto/functional/range/end.hpp [5:7]
+ boost/proto/functional/range/rbegin.hpp [5:7]
+ boost/proto/functional/range/rend.hpp [5:7]
+ boost/proto/functional/range/size.hpp [5:7]
+ boost/proto/functional/std/iterator.hpp [5:7]
+ boost/proto/transform/detail/pack.hpp [5:7]
+ boost/proto/transform/env.hpp [5:7]
+
+KEEP BSL-1.0 78f7dffc575e9ab83ba643ecd766473e
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/algorithm/adjacent_find.hpp at line 3, boost/range/algorithm/binary_search.hpp at line 3, boost/range/algorithm/copy.hpp at line 3, boost/range/algorithm/copy_backward.hpp at line 3, boost/range/algorithm/count.hpp at line 3, boost/range/algorithm/count_if.hpp at line 3, boost/range/algorithm/equal_range.hpp at line 3, boost/range/algorithm/fill.hpp at line 3, boost/range/algorithm/fill_n.hpp at line 3, boost/range/algorithm/find.hpp at line 3, boost/range/algorithm/find_end.hpp at line 3, boost/range/algorithm/find_first_of.hpp at line 3, boost/range/algorithm/find_if.hpp at line 3, boost/range/algorithm/for_each.hpp at line 3, boost/range/algorithm/generate.hpp at line 3, boost/range/algorithm/heap_algorithm.hpp at line 3, boost/range/algorithm/inplace_merge.hpp at line 3, boost/range/algorithm/lexicographical_compare.hpp at line 3, boost/range/algorithm/lower_bound.hpp at line 3, boost/range/algorithm/max_element.hpp at line 3, boost/range/algorithm/merge.hpp at line 3, boost/range/algorithm/min_element.hpp at line 3, boost/range/algorithm/mismatch.hpp at line 3, boost/range/algorithm/nth_element.hpp at line 3, boost/range/algorithm/partial_sort.hpp at line 3, boost/range/algorithm/partial_sort_copy.hpp at line 3, boost/range/algorithm/partition.hpp at line 3, boost/range/algorithm/permutation.hpp at line 3, boost/range/algorithm/random_shuffle.hpp at line 3, boost/range/algorithm/remove.hpp at line 3, boost/range/algorithm/remove_copy.hpp at line 3, boost/range/algorithm/remove_copy_if.hpp at line 3, boost/range/algorithm/remove_if.hpp at line 3, boost/range/algorithm/replace.hpp at line 3, boost/range/algorithm/replace_copy.hpp at line 3, boost/range/algorithm/replace_copy_if.hpp at line 3, boost/range/algorithm/replace_if.hpp at line 3, boost/range/algorithm/reverse.hpp at line 3, boost/range/algorithm/reverse_copy.hpp at line 3, boost/range/algorithm/rotate.hpp at line 3, boost/range/algorithm/rotate_copy.hpp at line 3, boost/range/algorithm/search.hpp at line 3, boost/range/algorithm/search_n.hpp at line 3, boost/range/algorithm/set_algorithm.hpp at line 3, boost/range/algorithm/sort.hpp at line 3, boost/range/algorithm/stable_partition.hpp at line 3, boost/range/algorithm/stable_sort.hpp at line 3, boost/range/algorithm/swap_ranges.hpp at line 3, boost/range/algorithm/transform.hpp at line 3, boost/range/algorithm/unique.hpp at line 3, boost/range/algorithm/unique_copy.hpp at line 3, boost/range/algorithm/upper_bound.hpp at line 3, boost/range/algorithm_ext/copy_n.hpp at line 3, boost/range/algorithm_ext/erase.hpp at line 5, boost/range/algorithm_ext/for_each.hpp at line 5, boost/range/algorithm_ext/insert.hpp at line 5, boost/range/algorithm_ext/iota.hpp at line 5, boost/range/algorithm_ext/is_sorted.hpp at line 4, boost/range/algorithm_ext/overwrite.hpp at line 5, boost/range/algorithm_ext/push_back.hpp at line 5, boost/range/algorithm_ext/push_front.hpp at line 5, boost/range/detail/demote_iterator_traversal_tag.hpp at line 5, boost/range/detail/join_iterator.hpp at line 5, boost/range/detail/range_return.hpp at line 3, boost/range/join.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/range/algorithm/adjacent_find.hpp [1:4]
+ boost/range/algorithm/binary_search.hpp [1:4]
+ boost/range/algorithm/copy.hpp [1:4]
+ boost/range/algorithm/copy_backward.hpp [1:4]
+ boost/range/algorithm/count.hpp [1:4]
+ boost/range/algorithm/count_if.hpp [1:4]
+ boost/range/algorithm/equal_range.hpp [1:4]
+ boost/range/algorithm/fill.hpp [1:4]
+ boost/range/algorithm/fill_n.hpp [1:4]
+ boost/range/algorithm/find.hpp [1:4]
+ boost/range/algorithm/find_end.hpp [1:4]
+ boost/range/algorithm/find_first_of.hpp [1:4]
+ boost/range/algorithm/find_if.hpp [1:4]
+ boost/range/algorithm/for_each.hpp [1:4]
+ boost/range/algorithm/generate.hpp [1:4]
+ boost/range/algorithm/heap_algorithm.hpp [1:4]
+ boost/range/algorithm/inplace_merge.hpp [1:4]
+ boost/range/algorithm/lexicographical_compare.hpp [1:4]
+ boost/range/algorithm/lower_bound.hpp [1:4]
+ boost/range/algorithm/max_element.hpp [1:4]
+ boost/range/algorithm/merge.hpp [1:4]
+ boost/range/algorithm/min_element.hpp [1:4]
+ boost/range/algorithm/mismatch.hpp [1:4]
+ boost/range/algorithm/nth_element.hpp [1:4]
+ boost/range/algorithm/partial_sort.hpp [1:4]
+ boost/range/algorithm/partial_sort_copy.hpp [1:4]
+ boost/range/algorithm/partition.hpp [1:4]
+ boost/range/algorithm/permutation.hpp [1:4]
+ boost/range/algorithm/random_shuffle.hpp [1:4]
+ boost/range/algorithm/remove.hpp [1:4]
+ boost/range/algorithm/remove_copy.hpp [1:4]
+ boost/range/algorithm/remove_copy_if.hpp [1:4]
+ boost/range/algorithm/remove_if.hpp [1:4]
+ boost/range/algorithm/replace.hpp [1:4]
+ boost/range/algorithm/replace_copy.hpp [1:4]
+ boost/range/algorithm/replace_copy_if.hpp [1:4]
+ boost/range/algorithm/replace_if.hpp [1:4]
+ boost/range/algorithm/reverse.hpp [1:4]
+ boost/range/algorithm/reverse_copy.hpp [1:4]
+ boost/range/algorithm/rotate.hpp [1:4]
+ boost/range/algorithm/rotate_copy.hpp [1:4]
+ boost/range/algorithm/search.hpp [1:4]
+ boost/range/algorithm/search_n.hpp [1:4]
+ boost/range/algorithm/set_algorithm.hpp [1:4]
+ boost/range/algorithm/sort.hpp [1:4]
+ boost/range/algorithm/stable_partition.hpp [1:4]
+ boost/range/algorithm/stable_sort.hpp [1:4]
+ boost/range/algorithm/swap_ranges.hpp [1:4]
+ boost/range/algorithm/transform.hpp [1:4]
+ boost/range/algorithm/unique.hpp [1:4]
+ boost/range/algorithm/unique_copy.hpp [1:4]
+ boost/range/algorithm/upper_bound.hpp [1:4]
+ boost/range/algorithm_ext/copy_n.hpp [1:4]
+ boost/range/algorithm_ext/erase.hpp [3:6]
+ boost/range/algorithm_ext/for_each.hpp [3:6]
+ boost/range/algorithm_ext/insert.hpp [3:6]
+ boost/range/algorithm_ext/iota.hpp [3:6]
+ boost/range/algorithm_ext/is_sorted.hpp [2:5]
+ boost/range/algorithm_ext/overwrite.hpp [3:6]
+ boost/range/algorithm_ext/push_back.hpp [3:6]
+ boost/range/algorithm_ext/push_front.hpp [3:6]
+ boost/range/detail/demote_iterator_traversal_tag.hpp [3:6]
+ boost/range/detail/join_iterator.hpp [3:6]
+ boost/range/detail/range_return.hpp [1:4]
+ boost/range/join.hpp [3:6]
+
+KEEP BSL-1.0 796d4cea34dcc1ae5e911c9e4e63030e
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/sum_kahan.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/accumulators/statistics/sum_kahan.hpp [4:6]
+
+KEEP BSL-1.0 7bb81c7e56dd6df833123be5c3742521
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/header_deprecated.hpp at line 8, boost/config/helper_macros.hpp at line 9, boost/config/pragma_message.hpp at line 8, boost/is_placeholder.hpp at line 17, boost/mp11.hpp at line 8, boost/mp11/algorithm.hpp at line 8, boost/mp11/bind.hpp at line 8, boost/mp11/detail/config.hpp at line 8, boost/mp11/detail/mp_append.hpp at line 8, boost/mp11/detail/mp_count.hpp at line 8, boost/mp11/detail/mp_fold.hpp at line 8, boost/mp11/detail/mp_list.hpp at line 8, boost/mp11/detail/mp_map_find.hpp at line 8, boost/mp11/detail/mp_min_element.hpp at line 8, boost/mp11/detail/mp_plus.hpp at line 8, boost/mp11/detail/mp_void.hpp at line 8, boost/mp11/detail/mp_with_index.hpp at line 8, boost/mp11/function.hpp at line 8, boost/mp11/integer_sequence.hpp at line 8, boost/mp11/integral.hpp at line 8, boost/mp11/list.hpp at line 8, boost/mp11/map.hpp at line 8, boost/mp11/set.hpp at line 8, boost/mp11/tuple.hpp at line 8, boost/mp11/utility.hpp at line 8
+ License text:
+ // Distributed under the Boost Software License, Version 1.0.
+ //
+ // See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/config/header_deprecated.hpp [6:9]
+ boost/config/helper_macros.hpp [7:10]
+ boost/config/pragma_message.hpp [6:9]
+ boost/is_placeholder.hpp [15:18]
+ boost/mp11.hpp [6:9]
+ boost/mp11/algorithm.hpp [6:9]
+ boost/mp11/bind.hpp [6:9]
+ boost/mp11/detail/config.hpp [6:9]
+ boost/mp11/detail/mp_append.hpp [6:9]
+ boost/mp11/detail/mp_count.hpp [6:9]
+ boost/mp11/detail/mp_fold.hpp [6:9]
+ boost/mp11/detail/mp_list.hpp [6:9]
+ boost/mp11/detail/mp_map_find.hpp [6:9]
+ boost/mp11/detail/mp_min_element.hpp [6:9]
+ boost/mp11/detail/mp_plus.hpp [6:9]
+ boost/mp11/detail/mp_void.hpp [6:9]
+ boost/mp11/detail/mp_with_index.hpp [6:9]
+ boost/mp11/function.hpp [6:9]
+ boost/mp11/integer_sequence.hpp [6:9]
+ boost/mp11/integral.hpp [6:9]
+ boost/mp11/list.hpp [6:9]
+ boost/mp11/map.hpp [6:9]
+ boost/mp11/set.hpp [6:9]
+ boost/mp11/tuple.hpp [6:9]
+ boost/mp11/utility.hpp [6:9]
+
+KEEP BSL-1.0 7dd8de26ac392d25f996e40e98028698
+BELONGS libs/regex/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/cregex.hpp at line 8, boost/regex.h at line 8, boost/regex.hpp at line 8, boost/regex/concepts.hpp at line 8, boost/regex/config/borland.hpp at line 8, boost/regex/config/cwchar.hpp at line 8, boost/regex/icu.hpp at line 8, boost/regex/mfc.hpp at line 8, boost/regex/pattern_except.hpp at line 8, boost/regex/pending/object_cache.hpp at line 8, boost/regex/pending/static_mutex.hpp at line 8, boost/regex/pending/unicode_iterator.hpp at line 8, boost/regex/regex_traits.hpp at line 8, boost/regex/user.hpp at line 8, boost/regex/v4/basic_regex_creator.hpp at line 8, boost/regex/v4/c_regex_traits.hpp at line 8, boost/regex/v4/cpp_regex_traits.hpp at line 8, boost/regex/v4/fileiter.hpp at line 8, boost/regex/v4/iterator_category.hpp at line 8, boost/regex/v4/iterator_traits.hpp at line 8, boost/regex/v4/match_flags.hpp at line 8, boost/regex/v4/match_results.hpp at line 8, boost/regex/v4/mem_block_cache.hpp at line 7, boost/regex/v4/perl_matcher.hpp at line 8, boost/regex/v4/perl_matcher_common.hpp at line 8, boost/regex/v4/perl_matcher_non_recursive.hpp at line 8, boost/regex/v4/perl_matcher_recursive.hpp at line 8, boost/regex/v4/primary_transform.hpp at line 8, boost/regex/v4/protected_call.hpp at line 8, boost/regex/v4/regbase.hpp at line 8, boost/regex/v4/regex.hpp at line 8, boost/regex/v4/regex_format.hpp at line 8, boost/regex/v4/regex_fwd.hpp at line 8, boost/regex/v4/regex_grep.hpp at line 8, boost/regex/v4/regex_iterator.hpp at line 8, boost/regex/v4/regex_match.hpp at line 8, boost/regex/v4/regex_merge.hpp at line 8, boost/regex/v4/regex_raw_buffer.hpp at line 8, boost/regex/v4/regex_replace.hpp at line 8, boost/regex/v4/regex_search.hpp at line 8, boost/regex/v4/regex_split.hpp at line 8, boost/regex/v4/regex_traits.hpp at line 8, boost/regex/v4/regex_workaround.hpp at line 8, boost/regex/v4/states.hpp at line 8, boost/regex/v4/sub_match.hpp at line 8, boost/regex/v4/syntax_type.hpp at line 8, boost/regex/v4/u32regex_iterator.hpp at line 8, boost/regex/v4/u32regex_token_iterator.hpp at line 8, boost/regex/v4/w32_regex_traits.hpp at line 8, boost/regex_fwd.hpp at line 8, libs/regex/src/c_regex_traits.cpp at line 8, libs/regex/src/cpp_regex_traits.cpp at line 8, libs/regex/src/cregex.cpp at line 8, libs/regex/src/fileiter.cpp at line 8, libs/regex/src/icu.cpp at line 8, libs/regex/src/instances.cpp at line 8, libs/regex/src/internals.hpp at line 8, libs/regex/src/posix_api.cpp at line 8, libs/regex/src/regex.cpp at line 8, libs/regex/src/regex_debug.cpp at line 8, libs/regex/src/regex_raw_buffer.cpp at line 8, libs/regex/src/regex_traits_defaults.cpp at line 8, libs/regex/src/static_mutex.cpp at line 8, libs/regex/src/usinstances.cpp at line 8, libs/regex/src/w32_regex_traits.cpp at line 8, libs/regex/src/wc_regex_traits.cpp at line 8, libs/regex/src/wide_posix_api.cpp at line 8, libs/regex/src/winstances.cpp at line 8
+ License text:
* Use, modification and distribution are subject to the
* Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/math/quadrature/naive_monte_carlo.hpp [3:5]
- boost/math/quadrature/trapezoidal.hpp [3:5]
- boost/regex/config.hpp [6:8]
- boost/regex/v4/char_regex_traits.hpp [6:8]
- boost/regex/v4/cregex.hpp [6:8]
- boost/regex/v4/error_type.hpp [6:8]
- boost/regex/v4/instances.hpp [6:8]
- boost/regex/v4/regex_traits_defaults.hpp [6:8]
-
-KEEP BSL-1.0 65901d5d3d32ad3b749311a01a61016f
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/platform/cloudabi.h at line 4
- License text:
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/predef/platform/cloudabi.h [3:5]
-
-KEEP BSL-1.0 65994368fe8331ee696a2db81b45b669
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/intrusive/pointer_traits.hpp at line 11
- License text:
- // (C) Copyright Ion Gaztanaga 2011-2014. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/intrusive/pointer_traits.hpp [9:11]
-
-KEEP BSL-1.0 65c29595096261f1e51b6f0288dd04dd
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/parameter.hpp at line 3
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/parameter.hpp [1:4]
-
-KEEP Zlib 65cdcfa09914055b79725d09bc2f36f2
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: Zlib
- Score : 92.42
- Match type : TEXT
- Links : http://www.gzip.org/zlib/zlib_license.html, http://www.zlib.net/, https://spdx.org/licenses/Zlib
- Files with this license:
- boost/beast/core/detail/base64.hpp [18:34]
-
-KEEP BSL-1.0 65e937e8455a3a3eea3fd902b60ef37d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/math_fwd.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/math_fwd.hpp [3:5]
-
-KEEP BSL-1.0 66bc794ea150e32a66fbddbc258d931a
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/experimental/parallel/v2/task_region.hpp at line 8
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/thread/experimental/parallel/v2/task_region.hpp [6:8]
-
-KEEP BSL-1.0 6770682f396d57a247067122271a057b
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/catch_exceptions.hpp at line 5
- License text:
- // Copyright Beman Dawes 1995-2001. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/detail/catch_exceptions.hpp [3:5]
-
-KEEP BSL-1.0 67c315f84c9f7fe64ea5034b22a3514e
-BELONGS libs/filesystem/ya.make libs/timer/ya.make
- License text:
- // Distributed under the Boost Software License, Version 1.0.
- // See http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- libs/filesystem/src/codecvt_error_category.cpp [5:6]
- libs/timer/src/auto_timers_construction.cpp [5:6]
-
-KEEP BSL-1.0 67d6eeedc82fbc62f6f52eb0c128e9e6
-BELONGS libs/container/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/detail/allocator_version_traits.hpp at line 5, boost/container/throw_exception.hpp at line 5, boost/interprocess/sync/detail/common_algorithms.hpp at line 5, libs/container/src/alloc_lib.c at line 5, libs/container/src/dlmalloc.cpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2012-2013. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/container/detail/allocator_version_traits.hpp [3:5]
- boost/container/throw_exception.hpp [3:5]
- boost/interprocess/sync/detail/common_algorithms.hpp [3:5]
- libs/container/src/alloc_lib.c [3:5]
- libs/container/src/dlmalloc.cpp [3:5]
-
-KEEP BSL-1.0 690c428b6f6c5e3219b8dd9abdb64215
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/move/detail/pointer_element.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2014-2017. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/move/detail/pointer_element.hpp [3:5]
-
-KEEP BSL-1.0 AND BSL-1.0 694ab5306b45aee9eba6e6115bb8593f
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/uuid/detail/random_provider_arc4random.ipp at line 5
- License text:
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENCE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 85.19
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/uuid/detail/random_provider.hpp [4:6]
- boost/uuid/detail/random_provider_bcrypt.ipp [4:6]
- boost/uuid/detail/random_provider_detect_platform.hpp [4:6]
- boost/uuid/detail/random_provider_getentropy.ipp [4:6]
- boost/uuid/detail/random_provider_include_platform.hpp [4:6]
- boost/uuid/entropy_error.hpp [4:6]
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 65.62
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/uuid/detail/random_provider_arc4random.ipp [4:6]
-
-SKIP MPL-1.1 695c14b33a53ff0673eb14307611656b
-BELONGS ya.make
- License text:
- //! Given a MPL-style metafunction, `metafunction<f>` is a `Metafunction`
- Scancode info:
- Original SPDX id: MPL-1.1
- Score : 80.00
- Match type : REFERENCE
- Links : http://www.mozilla.com/MPL/1.1/index.html, http://www.mozilla.org/MPL/MPL-1.1.html, https://spdx.org/licenses/MPL-1.1
- Files with this license:
- boost/hana/fwd/type.hpp [422:422]
-
-KEEP BSL-1.0 6b3c3fd5760f1bb9404086d2d1a83860
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/last_value.hpp at line 5, boost/signals/signal0.hpp at line 5, boost/signals/signal1.hpp at line 5, boost/signals/signal10.hpp at line 5, boost/signals/signal2.hpp at line 5, boost/signals/signal3.hpp at line 5, boost/signals/signal4.hpp at line 5, boost/signals/signal5.hpp at line 5, boost/signals/signal6.hpp at line 5, boost/signals/signal7.hpp at line 5, boost/signals/signal8.hpp at line 5, boost/signals/signal9.hpp at line 5, boost/signals2/last_value.hpp at line 6, boost/visit_each.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/last_value.hpp [3:6]
- boost/signals/signal0.hpp [3:6]
- boost/signals/signal1.hpp [3:6]
- boost/signals/signal10.hpp [3:6]
- boost/signals/signal2.hpp [3:6]
- boost/signals/signal3.hpp [3:6]
- boost/signals/signal4.hpp [3:6]
- boost/signals/signal5.hpp [3:6]
- boost/signals/signal6.hpp [3:6]
- boost/signals/signal7.hpp [3:6]
- boost/signals/signal8.hpp [3:6]
- boost/signals/signal9.hpp [3:6]
- boost/signals2/last_value.hpp [4:7]
- boost/visit_each.hpp [3:6]
-
-KEEP BSL-1.0 6c55b338a1fa3f5f5d727d2dba9cb631
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/ptr_container/detail/meta_functions.hpp at line 6, boost/ptr_container/ptr_circular_buffer.hpp at line 6, boost/ptr_container/ptr_inserter.hpp at line 6, boost/ptr_container/ptr_unordered_map.hpp at line 6, boost/ptr_container/ptr_unordered_set.hpp at line 6, boost/ptr_container/serialize_ptr_circular_buffer.hpp at line 6, boost/ptr_container/serialize_ptr_unordered_map.hpp at line 6, boost/ptr_container/serialize_ptr_unordered_set.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/ptr_container/detail/meta_functions.hpp [4:7]
- boost/ptr_container/ptr_circular_buffer.hpp [4:7]
- boost/ptr_container/ptr_inserter.hpp [4:7]
- boost/ptr_container/ptr_unordered_map.hpp [4:7]
- boost/ptr_container/ptr_unordered_set.hpp [4:7]
- boost/ptr_container/serialize_ptr_circular_buffer.hpp [4:7]
- boost/ptr_container/serialize_ptr_unordered_map.hpp [4:7]
- boost/ptr_container/serialize_ptr_unordered_set.hpp [4:7]
-
-KEEP BSL-1.0 6cee195f9161a1b94784d4975695337c
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/is_incrementable.hpp at line 3, boost/indirect_reference.hpp at line 7, boost/pointee.hpp at line 7
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/detail/is_incrementable.hpp [1:3]
- boost/indirect_reference.hpp [5:7]
- boost/pointee.hpp [5:7]
-
-KEEP BSL-1.0 6d847ee42ef80ba973b8bd6fff3322e0
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/io_fwd.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/io_fwd.hpp [3:5]
-
-KEEP BSL-1.0 6dd5c9f652ff038348bb42aa68a7164c
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/detail/robust_emulation.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2010-2012. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/interprocess/detail/robust_emulation.hpp [3:5]
-
-KEEP BSL-1.0 6e3b14a26b7c150c6f55f9b939af109f
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/detail/default_ops.hpp at line 4, boost/multiprecision/detail/et_ops.hpp at line 4, boost/multiprecision/detail/generic_interconvert.hpp at line 4, boost/multiprecision/detail/number_base.hpp at line 4, boost/multiprecision/gmp.hpp at line 4, boost/multiprecision/mpfi.hpp at line 4, boost/multiprecision/number.hpp at line 4, boost/multiprecision/tommath.hpp at line 4
- License text:
- // Copyright 2011 John Maddock. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/multiprecision/detail/default_ops.hpp [2:4]
- boost/multiprecision/detail/et_ops.hpp [2:4]
- boost/multiprecision/detail/generic_interconvert.hpp [2:4]
- boost/multiprecision/detail/number_base.hpp [2:4]
- boost/multiprecision/gmp.hpp [2:4]
- boost/multiprecision/mpfi.hpp [2:4]
- boost/multiprecision/number.hpp [2:4]
- boost/multiprecision/tommath.hpp [2:4]
-
-KEEP BSL-1.0 6e9c8d42e61a3e26d6d176e26f813a97
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/rational_adaptor.hpp at line 4
- License text:
- // Copyright 2011 John Maddock. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 92.59
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/multiprecision/rational_adaptor.hpp [2:4]
-
-KEEP BSL-1.0 6ebf86a0841782c69f5ccb7da6b4b79d
-BELONGS libs/container/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/detail/block_list.hpp at line 5, boost/container/detail/block_slist.hpp at line 5, boost/container/detail/dispatch_uses_allocator.hpp at line 5, boost/container/detail/dlmalloc.hpp at line 5, boost/container/detail/pool_resource.hpp at line 5, boost/container/pmr/deque.hpp at line 5, boost/container/pmr/flat_map.hpp at line 5, boost/container/pmr/flat_set.hpp at line 5, boost/container/pmr/global_resource.hpp at line 5, boost/container/pmr/list.hpp at line 5, boost/container/pmr/map.hpp at line 5, boost/container/pmr/memory_resource.hpp at line 5, boost/container/pmr/monotonic_buffer_resource.hpp at line 5, boost/container/pmr/polymorphic_allocator.hpp at line 5, boost/container/pmr/pool_options.hpp at line 5, boost/container/pmr/resource_adaptor.hpp at line 5, boost/container/pmr/set.hpp at line 5, boost/container/pmr/slist.hpp at line 5, boost/container/pmr/small_vector.hpp at line 5, boost/container/pmr/stable_vector.hpp at line 5, boost/container/pmr/string.hpp at line 5, boost/container/pmr/synchronized_pool_resource.hpp at line 5, boost/container/pmr/unsynchronized_pool_resource.hpp at line 5, boost/container/pmr/vector.hpp at line 5, boost/container/scoped_allocator_fwd.hpp at line 5, boost/container/small_vector.hpp at line 5, boost/container/uses_allocator_fwd.hpp at line 5, boost/intrusive/detail/tree_value_compare.hpp at line 5, libs/container/src/global_resource.cpp at line 5, libs/container/src/monotonic_buffer_resource.cpp at line 5, libs/container/src/pool_resource.cpp at line 5, libs/container/src/synchronized_pool_resource.cpp at line 5, libs/container/src/unsynchronized_pool_resource.cpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2015-2015. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/container/detail/block_list.hpp [3:5]
- boost/container/detail/block_slist.hpp [3:5]
- boost/container/detail/dispatch_uses_allocator.hpp [3:5]
- boost/container/detail/dlmalloc.hpp [3:5]
- boost/container/detail/pool_resource.hpp [3:5]
- boost/container/pmr/deque.hpp [3:5]
- boost/container/pmr/flat_map.hpp [3:5]
- boost/container/pmr/flat_set.hpp [3:5]
- boost/container/pmr/global_resource.hpp [3:5]
- boost/container/pmr/list.hpp [3:5]
- boost/container/pmr/map.hpp [3:5]
- boost/container/pmr/memory_resource.hpp [3:5]
- boost/container/pmr/monotonic_buffer_resource.hpp [3:5]
- boost/container/pmr/polymorphic_allocator.hpp [3:5]
- boost/container/pmr/pool_options.hpp [3:5]
- boost/container/pmr/resource_adaptor.hpp [3:5]
- boost/container/pmr/set.hpp [3:5]
- boost/container/pmr/slist.hpp [3:5]
- boost/container/pmr/small_vector.hpp [3:5]
- boost/container/pmr/stable_vector.hpp [3:5]
- boost/container/pmr/string.hpp [3:5]
- boost/container/pmr/synchronized_pool_resource.hpp [3:5]
- boost/container/pmr/unsynchronized_pool_resource.hpp [3:5]
- boost/container/pmr/vector.hpp [3:5]
- boost/container/scoped_allocator_fwd.hpp [3:5]
- boost/container/small_vector.hpp [3:5]
- boost/container/uses_allocator_fwd.hpp [3:5]
- boost/intrusive/detail/tree_value_compare.hpp [3:5]
- libs/container/src/global_resource.cpp [3:5]
- libs/container/src/monotonic_buffer_resource.cpp [3:5]
- libs/container/src/pool_resource.cpp [3:5]
- libs/container/src/synchronized_pool_resource.cpp [3:5]
- libs/container/src/unsynchronized_pool_resource.cpp [3:5]
-
-KEEP BSL-1.0 6f142535a1deefdedb1f10f224c9b0ed
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/algorithm/string/detail/formatter.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/algorithm/string/detail/formatter.hpp [5:9]
-
-KEEP BSL-1.0 6f58c862f763ee945f279dbe9d509166
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/detail/compare_functors.hpp at line 5, boost/container/detail/std_fwd.hpp at line 5, boost/intrusive/detail/has_member_function_callable_with.hpp at line 5, boost/intrusive/detail/std_fwd.hpp at line 5, boost/intrusive/pointer_rebind.hpp at line 5, boost/move/default_delete.hpp at line 5, boost/move/detail/fwd_macros.hpp at line 5, boost/move/detail/workaround.hpp at line 5, boost/move/unique_ptr.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2014-2014. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/container/detail/compare_functors.hpp [3:5]
- boost/container/detail/std_fwd.hpp [3:5]
- boost/intrusive/detail/has_member_function_callable_with.hpp [3:5]
- boost/intrusive/detail/std_fwd.hpp [3:5]
- boost/intrusive/pointer_rebind.hpp [3:5]
- boost/move/default_delete.hpp [3:5]
- boost/move/detail/fwd_macros.hpp [3:5]
- boost/move/detail/workaround.hpp [3:5]
- boost/move/unique_ptr.hpp [3:5]
-
-KEEP BSL-1.0 6f5903013620b3e63b872211596c814c
-BELONGS libs/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/test/data/monomorphic/fwd.hpp at line 3, boost/test/data/monomorphic/generators/random.hpp at line 3, boost/test/data/monomorphic/singleton.hpp at line 3, boost/test/tools/floating_point_comparison.hpp at line 3, libs/test/src/compiler_log_formatter.cpp at line 3, libs/test/src/cpp_main.cpp at line 3, libs/test/src/debug.cpp at line 3, libs/test/src/decorator.cpp at line 3, libs/test/src/execution_monitor.cpp at line 3, libs/test/src/framework.cpp at line 3, libs/test/src/plain_report_formatter.cpp at line 3, libs/test/src/progress_monitor.cpp at line 3, libs/test/src/results_collector.cpp at line 3, libs/test/src/results_reporter.cpp at line 3, libs/test/src/test_main.cpp at line 3, libs/test/src/test_tools.cpp at line 3, libs/test/src/test_tree.cpp at line 3, libs/test/src/unit_test_log.cpp at line 3, libs/test/src/unit_test_main.cpp at line 3, libs/test/src/unit_test_monitor.cpp at line 3, libs/test/src/unit_test_parameters.cpp at line 3, libs/test/src/xml_log_formatter.cpp at line 3, libs/test/src/xml_report_formatter.cpp at line 3
- License text:
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/test/data/monomorphic/fwd.hpp [2:4]
- boost/test/data/monomorphic/generators/random.hpp [2:4]
- boost/test/data/monomorphic/singleton.hpp [2:4]
- boost/test/tools/floating_point_comparison.hpp [2:4]
- libs/test/src/compiler_log_formatter.cpp [2:4]
- libs/test/src/cpp_main.cpp [2:4]
- libs/test/src/debug.cpp [2:4]
- libs/test/src/decorator.cpp [2:4]
- libs/test/src/execution_monitor.cpp [2:4]
- libs/test/src/framework.cpp [2:4]
- libs/test/src/plain_report_formatter.cpp [2:4]
- libs/test/src/progress_monitor.cpp [2:4]
- libs/test/src/results_collector.cpp [2:4]
- libs/test/src/results_reporter.cpp [2:4]
- libs/test/src/test_main.cpp [2:4]
- libs/test/src/test_tools.cpp [2:4]
- libs/test/src/test_tree.cpp [2:4]
- libs/test/src/unit_test_log.cpp [2:4]
- libs/test/src/unit_test_main.cpp [2:4]
- libs/test/src/unit_test_monitor.cpp [2:4]
- libs/test/src/unit_test_parameters.cpp [2:4]
- libs/test/src/xml_log_formatter.cpp [2:4]
- libs/test/src/xml_report_formatter.cpp [2:4]
-
-KEEP Zlib 6f639f15f71c2f16f1a3459658b193c0
-BELONGS ya.make
- License text:
- /* A std::uint16_t is an index in the character window. We use short instead of int to
- * save space in the various tables. IPos is used only for parameter passing.
- Scancode info:
- Original SPDX id: Zlib
- Score : 96.43
- Match type : REFERENCE
- Links : http://www.gzip.org/zlib/zlib_license.html, http://www.zlib.net/, https://spdx.org/licenses/Zlib
- Files with this license:
- boost/beast/zlib/detail/deflate_stream.hpp [291:292]
-
-KEEP BSL-1.0 6fb8dab2fa17abac18f239108501392d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/smart_ptr.hpp at line 12
- License text:
- // Copyright (c) 2003 Peter Dimov Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/smart_ptr.hpp [10:12]
-
-KEEP BSL-1.0 70284ad8e3e2d935ac16b320b8af06a2
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/integer/static_log2.hpp at line 8
- License text:
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/integer/static_log2.hpp [7:9]
-
-KEEP BSL-1.0 7046eb5e05d97f8094aad004556f5459
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/smart_ptr/unique_ptr.hpp at line 5, boost/move/make_unique.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2006-2014. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/interprocess/smart_ptr/unique_ptr.hpp [3:5]
- boost/move/make_unique.hpp [3:5]
-
-KEEP BSL-1.0 715771b101b3fd6543920c82e8bbf36b
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/archive/impl/archive_serializer_map.ipp at line 6, boost/archive/impl/basic_text_iprimitive.ipp at line 6, boost/archive/impl/basic_xml_oarchive.ipp at line 6, boost/archive/impl/text_iarchive_impl.ipp at line 6, boost/archive/impl/text_oarchive_impl.ipp at line 6, boost/archive/impl/text_wiarchive_impl.ipp at line 6, boost/archive/impl/text_woarchive_impl.ipp at line 6, boost/archive/impl/xml_iarchive_impl.ipp at line 6, boost/archive/impl/xml_wiarchive_impl.ipp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/archive/impl/archive_serializer_map.ipp [5:9]
- boost/archive/impl/basic_text_iprimitive.ipp [5:9]
- boost/archive/impl/basic_xml_oarchive.ipp [5:9]
- boost/archive/impl/text_iarchive_impl.ipp [5:9]
- boost/archive/impl/text_oarchive_impl.ipp [5:9]
- boost/archive/impl/text_wiarchive_impl.ipp [5:9]
- boost/archive/impl/text_woarchive_impl.ipp [5:9]
- boost/archive/impl/xml_iarchive_impl.ipp [5:9]
- boost/archive/impl/xml_wiarchive_impl.ipp [5:9]
-
-KEEP BSL-1.0 71e59b956feb5a436a3a5a5360ecfd21
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/sort/block_indirect_sort/blk_detail/backbone.hpp at line 8, boost/sort/block_indirect_sort/blk_detail/block.hpp at line 8, boost/sort/block_indirect_sort/blk_detail/constants.hpp at line 7, boost/sort/block_indirect_sort/blk_detail/merge_blocks.hpp at line 8, boost/sort/block_indirect_sort/blk_detail/move_blocks.hpp at line 8, boost/sort/block_indirect_sort/blk_detail/parallel_sort.hpp at line 8, boost/sort/block_indirect_sort/block_indirect_sort.hpp at line 7, boost/sort/common/indirect.hpp at line 7, boost/sort/common/merge_block.hpp at line 8, boost/sort/common/merge_four.hpp at line 7, boost/sort/common/merge_vector.hpp at line 8, boost/sort/common/pivot.hpp at line 7, boost/sort/common/rearrange.hpp at line 7, boost/sort/common/sort_basic.hpp at line 7, boost/sort/common/util/algorithm.hpp at line 7, boost/sort/common/util/atomic.hpp at line 6, boost/sort/common/util/insert.hpp at line 7, boost/sort/common/util/merge.hpp at line 7, boost/sort/common/util/traits.hpp at line 7, boost/sort/flat_stable_sort/flat_stable_sort.hpp at line 7, boost/sort/heap_sort/heap_sort.hpp at line 7, boost/sort/insert_sort/insert_sort.hpp at line 7, boost/sort/parallel_stable_sort/parallel_stable_sort.hpp at line 7, boost/sort/sample_sort/sample_sort.hpp at line 7, boost/sort/spinsort/spinsort.hpp at line 7
- License text:
- /// Distributed under the Boost Software License, Version 1.0.\n
- /// ( See accompanying file LICENSE_1_0.txt or copy at
- /// http://www.boost.org/LICENSE_1_0.txt )
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/sort/block_indirect_sort/blk_detail/backbone.hpp [7:9]
- boost/sort/block_indirect_sort/blk_detail/block.hpp [7:9]
- boost/sort/block_indirect_sort/blk_detail/constants.hpp [6:8]
- boost/sort/block_indirect_sort/blk_detail/merge_blocks.hpp [7:9]
- boost/sort/block_indirect_sort/blk_detail/move_blocks.hpp [7:9]
- boost/sort/block_indirect_sort/blk_detail/parallel_sort.hpp [7:9]
- boost/sort/block_indirect_sort/block_indirect_sort.hpp [6:8]
- boost/sort/common/indirect.hpp [6:8]
- boost/sort/common/merge_block.hpp [7:9]
- boost/sort/common/merge_four.hpp [6:8]
- boost/sort/common/merge_vector.hpp [7:9]
- boost/sort/common/pivot.hpp [6:8]
- boost/sort/common/rearrange.hpp [6:8]
- boost/sort/common/sort_basic.hpp [6:8]
- boost/sort/common/util/algorithm.hpp [6:8]
- boost/sort/common/util/atomic.hpp [5:7]
- boost/sort/common/util/insert.hpp [6:8]
- boost/sort/common/util/merge.hpp [6:8]
- boost/sort/common/util/traits.hpp [6:8]
- boost/sort/flat_stable_sort/flat_stable_sort.hpp [6:8]
- boost/sort/heap_sort/heap_sort.hpp [6:8]
- boost/sort/insert_sort/insert_sort.hpp [6:8]
- boost/sort/parallel_stable_sort/parallel_stable_sort.hpp [6:8]
- boost/sort/sample_sort/sample_sort.hpp [6:8]
- boost/sort/spinsort/spinsort.hpp [6:8]
-
-KEEP NCSA AND MIT 72d4e9e6f06ffb6f0c77cb800c3ac442
-BELONGS ya.make
- License text:
- // This file is dual licensed under the MIT and the University of Illinois Open
- // Source Licenses. See LICENSE.TXT for details.
- Scancode info:
- Original SPDX id: NCSA
- Score : 100.00
- Match type : NOTICE
- Links : http://www.otm.illinois.edu/faculty/forms/opensource.asp, https://spdx.org/licenses/NCSA
- Files with this license:
- boost/chrono/detail/scan_keyword.hpp [6:7]
- boost/thread/detail/invoke.hpp [19:20]
- boost/thread/detail/invoker.hpp [17:18]
- boost/thread/detail/make_tuple_indices.hpp [15:16]
- Scancode info:
- Original SPDX id: MIT
- Score : 100.00
- Match type : NOTICE
- Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
- Files with this license:
- boost/chrono/detail/scan_keyword.hpp [6:7]
- boost/thread/detail/invoke.hpp [19:20]
- boost/thread/detail/invoker.hpp [17:18]
- boost/thread/detail/make_tuple_indices.hpp [15:16]
-
-KEEP BSL-1.0 72eb5cd559a68e29409e1e14d281e49e
-BELONGS ya.make
- License text:
- /// Distributed under the Boost Software License, Version 1.0.\n
- /// ( See copy at http://www.boost.org/LICENSE_1_0.txt )
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 90.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/sort/common/util/search.hpp [5:6]
-
-KEEP BSL-1.0 732a43b99a41bcb7df6969a215704085
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/math/cstdfloat/cstdfloat_complex_std.hpp at line 6
- License text:
- // Distributed under the Boost Software License,
- // Version 1.0. (See accompanying file LICENSE_1_0.txt
- // or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/math/cstdfloat/cstdfloat_complex_std.hpp [5:7]
-
-KEEP BSL-1.0 744fe4ef3652113826a015c6780732de
-BELONGS libs/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/next_prior.hpp at line 7, boost/test/auto_unit_test.hpp at line 3, boost/test/data/config.hpp at line 3, boost/test/data/dataset.hpp at line 3, boost/test/data/for_each_sample.hpp at line 3, boost/test/data/generators.hpp at line 3, boost/test/data/index_sequence.hpp at line 3, boost/test/data/monomorphic.hpp at line 3, boost/test/data/monomorphic/array.hpp at line 3, boost/test/data/monomorphic/collection.hpp at line 3, boost/test/data/monomorphic/generate.hpp at line 3, boost/test/data/monomorphic/generators.hpp at line 3, boost/test/data/monomorphic/generators/keywords.hpp at line 3, boost/test/data/monomorphic/generators/xrange.hpp at line 3, boost/test/data/monomorphic/grid.hpp at line 3, boost/test/data/monomorphic/initializer_list.hpp at line 3, boost/test/data/monomorphic/join.hpp at line 3, boost/test/data/monomorphic/sample_merge.hpp at line 3, boost/test/data/monomorphic/zip.hpp at line 3, boost/test/data/size.hpp at line 3, boost/test/data/test_case.hpp at line 3, boost/test/debug.hpp at line 3, boost/test/debug_config.hpp at line 3, boost/test/detail/config.hpp at line 3, boost/test/detail/enable_warnings.hpp at line 3, boost/test/detail/fwd_decl.hpp at line 3, boost/test/detail/global_typedef.hpp at line 3, boost/test/detail/log_level.hpp at line 3, boost/test/detail/pp_variadic.hpp at line 3, boost/test/detail/suppress_warnings.hpp at line 3, boost/test/detail/throw_exception.hpp at line 3, boost/test/detail/workaround.hpp at line 3, boost/test/execution_monitor.hpp at line 4, boost/test/floating_point_comparison.hpp at line 3, boost/test/framework.hpp at line 3, boost/test/impl/compiler_log_formatter.ipp at line 3, boost/test/impl/cpp_main.ipp at line 4, boost/test/impl/decorator.ipp at line 3, boost/test/impl/framework.ipp at line 3, boost/test/impl/junit_log_formatter.ipp at line 3, boost/test/impl/plain_report_formatter.ipp at line 3, boost/test/impl/progress_monitor.ipp at line 3, boost/test/impl/results_collector.ipp at line 3, boost/test/impl/results_reporter.ipp at line 3, boost/test/impl/test_main.ipp at line 4, boost/test/impl/test_tools.ipp at line 3, boost/test/impl/test_tree.ipp at line 3, boost/test/impl/unit_test_log.ipp at line 3, boost/test/impl/unit_test_main.ipp at line 3, boost/test/impl/unit_test_monitor.ipp at line 3, boost/test/impl/unit_test_parameters.ipp at line 3, boost/test/impl/xml_log_formatter.ipp at line 3, boost/test/impl/xml_report_formatter.ipp at line 3, boost/test/included/execution_monitor.hpp at line 3, boost/test/included/prg_exec_monitor.hpp at line 3, boost/test/included/test_exec_monitor.hpp at line 3, boost/test/included/unit_test.hpp at line 3, boost/test/included/unit_test_framework.hpp at line 3, boost/test/minimal.hpp at line 3, boost/test/output/compiler_log_formatter.hpp at line 3, boost/test/output/junit_log_formatter.hpp at line 3, boost/test/output/plain_report_formatter.hpp at line 3, boost/test/output/xml_log_formatter.hpp at line 3, boost/test/output/xml_report_formatter.hpp at line 3, boost/test/output_test_stream.hpp at line 3, boost/test/parameterized_test.hpp at line 3, boost/test/predicate_result.hpp at line 3, boost/test/prg_exec_monitor.hpp at line 3, boost/test/progress_monitor.hpp at line 3, boost/test/results_collector.hpp at line 3, boost/test/results_reporter.hpp at line 3, boost/test/test_case_template.hpp at line 3, boost/test/test_exec_monitor.hpp at line 3, boost/test/test_tools.hpp at line 3, boost/test/tools/assertion.hpp at line 3, boost/test/tools/assertion_result.hpp at line 3, boost/test/tools/collection_comparison_op.hpp at line 3, boost/test/tools/context.hpp at line 3, boost/test/tools/cstring_comparison_op.hpp at line 3, boost/test/tools/detail/bitwise_manip.hpp at line 3, boost/test/tools/detail/expression_holder.hpp at line 3, boost/test/tools/detail/fwd.hpp at line 3, boost/test/tools/detail/indirections.hpp at line 3, boost/test/tools/detail/it_pair.hpp at line 3, boost/test/tools/detail/lexicographic_manip.hpp at line 3, boost/test/tools/detail/per_element_manip.hpp at line 3, boost/test/tools/detail/print_helper.hpp at line 3, boost/test/tools/detail/tolerance_manip.hpp at line 3, boost/test/tools/fpc_op.hpp at line 3, boost/test/tools/fpc_tolerance.hpp at line 3, boost/test/tools/interface.hpp at line 3, boost/test/tools/old/impl.hpp at line 3, boost/test/tools/old/interface.hpp at line 3, boost/test/tools/output_test_stream.hpp at line 3, boost/test/tree/auto_registration.hpp at line 3, boost/test/tree/decorator.hpp at line 3, boost/test/tree/fixture.hpp at line 3, boost/test/tree/global_fixture.hpp at line 3, boost/test/tree/observer.hpp at line 3, boost/test/tree/test_case_counter.hpp at line 3, boost/test/tree/test_case_template.hpp at line 3, boost/test/tree/test_unit.hpp at line 3, boost/test/tree/traverse.hpp at line 3, boost/test/tree/visitor.hpp at line 3, boost/test/unit_test.hpp at line 3, boost/test/unit_test_log.hpp at line 3, boost/test/unit_test_log_formatter.hpp at line 3, boost/test/unit_test_monitor.hpp at line 3, boost/test/unit_test_parameters.hpp at line 3, boost/test/unit_test_suite.hpp at line 3, boost/test/utils/algorithm.hpp at line 3, boost/test/utils/assign_op.hpp at line 3, boost/test/utils/basic_cstring/basic_cstring.hpp at line 3, boost/test/utils/basic_cstring/basic_cstring_fwd.hpp at line 3, boost/test/utils/basic_cstring/bcs_char_traits.hpp at line 3, boost/test/utils/basic_cstring/compare.hpp at line 3, boost/test/utils/basic_cstring/io.hpp at line 3, boost/test/utils/class_properties.hpp at line 3, boost/test/utils/custom_manip.hpp at line 3, boost/test/utils/foreach.hpp at line 4, boost/test/utils/is_cstring.hpp at line 3, boost/test/utils/is_forward_iterable.hpp at line 3, boost/test/utils/iterator/input_iterator_facade.hpp at line 3, boost/test/utils/iterator/token_iterator.hpp at line 3, boost/test/utils/lazy_ostream.hpp at line 3, boost/test/utils/named_params.hpp at line 3, boost/test/utils/nullstream.hpp at line 4, boost/test/utils/rtti.hpp at line 3, boost/test/utils/runtime/argument.hpp at line 3, boost/test/utils/runtime/argument_factory.hpp at line 3, boost/test/utils/runtime/env/fetch.hpp at line 3, boost/test/utils/runtime/errors.hpp at line 3, boost/test/utils/runtime/finalize.hpp at line 3, boost/test/utils/runtime/fwd.hpp at line 3, boost/test/utils/runtime/parameter.hpp at line 3, boost/test/utils/setcolor.hpp at line 3, boost/test/utils/string_cast.hpp at line 3, boost/test/utils/trivial_singleton.hpp at line 3, boost/test/utils/wrap_stringstream.hpp at line 3, boost/test/utils/xml_printer.hpp at line 3, libs/test/src/junit_log_formatter.cpp at line 3
- License text:
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/next_prior.hpp [6:8]
- boost/test/auto_unit_test.hpp [2:4]
- boost/test/data/config.hpp [2:4]
- boost/test/data/dataset.hpp [2:4]
- boost/test/data/for_each_sample.hpp [2:4]
- boost/test/data/generators.hpp [2:4]
- boost/test/data/index_sequence.hpp [2:4]
- boost/test/data/monomorphic.hpp [2:4]
- boost/test/data/monomorphic/array.hpp [2:4]
- boost/test/data/monomorphic/collection.hpp [2:4]
- boost/test/data/monomorphic/generate.hpp [2:4]
- boost/test/data/monomorphic/generators.hpp [2:4]
- boost/test/data/monomorphic/generators/keywords.hpp [2:4]
- boost/test/data/monomorphic/generators/xrange.hpp [2:4]
- boost/test/data/monomorphic/grid.hpp [2:4]
- boost/test/data/monomorphic/initializer_list.hpp [2:4]
- boost/test/data/monomorphic/join.hpp [2:4]
- boost/test/data/monomorphic/sample_merge.hpp [2:4]
- boost/test/data/monomorphic/zip.hpp [2:4]
- boost/test/data/size.hpp [2:4]
- boost/test/data/test_case.hpp [2:4]
- boost/test/debug.hpp [2:4]
- boost/test/debug_config.hpp [2:4]
- boost/test/detail/config.hpp [2:4]
- boost/test/detail/enable_warnings.hpp [2:4]
- boost/test/detail/fwd_decl.hpp [2:4]
- boost/test/detail/global_typedef.hpp [2:4]
- boost/test/detail/log_level.hpp [2:4]
- boost/test/detail/pp_variadic.hpp [2:4]
- boost/test/detail/suppress_warnings.hpp [2:4]
- boost/test/detail/throw_exception.hpp [2:4]
- boost/test/detail/workaround.hpp [2:4]
- boost/test/execution_monitor.hpp [3:5]
- boost/test/floating_point_comparison.hpp [2:4]
- boost/test/framework.hpp [2:4]
- boost/test/impl/compiler_log_formatter.ipp [2:4]
- boost/test/impl/cpp_main.ipp [3:5]
- boost/test/impl/decorator.ipp [2:4]
- boost/test/impl/framework.ipp [2:4]
- boost/test/impl/junit_log_formatter.ipp [2:4]
- boost/test/impl/plain_report_formatter.ipp [2:4]
- boost/test/impl/progress_monitor.ipp [2:4]
- boost/test/impl/results_collector.ipp [2:4]
- boost/test/impl/results_reporter.ipp [2:4]
- boost/test/impl/test_main.ipp [3:5]
- boost/test/impl/test_tools.ipp [2:4]
- boost/test/impl/test_tree.ipp [2:4]
- boost/test/impl/unit_test_log.ipp [2:4]
- boost/test/impl/unit_test_main.ipp [2:4]
- boost/test/impl/unit_test_monitor.ipp [2:4]
- boost/test/impl/unit_test_parameters.ipp [2:4]
- boost/test/impl/xml_log_formatter.ipp [2:4]
- boost/test/impl/xml_report_formatter.ipp [2:4]
- boost/test/included/execution_monitor.hpp [2:4]
- boost/test/included/prg_exec_monitor.hpp [2:4]
- boost/test/included/test_exec_monitor.hpp [2:4]
- boost/test/included/unit_test.hpp [2:4]
- boost/test/included/unit_test_framework.hpp [2:4]
- boost/test/minimal.hpp [2:4]
- boost/test/output/compiler_log_formatter.hpp [2:4]
- boost/test/output/junit_log_formatter.hpp [2:4]
- boost/test/output/plain_report_formatter.hpp [2:4]
- boost/test/output/xml_log_formatter.hpp [2:4]
- boost/test/output/xml_report_formatter.hpp [2:4]
- boost/test/output_test_stream.hpp [2:4]
- boost/test/parameterized_test.hpp [2:4]
- boost/test/predicate_result.hpp [2:4]
- boost/test/prg_exec_monitor.hpp [2:4]
- boost/test/progress_monitor.hpp [2:4]
- boost/test/results_collector.hpp [2:4]
- boost/test/results_reporter.hpp [2:4]
- boost/test/test_case_template.hpp [2:4]
- boost/test/test_exec_monitor.hpp [2:4]
- boost/test/test_tools.hpp [2:4]
- boost/test/tools/assertion.hpp [2:4]
- boost/test/tools/assertion_result.hpp [2:4]
- boost/test/tools/collection_comparison_op.hpp [2:4]
- boost/test/tools/context.hpp [2:4]
- boost/test/tools/cstring_comparison_op.hpp [2:4]
- boost/test/tools/detail/bitwise_manip.hpp [2:4]
- boost/test/tools/detail/expression_holder.hpp [2:4]
- boost/test/tools/detail/fwd.hpp [2:4]
- boost/test/tools/detail/indirections.hpp [2:4]
- boost/test/tools/detail/it_pair.hpp [2:4]
- boost/test/tools/detail/lexicographic_manip.hpp [2:4]
- boost/test/tools/detail/per_element_manip.hpp [2:4]
- boost/test/tools/detail/print_helper.hpp [2:4]
- boost/test/tools/detail/tolerance_manip.hpp [2:4]
- boost/test/tools/fpc_op.hpp [2:4]
- boost/test/tools/fpc_tolerance.hpp [2:4]
- boost/test/tools/interface.hpp [2:4]
- boost/test/tools/old/impl.hpp [2:4]
- boost/test/tools/old/interface.hpp [2:4]
- boost/test/tools/output_test_stream.hpp [2:4]
- boost/test/tree/auto_registration.hpp [2:4]
- boost/test/tree/decorator.hpp [2:4]
- boost/test/tree/fixture.hpp [2:4]
- boost/test/tree/global_fixture.hpp [2:4]
- boost/test/tree/observer.hpp [2:4]
- boost/test/tree/test_case_counter.hpp [2:4]
- boost/test/tree/test_case_template.hpp [2:4]
- boost/test/tree/test_unit.hpp [2:4]
- boost/test/tree/traverse.hpp [2:4]
- boost/test/tree/visitor.hpp [2:4]
- boost/test/unit_test.hpp [2:4]
- boost/test/unit_test_log.hpp [2:4]
- boost/test/unit_test_log_formatter.hpp [2:4]
- boost/test/unit_test_monitor.hpp [2:4]
- boost/test/unit_test_parameters.hpp [2:4]
- boost/test/unit_test_suite.hpp [2:4]
- boost/test/utils/algorithm.hpp [2:4]
- boost/test/utils/assign_op.hpp [2:4]
- boost/test/utils/basic_cstring/basic_cstring.hpp [2:4]
- boost/test/utils/basic_cstring/basic_cstring_fwd.hpp [2:4]
- boost/test/utils/basic_cstring/bcs_char_traits.hpp [2:4]
- boost/test/utils/basic_cstring/compare.hpp [2:4]
- boost/test/utils/basic_cstring/io.hpp [2:4]
- boost/test/utils/class_properties.hpp [2:4]
- boost/test/utils/custom_manip.hpp [2:4]
- boost/test/utils/foreach.hpp [3:5]
- boost/test/utils/is_cstring.hpp [2:4]
- boost/test/utils/is_forward_iterable.hpp [2:4]
- boost/test/utils/iterator/input_iterator_facade.hpp [2:4]
- boost/test/utils/iterator/token_iterator.hpp [2:4]
- boost/test/utils/lazy_ostream.hpp [2:4]
- boost/test/utils/named_params.hpp [2:4]
- boost/test/utils/nullstream.hpp [3:5]
- boost/test/utils/rtti.hpp [2:4]
- boost/test/utils/runtime/argument.hpp [2:4]
- boost/test/utils/runtime/argument_factory.hpp [2:4]
- boost/test/utils/runtime/env/fetch.hpp [2:4]
- boost/test/utils/runtime/errors.hpp [2:4]
- boost/test/utils/runtime/finalize.hpp [2:4]
- boost/test/utils/runtime/fwd.hpp [2:4]
- boost/test/utils/runtime/parameter.hpp [2:4]
- boost/test/utils/setcolor.hpp [2:4]
- boost/test/utils/string_cast.hpp [2:4]
- boost/test/utils/trivial_singleton.hpp [2:4]
- boost/test/utils/wrap_stringstream.hpp [2:4]
- boost/test/utils/xml_printer.hpp [2:4]
- libs/test/src/junit_log_formatter.cpp [2:4]
-
-KEEP BSL-1.0 745252704aa72167f50d9aad40337785
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/assert.hpp at line 14, boost/bind.hpp at line 16, boost/bind/bind_mf2_cc.hpp at line 10, boost/bind/placeholders.hpp at line 17, boost/bind/storage.hpp at line 18, boost/config/compiler/xlcpp_zos.hpp at line 4, boost/config/platform/zos.hpp at line 4, boost/config/stdlib/xlcpp_zos.hpp at line 4, boost/core/lightweight_test.hpp at line 18, boost/current_function.hpp at line 16, boost/detail/atomic_count.hpp at line 16, boost/detail/lightweight_mutex.hpp at line 16, boost/detail/lightweight_thread.hpp at line 16, boost/detail/quick_allocator.hpp at line 17, boost/enable_shared_from_this.hpp at line 10, boost/interprocess/detail/os_thread_functions.hpp at line 19, boost/intrusive_ptr.hpp at line 10, boost/make_shared.hpp at line 9, boost/mem_fn.hpp at line 16, boost/range/detail/safe_bool.hpp at line 5, boost/signals2/deconstruct.hpp at line 21, boost/smart_ptr/detail/atomic_count.hpp at line 17, boost/smart_ptr/detail/atomic_count_nt.hpp at line 14, boost/smart_ptr/detail/atomic_count_spin.hpp at line 10, boost/smart_ptr/detail/atomic_count_std_atomic.hpp at line 12, boost/smart_ptr/detail/operator_bool.hpp at line 6, boost/smart_ptr/detail/sp_convertible.hpp at line 15, boost/smart_ptr/detail/sp_counted_base_clang.hpp at line 15, boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp at line 17, boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp at line 17, boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp at line 15, boost/smart_ptr/detail/sp_counted_base_sync.hpp at line 15, boost/smart_ptr/detail/sp_forward.hpp at line 15, boost/smart_ptr/detail/sp_interlocked.hpp at line 16, boost/smart_ptr/detail/sp_noexcept.hpp at line 15, boost/smart_ptr/detail/sp_nullptr_t.hpp at line 15, boost/smart_ptr/detail/yield_k.hpp at line 23, boost/smart_ptr/enable_shared_from_raw.hpp at line 11, boost/smart_ptr/enable_shared_from_this.hpp at line 10, boost/smart_ptr/make_local_shared.hpp at line 9, boost/smart_ptr/make_local_shared_object.hpp at line 9, boost/smart_ptr/make_shared.hpp at line 9, boost/smart_ptr/make_shared_object.hpp at line 9, boost/type_traits/common_type.hpp at line 8, boost/type_traits/copy_cv.hpp at line 8, boost/type_traits/detail/common_arithmetic_type.hpp at line 8, boost/type_traits/detail/common_type_impl.hpp at line 8, boost/type_traits/detail/composite_member_pointer_type.hpp at line 8, boost/type_traits/detail/composite_pointer_type.hpp at line 8, boost/type_traits/detail/mp_defer.hpp at line 8, boost/type_traits/is_list_constructible.hpp at line 7, boost/type_traits/is_nothrow_swappable.hpp at line 7, boost/type_traits/type_identity.hpp at line 8, boost/weak_ptr.hpp at line 10
- License text:
- // Distributed under the Boost Software License, Version 1.0.
- // See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/assert.hpp [13:15]
- boost/bind.hpp [15:17]
- boost/bind/bind_mf2_cc.hpp [9:11]
- boost/bind/placeholders.hpp [16:18]
- boost/bind/storage.hpp [17:19]
- boost/config/compiler/xlcpp_zos.hpp [3:5]
- boost/config/platform/zos.hpp [3:5]
- boost/config/stdlib/xlcpp_zos.hpp [3:5]
- boost/core/lightweight_test.hpp [17:19]
- boost/current_function.hpp [15:17]
- boost/detail/atomic_count.hpp [15:17]
- boost/detail/lightweight_mutex.hpp [15:17]
- boost/detail/lightweight_thread.hpp [15:17]
- boost/detail/quick_allocator.hpp [16:18]
- boost/enable_shared_from_this.hpp [9:11]
- boost/interprocess/detail/os_thread_functions.hpp [18:20]
- boost/intrusive_ptr.hpp [9:11]
- boost/make_shared.hpp [8:10]
- boost/mem_fn.hpp [15:17]
- boost/range/detail/safe_bool.hpp [4:6]
- boost/signals2/deconstruct.hpp [20:22]
- boost/smart_ptr/detail/atomic_count.hpp [16:18]
- boost/smart_ptr/detail/atomic_count_nt.hpp [13:15]
- boost/smart_ptr/detail/atomic_count_spin.hpp [9:11]
- boost/smart_ptr/detail/atomic_count_std_atomic.hpp [11:13]
- boost/smart_ptr/detail/operator_bool.hpp [5:7]
- boost/smart_ptr/detail/sp_convertible.hpp [14:16]
- boost/smart_ptr/detail/sp_counted_base_clang.hpp [14:16]
- boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp [16:18]
- boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp [16:18]
- boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp [14:16]
- boost/smart_ptr/detail/sp_counted_base_sync.hpp [14:16]
- boost/smart_ptr/detail/sp_forward.hpp [14:16]
- boost/smart_ptr/detail/sp_interlocked.hpp [15:17]
- boost/smart_ptr/detail/sp_noexcept.hpp [14:16]
- boost/smart_ptr/detail/sp_nullptr_t.hpp [14:16]
- boost/smart_ptr/detail/yield_k.hpp [22:24]
- boost/smart_ptr/enable_shared_from_raw.hpp [10:12]
- boost/smart_ptr/enable_shared_from_this.hpp [9:11]
- boost/smart_ptr/make_local_shared.hpp [8:10]
- boost/smart_ptr/make_local_shared_object.hpp [8:10]
- boost/smart_ptr/make_shared.hpp [8:10]
- boost/smart_ptr/make_shared_object.hpp [8:10]
- boost/type_traits/common_type.hpp [7:9]
- boost/type_traits/copy_cv.hpp [7:9]
- boost/type_traits/detail/common_arithmetic_type.hpp [7:9]
- boost/type_traits/detail/common_type_impl.hpp [7:9]
- boost/type_traits/detail/composite_member_pointer_type.hpp [7:9]
- boost/type_traits/detail/composite_pointer_type.hpp [7:9]
- boost/type_traits/detail/mp_defer.hpp [7:9]
- boost/type_traits/is_list_constructible.hpp [6:8]
- boost/type_traits/is_nothrow_swappable.hpp [6:8]
- boost/type_traits/type_identity.hpp [7:9]
- boost/weak_ptr.hpp [9:11]
-
-KEEP BSL-1.0 7526d5c5fd651b8d0d6103857fbf3a46
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/call_traits.hpp at line 3, boost/chrono/chrono_io.hpp at line 7, boost/chrono/clock_string.hpp at line 4, boost/chrono/include.hpp at line 6, boost/chrono/io/duration_get.hpp at line 4, boost/chrono/io/duration_io.hpp at line 4, boost/chrono/io/duration_put.hpp at line 4, boost/chrono/io/duration_style.hpp at line 4, boost/chrono/io/duration_units.hpp at line 4, boost/chrono/io/ios_base_state.hpp at line 3, boost/chrono/io/time_point_get.hpp at line 4, boost/chrono/io/time_point_put.hpp at line 4, boost/chrono/io/time_point_units.hpp at line 5, boost/chrono/io/timezone.hpp at line 4, boost/chrono/io/utility/to_string.hpp at line 5, boost/chrono/io_v1/chrono_io.hpp at line 7, boost/compressed_pair.hpp at line 3, boost/detail/call_traits.hpp at line 3, boost/detail/compressed_pair.hpp at line 3, boost/detail/has_default_constructor.hpp at line 4, boost/detail/ob_compressed_pair.hpp at line 3, boost/ratio/detail/ratio_io.hpp at line 6, boost/ratio/mpl/abs.hpp at line 5, boost/ratio/mpl/divides.hpp at line 5, boost/ratio/mpl/equal_to.hpp at line 5, boost/ratio/mpl/gcd.hpp at line 5, boost/ratio/mpl/greater.hpp at line 5, boost/ratio/mpl/greater_equal.hpp at line 5, boost/ratio/mpl/lcm.hpp at line 5, boost/ratio/mpl/less.hpp at line 5, boost/ratio/mpl/less_equal.hpp at line 5, boost/ratio/mpl/minus.hpp at line 5, boost/ratio/mpl/negate.hpp at line 5, boost/ratio/mpl/not_equal_to.hpp at line 5, boost/ratio/mpl/numeric_cast.hpp at line 5, boost/ratio/mpl/plus.hpp at line 5, boost/ratio/mpl/rational_c_tag.hpp at line 5, boost/ratio/mpl/sign.hpp at line 5, boost/ratio/mpl/times.hpp at line 5, boost/ratio/ratio_io.hpp at line 6, boost/tti/detail/dcomp_mem_fun.hpp at line 4, boost/tti/detail/ddata.hpp at line 4, boost/tti/detail/ddeftype.hpp at line 4, boost/tti/detail/dftclass.hpp at line 4, boost/tti/detail/dfunction.hpp at line 4, boost/tti/detail/dlambda.hpp at line 4, boost/tti/detail/dmem_data.hpp at line 4, boost/tti/detail/dmem_fun.hpp at line 4, boost/tti/detail/dmem_type.hpp at line 4, boost/tti/detail/dmetafunc.hpp at line 4, boost/tti/detail/dnotype.hpp at line 4, boost/tti/detail/dnullptr.hpp at line 4, boost/tti/detail/dplaceholder.hpp at line 4, boost/tti/detail/dptmf.hpp at line 4, boost/tti/detail/dstatic_mem_data.hpp at line 4, boost/tti/detail/dstatic_mem_fun.hpp at line 4, boost/tti/detail/dtclass.hpp at line 4, boost/tti/detail/dtemplate.hpp at line 4, boost/tti/detail/dtemplate_params.hpp at line 4, boost/tti/detail/dtfunction.hpp at line 4, boost/tti/detail/dtype.hpp at line 4, boost/tti/detail/dvm_template_params.hpp at line 4, boost/tti/gen/has_data_gen.hpp at line 4, boost/tti/gen/has_function_gen.hpp at line 4, boost/tti/gen/has_member_data_gen.hpp at line 4, boost/tti/gen/has_member_function_gen.hpp at line 4, boost/tti/gen/has_static_member_data_gen.hpp at line 4, boost/tti/gen/has_static_member_function_gen.hpp at line 4, boost/tti/gen/has_template_gen.hpp at line 4, boost/tti/gen/has_type_gen.hpp at line 4, boost/tti/gen/member_type_gen.hpp at line 4, boost/tti/gen/namespace_gen.hpp at line 4, boost/tti/has_data.hpp at line 4, boost/tti/has_function.hpp at line 4, boost/tti/has_member_data.hpp at line 4, boost/tti/has_member_function.hpp at line 4, boost/tti/has_static_member_data.hpp at line 4, boost/tti/has_static_member_function.hpp at line 4, boost/tti/has_template.hpp at line 4, boost/tti/has_type.hpp at line 4, boost/tti/member_type.hpp at line 4, boost/tti/tti.hpp at line 4, boost/type_traits.hpp at line 3, boost/type_traits/add_const.hpp at line 5, boost/type_traits/add_cv.hpp at line 5, boost/type_traits/add_pointer.hpp at line 4, boost/type_traits/add_reference.hpp at line 4, boost/type_traits/add_volatile.hpp at line 5, boost/type_traits/alignment_of.hpp at line 4, boost/type_traits/alignment_traits.hpp at line 4, boost/type_traits/arithmetic_traits.hpp at line 3, boost/type_traits/array_traits.hpp at line 4, boost/type_traits/broken_compiler_spec.hpp at line 4, boost/type_traits/composite_traits.hpp at line 4, boost/type_traits/conditional.hpp at line 3, boost/type_traits/config.hpp at line 4, boost/type_traits/conversion_traits.hpp at line 7, boost/type_traits/cv_traits.hpp at line 4, boost/type_traits/decay.hpp at line 3, boost/type_traits/detail/config.hpp at line 4, boost/type_traits/detail/has_binary_operator.hpp at line 4, boost/type_traits/detail/has_postfix_operator.hpp at line 4, boost/type_traits/detail/has_prefix_operator.hpp at line 4, boost/type_traits/detail/ice_and.hpp at line 4, boost/type_traits/detail/ice_eq.hpp at line 3, boost/type_traits/detail/ice_not.hpp at line 3, boost/type_traits/detail/ice_or.hpp at line 3, boost/type_traits/detail/is_function_ptr_helper.hpp at line 6, boost/type_traits/detail/is_mem_fun_pointer_impl.hpp at line 5, boost/type_traits/detail/is_mem_fun_pointer_tester.hpp at line 5, boost/type_traits/detail/yes_no_type.hpp at line 4, boost/type_traits/extent.hpp at line 4, boost/type_traits/function_traits.hpp at line 4, boost/type_traits/has_bit_and.hpp at line 4, boost/type_traits/has_bit_and_assign.hpp at line 4, boost/type_traits/has_bit_or.hpp at line 4, boost/type_traits/has_bit_or_assign.hpp at line 4, boost/type_traits/has_bit_xor.hpp at line 4, boost/type_traits/has_bit_xor_assign.hpp at line 4, boost/type_traits/has_complement.hpp at line 4, boost/type_traits/has_dereference.hpp at line 4, boost/type_traits/has_divides.hpp at line 4, boost/type_traits/has_divides_assign.hpp at line 4, boost/type_traits/has_equal_to.hpp at line 4, boost/type_traits/has_greater.hpp at line 4, boost/type_traits/has_greater_equal.hpp at line 4, boost/type_traits/has_left_shift.hpp at line 4, boost/type_traits/has_left_shift_assign.hpp at line 4, boost/type_traits/has_less.hpp at line 4, boost/type_traits/has_less_equal.hpp at line 4, boost/type_traits/has_logical_and.hpp at line 4, boost/type_traits/has_logical_not.hpp at line 4, boost/type_traits/has_logical_or.hpp at line 4, boost/type_traits/has_minus.hpp at line 4, boost/type_traits/has_minus_assign.hpp at line 4, boost/type_traits/has_modulus.hpp at line 4, boost/type_traits/has_modulus_assign.hpp at line 4, boost/type_traits/has_multiplies.hpp at line 4, boost/type_traits/has_multiplies_assign.hpp at line 4, boost/type_traits/has_negate.hpp at line 4, boost/type_traits/has_new_operator.hpp at line 4, boost/type_traits/has_not_equal_to.hpp at line 4, boost/type_traits/has_nothrow_assign.hpp at line 4, boost/type_traits/has_nothrow_constructor.hpp at line 4, boost/type_traits/has_nothrow_copy.hpp at line 4, boost/type_traits/has_nothrow_destructor.hpp at line 4, boost/type_traits/has_operator.hpp at line 4, boost/type_traits/has_plus.hpp at line 4, boost/type_traits/has_post_decrement.hpp at line 4, boost/type_traits/has_post_increment.hpp at line 4, boost/type_traits/has_pre_decrement.hpp at line 4, boost/type_traits/has_pre_increment.hpp at line 4, boost/type_traits/has_right_shift.hpp at line 4, boost/type_traits/has_right_shift_assign.hpp at line 4, boost/type_traits/has_trivial_assign.hpp at line 4, boost/type_traits/has_trivial_constructor.hpp at line 4, boost/type_traits/has_trivial_copy.hpp at line 4, boost/type_traits/has_trivial_destructor.hpp at line 4, boost/type_traits/has_trivial_move_assign.hpp at line 6, boost/type_traits/has_trivial_move_constructor.hpp at line 6, boost/type_traits/has_unary_minus.hpp at line 4, boost/type_traits/has_unary_plus.hpp at line 4, boost/type_traits/has_virtual_destructor.hpp at line 4, boost/type_traits/ice.hpp at line 4, boost/type_traits/intrinsics.hpp at line 3, boost/type_traits/is_arithmetic.hpp at line 4, boost/type_traits/is_array.hpp at line 5, boost/type_traits/is_assignable.hpp at line 4, boost/type_traits/is_base_and_derived.hpp at line 4, boost/type_traits/is_base_of.hpp at line 4, boost/type_traits/is_base_of_tr1.hpp at line 4, boost/type_traits/is_class.hpp at line 4, boost/type_traits/is_complete.hpp at line 4, boost/type_traits/is_complex.hpp at line 3, boost/type_traits/is_compound.hpp at line 4, boost/type_traits/is_const.hpp at line 7, boost/type_traits/is_constructible.hpp at line 4, boost/type_traits/is_convertible.hpp at line 7, boost/type_traits/is_copy_assignable.hpp at line 4, boost/type_traits/is_copy_constructible.hpp at line 4, boost/type_traits/is_default_constructible.hpp at line 4, boost/type_traits/is_destructible.hpp at line 4, boost/type_traits/is_empty.hpp at line 4, boost/type_traits/is_enum.hpp at line 5, boost/type_traits/is_final.hpp at line 5, boost/type_traits/is_float.hpp at line 3, boost/type_traits/is_floating_point.hpp at line 3, boost/type_traits/is_function.hpp at line 6, boost/type_traits/is_fundamental.hpp at line 4, boost/type_traits/is_integral.hpp at line 4, boost/type_traits/is_lvalue_reference.hpp at line 7, boost/type_traits/is_member_function_pointer.hpp at line 5, boost/type_traits/is_member_object_pointer.hpp at line 4, boost/type_traits/is_member_pointer.hpp at line 7, boost/type_traits/is_nothrow_move_assignable.hpp at line 6, boost/type_traits/is_nothrow_move_constructible.hpp at line 6, boost/type_traits/is_object.hpp at line 4, boost/type_traits/is_pod.hpp at line 4, boost/type_traits/is_pointer.hpp at line 7, boost/type_traits/is_polymorphic.hpp at line 3, boost/type_traits/is_reference.hpp at line 7, boost/type_traits/is_rvalue_reference.hpp at line 4, boost/type_traits/is_same.hpp at line 7, boost/type_traits/is_scalar.hpp at line 4, boost/type_traits/is_signed.hpp at line 4, boost/type_traits/is_stateless.hpp at line 4, boost/type_traits/is_union.hpp at line 5, boost/type_traits/is_unsigned.hpp at line 4, boost/type_traits/is_virtual_base_of.hpp at line 3, boost/type_traits/is_void.hpp at line 4, boost/type_traits/is_volatile.hpp at line 7, boost/type_traits/make_signed.hpp at line 4, boost/type_traits/make_unsigned.hpp at line 4, boost/type_traits/object_traits.hpp at line 3, boost/type_traits/rank.hpp at line 4, boost/type_traits/reference_traits.hpp at line 4, boost/type_traits/remove_all_extents.hpp at line 4, boost/type_traits/remove_bounds.hpp at line 4, boost/type_traits/remove_const.hpp at line 5, boost/type_traits/remove_cv.hpp at line 5, boost/type_traits/remove_cv_ref.hpp at line 4, boost/type_traits/remove_extent.hpp at line 4, boost/type_traits/remove_pointer.hpp at line 4, boost/type_traits/remove_reference.hpp at line 4, boost/type_traits/remove_volatile.hpp at line 5, boost/type_traits/same_traits.hpp at line 3, boost/type_traits/transform_traits.hpp at line 3, boost/type_traits/type_with_alignment.hpp at line 3, boost/vmd/array.hpp at line 4, boost/vmd/array/to_seq.hpp at line 4, boost/vmd/array/to_tuple.hpp at line 4, boost/vmd/assert.hpp at line 4, boost/vmd/assert_is_array.hpp at line 4, boost/vmd/assert_is_empty.hpp at line 4, boost/vmd/assert_is_identifier.hpp at line 4, boost/vmd/assert_is_list.hpp at line 4, boost/vmd/assert_is_number.hpp at line 4, boost/vmd/assert_is_seq.hpp at line 4, boost/vmd/assert_is_tuple.hpp at line 4, boost/vmd/assert_is_type.hpp at line 4, boost/vmd/detail/adjust_tuple_type.hpp at line 4, boost/vmd/detail/array.hpp at line 4, boost/vmd/detail/assert.hpp at line 4, boost/vmd/detail/data_equal.hpp at line 4, boost/vmd/detail/data_equal_common.hpp at line 4, boost/vmd/detail/empty_result.hpp at line 4, boost/vmd/detail/equal.hpp at line 4, boost/vmd/detail/equal_common.hpp at line 4, boost/vmd/detail/equal_type.hpp at line 4, boost/vmd/detail/identifier.hpp at line 4, boost/vmd/detail/identifier_concat.hpp at line 4, boost/vmd/detail/identifier_type.hpp at line 4, boost/vmd/detail/idprefix.hpp at line 4, boost/vmd/detail/is_array.hpp at line 4, boost/vmd/detail/is_array_common.hpp at line 4, boost/vmd/detail/is_empty.hpp at line 4, boost/vmd/detail/is_empty_array.hpp at line 4, boost/vmd/detail/is_empty_tuple.hpp at line 4, boost/vmd/detail/is_entire.hpp at line 4, boost/vmd/detail/is_identifier.hpp at line 4, boost/vmd/detail/is_list.hpp at line 4, boost/vmd/detail/is_number.hpp at line 4, boost/vmd/detail/is_seq.hpp at line 4, boost/vmd/detail/is_tuple.hpp at line 4, boost/vmd/detail/is_type.hpp at line 4, boost/vmd/detail/is_type_type.hpp at line 4, boost/vmd/detail/list.hpp at line 4, boost/vmd/detail/match_identifier.hpp at line 4, boost/vmd/detail/match_identifier_common.hpp at line 4, boost/vmd/detail/match_single_identifier.hpp at line 4, boost/vmd/detail/modifiers.hpp at line 4, boost/vmd/detail/mods.hpp at line 4, boost/vmd/detail/nil_registration.hpp at line 4, boost/vmd/detail/not_empty.hpp at line 4, boost/vmd/detail/number_registration.hpp at line 4, boost/vmd/detail/only_after.hpp at line 4, boost/vmd/detail/parens.hpp at line 4, boost/vmd/detail/parens_common.hpp at line 4, boost/vmd/detail/parens_split.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_1.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_10.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_11.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_12.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_13.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_14.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_15.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_16.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_2.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_3.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_4.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_5.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_6.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_7.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_8.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_9.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp at line 4, boost/vmd/detail/recurse/data_equal/data_equal_specific.hpp at line 4, boost/vmd/detail/recurse/equal/equal_1.hpp at line 4, boost/vmd/detail/recurse/equal/equal_10.hpp at line 4, boost/vmd/detail/recurse/equal/equal_11.hpp at line 4, boost/vmd/detail/recurse/equal/equal_12.hpp at line 4, boost/vmd/detail/recurse/equal/equal_13.hpp at line 4, boost/vmd/detail/recurse/equal/equal_14.hpp at line 4, boost/vmd/detail/recurse/equal/equal_15.hpp at line 4, boost/vmd/detail/recurse/equal/equal_16.hpp at line 4, boost/vmd/detail/recurse/equal/equal_2.hpp at line 4, boost/vmd/detail/recurse/equal/equal_3.hpp at line 4, boost/vmd/detail/recurse/equal/equal_4.hpp at line 4, boost/vmd/detail/recurse/equal/equal_5.hpp at line 4, boost/vmd/detail/recurse/equal/equal_6.hpp at line 4, boost/vmd/detail/recurse/equal/equal_7.hpp at line 4, boost/vmd/detail/recurse/equal/equal_8.hpp at line 4, boost/vmd/detail/recurse/equal/equal_9.hpp at line 4, boost/vmd/detail/recurse/equal/equal_headers.hpp at line 4, boost/vmd/detail/seq.hpp at line 4, boost/vmd/detail/sequence_arity.hpp at line 4, boost/vmd/detail/sequence_common.hpp at line 4, boost/vmd/detail/sequence_elem.hpp at line 4, boost/vmd/detail/sequence_enum.hpp at line 4, boost/vmd/detail/sequence_size.hpp at line 4, boost/vmd/detail/sequence_to_array.hpp at line 4, boost/vmd/detail/sequence_to_list.hpp at line 4, boost/vmd/detail/sequence_to_seq.hpp at line 4, boost/vmd/detail/sequence_to_tuple.hpp at line 4, boost/vmd/detail/sequence_type.hpp at line 4, boost/vmd/detail/setup.hpp at line 4, boost/vmd/detail/tuple.hpp at line 4, boost/vmd/detail/type_registration.hpp at line 4, boost/vmd/detail/variadic_pop_front.hpp at line 4, boost/vmd/elem.hpp at line 4, boost/vmd/empty.hpp at line 4, boost/vmd/enum.hpp at line 4, boost/vmd/equal.hpp at line 4, boost/vmd/get_type.hpp at line 4, boost/vmd/identity.hpp at line 4, boost/vmd/is_array.hpp at line 4, boost/vmd/is_empty.hpp at line 4, boost/vmd/is_empty_array.hpp at line 4, boost/vmd/is_empty_list.hpp at line 4, boost/vmd/is_identifier.hpp at line 4, boost/vmd/is_list.hpp at line 4, boost/vmd/is_multi.hpp at line 4, boost/vmd/is_number.hpp at line 4, boost/vmd/is_parens_empty.hpp at line 4, boost/vmd/is_seq.hpp at line 4, boost/vmd/is_tuple.hpp at line 4, boost/vmd/is_type.hpp at line 4, boost/vmd/is_unary.hpp at line 4, boost/vmd/list.hpp at line 4, boost/vmd/list/to_seq.hpp at line 4, boost/vmd/list/to_tuple.hpp at line 4, boost/vmd/not_equal.hpp at line 4, boost/vmd/seq.hpp at line 4, boost/vmd/seq/is_vmd_seq.hpp at line 4, boost/vmd/seq/pop_back.hpp at line 4, boost/vmd/seq/pop_front.hpp at line 4, boost/vmd/seq/push_back.hpp at line 4, boost/vmd/seq/push_front.hpp at line 4, boost/vmd/seq/remove.hpp at line 4, boost/vmd/seq/size.hpp at line 4, boost/vmd/seq/to_array.hpp at line 4, boost/vmd/seq/to_list.hpp at line 4, boost/vmd/seq/to_tuple.hpp at line 4, boost/vmd/size.hpp at line 4, boost/vmd/to_array.hpp at line 4, boost/vmd/to_list.hpp at line 4, boost/vmd/to_seq.hpp at line 4, boost/vmd/to_tuple.hpp at line 4, boost/vmd/tuple.hpp at line 4, boost/vmd/tuple/is_vmd_tuple.hpp at line 4, boost/vmd/tuple/pop_back.hpp at line 4, boost/vmd/tuple/pop_front.hpp at line 4, boost/vmd/tuple/push_back.hpp at line 4, boost/vmd/tuple/push_front.hpp at line 4, boost/vmd/tuple/remove.hpp at line 4, boost/vmd/tuple/size.hpp at line 4, boost/vmd/tuple/to_array.hpp at line 4, boost/vmd/tuple/to_list.hpp at line 4, boost/vmd/tuple/to_seq.hpp at line 4, boost/vmd/vmd.hpp at line 4
- License text:
- // Use, modification and distribution are subject to the Boost Software License,
- // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt).
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/call_traits.hpp [2:4]
- boost/chrono/chrono_io.hpp [6:8]
- boost/chrono/clock_string.hpp [3:5]
- boost/chrono/include.hpp [5:7]
- boost/chrono/io/duration_get.hpp [3:5]
- boost/chrono/io/duration_io.hpp [3:5]
- boost/chrono/io/duration_put.hpp [3:5]
- boost/chrono/io/duration_style.hpp [3:5]
- boost/chrono/io/duration_units.hpp [3:5]
- boost/chrono/io/ios_base_state.hpp [2:4]
- boost/chrono/io/time_point_get.hpp [3:5]
- boost/chrono/io/time_point_put.hpp [3:5]
- boost/chrono/io/time_point_units.hpp [4:6]
- boost/chrono/io/timezone.hpp [3:5]
- boost/chrono/io/utility/to_string.hpp [4:6]
- boost/chrono/io_v1/chrono_io.hpp [6:8]
- boost/compressed_pair.hpp [2:4]
- boost/detail/call_traits.hpp [2:4]
- boost/detail/compressed_pair.hpp [2:4]
- boost/detail/has_default_constructor.hpp [3:5]
- boost/detail/ob_compressed_pair.hpp [2:4]
- boost/ratio/detail/ratio_io.hpp [5:7]
- boost/ratio/mpl/abs.hpp [4:6]
- boost/ratio/mpl/divides.hpp [4:6]
- boost/ratio/mpl/equal_to.hpp [4:6]
- boost/ratio/mpl/gcd.hpp [4:6]
- boost/ratio/mpl/greater.hpp [4:6]
- boost/ratio/mpl/greater_equal.hpp [4:6]
- boost/ratio/mpl/lcm.hpp [4:6]
- boost/ratio/mpl/less.hpp [4:6]
- boost/ratio/mpl/less_equal.hpp [4:6]
- boost/ratio/mpl/minus.hpp [4:6]
- boost/ratio/mpl/negate.hpp [4:6]
- boost/ratio/mpl/not_equal_to.hpp [4:6]
- boost/ratio/mpl/numeric_cast.hpp [4:6]
- boost/ratio/mpl/plus.hpp [4:6]
- boost/ratio/mpl/rational_c_tag.hpp [4:6]
- boost/ratio/mpl/sign.hpp [4:6]
- boost/ratio/mpl/times.hpp [4:6]
- boost/ratio/ratio_io.hpp [5:7]
- boost/tti/detail/dcomp_mem_fun.hpp [3:5]
- boost/tti/detail/ddata.hpp [3:5]
- boost/tti/detail/ddeftype.hpp [3:5]
- boost/tti/detail/dftclass.hpp [3:5]
- boost/tti/detail/dfunction.hpp [3:5]
- boost/tti/detail/dlambda.hpp [3:5]
- boost/tti/detail/dmem_data.hpp [3:5]
- boost/tti/detail/dmem_fun.hpp [3:5]
- boost/tti/detail/dmem_type.hpp [3:5]
- boost/tti/detail/dmetafunc.hpp [3:5]
- boost/tti/detail/dnotype.hpp [3:5]
- boost/tti/detail/dnullptr.hpp [3:5]
- boost/tti/detail/dplaceholder.hpp [3:5]
- boost/tti/detail/dptmf.hpp [3:5]
- boost/tti/detail/dstatic_mem_data.hpp [3:5]
- boost/tti/detail/dstatic_mem_fun.hpp [3:5]
- boost/tti/detail/dtclass.hpp [3:5]
- boost/tti/detail/dtemplate.hpp [3:5]
- boost/tti/detail/dtemplate_params.hpp [3:5]
- boost/tti/detail/dtfunction.hpp [3:5]
- boost/tti/detail/dtype.hpp [3:5]
- boost/tti/detail/dvm_template_params.hpp [3:5]
- boost/tti/gen/has_data_gen.hpp [3:5]
- boost/tti/gen/has_function_gen.hpp [3:5]
- boost/tti/gen/has_member_data_gen.hpp [3:5]
- boost/tti/gen/has_member_function_gen.hpp [3:5]
- boost/tti/gen/has_static_member_data_gen.hpp [3:5]
- boost/tti/gen/has_static_member_function_gen.hpp [3:5]
- boost/tti/gen/has_template_gen.hpp [3:5]
- boost/tti/gen/has_type_gen.hpp [3:5]
- boost/tti/gen/member_type_gen.hpp [3:5]
- boost/tti/gen/namespace_gen.hpp [3:5]
- boost/tti/has_data.hpp [3:5]
- boost/tti/has_function.hpp [3:5]
- boost/tti/has_member_data.hpp [3:5]
- boost/tti/has_member_function.hpp [3:5]
- boost/tti/has_static_member_data.hpp [3:5]
- boost/tti/has_static_member_function.hpp [3:5]
- boost/tti/has_template.hpp [3:5]
- boost/tti/has_type.hpp [3:5]
- boost/tti/member_type.hpp [3:5]
- boost/tti/tti.hpp [3:5]
- boost/type_traits.hpp [2:4]
- boost/type_traits/add_const.hpp [4:6]
- boost/type_traits/add_cv.hpp [4:6]
- boost/type_traits/add_pointer.hpp [3:5]
- boost/type_traits/add_reference.hpp [3:5]
- boost/type_traits/add_volatile.hpp [4:6]
- boost/type_traits/alignment_of.hpp [3:5]
- boost/type_traits/alignment_traits.hpp [3:5]
- boost/type_traits/arithmetic_traits.hpp [2:4]
- boost/type_traits/array_traits.hpp [3:5]
- boost/type_traits/broken_compiler_spec.hpp [3:5]
- boost/type_traits/composite_traits.hpp [3:5]
- boost/type_traits/conditional.hpp [2:4]
- boost/type_traits/config.hpp [3:5]
- boost/type_traits/conversion_traits.hpp [6:8]
- boost/type_traits/cv_traits.hpp [3:5]
- boost/type_traits/decay.hpp [2:4]
- boost/type_traits/detail/config.hpp [3:5]
- boost/type_traits/detail/has_binary_operator.hpp [3:5]
- boost/type_traits/detail/has_postfix_operator.hpp [3:5]
- boost/type_traits/detail/has_prefix_operator.hpp [3:5]
- boost/type_traits/detail/ice_and.hpp [3:5]
- boost/type_traits/detail/ice_eq.hpp [2:4]
- boost/type_traits/detail/ice_not.hpp [2:4]
- boost/type_traits/detail/ice_or.hpp [2:4]
- boost/type_traits/detail/is_function_ptr_helper.hpp [5:7]
- boost/type_traits/detail/is_mem_fun_pointer_impl.hpp [4:6]
- boost/type_traits/detail/is_mem_fun_pointer_tester.hpp [4:6]
- boost/type_traits/detail/yes_no_type.hpp [3:5]
- boost/type_traits/extent.hpp [3:5]
- boost/type_traits/function_traits.hpp [3:5]
- boost/type_traits/has_bit_and.hpp [3:5]
- boost/type_traits/has_bit_and_assign.hpp [3:5]
- boost/type_traits/has_bit_or.hpp [3:5]
- boost/type_traits/has_bit_or_assign.hpp [3:5]
- boost/type_traits/has_bit_xor.hpp [3:5]
- boost/type_traits/has_bit_xor_assign.hpp [3:5]
- boost/type_traits/has_complement.hpp [3:5]
- boost/type_traits/has_dereference.hpp [3:5]
- boost/type_traits/has_divides.hpp [3:5]
- boost/type_traits/has_divides_assign.hpp [3:5]
- boost/type_traits/has_equal_to.hpp [3:5]
- boost/type_traits/has_greater.hpp [3:5]
- boost/type_traits/has_greater_equal.hpp [3:5]
- boost/type_traits/has_left_shift.hpp [3:5]
- boost/type_traits/has_left_shift_assign.hpp [3:5]
- boost/type_traits/has_less.hpp [3:5]
- boost/type_traits/has_less_equal.hpp [3:5]
- boost/type_traits/has_logical_and.hpp [3:5]
- boost/type_traits/has_logical_not.hpp [3:5]
- boost/type_traits/has_logical_or.hpp [3:5]
- boost/type_traits/has_minus.hpp [3:5]
- boost/type_traits/has_minus_assign.hpp [3:5]
- boost/type_traits/has_modulus.hpp [3:5]
- boost/type_traits/has_modulus_assign.hpp [3:5]
- boost/type_traits/has_multiplies.hpp [3:5]
- boost/type_traits/has_multiplies_assign.hpp [3:5]
- boost/type_traits/has_negate.hpp [3:5]
- boost/type_traits/has_new_operator.hpp [3:5]
- boost/type_traits/has_not_equal_to.hpp [3:5]
- boost/type_traits/has_nothrow_assign.hpp [3:5]
- boost/type_traits/has_nothrow_constructor.hpp [3:5]
- boost/type_traits/has_nothrow_copy.hpp [3:5]
- boost/type_traits/has_nothrow_destructor.hpp [3:5]
- boost/type_traits/has_operator.hpp [3:5]
- boost/type_traits/has_plus.hpp [3:5]
- boost/type_traits/has_post_decrement.hpp [3:5]
- boost/type_traits/has_post_increment.hpp [3:5]
- boost/type_traits/has_pre_decrement.hpp [3:5]
- boost/type_traits/has_pre_increment.hpp [3:5]
- boost/type_traits/has_right_shift.hpp [3:5]
- boost/type_traits/has_right_shift_assign.hpp [3:5]
- boost/type_traits/has_trivial_assign.hpp [3:5]
- boost/type_traits/has_trivial_constructor.hpp [3:5]
- boost/type_traits/has_trivial_copy.hpp [3:5]
- boost/type_traits/has_trivial_destructor.hpp [3:5]
- boost/type_traits/has_trivial_move_assign.hpp [5:7]
- boost/type_traits/has_trivial_move_constructor.hpp [5:7]
- boost/type_traits/has_unary_minus.hpp [3:5]
- boost/type_traits/has_unary_plus.hpp [3:5]
- boost/type_traits/has_virtual_destructor.hpp [3:5]
- boost/type_traits/ice.hpp [3:5]
- boost/type_traits/intrinsics.hpp [2:4]
- boost/type_traits/is_arithmetic.hpp [3:5]
- boost/type_traits/is_array.hpp [4:6]
- boost/type_traits/is_assignable.hpp [3:5]
- boost/type_traits/is_base_and_derived.hpp [3:5]
- boost/type_traits/is_base_of.hpp [3:5]
- boost/type_traits/is_base_of_tr1.hpp [3:5]
- boost/type_traits/is_class.hpp [3:5]
- boost/type_traits/is_complete.hpp [3:5]
- boost/type_traits/is_complex.hpp [2:4]
- boost/type_traits/is_compound.hpp [3:5]
- boost/type_traits/is_const.hpp [6:8]
- boost/type_traits/is_constructible.hpp [3:5]
- boost/type_traits/is_convertible.hpp [6:8]
- boost/type_traits/is_copy_assignable.hpp [3:5]
- boost/type_traits/is_copy_constructible.hpp [3:5]
- boost/type_traits/is_default_constructible.hpp [3:5]
- boost/type_traits/is_destructible.hpp [3:5]
- boost/type_traits/is_empty.hpp [3:5]
- boost/type_traits/is_enum.hpp [4:6]
- boost/type_traits/is_final.hpp [4:6]
- boost/type_traits/is_float.hpp [2:4]
- boost/type_traits/is_floating_point.hpp [2:4]
- boost/type_traits/is_function.hpp [5:7]
- boost/type_traits/is_fundamental.hpp [3:5]
- boost/type_traits/is_integral.hpp [3:5]
- boost/type_traits/is_lvalue_reference.hpp [6:8]
- boost/type_traits/is_member_function_pointer.hpp [4:6]
- boost/type_traits/is_member_object_pointer.hpp [3:5]
- boost/type_traits/is_member_pointer.hpp [6:8]
- boost/type_traits/is_nothrow_move_assignable.hpp [5:7]
- boost/type_traits/is_nothrow_move_constructible.hpp [5:7]
- boost/type_traits/is_object.hpp [3:5]
- boost/type_traits/is_pod.hpp [3:5]
- boost/type_traits/is_pointer.hpp [6:8]
- boost/type_traits/is_polymorphic.hpp [2:4]
- boost/type_traits/is_reference.hpp [6:8]
- boost/type_traits/is_rvalue_reference.hpp [3:5]
- boost/type_traits/is_same.hpp [6:8]
- boost/type_traits/is_scalar.hpp [3:5]
- boost/type_traits/is_signed.hpp [3:5]
- boost/type_traits/is_stateless.hpp [3:5]
- boost/type_traits/is_union.hpp [4:6]
- boost/type_traits/is_unsigned.hpp [3:5]
- boost/type_traits/is_virtual_base_of.hpp [2:4]
- boost/type_traits/is_void.hpp [3:5]
- boost/type_traits/is_volatile.hpp [6:8]
- boost/type_traits/make_signed.hpp [3:5]
- boost/type_traits/make_unsigned.hpp [3:5]
- boost/type_traits/object_traits.hpp [2:4]
- boost/type_traits/rank.hpp [3:5]
- boost/type_traits/reference_traits.hpp [3:5]
- boost/type_traits/remove_all_extents.hpp [3:5]
- boost/type_traits/remove_bounds.hpp [3:5]
- boost/type_traits/remove_const.hpp [4:6]
- boost/type_traits/remove_cv.hpp [4:6]
- boost/type_traits/remove_cv_ref.hpp [3:5]
- boost/type_traits/remove_extent.hpp [3:5]
- boost/type_traits/remove_pointer.hpp [3:5]
- boost/type_traits/remove_reference.hpp [3:5]
- boost/type_traits/remove_volatile.hpp [4:6]
- boost/type_traits/same_traits.hpp [2:4]
- boost/type_traits/transform_traits.hpp [2:4]
- boost/type_traits/type_with_alignment.hpp [2:4]
- boost/vmd/array.hpp [3:5]
- boost/vmd/array/to_seq.hpp [3:5]
- boost/vmd/array/to_tuple.hpp [3:5]
- boost/vmd/assert.hpp [3:5]
- boost/vmd/assert_is_array.hpp [3:5]
- boost/vmd/assert_is_empty.hpp [3:5]
- boost/vmd/assert_is_identifier.hpp [3:5]
- boost/vmd/assert_is_list.hpp [3:5]
- boost/vmd/assert_is_number.hpp [3:5]
- boost/vmd/assert_is_seq.hpp [3:5]
- boost/vmd/assert_is_tuple.hpp [3:5]
- boost/vmd/assert_is_type.hpp [3:5]
- boost/vmd/detail/adjust_tuple_type.hpp [3:5]
- boost/vmd/detail/array.hpp [3:5]
- boost/vmd/detail/assert.hpp [3:5]
- boost/vmd/detail/data_equal.hpp [3:5]
- boost/vmd/detail/data_equal_common.hpp [3:5]
- boost/vmd/detail/empty_result.hpp [3:5]
- boost/vmd/detail/equal.hpp [3:5]
- boost/vmd/detail/equal_common.hpp [3:5]
- boost/vmd/detail/equal_type.hpp [3:5]
- boost/vmd/detail/identifier.hpp [3:5]
- boost/vmd/detail/identifier_concat.hpp [3:5]
- boost/vmd/detail/identifier_type.hpp [3:5]
- boost/vmd/detail/idprefix.hpp [3:5]
- boost/vmd/detail/is_array.hpp [3:5]
- boost/vmd/detail/is_array_common.hpp [3:5]
- boost/vmd/detail/is_empty.hpp [3:5]
- boost/vmd/detail/is_empty_array.hpp [3:5]
- boost/vmd/detail/is_empty_tuple.hpp [3:5]
- boost/vmd/detail/is_entire.hpp [3:5]
- boost/vmd/detail/is_identifier.hpp [3:5]
- boost/vmd/detail/is_list.hpp [3:5]
- boost/vmd/detail/is_number.hpp [3:5]
- boost/vmd/detail/is_seq.hpp [3:5]
- boost/vmd/detail/is_tuple.hpp [3:5]
- boost/vmd/detail/is_type.hpp [3:5]
- boost/vmd/detail/is_type_type.hpp [3:5]
- boost/vmd/detail/list.hpp [3:5]
- boost/vmd/detail/match_identifier.hpp [3:5]
- boost/vmd/detail/match_identifier_common.hpp [3:5]
- boost/vmd/detail/match_single_identifier.hpp [3:5]
- boost/vmd/detail/modifiers.hpp [3:5]
- boost/vmd/detail/mods.hpp [3:5]
- boost/vmd/detail/nil_registration.hpp [3:5]
- boost/vmd/detail/not_empty.hpp [3:5]
- boost/vmd/detail/number_registration.hpp [3:5]
- boost/vmd/detail/only_after.hpp [3:5]
- boost/vmd/detail/parens.hpp [3:5]
- boost/vmd/detail/parens_common.hpp [3:5]
- boost/vmd/detail/parens_split.hpp [3:5]
- boost/vmd/detail/recurse/data_equal/data_equal_1.hpp [3:5]
- boost/vmd/detail/recurse/data_equal/data_equal_10.hpp [3:5]
- boost/vmd/detail/recurse/data_equal/data_equal_11.hpp [3:5]
- boost/vmd/detail/recurse/data_equal/data_equal_12.hpp [3:5]
- boost/vmd/detail/recurse/data_equal/data_equal_13.hpp [3:5]
- boost/vmd/detail/recurse/data_equal/data_equal_14.hpp [3:5]
- boost/vmd/detail/recurse/data_equal/data_equal_15.hpp [3:5]
- boost/vmd/detail/recurse/data_equal/data_equal_16.hpp [3:5]
- boost/vmd/detail/recurse/data_equal/data_equal_2.hpp [3:5]
- boost/vmd/detail/recurse/data_equal/data_equal_3.hpp [3:5]
- boost/vmd/detail/recurse/data_equal/data_equal_4.hpp [3:5]
- boost/vmd/detail/recurse/data_equal/data_equal_5.hpp [3:5]
- boost/vmd/detail/recurse/data_equal/data_equal_6.hpp [3:5]
- boost/vmd/detail/recurse/data_equal/data_equal_7.hpp [3:5]
- boost/vmd/detail/recurse/data_equal/data_equal_8.hpp [3:5]
- boost/vmd/detail/recurse/data_equal/data_equal_9.hpp [3:5]
- boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp [3:5]
- boost/vmd/detail/recurse/data_equal/data_equal_specific.hpp [3:5]
- boost/vmd/detail/recurse/equal/equal_1.hpp [3:5]
- boost/vmd/detail/recurse/equal/equal_10.hpp [3:5]
- boost/vmd/detail/recurse/equal/equal_11.hpp [3:5]
- boost/vmd/detail/recurse/equal/equal_12.hpp [3:5]
- boost/vmd/detail/recurse/equal/equal_13.hpp [3:5]
- boost/vmd/detail/recurse/equal/equal_14.hpp [3:5]
- boost/vmd/detail/recurse/equal/equal_15.hpp [3:5]
- boost/vmd/detail/recurse/equal/equal_16.hpp [3:5]
- boost/vmd/detail/recurse/equal/equal_2.hpp [3:5]
- boost/vmd/detail/recurse/equal/equal_3.hpp [3:5]
- boost/vmd/detail/recurse/equal/equal_4.hpp [3:5]
- boost/vmd/detail/recurse/equal/equal_5.hpp [3:5]
- boost/vmd/detail/recurse/equal/equal_6.hpp [3:5]
- boost/vmd/detail/recurse/equal/equal_7.hpp [3:5]
- boost/vmd/detail/recurse/equal/equal_8.hpp [3:5]
- boost/vmd/detail/recurse/equal/equal_9.hpp [3:5]
- boost/vmd/detail/recurse/equal/equal_headers.hpp [3:5]
- boost/vmd/detail/seq.hpp [3:5]
- boost/vmd/detail/sequence_arity.hpp [3:5]
- boost/vmd/detail/sequence_common.hpp [3:5]
- boost/vmd/detail/sequence_elem.hpp [3:5]
- boost/vmd/detail/sequence_enum.hpp [3:5]
- boost/vmd/detail/sequence_size.hpp [3:5]
- boost/vmd/detail/sequence_to_array.hpp [3:5]
- boost/vmd/detail/sequence_to_list.hpp [3:5]
- boost/vmd/detail/sequence_to_seq.hpp [3:5]
- boost/vmd/detail/sequence_to_tuple.hpp [3:5]
- boost/vmd/detail/sequence_type.hpp [3:5]
- boost/vmd/detail/setup.hpp [3:5]
- boost/vmd/detail/tuple.hpp [3:5]
- boost/vmd/detail/type_registration.hpp [3:5]
- boost/vmd/detail/variadic_pop_front.hpp [3:5]
- boost/vmd/elem.hpp [3:5]
- boost/vmd/empty.hpp [3:5]
- boost/vmd/enum.hpp [3:5]
- boost/vmd/equal.hpp [3:5]
- boost/vmd/get_type.hpp [3:5]
- boost/vmd/identity.hpp [3:5]
- boost/vmd/is_array.hpp [3:5]
- boost/vmd/is_empty.hpp [3:5]
- boost/vmd/is_empty_array.hpp [3:5]
- boost/vmd/is_empty_list.hpp [3:5]
- boost/vmd/is_identifier.hpp [3:5]
- boost/vmd/is_list.hpp [3:5]
- boost/vmd/is_multi.hpp [3:5]
- boost/vmd/is_number.hpp [3:5]
- boost/vmd/is_parens_empty.hpp [3:5]
- boost/vmd/is_seq.hpp [3:5]
- boost/vmd/is_tuple.hpp [3:5]
- boost/vmd/is_type.hpp [3:5]
- boost/vmd/is_unary.hpp [3:5]
- boost/vmd/list.hpp [3:5]
- boost/vmd/list/to_seq.hpp [3:5]
- boost/vmd/list/to_tuple.hpp [3:5]
- boost/vmd/not_equal.hpp [3:5]
- boost/vmd/seq.hpp [3:5]
- boost/vmd/seq/is_vmd_seq.hpp [3:5]
- boost/vmd/seq/pop_back.hpp [3:5]
- boost/vmd/seq/pop_front.hpp [3:5]
- boost/vmd/seq/push_back.hpp [3:5]
- boost/vmd/seq/push_front.hpp [3:5]
- boost/vmd/seq/remove.hpp [3:5]
- boost/vmd/seq/size.hpp [3:5]
- boost/vmd/seq/to_array.hpp [3:5]
- boost/vmd/seq/to_list.hpp [3:5]
- boost/vmd/seq/to_tuple.hpp [3:5]
- boost/vmd/size.hpp [3:5]
- boost/vmd/to_array.hpp [3:5]
- boost/vmd/to_list.hpp [3:5]
- boost/vmd/to_seq.hpp [3:5]
- boost/vmd/to_tuple.hpp [3:5]
- boost/vmd/tuple.hpp [3:5]
- boost/vmd/tuple/is_vmd_tuple.hpp [3:5]
- boost/vmd/tuple/pop_back.hpp [3:5]
- boost/vmd/tuple/pop_front.hpp [3:5]
- boost/vmd/tuple/push_back.hpp [3:5]
- boost/vmd/tuple/push_front.hpp [3:5]
- boost/vmd/tuple/remove.hpp [3:5]
- boost/vmd/tuple/size.hpp [3:5]
- boost/vmd/tuple/to_array.hpp [3:5]
- boost/vmd/tuple/to_list.hpp [3:5]
- boost/vmd/tuple/to_seq.hpp [3:5]
- boost/vmd/vmd.hpp [3:5]
-
-KEEP BSL-1.0 7532067c3573c5daab384401428cd124
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/proto/detail/template_arity.hpp at line 7, boost/proto/transform/integral_c.hpp at line 7
- License text:
- // Copyright 2011 Eric Niebler. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/proto/detail/template_arity.hpp [5:7]
- boost/proto/transform/integral_c.hpp [5:7]
-
-KEEP BSL-1.0 7593fec1642a6ccc15d9c9dadadd5985
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signals/connection.hpp at line 5, boost/signals/detail/named_slot_map.hpp at line 5, boost/signals/detail/signal_base.hpp at line 5, boost/signals/detail/signals_common.hpp at line 5, boost/signals/detail/slot_call_iterator.hpp at line 5, boost/signals/signal_template.hpp at line 5, boost/signals/slot.hpp at line 5, boost/signals/trackable.hpp at line 5, boost/signals2/detail/preprocessed_arg_type.hpp at line 7, boost/signals2/detail/slot_template.hpp at line 7, boost/signals2/detail/tracked_objects_visitor.hpp at line 7, boost/signals2/preprocessed_slot.hpp at line 7, boost/signals2/slot_base.hpp at line 7, boost/signals2/trackable.hpp at line 7
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/signals/connection.hpp [3:6]
- boost/signals/detail/named_slot_map.hpp [3:6]
- boost/signals/detail/signal_base.hpp [3:6]
- boost/signals/detail/signals_common.hpp [3:6]
- boost/signals/detail/slot_call_iterator.hpp [3:6]
- boost/signals/signal_template.hpp [3:6]
- boost/signals/slot.hpp [3:6]
- boost/signals/trackable.hpp [3:6]
- boost/signals2/detail/preprocessed_arg_type.hpp [5:8]
- boost/signals2/detail/slot_template.hpp [5:8]
- boost/signals2/detail/tracked_objects_visitor.hpp [5:8]
- boost/signals2/preprocessed_slot.hpp [5:8]
- boost/signals2/slot_base.hpp [5:8]
- boost/signals2/trackable.hpp [5:8]
-
-KEEP BSL-1.0 75a19a6388a7f4489e2a025313437ca8
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/allocators/adaptive_pool.hpp at line 5, boost/interprocess/allocators/allocator.hpp at line 5, boost/interprocess/allocators/cached_adaptive_pool.hpp at line 5, boost/interprocess/allocators/cached_node_allocator.hpp at line 5, boost/interprocess/allocators/detail/adaptive_node_pool.hpp at line 5, boost/interprocess/allocators/detail/node_pool.hpp at line 5, boost/interprocess/allocators/node_allocator.hpp at line 5, boost/interprocess/allocators/private_adaptive_pool.hpp at line 5, boost/interprocess/allocators/private_node_allocator.hpp at line 5, boost/interprocess/anonymous_shared_memory.hpp at line 5, boost/interprocess/creation_tags.hpp at line 5, boost/interprocess/detail/cast_tags.hpp at line 5, boost/interprocess/detail/config_begin.hpp at line 5, boost/interprocess/detail/config_end.hpp at line 5, boost/interprocess/detail/in_place_interface.hpp at line 5, boost/interprocess/detail/intersegment_ptr.hpp at line 5, boost/interprocess/detail/managed_memory_impl.hpp at line 5, boost/interprocess/detail/managed_multi_shared_memory.hpp at line 5, boost/interprocess/detail/named_proxy.hpp at line 5, boost/interprocess/detail/os_file_functions.hpp at line 5, boost/interprocess/detail/posix_time_types_wrk.hpp at line 5, boost/interprocess/detail/segment_manager_helper.hpp at line 5, boost/interprocess/errors.hpp at line 5, boost/interprocess/file_mapping.hpp at line 5, boost/interprocess/indexes/flat_map_index.hpp at line 5, boost/interprocess/indexes/iset_index.hpp at line 5, boost/interprocess/indexes/iunordered_set_index.hpp at line 5, boost/interprocess/indexes/map_index.hpp at line 5, boost/interprocess/indexes/null_index.hpp at line 5, boost/interprocess/indexes/unordered_map_index.hpp at line 5, boost/interprocess/interprocess_fwd.hpp at line 5, boost/interprocess/ipc/message_queue.hpp at line 5, boost/interprocess/managed_external_buffer.hpp at line 5, boost/interprocess/managed_heap_memory.hpp at line 5, boost/interprocess/managed_mapped_file.hpp at line 5, boost/interprocess/managed_shared_memory.hpp at line 5, boost/interprocess/managed_windows_shared_memory.hpp at line 5, boost/interprocess/mapped_region.hpp at line 5, boost/interprocess/mem_algo/detail/mem_algo_common.hpp at line 5, boost/interprocess/mem_algo/detail/simple_seq_fit_impl.hpp at line 5, boost/interprocess/mem_algo/rbtree_best_fit.hpp at line 5, boost/interprocess/mem_algo/simple_seq_fit.hpp at line 5, boost/interprocess/permissions.hpp at line 5, boost/interprocess/segment_manager.hpp at line 5, boost/interprocess/shared_memory_object.hpp at line 5, boost/interprocess/streams/bufferstream.hpp at line 5, boost/interprocess/streams/vectorstream.hpp at line 5, boost/interprocess/sync/detail/condition_algorithm_8a.hpp at line 5, boost/interprocess/sync/file_lock.hpp at line 5, boost/interprocess/sync/interprocess_condition.hpp at line 5, boost/interprocess/sync/interprocess_mutex.hpp at line 5, boost/interprocess/sync/interprocess_recursive_mutex.hpp at line 5, boost/interprocess/sync/interprocess_semaphore.hpp at line 5, boost/interprocess/sync/interprocess_sharable_mutex.hpp at line 9, boost/interprocess/sync/interprocess_upgradable_mutex.hpp at line 7, boost/interprocess/sync/lock_options.hpp at line 5, boost/interprocess/sync/mutex_family.hpp at line 5, boost/interprocess/sync/named_condition.hpp at line 5, boost/interprocess/sync/named_condition_any.hpp at line 5, boost/interprocess/sync/named_mutex.hpp at line 5, boost/interprocess/sync/named_recursive_mutex.hpp at line 5, boost/interprocess/sync/named_semaphore.hpp at line 5, boost/interprocess/sync/named_sharable_mutex.hpp at line 5, boost/interprocess/sync/named_upgradable_mutex.hpp at line 5, boost/interprocess/sync/null_mutex.hpp at line 5, boost/interprocess/sync/posix/condition.hpp at line 5, boost/interprocess/sync/posix/mutex.hpp at line 5, boost/interprocess/sync/posix/named_mutex.hpp at line 5, boost/interprocess/sync/posix/named_semaphore.hpp at line 5, boost/interprocess/sync/posix/pthread_helpers.hpp at line 5, boost/interprocess/sync/posix/ptime_to_timespec.hpp at line 5, boost/interprocess/sync/posix/recursive_mutex.hpp at line 5, boost/interprocess/sync/posix/semaphore.hpp at line 5, boost/interprocess/sync/posix/semaphore_wrapper.hpp at line 5, boost/interprocess/sync/scoped_lock.hpp at line 5, boost/interprocess/sync/sharable_lock.hpp at line 5, boost/interprocess/sync/shm/named_condition.hpp at line 5, boost/interprocess/sync/shm/named_condition_any.hpp at line 5, boost/interprocess/sync/shm/named_mutex.hpp at line 5, boost/interprocess/sync/shm/named_recursive_mutex.hpp at line 5, boost/interprocess/sync/shm/named_semaphore.hpp at line 5, boost/interprocess/sync/shm/named_upgradable_mutex.hpp at line 5, boost/interprocess/sync/spin/condition.hpp at line 5, boost/interprocess/sync/spin/mutex.hpp at line 5, boost/interprocess/sync/spin/recursive_mutex.hpp at line 5, boost/interprocess/sync/spin/semaphore.hpp at line 5, boost/interprocess/sync/upgradable_lock.hpp at line 5, boost/interprocess/sync/windows/condition.hpp at line 5, boost/interprocess/sync/windows/mutex.hpp at line 5, boost/interprocess/sync/windows/recursive_mutex.hpp at line 5, boost/interprocess/sync/windows/semaphore.hpp at line 5, boost/interprocess/sync/windows/sync_utils.hpp at line 5, boost/interprocess/windows_shared_memory.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/interprocess/allocators/adaptive_pool.hpp [3:5]
- boost/interprocess/allocators/allocator.hpp [3:5]
- boost/interprocess/allocators/cached_adaptive_pool.hpp [3:5]
- boost/interprocess/allocators/cached_node_allocator.hpp [3:5]
- boost/interprocess/allocators/detail/adaptive_node_pool.hpp [3:5]
- boost/interprocess/allocators/detail/node_pool.hpp [3:5]
- boost/interprocess/allocators/node_allocator.hpp [3:5]
- boost/interprocess/allocators/private_adaptive_pool.hpp [3:5]
- boost/interprocess/allocators/private_node_allocator.hpp [3:5]
- boost/interprocess/anonymous_shared_memory.hpp [3:5]
- boost/interprocess/creation_tags.hpp [3:5]
- boost/interprocess/detail/cast_tags.hpp [3:5]
- boost/interprocess/detail/config_begin.hpp [3:5]
- boost/interprocess/detail/config_end.hpp [3:5]
- boost/interprocess/detail/in_place_interface.hpp [3:5]
- boost/interprocess/detail/intersegment_ptr.hpp [3:5]
- boost/interprocess/detail/managed_memory_impl.hpp [3:5]
- boost/interprocess/detail/managed_multi_shared_memory.hpp [3:5]
- boost/interprocess/detail/named_proxy.hpp [3:5]
- boost/interprocess/detail/os_file_functions.hpp [3:5]
- boost/interprocess/detail/posix_time_types_wrk.hpp [3:5]
- boost/interprocess/detail/segment_manager_helper.hpp [3:5]
- boost/interprocess/errors.hpp [3:5]
- boost/interprocess/file_mapping.hpp [3:5]
- boost/interprocess/indexes/flat_map_index.hpp [3:5]
- boost/interprocess/indexes/iset_index.hpp [3:5]
- boost/interprocess/indexes/iunordered_set_index.hpp [3:5]
- boost/interprocess/indexes/map_index.hpp [3:5]
- boost/interprocess/indexes/null_index.hpp [3:5]
- boost/interprocess/indexes/unordered_map_index.hpp [3:5]
- boost/interprocess/interprocess_fwd.hpp [3:5]
- boost/interprocess/ipc/message_queue.hpp [3:5]
- boost/interprocess/managed_external_buffer.hpp [3:5]
- boost/interprocess/managed_heap_memory.hpp [3:5]
- boost/interprocess/managed_mapped_file.hpp [3:5]
- boost/interprocess/managed_shared_memory.hpp [3:5]
- boost/interprocess/managed_windows_shared_memory.hpp [3:5]
- boost/interprocess/mapped_region.hpp [3:5]
- boost/interprocess/mem_algo/detail/mem_algo_common.hpp [3:5]
- boost/interprocess/mem_algo/detail/simple_seq_fit_impl.hpp [3:5]
- boost/interprocess/mem_algo/rbtree_best_fit.hpp [3:5]
- boost/interprocess/mem_algo/simple_seq_fit.hpp [3:5]
- boost/interprocess/permissions.hpp [3:5]
- boost/interprocess/segment_manager.hpp [3:5]
- boost/interprocess/shared_memory_object.hpp [3:5]
- boost/interprocess/streams/bufferstream.hpp [3:5]
- boost/interprocess/streams/vectorstream.hpp [3:5]
- boost/interprocess/sync/detail/condition_algorithm_8a.hpp [3:5]
- boost/interprocess/sync/file_lock.hpp [3:5]
- boost/interprocess/sync/interprocess_condition.hpp [3:5]
- boost/interprocess/sync/interprocess_mutex.hpp [3:5]
- boost/interprocess/sync/interprocess_recursive_mutex.hpp [3:5]
- boost/interprocess/sync/interprocess_semaphore.hpp [3:5]
- boost/interprocess/sync/interprocess_sharable_mutex.hpp [7:9]
- boost/interprocess/sync/interprocess_upgradable_mutex.hpp [5:7]
- boost/interprocess/sync/lock_options.hpp [3:5]
- boost/interprocess/sync/mutex_family.hpp [3:5]
- boost/interprocess/sync/named_condition.hpp [3:5]
- boost/interprocess/sync/named_condition_any.hpp [3:5]
- boost/interprocess/sync/named_mutex.hpp [3:5]
- boost/interprocess/sync/named_recursive_mutex.hpp [3:5]
- boost/interprocess/sync/named_semaphore.hpp [3:5]
- boost/interprocess/sync/named_sharable_mutex.hpp [3:5]
- boost/interprocess/sync/named_upgradable_mutex.hpp [3:5]
- boost/interprocess/sync/null_mutex.hpp [3:5]
- boost/interprocess/sync/posix/condition.hpp [3:5]
- boost/interprocess/sync/posix/mutex.hpp [3:5]
- boost/interprocess/sync/posix/named_mutex.hpp [3:5]
- boost/interprocess/sync/posix/named_semaphore.hpp [3:5]
- boost/interprocess/sync/posix/pthread_helpers.hpp [3:5]
- boost/interprocess/sync/posix/ptime_to_timespec.hpp [3:5]
- boost/interprocess/sync/posix/recursive_mutex.hpp [3:5]
- boost/interprocess/sync/posix/semaphore.hpp [3:5]
- boost/interprocess/sync/posix/semaphore_wrapper.hpp [3:5]
- boost/interprocess/sync/scoped_lock.hpp [3:5]
- boost/interprocess/sync/sharable_lock.hpp [3:5]
- boost/interprocess/sync/shm/named_condition.hpp [3:5]
- boost/interprocess/sync/shm/named_condition_any.hpp [3:5]
- boost/interprocess/sync/shm/named_mutex.hpp [3:5]
- boost/interprocess/sync/shm/named_recursive_mutex.hpp [3:5]
- boost/interprocess/sync/shm/named_semaphore.hpp [3:5]
- boost/interprocess/sync/shm/named_upgradable_mutex.hpp [3:5]
- boost/interprocess/sync/spin/condition.hpp [3:5]
- boost/interprocess/sync/spin/mutex.hpp [3:5]
- boost/interprocess/sync/spin/recursive_mutex.hpp [3:5]
- boost/interprocess/sync/spin/semaphore.hpp [3:5]
- boost/interprocess/sync/upgradable_lock.hpp [3:5]
- boost/interprocess/sync/windows/condition.hpp [3:5]
- boost/interprocess/sync/windows/mutex.hpp [3:5]
- boost/interprocess/sync/windows/recursive_mutex.hpp [3:5]
- boost/interprocess/sync/windows/semaphore.hpp [3:5]
- boost/interprocess/sync/windows/sync_utils.hpp [3:5]
- boost/interprocess/windows_shared_memory.hpp [3:5]
-
-KEEP BSL-1.0 75ef0605ddf04e80832100a2bfa49411
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/covariance.hpp at line 6, boost/accumulators/statistics/density.hpp at line 7, boost/accumulators/statistics/peaks_over_threshold.hpp at line 6, boost/accumulators/statistics/pot_quantile.hpp at line 6, boost/accumulators/statistics/pot_tail_mean.hpp at line 6, boost/accumulators/statistics/tail_mean.hpp at line 6, boost/accumulators/statistics/tail_quantile.hpp at line 6, boost/accumulators/statistics/tail_variate_means.hpp at line 6, boost/accumulators/statistics/weighted_covariance.hpp at line 6, boost/accumulators/statistics/weighted_density.hpp at line 6, boost/accumulators/statistics/weighted_p_square_cumul_dist.hpp at line 6, boost/accumulators/statistics/weighted_peaks_over_threshold.hpp at line 6, boost/accumulators/statistics/weighted_tail_mean.hpp at line 6, boost/accumulators/statistics/weighted_tail_quantile.hpp at line 6, boost/accumulators/statistics/weighted_tail_variate_means.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/accumulators/statistics/covariance.hpp [4:6]
- boost/accumulators/statistics/density.hpp [5:7]
- boost/accumulators/statistics/peaks_over_threshold.hpp [4:6]
- boost/accumulators/statistics/pot_quantile.hpp [4:6]
- boost/accumulators/statistics/pot_tail_mean.hpp [4:6]
- boost/accumulators/statistics/tail_mean.hpp [4:6]
- boost/accumulators/statistics/tail_quantile.hpp [4:6]
- boost/accumulators/statistics/tail_variate_means.hpp [4:6]
- boost/accumulators/statistics/weighted_covariance.hpp [4:6]
- boost/accumulators/statistics/weighted_density.hpp [4:6]
- boost/accumulators/statistics/weighted_p_square_cumul_dist.hpp [4:6]
- boost/accumulators/statistics/weighted_peaks_over_threshold.hpp [4:6]
- boost/accumulators/statistics/weighted_tail_mean.hpp [4:6]
- boost/accumulators/statistics/weighted_tail_quantile.hpp [4:6]
- boost/accumulators/statistics/weighted_tail_variate_means.hpp [4:6]
-
-KEEP BSL-1.0 76283d3ba21930b39430ed67346ed1df
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signals2/predestructible.hpp at line 12
- License text:
- //Use, modification and
- // distribution is subject to the Boost Software License, Version
- // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/signals2/predestructible.hpp [10:13]
-
-KEEP BSL-1.0 76d332554d0e0dcfe9c9b3caf48262f9
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/function/detail/function_iterate.hpp at line 5, boost/function/detail/maybe_include.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/function/detail/function_iterate.hpp [3:6]
- boost/function/detail/maybe_include.hpp [3:6]
-
-KEEP BSL-1.0 77795e223e37217964bfdecbffd04c93
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/proto/context/detail/callable_eval.hpp at line 25, boost/proto/context/detail/default_eval.hpp at line 21, boost/proto/context/detail/null_eval.hpp at line 21, boost/proto/detail/and_n.hpp at line 17, boost/proto/detail/args.hpp at line 30, boost/proto/detail/basic_expr.hpp at line 30, boost/proto/detail/class_member_traits.hpp at line 17, boost/proto/detail/deduce_domain_n.hpp at line 23, boost/proto/detail/deep_copy.hpp at line 29, boost/proto/detail/expr.hpp at line 35, boost/proto/detail/extends_funop.hpp at line 27, boost/proto/detail/extends_funop_const.hpp at line 26, boost/proto/detail/funop.hpp at line 25, boost/proto/detail/generate_by_value.hpp at line 17, boost/proto/detail/lambda_matches.hpp at line 23, boost/proto/detail/make_expr.hpp at line 17, boost/proto/detail/make_expr_.hpp at line 17, boost/proto/detail/make_expr_funop.hpp at line 17, boost/proto/detail/matches_.hpp at line 31, boost/proto/detail/memfun_funop.hpp at line 17, boost/proto/detail/or_n.hpp at line 17, boost/proto/detail/poly_function_funop.hpp at line 22, boost/proto/detail/poly_function_traits.hpp at line 17, boost/proto/detail/preprocessed/args.hpp at line 8, boost/proto/detail/preprocessed/class_member_traits.hpp at line 7, boost/proto/detail/preprocessed/make_expr.hpp at line 7, boost/proto/detail/preprocessed/make_expr_funop.hpp at line 7, boost/proto/detail/preprocessed/memfun_funop.hpp at line 7, boost/proto/detail/preprocessed/or_n.hpp at line 7, boost/proto/detail/preprocessed/poly_function_traits.hpp at line 7, boost/proto/detail/preprocessed/template_arity_helper.hpp at line 7, boost/proto/detail/preprocessed/vararg_matches_impl.hpp at line 7, boost/proto/detail/template_arity_helper.hpp at line 17, boost/proto/detail/traits.hpp at line 22, boost/proto/detail/unpack_expr_.hpp at line 82, boost/proto/detail/vararg_matches_impl.hpp at line 17, boost/proto/transform/detail/call.hpp at line 28, boost/proto/transform/detail/construct_funop.hpp at line 17, boost/proto/transform/detail/construct_pod_funop.hpp at line 17, boost/proto/transform/detail/default_function_impl.hpp at line 21, boost/proto/transform/detail/fold_impl.hpp at line 75, boost/proto/transform/detail/lazy.hpp at line 17, boost/proto/transform/detail/make.hpp at line 35, boost/proto/transform/detail/make_gcc_workaround.hpp at line 26, boost/proto/transform/detail/pass_through_impl.hpp at line 37, boost/proto/transform/detail/preprocessed/construct_funop.hpp at line 7, boost/proto/transform/detail/preprocessed/construct_pod_funop.hpp at line 7, boost/proto/transform/detail/preprocessed/lazy.hpp at line 7, boost/proto/transform/detail/preprocessed/when.hpp at line 7, boost/proto/transform/detail/when.hpp at line 17
- License text:
- // Copyright 2008 Eric Niebler. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/proto/context/detail/callable_eval.hpp [23:25]
- boost/proto/context/detail/default_eval.hpp [19:21]
- boost/proto/context/detail/null_eval.hpp [19:21]
- boost/proto/detail/and_n.hpp [15:17]
- boost/proto/detail/args.hpp [28:30]
- boost/proto/detail/basic_expr.hpp [28:30]
- boost/proto/detail/class_member_traits.hpp [15:17]
- boost/proto/detail/deduce_domain_n.hpp [21:23]
- boost/proto/detail/deep_copy.hpp [27:29]
- boost/proto/detail/expr.hpp [33:35]
- boost/proto/detail/extends_funop.hpp [25:27]
- boost/proto/detail/extends_funop_const.hpp [24:26]
- boost/proto/detail/funop.hpp [23:25]
- boost/proto/detail/generate_by_value.hpp [15:17]
- boost/proto/detail/lambda_matches.hpp [21:23]
- boost/proto/detail/make_expr.hpp [15:17]
- boost/proto/detail/make_expr_.hpp [15:17]
- boost/proto/detail/make_expr_funop.hpp [15:17]
- boost/proto/detail/matches_.hpp [29:31]
- boost/proto/detail/memfun_funop.hpp [15:17]
- boost/proto/detail/or_n.hpp [15:17]
- boost/proto/detail/poly_function_funop.hpp [20:22]
- boost/proto/detail/poly_function_traits.hpp [15:17]
- boost/proto/detail/preprocessed/args.hpp [6:8]
- boost/proto/detail/preprocessed/class_member_traits.hpp [5:7]
- boost/proto/detail/preprocessed/make_expr.hpp [5:7]
- boost/proto/detail/preprocessed/make_expr_funop.hpp [5:7]
- boost/proto/detail/preprocessed/memfun_funop.hpp [5:7]
- boost/proto/detail/preprocessed/or_n.hpp [5:7]
- boost/proto/detail/preprocessed/poly_function_traits.hpp [5:7]
- boost/proto/detail/preprocessed/template_arity_helper.hpp [5:7]
- boost/proto/detail/preprocessed/vararg_matches_impl.hpp [5:7]
- boost/proto/detail/template_arity_helper.hpp [15:17]
- boost/proto/detail/traits.hpp [20:22]
- boost/proto/detail/unpack_expr_.hpp [80:82]
- boost/proto/detail/vararg_matches_impl.hpp [15:17]
- boost/proto/transform/detail/call.hpp [26:28]
- boost/proto/transform/detail/construct_funop.hpp [15:17]
- boost/proto/transform/detail/construct_pod_funop.hpp [15:17]
- boost/proto/transform/detail/default_function_impl.hpp [19:21]
- boost/proto/transform/detail/fold_impl.hpp [73:75]
- boost/proto/transform/detail/lazy.hpp [15:17]
- boost/proto/transform/detail/make.hpp [33:35]
- boost/proto/transform/detail/make_gcc_workaround.hpp [24:26]
- boost/proto/transform/detail/pass_through_impl.hpp [35:37]
- boost/proto/transform/detail/preprocessed/construct_funop.hpp [5:7]
- boost/proto/transform/detail/preprocessed/construct_pod_funop.hpp [5:7]
- boost/proto/transform/detail/preprocessed/lazy.hpp [5:7]
- boost/proto/transform/detail/preprocessed/when.hpp [5:7]
- boost/proto/transform/detail/when.hpp [15:17]
-
-KEEP BSL-1.0 78aea327bac86d71b524e110a6804d07
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/numeric/odeint/util/bind.hpp at line 13
- License text:
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or
- * copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/numeric/odeint/util/bind.hpp [12:14]
-
-KEEP BSL-1.0 78e141595344e7e88ebac427a369a9d6
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/p_square_cumulative_distribution.hpp at line 6, boost/accumulators/statistics/weighted_p_square_cumulative_distribution.hpp at line 6, boost/proto/detail/any.hpp at line 7, boost/proto/functional/range.hpp at line 7, boost/proto/functional/range/begin.hpp at line 7, boost/proto/functional/range/empty.hpp at line 7, boost/proto/functional/range/end.hpp at line 7, boost/proto/functional/range/rbegin.hpp at line 7, boost/proto/functional/range/rend.hpp at line 7, boost/proto/functional/range/size.hpp at line 7, boost/proto/functional/std/iterator.hpp at line 7, boost/proto/transform/detail/pack.hpp at line 7, boost/proto/transform/env.hpp at line 7
- License text:
- // Copyright 2012 Eric Niebler. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/accumulators/statistics/p_square_cumulative_distribution.hpp [4:6]
- boost/accumulators/statistics/weighted_p_square_cumulative_distribution.hpp [4:6]
- boost/proto/detail/any.hpp [5:7]
- boost/proto/functional/range.hpp [5:7]
- boost/proto/functional/range/begin.hpp [5:7]
- boost/proto/functional/range/empty.hpp [5:7]
- boost/proto/functional/range/end.hpp [5:7]
- boost/proto/functional/range/rbegin.hpp [5:7]
- boost/proto/functional/range/rend.hpp [5:7]
- boost/proto/functional/range/size.hpp [5:7]
- boost/proto/functional/std/iterator.hpp [5:7]
- boost/proto/transform/detail/pack.hpp [5:7]
- boost/proto/transform/env.hpp [5:7]
-
-KEEP BSL-1.0 78f7dffc575e9ab83ba643ecd766473e
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/algorithm/adjacent_find.hpp at line 3, boost/range/algorithm/binary_search.hpp at line 3, boost/range/algorithm/copy.hpp at line 3, boost/range/algorithm/copy_backward.hpp at line 3, boost/range/algorithm/count.hpp at line 3, boost/range/algorithm/count_if.hpp at line 3, boost/range/algorithm/equal_range.hpp at line 3, boost/range/algorithm/fill.hpp at line 3, boost/range/algorithm/fill_n.hpp at line 3, boost/range/algorithm/find.hpp at line 3, boost/range/algorithm/find_end.hpp at line 3, boost/range/algorithm/find_first_of.hpp at line 3, boost/range/algorithm/find_if.hpp at line 3, boost/range/algorithm/for_each.hpp at line 3, boost/range/algorithm/generate.hpp at line 3, boost/range/algorithm/heap_algorithm.hpp at line 3, boost/range/algorithm/inplace_merge.hpp at line 3, boost/range/algorithm/lexicographical_compare.hpp at line 3, boost/range/algorithm/lower_bound.hpp at line 3, boost/range/algorithm/max_element.hpp at line 3, boost/range/algorithm/merge.hpp at line 3, boost/range/algorithm/min_element.hpp at line 3, boost/range/algorithm/mismatch.hpp at line 3, boost/range/algorithm/nth_element.hpp at line 3, boost/range/algorithm/partial_sort.hpp at line 3, boost/range/algorithm/partial_sort_copy.hpp at line 3, boost/range/algorithm/partition.hpp at line 3, boost/range/algorithm/permutation.hpp at line 3, boost/range/algorithm/random_shuffle.hpp at line 3, boost/range/algorithm/remove.hpp at line 3, boost/range/algorithm/remove_copy.hpp at line 3, boost/range/algorithm/remove_copy_if.hpp at line 3, boost/range/algorithm/remove_if.hpp at line 3, boost/range/algorithm/replace.hpp at line 3, boost/range/algorithm/replace_copy.hpp at line 3, boost/range/algorithm/replace_copy_if.hpp at line 3, boost/range/algorithm/replace_if.hpp at line 3, boost/range/algorithm/reverse.hpp at line 3, boost/range/algorithm/reverse_copy.hpp at line 3, boost/range/algorithm/rotate.hpp at line 3, boost/range/algorithm/rotate_copy.hpp at line 3, boost/range/algorithm/search.hpp at line 3, boost/range/algorithm/search_n.hpp at line 3, boost/range/algorithm/set_algorithm.hpp at line 3, boost/range/algorithm/sort.hpp at line 3, boost/range/algorithm/stable_partition.hpp at line 3, boost/range/algorithm/stable_sort.hpp at line 3, boost/range/algorithm/swap_ranges.hpp at line 3, boost/range/algorithm/transform.hpp at line 3, boost/range/algorithm/unique.hpp at line 3, boost/range/algorithm/unique_copy.hpp at line 3, boost/range/algorithm/upper_bound.hpp at line 3, boost/range/algorithm_ext/copy_n.hpp at line 3, boost/range/algorithm_ext/erase.hpp at line 5, boost/range/algorithm_ext/for_each.hpp at line 5, boost/range/algorithm_ext/insert.hpp at line 5, boost/range/algorithm_ext/iota.hpp at line 5, boost/range/algorithm_ext/is_sorted.hpp at line 4, boost/range/algorithm_ext/overwrite.hpp at line 5, boost/range/algorithm_ext/push_back.hpp at line 5, boost/range/algorithm_ext/push_front.hpp at line 5, boost/range/detail/demote_iterator_traversal_tag.hpp at line 5, boost/range/detail/join_iterator.hpp at line 5, boost/range/detail/range_return.hpp at line 3, boost/range/join.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/range/algorithm/adjacent_find.hpp [1:4]
- boost/range/algorithm/binary_search.hpp [1:4]
- boost/range/algorithm/copy.hpp [1:4]
- boost/range/algorithm/copy_backward.hpp [1:4]
- boost/range/algorithm/count.hpp [1:4]
- boost/range/algorithm/count_if.hpp [1:4]
- boost/range/algorithm/equal_range.hpp [1:4]
- boost/range/algorithm/fill.hpp [1:4]
- boost/range/algorithm/fill_n.hpp [1:4]
- boost/range/algorithm/find.hpp [1:4]
- boost/range/algorithm/find_end.hpp [1:4]
- boost/range/algorithm/find_first_of.hpp [1:4]
- boost/range/algorithm/find_if.hpp [1:4]
- boost/range/algorithm/for_each.hpp [1:4]
- boost/range/algorithm/generate.hpp [1:4]
- boost/range/algorithm/heap_algorithm.hpp [1:4]
- boost/range/algorithm/inplace_merge.hpp [1:4]
- boost/range/algorithm/lexicographical_compare.hpp [1:4]
- boost/range/algorithm/lower_bound.hpp [1:4]
- boost/range/algorithm/max_element.hpp [1:4]
- boost/range/algorithm/merge.hpp [1:4]
- boost/range/algorithm/min_element.hpp [1:4]
- boost/range/algorithm/mismatch.hpp [1:4]
- boost/range/algorithm/nth_element.hpp [1:4]
- boost/range/algorithm/partial_sort.hpp [1:4]
- boost/range/algorithm/partial_sort_copy.hpp [1:4]
- boost/range/algorithm/partition.hpp [1:4]
- boost/range/algorithm/permutation.hpp [1:4]
- boost/range/algorithm/random_shuffle.hpp [1:4]
- boost/range/algorithm/remove.hpp [1:4]
- boost/range/algorithm/remove_copy.hpp [1:4]
- boost/range/algorithm/remove_copy_if.hpp [1:4]
- boost/range/algorithm/remove_if.hpp [1:4]
- boost/range/algorithm/replace.hpp [1:4]
- boost/range/algorithm/replace_copy.hpp [1:4]
- boost/range/algorithm/replace_copy_if.hpp [1:4]
- boost/range/algorithm/replace_if.hpp [1:4]
- boost/range/algorithm/reverse.hpp [1:4]
- boost/range/algorithm/reverse_copy.hpp [1:4]
- boost/range/algorithm/rotate.hpp [1:4]
- boost/range/algorithm/rotate_copy.hpp [1:4]
- boost/range/algorithm/search.hpp [1:4]
- boost/range/algorithm/search_n.hpp [1:4]
- boost/range/algorithm/set_algorithm.hpp [1:4]
- boost/range/algorithm/sort.hpp [1:4]
- boost/range/algorithm/stable_partition.hpp [1:4]
- boost/range/algorithm/stable_sort.hpp [1:4]
- boost/range/algorithm/swap_ranges.hpp [1:4]
- boost/range/algorithm/transform.hpp [1:4]
- boost/range/algorithm/unique.hpp [1:4]
- boost/range/algorithm/unique_copy.hpp [1:4]
- boost/range/algorithm/upper_bound.hpp [1:4]
- boost/range/algorithm_ext/copy_n.hpp [1:4]
- boost/range/algorithm_ext/erase.hpp [3:6]
- boost/range/algorithm_ext/for_each.hpp [3:6]
- boost/range/algorithm_ext/insert.hpp [3:6]
- boost/range/algorithm_ext/iota.hpp [3:6]
- boost/range/algorithm_ext/is_sorted.hpp [2:5]
- boost/range/algorithm_ext/overwrite.hpp [3:6]
- boost/range/algorithm_ext/push_back.hpp [3:6]
- boost/range/algorithm_ext/push_front.hpp [3:6]
- boost/range/detail/demote_iterator_traversal_tag.hpp [3:6]
- boost/range/detail/join_iterator.hpp [3:6]
- boost/range/detail/range_return.hpp [1:4]
- boost/range/join.hpp [3:6]
-
-KEEP BSL-1.0 796d4cea34dcc1ae5e911c9e4e63030e
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/sum_kahan.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/accumulators/statistics/sum_kahan.hpp [4:6]
-
-KEEP BSL-1.0 7bb81c7e56dd6df833123be5c3742521
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/header_deprecated.hpp at line 8, boost/config/helper_macros.hpp at line 9, boost/config/pragma_message.hpp at line 8, boost/is_placeholder.hpp at line 17, boost/mp11.hpp at line 8, boost/mp11/algorithm.hpp at line 8, boost/mp11/bind.hpp at line 8, boost/mp11/detail/config.hpp at line 8, boost/mp11/detail/mp_append.hpp at line 8, boost/mp11/detail/mp_count.hpp at line 8, boost/mp11/detail/mp_fold.hpp at line 8, boost/mp11/detail/mp_list.hpp at line 8, boost/mp11/detail/mp_map_find.hpp at line 8, boost/mp11/detail/mp_min_element.hpp at line 8, boost/mp11/detail/mp_plus.hpp at line 8, boost/mp11/detail/mp_void.hpp at line 8, boost/mp11/detail/mp_with_index.hpp at line 8, boost/mp11/function.hpp at line 8, boost/mp11/integer_sequence.hpp at line 8, boost/mp11/integral.hpp at line 8, boost/mp11/list.hpp at line 8, boost/mp11/map.hpp at line 8, boost/mp11/set.hpp at line 8, boost/mp11/tuple.hpp at line 8, boost/mp11/utility.hpp at line 8
- License text:
- // Distributed under the Boost Software License, Version 1.0.
- //
- // See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/config/header_deprecated.hpp [6:9]
- boost/config/helper_macros.hpp [7:10]
- boost/config/pragma_message.hpp [6:9]
- boost/is_placeholder.hpp [15:18]
- boost/mp11.hpp [6:9]
- boost/mp11/algorithm.hpp [6:9]
- boost/mp11/bind.hpp [6:9]
- boost/mp11/detail/config.hpp [6:9]
- boost/mp11/detail/mp_append.hpp [6:9]
- boost/mp11/detail/mp_count.hpp [6:9]
- boost/mp11/detail/mp_fold.hpp [6:9]
- boost/mp11/detail/mp_list.hpp [6:9]
- boost/mp11/detail/mp_map_find.hpp [6:9]
- boost/mp11/detail/mp_min_element.hpp [6:9]
- boost/mp11/detail/mp_plus.hpp [6:9]
- boost/mp11/detail/mp_void.hpp [6:9]
- boost/mp11/detail/mp_with_index.hpp [6:9]
- boost/mp11/function.hpp [6:9]
- boost/mp11/integer_sequence.hpp [6:9]
- boost/mp11/integral.hpp [6:9]
- boost/mp11/list.hpp [6:9]
- boost/mp11/map.hpp [6:9]
- boost/mp11/set.hpp [6:9]
- boost/mp11/tuple.hpp [6:9]
- boost/mp11/utility.hpp [6:9]
-
-KEEP BSL-1.0 7dd8de26ac392d25f996e40e98028698
-BELONGS libs/regex/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/cregex.hpp at line 8, boost/regex.h at line 8, boost/regex.hpp at line 8, boost/regex/concepts.hpp at line 8, boost/regex/config/borland.hpp at line 8, boost/regex/config/cwchar.hpp at line 8, boost/regex/icu.hpp at line 8, boost/regex/mfc.hpp at line 8, boost/regex/pattern_except.hpp at line 8, boost/regex/pending/object_cache.hpp at line 8, boost/regex/pending/static_mutex.hpp at line 8, boost/regex/pending/unicode_iterator.hpp at line 8, boost/regex/regex_traits.hpp at line 8, boost/regex/user.hpp at line 8, boost/regex/v4/basic_regex_creator.hpp at line 8, boost/regex/v4/c_regex_traits.hpp at line 8, boost/regex/v4/cpp_regex_traits.hpp at line 8, boost/regex/v4/fileiter.hpp at line 8, boost/regex/v4/iterator_category.hpp at line 8, boost/regex/v4/iterator_traits.hpp at line 8, boost/regex/v4/match_flags.hpp at line 8, boost/regex/v4/match_results.hpp at line 8, boost/regex/v4/mem_block_cache.hpp at line 7, boost/regex/v4/perl_matcher.hpp at line 8, boost/regex/v4/perl_matcher_common.hpp at line 8, boost/regex/v4/perl_matcher_non_recursive.hpp at line 8, boost/regex/v4/perl_matcher_recursive.hpp at line 8, boost/regex/v4/primary_transform.hpp at line 8, boost/regex/v4/protected_call.hpp at line 8, boost/regex/v4/regbase.hpp at line 8, boost/regex/v4/regex.hpp at line 8, boost/regex/v4/regex_format.hpp at line 8, boost/regex/v4/regex_fwd.hpp at line 8, boost/regex/v4/regex_grep.hpp at line 8, boost/regex/v4/regex_iterator.hpp at line 8, boost/regex/v4/regex_match.hpp at line 8, boost/regex/v4/regex_merge.hpp at line 8, boost/regex/v4/regex_raw_buffer.hpp at line 8, boost/regex/v4/regex_replace.hpp at line 8, boost/regex/v4/regex_search.hpp at line 8, boost/regex/v4/regex_split.hpp at line 8, boost/regex/v4/regex_traits.hpp at line 8, boost/regex/v4/regex_workaround.hpp at line 8, boost/regex/v4/states.hpp at line 8, boost/regex/v4/sub_match.hpp at line 8, boost/regex/v4/syntax_type.hpp at line 8, boost/regex/v4/u32regex_iterator.hpp at line 8, boost/regex/v4/u32regex_token_iterator.hpp at line 8, boost/regex/v4/w32_regex_traits.hpp at line 8, boost/regex_fwd.hpp at line 8, libs/regex/src/c_regex_traits.cpp at line 8, libs/regex/src/cpp_regex_traits.cpp at line 8, libs/regex/src/cregex.cpp at line 8, libs/regex/src/fileiter.cpp at line 8, libs/regex/src/icu.cpp at line 8, libs/regex/src/instances.cpp at line 8, libs/regex/src/internals.hpp at line 8, libs/regex/src/posix_api.cpp at line 8, libs/regex/src/regex.cpp at line 8, libs/regex/src/regex_debug.cpp at line 8, libs/regex/src/regex_raw_buffer.cpp at line 8, libs/regex/src/regex_traits_defaults.cpp at line 8, libs/regex/src/static_mutex.cpp at line 8, libs/regex/src/usinstances.cpp at line 8, libs/regex/src/w32_regex_traits.cpp at line 8, libs/regex/src/wc_regex_traits.cpp at line 8, libs/regex/src/wide_posix_api.cpp at line 8, libs/regex/src/winstances.cpp at line 8
- License text:
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/cregex.hpp [6:8]
- boost/regex.h [6:8]
- boost/regex.hpp [6:8]
- boost/regex/concepts.hpp [6:8]
- boost/regex/config/borland.hpp [6:8]
- boost/regex/config/cwchar.hpp [6:8]
- boost/regex/icu.hpp [6:8]
- boost/regex/mfc.hpp [6:8]
- boost/regex/pattern_except.hpp [6:8]
- boost/regex/pending/object_cache.hpp [6:8]
- boost/regex/pending/static_mutex.hpp [6:8]
- boost/regex/pending/unicode_iterator.hpp [6:8]
- boost/regex/regex_traits.hpp [6:8]
- boost/regex/user.hpp [6:8]
- boost/regex/v4/basic_regex_creator.hpp [6:8]
- boost/regex/v4/c_regex_traits.hpp [6:8]
- boost/regex/v4/cpp_regex_traits.hpp [6:8]
- boost/regex/v4/fileiter.hpp [6:8]
- boost/regex/v4/iterator_category.hpp [6:8]
- boost/regex/v4/iterator_traits.hpp [6:8]
- boost/regex/v4/match_flags.hpp [6:8]
- boost/regex/v4/match_results.hpp [6:8]
- boost/regex/v4/mem_block_cache.hpp [5:7]
- boost/regex/v4/perl_matcher.hpp [6:8]
- boost/regex/v4/perl_matcher_common.hpp [6:8]
- boost/regex/v4/perl_matcher_non_recursive.hpp [6:8]
- boost/regex/v4/perl_matcher_recursive.hpp [6:8]
- boost/regex/v4/primary_transform.hpp [6:8]
- boost/regex/v4/protected_call.hpp [6:8]
- boost/regex/v4/regbase.hpp [6:8]
- boost/regex/v4/regex.hpp [6:8]
- boost/regex/v4/regex_format.hpp [6:8]
- boost/regex/v4/regex_fwd.hpp [6:8]
- boost/regex/v4/regex_grep.hpp [6:8]
- boost/regex/v4/regex_iterator.hpp [6:8]
- boost/regex/v4/regex_match.hpp [6:8]
- boost/regex/v4/regex_merge.hpp [6:8]
- boost/regex/v4/regex_raw_buffer.hpp [6:8]
- boost/regex/v4/regex_replace.hpp [6:8]
- boost/regex/v4/regex_search.hpp [6:8]
- boost/regex/v4/regex_split.hpp [6:8]
- boost/regex/v4/regex_traits.hpp [6:8]
- boost/regex/v4/regex_workaround.hpp [6:8]
- boost/regex/v4/states.hpp [6:8]
- boost/regex/v4/sub_match.hpp [6:8]
- boost/regex/v4/syntax_type.hpp [6:8]
- boost/regex/v4/u32regex_iterator.hpp [6:8]
- boost/regex/v4/u32regex_token_iterator.hpp [6:8]
- boost/regex/v4/w32_regex_traits.hpp [6:8]
- boost/regex_fwd.hpp [6:8]
- libs/regex/src/c_regex_traits.cpp [6:8]
- libs/regex/src/cpp_regex_traits.cpp [6:8]
- libs/regex/src/cregex.cpp [6:8]
- libs/regex/src/fileiter.cpp [6:8]
- libs/regex/src/icu.cpp [6:8]
- libs/regex/src/instances.cpp [6:8]
- libs/regex/src/internals.hpp [6:8]
- libs/regex/src/posix_api.cpp [6:8]
- libs/regex/src/regex.cpp [6:8]
- libs/regex/src/regex_debug.cpp [6:8]
- libs/regex/src/regex_raw_buffer.cpp [6:8]
- libs/regex/src/regex_traits_defaults.cpp [6:8]
- libs/regex/src/static_mutex.cpp [6:8]
- libs/regex/src/usinstances.cpp [6:8]
- libs/regex/src/w32_regex_traits.cpp [6:8]
- libs/regex/src/wc_regex_traits.cpp [6:8]
- libs/regex/src/wide_posix_api.cpp [6:8]
- libs/regex/src/winstances.cpp [6:8]
-
-KEEP BSL-1.0 7e488dcc33e05aa7d1480d1328f86b4e
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/date_time/gregorian/greg_duration_types.hpp at line 6
- License text:
- * Subject to Boost Software License, Version 1.0. (See accompanying
- * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 81.48
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/date_time/gregorian/greg_duration_types.hpp [5:6]
-
-KEEP BSL-1.0 7f762e9633d1993f42a043b4063080c5
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/median.hpp at line 6, boost/accumulators/statistics/weighted_mean.hpp at line 6, boost/accumulators/statistics/weighted_median.hpp at line 6, boost/accumulators/statistics/weighted_sum.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/accumulators/statistics/median.hpp [4:6]
- boost/accumulators/statistics/weighted_mean.hpp [4:6]
- boost/accumulators/statistics/weighted_median.hpp [4:6]
- boost/accumulators/statistics/weighted_sum.hpp [4:6]
-
-SKIP MPL-1.1 80499698582f4da56012c9acc6d83c52
-BELONGS ya.make
- License text:
- //! Lift a MPL-style metafunction class to a Metafunction.
- Scancode info:
- Original SPDX id: MPL-1.1
- Score : 80.00
- Match type : REFERENCE
- Links : http://www.mozilla.com/MPL/1.1/index.html, http://www.mozilla.org/MPL/MPL-1.1.html, https://spdx.org/licenses/MPL-1.1
- Files with this license:
- boost/hana/fwd/type.hpp [446:446]
-
-KEEP BSL-1.0 813f8ac244dee01bf8132c98b185b1f1
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/geometry/algorithms/detail/point_on_border.hpp at line 15
- License text:
- // Use, modification and distribution is subject to the Boost Software License,
- // Version 1.Dimension. (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 93.75
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/geometry/algorithms/detail/point_on_border.hpp [14:16]
-
-KEEP BSL-1.0 AND BSL-1.0 81534fdf11ce43c96d75f25a8fd6c0ab
-BELONGS ya.make
- License text:
- // Use, modification and distribution are subject to the Boost Software License,
- // Version 1.0. See http://www.boost.org/LICENSE_1_0.txt.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 59.38
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/convert.hpp [22:23]
- boost/convert/base.hpp [2:3]
- boost/convert/detail/char.hpp [2:3]
- boost/convert/detail/config.hpp [2:3]
- boost/convert/detail/has_member.hpp [2:3]
- boost/convert/detail/is_callable.hpp [2:3]
- boost/convert/detail/is_fun.hpp [2:3]
- boost/convert/detail/range.hpp [2:3]
- boost/convert/lexical_cast.hpp [2:3]
- boost/convert/parameters.hpp [2:3]
- boost/convert/printf.hpp [2:3]
- boost/convert/stream.hpp [2:3]
- boost/convert/strtol.hpp [2:3]
- boost/make_default.hpp [3:4]
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/convert/detail/boost_parameter_ext.hpp [2:3]
- boost/convert/detail/is_converter.hpp [2:3]
- boost/convert/detail/is_string.hpp [2:3]
- boost/convert/spirit.hpp [2:3]
-
-KEEP BSL-1.0 81e66a23cd062438370d4f6bb173b77a
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/extended_p_square.hpp at line 6, boost/accumulators/statistics/extended_p_square_quantile.hpp at line 6, boost/accumulators/statistics/p_square_quantile.hpp at line 6, boost/accumulators/statistics/weighted_extended_p_square.hpp at line 6, boost/accumulators/statistics/weighted_p_square_quantile.hpp at line 6
- License text:
- // Copyright 2005 Daniel Egloff. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/accumulators/statistics/extended_p_square.hpp [4:6]
- boost/accumulators/statistics/extended_p_square_quantile.hpp [4:6]
- boost/accumulators/statistics/p_square_quantile.hpp [4:6]
- boost/accumulators/statistics/weighted_extended_p_square.hpp [4:6]
- boost/accumulators/statistics/weighted_p_square_quantile.hpp [4:6]
-
-KEEP BSL-1.0 8400d1479aa5d0f1d34303e9c6b21e12
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/distributed/adjlist/serialization.hpp at line 3, boost/graph/distributed/shuffled_distribution.hpp at line 3
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/graph/distributed/adjlist/serialization.hpp [1:3]
- boost/graph/distributed/shuffled_distribution.hpp [1:3]
-
-KEEP BSL-1.0 845ce6060100deffb4edaf2bf0afa16b
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/function_equal.hpp at line 6
- License text:
- // Use, modification and distribution is subject to
- // the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/function_equal.hpp [4:7]
-
-KEEP BSL-1.0 AND BSL-1.0 8643809499b430f347d7dc1bb3dfd0a5
-BELONGS ya.make
- License text:
- // Use modification and distribution are subject to the boost Software License,
- // Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 59.38
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/function_types/components.hpp [4:5]
- boost/function_types/config/cc_names.hpp [4:5]
- boost/function_types/config/config.hpp [4:5]
- boost/function_types/detail/class_transform.hpp [4:5]
- boost/function_types/detail/classifier.hpp [4:5]
- boost/function_types/detail/classifier_impl/arity10_0.hpp [4:5]
- boost/function_types/detail/classifier_impl/arity10_1.hpp [4:5]
- boost/function_types/detail/classifier_impl/master.hpp [4:5]
- boost/function_types/detail/components_as_mpl_sequence.hpp [4:5]
- boost/function_types/detail/components_impl/arity10_0.hpp [4:5]
- boost/function_types/detail/components_impl/arity10_1.hpp [4:5]
- boost/function_types/detail/components_impl/master.hpp [4:5]
- boost/function_types/detail/encoding/aliases_def.hpp [4:5]
- boost/function_types/detail/encoding/aliases_undef.hpp [4:5]
- boost/function_types/detail/encoding/def.hpp [4:5]
- boost/function_types/detail/encoding/undef.hpp [4:5]
- boost/function_types/detail/pp_arity_loop.hpp [4:5]
- boost/function_types/detail/pp_cc_loop/master.hpp [4:5]
- boost/function_types/detail/pp_cc_loop/preprocessed.hpp [4:5]
- boost/function_types/detail/pp_loop.hpp [4:5]
- boost/function_types/detail/pp_retag_default_cc/master.hpp [4:5]
- boost/function_types/detail/pp_retag_default_cc/preprocessed.hpp [4:5]
- boost/function_types/detail/pp_tags/cc_tag.hpp [4:5]
- boost/function_types/detail/pp_tags/master.hpp [4:5]
- boost/function_types/detail/pp_tags/preprocessed.hpp [4:5]
- boost/function_types/detail/pp_variate_loop/master.hpp [4:5]
- boost/function_types/detail/retag_default_cc.hpp [4:5]
- boost/function_types/detail/synthesize.hpp [4:5]
- boost/function_types/detail/synthesize_impl/arity10_0.hpp [4:5]
- boost/function_types/detail/synthesize_impl/arity10_1.hpp [4:5]
- boost/function_types/detail/synthesize_impl/master.hpp [4:5]
- boost/function_types/detail/to_sequence.hpp [4:5]
- boost/function_types/function_arity.hpp [4:5]
- boost/function_types/function_pointer.hpp [4:5]
- boost/function_types/function_reference.hpp [4:5]
- boost/function_types/is_callable_builtin.hpp [4:5]
- boost/function_types/is_function.hpp [4:5]
- boost/function_types/is_function_pointer.hpp [4:5]
- boost/function_types/is_function_reference.hpp [4:5]
- boost/function_types/is_member_function_pointer.hpp [4:5]
- boost/function_types/is_member_object_pointer.hpp [4:5]
- boost/function_types/is_member_pointer.hpp [4:5]
- boost/function_types/is_nonmember_callable_builtin.hpp [4:5]
- boost/function_types/member_function_pointer.hpp [4:5]
- boost/function_types/member_object_pointer.hpp [4:5]
- boost/function_types/parameter_types.hpp [4:5]
- boost/function_types/property_tags.hpp [4:5]
- boost/function_types/result_type.hpp [4:5]
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/function_types/config/compiler.hpp [4:5]
- boost/function_types/detail/cv_traits.hpp [4:5]
- boost/function_types/detail/pp_variate_loop/preprocessed.hpp [4:5]
- boost/function_types/function_type.hpp [4:5]
- boost/typeof/vector100.hpp [5:6]
- boost/typeof/vector150.hpp [5:6]
- boost/typeof/vector200.hpp [5:6]
-
-KEEP BSL-1.0 87615bb769df65be73962ba4b234a0af
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/gil/algorithm.hpp at line 5, boost/gil/bit_aligned_pixel_iterator.hpp at line 5, boost/gil/bit_aligned_pixel_reference.hpp at line 5, boost/gil/channel.hpp at line 5, boost/gil/channel_algorithm.hpp at line 5, boost/gil/cmyk.hpp at line 5, boost/gil/color_base.hpp at line 5, boost/gil/color_base_algorithm.hpp at line 5, boost/gil/color_convert.hpp at line 5, boost/gil/deprecated.hpp at line 5, boost/gil/device_n.hpp at line 5, boost/gil/extension/dynamic_image/algorithm.hpp at line 5, boost/gil/extension/dynamic_image/any_image.hpp at line 5, boost/gil/extension/dynamic_image/any_image_view.hpp at line 5, boost/gil/extension/dynamic_image/apply_operation.hpp at line 5, boost/gil/extension/dynamic_image/apply_operation_base.hpp at line 5, boost/gil/extension/dynamic_image/dynamic_at_c.hpp at line 5, boost/gil/extension/dynamic_image/dynamic_image_all.hpp at line 5, boost/gil/extension/dynamic_image/image_view_factory.hpp at line 5, boost/gil/extension/dynamic_image/reduce.hpp at line 5, boost/gil/extension/dynamic_image/variant.hpp at line 5, boost/gil/extension/io/dynamic_io.hpp at line 5, boost/gil/extension/io/io_error.hpp at line 5, boost/gil/extension/io/jpeg_dynamic_io.hpp at line 5, boost/gil/extension/io/jpeg_io.hpp at line 5, boost/gil/extension/io/jpeg_io_private.hpp at line 5, boost/gil/extension/io/png_dynamic_io.hpp at line 5, boost/gil/extension/io/png_io.hpp at line 5, boost/gil/extension/io/png_io_private.hpp at line 5, boost/gil/extension/io/tiff_dynamic_io.hpp at line 5, boost/gil/extension/io/tiff_io.hpp at line 5, boost/gil/gil_all.hpp at line 5, boost/gil/gil_concept.hpp at line 5, boost/gil/gil_config.hpp at line 5, boost/gil/gray.hpp at line 5, boost/gil/image.hpp at line 5, boost/gil/image_view.hpp at line 5, boost/gil/image_view_factory.hpp at line 5, boost/gil/iterator_from_2d.hpp at line 5, boost/gil/locator.hpp at line 5, boost/gil/metafunctions.hpp at line 5, boost/gil/packed_pixel.hpp at line 5, boost/gil/pixel.hpp at line 5, boost/gil/pixel_iterator.hpp at line 5, boost/gil/pixel_iterator_adaptor.hpp at line 5, boost/gil/planar_pixel_iterator.hpp at line 5, boost/gil/planar_pixel_reference.hpp at line 5, boost/gil/position_iterator.hpp at line 5, boost/gil/rgb.hpp at line 5, boost/gil/rgba.hpp at line 5, boost/gil/step_iterator.hpp at line 5, boost/gil/typedefs.hpp at line 5, boost/gil/utilities.hpp at line 5, boost/gil/virtual_locator.hpp at line 5, boost/polygon/detail/polygon_45_formation.hpp at line 5, boost/polygon/detail/polygon_arbitrary_formation.hpp at line 5, boost/polygon/detail/polygon_formation.hpp at line 5, boost/polygon/detail/rectangle_formation.hpp at line 5
- License text:
- Use, modification and distribution are subject to the Boost Software License,
- Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/gil/algorithm.hpp [4:6]
- boost/gil/bit_aligned_pixel_iterator.hpp [4:6]
- boost/gil/bit_aligned_pixel_reference.hpp [4:6]
- boost/gil/channel.hpp [4:6]
- boost/gil/channel_algorithm.hpp [4:6]
- boost/gil/cmyk.hpp [4:6]
- boost/gil/color_base.hpp [4:6]
- boost/gil/color_base_algorithm.hpp [4:6]
- boost/gil/color_convert.hpp [4:6]
- boost/gil/deprecated.hpp [4:6]
- boost/gil/device_n.hpp [4:6]
- boost/gil/extension/dynamic_image/algorithm.hpp [4:6]
- boost/gil/extension/dynamic_image/any_image.hpp [4:6]
- boost/gil/extension/dynamic_image/any_image_view.hpp [4:6]
- boost/gil/extension/dynamic_image/apply_operation.hpp [4:6]
- boost/gil/extension/dynamic_image/apply_operation_base.hpp [4:6]
- boost/gil/extension/dynamic_image/dynamic_at_c.hpp [4:6]
- boost/gil/extension/dynamic_image/dynamic_image_all.hpp [4:6]
- boost/gil/extension/dynamic_image/image_view_factory.hpp [4:6]
- boost/gil/extension/dynamic_image/reduce.hpp [4:6]
- boost/gil/extension/dynamic_image/variant.hpp [4:6]
- boost/gil/extension/io/dynamic_io.hpp [4:6]
- boost/gil/extension/io/io_error.hpp [4:6]
- boost/gil/extension/io/jpeg_dynamic_io.hpp [4:6]
- boost/gil/extension/io/jpeg_io.hpp [4:6]
- boost/gil/extension/io/jpeg_io_private.hpp [4:6]
- boost/gil/extension/io/png_dynamic_io.hpp [4:6]
- boost/gil/extension/io/png_io.hpp [4:6]
- boost/gil/extension/io/png_io_private.hpp [4:6]
- boost/gil/extension/io/tiff_dynamic_io.hpp [4:6]
- boost/gil/extension/io/tiff_io.hpp [4:6]
- boost/gil/gil_all.hpp [4:6]
- boost/gil/gil_concept.hpp [4:6]
- boost/gil/gil_config.hpp [4:6]
- boost/gil/gray.hpp [4:6]
- boost/gil/image.hpp [4:6]
- boost/gil/image_view.hpp [4:6]
- boost/gil/image_view_factory.hpp [4:6]
- boost/gil/iterator_from_2d.hpp [4:6]
- boost/gil/locator.hpp [4:6]
- boost/gil/metafunctions.hpp [4:6]
- boost/gil/packed_pixel.hpp [4:6]
- boost/gil/pixel.hpp [4:6]
- boost/gil/pixel_iterator.hpp [4:6]
- boost/gil/pixel_iterator_adaptor.hpp [4:6]
- boost/gil/planar_pixel_iterator.hpp [4:6]
- boost/gil/planar_pixel_reference.hpp [4:6]
- boost/gil/position_iterator.hpp [4:6]
- boost/gil/rgb.hpp [4:6]
- boost/gil/rgba.hpp [4:6]
- boost/gil/step_iterator.hpp [4:6]
- boost/gil/typedefs.hpp [4:6]
- boost/gil/utilities.hpp [4:6]
- boost/gil/virtual_locator.hpp [4:6]
- boost/polygon/detail/polygon_45_formation.hpp [4:6]
- boost/polygon/detail/polygon_arbitrary_formation.hpp [4:6]
- boost/polygon/detail/polygon_formation.hpp [4:6]
- boost/polygon/detail/rectangle_formation.hpp [4:6]
-
-KEEP BSL-1.0 88098ea217207abacf6209d2ad07530d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/cstdlib.hpp at line 5
- License text:
- // Copyright Beman Dawes 2001. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/cstdlib.hpp [3:5]
-
-KEEP BSL-1.0 88b58de1d7149f0278b4887961d64fc8
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/math/quadrature/detail/exp_sinh_detail.hpp at line 4, boost/math/quadrature/detail/sinh_sinh_detail.hpp at line 4, boost/math/quadrature/detail/tanh_sinh_constants.hpp at line 4, boost/math/quadrature/detail/tanh_sinh_detail.hpp at line 4
- License text:
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt
- // or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/math/quadrature/detail/exp_sinh_detail.hpp [2:5]
- boost/math/quadrature/detail/sinh_sinh_detail.hpp [2:5]
- boost/math/quadrature/detail/tanh_sinh_constants.hpp [2:5]
- boost/math/quadrature/detail/tanh_sinh_detail.hpp [2:5]
-
-KEEP BSL-1.0 88c4d29e0aacbf465a938844cbc5d047
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/lcast_precision.hpp at line 5, boost/math/distributions/arcsine.hpp at line 8, boost/math/distributions/bernoulli.hpp at line 8, boost/math/distributions/beta.hpp at line 8, boost/math/distributions/binomial.hpp at line 8, boost/math/distributions/chi_squared.hpp at line 6, boost/math/distributions/detail/common_error_handling.hpp at line 6, boost/math/distributions/detail/generic_mode.hpp at line 5, boost/math/distributions/detail/hypergeometric_cdf.hpp at line 5, boost/math/distributions/detail/hypergeometric_pdf.hpp at line 6, boost/math/distributions/detail/hypergeometric_quantile.hpp at line 5, boost/math/distributions/fisher_f.hpp at line 5, boost/math/distributions/fwd.hpp at line 8, boost/math/distributions/geometric.hpp at line 8, boost/math/distributions/hypergeometric.hpp at line 6, boost/math/distributions/inverse_chi_squared.hpp at line 6, boost/math/distributions/logistic.hpp at line 5, boost/math/distributions/negative_binomial.hpp at line 8, boost/math/distributions/non_central_beta.hpp at line 7, boost/math/distributions/non_central_chi_squared.hpp at line 7, boost/math/distributions/non_central_f.hpp at line 7, boost/math/distributions/non_central_t.hpp at line 7, boost/math/distributions/poisson.hpp at line 8, boost/math/interpolators/cubic_b_spline.hpp at line 4, boost/math/interpolators/detail/cubic_b_spline_detail.hpp at line 4, boost/math/quadrature/exp_sinh.hpp at line 4, boost/math/quadrature/sinh_sinh.hpp at line 4, boost/math/quadrature/tanh_sinh.hpp at line 4, boost/math/special_functions/airy.hpp at line 4, boost/math/special_functions/detail/round_fwd.hpp at line 5, boost/math/special_functions/hankel.hpp at line 4, boost/math/special_functions/jacobi_elliptic.hpp at line 4, boost/math/special_functions/legendre_stieltjes.hpp at line 4, boost/math/special_functions/math_fwd.hpp at line 10, boost/math/special_functions/prime.hpp at line 5, boost/math/tools/promotion.hpp at line 8, boost/math/tools/user.hpp at line 6, boost/math/tr1.hpp at line 4, boost/math/tr1_c_macros.ipp at line 4
- License text:
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt
- // or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/detail/lcast_precision.hpp [3:6]
- boost/math/distributions/arcsine.hpp [6:9]
- boost/math/distributions/bernoulli.hpp [6:9]
- boost/math/distributions/beta.hpp [6:9]
- boost/math/distributions/binomial.hpp [6:9]
- boost/math/distributions/chi_squared.hpp [4:7]
- boost/math/distributions/detail/common_error_handling.hpp [4:7]
- boost/math/distributions/detail/generic_mode.hpp [3:6]
- boost/math/distributions/detail/hypergeometric_cdf.hpp [3:6]
- boost/math/distributions/detail/hypergeometric_pdf.hpp [4:7]
- boost/math/distributions/detail/hypergeometric_quantile.hpp [3:6]
- boost/math/distributions/fisher_f.hpp [3:6]
- boost/math/distributions/fwd.hpp [6:9]
- boost/math/distributions/geometric.hpp [6:9]
- boost/math/distributions/hypergeometric.hpp [4:7]
- boost/math/distributions/inverse_chi_squared.hpp [4:7]
- boost/math/distributions/logistic.hpp [3:6]
- boost/math/distributions/negative_binomial.hpp [6:9]
- boost/math/distributions/non_central_beta.hpp [5:8]
- boost/math/distributions/non_central_chi_squared.hpp [5:8]
- boost/math/distributions/non_central_f.hpp [5:8]
- boost/math/distributions/non_central_t.hpp [5:8]
- boost/math/distributions/poisson.hpp [6:9]
- boost/math/interpolators/cubic_b_spline.hpp [2:5]
- boost/math/interpolators/detail/cubic_b_spline_detail.hpp [2:5]
- boost/math/quadrature/exp_sinh.hpp [2:5]
- boost/math/quadrature/sinh_sinh.hpp [2:5]
- boost/math/quadrature/tanh_sinh.hpp [2:5]
- boost/math/special_functions/airy.hpp [2:5]
- boost/math/special_functions/detail/round_fwd.hpp [3:6]
- boost/math/special_functions/hankel.hpp [2:5]
- boost/math/special_functions/jacobi_elliptic.hpp [2:5]
- boost/math/special_functions/legendre_stieltjes.hpp [2:5]
- boost/math/special_functions/math_fwd.hpp [8:11]
- boost/math/special_functions/prime.hpp [3:6]
- boost/math/tools/promotion.hpp [6:9]
- boost/math/tools/user.hpp [4:7]
- boost/math/tr1.hpp [2:5]
- boost/math/tr1_c_macros.ipp [2:5]
-
-KEEP BSL-1.0 89e2554ef35082c6fb4690ee1e33d5c2
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/function/detail/prologue.hpp at line 5, boost/function/function0.hpp at line 5, boost/function/function1.hpp at line 5, boost/function/function10.hpp at line 5, boost/function/function2.hpp at line 5, boost/function/function3.hpp at line 5, boost/function/function4.hpp at line 5, boost/function/function5.hpp at line 5, boost/function/function6.hpp at line 5, boost/function/function7.hpp at line 5, boost/function/function8.hpp at line 5, boost/function/function9.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/function/detail/prologue.hpp [3:6]
- boost/function/function0.hpp [3:6]
- boost/function/function1.hpp [3:6]
- boost/function/function10.hpp [3:6]
- boost/function/function2.hpp [3:6]
- boost/function/function3.hpp [3:6]
- boost/function/function4.hpp [3:6]
- boost/function/function5.hpp [3:6]
- boost/function/function6.hpp [3:6]
- boost/function/function7.hpp [3:6]
- boost/function/function8.hpp [3:6]
- boost/function/function9.hpp [3:6]
-
-SKIP LGPL-2.0-or-later 8a1040dc7b7219719cc0c3ae86702fcb
-BELONGS ya.make
- License text:
- \note The implementation is inspired by terralib http://www.terralib.org (LGPL)
- Scancode info:
- Original SPDX id: LGPL-2.0-or-later
- Score : 75.00
- Match type : REFERENCE
- Links : http://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html, http://www.gnu.org/licenses/old-licenses/lgpl-2.0.html, https://spdx.org/licenses/LGPL-2.0-or-later
- Files with this license:
- boost/geometry/strategies/agnostic/point_in_poly_oriented_winding.hpp [39:39]
- boost/geometry/strategies/cartesian/point_in_poly_winding.hpp [45:45]
-
-KEEP BSL-1.0 8a8e0b18cc05e7bc28034b7fb1c69575
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/atomic.hpp at line 7, boost/atomic/detail/interlocked.hpp at line 8, boost/core/typeinfo.hpp at line 15, boost/detail/sp_typeinfo.hpp at line 17, boost/memory_order.hpp at line 9, boost/ptr_container/detail/ptr_container_disable_deprecated.hpp at line 16, boost/smart_ptr/detail/sp_disable_deprecated.hpp at line 16, boost/smart_ptr/detail/sp_has_sync.hpp at line 16, boost/smart_ptr/detail/spinlock.hpp at line 16, boost/smart_ptr/detail/spinlock_gcc_arm.hpp at line 8, boost/smart_ptr/detail/spinlock_nt.hpp at line 14, boost/smart_ptr/detail/spinlock_pool.hpp at line 16, boost/smart_ptr/detail/spinlock_pt.hpp at line 14, boost/smart_ptr/detail/spinlock_std_atomic.hpp at line 14, boost/smart_ptr/detail/spinlock_sync.hpp at line 14, boost/smart_ptr/detail/spinlock_w32.hpp at line 14
- License text:
- // Distributed under the Boost Software License, Version 1.0.
- // See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/atomic.hpp [6:8]
- boost/atomic/detail/interlocked.hpp [7:9]
- boost/core/typeinfo.hpp [14:16]
- boost/detail/sp_typeinfo.hpp [16:18]
- boost/memory_order.hpp [8:10]
- boost/ptr_container/detail/ptr_container_disable_deprecated.hpp [15:17]
- boost/smart_ptr/detail/sp_disable_deprecated.hpp [15:17]
- boost/smart_ptr/detail/sp_has_sync.hpp [15:17]
- boost/smart_ptr/detail/spinlock.hpp [15:17]
- boost/smart_ptr/detail/spinlock_gcc_arm.hpp [7:9]
- boost/smart_ptr/detail/spinlock_nt.hpp [13:15]
- boost/smart_ptr/detail/spinlock_pool.hpp [15:17]
- boost/smart_ptr/detail/spinlock_pt.hpp [13:15]
- boost/smart_ptr/detail/spinlock_std_atomic.hpp [13:15]
- boost/smart_ptr/detail/spinlock_sync.hpp [13:15]
- boost/smart_ptr/detail/spinlock_w32.hpp [13:15]
-
-KEEP BSL-1.0 8abbac2c705b0911702566954b0ebe9b
-BELONGS libs/locale/ya.make libs/python/ya.make libs/thread/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/algorithm/cxx11/is_sorted.hpp at line 7, boost/core/checked_delete.hpp at line 18, boost/detail/interlocked.hpp at line 10, boost/locale.hpp at line 5, boost/locale/boundary.hpp at line 5, boost/locale/boundary/boundary_point.hpp at line 5, boost/locale/boundary/facets.hpp at line 5, boost/locale/boundary/index.hpp at line 5, boost/locale/boundary/segment.hpp at line 5, boost/locale/boundary/types.hpp at line 5, boost/locale/collator.hpp at line 5, boost/locale/config.hpp at line 5, boost/locale/conversion.hpp at line 5, boost/locale/date_time.hpp at line 5, boost/locale/date_time_facet.hpp at line 5, boost/locale/definitions.hpp at line 5, boost/locale/encoding.hpp at line 5, boost/locale/encoding_errors.hpp at line 5, boost/locale/encoding_utf.hpp at line 5, boost/locale/format.hpp at line 5, boost/locale/formatting.hpp at line 5, boost/locale/generator.hpp at line 5, boost/locale/gnu_gettext.hpp at line 5, boost/locale/hold_ptr.hpp at line 5, boost/locale/info.hpp at line 5, boost/locale/localization_backend.hpp at line 5, boost/locale/message.hpp at line 5, boost/locale/time_zone.hpp at line 5, boost/locale/utf.hpp at line 5, boost/locale/utf8_codecvt.hpp at line 5, boost/locale/util.hpp at line 5, boost/lockfree/detail/atomic.hpp at line 4, boost/lockfree/detail/copy_payload.hpp at line 6, boost/lockfree/detail/freelist.hpp at line 6, boost/lockfree/detail/prefix.hpp at line 4, boost/lockfree/detail/tagged_ptr.hpp at line 6, boost/lockfree/detail/tagged_ptr_dcas.hpp at line 6, boost/lockfree/detail/tagged_ptr_ptrcompression.hpp at line 6, boost/lockfree/lockfree_forward.hpp at line 4, boost/lockfree/queue.hpp at line 8, boost/lockfree/spsc_queue.hpp at line 7, boost/lockfree/stack.hpp at line 4, boost/numeric/conversion/detail/numeric_cast_traits.hpp at line 33, boost/numeric/conversion/detail/numeric_cast_traits.hpp at line 6, boost/numeric/conversion/detail/numeric_cast_traits.hpp at line 84, boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_common.hpp at line 6, boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_long_long.hpp at line 6, boost/numeric/conversion/numeric_cast_traits.hpp at line 6, boost/numeric/ublas/assignment.hpp at line 5, boost/numeric/ublas/banded.hpp at line 6, boost/numeric/ublas/blas.hpp at line 4, boost/numeric/ublas/detail/concepts.hpp at line 6, boost/numeric/ublas/detail/config.hpp at line 6, boost/numeric/ublas/detail/definitions.hpp at line 6, boost/numeric/ublas/detail/documentation.hpp at line 6, boost/numeric/ublas/detail/duff.hpp at line 6, boost/numeric/ublas/detail/iterator.hpp at line 6, boost/numeric/ublas/detail/matrix_assign.hpp at line 6, boost/numeric/ublas/detail/raw.hpp at line 6, boost/numeric/ublas/detail/temporary.hpp at line 6, boost/numeric/ublas/detail/vector_assign.hpp at line 6, boost/numeric/ublas/doxydoc.hpp at line 4, boost/numeric/ublas/exception.hpp at line 4, boost/numeric/ublas/experimental/sparse_view.hpp at line 6, boost/numeric/ublas/expression_types.hpp at line 5, boost/numeric/ublas/functional.hpp at line 6, boost/numeric/ublas/fwd.hpp at line 6, boost/numeric/ublas/hermitian.hpp at line 6, boost/numeric/ublas/io.hpp at line 6, boost/numeric/ublas/lu.hpp at line 6, boost/numeric/ublas/matrix.hpp at line 7, boost/numeric/ublas/matrix_expression.hpp at line 6, boost/numeric/ublas/matrix_proxy.hpp at line 6, boost/numeric/ublas/matrix_sparse.hpp at line 6, boost/numeric/ublas/matrix_vector.hpp at line 5, boost/numeric/ublas/operation.hpp at line 6, boost/numeric/ublas/operation_blocked.hpp at line 6, boost/numeric/ublas/operation_sparse.hpp at line 6, boost/numeric/ublas/storage.hpp at line 6, boost/numeric/ublas/storage_sparse.hpp at line 6, boost/numeric/ublas/symmetric.hpp at line 6, boost/numeric/ublas/traits.hpp at line 6, boost/numeric/ublas/triangular.hpp at line 6, boost/numeric/ublas/vector_expression.hpp at line 6, boost/numeric/ublas/vector_of_vector.hpp at line 6, boost/numeric/ublas/vector_proxy.hpp at line 6, boost/numeric/ublas/vector_sparse.hpp at line 6, boost/operators.hpp at line 6, boost/operators_v1.hpp at line 5, boost/pending/container_traits.hpp at line 5, boost/pending/detail/disjoint_sets.hpp at line 3, boost/pending/detail/int_iterator.hpp at line 3, boost/pending/detail/property.hpp at line 3, boost/pending/fenced_priority_queue.hpp at line 3, boost/pending/property.hpp at line 3, boost/pending/property_serialize.hpp at line 3, boost/pending/queue.hpp at line 3, boost/pending/stringtok.hpp at line 3, boost/python/object/pickle_support.hpp at line 3, boost/python/suite/indexing/container_utils.hpp at line 4, boost/python/suite/indexing/detail/indexing_suite_detail.hpp at line 3, boost/python/suite/indexing/indexing_suite.hpp at line 3, boost/python/suite/indexing/map_indexing_suite.hpp at line 3, boost/python/suite/indexing/vector_indexing_suite.hpp at line 3, boost/scoped_array.hpp at line 8, boost/scoped_ptr.hpp at line 8, boost/serialization/detail/shared_ptr_132.hpp at line 11, boost/serialization/detail/shared_ptr_nmt_132.hpp at line 11, boost/shared_array.hpp at line 11, boost/shared_ptr.hpp at line 11, boost/smart_ptr/atomic_shared_ptr.hpp at line 10, boost/smart_ptr/detail/atomic_count_gcc.hpp at line 16, boost/smart_ptr/detail/atomic_count_gcc_x86.hpp at line 12, boost/smart_ptr/detail/atomic_count_sync.hpp at line 14, boost/smart_ptr/detail/local_counted_base.hpp at line 15, boost/smart_ptr/detail/local_sp_deleter.hpp at line 15, boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp at line 11, boost/smart_ptr/detail/sp_counted_base_aix.hpp at line 13, boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp at line 17, boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp at line 18, boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp at line 12, boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp at line 16, boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp at line 17, boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp at line 17, boost/smart_ptr/detail/sp_counted_base_solaris.hpp at line 13, boost/smart_ptr/detail/sp_counted_base_spin.hpp at line 17, boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp at line 14, boost/smart_ptr/detail/sp_counted_base_w32.hpp at line 17, boost/smart_ptr/intrusive_ptr.hpp at line 10, boost/smart_ptr/local_shared_ptr.hpp at line 9, boost/smart_ptr/owner_less.hpp at line 11, boost/smart_ptr/scoped_array.hpp at line 8, boost/smart_ptr/scoped_ptr.hpp at line 8, boost/smart_ptr/shared_array.hpp at line 11, boost/smart_ptr/shared_ptr.hpp at line 11, boost/smart_ptr/weak_ptr.hpp at line 10, boost/thread/condition.hpp at line 6, boost/thread/condition_variable.hpp at line 9, boost/thread/cv_status.hpp at line 6, boost/thread/detail/platform_time.hpp at line 7, boost/thread/detail/thread_heap_alloc.hpp at line 9, boost/thread/executors/work.hpp at line 4, boost/thread/future.hpp at line 5, boost/thread/futures/future_error.hpp at line 5, boost/thread/futures/future_error_code.hpp at line 5, boost/thread/futures/future_status.hpp at line 5, boost/thread/futures/is_future_type.hpp at line 5, boost/thread/futures/launch.hpp at line 5, boost/thread/futures/wait_for_all.hpp at line 5, boost/thread/futures/wait_for_any.hpp at line 5, boost/thread/mutex.hpp at line 9, boost/thread/once.hpp at line 9, boost/thread/pthread/once.hpp at line 10, boost/thread/pthread/once_atomic.hpp at line 10, boost/thread/pthread/pthread_helpers.hpp at line 7, boost/thread/pthread/pthread_mutex_scoped_lock.hpp at line 6, boost/thread/pthread/shared_mutex.hpp at line 8, boost/thread/recursive_mutex.hpp at line 9, boost/thread/shared_mutex.hpp at line 10, boost/thread/thread.hpp at line 9, boost/thread/thread_only.hpp at line 9, boost/thread/thread_time.hpp at line 6, boost/thread/v2/shared_mutex.hpp at line 10, boost/thread/win32/basic_recursive_mutex.hpp at line 10, boost/thread/win32/basic_timed_mutex.hpp at line 10, boost/thread/win32/interlocked_read.hpp at line 11, boost/thread/win32/once.hpp at line 11, boost/thread/win32/recursive_mutex.hpp at line 9, boost/thread/win32/shared_mutex.hpp at line 8, boost/thread/win32/thread_primitives.hpp at line 10, boost/throw_exception.hpp at line 23, boost/xpressive/detail/core/matcher/action_matcher.hpp at line 8, boost/xpressive/detail/core/matcher/attr_matcher.hpp at line 8, boost/xpressive/detail/static/transforms/as_action.hpp at line 8, boost/xpressive/detail/utility/symbols.hpp at line 13, libs/locale/src/encoding/codepage.cpp at line 5, libs/locale/src/encoding/conv.hpp at line 5, libs/locale/src/encoding/iconv_codepage.ipp at line 5, libs/locale/src/encoding/uconv_codepage.ipp at line 5, libs/locale/src/encoding/wconv_codepage.ipp at line 5, libs/locale/src/icu/all_generator.hpp at line 5, libs/locale/src/icu/boundary.cpp at line 5, libs/locale/src/icu/cdata.hpp at line 5, libs/locale/src/icu/codecvt.cpp at line 5, libs/locale/src/icu/codecvt.hpp at line 5, libs/locale/src/icu/collator.cpp at line 5, libs/locale/src/icu/conversion.cpp at line 5, libs/locale/src/icu/date_time.cpp at line 5, libs/locale/src/icu/formatter.cpp at line 5, libs/locale/src/icu/formatter.hpp at line 5, libs/locale/src/icu/icu_backend.cpp at line 5, libs/locale/src/icu/icu_backend.hpp at line 5, libs/locale/src/icu/icu_util.hpp at line 5, libs/locale/src/icu/numeric.cpp at line 5, libs/locale/src/icu/predefined_formatters.hpp at line 5, libs/locale/src/icu/time_zone.cpp at line 5, libs/locale/src/icu/time_zone.hpp at line 5, libs/locale/src/icu/uconv.hpp at line 5, libs/locale/src/posix/all_generator.hpp at line 5, libs/locale/src/posix/codecvt.cpp at line 5, libs/locale/src/posix/codecvt.hpp at line 5, libs/locale/src/posix/collate.cpp at line 5, libs/locale/src/posix/converter.cpp at line 5, libs/locale/src/posix/numeric.cpp at line 5, libs/locale/src/posix/posix_backend.cpp at line 5, libs/locale/src/posix/posix_backend.hpp at line 5, libs/locale/src/shared/date_time.cpp at line 5, libs/locale/src/shared/format.cpp at line 5, libs/locale/src/shared/formatting.cpp at line 5, libs/locale/src/shared/generator.cpp at line 5, libs/locale/src/shared/ids.cpp at line 5, libs/locale/src/shared/ios_prop.hpp at line 5, libs/locale/src/shared/localization_backend.cpp at line 5, libs/locale/src/shared/message.cpp at line 5, libs/locale/src/shared/mo_hash.hpp at line 5, libs/locale/src/shared/mo_lambda.cpp at line 5, libs/locale/src/shared/mo_lambda.hpp at line 5, libs/locale/src/std/all_generator.hpp at line 5, libs/locale/src/std/codecvt.cpp at line 5, libs/locale/src/std/collate.cpp at line 5, libs/locale/src/std/converter.cpp at line 5, libs/locale/src/std/numeric.cpp at line 5, libs/locale/src/std/std_backend.cpp at line 5, libs/locale/src/std/std_backend.hpp at line 5, libs/locale/src/util/codecvt_converter.cpp at line 5, libs/locale/src/util/default_locale.cpp at line 5, libs/locale/src/util/gregorian.cpp at line 5, libs/locale/src/util/gregorian.hpp at line 5, libs/locale/src/util/iconv.hpp at line 5, libs/locale/src/util/info.cpp at line 5, libs/locale/src/util/locale_data.cpp at line 5, libs/locale/src/util/locale_data.hpp at line 5, libs/locale/src/util/numeric.hpp at line 5, libs/locale/src/util/timezone.hpp at line 5, libs/locale/src/win32/all_generator.hpp at line 5, libs/locale/src/win32/api.hpp at line 5, libs/locale/src/win32/collate.cpp at line 5, libs/locale/src/win32/converter.cpp at line 5, libs/locale/src/win32/lcid.cpp at line 5, libs/locale/src/win32/lcid.hpp at line 5, libs/locale/src/win32/numeric.cpp at line 5, libs/locale/src/win32/win_backend.cpp at line 5, libs/locale/src/win32/win_backend.hpp at line 5, libs/python/src/object/pickle_support.cpp at line 3, libs/thread/src/win32/thread_primitives.cpp at line 6
- License text:
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/algorithm/cxx11/is_sorted.hpp [6:8]
- boost/core/checked_delete.hpp [17:19]
- boost/detail/interlocked.hpp [9:11]
- boost/locale.hpp [4:6]
- boost/locale/boundary.hpp [4:6]
- boost/locale/boundary/boundary_point.hpp [4:6]
- boost/locale/boundary/facets.hpp [4:6]
- boost/locale/boundary/index.hpp [4:6]
- boost/locale/boundary/segment.hpp [4:6]
- boost/locale/boundary/types.hpp [4:6]
- boost/locale/collator.hpp [4:6]
- boost/locale/config.hpp [4:6]
- boost/locale/conversion.hpp [4:6]
- boost/locale/date_time.hpp [4:6]
- boost/locale/date_time_facet.hpp [4:6]
- boost/locale/definitions.hpp [4:6]
- boost/locale/encoding.hpp [4:6]
- boost/locale/encoding_errors.hpp [4:6]
- boost/locale/encoding_utf.hpp [4:6]
- boost/locale/format.hpp [4:6]
- boost/locale/formatting.hpp [4:6]
- boost/locale/generator.hpp [4:6]
- boost/locale/gnu_gettext.hpp [4:6]
- boost/locale/hold_ptr.hpp [4:6]
- boost/locale/info.hpp [4:6]
- boost/locale/localization_backend.hpp [4:6]
- boost/locale/message.hpp [4:6]
- boost/locale/time_zone.hpp [4:6]
- boost/locale/utf.hpp [4:6]
- boost/locale/utf8_codecvt.hpp [4:6]
- boost/locale/util.hpp [4:6]
- boost/lockfree/detail/atomic.hpp [3:5]
- boost/lockfree/detail/copy_payload.hpp [5:7]
- boost/lockfree/detail/freelist.hpp [5:7]
- boost/lockfree/detail/prefix.hpp [3:5]
- boost/lockfree/detail/tagged_ptr.hpp [5:7]
- boost/lockfree/detail/tagged_ptr_dcas.hpp [5:7]
- boost/lockfree/detail/tagged_ptr_ptrcompression.hpp [5:7]
- boost/lockfree/lockfree_forward.hpp [3:5]
- boost/lockfree/queue.hpp [7:9]
- boost/lockfree/spsc_queue.hpp [6:8]
- boost/lockfree/stack.hpp [3:5]
- boost/numeric/conversion/detail/numeric_cast_traits.hpp [5:7]
- boost/numeric/conversion/detail/numeric_cast_traits.hpp [32:34]
- boost/numeric/conversion/detail/numeric_cast_traits.hpp [83:85]
- boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_common.hpp [5:7]
- boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_long_long.hpp [5:7]
- boost/numeric/conversion/numeric_cast_traits.hpp [5:7]
- boost/numeric/ublas/assignment.hpp [4:6]
- boost/numeric/ublas/banded.hpp [5:7]
- boost/numeric/ublas/blas.hpp [3:5]
- boost/numeric/ublas/detail/concepts.hpp [5:7]
- boost/numeric/ublas/detail/config.hpp [5:7]
- boost/numeric/ublas/detail/definitions.hpp [5:7]
- boost/numeric/ublas/detail/documentation.hpp [5:7]
- boost/numeric/ublas/detail/duff.hpp [5:7]
- boost/numeric/ublas/detail/iterator.hpp [5:7]
- boost/numeric/ublas/detail/matrix_assign.hpp [5:7]
- boost/numeric/ublas/detail/raw.hpp [5:7]
- boost/numeric/ublas/detail/temporary.hpp [5:7]
- boost/numeric/ublas/detail/vector_assign.hpp [5:7]
- boost/numeric/ublas/doxydoc.hpp [3:5]
- boost/numeric/ublas/exception.hpp [3:5]
- boost/numeric/ublas/experimental/sparse_view.hpp [5:7]
- boost/numeric/ublas/expression_types.hpp [4:6]
- boost/numeric/ublas/functional.hpp [5:7]
- boost/numeric/ublas/fwd.hpp [5:7]
- boost/numeric/ublas/hermitian.hpp [5:7]
- boost/numeric/ublas/io.hpp [5:7]
- boost/numeric/ublas/lu.hpp [5:7]
- boost/numeric/ublas/matrix.hpp [6:8]
- boost/numeric/ublas/matrix_expression.hpp [5:7]
- boost/numeric/ublas/matrix_proxy.hpp [5:7]
- boost/numeric/ublas/matrix_sparse.hpp [5:7]
- boost/numeric/ublas/matrix_vector.hpp [4:6]
- boost/numeric/ublas/operation.hpp [5:7]
- boost/numeric/ublas/operation_blocked.hpp [5:7]
- boost/numeric/ublas/operation_sparse.hpp [5:7]
- boost/numeric/ublas/storage.hpp [5:7]
- boost/numeric/ublas/storage_sparse.hpp [5:7]
- boost/numeric/ublas/symmetric.hpp [5:7]
- boost/numeric/ublas/traits.hpp [5:7]
- boost/numeric/ublas/triangular.hpp [5:7]
- boost/numeric/ublas/vector_expression.hpp [5:7]
- boost/numeric/ublas/vector_of_vector.hpp [5:7]
- boost/numeric/ublas/vector_proxy.hpp [5:7]
- boost/numeric/ublas/vector_sparse.hpp [5:7]
- boost/operators.hpp [5:7]
- boost/operators_v1.hpp [4:6]
- boost/pending/container_traits.hpp [4:6]
- boost/pending/detail/disjoint_sets.hpp [2:4]
- boost/pending/detail/int_iterator.hpp [2:4]
- boost/pending/detail/property.hpp [2:4]
- boost/pending/fenced_priority_queue.hpp [2:4]
- boost/pending/property.hpp [2:4]
- boost/pending/property_serialize.hpp [2:4]
- boost/pending/queue.hpp [2:4]
- boost/pending/stringtok.hpp [2:4]
- boost/python/object/pickle_support.hpp [2:4]
- boost/python/suite/indexing/container_utils.hpp [3:5]
- boost/python/suite/indexing/detail/indexing_suite_detail.hpp [2:4]
- boost/python/suite/indexing/indexing_suite.hpp [2:4]
- boost/python/suite/indexing/map_indexing_suite.hpp [2:4]
- boost/python/suite/indexing/vector_indexing_suite.hpp [2:4]
- boost/scoped_array.hpp [7:9]
- boost/scoped_ptr.hpp [7:9]
- boost/serialization/detail/shared_ptr_132.hpp [10:12]
- boost/serialization/detail/shared_ptr_nmt_132.hpp [10:12]
- boost/shared_array.hpp [10:12]
- boost/shared_ptr.hpp [10:12]
- boost/smart_ptr/atomic_shared_ptr.hpp [9:11]
- boost/smart_ptr/detail/atomic_count_gcc.hpp [15:17]
- boost/smart_ptr/detail/atomic_count_gcc_x86.hpp [11:13]
- boost/smart_ptr/detail/atomic_count_sync.hpp [13:15]
- boost/smart_ptr/detail/local_counted_base.hpp [14:16]
- boost/smart_ptr/detail/local_sp_deleter.hpp [14:16]
- boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp [10:12]
- boost/smart_ptr/detail/sp_counted_base_aix.hpp [12:14]
- boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp [16:18]
- boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp [17:19]
- boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp [11:13]
- boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp [15:17]
- boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp [16:18]
- boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp [16:18]
- boost/smart_ptr/detail/sp_counted_base_solaris.hpp [12:14]
- boost/smart_ptr/detail/sp_counted_base_spin.hpp [16:18]
- boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp [13:15]
- boost/smart_ptr/detail/sp_counted_base_w32.hpp [16:18]
- boost/smart_ptr/intrusive_ptr.hpp [9:11]
- boost/smart_ptr/local_shared_ptr.hpp [8:10]
- boost/smart_ptr/owner_less.hpp [10:12]
- boost/smart_ptr/scoped_array.hpp [7:9]
- boost/smart_ptr/scoped_ptr.hpp [7:9]
- boost/smart_ptr/shared_array.hpp [10:12]
- boost/smart_ptr/shared_ptr.hpp [10:12]
- boost/smart_ptr/weak_ptr.hpp [9:11]
- boost/thread/condition.hpp [5:7]
- boost/thread/condition_variable.hpp [8:10]
- boost/thread/cv_status.hpp [5:7]
- boost/thread/detail/platform_time.hpp [6:8]
- boost/thread/detail/thread_heap_alloc.hpp [8:10]
- boost/thread/executors/work.hpp [3:5]
- boost/thread/future.hpp [4:6]
- boost/thread/futures/future_error.hpp [4:6]
- boost/thread/futures/future_error_code.hpp [4:6]
- boost/thread/futures/future_status.hpp [4:6]
- boost/thread/futures/is_future_type.hpp [4:6]
- boost/thread/futures/launch.hpp [4:6]
- boost/thread/futures/wait_for_all.hpp [4:6]
- boost/thread/futures/wait_for_any.hpp [4:6]
- boost/thread/mutex.hpp [8:10]
- boost/thread/once.hpp [8:10]
- boost/thread/pthread/once.hpp [9:11]
- boost/thread/pthread/once_atomic.hpp [9:11]
- boost/thread/pthread/pthread_helpers.hpp [6:8]
- boost/thread/pthread/pthread_mutex_scoped_lock.hpp [5:7]
- boost/thread/pthread/shared_mutex.hpp [7:9]
- boost/thread/recursive_mutex.hpp [8:10]
- boost/thread/shared_mutex.hpp [9:11]
- boost/thread/thread.hpp [8:10]
- boost/thread/thread_only.hpp [8:10]
- boost/thread/thread_time.hpp [5:7]
- boost/thread/v2/shared_mutex.hpp [9:11]
- boost/thread/win32/basic_recursive_mutex.hpp [9:11]
- boost/thread/win32/basic_timed_mutex.hpp [9:11]
- boost/thread/win32/interlocked_read.hpp [10:12]
- boost/thread/win32/once.hpp [10:12]
- boost/thread/win32/recursive_mutex.hpp [8:10]
- boost/thread/win32/shared_mutex.hpp [7:9]
- boost/thread/win32/thread_primitives.hpp [9:11]
- boost/throw_exception.hpp [22:24]
- boost/xpressive/detail/core/matcher/action_matcher.hpp [7:9]
- boost/xpressive/detail/core/matcher/attr_matcher.hpp [7:9]
- boost/xpressive/detail/static/transforms/as_action.hpp [7:9]
- boost/xpressive/detail/utility/symbols.hpp [12:14]
- libs/locale/src/encoding/codepage.cpp [4:6]
- libs/locale/src/encoding/conv.hpp [4:6]
- libs/locale/src/encoding/iconv_codepage.ipp [4:6]
- libs/locale/src/encoding/uconv_codepage.ipp [4:6]
- libs/locale/src/encoding/wconv_codepage.ipp [4:6]
- libs/locale/src/icu/all_generator.hpp [4:6]
- libs/locale/src/icu/boundary.cpp [4:6]
- libs/locale/src/icu/cdata.hpp [4:6]
- libs/locale/src/icu/codecvt.cpp [4:6]
- libs/locale/src/icu/codecvt.hpp [4:6]
- libs/locale/src/icu/collator.cpp [4:6]
- libs/locale/src/icu/conversion.cpp [4:6]
- libs/locale/src/icu/date_time.cpp [4:6]
- libs/locale/src/icu/formatter.cpp [4:6]
- libs/locale/src/icu/formatter.hpp [4:6]
- libs/locale/src/icu/icu_backend.cpp [4:6]
- libs/locale/src/icu/icu_backend.hpp [4:6]
- libs/locale/src/icu/icu_util.hpp [4:6]
- libs/locale/src/icu/numeric.cpp [4:6]
- libs/locale/src/icu/predefined_formatters.hpp [4:6]
- libs/locale/src/icu/time_zone.cpp [4:6]
- libs/locale/src/icu/time_zone.hpp [4:6]
- libs/locale/src/icu/uconv.hpp [4:6]
- libs/locale/src/posix/all_generator.hpp [4:6]
- libs/locale/src/posix/codecvt.cpp [4:6]
- libs/locale/src/posix/codecvt.hpp [4:6]
- libs/locale/src/posix/collate.cpp [4:6]
- libs/locale/src/posix/converter.cpp [4:6]
- libs/locale/src/posix/numeric.cpp [4:6]
- libs/locale/src/posix/posix_backend.cpp [4:6]
- libs/locale/src/posix/posix_backend.hpp [4:6]
- libs/locale/src/shared/date_time.cpp [4:6]
- libs/locale/src/shared/format.cpp [4:6]
- libs/locale/src/shared/formatting.cpp [4:6]
- libs/locale/src/shared/generator.cpp [4:6]
- libs/locale/src/shared/ids.cpp [4:6]
- libs/locale/src/shared/ios_prop.hpp [4:6]
- libs/locale/src/shared/localization_backend.cpp [4:6]
- libs/locale/src/shared/message.cpp [4:6]
- libs/locale/src/shared/mo_hash.hpp [4:6]
- libs/locale/src/shared/mo_lambda.cpp [4:6]
- libs/locale/src/shared/mo_lambda.hpp [4:6]
- libs/locale/src/std/all_generator.hpp [4:6]
- libs/locale/src/std/codecvt.cpp [4:6]
- libs/locale/src/std/collate.cpp [4:6]
- libs/locale/src/std/converter.cpp [4:6]
- libs/locale/src/std/numeric.cpp [4:6]
- libs/locale/src/std/std_backend.cpp [4:6]
- libs/locale/src/std/std_backend.hpp [4:6]
- libs/locale/src/util/codecvt_converter.cpp [4:6]
- libs/locale/src/util/default_locale.cpp [4:6]
- libs/locale/src/util/gregorian.cpp [4:6]
- libs/locale/src/util/gregorian.hpp [4:6]
- libs/locale/src/util/iconv.hpp [4:6]
- libs/locale/src/util/info.cpp [4:6]
- libs/locale/src/util/locale_data.cpp [4:6]
- libs/locale/src/util/locale_data.hpp [4:6]
- libs/locale/src/util/numeric.hpp [4:6]
- libs/locale/src/util/timezone.hpp [4:6]
- libs/locale/src/win32/all_generator.hpp [4:6]
- libs/locale/src/win32/api.hpp [4:6]
- libs/locale/src/win32/collate.cpp [4:6]
- libs/locale/src/win32/converter.cpp [4:6]
- libs/locale/src/win32/lcid.cpp [4:6]
- libs/locale/src/win32/lcid.hpp [4:6]
- libs/locale/src/win32/numeric.cpp [4:6]
- libs/locale/src/win32/win_backend.cpp [4:6]
- libs/locale/src/win32/win_backend.hpp [4:6]
- libs/python/src/object/pickle_support.cpp [2:4]
- libs/thread/src/win32/thread_primitives.cpp [5:7]
-
-KEEP BSL-1.0 8b16adbc58945f3e7e0b3d19eea06be7
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/concepts.hpp at line 10
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/range/concepts.hpp [8:11]
-
-KEEP BSL-1.0 8b3c7908dfd4ca26fd15bdde0b547bbf
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/wave/util/flex_string.hpp at line 7
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/wave/util/flex_string.hpp [5:7]
-
-KEEP BSL-1.0 8c631061c1944053948acdaf321fc114
-BELONGS libs/thread/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/detail/tss_hooks.hpp at line 4, libs/thread/src/future.cpp at line 4, libs/thread/src/tss_null.cpp at line 5, libs/thread/src/win32/tss_dll.cpp at line 4, libs/thread/src/win32/tss_pe.cpp at line 8
- License text:
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/thread/detail/tss_hooks.hpp [2:4]
- libs/thread/src/future.cpp [2:4]
- libs/thread/src/tss_null.cpp [3:5]
- libs/thread/src/win32/tss_dll.cpp [2:4]
- libs/thread/src/win32/tss_pe.cpp [6:8]
-
-KEEP BSL-1.0 8cff6babbb6f0996f11c8e41aea364b2
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor.hpp at line 6, boost/preprocessor/arithmetic.hpp at line 6, boost/preprocessor/arithmetic/add.hpp at line 6, boost/preprocessor/arithmetic/dec.hpp at line 6, boost/preprocessor/arithmetic/detail/div_base.hpp at line 6, boost/preprocessor/arithmetic/div.hpp at line 6, boost/preprocessor/arithmetic/inc.hpp at line 6, boost/preprocessor/arithmetic/mod.hpp at line 6, boost/preprocessor/arithmetic/mul.hpp at line 6, boost/preprocessor/arithmetic/sub.hpp at line 6, boost/preprocessor/cat.hpp at line 6, boost/preprocessor/comparison.hpp at line 6, boost/preprocessor/comparison/equal.hpp at line 6, boost/preprocessor/comparison/greater.hpp at line 6, boost/preprocessor/comparison/greater_equal.hpp at line 6, boost/preprocessor/comparison/less.hpp at line 6, boost/preprocessor/comparison/less_equal.hpp at line 6, boost/preprocessor/comparison/not_equal.hpp at line 6, boost/preprocessor/config/limits.hpp at line 6, boost/preprocessor/control/detail/dmc/while.hpp at line 6, boost/preprocessor/control/detail/edg/while.hpp at line 6, boost/preprocessor/control/detail/msvc/while.hpp at line 6, boost/preprocessor/control/detail/while.hpp at line 6, boost/preprocessor/control/expr_if.hpp at line 6, boost/preprocessor/control/if.hpp at line 6, boost/preprocessor/debug/assert.hpp at line 6, boost/preprocessor/facilities/empty.hpp at line 6, boost/preprocessor/facilities/expand.hpp at line 6, boost/preprocessor/facilities/identity.hpp at line 6, boost/preprocessor/list.hpp at line 6, boost/preprocessor/list/adt.hpp at line 6, boost/preprocessor/list/append.hpp at line 6, boost/preprocessor/list/at.hpp at line 6, boost/preprocessor/list/cat.hpp at line 6, boost/preprocessor/list/detail/dmc/fold_left.hpp at line 6, boost/preprocessor/list/detail/edg/fold_left.hpp at line 6, boost/preprocessor/list/detail/edg/fold_right.hpp at line 6, boost/preprocessor/list/detail/fold_left.hpp at line 6, boost/preprocessor/list/detail/fold_right.hpp at line 6, boost/preprocessor/list/enum.hpp at line 6, boost/preprocessor/list/filter.hpp at line 6, boost/preprocessor/list/first_n.hpp at line 6, boost/preprocessor/list/fold_left.hpp at line 6, boost/preprocessor/list/fold_right.hpp at line 6, boost/preprocessor/list/for_each.hpp at line 6, boost/preprocessor/list/for_each_i.hpp at line 6, boost/preprocessor/list/for_each_product.hpp at line 6, boost/preprocessor/list/rest_n.hpp at line 6, boost/preprocessor/list/reverse.hpp at line 6, boost/preprocessor/list/size.hpp at line 6, boost/preprocessor/list/to_tuple.hpp at line 6, boost/preprocessor/list/transform.hpp at line 6, boost/preprocessor/logical.hpp at line 6, boost/preprocessor/logical/and.hpp at line 6, boost/preprocessor/logical/bool.hpp at line 6, boost/preprocessor/logical/nor.hpp at line 6, boost/preprocessor/logical/not.hpp at line 6, boost/preprocessor/logical/or.hpp at line 6, boost/preprocessor/logical/xor.hpp at line 6, boost/preprocessor/punctuation/comma.hpp at line 6, boost/preprocessor/punctuation/comma_if.hpp at line 6, boost/preprocessor/repetition/detail/dmc/for.hpp at line 6, boost/preprocessor/repetition/detail/edg/for.hpp at line 6, boost/preprocessor/repetition/detail/for.hpp at line 6, boost/preprocessor/repetition/detail/msvc/for.hpp at line 6, boost/preprocessor/repetition/enum.hpp at line 6, boost/preprocessor/repetition/enum_params.hpp at line 6, boost/preprocessor/repetition/enum_params_with_a_default.hpp at line 6, boost/preprocessor/repetition/enum_params_with_defaults.hpp at line 6, boost/preprocessor/repetition/enum_shifted.hpp at line 6, boost/preprocessor/repetition/enum_shifted_params.hpp at line 6, boost/preprocessor/repetition/for.hpp at line 6, boost/preprocessor/repetition/repeat.hpp at line 6, boost/preprocessor/repetition/repeat_from_to.hpp at line 6, boost/preprocessor/selection/max.hpp at line 6, boost/preprocessor/selection/min.hpp at line 6, boost/preprocessor/stringize.hpp at line 6, boost/preprocessor/tuple.hpp at line 6
- License text:
- \# * Distributed under the Boost Software License, Version 1.0. (See
- \# * accompanying file LICENSE_1_0.txt or copy at
- \# * http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/preprocessor.hpp [5:7]
- boost/preprocessor/arithmetic.hpp [5:7]
- boost/preprocessor/arithmetic/add.hpp [5:7]
- boost/preprocessor/arithmetic/dec.hpp [5:7]
- boost/preprocessor/arithmetic/detail/div_base.hpp [5:7]
- boost/preprocessor/arithmetic/div.hpp [5:7]
- boost/preprocessor/arithmetic/inc.hpp [5:7]
- boost/preprocessor/arithmetic/mod.hpp [5:7]
- boost/preprocessor/arithmetic/mul.hpp [5:7]
- boost/preprocessor/arithmetic/sub.hpp [5:7]
- boost/preprocessor/cat.hpp [5:7]
- boost/preprocessor/comparison.hpp [5:7]
- boost/preprocessor/comparison/equal.hpp [5:7]
- boost/preprocessor/comparison/greater.hpp [5:7]
- boost/preprocessor/comparison/greater_equal.hpp [5:7]
- boost/preprocessor/comparison/less.hpp [5:7]
- boost/preprocessor/comparison/less_equal.hpp [5:7]
- boost/preprocessor/comparison/not_equal.hpp [5:7]
- boost/preprocessor/config/limits.hpp [5:7]
- boost/preprocessor/control/detail/dmc/while.hpp [5:7]
- boost/preprocessor/control/detail/edg/while.hpp [5:7]
- boost/preprocessor/control/detail/msvc/while.hpp [5:7]
- boost/preprocessor/control/detail/while.hpp [5:7]
- boost/preprocessor/control/expr_if.hpp [5:7]
- boost/preprocessor/control/if.hpp [5:7]
- boost/preprocessor/debug/assert.hpp [5:7]
- boost/preprocessor/facilities/empty.hpp [5:7]
- boost/preprocessor/facilities/expand.hpp [5:7]
- boost/preprocessor/facilities/identity.hpp [5:7]
- boost/preprocessor/list.hpp [5:7]
- boost/preprocessor/list/adt.hpp [5:7]
- boost/preprocessor/list/append.hpp [5:7]
- boost/preprocessor/list/at.hpp [5:7]
- boost/preprocessor/list/cat.hpp [5:7]
- boost/preprocessor/list/detail/dmc/fold_left.hpp [5:7]
- boost/preprocessor/list/detail/edg/fold_left.hpp [5:7]
- boost/preprocessor/list/detail/edg/fold_right.hpp [5:7]
- boost/preprocessor/list/detail/fold_left.hpp [5:7]
- boost/preprocessor/list/detail/fold_right.hpp [5:7]
- boost/preprocessor/list/enum.hpp [5:7]
- boost/preprocessor/list/filter.hpp [5:7]
- boost/preprocessor/list/first_n.hpp [5:7]
- boost/preprocessor/list/fold_left.hpp [5:7]
- boost/preprocessor/list/fold_right.hpp [5:7]
- boost/preprocessor/list/for_each.hpp [5:7]
- boost/preprocessor/list/for_each_i.hpp [5:7]
- boost/preprocessor/list/for_each_product.hpp [5:7]
- boost/preprocessor/list/rest_n.hpp [5:7]
- boost/preprocessor/list/reverse.hpp [5:7]
- boost/preprocessor/list/size.hpp [5:7]
- boost/preprocessor/list/to_tuple.hpp [5:7]
- boost/preprocessor/list/transform.hpp [5:7]
- boost/preprocessor/logical.hpp [5:7]
- boost/preprocessor/logical/and.hpp [5:7]
- boost/preprocessor/logical/bool.hpp [5:7]
- boost/preprocessor/logical/nor.hpp [5:7]
- boost/preprocessor/logical/not.hpp [5:7]
- boost/preprocessor/logical/or.hpp [5:7]
- boost/preprocessor/logical/xor.hpp [5:7]
- boost/preprocessor/punctuation/comma.hpp [5:7]
- boost/preprocessor/punctuation/comma_if.hpp [5:7]
- boost/preprocessor/repetition/detail/dmc/for.hpp [5:7]
- boost/preprocessor/repetition/detail/edg/for.hpp [5:7]
- boost/preprocessor/repetition/detail/for.hpp [5:7]
- boost/preprocessor/repetition/detail/msvc/for.hpp [5:7]
- boost/preprocessor/repetition/enum.hpp [5:7]
- boost/preprocessor/repetition/enum_params.hpp [5:7]
- boost/preprocessor/repetition/enum_params_with_a_default.hpp [5:7]
- boost/preprocessor/repetition/enum_params_with_defaults.hpp [5:7]
- boost/preprocessor/repetition/enum_shifted.hpp [5:7]
- boost/preprocessor/repetition/enum_shifted_params.hpp [5:7]
- boost/preprocessor/repetition/for.hpp [5:7]
- boost/preprocessor/repetition/repeat.hpp [5:7]
- boost/preprocessor/repetition/repeat_from_to.hpp [5:7]
- boost/preprocessor/selection/max.hpp [5:7]
- boost/preprocessor/selection/min.hpp [5:7]
- boost/preprocessor/stringize.hpp [5:7]
- boost/preprocessor/tuple.hpp [5:7]
-
-KEEP BSL-1.0 8e0227f825163b0c4b28b330397fa5eb
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/detail/collection_traits.hpp at line 10
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/range/detail/collection_traits.hpp [8:11]
-
-KEEP BSL-1.0 8e69b0b2f16cd74aa0e5e63a0b06674e
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signals2/detail/result_type_wrapper.hpp at line 6, boost/signals2/detail/signals_common.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/signals2/detail/result_type_wrapper.hpp [4:7]
- boost/signals2/detail/signals_common.hpp [4:7]
-
-KEEP BSL-1.0 8eecb41322fd21e26f9e556e8aa5c20f
-BELONGS libs/python/ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: libs/python/src/converter/type_id.cpp at line 147
- License text:
- // Contributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.30
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- libs/python/src/converter/type_id.cpp [146:148]
-
-KEEP BSL-1.0 8f3bd9a6adf2e880def921a200c6089c
-BELONGS ya.make
- License text:
- // Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : REFERENCE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/function_types/config/compiler.hpp [5:5]
- boost/function_types/detail/cv_traits.hpp [5:5]
- boost/function_types/detail/pp_variate_loop/preprocessed.hpp [5:5]
- boost/function_types/function_type.hpp [5:5]
- boost/typeof/vector100.hpp [6:6]
- boost/typeof/vector150.hpp [6:6]
- boost/typeof/vector200.hpp [6:6]
-
-KEEP BSL-1.0 8f6a7508df640acaeae6c00eb6b48dc2
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/pool/detail/pool_construct.ipp at line 4
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 97.37
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/pool/detail/pool_construct.ipp [3:6]
-
-KEEP BSL-1.0 8fc1de4a757b09268729457d0978f08e
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/cpp_int/import_export.hpp at line 4
- License text:
- // Copyright 2015 John Maddock. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 92.59
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/multiprecision/cpp_int/import_export.hpp [2:4]
-
-KEEP BSL-1.0 90107d2b937b306faf40f2deb0858e34
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iterator/detail/any_conversion_eater.hpp at line 3, boost/iterator/detail/facade_iterator_category.hpp at line 3, boost/iterator/detail/minimum_category.hpp at line 3, boost/iterator/is_lvalue_iterator.hpp at line 3, boost/iterator/is_readable_iterator.hpp at line 3, boost/iterator/minimum_category.hpp at line 3
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/iterator/detail/any_conversion_eater.hpp [1:3]
- boost/iterator/detail/facade_iterator_category.hpp [1:3]
- boost/iterator/detail/minimum_category.hpp [1:3]
- boost/iterator/is_lvalue_iterator.hpp [1:3]
- boost/iterator/is_readable_iterator.hpp [1:3]
- boost/iterator/minimum_category.hpp [1:3]
-
-SKIP LicenseRef-scancode-proprietary-license 90211759450bb4abe057697e60d3aa0b
-BELONGS ya.make
- License text:
- http://software.intel.com/en-us/articles/non-commercial-software-download/
- Scancode info:
- Original SPDX id: LicenseRef-scancode-proprietary-license
- Score : 100.00
- Match type : REFERENCE
- Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/proprietary-license.LICENSE
- Files with this license:
- boost/numeric/odeint/external/mkl/mkl_operations.hpp [8:8]
-
-KEEP BSL-1.0 90cabaecb5b34cc68a2a39693a8a953f
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/detail/container_or_allocator_rebind.hpp at line 5, boost/container/detail/container_rebind.hpp at line 5, boost/container/detail/is_container.hpp at line 5, boost/container/detail/is_contiguous_container.hpp at line 5, boost/container/detail/value_functors.hpp at line 7
- License text:
- // (C) Copyright Ion Gaztanaga 2017-2017. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/container/detail/container_or_allocator_rebind.hpp [3:5]
- boost/container/detail/container_rebind.hpp [3:5]
- boost/container/detail/is_container.hpp [3:5]
- boost/container/detail/is_contiguous_container.hpp [3:5]
- boost/container/detail/value_functors.hpp [5:7]
-
-KEEP BSL-1.0 916300612debc9bebbe59992654a8a6c
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/stable_vector.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2008-2015. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/container/stable_vector.hpp [3:5]
-
-KEEP BSL-1.0 9345cd12d4429cfc366f36202f6b68bd
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/allocators/detail/node_tools.hpp at line 5, boost/interprocess/detail/interprocess_tester.hpp at line 5, boost/interprocess/sync/shm/named_creation_functor.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2007-2012. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/interprocess/allocators/detail/node_tools.hpp [3:5]
- boost/interprocess/detail/interprocess_tester.hpp [3:5]
- boost/interprocess/sync/shm/named_creation_functor.hpp [3:5]
-
-KEEP BSL-1.0 937b7f0a3b5ebb47be156fcbd17ef2d6
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/phoenix/bind/detail/cpp03/member_function_ptr.hpp at line 5
- License text:
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/phoenix/bind/detail/cpp03/member_function_ptr.hpp [4:5]
-
-KEEP BSL-1.0 959290e55386dd6d1518500478c61ec1
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/limits.hpp at line 5
- License text:
- // (C) David Abrahams 2002. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/limits.hpp [3:5]
-
-KEEP BSL-1.0 95b08d3d1741353adb0aa5200d17d761
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/test/utils/runtime/cla/argv_traverser.hpp at line 4, boost/test/utils/runtime/cla/parser.hpp at line 4, boost/test/utils/runtime/modifier.hpp at line 4
- License text:
- // Use, modification, and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/test/utils/runtime/cla/argv_traverser.hpp [2:4]
- boost/test/utils/runtime/cla/parser.hpp [2:4]
- boost/test/utils/runtime/modifier.hpp [2:4]
-
-KEEP BSL-1.0 96478893d86ff4047edf31e2e63149c3
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/assign/ptr_list_inserter.hpp at line 5, boost/assign/ptr_list_of.hpp at line 5, boost/ptr_container/clone_allocator.hpp at line 6, boost/ptr_container/detail/associative_ptr_container.hpp at line 6, boost/ptr_container/detail/map_iterator.hpp at line 6, boost/ptr_container/detail/reversible_ptr_container.hpp at line 6, boost/ptr_container/detail/scoped_deleter.hpp at line 6, boost/ptr_container/detail/void_ptr_iterator.hpp at line 6, boost/ptr_container/exception.hpp at line 6, boost/ptr_container/nullable.hpp at line 6, boost/ptr_container/ptr_array.hpp at line 6, boost/ptr_container/ptr_deque.hpp at line 6, boost/ptr_container/ptr_list.hpp at line 6, boost/ptr_container/ptr_map.hpp at line 6, boost/ptr_container/ptr_map_adapter.hpp at line 6, boost/ptr_container/ptr_sequence_adapter.hpp at line 6, boost/ptr_container/ptr_set.hpp at line 6, boost/ptr_container/ptr_set_adapter.hpp at line 6, boost/ptr_container/ptr_vector.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/assign/ptr_list_inserter.hpp [3:6]
- boost/assign/ptr_list_of.hpp [3:6]
- boost/ptr_container/clone_allocator.hpp [4:7]
- boost/ptr_container/detail/associative_ptr_container.hpp [4:7]
- boost/ptr_container/detail/map_iterator.hpp [4:7]
- boost/ptr_container/detail/reversible_ptr_container.hpp [4:7]
- boost/ptr_container/detail/scoped_deleter.hpp [4:7]
- boost/ptr_container/detail/void_ptr_iterator.hpp [4:7]
- boost/ptr_container/exception.hpp [4:7]
- boost/ptr_container/nullable.hpp [4:7]
- boost/ptr_container/ptr_array.hpp [4:7]
- boost/ptr_container/ptr_deque.hpp [4:7]
- boost/ptr_container/ptr_list.hpp [4:7]
- boost/ptr_container/ptr_map.hpp [4:7]
- boost/ptr_container/ptr_map_adapter.hpp [4:7]
- boost/ptr_container/ptr_sequence_adapter.hpp [4:7]
- boost/ptr_container/ptr_set.hpp [4:7]
- boost/ptr_container/ptr_set_adapter.hpp [4:7]
- boost/ptr_container/ptr_vector.hpp [4:7]
-
-KEEP BSL-1.0 974662d1636f9053127d3f90231dc590
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/locale/generic_codecvt.hpp at line 5, boost/numeric/ublas/vector.hpp at line 7
- License text:
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/locale/generic_codecvt.hpp [4:6]
- boost/numeric/ublas/vector.hpp [6:8]
-
-KEEP BSL-1.0 9789d43d789d7742ae74056e544e9848
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/parameter/aux_/cast.hpp at line 3, boost/parameter/aux_/maybe.hpp at line 3, boost/parameter/aux_/set.hpp at line 3, boost/parameter/aux_/template_keyword.hpp at line 3, boost/parameter/name.hpp at line 3, boost/parameter/preprocessor.hpp at line 3, boost/parameter/python.hpp at line 3, boost/parameter/value_type.hpp at line 3
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/parameter/aux_/cast.hpp [1:3]
- boost/parameter/aux_/maybe.hpp [1:3]
- boost/parameter/aux_/set.hpp [1:3]
- boost/parameter/aux_/template_keyword.hpp [1:3]
- boost/parameter/name.hpp [1:3]
- boost/parameter/preprocessor.hpp [1:3]
- boost/parameter/python.hpp [1:3]
- boost/parameter/value_type.hpp [1:3]
-
-KEEP BSL-1.0 97bce3fe99c8cde881a7ce7abdb5af68
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/detail/ublas_interop.hpp at line 4
- License text:
- // Copyright 2013 John Maddock. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/multiprecision/detail/ublas_interop.hpp [2:4]
-
-KEEP BSL-1.0 993611176c66f479092f1d200d68e07f
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/numeric/odeint/algebra/fusion_algebra_dispatcher.hpp at line 13, boost/numeric/odeint/algebra/multi_array_algebra.hpp at line 13, boost/numeric/odeint/external/blaze/blaze_algebra_dispatcher.hpp at line 13, boost/numeric/odeint/external/blaze/blaze_resize.hpp at line 13, boost/numeric/odeint/external/compute/compute.hpp at line 13, boost/numeric/odeint/external/compute/compute_algebra_dispatcher.hpp at line 13, boost/numeric/odeint/external/compute/compute_operations_dispatcher.hpp at line 13, boost/numeric/odeint/external/eigen/eigen.hpp at line 13, boost/numeric/odeint/external/eigen/eigen_algebra.hpp at line 13, boost/numeric/odeint/external/eigen/eigen_algebra_dispatcher.hpp at line 13, boost/numeric/odeint/external/eigen/eigen_resize.hpp at line 13, boost/numeric/odeint/external/thrust/thrust.hpp at line 13, boost/numeric/odeint/external/thrust/thrust_algebra_dispatcher.hpp at line 13, boost/numeric/odeint/external/thrust/thrust_operations_dispatcher.hpp at line 13, boost/numeric/odeint/external/vexcl/vexcl.hpp at line 13, boost/numeric/odeint/external/vexcl/vexcl_abs.hpp at line 13, boost/numeric/odeint/external/vexcl/vexcl_algebra_dispatcher.hpp at line 13, boost/numeric/odeint/external/vexcl/vexcl_norm_inf.hpp at line 13, boost/numeric/odeint/iterator/impl/adaptive_iterator_impl.hpp at line 13, boost/numeric/odeint/iterator/impl/const_step_iterator_impl.hpp at line 13, boost/numeric/odeint/iterator/impl/n_step_iterator_impl.hpp at line 13, boost/numeric/odeint/iterator/impl/times_iterator_impl.hpp at line 13, boost/numeric/odeint/stepper/bulirsch_stoer.hpp at line 17, boost/numeric/odeint/stepper/extrapolation_stepper.hpp at line 12, boost/numeric/odeint/stepper/symplectic_rkn_sb3a_m4_mclachlan.hpp at line 13, boost/numeric/odeint/stepper/velocity_verlet.hpp at line 13, boost/numeric/odeint/util/multi_array_adaption.hpp at line 13, boost/numeric/odeint/util/stepper_traits.hpp at line 13, boost/numeric/odeint/util/unit_helper.hpp at line 13
- License text:
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or
- copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/numeric/odeint/algebra/fusion_algebra_dispatcher.hpp [12:14]
- boost/numeric/odeint/algebra/multi_array_algebra.hpp [12:14]
- boost/numeric/odeint/external/blaze/blaze_algebra_dispatcher.hpp [12:14]
- boost/numeric/odeint/external/blaze/blaze_resize.hpp [12:14]
- boost/numeric/odeint/external/compute/compute.hpp [12:14]
- boost/numeric/odeint/external/compute/compute_algebra_dispatcher.hpp [12:14]
- boost/numeric/odeint/external/compute/compute_operations_dispatcher.hpp [12:14]
- boost/numeric/odeint/external/eigen/eigen.hpp [12:14]
- boost/numeric/odeint/external/eigen/eigen_algebra.hpp [12:14]
- boost/numeric/odeint/external/eigen/eigen_algebra_dispatcher.hpp [12:14]
- boost/numeric/odeint/external/eigen/eigen_resize.hpp [12:14]
- boost/numeric/odeint/external/thrust/thrust.hpp [12:14]
- boost/numeric/odeint/external/thrust/thrust_algebra_dispatcher.hpp [12:14]
- boost/numeric/odeint/external/thrust/thrust_operations_dispatcher.hpp [12:14]
- boost/numeric/odeint/external/vexcl/vexcl.hpp [12:14]
- boost/numeric/odeint/external/vexcl/vexcl_abs.hpp [12:14]
- boost/numeric/odeint/external/vexcl/vexcl_algebra_dispatcher.hpp [12:14]
- boost/numeric/odeint/external/vexcl/vexcl_norm_inf.hpp [12:14]
- boost/numeric/odeint/iterator/impl/adaptive_iterator_impl.hpp [12:14]
- boost/numeric/odeint/iterator/impl/const_step_iterator_impl.hpp [12:14]
- boost/numeric/odeint/iterator/impl/n_step_iterator_impl.hpp [12:14]
- boost/numeric/odeint/iterator/impl/times_iterator_impl.hpp [12:14]
- boost/numeric/odeint/stepper/bulirsch_stoer.hpp [16:18]
- boost/numeric/odeint/stepper/extrapolation_stepper.hpp [11:13]
- boost/numeric/odeint/stepper/symplectic_rkn_sb3a_m4_mclachlan.hpp [12:14]
- boost/numeric/odeint/stepper/velocity_verlet.hpp [12:14]
- boost/numeric/odeint/util/multi_array_adaption.hpp [12:14]
- boost/numeric/odeint/util/stepper_traits.hpp [12:14]
- boost/numeric/odeint/util/unit_helper.hpp [12:14]
-
-KEEP BSL-1.0 996aeb007415a6ef8ea5b321bc17500c
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/array.hpp at line 6, boost/preprocessor/array/detail/get_data.hpp at line 5, boost/preprocessor/array/enum.hpp at line 6, boost/preprocessor/array/to_list.hpp at line 6, boost/preprocessor/array/to_seq.hpp at line 6, boost/preprocessor/array/to_tuple.hpp at line 6, boost/preprocessor/facilities.hpp at line 6, boost/preprocessor/facilities/overload.hpp at line 6, boost/preprocessor/library.hpp at line 6, boost/preprocessor/repetition/enum_shifted_binary_params.hpp at line 5, boost/preprocessor/seq.hpp at line 6, boost/preprocessor/seq/detail/binary_transform.hpp at line 5, boost/preprocessor/seq/detail/to_list_msvc.hpp at line 5, boost/preprocessor/seq/to_list.hpp at line 6, boost/preprocessor/seq/variadic_seq_to_seq.hpp at line 5, boost/preprocessor/slot/counter.hpp at line 5, boost/preprocessor/tuple/detail/is_single_return.hpp at line 5, boost/preprocessor/tuple/enum.hpp at line 6, boost/preprocessor/tuple/size.hpp at line 6, boost/preprocessor/tuple/to_array.hpp at line 6, boost/preprocessor/variadic.hpp at line 6, boost/preprocessor/variadic/detail/is_single_return.hpp at line 5, boost/preprocessor/variadic/to_array.hpp at line 6, boost/preprocessor/variadic/to_list.hpp at line 6, boost/preprocessor/variadic/to_seq.hpp at line 6, boost/preprocessor/variadic/to_tuple.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/preprocessor/array.hpp [5:7]
- boost/preprocessor/array/detail/get_data.hpp [4:6]
- boost/preprocessor/array/enum.hpp [5:7]
- boost/preprocessor/array/to_list.hpp [5:7]
- boost/preprocessor/array/to_seq.hpp [5:7]
- boost/preprocessor/array/to_tuple.hpp [5:7]
- boost/preprocessor/facilities.hpp [5:7]
- boost/preprocessor/facilities/overload.hpp [5:7]
- boost/preprocessor/library.hpp [5:7]
- boost/preprocessor/repetition/enum_shifted_binary_params.hpp [4:6]
- boost/preprocessor/seq.hpp [5:7]
- boost/preprocessor/seq/detail/binary_transform.hpp [4:6]
- boost/preprocessor/seq/detail/to_list_msvc.hpp [4:6]
- boost/preprocessor/seq/to_list.hpp [5:7]
- boost/preprocessor/seq/variadic_seq_to_seq.hpp [4:6]
- boost/preprocessor/slot/counter.hpp [4:6]
- boost/preprocessor/tuple/detail/is_single_return.hpp [4:6]
- boost/preprocessor/tuple/enum.hpp [5:7]
- boost/preprocessor/tuple/size.hpp [5:7]
- boost/preprocessor/tuple/to_array.hpp [5:7]
- boost/preprocessor/variadic.hpp [5:7]
- boost/preprocessor/variadic/detail/is_single_return.hpp [4:6]
- boost/preprocessor/variadic/to_array.hpp [5:7]
- boost/preprocessor/variadic/to_list.hpp [5:7]
- boost/preprocessor/variadic/to_seq.hpp [5:7]
- boost/preprocessor/variadic/to_tuple.hpp [5:7]
-
-KEEP BSL-1.0 99a2517494483ddaf8422369bcf4f9f9
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/sort/common/deque_cnc.hpp at line 8, boost/sort/common/file_vector.hpp at line 9, boost/sort/common/int_array.hpp at line 9, boost/sort/common/range.hpp at line 7, boost/sort/common/scheduler.hpp at line 8, boost/sort/common/spinlock.hpp at line 7, boost/sort/common/stack_cnc.hpp at line 7, boost/sort/common/time_measure.hpp at line 8, boost/sort/common/util/circular_buffer.hpp at line 7
- License text:
- /// Distributed under the Boost Software License, Version 1.0.\n
- /// ( See accompanyingfile LICENSE_1_0.txt or copy at
- /// http://www.boost.org/LICENSE_1_0.txt )
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 92.59
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/sort/common/deque_cnc.hpp [7:9]
- boost/sort/common/file_vector.hpp [8:10]
- boost/sort/common/int_array.hpp [8:10]
- boost/sort/common/range.hpp [6:8]
- boost/sort/common/scheduler.hpp [7:9]
- boost/sort/common/spinlock.hpp [6:8]
- boost/sort/common/stack_cnc.hpp [6:8]
- boost/sort/common/time_measure.hpp [7:9]
- boost/sort/common/util/circular_buffer.hpp [6:8]
-
-KEEP Mit-Old-Style 99b210ed9efe704d061e43a6c4c4beb3
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: LicenseRef-scancode-mit-old-style
- Score : 100.00
- Match type : TEXT
- Links : http://fedoraproject.org/wiki/Licensing:MIT#Old_Style, https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/mit-old-style.LICENSE
- Files with this license:
- boost/detail/algorithm.hpp [22:28]
- boost/interprocess/streams/bufferstream.hpp [20:26]
- boost/interprocess/streams/vectorstream.hpp [20:26]
- boost/multi_index/detail/ord_index_impl.hpp [14:20]
- boost/multi_index/detail/ord_index_node.hpp [14:20]
- boost/multi_index/detail/ord_index_ops.hpp [14:20]
-
-KEEP BSL-1.0 99b6858285788dea8099fc1db476bbc4
-BELONGS ya.make
- License text:
- Many thanks to Howard for making his code available under the Boost license.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 99.00
- Match type : REFERENCE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/chrono/duration.hpp [13:13]
- boost/chrono/system_clocks.hpp [13:13]
- boost/chrono/time_point.hpp [13:13]
- boost/ratio/detail/overflow_helpers.hpp [13:13]
- boost/ratio/ratio.hpp [13:13]
- boost/ratio/ratio_fwd.hpp [13:13]
-
-KEEP BSL-1.0 9a500d42904daddc6b36adcda04d4788
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/program_options/config.hpp at line 4
- License text:
- // Use, modification and distribution is subject to the Boost Software
- // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/program_options/config.hpp [3:5]
-
-KEEP Mit-Old-Style 9b8db1be709ff8d6f1f61d67245cc319
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: LicenseRef-scancode-mit-old-style
- Score : 100.00
- Match type : TEXT
- Links : http://fedoraproject.org/wiki/Licensing:MIT#Old_Style, https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/mit-old-style.LICENSE
- Files with this license:
- boost/detail/binary_search.hpp [20:26]
- boost/multi_array/algorithm.hpp [21:27]
-
-KEEP BSL-1.0 9d20a7ec1d8fe9db95139a9118182659
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/smart_cast.hpp at line 14, boost/serialization/state_saver.hpp at line 14, boost/serialization/strong_typedef.hpp at line 15
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 94.74
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/serialization/smart_cast.hpp [13:17]
- boost/serialization/state_saver.hpp [13:17]
- boost/serialization/strong_typedef.hpp [14:18]
-
-KEEP BSL-1.0 9d31b67c9d23516796387b3bb5abe050
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/singleton.hpp at line 14
- License text:
- // Distributed under the Boost
- // Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/serialization/singleton.hpp [12:14]
-
-KEEP BSL-1.0 9e5c81a5e33b167767ac3b6aa4556426
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/fenv.hpp at line 5, boost/detail/is_sorted.hpp at line 5, boost/fusion/adapted.hpp at line 6, boost/fusion/adapted/adt.hpp at line 7, boost/fusion/adapted/adt/adapt_adt.hpp at line 8, boost/fusion/adapted/adt/adapt_adt_named.hpp at line 7, boost/fusion/adapted/adt/adapt_assoc_adt.hpp at line 8, boost/fusion/adapted/adt/adapt_assoc_adt_named.hpp at line 5, boost/fusion/adapted/adt/detail/adapt_base.hpp at line 7, boost/fusion/adapted/adt/detail/adapt_base_assoc_attr_filler.hpp at line 5, boost/fusion/adapted/adt/detail/adapt_base_attr_filler.hpp at line 5, boost/fusion/adapted/adt/detail/extension.hpp at line 7, boost/fusion/adapted/array/deref_impl.hpp at line 5, boost/fusion/adapted/array/size_impl.hpp at line 5, boost/fusion/adapted/array/value_of_impl.hpp at line 5, boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp at line 5, boost/fusion/adapted/boost_tuple/detail/build_cons.hpp at line 5, boost/fusion/adapted/boost_tuple/detail/convert_impl.hpp at line 5, boost/fusion/adapted/boost_tuple/mpl/clear.hpp at line 5, boost/fusion/adapted/mpl.hpp at line 6, boost/fusion/adapted/mpl/detail/empty_impl.hpp at line 6, boost/fusion/adapted/std_pair.hpp at line 7, boost/fusion/adapted/std_tuple.hpp at line 5, boost/fusion/adapted/std_tuple/detail/at_impl.hpp at line 5, boost/fusion/adapted/std_tuple/detail/begin_impl.hpp at line 5, boost/fusion/adapted/std_tuple/detail/build_std_tuple.hpp at line 5, boost/fusion/adapted/std_tuple/detail/category_of_impl.hpp at line 5, boost/fusion/adapted/std_tuple/detail/convert_impl.hpp at line 5, boost/fusion/adapted/std_tuple/detail/end_impl.hpp at line 5, boost/fusion/adapted/std_tuple/detail/is_sequence_impl.hpp at line 5, boost/fusion/adapted/std_tuple/detail/is_view_impl.hpp at line 5, boost/fusion/adapted/std_tuple/detail/size_impl.hpp at line 5, boost/fusion/adapted/std_tuple/detail/value_at_impl.hpp at line 5, boost/fusion/adapted/std_tuple/mpl/clear.hpp at line 5, boost/fusion/adapted/std_tuple/std_tuple_iterator.hpp at line 5, boost/fusion/adapted/std_tuple/tag_of.hpp at line 5, boost/fusion/adapted/struct.hpp at line 7, boost/fusion/adapted/struct/adapt_assoc_struct.hpp at line 7, boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp at line 5, boost/fusion/adapted/struct/adapt_struct.hpp at line 7, boost/fusion/adapted/struct/adapt_struct_named.hpp at line 7, boost/fusion/adapted/struct/define_assoc_struct.hpp at line 5, boost/fusion/adapted/struct/define_struct.hpp at line 5, boost/fusion/adapted/struct/define_struct_inline.hpp at line 5, boost/fusion/adapted/struct/detail/adapt_auto.hpp at line 5, boost/fusion/adapted/struct/detail/adapt_base.hpp at line 8, boost/fusion/adapted/struct/detail/adapt_base_assoc_attr_filler.hpp at line 5, boost/fusion/adapted/struct/detail/adapt_base_attr_filler.hpp at line 5, boost/fusion/adapted/struct/detail/adapt_is_tpl.hpp at line 5, boost/fusion/adapted/struct/detail/at_impl.hpp at line 7, boost/fusion/adapted/struct/detail/begin_impl.hpp at line 7, boost/fusion/adapted/struct/detail/category_of_impl.hpp at line 7, boost/fusion/adapted/struct/detail/define_struct.hpp at line 5, boost/fusion/adapted/struct/detail/define_struct_inline.hpp at line 5, boost/fusion/adapted/struct/detail/deref_data_impl.hpp at line 5, boost/fusion/adapted/struct/detail/deref_impl.hpp at line 5, boost/fusion/adapted/struct/detail/end_impl.hpp at line 7, boost/fusion/adapted/struct/detail/extension.hpp at line 7, boost/fusion/adapted/struct/detail/is_sequence_impl.hpp at line 7, boost/fusion/adapted/struct/detail/is_view_impl.hpp at line 7, boost/fusion/adapted/struct/detail/key_of_impl.hpp at line 5, boost/fusion/adapted/struct/detail/namespace.hpp at line 6, boost/fusion/adapted/struct/detail/preprocessor/is_seq.hpp at line 9, boost/fusion/adapted/struct/detail/proxy_type.hpp at line 6, boost/fusion/adapted/struct/detail/size_impl.hpp at line 7, boost/fusion/adapted/struct/detail/value_at_impl.hpp at line 7, boost/fusion/adapted/struct/detail/value_of_data_impl.hpp at line 5, boost/fusion/adapted/struct/detail/value_of_impl.hpp at line 5, boost/fusion/algorithm/auxiliary.hpp at line 5, boost/fusion/algorithm/auxiliary/copy.hpp at line 5, boost/fusion/algorithm/auxiliary/move.hpp at line 5, boost/fusion/algorithm/iteration/detail/fold.hpp at line 8, boost/fusion/algorithm/iteration/detail/preprocessed/fold.hpp at line 7, boost/fusion/algorithm/iteration/detail/preprocessed/iter_fold.hpp at line 6, boost/fusion/algorithm/iteration/detail/preprocessed/reverse_fold.hpp at line 6, boost/fusion/algorithm/iteration/detail/preprocessed/reverse_iter_fold.hpp at line 6, boost/fusion/algorithm/iteration/fold.hpp at line 40, boost/fusion/algorithm/iteration/fold.hpp at line 8, boost/fusion/algorithm/iteration/fold_fwd.hpp at line 5, boost/fusion/algorithm/iteration/iter_fold.hpp at line 41, boost/fusion/algorithm/iteration/iter_fold.hpp at line 7, boost/fusion/algorithm/iteration/iter_fold_fwd.hpp at line 5, boost/fusion/algorithm/iteration/reverse_fold.hpp at line 41, boost/fusion/algorithm/iteration/reverse_fold.hpp at line 7, boost/fusion/algorithm/iteration/reverse_fold_fwd.hpp at line 5, boost/fusion/algorithm/iteration/reverse_iter_fold.hpp at line 41, boost/fusion/algorithm/iteration/reverse_iter_fold.hpp at line 7, boost/fusion/algorithm/iteration/reverse_iter_fold_fwd.hpp at line 5, boost/fusion/algorithm/transformation/detail/preprocessed/zip.hpp at line 5, boost/fusion/algorithm/transformation/erase.hpp at line 5, boost/fusion/algorithm/transformation/flatten.hpp at line 5, boost/fusion/algorithm/transformation/insert.hpp at line 5, boost/fusion/algorithm/transformation/insert_range.hpp at line 5, boost/fusion/algorithm/transformation/pop_back.hpp at line 5, boost/fusion/algorithm/transformation/zip.hpp at line 47, boost/fusion/algorithm/transformation/zip.hpp at line 6, boost/fusion/container.hpp at line 5, boost/fusion/container/deque.hpp at line 6, boost/fusion/container/deque/back_extended_deque.hpp at line 6, boost/fusion/container/deque/convert.hpp at line 6, boost/fusion/container/deque/deque.hpp at line 6, boost/fusion/container/deque/deque_fwd.hpp at line 6, boost/fusion/container/deque/deque_iterator.hpp at line 6, boost/fusion/container/deque/detail/at_impl.hpp at line 6, boost/fusion/container/deque/detail/begin_impl.hpp at line 6, boost/fusion/container/deque/detail/build_deque.hpp at line 5, boost/fusion/container/deque/detail/convert_impl.hpp at line 7, boost/fusion/container/deque/detail/cpp03/as_deque.hpp at line 6, boost/fusion/container/deque/detail/cpp03/as_deque.hpp at line 69, boost/fusion/container/deque/detail/cpp03/build_deque.hpp at line 5, boost/fusion/container/deque/detail/cpp03/deque.hpp at line 54, boost/fusion/container/deque/detail/cpp03/deque.hpp at line 6, boost/fusion/container/deque/detail/cpp03/deque_forward_ctor.hpp at line 6, boost/fusion/container/deque/detail/cpp03/deque_fwd.hpp at line 29, boost/fusion/container/deque/detail/cpp03/deque_fwd.hpp at line 6, boost/fusion/container/deque/detail/cpp03/deque_initial_size.hpp at line 38, boost/fusion/container/deque/detail/cpp03/deque_initial_size.hpp at line 6, boost/fusion/container/deque/detail/cpp03/deque_keyed_values.hpp at line 46, boost/fusion/container/deque/detail/cpp03/deque_keyed_values.hpp at line 6, boost/fusion/container/deque/detail/cpp03/deque_keyed_values_call.hpp at line 6, boost/fusion/container/deque/detail/cpp03/limits.hpp at line 6, boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque10_fwd.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque_fwd.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size10.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values.hpp at line 5, boost/fusion/container/deque/detail/deque_keyed_values.hpp at line 6, boost/fusion/container/deque/detail/end_impl.hpp at line 6, boost/fusion/container/deque/detail/is_sequence_impl.hpp at line 5, boost/fusion/container/deque/detail/keyed_element.hpp at line 6, boost/fusion/container/deque/detail/value_at_impl.hpp at line 6, boost/fusion/container/deque/front_extended_deque.hpp at line 6, boost/fusion/container/generation.hpp at line 5, boost/fusion/container/generation/deque_tie.hpp at line 5, boost/fusion/container/generation/detail/pp_deque_tie.hpp at line 31, boost/fusion/container/generation/detail/pp_deque_tie.hpp at line 6, boost/fusion/container/generation/detail/pp_list_tie.hpp at line 30, boost/fusion/container/generation/detail/pp_list_tie.hpp at line 5, boost/fusion/container/generation/detail/pp_make_deque.hpp at line 31, boost/fusion/container/generation/detail/pp_make_deque.hpp at line 6, boost/fusion/container/generation/detail/pp_make_list.hpp at line 30, boost/fusion/container/generation/detail/pp_make_list.hpp at line 5, boost/fusion/container/generation/detail/pp_make_map.hpp at line 31, boost/fusion/container/generation/detail/pp_make_map.hpp at line 5, boost/fusion/container/generation/detail/pp_make_set.hpp at line 32, boost/fusion/container/generation/detail/pp_make_set.hpp at line 5, boost/fusion/container/generation/detail/pp_make_vector.hpp at line 30, boost/fusion/container/generation/detail/pp_make_vector.hpp at line 5, boost/fusion/container/generation/detail/pp_map_tie.hpp at line 34, boost/fusion/container/generation/detail/pp_map_tie.hpp at line 6, boost/fusion/container/generation/detail/pp_vector_tie.hpp at line 30, boost/fusion/container/generation/detail/pp_vector_tie.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/deque_tie.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/deque_tie10.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/list_tie.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/list_tie10.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_deque.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_list.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_map.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_set.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_vector.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/map_tie.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/vector_tie.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/vector_tie10.hpp at line 5, boost/fusion/container/generation/list_tie.hpp at line 5, boost/fusion/container/generation/make_deque.hpp at line 5, boost/fusion/container/generation/make_list.hpp at line 5, boost/fusion/container/generation/make_map.hpp at line 5, boost/fusion/container/generation/make_set.hpp at line 5, boost/fusion/container/generation/make_vector.hpp at line 5, boost/fusion/container/generation/map_tie.hpp at line 5, boost/fusion/container/generation/vector_tie.hpp at line 5, boost/fusion/container/list.hpp at line 5, boost/fusion/container/list/cons_fwd.hpp at line 6, boost/fusion/container/list/convert.hpp at line 5, boost/fusion/container/list/detail/at_impl.hpp at line 5, boost/fusion/container/list/detail/convert_impl.hpp at line 6, boost/fusion/container/list/detail/cpp03/limits.hpp at line 5, boost/fusion/container/list/detail/cpp03/list.hpp at line 29, boost/fusion/container/list/detail/cpp03/list.hpp at line 5, boost/fusion/container/list/detail/cpp03/list_fwd.hpp at line 25, boost/fusion/container/list/detail/cpp03/list_fwd.hpp at line 5, boost/fusion/container/list/detail/cpp03/list_to_cons.hpp at line 37, boost/fusion/container/list/detail/cpp03/list_to_cons.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list10_fwd.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list_fwd.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons.hpp at line 5, boost/fusion/container/list/detail/list_to_cons.hpp at line 5, boost/fusion/container/list/detail/reverse_cons.hpp at line 5, boost/fusion/container/list/list.hpp at line 5, boost/fusion/container/list/list_fwd.hpp at line 5, boost/fusion/container/map.hpp at line 5, boost/fusion/container/map/convert.hpp at line 5, boost/fusion/container/map/detail/at_impl.hpp at line 5, boost/fusion/container/map/detail/at_key_impl.hpp at line 5, boost/fusion/container/map/detail/begin_impl.hpp at line 5, boost/fusion/container/map/detail/build_map.hpp at line 5, boost/fusion/container/map/detail/cpp03/as_map.hpp at line 5, boost/fusion/container/map/detail/cpp03/as_map.hpp at line 68, boost/fusion/container/map/detail/cpp03/begin_impl.hpp at line 6, boost/fusion/container/map/detail/cpp03/convert.hpp at line 5, boost/fusion/container/map/detail/cpp03/convert_impl.hpp at line 6, boost/fusion/container/map/detail/cpp03/deref_data_impl.hpp at line 5, boost/fusion/container/map/detail/cpp03/deref_impl.hpp at line 5, boost/fusion/container/map/detail/cpp03/end_impl.hpp at line 6, boost/fusion/container/map/detail/cpp03/key_of_impl.hpp at line 5, boost/fusion/container/map/detail/cpp03/limits.hpp at line 5, boost/fusion/container/map/detail/cpp03/map.hpp at line 48, boost/fusion/container/map/detail/cpp03/map.hpp at line 5, boost/fusion/container/map/detail/cpp03/map_fwd.hpp at line 25, boost/fusion/container/map/detail/cpp03/map_fwd.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/as_map.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/map.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/map10_fwd.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/map_fwd.hpp at line 5, boost/fusion/container/map/detail/cpp03/value_of_data_impl.hpp at line 5, boost/fusion/container/map/detail/cpp03/value_of_impl.hpp at line 5, boost/fusion/container/map/detail/end_impl.hpp at line 5, boost/fusion/container/map/detail/map_impl.hpp at line 5, boost/fusion/container/map/detail/map_index.hpp at line 5, boost/fusion/container/map/detail/value_at_impl.hpp at line 5, boost/fusion/container/map/detail/value_at_key_impl.hpp at line 5, boost/fusion/container/map/map.hpp at line 5, boost/fusion/container/map/map_fwd.hpp at line 5, boost/fusion/container/map/map_iterator.hpp at line 6, boost/fusion/container/set.hpp at line 5, boost/fusion/container/set/convert.hpp at line 5, boost/fusion/container/set/detail/as_set.hpp at line 5, boost/fusion/container/set/detail/begin_impl.hpp at line 6, boost/fusion/container/set/detail/convert_impl.hpp at line 6, boost/fusion/container/set/detail/cpp03/as_set.hpp at line 5, boost/fusion/container/set/detail/cpp03/as_set.hpp at line 68, boost/fusion/container/set/detail/cpp03/limits.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/as_set.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/set.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/set10_fwd.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/set_fwd.hpp at line 5, boost/fusion/container/set/detail/cpp03/set.hpp at line 41, boost/fusion/container/set/detail/cpp03/set.hpp at line 5, boost/fusion/container/set/detail/cpp03/set_fwd.hpp at line 25, boost/fusion/container/set/detail/cpp03/set_fwd.hpp at line 5, boost/fusion/container/set/detail/deref_data_impl.hpp at line 5, boost/fusion/container/set/detail/deref_impl.hpp at line 5, boost/fusion/container/set/detail/end_impl.hpp at line 6, boost/fusion/container/set/detail/key_of_impl.hpp at line 5, boost/fusion/container/set/detail/value_of_data_impl.hpp at line 5, boost/fusion/container/set/detail/value_of_impl.hpp at line 5, boost/fusion/container/set/set.hpp at line 5, boost/fusion/container/set/set_fwd.hpp at line 5, boost/fusion/container/vector.hpp at line 5, boost/fusion/container/vector/convert.hpp at line 5, boost/fusion/container/vector/detail/as_vector.hpp at line 5, boost/fusion/container/vector/detail/at_impl.hpp at line 5, boost/fusion/container/vector/detail/config.hpp at line 5, boost/fusion/container/vector/detail/convert_impl.hpp at line 6, boost/fusion/container/vector/detail/cpp03/as_vector.hpp at line 5, boost/fusion/container/vector/detail/cpp03/as_vector.hpp at line 68, boost/fusion/container/vector/detail/cpp03/limits.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vector.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vector10_fwd.hpp at line 6, boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser10.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vector_fwd.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10_fwd.hpp at line 5, boost/fusion/container/vector/detail/cpp03/value_at_impl.hpp at line 5, boost/fusion/container/vector/detail/cpp03/vector.hpp at line 6, boost/fusion/container/vector/detail/cpp03/vector.hpp at line 73, boost/fusion/container/vector/detail/cpp03/vector10.hpp at line 5, boost/fusion/container/vector/detail/cpp03/vector10.hpp at line 76, boost/fusion/container/vector/detail/cpp03/vector10_fwd.hpp at line 35, boost/fusion/container/vector/detail/cpp03/vector10_fwd.hpp at line 7, boost/fusion/container/vector/detail/cpp03/vector20.hpp at line 51, boost/fusion/container/vector/detail/cpp03/vector20.hpp at line 6, boost/fusion/container/vector/detail/cpp03/vector20_fwd.hpp at line 29, boost/fusion/container/vector/detail/cpp03/vector20_fwd.hpp at line 7, boost/fusion/container/vector/detail/cpp03/vector30.hpp at line 5, boost/fusion/container/vector/detail/cpp03/vector30.hpp at line 50, boost/fusion/container/vector/detail/cpp03/vector30_fwd.hpp at line 29, boost/fusion/container/vector/detail/cpp03/vector30_fwd.hpp at line 7, boost/fusion/container/vector/detail/cpp03/vector40.hpp at line 51, boost/fusion/container/vector/detail/cpp03/vector40.hpp at line 6, boost/fusion/container/vector/detail/cpp03/vector40_fwd.hpp at line 29, boost/fusion/container/vector/detail/cpp03/vector40_fwd.hpp at line 7, boost/fusion/container/vector/detail/cpp03/vector50.hpp at line 5, boost/fusion/container/vector/detail/cpp03/vector50.hpp at line 50, boost/fusion/container/vector/detail/cpp03/vector50_fwd.hpp at line 29, boost/fusion/container/vector/detail/cpp03/vector50_fwd.hpp at line 7, boost/fusion/container/vector/detail/cpp03/vector_forward_ctor.hpp at line 5, boost/fusion/container/vector/detail/cpp03/vector_fwd.hpp at line 40, boost/fusion/container/vector/detail/cpp03/vector_fwd.hpp at line 6, boost/fusion/container/vector/detail/cpp03/vector_n.hpp at line 5, boost/fusion/container/vector/detail/cpp03/vector_n_chooser.hpp at line 5, boost/fusion/container/vector/detail/cpp03/vector_n_chooser.hpp at line 51, boost/fusion/container/vector/detail/value_at_impl.hpp at line 5, boost/fusion/container/vector/vector.hpp at line 5, boost/fusion/container/vector/vector10.hpp at line 5, boost/fusion/container/vector/vector20.hpp at line 5, boost/fusion/container/vector/vector30.hpp at line 5, boost/fusion/container/vector/vector40.hpp at line 5, boost/fusion/container/vector/vector50.hpp at line 5, boost/fusion/container/vector/vector_fwd.hpp at line 5, boost/fusion/include/accumulate.hpp at line 5, boost/fusion/include/adapt_adt.hpp at line 5, boost/fusion/include/adapt_adt_named.hpp at line 5, boost/fusion/include/adapt_assoc_adt.hpp at line 5, boost/fusion/include/adapt_assoc_adt_named.hpp at line 5, boost/fusion/include/adapt_assoc_struct.hpp at line 5, boost/fusion/include/adapt_assoc_struct_named.hpp at line 5, boost/fusion/include/adapt_struct.hpp at line 5, boost/fusion/include/adapt_struct_named.hpp at line 5, boost/fusion/include/adapted.hpp at line 5, boost/fusion/include/adapter.hpp at line 5, boost/fusion/include/advance.hpp at line 5, boost/fusion/include/algorithm.hpp at line 5, boost/fusion/include/all.hpp at line 5, boost/fusion/include/any.hpp at line 5, boost/fusion/include/array.hpp at line 5, boost/fusion/include/as_deque.hpp at line 5, boost/fusion/include/as_list.hpp at line 5, boost/fusion/include/as_map.hpp at line 5, boost/fusion/include/as_set.hpp at line 5, boost/fusion/include/at_c.hpp at line 5, boost/fusion/include/at_key.hpp at line 5, boost/fusion/include/auxiliary.hpp at line 5, boost/fusion/include/back.hpp at line 5, boost/fusion/include/begin.hpp at line 5, boost/fusion/include/boost_array.hpp at line 5, boost/fusion/include/boost_tuple.hpp at line 5, boost/fusion/include/category_of.hpp at line 5, boost/fusion/include/clear.hpp at line 5, boost/fusion/include/comparison.hpp at line 5, boost/fusion/include/cons.hpp at line 5, boost/fusion/include/cons_tie.hpp at line 5, boost/fusion/include/container.hpp at line 5, boost/fusion/include/convert.hpp at line 5, boost/fusion/include/copy.hpp at line 5, boost/fusion/include/count.hpp at line 5, boost/fusion/include/count_if.hpp at line 5, boost/fusion/include/deduce.hpp at line 5, boost/fusion/include/deduce_sequence.hpp at line 5, boost/fusion/include/define_assoc_struct.hpp at line 5, boost/fusion/include/define_struct.hpp at line 5, boost/fusion/include/define_struct_inline.hpp at line 5, boost/fusion/include/deque.hpp at line 5, boost/fusion/include/deque_fwd.hpp at line 5, boost/fusion/include/deque_tie.hpp at line 5, boost/fusion/include/deref.hpp at line 5, boost/fusion/include/deref_data.hpp at line 5, boost/fusion/include/distance.hpp at line 5, boost/fusion/include/empty.hpp at line 5, boost/fusion/include/end.hpp at line 5, boost/fusion/include/equal_to.hpp at line 5, boost/fusion/include/erase.hpp at line 5, boost/fusion/include/erase_key.hpp at line 5, boost/fusion/include/filter.hpp at line 5, boost/fusion/include/filter_if.hpp at line 5, boost/fusion/include/filter_view.hpp at line 5, boost/fusion/include/find.hpp at line 5, boost/fusion/include/find_if.hpp at line 5, boost/fusion/include/flatten.hpp at line 5, boost/fusion/include/flatten_view.hpp at line 5, boost/fusion/include/fold.hpp at line 5, boost/fusion/include/for_each.hpp at line 5, boost/fusion/include/front.hpp at line 5, boost/fusion/include/functional.hpp at line 5, boost/fusion/include/fused.hpp at line 5, boost/fusion/include/fused_function_object.hpp at line 5, boost/fusion/include/fused_procedure.hpp at line 5, boost/fusion/include/generation.hpp at line 5, boost/fusion/include/greater.hpp at line 5, boost/fusion/include/greater_equal.hpp at line 5, boost/fusion/include/has_key.hpp at line 5, boost/fusion/include/hash.hpp at line 5, boost/fusion/include/ignore.hpp at line 5, boost/fusion/include/in.hpp at line 5, boost/fusion/include/insert.hpp at line 5, boost/fusion/include/insert_range.hpp at line 5, boost/fusion/include/intrinsic.hpp at line 5, boost/fusion/include/invocation.hpp at line 5, boost/fusion/include/invoke.hpp at line 5, boost/fusion/include/invoke_function_object.hpp at line 5, boost/fusion/include/invoke_procedure.hpp at line 5, boost/fusion/include/is_iterator.hpp at line 5, boost/fusion/include/is_segmented.hpp at line 5, boost/fusion/include/is_view.hpp at line 5, boost/fusion/include/iter_fold.hpp at line 5, boost/fusion/include/iteration.hpp at line 5, boost/fusion/include/iterator.hpp at line 5, boost/fusion/include/iterator_adapter.hpp at line 5, boost/fusion/include/iterator_base.hpp at line 5, boost/fusion/include/iterator_facade.hpp at line 5, boost/fusion/include/iterator_range.hpp at line 5, boost/fusion/include/key_of.hpp at line 5, boost/fusion/include/less.hpp at line 5, boost/fusion/include/less_equal.hpp at line 5, boost/fusion/include/list.hpp at line 5, boost/fusion/include/list_fwd.hpp at line 5, boost/fusion/include/list_tie.hpp at line 5, boost/fusion/include/make_cons.hpp at line 5, boost/fusion/include/make_deque.hpp at line 5, boost/fusion/include/make_fused.hpp at line 5, boost/fusion/include/make_fused_function_object.hpp at line 5, boost/fusion/include/make_fused_procedure.hpp at line 5, boost/fusion/include/make_list.hpp at line 5, boost/fusion/include/make_map.hpp at line 5, boost/fusion/include/make_set.hpp at line 5, boost/fusion/include/make_tuple.hpp at line 5, boost/fusion/include/make_unfused.hpp at line 5, boost/fusion/include/make_vector.hpp at line 5, boost/fusion/include/map.hpp at line 5, boost/fusion/include/map_fwd.hpp at line 5, boost/fusion/include/map_tie.hpp at line 5, boost/fusion/include/move.hpp at line 5, boost/fusion/include/mpl.hpp at line 5, boost/fusion/include/next.hpp at line 5, boost/fusion/include/nil.hpp at line 5, boost/fusion/include/none.hpp at line 5, boost/fusion/include/not_equal_to.hpp at line 5, boost/fusion/include/nview.hpp at line 5, boost/fusion/include/out.hpp at line 5, boost/fusion/include/pair.hpp at line 5, boost/fusion/include/pair_tie.hpp at line 5, boost/fusion/include/pop_back.hpp at line 5, boost/fusion/include/pop_front.hpp at line 5, boost/fusion/include/prior.hpp at line 5, boost/fusion/include/proxy_type.hpp at line 5, boost/fusion/include/push_back.hpp at line 5, boost/fusion/include/query.hpp at line 5, boost/fusion/include/remove.hpp at line 5, boost/fusion/include/remove_if.hpp at line 5, boost/fusion/include/repetitive_view.hpp at line 5, boost/fusion/include/replace.hpp at line 5, boost/fusion/include/replace_if.hpp at line 5, boost/fusion/include/reverse.hpp at line 5, boost/fusion/include/reverse_fold.hpp at line 5, boost/fusion/include/reverse_iter_fold.hpp at line 5, boost/fusion/include/reverse_view.hpp at line 5, boost/fusion/include/segmented_fold_until.hpp at line 5, boost/fusion/include/segmented_iterator.hpp at line 5, boost/fusion/include/segments.hpp at line 5, boost/fusion/include/sequence.hpp at line 5, boost/fusion/include/sequence_base.hpp at line 5, boost/fusion/include/sequence_facade.hpp at line 5, boost/fusion/include/set.hpp at line 5, boost/fusion/include/set_fwd.hpp at line 5, boost/fusion/include/size.hpp at line 5, boost/fusion/include/std_array.hpp at line 5, boost/fusion/include/std_pair.hpp at line 5, boost/fusion/include/std_tuple.hpp at line 4, boost/fusion/include/struct.hpp at line 5, boost/fusion/include/support.hpp at line 5, boost/fusion/include/swap.hpp at line 5, boost/fusion/include/tag_of.hpp at line 5, boost/fusion/include/tag_of_fwd.hpp at line 5, boost/fusion/include/transformation.hpp at line 5, boost/fusion/include/tuple.hpp at line 5, boost/fusion/include/tuple_fwd.hpp at line 5, boost/fusion/include/tuple_tie.hpp at line 5, boost/fusion/include/unfused.hpp at line 5, boost/fusion/include/unfused_typed.hpp at line 5, boost/fusion/include/unused.hpp at line 5, boost/fusion/include/value_at_key.hpp at line 5, boost/fusion/include/value_of.hpp at line 5, boost/fusion/include/value_of_data.hpp at line 5, boost/fusion/include/vector.hpp at line 5, boost/fusion/include/vector10.hpp at line 5, boost/fusion/include/vector20.hpp at line 5, boost/fusion/include/vector30.hpp at line 5, boost/fusion/include/vector40.hpp at line 5, boost/fusion/include/vector50.hpp at line 5, boost/fusion/include/vector_fwd.hpp at line 5, boost/fusion/include/vector_tie.hpp at line 5, boost/fusion/include/view.hpp at line 5, boost/fusion/include/void.hpp at line 5, boost/fusion/include/zip.hpp at line 5, boost/fusion/include/zip_view.hpp at line 5, boost/fusion/iterator.hpp at line 5, boost/fusion/iterator/advance.hpp at line 5, boost/fusion/iterator/basic_iterator.hpp at line 5, boost/fusion/iterator/deref_data.hpp at line 5, boost/fusion/iterator/detail/segment_sequence.hpp at line 5, boost/fusion/iterator/detail/segmented_equal_to.hpp at line 5, boost/fusion/iterator/detail/segmented_iterator.hpp at line 5, boost/fusion/iterator/detail/segmented_next_impl.hpp at line 5, boost/fusion/iterator/equal_to.hpp at line 5, boost/fusion/iterator/iterator_adapter.hpp at line 5, boost/fusion/iterator/iterator_facade.hpp at line 5, boost/fusion/iterator/key_of.hpp at line 5, boost/fusion/iterator/mpl/convert_iterator.hpp at line 5, boost/fusion/iterator/segmented_iterator.hpp at line 5, boost/fusion/iterator/value_of_data.hpp at line 5, boost/fusion/mpl.hpp at line 5, boost/fusion/mpl/erase.hpp at line 5, boost/fusion/mpl/erase_key.hpp at line 5, boost/fusion/mpl/insert.hpp at line 5, boost/fusion/mpl/insert_range.hpp at line 5, boost/fusion/mpl/pop_back.hpp at line 5, boost/fusion/mpl/pop_front.hpp at line 5, boost/fusion/mpl/push_back.hpp at line 5, boost/fusion/mpl/push_front.hpp at line 5, boost/fusion/sequence.hpp at line 5, boost/fusion/sequence/comparison/enable_comparison.hpp at line 5, boost/fusion/sequence/comparison/equal_to.hpp at line 6, boost/fusion/sequence/comparison/greater.hpp at line 6, boost/fusion/sequence/comparison/greater_equal.hpp at line 6, boost/fusion/sequence/comparison/less.hpp at line 6, boost/fusion/sequence/comparison/less_equal.hpp at line 6, boost/fusion/sequence/comparison/not_equal_to.hpp at line 6, boost/fusion/sequence/convert.hpp at line 5, boost/fusion/sequence/hash.hpp at line 5, boost/fusion/sequence/intrinsic.hpp at line 5, boost/fusion/sequence/intrinsic/at.hpp at line 5, boost/fusion/sequence/intrinsic/at_c.hpp at line 5, boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp at line 5, boost/fusion/sequence/intrinsic/detail/segmented_begin_impl.hpp at line 5, boost/fusion/sequence/intrinsic/detail/segmented_end.hpp at line 5, boost/fusion/sequence/intrinsic/detail/segmented_end_impl.hpp at line 5, boost/fusion/sequence/intrinsic_fwd.hpp at line 5, boost/fusion/sequence/io/in.hpp at line 7, boost/fusion/sequence/sequence_facade.hpp at line 5, boost/fusion/support.hpp at line 5, boost/fusion/support/as_const.hpp at line 5, boost/fusion/support/config.hpp at line 6, boost/fusion/support/detail/access.hpp at line 5, boost/fusion/support/detail/and.hpp at line 5, boost/fusion/support/detail/enabler.hpp at line 5, boost/fusion/support/detail/index_sequence.hpp at line 6, boost/fusion/support/detail/is_same_size.hpp at line 5, boost/fusion/support/detail/pp_round.hpp at line 5, boost/fusion/support/detail/segmented_fold_until_impl.hpp at line 5, boost/fusion/support/is_sequence.hpp at line 5, boost/fusion/support/iterator_base.hpp at line 5, boost/fusion/support/pair.hpp at line 6, boost/fusion/support/segmented_fold_until.hpp at line 5, boost/fusion/support/sequence_base.hpp at line 6, boost/fusion/support/tag_of.hpp at line 5, boost/fusion/support/tag_of_fwd.hpp at line 6, boost/fusion/support/unused.hpp at line 5, boost/fusion/support/void.hpp at line 5, boost/fusion/tuple/detail/make_tuple.hpp at line 37, boost/fusion/tuple/detail/make_tuple.hpp at line 5, boost/fusion/tuple/detail/preprocessed/make_tuple.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple10_fwd.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple_fwd.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple_tie.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple_tie10.hpp at line 5, boost/fusion/tuple/detail/tuple.hpp at line 33, boost/fusion/tuple/detail/tuple.hpp at line 5, boost/fusion/tuple/detail/tuple_expand.hpp at line 5, boost/fusion/tuple/detail/tuple_fwd.hpp at line 25, boost/fusion/tuple/detail/tuple_fwd.hpp at line 5, boost/fusion/tuple/detail/tuple_tie.hpp at line 28, boost/fusion/tuple/detail/tuple_tie.hpp at line 5, boost/fusion/tuple/make_tuple.hpp at line 5, boost/fusion/tuple/tuple.hpp at line 5, boost/fusion/tuple/tuple_fwd.hpp at line 5, boost/fusion/tuple/tuple_tie.hpp at line 5, boost/fusion/view/detail/strictest_traversal.hpp at line 6, boost/fusion/view/filter_view/detail/deref_data_impl.hpp at line 5, boost/fusion/view/filter_view/detail/key_of_impl.hpp at line 5, boost/fusion/view/filter_view/detail/value_of_data_impl.hpp at line 5, boost/fusion/view/filter_view/filter_view_iterator.hpp at line 5, boost/fusion/view/flatten_view.hpp at line 5, boost/fusion/view/flatten_view/flatten_view.hpp at line 5, boost/fusion/view/flatten_view/flatten_view_iterator.hpp at line 5, boost/fusion/view/iterator_range/detail/at_impl.hpp at line 5, boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp at line 5, boost/fusion/view/iterator_range/detail/size_impl.hpp at line 5, boost/fusion/view/iterator_range/detail/value_at_impl.hpp at line 5, boost/fusion/view/iterator_range/iterator_range.hpp at line 5, boost/fusion/view/joint_view/detail/deref_data_impl.hpp at line 5, boost/fusion/view/joint_view/detail/key_of_impl.hpp at line 5, boost/fusion/view/joint_view/detail/value_of_data_impl.hpp at line 5, boost/fusion/view/joint_view/joint_view.hpp at line 5, boost/fusion/view/joint_view/joint_view_fwd.hpp at line 5, boost/fusion/view/joint_view/joint_view_iterator.hpp at line 5, boost/fusion/view/nview/detail/advance_impl.hpp at line 5, boost/fusion/view/nview/detail/begin_impl.hpp at line 5, boost/fusion/view/nview/detail/cpp03/nview_impl.hpp at line 5, boost/fusion/view/nview/detail/deref_impl.hpp at line 5, boost/fusion/view/nview/detail/distance_impl.hpp at line 5, boost/fusion/view/nview/detail/end_impl.hpp at line 5, boost/fusion/view/nview/detail/equal_to_impl.hpp at line 5, boost/fusion/view/nview/detail/next_impl.hpp at line 5, boost/fusion/view/nview/detail/nview_impl.hpp at line 5, boost/fusion/view/nview/detail/prior_impl.hpp at line 5, boost/fusion/view/nview/detail/value_of_impl.hpp at line 5, boost/fusion/view/repetitive_view.hpp at line 5, boost/fusion/view/repetitive_view/detail/begin_impl.hpp at line 5, boost/fusion/view/repetitive_view/detail/deref_impl.hpp at line 5, boost/fusion/view/repetitive_view/detail/end_impl.hpp at line 5, boost/fusion/view/repetitive_view/detail/next_impl.hpp at line 5, boost/fusion/view/repetitive_view/detail/value_of_impl.hpp at line 5, boost/fusion/view/repetitive_view/repetitive_view.hpp at line 5, boost/fusion/view/repetitive_view/repetitive_view_fwd.hpp at line 5, boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp at line 5, boost/fusion/view/reverse_view/detail/at_impl.hpp at line 5, boost/fusion/view/reverse_view/detail/deref_data_impl.hpp at line 5, boost/fusion/view/reverse_view/detail/key_of_impl.hpp at line 5, boost/fusion/view/reverse_view/detail/value_at_impl.hpp at line 5, boost/fusion/view/reverse_view/detail/value_of_data_impl.hpp at line 5, boost/fusion/view/reverse_view/reverse_view_iterator.hpp at line 5, boost/fusion/view/single_view/detail/distance_impl.hpp at line 5, boost/fusion/view/single_view/detail/equal_to_impl.hpp at line 5, boost/fusion/view/single_view/detail/next_impl.hpp at line 6, boost/fusion/view/single_view/detail/prior_impl.hpp at line 5, boost/fusion/view/transform_view/detail/value_at_impl.hpp at line 6, boost/fusion/view/transform_view/transform_view_iterator.hpp at line 5, boost/fusion/view/zip_view/detail/value_of_impl.hpp at line 6, boost/hof.hpp at line 5, boost/hof/alias.hpp at line 5, boost/hof/always.hpp at line 5, boost/hof/apply.hpp at line 5, boost/hof/apply_eval.hpp at line 5, boost/hof/arg.hpp at line 5, boost/hof/capture.hpp at line 5, boost/hof/combine.hpp at line 5, boost/hof/compose.hpp at line 5, boost/hof/config.hpp at line 5, boost/hof/construct.hpp at line 5, boost/hof/decay.hpp at line 5, boost/hof/decorate.hpp at line 5, boost/hof/detail/and.hpp at line 5, boost/hof/detail/callable_base.hpp at line 5, boost/hof/detail/can_be_called.hpp at line 5, boost/hof/detail/compressed_pair.hpp at line 5, boost/hof/detail/constexpr_deduce.hpp at line 5, boost/hof/detail/delegate.hpp at line 5, boost/hof/detail/forward.hpp at line 5, boost/hof/detail/holder.hpp at line 5, boost/hof/detail/intrinsics.hpp at line 5, boost/hof/detail/join.hpp at line 5, boost/hof/detail/make.hpp at line 5, boost/hof/detail/move.hpp at line 5, boost/hof/detail/noexcept.hpp at line 5, boost/hof/detail/pp.hpp at line 5, boost/hof/detail/recursive_constexpr_depth.hpp at line 5, boost/hof/detail/remove_rvalue_reference.hpp at line 5, boost/hof/detail/result_of.hpp at line 5, boost/hof/detail/result_type.hpp at line 5, boost/hof/detail/seq.hpp at line 5, boost/hof/detail/static_const_var.hpp at line 5, boost/hof/detail/unpack_tuple.hpp at line 5, boost/hof/detail/unwrap.hpp at line 5, boost/hof/detail/using.hpp at line 5, boost/hof/eval.hpp at line 5, boost/hof/first_of.hpp at line 5, boost/hof/fix.hpp at line 5, boost/hof/flip.hpp at line 5, boost/hof/flow.hpp at line 5, boost/hof/fold.hpp at line 5, boost/hof/function.hpp at line 5, boost/hof/function_param_limit.hpp at line 5, boost/hof/identity.hpp at line 5, boost/hof/if.hpp at line 5, boost/hof/implicit.hpp at line 5, boost/hof/indirect.hpp at line 5, boost/hof/infix.hpp at line 5, boost/hof/is_invocable.hpp at line 5, boost/hof/is_unpackable.hpp at line 5, boost/hof/lambda.hpp at line 5, boost/hof/lazy.hpp at line 5, boost/hof/lift.hpp at line 5, boost/hof/limit.hpp at line 5, boost/hof/match.hpp at line 5, boost/hof/mutable.hpp at line 5, boost/hof/pack.hpp at line 5, boost/hof/partial.hpp at line 5, boost/hof/pipable.hpp at line 5, boost/hof/placeholders.hpp at line 5, boost/hof/proj.hpp at line 5, boost/hof/protect.hpp at line 5, boost/hof/repeat.hpp at line 5, boost/hof/repeat_while.hpp at line 5, boost/hof/result.hpp at line 5, boost/hof/returns.hpp at line 5, boost/hof/reveal.hpp at line 5, boost/hof/reverse_fold.hpp at line 5, boost/hof/rotate.hpp at line 5, boost/hof/static.hpp at line 5, boost/hof/tap.hpp at line 5, boost/hof/unpack.hpp at line 5, boost/hof/unpack_sequence.hpp at line 5, boost/hof/version.hpp at line 5, boost/phoenix.hpp at line 6, boost/phoenix/bind.hpp at line 5, boost/phoenix/bind/bind_function.hpp at line 5, boost/phoenix/bind/bind_function_object.hpp at line 5, boost/phoenix/bind/bind_member_function.hpp at line 5, boost/phoenix/bind/bind_member_variable.hpp at line 6, boost/phoenix/bind/detail/cpp03/bind_member_function.hpp at line 6, boost/phoenix/bind/detail/member_variable.hpp at line 5, boost/phoenix/config.hpp at line 8, boost/phoenix/core/actor.hpp at line 8, boost/phoenix/core/argument.hpp at line 121, boost/phoenix/core/argument.hpp at line 7, boost/phoenix/core/argument.hpp at line 90, boost/phoenix/core/arity.hpp at line 6, boost/phoenix/core/call.hpp at line 6, boost/phoenix/core/debug.hpp at line 7, boost/phoenix/core/detail/argument.hpp at line 7, boost/phoenix/core/detail/cpp03/actor_operator.hpp at line 28, boost/phoenix/core/detail/cpp03/actor_result_of.hpp at line 29, boost/phoenix/core/detail/cpp03/call.hpp at line 25, boost/phoenix/core/detail/cpp03/expression.hpp at line 23, boost/phoenix/core/detail/cpp03/function_equal.hpp at line 26, boost/phoenix/core/detail/cpp03/function_equal.hpp at line 6, boost/phoenix/core/detail/cpp03/function_eval.hpp at line 16, boost/phoenix/core/detail/cpp03/function_eval_expr.hpp at line 21, boost/phoenix/core/detail/cpp03/function_eval_expr.hpp at line 5, boost/phoenix/core/detail/cpp03/phx2_result.hpp at line 27, boost/phoenix/core/detail/cpp03/phx2_result.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/actor_operator.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_10.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/call.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/expression.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_10.hpp at line 5, boost/phoenix/core/detail/function_eval.hpp at line 6, boost/phoenix/core/detail/index_sequence.hpp at line 5, boost/phoenix/core/detail/phx2_result.hpp at line 5, boost/phoenix/core/environment.hpp at line 6, boost/phoenix/core/function_equal.hpp at line 6, boost/phoenix/core/is_actor.hpp at line 5, boost/phoenix/core/is_value.hpp at line 6, boost/phoenix/core/nothing.hpp at line 5, boost/phoenix/core/reference.hpp at line 6, boost/phoenix/core/terminal.hpp at line 6, boost/phoenix/core/terminal_fwd.hpp at line 6, boost/phoenix/core/value.hpp at line 6, boost/phoenix/core/visit_each.hpp at line 6, boost/phoenix/function.hpp at line 5, boost/phoenix/function/adapt_callable.hpp at line 6, boost/phoenix/function/adapt_function.hpp at line 7, boost/phoenix/function/detail/cpp03/function_operator.hpp at line 25, boost/phoenix/function/detail/cpp03/preprocessed/function_operator.hpp at line 5, boost/phoenix/function/detail/cpp03/preprocessed/function_operator_10.hpp at line 6, boost/phoenix/function/function.hpp at line 7, boost/phoenix/function/lazy_list.hpp at line 38, boost/phoenix/function/lazy_operator.hpp at line 32, boost/phoenix/function/lazy_prelude.hpp at line 120, boost/phoenix/function/lazy_reuse.hpp at line 29, boost/phoenix/function/lazy_signature.hpp at line 39, boost/phoenix/function/lazy_smart.hpp at line 16, boost/phoenix/fusion.hpp at line 6, boost/phoenix/fusion/at.hpp at line 7, boost/phoenix/object.hpp at line 6, boost/phoenix/object/const_cast.hpp at line 6, boost/phoenix/object/construct.hpp at line 6, boost/phoenix/object/delete.hpp at line 6, boost/phoenix/object/detail/cpp03/construct.hpp at line 25, boost/phoenix/object/detail/cpp03/construct_eval.hpp at line 27, boost/phoenix/object/detail/cpp03/construct_expr.hpp at line 15, boost/phoenix/object/detail/cpp03/new.hpp at line 25, boost/phoenix/object/detail/cpp03/new_eval.hpp at line 27, boost/phoenix/object/detail/cpp03/new_expr.hpp at line 15, boost/phoenix/object/detail/cpp03/preprocessed/construct.hpp at line 5, boost/phoenix/object/detail/cpp03/preprocessed/construct_10.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/construct_eval.hpp at line 5, boost/phoenix/object/detail/cpp03/preprocessed/construct_expr.hpp at line 5, boost/phoenix/object/detail/cpp03/preprocessed/new.hpp at line 5, boost/phoenix/object/detail/cpp03/preprocessed/new_10.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/new_eval.hpp at line 5, boost/phoenix/object/detail/cpp03/preprocessed/new_expr.hpp at line 5, boost/phoenix/object/detail/target.hpp at line 6, boost/phoenix/object/dynamic_cast.hpp at line 6, boost/phoenix/object/new.hpp at line 6, boost/phoenix/object/reinterpret_cast.hpp at line 6, boost/phoenix/object/static_cast.hpp at line 6, boost/phoenix/operator.hpp at line 6, boost/phoenix/operator/arithmetic.hpp at line 6, boost/phoenix/operator/bitwise.hpp at line 6, boost/phoenix/operator/comparison.hpp at line 6, boost/phoenix/operator/detail/cpp03/mem_fun_ptr_eval.hpp at line 20, boost/phoenix/operator/detail/cpp03/mem_fun_ptr_eval_result_of.hpp at line 20, boost/phoenix/operator/detail/cpp03/mem_fun_ptr_expr.hpp at line 14, boost/phoenix/operator/detail/cpp03/mem_fun_ptr_gen.hpp at line 19, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval.hpp at line 5, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_10.hpp at line 7, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of.hpp at line 5, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr.hpp at line 5, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen.hpp at line 5, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_10.hpp at line 6, boost/phoenix/operator/detail/define_operator.hpp at line 6, boost/phoenix/operator/detail/undef_operator.hpp at line 5, boost/phoenix/operator/if_else.hpp at line 6, boost/phoenix/operator/io.hpp at line 6, boost/phoenix/operator/logical.hpp at line 6, boost/phoenix/operator/member.hpp at line 7, boost/phoenix/operator/self.hpp at line 6, boost/phoenix/phoenix.hpp at line 6, boost/phoenix/scope.hpp at line 6, boost/phoenix/scope/detail/cpp03/dynamic.hpp at line 29, boost/phoenix/scope/detail/cpp03/lambda.hpp at line 20, boost/phoenix/scope/detail/cpp03/local_gen.hpp at line 7, boost/phoenix/scope/detail/cpp03/preprocessed/dynamic.hpp at line 5, boost/phoenix/scope/detail/local_gen.hpp at line 5, boost/phoenix/scope/detail/local_variable.hpp at line 7, boost/phoenix/scope/dynamic.hpp at line 7, boost/phoenix/scope/lambda.hpp at line 8, boost/phoenix/scope/let.hpp at line 8, boost/phoenix/scope/local_variable.hpp at line 6, boost/phoenix/scope/scoped_environment.hpp at line 6, boost/phoenix/statement.hpp at line 5, boost/phoenix/statement/detail/catch_push_back.hpp at line 24, boost/phoenix/statement/detail/preprocessed/catch_push_back.hpp at line 5, boost/phoenix/statement/detail/preprocessed/switch.hpp at line 5, boost/phoenix/statement/detail/preprocessed/try_catch_eval.hpp at line 5, boost/phoenix/statement/detail/preprocessed/try_catch_expression.hpp at line 5, boost/phoenix/statement/detail/preprocessed/try_catch_expression_10.hpp at line 6, boost/phoenix/statement/detail/preprocessed/try_catch_expression_20.hpp at line 6, boost/phoenix/statement/detail/switch.hpp at line 29, boost/phoenix/statement/detail/try_catch_eval.hpp at line 29, boost/phoenix/statement/detail/try_catch_expression.hpp at line 29, boost/phoenix/statement/do_while.hpp at line 6, boost/phoenix/statement/for.hpp at line 6, boost/phoenix/statement/if.hpp at line 6, boost/phoenix/statement/sequence.hpp at line 7, boost/phoenix/statement/switch.hpp at line 6, boost/phoenix/statement/throw.hpp at line 7, boost/phoenix/statement/try_catch.hpp at line 7, boost/phoenix/statement/while.hpp at line 6, boost/phoenix/stl/cmath.hpp at line 5, boost/phoenix/stl/container/container.hpp at line 6, boost/phoenix/support/detail/iterate.hpp at line 5, boost/phoenix/support/detail/iterate_define.hpp at line 5, boost/phoenix/support/detail/iterate_undef.hpp at line 5, boost/phoenix/support/iterate.hpp at line 5, boost/phoenix/support/vector.hpp at line 45, boost/phoenix/version.hpp at line 7, boost/spirit/home/karma/detail/pass_container.hpp at line 6, boost/spirit/home/lex/lexer/lexertl/wrap_action.hpp at line 7, boost/spirit/home/qi.hpp at line 5, boost/spirit/home/qi/action/action.hpp at line 5, boost/spirit/home/qi/auto.hpp at line 5, boost/spirit/home/qi/auxiliary.hpp at line 6, boost/spirit/home/qi/auxiliary/attr.hpp at line 6, boost/spirit/home/qi/auxiliary/eoi.hpp at line 6, boost/spirit/home/qi/auxiliary/eol.hpp at line 6, boost/spirit/home/qi/auxiliary/eps.hpp at line 5, boost/spirit/home/qi/auxiliary/lazy.hpp at line 5, boost/spirit/home/qi/binary.hpp at line 5, boost/spirit/home/qi/binary/binary.hpp at line 6, boost/spirit/home/qi/char/char.hpp at line 7, boost/spirit/home/qi/char/char_class.hpp at line 5, boost/spirit/home/qi/char/char_parser.hpp at line 5, boost/spirit/home/qi/copy.hpp at line 5, boost/spirit/home/qi/detail/alternative_function.hpp at line 5, boost/spirit/home/qi/detail/assign_to.hpp at line 7, boost/spirit/home/qi/detail/construct.hpp at line 6, boost/spirit/home/qi/detail/expect_function.hpp at line 5, boost/spirit/home/qi/detail/fail_function.hpp at line 5, boost/spirit/home/qi/detail/parse.hpp at line 5, boost/spirit/home/qi/detail/parse_auto.hpp at line 5, boost/spirit/home/qi/detail/pass_container.hpp at line 6, boost/spirit/home/qi/detail/pass_function.hpp at line 5, boost/spirit/home/qi/detail/permute_function.hpp at line 5, boost/spirit/home/qi/detail/string_parse.hpp at line 5, boost/spirit/home/qi/directive.hpp at line 5, boost/spirit/home/qi/directive/as.hpp at line 7, boost/spirit/home/qi/directive/encoding.hpp at line 5, boost/spirit/home/qi/directive/hold.hpp at line 5, boost/spirit/home/qi/directive/lexeme.hpp at line 5, boost/spirit/home/qi/directive/matches.hpp at line 5, boost/spirit/home/qi/directive/no_case.hpp at line 5, boost/spirit/home/qi/directive/no_skip.hpp at line 6, boost/spirit/home/qi/directive/omit.hpp at line 5, boost/spirit/home/qi/directive/raw.hpp at line 5, boost/spirit/home/qi/directive/repeat.hpp at line 6, boost/spirit/home/qi/directive/skip.hpp at line 5, boost/spirit/home/qi/domain.hpp at line 5, boost/spirit/home/qi/meta_compiler.hpp at line 5, boost/spirit/home/qi/nonterminal.hpp at line 5, boost/spirit/home/qi/nonterminal/debug_handler.hpp at line 5, boost/spirit/home/qi/nonterminal/debug_handler_state.hpp at line 5, boost/spirit/home/qi/nonterminal/detail/fcall.hpp at line 5, boost/spirit/home/qi/nonterminal/detail/parameterized.hpp at line 6, boost/spirit/home/qi/nonterminal/detail/parser_binder.hpp at line 5, boost/spirit/home/qi/nonterminal/error_handler.hpp at line 5, boost/spirit/home/qi/nonterminal/grammar.hpp at line 5, boost/spirit/home/qi/nonterminal/rule.hpp at line 5, boost/spirit/home/qi/nonterminal/simple_trace.hpp at line 6, boost/spirit/home/qi/nonterminal/success_handler.hpp at line 5, boost/spirit/home/qi/numeric.hpp at line 5, boost/spirit/home/qi/numeric/bool.hpp at line 6, boost/spirit/home/qi/numeric/bool_policies.hpp at line 5, boost/spirit/home/qi/numeric/detail/numeric_utils.hpp at line 9, boost/spirit/home/qi/numeric/detail/real_impl.hpp at line 7, boost/spirit/home/qi/numeric/int.hpp at line 6, boost/spirit/home/qi/numeric/numeric_utils.hpp at line 6, boost/spirit/home/qi/numeric/real.hpp at line 6, boost/spirit/home/qi/numeric/real_policies.hpp at line 6, boost/spirit/home/qi/numeric/uint.hpp at line 7, boost/spirit/home/qi/operator.hpp at line 5, boost/spirit/home/qi/operator/alternative.hpp at line 6, boost/spirit/home/qi/operator/and_predicate.hpp at line 5, boost/spirit/home/qi/operator/difference.hpp at line 5, boost/spirit/home/qi/operator/expect.hpp at line 6, boost/spirit/home/qi/operator/kleene.hpp at line 6, boost/spirit/home/qi/operator/list.hpp at line 6, boost/spirit/home/qi/operator/not_predicate.hpp at line 5, boost/spirit/home/qi/operator/optional.hpp at line 6, boost/spirit/home/qi/operator/permutation.hpp at line 5, boost/spirit/home/qi/operator/plus.hpp at line 6, boost/spirit/home/qi/operator/sequence.hpp at line 6, boost/spirit/home/qi/operator/sequence_base.hpp at line 6, boost/spirit/home/qi/operator/sequential_or.hpp at line 5, boost/spirit/home/qi/parse.hpp at line 6, boost/spirit/home/qi/parser.hpp at line 5, boost/spirit/home/qi/reference.hpp at line 5, boost/spirit/home/qi/skip_flag.hpp at line 5, boost/spirit/home/qi/skip_over.hpp at line 5, boost/spirit/home/qi/stream.hpp at line 5, boost/spirit/home/qi/stream/detail/iterator_source.hpp at line 5, boost/spirit/home/qi/stream/detail/match_manip.hpp at line 5, boost/spirit/home/qi/stream/detail/match_manip_auto.hpp at line 5, boost/spirit/home/qi/stream/match_manip.hpp at line 6, boost/spirit/home/qi/stream/match_manip_attr.hpp at line 6, boost/spirit/home/qi/stream/stream.hpp at line 5, boost/spirit/home/qi/string.hpp at line 5, boost/spirit/home/qi/string/detail/tst.hpp at line 5, boost/spirit/home/qi/string/lit.hpp at line 7, boost/spirit/home/qi/string/symbols.hpp at line 5, boost/spirit/home/qi/string/tst.hpp at line 5, boost/spirit/home/qi/string/tst_map.hpp at line 5, boost/spirit/home/qi/what.hpp at line 5, boost/spirit/home/support.hpp at line 5, boost/spirit/home/support/action_dispatch.hpp at line 7, boost/spirit/home/support/algorithm/any.hpp at line 5, boost/spirit/home/support/algorithm/any_if.hpp at line 6, boost/spirit/home/support/algorithm/any_if_ns.hpp at line 6, boost/spirit/home/support/algorithm/any_if_ns_so.hpp at line 6, boost/spirit/home/support/algorithm/any_ns.hpp at line 5, boost/spirit/home/support/algorithm/any_ns_so.hpp at line 5, boost/spirit/home/support/argument.hpp at line 7, boost/spirit/home/support/argument_expression.hpp at line 7, boost/spirit/home/support/attributes.hpp at line 6, boost/spirit/home/support/attributes_fwd.hpp at line 7, boost/spirit/home/support/auto.hpp at line 5, boost/spirit/home/support/char_class.hpp at line 6, boost/spirit/home/support/char_encoding/ascii.hpp at line 6, boost/spirit/home/support/char_encoding/iso8859_1.hpp at line 6, boost/spirit/home/support/char_encoding/standard.hpp at line 6, boost/spirit/home/support/char_encoding/standard_wide.hpp at line 6, boost/spirit/home/support/char_encoding/unicode.hpp at line 6, boost/spirit/home/support/char_encoding/unicode/category_table.hpp at line 5, boost/spirit/home/support/char_encoding/unicode/create_tables.cpp at line 5, boost/spirit/home/support/char_encoding/unicode/lowercase_table.hpp at line 5, boost/spirit/home/support/char_encoding/unicode/query.hpp at line 5, boost/spirit/home/support/char_encoding/unicode/script_table.hpp at line 5, boost/spirit/home/support/char_encoding/unicode/uppercase_table.hpp at line 5, boost/spirit/home/support/char_set/range.hpp at line 5, boost/spirit/home/support/char_set/range_functions.hpp at line 5, boost/spirit/home/support/char_set/range_run.hpp at line 5, boost/spirit/home/support/char_set/range_run_impl.hpp at line 5, boost/spirit/home/support/container.hpp at line 7, boost/spirit/home/support/context.hpp at line 7, boost/spirit/home/support/detail/as_variant.hpp at line 5, boost/spirit/home/support/detail/hold_any.hpp at line 8, boost/spirit/home/support/detail/is_spirit_tag.hpp at line 5, boost/spirit/home/support/detail/make_vector.hpp at line 5, boost/spirit/home/support/detail/pow10.hpp at line 7, boost/spirit/home/support/detail/sign.hpp at line 7, boost/spirit/home/support/detail/what_function.hpp at line 5, boost/spirit/home/support/extended_variant.hpp at line 5, boost/spirit/home/support/handles_container.hpp at line 5, boost/spirit/home/support/has_semantic_action.hpp at line 5, boost/spirit/home/support/info.hpp at line 5, boost/spirit/home/support/iterators/line_pos_iterator.hpp at line 7, boost/spirit/home/support/iterators/multi_pass_fwd.hpp at line 7, boost/spirit/home/support/lazy.hpp at line 5, boost/spirit/home/support/nonterminal/expand_arg.hpp at line 5, boost/spirit/home/support/nonterminal/extract_param.hpp at line 7, boost/spirit/home/support/nonterminal/locals.hpp at line 6, boost/spirit/home/support/sequence_base_id.hpp at line 5, boost/spirit/home/support/string_traits.hpp at line 7, boost/spirit/home/support/terminal.hpp at line 7, boost/spirit/home/support/terminal_expression.hpp at line 7, boost/spirit/home/support/unused.hpp at line 6, boost/spirit/home/support/utf8.hpp at line 5, boost/spirit/home/support/utree.hpp at line 5, boost/spirit/home/support/utree/detail/utree_detail1.hpp at line 7, boost/spirit/home/support/utree/detail/utree_detail2.hpp at line 7, boost/spirit/home/support/utree/operators.hpp at line 7, boost/spirit/home/support/utree/utree.hpp at line 7, boost/spirit/home/support/utree/utree_traits.hpp at line 7, boost/spirit/home/support/utree/utree_traits_fwd.hpp at line 5, boost/spirit/home/x3.hpp at line 5, boost/spirit/home/x3/auxiliary.hpp at line 6, boost/spirit/home/x3/auxiliary/any_parser.hpp at line 6, boost/spirit/home/x3/auxiliary/attr.hpp at line 7, boost/spirit/home/x3/auxiliary/eoi.hpp at line 6, boost/spirit/home/x3/auxiliary/eol.hpp at line 6, boost/spirit/home/x3/auxiliary/eps.hpp at line 5, boost/spirit/home/x3/auxiliary/guard.hpp at line 5, boost/spirit/home/x3/binary.hpp at line 5, boost/spirit/home/x3/binary/binary.hpp at line 6, boost/spirit/home/x3/char.hpp at line 5, boost/spirit/home/x3/char/any_char.hpp at line 5, boost/spirit/home/x3/char/char.hpp at line 5, boost/spirit/home/x3/char/char_class.hpp at line 5, boost/spirit/home/x3/char/char_class_tags.hpp at line 5, boost/spirit/home/x3/char/char_parser.hpp at line 5, boost/spirit/home/x3/char/char_set.hpp at line 5, boost/spirit/home/x3/char/detail/cast_char.hpp at line 6, boost/spirit/home/x3/char/literal_char.hpp at line 5, boost/spirit/home/x3/char/negated_char_parser.hpp at line 5, boost/spirit/home/x3/char/unicode.hpp at line 5, boost/spirit/home/x3/core.hpp at line 5, boost/spirit/home/x3/core/action.hpp at line 5, boost/spirit/home/x3/core/call.hpp at line 5, boost/spirit/home/x3/core/detail/parse_into_container.hpp at line 5, boost/spirit/home/x3/core/parse.hpp at line 5, boost/spirit/home/x3/core/parser.hpp at line 6, boost/spirit/home/x3/core/proxy.hpp at line 5, boost/spirit/home/x3/core/skip_over.hpp at line 5, boost/spirit/home/x3/directive.hpp at line 5, boost/spirit/home/x3/directive/confix.hpp at line 6, boost/spirit/home/x3/directive/expect.hpp at line 5, boost/spirit/home/x3/directive/lexeme.hpp at line 5, boost/spirit/home/x3/directive/matches.hpp at line 6, boost/spirit/home/x3/directive/no_case.hpp at line 5, boost/spirit/home/x3/directive/no_skip.hpp at line 7, boost/spirit/home/x3/directive/omit.hpp at line 5, boost/spirit/home/x3/directive/raw.hpp at line 5, boost/spirit/home/x3/directive/repeat.hpp at line 7, boost/spirit/home/x3/directive/seek.hpp at line 6, boost/spirit/home/x3/directive/skip.hpp at line 6, boost/spirit/home/x3/directive/with.hpp at line 5, boost/spirit/home/x3/nonterminal.hpp at line 5, boost/spirit/home/x3/nonterminal/debug_handler_state.hpp at line 5, boost/spirit/home/x3/nonterminal/detail/rule.hpp at line 5, boost/spirit/home/x3/nonterminal/detail/transform_attribute.hpp at line 6, boost/spirit/home/x3/nonterminal/rule.hpp at line 5, boost/spirit/home/x3/nonterminal/simple_trace.hpp at line 6, boost/spirit/home/x3/numeric.hpp at line 5, boost/spirit/home/x3/numeric/bool.hpp at line 6, boost/spirit/home/x3/numeric/bool_policies.hpp at line 6, boost/spirit/home/x3/numeric/int.hpp at line 5, boost/spirit/home/x3/numeric/real.hpp at line 5, boost/spirit/home/x3/numeric/real_policies.hpp at line 6, boost/spirit/home/x3/numeric/uint.hpp at line 6, boost/spirit/home/x3/operator.hpp at line 5, boost/spirit/home/x3/operator/alternative.hpp at line 5, boost/spirit/home/x3/operator/and_predicate.hpp at line 5, boost/spirit/home/x3/operator/detail/alternative.hpp at line 5, boost/spirit/home/x3/operator/detail/sequence.hpp at line 5, boost/spirit/home/x3/operator/difference.hpp at line 5, boost/spirit/home/x3/operator/kleene.hpp at line 6, boost/spirit/home/x3/operator/list.hpp at line 6, boost/spirit/home/x3/operator/not_predicate.hpp at line 5, boost/spirit/home/x3/operator/optional.hpp at line 6, boost/spirit/home/x3/operator/plus.hpp at line 6, boost/spirit/home/x3/operator/sequence.hpp at line 5, boost/spirit/home/x3/string.hpp at line 5, boost/spirit/home/x3/string/detail/no_case_string_parse.hpp at line 5, boost/spirit/home/x3/string/detail/string_parse.hpp at line 5, boost/spirit/home/x3/string/detail/tst.hpp at line 5, boost/spirit/home/x3/string/literal_string.hpp at line 5, boost/spirit/home/x3/string/symbols.hpp at line 6, boost/spirit/home/x3/string/tst.hpp at line 5, boost/spirit/home/x3/string/tst_map.hpp at line 5, boost/spirit/home/x3/support/ast/position_tagged.hpp at line 5, boost/spirit/home/x3/support/ast/variant.hpp at line 5, boost/spirit/home/x3/support/context.hpp at line 6, boost/spirit/home/x3/support/no_case.hpp at line 5, boost/spirit/home/x3/support/numeric_utils/detail/extract_int.hpp at line 9, boost/spirit/home/x3/support/numeric_utils/extract_int.hpp at line 6, boost/spirit/home/x3/support/numeric_utils/extract_real.hpp at line 7, boost/spirit/home/x3/support/numeric_utils/pow10.hpp at line 7, boost/spirit/home/x3/support/numeric_utils/sign.hpp at line 7, boost/spirit/home/x3/support/subcontext.hpp at line 7, boost/spirit/home/x3/support/traits/attribute_category.hpp at line 6, boost/spirit/home/x3/support/traits/attribute_of.hpp at line 7, boost/spirit/home/x3/support/traits/attribute_type.hpp at line 6, boost/spirit/home/x3/support/traits/container_traits.hpp at line 7, boost/spirit/home/x3/support/traits/handles_container.hpp at line 6, boost/spirit/home/x3/support/traits/has_attribute.hpp at line 7, boost/spirit/home/x3/support/traits/is_parser.hpp at line 6, boost/spirit/home/x3/support/traits/is_range.hpp at line 6, boost/spirit/home/x3/support/traits/is_substitute.hpp at line 6, boost/spirit/home/x3/support/traits/is_variant.hpp at line 6, boost/spirit/home/x3/support/traits/make_attribute.hpp at line 7, boost/spirit/home/x3/support/traits/move_to.hpp at line 7, boost/spirit/home/x3/support/traits/optional_traits.hpp at line 7, boost/spirit/home/x3/support/traits/print_attribute.hpp at line 6, boost/spirit/home/x3/support/traits/print_token.hpp at line 6, boost/spirit/home/x3/support/traits/string_traits.hpp at line 7, boost/spirit/home/x3/support/traits/transform_attribute.hpp at line 7, boost/spirit/home/x3/support/traits/tuple_traits.hpp at line 5, boost/spirit/home/x3/support/traits/value_traits.hpp at line 7, boost/spirit/home/x3/support/traits/variant_find_substitute.hpp at line 6, boost/spirit/home/x3/support/traits/variant_has_substitute.hpp at line 6, boost/spirit/home/x3/support/unused.hpp at line 6, boost/spirit/home/x3/support/utility/annotate_on_success.hpp at line 5, boost/spirit/home/x3/support/utility/error_reporting.hpp at line 5, boost/spirit/home/x3/support/utility/is_callable.hpp at line 5, boost/spirit/home/x3/support/utility/lambda_visitor.hpp at line 5, boost/spirit/home/x3/support/utility/sfinae.hpp at line 6, boost/spirit/home/x3/support/utility/testing.hpp at line 5, boost/spirit/home/x3/support/utility/unrefcv.hpp at line 5, boost/spirit/home/x3/support/utility/utf8.hpp at line 5, boost/spirit/include/karma.hpp at line 7, boost/spirit/include/karma_action.hpp at line 7, boost/spirit/include/karma_alternative.hpp at line 7, boost/spirit/include/karma_and_predicate.hpp at line 7, boost/spirit/include/karma_as.hpp at line 8, boost/spirit/include/karma_attr_cast.hpp at line 7, boost/spirit/include/karma_auto.hpp at line 7, boost/spirit/include/karma_auxiliary.hpp at line 7, boost/spirit/include/karma_binary.hpp at line 7, boost/spirit/include/karma_bool.hpp at line 7, boost/spirit/include/karma_buffer.hpp at line 7, boost/spirit/include/karma_center_alignment.hpp at line 7, boost/spirit/include/karma_char.hpp at line 7, boost/spirit/include/karma_char_.hpp at line 7, boost/spirit/include/karma_char_class.hpp at line 7, boost/spirit/include/karma_columns.hpp at line 7, boost/spirit/include/karma_delimit.hpp at line 7, boost/spirit/include/karma_directive.hpp at line 7, boost/spirit/include/karma_domain.hpp at line 7, boost/spirit/include/karma_duplicate.hpp at line 7, boost/spirit/include/karma_eol.hpp at line 7, boost/spirit/include/karma_eps.hpp at line 7, boost/spirit/include/karma_format.hpp at line 7, boost/spirit/include/karma_format_attr.hpp at line 7, boost/spirit/include/karma_format_auto.hpp at line 7, boost/spirit/include/karma_generate.hpp at line 7, boost/spirit/include/karma_generate_attr.hpp at line 7, boost/spirit/include/karma_generate_auto.hpp at line 7, boost/spirit/include/karma_grammar.hpp at line 7, boost/spirit/include/karma_int.hpp at line 7, boost/spirit/include/karma_kleene.hpp at line 7, boost/spirit/include/karma_lazy.hpp at line 7, boost/spirit/include/karma_left_alignment.hpp at line 7, boost/spirit/include/karma_list.hpp at line 7, boost/spirit/include/karma_maxwidth.hpp at line 7, boost/spirit/include/karma_no_delimit.hpp at line 7, boost/spirit/include/karma_nonterminal.hpp at line 7, boost/spirit/include/karma_not_predicate.hpp at line 7, boost/spirit/include/karma_numeric.hpp at line 7, boost/spirit/include/karma_omit.hpp at line 7, boost/spirit/include/karma_operator.hpp at line 7, boost/spirit/include/karma_optional.hpp at line 7, boost/spirit/include/karma_phoenix_attributes.hpp at line 7, boost/spirit/include/karma_plus.hpp at line 7, boost/spirit/include/karma_real.hpp at line 7, boost/spirit/include/karma_repeat.hpp at line 7, boost/spirit/include/karma_right_alignment.hpp at line 7, boost/spirit/include/karma_rule.hpp at line 7, boost/spirit/include/karma_sequence.hpp at line 7, boost/spirit/include/karma_stream.hpp at line 7, boost/spirit/include/karma_strict_relaxed.hpp at line 7, boost/spirit/include/karma_string.hpp at line 7, boost/spirit/include/karma_symbols.hpp at line 7, boost/spirit/include/karma_uint.hpp at line 7, boost/spirit/include/karma_upper_lower_case.hpp at line 7, boost/spirit/include/karma_verbatim.hpp at line 7, boost/spirit/include/karma_what.hpp at line 7, boost/spirit/include/lex.hpp at line 7, boost/spirit/include/lex_char_token_def.hpp at line 7, boost/spirit/include/lex_domain.hpp at line 7, boost/spirit/include/lex_generate_static_lexertl.hpp at line 7, boost/spirit/include/lex_lexer.hpp at line 7, boost/spirit/include/lex_lexertl.hpp at line 7, boost/spirit/include/lex_lexertl_position_token.hpp at line 7, boost/spirit/include/lex_lexertl_token.hpp at line 7, boost/spirit/include/lex_plain_token.hpp at line 7, boost/spirit/include/lex_primitives.hpp at line 7, boost/spirit/include/lex_static_lexertl.hpp at line 7, boost/spirit/include/lex_tokenize_and_parse.hpp at line 7, boost/spirit/include/lex_tokenize_and_parse_attr.hpp at line 7, boost/spirit/include/phoenix.hpp at line 7, boost/spirit/include/phoenix_algorithm.hpp at line 7, boost/spirit/include/phoenix_bind.hpp at line 7, boost/spirit/include/phoenix_container.hpp at line 7, boost/spirit/include/phoenix_core.hpp at line 7, boost/spirit/include/phoenix_function.hpp at line 7, boost/spirit/include/phoenix_fusion.hpp at line 7, boost/spirit/include/phoenix_limits.hpp at line 7, boost/spirit/include/phoenix_object.hpp at line 7, boost/spirit/include/phoenix_operator.hpp at line 7, boost/spirit/include/phoenix_scope.hpp at line 7, boost/spirit/include/phoenix_statement.hpp at line 7, boost/spirit/include/phoenix_stl.hpp at line 7, boost/spirit/include/phoenix_version.hpp at line 7, boost/spirit/include/qi.hpp at line 7, boost/spirit/include/qi_action.hpp at line 7, boost/spirit/include/qi_alternative.hpp at line 7, boost/spirit/include/qi_and_predicate.hpp at line 7, boost/spirit/include/qi_as.hpp at line 8, boost/spirit/include/qi_as_string.hpp at line 7, boost/spirit/include/qi_attr.hpp at line 7, boost/spirit/include/qi_attr_cast.hpp at line 7, boost/spirit/include/qi_auto.hpp at line 7, boost/spirit/include/qi_auxiliary.hpp at line 7, boost/spirit/include/qi_binary.hpp at line 7, boost/spirit/include/qi_bool.hpp at line 7, boost/spirit/include/qi_char.hpp at line 7, boost/spirit/include/qi_char_.hpp at line 7, boost/spirit/include/qi_char_class.hpp at line 7, boost/spirit/include/qi_copy.hpp at line 6, boost/spirit/include/qi_core.hpp at line 7, boost/spirit/include/qi_difference.hpp at line 7, boost/spirit/include/qi_directive.hpp at line 7, boost/spirit/include/qi_domain.hpp at line 7, boost/spirit/include/qi_eoi.hpp at line 7, boost/spirit/include/qi_eol.hpp at line 7, boost/spirit/include/qi_eps.hpp at line 7, boost/spirit/include/qi_expect.hpp at line 7, boost/spirit/include/qi_grammar.hpp at line 7, boost/spirit/include/qi_hold.hpp at line 7, boost/spirit/include/qi_int.hpp at line 7, boost/spirit/include/qi_kleene.hpp at line 7, boost/spirit/include/qi_lazy.hpp at line 7, boost/spirit/include/qi_lexeme.hpp at line 7, boost/spirit/include/qi_list.hpp at line 7, boost/spirit/include/qi_lit.hpp at line 7, boost/spirit/include/qi_match.hpp at line 7, boost/spirit/include/qi_match_attr.hpp at line 7, boost/spirit/include/qi_match_auto.hpp at line 7, boost/spirit/include/qi_matches.hpp at line 7, boost/spirit/include/qi_no_case.hpp at line 7, boost/spirit/include/qi_no_skip.hpp at line 7, boost/spirit/include/qi_nonterminal.hpp at line 7, boost/spirit/include/qi_not_predicate.hpp at line 7, boost/spirit/include/qi_numeric.hpp at line 7, boost/spirit/include/qi_omit.hpp at line 7, boost/spirit/include/qi_operator.hpp at line 7, boost/spirit/include/qi_optional.hpp at line 7, boost/spirit/include/qi_parse.hpp at line 7, boost/spirit/include/qi_parse_attr.hpp at line 7, boost/spirit/include/qi_parse_auto.hpp at line 7, boost/spirit/include/qi_permutation.hpp at line 7, boost/spirit/include/qi_plus.hpp at line 7, boost/spirit/include/qi_raw.hpp at line 7, boost/spirit/include/qi_real.hpp at line 7, boost/spirit/include/qi_repeat.hpp at line 7, boost/spirit/include/qi_rule.hpp at line 7, boost/spirit/include/qi_sequence.hpp at line 7, boost/spirit/include/qi_sequential_or.hpp at line 7, boost/spirit/include/qi_skip.hpp at line 7, boost/spirit/include/qi_stream.hpp at line 7, boost/spirit/include/qi_string.hpp at line 7, boost/spirit/include/qi_symbols.hpp at line 7, boost/spirit/include/qi_uint.hpp at line 7, boost/spirit/include/qi_what.hpp at line 7, boost/spirit/include/support.hpp at line 7, boost/spirit/include/support_adapt_adt_attributes.hpp at line 7, boost/spirit/include/support_any.hpp at line 7, boost/spirit/include/support_any_if.hpp at line 7, boost/spirit/include/support_any_if_ns.hpp at line 7, boost/spirit/include/support_any_if_ns_so.hpp at line 7, boost/spirit/include/support_any_ns.hpp at line 7, boost/spirit/include/support_any_ns_so.hpp at line 7, boost/spirit/include/support_argument.hpp at line 7, boost/spirit/include/support_ascii.hpp at line 7, boost/spirit/include/support_attributes.hpp at line 7, boost/spirit/include/support_attributes_fwd.hpp at line 7, boost/spirit/include/support_auto.hpp at line 6, boost/spirit/include/support_char_class.hpp at line 7, boost/spirit/include/support_container.hpp at line 7, boost/spirit/include/support_extended_variant.hpp at line 7, boost/spirit/include/support_info.hpp at line 6, boost/spirit/include/support_iso8859_1.hpp at line 7, boost/spirit/include/support_istream_iterator.hpp at line 7, boost/spirit/include/support_line_pos_iterator.hpp at line 8, boost/spirit/include/support_locals.hpp at line 7, boost/spirit/include/support_look_ahead.hpp at line 7, boost/spirit/include/support_modify.hpp at line 7, boost/spirit/include/support_multi_pass.hpp at line 7, boost/spirit/include/support_multi_pass_fwd.hpp at line 7, boost/spirit/include/support_ostream_iterator.hpp at line 7, boost/spirit/include/support_standard.hpp at line 7, boost/spirit/include/support_standard_wide.hpp at line 7, boost/spirit/include/support_string_traits.hpp at line 7, boost/spirit/include/support_unused.hpp at line 7, boost/spirit/include/support_utree.hpp at line 7, boost/spirit/repository/home/qi/directive/kwd.hpp at line 6, boost/spirit/repository/home/qi/directive/seek.hpp at line 5, boost/spirit/repository/home/qi/nonterminal/subrule.hpp at line 6, boost/spirit/repository/home/qi/operator/keywords.hpp at line 6, boost/spirit/repository/home/support/seek.hpp at line 5, boost/spirit/repository/home/support/subrule_context.hpp at line 6, boost/spirit/repository/include/karma.hpp at line 7, boost/spirit/repository/include/karma_confix.hpp at line 7, boost/spirit/repository/include/karma_directive.hpp at line 7, boost/spirit/repository/include/karma_nonterminal.hpp at line 8, boost/spirit/repository/include/karma_subrule.hpp at line 8, boost/spirit/repository/include/qi.hpp at line 7, boost/spirit/repository/include/qi_advance.hpp at line 6, boost/spirit/repository/include/qi_confix.hpp at line 7, boost/spirit/repository/include/qi_directive.hpp at line 7, boost/spirit/repository/include/qi_distinct.hpp at line 7, boost/spirit/repository/include/qi_flush_multi_pass.hpp at line 7, boost/spirit/repository/include/qi_iter_pos.hpp at line 7, boost/spirit/repository/include/qi_keywords.hpp at line 8, boost/spirit/repository/include/qi_kwd.hpp at line 27, boost/spirit/repository/include/qi_kwd.hpp at line 8, boost/spirit/repository/include/qi_nonterminal.hpp at line 8, boost/spirit/repository/include/qi_primitive.hpp at line 7, boost/spirit/repository/include/qi_seek.hpp at line 5, boost/spirit/repository/include/qi_subrule.hpp at line 8, boost/wave/cpplexer/re2clex/aq.hpp at line 9, boost/wave/cpplexer/re2clex/scanner.hpp at line 9, boost/wave/whitespace_handling.hpp at line 10
- License text:
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/detail/fenv.hpp [4:5]
- boost/detail/is_sorted.hpp [4:5]
- boost/fusion/adapted.hpp [5:6]
- boost/fusion/adapted/adt.hpp [6:7]
- boost/fusion/adapted/adt/adapt_adt.hpp [7:8]
- boost/fusion/adapted/adt/adapt_adt_named.hpp [6:7]
- boost/fusion/adapted/adt/adapt_assoc_adt.hpp [7:8]
- boost/fusion/adapted/adt/adapt_assoc_adt_named.hpp [4:5]
- boost/fusion/adapted/adt/detail/adapt_base.hpp [6:7]
- boost/fusion/adapted/adt/detail/adapt_base_assoc_attr_filler.hpp [4:5]
- boost/fusion/adapted/adt/detail/adapt_base_attr_filler.hpp [4:5]
- boost/fusion/adapted/adt/detail/extension.hpp [6:7]
- boost/fusion/adapted/array/deref_impl.hpp [4:5]
- boost/fusion/adapted/array/size_impl.hpp [4:5]
- boost/fusion/adapted/array/value_of_impl.hpp [4:5]
- boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp [4:5]
- boost/fusion/adapted/boost_tuple/detail/build_cons.hpp [4:5]
- boost/fusion/adapted/boost_tuple/detail/convert_impl.hpp [4:5]
- boost/fusion/adapted/boost_tuple/mpl/clear.hpp [4:5]
- boost/fusion/adapted/mpl.hpp [5:6]
- boost/fusion/adapted/mpl/detail/empty_impl.hpp [5:6]
- boost/fusion/adapted/std_pair.hpp [6:7]
- boost/fusion/adapted/std_tuple.hpp [4:5]
- boost/fusion/adapted/std_tuple/detail/at_impl.hpp [4:5]
- boost/fusion/adapted/std_tuple/detail/begin_impl.hpp [4:5]
- boost/fusion/adapted/std_tuple/detail/build_std_tuple.hpp [4:5]
- boost/fusion/adapted/std_tuple/detail/category_of_impl.hpp [4:5]
- boost/fusion/adapted/std_tuple/detail/convert_impl.hpp [4:5]
- boost/fusion/adapted/std_tuple/detail/end_impl.hpp [4:5]
- boost/fusion/adapted/std_tuple/detail/is_sequence_impl.hpp [4:5]
- boost/fusion/adapted/std_tuple/detail/is_view_impl.hpp [4:5]
- boost/fusion/adapted/std_tuple/detail/size_impl.hpp [4:5]
- boost/fusion/adapted/std_tuple/detail/value_at_impl.hpp [4:5]
- boost/fusion/adapted/std_tuple/mpl/clear.hpp [4:5]
- boost/fusion/adapted/std_tuple/std_tuple_iterator.hpp [4:5]
- boost/fusion/adapted/std_tuple/tag_of.hpp [4:5]
- boost/fusion/adapted/struct.hpp [6:7]
- boost/fusion/adapted/struct/adapt_assoc_struct.hpp [6:7]
- boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp [4:5]
- boost/fusion/adapted/struct/adapt_struct.hpp [6:7]
- boost/fusion/adapted/struct/adapt_struct_named.hpp [6:7]
- boost/fusion/adapted/struct/define_assoc_struct.hpp [4:5]
- boost/fusion/adapted/struct/define_struct.hpp [4:5]
- boost/fusion/adapted/struct/define_struct_inline.hpp [4:5]
- boost/fusion/adapted/struct/detail/adapt_auto.hpp [4:5]
- boost/fusion/adapted/struct/detail/adapt_base.hpp [7:8]
- boost/fusion/adapted/struct/detail/adapt_base_assoc_attr_filler.hpp [4:5]
- boost/fusion/adapted/struct/detail/adapt_base_attr_filler.hpp [4:5]
- boost/fusion/adapted/struct/detail/adapt_is_tpl.hpp [4:5]
- boost/fusion/adapted/struct/detail/at_impl.hpp [6:7]
- boost/fusion/adapted/struct/detail/begin_impl.hpp [6:7]
- boost/fusion/adapted/struct/detail/category_of_impl.hpp [6:7]
- boost/fusion/adapted/struct/detail/define_struct.hpp [4:5]
- boost/fusion/adapted/struct/detail/define_struct_inline.hpp [4:5]
- boost/fusion/adapted/struct/detail/deref_data_impl.hpp [4:5]
- boost/fusion/adapted/struct/detail/deref_impl.hpp [4:5]
- boost/fusion/adapted/struct/detail/end_impl.hpp [6:7]
- boost/fusion/adapted/struct/detail/extension.hpp [6:7]
- boost/fusion/adapted/struct/detail/is_sequence_impl.hpp [6:7]
- boost/fusion/adapted/struct/detail/is_view_impl.hpp [6:7]
- boost/fusion/adapted/struct/detail/key_of_impl.hpp [4:5]
- boost/fusion/adapted/struct/detail/namespace.hpp [5:6]
- boost/fusion/adapted/struct/detail/preprocessor/is_seq.hpp [8:9]
- boost/fusion/adapted/struct/detail/proxy_type.hpp [5:6]
- boost/fusion/adapted/struct/detail/size_impl.hpp [6:7]
- boost/fusion/adapted/struct/detail/value_at_impl.hpp [6:7]
- boost/fusion/adapted/struct/detail/value_of_data_impl.hpp [4:5]
- boost/fusion/adapted/struct/detail/value_of_impl.hpp [4:5]
- boost/fusion/algorithm/auxiliary.hpp [4:5]
- boost/fusion/algorithm/auxiliary/copy.hpp [4:5]
- boost/fusion/algorithm/auxiliary/move.hpp [4:5]
- boost/fusion/algorithm/iteration/detail/fold.hpp [7:8]
- boost/fusion/algorithm/iteration/detail/preprocessed/fold.hpp [6:7]
- boost/fusion/algorithm/iteration/detail/preprocessed/iter_fold.hpp [5:6]
- boost/fusion/algorithm/iteration/detail/preprocessed/reverse_fold.hpp [5:6]
- boost/fusion/algorithm/iteration/detail/preprocessed/reverse_iter_fold.hpp [5:6]
- boost/fusion/algorithm/iteration/fold.hpp [7:8]
- boost/fusion/algorithm/iteration/fold.hpp [39:40]
- boost/fusion/algorithm/iteration/fold_fwd.hpp [4:5]
- boost/fusion/algorithm/iteration/iter_fold.hpp [6:7]
- boost/fusion/algorithm/iteration/iter_fold.hpp [40:41]
- boost/fusion/algorithm/iteration/iter_fold_fwd.hpp [4:5]
- boost/fusion/algorithm/iteration/reverse_fold.hpp [6:7]
- boost/fusion/algorithm/iteration/reverse_fold.hpp [40:41]
- boost/fusion/algorithm/iteration/reverse_fold_fwd.hpp [4:5]
- boost/fusion/algorithm/iteration/reverse_iter_fold.hpp [6:7]
- boost/fusion/algorithm/iteration/reverse_iter_fold.hpp [40:41]
- boost/fusion/algorithm/iteration/reverse_iter_fold_fwd.hpp [4:5]
- boost/fusion/algorithm/transformation/detail/preprocessed/zip.hpp [4:5]
- boost/fusion/algorithm/transformation/erase.hpp [4:5]
- boost/fusion/algorithm/transformation/flatten.hpp [4:5]
- boost/fusion/algorithm/transformation/insert.hpp [4:5]
- boost/fusion/algorithm/transformation/insert_range.hpp [4:5]
- boost/fusion/algorithm/transformation/pop_back.hpp [4:5]
- boost/fusion/algorithm/transformation/zip.hpp [5:6]
- boost/fusion/algorithm/transformation/zip.hpp [46:47]
- boost/fusion/container.hpp [4:5]
- boost/fusion/container/deque.hpp [5:6]
- boost/fusion/container/deque/back_extended_deque.hpp [5:6]
- boost/fusion/container/deque/convert.hpp [5:6]
- boost/fusion/container/deque/deque.hpp [5:6]
- boost/fusion/container/deque/deque_fwd.hpp [5:6]
- boost/fusion/container/deque/deque_iterator.hpp [5:6]
- boost/fusion/container/deque/detail/at_impl.hpp [5:6]
- boost/fusion/container/deque/detail/begin_impl.hpp [5:6]
- boost/fusion/container/deque/detail/build_deque.hpp [4:5]
- boost/fusion/container/deque/detail/convert_impl.hpp [6:7]
- boost/fusion/container/deque/detail/cpp03/as_deque.hpp [5:6]
- boost/fusion/container/deque/detail/cpp03/as_deque.hpp [68:69]
- boost/fusion/container/deque/detail/cpp03/build_deque.hpp [4:5]
- boost/fusion/container/deque/detail/cpp03/deque.hpp [5:6]
- boost/fusion/container/deque/detail/cpp03/deque.hpp [53:54]
- boost/fusion/container/deque/detail/cpp03/deque_forward_ctor.hpp [5:6]
- boost/fusion/container/deque/detail/cpp03/deque_fwd.hpp [5:6]
- boost/fusion/container/deque/detail/cpp03/deque_fwd.hpp [28:29]
- boost/fusion/container/deque/detail/cpp03/deque_initial_size.hpp [5:6]
- boost/fusion/container/deque/detail/cpp03/deque_initial_size.hpp [37:38]
- boost/fusion/container/deque/detail/cpp03/deque_keyed_values.hpp [5:6]
- boost/fusion/container/deque/detail/cpp03/deque_keyed_values.hpp [45:46]
- boost/fusion/container/deque/detail/cpp03/deque_keyed_values_call.hpp [5:6]
- boost/fusion/container/deque/detail/cpp03/limits.hpp [5:6]
- boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque.hpp [4:5]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque.hpp [4:5]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque10_fwd.hpp [4:5]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque_fwd.hpp [4:5]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size.hpp [4:5]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size10.hpp [4:5]
- boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values.hpp [4:5]
- boost/fusion/container/deque/detail/deque_keyed_values.hpp [5:6]
- boost/fusion/container/deque/detail/end_impl.hpp [5:6]
- boost/fusion/container/deque/detail/is_sequence_impl.hpp [4:5]
- boost/fusion/container/deque/detail/keyed_element.hpp [5:6]
- boost/fusion/container/deque/detail/value_at_impl.hpp [5:6]
- boost/fusion/container/deque/front_extended_deque.hpp [5:6]
- boost/fusion/container/generation.hpp [4:5]
- boost/fusion/container/generation/deque_tie.hpp [4:5]
- boost/fusion/container/generation/detail/pp_deque_tie.hpp [5:6]
- boost/fusion/container/generation/detail/pp_deque_tie.hpp [30:31]
- boost/fusion/container/generation/detail/pp_list_tie.hpp [4:5]
- boost/fusion/container/generation/detail/pp_list_tie.hpp [29:30]
- boost/fusion/container/generation/detail/pp_make_deque.hpp [5:6]
- boost/fusion/container/generation/detail/pp_make_deque.hpp [30:31]
- boost/fusion/container/generation/detail/pp_make_list.hpp [4:5]
- boost/fusion/container/generation/detail/pp_make_list.hpp [29:30]
- boost/fusion/container/generation/detail/pp_make_map.hpp [4:5]
- boost/fusion/container/generation/detail/pp_make_map.hpp [30:31]
- boost/fusion/container/generation/detail/pp_make_set.hpp [4:5]
- boost/fusion/container/generation/detail/pp_make_set.hpp [31:32]
- boost/fusion/container/generation/detail/pp_make_vector.hpp [4:5]
- boost/fusion/container/generation/detail/pp_make_vector.hpp [29:30]
- boost/fusion/container/generation/detail/pp_map_tie.hpp [5:6]
- boost/fusion/container/generation/detail/pp_map_tie.hpp [33:34]
- boost/fusion/container/generation/detail/pp_vector_tie.hpp [4:5]
- boost/fusion/container/generation/detail/pp_vector_tie.hpp [29:30]
- boost/fusion/container/generation/detail/preprocessed/deque_tie.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/deque_tie10.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/list_tie.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/list_tie10.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/make_deque.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/make_list.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/make_map.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/make_set.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/make_vector.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/map_tie.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/vector_tie.hpp [4:5]
- boost/fusion/container/generation/detail/preprocessed/vector_tie10.hpp [4:5]
- boost/fusion/container/generation/list_tie.hpp [4:5]
- boost/fusion/container/generation/make_deque.hpp [4:5]
- boost/fusion/container/generation/make_list.hpp [4:5]
- boost/fusion/container/generation/make_map.hpp [4:5]
- boost/fusion/container/generation/make_set.hpp [4:5]
- boost/fusion/container/generation/make_vector.hpp [4:5]
- boost/fusion/container/generation/map_tie.hpp [4:5]
- boost/fusion/container/generation/vector_tie.hpp [4:5]
- boost/fusion/container/list.hpp [4:5]
- boost/fusion/container/list/cons_fwd.hpp [5:6]
- boost/fusion/container/list/convert.hpp [4:5]
- boost/fusion/container/list/detail/at_impl.hpp [4:5]
- boost/fusion/container/list/detail/convert_impl.hpp [5:6]
- boost/fusion/container/list/detail/cpp03/limits.hpp [4:5]
- boost/fusion/container/list/detail/cpp03/list.hpp [4:5]
- boost/fusion/container/list/detail/cpp03/list.hpp [28:29]
- boost/fusion/container/list/detail/cpp03/list_fwd.hpp [4:5]
- boost/fusion/container/list/detail/cpp03/list_fwd.hpp [24:25]
- boost/fusion/container/list/detail/cpp03/list_to_cons.hpp [4:5]
- boost/fusion/container/list/detail/cpp03/list_to_cons.hpp [36:37]
- boost/fusion/container/list/detail/cpp03/preprocessed/list.hpp [4:5]
- boost/fusion/container/list/detail/cpp03/preprocessed/list10_fwd.hpp [4:5]
- boost/fusion/container/list/detail/cpp03/preprocessed/list_fwd.hpp [4:5]
- boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons.hpp [4:5]
- boost/fusion/container/list/detail/list_to_cons.hpp [4:5]
- boost/fusion/container/list/detail/reverse_cons.hpp [4:5]
- boost/fusion/container/list/list.hpp [4:5]
- boost/fusion/container/list/list_fwd.hpp [4:5]
- boost/fusion/container/map.hpp [4:5]
- boost/fusion/container/map/convert.hpp [4:5]
- boost/fusion/container/map/detail/at_impl.hpp [4:5]
- boost/fusion/container/map/detail/at_key_impl.hpp [4:5]
- boost/fusion/container/map/detail/begin_impl.hpp [4:5]
- boost/fusion/container/map/detail/build_map.hpp [4:5]
- boost/fusion/container/map/detail/cpp03/as_map.hpp [4:5]
- boost/fusion/container/map/detail/cpp03/as_map.hpp [67:68]
- boost/fusion/container/map/detail/cpp03/begin_impl.hpp [5:6]
- boost/fusion/container/map/detail/cpp03/convert.hpp [4:5]
- boost/fusion/container/map/detail/cpp03/convert_impl.hpp [5:6]
- boost/fusion/container/map/detail/cpp03/deref_data_impl.hpp [4:5]
- boost/fusion/container/map/detail/cpp03/deref_impl.hpp [4:5]
- boost/fusion/container/map/detail/cpp03/end_impl.hpp [5:6]
- boost/fusion/container/map/detail/cpp03/key_of_impl.hpp [4:5]
- boost/fusion/container/map/detail/cpp03/limits.hpp [4:5]
- boost/fusion/container/map/detail/cpp03/map.hpp [4:5]
- boost/fusion/container/map/detail/cpp03/map.hpp [47:48]
- boost/fusion/container/map/detail/cpp03/map_fwd.hpp [4:5]
- boost/fusion/container/map/detail/cpp03/map_fwd.hpp [24:25]
- boost/fusion/container/map/detail/cpp03/preprocessed/as_map.hpp [4:5]
- boost/fusion/container/map/detail/cpp03/preprocessed/map.hpp [4:5]
- boost/fusion/container/map/detail/cpp03/preprocessed/map10_fwd.hpp [4:5]
- boost/fusion/container/map/detail/cpp03/preprocessed/map_fwd.hpp [4:5]
- boost/fusion/container/map/detail/cpp03/value_of_data_impl.hpp [4:5]
- boost/fusion/container/map/detail/cpp03/value_of_impl.hpp [4:5]
- boost/fusion/container/map/detail/end_impl.hpp [4:5]
- boost/fusion/container/map/detail/map_impl.hpp [4:5]
- boost/fusion/container/map/detail/map_index.hpp [4:5]
- boost/fusion/container/map/detail/value_at_impl.hpp [4:5]
- boost/fusion/container/map/detail/value_at_key_impl.hpp [4:5]
- boost/fusion/container/map/map.hpp [4:5]
- boost/fusion/container/map/map_fwd.hpp [4:5]
- boost/fusion/container/map/map_iterator.hpp [5:6]
- boost/fusion/container/set.hpp [4:5]
- boost/fusion/container/set/convert.hpp [4:5]
- boost/fusion/container/set/detail/as_set.hpp [4:5]
- boost/fusion/container/set/detail/begin_impl.hpp [5:6]
- boost/fusion/container/set/detail/convert_impl.hpp [5:6]
- boost/fusion/container/set/detail/cpp03/as_set.hpp [4:5]
- boost/fusion/container/set/detail/cpp03/as_set.hpp [67:68]
- boost/fusion/container/set/detail/cpp03/limits.hpp [4:5]
- boost/fusion/container/set/detail/cpp03/preprocessed/as_set.hpp [4:5]
- boost/fusion/container/set/detail/cpp03/preprocessed/set.hpp [4:5]
- boost/fusion/container/set/detail/cpp03/preprocessed/set10_fwd.hpp [4:5]
- boost/fusion/container/set/detail/cpp03/preprocessed/set_fwd.hpp [4:5]
- boost/fusion/container/set/detail/cpp03/set.hpp [4:5]
- boost/fusion/container/set/detail/cpp03/set.hpp [40:41]
- boost/fusion/container/set/detail/cpp03/set_fwd.hpp [4:5]
- boost/fusion/container/set/detail/cpp03/set_fwd.hpp [24:25]
- boost/fusion/container/set/detail/deref_data_impl.hpp [4:5]
- boost/fusion/container/set/detail/deref_impl.hpp [4:5]
- boost/fusion/container/set/detail/end_impl.hpp [5:6]
- boost/fusion/container/set/detail/key_of_impl.hpp [4:5]
- boost/fusion/container/set/detail/value_of_data_impl.hpp [4:5]
- boost/fusion/container/set/detail/value_of_impl.hpp [4:5]
- boost/fusion/container/set/set.hpp [4:5]
- boost/fusion/container/set/set_fwd.hpp [4:5]
- boost/fusion/container/vector.hpp [4:5]
- boost/fusion/container/vector/convert.hpp [4:5]
- boost/fusion/container/vector/detail/as_vector.hpp [4:5]
- boost/fusion/container/vector/detail/at_impl.hpp [4:5]
- boost/fusion/container/vector/detail/config.hpp [4:5]
- boost/fusion/container/vector/detail/convert_impl.hpp [5:6]
- boost/fusion/container/vector/detail/cpp03/as_vector.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/as_vector.hpp [67:68]
- boost/fusion/container/vector/detail/cpp03/limits.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector10_fwd.hpp [5:6]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser10.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vector_fwd.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10_fwd.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/value_at_impl.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/vector.hpp [5:6]
- boost/fusion/container/vector/detail/cpp03/vector.hpp [72:73]
- boost/fusion/container/vector/detail/cpp03/vector10.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/vector10.hpp [75:76]
- boost/fusion/container/vector/detail/cpp03/vector10_fwd.hpp [6:7]
- boost/fusion/container/vector/detail/cpp03/vector10_fwd.hpp [34:35]
- boost/fusion/container/vector/detail/cpp03/vector20.hpp [5:6]
- boost/fusion/container/vector/detail/cpp03/vector20.hpp [50:51]
- boost/fusion/container/vector/detail/cpp03/vector20_fwd.hpp [6:7]
- boost/fusion/container/vector/detail/cpp03/vector20_fwd.hpp [28:29]
- boost/fusion/container/vector/detail/cpp03/vector30.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/vector30.hpp [49:50]
- boost/fusion/container/vector/detail/cpp03/vector30_fwd.hpp [6:7]
- boost/fusion/container/vector/detail/cpp03/vector30_fwd.hpp [28:29]
- boost/fusion/container/vector/detail/cpp03/vector40.hpp [5:6]
- boost/fusion/container/vector/detail/cpp03/vector40.hpp [50:51]
- boost/fusion/container/vector/detail/cpp03/vector40_fwd.hpp [6:7]
- boost/fusion/container/vector/detail/cpp03/vector40_fwd.hpp [28:29]
- boost/fusion/container/vector/detail/cpp03/vector50.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/vector50.hpp [49:50]
- boost/fusion/container/vector/detail/cpp03/vector50_fwd.hpp [6:7]
- boost/fusion/container/vector/detail/cpp03/vector50_fwd.hpp [28:29]
- boost/fusion/container/vector/detail/cpp03/vector_forward_ctor.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/vector_fwd.hpp [5:6]
- boost/fusion/container/vector/detail/cpp03/vector_fwd.hpp [39:40]
- boost/fusion/container/vector/detail/cpp03/vector_n.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/vector_n_chooser.hpp [4:5]
- boost/fusion/container/vector/detail/cpp03/vector_n_chooser.hpp [50:51]
- boost/fusion/container/vector/detail/value_at_impl.hpp [4:5]
- boost/fusion/container/vector/vector.hpp [4:5]
- boost/fusion/container/vector/vector10.hpp [4:5]
- boost/fusion/container/vector/vector20.hpp [4:5]
- boost/fusion/container/vector/vector30.hpp [4:5]
- boost/fusion/container/vector/vector40.hpp [4:5]
- boost/fusion/container/vector/vector50.hpp [4:5]
- boost/fusion/container/vector/vector_fwd.hpp [4:5]
- boost/fusion/include/accumulate.hpp [4:5]
- boost/fusion/include/adapt_adt.hpp [4:5]
- boost/fusion/include/adapt_adt_named.hpp [4:5]
- boost/fusion/include/adapt_assoc_adt.hpp [4:5]
- boost/fusion/include/adapt_assoc_adt_named.hpp [4:5]
- boost/fusion/include/adapt_assoc_struct.hpp [4:5]
- boost/fusion/include/adapt_assoc_struct_named.hpp [4:5]
- boost/fusion/include/adapt_struct.hpp [4:5]
- boost/fusion/include/adapt_struct_named.hpp [4:5]
- boost/fusion/include/adapted.hpp [4:5]
- boost/fusion/include/adapter.hpp [4:5]
- boost/fusion/include/advance.hpp [4:5]
- boost/fusion/include/algorithm.hpp [4:5]
- boost/fusion/include/all.hpp [4:5]
- boost/fusion/include/any.hpp [4:5]
- boost/fusion/include/array.hpp [4:5]
- boost/fusion/include/as_deque.hpp [4:5]
- boost/fusion/include/as_list.hpp [4:5]
- boost/fusion/include/as_map.hpp [4:5]
- boost/fusion/include/as_set.hpp [4:5]
- boost/fusion/include/at_c.hpp [4:5]
- boost/fusion/include/at_key.hpp [4:5]
- boost/fusion/include/auxiliary.hpp [4:5]
- boost/fusion/include/back.hpp [4:5]
- boost/fusion/include/begin.hpp [4:5]
- boost/fusion/include/boost_array.hpp [4:5]
- boost/fusion/include/boost_tuple.hpp [4:5]
- boost/fusion/include/category_of.hpp [4:5]
- boost/fusion/include/clear.hpp [4:5]
- boost/fusion/include/comparison.hpp [4:5]
- boost/fusion/include/cons.hpp [4:5]
- boost/fusion/include/cons_tie.hpp [4:5]
- boost/fusion/include/container.hpp [4:5]
- boost/fusion/include/convert.hpp [4:5]
- boost/fusion/include/copy.hpp [4:5]
- boost/fusion/include/count.hpp [4:5]
- boost/fusion/include/count_if.hpp [4:5]
- boost/fusion/include/deduce.hpp [4:5]
- boost/fusion/include/deduce_sequence.hpp [4:5]
- boost/fusion/include/define_assoc_struct.hpp [4:5]
- boost/fusion/include/define_struct.hpp [4:5]
- boost/fusion/include/define_struct_inline.hpp [4:5]
- boost/fusion/include/deque.hpp [4:5]
- boost/fusion/include/deque_fwd.hpp [4:5]
- boost/fusion/include/deque_tie.hpp [4:5]
- boost/fusion/include/deref.hpp [4:5]
- boost/fusion/include/deref_data.hpp [4:5]
- boost/fusion/include/distance.hpp [4:5]
- boost/fusion/include/empty.hpp [4:5]
- boost/fusion/include/end.hpp [4:5]
- boost/fusion/include/equal_to.hpp [4:5]
- boost/fusion/include/erase.hpp [4:5]
- boost/fusion/include/erase_key.hpp [4:5]
- boost/fusion/include/filter.hpp [4:5]
- boost/fusion/include/filter_if.hpp [4:5]
- boost/fusion/include/filter_view.hpp [4:5]
- boost/fusion/include/find.hpp [4:5]
- boost/fusion/include/find_if.hpp [4:5]
- boost/fusion/include/flatten.hpp [4:5]
- boost/fusion/include/flatten_view.hpp [4:5]
- boost/fusion/include/fold.hpp [4:5]
- boost/fusion/include/for_each.hpp [4:5]
- boost/fusion/include/front.hpp [4:5]
- boost/fusion/include/functional.hpp [4:5]
- boost/fusion/include/fused.hpp [4:5]
- boost/fusion/include/fused_function_object.hpp [4:5]
- boost/fusion/include/fused_procedure.hpp [4:5]
- boost/fusion/include/generation.hpp [4:5]
- boost/fusion/include/greater.hpp [4:5]
- boost/fusion/include/greater_equal.hpp [4:5]
- boost/fusion/include/has_key.hpp [4:5]
- boost/fusion/include/hash.hpp [4:5]
- boost/fusion/include/ignore.hpp [4:5]
- boost/fusion/include/in.hpp [4:5]
- boost/fusion/include/insert.hpp [4:5]
- boost/fusion/include/insert_range.hpp [4:5]
- boost/fusion/include/intrinsic.hpp [4:5]
- boost/fusion/include/invocation.hpp [4:5]
- boost/fusion/include/invoke.hpp [4:5]
- boost/fusion/include/invoke_function_object.hpp [4:5]
- boost/fusion/include/invoke_procedure.hpp [4:5]
- boost/fusion/include/is_iterator.hpp [4:5]
- boost/fusion/include/is_segmented.hpp [4:5]
- boost/fusion/include/is_view.hpp [4:5]
- boost/fusion/include/iter_fold.hpp [4:5]
- boost/fusion/include/iteration.hpp [4:5]
- boost/fusion/include/iterator.hpp [4:5]
- boost/fusion/include/iterator_adapter.hpp [4:5]
- boost/fusion/include/iterator_base.hpp [4:5]
- boost/fusion/include/iterator_facade.hpp [4:5]
- boost/fusion/include/iterator_range.hpp [4:5]
- boost/fusion/include/key_of.hpp [4:5]
- boost/fusion/include/less.hpp [4:5]
- boost/fusion/include/less_equal.hpp [4:5]
- boost/fusion/include/list.hpp [4:5]
- boost/fusion/include/list_fwd.hpp [4:5]
- boost/fusion/include/list_tie.hpp [4:5]
- boost/fusion/include/make_cons.hpp [4:5]
- boost/fusion/include/make_deque.hpp [4:5]
- boost/fusion/include/make_fused.hpp [4:5]
- boost/fusion/include/make_fused_function_object.hpp [4:5]
- boost/fusion/include/make_fused_procedure.hpp [4:5]
- boost/fusion/include/make_list.hpp [4:5]
- boost/fusion/include/make_map.hpp [4:5]
- boost/fusion/include/make_set.hpp [4:5]
- boost/fusion/include/make_tuple.hpp [4:5]
- boost/fusion/include/make_unfused.hpp [4:5]
- boost/fusion/include/make_vector.hpp [4:5]
- boost/fusion/include/map.hpp [4:5]
- boost/fusion/include/map_fwd.hpp [4:5]
- boost/fusion/include/map_tie.hpp [4:5]
- boost/fusion/include/move.hpp [4:5]
- boost/fusion/include/mpl.hpp [4:5]
- boost/fusion/include/next.hpp [4:5]
- boost/fusion/include/nil.hpp [4:5]
- boost/fusion/include/none.hpp [4:5]
- boost/fusion/include/not_equal_to.hpp [4:5]
- boost/fusion/include/nview.hpp [4:5]
- boost/fusion/include/out.hpp [4:5]
- boost/fusion/include/pair.hpp [4:5]
- boost/fusion/include/pair_tie.hpp [4:5]
- boost/fusion/include/pop_back.hpp [4:5]
- boost/fusion/include/pop_front.hpp [4:5]
- boost/fusion/include/prior.hpp [4:5]
- boost/fusion/include/proxy_type.hpp [4:5]
- boost/fusion/include/push_back.hpp [4:5]
- boost/fusion/include/query.hpp [4:5]
- boost/fusion/include/remove.hpp [4:5]
- boost/fusion/include/remove_if.hpp [4:5]
- boost/fusion/include/repetitive_view.hpp [4:5]
- boost/fusion/include/replace.hpp [4:5]
- boost/fusion/include/replace_if.hpp [4:5]
- boost/fusion/include/reverse.hpp [4:5]
- boost/fusion/include/reverse_fold.hpp [4:5]
- boost/fusion/include/reverse_iter_fold.hpp [4:5]
- boost/fusion/include/reverse_view.hpp [4:5]
- boost/fusion/include/segmented_fold_until.hpp [4:5]
- boost/fusion/include/segmented_iterator.hpp [4:5]
- boost/fusion/include/segments.hpp [4:5]
- boost/fusion/include/sequence.hpp [4:5]
- boost/fusion/include/sequence_base.hpp [4:5]
- boost/fusion/include/sequence_facade.hpp [4:5]
- boost/fusion/include/set.hpp [4:5]
- boost/fusion/include/set_fwd.hpp [4:5]
- boost/fusion/include/size.hpp [4:5]
- boost/fusion/include/std_array.hpp [4:5]
- boost/fusion/include/std_pair.hpp [4:5]
- boost/fusion/include/std_tuple.hpp [3:4]
- boost/fusion/include/struct.hpp [4:5]
- boost/fusion/include/support.hpp [4:5]
- boost/fusion/include/swap.hpp [4:5]
- boost/fusion/include/tag_of.hpp [4:5]
- boost/fusion/include/tag_of_fwd.hpp [4:5]
- boost/fusion/include/transformation.hpp [4:5]
- boost/fusion/include/tuple.hpp [4:5]
- boost/fusion/include/tuple_fwd.hpp [4:5]
- boost/fusion/include/tuple_tie.hpp [4:5]
- boost/fusion/include/unfused.hpp [4:5]
- boost/fusion/include/unfused_typed.hpp [4:5]
- boost/fusion/include/unused.hpp [4:5]
- boost/fusion/include/value_at_key.hpp [4:5]
- boost/fusion/include/value_of.hpp [4:5]
- boost/fusion/include/value_of_data.hpp [4:5]
- boost/fusion/include/vector.hpp [4:5]
- boost/fusion/include/vector10.hpp [4:5]
- boost/fusion/include/vector20.hpp [4:5]
- boost/fusion/include/vector30.hpp [4:5]
- boost/fusion/include/vector40.hpp [4:5]
- boost/fusion/include/vector50.hpp [4:5]
- boost/fusion/include/vector_fwd.hpp [4:5]
- boost/fusion/include/vector_tie.hpp [4:5]
- boost/fusion/include/view.hpp [4:5]
- boost/fusion/include/void.hpp [4:5]
- boost/fusion/include/zip.hpp [4:5]
- boost/fusion/include/zip_view.hpp [4:5]
- boost/fusion/iterator.hpp [4:5]
- boost/fusion/iterator/advance.hpp [4:5]
- boost/fusion/iterator/basic_iterator.hpp [4:5]
- boost/fusion/iterator/deref_data.hpp [4:5]
- boost/fusion/iterator/detail/segment_sequence.hpp [4:5]
- boost/fusion/iterator/detail/segmented_equal_to.hpp [4:5]
- boost/fusion/iterator/detail/segmented_iterator.hpp [4:5]
- boost/fusion/iterator/detail/segmented_next_impl.hpp [4:5]
- boost/fusion/iterator/equal_to.hpp [4:5]
- boost/fusion/iterator/iterator_adapter.hpp [4:5]
- boost/fusion/iterator/iterator_facade.hpp [4:5]
- boost/fusion/iterator/key_of.hpp [4:5]
- boost/fusion/iterator/mpl/convert_iterator.hpp [4:5]
- boost/fusion/iterator/segmented_iterator.hpp [4:5]
- boost/fusion/iterator/value_of_data.hpp [4:5]
- boost/fusion/mpl.hpp [4:5]
- boost/fusion/mpl/erase.hpp [4:5]
- boost/fusion/mpl/erase_key.hpp [4:5]
- boost/fusion/mpl/insert.hpp [4:5]
- boost/fusion/mpl/insert_range.hpp [4:5]
- boost/fusion/mpl/pop_back.hpp [4:5]
- boost/fusion/mpl/pop_front.hpp [4:5]
- boost/fusion/mpl/push_back.hpp [4:5]
- boost/fusion/mpl/push_front.hpp [4:5]
- boost/fusion/sequence.hpp [4:5]
- boost/fusion/sequence/comparison/enable_comparison.hpp [4:5]
- boost/fusion/sequence/comparison/equal_to.hpp [5:6]
- boost/fusion/sequence/comparison/greater.hpp [5:6]
- boost/fusion/sequence/comparison/greater_equal.hpp [5:6]
- boost/fusion/sequence/comparison/less.hpp [5:6]
- boost/fusion/sequence/comparison/less_equal.hpp [5:6]
- boost/fusion/sequence/comparison/not_equal_to.hpp [5:6]
- boost/fusion/sequence/convert.hpp [4:5]
- boost/fusion/sequence/hash.hpp [4:5]
- boost/fusion/sequence/intrinsic.hpp [4:5]
- boost/fusion/sequence/intrinsic/at.hpp [4:5]
- boost/fusion/sequence/intrinsic/at_c.hpp [4:5]
- boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp [4:5]
- boost/fusion/sequence/intrinsic/detail/segmented_begin_impl.hpp [4:5]
- boost/fusion/sequence/intrinsic/detail/segmented_end.hpp [4:5]
- boost/fusion/sequence/intrinsic/detail/segmented_end_impl.hpp [4:5]
- boost/fusion/sequence/intrinsic_fwd.hpp [4:5]
- boost/fusion/sequence/io/in.hpp [6:7]
- boost/fusion/sequence/sequence_facade.hpp [4:5]
- boost/fusion/support.hpp [4:5]
- boost/fusion/support/as_const.hpp [4:5]
- boost/fusion/support/config.hpp [5:6]
- boost/fusion/support/detail/access.hpp [4:5]
- boost/fusion/support/detail/and.hpp [4:5]
- boost/fusion/support/detail/enabler.hpp [4:5]
- boost/fusion/support/detail/index_sequence.hpp [5:6]
- boost/fusion/support/detail/is_same_size.hpp [4:5]
- boost/fusion/support/detail/pp_round.hpp [4:5]
- boost/fusion/support/detail/segmented_fold_until_impl.hpp [4:5]
- boost/fusion/support/is_sequence.hpp [4:5]
- boost/fusion/support/iterator_base.hpp [4:5]
- boost/fusion/support/pair.hpp [5:6]
- boost/fusion/support/segmented_fold_until.hpp [4:5]
- boost/fusion/support/sequence_base.hpp [5:6]
- boost/fusion/support/tag_of.hpp [4:5]
- boost/fusion/support/tag_of_fwd.hpp [5:6]
- boost/fusion/support/unused.hpp [4:5]
- boost/fusion/support/void.hpp [4:5]
- boost/fusion/tuple/detail/make_tuple.hpp [4:5]
- boost/fusion/tuple/detail/make_tuple.hpp [36:37]
- boost/fusion/tuple/detail/preprocessed/make_tuple.hpp [4:5]
- boost/fusion/tuple/detail/preprocessed/tuple.hpp [4:5]
- boost/fusion/tuple/detail/preprocessed/tuple10_fwd.hpp [4:5]
- boost/fusion/tuple/detail/preprocessed/tuple_fwd.hpp [4:5]
- boost/fusion/tuple/detail/preprocessed/tuple_tie.hpp [4:5]
- boost/fusion/tuple/detail/preprocessed/tuple_tie10.hpp [4:5]
- boost/fusion/tuple/detail/tuple.hpp [4:5]
- boost/fusion/tuple/detail/tuple.hpp [32:33]
- boost/fusion/tuple/detail/tuple_expand.hpp [4:5]
- boost/fusion/tuple/detail/tuple_fwd.hpp [4:5]
- boost/fusion/tuple/detail/tuple_fwd.hpp [24:25]
- boost/fusion/tuple/detail/tuple_tie.hpp [4:5]
- boost/fusion/tuple/detail/tuple_tie.hpp [27:28]
- boost/fusion/tuple/make_tuple.hpp [4:5]
- boost/fusion/tuple/tuple.hpp [4:5]
- boost/fusion/tuple/tuple_fwd.hpp [4:5]
- boost/fusion/tuple/tuple_tie.hpp [4:5]
- boost/fusion/view/detail/strictest_traversal.hpp [5:6]
- boost/fusion/view/filter_view/detail/deref_data_impl.hpp [4:5]
- boost/fusion/view/filter_view/detail/key_of_impl.hpp [4:5]
- boost/fusion/view/filter_view/detail/value_of_data_impl.hpp [4:5]
- boost/fusion/view/filter_view/filter_view_iterator.hpp [4:5]
- boost/fusion/view/flatten_view.hpp [4:5]
- boost/fusion/view/flatten_view/flatten_view.hpp [4:5]
- boost/fusion/view/flatten_view/flatten_view_iterator.hpp [4:5]
- boost/fusion/view/iterator_range/detail/at_impl.hpp [4:5]
- boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp [4:5]
- boost/fusion/view/iterator_range/detail/size_impl.hpp [4:5]
- boost/fusion/view/iterator_range/detail/value_at_impl.hpp [4:5]
- boost/fusion/view/iterator_range/iterator_range.hpp [4:5]
- boost/fusion/view/joint_view/detail/deref_data_impl.hpp [4:5]
- boost/fusion/view/joint_view/detail/key_of_impl.hpp [4:5]
- boost/fusion/view/joint_view/detail/value_of_data_impl.hpp [4:5]
- boost/fusion/view/joint_view/joint_view.hpp [4:5]
- boost/fusion/view/joint_view/joint_view_fwd.hpp [4:5]
- boost/fusion/view/joint_view/joint_view_iterator.hpp [4:5]
- boost/fusion/view/nview/detail/advance_impl.hpp [4:5]
- boost/fusion/view/nview/detail/begin_impl.hpp [4:5]
- boost/fusion/view/nview/detail/cpp03/nview_impl.hpp [4:5]
- boost/fusion/view/nview/detail/deref_impl.hpp [4:5]
- boost/fusion/view/nview/detail/distance_impl.hpp [4:5]
- boost/fusion/view/nview/detail/end_impl.hpp [4:5]
- boost/fusion/view/nview/detail/equal_to_impl.hpp [4:5]
- boost/fusion/view/nview/detail/next_impl.hpp [4:5]
- boost/fusion/view/nview/detail/nview_impl.hpp [4:5]
- boost/fusion/view/nview/detail/prior_impl.hpp [4:5]
- boost/fusion/view/nview/detail/value_of_impl.hpp [4:5]
- boost/fusion/view/repetitive_view.hpp [4:5]
- boost/fusion/view/repetitive_view/detail/begin_impl.hpp [4:5]
- boost/fusion/view/repetitive_view/detail/deref_impl.hpp [4:5]
- boost/fusion/view/repetitive_view/detail/end_impl.hpp [4:5]
- boost/fusion/view/repetitive_view/detail/next_impl.hpp [4:5]
- boost/fusion/view/repetitive_view/detail/value_of_impl.hpp [4:5]
- boost/fusion/view/repetitive_view/repetitive_view.hpp [4:5]
- boost/fusion/view/repetitive_view/repetitive_view_fwd.hpp [4:5]
- boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp [4:5]
- boost/fusion/view/reverse_view/detail/at_impl.hpp [4:5]
- boost/fusion/view/reverse_view/detail/deref_data_impl.hpp [4:5]
- boost/fusion/view/reverse_view/detail/key_of_impl.hpp [4:5]
- boost/fusion/view/reverse_view/detail/value_at_impl.hpp [4:5]
- boost/fusion/view/reverse_view/detail/value_of_data_impl.hpp [4:5]
- boost/fusion/view/reverse_view/reverse_view_iterator.hpp [4:5]
- boost/fusion/view/single_view/detail/distance_impl.hpp [4:5]
- boost/fusion/view/single_view/detail/equal_to_impl.hpp [4:5]
- boost/fusion/view/single_view/detail/next_impl.hpp [5:6]
- boost/fusion/view/single_view/detail/prior_impl.hpp [4:5]
- boost/fusion/view/transform_view/detail/value_at_impl.hpp [5:6]
- boost/fusion/view/transform_view/transform_view_iterator.hpp [4:5]
- boost/fusion/view/zip_view/detail/value_of_impl.hpp [5:6]
- boost/hof.hpp [4:5]
- boost/hof/alias.hpp [4:5]
- boost/hof/always.hpp [4:5]
- boost/hof/apply.hpp [4:5]
- boost/hof/apply_eval.hpp [4:5]
- boost/hof/arg.hpp [4:5]
- boost/hof/capture.hpp [4:5]
- boost/hof/combine.hpp [4:5]
- boost/hof/compose.hpp [4:5]
- boost/hof/config.hpp [4:5]
- boost/hof/construct.hpp [4:5]
- boost/hof/decay.hpp [4:5]
- boost/hof/decorate.hpp [4:5]
- boost/hof/detail/and.hpp [4:5]
- boost/hof/detail/callable_base.hpp [4:5]
- boost/hof/detail/can_be_called.hpp [4:5]
- boost/hof/detail/compressed_pair.hpp [4:5]
- boost/hof/detail/constexpr_deduce.hpp [4:5]
- boost/hof/detail/delegate.hpp [4:5]
- boost/hof/detail/forward.hpp [4:5]
- boost/hof/detail/holder.hpp [4:5]
- boost/hof/detail/intrinsics.hpp [4:5]
- boost/hof/detail/join.hpp [4:5]
- boost/hof/detail/make.hpp [4:5]
- boost/hof/detail/move.hpp [4:5]
- boost/hof/detail/noexcept.hpp [4:5]
- boost/hof/detail/pp.hpp [4:5]
- boost/hof/detail/recursive_constexpr_depth.hpp [4:5]
- boost/hof/detail/remove_rvalue_reference.hpp [4:5]
- boost/hof/detail/result_of.hpp [4:5]
- boost/hof/detail/result_type.hpp [4:5]
- boost/hof/detail/seq.hpp [4:5]
- boost/hof/detail/static_const_var.hpp [4:5]
- boost/hof/detail/unpack_tuple.hpp [4:5]
- boost/hof/detail/unwrap.hpp [4:5]
- boost/hof/detail/using.hpp [4:5]
- boost/hof/eval.hpp [4:5]
- boost/hof/first_of.hpp [4:5]
- boost/hof/fix.hpp [4:5]
- boost/hof/flip.hpp [4:5]
- boost/hof/flow.hpp [4:5]
- boost/hof/fold.hpp [4:5]
- boost/hof/function.hpp [4:5]
- boost/hof/function_param_limit.hpp [4:5]
- boost/hof/identity.hpp [4:5]
- boost/hof/if.hpp [4:5]
- boost/hof/implicit.hpp [4:5]
- boost/hof/indirect.hpp [4:5]
- boost/hof/infix.hpp [4:5]
- boost/hof/is_invocable.hpp [4:5]
- boost/hof/is_unpackable.hpp [4:5]
- boost/hof/lambda.hpp [4:5]
- boost/hof/lazy.hpp [4:5]
- boost/hof/lift.hpp [4:5]
- boost/hof/limit.hpp [4:5]
- boost/hof/match.hpp [4:5]
- boost/hof/mutable.hpp [4:5]
- boost/hof/pack.hpp [4:5]
- boost/hof/partial.hpp [4:5]
- boost/hof/pipable.hpp [4:5]
- boost/hof/placeholders.hpp [4:5]
- boost/hof/proj.hpp [4:5]
- boost/hof/protect.hpp [4:5]
- boost/hof/repeat.hpp [4:5]
- boost/hof/repeat_while.hpp [4:5]
- boost/hof/result.hpp [4:5]
- boost/hof/returns.hpp [4:5]
- boost/hof/reveal.hpp [4:5]
- boost/hof/reverse_fold.hpp [4:5]
- boost/hof/rotate.hpp [4:5]
- boost/hof/static.hpp [4:5]
- boost/hof/tap.hpp [4:5]
- boost/hof/unpack.hpp [4:5]
- boost/hof/unpack_sequence.hpp [4:5]
- boost/hof/version.hpp [4:5]
- boost/phoenix.hpp [5:6]
- boost/phoenix/bind.hpp [4:5]
- boost/phoenix/bind/bind_function.hpp [4:5]
- boost/phoenix/bind/bind_function_object.hpp [4:5]
- boost/phoenix/bind/bind_member_function.hpp [4:5]
- boost/phoenix/bind/bind_member_variable.hpp [5:6]
- boost/phoenix/bind/detail/cpp03/bind_member_function.hpp [5:6]
- boost/phoenix/bind/detail/member_variable.hpp [4:5]
- boost/phoenix/config.hpp [7:8]
- boost/phoenix/core/actor.hpp [7:8]
- boost/phoenix/core/argument.hpp [6:7]
- boost/phoenix/core/argument.hpp [89:90]
- boost/phoenix/core/argument.hpp [120:121]
- boost/phoenix/core/arity.hpp [5:6]
- boost/phoenix/core/call.hpp [5:6]
- boost/phoenix/core/debug.hpp [6:7]
- boost/phoenix/core/detail/argument.hpp [6:7]
- boost/phoenix/core/detail/cpp03/actor_operator.hpp [27:28]
- boost/phoenix/core/detail/cpp03/actor_result_of.hpp [28:29]
- boost/phoenix/core/detail/cpp03/call.hpp [24:25]
- boost/phoenix/core/detail/cpp03/expression.hpp [22:23]
- boost/phoenix/core/detail/cpp03/function_equal.hpp [5:6]
- boost/phoenix/core/detail/cpp03/function_equal.hpp [25:26]
- boost/phoenix/core/detail/cpp03/function_eval.hpp [15:16]
- boost/phoenix/core/detail/cpp03/function_eval_expr.hpp [4:5]
- boost/phoenix/core/detail/cpp03/function_eval_expr.hpp [20:21]
- boost/phoenix/core/detail/cpp03/phx2_result.hpp [4:5]
- boost/phoenix/core/detail/cpp03/phx2_result.hpp [26:27]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_operator.hpp [4:5]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of.hpp [4:5]
- boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_10.hpp [5:6]
- boost/phoenix/core/detail/cpp03/preprocessed/call.hpp [4:5]
- boost/phoenix/core/detail/cpp03/preprocessed/expression.hpp [4:5]
- boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_10.hpp [4:5]
- boost/phoenix/core/detail/function_eval.hpp [5:6]
- boost/phoenix/core/detail/index_sequence.hpp [4:5]
- boost/phoenix/core/detail/phx2_result.hpp [4:5]
- boost/phoenix/core/environment.hpp [5:6]
- boost/phoenix/core/function_equal.hpp [5:6]
- boost/phoenix/core/is_actor.hpp [4:5]
- boost/phoenix/core/is_value.hpp [5:6]
- boost/phoenix/core/nothing.hpp [4:5]
- boost/phoenix/core/reference.hpp [5:6]
- boost/phoenix/core/terminal.hpp [5:6]
- boost/phoenix/core/terminal_fwd.hpp [5:6]
- boost/phoenix/core/value.hpp [5:6]
- boost/phoenix/core/visit_each.hpp [5:6]
- boost/phoenix/function.hpp [4:5]
- boost/phoenix/function/adapt_callable.hpp [5:6]
- boost/phoenix/function/adapt_function.hpp [6:7]
- boost/phoenix/function/detail/cpp03/function_operator.hpp [24:25]
- boost/phoenix/function/detail/cpp03/preprocessed/function_operator.hpp [4:5]
- boost/phoenix/function/detail/cpp03/preprocessed/function_operator_10.hpp [5:6]
- boost/phoenix/function/function.hpp [6:7]
- boost/phoenix/function/lazy_list.hpp [37:38]
- boost/phoenix/function/lazy_operator.hpp [31:32]
- boost/phoenix/function/lazy_prelude.hpp [119:120]
- boost/phoenix/function/lazy_reuse.hpp [28:29]
- boost/phoenix/function/lazy_signature.hpp [38:39]
- boost/phoenix/function/lazy_smart.hpp [15:16]
- boost/phoenix/fusion.hpp [5:6]
- boost/phoenix/fusion/at.hpp [6:7]
- boost/phoenix/object.hpp [5:6]
- boost/phoenix/object/const_cast.hpp [5:6]
- boost/phoenix/object/construct.hpp [5:6]
- boost/phoenix/object/delete.hpp [5:6]
- boost/phoenix/object/detail/cpp03/construct.hpp [24:25]
- boost/phoenix/object/detail/cpp03/construct_eval.hpp [26:27]
- boost/phoenix/object/detail/cpp03/construct_expr.hpp [14:15]
- boost/phoenix/object/detail/cpp03/new.hpp [24:25]
- boost/phoenix/object/detail/cpp03/new_eval.hpp [26:27]
- boost/phoenix/object/detail/cpp03/new_expr.hpp [14:15]
- boost/phoenix/object/detail/cpp03/preprocessed/construct.hpp [4:5]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_10.hpp [5:6]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_eval.hpp [4:5]
- boost/phoenix/object/detail/cpp03/preprocessed/construct_expr.hpp [4:5]
- boost/phoenix/object/detail/cpp03/preprocessed/new.hpp [4:5]
- boost/phoenix/object/detail/cpp03/preprocessed/new_10.hpp [5:6]
- boost/phoenix/object/detail/cpp03/preprocessed/new_eval.hpp [4:5]
- boost/phoenix/object/detail/cpp03/preprocessed/new_expr.hpp [4:5]
- boost/phoenix/object/detail/target.hpp [5:6]
- boost/phoenix/object/dynamic_cast.hpp [5:6]
- boost/phoenix/object/new.hpp [5:6]
- boost/phoenix/object/reinterpret_cast.hpp [5:6]
- boost/phoenix/object/static_cast.hpp [5:6]
- boost/phoenix/operator.hpp [5:6]
- boost/phoenix/operator/arithmetic.hpp [5:6]
- boost/phoenix/operator/bitwise.hpp [5:6]
- boost/phoenix/operator/comparison.hpp [5:6]
- boost/phoenix/operator/detail/cpp03/mem_fun_ptr_eval.hpp [19:20]
- boost/phoenix/operator/detail/cpp03/mem_fun_ptr_eval_result_of.hpp [19:20]
- boost/phoenix/operator/detail/cpp03/mem_fun_ptr_expr.hpp [13:14]
- boost/phoenix/operator/detail/cpp03/mem_fun_ptr_gen.hpp [18:19]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval.hpp [4:5]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_10.hpp [6:7]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of.hpp [4:5]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr.hpp [4:5]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen.hpp [4:5]
- boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_10.hpp [5:6]
- boost/phoenix/operator/detail/define_operator.hpp [5:6]
- boost/phoenix/operator/detail/undef_operator.hpp [4:5]
- boost/phoenix/operator/if_else.hpp [5:6]
- boost/phoenix/operator/io.hpp [5:6]
- boost/phoenix/operator/logical.hpp [5:6]
- boost/phoenix/operator/member.hpp [6:7]
- boost/phoenix/operator/self.hpp [5:6]
- boost/phoenix/phoenix.hpp [5:6]
- boost/phoenix/scope.hpp [5:6]
- boost/phoenix/scope/detail/cpp03/dynamic.hpp [28:29]
- boost/phoenix/scope/detail/cpp03/lambda.hpp [19:20]
- boost/phoenix/scope/detail/cpp03/local_gen.hpp [6:7]
- boost/phoenix/scope/detail/cpp03/preprocessed/dynamic.hpp [4:5]
- boost/phoenix/scope/detail/local_gen.hpp [4:5]
- boost/phoenix/scope/detail/local_variable.hpp [6:7]
- boost/phoenix/scope/dynamic.hpp [6:7]
- boost/phoenix/scope/lambda.hpp [7:8]
- boost/phoenix/scope/let.hpp [7:8]
- boost/phoenix/scope/local_variable.hpp [5:6]
- boost/phoenix/scope/scoped_environment.hpp [5:6]
- boost/phoenix/statement.hpp [4:5]
- boost/phoenix/statement/detail/catch_push_back.hpp [23:24]
- boost/phoenix/statement/detail/preprocessed/catch_push_back.hpp [4:5]
- boost/phoenix/statement/detail/preprocessed/switch.hpp [4:5]
- boost/phoenix/statement/detail/preprocessed/try_catch_eval.hpp [4:5]
- boost/phoenix/statement/detail/preprocessed/try_catch_expression.hpp [4:5]
- boost/phoenix/statement/detail/preprocessed/try_catch_expression_10.hpp [5:6]
- boost/phoenix/statement/detail/preprocessed/try_catch_expression_20.hpp [5:6]
- boost/phoenix/statement/detail/switch.hpp [28:29]
- boost/phoenix/statement/detail/try_catch_eval.hpp [28:29]
- boost/phoenix/statement/detail/try_catch_expression.hpp [28:29]
- boost/phoenix/statement/do_while.hpp [5:6]
- boost/phoenix/statement/for.hpp [5:6]
- boost/phoenix/statement/if.hpp [5:6]
- boost/phoenix/statement/sequence.hpp [6:7]
- boost/phoenix/statement/switch.hpp [5:6]
- boost/phoenix/statement/throw.hpp [6:7]
- boost/phoenix/statement/try_catch.hpp [6:7]
- boost/phoenix/statement/while.hpp [5:6]
- boost/phoenix/stl/cmath.hpp [4:5]
- boost/phoenix/stl/container/container.hpp [5:6]
- boost/phoenix/support/detail/iterate.hpp [4:5]
- boost/phoenix/support/detail/iterate_define.hpp [4:5]
- boost/phoenix/support/detail/iterate_undef.hpp [4:5]
- boost/phoenix/support/iterate.hpp [4:5]
- boost/phoenix/support/vector.hpp [44:45]
- boost/phoenix/version.hpp [6:7]
- boost/spirit/home/karma/detail/pass_container.hpp [5:6]
- boost/spirit/home/lex/lexer/lexertl/wrap_action.hpp [6:7]
- boost/spirit/home/qi.hpp [4:5]
- boost/spirit/home/qi/action/action.hpp [4:5]
- boost/spirit/home/qi/auto.hpp [4:5]
- boost/spirit/home/qi/auxiliary.hpp [5:6]
- boost/spirit/home/qi/auxiliary/attr.hpp [5:6]
- boost/spirit/home/qi/auxiliary/eoi.hpp [5:6]
- boost/spirit/home/qi/auxiliary/eol.hpp [5:6]
- boost/spirit/home/qi/auxiliary/eps.hpp [4:5]
- boost/spirit/home/qi/auxiliary/lazy.hpp [4:5]
- boost/spirit/home/qi/binary.hpp [4:5]
- boost/spirit/home/qi/binary/binary.hpp [5:6]
- boost/spirit/home/qi/char/char.hpp [6:7]
- boost/spirit/home/qi/char/char_class.hpp [4:5]
- boost/spirit/home/qi/char/char_parser.hpp [4:5]
- boost/spirit/home/qi/copy.hpp [4:5]
- boost/spirit/home/qi/detail/alternative_function.hpp [4:5]
- boost/spirit/home/qi/detail/assign_to.hpp [6:7]
- boost/spirit/home/qi/detail/construct.hpp [5:6]
- boost/spirit/home/qi/detail/expect_function.hpp [4:5]
- boost/spirit/home/qi/detail/fail_function.hpp [4:5]
- boost/spirit/home/qi/detail/parse.hpp [4:5]
- boost/spirit/home/qi/detail/parse_auto.hpp [4:5]
- boost/spirit/home/qi/detail/pass_container.hpp [5:6]
- boost/spirit/home/qi/detail/pass_function.hpp [4:5]
- boost/spirit/home/qi/detail/permute_function.hpp [4:5]
- boost/spirit/home/qi/detail/string_parse.hpp [4:5]
- boost/spirit/home/qi/directive.hpp [4:5]
- boost/spirit/home/qi/directive/as.hpp [6:7]
- boost/spirit/home/qi/directive/encoding.hpp [4:5]
- boost/spirit/home/qi/directive/hold.hpp [4:5]
- boost/spirit/home/qi/directive/lexeme.hpp [4:5]
- boost/spirit/home/qi/directive/matches.hpp [4:5]
- boost/spirit/home/qi/directive/no_case.hpp [4:5]
- boost/spirit/home/qi/directive/no_skip.hpp [5:6]
- boost/spirit/home/qi/directive/omit.hpp [4:5]
- boost/spirit/home/qi/directive/raw.hpp [4:5]
- boost/spirit/home/qi/directive/repeat.hpp [5:6]
- boost/spirit/home/qi/directive/skip.hpp [4:5]
- boost/spirit/home/qi/domain.hpp [4:5]
- boost/spirit/home/qi/meta_compiler.hpp [4:5]
- boost/spirit/home/qi/nonterminal.hpp [4:5]
- boost/spirit/home/qi/nonterminal/debug_handler.hpp [4:5]
- boost/spirit/home/qi/nonterminal/debug_handler_state.hpp [4:5]
- boost/spirit/home/qi/nonterminal/detail/fcall.hpp [4:5]
- boost/spirit/home/qi/nonterminal/detail/parameterized.hpp [5:6]
- boost/spirit/home/qi/nonterminal/detail/parser_binder.hpp [4:5]
- boost/spirit/home/qi/nonterminal/error_handler.hpp [4:5]
- boost/spirit/home/qi/nonterminal/grammar.hpp [4:5]
- boost/spirit/home/qi/nonterminal/rule.hpp [4:5]
- boost/spirit/home/qi/nonterminal/simple_trace.hpp [5:6]
- boost/spirit/home/qi/nonterminal/success_handler.hpp [4:5]
- boost/spirit/home/qi/numeric.hpp [4:5]
- boost/spirit/home/qi/numeric/bool.hpp [5:6]
- boost/spirit/home/qi/numeric/bool_policies.hpp [4:5]
- boost/spirit/home/qi/numeric/detail/numeric_utils.hpp [8:9]
- boost/spirit/home/qi/numeric/detail/real_impl.hpp [6:7]
- boost/spirit/home/qi/numeric/int.hpp [5:6]
- boost/spirit/home/qi/numeric/numeric_utils.hpp [5:6]
- boost/spirit/home/qi/numeric/real.hpp [5:6]
- boost/spirit/home/qi/numeric/real_policies.hpp [5:6]
- boost/spirit/home/qi/numeric/uint.hpp [6:7]
- boost/spirit/home/qi/operator.hpp [4:5]
- boost/spirit/home/qi/operator/alternative.hpp [5:6]
- boost/spirit/home/qi/operator/and_predicate.hpp [4:5]
- boost/spirit/home/qi/operator/difference.hpp [4:5]
- boost/spirit/home/qi/operator/expect.hpp [5:6]
- boost/spirit/home/qi/operator/kleene.hpp [5:6]
- boost/spirit/home/qi/operator/list.hpp [5:6]
- boost/spirit/home/qi/operator/not_predicate.hpp [4:5]
- boost/spirit/home/qi/operator/optional.hpp [5:6]
- boost/spirit/home/qi/operator/permutation.hpp [4:5]
- boost/spirit/home/qi/operator/plus.hpp [5:6]
- boost/spirit/home/qi/operator/sequence.hpp [5:6]
- boost/spirit/home/qi/operator/sequence_base.hpp [5:6]
- boost/spirit/home/qi/operator/sequential_or.hpp [4:5]
- boost/spirit/home/qi/parse.hpp [5:6]
- boost/spirit/home/qi/parser.hpp [4:5]
- boost/spirit/home/qi/reference.hpp [4:5]
- boost/spirit/home/qi/skip_flag.hpp [4:5]
- boost/spirit/home/qi/skip_over.hpp [4:5]
- boost/spirit/home/qi/stream.hpp [4:5]
- boost/spirit/home/qi/stream/detail/iterator_source.hpp [4:5]
- boost/spirit/home/qi/stream/detail/match_manip.hpp [4:5]
- boost/spirit/home/qi/stream/detail/match_manip_auto.hpp [4:5]
- boost/spirit/home/qi/stream/match_manip.hpp [5:6]
- boost/spirit/home/qi/stream/match_manip_attr.hpp [5:6]
- boost/spirit/home/qi/stream/stream.hpp [4:5]
- boost/spirit/home/qi/string.hpp [4:5]
- boost/spirit/home/qi/string/detail/tst.hpp [4:5]
- boost/spirit/home/qi/string/lit.hpp [6:7]
- boost/spirit/home/qi/string/symbols.hpp [4:5]
- boost/spirit/home/qi/string/tst.hpp [4:5]
- boost/spirit/home/qi/string/tst_map.hpp [4:5]
- boost/spirit/home/qi/what.hpp [4:5]
- boost/spirit/home/support.hpp [4:5]
- boost/spirit/home/support/action_dispatch.hpp [6:7]
- boost/spirit/home/support/algorithm/any.hpp [4:5]
- boost/spirit/home/support/algorithm/any_if.hpp [5:6]
- boost/spirit/home/support/algorithm/any_if_ns.hpp [5:6]
- boost/spirit/home/support/algorithm/any_if_ns_so.hpp [5:6]
- boost/spirit/home/support/algorithm/any_ns.hpp [4:5]
- boost/spirit/home/support/algorithm/any_ns_so.hpp [4:5]
- boost/spirit/home/support/argument.hpp [6:7]
- boost/spirit/home/support/argument_expression.hpp [6:7]
- boost/spirit/home/support/attributes.hpp [5:6]
- boost/spirit/home/support/attributes_fwd.hpp [6:7]
- boost/spirit/home/support/auto.hpp [4:5]
- boost/spirit/home/support/char_class.hpp [5:6]
- boost/spirit/home/support/char_encoding/ascii.hpp [5:6]
- boost/spirit/home/support/char_encoding/iso8859_1.hpp [5:6]
- boost/spirit/home/support/char_encoding/standard.hpp [5:6]
- boost/spirit/home/support/char_encoding/standard_wide.hpp [5:6]
- boost/spirit/home/support/char_encoding/unicode.hpp [5:6]
- boost/spirit/home/support/char_encoding/unicode/category_table.hpp [4:5]
- boost/spirit/home/support/char_encoding/unicode/create_tables.cpp [4:5]
- boost/spirit/home/support/char_encoding/unicode/lowercase_table.hpp [4:5]
- boost/spirit/home/support/char_encoding/unicode/query.hpp [4:5]
- boost/spirit/home/support/char_encoding/unicode/script_table.hpp [4:5]
- boost/spirit/home/support/char_encoding/unicode/uppercase_table.hpp [4:5]
- boost/spirit/home/support/char_set/range.hpp [4:5]
- boost/spirit/home/support/char_set/range_functions.hpp [4:5]
- boost/spirit/home/support/char_set/range_run.hpp [4:5]
- boost/spirit/home/support/char_set/range_run_impl.hpp [4:5]
- boost/spirit/home/support/container.hpp [6:7]
- boost/spirit/home/support/context.hpp [6:7]
- boost/spirit/home/support/detail/as_variant.hpp [4:5]
- boost/spirit/home/support/detail/hold_any.hpp [7:8]
- boost/spirit/home/support/detail/is_spirit_tag.hpp [4:5]
- boost/spirit/home/support/detail/make_vector.hpp [4:5]
- boost/spirit/home/support/detail/pow10.hpp [6:7]
- boost/spirit/home/support/detail/sign.hpp [6:7]
- boost/spirit/home/support/detail/what_function.hpp [4:5]
- boost/spirit/home/support/extended_variant.hpp [4:5]
- boost/spirit/home/support/handles_container.hpp [4:5]
- boost/spirit/home/support/has_semantic_action.hpp [4:5]
- boost/spirit/home/support/info.hpp [4:5]
- boost/spirit/home/support/iterators/line_pos_iterator.hpp [6:7]
- boost/spirit/home/support/iterators/multi_pass_fwd.hpp [6:7]
- boost/spirit/home/support/lazy.hpp [4:5]
- boost/spirit/home/support/nonterminal/expand_arg.hpp [4:5]
- boost/spirit/home/support/nonterminal/extract_param.hpp [6:7]
- boost/spirit/home/support/nonterminal/locals.hpp [5:6]
- boost/spirit/home/support/sequence_base_id.hpp [4:5]
- boost/spirit/home/support/string_traits.hpp [6:7]
- boost/spirit/home/support/terminal.hpp [6:7]
- boost/spirit/home/support/terminal_expression.hpp [6:7]
- boost/spirit/home/support/unused.hpp [5:6]
- boost/spirit/home/support/utf8.hpp [4:5]
- boost/spirit/home/support/utree.hpp [4:5]
- boost/spirit/home/support/utree/detail/utree_detail1.hpp [6:7]
- boost/spirit/home/support/utree/detail/utree_detail2.hpp [6:7]
- boost/spirit/home/support/utree/operators.hpp [6:7]
- boost/spirit/home/support/utree/utree.hpp [6:7]
- boost/spirit/home/support/utree/utree_traits.hpp [6:7]
- boost/spirit/home/support/utree/utree_traits_fwd.hpp [4:5]
- boost/spirit/home/x3.hpp [4:5]
- boost/spirit/home/x3/auxiliary.hpp [5:6]
- boost/spirit/home/x3/auxiliary/any_parser.hpp [5:6]
- boost/spirit/home/x3/auxiliary/attr.hpp [6:7]
- boost/spirit/home/x3/auxiliary/eoi.hpp [5:6]
- boost/spirit/home/x3/auxiliary/eol.hpp [5:6]
- boost/spirit/home/x3/auxiliary/eps.hpp [4:5]
- boost/spirit/home/x3/auxiliary/guard.hpp [4:5]
- boost/spirit/home/x3/binary.hpp [4:5]
- boost/spirit/home/x3/binary/binary.hpp [5:6]
- boost/spirit/home/x3/char.hpp [4:5]
- boost/spirit/home/x3/char/any_char.hpp [4:5]
- boost/spirit/home/x3/char/char.hpp [4:5]
- boost/spirit/home/x3/char/char_class.hpp [4:5]
- boost/spirit/home/x3/char/char_class_tags.hpp [4:5]
- boost/spirit/home/x3/char/char_parser.hpp [4:5]
- boost/spirit/home/x3/char/char_set.hpp [4:5]
- boost/spirit/home/x3/char/detail/cast_char.hpp [5:6]
- boost/spirit/home/x3/char/literal_char.hpp [4:5]
- boost/spirit/home/x3/char/negated_char_parser.hpp [4:5]
- boost/spirit/home/x3/char/unicode.hpp [4:5]
- boost/spirit/home/x3/core.hpp [4:5]
- boost/spirit/home/x3/core/action.hpp [4:5]
- boost/spirit/home/x3/core/call.hpp [4:5]
- boost/spirit/home/x3/core/detail/parse_into_container.hpp [4:5]
- boost/spirit/home/x3/core/parse.hpp [4:5]
- boost/spirit/home/x3/core/parser.hpp [5:6]
- boost/spirit/home/x3/core/proxy.hpp [4:5]
- boost/spirit/home/x3/core/skip_over.hpp [4:5]
- boost/spirit/home/x3/directive.hpp [4:5]
- boost/spirit/home/x3/directive/confix.hpp [5:6]
- boost/spirit/home/x3/directive/expect.hpp [4:5]
- boost/spirit/home/x3/directive/lexeme.hpp [4:5]
- boost/spirit/home/x3/directive/matches.hpp [5:6]
- boost/spirit/home/x3/directive/no_case.hpp [4:5]
- boost/spirit/home/x3/directive/no_skip.hpp [6:7]
- boost/spirit/home/x3/directive/omit.hpp [4:5]
- boost/spirit/home/x3/directive/raw.hpp [4:5]
- boost/spirit/home/x3/directive/repeat.hpp [6:7]
- boost/spirit/home/x3/directive/seek.hpp [5:6]
- boost/spirit/home/x3/directive/skip.hpp [5:6]
- boost/spirit/home/x3/directive/with.hpp [4:5]
- boost/spirit/home/x3/nonterminal.hpp [4:5]
- boost/spirit/home/x3/nonterminal/debug_handler_state.hpp [4:5]
- boost/spirit/home/x3/nonterminal/detail/rule.hpp [4:5]
- boost/spirit/home/x3/nonterminal/detail/transform_attribute.hpp [5:6]
- boost/spirit/home/x3/nonterminal/rule.hpp [4:5]
- boost/spirit/home/x3/nonterminal/simple_trace.hpp [5:6]
- boost/spirit/home/x3/numeric.hpp [4:5]
- boost/spirit/home/x3/numeric/bool.hpp [5:6]
- boost/spirit/home/x3/numeric/bool_policies.hpp [5:6]
- boost/spirit/home/x3/numeric/int.hpp [4:5]
- boost/spirit/home/x3/numeric/real.hpp [4:5]
- boost/spirit/home/x3/numeric/real_policies.hpp [5:6]
- boost/spirit/home/x3/numeric/uint.hpp [5:6]
- boost/spirit/home/x3/operator.hpp [4:5]
- boost/spirit/home/x3/operator/alternative.hpp [4:5]
- boost/spirit/home/x3/operator/and_predicate.hpp [4:5]
- boost/spirit/home/x3/operator/detail/alternative.hpp [4:5]
- boost/spirit/home/x3/operator/detail/sequence.hpp [4:5]
- boost/spirit/home/x3/operator/difference.hpp [4:5]
- boost/spirit/home/x3/operator/kleene.hpp [5:6]
- boost/spirit/home/x3/operator/list.hpp [5:6]
- boost/spirit/home/x3/operator/not_predicate.hpp [4:5]
- boost/spirit/home/x3/operator/optional.hpp [5:6]
- boost/spirit/home/x3/operator/plus.hpp [5:6]
- boost/spirit/home/x3/operator/sequence.hpp [4:5]
- boost/spirit/home/x3/string.hpp [4:5]
- boost/spirit/home/x3/string/detail/no_case_string_parse.hpp [4:5]
- boost/spirit/home/x3/string/detail/string_parse.hpp [4:5]
- boost/spirit/home/x3/string/detail/tst.hpp [4:5]
- boost/spirit/home/x3/string/literal_string.hpp [4:5]
- boost/spirit/home/x3/string/symbols.hpp [5:6]
- boost/spirit/home/x3/string/tst.hpp [4:5]
- boost/spirit/home/x3/string/tst_map.hpp [4:5]
- boost/spirit/home/x3/support/ast/position_tagged.hpp [4:5]
- boost/spirit/home/x3/support/ast/variant.hpp [4:5]
- boost/spirit/home/x3/support/context.hpp [5:6]
- boost/spirit/home/x3/support/no_case.hpp [4:5]
- boost/spirit/home/x3/support/numeric_utils/detail/extract_int.hpp [8:9]
- boost/spirit/home/x3/support/numeric_utils/extract_int.hpp [5:6]
- boost/spirit/home/x3/support/numeric_utils/extract_real.hpp [6:7]
- boost/spirit/home/x3/support/numeric_utils/pow10.hpp [6:7]
- boost/spirit/home/x3/support/numeric_utils/sign.hpp [6:7]
- boost/spirit/home/x3/support/subcontext.hpp [6:7]
- boost/spirit/home/x3/support/traits/attribute_category.hpp [5:6]
- boost/spirit/home/x3/support/traits/attribute_of.hpp [6:7]
- boost/spirit/home/x3/support/traits/attribute_type.hpp [5:6]
- boost/spirit/home/x3/support/traits/container_traits.hpp [6:7]
- boost/spirit/home/x3/support/traits/handles_container.hpp [5:6]
- boost/spirit/home/x3/support/traits/has_attribute.hpp [6:7]
- boost/spirit/home/x3/support/traits/is_parser.hpp [5:6]
- boost/spirit/home/x3/support/traits/is_range.hpp [5:6]
- boost/spirit/home/x3/support/traits/is_substitute.hpp [5:6]
- boost/spirit/home/x3/support/traits/is_variant.hpp [5:6]
- boost/spirit/home/x3/support/traits/make_attribute.hpp [6:7]
- boost/spirit/home/x3/support/traits/move_to.hpp [6:7]
- boost/spirit/home/x3/support/traits/optional_traits.hpp [6:7]
- boost/spirit/home/x3/support/traits/print_attribute.hpp [5:6]
- boost/spirit/home/x3/support/traits/print_token.hpp [5:6]
- boost/spirit/home/x3/support/traits/string_traits.hpp [6:7]
- boost/spirit/home/x3/support/traits/transform_attribute.hpp [6:7]
- boost/spirit/home/x3/support/traits/tuple_traits.hpp [4:5]
- boost/spirit/home/x3/support/traits/value_traits.hpp [6:7]
- boost/spirit/home/x3/support/traits/variant_find_substitute.hpp [5:6]
- boost/spirit/home/x3/support/traits/variant_has_substitute.hpp [5:6]
- boost/spirit/home/x3/support/unused.hpp [5:6]
- boost/spirit/home/x3/support/utility/annotate_on_success.hpp [4:5]
- boost/spirit/home/x3/support/utility/error_reporting.hpp [4:5]
- boost/spirit/home/x3/support/utility/is_callable.hpp [4:5]
- boost/spirit/home/x3/support/utility/lambda_visitor.hpp [4:5]
- boost/spirit/home/x3/support/utility/sfinae.hpp [5:6]
- boost/spirit/home/x3/support/utility/testing.hpp [4:5]
- boost/spirit/home/x3/support/utility/unrefcv.hpp [4:5]
- boost/spirit/home/x3/support/utility/utf8.hpp [4:5]
- boost/spirit/include/karma.hpp [6:7]
- boost/spirit/include/karma_action.hpp [6:7]
- boost/spirit/include/karma_alternative.hpp [6:7]
- boost/spirit/include/karma_and_predicate.hpp [6:7]
- boost/spirit/include/karma_as.hpp [7:8]
- boost/spirit/include/karma_attr_cast.hpp [6:7]
- boost/spirit/include/karma_auto.hpp [6:7]
- boost/spirit/include/karma_auxiliary.hpp [6:7]
- boost/spirit/include/karma_binary.hpp [6:7]
- boost/spirit/include/karma_bool.hpp [6:7]
- boost/spirit/include/karma_buffer.hpp [6:7]
- boost/spirit/include/karma_center_alignment.hpp [6:7]
- boost/spirit/include/karma_char.hpp [6:7]
- boost/spirit/include/karma_char_.hpp [6:7]
- boost/spirit/include/karma_char_class.hpp [6:7]
- boost/spirit/include/karma_columns.hpp [6:7]
- boost/spirit/include/karma_delimit.hpp [6:7]
- boost/spirit/include/karma_directive.hpp [6:7]
- boost/spirit/include/karma_domain.hpp [6:7]
- boost/spirit/include/karma_duplicate.hpp [6:7]
- boost/spirit/include/karma_eol.hpp [6:7]
- boost/spirit/include/karma_eps.hpp [6:7]
- boost/spirit/include/karma_format.hpp [6:7]
- boost/spirit/include/karma_format_attr.hpp [6:7]
- boost/spirit/include/karma_format_auto.hpp [6:7]
- boost/spirit/include/karma_generate.hpp [6:7]
- boost/spirit/include/karma_generate_attr.hpp [6:7]
- boost/spirit/include/karma_generate_auto.hpp [6:7]
- boost/spirit/include/karma_grammar.hpp [6:7]
- boost/spirit/include/karma_int.hpp [6:7]
- boost/spirit/include/karma_kleene.hpp [6:7]
- boost/spirit/include/karma_lazy.hpp [6:7]
- boost/spirit/include/karma_left_alignment.hpp [6:7]
- boost/spirit/include/karma_list.hpp [6:7]
- boost/spirit/include/karma_maxwidth.hpp [6:7]
- boost/spirit/include/karma_no_delimit.hpp [6:7]
- boost/spirit/include/karma_nonterminal.hpp [6:7]
- boost/spirit/include/karma_not_predicate.hpp [6:7]
- boost/spirit/include/karma_numeric.hpp [6:7]
- boost/spirit/include/karma_omit.hpp [6:7]
- boost/spirit/include/karma_operator.hpp [6:7]
- boost/spirit/include/karma_optional.hpp [6:7]
- boost/spirit/include/karma_phoenix_attributes.hpp [6:7]
- boost/spirit/include/karma_plus.hpp [6:7]
- boost/spirit/include/karma_real.hpp [6:7]
- boost/spirit/include/karma_repeat.hpp [6:7]
- boost/spirit/include/karma_right_alignment.hpp [6:7]
- boost/spirit/include/karma_rule.hpp [6:7]
- boost/spirit/include/karma_sequence.hpp [6:7]
- boost/spirit/include/karma_stream.hpp [6:7]
- boost/spirit/include/karma_strict_relaxed.hpp [6:7]
- boost/spirit/include/karma_string.hpp [6:7]
- boost/spirit/include/karma_symbols.hpp [6:7]
- boost/spirit/include/karma_uint.hpp [6:7]
- boost/spirit/include/karma_upper_lower_case.hpp [6:7]
- boost/spirit/include/karma_verbatim.hpp [6:7]
- boost/spirit/include/karma_what.hpp [6:7]
- boost/spirit/include/lex.hpp [6:7]
- boost/spirit/include/lex_char_token_def.hpp [6:7]
- boost/spirit/include/lex_domain.hpp [6:7]
- boost/spirit/include/lex_generate_static_lexertl.hpp [6:7]
- boost/spirit/include/lex_lexer.hpp [6:7]
- boost/spirit/include/lex_lexertl.hpp [6:7]
- boost/spirit/include/lex_lexertl_position_token.hpp [6:7]
- boost/spirit/include/lex_lexertl_token.hpp [6:7]
- boost/spirit/include/lex_plain_token.hpp [6:7]
- boost/spirit/include/lex_primitives.hpp [6:7]
- boost/spirit/include/lex_static_lexertl.hpp [6:7]
- boost/spirit/include/lex_tokenize_and_parse.hpp [6:7]
- boost/spirit/include/lex_tokenize_and_parse_attr.hpp [6:7]
- boost/spirit/include/phoenix.hpp [6:7]
- boost/spirit/include/phoenix_algorithm.hpp [6:7]
- boost/spirit/include/phoenix_bind.hpp [6:7]
- boost/spirit/include/phoenix_container.hpp [6:7]
- boost/spirit/include/phoenix_core.hpp [6:7]
- boost/spirit/include/phoenix_function.hpp [6:7]
- boost/spirit/include/phoenix_fusion.hpp [6:7]
- boost/spirit/include/phoenix_limits.hpp [6:7]
- boost/spirit/include/phoenix_object.hpp [6:7]
- boost/spirit/include/phoenix_operator.hpp [6:7]
- boost/spirit/include/phoenix_scope.hpp [6:7]
- boost/spirit/include/phoenix_statement.hpp [6:7]
- boost/spirit/include/phoenix_stl.hpp [6:7]
- boost/spirit/include/phoenix_version.hpp [6:7]
- boost/spirit/include/qi.hpp [6:7]
- boost/spirit/include/qi_action.hpp [6:7]
- boost/spirit/include/qi_alternative.hpp [6:7]
- boost/spirit/include/qi_and_predicate.hpp [6:7]
- boost/spirit/include/qi_as.hpp [7:8]
- boost/spirit/include/qi_as_string.hpp [6:7]
- boost/spirit/include/qi_attr.hpp [6:7]
- boost/spirit/include/qi_attr_cast.hpp [6:7]
- boost/spirit/include/qi_auto.hpp [6:7]
- boost/spirit/include/qi_auxiliary.hpp [6:7]
- boost/spirit/include/qi_binary.hpp [6:7]
- boost/spirit/include/qi_bool.hpp [6:7]
- boost/spirit/include/qi_char.hpp [6:7]
- boost/spirit/include/qi_char_.hpp [6:7]
- boost/spirit/include/qi_char_class.hpp [6:7]
- boost/spirit/include/qi_copy.hpp [5:6]
- boost/spirit/include/qi_core.hpp [6:7]
- boost/spirit/include/qi_difference.hpp [6:7]
- boost/spirit/include/qi_directive.hpp [6:7]
- boost/spirit/include/qi_domain.hpp [6:7]
- boost/spirit/include/qi_eoi.hpp [6:7]
- boost/spirit/include/qi_eol.hpp [6:7]
- boost/spirit/include/qi_eps.hpp [6:7]
- boost/spirit/include/qi_expect.hpp [6:7]
- boost/spirit/include/qi_grammar.hpp [6:7]
- boost/spirit/include/qi_hold.hpp [6:7]
- boost/spirit/include/qi_int.hpp [6:7]
- boost/spirit/include/qi_kleene.hpp [6:7]
- boost/spirit/include/qi_lazy.hpp [6:7]
- boost/spirit/include/qi_lexeme.hpp [6:7]
- boost/spirit/include/qi_list.hpp [6:7]
- boost/spirit/include/qi_lit.hpp [6:7]
- boost/spirit/include/qi_match.hpp [6:7]
- boost/spirit/include/qi_match_attr.hpp [6:7]
- boost/spirit/include/qi_match_auto.hpp [6:7]
- boost/spirit/include/qi_matches.hpp [6:7]
- boost/spirit/include/qi_no_case.hpp [6:7]
- boost/spirit/include/qi_no_skip.hpp [6:7]
- boost/spirit/include/qi_nonterminal.hpp [6:7]
- boost/spirit/include/qi_not_predicate.hpp [6:7]
- boost/spirit/include/qi_numeric.hpp [6:7]
- boost/spirit/include/qi_omit.hpp [6:7]
- boost/spirit/include/qi_operator.hpp [6:7]
- boost/spirit/include/qi_optional.hpp [6:7]
- boost/spirit/include/qi_parse.hpp [6:7]
- boost/spirit/include/qi_parse_attr.hpp [6:7]
- boost/spirit/include/qi_parse_auto.hpp [6:7]
- boost/spirit/include/qi_permutation.hpp [6:7]
- boost/spirit/include/qi_plus.hpp [6:7]
- boost/spirit/include/qi_raw.hpp [6:7]
- boost/spirit/include/qi_real.hpp [6:7]
- boost/spirit/include/qi_repeat.hpp [6:7]
- boost/spirit/include/qi_rule.hpp [6:7]
- boost/spirit/include/qi_sequence.hpp [6:7]
- boost/spirit/include/qi_sequential_or.hpp [6:7]
- boost/spirit/include/qi_skip.hpp [6:7]
- boost/spirit/include/qi_stream.hpp [6:7]
- boost/spirit/include/qi_string.hpp [6:7]
- boost/spirit/include/qi_symbols.hpp [6:7]
- boost/spirit/include/qi_uint.hpp [6:7]
- boost/spirit/include/qi_what.hpp [6:7]
- boost/spirit/include/support.hpp [6:7]
- boost/spirit/include/support_adapt_adt_attributes.hpp [6:7]
- boost/spirit/include/support_any.hpp [6:7]
- boost/spirit/include/support_any_if.hpp [6:7]
- boost/spirit/include/support_any_if_ns.hpp [6:7]
- boost/spirit/include/support_any_if_ns_so.hpp [6:7]
- boost/spirit/include/support_any_ns.hpp [6:7]
- boost/spirit/include/support_any_ns_so.hpp [6:7]
- boost/spirit/include/support_argument.hpp [6:7]
- boost/spirit/include/support_ascii.hpp [6:7]
- boost/spirit/include/support_attributes.hpp [6:7]
- boost/spirit/include/support_attributes_fwd.hpp [6:7]
- boost/spirit/include/support_auto.hpp [5:6]
- boost/spirit/include/support_char_class.hpp [6:7]
- boost/spirit/include/support_container.hpp [6:7]
- boost/spirit/include/support_extended_variant.hpp [6:7]
- boost/spirit/include/support_info.hpp [5:6]
- boost/spirit/include/support_iso8859_1.hpp [6:7]
- boost/spirit/include/support_istream_iterator.hpp [6:7]
- boost/spirit/include/support_line_pos_iterator.hpp [7:8]
- boost/spirit/include/support_locals.hpp [6:7]
- boost/spirit/include/support_look_ahead.hpp [6:7]
- boost/spirit/include/support_modify.hpp [6:7]
- boost/spirit/include/support_multi_pass.hpp [6:7]
- boost/spirit/include/support_multi_pass_fwd.hpp [6:7]
- boost/spirit/include/support_ostream_iterator.hpp [6:7]
- boost/spirit/include/support_standard.hpp [6:7]
- boost/spirit/include/support_standard_wide.hpp [6:7]
- boost/spirit/include/support_string_traits.hpp [6:7]
- boost/spirit/include/support_unused.hpp [6:7]
- boost/spirit/include/support_utree.hpp [6:7]
- boost/spirit/repository/home/qi/directive/kwd.hpp [5:6]
- boost/spirit/repository/home/qi/directive/seek.hpp [4:5]
- boost/spirit/repository/home/qi/nonterminal/subrule.hpp [5:6]
- boost/spirit/repository/home/qi/operator/keywords.hpp [5:6]
- boost/spirit/repository/home/support/seek.hpp [4:5]
- boost/spirit/repository/home/support/subrule_context.hpp [5:6]
- boost/spirit/repository/include/karma.hpp [6:7]
- boost/spirit/repository/include/karma_confix.hpp [6:7]
- boost/spirit/repository/include/karma_directive.hpp [6:7]
- boost/spirit/repository/include/karma_nonterminal.hpp [7:8]
- boost/spirit/repository/include/karma_subrule.hpp [7:8]
- boost/spirit/repository/include/qi.hpp [6:7]
- boost/spirit/repository/include/qi_advance.hpp [5:6]
- boost/spirit/repository/include/qi_confix.hpp [6:7]
- boost/spirit/repository/include/qi_directive.hpp [6:7]
- boost/spirit/repository/include/qi_distinct.hpp [6:7]
- boost/spirit/repository/include/qi_flush_multi_pass.hpp [6:7]
- boost/spirit/repository/include/qi_iter_pos.hpp [6:7]
- boost/spirit/repository/include/qi_keywords.hpp [7:8]
- boost/spirit/repository/include/qi_kwd.hpp [7:8]
- boost/spirit/repository/include/qi_kwd.hpp [26:27]
- boost/spirit/repository/include/qi_nonterminal.hpp [7:8]
- boost/spirit/repository/include/qi_primitive.hpp [6:7]
- boost/spirit/repository/include/qi_seek.hpp [4:5]
- boost/spirit/repository/include/qi_subrule.hpp [7:8]
- boost/wave/cpplexer/re2clex/aq.hpp [8:9]
- boost/wave/cpplexer/re2clex/scanner.hpp [8:9]
- boost/wave/whitespace_handling.hpp [9:10]
-
-KEEP BSL-1.0 9fb081f2a852987d2716ab3ba93685bc
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/max_cardinality_matching.hpp at line 5
- License text:
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/graph/max_cardinality_matching.hpp [4:6]
-
-KEEP BSL-1.0 9fb8b120ca696580426b88ed5a5c689b
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/proto/detail/expr.hpp at line 63, boost/proto/detail/preprocessed/expr.hpp at line 7
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/proto/detail/expr.hpp [61:63]
- boost/proto/detail/preprocessed/expr.hpp [5:7]
-
-KEEP BSL-1.0 a015b34eee4e5d1c766df0beb1fbb028
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signals.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/signals.hpp [3:6]
-
-KEEP BSL-1.0 a0c313f5525cd61a817a8bd728719d3a
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/numeric/interval.hpp at line 7, boost/numeric/interval/arith.hpp at line 7, boost/numeric/interval/arith2.hpp at line 10, boost/numeric/interval/arith3.hpp at line 11, boost/numeric/interval/checking.hpp at line 6, boost/numeric/interval/compare.hpp at line 6, boost/numeric/interval/compare/certain.hpp at line 6, boost/numeric/interval/compare/explicit.hpp at line 7, boost/numeric/interval/compare/lexicographic.hpp at line 6, boost/numeric/interval/compare/possible.hpp at line 6, boost/numeric/interval/compare/set.hpp at line 6, boost/numeric/interval/compare/tribool.hpp at line 6, boost/numeric/interval/constants.hpp at line 6, boost/numeric/interval/detail/alpha_rounding_control.hpp at line 6, boost/numeric/interval/detail/bcc_rounding_control.hpp at line 7, boost/numeric/interval/detail/bugs.hpp at line 7, boost/numeric/interval/detail/c99_rounding_control.hpp at line 7, boost/numeric/interval/detail/c99sub_rounding_control.hpp at line 7, boost/numeric/interval/detail/division.hpp at line 6, boost/numeric/interval/detail/ia64_rounding_control.hpp at line 6, boost/numeric/interval/detail/interval_prototype.hpp at line 6, boost/numeric/interval/detail/msvc_rounding_control.hpp at line 7, boost/numeric/interval/detail/ppc_rounding_control.hpp at line 8, boost/numeric/interval/detail/sparc_rounding_control.hpp at line 7, boost/numeric/interval/detail/test_input.hpp at line 6, boost/numeric/interval/detail/x86_rounding_control.hpp at line 7, boost/numeric/interval/detail/x86gcc_rounding_control.hpp at line 7, boost/numeric/interval/ext/integer.hpp at line 6, boost/numeric/interval/ext/x86_fast_rounding_control.hpp at line 13, boost/numeric/interval/hw_rounding.hpp at line 7, boost/numeric/interval/interval.hpp at line 6, boost/numeric/interval/io.hpp at line 13, boost/numeric/interval/limits.hpp at line 7, boost/numeric/interval/policies.hpp at line 6, boost/numeric/interval/rounded_arith.hpp at line 6, boost/numeric/interval/rounded_transc.hpp at line 6, boost/numeric/interval/rounding.hpp at line 6, boost/numeric/interval/transc.hpp at line 7, boost/numeric/interval/utility.hpp at line 7
- License text:
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or
- * copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/numeric/interval.hpp [6:8]
- boost/numeric/interval/arith.hpp [6:8]
- boost/numeric/interval/arith2.hpp [9:11]
- boost/numeric/interval/arith3.hpp [10:12]
- boost/numeric/interval/checking.hpp [5:7]
- boost/numeric/interval/compare.hpp [5:7]
- boost/numeric/interval/compare/certain.hpp [5:7]
- boost/numeric/interval/compare/explicit.hpp [6:8]
- boost/numeric/interval/compare/lexicographic.hpp [5:7]
- boost/numeric/interval/compare/possible.hpp [5:7]
- boost/numeric/interval/compare/set.hpp [5:7]
- boost/numeric/interval/compare/tribool.hpp [5:7]
- boost/numeric/interval/constants.hpp [5:7]
- boost/numeric/interval/detail/alpha_rounding_control.hpp [5:7]
- boost/numeric/interval/detail/bcc_rounding_control.hpp [6:8]
- boost/numeric/interval/detail/bugs.hpp [6:8]
- boost/numeric/interval/detail/c99_rounding_control.hpp [6:8]
- boost/numeric/interval/detail/c99sub_rounding_control.hpp [6:8]
- boost/numeric/interval/detail/division.hpp [5:7]
- boost/numeric/interval/detail/ia64_rounding_control.hpp [5:7]
- boost/numeric/interval/detail/interval_prototype.hpp [5:7]
- boost/numeric/interval/detail/msvc_rounding_control.hpp [6:8]
- boost/numeric/interval/detail/ppc_rounding_control.hpp [7:9]
- boost/numeric/interval/detail/sparc_rounding_control.hpp [6:8]
- boost/numeric/interval/detail/test_input.hpp [5:7]
- boost/numeric/interval/detail/x86_rounding_control.hpp [6:8]
- boost/numeric/interval/detail/x86gcc_rounding_control.hpp [6:8]
- boost/numeric/interval/ext/integer.hpp [5:7]
- boost/numeric/interval/ext/x86_fast_rounding_control.hpp [12:14]
- boost/numeric/interval/hw_rounding.hpp [6:8]
- boost/numeric/interval/interval.hpp [5:7]
- boost/numeric/interval/io.hpp [12:14]
- boost/numeric/interval/limits.hpp [6:8]
- boost/numeric/interval/policies.hpp [5:7]
- boost/numeric/interval/rounded_arith.hpp [5:7]
- boost/numeric/interval/rounded_transc.hpp [5:7]
- boost/numeric/interval/rounding.hpp [5:7]
- boost/numeric/interval/transc.hpp [6:8]
- boost/numeric/interval/utility.hpp [6:8]
-
-KEEP BSL-1.0 a138a947ff9ed38e8f57fe26c02cbbf2
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/random/detail/iterator_mixin.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 92.11
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/random/detail/iterator_mixin.hpp [4:10]
-
-KEEP BSL-1.0 a17fcea4674a991c2ced55620c9f9ef3
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/function.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/function.hpp [3:6]
-
-KEEP BSL-1.0 a33a9326898e5c686dcfd60e20f5be85
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/pointer_cast.hpp at line 5
- License text:
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/pointer_cast.hpp [4:6]
-
-KEEP BSL-1.0 a36dba6b40d537acb66da7cd7f754fef
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/spirit/home/support/char_encoding/unicode/create_tables.cpp at line 453
- License text:
- << " Distributed under the Boost Software License, Version 1.0. (See accompanying\n"
- << " file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)\n"
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/spirit/home/support/char_encoding/unicode/create_tables.cpp [452:453]
-
-KEEP BSL-1.0 a436b72bbdfb67382aecedd9507e3ad1
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/utility.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/utility.hpp [3:5]
-
-KEEP BSL-1.0 a481dd7f992b299b42a5bfb04aafbb70
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/date_time/adjust_functors.hpp at line 7, boost/date_time/c_time.hpp at line 7, boost/date_time/date.hpp at line 7, boost/date_time/date_duration.hpp at line 7, boost/date_time/date_facet.hpp at line 7, boost/date_time/date_formatting_locales.hpp at line 7, boost/date_time/date_generators.hpp at line 7, boost/date_time/date_iterator.hpp at line 7, boost/date_time/date_names_put.hpp at line 7, boost/date_time/date_parsing.hpp at line 7, boost/date_time/filetime_functions.hpp at line 7, boost/date_time/gregorian/conversion.hpp at line 7, boost/date_time/gregorian/greg_calendar.hpp at line 7, boost/date_time/gregorian/greg_date.hpp at line 7, boost/date_time/gregorian/gregorian_io.hpp at line 7, boost/date_time/gregorian_calendar.hpp at line 7, boost/date_time/gregorian_calendar.ipp at line 4, boost/date_time/locale_config.hpp at line 7, boost/date_time/microsec_time_clock.hpp at line 7, boost/date_time/posix_time/conversion.hpp at line 7, boost/date_time/posix_time/posix_time_config.hpp at line 7, boost/date_time/posix_time/posix_time_io.hpp at line 7, boost/date_time/posix_time/time_formatters.hpp at line 7, boost/date_time/posix_time/time_formatters_limited.hpp at line 7, boost/date_time/string_parse_tree.hpp at line 7, boost/date_time/strings_from_facet.hpp at line 7, boost/date_time/time_clock.hpp at line 7, boost/date_time/time_duration.hpp at line 7, boost/date_time/time_facet.hpp at line 8, boost/date_time/time_iterator.hpp at line 7, boost/date_time/time_resolution_traits.hpp at line 7, boost/date_time/wrapping_int.hpp at line 7
- License text:
- * Use, modification and distribution is subject to the
- * Boost Software License, Version 1.0. (See accompanying
- * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 90.62
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/date_time/adjust_functors.hpp [5:7]
- boost/date_time/c_time.hpp [5:7]
- boost/date_time/date.hpp [5:7]
- boost/date_time/date_duration.hpp [5:7]
- boost/date_time/date_facet.hpp [5:7]
- boost/date_time/date_formatting_locales.hpp [5:7]
- boost/date_time/date_generators.hpp [5:7]
- boost/date_time/date_iterator.hpp [5:7]
- boost/date_time/date_names_put.hpp [5:7]
- boost/date_time/date_parsing.hpp [5:7]
- boost/date_time/filetime_functions.hpp [5:7]
- boost/date_time/gregorian/conversion.hpp [5:7]
- boost/date_time/gregorian/greg_calendar.hpp [5:7]
- boost/date_time/gregorian/greg_date.hpp [5:7]
- boost/date_time/gregorian/gregorian_io.hpp [5:7]
- boost/date_time/gregorian_calendar.hpp [5:7]
- boost/date_time/gregorian_calendar.ipp [2:4]
- boost/date_time/locale_config.hpp [5:7]
- boost/date_time/microsec_time_clock.hpp [5:7]
- boost/date_time/posix_time/conversion.hpp [5:7]
- boost/date_time/posix_time/posix_time_config.hpp [5:7]
- boost/date_time/posix_time/posix_time_io.hpp [5:7]
- boost/date_time/posix_time/time_formatters.hpp [5:7]
- boost/date_time/posix_time/time_formatters_limited.hpp [5:7]
- boost/date_time/string_parse_tree.hpp [5:7]
- boost/date_time/strings_from_facet.hpp [5:7]
- boost/date_time/time_clock.hpp [5:7]
- boost/date_time/time_duration.hpp [5:7]
- boost/date_time/time_facet.hpp [6:8]
- boost/date_time/time_iterator.hpp [5:7]
- boost/date_time/time_resolution_traits.hpp [5:7]
- boost/date_time/wrapping_int.hpp [5:7]
-
-KEEP BSL-1.0 a4b06853a77321815bca2cbd7654b649
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/algorithm.hpp at line 3, boost/detail/endian.hpp at line 3, boost/detail/utf8_codecvt_facet.hpp at line 4, boost/functional.hpp at line 4, boost/statechart/asynchronous_state_machine.hpp at line 6, boost/statechart/custom_reaction.hpp at line 6, boost/statechart/deep_history.hpp at line 6, boost/statechart/deferral.hpp at line 6, boost/statechart/detail/avoid_unused_warning.hpp at line 6, boost/statechart/detail/constructor.hpp at line 6, boost/statechart/detail/counted_base.hpp at line 6, boost/statechart/detail/leaf_state.hpp at line 6, boost/statechart/detail/memory.hpp at line 6, boost/statechart/detail/node_state.hpp at line 6, boost/statechart/detail/reaction_dispatcher.hpp at line 6, boost/statechart/detail/rtti_policy.hpp at line 6, boost/statechart/detail/state_base.hpp at line 6, boost/statechart/event.hpp at line 6, boost/statechart/event_base.hpp at line 6, boost/statechart/event_processor.hpp at line 6, boost/statechart/exception_translator.hpp at line 6, boost/statechart/fifo_scheduler.hpp at line 6, boost/statechart/fifo_worker.hpp at line 6, boost/statechart/history.hpp at line 6, boost/statechart/in_state_reaction.hpp at line 6, boost/statechart/null_exception_translator.hpp at line 6, boost/statechart/processor_container.hpp at line 6, boost/statechart/result.hpp at line 6, boost/statechart/shallow_history.hpp at line 6, boost/statechart/simple_state.hpp at line 6, boost/statechart/state.hpp at line 6, boost/statechart/state_machine.hpp at line 6, boost/statechart/termination.hpp at line 6, boost/statechart/transition.hpp at line 6, boost/xpressive/detail/utility/counted_base.hpp at line 4
- License text:
- // Distributed under the Boost Software License, Version 1.0. (See accompany-
- // ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.30
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/detail/algorithm.hpp [2:3]
- boost/detail/endian.hpp [2:3]
- boost/detail/utf8_codecvt_facet.hpp [3:4]
- boost/functional.hpp [3:4]
- boost/statechart/asynchronous_state_machine.hpp [5:6]
- boost/statechart/custom_reaction.hpp [5:6]
- boost/statechart/deep_history.hpp [5:6]
- boost/statechart/deferral.hpp [5:6]
- boost/statechart/detail/avoid_unused_warning.hpp [5:6]
- boost/statechart/detail/constructor.hpp [5:6]
- boost/statechart/detail/counted_base.hpp [5:6]
- boost/statechart/detail/leaf_state.hpp [5:6]
- boost/statechart/detail/memory.hpp [5:6]
- boost/statechart/detail/node_state.hpp [5:6]
- boost/statechart/detail/reaction_dispatcher.hpp [5:6]
- boost/statechart/detail/rtti_policy.hpp [5:6]
- boost/statechart/detail/state_base.hpp [5:6]
- boost/statechart/event.hpp [5:6]
- boost/statechart/event_base.hpp [5:6]
- boost/statechart/event_processor.hpp [5:6]
- boost/statechart/exception_translator.hpp [5:6]
- boost/statechart/fifo_scheduler.hpp [5:6]
- boost/statechart/fifo_worker.hpp [5:6]
- boost/statechart/history.hpp [5:6]
- boost/statechart/in_state_reaction.hpp [5:6]
- boost/statechart/null_exception_translator.hpp [5:6]
- boost/statechart/processor_container.hpp [5:6]
- boost/statechart/result.hpp [5:6]
- boost/statechart/shallow_history.hpp [5:6]
- boost/statechart/simple_state.hpp [5:6]
- boost/statechart/state.hpp [5:6]
- boost/statechart/state_machine.hpp [5:6]
- boost/statechart/termination.hpp [5:6]
- boost/statechart/transition.hpp [5:6]
- boost/xpressive/detail/utility/counted_base.hpp [3:4]
-
-KEEP BSL-1.0 a4cb981d0e39a7a7883dd77549fe4448
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/functional/factory.hpp at line 5, boost/functional/forward_adapter.hpp at line 5, boost/functional/lightweight_forward_adapter.hpp at line 5, boost/functional/value_factory.hpp at line 5, boost/fusion/functional.hpp at line 5, boost/fusion/functional/adapter.hpp at line 5, boost/fusion/functional/adapter/detail/access.hpp at line 5, boost/fusion/functional/adapter/fused.hpp at line 5, boost/fusion/functional/adapter/fused_function_object.hpp at line 5, boost/fusion/functional/adapter/fused_procedure.hpp at line 5, boost/fusion/functional/adapter/limits.hpp at line 5, boost/fusion/functional/adapter/unfused.hpp at line 5, boost/fusion/functional/adapter/unfused_typed.hpp at line 5, boost/fusion/functional/generation.hpp at line 5, boost/fusion/functional/generation/detail/gen_make_adapter.hpp at line 5, boost/fusion/functional/generation/make_fused.hpp at line 5, boost/fusion/functional/generation/make_fused_function_object.hpp at line 5, boost/fusion/functional/generation/make_fused_procedure.hpp at line 5, boost/fusion/functional/generation/make_unfused.hpp at line 5, boost/fusion/functional/invocation.hpp at line 5, boost/fusion/functional/invocation/detail/that_ptr.hpp at line 5, boost/fusion/functional/invocation/limits.hpp at line 5, boost/fusion/support/deduce.hpp at line 5
- License text:
- Use modification and distribution are subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/functional/factory.hpp [4:6]
- boost/functional/forward_adapter.hpp [4:6]
- boost/functional/lightweight_forward_adapter.hpp [4:6]
- boost/functional/value_factory.hpp [4:6]
- boost/fusion/functional.hpp [4:6]
- boost/fusion/functional/adapter.hpp [4:6]
- boost/fusion/functional/adapter/detail/access.hpp [4:6]
- boost/fusion/functional/adapter/fused.hpp [4:6]
- boost/fusion/functional/adapter/fused_function_object.hpp [4:6]
- boost/fusion/functional/adapter/fused_procedure.hpp [4:6]
- boost/fusion/functional/adapter/limits.hpp [4:6]
- boost/fusion/functional/adapter/unfused.hpp [4:6]
- boost/fusion/functional/adapter/unfused_typed.hpp [4:6]
- boost/fusion/functional/generation.hpp [4:6]
- boost/fusion/functional/generation/detail/gen_make_adapter.hpp [4:6]
- boost/fusion/functional/generation/make_fused.hpp [4:6]
- boost/fusion/functional/generation/make_fused_function_object.hpp [4:6]
- boost/fusion/functional/generation/make_fused_procedure.hpp [4:6]
- boost/fusion/functional/generation/make_unfused.hpp [4:6]
- boost/fusion/functional/invocation.hpp [4:6]
- boost/fusion/functional/invocation/detail/that_ptr.hpp [4:6]
- boost/fusion/functional/invocation/limits.hpp [4:6]
- boost/fusion/support/deduce.hpp [4:6]
-
-KEEP BSL-1.0 a5255d1626f948de09c788692e999646
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iterator/new_iterator_tests.hpp at line 11
- License text:
- // Use, modification and distribution is subject to the
- // Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/iterator/new_iterator_tests.hpp [9:12]
-
-SKIP MPL-1.1 a63fd5557ce55633633e929b4c64c3dc
-BELONGS ya.make
- License text:
- // Boost Graph concepts, MPL style
- Scancode info:
- Original SPDX id: MPL-1.1
- Score : 80.00
- Match type : REFERENCE
- Links : http://www.mozilla.com/MPL/1.1/index.html, http://www.mozilla.org/MPL/MPL-1.1.html, https://spdx.org/licenses/MPL-1.1
- Files with this license:
- boost/msm/mpl_graph/mpl_graph.hpp [31:31]
-
-KEEP BSL-1.0 a69d72c945db8bb62438c724b48f68ff
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/platform/vms.hpp at line 4
- License text:
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/config/platform/vms.hpp [2:4]
-
-KEEP BSL-1.0 a779859d4b2e8896d4ed9ba8f600ca99
-BELONGS ya.make
- License text:
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/cregex.hpp [6:8]
+ boost/regex.h [6:8]
+ boost/regex.hpp [6:8]
+ boost/regex/concepts.hpp [6:8]
+ boost/regex/config/borland.hpp [6:8]
+ boost/regex/config/cwchar.hpp [6:8]
+ boost/regex/icu.hpp [6:8]
+ boost/regex/mfc.hpp [6:8]
+ boost/regex/pattern_except.hpp [6:8]
+ boost/regex/pending/object_cache.hpp [6:8]
+ boost/regex/pending/static_mutex.hpp [6:8]
+ boost/regex/pending/unicode_iterator.hpp [6:8]
+ boost/regex/regex_traits.hpp [6:8]
+ boost/regex/user.hpp [6:8]
+ boost/regex/v4/basic_regex_creator.hpp [6:8]
+ boost/regex/v4/c_regex_traits.hpp [6:8]
+ boost/regex/v4/cpp_regex_traits.hpp [6:8]
+ boost/regex/v4/fileiter.hpp [6:8]
+ boost/regex/v4/iterator_category.hpp [6:8]
+ boost/regex/v4/iterator_traits.hpp [6:8]
+ boost/regex/v4/match_flags.hpp [6:8]
+ boost/regex/v4/match_results.hpp [6:8]
+ boost/regex/v4/mem_block_cache.hpp [5:7]
+ boost/regex/v4/perl_matcher.hpp [6:8]
+ boost/regex/v4/perl_matcher_common.hpp [6:8]
+ boost/regex/v4/perl_matcher_non_recursive.hpp [6:8]
+ boost/regex/v4/perl_matcher_recursive.hpp [6:8]
+ boost/regex/v4/primary_transform.hpp [6:8]
+ boost/regex/v4/protected_call.hpp [6:8]
+ boost/regex/v4/regbase.hpp [6:8]
+ boost/regex/v4/regex.hpp [6:8]
+ boost/regex/v4/regex_format.hpp [6:8]
+ boost/regex/v4/regex_fwd.hpp [6:8]
+ boost/regex/v4/regex_grep.hpp [6:8]
+ boost/regex/v4/regex_iterator.hpp [6:8]
+ boost/regex/v4/regex_match.hpp [6:8]
+ boost/regex/v4/regex_merge.hpp [6:8]
+ boost/regex/v4/regex_raw_buffer.hpp [6:8]
+ boost/regex/v4/regex_replace.hpp [6:8]
+ boost/regex/v4/regex_search.hpp [6:8]
+ boost/regex/v4/regex_split.hpp [6:8]
+ boost/regex/v4/regex_traits.hpp [6:8]
+ boost/regex/v4/regex_workaround.hpp [6:8]
+ boost/regex/v4/states.hpp [6:8]
+ boost/regex/v4/sub_match.hpp [6:8]
+ boost/regex/v4/syntax_type.hpp [6:8]
+ boost/regex/v4/u32regex_iterator.hpp [6:8]
+ boost/regex/v4/u32regex_token_iterator.hpp [6:8]
+ boost/regex/v4/w32_regex_traits.hpp [6:8]
+ boost/regex_fwd.hpp [6:8]
+ libs/regex/src/c_regex_traits.cpp [6:8]
+ libs/regex/src/cpp_regex_traits.cpp [6:8]
+ libs/regex/src/cregex.cpp [6:8]
+ libs/regex/src/fileiter.cpp [6:8]
+ libs/regex/src/icu.cpp [6:8]
+ libs/regex/src/instances.cpp [6:8]
+ libs/regex/src/internals.hpp [6:8]
+ libs/regex/src/posix_api.cpp [6:8]
+ libs/regex/src/regex.cpp [6:8]
+ libs/regex/src/regex_debug.cpp [6:8]
+ libs/regex/src/regex_raw_buffer.cpp [6:8]
+ libs/regex/src/regex_traits_defaults.cpp [6:8]
+ libs/regex/src/static_mutex.cpp [6:8]
+ libs/regex/src/usinstances.cpp [6:8]
+ libs/regex/src/w32_regex_traits.cpp [6:8]
+ libs/regex/src/wc_regex_traits.cpp [6:8]
+ libs/regex/src/wide_posix_api.cpp [6:8]
+ libs/regex/src/winstances.cpp [6:8]
+
+KEEP BSL-1.0 7e488dcc33e05aa7d1480d1328f86b4e
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/date_time/gregorian/greg_duration_types.hpp at line 6
+ License text:
+ * Subject to Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 81.48
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/date_time/gregorian/greg_duration_types.hpp [5:6]
+
+KEEP BSL-1.0 7f762e9633d1993f42a043b4063080c5
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/median.hpp at line 6, boost/accumulators/statistics/weighted_mean.hpp at line 6, boost/accumulators/statistics/weighted_median.hpp at line 6, boost/accumulators/statistics/weighted_sum.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/accumulators/statistics/median.hpp [4:6]
+ boost/accumulators/statistics/weighted_mean.hpp [4:6]
+ boost/accumulators/statistics/weighted_median.hpp [4:6]
+ boost/accumulators/statistics/weighted_sum.hpp [4:6]
+
+SKIP MPL-1.1 80499698582f4da56012c9acc6d83c52
+BELONGS ya.make
+ License text:
+ //! Lift a MPL-style metafunction class to a Metafunction.
+ Scancode info:
+ Original SPDX id: MPL-1.1
+ Score : 80.00
+ Match type : REFERENCE
+ Links : http://www.mozilla.com/MPL/1.1/index.html, http://www.mozilla.org/MPL/MPL-1.1.html, https://spdx.org/licenses/MPL-1.1
+ Files with this license:
+ boost/hana/fwd/type.hpp [446:446]
+
+KEEP BSL-1.0 813f8ac244dee01bf8132c98b185b1f1
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/geometry/algorithms/detail/point_on_border.hpp at line 15
+ License text:
+ // Use, modification and distribution is subject to the Boost Software License,
+ // Version 1.Dimension. (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 93.75
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/geometry/algorithms/detail/point_on_border.hpp [14:16]
+
+KEEP BSL-1.0 AND BSL-1.0 81534fdf11ce43c96d75f25a8fd6c0ab
+BELONGS ya.make
+ License text:
+ // Use, modification and distribution are subject to the Boost Software License,
+ // Version 1.0. See http://www.boost.org/LICENSE_1_0.txt.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 59.38
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/convert.hpp [22:23]
+ boost/convert/base.hpp [2:3]
+ boost/convert/detail/char.hpp [2:3]
+ boost/convert/detail/config.hpp [2:3]
+ boost/convert/detail/has_member.hpp [2:3]
+ boost/convert/detail/is_callable.hpp [2:3]
+ boost/convert/detail/is_fun.hpp [2:3]
+ boost/convert/detail/range.hpp [2:3]
+ boost/convert/lexical_cast.hpp [2:3]
+ boost/convert/parameters.hpp [2:3]
+ boost/convert/printf.hpp [2:3]
+ boost/convert/stream.hpp [2:3]
+ boost/convert/strtol.hpp [2:3]
+ boost/make_default.hpp [3:4]
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/convert/detail/boost_parameter_ext.hpp [2:3]
+ boost/convert/detail/is_converter.hpp [2:3]
+ boost/convert/detail/is_string.hpp [2:3]
+ boost/convert/spirit.hpp [2:3]
+
+KEEP BSL-1.0 81e66a23cd062438370d4f6bb173b77a
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/extended_p_square.hpp at line 6, boost/accumulators/statistics/extended_p_square_quantile.hpp at line 6, boost/accumulators/statistics/p_square_quantile.hpp at line 6, boost/accumulators/statistics/weighted_extended_p_square.hpp at line 6, boost/accumulators/statistics/weighted_p_square_quantile.hpp at line 6
+ License text:
+ // Copyright 2005 Daniel Egloff. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/accumulators/statistics/extended_p_square.hpp [4:6]
+ boost/accumulators/statistics/extended_p_square_quantile.hpp [4:6]
+ boost/accumulators/statistics/p_square_quantile.hpp [4:6]
+ boost/accumulators/statistics/weighted_extended_p_square.hpp [4:6]
+ boost/accumulators/statistics/weighted_p_square_quantile.hpp [4:6]
+
+KEEP BSL-1.0 8400d1479aa5d0f1d34303e9c6b21e12
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/distributed/adjlist/serialization.hpp at line 3, boost/graph/distributed/shuffled_distribution.hpp at line 3
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/graph/distributed/adjlist/serialization.hpp [1:3]
+ boost/graph/distributed/shuffled_distribution.hpp [1:3]
+
+KEEP BSL-1.0 845ce6060100deffb4edaf2bf0afa16b
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/function_equal.hpp at line 6
+ License text:
+ // Use, modification and distribution is subject to
+ // the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/function_equal.hpp [4:7]
+
+KEEP BSL-1.0 AND BSL-1.0 8643809499b430f347d7dc1bb3dfd0a5
+BELONGS ya.make
+ License text:
+ // Use modification and distribution are subject to the boost Software License,
+ // Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 59.38
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/function_types/components.hpp [4:5]
+ boost/function_types/config/cc_names.hpp [4:5]
+ boost/function_types/config/config.hpp [4:5]
+ boost/function_types/detail/class_transform.hpp [4:5]
+ boost/function_types/detail/classifier.hpp [4:5]
+ boost/function_types/detail/classifier_impl/arity10_0.hpp [4:5]
+ boost/function_types/detail/classifier_impl/arity10_1.hpp [4:5]
+ boost/function_types/detail/classifier_impl/master.hpp [4:5]
+ boost/function_types/detail/components_as_mpl_sequence.hpp [4:5]
+ boost/function_types/detail/components_impl/arity10_0.hpp [4:5]
+ boost/function_types/detail/components_impl/arity10_1.hpp [4:5]
+ boost/function_types/detail/components_impl/master.hpp [4:5]
+ boost/function_types/detail/encoding/aliases_def.hpp [4:5]
+ boost/function_types/detail/encoding/aliases_undef.hpp [4:5]
+ boost/function_types/detail/encoding/def.hpp [4:5]
+ boost/function_types/detail/encoding/undef.hpp [4:5]
+ boost/function_types/detail/pp_arity_loop.hpp [4:5]
+ boost/function_types/detail/pp_cc_loop/master.hpp [4:5]
+ boost/function_types/detail/pp_cc_loop/preprocessed.hpp [4:5]
+ boost/function_types/detail/pp_loop.hpp [4:5]
+ boost/function_types/detail/pp_retag_default_cc/master.hpp [4:5]
+ boost/function_types/detail/pp_retag_default_cc/preprocessed.hpp [4:5]
+ boost/function_types/detail/pp_tags/cc_tag.hpp [4:5]
+ boost/function_types/detail/pp_tags/master.hpp [4:5]
+ boost/function_types/detail/pp_tags/preprocessed.hpp [4:5]
+ boost/function_types/detail/pp_variate_loop/master.hpp [4:5]
+ boost/function_types/detail/retag_default_cc.hpp [4:5]
+ boost/function_types/detail/synthesize.hpp [4:5]
+ boost/function_types/detail/synthesize_impl/arity10_0.hpp [4:5]
+ boost/function_types/detail/synthesize_impl/arity10_1.hpp [4:5]
+ boost/function_types/detail/synthesize_impl/master.hpp [4:5]
+ boost/function_types/detail/to_sequence.hpp [4:5]
+ boost/function_types/function_arity.hpp [4:5]
+ boost/function_types/function_pointer.hpp [4:5]
+ boost/function_types/function_reference.hpp [4:5]
+ boost/function_types/is_callable_builtin.hpp [4:5]
+ boost/function_types/is_function.hpp [4:5]
+ boost/function_types/is_function_pointer.hpp [4:5]
+ boost/function_types/is_function_reference.hpp [4:5]
+ boost/function_types/is_member_function_pointer.hpp [4:5]
+ boost/function_types/is_member_object_pointer.hpp [4:5]
+ boost/function_types/is_member_pointer.hpp [4:5]
+ boost/function_types/is_nonmember_callable_builtin.hpp [4:5]
+ boost/function_types/member_function_pointer.hpp [4:5]
+ boost/function_types/member_object_pointer.hpp [4:5]
+ boost/function_types/parameter_types.hpp [4:5]
+ boost/function_types/property_tags.hpp [4:5]
+ boost/function_types/result_type.hpp [4:5]
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/function_types/config/compiler.hpp [4:5]
+ boost/function_types/detail/cv_traits.hpp [4:5]
+ boost/function_types/detail/pp_variate_loop/preprocessed.hpp [4:5]
+ boost/function_types/function_type.hpp [4:5]
+ boost/typeof/vector100.hpp [5:6]
+ boost/typeof/vector150.hpp [5:6]
+ boost/typeof/vector200.hpp [5:6]
+
+KEEP BSL-1.0 87615bb769df65be73962ba4b234a0af
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/gil/algorithm.hpp at line 5, boost/gil/bit_aligned_pixel_iterator.hpp at line 5, boost/gil/bit_aligned_pixel_reference.hpp at line 5, boost/gil/channel.hpp at line 5, boost/gil/channel_algorithm.hpp at line 5, boost/gil/cmyk.hpp at line 5, boost/gil/color_base.hpp at line 5, boost/gil/color_base_algorithm.hpp at line 5, boost/gil/color_convert.hpp at line 5, boost/gil/deprecated.hpp at line 5, boost/gil/device_n.hpp at line 5, boost/gil/extension/dynamic_image/algorithm.hpp at line 5, boost/gil/extension/dynamic_image/any_image.hpp at line 5, boost/gil/extension/dynamic_image/any_image_view.hpp at line 5, boost/gil/extension/dynamic_image/apply_operation.hpp at line 5, boost/gil/extension/dynamic_image/apply_operation_base.hpp at line 5, boost/gil/extension/dynamic_image/dynamic_at_c.hpp at line 5, boost/gil/extension/dynamic_image/dynamic_image_all.hpp at line 5, boost/gil/extension/dynamic_image/image_view_factory.hpp at line 5, boost/gil/extension/dynamic_image/reduce.hpp at line 5, boost/gil/extension/dynamic_image/variant.hpp at line 5, boost/gil/extension/io/dynamic_io.hpp at line 5, boost/gil/extension/io/io_error.hpp at line 5, boost/gil/extension/io/jpeg_dynamic_io.hpp at line 5, boost/gil/extension/io/jpeg_io.hpp at line 5, boost/gil/extension/io/jpeg_io_private.hpp at line 5, boost/gil/extension/io/png_dynamic_io.hpp at line 5, boost/gil/extension/io/png_io.hpp at line 5, boost/gil/extension/io/png_io_private.hpp at line 5, boost/gil/extension/io/tiff_dynamic_io.hpp at line 5, boost/gil/extension/io/tiff_io.hpp at line 5, boost/gil/gil_all.hpp at line 5, boost/gil/gil_concept.hpp at line 5, boost/gil/gil_config.hpp at line 5, boost/gil/gray.hpp at line 5, boost/gil/image.hpp at line 5, boost/gil/image_view.hpp at line 5, boost/gil/image_view_factory.hpp at line 5, boost/gil/iterator_from_2d.hpp at line 5, boost/gil/locator.hpp at line 5, boost/gil/metafunctions.hpp at line 5, boost/gil/packed_pixel.hpp at line 5, boost/gil/pixel.hpp at line 5, boost/gil/pixel_iterator.hpp at line 5, boost/gil/pixel_iterator_adaptor.hpp at line 5, boost/gil/planar_pixel_iterator.hpp at line 5, boost/gil/planar_pixel_reference.hpp at line 5, boost/gil/position_iterator.hpp at line 5, boost/gil/rgb.hpp at line 5, boost/gil/rgba.hpp at line 5, boost/gil/step_iterator.hpp at line 5, boost/gil/typedefs.hpp at line 5, boost/gil/utilities.hpp at line 5, boost/gil/virtual_locator.hpp at line 5, boost/polygon/detail/polygon_45_formation.hpp at line 5, boost/polygon/detail/polygon_arbitrary_formation.hpp at line 5, boost/polygon/detail/polygon_formation.hpp at line 5, boost/polygon/detail/rectangle_formation.hpp at line 5
+ License text:
+ Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt).
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/gil/algorithm.hpp [4:6]
+ boost/gil/bit_aligned_pixel_iterator.hpp [4:6]
+ boost/gil/bit_aligned_pixel_reference.hpp [4:6]
+ boost/gil/channel.hpp [4:6]
+ boost/gil/channel_algorithm.hpp [4:6]
+ boost/gil/cmyk.hpp [4:6]
+ boost/gil/color_base.hpp [4:6]
+ boost/gil/color_base_algorithm.hpp [4:6]
+ boost/gil/color_convert.hpp [4:6]
+ boost/gil/deprecated.hpp [4:6]
+ boost/gil/device_n.hpp [4:6]
+ boost/gil/extension/dynamic_image/algorithm.hpp [4:6]
+ boost/gil/extension/dynamic_image/any_image.hpp [4:6]
+ boost/gil/extension/dynamic_image/any_image_view.hpp [4:6]
+ boost/gil/extension/dynamic_image/apply_operation.hpp [4:6]
+ boost/gil/extension/dynamic_image/apply_operation_base.hpp [4:6]
+ boost/gil/extension/dynamic_image/dynamic_at_c.hpp [4:6]
+ boost/gil/extension/dynamic_image/dynamic_image_all.hpp [4:6]
+ boost/gil/extension/dynamic_image/image_view_factory.hpp [4:6]
+ boost/gil/extension/dynamic_image/reduce.hpp [4:6]
+ boost/gil/extension/dynamic_image/variant.hpp [4:6]
+ boost/gil/extension/io/dynamic_io.hpp [4:6]
+ boost/gil/extension/io/io_error.hpp [4:6]
+ boost/gil/extension/io/jpeg_dynamic_io.hpp [4:6]
+ boost/gil/extension/io/jpeg_io.hpp [4:6]
+ boost/gil/extension/io/jpeg_io_private.hpp [4:6]
+ boost/gil/extension/io/png_dynamic_io.hpp [4:6]
+ boost/gil/extension/io/png_io.hpp [4:6]
+ boost/gil/extension/io/png_io_private.hpp [4:6]
+ boost/gil/extension/io/tiff_dynamic_io.hpp [4:6]
+ boost/gil/extension/io/tiff_io.hpp [4:6]
+ boost/gil/gil_all.hpp [4:6]
+ boost/gil/gil_concept.hpp [4:6]
+ boost/gil/gil_config.hpp [4:6]
+ boost/gil/gray.hpp [4:6]
+ boost/gil/image.hpp [4:6]
+ boost/gil/image_view.hpp [4:6]
+ boost/gil/image_view_factory.hpp [4:6]
+ boost/gil/iterator_from_2d.hpp [4:6]
+ boost/gil/locator.hpp [4:6]
+ boost/gil/metafunctions.hpp [4:6]
+ boost/gil/packed_pixel.hpp [4:6]
+ boost/gil/pixel.hpp [4:6]
+ boost/gil/pixel_iterator.hpp [4:6]
+ boost/gil/pixel_iterator_adaptor.hpp [4:6]
+ boost/gil/planar_pixel_iterator.hpp [4:6]
+ boost/gil/planar_pixel_reference.hpp [4:6]
+ boost/gil/position_iterator.hpp [4:6]
+ boost/gil/rgb.hpp [4:6]
+ boost/gil/rgba.hpp [4:6]
+ boost/gil/step_iterator.hpp [4:6]
+ boost/gil/typedefs.hpp [4:6]
+ boost/gil/utilities.hpp [4:6]
+ boost/gil/virtual_locator.hpp [4:6]
+ boost/polygon/detail/polygon_45_formation.hpp [4:6]
+ boost/polygon/detail/polygon_arbitrary_formation.hpp [4:6]
+ boost/polygon/detail/polygon_formation.hpp [4:6]
+ boost/polygon/detail/rectangle_formation.hpp [4:6]
+
+KEEP BSL-1.0 88098ea217207abacf6209d2ad07530d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/cstdlib.hpp at line 5
+ License text:
+ // Copyright Beman Dawes 2001. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/cstdlib.hpp [3:5]
+
+KEEP BSL-1.0 88b58de1d7149f0278b4887961d64fc8
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/math/quadrature/detail/exp_sinh_detail.hpp at line 4, boost/math/quadrature/detail/sinh_sinh_detail.hpp at line 4, boost/math/quadrature/detail/tanh_sinh_constants.hpp at line 4, boost/math/quadrature/detail/tanh_sinh_detail.hpp at line 4
+ License text:
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt
+ // or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/math/quadrature/detail/exp_sinh_detail.hpp [2:5]
+ boost/math/quadrature/detail/sinh_sinh_detail.hpp [2:5]
+ boost/math/quadrature/detail/tanh_sinh_constants.hpp [2:5]
+ boost/math/quadrature/detail/tanh_sinh_detail.hpp [2:5]
+
+KEEP BSL-1.0 88c4d29e0aacbf465a938844cbc5d047
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/lcast_precision.hpp at line 5, boost/math/distributions/arcsine.hpp at line 8, boost/math/distributions/bernoulli.hpp at line 8, boost/math/distributions/beta.hpp at line 8, boost/math/distributions/binomial.hpp at line 8, boost/math/distributions/chi_squared.hpp at line 6, boost/math/distributions/detail/common_error_handling.hpp at line 6, boost/math/distributions/detail/generic_mode.hpp at line 5, boost/math/distributions/detail/hypergeometric_cdf.hpp at line 5, boost/math/distributions/detail/hypergeometric_pdf.hpp at line 6, boost/math/distributions/detail/hypergeometric_quantile.hpp at line 5, boost/math/distributions/fisher_f.hpp at line 5, boost/math/distributions/fwd.hpp at line 8, boost/math/distributions/geometric.hpp at line 8, boost/math/distributions/hypergeometric.hpp at line 6, boost/math/distributions/inverse_chi_squared.hpp at line 6, boost/math/distributions/logistic.hpp at line 5, boost/math/distributions/negative_binomial.hpp at line 8, boost/math/distributions/non_central_beta.hpp at line 7, boost/math/distributions/non_central_chi_squared.hpp at line 7, boost/math/distributions/non_central_f.hpp at line 7, boost/math/distributions/non_central_t.hpp at line 7, boost/math/distributions/poisson.hpp at line 8, boost/math/interpolators/cubic_b_spline.hpp at line 4, boost/math/interpolators/detail/cubic_b_spline_detail.hpp at line 4, boost/math/quadrature/exp_sinh.hpp at line 4, boost/math/quadrature/sinh_sinh.hpp at line 4, boost/math/quadrature/tanh_sinh.hpp at line 4, boost/math/special_functions/airy.hpp at line 4, boost/math/special_functions/detail/round_fwd.hpp at line 5, boost/math/special_functions/hankel.hpp at line 4, boost/math/special_functions/jacobi_elliptic.hpp at line 4, boost/math/special_functions/legendre_stieltjes.hpp at line 4, boost/math/special_functions/math_fwd.hpp at line 10, boost/math/special_functions/prime.hpp at line 5, boost/math/tools/promotion.hpp at line 8, boost/math/tools/user.hpp at line 6, boost/math/tr1.hpp at line 4, boost/math/tr1_c_macros.ipp at line 4
+ License text:
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt
+ // or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/detail/lcast_precision.hpp [3:6]
+ boost/math/distributions/arcsine.hpp [6:9]
+ boost/math/distributions/bernoulli.hpp [6:9]
+ boost/math/distributions/beta.hpp [6:9]
+ boost/math/distributions/binomial.hpp [6:9]
+ boost/math/distributions/chi_squared.hpp [4:7]
+ boost/math/distributions/detail/common_error_handling.hpp [4:7]
+ boost/math/distributions/detail/generic_mode.hpp [3:6]
+ boost/math/distributions/detail/hypergeometric_cdf.hpp [3:6]
+ boost/math/distributions/detail/hypergeometric_pdf.hpp [4:7]
+ boost/math/distributions/detail/hypergeometric_quantile.hpp [3:6]
+ boost/math/distributions/fisher_f.hpp [3:6]
+ boost/math/distributions/fwd.hpp [6:9]
+ boost/math/distributions/geometric.hpp [6:9]
+ boost/math/distributions/hypergeometric.hpp [4:7]
+ boost/math/distributions/inverse_chi_squared.hpp [4:7]
+ boost/math/distributions/logistic.hpp [3:6]
+ boost/math/distributions/negative_binomial.hpp [6:9]
+ boost/math/distributions/non_central_beta.hpp [5:8]
+ boost/math/distributions/non_central_chi_squared.hpp [5:8]
+ boost/math/distributions/non_central_f.hpp [5:8]
+ boost/math/distributions/non_central_t.hpp [5:8]
+ boost/math/distributions/poisson.hpp [6:9]
+ boost/math/interpolators/cubic_b_spline.hpp [2:5]
+ boost/math/interpolators/detail/cubic_b_spline_detail.hpp [2:5]
+ boost/math/quadrature/exp_sinh.hpp [2:5]
+ boost/math/quadrature/sinh_sinh.hpp [2:5]
+ boost/math/quadrature/tanh_sinh.hpp [2:5]
+ boost/math/special_functions/airy.hpp [2:5]
+ boost/math/special_functions/detail/round_fwd.hpp [3:6]
+ boost/math/special_functions/hankel.hpp [2:5]
+ boost/math/special_functions/jacobi_elliptic.hpp [2:5]
+ boost/math/special_functions/legendre_stieltjes.hpp [2:5]
+ boost/math/special_functions/math_fwd.hpp [8:11]
+ boost/math/special_functions/prime.hpp [3:6]
+ boost/math/tools/promotion.hpp [6:9]
+ boost/math/tools/user.hpp [4:7]
+ boost/math/tr1.hpp [2:5]
+ boost/math/tr1_c_macros.ipp [2:5]
+
+KEEP BSL-1.0 89e2554ef35082c6fb4690ee1e33d5c2
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/function/detail/prologue.hpp at line 5, boost/function/function0.hpp at line 5, boost/function/function1.hpp at line 5, boost/function/function10.hpp at line 5, boost/function/function2.hpp at line 5, boost/function/function3.hpp at line 5, boost/function/function4.hpp at line 5, boost/function/function5.hpp at line 5, boost/function/function6.hpp at line 5, boost/function/function7.hpp at line 5, boost/function/function8.hpp at line 5, boost/function/function9.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/function/detail/prologue.hpp [3:6]
+ boost/function/function0.hpp [3:6]
+ boost/function/function1.hpp [3:6]
+ boost/function/function10.hpp [3:6]
+ boost/function/function2.hpp [3:6]
+ boost/function/function3.hpp [3:6]
+ boost/function/function4.hpp [3:6]
+ boost/function/function5.hpp [3:6]
+ boost/function/function6.hpp [3:6]
+ boost/function/function7.hpp [3:6]
+ boost/function/function8.hpp [3:6]
+ boost/function/function9.hpp [3:6]
+
+SKIP LGPL-2.0-or-later 8a1040dc7b7219719cc0c3ae86702fcb
+BELONGS ya.make
+ License text:
+ \note The implementation is inspired by terralib http://www.terralib.org (LGPL)
+ Scancode info:
+ Original SPDX id: LGPL-2.0-or-later
+ Score : 75.00
+ Match type : REFERENCE
+ Links : http://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html, http://www.gnu.org/licenses/old-licenses/lgpl-2.0.html, https://spdx.org/licenses/LGPL-2.0-or-later
+ Files with this license:
+ boost/geometry/strategies/agnostic/point_in_poly_oriented_winding.hpp [39:39]
+ boost/geometry/strategies/cartesian/point_in_poly_winding.hpp [45:45]
+
+KEEP BSL-1.0 8a8e0b18cc05e7bc28034b7fb1c69575
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/atomic.hpp at line 7, boost/atomic/detail/interlocked.hpp at line 8, boost/core/typeinfo.hpp at line 15, boost/detail/sp_typeinfo.hpp at line 17, boost/memory_order.hpp at line 9, boost/ptr_container/detail/ptr_container_disable_deprecated.hpp at line 16, boost/smart_ptr/detail/sp_disable_deprecated.hpp at line 16, boost/smart_ptr/detail/sp_has_sync.hpp at line 16, boost/smart_ptr/detail/spinlock.hpp at line 16, boost/smart_ptr/detail/spinlock_gcc_arm.hpp at line 8, boost/smart_ptr/detail/spinlock_nt.hpp at line 14, boost/smart_ptr/detail/spinlock_pool.hpp at line 16, boost/smart_ptr/detail/spinlock_pt.hpp at line 14, boost/smart_ptr/detail/spinlock_std_atomic.hpp at line 14, boost/smart_ptr/detail/spinlock_sync.hpp at line 14, boost/smart_ptr/detail/spinlock_w32.hpp at line 14
+ License text:
+ // Distributed under the Boost Software License, Version 1.0.
+ // See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/atomic.hpp [6:8]
+ boost/atomic/detail/interlocked.hpp [7:9]
+ boost/core/typeinfo.hpp [14:16]
+ boost/detail/sp_typeinfo.hpp [16:18]
+ boost/memory_order.hpp [8:10]
+ boost/ptr_container/detail/ptr_container_disable_deprecated.hpp [15:17]
+ boost/smart_ptr/detail/sp_disable_deprecated.hpp [15:17]
+ boost/smart_ptr/detail/sp_has_sync.hpp [15:17]
+ boost/smart_ptr/detail/spinlock.hpp [15:17]
+ boost/smart_ptr/detail/spinlock_gcc_arm.hpp [7:9]
+ boost/smart_ptr/detail/spinlock_nt.hpp [13:15]
+ boost/smart_ptr/detail/spinlock_pool.hpp [15:17]
+ boost/smart_ptr/detail/spinlock_pt.hpp [13:15]
+ boost/smart_ptr/detail/spinlock_std_atomic.hpp [13:15]
+ boost/smart_ptr/detail/spinlock_sync.hpp [13:15]
+ boost/smart_ptr/detail/spinlock_w32.hpp [13:15]
+
+KEEP BSL-1.0 8abbac2c705b0911702566954b0ebe9b
+BELONGS libs/locale/ya.make libs/python/ya.make libs/thread/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/algorithm/cxx11/is_sorted.hpp at line 7, boost/core/checked_delete.hpp at line 18, boost/detail/interlocked.hpp at line 10, boost/locale.hpp at line 5, boost/locale/boundary.hpp at line 5, boost/locale/boundary/boundary_point.hpp at line 5, boost/locale/boundary/facets.hpp at line 5, boost/locale/boundary/index.hpp at line 5, boost/locale/boundary/segment.hpp at line 5, boost/locale/boundary/types.hpp at line 5, boost/locale/collator.hpp at line 5, boost/locale/config.hpp at line 5, boost/locale/conversion.hpp at line 5, boost/locale/date_time.hpp at line 5, boost/locale/date_time_facet.hpp at line 5, boost/locale/definitions.hpp at line 5, boost/locale/encoding.hpp at line 5, boost/locale/encoding_errors.hpp at line 5, boost/locale/encoding_utf.hpp at line 5, boost/locale/format.hpp at line 5, boost/locale/formatting.hpp at line 5, boost/locale/generator.hpp at line 5, boost/locale/gnu_gettext.hpp at line 5, boost/locale/hold_ptr.hpp at line 5, boost/locale/info.hpp at line 5, boost/locale/localization_backend.hpp at line 5, boost/locale/message.hpp at line 5, boost/locale/time_zone.hpp at line 5, boost/locale/utf.hpp at line 5, boost/locale/utf8_codecvt.hpp at line 5, boost/locale/util.hpp at line 5, boost/lockfree/detail/atomic.hpp at line 4, boost/lockfree/detail/copy_payload.hpp at line 6, boost/lockfree/detail/freelist.hpp at line 6, boost/lockfree/detail/prefix.hpp at line 4, boost/lockfree/detail/tagged_ptr.hpp at line 6, boost/lockfree/detail/tagged_ptr_dcas.hpp at line 6, boost/lockfree/detail/tagged_ptr_ptrcompression.hpp at line 6, boost/lockfree/lockfree_forward.hpp at line 4, boost/lockfree/queue.hpp at line 8, boost/lockfree/spsc_queue.hpp at line 7, boost/lockfree/stack.hpp at line 4, boost/numeric/conversion/detail/numeric_cast_traits.hpp at line 33, boost/numeric/conversion/detail/numeric_cast_traits.hpp at line 6, boost/numeric/conversion/detail/numeric_cast_traits.hpp at line 84, boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_common.hpp at line 6, boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_long_long.hpp at line 6, boost/numeric/conversion/numeric_cast_traits.hpp at line 6, boost/numeric/ublas/assignment.hpp at line 5, boost/numeric/ublas/banded.hpp at line 6, boost/numeric/ublas/blas.hpp at line 4, boost/numeric/ublas/detail/concepts.hpp at line 6, boost/numeric/ublas/detail/config.hpp at line 6, boost/numeric/ublas/detail/definitions.hpp at line 6, boost/numeric/ublas/detail/documentation.hpp at line 6, boost/numeric/ublas/detail/duff.hpp at line 6, boost/numeric/ublas/detail/iterator.hpp at line 6, boost/numeric/ublas/detail/matrix_assign.hpp at line 6, boost/numeric/ublas/detail/raw.hpp at line 6, boost/numeric/ublas/detail/temporary.hpp at line 6, boost/numeric/ublas/detail/vector_assign.hpp at line 6, boost/numeric/ublas/doxydoc.hpp at line 4, boost/numeric/ublas/exception.hpp at line 4, boost/numeric/ublas/experimental/sparse_view.hpp at line 6, boost/numeric/ublas/expression_types.hpp at line 5, boost/numeric/ublas/functional.hpp at line 6, boost/numeric/ublas/fwd.hpp at line 6, boost/numeric/ublas/hermitian.hpp at line 6, boost/numeric/ublas/io.hpp at line 6, boost/numeric/ublas/lu.hpp at line 6, boost/numeric/ublas/matrix.hpp at line 7, boost/numeric/ublas/matrix_expression.hpp at line 6, boost/numeric/ublas/matrix_proxy.hpp at line 6, boost/numeric/ublas/matrix_sparse.hpp at line 6, boost/numeric/ublas/matrix_vector.hpp at line 5, boost/numeric/ublas/operation.hpp at line 6, boost/numeric/ublas/operation_blocked.hpp at line 6, boost/numeric/ublas/operation_sparse.hpp at line 6, boost/numeric/ublas/storage.hpp at line 6, boost/numeric/ublas/storage_sparse.hpp at line 6, boost/numeric/ublas/symmetric.hpp at line 6, boost/numeric/ublas/traits.hpp at line 6, boost/numeric/ublas/triangular.hpp at line 6, boost/numeric/ublas/vector_expression.hpp at line 6, boost/numeric/ublas/vector_of_vector.hpp at line 6, boost/numeric/ublas/vector_proxy.hpp at line 6, boost/numeric/ublas/vector_sparse.hpp at line 6, boost/operators.hpp at line 6, boost/operators_v1.hpp at line 5, boost/pending/container_traits.hpp at line 5, boost/pending/detail/disjoint_sets.hpp at line 3, boost/pending/detail/int_iterator.hpp at line 3, boost/pending/detail/property.hpp at line 3, boost/pending/fenced_priority_queue.hpp at line 3, boost/pending/property.hpp at line 3, boost/pending/property_serialize.hpp at line 3, boost/pending/queue.hpp at line 3, boost/pending/stringtok.hpp at line 3, boost/python/object/pickle_support.hpp at line 3, boost/python/suite/indexing/container_utils.hpp at line 4, boost/python/suite/indexing/detail/indexing_suite_detail.hpp at line 3, boost/python/suite/indexing/indexing_suite.hpp at line 3, boost/python/suite/indexing/map_indexing_suite.hpp at line 3, boost/python/suite/indexing/vector_indexing_suite.hpp at line 3, boost/scoped_array.hpp at line 8, boost/scoped_ptr.hpp at line 8, boost/serialization/detail/shared_ptr_132.hpp at line 11, boost/serialization/detail/shared_ptr_nmt_132.hpp at line 11, boost/shared_array.hpp at line 11, boost/shared_ptr.hpp at line 11, boost/smart_ptr/atomic_shared_ptr.hpp at line 10, boost/smart_ptr/detail/atomic_count_gcc.hpp at line 16, boost/smart_ptr/detail/atomic_count_gcc_x86.hpp at line 12, boost/smart_ptr/detail/atomic_count_sync.hpp at line 14, boost/smart_ptr/detail/local_counted_base.hpp at line 15, boost/smart_ptr/detail/local_sp_deleter.hpp at line 15, boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp at line 11, boost/smart_ptr/detail/sp_counted_base_aix.hpp at line 13, boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp at line 17, boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp at line 18, boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp at line 12, boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp at line 16, boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp at line 17, boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp at line 17, boost/smart_ptr/detail/sp_counted_base_solaris.hpp at line 13, boost/smart_ptr/detail/sp_counted_base_spin.hpp at line 17, boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp at line 14, boost/smart_ptr/detail/sp_counted_base_w32.hpp at line 17, boost/smart_ptr/intrusive_ptr.hpp at line 10, boost/smart_ptr/local_shared_ptr.hpp at line 9, boost/smart_ptr/owner_less.hpp at line 11, boost/smart_ptr/scoped_array.hpp at line 8, boost/smart_ptr/scoped_ptr.hpp at line 8, boost/smart_ptr/shared_array.hpp at line 11, boost/smart_ptr/shared_ptr.hpp at line 11, boost/smart_ptr/weak_ptr.hpp at line 10, boost/thread/condition.hpp at line 6, boost/thread/condition_variable.hpp at line 9, boost/thread/cv_status.hpp at line 6, boost/thread/detail/platform_time.hpp at line 7, boost/thread/detail/thread_heap_alloc.hpp at line 9, boost/thread/executors/work.hpp at line 4, boost/thread/future.hpp at line 5, boost/thread/futures/future_error.hpp at line 5, boost/thread/futures/future_error_code.hpp at line 5, boost/thread/futures/future_status.hpp at line 5, boost/thread/futures/is_future_type.hpp at line 5, boost/thread/futures/launch.hpp at line 5, boost/thread/futures/wait_for_all.hpp at line 5, boost/thread/futures/wait_for_any.hpp at line 5, boost/thread/mutex.hpp at line 9, boost/thread/once.hpp at line 9, boost/thread/pthread/once.hpp at line 10, boost/thread/pthread/once_atomic.hpp at line 10, boost/thread/pthread/pthread_helpers.hpp at line 7, boost/thread/pthread/pthread_mutex_scoped_lock.hpp at line 6, boost/thread/pthread/shared_mutex.hpp at line 8, boost/thread/recursive_mutex.hpp at line 9, boost/thread/shared_mutex.hpp at line 10, boost/thread/thread.hpp at line 9, boost/thread/thread_only.hpp at line 9, boost/thread/thread_time.hpp at line 6, boost/thread/v2/shared_mutex.hpp at line 10, boost/thread/win32/basic_recursive_mutex.hpp at line 10, boost/thread/win32/basic_timed_mutex.hpp at line 10, boost/thread/win32/interlocked_read.hpp at line 11, boost/thread/win32/once.hpp at line 11, boost/thread/win32/recursive_mutex.hpp at line 9, boost/thread/win32/shared_mutex.hpp at line 8, boost/thread/win32/thread_primitives.hpp at line 10, boost/throw_exception.hpp at line 23, boost/xpressive/detail/core/matcher/action_matcher.hpp at line 8, boost/xpressive/detail/core/matcher/attr_matcher.hpp at line 8, boost/xpressive/detail/static/transforms/as_action.hpp at line 8, boost/xpressive/detail/utility/symbols.hpp at line 13, libs/locale/src/encoding/codepage.cpp at line 5, libs/locale/src/encoding/conv.hpp at line 5, libs/locale/src/encoding/iconv_codepage.ipp at line 5, libs/locale/src/encoding/uconv_codepage.ipp at line 5, libs/locale/src/encoding/wconv_codepage.ipp at line 5, libs/locale/src/icu/all_generator.hpp at line 5, libs/locale/src/icu/boundary.cpp at line 5, libs/locale/src/icu/cdata.hpp at line 5, libs/locale/src/icu/codecvt.cpp at line 5, libs/locale/src/icu/codecvt.hpp at line 5, libs/locale/src/icu/collator.cpp at line 5, libs/locale/src/icu/conversion.cpp at line 5, libs/locale/src/icu/date_time.cpp at line 5, libs/locale/src/icu/formatter.cpp at line 5, libs/locale/src/icu/formatter.hpp at line 5, libs/locale/src/icu/icu_backend.cpp at line 5, libs/locale/src/icu/icu_backend.hpp at line 5, libs/locale/src/icu/icu_util.hpp at line 5, libs/locale/src/icu/numeric.cpp at line 5, libs/locale/src/icu/predefined_formatters.hpp at line 5, libs/locale/src/icu/time_zone.cpp at line 5, libs/locale/src/icu/time_zone.hpp at line 5, libs/locale/src/icu/uconv.hpp at line 5, libs/locale/src/posix/all_generator.hpp at line 5, libs/locale/src/posix/codecvt.cpp at line 5, libs/locale/src/posix/codecvt.hpp at line 5, libs/locale/src/posix/collate.cpp at line 5, libs/locale/src/posix/converter.cpp at line 5, libs/locale/src/posix/numeric.cpp at line 5, libs/locale/src/posix/posix_backend.cpp at line 5, libs/locale/src/posix/posix_backend.hpp at line 5, libs/locale/src/shared/date_time.cpp at line 5, libs/locale/src/shared/format.cpp at line 5, libs/locale/src/shared/formatting.cpp at line 5, libs/locale/src/shared/generator.cpp at line 5, libs/locale/src/shared/ids.cpp at line 5, libs/locale/src/shared/ios_prop.hpp at line 5, libs/locale/src/shared/localization_backend.cpp at line 5, libs/locale/src/shared/message.cpp at line 5, libs/locale/src/shared/mo_hash.hpp at line 5, libs/locale/src/shared/mo_lambda.cpp at line 5, libs/locale/src/shared/mo_lambda.hpp at line 5, libs/locale/src/std/all_generator.hpp at line 5, libs/locale/src/std/codecvt.cpp at line 5, libs/locale/src/std/collate.cpp at line 5, libs/locale/src/std/converter.cpp at line 5, libs/locale/src/std/numeric.cpp at line 5, libs/locale/src/std/std_backend.cpp at line 5, libs/locale/src/std/std_backend.hpp at line 5, libs/locale/src/util/codecvt_converter.cpp at line 5, libs/locale/src/util/default_locale.cpp at line 5, libs/locale/src/util/gregorian.cpp at line 5, libs/locale/src/util/gregorian.hpp at line 5, libs/locale/src/util/iconv.hpp at line 5, libs/locale/src/util/info.cpp at line 5, libs/locale/src/util/locale_data.cpp at line 5, libs/locale/src/util/locale_data.hpp at line 5, libs/locale/src/util/numeric.hpp at line 5, libs/locale/src/util/timezone.hpp at line 5, libs/locale/src/win32/all_generator.hpp at line 5, libs/locale/src/win32/api.hpp at line 5, libs/locale/src/win32/collate.cpp at line 5, libs/locale/src/win32/converter.cpp at line 5, libs/locale/src/win32/lcid.cpp at line 5, libs/locale/src/win32/lcid.hpp at line 5, libs/locale/src/win32/numeric.cpp at line 5, libs/locale/src/win32/win_backend.cpp at line 5, libs/locale/src/win32/win_backend.hpp at line 5, libs/python/src/object/pickle_support.cpp at line 3, libs/thread/src/win32/thread_primitives.cpp at line 6
+ License text:
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/algorithm/cxx11/is_sorted.hpp [6:8]
+ boost/core/checked_delete.hpp [17:19]
+ boost/detail/interlocked.hpp [9:11]
+ boost/locale.hpp [4:6]
+ boost/locale/boundary.hpp [4:6]
+ boost/locale/boundary/boundary_point.hpp [4:6]
+ boost/locale/boundary/facets.hpp [4:6]
+ boost/locale/boundary/index.hpp [4:6]
+ boost/locale/boundary/segment.hpp [4:6]
+ boost/locale/boundary/types.hpp [4:6]
+ boost/locale/collator.hpp [4:6]
+ boost/locale/config.hpp [4:6]
+ boost/locale/conversion.hpp [4:6]
+ boost/locale/date_time.hpp [4:6]
+ boost/locale/date_time_facet.hpp [4:6]
+ boost/locale/definitions.hpp [4:6]
+ boost/locale/encoding.hpp [4:6]
+ boost/locale/encoding_errors.hpp [4:6]
+ boost/locale/encoding_utf.hpp [4:6]
+ boost/locale/format.hpp [4:6]
+ boost/locale/formatting.hpp [4:6]
+ boost/locale/generator.hpp [4:6]
+ boost/locale/gnu_gettext.hpp [4:6]
+ boost/locale/hold_ptr.hpp [4:6]
+ boost/locale/info.hpp [4:6]
+ boost/locale/localization_backend.hpp [4:6]
+ boost/locale/message.hpp [4:6]
+ boost/locale/time_zone.hpp [4:6]
+ boost/locale/utf.hpp [4:6]
+ boost/locale/utf8_codecvt.hpp [4:6]
+ boost/locale/util.hpp [4:6]
+ boost/lockfree/detail/atomic.hpp [3:5]
+ boost/lockfree/detail/copy_payload.hpp [5:7]
+ boost/lockfree/detail/freelist.hpp [5:7]
+ boost/lockfree/detail/prefix.hpp [3:5]
+ boost/lockfree/detail/tagged_ptr.hpp [5:7]
+ boost/lockfree/detail/tagged_ptr_dcas.hpp [5:7]
+ boost/lockfree/detail/tagged_ptr_ptrcompression.hpp [5:7]
+ boost/lockfree/lockfree_forward.hpp [3:5]
+ boost/lockfree/queue.hpp [7:9]
+ boost/lockfree/spsc_queue.hpp [6:8]
+ boost/lockfree/stack.hpp [3:5]
+ boost/numeric/conversion/detail/numeric_cast_traits.hpp [5:7]
+ boost/numeric/conversion/detail/numeric_cast_traits.hpp [32:34]
+ boost/numeric/conversion/detail/numeric_cast_traits.hpp [83:85]
+ boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_common.hpp [5:7]
+ boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_long_long.hpp [5:7]
+ boost/numeric/conversion/numeric_cast_traits.hpp [5:7]
+ boost/numeric/ublas/assignment.hpp [4:6]
+ boost/numeric/ublas/banded.hpp [5:7]
+ boost/numeric/ublas/blas.hpp [3:5]
+ boost/numeric/ublas/detail/concepts.hpp [5:7]
+ boost/numeric/ublas/detail/config.hpp [5:7]
+ boost/numeric/ublas/detail/definitions.hpp [5:7]
+ boost/numeric/ublas/detail/documentation.hpp [5:7]
+ boost/numeric/ublas/detail/duff.hpp [5:7]
+ boost/numeric/ublas/detail/iterator.hpp [5:7]
+ boost/numeric/ublas/detail/matrix_assign.hpp [5:7]
+ boost/numeric/ublas/detail/raw.hpp [5:7]
+ boost/numeric/ublas/detail/temporary.hpp [5:7]
+ boost/numeric/ublas/detail/vector_assign.hpp [5:7]
+ boost/numeric/ublas/doxydoc.hpp [3:5]
+ boost/numeric/ublas/exception.hpp [3:5]
+ boost/numeric/ublas/experimental/sparse_view.hpp [5:7]
+ boost/numeric/ublas/expression_types.hpp [4:6]
+ boost/numeric/ublas/functional.hpp [5:7]
+ boost/numeric/ublas/fwd.hpp [5:7]
+ boost/numeric/ublas/hermitian.hpp [5:7]
+ boost/numeric/ublas/io.hpp [5:7]
+ boost/numeric/ublas/lu.hpp [5:7]
+ boost/numeric/ublas/matrix.hpp [6:8]
+ boost/numeric/ublas/matrix_expression.hpp [5:7]
+ boost/numeric/ublas/matrix_proxy.hpp [5:7]
+ boost/numeric/ublas/matrix_sparse.hpp [5:7]
+ boost/numeric/ublas/matrix_vector.hpp [4:6]
+ boost/numeric/ublas/operation.hpp [5:7]
+ boost/numeric/ublas/operation_blocked.hpp [5:7]
+ boost/numeric/ublas/operation_sparse.hpp [5:7]
+ boost/numeric/ublas/storage.hpp [5:7]
+ boost/numeric/ublas/storage_sparse.hpp [5:7]
+ boost/numeric/ublas/symmetric.hpp [5:7]
+ boost/numeric/ublas/traits.hpp [5:7]
+ boost/numeric/ublas/triangular.hpp [5:7]
+ boost/numeric/ublas/vector_expression.hpp [5:7]
+ boost/numeric/ublas/vector_of_vector.hpp [5:7]
+ boost/numeric/ublas/vector_proxy.hpp [5:7]
+ boost/numeric/ublas/vector_sparse.hpp [5:7]
+ boost/operators.hpp [5:7]
+ boost/operators_v1.hpp [4:6]
+ boost/pending/container_traits.hpp [4:6]
+ boost/pending/detail/disjoint_sets.hpp [2:4]
+ boost/pending/detail/int_iterator.hpp [2:4]
+ boost/pending/detail/property.hpp [2:4]
+ boost/pending/fenced_priority_queue.hpp [2:4]
+ boost/pending/property.hpp [2:4]
+ boost/pending/property_serialize.hpp [2:4]
+ boost/pending/queue.hpp [2:4]
+ boost/pending/stringtok.hpp [2:4]
+ boost/python/object/pickle_support.hpp [2:4]
+ boost/python/suite/indexing/container_utils.hpp [3:5]
+ boost/python/suite/indexing/detail/indexing_suite_detail.hpp [2:4]
+ boost/python/suite/indexing/indexing_suite.hpp [2:4]
+ boost/python/suite/indexing/map_indexing_suite.hpp [2:4]
+ boost/python/suite/indexing/vector_indexing_suite.hpp [2:4]
+ boost/scoped_array.hpp [7:9]
+ boost/scoped_ptr.hpp [7:9]
+ boost/serialization/detail/shared_ptr_132.hpp [10:12]
+ boost/serialization/detail/shared_ptr_nmt_132.hpp [10:12]
+ boost/shared_array.hpp [10:12]
+ boost/shared_ptr.hpp [10:12]
+ boost/smart_ptr/atomic_shared_ptr.hpp [9:11]
+ boost/smart_ptr/detail/atomic_count_gcc.hpp [15:17]
+ boost/smart_ptr/detail/atomic_count_gcc_x86.hpp [11:13]
+ boost/smart_ptr/detail/atomic_count_sync.hpp [13:15]
+ boost/smart_ptr/detail/local_counted_base.hpp [14:16]
+ boost/smart_ptr/detail/local_sp_deleter.hpp [14:16]
+ boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp [10:12]
+ boost/smart_ptr/detail/sp_counted_base_aix.hpp [12:14]
+ boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp [16:18]
+ boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp [17:19]
+ boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp [11:13]
+ boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp [15:17]
+ boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp [16:18]
+ boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp [16:18]
+ boost/smart_ptr/detail/sp_counted_base_solaris.hpp [12:14]
+ boost/smart_ptr/detail/sp_counted_base_spin.hpp [16:18]
+ boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp [13:15]
+ boost/smart_ptr/detail/sp_counted_base_w32.hpp [16:18]
+ boost/smart_ptr/intrusive_ptr.hpp [9:11]
+ boost/smart_ptr/local_shared_ptr.hpp [8:10]
+ boost/smart_ptr/owner_less.hpp [10:12]
+ boost/smart_ptr/scoped_array.hpp [7:9]
+ boost/smart_ptr/scoped_ptr.hpp [7:9]
+ boost/smart_ptr/shared_array.hpp [10:12]
+ boost/smart_ptr/shared_ptr.hpp [10:12]
+ boost/smart_ptr/weak_ptr.hpp [9:11]
+ boost/thread/condition.hpp [5:7]
+ boost/thread/condition_variable.hpp [8:10]
+ boost/thread/cv_status.hpp [5:7]
+ boost/thread/detail/platform_time.hpp [6:8]
+ boost/thread/detail/thread_heap_alloc.hpp [8:10]
+ boost/thread/executors/work.hpp [3:5]
+ boost/thread/future.hpp [4:6]
+ boost/thread/futures/future_error.hpp [4:6]
+ boost/thread/futures/future_error_code.hpp [4:6]
+ boost/thread/futures/future_status.hpp [4:6]
+ boost/thread/futures/is_future_type.hpp [4:6]
+ boost/thread/futures/launch.hpp [4:6]
+ boost/thread/futures/wait_for_all.hpp [4:6]
+ boost/thread/futures/wait_for_any.hpp [4:6]
+ boost/thread/mutex.hpp [8:10]
+ boost/thread/once.hpp [8:10]
+ boost/thread/pthread/once.hpp [9:11]
+ boost/thread/pthread/once_atomic.hpp [9:11]
+ boost/thread/pthread/pthread_helpers.hpp [6:8]
+ boost/thread/pthread/pthread_mutex_scoped_lock.hpp [5:7]
+ boost/thread/pthread/shared_mutex.hpp [7:9]
+ boost/thread/recursive_mutex.hpp [8:10]
+ boost/thread/shared_mutex.hpp [9:11]
+ boost/thread/thread.hpp [8:10]
+ boost/thread/thread_only.hpp [8:10]
+ boost/thread/thread_time.hpp [5:7]
+ boost/thread/v2/shared_mutex.hpp [9:11]
+ boost/thread/win32/basic_recursive_mutex.hpp [9:11]
+ boost/thread/win32/basic_timed_mutex.hpp [9:11]
+ boost/thread/win32/interlocked_read.hpp [10:12]
+ boost/thread/win32/once.hpp [10:12]
+ boost/thread/win32/recursive_mutex.hpp [8:10]
+ boost/thread/win32/shared_mutex.hpp [7:9]
+ boost/thread/win32/thread_primitives.hpp [9:11]
+ boost/throw_exception.hpp [22:24]
+ boost/xpressive/detail/core/matcher/action_matcher.hpp [7:9]
+ boost/xpressive/detail/core/matcher/attr_matcher.hpp [7:9]
+ boost/xpressive/detail/static/transforms/as_action.hpp [7:9]
+ boost/xpressive/detail/utility/symbols.hpp [12:14]
+ libs/locale/src/encoding/codepage.cpp [4:6]
+ libs/locale/src/encoding/conv.hpp [4:6]
+ libs/locale/src/encoding/iconv_codepage.ipp [4:6]
+ libs/locale/src/encoding/uconv_codepage.ipp [4:6]
+ libs/locale/src/encoding/wconv_codepage.ipp [4:6]
+ libs/locale/src/icu/all_generator.hpp [4:6]
+ libs/locale/src/icu/boundary.cpp [4:6]
+ libs/locale/src/icu/cdata.hpp [4:6]
+ libs/locale/src/icu/codecvt.cpp [4:6]
+ libs/locale/src/icu/codecvt.hpp [4:6]
+ libs/locale/src/icu/collator.cpp [4:6]
+ libs/locale/src/icu/conversion.cpp [4:6]
+ libs/locale/src/icu/date_time.cpp [4:6]
+ libs/locale/src/icu/formatter.cpp [4:6]
+ libs/locale/src/icu/formatter.hpp [4:6]
+ libs/locale/src/icu/icu_backend.cpp [4:6]
+ libs/locale/src/icu/icu_backend.hpp [4:6]
+ libs/locale/src/icu/icu_util.hpp [4:6]
+ libs/locale/src/icu/numeric.cpp [4:6]
+ libs/locale/src/icu/predefined_formatters.hpp [4:6]
+ libs/locale/src/icu/time_zone.cpp [4:6]
+ libs/locale/src/icu/time_zone.hpp [4:6]
+ libs/locale/src/icu/uconv.hpp [4:6]
+ libs/locale/src/posix/all_generator.hpp [4:6]
+ libs/locale/src/posix/codecvt.cpp [4:6]
+ libs/locale/src/posix/codecvt.hpp [4:6]
+ libs/locale/src/posix/collate.cpp [4:6]
+ libs/locale/src/posix/converter.cpp [4:6]
+ libs/locale/src/posix/numeric.cpp [4:6]
+ libs/locale/src/posix/posix_backend.cpp [4:6]
+ libs/locale/src/posix/posix_backend.hpp [4:6]
+ libs/locale/src/shared/date_time.cpp [4:6]
+ libs/locale/src/shared/format.cpp [4:6]
+ libs/locale/src/shared/formatting.cpp [4:6]
+ libs/locale/src/shared/generator.cpp [4:6]
+ libs/locale/src/shared/ids.cpp [4:6]
+ libs/locale/src/shared/ios_prop.hpp [4:6]
+ libs/locale/src/shared/localization_backend.cpp [4:6]
+ libs/locale/src/shared/message.cpp [4:6]
+ libs/locale/src/shared/mo_hash.hpp [4:6]
+ libs/locale/src/shared/mo_lambda.cpp [4:6]
+ libs/locale/src/shared/mo_lambda.hpp [4:6]
+ libs/locale/src/std/all_generator.hpp [4:6]
+ libs/locale/src/std/codecvt.cpp [4:6]
+ libs/locale/src/std/collate.cpp [4:6]
+ libs/locale/src/std/converter.cpp [4:6]
+ libs/locale/src/std/numeric.cpp [4:6]
+ libs/locale/src/std/std_backend.cpp [4:6]
+ libs/locale/src/std/std_backend.hpp [4:6]
+ libs/locale/src/util/codecvt_converter.cpp [4:6]
+ libs/locale/src/util/default_locale.cpp [4:6]
+ libs/locale/src/util/gregorian.cpp [4:6]
+ libs/locale/src/util/gregorian.hpp [4:6]
+ libs/locale/src/util/iconv.hpp [4:6]
+ libs/locale/src/util/info.cpp [4:6]
+ libs/locale/src/util/locale_data.cpp [4:6]
+ libs/locale/src/util/locale_data.hpp [4:6]
+ libs/locale/src/util/numeric.hpp [4:6]
+ libs/locale/src/util/timezone.hpp [4:6]
+ libs/locale/src/win32/all_generator.hpp [4:6]
+ libs/locale/src/win32/api.hpp [4:6]
+ libs/locale/src/win32/collate.cpp [4:6]
+ libs/locale/src/win32/converter.cpp [4:6]
+ libs/locale/src/win32/lcid.cpp [4:6]
+ libs/locale/src/win32/lcid.hpp [4:6]
+ libs/locale/src/win32/numeric.cpp [4:6]
+ libs/locale/src/win32/win_backend.cpp [4:6]
+ libs/locale/src/win32/win_backend.hpp [4:6]
+ libs/python/src/object/pickle_support.cpp [2:4]
+ libs/thread/src/win32/thread_primitives.cpp [5:7]
+
+KEEP BSL-1.0 8b16adbc58945f3e7e0b3d19eea06be7
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/concepts.hpp at line 10
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/range/concepts.hpp [8:11]
+
+KEEP BSL-1.0 8b3c7908dfd4ca26fd15bdde0b547bbf
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/wave/util/flex_string.hpp at line 7
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/wave/util/flex_string.hpp [5:7]
+
+KEEP BSL-1.0 8c631061c1944053948acdaf321fc114
+BELONGS libs/thread/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/detail/tss_hooks.hpp at line 4, libs/thread/src/future.cpp at line 4, libs/thread/src/tss_null.cpp at line 5, libs/thread/src/win32/tss_dll.cpp at line 4, libs/thread/src/win32/tss_pe.cpp at line 8
+ License text:
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/thread/detail/tss_hooks.hpp [2:4]
+ libs/thread/src/future.cpp [2:4]
+ libs/thread/src/tss_null.cpp [3:5]
+ libs/thread/src/win32/tss_dll.cpp [2:4]
+ libs/thread/src/win32/tss_pe.cpp [6:8]
+
+KEEP BSL-1.0 8cff6babbb6f0996f11c8e41aea364b2
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor.hpp at line 6, boost/preprocessor/arithmetic.hpp at line 6, boost/preprocessor/arithmetic/add.hpp at line 6, boost/preprocessor/arithmetic/dec.hpp at line 6, boost/preprocessor/arithmetic/detail/div_base.hpp at line 6, boost/preprocessor/arithmetic/div.hpp at line 6, boost/preprocessor/arithmetic/inc.hpp at line 6, boost/preprocessor/arithmetic/mod.hpp at line 6, boost/preprocessor/arithmetic/mul.hpp at line 6, boost/preprocessor/arithmetic/sub.hpp at line 6, boost/preprocessor/cat.hpp at line 6, boost/preprocessor/comparison.hpp at line 6, boost/preprocessor/comparison/equal.hpp at line 6, boost/preprocessor/comparison/greater.hpp at line 6, boost/preprocessor/comparison/greater_equal.hpp at line 6, boost/preprocessor/comparison/less.hpp at line 6, boost/preprocessor/comparison/less_equal.hpp at line 6, boost/preprocessor/comparison/not_equal.hpp at line 6, boost/preprocessor/config/limits.hpp at line 6, boost/preprocessor/control/detail/dmc/while.hpp at line 6, boost/preprocessor/control/detail/edg/while.hpp at line 6, boost/preprocessor/control/detail/msvc/while.hpp at line 6, boost/preprocessor/control/detail/while.hpp at line 6, boost/preprocessor/control/expr_if.hpp at line 6, boost/preprocessor/control/if.hpp at line 6, boost/preprocessor/debug/assert.hpp at line 6, boost/preprocessor/facilities/empty.hpp at line 6, boost/preprocessor/facilities/expand.hpp at line 6, boost/preprocessor/facilities/identity.hpp at line 6, boost/preprocessor/list.hpp at line 6, boost/preprocessor/list/adt.hpp at line 6, boost/preprocessor/list/append.hpp at line 6, boost/preprocessor/list/at.hpp at line 6, boost/preprocessor/list/cat.hpp at line 6, boost/preprocessor/list/detail/dmc/fold_left.hpp at line 6, boost/preprocessor/list/detail/edg/fold_left.hpp at line 6, boost/preprocessor/list/detail/edg/fold_right.hpp at line 6, boost/preprocessor/list/detail/fold_left.hpp at line 6, boost/preprocessor/list/detail/fold_right.hpp at line 6, boost/preprocessor/list/enum.hpp at line 6, boost/preprocessor/list/filter.hpp at line 6, boost/preprocessor/list/first_n.hpp at line 6, boost/preprocessor/list/fold_left.hpp at line 6, boost/preprocessor/list/fold_right.hpp at line 6, boost/preprocessor/list/for_each.hpp at line 6, boost/preprocessor/list/for_each_i.hpp at line 6, boost/preprocessor/list/for_each_product.hpp at line 6, boost/preprocessor/list/rest_n.hpp at line 6, boost/preprocessor/list/reverse.hpp at line 6, boost/preprocessor/list/size.hpp at line 6, boost/preprocessor/list/to_tuple.hpp at line 6, boost/preprocessor/list/transform.hpp at line 6, boost/preprocessor/logical.hpp at line 6, boost/preprocessor/logical/and.hpp at line 6, boost/preprocessor/logical/bool.hpp at line 6, boost/preprocessor/logical/nor.hpp at line 6, boost/preprocessor/logical/not.hpp at line 6, boost/preprocessor/logical/or.hpp at line 6, boost/preprocessor/logical/xor.hpp at line 6, boost/preprocessor/punctuation/comma.hpp at line 6, boost/preprocessor/punctuation/comma_if.hpp at line 6, boost/preprocessor/repetition/detail/dmc/for.hpp at line 6, boost/preprocessor/repetition/detail/edg/for.hpp at line 6, boost/preprocessor/repetition/detail/for.hpp at line 6, boost/preprocessor/repetition/detail/msvc/for.hpp at line 6, boost/preprocessor/repetition/enum.hpp at line 6, boost/preprocessor/repetition/enum_params.hpp at line 6, boost/preprocessor/repetition/enum_params_with_a_default.hpp at line 6, boost/preprocessor/repetition/enum_params_with_defaults.hpp at line 6, boost/preprocessor/repetition/enum_shifted.hpp at line 6, boost/preprocessor/repetition/enum_shifted_params.hpp at line 6, boost/preprocessor/repetition/for.hpp at line 6, boost/preprocessor/repetition/repeat.hpp at line 6, boost/preprocessor/repetition/repeat_from_to.hpp at line 6, boost/preprocessor/selection/max.hpp at line 6, boost/preprocessor/selection/min.hpp at line 6, boost/preprocessor/stringize.hpp at line 6, boost/preprocessor/tuple.hpp at line 6
+ License text:
+ \# * Distributed under the Boost Software License, Version 1.0. (See
+ \# * accompanying file LICENSE_1_0.txt or copy at
+ \# * http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/preprocessor.hpp [5:7]
+ boost/preprocessor/arithmetic.hpp [5:7]
+ boost/preprocessor/arithmetic/add.hpp [5:7]
+ boost/preprocessor/arithmetic/dec.hpp [5:7]
+ boost/preprocessor/arithmetic/detail/div_base.hpp [5:7]
+ boost/preprocessor/arithmetic/div.hpp [5:7]
+ boost/preprocessor/arithmetic/inc.hpp [5:7]
+ boost/preprocessor/arithmetic/mod.hpp [5:7]
+ boost/preprocessor/arithmetic/mul.hpp [5:7]
+ boost/preprocessor/arithmetic/sub.hpp [5:7]
+ boost/preprocessor/cat.hpp [5:7]
+ boost/preprocessor/comparison.hpp [5:7]
+ boost/preprocessor/comparison/equal.hpp [5:7]
+ boost/preprocessor/comparison/greater.hpp [5:7]
+ boost/preprocessor/comparison/greater_equal.hpp [5:7]
+ boost/preprocessor/comparison/less.hpp [5:7]
+ boost/preprocessor/comparison/less_equal.hpp [5:7]
+ boost/preprocessor/comparison/not_equal.hpp [5:7]
+ boost/preprocessor/config/limits.hpp [5:7]
+ boost/preprocessor/control/detail/dmc/while.hpp [5:7]
+ boost/preprocessor/control/detail/edg/while.hpp [5:7]
+ boost/preprocessor/control/detail/msvc/while.hpp [5:7]
+ boost/preprocessor/control/detail/while.hpp [5:7]
+ boost/preprocessor/control/expr_if.hpp [5:7]
+ boost/preprocessor/control/if.hpp [5:7]
+ boost/preprocessor/debug/assert.hpp [5:7]
+ boost/preprocessor/facilities/empty.hpp [5:7]
+ boost/preprocessor/facilities/expand.hpp [5:7]
+ boost/preprocessor/facilities/identity.hpp [5:7]
+ boost/preprocessor/list.hpp [5:7]
+ boost/preprocessor/list/adt.hpp [5:7]
+ boost/preprocessor/list/append.hpp [5:7]
+ boost/preprocessor/list/at.hpp [5:7]
+ boost/preprocessor/list/cat.hpp [5:7]
+ boost/preprocessor/list/detail/dmc/fold_left.hpp [5:7]
+ boost/preprocessor/list/detail/edg/fold_left.hpp [5:7]
+ boost/preprocessor/list/detail/edg/fold_right.hpp [5:7]
+ boost/preprocessor/list/detail/fold_left.hpp [5:7]
+ boost/preprocessor/list/detail/fold_right.hpp [5:7]
+ boost/preprocessor/list/enum.hpp [5:7]
+ boost/preprocessor/list/filter.hpp [5:7]
+ boost/preprocessor/list/first_n.hpp [5:7]
+ boost/preprocessor/list/fold_left.hpp [5:7]
+ boost/preprocessor/list/fold_right.hpp [5:7]
+ boost/preprocessor/list/for_each.hpp [5:7]
+ boost/preprocessor/list/for_each_i.hpp [5:7]
+ boost/preprocessor/list/for_each_product.hpp [5:7]
+ boost/preprocessor/list/rest_n.hpp [5:7]
+ boost/preprocessor/list/reverse.hpp [5:7]
+ boost/preprocessor/list/size.hpp [5:7]
+ boost/preprocessor/list/to_tuple.hpp [5:7]
+ boost/preprocessor/list/transform.hpp [5:7]
+ boost/preprocessor/logical.hpp [5:7]
+ boost/preprocessor/logical/and.hpp [5:7]
+ boost/preprocessor/logical/bool.hpp [5:7]
+ boost/preprocessor/logical/nor.hpp [5:7]
+ boost/preprocessor/logical/not.hpp [5:7]
+ boost/preprocessor/logical/or.hpp [5:7]
+ boost/preprocessor/logical/xor.hpp [5:7]
+ boost/preprocessor/punctuation/comma.hpp [5:7]
+ boost/preprocessor/punctuation/comma_if.hpp [5:7]
+ boost/preprocessor/repetition/detail/dmc/for.hpp [5:7]
+ boost/preprocessor/repetition/detail/edg/for.hpp [5:7]
+ boost/preprocessor/repetition/detail/for.hpp [5:7]
+ boost/preprocessor/repetition/detail/msvc/for.hpp [5:7]
+ boost/preprocessor/repetition/enum.hpp [5:7]
+ boost/preprocessor/repetition/enum_params.hpp [5:7]
+ boost/preprocessor/repetition/enum_params_with_a_default.hpp [5:7]
+ boost/preprocessor/repetition/enum_params_with_defaults.hpp [5:7]
+ boost/preprocessor/repetition/enum_shifted.hpp [5:7]
+ boost/preprocessor/repetition/enum_shifted_params.hpp [5:7]
+ boost/preprocessor/repetition/for.hpp [5:7]
+ boost/preprocessor/repetition/repeat.hpp [5:7]
+ boost/preprocessor/repetition/repeat_from_to.hpp [5:7]
+ boost/preprocessor/selection/max.hpp [5:7]
+ boost/preprocessor/selection/min.hpp [5:7]
+ boost/preprocessor/stringize.hpp [5:7]
+ boost/preprocessor/tuple.hpp [5:7]
+
+KEEP BSL-1.0 8e0227f825163b0c4b28b330397fa5eb
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/detail/collection_traits.hpp at line 10
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/range/detail/collection_traits.hpp [8:11]
+
+KEEP BSL-1.0 8e69b0b2f16cd74aa0e5e63a0b06674e
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signals2/detail/result_type_wrapper.hpp at line 6, boost/signals2/detail/signals_common.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/signals2/detail/result_type_wrapper.hpp [4:7]
+ boost/signals2/detail/signals_common.hpp [4:7]
+
+KEEP BSL-1.0 8eecb41322fd21e26f9e556e8aa5c20f
+BELONGS libs/python/ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: libs/python/src/converter/type_id.cpp at line 147
+ License text:
+ // Contributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.30
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ libs/python/src/converter/type_id.cpp [146:148]
+
+KEEP BSL-1.0 8f3bd9a6adf2e880def921a200c6089c
+BELONGS ya.make
+ License text:
+ // Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : REFERENCE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/function_types/config/compiler.hpp [5:5]
+ boost/function_types/detail/cv_traits.hpp [5:5]
+ boost/function_types/detail/pp_variate_loop/preprocessed.hpp [5:5]
+ boost/function_types/function_type.hpp [5:5]
+ boost/typeof/vector100.hpp [6:6]
+ boost/typeof/vector150.hpp [6:6]
+ boost/typeof/vector200.hpp [6:6]
+
+KEEP BSL-1.0 8f6a7508df640acaeae6c00eb6b48dc2
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/pool/detail/pool_construct.ipp at line 4
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 97.37
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/pool/detail/pool_construct.ipp [3:6]
+
+KEEP BSL-1.0 8fc1de4a757b09268729457d0978f08e
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/cpp_int/import_export.hpp at line 4
+ License text:
+ // Copyright 2015 John Maddock. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 92.59
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/multiprecision/cpp_int/import_export.hpp [2:4]
+
+KEEP BSL-1.0 90107d2b937b306faf40f2deb0858e34
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iterator/detail/any_conversion_eater.hpp at line 3, boost/iterator/detail/facade_iterator_category.hpp at line 3, boost/iterator/detail/minimum_category.hpp at line 3, boost/iterator/is_lvalue_iterator.hpp at line 3, boost/iterator/is_readable_iterator.hpp at line 3, boost/iterator/minimum_category.hpp at line 3
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/iterator/detail/any_conversion_eater.hpp [1:3]
+ boost/iterator/detail/facade_iterator_category.hpp [1:3]
+ boost/iterator/detail/minimum_category.hpp [1:3]
+ boost/iterator/is_lvalue_iterator.hpp [1:3]
+ boost/iterator/is_readable_iterator.hpp [1:3]
+ boost/iterator/minimum_category.hpp [1:3]
+
+SKIP LicenseRef-scancode-proprietary-license 90211759450bb4abe057697e60d3aa0b
+BELONGS ya.make
+ License text:
+ http://software.intel.com/en-us/articles/non-commercial-software-download/
+ Scancode info:
+ Original SPDX id: LicenseRef-scancode-proprietary-license
+ Score : 100.00
+ Match type : REFERENCE
+ Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/proprietary-license.LICENSE
+ Files with this license:
+ boost/numeric/odeint/external/mkl/mkl_operations.hpp [8:8]
+
+KEEP BSL-1.0 90cabaecb5b34cc68a2a39693a8a953f
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/detail/container_or_allocator_rebind.hpp at line 5, boost/container/detail/container_rebind.hpp at line 5, boost/container/detail/is_container.hpp at line 5, boost/container/detail/is_contiguous_container.hpp at line 5, boost/container/detail/value_functors.hpp at line 7
+ License text:
+ // (C) Copyright Ion Gaztanaga 2017-2017. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/container/detail/container_or_allocator_rebind.hpp [3:5]
+ boost/container/detail/container_rebind.hpp [3:5]
+ boost/container/detail/is_container.hpp [3:5]
+ boost/container/detail/is_contiguous_container.hpp [3:5]
+ boost/container/detail/value_functors.hpp [5:7]
+
+KEEP BSL-1.0 916300612debc9bebbe59992654a8a6c
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/stable_vector.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2008-2015. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/container/stable_vector.hpp [3:5]
+
+KEEP BSL-1.0 9345cd12d4429cfc366f36202f6b68bd
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/allocators/detail/node_tools.hpp at line 5, boost/interprocess/detail/interprocess_tester.hpp at line 5, boost/interprocess/sync/shm/named_creation_functor.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2007-2012. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/interprocess/allocators/detail/node_tools.hpp [3:5]
+ boost/interprocess/detail/interprocess_tester.hpp [3:5]
+ boost/interprocess/sync/shm/named_creation_functor.hpp [3:5]
+
+KEEP BSL-1.0 937b7f0a3b5ebb47be156fcbd17ef2d6
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/phoenix/bind/detail/cpp03/member_function_ptr.hpp at line 5
+ License text:
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/phoenix/bind/detail/cpp03/member_function_ptr.hpp [4:5]
+
+KEEP BSL-1.0 959290e55386dd6d1518500478c61ec1
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/limits.hpp at line 5
+ License text:
+ // (C) David Abrahams 2002. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/limits.hpp [3:5]
+
+KEEP BSL-1.0 95b08d3d1741353adb0aa5200d17d761
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/test/utils/runtime/cla/argv_traverser.hpp at line 4, boost/test/utils/runtime/cla/parser.hpp at line 4, boost/test/utils/runtime/modifier.hpp at line 4
+ License text:
+ // Use, modification, and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/test/utils/runtime/cla/argv_traverser.hpp [2:4]
+ boost/test/utils/runtime/cla/parser.hpp [2:4]
+ boost/test/utils/runtime/modifier.hpp [2:4]
+
+KEEP BSL-1.0 96478893d86ff4047edf31e2e63149c3
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/assign/ptr_list_inserter.hpp at line 5, boost/assign/ptr_list_of.hpp at line 5, boost/ptr_container/clone_allocator.hpp at line 6, boost/ptr_container/detail/associative_ptr_container.hpp at line 6, boost/ptr_container/detail/map_iterator.hpp at line 6, boost/ptr_container/detail/reversible_ptr_container.hpp at line 6, boost/ptr_container/detail/scoped_deleter.hpp at line 6, boost/ptr_container/detail/void_ptr_iterator.hpp at line 6, boost/ptr_container/exception.hpp at line 6, boost/ptr_container/nullable.hpp at line 6, boost/ptr_container/ptr_array.hpp at line 6, boost/ptr_container/ptr_deque.hpp at line 6, boost/ptr_container/ptr_list.hpp at line 6, boost/ptr_container/ptr_map.hpp at line 6, boost/ptr_container/ptr_map_adapter.hpp at line 6, boost/ptr_container/ptr_sequence_adapter.hpp at line 6, boost/ptr_container/ptr_set.hpp at line 6, boost/ptr_container/ptr_set_adapter.hpp at line 6, boost/ptr_container/ptr_vector.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/assign/ptr_list_inserter.hpp [3:6]
+ boost/assign/ptr_list_of.hpp [3:6]
+ boost/ptr_container/clone_allocator.hpp [4:7]
+ boost/ptr_container/detail/associative_ptr_container.hpp [4:7]
+ boost/ptr_container/detail/map_iterator.hpp [4:7]
+ boost/ptr_container/detail/reversible_ptr_container.hpp [4:7]
+ boost/ptr_container/detail/scoped_deleter.hpp [4:7]
+ boost/ptr_container/detail/void_ptr_iterator.hpp [4:7]
+ boost/ptr_container/exception.hpp [4:7]
+ boost/ptr_container/nullable.hpp [4:7]
+ boost/ptr_container/ptr_array.hpp [4:7]
+ boost/ptr_container/ptr_deque.hpp [4:7]
+ boost/ptr_container/ptr_list.hpp [4:7]
+ boost/ptr_container/ptr_map.hpp [4:7]
+ boost/ptr_container/ptr_map_adapter.hpp [4:7]
+ boost/ptr_container/ptr_sequence_adapter.hpp [4:7]
+ boost/ptr_container/ptr_set.hpp [4:7]
+ boost/ptr_container/ptr_set_adapter.hpp [4:7]
+ boost/ptr_container/ptr_vector.hpp [4:7]
+
+KEEP BSL-1.0 974662d1636f9053127d3f90231dc590
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/locale/generic_codecvt.hpp at line 5, boost/numeric/ublas/vector.hpp at line 7
+ License text:
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/locale/generic_codecvt.hpp [4:6]
+ boost/numeric/ublas/vector.hpp [6:8]
+
+KEEP BSL-1.0 9789d43d789d7742ae74056e544e9848
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/parameter/aux_/cast.hpp at line 3, boost/parameter/aux_/maybe.hpp at line 3, boost/parameter/aux_/set.hpp at line 3, boost/parameter/aux_/template_keyword.hpp at line 3, boost/parameter/name.hpp at line 3, boost/parameter/preprocessor.hpp at line 3, boost/parameter/python.hpp at line 3, boost/parameter/value_type.hpp at line 3
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/parameter/aux_/cast.hpp [1:3]
+ boost/parameter/aux_/maybe.hpp [1:3]
+ boost/parameter/aux_/set.hpp [1:3]
+ boost/parameter/aux_/template_keyword.hpp [1:3]
+ boost/parameter/name.hpp [1:3]
+ boost/parameter/preprocessor.hpp [1:3]
+ boost/parameter/python.hpp [1:3]
+ boost/parameter/value_type.hpp [1:3]
+
+KEEP BSL-1.0 97bce3fe99c8cde881a7ce7abdb5af68
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/detail/ublas_interop.hpp at line 4
+ License text:
+ // Copyright 2013 John Maddock. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/multiprecision/detail/ublas_interop.hpp [2:4]
+
+KEEP BSL-1.0 993611176c66f479092f1d200d68e07f
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/numeric/odeint/algebra/fusion_algebra_dispatcher.hpp at line 13, boost/numeric/odeint/algebra/multi_array_algebra.hpp at line 13, boost/numeric/odeint/external/blaze/blaze_algebra_dispatcher.hpp at line 13, boost/numeric/odeint/external/blaze/blaze_resize.hpp at line 13, boost/numeric/odeint/external/compute/compute.hpp at line 13, boost/numeric/odeint/external/compute/compute_algebra_dispatcher.hpp at line 13, boost/numeric/odeint/external/compute/compute_operations_dispatcher.hpp at line 13, boost/numeric/odeint/external/eigen/eigen.hpp at line 13, boost/numeric/odeint/external/eigen/eigen_algebra.hpp at line 13, boost/numeric/odeint/external/eigen/eigen_algebra_dispatcher.hpp at line 13, boost/numeric/odeint/external/eigen/eigen_resize.hpp at line 13, boost/numeric/odeint/external/thrust/thrust.hpp at line 13, boost/numeric/odeint/external/thrust/thrust_algebra_dispatcher.hpp at line 13, boost/numeric/odeint/external/thrust/thrust_operations_dispatcher.hpp at line 13, boost/numeric/odeint/external/vexcl/vexcl.hpp at line 13, boost/numeric/odeint/external/vexcl/vexcl_abs.hpp at line 13, boost/numeric/odeint/external/vexcl/vexcl_algebra_dispatcher.hpp at line 13, boost/numeric/odeint/external/vexcl/vexcl_norm_inf.hpp at line 13, boost/numeric/odeint/iterator/impl/adaptive_iterator_impl.hpp at line 13, boost/numeric/odeint/iterator/impl/const_step_iterator_impl.hpp at line 13, boost/numeric/odeint/iterator/impl/n_step_iterator_impl.hpp at line 13, boost/numeric/odeint/iterator/impl/times_iterator_impl.hpp at line 13, boost/numeric/odeint/stepper/bulirsch_stoer.hpp at line 17, boost/numeric/odeint/stepper/extrapolation_stepper.hpp at line 12, boost/numeric/odeint/stepper/symplectic_rkn_sb3a_m4_mclachlan.hpp at line 13, boost/numeric/odeint/stepper/velocity_verlet.hpp at line 13, boost/numeric/odeint/util/multi_array_adaption.hpp at line 13, boost/numeric/odeint/util/stepper_traits.hpp at line 13, boost/numeric/odeint/util/unit_helper.hpp at line 13
+ License text:
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or
+ copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/numeric/odeint/algebra/fusion_algebra_dispatcher.hpp [12:14]
+ boost/numeric/odeint/algebra/multi_array_algebra.hpp [12:14]
+ boost/numeric/odeint/external/blaze/blaze_algebra_dispatcher.hpp [12:14]
+ boost/numeric/odeint/external/blaze/blaze_resize.hpp [12:14]
+ boost/numeric/odeint/external/compute/compute.hpp [12:14]
+ boost/numeric/odeint/external/compute/compute_algebra_dispatcher.hpp [12:14]
+ boost/numeric/odeint/external/compute/compute_operations_dispatcher.hpp [12:14]
+ boost/numeric/odeint/external/eigen/eigen.hpp [12:14]
+ boost/numeric/odeint/external/eigen/eigen_algebra.hpp [12:14]
+ boost/numeric/odeint/external/eigen/eigen_algebra_dispatcher.hpp [12:14]
+ boost/numeric/odeint/external/eigen/eigen_resize.hpp [12:14]
+ boost/numeric/odeint/external/thrust/thrust.hpp [12:14]
+ boost/numeric/odeint/external/thrust/thrust_algebra_dispatcher.hpp [12:14]
+ boost/numeric/odeint/external/thrust/thrust_operations_dispatcher.hpp [12:14]
+ boost/numeric/odeint/external/vexcl/vexcl.hpp [12:14]
+ boost/numeric/odeint/external/vexcl/vexcl_abs.hpp [12:14]
+ boost/numeric/odeint/external/vexcl/vexcl_algebra_dispatcher.hpp [12:14]
+ boost/numeric/odeint/external/vexcl/vexcl_norm_inf.hpp [12:14]
+ boost/numeric/odeint/iterator/impl/adaptive_iterator_impl.hpp [12:14]
+ boost/numeric/odeint/iterator/impl/const_step_iterator_impl.hpp [12:14]
+ boost/numeric/odeint/iterator/impl/n_step_iterator_impl.hpp [12:14]
+ boost/numeric/odeint/iterator/impl/times_iterator_impl.hpp [12:14]
+ boost/numeric/odeint/stepper/bulirsch_stoer.hpp [16:18]
+ boost/numeric/odeint/stepper/extrapolation_stepper.hpp [11:13]
+ boost/numeric/odeint/stepper/symplectic_rkn_sb3a_m4_mclachlan.hpp [12:14]
+ boost/numeric/odeint/stepper/velocity_verlet.hpp [12:14]
+ boost/numeric/odeint/util/multi_array_adaption.hpp [12:14]
+ boost/numeric/odeint/util/stepper_traits.hpp [12:14]
+ boost/numeric/odeint/util/unit_helper.hpp [12:14]
+
+KEEP BSL-1.0 996aeb007415a6ef8ea5b321bc17500c
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/array.hpp at line 6, boost/preprocessor/array/detail/get_data.hpp at line 5, boost/preprocessor/array/enum.hpp at line 6, boost/preprocessor/array/to_list.hpp at line 6, boost/preprocessor/array/to_seq.hpp at line 6, boost/preprocessor/array/to_tuple.hpp at line 6, boost/preprocessor/facilities.hpp at line 6, boost/preprocessor/facilities/overload.hpp at line 6, boost/preprocessor/library.hpp at line 6, boost/preprocessor/repetition/enum_shifted_binary_params.hpp at line 5, boost/preprocessor/seq.hpp at line 6, boost/preprocessor/seq/detail/binary_transform.hpp at line 5, boost/preprocessor/seq/detail/to_list_msvc.hpp at line 5, boost/preprocessor/seq/to_list.hpp at line 6, boost/preprocessor/seq/variadic_seq_to_seq.hpp at line 5, boost/preprocessor/slot/counter.hpp at line 5, boost/preprocessor/tuple/detail/is_single_return.hpp at line 5, boost/preprocessor/tuple/enum.hpp at line 6, boost/preprocessor/tuple/size.hpp at line 6, boost/preprocessor/tuple/to_array.hpp at line 6, boost/preprocessor/variadic.hpp at line 6, boost/preprocessor/variadic/detail/is_single_return.hpp at line 5, boost/preprocessor/variadic/to_array.hpp at line 6, boost/preprocessor/variadic/to_list.hpp at line 6, boost/preprocessor/variadic/to_seq.hpp at line 6, boost/preprocessor/variadic/to_tuple.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/preprocessor/array.hpp [5:7]
+ boost/preprocessor/array/detail/get_data.hpp [4:6]
+ boost/preprocessor/array/enum.hpp [5:7]
+ boost/preprocessor/array/to_list.hpp [5:7]
+ boost/preprocessor/array/to_seq.hpp [5:7]
+ boost/preprocessor/array/to_tuple.hpp [5:7]
+ boost/preprocessor/facilities.hpp [5:7]
+ boost/preprocessor/facilities/overload.hpp [5:7]
+ boost/preprocessor/library.hpp [5:7]
+ boost/preprocessor/repetition/enum_shifted_binary_params.hpp [4:6]
+ boost/preprocessor/seq.hpp [5:7]
+ boost/preprocessor/seq/detail/binary_transform.hpp [4:6]
+ boost/preprocessor/seq/detail/to_list_msvc.hpp [4:6]
+ boost/preprocessor/seq/to_list.hpp [5:7]
+ boost/preprocessor/seq/variadic_seq_to_seq.hpp [4:6]
+ boost/preprocessor/slot/counter.hpp [4:6]
+ boost/preprocessor/tuple/detail/is_single_return.hpp [4:6]
+ boost/preprocessor/tuple/enum.hpp [5:7]
+ boost/preprocessor/tuple/size.hpp [5:7]
+ boost/preprocessor/tuple/to_array.hpp [5:7]
+ boost/preprocessor/variadic.hpp [5:7]
+ boost/preprocessor/variadic/detail/is_single_return.hpp [4:6]
+ boost/preprocessor/variadic/to_array.hpp [5:7]
+ boost/preprocessor/variadic/to_list.hpp [5:7]
+ boost/preprocessor/variadic/to_seq.hpp [5:7]
+ boost/preprocessor/variadic/to_tuple.hpp [5:7]
+
+KEEP BSL-1.0 99a2517494483ddaf8422369bcf4f9f9
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/sort/common/deque_cnc.hpp at line 8, boost/sort/common/file_vector.hpp at line 9, boost/sort/common/int_array.hpp at line 9, boost/sort/common/range.hpp at line 7, boost/sort/common/scheduler.hpp at line 8, boost/sort/common/spinlock.hpp at line 7, boost/sort/common/stack_cnc.hpp at line 7, boost/sort/common/time_measure.hpp at line 8, boost/sort/common/util/circular_buffer.hpp at line 7
+ License text:
+ /// Distributed under the Boost Software License, Version 1.0.\n
+ /// ( See accompanyingfile LICENSE_1_0.txt or copy at
+ /// http://www.boost.org/LICENSE_1_0.txt )
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 92.59
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/sort/common/deque_cnc.hpp [7:9]
+ boost/sort/common/file_vector.hpp [8:10]
+ boost/sort/common/int_array.hpp [8:10]
+ boost/sort/common/range.hpp [6:8]
+ boost/sort/common/scheduler.hpp [7:9]
+ boost/sort/common/spinlock.hpp [6:8]
+ boost/sort/common/stack_cnc.hpp [6:8]
+ boost/sort/common/time_measure.hpp [7:9]
+ boost/sort/common/util/circular_buffer.hpp [6:8]
+
+KEEP Mit-Old-Style 99b210ed9efe704d061e43a6c4c4beb3
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: LicenseRef-scancode-mit-old-style
+ Score : 100.00
+ Match type : TEXT
+ Links : http://fedoraproject.org/wiki/Licensing:MIT#Old_Style, https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/mit-old-style.LICENSE
+ Files with this license:
+ boost/detail/algorithm.hpp [22:28]
+ boost/interprocess/streams/bufferstream.hpp [20:26]
+ boost/interprocess/streams/vectorstream.hpp [20:26]
+ boost/multi_index/detail/ord_index_impl.hpp [14:20]
+ boost/multi_index/detail/ord_index_node.hpp [14:20]
+ boost/multi_index/detail/ord_index_ops.hpp [14:20]
+
+KEEP BSL-1.0 99b6858285788dea8099fc1db476bbc4
+BELONGS ya.make
+ License text:
+ Many thanks to Howard for making his code available under the Boost license.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 99.00
+ Match type : REFERENCE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/chrono/duration.hpp [13:13]
+ boost/chrono/system_clocks.hpp [13:13]
+ boost/chrono/time_point.hpp [13:13]
+ boost/ratio/detail/overflow_helpers.hpp [13:13]
+ boost/ratio/ratio.hpp [13:13]
+ boost/ratio/ratio_fwd.hpp [13:13]
+
+KEEP BSL-1.0 9a500d42904daddc6b36adcda04d4788
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/program_options/config.hpp at line 4
+ License text:
+ // Use, modification and distribution is subject to the Boost Software
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/program_options/config.hpp [3:5]
+
+KEEP Mit-Old-Style 9b8db1be709ff8d6f1f61d67245cc319
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: LicenseRef-scancode-mit-old-style
+ Score : 100.00
+ Match type : TEXT
+ Links : http://fedoraproject.org/wiki/Licensing:MIT#Old_Style, https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/mit-old-style.LICENSE
+ Files with this license:
+ boost/detail/binary_search.hpp [20:26]
+ boost/multi_array/algorithm.hpp [21:27]
+
+KEEP BSL-1.0 9d20a7ec1d8fe9db95139a9118182659
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/smart_cast.hpp at line 14, boost/serialization/state_saver.hpp at line 14, boost/serialization/strong_typedef.hpp at line 15
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 94.74
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/serialization/smart_cast.hpp [13:17]
+ boost/serialization/state_saver.hpp [13:17]
+ boost/serialization/strong_typedef.hpp [14:18]
+
+KEEP BSL-1.0 9d31b67c9d23516796387b3bb5abe050
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/singleton.hpp at line 14
+ License text:
+ // Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/serialization/singleton.hpp [12:14]
+
+KEEP BSL-1.0 9e5c81a5e33b167767ac3b6aa4556426
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/fenv.hpp at line 5, boost/detail/is_sorted.hpp at line 5, boost/fusion/adapted.hpp at line 6, boost/fusion/adapted/adt.hpp at line 7, boost/fusion/adapted/adt/adapt_adt.hpp at line 8, boost/fusion/adapted/adt/adapt_adt_named.hpp at line 7, boost/fusion/adapted/adt/adapt_assoc_adt.hpp at line 8, boost/fusion/adapted/adt/adapt_assoc_adt_named.hpp at line 5, boost/fusion/adapted/adt/detail/adapt_base.hpp at line 7, boost/fusion/adapted/adt/detail/adapt_base_assoc_attr_filler.hpp at line 5, boost/fusion/adapted/adt/detail/adapt_base_attr_filler.hpp at line 5, boost/fusion/adapted/adt/detail/extension.hpp at line 7, boost/fusion/adapted/array/deref_impl.hpp at line 5, boost/fusion/adapted/array/size_impl.hpp at line 5, boost/fusion/adapted/array/value_of_impl.hpp at line 5, boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp at line 5, boost/fusion/adapted/boost_tuple/detail/build_cons.hpp at line 5, boost/fusion/adapted/boost_tuple/detail/convert_impl.hpp at line 5, boost/fusion/adapted/boost_tuple/mpl/clear.hpp at line 5, boost/fusion/adapted/mpl.hpp at line 6, boost/fusion/adapted/mpl/detail/empty_impl.hpp at line 6, boost/fusion/adapted/std_pair.hpp at line 7, boost/fusion/adapted/std_tuple.hpp at line 5, boost/fusion/adapted/std_tuple/detail/at_impl.hpp at line 5, boost/fusion/adapted/std_tuple/detail/begin_impl.hpp at line 5, boost/fusion/adapted/std_tuple/detail/build_std_tuple.hpp at line 5, boost/fusion/adapted/std_tuple/detail/category_of_impl.hpp at line 5, boost/fusion/adapted/std_tuple/detail/convert_impl.hpp at line 5, boost/fusion/adapted/std_tuple/detail/end_impl.hpp at line 5, boost/fusion/adapted/std_tuple/detail/is_sequence_impl.hpp at line 5, boost/fusion/adapted/std_tuple/detail/is_view_impl.hpp at line 5, boost/fusion/adapted/std_tuple/detail/size_impl.hpp at line 5, boost/fusion/adapted/std_tuple/detail/value_at_impl.hpp at line 5, boost/fusion/adapted/std_tuple/mpl/clear.hpp at line 5, boost/fusion/adapted/std_tuple/std_tuple_iterator.hpp at line 5, boost/fusion/adapted/std_tuple/tag_of.hpp at line 5, boost/fusion/adapted/struct.hpp at line 7, boost/fusion/adapted/struct/adapt_assoc_struct.hpp at line 7, boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp at line 5, boost/fusion/adapted/struct/adapt_struct.hpp at line 7, boost/fusion/adapted/struct/adapt_struct_named.hpp at line 7, boost/fusion/adapted/struct/define_assoc_struct.hpp at line 5, boost/fusion/adapted/struct/define_struct.hpp at line 5, boost/fusion/adapted/struct/define_struct_inline.hpp at line 5, boost/fusion/adapted/struct/detail/adapt_auto.hpp at line 5, boost/fusion/adapted/struct/detail/adapt_base.hpp at line 8, boost/fusion/adapted/struct/detail/adapt_base_assoc_attr_filler.hpp at line 5, boost/fusion/adapted/struct/detail/adapt_base_attr_filler.hpp at line 5, boost/fusion/adapted/struct/detail/adapt_is_tpl.hpp at line 5, boost/fusion/adapted/struct/detail/at_impl.hpp at line 7, boost/fusion/adapted/struct/detail/begin_impl.hpp at line 7, boost/fusion/adapted/struct/detail/category_of_impl.hpp at line 7, boost/fusion/adapted/struct/detail/define_struct.hpp at line 5, boost/fusion/adapted/struct/detail/define_struct_inline.hpp at line 5, boost/fusion/adapted/struct/detail/deref_data_impl.hpp at line 5, boost/fusion/adapted/struct/detail/deref_impl.hpp at line 5, boost/fusion/adapted/struct/detail/end_impl.hpp at line 7, boost/fusion/adapted/struct/detail/extension.hpp at line 7, boost/fusion/adapted/struct/detail/is_sequence_impl.hpp at line 7, boost/fusion/adapted/struct/detail/is_view_impl.hpp at line 7, boost/fusion/adapted/struct/detail/key_of_impl.hpp at line 5, boost/fusion/adapted/struct/detail/namespace.hpp at line 6, boost/fusion/adapted/struct/detail/preprocessor/is_seq.hpp at line 9, boost/fusion/adapted/struct/detail/proxy_type.hpp at line 6, boost/fusion/adapted/struct/detail/size_impl.hpp at line 7, boost/fusion/adapted/struct/detail/value_at_impl.hpp at line 7, boost/fusion/adapted/struct/detail/value_of_data_impl.hpp at line 5, boost/fusion/adapted/struct/detail/value_of_impl.hpp at line 5, boost/fusion/algorithm/auxiliary.hpp at line 5, boost/fusion/algorithm/auxiliary/copy.hpp at line 5, boost/fusion/algorithm/auxiliary/move.hpp at line 5, boost/fusion/algorithm/iteration/detail/fold.hpp at line 8, boost/fusion/algorithm/iteration/detail/preprocessed/fold.hpp at line 7, boost/fusion/algorithm/iteration/detail/preprocessed/iter_fold.hpp at line 6, boost/fusion/algorithm/iteration/detail/preprocessed/reverse_fold.hpp at line 6, boost/fusion/algorithm/iteration/detail/preprocessed/reverse_iter_fold.hpp at line 6, boost/fusion/algorithm/iteration/fold.hpp at line 40, boost/fusion/algorithm/iteration/fold.hpp at line 8, boost/fusion/algorithm/iteration/fold_fwd.hpp at line 5, boost/fusion/algorithm/iteration/iter_fold.hpp at line 41, boost/fusion/algorithm/iteration/iter_fold.hpp at line 7, boost/fusion/algorithm/iteration/iter_fold_fwd.hpp at line 5, boost/fusion/algorithm/iteration/reverse_fold.hpp at line 41, boost/fusion/algorithm/iteration/reverse_fold.hpp at line 7, boost/fusion/algorithm/iteration/reverse_fold_fwd.hpp at line 5, boost/fusion/algorithm/iteration/reverse_iter_fold.hpp at line 41, boost/fusion/algorithm/iteration/reverse_iter_fold.hpp at line 7, boost/fusion/algorithm/iteration/reverse_iter_fold_fwd.hpp at line 5, boost/fusion/algorithm/transformation/detail/preprocessed/zip.hpp at line 5, boost/fusion/algorithm/transformation/erase.hpp at line 5, boost/fusion/algorithm/transformation/flatten.hpp at line 5, boost/fusion/algorithm/transformation/insert.hpp at line 5, boost/fusion/algorithm/transformation/insert_range.hpp at line 5, boost/fusion/algorithm/transformation/pop_back.hpp at line 5, boost/fusion/algorithm/transformation/zip.hpp at line 47, boost/fusion/algorithm/transformation/zip.hpp at line 6, boost/fusion/container.hpp at line 5, boost/fusion/container/deque.hpp at line 6, boost/fusion/container/deque/back_extended_deque.hpp at line 6, boost/fusion/container/deque/convert.hpp at line 6, boost/fusion/container/deque/deque.hpp at line 6, boost/fusion/container/deque/deque_fwd.hpp at line 6, boost/fusion/container/deque/deque_iterator.hpp at line 6, boost/fusion/container/deque/detail/at_impl.hpp at line 6, boost/fusion/container/deque/detail/begin_impl.hpp at line 6, boost/fusion/container/deque/detail/build_deque.hpp at line 5, boost/fusion/container/deque/detail/convert_impl.hpp at line 7, boost/fusion/container/deque/detail/cpp03/as_deque.hpp at line 6, boost/fusion/container/deque/detail/cpp03/as_deque.hpp at line 69, boost/fusion/container/deque/detail/cpp03/build_deque.hpp at line 5, boost/fusion/container/deque/detail/cpp03/deque.hpp at line 54, boost/fusion/container/deque/detail/cpp03/deque.hpp at line 6, boost/fusion/container/deque/detail/cpp03/deque_forward_ctor.hpp at line 6, boost/fusion/container/deque/detail/cpp03/deque_fwd.hpp at line 29, boost/fusion/container/deque/detail/cpp03/deque_fwd.hpp at line 6, boost/fusion/container/deque/detail/cpp03/deque_initial_size.hpp at line 38, boost/fusion/container/deque/detail/cpp03/deque_initial_size.hpp at line 6, boost/fusion/container/deque/detail/cpp03/deque_keyed_values.hpp at line 46, boost/fusion/container/deque/detail/cpp03/deque_keyed_values.hpp at line 6, boost/fusion/container/deque/detail/cpp03/deque_keyed_values_call.hpp at line 6, boost/fusion/container/deque/detail/cpp03/limits.hpp at line 6, boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque10_fwd.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque_fwd.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size10.hpp at line 5, boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values.hpp at line 5, boost/fusion/container/deque/detail/deque_keyed_values.hpp at line 6, boost/fusion/container/deque/detail/end_impl.hpp at line 6, boost/fusion/container/deque/detail/is_sequence_impl.hpp at line 5, boost/fusion/container/deque/detail/keyed_element.hpp at line 6, boost/fusion/container/deque/detail/value_at_impl.hpp at line 6, boost/fusion/container/deque/front_extended_deque.hpp at line 6, boost/fusion/container/generation.hpp at line 5, boost/fusion/container/generation/deque_tie.hpp at line 5, boost/fusion/container/generation/detail/pp_deque_tie.hpp at line 31, boost/fusion/container/generation/detail/pp_deque_tie.hpp at line 6, boost/fusion/container/generation/detail/pp_list_tie.hpp at line 30, boost/fusion/container/generation/detail/pp_list_tie.hpp at line 5, boost/fusion/container/generation/detail/pp_make_deque.hpp at line 31, boost/fusion/container/generation/detail/pp_make_deque.hpp at line 6, boost/fusion/container/generation/detail/pp_make_list.hpp at line 30, boost/fusion/container/generation/detail/pp_make_list.hpp at line 5, boost/fusion/container/generation/detail/pp_make_map.hpp at line 31, boost/fusion/container/generation/detail/pp_make_map.hpp at line 5, boost/fusion/container/generation/detail/pp_make_set.hpp at line 32, boost/fusion/container/generation/detail/pp_make_set.hpp at line 5, boost/fusion/container/generation/detail/pp_make_vector.hpp at line 30, boost/fusion/container/generation/detail/pp_make_vector.hpp at line 5, boost/fusion/container/generation/detail/pp_map_tie.hpp at line 34, boost/fusion/container/generation/detail/pp_map_tie.hpp at line 6, boost/fusion/container/generation/detail/pp_vector_tie.hpp at line 30, boost/fusion/container/generation/detail/pp_vector_tie.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/deque_tie.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/deque_tie10.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/list_tie.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/list_tie10.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_deque.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_list.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_map.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_set.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/make_vector.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/map_tie.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/vector_tie.hpp at line 5, boost/fusion/container/generation/detail/preprocessed/vector_tie10.hpp at line 5, boost/fusion/container/generation/list_tie.hpp at line 5, boost/fusion/container/generation/make_deque.hpp at line 5, boost/fusion/container/generation/make_list.hpp at line 5, boost/fusion/container/generation/make_map.hpp at line 5, boost/fusion/container/generation/make_set.hpp at line 5, boost/fusion/container/generation/make_vector.hpp at line 5, boost/fusion/container/generation/map_tie.hpp at line 5, boost/fusion/container/generation/vector_tie.hpp at line 5, boost/fusion/container/list.hpp at line 5, boost/fusion/container/list/cons_fwd.hpp at line 6, boost/fusion/container/list/convert.hpp at line 5, boost/fusion/container/list/detail/at_impl.hpp at line 5, boost/fusion/container/list/detail/convert_impl.hpp at line 6, boost/fusion/container/list/detail/cpp03/limits.hpp at line 5, boost/fusion/container/list/detail/cpp03/list.hpp at line 29, boost/fusion/container/list/detail/cpp03/list.hpp at line 5, boost/fusion/container/list/detail/cpp03/list_fwd.hpp at line 25, boost/fusion/container/list/detail/cpp03/list_fwd.hpp at line 5, boost/fusion/container/list/detail/cpp03/list_to_cons.hpp at line 37, boost/fusion/container/list/detail/cpp03/list_to_cons.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list10_fwd.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list_fwd.hpp at line 5, boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons.hpp at line 5, boost/fusion/container/list/detail/list_to_cons.hpp at line 5, boost/fusion/container/list/detail/reverse_cons.hpp at line 5, boost/fusion/container/list/list.hpp at line 5, boost/fusion/container/list/list_fwd.hpp at line 5, boost/fusion/container/map.hpp at line 5, boost/fusion/container/map/convert.hpp at line 5, boost/fusion/container/map/detail/at_impl.hpp at line 5, boost/fusion/container/map/detail/at_key_impl.hpp at line 5, boost/fusion/container/map/detail/begin_impl.hpp at line 5, boost/fusion/container/map/detail/build_map.hpp at line 5, boost/fusion/container/map/detail/cpp03/as_map.hpp at line 5, boost/fusion/container/map/detail/cpp03/as_map.hpp at line 68, boost/fusion/container/map/detail/cpp03/begin_impl.hpp at line 6, boost/fusion/container/map/detail/cpp03/convert.hpp at line 5, boost/fusion/container/map/detail/cpp03/convert_impl.hpp at line 6, boost/fusion/container/map/detail/cpp03/deref_data_impl.hpp at line 5, boost/fusion/container/map/detail/cpp03/deref_impl.hpp at line 5, boost/fusion/container/map/detail/cpp03/end_impl.hpp at line 6, boost/fusion/container/map/detail/cpp03/key_of_impl.hpp at line 5, boost/fusion/container/map/detail/cpp03/limits.hpp at line 5, boost/fusion/container/map/detail/cpp03/map.hpp at line 48, boost/fusion/container/map/detail/cpp03/map.hpp at line 5, boost/fusion/container/map/detail/cpp03/map_fwd.hpp at line 25, boost/fusion/container/map/detail/cpp03/map_fwd.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/as_map.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/map.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/map10_fwd.hpp at line 5, boost/fusion/container/map/detail/cpp03/preprocessed/map_fwd.hpp at line 5, boost/fusion/container/map/detail/cpp03/value_of_data_impl.hpp at line 5, boost/fusion/container/map/detail/cpp03/value_of_impl.hpp at line 5, boost/fusion/container/map/detail/end_impl.hpp at line 5, boost/fusion/container/map/detail/map_impl.hpp at line 5, boost/fusion/container/map/detail/map_index.hpp at line 5, boost/fusion/container/map/detail/value_at_impl.hpp at line 5, boost/fusion/container/map/detail/value_at_key_impl.hpp at line 5, boost/fusion/container/map/map.hpp at line 5, boost/fusion/container/map/map_fwd.hpp at line 5, boost/fusion/container/map/map_iterator.hpp at line 6, boost/fusion/container/set.hpp at line 5, boost/fusion/container/set/convert.hpp at line 5, boost/fusion/container/set/detail/as_set.hpp at line 5, boost/fusion/container/set/detail/begin_impl.hpp at line 6, boost/fusion/container/set/detail/convert_impl.hpp at line 6, boost/fusion/container/set/detail/cpp03/as_set.hpp at line 5, boost/fusion/container/set/detail/cpp03/as_set.hpp at line 68, boost/fusion/container/set/detail/cpp03/limits.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/as_set.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/set.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/set10_fwd.hpp at line 5, boost/fusion/container/set/detail/cpp03/preprocessed/set_fwd.hpp at line 5, boost/fusion/container/set/detail/cpp03/set.hpp at line 41, boost/fusion/container/set/detail/cpp03/set.hpp at line 5, boost/fusion/container/set/detail/cpp03/set_fwd.hpp at line 25, boost/fusion/container/set/detail/cpp03/set_fwd.hpp at line 5, boost/fusion/container/set/detail/deref_data_impl.hpp at line 5, boost/fusion/container/set/detail/deref_impl.hpp at line 5, boost/fusion/container/set/detail/end_impl.hpp at line 6, boost/fusion/container/set/detail/key_of_impl.hpp at line 5, boost/fusion/container/set/detail/value_of_data_impl.hpp at line 5, boost/fusion/container/set/detail/value_of_impl.hpp at line 5, boost/fusion/container/set/set.hpp at line 5, boost/fusion/container/set/set_fwd.hpp at line 5, boost/fusion/container/vector.hpp at line 5, boost/fusion/container/vector/convert.hpp at line 5, boost/fusion/container/vector/detail/as_vector.hpp at line 5, boost/fusion/container/vector/detail/at_impl.hpp at line 5, boost/fusion/container/vector/detail/config.hpp at line 5, boost/fusion/container/vector/detail/convert_impl.hpp at line 6, boost/fusion/container/vector/detail/cpp03/as_vector.hpp at line 5, boost/fusion/container/vector/detail/cpp03/as_vector.hpp at line 68, boost/fusion/container/vector/detail/cpp03/limits.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vector.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vector10_fwd.hpp at line 6, boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser10.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vector_fwd.hpp at line 5, boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10_fwd.hpp at line 5, boost/fusion/container/vector/detail/cpp03/value_at_impl.hpp at line 5, boost/fusion/container/vector/detail/cpp03/vector.hpp at line 6, boost/fusion/container/vector/detail/cpp03/vector.hpp at line 73, boost/fusion/container/vector/detail/cpp03/vector10.hpp at line 5, boost/fusion/container/vector/detail/cpp03/vector10.hpp at line 76, boost/fusion/container/vector/detail/cpp03/vector10_fwd.hpp at line 35, boost/fusion/container/vector/detail/cpp03/vector10_fwd.hpp at line 7, boost/fusion/container/vector/detail/cpp03/vector20.hpp at line 51, boost/fusion/container/vector/detail/cpp03/vector20.hpp at line 6, boost/fusion/container/vector/detail/cpp03/vector20_fwd.hpp at line 29, boost/fusion/container/vector/detail/cpp03/vector20_fwd.hpp at line 7, boost/fusion/container/vector/detail/cpp03/vector30.hpp at line 5, boost/fusion/container/vector/detail/cpp03/vector30.hpp at line 50, boost/fusion/container/vector/detail/cpp03/vector30_fwd.hpp at line 29, boost/fusion/container/vector/detail/cpp03/vector30_fwd.hpp at line 7, boost/fusion/container/vector/detail/cpp03/vector40.hpp at line 51, boost/fusion/container/vector/detail/cpp03/vector40.hpp at line 6, boost/fusion/container/vector/detail/cpp03/vector40_fwd.hpp at line 29, boost/fusion/container/vector/detail/cpp03/vector40_fwd.hpp at line 7, boost/fusion/container/vector/detail/cpp03/vector50.hpp at line 5, boost/fusion/container/vector/detail/cpp03/vector50.hpp at line 50, boost/fusion/container/vector/detail/cpp03/vector50_fwd.hpp at line 29, boost/fusion/container/vector/detail/cpp03/vector50_fwd.hpp at line 7, boost/fusion/container/vector/detail/cpp03/vector_forward_ctor.hpp at line 5, boost/fusion/container/vector/detail/cpp03/vector_fwd.hpp at line 40, boost/fusion/container/vector/detail/cpp03/vector_fwd.hpp at line 6, boost/fusion/container/vector/detail/cpp03/vector_n.hpp at line 5, boost/fusion/container/vector/detail/cpp03/vector_n_chooser.hpp at line 5, boost/fusion/container/vector/detail/cpp03/vector_n_chooser.hpp at line 51, boost/fusion/container/vector/detail/value_at_impl.hpp at line 5, boost/fusion/container/vector/vector.hpp at line 5, boost/fusion/container/vector/vector10.hpp at line 5, boost/fusion/container/vector/vector20.hpp at line 5, boost/fusion/container/vector/vector30.hpp at line 5, boost/fusion/container/vector/vector40.hpp at line 5, boost/fusion/container/vector/vector50.hpp at line 5, boost/fusion/container/vector/vector_fwd.hpp at line 5, boost/fusion/include/accumulate.hpp at line 5, boost/fusion/include/adapt_adt.hpp at line 5, boost/fusion/include/adapt_adt_named.hpp at line 5, boost/fusion/include/adapt_assoc_adt.hpp at line 5, boost/fusion/include/adapt_assoc_adt_named.hpp at line 5, boost/fusion/include/adapt_assoc_struct.hpp at line 5, boost/fusion/include/adapt_assoc_struct_named.hpp at line 5, boost/fusion/include/adapt_struct.hpp at line 5, boost/fusion/include/adapt_struct_named.hpp at line 5, boost/fusion/include/adapted.hpp at line 5, boost/fusion/include/adapter.hpp at line 5, boost/fusion/include/advance.hpp at line 5, boost/fusion/include/algorithm.hpp at line 5, boost/fusion/include/all.hpp at line 5, boost/fusion/include/any.hpp at line 5, boost/fusion/include/array.hpp at line 5, boost/fusion/include/as_deque.hpp at line 5, boost/fusion/include/as_list.hpp at line 5, boost/fusion/include/as_map.hpp at line 5, boost/fusion/include/as_set.hpp at line 5, boost/fusion/include/at_c.hpp at line 5, boost/fusion/include/at_key.hpp at line 5, boost/fusion/include/auxiliary.hpp at line 5, boost/fusion/include/back.hpp at line 5, boost/fusion/include/begin.hpp at line 5, boost/fusion/include/boost_array.hpp at line 5, boost/fusion/include/boost_tuple.hpp at line 5, boost/fusion/include/category_of.hpp at line 5, boost/fusion/include/clear.hpp at line 5, boost/fusion/include/comparison.hpp at line 5, boost/fusion/include/cons.hpp at line 5, boost/fusion/include/cons_tie.hpp at line 5, boost/fusion/include/container.hpp at line 5, boost/fusion/include/convert.hpp at line 5, boost/fusion/include/copy.hpp at line 5, boost/fusion/include/count.hpp at line 5, boost/fusion/include/count_if.hpp at line 5, boost/fusion/include/deduce.hpp at line 5, boost/fusion/include/deduce_sequence.hpp at line 5, boost/fusion/include/define_assoc_struct.hpp at line 5, boost/fusion/include/define_struct.hpp at line 5, boost/fusion/include/define_struct_inline.hpp at line 5, boost/fusion/include/deque.hpp at line 5, boost/fusion/include/deque_fwd.hpp at line 5, boost/fusion/include/deque_tie.hpp at line 5, boost/fusion/include/deref.hpp at line 5, boost/fusion/include/deref_data.hpp at line 5, boost/fusion/include/distance.hpp at line 5, boost/fusion/include/empty.hpp at line 5, boost/fusion/include/end.hpp at line 5, boost/fusion/include/equal_to.hpp at line 5, boost/fusion/include/erase.hpp at line 5, boost/fusion/include/erase_key.hpp at line 5, boost/fusion/include/filter.hpp at line 5, boost/fusion/include/filter_if.hpp at line 5, boost/fusion/include/filter_view.hpp at line 5, boost/fusion/include/find.hpp at line 5, boost/fusion/include/find_if.hpp at line 5, boost/fusion/include/flatten.hpp at line 5, boost/fusion/include/flatten_view.hpp at line 5, boost/fusion/include/fold.hpp at line 5, boost/fusion/include/for_each.hpp at line 5, boost/fusion/include/front.hpp at line 5, boost/fusion/include/functional.hpp at line 5, boost/fusion/include/fused.hpp at line 5, boost/fusion/include/fused_function_object.hpp at line 5, boost/fusion/include/fused_procedure.hpp at line 5, boost/fusion/include/generation.hpp at line 5, boost/fusion/include/greater.hpp at line 5, boost/fusion/include/greater_equal.hpp at line 5, boost/fusion/include/has_key.hpp at line 5, boost/fusion/include/hash.hpp at line 5, boost/fusion/include/ignore.hpp at line 5, boost/fusion/include/in.hpp at line 5, boost/fusion/include/insert.hpp at line 5, boost/fusion/include/insert_range.hpp at line 5, boost/fusion/include/intrinsic.hpp at line 5, boost/fusion/include/invocation.hpp at line 5, boost/fusion/include/invoke.hpp at line 5, boost/fusion/include/invoke_function_object.hpp at line 5, boost/fusion/include/invoke_procedure.hpp at line 5, boost/fusion/include/is_iterator.hpp at line 5, boost/fusion/include/is_segmented.hpp at line 5, boost/fusion/include/is_view.hpp at line 5, boost/fusion/include/iter_fold.hpp at line 5, boost/fusion/include/iteration.hpp at line 5, boost/fusion/include/iterator.hpp at line 5, boost/fusion/include/iterator_adapter.hpp at line 5, boost/fusion/include/iterator_base.hpp at line 5, boost/fusion/include/iterator_facade.hpp at line 5, boost/fusion/include/iterator_range.hpp at line 5, boost/fusion/include/key_of.hpp at line 5, boost/fusion/include/less.hpp at line 5, boost/fusion/include/less_equal.hpp at line 5, boost/fusion/include/list.hpp at line 5, boost/fusion/include/list_fwd.hpp at line 5, boost/fusion/include/list_tie.hpp at line 5, boost/fusion/include/make_cons.hpp at line 5, boost/fusion/include/make_deque.hpp at line 5, boost/fusion/include/make_fused.hpp at line 5, boost/fusion/include/make_fused_function_object.hpp at line 5, boost/fusion/include/make_fused_procedure.hpp at line 5, boost/fusion/include/make_list.hpp at line 5, boost/fusion/include/make_map.hpp at line 5, boost/fusion/include/make_set.hpp at line 5, boost/fusion/include/make_tuple.hpp at line 5, boost/fusion/include/make_unfused.hpp at line 5, boost/fusion/include/make_vector.hpp at line 5, boost/fusion/include/map.hpp at line 5, boost/fusion/include/map_fwd.hpp at line 5, boost/fusion/include/map_tie.hpp at line 5, boost/fusion/include/move.hpp at line 5, boost/fusion/include/mpl.hpp at line 5, boost/fusion/include/next.hpp at line 5, boost/fusion/include/nil.hpp at line 5, boost/fusion/include/none.hpp at line 5, boost/fusion/include/not_equal_to.hpp at line 5, boost/fusion/include/nview.hpp at line 5, boost/fusion/include/out.hpp at line 5, boost/fusion/include/pair.hpp at line 5, boost/fusion/include/pair_tie.hpp at line 5, boost/fusion/include/pop_back.hpp at line 5, boost/fusion/include/pop_front.hpp at line 5, boost/fusion/include/prior.hpp at line 5, boost/fusion/include/proxy_type.hpp at line 5, boost/fusion/include/push_back.hpp at line 5, boost/fusion/include/query.hpp at line 5, boost/fusion/include/remove.hpp at line 5, boost/fusion/include/remove_if.hpp at line 5, boost/fusion/include/repetitive_view.hpp at line 5, boost/fusion/include/replace.hpp at line 5, boost/fusion/include/replace_if.hpp at line 5, boost/fusion/include/reverse.hpp at line 5, boost/fusion/include/reverse_fold.hpp at line 5, boost/fusion/include/reverse_iter_fold.hpp at line 5, boost/fusion/include/reverse_view.hpp at line 5, boost/fusion/include/segmented_fold_until.hpp at line 5, boost/fusion/include/segmented_iterator.hpp at line 5, boost/fusion/include/segments.hpp at line 5, boost/fusion/include/sequence.hpp at line 5, boost/fusion/include/sequence_base.hpp at line 5, boost/fusion/include/sequence_facade.hpp at line 5, boost/fusion/include/set.hpp at line 5, boost/fusion/include/set_fwd.hpp at line 5, boost/fusion/include/size.hpp at line 5, boost/fusion/include/std_array.hpp at line 5, boost/fusion/include/std_pair.hpp at line 5, boost/fusion/include/std_tuple.hpp at line 4, boost/fusion/include/struct.hpp at line 5, boost/fusion/include/support.hpp at line 5, boost/fusion/include/swap.hpp at line 5, boost/fusion/include/tag_of.hpp at line 5, boost/fusion/include/tag_of_fwd.hpp at line 5, boost/fusion/include/transformation.hpp at line 5, boost/fusion/include/tuple.hpp at line 5, boost/fusion/include/tuple_fwd.hpp at line 5, boost/fusion/include/tuple_tie.hpp at line 5, boost/fusion/include/unfused.hpp at line 5, boost/fusion/include/unfused_typed.hpp at line 5, boost/fusion/include/unused.hpp at line 5, boost/fusion/include/value_at_key.hpp at line 5, boost/fusion/include/value_of.hpp at line 5, boost/fusion/include/value_of_data.hpp at line 5, boost/fusion/include/vector.hpp at line 5, boost/fusion/include/vector10.hpp at line 5, boost/fusion/include/vector20.hpp at line 5, boost/fusion/include/vector30.hpp at line 5, boost/fusion/include/vector40.hpp at line 5, boost/fusion/include/vector50.hpp at line 5, boost/fusion/include/vector_fwd.hpp at line 5, boost/fusion/include/vector_tie.hpp at line 5, boost/fusion/include/view.hpp at line 5, boost/fusion/include/void.hpp at line 5, boost/fusion/include/zip.hpp at line 5, boost/fusion/include/zip_view.hpp at line 5, boost/fusion/iterator.hpp at line 5, boost/fusion/iterator/advance.hpp at line 5, boost/fusion/iterator/basic_iterator.hpp at line 5, boost/fusion/iterator/deref_data.hpp at line 5, boost/fusion/iterator/detail/segment_sequence.hpp at line 5, boost/fusion/iterator/detail/segmented_equal_to.hpp at line 5, boost/fusion/iterator/detail/segmented_iterator.hpp at line 5, boost/fusion/iterator/detail/segmented_next_impl.hpp at line 5, boost/fusion/iterator/equal_to.hpp at line 5, boost/fusion/iterator/iterator_adapter.hpp at line 5, boost/fusion/iterator/iterator_facade.hpp at line 5, boost/fusion/iterator/key_of.hpp at line 5, boost/fusion/iterator/mpl/convert_iterator.hpp at line 5, boost/fusion/iterator/segmented_iterator.hpp at line 5, boost/fusion/iterator/value_of_data.hpp at line 5, boost/fusion/mpl.hpp at line 5, boost/fusion/mpl/erase.hpp at line 5, boost/fusion/mpl/erase_key.hpp at line 5, boost/fusion/mpl/insert.hpp at line 5, boost/fusion/mpl/insert_range.hpp at line 5, boost/fusion/mpl/pop_back.hpp at line 5, boost/fusion/mpl/pop_front.hpp at line 5, boost/fusion/mpl/push_back.hpp at line 5, boost/fusion/mpl/push_front.hpp at line 5, boost/fusion/sequence.hpp at line 5, boost/fusion/sequence/comparison/enable_comparison.hpp at line 5, boost/fusion/sequence/comparison/equal_to.hpp at line 6, boost/fusion/sequence/comparison/greater.hpp at line 6, boost/fusion/sequence/comparison/greater_equal.hpp at line 6, boost/fusion/sequence/comparison/less.hpp at line 6, boost/fusion/sequence/comparison/less_equal.hpp at line 6, boost/fusion/sequence/comparison/not_equal_to.hpp at line 6, boost/fusion/sequence/convert.hpp at line 5, boost/fusion/sequence/hash.hpp at line 5, boost/fusion/sequence/intrinsic.hpp at line 5, boost/fusion/sequence/intrinsic/at.hpp at line 5, boost/fusion/sequence/intrinsic/at_c.hpp at line 5, boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp at line 5, boost/fusion/sequence/intrinsic/detail/segmented_begin_impl.hpp at line 5, boost/fusion/sequence/intrinsic/detail/segmented_end.hpp at line 5, boost/fusion/sequence/intrinsic/detail/segmented_end_impl.hpp at line 5, boost/fusion/sequence/intrinsic_fwd.hpp at line 5, boost/fusion/sequence/io/in.hpp at line 7, boost/fusion/sequence/sequence_facade.hpp at line 5, boost/fusion/support.hpp at line 5, boost/fusion/support/as_const.hpp at line 5, boost/fusion/support/config.hpp at line 6, boost/fusion/support/detail/access.hpp at line 5, boost/fusion/support/detail/and.hpp at line 5, boost/fusion/support/detail/enabler.hpp at line 5, boost/fusion/support/detail/index_sequence.hpp at line 6, boost/fusion/support/detail/is_same_size.hpp at line 5, boost/fusion/support/detail/pp_round.hpp at line 5, boost/fusion/support/detail/segmented_fold_until_impl.hpp at line 5, boost/fusion/support/is_sequence.hpp at line 5, boost/fusion/support/iterator_base.hpp at line 5, boost/fusion/support/pair.hpp at line 6, boost/fusion/support/segmented_fold_until.hpp at line 5, boost/fusion/support/sequence_base.hpp at line 6, boost/fusion/support/tag_of.hpp at line 5, boost/fusion/support/tag_of_fwd.hpp at line 6, boost/fusion/support/unused.hpp at line 5, boost/fusion/support/void.hpp at line 5, boost/fusion/tuple/detail/make_tuple.hpp at line 37, boost/fusion/tuple/detail/make_tuple.hpp at line 5, boost/fusion/tuple/detail/preprocessed/make_tuple.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple10_fwd.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple_fwd.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple_tie.hpp at line 5, boost/fusion/tuple/detail/preprocessed/tuple_tie10.hpp at line 5, boost/fusion/tuple/detail/tuple.hpp at line 33, boost/fusion/tuple/detail/tuple.hpp at line 5, boost/fusion/tuple/detail/tuple_expand.hpp at line 5, boost/fusion/tuple/detail/tuple_fwd.hpp at line 25, boost/fusion/tuple/detail/tuple_fwd.hpp at line 5, boost/fusion/tuple/detail/tuple_tie.hpp at line 28, boost/fusion/tuple/detail/tuple_tie.hpp at line 5, boost/fusion/tuple/make_tuple.hpp at line 5, boost/fusion/tuple/tuple.hpp at line 5, boost/fusion/tuple/tuple_fwd.hpp at line 5, boost/fusion/tuple/tuple_tie.hpp at line 5, boost/fusion/view/detail/strictest_traversal.hpp at line 6, boost/fusion/view/filter_view/detail/deref_data_impl.hpp at line 5, boost/fusion/view/filter_view/detail/key_of_impl.hpp at line 5, boost/fusion/view/filter_view/detail/value_of_data_impl.hpp at line 5, boost/fusion/view/filter_view/filter_view_iterator.hpp at line 5, boost/fusion/view/flatten_view.hpp at line 5, boost/fusion/view/flatten_view/flatten_view.hpp at line 5, boost/fusion/view/flatten_view/flatten_view_iterator.hpp at line 5, boost/fusion/view/iterator_range/detail/at_impl.hpp at line 5, boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp at line 5, boost/fusion/view/iterator_range/detail/size_impl.hpp at line 5, boost/fusion/view/iterator_range/detail/value_at_impl.hpp at line 5, boost/fusion/view/iterator_range/iterator_range.hpp at line 5, boost/fusion/view/joint_view/detail/deref_data_impl.hpp at line 5, boost/fusion/view/joint_view/detail/key_of_impl.hpp at line 5, boost/fusion/view/joint_view/detail/value_of_data_impl.hpp at line 5, boost/fusion/view/joint_view/joint_view.hpp at line 5, boost/fusion/view/joint_view/joint_view_fwd.hpp at line 5, boost/fusion/view/joint_view/joint_view_iterator.hpp at line 5, boost/fusion/view/nview/detail/advance_impl.hpp at line 5, boost/fusion/view/nview/detail/begin_impl.hpp at line 5, boost/fusion/view/nview/detail/cpp03/nview_impl.hpp at line 5, boost/fusion/view/nview/detail/deref_impl.hpp at line 5, boost/fusion/view/nview/detail/distance_impl.hpp at line 5, boost/fusion/view/nview/detail/end_impl.hpp at line 5, boost/fusion/view/nview/detail/equal_to_impl.hpp at line 5, boost/fusion/view/nview/detail/next_impl.hpp at line 5, boost/fusion/view/nview/detail/nview_impl.hpp at line 5, boost/fusion/view/nview/detail/prior_impl.hpp at line 5, boost/fusion/view/nview/detail/value_of_impl.hpp at line 5, boost/fusion/view/repetitive_view.hpp at line 5, boost/fusion/view/repetitive_view/detail/begin_impl.hpp at line 5, boost/fusion/view/repetitive_view/detail/deref_impl.hpp at line 5, boost/fusion/view/repetitive_view/detail/end_impl.hpp at line 5, boost/fusion/view/repetitive_view/detail/next_impl.hpp at line 5, boost/fusion/view/repetitive_view/detail/value_of_impl.hpp at line 5, boost/fusion/view/repetitive_view/repetitive_view.hpp at line 5, boost/fusion/view/repetitive_view/repetitive_view_fwd.hpp at line 5, boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp at line 5, boost/fusion/view/reverse_view/detail/at_impl.hpp at line 5, boost/fusion/view/reverse_view/detail/deref_data_impl.hpp at line 5, boost/fusion/view/reverse_view/detail/key_of_impl.hpp at line 5, boost/fusion/view/reverse_view/detail/value_at_impl.hpp at line 5, boost/fusion/view/reverse_view/detail/value_of_data_impl.hpp at line 5, boost/fusion/view/reverse_view/reverse_view_iterator.hpp at line 5, boost/fusion/view/single_view/detail/distance_impl.hpp at line 5, boost/fusion/view/single_view/detail/equal_to_impl.hpp at line 5, boost/fusion/view/single_view/detail/next_impl.hpp at line 6, boost/fusion/view/single_view/detail/prior_impl.hpp at line 5, boost/fusion/view/transform_view/detail/value_at_impl.hpp at line 6, boost/fusion/view/transform_view/transform_view_iterator.hpp at line 5, boost/fusion/view/zip_view/detail/value_of_impl.hpp at line 6, boost/hof.hpp at line 5, boost/hof/alias.hpp at line 5, boost/hof/always.hpp at line 5, boost/hof/apply.hpp at line 5, boost/hof/apply_eval.hpp at line 5, boost/hof/arg.hpp at line 5, boost/hof/capture.hpp at line 5, boost/hof/combine.hpp at line 5, boost/hof/compose.hpp at line 5, boost/hof/config.hpp at line 5, boost/hof/construct.hpp at line 5, boost/hof/decay.hpp at line 5, boost/hof/decorate.hpp at line 5, boost/hof/detail/and.hpp at line 5, boost/hof/detail/callable_base.hpp at line 5, boost/hof/detail/can_be_called.hpp at line 5, boost/hof/detail/compressed_pair.hpp at line 5, boost/hof/detail/constexpr_deduce.hpp at line 5, boost/hof/detail/delegate.hpp at line 5, boost/hof/detail/forward.hpp at line 5, boost/hof/detail/holder.hpp at line 5, boost/hof/detail/intrinsics.hpp at line 5, boost/hof/detail/join.hpp at line 5, boost/hof/detail/make.hpp at line 5, boost/hof/detail/move.hpp at line 5, boost/hof/detail/noexcept.hpp at line 5, boost/hof/detail/pp.hpp at line 5, boost/hof/detail/recursive_constexpr_depth.hpp at line 5, boost/hof/detail/remove_rvalue_reference.hpp at line 5, boost/hof/detail/result_of.hpp at line 5, boost/hof/detail/result_type.hpp at line 5, boost/hof/detail/seq.hpp at line 5, boost/hof/detail/static_const_var.hpp at line 5, boost/hof/detail/unpack_tuple.hpp at line 5, boost/hof/detail/unwrap.hpp at line 5, boost/hof/detail/using.hpp at line 5, boost/hof/eval.hpp at line 5, boost/hof/first_of.hpp at line 5, boost/hof/fix.hpp at line 5, boost/hof/flip.hpp at line 5, boost/hof/flow.hpp at line 5, boost/hof/fold.hpp at line 5, boost/hof/function.hpp at line 5, boost/hof/function_param_limit.hpp at line 5, boost/hof/identity.hpp at line 5, boost/hof/if.hpp at line 5, boost/hof/implicit.hpp at line 5, boost/hof/indirect.hpp at line 5, boost/hof/infix.hpp at line 5, boost/hof/is_invocable.hpp at line 5, boost/hof/is_unpackable.hpp at line 5, boost/hof/lambda.hpp at line 5, boost/hof/lazy.hpp at line 5, boost/hof/lift.hpp at line 5, boost/hof/limit.hpp at line 5, boost/hof/match.hpp at line 5, boost/hof/mutable.hpp at line 5, boost/hof/pack.hpp at line 5, boost/hof/partial.hpp at line 5, boost/hof/pipable.hpp at line 5, boost/hof/placeholders.hpp at line 5, boost/hof/proj.hpp at line 5, boost/hof/protect.hpp at line 5, boost/hof/repeat.hpp at line 5, boost/hof/repeat_while.hpp at line 5, boost/hof/result.hpp at line 5, boost/hof/returns.hpp at line 5, boost/hof/reveal.hpp at line 5, boost/hof/reverse_fold.hpp at line 5, boost/hof/rotate.hpp at line 5, boost/hof/static.hpp at line 5, boost/hof/tap.hpp at line 5, boost/hof/unpack.hpp at line 5, boost/hof/unpack_sequence.hpp at line 5, boost/hof/version.hpp at line 5, boost/phoenix.hpp at line 6, boost/phoenix/bind.hpp at line 5, boost/phoenix/bind/bind_function.hpp at line 5, boost/phoenix/bind/bind_function_object.hpp at line 5, boost/phoenix/bind/bind_member_function.hpp at line 5, boost/phoenix/bind/bind_member_variable.hpp at line 6, boost/phoenix/bind/detail/cpp03/bind_member_function.hpp at line 6, boost/phoenix/bind/detail/member_variable.hpp at line 5, boost/phoenix/config.hpp at line 8, boost/phoenix/core/actor.hpp at line 8, boost/phoenix/core/argument.hpp at line 121, boost/phoenix/core/argument.hpp at line 7, boost/phoenix/core/argument.hpp at line 90, boost/phoenix/core/arity.hpp at line 6, boost/phoenix/core/call.hpp at line 6, boost/phoenix/core/debug.hpp at line 7, boost/phoenix/core/detail/argument.hpp at line 7, boost/phoenix/core/detail/cpp03/actor_operator.hpp at line 28, boost/phoenix/core/detail/cpp03/actor_result_of.hpp at line 29, boost/phoenix/core/detail/cpp03/call.hpp at line 25, boost/phoenix/core/detail/cpp03/expression.hpp at line 23, boost/phoenix/core/detail/cpp03/function_equal.hpp at line 26, boost/phoenix/core/detail/cpp03/function_equal.hpp at line 6, boost/phoenix/core/detail/cpp03/function_eval.hpp at line 16, boost/phoenix/core/detail/cpp03/function_eval_expr.hpp at line 21, boost/phoenix/core/detail/cpp03/function_eval_expr.hpp at line 5, boost/phoenix/core/detail/cpp03/phx2_result.hpp at line 27, boost/phoenix/core/detail/cpp03/phx2_result.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/actor_operator.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_10.hpp at line 6, boost/phoenix/core/detail/cpp03/preprocessed/call.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/expression.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_10.hpp at line 5, boost/phoenix/core/detail/function_eval.hpp at line 6, boost/phoenix/core/detail/index_sequence.hpp at line 5, boost/phoenix/core/detail/phx2_result.hpp at line 5, boost/phoenix/core/environment.hpp at line 6, boost/phoenix/core/function_equal.hpp at line 6, boost/phoenix/core/is_actor.hpp at line 5, boost/phoenix/core/is_value.hpp at line 6, boost/phoenix/core/nothing.hpp at line 5, boost/phoenix/core/reference.hpp at line 6, boost/phoenix/core/terminal.hpp at line 6, boost/phoenix/core/terminal_fwd.hpp at line 6, boost/phoenix/core/value.hpp at line 6, boost/phoenix/core/visit_each.hpp at line 6, boost/phoenix/function.hpp at line 5, boost/phoenix/function/adapt_callable.hpp at line 6, boost/phoenix/function/adapt_function.hpp at line 7, boost/phoenix/function/detail/cpp03/function_operator.hpp at line 25, boost/phoenix/function/detail/cpp03/preprocessed/function_operator.hpp at line 5, boost/phoenix/function/detail/cpp03/preprocessed/function_operator_10.hpp at line 6, boost/phoenix/function/function.hpp at line 7, boost/phoenix/function/lazy_list.hpp at line 38, boost/phoenix/function/lazy_operator.hpp at line 32, boost/phoenix/function/lazy_prelude.hpp at line 120, boost/phoenix/function/lazy_reuse.hpp at line 29, boost/phoenix/function/lazy_signature.hpp at line 39, boost/phoenix/function/lazy_smart.hpp at line 16, boost/phoenix/fusion.hpp at line 6, boost/phoenix/fusion/at.hpp at line 7, boost/phoenix/object.hpp at line 6, boost/phoenix/object/const_cast.hpp at line 6, boost/phoenix/object/construct.hpp at line 6, boost/phoenix/object/delete.hpp at line 6, boost/phoenix/object/detail/cpp03/construct.hpp at line 25, boost/phoenix/object/detail/cpp03/construct_eval.hpp at line 27, boost/phoenix/object/detail/cpp03/construct_expr.hpp at line 15, boost/phoenix/object/detail/cpp03/new.hpp at line 25, boost/phoenix/object/detail/cpp03/new_eval.hpp at line 27, boost/phoenix/object/detail/cpp03/new_expr.hpp at line 15, boost/phoenix/object/detail/cpp03/preprocessed/construct.hpp at line 5, boost/phoenix/object/detail/cpp03/preprocessed/construct_10.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/construct_eval.hpp at line 5, boost/phoenix/object/detail/cpp03/preprocessed/construct_expr.hpp at line 5, boost/phoenix/object/detail/cpp03/preprocessed/new.hpp at line 5, boost/phoenix/object/detail/cpp03/preprocessed/new_10.hpp at line 6, boost/phoenix/object/detail/cpp03/preprocessed/new_eval.hpp at line 5, boost/phoenix/object/detail/cpp03/preprocessed/new_expr.hpp at line 5, boost/phoenix/object/detail/target.hpp at line 6, boost/phoenix/object/dynamic_cast.hpp at line 6, boost/phoenix/object/new.hpp at line 6, boost/phoenix/object/reinterpret_cast.hpp at line 6, boost/phoenix/object/static_cast.hpp at line 6, boost/phoenix/operator.hpp at line 6, boost/phoenix/operator/arithmetic.hpp at line 6, boost/phoenix/operator/bitwise.hpp at line 6, boost/phoenix/operator/comparison.hpp at line 6, boost/phoenix/operator/detail/cpp03/mem_fun_ptr_eval.hpp at line 20, boost/phoenix/operator/detail/cpp03/mem_fun_ptr_eval_result_of.hpp at line 20, boost/phoenix/operator/detail/cpp03/mem_fun_ptr_expr.hpp at line 14, boost/phoenix/operator/detail/cpp03/mem_fun_ptr_gen.hpp at line 19, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval.hpp at line 5, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_10.hpp at line 7, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of.hpp at line 5, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr.hpp at line 5, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen.hpp at line 5, boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_10.hpp at line 6, boost/phoenix/operator/detail/define_operator.hpp at line 6, boost/phoenix/operator/detail/undef_operator.hpp at line 5, boost/phoenix/operator/if_else.hpp at line 6, boost/phoenix/operator/io.hpp at line 6, boost/phoenix/operator/logical.hpp at line 6, boost/phoenix/operator/member.hpp at line 7, boost/phoenix/operator/self.hpp at line 6, boost/phoenix/phoenix.hpp at line 6, boost/phoenix/scope.hpp at line 6, boost/phoenix/scope/detail/cpp03/dynamic.hpp at line 29, boost/phoenix/scope/detail/cpp03/lambda.hpp at line 20, boost/phoenix/scope/detail/cpp03/local_gen.hpp at line 7, boost/phoenix/scope/detail/cpp03/preprocessed/dynamic.hpp at line 5, boost/phoenix/scope/detail/local_gen.hpp at line 5, boost/phoenix/scope/detail/local_variable.hpp at line 7, boost/phoenix/scope/dynamic.hpp at line 7, boost/phoenix/scope/lambda.hpp at line 8, boost/phoenix/scope/let.hpp at line 8, boost/phoenix/scope/local_variable.hpp at line 6, boost/phoenix/scope/scoped_environment.hpp at line 6, boost/phoenix/statement.hpp at line 5, boost/phoenix/statement/detail/catch_push_back.hpp at line 24, boost/phoenix/statement/detail/preprocessed/catch_push_back.hpp at line 5, boost/phoenix/statement/detail/preprocessed/switch.hpp at line 5, boost/phoenix/statement/detail/preprocessed/try_catch_eval.hpp at line 5, boost/phoenix/statement/detail/preprocessed/try_catch_expression.hpp at line 5, boost/phoenix/statement/detail/preprocessed/try_catch_expression_10.hpp at line 6, boost/phoenix/statement/detail/preprocessed/try_catch_expression_20.hpp at line 6, boost/phoenix/statement/detail/switch.hpp at line 29, boost/phoenix/statement/detail/try_catch_eval.hpp at line 29, boost/phoenix/statement/detail/try_catch_expression.hpp at line 29, boost/phoenix/statement/do_while.hpp at line 6, boost/phoenix/statement/for.hpp at line 6, boost/phoenix/statement/if.hpp at line 6, boost/phoenix/statement/sequence.hpp at line 7, boost/phoenix/statement/switch.hpp at line 6, boost/phoenix/statement/throw.hpp at line 7, boost/phoenix/statement/try_catch.hpp at line 7, boost/phoenix/statement/while.hpp at line 6, boost/phoenix/stl/cmath.hpp at line 5, boost/phoenix/stl/container/container.hpp at line 6, boost/phoenix/support/detail/iterate.hpp at line 5, boost/phoenix/support/detail/iterate_define.hpp at line 5, boost/phoenix/support/detail/iterate_undef.hpp at line 5, boost/phoenix/support/iterate.hpp at line 5, boost/phoenix/support/vector.hpp at line 45, boost/phoenix/version.hpp at line 7, boost/spirit/home/karma/detail/pass_container.hpp at line 6, boost/spirit/home/lex/lexer/lexertl/wrap_action.hpp at line 7, boost/spirit/home/qi.hpp at line 5, boost/spirit/home/qi/action/action.hpp at line 5, boost/spirit/home/qi/auto.hpp at line 5, boost/spirit/home/qi/auxiliary.hpp at line 6, boost/spirit/home/qi/auxiliary/attr.hpp at line 6, boost/spirit/home/qi/auxiliary/eoi.hpp at line 6, boost/spirit/home/qi/auxiliary/eol.hpp at line 6, boost/spirit/home/qi/auxiliary/eps.hpp at line 5, boost/spirit/home/qi/auxiliary/lazy.hpp at line 5, boost/spirit/home/qi/binary.hpp at line 5, boost/spirit/home/qi/binary/binary.hpp at line 6, boost/spirit/home/qi/char/char.hpp at line 7, boost/spirit/home/qi/char/char_class.hpp at line 5, boost/spirit/home/qi/char/char_parser.hpp at line 5, boost/spirit/home/qi/copy.hpp at line 5, boost/spirit/home/qi/detail/alternative_function.hpp at line 5, boost/spirit/home/qi/detail/assign_to.hpp at line 7, boost/spirit/home/qi/detail/construct.hpp at line 6, boost/spirit/home/qi/detail/expect_function.hpp at line 5, boost/spirit/home/qi/detail/fail_function.hpp at line 5, boost/spirit/home/qi/detail/parse.hpp at line 5, boost/spirit/home/qi/detail/parse_auto.hpp at line 5, boost/spirit/home/qi/detail/pass_container.hpp at line 6, boost/spirit/home/qi/detail/pass_function.hpp at line 5, boost/spirit/home/qi/detail/permute_function.hpp at line 5, boost/spirit/home/qi/detail/string_parse.hpp at line 5, boost/spirit/home/qi/directive.hpp at line 5, boost/spirit/home/qi/directive/as.hpp at line 7, boost/spirit/home/qi/directive/encoding.hpp at line 5, boost/spirit/home/qi/directive/hold.hpp at line 5, boost/spirit/home/qi/directive/lexeme.hpp at line 5, boost/spirit/home/qi/directive/matches.hpp at line 5, boost/spirit/home/qi/directive/no_case.hpp at line 5, boost/spirit/home/qi/directive/no_skip.hpp at line 6, boost/spirit/home/qi/directive/omit.hpp at line 5, boost/spirit/home/qi/directive/raw.hpp at line 5, boost/spirit/home/qi/directive/repeat.hpp at line 6, boost/spirit/home/qi/directive/skip.hpp at line 5, boost/spirit/home/qi/domain.hpp at line 5, boost/spirit/home/qi/meta_compiler.hpp at line 5, boost/spirit/home/qi/nonterminal.hpp at line 5, boost/spirit/home/qi/nonterminal/debug_handler.hpp at line 5, boost/spirit/home/qi/nonterminal/debug_handler_state.hpp at line 5, boost/spirit/home/qi/nonterminal/detail/fcall.hpp at line 5, boost/spirit/home/qi/nonterminal/detail/parameterized.hpp at line 6, boost/spirit/home/qi/nonterminal/detail/parser_binder.hpp at line 5, boost/spirit/home/qi/nonterminal/error_handler.hpp at line 5, boost/spirit/home/qi/nonterminal/grammar.hpp at line 5, boost/spirit/home/qi/nonterminal/rule.hpp at line 5, boost/spirit/home/qi/nonterminal/simple_trace.hpp at line 6, boost/spirit/home/qi/nonterminal/success_handler.hpp at line 5, boost/spirit/home/qi/numeric.hpp at line 5, boost/spirit/home/qi/numeric/bool.hpp at line 6, boost/spirit/home/qi/numeric/bool_policies.hpp at line 5, boost/spirit/home/qi/numeric/detail/numeric_utils.hpp at line 9, boost/spirit/home/qi/numeric/detail/real_impl.hpp at line 7, boost/spirit/home/qi/numeric/int.hpp at line 6, boost/spirit/home/qi/numeric/numeric_utils.hpp at line 6, boost/spirit/home/qi/numeric/real.hpp at line 6, boost/spirit/home/qi/numeric/real_policies.hpp at line 6, boost/spirit/home/qi/numeric/uint.hpp at line 7, boost/spirit/home/qi/operator.hpp at line 5, boost/spirit/home/qi/operator/alternative.hpp at line 6, boost/spirit/home/qi/operator/and_predicate.hpp at line 5, boost/spirit/home/qi/operator/difference.hpp at line 5, boost/spirit/home/qi/operator/expect.hpp at line 6, boost/spirit/home/qi/operator/kleene.hpp at line 6, boost/spirit/home/qi/operator/list.hpp at line 6, boost/spirit/home/qi/operator/not_predicate.hpp at line 5, boost/spirit/home/qi/operator/optional.hpp at line 6, boost/spirit/home/qi/operator/permutation.hpp at line 5, boost/spirit/home/qi/operator/plus.hpp at line 6, boost/spirit/home/qi/operator/sequence.hpp at line 6, boost/spirit/home/qi/operator/sequence_base.hpp at line 6, boost/spirit/home/qi/operator/sequential_or.hpp at line 5, boost/spirit/home/qi/parse.hpp at line 6, boost/spirit/home/qi/parser.hpp at line 5, boost/spirit/home/qi/reference.hpp at line 5, boost/spirit/home/qi/skip_flag.hpp at line 5, boost/spirit/home/qi/skip_over.hpp at line 5, boost/spirit/home/qi/stream.hpp at line 5, boost/spirit/home/qi/stream/detail/iterator_source.hpp at line 5, boost/spirit/home/qi/stream/detail/match_manip.hpp at line 5, boost/spirit/home/qi/stream/detail/match_manip_auto.hpp at line 5, boost/spirit/home/qi/stream/match_manip.hpp at line 6, boost/spirit/home/qi/stream/match_manip_attr.hpp at line 6, boost/spirit/home/qi/stream/stream.hpp at line 5, boost/spirit/home/qi/string.hpp at line 5, boost/spirit/home/qi/string/detail/tst.hpp at line 5, boost/spirit/home/qi/string/lit.hpp at line 7, boost/spirit/home/qi/string/symbols.hpp at line 5, boost/spirit/home/qi/string/tst.hpp at line 5, boost/spirit/home/qi/string/tst_map.hpp at line 5, boost/spirit/home/qi/what.hpp at line 5, boost/spirit/home/support.hpp at line 5, boost/spirit/home/support/action_dispatch.hpp at line 7, boost/spirit/home/support/algorithm/any.hpp at line 5, boost/spirit/home/support/algorithm/any_if.hpp at line 6, boost/spirit/home/support/algorithm/any_if_ns.hpp at line 6, boost/spirit/home/support/algorithm/any_if_ns_so.hpp at line 6, boost/spirit/home/support/algorithm/any_ns.hpp at line 5, boost/spirit/home/support/algorithm/any_ns_so.hpp at line 5, boost/spirit/home/support/argument.hpp at line 7, boost/spirit/home/support/argument_expression.hpp at line 7, boost/spirit/home/support/attributes.hpp at line 6, boost/spirit/home/support/attributes_fwd.hpp at line 7, boost/spirit/home/support/auto.hpp at line 5, boost/spirit/home/support/char_class.hpp at line 6, boost/spirit/home/support/char_encoding/ascii.hpp at line 6, boost/spirit/home/support/char_encoding/iso8859_1.hpp at line 6, boost/spirit/home/support/char_encoding/standard.hpp at line 6, boost/spirit/home/support/char_encoding/standard_wide.hpp at line 6, boost/spirit/home/support/char_encoding/unicode.hpp at line 6, boost/spirit/home/support/char_encoding/unicode/category_table.hpp at line 5, boost/spirit/home/support/char_encoding/unicode/create_tables.cpp at line 5, boost/spirit/home/support/char_encoding/unicode/lowercase_table.hpp at line 5, boost/spirit/home/support/char_encoding/unicode/query.hpp at line 5, boost/spirit/home/support/char_encoding/unicode/script_table.hpp at line 5, boost/spirit/home/support/char_encoding/unicode/uppercase_table.hpp at line 5, boost/spirit/home/support/char_set/range.hpp at line 5, boost/spirit/home/support/char_set/range_functions.hpp at line 5, boost/spirit/home/support/char_set/range_run.hpp at line 5, boost/spirit/home/support/char_set/range_run_impl.hpp at line 5, boost/spirit/home/support/container.hpp at line 7, boost/spirit/home/support/context.hpp at line 7, boost/spirit/home/support/detail/as_variant.hpp at line 5, boost/spirit/home/support/detail/hold_any.hpp at line 8, boost/spirit/home/support/detail/is_spirit_tag.hpp at line 5, boost/spirit/home/support/detail/make_vector.hpp at line 5, boost/spirit/home/support/detail/pow10.hpp at line 7, boost/spirit/home/support/detail/sign.hpp at line 7, boost/spirit/home/support/detail/what_function.hpp at line 5, boost/spirit/home/support/extended_variant.hpp at line 5, boost/spirit/home/support/handles_container.hpp at line 5, boost/spirit/home/support/has_semantic_action.hpp at line 5, boost/spirit/home/support/info.hpp at line 5, boost/spirit/home/support/iterators/line_pos_iterator.hpp at line 7, boost/spirit/home/support/iterators/multi_pass_fwd.hpp at line 7, boost/spirit/home/support/lazy.hpp at line 5, boost/spirit/home/support/nonterminal/expand_arg.hpp at line 5, boost/spirit/home/support/nonterminal/extract_param.hpp at line 7, boost/spirit/home/support/nonterminal/locals.hpp at line 6, boost/spirit/home/support/sequence_base_id.hpp at line 5, boost/spirit/home/support/string_traits.hpp at line 7, boost/spirit/home/support/terminal.hpp at line 7, boost/spirit/home/support/terminal_expression.hpp at line 7, boost/spirit/home/support/unused.hpp at line 6, boost/spirit/home/support/utf8.hpp at line 5, boost/spirit/home/support/utree.hpp at line 5, boost/spirit/home/support/utree/detail/utree_detail1.hpp at line 7, boost/spirit/home/support/utree/detail/utree_detail2.hpp at line 7, boost/spirit/home/support/utree/operators.hpp at line 7, boost/spirit/home/support/utree/utree.hpp at line 7, boost/spirit/home/support/utree/utree_traits.hpp at line 7, boost/spirit/home/support/utree/utree_traits_fwd.hpp at line 5, boost/spirit/home/x3.hpp at line 5, boost/spirit/home/x3/auxiliary.hpp at line 6, boost/spirit/home/x3/auxiliary/any_parser.hpp at line 6, boost/spirit/home/x3/auxiliary/attr.hpp at line 7, boost/spirit/home/x3/auxiliary/eoi.hpp at line 6, boost/spirit/home/x3/auxiliary/eol.hpp at line 6, boost/spirit/home/x3/auxiliary/eps.hpp at line 5, boost/spirit/home/x3/auxiliary/guard.hpp at line 5, boost/spirit/home/x3/binary.hpp at line 5, boost/spirit/home/x3/binary/binary.hpp at line 6, boost/spirit/home/x3/char.hpp at line 5, boost/spirit/home/x3/char/any_char.hpp at line 5, boost/spirit/home/x3/char/char.hpp at line 5, boost/spirit/home/x3/char/char_class.hpp at line 5, boost/spirit/home/x3/char/char_class_tags.hpp at line 5, boost/spirit/home/x3/char/char_parser.hpp at line 5, boost/spirit/home/x3/char/char_set.hpp at line 5, boost/spirit/home/x3/char/detail/cast_char.hpp at line 6, boost/spirit/home/x3/char/literal_char.hpp at line 5, boost/spirit/home/x3/char/negated_char_parser.hpp at line 5, boost/spirit/home/x3/char/unicode.hpp at line 5, boost/spirit/home/x3/core.hpp at line 5, boost/spirit/home/x3/core/action.hpp at line 5, boost/spirit/home/x3/core/call.hpp at line 5, boost/spirit/home/x3/core/detail/parse_into_container.hpp at line 5, boost/spirit/home/x3/core/parse.hpp at line 5, boost/spirit/home/x3/core/parser.hpp at line 6, boost/spirit/home/x3/core/proxy.hpp at line 5, boost/spirit/home/x3/core/skip_over.hpp at line 5, boost/spirit/home/x3/directive.hpp at line 5, boost/spirit/home/x3/directive/confix.hpp at line 6, boost/spirit/home/x3/directive/expect.hpp at line 5, boost/spirit/home/x3/directive/lexeme.hpp at line 5, boost/spirit/home/x3/directive/matches.hpp at line 6, boost/spirit/home/x3/directive/no_case.hpp at line 5, boost/spirit/home/x3/directive/no_skip.hpp at line 7, boost/spirit/home/x3/directive/omit.hpp at line 5, boost/spirit/home/x3/directive/raw.hpp at line 5, boost/spirit/home/x3/directive/repeat.hpp at line 7, boost/spirit/home/x3/directive/seek.hpp at line 6, boost/spirit/home/x3/directive/skip.hpp at line 6, boost/spirit/home/x3/directive/with.hpp at line 5, boost/spirit/home/x3/nonterminal.hpp at line 5, boost/spirit/home/x3/nonterminal/debug_handler_state.hpp at line 5, boost/spirit/home/x3/nonterminal/detail/rule.hpp at line 5, boost/spirit/home/x3/nonterminal/detail/transform_attribute.hpp at line 6, boost/spirit/home/x3/nonterminal/rule.hpp at line 5, boost/spirit/home/x3/nonterminal/simple_trace.hpp at line 6, boost/spirit/home/x3/numeric.hpp at line 5, boost/spirit/home/x3/numeric/bool.hpp at line 6, boost/spirit/home/x3/numeric/bool_policies.hpp at line 6, boost/spirit/home/x3/numeric/int.hpp at line 5, boost/spirit/home/x3/numeric/real.hpp at line 5, boost/spirit/home/x3/numeric/real_policies.hpp at line 6, boost/spirit/home/x3/numeric/uint.hpp at line 6, boost/spirit/home/x3/operator.hpp at line 5, boost/spirit/home/x3/operator/alternative.hpp at line 5, boost/spirit/home/x3/operator/and_predicate.hpp at line 5, boost/spirit/home/x3/operator/detail/alternative.hpp at line 5, boost/spirit/home/x3/operator/detail/sequence.hpp at line 5, boost/spirit/home/x3/operator/difference.hpp at line 5, boost/spirit/home/x3/operator/kleene.hpp at line 6, boost/spirit/home/x3/operator/list.hpp at line 6, boost/spirit/home/x3/operator/not_predicate.hpp at line 5, boost/spirit/home/x3/operator/optional.hpp at line 6, boost/spirit/home/x3/operator/plus.hpp at line 6, boost/spirit/home/x3/operator/sequence.hpp at line 5, boost/spirit/home/x3/string.hpp at line 5, boost/spirit/home/x3/string/detail/no_case_string_parse.hpp at line 5, boost/spirit/home/x3/string/detail/string_parse.hpp at line 5, boost/spirit/home/x3/string/detail/tst.hpp at line 5, boost/spirit/home/x3/string/literal_string.hpp at line 5, boost/spirit/home/x3/string/symbols.hpp at line 6, boost/spirit/home/x3/string/tst.hpp at line 5, boost/spirit/home/x3/string/tst_map.hpp at line 5, boost/spirit/home/x3/support/ast/position_tagged.hpp at line 5, boost/spirit/home/x3/support/ast/variant.hpp at line 5, boost/spirit/home/x3/support/context.hpp at line 6, boost/spirit/home/x3/support/no_case.hpp at line 5, boost/spirit/home/x3/support/numeric_utils/detail/extract_int.hpp at line 9, boost/spirit/home/x3/support/numeric_utils/extract_int.hpp at line 6, boost/spirit/home/x3/support/numeric_utils/extract_real.hpp at line 7, boost/spirit/home/x3/support/numeric_utils/pow10.hpp at line 7, boost/spirit/home/x3/support/numeric_utils/sign.hpp at line 7, boost/spirit/home/x3/support/subcontext.hpp at line 7, boost/spirit/home/x3/support/traits/attribute_category.hpp at line 6, boost/spirit/home/x3/support/traits/attribute_of.hpp at line 7, boost/spirit/home/x3/support/traits/attribute_type.hpp at line 6, boost/spirit/home/x3/support/traits/container_traits.hpp at line 7, boost/spirit/home/x3/support/traits/handles_container.hpp at line 6, boost/spirit/home/x3/support/traits/has_attribute.hpp at line 7, boost/spirit/home/x3/support/traits/is_parser.hpp at line 6, boost/spirit/home/x3/support/traits/is_range.hpp at line 6, boost/spirit/home/x3/support/traits/is_substitute.hpp at line 6, boost/spirit/home/x3/support/traits/is_variant.hpp at line 6, boost/spirit/home/x3/support/traits/make_attribute.hpp at line 7, boost/spirit/home/x3/support/traits/move_to.hpp at line 7, boost/spirit/home/x3/support/traits/optional_traits.hpp at line 7, boost/spirit/home/x3/support/traits/print_attribute.hpp at line 6, boost/spirit/home/x3/support/traits/print_token.hpp at line 6, boost/spirit/home/x3/support/traits/string_traits.hpp at line 7, boost/spirit/home/x3/support/traits/transform_attribute.hpp at line 7, boost/spirit/home/x3/support/traits/tuple_traits.hpp at line 5, boost/spirit/home/x3/support/traits/value_traits.hpp at line 7, boost/spirit/home/x3/support/traits/variant_find_substitute.hpp at line 6, boost/spirit/home/x3/support/traits/variant_has_substitute.hpp at line 6, boost/spirit/home/x3/support/unused.hpp at line 6, boost/spirit/home/x3/support/utility/annotate_on_success.hpp at line 5, boost/spirit/home/x3/support/utility/error_reporting.hpp at line 5, boost/spirit/home/x3/support/utility/is_callable.hpp at line 5, boost/spirit/home/x3/support/utility/lambda_visitor.hpp at line 5, boost/spirit/home/x3/support/utility/sfinae.hpp at line 6, boost/spirit/home/x3/support/utility/testing.hpp at line 5, boost/spirit/home/x3/support/utility/unrefcv.hpp at line 5, boost/spirit/home/x3/support/utility/utf8.hpp at line 5, boost/spirit/include/karma.hpp at line 7, boost/spirit/include/karma_action.hpp at line 7, boost/spirit/include/karma_alternative.hpp at line 7, boost/spirit/include/karma_and_predicate.hpp at line 7, boost/spirit/include/karma_as.hpp at line 8, boost/spirit/include/karma_attr_cast.hpp at line 7, boost/spirit/include/karma_auto.hpp at line 7, boost/spirit/include/karma_auxiliary.hpp at line 7, boost/spirit/include/karma_binary.hpp at line 7, boost/spirit/include/karma_bool.hpp at line 7, boost/spirit/include/karma_buffer.hpp at line 7, boost/spirit/include/karma_center_alignment.hpp at line 7, boost/spirit/include/karma_char.hpp at line 7, boost/spirit/include/karma_char_.hpp at line 7, boost/spirit/include/karma_char_class.hpp at line 7, boost/spirit/include/karma_columns.hpp at line 7, boost/spirit/include/karma_delimit.hpp at line 7, boost/spirit/include/karma_directive.hpp at line 7, boost/spirit/include/karma_domain.hpp at line 7, boost/spirit/include/karma_duplicate.hpp at line 7, boost/spirit/include/karma_eol.hpp at line 7, boost/spirit/include/karma_eps.hpp at line 7, boost/spirit/include/karma_format.hpp at line 7, boost/spirit/include/karma_format_attr.hpp at line 7, boost/spirit/include/karma_format_auto.hpp at line 7, boost/spirit/include/karma_generate.hpp at line 7, boost/spirit/include/karma_generate_attr.hpp at line 7, boost/spirit/include/karma_generate_auto.hpp at line 7, boost/spirit/include/karma_grammar.hpp at line 7, boost/spirit/include/karma_int.hpp at line 7, boost/spirit/include/karma_kleene.hpp at line 7, boost/spirit/include/karma_lazy.hpp at line 7, boost/spirit/include/karma_left_alignment.hpp at line 7, boost/spirit/include/karma_list.hpp at line 7, boost/spirit/include/karma_maxwidth.hpp at line 7, boost/spirit/include/karma_no_delimit.hpp at line 7, boost/spirit/include/karma_nonterminal.hpp at line 7, boost/spirit/include/karma_not_predicate.hpp at line 7, boost/spirit/include/karma_numeric.hpp at line 7, boost/spirit/include/karma_omit.hpp at line 7, boost/spirit/include/karma_operator.hpp at line 7, boost/spirit/include/karma_optional.hpp at line 7, boost/spirit/include/karma_phoenix_attributes.hpp at line 7, boost/spirit/include/karma_plus.hpp at line 7, boost/spirit/include/karma_real.hpp at line 7, boost/spirit/include/karma_repeat.hpp at line 7, boost/spirit/include/karma_right_alignment.hpp at line 7, boost/spirit/include/karma_rule.hpp at line 7, boost/spirit/include/karma_sequence.hpp at line 7, boost/spirit/include/karma_stream.hpp at line 7, boost/spirit/include/karma_strict_relaxed.hpp at line 7, boost/spirit/include/karma_string.hpp at line 7, boost/spirit/include/karma_symbols.hpp at line 7, boost/spirit/include/karma_uint.hpp at line 7, boost/spirit/include/karma_upper_lower_case.hpp at line 7, boost/spirit/include/karma_verbatim.hpp at line 7, boost/spirit/include/karma_what.hpp at line 7, boost/spirit/include/lex.hpp at line 7, boost/spirit/include/lex_char_token_def.hpp at line 7, boost/spirit/include/lex_domain.hpp at line 7, boost/spirit/include/lex_generate_static_lexertl.hpp at line 7, boost/spirit/include/lex_lexer.hpp at line 7, boost/spirit/include/lex_lexertl.hpp at line 7, boost/spirit/include/lex_lexertl_position_token.hpp at line 7, boost/spirit/include/lex_lexertl_token.hpp at line 7, boost/spirit/include/lex_plain_token.hpp at line 7, boost/spirit/include/lex_primitives.hpp at line 7, boost/spirit/include/lex_static_lexertl.hpp at line 7, boost/spirit/include/lex_tokenize_and_parse.hpp at line 7, boost/spirit/include/lex_tokenize_and_parse_attr.hpp at line 7, boost/spirit/include/phoenix.hpp at line 7, boost/spirit/include/phoenix_algorithm.hpp at line 7, boost/spirit/include/phoenix_bind.hpp at line 7, boost/spirit/include/phoenix_container.hpp at line 7, boost/spirit/include/phoenix_core.hpp at line 7, boost/spirit/include/phoenix_function.hpp at line 7, boost/spirit/include/phoenix_fusion.hpp at line 7, boost/spirit/include/phoenix_limits.hpp at line 7, boost/spirit/include/phoenix_object.hpp at line 7, boost/spirit/include/phoenix_operator.hpp at line 7, boost/spirit/include/phoenix_scope.hpp at line 7, boost/spirit/include/phoenix_statement.hpp at line 7, boost/spirit/include/phoenix_stl.hpp at line 7, boost/spirit/include/phoenix_version.hpp at line 7, boost/spirit/include/qi.hpp at line 7, boost/spirit/include/qi_action.hpp at line 7, boost/spirit/include/qi_alternative.hpp at line 7, boost/spirit/include/qi_and_predicate.hpp at line 7, boost/spirit/include/qi_as.hpp at line 8, boost/spirit/include/qi_as_string.hpp at line 7, boost/spirit/include/qi_attr.hpp at line 7, boost/spirit/include/qi_attr_cast.hpp at line 7, boost/spirit/include/qi_auto.hpp at line 7, boost/spirit/include/qi_auxiliary.hpp at line 7, boost/spirit/include/qi_binary.hpp at line 7, boost/spirit/include/qi_bool.hpp at line 7, boost/spirit/include/qi_char.hpp at line 7, boost/spirit/include/qi_char_.hpp at line 7, boost/spirit/include/qi_char_class.hpp at line 7, boost/spirit/include/qi_copy.hpp at line 6, boost/spirit/include/qi_core.hpp at line 7, boost/spirit/include/qi_difference.hpp at line 7, boost/spirit/include/qi_directive.hpp at line 7, boost/spirit/include/qi_domain.hpp at line 7, boost/spirit/include/qi_eoi.hpp at line 7, boost/spirit/include/qi_eol.hpp at line 7, boost/spirit/include/qi_eps.hpp at line 7, boost/spirit/include/qi_expect.hpp at line 7, boost/spirit/include/qi_grammar.hpp at line 7, boost/spirit/include/qi_hold.hpp at line 7, boost/spirit/include/qi_int.hpp at line 7, boost/spirit/include/qi_kleene.hpp at line 7, boost/spirit/include/qi_lazy.hpp at line 7, boost/spirit/include/qi_lexeme.hpp at line 7, boost/spirit/include/qi_list.hpp at line 7, boost/spirit/include/qi_lit.hpp at line 7, boost/spirit/include/qi_match.hpp at line 7, boost/spirit/include/qi_match_attr.hpp at line 7, boost/spirit/include/qi_match_auto.hpp at line 7, boost/spirit/include/qi_matches.hpp at line 7, boost/spirit/include/qi_no_case.hpp at line 7, boost/spirit/include/qi_no_skip.hpp at line 7, boost/spirit/include/qi_nonterminal.hpp at line 7, boost/spirit/include/qi_not_predicate.hpp at line 7, boost/spirit/include/qi_numeric.hpp at line 7, boost/spirit/include/qi_omit.hpp at line 7, boost/spirit/include/qi_operator.hpp at line 7, boost/spirit/include/qi_optional.hpp at line 7, boost/spirit/include/qi_parse.hpp at line 7, boost/spirit/include/qi_parse_attr.hpp at line 7, boost/spirit/include/qi_parse_auto.hpp at line 7, boost/spirit/include/qi_permutation.hpp at line 7, boost/spirit/include/qi_plus.hpp at line 7, boost/spirit/include/qi_raw.hpp at line 7, boost/spirit/include/qi_real.hpp at line 7, boost/spirit/include/qi_repeat.hpp at line 7, boost/spirit/include/qi_rule.hpp at line 7, boost/spirit/include/qi_sequence.hpp at line 7, boost/spirit/include/qi_sequential_or.hpp at line 7, boost/spirit/include/qi_skip.hpp at line 7, boost/spirit/include/qi_stream.hpp at line 7, boost/spirit/include/qi_string.hpp at line 7, boost/spirit/include/qi_symbols.hpp at line 7, boost/spirit/include/qi_uint.hpp at line 7, boost/spirit/include/qi_what.hpp at line 7, boost/spirit/include/support.hpp at line 7, boost/spirit/include/support_adapt_adt_attributes.hpp at line 7, boost/spirit/include/support_any.hpp at line 7, boost/spirit/include/support_any_if.hpp at line 7, boost/spirit/include/support_any_if_ns.hpp at line 7, boost/spirit/include/support_any_if_ns_so.hpp at line 7, boost/spirit/include/support_any_ns.hpp at line 7, boost/spirit/include/support_any_ns_so.hpp at line 7, boost/spirit/include/support_argument.hpp at line 7, boost/spirit/include/support_ascii.hpp at line 7, boost/spirit/include/support_attributes.hpp at line 7, boost/spirit/include/support_attributes_fwd.hpp at line 7, boost/spirit/include/support_auto.hpp at line 6, boost/spirit/include/support_char_class.hpp at line 7, boost/spirit/include/support_container.hpp at line 7, boost/spirit/include/support_extended_variant.hpp at line 7, boost/spirit/include/support_info.hpp at line 6, boost/spirit/include/support_iso8859_1.hpp at line 7, boost/spirit/include/support_istream_iterator.hpp at line 7, boost/spirit/include/support_line_pos_iterator.hpp at line 8, boost/spirit/include/support_locals.hpp at line 7, boost/spirit/include/support_look_ahead.hpp at line 7, boost/spirit/include/support_modify.hpp at line 7, boost/spirit/include/support_multi_pass.hpp at line 7, boost/spirit/include/support_multi_pass_fwd.hpp at line 7, boost/spirit/include/support_ostream_iterator.hpp at line 7, boost/spirit/include/support_standard.hpp at line 7, boost/spirit/include/support_standard_wide.hpp at line 7, boost/spirit/include/support_string_traits.hpp at line 7, boost/spirit/include/support_unused.hpp at line 7, boost/spirit/include/support_utree.hpp at line 7, boost/spirit/repository/home/qi/directive/kwd.hpp at line 6, boost/spirit/repository/home/qi/directive/seek.hpp at line 5, boost/spirit/repository/home/qi/nonterminal/subrule.hpp at line 6, boost/spirit/repository/home/qi/operator/keywords.hpp at line 6, boost/spirit/repository/home/support/seek.hpp at line 5, boost/spirit/repository/home/support/subrule_context.hpp at line 6, boost/spirit/repository/include/karma.hpp at line 7, boost/spirit/repository/include/karma_confix.hpp at line 7, boost/spirit/repository/include/karma_directive.hpp at line 7, boost/spirit/repository/include/karma_nonterminal.hpp at line 8, boost/spirit/repository/include/karma_subrule.hpp at line 8, boost/spirit/repository/include/qi.hpp at line 7, boost/spirit/repository/include/qi_advance.hpp at line 6, boost/spirit/repository/include/qi_confix.hpp at line 7, boost/spirit/repository/include/qi_directive.hpp at line 7, boost/spirit/repository/include/qi_distinct.hpp at line 7, boost/spirit/repository/include/qi_flush_multi_pass.hpp at line 7, boost/spirit/repository/include/qi_iter_pos.hpp at line 7, boost/spirit/repository/include/qi_keywords.hpp at line 8, boost/spirit/repository/include/qi_kwd.hpp at line 27, boost/spirit/repository/include/qi_kwd.hpp at line 8, boost/spirit/repository/include/qi_nonterminal.hpp at line 8, boost/spirit/repository/include/qi_primitive.hpp at line 7, boost/spirit/repository/include/qi_seek.hpp at line 5, boost/spirit/repository/include/qi_subrule.hpp at line 8, boost/wave/cpplexer/re2clex/aq.hpp at line 9, boost/wave/cpplexer/re2clex/scanner.hpp at line 9, boost/wave/whitespace_handling.hpp at line 10
+ License text:
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/detail/fenv.hpp [4:5]
+ boost/detail/is_sorted.hpp [4:5]
+ boost/fusion/adapted.hpp [5:6]
+ boost/fusion/adapted/adt.hpp [6:7]
+ boost/fusion/adapted/adt/adapt_adt.hpp [7:8]
+ boost/fusion/adapted/adt/adapt_adt_named.hpp [6:7]
+ boost/fusion/adapted/adt/adapt_assoc_adt.hpp [7:8]
+ boost/fusion/adapted/adt/adapt_assoc_adt_named.hpp [4:5]
+ boost/fusion/adapted/adt/detail/adapt_base.hpp [6:7]
+ boost/fusion/adapted/adt/detail/adapt_base_assoc_attr_filler.hpp [4:5]
+ boost/fusion/adapted/adt/detail/adapt_base_attr_filler.hpp [4:5]
+ boost/fusion/adapted/adt/detail/extension.hpp [6:7]
+ boost/fusion/adapted/array/deref_impl.hpp [4:5]
+ boost/fusion/adapted/array/size_impl.hpp [4:5]
+ boost/fusion/adapted/array/value_of_impl.hpp [4:5]
+ boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp [4:5]
+ boost/fusion/adapted/boost_tuple/detail/build_cons.hpp [4:5]
+ boost/fusion/adapted/boost_tuple/detail/convert_impl.hpp [4:5]
+ boost/fusion/adapted/boost_tuple/mpl/clear.hpp [4:5]
+ boost/fusion/adapted/mpl.hpp [5:6]
+ boost/fusion/adapted/mpl/detail/empty_impl.hpp [5:6]
+ boost/fusion/adapted/std_pair.hpp [6:7]
+ boost/fusion/adapted/std_tuple.hpp [4:5]
+ boost/fusion/adapted/std_tuple/detail/at_impl.hpp [4:5]
+ boost/fusion/adapted/std_tuple/detail/begin_impl.hpp [4:5]
+ boost/fusion/adapted/std_tuple/detail/build_std_tuple.hpp [4:5]
+ boost/fusion/adapted/std_tuple/detail/category_of_impl.hpp [4:5]
+ boost/fusion/adapted/std_tuple/detail/convert_impl.hpp [4:5]
+ boost/fusion/adapted/std_tuple/detail/end_impl.hpp [4:5]
+ boost/fusion/adapted/std_tuple/detail/is_sequence_impl.hpp [4:5]
+ boost/fusion/adapted/std_tuple/detail/is_view_impl.hpp [4:5]
+ boost/fusion/adapted/std_tuple/detail/size_impl.hpp [4:5]
+ boost/fusion/adapted/std_tuple/detail/value_at_impl.hpp [4:5]
+ boost/fusion/adapted/std_tuple/mpl/clear.hpp [4:5]
+ boost/fusion/adapted/std_tuple/std_tuple_iterator.hpp [4:5]
+ boost/fusion/adapted/std_tuple/tag_of.hpp [4:5]
+ boost/fusion/adapted/struct.hpp [6:7]
+ boost/fusion/adapted/struct/adapt_assoc_struct.hpp [6:7]
+ boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp [4:5]
+ boost/fusion/adapted/struct/adapt_struct.hpp [6:7]
+ boost/fusion/adapted/struct/adapt_struct_named.hpp [6:7]
+ boost/fusion/adapted/struct/define_assoc_struct.hpp [4:5]
+ boost/fusion/adapted/struct/define_struct.hpp [4:5]
+ boost/fusion/adapted/struct/define_struct_inline.hpp [4:5]
+ boost/fusion/adapted/struct/detail/adapt_auto.hpp [4:5]
+ boost/fusion/adapted/struct/detail/adapt_base.hpp [7:8]
+ boost/fusion/adapted/struct/detail/adapt_base_assoc_attr_filler.hpp [4:5]
+ boost/fusion/adapted/struct/detail/adapt_base_attr_filler.hpp [4:5]
+ boost/fusion/adapted/struct/detail/adapt_is_tpl.hpp [4:5]
+ boost/fusion/adapted/struct/detail/at_impl.hpp [6:7]
+ boost/fusion/adapted/struct/detail/begin_impl.hpp [6:7]
+ boost/fusion/adapted/struct/detail/category_of_impl.hpp [6:7]
+ boost/fusion/adapted/struct/detail/define_struct.hpp [4:5]
+ boost/fusion/adapted/struct/detail/define_struct_inline.hpp [4:5]
+ boost/fusion/adapted/struct/detail/deref_data_impl.hpp [4:5]
+ boost/fusion/adapted/struct/detail/deref_impl.hpp [4:5]
+ boost/fusion/adapted/struct/detail/end_impl.hpp [6:7]
+ boost/fusion/adapted/struct/detail/extension.hpp [6:7]
+ boost/fusion/adapted/struct/detail/is_sequence_impl.hpp [6:7]
+ boost/fusion/adapted/struct/detail/is_view_impl.hpp [6:7]
+ boost/fusion/adapted/struct/detail/key_of_impl.hpp [4:5]
+ boost/fusion/adapted/struct/detail/namespace.hpp [5:6]
+ boost/fusion/adapted/struct/detail/preprocessor/is_seq.hpp [8:9]
+ boost/fusion/adapted/struct/detail/proxy_type.hpp [5:6]
+ boost/fusion/adapted/struct/detail/size_impl.hpp [6:7]
+ boost/fusion/adapted/struct/detail/value_at_impl.hpp [6:7]
+ boost/fusion/adapted/struct/detail/value_of_data_impl.hpp [4:5]
+ boost/fusion/adapted/struct/detail/value_of_impl.hpp [4:5]
+ boost/fusion/algorithm/auxiliary.hpp [4:5]
+ boost/fusion/algorithm/auxiliary/copy.hpp [4:5]
+ boost/fusion/algorithm/auxiliary/move.hpp [4:5]
+ boost/fusion/algorithm/iteration/detail/fold.hpp [7:8]
+ boost/fusion/algorithm/iteration/detail/preprocessed/fold.hpp [6:7]
+ boost/fusion/algorithm/iteration/detail/preprocessed/iter_fold.hpp [5:6]
+ boost/fusion/algorithm/iteration/detail/preprocessed/reverse_fold.hpp [5:6]
+ boost/fusion/algorithm/iteration/detail/preprocessed/reverse_iter_fold.hpp [5:6]
+ boost/fusion/algorithm/iteration/fold.hpp [7:8]
+ boost/fusion/algorithm/iteration/fold.hpp [39:40]
+ boost/fusion/algorithm/iteration/fold_fwd.hpp [4:5]
+ boost/fusion/algorithm/iteration/iter_fold.hpp [6:7]
+ boost/fusion/algorithm/iteration/iter_fold.hpp [40:41]
+ boost/fusion/algorithm/iteration/iter_fold_fwd.hpp [4:5]
+ boost/fusion/algorithm/iteration/reverse_fold.hpp [6:7]
+ boost/fusion/algorithm/iteration/reverse_fold.hpp [40:41]
+ boost/fusion/algorithm/iteration/reverse_fold_fwd.hpp [4:5]
+ boost/fusion/algorithm/iteration/reverse_iter_fold.hpp [6:7]
+ boost/fusion/algorithm/iteration/reverse_iter_fold.hpp [40:41]
+ boost/fusion/algorithm/iteration/reverse_iter_fold_fwd.hpp [4:5]
+ boost/fusion/algorithm/transformation/detail/preprocessed/zip.hpp [4:5]
+ boost/fusion/algorithm/transformation/erase.hpp [4:5]
+ boost/fusion/algorithm/transformation/flatten.hpp [4:5]
+ boost/fusion/algorithm/transformation/insert.hpp [4:5]
+ boost/fusion/algorithm/transformation/insert_range.hpp [4:5]
+ boost/fusion/algorithm/transformation/pop_back.hpp [4:5]
+ boost/fusion/algorithm/transformation/zip.hpp [5:6]
+ boost/fusion/algorithm/transformation/zip.hpp [46:47]
+ boost/fusion/container.hpp [4:5]
+ boost/fusion/container/deque.hpp [5:6]
+ boost/fusion/container/deque/back_extended_deque.hpp [5:6]
+ boost/fusion/container/deque/convert.hpp [5:6]
+ boost/fusion/container/deque/deque.hpp [5:6]
+ boost/fusion/container/deque/deque_fwd.hpp [5:6]
+ boost/fusion/container/deque/deque_iterator.hpp [5:6]
+ boost/fusion/container/deque/detail/at_impl.hpp [5:6]
+ boost/fusion/container/deque/detail/begin_impl.hpp [5:6]
+ boost/fusion/container/deque/detail/build_deque.hpp [4:5]
+ boost/fusion/container/deque/detail/convert_impl.hpp [6:7]
+ boost/fusion/container/deque/detail/cpp03/as_deque.hpp [5:6]
+ boost/fusion/container/deque/detail/cpp03/as_deque.hpp [68:69]
+ boost/fusion/container/deque/detail/cpp03/build_deque.hpp [4:5]
+ boost/fusion/container/deque/detail/cpp03/deque.hpp [5:6]
+ boost/fusion/container/deque/detail/cpp03/deque.hpp [53:54]
+ boost/fusion/container/deque/detail/cpp03/deque_forward_ctor.hpp [5:6]
+ boost/fusion/container/deque/detail/cpp03/deque_fwd.hpp [5:6]
+ boost/fusion/container/deque/detail/cpp03/deque_fwd.hpp [28:29]
+ boost/fusion/container/deque/detail/cpp03/deque_initial_size.hpp [5:6]
+ boost/fusion/container/deque/detail/cpp03/deque_initial_size.hpp [37:38]
+ boost/fusion/container/deque/detail/cpp03/deque_keyed_values.hpp [5:6]
+ boost/fusion/container/deque/detail/cpp03/deque_keyed_values.hpp [45:46]
+ boost/fusion/container/deque/detail/cpp03/deque_keyed_values_call.hpp [5:6]
+ boost/fusion/container/deque/detail/cpp03/limits.hpp [5:6]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque.hpp [4:5]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque.hpp [4:5]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque10_fwd.hpp [4:5]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque_fwd.hpp [4:5]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size.hpp [4:5]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size10.hpp [4:5]
+ boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values.hpp [4:5]
+ boost/fusion/container/deque/detail/deque_keyed_values.hpp [5:6]
+ boost/fusion/container/deque/detail/end_impl.hpp [5:6]
+ boost/fusion/container/deque/detail/is_sequence_impl.hpp [4:5]
+ boost/fusion/container/deque/detail/keyed_element.hpp [5:6]
+ boost/fusion/container/deque/detail/value_at_impl.hpp [5:6]
+ boost/fusion/container/deque/front_extended_deque.hpp [5:6]
+ boost/fusion/container/generation.hpp [4:5]
+ boost/fusion/container/generation/deque_tie.hpp [4:5]
+ boost/fusion/container/generation/detail/pp_deque_tie.hpp [5:6]
+ boost/fusion/container/generation/detail/pp_deque_tie.hpp [30:31]
+ boost/fusion/container/generation/detail/pp_list_tie.hpp [4:5]
+ boost/fusion/container/generation/detail/pp_list_tie.hpp [29:30]
+ boost/fusion/container/generation/detail/pp_make_deque.hpp [5:6]
+ boost/fusion/container/generation/detail/pp_make_deque.hpp [30:31]
+ boost/fusion/container/generation/detail/pp_make_list.hpp [4:5]
+ boost/fusion/container/generation/detail/pp_make_list.hpp [29:30]
+ boost/fusion/container/generation/detail/pp_make_map.hpp [4:5]
+ boost/fusion/container/generation/detail/pp_make_map.hpp [30:31]
+ boost/fusion/container/generation/detail/pp_make_set.hpp [4:5]
+ boost/fusion/container/generation/detail/pp_make_set.hpp [31:32]
+ boost/fusion/container/generation/detail/pp_make_vector.hpp [4:5]
+ boost/fusion/container/generation/detail/pp_make_vector.hpp [29:30]
+ boost/fusion/container/generation/detail/pp_map_tie.hpp [5:6]
+ boost/fusion/container/generation/detail/pp_map_tie.hpp [33:34]
+ boost/fusion/container/generation/detail/pp_vector_tie.hpp [4:5]
+ boost/fusion/container/generation/detail/pp_vector_tie.hpp [29:30]
+ boost/fusion/container/generation/detail/preprocessed/deque_tie.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/deque_tie10.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/list_tie.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/list_tie10.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/make_deque.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/make_list.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/make_map.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/make_set.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/make_vector.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/map_tie.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/vector_tie.hpp [4:5]
+ boost/fusion/container/generation/detail/preprocessed/vector_tie10.hpp [4:5]
+ boost/fusion/container/generation/list_tie.hpp [4:5]
+ boost/fusion/container/generation/make_deque.hpp [4:5]
+ boost/fusion/container/generation/make_list.hpp [4:5]
+ boost/fusion/container/generation/make_map.hpp [4:5]
+ boost/fusion/container/generation/make_set.hpp [4:5]
+ boost/fusion/container/generation/make_vector.hpp [4:5]
+ boost/fusion/container/generation/map_tie.hpp [4:5]
+ boost/fusion/container/generation/vector_tie.hpp [4:5]
+ boost/fusion/container/list.hpp [4:5]
+ boost/fusion/container/list/cons_fwd.hpp [5:6]
+ boost/fusion/container/list/convert.hpp [4:5]
+ boost/fusion/container/list/detail/at_impl.hpp [4:5]
+ boost/fusion/container/list/detail/convert_impl.hpp [5:6]
+ boost/fusion/container/list/detail/cpp03/limits.hpp [4:5]
+ boost/fusion/container/list/detail/cpp03/list.hpp [4:5]
+ boost/fusion/container/list/detail/cpp03/list.hpp [28:29]
+ boost/fusion/container/list/detail/cpp03/list_fwd.hpp [4:5]
+ boost/fusion/container/list/detail/cpp03/list_fwd.hpp [24:25]
+ boost/fusion/container/list/detail/cpp03/list_to_cons.hpp [4:5]
+ boost/fusion/container/list/detail/cpp03/list_to_cons.hpp [36:37]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list.hpp [4:5]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list10_fwd.hpp [4:5]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list_fwd.hpp [4:5]
+ boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons.hpp [4:5]
+ boost/fusion/container/list/detail/list_to_cons.hpp [4:5]
+ boost/fusion/container/list/detail/reverse_cons.hpp [4:5]
+ boost/fusion/container/list/list.hpp [4:5]
+ boost/fusion/container/list/list_fwd.hpp [4:5]
+ boost/fusion/container/map.hpp [4:5]
+ boost/fusion/container/map/convert.hpp [4:5]
+ boost/fusion/container/map/detail/at_impl.hpp [4:5]
+ boost/fusion/container/map/detail/at_key_impl.hpp [4:5]
+ boost/fusion/container/map/detail/begin_impl.hpp [4:5]
+ boost/fusion/container/map/detail/build_map.hpp [4:5]
+ boost/fusion/container/map/detail/cpp03/as_map.hpp [4:5]
+ boost/fusion/container/map/detail/cpp03/as_map.hpp [67:68]
+ boost/fusion/container/map/detail/cpp03/begin_impl.hpp [5:6]
+ boost/fusion/container/map/detail/cpp03/convert.hpp [4:5]
+ boost/fusion/container/map/detail/cpp03/convert_impl.hpp [5:6]
+ boost/fusion/container/map/detail/cpp03/deref_data_impl.hpp [4:5]
+ boost/fusion/container/map/detail/cpp03/deref_impl.hpp [4:5]
+ boost/fusion/container/map/detail/cpp03/end_impl.hpp [5:6]
+ boost/fusion/container/map/detail/cpp03/key_of_impl.hpp [4:5]
+ boost/fusion/container/map/detail/cpp03/limits.hpp [4:5]
+ boost/fusion/container/map/detail/cpp03/map.hpp [4:5]
+ boost/fusion/container/map/detail/cpp03/map.hpp [47:48]
+ boost/fusion/container/map/detail/cpp03/map_fwd.hpp [4:5]
+ boost/fusion/container/map/detail/cpp03/map_fwd.hpp [24:25]
+ boost/fusion/container/map/detail/cpp03/preprocessed/as_map.hpp [4:5]
+ boost/fusion/container/map/detail/cpp03/preprocessed/map.hpp [4:5]
+ boost/fusion/container/map/detail/cpp03/preprocessed/map10_fwd.hpp [4:5]
+ boost/fusion/container/map/detail/cpp03/preprocessed/map_fwd.hpp [4:5]
+ boost/fusion/container/map/detail/cpp03/value_of_data_impl.hpp [4:5]
+ boost/fusion/container/map/detail/cpp03/value_of_impl.hpp [4:5]
+ boost/fusion/container/map/detail/end_impl.hpp [4:5]
+ boost/fusion/container/map/detail/map_impl.hpp [4:5]
+ boost/fusion/container/map/detail/map_index.hpp [4:5]
+ boost/fusion/container/map/detail/value_at_impl.hpp [4:5]
+ boost/fusion/container/map/detail/value_at_key_impl.hpp [4:5]
+ boost/fusion/container/map/map.hpp [4:5]
+ boost/fusion/container/map/map_fwd.hpp [4:5]
+ boost/fusion/container/map/map_iterator.hpp [5:6]
+ boost/fusion/container/set.hpp [4:5]
+ boost/fusion/container/set/convert.hpp [4:5]
+ boost/fusion/container/set/detail/as_set.hpp [4:5]
+ boost/fusion/container/set/detail/begin_impl.hpp [5:6]
+ boost/fusion/container/set/detail/convert_impl.hpp [5:6]
+ boost/fusion/container/set/detail/cpp03/as_set.hpp [4:5]
+ boost/fusion/container/set/detail/cpp03/as_set.hpp [67:68]
+ boost/fusion/container/set/detail/cpp03/limits.hpp [4:5]
+ boost/fusion/container/set/detail/cpp03/preprocessed/as_set.hpp [4:5]
+ boost/fusion/container/set/detail/cpp03/preprocessed/set.hpp [4:5]
+ boost/fusion/container/set/detail/cpp03/preprocessed/set10_fwd.hpp [4:5]
+ boost/fusion/container/set/detail/cpp03/preprocessed/set_fwd.hpp [4:5]
+ boost/fusion/container/set/detail/cpp03/set.hpp [4:5]
+ boost/fusion/container/set/detail/cpp03/set.hpp [40:41]
+ boost/fusion/container/set/detail/cpp03/set_fwd.hpp [4:5]
+ boost/fusion/container/set/detail/cpp03/set_fwd.hpp [24:25]
+ boost/fusion/container/set/detail/deref_data_impl.hpp [4:5]
+ boost/fusion/container/set/detail/deref_impl.hpp [4:5]
+ boost/fusion/container/set/detail/end_impl.hpp [5:6]
+ boost/fusion/container/set/detail/key_of_impl.hpp [4:5]
+ boost/fusion/container/set/detail/value_of_data_impl.hpp [4:5]
+ boost/fusion/container/set/detail/value_of_impl.hpp [4:5]
+ boost/fusion/container/set/set.hpp [4:5]
+ boost/fusion/container/set/set_fwd.hpp [4:5]
+ boost/fusion/container/vector.hpp [4:5]
+ boost/fusion/container/vector/convert.hpp [4:5]
+ boost/fusion/container/vector/detail/as_vector.hpp [4:5]
+ boost/fusion/container/vector/detail/at_impl.hpp [4:5]
+ boost/fusion/container/vector/detail/config.hpp [4:5]
+ boost/fusion/container/vector/detail/convert_impl.hpp [5:6]
+ boost/fusion/container/vector/detail/cpp03/as_vector.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/as_vector.hpp [67:68]
+ boost/fusion/container/vector/detail/cpp03/limits.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector10_fwd.hpp [5:6]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser10.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vector_fwd.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10_fwd.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/value_at_impl.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/vector.hpp [5:6]
+ boost/fusion/container/vector/detail/cpp03/vector.hpp [72:73]
+ boost/fusion/container/vector/detail/cpp03/vector10.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/vector10.hpp [75:76]
+ boost/fusion/container/vector/detail/cpp03/vector10_fwd.hpp [6:7]
+ boost/fusion/container/vector/detail/cpp03/vector10_fwd.hpp [34:35]
+ boost/fusion/container/vector/detail/cpp03/vector20.hpp [5:6]
+ boost/fusion/container/vector/detail/cpp03/vector20.hpp [50:51]
+ boost/fusion/container/vector/detail/cpp03/vector20_fwd.hpp [6:7]
+ boost/fusion/container/vector/detail/cpp03/vector20_fwd.hpp [28:29]
+ boost/fusion/container/vector/detail/cpp03/vector30.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/vector30.hpp [49:50]
+ boost/fusion/container/vector/detail/cpp03/vector30_fwd.hpp [6:7]
+ boost/fusion/container/vector/detail/cpp03/vector30_fwd.hpp [28:29]
+ boost/fusion/container/vector/detail/cpp03/vector40.hpp [5:6]
+ boost/fusion/container/vector/detail/cpp03/vector40.hpp [50:51]
+ boost/fusion/container/vector/detail/cpp03/vector40_fwd.hpp [6:7]
+ boost/fusion/container/vector/detail/cpp03/vector40_fwd.hpp [28:29]
+ boost/fusion/container/vector/detail/cpp03/vector50.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/vector50.hpp [49:50]
+ boost/fusion/container/vector/detail/cpp03/vector50_fwd.hpp [6:7]
+ boost/fusion/container/vector/detail/cpp03/vector50_fwd.hpp [28:29]
+ boost/fusion/container/vector/detail/cpp03/vector_forward_ctor.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/vector_fwd.hpp [5:6]
+ boost/fusion/container/vector/detail/cpp03/vector_fwd.hpp [39:40]
+ boost/fusion/container/vector/detail/cpp03/vector_n.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/vector_n_chooser.hpp [4:5]
+ boost/fusion/container/vector/detail/cpp03/vector_n_chooser.hpp [50:51]
+ boost/fusion/container/vector/detail/value_at_impl.hpp [4:5]
+ boost/fusion/container/vector/vector.hpp [4:5]
+ boost/fusion/container/vector/vector10.hpp [4:5]
+ boost/fusion/container/vector/vector20.hpp [4:5]
+ boost/fusion/container/vector/vector30.hpp [4:5]
+ boost/fusion/container/vector/vector40.hpp [4:5]
+ boost/fusion/container/vector/vector50.hpp [4:5]
+ boost/fusion/container/vector/vector_fwd.hpp [4:5]
+ boost/fusion/include/accumulate.hpp [4:5]
+ boost/fusion/include/adapt_adt.hpp [4:5]
+ boost/fusion/include/adapt_adt_named.hpp [4:5]
+ boost/fusion/include/adapt_assoc_adt.hpp [4:5]
+ boost/fusion/include/adapt_assoc_adt_named.hpp [4:5]
+ boost/fusion/include/adapt_assoc_struct.hpp [4:5]
+ boost/fusion/include/adapt_assoc_struct_named.hpp [4:5]
+ boost/fusion/include/adapt_struct.hpp [4:5]
+ boost/fusion/include/adapt_struct_named.hpp [4:5]
+ boost/fusion/include/adapted.hpp [4:5]
+ boost/fusion/include/adapter.hpp [4:5]
+ boost/fusion/include/advance.hpp [4:5]
+ boost/fusion/include/algorithm.hpp [4:5]
+ boost/fusion/include/all.hpp [4:5]
+ boost/fusion/include/any.hpp [4:5]
+ boost/fusion/include/array.hpp [4:5]
+ boost/fusion/include/as_deque.hpp [4:5]
+ boost/fusion/include/as_list.hpp [4:5]
+ boost/fusion/include/as_map.hpp [4:5]
+ boost/fusion/include/as_set.hpp [4:5]
+ boost/fusion/include/at_c.hpp [4:5]
+ boost/fusion/include/at_key.hpp [4:5]
+ boost/fusion/include/auxiliary.hpp [4:5]
+ boost/fusion/include/back.hpp [4:5]
+ boost/fusion/include/begin.hpp [4:5]
+ boost/fusion/include/boost_array.hpp [4:5]
+ boost/fusion/include/boost_tuple.hpp [4:5]
+ boost/fusion/include/category_of.hpp [4:5]
+ boost/fusion/include/clear.hpp [4:5]
+ boost/fusion/include/comparison.hpp [4:5]
+ boost/fusion/include/cons.hpp [4:5]
+ boost/fusion/include/cons_tie.hpp [4:5]
+ boost/fusion/include/container.hpp [4:5]
+ boost/fusion/include/convert.hpp [4:5]
+ boost/fusion/include/copy.hpp [4:5]
+ boost/fusion/include/count.hpp [4:5]
+ boost/fusion/include/count_if.hpp [4:5]
+ boost/fusion/include/deduce.hpp [4:5]
+ boost/fusion/include/deduce_sequence.hpp [4:5]
+ boost/fusion/include/define_assoc_struct.hpp [4:5]
+ boost/fusion/include/define_struct.hpp [4:5]
+ boost/fusion/include/define_struct_inline.hpp [4:5]
+ boost/fusion/include/deque.hpp [4:5]
+ boost/fusion/include/deque_fwd.hpp [4:5]
+ boost/fusion/include/deque_tie.hpp [4:5]
+ boost/fusion/include/deref.hpp [4:5]
+ boost/fusion/include/deref_data.hpp [4:5]
+ boost/fusion/include/distance.hpp [4:5]
+ boost/fusion/include/empty.hpp [4:5]
+ boost/fusion/include/end.hpp [4:5]
+ boost/fusion/include/equal_to.hpp [4:5]
+ boost/fusion/include/erase.hpp [4:5]
+ boost/fusion/include/erase_key.hpp [4:5]
+ boost/fusion/include/filter.hpp [4:5]
+ boost/fusion/include/filter_if.hpp [4:5]
+ boost/fusion/include/filter_view.hpp [4:5]
+ boost/fusion/include/find.hpp [4:5]
+ boost/fusion/include/find_if.hpp [4:5]
+ boost/fusion/include/flatten.hpp [4:5]
+ boost/fusion/include/flatten_view.hpp [4:5]
+ boost/fusion/include/fold.hpp [4:5]
+ boost/fusion/include/for_each.hpp [4:5]
+ boost/fusion/include/front.hpp [4:5]
+ boost/fusion/include/functional.hpp [4:5]
+ boost/fusion/include/fused.hpp [4:5]
+ boost/fusion/include/fused_function_object.hpp [4:5]
+ boost/fusion/include/fused_procedure.hpp [4:5]
+ boost/fusion/include/generation.hpp [4:5]
+ boost/fusion/include/greater.hpp [4:5]
+ boost/fusion/include/greater_equal.hpp [4:5]
+ boost/fusion/include/has_key.hpp [4:5]
+ boost/fusion/include/hash.hpp [4:5]
+ boost/fusion/include/ignore.hpp [4:5]
+ boost/fusion/include/in.hpp [4:5]
+ boost/fusion/include/insert.hpp [4:5]
+ boost/fusion/include/insert_range.hpp [4:5]
+ boost/fusion/include/intrinsic.hpp [4:5]
+ boost/fusion/include/invocation.hpp [4:5]
+ boost/fusion/include/invoke.hpp [4:5]
+ boost/fusion/include/invoke_function_object.hpp [4:5]
+ boost/fusion/include/invoke_procedure.hpp [4:5]
+ boost/fusion/include/is_iterator.hpp [4:5]
+ boost/fusion/include/is_segmented.hpp [4:5]
+ boost/fusion/include/is_view.hpp [4:5]
+ boost/fusion/include/iter_fold.hpp [4:5]
+ boost/fusion/include/iteration.hpp [4:5]
+ boost/fusion/include/iterator.hpp [4:5]
+ boost/fusion/include/iterator_adapter.hpp [4:5]
+ boost/fusion/include/iterator_base.hpp [4:5]
+ boost/fusion/include/iterator_facade.hpp [4:5]
+ boost/fusion/include/iterator_range.hpp [4:5]
+ boost/fusion/include/key_of.hpp [4:5]
+ boost/fusion/include/less.hpp [4:5]
+ boost/fusion/include/less_equal.hpp [4:5]
+ boost/fusion/include/list.hpp [4:5]
+ boost/fusion/include/list_fwd.hpp [4:5]
+ boost/fusion/include/list_tie.hpp [4:5]
+ boost/fusion/include/make_cons.hpp [4:5]
+ boost/fusion/include/make_deque.hpp [4:5]
+ boost/fusion/include/make_fused.hpp [4:5]
+ boost/fusion/include/make_fused_function_object.hpp [4:5]
+ boost/fusion/include/make_fused_procedure.hpp [4:5]
+ boost/fusion/include/make_list.hpp [4:5]
+ boost/fusion/include/make_map.hpp [4:5]
+ boost/fusion/include/make_set.hpp [4:5]
+ boost/fusion/include/make_tuple.hpp [4:5]
+ boost/fusion/include/make_unfused.hpp [4:5]
+ boost/fusion/include/make_vector.hpp [4:5]
+ boost/fusion/include/map.hpp [4:5]
+ boost/fusion/include/map_fwd.hpp [4:5]
+ boost/fusion/include/map_tie.hpp [4:5]
+ boost/fusion/include/move.hpp [4:5]
+ boost/fusion/include/mpl.hpp [4:5]
+ boost/fusion/include/next.hpp [4:5]
+ boost/fusion/include/nil.hpp [4:5]
+ boost/fusion/include/none.hpp [4:5]
+ boost/fusion/include/not_equal_to.hpp [4:5]
+ boost/fusion/include/nview.hpp [4:5]
+ boost/fusion/include/out.hpp [4:5]
+ boost/fusion/include/pair.hpp [4:5]
+ boost/fusion/include/pair_tie.hpp [4:5]
+ boost/fusion/include/pop_back.hpp [4:5]
+ boost/fusion/include/pop_front.hpp [4:5]
+ boost/fusion/include/prior.hpp [4:5]
+ boost/fusion/include/proxy_type.hpp [4:5]
+ boost/fusion/include/push_back.hpp [4:5]
+ boost/fusion/include/query.hpp [4:5]
+ boost/fusion/include/remove.hpp [4:5]
+ boost/fusion/include/remove_if.hpp [4:5]
+ boost/fusion/include/repetitive_view.hpp [4:5]
+ boost/fusion/include/replace.hpp [4:5]
+ boost/fusion/include/replace_if.hpp [4:5]
+ boost/fusion/include/reverse.hpp [4:5]
+ boost/fusion/include/reverse_fold.hpp [4:5]
+ boost/fusion/include/reverse_iter_fold.hpp [4:5]
+ boost/fusion/include/reverse_view.hpp [4:5]
+ boost/fusion/include/segmented_fold_until.hpp [4:5]
+ boost/fusion/include/segmented_iterator.hpp [4:5]
+ boost/fusion/include/segments.hpp [4:5]
+ boost/fusion/include/sequence.hpp [4:5]
+ boost/fusion/include/sequence_base.hpp [4:5]
+ boost/fusion/include/sequence_facade.hpp [4:5]
+ boost/fusion/include/set.hpp [4:5]
+ boost/fusion/include/set_fwd.hpp [4:5]
+ boost/fusion/include/size.hpp [4:5]
+ boost/fusion/include/std_array.hpp [4:5]
+ boost/fusion/include/std_pair.hpp [4:5]
+ boost/fusion/include/std_tuple.hpp [3:4]
+ boost/fusion/include/struct.hpp [4:5]
+ boost/fusion/include/support.hpp [4:5]
+ boost/fusion/include/swap.hpp [4:5]
+ boost/fusion/include/tag_of.hpp [4:5]
+ boost/fusion/include/tag_of_fwd.hpp [4:5]
+ boost/fusion/include/transformation.hpp [4:5]
+ boost/fusion/include/tuple.hpp [4:5]
+ boost/fusion/include/tuple_fwd.hpp [4:5]
+ boost/fusion/include/tuple_tie.hpp [4:5]
+ boost/fusion/include/unfused.hpp [4:5]
+ boost/fusion/include/unfused_typed.hpp [4:5]
+ boost/fusion/include/unused.hpp [4:5]
+ boost/fusion/include/value_at_key.hpp [4:5]
+ boost/fusion/include/value_of.hpp [4:5]
+ boost/fusion/include/value_of_data.hpp [4:5]
+ boost/fusion/include/vector.hpp [4:5]
+ boost/fusion/include/vector10.hpp [4:5]
+ boost/fusion/include/vector20.hpp [4:5]
+ boost/fusion/include/vector30.hpp [4:5]
+ boost/fusion/include/vector40.hpp [4:5]
+ boost/fusion/include/vector50.hpp [4:5]
+ boost/fusion/include/vector_fwd.hpp [4:5]
+ boost/fusion/include/vector_tie.hpp [4:5]
+ boost/fusion/include/view.hpp [4:5]
+ boost/fusion/include/void.hpp [4:5]
+ boost/fusion/include/zip.hpp [4:5]
+ boost/fusion/include/zip_view.hpp [4:5]
+ boost/fusion/iterator.hpp [4:5]
+ boost/fusion/iterator/advance.hpp [4:5]
+ boost/fusion/iterator/basic_iterator.hpp [4:5]
+ boost/fusion/iterator/deref_data.hpp [4:5]
+ boost/fusion/iterator/detail/segment_sequence.hpp [4:5]
+ boost/fusion/iterator/detail/segmented_equal_to.hpp [4:5]
+ boost/fusion/iterator/detail/segmented_iterator.hpp [4:5]
+ boost/fusion/iterator/detail/segmented_next_impl.hpp [4:5]
+ boost/fusion/iterator/equal_to.hpp [4:5]
+ boost/fusion/iterator/iterator_adapter.hpp [4:5]
+ boost/fusion/iterator/iterator_facade.hpp [4:5]
+ boost/fusion/iterator/key_of.hpp [4:5]
+ boost/fusion/iterator/mpl/convert_iterator.hpp [4:5]
+ boost/fusion/iterator/segmented_iterator.hpp [4:5]
+ boost/fusion/iterator/value_of_data.hpp [4:5]
+ boost/fusion/mpl.hpp [4:5]
+ boost/fusion/mpl/erase.hpp [4:5]
+ boost/fusion/mpl/erase_key.hpp [4:5]
+ boost/fusion/mpl/insert.hpp [4:5]
+ boost/fusion/mpl/insert_range.hpp [4:5]
+ boost/fusion/mpl/pop_back.hpp [4:5]
+ boost/fusion/mpl/pop_front.hpp [4:5]
+ boost/fusion/mpl/push_back.hpp [4:5]
+ boost/fusion/mpl/push_front.hpp [4:5]
+ boost/fusion/sequence.hpp [4:5]
+ boost/fusion/sequence/comparison/enable_comparison.hpp [4:5]
+ boost/fusion/sequence/comparison/equal_to.hpp [5:6]
+ boost/fusion/sequence/comparison/greater.hpp [5:6]
+ boost/fusion/sequence/comparison/greater_equal.hpp [5:6]
+ boost/fusion/sequence/comparison/less.hpp [5:6]
+ boost/fusion/sequence/comparison/less_equal.hpp [5:6]
+ boost/fusion/sequence/comparison/not_equal_to.hpp [5:6]
+ boost/fusion/sequence/convert.hpp [4:5]
+ boost/fusion/sequence/hash.hpp [4:5]
+ boost/fusion/sequence/intrinsic.hpp [4:5]
+ boost/fusion/sequence/intrinsic/at.hpp [4:5]
+ boost/fusion/sequence/intrinsic/at_c.hpp [4:5]
+ boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp [4:5]
+ boost/fusion/sequence/intrinsic/detail/segmented_begin_impl.hpp [4:5]
+ boost/fusion/sequence/intrinsic/detail/segmented_end.hpp [4:5]
+ boost/fusion/sequence/intrinsic/detail/segmented_end_impl.hpp [4:5]
+ boost/fusion/sequence/intrinsic_fwd.hpp [4:5]
+ boost/fusion/sequence/io/in.hpp [6:7]
+ boost/fusion/sequence/sequence_facade.hpp [4:5]
+ boost/fusion/support.hpp [4:5]
+ boost/fusion/support/as_const.hpp [4:5]
+ boost/fusion/support/config.hpp [5:6]
+ boost/fusion/support/detail/access.hpp [4:5]
+ boost/fusion/support/detail/and.hpp [4:5]
+ boost/fusion/support/detail/enabler.hpp [4:5]
+ boost/fusion/support/detail/index_sequence.hpp [5:6]
+ boost/fusion/support/detail/is_same_size.hpp [4:5]
+ boost/fusion/support/detail/pp_round.hpp [4:5]
+ boost/fusion/support/detail/segmented_fold_until_impl.hpp [4:5]
+ boost/fusion/support/is_sequence.hpp [4:5]
+ boost/fusion/support/iterator_base.hpp [4:5]
+ boost/fusion/support/pair.hpp [5:6]
+ boost/fusion/support/segmented_fold_until.hpp [4:5]
+ boost/fusion/support/sequence_base.hpp [5:6]
+ boost/fusion/support/tag_of.hpp [4:5]
+ boost/fusion/support/tag_of_fwd.hpp [5:6]
+ boost/fusion/support/unused.hpp [4:5]
+ boost/fusion/support/void.hpp [4:5]
+ boost/fusion/tuple/detail/make_tuple.hpp [4:5]
+ boost/fusion/tuple/detail/make_tuple.hpp [36:37]
+ boost/fusion/tuple/detail/preprocessed/make_tuple.hpp [4:5]
+ boost/fusion/tuple/detail/preprocessed/tuple.hpp [4:5]
+ boost/fusion/tuple/detail/preprocessed/tuple10_fwd.hpp [4:5]
+ boost/fusion/tuple/detail/preprocessed/tuple_fwd.hpp [4:5]
+ boost/fusion/tuple/detail/preprocessed/tuple_tie.hpp [4:5]
+ boost/fusion/tuple/detail/preprocessed/tuple_tie10.hpp [4:5]
+ boost/fusion/tuple/detail/tuple.hpp [4:5]
+ boost/fusion/tuple/detail/tuple.hpp [32:33]
+ boost/fusion/tuple/detail/tuple_expand.hpp [4:5]
+ boost/fusion/tuple/detail/tuple_fwd.hpp [4:5]
+ boost/fusion/tuple/detail/tuple_fwd.hpp [24:25]
+ boost/fusion/tuple/detail/tuple_tie.hpp [4:5]
+ boost/fusion/tuple/detail/tuple_tie.hpp [27:28]
+ boost/fusion/tuple/make_tuple.hpp [4:5]
+ boost/fusion/tuple/tuple.hpp [4:5]
+ boost/fusion/tuple/tuple_fwd.hpp [4:5]
+ boost/fusion/tuple/tuple_tie.hpp [4:5]
+ boost/fusion/view/detail/strictest_traversal.hpp [5:6]
+ boost/fusion/view/filter_view/detail/deref_data_impl.hpp [4:5]
+ boost/fusion/view/filter_view/detail/key_of_impl.hpp [4:5]
+ boost/fusion/view/filter_view/detail/value_of_data_impl.hpp [4:5]
+ boost/fusion/view/filter_view/filter_view_iterator.hpp [4:5]
+ boost/fusion/view/flatten_view.hpp [4:5]
+ boost/fusion/view/flatten_view/flatten_view.hpp [4:5]
+ boost/fusion/view/flatten_view/flatten_view_iterator.hpp [4:5]
+ boost/fusion/view/iterator_range/detail/at_impl.hpp [4:5]
+ boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp [4:5]
+ boost/fusion/view/iterator_range/detail/size_impl.hpp [4:5]
+ boost/fusion/view/iterator_range/detail/value_at_impl.hpp [4:5]
+ boost/fusion/view/iterator_range/iterator_range.hpp [4:5]
+ boost/fusion/view/joint_view/detail/deref_data_impl.hpp [4:5]
+ boost/fusion/view/joint_view/detail/key_of_impl.hpp [4:5]
+ boost/fusion/view/joint_view/detail/value_of_data_impl.hpp [4:5]
+ boost/fusion/view/joint_view/joint_view.hpp [4:5]
+ boost/fusion/view/joint_view/joint_view_fwd.hpp [4:5]
+ boost/fusion/view/joint_view/joint_view_iterator.hpp [4:5]
+ boost/fusion/view/nview/detail/advance_impl.hpp [4:5]
+ boost/fusion/view/nview/detail/begin_impl.hpp [4:5]
+ boost/fusion/view/nview/detail/cpp03/nview_impl.hpp [4:5]
+ boost/fusion/view/nview/detail/deref_impl.hpp [4:5]
+ boost/fusion/view/nview/detail/distance_impl.hpp [4:5]
+ boost/fusion/view/nview/detail/end_impl.hpp [4:5]
+ boost/fusion/view/nview/detail/equal_to_impl.hpp [4:5]
+ boost/fusion/view/nview/detail/next_impl.hpp [4:5]
+ boost/fusion/view/nview/detail/nview_impl.hpp [4:5]
+ boost/fusion/view/nview/detail/prior_impl.hpp [4:5]
+ boost/fusion/view/nview/detail/value_of_impl.hpp [4:5]
+ boost/fusion/view/repetitive_view.hpp [4:5]
+ boost/fusion/view/repetitive_view/detail/begin_impl.hpp [4:5]
+ boost/fusion/view/repetitive_view/detail/deref_impl.hpp [4:5]
+ boost/fusion/view/repetitive_view/detail/end_impl.hpp [4:5]
+ boost/fusion/view/repetitive_view/detail/next_impl.hpp [4:5]
+ boost/fusion/view/repetitive_view/detail/value_of_impl.hpp [4:5]
+ boost/fusion/view/repetitive_view/repetitive_view.hpp [4:5]
+ boost/fusion/view/repetitive_view/repetitive_view_fwd.hpp [4:5]
+ boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp [4:5]
+ boost/fusion/view/reverse_view/detail/at_impl.hpp [4:5]
+ boost/fusion/view/reverse_view/detail/deref_data_impl.hpp [4:5]
+ boost/fusion/view/reverse_view/detail/key_of_impl.hpp [4:5]
+ boost/fusion/view/reverse_view/detail/value_at_impl.hpp [4:5]
+ boost/fusion/view/reverse_view/detail/value_of_data_impl.hpp [4:5]
+ boost/fusion/view/reverse_view/reverse_view_iterator.hpp [4:5]
+ boost/fusion/view/single_view/detail/distance_impl.hpp [4:5]
+ boost/fusion/view/single_view/detail/equal_to_impl.hpp [4:5]
+ boost/fusion/view/single_view/detail/next_impl.hpp [5:6]
+ boost/fusion/view/single_view/detail/prior_impl.hpp [4:5]
+ boost/fusion/view/transform_view/detail/value_at_impl.hpp [5:6]
+ boost/fusion/view/transform_view/transform_view_iterator.hpp [4:5]
+ boost/fusion/view/zip_view/detail/value_of_impl.hpp [5:6]
+ boost/hof.hpp [4:5]
+ boost/hof/alias.hpp [4:5]
+ boost/hof/always.hpp [4:5]
+ boost/hof/apply.hpp [4:5]
+ boost/hof/apply_eval.hpp [4:5]
+ boost/hof/arg.hpp [4:5]
+ boost/hof/capture.hpp [4:5]
+ boost/hof/combine.hpp [4:5]
+ boost/hof/compose.hpp [4:5]
+ boost/hof/config.hpp [4:5]
+ boost/hof/construct.hpp [4:5]
+ boost/hof/decay.hpp [4:5]
+ boost/hof/decorate.hpp [4:5]
+ boost/hof/detail/and.hpp [4:5]
+ boost/hof/detail/callable_base.hpp [4:5]
+ boost/hof/detail/can_be_called.hpp [4:5]
+ boost/hof/detail/compressed_pair.hpp [4:5]
+ boost/hof/detail/constexpr_deduce.hpp [4:5]
+ boost/hof/detail/delegate.hpp [4:5]
+ boost/hof/detail/forward.hpp [4:5]
+ boost/hof/detail/holder.hpp [4:5]
+ boost/hof/detail/intrinsics.hpp [4:5]
+ boost/hof/detail/join.hpp [4:5]
+ boost/hof/detail/make.hpp [4:5]
+ boost/hof/detail/move.hpp [4:5]
+ boost/hof/detail/noexcept.hpp [4:5]
+ boost/hof/detail/pp.hpp [4:5]
+ boost/hof/detail/recursive_constexpr_depth.hpp [4:5]
+ boost/hof/detail/remove_rvalue_reference.hpp [4:5]
+ boost/hof/detail/result_of.hpp [4:5]
+ boost/hof/detail/result_type.hpp [4:5]
+ boost/hof/detail/seq.hpp [4:5]
+ boost/hof/detail/static_const_var.hpp [4:5]
+ boost/hof/detail/unpack_tuple.hpp [4:5]
+ boost/hof/detail/unwrap.hpp [4:5]
+ boost/hof/detail/using.hpp [4:5]
+ boost/hof/eval.hpp [4:5]
+ boost/hof/first_of.hpp [4:5]
+ boost/hof/fix.hpp [4:5]
+ boost/hof/flip.hpp [4:5]
+ boost/hof/flow.hpp [4:5]
+ boost/hof/fold.hpp [4:5]
+ boost/hof/function.hpp [4:5]
+ boost/hof/function_param_limit.hpp [4:5]
+ boost/hof/identity.hpp [4:5]
+ boost/hof/if.hpp [4:5]
+ boost/hof/implicit.hpp [4:5]
+ boost/hof/indirect.hpp [4:5]
+ boost/hof/infix.hpp [4:5]
+ boost/hof/is_invocable.hpp [4:5]
+ boost/hof/is_unpackable.hpp [4:5]
+ boost/hof/lambda.hpp [4:5]
+ boost/hof/lazy.hpp [4:5]
+ boost/hof/lift.hpp [4:5]
+ boost/hof/limit.hpp [4:5]
+ boost/hof/match.hpp [4:5]
+ boost/hof/mutable.hpp [4:5]
+ boost/hof/pack.hpp [4:5]
+ boost/hof/partial.hpp [4:5]
+ boost/hof/pipable.hpp [4:5]
+ boost/hof/placeholders.hpp [4:5]
+ boost/hof/proj.hpp [4:5]
+ boost/hof/protect.hpp [4:5]
+ boost/hof/repeat.hpp [4:5]
+ boost/hof/repeat_while.hpp [4:5]
+ boost/hof/result.hpp [4:5]
+ boost/hof/returns.hpp [4:5]
+ boost/hof/reveal.hpp [4:5]
+ boost/hof/reverse_fold.hpp [4:5]
+ boost/hof/rotate.hpp [4:5]
+ boost/hof/static.hpp [4:5]
+ boost/hof/tap.hpp [4:5]
+ boost/hof/unpack.hpp [4:5]
+ boost/hof/unpack_sequence.hpp [4:5]
+ boost/hof/version.hpp [4:5]
+ boost/phoenix.hpp [5:6]
+ boost/phoenix/bind.hpp [4:5]
+ boost/phoenix/bind/bind_function.hpp [4:5]
+ boost/phoenix/bind/bind_function_object.hpp [4:5]
+ boost/phoenix/bind/bind_member_function.hpp [4:5]
+ boost/phoenix/bind/bind_member_variable.hpp [5:6]
+ boost/phoenix/bind/detail/cpp03/bind_member_function.hpp [5:6]
+ boost/phoenix/bind/detail/member_variable.hpp [4:5]
+ boost/phoenix/config.hpp [7:8]
+ boost/phoenix/core/actor.hpp [7:8]
+ boost/phoenix/core/argument.hpp [6:7]
+ boost/phoenix/core/argument.hpp [89:90]
+ boost/phoenix/core/argument.hpp [120:121]
+ boost/phoenix/core/arity.hpp [5:6]
+ boost/phoenix/core/call.hpp [5:6]
+ boost/phoenix/core/debug.hpp [6:7]
+ boost/phoenix/core/detail/argument.hpp [6:7]
+ boost/phoenix/core/detail/cpp03/actor_operator.hpp [27:28]
+ boost/phoenix/core/detail/cpp03/actor_result_of.hpp [28:29]
+ boost/phoenix/core/detail/cpp03/call.hpp [24:25]
+ boost/phoenix/core/detail/cpp03/expression.hpp [22:23]
+ boost/phoenix/core/detail/cpp03/function_equal.hpp [5:6]
+ boost/phoenix/core/detail/cpp03/function_equal.hpp [25:26]
+ boost/phoenix/core/detail/cpp03/function_eval.hpp [15:16]
+ boost/phoenix/core/detail/cpp03/function_eval_expr.hpp [4:5]
+ boost/phoenix/core/detail/cpp03/function_eval_expr.hpp [20:21]
+ boost/phoenix/core/detail/cpp03/phx2_result.hpp [4:5]
+ boost/phoenix/core/detail/cpp03/phx2_result.hpp [26:27]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_operator.hpp [4:5]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of.hpp [4:5]
+ boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_10.hpp [5:6]
+ boost/phoenix/core/detail/cpp03/preprocessed/call.hpp [4:5]
+ boost/phoenix/core/detail/cpp03/preprocessed/expression.hpp [4:5]
+ boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_10.hpp [4:5]
+ boost/phoenix/core/detail/function_eval.hpp [5:6]
+ boost/phoenix/core/detail/index_sequence.hpp [4:5]
+ boost/phoenix/core/detail/phx2_result.hpp [4:5]
+ boost/phoenix/core/environment.hpp [5:6]
+ boost/phoenix/core/function_equal.hpp [5:6]
+ boost/phoenix/core/is_actor.hpp [4:5]
+ boost/phoenix/core/is_value.hpp [5:6]
+ boost/phoenix/core/nothing.hpp [4:5]
+ boost/phoenix/core/reference.hpp [5:6]
+ boost/phoenix/core/terminal.hpp [5:6]
+ boost/phoenix/core/terminal_fwd.hpp [5:6]
+ boost/phoenix/core/value.hpp [5:6]
+ boost/phoenix/core/visit_each.hpp [5:6]
+ boost/phoenix/function.hpp [4:5]
+ boost/phoenix/function/adapt_callable.hpp [5:6]
+ boost/phoenix/function/adapt_function.hpp [6:7]
+ boost/phoenix/function/detail/cpp03/function_operator.hpp [24:25]
+ boost/phoenix/function/detail/cpp03/preprocessed/function_operator.hpp [4:5]
+ boost/phoenix/function/detail/cpp03/preprocessed/function_operator_10.hpp [5:6]
+ boost/phoenix/function/function.hpp [6:7]
+ boost/phoenix/function/lazy_list.hpp [37:38]
+ boost/phoenix/function/lazy_operator.hpp [31:32]
+ boost/phoenix/function/lazy_prelude.hpp [119:120]
+ boost/phoenix/function/lazy_reuse.hpp [28:29]
+ boost/phoenix/function/lazy_signature.hpp [38:39]
+ boost/phoenix/function/lazy_smart.hpp [15:16]
+ boost/phoenix/fusion.hpp [5:6]
+ boost/phoenix/fusion/at.hpp [6:7]
+ boost/phoenix/object.hpp [5:6]
+ boost/phoenix/object/const_cast.hpp [5:6]
+ boost/phoenix/object/construct.hpp [5:6]
+ boost/phoenix/object/delete.hpp [5:6]
+ boost/phoenix/object/detail/cpp03/construct.hpp [24:25]
+ boost/phoenix/object/detail/cpp03/construct_eval.hpp [26:27]
+ boost/phoenix/object/detail/cpp03/construct_expr.hpp [14:15]
+ boost/phoenix/object/detail/cpp03/new.hpp [24:25]
+ boost/phoenix/object/detail/cpp03/new_eval.hpp [26:27]
+ boost/phoenix/object/detail/cpp03/new_expr.hpp [14:15]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct.hpp [4:5]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_10.hpp [5:6]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_eval.hpp [4:5]
+ boost/phoenix/object/detail/cpp03/preprocessed/construct_expr.hpp [4:5]
+ boost/phoenix/object/detail/cpp03/preprocessed/new.hpp [4:5]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_10.hpp [5:6]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_eval.hpp [4:5]
+ boost/phoenix/object/detail/cpp03/preprocessed/new_expr.hpp [4:5]
+ boost/phoenix/object/detail/target.hpp [5:6]
+ boost/phoenix/object/dynamic_cast.hpp [5:6]
+ boost/phoenix/object/new.hpp [5:6]
+ boost/phoenix/object/reinterpret_cast.hpp [5:6]
+ boost/phoenix/object/static_cast.hpp [5:6]
+ boost/phoenix/operator.hpp [5:6]
+ boost/phoenix/operator/arithmetic.hpp [5:6]
+ boost/phoenix/operator/bitwise.hpp [5:6]
+ boost/phoenix/operator/comparison.hpp [5:6]
+ boost/phoenix/operator/detail/cpp03/mem_fun_ptr_eval.hpp [19:20]
+ boost/phoenix/operator/detail/cpp03/mem_fun_ptr_eval_result_of.hpp [19:20]
+ boost/phoenix/operator/detail/cpp03/mem_fun_ptr_expr.hpp [13:14]
+ boost/phoenix/operator/detail/cpp03/mem_fun_ptr_gen.hpp [18:19]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval.hpp [4:5]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_10.hpp [6:7]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of.hpp [4:5]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr.hpp [4:5]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen.hpp [4:5]
+ boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_10.hpp [5:6]
+ boost/phoenix/operator/detail/define_operator.hpp [5:6]
+ boost/phoenix/operator/detail/undef_operator.hpp [4:5]
+ boost/phoenix/operator/if_else.hpp [5:6]
+ boost/phoenix/operator/io.hpp [5:6]
+ boost/phoenix/operator/logical.hpp [5:6]
+ boost/phoenix/operator/member.hpp [6:7]
+ boost/phoenix/operator/self.hpp [5:6]
+ boost/phoenix/phoenix.hpp [5:6]
+ boost/phoenix/scope.hpp [5:6]
+ boost/phoenix/scope/detail/cpp03/dynamic.hpp [28:29]
+ boost/phoenix/scope/detail/cpp03/lambda.hpp [19:20]
+ boost/phoenix/scope/detail/cpp03/local_gen.hpp [6:7]
+ boost/phoenix/scope/detail/cpp03/preprocessed/dynamic.hpp [4:5]
+ boost/phoenix/scope/detail/local_gen.hpp [4:5]
+ boost/phoenix/scope/detail/local_variable.hpp [6:7]
+ boost/phoenix/scope/dynamic.hpp [6:7]
+ boost/phoenix/scope/lambda.hpp [7:8]
+ boost/phoenix/scope/let.hpp [7:8]
+ boost/phoenix/scope/local_variable.hpp [5:6]
+ boost/phoenix/scope/scoped_environment.hpp [5:6]
+ boost/phoenix/statement.hpp [4:5]
+ boost/phoenix/statement/detail/catch_push_back.hpp [23:24]
+ boost/phoenix/statement/detail/preprocessed/catch_push_back.hpp [4:5]
+ boost/phoenix/statement/detail/preprocessed/switch.hpp [4:5]
+ boost/phoenix/statement/detail/preprocessed/try_catch_eval.hpp [4:5]
+ boost/phoenix/statement/detail/preprocessed/try_catch_expression.hpp [4:5]
+ boost/phoenix/statement/detail/preprocessed/try_catch_expression_10.hpp [5:6]
+ boost/phoenix/statement/detail/preprocessed/try_catch_expression_20.hpp [5:6]
+ boost/phoenix/statement/detail/switch.hpp [28:29]
+ boost/phoenix/statement/detail/try_catch_eval.hpp [28:29]
+ boost/phoenix/statement/detail/try_catch_expression.hpp [28:29]
+ boost/phoenix/statement/do_while.hpp [5:6]
+ boost/phoenix/statement/for.hpp [5:6]
+ boost/phoenix/statement/if.hpp [5:6]
+ boost/phoenix/statement/sequence.hpp [6:7]
+ boost/phoenix/statement/switch.hpp [5:6]
+ boost/phoenix/statement/throw.hpp [6:7]
+ boost/phoenix/statement/try_catch.hpp [6:7]
+ boost/phoenix/statement/while.hpp [5:6]
+ boost/phoenix/stl/cmath.hpp [4:5]
+ boost/phoenix/stl/container/container.hpp [5:6]
+ boost/phoenix/support/detail/iterate.hpp [4:5]
+ boost/phoenix/support/detail/iterate_define.hpp [4:5]
+ boost/phoenix/support/detail/iterate_undef.hpp [4:5]
+ boost/phoenix/support/iterate.hpp [4:5]
+ boost/phoenix/support/vector.hpp [44:45]
+ boost/phoenix/version.hpp [6:7]
+ boost/spirit/home/karma/detail/pass_container.hpp [5:6]
+ boost/spirit/home/lex/lexer/lexertl/wrap_action.hpp [6:7]
+ boost/spirit/home/qi.hpp [4:5]
+ boost/spirit/home/qi/action/action.hpp [4:5]
+ boost/spirit/home/qi/auto.hpp [4:5]
+ boost/spirit/home/qi/auxiliary.hpp [5:6]
+ boost/spirit/home/qi/auxiliary/attr.hpp [5:6]
+ boost/spirit/home/qi/auxiliary/eoi.hpp [5:6]
+ boost/spirit/home/qi/auxiliary/eol.hpp [5:6]
+ boost/spirit/home/qi/auxiliary/eps.hpp [4:5]
+ boost/spirit/home/qi/auxiliary/lazy.hpp [4:5]
+ boost/spirit/home/qi/binary.hpp [4:5]
+ boost/spirit/home/qi/binary/binary.hpp [5:6]
+ boost/spirit/home/qi/char/char.hpp [6:7]
+ boost/spirit/home/qi/char/char_class.hpp [4:5]
+ boost/spirit/home/qi/char/char_parser.hpp [4:5]
+ boost/spirit/home/qi/copy.hpp [4:5]
+ boost/spirit/home/qi/detail/alternative_function.hpp [4:5]
+ boost/spirit/home/qi/detail/assign_to.hpp [6:7]
+ boost/spirit/home/qi/detail/construct.hpp [5:6]
+ boost/spirit/home/qi/detail/expect_function.hpp [4:5]
+ boost/spirit/home/qi/detail/fail_function.hpp [4:5]
+ boost/spirit/home/qi/detail/parse.hpp [4:5]
+ boost/spirit/home/qi/detail/parse_auto.hpp [4:5]
+ boost/spirit/home/qi/detail/pass_container.hpp [5:6]
+ boost/spirit/home/qi/detail/pass_function.hpp [4:5]
+ boost/spirit/home/qi/detail/permute_function.hpp [4:5]
+ boost/spirit/home/qi/detail/string_parse.hpp [4:5]
+ boost/spirit/home/qi/directive.hpp [4:5]
+ boost/spirit/home/qi/directive/as.hpp [6:7]
+ boost/spirit/home/qi/directive/encoding.hpp [4:5]
+ boost/spirit/home/qi/directive/hold.hpp [4:5]
+ boost/spirit/home/qi/directive/lexeme.hpp [4:5]
+ boost/spirit/home/qi/directive/matches.hpp [4:5]
+ boost/spirit/home/qi/directive/no_case.hpp [4:5]
+ boost/spirit/home/qi/directive/no_skip.hpp [5:6]
+ boost/spirit/home/qi/directive/omit.hpp [4:5]
+ boost/spirit/home/qi/directive/raw.hpp [4:5]
+ boost/spirit/home/qi/directive/repeat.hpp [5:6]
+ boost/spirit/home/qi/directive/skip.hpp [4:5]
+ boost/spirit/home/qi/domain.hpp [4:5]
+ boost/spirit/home/qi/meta_compiler.hpp [4:5]
+ boost/spirit/home/qi/nonterminal.hpp [4:5]
+ boost/spirit/home/qi/nonterminal/debug_handler.hpp [4:5]
+ boost/spirit/home/qi/nonterminal/debug_handler_state.hpp [4:5]
+ boost/spirit/home/qi/nonterminal/detail/fcall.hpp [4:5]
+ boost/spirit/home/qi/nonterminal/detail/parameterized.hpp [5:6]
+ boost/spirit/home/qi/nonterminal/detail/parser_binder.hpp [4:5]
+ boost/spirit/home/qi/nonterminal/error_handler.hpp [4:5]
+ boost/spirit/home/qi/nonterminal/grammar.hpp [4:5]
+ boost/spirit/home/qi/nonterminal/rule.hpp [4:5]
+ boost/spirit/home/qi/nonterminal/simple_trace.hpp [5:6]
+ boost/spirit/home/qi/nonterminal/success_handler.hpp [4:5]
+ boost/spirit/home/qi/numeric.hpp [4:5]
+ boost/spirit/home/qi/numeric/bool.hpp [5:6]
+ boost/spirit/home/qi/numeric/bool_policies.hpp [4:5]
+ boost/spirit/home/qi/numeric/detail/numeric_utils.hpp [8:9]
+ boost/spirit/home/qi/numeric/detail/real_impl.hpp [6:7]
+ boost/spirit/home/qi/numeric/int.hpp [5:6]
+ boost/spirit/home/qi/numeric/numeric_utils.hpp [5:6]
+ boost/spirit/home/qi/numeric/real.hpp [5:6]
+ boost/spirit/home/qi/numeric/real_policies.hpp [5:6]
+ boost/spirit/home/qi/numeric/uint.hpp [6:7]
+ boost/spirit/home/qi/operator.hpp [4:5]
+ boost/spirit/home/qi/operator/alternative.hpp [5:6]
+ boost/spirit/home/qi/operator/and_predicate.hpp [4:5]
+ boost/spirit/home/qi/operator/difference.hpp [4:5]
+ boost/spirit/home/qi/operator/expect.hpp [5:6]
+ boost/spirit/home/qi/operator/kleene.hpp [5:6]
+ boost/spirit/home/qi/operator/list.hpp [5:6]
+ boost/spirit/home/qi/operator/not_predicate.hpp [4:5]
+ boost/spirit/home/qi/operator/optional.hpp [5:6]
+ boost/spirit/home/qi/operator/permutation.hpp [4:5]
+ boost/spirit/home/qi/operator/plus.hpp [5:6]
+ boost/spirit/home/qi/operator/sequence.hpp [5:6]
+ boost/spirit/home/qi/operator/sequence_base.hpp [5:6]
+ boost/spirit/home/qi/operator/sequential_or.hpp [4:5]
+ boost/spirit/home/qi/parse.hpp [5:6]
+ boost/spirit/home/qi/parser.hpp [4:5]
+ boost/spirit/home/qi/reference.hpp [4:5]
+ boost/spirit/home/qi/skip_flag.hpp [4:5]
+ boost/spirit/home/qi/skip_over.hpp [4:5]
+ boost/spirit/home/qi/stream.hpp [4:5]
+ boost/spirit/home/qi/stream/detail/iterator_source.hpp [4:5]
+ boost/spirit/home/qi/stream/detail/match_manip.hpp [4:5]
+ boost/spirit/home/qi/stream/detail/match_manip_auto.hpp [4:5]
+ boost/spirit/home/qi/stream/match_manip.hpp [5:6]
+ boost/spirit/home/qi/stream/match_manip_attr.hpp [5:6]
+ boost/spirit/home/qi/stream/stream.hpp [4:5]
+ boost/spirit/home/qi/string.hpp [4:5]
+ boost/spirit/home/qi/string/detail/tst.hpp [4:5]
+ boost/spirit/home/qi/string/lit.hpp [6:7]
+ boost/spirit/home/qi/string/symbols.hpp [4:5]
+ boost/spirit/home/qi/string/tst.hpp [4:5]
+ boost/spirit/home/qi/string/tst_map.hpp [4:5]
+ boost/spirit/home/qi/what.hpp [4:5]
+ boost/spirit/home/support.hpp [4:5]
+ boost/spirit/home/support/action_dispatch.hpp [6:7]
+ boost/spirit/home/support/algorithm/any.hpp [4:5]
+ boost/spirit/home/support/algorithm/any_if.hpp [5:6]
+ boost/spirit/home/support/algorithm/any_if_ns.hpp [5:6]
+ boost/spirit/home/support/algorithm/any_if_ns_so.hpp [5:6]
+ boost/spirit/home/support/algorithm/any_ns.hpp [4:5]
+ boost/spirit/home/support/algorithm/any_ns_so.hpp [4:5]
+ boost/spirit/home/support/argument.hpp [6:7]
+ boost/spirit/home/support/argument_expression.hpp [6:7]
+ boost/spirit/home/support/attributes.hpp [5:6]
+ boost/spirit/home/support/attributes_fwd.hpp [6:7]
+ boost/spirit/home/support/auto.hpp [4:5]
+ boost/spirit/home/support/char_class.hpp [5:6]
+ boost/spirit/home/support/char_encoding/ascii.hpp [5:6]
+ boost/spirit/home/support/char_encoding/iso8859_1.hpp [5:6]
+ boost/spirit/home/support/char_encoding/standard.hpp [5:6]
+ boost/spirit/home/support/char_encoding/standard_wide.hpp [5:6]
+ boost/spirit/home/support/char_encoding/unicode.hpp [5:6]
+ boost/spirit/home/support/char_encoding/unicode/category_table.hpp [4:5]
+ boost/spirit/home/support/char_encoding/unicode/create_tables.cpp [4:5]
+ boost/spirit/home/support/char_encoding/unicode/lowercase_table.hpp [4:5]
+ boost/spirit/home/support/char_encoding/unicode/query.hpp [4:5]
+ boost/spirit/home/support/char_encoding/unicode/script_table.hpp [4:5]
+ boost/spirit/home/support/char_encoding/unicode/uppercase_table.hpp [4:5]
+ boost/spirit/home/support/char_set/range.hpp [4:5]
+ boost/spirit/home/support/char_set/range_functions.hpp [4:5]
+ boost/spirit/home/support/char_set/range_run.hpp [4:5]
+ boost/spirit/home/support/char_set/range_run_impl.hpp [4:5]
+ boost/spirit/home/support/container.hpp [6:7]
+ boost/spirit/home/support/context.hpp [6:7]
+ boost/spirit/home/support/detail/as_variant.hpp [4:5]
+ boost/spirit/home/support/detail/hold_any.hpp [7:8]
+ boost/spirit/home/support/detail/is_spirit_tag.hpp [4:5]
+ boost/spirit/home/support/detail/make_vector.hpp [4:5]
+ boost/spirit/home/support/detail/pow10.hpp [6:7]
+ boost/spirit/home/support/detail/sign.hpp [6:7]
+ boost/spirit/home/support/detail/what_function.hpp [4:5]
+ boost/spirit/home/support/extended_variant.hpp [4:5]
+ boost/spirit/home/support/handles_container.hpp [4:5]
+ boost/spirit/home/support/has_semantic_action.hpp [4:5]
+ boost/spirit/home/support/info.hpp [4:5]
+ boost/spirit/home/support/iterators/line_pos_iterator.hpp [6:7]
+ boost/spirit/home/support/iterators/multi_pass_fwd.hpp [6:7]
+ boost/spirit/home/support/lazy.hpp [4:5]
+ boost/spirit/home/support/nonterminal/expand_arg.hpp [4:5]
+ boost/spirit/home/support/nonterminal/extract_param.hpp [6:7]
+ boost/spirit/home/support/nonterminal/locals.hpp [5:6]
+ boost/spirit/home/support/sequence_base_id.hpp [4:5]
+ boost/spirit/home/support/string_traits.hpp [6:7]
+ boost/spirit/home/support/terminal.hpp [6:7]
+ boost/spirit/home/support/terminal_expression.hpp [6:7]
+ boost/spirit/home/support/unused.hpp [5:6]
+ boost/spirit/home/support/utf8.hpp [4:5]
+ boost/spirit/home/support/utree.hpp [4:5]
+ boost/spirit/home/support/utree/detail/utree_detail1.hpp [6:7]
+ boost/spirit/home/support/utree/detail/utree_detail2.hpp [6:7]
+ boost/spirit/home/support/utree/operators.hpp [6:7]
+ boost/spirit/home/support/utree/utree.hpp [6:7]
+ boost/spirit/home/support/utree/utree_traits.hpp [6:7]
+ boost/spirit/home/support/utree/utree_traits_fwd.hpp [4:5]
+ boost/spirit/home/x3.hpp [4:5]
+ boost/spirit/home/x3/auxiliary.hpp [5:6]
+ boost/spirit/home/x3/auxiliary/any_parser.hpp [5:6]
+ boost/spirit/home/x3/auxiliary/attr.hpp [6:7]
+ boost/spirit/home/x3/auxiliary/eoi.hpp [5:6]
+ boost/spirit/home/x3/auxiliary/eol.hpp [5:6]
+ boost/spirit/home/x3/auxiliary/eps.hpp [4:5]
+ boost/spirit/home/x3/auxiliary/guard.hpp [4:5]
+ boost/spirit/home/x3/binary.hpp [4:5]
+ boost/spirit/home/x3/binary/binary.hpp [5:6]
+ boost/spirit/home/x3/char.hpp [4:5]
+ boost/spirit/home/x3/char/any_char.hpp [4:5]
+ boost/spirit/home/x3/char/char.hpp [4:5]
+ boost/spirit/home/x3/char/char_class.hpp [4:5]
+ boost/spirit/home/x3/char/char_class_tags.hpp [4:5]
+ boost/spirit/home/x3/char/char_parser.hpp [4:5]
+ boost/spirit/home/x3/char/char_set.hpp [4:5]
+ boost/spirit/home/x3/char/detail/cast_char.hpp [5:6]
+ boost/spirit/home/x3/char/literal_char.hpp [4:5]
+ boost/spirit/home/x3/char/negated_char_parser.hpp [4:5]
+ boost/spirit/home/x3/char/unicode.hpp [4:5]
+ boost/spirit/home/x3/core.hpp [4:5]
+ boost/spirit/home/x3/core/action.hpp [4:5]
+ boost/spirit/home/x3/core/call.hpp [4:5]
+ boost/spirit/home/x3/core/detail/parse_into_container.hpp [4:5]
+ boost/spirit/home/x3/core/parse.hpp [4:5]
+ boost/spirit/home/x3/core/parser.hpp [5:6]
+ boost/spirit/home/x3/core/proxy.hpp [4:5]
+ boost/spirit/home/x3/core/skip_over.hpp [4:5]
+ boost/spirit/home/x3/directive.hpp [4:5]
+ boost/spirit/home/x3/directive/confix.hpp [5:6]
+ boost/spirit/home/x3/directive/expect.hpp [4:5]
+ boost/spirit/home/x3/directive/lexeme.hpp [4:5]
+ boost/spirit/home/x3/directive/matches.hpp [5:6]
+ boost/spirit/home/x3/directive/no_case.hpp [4:5]
+ boost/spirit/home/x3/directive/no_skip.hpp [6:7]
+ boost/spirit/home/x3/directive/omit.hpp [4:5]
+ boost/spirit/home/x3/directive/raw.hpp [4:5]
+ boost/spirit/home/x3/directive/repeat.hpp [6:7]
+ boost/spirit/home/x3/directive/seek.hpp [5:6]
+ boost/spirit/home/x3/directive/skip.hpp [5:6]
+ boost/spirit/home/x3/directive/with.hpp [4:5]
+ boost/spirit/home/x3/nonterminal.hpp [4:5]
+ boost/spirit/home/x3/nonterminal/debug_handler_state.hpp [4:5]
+ boost/spirit/home/x3/nonterminal/detail/rule.hpp [4:5]
+ boost/spirit/home/x3/nonterminal/detail/transform_attribute.hpp [5:6]
+ boost/spirit/home/x3/nonterminal/rule.hpp [4:5]
+ boost/spirit/home/x3/nonterminal/simple_trace.hpp [5:6]
+ boost/spirit/home/x3/numeric.hpp [4:5]
+ boost/spirit/home/x3/numeric/bool.hpp [5:6]
+ boost/spirit/home/x3/numeric/bool_policies.hpp [5:6]
+ boost/spirit/home/x3/numeric/int.hpp [4:5]
+ boost/spirit/home/x3/numeric/real.hpp [4:5]
+ boost/spirit/home/x3/numeric/real_policies.hpp [5:6]
+ boost/spirit/home/x3/numeric/uint.hpp [5:6]
+ boost/spirit/home/x3/operator.hpp [4:5]
+ boost/spirit/home/x3/operator/alternative.hpp [4:5]
+ boost/spirit/home/x3/operator/and_predicate.hpp [4:5]
+ boost/spirit/home/x3/operator/detail/alternative.hpp [4:5]
+ boost/spirit/home/x3/operator/detail/sequence.hpp [4:5]
+ boost/spirit/home/x3/operator/difference.hpp [4:5]
+ boost/spirit/home/x3/operator/kleene.hpp [5:6]
+ boost/spirit/home/x3/operator/list.hpp [5:6]
+ boost/spirit/home/x3/operator/not_predicate.hpp [4:5]
+ boost/spirit/home/x3/operator/optional.hpp [5:6]
+ boost/spirit/home/x3/operator/plus.hpp [5:6]
+ boost/spirit/home/x3/operator/sequence.hpp [4:5]
+ boost/spirit/home/x3/string.hpp [4:5]
+ boost/spirit/home/x3/string/detail/no_case_string_parse.hpp [4:5]
+ boost/spirit/home/x3/string/detail/string_parse.hpp [4:5]
+ boost/spirit/home/x3/string/detail/tst.hpp [4:5]
+ boost/spirit/home/x3/string/literal_string.hpp [4:5]
+ boost/spirit/home/x3/string/symbols.hpp [5:6]
+ boost/spirit/home/x3/string/tst.hpp [4:5]
+ boost/spirit/home/x3/string/tst_map.hpp [4:5]
+ boost/spirit/home/x3/support/ast/position_tagged.hpp [4:5]
+ boost/spirit/home/x3/support/ast/variant.hpp [4:5]
+ boost/spirit/home/x3/support/context.hpp [5:6]
+ boost/spirit/home/x3/support/no_case.hpp [4:5]
+ boost/spirit/home/x3/support/numeric_utils/detail/extract_int.hpp [8:9]
+ boost/spirit/home/x3/support/numeric_utils/extract_int.hpp [5:6]
+ boost/spirit/home/x3/support/numeric_utils/extract_real.hpp [6:7]
+ boost/spirit/home/x3/support/numeric_utils/pow10.hpp [6:7]
+ boost/spirit/home/x3/support/numeric_utils/sign.hpp [6:7]
+ boost/spirit/home/x3/support/subcontext.hpp [6:7]
+ boost/spirit/home/x3/support/traits/attribute_category.hpp [5:6]
+ boost/spirit/home/x3/support/traits/attribute_of.hpp [6:7]
+ boost/spirit/home/x3/support/traits/attribute_type.hpp [5:6]
+ boost/spirit/home/x3/support/traits/container_traits.hpp [6:7]
+ boost/spirit/home/x3/support/traits/handles_container.hpp [5:6]
+ boost/spirit/home/x3/support/traits/has_attribute.hpp [6:7]
+ boost/spirit/home/x3/support/traits/is_parser.hpp [5:6]
+ boost/spirit/home/x3/support/traits/is_range.hpp [5:6]
+ boost/spirit/home/x3/support/traits/is_substitute.hpp [5:6]
+ boost/spirit/home/x3/support/traits/is_variant.hpp [5:6]
+ boost/spirit/home/x3/support/traits/make_attribute.hpp [6:7]
+ boost/spirit/home/x3/support/traits/move_to.hpp [6:7]
+ boost/spirit/home/x3/support/traits/optional_traits.hpp [6:7]
+ boost/spirit/home/x3/support/traits/print_attribute.hpp [5:6]
+ boost/spirit/home/x3/support/traits/print_token.hpp [5:6]
+ boost/spirit/home/x3/support/traits/string_traits.hpp [6:7]
+ boost/spirit/home/x3/support/traits/transform_attribute.hpp [6:7]
+ boost/spirit/home/x3/support/traits/tuple_traits.hpp [4:5]
+ boost/spirit/home/x3/support/traits/value_traits.hpp [6:7]
+ boost/spirit/home/x3/support/traits/variant_find_substitute.hpp [5:6]
+ boost/spirit/home/x3/support/traits/variant_has_substitute.hpp [5:6]
+ boost/spirit/home/x3/support/unused.hpp [5:6]
+ boost/spirit/home/x3/support/utility/annotate_on_success.hpp [4:5]
+ boost/spirit/home/x3/support/utility/error_reporting.hpp [4:5]
+ boost/spirit/home/x3/support/utility/is_callable.hpp [4:5]
+ boost/spirit/home/x3/support/utility/lambda_visitor.hpp [4:5]
+ boost/spirit/home/x3/support/utility/sfinae.hpp [5:6]
+ boost/spirit/home/x3/support/utility/testing.hpp [4:5]
+ boost/spirit/home/x3/support/utility/unrefcv.hpp [4:5]
+ boost/spirit/home/x3/support/utility/utf8.hpp [4:5]
+ boost/spirit/include/karma.hpp [6:7]
+ boost/spirit/include/karma_action.hpp [6:7]
+ boost/spirit/include/karma_alternative.hpp [6:7]
+ boost/spirit/include/karma_and_predicate.hpp [6:7]
+ boost/spirit/include/karma_as.hpp [7:8]
+ boost/spirit/include/karma_attr_cast.hpp [6:7]
+ boost/spirit/include/karma_auto.hpp [6:7]
+ boost/spirit/include/karma_auxiliary.hpp [6:7]
+ boost/spirit/include/karma_binary.hpp [6:7]
+ boost/spirit/include/karma_bool.hpp [6:7]
+ boost/spirit/include/karma_buffer.hpp [6:7]
+ boost/spirit/include/karma_center_alignment.hpp [6:7]
+ boost/spirit/include/karma_char.hpp [6:7]
+ boost/spirit/include/karma_char_.hpp [6:7]
+ boost/spirit/include/karma_char_class.hpp [6:7]
+ boost/spirit/include/karma_columns.hpp [6:7]
+ boost/spirit/include/karma_delimit.hpp [6:7]
+ boost/spirit/include/karma_directive.hpp [6:7]
+ boost/spirit/include/karma_domain.hpp [6:7]
+ boost/spirit/include/karma_duplicate.hpp [6:7]
+ boost/spirit/include/karma_eol.hpp [6:7]
+ boost/spirit/include/karma_eps.hpp [6:7]
+ boost/spirit/include/karma_format.hpp [6:7]
+ boost/spirit/include/karma_format_attr.hpp [6:7]
+ boost/spirit/include/karma_format_auto.hpp [6:7]
+ boost/spirit/include/karma_generate.hpp [6:7]
+ boost/spirit/include/karma_generate_attr.hpp [6:7]
+ boost/spirit/include/karma_generate_auto.hpp [6:7]
+ boost/spirit/include/karma_grammar.hpp [6:7]
+ boost/spirit/include/karma_int.hpp [6:7]
+ boost/spirit/include/karma_kleene.hpp [6:7]
+ boost/spirit/include/karma_lazy.hpp [6:7]
+ boost/spirit/include/karma_left_alignment.hpp [6:7]
+ boost/spirit/include/karma_list.hpp [6:7]
+ boost/spirit/include/karma_maxwidth.hpp [6:7]
+ boost/spirit/include/karma_no_delimit.hpp [6:7]
+ boost/spirit/include/karma_nonterminal.hpp [6:7]
+ boost/spirit/include/karma_not_predicate.hpp [6:7]
+ boost/spirit/include/karma_numeric.hpp [6:7]
+ boost/spirit/include/karma_omit.hpp [6:7]
+ boost/spirit/include/karma_operator.hpp [6:7]
+ boost/spirit/include/karma_optional.hpp [6:7]
+ boost/spirit/include/karma_phoenix_attributes.hpp [6:7]
+ boost/spirit/include/karma_plus.hpp [6:7]
+ boost/spirit/include/karma_real.hpp [6:7]
+ boost/spirit/include/karma_repeat.hpp [6:7]
+ boost/spirit/include/karma_right_alignment.hpp [6:7]
+ boost/spirit/include/karma_rule.hpp [6:7]
+ boost/spirit/include/karma_sequence.hpp [6:7]
+ boost/spirit/include/karma_stream.hpp [6:7]
+ boost/spirit/include/karma_strict_relaxed.hpp [6:7]
+ boost/spirit/include/karma_string.hpp [6:7]
+ boost/spirit/include/karma_symbols.hpp [6:7]
+ boost/spirit/include/karma_uint.hpp [6:7]
+ boost/spirit/include/karma_upper_lower_case.hpp [6:7]
+ boost/spirit/include/karma_verbatim.hpp [6:7]
+ boost/spirit/include/karma_what.hpp [6:7]
+ boost/spirit/include/lex.hpp [6:7]
+ boost/spirit/include/lex_char_token_def.hpp [6:7]
+ boost/spirit/include/lex_domain.hpp [6:7]
+ boost/spirit/include/lex_generate_static_lexertl.hpp [6:7]
+ boost/spirit/include/lex_lexer.hpp [6:7]
+ boost/spirit/include/lex_lexertl.hpp [6:7]
+ boost/spirit/include/lex_lexertl_position_token.hpp [6:7]
+ boost/spirit/include/lex_lexertl_token.hpp [6:7]
+ boost/spirit/include/lex_plain_token.hpp [6:7]
+ boost/spirit/include/lex_primitives.hpp [6:7]
+ boost/spirit/include/lex_static_lexertl.hpp [6:7]
+ boost/spirit/include/lex_tokenize_and_parse.hpp [6:7]
+ boost/spirit/include/lex_tokenize_and_parse_attr.hpp [6:7]
+ boost/spirit/include/phoenix.hpp [6:7]
+ boost/spirit/include/phoenix_algorithm.hpp [6:7]
+ boost/spirit/include/phoenix_bind.hpp [6:7]
+ boost/spirit/include/phoenix_container.hpp [6:7]
+ boost/spirit/include/phoenix_core.hpp [6:7]
+ boost/spirit/include/phoenix_function.hpp [6:7]
+ boost/spirit/include/phoenix_fusion.hpp [6:7]
+ boost/spirit/include/phoenix_limits.hpp [6:7]
+ boost/spirit/include/phoenix_object.hpp [6:7]
+ boost/spirit/include/phoenix_operator.hpp [6:7]
+ boost/spirit/include/phoenix_scope.hpp [6:7]
+ boost/spirit/include/phoenix_statement.hpp [6:7]
+ boost/spirit/include/phoenix_stl.hpp [6:7]
+ boost/spirit/include/phoenix_version.hpp [6:7]
+ boost/spirit/include/qi.hpp [6:7]
+ boost/spirit/include/qi_action.hpp [6:7]
+ boost/spirit/include/qi_alternative.hpp [6:7]
+ boost/spirit/include/qi_and_predicate.hpp [6:7]
+ boost/spirit/include/qi_as.hpp [7:8]
+ boost/spirit/include/qi_as_string.hpp [6:7]
+ boost/spirit/include/qi_attr.hpp [6:7]
+ boost/spirit/include/qi_attr_cast.hpp [6:7]
+ boost/spirit/include/qi_auto.hpp [6:7]
+ boost/spirit/include/qi_auxiliary.hpp [6:7]
+ boost/spirit/include/qi_binary.hpp [6:7]
+ boost/spirit/include/qi_bool.hpp [6:7]
+ boost/spirit/include/qi_char.hpp [6:7]
+ boost/spirit/include/qi_char_.hpp [6:7]
+ boost/spirit/include/qi_char_class.hpp [6:7]
+ boost/spirit/include/qi_copy.hpp [5:6]
+ boost/spirit/include/qi_core.hpp [6:7]
+ boost/spirit/include/qi_difference.hpp [6:7]
+ boost/spirit/include/qi_directive.hpp [6:7]
+ boost/spirit/include/qi_domain.hpp [6:7]
+ boost/spirit/include/qi_eoi.hpp [6:7]
+ boost/spirit/include/qi_eol.hpp [6:7]
+ boost/spirit/include/qi_eps.hpp [6:7]
+ boost/spirit/include/qi_expect.hpp [6:7]
+ boost/spirit/include/qi_grammar.hpp [6:7]
+ boost/spirit/include/qi_hold.hpp [6:7]
+ boost/spirit/include/qi_int.hpp [6:7]
+ boost/spirit/include/qi_kleene.hpp [6:7]
+ boost/spirit/include/qi_lazy.hpp [6:7]
+ boost/spirit/include/qi_lexeme.hpp [6:7]
+ boost/spirit/include/qi_list.hpp [6:7]
+ boost/spirit/include/qi_lit.hpp [6:7]
+ boost/spirit/include/qi_match.hpp [6:7]
+ boost/spirit/include/qi_match_attr.hpp [6:7]
+ boost/spirit/include/qi_match_auto.hpp [6:7]
+ boost/spirit/include/qi_matches.hpp [6:7]
+ boost/spirit/include/qi_no_case.hpp [6:7]
+ boost/spirit/include/qi_no_skip.hpp [6:7]
+ boost/spirit/include/qi_nonterminal.hpp [6:7]
+ boost/spirit/include/qi_not_predicate.hpp [6:7]
+ boost/spirit/include/qi_numeric.hpp [6:7]
+ boost/spirit/include/qi_omit.hpp [6:7]
+ boost/spirit/include/qi_operator.hpp [6:7]
+ boost/spirit/include/qi_optional.hpp [6:7]
+ boost/spirit/include/qi_parse.hpp [6:7]
+ boost/spirit/include/qi_parse_attr.hpp [6:7]
+ boost/spirit/include/qi_parse_auto.hpp [6:7]
+ boost/spirit/include/qi_permutation.hpp [6:7]
+ boost/spirit/include/qi_plus.hpp [6:7]
+ boost/spirit/include/qi_raw.hpp [6:7]
+ boost/spirit/include/qi_real.hpp [6:7]
+ boost/spirit/include/qi_repeat.hpp [6:7]
+ boost/spirit/include/qi_rule.hpp [6:7]
+ boost/spirit/include/qi_sequence.hpp [6:7]
+ boost/spirit/include/qi_sequential_or.hpp [6:7]
+ boost/spirit/include/qi_skip.hpp [6:7]
+ boost/spirit/include/qi_stream.hpp [6:7]
+ boost/spirit/include/qi_string.hpp [6:7]
+ boost/spirit/include/qi_symbols.hpp [6:7]
+ boost/spirit/include/qi_uint.hpp [6:7]
+ boost/spirit/include/qi_what.hpp [6:7]
+ boost/spirit/include/support.hpp [6:7]
+ boost/spirit/include/support_adapt_adt_attributes.hpp [6:7]
+ boost/spirit/include/support_any.hpp [6:7]
+ boost/spirit/include/support_any_if.hpp [6:7]
+ boost/spirit/include/support_any_if_ns.hpp [6:7]
+ boost/spirit/include/support_any_if_ns_so.hpp [6:7]
+ boost/spirit/include/support_any_ns.hpp [6:7]
+ boost/spirit/include/support_any_ns_so.hpp [6:7]
+ boost/spirit/include/support_argument.hpp [6:7]
+ boost/spirit/include/support_ascii.hpp [6:7]
+ boost/spirit/include/support_attributes.hpp [6:7]
+ boost/spirit/include/support_attributes_fwd.hpp [6:7]
+ boost/spirit/include/support_auto.hpp [5:6]
+ boost/spirit/include/support_char_class.hpp [6:7]
+ boost/spirit/include/support_container.hpp [6:7]
+ boost/spirit/include/support_extended_variant.hpp [6:7]
+ boost/spirit/include/support_info.hpp [5:6]
+ boost/spirit/include/support_iso8859_1.hpp [6:7]
+ boost/spirit/include/support_istream_iterator.hpp [6:7]
+ boost/spirit/include/support_line_pos_iterator.hpp [7:8]
+ boost/spirit/include/support_locals.hpp [6:7]
+ boost/spirit/include/support_look_ahead.hpp [6:7]
+ boost/spirit/include/support_modify.hpp [6:7]
+ boost/spirit/include/support_multi_pass.hpp [6:7]
+ boost/spirit/include/support_multi_pass_fwd.hpp [6:7]
+ boost/spirit/include/support_ostream_iterator.hpp [6:7]
+ boost/spirit/include/support_standard.hpp [6:7]
+ boost/spirit/include/support_standard_wide.hpp [6:7]
+ boost/spirit/include/support_string_traits.hpp [6:7]
+ boost/spirit/include/support_unused.hpp [6:7]
+ boost/spirit/include/support_utree.hpp [6:7]
+ boost/spirit/repository/home/qi/directive/kwd.hpp [5:6]
+ boost/spirit/repository/home/qi/directive/seek.hpp [4:5]
+ boost/spirit/repository/home/qi/nonterminal/subrule.hpp [5:6]
+ boost/spirit/repository/home/qi/operator/keywords.hpp [5:6]
+ boost/spirit/repository/home/support/seek.hpp [4:5]
+ boost/spirit/repository/home/support/subrule_context.hpp [5:6]
+ boost/spirit/repository/include/karma.hpp [6:7]
+ boost/spirit/repository/include/karma_confix.hpp [6:7]
+ boost/spirit/repository/include/karma_directive.hpp [6:7]
+ boost/spirit/repository/include/karma_nonterminal.hpp [7:8]
+ boost/spirit/repository/include/karma_subrule.hpp [7:8]
+ boost/spirit/repository/include/qi.hpp [6:7]
+ boost/spirit/repository/include/qi_advance.hpp [5:6]
+ boost/spirit/repository/include/qi_confix.hpp [6:7]
+ boost/spirit/repository/include/qi_directive.hpp [6:7]
+ boost/spirit/repository/include/qi_distinct.hpp [6:7]
+ boost/spirit/repository/include/qi_flush_multi_pass.hpp [6:7]
+ boost/spirit/repository/include/qi_iter_pos.hpp [6:7]
+ boost/spirit/repository/include/qi_keywords.hpp [7:8]
+ boost/spirit/repository/include/qi_kwd.hpp [7:8]
+ boost/spirit/repository/include/qi_kwd.hpp [26:27]
+ boost/spirit/repository/include/qi_nonterminal.hpp [7:8]
+ boost/spirit/repository/include/qi_primitive.hpp [6:7]
+ boost/spirit/repository/include/qi_seek.hpp [4:5]
+ boost/spirit/repository/include/qi_subrule.hpp [7:8]
+ boost/wave/cpplexer/re2clex/aq.hpp [8:9]
+ boost/wave/cpplexer/re2clex/scanner.hpp [8:9]
+ boost/wave/whitespace_handling.hpp [9:10]
+
+KEEP BSL-1.0 9fb081f2a852987d2716ab3ba93685bc
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/max_cardinality_matching.hpp at line 5
+ License text:
// Distributed under the Boost Software License, Version 1.0.
- // (See http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/filesystem/detail/utf8_codecvt_facet.hpp [4:5]
-
-KEEP BSL-1.0 a9a210144b79b61e200d7e95b17a4c56
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/cpp_dec_float.hpp at line 5
- License text:
- // Copyright 2011 -2013 John Maddock. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/multiprecision/cpp_dec_float.hpp [3:5]
-
-KEEP BSL-1.0 a9bd4fe8e436ddc987c2955b5f755fc5
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/lambda/closures.hpp at line 8
- License text:
- Distributed under the Boost Software License, Version 1.0. (See
- accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/lambda/closures.hpp [7:9]
-
-KEEP BSL-1.0 aa4e261023dac76b1b286d3163a0bae7
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/compute/detail/variadic_macros.hpp at line 5
- License text:
- // Distributed under the Boost Software License, Version 1.0
- // See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/compute/detail/variadic_macros.hpp [4:6]
-
-KEEP BSL-1.0 aa58ff9cdc0b0b6a3fedf7f97fd19c54
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/chrono/io/time_point_io.hpp at line 4, boost/type_traits/detail/is_function_ptr_tester.hpp at line 5, boost/type_traits/has_plus_assign.hpp at line 4
- License text:
- // Use, modification and distribution are subject to the Boost Software License,
- // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt).
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/chrono/io/time_point_io.hpp [3:5]
- boost/type_traits/detail/is_function_ptr_tester.hpp [4:6]
- boost/type_traits/has_plus_assign.hpp [3:5]
-
-KEEP BSL-1.0 ab2348e8edf8e5498ae8350b5bf110e4
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/math/special_functions/pow.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/math/special_functions/pow.hpp [5:9]
-
-KEEP BSL-1.0 acdc17904c74d5a0d08bc93d13a7b566
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/kurtosis.hpp at line 6, boost/accumulators/statistics/skewness.hpp at line 6, boost/accumulators/statistics/weighted_kurtosis.hpp at line 6, boost/accumulators/statistics/weighted_skewness.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/accumulators/statistics/kurtosis.hpp [4:6]
- boost/accumulators/statistics/skewness.hpp [4:6]
- boost/accumulators/statistics/weighted_kurtosis.hpp [4:6]
- boost/accumulators/statistics/weighted_skewness.hpp [4:6]
-
-KEEP BSL-1.0 acfba401bcd0325193760b4e6f196b4b
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/weighted_moment.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/accumulators/statistics/weighted_moment.hpp [4:6]
-
-KEEP BSL-1.0 ad51c5b487e806da41e2a29ffec41bd1
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/crc.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/crc.hpp [3:5]
-
-KEEP BSL-1.0 ad90ac470f35ec851ed16dc644a6d6ae
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/msm/active_state_switching_policies.hpp at line 8, boost/msm/back/args.hpp at line 8, boost/msm/back/bind_helpers.hpp at line 8, boost/msm/back/common_types.hpp at line 8, boost/msm/back/copy_policies.hpp at line 8, boost/msm/back/default_compile_policy.hpp at line 8, boost/msm/back/dispatch_table.hpp at line 8, boost/msm/back/favor_compile_time.hpp at line 8, boost/msm/back/history_policies.hpp at line 8, boost/msm/back/metafunctions.hpp at line 8, boost/msm/back/mpl_graph_fsm_check.hpp at line 8, boost/msm/back/no_fsm_check.hpp at line 8, boost/msm/back/queue_container_circular.hpp at line 8, boost/msm/back/queue_container_deque.hpp at line 8, boost/msm/back/state_machine.hpp at line 8, boost/msm/back/tools.hpp at line 8, boost/msm/common.hpp at line 8, boost/msm/event_traits.hpp at line 8, boost/msm/front/common_states.hpp at line 8, boost/msm/front/completion_event.hpp at line 8, boost/msm/front/detail/common_states.hpp at line 8, boost/msm/front/detail/row2_helper.hpp at line 8, boost/msm/front/euml/algorithm.hpp at line 8, boost/msm/front/euml/common.hpp at line 8, boost/msm/front/euml/container.hpp at line 8, boost/msm/front/euml/euml.hpp at line 8, boost/msm/front/euml/euml_typeof.hpp at line 8, boost/msm/front/euml/guard_grammar.hpp at line 8, boost/msm/front/euml/iteration.hpp at line 8, boost/msm/front/euml/operator.hpp at line 8, boost/msm/front/euml/phoenix_placeholders.hpp at line 8, boost/msm/front/euml/querying.hpp at line 8, boost/msm/front/euml/state_grammar.hpp at line 8, boost/msm/front/euml/stl.hpp at line 8, boost/msm/front/euml/stt_grammar.hpp at line 8, boost/msm/front/euml/transformation.hpp at line 8, boost/msm/front/functor_row.hpp at line 8, boost/msm/front/internal_row.hpp at line 8, boost/msm/front/row2.hpp at line 8, boost/msm/front/state_machine_def.hpp at line 8, boost/msm/front/states.hpp at line 8, boost/msm/msm_grammar.hpp at line 8, boost/msm/proto_config.hpp at line 8, boost/msm/row_tags.hpp at line 8
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/msm/active_state_switching_policies.hpp [6:9]
- boost/msm/back/args.hpp [6:9]
- boost/msm/back/bind_helpers.hpp [6:9]
- boost/msm/back/common_types.hpp [6:9]
- boost/msm/back/copy_policies.hpp [6:9]
- boost/msm/back/default_compile_policy.hpp [6:9]
- boost/msm/back/dispatch_table.hpp [6:9]
- boost/msm/back/favor_compile_time.hpp [6:9]
- boost/msm/back/history_policies.hpp [6:9]
- boost/msm/back/metafunctions.hpp [6:9]
- boost/msm/back/mpl_graph_fsm_check.hpp [6:9]
- boost/msm/back/no_fsm_check.hpp [6:9]
- boost/msm/back/queue_container_circular.hpp [6:9]
- boost/msm/back/queue_container_deque.hpp [6:9]
- boost/msm/back/state_machine.hpp [6:9]
- boost/msm/back/tools.hpp [6:9]
- boost/msm/common.hpp [6:9]
- boost/msm/event_traits.hpp [6:9]
- boost/msm/front/common_states.hpp [6:9]
- boost/msm/front/completion_event.hpp [6:9]
- boost/msm/front/detail/common_states.hpp [6:9]
- boost/msm/front/detail/row2_helper.hpp [6:9]
- boost/msm/front/euml/algorithm.hpp [6:9]
- boost/msm/front/euml/common.hpp [6:9]
- boost/msm/front/euml/container.hpp [6:9]
- boost/msm/front/euml/euml.hpp [6:9]
- boost/msm/front/euml/euml_typeof.hpp [6:9]
- boost/msm/front/euml/guard_grammar.hpp [6:9]
- boost/msm/front/euml/iteration.hpp [6:9]
- boost/msm/front/euml/operator.hpp [6:9]
- boost/msm/front/euml/phoenix_placeholders.hpp [6:9]
- boost/msm/front/euml/querying.hpp [6:9]
- boost/msm/front/euml/state_grammar.hpp [6:9]
- boost/msm/front/euml/stl.hpp [6:9]
- boost/msm/front/euml/stt_grammar.hpp [6:9]
- boost/msm/front/euml/transformation.hpp [6:9]
- boost/msm/front/functor_row.hpp [6:9]
- boost/msm/front/internal_row.hpp [6:9]
- boost/msm/front/row2.hpp [6:9]
- boost/msm/front/state_machine_def.hpp [6:9]
- boost/msm/front/states.hpp [6:9]
- boost/msm/msm_grammar.hpp [6:9]
- boost/msm/proto_config.hpp [6:9]
- boost/msm/row_tags.hpp [6:9]
-
-KEEP BSL-1.0 ada711a3dd063624125a231887c8bac6
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/parameter/aux_/is_maybe.hpp at line 3
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/parameter/aux_/is_maybe.hpp [1:4]
-
-KEEP BSL-1.0 b03e7ad31a88c7f7892fe8557944edb4
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/bron_kerbosch_all_cliques.hpp at line 5, boost/graph/closeness_centrality.hpp at line 5, boost/graph/clustering_coefficient.hpp at line 5, boost/graph/degree_centrality.hpp at line 5, boost/graph/detail/geodesic.hpp at line 5, boost/graph/detail/index.hpp at line 5, boost/graph/directed_graph.hpp at line 5, boost/graph/eccentricity.hpp at line 5, boost/graph/exterior_property.hpp at line 5, boost/graph/geodesic_distance.hpp at line 5, boost/graph/numeric_values.hpp at line 5, boost/graph/property_maps/constant_property_map.hpp at line 5, boost/graph/property_maps/container_property_map.hpp at line 5, boost/graph/property_maps/matrix_property_map.hpp at line 5, boost/graph/property_maps/null_property_map.hpp at line 5, boost/graph/tiernan_all_cycles.hpp at line 5, boost/graph/transitive_reduction.hpp at line 5, boost/graph/undirected_graph.hpp at line 5
- License text:
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0 (See accompanying file
- // LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 93.75
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/graph/bron_kerbosch_all_cliques.hpp [3:5]
- boost/graph/closeness_centrality.hpp [3:5]
- boost/graph/clustering_coefficient.hpp [3:5]
- boost/graph/degree_centrality.hpp [3:5]
- boost/graph/detail/geodesic.hpp [3:5]
- boost/graph/detail/index.hpp [3:5]
- boost/graph/directed_graph.hpp [3:5]
- boost/graph/eccentricity.hpp [3:5]
- boost/graph/exterior_property.hpp [3:5]
- boost/graph/geodesic_distance.hpp [3:5]
- boost/graph/numeric_values.hpp [3:5]
- boost/graph/property_maps/constant_property_map.hpp [3:5]
- boost/graph/property_maps/container_property_map.hpp [3:5]
- boost/graph/property_maps/matrix_property_map.hpp [3:5]
- boost/graph/property_maps/null_property_map.hpp [3:5]
- boost/graph/tiernan_all_cycles.hpp [3:5]
- boost/graph/transitive_reduction.hpp [3:5]
- boost/graph/undirected_graph.hpp [3:5]
-
-KEEP BSL-1.0 b057fb663f90e3d81c396da228ff46a1
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/config/config.hpp at line 6, boost/preprocessor/slot/detail/counter.hpp at line 5, boost/preprocessor/tuple/rem.hpp at line 6, boost/preprocessor/tuple/to_seq.hpp at line 6, boost/preprocessor/variadic/elem.hpp at line 6, boost/preprocessor/variadic/size.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/preprocessor/config/config.hpp [5:7]
- boost/preprocessor/slot/detail/counter.hpp [4:6]
- boost/preprocessor/tuple/rem.hpp [5:7]
- boost/preprocessor/tuple/to_seq.hpp [5:7]
- boost/preprocessor/variadic/elem.hpp [5:7]
- boost/preprocessor/variadic/size.hpp [5:7]
-
-KEEP Mit-Old-Style b202f5e6061e3eeef6c7dcc2414164b3
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: LicenseRef-scancode-mit-old-style
- Score : 100.00
- Match type : TEXT
- Links : http://fedoraproject.org/wiki/Licensing:MIT#Old_Style, https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/mit-old-style.LICENSE
- Files with this license:
- boost/detail/algorithm.hpp [10:16]
- boost/multi_index/detail/ord_index_impl.hpp [26:32]
- boost/multi_index/detail/ord_index_node.hpp [26:32]
- boost/multi_index/detail/ord_index_ops.hpp [26:32]
-
-KEEP BSL-1.0 b2055be15799034e5690865f2062c03a
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/sync/windows/named_condition.hpp at line 5, boost/interprocess/sync/windows/named_condition_any.hpp at line 5, boost/interprocess/sync/windows/named_mutex.hpp at line 5, boost/interprocess/sync/windows/named_recursive_mutex.hpp at line 5, boost/interprocess/sync/windows/named_semaphore.hpp at line 5, boost/interprocess/sync/windows/named_sync.hpp at line 5, boost/interprocess/sync/windows/winapi_mutex_wrapper.hpp at line 5, boost/interprocess/sync/windows/winapi_semaphore_wrapper.hpp at line 5, boost/interprocess/sync/windows/winapi_wrapper_common.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2011-2012. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/interprocess/sync/windows/named_condition.hpp [3:5]
- boost/interprocess/sync/windows/named_condition_any.hpp [3:5]
- boost/interprocess/sync/windows/named_mutex.hpp [3:5]
- boost/interprocess/sync/windows/named_recursive_mutex.hpp [3:5]
- boost/interprocess/sync/windows/named_semaphore.hpp [3:5]
- boost/interprocess/sync/windows/named_sync.hpp [3:5]
- boost/interprocess/sync/windows/winapi_mutex_wrapper.hpp [3:5]
- boost/interprocess/sync/windows/winapi_semaphore_wrapper.hpp [3:5]
- boost/interprocess/sync/windows/winapi_wrapper_common.hpp [3:5]
-
-KEEP BSL-1.0 b28554be9e679e0afc207f28ee3501c9
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/token_functions.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 92.11
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/token_functions.hpp [5:11]
-
-KEEP BSL-1.0 b411822b31044e9f74317c11d6e100e8
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/variant/detail/multivisitors_cpp11_based.hpp at line 10, boost/variant/detail/multivisitors_cpp14_based.hpp at line 11, boost/variant/detail/multivisitors_preprocessor_based.hpp at line 10, boost/variant/multivisitors.hpp at line 10
- License text:
- // Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt).
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/variant/detail/multivisitors_cpp11_based.hpp [8:10]
- boost/variant/detail/multivisitors_cpp14_based.hpp [9:11]
- boost/variant/detail/multivisitors_preprocessor_based.hpp [8:10]
- boost/variant/multivisitors.hpp [8:10]
-
-KEEP BSL-1.0 b51d81a9a19afcd47f87805af0a81f71
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iterator.hpp at line 3
- License text:
- // (C) Copyright Beman Dawes 2000. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/iterator.hpp [1:3]
-
-KEEP BSL-1.0 b5a1e7b4dadbf479f176645e2fd707dd
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/variance.hpp at line 6, boost/accumulators/statistics/weighted_variance.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/accumulators/statistics/variance.hpp [4:6]
- boost/accumulators/statistics/weighted_variance.hpp [4:6]
-
-KEEP CC0-1.0 b5f764fc4eb42084bd48338af5d0b73e
-BELONGS libs/container/ya.make
- License text:
- Doug Lea and released to the public domain, as explained at
- http://creativecommons.org/publicdomain/zero/1.0/ Send questions,
- Scancode info:
- Original SPDX id: CC0-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://creativecommons.org/publicdomain/zero/1.0/, http://creativecommons.org/publicdomain/zero/1.0/legalcode, https://spdx.org/licenses/CC0-1.0
- Files with this license:
- libs/container/src/dlmalloc_2_8_6.c [3:4]
-
-KEEP MIT b5ff104ececbb5c6cc9c1d8e6e363649
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: MIT
- Score : 100.00
- Match type : TEXT
- Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
- Files with this license:
- boost/geometry/srs/projections/proj/gstmerc.hpp [26:42]
-
-KEEP BSL-1.0 b639b89caf10a43d7b73bd47dbd000b4
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/numeric/detail/function1.hpp at line 3, boost/accumulators/numeric/detail/function2.hpp at line 3, boost/accumulators/numeric/detail/function3.hpp at line 3, boost/accumulators/numeric/detail/function4.hpp at line 3, boost/accumulators/numeric/detail/function_n.hpp at line 3, boost/accumulators/numeric/detail/pod_singleton.hpp at line 3, boost/archive/detail/register_archive.hpp at line 3, boost/concept/assert.hpp at line 3, boost/concept/detail/borland.hpp at line 3, boost/concept/detail/concept_def.hpp at line 3, boost/concept/detail/concept_undef.hpp at line 3, boost/concept/detail/general.hpp at line 3, boost/concept/detail/has_constraints.hpp at line 3, boost/concept/detail/msvc.hpp at line 3, boost/concept/requires.hpp at line 3, boost/concept/usage.hpp at line 3, boost/concept_check/borland.hpp at line 3, boost/concept_check/general.hpp at line 3, boost/concept_check/has_constraints.hpp at line 3, boost/concept_check/msvc.hpp at line 3, boost/parameter/aux_/parenthesized_type.hpp at line 3
- License text:
- // Copyright David Abrahams 2006. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/accumulators/numeric/detail/function1.hpp [1:3]
- boost/accumulators/numeric/detail/function2.hpp [1:3]
- boost/accumulators/numeric/detail/function3.hpp [1:3]
- boost/accumulators/numeric/detail/function4.hpp [1:3]
- boost/accumulators/numeric/detail/function_n.hpp [1:3]
- boost/accumulators/numeric/detail/pod_singleton.hpp [1:3]
- boost/archive/detail/register_archive.hpp [1:3]
- boost/concept/assert.hpp [1:3]
- boost/concept/detail/borland.hpp [1:3]
- boost/concept/detail/concept_def.hpp [1:3]
- boost/concept/detail/concept_undef.hpp [1:3]
- boost/concept/detail/general.hpp [1:3]
- boost/concept/detail/has_constraints.hpp [1:3]
- boost/concept/detail/msvc.hpp [1:3]
- boost/concept/requires.hpp [1:3]
- boost/concept/usage.hpp [1:3]
- boost/concept_check/borland.hpp [1:3]
- boost/concept_check/general.hpp [1:3]
- boost/concept_check/has_constraints.hpp [1:3]
- boost/concept_check/msvc.hpp [1:3]
- boost/parameter/aux_/parenthesized_type.hpp [1:3]
-
-KEEP BSL-1.0 b6974e875e1c1eb08eee24cb09689b8d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/ptr_container/ptr_container.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/ptr_container/ptr_container.hpp [4:7]
-
-KEEP BSL-1.0 b6a409674a4ee07847ea12b101a0118a
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/smart_ptr/detail/bad_weak_ptr.hpp at line 8, boost/interprocess/sync/spin/interprocess_barrier.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2006. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/interprocess/smart_ptr/detail/bad_weak_ptr.hpp [6:8]
- boost/interprocess/sync/spin/interprocess_barrier.hpp [3:5]
-
-KEEP BSL-1.0 b708add3dbcdfc5b211f22144bb32fef
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/weighted_sum_kahan.hpp at line 6
- License text:
- // Copyright 2011 Simon West. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/accumulators/statistics/weighted_sum_kahan.hpp [4:6]
-
-KEEP BSL-1.0 b76da68edf2a4f406db6266fa75d52c8
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/lockable_adapter.hpp at line 5, boost/thread/null_mutex.hpp at line 5, boost/thread/poly_lockable.hpp at line 5, boost/thread/poly_lockable_adapter.hpp at line 5, boost/thread/poly_shared_lockable.hpp at line 5, boost/thread/poly_shared_lockable_adapter.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/thread/lockable_adapter.hpp [3:5]
- boost/thread/null_mutex.hpp [3:5]
- boost/thread/poly_lockable.hpp [3:5]
- boost/thread/poly_lockable_adapter.hpp [3:5]
- boost/thread/poly_shared_lockable.hpp [3:5]
- boost/thread/poly_shared_lockable_adapter.hpp [3:5]
-
-KEEP BSL-1.0 b8289cd244d7708c52552bdeeba10e21
-BELONGS ya.make
- License text:
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE.md or copy at http ://boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 76.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/callable_traits/detail/default_callable_traits.hpp [4:5]
-
-KEEP BSL-1.0 b862f691db6b1f393df1444cfd7c7ca7
-BELONGS ya.make
- License text:
- // Distributed under the Boost Software License, Version 1.0.
- // See accompanying file LICENSE.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/numeric/odeint/external/nt2/nt2_algebra_dispatcher.hpp [5:7]
- boost/numeric/odeint/external/nt2/nt2_copy.hpp [6:8]
- boost/numeric/odeint/external/nt2/nt2_norm_inf.hpp [5:7]
- boost/numeric/odeint/external/nt2/nt2_resize.hpp [5:7]
- boost/proto/detail/remove_typename.hpp [6:8]
-
-KEEP BSL-1.0 b8b468abbff6b81e74e440e7d4c9daaa
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/spirit/home/x3/support/traits/numeric_traits.hpp at line 5
- License text:
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/spirit/home/x3/support/traits/numeric_traits.hpp [4:5]
-
-KEEP BSL-1.0 b9e8f30d851c60e76394d2c0ad75e462
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/concepts/mp_number_archetypes.hpp at line 4, boost/multiprecision/cpp_int/checked.hpp at line 4, boost/multiprecision/cpp_int/comparison.hpp at line 4, boost/multiprecision/debug_adaptor.hpp at line 4, boost/multiprecision/detail/digits.hpp at line 4, boost/multiprecision/detail/integer_ops.hpp at line 4, boost/multiprecision/integer.hpp at line 4, boost/multiprecision/logged_adaptor.hpp at line 4, boost/multiprecision/miller_rabin.hpp at line 4, boost/multiprecision/random.hpp at line 6, boost/multiprecision/traits/extract_exponent_type.hpp at line 4
- License text:
- // Copyright 2012 John Maddock. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 92.59
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/multiprecision/concepts/mp_number_archetypes.hpp [2:4]
- boost/multiprecision/cpp_int/checked.hpp [2:4]
- boost/multiprecision/cpp_int/comparison.hpp [2:4]
- boost/multiprecision/debug_adaptor.hpp [2:4]
- boost/multiprecision/detail/digits.hpp [2:4]
- boost/multiprecision/detail/integer_ops.hpp [2:4]
- boost/multiprecision/integer.hpp [2:4]
- boost/multiprecision/logged_adaptor.hpp [2:4]
- boost/multiprecision/miller_rabin.hpp [2:4]
- boost/multiprecision/random.hpp [4:6]
- boost/multiprecision/traits/extract_exponent_type.hpp [2:4]
-
-KEEP BSL-1.0 ba1e62e24c3a9267634f49eb092f0afb
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/detail/msvc_has_iterator_workaround.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/range/detail/msvc_has_iterator_workaround.hpp [3:6]
-
-KEEP BSL-1.0 bb0492d92471ff074c380f255ab94b94
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/hawick_circuits.hpp at line 4
- License text:
- // Use, modification and distribution is subject to the Boost Software
- // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy
- // at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/graph/hawick_circuits.hpp [3:5]
-
-KEEP BSL-1.0 bb6c4a594a57e74611676fda9449a7e3
-BELONGS libs/log/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/atomic/detail/pause.hpp at line 3, boost/core/explicit_operator_bool.hpp at line 4, boost/core/null_deleter.hpp at line 4, boost/log/attributes.hpp at line 4, boost/log/attributes/attribute.hpp at line 4, boost/log/attributes/attribute_cast.hpp at line 4, boost/log/attributes/attribute_name.hpp at line 4, boost/log/attributes/attribute_set.hpp at line 4, boost/log/attributes/attribute_value.hpp at line 4, boost/log/attributes/attribute_value_impl.hpp at line 4, boost/log/attributes/attribute_value_set.hpp at line 4, boost/log/attributes/clock.hpp at line 4, boost/log/attributes/constant.hpp at line 4, boost/log/attributes/counter.hpp at line 4, boost/log/attributes/current_process_id.hpp at line 4, boost/log/attributes/current_process_name.hpp at line 4, boost/log/attributes/current_thread_id.hpp at line 4, boost/log/attributes/fallback_policy.hpp at line 4, boost/log/attributes/fallback_policy_fwd.hpp at line 4, boost/log/attributes/function.hpp at line 4, boost/log/attributes/mutable_constant.hpp at line 4, boost/log/attributes/named_scope.hpp at line 4, boost/log/attributes/scoped_attribute.hpp at line 4, boost/log/attributes/time_traits.hpp at line 4, boost/log/attributes/timer.hpp at line 4, boost/log/attributes/value_extraction.hpp at line 4, boost/log/attributes/value_extraction_fwd.hpp at line 4, boost/log/attributes/value_visitation.hpp at line 4, boost/log/attributes/value_visitation_fwd.hpp at line 4, boost/log/common.hpp at line 4, boost/log/core.hpp at line 4, boost/log/core/core.hpp at line 4, boost/log/core/record.hpp at line 4, boost/log/core/record_view.hpp at line 4, boost/log/detail/adaptive_mutex.hpp at line 4, boost/log/detail/allocator_traits.hpp at line 4, boost/log/detail/asio_fwd.hpp at line 4, boost/log/detail/attachable_sstream_buf.hpp at line 4, boost/log/detail/attr_output_impl.hpp at line 4, boost/log/detail/attr_output_terminal.hpp at line 4, boost/log/detail/attribute_get_value_impl.hpp at line 4, boost/log/detail/attribute_predicate.hpp at line 4, boost/log/detail/c_str.hpp at line 4, boost/log/detail/cleanup_scope_guard.hpp at line 4, boost/log/detail/code_conversion.hpp at line 4, boost/log/detail/config.hpp at line 4, boost/log/detail/copy_cv.hpp at line 4, boost/log/detail/custom_terminal_spec.hpp at line 4, boost/log/detail/date_time_fmt_gen_traits_fwd.hpp at line 4, boost/log/detail/date_time_format_parser.hpp at line 4, boost/log/detail/decomposed_time.hpp at line 4, boost/log/detail/deduce_char_type.hpp at line 4, boost/log/detail/default_attribute_names.hpp at line 4, boost/log/detail/embedded_string_type.hpp at line 4, boost/log/detail/enqueued_record.hpp at line 4, boost/log/detail/event.hpp at line 4, boost/log/detail/fake_mutex.hpp at line 4, boost/log/detail/footer.hpp at line 4, boost/log/detail/format.hpp at line 4, boost/log/detail/function_traits.hpp at line 4, boost/log/detail/generate_overloads.hpp at line 4, boost/log/detail/header.hpp at line 4, boost/log/detail/id.hpp at line 4, boost/log/detail/is_character_type.hpp at line 4, boost/log/detail/is_ostream.hpp at line 4, boost/log/detail/light_function.hpp at line 4, boost/log/detail/light_function_pp.hpp at line 4, boost/log/detail/light_rw_mutex.hpp at line 4, boost/log/detail/locking_ptr.hpp at line 4, boost/log/detail/locks.hpp at line 4, boost/log/detail/named_scope_fmt_pp.hpp at line 4, boost/log/detail/native_typeof.hpp at line 4, boost/log/detail/parameter_tools.hpp at line 4, boost/log/detail/pause.hpp at line 4, boost/log/detail/pp_identity.hpp at line 4, boost/log/detail/process_id.hpp at line 4, boost/log/detail/setup_config.hpp at line 4, boost/log/detail/sfinae_tools.hpp at line 4, boost/log/detail/singleton.hpp at line 4, boost/log/detail/sink_init_helpers.hpp at line 4, boost/log/detail/snprintf.hpp at line 4, boost/log/detail/tagged_integer.hpp at line 4, boost/log/detail/thread_id.hpp at line 4, boost/log/detail/thread_specific.hpp at line 4, boost/log/detail/threadsafe_queue.hpp at line 4, boost/log/detail/timestamp.hpp at line 4, boost/log/detail/trivial_keyword.hpp at line 4, boost/log/detail/unary_function_terminal.hpp at line 4, boost/log/detail/unhandled_exception_count.hpp at line 4, boost/log/detail/value_ref_visitation.hpp at line 4, boost/log/exceptions.hpp at line 4, boost/log/expressions.hpp at line 4, boost/log/expressions/attr.hpp at line 4, boost/log/expressions/attr_fwd.hpp at line 4, boost/log/expressions/filter.hpp at line 4, boost/log/expressions/formatter.hpp at line 4, boost/log/expressions/formatters.hpp at line 4, boost/log/expressions/formatters/c_decorator.hpp at line 4, boost/log/expressions/formatters/char_decorator.hpp at line 4, boost/log/expressions/formatters/csv_decorator.hpp at line 4, boost/log/expressions/formatters/date_time.hpp at line 4, boost/log/expressions/formatters/format.hpp at line 4, boost/log/expressions/formatters/if.hpp at line 4, boost/log/expressions/formatters/max_size_decorator.hpp at line 4, boost/log/expressions/formatters/named_scope.hpp at line 4, boost/log/expressions/formatters/stream.hpp at line 4, boost/log/expressions/formatters/wrap_formatter.hpp at line 4, boost/log/expressions/formatters/xml_decorator.hpp at line 4, boost/log/expressions/is_keyword_descriptor.hpp at line 4, boost/log/expressions/keyword.hpp at line 4, boost/log/expressions/keyword_fwd.hpp at line 4, boost/log/expressions/message.hpp at line 4, boost/log/expressions/predicates.hpp at line 4, boost/log/expressions/predicates/begins_with.hpp at line 4, boost/log/expressions/predicates/channel_severity_filter.hpp at line 4, boost/log/expressions/predicates/contains.hpp at line 4, boost/log/expressions/predicates/ends_with.hpp at line 4, boost/log/expressions/predicates/has_attr.hpp at line 4, boost/log/expressions/predicates/is_debugger_present.hpp at line 4, boost/log/expressions/predicates/is_in_range.hpp at line 4, boost/log/expressions/predicates/matches.hpp at line 4, boost/log/expressions/record.hpp at line 4, boost/log/keywords/auto_flush.hpp at line 4, boost/log/keywords/block_size.hpp at line 4, boost/log/keywords/capacity.hpp at line 4, boost/log/keywords/channel.hpp at line 4, boost/log/keywords/delimiter.hpp at line 4, boost/log/keywords/depth.hpp at line 4, boost/log/keywords/empty_marker.hpp at line 4, boost/log/keywords/enable_final_rotation.hpp at line 4, boost/log/keywords/facility.hpp at line 4, boost/log/keywords/file_name.hpp at line 4, boost/log/keywords/filter.hpp at line 4, boost/log/keywords/format.hpp at line 4, boost/log/keywords/ident.hpp at line 4, boost/log/keywords/incomplete_marker.hpp at line 4, boost/log/keywords/ip_version.hpp at line 4, boost/log/keywords/iteration.hpp at line 4, boost/log/keywords/log_name.hpp at line 4, boost/log/keywords/log_source.hpp at line 4, boost/log/keywords/max_files.hpp at line 4, boost/log/keywords/max_size.hpp at line 4, boost/log/keywords/message_file.hpp at line 4, boost/log/keywords/min_free_space.hpp at line 4, boost/log/keywords/name.hpp at line 4, boost/log/keywords/open_mode.hpp at line 4, boost/log/keywords/order.hpp at line 4, boost/log/keywords/ordering_window.hpp at line 4, boost/log/keywords/overflow_policy.hpp at line 4, boost/log/keywords/permissions.hpp at line 4, boost/log/keywords/registration.hpp at line 4, boost/log/keywords/rotation_size.hpp at line 4, boost/log/keywords/scan_method.hpp at line 4, boost/log/keywords/severity.hpp at line 4, boost/log/keywords/start_thread.hpp at line 4, boost/log/keywords/target.hpp at line 4, boost/log/keywords/time_based_rotation.hpp at line 4, boost/log/keywords/use_impl.hpp at line 4, boost/log/sinks.hpp at line 4, boost/log/sinks/async_frontend.hpp at line 4, boost/log/sinks/attribute_mapping.hpp at line 4, boost/log/sinks/basic_sink_backend.hpp at line 4, boost/log/sinks/basic_sink_frontend.hpp at line 4, boost/log/sinks/block_on_overflow.hpp at line 4, boost/log/sinks/bounded_fifo_queue.hpp at line 4, boost/log/sinks/bounded_ordering_queue.hpp at line 4, boost/log/sinks/debug_output_backend.hpp at line 4, boost/log/sinks/drop_on_overflow.hpp at line 4, boost/log/sinks/event_log_backend.hpp at line 4, boost/log/sinks/event_log_constants.hpp at line 4, boost/log/sinks/frontend_requirements.hpp at line 4, boost/log/sinks/sink.hpp at line 4, boost/log/sinks/sync_frontend.hpp at line 4, boost/log/sinks/syslog_backend.hpp at line 4, boost/log/sinks/syslog_constants.hpp at line 4, boost/log/sinks/text_file_backend.hpp at line 4, boost/log/sinks/text_ipc_message_queue_backend.hpp at line 5, boost/log/sinks/text_multifile_backend.hpp at line 4, boost/log/sinks/text_ostream_backend.hpp at line 4, boost/log/sinks/unbounded_fifo_queue.hpp at line 4, boost/log/sinks/unbounded_ordering_queue.hpp at line 4, boost/log/sinks/unlocked_frontend.hpp at line 4, boost/log/sources/basic_logger.hpp at line 4, boost/log/sources/channel_feature.hpp at line 4, boost/log/sources/channel_logger.hpp at line 4, boost/log/sources/exception_handler_feature.hpp at line 4, boost/log/sources/features.hpp at line 4, boost/log/sources/global_logger_storage.hpp at line 4, boost/log/sources/logger.hpp at line 4, boost/log/sources/record_ostream.hpp at line 4, boost/log/sources/severity_channel_logger.hpp at line 4, boost/log/sources/severity_feature.hpp at line 4, boost/log/sources/severity_logger.hpp at line 4, boost/log/sources/threading_models.hpp at line 4, boost/log/support/date_time.hpp at line 4, boost/log/support/exception.hpp at line 4, boost/log/support/regex.hpp at line 4, boost/log/support/spirit_classic.hpp at line 4, boost/log/support/spirit_qi.hpp at line 4, boost/log/support/std_regex.hpp at line 4, boost/log/support/xpressive.hpp at line 4, boost/log/trivial.hpp at line 4, boost/log/utility/exception_handler.hpp at line 4, boost/log/utility/formatting_ostream.hpp at line 4, boost/log/utility/formatting_ostream_fwd.hpp at line 4, boost/log/utility/functional.hpp at line 4, boost/log/utility/functional/as_action.hpp at line 4, boost/log/utility/functional/begins_with.hpp at line 4, boost/log/utility/functional/bind.hpp at line 4, boost/log/utility/functional/bind_assign.hpp at line 4, boost/log/utility/functional/bind_output.hpp at line 4, boost/log/utility/functional/bind_to_log.hpp at line 4, boost/log/utility/functional/contains.hpp at line 4, boost/log/utility/functional/ends_with.hpp at line 4, boost/log/utility/functional/fun_ref.hpp at line 4, boost/log/utility/functional/in_range.hpp at line 4, boost/log/utility/functional/logical.hpp at line 4, boost/log/utility/functional/matches.hpp at line 4, boost/log/utility/functional/nop.hpp at line 4, boost/log/utility/functional/save_result.hpp at line 4, boost/log/utility/ipc/object_name.hpp at line 4, boost/log/utility/ipc/reliable_message_queue.hpp at line 5, boost/log/utility/manipulators.hpp at line 4, boost/log/utility/manipulators/add_value.hpp at line 4, boost/log/utility/manipulators/dump.hpp at line 4, boost/log/utility/manipulators/to_log.hpp at line 4, boost/log/utility/once_block.hpp at line 4, boost/log/utility/open_mode.hpp at line 4, boost/log/utility/permissions.hpp at line 5, boost/log/utility/record_ordering.hpp at line 4, boost/log/utility/setup.hpp at line 4, boost/log/utility/setup/common_attributes.hpp at line 4, boost/log/utility/setup/console.hpp at line 4, boost/log/utility/setup/file.hpp at line 4, boost/log/utility/setup/filter_parser.hpp at line 4, boost/log/utility/setup/formatter_parser.hpp at line 4, boost/log/utility/setup/from_settings.hpp at line 4, boost/log/utility/setup/from_stream.hpp at line 4, boost/log/utility/setup/settings.hpp at line 4, boost/log/utility/setup/settings_parser.hpp at line 4, boost/log/utility/strictest_lock.hpp at line 4, boost/log/utility/string_literal.hpp at line 4, boost/log/utility/string_literal_fwd.hpp at line 4, boost/log/utility/type_dispatch/date_time_types.hpp at line 4, boost/log/utility/type_dispatch/dynamic_type_dispatcher.hpp at line 4, boost/log/utility/type_dispatch/standard_types.hpp at line 4, boost/log/utility/type_dispatch/static_type_dispatcher.hpp at line 4, boost/log/utility/type_dispatch/type_dispatcher.hpp at line 4, boost/log/utility/unique_identifier_name.hpp at line 4, boost/log/utility/unused_variable.hpp at line 4, boost/log/utility/value_ref.hpp at line 4, boost/log/utility/value_ref_fwd.hpp at line 4, boost/smart_ptr/intrusive_ref_counter.hpp at line 4, boost/uuid/detail/config.hpp at line 4, boost/uuid/detail/uuid_generic.ipp at line 4, boost/uuid/detail/uuid_x86.ipp at line 4, boost/uuid/sha1.hpp at line 3, libs/log/config/atomic-int32/atomic_int32.cpp at line 4, libs/log/config/native-syslog/native_syslog.cpp at line 4, libs/log/config/pthread-mutex-robust/pthread_mutex_robust.cpp at line 4, libs/log/config/visibility/visibility.cpp at line 4, libs/log/config/x86-ext/avx2.cpp at line 4, libs/log/config/x86-ext/ssse3.cpp at line 4, libs/log/config/xopen-source-600/xopen_source_600.cpp at line 4, libs/log/src/alignment_gap_between.hpp at line 4, libs/log/src/attribute_name.cpp at line 4, libs/log/src/attribute_set.cpp at line 4, libs/log/src/attribute_set_impl.hpp at line 4, libs/log/src/attribute_value_set.cpp at line 4, libs/log/src/bit_tools.hpp at line 4, libs/log/src/code_conversion.cpp at line 4, libs/log/src/core.cpp at line 4, libs/log/src/date_time_format_parser.cpp at line 4, libs/log/src/default_attribute_names.cpp at line 4, libs/log/src/default_sink.cpp at line 4, libs/log/src/default_sink.hpp at line 4, libs/log/src/dump.cpp at line 4, libs/log/src/dump_avx2.cpp at line 4, libs/log/src/dump_ssse3.cpp at line 4, libs/log/src/event.cpp at line 4, libs/log/src/exceptions.cpp at line 4, libs/log/src/format_parser.cpp at line 4, libs/log/src/global_logger_storage.cpp at line 4, libs/log/src/id_formatting.hpp at line 4, libs/log/src/murmur3.hpp at line 4, libs/log/src/named_scope.cpp at line 4, libs/log/src/named_scope_format_parser.cpp at line 4, libs/log/src/once_block.cpp at line 4, libs/log/src/permissions.cpp at line 4, libs/log/src/posix/ipc_reliable_message_queue.cpp at line 5, libs/log/src/posix/ipc_sync_wrappers.hpp at line 4, libs/log/src/posix/object_name.cpp at line 4, libs/log/src/process_id.cpp at line 4, libs/log/src/process_name.cpp at line 4, libs/log/src/record_ostream.cpp at line 4, libs/log/src/setup/default_filter_factory.cpp at line 4, libs/log/src/setup/default_filter_factory.hpp at line 4, libs/log/src/setup/default_formatter_factory.cpp at line 4, libs/log/src/setup/default_formatter_factory.hpp at line 4, libs/log/src/setup/filter_parser.cpp at line 4, libs/log/src/setup/formatter_parser.cpp at line 4, libs/log/src/setup/init_from_settings.cpp at line 4, libs/log/src/setup/init_from_stream.cpp at line 4, libs/log/src/setup/matches_relation_factory.cpp at line 4, libs/log/src/setup/parser_utils.cpp at line 4, libs/log/src/setup/parser_utils.hpp at line 4, libs/log/src/setup/settings_parser.cpp at line 4, libs/log/src/severity_level.cpp at line 4, libs/log/src/spirit_encoding.cpp at line 4, libs/log/src/spirit_encoding.hpp at line 4, libs/log/src/stateless_allocator.hpp at line 4, libs/log/src/syslog_backend.cpp at line 4, libs/log/src/text_file_backend.cpp at line 4, libs/log/src/text_multifile_backend.cpp at line 4, libs/log/src/text_ostream_backend.cpp at line 4, libs/log/src/thread_id.cpp at line 4, libs/log/src/thread_specific.cpp at line 4, libs/log/src/threadsafe_queue.cpp at line 4, libs/log/src/timer.cpp at line 4, libs/log/src/timestamp.cpp at line 4, libs/log/src/trivial.cpp at line 4, libs/log/src/unhandled_exception_count.cpp at line 4, libs/log/src/unique_ptr.hpp at line 4, libs/log/src/windows/auto_handle.hpp at line 4, libs/log/src/windows/debug_output_backend.cpp at line 4, libs/log/src/windows/event_log_backend.cpp at line 4, libs/log/src/windows/event_log_registry.hpp at line 4, libs/log/src/windows/ipc_reliable_message_queue.cpp at line 5, libs/log/src/windows/ipc_sync_wrappers.cpp at line 4, libs/log/src/windows/ipc_sync_wrappers.hpp at line 4, libs/log/src/windows/light_rw_mutex.cpp at line 4, libs/log/src/windows/mapped_shared_memory.cpp at line 4, libs/log/src/windows/mapped_shared_memory.hpp at line 4, libs/log/src/windows/object_name.cpp at line 4, libs/log/src/windows/utf_code_conversion.hpp at line 4
- License text:
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/atomic/detail/pause.hpp [2:4]
- boost/core/explicit_operator_bool.hpp [3:5]
- boost/core/null_deleter.hpp [3:5]
- boost/log/attributes.hpp [3:5]
- boost/log/attributes/attribute.hpp [3:5]
- boost/log/attributes/attribute_cast.hpp [3:5]
- boost/log/attributes/attribute_name.hpp [3:5]
- boost/log/attributes/attribute_set.hpp [3:5]
- boost/log/attributes/attribute_value.hpp [3:5]
- boost/log/attributes/attribute_value_impl.hpp [3:5]
- boost/log/attributes/attribute_value_set.hpp [3:5]
- boost/log/attributes/clock.hpp [3:5]
- boost/log/attributes/constant.hpp [3:5]
- boost/log/attributes/counter.hpp [3:5]
- boost/log/attributes/current_process_id.hpp [3:5]
- boost/log/attributes/current_process_name.hpp [3:5]
- boost/log/attributes/current_thread_id.hpp [3:5]
- boost/log/attributes/fallback_policy.hpp [3:5]
- boost/log/attributes/fallback_policy_fwd.hpp [3:5]
- boost/log/attributes/function.hpp [3:5]
- boost/log/attributes/mutable_constant.hpp [3:5]
- boost/log/attributes/named_scope.hpp [3:5]
- boost/log/attributes/scoped_attribute.hpp [3:5]
- boost/log/attributes/time_traits.hpp [3:5]
- boost/log/attributes/timer.hpp [3:5]
- boost/log/attributes/value_extraction.hpp [3:5]
- boost/log/attributes/value_extraction_fwd.hpp [3:5]
- boost/log/attributes/value_visitation.hpp [3:5]
- boost/log/attributes/value_visitation_fwd.hpp [3:5]
- boost/log/common.hpp [3:5]
- boost/log/core.hpp [3:5]
- boost/log/core/core.hpp [3:5]
- boost/log/core/record.hpp [3:5]
- boost/log/core/record_view.hpp [3:5]
- boost/log/detail/adaptive_mutex.hpp [3:5]
- boost/log/detail/allocator_traits.hpp [3:5]
- boost/log/detail/asio_fwd.hpp [3:5]
- boost/log/detail/attachable_sstream_buf.hpp [3:5]
- boost/log/detail/attr_output_impl.hpp [3:5]
- boost/log/detail/attr_output_terminal.hpp [3:5]
- boost/log/detail/attribute_get_value_impl.hpp [3:5]
- boost/log/detail/attribute_predicate.hpp [3:5]
- boost/log/detail/c_str.hpp [3:5]
- boost/log/detail/cleanup_scope_guard.hpp [3:5]
- boost/log/detail/code_conversion.hpp [3:5]
- boost/log/detail/config.hpp [3:5]
- boost/log/detail/copy_cv.hpp [3:5]
- boost/log/detail/custom_terminal_spec.hpp [3:5]
- boost/log/detail/date_time_fmt_gen_traits_fwd.hpp [3:5]
- boost/log/detail/date_time_format_parser.hpp [3:5]
- boost/log/detail/decomposed_time.hpp [3:5]
- boost/log/detail/deduce_char_type.hpp [3:5]
- boost/log/detail/default_attribute_names.hpp [3:5]
- boost/log/detail/embedded_string_type.hpp [3:5]
- boost/log/detail/enqueued_record.hpp [3:5]
- boost/log/detail/event.hpp [3:5]
- boost/log/detail/fake_mutex.hpp [3:5]
- boost/log/detail/footer.hpp [3:5]
- boost/log/detail/format.hpp [3:5]
- boost/log/detail/function_traits.hpp [3:5]
- boost/log/detail/generate_overloads.hpp [3:5]
- boost/log/detail/header.hpp [3:5]
- boost/log/detail/id.hpp [3:5]
- boost/log/detail/is_character_type.hpp [3:5]
- boost/log/detail/is_ostream.hpp [3:5]
- boost/log/detail/light_function.hpp [3:5]
- boost/log/detail/light_function_pp.hpp [3:5]
- boost/log/detail/light_rw_mutex.hpp [3:5]
- boost/log/detail/locking_ptr.hpp [3:5]
- boost/log/detail/locks.hpp [3:5]
- boost/log/detail/named_scope_fmt_pp.hpp [3:5]
- boost/log/detail/native_typeof.hpp [3:5]
- boost/log/detail/parameter_tools.hpp [3:5]
- boost/log/detail/pause.hpp [3:5]
- boost/log/detail/pp_identity.hpp [3:5]
- boost/log/detail/process_id.hpp [3:5]
- boost/log/detail/setup_config.hpp [3:5]
- boost/log/detail/sfinae_tools.hpp [3:5]
- boost/log/detail/singleton.hpp [3:5]
- boost/log/detail/sink_init_helpers.hpp [3:5]
- boost/log/detail/snprintf.hpp [3:5]
- boost/log/detail/tagged_integer.hpp [3:5]
- boost/log/detail/thread_id.hpp [3:5]
- boost/log/detail/thread_specific.hpp [3:5]
- boost/log/detail/threadsafe_queue.hpp [3:5]
- boost/log/detail/timestamp.hpp [3:5]
- boost/log/detail/trivial_keyword.hpp [3:5]
- boost/log/detail/unary_function_terminal.hpp [3:5]
- boost/log/detail/unhandled_exception_count.hpp [3:5]
- boost/log/detail/value_ref_visitation.hpp [3:5]
- boost/log/exceptions.hpp [3:5]
- boost/log/expressions.hpp [3:5]
- boost/log/expressions/attr.hpp [3:5]
- boost/log/expressions/attr_fwd.hpp [3:5]
- boost/log/expressions/filter.hpp [3:5]
- boost/log/expressions/formatter.hpp [3:5]
- boost/log/expressions/formatters.hpp [3:5]
- boost/log/expressions/formatters/c_decorator.hpp [3:5]
- boost/log/expressions/formatters/char_decorator.hpp [3:5]
- boost/log/expressions/formatters/csv_decorator.hpp [3:5]
- boost/log/expressions/formatters/date_time.hpp [3:5]
- boost/log/expressions/formatters/format.hpp [3:5]
- boost/log/expressions/formatters/if.hpp [3:5]
- boost/log/expressions/formatters/max_size_decorator.hpp [3:5]
- boost/log/expressions/formatters/named_scope.hpp [3:5]
- boost/log/expressions/formatters/stream.hpp [3:5]
- boost/log/expressions/formatters/wrap_formatter.hpp [3:5]
- boost/log/expressions/formatters/xml_decorator.hpp [3:5]
- boost/log/expressions/is_keyword_descriptor.hpp [3:5]
- boost/log/expressions/keyword.hpp [3:5]
- boost/log/expressions/keyword_fwd.hpp [3:5]
- boost/log/expressions/message.hpp [3:5]
- boost/log/expressions/predicates.hpp [3:5]
- boost/log/expressions/predicates/begins_with.hpp [3:5]
- boost/log/expressions/predicates/channel_severity_filter.hpp [3:5]
- boost/log/expressions/predicates/contains.hpp [3:5]
- boost/log/expressions/predicates/ends_with.hpp [3:5]
- boost/log/expressions/predicates/has_attr.hpp [3:5]
- boost/log/expressions/predicates/is_debugger_present.hpp [3:5]
- boost/log/expressions/predicates/is_in_range.hpp [3:5]
- boost/log/expressions/predicates/matches.hpp [3:5]
- boost/log/expressions/record.hpp [3:5]
- boost/log/keywords/auto_flush.hpp [3:5]
- boost/log/keywords/block_size.hpp [3:5]
- boost/log/keywords/capacity.hpp [3:5]
- boost/log/keywords/channel.hpp [3:5]
- boost/log/keywords/delimiter.hpp [3:5]
- boost/log/keywords/depth.hpp [3:5]
- boost/log/keywords/empty_marker.hpp [3:5]
- boost/log/keywords/enable_final_rotation.hpp [3:5]
- boost/log/keywords/facility.hpp [3:5]
- boost/log/keywords/file_name.hpp [3:5]
- boost/log/keywords/filter.hpp [3:5]
- boost/log/keywords/format.hpp [3:5]
- boost/log/keywords/ident.hpp [3:5]
- boost/log/keywords/incomplete_marker.hpp [3:5]
- boost/log/keywords/ip_version.hpp [3:5]
- boost/log/keywords/iteration.hpp [3:5]
- boost/log/keywords/log_name.hpp [3:5]
- boost/log/keywords/log_source.hpp [3:5]
- boost/log/keywords/max_files.hpp [3:5]
- boost/log/keywords/max_size.hpp [3:5]
- boost/log/keywords/message_file.hpp [3:5]
- boost/log/keywords/min_free_space.hpp [3:5]
- boost/log/keywords/name.hpp [3:5]
- boost/log/keywords/open_mode.hpp [3:5]
- boost/log/keywords/order.hpp [3:5]
- boost/log/keywords/ordering_window.hpp [3:5]
- boost/log/keywords/overflow_policy.hpp [3:5]
- boost/log/keywords/permissions.hpp [3:5]
- boost/log/keywords/registration.hpp [3:5]
- boost/log/keywords/rotation_size.hpp [3:5]
- boost/log/keywords/scan_method.hpp [3:5]
- boost/log/keywords/severity.hpp [3:5]
- boost/log/keywords/start_thread.hpp [3:5]
- boost/log/keywords/target.hpp [3:5]
- boost/log/keywords/time_based_rotation.hpp [3:5]
- boost/log/keywords/use_impl.hpp [3:5]
- boost/log/sinks.hpp [3:5]
- boost/log/sinks/async_frontend.hpp [3:5]
- boost/log/sinks/attribute_mapping.hpp [3:5]
- boost/log/sinks/basic_sink_backend.hpp [3:5]
- boost/log/sinks/basic_sink_frontend.hpp [3:5]
- boost/log/sinks/block_on_overflow.hpp [3:5]
- boost/log/sinks/bounded_fifo_queue.hpp [3:5]
- boost/log/sinks/bounded_ordering_queue.hpp [3:5]
- boost/log/sinks/debug_output_backend.hpp [3:5]
- boost/log/sinks/drop_on_overflow.hpp [3:5]
- boost/log/sinks/event_log_backend.hpp [3:5]
- boost/log/sinks/event_log_constants.hpp [3:5]
- boost/log/sinks/frontend_requirements.hpp [3:5]
- boost/log/sinks/sink.hpp [3:5]
- boost/log/sinks/sync_frontend.hpp [3:5]
- boost/log/sinks/syslog_backend.hpp [3:5]
- boost/log/sinks/syslog_constants.hpp [3:5]
- boost/log/sinks/text_file_backend.hpp [3:5]
- boost/log/sinks/text_ipc_message_queue_backend.hpp [4:6]
- boost/log/sinks/text_multifile_backend.hpp [3:5]
- boost/log/sinks/text_ostream_backend.hpp [3:5]
- boost/log/sinks/unbounded_fifo_queue.hpp [3:5]
- boost/log/sinks/unbounded_ordering_queue.hpp [3:5]
- boost/log/sinks/unlocked_frontend.hpp [3:5]
- boost/log/sources/basic_logger.hpp [3:5]
- boost/log/sources/channel_feature.hpp [3:5]
- boost/log/sources/channel_logger.hpp [3:5]
- boost/log/sources/exception_handler_feature.hpp [3:5]
- boost/log/sources/features.hpp [3:5]
- boost/log/sources/global_logger_storage.hpp [3:5]
- boost/log/sources/logger.hpp [3:5]
- boost/log/sources/record_ostream.hpp [3:5]
- boost/log/sources/severity_channel_logger.hpp [3:5]
- boost/log/sources/severity_feature.hpp [3:5]
- boost/log/sources/severity_logger.hpp [3:5]
- boost/log/sources/threading_models.hpp [3:5]
- boost/log/support/date_time.hpp [3:5]
- boost/log/support/exception.hpp [3:5]
- boost/log/support/regex.hpp [3:5]
- boost/log/support/spirit_classic.hpp [3:5]
- boost/log/support/spirit_qi.hpp [3:5]
- boost/log/support/std_regex.hpp [3:5]
- boost/log/support/xpressive.hpp [3:5]
- boost/log/trivial.hpp [3:5]
- boost/log/utility/exception_handler.hpp [3:5]
- boost/log/utility/formatting_ostream.hpp [3:5]
- boost/log/utility/formatting_ostream_fwd.hpp [3:5]
- boost/log/utility/functional.hpp [3:5]
- boost/log/utility/functional/as_action.hpp [3:5]
- boost/log/utility/functional/begins_with.hpp [3:5]
- boost/log/utility/functional/bind.hpp [3:5]
- boost/log/utility/functional/bind_assign.hpp [3:5]
- boost/log/utility/functional/bind_output.hpp [3:5]
- boost/log/utility/functional/bind_to_log.hpp [3:5]
- boost/log/utility/functional/contains.hpp [3:5]
- boost/log/utility/functional/ends_with.hpp [3:5]
- boost/log/utility/functional/fun_ref.hpp [3:5]
- boost/log/utility/functional/in_range.hpp [3:5]
- boost/log/utility/functional/logical.hpp [3:5]
- boost/log/utility/functional/matches.hpp [3:5]
- boost/log/utility/functional/nop.hpp [3:5]
- boost/log/utility/functional/save_result.hpp [3:5]
- boost/log/utility/ipc/object_name.hpp [3:5]
- boost/log/utility/ipc/reliable_message_queue.hpp [4:6]
- boost/log/utility/manipulators.hpp [3:5]
- boost/log/utility/manipulators/add_value.hpp [3:5]
- boost/log/utility/manipulators/dump.hpp [3:5]
- boost/log/utility/manipulators/to_log.hpp [3:5]
- boost/log/utility/once_block.hpp [3:5]
- boost/log/utility/open_mode.hpp [3:5]
- boost/log/utility/permissions.hpp [4:6]
- boost/log/utility/record_ordering.hpp [3:5]
- boost/log/utility/setup.hpp [3:5]
- boost/log/utility/setup/common_attributes.hpp [3:5]
- boost/log/utility/setup/console.hpp [3:5]
- boost/log/utility/setup/file.hpp [3:5]
- boost/log/utility/setup/filter_parser.hpp [3:5]
- boost/log/utility/setup/formatter_parser.hpp [3:5]
- boost/log/utility/setup/from_settings.hpp [3:5]
- boost/log/utility/setup/from_stream.hpp [3:5]
- boost/log/utility/setup/settings.hpp [3:5]
- boost/log/utility/setup/settings_parser.hpp [3:5]
- boost/log/utility/strictest_lock.hpp [3:5]
- boost/log/utility/string_literal.hpp [3:5]
- boost/log/utility/string_literal_fwd.hpp [3:5]
- boost/log/utility/type_dispatch/date_time_types.hpp [3:5]
- boost/log/utility/type_dispatch/dynamic_type_dispatcher.hpp [3:5]
- boost/log/utility/type_dispatch/standard_types.hpp [3:5]
- boost/log/utility/type_dispatch/static_type_dispatcher.hpp [3:5]
- boost/log/utility/type_dispatch/type_dispatcher.hpp [3:5]
- boost/log/utility/unique_identifier_name.hpp [3:5]
- boost/log/utility/unused_variable.hpp [3:5]
- boost/log/utility/value_ref.hpp [3:5]
- boost/log/utility/value_ref_fwd.hpp [3:5]
- boost/smart_ptr/intrusive_ref_counter.hpp [3:5]
- boost/uuid/detail/config.hpp [3:5]
- boost/uuid/detail/uuid_generic.ipp [3:5]
- boost/uuid/detail/uuid_x86.ipp [3:5]
- boost/uuid/sha1.hpp [2:4]
- libs/log/config/atomic-int32/atomic_int32.cpp [3:5]
- libs/log/config/native-syslog/native_syslog.cpp [3:5]
- libs/log/config/pthread-mutex-robust/pthread_mutex_robust.cpp [3:5]
- libs/log/config/visibility/visibility.cpp [3:5]
- libs/log/config/x86-ext/avx2.cpp [3:5]
- libs/log/config/x86-ext/ssse3.cpp [3:5]
- libs/log/config/xopen-source-600/xopen_source_600.cpp [3:5]
- libs/log/src/alignment_gap_between.hpp [3:5]
- libs/log/src/attribute_name.cpp [3:5]
- libs/log/src/attribute_set.cpp [3:5]
- libs/log/src/attribute_set_impl.hpp [3:5]
- libs/log/src/attribute_value_set.cpp [3:5]
- libs/log/src/bit_tools.hpp [3:5]
- libs/log/src/code_conversion.cpp [3:5]
- libs/log/src/core.cpp [3:5]
- libs/log/src/date_time_format_parser.cpp [3:5]
- libs/log/src/default_attribute_names.cpp [3:5]
- libs/log/src/default_sink.cpp [3:5]
- libs/log/src/default_sink.hpp [3:5]
- libs/log/src/dump.cpp [3:5]
- libs/log/src/dump_avx2.cpp [3:5]
- libs/log/src/dump_ssse3.cpp [3:5]
- libs/log/src/event.cpp [3:5]
- libs/log/src/exceptions.cpp [3:5]
- libs/log/src/format_parser.cpp [3:5]
- libs/log/src/global_logger_storage.cpp [3:5]
- libs/log/src/id_formatting.hpp [3:5]
- libs/log/src/murmur3.hpp [3:5]
- libs/log/src/named_scope.cpp [3:5]
- libs/log/src/named_scope_format_parser.cpp [3:5]
- libs/log/src/once_block.cpp [3:5]
- libs/log/src/permissions.cpp [3:5]
- libs/log/src/posix/ipc_reliable_message_queue.cpp [4:6]
- libs/log/src/posix/ipc_sync_wrappers.hpp [3:5]
- libs/log/src/posix/object_name.cpp [3:5]
- libs/log/src/process_id.cpp [3:5]
- libs/log/src/process_name.cpp [3:5]
- libs/log/src/record_ostream.cpp [3:5]
- libs/log/src/setup/default_filter_factory.cpp [3:5]
- libs/log/src/setup/default_filter_factory.hpp [3:5]
- libs/log/src/setup/default_formatter_factory.cpp [3:5]
- libs/log/src/setup/default_formatter_factory.hpp [3:5]
- libs/log/src/setup/filter_parser.cpp [3:5]
- libs/log/src/setup/formatter_parser.cpp [3:5]
- libs/log/src/setup/init_from_settings.cpp [3:5]
- libs/log/src/setup/init_from_stream.cpp [3:5]
- libs/log/src/setup/matches_relation_factory.cpp [3:5]
- libs/log/src/setup/parser_utils.cpp [3:5]
- libs/log/src/setup/parser_utils.hpp [3:5]
- libs/log/src/setup/settings_parser.cpp [3:5]
- libs/log/src/severity_level.cpp [3:5]
- libs/log/src/spirit_encoding.cpp [3:5]
- libs/log/src/spirit_encoding.hpp [3:5]
- libs/log/src/stateless_allocator.hpp [3:5]
- libs/log/src/syslog_backend.cpp [3:5]
- libs/log/src/text_file_backend.cpp [3:5]
- libs/log/src/text_multifile_backend.cpp [3:5]
- libs/log/src/text_ostream_backend.cpp [3:5]
- libs/log/src/thread_id.cpp [3:5]
- libs/log/src/thread_specific.cpp [3:5]
- libs/log/src/threadsafe_queue.cpp [3:5]
- libs/log/src/timer.cpp [3:5]
- libs/log/src/timestamp.cpp [3:5]
- libs/log/src/trivial.cpp [3:5]
- libs/log/src/unhandled_exception_count.cpp [3:5]
- libs/log/src/unique_ptr.hpp [3:5]
- libs/log/src/windows/auto_handle.hpp [3:5]
- libs/log/src/windows/debug_output_backend.cpp [3:5]
- libs/log/src/windows/event_log_backend.cpp [3:5]
- libs/log/src/windows/event_log_registry.hpp [3:5]
- libs/log/src/windows/ipc_reliable_message_queue.cpp [4:6]
- libs/log/src/windows/ipc_sync_wrappers.cpp [3:5]
- libs/log/src/windows/ipc_sync_wrappers.hpp [3:5]
- libs/log/src/windows/light_rw_mutex.cpp [3:5]
- libs/log/src/windows/mapped_shared_memory.cpp [3:5]
- libs/log/src/windows/mapped_shared_memory.hpp [3:5]
- libs/log/src/windows/object_name.cpp [3:5]
- libs/log/src/windows/utf_code_conversion.hpp [3:5]
-
-KEEP BSL-1.0 bd5d1d3e2ab4557acb808f71d4a03783
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/binary_search.hpp at line 3, boost/mpl/O1_size.hpp at line 8, boost/mpl/O1_size_fwd.hpp at line 8, boost/mpl/accumulate.hpp at line 9, boost/mpl/advance.hpp at line 8, boost/mpl/advance_fwd.hpp at line 8, boost/mpl/alias.hpp at line 8, boost/mpl/always.hpp at line 8, boost/mpl/and.hpp at line 8, boost/mpl/apply.hpp at line 12, boost/mpl/apply_fwd.hpp at line 12, boost/mpl/apply_wrap.hpp at line 12, boost/mpl/arg.hpp at line 13, boost/mpl/arg_fwd.hpp at line 9, boost/mpl/arithmetic.hpp at line 8, boost/mpl/as_sequence.hpp at line 8, boost/mpl/assert.hpp at line 8, boost/mpl/at.hpp at line 8, boost/mpl/at_fwd.hpp at line 8, boost/mpl/aux_/O1_size_impl.hpp at line 8, boost/mpl/aux_/adl_barrier.hpp at line 8, boost/mpl/aux_/advance_backward.hpp at line 12, boost/mpl/aux_/advance_forward.hpp at line 12, boost/mpl/aux_/apply_1st.hpp at line 8, boost/mpl/aux_/arg_typedef.hpp at line 8, boost/mpl/aux_/arithmetic_op.hpp at line 7, boost/mpl/aux_/arity.hpp at line 8, boost/mpl/aux_/arity_spec.hpp at line 8, boost/mpl/aux_/at_impl.hpp at line 8, boost/mpl/aux_/back_impl.hpp at line 8, boost/mpl/aux_/basic_bind.hpp at line 9, boost/mpl/aux_/clear_impl.hpp at line 8, boost/mpl/aux_/common_name_wknd.hpp at line 8, boost/mpl/aux_/comparison_op.hpp at line 7, boost/mpl/aux_/config/adl.hpp at line 8, boost/mpl/aux_/config/arrays.hpp at line 8, boost/mpl/aux_/config/bcc.hpp at line 8, boost/mpl/aux_/config/bind.hpp at line 9, boost/mpl/aux_/config/compiler.hpp at line 8, boost/mpl/aux_/config/ctps.hpp at line 8, boost/mpl/aux_/config/dependent_nttp.hpp at line 8, boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp at line 8, boost/mpl/aux_/config/dtp.hpp at line 8, boost/mpl/aux_/config/eti.hpp at line 8, boost/mpl/aux_/config/forwarding.hpp at line 8, boost/mpl/aux_/config/gcc.hpp at line 8, boost/mpl/aux_/config/has_apply.hpp at line 8, boost/mpl/aux_/config/has_xxx.hpp at line 9, boost/mpl/aux_/config/integral.hpp at line 8, boost/mpl/aux_/config/intel.hpp at line 8, boost/mpl/aux_/config/lambda.hpp at line 8, boost/mpl/aux_/config/msvc.hpp at line 8, boost/mpl/aux_/config/msvc_typename.hpp at line 8, boost/mpl/aux_/config/nttp.hpp at line 8, boost/mpl/aux_/config/operators.hpp at line 8, boost/mpl/aux_/config/overload_resolution.hpp at line 8, boost/mpl/aux_/config/pp_counter.hpp at line 8, boost/mpl/aux_/config/preprocessor.hpp at line 8, boost/mpl/aux_/config/static_constant.hpp at line 8, boost/mpl/aux_/config/ttp.hpp at line 8, boost/mpl/aux_/config/typeof.hpp at line 8, boost/mpl/aux_/config/use_preprocessed.hpp at line 8, boost/mpl/aux_/config/workaround.hpp at line 8, boost/mpl/aux_/contains_impl.hpp at line 9, boost/mpl/aux_/count_args.hpp at line 7, boost/mpl/aux_/count_impl.hpp at line 8, boost/mpl/aux_/empty_impl.hpp at line 8, boost/mpl/aux_/erase_impl.hpp at line 8, boost/mpl/aux_/erase_key_impl.hpp at line 8, boost/mpl/aux_/filter_iter.hpp at line 8, boost/mpl/aux_/find_if_pred.hpp at line 9, boost/mpl/aux_/fold_impl.hpp at line 8, boost/mpl/aux_/fold_impl_body.hpp at line 9, boost/mpl/aux_/fold_op.hpp at line 8, boost/mpl/aux_/fold_pred.hpp at line 8, boost/mpl/aux_/front_impl.hpp at line 8, boost/mpl/aux_/full_lambda.hpp at line 12, boost/mpl/aux_/has_apply.hpp at line 8, boost/mpl/aux_/has_begin.hpp at line 8, boost/mpl/aux_/has_key_impl.hpp at line 9, boost/mpl/aux_/has_rebind.hpp at line 8, boost/mpl/aux_/has_size.hpp at line 8, boost/mpl/aux_/has_tag.hpp at line 8, boost/mpl/aux_/has_type.hpp at line 8, boost/mpl/aux_/include_preprocessed.hpp at line 7, boost/mpl/aux_/insert_impl.hpp at line 8, boost/mpl/aux_/insert_range_impl.hpp at line 8, boost/mpl/aux_/inserter_algorithm.hpp at line 9, boost/mpl/aux_/integral_wrapper.hpp at line 5, boost/mpl/aux_/is_msvc_eti_arg.hpp at line 8, boost/mpl/aux_/iter_apply.hpp at line 8, boost/mpl/aux_/iter_fold_if_impl.hpp at line 9, boost/mpl/aux_/iter_fold_impl.hpp at line 8, boost/mpl/aux_/iter_push_front.hpp at line 8, boost/mpl/aux_/joint_iter.hpp at line 8, boost/mpl/aux_/lambda_arity_param.hpp at line 8, boost/mpl/aux_/lambda_no_ctps.hpp at line 12, boost/mpl/aux_/lambda_spec.hpp at line 8, boost/mpl/aux_/lambda_support.hpp at line 8, boost/mpl/aux_/largest_int.hpp at line 8, boost/mpl/aux_/logical_op.hpp at line 5, boost/mpl/aux_/msvc_dtw.hpp at line 5, boost/mpl/aux_/msvc_eti_base.hpp at line 8, boost/mpl/aux_/msvc_is_class.hpp at line 8, boost/mpl/aux_/msvc_never_true.hpp at line 8, boost/mpl/aux_/msvc_type.hpp at line 8, boost/mpl/aux_/na.hpp at line 8, boost/mpl/aux_/na_assert.hpp at line 8, boost/mpl/aux_/na_fwd.hpp at line 8, boost/mpl/aux_/na_spec.hpp at line 8, boost/mpl/aux_/nested_type_wknd.hpp at line 8, boost/mpl/aux_/nttp_decl.hpp at line 8, boost/mpl/aux_/numeric_cast_utils.hpp at line 8, boost/mpl/aux_/numeric_op.hpp at line 11, boost/mpl/aux_/order_impl.hpp at line 9, boost/mpl/aux_/overload_names.hpp at line 8, boost/mpl/aux_/partition_op.hpp at line 9, boost/mpl/aux_/pop_back_impl.hpp at line 8, boost/mpl/aux_/pop_front_impl.hpp at line 8, boost/mpl/aux_/preprocessed/bcc/advance_backward.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/advance_forward.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/and.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/apply.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/apply_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/apply_wrap.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/arg.hpp at line 6, boost/mpl/aux_/preprocessed/bcc/basic_bind.hpp at line 6, boost/mpl/aux_/preprocessed/bcc/bind.hpp at line 6, boost/mpl/aux_/preprocessed/bcc/bind_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/bitand.hpp at line 6, boost/mpl/aux_/preprocessed/bcc/bitor.hpp at line 6, boost/mpl/aux_/preprocessed/bcc/bitxor.hpp at line 6, boost/mpl/aux_/preprocessed/bcc/deque.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/divides.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/full_lambda.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/greater.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/greater_equal.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/inherit.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/iter_fold_if_impl.hpp at line 6, boost/mpl/aux_/preprocessed/bcc/iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/lambda_no_ctps.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/less.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/less_equal.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/list.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/list_c.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/map.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/minus.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/modulus.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/not_equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/or.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/placeholders.hpp at line 6, boost/mpl/aux_/preprocessed/bcc/plus.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/quote.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/reverse_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/reverse_iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/set.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/set_c.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/shift_left.hpp at line 6, boost/mpl/aux_/preprocessed/bcc/shift_right.hpp at line 6, boost/mpl/aux_/preprocessed/bcc/template_arity.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/times.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/unpack_args.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/vector.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/vector_c.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/advance_backward.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/advance_forward.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/and.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/apply.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/apply_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/apply_wrap.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/arg.hpp at line 6, boost/mpl/aux_/preprocessed/bcc551/basic_bind.hpp at line 6, boost/mpl/aux_/preprocessed/bcc551/bind.hpp at line 6, boost/mpl/aux_/preprocessed/bcc551/bind_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/bitand.hpp at line 6, boost/mpl/aux_/preprocessed/bcc551/bitor.hpp at line 6, boost/mpl/aux_/preprocessed/bcc551/bitxor.hpp at line 6, boost/mpl/aux_/preprocessed/bcc551/deque.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/divides.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/full_lambda.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/greater.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/greater_equal.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/inherit.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/iter_fold_if_impl.hpp at line 6, boost/mpl/aux_/preprocessed/bcc551/iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/lambda_no_ctps.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/less.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/less_equal.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/list.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/list_c.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/map.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/minus.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/modulus.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/not_equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/or.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/placeholders.hpp at line 6, boost/mpl/aux_/preprocessed/bcc551/plus.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/quote.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/reverse_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/reverse_iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/set.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/set_c.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/shift_left.hpp at line 6, boost/mpl/aux_/preprocessed/bcc551/shift_right.hpp at line 6, boost/mpl/aux_/preprocessed/bcc551/template_arity.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/times.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/unpack_args.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/vector.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/vector_c.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/advance_backward.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/advance_forward.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/and.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/apply.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/apply_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/apply_wrap.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/arg.hpp at line 6, boost/mpl/aux_/preprocessed/bcc_pre590/basic_bind.hpp at line 6, boost/mpl/aux_/preprocessed/bcc_pre590/bind.hpp at line 6, boost/mpl/aux_/preprocessed/bcc_pre590/bind_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/bitand.hpp at line 6, boost/mpl/aux_/preprocessed/bcc_pre590/bitor.hpp at line 6, boost/mpl/aux_/preprocessed/bcc_pre590/bitxor.hpp at line 6, boost/mpl/aux_/preprocessed/bcc_pre590/deque.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/divides.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/full_lambda.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/greater.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/greater_equal.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/inherit.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_if_impl.hpp at line 6, boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/lambda_no_ctps.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/less.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/less_equal.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/list.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/list_c.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/map.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/minus.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/modulus.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/not_equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/or.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/placeholders.hpp at line 6, boost/mpl/aux_/preprocessed/bcc_pre590/plus.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/quote.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/reverse_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/reverse_iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/set.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/set_c.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/shift_left.hpp at line 6, boost/mpl/aux_/preprocessed/bcc_pre590/shift_right.hpp at line 6, boost/mpl/aux_/preprocessed/bcc_pre590/template_arity.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/times.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/unpack_args.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/vector.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/vector_c.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/advance_backward.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/advance_forward.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/and.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/apply.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/apply_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/apply_wrap.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/arg.hpp at line 6, boost/mpl/aux_/preprocessed/dmc/basic_bind.hpp at line 6, boost/mpl/aux_/preprocessed/dmc/bind.hpp at line 6, boost/mpl/aux_/preprocessed/dmc/bind_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/bitand.hpp at line 6, boost/mpl/aux_/preprocessed/dmc/bitor.hpp at line 6, boost/mpl/aux_/preprocessed/dmc/bitxor.hpp at line 6, boost/mpl/aux_/preprocessed/dmc/deque.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/divides.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/full_lambda.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/greater.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/greater_equal.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/inherit.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/iter_fold_if_impl.hpp at line 6, boost/mpl/aux_/preprocessed/dmc/iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/lambda_no_ctps.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/less.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/less_equal.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/list.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/list_c.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/map.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/minus.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/modulus.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/not_equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/or.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/placeholders.hpp at line 6, boost/mpl/aux_/preprocessed/dmc/plus.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/quote.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/reverse_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/reverse_iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/set.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/set_c.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/shift_left.hpp at line 6, boost/mpl/aux_/preprocessed/dmc/shift_right.hpp at line 6, boost/mpl/aux_/preprocessed/dmc/template_arity.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/times.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/unpack_args.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/vector.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/vector_c.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/advance_backward.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/advance_forward.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/and.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/apply.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/arg.hpp at line 6, boost/mpl/aux_/preprocessed/gcc/basic_bind.hpp at line 6, boost/mpl/aux_/preprocessed/gcc/bind.hpp at line 6, boost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/bitand.hpp at line 6, boost/mpl/aux_/preprocessed/gcc/bitor.hpp at line 6, boost/mpl/aux_/preprocessed/gcc/bitxor.hpp at line 6, boost/mpl/aux_/preprocessed/gcc/deque.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/divides.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/full_lambda.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/greater.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/greater_equal.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/inherit.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp at line 6, boost/mpl/aux_/preprocessed/gcc/iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/less.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/less_equal.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/list.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/list_c.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/map.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/minus.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/modulus.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/not_equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/or.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/placeholders.hpp at line 6, boost/mpl/aux_/preprocessed/gcc/plus.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/quote.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/reverse_iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/set.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/set_c.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/shift_left.hpp at line 6, boost/mpl/aux_/preprocessed/gcc/shift_right.hpp at line 6, boost/mpl/aux_/preprocessed/gcc/template_arity.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/times.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/unpack_args.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/vector.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/vector_c.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/advance_backward.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/advance_forward.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/and.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/apply.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/apply_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/apply_wrap.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/arg.hpp at line 6, boost/mpl/aux_/preprocessed/msvc60/basic_bind.hpp at line 6, boost/mpl/aux_/preprocessed/msvc60/bind.hpp at line 6, boost/mpl/aux_/preprocessed/msvc60/bind_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/bitand.hpp at line 6, boost/mpl/aux_/preprocessed/msvc60/bitor.hpp at line 6, boost/mpl/aux_/preprocessed/msvc60/bitxor.hpp at line 6, boost/mpl/aux_/preprocessed/msvc60/deque.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/divides.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/full_lambda.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/greater.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/greater_equal.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/inherit.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/iter_fold_if_impl.hpp at line 6, boost/mpl/aux_/preprocessed/msvc60/iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/lambda_no_ctps.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/less.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/less_equal.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/list.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/list_c.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/map.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/minus.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/modulus.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/not_equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/or.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/placeholders.hpp at line 6, boost/mpl/aux_/preprocessed/msvc60/plus.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/quote.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/reverse_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/reverse_iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/set.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/set_c.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/shift_left.hpp at line 6, boost/mpl/aux_/preprocessed/msvc60/shift_right.hpp at line 6, boost/mpl/aux_/preprocessed/msvc60/template_arity.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/times.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/unpack_args.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/vector.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/vector_c.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/advance_backward.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/advance_forward.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/and.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/apply.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/apply_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/apply_wrap.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/arg.hpp at line 6, boost/mpl/aux_/preprocessed/msvc70/basic_bind.hpp at line 6, boost/mpl/aux_/preprocessed/msvc70/bind.hpp at line 6, boost/mpl/aux_/preprocessed/msvc70/bind_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/bitand.hpp at line 6, boost/mpl/aux_/preprocessed/msvc70/bitor.hpp at line 6, boost/mpl/aux_/preprocessed/msvc70/bitxor.hpp at line 6, boost/mpl/aux_/preprocessed/msvc70/deque.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/divides.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/full_lambda.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/greater.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/greater_equal.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/inherit.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/iter_fold_if_impl.hpp at line 6, boost/mpl/aux_/preprocessed/msvc70/iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/lambda_no_ctps.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/less.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/less_equal.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/list.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/list_c.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/map.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/minus.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/modulus.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/not_equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/or.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/placeholders.hpp at line 6, boost/mpl/aux_/preprocessed/msvc70/plus.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/quote.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/reverse_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/reverse_iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/set.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/set_c.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/shift_left.hpp at line 6, boost/mpl/aux_/preprocessed/msvc70/shift_right.hpp at line 6, boost/mpl/aux_/preprocessed/msvc70/template_arity.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/times.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/unpack_args.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/vector.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/vector_c.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/advance_backward.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/advance_forward.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/and.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/apply.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/apply_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/apply_wrap.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/arg.hpp at line 6, boost/mpl/aux_/preprocessed/mwcw/basic_bind.hpp at line 6, boost/mpl/aux_/preprocessed/mwcw/bind.hpp at line 6, boost/mpl/aux_/preprocessed/mwcw/bind_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/bitand.hpp at line 6, boost/mpl/aux_/preprocessed/mwcw/bitor.hpp at line 6, boost/mpl/aux_/preprocessed/mwcw/bitxor.hpp at line 6, boost/mpl/aux_/preprocessed/mwcw/deque.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/divides.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/full_lambda.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/greater.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/greater_equal.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/inherit.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/iter_fold_if_impl.hpp at line 6, boost/mpl/aux_/preprocessed/mwcw/iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/lambda_no_ctps.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/less.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/less_equal.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/list.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/list_c.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/map.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/minus.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/modulus.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/not_equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/or.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/placeholders.hpp at line 6, boost/mpl/aux_/preprocessed/mwcw/plus.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/quote.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/reverse_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/reverse_iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/set.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/set_c.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/shift_left.hpp at line 6, boost/mpl/aux_/preprocessed/mwcw/shift_right.hpp at line 6, boost/mpl/aux_/preprocessed/mwcw/template_arity.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/times.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/unpack_args.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/vector.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/vector_c.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/advance_backward.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/advance_forward.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/and.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/apply.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/apply_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/apply_wrap.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/arg.hpp at line 6, boost/mpl/aux_/preprocessed/no_ctps/basic_bind.hpp at line 6, boost/mpl/aux_/preprocessed/no_ctps/bind.hpp at line 6, boost/mpl/aux_/preprocessed/no_ctps/bind_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/bitand.hpp at line 6, boost/mpl/aux_/preprocessed/no_ctps/bitor.hpp at line 6, boost/mpl/aux_/preprocessed/no_ctps/bitxor.hpp at line 6, boost/mpl/aux_/preprocessed/no_ctps/deque.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/divides.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/full_lambda.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/greater.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/greater_equal.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/inherit.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/iter_fold_if_impl.hpp at line 6, boost/mpl/aux_/preprocessed/no_ctps/iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/lambda_no_ctps.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/less.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/less_equal.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/list.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/list_c.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/map.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/minus.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/modulus.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/not_equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/or.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/placeholders.hpp at line 6, boost/mpl/aux_/preprocessed/no_ctps/plus.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/quote.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/reverse_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/reverse_iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/set.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/set_c.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/shift_left.hpp at line 6, boost/mpl/aux_/preprocessed/no_ctps/shift_right.hpp at line 6, boost/mpl/aux_/preprocessed/no_ctps/template_arity.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/times.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/unpack_args.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/vector.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/vector_c.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/advance_backward.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/advance_forward.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/and.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/apply.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/apply_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/apply_wrap.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/arg.hpp at line 6, boost/mpl/aux_/preprocessed/no_ttp/basic_bind.hpp at line 6, boost/mpl/aux_/preprocessed/no_ttp/bind.hpp at line 6, boost/mpl/aux_/preprocessed/no_ttp/bind_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/bitand.hpp at line 6, boost/mpl/aux_/preprocessed/no_ttp/bitor.hpp at line 6, boost/mpl/aux_/preprocessed/no_ttp/bitxor.hpp at line 6, boost/mpl/aux_/preprocessed/no_ttp/deque.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/divides.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/full_lambda.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/greater.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/greater_equal.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/inherit.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/iter_fold_if_impl.hpp at line 6, boost/mpl/aux_/preprocessed/no_ttp/iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/lambda_no_ctps.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/less.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/less_equal.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/list.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/list_c.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/map.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/minus.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/modulus.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/not_equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/or.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/placeholders.hpp at line 6, boost/mpl/aux_/preprocessed/no_ttp/plus.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/quote.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/reverse_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/reverse_iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/set.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/set_c.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/shift_left.hpp at line 6, boost/mpl/aux_/preprocessed/no_ttp/shift_right.hpp at line 6, boost/mpl/aux_/preprocessed/no_ttp/template_arity.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/times.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/unpack_args.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/vector.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/vector_c.hpp at line 5, boost/mpl/aux_/preprocessed/plain/advance_backward.hpp at line 5, boost/mpl/aux_/preprocessed/plain/advance_forward.hpp at line 5, boost/mpl/aux_/preprocessed/plain/and.hpp at line 5, boost/mpl/aux_/preprocessed/plain/apply.hpp at line 5, boost/mpl/aux_/preprocessed/plain/apply_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/plain/apply_wrap.hpp at line 5, boost/mpl/aux_/preprocessed/plain/arg.hpp at line 6, boost/mpl/aux_/preprocessed/plain/basic_bind.hpp at line 6, boost/mpl/aux_/preprocessed/plain/bind.hpp at line 6, boost/mpl/aux_/preprocessed/plain/bind_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/plain/bitand.hpp at line 6, boost/mpl/aux_/preprocessed/plain/bitor.hpp at line 6, boost/mpl/aux_/preprocessed/plain/bitxor.hpp at line 6, boost/mpl/aux_/preprocessed/plain/deque.hpp at line 5, boost/mpl/aux_/preprocessed/plain/divides.hpp at line 5, boost/mpl/aux_/preprocessed/plain/equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/plain/fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/plain/full_lambda.hpp at line 5, boost/mpl/aux_/preprocessed/plain/greater.hpp at line 5, boost/mpl/aux_/preprocessed/plain/greater_equal.hpp at line 5, boost/mpl/aux_/preprocessed/plain/inherit.hpp at line 5, boost/mpl/aux_/preprocessed/plain/iter_fold_if_impl.hpp at line 6, boost/mpl/aux_/preprocessed/plain/iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/plain/lambda_no_ctps.hpp at line 5, boost/mpl/aux_/preprocessed/plain/less.hpp at line 5, boost/mpl/aux_/preprocessed/plain/less_equal.hpp at line 5, boost/mpl/aux_/preprocessed/plain/list.hpp at line 5, boost/mpl/aux_/preprocessed/plain/list_c.hpp at line 5, boost/mpl/aux_/preprocessed/plain/map.hpp at line 5, boost/mpl/aux_/preprocessed/plain/minus.hpp at line 5, boost/mpl/aux_/preprocessed/plain/modulus.hpp at line 5, boost/mpl/aux_/preprocessed/plain/not_equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/plain/or.hpp at line 5, boost/mpl/aux_/preprocessed/plain/placeholders.hpp at line 6, boost/mpl/aux_/preprocessed/plain/plus.hpp at line 5, boost/mpl/aux_/preprocessed/plain/quote.hpp at line 5, boost/mpl/aux_/preprocessed/plain/reverse_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/plain/reverse_iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/plain/set.hpp at line 5, boost/mpl/aux_/preprocessed/plain/set_c.hpp at line 5, boost/mpl/aux_/preprocessed/plain/shift_left.hpp at line 6, boost/mpl/aux_/preprocessed/plain/shift_right.hpp at line 6, boost/mpl/aux_/preprocessed/plain/template_arity.hpp at line 5, boost/mpl/aux_/preprocessed/plain/times.hpp at line 5, boost/mpl/aux_/preprocessed/plain/unpack_args.hpp at line 5, boost/mpl/aux_/preprocessed/plain/vector.hpp at line 5, boost/mpl/aux_/preprocessed/plain/vector_c.hpp at line 5, boost/mpl/aux_/preprocessor/add.hpp at line 8, boost/mpl/aux_/preprocessor/def_params_tail.hpp at line 8, boost/mpl/aux_/preprocessor/default_params.hpp at line 8, boost/mpl/aux_/preprocessor/enum.hpp at line 8, boost/mpl/aux_/preprocessor/ext_params.hpp at line 8, boost/mpl/aux_/preprocessor/filter_params.hpp at line 8, boost/mpl/aux_/preprocessor/is_seq.hpp at line 9, boost/mpl/aux_/preprocessor/params.hpp at line 8, boost/mpl/aux_/preprocessor/partial_spec_params.hpp at line 8, boost/mpl/aux_/preprocessor/range.hpp at line 8, boost/mpl/aux_/preprocessor/repeat.hpp at line 8, boost/mpl/aux_/preprocessor/sub.hpp at line 8, boost/mpl/aux_/preprocessor/token_equal.hpp at line 9, boost/mpl/aux_/preprocessor/tuple.hpp at line 8, boost/mpl/aux_/ptr_to_ref.hpp at line 8, boost/mpl/aux_/push_back_impl.hpp at line 8, boost/mpl/aux_/push_front_impl.hpp at line 8, boost/mpl/aux_/range_c/O1_size.hpp at line 8, boost/mpl/aux_/range_c/back.hpp at line 8, boost/mpl/aux_/range_c/empty.hpp at line 8, boost/mpl/aux_/range_c/front.hpp at line 8, boost/mpl/aux_/range_c/iterator.hpp at line 8, boost/mpl/aux_/range_c/size.hpp at line 8, boost/mpl/aux_/range_c/tag.hpp at line 8, boost/mpl/aux_/reverse_fold_impl.hpp at line 8, boost/mpl/aux_/reverse_fold_impl_body.hpp at line 9, boost/mpl/aux_/reverse_iter_fold_impl.hpp at line 8, boost/mpl/aux_/sequence_wrapper.hpp at line 11, boost/mpl/aux_/shift_op.hpp at line 7, boost/mpl/aux_/single_element_iter.hpp at line 8, boost/mpl/aux_/size_impl.hpp at line 8, boost/mpl/aux_/sort_impl.hpp at line 8, boost/mpl/aux_/static_cast.hpp at line 8, boost/mpl/aux_/template_arity.hpp at line 12, boost/mpl/aux_/template_arity_fwd.hpp at line 8, boost/mpl/aux_/test.hpp at line 8, boost/mpl/aux_/test/assert.hpp at line 8, boost/mpl/aux_/test/data.hpp at line 8, boost/mpl/aux_/test/test_case.hpp at line 8, boost/mpl/aux_/traits_lambda_spec.hpp at line 8, boost/mpl/aux_/transform_iter.hpp at line 8, boost/mpl/aux_/type_wrapper.hpp at line 9, boost/mpl/aux_/unwrap.hpp at line 9, boost/mpl/aux_/value_wknd.hpp at line 8, boost/mpl/aux_/yes_no.hpp at line 8, boost/mpl/back.hpp at line 8, boost/mpl/back_fwd.hpp at line 8, boost/mpl/back_inserter.hpp at line 9, boost/mpl/base.hpp at line 8, boost/mpl/begin.hpp at line 8, boost/mpl/begin_end.hpp at line 8, boost/mpl/begin_end_fwd.hpp at line 8, boost/mpl/bind.hpp at line 13, boost/mpl/bind_fwd.hpp at line 12, boost/mpl/bitand.hpp at line 9, boost/mpl/bitor.hpp at line 9, boost/mpl/bitwise.hpp at line 9, boost/mpl/bitxor.hpp at line 9, boost/mpl/bool.hpp at line 8, boost/mpl/bool_fwd.hpp at line 8, boost/mpl/char.hpp at line 8, boost/mpl/char_fwd.hpp at line 8, boost/mpl/clear.hpp at line 8, boost/mpl/clear_fwd.hpp at line 8, boost/mpl/comparison.hpp at line 8, boost/mpl/contains.hpp at line 9, boost/mpl/contains_fwd.hpp at line 9, boost/mpl/copy.hpp at line 9, boost/mpl/copy_if.hpp at line 9, boost/mpl/count.hpp at line 8, boost/mpl/count_fwd.hpp at line 8, boost/mpl/count_if.hpp at line 8, boost/mpl/deque.hpp at line 8, boost/mpl/deref.hpp at line 8, boost/mpl/distance.hpp at line 8, boost/mpl/distance_fwd.hpp at line 8, boost/mpl/divides.hpp at line 8, boost/mpl/empty.hpp at line 8, boost/mpl/empty_base.hpp at line 8, boost/mpl/empty_fwd.hpp at line 8, boost/mpl/empty_sequence.hpp at line 9, boost/mpl/end.hpp at line 8, boost/mpl/equal.hpp at line 8, boost/mpl/equal_to.hpp at line 8, boost/mpl/erase.hpp at line 8, boost/mpl/erase_fwd.hpp at line 8, boost/mpl/erase_key.hpp at line 8, boost/mpl/erase_key_fwd.hpp at line 8, boost/mpl/filter_view.hpp at line 8, boost/mpl/find.hpp at line 8, boost/mpl/find_if.hpp at line 8, boost/mpl/fold.hpp at line 9, boost/mpl/for_each.hpp at line 8, boost/mpl/front.hpp at line 8, boost/mpl/front_fwd.hpp at line 8, boost/mpl/front_inserter.hpp at line 9, boost/mpl/greater.hpp at line 8, boost/mpl/greater_equal.hpp at line 8, boost/mpl/has_key.hpp at line 9, boost/mpl/has_key_fwd.hpp at line 9, boost/mpl/has_xxx.hpp at line 10, boost/mpl/identity.hpp at line 8, boost/mpl/if.hpp at line 8, boost/mpl/index_if.hpp at line 8, boost/mpl/index_of.hpp at line 9, boost/mpl/inherit.hpp at line 12, boost/mpl/inherit_linearly.hpp at line 8, boost/mpl/insert.hpp at line 8, boost/mpl/insert_fwd.hpp at line 8, boost/mpl/insert_range.hpp at line 8, boost/mpl/insert_range_fwd.hpp at line 8, boost/mpl/inserter.hpp at line 9, boost/mpl/int.hpp at line 8, boost/mpl/int_fwd.hpp at line 8, boost/mpl/integral_c.hpp at line 8, boost/mpl/integral_c_fwd.hpp at line 8, boost/mpl/integral_c_tag.hpp at line 8, boost/mpl/is_placeholder.hpp at line 8, boost/mpl/is_sequence.hpp at line 8, boost/mpl/iter_fold.hpp at line 9, boost/mpl/iter_fold_if.hpp at line 9, boost/mpl/iterator_category.hpp at line 8, boost/mpl/iterator_range.hpp at line 8, boost/mpl/iterator_tags.hpp at line 8, boost/mpl/joint_view.hpp at line 8, boost/mpl/key_type.hpp at line 9, boost/mpl/key_type_fwd.hpp at line 9, boost/mpl/lambda.hpp at line 8, boost/mpl/lambda_fwd.hpp at line 8, boost/mpl/less.hpp at line 8, boost/mpl/less_equal.hpp at line 8, boost/mpl/limits/arity.hpp at line 8, boost/mpl/limits/list.hpp at line 8, boost/mpl/limits/map.hpp at line 8, boost/mpl/limits/set.hpp at line 8, boost/mpl/limits/string.hpp at line 8, boost/mpl/limits/unrolling.hpp at line 8, boost/mpl/limits/vector.hpp at line 8, boost/mpl/list.hpp at line 8, boost/mpl/list/aux_/O1_size.hpp at line 8, boost/mpl/list/aux_/begin_end.hpp at line 8, boost/mpl/list/aux_/clear.hpp at line 8, boost/mpl/list/aux_/empty.hpp at line 8, boost/mpl/list/aux_/front.hpp at line 8, boost/mpl/list/aux_/include_preprocessed.hpp at line 5, boost/mpl/list/aux_/item.hpp at line 8, boost/mpl/list/aux_/iterator.hpp at line 8, boost/mpl/list/aux_/numbered.hpp at line 8, boost/mpl/list/aux_/numbered_c.hpp at line 7, boost/mpl/list/aux_/pop_front.hpp at line 8, boost/mpl/list/aux_/preprocessed/plain/list10.hpp at line 5, boost/mpl/list/aux_/preprocessed/plain/list10_c.hpp at line 5, boost/mpl/list/aux_/preprocessed/plain/list20.hpp at line 5, boost/mpl/list/aux_/preprocessed/plain/list20_c.hpp at line 5, boost/mpl/list/aux_/preprocessed/plain/list30.hpp at line 5, boost/mpl/list/aux_/preprocessed/plain/list30_c.hpp at line 5, boost/mpl/list/aux_/preprocessed/plain/list40.hpp at line 5, boost/mpl/list/aux_/preprocessed/plain/list40_c.hpp at line 5, boost/mpl/list/aux_/preprocessed/plain/list50.hpp at line 5, boost/mpl/list/aux_/preprocessed/plain/list50_c.hpp at line 5, boost/mpl/list/aux_/push_back.hpp at line 8, boost/mpl/list/aux_/push_front.hpp at line 8, boost/mpl/list/aux_/size.hpp at line 8, boost/mpl/list/aux_/tag.hpp at line 8, boost/mpl/list/list0.hpp at line 8, boost/mpl/list/list0_c.hpp at line 8, boost/mpl/list/list10.hpp at line 8, boost/mpl/list/list10_c.hpp at line 8, boost/mpl/list/list20.hpp at line 8, boost/mpl/list/list20_c.hpp at line 8, boost/mpl/list/list30.hpp at line 8, boost/mpl/list/list30_c.hpp at line 8, boost/mpl/list/list40.hpp at line 8, boost/mpl/list/list40_c.hpp at line 8, boost/mpl/list/list50.hpp at line 8, boost/mpl/list/list50_c.hpp at line 8, boost/mpl/list_c.hpp at line 8, boost/mpl/logical.hpp at line 8, boost/mpl/long.hpp at line 8, boost/mpl/long_fwd.hpp at line 8, boost/mpl/lower_bound.hpp at line 8, boost/mpl/map.hpp at line 8, boost/mpl/map/aux_/at_impl.hpp at line 9, boost/mpl/map/aux_/begin_end_impl.hpp at line 9, boost/mpl/map/aux_/clear_impl.hpp at line 9, boost/mpl/map/aux_/contains_impl.hpp at line 8, boost/mpl/map/aux_/empty_impl.hpp at line 8, boost/mpl/map/aux_/erase_impl.hpp at line 9, boost/mpl/map/aux_/erase_key_impl.hpp at line 9, boost/mpl/map/aux_/has_key_impl.hpp at line 9, boost/mpl/map/aux_/include_preprocessed.hpp at line 5, boost/mpl/map/aux_/insert_impl.hpp at line 9, boost/mpl/map/aux_/insert_range_impl.hpp at line 8, boost/mpl/map/aux_/item.hpp at line 9, boost/mpl/map/aux_/iterator.hpp at line 9, boost/mpl/map/aux_/key_type_impl.hpp at line 9, boost/mpl/map/aux_/map0.hpp at line 9, boost/mpl/map/aux_/numbered.hpp at line 9, boost/mpl/map/aux_/preprocessed/no_ctps/map10.hpp at line 6, boost/mpl/map/aux_/preprocessed/no_ctps/map20.hpp at line 6, boost/mpl/map/aux_/preprocessed/no_ctps/map30.hpp at line 6, boost/mpl/map/aux_/preprocessed/no_ctps/map40.hpp at line 6, boost/mpl/map/aux_/preprocessed/no_ctps/map50.hpp at line 6, boost/mpl/map/aux_/preprocessed/plain/map10.hpp at line 6, boost/mpl/map/aux_/preprocessed/plain/map20.hpp at line 6, boost/mpl/map/aux_/preprocessed/plain/map30.hpp at line 6, boost/mpl/map/aux_/preprocessed/plain/map40.hpp at line 6, boost/mpl/map/aux_/preprocessed/plain/map50.hpp at line 6, boost/mpl/map/aux_/preprocessed/typeof_based/map10.hpp at line 6, boost/mpl/map/aux_/preprocessed/typeof_based/map20.hpp at line 6, boost/mpl/map/aux_/preprocessed/typeof_based/map30.hpp at line 6, boost/mpl/map/aux_/preprocessed/typeof_based/map40.hpp at line 6, boost/mpl/map/aux_/preprocessed/typeof_based/map50.hpp at line 6, boost/mpl/map/aux_/size_impl.hpp at line 8, boost/mpl/map/aux_/tag.hpp at line 9, boost/mpl/map/aux_/value_type_impl.hpp at line 9, boost/mpl/map/map0.hpp at line 9, boost/mpl/map/map10.hpp at line 9, boost/mpl/map/map20.hpp at line 9, boost/mpl/map/map30.hpp at line 9, boost/mpl/map/map40.hpp at line 9, boost/mpl/map/map50.hpp at line 9, boost/mpl/math/fixed_c.hpp at line 8, boost/mpl/math/is_even.hpp at line 8, boost/mpl/math/rational_c.hpp at line 8, boost/mpl/max.hpp at line 8, boost/mpl/max_element.hpp at line 8, boost/mpl/min.hpp at line 8, boost/mpl/min_element.hpp at line 8, boost/mpl/min_max.hpp at line 8, boost/mpl/minus.hpp at line 8, boost/mpl/modulus.hpp at line 8, boost/mpl/multiplies.hpp at line 8, boost/mpl/multiset/aux_/count_impl.hpp at line 8, boost/mpl/multiset/aux_/insert_impl.hpp at line 8, boost/mpl/multiset/aux_/item.hpp at line 8, boost/mpl/multiset/aux_/multiset0.hpp at line 8, boost/mpl/multiset/aux_/tag.hpp at line 8, boost/mpl/multiset/multiset0.hpp at line 8, boost/mpl/negate.hpp at line 8, boost/mpl/next.hpp at line 8, boost/mpl/next_prior.hpp at line 8, boost/mpl/not.hpp at line 8, boost/mpl/not_equal_to.hpp at line 8, boost/mpl/or.hpp at line 8, boost/mpl/order.hpp at line 9, boost/mpl/order_fwd.hpp at line 9, boost/mpl/pair.hpp at line 8, boost/mpl/pair_view.hpp at line 9, boost/mpl/partition.hpp at line 9, boost/mpl/placeholders.hpp at line 13, boost/mpl/plus.hpp at line 8, boost/mpl/pop_back.hpp at line 8, boost/mpl/pop_back_fwd.hpp at line 8, boost/mpl/pop_front.hpp at line 8, boost/mpl/pop_front_fwd.hpp at line 8, boost/mpl/print.hpp at line 9, boost/mpl/prior.hpp at line 8, boost/mpl/protect.hpp at line 9, boost/mpl/push_back.hpp at line 8, boost/mpl/push_back_fwd.hpp at line 8, boost/mpl/push_front.hpp at line 8, boost/mpl/push_front_fwd.hpp at line 8, boost/mpl/quote.hpp at line 12, boost/mpl/range_c.hpp at line 8, boost/mpl/remove.hpp at line 9, boost/mpl/remove_if.hpp at line 9, boost/mpl/replace.hpp at line 10, boost/mpl/replace_if.hpp at line 10, boost/mpl/reverse.hpp at line 8, boost/mpl/reverse_fold.hpp at line 9, boost/mpl/reverse_iter_fold.hpp at line 9, boost/mpl/same_as.hpp at line 8, boost/mpl/sequence_tag.hpp at line 8, boost/mpl/sequence_tag_fwd.hpp at line 8, boost/mpl/set.hpp at line 8, boost/mpl/set/aux_/at_impl.hpp at line 8, boost/mpl/set/aux_/begin_end_impl.hpp at line 9, boost/mpl/set/aux_/clear_impl.hpp at line 9, boost/mpl/set/aux_/empty_impl.hpp at line 8, boost/mpl/set/aux_/erase_impl.hpp at line 9, boost/mpl/set/aux_/erase_key_impl.hpp at line 9, boost/mpl/set/aux_/has_key_impl.hpp at line 9, boost/mpl/set/aux_/include_preprocessed.hpp at line 7, boost/mpl/set/aux_/insert_impl.hpp at line 9, boost/mpl/set/aux_/insert_range_impl.hpp at line 8, boost/mpl/set/aux_/item.hpp at line 9, boost/mpl/set/aux_/iterator.hpp at line 9, boost/mpl/set/aux_/key_type_impl.hpp at line 9, boost/mpl/set/aux_/numbered.hpp at line 9, boost/mpl/set/aux_/numbered_c.hpp at line 9, boost/mpl/set/aux_/preprocessed/plain/set10.hpp at line 6, boost/mpl/set/aux_/preprocessed/plain/set10_c.hpp at line 6, boost/mpl/set/aux_/preprocessed/plain/set20.hpp at line 6, boost/mpl/set/aux_/preprocessed/plain/set20_c.hpp at line 6, boost/mpl/set/aux_/preprocessed/plain/set30.hpp at line 6, boost/mpl/set/aux_/preprocessed/plain/set30_c.hpp at line 6, boost/mpl/set/aux_/preprocessed/plain/set40.hpp at line 6, boost/mpl/set/aux_/preprocessed/plain/set40_c.hpp at line 6, boost/mpl/set/aux_/preprocessed/plain/set50.hpp at line 6, boost/mpl/set/aux_/preprocessed/plain/set50_c.hpp at line 6, boost/mpl/set/aux_/set0.hpp at line 9, boost/mpl/set/aux_/size_impl.hpp at line 8, boost/mpl/set/aux_/tag.hpp at line 9, boost/mpl/set/aux_/value_type_impl.hpp at line 9, boost/mpl/set/set0.hpp at line 9, boost/mpl/set/set0_c.hpp at line 9, boost/mpl/set/set10.hpp at line 9, boost/mpl/set/set10_c.hpp at line 9, boost/mpl/set/set20.hpp at line 9, boost/mpl/set/set20_c.hpp at line 9, boost/mpl/set/set30.hpp at line 9, boost/mpl/set/set30_c.hpp at line 9, boost/mpl/set/set40.hpp at line 9, boost/mpl/set/set40_c.hpp at line 9, boost/mpl/set/set50.hpp at line 9, boost/mpl/set/set50_c.hpp at line 9, boost/mpl/set_c.hpp at line 8, boost/mpl/shift_left.hpp at line 9, boost/mpl/shift_right.hpp at line 9, boost/mpl/single_view.hpp at line 8, boost/mpl/size.hpp at line 8, boost/mpl/size_fwd.hpp at line 8, boost/mpl/size_t.hpp at line 8, boost/mpl/size_t_fwd.hpp at line 8, boost/mpl/sizeof.hpp at line 8, boost/mpl/sort.hpp at line 9, boost/mpl/stable_partition.hpp at line 9, boost/mpl/switch.hpp at line 8, boost/mpl/tag.hpp at line 8, boost/mpl/times.hpp at line 8, boost/mpl/transform.hpp at line 9, boost/mpl/transform_view.hpp at line 8, boost/mpl/unique.hpp at line 9, boost/mpl/unpack_args.hpp at line 12, boost/mpl/upper_bound.hpp at line 8, boost/mpl/value_type.hpp at line 9, boost/mpl/value_type_fwd.hpp at line 9, boost/mpl/vector.hpp at line 8, boost/mpl/vector/aux_/O1_size.hpp at line 8, boost/mpl/vector/aux_/at.hpp at line 8, boost/mpl/vector/aux_/back.hpp at line 8, boost/mpl/vector/aux_/begin_end.hpp at line 8, boost/mpl/vector/aux_/clear.hpp at line 8, boost/mpl/vector/aux_/empty.hpp at line 8, boost/mpl/vector/aux_/front.hpp at line 8, boost/mpl/vector/aux_/include_preprocessed.hpp at line 7, boost/mpl/vector/aux_/item.hpp at line 8, boost/mpl/vector/aux_/iterator.hpp at line 8, boost/mpl/vector/aux_/numbered.hpp at line 9, boost/mpl/vector/aux_/numbered_c.hpp at line 9, boost/mpl/vector/aux_/pop_back.hpp at line 8, boost/mpl/vector/aux_/pop_front.hpp at line 8, boost/mpl/vector/aux_/preprocessed/no_ctps/vector10.hpp at line 5, boost/mpl/vector/aux_/preprocessed/no_ctps/vector10_c.hpp at line 5, boost/mpl/vector/aux_/preprocessed/no_ctps/vector20.hpp at line 5, boost/mpl/vector/aux_/preprocessed/no_ctps/vector20_c.hpp at line 5, boost/mpl/vector/aux_/preprocessed/no_ctps/vector30.hpp at line 5, boost/mpl/vector/aux_/preprocessed/no_ctps/vector30_c.hpp at line 5, boost/mpl/vector/aux_/preprocessed/no_ctps/vector40.hpp at line 5, boost/mpl/vector/aux_/preprocessed/no_ctps/vector40_c.hpp at line 5, boost/mpl/vector/aux_/preprocessed/no_ctps/vector50.hpp at line 5, boost/mpl/vector/aux_/preprocessed/no_ctps/vector50_c.hpp at line 5, boost/mpl/vector/aux_/preprocessed/plain/vector10.hpp at line 5, boost/mpl/vector/aux_/preprocessed/plain/vector10_c.hpp at line 5, boost/mpl/vector/aux_/preprocessed/plain/vector20.hpp at line 5, boost/mpl/vector/aux_/preprocessed/plain/vector20_c.hpp at line 5, boost/mpl/vector/aux_/preprocessed/plain/vector30.hpp at line 5, boost/mpl/vector/aux_/preprocessed/plain/vector30_c.hpp at line 5, boost/mpl/vector/aux_/preprocessed/plain/vector40.hpp at line 5, boost/mpl/vector/aux_/preprocessed/plain/vector40_c.hpp at line 5, boost/mpl/vector/aux_/preprocessed/plain/vector50.hpp at line 5, boost/mpl/vector/aux_/preprocessed/plain/vector50_c.hpp at line 5, boost/mpl/vector/aux_/preprocessed/typeof_based/vector10.hpp at line 5, boost/mpl/vector/aux_/preprocessed/typeof_based/vector10_c.hpp at line 5, boost/mpl/vector/aux_/preprocessed/typeof_based/vector20.hpp at line 5, boost/mpl/vector/aux_/preprocessed/typeof_based/vector20_c.hpp at line 5, boost/mpl/vector/aux_/preprocessed/typeof_based/vector30.hpp at line 5, boost/mpl/vector/aux_/preprocessed/typeof_based/vector30_c.hpp at line 5, boost/mpl/vector/aux_/preprocessed/typeof_based/vector40.hpp at line 5, boost/mpl/vector/aux_/preprocessed/typeof_based/vector40_c.hpp at line 5, boost/mpl/vector/aux_/preprocessed/typeof_based/vector50.hpp at line 5, boost/mpl/vector/aux_/preprocessed/typeof_based/vector50_c.hpp at line 5, boost/mpl/vector/aux_/push_back.hpp at line 8, boost/mpl/vector/aux_/push_front.hpp at line 8, boost/mpl/vector/aux_/size.hpp at line 8, boost/mpl/vector/aux_/tag.hpp at line 8, boost/mpl/vector/aux_/vector0.hpp at line 8, boost/mpl/vector/vector0.hpp at line 8, boost/mpl/vector/vector0_c.hpp at line 8, boost/mpl/vector/vector10.hpp at line 8, boost/mpl/vector/vector10_c.hpp at line 8, boost/mpl/vector/vector20.hpp at line 8, boost/mpl/vector/vector20_c.hpp at line 8, boost/mpl/vector/vector30.hpp at line 8, boost/mpl/vector/vector30_c.hpp at line 8, boost/mpl/vector/vector40.hpp at line 8, boost/mpl/vector/vector40_c.hpp at line 8, boost/mpl/vector/vector50.hpp at line 8, boost/mpl/vector/vector50_c.hpp at line 8, boost/mpl/vector_c.hpp at line 8, boost/mpl/void.hpp at line 8, boost/mpl/void_fwd.hpp at line 8, boost/property_tree/detail/exception_implementation.hpp at line 6, boost/property_tree/detail/file_parser_error.hpp at line 5, boost/property_tree/detail/info_parser_error.hpp at line 5, boost/property_tree/detail/info_parser_read.hpp at line 5, boost/property_tree/detail/info_parser_utils.hpp at line 5, boost/property_tree/detail/info_parser_write.hpp at line 5, boost/property_tree/detail/info_parser_writer_settings.hpp at line 6, boost/property_tree/detail/ptree_utils.hpp at line 5, boost/property_tree/detail/rapidxml.hpp at line 5, boost/property_tree/detail/xml_parser_error.hpp at line 5, boost/property_tree/detail/xml_parser_flags.hpp at line 5, boost/property_tree/detail/xml_parser_read_rapidxml.hpp at line 5, boost/property_tree/detail/xml_parser_utils.hpp at line 5, boost/property_tree/detail/xml_parser_write.hpp at line 6, boost/property_tree/detail/xml_parser_writer_settings.hpp at line 6, boost/property_tree/exceptions.hpp at line 6, boost/property_tree/id_translator.hpp at line 5, boost/property_tree/info_parser.hpp at line 5, boost/property_tree/ini_parser.hpp at line 6, boost/property_tree/json_parser.hpp at line 6, boost/property_tree/json_parser/detail/read.hpp at line 5, boost/property_tree/json_parser/detail/write.hpp at line 5, boost/property_tree/json_parser/error.hpp at line 5, boost/property_tree/ptree.hpp at line 6, boost/property_tree/ptree_fwd.hpp at line 6, boost/property_tree/ptree_serialization.hpp at line 5, boost/property_tree/stream_translator.hpp at line 5, boost/property_tree/string_path.hpp at line 5, boost/property_tree/xml_parser.hpp at line 6, boost/range/atl.hpp at line 11, boost/range/detail/microsoft.hpp at line 8, boost/range/mfc.hpp at line 11, boost/type_traits/detail/bool_trait_def.hpp at line 7, boost/type_traits/detail/bool_trait_undef.hpp at line 7, boost/type_traits/detail/template_arity_spec.hpp at line 6
- License text:
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/detail/binary_search.hpp [2:4]
- boost/mpl/O1_size.hpp [7:9]
- boost/mpl/O1_size_fwd.hpp [7:9]
- boost/mpl/accumulate.hpp [8:10]
- boost/mpl/advance.hpp [7:9]
- boost/mpl/advance_fwd.hpp [7:9]
- boost/mpl/alias.hpp [7:9]
- boost/mpl/always.hpp [7:9]
- boost/mpl/and.hpp [7:9]
- boost/mpl/apply.hpp [11:13]
- boost/mpl/apply_fwd.hpp [11:13]
- boost/mpl/apply_wrap.hpp [11:13]
- boost/mpl/arg.hpp [12:14]
- boost/mpl/arg_fwd.hpp [8:10]
- boost/mpl/arithmetic.hpp [7:9]
- boost/mpl/as_sequence.hpp [7:9]
- boost/mpl/assert.hpp [7:9]
- boost/mpl/at.hpp [7:9]
- boost/mpl/at_fwd.hpp [7:9]
- boost/mpl/aux_/O1_size_impl.hpp [7:9]
- boost/mpl/aux_/adl_barrier.hpp [7:9]
- boost/mpl/aux_/advance_backward.hpp [11:13]
- boost/mpl/aux_/advance_forward.hpp [11:13]
- boost/mpl/aux_/apply_1st.hpp [7:9]
- boost/mpl/aux_/arg_typedef.hpp [7:9]
- boost/mpl/aux_/arithmetic_op.hpp [6:8]
- boost/mpl/aux_/arity.hpp [7:9]
- boost/mpl/aux_/arity_spec.hpp [7:9]
- boost/mpl/aux_/at_impl.hpp [7:9]
- boost/mpl/aux_/back_impl.hpp [7:9]
- boost/mpl/aux_/basic_bind.hpp [8:10]
- boost/mpl/aux_/clear_impl.hpp [7:9]
- boost/mpl/aux_/common_name_wknd.hpp [7:9]
- boost/mpl/aux_/comparison_op.hpp [6:8]
- boost/mpl/aux_/config/adl.hpp [7:9]
- boost/mpl/aux_/config/arrays.hpp [7:9]
- boost/mpl/aux_/config/bcc.hpp [7:9]
- boost/mpl/aux_/config/bind.hpp [8:10]
- boost/mpl/aux_/config/compiler.hpp [7:9]
- boost/mpl/aux_/config/ctps.hpp [7:9]
- boost/mpl/aux_/config/dependent_nttp.hpp [7:9]
- boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp [7:9]
- boost/mpl/aux_/config/dtp.hpp [7:9]
- boost/mpl/aux_/config/eti.hpp [7:9]
- boost/mpl/aux_/config/forwarding.hpp [7:9]
- boost/mpl/aux_/config/gcc.hpp [7:9]
- boost/mpl/aux_/config/has_apply.hpp [7:9]
- boost/mpl/aux_/config/has_xxx.hpp [8:10]
- boost/mpl/aux_/config/integral.hpp [7:9]
- boost/mpl/aux_/config/intel.hpp [7:9]
- boost/mpl/aux_/config/lambda.hpp [7:9]
- boost/mpl/aux_/config/msvc.hpp [7:9]
- boost/mpl/aux_/config/msvc_typename.hpp [7:9]
- boost/mpl/aux_/config/nttp.hpp [7:9]
- boost/mpl/aux_/config/operators.hpp [7:9]
- boost/mpl/aux_/config/overload_resolution.hpp [7:9]
- boost/mpl/aux_/config/pp_counter.hpp [7:9]
- boost/mpl/aux_/config/preprocessor.hpp [7:9]
- boost/mpl/aux_/config/static_constant.hpp [7:9]
- boost/mpl/aux_/config/ttp.hpp [7:9]
- boost/mpl/aux_/config/typeof.hpp [7:9]
- boost/mpl/aux_/config/use_preprocessed.hpp [7:9]
- boost/mpl/aux_/config/workaround.hpp [7:9]
- boost/mpl/aux_/contains_impl.hpp [8:10]
- boost/mpl/aux_/count_args.hpp [6:8]
- boost/mpl/aux_/count_impl.hpp [7:9]
- boost/mpl/aux_/empty_impl.hpp [7:9]
- boost/mpl/aux_/erase_impl.hpp [7:9]
- boost/mpl/aux_/erase_key_impl.hpp [7:9]
- boost/mpl/aux_/filter_iter.hpp [7:9]
- boost/mpl/aux_/find_if_pred.hpp [8:10]
- boost/mpl/aux_/fold_impl.hpp [7:9]
- boost/mpl/aux_/fold_impl_body.hpp [8:10]
- boost/mpl/aux_/fold_op.hpp [7:9]
- boost/mpl/aux_/fold_pred.hpp [7:9]
- boost/mpl/aux_/front_impl.hpp [7:9]
- boost/mpl/aux_/full_lambda.hpp [11:13]
- boost/mpl/aux_/has_apply.hpp [7:9]
- boost/mpl/aux_/has_begin.hpp [7:9]
- boost/mpl/aux_/has_key_impl.hpp [8:10]
- boost/mpl/aux_/has_rebind.hpp [7:9]
- boost/mpl/aux_/has_size.hpp [7:9]
- boost/mpl/aux_/has_tag.hpp [7:9]
- boost/mpl/aux_/has_type.hpp [7:9]
- boost/mpl/aux_/include_preprocessed.hpp [6:8]
- boost/mpl/aux_/insert_impl.hpp [7:9]
- boost/mpl/aux_/insert_range_impl.hpp [7:9]
- boost/mpl/aux_/inserter_algorithm.hpp [8:10]
- boost/mpl/aux_/integral_wrapper.hpp [4:6]
- boost/mpl/aux_/is_msvc_eti_arg.hpp [7:9]
- boost/mpl/aux_/iter_apply.hpp [7:9]
- boost/mpl/aux_/iter_fold_if_impl.hpp [8:10]
- boost/mpl/aux_/iter_fold_impl.hpp [7:9]
- boost/mpl/aux_/iter_push_front.hpp [7:9]
- boost/mpl/aux_/joint_iter.hpp [7:9]
- boost/mpl/aux_/lambda_arity_param.hpp [7:9]
- boost/mpl/aux_/lambda_no_ctps.hpp [11:13]
- boost/mpl/aux_/lambda_spec.hpp [7:9]
- boost/mpl/aux_/lambda_support.hpp [7:9]
- boost/mpl/aux_/largest_int.hpp [7:9]
- boost/mpl/aux_/logical_op.hpp [4:6]
- boost/mpl/aux_/msvc_dtw.hpp [4:6]
- boost/mpl/aux_/msvc_eti_base.hpp [7:9]
- boost/mpl/aux_/msvc_is_class.hpp [7:9]
- boost/mpl/aux_/msvc_never_true.hpp [7:9]
- boost/mpl/aux_/msvc_type.hpp [7:9]
- boost/mpl/aux_/na.hpp [7:9]
- boost/mpl/aux_/na_assert.hpp [7:9]
- boost/mpl/aux_/na_fwd.hpp [7:9]
- boost/mpl/aux_/na_spec.hpp [7:9]
- boost/mpl/aux_/nested_type_wknd.hpp [7:9]
- boost/mpl/aux_/nttp_decl.hpp [7:9]
- boost/mpl/aux_/numeric_cast_utils.hpp [7:9]
- boost/mpl/aux_/numeric_op.hpp [10:12]
- boost/mpl/aux_/order_impl.hpp [8:10]
- boost/mpl/aux_/overload_names.hpp [7:9]
- boost/mpl/aux_/partition_op.hpp [8:10]
- boost/mpl/aux_/pop_back_impl.hpp [7:9]
- boost/mpl/aux_/pop_front_impl.hpp [7:9]
- boost/mpl/aux_/preprocessed/bcc/advance_backward.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/advance_forward.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/and.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/apply.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/apply_fwd.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/apply_wrap.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/arg.hpp [5:7]
- boost/mpl/aux_/preprocessed/bcc/basic_bind.hpp [5:7]
- boost/mpl/aux_/preprocessed/bcc/bind.hpp [5:7]
- boost/mpl/aux_/preprocessed/bcc/bind_fwd.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/bitand.hpp [5:7]
- boost/mpl/aux_/preprocessed/bcc/bitor.hpp [5:7]
- boost/mpl/aux_/preprocessed/bcc/bitxor.hpp [5:7]
- boost/mpl/aux_/preprocessed/bcc/deque.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/divides.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/equal_to.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/full_lambda.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/greater.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/greater_equal.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/inherit.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/iter_fold_if_impl.hpp [5:7]
- boost/mpl/aux_/preprocessed/bcc/iter_fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/lambda_no_ctps.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/less.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/less_equal.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/list.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/list_c.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/map.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/minus.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/modulus.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/not_equal_to.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/or.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/placeholders.hpp [5:7]
- boost/mpl/aux_/preprocessed/bcc/plus.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/quote.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/reverse_fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/reverse_iter_fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/set.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/set_c.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/shift_left.hpp [5:7]
- boost/mpl/aux_/preprocessed/bcc/shift_right.hpp [5:7]
- boost/mpl/aux_/preprocessed/bcc/template_arity.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/times.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/unpack_args.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/vector.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc/vector_c.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/advance_backward.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/advance_forward.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/and.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/apply.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/apply_fwd.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/apply_wrap.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/arg.hpp [5:7]
- boost/mpl/aux_/preprocessed/bcc551/basic_bind.hpp [5:7]
- boost/mpl/aux_/preprocessed/bcc551/bind.hpp [5:7]
- boost/mpl/aux_/preprocessed/bcc551/bind_fwd.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/bitand.hpp [5:7]
- boost/mpl/aux_/preprocessed/bcc551/bitor.hpp [5:7]
- boost/mpl/aux_/preprocessed/bcc551/bitxor.hpp [5:7]
- boost/mpl/aux_/preprocessed/bcc551/deque.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/divides.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/equal_to.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/full_lambda.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/greater.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/greater_equal.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/inherit.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/iter_fold_if_impl.hpp [5:7]
- boost/mpl/aux_/preprocessed/bcc551/iter_fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/lambda_no_ctps.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/less.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/less_equal.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/list.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/list_c.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/map.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/minus.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/modulus.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/not_equal_to.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/or.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/placeholders.hpp [5:7]
- boost/mpl/aux_/preprocessed/bcc551/plus.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/quote.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/reverse_fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/reverse_iter_fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/set.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/set_c.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/shift_left.hpp [5:7]
- boost/mpl/aux_/preprocessed/bcc551/shift_right.hpp [5:7]
- boost/mpl/aux_/preprocessed/bcc551/template_arity.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/times.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/unpack_args.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/vector.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc551/vector_c.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/advance_backward.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/advance_forward.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/and.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/apply.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/apply_fwd.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/apply_wrap.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/arg.hpp [5:7]
- boost/mpl/aux_/preprocessed/bcc_pre590/basic_bind.hpp [5:7]
- boost/mpl/aux_/preprocessed/bcc_pre590/bind.hpp [5:7]
- boost/mpl/aux_/preprocessed/bcc_pre590/bind_fwd.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/bitand.hpp [5:7]
- boost/mpl/aux_/preprocessed/bcc_pre590/bitor.hpp [5:7]
- boost/mpl/aux_/preprocessed/bcc_pre590/bitxor.hpp [5:7]
- boost/mpl/aux_/preprocessed/bcc_pre590/deque.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/divides.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/equal_to.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/full_lambda.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/greater.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/greater_equal.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/inherit.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_if_impl.hpp [5:7]
- boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/lambda_no_ctps.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/less.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/less_equal.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/list.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/list_c.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/map.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/minus.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/modulus.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/not_equal_to.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/or.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/placeholders.hpp [5:7]
- boost/mpl/aux_/preprocessed/bcc_pre590/plus.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/quote.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/reverse_fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/reverse_iter_fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/set.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/set_c.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/shift_left.hpp [5:7]
- boost/mpl/aux_/preprocessed/bcc_pre590/shift_right.hpp [5:7]
- boost/mpl/aux_/preprocessed/bcc_pre590/template_arity.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/times.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/unpack_args.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/vector.hpp [4:6]
- boost/mpl/aux_/preprocessed/bcc_pre590/vector_c.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/advance_backward.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/advance_forward.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/and.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/apply.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/apply_fwd.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/apply_wrap.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/arg.hpp [5:7]
- boost/mpl/aux_/preprocessed/dmc/basic_bind.hpp [5:7]
- boost/mpl/aux_/preprocessed/dmc/bind.hpp [5:7]
- boost/mpl/aux_/preprocessed/dmc/bind_fwd.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/bitand.hpp [5:7]
- boost/mpl/aux_/preprocessed/dmc/bitor.hpp [5:7]
- boost/mpl/aux_/preprocessed/dmc/bitxor.hpp [5:7]
- boost/mpl/aux_/preprocessed/dmc/deque.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/divides.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/equal_to.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/full_lambda.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/greater.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/greater_equal.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/inherit.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/iter_fold_if_impl.hpp [5:7]
- boost/mpl/aux_/preprocessed/dmc/iter_fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/lambda_no_ctps.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/less.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/less_equal.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/list.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/list_c.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/map.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/minus.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/modulus.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/not_equal_to.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/or.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/placeholders.hpp [5:7]
- boost/mpl/aux_/preprocessed/dmc/plus.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/quote.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/reverse_fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/reverse_iter_fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/set.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/set_c.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/shift_left.hpp [5:7]
- boost/mpl/aux_/preprocessed/dmc/shift_right.hpp [5:7]
- boost/mpl/aux_/preprocessed/dmc/template_arity.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/times.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/unpack_args.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/vector.hpp [4:6]
- boost/mpl/aux_/preprocessed/dmc/vector_c.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/advance_backward.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/advance_forward.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/and.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/apply.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/arg.hpp [5:7]
- boost/mpl/aux_/preprocessed/gcc/basic_bind.hpp [5:7]
- boost/mpl/aux_/preprocessed/gcc/bind.hpp [5:7]
- boost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/bitand.hpp [5:7]
- boost/mpl/aux_/preprocessed/gcc/bitor.hpp [5:7]
- boost/mpl/aux_/preprocessed/gcc/bitxor.hpp [5:7]
- boost/mpl/aux_/preprocessed/gcc/deque.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/divides.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/equal_to.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/full_lambda.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/greater.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/greater_equal.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/inherit.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp [5:7]
- boost/mpl/aux_/preprocessed/gcc/iter_fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/less.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/less_equal.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/list.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/list_c.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/map.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/minus.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/modulus.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/not_equal_to.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/or.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/placeholders.hpp [5:7]
- boost/mpl/aux_/preprocessed/gcc/plus.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/quote.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/reverse_iter_fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/set.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/set_c.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/shift_left.hpp [5:7]
- boost/mpl/aux_/preprocessed/gcc/shift_right.hpp [5:7]
- boost/mpl/aux_/preprocessed/gcc/template_arity.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/times.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/unpack_args.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/vector.hpp [4:6]
- boost/mpl/aux_/preprocessed/gcc/vector_c.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/advance_backward.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/advance_forward.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/and.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/apply.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/apply_fwd.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/apply_wrap.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/arg.hpp [5:7]
- boost/mpl/aux_/preprocessed/msvc60/basic_bind.hpp [5:7]
- boost/mpl/aux_/preprocessed/msvc60/bind.hpp [5:7]
- boost/mpl/aux_/preprocessed/msvc60/bind_fwd.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/bitand.hpp [5:7]
- boost/mpl/aux_/preprocessed/msvc60/bitor.hpp [5:7]
- boost/mpl/aux_/preprocessed/msvc60/bitxor.hpp [5:7]
- boost/mpl/aux_/preprocessed/msvc60/deque.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/divides.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/equal_to.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/full_lambda.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/greater.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/greater_equal.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/inherit.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/iter_fold_if_impl.hpp [5:7]
- boost/mpl/aux_/preprocessed/msvc60/iter_fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/lambda_no_ctps.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/less.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/less_equal.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/list.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/list_c.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/map.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/minus.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/modulus.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/not_equal_to.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/or.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/placeholders.hpp [5:7]
- boost/mpl/aux_/preprocessed/msvc60/plus.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/quote.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/reverse_fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/reverse_iter_fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/set.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/set_c.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/shift_left.hpp [5:7]
- boost/mpl/aux_/preprocessed/msvc60/shift_right.hpp [5:7]
- boost/mpl/aux_/preprocessed/msvc60/template_arity.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/times.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/unpack_args.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/vector.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc60/vector_c.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/advance_backward.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/advance_forward.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/and.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/apply.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/apply_fwd.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/apply_wrap.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/arg.hpp [5:7]
- boost/mpl/aux_/preprocessed/msvc70/basic_bind.hpp [5:7]
- boost/mpl/aux_/preprocessed/msvc70/bind.hpp [5:7]
- boost/mpl/aux_/preprocessed/msvc70/bind_fwd.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/bitand.hpp [5:7]
- boost/mpl/aux_/preprocessed/msvc70/bitor.hpp [5:7]
- boost/mpl/aux_/preprocessed/msvc70/bitxor.hpp [5:7]
- boost/mpl/aux_/preprocessed/msvc70/deque.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/divides.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/equal_to.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/full_lambda.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/greater.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/greater_equal.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/inherit.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/iter_fold_if_impl.hpp [5:7]
- boost/mpl/aux_/preprocessed/msvc70/iter_fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/lambda_no_ctps.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/less.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/less_equal.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/list.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/list_c.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/map.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/minus.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/modulus.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/not_equal_to.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/or.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/placeholders.hpp [5:7]
- boost/mpl/aux_/preprocessed/msvc70/plus.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/quote.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/reverse_fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/reverse_iter_fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/set.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/set_c.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/shift_left.hpp [5:7]
- boost/mpl/aux_/preprocessed/msvc70/shift_right.hpp [5:7]
- boost/mpl/aux_/preprocessed/msvc70/template_arity.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/times.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/unpack_args.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/vector.hpp [4:6]
- boost/mpl/aux_/preprocessed/msvc70/vector_c.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/advance_backward.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/advance_forward.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/and.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/apply.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/apply_fwd.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/apply_wrap.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/arg.hpp [5:7]
- boost/mpl/aux_/preprocessed/mwcw/basic_bind.hpp [5:7]
- boost/mpl/aux_/preprocessed/mwcw/bind.hpp [5:7]
- boost/mpl/aux_/preprocessed/mwcw/bind_fwd.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/bitand.hpp [5:7]
- boost/mpl/aux_/preprocessed/mwcw/bitor.hpp [5:7]
- boost/mpl/aux_/preprocessed/mwcw/bitxor.hpp [5:7]
- boost/mpl/aux_/preprocessed/mwcw/deque.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/divides.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/equal_to.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/full_lambda.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/greater.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/greater_equal.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/inherit.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/iter_fold_if_impl.hpp [5:7]
- boost/mpl/aux_/preprocessed/mwcw/iter_fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/lambda_no_ctps.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/less.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/less_equal.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/list.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/list_c.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/map.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/minus.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/modulus.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/not_equal_to.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/or.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/placeholders.hpp [5:7]
- boost/mpl/aux_/preprocessed/mwcw/plus.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/quote.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/reverse_fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/reverse_iter_fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/set.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/set_c.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/shift_left.hpp [5:7]
- boost/mpl/aux_/preprocessed/mwcw/shift_right.hpp [5:7]
- boost/mpl/aux_/preprocessed/mwcw/template_arity.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/times.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/unpack_args.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/vector.hpp [4:6]
- boost/mpl/aux_/preprocessed/mwcw/vector_c.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/advance_backward.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/advance_forward.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/and.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/apply.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/apply_fwd.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/apply_wrap.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/arg.hpp [5:7]
- boost/mpl/aux_/preprocessed/no_ctps/basic_bind.hpp [5:7]
- boost/mpl/aux_/preprocessed/no_ctps/bind.hpp [5:7]
- boost/mpl/aux_/preprocessed/no_ctps/bind_fwd.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/bitand.hpp [5:7]
- boost/mpl/aux_/preprocessed/no_ctps/bitor.hpp [5:7]
- boost/mpl/aux_/preprocessed/no_ctps/bitxor.hpp [5:7]
- boost/mpl/aux_/preprocessed/no_ctps/deque.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/divides.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/equal_to.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/full_lambda.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/greater.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/greater_equal.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/inherit.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/iter_fold_if_impl.hpp [5:7]
- boost/mpl/aux_/preprocessed/no_ctps/iter_fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/lambda_no_ctps.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/less.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/less_equal.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/list.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/list_c.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/map.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/minus.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/modulus.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/not_equal_to.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/or.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/placeholders.hpp [5:7]
- boost/mpl/aux_/preprocessed/no_ctps/plus.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/quote.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/reverse_fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/reverse_iter_fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/set.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/set_c.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/shift_left.hpp [5:7]
- boost/mpl/aux_/preprocessed/no_ctps/shift_right.hpp [5:7]
- boost/mpl/aux_/preprocessed/no_ctps/template_arity.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/times.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/unpack_args.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/vector.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ctps/vector_c.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/advance_backward.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/advance_forward.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/and.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/apply.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/apply_fwd.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/apply_wrap.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/arg.hpp [5:7]
- boost/mpl/aux_/preprocessed/no_ttp/basic_bind.hpp [5:7]
- boost/mpl/aux_/preprocessed/no_ttp/bind.hpp [5:7]
- boost/mpl/aux_/preprocessed/no_ttp/bind_fwd.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/bitand.hpp [5:7]
- boost/mpl/aux_/preprocessed/no_ttp/bitor.hpp [5:7]
- boost/mpl/aux_/preprocessed/no_ttp/bitxor.hpp [5:7]
- boost/mpl/aux_/preprocessed/no_ttp/deque.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/divides.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/equal_to.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/full_lambda.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/greater.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/greater_equal.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/inherit.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/iter_fold_if_impl.hpp [5:7]
- boost/mpl/aux_/preprocessed/no_ttp/iter_fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/lambda_no_ctps.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/less.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/less_equal.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/list.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/list_c.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/map.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/minus.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/modulus.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/not_equal_to.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/or.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/placeholders.hpp [5:7]
- boost/mpl/aux_/preprocessed/no_ttp/plus.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/quote.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/reverse_fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/reverse_iter_fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/set.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/set_c.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/shift_left.hpp [5:7]
- boost/mpl/aux_/preprocessed/no_ttp/shift_right.hpp [5:7]
- boost/mpl/aux_/preprocessed/no_ttp/template_arity.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/times.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/unpack_args.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/vector.hpp [4:6]
- boost/mpl/aux_/preprocessed/no_ttp/vector_c.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/advance_backward.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/advance_forward.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/and.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/apply.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/apply_fwd.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/apply_wrap.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/arg.hpp [5:7]
- boost/mpl/aux_/preprocessed/plain/basic_bind.hpp [5:7]
- boost/mpl/aux_/preprocessed/plain/bind.hpp [5:7]
- boost/mpl/aux_/preprocessed/plain/bind_fwd.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/bitand.hpp [5:7]
- boost/mpl/aux_/preprocessed/plain/bitor.hpp [5:7]
- boost/mpl/aux_/preprocessed/plain/bitxor.hpp [5:7]
- boost/mpl/aux_/preprocessed/plain/deque.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/divides.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/equal_to.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/full_lambda.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/greater.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/greater_equal.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/inherit.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/iter_fold_if_impl.hpp [5:7]
- boost/mpl/aux_/preprocessed/plain/iter_fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/lambda_no_ctps.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/less.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/less_equal.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/list.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/list_c.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/map.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/minus.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/modulus.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/not_equal_to.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/or.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/placeholders.hpp [5:7]
- boost/mpl/aux_/preprocessed/plain/plus.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/quote.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/reverse_fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/reverse_iter_fold_impl.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/set.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/set_c.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/shift_left.hpp [5:7]
- boost/mpl/aux_/preprocessed/plain/shift_right.hpp [5:7]
- boost/mpl/aux_/preprocessed/plain/template_arity.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/times.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/unpack_args.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/vector.hpp [4:6]
- boost/mpl/aux_/preprocessed/plain/vector_c.hpp [4:6]
- boost/mpl/aux_/preprocessor/add.hpp [7:9]
- boost/mpl/aux_/preprocessor/def_params_tail.hpp [7:9]
- boost/mpl/aux_/preprocessor/default_params.hpp [7:9]
- boost/mpl/aux_/preprocessor/enum.hpp [7:9]
- boost/mpl/aux_/preprocessor/ext_params.hpp [7:9]
- boost/mpl/aux_/preprocessor/filter_params.hpp [7:9]
- boost/mpl/aux_/preprocessor/is_seq.hpp [8:10]
- boost/mpl/aux_/preprocessor/params.hpp [7:9]
- boost/mpl/aux_/preprocessor/partial_spec_params.hpp [7:9]
- boost/mpl/aux_/preprocessor/range.hpp [7:9]
- boost/mpl/aux_/preprocessor/repeat.hpp [7:9]
- boost/mpl/aux_/preprocessor/sub.hpp [7:9]
- boost/mpl/aux_/preprocessor/token_equal.hpp [8:10]
- boost/mpl/aux_/preprocessor/tuple.hpp [7:9]
- boost/mpl/aux_/ptr_to_ref.hpp [7:9]
- boost/mpl/aux_/push_back_impl.hpp [7:9]
- boost/mpl/aux_/push_front_impl.hpp [7:9]
- boost/mpl/aux_/range_c/O1_size.hpp [7:9]
- boost/mpl/aux_/range_c/back.hpp [7:9]
- boost/mpl/aux_/range_c/empty.hpp [7:9]
- boost/mpl/aux_/range_c/front.hpp [7:9]
- boost/mpl/aux_/range_c/iterator.hpp [7:9]
- boost/mpl/aux_/range_c/size.hpp [7:9]
- boost/mpl/aux_/range_c/tag.hpp [7:9]
- boost/mpl/aux_/reverse_fold_impl.hpp [7:9]
- boost/mpl/aux_/reverse_fold_impl_body.hpp [8:10]
- boost/mpl/aux_/reverse_iter_fold_impl.hpp [7:9]
- boost/mpl/aux_/sequence_wrapper.hpp [10:12]
- boost/mpl/aux_/shift_op.hpp [6:8]
- boost/mpl/aux_/single_element_iter.hpp [7:9]
- boost/mpl/aux_/size_impl.hpp [7:9]
- boost/mpl/aux_/sort_impl.hpp [7:9]
- boost/mpl/aux_/static_cast.hpp [7:9]
- boost/mpl/aux_/template_arity.hpp [11:13]
- boost/mpl/aux_/template_arity_fwd.hpp [7:9]
- boost/mpl/aux_/test.hpp [7:9]
- boost/mpl/aux_/test/assert.hpp [7:9]
- boost/mpl/aux_/test/data.hpp [7:9]
- boost/mpl/aux_/test/test_case.hpp [7:9]
- boost/mpl/aux_/traits_lambda_spec.hpp [7:9]
- boost/mpl/aux_/transform_iter.hpp [7:9]
- boost/mpl/aux_/type_wrapper.hpp [8:10]
- boost/mpl/aux_/unwrap.hpp [8:10]
- boost/mpl/aux_/value_wknd.hpp [7:9]
- boost/mpl/aux_/yes_no.hpp [7:9]
- boost/mpl/back.hpp [7:9]
- boost/mpl/back_fwd.hpp [7:9]
- boost/mpl/back_inserter.hpp [8:10]
- boost/mpl/base.hpp [7:9]
- boost/mpl/begin.hpp [7:9]
- boost/mpl/begin_end.hpp [7:9]
- boost/mpl/begin_end_fwd.hpp [7:9]
- boost/mpl/bind.hpp [12:14]
- boost/mpl/bind_fwd.hpp [11:13]
- boost/mpl/bitand.hpp [8:10]
- boost/mpl/bitor.hpp [8:10]
- boost/mpl/bitwise.hpp [8:10]
- boost/mpl/bitxor.hpp [8:10]
- boost/mpl/bool.hpp [7:9]
- boost/mpl/bool_fwd.hpp [7:9]
- boost/mpl/char.hpp [7:9]
- boost/mpl/char_fwd.hpp [7:9]
- boost/mpl/clear.hpp [7:9]
- boost/mpl/clear_fwd.hpp [7:9]
- boost/mpl/comparison.hpp [7:9]
- boost/mpl/contains.hpp [8:10]
- boost/mpl/contains_fwd.hpp [8:10]
- boost/mpl/copy.hpp [8:10]
- boost/mpl/copy_if.hpp [8:10]
- boost/mpl/count.hpp [7:9]
- boost/mpl/count_fwd.hpp [7:9]
- boost/mpl/count_if.hpp [7:9]
- boost/mpl/deque.hpp [7:9]
- boost/mpl/deref.hpp [7:9]
- boost/mpl/distance.hpp [7:9]
- boost/mpl/distance_fwd.hpp [7:9]
- boost/mpl/divides.hpp [7:9]
- boost/mpl/empty.hpp [7:9]
- boost/mpl/empty_base.hpp [7:9]
- boost/mpl/empty_fwd.hpp [7:9]
- boost/mpl/empty_sequence.hpp [8:10]
- boost/mpl/end.hpp [7:9]
- boost/mpl/equal.hpp [7:9]
- boost/mpl/equal_to.hpp [7:9]
- boost/mpl/erase.hpp [7:9]
- boost/mpl/erase_fwd.hpp [7:9]
- boost/mpl/erase_key.hpp [7:9]
- boost/mpl/erase_key_fwd.hpp [7:9]
- boost/mpl/filter_view.hpp [7:9]
- boost/mpl/find.hpp [7:9]
- boost/mpl/find_if.hpp [7:9]
- boost/mpl/fold.hpp [8:10]
- boost/mpl/for_each.hpp [7:9]
- boost/mpl/front.hpp [7:9]
- boost/mpl/front_fwd.hpp [7:9]
- boost/mpl/front_inserter.hpp [8:10]
- boost/mpl/greater.hpp [7:9]
- boost/mpl/greater_equal.hpp [7:9]
- boost/mpl/has_key.hpp [8:10]
- boost/mpl/has_key_fwd.hpp [8:10]
- boost/mpl/has_xxx.hpp [9:11]
- boost/mpl/identity.hpp [7:9]
- boost/mpl/if.hpp [7:9]
- boost/mpl/index_if.hpp [7:9]
- boost/mpl/index_of.hpp [8:10]
- boost/mpl/inherit.hpp [11:13]
- boost/mpl/inherit_linearly.hpp [7:9]
- boost/mpl/insert.hpp [7:9]
- boost/mpl/insert_fwd.hpp [7:9]
- boost/mpl/insert_range.hpp [7:9]
- boost/mpl/insert_range_fwd.hpp [7:9]
- boost/mpl/inserter.hpp [8:10]
- boost/mpl/int.hpp [7:9]
- boost/mpl/int_fwd.hpp [7:9]
- boost/mpl/integral_c.hpp [7:9]
- boost/mpl/integral_c_fwd.hpp [7:9]
- boost/mpl/integral_c_tag.hpp [7:9]
- boost/mpl/is_placeholder.hpp [7:9]
- boost/mpl/is_sequence.hpp [7:9]
- boost/mpl/iter_fold.hpp [8:10]
- boost/mpl/iter_fold_if.hpp [8:10]
- boost/mpl/iterator_category.hpp [7:9]
- boost/mpl/iterator_range.hpp [7:9]
- boost/mpl/iterator_tags.hpp [7:9]
- boost/mpl/joint_view.hpp [7:9]
- boost/mpl/key_type.hpp [8:10]
- boost/mpl/key_type_fwd.hpp [8:10]
- boost/mpl/lambda.hpp [7:9]
- boost/mpl/lambda_fwd.hpp [7:9]
- boost/mpl/less.hpp [7:9]
- boost/mpl/less_equal.hpp [7:9]
- boost/mpl/limits/arity.hpp [7:9]
- boost/mpl/limits/list.hpp [7:9]
- boost/mpl/limits/map.hpp [7:9]
- boost/mpl/limits/set.hpp [7:9]
- boost/mpl/limits/string.hpp [7:9]
- boost/mpl/limits/unrolling.hpp [7:9]
- boost/mpl/limits/vector.hpp [7:9]
- boost/mpl/list.hpp [7:9]
- boost/mpl/list/aux_/O1_size.hpp [7:9]
- boost/mpl/list/aux_/begin_end.hpp [7:9]
- boost/mpl/list/aux_/clear.hpp [7:9]
- boost/mpl/list/aux_/empty.hpp [7:9]
- boost/mpl/list/aux_/front.hpp [7:9]
- boost/mpl/list/aux_/include_preprocessed.hpp [4:6]
- boost/mpl/list/aux_/item.hpp [7:9]
- boost/mpl/list/aux_/iterator.hpp [7:9]
- boost/mpl/list/aux_/numbered.hpp [7:9]
- boost/mpl/list/aux_/numbered_c.hpp [6:8]
- boost/mpl/list/aux_/pop_front.hpp [7:9]
- boost/mpl/list/aux_/preprocessed/plain/list10.hpp [4:6]
- boost/mpl/list/aux_/preprocessed/plain/list10_c.hpp [4:6]
- boost/mpl/list/aux_/preprocessed/plain/list20.hpp [4:6]
- boost/mpl/list/aux_/preprocessed/plain/list20_c.hpp [4:6]
- boost/mpl/list/aux_/preprocessed/plain/list30.hpp [4:6]
- boost/mpl/list/aux_/preprocessed/plain/list30_c.hpp [4:6]
- boost/mpl/list/aux_/preprocessed/plain/list40.hpp [4:6]
- boost/mpl/list/aux_/preprocessed/plain/list40_c.hpp [4:6]
- boost/mpl/list/aux_/preprocessed/plain/list50.hpp [4:6]
- boost/mpl/list/aux_/preprocessed/plain/list50_c.hpp [4:6]
- boost/mpl/list/aux_/push_back.hpp [7:9]
- boost/mpl/list/aux_/push_front.hpp [7:9]
- boost/mpl/list/aux_/size.hpp [7:9]
- boost/mpl/list/aux_/tag.hpp [7:9]
- boost/mpl/list/list0.hpp [7:9]
- boost/mpl/list/list0_c.hpp [7:9]
- boost/mpl/list/list10.hpp [7:9]
- boost/mpl/list/list10_c.hpp [7:9]
- boost/mpl/list/list20.hpp [7:9]
- boost/mpl/list/list20_c.hpp [7:9]
- boost/mpl/list/list30.hpp [7:9]
- boost/mpl/list/list30_c.hpp [7:9]
- boost/mpl/list/list40.hpp [7:9]
- boost/mpl/list/list40_c.hpp [7:9]
- boost/mpl/list/list50.hpp [7:9]
- boost/mpl/list/list50_c.hpp [7:9]
- boost/mpl/list_c.hpp [7:9]
- boost/mpl/logical.hpp [7:9]
- boost/mpl/long.hpp [7:9]
- boost/mpl/long_fwd.hpp [7:9]
- boost/mpl/lower_bound.hpp [7:9]
- boost/mpl/map.hpp [7:9]
- boost/mpl/map/aux_/at_impl.hpp [8:10]
- boost/mpl/map/aux_/begin_end_impl.hpp [8:10]
- boost/mpl/map/aux_/clear_impl.hpp [8:10]
- boost/mpl/map/aux_/contains_impl.hpp [7:9]
- boost/mpl/map/aux_/empty_impl.hpp [7:9]
- boost/mpl/map/aux_/erase_impl.hpp [8:10]
- boost/mpl/map/aux_/erase_key_impl.hpp [8:10]
- boost/mpl/map/aux_/has_key_impl.hpp [8:10]
- boost/mpl/map/aux_/include_preprocessed.hpp [4:6]
- boost/mpl/map/aux_/insert_impl.hpp [8:10]
- boost/mpl/map/aux_/insert_range_impl.hpp [7:9]
- boost/mpl/map/aux_/item.hpp [8:10]
- boost/mpl/map/aux_/iterator.hpp [8:10]
- boost/mpl/map/aux_/key_type_impl.hpp [8:10]
- boost/mpl/map/aux_/map0.hpp [8:10]
- boost/mpl/map/aux_/numbered.hpp [8:10]
- boost/mpl/map/aux_/preprocessed/no_ctps/map10.hpp [5:7]
- boost/mpl/map/aux_/preprocessed/no_ctps/map20.hpp [5:7]
- boost/mpl/map/aux_/preprocessed/no_ctps/map30.hpp [5:7]
- boost/mpl/map/aux_/preprocessed/no_ctps/map40.hpp [5:7]
- boost/mpl/map/aux_/preprocessed/no_ctps/map50.hpp [5:7]
- boost/mpl/map/aux_/preprocessed/plain/map10.hpp [5:7]
- boost/mpl/map/aux_/preprocessed/plain/map20.hpp [5:7]
- boost/mpl/map/aux_/preprocessed/plain/map30.hpp [5:7]
- boost/mpl/map/aux_/preprocessed/plain/map40.hpp [5:7]
- boost/mpl/map/aux_/preprocessed/plain/map50.hpp [5:7]
- boost/mpl/map/aux_/preprocessed/typeof_based/map10.hpp [5:7]
- boost/mpl/map/aux_/preprocessed/typeof_based/map20.hpp [5:7]
- boost/mpl/map/aux_/preprocessed/typeof_based/map30.hpp [5:7]
- boost/mpl/map/aux_/preprocessed/typeof_based/map40.hpp [5:7]
- boost/mpl/map/aux_/preprocessed/typeof_based/map50.hpp [5:7]
- boost/mpl/map/aux_/size_impl.hpp [7:9]
- boost/mpl/map/aux_/tag.hpp [8:10]
- boost/mpl/map/aux_/value_type_impl.hpp [8:10]
- boost/mpl/map/map0.hpp [8:10]
- boost/mpl/map/map10.hpp [8:10]
- boost/mpl/map/map20.hpp [8:10]
- boost/mpl/map/map30.hpp [8:10]
- boost/mpl/map/map40.hpp [8:10]
- boost/mpl/map/map50.hpp [8:10]
- boost/mpl/math/fixed_c.hpp [7:9]
- boost/mpl/math/is_even.hpp [7:9]
- boost/mpl/math/rational_c.hpp [7:9]
- boost/mpl/max.hpp [7:9]
- boost/mpl/max_element.hpp [7:9]
- boost/mpl/min.hpp [7:9]
- boost/mpl/min_element.hpp [7:9]
- boost/mpl/min_max.hpp [7:9]
- boost/mpl/minus.hpp [7:9]
- boost/mpl/modulus.hpp [7:9]
- boost/mpl/multiplies.hpp [7:9]
- boost/mpl/multiset/aux_/count_impl.hpp [7:9]
- boost/mpl/multiset/aux_/insert_impl.hpp [7:9]
- boost/mpl/multiset/aux_/item.hpp [7:9]
- boost/mpl/multiset/aux_/multiset0.hpp [7:9]
- boost/mpl/multiset/aux_/tag.hpp [7:9]
- boost/mpl/multiset/multiset0.hpp [7:9]
- boost/mpl/negate.hpp [7:9]
- boost/mpl/next.hpp [7:9]
- boost/mpl/next_prior.hpp [7:9]
- boost/mpl/not.hpp [7:9]
- boost/mpl/not_equal_to.hpp [7:9]
- boost/mpl/or.hpp [7:9]
- boost/mpl/order.hpp [8:10]
- boost/mpl/order_fwd.hpp [8:10]
- boost/mpl/pair.hpp [7:9]
- boost/mpl/pair_view.hpp [8:10]
- boost/mpl/partition.hpp [8:10]
- boost/mpl/placeholders.hpp [12:14]
- boost/mpl/plus.hpp [7:9]
- boost/mpl/pop_back.hpp [7:9]
- boost/mpl/pop_back_fwd.hpp [7:9]
- boost/mpl/pop_front.hpp [7:9]
- boost/mpl/pop_front_fwd.hpp [7:9]
- boost/mpl/print.hpp [8:10]
- boost/mpl/prior.hpp [7:9]
- boost/mpl/protect.hpp [8:10]
- boost/mpl/push_back.hpp [7:9]
- boost/mpl/push_back_fwd.hpp [7:9]
- boost/mpl/push_front.hpp [7:9]
- boost/mpl/push_front_fwd.hpp [7:9]
- boost/mpl/quote.hpp [11:13]
- boost/mpl/range_c.hpp [7:9]
- boost/mpl/remove.hpp [8:10]
- boost/mpl/remove_if.hpp [8:10]
- boost/mpl/replace.hpp [9:11]
- boost/mpl/replace_if.hpp [9:11]
- boost/mpl/reverse.hpp [7:9]
- boost/mpl/reverse_fold.hpp [8:10]
- boost/mpl/reverse_iter_fold.hpp [8:10]
- boost/mpl/same_as.hpp [7:9]
- boost/mpl/sequence_tag.hpp [7:9]
- boost/mpl/sequence_tag_fwd.hpp [7:9]
- boost/mpl/set.hpp [7:9]
- boost/mpl/set/aux_/at_impl.hpp [7:9]
- boost/mpl/set/aux_/begin_end_impl.hpp [8:10]
- boost/mpl/set/aux_/clear_impl.hpp [8:10]
- boost/mpl/set/aux_/empty_impl.hpp [7:9]
- boost/mpl/set/aux_/erase_impl.hpp [8:10]
- boost/mpl/set/aux_/erase_key_impl.hpp [8:10]
- boost/mpl/set/aux_/has_key_impl.hpp [8:10]
- boost/mpl/set/aux_/include_preprocessed.hpp [6:8]
- boost/mpl/set/aux_/insert_impl.hpp [8:10]
- boost/mpl/set/aux_/insert_range_impl.hpp [7:9]
- boost/mpl/set/aux_/item.hpp [8:10]
- boost/mpl/set/aux_/iterator.hpp [8:10]
- boost/mpl/set/aux_/key_type_impl.hpp [8:10]
- boost/mpl/set/aux_/numbered.hpp [8:10]
- boost/mpl/set/aux_/numbered_c.hpp [8:10]
- boost/mpl/set/aux_/preprocessed/plain/set10.hpp [5:7]
- boost/mpl/set/aux_/preprocessed/plain/set10_c.hpp [5:7]
- boost/mpl/set/aux_/preprocessed/plain/set20.hpp [5:7]
- boost/mpl/set/aux_/preprocessed/plain/set20_c.hpp [5:7]
- boost/mpl/set/aux_/preprocessed/plain/set30.hpp [5:7]
- boost/mpl/set/aux_/preprocessed/plain/set30_c.hpp [5:7]
- boost/mpl/set/aux_/preprocessed/plain/set40.hpp [5:7]
- boost/mpl/set/aux_/preprocessed/plain/set40_c.hpp [5:7]
- boost/mpl/set/aux_/preprocessed/plain/set50.hpp [5:7]
- boost/mpl/set/aux_/preprocessed/plain/set50_c.hpp [5:7]
- boost/mpl/set/aux_/set0.hpp [8:10]
- boost/mpl/set/aux_/size_impl.hpp [7:9]
- boost/mpl/set/aux_/tag.hpp [8:10]
- boost/mpl/set/aux_/value_type_impl.hpp [8:10]
- boost/mpl/set/set0.hpp [8:10]
- boost/mpl/set/set0_c.hpp [8:10]
- boost/mpl/set/set10.hpp [8:10]
- boost/mpl/set/set10_c.hpp [8:10]
- boost/mpl/set/set20.hpp [8:10]
- boost/mpl/set/set20_c.hpp [8:10]
- boost/mpl/set/set30.hpp [8:10]
- boost/mpl/set/set30_c.hpp [8:10]
- boost/mpl/set/set40.hpp [8:10]
- boost/mpl/set/set40_c.hpp [8:10]
- boost/mpl/set/set50.hpp [8:10]
- boost/mpl/set/set50_c.hpp [8:10]
- boost/mpl/set_c.hpp [7:9]
- boost/mpl/shift_left.hpp [8:10]
- boost/mpl/shift_right.hpp [8:10]
- boost/mpl/single_view.hpp [7:9]
- boost/mpl/size.hpp [7:9]
- boost/mpl/size_fwd.hpp [7:9]
- boost/mpl/size_t.hpp [7:9]
- boost/mpl/size_t_fwd.hpp [7:9]
- boost/mpl/sizeof.hpp [7:9]
- boost/mpl/sort.hpp [8:10]
- boost/mpl/stable_partition.hpp [8:10]
- boost/mpl/switch.hpp [7:9]
- boost/mpl/tag.hpp [7:9]
- boost/mpl/times.hpp [7:9]
- boost/mpl/transform.hpp [8:10]
- boost/mpl/transform_view.hpp [7:9]
- boost/mpl/unique.hpp [8:10]
- boost/mpl/unpack_args.hpp [11:13]
- boost/mpl/upper_bound.hpp [7:9]
- boost/mpl/value_type.hpp [8:10]
- boost/mpl/value_type_fwd.hpp [8:10]
- boost/mpl/vector.hpp [7:9]
- boost/mpl/vector/aux_/O1_size.hpp [7:9]
- boost/mpl/vector/aux_/at.hpp [7:9]
- boost/mpl/vector/aux_/back.hpp [7:9]
- boost/mpl/vector/aux_/begin_end.hpp [7:9]
- boost/mpl/vector/aux_/clear.hpp [7:9]
- boost/mpl/vector/aux_/empty.hpp [7:9]
- boost/mpl/vector/aux_/front.hpp [7:9]
- boost/mpl/vector/aux_/include_preprocessed.hpp [6:8]
- boost/mpl/vector/aux_/item.hpp [7:9]
- boost/mpl/vector/aux_/iterator.hpp [7:9]
- boost/mpl/vector/aux_/numbered.hpp [8:10]
- boost/mpl/vector/aux_/numbered_c.hpp [8:10]
- boost/mpl/vector/aux_/pop_back.hpp [7:9]
- boost/mpl/vector/aux_/pop_front.hpp [7:9]
- boost/mpl/vector/aux_/preprocessed/no_ctps/vector10.hpp [4:6]
- boost/mpl/vector/aux_/preprocessed/no_ctps/vector10_c.hpp [4:6]
- boost/mpl/vector/aux_/preprocessed/no_ctps/vector20.hpp [4:6]
- boost/mpl/vector/aux_/preprocessed/no_ctps/vector20_c.hpp [4:6]
- boost/mpl/vector/aux_/preprocessed/no_ctps/vector30.hpp [4:6]
- boost/mpl/vector/aux_/preprocessed/no_ctps/vector30_c.hpp [4:6]
- boost/mpl/vector/aux_/preprocessed/no_ctps/vector40.hpp [4:6]
- boost/mpl/vector/aux_/preprocessed/no_ctps/vector40_c.hpp [4:6]
- boost/mpl/vector/aux_/preprocessed/no_ctps/vector50.hpp [4:6]
- boost/mpl/vector/aux_/preprocessed/no_ctps/vector50_c.hpp [4:6]
- boost/mpl/vector/aux_/preprocessed/plain/vector10.hpp [4:6]
- boost/mpl/vector/aux_/preprocessed/plain/vector10_c.hpp [4:6]
- boost/mpl/vector/aux_/preprocessed/plain/vector20.hpp [4:6]
- boost/mpl/vector/aux_/preprocessed/plain/vector20_c.hpp [4:6]
- boost/mpl/vector/aux_/preprocessed/plain/vector30.hpp [4:6]
- boost/mpl/vector/aux_/preprocessed/plain/vector30_c.hpp [4:6]
- boost/mpl/vector/aux_/preprocessed/plain/vector40.hpp [4:6]
- boost/mpl/vector/aux_/preprocessed/plain/vector40_c.hpp [4:6]
- boost/mpl/vector/aux_/preprocessed/plain/vector50.hpp [4:6]
- boost/mpl/vector/aux_/preprocessed/plain/vector50_c.hpp [4:6]
- boost/mpl/vector/aux_/preprocessed/typeof_based/vector10.hpp [4:6]
- boost/mpl/vector/aux_/preprocessed/typeof_based/vector10_c.hpp [4:6]
- boost/mpl/vector/aux_/preprocessed/typeof_based/vector20.hpp [4:6]
- boost/mpl/vector/aux_/preprocessed/typeof_based/vector20_c.hpp [4:6]
- boost/mpl/vector/aux_/preprocessed/typeof_based/vector30.hpp [4:6]
- boost/mpl/vector/aux_/preprocessed/typeof_based/vector30_c.hpp [4:6]
- boost/mpl/vector/aux_/preprocessed/typeof_based/vector40.hpp [4:6]
- boost/mpl/vector/aux_/preprocessed/typeof_based/vector40_c.hpp [4:6]
- boost/mpl/vector/aux_/preprocessed/typeof_based/vector50.hpp [4:6]
- boost/mpl/vector/aux_/preprocessed/typeof_based/vector50_c.hpp [4:6]
- boost/mpl/vector/aux_/push_back.hpp [7:9]
- boost/mpl/vector/aux_/push_front.hpp [7:9]
- boost/mpl/vector/aux_/size.hpp [7:9]
- boost/mpl/vector/aux_/tag.hpp [7:9]
- boost/mpl/vector/aux_/vector0.hpp [7:9]
- boost/mpl/vector/vector0.hpp [7:9]
- boost/mpl/vector/vector0_c.hpp [7:9]
- boost/mpl/vector/vector10.hpp [7:9]
- boost/mpl/vector/vector10_c.hpp [7:9]
- boost/mpl/vector/vector20.hpp [7:9]
- boost/mpl/vector/vector20_c.hpp [7:9]
- boost/mpl/vector/vector30.hpp [7:9]
- boost/mpl/vector/vector30_c.hpp [7:9]
- boost/mpl/vector/vector40.hpp [7:9]
- boost/mpl/vector/vector40_c.hpp [7:9]
- boost/mpl/vector/vector50.hpp [7:9]
- boost/mpl/vector/vector50_c.hpp [7:9]
- boost/mpl/vector_c.hpp [7:9]
- boost/mpl/void.hpp [7:9]
- boost/mpl/void_fwd.hpp [7:9]
- boost/property_tree/detail/exception_implementation.hpp [5:7]
- boost/property_tree/detail/file_parser_error.hpp [4:6]
- boost/property_tree/detail/info_parser_error.hpp [4:6]
- boost/property_tree/detail/info_parser_read.hpp [4:6]
- boost/property_tree/detail/info_parser_utils.hpp [4:6]
- boost/property_tree/detail/info_parser_write.hpp [4:6]
- boost/property_tree/detail/info_parser_writer_settings.hpp [5:7]
- boost/property_tree/detail/ptree_utils.hpp [4:6]
- boost/property_tree/detail/rapidxml.hpp [4:6]
- boost/property_tree/detail/xml_parser_error.hpp [4:6]
- boost/property_tree/detail/xml_parser_flags.hpp [4:6]
- boost/property_tree/detail/xml_parser_read_rapidxml.hpp [4:6]
- boost/property_tree/detail/xml_parser_utils.hpp [4:6]
- boost/property_tree/detail/xml_parser_write.hpp [5:7]
- boost/property_tree/detail/xml_parser_writer_settings.hpp [5:7]
- boost/property_tree/exceptions.hpp [5:7]
- boost/property_tree/id_translator.hpp [4:6]
- boost/property_tree/info_parser.hpp [4:6]
- boost/property_tree/ini_parser.hpp [5:7]
- boost/property_tree/json_parser.hpp [5:7]
- boost/property_tree/json_parser/detail/read.hpp [4:6]
- boost/property_tree/json_parser/detail/write.hpp [4:6]
- boost/property_tree/json_parser/error.hpp [4:6]
- boost/property_tree/ptree.hpp [5:7]
- boost/property_tree/ptree_fwd.hpp [5:7]
- boost/property_tree/ptree_serialization.hpp [4:6]
- boost/property_tree/stream_translator.hpp [4:6]
- boost/property_tree/string_path.hpp [4:6]
- boost/property_tree/xml_parser.hpp [5:7]
- boost/range/atl.hpp [10:12]
- boost/range/detail/microsoft.hpp [7:9]
- boost/range/mfc.hpp [10:12]
- boost/type_traits/detail/bool_trait_def.hpp [6:8]
- boost/type_traits/detail/bool_trait_undef.hpp [6:8]
- boost/type_traits/detail/template_arity_spec.hpp [5:7]
-
-KEEP BSL-1.0 be6811730f85c4929521c5b10c472668
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/archive/basic_streambuf_locale_saver.hpp at line 23
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/archive/basic_streambuf_locale_saver.hpp [21:23]
-
-KEEP BSL-1.0 bf0fd55850dbf83aac86f825081dbe20
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/buffer_concepts.hpp at line 3, boost/graph/stoer_wagner_min_cut.hpp at line 3
- License text:
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/graph/max_cardinality_matching.hpp [4:6]
+
+KEEP BSL-1.0 9fb8b120ca696580426b88ed5a5c689b
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/proto/detail/expr.hpp at line 63, boost/proto/detail/preprocessed/expr.hpp at line 7
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/proto/detail/expr.hpp [61:63]
+ boost/proto/detail/preprocessed/expr.hpp [5:7]
+
+KEEP BSL-1.0 a015b34eee4e5d1c766df0beb1fbb028
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signals.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/signals.hpp [3:6]
+
+KEEP BSL-1.0 a0c313f5525cd61a817a8bd728719d3a
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/numeric/interval.hpp at line 7, boost/numeric/interval/arith.hpp at line 7, boost/numeric/interval/arith2.hpp at line 10, boost/numeric/interval/arith3.hpp at line 11, boost/numeric/interval/checking.hpp at line 6, boost/numeric/interval/compare.hpp at line 6, boost/numeric/interval/compare/certain.hpp at line 6, boost/numeric/interval/compare/explicit.hpp at line 7, boost/numeric/interval/compare/lexicographic.hpp at line 6, boost/numeric/interval/compare/possible.hpp at line 6, boost/numeric/interval/compare/set.hpp at line 6, boost/numeric/interval/compare/tribool.hpp at line 6, boost/numeric/interval/constants.hpp at line 6, boost/numeric/interval/detail/alpha_rounding_control.hpp at line 6, boost/numeric/interval/detail/bcc_rounding_control.hpp at line 7, boost/numeric/interval/detail/bugs.hpp at line 7, boost/numeric/interval/detail/c99_rounding_control.hpp at line 7, boost/numeric/interval/detail/c99sub_rounding_control.hpp at line 7, boost/numeric/interval/detail/division.hpp at line 6, boost/numeric/interval/detail/ia64_rounding_control.hpp at line 6, boost/numeric/interval/detail/interval_prototype.hpp at line 6, boost/numeric/interval/detail/msvc_rounding_control.hpp at line 7, boost/numeric/interval/detail/ppc_rounding_control.hpp at line 8, boost/numeric/interval/detail/sparc_rounding_control.hpp at line 7, boost/numeric/interval/detail/test_input.hpp at line 6, boost/numeric/interval/detail/x86_rounding_control.hpp at line 7, boost/numeric/interval/detail/x86gcc_rounding_control.hpp at line 7, boost/numeric/interval/ext/integer.hpp at line 6, boost/numeric/interval/ext/x86_fast_rounding_control.hpp at line 13, boost/numeric/interval/hw_rounding.hpp at line 7, boost/numeric/interval/interval.hpp at line 6, boost/numeric/interval/io.hpp at line 13, boost/numeric/interval/limits.hpp at line 7, boost/numeric/interval/policies.hpp at line 6, boost/numeric/interval/rounded_arith.hpp at line 6, boost/numeric/interval/rounded_transc.hpp at line 6, boost/numeric/interval/rounding.hpp at line 6, boost/numeric/interval/transc.hpp at line 7, boost/numeric/interval/utility.hpp at line 7
+ License text:
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or
+ * copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/numeric/interval.hpp [6:8]
+ boost/numeric/interval/arith.hpp [6:8]
+ boost/numeric/interval/arith2.hpp [9:11]
+ boost/numeric/interval/arith3.hpp [10:12]
+ boost/numeric/interval/checking.hpp [5:7]
+ boost/numeric/interval/compare.hpp [5:7]
+ boost/numeric/interval/compare/certain.hpp [5:7]
+ boost/numeric/interval/compare/explicit.hpp [6:8]
+ boost/numeric/interval/compare/lexicographic.hpp [5:7]
+ boost/numeric/interval/compare/possible.hpp [5:7]
+ boost/numeric/interval/compare/set.hpp [5:7]
+ boost/numeric/interval/compare/tribool.hpp [5:7]
+ boost/numeric/interval/constants.hpp [5:7]
+ boost/numeric/interval/detail/alpha_rounding_control.hpp [5:7]
+ boost/numeric/interval/detail/bcc_rounding_control.hpp [6:8]
+ boost/numeric/interval/detail/bugs.hpp [6:8]
+ boost/numeric/interval/detail/c99_rounding_control.hpp [6:8]
+ boost/numeric/interval/detail/c99sub_rounding_control.hpp [6:8]
+ boost/numeric/interval/detail/division.hpp [5:7]
+ boost/numeric/interval/detail/ia64_rounding_control.hpp [5:7]
+ boost/numeric/interval/detail/interval_prototype.hpp [5:7]
+ boost/numeric/interval/detail/msvc_rounding_control.hpp [6:8]
+ boost/numeric/interval/detail/ppc_rounding_control.hpp [7:9]
+ boost/numeric/interval/detail/sparc_rounding_control.hpp [6:8]
+ boost/numeric/interval/detail/test_input.hpp [5:7]
+ boost/numeric/interval/detail/x86_rounding_control.hpp [6:8]
+ boost/numeric/interval/detail/x86gcc_rounding_control.hpp [6:8]
+ boost/numeric/interval/ext/integer.hpp [5:7]
+ boost/numeric/interval/ext/x86_fast_rounding_control.hpp [12:14]
+ boost/numeric/interval/hw_rounding.hpp [6:8]
+ boost/numeric/interval/interval.hpp [5:7]
+ boost/numeric/interval/io.hpp [12:14]
+ boost/numeric/interval/limits.hpp [6:8]
+ boost/numeric/interval/policies.hpp [5:7]
+ boost/numeric/interval/rounded_arith.hpp [5:7]
+ boost/numeric/interval/rounded_transc.hpp [5:7]
+ boost/numeric/interval/rounding.hpp [5:7]
+ boost/numeric/interval/transc.hpp [6:8]
+ boost/numeric/interval/utility.hpp [6:8]
+
+KEEP BSL-1.0 a138a947ff9ed38e8f57fe26c02cbbf2
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/random/detail/iterator_mixin.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 92.11
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/random/detail/iterator_mixin.hpp [4:10]
+
+KEEP BSL-1.0 a17fcea4674a991c2ced55620c9f9ef3
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/function.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/function.hpp [3:6]
+
+KEEP BSL-1.0 a33a9326898e5c686dcfd60e20f5be85
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/pointer_cast.hpp at line 5
+ License text:
// Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or the copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.43
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/graph/buffer_concepts.hpp [2:4]
- boost/graph/stoer_wagner_min_cut.hpp [2:4]
-
-KEEP BSL-1.0 bf51e8acf94582b5acb97f1eefc18468
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/library/c/cloudabi.h at line 5
- License text:
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/predef/library/c/cloudabi.h [4:6]
-
-KEEP BSL-1.0 bfa2e9f25dcd3278b51a40bdb6b5edc5
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/core/no_exceptions_support.hpp at line 11
- License text:
- // Use, modification and distribution is subject to the Boost Software
- // License, Version 1.0. (See accompanying file LICENSE_1_0.txt
- // or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/core/no_exceptions_support.hpp [10:12]
-
-KEEP BSL-1.0 bfce030a4887d21b304b87b154737065
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/sync/spin/wait.hpp at line 6
- License text:
- // (C) Copyright Ion Gaztanaga 2013-2013. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/interprocess/sync/spin/wait.hpp [4:6]
-
-KEEP BSL-1.0 c01de0902348b7c9494d50eaacc721eb
-BELONGS libs/atomic/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/atomic/atomic.hpp at line 3, boost/atomic/atomic_flag.hpp at line 3, boost/atomic/capabilities.hpp at line 3, boost/atomic/detail/addressof.hpp at line 3, boost/atomic/detail/atomic_flag.hpp at line 3, boost/atomic/detail/atomic_template.hpp at line 3, boost/atomic/detail/bitwise_cast.hpp at line 3, boost/atomic/detail/bitwise_fp_cast.hpp at line 3, boost/atomic/detail/caps_gcc_alpha.hpp at line 3, boost/atomic/detail/caps_gcc_arm.hpp at line 3, boost/atomic/detail/caps_gcc_atomic.hpp at line 3, boost/atomic/detail/caps_gcc_ppc.hpp at line 3, boost/atomic/detail/caps_gcc_sparc.hpp at line 3, boost/atomic/detail/caps_gcc_sync.hpp at line 3, boost/atomic/detail/caps_gcc_x86.hpp at line 3, boost/atomic/detail/caps_linux_arm.hpp at line 3, boost/atomic/detail/caps_msvc_arm.hpp at line 3, boost/atomic/detail/caps_msvc_x86.hpp at line 3, boost/atomic/detail/caps_windows.hpp at line 3, boost/atomic/detail/config.hpp at line 3, boost/atomic/detail/extra_fp_operations.hpp at line 3, boost/atomic/detail/extra_fp_operations_fwd.hpp at line 3, boost/atomic/detail/extra_fp_ops_emulated.hpp at line 3, boost/atomic/detail/extra_fp_ops_generic.hpp at line 3, boost/atomic/detail/extra_operations.hpp at line 3, boost/atomic/detail/extra_operations_fwd.hpp at line 3, boost/atomic/detail/extra_ops_emulated.hpp at line 3, boost/atomic/detail/extra_ops_gcc_arm.hpp at line 3, boost/atomic/detail/extra_ops_gcc_ppc.hpp at line 3, boost/atomic/detail/extra_ops_gcc_x86.hpp at line 3, boost/atomic/detail/extra_ops_generic.hpp at line 3, boost/atomic/detail/extra_ops_msvc_arm.hpp at line 3, boost/atomic/detail/extra_ops_msvc_x86.hpp at line 3, boost/atomic/detail/float_sizes.hpp at line 3, boost/atomic/detail/fp_operations.hpp at line 3, boost/atomic/detail/fp_operations_fwd.hpp at line 3, boost/atomic/detail/fp_ops_emulated.hpp at line 3, boost/atomic/detail/fp_ops_generic.hpp at line 3, boost/atomic/detail/hwcaps_gcc_arm.hpp at line 3, boost/atomic/detail/hwcaps_gcc_ppc.hpp at line 3, boost/atomic/detail/hwcaps_gcc_x86.hpp at line 3, boost/atomic/detail/int_sizes.hpp at line 3, boost/atomic/detail/integral_extend.hpp at line 3, boost/atomic/detail/link.hpp at line 3, boost/atomic/detail/lockpool.hpp at line 3, boost/atomic/detail/operations.hpp at line 3, boost/atomic/detail/operations_fwd.hpp at line 3, boost/atomic/detail/operations_lockfree.hpp at line 3, boost/atomic/detail/ops_cas_based.hpp at line 3, boost/atomic/detail/ops_emulated.hpp at line 3, boost/atomic/detail/ops_extending_cas_based.hpp at line 3, boost/atomic/detail/ops_gcc_alpha.hpp at line 3, boost/atomic/detail/ops_gcc_arm.hpp at line 3, boost/atomic/detail/ops_gcc_arm_common.hpp at line 3, boost/atomic/detail/ops_gcc_atomic.hpp at line 3, boost/atomic/detail/ops_gcc_ppc.hpp at line 3, boost/atomic/detail/ops_gcc_ppc_common.hpp at line 3, boost/atomic/detail/ops_gcc_sparc.hpp at line 3, boost/atomic/detail/ops_gcc_sync.hpp at line 3, boost/atomic/detail/ops_gcc_x86.hpp at line 3, boost/atomic/detail/ops_gcc_x86_dcas-linux.hpp at line 3, boost/atomic/detail/ops_gcc_x86_dcas-osx.hpp at line 3, boost/atomic/detail/ops_gcc_x86_dcas.hpp at line 3, boost/atomic/detail/ops_linux_arm.hpp at line 3, boost/atomic/detail/ops_msvc_arm.hpp at line 3, boost/atomic/detail/ops_msvc_common.hpp at line 3, boost/atomic/detail/ops_msvc_x86.hpp at line 3, boost/atomic/detail/ops_windows.hpp at line 3, boost/atomic/detail/platform.hpp at line 3, boost/atomic/detail/storage_type.hpp at line 3, boost/atomic/detail/string_ops.hpp at line 3, boost/atomic/detail/type_traits/conditional.hpp at line 3, boost/atomic/detail/type_traits/integral_constant.hpp at line 3, boost/atomic/detail/type_traits/is_floating_point.hpp at line 3, boost/atomic/detail/type_traits/is_function.hpp at line 3, boost/atomic/detail/type_traits/is_iec559.hpp at line 3, boost/atomic/detail/type_traits/is_integral.hpp at line 3, boost/atomic/detail/type_traits/is_signed.hpp at line 3, boost/atomic/detail/type_traits/is_trivially_default_constructible.hpp at line 3, boost/atomic/detail/type_traits/make_signed.hpp at line 3, boost/atomic/detail/type_traits/make_unsigned.hpp at line 3, boost/atomic/fences.hpp at line 3, boost/detail/allocator_utilities.hpp at line 3, boost/flyweight.hpp at line 3, boost/flyweight/assoc_container_factory.hpp at line 3, boost/flyweight/assoc_container_factory_fwd.hpp at line 3, boost/flyweight/detail/archive_constructed.hpp at line 3, boost/flyweight/detail/default_value_policy.hpp at line 3, boost/flyweight/detail/dyn_perfect_fwd.hpp at line 3, boost/flyweight/detail/flyweight_core.hpp at line 3, boost/flyweight/detail/is_placeholder_expr.hpp at line 3, boost/flyweight/detail/nested_xxx_if_not_ph.hpp at line 3, boost/flyweight/detail/not_placeholder_expr.hpp at line 3, boost/flyweight/detail/perfect_fwd.hpp at line 3, boost/flyweight/detail/pp_perfect_fwd.hpp at line 3, boost/flyweight/detail/recursive_lw_mutex.hpp at line 3, boost/flyweight/detail/serialization_helper.hpp at line 3, boost/flyweight/detail/value_tag.hpp at line 3, boost/flyweight/factory_tag.hpp at line 3, boost/flyweight/flyweight.hpp at line 5, boost/flyweight/flyweight_fwd.hpp at line 3, boost/flyweight/hashed_factory.hpp at line 3, boost/flyweight/hashed_factory_fwd.hpp at line 3, boost/flyweight/holder_tag.hpp at line 3, boost/flyweight/intermodule_holder.hpp at line 3, boost/flyweight/intermodule_holder_fwd.hpp at line 3, boost/flyweight/key_value.hpp at line 3, boost/flyweight/key_value_fwd.hpp at line 3, boost/flyweight/locking_tag.hpp at line 3, boost/flyweight/no_locking.hpp at line 3, boost/flyweight/no_locking_fwd.hpp at line 3, boost/flyweight/no_tracking.hpp at line 3, boost/flyweight/no_tracking_fwd.hpp at line 3, boost/flyweight/refcounted.hpp at line 3, boost/flyweight/refcounted_fwd.hpp at line 3, boost/flyweight/serialize.hpp at line 3, boost/flyweight/set_factory.hpp at line 3, boost/flyweight/set_factory_fwd.hpp at line 3, boost/flyweight/simple_locking.hpp at line 3, boost/flyweight/simple_locking_fwd.hpp at line 3, boost/flyweight/static_holder.hpp at line 3, boost/flyweight/static_holder_fwd.hpp at line 3, boost/flyweight/tag.hpp at line 3, boost/flyweight/tracking_tag.hpp at line 3, boost/multi_index/composite_key.hpp at line 3, boost/multi_index/detail/access_specifier.hpp at line 3, boost/multi_index/detail/adl_swap.hpp at line 3, boost/multi_index/detail/archive_constructed.hpp at line 3, boost/multi_index/detail/auto_space.hpp at line 3, boost/multi_index/detail/base_type.hpp at line 3, boost/multi_index/detail/bidir_node_iterator.hpp at line 3, boost/multi_index/detail/bucket_array.hpp at line 3, boost/multi_index/detail/cons_stdtuple.hpp at line 3, boost/multi_index/detail/converter.hpp at line 3, boost/multi_index/detail/copy_map.hpp at line 3, boost/multi_index/detail/do_not_copy_elements_tag.hpp at line 3, boost/multi_index/detail/duplicates_iterator.hpp at line 3, boost/multi_index/detail/has_tag.hpp at line 3, boost/multi_index/detail/hash_index_args.hpp at line 3, boost/multi_index/detail/hash_index_iterator.hpp at line 3, boost/multi_index/detail/hash_index_node.hpp at line 3, boost/multi_index/detail/header_holder.hpp at line 3, boost/multi_index/detail/ignore_wstrict_aliasing.hpp at line 3, boost/multi_index/detail/index_base.hpp at line 3, boost/multi_index/detail/index_loader.hpp at line 3, boost/multi_index/detail/index_matcher.hpp at line 3, boost/multi_index/detail/index_node_base.hpp at line 3, boost/multi_index/detail/index_saver.hpp at line 3, boost/multi_index/detail/invariant_assert.hpp at line 3, boost/multi_index/detail/is_index_list.hpp at line 3, boost/multi_index/detail/is_transparent.hpp at line 3, boost/multi_index/detail/iter_adaptor.hpp at line 3, boost/multi_index/detail/modify_key_adaptor.hpp at line 3, boost/multi_index/detail/no_duplicate_tags.hpp at line 3, boost/multi_index/detail/node_type.hpp at line 3, boost/multi_index/detail/ord_index_args.hpp at line 3, boost/multi_index/detail/ord_index_impl.hpp at line 3, boost/multi_index/detail/ord_index_impl_fwd.hpp at line 3, boost/multi_index/detail/ord_index_node.hpp at line 3, boost/multi_index/detail/ord_index_ops.hpp at line 3, boost/multi_index/detail/promotes_arg.hpp at line 3, boost/multi_index/detail/raw_ptr.hpp at line 3, boost/multi_index/detail/restore_wstrict_aliasing.hpp at line 3, boost/multi_index/detail/rnd_index_loader.hpp at line 3, boost/multi_index/detail/rnd_index_node.hpp at line 3, boost/multi_index/detail/rnd_index_ops.hpp at line 3, boost/multi_index/detail/rnd_index_ptr_array.hpp at line 3, boost/multi_index/detail/rnd_node_iterator.hpp at line 3, boost/multi_index/detail/rnk_index_ops.hpp at line 3, boost/multi_index/detail/safe_mode.hpp at line 3, boost/multi_index/detail/scope_guard.hpp at line 3, boost/multi_index/detail/seq_index_node.hpp at line 3, boost/multi_index/detail/seq_index_ops.hpp at line 3, boost/multi_index/detail/serialization_version.hpp at line 3, boost/multi_index/detail/uintptr_type.hpp at line 3, boost/multi_index/detail/unbounded.hpp at line 3, boost/multi_index/detail/value_compare.hpp at line 3, boost/multi_index/detail/vartempl_support.hpp at line 3, boost/multi_index/global_fun.hpp at line 3, boost/multi_index/hashed_index.hpp at line 3, boost/multi_index/hashed_index_fwd.hpp at line 3, boost/multi_index/identity.hpp at line 3, boost/multi_index/identity_fwd.hpp at line 3, boost/multi_index/indexed_by.hpp at line 3, boost/multi_index/key_extractors.hpp at line 3, boost/multi_index/mem_fun.hpp at line 3, boost/multi_index/member.hpp at line 3, boost/multi_index/ordered_index.hpp at line 3, boost/multi_index/ordered_index_fwd.hpp at line 3, boost/multi_index/random_access_index.hpp at line 3, boost/multi_index/random_access_index_fwd.hpp at line 3, boost/multi_index/ranked_index.hpp at line 3, boost/multi_index/ranked_index_fwd.hpp at line 3, boost/multi_index/safe_mode_errors.hpp at line 3, boost/multi_index/sequenced_index.hpp at line 3, boost/multi_index/sequenced_index_fwd.hpp at line 3, boost/multi_index/tag.hpp at line 3, boost/multi_index_container.hpp at line 5, boost/multi_index_container_fwd.hpp at line 3, boost/poly_collection/algorithm.hpp at line 3, boost/poly_collection/any_collection.hpp at line 3, boost/poly_collection/any_collection_fwd.hpp at line 3, boost/poly_collection/base_collection.hpp at line 3, boost/poly_collection/base_collection_fwd.hpp at line 3, boost/poly_collection/detail/any_iterator.hpp at line 3, boost/poly_collection/detail/any_model.hpp at line 3, boost/poly_collection/detail/auto_iterator.hpp at line 3, boost/poly_collection/detail/base_model.hpp at line 3, boost/poly_collection/detail/callable_wrapper.hpp at line 3, boost/poly_collection/detail/callable_wrapper_iterator.hpp at line 3, boost/poly_collection/detail/function_model.hpp at line 3, boost/poly_collection/detail/functional.hpp at line 3, boost/poly_collection/detail/integer_sequence.hpp at line 3, boost/poly_collection/detail/is_acceptable.hpp at line 3, boost/poly_collection/detail/is_constructible.hpp at line 3, boost/poly_collection/detail/is_equality_comparable.hpp at line 3, boost/poly_collection/detail/is_final.hpp at line 3, boost/poly_collection/detail/is_invocable.hpp at line 3, boost/poly_collection/detail/is_nothrow_eq_comparable.hpp at line 3, boost/poly_collection/detail/iterator_impl.hpp at line 3, boost/poly_collection/detail/iterator_traits.hpp at line 3, boost/poly_collection/detail/newdelete_allocator.hpp at line 3, boost/poly_collection/detail/packed_segment.hpp at line 3, boost/poly_collection/detail/poly_collection.hpp at line 3, boost/poly_collection/detail/segment.hpp at line 3, boost/poly_collection/detail/segment_backend.hpp at line 3, boost/poly_collection/detail/segment_split.hpp at line 3, boost/poly_collection/detail/split_segment.hpp at line 3, boost/poly_collection/detail/stride_iterator.hpp at line 3, boost/poly_collection/detail/type_info_map.hpp at line 3, boost/poly_collection/detail/type_restitution.hpp at line 3, boost/poly_collection/detail/value_holder.hpp at line 3, boost/poly_collection/exception.hpp at line 3, boost/poly_collection/function_collection.hpp at line 3, boost/poly_collection/function_collection_fwd.hpp at line 3, boost/regex/v4/basic_regex.hpp at line 7, boost/type_traits/detail/is_likely_lambda.hpp at line 3, libs/atomic/src/lockpool.cpp at line 3
- License text:
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/atomic/atomic.hpp [2:4]
- boost/atomic/atomic_flag.hpp [2:4]
- boost/atomic/capabilities.hpp [2:4]
- boost/atomic/detail/addressof.hpp [2:4]
- boost/atomic/detail/atomic_flag.hpp [2:4]
- boost/atomic/detail/atomic_template.hpp [2:4]
- boost/atomic/detail/bitwise_cast.hpp [2:4]
- boost/atomic/detail/bitwise_fp_cast.hpp [2:4]
- boost/atomic/detail/caps_gcc_alpha.hpp [2:4]
- boost/atomic/detail/caps_gcc_arm.hpp [2:4]
- boost/atomic/detail/caps_gcc_atomic.hpp [2:4]
- boost/atomic/detail/caps_gcc_ppc.hpp [2:4]
- boost/atomic/detail/caps_gcc_sparc.hpp [2:4]
- boost/atomic/detail/caps_gcc_sync.hpp [2:4]
- boost/atomic/detail/caps_gcc_x86.hpp [2:4]
- boost/atomic/detail/caps_linux_arm.hpp [2:4]
- boost/atomic/detail/caps_msvc_arm.hpp [2:4]
- boost/atomic/detail/caps_msvc_x86.hpp [2:4]
- boost/atomic/detail/caps_windows.hpp [2:4]
- boost/atomic/detail/config.hpp [2:4]
- boost/atomic/detail/extra_fp_operations.hpp [2:4]
- boost/atomic/detail/extra_fp_operations_fwd.hpp [2:4]
- boost/atomic/detail/extra_fp_ops_emulated.hpp [2:4]
- boost/atomic/detail/extra_fp_ops_generic.hpp [2:4]
- boost/atomic/detail/extra_operations.hpp [2:4]
- boost/atomic/detail/extra_operations_fwd.hpp [2:4]
- boost/atomic/detail/extra_ops_emulated.hpp [2:4]
- boost/atomic/detail/extra_ops_gcc_arm.hpp [2:4]
- boost/atomic/detail/extra_ops_gcc_ppc.hpp [2:4]
- boost/atomic/detail/extra_ops_gcc_x86.hpp [2:4]
- boost/atomic/detail/extra_ops_generic.hpp [2:4]
- boost/atomic/detail/extra_ops_msvc_arm.hpp [2:4]
- boost/atomic/detail/extra_ops_msvc_x86.hpp [2:4]
- boost/atomic/detail/float_sizes.hpp [2:4]
- boost/atomic/detail/fp_operations.hpp [2:4]
- boost/atomic/detail/fp_operations_fwd.hpp [2:4]
- boost/atomic/detail/fp_ops_emulated.hpp [2:4]
- boost/atomic/detail/fp_ops_generic.hpp [2:4]
- boost/atomic/detail/hwcaps_gcc_arm.hpp [2:4]
- boost/atomic/detail/hwcaps_gcc_ppc.hpp [2:4]
- boost/atomic/detail/hwcaps_gcc_x86.hpp [2:4]
- boost/atomic/detail/int_sizes.hpp [2:4]
- boost/atomic/detail/integral_extend.hpp [2:4]
- boost/atomic/detail/link.hpp [2:4]
- boost/atomic/detail/lockpool.hpp [2:4]
- boost/atomic/detail/operations.hpp [2:4]
- boost/atomic/detail/operations_fwd.hpp [2:4]
- boost/atomic/detail/operations_lockfree.hpp [2:4]
- boost/atomic/detail/ops_cas_based.hpp [2:4]
- boost/atomic/detail/ops_emulated.hpp [2:4]
- boost/atomic/detail/ops_extending_cas_based.hpp [2:4]
- boost/atomic/detail/ops_gcc_alpha.hpp [2:4]
- boost/atomic/detail/ops_gcc_arm.hpp [2:4]
- boost/atomic/detail/ops_gcc_arm_common.hpp [2:4]
- boost/atomic/detail/ops_gcc_atomic.hpp [2:4]
- boost/atomic/detail/ops_gcc_ppc.hpp [2:4]
- boost/atomic/detail/ops_gcc_ppc_common.hpp [2:4]
- boost/atomic/detail/ops_gcc_sparc.hpp [2:4]
- boost/atomic/detail/ops_gcc_sync.hpp [2:4]
- boost/atomic/detail/ops_gcc_x86.hpp [2:4]
- boost/atomic/detail/ops_gcc_x86_dcas-linux.hpp [2:4]
- boost/atomic/detail/ops_gcc_x86_dcas-osx.hpp [2:4]
- boost/atomic/detail/ops_gcc_x86_dcas.hpp [2:4]
- boost/atomic/detail/ops_linux_arm.hpp [2:4]
- boost/atomic/detail/ops_msvc_arm.hpp [2:4]
- boost/atomic/detail/ops_msvc_common.hpp [2:4]
- boost/atomic/detail/ops_msvc_x86.hpp [2:4]
- boost/atomic/detail/ops_windows.hpp [2:4]
- boost/atomic/detail/platform.hpp [2:4]
- boost/atomic/detail/storage_type.hpp [2:4]
- boost/atomic/detail/string_ops.hpp [2:4]
- boost/atomic/detail/type_traits/conditional.hpp [2:4]
- boost/atomic/detail/type_traits/integral_constant.hpp [2:4]
- boost/atomic/detail/type_traits/is_floating_point.hpp [2:4]
- boost/atomic/detail/type_traits/is_function.hpp [2:4]
- boost/atomic/detail/type_traits/is_iec559.hpp [2:4]
- boost/atomic/detail/type_traits/is_integral.hpp [2:4]
- boost/atomic/detail/type_traits/is_signed.hpp [2:4]
- boost/atomic/detail/type_traits/is_trivially_default_constructible.hpp [2:4]
- boost/atomic/detail/type_traits/make_signed.hpp [2:4]
- boost/atomic/detail/type_traits/make_unsigned.hpp [2:4]
- boost/atomic/fences.hpp [2:4]
- boost/detail/allocator_utilities.hpp [2:4]
- boost/flyweight.hpp [2:4]
- boost/flyweight/assoc_container_factory.hpp [2:4]
- boost/flyweight/assoc_container_factory_fwd.hpp [2:4]
- boost/flyweight/detail/archive_constructed.hpp [2:4]
- boost/flyweight/detail/default_value_policy.hpp [2:4]
- boost/flyweight/detail/dyn_perfect_fwd.hpp [2:4]
- boost/flyweight/detail/flyweight_core.hpp [2:4]
- boost/flyweight/detail/is_placeholder_expr.hpp [2:4]
- boost/flyweight/detail/nested_xxx_if_not_ph.hpp [2:4]
- boost/flyweight/detail/not_placeholder_expr.hpp [2:4]
- boost/flyweight/detail/perfect_fwd.hpp [2:4]
- boost/flyweight/detail/pp_perfect_fwd.hpp [2:4]
- boost/flyweight/detail/recursive_lw_mutex.hpp [2:4]
- boost/flyweight/detail/serialization_helper.hpp [2:4]
- boost/flyweight/detail/value_tag.hpp [2:4]
- boost/flyweight/factory_tag.hpp [2:4]
- boost/flyweight/flyweight.hpp [4:6]
- boost/flyweight/flyweight_fwd.hpp [2:4]
- boost/flyweight/hashed_factory.hpp [2:4]
- boost/flyweight/hashed_factory_fwd.hpp [2:4]
- boost/flyweight/holder_tag.hpp [2:4]
- boost/flyweight/intermodule_holder.hpp [2:4]
- boost/flyweight/intermodule_holder_fwd.hpp [2:4]
- boost/flyweight/key_value.hpp [2:4]
- boost/flyweight/key_value_fwd.hpp [2:4]
- boost/flyweight/locking_tag.hpp [2:4]
- boost/flyweight/no_locking.hpp [2:4]
- boost/flyweight/no_locking_fwd.hpp [2:4]
- boost/flyweight/no_tracking.hpp [2:4]
- boost/flyweight/no_tracking_fwd.hpp [2:4]
- boost/flyweight/refcounted.hpp [2:4]
- boost/flyweight/refcounted_fwd.hpp [2:4]
- boost/flyweight/serialize.hpp [2:4]
- boost/flyweight/set_factory.hpp [2:4]
- boost/flyweight/set_factory_fwd.hpp [2:4]
- boost/flyweight/simple_locking.hpp [2:4]
- boost/flyweight/simple_locking_fwd.hpp [2:4]
- boost/flyweight/static_holder.hpp [2:4]
- boost/flyweight/static_holder_fwd.hpp [2:4]
- boost/flyweight/tag.hpp [2:4]
- boost/flyweight/tracking_tag.hpp [2:4]
- boost/multi_index/composite_key.hpp [2:4]
- boost/multi_index/detail/access_specifier.hpp [2:4]
- boost/multi_index/detail/adl_swap.hpp [2:4]
- boost/multi_index/detail/archive_constructed.hpp [2:4]
- boost/multi_index/detail/auto_space.hpp [2:4]
- boost/multi_index/detail/base_type.hpp [2:4]
- boost/multi_index/detail/bidir_node_iterator.hpp [2:4]
- boost/multi_index/detail/bucket_array.hpp [2:4]
- boost/multi_index/detail/cons_stdtuple.hpp [2:4]
- boost/multi_index/detail/converter.hpp [2:4]
- boost/multi_index/detail/copy_map.hpp [2:4]
- boost/multi_index/detail/do_not_copy_elements_tag.hpp [2:4]
- boost/multi_index/detail/duplicates_iterator.hpp [2:4]
- boost/multi_index/detail/has_tag.hpp [2:4]
- boost/multi_index/detail/hash_index_args.hpp [2:4]
- boost/multi_index/detail/hash_index_iterator.hpp [2:4]
- boost/multi_index/detail/hash_index_node.hpp [2:4]
- boost/multi_index/detail/header_holder.hpp [2:4]
- boost/multi_index/detail/ignore_wstrict_aliasing.hpp [2:4]
- boost/multi_index/detail/index_base.hpp [2:4]
- boost/multi_index/detail/index_loader.hpp [2:4]
- boost/multi_index/detail/index_matcher.hpp [2:4]
- boost/multi_index/detail/index_node_base.hpp [2:4]
- boost/multi_index/detail/index_saver.hpp [2:4]
- boost/multi_index/detail/invariant_assert.hpp [2:4]
- boost/multi_index/detail/is_index_list.hpp [2:4]
- boost/multi_index/detail/is_transparent.hpp [2:4]
- boost/multi_index/detail/iter_adaptor.hpp [2:4]
- boost/multi_index/detail/modify_key_adaptor.hpp [2:4]
- boost/multi_index/detail/no_duplicate_tags.hpp [2:4]
- boost/multi_index/detail/node_type.hpp [2:4]
- boost/multi_index/detail/ord_index_args.hpp [2:4]
- boost/multi_index/detail/ord_index_impl.hpp [2:4]
- boost/multi_index/detail/ord_index_impl_fwd.hpp [2:4]
- boost/multi_index/detail/ord_index_node.hpp [2:4]
- boost/multi_index/detail/ord_index_ops.hpp [2:4]
- boost/multi_index/detail/promotes_arg.hpp [2:4]
- boost/multi_index/detail/raw_ptr.hpp [2:4]
- boost/multi_index/detail/restore_wstrict_aliasing.hpp [2:4]
- boost/multi_index/detail/rnd_index_loader.hpp [2:4]
- boost/multi_index/detail/rnd_index_node.hpp [2:4]
- boost/multi_index/detail/rnd_index_ops.hpp [2:4]
- boost/multi_index/detail/rnd_index_ptr_array.hpp [2:4]
- boost/multi_index/detail/rnd_node_iterator.hpp [2:4]
- boost/multi_index/detail/rnk_index_ops.hpp [2:4]
- boost/multi_index/detail/safe_mode.hpp [2:4]
- boost/multi_index/detail/scope_guard.hpp [2:4]
- boost/multi_index/detail/seq_index_node.hpp [2:4]
- boost/multi_index/detail/seq_index_ops.hpp [2:4]
- boost/multi_index/detail/serialization_version.hpp [2:4]
- boost/multi_index/detail/uintptr_type.hpp [2:4]
- boost/multi_index/detail/unbounded.hpp [2:4]
- boost/multi_index/detail/value_compare.hpp [2:4]
- boost/multi_index/detail/vartempl_support.hpp [2:4]
- boost/multi_index/global_fun.hpp [2:4]
- boost/multi_index/hashed_index.hpp [2:4]
- boost/multi_index/hashed_index_fwd.hpp [2:4]
- boost/multi_index/identity.hpp [2:4]
- boost/multi_index/identity_fwd.hpp [2:4]
- boost/multi_index/indexed_by.hpp [2:4]
- boost/multi_index/key_extractors.hpp [2:4]
- boost/multi_index/mem_fun.hpp [2:4]
- boost/multi_index/member.hpp [2:4]
- boost/multi_index/ordered_index.hpp [2:4]
- boost/multi_index/ordered_index_fwd.hpp [2:4]
- boost/multi_index/random_access_index.hpp [2:4]
- boost/multi_index/random_access_index_fwd.hpp [2:4]
- boost/multi_index/ranked_index.hpp [2:4]
- boost/multi_index/ranked_index_fwd.hpp [2:4]
- boost/multi_index/safe_mode_errors.hpp [2:4]
- boost/multi_index/sequenced_index.hpp [2:4]
- boost/multi_index/sequenced_index_fwd.hpp [2:4]
- boost/multi_index/tag.hpp [2:4]
- boost/multi_index_container.hpp [4:6]
- boost/multi_index_container_fwd.hpp [2:4]
- boost/poly_collection/algorithm.hpp [2:4]
- boost/poly_collection/any_collection.hpp [2:4]
- boost/poly_collection/any_collection_fwd.hpp [2:4]
- boost/poly_collection/base_collection.hpp [2:4]
- boost/poly_collection/base_collection_fwd.hpp [2:4]
- boost/poly_collection/detail/any_iterator.hpp [2:4]
- boost/poly_collection/detail/any_model.hpp [2:4]
- boost/poly_collection/detail/auto_iterator.hpp [2:4]
- boost/poly_collection/detail/base_model.hpp [2:4]
- boost/poly_collection/detail/callable_wrapper.hpp [2:4]
- boost/poly_collection/detail/callable_wrapper_iterator.hpp [2:4]
- boost/poly_collection/detail/function_model.hpp [2:4]
- boost/poly_collection/detail/functional.hpp [2:4]
- boost/poly_collection/detail/integer_sequence.hpp [2:4]
- boost/poly_collection/detail/is_acceptable.hpp [2:4]
- boost/poly_collection/detail/is_constructible.hpp [2:4]
- boost/poly_collection/detail/is_equality_comparable.hpp [2:4]
- boost/poly_collection/detail/is_final.hpp [2:4]
- boost/poly_collection/detail/is_invocable.hpp [2:4]
- boost/poly_collection/detail/is_nothrow_eq_comparable.hpp [2:4]
- boost/poly_collection/detail/iterator_impl.hpp [2:4]
- boost/poly_collection/detail/iterator_traits.hpp [2:4]
- boost/poly_collection/detail/newdelete_allocator.hpp [2:4]
- boost/poly_collection/detail/packed_segment.hpp [2:4]
- boost/poly_collection/detail/poly_collection.hpp [2:4]
- boost/poly_collection/detail/segment.hpp [2:4]
- boost/poly_collection/detail/segment_backend.hpp [2:4]
- boost/poly_collection/detail/segment_split.hpp [2:4]
- boost/poly_collection/detail/split_segment.hpp [2:4]
- boost/poly_collection/detail/stride_iterator.hpp [2:4]
- boost/poly_collection/detail/type_info_map.hpp [2:4]
- boost/poly_collection/detail/type_restitution.hpp [2:4]
- boost/poly_collection/detail/value_holder.hpp [2:4]
- boost/poly_collection/exception.hpp [2:4]
- boost/poly_collection/function_collection.hpp [2:4]
- boost/poly_collection/function_collection_fwd.hpp [2:4]
- boost/regex/v4/basic_regex.hpp [6:8]
- boost/type_traits/detail/is_likely_lambda.hpp [2:4]
- libs/atomic/src/lockpool.cpp [2:4]
-
-KEEP BSL-1.0 c1b846d2f0addcc3ea1d7704985c0a13
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/polygon/detail/voronoi_ctypes.hpp at line 5, boost/polygon/detail/voronoi_predicates.hpp at line 5, boost/polygon/detail/voronoi_robust_fpt.hpp at line 5, boost/polygon/detail/voronoi_structures.hpp at line 5, boost/polygon/voronoi.hpp at line 5, boost/polygon/voronoi_builder.hpp at line 5, boost/polygon/voronoi_diagram.hpp at line 5, boost/polygon/voronoi_geometry_type.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/polygon/detail/voronoi_ctypes.hpp [4:8]
- boost/polygon/detail/voronoi_predicates.hpp [4:8]
- boost/polygon/detail/voronoi_robust_fpt.hpp [4:8]
- boost/polygon/detail/voronoi_structures.hpp [4:8]
- boost/polygon/voronoi.hpp [4:8]
- boost/polygon/voronoi_builder.hpp [4:8]
- boost/polygon/voronoi_diagram.hpp [4:8]
- boost/polygon/voronoi_geometry_type.hpp [4:8]
-
-KEEP BSL-1.0 c2c06b4b0401328c4a7db06845377814
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/process/shell.hpp at line 9
- License text:
- // Distributed under the Boost Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/process/shell.hpp [8:9]
-
-KEEP BSL-1.0 c34ac6985916f763b687de4468776cc6
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 40.62
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/spirit/home/support/detail/lexer/generate_cpp.hpp [84:87]
- boost/spirit/home/support/detail/lexer/generate_re2c.hpp [118:121]
-
-KEEP BSL-1.0 c3616e6a4ba8162a065541626a8ff94c
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_erasure/any.hpp at line 6, boost/type_erasure/any_cast.hpp at line 6, boost/type_erasure/binding.hpp at line 6, boost/type_erasure/binding_of.hpp at line 6, boost/type_erasure/builtin.hpp at line 6, boost/type_erasure/call.hpp at line 6, boost/type_erasure/callable.hpp at line 6, boost/type_erasure/check_match.hpp at line 6, boost/type_erasure/concept_interface.hpp at line 6, boost/type_erasure/concept_of.hpp at line 6, boost/type_erasure/config.hpp at line 6, boost/type_erasure/constructible.hpp at line 6, boost/type_erasure/deduced.hpp at line 6, boost/type_erasure/derived.hpp at line 6, boost/type_erasure/detail/access.hpp at line 6, boost/type_erasure/detail/adapt_to_vtable.hpp at line 6, boost/type_erasure/detail/any_base.hpp at line 6, boost/type_erasure/detail/auto_link.hpp at line 6, boost/type_erasure/detail/check_call.hpp at line 6, boost/type_erasure/detail/check_map.hpp at line 6, boost/type_erasure/detail/const.hpp at line 6, boost/type_erasure/detail/construct.hpp at line 6, boost/type_erasure/detail/dynamic_vtable.hpp at line 6, boost/type_erasure/detail/extract_concept.hpp at line 6, boost/type_erasure/detail/get_placeholders.hpp at line 6, boost/type_erasure/detail/get_signature.hpp at line 6, boost/type_erasure/detail/instantiate.hpp at line 6, boost/type_erasure/detail/macro.hpp at line 6, boost/type_erasure/detail/member11.hpp at line 6, boost/type_erasure/detail/meta.hpp at line 6, boost/type_erasure/detail/normalize.hpp at line 6, boost/type_erasure/detail/normalize_deduced.hpp at line 6, boost/type_erasure/detail/null.hpp at line 6, boost/type_erasure/detail/rebind_placeholders.hpp at line 6, boost/type_erasure/detail/storage.hpp at line 6, boost/type_erasure/detail/vtable.hpp at line 6, boost/type_erasure/dynamic_any_cast.hpp at line 6, boost/type_erasure/dynamic_binding.hpp at line 6, boost/type_erasure/exception.hpp at line 6, boost/type_erasure/free.hpp at line 6, boost/type_erasure/is_empty.hpp at line 6, boost/type_erasure/is_placeholder.hpp at line 6, boost/type_erasure/is_subconcept.hpp at line 6, boost/type_erasure/iterator.hpp at line 6, boost/type_erasure/member.hpp at line 6, boost/type_erasure/operators.hpp at line 6, boost/type_erasure/param.hpp at line 6, boost/type_erasure/placeholder.hpp at line 6, boost/type_erasure/placeholder_of.hpp at line 6, boost/type_erasure/rebind_any.hpp at line 6, boost/type_erasure/register_binding.hpp at line 6, boost/type_erasure/relaxed.hpp at line 6, boost/type_erasure/require_match.hpp at line 6, boost/type_erasure/same_type.hpp at line 6, boost/type_erasure/static_binding.hpp at line 6, boost/type_erasure/tuple.hpp at line 6, boost/type_erasure/typeid_of.hpp at line 6
- License text:
- // Distributed under the Boost Software License Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/type_erasure/any.hpp [5:7]
- boost/type_erasure/any_cast.hpp [5:7]
- boost/type_erasure/binding.hpp [5:7]
- boost/type_erasure/binding_of.hpp [5:7]
- boost/type_erasure/builtin.hpp [5:7]
- boost/type_erasure/call.hpp [5:7]
- boost/type_erasure/callable.hpp [5:7]
- boost/type_erasure/check_match.hpp [5:7]
- boost/type_erasure/concept_interface.hpp [5:7]
- boost/type_erasure/concept_of.hpp [5:7]
- boost/type_erasure/config.hpp [5:7]
- boost/type_erasure/constructible.hpp [5:7]
- boost/type_erasure/deduced.hpp [5:7]
- boost/type_erasure/derived.hpp [5:7]
- boost/type_erasure/detail/access.hpp [5:7]
- boost/type_erasure/detail/adapt_to_vtable.hpp [5:7]
- boost/type_erasure/detail/any_base.hpp [5:7]
- boost/type_erasure/detail/auto_link.hpp [5:7]
- boost/type_erasure/detail/check_call.hpp [5:7]
- boost/type_erasure/detail/check_map.hpp [5:7]
- boost/type_erasure/detail/const.hpp [5:7]
- boost/type_erasure/detail/construct.hpp [5:7]
- boost/type_erasure/detail/dynamic_vtable.hpp [5:7]
- boost/type_erasure/detail/extract_concept.hpp [5:7]
- boost/type_erasure/detail/get_placeholders.hpp [5:7]
- boost/type_erasure/detail/get_signature.hpp [5:7]
- boost/type_erasure/detail/instantiate.hpp [5:7]
- boost/type_erasure/detail/macro.hpp [5:7]
- boost/type_erasure/detail/member11.hpp [5:7]
- boost/type_erasure/detail/meta.hpp [5:7]
- boost/type_erasure/detail/normalize.hpp [5:7]
- boost/type_erasure/detail/normalize_deduced.hpp [5:7]
- boost/type_erasure/detail/null.hpp [5:7]
- boost/type_erasure/detail/rebind_placeholders.hpp [5:7]
- boost/type_erasure/detail/storage.hpp [5:7]
- boost/type_erasure/detail/vtable.hpp [5:7]
- boost/type_erasure/dynamic_any_cast.hpp [5:7]
- boost/type_erasure/dynamic_binding.hpp [5:7]
- boost/type_erasure/exception.hpp [5:7]
- boost/type_erasure/free.hpp [5:7]
- boost/type_erasure/is_empty.hpp [5:7]
- boost/type_erasure/is_placeholder.hpp [5:7]
- boost/type_erasure/is_subconcept.hpp [5:7]
- boost/type_erasure/iterator.hpp [5:7]
- boost/type_erasure/member.hpp [5:7]
- boost/type_erasure/operators.hpp [5:7]
- boost/type_erasure/param.hpp [5:7]
- boost/type_erasure/placeholder.hpp [5:7]
- boost/type_erasure/placeholder_of.hpp [5:7]
- boost/type_erasure/rebind_any.hpp [5:7]
- boost/type_erasure/register_binding.hpp [5:7]
- boost/type_erasure/relaxed.hpp [5:7]
- boost/type_erasure/require_match.hpp [5:7]
- boost/type_erasure/same_type.hpp [5:7]
- boost/type_erasure/static_binding.hpp [5:7]
- boost/type_erasure/tuple.hpp [5:7]
- boost/type_erasure/typeid_of.hpp [5:7]
-
-KEEP BSL-1.0 c433ef677447b140a1c2a340c08bac97
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/math/special_functions/detail/unchecked_bernoulli.hpp at line 9, boost/multiprecision/mpfr.hpp at line 4
- License text:
- // Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/math/special_functions/detail/unchecked_bernoulli.hpp [7:9]
- boost/multiprecision/mpfr.hpp [2:4]
-
-KEEP BSL-1.0 c459d5208b405409bcf56c0a521c48c6
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/slice.hpp at line 7
- License text:
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/python/slice.hpp [5:7]
-
-KEEP BSL-1.0 c46f3c60dd92897a012b3be18f48ec4c
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config.hpp at line 6, boost/config/abi/borland_prefix.hpp at line 4, boost/config/abi/borland_suffix.hpp at line 4, boost/config/abi/msvc_prefix.hpp at line 4, boost/config/abi/msvc_suffix.hpp at line 4, boost/config/compiler/comeau.hpp at line 9, boost/config/compiler/compaq_cxx.hpp at line 4, boost/config/compiler/greenhills.hpp at line 4, boost/config/compiler/kai.hpp at line 6, boost/config/compiler/nvcc.hpp at line 4, boost/config/compiler/sgi_mipspro.hpp at line 4, boost/config/detail/cxx_composite.hpp at line 6, boost/config/detail/posix_features.hpp at line 4, boost/config/detail/select_platform_config.hpp at line 7, boost/config/detail/select_stdlib_config.hpp at line 7, boost/config/platform/aix.hpp at line 4, boost/config/platform/amigaos.hpp at line 4, boost/config/platform/beos.hpp at line 4, boost/config/platform/bsd.hpp at line 6, boost/config/platform/cygwin.hpp at line 4, boost/config/platform/hpux.hpp at line 8, boost/config/platform/irix.hpp at line 5, boost/config/platform/linux.hpp at line 5, boost/config/platform/macos.hpp at line 6, boost/config/platform/qnxnto.hpp at line 4, boost/config/platform/solaris.hpp at line 5, boost/config/platform/symbian.hpp at line 6, boost/config/platform/win32.hpp at line 7, boost/config/requires_threads.hpp at line 4, boost/config/stdlib/libcomo.hpp at line 6, boost/config/stdlib/modena.hpp at line 4, boost/config/stdlib/msl.hpp at line 5, boost/config/stdlib/roguewave.hpp at line 7, boost/config/stdlib/sgi.hpp at line 6, boost/config/stdlib/stlport.hpp at line 6, boost/config/stdlib/vacpp.hpp at line 4, boost/config/user.hpp at line 6, boost/static_assert.hpp at line 4, boost/type_traits/integral_constant.hpp at line 4
- License text:
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/pointer_cast.hpp [4:6]
+
+KEEP BSL-1.0 a36dba6b40d537acb66da7cd7f754fef
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/spirit/home/support/char_encoding/unicode/create_tables.cpp at line 453
+ License text:
+ << " Distributed under the Boost Software License, Version 1.0. (See accompanying\n"
+ << " file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)\n"
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/spirit/home/support/char_encoding/unicode/create_tables.cpp [452:453]
+
+KEEP BSL-1.0 a436b72bbdfb67382aecedd9507e3ad1
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/utility.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/utility.hpp [3:5]
+
+KEEP BSL-1.0 a481dd7f992b299b42a5bfb04aafbb70
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/date_time/adjust_functors.hpp at line 7, boost/date_time/c_time.hpp at line 7, boost/date_time/date.hpp at line 7, boost/date_time/date_duration.hpp at line 7, boost/date_time/date_facet.hpp at line 7, boost/date_time/date_formatting_locales.hpp at line 7, boost/date_time/date_generators.hpp at line 7, boost/date_time/date_iterator.hpp at line 7, boost/date_time/date_names_put.hpp at line 7, boost/date_time/date_parsing.hpp at line 7, boost/date_time/filetime_functions.hpp at line 7, boost/date_time/gregorian/conversion.hpp at line 7, boost/date_time/gregorian/greg_calendar.hpp at line 7, boost/date_time/gregorian/greg_date.hpp at line 7, boost/date_time/gregorian/gregorian_io.hpp at line 7, boost/date_time/gregorian_calendar.hpp at line 7, boost/date_time/gregorian_calendar.ipp at line 4, boost/date_time/locale_config.hpp at line 7, boost/date_time/microsec_time_clock.hpp at line 7, boost/date_time/posix_time/conversion.hpp at line 7, boost/date_time/posix_time/posix_time_config.hpp at line 7, boost/date_time/posix_time/posix_time_io.hpp at line 7, boost/date_time/posix_time/time_formatters.hpp at line 7, boost/date_time/posix_time/time_formatters_limited.hpp at line 7, boost/date_time/string_parse_tree.hpp at line 7, boost/date_time/strings_from_facet.hpp at line 7, boost/date_time/time_clock.hpp at line 7, boost/date_time/time_duration.hpp at line 7, boost/date_time/time_facet.hpp at line 8, boost/date_time/time_iterator.hpp at line 7, boost/date_time/time_resolution_traits.hpp at line 7, boost/date_time/wrapping_int.hpp at line 7
+ License text:
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 90.62
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/date_time/adjust_functors.hpp [5:7]
+ boost/date_time/c_time.hpp [5:7]
+ boost/date_time/date.hpp [5:7]
+ boost/date_time/date_duration.hpp [5:7]
+ boost/date_time/date_facet.hpp [5:7]
+ boost/date_time/date_formatting_locales.hpp [5:7]
+ boost/date_time/date_generators.hpp [5:7]
+ boost/date_time/date_iterator.hpp [5:7]
+ boost/date_time/date_names_put.hpp [5:7]
+ boost/date_time/date_parsing.hpp [5:7]
+ boost/date_time/filetime_functions.hpp [5:7]
+ boost/date_time/gregorian/conversion.hpp [5:7]
+ boost/date_time/gregorian/greg_calendar.hpp [5:7]
+ boost/date_time/gregorian/greg_date.hpp [5:7]
+ boost/date_time/gregorian/gregorian_io.hpp [5:7]
+ boost/date_time/gregorian_calendar.hpp [5:7]
+ boost/date_time/gregorian_calendar.ipp [2:4]
+ boost/date_time/locale_config.hpp [5:7]
+ boost/date_time/microsec_time_clock.hpp [5:7]
+ boost/date_time/posix_time/conversion.hpp [5:7]
+ boost/date_time/posix_time/posix_time_config.hpp [5:7]
+ boost/date_time/posix_time/posix_time_io.hpp [5:7]
+ boost/date_time/posix_time/time_formatters.hpp [5:7]
+ boost/date_time/posix_time/time_formatters_limited.hpp [5:7]
+ boost/date_time/string_parse_tree.hpp [5:7]
+ boost/date_time/strings_from_facet.hpp [5:7]
+ boost/date_time/time_clock.hpp [5:7]
+ boost/date_time/time_duration.hpp [5:7]
+ boost/date_time/time_facet.hpp [6:8]
+ boost/date_time/time_iterator.hpp [5:7]
+ boost/date_time/time_resolution_traits.hpp [5:7]
+ boost/date_time/wrapping_int.hpp [5:7]
+
+KEEP BSL-1.0 a4b06853a77321815bca2cbd7654b649
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/algorithm.hpp at line 3, boost/detail/endian.hpp at line 3, boost/detail/utf8_codecvt_facet.hpp at line 4, boost/functional.hpp at line 4, boost/statechart/asynchronous_state_machine.hpp at line 6, boost/statechart/custom_reaction.hpp at line 6, boost/statechart/deep_history.hpp at line 6, boost/statechart/deferral.hpp at line 6, boost/statechart/detail/avoid_unused_warning.hpp at line 6, boost/statechart/detail/constructor.hpp at line 6, boost/statechart/detail/counted_base.hpp at line 6, boost/statechart/detail/leaf_state.hpp at line 6, boost/statechart/detail/memory.hpp at line 6, boost/statechart/detail/node_state.hpp at line 6, boost/statechart/detail/reaction_dispatcher.hpp at line 6, boost/statechart/detail/rtti_policy.hpp at line 6, boost/statechart/detail/state_base.hpp at line 6, boost/statechart/event.hpp at line 6, boost/statechart/event_base.hpp at line 6, boost/statechart/event_processor.hpp at line 6, boost/statechart/exception_translator.hpp at line 6, boost/statechart/fifo_scheduler.hpp at line 6, boost/statechart/fifo_worker.hpp at line 6, boost/statechart/history.hpp at line 6, boost/statechart/in_state_reaction.hpp at line 6, boost/statechart/null_exception_translator.hpp at line 6, boost/statechart/processor_container.hpp at line 6, boost/statechart/result.hpp at line 6, boost/statechart/shallow_history.hpp at line 6, boost/statechart/simple_state.hpp at line 6, boost/statechart/state.hpp at line 6, boost/statechart/state_machine.hpp at line 6, boost/statechart/termination.hpp at line 6, boost/statechart/transition.hpp at line 6, boost/xpressive/detail/utility/counted_base.hpp at line 4
+ License text:
+ // Distributed under the Boost Software License, Version 1.0. (See accompany-
+ // ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.30
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/detail/algorithm.hpp [2:3]
+ boost/detail/endian.hpp [2:3]
+ boost/detail/utf8_codecvt_facet.hpp [3:4]
+ boost/functional.hpp [3:4]
+ boost/statechart/asynchronous_state_machine.hpp [5:6]
+ boost/statechart/custom_reaction.hpp [5:6]
+ boost/statechart/deep_history.hpp [5:6]
+ boost/statechart/deferral.hpp [5:6]
+ boost/statechart/detail/avoid_unused_warning.hpp [5:6]
+ boost/statechart/detail/constructor.hpp [5:6]
+ boost/statechart/detail/counted_base.hpp [5:6]
+ boost/statechart/detail/leaf_state.hpp [5:6]
+ boost/statechart/detail/memory.hpp [5:6]
+ boost/statechart/detail/node_state.hpp [5:6]
+ boost/statechart/detail/reaction_dispatcher.hpp [5:6]
+ boost/statechart/detail/rtti_policy.hpp [5:6]
+ boost/statechart/detail/state_base.hpp [5:6]
+ boost/statechart/event.hpp [5:6]
+ boost/statechart/event_base.hpp [5:6]
+ boost/statechart/event_processor.hpp [5:6]
+ boost/statechart/exception_translator.hpp [5:6]
+ boost/statechart/fifo_scheduler.hpp [5:6]
+ boost/statechart/fifo_worker.hpp [5:6]
+ boost/statechart/history.hpp [5:6]
+ boost/statechart/in_state_reaction.hpp [5:6]
+ boost/statechart/null_exception_translator.hpp [5:6]
+ boost/statechart/processor_container.hpp [5:6]
+ boost/statechart/result.hpp [5:6]
+ boost/statechart/shallow_history.hpp [5:6]
+ boost/statechart/simple_state.hpp [5:6]
+ boost/statechart/state.hpp [5:6]
+ boost/statechart/state_machine.hpp [5:6]
+ boost/statechart/termination.hpp [5:6]
+ boost/statechart/transition.hpp [5:6]
+ boost/xpressive/detail/utility/counted_base.hpp [3:4]
+
+KEEP BSL-1.0 a4cb981d0e39a7a7883dd77549fe4448
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/functional/factory.hpp at line 5, boost/functional/forward_adapter.hpp at line 5, boost/functional/lightweight_forward_adapter.hpp at line 5, boost/functional/value_factory.hpp at line 5, boost/fusion/functional.hpp at line 5, boost/fusion/functional/adapter.hpp at line 5, boost/fusion/functional/adapter/detail/access.hpp at line 5, boost/fusion/functional/adapter/fused.hpp at line 5, boost/fusion/functional/adapter/fused_function_object.hpp at line 5, boost/fusion/functional/adapter/fused_procedure.hpp at line 5, boost/fusion/functional/adapter/limits.hpp at line 5, boost/fusion/functional/adapter/unfused.hpp at line 5, boost/fusion/functional/adapter/unfused_typed.hpp at line 5, boost/fusion/functional/generation.hpp at line 5, boost/fusion/functional/generation/detail/gen_make_adapter.hpp at line 5, boost/fusion/functional/generation/make_fused.hpp at line 5, boost/fusion/functional/generation/make_fused_function_object.hpp at line 5, boost/fusion/functional/generation/make_fused_procedure.hpp at line 5, boost/fusion/functional/generation/make_unfused.hpp at line 5, boost/fusion/functional/invocation.hpp at line 5, boost/fusion/functional/invocation/detail/that_ptr.hpp at line 5, boost/fusion/functional/invocation/limits.hpp at line 5, boost/fusion/support/deduce.hpp at line 5
+ License text:
+ Use modification and distribution are subject to the Boost Software
+ License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt).
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/functional/factory.hpp [4:6]
+ boost/functional/forward_adapter.hpp [4:6]
+ boost/functional/lightweight_forward_adapter.hpp [4:6]
+ boost/functional/value_factory.hpp [4:6]
+ boost/fusion/functional.hpp [4:6]
+ boost/fusion/functional/adapter.hpp [4:6]
+ boost/fusion/functional/adapter/detail/access.hpp [4:6]
+ boost/fusion/functional/adapter/fused.hpp [4:6]
+ boost/fusion/functional/adapter/fused_function_object.hpp [4:6]
+ boost/fusion/functional/adapter/fused_procedure.hpp [4:6]
+ boost/fusion/functional/adapter/limits.hpp [4:6]
+ boost/fusion/functional/adapter/unfused.hpp [4:6]
+ boost/fusion/functional/adapter/unfused_typed.hpp [4:6]
+ boost/fusion/functional/generation.hpp [4:6]
+ boost/fusion/functional/generation/detail/gen_make_adapter.hpp [4:6]
+ boost/fusion/functional/generation/make_fused.hpp [4:6]
+ boost/fusion/functional/generation/make_fused_function_object.hpp [4:6]
+ boost/fusion/functional/generation/make_fused_procedure.hpp [4:6]
+ boost/fusion/functional/generation/make_unfused.hpp [4:6]
+ boost/fusion/functional/invocation.hpp [4:6]
+ boost/fusion/functional/invocation/detail/that_ptr.hpp [4:6]
+ boost/fusion/functional/invocation/limits.hpp [4:6]
+ boost/fusion/support/deduce.hpp [4:6]
+
+KEEP BSL-1.0 a5255d1626f948de09c788692e999646
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iterator/new_iterator_tests.hpp at line 11
+ License text:
+ // Use, modification and distribution is subject to the
+ // Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/iterator/new_iterator_tests.hpp [9:12]
+
+SKIP MPL-1.1 a63fd5557ce55633633e929b4c64c3dc
+BELONGS ya.make
+ License text:
+ // Boost Graph concepts, MPL style
+ Scancode info:
+ Original SPDX id: MPL-1.1
+ Score : 80.00
+ Match type : REFERENCE
+ Links : http://www.mozilla.com/MPL/1.1/index.html, http://www.mozilla.org/MPL/MPL-1.1.html, https://spdx.org/licenses/MPL-1.1
+ Files with this license:
+ boost/msm/mpl_graph/mpl_graph.hpp [31:31]
+
+KEEP BSL-1.0 a69d72c945db8bb62438c724b48f68ff
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/platform/vms.hpp at line 4
+ License text:
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/config.hpp [4:6]
- boost/config/abi/borland_prefix.hpp [2:4]
- boost/config/abi/borland_suffix.hpp [2:4]
- boost/config/abi/msvc_prefix.hpp [2:4]
- boost/config/abi/msvc_suffix.hpp [2:4]
- boost/config/compiler/comeau.hpp [7:9]
- boost/config/compiler/compaq_cxx.hpp [2:4]
- boost/config/compiler/greenhills.hpp [2:4]
- boost/config/compiler/kai.hpp [4:6]
- boost/config/compiler/nvcc.hpp [2:4]
- boost/config/compiler/sgi_mipspro.hpp [2:4]
- boost/config/detail/cxx_composite.hpp [4:6]
- boost/config/detail/posix_features.hpp [2:4]
- boost/config/detail/select_platform_config.hpp [5:7]
- boost/config/detail/select_stdlib_config.hpp [5:7]
- boost/config/platform/aix.hpp [2:4]
- boost/config/platform/amigaos.hpp [2:4]
- boost/config/platform/beos.hpp [2:4]
- boost/config/platform/bsd.hpp [4:6]
- boost/config/platform/cygwin.hpp [2:4]
- boost/config/platform/hpux.hpp [6:8]
- boost/config/platform/irix.hpp [3:5]
- boost/config/platform/linux.hpp [3:5]
- boost/config/platform/macos.hpp [4:6]
- boost/config/platform/qnxnto.hpp [2:4]
- boost/config/platform/solaris.hpp [3:5]
- boost/config/platform/symbian.hpp [4:6]
- boost/config/platform/win32.hpp [5:7]
- boost/config/requires_threads.hpp [2:4]
- boost/config/stdlib/libcomo.hpp [4:6]
- boost/config/stdlib/modena.hpp [2:4]
- boost/config/stdlib/msl.hpp [3:5]
- boost/config/stdlib/roguewave.hpp [5:7]
- boost/config/stdlib/sgi.hpp [4:6]
- boost/config/stdlib/stlport.hpp [4:6]
- boost/config/stdlib/vacpp.hpp [2:4]
- boost/config/user.hpp [4:6]
- boost/static_assert.hpp [2:4]
- boost/type_traits/integral_constant.hpp [2:4]
-
-KEEP BSL-1.0 c59f2f51498a38af0e57d64a7b0fe0e3
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/math/octonion.hpp at line 5, boost/math/quaternion.hpp at line 5, boost/math/special_functions/acosh.hpp at line 6, boost/math/special_functions/asinh.hpp at line 6, boost/math/special_functions/atanh.hpp at line 6, boost/math/special_functions/sinc.hpp at line 5, boost/math/special_functions/sinhc.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/math/octonion.hpp [4:8]
- boost/math/quaternion.hpp [4:8]
- boost/math/special_functions/acosh.hpp [5:9]
- boost/math/special_functions/asinh.hpp [5:9]
- boost/math/special_functions/atanh.hpp [5:9]
- boost/math/special_functions/sinc.hpp [4:8]
- boost/math/special_functions/sinhc.hpp [4:8]
-
-KEEP BSL-1.0 c5cd7ca7ac43f5faf5d32f349420dc46
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/fusion/functional/invocation/invoke.hpp at line 6, boost/fusion/functional/invocation/invoke_function_object.hpp at line 6, boost/fusion/functional/invocation/invoke_procedure.hpp at line 6, boost/fusion/support/deduce_sequence.hpp at line 5
- License text:
- Use modification and distribution are subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/fusion/functional/invocation/invoke.hpp [5:7]
- boost/fusion/functional/invocation/invoke_function_object.hpp [5:7]
- boost/fusion/functional/invocation/invoke_procedure.hpp [5:7]
- boost/fusion/support/deduce_sequence.hpp [4:6]
-
-KEEP BSL-1.0 c6aa4544098c85be9acaf93ddfa53cc1
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/proto/context/detail/preprocessed/callable_eval.hpp at line 7, boost/proto/context/detail/preprocessed/default_eval.hpp at line 7, boost/proto/context/detail/preprocessed/null_eval.hpp at line 7, boost/proto/detail/preprocessed/and_n.hpp at line 7, boost/proto/detail/preprocessed/basic_expr.hpp at line 7, boost/proto/detail/preprocessed/deduce_domain_n.hpp at line 7, boost/proto/detail/preprocessed/deep_copy.hpp at line 7, boost/proto/detail/preprocessed/expr_variadic.hpp at line 7, boost/proto/detail/preprocessed/extends_funop.hpp at line 7, boost/proto/detail/preprocessed/extends_funop_const.hpp at line 7, boost/proto/detail/preprocessed/funop.hpp at line 7, boost/proto/detail/preprocessed/generate_by_value.hpp at line 7, boost/proto/detail/preprocessed/lambda_matches.hpp at line 7, boost/proto/detail/preprocessed/make_expr_.hpp at line 7, boost/proto/detail/preprocessed/matches_.hpp at line 7, boost/proto/detail/preprocessed/poly_function_funop.hpp at line 7, boost/proto/detail/preprocessed/traits.hpp at line 7, boost/proto/detail/preprocessed/unpack_expr_.hpp at line 7, boost/proto/transform/detail/preprocessed/call.hpp at line 7, boost/proto/transform/detail/preprocessed/default_function_impl.hpp at line 8, boost/proto/transform/detail/preprocessed/expand_pack.hpp at line 7, boost/proto/transform/detail/preprocessed/fold_impl.hpp at line 7, boost/proto/transform/detail/preprocessed/make.hpp at line 7, boost/proto/transform/detail/preprocessed/make_gcc_workaround.hpp at line 8, boost/proto/transform/detail/preprocessed/pack_impl.hpp at line 7, boost/proto/transform/detail/preprocessed/pass_through_impl.hpp at line 9
- License text:
- // Copyright 2008 Eric Niebler. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/proto/context/detail/preprocessed/callable_eval.hpp [5:7]
- boost/proto/context/detail/preprocessed/default_eval.hpp [5:7]
- boost/proto/context/detail/preprocessed/null_eval.hpp [5:7]
- boost/proto/detail/preprocessed/and_n.hpp [5:7]
- boost/proto/detail/preprocessed/basic_expr.hpp [5:7]
- boost/proto/detail/preprocessed/deduce_domain_n.hpp [5:7]
- boost/proto/detail/preprocessed/deep_copy.hpp [5:7]
- boost/proto/detail/preprocessed/expr_variadic.hpp [5:7]
- boost/proto/detail/preprocessed/extends_funop.hpp [5:7]
- boost/proto/detail/preprocessed/extends_funop_const.hpp [5:7]
- boost/proto/detail/preprocessed/funop.hpp [5:7]
- boost/proto/detail/preprocessed/generate_by_value.hpp [5:7]
- boost/proto/detail/preprocessed/lambda_matches.hpp [5:7]
- boost/proto/detail/preprocessed/make_expr_.hpp [5:7]
- boost/proto/detail/preprocessed/matches_.hpp [5:7]
- boost/proto/detail/preprocessed/poly_function_funop.hpp [5:7]
- boost/proto/detail/preprocessed/traits.hpp [5:7]
- boost/proto/detail/preprocessed/unpack_expr_.hpp [5:7]
- boost/proto/transform/detail/preprocessed/call.hpp [5:7]
- boost/proto/transform/detail/preprocessed/default_function_impl.hpp [6:8]
- boost/proto/transform/detail/preprocessed/expand_pack.hpp [5:7]
- boost/proto/transform/detail/preprocessed/fold_impl.hpp [5:7]
- boost/proto/transform/detail/preprocessed/make.hpp [5:7]
- boost/proto/transform/detail/preprocessed/make_gcc_workaround.hpp [6:8]
- boost/proto/transform/detail/preprocessed/pack_impl.hpp [5:7]
- boost/proto/transform/detail/preprocessed/pass_through_impl.hpp [7:9]
-
-KEEP BSL-1.0 c845c94a100efcde577d412c3aa41ae0
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/xpressive/detail/core/list.hpp at line 9, boost/xpressive/detail/core/regex_domain.hpp at line 7
- License text:
- // Copyright 2009 Eric Niebler. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/xpressive/detail/core/list.hpp [7:9]
- boost/xpressive/detail/core/regex_domain.hpp [5:7]
-
-KEEP BSL-1.0 c8669cc72deaaf2d47e765121d8e33a7
-BELONGS ya.make
- License text:
- // Distributed under the Boost Software License, Version 1.0. (See accompanying
- // file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 59.26
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/spirit/home/support/detail/lexer/char_traits.hpp [4:5]
- boost/spirit/home/support/detail/lexer/consts.hpp [4:5]
- boost/spirit/home/support/detail/lexer/containers/ptr_list.hpp [4:5]
- boost/spirit/home/support/detail/lexer/containers/ptr_vector.hpp [4:5]
- boost/spirit/home/support/detail/lexer/conversion/char_state_machine.hpp [4:5]
- boost/spirit/home/support/detail/lexer/debug.hpp [4:5]
- boost/spirit/home/support/detail/lexer/file_input.hpp [4:5]
- boost/spirit/home/support/detail/lexer/generate_cpp.hpp [4:5]
- boost/spirit/home/support/detail/lexer/generate_re2c.hpp [4:5]
- boost/spirit/home/support/detail/lexer/generator.hpp [4:5]
- boost/spirit/home/support/detail/lexer/input.hpp [4:5]
- boost/spirit/home/support/detail/lexer/internals.hpp [4:5]
- boost/spirit/home/support/detail/lexer/parser/parser.hpp [4:5]
- boost/spirit/home/support/detail/lexer/parser/tokeniser/num_token.hpp [4:5]
- boost/spirit/home/support/detail/lexer/parser/tokeniser/re_tokeniser.hpp [4:5]
- boost/spirit/home/support/detail/lexer/parser/tokeniser/re_tokeniser_helper.hpp [4:5]
- boost/spirit/home/support/detail/lexer/parser/tokeniser/re_tokeniser_state.hpp [4:5]
- boost/spirit/home/support/detail/lexer/parser/tree/end_node.hpp [4:5]
- boost/spirit/home/support/detail/lexer/parser/tree/iteration_node.hpp [4:5]
- boost/spirit/home/support/detail/lexer/parser/tree/leaf_node.hpp [4:5]
- boost/spirit/home/support/detail/lexer/parser/tree/node.hpp [4:5]
- boost/spirit/home/support/detail/lexer/parser/tree/selection_node.hpp [4:5]
- boost/spirit/home/support/detail/lexer/parser/tree/sequence_node.hpp [4:5]
- boost/spirit/home/support/detail/lexer/partition/charset.hpp [4:5]
- boost/spirit/home/support/detail/lexer/partition/equivset.hpp [4:5]
- boost/spirit/home/support/detail/lexer/rules.hpp [4:5]
- boost/spirit/home/support/detail/lexer/runtime_error.hpp [4:5]
- boost/spirit/home/support/detail/lexer/serialise.hpp [4:5]
- boost/spirit/home/support/detail/lexer/size_t.hpp [4:5]
- boost/spirit/home/support/detail/lexer/state_machine.hpp [4:5]
- boost/spirit/home/support/detail/lexer/string_token.hpp [4:5]
-
-KEEP BSL-1.0 c91ac62eaa0324e39010493f644405e7
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/core/addressof.hpp at line 10, boost/predef.h at line 4, boost/predef/architecture.h at line 4, boost/predef/architecture/alpha.h at line 4, boost/predef/architecture/arm.h at line 6, boost/predef/architecture/blackfin.h at line 4, boost/predef/architecture/convex.h at line 4, boost/predef/architecture/ia64.h at line 4, boost/predef/architecture/m68k.h at line 4, boost/predef/architecture/mips.h at line 4, boost/predef/architecture/parisc.h at line 4, boost/predef/architecture/ppc.h at line 4, boost/predef/architecture/pyramid.h at line 4, boost/predef/architecture/rs6k.h at line 4, boost/predef/architecture/sparc.h at line 4, boost/predef/architecture/superh.h at line 4, boost/predef/architecture/sys370.h at line 4, boost/predef/architecture/sys390.h at line 4, boost/predef/architecture/x86.h at line 4, boost/predef/architecture/x86/32.h at line 4, boost/predef/architecture/x86/64.h at line 4, boost/predef/architecture/z.h at line 4, boost/predef/compiler.h at line 4, boost/predef/compiler/borland.h at line 4, boost/predef/compiler/clang.h at line 4, boost/predef/compiler/comeau.h at line 4, boost/predef/compiler/compaq.h at line 4, boost/predef/compiler/diab.h at line 4, boost/predef/compiler/digitalmars.h at line 4, boost/predef/compiler/dignus.h at line 4, boost/predef/compiler/edg.h at line 4, boost/predef/compiler/ekopath.h at line 4, boost/predef/compiler/gcc.h at line 4, boost/predef/compiler/gcc_xml.h at line 4, boost/predef/compiler/greenhills.h at line 4, boost/predef/compiler/hp_acc.h at line 4, boost/predef/compiler/iar.h at line 4, boost/predef/compiler/ibm.h at line 4, boost/predef/compiler/intel.h at line 4, boost/predef/compiler/kai.h at line 4, boost/predef/compiler/llvm.h at line 4, boost/predef/compiler/metaware.h at line 4, boost/predef/compiler/metrowerks.h at line 4, boost/predef/compiler/microtec.h at line 4, boost/predef/compiler/mpw.h at line 4, boost/predef/compiler/palm.h at line 4, boost/predef/compiler/pgi.h at line 4, boost/predef/compiler/sgi_mipspro.h at line 4, boost/predef/compiler/sunpro.h at line 4, boost/predef/compiler/tendra.h at line 4, boost/predef/compiler/visualc.h at line 4, boost/predef/compiler/watcom.h at line 4, boost/predef/detail/_cassert.h at line 4, boost/predef/detail/_exception.h at line 4, boost/predef/detail/comp_detected.h at line 4, boost/predef/detail/endian_compat.h at line 4, boost/predef/detail/os_detected.h at line 4, boost/predef/detail/platform_detected.h at line 4, boost/predef/detail/test.h at line 4, boost/predef/detail/test_def.h at line 4, boost/predef/hardware.h at line 5, boost/predef/hardware/simd.h at line 5, boost/predef/hardware/simd/arm.h at line 5, boost/predef/hardware/simd/arm/versions.h at line 5, boost/predef/hardware/simd/ppc.h at line 5, boost/predef/hardware/simd/ppc/versions.h at line 5, boost/predef/hardware/simd/x86.h at line 5, boost/predef/hardware/simd/x86/versions.h at line 5, boost/predef/hardware/simd/x86_amd.h at line 5, boost/predef/hardware/simd/x86_amd/versions.h at line 5, boost/predef/language.h at line 4, boost/predef/language/objc.h at line 4, boost/predef/language/stdc.h at line 4, boost/predef/language/stdcpp.h at line 4, boost/predef/library.h at line 4, boost/predef/library/c.h at line 4, boost/predef/library/c/_prefix.h at line 4, boost/predef/library/c/gnu.h at line 4, boost/predef/library/c/uc.h at line 4, boost/predef/library/c/vms.h at line 4, boost/predef/library/c/zos.h at line 4, boost/predef/library/std.h at line 4, boost/predef/library/std/_prefix.h at line 4, boost/predef/library/std/cxx.h at line 4, boost/predef/library/std/dinkumware.h at line 4, boost/predef/library/std/libcomo.h at line 4, boost/predef/library/std/modena.h at line 4, boost/predef/library/std/msl.h at line 4, boost/predef/library/std/roguewave.h at line 4, boost/predef/library/std/sgi.h at line 4, boost/predef/library/std/stdcpp3.h at line 4, boost/predef/library/std/stlport.h at line 4, boost/predef/library/std/vacpp.h at line 4, boost/predef/make.h at line 4, boost/predef/os.h at line 5, boost/predef/os/aix.h at line 4, boost/predef/os/amigaos.h at line 4, boost/predef/os/android.h at line 4, boost/predef/os/beos.h at line 4, boost/predef/os/bsd.h at line 4, boost/predef/os/bsd/bsdi.h at line 4, boost/predef/os/bsd/dragonfly.h at line 4, boost/predef/os/bsd/free.h at line 4, boost/predef/os/bsd/net.h at line 4, boost/predef/os/bsd/open.h at line 4, boost/predef/os/cygwin.h at line 4, boost/predef/os/haiku.h at line 5, boost/predef/os/hpux.h at line 4, boost/predef/os/ios.h at line 5, boost/predef/os/irix.h at line 4, boost/predef/os/linux.h at line 4, boost/predef/os/macos.h at line 5, boost/predef/os/os400.h at line 4, boost/predef/os/qnxnto.h at line 4, boost/predef/os/solaris.h at line 4, boost/predef/os/unix.h at line 4, boost/predef/os/vms.h at line 4, boost/predef/os/windows.h at line 4, boost/predef/other.h at line 4, boost/predef/other/endian.h at line 4, boost/predef/other/workaround.h at line 4, boost/predef/platform.h at line 5, boost/predef/platform/ios.h at line 5, boost/predef/platform/mingw.h at line 4, boost/predef/platform/mingw32.h at line 4, boost/predef/platform/mingw64.h at line 4, boost/predef/platform/windows_desktop.h at line 5, boost/predef/platform/windows_phone.h at line 5, boost/predef/platform/windows_runtime.h at line 5, boost/predef/platform/windows_server.h at line 4, boost/predef/platform/windows_store.h at line 5, boost/predef/platform/windows_system.h at line 4, boost/predef/platform/windows_uwp.h at line 4, boost/predef/version.h at line 4, boost/predef/version_number.h at line 4
- License text:
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/core/addressof.hpp [9:11]
- boost/predef.h [3:5]
- boost/predef/architecture.h [3:5]
- boost/predef/architecture/alpha.h [3:5]
- boost/predef/architecture/arm.h [5:7]
- boost/predef/architecture/blackfin.h [3:5]
- boost/predef/architecture/convex.h [3:5]
- boost/predef/architecture/ia64.h [3:5]
- boost/predef/architecture/m68k.h [3:5]
- boost/predef/architecture/mips.h [3:5]
- boost/predef/architecture/parisc.h [3:5]
- boost/predef/architecture/ppc.h [3:5]
- boost/predef/architecture/pyramid.h [3:5]
- boost/predef/architecture/rs6k.h [3:5]
- boost/predef/architecture/sparc.h [3:5]
- boost/predef/architecture/superh.h [3:5]
- boost/predef/architecture/sys370.h [3:5]
- boost/predef/architecture/sys390.h [3:5]
- boost/predef/architecture/x86.h [3:5]
- boost/predef/architecture/x86/32.h [3:5]
- boost/predef/architecture/x86/64.h [3:5]
- boost/predef/architecture/z.h [3:5]
- boost/predef/compiler.h [3:5]
- boost/predef/compiler/borland.h [3:5]
- boost/predef/compiler/clang.h [3:5]
- boost/predef/compiler/comeau.h [3:5]
- boost/predef/compiler/compaq.h [3:5]
- boost/predef/compiler/diab.h [3:5]
- boost/predef/compiler/digitalmars.h [3:5]
- boost/predef/compiler/dignus.h [3:5]
- boost/predef/compiler/edg.h [3:5]
- boost/predef/compiler/ekopath.h [3:5]
- boost/predef/compiler/gcc.h [3:5]
- boost/predef/compiler/gcc_xml.h [3:5]
- boost/predef/compiler/greenhills.h [3:5]
- boost/predef/compiler/hp_acc.h [3:5]
- boost/predef/compiler/iar.h [3:5]
- boost/predef/compiler/ibm.h [3:5]
- boost/predef/compiler/intel.h [3:5]
- boost/predef/compiler/kai.h [3:5]
- boost/predef/compiler/llvm.h [3:5]
- boost/predef/compiler/metaware.h [3:5]
- boost/predef/compiler/metrowerks.h [3:5]
- boost/predef/compiler/microtec.h [3:5]
- boost/predef/compiler/mpw.h [3:5]
- boost/predef/compiler/palm.h [3:5]
- boost/predef/compiler/pgi.h [3:5]
- boost/predef/compiler/sgi_mipspro.h [3:5]
- boost/predef/compiler/sunpro.h [3:5]
- boost/predef/compiler/tendra.h [3:5]
- boost/predef/compiler/visualc.h [3:5]
- boost/predef/compiler/watcom.h [3:5]
- boost/predef/detail/_cassert.h [3:5]
- boost/predef/detail/_exception.h [3:5]
- boost/predef/detail/comp_detected.h [3:5]
- boost/predef/detail/endian_compat.h [3:5]
- boost/predef/detail/os_detected.h [3:5]
- boost/predef/detail/platform_detected.h [3:5]
- boost/predef/detail/test.h [3:5]
- boost/predef/detail/test_def.h [3:5]
- boost/predef/hardware.h [4:6]
- boost/predef/hardware/simd.h [4:6]
- boost/predef/hardware/simd/arm.h [4:6]
- boost/predef/hardware/simd/arm/versions.h [4:6]
- boost/predef/hardware/simd/ppc.h [4:6]
- boost/predef/hardware/simd/ppc/versions.h [4:6]
- boost/predef/hardware/simd/x86.h [4:6]
- boost/predef/hardware/simd/x86/versions.h [4:6]
- boost/predef/hardware/simd/x86_amd.h [4:6]
- boost/predef/hardware/simd/x86_amd/versions.h [4:6]
- boost/predef/language.h [3:5]
- boost/predef/language/objc.h [3:5]
- boost/predef/language/stdc.h [3:5]
- boost/predef/language/stdcpp.h [3:5]
- boost/predef/library.h [3:5]
- boost/predef/library/c.h [3:5]
- boost/predef/library/c/_prefix.h [3:5]
- boost/predef/library/c/gnu.h [3:5]
- boost/predef/library/c/uc.h [3:5]
- boost/predef/library/c/vms.h [3:5]
- boost/predef/library/c/zos.h [3:5]
- boost/predef/library/std.h [3:5]
- boost/predef/library/std/_prefix.h [3:5]
- boost/predef/library/std/cxx.h [3:5]
- boost/predef/library/std/dinkumware.h [3:5]
- boost/predef/library/std/libcomo.h [3:5]
- boost/predef/library/std/modena.h [3:5]
- boost/predef/library/std/msl.h [3:5]
- boost/predef/library/std/roguewave.h [3:5]
- boost/predef/library/std/sgi.h [3:5]
- boost/predef/library/std/stdcpp3.h [3:5]
- boost/predef/library/std/stlport.h [3:5]
- boost/predef/library/std/vacpp.h [3:5]
- boost/predef/make.h [3:5]
- boost/predef/os.h [4:6]
- boost/predef/os/aix.h [3:5]
- boost/predef/os/amigaos.h [3:5]
- boost/predef/os/android.h [3:5]
- boost/predef/os/beos.h [3:5]
- boost/predef/os/bsd.h [3:5]
- boost/predef/os/bsd/bsdi.h [3:5]
- boost/predef/os/bsd/dragonfly.h [3:5]
- boost/predef/os/bsd/free.h [3:5]
- boost/predef/os/bsd/net.h [3:5]
- boost/predef/os/bsd/open.h [3:5]
- boost/predef/os/cygwin.h [3:5]
- boost/predef/os/haiku.h [4:6]
- boost/predef/os/hpux.h [3:5]
- boost/predef/os/ios.h [4:6]
- boost/predef/os/irix.h [3:5]
- boost/predef/os/linux.h [3:5]
- boost/predef/os/macos.h [4:6]
- boost/predef/os/os400.h [3:5]
- boost/predef/os/qnxnto.h [3:5]
- boost/predef/os/solaris.h [3:5]
- boost/predef/os/unix.h [3:5]
- boost/predef/os/vms.h [3:5]
- boost/predef/os/windows.h [3:5]
- boost/predef/other.h [3:5]
- boost/predef/other/endian.h [3:5]
- boost/predef/other/workaround.h [3:5]
- boost/predef/platform.h [4:6]
- boost/predef/platform/ios.h [4:6]
- boost/predef/platform/mingw.h [3:5]
- boost/predef/platform/mingw32.h [3:5]
- boost/predef/platform/mingw64.h [3:5]
- boost/predef/platform/windows_desktop.h [4:6]
- boost/predef/platform/windows_phone.h [4:6]
- boost/predef/platform/windows_runtime.h [4:6]
- boost/predef/platform/windows_server.h [3:5]
- boost/predef/platform/windows_store.h [4:6]
- boost/predef/platform/windows_system.h [3:5]
- boost/predef/platform/windows_uwp.h [3:5]
- boost/predef/version.h [3:5]
- boost/predef/version_number.h [3:5]
-
-KEEP BSL-1.0 ca05dbe6a64cb6bf8779bd19f5bb4d80
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/algorithm/is_palindrome.hpp at line 5
- License text:
- Distributed under the Boost Software License, Version 1.0. (See
- accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/algorithm/is_palindrome.hpp [4:6]
-
-KEEP BSL-1.0 ca0ee9f69bfbb2bfa5a3f24854cffdb6
-BELONGS ya.make
- License text:
- // Licensed under the Boost Software License version 1.0.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/geometry/algorithms/densify.hpp [7:7]
- boost/geometry/algorithms/detail/check_iterator_range.hpp [7:7]
- boost/geometry/algorithms/detail/closest_feature/geometry_to_range.hpp [7:7]
- boost/geometry/algorithms/detail/closest_feature/point_to_range.hpp [7:7]
- boost/geometry/algorithms/detail/closest_feature/range_to_range.hpp [7:7]
- boost/geometry/algorithms/detail/disjoint/multipoint_geometry.hpp [9:9]
- boost/geometry/algorithms/detail/disjoint/multirange_geometry.hpp [8:8]
- boost/geometry/algorithms/detail/distance/box_to_box.hpp [7:7]
- boost/geometry/algorithms/detail/distance/geometry_to_segment_or_box.hpp [7:7]
- boost/geometry/algorithms/detail/distance/is_comparable.hpp [7:7]
- boost/geometry/algorithms/detail/distance/iterator_selector.hpp [7:7]
- boost/geometry/algorithms/detail/distance/linear_or_areal_to_areal.hpp [7:7]
- boost/geometry/algorithms/detail/distance/linear_to_linear.hpp [7:7]
- boost/geometry/algorithms/detail/distance/multipoint_to_geometry.hpp [7:7]
- boost/geometry/algorithms/detail/distance/range_to_geometry_rtree.hpp [7:7]
- boost/geometry/algorithms/detail/distance/segment_to_box.hpp [7:7]
- boost/geometry/algorithms/detail/distance/segment_to_segment.hpp [7:7]
- boost/geometry/algorithms/detail/is_simple/always_simple.hpp [8:8]
- boost/geometry/algorithms/detail/is_simple/areal.hpp [8:8]
- boost/geometry/algorithms/detail/is_simple/debug_print_boundary_points.hpp [7:7]
- boost/geometry/algorithms/detail/is_simple/failure_policy.hpp [7:7]
- boost/geometry/algorithms/detail/is_simple/implementation.hpp [7:7]
- boost/geometry/algorithms/detail/is_simple/interface.hpp [8:8]
- boost/geometry/algorithms/detail/is_simple/linear.hpp [8:8]
- boost/geometry/algorithms/detail/is_simple/multipoint.hpp [8:8]
- boost/geometry/algorithms/detail/is_valid/box.hpp [8:8]
- boost/geometry/algorithms/detail/is_valid/complement_graph.hpp [7:7]
- boost/geometry/algorithms/detail/is_valid/debug_complement_graph.hpp [7:7]
- boost/geometry/algorithms/detail/is_valid/debug_print_turns.hpp [7:7]
- boost/geometry/algorithms/detail/is_valid/debug_validity_phase.hpp [7:7]
- boost/geometry/algorithms/detail/is_valid/has_duplicates.hpp [7:7]
- boost/geometry/algorithms/detail/is_valid/has_invalid_coordinate.hpp [8:8]
- boost/geometry/algorithms/detail/is_valid/has_spikes.hpp [8:8]
- boost/geometry/algorithms/detail/is_valid/has_valid_self_turns.hpp [8:8]
- boost/geometry/algorithms/detail/is_valid/implementation.hpp [7:7]
- boost/geometry/algorithms/detail/is_valid/interface.hpp [8:8]
- boost/geometry/algorithms/detail/is_valid/is_acceptable_turn.hpp [7:7]
- boost/geometry/algorithms/detail/is_valid/linear.hpp [8:8]
- boost/geometry/algorithms/detail/is_valid/multipolygon.hpp [8:8]
- boost/geometry/algorithms/detail/is_valid/pointlike.hpp [8:8]
- boost/geometry/algorithms/detail/is_valid/polygon.hpp [10:10]
- boost/geometry/algorithms/detail/is_valid/ring.hpp [10:10]
- boost/geometry/algorithms/detail/is_valid/segment.hpp [8:8]
- boost/geometry/algorithms/detail/max_interval_gap.hpp [7:7]
- boost/geometry/algorithms/detail/normalize.hpp [8:8]
- boost/geometry/algorithms/detail/num_distinct_consecutive_points.hpp [7:7]
- boost/geometry/algorithms/detail/overlay/follow_linear_linear.hpp [10:10]
- boost/geometry/algorithms/detail/overlay/inconsistent_turns_exception.hpp [5:5]
- boost/geometry/algorithms/detail/overlay/linear_linear.hpp [5:5]
- boost/geometry/algorithms/detail/overlay/pointlike_linear.hpp [10:10]
- boost/geometry/algorithms/detail/overlay/pointlike_pointlike.hpp [8:8]
- boost/geometry/algorithms/detail/sweep.hpp [7:7]
- boost/geometry/algorithms/detail/turns/compare_turns.hpp [5:5]
- boost/geometry/algorithms/detail/turns/debug_turn.hpp [5:5]
- boost/geometry/algorithms/detail/turns/filter_continue_turns.hpp [5:5]
- boost/geometry/algorithms/detail/turns/print_turns.hpp [5:5]
- boost/geometry/algorithms/detail/turns/remove_duplicate_turns.hpp [5:5]
- boost/geometry/algorithms/dispatch/is_simple.hpp [7:7]
- boost/geometry/algorithms/dispatch/is_valid.hpp [7:7]
- boost/geometry/algorithms/is_empty.hpp [7:7]
- boost/geometry/algorithms/is_simple.hpp [7:7]
- boost/geometry/algorithms/is_valid.hpp [7:7]
- boost/geometry/algorithms/num_segments.hpp [7:7]
- boost/geometry/algorithms/validity_failure_type.hpp [7:7]
- boost/geometry/geometries/helper_geometry.hpp [8:8]
- boost/geometry/geometries/pointing_segment.hpp [7:7]
- boost/geometry/iterators/concatenate_iterator.hpp [7:7]
- boost/geometry/iterators/detail/point_iterator/inner_range_type.hpp [7:7]
- boost/geometry/iterators/detail/point_iterator/iterator_type.hpp [7:7]
- boost/geometry/iterators/detail/point_iterator/value_type.hpp [7:7]
- boost/geometry/iterators/detail/segment_iterator/iterator_type.hpp [7:7]
- boost/geometry/iterators/detail/segment_iterator/range_segment_iterator.hpp [7:7]
- boost/geometry/iterators/detail/segment_iterator/value_type.hpp [7:7]
- boost/geometry/iterators/dispatch/point_iterator.hpp [7:7]
- boost/geometry/iterators/dispatch/segment_iterator.hpp [7:7]
- boost/geometry/iterators/flatten_iterator.hpp [7:7]
- boost/geometry/iterators/has_one_element.hpp [7:7]
- boost/geometry/iterators/point_iterator.hpp [7:7]
- boost/geometry/iterators/point_reverse_iterator.hpp [7:7]
- boost/geometry/iterators/segment_iterator.hpp [7:7]
- boost/geometry/policies/is_valid/default_policy.hpp [7:7]
- boost/geometry/policies/is_valid/failing_reason_policy.hpp [8:8]
- boost/geometry/policies/is_valid/failure_type_policy.hpp [7:7]
- boost/geometry/policies/predicate_based_interrupt_policy.hpp [7:7]
- boost/geometry/strategies/cartesian/densify.hpp [7:7]
- boost/geometry/strategies/comparable_distance_result.hpp [7:7]
- boost/geometry/strategies/densify.hpp [7:7]
- boost/geometry/strategies/geographic/densify.hpp [7:7]
- boost/geometry/strategies/spherical/densify.hpp [7:7]
- boost/geometry/util/normalize_spheroidal_box_coordinates.hpp [8:8]
- boost/geometry/util/normalize_spheroidal_coordinates.hpp [10:10]
- boost/geometry/util/promote_integral.hpp [7:7]
- boost/geometry/views/detail/boundary_view.hpp [7:7]
- boost/geometry/views/detail/boundary_view/implementation.hpp [7:7]
- boost/geometry/views/detail/boundary_view/interface.hpp [7:7]
- boost/geometry/views/detail/two_dimensional_view.hpp [7:7]
-
-KEEP BSL-1.0 ca1c6ea93da75bad84f3dba0d52554dd
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signal.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/signal.hpp [3:6]
-
-KEEP BSL-1.0 cbdcef074fb3341d2a9edaadc23a7c2d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/detail/select_compiler_config.hpp at line 8
- License text:
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/config/detail/select_compiler_config.hpp [7:9]
-
-KEEP BSL-1.0 cbe82e847fd3d30a102c9c62ec3d188a
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/tokenizer.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 92.11
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/tokenizer.hpp [5:11]
-
-KEEP Public-Domain cd42fcbb8d96b51cc3475aed7d09df1c
-BELONGS ya.make
- License text:
- // and is in the public domain.
- Scancode info:
- Original SPDX id: LicenseRef-scancode-public-domain
- Score : 100.00
- Match type : TEXT
- Links : http://www.linfo.org/publicdomain.html, https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/public-domain.LICENSE
- Files with this license:
- boost/geometry/srs/projections/proj/isea.hpp [27:27]
-
-KEEP BSL-1.0 cdc5eaf687f57e7bd84ebeb4c1db8f35
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/adaptor/adjacent_filtered.hpp at line 5, boost/range/adaptor/argument_fwd.hpp at line 5, boost/range/adaptor/filtered.hpp at line 5, boost/range/adaptor/indirected.hpp at line 5, boost/range/adaptor/map.hpp at line 5, boost/range/adaptor/reversed.hpp at line 5, boost/range/adaptor/sliced.hpp at line 5, boost/range/adaptor/transformed.hpp at line 5, boost/range/adaptor/uniqued.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/range/adaptor/adjacent_filtered.hpp [3:6]
- boost/range/adaptor/argument_fwd.hpp [3:6]
- boost/range/adaptor/filtered.hpp [3:6]
- boost/range/adaptor/indirected.hpp [3:6]
- boost/range/adaptor/map.hpp [3:6]
- boost/range/adaptor/reversed.hpp [3:6]
- boost/range/adaptor/sliced.hpp [3:6]
- boost/range/adaptor/transformed.hpp [3:6]
- boost/range/adaptor/uniqued.hpp [3:6]
-
-KEEP BSL-1.0 cff4cece9d95e7e6aa69248f318c9f04
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/integer.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/integer.hpp [3:5]
-
-KEEP BSL-1.0 d16849ba3420a74948970493c91f9145
-BELONGS ya.make
- License text:
- // Use modification and distribution are subject to the boost Software License,
- // Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/typeof/vector50.hpp [5:6]
-
-KEEP BSL-1.0 d22835a98ac2f82e1281deb13b9ab9ba
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/spirit/home/qi/detail/expectation_failure.hpp at line 5, boost/spirit/home/qi/directive/expect.hpp at line 5
- License text:
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/spirit/home/qi/detail/expectation_failure.hpp [4:5]
- boost/spirit/home/qi/directive/expect.hpp [4:5]
-
-KEEP BSL-1.0 d256b9bf6722d228c66f5e2ac3e9fa57
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/uuid/detail/random_provider_arc4random.ipp at line 5
- License text:
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/config/platform/vms.hpp [2:4]
+
+KEEP BSL-1.0 a779859d4b2e8896d4ed9ba8f600ca99
+BELONGS ya.make
+ License text:
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/filesystem/detail/utf8_codecvt_facet.hpp [4:5]
+
+KEEP BSL-1.0 a9a210144b79b61e200d7e95b17a4c56
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/cpp_dec_float.hpp at line 5
+ License text:
+ // Copyright 2011 -2013 John Maddock. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/multiprecision/cpp_dec_float.hpp [3:5]
+
+KEEP BSL-1.0 a9bd4fe8e436ddc987c2955b5f755fc5
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/lambda/closures.hpp at line 8
+ License text:
+ Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/lambda/closures.hpp [7:9]
+
+KEEP BSL-1.0 aa4e261023dac76b1b286d3163a0bae7
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/compute/detail/variadic_macros.hpp at line 5
+ License text:
+ // Distributed under the Boost Software License, Version 1.0
+ // See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/compute/detail/variadic_macros.hpp [4:6]
+
+KEEP BSL-1.0 aa58ff9cdc0b0b6a3fedf7f97fd19c54
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/chrono/io/time_point_io.hpp at line 4, boost/type_traits/detail/is_function_ptr_tester.hpp at line 5, boost/type_traits/has_plus_assign.hpp at line 4
+ License text:
+ // Use, modification and distribution are subject to the Boost Software License,
+ // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt).
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/chrono/io/time_point_io.hpp [3:5]
+ boost/type_traits/detail/is_function_ptr_tester.hpp [4:6]
+ boost/type_traits/has_plus_assign.hpp [3:5]
+
+KEEP BSL-1.0 ab2348e8edf8e5498ae8350b5bf110e4
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/math/special_functions/pow.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/math/special_functions/pow.hpp [5:9]
+
+KEEP BSL-1.0 acdc17904c74d5a0d08bc93d13a7b566
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/kurtosis.hpp at line 6, boost/accumulators/statistics/skewness.hpp at line 6, boost/accumulators/statistics/weighted_kurtosis.hpp at line 6, boost/accumulators/statistics/weighted_skewness.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/accumulators/statistics/kurtosis.hpp [4:6]
+ boost/accumulators/statistics/skewness.hpp [4:6]
+ boost/accumulators/statistics/weighted_kurtosis.hpp [4:6]
+ boost/accumulators/statistics/weighted_skewness.hpp [4:6]
+
+KEEP BSL-1.0 acfba401bcd0325193760b4e6f196b4b
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/weighted_moment.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/accumulators/statistics/weighted_moment.hpp [4:6]
+
+KEEP BSL-1.0 ad51c5b487e806da41e2a29ffec41bd1
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/crc.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/crc.hpp [3:5]
+
+KEEP BSL-1.0 ad90ac470f35ec851ed16dc644a6d6ae
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/msm/active_state_switching_policies.hpp at line 8, boost/msm/back/args.hpp at line 8, boost/msm/back/bind_helpers.hpp at line 8, boost/msm/back/common_types.hpp at line 8, boost/msm/back/copy_policies.hpp at line 8, boost/msm/back/default_compile_policy.hpp at line 8, boost/msm/back/dispatch_table.hpp at line 8, boost/msm/back/favor_compile_time.hpp at line 8, boost/msm/back/history_policies.hpp at line 8, boost/msm/back/metafunctions.hpp at line 8, boost/msm/back/mpl_graph_fsm_check.hpp at line 8, boost/msm/back/no_fsm_check.hpp at line 8, boost/msm/back/queue_container_circular.hpp at line 8, boost/msm/back/queue_container_deque.hpp at line 8, boost/msm/back/state_machine.hpp at line 8, boost/msm/back/tools.hpp at line 8, boost/msm/common.hpp at line 8, boost/msm/event_traits.hpp at line 8, boost/msm/front/common_states.hpp at line 8, boost/msm/front/completion_event.hpp at line 8, boost/msm/front/detail/common_states.hpp at line 8, boost/msm/front/detail/row2_helper.hpp at line 8, boost/msm/front/euml/algorithm.hpp at line 8, boost/msm/front/euml/common.hpp at line 8, boost/msm/front/euml/container.hpp at line 8, boost/msm/front/euml/euml.hpp at line 8, boost/msm/front/euml/euml_typeof.hpp at line 8, boost/msm/front/euml/guard_grammar.hpp at line 8, boost/msm/front/euml/iteration.hpp at line 8, boost/msm/front/euml/operator.hpp at line 8, boost/msm/front/euml/phoenix_placeholders.hpp at line 8, boost/msm/front/euml/querying.hpp at line 8, boost/msm/front/euml/state_grammar.hpp at line 8, boost/msm/front/euml/stl.hpp at line 8, boost/msm/front/euml/stt_grammar.hpp at line 8, boost/msm/front/euml/transformation.hpp at line 8, boost/msm/front/functor_row.hpp at line 8, boost/msm/front/internal_row.hpp at line 8, boost/msm/front/row2.hpp at line 8, boost/msm/front/state_machine_def.hpp at line 8, boost/msm/front/states.hpp at line 8, boost/msm/msm_grammar.hpp at line 8, boost/msm/proto_config.hpp at line 8, boost/msm/row_tags.hpp at line 8
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/msm/active_state_switching_policies.hpp [6:9]
+ boost/msm/back/args.hpp [6:9]
+ boost/msm/back/bind_helpers.hpp [6:9]
+ boost/msm/back/common_types.hpp [6:9]
+ boost/msm/back/copy_policies.hpp [6:9]
+ boost/msm/back/default_compile_policy.hpp [6:9]
+ boost/msm/back/dispatch_table.hpp [6:9]
+ boost/msm/back/favor_compile_time.hpp [6:9]
+ boost/msm/back/history_policies.hpp [6:9]
+ boost/msm/back/metafunctions.hpp [6:9]
+ boost/msm/back/mpl_graph_fsm_check.hpp [6:9]
+ boost/msm/back/no_fsm_check.hpp [6:9]
+ boost/msm/back/queue_container_circular.hpp [6:9]
+ boost/msm/back/queue_container_deque.hpp [6:9]
+ boost/msm/back/state_machine.hpp [6:9]
+ boost/msm/back/tools.hpp [6:9]
+ boost/msm/common.hpp [6:9]
+ boost/msm/event_traits.hpp [6:9]
+ boost/msm/front/common_states.hpp [6:9]
+ boost/msm/front/completion_event.hpp [6:9]
+ boost/msm/front/detail/common_states.hpp [6:9]
+ boost/msm/front/detail/row2_helper.hpp [6:9]
+ boost/msm/front/euml/algorithm.hpp [6:9]
+ boost/msm/front/euml/common.hpp [6:9]
+ boost/msm/front/euml/container.hpp [6:9]
+ boost/msm/front/euml/euml.hpp [6:9]
+ boost/msm/front/euml/euml_typeof.hpp [6:9]
+ boost/msm/front/euml/guard_grammar.hpp [6:9]
+ boost/msm/front/euml/iteration.hpp [6:9]
+ boost/msm/front/euml/operator.hpp [6:9]
+ boost/msm/front/euml/phoenix_placeholders.hpp [6:9]
+ boost/msm/front/euml/querying.hpp [6:9]
+ boost/msm/front/euml/state_grammar.hpp [6:9]
+ boost/msm/front/euml/stl.hpp [6:9]
+ boost/msm/front/euml/stt_grammar.hpp [6:9]
+ boost/msm/front/euml/transformation.hpp [6:9]
+ boost/msm/front/functor_row.hpp [6:9]
+ boost/msm/front/internal_row.hpp [6:9]
+ boost/msm/front/row2.hpp [6:9]
+ boost/msm/front/state_machine_def.hpp [6:9]
+ boost/msm/front/states.hpp [6:9]
+ boost/msm/msm_grammar.hpp [6:9]
+ boost/msm/proto_config.hpp [6:9]
+ boost/msm/row_tags.hpp [6:9]
+
+KEEP BSL-1.0 ada711a3dd063624125a231887c8bac6
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/parameter/aux_/is_maybe.hpp at line 3
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/parameter/aux_/is_maybe.hpp [1:4]
+
+KEEP BSL-1.0 b03e7ad31a88c7f7892fe8557944edb4
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/bron_kerbosch_all_cliques.hpp at line 5, boost/graph/closeness_centrality.hpp at line 5, boost/graph/clustering_coefficient.hpp at line 5, boost/graph/degree_centrality.hpp at line 5, boost/graph/detail/geodesic.hpp at line 5, boost/graph/detail/index.hpp at line 5, boost/graph/directed_graph.hpp at line 5, boost/graph/eccentricity.hpp at line 5, boost/graph/exterior_property.hpp at line 5, boost/graph/geodesic_distance.hpp at line 5, boost/graph/numeric_values.hpp at line 5, boost/graph/property_maps/constant_property_map.hpp at line 5, boost/graph/property_maps/container_property_map.hpp at line 5, boost/graph/property_maps/matrix_property_map.hpp at line 5, boost/graph/property_maps/null_property_map.hpp at line 5, boost/graph/tiernan_all_cycles.hpp at line 5, boost/graph/transitive_reduction.hpp at line 5, boost/graph/undirected_graph.hpp at line 5
+ License text:
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0 (See accompanying file
+ // LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 93.75
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/graph/bron_kerbosch_all_cliques.hpp [3:5]
+ boost/graph/closeness_centrality.hpp [3:5]
+ boost/graph/clustering_coefficient.hpp [3:5]
+ boost/graph/degree_centrality.hpp [3:5]
+ boost/graph/detail/geodesic.hpp [3:5]
+ boost/graph/detail/index.hpp [3:5]
+ boost/graph/directed_graph.hpp [3:5]
+ boost/graph/eccentricity.hpp [3:5]
+ boost/graph/exterior_property.hpp [3:5]
+ boost/graph/geodesic_distance.hpp [3:5]
+ boost/graph/numeric_values.hpp [3:5]
+ boost/graph/property_maps/constant_property_map.hpp [3:5]
+ boost/graph/property_maps/container_property_map.hpp [3:5]
+ boost/graph/property_maps/matrix_property_map.hpp [3:5]
+ boost/graph/property_maps/null_property_map.hpp [3:5]
+ boost/graph/tiernan_all_cycles.hpp [3:5]
+ boost/graph/transitive_reduction.hpp [3:5]
+ boost/graph/undirected_graph.hpp [3:5]
+
+KEEP BSL-1.0 b057fb663f90e3d81c396da228ff46a1
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/config/config.hpp at line 6, boost/preprocessor/slot/detail/counter.hpp at line 5, boost/preprocessor/tuple/rem.hpp at line 6, boost/preprocessor/tuple/to_seq.hpp at line 6, boost/preprocessor/variadic/elem.hpp at line 6, boost/preprocessor/variadic/size.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/preprocessor/config/config.hpp [5:7]
+ boost/preprocessor/slot/detail/counter.hpp [4:6]
+ boost/preprocessor/tuple/rem.hpp [5:7]
+ boost/preprocessor/tuple/to_seq.hpp [5:7]
+ boost/preprocessor/variadic/elem.hpp [5:7]
+ boost/preprocessor/variadic/size.hpp [5:7]
+
+KEEP Mit-Old-Style b202f5e6061e3eeef6c7dcc2414164b3
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: LicenseRef-scancode-mit-old-style
+ Score : 100.00
+ Match type : TEXT
+ Links : http://fedoraproject.org/wiki/Licensing:MIT#Old_Style, https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/mit-old-style.LICENSE
+ Files with this license:
+ boost/detail/algorithm.hpp [10:16]
+ boost/multi_index/detail/ord_index_impl.hpp [26:32]
+ boost/multi_index/detail/ord_index_node.hpp [26:32]
+ boost/multi_index/detail/ord_index_ops.hpp [26:32]
+
+KEEP BSL-1.0 b2055be15799034e5690865f2062c03a
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/sync/windows/named_condition.hpp at line 5, boost/interprocess/sync/windows/named_condition_any.hpp at line 5, boost/interprocess/sync/windows/named_mutex.hpp at line 5, boost/interprocess/sync/windows/named_recursive_mutex.hpp at line 5, boost/interprocess/sync/windows/named_semaphore.hpp at line 5, boost/interprocess/sync/windows/named_sync.hpp at line 5, boost/interprocess/sync/windows/winapi_mutex_wrapper.hpp at line 5, boost/interprocess/sync/windows/winapi_semaphore_wrapper.hpp at line 5, boost/interprocess/sync/windows/winapi_wrapper_common.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2011-2012. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/interprocess/sync/windows/named_condition.hpp [3:5]
+ boost/interprocess/sync/windows/named_condition_any.hpp [3:5]
+ boost/interprocess/sync/windows/named_mutex.hpp [3:5]
+ boost/interprocess/sync/windows/named_recursive_mutex.hpp [3:5]
+ boost/interprocess/sync/windows/named_semaphore.hpp [3:5]
+ boost/interprocess/sync/windows/named_sync.hpp [3:5]
+ boost/interprocess/sync/windows/winapi_mutex_wrapper.hpp [3:5]
+ boost/interprocess/sync/windows/winapi_semaphore_wrapper.hpp [3:5]
+ boost/interprocess/sync/windows/winapi_wrapper_common.hpp [3:5]
+
+KEEP BSL-1.0 b28554be9e679e0afc207f28ee3501c9
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/token_functions.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 92.11
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/token_functions.hpp [5:11]
+
+KEEP BSL-1.0 b411822b31044e9f74317c11d6e100e8
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/variant/detail/multivisitors_cpp11_based.hpp at line 10, boost/variant/detail/multivisitors_cpp14_based.hpp at line 11, boost/variant/detail/multivisitors_preprocessor_based.hpp at line 10, boost/variant/multivisitors.hpp at line 10
+ License text:
+ // Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt).
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/variant/detail/multivisitors_cpp11_based.hpp [8:10]
+ boost/variant/detail/multivisitors_cpp14_based.hpp [9:11]
+ boost/variant/detail/multivisitors_preprocessor_based.hpp [8:10]
+ boost/variant/multivisitors.hpp [8:10]
+
+KEEP BSL-1.0 b51d81a9a19afcd47f87805af0a81f71
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/iterator.hpp at line 3
+ License text:
+ // (C) Copyright Beman Dawes 2000. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/iterator.hpp [1:3]
+
+KEEP BSL-1.0 b5a1e7b4dadbf479f176645e2fd707dd
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/variance.hpp at line 6, boost/accumulators/statistics/weighted_variance.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/accumulators/statistics/variance.hpp [4:6]
+ boost/accumulators/statistics/weighted_variance.hpp [4:6]
+
+KEEP CC0-1.0 b5f764fc4eb42084bd48338af5d0b73e
+BELONGS libs/container/ya.make
+ License text:
+ Doug Lea and released to the public domain, as explained at
+ http://creativecommons.org/publicdomain/zero/1.0/ Send questions,
+ Scancode info:
+ Original SPDX id: CC0-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://creativecommons.org/publicdomain/zero/1.0/, http://creativecommons.org/publicdomain/zero/1.0/legalcode, https://spdx.org/licenses/CC0-1.0
+ Files with this license:
+ libs/container/src/dlmalloc_2_8_6.c [3:4]
+
+KEEP MIT b5ff104ececbb5c6cc9c1d8e6e363649
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: MIT
+ Score : 100.00
+ Match type : TEXT
+ Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
+ Files with this license:
+ boost/geometry/srs/projections/proj/gstmerc.hpp [26:42]
+
+KEEP BSL-1.0 b639b89caf10a43d7b73bd47dbd000b4
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/numeric/detail/function1.hpp at line 3, boost/accumulators/numeric/detail/function2.hpp at line 3, boost/accumulators/numeric/detail/function3.hpp at line 3, boost/accumulators/numeric/detail/function4.hpp at line 3, boost/accumulators/numeric/detail/function_n.hpp at line 3, boost/accumulators/numeric/detail/pod_singleton.hpp at line 3, boost/archive/detail/register_archive.hpp at line 3, boost/concept/assert.hpp at line 3, boost/concept/detail/borland.hpp at line 3, boost/concept/detail/concept_def.hpp at line 3, boost/concept/detail/concept_undef.hpp at line 3, boost/concept/detail/general.hpp at line 3, boost/concept/detail/has_constraints.hpp at line 3, boost/concept/detail/msvc.hpp at line 3, boost/concept/requires.hpp at line 3, boost/concept/usage.hpp at line 3, boost/concept_check/borland.hpp at line 3, boost/concept_check/general.hpp at line 3, boost/concept_check/has_constraints.hpp at line 3, boost/concept_check/msvc.hpp at line 3, boost/parameter/aux_/parenthesized_type.hpp at line 3
+ License text:
+ // Copyright David Abrahams 2006. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/accumulators/numeric/detail/function1.hpp [1:3]
+ boost/accumulators/numeric/detail/function2.hpp [1:3]
+ boost/accumulators/numeric/detail/function3.hpp [1:3]
+ boost/accumulators/numeric/detail/function4.hpp [1:3]
+ boost/accumulators/numeric/detail/function_n.hpp [1:3]
+ boost/accumulators/numeric/detail/pod_singleton.hpp [1:3]
+ boost/archive/detail/register_archive.hpp [1:3]
+ boost/concept/assert.hpp [1:3]
+ boost/concept/detail/borland.hpp [1:3]
+ boost/concept/detail/concept_def.hpp [1:3]
+ boost/concept/detail/concept_undef.hpp [1:3]
+ boost/concept/detail/general.hpp [1:3]
+ boost/concept/detail/has_constraints.hpp [1:3]
+ boost/concept/detail/msvc.hpp [1:3]
+ boost/concept/requires.hpp [1:3]
+ boost/concept/usage.hpp [1:3]
+ boost/concept_check/borland.hpp [1:3]
+ boost/concept_check/general.hpp [1:3]
+ boost/concept_check/has_constraints.hpp [1:3]
+ boost/concept_check/msvc.hpp [1:3]
+ boost/parameter/aux_/parenthesized_type.hpp [1:3]
+
+KEEP BSL-1.0 b6974e875e1c1eb08eee24cb09689b8d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/ptr_container/ptr_container.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/ptr_container/ptr_container.hpp [4:7]
+
+KEEP BSL-1.0 b6a409674a4ee07847ea12b101a0118a
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/smart_ptr/detail/bad_weak_ptr.hpp at line 8, boost/interprocess/sync/spin/interprocess_barrier.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2006. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/interprocess/smart_ptr/detail/bad_weak_ptr.hpp [6:8]
+ boost/interprocess/sync/spin/interprocess_barrier.hpp [3:5]
+
+KEEP BSL-1.0 b708add3dbcdfc5b211f22144bb32fef
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/weighted_sum_kahan.hpp at line 6
+ License text:
+ // Copyright 2011 Simon West. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/accumulators/statistics/weighted_sum_kahan.hpp [4:6]
+
+KEEP BSL-1.0 b76da68edf2a4f406db6266fa75d52c8
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/lockable_adapter.hpp at line 5, boost/thread/null_mutex.hpp at line 5, boost/thread/poly_lockable.hpp at line 5, boost/thread/poly_lockable_adapter.hpp at line 5, boost/thread/poly_shared_lockable.hpp at line 5, boost/thread/poly_shared_lockable_adapter.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/thread/lockable_adapter.hpp [3:5]
+ boost/thread/null_mutex.hpp [3:5]
+ boost/thread/poly_lockable.hpp [3:5]
+ boost/thread/poly_lockable_adapter.hpp [3:5]
+ boost/thread/poly_shared_lockable.hpp [3:5]
+ boost/thread/poly_shared_lockable_adapter.hpp [3:5]
+
+KEEP BSL-1.0 b8289cd244d7708c52552bdeeba10e21
+BELONGS ya.make
+ License text:
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE.md or copy at http ://boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 76.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/callable_traits/detail/default_callable_traits.hpp [4:5]
+
+KEEP BSL-1.0 b862f691db6b1f393df1444cfd7c7ca7
+BELONGS ya.make
+ License text:
+ // Distributed under the Boost Software License, Version 1.0.
+ // See accompanying file LICENSE.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/numeric/odeint/external/nt2/nt2_algebra_dispatcher.hpp [5:7]
+ boost/numeric/odeint/external/nt2/nt2_copy.hpp [6:8]
+ boost/numeric/odeint/external/nt2/nt2_norm_inf.hpp [5:7]
+ boost/numeric/odeint/external/nt2/nt2_resize.hpp [5:7]
+ boost/proto/detail/remove_typename.hpp [6:8]
+
+KEEP BSL-1.0 b8b468abbff6b81e74e440e7d4c9daaa
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/spirit/home/x3/support/traits/numeric_traits.hpp at line 5
+ License text:
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/spirit/home/x3/support/traits/numeric_traits.hpp [4:5]
+
+KEEP BSL-1.0 b9e8f30d851c60e76394d2c0ad75e462
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/concepts/mp_number_archetypes.hpp at line 4, boost/multiprecision/cpp_int/checked.hpp at line 4, boost/multiprecision/cpp_int/comparison.hpp at line 4, boost/multiprecision/debug_adaptor.hpp at line 4, boost/multiprecision/detail/digits.hpp at line 4, boost/multiprecision/detail/integer_ops.hpp at line 4, boost/multiprecision/integer.hpp at line 4, boost/multiprecision/logged_adaptor.hpp at line 4, boost/multiprecision/miller_rabin.hpp at line 4, boost/multiprecision/random.hpp at line 6, boost/multiprecision/traits/extract_exponent_type.hpp at line 4
+ License text:
+ // Copyright 2012 John Maddock. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 92.59
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/multiprecision/concepts/mp_number_archetypes.hpp [2:4]
+ boost/multiprecision/cpp_int/checked.hpp [2:4]
+ boost/multiprecision/cpp_int/comparison.hpp [2:4]
+ boost/multiprecision/debug_adaptor.hpp [2:4]
+ boost/multiprecision/detail/digits.hpp [2:4]
+ boost/multiprecision/detail/integer_ops.hpp [2:4]
+ boost/multiprecision/integer.hpp [2:4]
+ boost/multiprecision/logged_adaptor.hpp [2:4]
+ boost/multiprecision/miller_rabin.hpp [2:4]
+ boost/multiprecision/random.hpp [4:6]
+ boost/multiprecision/traits/extract_exponent_type.hpp [2:4]
+
+KEEP BSL-1.0 ba1e62e24c3a9267634f49eb092f0afb
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/detail/msvc_has_iterator_workaround.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/range/detail/msvc_has_iterator_workaround.hpp [3:6]
+
+KEEP BSL-1.0 bb0492d92471ff074c380f255ab94b94
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/hawick_circuits.hpp at line 4
+ License text:
+ // Use, modification and distribution is subject to the Boost Software
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy
+ // at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/graph/hawick_circuits.hpp [3:5]
+
+KEEP BSL-1.0 bb6c4a594a57e74611676fda9449a7e3
+BELONGS libs/log/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/atomic/detail/pause.hpp at line 3, boost/core/explicit_operator_bool.hpp at line 4, boost/core/null_deleter.hpp at line 4, boost/log/attributes.hpp at line 4, boost/log/attributes/attribute.hpp at line 4, boost/log/attributes/attribute_cast.hpp at line 4, boost/log/attributes/attribute_name.hpp at line 4, boost/log/attributes/attribute_set.hpp at line 4, boost/log/attributes/attribute_value.hpp at line 4, boost/log/attributes/attribute_value_impl.hpp at line 4, boost/log/attributes/attribute_value_set.hpp at line 4, boost/log/attributes/clock.hpp at line 4, boost/log/attributes/constant.hpp at line 4, boost/log/attributes/counter.hpp at line 4, boost/log/attributes/current_process_id.hpp at line 4, boost/log/attributes/current_process_name.hpp at line 4, boost/log/attributes/current_thread_id.hpp at line 4, boost/log/attributes/fallback_policy.hpp at line 4, boost/log/attributes/fallback_policy_fwd.hpp at line 4, boost/log/attributes/function.hpp at line 4, boost/log/attributes/mutable_constant.hpp at line 4, boost/log/attributes/named_scope.hpp at line 4, boost/log/attributes/scoped_attribute.hpp at line 4, boost/log/attributes/time_traits.hpp at line 4, boost/log/attributes/timer.hpp at line 4, boost/log/attributes/value_extraction.hpp at line 4, boost/log/attributes/value_extraction_fwd.hpp at line 4, boost/log/attributes/value_visitation.hpp at line 4, boost/log/attributes/value_visitation_fwd.hpp at line 4, boost/log/common.hpp at line 4, boost/log/core.hpp at line 4, boost/log/core/core.hpp at line 4, boost/log/core/record.hpp at line 4, boost/log/core/record_view.hpp at line 4, boost/log/detail/adaptive_mutex.hpp at line 4, boost/log/detail/allocator_traits.hpp at line 4, boost/log/detail/asio_fwd.hpp at line 4, boost/log/detail/attachable_sstream_buf.hpp at line 4, boost/log/detail/attr_output_impl.hpp at line 4, boost/log/detail/attr_output_terminal.hpp at line 4, boost/log/detail/attribute_get_value_impl.hpp at line 4, boost/log/detail/attribute_predicate.hpp at line 4, boost/log/detail/c_str.hpp at line 4, boost/log/detail/cleanup_scope_guard.hpp at line 4, boost/log/detail/code_conversion.hpp at line 4, boost/log/detail/config.hpp at line 4, boost/log/detail/copy_cv.hpp at line 4, boost/log/detail/custom_terminal_spec.hpp at line 4, boost/log/detail/date_time_fmt_gen_traits_fwd.hpp at line 4, boost/log/detail/date_time_format_parser.hpp at line 4, boost/log/detail/decomposed_time.hpp at line 4, boost/log/detail/deduce_char_type.hpp at line 4, boost/log/detail/default_attribute_names.hpp at line 4, boost/log/detail/embedded_string_type.hpp at line 4, boost/log/detail/enqueued_record.hpp at line 4, boost/log/detail/event.hpp at line 4, boost/log/detail/fake_mutex.hpp at line 4, boost/log/detail/footer.hpp at line 4, boost/log/detail/format.hpp at line 4, boost/log/detail/function_traits.hpp at line 4, boost/log/detail/generate_overloads.hpp at line 4, boost/log/detail/header.hpp at line 4, boost/log/detail/id.hpp at line 4, boost/log/detail/is_character_type.hpp at line 4, boost/log/detail/is_ostream.hpp at line 4, boost/log/detail/light_function.hpp at line 4, boost/log/detail/light_function_pp.hpp at line 4, boost/log/detail/light_rw_mutex.hpp at line 4, boost/log/detail/locking_ptr.hpp at line 4, boost/log/detail/locks.hpp at line 4, boost/log/detail/named_scope_fmt_pp.hpp at line 4, boost/log/detail/native_typeof.hpp at line 4, boost/log/detail/parameter_tools.hpp at line 4, boost/log/detail/pause.hpp at line 4, boost/log/detail/pp_identity.hpp at line 4, boost/log/detail/process_id.hpp at line 4, boost/log/detail/setup_config.hpp at line 4, boost/log/detail/sfinae_tools.hpp at line 4, boost/log/detail/singleton.hpp at line 4, boost/log/detail/sink_init_helpers.hpp at line 4, boost/log/detail/snprintf.hpp at line 4, boost/log/detail/tagged_integer.hpp at line 4, boost/log/detail/thread_id.hpp at line 4, boost/log/detail/thread_specific.hpp at line 4, boost/log/detail/threadsafe_queue.hpp at line 4, boost/log/detail/timestamp.hpp at line 4, boost/log/detail/trivial_keyword.hpp at line 4, boost/log/detail/unary_function_terminal.hpp at line 4, boost/log/detail/unhandled_exception_count.hpp at line 4, boost/log/detail/value_ref_visitation.hpp at line 4, boost/log/exceptions.hpp at line 4, boost/log/expressions.hpp at line 4, boost/log/expressions/attr.hpp at line 4, boost/log/expressions/attr_fwd.hpp at line 4, boost/log/expressions/filter.hpp at line 4, boost/log/expressions/formatter.hpp at line 4, boost/log/expressions/formatters.hpp at line 4, boost/log/expressions/formatters/c_decorator.hpp at line 4, boost/log/expressions/formatters/char_decorator.hpp at line 4, boost/log/expressions/formatters/csv_decorator.hpp at line 4, boost/log/expressions/formatters/date_time.hpp at line 4, boost/log/expressions/formatters/format.hpp at line 4, boost/log/expressions/formatters/if.hpp at line 4, boost/log/expressions/formatters/max_size_decorator.hpp at line 4, boost/log/expressions/formatters/named_scope.hpp at line 4, boost/log/expressions/formatters/stream.hpp at line 4, boost/log/expressions/formatters/wrap_formatter.hpp at line 4, boost/log/expressions/formatters/xml_decorator.hpp at line 4, boost/log/expressions/is_keyword_descriptor.hpp at line 4, boost/log/expressions/keyword.hpp at line 4, boost/log/expressions/keyword_fwd.hpp at line 4, boost/log/expressions/message.hpp at line 4, boost/log/expressions/predicates.hpp at line 4, boost/log/expressions/predicates/begins_with.hpp at line 4, boost/log/expressions/predicates/channel_severity_filter.hpp at line 4, boost/log/expressions/predicates/contains.hpp at line 4, boost/log/expressions/predicates/ends_with.hpp at line 4, boost/log/expressions/predicates/has_attr.hpp at line 4, boost/log/expressions/predicates/is_debugger_present.hpp at line 4, boost/log/expressions/predicates/is_in_range.hpp at line 4, boost/log/expressions/predicates/matches.hpp at line 4, boost/log/expressions/record.hpp at line 4, boost/log/keywords/auto_flush.hpp at line 4, boost/log/keywords/block_size.hpp at line 4, boost/log/keywords/capacity.hpp at line 4, boost/log/keywords/channel.hpp at line 4, boost/log/keywords/delimiter.hpp at line 4, boost/log/keywords/depth.hpp at line 4, boost/log/keywords/empty_marker.hpp at line 4, boost/log/keywords/enable_final_rotation.hpp at line 4, boost/log/keywords/facility.hpp at line 4, boost/log/keywords/file_name.hpp at line 4, boost/log/keywords/filter.hpp at line 4, boost/log/keywords/format.hpp at line 4, boost/log/keywords/ident.hpp at line 4, boost/log/keywords/incomplete_marker.hpp at line 4, boost/log/keywords/ip_version.hpp at line 4, boost/log/keywords/iteration.hpp at line 4, boost/log/keywords/log_name.hpp at line 4, boost/log/keywords/log_source.hpp at line 4, boost/log/keywords/max_files.hpp at line 4, boost/log/keywords/max_size.hpp at line 4, boost/log/keywords/message_file.hpp at line 4, boost/log/keywords/min_free_space.hpp at line 4, boost/log/keywords/name.hpp at line 4, boost/log/keywords/open_mode.hpp at line 4, boost/log/keywords/order.hpp at line 4, boost/log/keywords/ordering_window.hpp at line 4, boost/log/keywords/overflow_policy.hpp at line 4, boost/log/keywords/permissions.hpp at line 4, boost/log/keywords/registration.hpp at line 4, boost/log/keywords/rotation_size.hpp at line 4, boost/log/keywords/scan_method.hpp at line 4, boost/log/keywords/severity.hpp at line 4, boost/log/keywords/start_thread.hpp at line 4, boost/log/keywords/target.hpp at line 4, boost/log/keywords/time_based_rotation.hpp at line 4, boost/log/keywords/use_impl.hpp at line 4, boost/log/sinks.hpp at line 4, boost/log/sinks/async_frontend.hpp at line 4, boost/log/sinks/attribute_mapping.hpp at line 4, boost/log/sinks/basic_sink_backend.hpp at line 4, boost/log/sinks/basic_sink_frontend.hpp at line 4, boost/log/sinks/block_on_overflow.hpp at line 4, boost/log/sinks/bounded_fifo_queue.hpp at line 4, boost/log/sinks/bounded_ordering_queue.hpp at line 4, boost/log/sinks/debug_output_backend.hpp at line 4, boost/log/sinks/drop_on_overflow.hpp at line 4, boost/log/sinks/event_log_backend.hpp at line 4, boost/log/sinks/event_log_constants.hpp at line 4, boost/log/sinks/frontend_requirements.hpp at line 4, boost/log/sinks/sink.hpp at line 4, boost/log/sinks/sync_frontend.hpp at line 4, boost/log/sinks/syslog_backend.hpp at line 4, boost/log/sinks/syslog_constants.hpp at line 4, boost/log/sinks/text_file_backend.hpp at line 4, boost/log/sinks/text_ipc_message_queue_backend.hpp at line 5, boost/log/sinks/text_multifile_backend.hpp at line 4, boost/log/sinks/text_ostream_backend.hpp at line 4, boost/log/sinks/unbounded_fifo_queue.hpp at line 4, boost/log/sinks/unbounded_ordering_queue.hpp at line 4, boost/log/sinks/unlocked_frontend.hpp at line 4, boost/log/sources/basic_logger.hpp at line 4, boost/log/sources/channel_feature.hpp at line 4, boost/log/sources/channel_logger.hpp at line 4, boost/log/sources/exception_handler_feature.hpp at line 4, boost/log/sources/features.hpp at line 4, boost/log/sources/global_logger_storage.hpp at line 4, boost/log/sources/logger.hpp at line 4, boost/log/sources/record_ostream.hpp at line 4, boost/log/sources/severity_channel_logger.hpp at line 4, boost/log/sources/severity_feature.hpp at line 4, boost/log/sources/severity_logger.hpp at line 4, boost/log/sources/threading_models.hpp at line 4, boost/log/support/date_time.hpp at line 4, boost/log/support/exception.hpp at line 4, boost/log/support/regex.hpp at line 4, boost/log/support/spirit_classic.hpp at line 4, boost/log/support/spirit_qi.hpp at line 4, boost/log/support/std_regex.hpp at line 4, boost/log/support/xpressive.hpp at line 4, boost/log/trivial.hpp at line 4, boost/log/utility/exception_handler.hpp at line 4, boost/log/utility/formatting_ostream.hpp at line 4, boost/log/utility/formatting_ostream_fwd.hpp at line 4, boost/log/utility/functional.hpp at line 4, boost/log/utility/functional/as_action.hpp at line 4, boost/log/utility/functional/begins_with.hpp at line 4, boost/log/utility/functional/bind.hpp at line 4, boost/log/utility/functional/bind_assign.hpp at line 4, boost/log/utility/functional/bind_output.hpp at line 4, boost/log/utility/functional/bind_to_log.hpp at line 4, boost/log/utility/functional/contains.hpp at line 4, boost/log/utility/functional/ends_with.hpp at line 4, boost/log/utility/functional/fun_ref.hpp at line 4, boost/log/utility/functional/in_range.hpp at line 4, boost/log/utility/functional/logical.hpp at line 4, boost/log/utility/functional/matches.hpp at line 4, boost/log/utility/functional/nop.hpp at line 4, boost/log/utility/functional/save_result.hpp at line 4, boost/log/utility/ipc/object_name.hpp at line 4, boost/log/utility/ipc/reliable_message_queue.hpp at line 5, boost/log/utility/manipulators.hpp at line 4, boost/log/utility/manipulators/add_value.hpp at line 4, boost/log/utility/manipulators/dump.hpp at line 4, boost/log/utility/manipulators/to_log.hpp at line 4, boost/log/utility/once_block.hpp at line 4, boost/log/utility/open_mode.hpp at line 4, boost/log/utility/permissions.hpp at line 5, boost/log/utility/record_ordering.hpp at line 4, boost/log/utility/setup.hpp at line 4, boost/log/utility/setup/common_attributes.hpp at line 4, boost/log/utility/setup/console.hpp at line 4, boost/log/utility/setup/file.hpp at line 4, boost/log/utility/setup/filter_parser.hpp at line 4, boost/log/utility/setup/formatter_parser.hpp at line 4, boost/log/utility/setup/from_settings.hpp at line 4, boost/log/utility/setup/from_stream.hpp at line 4, boost/log/utility/setup/settings.hpp at line 4, boost/log/utility/setup/settings_parser.hpp at line 4, boost/log/utility/strictest_lock.hpp at line 4, boost/log/utility/string_literal.hpp at line 4, boost/log/utility/string_literal_fwd.hpp at line 4, boost/log/utility/type_dispatch/date_time_types.hpp at line 4, boost/log/utility/type_dispatch/dynamic_type_dispatcher.hpp at line 4, boost/log/utility/type_dispatch/standard_types.hpp at line 4, boost/log/utility/type_dispatch/static_type_dispatcher.hpp at line 4, boost/log/utility/type_dispatch/type_dispatcher.hpp at line 4, boost/log/utility/unique_identifier_name.hpp at line 4, boost/log/utility/unused_variable.hpp at line 4, boost/log/utility/value_ref.hpp at line 4, boost/log/utility/value_ref_fwd.hpp at line 4, boost/smart_ptr/intrusive_ref_counter.hpp at line 4, boost/uuid/detail/config.hpp at line 4, boost/uuid/detail/uuid_generic.ipp at line 4, boost/uuid/detail/uuid_x86.ipp at line 4, boost/uuid/sha1.hpp at line 3, libs/log/config/atomic-int32/atomic_int32.cpp at line 4, libs/log/config/native-syslog/native_syslog.cpp at line 4, libs/log/config/pthread-mutex-robust/pthread_mutex_robust.cpp at line 4, libs/log/config/visibility/visibility.cpp at line 4, libs/log/config/x86-ext/avx2.cpp at line 4, libs/log/config/x86-ext/ssse3.cpp at line 4, libs/log/config/xopen-source-600/xopen_source_600.cpp at line 4, libs/log/src/alignment_gap_between.hpp at line 4, libs/log/src/attribute_name.cpp at line 4, libs/log/src/attribute_set.cpp at line 4, libs/log/src/attribute_set_impl.hpp at line 4, libs/log/src/attribute_value_set.cpp at line 4, libs/log/src/bit_tools.hpp at line 4, libs/log/src/code_conversion.cpp at line 4, libs/log/src/core.cpp at line 4, libs/log/src/date_time_format_parser.cpp at line 4, libs/log/src/default_attribute_names.cpp at line 4, libs/log/src/default_sink.cpp at line 4, libs/log/src/default_sink.hpp at line 4, libs/log/src/dump.cpp at line 4, libs/log/src/dump_avx2.cpp at line 4, libs/log/src/dump_ssse3.cpp at line 4, libs/log/src/event.cpp at line 4, libs/log/src/exceptions.cpp at line 4, libs/log/src/format_parser.cpp at line 4, libs/log/src/global_logger_storage.cpp at line 4, libs/log/src/id_formatting.hpp at line 4, libs/log/src/murmur3.hpp at line 4, libs/log/src/named_scope.cpp at line 4, libs/log/src/named_scope_format_parser.cpp at line 4, libs/log/src/once_block.cpp at line 4, libs/log/src/permissions.cpp at line 4, libs/log/src/posix/ipc_reliable_message_queue.cpp at line 5, libs/log/src/posix/ipc_sync_wrappers.hpp at line 4, libs/log/src/posix/object_name.cpp at line 4, libs/log/src/process_id.cpp at line 4, libs/log/src/process_name.cpp at line 4, libs/log/src/record_ostream.cpp at line 4, libs/log/src/setup/default_filter_factory.cpp at line 4, libs/log/src/setup/default_filter_factory.hpp at line 4, libs/log/src/setup/default_formatter_factory.cpp at line 4, libs/log/src/setup/default_formatter_factory.hpp at line 4, libs/log/src/setup/filter_parser.cpp at line 4, libs/log/src/setup/formatter_parser.cpp at line 4, libs/log/src/setup/init_from_settings.cpp at line 4, libs/log/src/setup/init_from_stream.cpp at line 4, libs/log/src/setup/matches_relation_factory.cpp at line 4, libs/log/src/setup/parser_utils.cpp at line 4, libs/log/src/setup/parser_utils.hpp at line 4, libs/log/src/setup/settings_parser.cpp at line 4, libs/log/src/severity_level.cpp at line 4, libs/log/src/spirit_encoding.cpp at line 4, libs/log/src/spirit_encoding.hpp at line 4, libs/log/src/stateless_allocator.hpp at line 4, libs/log/src/syslog_backend.cpp at line 4, libs/log/src/text_file_backend.cpp at line 4, libs/log/src/text_multifile_backend.cpp at line 4, libs/log/src/text_ostream_backend.cpp at line 4, libs/log/src/thread_id.cpp at line 4, libs/log/src/thread_specific.cpp at line 4, libs/log/src/threadsafe_queue.cpp at line 4, libs/log/src/timer.cpp at line 4, libs/log/src/timestamp.cpp at line 4, libs/log/src/trivial.cpp at line 4, libs/log/src/unhandled_exception_count.cpp at line 4, libs/log/src/unique_ptr.hpp at line 4, libs/log/src/windows/auto_handle.hpp at line 4, libs/log/src/windows/debug_output_backend.cpp at line 4, libs/log/src/windows/event_log_backend.cpp at line 4, libs/log/src/windows/event_log_registry.hpp at line 4, libs/log/src/windows/ipc_reliable_message_queue.cpp at line 5, libs/log/src/windows/ipc_sync_wrappers.cpp at line 4, libs/log/src/windows/ipc_sync_wrappers.hpp at line 4, libs/log/src/windows/light_rw_mutex.cpp at line 4, libs/log/src/windows/mapped_shared_memory.cpp at line 4, libs/log/src/windows/mapped_shared_memory.hpp at line 4, libs/log/src/windows/object_name.cpp at line 4, libs/log/src/windows/utf_code_conversion.hpp at line 4
+ License text:
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/atomic/detail/pause.hpp [2:4]
+ boost/core/explicit_operator_bool.hpp [3:5]
+ boost/core/null_deleter.hpp [3:5]
+ boost/log/attributes.hpp [3:5]
+ boost/log/attributes/attribute.hpp [3:5]
+ boost/log/attributes/attribute_cast.hpp [3:5]
+ boost/log/attributes/attribute_name.hpp [3:5]
+ boost/log/attributes/attribute_set.hpp [3:5]
+ boost/log/attributes/attribute_value.hpp [3:5]
+ boost/log/attributes/attribute_value_impl.hpp [3:5]
+ boost/log/attributes/attribute_value_set.hpp [3:5]
+ boost/log/attributes/clock.hpp [3:5]
+ boost/log/attributes/constant.hpp [3:5]
+ boost/log/attributes/counter.hpp [3:5]
+ boost/log/attributes/current_process_id.hpp [3:5]
+ boost/log/attributes/current_process_name.hpp [3:5]
+ boost/log/attributes/current_thread_id.hpp [3:5]
+ boost/log/attributes/fallback_policy.hpp [3:5]
+ boost/log/attributes/fallback_policy_fwd.hpp [3:5]
+ boost/log/attributes/function.hpp [3:5]
+ boost/log/attributes/mutable_constant.hpp [3:5]
+ boost/log/attributes/named_scope.hpp [3:5]
+ boost/log/attributes/scoped_attribute.hpp [3:5]
+ boost/log/attributes/time_traits.hpp [3:5]
+ boost/log/attributes/timer.hpp [3:5]
+ boost/log/attributes/value_extraction.hpp [3:5]
+ boost/log/attributes/value_extraction_fwd.hpp [3:5]
+ boost/log/attributes/value_visitation.hpp [3:5]
+ boost/log/attributes/value_visitation_fwd.hpp [3:5]
+ boost/log/common.hpp [3:5]
+ boost/log/core.hpp [3:5]
+ boost/log/core/core.hpp [3:5]
+ boost/log/core/record.hpp [3:5]
+ boost/log/core/record_view.hpp [3:5]
+ boost/log/detail/adaptive_mutex.hpp [3:5]
+ boost/log/detail/allocator_traits.hpp [3:5]
+ boost/log/detail/asio_fwd.hpp [3:5]
+ boost/log/detail/attachable_sstream_buf.hpp [3:5]
+ boost/log/detail/attr_output_impl.hpp [3:5]
+ boost/log/detail/attr_output_terminal.hpp [3:5]
+ boost/log/detail/attribute_get_value_impl.hpp [3:5]
+ boost/log/detail/attribute_predicate.hpp [3:5]
+ boost/log/detail/c_str.hpp [3:5]
+ boost/log/detail/cleanup_scope_guard.hpp [3:5]
+ boost/log/detail/code_conversion.hpp [3:5]
+ boost/log/detail/config.hpp [3:5]
+ boost/log/detail/copy_cv.hpp [3:5]
+ boost/log/detail/custom_terminal_spec.hpp [3:5]
+ boost/log/detail/date_time_fmt_gen_traits_fwd.hpp [3:5]
+ boost/log/detail/date_time_format_parser.hpp [3:5]
+ boost/log/detail/decomposed_time.hpp [3:5]
+ boost/log/detail/deduce_char_type.hpp [3:5]
+ boost/log/detail/default_attribute_names.hpp [3:5]
+ boost/log/detail/embedded_string_type.hpp [3:5]
+ boost/log/detail/enqueued_record.hpp [3:5]
+ boost/log/detail/event.hpp [3:5]
+ boost/log/detail/fake_mutex.hpp [3:5]
+ boost/log/detail/footer.hpp [3:5]
+ boost/log/detail/format.hpp [3:5]
+ boost/log/detail/function_traits.hpp [3:5]
+ boost/log/detail/generate_overloads.hpp [3:5]
+ boost/log/detail/header.hpp [3:5]
+ boost/log/detail/id.hpp [3:5]
+ boost/log/detail/is_character_type.hpp [3:5]
+ boost/log/detail/is_ostream.hpp [3:5]
+ boost/log/detail/light_function.hpp [3:5]
+ boost/log/detail/light_function_pp.hpp [3:5]
+ boost/log/detail/light_rw_mutex.hpp [3:5]
+ boost/log/detail/locking_ptr.hpp [3:5]
+ boost/log/detail/locks.hpp [3:5]
+ boost/log/detail/named_scope_fmt_pp.hpp [3:5]
+ boost/log/detail/native_typeof.hpp [3:5]
+ boost/log/detail/parameter_tools.hpp [3:5]
+ boost/log/detail/pause.hpp [3:5]
+ boost/log/detail/pp_identity.hpp [3:5]
+ boost/log/detail/process_id.hpp [3:5]
+ boost/log/detail/setup_config.hpp [3:5]
+ boost/log/detail/sfinae_tools.hpp [3:5]
+ boost/log/detail/singleton.hpp [3:5]
+ boost/log/detail/sink_init_helpers.hpp [3:5]
+ boost/log/detail/snprintf.hpp [3:5]
+ boost/log/detail/tagged_integer.hpp [3:5]
+ boost/log/detail/thread_id.hpp [3:5]
+ boost/log/detail/thread_specific.hpp [3:5]
+ boost/log/detail/threadsafe_queue.hpp [3:5]
+ boost/log/detail/timestamp.hpp [3:5]
+ boost/log/detail/trivial_keyword.hpp [3:5]
+ boost/log/detail/unary_function_terminal.hpp [3:5]
+ boost/log/detail/unhandled_exception_count.hpp [3:5]
+ boost/log/detail/value_ref_visitation.hpp [3:5]
+ boost/log/exceptions.hpp [3:5]
+ boost/log/expressions.hpp [3:5]
+ boost/log/expressions/attr.hpp [3:5]
+ boost/log/expressions/attr_fwd.hpp [3:5]
+ boost/log/expressions/filter.hpp [3:5]
+ boost/log/expressions/formatter.hpp [3:5]
+ boost/log/expressions/formatters.hpp [3:5]
+ boost/log/expressions/formatters/c_decorator.hpp [3:5]
+ boost/log/expressions/formatters/char_decorator.hpp [3:5]
+ boost/log/expressions/formatters/csv_decorator.hpp [3:5]
+ boost/log/expressions/formatters/date_time.hpp [3:5]
+ boost/log/expressions/formatters/format.hpp [3:5]
+ boost/log/expressions/formatters/if.hpp [3:5]
+ boost/log/expressions/formatters/max_size_decorator.hpp [3:5]
+ boost/log/expressions/formatters/named_scope.hpp [3:5]
+ boost/log/expressions/formatters/stream.hpp [3:5]
+ boost/log/expressions/formatters/wrap_formatter.hpp [3:5]
+ boost/log/expressions/formatters/xml_decorator.hpp [3:5]
+ boost/log/expressions/is_keyword_descriptor.hpp [3:5]
+ boost/log/expressions/keyword.hpp [3:5]
+ boost/log/expressions/keyword_fwd.hpp [3:5]
+ boost/log/expressions/message.hpp [3:5]
+ boost/log/expressions/predicates.hpp [3:5]
+ boost/log/expressions/predicates/begins_with.hpp [3:5]
+ boost/log/expressions/predicates/channel_severity_filter.hpp [3:5]
+ boost/log/expressions/predicates/contains.hpp [3:5]
+ boost/log/expressions/predicates/ends_with.hpp [3:5]
+ boost/log/expressions/predicates/has_attr.hpp [3:5]
+ boost/log/expressions/predicates/is_debugger_present.hpp [3:5]
+ boost/log/expressions/predicates/is_in_range.hpp [3:5]
+ boost/log/expressions/predicates/matches.hpp [3:5]
+ boost/log/expressions/record.hpp [3:5]
+ boost/log/keywords/auto_flush.hpp [3:5]
+ boost/log/keywords/block_size.hpp [3:5]
+ boost/log/keywords/capacity.hpp [3:5]
+ boost/log/keywords/channel.hpp [3:5]
+ boost/log/keywords/delimiter.hpp [3:5]
+ boost/log/keywords/depth.hpp [3:5]
+ boost/log/keywords/empty_marker.hpp [3:5]
+ boost/log/keywords/enable_final_rotation.hpp [3:5]
+ boost/log/keywords/facility.hpp [3:5]
+ boost/log/keywords/file_name.hpp [3:5]
+ boost/log/keywords/filter.hpp [3:5]
+ boost/log/keywords/format.hpp [3:5]
+ boost/log/keywords/ident.hpp [3:5]
+ boost/log/keywords/incomplete_marker.hpp [3:5]
+ boost/log/keywords/ip_version.hpp [3:5]
+ boost/log/keywords/iteration.hpp [3:5]
+ boost/log/keywords/log_name.hpp [3:5]
+ boost/log/keywords/log_source.hpp [3:5]
+ boost/log/keywords/max_files.hpp [3:5]
+ boost/log/keywords/max_size.hpp [3:5]
+ boost/log/keywords/message_file.hpp [3:5]
+ boost/log/keywords/min_free_space.hpp [3:5]
+ boost/log/keywords/name.hpp [3:5]
+ boost/log/keywords/open_mode.hpp [3:5]
+ boost/log/keywords/order.hpp [3:5]
+ boost/log/keywords/ordering_window.hpp [3:5]
+ boost/log/keywords/overflow_policy.hpp [3:5]
+ boost/log/keywords/permissions.hpp [3:5]
+ boost/log/keywords/registration.hpp [3:5]
+ boost/log/keywords/rotation_size.hpp [3:5]
+ boost/log/keywords/scan_method.hpp [3:5]
+ boost/log/keywords/severity.hpp [3:5]
+ boost/log/keywords/start_thread.hpp [3:5]
+ boost/log/keywords/target.hpp [3:5]
+ boost/log/keywords/time_based_rotation.hpp [3:5]
+ boost/log/keywords/use_impl.hpp [3:5]
+ boost/log/sinks.hpp [3:5]
+ boost/log/sinks/async_frontend.hpp [3:5]
+ boost/log/sinks/attribute_mapping.hpp [3:5]
+ boost/log/sinks/basic_sink_backend.hpp [3:5]
+ boost/log/sinks/basic_sink_frontend.hpp [3:5]
+ boost/log/sinks/block_on_overflow.hpp [3:5]
+ boost/log/sinks/bounded_fifo_queue.hpp [3:5]
+ boost/log/sinks/bounded_ordering_queue.hpp [3:5]
+ boost/log/sinks/debug_output_backend.hpp [3:5]
+ boost/log/sinks/drop_on_overflow.hpp [3:5]
+ boost/log/sinks/event_log_backend.hpp [3:5]
+ boost/log/sinks/event_log_constants.hpp [3:5]
+ boost/log/sinks/frontend_requirements.hpp [3:5]
+ boost/log/sinks/sink.hpp [3:5]
+ boost/log/sinks/sync_frontend.hpp [3:5]
+ boost/log/sinks/syslog_backend.hpp [3:5]
+ boost/log/sinks/syslog_constants.hpp [3:5]
+ boost/log/sinks/text_file_backend.hpp [3:5]
+ boost/log/sinks/text_ipc_message_queue_backend.hpp [4:6]
+ boost/log/sinks/text_multifile_backend.hpp [3:5]
+ boost/log/sinks/text_ostream_backend.hpp [3:5]
+ boost/log/sinks/unbounded_fifo_queue.hpp [3:5]
+ boost/log/sinks/unbounded_ordering_queue.hpp [3:5]
+ boost/log/sinks/unlocked_frontend.hpp [3:5]
+ boost/log/sources/basic_logger.hpp [3:5]
+ boost/log/sources/channel_feature.hpp [3:5]
+ boost/log/sources/channel_logger.hpp [3:5]
+ boost/log/sources/exception_handler_feature.hpp [3:5]
+ boost/log/sources/features.hpp [3:5]
+ boost/log/sources/global_logger_storage.hpp [3:5]
+ boost/log/sources/logger.hpp [3:5]
+ boost/log/sources/record_ostream.hpp [3:5]
+ boost/log/sources/severity_channel_logger.hpp [3:5]
+ boost/log/sources/severity_feature.hpp [3:5]
+ boost/log/sources/severity_logger.hpp [3:5]
+ boost/log/sources/threading_models.hpp [3:5]
+ boost/log/support/date_time.hpp [3:5]
+ boost/log/support/exception.hpp [3:5]
+ boost/log/support/regex.hpp [3:5]
+ boost/log/support/spirit_classic.hpp [3:5]
+ boost/log/support/spirit_qi.hpp [3:5]
+ boost/log/support/std_regex.hpp [3:5]
+ boost/log/support/xpressive.hpp [3:5]
+ boost/log/trivial.hpp [3:5]
+ boost/log/utility/exception_handler.hpp [3:5]
+ boost/log/utility/formatting_ostream.hpp [3:5]
+ boost/log/utility/formatting_ostream_fwd.hpp [3:5]
+ boost/log/utility/functional.hpp [3:5]
+ boost/log/utility/functional/as_action.hpp [3:5]
+ boost/log/utility/functional/begins_with.hpp [3:5]
+ boost/log/utility/functional/bind.hpp [3:5]
+ boost/log/utility/functional/bind_assign.hpp [3:5]
+ boost/log/utility/functional/bind_output.hpp [3:5]
+ boost/log/utility/functional/bind_to_log.hpp [3:5]
+ boost/log/utility/functional/contains.hpp [3:5]
+ boost/log/utility/functional/ends_with.hpp [3:5]
+ boost/log/utility/functional/fun_ref.hpp [3:5]
+ boost/log/utility/functional/in_range.hpp [3:5]
+ boost/log/utility/functional/logical.hpp [3:5]
+ boost/log/utility/functional/matches.hpp [3:5]
+ boost/log/utility/functional/nop.hpp [3:5]
+ boost/log/utility/functional/save_result.hpp [3:5]
+ boost/log/utility/ipc/object_name.hpp [3:5]
+ boost/log/utility/ipc/reliable_message_queue.hpp [4:6]
+ boost/log/utility/manipulators.hpp [3:5]
+ boost/log/utility/manipulators/add_value.hpp [3:5]
+ boost/log/utility/manipulators/dump.hpp [3:5]
+ boost/log/utility/manipulators/to_log.hpp [3:5]
+ boost/log/utility/once_block.hpp [3:5]
+ boost/log/utility/open_mode.hpp [3:5]
+ boost/log/utility/permissions.hpp [4:6]
+ boost/log/utility/record_ordering.hpp [3:5]
+ boost/log/utility/setup.hpp [3:5]
+ boost/log/utility/setup/common_attributes.hpp [3:5]
+ boost/log/utility/setup/console.hpp [3:5]
+ boost/log/utility/setup/file.hpp [3:5]
+ boost/log/utility/setup/filter_parser.hpp [3:5]
+ boost/log/utility/setup/formatter_parser.hpp [3:5]
+ boost/log/utility/setup/from_settings.hpp [3:5]
+ boost/log/utility/setup/from_stream.hpp [3:5]
+ boost/log/utility/setup/settings.hpp [3:5]
+ boost/log/utility/setup/settings_parser.hpp [3:5]
+ boost/log/utility/strictest_lock.hpp [3:5]
+ boost/log/utility/string_literal.hpp [3:5]
+ boost/log/utility/string_literal_fwd.hpp [3:5]
+ boost/log/utility/type_dispatch/date_time_types.hpp [3:5]
+ boost/log/utility/type_dispatch/dynamic_type_dispatcher.hpp [3:5]
+ boost/log/utility/type_dispatch/standard_types.hpp [3:5]
+ boost/log/utility/type_dispatch/static_type_dispatcher.hpp [3:5]
+ boost/log/utility/type_dispatch/type_dispatcher.hpp [3:5]
+ boost/log/utility/unique_identifier_name.hpp [3:5]
+ boost/log/utility/unused_variable.hpp [3:5]
+ boost/log/utility/value_ref.hpp [3:5]
+ boost/log/utility/value_ref_fwd.hpp [3:5]
+ boost/smart_ptr/intrusive_ref_counter.hpp [3:5]
+ boost/uuid/detail/config.hpp [3:5]
+ boost/uuid/detail/uuid_generic.ipp [3:5]
+ boost/uuid/detail/uuid_x86.ipp [3:5]
+ boost/uuid/sha1.hpp [2:4]
+ libs/log/config/atomic-int32/atomic_int32.cpp [3:5]
+ libs/log/config/native-syslog/native_syslog.cpp [3:5]
+ libs/log/config/pthread-mutex-robust/pthread_mutex_robust.cpp [3:5]
+ libs/log/config/visibility/visibility.cpp [3:5]
+ libs/log/config/x86-ext/avx2.cpp [3:5]
+ libs/log/config/x86-ext/ssse3.cpp [3:5]
+ libs/log/config/xopen-source-600/xopen_source_600.cpp [3:5]
+ libs/log/src/alignment_gap_between.hpp [3:5]
+ libs/log/src/attribute_name.cpp [3:5]
+ libs/log/src/attribute_set.cpp [3:5]
+ libs/log/src/attribute_set_impl.hpp [3:5]
+ libs/log/src/attribute_value_set.cpp [3:5]
+ libs/log/src/bit_tools.hpp [3:5]
+ libs/log/src/code_conversion.cpp [3:5]
+ libs/log/src/core.cpp [3:5]
+ libs/log/src/date_time_format_parser.cpp [3:5]
+ libs/log/src/default_attribute_names.cpp [3:5]
+ libs/log/src/default_sink.cpp [3:5]
+ libs/log/src/default_sink.hpp [3:5]
+ libs/log/src/dump.cpp [3:5]
+ libs/log/src/dump_avx2.cpp [3:5]
+ libs/log/src/dump_ssse3.cpp [3:5]
+ libs/log/src/event.cpp [3:5]
+ libs/log/src/exceptions.cpp [3:5]
+ libs/log/src/format_parser.cpp [3:5]
+ libs/log/src/global_logger_storage.cpp [3:5]
+ libs/log/src/id_formatting.hpp [3:5]
+ libs/log/src/murmur3.hpp [3:5]
+ libs/log/src/named_scope.cpp [3:5]
+ libs/log/src/named_scope_format_parser.cpp [3:5]
+ libs/log/src/once_block.cpp [3:5]
+ libs/log/src/permissions.cpp [3:5]
+ libs/log/src/posix/ipc_reliable_message_queue.cpp [4:6]
+ libs/log/src/posix/ipc_sync_wrappers.hpp [3:5]
+ libs/log/src/posix/object_name.cpp [3:5]
+ libs/log/src/process_id.cpp [3:5]
+ libs/log/src/process_name.cpp [3:5]
+ libs/log/src/record_ostream.cpp [3:5]
+ libs/log/src/setup/default_filter_factory.cpp [3:5]
+ libs/log/src/setup/default_filter_factory.hpp [3:5]
+ libs/log/src/setup/default_formatter_factory.cpp [3:5]
+ libs/log/src/setup/default_formatter_factory.hpp [3:5]
+ libs/log/src/setup/filter_parser.cpp [3:5]
+ libs/log/src/setup/formatter_parser.cpp [3:5]
+ libs/log/src/setup/init_from_settings.cpp [3:5]
+ libs/log/src/setup/init_from_stream.cpp [3:5]
+ libs/log/src/setup/matches_relation_factory.cpp [3:5]
+ libs/log/src/setup/parser_utils.cpp [3:5]
+ libs/log/src/setup/parser_utils.hpp [3:5]
+ libs/log/src/setup/settings_parser.cpp [3:5]
+ libs/log/src/severity_level.cpp [3:5]
+ libs/log/src/spirit_encoding.cpp [3:5]
+ libs/log/src/spirit_encoding.hpp [3:5]
+ libs/log/src/stateless_allocator.hpp [3:5]
+ libs/log/src/syslog_backend.cpp [3:5]
+ libs/log/src/text_file_backend.cpp [3:5]
+ libs/log/src/text_multifile_backend.cpp [3:5]
+ libs/log/src/text_ostream_backend.cpp [3:5]
+ libs/log/src/thread_id.cpp [3:5]
+ libs/log/src/thread_specific.cpp [3:5]
+ libs/log/src/threadsafe_queue.cpp [3:5]
+ libs/log/src/timer.cpp [3:5]
+ libs/log/src/timestamp.cpp [3:5]
+ libs/log/src/trivial.cpp [3:5]
+ libs/log/src/unhandled_exception_count.cpp [3:5]
+ libs/log/src/unique_ptr.hpp [3:5]
+ libs/log/src/windows/auto_handle.hpp [3:5]
+ libs/log/src/windows/debug_output_backend.cpp [3:5]
+ libs/log/src/windows/event_log_backend.cpp [3:5]
+ libs/log/src/windows/event_log_registry.hpp [3:5]
+ libs/log/src/windows/ipc_reliable_message_queue.cpp [4:6]
+ libs/log/src/windows/ipc_sync_wrappers.cpp [3:5]
+ libs/log/src/windows/ipc_sync_wrappers.hpp [3:5]
+ libs/log/src/windows/light_rw_mutex.cpp [3:5]
+ libs/log/src/windows/mapped_shared_memory.cpp [3:5]
+ libs/log/src/windows/mapped_shared_memory.hpp [3:5]
+ libs/log/src/windows/object_name.cpp [3:5]
+ libs/log/src/windows/utf_code_conversion.hpp [3:5]
+
+KEEP BSL-1.0 bd5d1d3e2ab4557acb808f71d4a03783
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/detail/binary_search.hpp at line 3, boost/mpl/O1_size.hpp at line 8, boost/mpl/O1_size_fwd.hpp at line 8, boost/mpl/accumulate.hpp at line 9, boost/mpl/advance.hpp at line 8, boost/mpl/advance_fwd.hpp at line 8, boost/mpl/alias.hpp at line 8, boost/mpl/always.hpp at line 8, boost/mpl/and.hpp at line 8, boost/mpl/apply.hpp at line 12, boost/mpl/apply_fwd.hpp at line 12, boost/mpl/apply_wrap.hpp at line 12, boost/mpl/arg.hpp at line 13, boost/mpl/arg_fwd.hpp at line 9, boost/mpl/arithmetic.hpp at line 8, boost/mpl/as_sequence.hpp at line 8, boost/mpl/assert.hpp at line 8, boost/mpl/at.hpp at line 8, boost/mpl/at_fwd.hpp at line 8, boost/mpl/aux_/O1_size_impl.hpp at line 8, boost/mpl/aux_/adl_barrier.hpp at line 8, boost/mpl/aux_/advance_backward.hpp at line 12, boost/mpl/aux_/advance_forward.hpp at line 12, boost/mpl/aux_/apply_1st.hpp at line 8, boost/mpl/aux_/arg_typedef.hpp at line 8, boost/mpl/aux_/arithmetic_op.hpp at line 7, boost/mpl/aux_/arity.hpp at line 8, boost/mpl/aux_/arity_spec.hpp at line 8, boost/mpl/aux_/at_impl.hpp at line 8, boost/mpl/aux_/back_impl.hpp at line 8, boost/mpl/aux_/basic_bind.hpp at line 9, boost/mpl/aux_/clear_impl.hpp at line 8, boost/mpl/aux_/common_name_wknd.hpp at line 8, boost/mpl/aux_/comparison_op.hpp at line 7, boost/mpl/aux_/config/adl.hpp at line 8, boost/mpl/aux_/config/arrays.hpp at line 8, boost/mpl/aux_/config/bcc.hpp at line 8, boost/mpl/aux_/config/bind.hpp at line 9, boost/mpl/aux_/config/compiler.hpp at line 8, boost/mpl/aux_/config/ctps.hpp at line 8, boost/mpl/aux_/config/dependent_nttp.hpp at line 8, boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp at line 8, boost/mpl/aux_/config/dtp.hpp at line 8, boost/mpl/aux_/config/eti.hpp at line 8, boost/mpl/aux_/config/forwarding.hpp at line 8, boost/mpl/aux_/config/gcc.hpp at line 8, boost/mpl/aux_/config/has_apply.hpp at line 8, boost/mpl/aux_/config/has_xxx.hpp at line 9, boost/mpl/aux_/config/integral.hpp at line 8, boost/mpl/aux_/config/intel.hpp at line 8, boost/mpl/aux_/config/lambda.hpp at line 8, boost/mpl/aux_/config/msvc.hpp at line 8, boost/mpl/aux_/config/msvc_typename.hpp at line 8, boost/mpl/aux_/config/nttp.hpp at line 8, boost/mpl/aux_/config/operators.hpp at line 8, boost/mpl/aux_/config/overload_resolution.hpp at line 8, boost/mpl/aux_/config/pp_counter.hpp at line 8, boost/mpl/aux_/config/preprocessor.hpp at line 8, boost/mpl/aux_/config/static_constant.hpp at line 8, boost/mpl/aux_/config/ttp.hpp at line 8, boost/mpl/aux_/config/typeof.hpp at line 8, boost/mpl/aux_/config/use_preprocessed.hpp at line 8, boost/mpl/aux_/config/workaround.hpp at line 8, boost/mpl/aux_/contains_impl.hpp at line 9, boost/mpl/aux_/count_args.hpp at line 7, boost/mpl/aux_/count_impl.hpp at line 8, boost/mpl/aux_/empty_impl.hpp at line 8, boost/mpl/aux_/erase_impl.hpp at line 8, boost/mpl/aux_/erase_key_impl.hpp at line 8, boost/mpl/aux_/filter_iter.hpp at line 8, boost/mpl/aux_/find_if_pred.hpp at line 9, boost/mpl/aux_/fold_impl.hpp at line 8, boost/mpl/aux_/fold_impl_body.hpp at line 9, boost/mpl/aux_/fold_op.hpp at line 8, boost/mpl/aux_/fold_pred.hpp at line 8, boost/mpl/aux_/front_impl.hpp at line 8, boost/mpl/aux_/full_lambda.hpp at line 12, boost/mpl/aux_/has_apply.hpp at line 8, boost/mpl/aux_/has_begin.hpp at line 8, boost/mpl/aux_/has_key_impl.hpp at line 9, boost/mpl/aux_/has_rebind.hpp at line 8, boost/mpl/aux_/has_size.hpp at line 8, boost/mpl/aux_/has_tag.hpp at line 8, boost/mpl/aux_/has_type.hpp at line 8, boost/mpl/aux_/include_preprocessed.hpp at line 7, boost/mpl/aux_/insert_impl.hpp at line 8, boost/mpl/aux_/insert_range_impl.hpp at line 8, boost/mpl/aux_/inserter_algorithm.hpp at line 9, boost/mpl/aux_/integral_wrapper.hpp at line 5, boost/mpl/aux_/is_msvc_eti_arg.hpp at line 8, boost/mpl/aux_/iter_apply.hpp at line 8, boost/mpl/aux_/iter_fold_if_impl.hpp at line 9, boost/mpl/aux_/iter_fold_impl.hpp at line 8, boost/mpl/aux_/iter_push_front.hpp at line 8, boost/mpl/aux_/joint_iter.hpp at line 8, boost/mpl/aux_/lambda_arity_param.hpp at line 8, boost/mpl/aux_/lambda_no_ctps.hpp at line 12, boost/mpl/aux_/lambda_spec.hpp at line 8, boost/mpl/aux_/lambda_support.hpp at line 8, boost/mpl/aux_/largest_int.hpp at line 8, boost/mpl/aux_/logical_op.hpp at line 5, boost/mpl/aux_/msvc_dtw.hpp at line 5, boost/mpl/aux_/msvc_eti_base.hpp at line 8, boost/mpl/aux_/msvc_is_class.hpp at line 8, boost/mpl/aux_/msvc_never_true.hpp at line 8, boost/mpl/aux_/msvc_type.hpp at line 8, boost/mpl/aux_/na.hpp at line 8, boost/mpl/aux_/na_assert.hpp at line 8, boost/mpl/aux_/na_fwd.hpp at line 8, boost/mpl/aux_/na_spec.hpp at line 8, boost/mpl/aux_/nested_type_wknd.hpp at line 8, boost/mpl/aux_/nttp_decl.hpp at line 8, boost/mpl/aux_/numeric_cast_utils.hpp at line 8, boost/mpl/aux_/numeric_op.hpp at line 11, boost/mpl/aux_/order_impl.hpp at line 9, boost/mpl/aux_/overload_names.hpp at line 8, boost/mpl/aux_/partition_op.hpp at line 9, boost/mpl/aux_/pop_back_impl.hpp at line 8, boost/mpl/aux_/pop_front_impl.hpp at line 8, boost/mpl/aux_/preprocessed/bcc/advance_backward.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/advance_forward.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/and.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/apply.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/apply_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/apply_wrap.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/arg.hpp at line 6, boost/mpl/aux_/preprocessed/bcc/basic_bind.hpp at line 6, boost/mpl/aux_/preprocessed/bcc/bind.hpp at line 6, boost/mpl/aux_/preprocessed/bcc/bind_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/bitand.hpp at line 6, boost/mpl/aux_/preprocessed/bcc/bitor.hpp at line 6, boost/mpl/aux_/preprocessed/bcc/bitxor.hpp at line 6, boost/mpl/aux_/preprocessed/bcc/deque.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/divides.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/full_lambda.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/greater.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/greater_equal.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/inherit.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/iter_fold_if_impl.hpp at line 6, boost/mpl/aux_/preprocessed/bcc/iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/lambda_no_ctps.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/less.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/less_equal.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/list.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/list_c.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/map.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/minus.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/modulus.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/not_equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/or.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/placeholders.hpp at line 6, boost/mpl/aux_/preprocessed/bcc/plus.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/quote.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/reverse_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/reverse_iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/set.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/set_c.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/shift_left.hpp at line 6, boost/mpl/aux_/preprocessed/bcc/shift_right.hpp at line 6, boost/mpl/aux_/preprocessed/bcc/template_arity.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/times.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/unpack_args.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/vector.hpp at line 5, boost/mpl/aux_/preprocessed/bcc/vector_c.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/advance_backward.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/advance_forward.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/and.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/apply.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/apply_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/apply_wrap.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/arg.hpp at line 6, boost/mpl/aux_/preprocessed/bcc551/basic_bind.hpp at line 6, boost/mpl/aux_/preprocessed/bcc551/bind.hpp at line 6, boost/mpl/aux_/preprocessed/bcc551/bind_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/bitand.hpp at line 6, boost/mpl/aux_/preprocessed/bcc551/bitor.hpp at line 6, boost/mpl/aux_/preprocessed/bcc551/bitxor.hpp at line 6, boost/mpl/aux_/preprocessed/bcc551/deque.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/divides.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/full_lambda.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/greater.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/greater_equal.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/inherit.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/iter_fold_if_impl.hpp at line 6, boost/mpl/aux_/preprocessed/bcc551/iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/lambda_no_ctps.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/less.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/less_equal.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/list.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/list_c.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/map.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/minus.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/modulus.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/not_equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/or.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/placeholders.hpp at line 6, boost/mpl/aux_/preprocessed/bcc551/plus.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/quote.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/reverse_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/reverse_iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/set.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/set_c.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/shift_left.hpp at line 6, boost/mpl/aux_/preprocessed/bcc551/shift_right.hpp at line 6, boost/mpl/aux_/preprocessed/bcc551/template_arity.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/times.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/unpack_args.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/vector.hpp at line 5, boost/mpl/aux_/preprocessed/bcc551/vector_c.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/advance_backward.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/advance_forward.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/and.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/apply.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/apply_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/apply_wrap.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/arg.hpp at line 6, boost/mpl/aux_/preprocessed/bcc_pre590/basic_bind.hpp at line 6, boost/mpl/aux_/preprocessed/bcc_pre590/bind.hpp at line 6, boost/mpl/aux_/preprocessed/bcc_pre590/bind_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/bitand.hpp at line 6, boost/mpl/aux_/preprocessed/bcc_pre590/bitor.hpp at line 6, boost/mpl/aux_/preprocessed/bcc_pre590/bitxor.hpp at line 6, boost/mpl/aux_/preprocessed/bcc_pre590/deque.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/divides.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/full_lambda.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/greater.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/greater_equal.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/inherit.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_if_impl.hpp at line 6, boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/lambda_no_ctps.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/less.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/less_equal.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/list.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/list_c.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/map.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/minus.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/modulus.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/not_equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/or.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/placeholders.hpp at line 6, boost/mpl/aux_/preprocessed/bcc_pre590/plus.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/quote.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/reverse_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/reverse_iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/set.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/set_c.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/shift_left.hpp at line 6, boost/mpl/aux_/preprocessed/bcc_pre590/shift_right.hpp at line 6, boost/mpl/aux_/preprocessed/bcc_pre590/template_arity.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/times.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/unpack_args.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/vector.hpp at line 5, boost/mpl/aux_/preprocessed/bcc_pre590/vector_c.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/advance_backward.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/advance_forward.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/and.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/apply.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/apply_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/apply_wrap.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/arg.hpp at line 6, boost/mpl/aux_/preprocessed/dmc/basic_bind.hpp at line 6, boost/mpl/aux_/preprocessed/dmc/bind.hpp at line 6, boost/mpl/aux_/preprocessed/dmc/bind_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/bitand.hpp at line 6, boost/mpl/aux_/preprocessed/dmc/bitor.hpp at line 6, boost/mpl/aux_/preprocessed/dmc/bitxor.hpp at line 6, boost/mpl/aux_/preprocessed/dmc/deque.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/divides.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/full_lambda.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/greater.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/greater_equal.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/inherit.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/iter_fold_if_impl.hpp at line 6, boost/mpl/aux_/preprocessed/dmc/iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/lambda_no_ctps.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/less.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/less_equal.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/list.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/list_c.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/map.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/minus.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/modulus.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/not_equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/or.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/placeholders.hpp at line 6, boost/mpl/aux_/preprocessed/dmc/plus.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/quote.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/reverse_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/reverse_iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/set.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/set_c.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/shift_left.hpp at line 6, boost/mpl/aux_/preprocessed/dmc/shift_right.hpp at line 6, boost/mpl/aux_/preprocessed/dmc/template_arity.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/times.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/unpack_args.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/vector.hpp at line 5, boost/mpl/aux_/preprocessed/dmc/vector_c.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/advance_backward.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/advance_forward.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/and.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/apply.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/arg.hpp at line 6, boost/mpl/aux_/preprocessed/gcc/basic_bind.hpp at line 6, boost/mpl/aux_/preprocessed/gcc/bind.hpp at line 6, boost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/bitand.hpp at line 6, boost/mpl/aux_/preprocessed/gcc/bitor.hpp at line 6, boost/mpl/aux_/preprocessed/gcc/bitxor.hpp at line 6, boost/mpl/aux_/preprocessed/gcc/deque.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/divides.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/full_lambda.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/greater.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/greater_equal.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/inherit.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp at line 6, boost/mpl/aux_/preprocessed/gcc/iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/less.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/less_equal.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/list.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/list_c.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/map.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/minus.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/modulus.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/not_equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/or.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/placeholders.hpp at line 6, boost/mpl/aux_/preprocessed/gcc/plus.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/quote.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/reverse_iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/set.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/set_c.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/shift_left.hpp at line 6, boost/mpl/aux_/preprocessed/gcc/shift_right.hpp at line 6, boost/mpl/aux_/preprocessed/gcc/template_arity.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/times.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/unpack_args.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/vector.hpp at line 5, boost/mpl/aux_/preprocessed/gcc/vector_c.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/advance_backward.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/advance_forward.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/and.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/apply.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/apply_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/apply_wrap.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/arg.hpp at line 6, boost/mpl/aux_/preprocessed/msvc60/basic_bind.hpp at line 6, boost/mpl/aux_/preprocessed/msvc60/bind.hpp at line 6, boost/mpl/aux_/preprocessed/msvc60/bind_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/bitand.hpp at line 6, boost/mpl/aux_/preprocessed/msvc60/bitor.hpp at line 6, boost/mpl/aux_/preprocessed/msvc60/bitxor.hpp at line 6, boost/mpl/aux_/preprocessed/msvc60/deque.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/divides.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/full_lambda.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/greater.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/greater_equal.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/inherit.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/iter_fold_if_impl.hpp at line 6, boost/mpl/aux_/preprocessed/msvc60/iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/lambda_no_ctps.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/less.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/less_equal.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/list.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/list_c.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/map.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/minus.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/modulus.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/not_equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/or.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/placeholders.hpp at line 6, boost/mpl/aux_/preprocessed/msvc60/plus.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/quote.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/reverse_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/reverse_iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/set.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/set_c.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/shift_left.hpp at line 6, boost/mpl/aux_/preprocessed/msvc60/shift_right.hpp at line 6, boost/mpl/aux_/preprocessed/msvc60/template_arity.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/times.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/unpack_args.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/vector.hpp at line 5, boost/mpl/aux_/preprocessed/msvc60/vector_c.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/advance_backward.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/advance_forward.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/and.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/apply.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/apply_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/apply_wrap.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/arg.hpp at line 6, boost/mpl/aux_/preprocessed/msvc70/basic_bind.hpp at line 6, boost/mpl/aux_/preprocessed/msvc70/bind.hpp at line 6, boost/mpl/aux_/preprocessed/msvc70/bind_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/bitand.hpp at line 6, boost/mpl/aux_/preprocessed/msvc70/bitor.hpp at line 6, boost/mpl/aux_/preprocessed/msvc70/bitxor.hpp at line 6, boost/mpl/aux_/preprocessed/msvc70/deque.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/divides.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/full_lambda.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/greater.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/greater_equal.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/inherit.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/iter_fold_if_impl.hpp at line 6, boost/mpl/aux_/preprocessed/msvc70/iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/lambda_no_ctps.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/less.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/less_equal.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/list.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/list_c.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/map.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/minus.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/modulus.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/not_equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/or.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/placeholders.hpp at line 6, boost/mpl/aux_/preprocessed/msvc70/plus.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/quote.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/reverse_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/reverse_iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/set.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/set_c.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/shift_left.hpp at line 6, boost/mpl/aux_/preprocessed/msvc70/shift_right.hpp at line 6, boost/mpl/aux_/preprocessed/msvc70/template_arity.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/times.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/unpack_args.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/vector.hpp at line 5, boost/mpl/aux_/preprocessed/msvc70/vector_c.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/advance_backward.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/advance_forward.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/and.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/apply.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/apply_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/apply_wrap.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/arg.hpp at line 6, boost/mpl/aux_/preprocessed/mwcw/basic_bind.hpp at line 6, boost/mpl/aux_/preprocessed/mwcw/bind.hpp at line 6, boost/mpl/aux_/preprocessed/mwcw/bind_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/bitand.hpp at line 6, boost/mpl/aux_/preprocessed/mwcw/bitor.hpp at line 6, boost/mpl/aux_/preprocessed/mwcw/bitxor.hpp at line 6, boost/mpl/aux_/preprocessed/mwcw/deque.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/divides.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/full_lambda.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/greater.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/greater_equal.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/inherit.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/iter_fold_if_impl.hpp at line 6, boost/mpl/aux_/preprocessed/mwcw/iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/lambda_no_ctps.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/less.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/less_equal.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/list.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/list_c.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/map.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/minus.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/modulus.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/not_equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/or.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/placeholders.hpp at line 6, boost/mpl/aux_/preprocessed/mwcw/plus.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/quote.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/reverse_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/reverse_iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/set.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/set_c.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/shift_left.hpp at line 6, boost/mpl/aux_/preprocessed/mwcw/shift_right.hpp at line 6, boost/mpl/aux_/preprocessed/mwcw/template_arity.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/times.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/unpack_args.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/vector.hpp at line 5, boost/mpl/aux_/preprocessed/mwcw/vector_c.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/advance_backward.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/advance_forward.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/and.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/apply.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/apply_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/apply_wrap.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/arg.hpp at line 6, boost/mpl/aux_/preprocessed/no_ctps/basic_bind.hpp at line 6, boost/mpl/aux_/preprocessed/no_ctps/bind.hpp at line 6, boost/mpl/aux_/preprocessed/no_ctps/bind_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/bitand.hpp at line 6, boost/mpl/aux_/preprocessed/no_ctps/bitor.hpp at line 6, boost/mpl/aux_/preprocessed/no_ctps/bitxor.hpp at line 6, boost/mpl/aux_/preprocessed/no_ctps/deque.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/divides.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/full_lambda.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/greater.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/greater_equal.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/inherit.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/iter_fold_if_impl.hpp at line 6, boost/mpl/aux_/preprocessed/no_ctps/iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/lambda_no_ctps.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/less.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/less_equal.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/list.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/list_c.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/map.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/minus.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/modulus.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/not_equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/or.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/placeholders.hpp at line 6, boost/mpl/aux_/preprocessed/no_ctps/plus.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/quote.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/reverse_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/reverse_iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/set.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/set_c.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/shift_left.hpp at line 6, boost/mpl/aux_/preprocessed/no_ctps/shift_right.hpp at line 6, boost/mpl/aux_/preprocessed/no_ctps/template_arity.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/times.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/unpack_args.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/vector.hpp at line 5, boost/mpl/aux_/preprocessed/no_ctps/vector_c.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/advance_backward.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/advance_forward.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/and.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/apply.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/apply_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/apply_wrap.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/arg.hpp at line 6, boost/mpl/aux_/preprocessed/no_ttp/basic_bind.hpp at line 6, boost/mpl/aux_/preprocessed/no_ttp/bind.hpp at line 6, boost/mpl/aux_/preprocessed/no_ttp/bind_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/bitand.hpp at line 6, boost/mpl/aux_/preprocessed/no_ttp/bitor.hpp at line 6, boost/mpl/aux_/preprocessed/no_ttp/bitxor.hpp at line 6, boost/mpl/aux_/preprocessed/no_ttp/deque.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/divides.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/full_lambda.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/greater.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/greater_equal.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/inherit.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/iter_fold_if_impl.hpp at line 6, boost/mpl/aux_/preprocessed/no_ttp/iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/lambda_no_ctps.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/less.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/less_equal.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/list.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/list_c.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/map.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/minus.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/modulus.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/not_equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/or.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/placeholders.hpp at line 6, boost/mpl/aux_/preprocessed/no_ttp/plus.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/quote.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/reverse_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/reverse_iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/set.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/set_c.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/shift_left.hpp at line 6, boost/mpl/aux_/preprocessed/no_ttp/shift_right.hpp at line 6, boost/mpl/aux_/preprocessed/no_ttp/template_arity.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/times.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/unpack_args.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/vector.hpp at line 5, boost/mpl/aux_/preprocessed/no_ttp/vector_c.hpp at line 5, boost/mpl/aux_/preprocessed/plain/advance_backward.hpp at line 5, boost/mpl/aux_/preprocessed/plain/advance_forward.hpp at line 5, boost/mpl/aux_/preprocessed/plain/and.hpp at line 5, boost/mpl/aux_/preprocessed/plain/apply.hpp at line 5, boost/mpl/aux_/preprocessed/plain/apply_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/plain/apply_wrap.hpp at line 5, boost/mpl/aux_/preprocessed/plain/arg.hpp at line 6, boost/mpl/aux_/preprocessed/plain/basic_bind.hpp at line 6, boost/mpl/aux_/preprocessed/plain/bind.hpp at line 6, boost/mpl/aux_/preprocessed/plain/bind_fwd.hpp at line 5, boost/mpl/aux_/preprocessed/plain/bitand.hpp at line 6, boost/mpl/aux_/preprocessed/plain/bitor.hpp at line 6, boost/mpl/aux_/preprocessed/plain/bitxor.hpp at line 6, boost/mpl/aux_/preprocessed/plain/deque.hpp at line 5, boost/mpl/aux_/preprocessed/plain/divides.hpp at line 5, boost/mpl/aux_/preprocessed/plain/equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/plain/fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/plain/full_lambda.hpp at line 5, boost/mpl/aux_/preprocessed/plain/greater.hpp at line 5, boost/mpl/aux_/preprocessed/plain/greater_equal.hpp at line 5, boost/mpl/aux_/preprocessed/plain/inherit.hpp at line 5, boost/mpl/aux_/preprocessed/plain/iter_fold_if_impl.hpp at line 6, boost/mpl/aux_/preprocessed/plain/iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/plain/lambda_no_ctps.hpp at line 5, boost/mpl/aux_/preprocessed/plain/less.hpp at line 5, boost/mpl/aux_/preprocessed/plain/less_equal.hpp at line 5, boost/mpl/aux_/preprocessed/plain/list.hpp at line 5, boost/mpl/aux_/preprocessed/plain/list_c.hpp at line 5, boost/mpl/aux_/preprocessed/plain/map.hpp at line 5, boost/mpl/aux_/preprocessed/plain/minus.hpp at line 5, boost/mpl/aux_/preprocessed/plain/modulus.hpp at line 5, boost/mpl/aux_/preprocessed/plain/not_equal_to.hpp at line 5, boost/mpl/aux_/preprocessed/plain/or.hpp at line 5, boost/mpl/aux_/preprocessed/plain/placeholders.hpp at line 6, boost/mpl/aux_/preprocessed/plain/plus.hpp at line 5, boost/mpl/aux_/preprocessed/plain/quote.hpp at line 5, boost/mpl/aux_/preprocessed/plain/reverse_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/plain/reverse_iter_fold_impl.hpp at line 5, boost/mpl/aux_/preprocessed/plain/set.hpp at line 5, boost/mpl/aux_/preprocessed/plain/set_c.hpp at line 5, boost/mpl/aux_/preprocessed/plain/shift_left.hpp at line 6, boost/mpl/aux_/preprocessed/plain/shift_right.hpp at line 6, boost/mpl/aux_/preprocessed/plain/template_arity.hpp at line 5, boost/mpl/aux_/preprocessed/plain/times.hpp at line 5, boost/mpl/aux_/preprocessed/plain/unpack_args.hpp at line 5, boost/mpl/aux_/preprocessed/plain/vector.hpp at line 5, boost/mpl/aux_/preprocessed/plain/vector_c.hpp at line 5, boost/mpl/aux_/preprocessor/add.hpp at line 8, boost/mpl/aux_/preprocessor/def_params_tail.hpp at line 8, boost/mpl/aux_/preprocessor/default_params.hpp at line 8, boost/mpl/aux_/preprocessor/enum.hpp at line 8, boost/mpl/aux_/preprocessor/ext_params.hpp at line 8, boost/mpl/aux_/preprocessor/filter_params.hpp at line 8, boost/mpl/aux_/preprocessor/is_seq.hpp at line 9, boost/mpl/aux_/preprocessor/params.hpp at line 8, boost/mpl/aux_/preprocessor/partial_spec_params.hpp at line 8, boost/mpl/aux_/preprocessor/range.hpp at line 8, boost/mpl/aux_/preprocessor/repeat.hpp at line 8, boost/mpl/aux_/preprocessor/sub.hpp at line 8, boost/mpl/aux_/preprocessor/token_equal.hpp at line 9, boost/mpl/aux_/preprocessor/tuple.hpp at line 8, boost/mpl/aux_/ptr_to_ref.hpp at line 8, boost/mpl/aux_/push_back_impl.hpp at line 8, boost/mpl/aux_/push_front_impl.hpp at line 8, boost/mpl/aux_/range_c/O1_size.hpp at line 8, boost/mpl/aux_/range_c/back.hpp at line 8, boost/mpl/aux_/range_c/empty.hpp at line 8, boost/mpl/aux_/range_c/front.hpp at line 8, boost/mpl/aux_/range_c/iterator.hpp at line 8, boost/mpl/aux_/range_c/size.hpp at line 8, boost/mpl/aux_/range_c/tag.hpp at line 8, boost/mpl/aux_/reverse_fold_impl.hpp at line 8, boost/mpl/aux_/reverse_fold_impl_body.hpp at line 9, boost/mpl/aux_/reverse_iter_fold_impl.hpp at line 8, boost/mpl/aux_/sequence_wrapper.hpp at line 11, boost/mpl/aux_/shift_op.hpp at line 7, boost/mpl/aux_/single_element_iter.hpp at line 8, boost/mpl/aux_/size_impl.hpp at line 8, boost/mpl/aux_/sort_impl.hpp at line 8, boost/mpl/aux_/static_cast.hpp at line 8, boost/mpl/aux_/template_arity.hpp at line 12, boost/mpl/aux_/template_arity_fwd.hpp at line 8, boost/mpl/aux_/test.hpp at line 8, boost/mpl/aux_/test/assert.hpp at line 8, boost/mpl/aux_/test/data.hpp at line 8, boost/mpl/aux_/test/test_case.hpp at line 8, boost/mpl/aux_/traits_lambda_spec.hpp at line 8, boost/mpl/aux_/transform_iter.hpp at line 8, boost/mpl/aux_/type_wrapper.hpp at line 9, boost/mpl/aux_/unwrap.hpp at line 9, boost/mpl/aux_/value_wknd.hpp at line 8, boost/mpl/aux_/yes_no.hpp at line 8, boost/mpl/back.hpp at line 8, boost/mpl/back_fwd.hpp at line 8, boost/mpl/back_inserter.hpp at line 9, boost/mpl/base.hpp at line 8, boost/mpl/begin.hpp at line 8, boost/mpl/begin_end.hpp at line 8, boost/mpl/begin_end_fwd.hpp at line 8, boost/mpl/bind.hpp at line 13, boost/mpl/bind_fwd.hpp at line 12, boost/mpl/bitand.hpp at line 9, boost/mpl/bitor.hpp at line 9, boost/mpl/bitwise.hpp at line 9, boost/mpl/bitxor.hpp at line 9, boost/mpl/bool.hpp at line 8, boost/mpl/bool_fwd.hpp at line 8, boost/mpl/char.hpp at line 8, boost/mpl/char_fwd.hpp at line 8, boost/mpl/clear.hpp at line 8, boost/mpl/clear_fwd.hpp at line 8, boost/mpl/comparison.hpp at line 8, boost/mpl/contains.hpp at line 9, boost/mpl/contains_fwd.hpp at line 9, boost/mpl/copy.hpp at line 9, boost/mpl/copy_if.hpp at line 9, boost/mpl/count.hpp at line 8, boost/mpl/count_fwd.hpp at line 8, boost/mpl/count_if.hpp at line 8, boost/mpl/deque.hpp at line 8, boost/mpl/deref.hpp at line 8, boost/mpl/distance.hpp at line 8, boost/mpl/distance_fwd.hpp at line 8, boost/mpl/divides.hpp at line 8, boost/mpl/empty.hpp at line 8, boost/mpl/empty_base.hpp at line 8, boost/mpl/empty_fwd.hpp at line 8, boost/mpl/empty_sequence.hpp at line 9, boost/mpl/end.hpp at line 8, boost/mpl/equal.hpp at line 8, boost/mpl/equal_to.hpp at line 8, boost/mpl/erase.hpp at line 8, boost/mpl/erase_fwd.hpp at line 8, boost/mpl/erase_key.hpp at line 8, boost/mpl/erase_key_fwd.hpp at line 8, boost/mpl/filter_view.hpp at line 8, boost/mpl/find.hpp at line 8, boost/mpl/find_if.hpp at line 8, boost/mpl/fold.hpp at line 9, boost/mpl/for_each.hpp at line 8, boost/mpl/front.hpp at line 8, boost/mpl/front_fwd.hpp at line 8, boost/mpl/front_inserter.hpp at line 9, boost/mpl/greater.hpp at line 8, boost/mpl/greater_equal.hpp at line 8, boost/mpl/has_key.hpp at line 9, boost/mpl/has_key_fwd.hpp at line 9, boost/mpl/has_xxx.hpp at line 10, boost/mpl/identity.hpp at line 8, boost/mpl/if.hpp at line 8, boost/mpl/index_if.hpp at line 8, boost/mpl/index_of.hpp at line 9, boost/mpl/inherit.hpp at line 12, boost/mpl/inherit_linearly.hpp at line 8, boost/mpl/insert.hpp at line 8, boost/mpl/insert_fwd.hpp at line 8, boost/mpl/insert_range.hpp at line 8, boost/mpl/insert_range_fwd.hpp at line 8, boost/mpl/inserter.hpp at line 9, boost/mpl/int.hpp at line 8, boost/mpl/int_fwd.hpp at line 8, boost/mpl/integral_c.hpp at line 8, boost/mpl/integral_c_fwd.hpp at line 8, boost/mpl/integral_c_tag.hpp at line 8, boost/mpl/is_placeholder.hpp at line 8, boost/mpl/is_sequence.hpp at line 8, boost/mpl/iter_fold.hpp at line 9, boost/mpl/iter_fold_if.hpp at line 9, boost/mpl/iterator_category.hpp at line 8, boost/mpl/iterator_range.hpp at line 8, boost/mpl/iterator_tags.hpp at line 8, boost/mpl/joint_view.hpp at line 8, boost/mpl/key_type.hpp at line 9, boost/mpl/key_type_fwd.hpp at line 9, boost/mpl/lambda.hpp at line 8, boost/mpl/lambda_fwd.hpp at line 8, boost/mpl/less.hpp at line 8, boost/mpl/less_equal.hpp at line 8, boost/mpl/limits/arity.hpp at line 8, boost/mpl/limits/list.hpp at line 8, boost/mpl/limits/map.hpp at line 8, boost/mpl/limits/set.hpp at line 8, boost/mpl/limits/string.hpp at line 8, boost/mpl/limits/unrolling.hpp at line 8, boost/mpl/limits/vector.hpp at line 8, boost/mpl/list.hpp at line 8, boost/mpl/list/aux_/O1_size.hpp at line 8, boost/mpl/list/aux_/begin_end.hpp at line 8, boost/mpl/list/aux_/clear.hpp at line 8, boost/mpl/list/aux_/empty.hpp at line 8, boost/mpl/list/aux_/front.hpp at line 8, boost/mpl/list/aux_/include_preprocessed.hpp at line 5, boost/mpl/list/aux_/item.hpp at line 8, boost/mpl/list/aux_/iterator.hpp at line 8, boost/mpl/list/aux_/numbered.hpp at line 8, boost/mpl/list/aux_/numbered_c.hpp at line 7, boost/mpl/list/aux_/pop_front.hpp at line 8, boost/mpl/list/aux_/preprocessed/plain/list10.hpp at line 5, boost/mpl/list/aux_/preprocessed/plain/list10_c.hpp at line 5, boost/mpl/list/aux_/preprocessed/plain/list20.hpp at line 5, boost/mpl/list/aux_/preprocessed/plain/list20_c.hpp at line 5, boost/mpl/list/aux_/preprocessed/plain/list30.hpp at line 5, boost/mpl/list/aux_/preprocessed/plain/list30_c.hpp at line 5, boost/mpl/list/aux_/preprocessed/plain/list40.hpp at line 5, boost/mpl/list/aux_/preprocessed/plain/list40_c.hpp at line 5, boost/mpl/list/aux_/preprocessed/plain/list50.hpp at line 5, boost/mpl/list/aux_/preprocessed/plain/list50_c.hpp at line 5, boost/mpl/list/aux_/push_back.hpp at line 8, boost/mpl/list/aux_/push_front.hpp at line 8, boost/mpl/list/aux_/size.hpp at line 8, boost/mpl/list/aux_/tag.hpp at line 8, boost/mpl/list/list0.hpp at line 8, boost/mpl/list/list0_c.hpp at line 8, boost/mpl/list/list10.hpp at line 8, boost/mpl/list/list10_c.hpp at line 8, boost/mpl/list/list20.hpp at line 8, boost/mpl/list/list20_c.hpp at line 8, boost/mpl/list/list30.hpp at line 8, boost/mpl/list/list30_c.hpp at line 8, boost/mpl/list/list40.hpp at line 8, boost/mpl/list/list40_c.hpp at line 8, boost/mpl/list/list50.hpp at line 8, boost/mpl/list/list50_c.hpp at line 8, boost/mpl/list_c.hpp at line 8, boost/mpl/logical.hpp at line 8, boost/mpl/long.hpp at line 8, boost/mpl/long_fwd.hpp at line 8, boost/mpl/lower_bound.hpp at line 8, boost/mpl/map.hpp at line 8, boost/mpl/map/aux_/at_impl.hpp at line 9, boost/mpl/map/aux_/begin_end_impl.hpp at line 9, boost/mpl/map/aux_/clear_impl.hpp at line 9, boost/mpl/map/aux_/contains_impl.hpp at line 8, boost/mpl/map/aux_/empty_impl.hpp at line 8, boost/mpl/map/aux_/erase_impl.hpp at line 9, boost/mpl/map/aux_/erase_key_impl.hpp at line 9, boost/mpl/map/aux_/has_key_impl.hpp at line 9, boost/mpl/map/aux_/include_preprocessed.hpp at line 5, boost/mpl/map/aux_/insert_impl.hpp at line 9, boost/mpl/map/aux_/insert_range_impl.hpp at line 8, boost/mpl/map/aux_/item.hpp at line 9, boost/mpl/map/aux_/iterator.hpp at line 9, boost/mpl/map/aux_/key_type_impl.hpp at line 9, boost/mpl/map/aux_/map0.hpp at line 9, boost/mpl/map/aux_/numbered.hpp at line 9, boost/mpl/map/aux_/preprocessed/no_ctps/map10.hpp at line 6, boost/mpl/map/aux_/preprocessed/no_ctps/map20.hpp at line 6, boost/mpl/map/aux_/preprocessed/no_ctps/map30.hpp at line 6, boost/mpl/map/aux_/preprocessed/no_ctps/map40.hpp at line 6, boost/mpl/map/aux_/preprocessed/no_ctps/map50.hpp at line 6, boost/mpl/map/aux_/preprocessed/plain/map10.hpp at line 6, boost/mpl/map/aux_/preprocessed/plain/map20.hpp at line 6, boost/mpl/map/aux_/preprocessed/plain/map30.hpp at line 6, boost/mpl/map/aux_/preprocessed/plain/map40.hpp at line 6, boost/mpl/map/aux_/preprocessed/plain/map50.hpp at line 6, boost/mpl/map/aux_/preprocessed/typeof_based/map10.hpp at line 6, boost/mpl/map/aux_/preprocessed/typeof_based/map20.hpp at line 6, boost/mpl/map/aux_/preprocessed/typeof_based/map30.hpp at line 6, boost/mpl/map/aux_/preprocessed/typeof_based/map40.hpp at line 6, boost/mpl/map/aux_/preprocessed/typeof_based/map50.hpp at line 6, boost/mpl/map/aux_/size_impl.hpp at line 8, boost/mpl/map/aux_/tag.hpp at line 9, boost/mpl/map/aux_/value_type_impl.hpp at line 9, boost/mpl/map/map0.hpp at line 9, boost/mpl/map/map10.hpp at line 9, boost/mpl/map/map20.hpp at line 9, boost/mpl/map/map30.hpp at line 9, boost/mpl/map/map40.hpp at line 9, boost/mpl/map/map50.hpp at line 9, boost/mpl/math/fixed_c.hpp at line 8, boost/mpl/math/is_even.hpp at line 8, boost/mpl/math/rational_c.hpp at line 8, boost/mpl/max.hpp at line 8, boost/mpl/max_element.hpp at line 8, boost/mpl/min.hpp at line 8, boost/mpl/min_element.hpp at line 8, boost/mpl/min_max.hpp at line 8, boost/mpl/minus.hpp at line 8, boost/mpl/modulus.hpp at line 8, boost/mpl/multiplies.hpp at line 8, boost/mpl/multiset/aux_/count_impl.hpp at line 8, boost/mpl/multiset/aux_/insert_impl.hpp at line 8, boost/mpl/multiset/aux_/item.hpp at line 8, boost/mpl/multiset/aux_/multiset0.hpp at line 8, boost/mpl/multiset/aux_/tag.hpp at line 8, boost/mpl/multiset/multiset0.hpp at line 8, boost/mpl/negate.hpp at line 8, boost/mpl/next.hpp at line 8, boost/mpl/next_prior.hpp at line 8, boost/mpl/not.hpp at line 8, boost/mpl/not_equal_to.hpp at line 8, boost/mpl/or.hpp at line 8, boost/mpl/order.hpp at line 9, boost/mpl/order_fwd.hpp at line 9, boost/mpl/pair.hpp at line 8, boost/mpl/pair_view.hpp at line 9, boost/mpl/partition.hpp at line 9, boost/mpl/placeholders.hpp at line 13, boost/mpl/plus.hpp at line 8, boost/mpl/pop_back.hpp at line 8, boost/mpl/pop_back_fwd.hpp at line 8, boost/mpl/pop_front.hpp at line 8, boost/mpl/pop_front_fwd.hpp at line 8, boost/mpl/print.hpp at line 9, boost/mpl/prior.hpp at line 8, boost/mpl/protect.hpp at line 9, boost/mpl/push_back.hpp at line 8, boost/mpl/push_back_fwd.hpp at line 8, boost/mpl/push_front.hpp at line 8, boost/mpl/push_front_fwd.hpp at line 8, boost/mpl/quote.hpp at line 12, boost/mpl/range_c.hpp at line 8, boost/mpl/remove.hpp at line 9, boost/mpl/remove_if.hpp at line 9, boost/mpl/replace.hpp at line 10, boost/mpl/replace_if.hpp at line 10, boost/mpl/reverse.hpp at line 8, boost/mpl/reverse_fold.hpp at line 9, boost/mpl/reverse_iter_fold.hpp at line 9, boost/mpl/same_as.hpp at line 8, boost/mpl/sequence_tag.hpp at line 8, boost/mpl/sequence_tag_fwd.hpp at line 8, boost/mpl/set.hpp at line 8, boost/mpl/set/aux_/at_impl.hpp at line 8, boost/mpl/set/aux_/begin_end_impl.hpp at line 9, boost/mpl/set/aux_/clear_impl.hpp at line 9, boost/mpl/set/aux_/empty_impl.hpp at line 8, boost/mpl/set/aux_/erase_impl.hpp at line 9, boost/mpl/set/aux_/erase_key_impl.hpp at line 9, boost/mpl/set/aux_/has_key_impl.hpp at line 9, boost/mpl/set/aux_/include_preprocessed.hpp at line 7, boost/mpl/set/aux_/insert_impl.hpp at line 9, boost/mpl/set/aux_/insert_range_impl.hpp at line 8, boost/mpl/set/aux_/item.hpp at line 9, boost/mpl/set/aux_/iterator.hpp at line 9, boost/mpl/set/aux_/key_type_impl.hpp at line 9, boost/mpl/set/aux_/numbered.hpp at line 9, boost/mpl/set/aux_/numbered_c.hpp at line 9, boost/mpl/set/aux_/preprocessed/plain/set10.hpp at line 6, boost/mpl/set/aux_/preprocessed/plain/set10_c.hpp at line 6, boost/mpl/set/aux_/preprocessed/plain/set20.hpp at line 6, boost/mpl/set/aux_/preprocessed/plain/set20_c.hpp at line 6, boost/mpl/set/aux_/preprocessed/plain/set30.hpp at line 6, boost/mpl/set/aux_/preprocessed/plain/set30_c.hpp at line 6, boost/mpl/set/aux_/preprocessed/plain/set40.hpp at line 6, boost/mpl/set/aux_/preprocessed/plain/set40_c.hpp at line 6, boost/mpl/set/aux_/preprocessed/plain/set50.hpp at line 6, boost/mpl/set/aux_/preprocessed/plain/set50_c.hpp at line 6, boost/mpl/set/aux_/set0.hpp at line 9, boost/mpl/set/aux_/size_impl.hpp at line 8, boost/mpl/set/aux_/tag.hpp at line 9, boost/mpl/set/aux_/value_type_impl.hpp at line 9, boost/mpl/set/set0.hpp at line 9, boost/mpl/set/set0_c.hpp at line 9, boost/mpl/set/set10.hpp at line 9, boost/mpl/set/set10_c.hpp at line 9, boost/mpl/set/set20.hpp at line 9, boost/mpl/set/set20_c.hpp at line 9, boost/mpl/set/set30.hpp at line 9, boost/mpl/set/set30_c.hpp at line 9, boost/mpl/set/set40.hpp at line 9, boost/mpl/set/set40_c.hpp at line 9, boost/mpl/set/set50.hpp at line 9, boost/mpl/set/set50_c.hpp at line 9, boost/mpl/set_c.hpp at line 8, boost/mpl/shift_left.hpp at line 9, boost/mpl/shift_right.hpp at line 9, boost/mpl/single_view.hpp at line 8, boost/mpl/size.hpp at line 8, boost/mpl/size_fwd.hpp at line 8, boost/mpl/size_t.hpp at line 8, boost/mpl/size_t_fwd.hpp at line 8, boost/mpl/sizeof.hpp at line 8, boost/mpl/sort.hpp at line 9, boost/mpl/stable_partition.hpp at line 9, boost/mpl/switch.hpp at line 8, boost/mpl/tag.hpp at line 8, boost/mpl/times.hpp at line 8, boost/mpl/transform.hpp at line 9, boost/mpl/transform_view.hpp at line 8, boost/mpl/unique.hpp at line 9, boost/mpl/unpack_args.hpp at line 12, boost/mpl/upper_bound.hpp at line 8, boost/mpl/value_type.hpp at line 9, boost/mpl/value_type_fwd.hpp at line 9, boost/mpl/vector.hpp at line 8, boost/mpl/vector/aux_/O1_size.hpp at line 8, boost/mpl/vector/aux_/at.hpp at line 8, boost/mpl/vector/aux_/back.hpp at line 8, boost/mpl/vector/aux_/begin_end.hpp at line 8, boost/mpl/vector/aux_/clear.hpp at line 8, boost/mpl/vector/aux_/empty.hpp at line 8, boost/mpl/vector/aux_/front.hpp at line 8, boost/mpl/vector/aux_/include_preprocessed.hpp at line 7, boost/mpl/vector/aux_/item.hpp at line 8, boost/mpl/vector/aux_/iterator.hpp at line 8, boost/mpl/vector/aux_/numbered.hpp at line 9, boost/mpl/vector/aux_/numbered_c.hpp at line 9, boost/mpl/vector/aux_/pop_back.hpp at line 8, boost/mpl/vector/aux_/pop_front.hpp at line 8, boost/mpl/vector/aux_/preprocessed/no_ctps/vector10.hpp at line 5, boost/mpl/vector/aux_/preprocessed/no_ctps/vector10_c.hpp at line 5, boost/mpl/vector/aux_/preprocessed/no_ctps/vector20.hpp at line 5, boost/mpl/vector/aux_/preprocessed/no_ctps/vector20_c.hpp at line 5, boost/mpl/vector/aux_/preprocessed/no_ctps/vector30.hpp at line 5, boost/mpl/vector/aux_/preprocessed/no_ctps/vector30_c.hpp at line 5, boost/mpl/vector/aux_/preprocessed/no_ctps/vector40.hpp at line 5, boost/mpl/vector/aux_/preprocessed/no_ctps/vector40_c.hpp at line 5, boost/mpl/vector/aux_/preprocessed/no_ctps/vector50.hpp at line 5, boost/mpl/vector/aux_/preprocessed/no_ctps/vector50_c.hpp at line 5, boost/mpl/vector/aux_/preprocessed/plain/vector10.hpp at line 5, boost/mpl/vector/aux_/preprocessed/plain/vector10_c.hpp at line 5, boost/mpl/vector/aux_/preprocessed/plain/vector20.hpp at line 5, boost/mpl/vector/aux_/preprocessed/plain/vector20_c.hpp at line 5, boost/mpl/vector/aux_/preprocessed/plain/vector30.hpp at line 5, boost/mpl/vector/aux_/preprocessed/plain/vector30_c.hpp at line 5, boost/mpl/vector/aux_/preprocessed/plain/vector40.hpp at line 5, boost/mpl/vector/aux_/preprocessed/plain/vector40_c.hpp at line 5, boost/mpl/vector/aux_/preprocessed/plain/vector50.hpp at line 5, boost/mpl/vector/aux_/preprocessed/plain/vector50_c.hpp at line 5, boost/mpl/vector/aux_/preprocessed/typeof_based/vector10.hpp at line 5, boost/mpl/vector/aux_/preprocessed/typeof_based/vector10_c.hpp at line 5, boost/mpl/vector/aux_/preprocessed/typeof_based/vector20.hpp at line 5, boost/mpl/vector/aux_/preprocessed/typeof_based/vector20_c.hpp at line 5, boost/mpl/vector/aux_/preprocessed/typeof_based/vector30.hpp at line 5, boost/mpl/vector/aux_/preprocessed/typeof_based/vector30_c.hpp at line 5, boost/mpl/vector/aux_/preprocessed/typeof_based/vector40.hpp at line 5, boost/mpl/vector/aux_/preprocessed/typeof_based/vector40_c.hpp at line 5, boost/mpl/vector/aux_/preprocessed/typeof_based/vector50.hpp at line 5, boost/mpl/vector/aux_/preprocessed/typeof_based/vector50_c.hpp at line 5, boost/mpl/vector/aux_/push_back.hpp at line 8, boost/mpl/vector/aux_/push_front.hpp at line 8, boost/mpl/vector/aux_/size.hpp at line 8, boost/mpl/vector/aux_/tag.hpp at line 8, boost/mpl/vector/aux_/vector0.hpp at line 8, boost/mpl/vector/vector0.hpp at line 8, boost/mpl/vector/vector0_c.hpp at line 8, boost/mpl/vector/vector10.hpp at line 8, boost/mpl/vector/vector10_c.hpp at line 8, boost/mpl/vector/vector20.hpp at line 8, boost/mpl/vector/vector20_c.hpp at line 8, boost/mpl/vector/vector30.hpp at line 8, boost/mpl/vector/vector30_c.hpp at line 8, boost/mpl/vector/vector40.hpp at line 8, boost/mpl/vector/vector40_c.hpp at line 8, boost/mpl/vector/vector50.hpp at line 8, boost/mpl/vector/vector50_c.hpp at line 8, boost/mpl/vector_c.hpp at line 8, boost/mpl/void.hpp at line 8, boost/mpl/void_fwd.hpp at line 8, boost/property_tree/detail/exception_implementation.hpp at line 6, boost/property_tree/detail/file_parser_error.hpp at line 5, boost/property_tree/detail/info_parser_error.hpp at line 5, boost/property_tree/detail/info_parser_read.hpp at line 5, boost/property_tree/detail/info_parser_utils.hpp at line 5, boost/property_tree/detail/info_parser_write.hpp at line 5, boost/property_tree/detail/info_parser_writer_settings.hpp at line 6, boost/property_tree/detail/ptree_utils.hpp at line 5, boost/property_tree/detail/rapidxml.hpp at line 5, boost/property_tree/detail/xml_parser_error.hpp at line 5, boost/property_tree/detail/xml_parser_flags.hpp at line 5, boost/property_tree/detail/xml_parser_read_rapidxml.hpp at line 5, boost/property_tree/detail/xml_parser_utils.hpp at line 5, boost/property_tree/detail/xml_parser_write.hpp at line 6, boost/property_tree/detail/xml_parser_writer_settings.hpp at line 6, boost/property_tree/exceptions.hpp at line 6, boost/property_tree/id_translator.hpp at line 5, boost/property_tree/info_parser.hpp at line 5, boost/property_tree/ini_parser.hpp at line 6, boost/property_tree/json_parser.hpp at line 6, boost/property_tree/json_parser/detail/read.hpp at line 5, boost/property_tree/json_parser/detail/write.hpp at line 5, boost/property_tree/json_parser/error.hpp at line 5, boost/property_tree/ptree.hpp at line 6, boost/property_tree/ptree_fwd.hpp at line 6, boost/property_tree/ptree_serialization.hpp at line 5, boost/property_tree/stream_translator.hpp at line 5, boost/property_tree/string_path.hpp at line 5, boost/property_tree/xml_parser.hpp at line 6, boost/range/atl.hpp at line 11, boost/range/detail/microsoft.hpp at line 8, boost/range/mfc.hpp at line 11, boost/type_traits/detail/bool_trait_def.hpp at line 7, boost/type_traits/detail/bool_trait_undef.hpp at line 7, boost/type_traits/detail/template_arity_spec.hpp at line 6
+ License text:
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 92.86
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/uuid/detail/random_provider_arc4random.ipp [4:5]
-
-KEEP BSL-1.0 d2c1802e562226f7f860cad601ecc23e
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/core/demangle.hpp at line 10, boost/core/is_same.hpp at line 15, boost/core/lightweight_test_trait.hpp at line 17
- License text:
- // Distributed under the Boost Software License, Version 1.0.
- // See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/core/demangle.hpp [9:11]
- boost/core/is_same.hpp [14:16]
- boost/core/lightweight_test_trait.hpp [16:18]
-
-KEEP BSL-1.0 d2c8a44919aa32341a7db67f113f3186
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/concurrent_queues/detail/sync_deque_base.hpp at line 8, boost/thread/concurrent_queues/detail/sync_queue_base.hpp at line 8
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/thread/concurrent_queues/detail/sync_deque_base.hpp [6:8]
- boost/thread/concurrent_queues/detail/sync_queue_base.hpp [6:8]
-
-KEEP BSL-1.0 d2e8e36a364746befb04b885a12a1e24
-BELONGS libs/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/mpl/aux_/begin_end_impl.hpp at line 8, boost/mpl/zip_view.hpp at line 9, libs/test/src/test_framework_init_observer.cpp at line 3
- License text:
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/mpl/aux_/begin_end_impl.hpp [7:9]
- boost/mpl/zip_view.hpp [8:10]
- libs/test/src/test_framework_init_observer.cpp [2:4]
-
-KEEP BSL-1.0 d398f407edc1c91c48f2e7613f7602d5
-BELONGS libs/context/ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: libs/context/src/asm/jump_i386_ms_pe_gas.asm at line 5, libs/context/src/asm/jump_x86_64_ms_pe_gas.asm at line 5, libs/context/src/asm/jump_x86_64_sysv_elf_gas.S at line 4, libs/context/src/asm/jump_x86_64_sysv_macho_gas.S at line 4, libs/context/src/asm/make_i386_ms_pe_gas.asm at line 5, libs/context/src/asm/make_x86_64_ms_pe_gas.asm at line 5, libs/context/src/asm/make_x86_64_sysv_elf_gas.S at line 4, libs/context/src/asm/make_x86_64_sysv_macho_gas.S at line 4, libs/context/src/asm/ontop_i386_ms_pe_gas.asm at line 5, libs/context/src/asm/ontop_x86_64_ms_pe_gas.asm at line 5, libs/context/src/asm/ontop_x86_64_sysv_elf_gas.S at line 4, libs/context/src/asm/ontop_x86_64_sysv_macho_gas.S at line 4
- License text:
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- libs/context/src/asm/jump_i386_ms_pe_gas.asm [4:6]
- libs/context/src/asm/jump_x86_64_ms_pe_gas.asm [4:6]
- libs/context/src/asm/jump_x86_64_sysv_elf_gas.S [3:5]
- libs/context/src/asm/jump_x86_64_sysv_macho_gas.S [3:5]
- libs/context/src/asm/make_i386_ms_pe_gas.asm [4:6]
- libs/context/src/asm/make_x86_64_ms_pe_gas.asm [4:6]
- libs/context/src/asm/make_x86_64_sysv_elf_gas.S [3:5]
- libs/context/src/asm/make_x86_64_sysv_macho_gas.S [3:5]
- libs/context/src/asm/ontop_i386_ms_pe_gas.asm [4:6]
- libs/context/src/asm/ontop_x86_64_ms_pe_gas.asm [4:6]
- libs/context/src/asm/ontop_x86_64_sysv_elf_gas.S [3:5]
- libs/context/src/asm/ontop_x86_64_sysv_macho_gas.S [3:5]
-
-KEEP BSL-1.0 d3e1fafd8c6aeea1c3c9ddcfd13b5fc4
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/tail.hpp at line 6, boost/accumulators/statistics/tail_variate.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/accumulators/statistics/tail.hpp [4:6]
- boost/accumulators/statistics/tail_variate.hpp [4:6]
-
-KEEP BSL-1.0 d4d0d34f805f5eee001a987f1e04a4a4
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/detail/config_external_begin.hpp at line 5, boost/interprocess/detail/config_external_end.hpp at line 5, boost/interprocess/sync/detail/condition_any_algorithm.hpp at line 5, boost/interprocess/sync/detail/locks.hpp at line 5, boost/interprocess/sync/interprocess_condition_any.hpp at line 5, boost/move/detail/config_begin.hpp at line 5, boost/move/detail/config_end.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2012-2012. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/interprocess/detail/config_external_begin.hpp [3:5]
- boost/interprocess/detail/config_external_end.hpp [3:5]
- boost/interprocess/sync/detail/condition_any_algorithm.hpp [3:5]
- boost/interprocess/sync/detail/locks.hpp [3:5]
- boost/interprocess/sync/interprocess_condition_any.hpp [3:5]
- boost/move/detail/config_begin.hpp [3:5]
- boost/move/detail/config_end.hpp [3:5]
-
-KEEP BSL-1.0 d57c02a6cdaa26d1c644f290e8569503
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/void_cast.hpp at line 14, boost/serialization/void_cast_fwd.hpp at line 14
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 94.74
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/serialization/void_cast.hpp [13:18]
- boost/serialization/void_cast_fwd.hpp [13:18]
-
-KEEP BSL-1.0 d5856aeb5be655b8e7149bd70f048333
-BELONGS ya.make
- License text:
- // Distributed under the Boost Software License, Version 1.0.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/endian/std_pair.hpp [5:5]
-
-KEEP BSL-1.0 d5ae6e3c2dad0c6e4008b1526b2291dd
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/parameter/aux_/arg_list.hpp at line 3, boost/parameter/aux_/default.hpp at line 3, boost/parameter/aux_/parameter_requirements.hpp at line 3, boost/parameter/aux_/tagged_argument.hpp at line 3, boost/parameter/aux_/unwrap_cv_reference.hpp at line 3, boost/parameter/aux_/void.hpp at line 3, boost/parameter/aux_/yesno.hpp at line 3, boost/parameter/config.hpp at line 3, boost/parameter/keyword.hpp at line 3
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/parameter/aux_/arg_list.hpp [1:4]
- boost/parameter/aux_/default.hpp [1:4]
- boost/parameter/aux_/parameter_requirements.hpp [1:4]
- boost/parameter/aux_/tagged_argument.hpp [1:4]
- boost/parameter/aux_/unwrap_cv_reference.hpp [1:4]
- boost/parameter/aux_/void.hpp [1:4]
- boost/parameter/aux_/yesno.hpp [1:4]
- boost/parameter/config.hpp [1:4]
- boost/parameter/keyword.hpp [1:4]
-
-KEEP BSL-1.0 d61752484f220755bd1f5e838c59307b
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/detail/addressof.hpp at line 5, boost/container/detail/alloc_helpers.hpp at line 5, boost/container/detail/iterator_to_raw_pointer.hpp at line 5, boost/container/detail/next_capacity.hpp at line 5, boost/container/detail/placement_new.hpp at line 7, boost/container/new_allocator.hpp at line 5, boost/interprocess/detail/nothrow.hpp at line 5, boost/interprocess/detail/simple_swap.hpp at line 7, boost/interprocess/detail/std_fwd.hpp at line 5, boost/move/detail/iterator_to_raw_pointer.hpp at line 5, boost/move/detail/placement_new.hpp at line 7
- License text:
- // (C) Copyright Ion Gaztanaga 2014-2015. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/container/detail/addressof.hpp [3:5]
- boost/container/detail/alloc_helpers.hpp [3:5]
- boost/container/detail/iterator_to_raw_pointer.hpp [3:5]
- boost/container/detail/next_capacity.hpp [3:5]
- boost/container/detail/placement_new.hpp [5:7]
- boost/container/new_allocator.hpp [3:5]
- boost/interprocess/detail/nothrow.hpp [3:5]
- boost/interprocess/detail/simple_swap.hpp [5:7]
- boost/interprocess/detail/std_fwd.hpp [3:5]
- boost/move/detail/iterator_to_raw_pointer.hpp [3:5]
- boost/move/detail/placement_new.hpp [5:7]
-
-KEEP Zlib d7d091c33e6a568a05ce9a60ee1f64e2
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: Zlib
- Score : 100.00
- Match type : TEXT
- Links : http://www.gzip.org/zlib/zlib_license.html, http://www.zlib.net/, https://spdx.org/licenses/Zlib
- Files with this license:
- boost/beast/zlib/deflate_stream.hpp [31:48]
- boost/beast/zlib/detail/bitstream.hpp [13:30]
- boost/beast/zlib/detail/deflate_stream.hpp [13:30]
- boost/beast/zlib/detail/inflate_stream.hpp [13:30]
- boost/beast/zlib/detail/ranges.hpp [13:30]
- boost/beast/zlib/detail/window.hpp [13:30]
- boost/beast/zlib/error.hpp [24:41]
- boost/beast/zlib/impl/error.ipp [13:30]
- boost/beast/zlib/inflate_stream.hpp [20:37]
- boost/beast/zlib/zlib.hpp [21:38]
-
-KEEP BSL-1.0 d7f87ea2cced5bb8dd0a81e515f54c30
-BELONGS libs/chrono/ya.make libs/system/ya.make libs/thread/ya.make libs/timer/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/chrono/ceil.hpp at line 7, boost/chrono/config.hpp at line 8, boost/chrono/floor.hpp at line 7, boost/chrono/io/utility/ios_base_state_ptr.hpp at line 6, boost/chrono/io/utility/manip_base.hpp at line 6, boost/chrono/round.hpp at line 7, boost/detail/identifier.hpp at line 6, boost/endian/detail/cover_operators.hpp at line 7, boost/math/complex/acos.hpp at line 3, boost/math/complex/asin.hpp at line 3, boost/spirit/home/karma.hpp at line 4, boost/spirit/home/karma/action/action.hpp at line 4, boost/spirit/home/karma/auto.hpp at line 4, boost/spirit/home/karma/auto/auto.hpp at line 4, boost/spirit/home/karma/auto/create_generator.hpp at line 4, boost/spirit/home/karma/auto/meta_create.hpp at line 4, boost/spirit/home/karma/auxiliary/attr_cast.hpp at line 4, boost/spirit/home/karma/auxiliary/eps.hpp at line 4, boost/spirit/home/karma/binary/binary.hpp at line 4, boost/spirit/home/karma/char/char.hpp at line 5, boost/spirit/home/karma/char/char_class.hpp at line 4, boost/spirit/home/karma/char/char_generator.hpp at line 5, boost/spirit/home/karma/delimit_out.hpp at line 4, boost/spirit/home/karma/detail/alternative_function.hpp at line 5, boost/spirit/home/karma/detail/as.hpp at line 4, boost/spirit/home/karma/detail/attributes.hpp at line 5, boost/spirit/home/karma/detail/default_width.hpp at line 4, boost/spirit/home/karma/detail/enable_lit.hpp at line 4, boost/spirit/home/karma/detail/extract_from.hpp at line 4, boost/spirit/home/karma/detail/indirect_iterator.hpp at line 4, boost/spirit/home/karma/detail/unused_delimiter.hpp at line 4, boost/spirit/home/karma/directive/as.hpp at line 5, boost/spirit/home/karma/directive/buffer.hpp at line 4, boost/spirit/home/karma/directive/center_alignment.hpp at line 4, boost/spirit/home/karma/directive/columns.hpp at line 4, boost/spirit/home/karma/directive/delimit.hpp at line 4, boost/spirit/home/karma/directive/duplicate.hpp at line 4, boost/spirit/home/karma/directive/encoding.hpp at line 5, boost/spirit/home/karma/directive/left_alignment.hpp at line 4, boost/spirit/home/karma/directive/maxwidth.hpp at line 4, boost/spirit/home/karma/directive/omit.hpp at line 4, boost/spirit/home/karma/directive/repeat.hpp at line 5, boost/spirit/home/karma/directive/right_alignment.hpp at line 4, boost/spirit/home/karma/domain.hpp at line 5, boost/spirit/home/karma/format.hpp at line 4, boost/spirit/home/karma/format_auto.hpp at line 4, boost/spirit/home/karma/nonterminal/debug_handler.hpp at line 5, boost/spirit/home/karma/nonterminal/debug_handler_state.hpp at line 4, boost/spirit/home/karma/nonterminal/rule.hpp at line 5, boost/spirit/home/karma/nonterminal/simple_trace.hpp at line 5, boost/spirit/home/karma/numeric/bool.hpp at line 4, boost/spirit/home/karma/numeric/detail/numeric_utils.hpp at line 4, boost/spirit/home/karma/numeric/int.hpp at line 4, boost/spirit/home/karma/numeric/real.hpp at line 4, boost/spirit/home/karma/numeric/uint.hpp at line 4, boost/spirit/home/karma/operator/alternative.hpp at line 5, boost/spirit/home/karma/operator/and_predicate.hpp at line 5, boost/spirit/home/karma/operator/kleene.hpp at line 5, boost/spirit/home/karma/operator/list.hpp at line 5, boost/spirit/home/karma/operator/not_predicate.hpp at line 5, boost/spirit/home/karma/operator/optional.hpp at line 5, boost/spirit/home/karma/operator/plus.hpp at line 5, boost/spirit/home/karma/operator/sequence.hpp at line 5, boost/spirit/home/karma/stream.hpp at line 4, boost/spirit/home/karma/stream/stream.hpp at line 4, boost/spirit/home/karma/string/lit.hpp at line 5, boost/spirit/home/karma/string/symbols.hpp at line 4, boost/spirit/home/lex/lexer/lexertl/generate_static.hpp at line 5, boost/spirit/home/lex/lexer/lexertl/lexer.hpp at line 4, boost/spirit/home/lex/qi/plain_raw_token.hpp at line 4, boost/spirit/home/lex/qi/plain_token.hpp at line 4, boost/spirit/home/lex/qi/plain_tokenid.hpp at line 4, boost/spirit/home/lex/qi/plain_tokenid_mask.hpp at line 4, boost/spirit/home/lex/qi/state_switcher.hpp at line 5, boost/spirit/home/qi/auto/auto.hpp at line 4, boost/spirit/home/qi/auto/create_parser.hpp at line 4, boost/spirit/home/qi/auto/meta_create.hpp at line 4, boost/spirit/home/qi/auxiliary/attr_cast.hpp at line 4, boost/spirit/home/qi/detail/attributes.hpp at line 5, boost/spirit/home/qi/detail/enable_lit.hpp at line 4, boost/spirit/home/qi/detail/unused_skipper.hpp at line 4, boost/spirit/home/qi/match.hpp at line 4, boost/spirit/home/qi/match_auto.hpp at line 4, boost/spirit/home/support/adapt_adt_attributes.hpp at line 4, boost/spirit/home/support/assert_msg.hpp at line 4, boost/spirit/home/support/auto/meta_create.hpp at line 4, boost/spirit/home/support/auxiliary/attr_cast.hpp at line 4, boost/spirit/home/support/detail/endian.hpp at line 5, boost/spirit/home/support/detail/endian/cover_operators.hpp at line 7, boost/spirit/home/support/detail/get_encoding.hpp at line 5, boost/spirit/home/support/detail/scoped_enum_emulation.hpp at line 5, boost/spirit/home/support/iterators/detail/buf_id_check_policy.hpp at line 5, boost/spirit/home/support/iterators/detail/buffering_input_iterator_policy.hpp at line 5, boost/spirit/home/support/iterators/detail/combine_policies.hpp at line 4, boost/spirit/home/support/iterators/detail/first_owner_policy.hpp at line 5, boost/spirit/home/support/iterators/detail/fixed_size_queue.hpp at line 5, boost/spirit/home/support/iterators/detail/fixed_size_queue_policy.hpp at line 5, boost/spirit/home/support/iterators/detail/functor_input_policy.hpp at line 4, boost/spirit/home/support/iterators/detail/input_iterator_policy.hpp at line 5, boost/spirit/home/support/iterators/detail/istream_policy.hpp at line 5, boost/spirit/home/support/iterators/detail/lex_input_policy.hpp at line 5, boost/spirit/home/support/iterators/detail/multi_pass.hpp at line 5, boost/spirit/home/support/iterators/detail/no_check_policy.hpp at line 5, boost/spirit/home/support/iterators/detail/ref_counted_policy.hpp at line 5, boost/spirit/home/support/iterators/detail/split_functor_input_policy.hpp at line 4, boost/spirit/home/support/iterators/detail/split_std_deque_policy.hpp at line 5, boost/spirit/home/support/iterators/istream_iterator.hpp at line 4, boost/spirit/home/support/iterators/look_ahead.hpp at line 6, boost/spirit/home/support/iterators/multi_pass.hpp at line 6, boost/spirit/home/support/iterators/ostream_iterator.hpp at line 4, boost/spirit/home/support/limits.hpp at line 4, boost/spirit/home/support/multi_pass.hpp at line 4, boost/spirit/home/support/numeric_traits.hpp at line 4, boost/spirit/repository/home/karma.hpp at line 5, boost/spirit/repository/home/karma/directive.hpp at line 5, boost/spirit/repository/home/karma/nonterminal.hpp at line 6, boost/spirit/repository/home/karma/nonterminal/subrule.hpp at line 6, boost/spirit/repository/home/qi.hpp at line 5, boost/spirit/repository/home/qi/directive.hpp at line 5, boost/spirit/repository/home/qi/directive/distinct.hpp at line 6, boost/spirit/repository/home/qi/nonterminal.hpp at line 6, boost/spirit/repository/home/qi/operator.hpp at line 6, boost/spirit/repository/home/qi/primitive.hpp at line 5, boost/spirit/repository/home/qi/primitive/advance.hpp at line 4, boost/system/config.hpp at line 6, boost/system/cygwin_error.hpp at line 6, boost/system/detail/error_code.ipp at line 6, boost/system/error_code.hpp at line 8, boost/system/linux_error.hpp at line 6, boost/system/system_error.hpp at line 6, boost/system/windows_error.hpp at line 6, boost/thread/barrier.hpp at line 7, boost/thread/concurrent_queues/sync_priority_queue.hpp at line 5, boost/thread/concurrent_queues/sync_timed_queue.hpp at line 5, boost/thread/csbl/deque.hpp at line 4, boost/thread/csbl/devector.hpp at line 4, boost/thread/csbl/functional.hpp at line 4, boost/thread/csbl/list.hpp at line 4, boost/thread/csbl/memory.hpp at line 4, boost/thread/csbl/memory/allocator_arg.hpp at line 4, boost/thread/csbl/memory/allocator_traits.hpp at line 4, boost/thread/csbl/memory/config.hpp at line 4, boost/thread/csbl/memory/default_delete.hpp at line 4, boost/thread/csbl/memory/pointer_traits.hpp at line 4, boost/thread/csbl/memory/scoped_allocator.hpp at line 4, boost/thread/csbl/memory/shared_ptr.hpp at line 4, boost/thread/csbl/memory/unique_ptr.hpp at line 4, boost/thread/csbl/queue.hpp at line 4, boost/thread/csbl/tuple.hpp at line 4, boost/thread/csbl/vector.hpp at line 4, boost/thread/detail/atomic_redef_macros.hpp at line 4, boost/thread/detail/atomic_undef_macros.hpp at line 4, boost/thread/detail/config.hpp at line 6, boost/thread/detail/delete.hpp at line 4, boost/thread/detail/function_wrapper.hpp at line 4, boost/thread/detail/invoke.hpp at line 4, boost/thread/detail/invoker.hpp at line 4, boost/thread/detail/is_convertible.hpp at line 6, boost/thread/detail/log.hpp at line 4, boost/thread/detail/make_tuple_indices.hpp at line 4, boost/thread/detail/memory.hpp at line 6, boost/thread/detail/nullary_function.hpp at line 4, boost/thread/detail/variadic_footer.hpp at line 4, boost/thread/detail/variadic_header.hpp at line 4, boost/thread/exceptions.hpp at line 7, boost/thread/executor.hpp at line 4, boost/thread/executors/basic_thread_pool.hpp at line 4, boost/thread/executors/detail/priority_executor_base.hpp at line 5, boost/thread/executors/detail/scheduled_executor_base.hpp at line 5, boost/thread/executors/executor.hpp at line 4, boost/thread/executors/executor_adaptor.hpp at line 4, boost/thread/executors/generic_executor_ref.hpp at line 4, boost/thread/executors/inline_executor.hpp at line 4, boost/thread/executors/loop_executor.hpp at line 4, boost/thread/executors/scheduled_thread_pool.hpp at line 5, boost/thread/executors/scheduler.hpp at line 4, boost/thread/executors/scheduling_adaptor.hpp at line 5, boost/thread/executors/serial_executor.hpp at line 4, boost/thread/executors/serial_executor_cont.hpp at line 4, boost/thread/executors/thread_executor.hpp at line 4, boost/thread/lock_concepts.hpp at line 4, boost/thread/lockable_concepts.hpp at line 4, boost/thread/thread_pool.hpp at line 4, boost/thread/user_scheduler.hpp at line 4, boost/thread/xtime.hpp at line 6, libs/chrono/stopwatches/include/boost/chrono/stopwatches/dont_start.hpp at line 4, libs/chrono/stopwatches/include/boost/chrono/stopwatches/laps_stopwatch.hpp at line 5, libs/chrono/stopwatches/include/boost/chrono/stopwatches/simple_stopwatch.hpp at line 5, libs/chrono/stopwatches/include/boost/chrono/stopwatches/stopwatch.hpp at line 5, libs/chrono/stopwatches/include/boost/chrono/stopwatches/stopwatch_scoped.hpp at line 4, libs/chrono/stopwatches/include/boost/chrono/stopwatches/strict_stopwatch.hpp at line 5, libs/chrono/stopwatches/include/boost/chrono/stopwatches/suspendable_stopwatch.hpp at line 4, libs/system/src/error_code.cpp at line 6, libs/thread/src/pthread/once.cpp at line 4, libs/thread/src/pthread/once_atomic.cpp at line 5, libs/thread/src/pthread/thread.cpp at line 7, libs/timer/src/cpu_timer.cpp at line 6
- License text:
- // Distributed under the Boost Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/chrono/ceil.hpp [6:7]
- boost/chrono/config.hpp [7:8]
- boost/chrono/floor.hpp [6:7]
- boost/chrono/io/utility/ios_base_state_ptr.hpp [5:6]
- boost/chrono/io/utility/manip_base.hpp [5:6]
- boost/chrono/round.hpp [6:7]
- boost/detail/identifier.hpp [5:6]
- boost/endian/detail/cover_operators.hpp [6:7]
- boost/math/complex/acos.hpp [2:3]
- boost/math/complex/asin.hpp [2:3]
- boost/spirit/home/karma.hpp [3:4]
- boost/spirit/home/karma/action/action.hpp [3:4]
- boost/spirit/home/karma/auto.hpp [3:4]
- boost/spirit/home/karma/auto/auto.hpp [3:4]
- boost/spirit/home/karma/auto/create_generator.hpp [3:4]
- boost/spirit/home/karma/auto/meta_create.hpp [3:4]
- boost/spirit/home/karma/auxiliary/attr_cast.hpp [3:4]
- boost/spirit/home/karma/auxiliary/eps.hpp [3:4]
- boost/spirit/home/karma/binary/binary.hpp [3:4]
- boost/spirit/home/karma/char/char.hpp [4:5]
- boost/spirit/home/karma/char/char_class.hpp [3:4]
- boost/spirit/home/karma/char/char_generator.hpp [4:5]
- boost/spirit/home/karma/delimit_out.hpp [3:4]
- boost/spirit/home/karma/detail/alternative_function.hpp [4:5]
- boost/spirit/home/karma/detail/as.hpp [3:4]
- boost/spirit/home/karma/detail/attributes.hpp [4:5]
- boost/spirit/home/karma/detail/default_width.hpp [3:4]
- boost/spirit/home/karma/detail/enable_lit.hpp [3:4]
- boost/spirit/home/karma/detail/extract_from.hpp [3:4]
- boost/spirit/home/karma/detail/indirect_iterator.hpp [3:4]
- boost/spirit/home/karma/detail/unused_delimiter.hpp [3:4]
- boost/spirit/home/karma/directive/as.hpp [4:5]
- boost/spirit/home/karma/directive/buffer.hpp [3:4]
- boost/spirit/home/karma/directive/center_alignment.hpp [3:4]
- boost/spirit/home/karma/directive/columns.hpp [3:4]
- boost/spirit/home/karma/directive/delimit.hpp [3:4]
- boost/spirit/home/karma/directive/duplicate.hpp [3:4]
- boost/spirit/home/karma/directive/encoding.hpp [4:5]
- boost/spirit/home/karma/directive/left_alignment.hpp [3:4]
- boost/spirit/home/karma/directive/maxwidth.hpp [3:4]
- boost/spirit/home/karma/directive/omit.hpp [3:4]
- boost/spirit/home/karma/directive/repeat.hpp [4:5]
- boost/spirit/home/karma/directive/right_alignment.hpp [3:4]
- boost/spirit/home/karma/domain.hpp [4:5]
- boost/spirit/home/karma/format.hpp [3:4]
- boost/spirit/home/karma/format_auto.hpp [3:4]
- boost/spirit/home/karma/nonterminal/debug_handler.hpp [4:5]
- boost/spirit/home/karma/nonterminal/debug_handler_state.hpp [3:4]
- boost/spirit/home/karma/nonterminal/rule.hpp [4:5]
- boost/spirit/home/karma/nonterminal/simple_trace.hpp [4:5]
- boost/spirit/home/karma/numeric/bool.hpp [3:4]
- boost/spirit/home/karma/numeric/detail/numeric_utils.hpp [3:4]
- boost/spirit/home/karma/numeric/int.hpp [3:4]
- boost/spirit/home/karma/numeric/real.hpp [3:4]
- boost/spirit/home/karma/numeric/uint.hpp [3:4]
- boost/spirit/home/karma/operator/alternative.hpp [4:5]
- boost/spirit/home/karma/operator/and_predicate.hpp [4:5]
- boost/spirit/home/karma/operator/kleene.hpp [4:5]
- boost/spirit/home/karma/operator/list.hpp [4:5]
- boost/spirit/home/karma/operator/not_predicate.hpp [4:5]
- boost/spirit/home/karma/operator/optional.hpp [4:5]
- boost/spirit/home/karma/operator/plus.hpp [4:5]
- boost/spirit/home/karma/operator/sequence.hpp [4:5]
- boost/spirit/home/karma/stream.hpp [3:4]
- boost/spirit/home/karma/stream/stream.hpp [3:4]
- boost/spirit/home/karma/string/lit.hpp [4:5]
- boost/spirit/home/karma/string/symbols.hpp [3:4]
- boost/spirit/home/lex/lexer/lexertl/generate_static.hpp [4:5]
- boost/spirit/home/lex/lexer/lexertl/lexer.hpp [3:4]
- boost/spirit/home/lex/qi/plain_raw_token.hpp [3:4]
- boost/spirit/home/lex/qi/plain_token.hpp [3:4]
- boost/spirit/home/lex/qi/plain_tokenid.hpp [3:4]
- boost/spirit/home/lex/qi/plain_tokenid_mask.hpp [3:4]
- boost/spirit/home/lex/qi/state_switcher.hpp [4:5]
- boost/spirit/home/qi/auto/auto.hpp [3:4]
- boost/spirit/home/qi/auto/create_parser.hpp [3:4]
- boost/spirit/home/qi/auto/meta_create.hpp [3:4]
- boost/spirit/home/qi/auxiliary/attr_cast.hpp [3:4]
- boost/spirit/home/qi/detail/attributes.hpp [4:5]
- boost/spirit/home/qi/detail/enable_lit.hpp [3:4]
- boost/spirit/home/qi/detail/unused_skipper.hpp [3:4]
- boost/spirit/home/qi/match.hpp [3:4]
- boost/spirit/home/qi/match_auto.hpp [3:4]
- boost/spirit/home/support/adapt_adt_attributes.hpp [3:4]
- boost/spirit/home/support/assert_msg.hpp [3:4]
- boost/spirit/home/support/auto/meta_create.hpp [3:4]
- boost/spirit/home/support/auxiliary/attr_cast.hpp [3:4]
- boost/spirit/home/support/detail/endian.hpp [4:5]
- boost/spirit/home/support/detail/endian/cover_operators.hpp [6:7]
- boost/spirit/home/support/detail/get_encoding.hpp [4:5]
- boost/spirit/home/support/detail/scoped_enum_emulation.hpp [4:5]
- boost/spirit/home/support/iterators/detail/buf_id_check_policy.hpp [4:5]
- boost/spirit/home/support/iterators/detail/buffering_input_iterator_policy.hpp [4:5]
- boost/spirit/home/support/iterators/detail/combine_policies.hpp [3:4]
- boost/spirit/home/support/iterators/detail/first_owner_policy.hpp [4:5]
- boost/spirit/home/support/iterators/detail/fixed_size_queue.hpp [4:5]
- boost/spirit/home/support/iterators/detail/fixed_size_queue_policy.hpp [4:5]
- boost/spirit/home/support/iterators/detail/functor_input_policy.hpp [3:4]
- boost/spirit/home/support/iterators/detail/input_iterator_policy.hpp [4:5]
- boost/spirit/home/support/iterators/detail/istream_policy.hpp [4:5]
- boost/spirit/home/support/iterators/detail/lex_input_policy.hpp [4:5]
- boost/spirit/home/support/iterators/detail/multi_pass.hpp [4:5]
- boost/spirit/home/support/iterators/detail/no_check_policy.hpp [4:5]
- boost/spirit/home/support/iterators/detail/ref_counted_policy.hpp [4:5]
- boost/spirit/home/support/iterators/detail/split_functor_input_policy.hpp [3:4]
- boost/spirit/home/support/iterators/detail/split_std_deque_policy.hpp [4:5]
- boost/spirit/home/support/iterators/istream_iterator.hpp [3:4]
- boost/spirit/home/support/iterators/look_ahead.hpp [5:6]
- boost/spirit/home/support/iterators/multi_pass.hpp [5:6]
- boost/spirit/home/support/iterators/ostream_iterator.hpp [3:4]
- boost/spirit/home/support/limits.hpp [3:4]
- boost/spirit/home/support/multi_pass.hpp [3:4]
- boost/spirit/home/support/numeric_traits.hpp [3:4]
- boost/spirit/repository/home/karma.hpp [4:5]
- boost/spirit/repository/home/karma/directive.hpp [4:5]
- boost/spirit/repository/home/karma/nonterminal.hpp [5:6]
- boost/spirit/repository/home/karma/nonterminal/subrule.hpp [5:6]
- boost/spirit/repository/home/qi.hpp [4:5]
- boost/spirit/repository/home/qi/directive.hpp [4:5]
- boost/spirit/repository/home/qi/directive/distinct.hpp [5:6]
- boost/spirit/repository/home/qi/nonterminal.hpp [5:6]
- boost/spirit/repository/home/qi/operator.hpp [5:6]
- boost/spirit/repository/home/qi/primitive.hpp [4:5]
- boost/spirit/repository/home/qi/primitive/advance.hpp [3:4]
- boost/system/config.hpp [5:6]
- boost/system/cygwin_error.hpp [5:6]
- boost/system/detail/error_code.ipp [5:6]
- boost/system/error_code.hpp [7:8]
- boost/system/linux_error.hpp [5:6]
- boost/system/system_error.hpp [5:6]
- boost/system/windows_error.hpp [5:6]
- boost/thread/barrier.hpp [6:7]
- boost/thread/concurrent_queues/sync_priority_queue.hpp [4:5]
- boost/thread/concurrent_queues/sync_timed_queue.hpp [4:5]
- boost/thread/csbl/deque.hpp [3:4]
- boost/thread/csbl/devector.hpp [3:4]
- boost/thread/csbl/functional.hpp [3:4]
- boost/thread/csbl/list.hpp [3:4]
- boost/thread/csbl/memory.hpp [3:4]
- boost/thread/csbl/memory/allocator_arg.hpp [3:4]
- boost/thread/csbl/memory/allocator_traits.hpp [3:4]
- boost/thread/csbl/memory/config.hpp [3:4]
- boost/thread/csbl/memory/default_delete.hpp [3:4]
- boost/thread/csbl/memory/pointer_traits.hpp [3:4]
- boost/thread/csbl/memory/scoped_allocator.hpp [3:4]
- boost/thread/csbl/memory/shared_ptr.hpp [3:4]
- boost/thread/csbl/memory/unique_ptr.hpp [3:4]
- boost/thread/csbl/queue.hpp [3:4]
- boost/thread/csbl/tuple.hpp [3:4]
- boost/thread/csbl/vector.hpp [3:4]
- boost/thread/detail/atomic_redef_macros.hpp [3:4]
- boost/thread/detail/atomic_undef_macros.hpp [3:4]
- boost/thread/detail/config.hpp [5:6]
- boost/thread/detail/delete.hpp [3:4]
- boost/thread/detail/function_wrapper.hpp [3:4]
- boost/thread/detail/invoke.hpp [3:4]
- boost/thread/detail/invoker.hpp [3:4]
- boost/thread/detail/is_convertible.hpp [5:6]
- boost/thread/detail/log.hpp [3:4]
- boost/thread/detail/make_tuple_indices.hpp [3:4]
- boost/thread/detail/memory.hpp [5:6]
- boost/thread/detail/nullary_function.hpp [3:4]
- boost/thread/detail/variadic_footer.hpp [3:4]
- boost/thread/detail/variadic_header.hpp [3:4]
- boost/thread/exceptions.hpp [6:7]
- boost/thread/executor.hpp [3:4]
- boost/thread/executors/basic_thread_pool.hpp [3:4]
- boost/thread/executors/detail/priority_executor_base.hpp [4:5]
- boost/thread/executors/detail/scheduled_executor_base.hpp [4:5]
- boost/thread/executors/executor.hpp [3:4]
- boost/thread/executors/executor_adaptor.hpp [3:4]
- boost/thread/executors/generic_executor_ref.hpp [3:4]
- boost/thread/executors/inline_executor.hpp [3:4]
- boost/thread/executors/loop_executor.hpp [3:4]
- boost/thread/executors/scheduled_thread_pool.hpp [4:5]
- boost/thread/executors/scheduler.hpp [3:4]
- boost/thread/executors/scheduling_adaptor.hpp [4:5]
- boost/thread/executors/serial_executor.hpp [3:4]
- boost/thread/executors/serial_executor_cont.hpp [3:4]
- boost/thread/executors/thread_executor.hpp [3:4]
- boost/thread/lock_concepts.hpp [3:4]
- boost/thread/lockable_concepts.hpp [3:4]
- boost/thread/thread_pool.hpp [3:4]
- boost/thread/user_scheduler.hpp [3:4]
- boost/thread/xtime.hpp [5:6]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/dont_start.hpp [3:4]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/laps_stopwatch.hpp [4:5]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/simple_stopwatch.hpp [4:5]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/stopwatch.hpp [4:5]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/stopwatch_scoped.hpp [3:4]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/strict_stopwatch.hpp [4:5]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/suspendable_stopwatch.hpp [3:4]
- libs/system/src/error_code.cpp [5:6]
- libs/thread/src/pthread/once.cpp [3:4]
- libs/thread/src/pthread/once_atomic.cpp [4:5]
- libs/thread/src/pthread/thread.cpp [6:7]
- libs/timer/src/cpu_timer.cpp [5:6]
-
-KEEP BSL-1.0 d805a275e860e62f7f327b1245d5a0cc
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/function/function_fwd.hpp at line 6, boost/function/function_typeof.hpp at line 6
- License text:
- // Use, modification and distribution is subject to the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/function/function_fwd.hpp [4:6]
- boost/function/function_typeof.hpp [4:6]
-
-KEEP BSL-1.0 d926734e1804ae63ec294903c1492c12
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/utility/detail/result_of_iterate.hpp at line 5, boost/utility/result_of.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/utility/detail/result_of_iterate.hpp [3:6]
- boost/utility/result_of.hpp [3:6]
-
-KEEP Zlib d9ef8ba02957d17a494a01d92326a8f3
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: Zlib
- Score : 99.24
- Match type : TEXT
- Links : http://www.gzip.org/zlib/zlib_license.html, http://www.zlib.net/, https://spdx.org/licenses/Zlib
- Files with this license:
- boost/archive/impl/basic_xml_grammar.hpp [29:46]
-
-KEEP BSL-1.0 da2a87ccf5ae416e33c8d6bfe78baa14
-BELONGS libs/chrono/ya.make libs/filesystem/ya.make ya.make
- License text:
- // Distributed under the Boost Software License, Version 1.0.
- // See http://www.boost.org/LICENSE_1_0.txt
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/chrono/chrono.hpp [5:6]
- boost/chrono/detail/inlined/chrono.hpp [6:7]
- boost/chrono/detail/inlined/mac/chrono.hpp [6:7]
- boost/chrono/detail/inlined/mac/process_cpu_clocks.hpp [6:7]
- boost/chrono/detail/inlined/mac/thread_clock.hpp [7:8]
- boost/chrono/detail/inlined/posix/chrono.hpp [6:7]
- boost/chrono/detail/inlined/posix/process_cpu_clocks.hpp [6:7]
- boost/chrono/detail/inlined/posix/thread_clock.hpp [6:7]
- boost/chrono/detail/inlined/process_cpu_clocks.hpp [5:6]
- boost/chrono/detail/inlined/thread_clock.hpp [5:6]
- boost/chrono/detail/inlined/win/chrono.hpp [6:7]
- boost/chrono/detail/inlined/win/process_cpu_clocks.hpp [7:8]
- boost/chrono/detail/inlined/win/thread_clock.hpp [5:6]
- boost/chrono/detail/is_evenly_divisible_by.hpp [5:6]
- boost/chrono/detail/no_warning/signed_unsigned_cmp.hpp [5:6]
- boost/chrono/detail/scan_keyword.hpp [14:15]
- boost/chrono/detail/static_assert.hpp [5:6]
- boost/chrono/detail/system.hpp [3:4]
- boost/chrono/duration.hpp [7:8]
- boost/chrono/process_cpu_clocks.hpp [6:7]
- boost/chrono/system_clocks.hpp [7:8]
- boost/chrono/thread_clock.hpp [5:6]
- boost/chrono/time_point.hpp [7:8]
- boost/core/scoped_enum.hpp [7:8]
- boost/core/underlying_type.hpp [8:9]
- boost/cxx11_char_types.hpp [5:6]
- boost/detail/lightweight_main.hpp [5:6]
- boost/detail/lightweight_test_report.hpp [5:6]
- boost/dll/detail/demangling/demangle_symbol.hpp [5:6]
- boost/endian/arithmetic.hpp [6:7]
- boost/endian/buffers.hpp [6:7]
- boost/endian/detail/config.hpp [5:6]
- boost/endian/detail/disable_warnings.hpp [5:6]
- boost/endian/detail/disable_warnings_pop.hpp [5:6]
- boost/endian/detail/lightweight_test.hpp [17:18]
- boost/endian/endian.hpp [5:6]
- boost/filesystem.hpp [5:6]
- boost/filesystem/config.hpp [5:6]
- boost/filesystem/detail/macro_value.hpp [9:10]
- boost/filesystem/fstream.hpp [5:6]
- boost/filesystem/operations.hpp [8:9]
- boost/filesystem/path.hpp [6:7]
- boost/filesystem/path_traits.hpp [5:6]
- boost/filesystem/string_file.hpp [5:6]
- boost/io/detail/quoted_manip.hpp [5:6]
- boost/ratio.hpp [5:6]
- boost/ratio/config.hpp [5:6]
- boost/ratio/detail/overflow_helpers.hpp [7:8]
- boost/ratio/include.hpp [5:6]
- boost/ratio/mpl/arithmetic.hpp [5:6]
- boost/ratio/mpl/comparison.hpp [5:6]
- boost/ratio/mpl/rational_constant.hpp [3:4]
- boost/ratio/ratio.hpp [7:8]
- boost/ratio/ratio_fwd.hpp [7:8]
- boost/spirit/home/support/detail/endian/endian.hpp [6:7]
- boost/system/api_config.hpp [5:6]
- boost/system/detail/local_free_on_destruction.hpp [6:7]
- boost/timer/config.hpp [5:6]
- boost/timer/timer.hpp [5:6]
- boost/type_traits/add_lvalue_reference.hpp [3:4]
- boost/type_traits/add_rvalue_reference.hpp [5:6]
- boost/type_traits/declval.hpp [5:6]
- boost/utility/declval.hpp [5:6]
- libs/chrono/src/chrono.cpp [6:7]
- libs/chrono/src/process_cpu_clocks.cpp [5:6]
- libs/chrono/src/thread_clock.cpp [5:6]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/formatters/accumulator_set_formatter.hpp [3:4]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/formatters/base_formatter.hpp [3:4]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/formatters/elapsed_formatter.hpp [3:4]
- libs/chrono/stopwatches/include/boost/chrono/stopwatches/formatters/times_formatter.hpp [3:4]
- libs/filesystem/src/operations.cpp [6:7]
- libs/filesystem/src/path.cpp [5:6]
- libs/filesystem/src/path_traits.cpp [5:6]
- libs/filesystem/src/unique_path.cpp [5:6]
- libs/filesystem/src/windows_file_codecvt.cpp [5:6]
- libs/filesystem/src/windows_file_codecvt.hpp [5:6]
-
-KEEP BSL-1.0 db63392c774d3d4c1bd5d57fe2eb26f2
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multi_array.hpp at line 4, boost/multi_array/algorithm.hpp at line 33, boost/multi_array/base.hpp at line 4, boost/multi_array/collection_concept.hpp at line 4, boost/multi_array/concept_checks.hpp at line 4, boost/multi_array/copy_array.hpp at line 4, boost/multi_array/extent_gen.hpp at line 4, boost/multi_array/extent_range.hpp at line 4, boost/multi_array/index_gen.hpp at line 4, boost/multi_array/index_range.hpp at line 4, boost/multi_array/iterator.hpp at line 4, boost/multi_array/multi_array_ref.hpp at line 4, boost/multi_array/range_list.hpp at line 4, boost/multi_array/storage_order.hpp at line 4, boost/multi_array/subarray.hpp at line 4, boost/multi_array/types.hpp at line 4, boost/multi_array/view.hpp at line 4, boost/phoenix/stl/algorithm/detail/decay_array.hpp at line 5, boost/phoenix/stl/algorithm/iteration.hpp at line 6
- License text:
- // Use, modification and distribution is subject to the Boost Software
- // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/multi_array.hpp [3:5]
- boost/multi_array/algorithm.hpp [32:34]
- boost/multi_array/base.hpp [3:5]
- boost/multi_array/collection_concept.hpp [3:5]
- boost/multi_array/concept_checks.hpp [3:5]
- boost/multi_array/copy_array.hpp [3:5]
- boost/multi_array/extent_gen.hpp [3:5]
- boost/multi_array/extent_range.hpp [3:5]
- boost/multi_array/index_gen.hpp [3:5]
- boost/multi_array/index_range.hpp [3:5]
- boost/multi_array/iterator.hpp [3:5]
- boost/multi_array/multi_array_ref.hpp [3:5]
- boost/multi_array/range_list.hpp [3:5]
- boost/multi_array/storage_order.hpp [3:5]
- boost/multi_array/subarray.hpp [3:5]
- boost/multi_array/types.hpp [3:5]
- boost/multi_array/view.hpp [3:5]
- boost/phoenix/stl/algorithm/detail/decay_array.hpp [4:6]
- boost/phoenix/stl/algorithm/iteration.hpp [5:7]
-
-KEEP BSL-1.0 dbb5e9f500df89fb594d4004510207dd
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/mp11/mpl.hpp at line 8
- License text:
- // Distributed under the Boost Software License, Version 1.0.
- //
- // See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/mp11/mpl.hpp [6:9]
-
-KEEP BSL-1.0 dd654fb37bcdf81209c428bf00444ddb
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/fusion/adapted/array.hpp at line 7, boost/fusion/adapted/array/at_impl.hpp at line 5, boost/fusion/adapted/array/begin_impl.hpp at line 5, boost/fusion/adapted/array/category_of_impl.hpp at line 5, boost/fusion/adapted/array/end_impl.hpp at line 5, boost/fusion/adapted/array/is_sequence_impl.hpp at line 5, boost/fusion/adapted/array/is_view_impl.hpp at line 5, boost/fusion/adapted/array/tag_of.hpp at line 5, boost/fusion/adapted/array/value_at_impl.hpp at line 5, boost/fusion/adapted/boost_array.hpp at line 6, boost/fusion/adapted/boost_array/array_iterator.hpp at line 6, boost/fusion/adapted/boost_array/detail/at_impl.hpp at line 6, boost/fusion/adapted/boost_array/detail/begin_impl.hpp at line 6, boost/fusion/adapted/boost_array/detail/category_of_impl.hpp at line 6, boost/fusion/adapted/boost_array/detail/end_impl.hpp at line 6, boost/fusion/adapted/boost_array/detail/is_sequence_impl.hpp at line 6, boost/fusion/adapted/boost_array/detail/is_view_impl.hpp at line 6, boost/fusion/adapted/boost_array/detail/size_impl.hpp at line 6, boost/fusion/adapted/boost_array/detail/value_at_impl.hpp at line 6, boost/fusion/adapted/boost_array/tag_of.hpp at line 6, boost/fusion/adapted/boost_tuple.hpp at line 5, boost/fusion/adapted/boost_tuple/detail/at_impl.hpp at line 5, boost/fusion/adapted/boost_tuple/detail/begin_impl.hpp at line 5, boost/fusion/adapted/boost_tuple/detail/category_of_impl.hpp at line 5, boost/fusion/adapted/boost_tuple/detail/end_impl.hpp at line 5, boost/fusion/adapted/boost_tuple/detail/is_sequence_impl.hpp at line 5, boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp at line 5, boost/fusion/adapted/boost_tuple/detail/size_impl.hpp at line 5, boost/fusion/adapted/boost_tuple/detail/value_at_impl.hpp at line 5, boost/fusion/adapted/boost_tuple/tag_of.hpp at line 5, boost/fusion/adapted/mpl/detail/at_impl.hpp at line 6, boost/fusion/adapted/mpl/detail/begin_impl.hpp at line 6, boost/fusion/adapted/mpl/detail/category_of_impl.hpp at line 6, boost/fusion/adapted/mpl/detail/end_impl.hpp at line 6, boost/fusion/adapted/mpl/detail/has_key_impl.hpp at line 6, boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp at line 6, boost/fusion/adapted/mpl/detail/is_view_impl.hpp at line 6, boost/fusion/adapted/mpl/detail/size_impl.hpp at line 6, boost/fusion/adapted/mpl/detail/value_at_impl.hpp at line 6, boost/fusion/adapted/mpl/mpl_iterator.hpp at line 5, boost/fusion/adapted/std_array.hpp at line 7, boost/fusion/adapted/std_array/detail/array_size.hpp at line 5, boost/fusion/adapted/std_array/detail/at_impl.hpp at line 6, boost/fusion/adapted/std_array/detail/begin_impl.hpp at line 7, boost/fusion/adapted/std_array/detail/category_of_impl.hpp at line 6, boost/fusion/adapted/std_array/detail/end_impl.hpp at line 7, boost/fusion/adapted/std_array/detail/is_sequence_impl.hpp at line 7, boost/fusion/adapted/std_array/detail/is_view_impl.hpp at line 7, boost/fusion/adapted/std_array/detail/size_impl.hpp at line 7, boost/fusion/adapted/std_array/detail/value_at_impl.hpp at line 6, boost/fusion/adapted/std_array/std_array_iterator.hpp at line 7, boost/fusion/adapted/std_array/tag_of.hpp at line 6, boost/fusion/algorithm.hpp at line 5, boost/fusion/algorithm/iteration.hpp at line 5, boost/fusion/algorithm/iteration/accumulate.hpp at line 6, boost/fusion/algorithm/iteration/accumulate_fwd.hpp at line 6, boost/fusion/algorithm/iteration/detail/for_each.hpp at line 5, boost/fusion/algorithm/iteration/detail/segmented_fold.hpp at line 5, boost/fusion/algorithm/iteration/detail/segmented_for_each.hpp at line 5, boost/fusion/algorithm/iteration/for_each.hpp at line 6, boost/fusion/algorithm/iteration/for_each_fwd.hpp at line 5, boost/fusion/algorithm/query.hpp at line 5, boost/fusion/algorithm/query/all.hpp at line 6, boost/fusion/algorithm/query/any.hpp at line 7, boost/fusion/algorithm/query/count.hpp at line 6, boost/fusion/algorithm/query/count_if.hpp at line 6, boost/fusion/algorithm/query/detail/all.hpp at line 6, boost/fusion/algorithm/query/detail/any.hpp at line 7, boost/fusion/algorithm/query/detail/count.hpp at line 5, boost/fusion/algorithm/query/detail/count_if.hpp at line 6, boost/fusion/algorithm/query/detail/find_if.hpp at line 7, boost/fusion/algorithm/query/detail/segmented_find.hpp at line 5, boost/fusion/algorithm/query/detail/segmented_find_if.hpp at line 5, boost/fusion/algorithm/query/find.hpp at line 6, boost/fusion/algorithm/query/find_fwd.hpp at line 5, boost/fusion/algorithm/query/find_if.hpp at line 6, boost/fusion/algorithm/query/find_if_fwd.hpp at line 5, boost/fusion/algorithm/query/none.hpp at line 6, boost/fusion/algorithm/transformation.hpp at line 5, boost/fusion/algorithm/transformation/clear.hpp at line 5, boost/fusion/algorithm/transformation/detail/replace.hpp at line 5, boost/fusion/algorithm/transformation/detail/replace_if.hpp at line 5, boost/fusion/algorithm/transformation/erase_key.hpp at line 5, boost/fusion/algorithm/transformation/filter.hpp at line 6, boost/fusion/algorithm/transformation/filter_if.hpp at line 5, boost/fusion/algorithm/transformation/join.hpp at line 6, boost/fusion/algorithm/transformation/pop_front.hpp at line 5, boost/fusion/algorithm/transformation/push_back.hpp at line 5, boost/fusion/algorithm/transformation/push_front.hpp at line 5, boost/fusion/algorithm/transformation/remove.hpp at line 5, boost/fusion/algorithm/transformation/remove_if.hpp at line 5, boost/fusion/algorithm/transformation/replace.hpp at line 5, boost/fusion/algorithm/transformation/replace_if.hpp at line 5, boost/fusion/algorithm/transformation/reverse.hpp at line 5, boost/fusion/algorithm/transformation/transform.hpp at line 5, boost/fusion/container/generation/cons_tie.hpp at line 5, boost/fusion/container/generation/ignore.hpp at line 7, boost/fusion/container/generation/make_cons.hpp at line 6, boost/fusion/container/generation/pair_tie.hpp at line 6, boost/fusion/container/list/cons.hpp at line 6, boost/fusion/container/list/cons_iterator.hpp at line 6, boost/fusion/container/list/detail/begin_impl.hpp at line 6, boost/fusion/container/list/detail/build_cons.hpp at line 5, boost/fusion/container/list/detail/cpp03/list_forward_ctor.hpp at line 5, boost/fusion/container/list/detail/cpp03/list_to_cons_call.hpp at line 5, boost/fusion/container/list/detail/deref_impl.hpp at line 6, boost/fusion/container/list/detail/empty_impl.hpp at line 5, boost/fusion/container/list/detail/end_impl.hpp at line 6, boost/fusion/container/list/detail/equal_to_impl.hpp at line 5, boost/fusion/container/list/detail/next_impl.hpp at line 6, boost/fusion/container/list/detail/value_at_impl.hpp at line 5, boost/fusion/container/list/detail/value_of_impl.hpp at line 6, boost/fusion/container/list/nil.hpp at line 6, boost/fusion/container/map/detail/cpp03/at_impl.hpp at line 6, boost/fusion/container/map/detail/cpp03/map_forward_ctor.hpp at line 5, boost/fusion/container/map/detail/cpp03/value_at_impl.hpp at line 6, boost/fusion/container/set/detail/cpp03/set_forward_ctor.hpp at line 5, boost/fusion/container/vector/detail/advance_impl.hpp at line 5, boost/fusion/container/vector/detail/begin_impl.hpp at line 5, boost/fusion/container/vector/detail/deref_impl.hpp at line 5, boost/fusion/container/vector/detail/distance_impl.hpp at line 5, boost/fusion/container/vector/detail/end_impl.hpp at line 5, boost/fusion/container/vector/detail/equal_to_impl.hpp at line 5, boost/fusion/container/vector/detail/next_impl.hpp at line 5, boost/fusion/container/vector/detail/prior_impl.hpp at line 5, boost/fusion/container/vector/detail/value_of_impl.hpp at line 5, boost/fusion/container/vector/vector_iterator.hpp at line 5, boost/fusion/include/as_vector.hpp at line 5, boost/fusion/include/at.hpp at line 5, boost/fusion/include/io.hpp at line 5, boost/fusion/include/is_sequence.hpp at line 5, boost/fusion/include/join.hpp at line 5, boost/fusion/include/joint_view.hpp at line 5, boost/fusion/include/push_front.hpp at line 5, boost/fusion/include/single_view.hpp at line 5, boost/fusion/include/transform.hpp at line 5, boost/fusion/include/transform_view.hpp at line 5, boost/fusion/include/value_at.hpp at line 5, boost/fusion/iterator/deref.hpp at line 5, boost/fusion/iterator/detail/adapt_deref_traits.hpp at line 5, boost/fusion/iterator/detail/adapt_value_traits.hpp at line 5, boost/fusion/iterator/detail/advance.hpp at line 5, boost/fusion/iterator/detail/distance.hpp at line 5, boost/fusion/iterator/distance.hpp at line 5, boost/fusion/iterator/mpl.hpp at line 5, boost/fusion/iterator/mpl/fusion_iterator.hpp at line 5, boost/fusion/iterator/next.hpp at line 5, boost/fusion/iterator/prior.hpp at line 5, boost/fusion/iterator/value_of.hpp at line 5, boost/fusion/mpl/at.hpp at line 5, boost/fusion/mpl/back.hpp at line 5, boost/fusion/mpl/begin.hpp at line 5, boost/fusion/mpl/clear.hpp at line 5, boost/fusion/mpl/detail/clear.hpp at line 5, boost/fusion/mpl/empty.hpp at line 5, boost/fusion/mpl/end.hpp at line 5, boost/fusion/mpl/front.hpp at line 5, boost/fusion/mpl/has_key.hpp at line 5, boost/fusion/mpl/size.hpp at line 5, boost/fusion/sequence/comparison.hpp at line 5, boost/fusion/sequence/comparison/detail/equal_to.hpp at line 6, boost/fusion/sequence/comparison/detail/greater.hpp at line 6, boost/fusion/sequence/comparison/detail/greater_equal.hpp at line 6, boost/fusion/sequence/comparison/detail/less.hpp at line 6, boost/fusion/sequence/comparison/detail/less_equal.hpp at line 6, boost/fusion/sequence/comparison/detail/not_equal_to.hpp at line 6, boost/fusion/sequence/intrinsic/at_key.hpp at line 6, boost/fusion/sequence/intrinsic/back.hpp at line 5, boost/fusion/sequence/intrinsic/begin.hpp at line 5, boost/fusion/sequence/intrinsic/detail/segmented_size.hpp at line 5, boost/fusion/sequence/intrinsic/empty.hpp at line 5, boost/fusion/sequence/intrinsic/end.hpp at line 5, boost/fusion/sequence/intrinsic/front.hpp at line 5, boost/fusion/sequence/intrinsic/has_key.hpp at line 5, boost/fusion/sequence/intrinsic/segments.hpp at line 5, boost/fusion/sequence/intrinsic/size.hpp at line 5, boost/fusion/sequence/intrinsic/swap.hpp at line 6, boost/fusion/sequence/intrinsic/value_at.hpp at line 5, boost/fusion/sequence/intrinsic/value_at_key.hpp at line 6, boost/fusion/sequence/io.hpp at line 5, boost/fusion/sequence/io/detail/in.hpp at line 7, boost/fusion/sequence/io/detail/manip.hpp at line 7, boost/fusion/sequence/io/detail/out.hpp at line 7, boost/fusion/sequence/io/out.hpp at line 7, boost/fusion/support/category_of.hpp at line 5, boost/fusion/support/detail/as_fusion_element.hpp at line 6, boost/fusion/support/detail/category_of.hpp at line 5, boost/fusion/support/detail/is_mpl_sequence.hpp at line 6, boost/fusion/support/detail/is_view.hpp at line 5, boost/fusion/support/detail/mpl_iterator_category.hpp at line 5, boost/fusion/support/detail/unknown_key.hpp at line 5, boost/fusion/support/is_iterator.hpp at line 5, boost/fusion/support/is_segmented.hpp at line 5, boost/fusion/support/is_view.hpp at line 5, boost/fusion/tuple.hpp at line 5, boost/fusion/view.hpp at line 5, boost/fusion/view/filter_view.hpp at line 5, boost/fusion/view/filter_view/detail/begin_impl.hpp at line 5, boost/fusion/view/filter_view/detail/deref_impl.hpp at line 5, boost/fusion/view/filter_view/detail/end_impl.hpp at line 5, boost/fusion/view/filter_view/detail/equal_to_impl.hpp at line 6, boost/fusion/view/filter_view/detail/next_impl.hpp at line 5, boost/fusion/view/filter_view/detail/size_impl.hpp at line 5, boost/fusion/view/filter_view/detail/value_of_impl.hpp at line 5, boost/fusion/view/filter_view/filter_view.hpp at line 5, boost/fusion/view/iterator_range.hpp at line 5, boost/fusion/view/iterator_range/detail/begin_impl.hpp at line 5, boost/fusion/view/iterator_range/detail/end_impl.hpp at line 5, boost/fusion/view/iterator_range/detail/is_segmented_impl.hpp at line 5, boost/fusion/view/iterator_range/detail/segments_impl.hpp at line 5, boost/fusion/view/joint_view.hpp at line 5, boost/fusion/view/joint_view/detail/begin_impl.hpp at line 5, boost/fusion/view/joint_view/detail/deref_impl.hpp at line 5, boost/fusion/view/joint_view/detail/end_impl.hpp at line 5, boost/fusion/view/joint_view/detail/next_impl.hpp at line 5, boost/fusion/view/joint_view/detail/value_of_impl.hpp at line 5, boost/fusion/view/nview.hpp at line 7, boost/fusion/view/nview/detail/at_impl.hpp at line 5, boost/fusion/view/nview/detail/size_impl.hpp at line 5, boost/fusion/view/nview/detail/value_at_impl.hpp at line 5, boost/fusion/view/nview/nview.hpp at line 5, boost/fusion/view/nview/nview_iterator.hpp at line 5, boost/fusion/view/reverse_view.hpp at line 5, boost/fusion/view/reverse_view/detail/advance_impl.hpp at line 6, boost/fusion/view/reverse_view/detail/begin_impl.hpp at line 5, boost/fusion/view/reverse_view/detail/deref_impl.hpp at line 5, boost/fusion/view/reverse_view/detail/distance_impl.hpp at line 6, boost/fusion/view/reverse_view/detail/end_impl.hpp at line 5, boost/fusion/view/reverse_view/detail/next_impl.hpp at line 5, boost/fusion/view/reverse_view/detail/prior_impl.hpp at line 5, boost/fusion/view/reverse_view/detail/value_of_impl.hpp at line 5, boost/fusion/view/reverse_view/reverse_view.hpp at line 5, boost/fusion/view/single_view.hpp at line 5, boost/fusion/view/single_view/detail/advance_impl.hpp at line 5, boost/fusion/view/single_view/detail/at_impl.hpp at line 5, boost/fusion/view/single_view/detail/begin_impl.hpp at line 6, boost/fusion/view/single_view/detail/deref_impl.hpp at line 6, boost/fusion/view/single_view/detail/end_impl.hpp at line 6, boost/fusion/view/single_view/detail/size_impl.hpp at line 5, boost/fusion/view/single_view/detail/value_at_impl.hpp at line 5, boost/fusion/view/single_view/detail/value_of_impl.hpp at line 6, boost/fusion/view/single_view/single_view.hpp at line 6, boost/fusion/view/single_view/single_view_iterator.hpp at line 6, boost/fusion/view/transform_view.hpp at line 5, boost/fusion/view/transform_view/detail/advance_impl.hpp at line 6, boost/fusion/view/transform_view/detail/apply_transform_result.hpp at line 6, boost/fusion/view/transform_view/detail/at_impl.hpp at line 6, boost/fusion/view/transform_view/detail/begin_impl.hpp at line 5, boost/fusion/view/transform_view/detail/deref_impl.hpp at line 5, boost/fusion/view/transform_view/detail/distance_impl.hpp at line 6, boost/fusion/view/transform_view/detail/end_impl.hpp at line 5, boost/fusion/view/transform_view/detail/equal_to_impl.hpp at line 5, boost/fusion/view/transform_view/detail/next_impl.hpp at line 5, boost/fusion/view/transform_view/detail/prior_impl.hpp at line 6, boost/fusion/view/transform_view/detail/value_of_impl.hpp at line 5, boost/fusion/view/transform_view/transform_view.hpp at line 5, boost/fusion/view/transform_view/transform_view_fwd.hpp at line 5, boost/fusion/view/zip_view.hpp at line 6, boost/fusion/view/zip_view/detail/advance_impl.hpp at line 6, boost/fusion/view/zip_view/detail/at_impl.hpp at line 6, boost/fusion/view/zip_view/detail/begin_impl.hpp at line 6, boost/fusion/view/zip_view/detail/deref_impl.hpp at line 6, boost/fusion/view/zip_view/detail/distance_impl.hpp at line 6, boost/fusion/view/zip_view/detail/end_impl.hpp at line 6, boost/fusion/view/zip_view/detail/equal_to_impl.hpp at line 6, boost/fusion/view/zip_view/detail/next_impl.hpp at line 6, boost/fusion/view/zip_view/detail/prior_impl.hpp at line 6, boost/fusion/view/zip_view/detail/size_impl.hpp at line 6, boost/fusion/view/zip_view/detail/value_at_impl.hpp at line 6, boost/fusion/view/zip_view/zip_view.hpp at line 6, boost/fusion/view/zip_view/zip_view_iterator.hpp at line 6, boost/fusion/view/zip_view/zip_view_iterator_fwd.hpp at line 6, boost/phoenix/bind/detail/cpp03/bind_function.hpp at line 5, boost/phoenix/bind/detail/cpp03/bind_function.hpp at line 57, boost/phoenix/bind/detail/cpp03/bind_function_object.hpp at line 34, boost/phoenix/bind/detail/cpp03/bind_function_object.hpp at line 5, boost/phoenix/bind/detail/cpp03/bind_member_function.hpp at line 109, boost/phoenix/bind/detail/cpp03/function_ptr.hpp at line 5, boost/phoenix/bind/detail/cpp03/function_ptr.hpp at line 98, boost/phoenix/bind/detail/cpp03/member_function_ptr.hpp at line 87, boost/phoenix/bind/detail/cpp03/preprocessed/bind_function.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_10.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_10.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_10.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_20.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_30.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_40.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_50.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_10.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_10.hpp at line 5, boost/phoenix/core/as_actor.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/argument.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/function_equal.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/function_eval.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/phx2_result.hpp at line 5, boost/phoenix/core/detail/expression.hpp at line 5, boost/phoenix/core/domain.hpp at line 6, boost/phoenix/core/expression.hpp at line 5, boost/phoenix/core/is_nullary.hpp at line 7, boost/phoenix/core/limits.hpp at line 5, boost/phoenix/core/meta_grammar.hpp at line 7, boost/phoenix/core/v2_eval.hpp at line 5, boost/phoenix/scope/detail/cpp03/preprocessed/lambda.hpp at line 5, boost/phoenix/scope/this.hpp at line 6, boost/phoenix/stl.hpp at line 7, boost/phoenix/stl/algorithm.hpp at line 8, boost/phoenix/stl/container.hpp at line 6, boost/phoenix/stl/container/detail/container.hpp at line 6, boost/phoenix/support/preprocessed/vector.hpp at line 5, boost/phoenix/support/preprocessor/round.hpp at line 5, boost/spirit/home/qi/action.hpp at line 5, boost/spirit/home/qi/char.hpp at line 5
- License text:
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/fusion/adapted/array.hpp [6:7]
- boost/fusion/adapted/array/at_impl.hpp [4:5]
- boost/fusion/adapted/array/begin_impl.hpp [4:5]
- boost/fusion/adapted/array/category_of_impl.hpp [4:5]
- boost/fusion/adapted/array/end_impl.hpp [4:5]
- boost/fusion/adapted/array/is_sequence_impl.hpp [4:5]
- boost/fusion/adapted/array/is_view_impl.hpp [4:5]
- boost/fusion/adapted/array/tag_of.hpp [4:5]
- boost/fusion/adapted/array/value_at_impl.hpp [4:5]
- boost/fusion/adapted/boost_array.hpp [5:6]
- boost/fusion/adapted/boost_array/array_iterator.hpp [5:6]
- boost/fusion/adapted/boost_array/detail/at_impl.hpp [5:6]
- boost/fusion/adapted/boost_array/detail/begin_impl.hpp [5:6]
- boost/fusion/adapted/boost_array/detail/category_of_impl.hpp [5:6]
- boost/fusion/adapted/boost_array/detail/end_impl.hpp [5:6]
- boost/fusion/adapted/boost_array/detail/is_sequence_impl.hpp [5:6]
- boost/fusion/adapted/boost_array/detail/is_view_impl.hpp [5:6]
- boost/fusion/adapted/boost_array/detail/size_impl.hpp [5:6]
- boost/fusion/adapted/boost_array/detail/value_at_impl.hpp [5:6]
- boost/fusion/adapted/boost_array/tag_of.hpp [5:6]
- boost/fusion/adapted/boost_tuple.hpp [4:5]
- boost/fusion/adapted/boost_tuple/detail/at_impl.hpp [4:5]
- boost/fusion/adapted/boost_tuple/detail/begin_impl.hpp [4:5]
- boost/fusion/adapted/boost_tuple/detail/category_of_impl.hpp [4:5]
- boost/fusion/adapted/boost_tuple/detail/end_impl.hpp [4:5]
- boost/fusion/adapted/boost_tuple/detail/is_sequence_impl.hpp [4:5]
- boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp [4:5]
- boost/fusion/adapted/boost_tuple/detail/size_impl.hpp [4:5]
- boost/fusion/adapted/boost_tuple/detail/value_at_impl.hpp [4:5]
- boost/fusion/adapted/boost_tuple/tag_of.hpp [4:5]
- boost/fusion/adapted/mpl/detail/at_impl.hpp [5:6]
- boost/fusion/adapted/mpl/detail/begin_impl.hpp [5:6]
- boost/fusion/adapted/mpl/detail/category_of_impl.hpp [5:6]
- boost/fusion/adapted/mpl/detail/end_impl.hpp [5:6]
- boost/fusion/adapted/mpl/detail/has_key_impl.hpp [5:6]
- boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp [5:6]
- boost/fusion/adapted/mpl/detail/is_view_impl.hpp [5:6]
- boost/fusion/adapted/mpl/detail/size_impl.hpp [5:6]
- boost/fusion/adapted/mpl/detail/value_at_impl.hpp [5:6]
- boost/fusion/adapted/mpl/mpl_iterator.hpp [4:5]
- boost/fusion/adapted/std_array.hpp [6:7]
- boost/fusion/adapted/std_array/detail/array_size.hpp [4:5]
- boost/fusion/adapted/std_array/detail/at_impl.hpp [5:6]
- boost/fusion/adapted/std_array/detail/begin_impl.hpp [6:7]
- boost/fusion/adapted/std_array/detail/category_of_impl.hpp [5:6]
- boost/fusion/adapted/std_array/detail/end_impl.hpp [6:7]
- boost/fusion/adapted/std_array/detail/is_sequence_impl.hpp [6:7]
- boost/fusion/adapted/std_array/detail/is_view_impl.hpp [6:7]
- boost/fusion/adapted/std_array/detail/size_impl.hpp [6:7]
- boost/fusion/adapted/std_array/detail/value_at_impl.hpp [5:6]
- boost/fusion/adapted/std_array/std_array_iterator.hpp [6:7]
- boost/fusion/adapted/std_array/tag_of.hpp [5:6]
- boost/fusion/algorithm.hpp [4:5]
- boost/fusion/algorithm/iteration.hpp [4:5]
- boost/fusion/algorithm/iteration/accumulate.hpp [5:6]
- boost/fusion/algorithm/iteration/accumulate_fwd.hpp [5:6]
- boost/fusion/algorithm/iteration/detail/for_each.hpp [4:5]
- boost/fusion/algorithm/iteration/detail/segmented_fold.hpp [4:5]
- boost/fusion/algorithm/iteration/detail/segmented_for_each.hpp [4:5]
- boost/fusion/algorithm/iteration/for_each.hpp [5:6]
- boost/fusion/algorithm/iteration/for_each_fwd.hpp [4:5]
- boost/fusion/algorithm/query.hpp [4:5]
- boost/fusion/algorithm/query/all.hpp [5:6]
- boost/fusion/algorithm/query/any.hpp [6:7]
- boost/fusion/algorithm/query/count.hpp [5:6]
- boost/fusion/algorithm/query/count_if.hpp [5:6]
- boost/fusion/algorithm/query/detail/all.hpp [5:6]
- boost/fusion/algorithm/query/detail/any.hpp [6:7]
- boost/fusion/algorithm/query/detail/count.hpp [4:5]
- boost/fusion/algorithm/query/detail/count_if.hpp [5:6]
- boost/fusion/algorithm/query/detail/find_if.hpp [6:7]
- boost/fusion/algorithm/query/detail/segmented_find.hpp [4:5]
- boost/fusion/algorithm/query/detail/segmented_find_if.hpp [4:5]
- boost/fusion/algorithm/query/find.hpp [5:6]
- boost/fusion/algorithm/query/find_fwd.hpp [4:5]
- boost/fusion/algorithm/query/find_if.hpp [5:6]
- boost/fusion/algorithm/query/find_if_fwd.hpp [4:5]
- boost/fusion/algorithm/query/none.hpp [5:6]
- boost/fusion/algorithm/transformation.hpp [4:5]
- boost/fusion/algorithm/transformation/clear.hpp [4:5]
- boost/fusion/algorithm/transformation/detail/replace.hpp [4:5]
- boost/fusion/algorithm/transformation/detail/replace_if.hpp [4:5]
- boost/fusion/algorithm/transformation/erase_key.hpp [4:5]
- boost/fusion/algorithm/transformation/filter.hpp [5:6]
- boost/fusion/algorithm/transformation/filter_if.hpp [4:5]
- boost/fusion/algorithm/transformation/join.hpp [5:6]
- boost/fusion/algorithm/transformation/pop_front.hpp [4:5]
- boost/fusion/algorithm/transformation/push_back.hpp [4:5]
- boost/fusion/algorithm/transformation/push_front.hpp [4:5]
- boost/fusion/algorithm/transformation/remove.hpp [4:5]
- boost/fusion/algorithm/transformation/remove_if.hpp [4:5]
- boost/fusion/algorithm/transformation/replace.hpp [4:5]
- boost/fusion/algorithm/transformation/replace_if.hpp [4:5]
- boost/fusion/algorithm/transformation/reverse.hpp [4:5]
- boost/fusion/algorithm/transformation/transform.hpp [4:5]
- boost/fusion/container/generation/cons_tie.hpp [4:5]
- boost/fusion/container/generation/ignore.hpp [6:7]
- boost/fusion/container/generation/make_cons.hpp [5:6]
- boost/fusion/container/generation/pair_tie.hpp [5:6]
- boost/fusion/container/list/cons.hpp [5:6]
- boost/fusion/container/list/cons_iterator.hpp [5:6]
- boost/fusion/container/list/detail/begin_impl.hpp [5:6]
- boost/fusion/container/list/detail/build_cons.hpp [4:5]
- boost/fusion/container/list/detail/cpp03/list_forward_ctor.hpp [4:5]
- boost/fusion/container/list/detail/cpp03/list_to_cons_call.hpp [4:5]
- boost/fusion/container/list/detail/deref_impl.hpp [5:6]
- boost/fusion/container/list/detail/empty_impl.hpp [4:5]
- boost/fusion/container/list/detail/end_impl.hpp [5:6]
- boost/fusion/container/list/detail/equal_to_impl.hpp [4:5]
- boost/fusion/container/list/detail/next_impl.hpp [5:6]
- boost/fusion/container/list/detail/value_at_impl.hpp [4:5]
- boost/fusion/container/list/detail/value_of_impl.hpp [5:6]
- boost/fusion/container/list/nil.hpp [5:6]
- boost/fusion/container/map/detail/cpp03/at_impl.hpp [5:6]
- boost/fusion/container/map/detail/cpp03/map_forward_ctor.hpp [4:5]
- boost/fusion/container/map/detail/cpp03/value_at_impl.hpp [5:6]
- boost/fusion/container/set/detail/cpp03/set_forward_ctor.hpp [4:5]
- boost/fusion/container/vector/detail/advance_impl.hpp [4:5]
- boost/fusion/container/vector/detail/begin_impl.hpp [4:5]
- boost/fusion/container/vector/detail/deref_impl.hpp [4:5]
- boost/fusion/container/vector/detail/distance_impl.hpp [4:5]
- boost/fusion/container/vector/detail/end_impl.hpp [4:5]
- boost/fusion/container/vector/detail/equal_to_impl.hpp [4:5]
- boost/fusion/container/vector/detail/next_impl.hpp [4:5]
- boost/fusion/container/vector/detail/prior_impl.hpp [4:5]
- boost/fusion/container/vector/detail/value_of_impl.hpp [4:5]
- boost/fusion/container/vector/vector_iterator.hpp [4:5]
- boost/fusion/include/as_vector.hpp [4:5]
- boost/fusion/include/at.hpp [4:5]
- boost/fusion/include/io.hpp [4:5]
- boost/fusion/include/is_sequence.hpp [4:5]
- boost/fusion/include/join.hpp [4:5]
- boost/fusion/include/joint_view.hpp [4:5]
- boost/fusion/include/push_front.hpp [4:5]
- boost/fusion/include/single_view.hpp [4:5]
- boost/fusion/include/transform.hpp [4:5]
- boost/fusion/include/transform_view.hpp [4:5]
- boost/fusion/include/value_at.hpp [4:5]
- boost/fusion/iterator/deref.hpp [4:5]
- boost/fusion/iterator/detail/adapt_deref_traits.hpp [4:5]
- boost/fusion/iterator/detail/adapt_value_traits.hpp [4:5]
- boost/fusion/iterator/detail/advance.hpp [4:5]
- boost/fusion/iterator/detail/distance.hpp [4:5]
- boost/fusion/iterator/distance.hpp [4:5]
- boost/fusion/iterator/mpl.hpp [4:5]
- boost/fusion/iterator/mpl/fusion_iterator.hpp [4:5]
- boost/fusion/iterator/next.hpp [4:5]
- boost/fusion/iterator/prior.hpp [4:5]
- boost/fusion/iterator/value_of.hpp [4:5]
- boost/fusion/mpl/at.hpp [4:5]
- boost/fusion/mpl/back.hpp [4:5]
- boost/fusion/mpl/begin.hpp [4:5]
- boost/fusion/mpl/clear.hpp [4:5]
- boost/fusion/mpl/detail/clear.hpp [4:5]
- boost/fusion/mpl/empty.hpp [4:5]
- boost/fusion/mpl/end.hpp [4:5]
- boost/fusion/mpl/front.hpp [4:5]
- boost/fusion/mpl/has_key.hpp [4:5]
- boost/fusion/mpl/size.hpp [4:5]
- boost/fusion/sequence/comparison.hpp [4:5]
- boost/fusion/sequence/comparison/detail/equal_to.hpp [5:6]
- boost/fusion/sequence/comparison/detail/greater.hpp [5:6]
- boost/fusion/sequence/comparison/detail/greater_equal.hpp [5:6]
- boost/fusion/sequence/comparison/detail/less.hpp [5:6]
- boost/fusion/sequence/comparison/detail/less_equal.hpp [5:6]
- boost/fusion/sequence/comparison/detail/not_equal_to.hpp [5:6]
- boost/fusion/sequence/intrinsic/at_key.hpp [5:6]
- boost/fusion/sequence/intrinsic/back.hpp [4:5]
- boost/fusion/sequence/intrinsic/begin.hpp [4:5]
- boost/fusion/sequence/intrinsic/detail/segmented_size.hpp [4:5]
- boost/fusion/sequence/intrinsic/empty.hpp [4:5]
- boost/fusion/sequence/intrinsic/end.hpp [4:5]
- boost/fusion/sequence/intrinsic/front.hpp [4:5]
- boost/fusion/sequence/intrinsic/has_key.hpp [4:5]
- boost/fusion/sequence/intrinsic/segments.hpp [4:5]
- boost/fusion/sequence/intrinsic/size.hpp [4:5]
- boost/fusion/sequence/intrinsic/swap.hpp [5:6]
- boost/fusion/sequence/intrinsic/value_at.hpp [4:5]
- boost/fusion/sequence/intrinsic/value_at_key.hpp [5:6]
- boost/fusion/sequence/io.hpp [4:5]
- boost/fusion/sequence/io/detail/in.hpp [6:7]
- boost/fusion/sequence/io/detail/manip.hpp [6:7]
- boost/fusion/sequence/io/detail/out.hpp [6:7]
- boost/fusion/sequence/io/out.hpp [6:7]
- boost/fusion/support/category_of.hpp [4:5]
- boost/fusion/support/detail/as_fusion_element.hpp [5:6]
- boost/fusion/support/detail/category_of.hpp [4:5]
- boost/fusion/support/detail/is_mpl_sequence.hpp [5:6]
- boost/fusion/support/detail/is_view.hpp [4:5]
- boost/fusion/support/detail/mpl_iterator_category.hpp [4:5]
- boost/fusion/support/detail/unknown_key.hpp [4:5]
- boost/fusion/support/is_iterator.hpp [4:5]
- boost/fusion/support/is_segmented.hpp [4:5]
- boost/fusion/support/is_view.hpp [4:5]
- boost/fusion/tuple.hpp [4:5]
- boost/fusion/view.hpp [4:5]
- boost/fusion/view/filter_view.hpp [4:5]
- boost/fusion/view/filter_view/detail/begin_impl.hpp [4:5]
- boost/fusion/view/filter_view/detail/deref_impl.hpp [4:5]
- boost/fusion/view/filter_view/detail/end_impl.hpp [4:5]
- boost/fusion/view/filter_view/detail/equal_to_impl.hpp [5:6]
- boost/fusion/view/filter_view/detail/next_impl.hpp [4:5]
- boost/fusion/view/filter_view/detail/size_impl.hpp [4:5]
- boost/fusion/view/filter_view/detail/value_of_impl.hpp [4:5]
- boost/fusion/view/filter_view/filter_view.hpp [4:5]
- boost/fusion/view/iterator_range.hpp [4:5]
- boost/fusion/view/iterator_range/detail/begin_impl.hpp [4:5]
- boost/fusion/view/iterator_range/detail/end_impl.hpp [4:5]
- boost/fusion/view/iterator_range/detail/is_segmented_impl.hpp [4:5]
- boost/fusion/view/iterator_range/detail/segments_impl.hpp [4:5]
- boost/fusion/view/joint_view.hpp [4:5]
- boost/fusion/view/joint_view/detail/begin_impl.hpp [4:5]
- boost/fusion/view/joint_view/detail/deref_impl.hpp [4:5]
- boost/fusion/view/joint_view/detail/end_impl.hpp [4:5]
- boost/fusion/view/joint_view/detail/next_impl.hpp [4:5]
- boost/fusion/view/joint_view/detail/value_of_impl.hpp [4:5]
- boost/fusion/view/nview.hpp [6:7]
- boost/fusion/view/nview/detail/at_impl.hpp [4:5]
- boost/fusion/view/nview/detail/size_impl.hpp [4:5]
- boost/fusion/view/nview/detail/value_at_impl.hpp [4:5]
- boost/fusion/view/nview/nview.hpp [4:5]
- boost/fusion/view/nview/nview_iterator.hpp [4:5]
- boost/fusion/view/reverse_view.hpp [4:5]
- boost/fusion/view/reverse_view/detail/advance_impl.hpp [5:6]
- boost/fusion/view/reverse_view/detail/begin_impl.hpp [4:5]
- boost/fusion/view/reverse_view/detail/deref_impl.hpp [4:5]
- boost/fusion/view/reverse_view/detail/distance_impl.hpp [5:6]
- boost/fusion/view/reverse_view/detail/end_impl.hpp [4:5]
- boost/fusion/view/reverse_view/detail/next_impl.hpp [4:5]
- boost/fusion/view/reverse_view/detail/prior_impl.hpp [4:5]
- boost/fusion/view/reverse_view/detail/value_of_impl.hpp [4:5]
- boost/fusion/view/reverse_view/reverse_view.hpp [4:5]
- boost/fusion/view/single_view.hpp [4:5]
- boost/fusion/view/single_view/detail/advance_impl.hpp [4:5]
- boost/fusion/view/single_view/detail/at_impl.hpp [4:5]
- boost/fusion/view/single_view/detail/begin_impl.hpp [5:6]
- boost/fusion/view/single_view/detail/deref_impl.hpp [5:6]
- boost/fusion/view/single_view/detail/end_impl.hpp [5:6]
- boost/fusion/view/single_view/detail/size_impl.hpp [4:5]
- boost/fusion/view/single_view/detail/value_at_impl.hpp [4:5]
- boost/fusion/view/single_view/detail/value_of_impl.hpp [5:6]
- boost/fusion/view/single_view/single_view.hpp [5:6]
- boost/fusion/view/single_view/single_view_iterator.hpp [5:6]
- boost/fusion/view/transform_view.hpp [4:5]
- boost/fusion/view/transform_view/detail/advance_impl.hpp [5:6]
- boost/fusion/view/transform_view/detail/apply_transform_result.hpp [5:6]
- boost/fusion/view/transform_view/detail/at_impl.hpp [5:6]
- boost/fusion/view/transform_view/detail/begin_impl.hpp [4:5]
- boost/fusion/view/transform_view/detail/deref_impl.hpp [4:5]
- boost/fusion/view/transform_view/detail/distance_impl.hpp [5:6]
- boost/fusion/view/transform_view/detail/end_impl.hpp [4:5]
- boost/fusion/view/transform_view/detail/equal_to_impl.hpp [4:5]
- boost/fusion/view/transform_view/detail/next_impl.hpp [4:5]
- boost/fusion/view/transform_view/detail/prior_impl.hpp [5:6]
- boost/fusion/view/transform_view/detail/value_of_impl.hpp [4:5]
- boost/fusion/view/transform_view/transform_view.hpp [4:5]
- boost/fusion/view/transform_view/transform_view_fwd.hpp [4:5]
- boost/fusion/view/zip_view.hpp [5:6]
- boost/fusion/view/zip_view/detail/advance_impl.hpp [5:6]
- boost/fusion/view/zip_view/detail/at_impl.hpp [5:6]
- boost/fusion/view/zip_view/detail/begin_impl.hpp [5:6]
- boost/fusion/view/zip_view/detail/deref_impl.hpp [5:6]
- boost/fusion/view/zip_view/detail/distance_impl.hpp [5:6]
- boost/fusion/view/zip_view/detail/end_impl.hpp [5:6]
- boost/fusion/view/zip_view/detail/equal_to_impl.hpp [5:6]
- boost/fusion/view/zip_view/detail/next_impl.hpp [5:6]
- boost/fusion/view/zip_view/detail/prior_impl.hpp [5:6]
- boost/fusion/view/zip_view/detail/size_impl.hpp [5:6]
- boost/fusion/view/zip_view/detail/value_at_impl.hpp [5:6]
- boost/fusion/view/zip_view/zip_view.hpp [5:6]
- boost/fusion/view/zip_view/zip_view_iterator.hpp [5:6]
- boost/fusion/view/zip_view/zip_view_iterator_fwd.hpp [5:6]
- boost/phoenix/bind/detail/cpp03/bind_function.hpp [4:5]
- boost/phoenix/bind/detail/cpp03/bind_function.hpp [56:57]
- boost/phoenix/bind/detail/cpp03/bind_function_object.hpp [4:5]
- boost/phoenix/bind/detail/cpp03/bind_function_object.hpp [33:34]
- boost/phoenix/bind/detail/cpp03/bind_member_function.hpp [108:109]
- boost/phoenix/bind/detail/cpp03/function_ptr.hpp [4:5]
- boost/phoenix/bind/detail/cpp03/function_ptr.hpp [97:98]
- boost/phoenix/bind/detail/cpp03/member_function_ptr.hpp [86:87]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_function.hpp [4:5]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_10.hpp [4:5]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object.hpp [4:5]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_10.hpp [4:5]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function.hpp [4:5]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_10.hpp [4:5]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_20.hpp [4:5]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_30.hpp [4:5]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_40.hpp [4:5]
- boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_50.hpp [4:5]
- boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr.hpp [4:5]
- boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_10.hpp [4:5]
- boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr.hpp [4:5]
- boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_10.hpp [4:5]
- boost/phoenix/core/as_actor.hpp [4:5]
- boost/phoenix/core/detail/cpp03/preprocessed/argument.hpp [4:5]
- boost/phoenix/core/detail/cpp03/preprocessed/function_equal.hpp [4:5]
- boost/phoenix/core/detail/cpp03/preprocessed/function_eval.hpp [4:5]
- boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr.hpp [4:5]
- boost/phoenix/core/detail/cpp03/preprocessed/phx2_result.hpp [4:5]
- boost/phoenix/core/detail/expression.hpp [4:5]
- boost/phoenix/core/domain.hpp [5:6]
- boost/phoenix/core/expression.hpp [4:5]
- boost/phoenix/core/is_nullary.hpp [6:7]
- boost/phoenix/core/limits.hpp [4:5]
- boost/phoenix/core/meta_grammar.hpp [6:7]
- boost/phoenix/core/v2_eval.hpp [4:5]
- boost/phoenix/scope/detail/cpp03/preprocessed/lambda.hpp [4:5]
- boost/phoenix/scope/this.hpp [5:6]
- boost/phoenix/stl.hpp [6:7]
- boost/phoenix/stl/algorithm.hpp [7:8]
- boost/phoenix/stl/container.hpp [5:6]
- boost/phoenix/stl/container/detail/container.hpp [5:6]
- boost/phoenix/support/preprocessed/vector.hpp [4:5]
- boost/phoenix/support/preprocessor/round.hpp [4:5]
- boost/spirit/home/qi/action.hpp [4:5]
- boost/spirit/home/qi/char.hpp [4:5]
-
-KEEP BSL-1.0 dde9acabf5742901105539d5f17431bd
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/list/to_array.hpp at line 6
- License text:
- \# * Distributed under the Boost Software License, Version 1.0. (See
- \# * accompanying file LICENSE_1_0.txt or copy at
- \# * http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/preprocessor/list/to_array.hpp [5:7]
-
-KEEP BSL-1.0 ddf3aa9096c8b1813b5286b27c8ff567
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/concept/detail/backward_compatibility.hpp at line 3
- License text:
- // Copyright David Abrahams 2009. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/concept/detail/backward_compatibility.hpp [1:3]
-
-KEEP BSL-1.0 deee9a766b5b9de6341124086cf18c15
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/allocator.hpp at line 5, boost/container/detail/auto_link.hpp at line 5, boost/container/detail/singleton.hpp at line 16
- License text:
- // (C) Copyright Ion Gaztanaga 2007-2013. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/container/allocator.hpp [3:5]
- boost/container/detail/auto_link.hpp [3:5]
- boost/container/detail/singleton.hpp [14:16]
-
-KEEP BSL-1.0 e03c043ca7052925e34194f3fe2631e4
-BELONGS ya.make
- License text:
- // Distributed under the Boost Software License, Version 1.0.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/msm/mpl_graph/mpl_graph.hpp [8:8]
- boost/utility/detail/minstd_rand.hpp [6:6]
-
-KEEP BSL-1.0 e30802d624ab26a07227b82c6380e880
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/proto/detail/deduce_domain.hpp at line 9
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/proto/detail/deduce_domain.hpp [7:9]
-
-KEEP BSL-1.0 e36b3a71b94a65181100fbb5aeb04562
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/detail/detector.hpp at line 6, boost/type_traits/detected.hpp at line 6, boost/type_traits/detected_or.hpp at line 6, boost/type_traits/is_detected.hpp at line 6, boost/type_traits/is_detected_convertible.hpp at line 6, boost/type_traits/is_detected_exact.hpp at line 6, boost/type_traits/make_void.hpp at line 6, boost/type_traits/nonesuch.hpp at line 6
- License text:
- Distributed under the Boost Software License,
- Version 1.0. (See accompanying file LICENSE_1_0.txt
- or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/type_traits/detail/detector.hpp [5:7]
- boost/type_traits/detected.hpp [5:7]
- boost/type_traits/detected_or.hpp [5:7]
- boost/type_traits/is_detected.hpp [5:7]
- boost/type_traits/is_detected_convertible.hpp [5:7]
- boost/type_traits/is_detected_exact.hpp [5:7]
- boost/type_traits/make_void.hpp [5:7]
- boost/type_traits/nonesuch.hpp [5:7]
-
-KEEP BSL-1.0 e4571f5c07b0b6bd8c6bbcb297d4610d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signals2/variadic_slot.hpp at line 6
- License text:
- // distribution is subject to the Boost Software License, Version
- // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 87.50
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/signals2/variadic_slot.hpp [5:7]
-
-SKIP Public-Domain e554616ea381325a766aa070edbb78a7
-BELONGS ya.make
- License text:
- // Derived from a public domain implementation written by Daniel Casimiro.
- Scancode info:
- Original SPDX id: LicenseRef-scancode-public-domain
- Score : 100.00
- Match type : NOTICE
- Links : http://www.linfo.org/publicdomain.html, https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/public-domain.LICENSE
- Files with this license:
- boost/asio/local/basic_endpoint.hpp [6:6]
- boost/asio/local/detail/endpoint.hpp [6:6]
- boost/asio/local/detail/impl/endpoint.ipp [6:6]
-
-SKIP MPL-1.1 e5f161acc2254dcdb84c03a759f0ad62
-BELONGS ya.make
- License text:
- //! Classic MPL-style metafunction returning the nth element of a type
- Scancode info:
- Original SPDX id: MPL-1.1
- Score : 80.00
- Match type : REFERENCE
- Links : http://www.mozilla.com/MPL/1.1/index.html, http://www.mozilla.org/MPL/MPL-1.1.html, https://spdx.org/licenses/MPL-1.1
- Files with this license:
- boost/hana/detail/type_at.hpp [44:44]
-
-KEEP BSL-1.0 e62661610d95a7bb4df4f06296a137df
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/ptr_container/detail/serialize_xml_names.hpp at line 6, boost/ptr_container/indirect_fun.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/ptr_container/detail/serialize_xml_names.hpp [4:7]
- boost/ptr_container/indirect_fun.hpp [4:7]
-
-KEEP BSL-1.0 e6392165abe6e8ce8497cc77611fbaaf
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/wave.hpp at line 10, boost/wave/cpp_context.hpp at line 9, boost/wave/cpp_exceptions.hpp at line 8, boost/wave/cpp_iteration_context.hpp at line 9, boost/wave/cpp_throw.hpp at line 8, boost/wave/cpplexer/convert_trigraphs.hpp at line 10, boost/wave/cpplexer/cpp_lex_interface.hpp at line 10, boost/wave/cpplexer/cpp_lex_interface_generator.hpp at line 10, boost/wave/cpplexer/cpp_lex_iterator.hpp at line 10, boost/wave/cpplexer/cpp_lex_token.hpp at line 10, boost/wave/cpplexer/cpplexer_exceptions.hpp at line 8, boost/wave/cpplexer/detect_include_guards.hpp at line 27, boost/wave/cpplexer/re2clex/cpp_re.hpp at line 10, boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp at line 10, boost/wave/cpplexer/token_cache.hpp at line 8, boost/wave/cpplexer/validate_universal_char.hpp at line 10, boost/wave/grammars/cpp_chlit_grammar.hpp at line 8, boost/wave/grammars/cpp_defined_grammar.hpp at line 8, boost/wave/grammars/cpp_defined_grammar_gen.hpp at line 8, boost/wave/grammars/cpp_expression_grammar.hpp at line 8, boost/wave/grammars/cpp_expression_grammar_gen.hpp at line 8, boost/wave/grammars/cpp_expression_value.hpp at line 8, boost/wave/grammars/cpp_grammar.hpp at line 8, boost/wave/grammars/cpp_grammar_gen.hpp at line 8, boost/wave/grammars/cpp_intlit_grammar.hpp at line 8, boost/wave/grammars/cpp_literal_grammar_gen.hpp at line 8, boost/wave/grammars/cpp_predef_macros_gen.hpp at line 8, boost/wave/grammars/cpp_predef_macros_grammar.hpp at line 8, boost/wave/grammars/cpp_value_error.hpp at line 8, boost/wave/language_support.hpp at line 9, boost/wave/preprocessing_hooks.hpp at line 8, boost/wave/token_ids.hpp at line 10, boost/wave/util/cpp_ifblock.hpp at line 8, boost/wave/util/cpp_include_paths.hpp at line 8, boost/wave/util/cpp_iterator.hpp at line 10, boost/wave/util/cpp_macromap.hpp at line 10, boost/wave/util/cpp_macromap_predef.hpp at line 10, boost/wave/util/cpp_macromap_utils.hpp at line 10, boost/wave/util/file_position.hpp at line 10, boost/wave/util/filesystem_compatibility.hpp at line 8, boost/wave/util/functor_input.hpp at line 8, boost/wave/util/insert_whitespace_detection.hpp at line 10, boost/wave/util/interpret_pragma.hpp at line 8, boost/wave/util/iteration_context.hpp at line 8, boost/wave/util/macro_definition.hpp at line 8, boost/wave/util/macro_helpers.hpp at line 8, boost/wave/util/pattern_parser.hpp at line 10, boost/wave/util/symbol_table.hpp at line 8, boost/wave/util/time_conversion_helper.hpp at line 8, boost/wave/util/transform_iterator.hpp at line 8, boost/wave/util/unput_queue_iterator.hpp at line 10, boost/wave/wave_config.hpp at line 10, boost/wave/wave_config_constant.hpp at line 9, boost/wave/wave_version.hpp at line 10
- License text:
- Copyright (c) 2001-2012 Hartmut Kaiser. Distributed under the Boost
- Software License, Version 1.0. (See accompanying file
- LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/wave.hpp [8:10]
- boost/wave/cpp_context.hpp [7:9]
- boost/wave/cpp_exceptions.hpp [6:8]
- boost/wave/cpp_iteration_context.hpp [7:9]
- boost/wave/cpp_throw.hpp [6:8]
- boost/wave/cpplexer/convert_trigraphs.hpp [8:10]
- boost/wave/cpplexer/cpp_lex_interface.hpp [8:10]
- boost/wave/cpplexer/cpp_lex_interface_generator.hpp [8:10]
- boost/wave/cpplexer/cpp_lex_iterator.hpp [8:10]
- boost/wave/cpplexer/cpp_lex_token.hpp [8:10]
- boost/wave/cpplexer/cpplexer_exceptions.hpp [6:8]
- boost/wave/cpplexer/detect_include_guards.hpp [25:27]
- boost/wave/cpplexer/re2clex/cpp_re.hpp [8:10]
- boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp [8:10]
- boost/wave/cpplexer/token_cache.hpp [6:8]
- boost/wave/cpplexer/validate_universal_char.hpp [8:10]
- boost/wave/grammars/cpp_chlit_grammar.hpp [6:8]
- boost/wave/grammars/cpp_defined_grammar.hpp [6:8]
- boost/wave/grammars/cpp_defined_grammar_gen.hpp [6:8]
- boost/wave/grammars/cpp_expression_grammar.hpp [6:8]
- boost/wave/grammars/cpp_expression_grammar_gen.hpp [6:8]
- boost/wave/grammars/cpp_expression_value.hpp [6:8]
- boost/wave/grammars/cpp_grammar.hpp [6:8]
- boost/wave/grammars/cpp_grammar_gen.hpp [6:8]
- boost/wave/grammars/cpp_intlit_grammar.hpp [6:8]
- boost/wave/grammars/cpp_literal_grammar_gen.hpp [6:8]
- boost/wave/grammars/cpp_predef_macros_gen.hpp [6:8]
- boost/wave/grammars/cpp_predef_macros_grammar.hpp [6:8]
- boost/wave/grammars/cpp_value_error.hpp [6:8]
- boost/wave/language_support.hpp [7:9]
- boost/wave/preprocessing_hooks.hpp [6:8]
- boost/wave/token_ids.hpp [8:10]
- boost/wave/util/cpp_ifblock.hpp [6:8]
- boost/wave/util/cpp_include_paths.hpp [6:8]
- boost/wave/util/cpp_iterator.hpp [8:10]
- boost/wave/util/cpp_macromap.hpp [8:10]
- boost/wave/util/cpp_macromap_predef.hpp [8:10]
- boost/wave/util/cpp_macromap_utils.hpp [8:10]
- boost/wave/util/file_position.hpp [8:10]
- boost/wave/util/filesystem_compatibility.hpp [6:8]
- boost/wave/util/functor_input.hpp [6:8]
- boost/wave/util/insert_whitespace_detection.hpp [8:10]
- boost/wave/util/interpret_pragma.hpp [6:8]
- boost/wave/util/iteration_context.hpp [6:8]
- boost/wave/util/macro_definition.hpp [6:8]
- boost/wave/util/macro_helpers.hpp [6:8]
- boost/wave/util/pattern_parser.hpp [8:10]
- boost/wave/util/symbol_table.hpp [6:8]
- boost/wave/util/time_conversion_helper.hpp [6:8]
- boost/wave/util/transform_iterator.hpp [6:8]
- boost/wave/util/unput_queue_iterator.hpp [8:10]
- boost/wave/wave_config.hpp [8:10]
- boost/wave/wave_config_constant.hpp [7:9]
- boost/wave/wave_version.hpp [8:10]
-
-KEEP BSL-1.0 e6a3c462b8c40b8d1b8ef9a1bfe334ea
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/progress.hpp at line 5, boost/timer.hpp at line 5
- License text:
- // Copyright Beman Dawes 1994-99. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/progress.hpp [3:5]
- boost/timer.hpp [3:5]
-
-KEEP BSL-1.0 e7b5dc404b6b2102b4aa561aee20a2fc
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/detail/min_max.hpp at line 4
- License text:
- // Copyright 2016 John Maddock. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/multiprecision/detail/min_max.hpp [2:4]
-
-KEEP BSL-1.0 e839de25ce13e3e85a6d98035de17196
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/token_iterator.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 92.11
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/token_iterator.hpp [4:10]
-
-KEEP BSL-1.0 e87c3dd71a4ef19d4c3d2331ca65352f
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/uuid/basic_name_generator.hpp at line 7, boost/uuid/name_generator.hpp at line 7, boost/uuid/name_generator_md5.hpp at line 6, boost/uuid/name_generator_sha1.hpp at line 7
- License text:
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/uuid/basic_name_generator.hpp [6:8]
- boost/uuid/name_generator.hpp [6:8]
- boost/uuid/name_generator_md5.hpp [5:7]
- boost/uuid/name_generator_sha1.hpp [6:8]
-
-KEEP MIT e8fa61ad26065c016c4c968298a683bd
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: MIT
- Score : 100.00
- Match type : TEXT
- Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
- Files with this license:
- boost/graph/boykov_kolmogorov_max_flow.hpp [5:24]
- boost/graph/write_dimacs.hpp [5:24]
-
-KEEP BSL-1.0 e9074560eedac47c976141d60b050ab5
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/traits/is_backend.hpp at line 4, boost/multiprecision/traits/is_byte_container.hpp at line 4
- License text:
- // Copyright 2015 John Maddock. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/multiprecision/traits/is_backend.hpp [2:4]
- boost/multiprecision/traits/is_byte_container.hpp [2:4]
-
-KEEP BSL-1.0 e91594a20efc45dd4517624478c6c351
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/detail/no_et_ops.hpp at line 4, boost/multiprecision/detail/number_compare.hpp at line 4, boost/multiprecision/traits/explicit_conversion.hpp at line 5, boost/multiprecision/traits/is_restricted_conversion.hpp at line 5
- License text:
- // Copyright 2012 John Maddock. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/multiprecision/detail/no_et_ops.hpp [2:4]
- boost/multiprecision/detail/number_compare.hpp [2:4]
- boost/multiprecision/traits/explicit_conversion.hpp [3:5]
- boost/multiprecision/traits/is_restricted_conversion.hpp [3:5]
-
-KEEP BSL-1.0 e933f75317e8b0dd6596263caf28e994
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/numeric/odeint/algebra/default_operations.hpp at line 13, boost/numeric/odeint/algebra/detail/for_each.hpp at line 13, boost/numeric/odeint/algebra/range_algebra.hpp at line 14, boost/numeric/odeint/external/openmp/openmp_nested_algebra.hpp at line 14, boost/numeric/odeint/external/openmp/openmp_range_algebra.hpp at line 14
- License text:
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or
- copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/numeric/odeint/algebra/default_operations.hpp [12:14]
- boost/numeric/odeint/algebra/detail/for_each.hpp [12:14]
- boost/numeric/odeint/algebra/range_algebra.hpp [13:15]
- boost/numeric/odeint/external/openmp/openmp_nested_algebra.hpp [13:15]
- boost/numeric/odeint/external/openmp/openmp_range_algebra.hpp [13:15]
-
-KEEP BSL-1.0 e9bbf58ab1f2bd1f5073e4b511502f61
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/adaptor/copied.hpp at line 5, boost/range/adaptor/tokenized.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/range/adaptor/copied.hpp [3:6]
- boost/range/adaptor/tokenized.hpp [3:6]
-
-KEEP BSL-1.0 ecd6153baa3f865870856f438e1eeac7
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/io/ios_state.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/io/ios_state.hpp [3:5]
-
-KEEP BSL-1.0 ee282eae3937cec525b57093b02f02a8
-BELONGS ya.make
- License text:
- // Distributed under the Boost Software License, Version 1.0
- // http://www.boost.org/LICENSE_1_0.txt
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 94.44
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/detail/bitmask.hpp [5:6]
-
-KEEP BSL-1.0 ee3962a5a0bcf4ba36442d07459aa81f
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/compute.hpp at line 5, boost/compute/algorithm.hpp at line 5, boost/compute/algorithm/accumulate.hpp at line 5, boost/compute/algorithm/adjacent_difference.hpp at line 5, boost/compute/algorithm/adjacent_find.hpp at line 5, boost/compute/algorithm/all_of.hpp at line 5, boost/compute/algorithm/any_of.hpp at line 5, boost/compute/algorithm/binary_search.hpp at line 5, boost/compute/algorithm/copy.hpp at line 5, boost/compute/algorithm/copy_if.hpp at line 5, boost/compute/algorithm/copy_n.hpp at line 5, boost/compute/algorithm/count.hpp at line 5, boost/compute/algorithm/count_if.hpp at line 5, boost/compute/algorithm/detail/balanced_path.hpp at line 5, boost/compute/algorithm/detail/binary_find.hpp at line 5, boost/compute/algorithm/detail/compact.hpp at line 5, boost/compute/algorithm/detail/copy_on_device.hpp at line 5, boost/compute/algorithm/detail/copy_to_device.hpp at line 5, boost/compute/algorithm/detail/copy_to_host.hpp at line 5, boost/compute/algorithm/detail/count_if_with_ballot.hpp at line 5, boost/compute/algorithm/detail/count_if_with_reduce.hpp at line 5, boost/compute/algorithm/detail/count_if_with_threads.hpp at line 5, boost/compute/algorithm/detail/find_extrema.hpp at line 5, boost/compute/algorithm/detail/find_extrema_on_cpu.hpp at line 5, boost/compute/algorithm/detail/find_extrema_with_atomics.hpp at line 5, boost/compute/algorithm/detail/find_extrema_with_reduce.hpp at line 5, boost/compute/algorithm/detail/find_if_with_atomics.hpp at line 5, boost/compute/algorithm/detail/inplace_reduce.hpp at line 5, boost/compute/algorithm/detail/insertion_sort.hpp at line 5, boost/compute/algorithm/detail/merge_path.hpp at line 5, boost/compute/algorithm/detail/merge_sort_on_cpu.hpp at line 5, boost/compute/algorithm/detail/merge_sort_on_gpu.hpp at line 5, boost/compute/algorithm/detail/merge_with_merge_path.hpp at line 5, boost/compute/algorithm/detail/radix_sort.hpp at line 5, boost/compute/algorithm/detail/random_fill.hpp at line 5, boost/compute/algorithm/detail/reduce_by_key.hpp at line 5, boost/compute/algorithm/detail/reduce_by_key_with_scan.hpp at line 5, boost/compute/algorithm/detail/reduce_on_cpu.hpp at line 5, boost/compute/algorithm/detail/reduce_on_gpu.hpp at line 5, boost/compute/algorithm/detail/scan.hpp at line 5, boost/compute/algorithm/detail/scan_on_cpu.hpp at line 5, boost/compute/algorithm/detail/scan_on_gpu.hpp at line 5, boost/compute/algorithm/detail/search_all.hpp at line 5, boost/compute/algorithm/detail/serial_accumulate.hpp at line 5, boost/compute/algorithm/detail/serial_count_if.hpp at line 5, boost/compute/algorithm/detail/serial_find_extrema.hpp at line 5, boost/compute/algorithm/detail/serial_merge.hpp at line 5, boost/compute/algorithm/detail/serial_reduce.hpp at line 5, boost/compute/algorithm/detail/serial_reduce_by_key.hpp at line 5, boost/compute/algorithm/detail/serial_scan.hpp at line 5, boost/compute/algorithm/equal.hpp at line 5, boost/compute/algorithm/equal_range.hpp at line 5, boost/compute/algorithm/exclusive_scan.hpp at line 5, boost/compute/algorithm/fill.hpp at line 5, boost/compute/algorithm/fill_n.hpp at line 5, boost/compute/algorithm/find.hpp at line 5, boost/compute/algorithm/find_end.hpp at line 5, boost/compute/algorithm/find_if.hpp at line 5, boost/compute/algorithm/find_if_not.hpp at line 5, boost/compute/algorithm/for_each.hpp at line 5, boost/compute/algorithm/for_each_n.hpp at line 5, boost/compute/algorithm/gather.hpp at line 5, boost/compute/algorithm/generate.hpp at line 5, boost/compute/algorithm/generate_n.hpp at line 5, boost/compute/algorithm/includes.hpp at line 5, boost/compute/algorithm/inclusive_scan.hpp at line 5, boost/compute/algorithm/inner_product.hpp at line 5, boost/compute/algorithm/inplace_merge.hpp at line 5, boost/compute/algorithm/iota.hpp at line 5, boost/compute/algorithm/is_partitioned.hpp at line 5, boost/compute/algorithm/is_permutation.hpp at line 5, boost/compute/algorithm/is_sorted.hpp at line 5, boost/compute/algorithm/lexicographical_compare.hpp at line 5, boost/compute/algorithm/lower_bound.hpp at line 5, boost/compute/algorithm/max_element.hpp at line 5, boost/compute/algorithm/merge.hpp at line 5, boost/compute/algorithm/min_element.hpp at line 5, boost/compute/algorithm/minmax_element.hpp at line 5, boost/compute/algorithm/mismatch.hpp at line 5, boost/compute/algorithm/next_permutation.hpp at line 5, boost/compute/algorithm/none_of.hpp at line 5, boost/compute/algorithm/nth_element.hpp at line 5, boost/compute/algorithm/partial_sum.hpp at line 5, boost/compute/algorithm/partition.hpp at line 5, boost/compute/algorithm/partition_copy.hpp at line 5, boost/compute/algorithm/partition_point.hpp at line 5, boost/compute/algorithm/prev_permutation.hpp at line 5, boost/compute/algorithm/random_shuffle.hpp at line 5, boost/compute/algorithm/reduce.hpp at line 5, boost/compute/algorithm/reduce_by_key.hpp at line 5, boost/compute/algorithm/remove.hpp at line 5, boost/compute/algorithm/remove_if.hpp at line 5, boost/compute/algorithm/replace.hpp at line 5, boost/compute/algorithm/replace_copy.hpp at line 5, boost/compute/algorithm/reverse.hpp at line 5, boost/compute/algorithm/reverse_copy.hpp at line 5, boost/compute/algorithm/rotate.hpp at line 5, boost/compute/algorithm/rotate_copy.hpp at line 5, boost/compute/algorithm/scatter.hpp at line 5, boost/compute/algorithm/scatter_if.hpp at line 5, boost/compute/algorithm/search.hpp at line 5, boost/compute/algorithm/search_n.hpp at line 5, boost/compute/algorithm/set_difference.hpp at line 5, boost/compute/algorithm/set_intersection.hpp at line 5, boost/compute/algorithm/set_symmetric_difference.hpp at line 5, boost/compute/algorithm/set_union.hpp at line 5, boost/compute/algorithm/sort.hpp at line 5, boost/compute/algorithm/sort_by_key.hpp at line 5, boost/compute/algorithm/stable_partition.hpp at line 5, boost/compute/algorithm/stable_sort.hpp at line 5, boost/compute/algorithm/stable_sort_by_key.hpp at line 5, boost/compute/algorithm/swap_ranges.hpp at line 5, boost/compute/algorithm/transform.hpp at line 5, boost/compute/algorithm/transform_if.hpp at line 5, boost/compute/algorithm/transform_reduce.hpp at line 5, boost/compute/algorithm/unique.hpp at line 5, boost/compute/algorithm/unique_copy.hpp at line 5, boost/compute/algorithm/upper_bound.hpp at line 5, boost/compute/allocator.hpp at line 5, boost/compute/allocator/buffer_allocator.hpp at line 5, boost/compute/allocator/pinned_allocator.hpp at line 5, boost/compute/async.hpp at line 5, boost/compute/async/future.hpp at line 5, boost/compute/async/wait.hpp at line 5, boost/compute/async/wait_guard.hpp at line 5, boost/compute/buffer.hpp at line 5, boost/compute/cl.hpp at line 5, boost/compute/cl_ext.hpp at line 5, boost/compute/closure.hpp at line 5, boost/compute/command_queue.hpp at line 5, boost/compute/config.hpp at line 5, boost/compute/container.hpp at line 5, boost/compute/container/array.hpp at line 5, boost/compute/container/basic_string.hpp at line 5, boost/compute/container/detail/scalar.hpp at line 5, boost/compute/container/dynamic_bitset.hpp at line 5, boost/compute/container/flat_map.hpp at line 5, boost/compute/container/flat_set.hpp at line 5, boost/compute/container/mapped_view.hpp at line 5, boost/compute/container/stack.hpp at line 5, boost/compute/container/string.hpp at line 5, boost/compute/container/valarray.hpp at line 5, boost/compute/container/vector.hpp at line 5, boost/compute/context.hpp at line 5, boost/compute/core.hpp at line 5, boost/compute/detail/assert_cl_success.hpp at line 5, boost/compute/detail/buffer_value.hpp at line 5, boost/compute/detail/device_ptr.hpp at line 5, boost/compute/detail/diagnostic.hpp at line 5, boost/compute/detail/duration.hpp at line 5, boost/compute/detail/get_object_info.hpp at line 5, boost/compute/detail/getenv.hpp at line 5, boost/compute/detail/global_static.hpp at line 5, boost/compute/detail/is_buffer_iterator.hpp at line 5, boost/compute/detail/is_contiguous_iterator.hpp at line 5, boost/compute/detail/iterator_plus_distance.hpp at line 5, boost/compute/detail/iterator_range_size.hpp at line 5, boost/compute/detail/iterator_traits.hpp at line 5, boost/compute/detail/literal.hpp at line 5, boost/compute/detail/lru_cache.hpp at line 5, boost/compute/detail/meta_kernel.hpp at line 5, boost/compute/detail/mpl_vector_to_tuple.hpp at line 5, boost/compute/detail/nvidia_compute_capability.hpp at line 5, boost/compute/detail/parameter_cache.hpp at line 5, boost/compute/detail/path.hpp at line 5, boost/compute/detail/print_range.hpp at line 5, boost/compute/detail/read_write_single_value.hpp at line 5, boost/compute/detail/sha1.hpp at line 5, boost/compute/detail/vendor.hpp at line 5, boost/compute/detail/work_size.hpp at line 5, boost/compute/device.hpp at line 5, boost/compute/event.hpp at line 5, boost/compute/exception.hpp at line 5, boost/compute/exception/context_error.hpp at line 5, boost/compute/exception/no_device_found.hpp at line 5, boost/compute/exception/opencl_error.hpp at line 5, boost/compute/exception/unsupported_extension_error.hpp at line 5, boost/compute/experimental/clamp_range.hpp at line 5, boost/compute/experimental/malloc.hpp at line 5, boost/compute/experimental/sort_by_transform.hpp at line 5, boost/compute/experimental/tabulate.hpp at line 5, boost/compute/function.hpp at line 5, boost/compute/functional.hpp at line 5, boost/compute/functional/as.hpp at line 5, boost/compute/functional/atomic.hpp at line 5, boost/compute/functional/bind.hpp at line 5, boost/compute/functional/common.hpp at line 5, boost/compute/functional/convert.hpp at line 5, boost/compute/functional/detail/macros.hpp at line 5, boost/compute/functional/detail/nvidia_ballot.hpp at line 5, boost/compute/functional/detail/nvidia_popcount.hpp at line 5, boost/compute/functional/detail/unpack.hpp at line 5, boost/compute/functional/field.hpp at line 5, boost/compute/functional/geometry.hpp at line 5, boost/compute/functional/get.hpp at line 5, boost/compute/functional/hash.hpp at line 5, boost/compute/functional/identity.hpp at line 5, boost/compute/functional/integer.hpp at line 5, boost/compute/functional/logical.hpp at line 5, boost/compute/functional/math.hpp at line 5, boost/compute/functional/operator.hpp at line 5, boost/compute/functional/popcount.hpp at line 5, boost/compute/functional/relational.hpp at line 5, boost/compute/image.hpp at line 5, boost/compute/image/image1d.hpp at line 5, boost/compute/image/image2d.hpp at line 5, boost/compute/image/image3d.hpp at line 5, boost/compute/image/image_format.hpp at line 5, boost/compute/image/image_object.hpp at line 5, boost/compute/image/image_sampler.hpp at line 5, boost/compute/image2d.hpp at line 5, boost/compute/image3d.hpp at line 5, boost/compute/image_format.hpp at line 5, boost/compute/image_sampler.hpp at line 5, boost/compute/interop/eigen.hpp at line 5, boost/compute/interop/eigen/core.hpp at line 5, boost/compute/interop/opencv.hpp at line 5, boost/compute/interop/opencv/core.hpp at line 5, boost/compute/interop/opencv/highgui.hpp at line 5, boost/compute/interop/opencv/ocl.hpp at line 5, boost/compute/interop/opengl.hpp at line 5, boost/compute/interop/opengl/acquire.hpp at line 5, boost/compute/interop/opengl/cl_gl.hpp at line 5, boost/compute/interop/opengl/cl_gl_ext.hpp at line 5, boost/compute/interop/opengl/context.hpp at line 5, boost/compute/interop/opengl/gl.hpp at line 5, boost/compute/interop/opengl/opengl_buffer.hpp at line 5, boost/compute/interop/opengl/opengl_renderbuffer.hpp at line 5, boost/compute/interop/opengl/opengl_texture.hpp at line 5, boost/compute/interop/qt.hpp at line 5, boost/compute/interop/qt/qimage.hpp at line 5, boost/compute/interop/qt/qpoint.hpp at line 5, boost/compute/interop/qt/qpointf.hpp at line 5, boost/compute/interop/qt/qtcore.hpp at line 5, boost/compute/interop/qt/qtgui.hpp at line 5, boost/compute/interop/qt/qvector.hpp at line 5, boost/compute/interop/vtk.hpp at line 5, boost/compute/interop/vtk/bounds.hpp at line 5, boost/compute/interop/vtk/data_array.hpp at line 5, boost/compute/interop/vtk/matrix4x4.hpp at line 5, boost/compute/interop/vtk/points.hpp at line 5, boost/compute/iterator.hpp at line 5, boost/compute/iterator/buffer_iterator.hpp at line 5, boost/compute/iterator/constant_buffer_iterator.hpp at line 5, boost/compute/iterator/constant_iterator.hpp at line 5, boost/compute/iterator/counting_iterator.hpp at line 5, boost/compute/iterator/detail/get_base_iterator_buffer.hpp at line 5, boost/compute/iterator/detail/swizzle_iterator.hpp at line 5, boost/compute/iterator/discard_iterator.hpp at line 5, boost/compute/iterator/function_input_iterator.hpp at line 5, boost/compute/iterator/permutation_iterator.hpp at line 5, boost/compute/iterator/strided_iterator.hpp at line 5, boost/compute/iterator/transform_iterator.hpp at line 5, boost/compute/iterator/zip_iterator.hpp at line 5, boost/compute/kernel.hpp at line 5, boost/compute/lambda.hpp at line 5, boost/compute/lambda/context.hpp at line 5, boost/compute/lambda/functional.hpp at line 5, boost/compute/lambda/get.hpp at line 5, boost/compute/lambda/make_pair.hpp at line 5, boost/compute/lambda/make_tuple.hpp at line 5, boost/compute/lambda/placeholder.hpp at line 5, boost/compute/lambda/placeholders.hpp at line 5, boost/compute/lambda/result_of.hpp at line 5, boost/compute/memory.hpp at line 5, boost/compute/memory/local_buffer.hpp at line 5, boost/compute/memory/svm_ptr.hpp at line 5, boost/compute/memory_object.hpp at line 5, boost/compute/pipe.hpp at line 5, boost/compute/platform.hpp at line 5, boost/compute/program.hpp at line 5, boost/compute/random.hpp at line 5, boost/compute/random/bernoulli_distribution.hpp at line 5, boost/compute/random/default_random_engine.hpp at line 5, boost/compute/random/discrete_distribution.hpp at line 5, boost/compute/random/linear_congruential_engine.hpp at line 5, boost/compute/random/mersenne_twister_engine.hpp at line 5, boost/compute/random/normal_distribution.hpp at line 5, boost/compute/random/threefry_engine.hpp at line 5, boost/compute/random/uniform_int_distribution.hpp at line 5, boost/compute/random/uniform_real_distribution.hpp at line 5, boost/compute/source.hpp at line 5, boost/compute/svm.hpp at line 5, boost/compute/system.hpp at line 5, boost/compute/type_traits.hpp at line 5, boost/compute/type_traits/common_type.hpp at line 5, boost/compute/type_traits/detail/capture_traits.hpp at line 5, boost/compute/type_traits/is_device_iterator.hpp at line 5, boost/compute/type_traits/is_fundamental.hpp at line 5, boost/compute/type_traits/is_vector_type.hpp at line 5, boost/compute/type_traits/make_vector_type.hpp at line 5, boost/compute/type_traits/result_of.hpp at line 5, boost/compute/type_traits/scalar_type.hpp at line 5, boost/compute/type_traits/type_definition.hpp at line 5, boost/compute/type_traits/type_name.hpp at line 5, boost/compute/type_traits/vector_size.hpp at line 5, boost/compute/types.hpp at line 5, boost/compute/types/builtin.hpp at line 5, boost/compute/types/complex.hpp at line 5, boost/compute/types/fundamental.hpp at line 5, boost/compute/types/pair.hpp at line 5, boost/compute/types/size_t.hpp at line 5, boost/compute/types/struct.hpp at line 5, boost/compute/types/tuple.hpp at line 5, boost/compute/user_event.hpp at line 5, boost/compute/utility.hpp at line 5, boost/compute/utility/dim.hpp at line 5, boost/compute/utility/extents.hpp at line 5, boost/compute/utility/invoke.hpp at line 5, boost/compute/utility/program_cache.hpp at line 5, boost/compute/utility/source.hpp at line 5, boost/compute/utility/wait_list.hpp at line 5, boost/compute/version.hpp at line 5, boost/compute/wait_list.hpp at line 5
- License text:
- // Distributed under the Boost Software License, Version 1.0
- // See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/compute.hpp [4:6]
- boost/compute/algorithm.hpp [4:6]
- boost/compute/algorithm/accumulate.hpp [4:6]
- boost/compute/algorithm/adjacent_difference.hpp [4:6]
- boost/compute/algorithm/adjacent_find.hpp [4:6]
- boost/compute/algorithm/all_of.hpp [4:6]
- boost/compute/algorithm/any_of.hpp [4:6]
- boost/compute/algorithm/binary_search.hpp [4:6]
- boost/compute/algorithm/copy.hpp [4:6]
- boost/compute/algorithm/copy_if.hpp [4:6]
- boost/compute/algorithm/copy_n.hpp [4:6]
- boost/compute/algorithm/count.hpp [4:6]
- boost/compute/algorithm/count_if.hpp [4:6]
- boost/compute/algorithm/detail/balanced_path.hpp [4:6]
- boost/compute/algorithm/detail/binary_find.hpp [4:6]
- boost/compute/algorithm/detail/compact.hpp [4:6]
- boost/compute/algorithm/detail/copy_on_device.hpp [4:6]
- boost/compute/algorithm/detail/copy_to_device.hpp [4:6]
- boost/compute/algorithm/detail/copy_to_host.hpp [4:6]
- boost/compute/algorithm/detail/count_if_with_ballot.hpp [4:6]
- boost/compute/algorithm/detail/count_if_with_reduce.hpp [4:6]
- boost/compute/algorithm/detail/count_if_with_threads.hpp [4:6]
- boost/compute/algorithm/detail/find_extrema.hpp [4:6]
- boost/compute/algorithm/detail/find_extrema_on_cpu.hpp [4:6]
- boost/compute/algorithm/detail/find_extrema_with_atomics.hpp [4:6]
- boost/compute/algorithm/detail/find_extrema_with_reduce.hpp [4:6]
- boost/compute/algorithm/detail/find_if_with_atomics.hpp [4:6]
- boost/compute/algorithm/detail/inplace_reduce.hpp [4:6]
- boost/compute/algorithm/detail/insertion_sort.hpp [4:6]
- boost/compute/algorithm/detail/merge_path.hpp [4:6]
- boost/compute/algorithm/detail/merge_sort_on_cpu.hpp [4:6]
- boost/compute/algorithm/detail/merge_sort_on_gpu.hpp [4:6]
- boost/compute/algorithm/detail/merge_with_merge_path.hpp [4:6]
- boost/compute/algorithm/detail/radix_sort.hpp [4:6]
- boost/compute/algorithm/detail/random_fill.hpp [4:6]
- boost/compute/algorithm/detail/reduce_by_key.hpp [4:6]
- boost/compute/algorithm/detail/reduce_by_key_with_scan.hpp [4:6]
- boost/compute/algorithm/detail/reduce_on_cpu.hpp [4:6]
- boost/compute/algorithm/detail/reduce_on_gpu.hpp [4:6]
- boost/compute/algorithm/detail/scan.hpp [4:6]
- boost/compute/algorithm/detail/scan_on_cpu.hpp [4:6]
- boost/compute/algorithm/detail/scan_on_gpu.hpp [4:6]
- boost/compute/algorithm/detail/search_all.hpp [4:6]
- boost/compute/algorithm/detail/serial_accumulate.hpp [4:6]
- boost/compute/algorithm/detail/serial_count_if.hpp [4:6]
- boost/compute/algorithm/detail/serial_find_extrema.hpp [4:6]
- boost/compute/algorithm/detail/serial_merge.hpp [4:6]
- boost/compute/algorithm/detail/serial_reduce.hpp [4:6]
- boost/compute/algorithm/detail/serial_reduce_by_key.hpp [4:6]
- boost/compute/algorithm/detail/serial_scan.hpp [4:6]
- boost/compute/algorithm/equal.hpp [4:6]
- boost/compute/algorithm/equal_range.hpp [4:6]
- boost/compute/algorithm/exclusive_scan.hpp [4:6]
- boost/compute/algorithm/fill.hpp [4:6]
- boost/compute/algorithm/fill_n.hpp [4:6]
- boost/compute/algorithm/find.hpp [4:6]
- boost/compute/algorithm/find_end.hpp [4:6]
- boost/compute/algorithm/find_if.hpp [4:6]
- boost/compute/algorithm/find_if_not.hpp [4:6]
- boost/compute/algorithm/for_each.hpp [4:6]
- boost/compute/algorithm/for_each_n.hpp [4:6]
- boost/compute/algorithm/gather.hpp [4:6]
- boost/compute/algorithm/generate.hpp [4:6]
- boost/compute/algorithm/generate_n.hpp [4:6]
- boost/compute/algorithm/includes.hpp [4:6]
- boost/compute/algorithm/inclusive_scan.hpp [4:6]
- boost/compute/algorithm/inner_product.hpp [4:6]
- boost/compute/algorithm/inplace_merge.hpp [4:6]
- boost/compute/algorithm/iota.hpp [4:6]
- boost/compute/algorithm/is_partitioned.hpp [4:6]
- boost/compute/algorithm/is_permutation.hpp [4:6]
- boost/compute/algorithm/is_sorted.hpp [4:6]
- boost/compute/algorithm/lexicographical_compare.hpp [4:6]
- boost/compute/algorithm/lower_bound.hpp [4:6]
- boost/compute/algorithm/max_element.hpp [4:6]
- boost/compute/algorithm/merge.hpp [4:6]
- boost/compute/algorithm/min_element.hpp [4:6]
- boost/compute/algorithm/minmax_element.hpp [4:6]
- boost/compute/algorithm/mismatch.hpp [4:6]
- boost/compute/algorithm/next_permutation.hpp [4:6]
- boost/compute/algorithm/none_of.hpp [4:6]
- boost/compute/algorithm/nth_element.hpp [4:6]
- boost/compute/algorithm/partial_sum.hpp [4:6]
- boost/compute/algorithm/partition.hpp [4:6]
- boost/compute/algorithm/partition_copy.hpp [4:6]
- boost/compute/algorithm/partition_point.hpp [4:6]
- boost/compute/algorithm/prev_permutation.hpp [4:6]
- boost/compute/algorithm/random_shuffle.hpp [4:6]
- boost/compute/algorithm/reduce.hpp [4:6]
- boost/compute/algorithm/reduce_by_key.hpp [4:6]
- boost/compute/algorithm/remove.hpp [4:6]
- boost/compute/algorithm/remove_if.hpp [4:6]
- boost/compute/algorithm/replace.hpp [4:6]
- boost/compute/algorithm/replace_copy.hpp [4:6]
- boost/compute/algorithm/reverse.hpp [4:6]
- boost/compute/algorithm/reverse_copy.hpp [4:6]
- boost/compute/algorithm/rotate.hpp [4:6]
- boost/compute/algorithm/rotate_copy.hpp [4:6]
- boost/compute/algorithm/scatter.hpp [4:6]
- boost/compute/algorithm/scatter_if.hpp [4:6]
- boost/compute/algorithm/search.hpp [4:6]
- boost/compute/algorithm/search_n.hpp [4:6]
- boost/compute/algorithm/set_difference.hpp [4:6]
- boost/compute/algorithm/set_intersection.hpp [4:6]
- boost/compute/algorithm/set_symmetric_difference.hpp [4:6]
- boost/compute/algorithm/set_union.hpp [4:6]
- boost/compute/algorithm/sort.hpp [4:6]
- boost/compute/algorithm/sort_by_key.hpp [4:6]
- boost/compute/algorithm/stable_partition.hpp [4:6]
- boost/compute/algorithm/stable_sort.hpp [4:6]
- boost/compute/algorithm/stable_sort_by_key.hpp [4:6]
- boost/compute/algorithm/swap_ranges.hpp [4:6]
- boost/compute/algorithm/transform.hpp [4:6]
- boost/compute/algorithm/transform_if.hpp [4:6]
- boost/compute/algorithm/transform_reduce.hpp [4:6]
- boost/compute/algorithm/unique.hpp [4:6]
- boost/compute/algorithm/unique_copy.hpp [4:6]
- boost/compute/algorithm/upper_bound.hpp [4:6]
- boost/compute/allocator.hpp [4:6]
- boost/compute/allocator/buffer_allocator.hpp [4:6]
- boost/compute/allocator/pinned_allocator.hpp [4:6]
- boost/compute/async.hpp [4:6]
- boost/compute/async/future.hpp [4:6]
- boost/compute/async/wait.hpp [4:6]
- boost/compute/async/wait_guard.hpp [4:6]
- boost/compute/buffer.hpp [4:6]
- boost/compute/cl.hpp [4:6]
- boost/compute/cl_ext.hpp [4:6]
- boost/compute/closure.hpp [4:6]
- boost/compute/command_queue.hpp [4:6]
- boost/compute/config.hpp [4:6]
- boost/compute/container.hpp [4:6]
- boost/compute/container/array.hpp [4:6]
- boost/compute/container/basic_string.hpp [4:6]
- boost/compute/container/detail/scalar.hpp [4:6]
- boost/compute/container/dynamic_bitset.hpp [4:6]
- boost/compute/container/flat_map.hpp [4:6]
- boost/compute/container/flat_set.hpp [4:6]
- boost/compute/container/mapped_view.hpp [4:6]
- boost/compute/container/stack.hpp [4:6]
- boost/compute/container/string.hpp [4:6]
- boost/compute/container/valarray.hpp [4:6]
- boost/compute/container/vector.hpp [4:6]
- boost/compute/context.hpp [4:6]
- boost/compute/core.hpp [4:6]
- boost/compute/detail/assert_cl_success.hpp [4:6]
- boost/compute/detail/buffer_value.hpp [4:6]
- boost/compute/detail/device_ptr.hpp [4:6]
- boost/compute/detail/diagnostic.hpp [4:6]
- boost/compute/detail/duration.hpp [4:6]
- boost/compute/detail/get_object_info.hpp [4:6]
- boost/compute/detail/getenv.hpp [4:6]
- boost/compute/detail/global_static.hpp [4:6]
- boost/compute/detail/is_buffer_iterator.hpp [4:6]
- boost/compute/detail/is_contiguous_iterator.hpp [4:6]
- boost/compute/detail/iterator_plus_distance.hpp [4:6]
- boost/compute/detail/iterator_range_size.hpp [4:6]
- boost/compute/detail/iterator_traits.hpp [4:6]
- boost/compute/detail/literal.hpp [4:6]
- boost/compute/detail/lru_cache.hpp [4:6]
- boost/compute/detail/meta_kernel.hpp [4:6]
- boost/compute/detail/mpl_vector_to_tuple.hpp [4:6]
- boost/compute/detail/nvidia_compute_capability.hpp [4:6]
- boost/compute/detail/parameter_cache.hpp [4:6]
- boost/compute/detail/path.hpp [4:6]
- boost/compute/detail/print_range.hpp [4:6]
- boost/compute/detail/read_write_single_value.hpp [4:6]
- boost/compute/detail/sha1.hpp [4:6]
- boost/compute/detail/vendor.hpp [4:6]
- boost/compute/detail/work_size.hpp [4:6]
- boost/compute/device.hpp [4:6]
- boost/compute/event.hpp [4:6]
- boost/compute/exception.hpp [4:6]
- boost/compute/exception/context_error.hpp [4:6]
- boost/compute/exception/no_device_found.hpp [4:6]
- boost/compute/exception/opencl_error.hpp [4:6]
- boost/compute/exception/unsupported_extension_error.hpp [4:6]
- boost/compute/experimental/clamp_range.hpp [4:6]
- boost/compute/experimental/malloc.hpp [4:6]
- boost/compute/experimental/sort_by_transform.hpp [4:6]
- boost/compute/experimental/tabulate.hpp [4:6]
- boost/compute/function.hpp [4:6]
- boost/compute/functional.hpp [4:6]
- boost/compute/functional/as.hpp [4:6]
- boost/compute/functional/atomic.hpp [4:6]
- boost/compute/functional/bind.hpp [4:6]
- boost/compute/functional/common.hpp [4:6]
- boost/compute/functional/convert.hpp [4:6]
- boost/compute/functional/detail/macros.hpp [4:6]
- boost/compute/functional/detail/nvidia_ballot.hpp [4:6]
- boost/compute/functional/detail/nvidia_popcount.hpp [4:6]
- boost/compute/functional/detail/unpack.hpp [4:6]
- boost/compute/functional/field.hpp [4:6]
- boost/compute/functional/geometry.hpp [4:6]
- boost/compute/functional/get.hpp [4:6]
- boost/compute/functional/hash.hpp [4:6]
- boost/compute/functional/identity.hpp [4:6]
- boost/compute/functional/integer.hpp [4:6]
- boost/compute/functional/logical.hpp [4:6]
- boost/compute/functional/math.hpp [4:6]
- boost/compute/functional/operator.hpp [4:6]
- boost/compute/functional/popcount.hpp [4:6]
- boost/compute/functional/relational.hpp [4:6]
- boost/compute/image.hpp [4:6]
- boost/compute/image/image1d.hpp [4:6]
- boost/compute/image/image2d.hpp [4:6]
- boost/compute/image/image3d.hpp [4:6]
- boost/compute/image/image_format.hpp [4:6]
- boost/compute/image/image_object.hpp [4:6]
- boost/compute/image/image_sampler.hpp [4:6]
- boost/compute/image2d.hpp [4:6]
- boost/compute/image3d.hpp [4:6]
- boost/compute/image_format.hpp [4:6]
- boost/compute/image_sampler.hpp [4:6]
- boost/compute/interop/eigen.hpp [4:6]
- boost/compute/interop/eigen/core.hpp [4:6]
- boost/compute/interop/opencv.hpp [4:6]
- boost/compute/interop/opencv/core.hpp [4:6]
- boost/compute/interop/opencv/highgui.hpp [4:6]
- boost/compute/interop/opencv/ocl.hpp [4:6]
- boost/compute/interop/opengl.hpp [4:6]
- boost/compute/interop/opengl/acquire.hpp [4:6]
- boost/compute/interop/opengl/cl_gl.hpp [4:6]
- boost/compute/interop/opengl/cl_gl_ext.hpp [4:6]
- boost/compute/interop/opengl/context.hpp [4:6]
- boost/compute/interop/opengl/gl.hpp [4:6]
- boost/compute/interop/opengl/opengl_buffer.hpp [4:6]
- boost/compute/interop/opengl/opengl_renderbuffer.hpp [4:6]
- boost/compute/interop/opengl/opengl_texture.hpp [4:6]
- boost/compute/interop/qt.hpp [4:6]
- boost/compute/interop/qt/qimage.hpp [4:6]
- boost/compute/interop/qt/qpoint.hpp [4:6]
- boost/compute/interop/qt/qpointf.hpp [4:6]
- boost/compute/interop/qt/qtcore.hpp [4:6]
- boost/compute/interop/qt/qtgui.hpp [4:6]
- boost/compute/interop/qt/qvector.hpp [4:6]
- boost/compute/interop/vtk.hpp [4:6]
- boost/compute/interop/vtk/bounds.hpp [4:6]
- boost/compute/interop/vtk/data_array.hpp [4:6]
- boost/compute/interop/vtk/matrix4x4.hpp [4:6]
- boost/compute/interop/vtk/points.hpp [4:6]
- boost/compute/iterator.hpp [4:6]
- boost/compute/iterator/buffer_iterator.hpp [4:6]
- boost/compute/iterator/constant_buffer_iterator.hpp [4:6]
- boost/compute/iterator/constant_iterator.hpp [4:6]
- boost/compute/iterator/counting_iterator.hpp [4:6]
- boost/compute/iterator/detail/get_base_iterator_buffer.hpp [4:6]
- boost/compute/iterator/detail/swizzle_iterator.hpp [4:6]
- boost/compute/iterator/discard_iterator.hpp [4:6]
- boost/compute/iterator/function_input_iterator.hpp [4:6]
- boost/compute/iterator/permutation_iterator.hpp [4:6]
- boost/compute/iterator/strided_iterator.hpp [4:6]
- boost/compute/iterator/transform_iterator.hpp [4:6]
- boost/compute/iterator/zip_iterator.hpp [4:6]
- boost/compute/kernel.hpp [4:6]
- boost/compute/lambda.hpp [4:6]
- boost/compute/lambda/context.hpp [4:6]
- boost/compute/lambda/functional.hpp [4:6]
- boost/compute/lambda/get.hpp [4:6]
- boost/compute/lambda/make_pair.hpp [4:6]
- boost/compute/lambda/make_tuple.hpp [4:6]
- boost/compute/lambda/placeholder.hpp [4:6]
- boost/compute/lambda/placeholders.hpp [4:6]
- boost/compute/lambda/result_of.hpp [4:6]
- boost/compute/memory.hpp [4:6]
- boost/compute/memory/local_buffer.hpp [4:6]
- boost/compute/memory/svm_ptr.hpp [4:6]
- boost/compute/memory_object.hpp [4:6]
- boost/compute/pipe.hpp [4:6]
- boost/compute/platform.hpp [4:6]
- boost/compute/program.hpp [4:6]
- boost/compute/random.hpp [4:6]
- boost/compute/random/bernoulli_distribution.hpp [4:6]
- boost/compute/random/default_random_engine.hpp [4:6]
- boost/compute/random/discrete_distribution.hpp [4:6]
- boost/compute/random/linear_congruential_engine.hpp [4:6]
- boost/compute/random/mersenne_twister_engine.hpp [4:6]
- boost/compute/random/normal_distribution.hpp [4:6]
- boost/compute/random/threefry_engine.hpp [4:6]
- boost/compute/random/uniform_int_distribution.hpp [4:6]
- boost/compute/random/uniform_real_distribution.hpp [4:6]
- boost/compute/source.hpp [4:6]
- boost/compute/svm.hpp [4:6]
- boost/compute/system.hpp [4:6]
- boost/compute/type_traits.hpp [4:6]
- boost/compute/type_traits/common_type.hpp [4:6]
- boost/compute/type_traits/detail/capture_traits.hpp [4:6]
- boost/compute/type_traits/is_device_iterator.hpp [4:6]
- boost/compute/type_traits/is_fundamental.hpp [4:6]
- boost/compute/type_traits/is_vector_type.hpp [4:6]
- boost/compute/type_traits/make_vector_type.hpp [4:6]
- boost/compute/type_traits/result_of.hpp [4:6]
- boost/compute/type_traits/scalar_type.hpp [4:6]
- boost/compute/type_traits/type_definition.hpp [4:6]
- boost/compute/type_traits/type_name.hpp [4:6]
- boost/compute/type_traits/vector_size.hpp [4:6]
- boost/compute/types.hpp [4:6]
- boost/compute/types/builtin.hpp [4:6]
- boost/compute/types/complex.hpp [4:6]
- boost/compute/types/fundamental.hpp [4:6]
- boost/compute/types/pair.hpp [4:6]
- boost/compute/types/size_t.hpp [4:6]
- boost/compute/types/struct.hpp [4:6]
- boost/compute/types/tuple.hpp [4:6]
- boost/compute/user_event.hpp [4:6]
- boost/compute/utility.hpp [4:6]
- boost/compute/utility/dim.hpp [4:6]
- boost/compute/utility/extents.hpp [4:6]
- boost/compute/utility/invoke.hpp [4:6]
- boost/compute/utility/program_cache.hpp [4:6]
- boost/compute/utility/source.hpp [4:6]
- boost/compute/utility/wait_list.hpp [4:6]
- boost/compute/version.hpp [4:6]
- boost/compute/wait_list.hpp [4:6]
-
-KEEP BSL-1.0 ee822d50ddfbcc656f14b57a196ccef9
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/functional/overloaded_function.hpp at line 4, boost/functional/overloaded_function/config.hpp at line 4, boost/functional/overloaded_function/detail/base.hpp at line 4, boost/functional/overloaded_function/detail/function_type.hpp at line 4, boost/local_function.hpp at line 4, boost/local_function/aux_/add_pointed_const.hpp at line 4, boost/local_function/aux_/function.hpp at line 4, boost/local_function/aux_/macro/code_/bind.hpp at line 4, boost/local_function/aux_/macro/code_/functor.hpp at line 4, boost/local_function/aux_/macro/code_/result.hpp at line 4, boost/local_function/aux_/macro/decl.hpp at line 4, boost/local_function/aux_/macro/name.hpp at line 4, boost/local_function/aux_/macro/typeof.hpp at line 4, boost/local_function/aux_/member.hpp at line 4, boost/local_function/aux_/nobind.hpp at line 4, boost/local_function/aux_/preprocessor/traits/bind.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_/append.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_/index.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_/nil.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_/set_error.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_/validate.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_/validate_/return_count.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_/validate_/this_count.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_binds.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_const_binds.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_error.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_params.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_returns.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_sign_/any_bind_type.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_sign_/sign.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_sign_/validate.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_sign_/validate_/defaults.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_sign_/validate_/this.hpp at line 4, boost/local_function/aux_/preprocessor/traits/param.hpp at line 4, boost/local_function/aux_/symbol.hpp at line 4, boost/local_function/config.hpp at line 4, boost/local_function/detail/preprocessor/keyword/auto.hpp at line 4, boost/local_function/detail/preprocessor/keyword/bind.hpp at line 4, boost/local_function/detail/preprocessor/keyword/const.hpp at line 4, boost/local_function/detail/preprocessor/keyword/const_bind.hpp at line 4, boost/local_function/detail/preprocessor/keyword/default.hpp at line 4, boost/local_function/detail/preprocessor/keyword/facility/add.hpp at line 4, boost/local_function/detail/preprocessor/keyword/facility/is.hpp at line 4, boost/local_function/detail/preprocessor/keyword/facility/remove.hpp at line 4, boost/local_function/detail/preprocessor/keyword/inline.hpp at line 4, boost/local_function/detail/preprocessor/keyword/recursive.hpp at line 4, boost/local_function/detail/preprocessor/keyword/register.hpp at line 4, boost/local_function/detail/preprocessor/keyword/return.hpp at line 4, boost/local_function/detail/preprocessor/keyword/this.hpp at line 4, boost/local_function/detail/preprocessor/keyword/thisunderscore.hpp at line 4, boost/local_function/detail/preprocessor/keyword/void.hpp at line 4, boost/local_function/detail/preprocessor/line_counter.hpp at line 4, boost/utility/identity_type.hpp at line 4
- License text:
- // Distributed under the Boost Software License, Version 1.0
- // (see accompanying file LICENSE_1_0.txt or a copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/functional/overloaded_function.hpp [3:5]
- boost/functional/overloaded_function/config.hpp [3:5]
- boost/functional/overloaded_function/detail/base.hpp [3:5]
- boost/functional/overloaded_function/detail/function_type.hpp [3:5]
- boost/local_function.hpp [3:5]
- boost/local_function/aux_/add_pointed_const.hpp [3:5]
- boost/local_function/aux_/function.hpp [3:5]
- boost/local_function/aux_/macro/code_/bind.hpp [3:5]
- boost/local_function/aux_/macro/code_/functor.hpp [3:5]
- boost/local_function/aux_/macro/code_/result.hpp [3:5]
- boost/local_function/aux_/macro/decl.hpp [3:5]
- boost/local_function/aux_/macro/name.hpp [3:5]
- boost/local_function/aux_/macro/typeof.hpp [3:5]
- boost/local_function/aux_/member.hpp [3:5]
- boost/local_function/aux_/nobind.hpp [3:5]
- boost/local_function/aux_/preprocessor/traits/bind.hpp [3:5]
- boost/local_function/aux_/preprocessor/traits/decl.hpp [3:5]
- boost/local_function/aux_/preprocessor/traits/decl_/append.hpp [3:5]
- boost/local_function/aux_/preprocessor/traits/decl_/index.hpp [3:5]
- boost/local_function/aux_/preprocessor/traits/decl_/nil.hpp [3:5]
- boost/local_function/aux_/preprocessor/traits/decl_/set_error.hpp [3:5]
- boost/local_function/aux_/preprocessor/traits/decl_/validate.hpp [3:5]
- boost/local_function/aux_/preprocessor/traits/decl_/validate_/return_count.hpp [3:5]
- boost/local_function/aux_/preprocessor/traits/decl_/validate_/this_count.hpp [3:5]
- boost/local_function/aux_/preprocessor/traits/decl_binds.hpp [3:5]
- boost/local_function/aux_/preprocessor/traits/decl_const_binds.hpp [3:5]
- boost/local_function/aux_/preprocessor/traits/decl_error.hpp [3:5]
- boost/local_function/aux_/preprocessor/traits/decl_params.hpp [3:5]
- boost/local_function/aux_/preprocessor/traits/decl_returns.hpp [3:5]
- boost/local_function/aux_/preprocessor/traits/decl_sign_/any_bind_type.hpp [3:5]
- boost/local_function/aux_/preprocessor/traits/decl_sign_/sign.hpp [3:5]
- boost/local_function/aux_/preprocessor/traits/decl_sign_/validate.hpp [3:5]
- boost/local_function/aux_/preprocessor/traits/decl_sign_/validate_/defaults.hpp [3:5]
- boost/local_function/aux_/preprocessor/traits/decl_sign_/validate_/this.hpp [3:5]
- boost/local_function/aux_/preprocessor/traits/param.hpp [3:5]
- boost/local_function/aux_/symbol.hpp [3:5]
- boost/local_function/config.hpp [3:5]
- boost/local_function/detail/preprocessor/keyword/auto.hpp [3:5]
- boost/local_function/detail/preprocessor/keyword/bind.hpp [3:5]
- boost/local_function/detail/preprocessor/keyword/const.hpp [3:5]
- boost/local_function/detail/preprocessor/keyword/const_bind.hpp [3:5]
- boost/local_function/detail/preprocessor/keyword/default.hpp [3:5]
- boost/local_function/detail/preprocessor/keyword/facility/add.hpp [3:5]
- boost/local_function/detail/preprocessor/keyword/facility/is.hpp [3:5]
- boost/local_function/detail/preprocessor/keyword/facility/remove.hpp [3:5]
- boost/local_function/detail/preprocessor/keyword/inline.hpp [3:5]
- boost/local_function/detail/preprocessor/keyword/recursive.hpp [3:5]
- boost/local_function/detail/preprocessor/keyword/register.hpp [3:5]
- boost/local_function/detail/preprocessor/keyword/return.hpp [3:5]
- boost/local_function/detail/preprocessor/keyword/this.hpp [3:5]
- boost/local_function/detail/preprocessor/keyword/thisunderscore.hpp [3:5]
- boost/local_function/detail/preprocessor/keyword/void.hpp [3:5]
- boost/local_function/detail/preprocessor/line_counter.hpp [3:5]
- boost/utility/identity_type.hpp [3:5]
-
-KEEP BSL-1.0 eeda69591b5957fb1dbf0286c30acb85
-BELONGS ya.make
- License text:
- Distributed under the Boost Software License, Version 1.0.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/align/align.hpp [5:5]
- boost/align/align_down.hpp [5:5]
- boost/align/align_up.hpp [5:5]
- boost/align/alignment_of.hpp [5:5]
- boost/align/alignment_of_forward.hpp [5:5]
- boost/align/detail/addressof.hpp [5:5]
- boost/align/detail/align.hpp [5:5]
- boost/align/detail/align_cxx11.hpp [5:5]
- boost/align/detail/align_down.hpp [5:5]
- boost/align/detail/align_up.hpp [5:5]
- boost/align/detail/alignment_of.hpp [5:5]
- boost/align/detail/alignment_of_clang.hpp [5:5]
- boost/align/detail/alignment_of_codegear.hpp [5:5]
- boost/align/detail/alignment_of_cxx11.hpp [5:5]
- boost/align/detail/alignment_of_gcc.hpp [5:5]
- boost/align/detail/alignment_of_msvc.hpp [5:5]
- boost/align/detail/element_type.hpp [5:5]
- boost/align/detail/integral_constant.hpp [5:5]
- boost/align/detail/is_alignment.hpp [5:5]
- boost/align/detail/is_alignment_constant.hpp [5:5]
- boost/align/detail/max_align.hpp [5:5]
- boost/align/detail/max_objects.hpp [5:5]
- boost/align/detail/max_size.hpp [5:5]
- boost/align/detail/min_size.hpp [5:5]
- boost/core/pointer_traits.hpp [5:5]
- boost/make_unique.hpp [5:5]
- boost/smart_ptr/allocate_local_shared_array.hpp [5:5]
- boost/smart_ptr/make_local_shared_array.hpp [6:6]
- boost/smart_ptr/make_shared_array.hpp [5:5]
- boost/smart_ptr/make_unique.hpp [5:5]
-
-KEEP BSL-1.0 ef2bc99a1661a97a27956252dfd290a1
-BELONGS libs/serialization/ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: libs/serialization/src/void_cast.cpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 94.74
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- libs/serialization/src/void_cast.cpp [5:10]
-
-KEEP BSL-1.0 f0421be5a87b237d5f722433355f7a9e
-BELONGS libs/filesystem/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/errors.hpp at line 16, libs/filesystem/src/portability.cpp at line 5
- License text:
- // Use, modification, and distribution is subject to the Boost Software
- // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy
- // at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/interprocess/errors.hpp [15:17]
- libs/filesystem/src/portability.cpp [4:6]
-
-KEEP BSL-1.0 f061e3fef6f6b3386bb5d0db71ea0724
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: LicenseRef-scancode-boost-original
- Score : 100.00
- Match type : TEXT
- Links : http://boost.org, https://github.com/boostorg/rational/blob/0fe0beca5397c812c4f85a7de0d0769de59e12e0/include/boost/rational.hpp, https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/boost-original.LICENSE
- Files with this license:
- boost/intrusive/splaytree_algorithms.hpp [23:26]
-
-KEEP BSL-1.0 f20f9faff5dff60d6b8844771d700dd5
-BELONGS libs/random/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/array.hpp at line 13, boost/checked_delete.hpp at line 5, boost/detail/lightweight_test.hpp at line 5, boost/detail/no_exceptions_support.hpp at line 5, boost/detail/scoped_enum_emulation.hpp at line 5, boost/graph/bipartite.hpp at line 8, boost/integer_traits.hpp at line 5, boost/noncopyable.hpp at line 5, boost/nondet_random.hpp at line 5, boost/numeric/ublas/operation/begin.hpp at line 11, boost/numeric/ublas/operation/c_array.hpp at line 11, boost/numeric/ublas/operation/end.hpp at line 11, boost/numeric/ublas/operation/num_columns.hpp at line 11, boost/numeric/ublas/operation/num_rows.hpp at line 11, boost/numeric/ublas/operation/size.hpp at line 9, boost/numeric/ublas/operations.hpp at line 11, boost/numeric/ublas/tags.hpp at line 11, boost/numeric/ublas/traits/c_array.hpp at line 11, boost/numeric/ublas/traits/const_iterator_type.hpp at line 11, boost/numeric/ublas/traits/iterator_type.hpp at line 11, boost/random.hpp at line 5, boost/random/beta_distribution.hpp at line 5, boost/random/binomial_distribution.hpp at line 5, boost/random/chi_squared_distribution.hpp at line 5, boost/random/detail/auto_link.hpp at line 5, boost/random/detail/config.hpp at line 5, boost/random/detail/disable_warnings.hpp at line 5, boost/random/detail/enable_warnings.hpp at line 5, boost/random/detail/generator_bits.hpp at line 5, boost/random/detail/generator_seed_seq.hpp at line 6, boost/random/detail/int_float_pair.hpp at line 6, boost/random/detail/integer_log2.hpp at line 5, boost/random/detail/large_arithmetic.hpp at line 5, boost/random/detail/operators.hpp at line 5, boost/random/detail/polynomial.hpp at line 5, boost/random/detail/ptr_helper.hpp at line 5, boost/random/detail/seed.hpp at line 5, boost/random/detail/seed_impl.hpp at line 5, boost/random/detail/signed_unsigned_tools.hpp at line 5, boost/random/detail/uniform_int_float.hpp at line 6, boost/random/detail/vector_io.hpp at line 5, boost/random/discrete_distribution.hpp at line 5, boost/random/extreme_value_distribution.hpp at line 5, boost/random/fisher_f_distribution.hpp at line 5, boost/random/gamma_distribution.hpp at line 6, boost/random/generate_canonical.hpp at line 5, boost/random/hyperexponential_distribution.hpp at line 5, boost/random/independent_bits.hpp at line 5, boost/random/laplace_distribution.hpp at line 5, boost/random/linear_feedback_shift.hpp at line 6, boost/random/negative_binomial_distribution.hpp at line 5, boost/random/non_central_chi_squared_distribution.hpp at line 6, boost/random/piecewise_constant_distribution.hpp at line 5, boost/random/piecewise_linear_distribution.hpp at line 5, boost/random/poisson_distribution.hpp at line 6, boost/random/random_device.hpp at line 6, boost/random/seed_seq.hpp at line 5, boost/random/shuffle_order.hpp at line 6, boost/random/student_t_distribution.hpp at line 5, boost/random/taus88.hpp at line 6, boost/random/traits.hpp at line 5, boost/random/uniform_real_distribution.hpp at line 6, boost/random/variate_generator.hpp at line 6, boost/random/weibull_distribution.hpp at line 5, boost/random/xor_combine.hpp at line 5, boost/ref.hpp at line 5, boost/signals/detail/config.hpp at line 10, boost/swap.hpp at line 5, boost/utility/addressof.hpp at line 5, boost/utility/enable_if.hpp at line 5, boost/utility/explicit_operator_bool.hpp at line 5, boost/utility/swap.hpp at line 5, libs/random/src/random_device.cpp at line 6
- License text:
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/array.hpp [12:14]
- boost/checked_delete.hpp [4:6]
- boost/detail/lightweight_test.hpp [4:6]
- boost/detail/no_exceptions_support.hpp [4:6]
- boost/detail/scoped_enum_emulation.hpp [4:6]
- boost/graph/bipartite.hpp [7:9]
- boost/integer_traits.hpp [4:6]
- boost/noncopyable.hpp [4:6]
- boost/nondet_random.hpp [4:6]
- boost/numeric/ublas/operation/begin.hpp [10:12]
- boost/numeric/ublas/operation/c_array.hpp [10:12]
- boost/numeric/ublas/operation/end.hpp [10:12]
- boost/numeric/ublas/operation/num_columns.hpp [10:12]
- boost/numeric/ublas/operation/num_rows.hpp [10:12]
- boost/numeric/ublas/operation/size.hpp [8:10]
- boost/numeric/ublas/operations.hpp [10:12]
- boost/numeric/ublas/tags.hpp [10:12]
- boost/numeric/ublas/traits/c_array.hpp [10:12]
- boost/numeric/ublas/traits/const_iterator_type.hpp [10:12]
- boost/numeric/ublas/traits/iterator_type.hpp [10:12]
- boost/random.hpp [4:6]
- boost/random/beta_distribution.hpp [4:6]
- boost/random/binomial_distribution.hpp [4:6]
- boost/random/chi_squared_distribution.hpp [4:6]
- boost/random/detail/auto_link.hpp [4:6]
- boost/random/detail/config.hpp [4:6]
- boost/random/detail/disable_warnings.hpp [4:6]
- boost/random/detail/enable_warnings.hpp [4:6]
- boost/random/detail/generator_bits.hpp [4:6]
- boost/random/detail/generator_seed_seq.hpp [5:7]
- boost/random/detail/int_float_pair.hpp [5:7]
- boost/random/detail/integer_log2.hpp [4:6]
- boost/random/detail/large_arithmetic.hpp [4:6]
- boost/random/detail/operators.hpp [4:6]
- boost/random/detail/polynomial.hpp [4:6]
- boost/random/detail/ptr_helper.hpp [4:6]
- boost/random/detail/seed.hpp [4:6]
- boost/random/detail/seed_impl.hpp [4:6]
- boost/random/detail/signed_unsigned_tools.hpp [4:6]
- boost/random/detail/uniform_int_float.hpp [5:7]
- boost/random/detail/vector_io.hpp [4:6]
- boost/random/discrete_distribution.hpp [4:6]
- boost/random/extreme_value_distribution.hpp [4:6]
- boost/random/fisher_f_distribution.hpp [4:6]
- boost/random/gamma_distribution.hpp [5:7]
- boost/random/generate_canonical.hpp [4:6]
- boost/random/hyperexponential_distribution.hpp [4:6]
- boost/random/independent_bits.hpp [4:6]
- boost/random/laplace_distribution.hpp [4:6]
- boost/random/linear_feedback_shift.hpp [5:7]
- boost/random/negative_binomial_distribution.hpp [4:6]
- boost/random/non_central_chi_squared_distribution.hpp [5:7]
- boost/random/piecewise_constant_distribution.hpp [4:6]
- boost/random/piecewise_linear_distribution.hpp [4:6]
- boost/random/poisson_distribution.hpp [5:7]
- boost/random/random_device.hpp [5:7]
- boost/random/seed_seq.hpp [4:6]
- boost/random/shuffle_order.hpp [5:7]
- boost/random/student_t_distribution.hpp [4:6]
- boost/random/taus88.hpp [5:7]
- boost/random/traits.hpp [4:6]
- boost/random/uniform_real_distribution.hpp [5:7]
- boost/random/variate_generator.hpp [5:7]
- boost/random/weibull_distribution.hpp [4:6]
- boost/random/xor_combine.hpp [4:6]
- boost/ref.hpp [4:6]
- boost/signals/detail/config.hpp [9:11]
- boost/swap.hpp [4:6]
- boost/utility/addressof.hpp [4:6]
- boost/utility/enable_if.hpp [4:6]
- boost/utility/explicit_operator_bool.hpp [4:6]
- boost/utility/swap.hpp [4:6]
- libs/random/src/random_device.cpp [5:7]
-
-KEEP BSL-1.0 f262303c7ce4d7bb32412cf8e6aa42e5
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/algorithm/string.hpp at line 6, boost/algorithm/string/case_conv.hpp at line 6, boost/algorithm/string/classification.hpp at line 6, boost/algorithm/string/compare.hpp at line 6, boost/algorithm/string/concept.hpp at line 6, boost/algorithm/string/config.hpp at line 6, boost/algorithm/string/constants.hpp at line 6, boost/algorithm/string/detail/case_conv.hpp at line 6, boost/algorithm/string/detail/classification.hpp at line 6, boost/algorithm/string/detail/find_format.hpp at line 6, boost/algorithm/string/detail/find_format_all.hpp at line 6, boost/algorithm/string/detail/find_format_store.hpp at line 6, boost/algorithm/string/detail/find_iterator.hpp at line 6, boost/algorithm/string/detail/finder.hpp at line 6, boost/algorithm/string/detail/finder_regex.hpp at line 6, boost/algorithm/string/detail/formatter_regex.hpp at line 6, boost/algorithm/string/detail/predicate.hpp at line 6, boost/algorithm/string/detail/replace_storage.hpp at line 6, boost/algorithm/string/detail/sequence.hpp at line 6, boost/algorithm/string/detail/trim.hpp at line 6, boost/algorithm/string/detail/util.hpp at line 6, boost/algorithm/string/erase.hpp at line 6, boost/algorithm/string/find.hpp at line 6, boost/algorithm/string/find_format.hpp at line 6, boost/algorithm/string/find_iterator.hpp at line 6, boost/algorithm/string/finder.hpp at line 6, boost/algorithm/string/formatter.hpp at line 6, boost/algorithm/string/iter_find.hpp at line 6, boost/algorithm/string/join.hpp at line 6, boost/algorithm/string/predicate.hpp at line 6, boost/algorithm/string/predicate_facade.hpp at line 6, boost/algorithm/string/regex.hpp at line 6, boost/algorithm/string/regex_find_format.hpp at line 6, boost/algorithm/string/replace.hpp at line 6, boost/algorithm/string/sequence_traits.hpp at line 6, boost/algorithm/string/split.hpp at line 6, boost/algorithm/string/std/list_traits.hpp at line 6, boost/algorithm/string/std/rope_traits.hpp at line 6, boost/algorithm/string/std/slist_traits.hpp at line 6, boost/algorithm/string/std/string_traits.hpp at line 6, boost/algorithm/string/std_containers_traits.hpp at line 6, boost/algorithm/string/trim.hpp at line 6, boost/algorithm/string/trim_all.hpp at line 6, boost/algorithm/string/yes_no_type.hpp at line 6, boost/algorithm/string_regex.hpp at line 6
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/algorithm/string.hpp [5:9]
- boost/algorithm/string/case_conv.hpp [5:9]
- boost/algorithm/string/classification.hpp [5:9]
- boost/algorithm/string/compare.hpp [5:9]
- boost/algorithm/string/concept.hpp [5:9]
- boost/algorithm/string/config.hpp [5:9]
- boost/algorithm/string/constants.hpp [5:9]
- boost/algorithm/string/detail/case_conv.hpp [5:9]
- boost/algorithm/string/detail/classification.hpp [5:9]
- boost/algorithm/string/detail/find_format.hpp [5:9]
- boost/algorithm/string/detail/find_format_all.hpp [5:9]
- boost/algorithm/string/detail/find_format_store.hpp [5:9]
- boost/algorithm/string/detail/find_iterator.hpp [5:9]
- boost/algorithm/string/detail/finder.hpp [5:9]
- boost/algorithm/string/detail/finder_regex.hpp [5:9]
- boost/algorithm/string/detail/formatter_regex.hpp [5:9]
- boost/algorithm/string/detail/predicate.hpp [5:9]
- boost/algorithm/string/detail/replace_storage.hpp [5:9]
- boost/algorithm/string/detail/sequence.hpp [5:9]
- boost/algorithm/string/detail/trim.hpp [5:9]
- boost/algorithm/string/detail/util.hpp [5:9]
- boost/algorithm/string/erase.hpp [5:9]
- boost/algorithm/string/find.hpp [5:9]
- boost/algorithm/string/find_format.hpp [5:9]
- boost/algorithm/string/find_iterator.hpp [5:9]
- boost/algorithm/string/finder.hpp [5:9]
- boost/algorithm/string/formatter.hpp [5:9]
- boost/algorithm/string/iter_find.hpp [5:9]
- boost/algorithm/string/join.hpp [5:9]
- boost/algorithm/string/predicate.hpp [5:9]
- boost/algorithm/string/predicate_facade.hpp [5:9]
- boost/algorithm/string/regex.hpp [5:9]
- boost/algorithm/string/regex_find_format.hpp [5:9]
- boost/algorithm/string/replace.hpp [5:9]
- boost/algorithm/string/sequence_traits.hpp [5:9]
- boost/algorithm/string/split.hpp [5:9]
- boost/algorithm/string/std/list_traits.hpp [5:9]
- boost/algorithm/string/std/rope_traits.hpp [5:9]
- boost/algorithm/string/std/slist_traits.hpp [5:9]
- boost/algorithm/string/std/string_traits.hpp [5:9]
- boost/algorithm/string/std_containers_traits.hpp [5:9]
- boost/algorithm/string/trim.hpp [5:9]
- boost/algorithm/string/trim_all.hpp [5:9]
- boost/algorithm/string/yes_no_type.hpp [5:9]
- boost/algorithm/string_regex.hpp [5:9]
-
-KEEP BSL-1.0 f2a214a077783d66d0e315e633d467a7
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/polygon/detail/boolean_op.hpp at line 5, boost/polygon/detail/boolean_op_45.hpp at line 5, boost/polygon/detail/iterator_compact_to_points.hpp at line 5, boost/polygon/detail/iterator_geometry_to_set.hpp at line 5, boost/polygon/detail/iterator_points_to_compact.hpp at line 5, boost/polygon/detail/max_cover.hpp at line 5, boost/polygon/detail/minkowski.hpp at line 5, boost/polygon/detail/polygon_45_set_view.hpp at line 5, boost/polygon/detail/polygon_45_touch.hpp at line 5, boost/polygon/detail/polygon_90_set_view.hpp at line 5, boost/polygon/detail/polygon_90_touch.hpp at line 5, boost/polygon/detail/polygon_set_view.hpp at line 5, boost/polygon/detail/polygon_sort_adaptor.hpp at line 5, boost/polygon/detail/property_merge.hpp at line 5, boost/polygon/detail/property_merge_45.hpp at line 5, boost/polygon/detail/scan_arbitrary.hpp at line 5, boost/polygon/gmp_override.hpp at line 5, boost/polygon/gtl.hpp at line 5, boost/polygon/isotropy.hpp at line 5, boost/polygon/polygon.hpp at line 5, boost/polygon/polygon_45_data.hpp at line 5, boost/polygon/polygon_45_set_concept.hpp at line 5, boost/polygon/polygon_45_set_data.hpp at line 5, boost/polygon/polygon_45_set_traits.hpp at line 5, boost/polygon/polygon_45_with_holes_data.hpp at line 5, boost/polygon/polygon_90_data.hpp at line 5, boost/polygon/polygon_90_set_concept.hpp at line 5, boost/polygon/polygon_90_set_data.hpp at line 5, boost/polygon/polygon_90_set_traits.hpp at line 5, boost/polygon/polygon_90_with_holes_data.hpp at line 5, boost/polygon/polygon_data.hpp at line 5, boost/polygon/polygon_set_concept.hpp at line 5, boost/polygon/polygon_set_data.hpp at line 5, boost/polygon/polygon_set_traits.hpp at line 5, boost/polygon/polygon_traits.hpp at line 5, boost/polygon/polygon_with_holes_data.hpp at line 5, boost/polygon/rectangle_concept.hpp at line 5, boost/polygon/rectangle_data.hpp at line 5, boost/polygon/rectangle_traits.hpp at line 5, boost/polygon/segment_utils.hpp at line 5
- License text:
- Use, modification and distribution are subject to the Boost Software License,
- Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/polygon/detail/boolean_op.hpp [4:6]
- boost/polygon/detail/boolean_op_45.hpp [4:6]
- boost/polygon/detail/iterator_compact_to_points.hpp [4:6]
- boost/polygon/detail/iterator_geometry_to_set.hpp [4:6]
- boost/polygon/detail/iterator_points_to_compact.hpp [4:6]
- boost/polygon/detail/max_cover.hpp [4:6]
- boost/polygon/detail/minkowski.hpp [4:6]
- boost/polygon/detail/polygon_45_set_view.hpp [4:6]
- boost/polygon/detail/polygon_45_touch.hpp [4:6]
- boost/polygon/detail/polygon_90_set_view.hpp [4:6]
- boost/polygon/detail/polygon_90_touch.hpp [4:6]
- boost/polygon/detail/polygon_set_view.hpp [4:6]
- boost/polygon/detail/polygon_sort_adaptor.hpp [4:6]
- boost/polygon/detail/property_merge.hpp [4:6]
- boost/polygon/detail/property_merge_45.hpp [4:6]
- boost/polygon/detail/scan_arbitrary.hpp [4:6]
- boost/polygon/gmp_override.hpp [4:6]
- boost/polygon/gtl.hpp [4:6]
- boost/polygon/isotropy.hpp [4:6]
- boost/polygon/polygon.hpp [4:6]
- boost/polygon/polygon_45_data.hpp [4:6]
- boost/polygon/polygon_45_set_concept.hpp [4:6]
- boost/polygon/polygon_45_set_data.hpp [4:6]
- boost/polygon/polygon_45_set_traits.hpp [4:6]
- boost/polygon/polygon_45_with_holes_data.hpp [4:6]
- boost/polygon/polygon_90_data.hpp [4:6]
- boost/polygon/polygon_90_set_concept.hpp [4:6]
- boost/polygon/polygon_90_set_data.hpp [4:6]
- boost/polygon/polygon_90_set_traits.hpp [4:6]
- boost/polygon/polygon_90_with_holes_data.hpp [4:6]
- boost/polygon/polygon_data.hpp [4:6]
- boost/polygon/polygon_set_concept.hpp [4:6]
- boost/polygon/polygon_set_data.hpp [4:6]
- boost/polygon/polygon_set_traits.hpp [4:6]
- boost/polygon/polygon_traits.hpp [4:6]
- boost/polygon/polygon_with_holes_data.hpp [4:6]
- boost/polygon/rectangle_concept.hpp [4:6]
- boost/polygon/rectangle_data.hpp [4:6]
- boost/polygon/rectangle_traits.hpp [4:6]
- boost/polygon/segment_utils.hpp [4:6]
-
-KEEP BSL-1.0 f328b5d41ed9ab62066d53579e348e68
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/detail/is_sorted.hpp at line 5, boost/container/node_handle.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2016-2016. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/container/detail/is_sorted.hpp [3:5]
- boost/container/node_handle.hpp [3:5]
-
-KEEP BSL-1.0 f722943fafba4cf1dfeba6f5929ae35d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/slist.hpp at line 5
- License text:
- // (C) Copyright Ion Gaztanaga 2004-2015. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/container/slist.hpp [3:5]
-
-KEEP BSL-1.0 f7fc7cf8401fcdc9ee199dd8d85831fb
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/cpp_bin_float/io.hpp at line 4, boost/multiprecision/cpp_int.hpp at line 4, boost/multiprecision/cpp_int/add.hpp at line 4, boost/multiprecision/cpp_int/bitwise.hpp at line 4, boost/multiprecision/cpp_int/cpp_int_config.hpp at line 4, boost/multiprecision/cpp_int/divide.hpp at line 4, boost/multiprecision/cpp_int/limits.hpp at line 4, boost/multiprecision/cpp_int/misc.hpp at line 4, boost/multiprecision/cpp_int/multiply.hpp at line 4, boost/multiprecision/float128.hpp at line 4
- License text:
- // Copyright 2012 John Maddock. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 92.59
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/multiprecision/cpp_bin_float/io.hpp [2:4]
- boost/multiprecision/cpp_int.hpp [2:4]
- boost/multiprecision/cpp_int/add.hpp [2:4]
- boost/multiprecision/cpp_int/bitwise.hpp [2:4]
- boost/multiprecision/cpp_int/cpp_int_config.hpp [2:4]
- boost/multiprecision/cpp_int/divide.hpp [2:4]
- boost/multiprecision/cpp_int/limits.hpp [2:4]
- boost/multiprecision/cpp_int/misc.hpp [2:4]
- boost/multiprecision/cpp_int/multiply.hpp [2:4]
- boost/multiprecision/float128.hpp [2:4]
-
-KEEP BSL-1.0 f862443d1366b0002c5e50e5579b1c6e
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/math/interpolators/barycentric_rational.hpp at line 5, boost/math/interpolators/detail/barycentric_rational_detail.hpp at line 5
- License text:
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/math/interpolators/barycentric_rational.hpp [3:5]
- boost/math/interpolators/detail/barycentric_rational_detail.hpp [3:5]
-
-KEEP BSL-1.0 f9017d20b23c39e85a02ca3c65f61f86
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/adaptor/replaced.hpp at line 5, boost/range/adaptor/replaced_if.hpp at line 5, boost/range/adaptor/strided.hpp at line 5, boost/range/algorithm_ext.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/range/adaptor/replaced.hpp [3:6]
- boost/range/adaptor/replaced_if.hpp [3:6]
- boost/range/adaptor/strided.hpp [3:6]
- boost/range/algorithm_ext.hpp [3:6]
-
-KEEP BSL-1.0 f978f4f2508f8a0c5f62f3f5ecedc8ce
-BELONGS libs/exception/ya.make ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/exception/all.hpp at line 4, boost/exception/current_exception_cast.hpp at line 4, boost/exception/detail/clone_current_exception.hpp at line 4, boost/exception/detail/error_info_impl.hpp at line 4, boost/exception/detail/exception_ptr.hpp at line 4, boost/exception/detail/is_output_streamable.hpp at line 4, boost/exception/detail/object_hex_dump.hpp at line 4, boost/exception/detail/shared_ptr.hpp at line 4, boost/exception/detail/type_info.hpp at line 4, boost/exception/diagnostic_information.hpp at line 4, boost/exception/enable_current_exception.hpp at line 4, boost/exception/enable_error_info.hpp at line 4, boost/exception/errinfo_api_function.hpp at line 4, boost/exception/errinfo_at_line.hpp at line 4, boost/exception/errinfo_errno.hpp at line 4, boost/exception/errinfo_file_handle.hpp at line 4, boost/exception/errinfo_file_name.hpp at line 4, boost/exception/errinfo_file_open_mode.hpp at line 4, boost/exception/errinfo_nested_exception.hpp at line 4, boost/exception/errinfo_type_info_name.hpp at line 4, boost/exception/error_info.hpp at line 4, boost/exception/exception.hpp at line 4, boost/exception/get_error_info.hpp at line 4, boost/exception/info.hpp at line 4, boost/exception/info_tuple.hpp at line 4, boost/exception/to_string.hpp at line 4, boost/exception/to_string_stub.hpp at line 4, boost/exception_ptr.hpp at line 4, libs/exception/src/clone_current_exception_non_intrusive.cpp at line 4
- License text:
- //Distributed under the Boost Software License, Version 1.0. (See accompanying
- //file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/exception/all.hpp [3:4]
- boost/exception/current_exception_cast.hpp [3:4]
- boost/exception/detail/clone_current_exception.hpp [3:4]
- boost/exception/detail/error_info_impl.hpp [3:4]
- boost/exception/detail/exception_ptr.hpp [3:4]
- boost/exception/detail/is_output_streamable.hpp [3:4]
- boost/exception/detail/object_hex_dump.hpp [3:4]
- boost/exception/detail/shared_ptr.hpp [3:4]
- boost/exception/detail/type_info.hpp [3:4]
- boost/exception/diagnostic_information.hpp [3:4]
- boost/exception/enable_current_exception.hpp [3:4]
- boost/exception/enable_error_info.hpp [3:4]
- boost/exception/errinfo_api_function.hpp [3:4]
- boost/exception/errinfo_at_line.hpp [3:4]
- boost/exception/errinfo_errno.hpp [3:4]
- boost/exception/errinfo_file_handle.hpp [3:4]
- boost/exception/errinfo_file_name.hpp [3:4]
- boost/exception/errinfo_file_open_mode.hpp [3:4]
- boost/exception/errinfo_nested_exception.hpp [3:4]
- boost/exception/errinfo_type_info_name.hpp [3:4]
- boost/exception/error_info.hpp [3:4]
- boost/exception/exception.hpp [3:4]
- boost/exception/get_error_info.hpp [3:4]
- boost/exception/info.hpp [3:4]
- boost/exception/info_tuple.hpp [3:4]
- boost/exception/to_string.hpp [3:4]
- boost/exception/to_string_stub.hpp [3:4]
- boost/exception_ptr.hpp [3:4]
- libs/exception/src/clone_current_exception_non_intrusive.cpp [3:4]
-
-KEEP BSL-1.0 fc51d7cd9c354504daf9028ce7e6605d
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/parameter/aux_/overloads.hpp at line 3, boost/parameter/macros.hpp at line 3, boost/parameter/parameters.hpp at line 3
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 96.88
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/parameter/aux_/overloads.hpp [1:4]
- boost/parameter/macros.hpp [1:4]
- boost/parameter/parameters.hpp [1:4]
-
-KEEP BSL-1.0 fc5c644f1c0d63a394437a895a2e4812
-BELONGS ya.make
- License text:
- LICENSE(BSL-1.0)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : TAG
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost_common.inc [5:5]
-
-KEEP BSL-1.0 fc6fd3f07edbb2f20bf4654b73114e1a
-BELONGS ya.make
- License text:
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/detail/binary_search.hpp [2:4]
+ boost/mpl/O1_size.hpp [7:9]
+ boost/mpl/O1_size_fwd.hpp [7:9]
+ boost/mpl/accumulate.hpp [8:10]
+ boost/mpl/advance.hpp [7:9]
+ boost/mpl/advance_fwd.hpp [7:9]
+ boost/mpl/alias.hpp [7:9]
+ boost/mpl/always.hpp [7:9]
+ boost/mpl/and.hpp [7:9]
+ boost/mpl/apply.hpp [11:13]
+ boost/mpl/apply_fwd.hpp [11:13]
+ boost/mpl/apply_wrap.hpp [11:13]
+ boost/mpl/arg.hpp [12:14]
+ boost/mpl/arg_fwd.hpp [8:10]
+ boost/mpl/arithmetic.hpp [7:9]
+ boost/mpl/as_sequence.hpp [7:9]
+ boost/mpl/assert.hpp [7:9]
+ boost/mpl/at.hpp [7:9]
+ boost/mpl/at_fwd.hpp [7:9]
+ boost/mpl/aux_/O1_size_impl.hpp [7:9]
+ boost/mpl/aux_/adl_barrier.hpp [7:9]
+ boost/mpl/aux_/advance_backward.hpp [11:13]
+ boost/mpl/aux_/advance_forward.hpp [11:13]
+ boost/mpl/aux_/apply_1st.hpp [7:9]
+ boost/mpl/aux_/arg_typedef.hpp [7:9]
+ boost/mpl/aux_/arithmetic_op.hpp [6:8]
+ boost/mpl/aux_/arity.hpp [7:9]
+ boost/mpl/aux_/arity_spec.hpp [7:9]
+ boost/mpl/aux_/at_impl.hpp [7:9]
+ boost/mpl/aux_/back_impl.hpp [7:9]
+ boost/mpl/aux_/basic_bind.hpp [8:10]
+ boost/mpl/aux_/clear_impl.hpp [7:9]
+ boost/mpl/aux_/common_name_wknd.hpp [7:9]
+ boost/mpl/aux_/comparison_op.hpp [6:8]
+ boost/mpl/aux_/config/adl.hpp [7:9]
+ boost/mpl/aux_/config/arrays.hpp [7:9]
+ boost/mpl/aux_/config/bcc.hpp [7:9]
+ boost/mpl/aux_/config/bind.hpp [8:10]
+ boost/mpl/aux_/config/compiler.hpp [7:9]
+ boost/mpl/aux_/config/ctps.hpp [7:9]
+ boost/mpl/aux_/config/dependent_nttp.hpp [7:9]
+ boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp [7:9]
+ boost/mpl/aux_/config/dtp.hpp [7:9]
+ boost/mpl/aux_/config/eti.hpp [7:9]
+ boost/mpl/aux_/config/forwarding.hpp [7:9]
+ boost/mpl/aux_/config/gcc.hpp [7:9]
+ boost/mpl/aux_/config/has_apply.hpp [7:9]
+ boost/mpl/aux_/config/has_xxx.hpp [8:10]
+ boost/mpl/aux_/config/integral.hpp [7:9]
+ boost/mpl/aux_/config/intel.hpp [7:9]
+ boost/mpl/aux_/config/lambda.hpp [7:9]
+ boost/mpl/aux_/config/msvc.hpp [7:9]
+ boost/mpl/aux_/config/msvc_typename.hpp [7:9]
+ boost/mpl/aux_/config/nttp.hpp [7:9]
+ boost/mpl/aux_/config/operators.hpp [7:9]
+ boost/mpl/aux_/config/overload_resolution.hpp [7:9]
+ boost/mpl/aux_/config/pp_counter.hpp [7:9]
+ boost/mpl/aux_/config/preprocessor.hpp [7:9]
+ boost/mpl/aux_/config/static_constant.hpp [7:9]
+ boost/mpl/aux_/config/ttp.hpp [7:9]
+ boost/mpl/aux_/config/typeof.hpp [7:9]
+ boost/mpl/aux_/config/use_preprocessed.hpp [7:9]
+ boost/mpl/aux_/config/workaround.hpp [7:9]
+ boost/mpl/aux_/contains_impl.hpp [8:10]
+ boost/mpl/aux_/count_args.hpp [6:8]
+ boost/mpl/aux_/count_impl.hpp [7:9]
+ boost/mpl/aux_/empty_impl.hpp [7:9]
+ boost/mpl/aux_/erase_impl.hpp [7:9]
+ boost/mpl/aux_/erase_key_impl.hpp [7:9]
+ boost/mpl/aux_/filter_iter.hpp [7:9]
+ boost/mpl/aux_/find_if_pred.hpp [8:10]
+ boost/mpl/aux_/fold_impl.hpp [7:9]
+ boost/mpl/aux_/fold_impl_body.hpp [8:10]
+ boost/mpl/aux_/fold_op.hpp [7:9]
+ boost/mpl/aux_/fold_pred.hpp [7:9]
+ boost/mpl/aux_/front_impl.hpp [7:9]
+ boost/mpl/aux_/full_lambda.hpp [11:13]
+ boost/mpl/aux_/has_apply.hpp [7:9]
+ boost/mpl/aux_/has_begin.hpp [7:9]
+ boost/mpl/aux_/has_key_impl.hpp [8:10]
+ boost/mpl/aux_/has_rebind.hpp [7:9]
+ boost/mpl/aux_/has_size.hpp [7:9]
+ boost/mpl/aux_/has_tag.hpp [7:9]
+ boost/mpl/aux_/has_type.hpp [7:9]
+ boost/mpl/aux_/include_preprocessed.hpp [6:8]
+ boost/mpl/aux_/insert_impl.hpp [7:9]
+ boost/mpl/aux_/insert_range_impl.hpp [7:9]
+ boost/mpl/aux_/inserter_algorithm.hpp [8:10]
+ boost/mpl/aux_/integral_wrapper.hpp [4:6]
+ boost/mpl/aux_/is_msvc_eti_arg.hpp [7:9]
+ boost/mpl/aux_/iter_apply.hpp [7:9]
+ boost/mpl/aux_/iter_fold_if_impl.hpp [8:10]
+ boost/mpl/aux_/iter_fold_impl.hpp [7:9]
+ boost/mpl/aux_/iter_push_front.hpp [7:9]
+ boost/mpl/aux_/joint_iter.hpp [7:9]
+ boost/mpl/aux_/lambda_arity_param.hpp [7:9]
+ boost/mpl/aux_/lambda_no_ctps.hpp [11:13]
+ boost/mpl/aux_/lambda_spec.hpp [7:9]
+ boost/mpl/aux_/lambda_support.hpp [7:9]
+ boost/mpl/aux_/largest_int.hpp [7:9]
+ boost/mpl/aux_/logical_op.hpp [4:6]
+ boost/mpl/aux_/msvc_dtw.hpp [4:6]
+ boost/mpl/aux_/msvc_eti_base.hpp [7:9]
+ boost/mpl/aux_/msvc_is_class.hpp [7:9]
+ boost/mpl/aux_/msvc_never_true.hpp [7:9]
+ boost/mpl/aux_/msvc_type.hpp [7:9]
+ boost/mpl/aux_/na.hpp [7:9]
+ boost/mpl/aux_/na_assert.hpp [7:9]
+ boost/mpl/aux_/na_fwd.hpp [7:9]
+ boost/mpl/aux_/na_spec.hpp [7:9]
+ boost/mpl/aux_/nested_type_wknd.hpp [7:9]
+ boost/mpl/aux_/nttp_decl.hpp [7:9]
+ boost/mpl/aux_/numeric_cast_utils.hpp [7:9]
+ boost/mpl/aux_/numeric_op.hpp [10:12]
+ boost/mpl/aux_/order_impl.hpp [8:10]
+ boost/mpl/aux_/overload_names.hpp [7:9]
+ boost/mpl/aux_/partition_op.hpp [8:10]
+ boost/mpl/aux_/pop_back_impl.hpp [7:9]
+ boost/mpl/aux_/pop_front_impl.hpp [7:9]
+ boost/mpl/aux_/preprocessed/bcc/advance_backward.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/advance_forward.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/and.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/apply.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/apply_fwd.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/apply_wrap.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/arg.hpp [5:7]
+ boost/mpl/aux_/preprocessed/bcc/basic_bind.hpp [5:7]
+ boost/mpl/aux_/preprocessed/bcc/bind.hpp [5:7]
+ boost/mpl/aux_/preprocessed/bcc/bind_fwd.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/bitand.hpp [5:7]
+ boost/mpl/aux_/preprocessed/bcc/bitor.hpp [5:7]
+ boost/mpl/aux_/preprocessed/bcc/bitxor.hpp [5:7]
+ boost/mpl/aux_/preprocessed/bcc/deque.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/divides.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/equal_to.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/full_lambda.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/greater.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/greater_equal.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/inherit.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/iter_fold_if_impl.hpp [5:7]
+ boost/mpl/aux_/preprocessed/bcc/iter_fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/lambda_no_ctps.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/less.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/less_equal.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/list.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/list_c.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/map.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/minus.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/modulus.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/not_equal_to.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/or.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/placeholders.hpp [5:7]
+ boost/mpl/aux_/preprocessed/bcc/plus.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/quote.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/reverse_fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/reverse_iter_fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/set.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/set_c.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/shift_left.hpp [5:7]
+ boost/mpl/aux_/preprocessed/bcc/shift_right.hpp [5:7]
+ boost/mpl/aux_/preprocessed/bcc/template_arity.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/times.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/unpack_args.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/vector.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc/vector_c.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/advance_backward.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/advance_forward.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/and.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/apply.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/apply_fwd.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/apply_wrap.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/arg.hpp [5:7]
+ boost/mpl/aux_/preprocessed/bcc551/basic_bind.hpp [5:7]
+ boost/mpl/aux_/preprocessed/bcc551/bind.hpp [5:7]
+ boost/mpl/aux_/preprocessed/bcc551/bind_fwd.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/bitand.hpp [5:7]
+ boost/mpl/aux_/preprocessed/bcc551/bitor.hpp [5:7]
+ boost/mpl/aux_/preprocessed/bcc551/bitxor.hpp [5:7]
+ boost/mpl/aux_/preprocessed/bcc551/deque.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/divides.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/equal_to.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/full_lambda.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/greater.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/greater_equal.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/inherit.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/iter_fold_if_impl.hpp [5:7]
+ boost/mpl/aux_/preprocessed/bcc551/iter_fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/lambda_no_ctps.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/less.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/less_equal.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/list.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/list_c.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/map.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/minus.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/modulus.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/not_equal_to.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/or.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/placeholders.hpp [5:7]
+ boost/mpl/aux_/preprocessed/bcc551/plus.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/quote.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/reverse_fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/reverse_iter_fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/set.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/set_c.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/shift_left.hpp [5:7]
+ boost/mpl/aux_/preprocessed/bcc551/shift_right.hpp [5:7]
+ boost/mpl/aux_/preprocessed/bcc551/template_arity.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/times.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/unpack_args.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/vector.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc551/vector_c.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/advance_backward.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/advance_forward.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/and.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/apply.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/apply_fwd.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/apply_wrap.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/arg.hpp [5:7]
+ boost/mpl/aux_/preprocessed/bcc_pre590/basic_bind.hpp [5:7]
+ boost/mpl/aux_/preprocessed/bcc_pre590/bind.hpp [5:7]
+ boost/mpl/aux_/preprocessed/bcc_pre590/bind_fwd.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/bitand.hpp [5:7]
+ boost/mpl/aux_/preprocessed/bcc_pre590/bitor.hpp [5:7]
+ boost/mpl/aux_/preprocessed/bcc_pre590/bitxor.hpp [5:7]
+ boost/mpl/aux_/preprocessed/bcc_pre590/deque.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/divides.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/equal_to.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/full_lambda.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/greater.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/greater_equal.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/inherit.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_if_impl.hpp [5:7]
+ boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/lambda_no_ctps.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/less.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/less_equal.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/list.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/list_c.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/map.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/minus.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/modulus.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/not_equal_to.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/or.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/placeholders.hpp [5:7]
+ boost/mpl/aux_/preprocessed/bcc_pre590/plus.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/quote.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/reverse_fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/reverse_iter_fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/set.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/set_c.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/shift_left.hpp [5:7]
+ boost/mpl/aux_/preprocessed/bcc_pre590/shift_right.hpp [5:7]
+ boost/mpl/aux_/preprocessed/bcc_pre590/template_arity.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/times.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/unpack_args.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/vector.hpp [4:6]
+ boost/mpl/aux_/preprocessed/bcc_pre590/vector_c.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/advance_backward.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/advance_forward.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/and.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/apply.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/apply_fwd.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/apply_wrap.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/arg.hpp [5:7]
+ boost/mpl/aux_/preprocessed/dmc/basic_bind.hpp [5:7]
+ boost/mpl/aux_/preprocessed/dmc/bind.hpp [5:7]
+ boost/mpl/aux_/preprocessed/dmc/bind_fwd.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/bitand.hpp [5:7]
+ boost/mpl/aux_/preprocessed/dmc/bitor.hpp [5:7]
+ boost/mpl/aux_/preprocessed/dmc/bitxor.hpp [5:7]
+ boost/mpl/aux_/preprocessed/dmc/deque.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/divides.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/equal_to.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/full_lambda.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/greater.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/greater_equal.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/inherit.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/iter_fold_if_impl.hpp [5:7]
+ boost/mpl/aux_/preprocessed/dmc/iter_fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/lambda_no_ctps.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/less.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/less_equal.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/list.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/list_c.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/map.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/minus.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/modulus.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/not_equal_to.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/or.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/placeholders.hpp [5:7]
+ boost/mpl/aux_/preprocessed/dmc/plus.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/quote.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/reverse_fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/reverse_iter_fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/set.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/set_c.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/shift_left.hpp [5:7]
+ boost/mpl/aux_/preprocessed/dmc/shift_right.hpp [5:7]
+ boost/mpl/aux_/preprocessed/dmc/template_arity.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/times.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/unpack_args.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/vector.hpp [4:6]
+ boost/mpl/aux_/preprocessed/dmc/vector_c.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/advance_backward.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/advance_forward.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/and.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/apply.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/arg.hpp [5:7]
+ boost/mpl/aux_/preprocessed/gcc/basic_bind.hpp [5:7]
+ boost/mpl/aux_/preprocessed/gcc/bind.hpp [5:7]
+ boost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/bitand.hpp [5:7]
+ boost/mpl/aux_/preprocessed/gcc/bitor.hpp [5:7]
+ boost/mpl/aux_/preprocessed/gcc/bitxor.hpp [5:7]
+ boost/mpl/aux_/preprocessed/gcc/deque.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/divides.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/equal_to.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/full_lambda.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/greater.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/greater_equal.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/inherit.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp [5:7]
+ boost/mpl/aux_/preprocessed/gcc/iter_fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/less.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/less_equal.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/list.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/list_c.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/map.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/minus.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/modulus.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/not_equal_to.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/or.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/placeholders.hpp [5:7]
+ boost/mpl/aux_/preprocessed/gcc/plus.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/quote.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/reverse_iter_fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/set.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/set_c.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/shift_left.hpp [5:7]
+ boost/mpl/aux_/preprocessed/gcc/shift_right.hpp [5:7]
+ boost/mpl/aux_/preprocessed/gcc/template_arity.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/times.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/unpack_args.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/vector.hpp [4:6]
+ boost/mpl/aux_/preprocessed/gcc/vector_c.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/advance_backward.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/advance_forward.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/and.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/apply.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/apply_fwd.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/apply_wrap.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/arg.hpp [5:7]
+ boost/mpl/aux_/preprocessed/msvc60/basic_bind.hpp [5:7]
+ boost/mpl/aux_/preprocessed/msvc60/bind.hpp [5:7]
+ boost/mpl/aux_/preprocessed/msvc60/bind_fwd.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/bitand.hpp [5:7]
+ boost/mpl/aux_/preprocessed/msvc60/bitor.hpp [5:7]
+ boost/mpl/aux_/preprocessed/msvc60/bitxor.hpp [5:7]
+ boost/mpl/aux_/preprocessed/msvc60/deque.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/divides.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/equal_to.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/full_lambda.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/greater.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/greater_equal.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/inherit.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/iter_fold_if_impl.hpp [5:7]
+ boost/mpl/aux_/preprocessed/msvc60/iter_fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/lambda_no_ctps.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/less.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/less_equal.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/list.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/list_c.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/map.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/minus.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/modulus.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/not_equal_to.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/or.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/placeholders.hpp [5:7]
+ boost/mpl/aux_/preprocessed/msvc60/plus.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/quote.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/reverse_fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/reverse_iter_fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/set.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/set_c.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/shift_left.hpp [5:7]
+ boost/mpl/aux_/preprocessed/msvc60/shift_right.hpp [5:7]
+ boost/mpl/aux_/preprocessed/msvc60/template_arity.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/times.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/unpack_args.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/vector.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc60/vector_c.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/advance_backward.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/advance_forward.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/and.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/apply.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/apply_fwd.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/apply_wrap.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/arg.hpp [5:7]
+ boost/mpl/aux_/preprocessed/msvc70/basic_bind.hpp [5:7]
+ boost/mpl/aux_/preprocessed/msvc70/bind.hpp [5:7]
+ boost/mpl/aux_/preprocessed/msvc70/bind_fwd.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/bitand.hpp [5:7]
+ boost/mpl/aux_/preprocessed/msvc70/bitor.hpp [5:7]
+ boost/mpl/aux_/preprocessed/msvc70/bitxor.hpp [5:7]
+ boost/mpl/aux_/preprocessed/msvc70/deque.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/divides.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/equal_to.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/full_lambda.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/greater.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/greater_equal.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/inherit.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/iter_fold_if_impl.hpp [5:7]
+ boost/mpl/aux_/preprocessed/msvc70/iter_fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/lambda_no_ctps.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/less.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/less_equal.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/list.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/list_c.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/map.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/minus.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/modulus.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/not_equal_to.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/or.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/placeholders.hpp [5:7]
+ boost/mpl/aux_/preprocessed/msvc70/plus.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/quote.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/reverse_fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/reverse_iter_fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/set.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/set_c.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/shift_left.hpp [5:7]
+ boost/mpl/aux_/preprocessed/msvc70/shift_right.hpp [5:7]
+ boost/mpl/aux_/preprocessed/msvc70/template_arity.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/times.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/unpack_args.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/vector.hpp [4:6]
+ boost/mpl/aux_/preprocessed/msvc70/vector_c.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/advance_backward.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/advance_forward.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/and.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/apply.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/apply_fwd.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/apply_wrap.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/arg.hpp [5:7]
+ boost/mpl/aux_/preprocessed/mwcw/basic_bind.hpp [5:7]
+ boost/mpl/aux_/preprocessed/mwcw/bind.hpp [5:7]
+ boost/mpl/aux_/preprocessed/mwcw/bind_fwd.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/bitand.hpp [5:7]
+ boost/mpl/aux_/preprocessed/mwcw/bitor.hpp [5:7]
+ boost/mpl/aux_/preprocessed/mwcw/bitxor.hpp [5:7]
+ boost/mpl/aux_/preprocessed/mwcw/deque.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/divides.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/equal_to.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/full_lambda.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/greater.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/greater_equal.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/inherit.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/iter_fold_if_impl.hpp [5:7]
+ boost/mpl/aux_/preprocessed/mwcw/iter_fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/lambda_no_ctps.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/less.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/less_equal.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/list.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/list_c.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/map.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/minus.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/modulus.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/not_equal_to.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/or.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/placeholders.hpp [5:7]
+ boost/mpl/aux_/preprocessed/mwcw/plus.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/quote.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/reverse_fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/reverse_iter_fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/set.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/set_c.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/shift_left.hpp [5:7]
+ boost/mpl/aux_/preprocessed/mwcw/shift_right.hpp [5:7]
+ boost/mpl/aux_/preprocessed/mwcw/template_arity.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/times.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/unpack_args.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/vector.hpp [4:6]
+ boost/mpl/aux_/preprocessed/mwcw/vector_c.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/advance_backward.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/advance_forward.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/and.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/apply.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/apply_fwd.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/apply_wrap.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/arg.hpp [5:7]
+ boost/mpl/aux_/preprocessed/no_ctps/basic_bind.hpp [5:7]
+ boost/mpl/aux_/preprocessed/no_ctps/bind.hpp [5:7]
+ boost/mpl/aux_/preprocessed/no_ctps/bind_fwd.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/bitand.hpp [5:7]
+ boost/mpl/aux_/preprocessed/no_ctps/bitor.hpp [5:7]
+ boost/mpl/aux_/preprocessed/no_ctps/bitxor.hpp [5:7]
+ boost/mpl/aux_/preprocessed/no_ctps/deque.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/divides.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/equal_to.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/full_lambda.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/greater.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/greater_equal.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/inherit.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/iter_fold_if_impl.hpp [5:7]
+ boost/mpl/aux_/preprocessed/no_ctps/iter_fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/lambda_no_ctps.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/less.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/less_equal.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/list.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/list_c.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/map.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/minus.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/modulus.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/not_equal_to.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/or.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/placeholders.hpp [5:7]
+ boost/mpl/aux_/preprocessed/no_ctps/plus.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/quote.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/reverse_fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/reverse_iter_fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/set.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/set_c.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/shift_left.hpp [5:7]
+ boost/mpl/aux_/preprocessed/no_ctps/shift_right.hpp [5:7]
+ boost/mpl/aux_/preprocessed/no_ctps/template_arity.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/times.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/unpack_args.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/vector.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ctps/vector_c.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/advance_backward.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/advance_forward.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/and.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/apply.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/apply_fwd.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/apply_wrap.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/arg.hpp [5:7]
+ boost/mpl/aux_/preprocessed/no_ttp/basic_bind.hpp [5:7]
+ boost/mpl/aux_/preprocessed/no_ttp/bind.hpp [5:7]
+ boost/mpl/aux_/preprocessed/no_ttp/bind_fwd.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/bitand.hpp [5:7]
+ boost/mpl/aux_/preprocessed/no_ttp/bitor.hpp [5:7]
+ boost/mpl/aux_/preprocessed/no_ttp/bitxor.hpp [5:7]
+ boost/mpl/aux_/preprocessed/no_ttp/deque.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/divides.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/equal_to.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/full_lambda.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/greater.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/greater_equal.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/inherit.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/iter_fold_if_impl.hpp [5:7]
+ boost/mpl/aux_/preprocessed/no_ttp/iter_fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/lambda_no_ctps.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/less.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/less_equal.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/list.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/list_c.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/map.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/minus.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/modulus.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/not_equal_to.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/or.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/placeholders.hpp [5:7]
+ boost/mpl/aux_/preprocessed/no_ttp/plus.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/quote.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/reverse_fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/reverse_iter_fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/set.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/set_c.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/shift_left.hpp [5:7]
+ boost/mpl/aux_/preprocessed/no_ttp/shift_right.hpp [5:7]
+ boost/mpl/aux_/preprocessed/no_ttp/template_arity.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/times.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/unpack_args.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/vector.hpp [4:6]
+ boost/mpl/aux_/preprocessed/no_ttp/vector_c.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/advance_backward.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/advance_forward.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/and.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/apply.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/apply_fwd.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/apply_wrap.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/arg.hpp [5:7]
+ boost/mpl/aux_/preprocessed/plain/basic_bind.hpp [5:7]
+ boost/mpl/aux_/preprocessed/plain/bind.hpp [5:7]
+ boost/mpl/aux_/preprocessed/plain/bind_fwd.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/bitand.hpp [5:7]
+ boost/mpl/aux_/preprocessed/plain/bitor.hpp [5:7]
+ boost/mpl/aux_/preprocessed/plain/bitxor.hpp [5:7]
+ boost/mpl/aux_/preprocessed/plain/deque.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/divides.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/equal_to.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/full_lambda.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/greater.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/greater_equal.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/inherit.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/iter_fold_if_impl.hpp [5:7]
+ boost/mpl/aux_/preprocessed/plain/iter_fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/lambda_no_ctps.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/less.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/less_equal.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/list.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/list_c.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/map.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/minus.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/modulus.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/not_equal_to.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/or.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/placeholders.hpp [5:7]
+ boost/mpl/aux_/preprocessed/plain/plus.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/quote.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/reverse_fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/reverse_iter_fold_impl.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/set.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/set_c.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/shift_left.hpp [5:7]
+ boost/mpl/aux_/preprocessed/plain/shift_right.hpp [5:7]
+ boost/mpl/aux_/preprocessed/plain/template_arity.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/times.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/unpack_args.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/vector.hpp [4:6]
+ boost/mpl/aux_/preprocessed/plain/vector_c.hpp [4:6]
+ boost/mpl/aux_/preprocessor/add.hpp [7:9]
+ boost/mpl/aux_/preprocessor/def_params_tail.hpp [7:9]
+ boost/mpl/aux_/preprocessor/default_params.hpp [7:9]
+ boost/mpl/aux_/preprocessor/enum.hpp [7:9]
+ boost/mpl/aux_/preprocessor/ext_params.hpp [7:9]
+ boost/mpl/aux_/preprocessor/filter_params.hpp [7:9]
+ boost/mpl/aux_/preprocessor/is_seq.hpp [8:10]
+ boost/mpl/aux_/preprocessor/params.hpp [7:9]
+ boost/mpl/aux_/preprocessor/partial_spec_params.hpp [7:9]
+ boost/mpl/aux_/preprocessor/range.hpp [7:9]
+ boost/mpl/aux_/preprocessor/repeat.hpp [7:9]
+ boost/mpl/aux_/preprocessor/sub.hpp [7:9]
+ boost/mpl/aux_/preprocessor/token_equal.hpp [8:10]
+ boost/mpl/aux_/preprocessor/tuple.hpp [7:9]
+ boost/mpl/aux_/ptr_to_ref.hpp [7:9]
+ boost/mpl/aux_/push_back_impl.hpp [7:9]
+ boost/mpl/aux_/push_front_impl.hpp [7:9]
+ boost/mpl/aux_/range_c/O1_size.hpp [7:9]
+ boost/mpl/aux_/range_c/back.hpp [7:9]
+ boost/mpl/aux_/range_c/empty.hpp [7:9]
+ boost/mpl/aux_/range_c/front.hpp [7:9]
+ boost/mpl/aux_/range_c/iterator.hpp [7:9]
+ boost/mpl/aux_/range_c/size.hpp [7:9]
+ boost/mpl/aux_/range_c/tag.hpp [7:9]
+ boost/mpl/aux_/reverse_fold_impl.hpp [7:9]
+ boost/mpl/aux_/reverse_fold_impl_body.hpp [8:10]
+ boost/mpl/aux_/reverse_iter_fold_impl.hpp [7:9]
+ boost/mpl/aux_/sequence_wrapper.hpp [10:12]
+ boost/mpl/aux_/shift_op.hpp [6:8]
+ boost/mpl/aux_/single_element_iter.hpp [7:9]
+ boost/mpl/aux_/size_impl.hpp [7:9]
+ boost/mpl/aux_/sort_impl.hpp [7:9]
+ boost/mpl/aux_/static_cast.hpp [7:9]
+ boost/mpl/aux_/template_arity.hpp [11:13]
+ boost/mpl/aux_/template_arity_fwd.hpp [7:9]
+ boost/mpl/aux_/test.hpp [7:9]
+ boost/mpl/aux_/test/assert.hpp [7:9]
+ boost/mpl/aux_/test/data.hpp [7:9]
+ boost/mpl/aux_/test/test_case.hpp [7:9]
+ boost/mpl/aux_/traits_lambda_spec.hpp [7:9]
+ boost/mpl/aux_/transform_iter.hpp [7:9]
+ boost/mpl/aux_/type_wrapper.hpp [8:10]
+ boost/mpl/aux_/unwrap.hpp [8:10]
+ boost/mpl/aux_/value_wknd.hpp [7:9]
+ boost/mpl/aux_/yes_no.hpp [7:9]
+ boost/mpl/back.hpp [7:9]
+ boost/mpl/back_fwd.hpp [7:9]
+ boost/mpl/back_inserter.hpp [8:10]
+ boost/mpl/base.hpp [7:9]
+ boost/mpl/begin.hpp [7:9]
+ boost/mpl/begin_end.hpp [7:9]
+ boost/mpl/begin_end_fwd.hpp [7:9]
+ boost/mpl/bind.hpp [12:14]
+ boost/mpl/bind_fwd.hpp [11:13]
+ boost/mpl/bitand.hpp [8:10]
+ boost/mpl/bitor.hpp [8:10]
+ boost/mpl/bitwise.hpp [8:10]
+ boost/mpl/bitxor.hpp [8:10]
+ boost/mpl/bool.hpp [7:9]
+ boost/mpl/bool_fwd.hpp [7:9]
+ boost/mpl/char.hpp [7:9]
+ boost/mpl/char_fwd.hpp [7:9]
+ boost/mpl/clear.hpp [7:9]
+ boost/mpl/clear_fwd.hpp [7:9]
+ boost/mpl/comparison.hpp [7:9]
+ boost/mpl/contains.hpp [8:10]
+ boost/mpl/contains_fwd.hpp [8:10]
+ boost/mpl/copy.hpp [8:10]
+ boost/mpl/copy_if.hpp [8:10]
+ boost/mpl/count.hpp [7:9]
+ boost/mpl/count_fwd.hpp [7:9]
+ boost/mpl/count_if.hpp [7:9]
+ boost/mpl/deque.hpp [7:9]
+ boost/mpl/deref.hpp [7:9]
+ boost/mpl/distance.hpp [7:9]
+ boost/mpl/distance_fwd.hpp [7:9]
+ boost/mpl/divides.hpp [7:9]
+ boost/mpl/empty.hpp [7:9]
+ boost/mpl/empty_base.hpp [7:9]
+ boost/mpl/empty_fwd.hpp [7:9]
+ boost/mpl/empty_sequence.hpp [8:10]
+ boost/mpl/end.hpp [7:9]
+ boost/mpl/equal.hpp [7:9]
+ boost/mpl/equal_to.hpp [7:9]
+ boost/mpl/erase.hpp [7:9]
+ boost/mpl/erase_fwd.hpp [7:9]
+ boost/mpl/erase_key.hpp [7:9]
+ boost/mpl/erase_key_fwd.hpp [7:9]
+ boost/mpl/filter_view.hpp [7:9]
+ boost/mpl/find.hpp [7:9]
+ boost/mpl/find_if.hpp [7:9]
+ boost/mpl/fold.hpp [8:10]
+ boost/mpl/for_each.hpp [7:9]
+ boost/mpl/front.hpp [7:9]
+ boost/mpl/front_fwd.hpp [7:9]
+ boost/mpl/front_inserter.hpp [8:10]
+ boost/mpl/greater.hpp [7:9]
+ boost/mpl/greater_equal.hpp [7:9]
+ boost/mpl/has_key.hpp [8:10]
+ boost/mpl/has_key_fwd.hpp [8:10]
+ boost/mpl/has_xxx.hpp [9:11]
+ boost/mpl/identity.hpp [7:9]
+ boost/mpl/if.hpp [7:9]
+ boost/mpl/index_if.hpp [7:9]
+ boost/mpl/index_of.hpp [8:10]
+ boost/mpl/inherit.hpp [11:13]
+ boost/mpl/inherit_linearly.hpp [7:9]
+ boost/mpl/insert.hpp [7:9]
+ boost/mpl/insert_fwd.hpp [7:9]
+ boost/mpl/insert_range.hpp [7:9]
+ boost/mpl/insert_range_fwd.hpp [7:9]
+ boost/mpl/inserter.hpp [8:10]
+ boost/mpl/int.hpp [7:9]
+ boost/mpl/int_fwd.hpp [7:9]
+ boost/mpl/integral_c.hpp [7:9]
+ boost/mpl/integral_c_fwd.hpp [7:9]
+ boost/mpl/integral_c_tag.hpp [7:9]
+ boost/mpl/is_placeholder.hpp [7:9]
+ boost/mpl/is_sequence.hpp [7:9]
+ boost/mpl/iter_fold.hpp [8:10]
+ boost/mpl/iter_fold_if.hpp [8:10]
+ boost/mpl/iterator_category.hpp [7:9]
+ boost/mpl/iterator_range.hpp [7:9]
+ boost/mpl/iterator_tags.hpp [7:9]
+ boost/mpl/joint_view.hpp [7:9]
+ boost/mpl/key_type.hpp [8:10]
+ boost/mpl/key_type_fwd.hpp [8:10]
+ boost/mpl/lambda.hpp [7:9]
+ boost/mpl/lambda_fwd.hpp [7:9]
+ boost/mpl/less.hpp [7:9]
+ boost/mpl/less_equal.hpp [7:9]
+ boost/mpl/limits/arity.hpp [7:9]
+ boost/mpl/limits/list.hpp [7:9]
+ boost/mpl/limits/map.hpp [7:9]
+ boost/mpl/limits/set.hpp [7:9]
+ boost/mpl/limits/string.hpp [7:9]
+ boost/mpl/limits/unrolling.hpp [7:9]
+ boost/mpl/limits/vector.hpp [7:9]
+ boost/mpl/list.hpp [7:9]
+ boost/mpl/list/aux_/O1_size.hpp [7:9]
+ boost/mpl/list/aux_/begin_end.hpp [7:9]
+ boost/mpl/list/aux_/clear.hpp [7:9]
+ boost/mpl/list/aux_/empty.hpp [7:9]
+ boost/mpl/list/aux_/front.hpp [7:9]
+ boost/mpl/list/aux_/include_preprocessed.hpp [4:6]
+ boost/mpl/list/aux_/item.hpp [7:9]
+ boost/mpl/list/aux_/iterator.hpp [7:9]
+ boost/mpl/list/aux_/numbered.hpp [7:9]
+ boost/mpl/list/aux_/numbered_c.hpp [6:8]
+ boost/mpl/list/aux_/pop_front.hpp [7:9]
+ boost/mpl/list/aux_/preprocessed/plain/list10.hpp [4:6]
+ boost/mpl/list/aux_/preprocessed/plain/list10_c.hpp [4:6]
+ boost/mpl/list/aux_/preprocessed/plain/list20.hpp [4:6]
+ boost/mpl/list/aux_/preprocessed/plain/list20_c.hpp [4:6]
+ boost/mpl/list/aux_/preprocessed/plain/list30.hpp [4:6]
+ boost/mpl/list/aux_/preprocessed/plain/list30_c.hpp [4:6]
+ boost/mpl/list/aux_/preprocessed/plain/list40.hpp [4:6]
+ boost/mpl/list/aux_/preprocessed/plain/list40_c.hpp [4:6]
+ boost/mpl/list/aux_/preprocessed/plain/list50.hpp [4:6]
+ boost/mpl/list/aux_/preprocessed/plain/list50_c.hpp [4:6]
+ boost/mpl/list/aux_/push_back.hpp [7:9]
+ boost/mpl/list/aux_/push_front.hpp [7:9]
+ boost/mpl/list/aux_/size.hpp [7:9]
+ boost/mpl/list/aux_/tag.hpp [7:9]
+ boost/mpl/list/list0.hpp [7:9]
+ boost/mpl/list/list0_c.hpp [7:9]
+ boost/mpl/list/list10.hpp [7:9]
+ boost/mpl/list/list10_c.hpp [7:9]
+ boost/mpl/list/list20.hpp [7:9]
+ boost/mpl/list/list20_c.hpp [7:9]
+ boost/mpl/list/list30.hpp [7:9]
+ boost/mpl/list/list30_c.hpp [7:9]
+ boost/mpl/list/list40.hpp [7:9]
+ boost/mpl/list/list40_c.hpp [7:9]
+ boost/mpl/list/list50.hpp [7:9]
+ boost/mpl/list/list50_c.hpp [7:9]
+ boost/mpl/list_c.hpp [7:9]
+ boost/mpl/logical.hpp [7:9]
+ boost/mpl/long.hpp [7:9]
+ boost/mpl/long_fwd.hpp [7:9]
+ boost/mpl/lower_bound.hpp [7:9]
+ boost/mpl/map.hpp [7:9]
+ boost/mpl/map/aux_/at_impl.hpp [8:10]
+ boost/mpl/map/aux_/begin_end_impl.hpp [8:10]
+ boost/mpl/map/aux_/clear_impl.hpp [8:10]
+ boost/mpl/map/aux_/contains_impl.hpp [7:9]
+ boost/mpl/map/aux_/empty_impl.hpp [7:9]
+ boost/mpl/map/aux_/erase_impl.hpp [8:10]
+ boost/mpl/map/aux_/erase_key_impl.hpp [8:10]
+ boost/mpl/map/aux_/has_key_impl.hpp [8:10]
+ boost/mpl/map/aux_/include_preprocessed.hpp [4:6]
+ boost/mpl/map/aux_/insert_impl.hpp [8:10]
+ boost/mpl/map/aux_/insert_range_impl.hpp [7:9]
+ boost/mpl/map/aux_/item.hpp [8:10]
+ boost/mpl/map/aux_/iterator.hpp [8:10]
+ boost/mpl/map/aux_/key_type_impl.hpp [8:10]
+ boost/mpl/map/aux_/map0.hpp [8:10]
+ boost/mpl/map/aux_/numbered.hpp [8:10]
+ boost/mpl/map/aux_/preprocessed/no_ctps/map10.hpp [5:7]
+ boost/mpl/map/aux_/preprocessed/no_ctps/map20.hpp [5:7]
+ boost/mpl/map/aux_/preprocessed/no_ctps/map30.hpp [5:7]
+ boost/mpl/map/aux_/preprocessed/no_ctps/map40.hpp [5:7]
+ boost/mpl/map/aux_/preprocessed/no_ctps/map50.hpp [5:7]
+ boost/mpl/map/aux_/preprocessed/plain/map10.hpp [5:7]
+ boost/mpl/map/aux_/preprocessed/plain/map20.hpp [5:7]
+ boost/mpl/map/aux_/preprocessed/plain/map30.hpp [5:7]
+ boost/mpl/map/aux_/preprocessed/plain/map40.hpp [5:7]
+ boost/mpl/map/aux_/preprocessed/plain/map50.hpp [5:7]
+ boost/mpl/map/aux_/preprocessed/typeof_based/map10.hpp [5:7]
+ boost/mpl/map/aux_/preprocessed/typeof_based/map20.hpp [5:7]
+ boost/mpl/map/aux_/preprocessed/typeof_based/map30.hpp [5:7]
+ boost/mpl/map/aux_/preprocessed/typeof_based/map40.hpp [5:7]
+ boost/mpl/map/aux_/preprocessed/typeof_based/map50.hpp [5:7]
+ boost/mpl/map/aux_/size_impl.hpp [7:9]
+ boost/mpl/map/aux_/tag.hpp [8:10]
+ boost/mpl/map/aux_/value_type_impl.hpp [8:10]
+ boost/mpl/map/map0.hpp [8:10]
+ boost/mpl/map/map10.hpp [8:10]
+ boost/mpl/map/map20.hpp [8:10]
+ boost/mpl/map/map30.hpp [8:10]
+ boost/mpl/map/map40.hpp [8:10]
+ boost/mpl/map/map50.hpp [8:10]
+ boost/mpl/math/fixed_c.hpp [7:9]
+ boost/mpl/math/is_even.hpp [7:9]
+ boost/mpl/math/rational_c.hpp [7:9]
+ boost/mpl/max.hpp [7:9]
+ boost/mpl/max_element.hpp [7:9]
+ boost/mpl/min.hpp [7:9]
+ boost/mpl/min_element.hpp [7:9]
+ boost/mpl/min_max.hpp [7:9]
+ boost/mpl/minus.hpp [7:9]
+ boost/mpl/modulus.hpp [7:9]
+ boost/mpl/multiplies.hpp [7:9]
+ boost/mpl/multiset/aux_/count_impl.hpp [7:9]
+ boost/mpl/multiset/aux_/insert_impl.hpp [7:9]
+ boost/mpl/multiset/aux_/item.hpp [7:9]
+ boost/mpl/multiset/aux_/multiset0.hpp [7:9]
+ boost/mpl/multiset/aux_/tag.hpp [7:9]
+ boost/mpl/multiset/multiset0.hpp [7:9]
+ boost/mpl/negate.hpp [7:9]
+ boost/mpl/next.hpp [7:9]
+ boost/mpl/next_prior.hpp [7:9]
+ boost/mpl/not.hpp [7:9]
+ boost/mpl/not_equal_to.hpp [7:9]
+ boost/mpl/or.hpp [7:9]
+ boost/mpl/order.hpp [8:10]
+ boost/mpl/order_fwd.hpp [8:10]
+ boost/mpl/pair.hpp [7:9]
+ boost/mpl/pair_view.hpp [8:10]
+ boost/mpl/partition.hpp [8:10]
+ boost/mpl/placeholders.hpp [12:14]
+ boost/mpl/plus.hpp [7:9]
+ boost/mpl/pop_back.hpp [7:9]
+ boost/mpl/pop_back_fwd.hpp [7:9]
+ boost/mpl/pop_front.hpp [7:9]
+ boost/mpl/pop_front_fwd.hpp [7:9]
+ boost/mpl/print.hpp [8:10]
+ boost/mpl/prior.hpp [7:9]
+ boost/mpl/protect.hpp [8:10]
+ boost/mpl/push_back.hpp [7:9]
+ boost/mpl/push_back_fwd.hpp [7:9]
+ boost/mpl/push_front.hpp [7:9]
+ boost/mpl/push_front_fwd.hpp [7:9]
+ boost/mpl/quote.hpp [11:13]
+ boost/mpl/range_c.hpp [7:9]
+ boost/mpl/remove.hpp [8:10]
+ boost/mpl/remove_if.hpp [8:10]
+ boost/mpl/replace.hpp [9:11]
+ boost/mpl/replace_if.hpp [9:11]
+ boost/mpl/reverse.hpp [7:9]
+ boost/mpl/reverse_fold.hpp [8:10]
+ boost/mpl/reverse_iter_fold.hpp [8:10]
+ boost/mpl/same_as.hpp [7:9]
+ boost/mpl/sequence_tag.hpp [7:9]
+ boost/mpl/sequence_tag_fwd.hpp [7:9]
+ boost/mpl/set.hpp [7:9]
+ boost/mpl/set/aux_/at_impl.hpp [7:9]
+ boost/mpl/set/aux_/begin_end_impl.hpp [8:10]
+ boost/mpl/set/aux_/clear_impl.hpp [8:10]
+ boost/mpl/set/aux_/empty_impl.hpp [7:9]
+ boost/mpl/set/aux_/erase_impl.hpp [8:10]
+ boost/mpl/set/aux_/erase_key_impl.hpp [8:10]
+ boost/mpl/set/aux_/has_key_impl.hpp [8:10]
+ boost/mpl/set/aux_/include_preprocessed.hpp [6:8]
+ boost/mpl/set/aux_/insert_impl.hpp [8:10]
+ boost/mpl/set/aux_/insert_range_impl.hpp [7:9]
+ boost/mpl/set/aux_/item.hpp [8:10]
+ boost/mpl/set/aux_/iterator.hpp [8:10]
+ boost/mpl/set/aux_/key_type_impl.hpp [8:10]
+ boost/mpl/set/aux_/numbered.hpp [8:10]
+ boost/mpl/set/aux_/numbered_c.hpp [8:10]
+ boost/mpl/set/aux_/preprocessed/plain/set10.hpp [5:7]
+ boost/mpl/set/aux_/preprocessed/plain/set10_c.hpp [5:7]
+ boost/mpl/set/aux_/preprocessed/plain/set20.hpp [5:7]
+ boost/mpl/set/aux_/preprocessed/plain/set20_c.hpp [5:7]
+ boost/mpl/set/aux_/preprocessed/plain/set30.hpp [5:7]
+ boost/mpl/set/aux_/preprocessed/plain/set30_c.hpp [5:7]
+ boost/mpl/set/aux_/preprocessed/plain/set40.hpp [5:7]
+ boost/mpl/set/aux_/preprocessed/plain/set40_c.hpp [5:7]
+ boost/mpl/set/aux_/preprocessed/plain/set50.hpp [5:7]
+ boost/mpl/set/aux_/preprocessed/plain/set50_c.hpp [5:7]
+ boost/mpl/set/aux_/set0.hpp [8:10]
+ boost/mpl/set/aux_/size_impl.hpp [7:9]
+ boost/mpl/set/aux_/tag.hpp [8:10]
+ boost/mpl/set/aux_/value_type_impl.hpp [8:10]
+ boost/mpl/set/set0.hpp [8:10]
+ boost/mpl/set/set0_c.hpp [8:10]
+ boost/mpl/set/set10.hpp [8:10]
+ boost/mpl/set/set10_c.hpp [8:10]
+ boost/mpl/set/set20.hpp [8:10]
+ boost/mpl/set/set20_c.hpp [8:10]
+ boost/mpl/set/set30.hpp [8:10]
+ boost/mpl/set/set30_c.hpp [8:10]
+ boost/mpl/set/set40.hpp [8:10]
+ boost/mpl/set/set40_c.hpp [8:10]
+ boost/mpl/set/set50.hpp [8:10]
+ boost/mpl/set/set50_c.hpp [8:10]
+ boost/mpl/set_c.hpp [7:9]
+ boost/mpl/shift_left.hpp [8:10]
+ boost/mpl/shift_right.hpp [8:10]
+ boost/mpl/single_view.hpp [7:9]
+ boost/mpl/size.hpp [7:9]
+ boost/mpl/size_fwd.hpp [7:9]
+ boost/mpl/size_t.hpp [7:9]
+ boost/mpl/size_t_fwd.hpp [7:9]
+ boost/mpl/sizeof.hpp [7:9]
+ boost/mpl/sort.hpp [8:10]
+ boost/mpl/stable_partition.hpp [8:10]
+ boost/mpl/switch.hpp [7:9]
+ boost/mpl/tag.hpp [7:9]
+ boost/mpl/times.hpp [7:9]
+ boost/mpl/transform.hpp [8:10]
+ boost/mpl/transform_view.hpp [7:9]
+ boost/mpl/unique.hpp [8:10]
+ boost/mpl/unpack_args.hpp [11:13]
+ boost/mpl/upper_bound.hpp [7:9]
+ boost/mpl/value_type.hpp [8:10]
+ boost/mpl/value_type_fwd.hpp [8:10]
+ boost/mpl/vector.hpp [7:9]
+ boost/mpl/vector/aux_/O1_size.hpp [7:9]
+ boost/mpl/vector/aux_/at.hpp [7:9]
+ boost/mpl/vector/aux_/back.hpp [7:9]
+ boost/mpl/vector/aux_/begin_end.hpp [7:9]
+ boost/mpl/vector/aux_/clear.hpp [7:9]
+ boost/mpl/vector/aux_/empty.hpp [7:9]
+ boost/mpl/vector/aux_/front.hpp [7:9]
+ boost/mpl/vector/aux_/include_preprocessed.hpp [6:8]
+ boost/mpl/vector/aux_/item.hpp [7:9]
+ boost/mpl/vector/aux_/iterator.hpp [7:9]
+ boost/mpl/vector/aux_/numbered.hpp [8:10]
+ boost/mpl/vector/aux_/numbered_c.hpp [8:10]
+ boost/mpl/vector/aux_/pop_back.hpp [7:9]
+ boost/mpl/vector/aux_/pop_front.hpp [7:9]
+ boost/mpl/vector/aux_/preprocessed/no_ctps/vector10.hpp [4:6]
+ boost/mpl/vector/aux_/preprocessed/no_ctps/vector10_c.hpp [4:6]
+ boost/mpl/vector/aux_/preprocessed/no_ctps/vector20.hpp [4:6]
+ boost/mpl/vector/aux_/preprocessed/no_ctps/vector20_c.hpp [4:6]
+ boost/mpl/vector/aux_/preprocessed/no_ctps/vector30.hpp [4:6]
+ boost/mpl/vector/aux_/preprocessed/no_ctps/vector30_c.hpp [4:6]
+ boost/mpl/vector/aux_/preprocessed/no_ctps/vector40.hpp [4:6]
+ boost/mpl/vector/aux_/preprocessed/no_ctps/vector40_c.hpp [4:6]
+ boost/mpl/vector/aux_/preprocessed/no_ctps/vector50.hpp [4:6]
+ boost/mpl/vector/aux_/preprocessed/no_ctps/vector50_c.hpp [4:6]
+ boost/mpl/vector/aux_/preprocessed/plain/vector10.hpp [4:6]
+ boost/mpl/vector/aux_/preprocessed/plain/vector10_c.hpp [4:6]
+ boost/mpl/vector/aux_/preprocessed/plain/vector20.hpp [4:6]
+ boost/mpl/vector/aux_/preprocessed/plain/vector20_c.hpp [4:6]
+ boost/mpl/vector/aux_/preprocessed/plain/vector30.hpp [4:6]
+ boost/mpl/vector/aux_/preprocessed/plain/vector30_c.hpp [4:6]
+ boost/mpl/vector/aux_/preprocessed/plain/vector40.hpp [4:6]
+ boost/mpl/vector/aux_/preprocessed/plain/vector40_c.hpp [4:6]
+ boost/mpl/vector/aux_/preprocessed/plain/vector50.hpp [4:6]
+ boost/mpl/vector/aux_/preprocessed/plain/vector50_c.hpp [4:6]
+ boost/mpl/vector/aux_/preprocessed/typeof_based/vector10.hpp [4:6]
+ boost/mpl/vector/aux_/preprocessed/typeof_based/vector10_c.hpp [4:6]
+ boost/mpl/vector/aux_/preprocessed/typeof_based/vector20.hpp [4:6]
+ boost/mpl/vector/aux_/preprocessed/typeof_based/vector20_c.hpp [4:6]
+ boost/mpl/vector/aux_/preprocessed/typeof_based/vector30.hpp [4:6]
+ boost/mpl/vector/aux_/preprocessed/typeof_based/vector30_c.hpp [4:6]
+ boost/mpl/vector/aux_/preprocessed/typeof_based/vector40.hpp [4:6]
+ boost/mpl/vector/aux_/preprocessed/typeof_based/vector40_c.hpp [4:6]
+ boost/mpl/vector/aux_/preprocessed/typeof_based/vector50.hpp [4:6]
+ boost/mpl/vector/aux_/preprocessed/typeof_based/vector50_c.hpp [4:6]
+ boost/mpl/vector/aux_/push_back.hpp [7:9]
+ boost/mpl/vector/aux_/push_front.hpp [7:9]
+ boost/mpl/vector/aux_/size.hpp [7:9]
+ boost/mpl/vector/aux_/tag.hpp [7:9]
+ boost/mpl/vector/aux_/vector0.hpp [7:9]
+ boost/mpl/vector/vector0.hpp [7:9]
+ boost/mpl/vector/vector0_c.hpp [7:9]
+ boost/mpl/vector/vector10.hpp [7:9]
+ boost/mpl/vector/vector10_c.hpp [7:9]
+ boost/mpl/vector/vector20.hpp [7:9]
+ boost/mpl/vector/vector20_c.hpp [7:9]
+ boost/mpl/vector/vector30.hpp [7:9]
+ boost/mpl/vector/vector30_c.hpp [7:9]
+ boost/mpl/vector/vector40.hpp [7:9]
+ boost/mpl/vector/vector40_c.hpp [7:9]
+ boost/mpl/vector/vector50.hpp [7:9]
+ boost/mpl/vector/vector50_c.hpp [7:9]
+ boost/mpl/vector_c.hpp [7:9]
+ boost/mpl/void.hpp [7:9]
+ boost/mpl/void_fwd.hpp [7:9]
+ boost/property_tree/detail/exception_implementation.hpp [5:7]
+ boost/property_tree/detail/file_parser_error.hpp [4:6]
+ boost/property_tree/detail/info_parser_error.hpp [4:6]
+ boost/property_tree/detail/info_parser_read.hpp [4:6]
+ boost/property_tree/detail/info_parser_utils.hpp [4:6]
+ boost/property_tree/detail/info_parser_write.hpp [4:6]
+ boost/property_tree/detail/info_parser_writer_settings.hpp [5:7]
+ boost/property_tree/detail/ptree_utils.hpp [4:6]
+ boost/property_tree/detail/rapidxml.hpp [4:6]
+ boost/property_tree/detail/xml_parser_error.hpp [4:6]
+ boost/property_tree/detail/xml_parser_flags.hpp [4:6]
+ boost/property_tree/detail/xml_parser_read_rapidxml.hpp [4:6]
+ boost/property_tree/detail/xml_parser_utils.hpp [4:6]
+ boost/property_tree/detail/xml_parser_write.hpp [5:7]
+ boost/property_tree/detail/xml_parser_writer_settings.hpp [5:7]
+ boost/property_tree/exceptions.hpp [5:7]
+ boost/property_tree/id_translator.hpp [4:6]
+ boost/property_tree/info_parser.hpp [4:6]
+ boost/property_tree/ini_parser.hpp [5:7]
+ boost/property_tree/json_parser.hpp [5:7]
+ boost/property_tree/json_parser/detail/read.hpp [4:6]
+ boost/property_tree/json_parser/detail/write.hpp [4:6]
+ boost/property_tree/json_parser/error.hpp [4:6]
+ boost/property_tree/ptree.hpp [5:7]
+ boost/property_tree/ptree_fwd.hpp [5:7]
+ boost/property_tree/ptree_serialization.hpp [4:6]
+ boost/property_tree/stream_translator.hpp [4:6]
+ boost/property_tree/string_path.hpp [4:6]
+ boost/property_tree/xml_parser.hpp [5:7]
+ boost/range/atl.hpp [10:12]
+ boost/range/detail/microsoft.hpp [7:9]
+ boost/range/mfc.hpp [10:12]
+ boost/type_traits/detail/bool_trait_def.hpp [6:8]
+ boost/type_traits/detail/bool_trait_undef.hpp [6:8]
+ boost/type_traits/detail/template_arity_spec.hpp [5:7]
+
+KEEP BSL-1.0 be6811730f85c4929521c5b10c472668
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/archive/basic_streambuf_locale_saver.hpp at line 23
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/archive/basic_streambuf_locale_saver.hpp [21:23]
+
+KEEP BSL-1.0 bf0fd55850dbf83aac86f825081dbe20
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/graph/buffer_concepts.hpp at line 3, boost/graph/stoer_wagner_min_cut.hpp at line 3
+ License text:
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or the copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.43
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/graph/buffer_concepts.hpp [2:4]
+ boost/graph/stoer_wagner_min_cut.hpp [2:4]
+
+KEEP BSL-1.0 bf51e8acf94582b5acb97f1eefc18468
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/predef/library/c/cloudabi.h at line 5
+ License text:
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/predef/library/c/cloudabi.h [4:6]
+
+KEEP BSL-1.0 bfa2e9f25dcd3278b51a40bdb6b5edc5
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/core/no_exceptions_support.hpp at line 11
+ License text:
+ // Use, modification and distribution is subject to the Boost Software
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt
+ // or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/core/no_exceptions_support.hpp [10:12]
+
+KEEP BSL-1.0 bfce030a4887d21b304b87b154737065
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/sync/spin/wait.hpp at line 6
+ License text:
+ // (C) Copyright Ion Gaztanaga 2013-2013. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/interprocess/sync/spin/wait.hpp [4:6]
+
+KEEP BSL-1.0 c01de0902348b7c9494d50eaacc721eb
+BELONGS libs/atomic/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/atomic/atomic.hpp at line 3, boost/atomic/atomic_flag.hpp at line 3, boost/atomic/capabilities.hpp at line 3, boost/atomic/detail/addressof.hpp at line 3, boost/atomic/detail/atomic_flag.hpp at line 3, boost/atomic/detail/atomic_template.hpp at line 3, boost/atomic/detail/bitwise_cast.hpp at line 3, boost/atomic/detail/bitwise_fp_cast.hpp at line 3, boost/atomic/detail/caps_gcc_alpha.hpp at line 3, boost/atomic/detail/caps_gcc_arm.hpp at line 3, boost/atomic/detail/caps_gcc_atomic.hpp at line 3, boost/atomic/detail/caps_gcc_ppc.hpp at line 3, boost/atomic/detail/caps_gcc_sparc.hpp at line 3, boost/atomic/detail/caps_gcc_sync.hpp at line 3, boost/atomic/detail/caps_gcc_x86.hpp at line 3, boost/atomic/detail/caps_linux_arm.hpp at line 3, boost/atomic/detail/caps_msvc_arm.hpp at line 3, boost/atomic/detail/caps_msvc_x86.hpp at line 3, boost/atomic/detail/caps_windows.hpp at line 3, boost/atomic/detail/config.hpp at line 3, boost/atomic/detail/extra_fp_operations.hpp at line 3, boost/atomic/detail/extra_fp_operations_fwd.hpp at line 3, boost/atomic/detail/extra_fp_ops_emulated.hpp at line 3, boost/atomic/detail/extra_fp_ops_generic.hpp at line 3, boost/atomic/detail/extra_operations.hpp at line 3, boost/atomic/detail/extra_operations_fwd.hpp at line 3, boost/atomic/detail/extra_ops_emulated.hpp at line 3, boost/atomic/detail/extra_ops_gcc_arm.hpp at line 3, boost/atomic/detail/extra_ops_gcc_ppc.hpp at line 3, boost/atomic/detail/extra_ops_gcc_x86.hpp at line 3, boost/atomic/detail/extra_ops_generic.hpp at line 3, boost/atomic/detail/extra_ops_msvc_arm.hpp at line 3, boost/atomic/detail/extra_ops_msvc_x86.hpp at line 3, boost/atomic/detail/float_sizes.hpp at line 3, boost/atomic/detail/fp_operations.hpp at line 3, boost/atomic/detail/fp_operations_fwd.hpp at line 3, boost/atomic/detail/fp_ops_emulated.hpp at line 3, boost/atomic/detail/fp_ops_generic.hpp at line 3, boost/atomic/detail/hwcaps_gcc_arm.hpp at line 3, boost/atomic/detail/hwcaps_gcc_ppc.hpp at line 3, boost/atomic/detail/hwcaps_gcc_x86.hpp at line 3, boost/atomic/detail/int_sizes.hpp at line 3, boost/atomic/detail/integral_extend.hpp at line 3, boost/atomic/detail/link.hpp at line 3, boost/atomic/detail/lockpool.hpp at line 3, boost/atomic/detail/operations.hpp at line 3, boost/atomic/detail/operations_fwd.hpp at line 3, boost/atomic/detail/operations_lockfree.hpp at line 3, boost/atomic/detail/ops_cas_based.hpp at line 3, boost/atomic/detail/ops_emulated.hpp at line 3, boost/atomic/detail/ops_extending_cas_based.hpp at line 3, boost/atomic/detail/ops_gcc_alpha.hpp at line 3, boost/atomic/detail/ops_gcc_arm.hpp at line 3, boost/atomic/detail/ops_gcc_arm_common.hpp at line 3, boost/atomic/detail/ops_gcc_atomic.hpp at line 3, boost/atomic/detail/ops_gcc_ppc.hpp at line 3, boost/atomic/detail/ops_gcc_ppc_common.hpp at line 3, boost/atomic/detail/ops_gcc_sparc.hpp at line 3, boost/atomic/detail/ops_gcc_sync.hpp at line 3, boost/atomic/detail/ops_gcc_x86.hpp at line 3, boost/atomic/detail/ops_gcc_x86_dcas-linux.hpp at line 3, boost/atomic/detail/ops_gcc_x86_dcas-osx.hpp at line 3, boost/atomic/detail/ops_gcc_x86_dcas.hpp at line 3, boost/atomic/detail/ops_linux_arm.hpp at line 3, boost/atomic/detail/ops_msvc_arm.hpp at line 3, boost/atomic/detail/ops_msvc_common.hpp at line 3, boost/atomic/detail/ops_msvc_x86.hpp at line 3, boost/atomic/detail/ops_windows.hpp at line 3, boost/atomic/detail/platform.hpp at line 3, boost/atomic/detail/storage_type.hpp at line 3, boost/atomic/detail/string_ops.hpp at line 3, boost/atomic/detail/type_traits/conditional.hpp at line 3, boost/atomic/detail/type_traits/integral_constant.hpp at line 3, boost/atomic/detail/type_traits/is_floating_point.hpp at line 3, boost/atomic/detail/type_traits/is_function.hpp at line 3, boost/atomic/detail/type_traits/is_iec559.hpp at line 3, boost/atomic/detail/type_traits/is_integral.hpp at line 3, boost/atomic/detail/type_traits/is_signed.hpp at line 3, boost/atomic/detail/type_traits/is_trivially_default_constructible.hpp at line 3, boost/atomic/detail/type_traits/make_signed.hpp at line 3, boost/atomic/detail/type_traits/make_unsigned.hpp at line 3, boost/atomic/fences.hpp at line 3, boost/detail/allocator_utilities.hpp at line 3, boost/flyweight.hpp at line 3, boost/flyweight/assoc_container_factory.hpp at line 3, boost/flyweight/assoc_container_factory_fwd.hpp at line 3, boost/flyweight/detail/archive_constructed.hpp at line 3, boost/flyweight/detail/default_value_policy.hpp at line 3, boost/flyweight/detail/dyn_perfect_fwd.hpp at line 3, boost/flyweight/detail/flyweight_core.hpp at line 3, boost/flyweight/detail/is_placeholder_expr.hpp at line 3, boost/flyweight/detail/nested_xxx_if_not_ph.hpp at line 3, boost/flyweight/detail/not_placeholder_expr.hpp at line 3, boost/flyweight/detail/perfect_fwd.hpp at line 3, boost/flyweight/detail/pp_perfect_fwd.hpp at line 3, boost/flyweight/detail/recursive_lw_mutex.hpp at line 3, boost/flyweight/detail/serialization_helper.hpp at line 3, boost/flyweight/detail/value_tag.hpp at line 3, boost/flyweight/factory_tag.hpp at line 3, boost/flyweight/flyweight.hpp at line 5, boost/flyweight/flyweight_fwd.hpp at line 3, boost/flyweight/hashed_factory.hpp at line 3, boost/flyweight/hashed_factory_fwd.hpp at line 3, boost/flyweight/holder_tag.hpp at line 3, boost/flyweight/intermodule_holder.hpp at line 3, boost/flyweight/intermodule_holder_fwd.hpp at line 3, boost/flyweight/key_value.hpp at line 3, boost/flyweight/key_value_fwd.hpp at line 3, boost/flyweight/locking_tag.hpp at line 3, boost/flyweight/no_locking.hpp at line 3, boost/flyweight/no_locking_fwd.hpp at line 3, boost/flyweight/no_tracking.hpp at line 3, boost/flyweight/no_tracking_fwd.hpp at line 3, boost/flyweight/refcounted.hpp at line 3, boost/flyweight/refcounted_fwd.hpp at line 3, boost/flyweight/serialize.hpp at line 3, boost/flyweight/set_factory.hpp at line 3, boost/flyweight/set_factory_fwd.hpp at line 3, boost/flyweight/simple_locking.hpp at line 3, boost/flyweight/simple_locking_fwd.hpp at line 3, boost/flyweight/static_holder.hpp at line 3, boost/flyweight/static_holder_fwd.hpp at line 3, boost/flyweight/tag.hpp at line 3, boost/flyweight/tracking_tag.hpp at line 3, boost/multi_index/composite_key.hpp at line 3, boost/multi_index/detail/access_specifier.hpp at line 3, boost/multi_index/detail/adl_swap.hpp at line 3, boost/multi_index/detail/archive_constructed.hpp at line 3, boost/multi_index/detail/auto_space.hpp at line 3, boost/multi_index/detail/base_type.hpp at line 3, boost/multi_index/detail/bidir_node_iterator.hpp at line 3, boost/multi_index/detail/bucket_array.hpp at line 3, boost/multi_index/detail/cons_stdtuple.hpp at line 3, boost/multi_index/detail/converter.hpp at line 3, boost/multi_index/detail/copy_map.hpp at line 3, boost/multi_index/detail/do_not_copy_elements_tag.hpp at line 3, boost/multi_index/detail/duplicates_iterator.hpp at line 3, boost/multi_index/detail/has_tag.hpp at line 3, boost/multi_index/detail/hash_index_args.hpp at line 3, boost/multi_index/detail/hash_index_iterator.hpp at line 3, boost/multi_index/detail/hash_index_node.hpp at line 3, boost/multi_index/detail/header_holder.hpp at line 3, boost/multi_index/detail/ignore_wstrict_aliasing.hpp at line 3, boost/multi_index/detail/index_base.hpp at line 3, boost/multi_index/detail/index_loader.hpp at line 3, boost/multi_index/detail/index_matcher.hpp at line 3, boost/multi_index/detail/index_node_base.hpp at line 3, boost/multi_index/detail/index_saver.hpp at line 3, boost/multi_index/detail/invariant_assert.hpp at line 3, boost/multi_index/detail/is_index_list.hpp at line 3, boost/multi_index/detail/is_transparent.hpp at line 3, boost/multi_index/detail/iter_adaptor.hpp at line 3, boost/multi_index/detail/modify_key_adaptor.hpp at line 3, boost/multi_index/detail/no_duplicate_tags.hpp at line 3, boost/multi_index/detail/node_type.hpp at line 3, boost/multi_index/detail/ord_index_args.hpp at line 3, boost/multi_index/detail/ord_index_impl.hpp at line 3, boost/multi_index/detail/ord_index_impl_fwd.hpp at line 3, boost/multi_index/detail/ord_index_node.hpp at line 3, boost/multi_index/detail/ord_index_ops.hpp at line 3, boost/multi_index/detail/promotes_arg.hpp at line 3, boost/multi_index/detail/raw_ptr.hpp at line 3, boost/multi_index/detail/restore_wstrict_aliasing.hpp at line 3, boost/multi_index/detail/rnd_index_loader.hpp at line 3, boost/multi_index/detail/rnd_index_node.hpp at line 3, boost/multi_index/detail/rnd_index_ops.hpp at line 3, boost/multi_index/detail/rnd_index_ptr_array.hpp at line 3, boost/multi_index/detail/rnd_node_iterator.hpp at line 3, boost/multi_index/detail/rnk_index_ops.hpp at line 3, boost/multi_index/detail/safe_mode.hpp at line 3, boost/multi_index/detail/scope_guard.hpp at line 3, boost/multi_index/detail/seq_index_node.hpp at line 3, boost/multi_index/detail/seq_index_ops.hpp at line 3, boost/multi_index/detail/serialization_version.hpp at line 3, boost/multi_index/detail/uintptr_type.hpp at line 3, boost/multi_index/detail/unbounded.hpp at line 3, boost/multi_index/detail/value_compare.hpp at line 3, boost/multi_index/detail/vartempl_support.hpp at line 3, boost/multi_index/global_fun.hpp at line 3, boost/multi_index/hashed_index.hpp at line 3, boost/multi_index/hashed_index_fwd.hpp at line 3, boost/multi_index/identity.hpp at line 3, boost/multi_index/identity_fwd.hpp at line 3, boost/multi_index/indexed_by.hpp at line 3, boost/multi_index/key_extractors.hpp at line 3, boost/multi_index/mem_fun.hpp at line 3, boost/multi_index/member.hpp at line 3, boost/multi_index/ordered_index.hpp at line 3, boost/multi_index/ordered_index_fwd.hpp at line 3, boost/multi_index/random_access_index.hpp at line 3, boost/multi_index/random_access_index_fwd.hpp at line 3, boost/multi_index/ranked_index.hpp at line 3, boost/multi_index/ranked_index_fwd.hpp at line 3, boost/multi_index/safe_mode_errors.hpp at line 3, boost/multi_index/sequenced_index.hpp at line 3, boost/multi_index/sequenced_index_fwd.hpp at line 3, boost/multi_index/tag.hpp at line 3, boost/multi_index_container.hpp at line 5, boost/multi_index_container_fwd.hpp at line 3, boost/poly_collection/algorithm.hpp at line 3, boost/poly_collection/any_collection.hpp at line 3, boost/poly_collection/any_collection_fwd.hpp at line 3, boost/poly_collection/base_collection.hpp at line 3, boost/poly_collection/base_collection_fwd.hpp at line 3, boost/poly_collection/detail/any_iterator.hpp at line 3, boost/poly_collection/detail/any_model.hpp at line 3, boost/poly_collection/detail/auto_iterator.hpp at line 3, boost/poly_collection/detail/base_model.hpp at line 3, boost/poly_collection/detail/callable_wrapper.hpp at line 3, boost/poly_collection/detail/callable_wrapper_iterator.hpp at line 3, boost/poly_collection/detail/function_model.hpp at line 3, boost/poly_collection/detail/functional.hpp at line 3, boost/poly_collection/detail/integer_sequence.hpp at line 3, boost/poly_collection/detail/is_acceptable.hpp at line 3, boost/poly_collection/detail/is_constructible.hpp at line 3, boost/poly_collection/detail/is_equality_comparable.hpp at line 3, boost/poly_collection/detail/is_final.hpp at line 3, boost/poly_collection/detail/is_invocable.hpp at line 3, boost/poly_collection/detail/is_nothrow_eq_comparable.hpp at line 3, boost/poly_collection/detail/iterator_impl.hpp at line 3, boost/poly_collection/detail/iterator_traits.hpp at line 3, boost/poly_collection/detail/newdelete_allocator.hpp at line 3, boost/poly_collection/detail/packed_segment.hpp at line 3, boost/poly_collection/detail/poly_collection.hpp at line 3, boost/poly_collection/detail/segment.hpp at line 3, boost/poly_collection/detail/segment_backend.hpp at line 3, boost/poly_collection/detail/segment_split.hpp at line 3, boost/poly_collection/detail/split_segment.hpp at line 3, boost/poly_collection/detail/stride_iterator.hpp at line 3, boost/poly_collection/detail/type_info_map.hpp at line 3, boost/poly_collection/detail/type_restitution.hpp at line 3, boost/poly_collection/detail/value_holder.hpp at line 3, boost/poly_collection/exception.hpp at line 3, boost/poly_collection/function_collection.hpp at line 3, boost/poly_collection/function_collection_fwd.hpp at line 3, boost/regex/v4/basic_regex.hpp at line 7, boost/type_traits/detail/is_likely_lambda.hpp at line 3, libs/atomic/src/lockpool.cpp at line 3
+ License text:
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/atomic/atomic.hpp [2:4]
+ boost/atomic/atomic_flag.hpp [2:4]
+ boost/atomic/capabilities.hpp [2:4]
+ boost/atomic/detail/addressof.hpp [2:4]
+ boost/atomic/detail/atomic_flag.hpp [2:4]
+ boost/atomic/detail/atomic_template.hpp [2:4]
+ boost/atomic/detail/bitwise_cast.hpp [2:4]
+ boost/atomic/detail/bitwise_fp_cast.hpp [2:4]
+ boost/atomic/detail/caps_gcc_alpha.hpp [2:4]
+ boost/atomic/detail/caps_gcc_arm.hpp [2:4]
+ boost/atomic/detail/caps_gcc_atomic.hpp [2:4]
+ boost/atomic/detail/caps_gcc_ppc.hpp [2:4]
+ boost/atomic/detail/caps_gcc_sparc.hpp [2:4]
+ boost/atomic/detail/caps_gcc_sync.hpp [2:4]
+ boost/atomic/detail/caps_gcc_x86.hpp [2:4]
+ boost/atomic/detail/caps_linux_arm.hpp [2:4]
+ boost/atomic/detail/caps_msvc_arm.hpp [2:4]
+ boost/atomic/detail/caps_msvc_x86.hpp [2:4]
+ boost/atomic/detail/caps_windows.hpp [2:4]
+ boost/atomic/detail/config.hpp [2:4]
+ boost/atomic/detail/extra_fp_operations.hpp [2:4]
+ boost/atomic/detail/extra_fp_operations_fwd.hpp [2:4]
+ boost/atomic/detail/extra_fp_ops_emulated.hpp [2:4]
+ boost/atomic/detail/extra_fp_ops_generic.hpp [2:4]
+ boost/atomic/detail/extra_operations.hpp [2:4]
+ boost/atomic/detail/extra_operations_fwd.hpp [2:4]
+ boost/atomic/detail/extra_ops_emulated.hpp [2:4]
+ boost/atomic/detail/extra_ops_gcc_arm.hpp [2:4]
+ boost/atomic/detail/extra_ops_gcc_ppc.hpp [2:4]
+ boost/atomic/detail/extra_ops_gcc_x86.hpp [2:4]
+ boost/atomic/detail/extra_ops_generic.hpp [2:4]
+ boost/atomic/detail/extra_ops_msvc_arm.hpp [2:4]
+ boost/atomic/detail/extra_ops_msvc_x86.hpp [2:4]
+ boost/atomic/detail/float_sizes.hpp [2:4]
+ boost/atomic/detail/fp_operations.hpp [2:4]
+ boost/atomic/detail/fp_operations_fwd.hpp [2:4]
+ boost/atomic/detail/fp_ops_emulated.hpp [2:4]
+ boost/atomic/detail/fp_ops_generic.hpp [2:4]
+ boost/atomic/detail/hwcaps_gcc_arm.hpp [2:4]
+ boost/atomic/detail/hwcaps_gcc_ppc.hpp [2:4]
+ boost/atomic/detail/hwcaps_gcc_x86.hpp [2:4]
+ boost/atomic/detail/int_sizes.hpp [2:4]
+ boost/atomic/detail/integral_extend.hpp [2:4]
+ boost/atomic/detail/link.hpp [2:4]
+ boost/atomic/detail/lockpool.hpp [2:4]
+ boost/atomic/detail/operations.hpp [2:4]
+ boost/atomic/detail/operations_fwd.hpp [2:4]
+ boost/atomic/detail/operations_lockfree.hpp [2:4]
+ boost/atomic/detail/ops_cas_based.hpp [2:4]
+ boost/atomic/detail/ops_emulated.hpp [2:4]
+ boost/atomic/detail/ops_extending_cas_based.hpp [2:4]
+ boost/atomic/detail/ops_gcc_alpha.hpp [2:4]
+ boost/atomic/detail/ops_gcc_arm.hpp [2:4]
+ boost/atomic/detail/ops_gcc_arm_common.hpp [2:4]
+ boost/atomic/detail/ops_gcc_atomic.hpp [2:4]
+ boost/atomic/detail/ops_gcc_ppc.hpp [2:4]
+ boost/atomic/detail/ops_gcc_ppc_common.hpp [2:4]
+ boost/atomic/detail/ops_gcc_sparc.hpp [2:4]
+ boost/atomic/detail/ops_gcc_sync.hpp [2:4]
+ boost/atomic/detail/ops_gcc_x86.hpp [2:4]
+ boost/atomic/detail/ops_gcc_x86_dcas-linux.hpp [2:4]
+ boost/atomic/detail/ops_gcc_x86_dcas-osx.hpp [2:4]
+ boost/atomic/detail/ops_gcc_x86_dcas.hpp [2:4]
+ boost/atomic/detail/ops_linux_arm.hpp [2:4]
+ boost/atomic/detail/ops_msvc_arm.hpp [2:4]
+ boost/atomic/detail/ops_msvc_common.hpp [2:4]
+ boost/atomic/detail/ops_msvc_x86.hpp [2:4]
+ boost/atomic/detail/ops_windows.hpp [2:4]
+ boost/atomic/detail/platform.hpp [2:4]
+ boost/atomic/detail/storage_type.hpp [2:4]
+ boost/atomic/detail/string_ops.hpp [2:4]
+ boost/atomic/detail/type_traits/conditional.hpp [2:4]
+ boost/atomic/detail/type_traits/integral_constant.hpp [2:4]
+ boost/atomic/detail/type_traits/is_floating_point.hpp [2:4]
+ boost/atomic/detail/type_traits/is_function.hpp [2:4]
+ boost/atomic/detail/type_traits/is_iec559.hpp [2:4]
+ boost/atomic/detail/type_traits/is_integral.hpp [2:4]
+ boost/atomic/detail/type_traits/is_signed.hpp [2:4]
+ boost/atomic/detail/type_traits/is_trivially_default_constructible.hpp [2:4]
+ boost/atomic/detail/type_traits/make_signed.hpp [2:4]
+ boost/atomic/detail/type_traits/make_unsigned.hpp [2:4]
+ boost/atomic/fences.hpp [2:4]
+ boost/detail/allocator_utilities.hpp [2:4]
+ boost/flyweight.hpp [2:4]
+ boost/flyweight/assoc_container_factory.hpp [2:4]
+ boost/flyweight/assoc_container_factory_fwd.hpp [2:4]
+ boost/flyweight/detail/archive_constructed.hpp [2:4]
+ boost/flyweight/detail/default_value_policy.hpp [2:4]
+ boost/flyweight/detail/dyn_perfect_fwd.hpp [2:4]
+ boost/flyweight/detail/flyweight_core.hpp [2:4]
+ boost/flyweight/detail/is_placeholder_expr.hpp [2:4]
+ boost/flyweight/detail/nested_xxx_if_not_ph.hpp [2:4]
+ boost/flyweight/detail/not_placeholder_expr.hpp [2:4]
+ boost/flyweight/detail/perfect_fwd.hpp [2:4]
+ boost/flyweight/detail/pp_perfect_fwd.hpp [2:4]
+ boost/flyweight/detail/recursive_lw_mutex.hpp [2:4]
+ boost/flyweight/detail/serialization_helper.hpp [2:4]
+ boost/flyweight/detail/value_tag.hpp [2:4]
+ boost/flyweight/factory_tag.hpp [2:4]
+ boost/flyweight/flyweight.hpp [4:6]
+ boost/flyweight/flyweight_fwd.hpp [2:4]
+ boost/flyweight/hashed_factory.hpp [2:4]
+ boost/flyweight/hashed_factory_fwd.hpp [2:4]
+ boost/flyweight/holder_tag.hpp [2:4]
+ boost/flyweight/intermodule_holder.hpp [2:4]
+ boost/flyweight/intermodule_holder_fwd.hpp [2:4]
+ boost/flyweight/key_value.hpp [2:4]
+ boost/flyweight/key_value_fwd.hpp [2:4]
+ boost/flyweight/locking_tag.hpp [2:4]
+ boost/flyweight/no_locking.hpp [2:4]
+ boost/flyweight/no_locking_fwd.hpp [2:4]
+ boost/flyweight/no_tracking.hpp [2:4]
+ boost/flyweight/no_tracking_fwd.hpp [2:4]
+ boost/flyweight/refcounted.hpp [2:4]
+ boost/flyweight/refcounted_fwd.hpp [2:4]
+ boost/flyweight/serialize.hpp [2:4]
+ boost/flyweight/set_factory.hpp [2:4]
+ boost/flyweight/set_factory_fwd.hpp [2:4]
+ boost/flyweight/simple_locking.hpp [2:4]
+ boost/flyweight/simple_locking_fwd.hpp [2:4]
+ boost/flyweight/static_holder.hpp [2:4]
+ boost/flyweight/static_holder_fwd.hpp [2:4]
+ boost/flyweight/tag.hpp [2:4]
+ boost/flyweight/tracking_tag.hpp [2:4]
+ boost/multi_index/composite_key.hpp [2:4]
+ boost/multi_index/detail/access_specifier.hpp [2:4]
+ boost/multi_index/detail/adl_swap.hpp [2:4]
+ boost/multi_index/detail/archive_constructed.hpp [2:4]
+ boost/multi_index/detail/auto_space.hpp [2:4]
+ boost/multi_index/detail/base_type.hpp [2:4]
+ boost/multi_index/detail/bidir_node_iterator.hpp [2:4]
+ boost/multi_index/detail/bucket_array.hpp [2:4]
+ boost/multi_index/detail/cons_stdtuple.hpp [2:4]
+ boost/multi_index/detail/converter.hpp [2:4]
+ boost/multi_index/detail/copy_map.hpp [2:4]
+ boost/multi_index/detail/do_not_copy_elements_tag.hpp [2:4]
+ boost/multi_index/detail/duplicates_iterator.hpp [2:4]
+ boost/multi_index/detail/has_tag.hpp [2:4]
+ boost/multi_index/detail/hash_index_args.hpp [2:4]
+ boost/multi_index/detail/hash_index_iterator.hpp [2:4]
+ boost/multi_index/detail/hash_index_node.hpp [2:4]
+ boost/multi_index/detail/header_holder.hpp [2:4]
+ boost/multi_index/detail/ignore_wstrict_aliasing.hpp [2:4]
+ boost/multi_index/detail/index_base.hpp [2:4]
+ boost/multi_index/detail/index_loader.hpp [2:4]
+ boost/multi_index/detail/index_matcher.hpp [2:4]
+ boost/multi_index/detail/index_node_base.hpp [2:4]
+ boost/multi_index/detail/index_saver.hpp [2:4]
+ boost/multi_index/detail/invariant_assert.hpp [2:4]
+ boost/multi_index/detail/is_index_list.hpp [2:4]
+ boost/multi_index/detail/is_transparent.hpp [2:4]
+ boost/multi_index/detail/iter_adaptor.hpp [2:4]
+ boost/multi_index/detail/modify_key_adaptor.hpp [2:4]
+ boost/multi_index/detail/no_duplicate_tags.hpp [2:4]
+ boost/multi_index/detail/node_type.hpp [2:4]
+ boost/multi_index/detail/ord_index_args.hpp [2:4]
+ boost/multi_index/detail/ord_index_impl.hpp [2:4]
+ boost/multi_index/detail/ord_index_impl_fwd.hpp [2:4]
+ boost/multi_index/detail/ord_index_node.hpp [2:4]
+ boost/multi_index/detail/ord_index_ops.hpp [2:4]
+ boost/multi_index/detail/promotes_arg.hpp [2:4]
+ boost/multi_index/detail/raw_ptr.hpp [2:4]
+ boost/multi_index/detail/restore_wstrict_aliasing.hpp [2:4]
+ boost/multi_index/detail/rnd_index_loader.hpp [2:4]
+ boost/multi_index/detail/rnd_index_node.hpp [2:4]
+ boost/multi_index/detail/rnd_index_ops.hpp [2:4]
+ boost/multi_index/detail/rnd_index_ptr_array.hpp [2:4]
+ boost/multi_index/detail/rnd_node_iterator.hpp [2:4]
+ boost/multi_index/detail/rnk_index_ops.hpp [2:4]
+ boost/multi_index/detail/safe_mode.hpp [2:4]
+ boost/multi_index/detail/scope_guard.hpp [2:4]
+ boost/multi_index/detail/seq_index_node.hpp [2:4]
+ boost/multi_index/detail/seq_index_ops.hpp [2:4]
+ boost/multi_index/detail/serialization_version.hpp [2:4]
+ boost/multi_index/detail/uintptr_type.hpp [2:4]
+ boost/multi_index/detail/unbounded.hpp [2:4]
+ boost/multi_index/detail/value_compare.hpp [2:4]
+ boost/multi_index/detail/vartempl_support.hpp [2:4]
+ boost/multi_index/global_fun.hpp [2:4]
+ boost/multi_index/hashed_index.hpp [2:4]
+ boost/multi_index/hashed_index_fwd.hpp [2:4]
+ boost/multi_index/identity.hpp [2:4]
+ boost/multi_index/identity_fwd.hpp [2:4]
+ boost/multi_index/indexed_by.hpp [2:4]
+ boost/multi_index/key_extractors.hpp [2:4]
+ boost/multi_index/mem_fun.hpp [2:4]
+ boost/multi_index/member.hpp [2:4]
+ boost/multi_index/ordered_index.hpp [2:4]
+ boost/multi_index/ordered_index_fwd.hpp [2:4]
+ boost/multi_index/random_access_index.hpp [2:4]
+ boost/multi_index/random_access_index_fwd.hpp [2:4]
+ boost/multi_index/ranked_index.hpp [2:4]
+ boost/multi_index/ranked_index_fwd.hpp [2:4]
+ boost/multi_index/safe_mode_errors.hpp [2:4]
+ boost/multi_index/sequenced_index.hpp [2:4]
+ boost/multi_index/sequenced_index_fwd.hpp [2:4]
+ boost/multi_index/tag.hpp [2:4]
+ boost/multi_index_container.hpp [4:6]
+ boost/multi_index_container_fwd.hpp [2:4]
+ boost/poly_collection/algorithm.hpp [2:4]
+ boost/poly_collection/any_collection.hpp [2:4]
+ boost/poly_collection/any_collection_fwd.hpp [2:4]
+ boost/poly_collection/base_collection.hpp [2:4]
+ boost/poly_collection/base_collection_fwd.hpp [2:4]
+ boost/poly_collection/detail/any_iterator.hpp [2:4]
+ boost/poly_collection/detail/any_model.hpp [2:4]
+ boost/poly_collection/detail/auto_iterator.hpp [2:4]
+ boost/poly_collection/detail/base_model.hpp [2:4]
+ boost/poly_collection/detail/callable_wrapper.hpp [2:4]
+ boost/poly_collection/detail/callable_wrapper_iterator.hpp [2:4]
+ boost/poly_collection/detail/function_model.hpp [2:4]
+ boost/poly_collection/detail/functional.hpp [2:4]
+ boost/poly_collection/detail/integer_sequence.hpp [2:4]
+ boost/poly_collection/detail/is_acceptable.hpp [2:4]
+ boost/poly_collection/detail/is_constructible.hpp [2:4]
+ boost/poly_collection/detail/is_equality_comparable.hpp [2:4]
+ boost/poly_collection/detail/is_final.hpp [2:4]
+ boost/poly_collection/detail/is_invocable.hpp [2:4]
+ boost/poly_collection/detail/is_nothrow_eq_comparable.hpp [2:4]
+ boost/poly_collection/detail/iterator_impl.hpp [2:4]
+ boost/poly_collection/detail/iterator_traits.hpp [2:4]
+ boost/poly_collection/detail/newdelete_allocator.hpp [2:4]
+ boost/poly_collection/detail/packed_segment.hpp [2:4]
+ boost/poly_collection/detail/poly_collection.hpp [2:4]
+ boost/poly_collection/detail/segment.hpp [2:4]
+ boost/poly_collection/detail/segment_backend.hpp [2:4]
+ boost/poly_collection/detail/segment_split.hpp [2:4]
+ boost/poly_collection/detail/split_segment.hpp [2:4]
+ boost/poly_collection/detail/stride_iterator.hpp [2:4]
+ boost/poly_collection/detail/type_info_map.hpp [2:4]
+ boost/poly_collection/detail/type_restitution.hpp [2:4]
+ boost/poly_collection/detail/value_holder.hpp [2:4]
+ boost/poly_collection/exception.hpp [2:4]
+ boost/poly_collection/function_collection.hpp [2:4]
+ boost/poly_collection/function_collection_fwd.hpp [2:4]
+ boost/regex/v4/basic_regex.hpp [6:8]
+ boost/type_traits/detail/is_likely_lambda.hpp [2:4]
+ libs/atomic/src/lockpool.cpp [2:4]
+
+KEEP BSL-1.0 c1b846d2f0addcc3ea1d7704985c0a13
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/polygon/detail/voronoi_ctypes.hpp at line 5, boost/polygon/detail/voronoi_predicates.hpp at line 5, boost/polygon/detail/voronoi_robust_fpt.hpp at line 5, boost/polygon/detail/voronoi_structures.hpp at line 5, boost/polygon/voronoi.hpp at line 5, boost/polygon/voronoi_builder.hpp at line 5, boost/polygon/voronoi_diagram.hpp at line 5, boost/polygon/voronoi_geometry_type.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/polygon/detail/voronoi_ctypes.hpp [4:8]
+ boost/polygon/detail/voronoi_predicates.hpp [4:8]
+ boost/polygon/detail/voronoi_robust_fpt.hpp [4:8]
+ boost/polygon/detail/voronoi_structures.hpp [4:8]
+ boost/polygon/voronoi.hpp [4:8]
+ boost/polygon/voronoi_builder.hpp [4:8]
+ boost/polygon/voronoi_diagram.hpp [4:8]
+ boost/polygon/voronoi_geometry_type.hpp [4:8]
+
+KEEP BSL-1.0 c2c06b4b0401328c4a7db06845377814
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/process/shell.hpp at line 9
+ License text:
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/process/shell.hpp [8:9]
+
+KEEP BSL-1.0 c34ac6985916f763b687de4468776cc6
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 40.62
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/spirit/home/support/detail/lexer/generate_cpp.hpp [84:87]
+ boost/spirit/home/support/detail/lexer/generate_re2c.hpp [118:121]
+
+KEEP BSL-1.0 c3616e6a4ba8162a065541626a8ff94c
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_erasure/any.hpp at line 6, boost/type_erasure/any_cast.hpp at line 6, boost/type_erasure/binding.hpp at line 6, boost/type_erasure/binding_of.hpp at line 6, boost/type_erasure/builtin.hpp at line 6, boost/type_erasure/call.hpp at line 6, boost/type_erasure/callable.hpp at line 6, boost/type_erasure/check_match.hpp at line 6, boost/type_erasure/concept_interface.hpp at line 6, boost/type_erasure/concept_of.hpp at line 6, boost/type_erasure/config.hpp at line 6, boost/type_erasure/constructible.hpp at line 6, boost/type_erasure/deduced.hpp at line 6, boost/type_erasure/derived.hpp at line 6, boost/type_erasure/detail/access.hpp at line 6, boost/type_erasure/detail/adapt_to_vtable.hpp at line 6, boost/type_erasure/detail/any_base.hpp at line 6, boost/type_erasure/detail/auto_link.hpp at line 6, boost/type_erasure/detail/check_call.hpp at line 6, boost/type_erasure/detail/check_map.hpp at line 6, boost/type_erasure/detail/const.hpp at line 6, boost/type_erasure/detail/construct.hpp at line 6, boost/type_erasure/detail/dynamic_vtable.hpp at line 6, boost/type_erasure/detail/extract_concept.hpp at line 6, boost/type_erasure/detail/get_placeholders.hpp at line 6, boost/type_erasure/detail/get_signature.hpp at line 6, boost/type_erasure/detail/instantiate.hpp at line 6, boost/type_erasure/detail/macro.hpp at line 6, boost/type_erasure/detail/member11.hpp at line 6, boost/type_erasure/detail/meta.hpp at line 6, boost/type_erasure/detail/normalize.hpp at line 6, boost/type_erasure/detail/normalize_deduced.hpp at line 6, boost/type_erasure/detail/null.hpp at line 6, boost/type_erasure/detail/rebind_placeholders.hpp at line 6, boost/type_erasure/detail/storage.hpp at line 6, boost/type_erasure/detail/vtable.hpp at line 6, boost/type_erasure/dynamic_any_cast.hpp at line 6, boost/type_erasure/dynamic_binding.hpp at line 6, boost/type_erasure/exception.hpp at line 6, boost/type_erasure/free.hpp at line 6, boost/type_erasure/is_empty.hpp at line 6, boost/type_erasure/is_placeholder.hpp at line 6, boost/type_erasure/is_subconcept.hpp at line 6, boost/type_erasure/iterator.hpp at line 6, boost/type_erasure/member.hpp at line 6, boost/type_erasure/operators.hpp at line 6, boost/type_erasure/param.hpp at line 6, boost/type_erasure/placeholder.hpp at line 6, boost/type_erasure/placeholder_of.hpp at line 6, boost/type_erasure/rebind_any.hpp at line 6, boost/type_erasure/register_binding.hpp at line 6, boost/type_erasure/relaxed.hpp at line 6, boost/type_erasure/require_match.hpp at line 6, boost/type_erasure/same_type.hpp at line 6, boost/type_erasure/static_binding.hpp at line 6, boost/type_erasure/tuple.hpp at line 6, boost/type_erasure/typeid_of.hpp at line 6
+ License text:
+ // Distributed under the Boost Software License Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/type_erasure/any.hpp [5:7]
+ boost/type_erasure/any_cast.hpp [5:7]
+ boost/type_erasure/binding.hpp [5:7]
+ boost/type_erasure/binding_of.hpp [5:7]
+ boost/type_erasure/builtin.hpp [5:7]
+ boost/type_erasure/call.hpp [5:7]
+ boost/type_erasure/callable.hpp [5:7]
+ boost/type_erasure/check_match.hpp [5:7]
+ boost/type_erasure/concept_interface.hpp [5:7]
+ boost/type_erasure/concept_of.hpp [5:7]
+ boost/type_erasure/config.hpp [5:7]
+ boost/type_erasure/constructible.hpp [5:7]
+ boost/type_erasure/deduced.hpp [5:7]
+ boost/type_erasure/derived.hpp [5:7]
+ boost/type_erasure/detail/access.hpp [5:7]
+ boost/type_erasure/detail/adapt_to_vtable.hpp [5:7]
+ boost/type_erasure/detail/any_base.hpp [5:7]
+ boost/type_erasure/detail/auto_link.hpp [5:7]
+ boost/type_erasure/detail/check_call.hpp [5:7]
+ boost/type_erasure/detail/check_map.hpp [5:7]
+ boost/type_erasure/detail/const.hpp [5:7]
+ boost/type_erasure/detail/construct.hpp [5:7]
+ boost/type_erasure/detail/dynamic_vtable.hpp [5:7]
+ boost/type_erasure/detail/extract_concept.hpp [5:7]
+ boost/type_erasure/detail/get_placeholders.hpp [5:7]
+ boost/type_erasure/detail/get_signature.hpp [5:7]
+ boost/type_erasure/detail/instantiate.hpp [5:7]
+ boost/type_erasure/detail/macro.hpp [5:7]
+ boost/type_erasure/detail/member11.hpp [5:7]
+ boost/type_erasure/detail/meta.hpp [5:7]
+ boost/type_erasure/detail/normalize.hpp [5:7]
+ boost/type_erasure/detail/normalize_deduced.hpp [5:7]
+ boost/type_erasure/detail/null.hpp [5:7]
+ boost/type_erasure/detail/rebind_placeholders.hpp [5:7]
+ boost/type_erasure/detail/storage.hpp [5:7]
+ boost/type_erasure/detail/vtable.hpp [5:7]
+ boost/type_erasure/dynamic_any_cast.hpp [5:7]
+ boost/type_erasure/dynamic_binding.hpp [5:7]
+ boost/type_erasure/exception.hpp [5:7]
+ boost/type_erasure/free.hpp [5:7]
+ boost/type_erasure/is_empty.hpp [5:7]
+ boost/type_erasure/is_placeholder.hpp [5:7]
+ boost/type_erasure/is_subconcept.hpp [5:7]
+ boost/type_erasure/iterator.hpp [5:7]
+ boost/type_erasure/member.hpp [5:7]
+ boost/type_erasure/operators.hpp [5:7]
+ boost/type_erasure/param.hpp [5:7]
+ boost/type_erasure/placeholder.hpp [5:7]
+ boost/type_erasure/placeholder_of.hpp [5:7]
+ boost/type_erasure/rebind_any.hpp [5:7]
+ boost/type_erasure/register_binding.hpp [5:7]
+ boost/type_erasure/relaxed.hpp [5:7]
+ boost/type_erasure/require_match.hpp [5:7]
+ boost/type_erasure/same_type.hpp [5:7]
+ boost/type_erasure/static_binding.hpp [5:7]
+ boost/type_erasure/tuple.hpp [5:7]
+ boost/type_erasure/typeid_of.hpp [5:7]
+
+KEEP BSL-1.0 c433ef677447b140a1c2a340c08bac97
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/math/special_functions/detail/unchecked_bernoulli.hpp at line 9, boost/multiprecision/mpfr.hpp at line 4
+ License text:
+ // Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/math/special_functions/detail/unchecked_bernoulli.hpp [7:9]
+ boost/multiprecision/mpfr.hpp [2:4]
+
+KEEP BSL-1.0 c459d5208b405409bcf56c0a521c48c6
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/slice.hpp at line 7
+ License text:
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/python/slice.hpp [5:7]
+
+KEEP BSL-1.0 c46f3c60dd92897a012b3be18f48ec4c
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config.hpp at line 6, boost/config/abi/borland_prefix.hpp at line 4, boost/config/abi/borland_suffix.hpp at line 4, boost/config/abi/msvc_prefix.hpp at line 4, boost/config/abi/msvc_suffix.hpp at line 4, boost/config/compiler/comeau.hpp at line 9, boost/config/compiler/compaq_cxx.hpp at line 4, boost/config/compiler/greenhills.hpp at line 4, boost/config/compiler/kai.hpp at line 6, boost/config/compiler/nvcc.hpp at line 4, boost/config/compiler/sgi_mipspro.hpp at line 4, boost/config/detail/cxx_composite.hpp at line 6, boost/config/detail/posix_features.hpp at line 4, boost/config/detail/select_platform_config.hpp at line 7, boost/config/detail/select_stdlib_config.hpp at line 7, boost/config/platform/aix.hpp at line 4, boost/config/platform/amigaos.hpp at line 4, boost/config/platform/beos.hpp at line 4, boost/config/platform/bsd.hpp at line 6, boost/config/platform/cygwin.hpp at line 4, boost/config/platform/hpux.hpp at line 8, boost/config/platform/irix.hpp at line 5, boost/config/platform/linux.hpp at line 5, boost/config/platform/macos.hpp at line 6, boost/config/platform/qnxnto.hpp at line 4, boost/config/platform/solaris.hpp at line 5, boost/config/platform/symbian.hpp at line 6, boost/config/platform/win32.hpp at line 7, boost/config/requires_threads.hpp at line 4, boost/config/stdlib/libcomo.hpp at line 6, boost/config/stdlib/modena.hpp at line 4, boost/config/stdlib/msl.hpp at line 5, boost/config/stdlib/roguewave.hpp at line 7, boost/config/stdlib/sgi.hpp at line 6, boost/config/stdlib/stlport.hpp at line 6, boost/config/stdlib/vacpp.hpp at line 4, boost/config/user.hpp at line 6, boost/static_assert.hpp at line 4, boost/type_traits/integral_constant.hpp at line 4
+ License text:
+ // Use, modification and distribution are subject to the
+ // Boost Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/config.hpp [4:6]
+ boost/config/abi/borland_prefix.hpp [2:4]
+ boost/config/abi/borland_suffix.hpp [2:4]
+ boost/config/abi/msvc_prefix.hpp [2:4]
+ boost/config/abi/msvc_suffix.hpp [2:4]
+ boost/config/compiler/comeau.hpp [7:9]
+ boost/config/compiler/compaq_cxx.hpp [2:4]
+ boost/config/compiler/greenhills.hpp [2:4]
+ boost/config/compiler/kai.hpp [4:6]
+ boost/config/compiler/nvcc.hpp [2:4]
+ boost/config/compiler/sgi_mipspro.hpp [2:4]
+ boost/config/detail/cxx_composite.hpp [4:6]
+ boost/config/detail/posix_features.hpp [2:4]
+ boost/config/detail/select_platform_config.hpp [5:7]
+ boost/config/detail/select_stdlib_config.hpp [5:7]
+ boost/config/platform/aix.hpp [2:4]
+ boost/config/platform/amigaos.hpp [2:4]
+ boost/config/platform/beos.hpp [2:4]
+ boost/config/platform/bsd.hpp [4:6]
+ boost/config/platform/cygwin.hpp [2:4]
+ boost/config/platform/hpux.hpp [6:8]
+ boost/config/platform/irix.hpp [3:5]
+ boost/config/platform/linux.hpp [3:5]
+ boost/config/platform/macos.hpp [4:6]
+ boost/config/platform/qnxnto.hpp [2:4]
+ boost/config/platform/solaris.hpp [3:5]
+ boost/config/platform/symbian.hpp [4:6]
+ boost/config/platform/win32.hpp [5:7]
+ boost/config/requires_threads.hpp [2:4]
+ boost/config/stdlib/libcomo.hpp [4:6]
+ boost/config/stdlib/modena.hpp [2:4]
+ boost/config/stdlib/msl.hpp [3:5]
+ boost/config/stdlib/roguewave.hpp [5:7]
+ boost/config/stdlib/sgi.hpp [4:6]
+ boost/config/stdlib/stlport.hpp [4:6]
+ boost/config/stdlib/vacpp.hpp [2:4]
+ boost/config/user.hpp [4:6]
+ boost/static_assert.hpp [2:4]
+ boost/type_traits/integral_constant.hpp [2:4]
+
+KEEP BSL-1.0 c59f2f51498a38af0e57d64a7b0fe0e3
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/math/octonion.hpp at line 5, boost/math/quaternion.hpp at line 5, boost/math/special_functions/acosh.hpp at line 6, boost/math/special_functions/asinh.hpp at line 6, boost/math/special_functions/atanh.hpp at line 6, boost/math/special_functions/sinc.hpp at line 5, boost/math/special_functions/sinhc.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/math/octonion.hpp [4:8]
+ boost/math/quaternion.hpp [4:8]
+ boost/math/special_functions/acosh.hpp [5:9]
+ boost/math/special_functions/asinh.hpp [5:9]
+ boost/math/special_functions/atanh.hpp [5:9]
+ boost/math/special_functions/sinc.hpp [4:8]
+ boost/math/special_functions/sinhc.hpp [4:8]
+
+KEEP BSL-1.0 c5cd7ca7ac43f5faf5d32f349420dc46
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/fusion/functional/invocation/invoke.hpp at line 6, boost/fusion/functional/invocation/invoke_function_object.hpp at line 6, boost/fusion/functional/invocation/invoke_procedure.hpp at line 6, boost/fusion/support/deduce_sequence.hpp at line 5
+ License text:
+ Use modification and distribution are subject to the Boost Software
+ License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt).
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/fusion/functional/invocation/invoke.hpp [5:7]
+ boost/fusion/functional/invocation/invoke_function_object.hpp [5:7]
+ boost/fusion/functional/invocation/invoke_procedure.hpp [5:7]
+ boost/fusion/support/deduce_sequence.hpp [4:6]
+
+KEEP BSL-1.0 c6aa4544098c85be9acaf93ddfa53cc1
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/proto/context/detail/preprocessed/callable_eval.hpp at line 7, boost/proto/context/detail/preprocessed/default_eval.hpp at line 7, boost/proto/context/detail/preprocessed/null_eval.hpp at line 7, boost/proto/detail/preprocessed/and_n.hpp at line 7, boost/proto/detail/preprocessed/basic_expr.hpp at line 7, boost/proto/detail/preprocessed/deduce_domain_n.hpp at line 7, boost/proto/detail/preprocessed/deep_copy.hpp at line 7, boost/proto/detail/preprocessed/expr_variadic.hpp at line 7, boost/proto/detail/preprocessed/extends_funop.hpp at line 7, boost/proto/detail/preprocessed/extends_funop_const.hpp at line 7, boost/proto/detail/preprocessed/funop.hpp at line 7, boost/proto/detail/preprocessed/generate_by_value.hpp at line 7, boost/proto/detail/preprocessed/lambda_matches.hpp at line 7, boost/proto/detail/preprocessed/make_expr_.hpp at line 7, boost/proto/detail/preprocessed/matches_.hpp at line 7, boost/proto/detail/preprocessed/poly_function_funop.hpp at line 7, boost/proto/detail/preprocessed/traits.hpp at line 7, boost/proto/detail/preprocessed/unpack_expr_.hpp at line 7, boost/proto/transform/detail/preprocessed/call.hpp at line 7, boost/proto/transform/detail/preprocessed/default_function_impl.hpp at line 8, boost/proto/transform/detail/preprocessed/expand_pack.hpp at line 7, boost/proto/transform/detail/preprocessed/fold_impl.hpp at line 7, boost/proto/transform/detail/preprocessed/make.hpp at line 7, boost/proto/transform/detail/preprocessed/make_gcc_workaround.hpp at line 8, boost/proto/transform/detail/preprocessed/pack_impl.hpp at line 7, boost/proto/transform/detail/preprocessed/pass_through_impl.hpp at line 9
+ License text:
+ // Copyright 2008 Eric Niebler. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/proto/context/detail/preprocessed/callable_eval.hpp [5:7]
+ boost/proto/context/detail/preprocessed/default_eval.hpp [5:7]
+ boost/proto/context/detail/preprocessed/null_eval.hpp [5:7]
+ boost/proto/detail/preprocessed/and_n.hpp [5:7]
+ boost/proto/detail/preprocessed/basic_expr.hpp [5:7]
+ boost/proto/detail/preprocessed/deduce_domain_n.hpp [5:7]
+ boost/proto/detail/preprocessed/deep_copy.hpp [5:7]
+ boost/proto/detail/preprocessed/expr_variadic.hpp [5:7]
+ boost/proto/detail/preprocessed/extends_funop.hpp [5:7]
+ boost/proto/detail/preprocessed/extends_funop_const.hpp [5:7]
+ boost/proto/detail/preprocessed/funop.hpp [5:7]
+ boost/proto/detail/preprocessed/generate_by_value.hpp [5:7]
+ boost/proto/detail/preprocessed/lambda_matches.hpp [5:7]
+ boost/proto/detail/preprocessed/make_expr_.hpp [5:7]
+ boost/proto/detail/preprocessed/matches_.hpp [5:7]
+ boost/proto/detail/preprocessed/poly_function_funop.hpp [5:7]
+ boost/proto/detail/preprocessed/traits.hpp [5:7]
+ boost/proto/detail/preprocessed/unpack_expr_.hpp [5:7]
+ boost/proto/transform/detail/preprocessed/call.hpp [5:7]
+ boost/proto/transform/detail/preprocessed/default_function_impl.hpp [6:8]
+ boost/proto/transform/detail/preprocessed/expand_pack.hpp [5:7]
+ boost/proto/transform/detail/preprocessed/fold_impl.hpp [5:7]
+ boost/proto/transform/detail/preprocessed/make.hpp [5:7]
+ boost/proto/transform/detail/preprocessed/make_gcc_workaround.hpp [6:8]
+ boost/proto/transform/detail/preprocessed/pack_impl.hpp [5:7]
+ boost/proto/transform/detail/preprocessed/pass_through_impl.hpp [7:9]
+
+KEEP BSL-1.0 c845c94a100efcde577d412c3aa41ae0
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/xpressive/detail/core/list.hpp at line 9, boost/xpressive/detail/core/regex_domain.hpp at line 7
+ License text:
+ // Copyright 2009 Eric Niebler. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/xpressive/detail/core/list.hpp [7:9]
+ boost/xpressive/detail/core/regex_domain.hpp [5:7]
+
+KEEP BSL-1.0 c8669cc72deaaf2d47e765121d8e33a7
+BELONGS ya.make
+ License text:
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
+ // file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 59.26
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/spirit/home/support/detail/lexer/char_traits.hpp [4:5]
+ boost/spirit/home/support/detail/lexer/consts.hpp [4:5]
+ boost/spirit/home/support/detail/lexer/containers/ptr_list.hpp [4:5]
+ boost/spirit/home/support/detail/lexer/containers/ptr_vector.hpp [4:5]
+ boost/spirit/home/support/detail/lexer/conversion/char_state_machine.hpp [4:5]
+ boost/spirit/home/support/detail/lexer/debug.hpp [4:5]
+ boost/spirit/home/support/detail/lexer/file_input.hpp [4:5]
+ boost/spirit/home/support/detail/lexer/generate_cpp.hpp [4:5]
+ boost/spirit/home/support/detail/lexer/generate_re2c.hpp [4:5]
+ boost/spirit/home/support/detail/lexer/generator.hpp [4:5]
+ boost/spirit/home/support/detail/lexer/input.hpp [4:5]
+ boost/spirit/home/support/detail/lexer/internals.hpp [4:5]
+ boost/spirit/home/support/detail/lexer/parser/parser.hpp [4:5]
+ boost/spirit/home/support/detail/lexer/parser/tokeniser/num_token.hpp [4:5]
+ boost/spirit/home/support/detail/lexer/parser/tokeniser/re_tokeniser.hpp [4:5]
+ boost/spirit/home/support/detail/lexer/parser/tokeniser/re_tokeniser_helper.hpp [4:5]
+ boost/spirit/home/support/detail/lexer/parser/tokeniser/re_tokeniser_state.hpp [4:5]
+ boost/spirit/home/support/detail/lexer/parser/tree/end_node.hpp [4:5]
+ boost/spirit/home/support/detail/lexer/parser/tree/iteration_node.hpp [4:5]
+ boost/spirit/home/support/detail/lexer/parser/tree/leaf_node.hpp [4:5]
+ boost/spirit/home/support/detail/lexer/parser/tree/node.hpp [4:5]
+ boost/spirit/home/support/detail/lexer/parser/tree/selection_node.hpp [4:5]
+ boost/spirit/home/support/detail/lexer/parser/tree/sequence_node.hpp [4:5]
+ boost/spirit/home/support/detail/lexer/partition/charset.hpp [4:5]
+ boost/spirit/home/support/detail/lexer/partition/equivset.hpp [4:5]
+ boost/spirit/home/support/detail/lexer/rules.hpp [4:5]
+ boost/spirit/home/support/detail/lexer/runtime_error.hpp [4:5]
+ boost/spirit/home/support/detail/lexer/serialise.hpp [4:5]
+ boost/spirit/home/support/detail/lexer/size_t.hpp [4:5]
+ boost/spirit/home/support/detail/lexer/state_machine.hpp [4:5]
+ boost/spirit/home/support/detail/lexer/string_token.hpp [4:5]
+
+KEEP BSL-1.0 c91ac62eaa0324e39010493f644405e7
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/core/addressof.hpp at line 10, boost/predef.h at line 4, boost/predef/architecture.h at line 4, boost/predef/architecture/alpha.h at line 4, boost/predef/architecture/arm.h at line 6, boost/predef/architecture/blackfin.h at line 4, boost/predef/architecture/convex.h at line 4, boost/predef/architecture/ia64.h at line 4, boost/predef/architecture/m68k.h at line 4, boost/predef/architecture/mips.h at line 4, boost/predef/architecture/parisc.h at line 4, boost/predef/architecture/ppc.h at line 4, boost/predef/architecture/pyramid.h at line 4, boost/predef/architecture/rs6k.h at line 4, boost/predef/architecture/sparc.h at line 4, boost/predef/architecture/superh.h at line 4, boost/predef/architecture/sys370.h at line 4, boost/predef/architecture/sys390.h at line 4, boost/predef/architecture/x86.h at line 4, boost/predef/architecture/x86/32.h at line 4, boost/predef/architecture/x86/64.h at line 4, boost/predef/architecture/z.h at line 4, boost/predef/compiler.h at line 4, boost/predef/compiler/borland.h at line 4, boost/predef/compiler/clang.h at line 4, boost/predef/compiler/comeau.h at line 4, boost/predef/compiler/compaq.h at line 4, boost/predef/compiler/diab.h at line 4, boost/predef/compiler/digitalmars.h at line 4, boost/predef/compiler/dignus.h at line 4, boost/predef/compiler/edg.h at line 4, boost/predef/compiler/ekopath.h at line 4, boost/predef/compiler/gcc.h at line 4, boost/predef/compiler/gcc_xml.h at line 4, boost/predef/compiler/greenhills.h at line 4, boost/predef/compiler/hp_acc.h at line 4, boost/predef/compiler/iar.h at line 4, boost/predef/compiler/ibm.h at line 4, boost/predef/compiler/intel.h at line 4, boost/predef/compiler/kai.h at line 4, boost/predef/compiler/llvm.h at line 4, boost/predef/compiler/metaware.h at line 4, boost/predef/compiler/metrowerks.h at line 4, boost/predef/compiler/microtec.h at line 4, boost/predef/compiler/mpw.h at line 4, boost/predef/compiler/palm.h at line 4, boost/predef/compiler/pgi.h at line 4, boost/predef/compiler/sgi_mipspro.h at line 4, boost/predef/compiler/sunpro.h at line 4, boost/predef/compiler/tendra.h at line 4, boost/predef/compiler/visualc.h at line 4, boost/predef/compiler/watcom.h at line 4, boost/predef/detail/_cassert.h at line 4, boost/predef/detail/_exception.h at line 4, boost/predef/detail/comp_detected.h at line 4, boost/predef/detail/endian_compat.h at line 4, boost/predef/detail/os_detected.h at line 4, boost/predef/detail/platform_detected.h at line 4, boost/predef/detail/test.h at line 4, boost/predef/detail/test_def.h at line 4, boost/predef/hardware.h at line 5, boost/predef/hardware/simd.h at line 5, boost/predef/hardware/simd/arm.h at line 5, boost/predef/hardware/simd/arm/versions.h at line 5, boost/predef/hardware/simd/ppc.h at line 5, boost/predef/hardware/simd/ppc/versions.h at line 5, boost/predef/hardware/simd/x86.h at line 5, boost/predef/hardware/simd/x86/versions.h at line 5, boost/predef/hardware/simd/x86_amd.h at line 5, boost/predef/hardware/simd/x86_amd/versions.h at line 5, boost/predef/language.h at line 4, boost/predef/language/objc.h at line 4, boost/predef/language/stdc.h at line 4, boost/predef/language/stdcpp.h at line 4, boost/predef/library.h at line 4, boost/predef/library/c.h at line 4, boost/predef/library/c/_prefix.h at line 4, boost/predef/library/c/gnu.h at line 4, boost/predef/library/c/uc.h at line 4, boost/predef/library/c/vms.h at line 4, boost/predef/library/c/zos.h at line 4, boost/predef/library/std.h at line 4, boost/predef/library/std/_prefix.h at line 4, boost/predef/library/std/cxx.h at line 4, boost/predef/library/std/dinkumware.h at line 4, boost/predef/library/std/libcomo.h at line 4, boost/predef/library/std/modena.h at line 4, boost/predef/library/std/msl.h at line 4, boost/predef/library/std/roguewave.h at line 4, boost/predef/library/std/sgi.h at line 4, boost/predef/library/std/stdcpp3.h at line 4, boost/predef/library/std/stlport.h at line 4, boost/predef/library/std/vacpp.h at line 4, boost/predef/make.h at line 4, boost/predef/os.h at line 5, boost/predef/os/aix.h at line 4, boost/predef/os/amigaos.h at line 4, boost/predef/os/android.h at line 4, boost/predef/os/beos.h at line 4, boost/predef/os/bsd.h at line 4, boost/predef/os/bsd/bsdi.h at line 4, boost/predef/os/bsd/dragonfly.h at line 4, boost/predef/os/bsd/free.h at line 4, boost/predef/os/bsd/net.h at line 4, boost/predef/os/bsd/open.h at line 4, boost/predef/os/cygwin.h at line 4, boost/predef/os/haiku.h at line 5, boost/predef/os/hpux.h at line 4, boost/predef/os/ios.h at line 5, boost/predef/os/irix.h at line 4, boost/predef/os/linux.h at line 4, boost/predef/os/macos.h at line 5, boost/predef/os/os400.h at line 4, boost/predef/os/qnxnto.h at line 4, boost/predef/os/solaris.h at line 4, boost/predef/os/unix.h at line 4, boost/predef/os/vms.h at line 4, boost/predef/os/windows.h at line 4, boost/predef/other.h at line 4, boost/predef/other/endian.h at line 4, boost/predef/other/workaround.h at line 4, boost/predef/platform.h at line 5, boost/predef/platform/ios.h at line 5, boost/predef/platform/mingw.h at line 4, boost/predef/platform/mingw32.h at line 4, boost/predef/platform/mingw64.h at line 4, boost/predef/platform/windows_desktop.h at line 5, boost/predef/platform/windows_phone.h at line 5, boost/predef/platform/windows_runtime.h at line 5, boost/predef/platform/windows_server.h at line 4, boost/predef/platform/windows_store.h at line 5, boost/predef/platform/windows_system.h at line 4, boost/predef/platform/windows_uwp.h at line 4, boost/predef/version.h at line 4, boost/predef/version_number.h at line 4
+ License text:
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/core/addressof.hpp [9:11]
+ boost/predef.h [3:5]
+ boost/predef/architecture.h [3:5]
+ boost/predef/architecture/alpha.h [3:5]
+ boost/predef/architecture/arm.h [5:7]
+ boost/predef/architecture/blackfin.h [3:5]
+ boost/predef/architecture/convex.h [3:5]
+ boost/predef/architecture/ia64.h [3:5]
+ boost/predef/architecture/m68k.h [3:5]
+ boost/predef/architecture/mips.h [3:5]
+ boost/predef/architecture/parisc.h [3:5]
+ boost/predef/architecture/ppc.h [3:5]
+ boost/predef/architecture/pyramid.h [3:5]
+ boost/predef/architecture/rs6k.h [3:5]
+ boost/predef/architecture/sparc.h [3:5]
+ boost/predef/architecture/superh.h [3:5]
+ boost/predef/architecture/sys370.h [3:5]
+ boost/predef/architecture/sys390.h [3:5]
+ boost/predef/architecture/x86.h [3:5]
+ boost/predef/architecture/x86/32.h [3:5]
+ boost/predef/architecture/x86/64.h [3:5]
+ boost/predef/architecture/z.h [3:5]
+ boost/predef/compiler.h [3:5]
+ boost/predef/compiler/borland.h [3:5]
+ boost/predef/compiler/clang.h [3:5]
+ boost/predef/compiler/comeau.h [3:5]
+ boost/predef/compiler/compaq.h [3:5]
+ boost/predef/compiler/diab.h [3:5]
+ boost/predef/compiler/digitalmars.h [3:5]
+ boost/predef/compiler/dignus.h [3:5]
+ boost/predef/compiler/edg.h [3:5]
+ boost/predef/compiler/ekopath.h [3:5]
+ boost/predef/compiler/gcc.h [3:5]
+ boost/predef/compiler/gcc_xml.h [3:5]
+ boost/predef/compiler/greenhills.h [3:5]
+ boost/predef/compiler/hp_acc.h [3:5]
+ boost/predef/compiler/iar.h [3:5]
+ boost/predef/compiler/ibm.h [3:5]
+ boost/predef/compiler/intel.h [3:5]
+ boost/predef/compiler/kai.h [3:5]
+ boost/predef/compiler/llvm.h [3:5]
+ boost/predef/compiler/metaware.h [3:5]
+ boost/predef/compiler/metrowerks.h [3:5]
+ boost/predef/compiler/microtec.h [3:5]
+ boost/predef/compiler/mpw.h [3:5]
+ boost/predef/compiler/palm.h [3:5]
+ boost/predef/compiler/pgi.h [3:5]
+ boost/predef/compiler/sgi_mipspro.h [3:5]
+ boost/predef/compiler/sunpro.h [3:5]
+ boost/predef/compiler/tendra.h [3:5]
+ boost/predef/compiler/visualc.h [3:5]
+ boost/predef/compiler/watcom.h [3:5]
+ boost/predef/detail/_cassert.h [3:5]
+ boost/predef/detail/_exception.h [3:5]
+ boost/predef/detail/comp_detected.h [3:5]
+ boost/predef/detail/endian_compat.h [3:5]
+ boost/predef/detail/os_detected.h [3:5]
+ boost/predef/detail/platform_detected.h [3:5]
+ boost/predef/detail/test.h [3:5]
+ boost/predef/detail/test_def.h [3:5]
+ boost/predef/hardware.h [4:6]
+ boost/predef/hardware/simd.h [4:6]
+ boost/predef/hardware/simd/arm.h [4:6]
+ boost/predef/hardware/simd/arm/versions.h [4:6]
+ boost/predef/hardware/simd/ppc.h [4:6]
+ boost/predef/hardware/simd/ppc/versions.h [4:6]
+ boost/predef/hardware/simd/x86.h [4:6]
+ boost/predef/hardware/simd/x86/versions.h [4:6]
+ boost/predef/hardware/simd/x86_amd.h [4:6]
+ boost/predef/hardware/simd/x86_amd/versions.h [4:6]
+ boost/predef/language.h [3:5]
+ boost/predef/language/objc.h [3:5]
+ boost/predef/language/stdc.h [3:5]
+ boost/predef/language/stdcpp.h [3:5]
+ boost/predef/library.h [3:5]
+ boost/predef/library/c.h [3:5]
+ boost/predef/library/c/_prefix.h [3:5]
+ boost/predef/library/c/gnu.h [3:5]
+ boost/predef/library/c/uc.h [3:5]
+ boost/predef/library/c/vms.h [3:5]
+ boost/predef/library/c/zos.h [3:5]
+ boost/predef/library/std.h [3:5]
+ boost/predef/library/std/_prefix.h [3:5]
+ boost/predef/library/std/cxx.h [3:5]
+ boost/predef/library/std/dinkumware.h [3:5]
+ boost/predef/library/std/libcomo.h [3:5]
+ boost/predef/library/std/modena.h [3:5]
+ boost/predef/library/std/msl.h [3:5]
+ boost/predef/library/std/roguewave.h [3:5]
+ boost/predef/library/std/sgi.h [3:5]
+ boost/predef/library/std/stdcpp3.h [3:5]
+ boost/predef/library/std/stlport.h [3:5]
+ boost/predef/library/std/vacpp.h [3:5]
+ boost/predef/make.h [3:5]
+ boost/predef/os.h [4:6]
+ boost/predef/os/aix.h [3:5]
+ boost/predef/os/amigaos.h [3:5]
+ boost/predef/os/android.h [3:5]
+ boost/predef/os/beos.h [3:5]
+ boost/predef/os/bsd.h [3:5]
+ boost/predef/os/bsd/bsdi.h [3:5]
+ boost/predef/os/bsd/dragonfly.h [3:5]
+ boost/predef/os/bsd/free.h [3:5]
+ boost/predef/os/bsd/net.h [3:5]
+ boost/predef/os/bsd/open.h [3:5]
+ boost/predef/os/cygwin.h [3:5]
+ boost/predef/os/haiku.h [4:6]
+ boost/predef/os/hpux.h [3:5]
+ boost/predef/os/ios.h [4:6]
+ boost/predef/os/irix.h [3:5]
+ boost/predef/os/linux.h [3:5]
+ boost/predef/os/macos.h [4:6]
+ boost/predef/os/os400.h [3:5]
+ boost/predef/os/qnxnto.h [3:5]
+ boost/predef/os/solaris.h [3:5]
+ boost/predef/os/unix.h [3:5]
+ boost/predef/os/vms.h [3:5]
+ boost/predef/os/windows.h [3:5]
+ boost/predef/other.h [3:5]
+ boost/predef/other/endian.h [3:5]
+ boost/predef/other/workaround.h [3:5]
+ boost/predef/platform.h [4:6]
+ boost/predef/platform/ios.h [4:6]
+ boost/predef/platform/mingw.h [3:5]
+ boost/predef/platform/mingw32.h [3:5]
+ boost/predef/platform/mingw64.h [3:5]
+ boost/predef/platform/windows_desktop.h [4:6]
+ boost/predef/platform/windows_phone.h [4:6]
+ boost/predef/platform/windows_runtime.h [4:6]
+ boost/predef/platform/windows_server.h [3:5]
+ boost/predef/platform/windows_store.h [4:6]
+ boost/predef/platform/windows_system.h [3:5]
+ boost/predef/platform/windows_uwp.h [3:5]
+ boost/predef/version.h [3:5]
+ boost/predef/version_number.h [3:5]
+
+KEEP BSL-1.0 ca05dbe6a64cb6bf8779bd19f5bb4d80
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/algorithm/is_palindrome.hpp at line 5
+ License text:
+ Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/algorithm/is_palindrome.hpp [4:6]
+
+KEEP BSL-1.0 ca0ee9f69bfbb2bfa5a3f24854cffdb6
+BELONGS ya.make
+ License text:
+ // Licensed under the Boost Software License version 1.0.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/geometry/algorithms/densify.hpp [7:7]
+ boost/geometry/algorithms/detail/check_iterator_range.hpp [7:7]
+ boost/geometry/algorithms/detail/closest_feature/geometry_to_range.hpp [7:7]
+ boost/geometry/algorithms/detail/closest_feature/point_to_range.hpp [7:7]
+ boost/geometry/algorithms/detail/closest_feature/range_to_range.hpp [7:7]
+ boost/geometry/algorithms/detail/disjoint/multipoint_geometry.hpp [9:9]
+ boost/geometry/algorithms/detail/disjoint/multirange_geometry.hpp [8:8]
+ boost/geometry/algorithms/detail/distance/box_to_box.hpp [7:7]
+ boost/geometry/algorithms/detail/distance/geometry_to_segment_or_box.hpp [7:7]
+ boost/geometry/algorithms/detail/distance/is_comparable.hpp [7:7]
+ boost/geometry/algorithms/detail/distance/iterator_selector.hpp [7:7]
+ boost/geometry/algorithms/detail/distance/linear_or_areal_to_areal.hpp [7:7]
+ boost/geometry/algorithms/detail/distance/linear_to_linear.hpp [7:7]
+ boost/geometry/algorithms/detail/distance/multipoint_to_geometry.hpp [7:7]
+ boost/geometry/algorithms/detail/distance/range_to_geometry_rtree.hpp [7:7]
+ boost/geometry/algorithms/detail/distance/segment_to_box.hpp [7:7]
+ boost/geometry/algorithms/detail/distance/segment_to_segment.hpp [7:7]
+ boost/geometry/algorithms/detail/is_simple/always_simple.hpp [8:8]
+ boost/geometry/algorithms/detail/is_simple/areal.hpp [8:8]
+ boost/geometry/algorithms/detail/is_simple/debug_print_boundary_points.hpp [7:7]
+ boost/geometry/algorithms/detail/is_simple/failure_policy.hpp [7:7]
+ boost/geometry/algorithms/detail/is_simple/implementation.hpp [7:7]
+ boost/geometry/algorithms/detail/is_simple/interface.hpp [8:8]
+ boost/geometry/algorithms/detail/is_simple/linear.hpp [8:8]
+ boost/geometry/algorithms/detail/is_simple/multipoint.hpp [8:8]
+ boost/geometry/algorithms/detail/is_valid/box.hpp [8:8]
+ boost/geometry/algorithms/detail/is_valid/complement_graph.hpp [7:7]
+ boost/geometry/algorithms/detail/is_valid/debug_complement_graph.hpp [7:7]
+ boost/geometry/algorithms/detail/is_valid/debug_print_turns.hpp [7:7]
+ boost/geometry/algorithms/detail/is_valid/debug_validity_phase.hpp [7:7]
+ boost/geometry/algorithms/detail/is_valid/has_duplicates.hpp [7:7]
+ boost/geometry/algorithms/detail/is_valid/has_invalid_coordinate.hpp [8:8]
+ boost/geometry/algorithms/detail/is_valid/has_spikes.hpp [8:8]
+ boost/geometry/algorithms/detail/is_valid/has_valid_self_turns.hpp [8:8]
+ boost/geometry/algorithms/detail/is_valid/implementation.hpp [7:7]
+ boost/geometry/algorithms/detail/is_valid/interface.hpp [8:8]
+ boost/geometry/algorithms/detail/is_valid/is_acceptable_turn.hpp [7:7]
+ boost/geometry/algorithms/detail/is_valid/linear.hpp [8:8]
+ boost/geometry/algorithms/detail/is_valid/multipolygon.hpp [8:8]
+ boost/geometry/algorithms/detail/is_valid/pointlike.hpp [8:8]
+ boost/geometry/algorithms/detail/is_valid/polygon.hpp [10:10]
+ boost/geometry/algorithms/detail/is_valid/ring.hpp [10:10]
+ boost/geometry/algorithms/detail/is_valid/segment.hpp [8:8]
+ boost/geometry/algorithms/detail/max_interval_gap.hpp [7:7]
+ boost/geometry/algorithms/detail/normalize.hpp [8:8]
+ boost/geometry/algorithms/detail/num_distinct_consecutive_points.hpp [7:7]
+ boost/geometry/algorithms/detail/overlay/follow_linear_linear.hpp [10:10]
+ boost/geometry/algorithms/detail/overlay/inconsistent_turns_exception.hpp [5:5]
+ boost/geometry/algorithms/detail/overlay/linear_linear.hpp [5:5]
+ boost/geometry/algorithms/detail/overlay/pointlike_linear.hpp [10:10]
+ boost/geometry/algorithms/detail/overlay/pointlike_pointlike.hpp [8:8]
+ boost/geometry/algorithms/detail/sweep.hpp [7:7]
+ boost/geometry/algorithms/detail/turns/compare_turns.hpp [5:5]
+ boost/geometry/algorithms/detail/turns/debug_turn.hpp [5:5]
+ boost/geometry/algorithms/detail/turns/filter_continue_turns.hpp [5:5]
+ boost/geometry/algorithms/detail/turns/print_turns.hpp [5:5]
+ boost/geometry/algorithms/detail/turns/remove_duplicate_turns.hpp [5:5]
+ boost/geometry/algorithms/dispatch/is_simple.hpp [7:7]
+ boost/geometry/algorithms/dispatch/is_valid.hpp [7:7]
+ boost/geometry/algorithms/is_empty.hpp [7:7]
+ boost/geometry/algorithms/is_simple.hpp [7:7]
+ boost/geometry/algorithms/is_valid.hpp [7:7]
+ boost/geometry/algorithms/num_segments.hpp [7:7]
+ boost/geometry/algorithms/validity_failure_type.hpp [7:7]
+ boost/geometry/geometries/helper_geometry.hpp [8:8]
+ boost/geometry/geometries/pointing_segment.hpp [7:7]
+ boost/geometry/iterators/concatenate_iterator.hpp [7:7]
+ boost/geometry/iterators/detail/point_iterator/inner_range_type.hpp [7:7]
+ boost/geometry/iterators/detail/point_iterator/iterator_type.hpp [7:7]
+ boost/geometry/iterators/detail/point_iterator/value_type.hpp [7:7]
+ boost/geometry/iterators/detail/segment_iterator/iterator_type.hpp [7:7]
+ boost/geometry/iterators/detail/segment_iterator/range_segment_iterator.hpp [7:7]
+ boost/geometry/iterators/detail/segment_iterator/value_type.hpp [7:7]
+ boost/geometry/iterators/dispatch/point_iterator.hpp [7:7]
+ boost/geometry/iterators/dispatch/segment_iterator.hpp [7:7]
+ boost/geometry/iterators/flatten_iterator.hpp [7:7]
+ boost/geometry/iterators/has_one_element.hpp [7:7]
+ boost/geometry/iterators/point_iterator.hpp [7:7]
+ boost/geometry/iterators/point_reverse_iterator.hpp [7:7]
+ boost/geometry/iterators/segment_iterator.hpp [7:7]
+ boost/geometry/policies/is_valid/default_policy.hpp [7:7]
+ boost/geometry/policies/is_valid/failing_reason_policy.hpp [8:8]
+ boost/geometry/policies/is_valid/failure_type_policy.hpp [7:7]
+ boost/geometry/policies/predicate_based_interrupt_policy.hpp [7:7]
+ boost/geometry/strategies/cartesian/densify.hpp [7:7]
+ boost/geometry/strategies/comparable_distance_result.hpp [7:7]
+ boost/geometry/strategies/densify.hpp [7:7]
+ boost/geometry/strategies/geographic/densify.hpp [7:7]
+ boost/geometry/strategies/spherical/densify.hpp [7:7]
+ boost/geometry/util/normalize_spheroidal_box_coordinates.hpp [8:8]
+ boost/geometry/util/normalize_spheroidal_coordinates.hpp [10:10]
+ boost/geometry/util/promote_integral.hpp [7:7]
+ boost/geometry/views/detail/boundary_view.hpp [7:7]
+ boost/geometry/views/detail/boundary_view/implementation.hpp [7:7]
+ boost/geometry/views/detail/boundary_view/interface.hpp [7:7]
+ boost/geometry/views/detail/two_dimensional_view.hpp [7:7]
+
+KEEP BSL-1.0 ca1c6ea93da75bad84f3dba0d52554dd
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signal.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/signal.hpp [3:6]
+
+KEEP BSL-1.0 cbdcef074fb3341d2a9edaadc23a7c2d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/config/detail/select_compiler_config.hpp at line 8
+ License text:
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/config/detail/select_compiler_config.hpp [7:9]
+
+KEEP BSL-1.0 cbe82e847fd3d30a102c9c62ec3d188a
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/tokenizer.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 92.11
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/tokenizer.hpp [5:11]
+
+KEEP Public-Domain cd42fcbb8d96b51cc3475aed7d09df1c
+BELONGS ya.make
+ License text:
+ // and is in the public domain.
+ Scancode info:
+ Original SPDX id: LicenseRef-scancode-public-domain
+ Score : 100.00
+ Match type : TEXT
+ Links : http://www.linfo.org/publicdomain.html, https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/public-domain.LICENSE
+ Files with this license:
+ boost/geometry/srs/projections/proj/isea.hpp [27:27]
+
+KEEP BSL-1.0 cdc5eaf687f57e7bd84ebeb4c1db8f35
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/adaptor/adjacent_filtered.hpp at line 5, boost/range/adaptor/argument_fwd.hpp at line 5, boost/range/adaptor/filtered.hpp at line 5, boost/range/adaptor/indirected.hpp at line 5, boost/range/adaptor/map.hpp at line 5, boost/range/adaptor/reversed.hpp at line 5, boost/range/adaptor/sliced.hpp at line 5, boost/range/adaptor/transformed.hpp at line 5, boost/range/adaptor/uniqued.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/range/adaptor/adjacent_filtered.hpp [3:6]
+ boost/range/adaptor/argument_fwd.hpp [3:6]
+ boost/range/adaptor/filtered.hpp [3:6]
+ boost/range/adaptor/indirected.hpp [3:6]
+ boost/range/adaptor/map.hpp [3:6]
+ boost/range/adaptor/reversed.hpp [3:6]
+ boost/range/adaptor/sliced.hpp [3:6]
+ boost/range/adaptor/transformed.hpp [3:6]
+ boost/range/adaptor/uniqued.hpp [3:6]
+
+KEEP BSL-1.0 cff4cece9d95e7e6aa69248f318c9f04
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/integer.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/integer.hpp [3:5]
+
+KEEP BSL-1.0 d16849ba3420a74948970493c91f9145
+BELONGS ya.make
+ License text:
+ // Use modification and distribution are subject to the boost Software License,
+ // Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/typeof/vector50.hpp [5:6]
+
+KEEP BSL-1.0 d22835a98ac2f82e1281deb13b9ab9ba
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/spirit/home/qi/detail/expectation_failure.hpp at line 5, boost/spirit/home/qi/directive/expect.hpp at line 5
+ License text:
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/spirit/home/qi/detail/expectation_failure.hpp [4:5]
+ boost/spirit/home/qi/directive/expect.hpp [4:5]
+
+KEEP BSL-1.0 d256b9bf6722d228c66f5e2ac3e9fa57
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/uuid/detail/random_provider_arc4random.ipp at line 5
+ License text:
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 92.86
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/uuid/detail/random_provider_arc4random.ipp [4:5]
+
+KEEP BSL-1.0 d2c1802e562226f7f860cad601ecc23e
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/core/demangle.hpp at line 10, boost/core/is_same.hpp at line 15, boost/core/lightweight_test_trait.hpp at line 17
+ License text:
+ // Distributed under the Boost Software License, Version 1.0.
+ // See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/core/demangle.hpp [9:11]
+ boost/core/is_same.hpp [14:16]
+ boost/core/lightweight_test_trait.hpp [16:18]
+
+KEEP BSL-1.0 d2c8a44919aa32341a7db67f113f3186
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/thread/concurrent_queues/detail/sync_deque_base.hpp at line 8, boost/thread/concurrent_queues/detail/sync_queue_base.hpp at line 8
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/thread/concurrent_queues/detail/sync_deque_base.hpp [6:8]
+ boost/thread/concurrent_queues/detail/sync_queue_base.hpp [6:8]
+
+KEEP BSL-1.0 d2e8e36a364746befb04b885a12a1e24
+BELONGS libs/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/mpl/aux_/begin_end_impl.hpp at line 8, boost/mpl/zip_view.hpp at line 9, libs/test/src/test_framework_init_observer.cpp at line 3
+ License text:
+ // Distributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/mpl/aux_/begin_end_impl.hpp [7:9]
+ boost/mpl/zip_view.hpp [8:10]
+ libs/test/src/test_framework_init_observer.cpp [2:4]
+
+KEEP BSL-1.0 d398f407edc1c91c48f2e7613f7602d5
+BELONGS libs/context/ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: libs/context/src/asm/jump_i386_ms_pe_gas.asm at line 5, libs/context/src/asm/jump_x86_64_ms_pe_gas.asm at line 5, libs/context/src/asm/jump_x86_64_sysv_elf_gas.S at line 4, libs/context/src/asm/jump_x86_64_sysv_macho_gas.S at line 4, libs/context/src/asm/make_i386_ms_pe_gas.asm at line 5, libs/context/src/asm/make_x86_64_ms_pe_gas.asm at line 5, libs/context/src/asm/make_x86_64_sysv_elf_gas.S at line 4, libs/context/src/asm/make_x86_64_sysv_macho_gas.S at line 4, libs/context/src/asm/ontop_i386_ms_pe_gas.asm at line 5, libs/context/src/asm/ontop_x86_64_ms_pe_gas.asm at line 5, libs/context/src/asm/ontop_x86_64_sysv_elf_gas.S at line 4, libs/context/src/asm/ontop_x86_64_sysv_macho_gas.S at line 4
+ License text:
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ libs/context/src/asm/jump_i386_ms_pe_gas.asm [4:6]
+ libs/context/src/asm/jump_x86_64_ms_pe_gas.asm [4:6]
+ libs/context/src/asm/jump_x86_64_sysv_elf_gas.S [3:5]
+ libs/context/src/asm/jump_x86_64_sysv_macho_gas.S [3:5]
+ libs/context/src/asm/make_i386_ms_pe_gas.asm [4:6]
+ libs/context/src/asm/make_x86_64_ms_pe_gas.asm [4:6]
+ libs/context/src/asm/make_x86_64_sysv_elf_gas.S [3:5]
+ libs/context/src/asm/make_x86_64_sysv_macho_gas.S [3:5]
+ libs/context/src/asm/ontop_i386_ms_pe_gas.asm [4:6]
+ libs/context/src/asm/ontop_x86_64_ms_pe_gas.asm [4:6]
+ libs/context/src/asm/ontop_x86_64_sysv_elf_gas.S [3:5]
+ libs/context/src/asm/ontop_x86_64_sysv_macho_gas.S [3:5]
+
+KEEP BSL-1.0 d3e1fafd8c6aeea1c3c9ddcfd13b5fc4
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/accumulators/statistics/tail.hpp at line 6, boost/accumulators/statistics/tail_variate.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/accumulators/statistics/tail.hpp [4:6]
+ boost/accumulators/statistics/tail_variate.hpp [4:6]
+
+KEEP BSL-1.0 d4d0d34f805f5eee001a987f1e04a4a4
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/detail/config_external_begin.hpp at line 5, boost/interprocess/detail/config_external_end.hpp at line 5, boost/interprocess/sync/detail/condition_any_algorithm.hpp at line 5, boost/interprocess/sync/detail/locks.hpp at line 5, boost/interprocess/sync/interprocess_condition_any.hpp at line 5, boost/move/detail/config_begin.hpp at line 5, boost/move/detail/config_end.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2012-2012. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/interprocess/detail/config_external_begin.hpp [3:5]
+ boost/interprocess/detail/config_external_end.hpp [3:5]
+ boost/interprocess/sync/detail/condition_any_algorithm.hpp [3:5]
+ boost/interprocess/sync/detail/locks.hpp [3:5]
+ boost/interprocess/sync/interprocess_condition_any.hpp [3:5]
+ boost/move/detail/config_begin.hpp [3:5]
+ boost/move/detail/config_end.hpp [3:5]
+
+KEEP BSL-1.0 d57c02a6cdaa26d1c644f290e8569503
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/serialization/void_cast.hpp at line 14, boost/serialization/void_cast_fwd.hpp at line 14
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 94.74
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/serialization/void_cast.hpp [13:18]
+ boost/serialization/void_cast_fwd.hpp [13:18]
+
+KEEP BSL-1.0 d5856aeb5be655b8e7149bd70f048333
+BELONGS ya.make
+ License text:
+ // Distributed under the Boost Software License, Version 1.0.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/endian/std_pair.hpp [5:5]
+
+KEEP BSL-1.0 d5ae6e3c2dad0c6e4008b1526b2291dd
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/parameter/aux_/arg_list.hpp at line 3, boost/parameter/aux_/default.hpp at line 3, boost/parameter/aux_/parameter_requirements.hpp at line 3, boost/parameter/aux_/tagged_argument.hpp at line 3, boost/parameter/aux_/unwrap_cv_reference.hpp at line 3, boost/parameter/aux_/void.hpp at line 3, boost/parameter/aux_/yesno.hpp at line 3, boost/parameter/config.hpp at line 3, boost/parameter/keyword.hpp at line 3
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/parameter/aux_/arg_list.hpp [1:4]
+ boost/parameter/aux_/default.hpp [1:4]
+ boost/parameter/aux_/parameter_requirements.hpp [1:4]
+ boost/parameter/aux_/tagged_argument.hpp [1:4]
+ boost/parameter/aux_/unwrap_cv_reference.hpp [1:4]
+ boost/parameter/aux_/void.hpp [1:4]
+ boost/parameter/aux_/yesno.hpp [1:4]
+ boost/parameter/config.hpp [1:4]
+ boost/parameter/keyword.hpp [1:4]
+
+KEEP BSL-1.0 d61752484f220755bd1f5e838c59307b
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/detail/addressof.hpp at line 5, boost/container/detail/alloc_helpers.hpp at line 5, boost/container/detail/iterator_to_raw_pointer.hpp at line 5, boost/container/detail/next_capacity.hpp at line 5, boost/container/detail/placement_new.hpp at line 7, boost/container/new_allocator.hpp at line 5, boost/interprocess/detail/nothrow.hpp at line 5, boost/interprocess/detail/simple_swap.hpp at line 7, boost/interprocess/detail/std_fwd.hpp at line 5, boost/move/detail/iterator_to_raw_pointer.hpp at line 5, boost/move/detail/placement_new.hpp at line 7
+ License text:
+ // (C) Copyright Ion Gaztanaga 2014-2015. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/container/detail/addressof.hpp [3:5]
+ boost/container/detail/alloc_helpers.hpp [3:5]
+ boost/container/detail/iterator_to_raw_pointer.hpp [3:5]
+ boost/container/detail/next_capacity.hpp [3:5]
+ boost/container/detail/placement_new.hpp [5:7]
+ boost/container/new_allocator.hpp [3:5]
+ boost/interprocess/detail/nothrow.hpp [3:5]
+ boost/interprocess/detail/simple_swap.hpp [5:7]
+ boost/interprocess/detail/std_fwd.hpp [3:5]
+ boost/move/detail/iterator_to_raw_pointer.hpp [3:5]
+ boost/move/detail/placement_new.hpp [5:7]
+
+KEEP Zlib d7d091c33e6a568a05ce9a60ee1f64e2
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: Zlib
+ Score : 100.00
+ Match type : TEXT
+ Links : http://www.gzip.org/zlib/zlib_license.html, http://www.zlib.net/, https://spdx.org/licenses/Zlib
+ Files with this license:
+ boost/beast/zlib/deflate_stream.hpp [31:48]
+ boost/beast/zlib/detail/bitstream.hpp [13:30]
+ boost/beast/zlib/detail/deflate_stream.hpp [13:30]
+ boost/beast/zlib/detail/inflate_stream.hpp [13:30]
+ boost/beast/zlib/detail/ranges.hpp [13:30]
+ boost/beast/zlib/detail/window.hpp [13:30]
+ boost/beast/zlib/error.hpp [24:41]
+ boost/beast/zlib/impl/error.ipp [13:30]
+ boost/beast/zlib/inflate_stream.hpp [20:37]
+ boost/beast/zlib/zlib.hpp [21:38]
+
+KEEP BSL-1.0 d7f87ea2cced5bb8dd0a81e515f54c30
+BELONGS libs/chrono/ya.make libs/system/ya.make libs/thread/ya.make libs/timer/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/chrono/ceil.hpp at line 7, boost/chrono/config.hpp at line 8, boost/chrono/floor.hpp at line 7, boost/chrono/io/utility/ios_base_state_ptr.hpp at line 6, boost/chrono/io/utility/manip_base.hpp at line 6, boost/chrono/round.hpp at line 7, boost/detail/identifier.hpp at line 6, boost/endian/detail/cover_operators.hpp at line 7, boost/math/complex/acos.hpp at line 3, boost/math/complex/asin.hpp at line 3, boost/spirit/home/karma.hpp at line 4, boost/spirit/home/karma/action/action.hpp at line 4, boost/spirit/home/karma/auto.hpp at line 4, boost/spirit/home/karma/auto/auto.hpp at line 4, boost/spirit/home/karma/auto/create_generator.hpp at line 4, boost/spirit/home/karma/auto/meta_create.hpp at line 4, boost/spirit/home/karma/auxiliary/attr_cast.hpp at line 4, boost/spirit/home/karma/auxiliary/eps.hpp at line 4, boost/spirit/home/karma/binary/binary.hpp at line 4, boost/spirit/home/karma/char/char.hpp at line 5, boost/spirit/home/karma/char/char_class.hpp at line 4, boost/spirit/home/karma/char/char_generator.hpp at line 5, boost/spirit/home/karma/delimit_out.hpp at line 4, boost/spirit/home/karma/detail/alternative_function.hpp at line 5, boost/spirit/home/karma/detail/as.hpp at line 4, boost/spirit/home/karma/detail/attributes.hpp at line 5, boost/spirit/home/karma/detail/default_width.hpp at line 4, boost/spirit/home/karma/detail/enable_lit.hpp at line 4, boost/spirit/home/karma/detail/extract_from.hpp at line 4, boost/spirit/home/karma/detail/indirect_iterator.hpp at line 4, boost/spirit/home/karma/detail/unused_delimiter.hpp at line 4, boost/spirit/home/karma/directive/as.hpp at line 5, boost/spirit/home/karma/directive/buffer.hpp at line 4, boost/spirit/home/karma/directive/center_alignment.hpp at line 4, boost/spirit/home/karma/directive/columns.hpp at line 4, boost/spirit/home/karma/directive/delimit.hpp at line 4, boost/spirit/home/karma/directive/duplicate.hpp at line 4, boost/spirit/home/karma/directive/encoding.hpp at line 5, boost/spirit/home/karma/directive/left_alignment.hpp at line 4, boost/spirit/home/karma/directive/maxwidth.hpp at line 4, boost/spirit/home/karma/directive/omit.hpp at line 4, boost/spirit/home/karma/directive/repeat.hpp at line 5, boost/spirit/home/karma/directive/right_alignment.hpp at line 4, boost/spirit/home/karma/domain.hpp at line 5, boost/spirit/home/karma/format.hpp at line 4, boost/spirit/home/karma/format_auto.hpp at line 4, boost/spirit/home/karma/nonterminal/debug_handler.hpp at line 5, boost/spirit/home/karma/nonterminal/debug_handler_state.hpp at line 4, boost/spirit/home/karma/nonterminal/rule.hpp at line 5, boost/spirit/home/karma/nonterminal/simple_trace.hpp at line 5, boost/spirit/home/karma/numeric/bool.hpp at line 4, boost/spirit/home/karma/numeric/detail/numeric_utils.hpp at line 4, boost/spirit/home/karma/numeric/int.hpp at line 4, boost/spirit/home/karma/numeric/real.hpp at line 4, boost/spirit/home/karma/numeric/uint.hpp at line 4, boost/spirit/home/karma/operator/alternative.hpp at line 5, boost/spirit/home/karma/operator/and_predicate.hpp at line 5, boost/spirit/home/karma/operator/kleene.hpp at line 5, boost/spirit/home/karma/operator/list.hpp at line 5, boost/spirit/home/karma/operator/not_predicate.hpp at line 5, boost/spirit/home/karma/operator/optional.hpp at line 5, boost/spirit/home/karma/operator/plus.hpp at line 5, boost/spirit/home/karma/operator/sequence.hpp at line 5, boost/spirit/home/karma/stream.hpp at line 4, boost/spirit/home/karma/stream/stream.hpp at line 4, boost/spirit/home/karma/string/lit.hpp at line 5, boost/spirit/home/karma/string/symbols.hpp at line 4, boost/spirit/home/lex/lexer/lexertl/generate_static.hpp at line 5, boost/spirit/home/lex/lexer/lexertl/lexer.hpp at line 4, boost/spirit/home/lex/qi/plain_raw_token.hpp at line 4, boost/spirit/home/lex/qi/plain_token.hpp at line 4, boost/spirit/home/lex/qi/plain_tokenid.hpp at line 4, boost/spirit/home/lex/qi/plain_tokenid_mask.hpp at line 4, boost/spirit/home/lex/qi/state_switcher.hpp at line 5, boost/spirit/home/qi/auto/auto.hpp at line 4, boost/spirit/home/qi/auto/create_parser.hpp at line 4, boost/spirit/home/qi/auto/meta_create.hpp at line 4, boost/spirit/home/qi/auxiliary/attr_cast.hpp at line 4, boost/spirit/home/qi/detail/attributes.hpp at line 5, boost/spirit/home/qi/detail/enable_lit.hpp at line 4, boost/spirit/home/qi/detail/unused_skipper.hpp at line 4, boost/spirit/home/qi/match.hpp at line 4, boost/spirit/home/qi/match_auto.hpp at line 4, boost/spirit/home/support/adapt_adt_attributes.hpp at line 4, boost/spirit/home/support/assert_msg.hpp at line 4, boost/spirit/home/support/auto/meta_create.hpp at line 4, boost/spirit/home/support/auxiliary/attr_cast.hpp at line 4, boost/spirit/home/support/detail/endian.hpp at line 5, boost/spirit/home/support/detail/endian/cover_operators.hpp at line 7, boost/spirit/home/support/detail/get_encoding.hpp at line 5, boost/spirit/home/support/detail/scoped_enum_emulation.hpp at line 5, boost/spirit/home/support/iterators/detail/buf_id_check_policy.hpp at line 5, boost/spirit/home/support/iterators/detail/buffering_input_iterator_policy.hpp at line 5, boost/spirit/home/support/iterators/detail/combine_policies.hpp at line 4, boost/spirit/home/support/iterators/detail/first_owner_policy.hpp at line 5, boost/spirit/home/support/iterators/detail/fixed_size_queue.hpp at line 5, boost/spirit/home/support/iterators/detail/fixed_size_queue_policy.hpp at line 5, boost/spirit/home/support/iterators/detail/functor_input_policy.hpp at line 4, boost/spirit/home/support/iterators/detail/input_iterator_policy.hpp at line 5, boost/spirit/home/support/iterators/detail/istream_policy.hpp at line 5, boost/spirit/home/support/iterators/detail/lex_input_policy.hpp at line 5, boost/spirit/home/support/iterators/detail/multi_pass.hpp at line 5, boost/spirit/home/support/iterators/detail/no_check_policy.hpp at line 5, boost/spirit/home/support/iterators/detail/ref_counted_policy.hpp at line 5, boost/spirit/home/support/iterators/detail/split_functor_input_policy.hpp at line 4, boost/spirit/home/support/iterators/detail/split_std_deque_policy.hpp at line 5, boost/spirit/home/support/iterators/istream_iterator.hpp at line 4, boost/spirit/home/support/iterators/look_ahead.hpp at line 6, boost/spirit/home/support/iterators/multi_pass.hpp at line 6, boost/spirit/home/support/iterators/ostream_iterator.hpp at line 4, boost/spirit/home/support/limits.hpp at line 4, boost/spirit/home/support/multi_pass.hpp at line 4, boost/spirit/home/support/numeric_traits.hpp at line 4, boost/spirit/repository/home/karma.hpp at line 5, boost/spirit/repository/home/karma/directive.hpp at line 5, boost/spirit/repository/home/karma/nonterminal.hpp at line 6, boost/spirit/repository/home/karma/nonterminal/subrule.hpp at line 6, boost/spirit/repository/home/qi.hpp at line 5, boost/spirit/repository/home/qi/directive.hpp at line 5, boost/spirit/repository/home/qi/directive/distinct.hpp at line 6, boost/spirit/repository/home/qi/nonterminal.hpp at line 6, boost/spirit/repository/home/qi/operator.hpp at line 6, boost/spirit/repository/home/qi/primitive.hpp at line 5, boost/spirit/repository/home/qi/primitive/advance.hpp at line 4, boost/system/config.hpp at line 6, boost/system/cygwin_error.hpp at line 6, boost/system/detail/error_code.ipp at line 6, boost/system/error_code.hpp at line 8, boost/system/linux_error.hpp at line 6, boost/system/system_error.hpp at line 6, boost/system/windows_error.hpp at line 6, boost/thread/barrier.hpp at line 7, boost/thread/concurrent_queues/sync_priority_queue.hpp at line 5, boost/thread/concurrent_queues/sync_timed_queue.hpp at line 5, boost/thread/csbl/deque.hpp at line 4, boost/thread/csbl/devector.hpp at line 4, boost/thread/csbl/functional.hpp at line 4, boost/thread/csbl/list.hpp at line 4, boost/thread/csbl/memory.hpp at line 4, boost/thread/csbl/memory/allocator_arg.hpp at line 4, boost/thread/csbl/memory/allocator_traits.hpp at line 4, boost/thread/csbl/memory/config.hpp at line 4, boost/thread/csbl/memory/default_delete.hpp at line 4, boost/thread/csbl/memory/pointer_traits.hpp at line 4, boost/thread/csbl/memory/scoped_allocator.hpp at line 4, boost/thread/csbl/memory/shared_ptr.hpp at line 4, boost/thread/csbl/memory/unique_ptr.hpp at line 4, boost/thread/csbl/queue.hpp at line 4, boost/thread/csbl/tuple.hpp at line 4, boost/thread/csbl/vector.hpp at line 4, boost/thread/detail/atomic_redef_macros.hpp at line 4, boost/thread/detail/atomic_undef_macros.hpp at line 4, boost/thread/detail/config.hpp at line 6, boost/thread/detail/delete.hpp at line 4, boost/thread/detail/function_wrapper.hpp at line 4, boost/thread/detail/invoke.hpp at line 4, boost/thread/detail/invoker.hpp at line 4, boost/thread/detail/is_convertible.hpp at line 6, boost/thread/detail/log.hpp at line 4, boost/thread/detail/make_tuple_indices.hpp at line 4, boost/thread/detail/memory.hpp at line 6, boost/thread/detail/nullary_function.hpp at line 4, boost/thread/detail/variadic_footer.hpp at line 4, boost/thread/detail/variadic_header.hpp at line 4, boost/thread/exceptions.hpp at line 7, boost/thread/executor.hpp at line 4, boost/thread/executors/basic_thread_pool.hpp at line 4, boost/thread/executors/detail/priority_executor_base.hpp at line 5, boost/thread/executors/detail/scheduled_executor_base.hpp at line 5, boost/thread/executors/executor.hpp at line 4, boost/thread/executors/executor_adaptor.hpp at line 4, boost/thread/executors/generic_executor_ref.hpp at line 4, boost/thread/executors/inline_executor.hpp at line 4, boost/thread/executors/loop_executor.hpp at line 4, boost/thread/executors/scheduled_thread_pool.hpp at line 5, boost/thread/executors/scheduler.hpp at line 4, boost/thread/executors/scheduling_adaptor.hpp at line 5, boost/thread/executors/serial_executor.hpp at line 4, boost/thread/executors/serial_executor_cont.hpp at line 4, boost/thread/executors/thread_executor.hpp at line 4, boost/thread/lock_concepts.hpp at line 4, boost/thread/lockable_concepts.hpp at line 4, boost/thread/thread_pool.hpp at line 4, boost/thread/user_scheduler.hpp at line 4, boost/thread/xtime.hpp at line 6, libs/chrono/stopwatches/include/boost/chrono/stopwatches/dont_start.hpp at line 4, libs/chrono/stopwatches/include/boost/chrono/stopwatches/laps_stopwatch.hpp at line 5, libs/chrono/stopwatches/include/boost/chrono/stopwatches/simple_stopwatch.hpp at line 5, libs/chrono/stopwatches/include/boost/chrono/stopwatches/stopwatch.hpp at line 5, libs/chrono/stopwatches/include/boost/chrono/stopwatches/stopwatch_scoped.hpp at line 4, libs/chrono/stopwatches/include/boost/chrono/stopwatches/strict_stopwatch.hpp at line 5, libs/chrono/stopwatches/include/boost/chrono/stopwatches/suspendable_stopwatch.hpp at line 4, libs/system/src/error_code.cpp at line 6, libs/thread/src/pthread/once.cpp at line 4, libs/thread/src/pthread/once_atomic.cpp at line 5, libs/thread/src/pthread/thread.cpp at line 7, libs/timer/src/cpu_timer.cpp at line 6
+ License text:
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/chrono/ceil.hpp [6:7]
+ boost/chrono/config.hpp [7:8]
+ boost/chrono/floor.hpp [6:7]
+ boost/chrono/io/utility/ios_base_state_ptr.hpp [5:6]
+ boost/chrono/io/utility/manip_base.hpp [5:6]
+ boost/chrono/round.hpp [6:7]
+ boost/detail/identifier.hpp [5:6]
+ boost/endian/detail/cover_operators.hpp [6:7]
+ boost/math/complex/acos.hpp [2:3]
+ boost/math/complex/asin.hpp [2:3]
+ boost/spirit/home/karma.hpp [3:4]
+ boost/spirit/home/karma/action/action.hpp [3:4]
+ boost/spirit/home/karma/auto.hpp [3:4]
+ boost/spirit/home/karma/auto/auto.hpp [3:4]
+ boost/spirit/home/karma/auto/create_generator.hpp [3:4]
+ boost/spirit/home/karma/auto/meta_create.hpp [3:4]
+ boost/spirit/home/karma/auxiliary/attr_cast.hpp [3:4]
+ boost/spirit/home/karma/auxiliary/eps.hpp [3:4]
+ boost/spirit/home/karma/binary/binary.hpp [3:4]
+ boost/spirit/home/karma/char/char.hpp [4:5]
+ boost/spirit/home/karma/char/char_class.hpp [3:4]
+ boost/spirit/home/karma/char/char_generator.hpp [4:5]
+ boost/spirit/home/karma/delimit_out.hpp [3:4]
+ boost/spirit/home/karma/detail/alternative_function.hpp [4:5]
+ boost/spirit/home/karma/detail/as.hpp [3:4]
+ boost/spirit/home/karma/detail/attributes.hpp [4:5]
+ boost/spirit/home/karma/detail/default_width.hpp [3:4]
+ boost/spirit/home/karma/detail/enable_lit.hpp [3:4]
+ boost/spirit/home/karma/detail/extract_from.hpp [3:4]
+ boost/spirit/home/karma/detail/indirect_iterator.hpp [3:4]
+ boost/spirit/home/karma/detail/unused_delimiter.hpp [3:4]
+ boost/spirit/home/karma/directive/as.hpp [4:5]
+ boost/spirit/home/karma/directive/buffer.hpp [3:4]
+ boost/spirit/home/karma/directive/center_alignment.hpp [3:4]
+ boost/spirit/home/karma/directive/columns.hpp [3:4]
+ boost/spirit/home/karma/directive/delimit.hpp [3:4]
+ boost/spirit/home/karma/directive/duplicate.hpp [3:4]
+ boost/spirit/home/karma/directive/encoding.hpp [4:5]
+ boost/spirit/home/karma/directive/left_alignment.hpp [3:4]
+ boost/spirit/home/karma/directive/maxwidth.hpp [3:4]
+ boost/spirit/home/karma/directive/omit.hpp [3:4]
+ boost/spirit/home/karma/directive/repeat.hpp [4:5]
+ boost/spirit/home/karma/directive/right_alignment.hpp [3:4]
+ boost/spirit/home/karma/domain.hpp [4:5]
+ boost/spirit/home/karma/format.hpp [3:4]
+ boost/spirit/home/karma/format_auto.hpp [3:4]
+ boost/spirit/home/karma/nonterminal/debug_handler.hpp [4:5]
+ boost/spirit/home/karma/nonterminal/debug_handler_state.hpp [3:4]
+ boost/spirit/home/karma/nonterminal/rule.hpp [4:5]
+ boost/spirit/home/karma/nonterminal/simple_trace.hpp [4:5]
+ boost/spirit/home/karma/numeric/bool.hpp [3:4]
+ boost/spirit/home/karma/numeric/detail/numeric_utils.hpp [3:4]
+ boost/spirit/home/karma/numeric/int.hpp [3:4]
+ boost/spirit/home/karma/numeric/real.hpp [3:4]
+ boost/spirit/home/karma/numeric/uint.hpp [3:4]
+ boost/spirit/home/karma/operator/alternative.hpp [4:5]
+ boost/spirit/home/karma/operator/and_predicate.hpp [4:5]
+ boost/spirit/home/karma/operator/kleene.hpp [4:5]
+ boost/spirit/home/karma/operator/list.hpp [4:5]
+ boost/spirit/home/karma/operator/not_predicate.hpp [4:5]
+ boost/spirit/home/karma/operator/optional.hpp [4:5]
+ boost/spirit/home/karma/operator/plus.hpp [4:5]
+ boost/spirit/home/karma/operator/sequence.hpp [4:5]
+ boost/spirit/home/karma/stream.hpp [3:4]
+ boost/spirit/home/karma/stream/stream.hpp [3:4]
+ boost/spirit/home/karma/string/lit.hpp [4:5]
+ boost/spirit/home/karma/string/symbols.hpp [3:4]
+ boost/spirit/home/lex/lexer/lexertl/generate_static.hpp [4:5]
+ boost/spirit/home/lex/lexer/lexertl/lexer.hpp [3:4]
+ boost/spirit/home/lex/qi/plain_raw_token.hpp [3:4]
+ boost/spirit/home/lex/qi/plain_token.hpp [3:4]
+ boost/spirit/home/lex/qi/plain_tokenid.hpp [3:4]
+ boost/spirit/home/lex/qi/plain_tokenid_mask.hpp [3:4]
+ boost/spirit/home/lex/qi/state_switcher.hpp [4:5]
+ boost/spirit/home/qi/auto/auto.hpp [3:4]
+ boost/spirit/home/qi/auto/create_parser.hpp [3:4]
+ boost/spirit/home/qi/auto/meta_create.hpp [3:4]
+ boost/spirit/home/qi/auxiliary/attr_cast.hpp [3:4]
+ boost/spirit/home/qi/detail/attributes.hpp [4:5]
+ boost/spirit/home/qi/detail/enable_lit.hpp [3:4]
+ boost/spirit/home/qi/detail/unused_skipper.hpp [3:4]
+ boost/spirit/home/qi/match.hpp [3:4]
+ boost/spirit/home/qi/match_auto.hpp [3:4]
+ boost/spirit/home/support/adapt_adt_attributes.hpp [3:4]
+ boost/spirit/home/support/assert_msg.hpp [3:4]
+ boost/spirit/home/support/auto/meta_create.hpp [3:4]
+ boost/spirit/home/support/auxiliary/attr_cast.hpp [3:4]
+ boost/spirit/home/support/detail/endian.hpp [4:5]
+ boost/spirit/home/support/detail/endian/cover_operators.hpp [6:7]
+ boost/spirit/home/support/detail/get_encoding.hpp [4:5]
+ boost/spirit/home/support/detail/scoped_enum_emulation.hpp [4:5]
+ boost/spirit/home/support/iterators/detail/buf_id_check_policy.hpp [4:5]
+ boost/spirit/home/support/iterators/detail/buffering_input_iterator_policy.hpp [4:5]
+ boost/spirit/home/support/iterators/detail/combine_policies.hpp [3:4]
+ boost/spirit/home/support/iterators/detail/first_owner_policy.hpp [4:5]
+ boost/spirit/home/support/iterators/detail/fixed_size_queue.hpp [4:5]
+ boost/spirit/home/support/iterators/detail/fixed_size_queue_policy.hpp [4:5]
+ boost/spirit/home/support/iterators/detail/functor_input_policy.hpp [3:4]
+ boost/spirit/home/support/iterators/detail/input_iterator_policy.hpp [4:5]
+ boost/spirit/home/support/iterators/detail/istream_policy.hpp [4:5]
+ boost/spirit/home/support/iterators/detail/lex_input_policy.hpp [4:5]
+ boost/spirit/home/support/iterators/detail/multi_pass.hpp [4:5]
+ boost/spirit/home/support/iterators/detail/no_check_policy.hpp [4:5]
+ boost/spirit/home/support/iterators/detail/ref_counted_policy.hpp [4:5]
+ boost/spirit/home/support/iterators/detail/split_functor_input_policy.hpp [3:4]
+ boost/spirit/home/support/iterators/detail/split_std_deque_policy.hpp [4:5]
+ boost/spirit/home/support/iterators/istream_iterator.hpp [3:4]
+ boost/spirit/home/support/iterators/look_ahead.hpp [5:6]
+ boost/spirit/home/support/iterators/multi_pass.hpp [5:6]
+ boost/spirit/home/support/iterators/ostream_iterator.hpp [3:4]
+ boost/spirit/home/support/limits.hpp [3:4]
+ boost/spirit/home/support/multi_pass.hpp [3:4]
+ boost/spirit/home/support/numeric_traits.hpp [3:4]
+ boost/spirit/repository/home/karma.hpp [4:5]
+ boost/spirit/repository/home/karma/directive.hpp [4:5]
+ boost/spirit/repository/home/karma/nonterminal.hpp [5:6]
+ boost/spirit/repository/home/karma/nonterminal/subrule.hpp [5:6]
+ boost/spirit/repository/home/qi.hpp [4:5]
+ boost/spirit/repository/home/qi/directive.hpp [4:5]
+ boost/spirit/repository/home/qi/directive/distinct.hpp [5:6]
+ boost/spirit/repository/home/qi/nonterminal.hpp [5:6]
+ boost/spirit/repository/home/qi/operator.hpp [5:6]
+ boost/spirit/repository/home/qi/primitive.hpp [4:5]
+ boost/spirit/repository/home/qi/primitive/advance.hpp [3:4]
+ boost/system/config.hpp [5:6]
+ boost/system/cygwin_error.hpp [5:6]
+ boost/system/detail/error_code.ipp [5:6]
+ boost/system/error_code.hpp [7:8]
+ boost/system/linux_error.hpp [5:6]
+ boost/system/system_error.hpp [5:6]
+ boost/system/windows_error.hpp [5:6]
+ boost/thread/barrier.hpp [6:7]
+ boost/thread/concurrent_queues/sync_priority_queue.hpp [4:5]
+ boost/thread/concurrent_queues/sync_timed_queue.hpp [4:5]
+ boost/thread/csbl/deque.hpp [3:4]
+ boost/thread/csbl/devector.hpp [3:4]
+ boost/thread/csbl/functional.hpp [3:4]
+ boost/thread/csbl/list.hpp [3:4]
+ boost/thread/csbl/memory.hpp [3:4]
+ boost/thread/csbl/memory/allocator_arg.hpp [3:4]
+ boost/thread/csbl/memory/allocator_traits.hpp [3:4]
+ boost/thread/csbl/memory/config.hpp [3:4]
+ boost/thread/csbl/memory/default_delete.hpp [3:4]
+ boost/thread/csbl/memory/pointer_traits.hpp [3:4]
+ boost/thread/csbl/memory/scoped_allocator.hpp [3:4]
+ boost/thread/csbl/memory/shared_ptr.hpp [3:4]
+ boost/thread/csbl/memory/unique_ptr.hpp [3:4]
+ boost/thread/csbl/queue.hpp [3:4]
+ boost/thread/csbl/tuple.hpp [3:4]
+ boost/thread/csbl/vector.hpp [3:4]
+ boost/thread/detail/atomic_redef_macros.hpp [3:4]
+ boost/thread/detail/atomic_undef_macros.hpp [3:4]
+ boost/thread/detail/config.hpp [5:6]
+ boost/thread/detail/delete.hpp [3:4]
+ boost/thread/detail/function_wrapper.hpp [3:4]
+ boost/thread/detail/invoke.hpp [3:4]
+ boost/thread/detail/invoker.hpp [3:4]
+ boost/thread/detail/is_convertible.hpp [5:6]
+ boost/thread/detail/log.hpp [3:4]
+ boost/thread/detail/make_tuple_indices.hpp [3:4]
+ boost/thread/detail/memory.hpp [5:6]
+ boost/thread/detail/nullary_function.hpp [3:4]
+ boost/thread/detail/variadic_footer.hpp [3:4]
+ boost/thread/detail/variadic_header.hpp [3:4]
+ boost/thread/exceptions.hpp [6:7]
+ boost/thread/executor.hpp [3:4]
+ boost/thread/executors/basic_thread_pool.hpp [3:4]
+ boost/thread/executors/detail/priority_executor_base.hpp [4:5]
+ boost/thread/executors/detail/scheduled_executor_base.hpp [4:5]
+ boost/thread/executors/executor.hpp [3:4]
+ boost/thread/executors/executor_adaptor.hpp [3:4]
+ boost/thread/executors/generic_executor_ref.hpp [3:4]
+ boost/thread/executors/inline_executor.hpp [3:4]
+ boost/thread/executors/loop_executor.hpp [3:4]
+ boost/thread/executors/scheduled_thread_pool.hpp [4:5]
+ boost/thread/executors/scheduler.hpp [3:4]
+ boost/thread/executors/scheduling_adaptor.hpp [4:5]
+ boost/thread/executors/serial_executor.hpp [3:4]
+ boost/thread/executors/serial_executor_cont.hpp [3:4]
+ boost/thread/executors/thread_executor.hpp [3:4]
+ boost/thread/lock_concepts.hpp [3:4]
+ boost/thread/lockable_concepts.hpp [3:4]
+ boost/thread/thread_pool.hpp [3:4]
+ boost/thread/user_scheduler.hpp [3:4]
+ boost/thread/xtime.hpp [5:6]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/dont_start.hpp [3:4]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/laps_stopwatch.hpp [4:5]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/simple_stopwatch.hpp [4:5]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/stopwatch.hpp [4:5]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/stopwatch_scoped.hpp [3:4]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/strict_stopwatch.hpp [4:5]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/suspendable_stopwatch.hpp [3:4]
+ libs/system/src/error_code.cpp [5:6]
+ libs/thread/src/pthread/once.cpp [3:4]
+ libs/thread/src/pthread/once_atomic.cpp [4:5]
+ libs/thread/src/pthread/thread.cpp [6:7]
+ libs/timer/src/cpu_timer.cpp [5:6]
+
+KEEP BSL-1.0 d805a275e860e62f7f327b1245d5a0cc
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/function/function_fwd.hpp at line 6, boost/function/function_typeof.hpp at line 6
+ License text:
+ // Use, modification and distribution is subject to the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/function/function_fwd.hpp [4:6]
+ boost/function/function_typeof.hpp [4:6]
+
+KEEP BSL-1.0 d926734e1804ae63ec294903c1492c12
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/utility/detail/result_of_iterate.hpp at line 5, boost/utility/result_of.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/utility/detail/result_of_iterate.hpp [3:6]
+ boost/utility/result_of.hpp [3:6]
+
+KEEP Zlib d9ef8ba02957d17a494a01d92326a8f3
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: Zlib
+ Score : 99.24
+ Match type : TEXT
+ Links : http://www.gzip.org/zlib/zlib_license.html, http://www.zlib.net/, https://spdx.org/licenses/Zlib
+ Files with this license:
+ boost/archive/impl/basic_xml_grammar.hpp [29:46]
+
+KEEP BSL-1.0 da2a87ccf5ae416e33c8d6bfe78baa14
+BELONGS libs/chrono/ya.make libs/filesystem/ya.make ya.make
+ License text:
+ // Distributed under the Boost Software License, Version 1.0.
+ // See http://www.boost.org/LICENSE_1_0.txt
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/chrono/chrono.hpp [5:6]
+ boost/chrono/detail/inlined/chrono.hpp [6:7]
+ boost/chrono/detail/inlined/mac/chrono.hpp [6:7]
+ boost/chrono/detail/inlined/mac/process_cpu_clocks.hpp [6:7]
+ boost/chrono/detail/inlined/mac/thread_clock.hpp [7:8]
+ boost/chrono/detail/inlined/posix/chrono.hpp [6:7]
+ boost/chrono/detail/inlined/posix/process_cpu_clocks.hpp [6:7]
+ boost/chrono/detail/inlined/posix/thread_clock.hpp [6:7]
+ boost/chrono/detail/inlined/process_cpu_clocks.hpp [5:6]
+ boost/chrono/detail/inlined/thread_clock.hpp [5:6]
+ boost/chrono/detail/inlined/win/chrono.hpp [6:7]
+ boost/chrono/detail/inlined/win/process_cpu_clocks.hpp [7:8]
+ boost/chrono/detail/inlined/win/thread_clock.hpp [5:6]
+ boost/chrono/detail/is_evenly_divisible_by.hpp [5:6]
+ boost/chrono/detail/no_warning/signed_unsigned_cmp.hpp [5:6]
+ boost/chrono/detail/scan_keyword.hpp [14:15]
+ boost/chrono/detail/static_assert.hpp [5:6]
+ boost/chrono/detail/system.hpp [3:4]
+ boost/chrono/duration.hpp [7:8]
+ boost/chrono/process_cpu_clocks.hpp [6:7]
+ boost/chrono/system_clocks.hpp [7:8]
+ boost/chrono/thread_clock.hpp [5:6]
+ boost/chrono/time_point.hpp [7:8]
+ boost/core/scoped_enum.hpp [7:8]
+ boost/core/underlying_type.hpp [8:9]
+ boost/cxx11_char_types.hpp [5:6]
+ boost/detail/lightweight_main.hpp [5:6]
+ boost/detail/lightweight_test_report.hpp [5:6]
+ boost/dll/detail/demangling/demangle_symbol.hpp [5:6]
+ boost/endian/arithmetic.hpp [6:7]
+ boost/endian/buffers.hpp [6:7]
+ boost/endian/detail/config.hpp [5:6]
+ boost/endian/detail/disable_warnings.hpp [5:6]
+ boost/endian/detail/disable_warnings_pop.hpp [5:6]
+ boost/endian/detail/lightweight_test.hpp [17:18]
+ boost/endian/endian.hpp [5:6]
+ boost/filesystem.hpp [5:6]
+ boost/filesystem/config.hpp [5:6]
+ boost/filesystem/detail/macro_value.hpp [9:10]
+ boost/filesystem/fstream.hpp [5:6]
+ boost/filesystem/operations.hpp [8:9]
+ boost/filesystem/path.hpp [6:7]
+ boost/filesystem/path_traits.hpp [5:6]
+ boost/filesystem/string_file.hpp [5:6]
+ boost/io/detail/quoted_manip.hpp [5:6]
+ boost/ratio.hpp [5:6]
+ boost/ratio/config.hpp [5:6]
+ boost/ratio/detail/overflow_helpers.hpp [7:8]
+ boost/ratio/include.hpp [5:6]
+ boost/ratio/mpl/arithmetic.hpp [5:6]
+ boost/ratio/mpl/comparison.hpp [5:6]
+ boost/ratio/mpl/rational_constant.hpp [3:4]
+ boost/ratio/ratio.hpp [7:8]
+ boost/ratio/ratio_fwd.hpp [7:8]
+ boost/spirit/home/support/detail/endian/endian.hpp [6:7]
+ boost/system/api_config.hpp [5:6]
+ boost/system/detail/local_free_on_destruction.hpp [6:7]
+ boost/timer/config.hpp [5:6]
+ boost/timer/timer.hpp [5:6]
+ boost/type_traits/add_lvalue_reference.hpp [3:4]
+ boost/type_traits/add_rvalue_reference.hpp [5:6]
+ boost/type_traits/declval.hpp [5:6]
+ boost/utility/declval.hpp [5:6]
+ libs/chrono/src/chrono.cpp [6:7]
+ libs/chrono/src/process_cpu_clocks.cpp [5:6]
+ libs/chrono/src/thread_clock.cpp [5:6]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/formatters/accumulator_set_formatter.hpp [3:4]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/formatters/base_formatter.hpp [3:4]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/formatters/elapsed_formatter.hpp [3:4]
+ libs/chrono/stopwatches/include/boost/chrono/stopwatches/formatters/times_formatter.hpp [3:4]
+ libs/filesystem/src/operations.cpp [6:7]
+ libs/filesystem/src/path.cpp [5:6]
+ libs/filesystem/src/path_traits.cpp [5:6]
+ libs/filesystem/src/unique_path.cpp [5:6]
+ libs/filesystem/src/windows_file_codecvt.cpp [5:6]
+ libs/filesystem/src/windows_file_codecvt.hpp [5:6]
+
+KEEP BSL-1.0 db63392c774d3d4c1bd5d57fe2eb26f2
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multi_array.hpp at line 4, boost/multi_array/algorithm.hpp at line 33, boost/multi_array/base.hpp at line 4, boost/multi_array/collection_concept.hpp at line 4, boost/multi_array/concept_checks.hpp at line 4, boost/multi_array/copy_array.hpp at line 4, boost/multi_array/extent_gen.hpp at line 4, boost/multi_array/extent_range.hpp at line 4, boost/multi_array/index_gen.hpp at line 4, boost/multi_array/index_range.hpp at line 4, boost/multi_array/iterator.hpp at line 4, boost/multi_array/multi_array_ref.hpp at line 4, boost/multi_array/range_list.hpp at line 4, boost/multi_array/storage_order.hpp at line 4, boost/multi_array/subarray.hpp at line 4, boost/multi_array/types.hpp at line 4, boost/multi_array/view.hpp at line 4, boost/phoenix/stl/algorithm/detail/decay_array.hpp at line 5, boost/phoenix/stl/algorithm/iteration.hpp at line 6
+ License text:
// Use, modification and distribution is subject to the Boost Software
- // License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 53.12
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/typeof/decltype.hpp [3:4]
- boost/typeof/dmc/typeof_impl.hpp [3:4]
- boost/typeof/incr_registration_group.hpp [2:3]
- boost/typeof/int_encoding.hpp [2:3]
- boost/typeof/message.hpp [2:3]
- boost/typeof/msvc/typeof_impl.hpp [6:7]
- boost/typeof/native.hpp [2:3]
- boost/typeof/pointers_data_members.hpp [2:3]
- boost/typeof/register_functions.hpp [2:3]
- boost/typeof/register_fundamental.hpp [3:4]
- boost/typeof/register_mem_functions.hpp [2:3]
- boost/typeof/std/bitset.hpp [2:3]
- boost/typeof/std/complex.hpp [2:3]
- boost/typeof/std/deque.hpp [2:3]
- boost/typeof/std/fstream.hpp [2:3]
- boost/typeof/std/functional.hpp [2:3]
- boost/typeof/std/iostream.hpp [2:3]
- boost/typeof/std/istream.hpp [2:3]
- boost/typeof/std/iterator.hpp [2:3]
- boost/typeof/std/list.hpp [2:3]
- boost/typeof/std/locale.hpp [2:3]
- boost/typeof/std/map.hpp [2:3]
- boost/typeof/std/memory.hpp [2:3]
- boost/typeof/std/ostream.hpp [2:3]
- boost/typeof/std/queue.hpp [2:3]
- boost/typeof/std/set.hpp [2:3]
- boost/typeof/std/sstream.hpp [2:3]
- boost/typeof/std/stack.hpp [2:3]
- boost/typeof/std/streambuf.hpp [2:3]
- boost/typeof/std/string.hpp [2:3]
- boost/typeof/std/utility.hpp [2:3]
- boost/typeof/std/valarray.hpp [2:3]
- boost/typeof/std/vector.hpp [2:3]
- boost/typeof/unsupported.hpp [2:3]
- boost/typeof/vector.hpp [6:7]
-
-KEEP BSL-1.0 fc958ebd9e0749eafd1c497f645bca04
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/detail/make_tuple.hpp at line 4, boost/python/object_call.hpp at line 4
- License text:
- \# // Distributed under the Boost Software License, Version 1.0. (See
- \# // accompanying file LICENSE_1_0.txt or copy at
- \# // http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/python/detail/make_tuple.hpp [3:5]
- boost/python/object_call.hpp [3:5]
-
-KEEP BSL-1.0 fc9f1903055632f6e8253bf22f3992f0
-BELONGS libs/context/ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: libs/context/src/asm/jump_arm64_aapcs_elf_gas.S at line 4, libs/context/src/asm/jump_arm64_aapcs_macho_gas.S at line 4, libs/context/src/asm/jump_arm_aapcs_elf_gas.S at line 4, libs/context/src/asm/jump_arm_aapcs_macho_gas.S at line 4, libs/context/src/asm/jump_combined_sysv_macho_gas.S at line 4, libs/context/src/asm/jump_i386_sysv_elf_gas.S at line 4, libs/context/src/asm/jump_i386_sysv_macho_gas.S at line 4, libs/context/src/asm/jump_i386_x86_64_sysv_macho_gas.S at line 4, libs/context/src/asm/jump_mips32_o32_elf_gas.S at line 4, libs/context/src/asm/jump_ppc32_ppc64_sysv_macho_gas.S at line 4, libs/context/src/asm/jump_ppc32_sysv_elf_gas.S at line 4, libs/context/src/asm/jump_ppc32_sysv_macho_gas.S at line 4, libs/context/src/asm/jump_ppc32_sysv_xcoff_gas.S at line 4, libs/context/src/asm/jump_ppc64_sysv_elf_gas.S at line 4, libs/context/src/asm/jump_ppc64_sysv_macho_gas.S at line 4, libs/context/src/asm/make_arm64_aapcs_elf_gas.S at line 4, libs/context/src/asm/make_arm64_aapcs_macho_gas.S at line 4, libs/context/src/asm/make_arm_aapcs_elf_gas.S at line 4, libs/context/src/asm/make_arm_aapcs_macho_gas.S at line 4, libs/context/src/asm/make_combined_sysv_macho_gas.S at line 4, libs/context/src/asm/make_i386_sysv_elf_gas.S at line 4, libs/context/src/asm/make_i386_sysv_macho_gas.S at line 4, libs/context/src/asm/make_i386_x86_64_sysv_macho_gas.S at line 4, libs/context/src/asm/make_mips32_o32_elf_gas.S at line 4, libs/context/src/asm/make_ppc32_ppc64_sysv_macho_gas.S at line 4, libs/context/src/asm/make_ppc32_sysv_elf_gas.S at line 4, libs/context/src/asm/make_ppc32_sysv_macho_gas.S at line 4, libs/context/src/asm/make_ppc32_sysv_xcoff_gas.S at line 4, libs/context/src/asm/make_ppc64_sysv_elf_gas.S at line 4, libs/context/src/asm/make_ppc64_sysv_macho_gas.S at line 4, libs/context/src/asm/ontop_arm64_aapcs_elf_gas.S at line 4, libs/context/src/asm/ontop_arm64_aapcs_macho_gas.S at line 4, libs/context/src/asm/ontop_arm_aapcs_elf_gas.S at line 4, libs/context/src/asm/ontop_arm_aapcs_macho_gas.S at line 4, libs/context/src/asm/ontop_combined_sysv_macho_gas.S at line 4, libs/context/src/asm/ontop_i386_sysv_elf_gas.S at line 4, libs/context/src/asm/ontop_i386_sysv_macho_gas.S at line 4, libs/context/src/asm/ontop_i386_x86_64_sysv_macho_gas.S at line 4, libs/context/src/asm/ontop_mips32_o32_elf_gas.S at line 4, libs/context/src/asm/ontop_ppc32_ppc64_sysv_macho_gas.S at line 4, libs/context/src/asm/ontop_ppc32_sysv_elf_gas.S at line 4, libs/context/src/asm/ontop_ppc32_sysv_macho_gas.S at line 4, libs/context/src/asm/ontop_ppc32_sysv_xcoff_gas.S at line 4, libs/context/src/asm/ontop_ppc64_sysv_elf_gas.S at line 4, libs/context/src/asm/ontop_ppc64_sysv_macho_gas.S at line 4
- License text:
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- libs/context/src/asm/jump_arm64_aapcs_elf_gas.S [3:5]
- libs/context/src/asm/jump_arm64_aapcs_macho_gas.S [3:5]
- libs/context/src/asm/jump_arm_aapcs_elf_gas.S [3:5]
- libs/context/src/asm/jump_arm_aapcs_macho_gas.S [3:5]
- libs/context/src/asm/jump_combined_sysv_macho_gas.S [3:5]
- libs/context/src/asm/jump_i386_sysv_elf_gas.S [3:5]
- libs/context/src/asm/jump_i386_sysv_macho_gas.S [3:5]
- libs/context/src/asm/jump_i386_x86_64_sysv_macho_gas.S [3:5]
- libs/context/src/asm/jump_mips32_o32_elf_gas.S [3:5]
- libs/context/src/asm/jump_ppc32_ppc64_sysv_macho_gas.S [3:5]
- libs/context/src/asm/jump_ppc32_sysv_elf_gas.S [3:5]
- libs/context/src/asm/jump_ppc32_sysv_macho_gas.S [3:5]
- libs/context/src/asm/jump_ppc32_sysv_xcoff_gas.S [3:5]
- libs/context/src/asm/jump_ppc64_sysv_elf_gas.S [3:5]
- libs/context/src/asm/jump_ppc64_sysv_macho_gas.S [3:5]
- libs/context/src/asm/make_arm64_aapcs_elf_gas.S [3:5]
- libs/context/src/asm/make_arm64_aapcs_macho_gas.S [3:5]
- libs/context/src/asm/make_arm_aapcs_elf_gas.S [3:5]
- libs/context/src/asm/make_arm_aapcs_macho_gas.S [3:5]
- libs/context/src/asm/make_combined_sysv_macho_gas.S [3:5]
- libs/context/src/asm/make_i386_sysv_elf_gas.S [3:5]
- libs/context/src/asm/make_i386_sysv_macho_gas.S [3:5]
- libs/context/src/asm/make_i386_x86_64_sysv_macho_gas.S [3:5]
- libs/context/src/asm/make_mips32_o32_elf_gas.S [3:5]
- libs/context/src/asm/make_ppc32_ppc64_sysv_macho_gas.S [3:5]
- libs/context/src/asm/make_ppc32_sysv_elf_gas.S [3:5]
- libs/context/src/asm/make_ppc32_sysv_macho_gas.S [3:5]
- libs/context/src/asm/make_ppc32_sysv_xcoff_gas.S [3:5]
- libs/context/src/asm/make_ppc64_sysv_elf_gas.S [3:5]
- libs/context/src/asm/make_ppc64_sysv_macho_gas.S [3:5]
- libs/context/src/asm/ontop_arm64_aapcs_elf_gas.S [3:5]
- libs/context/src/asm/ontop_arm64_aapcs_macho_gas.S [3:5]
- libs/context/src/asm/ontop_arm_aapcs_elf_gas.S [3:5]
- libs/context/src/asm/ontop_arm_aapcs_macho_gas.S [3:5]
- libs/context/src/asm/ontop_combined_sysv_macho_gas.S [3:5]
- libs/context/src/asm/ontop_i386_sysv_elf_gas.S [3:5]
- libs/context/src/asm/ontop_i386_sysv_macho_gas.S [3:5]
- libs/context/src/asm/ontop_i386_x86_64_sysv_macho_gas.S [3:5]
- libs/context/src/asm/ontop_mips32_o32_elf_gas.S [3:5]
- libs/context/src/asm/ontop_ppc32_ppc64_sysv_macho_gas.S [3:5]
- libs/context/src/asm/ontop_ppc32_sysv_elf_gas.S [3:5]
- libs/context/src/asm/ontop_ppc32_sysv_macho_gas.S [3:5]
- libs/context/src/asm/ontop_ppc32_sysv_xcoff_gas.S [3:5]
- libs/context/src/asm/ontop_ppc64_sysv_elf_gas.S [3:5]
- libs/context/src/asm/ontop_ppc64_sysv_macho_gas.S [3:5]
-
-KEEP BSL-1.0 fcbcf40a265cd169c46d2bba83794f5b
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/integer/common_factor.hpp at line 5, boost/integer/common_factor_ct.hpp at line 5, boost/integer/integer_mask.hpp at line 5, boost/integer/static_min_max.hpp at line 5, boost/math/common_factor.hpp at line 5, boost/math/common_factor_ct.hpp at line 5
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/integer/common_factor.hpp [4:8]
- boost/integer/common_factor_ct.hpp [4:8]
- boost/integer/integer_mask.hpp [4:8]
- boost/integer/static_min_max.hpp [4:8]
- boost/math/common_factor.hpp [4:8]
- boost/math/common_factor_ct.hpp [4:8]
-
-KEEP BSL-1.0 fd01eb9a5849508d1c17276e547f8c1b
-BELONGS ya.make
-FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/cpp_bin_float.hpp at line 4, boost/multiprecision/cpp_bin_float/transcendental.hpp at line 4, boost/multiprecision/cpp_int/literals.hpp at line 4, boost/multiprecision/cpp_int/serialize.hpp at line 4, boost/multiprecision/cpp_int/value_pack.hpp at line 4, boost/multiprecision/detail/bitscan.hpp at line 4, boost/multiprecision/detail/float_string_cvt.hpp at line 4
- License text:
- // Copyright 2013 John Maddock. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 92.59
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/multiprecision/cpp_bin_float.hpp [2:4]
- boost/multiprecision/cpp_bin_float/transcendental.hpp [2:4]
- boost/multiprecision/cpp_int/literals.hpp [2:4]
- boost/multiprecision/cpp_int/serialize.hpp [2:4]
- boost/multiprecision/cpp_int/value_pack.hpp [2:4]
- boost/multiprecision/detail/bitscan.hpp [2:4]
- boost/multiprecision/detail/float_string_cvt.hpp [2:4]
-
-SKIP OFL-1.0 AND OFL-1.0 fd4de3c3add0c3a3dba403576cda6f13
-BELONGS ya.make
- License text:
- // Licensed under the Boost Software License version 1.0.
- // http://www.boost.org/users/license.html
- Scancode info:
- Original SPDX id: OFL-1.0
- Score : 17.67
- Match type : NOTICE
- Links : http://scripts.sil.org/cms/scripts/page.php?item_id=OFL10_web, https://scripts.sil.org/cms/scripts/render_download.php?format=file&media_id=OFL10_plaintext&filename=OFL10.txt, https://spdx.org/licenses/OFL-1.0
- Files with this license:
- boost/geometry/algorithms/densify.hpp [7:8]
- boost/geometry/algorithms/detail/closest_feature/geometry_to_range.hpp [7:8]
- boost/geometry/algorithms/detail/closest_feature/point_to_range.hpp [7:8]
- boost/geometry/algorithms/detail/closest_feature/range_to_range.hpp [7:8]
- boost/geometry/algorithms/detail/disjoint/multirange_geometry.hpp [8:9]
- boost/geometry/algorithms/detail/distance/box_to_box.hpp [7:8]
- boost/geometry/algorithms/detail/distance/geometry_to_segment_or_box.hpp [7:8]
- boost/geometry/algorithms/detail/distance/iterator_selector.hpp [7:8]
- boost/geometry/algorithms/detail/distance/linear_or_areal_to_areal.hpp [7:8]
- boost/geometry/algorithms/detail/distance/linear_to_linear.hpp [7:8]
- boost/geometry/algorithms/detail/distance/multipoint_to_geometry.hpp [7:8]
- boost/geometry/algorithms/detail/distance/range_to_geometry_rtree.hpp [7:8]
- boost/geometry/algorithms/detail/distance/segment_to_segment.hpp [7:8]
- boost/geometry/algorithms/detail/normalize.hpp [8:9]
- boost/geometry/algorithms/detail/num_distinct_consecutive_points.hpp [7:8]
- boost/geometry/algorithms/detail/overlay/follow_linear_linear.hpp [10:11]
- boost/geometry/algorithms/detail/overlay/inconsistent_turns_exception.hpp [5:6]
- boost/geometry/algorithms/detail/overlay/linear_linear.hpp [5:6]
- boost/geometry/algorithms/detail/overlay/pointlike_linear.hpp [10:11]
- boost/geometry/algorithms/detail/overlay/pointlike_pointlike.hpp [8:9]
- boost/geometry/algorithms/detail/sweep.hpp [7:8]
- boost/geometry/algorithms/detail/turns/compare_turns.hpp [5:6]
- boost/geometry/iterators/detail/point_iterator/iterator_type.hpp [7:8]
- boost/geometry/iterators/detail/segment_iterator/iterator_type.hpp [7:8]
- boost/geometry/iterators/dispatch/point_iterator.hpp [7:8]
- boost/geometry/iterators/dispatch/segment_iterator.hpp [7:8]
- boost/geometry/iterators/has_one_element.hpp [7:8]
- boost/geometry/policies/is_valid/failing_reason_policy.hpp [8:9]
- boost/geometry/policies/is_valid/failure_type_policy.hpp [7:8]
- boost/geometry/policies/predicate_based_interrupt_policy.hpp [7:8]
- boost/geometry/strategies/cartesian/densify.hpp [7:8]
- boost/geometry/strategies/spherical/densify.hpp [7:8]
- boost/geometry/util/normalize_spheroidal_box_coordinates.hpp [8:9]
- boost/geometry/util/normalize_spheroidal_coordinates.hpp [10:11]
- boost/geometry/views/detail/boundary_view.hpp [7:8]
- boost/geometry/views/detail/boundary_view/implementation.hpp [7:8]
- boost/geometry/views/detail/boundary_view/interface.hpp [7:8]
- Scancode info:
- Original SPDX id: OFL-1.0
- Score : 18.60
- Match type : NOTICE
- Links : http://scripts.sil.org/cms/scripts/page.php?item_id=OFL10_web, https://scripts.sil.org/cms/scripts/render_download.php?format=file&media_id=OFL10_plaintext&filename=OFL10.txt, https://spdx.org/licenses/OFL-1.0
- Files with this license:
- boost/geometry/algorithms/detail/max_interval_gap.hpp [7:8]
- boost/geometry/algorithms/detail/turns/debug_turn.hpp [5:6]
- boost/geometry/algorithms/detail/turns/filter_continue_turns.hpp [5:6]
- boost/geometry/algorithms/detail/turns/print_turns.hpp [5:6]
- boost/geometry/algorithms/detail/turns/remove_duplicate_turns.hpp [5:6]
-
-KEEP BSL-1.0 fd7de4e3b7045682df9b61ed7cb1f99d
-BELONGS ya.make
- License text:
- // http://www.boost.org/LICENSE_1_0.txt
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 44.00
- Match type : REFERENCE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/endian/std_pair.hpp [6:6]
-
-KEEP BSL-1.0 fdd2dd3e25498c4dda5bc3412ed28bb9
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 40.62
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/spirit/home/lex/lexer/lexertl/generate_static.hpp [893:896]
-
-KEEP BSL-1.0 fe371f5eab8bfd96a6b2bcb62751072f
-BELONGS ya.make
- License text:
- // (C) Copyright Howard Hinnant 2007-2010. Distributed under the Boost
- // Software License, Version 1.0. (see http://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- boost/interprocess/sync/interprocess_sharable_mutex.hpp [4:5]
-
-KEEP Zlib feac64119d30e7019060ba88ec6d5f1a
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: Zlib
- Score : 100.00
- Match type : TEXT
- Links : http://www.gzip.org/zlib/zlib_license.html, http://www.zlib.net/, https://spdx.org/licenses/Zlib
- Files with this license:
- boost/move/algo/detail/pdqsort.hpp [25:34]
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/multi_array.hpp [3:5]
+ boost/multi_array/algorithm.hpp [32:34]
+ boost/multi_array/base.hpp [3:5]
+ boost/multi_array/collection_concept.hpp [3:5]
+ boost/multi_array/concept_checks.hpp [3:5]
+ boost/multi_array/copy_array.hpp [3:5]
+ boost/multi_array/extent_gen.hpp [3:5]
+ boost/multi_array/extent_range.hpp [3:5]
+ boost/multi_array/index_gen.hpp [3:5]
+ boost/multi_array/index_range.hpp [3:5]
+ boost/multi_array/iterator.hpp [3:5]
+ boost/multi_array/multi_array_ref.hpp [3:5]
+ boost/multi_array/range_list.hpp [3:5]
+ boost/multi_array/storage_order.hpp [3:5]
+ boost/multi_array/subarray.hpp [3:5]
+ boost/multi_array/types.hpp [3:5]
+ boost/multi_array/view.hpp [3:5]
+ boost/phoenix/stl/algorithm/detail/decay_array.hpp [4:6]
+ boost/phoenix/stl/algorithm/iteration.hpp [5:7]
+
+KEEP BSL-1.0 dbb5e9f500df89fb594d4004510207dd
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/mp11/mpl.hpp at line 8
+ License text:
+ // Distributed under the Boost Software License, Version 1.0.
+ //
+ // See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/mp11/mpl.hpp [6:9]
+
+KEEP BSL-1.0 dd654fb37bcdf81209c428bf00444ddb
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/fusion/adapted/array.hpp at line 7, boost/fusion/adapted/array/at_impl.hpp at line 5, boost/fusion/adapted/array/begin_impl.hpp at line 5, boost/fusion/adapted/array/category_of_impl.hpp at line 5, boost/fusion/adapted/array/end_impl.hpp at line 5, boost/fusion/adapted/array/is_sequence_impl.hpp at line 5, boost/fusion/adapted/array/is_view_impl.hpp at line 5, boost/fusion/adapted/array/tag_of.hpp at line 5, boost/fusion/adapted/array/value_at_impl.hpp at line 5, boost/fusion/adapted/boost_array.hpp at line 6, boost/fusion/adapted/boost_array/array_iterator.hpp at line 6, boost/fusion/adapted/boost_array/detail/at_impl.hpp at line 6, boost/fusion/adapted/boost_array/detail/begin_impl.hpp at line 6, boost/fusion/adapted/boost_array/detail/category_of_impl.hpp at line 6, boost/fusion/adapted/boost_array/detail/end_impl.hpp at line 6, boost/fusion/adapted/boost_array/detail/is_sequence_impl.hpp at line 6, boost/fusion/adapted/boost_array/detail/is_view_impl.hpp at line 6, boost/fusion/adapted/boost_array/detail/size_impl.hpp at line 6, boost/fusion/adapted/boost_array/detail/value_at_impl.hpp at line 6, boost/fusion/adapted/boost_array/tag_of.hpp at line 6, boost/fusion/adapted/boost_tuple.hpp at line 5, boost/fusion/adapted/boost_tuple/detail/at_impl.hpp at line 5, boost/fusion/adapted/boost_tuple/detail/begin_impl.hpp at line 5, boost/fusion/adapted/boost_tuple/detail/category_of_impl.hpp at line 5, boost/fusion/adapted/boost_tuple/detail/end_impl.hpp at line 5, boost/fusion/adapted/boost_tuple/detail/is_sequence_impl.hpp at line 5, boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp at line 5, boost/fusion/adapted/boost_tuple/detail/size_impl.hpp at line 5, boost/fusion/adapted/boost_tuple/detail/value_at_impl.hpp at line 5, boost/fusion/adapted/boost_tuple/tag_of.hpp at line 5, boost/fusion/adapted/mpl/detail/at_impl.hpp at line 6, boost/fusion/adapted/mpl/detail/begin_impl.hpp at line 6, boost/fusion/adapted/mpl/detail/category_of_impl.hpp at line 6, boost/fusion/adapted/mpl/detail/end_impl.hpp at line 6, boost/fusion/adapted/mpl/detail/has_key_impl.hpp at line 6, boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp at line 6, boost/fusion/adapted/mpl/detail/is_view_impl.hpp at line 6, boost/fusion/adapted/mpl/detail/size_impl.hpp at line 6, boost/fusion/adapted/mpl/detail/value_at_impl.hpp at line 6, boost/fusion/adapted/mpl/mpl_iterator.hpp at line 5, boost/fusion/adapted/std_array.hpp at line 7, boost/fusion/adapted/std_array/detail/array_size.hpp at line 5, boost/fusion/adapted/std_array/detail/at_impl.hpp at line 6, boost/fusion/adapted/std_array/detail/begin_impl.hpp at line 7, boost/fusion/adapted/std_array/detail/category_of_impl.hpp at line 6, boost/fusion/adapted/std_array/detail/end_impl.hpp at line 7, boost/fusion/adapted/std_array/detail/is_sequence_impl.hpp at line 7, boost/fusion/adapted/std_array/detail/is_view_impl.hpp at line 7, boost/fusion/adapted/std_array/detail/size_impl.hpp at line 7, boost/fusion/adapted/std_array/detail/value_at_impl.hpp at line 6, boost/fusion/adapted/std_array/std_array_iterator.hpp at line 7, boost/fusion/adapted/std_array/tag_of.hpp at line 6, boost/fusion/algorithm.hpp at line 5, boost/fusion/algorithm/iteration.hpp at line 5, boost/fusion/algorithm/iteration/accumulate.hpp at line 6, boost/fusion/algorithm/iteration/accumulate_fwd.hpp at line 6, boost/fusion/algorithm/iteration/detail/for_each.hpp at line 5, boost/fusion/algorithm/iteration/detail/segmented_fold.hpp at line 5, boost/fusion/algorithm/iteration/detail/segmented_for_each.hpp at line 5, boost/fusion/algorithm/iteration/for_each.hpp at line 6, boost/fusion/algorithm/iteration/for_each_fwd.hpp at line 5, boost/fusion/algorithm/query.hpp at line 5, boost/fusion/algorithm/query/all.hpp at line 6, boost/fusion/algorithm/query/any.hpp at line 7, boost/fusion/algorithm/query/count.hpp at line 6, boost/fusion/algorithm/query/count_if.hpp at line 6, boost/fusion/algorithm/query/detail/all.hpp at line 6, boost/fusion/algorithm/query/detail/any.hpp at line 7, boost/fusion/algorithm/query/detail/count.hpp at line 5, boost/fusion/algorithm/query/detail/count_if.hpp at line 6, boost/fusion/algorithm/query/detail/find_if.hpp at line 7, boost/fusion/algorithm/query/detail/segmented_find.hpp at line 5, boost/fusion/algorithm/query/detail/segmented_find_if.hpp at line 5, boost/fusion/algorithm/query/find.hpp at line 6, boost/fusion/algorithm/query/find_fwd.hpp at line 5, boost/fusion/algorithm/query/find_if.hpp at line 6, boost/fusion/algorithm/query/find_if_fwd.hpp at line 5, boost/fusion/algorithm/query/none.hpp at line 6, boost/fusion/algorithm/transformation.hpp at line 5, boost/fusion/algorithm/transformation/clear.hpp at line 5, boost/fusion/algorithm/transformation/detail/replace.hpp at line 5, boost/fusion/algorithm/transformation/detail/replace_if.hpp at line 5, boost/fusion/algorithm/transformation/erase_key.hpp at line 5, boost/fusion/algorithm/transformation/filter.hpp at line 6, boost/fusion/algorithm/transformation/filter_if.hpp at line 5, boost/fusion/algorithm/transformation/join.hpp at line 6, boost/fusion/algorithm/transformation/pop_front.hpp at line 5, boost/fusion/algorithm/transformation/push_back.hpp at line 5, boost/fusion/algorithm/transformation/push_front.hpp at line 5, boost/fusion/algorithm/transformation/remove.hpp at line 5, boost/fusion/algorithm/transformation/remove_if.hpp at line 5, boost/fusion/algorithm/transformation/replace.hpp at line 5, boost/fusion/algorithm/transformation/replace_if.hpp at line 5, boost/fusion/algorithm/transformation/reverse.hpp at line 5, boost/fusion/algorithm/transformation/transform.hpp at line 5, boost/fusion/container/generation/cons_tie.hpp at line 5, boost/fusion/container/generation/ignore.hpp at line 7, boost/fusion/container/generation/make_cons.hpp at line 6, boost/fusion/container/generation/pair_tie.hpp at line 6, boost/fusion/container/list/cons.hpp at line 6, boost/fusion/container/list/cons_iterator.hpp at line 6, boost/fusion/container/list/detail/begin_impl.hpp at line 6, boost/fusion/container/list/detail/build_cons.hpp at line 5, boost/fusion/container/list/detail/cpp03/list_forward_ctor.hpp at line 5, boost/fusion/container/list/detail/cpp03/list_to_cons_call.hpp at line 5, boost/fusion/container/list/detail/deref_impl.hpp at line 6, boost/fusion/container/list/detail/empty_impl.hpp at line 5, boost/fusion/container/list/detail/end_impl.hpp at line 6, boost/fusion/container/list/detail/equal_to_impl.hpp at line 5, boost/fusion/container/list/detail/next_impl.hpp at line 6, boost/fusion/container/list/detail/value_at_impl.hpp at line 5, boost/fusion/container/list/detail/value_of_impl.hpp at line 6, boost/fusion/container/list/nil.hpp at line 6, boost/fusion/container/map/detail/cpp03/at_impl.hpp at line 6, boost/fusion/container/map/detail/cpp03/map_forward_ctor.hpp at line 5, boost/fusion/container/map/detail/cpp03/value_at_impl.hpp at line 6, boost/fusion/container/set/detail/cpp03/set_forward_ctor.hpp at line 5, boost/fusion/container/vector/detail/advance_impl.hpp at line 5, boost/fusion/container/vector/detail/begin_impl.hpp at line 5, boost/fusion/container/vector/detail/deref_impl.hpp at line 5, boost/fusion/container/vector/detail/distance_impl.hpp at line 5, boost/fusion/container/vector/detail/end_impl.hpp at line 5, boost/fusion/container/vector/detail/equal_to_impl.hpp at line 5, boost/fusion/container/vector/detail/next_impl.hpp at line 5, boost/fusion/container/vector/detail/prior_impl.hpp at line 5, boost/fusion/container/vector/detail/value_of_impl.hpp at line 5, boost/fusion/container/vector/vector_iterator.hpp at line 5, boost/fusion/include/as_vector.hpp at line 5, boost/fusion/include/at.hpp at line 5, boost/fusion/include/io.hpp at line 5, boost/fusion/include/is_sequence.hpp at line 5, boost/fusion/include/join.hpp at line 5, boost/fusion/include/joint_view.hpp at line 5, boost/fusion/include/push_front.hpp at line 5, boost/fusion/include/single_view.hpp at line 5, boost/fusion/include/transform.hpp at line 5, boost/fusion/include/transform_view.hpp at line 5, boost/fusion/include/value_at.hpp at line 5, boost/fusion/iterator/deref.hpp at line 5, boost/fusion/iterator/detail/adapt_deref_traits.hpp at line 5, boost/fusion/iterator/detail/adapt_value_traits.hpp at line 5, boost/fusion/iterator/detail/advance.hpp at line 5, boost/fusion/iterator/detail/distance.hpp at line 5, boost/fusion/iterator/distance.hpp at line 5, boost/fusion/iterator/mpl.hpp at line 5, boost/fusion/iterator/mpl/fusion_iterator.hpp at line 5, boost/fusion/iterator/next.hpp at line 5, boost/fusion/iterator/prior.hpp at line 5, boost/fusion/iterator/value_of.hpp at line 5, boost/fusion/mpl/at.hpp at line 5, boost/fusion/mpl/back.hpp at line 5, boost/fusion/mpl/begin.hpp at line 5, boost/fusion/mpl/clear.hpp at line 5, boost/fusion/mpl/detail/clear.hpp at line 5, boost/fusion/mpl/empty.hpp at line 5, boost/fusion/mpl/end.hpp at line 5, boost/fusion/mpl/front.hpp at line 5, boost/fusion/mpl/has_key.hpp at line 5, boost/fusion/mpl/size.hpp at line 5, boost/fusion/sequence/comparison.hpp at line 5, boost/fusion/sequence/comparison/detail/equal_to.hpp at line 6, boost/fusion/sequence/comparison/detail/greater.hpp at line 6, boost/fusion/sequence/comparison/detail/greater_equal.hpp at line 6, boost/fusion/sequence/comparison/detail/less.hpp at line 6, boost/fusion/sequence/comparison/detail/less_equal.hpp at line 6, boost/fusion/sequence/comparison/detail/not_equal_to.hpp at line 6, boost/fusion/sequence/intrinsic/at_key.hpp at line 6, boost/fusion/sequence/intrinsic/back.hpp at line 5, boost/fusion/sequence/intrinsic/begin.hpp at line 5, boost/fusion/sequence/intrinsic/detail/segmented_size.hpp at line 5, boost/fusion/sequence/intrinsic/empty.hpp at line 5, boost/fusion/sequence/intrinsic/end.hpp at line 5, boost/fusion/sequence/intrinsic/front.hpp at line 5, boost/fusion/sequence/intrinsic/has_key.hpp at line 5, boost/fusion/sequence/intrinsic/segments.hpp at line 5, boost/fusion/sequence/intrinsic/size.hpp at line 5, boost/fusion/sequence/intrinsic/swap.hpp at line 6, boost/fusion/sequence/intrinsic/value_at.hpp at line 5, boost/fusion/sequence/intrinsic/value_at_key.hpp at line 6, boost/fusion/sequence/io.hpp at line 5, boost/fusion/sequence/io/detail/in.hpp at line 7, boost/fusion/sequence/io/detail/manip.hpp at line 7, boost/fusion/sequence/io/detail/out.hpp at line 7, boost/fusion/sequence/io/out.hpp at line 7, boost/fusion/support/category_of.hpp at line 5, boost/fusion/support/detail/as_fusion_element.hpp at line 6, boost/fusion/support/detail/category_of.hpp at line 5, boost/fusion/support/detail/is_mpl_sequence.hpp at line 6, boost/fusion/support/detail/is_view.hpp at line 5, boost/fusion/support/detail/mpl_iterator_category.hpp at line 5, boost/fusion/support/detail/unknown_key.hpp at line 5, boost/fusion/support/is_iterator.hpp at line 5, boost/fusion/support/is_segmented.hpp at line 5, boost/fusion/support/is_view.hpp at line 5, boost/fusion/tuple.hpp at line 5, boost/fusion/view.hpp at line 5, boost/fusion/view/filter_view.hpp at line 5, boost/fusion/view/filter_view/detail/begin_impl.hpp at line 5, boost/fusion/view/filter_view/detail/deref_impl.hpp at line 5, boost/fusion/view/filter_view/detail/end_impl.hpp at line 5, boost/fusion/view/filter_view/detail/equal_to_impl.hpp at line 6, boost/fusion/view/filter_view/detail/next_impl.hpp at line 5, boost/fusion/view/filter_view/detail/size_impl.hpp at line 5, boost/fusion/view/filter_view/detail/value_of_impl.hpp at line 5, boost/fusion/view/filter_view/filter_view.hpp at line 5, boost/fusion/view/iterator_range.hpp at line 5, boost/fusion/view/iterator_range/detail/begin_impl.hpp at line 5, boost/fusion/view/iterator_range/detail/end_impl.hpp at line 5, boost/fusion/view/iterator_range/detail/is_segmented_impl.hpp at line 5, boost/fusion/view/iterator_range/detail/segments_impl.hpp at line 5, boost/fusion/view/joint_view.hpp at line 5, boost/fusion/view/joint_view/detail/begin_impl.hpp at line 5, boost/fusion/view/joint_view/detail/deref_impl.hpp at line 5, boost/fusion/view/joint_view/detail/end_impl.hpp at line 5, boost/fusion/view/joint_view/detail/next_impl.hpp at line 5, boost/fusion/view/joint_view/detail/value_of_impl.hpp at line 5, boost/fusion/view/nview.hpp at line 7, boost/fusion/view/nview/detail/at_impl.hpp at line 5, boost/fusion/view/nview/detail/size_impl.hpp at line 5, boost/fusion/view/nview/detail/value_at_impl.hpp at line 5, boost/fusion/view/nview/nview.hpp at line 5, boost/fusion/view/nview/nview_iterator.hpp at line 5, boost/fusion/view/reverse_view.hpp at line 5, boost/fusion/view/reverse_view/detail/advance_impl.hpp at line 6, boost/fusion/view/reverse_view/detail/begin_impl.hpp at line 5, boost/fusion/view/reverse_view/detail/deref_impl.hpp at line 5, boost/fusion/view/reverse_view/detail/distance_impl.hpp at line 6, boost/fusion/view/reverse_view/detail/end_impl.hpp at line 5, boost/fusion/view/reverse_view/detail/next_impl.hpp at line 5, boost/fusion/view/reverse_view/detail/prior_impl.hpp at line 5, boost/fusion/view/reverse_view/detail/value_of_impl.hpp at line 5, boost/fusion/view/reverse_view/reverse_view.hpp at line 5, boost/fusion/view/single_view.hpp at line 5, boost/fusion/view/single_view/detail/advance_impl.hpp at line 5, boost/fusion/view/single_view/detail/at_impl.hpp at line 5, boost/fusion/view/single_view/detail/begin_impl.hpp at line 6, boost/fusion/view/single_view/detail/deref_impl.hpp at line 6, boost/fusion/view/single_view/detail/end_impl.hpp at line 6, boost/fusion/view/single_view/detail/size_impl.hpp at line 5, boost/fusion/view/single_view/detail/value_at_impl.hpp at line 5, boost/fusion/view/single_view/detail/value_of_impl.hpp at line 6, boost/fusion/view/single_view/single_view.hpp at line 6, boost/fusion/view/single_view/single_view_iterator.hpp at line 6, boost/fusion/view/transform_view.hpp at line 5, boost/fusion/view/transform_view/detail/advance_impl.hpp at line 6, boost/fusion/view/transform_view/detail/apply_transform_result.hpp at line 6, boost/fusion/view/transform_view/detail/at_impl.hpp at line 6, boost/fusion/view/transform_view/detail/begin_impl.hpp at line 5, boost/fusion/view/transform_view/detail/deref_impl.hpp at line 5, boost/fusion/view/transform_view/detail/distance_impl.hpp at line 6, boost/fusion/view/transform_view/detail/end_impl.hpp at line 5, boost/fusion/view/transform_view/detail/equal_to_impl.hpp at line 5, boost/fusion/view/transform_view/detail/next_impl.hpp at line 5, boost/fusion/view/transform_view/detail/prior_impl.hpp at line 6, boost/fusion/view/transform_view/detail/value_of_impl.hpp at line 5, boost/fusion/view/transform_view/transform_view.hpp at line 5, boost/fusion/view/transform_view/transform_view_fwd.hpp at line 5, boost/fusion/view/zip_view.hpp at line 6, boost/fusion/view/zip_view/detail/advance_impl.hpp at line 6, boost/fusion/view/zip_view/detail/at_impl.hpp at line 6, boost/fusion/view/zip_view/detail/begin_impl.hpp at line 6, boost/fusion/view/zip_view/detail/deref_impl.hpp at line 6, boost/fusion/view/zip_view/detail/distance_impl.hpp at line 6, boost/fusion/view/zip_view/detail/end_impl.hpp at line 6, boost/fusion/view/zip_view/detail/equal_to_impl.hpp at line 6, boost/fusion/view/zip_view/detail/next_impl.hpp at line 6, boost/fusion/view/zip_view/detail/prior_impl.hpp at line 6, boost/fusion/view/zip_view/detail/size_impl.hpp at line 6, boost/fusion/view/zip_view/detail/value_at_impl.hpp at line 6, boost/fusion/view/zip_view/zip_view.hpp at line 6, boost/fusion/view/zip_view/zip_view_iterator.hpp at line 6, boost/fusion/view/zip_view/zip_view_iterator_fwd.hpp at line 6, boost/phoenix/bind/detail/cpp03/bind_function.hpp at line 5, boost/phoenix/bind/detail/cpp03/bind_function.hpp at line 57, boost/phoenix/bind/detail/cpp03/bind_function_object.hpp at line 34, boost/phoenix/bind/detail/cpp03/bind_function_object.hpp at line 5, boost/phoenix/bind/detail/cpp03/bind_member_function.hpp at line 109, boost/phoenix/bind/detail/cpp03/function_ptr.hpp at line 5, boost/phoenix/bind/detail/cpp03/function_ptr.hpp at line 98, boost/phoenix/bind/detail/cpp03/member_function_ptr.hpp at line 87, boost/phoenix/bind/detail/cpp03/preprocessed/bind_function.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_10.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_10.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_10.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_20.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_30.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_40.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_50.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_10.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr.hpp at line 5, boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_10.hpp at line 5, boost/phoenix/core/as_actor.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/argument.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/function_equal.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/function_eval.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr.hpp at line 5, boost/phoenix/core/detail/cpp03/preprocessed/phx2_result.hpp at line 5, boost/phoenix/core/detail/expression.hpp at line 5, boost/phoenix/core/domain.hpp at line 6, boost/phoenix/core/expression.hpp at line 5, boost/phoenix/core/is_nullary.hpp at line 7, boost/phoenix/core/limits.hpp at line 5, boost/phoenix/core/meta_grammar.hpp at line 7, boost/phoenix/core/v2_eval.hpp at line 5, boost/phoenix/scope/detail/cpp03/preprocessed/lambda.hpp at line 5, boost/phoenix/scope/this.hpp at line 6, boost/phoenix/stl.hpp at line 7, boost/phoenix/stl/algorithm.hpp at line 8, boost/phoenix/stl/container.hpp at line 6, boost/phoenix/stl/container/detail/container.hpp at line 6, boost/phoenix/support/preprocessed/vector.hpp at line 5, boost/phoenix/support/preprocessor/round.hpp at line 5, boost/spirit/home/qi/action.hpp at line 5, boost/spirit/home/qi/char.hpp at line 5
+ License text:
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/fusion/adapted/array.hpp [6:7]
+ boost/fusion/adapted/array/at_impl.hpp [4:5]
+ boost/fusion/adapted/array/begin_impl.hpp [4:5]
+ boost/fusion/adapted/array/category_of_impl.hpp [4:5]
+ boost/fusion/adapted/array/end_impl.hpp [4:5]
+ boost/fusion/adapted/array/is_sequence_impl.hpp [4:5]
+ boost/fusion/adapted/array/is_view_impl.hpp [4:5]
+ boost/fusion/adapted/array/tag_of.hpp [4:5]
+ boost/fusion/adapted/array/value_at_impl.hpp [4:5]
+ boost/fusion/adapted/boost_array.hpp [5:6]
+ boost/fusion/adapted/boost_array/array_iterator.hpp [5:6]
+ boost/fusion/adapted/boost_array/detail/at_impl.hpp [5:6]
+ boost/fusion/adapted/boost_array/detail/begin_impl.hpp [5:6]
+ boost/fusion/adapted/boost_array/detail/category_of_impl.hpp [5:6]
+ boost/fusion/adapted/boost_array/detail/end_impl.hpp [5:6]
+ boost/fusion/adapted/boost_array/detail/is_sequence_impl.hpp [5:6]
+ boost/fusion/adapted/boost_array/detail/is_view_impl.hpp [5:6]
+ boost/fusion/adapted/boost_array/detail/size_impl.hpp [5:6]
+ boost/fusion/adapted/boost_array/detail/value_at_impl.hpp [5:6]
+ boost/fusion/adapted/boost_array/tag_of.hpp [5:6]
+ boost/fusion/adapted/boost_tuple.hpp [4:5]
+ boost/fusion/adapted/boost_tuple/detail/at_impl.hpp [4:5]
+ boost/fusion/adapted/boost_tuple/detail/begin_impl.hpp [4:5]
+ boost/fusion/adapted/boost_tuple/detail/category_of_impl.hpp [4:5]
+ boost/fusion/adapted/boost_tuple/detail/end_impl.hpp [4:5]
+ boost/fusion/adapted/boost_tuple/detail/is_sequence_impl.hpp [4:5]
+ boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp [4:5]
+ boost/fusion/adapted/boost_tuple/detail/size_impl.hpp [4:5]
+ boost/fusion/adapted/boost_tuple/detail/value_at_impl.hpp [4:5]
+ boost/fusion/adapted/boost_tuple/tag_of.hpp [4:5]
+ boost/fusion/adapted/mpl/detail/at_impl.hpp [5:6]
+ boost/fusion/adapted/mpl/detail/begin_impl.hpp [5:6]
+ boost/fusion/adapted/mpl/detail/category_of_impl.hpp [5:6]
+ boost/fusion/adapted/mpl/detail/end_impl.hpp [5:6]
+ boost/fusion/adapted/mpl/detail/has_key_impl.hpp [5:6]
+ boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp [5:6]
+ boost/fusion/adapted/mpl/detail/is_view_impl.hpp [5:6]
+ boost/fusion/adapted/mpl/detail/size_impl.hpp [5:6]
+ boost/fusion/adapted/mpl/detail/value_at_impl.hpp [5:6]
+ boost/fusion/adapted/mpl/mpl_iterator.hpp [4:5]
+ boost/fusion/adapted/std_array.hpp [6:7]
+ boost/fusion/adapted/std_array/detail/array_size.hpp [4:5]
+ boost/fusion/adapted/std_array/detail/at_impl.hpp [5:6]
+ boost/fusion/adapted/std_array/detail/begin_impl.hpp [6:7]
+ boost/fusion/adapted/std_array/detail/category_of_impl.hpp [5:6]
+ boost/fusion/adapted/std_array/detail/end_impl.hpp [6:7]
+ boost/fusion/adapted/std_array/detail/is_sequence_impl.hpp [6:7]
+ boost/fusion/adapted/std_array/detail/is_view_impl.hpp [6:7]
+ boost/fusion/adapted/std_array/detail/size_impl.hpp [6:7]
+ boost/fusion/adapted/std_array/detail/value_at_impl.hpp [5:6]
+ boost/fusion/adapted/std_array/std_array_iterator.hpp [6:7]
+ boost/fusion/adapted/std_array/tag_of.hpp [5:6]
+ boost/fusion/algorithm.hpp [4:5]
+ boost/fusion/algorithm/iteration.hpp [4:5]
+ boost/fusion/algorithm/iteration/accumulate.hpp [5:6]
+ boost/fusion/algorithm/iteration/accumulate_fwd.hpp [5:6]
+ boost/fusion/algorithm/iteration/detail/for_each.hpp [4:5]
+ boost/fusion/algorithm/iteration/detail/segmented_fold.hpp [4:5]
+ boost/fusion/algorithm/iteration/detail/segmented_for_each.hpp [4:5]
+ boost/fusion/algorithm/iteration/for_each.hpp [5:6]
+ boost/fusion/algorithm/iteration/for_each_fwd.hpp [4:5]
+ boost/fusion/algorithm/query.hpp [4:5]
+ boost/fusion/algorithm/query/all.hpp [5:6]
+ boost/fusion/algorithm/query/any.hpp [6:7]
+ boost/fusion/algorithm/query/count.hpp [5:6]
+ boost/fusion/algorithm/query/count_if.hpp [5:6]
+ boost/fusion/algorithm/query/detail/all.hpp [5:6]
+ boost/fusion/algorithm/query/detail/any.hpp [6:7]
+ boost/fusion/algorithm/query/detail/count.hpp [4:5]
+ boost/fusion/algorithm/query/detail/count_if.hpp [5:6]
+ boost/fusion/algorithm/query/detail/find_if.hpp [6:7]
+ boost/fusion/algorithm/query/detail/segmented_find.hpp [4:5]
+ boost/fusion/algorithm/query/detail/segmented_find_if.hpp [4:5]
+ boost/fusion/algorithm/query/find.hpp [5:6]
+ boost/fusion/algorithm/query/find_fwd.hpp [4:5]
+ boost/fusion/algorithm/query/find_if.hpp [5:6]
+ boost/fusion/algorithm/query/find_if_fwd.hpp [4:5]
+ boost/fusion/algorithm/query/none.hpp [5:6]
+ boost/fusion/algorithm/transformation.hpp [4:5]
+ boost/fusion/algorithm/transformation/clear.hpp [4:5]
+ boost/fusion/algorithm/transformation/detail/replace.hpp [4:5]
+ boost/fusion/algorithm/transformation/detail/replace_if.hpp [4:5]
+ boost/fusion/algorithm/transformation/erase_key.hpp [4:5]
+ boost/fusion/algorithm/transformation/filter.hpp [5:6]
+ boost/fusion/algorithm/transformation/filter_if.hpp [4:5]
+ boost/fusion/algorithm/transformation/join.hpp [5:6]
+ boost/fusion/algorithm/transformation/pop_front.hpp [4:5]
+ boost/fusion/algorithm/transformation/push_back.hpp [4:5]
+ boost/fusion/algorithm/transformation/push_front.hpp [4:5]
+ boost/fusion/algorithm/transformation/remove.hpp [4:5]
+ boost/fusion/algorithm/transformation/remove_if.hpp [4:5]
+ boost/fusion/algorithm/transformation/replace.hpp [4:5]
+ boost/fusion/algorithm/transformation/replace_if.hpp [4:5]
+ boost/fusion/algorithm/transformation/reverse.hpp [4:5]
+ boost/fusion/algorithm/transformation/transform.hpp [4:5]
+ boost/fusion/container/generation/cons_tie.hpp [4:5]
+ boost/fusion/container/generation/ignore.hpp [6:7]
+ boost/fusion/container/generation/make_cons.hpp [5:6]
+ boost/fusion/container/generation/pair_tie.hpp [5:6]
+ boost/fusion/container/list/cons.hpp [5:6]
+ boost/fusion/container/list/cons_iterator.hpp [5:6]
+ boost/fusion/container/list/detail/begin_impl.hpp [5:6]
+ boost/fusion/container/list/detail/build_cons.hpp [4:5]
+ boost/fusion/container/list/detail/cpp03/list_forward_ctor.hpp [4:5]
+ boost/fusion/container/list/detail/cpp03/list_to_cons_call.hpp [4:5]
+ boost/fusion/container/list/detail/deref_impl.hpp [5:6]
+ boost/fusion/container/list/detail/empty_impl.hpp [4:5]
+ boost/fusion/container/list/detail/end_impl.hpp [5:6]
+ boost/fusion/container/list/detail/equal_to_impl.hpp [4:5]
+ boost/fusion/container/list/detail/next_impl.hpp [5:6]
+ boost/fusion/container/list/detail/value_at_impl.hpp [4:5]
+ boost/fusion/container/list/detail/value_of_impl.hpp [5:6]
+ boost/fusion/container/list/nil.hpp [5:6]
+ boost/fusion/container/map/detail/cpp03/at_impl.hpp [5:6]
+ boost/fusion/container/map/detail/cpp03/map_forward_ctor.hpp [4:5]
+ boost/fusion/container/map/detail/cpp03/value_at_impl.hpp [5:6]
+ boost/fusion/container/set/detail/cpp03/set_forward_ctor.hpp [4:5]
+ boost/fusion/container/vector/detail/advance_impl.hpp [4:5]
+ boost/fusion/container/vector/detail/begin_impl.hpp [4:5]
+ boost/fusion/container/vector/detail/deref_impl.hpp [4:5]
+ boost/fusion/container/vector/detail/distance_impl.hpp [4:5]
+ boost/fusion/container/vector/detail/end_impl.hpp [4:5]
+ boost/fusion/container/vector/detail/equal_to_impl.hpp [4:5]
+ boost/fusion/container/vector/detail/next_impl.hpp [4:5]
+ boost/fusion/container/vector/detail/prior_impl.hpp [4:5]
+ boost/fusion/container/vector/detail/value_of_impl.hpp [4:5]
+ boost/fusion/container/vector/vector_iterator.hpp [4:5]
+ boost/fusion/include/as_vector.hpp [4:5]
+ boost/fusion/include/at.hpp [4:5]
+ boost/fusion/include/io.hpp [4:5]
+ boost/fusion/include/is_sequence.hpp [4:5]
+ boost/fusion/include/join.hpp [4:5]
+ boost/fusion/include/joint_view.hpp [4:5]
+ boost/fusion/include/push_front.hpp [4:5]
+ boost/fusion/include/single_view.hpp [4:5]
+ boost/fusion/include/transform.hpp [4:5]
+ boost/fusion/include/transform_view.hpp [4:5]
+ boost/fusion/include/value_at.hpp [4:5]
+ boost/fusion/iterator/deref.hpp [4:5]
+ boost/fusion/iterator/detail/adapt_deref_traits.hpp [4:5]
+ boost/fusion/iterator/detail/adapt_value_traits.hpp [4:5]
+ boost/fusion/iterator/detail/advance.hpp [4:5]
+ boost/fusion/iterator/detail/distance.hpp [4:5]
+ boost/fusion/iterator/distance.hpp [4:5]
+ boost/fusion/iterator/mpl.hpp [4:5]
+ boost/fusion/iterator/mpl/fusion_iterator.hpp [4:5]
+ boost/fusion/iterator/next.hpp [4:5]
+ boost/fusion/iterator/prior.hpp [4:5]
+ boost/fusion/iterator/value_of.hpp [4:5]
+ boost/fusion/mpl/at.hpp [4:5]
+ boost/fusion/mpl/back.hpp [4:5]
+ boost/fusion/mpl/begin.hpp [4:5]
+ boost/fusion/mpl/clear.hpp [4:5]
+ boost/fusion/mpl/detail/clear.hpp [4:5]
+ boost/fusion/mpl/empty.hpp [4:5]
+ boost/fusion/mpl/end.hpp [4:5]
+ boost/fusion/mpl/front.hpp [4:5]
+ boost/fusion/mpl/has_key.hpp [4:5]
+ boost/fusion/mpl/size.hpp [4:5]
+ boost/fusion/sequence/comparison.hpp [4:5]
+ boost/fusion/sequence/comparison/detail/equal_to.hpp [5:6]
+ boost/fusion/sequence/comparison/detail/greater.hpp [5:6]
+ boost/fusion/sequence/comparison/detail/greater_equal.hpp [5:6]
+ boost/fusion/sequence/comparison/detail/less.hpp [5:6]
+ boost/fusion/sequence/comparison/detail/less_equal.hpp [5:6]
+ boost/fusion/sequence/comparison/detail/not_equal_to.hpp [5:6]
+ boost/fusion/sequence/intrinsic/at_key.hpp [5:6]
+ boost/fusion/sequence/intrinsic/back.hpp [4:5]
+ boost/fusion/sequence/intrinsic/begin.hpp [4:5]
+ boost/fusion/sequence/intrinsic/detail/segmented_size.hpp [4:5]
+ boost/fusion/sequence/intrinsic/empty.hpp [4:5]
+ boost/fusion/sequence/intrinsic/end.hpp [4:5]
+ boost/fusion/sequence/intrinsic/front.hpp [4:5]
+ boost/fusion/sequence/intrinsic/has_key.hpp [4:5]
+ boost/fusion/sequence/intrinsic/segments.hpp [4:5]
+ boost/fusion/sequence/intrinsic/size.hpp [4:5]
+ boost/fusion/sequence/intrinsic/swap.hpp [5:6]
+ boost/fusion/sequence/intrinsic/value_at.hpp [4:5]
+ boost/fusion/sequence/intrinsic/value_at_key.hpp [5:6]
+ boost/fusion/sequence/io.hpp [4:5]
+ boost/fusion/sequence/io/detail/in.hpp [6:7]
+ boost/fusion/sequence/io/detail/manip.hpp [6:7]
+ boost/fusion/sequence/io/detail/out.hpp [6:7]
+ boost/fusion/sequence/io/out.hpp [6:7]
+ boost/fusion/support/category_of.hpp [4:5]
+ boost/fusion/support/detail/as_fusion_element.hpp [5:6]
+ boost/fusion/support/detail/category_of.hpp [4:5]
+ boost/fusion/support/detail/is_mpl_sequence.hpp [5:6]
+ boost/fusion/support/detail/is_view.hpp [4:5]
+ boost/fusion/support/detail/mpl_iterator_category.hpp [4:5]
+ boost/fusion/support/detail/unknown_key.hpp [4:5]
+ boost/fusion/support/is_iterator.hpp [4:5]
+ boost/fusion/support/is_segmented.hpp [4:5]
+ boost/fusion/support/is_view.hpp [4:5]
+ boost/fusion/tuple.hpp [4:5]
+ boost/fusion/view.hpp [4:5]
+ boost/fusion/view/filter_view.hpp [4:5]
+ boost/fusion/view/filter_view/detail/begin_impl.hpp [4:5]
+ boost/fusion/view/filter_view/detail/deref_impl.hpp [4:5]
+ boost/fusion/view/filter_view/detail/end_impl.hpp [4:5]
+ boost/fusion/view/filter_view/detail/equal_to_impl.hpp [5:6]
+ boost/fusion/view/filter_view/detail/next_impl.hpp [4:5]
+ boost/fusion/view/filter_view/detail/size_impl.hpp [4:5]
+ boost/fusion/view/filter_view/detail/value_of_impl.hpp [4:5]
+ boost/fusion/view/filter_view/filter_view.hpp [4:5]
+ boost/fusion/view/iterator_range.hpp [4:5]
+ boost/fusion/view/iterator_range/detail/begin_impl.hpp [4:5]
+ boost/fusion/view/iterator_range/detail/end_impl.hpp [4:5]
+ boost/fusion/view/iterator_range/detail/is_segmented_impl.hpp [4:5]
+ boost/fusion/view/iterator_range/detail/segments_impl.hpp [4:5]
+ boost/fusion/view/joint_view.hpp [4:5]
+ boost/fusion/view/joint_view/detail/begin_impl.hpp [4:5]
+ boost/fusion/view/joint_view/detail/deref_impl.hpp [4:5]
+ boost/fusion/view/joint_view/detail/end_impl.hpp [4:5]
+ boost/fusion/view/joint_view/detail/next_impl.hpp [4:5]
+ boost/fusion/view/joint_view/detail/value_of_impl.hpp [4:5]
+ boost/fusion/view/nview.hpp [6:7]
+ boost/fusion/view/nview/detail/at_impl.hpp [4:5]
+ boost/fusion/view/nview/detail/size_impl.hpp [4:5]
+ boost/fusion/view/nview/detail/value_at_impl.hpp [4:5]
+ boost/fusion/view/nview/nview.hpp [4:5]
+ boost/fusion/view/nview/nview_iterator.hpp [4:5]
+ boost/fusion/view/reverse_view.hpp [4:5]
+ boost/fusion/view/reverse_view/detail/advance_impl.hpp [5:6]
+ boost/fusion/view/reverse_view/detail/begin_impl.hpp [4:5]
+ boost/fusion/view/reverse_view/detail/deref_impl.hpp [4:5]
+ boost/fusion/view/reverse_view/detail/distance_impl.hpp [5:6]
+ boost/fusion/view/reverse_view/detail/end_impl.hpp [4:5]
+ boost/fusion/view/reverse_view/detail/next_impl.hpp [4:5]
+ boost/fusion/view/reverse_view/detail/prior_impl.hpp [4:5]
+ boost/fusion/view/reverse_view/detail/value_of_impl.hpp [4:5]
+ boost/fusion/view/reverse_view/reverse_view.hpp [4:5]
+ boost/fusion/view/single_view.hpp [4:5]
+ boost/fusion/view/single_view/detail/advance_impl.hpp [4:5]
+ boost/fusion/view/single_view/detail/at_impl.hpp [4:5]
+ boost/fusion/view/single_view/detail/begin_impl.hpp [5:6]
+ boost/fusion/view/single_view/detail/deref_impl.hpp [5:6]
+ boost/fusion/view/single_view/detail/end_impl.hpp [5:6]
+ boost/fusion/view/single_view/detail/size_impl.hpp [4:5]
+ boost/fusion/view/single_view/detail/value_at_impl.hpp [4:5]
+ boost/fusion/view/single_view/detail/value_of_impl.hpp [5:6]
+ boost/fusion/view/single_view/single_view.hpp [5:6]
+ boost/fusion/view/single_view/single_view_iterator.hpp [5:6]
+ boost/fusion/view/transform_view.hpp [4:5]
+ boost/fusion/view/transform_view/detail/advance_impl.hpp [5:6]
+ boost/fusion/view/transform_view/detail/apply_transform_result.hpp [5:6]
+ boost/fusion/view/transform_view/detail/at_impl.hpp [5:6]
+ boost/fusion/view/transform_view/detail/begin_impl.hpp [4:5]
+ boost/fusion/view/transform_view/detail/deref_impl.hpp [4:5]
+ boost/fusion/view/transform_view/detail/distance_impl.hpp [5:6]
+ boost/fusion/view/transform_view/detail/end_impl.hpp [4:5]
+ boost/fusion/view/transform_view/detail/equal_to_impl.hpp [4:5]
+ boost/fusion/view/transform_view/detail/next_impl.hpp [4:5]
+ boost/fusion/view/transform_view/detail/prior_impl.hpp [5:6]
+ boost/fusion/view/transform_view/detail/value_of_impl.hpp [4:5]
+ boost/fusion/view/transform_view/transform_view.hpp [4:5]
+ boost/fusion/view/transform_view/transform_view_fwd.hpp [4:5]
+ boost/fusion/view/zip_view.hpp [5:6]
+ boost/fusion/view/zip_view/detail/advance_impl.hpp [5:6]
+ boost/fusion/view/zip_view/detail/at_impl.hpp [5:6]
+ boost/fusion/view/zip_view/detail/begin_impl.hpp [5:6]
+ boost/fusion/view/zip_view/detail/deref_impl.hpp [5:6]
+ boost/fusion/view/zip_view/detail/distance_impl.hpp [5:6]
+ boost/fusion/view/zip_view/detail/end_impl.hpp [5:6]
+ boost/fusion/view/zip_view/detail/equal_to_impl.hpp [5:6]
+ boost/fusion/view/zip_view/detail/next_impl.hpp [5:6]
+ boost/fusion/view/zip_view/detail/prior_impl.hpp [5:6]
+ boost/fusion/view/zip_view/detail/size_impl.hpp [5:6]
+ boost/fusion/view/zip_view/detail/value_at_impl.hpp [5:6]
+ boost/fusion/view/zip_view/zip_view.hpp [5:6]
+ boost/fusion/view/zip_view/zip_view_iterator.hpp [5:6]
+ boost/fusion/view/zip_view/zip_view_iterator_fwd.hpp [5:6]
+ boost/phoenix/bind/detail/cpp03/bind_function.hpp [4:5]
+ boost/phoenix/bind/detail/cpp03/bind_function.hpp [56:57]
+ boost/phoenix/bind/detail/cpp03/bind_function_object.hpp [4:5]
+ boost/phoenix/bind/detail/cpp03/bind_function_object.hpp [33:34]
+ boost/phoenix/bind/detail/cpp03/bind_member_function.hpp [108:109]
+ boost/phoenix/bind/detail/cpp03/function_ptr.hpp [4:5]
+ boost/phoenix/bind/detail/cpp03/function_ptr.hpp [97:98]
+ boost/phoenix/bind/detail/cpp03/member_function_ptr.hpp [86:87]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_function.hpp [4:5]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_10.hpp [4:5]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object.hpp [4:5]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_10.hpp [4:5]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function.hpp [4:5]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_10.hpp [4:5]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_20.hpp [4:5]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_30.hpp [4:5]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_40.hpp [4:5]
+ boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_50.hpp [4:5]
+ boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr.hpp [4:5]
+ boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_10.hpp [4:5]
+ boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr.hpp [4:5]
+ boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_10.hpp [4:5]
+ boost/phoenix/core/as_actor.hpp [4:5]
+ boost/phoenix/core/detail/cpp03/preprocessed/argument.hpp [4:5]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_equal.hpp [4:5]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_eval.hpp [4:5]
+ boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr.hpp [4:5]
+ boost/phoenix/core/detail/cpp03/preprocessed/phx2_result.hpp [4:5]
+ boost/phoenix/core/detail/expression.hpp [4:5]
+ boost/phoenix/core/domain.hpp [5:6]
+ boost/phoenix/core/expression.hpp [4:5]
+ boost/phoenix/core/is_nullary.hpp [6:7]
+ boost/phoenix/core/limits.hpp [4:5]
+ boost/phoenix/core/meta_grammar.hpp [6:7]
+ boost/phoenix/core/v2_eval.hpp [4:5]
+ boost/phoenix/scope/detail/cpp03/preprocessed/lambda.hpp [4:5]
+ boost/phoenix/scope/this.hpp [5:6]
+ boost/phoenix/stl.hpp [6:7]
+ boost/phoenix/stl/algorithm.hpp [7:8]
+ boost/phoenix/stl/container.hpp [5:6]
+ boost/phoenix/stl/container/detail/container.hpp [5:6]
+ boost/phoenix/support/preprocessed/vector.hpp [4:5]
+ boost/phoenix/support/preprocessor/round.hpp [4:5]
+ boost/spirit/home/qi/action.hpp [4:5]
+ boost/spirit/home/qi/char.hpp [4:5]
+
+KEEP BSL-1.0 dde9acabf5742901105539d5f17431bd
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/preprocessor/list/to_array.hpp at line 6
+ License text:
+ \# * Distributed under the Boost Software License, Version 1.0. (See
+ \# * accompanying file LICENSE_1_0.txt or copy at
+ \# * http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/preprocessor/list/to_array.hpp [5:7]
+
+KEEP BSL-1.0 ddf3aa9096c8b1813b5286b27c8ff567
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/concept/detail/backward_compatibility.hpp at line 3
+ License text:
+ // Copyright David Abrahams 2009. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/concept/detail/backward_compatibility.hpp [1:3]
+
+KEEP BSL-1.0 deee9a766b5b9de6341124086cf18c15
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/allocator.hpp at line 5, boost/container/detail/auto_link.hpp at line 5, boost/container/detail/singleton.hpp at line 16
+ License text:
+ // (C) Copyright Ion Gaztanaga 2007-2013. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/container/allocator.hpp [3:5]
+ boost/container/detail/auto_link.hpp [3:5]
+ boost/container/detail/singleton.hpp [14:16]
+
+KEEP BSL-1.0 e03c043ca7052925e34194f3fe2631e4
+BELONGS ya.make
+ License text:
+ // Distributed under the Boost Software License, Version 1.0.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/msm/mpl_graph/mpl_graph.hpp [8:8]
+ boost/utility/detail/minstd_rand.hpp [6:6]
+
+KEEP BSL-1.0 e30802d624ab26a07227b82c6380e880
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/proto/detail/deduce_domain.hpp at line 9
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/proto/detail/deduce_domain.hpp [7:9]
+
+KEEP BSL-1.0 e36b3a71b94a65181100fbb5aeb04562
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/type_traits/detail/detector.hpp at line 6, boost/type_traits/detected.hpp at line 6, boost/type_traits/detected_or.hpp at line 6, boost/type_traits/is_detected.hpp at line 6, boost/type_traits/is_detected_convertible.hpp at line 6, boost/type_traits/is_detected_exact.hpp at line 6, boost/type_traits/make_void.hpp at line 6, boost/type_traits/nonesuch.hpp at line 6
+ License text:
+ Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt
+ or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/type_traits/detail/detector.hpp [5:7]
+ boost/type_traits/detected.hpp [5:7]
+ boost/type_traits/detected_or.hpp [5:7]
+ boost/type_traits/is_detected.hpp [5:7]
+ boost/type_traits/is_detected_convertible.hpp [5:7]
+ boost/type_traits/is_detected_exact.hpp [5:7]
+ boost/type_traits/make_void.hpp [5:7]
+ boost/type_traits/nonesuch.hpp [5:7]
+
+KEEP BSL-1.0 e4571f5c07b0b6bd8c6bbcb297d4610d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/signals2/variadic_slot.hpp at line 6
+ License text:
+ // distribution is subject to the Boost Software License, Version
+ // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 87.50
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/signals2/variadic_slot.hpp [5:7]
+
+SKIP Public-Domain e554616ea381325a766aa070edbb78a7
+BELONGS ya.make
+ License text:
+ // Derived from a public domain implementation written by Daniel Casimiro.
+ Scancode info:
+ Original SPDX id: LicenseRef-scancode-public-domain
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.linfo.org/publicdomain.html, https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/public-domain.LICENSE
+ Files with this license:
+ boost/asio/local/basic_endpoint.hpp [6:6]
+ boost/asio/local/detail/endpoint.hpp [6:6]
+ boost/asio/local/detail/impl/endpoint.ipp [6:6]
+
+SKIP MPL-1.1 e5f161acc2254dcdb84c03a759f0ad62
+BELONGS ya.make
+ License text:
+ //! Classic MPL-style metafunction returning the nth element of a type
+ Scancode info:
+ Original SPDX id: MPL-1.1
+ Score : 80.00
+ Match type : REFERENCE
+ Links : http://www.mozilla.com/MPL/1.1/index.html, http://www.mozilla.org/MPL/MPL-1.1.html, https://spdx.org/licenses/MPL-1.1
+ Files with this license:
+ boost/hana/detail/type_at.hpp [44:44]
+
+KEEP BSL-1.0 e62661610d95a7bb4df4f06296a137df
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/ptr_container/detail/serialize_xml_names.hpp at line 6, boost/ptr_container/indirect_fun.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/ptr_container/detail/serialize_xml_names.hpp [4:7]
+ boost/ptr_container/indirect_fun.hpp [4:7]
+
+KEEP BSL-1.0 e6392165abe6e8ce8497cc77611fbaaf
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/wave.hpp at line 10, boost/wave/cpp_context.hpp at line 9, boost/wave/cpp_exceptions.hpp at line 8, boost/wave/cpp_iteration_context.hpp at line 9, boost/wave/cpp_throw.hpp at line 8, boost/wave/cpplexer/convert_trigraphs.hpp at line 10, boost/wave/cpplexer/cpp_lex_interface.hpp at line 10, boost/wave/cpplexer/cpp_lex_interface_generator.hpp at line 10, boost/wave/cpplexer/cpp_lex_iterator.hpp at line 10, boost/wave/cpplexer/cpp_lex_token.hpp at line 10, boost/wave/cpplexer/cpplexer_exceptions.hpp at line 8, boost/wave/cpplexer/detect_include_guards.hpp at line 27, boost/wave/cpplexer/re2clex/cpp_re.hpp at line 10, boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp at line 10, boost/wave/cpplexer/token_cache.hpp at line 8, boost/wave/cpplexer/validate_universal_char.hpp at line 10, boost/wave/grammars/cpp_chlit_grammar.hpp at line 8, boost/wave/grammars/cpp_defined_grammar.hpp at line 8, boost/wave/grammars/cpp_defined_grammar_gen.hpp at line 8, boost/wave/grammars/cpp_expression_grammar.hpp at line 8, boost/wave/grammars/cpp_expression_grammar_gen.hpp at line 8, boost/wave/grammars/cpp_expression_value.hpp at line 8, boost/wave/grammars/cpp_grammar.hpp at line 8, boost/wave/grammars/cpp_grammar_gen.hpp at line 8, boost/wave/grammars/cpp_intlit_grammar.hpp at line 8, boost/wave/grammars/cpp_literal_grammar_gen.hpp at line 8, boost/wave/grammars/cpp_predef_macros_gen.hpp at line 8, boost/wave/grammars/cpp_predef_macros_grammar.hpp at line 8, boost/wave/grammars/cpp_value_error.hpp at line 8, boost/wave/language_support.hpp at line 9, boost/wave/preprocessing_hooks.hpp at line 8, boost/wave/token_ids.hpp at line 10, boost/wave/util/cpp_ifblock.hpp at line 8, boost/wave/util/cpp_include_paths.hpp at line 8, boost/wave/util/cpp_iterator.hpp at line 10, boost/wave/util/cpp_macromap.hpp at line 10, boost/wave/util/cpp_macromap_predef.hpp at line 10, boost/wave/util/cpp_macromap_utils.hpp at line 10, boost/wave/util/file_position.hpp at line 10, boost/wave/util/filesystem_compatibility.hpp at line 8, boost/wave/util/functor_input.hpp at line 8, boost/wave/util/insert_whitespace_detection.hpp at line 10, boost/wave/util/interpret_pragma.hpp at line 8, boost/wave/util/iteration_context.hpp at line 8, boost/wave/util/macro_definition.hpp at line 8, boost/wave/util/macro_helpers.hpp at line 8, boost/wave/util/pattern_parser.hpp at line 10, boost/wave/util/symbol_table.hpp at line 8, boost/wave/util/time_conversion_helper.hpp at line 8, boost/wave/util/transform_iterator.hpp at line 8, boost/wave/util/unput_queue_iterator.hpp at line 10, boost/wave/wave_config.hpp at line 10, boost/wave/wave_config_constant.hpp at line 9, boost/wave/wave_version.hpp at line 10
+ License text:
+ Copyright (c) 2001-2012 Hartmut Kaiser. Distributed under the Boost
+ Software License, Version 1.0. (See accompanying file
+ LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/wave.hpp [8:10]
+ boost/wave/cpp_context.hpp [7:9]
+ boost/wave/cpp_exceptions.hpp [6:8]
+ boost/wave/cpp_iteration_context.hpp [7:9]
+ boost/wave/cpp_throw.hpp [6:8]
+ boost/wave/cpplexer/convert_trigraphs.hpp [8:10]
+ boost/wave/cpplexer/cpp_lex_interface.hpp [8:10]
+ boost/wave/cpplexer/cpp_lex_interface_generator.hpp [8:10]
+ boost/wave/cpplexer/cpp_lex_iterator.hpp [8:10]
+ boost/wave/cpplexer/cpp_lex_token.hpp [8:10]
+ boost/wave/cpplexer/cpplexer_exceptions.hpp [6:8]
+ boost/wave/cpplexer/detect_include_guards.hpp [25:27]
+ boost/wave/cpplexer/re2clex/cpp_re.hpp [8:10]
+ boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp [8:10]
+ boost/wave/cpplexer/token_cache.hpp [6:8]
+ boost/wave/cpplexer/validate_universal_char.hpp [8:10]
+ boost/wave/grammars/cpp_chlit_grammar.hpp [6:8]
+ boost/wave/grammars/cpp_defined_grammar.hpp [6:8]
+ boost/wave/grammars/cpp_defined_grammar_gen.hpp [6:8]
+ boost/wave/grammars/cpp_expression_grammar.hpp [6:8]
+ boost/wave/grammars/cpp_expression_grammar_gen.hpp [6:8]
+ boost/wave/grammars/cpp_expression_value.hpp [6:8]
+ boost/wave/grammars/cpp_grammar.hpp [6:8]
+ boost/wave/grammars/cpp_grammar_gen.hpp [6:8]
+ boost/wave/grammars/cpp_intlit_grammar.hpp [6:8]
+ boost/wave/grammars/cpp_literal_grammar_gen.hpp [6:8]
+ boost/wave/grammars/cpp_predef_macros_gen.hpp [6:8]
+ boost/wave/grammars/cpp_predef_macros_grammar.hpp [6:8]
+ boost/wave/grammars/cpp_value_error.hpp [6:8]
+ boost/wave/language_support.hpp [7:9]
+ boost/wave/preprocessing_hooks.hpp [6:8]
+ boost/wave/token_ids.hpp [8:10]
+ boost/wave/util/cpp_ifblock.hpp [6:8]
+ boost/wave/util/cpp_include_paths.hpp [6:8]
+ boost/wave/util/cpp_iterator.hpp [8:10]
+ boost/wave/util/cpp_macromap.hpp [8:10]
+ boost/wave/util/cpp_macromap_predef.hpp [8:10]
+ boost/wave/util/cpp_macromap_utils.hpp [8:10]
+ boost/wave/util/file_position.hpp [8:10]
+ boost/wave/util/filesystem_compatibility.hpp [6:8]
+ boost/wave/util/functor_input.hpp [6:8]
+ boost/wave/util/insert_whitespace_detection.hpp [8:10]
+ boost/wave/util/interpret_pragma.hpp [6:8]
+ boost/wave/util/iteration_context.hpp [6:8]
+ boost/wave/util/macro_definition.hpp [6:8]
+ boost/wave/util/macro_helpers.hpp [6:8]
+ boost/wave/util/pattern_parser.hpp [8:10]
+ boost/wave/util/symbol_table.hpp [6:8]
+ boost/wave/util/time_conversion_helper.hpp [6:8]
+ boost/wave/util/transform_iterator.hpp [6:8]
+ boost/wave/util/unput_queue_iterator.hpp [8:10]
+ boost/wave/wave_config.hpp [8:10]
+ boost/wave/wave_config_constant.hpp [7:9]
+ boost/wave/wave_version.hpp [8:10]
+
+KEEP BSL-1.0 e6a3c462b8c40b8d1b8ef9a1bfe334ea
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/progress.hpp at line 5, boost/timer.hpp at line 5
+ License text:
+ // Copyright Beman Dawes 1994-99. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/progress.hpp [3:5]
+ boost/timer.hpp [3:5]
+
+KEEP BSL-1.0 e7b5dc404b6b2102b4aa561aee20a2fc
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/detail/min_max.hpp at line 4
+ License text:
+ // Copyright 2016 John Maddock. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/multiprecision/detail/min_max.hpp [2:4]
+
+KEEP BSL-1.0 e839de25ce13e3e85a6d98035de17196
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/token_iterator.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 92.11
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/token_iterator.hpp [4:10]
+
+KEEP BSL-1.0 e87c3dd71a4ef19d4c3d2331ca65352f
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/uuid/basic_name_generator.hpp at line 7, boost/uuid/name_generator.hpp at line 7, boost/uuid/name_generator_md5.hpp at line 6, boost/uuid/name_generator_sha1.hpp at line 7
+ License text:
+ // Distributed under the Boost Software License, Version 1.0. (See
+ // accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/uuid/basic_name_generator.hpp [6:8]
+ boost/uuid/name_generator.hpp [6:8]
+ boost/uuid/name_generator_md5.hpp [5:7]
+ boost/uuid/name_generator_sha1.hpp [6:8]
+
+KEEP MIT e8fa61ad26065c016c4c968298a683bd
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: MIT
+ Score : 100.00
+ Match type : TEXT
+ Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
+ Files with this license:
+ boost/graph/boykov_kolmogorov_max_flow.hpp [5:24]
+ boost/graph/write_dimacs.hpp [5:24]
+
+KEEP BSL-1.0 e9074560eedac47c976141d60b050ab5
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/traits/is_backend.hpp at line 4, boost/multiprecision/traits/is_byte_container.hpp at line 4
+ License text:
+ // Copyright 2015 John Maddock. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/multiprecision/traits/is_backend.hpp [2:4]
+ boost/multiprecision/traits/is_byte_container.hpp [2:4]
+
+KEEP BSL-1.0 e91594a20efc45dd4517624478c6c351
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/detail/no_et_ops.hpp at line 4, boost/multiprecision/detail/number_compare.hpp at line 4, boost/multiprecision/traits/explicit_conversion.hpp at line 5, boost/multiprecision/traits/is_restricted_conversion.hpp at line 5
+ License text:
+ // Copyright 2012 John Maddock. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/multiprecision/detail/no_et_ops.hpp [2:4]
+ boost/multiprecision/detail/number_compare.hpp [2:4]
+ boost/multiprecision/traits/explicit_conversion.hpp [3:5]
+ boost/multiprecision/traits/is_restricted_conversion.hpp [3:5]
+
+KEEP BSL-1.0 e933f75317e8b0dd6596263caf28e994
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/numeric/odeint/algebra/default_operations.hpp at line 13, boost/numeric/odeint/algebra/detail/for_each.hpp at line 13, boost/numeric/odeint/algebra/range_algebra.hpp at line 14, boost/numeric/odeint/external/openmp/openmp_nested_algebra.hpp at line 14, boost/numeric/odeint/external/openmp/openmp_range_algebra.hpp at line 14
+ License text:
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or
+ copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/numeric/odeint/algebra/default_operations.hpp [12:14]
+ boost/numeric/odeint/algebra/detail/for_each.hpp [12:14]
+ boost/numeric/odeint/algebra/range_algebra.hpp [13:15]
+ boost/numeric/odeint/external/openmp/openmp_nested_algebra.hpp [13:15]
+ boost/numeric/odeint/external/openmp/openmp_range_algebra.hpp [13:15]
+
+KEEP BSL-1.0 e9bbf58ab1f2bd1f5073e4b511502f61
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/adaptor/copied.hpp at line 5, boost/range/adaptor/tokenized.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/range/adaptor/copied.hpp [3:6]
+ boost/range/adaptor/tokenized.hpp [3:6]
+
+KEEP BSL-1.0 ecd6153baa3f865870856f438e1eeac7
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/io/ios_state.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/io/ios_state.hpp [3:5]
+
+KEEP BSL-1.0 ee282eae3937cec525b57093b02f02a8
+BELONGS ya.make
+ License text:
+ // Distributed under the Boost Software License, Version 1.0
+ // http://www.boost.org/LICENSE_1_0.txt
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 94.44
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/detail/bitmask.hpp [5:6]
+
+KEEP BSL-1.0 ee3962a5a0bcf4ba36442d07459aa81f
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/compute.hpp at line 5, boost/compute/algorithm.hpp at line 5, boost/compute/algorithm/accumulate.hpp at line 5, boost/compute/algorithm/adjacent_difference.hpp at line 5, boost/compute/algorithm/adjacent_find.hpp at line 5, boost/compute/algorithm/all_of.hpp at line 5, boost/compute/algorithm/any_of.hpp at line 5, boost/compute/algorithm/binary_search.hpp at line 5, boost/compute/algorithm/copy.hpp at line 5, boost/compute/algorithm/copy_if.hpp at line 5, boost/compute/algorithm/copy_n.hpp at line 5, boost/compute/algorithm/count.hpp at line 5, boost/compute/algorithm/count_if.hpp at line 5, boost/compute/algorithm/detail/balanced_path.hpp at line 5, boost/compute/algorithm/detail/binary_find.hpp at line 5, boost/compute/algorithm/detail/compact.hpp at line 5, boost/compute/algorithm/detail/copy_on_device.hpp at line 5, boost/compute/algorithm/detail/copy_to_device.hpp at line 5, boost/compute/algorithm/detail/copy_to_host.hpp at line 5, boost/compute/algorithm/detail/count_if_with_ballot.hpp at line 5, boost/compute/algorithm/detail/count_if_with_reduce.hpp at line 5, boost/compute/algorithm/detail/count_if_with_threads.hpp at line 5, boost/compute/algorithm/detail/find_extrema.hpp at line 5, boost/compute/algorithm/detail/find_extrema_on_cpu.hpp at line 5, boost/compute/algorithm/detail/find_extrema_with_atomics.hpp at line 5, boost/compute/algorithm/detail/find_extrema_with_reduce.hpp at line 5, boost/compute/algorithm/detail/find_if_with_atomics.hpp at line 5, boost/compute/algorithm/detail/inplace_reduce.hpp at line 5, boost/compute/algorithm/detail/insertion_sort.hpp at line 5, boost/compute/algorithm/detail/merge_path.hpp at line 5, boost/compute/algorithm/detail/merge_sort_on_cpu.hpp at line 5, boost/compute/algorithm/detail/merge_sort_on_gpu.hpp at line 5, boost/compute/algorithm/detail/merge_with_merge_path.hpp at line 5, boost/compute/algorithm/detail/radix_sort.hpp at line 5, boost/compute/algorithm/detail/random_fill.hpp at line 5, boost/compute/algorithm/detail/reduce_by_key.hpp at line 5, boost/compute/algorithm/detail/reduce_by_key_with_scan.hpp at line 5, boost/compute/algorithm/detail/reduce_on_cpu.hpp at line 5, boost/compute/algorithm/detail/reduce_on_gpu.hpp at line 5, boost/compute/algorithm/detail/scan.hpp at line 5, boost/compute/algorithm/detail/scan_on_cpu.hpp at line 5, boost/compute/algorithm/detail/scan_on_gpu.hpp at line 5, boost/compute/algorithm/detail/search_all.hpp at line 5, boost/compute/algorithm/detail/serial_accumulate.hpp at line 5, boost/compute/algorithm/detail/serial_count_if.hpp at line 5, boost/compute/algorithm/detail/serial_find_extrema.hpp at line 5, boost/compute/algorithm/detail/serial_merge.hpp at line 5, boost/compute/algorithm/detail/serial_reduce.hpp at line 5, boost/compute/algorithm/detail/serial_reduce_by_key.hpp at line 5, boost/compute/algorithm/detail/serial_scan.hpp at line 5, boost/compute/algorithm/equal.hpp at line 5, boost/compute/algorithm/equal_range.hpp at line 5, boost/compute/algorithm/exclusive_scan.hpp at line 5, boost/compute/algorithm/fill.hpp at line 5, boost/compute/algorithm/fill_n.hpp at line 5, boost/compute/algorithm/find.hpp at line 5, boost/compute/algorithm/find_end.hpp at line 5, boost/compute/algorithm/find_if.hpp at line 5, boost/compute/algorithm/find_if_not.hpp at line 5, boost/compute/algorithm/for_each.hpp at line 5, boost/compute/algorithm/for_each_n.hpp at line 5, boost/compute/algorithm/gather.hpp at line 5, boost/compute/algorithm/generate.hpp at line 5, boost/compute/algorithm/generate_n.hpp at line 5, boost/compute/algorithm/includes.hpp at line 5, boost/compute/algorithm/inclusive_scan.hpp at line 5, boost/compute/algorithm/inner_product.hpp at line 5, boost/compute/algorithm/inplace_merge.hpp at line 5, boost/compute/algorithm/iota.hpp at line 5, boost/compute/algorithm/is_partitioned.hpp at line 5, boost/compute/algorithm/is_permutation.hpp at line 5, boost/compute/algorithm/is_sorted.hpp at line 5, boost/compute/algorithm/lexicographical_compare.hpp at line 5, boost/compute/algorithm/lower_bound.hpp at line 5, boost/compute/algorithm/max_element.hpp at line 5, boost/compute/algorithm/merge.hpp at line 5, boost/compute/algorithm/min_element.hpp at line 5, boost/compute/algorithm/minmax_element.hpp at line 5, boost/compute/algorithm/mismatch.hpp at line 5, boost/compute/algorithm/next_permutation.hpp at line 5, boost/compute/algorithm/none_of.hpp at line 5, boost/compute/algorithm/nth_element.hpp at line 5, boost/compute/algorithm/partial_sum.hpp at line 5, boost/compute/algorithm/partition.hpp at line 5, boost/compute/algorithm/partition_copy.hpp at line 5, boost/compute/algorithm/partition_point.hpp at line 5, boost/compute/algorithm/prev_permutation.hpp at line 5, boost/compute/algorithm/random_shuffle.hpp at line 5, boost/compute/algorithm/reduce.hpp at line 5, boost/compute/algorithm/reduce_by_key.hpp at line 5, boost/compute/algorithm/remove.hpp at line 5, boost/compute/algorithm/remove_if.hpp at line 5, boost/compute/algorithm/replace.hpp at line 5, boost/compute/algorithm/replace_copy.hpp at line 5, boost/compute/algorithm/reverse.hpp at line 5, boost/compute/algorithm/reverse_copy.hpp at line 5, boost/compute/algorithm/rotate.hpp at line 5, boost/compute/algorithm/rotate_copy.hpp at line 5, boost/compute/algorithm/scatter.hpp at line 5, boost/compute/algorithm/scatter_if.hpp at line 5, boost/compute/algorithm/search.hpp at line 5, boost/compute/algorithm/search_n.hpp at line 5, boost/compute/algorithm/set_difference.hpp at line 5, boost/compute/algorithm/set_intersection.hpp at line 5, boost/compute/algorithm/set_symmetric_difference.hpp at line 5, boost/compute/algorithm/set_union.hpp at line 5, boost/compute/algorithm/sort.hpp at line 5, boost/compute/algorithm/sort_by_key.hpp at line 5, boost/compute/algorithm/stable_partition.hpp at line 5, boost/compute/algorithm/stable_sort.hpp at line 5, boost/compute/algorithm/stable_sort_by_key.hpp at line 5, boost/compute/algorithm/swap_ranges.hpp at line 5, boost/compute/algorithm/transform.hpp at line 5, boost/compute/algorithm/transform_if.hpp at line 5, boost/compute/algorithm/transform_reduce.hpp at line 5, boost/compute/algorithm/unique.hpp at line 5, boost/compute/algorithm/unique_copy.hpp at line 5, boost/compute/algorithm/upper_bound.hpp at line 5, boost/compute/allocator.hpp at line 5, boost/compute/allocator/buffer_allocator.hpp at line 5, boost/compute/allocator/pinned_allocator.hpp at line 5, boost/compute/async.hpp at line 5, boost/compute/async/future.hpp at line 5, boost/compute/async/wait.hpp at line 5, boost/compute/async/wait_guard.hpp at line 5, boost/compute/buffer.hpp at line 5, boost/compute/cl.hpp at line 5, boost/compute/cl_ext.hpp at line 5, boost/compute/closure.hpp at line 5, boost/compute/command_queue.hpp at line 5, boost/compute/config.hpp at line 5, boost/compute/container.hpp at line 5, boost/compute/container/array.hpp at line 5, boost/compute/container/basic_string.hpp at line 5, boost/compute/container/detail/scalar.hpp at line 5, boost/compute/container/dynamic_bitset.hpp at line 5, boost/compute/container/flat_map.hpp at line 5, boost/compute/container/flat_set.hpp at line 5, boost/compute/container/mapped_view.hpp at line 5, boost/compute/container/stack.hpp at line 5, boost/compute/container/string.hpp at line 5, boost/compute/container/valarray.hpp at line 5, boost/compute/container/vector.hpp at line 5, boost/compute/context.hpp at line 5, boost/compute/core.hpp at line 5, boost/compute/detail/assert_cl_success.hpp at line 5, boost/compute/detail/buffer_value.hpp at line 5, boost/compute/detail/device_ptr.hpp at line 5, boost/compute/detail/diagnostic.hpp at line 5, boost/compute/detail/duration.hpp at line 5, boost/compute/detail/get_object_info.hpp at line 5, boost/compute/detail/getenv.hpp at line 5, boost/compute/detail/global_static.hpp at line 5, boost/compute/detail/is_buffer_iterator.hpp at line 5, boost/compute/detail/is_contiguous_iterator.hpp at line 5, boost/compute/detail/iterator_plus_distance.hpp at line 5, boost/compute/detail/iterator_range_size.hpp at line 5, boost/compute/detail/iterator_traits.hpp at line 5, boost/compute/detail/literal.hpp at line 5, boost/compute/detail/lru_cache.hpp at line 5, boost/compute/detail/meta_kernel.hpp at line 5, boost/compute/detail/mpl_vector_to_tuple.hpp at line 5, boost/compute/detail/nvidia_compute_capability.hpp at line 5, boost/compute/detail/parameter_cache.hpp at line 5, boost/compute/detail/path.hpp at line 5, boost/compute/detail/print_range.hpp at line 5, boost/compute/detail/read_write_single_value.hpp at line 5, boost/compute/detail/sha1.hpp at line 5, boost/compute/detail/vendor.hpp at line 5, boost/compute/detail/work_size.hpp at line 5, boost/compute/device.hpp at line 5, boost/compute/event.hpp at line 5, boost/compute/exception.hpp at line 5, boost/compute/exception/context_error.hpp at line 5, boost/compute/exception/no_device_found.hpp at line 5, boost/compute/exception/opencl_error.hpp at line 5, boost/compute/exception/unsupported_extension_error.hpp at line 5, boost/compute/experimental/clamp_range.hpp at line 5, boost/compute/experimental/malloc.hpp at line 5, boost/compute/experimental/sort_by_transform.hpp at line 5, boost/compute/experimental/tabulate.hpp at line 5, boost/compute/function.hpp at line 5, boost/compute/functional.hpp at line 5, boost/compute/functional/as.hpp at line 5, boost/compute/functional/atomic.hpp at line 5, boost/compute/functional/bind.hpp at line 5, boost/compute/functional/common.hpp at line 5, boost/compute/functional/convert.hpp at line 5, boost/compute/functional/detail/macros.hpp at line 5, boost/compute/functional/detail/nvidia_ballot.hpp at line 5, boost/compute/functional/detail/nvidia_popcount.hpp at line 5, boost/compute/functional/detail/unpack.hpp at line 5, boost/compute/functional/field.hpp at line 5, boost/compute/functional/geometry.hpp at line 5, boost/compute/functional/get.hpp at line 5, boost/compute/functional/hash.hpp at line 5, boost/compute/functional/identity.hpp at line 5, boost/compute/functional/integer.hpp at line 5, boost/compute/functional/logical.hpp at line 5, boost/compute/functional/math.hpp at line 5, boost/compute/functional/operator.hpp at line 5, boost/compute/functional/popcount.hpp at line 5, boost/compute/functional/relational.hpp at line 5, boost/compute/image.hpp at line 5, boost/compute/image/image1d.hpp at line 5, boost/compute/image/image2d.hpp at line 5, boost/compute/image/image3d.hpp at line 5, boost/compute/image/image_format.hpp at line 5, boost/compute/image/image_object.hpp at line 5, boost/compute/image/image_sampler.hpp at line 5, boost/compute/image2d.hpp at line 5, boost/compute/image3d.hpp at line 5, boost/compute/image_format.hpp at line 5, boost/compute/image_sampler.hpp at line 5, boost/compute/interop/eigen.hpp at line 5, boost/compute/interop/eigen/core.hpp at line 5, boost/compute/interop/opencv.hpp at line 5, boost/compute/interop/opencv/core.hpp at line 5, boost/compute/interop/opencv/highgui.hpp at line 5, boost/compute/interop/opencv/ocl.hpp at line 5, boost/compute/interop/opengl.hpp at line 5, boost/compute/interop/opengl/acquire.hpp at line 5, boost/compute/interop/opengl/cl_gl.hpp at line 5, boost/compute/interop/opengl/cl_gl_ext.hpp at line 5, boost/compute/interop/opengl/context.hpp at line 5, boost/compute/interop/opengl/gl.hpp at line 5, boost/compute/interop/opengl/opengl_buffer.hpp at line 5, boost/compute/interop/opengl/opengl_renderbuffer.hpp at line 5, boost/compute/interop/opengl/opengl_texture.hpp at line 5, boost/compute/interop/qt.hpp at line 5, boost/compute/interop/qt/qimage.hpp at line 5, boost/compute/interop/qt/qpoint.hpp at line 5, boost/compute/interop/qt/qpointf.hpp at line 5, boost/compute/interop/qt/qtcore.hpp at line 5, boost/compute/interop/qt/qtgui.hpp at line 5, boost/compute/interop/qt/qvector.hpp at line 5, boost/compute/interop/vtk.hpp at line 5, boost/compute/interop/vtk/bounds.hpp at line 5, boost/compute/interop/vtk/data_array.hpp at line 5, boost/compute/interop/vtk/matrix4x4.hpp at line 5, boost/compute/interop/vtk/points.hpp at line 5, boost/compute/iterator.hpp at line 5, boost/compute/iterator/buffer_iterator.hpp at line 5, boost/compute/iterator/constant_buffer_iterator.hpp at line 5, boost/compute/iterator/constant_iterator.hpp at line 5, boost/compute/iterator/counting_iterator.hpp at line 5, boost/compute/iterator/detail/get_base_iterator_buffer.hpp at line 5, boost/compute/iterator/detail/swizzle_iterator.hpp at line 5, boost/compute/iterator/discard_iterator.hpp at line 5, boost/compute/iterator/function_input_iterator.hpp at line 5, boost/compute/iterator/permutation_iterator.hpp at line 5, boost/compute/iterator/strided_iterator.hpp at line 5, boost/compute/iterator/transform_iterator.hpp at line 5, boost/compute/iterator/zip_iterator.hpp at line 5, boost/compute/kernel.hpp at line 5, boost/compute/lambda.hpp at line 5, boost/compute/lambda/context.hpp at line 5, boost/compute/lambda/functional.hpp at line 5, boost/compute/lambda/get.hpp at line 5, boost/compute/lambda/make_pair.hpp at line 5, boost/compute/lambda/make_tuple.hpp at line 5, boost/compute/lambda/placeholder.hpp at line 5, boost/compute/lambda/placeholders.hpp at line 5, boost/compute/lambda/result_of.hpp at line 5, boost/compute/memory.hpp at line 5, boost/compute/memory/local_buffer.hpp at line 5, boost/compute/memory/svm_ptr.hpp at line 5, boost/compute/memory_object.hpp at line 5, boost/compute/pipe.hpp at line 5, boost/compute/platform.hpp at line 5, boost/compute/program.hpp at line 5, boost/compute/random.hpp at line 5, boost/compute/random/bernoulli_distribution.hpp at line 5, boost/compute/random/default_random_engine.hpp at line 5, boost/compute/random/discrete_distribution.hpp at line 5, boost/compute/random/linear_congruential_engine.hpp at line 5, boost/compute/random/mersenne_twister_engine.hpp at line 5, boost/compute/random/normal_distribution.hpp at line 5, boost/compute/random/threefry_engine.hpp at line 5, boost/compute/random/uniform_int_distribution.hpp at line 5, boost/compute/random/uniform_real_distribution.hpp at line 5, boost/compute/source.hpp at line 5, boost/compute/svm.hpp at line 5, boost/compute/system.hpp at line 5, boost/compute/type_traits.hpp at line 5, boost/compute/type_traits/common_type.hpp at line 5, boost/compute/type_traits/detail/capture_traits.hpp at line 5, boost/compute/type_traits/is_device_iterator.hpp at line 5, boost/compute/type_traits/is_fundamental.hpp at line 5, boost/compute/type_traits/is_vector_type.hpp at line 5, boost/compute/type_traits/make_vector_type.hpp at line 5, boost/compute/type_traits/result_of.hpp at line 5, boost/compute/type_traits/scalar_type.hpp at line 5, boost/compute/type_traits/type_definition.hpp at line 5, boost/compute/type_traits/type_name.hpp at line 5, boost/compute/type_traits/vector_size.hpp at line 5, boost/compute/types.hpp at line 5, boost/compute/types/builtin.hpp at line 5, boost/compute/types/complex.hpp at line 5, boost/compute/types/fundamental.hpp at line 5, boost/compute/types/pair.hpp at line 5, boost/compute/types/size_t.hpp at line 5, boost/compute/types/struct.hpp at line 5, boost/compute/types/tuple.hpp at line 5, boost/compute/user_event.hpp at line 5, boost/compute/utility.hpp at line 5, boost/compute/utility/dim.hpp at line 5, boost/compute/utility/extents.hpp at line 5, boost/compute/utility/invoke.hpp at line 5, boost/compute/utility/program_cache.hpp at line 5, boost/compute/utility/source.hpp at line 5, boost/compute/utility/wait_list.hpp at line 5, boost/compute/version.hpp at line 5, boost/compute/wait_list.hpp at line 5
+ License text:
+ // Distributed under the Boost Software License, Version 1.0
+ // See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/compute.hpp [4:6]
+ boost/compute/algorithm.hpp [4:6]
+ boost/compute/algorithm/accumulate.hpp [4:6]
+ boost/compute/algorithm/adjacent_difference.hpp [4:6]
+ boost/compute/algorithm/adjacent_find.hpp [4:6]
+ boost/compute/algorithm/all_of.hpp [4:6]
+ boost/compute/algorithm/any_of.hpp [4:6]
+ boost/compute/algorithm/binary_search.hpp [4:6]
+ boost/compute/algorithm/copy.hpp [4:6]
+ boost/compute/algorithm/copy_if.hpp [4:6]
+ boost/compute/algorithm/copy_n.hpp [4:6]
+ boost/compute/algorithm/count.hpp [4:6]
+ boost/compute/algorithm/count_if.hpp [4:6]
+ boost/compute/algorithm/detail/balanced_path.hpp [4:6]
+ boost/compute/algorithm/detail/binary_find.hpp [4:6]
+ boost/compute/algorithm/detail/compact.hpp [4:6]
+ boost/compute/algorithm/detail/copy_on_device.hpp [4:6]
+ boost/compute/algorithm/detail/copy_to_device.hpp [4:6]
+ boost/compute/algorithm/detail/copy_to_host.hpp [4:6]
+ boost/compute/algorithm/detail/count_if_with_ballot.hpp [4:6]
+ boost/compute/algorithm/detail/count_if_with_reduce.hpp [4:6]
+ boost/compute/algorithm/detail/count_if_with_threads.hpp [4:6]
+ boost/compute/algorithm/detail/find_extrema.hpp [4:6]
+ boost/compute/algorithm/detail/find_extrema_on_cpu.hpp [4:6]
+ boost/compute/algorithm/detail/find_extrema_with_atomics.hpp [4:6]
+ boost/compute/algorithm/detail/find_extrema_with_reduce.hpp [4:6]
+ boost/compute/algorithm/detail/find_if_with_atomics.hpp [4:6]
+ boost/compute/algorithm/detail/inplace_reduce.hpp [4:6]
+ boost/compute/algorithm/detail/insertion_sort.hpp [4:6]
+ boost/compute/algorithm/detail/merge_path.hpp [4:6]
+ boost/compute/algorithm/detail/merge_sort_on_cpu.hpp [4:6]
+ boost/compute/algorithm/detail/merge_sort_on_gpu.hpp [4:6]
+ boost/compute/algorithm/detail/merge_with_merge_path.hpp [4:6]
+ boost/compute/algorithm/detail/radix_sort.hpp [4:6]
+ boost/compute/algorithm/detail/random_fill.hpp [4:6]
+ boost/compute/algorithm/detail/reduce_by_key.hpp [4:6]
+ boost/compute/algorithm/detail/reduce_by_key_with_scan.hpp [4:6]
+ boost/compute/algorithm/detail/reduce_on_cpu.hpp [4:6]
+ boost/compute/algorithm/detail/reduce_on_gpu.hpp [4:6]
+ boost/compute/algorithm/detail/scan.hpp [4:6]
+ boost/compute/algorithm/detail/scan_on_cpu.hpp [4:6]
+ boost/compute/algorithm/detail/scan_on_gpu.hpp [4:6]
+ boost/compute/algorithm/detail/search_all.hpp [4:6]
+ boost/compute/algorithm/detail/serial_accumulate.hpp [4:6]
+ boost/compute/algorithm/detail/serial_count_if.hpp [4:6]
+ boost/compute/algorithm/detail/serial_find_extrema.hpp [4:6]
+ boost/compute/algorithm/detail/serial_merge.hpp [4:6]
+ boost/compute/algorithm/detail/serial_reduce.hpp [4:6]
+ boost/compute/algorithm/detail/serial_reduce_by_key.hpp [4:6]
+ boost/compute/algorithm/detail/serial_scan.hpp [4:6]
+ boost/compute/algorithm/equal.hpp [4:6]
+ boost/compute/algorithm/equal_range.hpp [4:6]
+ boost/compute/algorithm/exclusive_scan.hpp [4:6]
+ boost/compute/algorithm/fill.hpp [4:6]
+ boost/compute/algorithm/fill_n.hpp [4:6]
+ boost/compute/algorithm/find.hpp [4:6]
+ boost/compute/algorithm/find_end.hpp [4:6]
+ boost/compute/algorithm/find_if.hpp [4:6]
+ boost/compute/algorithm/find_if_not.hpp [4:6]
+ boost/compute/algorithm/for_each.hpp [4:6]
+ boost/compute/algorithm/for_each_n.hpp [4:6]
+ boost/compute/algorithm/gather.hpp [4:6]
+ boost/compute/algorithm/generate.hpp [4:6]
+ boost/compute/algorithm/generate_n.hpp [4:6]
+ boost/compute/algorithm/includes.hpp [4:6]
+ boost/compute/algorithm/inclusive_scan.hpp [4:6]
+ boost/compute/algorithm/inner_product.hpp [4:6]
+ boost/compute/algorithm/inplace_merge.hpp [4:6]
+ boost/compute/algorithm/iota.hpp [4:6]
+ boost/compute/algorithm/is_partitioned.hpp [4:6]
+ boost/compute/algorithm/is_permutation.hpp [4:6]
+ boost/compute/algorithm/is_sorted.hpp [4:6]
+ boost/compute/algorithm/lexicographical_compare.hpp [4:6]
+ boost/compute/algorithm/lower_bound.hpp [4:6]
+ boost/compute/algorithm/max_element.hpp [4:6]
+ boost/compute/algorithm/merge.hpp [4:6]
+ boost/compute/algorithm/min_element.hpp [4:6]
+ boost/compute/algorithm/minmax_element.hpp [4:6]
+ boost/compute/algorithm/mismatch.hpp [4:6]
+ boost/compute/algorithm/next_permutation.hpp [4:6]
+ boost/compute/algorithm/none_of.hpp [4:6]
+ boost/compute/algorithm/nth_element.hpp [4:6]
+ boost/compute/algorithm/partial_sum.hpp [4:6]
+ boost/compute/algorithm/partition.hpp [4:6]
+ boost/compute/algorithm/partition_copy.hpp [4:6]
+ boost/compute/algorithm/partition_point.hpp [4:6]
+ boost/compute/algorithm/prev_permutation.hpp [4:6]
+ boost/compute/algorithm/random_shuffle.hpp [4:6]
+ boost/compute/algorithm/reduce.hpp [4:6]
+ boost/compute/algorithm/reduce_by_key.hpp [4:6]
+ boost/compute/algorithm/remove.hpp [4:6]
+ boost/compute/algorithm/remove_if.hpp [4:6]
+ boost/compute/algorithm/replace.hpp [4:6]
+ boost/compute/algorithm/replace_copy.hpp [4:6]
+ boost/compute/algorithm/reverse.hpp [4:6]
+ boost/compute/algorithm/reverse_copy.hpp [4:6]
+ boost/compute/algorithm/rotate.hpp [4:6]
+ boost/compute/algorithm/rotate_copy.hpp [4:6]
+ boost/compute/algorithm/scatter.hpp [4:6]
+ boost/compute/algorithm/scatter_if.hpp [4:6]
+ boost/compute/algorithm/search.hpp [4:6]
+ boost/compute/algorithm/search_n.hpp [4:6]
+ boost/compute/algorithm/set_difference.hpp [4:6]
+ boost/compute/algorithm/set_intersection.hpp [4:6]
+ boost/compute/algorithm/set_symmetric_difference.hpp [4:6]
+ boost/compute/algorithm/set_union.hpp [4:6]
+ boost/compute/algorithm/sort.hpp [4:6]
+ boost/compute/algorithm/sort_by_key.hpp [4:6]
+ boost/compute/algorithm/stable_partition.hpp [4:6]
+ boost/compute/algorithm/stable_sort.hpp [4:6]
+ boost/compute/algorithm/stable_sort_by_key.hpp [4:6]
+ boost/compute/algorithm/swap_ranges.hpp [4:6]
+ boost/compute/algorithm/transform.hpp [4:6]
+ boost/compute/algorithm/transform_if.hpp [4:6]
+ boost/compute/algorithm/transform_reduce.hpp [4:6]
+ boost/compute/algorithm/unique.hpp [4:6]
+ boost/compute/algorithm/unique_copy.hpp [4:6]
+ boost/compute/algorithm/upper_bound.hpp [4:6]
+ boost/compute/allocator.hpp [4:6]
+ boost/compute/allocator/buffer_allocator.hpp [4:6]
+ boost/compute/allocator/pinned_allocator.hpp [4:6]
+ boost/compute/async.hpp [4:6]
+ boost/compute/async/future.hpp [4:6]
+ boost/compute/async/wait.hpp [4:6]
+ boost/compute/async/wait_guard.hpp [4:6]
+ boost/compute/buffer.hpp [4:6]
+ boost/compute/cl.hpp [4:6]
+ boost/compute/cl_ext.hpp [4:6]
+ boost/compute/closure.hpp [4:6]
+ boost/compute/command_queue.hpp [4:6]
+ boost/compute/config.hpp [4:6]
+ boost/compute/container.hpp [4:6]
+ boost/compute/container/array.hpp [4:6]
+ boost/compute/container/basic_string.hpp [4:6]
+ boost/compute/container/detail/scalar.hpp [4:6]
+ boost/compute/container/dynamic_bitset.hpp [4:6]
+ boost/compute/container/flat_map.hpp [4:6]
+ boost/compute/container/flat_set.hpp [4:6]
+ boost/compute/container/mapped_view.hpp [4:6]
+ boost/compute/container/stack.hpp [4:6]
+ boost/compute/container/string.hpp [4:6]
+ boost/compute/container/valarray.hpp [4:6]
+ boost/compute/container/vector.hpp [4:6]
+ boost/compute/context.hpp [4:6]
+ boost/compute/core.hpp [4:6]
+ boost/compute/detail/assert_cl_success.hpp [4:6]
+ boost/compute/detail/buffer_value.hpp [4:6]
+ boost/compute/detail/device_ptr.hpp [4:6]
+ boost/compute/detail/diagnostic.hpp [4:6]
+ boost/compute/detail/duration.hpp [4:6]
+ boost/compute/detail/get_object_info.hpp [4:6]
+ boost/compute/detail/getenv.hpp [4:6]
+ boost/compute/detail/global_static.hpp [4:6]
+ boost/compute/detail/is_buffer_iterator.hpp [4:6]
+ boost/compute/detail/is_contiguous_iterator.hpp [4:6]
+ boost/compute/detail/iterator_plus_distance.hpp [4:6]
+ boost/compute/detail/iterator_range_size.hpp [4:6]
+ boost/compute/detail/iterator_traits.hpp [4:6]
+ boost/compute/detail/literal.hpp [4:6]
+ boost/compute/detail/lru_cache.hpp [4:6]
+ boost/compute/detail/meta_kernel.hpp [4:6]
+ boost/compute/detail/mpl_vector_to_tuple.hpp [4:6]
+ boost/compute/detail/nvidia_compute_capability.hpp [4:6]
+ boost/compute/detail/parameter_cache.hpp [4:6]
+ boost/compute/detail/path.hpp [4:6]
+ boost/compute/detail/print_range.hpp [4:6]
+ boost/compute/detail/read_write_single_value.hpp [4:6]
+ boost/compute/detail/sha1.hpp [4:6]
+ boost/compute/detail/vendor.hpp [4:6]
+ boost/compute/detail/work_size.hpp [4:6]
+ boost/compute/device.hpp [4:6]
+ boost/compute/event.hpp [4:6]
+ boost/compute/exception.hpp [4:6]
+ boost/compute/exception/context_error.hpp [4:6]
+ boost/compute/exception/no_device_found.hpp [4:6]
+ boost/compute/exception/opencl_error.hpp [4:6]
+ boost/compute/exception/unsupported_extension_error.hpp [4:6]
+ boost/compute/experimental/clamp_range.hpp [4:6]
+ boost/compute/experimental/malloc.hpp [4:6]
+ boost/compute/experimental/sort_by_transform.hpp [4:6]
+ boost/compute/experimental/tabulate.hpp [4:6]
+ boost/compute/function.hpp [4:6]
+ boost/compute/functional.hpp [4:6]
+ boost/compute/functional/as.hpp [4:6]
+ boost/compute/functional/atomic.hpp [4:6]
+ boost/compute/functional/bind.hpp [4:6]
+ boost/compute/functional/common.hpp [4:6]
+ boost/compute/functional/convert.hpp [4:6]
+ boost/compute/functional/detail/macros.hpp [4:6]
+ boost/compute/functional/detail/nvidia_ballot.hpp [4:6]
+ boost/compute/functional/detail/nvidia_popcount.hpp [4:6]
+ boost/compute/functional/detail/unpack.hpp [4:6]
+ boost/compute/functional/field.hpp [4:6]
+ boost/compute/functional/geometry.hpp [4:6]
+ boost/compute/functional/get.hpp [4:6]
+ boost/compute/functional/hash.hpp [4:6]
+ boost/compute/functional/identity.hpp [4:6]
+ boost/compute/functional/integer.hpp [4:6]
+ boost/compute/functional/logical.hpp [4:6]
+ boost/compute/functional/math.hpp [4:6]
+ boost/compute/functional/operator.hpp [4:6]
+ boost/compute/functional/popcount.hpp [4:6]
+ boost/compute/functional/relational.hpp [4:6]
+ boost/compute/image.hpp [4:6]
+ boost/compute/image/image1d.hpp [4:6]
+ boost/compute/image/image2d.hpp [4:6]
+ boost/compute/image/image3d.hpp [4:6]
+ boost/compute/image/image_format.hpp [4:6]
+ boost/compute/image/image_object.hpp [4:6]
+ boost/compute/image/image_sampler.hpp [4:6]
+ boost/compute/image2d.hpp [4:6]
+ boost/compute/image3d.hpp [4:6]
+ boost/compute/image_format.hpp [4:6]
+ boost/compute/image_sampler.hpp [4:6]
+ boost/compute/interop/eigen.hpp [4:6]
+ boost/compute/interop/eigen/core.hpp [4:6]
+ boost/compute/interop/opencv.hpp [4:6]
+ boost/compute/interop/opencv/core.hpp [4:6]
+ boost/compute/interop/opencv/highgui.hpp [4:6]
+ boost/compute/interop/opencv/ocl.hpp [4:6]
+ boost/compute/interop/opengl.hpp [4:6]
+ boost/compute/interop/opengl/acquire.hpp [4:6]
+ boost/compute/interop/opengl/cl_gl.hpp [4:6]
+ boost/compute/interop/opengl/cl_gl_ext.hpp [4:6]
+ boost/compute/interop/opengl/context.hpp [4:6]
+ boost/compute/interop/opengl/gl.hpp [4:6]
+ boost/compute/interop/opengl/opengl_buffer.hpp [4:6]
+ boost/compute/interop/opengl/opengl_renderbuffer.hpp [4:6]
+ boost/compute/interop/opengl/opengl_texture.hpp [4:6]
+ boost/compute/interop/qt.hpp [4:6]
+ boost/compute/interop/qt/qimage.hpp [4:6]
+ boost/compute/interop/qt/qpoint.hpp [4:6]
+ boost/compute/interop/qt/qpointf.hpp [4:6]
+ boost/compute/interop/qt/qtcore.hpp [4:6]
+ boost/compute/interop/qt/qtgui.hpp [4:6]
+ boost/compute/interop/qt/qvector.hpp [4:6]
+ boost/compute/interop/vtk.hpp [4:6]
+ boost/compute/interop/vtk/bounds.hpp [4:6]
+ boost/compute/interop/vtk/data_array.hpp [4:6]
+ boost/compute/interop/vtk/matrix4x4.hpp [4:6]
+ boost/compute/interop/vtk/points.hpp [4:6]
+ boost/compute/iterator.hpp [4:6]
+ boost/compute/iterator/buffer_iterator.hpp [4:6]
+ boost/compute/iterator/constant_buffer_iterator.hpp [4:6]
+ boost/compute/iterator/constant_iterator.hpp [4:6]
+ boost/compute/iterator/counting_iterator.hpp [4:6]
+ boost/compute/iterator/detail/get_base_iterator_buffer.hpp [4:6]
+ boost/compute/iterator/detail/swizzle_iterator.hpp [4:6]
+ boost/compute/iterator/discard_iterator.hpp [4:6]
+ boost/compute/iterator/function_input_iterator.hpp [4:6]
+ boost/compute/iterator/permutation_iterator.hpp [4:6]
+ boost/compute/iterator/strided_iterator.hpp [4:6]
+ boost/compute/iterator/transform_iterator.hpp [4:6]
+ boost/compute/iterator/zip_iterator.hpp [4:6]
+ boost/compute/kernel.hpp [4:6]
+ boost/compute/lambda.hpp [4:6]
+ boost/compute/lambda/context.hpp [4:6]
+ boost/compute/lambda/functional.hpp [4:6]
+ boost/compute/lambda/get.hpp [4:6]
+ boost/compute/lambda/make_pair.hpp [4:6]
+ boost/compute/lambda/make_tuple.hpp [4:6]
+ boost/compute/lambda/placeholder.hpp [4:6]
+ boost/compute/lambda/placeholders.hpp [4:6]
+ boost/compute/lambda/result_of.hpp [4:6]
+ boost/compute/memory.hpp [4:6]
+ boost/compute/memory/local_buffer.hpp [4:6]
+ boost/compute/memory/svm_ptr.hpp [4:6]
+ boost/compute/memory_object.hpp [4:6]
+ boost/compute/pipe.hpp [4:6]
+ boost/compute/platform.hpp [4:6]
+ boost/compute/program.hpp [4:6]
+ boost/compute/random.hpp [4:6]
+ boost/compute/random/bernoulli_distribution.hpp [4:6]
+ boost/compute/random/default_random_engine.hpp [4:6]
+ boost/compute/random/discrete_distribution.hpp [4:6]
+ boost/compute/random/linear_congruential_engine.hpp [4:6]
+ boost/compute/random/mersenne_twister_engine.hpp [4:6]
+ boost/compute/random/normal_distribution.hpp [4:6]
+ boost/compute/random/threefry_engine.hpp [4:6]
+ boost/compute/random/uniform_int_distribution.hpp [4:6]
+ boost/compute/random/uniform_real_distribution.hpp [4:6]
+ boost/compute/source.hpp [4:6]
+ boost/compute/svm.hpp [4:6]
+ boost/compute/system.hpp [4:6]
+ boost/compute/type_traits.hpp [4:6]
+ boost/compute/type_traits/common_type.hpp [4:6]
+ boost/compute/type_traits/detail/capture_traits.hpp [4:6]
+ boost/compute/type_traits/is_device_iterator.hpp [4:6]
+ boost/compute/type_traits/is_fundamental.hpp [4:6]
+ boost/compute/type_traits/is_vector_type.hpp [4:6]
+ boost/compute/type_traits/make_vector_type.hpp [4:6]
+ boost/compute/type_traits/result_of.hpp [4:6]
+ boost/compute/type_traits/scalar_type.hpp [4:6]
+ boost/compute/type_traits/type_definition.hpp [4:6]
+ boost/compute/type_traits/type_name.hpp [4:6]
+ boost/compute/type_traits/vector_size.hpp [4:6]
+ boost/compute/types.hpp [4:6]
+ boost/compute/types/builtin.hpp [4:6]
+ boost/compute/types/complex.hpp [4:6]
+ boost/compute/types/fundamental.hpp [4:6]
+ boost/compute/types/pair.hpp [4:6]
+ boost/compute/types/size_t.hpp [4:6]
+ boost/compute/types/struct.hpp [4:6]
+ boost/compute/types/tuple.hpp [4:6]
+ boost/compute/user_event.hpp [4:6]
+ boost/compute/utility.hpp [4:6]
+ boost/compute/utility/dim.hpp [4:6]
+ boost/compute/utility/extents.hpp [4:6]
+ boost/compute/utility/invoke.hpp [4:6]
+ boost/compute/utility/program_cache.hpp [4:6]
+ boost/compute/utility/source.hpp [4:6]
+ boost/compute/utility/wait_list.hpp [4:6]
+ boost/compute/version.hpp [4:6]
+ boost/compute/wait_list.hpp [4:6]
+
+KEEP BSL-1.0 ee822d50ddfbcc656f14b57a196ccef9
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/functional/overloaded_function.hpp at line 4, boost/functional/overloaded_function/config.hpp at line 4, boost/functional/overloaded_function/detail/base.hpp at line 4, boost/functional/overloaded_function/detail/function_type.hpp at line 4, boost/local_function.hpp at line 4, boost/local_function/aux_/add_pointed_const.hpp at line 4, boost/local_function/aux_/function.hpp at line 4, boost/local_function/aux_/macro/code_/bind.hpp at line 4, boost/local_function/aux_/macro/code_/functor.hpp at line 4, boost/local_function/aux_/macro/code_/result.hpp at line 4, boost/local_function/aux_/macro/decl.hpp at line 4, boost/local_function/aux_/macro/name.hpp at line 4, boost/local_function/aux_/macro/typeof.hpp at line 4, boost/local_function/aux_/member.hpp at line 4, boost/local_function/aux_/nobind.hpp at line 4, boost/local_function/aux_/preprocessor/traits/bind.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_/append.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_/index.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_/nil.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_/set_error.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_/validate.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_/validate_/return_count.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_/validate_/this_count.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_binds.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_const_binds.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_error.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_params.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_returns.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_sign_/any_bind_type.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_sign_/sign.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_sign_/validate.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_sign_/validate_/defaults.hpp at line 4, boost/local_function/aux_/preprocessor/traits/decl_sign_/validate_/this.hpp at line 4, boost/local_function/aux_/preprocessor/traits/param.hpp at line 4, boost/local_function/aux_/symbol.hpp at line 4, boost/local_function/config.hpp at line 4, boost/local_function/detail/preprocessor/keyword/auto.hpp at line 4, boost/local_function/detail/preprocessor/keyword/bind.hpp at line 4, boost/local_function/detail/preprocessor/keyword/const.hpp at line 4, boost/local_function/detail/preprocessor/keyword/const_bind.hpp at line 4, boost/local_function/detail/preprocessor/keyword/default.hpp at line 4, boost/local_function/detail/preprocessor/keyword/facility/add.hpp at line 4, boost/local_function/detail/preprocessor/keyword/facility/is.hpp at line 4, boost/local_function/detail/preprocessor/keyword/facility/remove.hpp at line 4, boost/local_function/detail/preprocessor/keyword/inline.hpp at line 4, boost/local_function/detail/preprocessor/keyword/recursive.hpp at line 4, boost/local_function/detail/preprocessor/keyword/register.hpp at line 4, boost/local_function/detail/preprocessor/keyword/return.hpp at line 4, boost/local_function/detail/preprocessor/keyword/this.hpp at line 4, boost/local_function/detail/preprocessor/keyword/thisunderscore.hpp at line 4, boost/local_function/detail/preprocessor/keyword/void.hpp at line 4, boost/local_function/detail/preprocessor/line_counter.hpp at line 4, boost/utility/identity_type.hpp at line 4
+ License text:
+ // Distributed under the Boost Software License, Version 1.0
+ // (see accompanying file LICENSE_1_0.txt or a copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/functional/overloaded_function.hpp [3:5]
+ boost/functional/overloaded_function/config.hpp [3:5]
+ boost/functional/overloaded_function/detail/base.hpp [3:5]
+ boost/functional/overloaded_function/detail/function_type.hpp [3:5]
+ boost/local_function.hpp [3:5]
+ boost/local_function/aux_/add_pointed_const.hpp [3:5]
+ boost/local_function/aux_/function.hpp [3:5]
+ boost/local_function/aux_/macro/code_/bind.hpp [3:5]
+ boost/local_function/aux_/macro/code_/functor.hpp [3:5]
+ boost/local_function/aux_/macro/code_/result.hpp [3:5]
+ boost/local_function/aux_/macro/decl.hpp [3:5]
+ boost/local_function/aux_/macro/name.hpp [3:5]
+ boost/local_function/aux_/macro/typeof.hpp [3:5]
+ boost/local_function/aux_/member.hpp [3:5]
+ boost/local_function/aux_/nobind.hpp [3:5]
+ boost/local_function/aux_/preprocessor/traits/bind.hpp [3:5]
+ boost/local_function/aux_/preprocessor/traits/decl.hpp [3:5]
+ boost/local_function/aux_/preprocessor/traits/decl_/append.hpp [3:5]
+ boost/local_function/aux_/preprocessor/traits/decl_/index.hpp [3:5]
+ boost/local_function/aux_/preprocessor/traits/decl_/nil.hpp [3:5]
+ boost/local_function/aux_/preprocessor/traits/decl_/set_error.hpp [3:5]
+ boost/local_function/aux_/preprocessor/traits/decl_/validate.hpp [3:5]
+ boost/local_function/aux_/preprocessor/traits/decl_/validate_/return_count.hpp [3:5]
+ boost/local_function/aux_/preprocessor/traits/decl_/validate_/this_count.hpp [3:5]
+ boost/local_function/aux_/preprocessor/traits/decl_binds.hpp [3:5]
+ boost/local_function/aux_/preprocessor/traits/decl_const_binds.hpp [3:5]
+ boost/local_function/aux_/preprocessor/traits/decl_error.hpp [3:5]
+ boost/local_function/aux_/preprocessor/traits/decl_params.hpp [3:5]
+ boost/local_function/aux_/preprocessor/traits/decl_returns.hpp [3:5]
+ boost/local_function/aux_/preprocessor/traits/decl_sign_/any_bind_type.hpp [3:5]
+ boost/local_function/aux_/preprocessor/traits/decl_sign_/sign.hpp [3:5]
+ boost/local_function/aux_/preprocessor/traits/decl_sign_/validate.hpp [3:5]
+ boost/local_function/aux_/preprocessor/traits/decl_sign_/validate_/defaults.hpp [3:5]
+ boost/local_function/aux_/preprocessor/traits/decl_sign_/validate_/this.hpp [3:5]
+ boost/local_function/aux_/preprocessor/traits/param.hpp [3:5]
+ boost/local_function/aux_/symbol.hpp [3:5]
+ boost/local_function/config.hpp [3:5]
+ boost/local_function/detail/preprocessor/keyword/auto.hpp [3:5]
+ boost/local_function/detail/preprocessor/keyword/bind.hpp [3:5]
+ boost/local_function/detail/preprocessor/keyword/const.hpp [3:5]
+ boost/local_function/detail/preprocessor/keyword/const_bind.hpp [3:5]
+ boost/local_function/detail/preprocessor/keyword/default.hpp [3:5]
+ boost/local_function/detail/preprocessor/keyword/facility/add.hpp [3:5]
+ boost/local_function/detail/preprocessor/keyword/facility/is.hpp [3:5]
+ boost/local_function/detail/preprocessor/keyword/facility/remove.hpp [3:5]
+ boost/local_function/detail/preprocessor/keyword/inline.hpp [3:5]
+ boost/local_function/detail/preprocessor/keyword/recursive.hpp [3:5]
+ boost/local_function/detail/preprocessor/keyword/register.hpp [3:5]
+ boost/local_function/detail/preprocessor/keyword/return.hpp [3:5]
+ boost/local_function/detail/preprocessor/keyword/this.hpp [3:5]
+ boost/local_function/detail/preprocessor/keyword/thisunderscore.hpp [3:5]
+ boost/local_function/detail/preprocessor/keyword/void.hpp [3:5]
+ boost/local_function/detail/preprocessor/line_counter.hpp [3:5]
+ boost/utility/identity_type.hpp [3:5]
+
+KEEP BSL-1.0 eeda69591b5957fb1dbf0286c30acb85
+BELONGS ya.make
+ License text:
+ Distributed under the Boost Software License, Version 1.0.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/align/align.hpp [5:5]
+ boost/align/align_down.hpp [5:5]
+ boost/align/align_up.hpp [5:5]
+ boost/align/alignment_of.hpp [5:5]
+ boost/align/alignment_of_forward.hpp [5:5]
+ boost/align/detail/addressof.hpp [5:5]
+ boost/align/detail/align.hpp [5:5]
+ boost/align/detail/align_cxx11.hpp [5:5]
+ boost/align/detail/align_down.hpp [5:5]
+ boost/align/detail/align_up.hpp [5:5]
+ boost/align/detail/alignment_of.hpp [5:5]
+ boost/align/detail/alignment_of_clang.hpp [5:5]
+ boost/align/detail/alignment_of_codegear.hpp [5:5]
+ boost/align/detail/alignment_of_cxx11.hpp [5:5]
+ boost/align/detail/alignment_of_gcc.hpp [5:5]
+ boost/align/detail/alignment_of_msvc.hpp [5:5]
+ boost/align/detail/element_type.hpp [5:5]
+ boost/align/detail/integral_constant.hpp [5:5]
+ boost/align/detail/is_alignment.hpp [5:5]
+ boost/align/detail/is_alignment_constant.hpp [5:5]
+ boost/align/detail/max_align.hpp [5:5]
+ boost/align/detail/max_objects.hpp [5:5]
+ boost/align/detail/max_size.hpp [5:5]
+ boost/align/detail/min_size.hpp [5:5]
+ boost/core/pointer_traits.hpp [5:5]
+ boost/make_unique.hpp [5:5]
+ boost/smart_ptr/allocate_local_shared_array.hpp [5:5]
+ boost/smart_ptr/make_local_shared_array.hpp [6:6]
+ boost/smart_ptr/make_shared_array.hpp [5:5]
+ boost/smart_ptr/make_unique.hpp [5:5]
+
+KEEP BSL-1.0 ef2bc99a1661a97a27956252dfd290a1
+BELONGS libs/serialization/ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: libs/serialization/src/void_cast.cpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 94.74
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ libs/serialization/src/void_cast.cpp [5:10]
+
+KEEP BSL-1.0 f0421be5a87b237d5f722433355f7a9e
+BELONGS libs/filesystem/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/interprocess/errors.hpp at line 16, libs/filesystem/src/portability.cpp at line 5
+ License text:
+ // Use, modification, and distribution is subject to the Boost Software
+ // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy
+ // at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/interprocess/errors.hpp [15:17]
+ libs/filesystem/src/portability.cpp [4:6]
+
+KEEP BSL-1.0 f061e3fef6f6b3386bb5d0db71ea0724
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: LicenseRef-scancode-boost-original
+ Score : 100.00
+ Match type : TEXT
+ Links : http://boost.org, https://github.com/boostorg/rational/blob/0fe0beca5397c812c4f85a7de0d0769de59e12e0/include/boost/rational.hpp, https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/boost-original.LICENSE
+ Files with this license:
+ boost/intrusive/splaytree_algorithms.hpp [23:26]
+
+KEEP BSL-1.0 f20f9faff5dff60d6b8844771d700dd5
+BELONGS libs/random/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/array.hpp at line 13, boost/checked_delete.hpp at line 5, boost/detail/lightweight_test.hpp at line 5, boost/detail/no_exceptions_support.hpp at line 5, boost/detail/scoped_enum_emulation.hpp at line 5, boost/graph/bipartite.hpp at line 8, boost/integer_traits.hpp at line 5, boost/noncopyable.hpp at line 5, boost/nondet_random.hpp at line 5, boost/numeric/ublas/operation/begin.hpp at line 11, boost/numeric/ublas/operation/c_array.hpp at line 11, boost/numeric/ublas/operation/end.hpp at line 11, boost/numeric/ublas/operation/num_columns.hpp at line 11, boost/numeric/ublas/operation/num_rows.hpp at line 11, boost/numeric/ublas/operation/size.hpp at line 9, boost/numeric/ublas/operations.hpp at line 11, boost/numeric/ublas/tags.hpp at line 11, boost/numeric/ublas/traits/c_array.hpp at line 11, boost/numeric/ublas/traits/const_iterator_type.hpp at line 11, boost/numeric/ublas/traits/iterator_type.hpp at line 11, boost/random.hpp at line 5, boost/random/beta_distribution.hpp at line 5, boost/random/binomial_distribution.hpp at line 5, boost/random/chi_squared_distribution.hpp at line 5, boost/random/detail/auto_link.hpp at line 5, boost/random/detail/config.hpp at line 5, boost/random/detail/disable_warnings.hpp at line 5, boost/random/detail/enable_warnings.hpp at line 5, boost/random/detail/generator_bits.hpp at line 5, boost/random/detail/generator_seed_seq.hpp at line 6, boost/random/detail/int_float_pair.hpp at line 6, boost/random/detail/integer_log2.hpp at line 5, boost/random/detail/large_arithmetic.hpp at line 5, boost/random/detail/operators.hpp at line 5, boost/random/detail/polynomial.hpp at line 5, boost/random/detail/ptr_helper.hpp at line 5, boost/random/detail/seed.hpp at line 5, boost/random/detail/seed_impl.hpp at line 5, boost/random/detail/signed_unsigned_tools.hpp at line 5, boost/random/detail/uniform_int_float.hpp at line 6, boost/random/detail/vector_io.hpp at line 5, boost/random/discrete_distribution.hpp at line 5, boost/random/extreme_value_distribution.hpp at line 5, boost/random/fisher_f_distribution.hpp at line 5, boost/random/gamma_distribution.hpp at line 6, boost/random/generate_canonical.hpp at line 5, boost/random/hyperexponential_distribution.hpp at line 5, boost/random/independent_bits.hpp at line 5, boost/random/laplace_distribution.hpp at line 5, boost/random/linear_feedback_shift.hpp at line 6, boost/random/negative_binomial_distribution.hpp at line 5, boost/random/non_central_chi_squared_distribution.hpp at line 6, boost/random/piecewise_constant_distribution.hpp at line 5, boost/random/piecewise_linear_distribution.hpp at line 5, boost/random/poisson_distribution.hpp at line 6, boost/random/random_device.hpp at line 6, boost/random/seed_seq.hpp at line 5, boost/random/shuffle_order.hpp at line 6, boost/random/student_t_distribution.hpp at line 5, boost/random/taus88.hpp at line 6, boost/random/traits.hpp at line 5, boost/random/uniform_real_distribution.hpp at line 6, boost/random/variate_generator.hpp at line 6, boost/random/weibull_distribution.hpp at line 5, boost/random/xor_combine.hpp at line 5, boost/ref.hpp at line 5, boost/signals/detail/config.hpp at line 10, boost/swap.hpp at line 5, boost/utility/addressof.hpp at line 5, boost/utility/enable_if.hpp at line 5, boost/utility/explicit_operator_bool.hpp at line 5, boost/utility/swap.hpp at line 5, libs/random/src/random_device.cpp at line 6
+ License text:
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/array.hpp [12:14]
+ boost/checked_delete.hpp [4:6]
+ boost/detail/lightweight_test.hpp [4:6]
+ boost/detail/no_exceptions_support.hpp [4:6]
+ boost/detail/scoped_enum_emulation.hpp [4:6]
+ boost/graph/bipartite.hpp [7:9]
+ boost/integer_traits.hpp [4:6]
+ boost/noncopyable.hpp [4:6]
+ boost/nondet_random.hpp [4:6]
+ boost/numeric/ublas/operation/begin.hpp [10:12]
+ boost/numeric/ublas/operation/c_array.hpp [10:12]
+ boost/numeric/ublas/operation/end.hpp [10:12]
+ boost/numeric/ublas/operation/num_columns.hpp [10:12]
+ boost/numeric/ublas/operation/num_rows.hpp [10:12]
+ boost/numeric/ublas/operation/size.hpp [8:10]
+ boost/numeric/ublas/operations.hpp [10:12]
+ boost/numeric/ublas/tags.hpp [10:12]
+ boost/numeric/ublas/traits/c_array.hpp [10:12]
+ boost/numeric/ublas/traits/const_iterator_type.hpp [10:12]
+ boost/numeric/ublas/traits/iterator_type.hpp [10:12]
+ boost/random.hpp [4:6]
+ boost/random/beta_distribution.hpp [4:6]
+ boost/random/binomial_distribution.hpp [4:6]
+ boost/random/chi_squared_distribution.hpp [4:6]
+ boost/random/detail/auto_link.hpp [4:6]
+ boost/random/detail/config.hpp [4:6]
+ boost/random/detail/disable_warnings.hpp [4:6]
+ boost/random/detail/enable_warnings.hpp [4:6]
+ boost/random/detail/generator_bits.hpp [4:6]
+ boost/random/detail/generator_seed_seq.hpp [5:7]
+ boost/random/detail/int_float_pair.hpp [5:7]
+ boost/random/detail/integer_log2.hpp [4:6]
+ boost/random/detail/large_arithmetic.hpp [4:6]
+ boost/random/detail/operators.hpp [4:6]
+ boost/random/detail/polynomial.hpp [4:6]
+ boost/random/detail/ptr_helper.hpp [4:6]
+ boost/random/detail/seed.hpp [4:6]
+ boost/random/detail/seed_impl.hpp [4:6]
+ boost/random/detail/signed_unsigned_tools.hpp [4:6]
+ boost/random/detail/uniform_int_float.hpp [5:7]
+ boost/random/detail/vector_io.hpp [4:6]
+ boost/random/discrete_distribution.hpp [4:6]
+ boost/random/extreme_value_distribution.hpp [4:6]
+ boost/random/fisher_f_distribution.hpp [4:6]
+ boost/random/gamma_distribution.hpp [5:7]
+ boost/random/generate_canonical.hpp [4:6]
+ boost/random/hyperexponential_distribution.hpp [4:6]
+ boost/random/independent_bits.hpp [4:6]
+ boost/random/laplace_distribution.hpp [4:6]
+ boost/random/linear_feedback_shift.hpp [5:7]
+ boost/random/negative_binomial_distribution.hpp [4:6]
+ boost/random/non_central_chi_squared_distribution.hpp [5:7]
+ boost/random/piecewise_constant_distribution.hpp [4:6]
+ boost/random/piecewise_linear_distribution.hpp [4:6]
+ boost/random/poisson_distribution.hpp [5:7]
+ boost/random/random_device.hpp [5:7]
+ boost/random/seed_seq.hpp [4:6]
+ boost/random/shuffle_order.hpp [5:7]
+ boost/random/student_t_distribution.hpp [4:6]
+ boost/random/taus88.hpp [5:7]
+ boost/random/traits.hpp [4:6]
+ boost/random/uniform_real_distribution.hpp [5:7]
+ boost/random/variate_generator.hpp [5:7]
+ boost/random/weibull_distribution.hpp [4:6]
+ boost/random/xor_combine.hpp [4:6]
+ boost/ref.hpp [4:6]
+ boost/signals/detail/config.hpp [9:11]
+ boost/swap.hpp [4:6]
+ boost/utility/addressof.hpp [4:6]
+ boost/utility/enable_if.hpp [4:6]
+ boost/utility/explicit_operator_bool.hpp [4:6]
+ boost/utility/swap.hpp [4:6]
+ libs/random/src/random_device.cpp [5:7]
+
+KEEP BSL-1.0 f262303c7ce4d7bb32412cf8e6aa42e5
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/algorithm/string.hpp at line 6, boost/algorithm/string/case_conv.hpp at line 6, boost/algorithm/string/classification.hpp at line 6, boost/algorithm/string/compare.hpp at line 6, boost/algorithm/string/concept.hpp at line 6, boost/algorithm/string/config.hpp at line 6, boost/algorithm/string/constants.hpp at line 6, boost/algorithm/string/detail/case_conv.hpp at line 6, boost/algorithm/string/detail/classification.hpp at line 6, boost/algorithm/string/detail/find_format.hpp at line 6, boost/algorithm/string/detail/find_format_all.hpp at line 6, boost/algorithm/string/detail/find_format_store.hpp at line 6, boost/algorithm/string/detail/find_iterator.hpp at line 6, boost/algorithm/string/detail/finder.hpp at line 6, boost/algorithm/string/detail/finder_regex.hpp at line 6, boost/algorithm/string/detail/formatter_regex.hpp at line 6, boost/algorithm/string/detail/predicate.hpp at line 6, boost/algorithm/string/detail/replace_storage.hpp at line 6, boost/algorithm/string/detail/sequence.hpp at line 6, boost/algorithm/string/detail/trim.hpp at line 6, boost/algorithm/string/detail/util.hpp at line 6, boost/algorithm/string/erase.hpp at line 6, boost/algorithm/string/find.hpp at line 6, boost/algorithm/string/find_format.hpp at line 6, boost/algorithm/string/find_iterator.hpp at line 6, boost/algorithm/string/finder.hpp at line 6, boost/algorithm/string/formatter.hpp at line 6, boost/algorithm/string/iter_find.hpp at line 6, boost/algorithm/string/join.hpp at line 6, boost/algorithm/string/predicate.hpp at line 6, boost/algorithm/string/predicate_facade.hpp at line 6, boost/algorithm/string/regex.hpp at line 6, boost/algorithm/string/regex_find_format.hpp at line 6, boost/algorithm/string/replace.hpp at line 6, boost/algorithm/string/sequence_traits.hpp at line 6, boost/algorithm/string/split.hpp at line 6, boost/algorithm/string/std/list_traits.hpp at line 6, boost/algorithm/string/std/rope_traits.hpp at line 6, boost/algorithm/string/std/slist_traits.hpp at line 6, boost/algorithm/string/std/string_traits.hpp at line 6, boost/algorithm/string/std_containers_traits.hpp at line 6, boost/algorithm/string/trim.hpp at line 6, boost/algorithm/string/trim_all.hpp at line 6, boost/algorithm/string/yes_no_type.hpp at line 6, boost/algorithm/string_regex.hpp at line 6
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/algorithm/string.hpp [5:9]
+ boost/algorithm/string/case_conv.hpp [5:9]
+ boost/algorithm/string/classification.hpp [5:9]
+ boost/algorithm/string/compare.hpp [5:9]
+ boost/algorithm/string/concept.hpp [5:9]
+ boost/algorithm/string/config.hpp [5:9]
+ boost/algorithm/string/constants.hpp [5:9]
+ boost/algorithm/string/detail/case_conv.hpp [5:9]
+ boost/algorithm/string/detail/classification.hpp [5:9]
+ boost/algorithm/string/detail/find_format.hpp [5:9]
+ boost/algorithm/string/detail/find_format_all.hpp [5:9]
+ boost/algorithm/string/detail/find_format_store.hpp [5:9]
+ boost/algorithm/string/detail/find_iterator.hpp [5:9]
+ boost/algorithm/string/detail/finder.hpp [5:9]
+ boost/algorithm/string/detail/finder_regex.hpp [5:9]
+ boost/algorithm/string/detail/formatter_regex.hpp [5:9]
+ boost/algorithm/string/detail/predicate.hpp [5:9]
+ boost/algorithm/string/detail/replace_storage.hpp [5:9]
+ boost/algorithm/string/detail/sequence.hpp [5:9]
+ boost/algorithm/string/detail/trim.hpp [5:9]
+ boost/algorithm/string/detail/util.hpp [5:9]
+ boost/algorithm/string/erase.hpp [5:9]
+ boost/algorithm/string/find.hpp [5:9]
+ boost/algorithm/string/find_format.hpp [5:9]
+ boost/algorithm/string/find_iterator.hpp [5:9]
+ boost/algorithm/string/finder.hpp [5:9]
+ boost/algorithm/string/formatter.hpp [5:9]
+ boost/algorithm/string/iter_find.hpp [5:9]
+ boost/algorithm/string/join.hpp [5:9]
+ boost/algorithm/string/predicate.hpp [5:9]
+ boost/algorithm/string/predicate_facade.hpp [5:9]
+ boost/algorithm/string/regex.hpp [5:9]
+ boost/algorithm/string/regex_find_format.hpp [5:9]
+ boost/algorithm/string/replace.hpp [5:9]
+ boost/algorithm/string/sequence_traits.hpp [5:9]
+ boost/algorithm/string/split.hpp [5:9]
+ boost/algorithm/string/std/list_traits.hpp [5:9]
+ boost/algorithm/string/std/rope_traits.hpp [5:9]
+ boost/algorithm/string/std/slist_traits.hpp [5:9]
+ boost/algorithm/string/std/string_traits.hpp [5:9]
+ boost/algorithm/string/std_containers_traits.hpp [5:9]
+ boost/algorithm/string/trim.hpp [5:9]
+ boost/algorithm/string/trim_all.hpp [5:9]
+ boost/algorithm/string/yes_no_type.hpp [5:9]
+ boost/algorithm/string_regex.hpp [5:9]
+
+KEEP BSL-1.0 f2a214a077783d66d0e315e633d467a7
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/polygon/detail/boolean_op.hpp at line 5, boost/polygon/detail/boolean_op_45.hpp at line 5, boost/polygon/detail/iterator_compact_to_points.hpp at line 5, boost/polygon/detail/iterator_geometry_to_set.hpp at line 5, boost/polygon/detail/iterator_points_to_compact.hpp at line 5, boost/polygon/detail/max_cover.hpp at line 5, boost/polygon/detail/minkowski.hpp at line 5, boost/polygon/detail/polygon_45_set_view.hpp at line 5, boost/polygon/detail/polygon_45_touch.hpp at line 5, boost/polygon/detail/polygon_90_set_view.hpp at line 5, boost/polygon/detail/polygon_90_touch.hpp at line 5, boost/polygon/detail/polygon_set_view.hpp at line 5, boost/polygon/detail/polygon_sort_adaptor.hpp at line 5, boost/polygon/detail/property_merge.hpp at line 5, boost/polygon/detail/property_merge_45.hpp at line 5, boost/polygon/detail/scan_arbitrary.hpp at line 5, boost/polygon/gmp_override.hpp at line 5, boost/polygon/gtl.hpp at line 5, boost/polygon/isotropy.hpp at line 5, boost/polygon/polygon.hpp at line 5, boost/polygon/polygon_45_data.hpp at line 5, boost/polygon/polygon_45_set_concept.hpp at line 5, boost/polygon/polygon_45_set_data.hpp at line 5, boost/polygon/polygon_45_set_traits.hpp at line 5, boost/polygon/polygon_45_with_holes_data.hpp at line 5, boost/polygon/polygon_90_data.hpp at line 5, boost/polygon/polygon_90_set_concept.hpp at line 5, boost/polygon/polygon_90_set_data.hpp at line 5, boost/polygon/polygon_90_set_traits.hpp at line 5, boost/polygon/polygon_90_with_holes_data.hpp at line 5, boost/polygon/polygon_data.hpp at line 5, boost/polygon/polygon_set_concept.hpp at line 5, boost/polygon/polygon_set_data.hpp at line 5, boost/polygon/polygon_set_traits.hpp at line 5, boost/polygon/polygon_traits.hpp at line 5, boost/polygon/polygon_with_holes_data.hpp at line 5, boost/polygon/rectangle_concept.hpp at line 5, boost/polygon/rectangle_data.hpp at line 5, boost/polygon/rectangle_traits.hpp at line 5, boost/polygon/segment_utils.hpp at line 5
+ License text:
+ Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt).
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/polygon/detail/boolean_op.hpp [4:6]
+ boost/polygon/detail/boolean_op_45.hpp [4:6]
+ boost/polygon/detail/iterator_compact_to_points.hpp [4:6]
+ boost/polygon/detail/iterator_geometry_to_set.hpp [4:6]
+ boost/polygon/detail/iterator_points_to_compact.hpp [4:6]
+ boost/polygon/detail/max_cover.hpp [4:6]
+ boost/polygon/detail/minkowski.hpp [4:6]
+ boost/polygon/detail/polygon_45_set_view.hpp [4:6]
+ boost/polygon/detail/polygon_45_touch.hpp [4:6]
+ boost/polygon/detail/polygon_90_set_view.hpp [4:6]
+ boost/polygon/detail/polygon_90_touch.hpp [4:6]
+ boost/polygon/detail/polygon_set_view.hpp [4:6]
+ boost/polygon/detail/polygon_sort_adaptor.hpp [4:6]
+ boost/polygon/detail/property_merge.hpp [4:6]
+ boost/polygon/detail/property_merge_45.hpp [4:6]
+ boost/polygon/detail/scan_arbitrary.hpp [4:6]
+ boost/polygon/gmp_override.hpp [4:6]
+ boost/polygon/gtl.hpp [4:6]
+ boost/polygon/isotropy.hpp [4:6]
+ boost/polygon/polygon.hpp [4:6]
+ boost/polygon/polygon_45_data.hpp [4:6]
+ boost/polygon/polygon_45_set_concept.hpp [4:6]
+ boost/polygon/polygon_45_set_data.hpp [4:6]
+ boost/polygon/polygon_45_set_traits.hpp [4:6]
+ boost/polygon/polygon_45_with_holes_data.hpp [4:6]
+ boost/polygon/polygon_90_data.hpp [4:6]
+ boost/polygon/polygon_90_set_concept.hpp [4:6]
+ boost/polygon/polygon_90_set_data.hpp [4:6]
+ boost/polygon/polygon_90_set_traits.hpp [4:6]
+ boost/polygon/polygon_90_with_holes_data.hpp [4:6]
+ boost/polygon/polygon_data.hpp [4:6]
+ boost/polygon/polygon_set_concept.hpp [4:6]
+ boost/polygon/polygon_set_data.hpp [4:6]
+ boost/polygon/polygon_set_traits.hpp [4:6]
+ boost/polygon/polygon_traits.hpp [4:6]
+ boost/polygon/polygon_with_holes_data.hpp [4:6]
+ boost/polygon/rectangle_concept.hpp [4:6]
+ boost/polygon/rectangle_data.hpp [4:6]
+ boost/polygon/rectangle_traits.hpp [4:6]
+ boost/polygon/segment_utils.hpp [4:6]
+
+KEEP BSL-1.0 f328b5d41ed9ab62066d53579e348e68
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/detail/is_sorted.hpp at line 5, boost/container/node_handle.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2016-2016. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/container/detail/is_sorted.hpp [3:5]
+ boost/container/node_handle.hpp [3:5]
+
+KEEP BSL-1.0 f722943fafba4cf1dfeba6f5929ae35d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/container/slist.hpp at line 5
+ License text:
+ // (C) Copyright Ion Gaztanaga 2004-2015. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/container/slist.hpp [3:5]
+
+KEEP BSL-1.0 f7fc7cf8401fcdc9ee199dd8d85831fb
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/cpp_bin_float/io.hpp at line 4, boost/multiprecision/cpp_int.hpp at line 4, boost/multiprecision/cpp_int/add.hpp at line 4, boost/multiprecision/cpp_int/bitwise.hpp at line 4, boost/multiprecision/cpp_int/cpp_int_config.hpp at line 4, boost/multiprecision/cpp_int/divide.hpp at line 4, boost/multiprecision/cpp_int/limits.hpp at line 4, boost/multiprecision/cpp_int/misc.hpp at line 4, boost/multiprecision/cpp_int/multiply.hpp at line 4, boost/multiprecision/float128.hpp at line 4
+ License text:
+ // Copyright 2012 John Maddock. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 92.59
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/multiprecision/cpp_bin_float/io.hpp [2:4]
+ boost/multiprecision/cpp_int.hpp [2:4]
+ boost/multiprecision/cpp_int/add.hpp [2:4]
+ boost/multiprecision/cpp_int/bitwise.hpp [2:4]
+ boost/multiprecision/cpp_int/cpp_int_config.hpp [2:4]
+ boost/multiprecision/cpp_int/divide.hpp [2:4]
+ boost/multiprecision/cpp_int/limits.hpp [2:4]
+ boost/multiprecision/cpp_int/misc.hpp [2:4]
+ boost/multiprecision/cpp_int/multiply.hpp [2:4]
+ boost/multiprecision/float128.hpp [2:4]
+
+KEEP BSL-1.0 f862443d1366b0002c5e50e5579b1c6e
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/math/interpolators/barycentric_rational.hpp at line 5, boost/math/interpolators/detail/barycentric_rational_detail.hpp at line 5
+ License text:
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/math/interpolators/barycentric_rational.hpp [3:5]
+ boost/math/interpolators/detail/barycentric_rational_detail.hpp [3:5]
+
+KEEP BSL-1.0 f9017d20b23c39e85a02ca3c65f61f86
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/range/adaptor/replaced.hpp at line 5, boost/range/adaptor/replaced_if.hpp at line 5, boost/range/adaptor/strided.hpp at line 5, boost/range/algorithm_ext.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/range/adaptor/replaced.hpp [3:6]
+ boost/range/adaptor/replaced_if.hpp [3:6]
+ boost/range/adaptor/strided.hpp [3:6]
+ boost/range/algorithm_ext.hpp [3:6]
+
+KEEP BSL-1.0 f978f4f2508f8a0c5f62f3f5ecedc8ce
+BELONGS libs/exception/ya.make ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/exception/all.hpp at line 4, boost/exception/current_exception_cast.hpp at line 4, boost/exception/detail/clone_current_exception.hpp at line 4, boost/exception/detail/error_info_impl.hpp at line 4, boost/exception/detail/exception_ptr.hpp at line 4, boost/exception/detail/is_output_streamable.hpp at line 4, boost/exception/detail/object_hex_dump.hpp at line 4, boost/exception/detail/shared_ptr.hpp at line 4, boost/exception/detail/type_info.hpp at line 4, boost/exception/diagnostic_information.hpp at line 4, boost/exception/enable_current_exception.hpp at line 4, boost/exception/enable_error_info.hpp at line 4, boost/exception/errinfo_api_function.hpp at line 4, boost/exception/errinfo_at_line.hpp at line 4, boost/exception/errinfo_errno.hpp at line 4, boost/exception/errinfo_file_handle.hpp at line 4, boost/exception/errinfo_file_name.hpp at line 4, boost/exception/errinfo_file_open_mode.hpp at line 4, boost/exception/errinfo_nested_exception.hpp at line 4, boost/exception/errinfo_type_info_name.hpp at line 4, boost/exception/error_info.hpp at line 4, boost/exception/exception.hpp at line 4, boost/exception/get_error_info.hpp at line 4, boost/exception/info.hpp at line 4, boost/exception/info_tuple.hpp at line 4, boost/exception/to_string.hpp at line 4, boost/exception/to_string_stub.hpp at line 4, boost/exception_ptr.hpp at line 4, libs/exception/src/clone_current_exception_non_intrusive.cpp at line 4
+ License text:
+ //Distributed under the Boost Software License, Version 1.0. (See accompanying
+ //file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/exception/all.hpp [3:4]
+ boost/exception/current_exception_cast.hpp [3:4]
+ boost/exception/detail/clone_current_exception.hpp [3:4]
+ boost/exception/detail/error_info_impl.hpp [3:4]
+ boost/exception/detail/exception_ptr.hpp [3:4]
+ boost/exception/detail/is_output_streamable.hpp [3:4]
+ boost/exception/detail/object_hex_dump.hpp [3:4]
+ boost/exception/detail/shared_ptr.hpp [3:4]
+ boost/exception/detail/type_info.hpp [3:4]
+ boost/exception/diagnostic_information.hpp [3:4]
+ boost/exception/enable_current_exception.hpp [3:4]
+ boost/exception/enable_error_info.hpp [3:4]
+ boost/exception/errinfo_api_function.hpp [3:4]
+ boost/exception/errinfo_at_line.hpp [3:4]
+ boost/exception/errinfo_errno.hpp [3:4]
+ boost/exception/errinfo_file_handle.hpp [3:4]
+ boost/exception/errinfo_file_name.hpp [3:4]
+ boost/exception/errinfo_file_open_mode.hpp [3:4]
+ boost/exception/errinfo_nested_exception.hpp [3:4]
+ boost/exception/errinfo_type_info_name.hpp [3:4]
+ boost/exception/error_info.hpp [3:4]
+ boost/exception/exception.hpp [3:4]
+ boost/exception/get_error_info.hpp [3:4]
+ boost/exception/info.hpp [3:4]
+ boost/exception/info_tuple.hpp [3:4]
+ boost/exception/to_string.hpp [3:4]
+ boost/exception/to_string_stub.hpp [3:4]
+ boost/exception_ptr.hpp [3:4]
+ libs/exception/src/clone_current_exception_non_intrusive.cpp [3:4]
+
+KEEP BSL-1.0 fc51d7cd9c354504daf9028ce7e6605d
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/parameter/aux_/overloads.hpp at line 3, boost/parameter/macros.hpp at line 3, boost/parameter/parameters.hpp at line 3
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 96.88
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/parameter/aux_/overloads.hpp [1:4]
+ boost/parameter/macros.hpp [1:4]
+ boost/parameter/parameters.hpp [1:4]
+
+KEEP BSL-1.0 fc5c644f1c0d63a394437a895a2e4812
+BELONGS ya.make
+ License text:
+ LICENSE(BSL-1.0)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : TAG
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost_common.inc [5:5]
+
+KEEP BSL-1.0 fc6fd3f07edbb2f20bf4654b73114e1a
+BELONGS ya.make
+ License text:
+ // Use, modification and distribution is subject to the Boost Software
+ // License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 53.12
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/typeof/decltype.hpp [3:4]
+ boost/typeof/dmc/typeof_impl.hpp [3:4]
+ boost/typeof/incr_registration_group.hpp [2:3]
+ boost/typeof/int_encoding.hpp [2:3]
+ boost/typeof/message.hpp [2:3]
+ boost/typeof/msvc/typeof_impl.hpp [6:7]
+ boost/typeof/native.hpp [2:3]
+ boost/typeof/pointers_data_members.hpp [2:3]
+ boost/typeof/register_functions.hpp [2:3]
+ boost/typeof/register_fundamental.hpp [3:4]
+ boost/typeof/register_mem_functions.hpp [2:3]
+ boost/typeof/std/bitset.hpp [2:3]
+ boost/typeof/std/complex.hpp [2:3]
+ boost/typeof/std/deque.hpp [2:3]
+ boost/typeof/std/fstream.hpp [2:3]
+ boost/typeof/std/functional.hpp [2:3]
+ boost/typeof/std/iostream.hpp [2:3]
+ boost/typeof/std/istream.hpp [2:3]
+ boost/typeof/std/iterator.hpp [2:3]
+ boost/typeof/std/list.hpp [2:3]
+ boost/typeof/std/locale.hpp [2:3]
+ boost/typeof/std/map.hpp [2:3]
+ boost/typeof/std/memory.hpp [2:3]
+ boost/typeof/std/ostream.hpp [2:3]
+ boost/typeof/std/queue.hpp [2:3]
+ boost/typeof/std/set.hpp [2:3]
+ boost/typeof/std/sstream.hpp [2:3]
+ boost/typeof/std/stack.hpp [2:3]
+ boost/typeof/std/streambuf.hpp [2:3]
+ boost/typeof/std/string.hpp [2:3]
+ boost/typeof/std/utility.hpp [2:3]
+ boost/typeof/std/valarray.hpp [2:3]
+ boost/typeof/std/vector.hpp [2:3]
+ boost/typeof/unsupported.hpp [2:3]
+ boost/typeof/vector.hpp [6:7]
+
+KEEP BSL-1.0 fc958ebd9e0749eafd1c497f645bca04
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/python/detail/make_tuple.hpp at line 4, boost/python/object_call.hpp at line 4
+ License text:
+ \# // Distributed under the Boost Software License, Version 1.0. (See
+ \# // accompanying file LICENSE_1_0.txt or copy at
+ \# // http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/python/detail/make_tuple.hpp [3:5]
+ boost/python/object_call.hpp [3:5]
+
+KEEP BSL-1.0 fc9f1903055632f6e8253bf22f3992f0
+BELONGS libs/context/ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: libs/context/src/asm/jump_arm64_aapcs_elf_gas.S at line 4, libs/context/src/asm/jump_arm64_aapcs_macho_gas.S at line 4, libs/context/src/asm/jump_arm_aapcs_elf_gas.S at line 4, libs/context/src/asm/jump_arm_aapcs_macho_gas.S at line 4, libs/context/src/asm/jump_combined_sysv_macho_gas.S at line 4, libs/context/src/asm/jump_i386_sysv_elf_gas.S at line 4, libs/context/src/asm/jump_i386_sysv_macho_gas.S at line 4, libs/context/src/asm/jump_i386_x86_64_sysv_macho_gas.S at line 4, libs/context/src/asm/jump_mips32_o32_elf_gas.S at line 4, libs/context/src/asm/jump_ppc32_ppc64_sysv_macho_gas.S at line 4, libs/context/src/asm/jump_ppc32_sysv_elf_gas.S at line 4, libs/context/src/asm/jump_ppc32_sysv_macho_gas.S at line 4, libs/context/src/asm/jump_ppc32_sysv_xcoff_gas.S at line 4, libs/context/src/asm/jump_ppc64_sysv_elf_gas.S at line 4, libs/context/src/asm/jump_ppc64_sysv_macho_gas.S at line 4, libs/context/src/asm/make_arm64_aapcs_elf_gas.S at line 4, libs/context/src/asm/make_arm64_aapcs_macho_gas.S at line 4, libs/context/src/asm/make_arm_aapcs_elf_gas.S at line 4, libs/context/src/asm/make_arm_aapcs_macho_gas.S at line 4, libs/context/src/asm/make_combined_sysv_macho_gas.S at line 4, libs/context/src/asm/make_i386_sysv_elf_gas.S at line 4, libs/context/src/asm/make_i386_sysv_macho_gas.S at line 4, libs/context/src/asm/make_i386_x86_64_sysv_macho_gas.S at line 4, libs/context/src/asm/make_mips32_o32_elf_gas.S at line 4, libs/context/src/asm/make_ppc32_ppc64_sysv_macho_gas.S at line 4, libs/context/src/asm/make_ppc32_sysv_elf_gas.S at line 4, libs/context/src/asm/make_ppc32_sysv_macho_gas.S at line 4, libs/context/src/asm/make_ppc32_sysv_xcoff_gas.S at line 4, libs/context/src/asm/make_ppc64_sysv_elf_gas.S at line 4, libs/context/src/asm/make_ppc64_sysv_macho_gas.S at line 4, libs/context/src/asm/ontop_arm64_aapcs_elf_gas.S at line 4, libs/context/src/asm/ontop_arm64_aapcs_macho_gas.S at line 4, libs/context/src/asm/ontop_arm_aapcs_elf_gas.S at line 4, libs/context/src/asm/ontop_arm_aapcs_macho_gas.S at line 4, libs/context/src/asm/ontop_combined_sysv_macho_gas.S at line 4, libs/context/src/asm/ontop_i386_sysv_elf_gas.S at line 4, libs/context/src/asm/ontop_i386_sysv_macho_gas.S at line 4, libs/context/src/asm/ontop_i386_x86_64_sysv_macho_gas.S at line 4, libs/context/src/asm/ontop_mips32_o32_elf_gas.S at line 4, libs/context/src/asm/ontop_ppc32_ppc64_sysv_macho_gas.S at line 4, libs/context/src/asm/ontop_ppc32_sysv_elf_gas.S at line 4, libs/context/src/asm/ontop_ppc32_sysv_macho_gas.S at line 4, libs/context/src/asm/ontop_ppc32_sysv_xcoff_gas.S at line 4, libs/context/src/asm/ontop_ppc64_sysv_elf_gas.S at line 4, libs/context/src/asm/ontop_ppc64_sysv_macho_gas.S at line 4
+ License text:
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ libs/context/src/asm/jump_arm64_aapcs_elf_gas.S [3:5]
+ libs/context/src/asm/jump_arm64_aapcs_macho_gas.S [3:5]
+ libs/context/src/asm/jump_arm_aapcs_elf_gas.S [3:5]
+ libs/context/src/asm/jump_arm_aapcs_macho_gas.S [3:5]
+ libs/context/src/asm/jump_combined_sysv_macho_gas.S [3:5]
+ libs/context/src/asm/jump_i386_sysv_elf_gas.S [3:5]
+ libs/context/src/asm/jump_i386_sysv_macho_gas.S [3:5]
+ libs/context/src/asm/jump_i386_x86_64_sysv_macho_gas.S [3:5]
+ libs/context/src/asm/jump_mips32_o32_elf_gas.S [3:5]
+ libs/context/src/asm/jump_ppc32_ppc64_sysv_macho_gas.S [3:5]
+ libs/context/src/asm/jump_ppc32_sysv_elf_gas.S [3:5]
+ libs/context/src/asm/jump_ppc32_sysv_macho_gas.S [3:5]
+ libs/context/src/asm/jump_ppc32_sysv_xcoff_gas.S [3:5]
+ libs/context/src/asm/jump_ppc64_sysv_elf_gas.S [3:5]
+ libs/context/src/asm/jump_ppc64_sysv_macho_gas.S [3:5]
+ libs/context/src/asm/make_arm64_aapcs_elf_gas.S [3:5]
+ libs/context/src/asm/make_arm64_aapcs_macho_gas.S [3:5]
+ libs/context/src/asm/make_arm_aapcs_elf_gas.S [3:5]
+ libs/context/src/asm/make_arm_aapcs_macho_gas.S [3:5]
+ libs/context/src/asm/make_combined_sysv_macho_gas.S [3:5]
+ libs/context/src/asm/make_i386_sysv_elf_gas.S [3:5]
+ libs/context/src/asm/make_i386_sysv_macho_gas.S [3:5]
+ libs/context/src/asm/make_i386_x86_64_sysv_macho_gas.S [3:5]
+ libs/context/src/asm/make_mips32_o32_elf_gas.S [3:5]
+ libs/context/src/asm/make_ppc32_ppc64_sysv_macho_gas.S [3:5]
+ libs/context/src/asm/make_ppc32_sysv_elf_gas.S [3:5]
+ libs/context/src/asm/make_ppc32_sysv_macho_gas.S [3:5]
+ libs/context/src/asm/make_ppc32_sysv_xcoff_gas.S [3:5]
+ libs/context/src/asm/make_ppc64_sysv_elf_gas.S [3:5]
+ libs/context/src/asm/make_ppc64_sysv_macho_gas.S [3:5]
+ libs/context/src/asm/ontop_arm64_aapcs_elf_gas.S [3:5]
+ libs/context/src/asm/ontop_arm64_aapcs_macho_gas.S [3:5]
+ libs/context/src/asm/ontop_arm_aapcs_elf_gas.S [3:5]
+ libs/context/src/asm/ontop_arm_aapcs_macho_gas.S [3:5]
+ libs/context/src/asm/ontop_combined_sysv_macho_gas.S [3:5]
+ libs/context/src/asm/ontop_i386_sysv_elf_gas.S [3:5]
+ libs/context/src/asm/ontop_i386_sysv_macho_gas.S [3:5]
+ libs/context/src/asm/ontop_i386_x86_64_sysv_macho_gas.S [3:5]
+ libs/context/src/asm/ontop_mips32_o32_elf_gas.S [3:5]
+ libs/context/src/asm/ontop_ppc32_ppc64_sysv_macho_gas.S [3:5]
+ libs/context/src/asm/ontop_ppc32_sysv_elf_gas.S [3:5]
+ libs/context/src/asm/ontop_ppc32_sysv_macho_gas.S [3:5]
+ libs/context/src/asm/ontop_ppc32_sysv_xcoff_gas.S [3:5]
+ libs/context/src/asm/ontop_ppc64_sysv_elf_gas.S [3:5]
+ libs/context/src/asm/ontop_ppc64_sysv_macho_gas.S [3:5]
+
+KEEP BSL-1.0 fcbcf40a265cd169c46d2bba83794f5b
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/integer/common_factor.hpp at line 5, boost/integer/common_factor_ct.hpp at line 5, boost/integer/integer_mask.hpp at line 5, boost/integer/static_min_max.hpp at line 5, boost/math/common_factor.hpp at line 5, boost/math/common_factor_ct.hpp at line 5
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/integer/common_factor.hpp [4:8]
+ boost/integer/common_factor_ct.hpp [4:8]
+ boost/integer/integer_mask.hpp [4:8]
+ boost/integer/static_min_max.hpp [4:8]
+ boost/math/common_factor.hpp [4:8]
+ boost/math/common_factor_ct.hpp [4:8]
+
+KEEP BSL-1.0 fd01eb9a5849508d1c17276e547f8c1b
+BELONGS ya.make
+FILE_INCLUDE LICENSE_1_0.txt found in files: boost/multiprecision/cpp_bin_float.hpp at line 4, boost/multiprecision/cpp_bin_float/transcendental.hpp at line 4, boost/multiprecision/cpp_int/literals.hpp at line 4, boost/multiprecision/cpp_int/serialize.hpp at line 4, boost/multiprecision/cpp_int/value_pack.hpp at line 4, boost/multiprecision/detail/bitscan.hpp at line 4, boost/multiprecision/detail/float_string_cvt.hpp at line 4
+ License text:
+ // Copyright 2013 John Maddock. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 92.59
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/multiprecision/cpp_bin_float.hpp [2:4]
+ boost/multiprecision/cpp_bin_float/transcendental.hpp [2:4]
+ boost/multiprecision/cpp_int/literals.hpp [2:4]
+ boost/multiprecision/cpp_int/serialize.hpp [2:4]
+ boost/multiprecision/cpp_int/value_pack.hpp [2:4]
+ boost/multiprecision/detail/bitscan.hpp [2:4]
+ boost/multiprecision/detail/float_string_cvt.hpp [2:4]
+
+SKIP OFL-1.0 AND OFL-1.0 fd4de3c3add0c3a3dba403576cda6f13
+BELONGS ya.make
+ License text:
+ // Licensed under the Boost Software License version 1.0.
+ // http://www.boost.org/users/license.html
+ Scancode info:
+ Original SPDX id: OFL-1.0
+ Score : 17.67
+ Match type : NOTICE
+ Links : http://scripts.sil.org/cms/scripts/page.php?item_id=OFL10_web, https://scripts.sil.org/cms/scripts/render_download.php?format=file&media_id=OFL10_plaintext&filename=OFL10.txt, https://spdx.org/licenses/OFL-1.0
+ Files with this license:
+ boost/geometry/algorithms/densify.hpp [7:8]
+ boost/geometry/algorithms/detail/closest_feature/geometry_to_range.hpp [7:8]
+ boost/geometry/algorithms/detail/closest_feature/point_to_range.hpp [7:8]
+ boost/geometry/algorithms/detail/closest_feature/range_to_range.hpp [7:8]
+ boost/geometry/algorithms/detail/disjoint/multirange_geometry.hpp [8:9]
+ boost/geometry/algorithms/detail/distance/box_to_box.hpp [7:8]
+ boost/geometry/algorithms/detail/distance/geometry_to_segment_or_box.hpp [7:8]
+ boost/geometry/algorithms/detail/distance/iterator_selector.hpp [7:8]
+ boost/geometry/algorithms/detail/distance/linear_or_areal_to_areal.hpp [7:8]
+ boost/geometry/algorithms/detail/distance/linear_to_linear.hpp [7:8]
+ boost/geometry/algorithms/detail/distance/multipoint_to_geometry.hpp [7:8]
+ boost/geometry/algorithms/detail/distance/range_to_geometry_rtree.hpp [7:8]
+ boost/geometry/algorithms/detail/distance/segment_to_segment.hpp [7:8]
+ boost/geometry/algorithms/detail/normalize.hpp [8:9]
+ boost/geometry/algorithms/detail/num_distinct_consecutive_points.hpp [7:8]
+ boost/geometry/algorithms/detail/overlay/follow_linear_linear.hpp [10:11]
+ boost/geometry/algorithms/detail/overlay/inconsistent_turns_exception.hpp [5:6]
+ boost/geometry/algorithms/detail/overlay/linear_linear.hpp [5:6]
+ boost/geometry/algorithms/detail/overlay/pointlike_linear.hpp [10:11]
+ boost/geometry/algorithms/detail/overlay/pointlike_pointlike.hpp [8:9]
+ boost/geometry/algorithms/detail/sweep.hpp [7:8]
+ boost/geometry/algorithms/detail/turns/compare_turns.hpp [5:6]
+ boost/geometry/iterators/detail/point_iterator/iterator_type.hpp [7:8]
+ boost/geometry/iterators/detail/segment_iterator/iterator_type.hpp [7:8]
+ boost/geometry/iterators/dispatch/point_iterator.hpp [7:8]
+ boost/geometry/iterators/dispatch/segment_iterator.hpp [7:8]
+ boost/geometry/iterators/has_one_element.hpp [7:8]
+ boost/geometry/policies/is_valid/failing_reason_policy.hpp [8:9]
+ boost/geometry/policies/is_valid/failure_type_policy.hpp [7:8]
+ boost/geometry/policies/predicate_based_interrupt_policy.hpp [7:8]
+ boost/geometry/strategies/cartesian/densify.hpp [7:8]
+ boost/geometry/strategies/spherical/densify.hpp [7:8]
+ boost/geometry/util/normalize_spheroidal_box_coordinates.hpp [8:9]
+ boost/geometry/util/normalize_spheroidal_coordinates.hpp [10:11]
+ boost/geometry/views/detail/boundary_view.hpp [7:8]
+ boost/geometry/views/detail/boundary_view/implementation.hpp [7:8]
+ boost/geometry/views/detail/boundary_view/interface.hpp [7:8]
+ Scancode info:
+ Original SPDX id: OFL-1.0
+ Score : 18.60
+ Match type : NOTICE
+ Links : http://scripts.sil.org/cms/scripts/page.php?item_id=OFL10_web, https://scripts.sil.org/cms/scripts/render_download.php?format=file&media_id=OFL10_plaintext&filename=OFL10.txt, https://spdx.org/licenses/OFL-1.0
+ Files with this license:
+ boost/geometry/algorithms/detail/max_interval_gap.hpp [7:8]
+ boost/geometry/algorithms/detail/turns/debug_turn.hpp [5:6]
+ boost/geometry/algorithms/detail/turns/filter_continue_turns.hpp [5:6]
+ boost/geometry/algorithms/detail/turns/print_turns.hpp [5:6]
+ boost/geometry/algorithms/detail/turns/remove_duplicate_turns.hpp [5:6]
+
+KEEP BSL-1.0 fd7de4e3b7045682df9b61ed7cb1f99d
+BELONGS ya.make
+ License text:
+ // http://www.boost.org/LICENSE_1_0.txt
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 44.00
+ Match type : REFERENCE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/endian/std_pair.hpp [6:6]
+
+KEEP BSL-1.0 fdd2dd3e25498c4dda5bc3412ed28bb9
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 40.62
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/spirit/home/lex/lexer/lexertl/generate_static.hpp [893:896]
+
+KEEP BSL-1.0 fe371f5eab8bfd96a6b2bcb62751072f
+BELONGS ya.make
+ License text:
+ // (C) Copyright Howard Hinnant 2007-2010. Distributed under the Boost
+ // Software License, Version 1.0. (see http://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ boost/interprocess/sync/interprocess_sharable_mutex.hpp [4:5]
+
+KEEP Zlib feac64119d30e7019060ba88ec6d5f1a
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: Zlib
+ Score : 100.00
+ Match type : TEXT
+ Links : http://www.gzip.org/zlib/zlib_license.html, http://www.zlib.net/, https://spdx.org/licenses/Zlib
+ Files with this license:
+ boost/move/algo/detail/pdqsort.hpp [25:34]
diff --git a/contrib/restricted/boost/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/.yandex_meta/licenses.list.txt
index 422faa288a..8552c20720 100644
--- a/contrib/restricted/boost/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/boost/.yandex_meta/licenses.list.txt
@@ -1,10142 +1,10142 @@
-====================BSD-3-Clause====================
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
- // met:
-
- // * Redistributions of source code must retain the above copyright
- // notice, this list of conditions, and the following disclaimer.
-
- // * Redistributions in binary form must reproduce the above copyright
- // notice, this list of conditions, and the following disclaimer in the
- // documentation and/or other materials provided with the distribution.
-
- // * Neither the name of D. E. Shaw Research nor the names of its
- // contributors may be used to endorse or promote products derived from
- // this software without specific prior written permission.
-
- // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-====================BSD-3-Clause====================
-// Using the Mac OS X system BSD-style C library.
-
-
-====================BSL-1.0====================
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
- // Copyright 2008 Eric Niebler. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
- << " Distributed under the Boost Software License, Version 1.0. (See accompanying\n"
- << " file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)\n"
-
-
-====================BSL-1.0====================
- os_ << "// Distributed under the Boost Software License, "
- "Version 1.0. (See accompanying\n";
- os_ << "// file licence_1_0.txt or copy at "
- "http://www.boost.org/LICENSE_1_0.txt)\n\n";
-
-
-====================BSL-1.0====================
- // Copyright 2008 Eric Niebler. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
- // Copyright 2012 Eric Niebler. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
- Copyright (c) 2001 by Andrei Alexandrescu. Distributed under the Boost
- Software License, Version 1.0. (See accompanying file
- LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
- Copyright (c) 2001-2012 Hartmut Kaiser. Distributed under the Boost
- Software License, Version 1.0. (See accompanying file
- LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
- Distributed under the Boost Software License, Version 1.0. (See
- accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
+====================BSD-3-Clause====================
+ // Redistribution and use in source and binary forms, with or without
+ // modification, are permitted provided that the following conditions are
+ // met:
+
+ // * Redistributions of source code must retain the above copyright
+ // notice, this list of conditions, and the following disclaimer.
+
+ // * Redistributions in binary form must reproduce the above copyright
+ // notice, this list of conditions, and the following disclaimer in the
+ // documentation and/or other materials provided with the distribution.
+
+ // * Neither the name of D. E. Shaw Research nor the names of its
+ // contributors may be used to endorse or promote products derived from
+ // this software without specific prior written permission.
+
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+====================BSD-3-Clause====================
+// Using the Mac OS X system BSD-style C library.
+
+
+====================BSL-1.0====================
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+ // Copyright 2008 Eric Niebler. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+ << " Distributed under the Boost Software License, Version 1.0. (See accompanying\n"
+ << " file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)\n"
+
+
+====================BSL-1.0====================
+ os_ << "// Distributed under the Boost Software License, "
+ "Version 1.0. (See accompanying\n";
+ os_ << "// file licence_1_0.txt or copy at "
+ "http://www.boost.org/LICENSE_1_0.txt)\n\n";
+
+
+====================BSL-1.0====================
+ // Copyright 2008 Eric Niebler. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+ // Copyright 2012 Eric Niebler. Distributed under the Boost
+ // Software License, Version 1.0. (See accompanying file
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+ Copyright (c) 2001 by Andrei Alexandrescu. Distributed under the Boost
+ Software License, Version 1.0. (See accompanying file
+ LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+ Copyright (c) 2001-2012 Hartmut Kaiser. Distributed under the Boost
+ Software License, Version 1.0. (See accompanying file
+ LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+ Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+ Use modification and distribution are subject to the Boost Software
+ License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt).
+
+
+====================BSL-1.0====================
Use modification and distribution are subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-
-
-====================BSL-1.0====================
- Use modification and distribution are subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-
-
-====================BSL-1.0====================
- Use, modification and distribution are subject to the Boost Software License,
- Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-
-
-====================BSL-1.0====================
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
- os_ << "// Distributed under the Boost Software License, "
- "Version 1.0. (See accompanying\n";
- os_ << "// file licence_1_0.txt or copy at "
- "http://www.boost.org/LICENSE_1_0.txt)\n\n";
-
-
-====================BSL-1.0====================
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE10.txt or copy at http://www.boost.org/LICENSE10.txt)
-
-
-====================BSL-1.0====================
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or
- copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
- Distributed under the Boost Software License, Version 1.0. (See
- accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
- Use, modification and distribution are subject to the Boost Software License,
- Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-
-
-====================BSL-1.0====================
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or
- * copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
- * Use, modification and distribution is subject to the Boost Software
- * License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or
- * copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
- * Distributed under the Boost Software License, Version 1.0.
- * See http://www.boost.org/LICENSE_1_0.txt
-
-
-====================BSL-1.0====================
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org for most recent version including documentation.
- *
- * $Id$
- *
- * Revision history
-
-
-====================BSL-1.0====================
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org for most recent version including documentation.
- *
- * Revision history
-
-
-====================BSL-1.0====================
+ License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt).
+
+
+====================BSL-1.0====================
+ Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt).
+
+
+====================BSL-1.0====================
+ Use, modification and distribution is subject to the Boost Software
+ License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+ os_ << "// Distributed under the Boost Software License, "
+ "Version 1.0. (See accompanying\n";
+ os_ << "// file licence_1_0.txt or copy at "
+ "http://www.boost.org/LICENSE_1_0.txt)\n\n";
+
+
+====================BSL-1.0====================
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE10.txt or copy at http://www.boost.org/LICENSE10.txt)
+
+
+====================BSL-1.0====================
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or
+ copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+ Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+ Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt).
+
+
+====================BSL-1.0====================
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or
+ * copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+ * Use, modification and distribution is subject to the Boost Software
+ * License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or
+ * copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+ * Distributed under the Boost Software License, Version 1.0.
+ * See http://www.boost.org/LICENSE_1_0.txt
+
+
+====================BSL-1.0====================
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ *
+ * See http://www.boost.org for most recent version including documentation.
+ *
+ * $Id$
+ *
+ * Revision history
+
+
+====================BSL-1.0====================
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ *
+ * See http://www.boost.org for most recent version including documentation.
+ *
+ * Revision history
+
+
+====================BSL-1.0====================
+ * Distributed under the Boost Software License, Version 1.0.(See accompanying
+ * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
+
+
+====================BSL-1.0====================
* Distributed under the Boost Software License, Version 1.0.(See accompanying
- * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
-
-
-====================BSL-1.0====================
- * Distributed under the Boost Software License, Version 1.0.(See accompanying
- * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
-
-
-====================BSL-1.0====================
- * Subject to Boost Software License, Version 1.0. (See accompanying
- * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
+ * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
+
+
+====================BSL-1.0====================
+ * Subject to Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+ * Subject to the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+ * Subject to the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or
+ * http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
* Subject to the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
- * Subject to the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or
- * http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
- * Subject to the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
- * Subject to the Boost Software License, Version 1.0. (See accompanying
- * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
+ * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+ * Subject to the Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
* Use, modification and distribution are subject to the
* Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
* Use, modification and distribution is subject to the
- * Boost Software License, Version 1.0. (See accompanying
- * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
- * Use, modification and distribution is subject to the
- * Boost Software License, Version 1.0. (See accompanying
- * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
- * \license Boost Software License 1.0
-
-
-====================BSL-1.0====================
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or
- copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-# * Distributed under the Boost Software License, Version 1.0. (See *
-# * accompanying file LICENSE_1_0.txt or copy at *
-# * http://www.boost.org/LICENSE_1_0.txt) *
-
-
-====================BSL-1.0====================
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-# * http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-# // Distributed under the Boost Software License, Version 1.0. (See
-# // accompanying file LICENSE_1_0.txt or copy at
-# // http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-#// Distributed under the Boost Software License, Version 1.0.
-#// (See accompanying file LICENSE_1_0.txt or copy at
-#// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-(http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-* Distributed under the Boost Software License, Version 1.0. (See
-* accompanying file LICENSE_1_0.txt or copy at
-* http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// See accompanying file LICENSE.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Beman Dawes 1999-2003. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Beman Dawes 2000. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Dave Abrahams and Daryle Walker 2001. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Hubert Holin and Daryle Walker 2001-2002. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright John maddock 1999. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Paul Moore 1999. Permission to copy, use, modify, sell and
-// distribute this software is granted provided this copyright notice appears
-// in all copies. This software is provided "as is" without express or
-// implied warranty, and with no claim as to its suitability for any purpose.
-
-
-====================BSL-1.0====================
-// (C) David Abrahams 2002. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright (c) 2003 Peter Dimov Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright 1999-2003 Aleksey Gurtovoy. Use, modification, and distribution are
-// subject to the Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or a copy at <http://www.boost.org/LICENSE_1_0.txt>.)
-
-
-====================BSL-1.0====================
-// Copyright 2001, 2003, 2004, 2012 Daryle Walker. Use, modification, and
-// distribution are subject to the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or a copy at
-// <http://www.boost.org/LICENSE_1_0.txt>.)
-
-
-====================BSL-1.0====================
-// Copyright 2001, 2004 Daryle Walker. Use, modification, and distribution are
-// subject to the Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or a copy at <http://www.boost.org/LICENSE_1_0.txt>.)
-
-
-====================BSL-1.0====================
-// Copyright 2002 Daryle Walker. Use, modification, and distribution are subject
-// to the Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or a copy at <http://www.boost.org/LICENSE_1_0.txt>.)
-
-
-====================BSL-1.0====================
-// Copyright 2002, 2005 Daryle Walker. Use, modification, and distribution
-// are subject to the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or a copy at <http://www.boost.org/LICENSE_1_0.txt>.)
-
-
-====================BSL-1.0====================
-// Copyright 2005 Daniel Egloff, Eric Niebler. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright 2005 Daniel Egloff, Olivier Gygi. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright 2005 Daniel Egloff. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright 2005 Eric Niebler, Daniel Egloff. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright 2005 Eric Niebler, Michael Gauckler. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright 2005 Eric Niebler. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright 2006 Daniel Egloff, Olivier Gygi. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright 2006 Eric Niebler, Olivier Gygi. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright 2006 Eric Niebler. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright 2006 Olivier Gygi, Daniel Egloff. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright 2006, Eric Niebler, Olivier Gygi. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright 2008 Eric Niebler. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright 2009 Eric Niebler. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright 2010 Daniel Wallin, Eric Niebler. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright 2010 Eric Niebler. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright 2010 Gaetano Mendola, 2011 Simon West. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright 2011 Eric Niebler. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright 2011 John Maddock. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
-
-
-====================BSL-1.0====================
-// Copyright 2011 John Maddock. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright 2011 Simon West. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright 2012 Eric Niebler. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright 2012 John Maddock. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
-
-
-====================BSL-1.0====================
-// Copyright 2012 John Maddock. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright 2013 John Maddock. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
-
-
-====================BSL-1.0====================
-// Copyright 2013 John Maddock. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright 2015 John Maddock. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
-
-
-====================BSL-1.0====================
-// Copyright 2015 John Maddock. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright 2016 John Maddock. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Adam D. Walling 2012. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Beman Dawes 1994-99. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Beman Dawes 1995-2001. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Beman Dawes 2001. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Beman Dawes and Daryle Walker 1999. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Christopher Kormanyos 2013. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Daniel Walker 2006. Use, modification and distribution
-// are subject to the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Douglas Gregor 2001-2003. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Douglas Gregor 2002-2003. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Douglas Gregor 2003. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Douglas Gregor 2004. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Eric Niebler 2014. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Jonathan Turkanis 2005. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Neil Groves 2007. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Neil Groves 2009. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Neil Groves 2009. Use, modification and distribution
-// are subject to the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Neil Groves 2010. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Neil Groves 2014. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Pavol Droba 2002-2003. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Samuel Krempp 2003. Use, modification, and distribution are
-// subject to the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Thorsten Ottosen 2003-2004. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Thorsten Ottosen 2003-2005. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Thorsten Ottosen 2003-2006. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Thorsten Ottosen 2003-2007. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Thorsten Ottosen 2003-2008. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Thorsten Ottosen 2006. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Thorsten Ottosen 2008. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Thorsten Ottosen, Neil Groves 2006 - 2008. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Thorsten Ottosen, Neil Groves 2006. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt).
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0
-// http://www.boost.org/LICENSE_1_0.txt
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-//
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-//
-// See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+ * \license Boost Software License 1.0
+
+
+====================BSL-1.0====================
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or
+ copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+
+
+====================BSL-1.0====================
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+# // Distributed under the Boost Software License, Version 1.0. (See
+# // accompanying file LICENSE_1_0.txt or copy at
+# // http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+#// Distributed under the Boost Software License, Version 1.0.
+#// (See accompanying file LICENSE_1_0.txt or copy at
+#// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+(http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+* Distributed under the Boost Software License, Version 1.0. (See
+* accompanying file LICENSE_1_0.txt or copy at
+* http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// See accompanying file LICENSE.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Beman Dawes 1999-2003. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Beman Dawes 2000. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Dave Abrahams and Daryle Walker 2001. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Hubert Holin and Daryle Walker 2001-2002. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright John maddock 1999. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Paul Moore 1999. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or
+// implied warranty, and with no claim as to its suitability for any purpose.
+
+
+====================BSL-1.0====================
+// (C) David Abrahams 2002. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright (c) 2003 Peter Dimov Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright 1999-2003 Aleksey Gurtovoy. Use, modification, and distribution are
+// subject to the Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or a copy at <http://www.boost.org/LICENSE_1_0.txt>.)
+
+
+====================BSL-1.0====================
+// Copyright 2001, 2003, 2004, 2012 Daryle Walker. Use, modification, and
+// distribution are subject to the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or a copy at
+// <http://www.boost.org/LICENSE_1_0.txt>.)
+
+
+====================BSL-1.0====================
+// Copyright 2001, 2004 Daryle Walker. Use, modification, and distribution are
+// subject to the Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or a copy at <http://www.boost.org/LICENSE_1_0.txt>.)
+
+
+====================BSL-1.0====================
+// Copyright 2002 Daryle Walker. Use, modification, and distribution are subject
+// to the Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or a copy at <http://www.boost.org/LICENSE_1_0.txt>.)
+
+
+====================BSL-1.0====================
+// Copyright 2002, 2005 Daryle Walker. Use, modification, and distribution
+// are subject to the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or a copy at <http://www.boost.org/LICENSE_1_0.txt>.)
+
+
+====================BSL-1.0====================
+// Copyright 2005 Daniel Egloff, Eric Niebler. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright 2005 Daniel Egloff, Olivier Gygi. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright 2005 Daniel Egloff. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright 2005 Eric Niebler, Daniel Egloff. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright 2005 Eric Niebler, Michael Gauckler. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright 2005 Eric Niebler. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright 2006 Daniel Egloff, Olivier Gygi. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright 2006 Eric Niebler, Olivier Gygi. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright 2006 Eric Niebler. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright 2006 Olivier Gygi, Daniel Egloff. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright 2006, Eric Niebler, Olivier Gygi. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright 2008 Eric Niebler. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright 2009 Eric Niebler. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright 2010 Daniel Wallin, Eric Niebler. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright 2010 Eric Niebler. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright 2010 Gaetano Mendola, 2011 Simon West. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright 2011 Eric Niebler. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright 2011 John Maddock. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
+
+
+====================BSL-1.0====================
+// Copyright 2011 John Maddock. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright 2011 Simon West. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright 2012 Eric Niebler. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright 2012 John Maddock. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
+
+
+====================BSL-1.0====================
+// Copyright 2012 John Maddock. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright 2013 John Maddock. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
+
+
+====================BSL-1.0====================
+// Copyright 2013 John Maddock. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright 2015 John Maddock. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
+
+
+====================BSL-1.0====================
+// Copyright 2015 John Maddock. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright 2016 John Maddock. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Adam D. Walling 2012. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Beman Dawes 1994-99. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Beman Dawes 1995-2001. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Beman Dawes 2001. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Beman Dawes and Daryle Walker 1999. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Christopher Kormanyos 2013. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Daniel Walker 2006. Use, modification and distribution
+// are subject to the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Douglas Gregor 2001-2003. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Douglas Gregor 2002-2003. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Douglas Gregor 2003. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Douglas Gregor 2004. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Eric Niebler 2014. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Jonathan Turkanis 2005. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Neil Groves 2007. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Neil Groves 2009. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Neil Groves 2009. Use, modification and distribution
+// are subject to the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Neil Groves 2010. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Neil Groves 2014. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Pavol Droba 2002-2003. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Samuel Krempp 2003. Use, modification, and distribution are
+// subject to the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Thorsten Ottosen 2003-2004. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Thorsten Ottosen 2003-2005. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Thorsten Ottosen 2003-2006. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Thorsten Ottosen 2003-2007. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Thorsten Ottosen 2003-2008. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Thorsten Ottosen 2006. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Thorsten Ottosen 2008. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Thorsten Ottosen, Neil Groves 2006 - 2008. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Thorsten Ottosen, Neil Groves 2006. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt).
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0
+// http://www.boost.org/LICENSE_1_0.txt
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+//
// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+//
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for updates, documentation, and revision history.
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// See http://www.boost.org/LICENSE_1_0.txt
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// http://www.boost.org/LICENSE_1_0.txt
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
// See http://www.boost.org for updates, documentation, and revision history.
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// See http://www.boost.org/LICENSE_1_0.txt
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// http://www.boost.org/LICENSE_1_0.txt
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for updates, documentation, and revision history.
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for updates, documentation, and revision history.
-
-
-====================BSL-1.0====================
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for updates, documentation, and revision history.
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boist.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Permission to copy, use, modify, sell and distribute this software
-// is granted provided this copyright notice appears in all copies.
-// This software is provided "as is" without express or implied
-// warranty, and with no claim as to its suitability for any purpose.
-
-
-====================BSL-1.0====================
-// Use, modification and distribution are subject to the
+// file LICENSE_1_0.txt or copy at http://www.boist.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Permission to copy, use, modify, sell and distribute this software
+// is granted provided this copyright notice appears in all copies.
+// This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+
+====================BSL-1.0====================
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-
-
-====================BSL-1.0====================
-// Use, modification and distribution is subject to
-// the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Use, modification and distribution is subject to the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or
-// copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org for updates, documentation, and revision history.
-
-
-====================BSL-1.0====================
-// Use, modification and distribution is subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Use, modification and distribution is subject to the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Use, modification, and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Use, modification, and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Use, modification, and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy
-// at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Use, modification, and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for updates, documentation, and revision history.
-
-
-====================BSL-1.0====================
-// http://www.boost.org/LICENSE_1_0.txt
-
-
-====================BSL-1.0====================
-// (C) Copyright Howard Hinnant 2007-2010. Distributed under the Boost
-// Software License, Version 1.0. (see http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Ion Gaztanaga 2004-2015. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Ion Gaztanaga 2005-2014. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Ion Gaztanaga 2005-2015. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Ion Gaztanaga 2006-2012. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Ion Gaztanaga 2006-2014. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Ion Gaztanaga 2006. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Ion Gaztanaga 2007-2012. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Ion Gaztanaga 2007-2013. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Ion Gaztanaga 2007-2014. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Ion Gaztanaga 2008-2012. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Ion Gaztanaga 2008-2013. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Ion Gaztanaga 2008-2015. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Ion Gaztanaga 2009-2012. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Ion Gaztanaga 2009. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Ion Gaztanaga 2010-2012. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Ion Gaztanaga 2011-2012. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Ion Gaztanaga 2011-2013. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Ion Gaztanaga 2011-2014. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Ion Gaztanaga 2012-2012. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Ion Gaztanaga 2012-2013. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Ion Gaztanaga 2013-2013. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Ion Gaztanaga 2014-2014. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Ion Gaztanaga 2014-2015. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Ion Gaztanaga 2014-2017. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Ion Gaztanaga 2015-2015. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Ion Gaztanaga 2016-2016. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Ion Gaztanaga 2017-2017. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Ion Gaztanaga 2017-2018. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Jeremy Siek 2001. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Pablo Halpern 2009. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Ronald Garcia 2002. Permission to copy, use, modify, sell and
-// distribute this software is granted provided this copyright notice appears
-// in all copies. This software is provided "as is" without express or implied
-// warranty, and with no claim as to its suitability for any purpose.
-
-
-====================BSL-1.0====================
-// (C) Copyright Thorsten Ottosen 2002-2003. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Vicente J. Botet Escriba 2008-2009,2012. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Vicente J. Botet Escriba 2013-2014. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Vicente J. Botet Escriba 2013-2017. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Vicente J. Botet Escriba 2014-2015. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Vicente J. Botet Escriba 2014. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Andrew Lumsdaine, Indiana University (lums@osl.iu.edu). Permission to copy,
-// use, modify, sell and distribute this software is granted provided this
-// copyright notice appears in all copies. This software is provided "as is"
-// without express or implied warranty, and with no claim as to its suitability
-// for any purpose.
-
-
-====================BSL-1.0====================
-// Copyright 2002, 2005 Daryle Walker. Use, modification, and distribution
-// are subject to the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or a copy at <http://www.boost.org/LICENSE_1_0.txt>.)
-
-
-====================BSL-1.0====================
-// Copyright 2005 David Abrahams and Aleksey Gurtovoy. Distributed
-// under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright 2008 Eric Niebler. Distributed
-// under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright 2008 Eric Niebler. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright 2011 -2013 John Maddock. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Daniel Wallin 2005. Use, modification and distribution is
-// subject to the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Daniel Wallin 2006. Use, modification and distribution is
-// subject to the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Daniel Wallin 2007. Use, modification and distribution is
-// subject to the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Daniel Wallin, David Abrahams 2005. Use, modification and
-// distribution is subject to the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Daniel Wallin, David Abrahams 2010. Use, modification and
-// distribution is subject to the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright David Abrahams 2003. Use, modification and distribution is
-// subject to the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright David Abrahams 2004. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright David Abrahams 2004. Use, modification and distribution is
-// subject to the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright David Abrahams 2005. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright David Abrahams 2006. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright David Abrahams 2009. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright David Abrahams, Daniel Wallin 2003. Use, modification and
-// distribution is subject to the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright David Abrahams, Daniel Wallin 2005. Use, modification and
-// distribution is subject to the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Douglas Gregor 2001-2003. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Douglas Gregor 2001-2004. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Douglas Gregor 2001-2006. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Douglas Gregor 2002-2004. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Douglas Gregor 2003-2004. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright Frank Mori Hess 2007. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost
-// Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or
-// copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost
-// Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt
-// or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0
-// (see accompanying file LICENSE_1_0.txt or a copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0
-// See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0 (see accompanying
-// file LICENSE_1_0.txt or a copy at http://www.boost.org/LICENSE_1_0.txt).
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-//
-// See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for updates, documentation, and revision history.
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org/ for updates, documentation, and revision history.
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for updates, documentation, and revision history.
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or the copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-// or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or
-// copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
+
+
+====================BSL-1.0====================
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+
+
+====================BSL-1.0====================
+// Use, modification and distribution is subject to
+// the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Use, modification and distribution is subject to the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or
+// copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org for updates, documentation, and revision history.
+
+
+====================BSL-1.0====================
+// Use, modification and distribution is subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Use, modification and distribution is subject to the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Use, modification, and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Use, modification, and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Use, modification, and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy
+// at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Use, modification, and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for updates, documentation, and revision history.
+
+
+====================BSL-1.0====================
+// http://www.boost.org/LICENSE_1_0.txt
+
+
+====================BSL-1.0====================
+// (C) Copyright Howard Hinnant 2007-2010. Distributed under the Boost
+// Software License, Version 1.0. (see http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Ion Gaztanaga 2004-2015. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Ion Gaztanaga 2005-2014. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Ion Gaztanaga 2005-2015. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Ion Gaztanaga 2006-2012. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Ion Gaztanaga 2006-2014. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Ion Gaztanaga 2006. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Ion Gaztanaga 2007-2012. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Ion Gaztanaga 2007-2013. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Ion Gaztanaga 2007-2014. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Ion Gaztanaga 2008-2012. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Ion Gaztanaga 2008-2013. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Ion Gaztanaga 2008-2015. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Ion Gaztanaga 2009-2012. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Ion Gaztanaga 2009. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Ion Gaztanaga 2010-2012. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Ion Gaztanaga 2011-2012. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Ion Gaztanaga 2011-2013. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Ion Gaztanaga 2011-2014. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Ion Gaztanaga 2012-2012. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Ion Gaztanaga 2012-2013. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Ion Gaztanaga 2013-2013. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Ion Gaztanaga 2014-2014. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Ion Gaztanaga 2014-2015. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Ion Gaztanaga 2014-2017. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Ion Gaztanaga 2015-2015. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Ion Gaztanaga 2016-2016. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Ion Gaztanaga 2017-2017. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Ion Gaztanaga 2017-2018. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Jeremy Siek 2001. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Pablo Halpern 2009. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Ronald Garcia 2002. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+
+====================BSL-1.0====================
+// (C) Copyright Thorsten Ottosen 2002-2003. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Vicente J. Botet Escriba 2008-2009,2012. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Vicente J. Botet Escriba 2013-2014. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Vicente J. Botet Escriba 2013-2017. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Vicente J. Botet Escriba 2014-2015. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Vicente J. Botet Escriba 2014. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Andrew Lumsdaine, Indiana University (lums@osl.iu.edu). Permission to copy,
+// use, modify, sell and distribute this software is granted provided this
+// copyright notice appears in all copies. This software is provided "as is"
+// without express or implied warranty, and with no claim as to its suitability
+// for any purpose.
+
+
+====================BSL-1.0====================
+// Copyright 2002, 2005 Daryle Walker. Use, modification, and distribution
+// are subject to the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or a copy at <http://www.boost.org/LICENSE_1_0.txt>.)
+
+
+====================BSL-1.0====================
+// Copyright 2005 David Abrahams and Aleksey Gurtovoy. Distributed
+// under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright 2008 Eric Niebler. Distributed
+// under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright 2008 Eric Niebler. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright 2011 -2013 John Maddock. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Daniel Wallin 2005. Use, modification and distribution is
+// subject to the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Daniel Wallin 2006. Use, modification and distribution is
+// subject to the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Daniel Wallin 2007. Use, modification and distribution is
+// subject to the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Daniel Wallin, David Abrahams 2005. Use, modification and
+// distribution is subject to the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Daniel Wallin, David Abrahams 2010. Use, modification and
+// distribution is subject to the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright David Abrahams 2003. Use, modification and distribution is
+// subject to the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright David Abrahams 2004. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright David Abrahams 2004. Use, modification and distribution is
+// subject to the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright David Abrahams 2005. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright David Abrahams 2006. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright David Abrahams 2009. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright David Abrahams, Daniel Wallin 2003. Use, modification and
+// distribution is subject to the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright David Abrahams, Daniel Wallin 2005. Use, modification and
+// distribution is subject to the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Douglas Gregor 2001-2003. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Douglas Gregor 2001-2004. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Douglas Gregor 2001-2006. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Douglas Gregor 2002-2004. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Douglas Gregor 2003-2004. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright Frank Mori Hess 2007. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost
+// Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or
+// copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost
+// Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt
+// or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0 (see accompanying
+// file LICENSE_1_0.txt or a copy at http://www.boost.org/LICENSE_1_0.txt).
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+//
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for updates, documentation, and revision history.
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/ for updates, documentation, and revision history.
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for updates, documentation, and revision history.
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or the copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt
+// or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or
+// copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// (See http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+
+
+====================BSL-1.0====================
// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
+
+
+====================BSL-1.0====================
// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
// Distributed under the Boost Software License, Version 1.0.
-// (See http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
// Distributed under the Boost Software License, Version 1.0.
-// See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for updates, documentation, and revision history.
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org/libs/tokenizer for documenation
-
-// Revision History:
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org/libs/tokenizer for documentation.
-
-// Revision History:
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org/libs/tokenizer/ for documentation.
-
-// Revision History:
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org for most recent version including documentation.
-
-// Revision History
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org for updates, documentation, and revision history.
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0. (See accompany-
-// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0. (See accompany-
-// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org for updates, documentation, and revision history.
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
-
-
-====================BSL-1.0====================
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for updates, documentation, and revision history.
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/tokenizer for documenation
+
+// Revision History:
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/tokenizer for documentation.
+
+// Revision History:
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/tokenizer/ for documentation.
+
+// Revision History:
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org for most recent version including documentation.
+
+// Revision History
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org for updates, documentation, and revision history.
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0. (See accompany-
+// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0. (See accompany-
+// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org for updates, documentation, and revision history.
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Licensed under the Boost Software License version 1.0.
-
-
-====================BSL-1.0====================
-// Use modification and distribution are subject to the boost Software License,
-// Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
-
-
-====================BSL-1.0====================
-// Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0 (See accompanying file
-// LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-// or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt).
-
-
-====================BSL-1.0====================
-// Use, modification and distribution is subject to the
-// Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt
-// or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy
-// at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================BSL-1.0====================
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER)
-# pragma once
-#endif
-
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Licensed under the Boost Software License version 1.0.
+
+
+====================BSL-1.0====================
+// Use modification and distribution are subject to the boost Software License,
+// Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
+
+
+====================BSL-1.0====================
+// Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0 (See accompanying file
+// LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt
+// or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+
+
+====================BSL-1.0====================
+// Use, modification and distribution is subject to the
+// Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt
+// or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy
+// at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================BSL-1.0====================
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// MS compatible compilers support #pragma once
+#if defined(_MSC_VER)
+# pragma once
+#endif
+
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for updates, documentation, and revision history.
+
+
+====================BSL-1.0====================
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/serialization for updates, documentation, and revision history.
+
+
+====================BSL-1.0====================
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org for updates, documentation, and revision history.
+
+
+====================BSL-1.0====================
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+// gennadiy.rozental@tfn.com
+
+// See http://www.boost.org for updates, documentation, and revision history.
+
+
+====================BSL-1.0====================
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for updates, documentation, and revision history.
-
-
-====================BSL-1.0====================
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org/libs/serialization for updates, documentation, and revision history.
-
-
-====================BSL-1.0====================
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org for updates, documentation, and revision history.
-
-
-====================BSL-1.0====================
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-// gennadiy.rozental@tfn.com
-
-// See http://www.boost.org for updates, documentation, and revision history.
-
-
-====================BSL-1.0====================
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Use, modification and distribution is subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Use, modification and distribution is subject to the Boost Software License,
-// Version 1.Dimension. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Use, modification, and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
-
-
-====================BSL-1.0====================
-// Version 1.0. See http://www.boost.org/LICENSE_1_0.txt.
-
-
-====================BSL-1.0====================
-// boostinspect:nolicense (don't complain about the lack of a Boost license)
-
-
-====================BSL-1.0====================
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-/// Distributed under the Boost Software License, Version 1.0.\n
-/// ( See accompanying file LICENSE_1_0.txt or copy at
-/// http://www.boost.org/LICENSE_1_0.txt )
-
-
-====================BSL-1.0====================
-/// Distributed under the Boost Software License, Version 1.0.\n
-/// ( See accompanyingfile LICENSE_1_0.txt or copy at
-/// http://www.boost.org/LICENSE_1_0.txt )
-
-
-====================BSL-1.0====================
-/// Distributed under the Boost Software License, Version 1.0.\n
-/// ( See copy at http://www.boost.org/LICENSE_1_0.txt )
-
-
-====================BSL-1.0====================
-//Distributed under the Boost Software License, Version 1.0. (See accompanying
-//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-//Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
-
-====================BSL-1.0====================
-Distributed under the Boost Software License,
-Version 1.0. (See accompanying file LICENSE_1_0.txt
-or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-Distributed under the Boost Software License, Version 1.0.
-
-
-====================BSL-1.0====================
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE.md or copy at http ://boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or
-copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-Distributed under the Boost Software License, Version 1.0.
-(http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Use, modification and distribution is subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Use, modification and distribution is subject to the Boost Software License,
+// Version 1.Dimension. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Use, modification, and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
+
+
+====================BSL-1.0====================
+// Version 1.0. See http://www.boost.org/LICENSE_1_0.txt.
+
+
+====================BSL-1.0====================
+// boostinspect:nolicense (don't complain about the lack of a Boost license)
+
+
+====================BSL-1.0====================
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+/// Distributed under the Boost Software License, Version 1.0.\n
+/// ( See accompanying file LICENSE_1_0.txt or copy at
+/// http://www.boost.org/LICENSE_1_0.txt )
+
+
+====================BSL-1.0====================
+/// Distributed under the Boost Software License, Version 1.0.\n
+/// ( See accompanyingfile LICENSE_1_0.txt or copy at
+/// http://www.boost.org/LICENSE_1_0.txt )
+
+
+====================BSL-1.0====================
+/// Distributed under the Boost Software License, Version 1.0.\n
+/// ( See copy at http://www.boost.org/LICENSE_1_0.txt )
+
+
+====================BSL-1.0====================
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+//Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+====================BSL-1.0====================
+Distributed under the Boost Software License,
+Version 1.0. (See accompanying file LICENSE_1_0.txt
+or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+Distributed under the Boost Software License, Version 1.0.
+
+
+====================BSL-1.0====================
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE.md or copy at http ://boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or
+copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+Distributed under the Boost Software License, Version 1.0.
+(http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+Distributed under the Boost Software License, Version 1.0. (See accompanying
+file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
Distributed under the Boost Software License, Version 1.0. (See accompanying
-file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-Distributed under the Boost Software License, Version 1.0. (See accompanying
-file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-LICENSE(BSL-1.0)
-
-
-====================BSL-1.0====================
-Many thanks to Howard for making his code available under the Boost license.
-
-
-====================BSL-1.0 AND BSL-1.0====================
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENCE.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0 AND BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENCE_1_0.txt)
-
-
-====================BSL-1.0 AND BSL-1.0====================
-// Use modification and distribution are subject to the boost Software License,
-// Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
-
-
-====================BSL-1.0 AND BSL-1.0====================
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. See http://www.boost.org/LICENSE_1_0.txt.
-
-
-====================COPYRIGHT====================
- // Copyright 2010-2012, D. E. Shaw Research.
- // All rights reserved.
-
-
-====================COPYRIGHT====================
- Autogenerated by MultiStageTable.py (Unicode multi-stage
- table builder) (c) Peter Kankowski, 2008
-
-
-====================COPYRIGHT====================
- Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler
-
-
-====================COPYRIGHT====================
- Copyright (arg) 2001-2014 Joel de Guzman
-
-
-====================COPYRIGHT====================
- Copyright (c) 1998-2002 Joel de Guzman
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2001 Daniel Nuffer
- Copyright (c) 2001 Bruce Florman
- Copyright (c) 2002 Raghavendra Satish
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2001 Daniel Nuffer
- Copyright (c) 2002 Hartmut Kaiser
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2001 Daniel Nuffer
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2001-2003 Daniel Nuffer
- Copyright (c) 2001-2003 Hartmut Kaiser
- Copyright (c) 2002-2003 Martin Wille
- Copyright (c) 2002 Juan Carlos Arevalo-Baeza
- Copyright (c) 2002 Raghavendra Satish
- Copyright (c) 2002 Jeff Westfahl
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2001-2003 Daniel Nuffer
- Copyright (c) 2001-2003 Hartmut Kaiser
- Copyright (c) 2002-2003 Martin Wille
- Copyright (c) 2002 Raghavendra Satish
- Copyright (c) 2001 Bruce Florman
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2001-2003 Hartmut Kaiser
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2003 Martin Wille
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 1998-2003 Joel de Guzman
- Copyright (c) 2003 Vaclav Vesely
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 1998-2003 Joel de Guzman
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 1998-2008 Joel de Guzman
- Copyright (c) 2001-2008 Hartmut Kaiser
- Copyright (c) 2001-2003 Daniel Nuffer
- Copyright (c) 2002-2003 Martin Wille
- Copyright (c) 2002 Juan Carlos Arevalo-Baeza
- Copyright (c) 2002 Raghavendra Satish
- Copyright (c) 2002 Jeff Westfahl
- Copyright (c) 2001 Bruce Florman
- Copyright (c) 2003 Giovanni Bajo
- Copyright (c) 2003 Vaclav Vesely
- Copyright (c) 2003 Jonathan de Halleux
- http://spirit.sourceforge.net/
- http://www.boost.org/libs/spirit
-
-
-====================COPYRIGHT====================
- Copyright (c) 1999-2003 Jaakko Jarvi
- Copyright (c) 1999-2003 Jeremiah Willcock
- Copyright (c) 2001-2011 Joel de Guzman
-
-
-====================COPYRIGHT====================
- Copyright (c) 2000-2003 Brian McNamara and Yannis Smaragdakis
- Copyright (c) 2001-2007 Joel de Guzman
- Copyright (c) 2015 John Fletcher
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001 Doug Gregor
- Copyright (c) 1999-2003 Jaakko Jarvi
- Copyright (c) 2001-2011 Joel de Guzman
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001 by Andrei Alexandrescu. Distributed under the Boost
- Software License, Version 1.0. (See accompanying file
- LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001, Daniel C. Nuffer
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001, Daniel C. Nuffer
- Copyright (c) 2003, Hartmut Kaiser
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001, Daniel C. Nuffer
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2002 Joel de Guzman
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2003 Daniel Nuffer
- Copyright (c) 2001-2007 Hartmut Kaiser
- Revised 2007, Copyright (c) Tobias Schwinger
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2003 Daniel Nuffer
- Copyright (c) 2001-2007 Hartmut Kaiser
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2003 Daniel Nuffer
- Copyright (c) 2003 Giovanni Bajo
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2003 Joel de Guzman
- Copyright (c) 2002-2003 Hartmut Kaiser
- Copyright (c) 2003 Gustavo Guerra
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2003 Joel de Guzman
- Copyright (c) 2002-2003 Hartmut Kaiser
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2003 Joel de Guzman
- Copyright (c) 2002-2003 Martin Wille
- Copyright (c) 2003 Hartmut Kaiser
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2003 Joel de Guzman
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2007 Hartmut Kaiser
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2007 Hartmut Kaiser
- Copyright (c) 2001-2003 Daniel Nuffer
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2007 Joel de Guzman
- Copyright (c) 2007 Dan Marsden
- Copyright (c) 2009-2011 Christopher Schmidt
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2007 Joel de Guzman
- Copyright (c) 2014 John Fletcher
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2009 Joel de Guzman
- Copyright (c) 2007 Dan Marsden
- Copyright (c) 2010-2011 Christopher Schmidt
- Copyright (c) 2013-2014 Damien Buhl
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2009 Joel de Guzman
- Copyright (c) 2009-2010 Hartmut Kaiser
- Copyright (c) 2010-2011 Christopher Schmidt
- Copyright (c) 2013-2014 Damien Buhl
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2010 Joel de Guzman
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2010 Joel de Guzman
- Copyright (c) 2001-2010 Hartmut Kaiser
- Copyright (c) 2010 Bryce Lelbach
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2010 Joel de Guzman
- Copyright (c) 2001-2010 Hartmut Kaiser
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2010 Joel de Guzman
- Copyright (c) 2004 Daniel Wallin
- Copyright (c) 2010 Thomas Heller
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2010 Joel de Guzman
- Copyright (c) 2010 Eric Niebler
- Copyright (c) 2014-2015 John Fletcher
- Copyright (c) 2016 Kohei Takahashi
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2011 Hartmut Kaiser
- Copyright (c) 2001-2014 Joel de Guzman
- Copyright (c) 2013 Agustin Berge
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2011 Hartmut Kaiser
- Copyright (c) 2011 Bryce Lelbach
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2001-2009 Daniel Nuffer
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2001-2011 Hartmut Kaiser
- Copyright (c) 2009 Francois Barel
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2001-2011 Hartmut Kaiser
- Copyright (c) 2011 Jan Frederick Eick
- Copyright (c) 2011 Christopher Jefferson
- Copyright (c) 2006 Stephen Nutt
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2001-2011 Hartmut Kaiser
- Copyright (c) 2011 Thomas Bernard
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2005, 2014 Eric Niebler
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2005-2006 Dan Marsden
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2005-2006 Dan Marsden
- Copyright (c) 2009-2010 Christopher Schmidt
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2005-2006 Dan Marsden
- Copyright (c) 2010 Christopher Schmidt
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2006 Dan Marsden
- Copyright (c) 2009 Hartmut Kaiser
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2006 Dan Marsden
- Copyright (c) 2009-2010 Christopher Schmidt
- Copyright (c) 2015 Kohei Takahashi
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2006 Tobias Schwinger
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2007
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2007 Dan Marsden
- Copyright (c) 2009 Christopher Schmidt
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2010 Bryce Lelbach
- Copyright (c) 2014 Tomoki Imai
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2011 Brandon Kohn
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2011 Jan Frederick Eick
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2011-2012 Thomas Bernard
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2015 Kohei Takahashi
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2017 Kohei Takahashi
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2012 Hartmut Kaiser. Distributed under the Boost
- Software License, Version 1.0. (See accompanying file
- LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2012 Joel de Guzman
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2012 Joel de Guzman
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2013 Joel de Guzman
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2014 Joel de Guzman
- Copyright (c) 2001-2011 Hartmut Kaiser
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2014 Joel de Guzman
- Copyright (c) 2001-2012 Hartmut Kaiser
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2014 Joel de Guzman
- Copyright (c) 2013 Carl Barron
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2014 Joel de Guzman
- Copyright (c) 2013-2014 Agustin Berge
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2014 Joel de Guzman
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2015 Joel de Guzman
-
-
-====================COPYRIGHT====================
- Copyright (c) 2002 Joel de Guzman
- Copyright (c) 2002-2003 Hartmut Kaiser
-
-
-====================COPYRIGHT====================
- Copyright (c) 2002 Juan Carlos Arevalo-Baeza
- Copyright (c) 2002-2006 Hartmut Kaiser
- Copyright (c) 2003 Giovanni Bajo
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2002-2003 Joel de Guzman
- Copyright (c) 2002 Juan Carlos Arevalo-Baeza
- Copyright (c) 2002-2003 Martin Wille
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2002-2003 Joel de Guzman
- Copyright (c) 2002-2003 Juan Carlos Arevalo-Baeza
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2003 Giovanni Bajo
- Copyright (c) 2003 Martin Wille
- Copyright (c) 2003 Hartmut Kaiser
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2003 Giovanni Bajo
- Copyright (c) 2003 Thomas Witt
- Copyright (c) 2003 Hartmut Kaiser
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2003 Hartmut Kaiser
- Copyright (c) 2003 Joel de Guzman
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2003 Joel de Guzman
- Copyright (c) 2003 Vaclav Vesely
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2003 Joel de Guzman
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2003 Jonathan de Halleux (dehalleux@pelikhan.com)
- Copyright (c) 2011 Bryce Lelbach
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2003 Jonathan de Halleux (dehalleux@pelikhan.com)
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2003 Paul Mensonides
- Copyright (c) 2001-2012 Hartmut Kaiser.
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
- Copyright (c) 2004 Angus Leeming
- Copyright (c) 2004 Joel de Guzman
-
-
-====================COPYRIGHT====================
- Copyright (c) 2004 Angus Leeming
- Copyright (c) 2006 Daniel Wallin
- Copyright (c) 2005 Dan Marsden
- Copyright (c) 2007 Joel de Guzman
-
-
-====================COPYRIGHT====================
- Copyright (c) 2005 Matthew Calabrese
-
-
-====================COPYRIGHT====================
- Copyright (c) 2005-2006 Joao Abecasis
- Copyright (c) 2006-2007 Tobias Schwinger
-
-
-====================COPYRIGHT====================
- Copyright (c) 2005-2008 Hartmut Kaiser
- Copyright (c) 2005-2010 Joel de Guzman
- Copyright (c) 2014-2015 John Fletcher
-
-
-====================COPYRIGHT====================
- Copyright (c) 2005-2010 Joel de Guzman
- Copyright (c) 2010 Thomas Heller
-
-
-====================COPYRIGHT====================
- Copyright (c) 2005-2010 Joel de Guzman
- Copyright (c) 2010 Thomas Heller
- Copyright (c) 2018 Kohei Takahashi
-
-
-====================COPYRIGHT====================
- Copyright (c) 2005-2010 Joel de Guzman
- Copyright (c) 2010-2011 Thomas Heller
-
-
-====================COPYRIGHT====================
- Copyright (c) 2005-2010 Joel de Guzman
- Copyright (c) 2015 John Fletcher
-
-
-====================COPYRIGHT====================
- Copyright (c) 2005-2011 Joel de Guzman
- Copyright (c) 2011 Thomas Heller
-
-
-====================COPYRIGHT====================
- Copyright (c) 2005-2012 Joel de Guzman
- Copyright (c) 2005-2006 Dan Marsden
-
-
-====================COPYRIGHT====================
- Copyright (c) 2005-2012 Joel de Guzman
- Copyright (c) 2005-2007 Dan Marsden
-
-
-====================COPYRIGHT====================
- Copyright (c) 2005-2013 Joel de Guzman
- Copyright (c) 2006 Dan Marsden
-
-
-====================COPYRIGHT====================
- Copyright (c) 2006 Daniel Wallin
- Copyright (c) 2005 Dan Marsden
- Copyright (c) 2007 Joel de Guzman
-
-
-====================COPYRIGHT====================
- Copyright (c) 2006 Eric Niebler
-
-
-====================COPYRIGHT====================
- Copyright (c) 2006 Joao Abecasis
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2006 Tobias Schwinger
- Copyright (c) 2002-2006 Hartmut Kaiser
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2006 Tobias Schwinger
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2006-2007 Tobias Schwinger
-
-
-====================COPYRIGHT====================
- Copyright (c) 2007 Tobias Schwinger
-
-
-====================COPYRIGHT====================
- Copyright (c) 2007-2008 Tobias Schwinger
-
-
-====================COPYRIGHT====================
- Copyright (c) 2007-2011 Hartmut Kaiser
- Copyright (c) Christopher Diggins 2005
- Copyright (c) Pablo Aguilar 2005
- Copyright (c) Kevlin Henney 2001
-
-
-====================COPYRIGHT====================
- Copyright (c) 2009 Chris Hoeppler
- Copyright (c) 2014 Lee Clagett
-
-
-====================COPYRIGHT====================
- Copyright (c) 2010 Bryce Lelbach
-
-
-====================COPYRIGHT====================
- Copyright (c) 2010-2011 Bryce Lelbach
-
-
-====================COPYRIGHT====================
- Copyright (c) 2011 Aaron Graham
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2011 Eric Niebler
- Copyright (c) 2015 Kohei Takahashi
-
-
-====================COPYRIGHT====================
- Copyright (c) 2011 Hartmut Kaiser
-
-
-====================COPYRIGHT====================
- Copyright (c) 2011 Jamboree
- Copyright (c) 2014 Lee Clagett
-
-
-====================COPYRIGHT====================
- Copyright (c) 2011 Steven Watanabe
-
-
-====================COPYRIGHT====================
- Copyright (c) 2011 Thomas Heller
-
-
-====================COPYRIGHT====================
- Copyright (c) 2012 Kohei Takahashi
-
-
-====================COPYRIGHT====================
- Copyright (c) 2012 Nathan Ridge
-
-
-====================COPYRIGHT====================
- Copyright (c) 2012 Paul Fultz II
- first_of.h
- Distributed under the Boost Software License, Version 1.0. (See accompanying
-
-
-====================COPYRIGHT====================
- Copyright (c) 2012-2014 Kohei Takahashi
-
-
-====================COPYRIGHT====================
- Copyright (c) 2013 Jamboree
-
-
-====================COPYRIGHT====================
- Copyright (c) 2013 Mateusz Loskot
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2005-2006 Dan Marsden
-
-
-====================COPYRIGHT====================
- Copyright (c) 2014 Christoph Weiss
-
-
-====================COPYRIGHT====================
- Copyright (c) 2014 Eric Niebler
-
-
-====================COPYRIGHT====================
- Copyright (c) 2014 Jamboree
-
-
-====================COPYRIGHT====================
- Copyright (c) 2014 Joel de Guzman
-
-
-====================COPYRIGHT====================
- Copyright (c) 2014 Kohei Takahashi
-
-
-====================COPYRIGHT====================
- Copyright (c) 2014 Paul Fultz II
- always.h
- Distributed under the Boost Software License, Version 1.0. (See accompanying
-
-
-====================COPYRIGHT====================
- Copyright (c) 2014 Thomas Bernard
-
-
-====================COPYRIGHT====================
- Copyright (c) 2014-2015 Kohei Takahashi
-
-
-====================COPYRIGHT====================
- Copyright (c) 2015 Agustin K-ballo Berge
- Copyright (c) 2015 Kohei Takahashi
-
-
-====================COPYRIGHT====================
- Copyright (c) 2015 Mario Lang
- Copyright (c) 2001-2011 Hartmut Kaiser
-
-
-====================COPYRIGHT====================
- Copyright (c) 2015 Paul Fultz II
- alias.h
- Distributed under the Boost Software License, Version 1.0. (See accompanying
-
-
-====================COPYRIGHT====================
- Copyright (c) 2016 Lee Clagett
-
-
-====================COPYRIGHT====================
- Copyright (c) 2016 Paul Fultz II
- boost/hof.hpp
- Distributed under the Boost Software License, Version 1.0. (See accompanying
-
-
-====================COPYRIGHT====================
- Copyright 2005-2007 Adobe Systems Incorporated
-
-
-====================COPYRIGHT====================
- Copyright 2008 Adobe Systems Incorporated
-
-
-====================COPYRIGHT====================
- Copyright Andrey Semashev 2007 - 2015.
-
-
-====================COPYRIGHT====================
- Copyright Paul Mensonides 2003
- Copyright Aleksey Gurtovoy 2003-2004
-
-
-====================COPYRIGHT====================
- Copyright (C) 2004-2008 Rene Nyffenegger
-
-
-====================COPYRIGHT====================
- Copyright (c) Alexander Zaitsev <zamazan4ik@gmail.by>, 2017.
-
-
-====================COPYRIGHT====================
- Copyright (c) Marshall Clow 2008-2012.
-
-
-====================COPYRIGHT====================
- Copyright (c) Marshall Clow 2010-2012.
-
-
-====================COPYRIGHT====================
- Copyright (c) Marshall Clow 2011-2012.
-
-
-====================COPYRIGHT====================
- Copyright (c) Marshall Clow 2012-2012.
-
-
-====================COPYRIGHT====================
- Copyright (c) Marshall Clow 2012-2015.
-
-
-====================COPYRIGHT====================
- Copyright (c) Marshall Clow 2012-2015.
- Copyright (c) Beman Dawes 2015
-
-
-====================COPYRIGHT====================
- Copyright (c) Marshall Clow 2014.
-
-
-====================COPYRIGHT====================
- Copyright (c) Marshall Clow 2017.
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2008 Joel de Guzman
- Copyright (c) 2001-2008 Hartmut Kaiser
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2011 Joel de Guzman
- Copyright (c) 2001-2011 Hartmut Kaiser
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) 2001-2011 Joel de Guzman
- http://spirit.sourceforge.net/
-
-
-====================COPYRIGHT====================
- Copyright (c) Alexander Zaitsev <zamazan4ik@gmail.com>, 2016
-
-
-====================COPYRIGHT====================
- Copyright 2008 Intel Corporation
-
-
-====================COPYRIGHT====================
- Copyright 2009-2012 Karsten Ahnert
- Copyright 2009-2012 Mario Mulansky
-
-
-====================COPYRIGHT====================
- Copyright 2009-2013 Karsten Ahnert
- Copyright 2009-2013 Mario Mulansky
-
-
-====================COPYRIGHT====================
- Copyright 2009-2015 Mario Mulansky
-
-
-====================COPYRIGHT====================
- Copyright 2012 Lucanus Simonson
-
-
-====================COPYRIGHT====================
- Copyright 2013 Ankur Sinha
- Copyright 2013 Karsten Ahnert
-
-
-====================COPYRIGHT====================
- Copyright 2013 Christian Shelton
- Copyright 2013 Karsten Ahnert
-
-
-====================COPYRIGHT====================
- Copyright 2013-2014 Karsten Ahnert
- Copyright 2013-2014 Mario Mulansky
-
-
-====================COPYRIGHT====================
- Copyright 2017 James E. King, III
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
- * Copyright Lingxi Li 2015.
- * Copyright Andrey Semashev 2015.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
- * Copyright Lingxi Li 2015.
- * Copyright Andrey Semashev 2016.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
- * Copyright Andrey Semashev 2016.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
- * Copyright Andrey Semashev 2018.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
- * Copyright Andy Tompkins 2006.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
- * Copyright Andrey Semashev 2013.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
- * Copyright Andrey Semashev 2007 - 2013.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
- * Copyright Andrey Semashev 2007 - 2014.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
- * Copyright Andrey Semashev 2007 - 2016.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
- * Copyright (c) 2001-2003 Joel de Guzman
-
-
-====================COPYRIGHT====================
- * Copyright Nick Thompson, 2017
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
- * (C) Copyright 2013 Tim Blechmann
- * (C) Copyright 2013 Andrey Semashev
-
-
-====================COPYRIGHT====================
- * (C) Copyright Nicolai M. Josuttis 2001.
-
-
-====================COPYRIGHT====================
- * Copyright (C) 2017 James E. King III
-
-
-====================COPYRIGHT====================
- * Copyright (c) 1994
- * Hewlett-Packard Company
-
-
-====================COPYRIGHT====================
- * Copyright (c) 1996
- * Silicon Graphics Computer Systems, Inc.
-
-
-====================COPYRIGHT====================
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
-
-
-====================COPYRIGHT====================
- * Copyright (c) 1998
- * Silicon Graphics Computer Systems, Inc.
-
-
-====================COPYRIGHT====================
- * Copyright (c) 1998-2000
- * Dr John Maddock
-
-
-====================COPYRIGHT====================
- * Copyright (c) 1998-2002
- * John Maddock
-
-
-====================COPYRIGHT====================
- * Copyright (c) 1998-2004 John Maddock
- * Copyright 2011 Garmin Ltd. or its subsidiaries
-
-
-====================COPYRIGHT====================
- * Copyright (c) 1998-2005
- * John Maddock
-
-
-====================COPYRIGHT====================
- * Copyright (c) 1998-2009
- * John Maddock
-
-
-====================COPYRIGHT====================
- * Copyright (c) 2002
- * John Maddock
-
-
-====================COPYRIGHT====================
- * Copyright (c) 2003
- * John Maddock
-
-
-====================COPYRIGHT====================
- * Copyright (c) 2003-2004
- * Douglas Gregor
-
-
-====================COPYRIGHT====================
- * Copyright (c) 2003-2005
- * John Maddock
-
-
-====================COPYRIGHT====================
- * Copyright (c) 2004
- * John Maddock
-
-
-====================COPYRIGHT====================
- * Copyright (c) 2009 Helge Bahmann
- * Copyright (c) 2009 Phil Endecott
- * Copyright (c) 2013 Tim Blechmann
- * ARM Code by Phil Endecott, based on other architectures.
- * Copyright (c) 2014 Andrey Semashev
-
-
-====================COPYRIGHT====================
- * Copyright (c) 2009 Helge Bahmann
- * Copyright (c) 2012 Tim Blechmann
- * Copyright (c) 2013 - 2014 Andrey Semashev
-
-
-====================COPYRIGHT====================
- * Copyright (c) 2009 Helge Bahmann
- * Copyright (c) 2012 Tim Blechmann
- * Copyright (c) 2013 - 2018 Andrey Semashev
-
-
-====================COPYRIGHT====================
- * Copyright (c) 2009 Helge Bahmann
- * Copyright (c) 2012 Tim Blechmann
- * Copyright (c) 2014 - 2018 Andrey Semashev
-
-
-====================COPYRIGHT====================
- * Copyright (c) 2009 Helge Bahmann
- * Copyright (c) 2013 Tim Blechmann
- * Copyright (c) 2012 - 2014 Andrey Semashev
-
-
-====================COPYRIGHT====================
- * Copyright (c) 2009, 2011 Helge Bahmann
- * Copyright (c) 2009 Phil Endecott
- * Copyright (c) 2013 Tim Blechmann
- * Linux-specific code by Phil Endecott
- * Copyright (c) 2014 Andrey Semashev
-
-
-====================COPYRIGHT====================
- * Copyright (c) 2009, Gunter Winkler
-
-
-====================COPYRIGHT====================
- * Copyright (c) 2009, Marco Guazzone
-
-
-====================COPYRIGHT====================
- * Copyright (c) 2009-2010, Marco Guazzone
-
-
-====================COPYRIGHT====================
- * Copyright (c) 2009-2012, Marco Guazzone
-
-
-====================COPYRIGHT====================
- * Copyright (c) 2010 Helge Bahmann
- * Copyright (c) 2013 Tim Blechmann
- * Copyright (c) 2014 Andrey Semashev
-
-
-====================COPYRIGHT====================
- * Copyright (c) 2010 Matthias Walter (xammy@xammy.homelinux.net)
-
-
-====================COPYRIGHT====================
- * Copyright (c) 2011 Helge Bahmann
- * Copyright (c) 2013 Tim Blechmann
- * Copyright (c) 2014 Andrey Semashev
-
-
-====================COPYRIGHT====================
- * Copyright (c) 2011 Helge Bahmann
- * Copyright (c) 2013-2014 Andrey Semashev
-
-
-====================COPYRIGHT====================
- * Copyright (c) 2012 Hartmut Kaiser
- * Copyright (c) 2014 Andrey Semashev
-
-
-====================COPYRIGHT====================
- * Copyright (c) 2014 Glen Fernandes
-
-
-====================COPYRIGHT====================
- * Copyright (c) 2015 Andrey Semashev
-
-
-====================COPYRIGHT====================
- * Copyright (c) 2017 - 2018 Andrey Semashev
-
-
-====================COPYRIGHT====================
- * Copyright (c) 2017 Andrey Semashev
-
-
-====================COPYRIGHT====================
- * Copyright 2000 Jens Maurer
- * Copyright 2002 Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion
-
-
-====================COPYRIGHT====================
- * Copyright 2000 Jens Maurer
- * Copyright 2002-2003 Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion
-
-
-====================COPYRIGHT====================
- * Copyright 2000 Maarten Keijzer
- * Copyright 2002 Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion
-
-
-====================COPYRIGHT====================
- * Copyright 2002 Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion
- * Copyright 2005 Guillaume Melquiond
-
-
-====================COPYRIGHT====================
- * Copyright 2002-2003 Guillaume Melquiond
-
-
-====================COPYRIGHT====================
- * Copyright 2003 Guillaume Melquiond
-
-
-====================COPYRIGHT====================
- * Copyright 2003 Guillaume Melquiond, Sylvain Pion
-
-
-====================COPYRIGHT====================
- * Copyright 2003-2018 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
- * Copyright 2005 Felix Höfling, Guillaume Melquiond
-
-
-====================COPYRIGHT====================
- * Copyright 2006-2007 Boris Gubenko
-
-
-====================COPYRIGHT====================
- * Copyright 2010 Vicente J. Botet Escriba
- * Copyright 2015 Andrey Semashev
-
-
-====================COPYRIGHT====================
- * Copyright 2010 Vicente J. Botet Escriba
- * Copyright 2015, 2017 Andrey Semashev
-
-
-====================COPYRIGHT====================
- * Copyright 2013 Andrey Semashev
-
-
-====================COPYRIGHT====================
- * Copyright 2013, 2017 Andrey Semashev
- * Copyright 2017 James E. King, III
-
-
-====================COPYRIGHT====================
- * Copyright 2014 Antony Polukhin
- * Copyright 2015 Andrey Semashev
-
-
-====================COPYRIGHT====================
- * Copyright 2015 Klemens Morgenstern
- * Copyright 2016 Jorge Lodos
- * Copyright 2016 Andrey Semashev
-
-
-====================COPYRIGHT====================
- * Copyright 2016 Andrey Semashev
-
-
-====================COPYRIGHT====================
- * Copyright 2016 Klemens D. Morgenstern
-
-
-====================COPYRIGHT====================
- * Copyright 2016 Klemens D. Morgenstern
- * Copyright 2016, 2017 Andrey Semashev
-
-
-====================COPYRIGHT====================
- * Copyright 2017 Andrey Semashev
-
-
-====================COPYRIGHT====================
- * Copyright 2017 Vinnie Falco
-
-
-====================COPYRIGHT====================
- * Copyright Jens Maurer 2000
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
- * Copyright Jens Maurer 2000-2001
- * Copyright Steven Watanabe 2010-2011
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
- * Copyright Jens Maurer 2000-2001
- * Copyright Steven Watanabe 2011
- * Copyright Jason Rhinelander 2016
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
- * Copyright Jens Maurer 2000-2001
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
- * Copyright Jens Maurer 2002
- * Copyright Steven Watanabe 2010
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
- * Copyright Jens Maurer 2006
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
- * Copyright Marco Guazzone 2014
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
- * Copyright Nick Thompson, 2018
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
- * Copyright Steven Watanabe 2009
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
- * Copyright Steven Watanabe 2009-2011
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
- * Copyright Steven Watanabe 2010
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
- * Copyright Steven Watanabe 2014
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
- * Copyright Thijs van den Berg 2014
-
-
-====================COPYRIGHT====================
- * Date: Sun Jan 06 12:57:30 MST 2008
- * Copyright: 2008 CodeRage, LLC
- 2004-2007 Jonathan Turkanis
- * Author: Jonathan Turkanis
- * Contact: turkanis at coderage dot com
-
-
-====================COPYRIGHT====================
- * Date: Sun Jun 22 14:23:12 MDT 2008
- * Copyright: 2008 CodeRage, LLC
- * Author: Jonathan Turkanis
- * Contact: turkanis at coderage dot com
-
-
-====================COPYRIGHT====================
- * Date: Thu Dec 06 13:21:54 MST 2007
- * Copyright: 2007-2008 CodeRage, LLC
- * Author: Jonathan Turkanis
- * Contact: turkanis at coderage dot com
-
-
-====================COPYRIGHT====================
- * This software was written by Alexander Peslyak in 2001. No copyright is
- * claimed, and the software is hereby placed in the public domain.
- * In case this attempt to disclaim copyright and place the software in the
- * public domain is deemed null and void, then the software is
- * Copyright (c) 2001 Alexander Peslyak and it is hereby released to the
- * general public under the following terms:
-
-
-====================COPYRIGHT====================
- * \author Brian Ravnsgaard Riis
- * \author Kenneth Riddile
- * \date 16.09.2004, updated 04.03.2009
- * \copyright 2004 Brian Ravnsgaard Riis
- * \license Boost Software License 1.0
-
-
-====================COPYRIGHT====================
- Copyright 2009-2011 Karsten Ahnert
- Copyright 2009-2011 Mario Mulansky
-
-
-====================COPYRIGHT====================
- Copyright 2009-2013 Karsten Ahnert
- Copyright 2010-2013 Mario Mulansky
-
-
-====================COPYRIGHT====================
- Copyright 2010-2011 Mario Mulansky
- Copyright 2011-2013 Karsten Ahnert
-
-
-====================COPYRIGHT====================
- Copyright 2010-2012 Karsten Ahnert
- Copyright 2010 Mario Mulansky
-
-
-====================COPYRIGHT====================
- Copyright 2010-2012 Karsten Ahnert
- Copyright 2010-2013 Mario Mulansky
-
-
-====================COPYRIGHT====================
- Copyright 2010-2012 Karsten Ahnert
- Copyright 2011 Mario Mulansky
-
-
-====================COPYRIGHT====================
- Copyright 2010-2012 Mario Mulansky
- Copyright 2010-2012 Karsten Ahnert
- Copyright 2012 Christoph Koke
-
-
-====================COPYRIGHT====================
- Copyright 2010-2013 Karsten Ahnert
- Copyright 2010-2013 Mario Mulansky
-
-
-====================COPYRIGHT====================
- Copyright 2010-2013 Karsten Ahnert
- Copyright 2010-2015 Mario Mulansky
- Copyright 2012 Christoph Koke
-
-
-====================COPYRIGHT====================
- Copyright 2010-2013 Mario Mulansky
- Copyright 2010-2011 Karsten Ahnert
- Copyright 2013 Kyle Lutz
-
-
-====================COPYRIGHT====================
- Copyright 2010-2014 Mario Mulansky
- Copyright 2010-2011 Karsten Ahnert
-
-
-====================COPYRIGHT====================
- Copyright 2011-2012 Mario Mulansky
- Copyright 2011 Karsten Ahnert
-
-
-====================COPYRIGHT====================
- Copyright 2011-2012 Mario Mulansky
- Copyright 2011-2012 Karsten Ahnert
-
-
-====================COPYRIGHT====================
- Copyright 2011-2013 Karsten Ahnert
- Copyright 2011-2013 Mario Mulansky
-
-
-====================COPYRIGHT====================
- Copyright 2011-2013 Karsten Ahnert
- Copyright 2011-2013 Thorsten Ottosen
-
-
-====================COPYRIGHT====================
- Copyright 2011-2013 Karsten Ahnert
- Copyright 2011-2015 Mario Mulansky
-
-
-====================COPYRIGHT====================
- Copyright 2011-2013 Karsten Ahnert
- Copyright 2011-2015 Mario Mulansky
- Copyright 2012 Christoph Koke
-
-
-====================COPYRIGHT====================
- Copyright 2011-2013 Mario Mulansky
- Copyright 2011-2012 Karsten Ahnert
-
-
-====================COPYRIGHT====================
- Copyright 2012 Karsten Ahnert
- Copyright 2012 Mario Mulansky
- Copyright 2012 Denis Demidov
-
-
-====================COPYRIGHT====================
- Copyright 2012-2015 Mario Mulansky
- Copyright 2012 Christoph Koke
- Copyright 2012 Karsten Ahnert
-
-
-====================COPYRIGHT====================
- Copyright 2013 Karsten Ahnert
- Copyright 2013 Mario Mulansky
-
-
-====================COPYRIGHT====================
- Copyright 2013 Karsten Ahnert
- Copyright 2013 Mario Mulansky
- Copyright 2013 Pascal Germroth
-
-
-====================COPYRIGHT====================
- Copyright 2015 Mario Mulansky
-
-
-====================COPYRIGHT====================
-# * (C) Copyright Edward Diener 2011. *
-# * (C) Copyright Paul Mensonides 2011. *
-# * Distributed under the Boost Software License, Version 1.0. (See *
-# * accompanying file LICENSE_1_0.txt or copy at *
-
-
-====================COPYRIGHT====================
-# * (C) Copyright Edward Diener 2013.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-# * (C) Copyright Edward Diener 2015.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-# * (C) Copyright Edward Diener 2016. *
-# * Distributed under the Boost Software License, Version 1.0. (See *
-# * accompanying file LICENSE_1_0.txt or copy at *
-
-
-====================COPYRIGHT====================
-# * (C) Copyright Paul Mensonides 2002-2011. *
-# * (C) Copyright Edward Diener 2011,2013. *
-# * Distributed under the Boost Software License, Version 1.0. (See *
-# * accompanying file LICENSE_1_0.txt or copy at *
-
-
-====================COPYRIGHT====================
-# * (C) Copyright Paul Mensonides 2002-2011. *
-# * (C) Copyright Edward Diener 2011. *
-# * Distributed under the Boost Software License, Version 1.0. (See *
-# * accompanying file LICENSE_1_0.txt or copy at *
-
-
-====================COPYRIGHT====================
-# * (C) Copyright Paul Mensonides 2002.
-# * (C) Copyright Edward Diener 2014.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-# * (C) Copyright Paul Mensonides 2002.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-# * (C) Copyright Paul Mensonides 2003.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-# * (C) Copyright Paul Mensonides 2005. *
-# * Distributed under the Boost Software License, Version 1.0. (See *
-# * accompanying file LICENSE_1_0.txt or copy at *
-
-
-====================COPYRIGHT====================
-# * (C) Copyright Paul Mensonides 2011.
-# * (C) Copyright Edward Diener 2011,2014.
-# * Distributed under the Boost Software License, Version 1.0. (See
-# * accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-# * (C) Copyright Paul Mensonides 2012. *
-# * Distributed under the Boost Software License, Version 1.0. (See *
-# * accompanying file LICENSE_1_0.txt or copy at *
-
-
-====================COPYRIGHT====================
-# /* Copyright (C) 2001
-# * Housemarque Oy
-# * http://www.housemarque.com
-
-
-====================COPYRIGHT====================
-/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+LICENSE(BSL-1.0)
+
+
+====================BSL-1.0====================
+Many thanks to Howard for making his code available under the Boost license.
+
+
+====================BSL-1.0 AND BSL-1.0====================
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENCE.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0 AND BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENCE_1_0.txt)
+
+
+====================BSL-1.0 AND BSL-1.0====================
+// Use modification and distribution are subject to the boost Software License,
+// Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
+
+
+====================BSL-1.0 AND BSL-1.0====================
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. See http://www.boost.org/LICENSE_1_0.txt.
+
+
+====================COPYRIGHT====================
+ // Copyright 2010-2012, D. E. Shaw Research.
+ // All rights reserved.
+
+
+====================COPYRIGHT====================
+ Autogenerated by MultiStageTable.py (Unicode multi-stage
+ table builder) (c) Peter Kankowski, 2008
+
+
+====================COPYRIGHT====================
+ Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler
+
+
+====================COPYRIGHT====================
+ Copyright (arg) 2001-2014 Joel de Guzman
+
+
+====================COPYRIGHT====================
+ Copyright (c) 1998-2002 Joel de Guzman
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 1998-2003 Joel de Guzman
+ Copyright (c) 2001 Daniel Nuffer
+ Copyright (c) 2001 Bruce Florman
+ Copyright (c) 2002 Raghavendra Satish
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 1998-2003 Joel de Guzman
+ Copyright (c) 2001 Daniel Nuffer
+ Copyright (c) 2002 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 1998-2003 Joel de Guzman
+ Copyright (c) 2001 Daniel Nuffer
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 1998-2003 Joel de Guzman
+ Copyright (c) 2001-2003 Daniel Nuffer
+ Copyright (c) 2001-2003 Hartmut Kaiser
+ Copyright (c) 2002-2003 Martin Wille
+ Copyright (c) 2002 Juan Carlos Arevalo-Baeza
+ Copyright (c) 2002 Raghavendra Satish
+ Copyright (c) 2002 Jeff Westfahl
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 1998-2003 Joel de Guzman
+ Copyright (c) 2001-2003 Daniel Nuffer
+ Copyright (c) 2001-2003 Hartmut Kaiser
+ Copyright (c) 2002-2003 Martin Wille
+ Copyright (c) 2002 Raghavendra Satish
+ Copyright (c) 2001 Bruce Florman
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 1998-2003 Joel de Guzman
+ Copyright (c) 2001-2003 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 1998-2003 Joel de Guzman
+ Copyright (c) 2003 Martin Wille
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 1998-2003 Joel de Guzman
+ Copyright (c) 2003 Vaclav Vesely
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 1998-2003 Joel de Guzman
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 1998-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ Copyright (c) 2001-2003 Daniel Nuffer
+ Copyright (c) 2002-2003 Martin Wille
+ Copyright (c) 2002 Juan Carlos Arevalo-Baeza
+ Copyright (c) 2002 Raghavendra Satish
+ Copyright (c) 2002 Jeff Westfahl
+ Copyright (c) 2001 Bruce Florman
+ Copyright (c) 2003 Giovanni Bajo
+ Copyright (c) 2003 Vaclav Vesely
+ Copyright (c) 2003 Jonathan de Halleux
+ http://spirit.sourceforge.net/
+ http://www.boost.org/libs/spirit
+
+
+====================COPYRIGHT====================
+ Copyright (c) 1999-2003 Jaakko Jarvi
+ Copyright (c) 1999-2003 Jeremiah Willcock
+ Copyright (c) 2001-2011 Joel de Guzman
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2000-2003 Brian McNamara and Yannis Smaragdakis
+ Copyright (c) 2001-2007 Joel de Guzman
+ Copyright (c) 2015 John Fletcher
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001 Doug Gregor
+ Copyright (c) 1999-2003 Jaakko Jarvi
+ Copyright (c) 2001-2011 Joel de Guzman
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001 by Andrei Alexandrescu. Distributed under the Boost
+ Software License, Version 1.0. (See accompanying file
+ LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001, Daniel C. Nuffer
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001, Daniel C. Nuffer
+ Copyright (c) 2003, Hartmut Kaiser
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001, Daniel C. Nuffer
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2002 Joel de Guzman
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2003 Daniel Nuffer
+ Copyright (c) 2001-2007 Hartmut Kaiser
+ Revised 2007, Copyright (c) Tobias Schwinger
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2003 Daniel Nuffer
+ Copyright (c) 2001-2007 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2003 Daniel Nuffer
+ Copyright (c) 2003 Giovanni Bajo
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2003 Joel de Guzman
+ Copyright (c) 2002-2003 Hartmut Kaiser
+ Copyright (c) 2003 Gustavo Guerra
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2003 Joel de Guzman
+ Copyright (c) 2002-2003 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2003 Joel de Guzman
+ Copyright (c) 2002-2003 Martin Wille
+ Copyright (c) 2003 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2003 Joel de Guzman
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2007 Hartmut Kaiser
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2007 Hartmut Kaiser
+ Copyright (c) 2001-2003 Daniel Nuffer
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2007 Joel de Guzman
+ Copyright (c) 2007 Dan Marsden
+ Copyright (c) 2009-2011 Christopher Schmidt
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2007 Joel de Guzman
+ Copyright (c) 2014 John Fletcher
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2009 Joel de Guzman
+ Copyright (c) 2007 Dan Marsden
+ Copyright (c) 2010-2011 Christopher Schmidt
+ Copyright (c) 2013-2014 Damien Buhl
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2009 Joel de Guzman
+ Copyright (c) 2009-2010 Hartmut Kaiser
+ Copyright (c) 2010-2011 Christopher Schmidt
+ Copyright (c) 2013-2014 Damien Buhl
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2010 Joel de Guzman
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2010 Joel de Guzman
+ Copyright (c) 2001-2010 Hartmut Kaiser
+ Copyright (c) 2010 Bryce Lelbach
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2010 Joel de Guzman
+ Copyright (c) 2001-2010 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2010 Joel de Guzman
+ Copyright (c) 2004 Daniel Wallin
+ Copyright (c) 2010 Thomas Heller
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2010 Joel de Guzman
+ Copyright (c) 2010 Eric Niebler
+ Copyright (c) 2014-2015 John Fletcher
+ Copyright (c) 2016 Kohei Takahashi
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2011 Hartmut Kaiser
+ Copyright (c) 2001-2014 Joel de Guzman
+ Copyright (c) 2013 Agustin Berge
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2011 Hartmut Kaiser
+ Copyright (c) 2011 Bryce Lelbach
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2001-2009 Daniel Nuffer
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2001-2011 Hartmut Kaiser
+ Copyright (c) 2009 Francois Barel
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2001-2011 Hartmut Kaiser
+ Copyright (c) 2011 Jan Frederick Eick
+ Copyright (c) 2011 Christopher Jefferson
+ Copyright (c) 2006 Stephen Nutt
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2001-2011 Hartmut Kaiser
+ Copyright (c) 2011 Thomas Bernard
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2005, 2014 Eric Niebler
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+ Copyright (c) 2009-2010 Christopher Schmidt
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+ Copyright (c) 2010 Christopher Schmidt
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2006 Dan Marsden
+ Copyright (c) 2009 Hartmut Kaiser
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2006 Dan Marsden
+ Copyright (c) 2009-2010 Christopher Schmidt
+ Copyright (c) 2015 Kohei Takahashi
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2006 Tobias Schwinger
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2007
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2007 Dan Marsden
+ Copyright (c) 2009 Christopher Schmidt
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2010 Bryce Lelbach
+ Copyright (c) 2014 Tomoki Imai
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2011 Brandon Kohn
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2011 Jan Frederick Eick
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2011-2012 Thomas Bernard
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2015 Kohei Takahashi
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2017 Kohei Takahashi
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2012 Hartmut Kaiser. Distributed under the Boost
+ Software License, Version 1.0. (See accompanying file
+ LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2012 Joel de Guzman
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2012 Joel de Guzman
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2013 Joel de Guzman
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2014 Joel de Guzman
+ Copyright (c) 2001-2011 Hartmut Kaiser
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2014 Joel de Guzman
+ Copyright (c) 2001-2012 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2014 Joel de Guzman
+ Copyright (c) 2013 Carl Barron
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2014 Joel de Guzman
+ Copyright (c) 2013-2014 Agustin Berge
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2014 Joel de Guzman
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2015 Joel de Guzman
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2002 Joel de Guzman
+ Copyright (c) 2002-2003 Hartmut Kaiser
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2002 Juan Carlos Arevalo-Baeza
+ Copyright (c) 2002-2006 Hartmut Kaiser
+ Copyright (c) 2003 Giovanni Bajo
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2002-2003 Joel de Guzman
+ Copyright (c) 2002 Juan Carlos Arevalo-Baeza
+ Copyright (c) 2002-2003 Martin Wille
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2002-2003 Joel de Guzman
+ Copyright (c) 2002-2003 Juan Carlos Arevalo-Baeza
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2003 Giovanni Bajo
+ Copyright (c) 2003 Martin Wille
+ Copyright (c) 2003 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2003 Giovanni Bajo
+ Copyright (c) 2003 Thomas Witt
+ Copyright (c) 2003 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2003 Hartmut Kaiser
+ Copyright (c) 2003 Joel de Guzman
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2003 Joel de Guzman
+ Copyright (c) 2003 Vaclav Vesely
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2003 Joel de Guzman
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2003 Jonathan de Halleux (dehalleux@pelikhan.com)
+ Copyright (c) 2011 Bryce Lelbach
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2003 Jonathan de Halleux (dehalleux@pelikhan.com)
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2003 Paul Mensonides
+ Copyright (c) 2001-2012 Hartmut Kaiser.
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2004 Angus Leeming
+ Copyright (c) 2004 Joel de Guzman
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2004 Angus Leeming
+ Copyright (c) 2006 Daniel Wallin
+ Copyright (c) 2005 Dan Marsden
+ Copyright (c) 2007 Joel de Guzman
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2005 Matthew Calabrese
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2005-2006 Joao Abecasis
+ Copyright (c) 2006-2007 Tobias Schwinger
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2005-2008 Hartmut Kaiser
+ Copyright (c) 2005-2010 Joel de Guzman
+ Copyright (c) 2014-2015 John Fletcher
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2005-2010 Joel de Guzman
+ Copyright (c) 2010 Thomas Heller
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2005-2010 Joel de Guzman
+ Copyright (c) 2010 Thomas Heller
+ Copyright (c) 2018 Kohei Takahashi
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2005-2010 Joel de Guzman
+ Copyright (c) 2010-2011 Thomas Heller
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2005-2010 Joel de Guzman
+ Copyright (c) 2015 John Fletcher
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2005-2011 Joel de Guzman
+ Copyright (c) 2011 Thomas Heller
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2005-2012 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2005-2012 Joel de Guzman
+ Copyright (c) 2005-2007 Dan Marsden
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2005-2013 Joel de Guzman
+ Copyright (c) 2006 Dan Marsden
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2006 Daniel Wallin
+ Copyright (c) 2005 Dan Marsden
+ Copyright (c) 2007 Joel de Guzman
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2006 Eric Niebler
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2006 Joao Abecasis
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2006 Tobias Schwinger
+ Copyright (c) 2002-2006 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2006 Tobias Schwinger
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2006-2007 Tobias Schwinger
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2007 Tobias Schwinger
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2007-2008 Tobias Schwinger
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2007-2011 Hartmut Kaiser
+ Copyright (c) Christopher Diggins 2005
+ Copyright (c) Pablo Aguilar 2005
+ Copyright (c) Kevlin Henney 2001
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2009 Chris Hoeppler
+ Copyright (c) 2014 Lee Clagett
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2010 Bryce Lelbach
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2010-2011 Bryce Lelbach
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2011 Aaron Graham
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2011 Eric Niebler
+ Copyright (c) 2015 Kohei Takahashi
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2011 Hartmut Kaiser
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2011 Jamboree
+ Copyright (c) 2014 Lee Clagett
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2011 Steven Watanabe
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2011 Thomas Heller
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2012 Kohei Takahashi
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2012 Nathan Ridge
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2012 Paul Fultz II
+ first_of.h
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2012-2014 Kohei Takahashi
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2013 Jamboree
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2013 Mateusz Loskot
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2014 Christoph Weiss
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2014 Eric Niebler
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2014 Jamboree
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2014 Joel de Guzman
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2014 Kohei Takahashi
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2014 Paul Fultz II
+ always.h
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2014 Thomas Bernard
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2014-2015 Kohei Takahashi
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2015 Agustin K-ballo Berge
+ Copyright (c) 2015 Kohei Takahashi
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2015 Mario Lang
+ Copyright (c) 2001-2011 Hartmut Kaiser
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2015 Paul Fultz II
+ alias.h
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2016 Lee Clagett
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2016 Paul Fultz II
+ boost/hof.hpp
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+
+
+====================COPYRIGHT====================
+ Copyright 2005-2007 Adobe Systems Incorporated
+
+
+====================COPYRIGHT====================
+ Copyright 2008 Adobe Systems Incorporated
+
+
+====================COPYRIGHT====================
+ Copyright Andrey Semashev 2007 - 2015.
+
+
+====================COPYRIGHT====================
+ Copyright Paul Mensonides 2003
+ Copyright Aleksey Gurtovoy 2003-2004
+
+
+====================COPYRIGHT====================
+ Copyright (C) 2004-2008 Rene Nyffenegger
+
+
+====================COPYRIGHT====================
+ Copyright (c) Alexander Zaitsev <zamazan4ik@gmail.by>, 2017.
+
+
+====================COPYRIGHT====================
+ Copyright (c) Marshall Clow 2008-2012.
+
+
+====================COPYRIGHT====================
+ Copyright (c) Marshall Clow 2010-2012.
+
+
+====================COPYRIGHT====================
+ Copyright (c) Marshall Clow 2011-2012.
+
+
+====================COPYRIGHT====================
+ Copyright (c) Marshall Clow 2012-2012.
+
+
+====================COPYRIGHT====================
+ Copyright (c) Marshall Clow 2012-2015.
+
+
+====================COPYRIGHT====================
+ Copyright (c) Marshall Clow 2012-2015.
+ Copyright (c) Beman Dawes 2015
+
+
+====================COPYRIGHT====================
+ Copyright (c) Marshall Clow 2014.
+
+
+====================COPYRIGHT====================
+ Copyright (c) Marshall Clow 2017.
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2008 Joel de Guzman
+ Copyright (c) 2001-2008 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2011 Joel de Guzman
+ Copyright (c) 2001-2011 Hartmut Kaiser
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) 2001-2011 Joel de Guzman
+ http://spirit.sourceforge.net/
+
+
+====================COPYRIGHT====================
+ Copyright (c) Alexander Zaitsev <zamazan4ik@gmail.com>, 2016
+
+
+====================COPYRIGHT====================
+ Copyright 2008 Intel Corporation
+
+
+====================COPYRIGHT====================
+ Copyright 2009-2012 Karsten Ahnert
+ Copyright 2009-2012 Mario Mulansky
+
+
+====================COPYRIGHT====================
+ Copyright 2009-2013 Karsten Ahnert
+ Copyright 2009-2013 Mario Mulansky
+
+
+====================COPYRIGHT====================
+ Copyright 2009-2015 Mario Mulansky
+
+
+====================COPYRIGHT====================
+ Copyright 2012 Lucanus Simonson
+
+
+====================COPYRIGHT====================
+ Copyright 2013 Ankur Sinha
+ Copyright 2013 Karsten Ahnert
+
+
+====================COPYRIGHT====================
+ Copyright 2013 Christian Shelton
+ Copyright 2013 Karsten Ahnert
+
+
+====================COPYRIGHT====================
+ Copyright 2013-2014 Karsten Ahnert
+ Copyright 2013-2014 Mario Mulansky
+
+
+====================COPYRIGHT====================
+ Copyright 2017 James E. King, III
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+ * Copyright Lingxi Li 2015.
+ * Copyright Andrey Semashev 2015.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+ * Copyright Lingxi Li 2015.
+ * Copyright Andrey Semashev 2016.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+ * Copyright Andrey Semashev 2016.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+ * Copyright Andrey Semashev 2018.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+ * Copyright Andy Tompkins 2006.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+ * Copyright Andrey Semashev 2013.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+ * Copyright Andrey Semashev 2007 - 2013.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+ * Copyright Andrey Semashev 2007 - 2014.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+ * Copyright Andrey Semashev 2007 - 2016.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 2001-2003 Joel de Guzman
+
+
+====================COPYRIGHT====================
+ * Copyright Nick Thompson, 2017
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+ * (C) Copyright 2013 Tim Blechmann
+ * (C) Copyright 2013 Andrey Semashev
+
+
+====================COPYRIGHT====================
+ * (C) Copyright Nicolai M. Josuttis 2001.
+
+
+====================COPYRIGHT====================
+ * Copyright (C) 2017 James E. King III
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 1996
+ * Silicon Graphics Computer Systems, Inc.
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 1996,1997
+ * Silicon Graphics Computer Systems, Inc.
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 1998
+ * Silicon Graphics Computer Systems, Inc.
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 1998-2000
+ * Dr John Maddock
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 1998-2002
+ * John Maddock
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 1998-2004 John Maddock
+ * Copyright 2011 Garmin Ltd. or its subsidiaries
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 1998-2005
+ * John Maddock
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 1998-2009
+ * John Maddock
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 2002
+ * John Maddock
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 2003
+ * John Maddock
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 2003-2004
+ * Douglas Gregor
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 2003-2005
+ * John Maddock
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 2004
+ * John Maddock
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 2009 Helge Bahmann
+ * Copyright (c) 2009 Phil Endecott
+ * Copyright (c) 2013 Tim Blechmann
+ * ARM Code by Phil Endecott, based on other architectures.
+ * Copyright (c) 2014 Andrey Semashev
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 2009 Helge Bahmann
+ * Copyright (c) 2012 Tim Blechmann
+ * Copyright (c) 2013 - 2014 Andrey Semashev
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 2009 Helge Bahmann
+ * Copyright (c) 2012 Tim Blechmann
+ * Copyright (c) 2013 - 2018 Andrey Semashev
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 2009 Helge Bahmann
+ * Copyright (c) 2012 Tim Blechmann
+ * Copyright (c) 2014 - 2018 Andrey Semashev
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 2009 Helge Bahmann
+ * Copyright (c) 2013 Tim Blechmann
+ * Copyright (c) 2012 - 2014 Andrey Semashev
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 2009, 2011 Helge Bahmann
+ * Copyright (c) 2009 Phil Endecott
+ * Copyright (c) 2013 Tim Blechmann
+ * Linux-specific code by Phil Endecott
+ * Copyright (c) 2014 Andrey Semashev
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 2009, Gunter Winkler
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 2009, Marco Guazzone
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 2009-2010, Marco Guazzone
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 2009-2012, Marco Guazzone
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 2010 Helge Bahmann
+ * Copyright (c) 2013 Tim Blechmann
+ * Copyright (c) 2014 Andrey Semashev
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 2010 Matthias Walter (xammy@xammy.homelinux.net)
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 2011 Helge Bahmann
+ * Copyright (c) 2013 Tim Blechmann
+ * Copyright (c) 2014 Andrey Semashev
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 2011 Helge Bahmann
+ * Copyright (c) 2013-2014 Andrey Semashev
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 2012 Hartmut Kaiser
+ * Copyright (c) 2014 Andrey Semashev
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 2014 Glen Fernandes
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 2015 Andrey Semashev
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 2017 - 2018 Andrey Semashev
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 2017 Andrey Semashev
+
+
+====================COPYRIGHT====================
+ * Copyright 2000 Jens Maurer
+ * Copyright 2002 Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion
+
+
+====================COPYRIGHT====================
+ * Copyright 2000 Jens Maurer
+ * Copyright 2002-2003 Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion
+
+
+====================COPYRIGHT====================
+ * Copyright 2000 Maarten Keijzer
+ * Copyright 2002 Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion
+
+
+====================COPYRIGHT====================
+ * Copyright 2002 Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion
+ * Copyright 2005 Guillaume Melquiond
+
+
+====================COPYRIGHT====================
+ * Copyright 2002-2003 Guillaume Melquiond
+
+
+====================COPYRIGHT====================
+ * Copyright 2003 Guillaume Melquiond
+
+
+====================COPYRIGHT====================
+ * Copyright 2003 Guillaume Melquiond, Sylvain Pion
+
+
+====================COPYRIGHT====================
+ * Copyright 2003-2018 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+ * Copyright 2005 Felix Höfling, Guillaume Melquiond
+
+
+====================COPYRIGHT====================
+ * Copyright 2006-2007 Boris Gubenko
+
+
+====================COPYRIGHT====================
+ * Copyright 2010 Vicente J. Botet Escriba
+ * Copyright 2015 Andrey Semashev
+
+
+====================COPYRIGHT====================
+ * Copyright 2010 Vicente J. Botet Escriba
+ * Copyright 2015, 2017 Andrey Semashev
+
+
+====================COPYRIGHT====================
+ * Copyright 2013 Andrey Semashev
+
+
+====================COPYRIGHT====================
+ * Copyright 2013, 2017 Andrey Semashev
+ * Copyright 2017 James E. King, III
+
+
+====================COPYRIGHT====================
+ * Copyright 2014 Antony Polukhin
+ * Copyright 2015 Andrey Semashev
+
+
+====================COPYRIGHT====================
+ * Copyright 2015 Klemens Morgenstern
+ * Copyright 2016 Jorge Lodos
+ * Copyright 2016 Andrey Semashev
+
+
+====================COPYRIGHT====================
+ * Copyright 2016 Andrey Semashev
+
+
+====================COPYRIGHT====================
+ * Copyright 2016 Klemens D. Morgenstern
+
+
+====================COPYRIGHT====================
+ * Copyright 2016 Klemens D. Morgenstern
+ * Copyright 2016, 2017 Andrey Semashev
+
+
+====================COPYRIGHT====================
+ * Copyright 2017 Andrey Semashev
+
+
+====================COPYRIGHT====================
+ * Copyright 2017 Vinnie Falco
+
+
+====================COPYRIGHT====================
+ * Copyright Jens Maurer 2000
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+ * Copyright Jens Maurer 2000-2001
+ * Copyright Steven Watanabe 2010-2011
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+ * Copyright Jens Maurer 2000-2001
+ * Copyright Steven Watanabe 2011
+ * Copyright Jason Rhinelander 2016
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+ * Copyright Jens Maurer 2000-2001
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+ * Copyright Jens Maurer 2002
+ * Copyright Steven Watanabe 2010
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+ * Copyright Jens Maurer 2006
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+ * Copyright Marco Guazzone 2014
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+ * Copyright Nick Thompson, 2018
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+ * Copyright Steven Watanabe 2009
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+ * Copyright Steven Watanabe 2009-2011
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+ * Copyright Steven Watanabe 2010
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+ * Copyright Steven Watanabe 2014
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+ * Copyright Thijs van den Berg 2014
+
+
+====================COPYRIGHT====================
+ * Date: Sun Jan 06 12:57:30 MST 2008
+ * Copyright: 2008 CodeRage, LLC
+ 2004-2007 Jonathan Turkanis
+ * Author: Jonathan Turkanis
+ * Contact: turkanis at coderage dot com
+
+
+====================COPYRIGHT====================
+ * Date: Sun Jun 22 14:23:12 MDT 2008
+ * Copyright: 2008 CodeRage, LLC
+ * Author: Jonathan Turkanis
+ * Contact: turkanis at coderage dot com
+
+
+====================COPYRIGHT====================
+ * Date: Thu Dec 06 13:21:54 MST 2007
+ * Copyright: 2007-2008 CodeRage, LLC
+ * Author: Jonathan Turkanis
+ * Contact: turkanis at coderage dot com
+
+
+====================COPYRIGHT====================
+ * This software was written by Alexander Peslyak in 2001. No copyright is
+ * claimed, and the software is hereby placed in the public domain.
+ * In case this attempt to disclaim copyright and place the software in the
+ * public domain is deemed null and void, then the software is
+ * Copyright (c) 2001 Alexander Peslyak and it is hereby released to the
+ * general public under the following terms:
+
+
+====================COPYRIGHT====================
+ * \author Brian Ravnsgaard Riis
+ * \author Kenneth Riddile
+ * \date 16.09.2004, updated 04.03.2009
+ * \copyright 2004 Brian Ravnsgaard Riis
+ * \license Boost Software License 1.0
+
+
+====================COPYRIGHT====================
+ Copyright 2009-2011 Karsten Ahnert
+ Copyright 2009-2011 Mario Mulansky
+
+
+====================COPYRIGHT====================
+ Copyright 2009-2013 Karsten Ahnert
+ Copyright 2010-2013 Mario Mulansky
+
+
+====================COPYRIGHT====================
+ Copyright 2010-2011 Mario Mulansky
+ Copyright 2011-2013 Karsten Ahnert
+
+
+====================COPYRIGHT====================
+ Copyright 2010-2012 Karsten Ahnert
+ Copyright 2010 Mario Mulansky
+
+
+====================COPYRIGHT====================
+ Copyright 2010-2012 Karsten Ahnert
+ Copyright 2010-2013 Mario Mulansky
+
+
+====================COPYRIGHT====================
+ Copyright 2010-2012 Karsten Ahnert
+ Copyright 2011 Mario Mulansky
+
+
+====================COPYRIGHT====================
+ Copyright 2010-2012 Mario Mulansky
+ Copyright 2010-2012 Karsten Ahnert
+ Copyright 2012 Christoph Koke
+
+
+====================COPYRIGHT====================
+ Copyright 2010-2013 Karsten Ahnert
+ Copyright 2010-2013 Mario Mulansky
+
+
+====================COPYRIGHT====================
+ Copyright 2010-2013 Karsten Ahnert
+ Copyright 2010-2015 Mario Mulansky
+ Copyright 2012 Christoph Koke
+
+
+====================COPYRIGHT====================
+ Copyright 2010-2013 Mario Mulansky
+ Copyright 2010-2011 Karsten Ahnert
+ Copyright 2013 Kyle Lutz
+
+
+====================COPYRIGHT====================
+ Copyright 2010-2014 Mario Mulansky
+ Copyright 2010-2011 Karsten Ahnert
+
+
+====================COPYRIGHT====================
+ Copyright 2011-2012 Mario Mulansky
+ Copyright 2011 Karsten Ahnert
+
+
+====================COPYRIGHT====================
+ Copyright 2011-2012 Mario Mulansky
+ Copyright 2011-2012 Karsten Ahnert
+
+
+====================COPYRIGHT====================
+ Copyright 2011-2013 Karsten Ahnert
+ Copyright 2011-2013 Mario Mulansky
+
+
+====================COPYRIGHT====================
+ Copyright 2011-2013 Karsten Ahnert
+ Copyright 2011-2013 Thorsten Ottosen
+
+
+====================COPYRIGHT====================
+ Copyright 2011-2013 Karsten Ahnert
+ Copyright 2011-2015 Mario Mulansky
+
+
+====================COPYRIGHT====================
+ Copyright 2011-2013 Karsten Ahnert
+ Copyright 2011-2015 Mario Mulansky
+ Copyright 2012 Christoph Koke
+
+
+====================COPYRIGHT====================
+ Copyright 2011-2013 Mario Mulansky
+ Copyright 2011-2012 Karsten Ahnert
+
+
+====================COPYRIGHT====================
+ Copyright 2012 Karsten Ahnert
+ Copyright 2012 Mario Mulansky
+ Copyright 2012 Denis Demidov
+
+
+====================COPYRIGHT====================
+ Copyright 2012-2015 Mario Mulansky
+ Copyright 2012 Christoph Koke
+ Copyright 2012 Karsten Ahnert
+
+
+====================COPYRIGHT====================
+ Copyright 2013 Karsten Ahnert
+ Copyright 2013 Mario Mulansky
+
+
+====================COPYRIGHT====================
+ Copyright 2013 Karsten Ahnert
+ Copyright 2013 Mario Mulansky
+ Copyright 2013 Pascal Germroth
+
+
+====================COPYRIGHT====================
+ Copyright 2015 Mario Mulansky
+
+
+====================COPYRIGHT====================
+# * (C) Copyright Edward Diener 2011. *
+# * (C) Copyright Paul Mensonides 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+
+
+====================COPYRIGHT====================
+# * (C) Copyright Edward Diener 2013.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+# * (C) Copyright Edward Diener 2015.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+# * (C) Copyright Edward Diener 2016. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+
+
+====================COPYRIGHT====================
+# * (C) Copyright Paul Mensonides 2002-2011. *
+# * (C) Copyright Edward Diener 2011,2013. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+
+
+====================COPYRIGHT====================
+# * (C) Copyright Paul Mensonides 2002-2011. *
+# * (C) Copyright Edward Diener 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+
+
+====================COPYRIGHT====================
+# * (C) Copyright Paul Mensonides 2002.
+# * (C) Copyright Edward Diener 2014.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+# * (C) Copyright Paul Mensonides 2003.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+# * (C) Copyright Paul Mensonides 2005. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+
+
+====================COPYRIGHT====================
+# * (C) Copyright Paul Mensonides 2011.
+# * (C) Copyright Edward Diener 2011,2014.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+# * (C) Copyright Paul Mensonides 2012. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+
+
+====================COPYRIGHT====================
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+
+
+====================COPYRIGHT====================
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+
+
+====================COPYRIGHT====================
+/* Copyright (c) 2002,2003, 2007 CrystalClear Software, Inc.
* Use, modification and distribution is subject to the
- * Boost Software License, Version 1.0. (See accompanying
-
-
-====================COPYRIGHT====================
-/* Copyright (c) 2002,2003, 2007 CrystalClear Software, Inc.
- * Use, modification and distribution is subject to the
- * Boost Software License, Version 1.0. (See accompanying
-
-
-====================COPYRIGHT====================
-/* Copyright (c) 2002,2003,2005 CrystalClear Software, Inc.
- * Use, modification and distribution is subject to the
- * Boost Software License, Version 1.0. (See accompanying
-
-
-====================COPYRIGHT====================
-/* Copyright (c) 2002-2003,2005 CrystalClear Software, Inc.
- * Use, modification and distribution is subject to the
- * Boost Software License, Version 1.0. (See accompanying
-
-
-====================COPYRIGHT====================
-/* Copyright (c) 2002-2004 CrystalClear Software, Inc.
- * Subject to the Boost Software License, Version 1.0. (See accompanying
- * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
- * Author: Jeff Garland, Bart Garst
- * $Date$
-
-
-====================COPYRIGHT====================
-/* Copyright (c) 2002-2005 CrystalClear Software, Inc.
+ * Boost Software License, Version 1.0. (See accompanying
+
+
+====================COPYRIGHT====================
+/* Copyright (c) 2002,2003,2005 CrystalClear Software, Inc.
* Use, modification and distribution is subject to the
- * Boost Software License, Version 1.0. (See accompanying
-
-
-====================COPYRIGHT====================
-/* Copyright (c) 2002-2006 CrystalClear Software, Inc.
+ * Boost Software License, Version 1.0. (See accompanying
+
+
+====================COPYRIGHT====================
+/* Copyright (c) 2002-2003,2005 CrystalClear Software, Inc.
* Use, modification and distribution is subject to the
- * Boost Software License, Version 1.0. (See accompanying
-
-
-====================COPYRIGHT====================
-/* Copyright (c) 2003-2004 CrystalClear Software, Inc.
- * Subject to the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
- * Author: Jeff Garland, Bart Garst
- * $Date$
-
-
-====================COPYRIGHT====================
-/* Copyright (c) 2003-2005 CrystalClear Software, Inc.
+ * Boost Software License, Version 1.0. (See accompanying
+
+
+====================COPYRIGHT====================
+/* Copyright (c) 2002-2004 CrystalClear Software, Inc.
+ * Subject to the Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date$
+
+
+====================COPYRIGHT====================
+/* Copyright (c) 2002-2005 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+
+
+====================COPYRIGHT====================
+/* Copyright (c) 2002-2006 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+
+
+====================COPYRIGHT====================
+/* Copyright (c) 2003-2004 CrystalClear Software, Inc.
+ * Subject to the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date$
+
+
+====================COPYRIGHT====================
+/* Copyright (c) 2003-2005 CrystalClear Software, Inc.
+ * Subject to the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date$
+
+
+====================COPYRIGHT====================
+/* Copyright (c) 2004 CrystalClear Software, Inc.
* Subject to the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
- * Author: Jeff Garland, Bart Garst
- * $Date$
-
-
-====================COPYRIGHT====================
-/* Copyright (c) 2004 CrystalClear Software, Inc.
- * Subject to the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or
-
-
-====================COPYRIGHT====================
-/* Copyright (c) 2004-2005 CrystalClear Software, Inc.
+ * (See accompanying file LICENSE_1_0.txt or
+
+
+====================COPYRIGHT====================
+/* Copyright (c) 2004-2005 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+
+
+====================COPYRIGHT====================
+/* Copyright (c) 2005 CrystalClear Software, Inc.
* Use, modification and distribution is subject to the
- * Boost Software License, Version 1.0. (See accompanying
-
-
-====================COPYRIGHT====================
-/* Copyright (c) 2005 CrystalClear Software, Inc.
- * Use, modification and distribution is subject to the
- * Boost Software License, Version 1.0. (See accompanying
-
-
-====================COPYRIGHT====================
-/* Copyright (c) 2006 CrystalClear Software, Inc.
- * Use, modification and distribution is subject to the
- * Boost Software License, Version 1.0. (See accompanying
-
-
-====================COPYRIGHT====================
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-/* Copyright 2003-2013 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-/* Copyright 2003-2014 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-/* Copyright 2003-2015 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-/* Copyright 2003-2016 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-/* Copyright 2003-2017 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-/* Copyright 2006-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-/* Copyright 2006-2009 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-/* Copyright 2006-2011 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-/* Copyright 2006-2013 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-/* Copyright 2006-2014 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-/* Copyright 2006-2015 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-/* Copyright 2016 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-/* Copyright 2016-2017 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-/* Copyright 2016-2018 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-/* Copyright 2017 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-/* Copyright 2017-2018 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2001 Daryle Walker.
-// Copyright (C) 2003 Vesa Karvonen.
-// Copyright (C) 2003 Gennaro Prota.
-
-
-====================COPYRIGHT====================
-// Copyright Orson Peters 2017.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Daniel Trebbien 2010.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or the copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Gennaro Prota 2003.
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2012, Michele Caini.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Alain Miniussi 2014.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Andrii Sydorchuk 2010-2012.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Nat Goodspeed + Oliver Kowalke 2015.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Nat Goodspeed 2014.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Oliver Kowalke 2009.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Oliver Kowalke 2013.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Oliver Kowalke 2014.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Oliver Kowalke 2015.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Oliver Kowalke 2016.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Oliver Kowalke 2017.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Steven J. Ross 2001 - 2009.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Steven J. Ross 2001 - 2014.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Steven J. Ross 2014
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright 2003 - 2011 LASMEA UMR 6602 CNRS/Univ. Clermont II
-// Copyright 2009 - 2011 LRI UMR 8623 CNRS/Univ Paris Sud XI
-// Copyright 2011 Eric Niebler
-
-
-====================COPYRIGHT====================
-// Copyright 2014 LASMEA UMR 6602 CNRS/Univ. Clermont II
-// Copyright 2014 LRI UMR 8623 CNRS/Univ Paris Sud XI
-// Copyright 2014 MetaScale SAS
-
-
-====================COPYRIGHT====================
-// Copyright 2014 LRI UMR 8623 CNRS/Univ Paris Sud XI
-// Copyright 2014 NumScale SAS
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001, 2002 Python Software Foundation; All Rights
-// Reserved
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2004 Hartmut Kaiser
-
-
-====================COPYRIGHT====================
-// Copyright Abel Sinkovics (abel@sinkovics.hu) 2011.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001-2002 Chuck Allison and Jeremy Siek
-// Copyright (c) 2003-2004 Gennaro Prota
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001-2002 Chuck Allison and Jeremy Siek
-// Copyright (c) 2003-2004, 2008 Gennaro Prota
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001-2002 Chuck Allison and Jeremy Siek
-// Copyright (c) 2003-2006, 2008 Gennaro Prota
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001-2002 Chuck Allison and Jeremy Siek
-// Copyright (c) 2003-2006, 2008 Gennaro Prota
-// Copyright (c) 2014 Ahmed Charles
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2002 Rani Sharoni (rani_sharoni@hotmail.com) and Robert Ramey
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2005-7 Anthony Williams
-// (C) Copyright 2005 John Maddock
-// (C) Copyright 2011-2013 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2005-7 Anthony Williams
-// (C) Copyright 2007 David Deakins
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2005-8 Anthony Williams
-// (C) Copyright 2012 Vicente J. Botet Escriba
-// (C) Copyright 2017 Andrey Semashev
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2006-7 Anthony Williams
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2006-8 Anthony Williams
-// (C) Copyright 2011-2012,2017-2018 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2006-8 Anthony Williams
-// (C) Copyright 2012 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2007 Anthony Williams
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2007-8 Anthony Williams
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2008 Anthony Williams
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2008-10 Anthony Williams
-// (C) Copyright 2011-2012,2015 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2008-10 Anthony Williams
-// (C) Copyright 2011-2015 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2009-2011 Frederic Bron, Robert Stewart, Steven Watanabe & Roman Perepelitsa.
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2009-2011 Frederic Bron.
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2011 Vicente J. Botet Escriba
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2011Vicente J. Botet Escriba
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2013,2014 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2016 Raffi Enficiaud.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Antony Polukhin 2014.
-
-
-====================COPYRIGHT====================
-// (C) Copyright Artyom Beilis 2010.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright Beman Dawes 1999-2003. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Beman Dawes 1999.
-// (C) Copyright Jens Mauer 2001
-// (C) Copyright John Maddock 2001
-// Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright Beman Dawes 2000. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Boris Rasin and Antony Polukhin 2014-2015.
-// Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright Brian Kuhl 2016.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright Bruno Lalande 2008.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Bryce Lelbach 2011
-
-
-====================COPYRIGHT====================
-// (C) Copyright Christopher Jefferson 2011.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright Daniel Frey and Robert Ramey 2009.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Darin Adler 2000
-// (C) Copyright Beman Dawes 2006, 2009
-
-
-====================COPYRIGHT====================
-// (C) Copyright Darin Adler 2000
-// (C) Copyright Beman Dawes 2006, 2009, 2014
-
-
-====================COPYRIGHT====================
-// (C) Copyright Daryle Walker 2001-2002.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Daryle Walker 2001.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Daryle Walker and Stephen Cleary 2001-2002.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Dave Abrahams and Daniel Walker 1999-2003.
-// Copyright (c) Andrey Semashev 2017
-
-
-====================COPYRIGHT====================
-// (C) Copyright Dave Abrahams and Daryle Walker 2001. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
-// Howard Hinnant and John Maddock 2000, 2010.
-// (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 2001
-
-
-====================COPYRIGHT====================
-// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
-// Howard Hinnant and John Maddock 2000.
-// (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 2001
-
-
-====================COPYRIGHT====================
-// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
-// Aleksey Gurtovoy, Howard Hinnant & John Maddock 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
-// Hinnant & John Maddock 2000-2003.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
-// Hinnant & John Maddock 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright David Abrahams 2000.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright David Abrahams Steve Cleary, Beman Dawes, Howard
-// Hinnant & John Maddock 2000-2002.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright David Abrahams, Jeremy Siek, Daryle Walker 1999-2001.
-// (C) Copyright Daniel Frey 2002-2017.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Dustin Spicuzza 2009.
-// Adapted to vxWorks 6.9 by Peter Brockamp 2012.
-// Updated for VxWorks 7 by Brian Kuhl 2016
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright Edward Diener 2011,2012
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Edward Diener 2011,2012,2013
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Edward Diener 2011-2015
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Edward Diener 2012
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Edward Diener 2012,2013
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Eric Ford & Hubert Holin 2001.
-// (C) Copyright John Maddock 2008.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Eric Ford 2001 & Hubert Holin.
-// (C) Copyright John Maddock 2008.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Eric Jourdanneau, Joel Falcou 2010
+ * Boost Software License, Version 1.0. (See accompanying
+
+
+====================COPYRIGHT====================
+/* Copyright (c) 2006 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+
+
+====================COPYRIGHT====================
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+/* Copyright 2003-2013 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+/* Copyright 2003-2014 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+/* Copyright 2003-2015 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+/* Copyright 2003-2016 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+/* Copyright 2003-2017 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+/* Copyright 2006-2008 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+/* Copyright 2006-2009 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+/* Copyright 2006-2011 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+/* Copyright 2006-2013 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+/* Copyright 2006-2014 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+/* Copyright 2006-2015 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+/* Copyright 2016 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+/* Copyright 2016-2017 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+/* Copyright 2016-2018 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+/* Copyright 2017 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+/* Copyright 2017-2018 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2001 Daryle Walker.
+// Copyright (C) 2003 Vesa Karvonen.
+// Copyright (C) 2003 Gennaro Prota.
+
+
+====================COPYRIGHT====================
+// Copyright Orson Peters 2017.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Daniel Trebbien 2010.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or the copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Gennaro Prota 2003.
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2012, Michele Caini.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Alain Miniussi 2014.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Andrii Sydorchuk 2010-2012.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Nat Goodspeed + Oliver Kowalke 2015.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Nat Goodspeed 2014.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Oliver Kowalke 2009.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Oliver Kowalke 2013.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Oliver Kowalke 2014.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Oliver Kowalke 2015.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Oliver Kowalke 2016.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Oliver Kowalke 2017.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Steven J. Ross 2001 - 2009.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Steven J. Ross 2001 - 2014.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Steven J. Ross 2014
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright 2003 - 2011 LASMEA UMR 6602 CNRS/Univ. Clermont II
+// Copyright 2009 - 2011 LRI UMR 8623 CNRS/Univ Paris Sud XI
+// Copyright 2011 Eric Niebler
+
+
+====================COPYRIGHT====================
+// Copyright 2014 LASMEA UMR 6602 CNRS/Univ. Clermont II
+// Copyright 2014 LRI UMR 8623 CNRS/Univ Paris Sud XI
+// Copyright 2014 MetaScale SAS
+
+
+====================COPYRIGHT====================
+// Copyright 2014 LRI UMR 8623 CNRS/Univ Paris Sud XI
+// Copyright 2014 NumScale SAS
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001, 2002 Python Software Foundation; All Rights
+// Reserved
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2004 Hartmut Kaiser
+
+
+====================COPYRIGHT====================
+// Copyright Abel Sinkovics (abel@sinkovics.hu) 2011.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001-2002 Chuck Allison and Jeremy Siek
+// Copyright (c) 2003-2004 Gennaro Prota
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001-2002 Chuck Allison and Jeremy Siek
+// Copyright (c) 2003-2004, 2008 Gennaro Prota
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001-2002 Chuck Allison and Jeremy Siek
+// Copyright (c) 2003-2006, 2008 Gennaro Prota
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001-2002 Chuck Allison and Jeremy Siek
+// Copyright (c) 2003-2006, 2008 Gennaro Prota
+// Copyright (c) 2014 Ahmed Charles
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2002 Rani Sharoni (rani_sharoni@hotmail.com) and Robert Ramey
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2005-7 Anthony Williams
+// (C) Copyright 2005 John Maddock
+// (C) Copyright 2011-2013 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2005-7 Anthony Williams
+// (C) Copyright 2007 David Deakins
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2005-8 Anthony Williams
+// (C) Copyright 2012 Vicente J. Botet Escriba
+// (C) Copyright 2017 Andrey Semashev
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2006-7 Anthony Williams
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2006-8 Anthony Williams
+// (C) Copyright 2011-2012,2017-2018 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2006-8 Anthony Williams
+// (C) Copyright 2012 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2007 Anthony Williams
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2007-8 Anthony Williams
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2008 Anthony Williams
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2008-10 Anthony Williams
+// (C) Copyright 2011-2012,2015 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2008-10 Anthony Williams
+// (C) Copyright 2011-2015 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2009-2011 Frederic Bron, Robert Stewart, Steven Watanabe & Roman Perepelitsa.
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2009-2011 Frederic Bron.
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2011 Vicente J. Botet Escriba
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2011Vicente J. Botet Escriba
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2013,2014 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2016 Raffi Enficiaud.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Antony Polukhin 2014.
+
+
+====================COPYRIGHT====================
+// (C) Copyright Artyom Beilis 2010.
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright Eric Niebler 2004-2005
-// (C) Copyright Gennadiy Rozental 2001.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Gennadiy Rozental 2001.
-// (C) Copyright Beman Dawes 1995-2001.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Gennadiy Rozental 2001.
-// (C) Copyright Beman Dawes 2001.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Gennadiy Rozental 2001.
-// (C) Copyright Beman Dawes and Ullrich Koethe 1995-2001.
-// Use, modification, and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright Gennadiy Rozental 2001.
-// (C) Copyright Daryle Walker 2000-2001.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Gennadiy Rozental 2001.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
-// Copyright (c) 2001, 2002 Peter Dimov
-
-
-====================COPYRIGHT====================
-// (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
-// Copyright (c) 2001, 2002, 2012 Peter Dimov
-
-
-====================COPYRIGHT====================
-// (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
-// Copyright (c) 2001-2008 Peter Dimov
-
-
-====================COPYRIGHT====================
-// (C) Copyright Herve Bronnimann 2004.
-
-
-====================COPYRIGHT====================
-// (C) Copyright Howard Hinnant
-// (C) Copyright 2010 Vicente J. Botet Escriba
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Howard Hinnant
-// (C) Copyright 2010-2011 Vicente J. Botet Escriba
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Howard Hinnant
-// Copyright 2011 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// (C) Copyright Hubert Holin 2001.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Hubert Holin and Daryle Walker 2001-2002. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2005.
-// Copyright (c) 2005 Peter Dimov.
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2014.
-
-
-====================COPYRIGHT====================
-// (C) Copyright Jeremiah Willcock 2004
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Jeremy Siek 1999-2001.
-// Copyright (C) 2006 Trustees of Indiana University
-// Authors: Douglas Gregor and Jeremy Siek
-
-
-====================COPYRIGHT====================
-// (C) Copyright Jeremy Siek 1999.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Jeremy Siek 2004
-// (C) Copyright Thomas Claveirole 2010
-// (C) Copyright Ignacy Gawedzki 2010
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Jeremy Siek 2006
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Jeremy William Murphy 2016.
-
-
-====================COPYRIGHT====================
-// (C) Copyright Jessica Hamilton 2014.
+
+
+====================COPYRIGHT====================
+// (C) Copyright Beman Dawes 1999-2003. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Beman Dawes 1999.
+// (C) Copyright Jens Mauer 2001
+// (C) Copyright John Maddock 2001
+// Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// (C) Copyright Beman Dawes 2000. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Boris Rasin and Antony Polukhin 2014-2015.
+// Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// (C) Copyright Brian Kuhl 2016.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// (C) Copyright Bruno Lalande 2008.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Bryce Lelbach 2011
+
+
+====================COPYRIGHT====================
+// (C) Copyright Christopher Jefferson 2011.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// (C) Copyright Daniel Frey and Robert Ramey 2009.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Darin Adler 2000
+// (C) Copyright Beman Dawes 2006, 2009
+
+
+====================COPYRIGHT====================
+// (C) Copyright Darin Adler 2000
+// (C) Copyright Beman Dawes 2006, 2009, 2014
+
+
+====================COPYRIGHT====================
+// (C) Copyright Daryle Walker 2001-2002.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Daryle Walker 2001.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Daryle Walker and Stephen Cleary 2001-2002.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Dave Abrahams and Daniel Walker 1999-2003.
+// Copyright (c) Andrey Semashev 2017
+
+
+====================COPYRIGHT====================
+// (C) Copyright Dave Abrahams and Daryle Walker 2001. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
+// Howard Hinnant and John Maddock 2000, 2010.
+// (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 2001
+
+
+====================COPYRIGHT====================
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
+// Howard Hinnant and John Maddock 2000.
+// (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 2001
+
+
+====================COPYRIGHT====================
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
+// Aleksey Gurtovoy, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
+// Hinnant & John Maddock 2000-2003.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
+// Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright David Abrahams 2000.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright David Abrahams Steve Cleary, Beman Dawes, Howard
+// Hinnant & John Maddock 2000-2002.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright David Abrahams, Jeremy Siek, Daryle Walker 1999-2001.
+// (C) Copyright Daniel Frey 2002-2017.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Dustin Spicuzza 2009.
+// Adapted to vxWorks 6.9 by Peter Brockamp 2012.
+// Updated for VxWorks 7 by Brian Kuhl 2016
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// (C) Copyright Edward Diener 2011,2012
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Edward Diener 2011,2012,2013
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Edward Diener 2011-2015
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Edward Diener 2012
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Edward Diener 2012,2013
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Eric Ford & Hubert Holin 2001.
+// (C) Copyright John Maddock 2008.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Eric Ford 2001 & Hubert Holin.
+// (C) Copyright John Maddock 2008.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Eric Jourdanneau, Joel Falcou 2010
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright Jim Douglas 2005.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright Joel de Guzman 2003.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright John Maddock & Thorsten Ottosen 2005.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright John Maddock 2000.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright John Maddock 2001 - 2002.
-// (C) Copyright Jens Maurer 2001.
-// (C) Copyright David Abrahams 2002.
-// (C) Copyright Aleksey Gurtovoy 2002.
-// (C) Copyright Markus Schoepflin 2005.
+
+
+====================COPYRIGHT====================
+// (C) Copyright Eric Niebler 2004-2005
+// (C) Copyright Gennadiy Rozental 2001.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Gennadiy Rozental 2001.
+// (C) Copyright Beman Dawes 1995-2001.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Gennadiy Rozental 2001.
+// (C) Copyright Beman Dawes 2001.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Gennadiy Rozental 2001.
+// (C) Copyright Beman Dawes and Ullrich Koethe 1995-2001.
+// Use, modification, and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// (C) Copyright Gennadiy Rozental 2001.
+// (C) Copyright Daryle Walker 2000-2001.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Gennadiy Rozental 2001.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
+// Copyright (c) 2001, 2002 Peter Dimov
+
+
+====================COPYRIGHT====================
+// (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
+// Copyright (c) 2001, 2002, 2012 Peter Dimov
+
+
+====================COPYRIGHT====================
+// (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
+// Copyright (c) 2001-2008 Peter Dimov
+
+
+====================COPYRIGHT====================
+// (C) Copyright Herve Bronnimann 2004.
+
+
+====================COPYRIGHT====================
+// (C) Copyright Howard Hinnant
+// (C) Copyright 2010 Vicente J. Botet Escriba
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Howard Hinnant
+// (C) Copyright 2010-2011 Vicente J. Botet Escriba
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Howard Hinnant
+// Copyright 2011 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// (C) Copyright Hubert Holin 2001.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Hubert Holin and Daryle Walker 2001-2002. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2005.
+// Copyright (c) 2005 Peter Dimov.
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2014.
+
+
+====================COPYRIGHT====================
+// (C) Copyright Jeremiah Willcock 2004
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Jeremy Siek 1999-2001.
+// Copyright (C) 2006 Trustees of Indiana University
+// Authors: Douglas Gregor and Jeremy Siek
+
+
+====================COPYRIGHT====================
+// (C) Copyright Jeremy Siek 1999.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Jeremy Siek 2004
+// (C) Copyright Thomas Claveirole 2010
+// (C) Copyright Ignacy Gawedzki 2010
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Jeremy Siek 2006
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Jeremy William Murphy 2016.
+
+
+====================COPYRIGHT====================
+// (C) Copyright Jessica Hamilton 2014.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// (C) Copyright Jim Douglas 2005.
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright John Maddock 2001 - 2003
-// (C) Copyright Jens Maurer 2001
-// (C) Copyright Peter Dimov 2001
-// (C) Copyright Darin Adler 2001
-// (C) Copyright Beman Dawes 2002
-
-
-====================COPYRIGHT====================
-// (C) Copyright John Maddock 2001 - 2003.
-// (C) Copyright Darin Adler 2001 - 2002.
-// (C) Copyright Jens Maurer 2001 - 2002.
-// (C) Copyright Beman Dawes 2001 - 2003.
-// (C) Copyright Douglas Gregor 2002.
-// (C) Copyright David Abrahams 2002 - 2003.
-// (C) Copyright Synge Todo 2003.
+
+
+====================COPYRIGHT====================
+// (C) Copyright Joel de Guzman 2003.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright John Maddock & Thorsten Ottosen 2005.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright John Maddock 2000.
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
+
+
+====================COPYRIGHT====================
+// (C) Copyright John Maddock 2001 - 2002.
+// (C) Copyright Jens Maurer 2001.
+// (C) Copyright David Abrahams 2002.
+// (C) Copyright Aleksey Gurtovoy 2002.
+// (C) Copyright Markus Schoepflin 2005.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// (C) Copyright John Maddock 2001 - 2003
+// (C) Copyright Jens Maurer 2001
+// (C) Copyright Peter Dimov 2001
+// (C) Copyright Darin Adler 2001
+// (C) Copyright Beman Dawes 2002
+
+
+====================COPYRIGHT====================
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Darin Adler 2001 - 2002.
+// (C) Copyright Jens Maurer 2001 - 2002.
+// (C) Copyright Beman Dawes 2001 - 2003.
+// (C) Copyright Douglas Gregor 2002.
+// (C) Copyright David Abrahams 2002 - 2003.
+// (C) Copyright Synge Todo 2003.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright David Abrahams 2002 - 2003.
+// (C) Copyright Aleksey Gurtovoy 2002.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Jens Maurer 2001 - 2003.
+// (C) Copyright Aleksey Gurtovoy 2002.
+// (C) Copyright David Abrahams 2002 - 2003.
+// (C) Copyright Toon Knapen 2003.
+// (C) Copyright Boris Gubenko 2006 - 2007.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Toon Knapen 2001 - 2003.
+// (C) Copyright Lie-Quan Lee 2001.
+// (C) Copyright Markus Schoepflin 2002 - 2003.
+// (C) Copyright Beman Dawes 2002 - 2003.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
// (C) Copyright John Maddock 2001 - 2003.
-// (C) Copyright David Abrahams 2002 - 2003.
-// (C) Copyright Aleksey Gurtovoy 2002.
+// (C) Copyright Bill Kempf 2001.
+// (C) Copyright Aleksey Gurtovoy 2003.
+// (C) Copyright Rene Rivera 2005.
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
+
+
+====================COPYRIGHT====================
// (C) Copyright John Maddock 2001 - 2003.
-// (C) Copyright Jens Maurer 2001 - 2003.
-// (C) Copyright Aleksey Gurtovoy 2002.
-// (C) Copyright David Abrahams 2002 - 2003.
-// (C) Copyright Toon Knapen 2003.
-// (C) Copyright Boris Gubenko 2006 - 2007.
+// (C) Copyright Darin Adler 2001 - 2002.
+// (C) Copyright Bill Kempf 2002.
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
+
+
+====================COPYRIGHT====================
// (C) Copyright John Maddock 2001 - 2003.
-// (C) Copyright Toon Knapen 2001 - 2003.
-// (C) Copyright Lie-Quan Lee 2001.
-// (C) Copyright Markus Schoepflin 2002 - 2003.
-// (C) Copyright Beman Dawes 2002 - 2003.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright John Maddock 2001 - 2003.
-// (C) Copyright Bill Kempf 2001.
-// (C) Copyright Aleksey Gurtovoy 2003.
-// (C) Copyright Rene Rivera 2005.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright John Maddock 2001 - 2003.
-// (C) Copyright Darin Adler 2001 - 2002.
-// (C) Copyright Bill Kempf 2002.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright John Maddock 2001 - 2003.
-// (C) Copyright Jens Maurer 2001.
-// (C) Copyright David Abrahams 2003.
-// (C) Copyright Boris Gubenko 2007.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright John Maddock 2001 - 2003.
-// (C) Copyright Martin Wille 2003.
-// (C) Copyright Guillaume Melquiond 2003.
-
-
-====================COPYRIGHT====================
-// (C) Copyright John Maddock 2001-8.
-// (C) Copyright Peter Dimov 2001.
// (C) Copyright Jens Maurer 2001.
-// (C) Copyright David Abrahams 2002 - 2003.
-// (C) Copyright Aleksey Gurtovoy 2002 - 2003.
-// (C) Copyright Guillaume Melquiond 2002 - 2003.
-// (C) Copyright Beman Dawes 2003.
-// (C) Copyright Martin Wille 2003.
+// (C) Copyright David Abrahams 2003.
+// (C) Copyright Boris Gubenko 2007.
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
+
+
+====================COPYRIGHT====================
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Martin Wille 2003.
+// (C) Copyright Guillaume Melquiond 2003.
+
+
+====================COPYRIGHT====================
+// (C) Copyright John Maddock 2001-8.
+// (C) Copyright Peter Dimov 2001.
+// (C) Copyright Jens Maurer 2001.
+// (C) Copyright David Abrahams 2002 - 2003.
+// (C) Copyright Aleksey Gurtovoy 2002 - 2003.
+// (C) Copyright Guillaume Melquiond 2002 - 2003.
+// (C) Copyright Beman Dawes 2003.
+// (C) Copyright Martin Wille 2003.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// (C) Copyright John Maddock 2001.
+// (C) Copyright Darin Adler 2001.
+// (C) Copyright Peter Dimov 2001.
+// (C) Copyright David Abrahams 2001 - 2002.
+// (C) Copyright Beman Dawes 2001 - 2003.
+// (C) Copyright Stefan Slapeta 2004.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// (C) Copyright John Maddock 2001.
+// (C) Copyright Jens Maurer 2001 - 2003.
+// (C) Copyright Peter Dimov 2002.
+// (C) Copyright Aleksey Gurtovoy 2002 - 2003.
+// (C) Copyright David Abrahams 2002.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
// (C) Copyright John Maddock 2001.
-// (C) Copyright Darin Adler 2001.
+// (C) Copyright Douglas Gregor 2001.
// (C) Copyright Peter Dimov 2001.
-// (C) Copyright David Abrahams 2001 - 2002.
-// (C) Copyright Beman Dawes 2001 - 2003.
-// (C) Copyright Stefan Slapeta 2004.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright John Maddock 2001.
-// (C) Copyright Jens Maurer 2001 - 2003.
-// (C) Copyright Peter Dimov 2002.
-// (C) Copyright Aleksey Gurtovoy 2002 - 2003.
-// (C) Copyright David Abrahams 2002.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright John Maddock 2001.
-// (C) Copyright Douglas Gregor 2001.
-// (C) Copyright Peter Dimov 2001.
-// (C) Copyright Aleksey Gurtovoy 2003.
-// (C) Copyright Beman Dawes 2003.
-// (C) Copyright Jens Maurer 2003.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright John Maddock 2002 - 2003.
-// (C) Copyright Jens Maurer 2002 - 2003.
-// (C) Copyright Beman Dawes 2002 - 2003.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright John Maddock 2002.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright John Maddock 2005-2006.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright John Maddock 2005.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright John Maddock 2006, 2015
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright John Maddock 2006-8.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright John Maddock 2006.
-// (C) Copyright Jeremy William Murphy 2015.
-
-
-====================COPYRIGHT====================
-// (C) Copyright John Maddock 2006.
-// (C) Copyright Johan Rade 2006.
-// (C) Copyright Paul A. Bristow 2011 (added changesign).
-
-
-====================COPYRIGHT====================
-// (C) Copyright John Maddock 2006.
-// (C) Copyright Paul A. Bristow 2006.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright John Maddock 2006.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright John Maddock 2007.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright John Maddock 2008.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright John Maddock 2010.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright John Maddock 2011.
-// (C) Copyright Cray, Inc. 2013
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright John Maddock 2015.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright John Maddock 2017.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright John Maddock and Steve Cleary 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright John maddock 1999.
-// (C) David Abrahams 2002. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Kevlin Henney and Dave Abrahams 1999.
-// (C) Copyright Boris Rasin 2014.
-// Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright Matthias Troyerk 2006.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Nick Thompson 2017.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright Nick Thompson 2018.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright Noel Belcourt 2007.
-// Copyright 2017, NVIDIA CORPORATION.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright Paul Moore 1999. Permission to copy, use, modify, sell and
-// distribute this software is granted provided this copyright notice appears
-// in all copies. This software is provided "as is" without express or
-// implied warranty, and with no claim as to its suitability for any purpose.
-
-
-====================COPYRIGHT====================
-// (C) Copyright Peter Dimov 2017.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright R.W. Grosse-Kunstleve 2002.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Rani Sharoni 2003-2005.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Rani Sharoni 2003.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Robert Ramey 2003. Jonathan Turkanis 2004.
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Runar Undheim, Robert Ramey & John Maddock 2008.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Samuli-Petrus Korhonen 2017.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant & John Maddock 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000-2005.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
-// (C) Copyright Eric Friedman 2002-2003.
-// (C) Copyright Antony Polukhin 2013.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
-// Use, modification and distribution are subject to the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Yuriy Krasnoschek 2009.
-// (C) Copyright John Maddock 2001 - 2003.
-// (C) Copyright Jens Maurer 2001 - 2003.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (c) Copyright Fernando Luis Cacciola Carballal 2000-2004
-// Use, modification, and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (c) Copyright Robert Ramey 2004
-// Use, modification, and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
-// Copyright (C) 2001, 2002 Peter Dimov
-// Copyright (C) 2002 David Abrahams
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2002 Beman Dawes
-// Copyright (C) 2001 Dietmar Kuehl
-// Use, modification, and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2008, 2009, 2016 Tim Blechmann, based on code by Cory Nelson
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2008, 2016 Tim Blechmann
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2008-2013 Tim Blechmann
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2008-2016 Tim Blechmann
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2009 Trustees of Indiana University
-// Authors: Jeremiah Willcock, Andrew Lumsdaine
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2009, 2016 Tim Blechmann
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2009-2013 Tim Blechmann
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2011, 2016 Tim Blechmann
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2011-2013, 2016 Tim Blechmann
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2012 David Stone
-// Copyright Beman Dawes 2013
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2014 Glen Joseph Fernandes
-// glenfe at live dot com
-// Copyright (C) 2014 Agustin Berge
-
-
-====================COPYRIGHT====================
-// Copyright (C) Christof Meerwald 2003
-// Copyright (C) Dan Watkins 2003
-
-
-====================COPYRIGHT====================
-// Copyright (C) Douglas Gregor 2008
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2000-2002
-// Joerg Walter, Mathias Koch
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2000-2004
-// Joerg Walter, Mathias Koch
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2000-2007
-// Joerg Walter, Mathias Koch, Gunter Winkler
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2000-2009
-// Joerg Walter, Mathias Koch, Gunter Winkler
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2000-2010
-// Joerg Walter, Mathias Koch, David Bellot
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2000-2010
-// Joerg Walter, Mathias Koch, Gunter Winkler, David Bellot
-// Copyright (c) 2014, Athanasios Iliopoulos
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2000-2011 Joerg Walter, Mathias Koch, David Bellot
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2000-2013
-// Joerg Walter, Mathias Koch, Athanasios Iliopoulos
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2000-2013
-// Joerg Walter, Mathias Koch. David Bellot
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001 Daniel C. Nuffer
-// Copyright (c) 2001-2011 Hartmut Kaiser
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001 Peter Dimov and Multi Media Ltd.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001 Peter Dimov and Multi Media Ltd.
-// Copyright (c) 2008 Peter Dimov
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001, 2002 Peter Dimov
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
-// Copyright (c) 2001 David Abrahams
-// Copyright (c) 2003-2005 Peter Dimov
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
-// Copyright (c) 2002 Lars Gullik Bjønnes <larsbj@lyx.org>
-// Copyright 2003-2005 Peter Dimov
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
-// Copyright (c) 2007, 2014 Peter Dimov
-// Copyright (c) Beman Dawes 2011
-// Copyright (c) 2015 Ion Gaztanaga
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
-// Copyright (c) 2013 Peter Dimov
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001, 2002, 2003 Peter Dimov
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
-// Copyright 2004-2005 Peter Dimov
-// Copyright 2005 Rene Rivera
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
-// Copyright 2004-2005 Peter Dimov
-// Copyright 2006 Ion Gaztanaga
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
-// Copyright 2004-2005 Peter Dimov
-// Copyright 2006 Michael van der Westhuizen
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
-// Copyright 2004-2005 Peter Dimov
-// Copyright 2006 Michael van der Westhuizen
-// Copyright 2012 IBM Corp.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
-// Copyright 2004-2005 Peter Dimov
-// Copyright 2007-2012 Ion Gaztanaga
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
-// Copyright 2004-2006 Peter Dimov
-// Copyright 2005 Ben Hutchings
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
-// Copyright 2004-2008 Peter Dimov
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001-2003 John Maddock
-// Copyright (c) 2001 Darin Adler
-// Copyright (c) 2001 Peter Dimov
-// Copyright (c) 2002 Bill Kempf
-// Copyright (c) 2002 Jens Maurer
-// Copyright (c) 2002-2003 David Abrahams
-// Copyright (c) 2003 Gennaro Prota
-// Copyright (c) 2003 Eric Friedman
-// Copyright (c) 2010 Eric Jourdanneau, Joel Falcou
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001-2004 Peter Dimov and Multi Media Ltd.
-// Copyright (c) 2001 David Abrahams
-// Copyright (c) 2005 Peter Dimov
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001-2005 Peter Dimov
-// Copyright (c) 2006 Michael van der Westhuizen
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001-2009, 2012 Peter Dimov
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001-2009, Hartmut Kaiser
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001-2010 Hartmut Kaiser
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001-2011 Hartmut Kaiser
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001-2011 Hartmut Kaiser
-// Copyright (c) 2001-2011 Joel de Guzman
-// Copyright (c) 2009 Carl Barron
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001-2011 Hartmut Kaiser
-// Copyright (c) 2001-2011 Joel de Guzman
-// Copyright (c) 2011 Thomas Bernard
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001-2011 Joel de Guzman
-// Copyright (c) 2001-2011 Hartmut Kaiser
-// Copyright (c) 2009 Francois Barel
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001-2011 Thomas Bernard
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001-2013 Hartmut Kaiser
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2002 Peter Dimov
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
-// Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
-// Copyright (c) 2009 Steven Watanabe
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2002, 2003 Peter Dimov
-// Copyright (c) 2003 Daniel Frey
-// Copyright (c) 2003 Howard Hinnant
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2002, 2003 Peter Dimov and Multi Media Ltd.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2002, 2003 Peter Dimov and Multi Media Ltd.
-// Copyright (c) 2008 Frank Mori Hess
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2002, 2009, 2014 Peter Dimov
-// Copyright (2) Beman Dawes 2010, 2011
-// Copyright (3) Ion Gaztanaga 2013
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2002-2003
-// Toon Knapen, Kresimir Fresl, Joerg Walter
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2002-2003 Eric Friedman
-// Copyright (c) 2002 by Andrei Alexandrescu
-// Copyright (c) 2013-2014 Antony Polukhin
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2003
-// Gunter Winkler, Joerg Walter
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2003 David Abrahams
-// Copyright (c) 2003 Peter Dimov
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2003 Peter Dimov Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2003 Vladimir Prus.
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2010 Beman Dawes
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2004 Ralf Mattethat
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2006 Peter Dimov
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2006 Piotr Wyderski
-// Copyright (c) 2006 Tomas Puverle
-// Copyright (c) 2006 Peter Dimov
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2006 Piotr Wyderski
-// Copyright (c) 2006 Tomas Puverle
-// Copyright (c) 2006 Peter Dimov
-// Copyright (c) 2011 Emil Dotchevski
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2006 Xiaogang Zhang
-// Copyright (c) 2006 John Maddock
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2006 Xiaogang Zhang
-// Copyright (c) 2017 John Maddock
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2006 Xiaogang Zhang, 2015 John Maddock
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2006, Stephan Diederich
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2006-7 John Maddock
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2007 John Maddock
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2007 Peter Dimov
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2007, 2008 Peter Dimov
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2007, 2008 Peter Dimov
-// Copyright (c) 2008 Michael Marcin
-// Copyright (c) 2009 Frank Mori Hess
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2007, 2008, 2012 Peter Dimov
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2007, 2013 John Maddock
-// Copyright Christopher Kormanyos 2013.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2007, 2013 Peter Dimov
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2007, 2013, 2015 Peter Dimov
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2008 Frank Mori Hess
-// Copyright (c) 2016 Peter Dimov
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2008, 2009 Peter Dimov
-// Copyright (c) 2018 Andrey Semashev
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2008, 2011 Peter Dimov
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2008-2009 Ben Hanson
-// Copyright (c) 2008-2011 Hartmut Kaiser
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2008-2009 Frank Mori Hess
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2009
-// Gunter Winkler
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2009 Helge Bahmann
-// Copyright (c) 2012 - 2014, 2017 Andrey Semashev
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2009 John Maddock
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2009 Peter Dimov
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2009, 2015 Peter Dimov
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2009, Spirent Communications, Inc.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2009-2011 Artyom Beilis (Tonkikh)
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2010 Artyom Beilis (Tonkikh)
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2010 Athanasios Iliopoulos
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2010 Ilya Murav'jov
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2010 Neil Groves
-// Distributed under the Boost Software License, Version 1.0.
-// See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2010 Nuovation System Designs, LLC
-// Grant Erickson <gerickson@nuovations.com>
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2010-2011 David Bellot
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2011 Aaron Graham
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2011 Helge Bahmann
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2011 John Maddock
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2012 Oswin Krause
-// Copyright (c) 2013 Joaquim Duran
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2013 Anton Bikineev
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2013 Christopher Kormanyos
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2014 Peter Dimov
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2015 Artyom Beilis (Tonkikh)
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2015 John Maddock
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2015 Orson Peters
-// This software is provided 'as-is', without any express or implied warranty. In no event will the
-// authors be held liable for any damages arising from the use of this software.
-// Permission is granted to anyone to use this software for any purpose, including commercial
-// applications, and to alter it and redistribute it freely, subject to the following restrictions:
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2017 Dynatrace
-
-
-====================COPYRIGHT====================
-// Copyright 1999-2003 Aleksey Gurtovoy. Use, modification, and distribution are
-// subject to the Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or a copy at <http://www.boost.org/LICENSE_1_0.txt>.)
-
-
-====================COPYRIGHT====================
-// Copyright 2000 John Maddock (john@johnmaddock.co.uk)
-// Copyright 2002 Aleksey Gurtovoy (agurtovoy@meta-comm.com)
-
-
-====================COPYRIGHT====================
-// Copyright 2001 John Maddock.
-// Copyright 2017 Peter Dimov.
-
-
-====================COPYRIGHT====================
-// Copyright 2001, 2003, 2004, 2012 Daryle Walker. Use, modification, and
-// distribution are subject to the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or a copy at
-
-
-====================COPYRIGHT====================
-// Copyright 2001, 2004 Daryle Walker. Use, modification, and distribution are
-// subject to the Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or a copy at <http://www.boost.org/LICENSE_1_0.txt>.)
-
-
-====================COPYRIGHT====================
-// Copyright 2002 Daryle Walker. Use, modification, and distribution are subject
-// to the Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or a copy at <http://www.boost.org/LICENSE_1_0.txt>.)
-
-
-====================COPYRIGHT====================
-// Copyright 2002, 2009 Peter Dimov
-
-
-====================COPYRIGHT====================
-// Copyright 2002, 2009, 2014 Peter Dimov
-// Copyright 2008-2009 Frank Mori Hess
-
-
-====================COPYRIGHT====================
-// Copyright 2005 Daniel Egloff, Eric Niebler. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2005 Daniel Egloff, Olivier Gygi. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2005 Daniel Egloff. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2005 Eric Niebler, Daniel Egloff. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2005 Eric Niebler, Michael Gauckler. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2005 Eric Niebler. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2005, 2014 Peter Dimov
-
-
-====================COPYRIGHT====================
-// Copyright 2005-2013 Peter Dimov
-
-
-====================COPYRIGHT====================
-// Copyright 2006 Daniel Egloff, Olivier Gygi. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2006 Eric Niebler, Olivier Gygi. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2006 Eric Niebler. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2006 Olivier Gygi, Daniel Egloff. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2006, Eric Niebler, Olivier Gygi. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2007 Baruch Zilber
-// Copyright 2007 Boris Gubenko
-
-
-====================COPYRIGHT====================
-// Copyright 2007 David Jenkins.
-// Copyright 2007 Eric Niebler.
-
-
-====================COPYRIGHT====================
-// Copyright 2007 Peter Dimov
-
-
-====================COPYRIGHT====================
-// Copyright 2007, 2014 Peter Dimov
-
-
-====================COPYRIGHT====================
-// Copyright 2008 Eric Niebler.
-// Copyright 2008 David Jenkins.
-
-
-====================COPYRIGHT====================
-// Copyright 2008 Howard Hinnant
-// Copyright 2008 Beman Dawes
-// Copyright 2009 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// Copyright 2008 Howard Hinnant
-// Copyright 2008 Beman Dawes
-// Copyright 2009-2011 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// Copyright 2008 Howard Hinnant
-// Copyright 2008 Beman Dawes
-// Copyright 2009-2012 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// Copyright 2008 Peter Dimov
-
-
-====================COPYRIGHT====================
-// Copyright 2008,2012 Peter Dimov
-
-
-====================COPYRIGHT====================
-// Copyright 2009 Eric Niebler. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2009-2010 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// Copyright 2009-2011 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// Copyright 2010 Daniel Wallin, Eric Niebler. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2010 Gaetano Mendola, 2011 Simon West. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2010 John Maddock
-
-
-====================COPYRIGHT====================
-// Copyright 2010 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// Copyright 2011 John Maddock. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2011 Simon West. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2012 Eric Niebler. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2012 John Maddock. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
-
-
-====================COPYRIGHT====================
-// Copyright 2012 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// Copyright 2013 Nikhar Agrawal
-// Copyright 2013 Christopher Kormanyos
-// Copyright 2013 John Maddock
-// Copyright 2013 Paul Bristow
-// Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// Copyright 2013 Nikhar Agrawal
-// Copyright 2013 Christopher Kormanyos
-// Copyright 2014 John Maddock
-// Copyright 2013 Paul Bristow
-// Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// Copyright 2013 Peter Dimov
-
-
-====================COPYRIGHT====================
-// Copyright 2014 Marco Guazzone (marco.guazzone@gmail.com)
-
-
-====================COPYRIGHT====================
-// Copyright 2014 Neil Groves
-
-
-====================COPYRIGHT====================
-// Copyright 2015 John Maddock. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
-
-
-====================COPYRIGHT====================
-// Copyright 2015 Klemens Morgenstern
-
-
-====================COPYRIGHT====================
-// Copyright 2015 Peter Dimov.
-
-
-====================COPYRIGHT====================
-// Copyright 2015, 2016 Peter Dimov.
-
-
-====================COPYRIGHT====================
-// Copyright 2015, 2017 Peter Dimov.
-
-
-====================COPYRIGHT====================
-// Copyright 2015-2017 Peter Dimov.
-
-
-====================COPYRIGHT====================
-// Copyright 2016 John Maddock. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2016 Klemens Morgenstern
-
-
-====================COPYRIGHT====================
-// Copyright 2016 Peter Dimov.
-
-
-====================COPYRIGHT====================
-// Copyright 2016, 2017 Peter Dimov
-
-
-====================COPYRIGHT====================
-// Copyright 2017 John Maddock
-// Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// Copyright 2017 Peter Dimov.
-
-
-====================COPYRIGHT====================
-// Copyright Adam D. Walling 2012. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Antony Polukhin, 2013-2014.
-
-
-====================COPYRIGHT====================
-// Copyright Arno Schoedl & Neil Groves 2009.
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 1994, 2006, 2008
-// Copyright Vicente J. Botet Escriba 2009
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 1994, 2006, 2008
-// Copyright Vicente J. Botet Escriba 2009-2011
-// Copyright Christopher Brown 2013
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 1994-2007, 2011
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 1994-99. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 1995-2001. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 2001. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 2002
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 2002, 2006
-// Copyright (c) Microsoft Corporation 2014
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 2002-2005, 2009
-// Copyright Vladimir Prus 2002
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 2002-2009
-// Copyright Jan Langer 2002
-// Copyright Dietmar Kuehl 2001
-// Copyright Vladimir Prus 2002
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 2003
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 2003, 2006
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 2003, 2006, 2008
-// Copyright 2009-2011 Vicente J. Botet Escriba
-// Copyright (c) Microsoft Corporation 2014
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 2003, 2006, 2010
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 2003, 2006, 2011
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 2003, 2010
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 2005.
-// Use, modification, and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 2006
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 2006, 2007
-// Copyright Christoper Kohlhoff 2007
-// Copyright Peter Dimov 2017, 2018
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 2007
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 2008
-// Copyright Vicente J. Botet Escriba 2009
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 2009
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 2010
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 2010, 2011, 2014
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 2011
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 2013
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 2014
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 2015
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes and Daryle Walker 1999. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes, 2002-2005
-// Copyright Vladimir Prus, 2002
-// Use, modification, and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes, 2009
-// Copyright (C) 2011-2012 Vicente J. Botet Escriba
-// Copyright (C) 2012 Anthony Williams
-
-
-====================COPYRIGHT====================
-// Copyright Benjamin Sobotta 2012
-
-
-====================COPYRIGHT====================
-// Copyright Bryce Lelbach 2010
-// Copyright Neil Groves 2009. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Daniel Walker 2006. Use, modification and distribution
-// are subject to the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Daniel Walker, Eric Niebler, Michel Morin 2008-2012.
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or
-
-
-====================COPYRIGHT====================
-// Copyright Darin Adler 2000
-// Copyright Beman Dawes 2008
-
-
-====================COPYRIGHT====================
-// Copyright Douglas Gregor 2001-2003. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Douglas Gregor 2001-2006
-// Copyright Emil Dotchevski 2007
-// Use, modification and distribution is subject to the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Douglas Gregor 2002-2003. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Douglas Gregor 2003. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Douglas Gregor 2004.
-// Copyright 2005 Peter Dimov
-
-
-====================COPYRIGHT====================
-// Copyright Jens Maurer 2006-1011
-// Copyright Steven Watanabe 2011
-// Copyright 2012 John Maddock. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
-
-
-====================COPYRIGHT====================
-// Copyright John Maddock 2005-2006, 2011.
-// Copyright Paul A. Bristow 2006-2011.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// Copyright John Maddock 2005-2006.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// Copyright John Maddock 2005-2008.
-// Copyright (c) 2006-2008 Johan Rade
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// Copyright John Maddock 2006, 2007, 2012, 2014.
-// Copyright Paul A. Bristow 2006, 2007, 2012
-
-
-====================COPYRIGHT====================
-// Copyright John Maddock 2006, 2007.
-// Copyright Paul A. Bristow 2006, 2007, 2009, 2010.
-
-
-====================COPYRIGHT====================
-// Copyright John Maddock 2006, 2007.
-// Copyright Paul A. Bristow 2006, 2007.
-
-
-====================COPYRIGHT====================
-// Copyright John Maddock 2006, 2010.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// Copyright John Maddock 2006-7, 2013-14.
-// Copyright Paul A. Bristow 2007, 2013-14.
-// Copyright Nikhar Agrawal 2013-14
-// Copyright Christopher Kormanyos 2013-14
-
-
-====================COPYRIGHT====================
-// Copyright John Maddock 2006.
-// Copyright Paul A. Bristow 2006, 2012, 2017.
-// Copyright Thomas Mang 2012.
-
-
-====================COPYRIGHT====================
-// Copyright John Maddock 2006.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// Copyright John Maddock 2007, 2014.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// Copyright John Maddock 2007-8.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// Copyright John Maddock 2007.
-// Copyright Paul A. Bristow 2007, 2009
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// Copyright John Maddock 2007.
+// (C) Copyright Aleksey Gurtovoy 2003.
+// (C) Copyright Beman Dawes 2003.
+// (C) Copyright Jens Maurer 2003.
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// Copyright John Maddock 2008
-// Use, modification, and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright John Maddock 2010, 2012.
-// Copyright Paul A. Bristow 2011, 2012.
-
-
-====================COPYRIGHT====================
-// Copyright John Maddock 2010.
+
+
+====================COPYRIGHT====================
+// (C) Copyright John Maddock 2002 - 2003.
+// (C) Copyright Jens Maurer 2002 - 2003.
+// (C) Copyright Beman Dawes 2002 - 2003.
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// Copyright John Maddock 2015.
+
+
+====================COPYRIGHT====================
+// (C) Copyright John Maddock 2002.
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// Copyright John Maddock 2016.
+
+
+====================COPYRIGHT====================
+// (C) Copyright John Maddock 2005-2006.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// (C) Copyright John Maddock 2005.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// (C) Copyright John Maddock 2006, 2015
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// (C) Copyright John Maddock 2006-8.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// (C) Copyright John Maddock 2006.
+// (C) Copyright Jeremy William Murphy 2015.
+
+
+====================COPYRIGHT====================
+// (C) Copyright John Maddock 2006.
+// (C) Copyright Johan Rade 2006.
+// (C) Copyright Paul A. Bristow 2011 (added changesign).
+
+
+====================COPYRIGHT====================
+// (C) Copyright John Maddock 2006.
+// (C) Copyright Paul A. Bristow 2006.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// (C) Copyright John Maddock 2006.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// (C) Copyright John Maddock 2007.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// (C) Copyright John Maddock 2008.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// (C) Copyright John Maddock 2010.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// (C) Copyright John Maddock 2011.
+// (C) Copyright Cray, Inc. 2013
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// (C) Copyright John Maddock 2015.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// (C) Copyright John Maddock 2017.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright John Maddock and Steve Cleary 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright John maddock 1999.
+// (C) David Abrahams 2002. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Kevlin Henney and Dave Abrahams 1999.
+// (C) Copyright Boris Rasin 2014.
+// Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// (C) Copyright Matthias Troyerk 2006.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Nick Thompson 2017.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// (C) Copyright Nick Thompson 2018.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// (C) Copyright Noel Belcourt 2007.
+// Copyright 2017, NVIDIA CORPORATION.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// (C) Copyright Paul Moore 1999. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or
+// implied warranty, and with no claim as to its suitability for any purpose.
+
+
+====================COPYRIGHT====================
+// (C) Copyright Peter Dimov 2017.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright R.W. Grosse-Kunstleve 2002.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Rani Sharoni 2003-2005.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Rani Sharoni 2003.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Robert Ramey 2003. Jonathan Turkanis 2004.
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Runar Undheim, Robert Ramey & John Maddock 2008.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Samuli-Petrus Korhonen 2017.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000-2005.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// (C) Copyright Eric Friedman 2002-2003.
+// (C) Copyright Antony Polukhin 2013.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Yuriy Krasnoschek 2009.
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Jens Maurer 2001 - 2003.
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// Copyright John Maddock 2017.
-// Copyright Nick Thompson 2017.
+
+
+====================COPYRIGHT====================
+// (c) Copyright Fernando Luis Cacciola Carballal 2000-2004
+// Use, modification, and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (c) Copyright Robert Ramey 2004
+// Use, modification, and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
+// Copyright (C) 2001, 2002 Peter Dimov
+// Copyright (C) 2002 David Abrahams
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2002 Beman Dawes
+// Copyright (C) 2001 Dietmar Kuehl
+// Use, modification, and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2008, 2009, 2016 Tim Blechmann, based on code by Cory Nelson
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2008, 2016 Tim Blechmann
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2008-2013 Tim Blechmann
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2008-2016 Tim Blechmann
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2009 Trustees of Indiana University
+// Authors: Jeremiah Willcock, Andrew Lumsdaine
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2009, 2016 Tim Blechmann
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2009-2013 Tim Blechmann
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2011, 2016 Tim Blechmann
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2011-2013, 2016 Tim Blechmann
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2012 David Stone
+// Copyright Beman Dawes 2013
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2014 Glen Joseph Fernandes
+// glenfe at live dot com
+// Copyright (C) 2014 Agustin Berge
+
+
+====================COPYRIGHT====================
+// Copyright (C) Christof Meerwald 2003
+// Copyright (C) Dan Watkins 2003
+
+
+====================COPYRIGHT====================
+// Copyright (C) Douglas Gregor 2008
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2000-2002
+// Joerg Walter, Mathias Koch
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2000-2004
+// Joerg Walter, Mathias Koch
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2000-2007
+// Joerg Walter, Mathias Koch, Gunter Winkler
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2000-2009
+// Joerg Walter, Mathias Koch, Gunter Winkler
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2000-2010
+// Joerg Walter, Mathias Koch, David Bellot
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2000-2010
+// Joerg Walter, Mathias Koch, Gunter Winkler, David Bellot
+// Copyright (c) 2014, Athanasios Iliopoulos
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2000-2011 Joerg Walter, Mathias Koch, David Bellot
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2000-2013
+// Joerg Walter, Mathias Koch, Athanasios Iliopoulos
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2000-2013
+// Joerg Walter, Mathias Koch. David Bellot
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001 Daniel C. Nuffer
+// Copyright (c) 2001-2011 Hartmut Kaiser
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001 Peter Dimov and Multi Media Ltd.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001 Peter Dimov and Multi Media Ltd.
+// Copyright (c) 2008 Peter Dimov
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001, 2002 Peter Dimov
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
+// Copyright (c) 2001 David Abrahams
+// Copyright (c) 2003-2005 Peter Dimov
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
+// Copyright (c) 2002 Lars Gullik Bjønnes <larsbj@lyx.org>
+// Copyright 2003-2005 Peter Dimov
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
+// Copyright (c) 2007, 2014 Peter Dimov
+// Copyright (c) Beman Dawes 2011
+// Copyright (c) 2015 Ion Gaztanaga
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
+// Copyright (c) 2013 Peter Dimov
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001, 2002, 2003 Peter Dimov
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
+// Copyright 2004-2005 Peter Dimov
+// Copyright 2005 Rene Rivera
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
+// Copyright 2004-2005 Peter Dimov
+// Copyright 2006 Ion Gaztanaga
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
+// Copyright 2004-2005 Peter Dimov
+// Copyright 2006 Michael van der Westhuizen
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
+// Copyright 2004-2005 Peter Dimov
+// Copyright 2006 Michael van der Westhuizen
+// Copyright 2012 IBM Corp.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
+// Copyright 2004-2005 Peter Dimov
+// Copyright 2007-2012 Ion Gaztanaga
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
+// Copyright 2004-2006 Peter Dimov
+// Copyright 2005 Ben Hutchings
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
+// Copyright 2004-2008 Peter Dimov
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001-2003 John Maddock
+// Copyright (c) 2001 Darin Adler
+// Copyright (c) 2001 Peter Dimov
+// Copyright (c) 2002 Bill Kempf
+// Copyright (c) 2002 Jens Maurer
+// Copyright (c) 2002-2003 David Abrahams
+// Copyright (c) 2003 Gennaro Prota
+// Copyright (c) 2003 Eric Friedman
+// Copyright (c) 2010 Eric Jourdanneau, Joel Falcou
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001-2004 Peter Dimov and Multi Media Ltd.
+// Copyright (c) 2001 David Abrahams
+// Copyright (c) 2005 Peter Dimov
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001-2005 Peter Dimov
+// Copyright (c) 2006 Michael van der Westhuizen
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001-2009, 2012 Peter Dimov
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001-2009, Hartmut Kaiser
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001-2010 Hartmut Kaiser
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001-2011 Hartmut Kaiser
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001-2011 Hartmut Kaiser
+// Copyright (c) 2001-2011 Joel de Guzman
+// Copyright (c) 2009 Carl Barron
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001-2011 Hartmut Kaiser
+// Copyright (c) 2001-2011 Joel de Guzman
+// Copyright (c) 2011 Thomas Bernard
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001-2011 Joel de Guzman
+// Copyright (c) 2001-2011 Hartmut Kaiser
+// Copyright (c) 2009 Francois Barel
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001-2011 Thomas Bernard
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001-2013 Hartmut Kaiser
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2002 Peter Dimov
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
+// Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
+// Copyright (c) 2009 Steven Watanabe
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2002, 2003 Peter Dimov
+// Copyright (c) 2003 Daniel Frey
+// Copyright (c) 2003 Howard Hinnant
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2002, 2003 Peter Dimov and Multi Media Ltd.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2002, 2003 Peter Dimov and Multi Media Ltd.
+// Copyright (c) 2008 Frank Mori Hess
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2002, 2009, 2014 Peter Dimov
+// Copyright (2) Beman Dawes 2010, 2011
+// Copyright (3) Ion Gaztanaga 2013
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2002-2003
+// Toon Knapen, Kresimir Fresl, Joerg Walter
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2002-2003 Eric Friedman
+// Copyright (c) 2002 by Andrei Alexandrescu
+// Copyright (c) 2013-2014 Antony Polukhin
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2003
+// Gunter Winkler, Joerg Walter
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2003 David Abrahams
+// Copyright (c) 2003 Peter Dimov
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2003 Peter Dimov Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2003 Vladimir Prus.
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2010 Beman Dawes
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2004 Ralf Mattethat
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2006 Peter Dimov
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2006 Piotr Wyderski
+// Copyright (c) 2006 Tomas Puverle
+// Copyright (c) 2006 Peter Dimov
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2006 Piotr Wyderski
+// Copyright (c) 2006 Tomas Puverle
+// Copyright (c) 2006 Peter Dimov
+// Copyright (c) 2011 Emil Dotchevski
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2006 Xiaogang Zhang
+// Copyright (c) 2006 John Maddock
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2006 Xiaogang Zhang
+// Copyright (c) 2017 John Maddock
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2006 Xiaogang Zhang, 2015 John Maddock
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2006, Stephan Diederich
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2006-7 John Maddock
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2007 John Maddock
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2007 Peter Dimov
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2007, 2008 Peter Dimov
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2007, 2008 Peter Dimov
+// Copyright (c) 2008 Michael Marcin
+// Copyright (c) 2009 Frank Mori Hess
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2007, 2008, 2012 Peter Dimov
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2007, 2013 John Maddock
+// Copyright Christopher Kormanyos 2013.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2007, 2013 Peter Dimov
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2007, 2013, 2015 Peter Dimov
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2008 Frank Mori Hess
+// Copyright (c) 2016 Peter Dimov
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2008, 2009 Peter Dimov
+// Copyright (c) 2018 Andrey Semashev
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2008, 2011 Peter Dimov
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2008-2009 Ben Hanson
+// Copyright (c) 2008-2011 Hartmut Kaiser
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2008-2009 Frank Mori Hess
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2009
+// Gunter Winkler
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2009 Helge Bahmann
+// Copyright (c) 2012 - 2014, 2017 Andrey Semashev
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2009 John Maddock
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2009 Peter Dimov
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2009, 2015 Peter Dimov
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2009, Spirent Communications, Inc.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2009-2011 Artyom Beilis (Tonkikh)
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2010 Artyom Beilis (Tonkikh)
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2010 Athanasios Iliopoulos
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2010 Ilya Murav'jov
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2010 Neil Groves
+// Distributed under the Boost Software License, Version 1.0.
+// See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2010 Nuovation System Designs, LLC
+// Grant Erickson <gerickson@nuovations.com>
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2010-2011 David Bellot
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2011 Aaron Graham
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2011 Helge Bahmann
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2011 John Maddock
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2012 Oswin Krause
+// Copyright (c) 2013 Joaquim Duran
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2013 Anton Bikineev
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2013 Christopher Kormanyos
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2014 Peter Dimov
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2015 Artyom Beilis (Tonkikh)
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2015 John Maddock
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2015 Orson Peters
+// This software is provided 'as-is', without any express or implied warranty. In no event will the
+// authors be held liable for any damages arising from the use of this software.
+// Permission is granted to anyone to use this software for any purpose, including commercial
+// applications, and to alter it and redistribute it freely, subject to the following restrictions:
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2017 Dynatrace
+
+
+====================COPYRIGHT====================
+// Copyright 1999-2003 Aleksey Gurtovoy. Use, modification, and distribution are
+// subject to the Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or a copy at <http://www.boost.org/LICENSE_1_0.txt>.)
+
+
+====================COPYRIGHT====================
+// Copyright 2000 John Maddock (john@johnmaddock.co.uk)
+// Copyright 2002 Aleksey Gurtovoy (agurtovoy@meta-comm.com)
+
+
+====================COPYRIGHT====================
+// Copyright 2001 John Maddock.
+// Copyright 2017 Peter Dimov.
+
+
+====================COPYRIGHT====================
+// Copyright 2001, 2003, 2004, 2012 Daryle Walker. Use, modification, and
+// distribution are subject to the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or a copy at
+
+
+====================COPYRIGHT====================
+// Copyright 2001, 2004 Daryle Walker. Use, modification, and distribution are
+// subject to the Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or a copy at <http://www.boost.org/LICENSE_1_0.txt>.)
+
+
+====================COPYRIGHT====================
+// Copyright 2002 Daryle Walker. Use, modification, and distribution are subject
+// to the Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or a copy at <http://www.boost.org/LICENSE_1_0.txt>.)
+
+
+====================COPYRIGHT====================
+// Copyright 2002, 2009 Peter Dimov
+
+
+====================COPYRIGHT====================
+// Copyright 2002, 2009, 2014 Peter Dimov
+// Copyright 2008-2009 Frank Mori Hess
+
+
+====================COPYRIGHT====================
+// Copyright 2005 Daniel Egloff, Eric Niebler. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2005 Daniel Egloff, Olivier Gygi. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2005 Daniel Egloff. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2005 Eric Niebler, Daniel Egloff. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2005 Eric Niebler, Michael Gauckler. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2005 Eric Niebler. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2005, 2014 Peter Dimov
+
+
+====================COPYRIGHT====================
+// Copyright 2005-2013 Peter Dimov
+
+
+====================COPYRIGHT====================
+// Copyright 2006 Daniel Egloff, Olivier Gygi. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2006 Eric Niebler, Olivier Gygi. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2006 Eric Niebler. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2006 Olivier Gygi, Daniel Egloff. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2006, Eric Niebler, Olivier Gygi. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2007 Baruch Zilber
+// Copyright 2007 Boris Gubenko
+
+
+====================COPYRIGHT====================
+// Copyright 2007 David Jenkins.
+// Copyright 2007 Eric Niebler.
+
+
+====================COPYRIGHT====================
+// Copyright 2007 Peter Dimov
+
+
+====================COPYRIGHT====================
+// Copyright 2007, 2014 Peter Dimov
+
+
+====================COPYRIGHT====================
+// Copyright 2008 Eric Niebler.
+// Copyright 2008 David Jenkins.
+
+
+====================COPYRIGHT====================
+// Copyright 2008 Howard Hinnant
+// Copyright 2008 Beman Dawes
+// Copyright 2009 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// Copyright 2008 Howard Hinnant
+// Copyright 2008 Beman Dawes
+// Copyright 2009-2011 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// Copyright 2008 Howard Hinnant
+// Copyright 2008 Beman Dawes
+// Copyright 2009-2012 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// Copyright 2008 Peter Dimov
+
+
+====================COPYRIGHT====================
+// Copyright 2008,2012 Peter Dimov
+
+
+====================COPYRIGHT====================
+// Copyright 2009 Eric Niebler. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2009-2010 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// Copyright 2009-2011 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// Copyright 2010 Daniel Wallin, Eric Niebler. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2010 Gaetano Mendola, 2011 Simon West. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2010 John Maddock
+
+
+====================COPYRIGHT====================
+// Copyright 2010 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// Copyright 2011 John Maddock. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2011 Simon West. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2012 Eric Niebler. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2012 John Maddock. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
+
+
+====================COPYRIGHT====================
+// Copyright 2012 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// Copyright 2013 Nikhar Agrawal
+// Copyright 2013 Christopher Kormanyos
+// Copyright 2013 John Maddock
+// Copyright 2013 Paul Bristow
+// Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// Copyright 2013 Nikhar Agrawal
+// Copyright 2013 Christopher Kormanyos
+// Copyright 2014 John Maddock
+// Copyright 2013 Paul Bristow
+// Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// Copyright 2013 Peter Dimov
+
+
+====================COPYRIGHT====================
+// Copyright 2014 Marco Guazzone (marco.guazzone@gmail.com)
+
+
+====================COPYRIGHT====================
+// Copyright 2014 Neil Groves
+
+
+====================COPYRIGHT====================
+// Copyright 2015 John Maddock. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
+
+
+====================COPYRIGHT====================
+// Copyright 2015 Klemens Morgenstern
+
+
+====================COPYRIGHT====================
+// Copyright 2015 Peter Dimov.
+
+
+====================COPYRIGHT====================
+// Copyright 2015, 2016 Peter Dimov.
+
+
+====================COPYRIGHT====================
+// Copyright 2015, 2017 Peter Dimov.
+
+
+====================COPYRIGHT====================
+// Copyright 2015-2017 Peter Dimov.
+
+
+====================COPYRIGHT====================
+// Copyright 2016 John Maddock. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2016 Klemens Morgenstern
+
+
+====================COPYRIGHT====================
+// Copyright 2016 Peter Dimov.
+
+
+====================COPYRIGHT====================
+// Copyright 2016, 2017 Peter Dimov
+
+
+====================COPYRIGHT====================
+// Copyright 2017 John Maddock
+// Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// Copyright 2017 Peter Dimov.
+
+
+====================COPYRIGHT====================
+// Copyright Adam D. Walling 2012. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Antony Polukhin, 2013-2014.
+
+
+====================COPYRIGHT====================
+// Copyright Arno Schoedl & Neil Groves 2009.
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 1994, 2006, 2008
+// Copyright Vicente J. Botet Escriba 2009
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 1994, 2006, 2008
+// Copyright Vicente J. Botet Escriba 2009-2011
+// Copyright Christopher Brown 2013
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 1994-2007, 2011
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 1994-99. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 1995-2001. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 2001. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 2002
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 2002, 2006
+// Copyright (c) Microsoft Corporation 2014
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 2002-2005, 2009
+// Copyright Vladimir Prus 2002
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 2002-2009
+// Copyright Jan Langer 2002
+// Copyright Dietmar Kuehl 2001
+// Copyright Vladimir Prus 2002
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 2003
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 2003, 2006
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 2003, 2006, 2008
+// Copyright 2009-2011 Vicente J. Botet Escriba
+// Copyright (c) Microsoft Corporation 2014
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 2003, 2006, 2010
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 2003, 2006, 2011
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 2003, 2010
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 2005.
+// Use, modification, and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 2006
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 2006, 2007
+// Copyright Christoper Kohlhoff 2007
+// Copyright Peter Dimov 2017, 2018
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 2007
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 2008
+// Copyright Vicente J. Botet Escriba 2009
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 2009
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 2010
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 2010, 2011, 2014
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 2011
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 2013
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 2014
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 2015
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes and Daryle Walker 1999. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes, 2002-2005
+// Copyright Vladimir Prus, 2002
+// Use, modification, and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes, 2009
+// Copyright (C) 2011-2012 Vicente J. Botet Escriba
+// Copyright (C) 2012 Anthony Williams
+
+
+====================COPYRIGHT====================
+// Copyright Benjamin Sobotta 2012
+
+
+====================COPYRIGHT====================
+// Copyright Bryce Lelbach 2010
+// Copyright Neil Groves 2009. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Daniel Walker 2006. Use, modification and distribution
+// are subject to the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Daniel Walker, Eric Niebler, Michel Morin 2008-2012.
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or
+
+
+====================COPYRIGHT====================
+// Copyright Darin Adler 2000
+// Copyright Beman Dawes 2008
+
+
+====================COPYRIGHT====================
+// Copyright Douglas Gregor 2001-2003. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Douglas Gregor 2001-2006
+// Copyright Emil Dotchevski 2007
+// Use, modification and distribution is subject to the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Douglas Gregor 2002-2003. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Douglas Gregor 2003. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Douglas Gregor 2004.
+// Copyright 2005 Peter Dimov
+
+
+====================COPYRIGHT====================
+// Copyright Jens Maurer 2006-1011
+// Copyright Steven Watanabe 2011
+// Copyright 2012 John Maddock. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
+
+
+====================COPYRIGHT====================
+// Copyright John Maddock 2005-2006, 2011.
+// Copyright Paul A. Bristow 2006-2011.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// Copyright John Maddock 2005-2006.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// Copyright John Maddock 2005-2008.
+// Copyright (c) 2006-2008 Johan Rade
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// Copyright John Maddock 2006, 2007, 2012, 2014.
+// Copyright Paul A. Bristow 2006, 2007, 2012
+
+
+====================COPYRIGHT====================
+// Copyright John Maddock 2006, 2007.
+// Copyright Paul A. Bristow 2006, 2007, 2009, 2010.
+
+
+====================COPYRIGHT====================
+// Copyright John Maddock 2006, 2007.
+// Copyright Paul A. Bristow 2006, 2007.
+
+
+====================COPYRIGHT====================
+// Copyright John Maddock 2006, 2010.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// Copyright John Maddock 2006-7, 2013-14.
+// Copyright Paul A. Bristow 2007, 2013-14.
+// Copyright Nikhar Agrawal 2013-14
+// Copyright Christopher Kormanyos 2013-14
+
+
+====================COPYRIGHT====================
+// Copyright John Maddock 2006.
+// Copyright Paul A. Bristow 2006, 2012, 2017.
+// Copyright Thomas Mang 2012.
+
+
+====================COPYRIGHT====================
+// Copyright John Maddock 2006.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// Copyright John Maddock 2007, 2014.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// Copyright John Maddock 2007-8.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// Copyright John Maddock 2007.
+// Copyright Paul A. Bristow 2007, 2009
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// Copyright John Maddock 2007.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// Copyright John Maddock 2008
+// Use, modification, and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright John Maddock 2010, 2012.
+// Copyright Paul A. Bristow 2011, 2012.
+
+
+====================COPYRIGHT====================
+// Copyright John Maddock 2010.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// Copyright John Maddock 2015.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// Copyright John Maddock 2016.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// Copyright John Maddock 2017.
+// Copyright Nick Thompson 2017.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// Copyright Jonathan Turkanis 2005. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Neil Groves & Thorsten Ottosen & Pavol Droba 2003-2004.
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Neil Groves 2003-2004.
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Neil Groves 2007.
+// Copyright Thorsten Ottosen 2006.
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Neil Groves 2009. Use, modification and distribution
+// are subject to the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Neil Groves 2010. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Neil Groves 2014
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Pavol Droba 2002-2003.
+
+
+====================COPYRIGHT====================
+// Copyright Pavol Droba 2002-2004.
+
+
+====================COPYRIGHT====================
+// Copyright Pavol Droba 2002-2006.
+
+
+====================COPYRIGHT====================
+// Copyright Samuel Krempp 2003. Use, modification, and distribution are
+// subject to the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright Thijs van den Berg, 2008.
+// Copyright John Maddock 2008.
+// Copyright Paul A. Bristow 2008, 2014.
+
+
+====================COPYRIGHT====================
+// Copyright Thorsten Ottosen 2003-2004. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Thorsten Ottosen 2003-2005. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Thorsten Ottosen 2003-2006. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Thorsten Ottosen 2003-2007. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Thorsten Ottosen 2003-2008. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Thorsten Ottosen 2006. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Thorsten Ottosen 2008. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Thorsten Ottosen, Neil Groves 2006 - 2008. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Thorsten Ottosen, Neil Groves 2006. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// This file was automatically generated on Tue Aug 17 16:27:31 2021
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-21.
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// Copyright Jonathan Turkanis 2005. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Neil Groves & Thorsten Ottosen & Pavol Droba 2003-2004.
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Neil Groves 2003-2004.
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Neil Groves 2007.
-// Copyright Thorsten Ottosen 2006.
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Neil Groves 2009. Use, modification and distribution
-// are subject to the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Neil Groves 2010. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Neil Groves 2014
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Pavol Droba 2002-2003.
-
-
-====================COPYRIGHT====================
-// Copyright Pavol Droba 2002-2004.
-
-
-====================COPYRIGHT====================
-// Copyright Pavol Droba 2002-2006.
-
-
-====================COPYRIGHT====================
-// Copyright Samuel Krempp 2003. Use, modification, and distribution are
-// subject to the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright Thijs van den Berg, 2008.
-// Copyright John Maddock 2008.
-// Copyright Paul A. Bristow 2008, 2014.
-
-
-====================COPYRIGHT====================
-// Copyright Thorsten Ottosen 2003-2004. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Thorsten Ottosen 2003-2005. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Thorsten Ottosen 2003-2006. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Thorsten Ottosen 2003-2007. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Thorsten Ottosen 2003-2008. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Thorsten Ottosen 2006. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Thorsten Ottosen 2008. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Thorsten Ottosen, Neil Groves 2006 - 2008. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Thorsten Ottosen, Neil Groves 2006. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// This file was automatically generated on Tue Aug 17 16:27:31 2021
-// by libs/config/tools/generate.cpp
-// Copyright John Maddock 2002-21.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
-// (C) Copyright 2014 Jim Bell
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
-// (C) Copyright 2016 Ashish Sadanandan
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2002-2008 Robert Ramey and Joaquin M Lopez Munoz
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2002-2008, Fernando Luis Cacciola Carballal.
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2002-2009 Robert Ramey - http://www.rrsd.com .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2002-2014 Robert Ramey - http://www.rrsd.com .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2002-4 Pavel Vozenilek .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2003-4 Pavel Vozenilek and Robert Ramey - http://www.rrsd.com.
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2004 Pavel Vozenilek.
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2004 Robert Ramey - http://www.rrsd.com .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2004 Robert Ramey and Martin Ecker
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2004-2009 Robert Ramey, Martin Ecker and Takatoshi Kondo
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2005 Matthias Troyer
-// (C) Copyright 2006 Douglas Gregor <doug.gregor -at- gmail.com>
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2005 Matthias Troyer and Dave Abrahams
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2005 Robert Ramey - http://www.rrsd.com
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2005-2006 Matthias Troyer
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2005-2007 Matthias Troyer
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2005-7 Anthony Williams
-// (C) Copyright 2011-2012 Vicente J. Botet Escriba
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2006 David Abrahams - http://www.boost.org.
-// implementation of class export functionality. This is an alternative to
-// "forward declaration" method to provoke instantiation of derived classes
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2007 Andrew Sutton
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2007 Matthias Troyer .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2007 Robert Ramey - http://www.rrsd.com .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2007, 2008 Steven Watanabe, Joseph Gauterin, Niels Dekker
-// (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2007-10 Anthony Williams
-// (C) Copyright 2011-2012 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2007-2009 Andrew Sutton
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2007-2010 Anthony Williams
-// (C) Copyright 2011-2012 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2007-8 Anthony Williams
-// (C) Copyright 2011,2012,2015 Vicente J. Botet Escriba
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2007-9 Anthony Williams
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com)
-// (C) Copyright 2003-2007 Jonathan Turkanis
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com)
-// (C) Copyright 2004-2007 Jonathan Turkanis
-// (C) Copyright 2002, 2003 Beman Dawes Boost.Filesystem
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com)
-// (C) Copyright 2004-2007 Jonathan Turkanis
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com)
-// (C) Copyright 2005-2007 Jonathan Turkanis
-// (C) Copyright David Abrahams 2004.
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com)
-// (C) Copyright 2005-2007 Jonathan Turkanis
-// (C) Copyright Jonathan Graehl 2004.
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com)
-// (C) Copyright 2005-2007 Jonathan Turkanis
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2008 Matthias Troyer
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2008 Robert Ramey
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2008-2009,2012 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2009 Eric Bose-Wolf
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2009 Robert Ramey - http://www.rrsd.com .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2009-2012 Anthony Williams
-// (C) Copyright 2012 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2009-2012 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2010 Daniel James
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2010 Just Software Solutions Ltd http://www.justsoftwaresolutions.co.uk
-// (C) Copyright 2012 Vicente J. Botet Escriba
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2010 Robert Ramey
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2012 Vicente Botet
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2012 Vicente J. Botet Escriba
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2013 Ruslan Baratov
-// Copyright (C) 2014 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2013,2015 Vicente J. Botet Escriba
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2014 Robert Ramey - http://www.rrsd.com .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2014 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// (C) Copyright Andrew Sutton 2007
-
-
-====================COPYRIGHT====================
-// (C) Copyright Andrey Semashev 2017.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Daniel K. O. 2005.
-// (C) Copyright Ion Gaztanaga 2007-2014
-
-
-====================COPYRIGHT====================
-// (C) Copyright Daniel Wallin 2004.
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
-
-
-====================COPYRIGHT====================
-// (C) Copyright David Abrahams 2001, Howard Hinnant 2001.
-
-
-====================COPYRIGHT====================
-// (C) Copyright David Abrahams 2001.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright David Abrahams 2002.
-// (C) Copyright Jeremy Siek 2002.
-// (C) Copyright Thomas Witt 2002.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright David Abrahams, Vicente Botet 2009.
-// (C) Copyright Ion Gaztanaga 2009-2012.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Douglas Gregor 2010
-
-
-====================COPYRIGHT====================
-// (C) Copyright Francois Faure, iMAGIS-GRAVIR / UJF, 2001.
-
-
-====================COPYRIGHT====================
-// (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
-// (C) Copyright Peter Dimov 2001, 2002, 2003
-// (C) Copyright Ion Gaztanaga 2006-2012.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Howard Hinnant 2007-2010. Distributed under the Boost
-// Software License, Version 1.0. (see http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2006-2014
-// (C) Copyright Microsoft Corporation 2014
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2006-2013
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2006-2015
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2009-2013.
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2010-2013
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2013-2013
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2013-2014
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2004-2015. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2005-2013.
-// (C) Copyright Gennaro Prota 2003 - 2004.
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2005-2014. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2005-2015. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2005-2016.
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2005.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2006-2012
-// (C) Copyright Markus Schoepflin 2007
-// (C) Copyright Bryce Lelbach 2010
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2006-2014. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2007-2012. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2007-2013. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2007-2014. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2008
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2008-2012. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2008-2013. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2008-2015. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2009-2012. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2009. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2010-2012.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2010-2016.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2011-2012. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2011-2013. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2011-2014. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2012-2012. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2012-2013. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2012-2015.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2012-2016.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2014-2014.
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2014-2015. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2014-2017. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2015-2015. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2015-2016.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2016-2016. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2017-2017. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2017-2018.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Jens Maurer 2001.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Jeremy Siek 2000.
-// Copyright 2002 The Trustees of Indiana University.
-
-
-====================COPYRIGHT====================
-// (C) Copyright Jeremy Siek 2000.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Jeremy Siek 2001.
-// Distributed under the Boost Software License, Version 1.0. (See accompany-
-// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Jeremy Siek, 2001.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Joaquin M Lopez Munoz 2006-2013
-// (C) Copyright Ion Gaztanaga 2014-2014
-
-
-====================COPYRIGHT====================
-// (C) Copyright Jonathan Turkanis 2004-2005.
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Jorge Lodos 2008.
-// (C) Copyright Jonathan Turkanis 2003.
-// (C) Copyright Craig Henderson 2002. 'boost/memmap.hpp' from sandbox
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Michael Glassford 2004.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright Milan Svoboda 2008.
-// Originally developed under the fusecompress project.
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga 2006-2014
-
-
-====================COPYRIGHT====================
-// (C) Copyright Orson Peters 2017.
-// (C) Copyright Ion Gaztanaga 2017-2018.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Pablo Halpern 2009. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Peter Dimov 2001, 2002
-// (C) Copyright Ion Gaztanaga 2006-2012. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Peter Dimov 2008.
-// (C) Copyright Ion Gaztanaga 2013-2013. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Peter Dimov and Multi Media Ltd. 2001, 2002, 2003
-// (C) Copyright Ion Gaztanaga 2006. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Peter Dimov and Multi Media Ltd. 2001, 2002, 2003
-// (C) Copyright Peter Dimov 2004-2005
-// (C) Copyright Ion Gaztanaga 2006-2012. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ronald Garcia 2002. Permission to copy, use, modify, sell and
-// distribute this software is granted provided this copyright notice appears
-// in all copies. This software is provided "as is" without express or implied
-// warranty, and with no claim as to its suitability for any purpose.
-
-
-====================COPYRIGHT====================
-// (C) Copyright Stephen Cleary 2000
-// (C) Copyright Ion Gaztanaga 2015-2017.
-
-
-====================COPYRIGHT====================
-// (C) Copyright Stephen Cleary 2000.
-// (C) Copyright Ion Gaztanaga 2007-2013.
-
-
-====================COPYRIGHT====================
-// (C) Copyright Thorsten Ottosen 2002-2003. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Thorsten Ottosen 2005
-// (C) Copyright Howard Hinnant 2004
-// (C) Copyright Jonathan Turkanis 2004
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Tobias Schwinger
-
-
-====================COPYRIGHT====================
-// (C) Copyright Toon Knapen 2001.
-// (C) Copyright David Abrahams 2003.
-// (C) Copyright Roland Richter 2003.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Vicente J. Botet Escriba 20010.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or
-
-
-====================COPYRIGHT====================
-// (C) Copyright Vicente J. Botet Escriba 2008-2009,2012. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Vicente J. Botet Escriba 2010.
-// Distributed under the Boost
-// Software License, Version 1.0.
-
-
-====================COPYRIGHT====================
-// (C) Copyright Vicente J. Botet Escriba 2013-2014. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Vicente J. Botet Escriba 2013-2017. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Vicente J. Botet Escriba 2014-2015. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Vicente J. Botet Escriba 2014. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (c) 2008 Gordon Woodhull
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSEmpl::_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (c) Copyright Andreas Huber Doenni 2002-2005, Eric Niebler 2006
-// Distributed under the Boost Software License, Version 1.0. (See accompany-
-// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (c) Copyright Jeremy Siek and John R. Bandela 2001.
-
-
-====================COPYRIGHT====================
-// (c) Copyright John Maddock 2003
-
-
-====================COPYRIGHT====================
-// (c) Copyright Juergen Hunold 2008
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (c) Copyright Raffi Enficiaud 2017.
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
+// (C) Copyright 2014 Jim Bell
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
+// (C) Copyright 2016 Ashish Sadanandan
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2002-2008 Robert Ramey and Joaquin M Lopez Munoz
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2002-2008, Fernando Luis Cacciola Carballal.
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2002-2009 Robert Ramey - http://www.rrsd.com .
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2002-2014 Robert Ramey - http://www.rrsd.com .
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2002-4 Pavel Vozenilek .
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2003-4 Pavel Vozenilek and Robert Ramey - http://www.rrsd.com.
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2004 Pavel Vozenilek.
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2004 Robert Ramey - http://www.rrsd.com .
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2004 Robert Ramey and Martin Ecker
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2004-2009 Robert Ramey, Martin Ecker and Takatoshi Kondo
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2005 Matthias Troyer
+// (C) Copyright 2006 Douglas Gregor <doug.gregor -at- gmail.com>
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2005 Matthias Troyer and Dave Abrahams
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2005 Robert Ramey - http://www.rrsd.com
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2005-2006 Matthias Troyer
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2005-2007 Matthias Troyer
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2005-7 Anthony Williams
+// (C) Copyright 2011-2012 Vicente J. Botet Escriba
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2006 David Abrahams - http://www.boost.org.
+// implementation of class export functionality. This is an alternative to
+// "forward declaration" method to provoke instantiation of derived classes
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2007 Andrew Sutton
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2007 Matthias Troyer .
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2007 Robert Ramey - http://www.rrsd.com .
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2007, 2008 Steven Watanabe, Joseph Gauterin, Niels Dekker
+// (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2007-10 Anthony Williams
+// (C) Copyright 2011-2012 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2007-2009 Andrew Sutton
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2007-2010 Anthony Williams
+// (C) Copyright 2011-2012 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2007-8 Anthony Williams
+// (C) Copyright 2011,2012,2015 Vicente J. Botet Escriba
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2007-9 Anthony Williams
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com)
+// (C) Copyright 2003-2007 Jonathan Turkanis
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com)
+// (C) Copyright 2004-2007 Jonathan Turkanis
+// (C) Copyright 2002, 2003 Beman Dawes Boost.Filesystem
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com)
+// (C) Copyright 2004-2007 Jonathan Turkanis
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com)
+// (C) Copyright 2005-2007 Jonathan Turkanis
+// (C) Copyright David Abrahams 2004.
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com)
+// (C) Copyright 2005-2007 Jonathan Turkanis
+// (C) Copyright Jonathan Graehl 2004.
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com)
+// (C) Copyright 2005-2007 Jonathan Turkanis
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2008 Matthias Troyer
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2008 Robert Ramey
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2008-2009,2012 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2009 Eric Bose-Wolf
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2009 Robert Ramey - http://www.rrsd.com .
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2009-2012 Anthony Williams
+// (C) Copyright 2012 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2009-2012 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2010 Daniel James
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2010 Just Software Solutions Ltd http://www.justsoftwaresolutions.co.uk
+// (C) Copyright 2012 Vicente J. Botet Escriba
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2010 Robert Ramey
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2012 Vicente Botet
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2012 Vicente J. Botet Escriba
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2013 Ruslan Baratov
+// Copyright (C) 2014 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2013,2015 Vicente J. Botet Escriba
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2014 Robert Ramey - http://www.rrsd.com .
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2014 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// (C) Copyright Andrew Sutton 2007
+
+
+====================COPYRIGHT====================
+// (C) Copyright Andrey Semashev 2017.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Daniel K. O. 2005.
+// (C) Copyright Ion Gaztanaga 2007-2014
+
+
+====================COPYRIGHT====================
+// (C) Copyright Daniel Wallin 2004.
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
+
+
+====================COPYRIGHT====================
+// (C) Copyright David Abrahams 2001, Howard Hinnant 2001.
+
+
+====================COPYRIGHT====================
+// (C) Copyright David Abrahams 2001.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright David Abrahams 2002.
+// (C) Copyright Jeremy Siek 2002.
+// (C) Copyright Thomas Witt 2002.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright David Abrahams, Vicente Botet 2009.
+// (C) Copyright Ion Gaztanaga 2009-2012.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Douglas Gregor 2010
+
+
+====================COPYRIGHT====================
+// (C) Copyright Francois Faure, iMAGIS-GRAVIR / UJF, 2001.
+
+
+====================COPYRIGHT====================
+// (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
+// (C) Copyright Peter Dimov 2001, 2002, 2003
+// (C) Copyright Ion Gaztanaga 2006-2012.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Howard Hinnant 2007-2010. Distributed under the Boost
+// Software License, Version 1.0. (see http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2006-2014
+// (C) Copyright Microsoft Corporation 2014
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2006-2013
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2006-2015
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2009-2013.
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2010-2013
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2013-2013
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2013-2014
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2004-2015. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2005-2013.
+// (C) Copyright Gennaro Prota 2003 - 2004.
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2005-2014. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2005-2015. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2005-2016.
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2005.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands.
-
-
-====================COPYRIGHT====================
-// Author: Gerald Evenden
-// Copyright (c) 1995, Gerald Evenden
-
-
-====================COPYRIGHT====================
-// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
-// Copyright (C) 2000 Gary Powell (gary.powell@sierra.com)
-
-
-====================COPYRIGHT====================
-// Copyright (C) 1999-2001 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
-// Gary Powell (gwpowell@hotmail.com)
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2000 Gary Powell (gwpowell@hotmail.com)
-// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2000 Gary Powell (powellg@amazon.com)
-// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2000 Stephen Cleary
-// Copyright (C) 2008 Ion Gaztanaga
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2000, 2001 Stephen Cleary
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2000, 2001 Stephen Cleary
-// Copyright (C) 2010 Paul A. Bristow added Doxygen comments.
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2001 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2001 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
-// 2001 Gary Powell (gary.powell@sierra.com)
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2001 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
-// Copyright (C) 2001 Gary Powell (gary.powell@sierra.com)
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2001 Jeremy Siek, Douglas Gregor, Brian Osman
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2001 Vladimir Prus <ghost@cs.msu.su>
-// Copyright (C) 2001 Jeremy Siek <jsiek@cs.indiana.edu>
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2001-2003
-// Mac Murrett
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2001-2003
-// William E. Kempf
-// (C) Copyright 2008-9 Anthony Williams
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2001-2003
-// William E. Kempf
-// Copyright (C) 2007-9 Anthony Williams
-// (C) Copyright 2011-2012 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2001-2003
-// William E. Kempf
-// Copyright (C) 2011-2013 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2002 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
-// Copyright (C) 2002 Gary Powell (gwpowell@hotmail.com)
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2002-2003
-// David Moore, William E. Kempf
-// Copyright (C) 2007-8 Anthony Williams
-// (C) Copyright 2013 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2002-2006 Marcin Kalicinski
-// Copyright (C) 2007 Alexey Baskakov
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2002-2006 Marcin Kalicinski
-// Copyright (C) 2009 Sebastian Redl
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2002-2006 Marcin Kalicinski
-// Copyright (C) 2013 Sebastian Redl
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2002-2006 Marcin Kalicinski
-// Copyright (C) 2015 Sebastian Redl
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2002-2007 Marcin Kalicinski
-// Copyright (C) 2007 Alexey Baskakov
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2003, 2008 Fernando Luis Cacciola Carballal.
-// Copyright (C) 2014 - 2017 Andrzej Krzemienski.
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2003, 2008 Fernando Luis Cacciola Carballal.
-// Copyright (C) 2014-2016 Andrzej Krzemienski.
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2003, 2008 Fernando Luis Cacciola Carballal.
-// Copyright (C) 2015 - 2017 Andrzej Krzemienski.
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2003, 2008 Fernando Luis Cacciola Carballal.
-// Copyright (C) 2015 Andrzej Krzemienski.
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2003, 2008 Fernando Luis Cacciola Carballal.
-// Copyright (C) 2016 Andrzej Krzemienski
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2003, Fernando Luis Cacciola Carballal.
-// Copyright (C) 2007, Tobias Schwinger.
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2003, Fernando Luis Cacciola Carballal.
-// Copyright (C) 2014, 2015 Andrzej Krzemienski.
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard.
-// Copyright (C) 2005-2008 Daniel James.
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard.
-// Copyright (C) 2005-2011 Daniel James.
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard.
-// Copyright (C) 2005-2016 Daniel James
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2010 Steven Watanabe
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2003-2009 Matthias Christian Schabel
-// Copyright (C) 2007-2009 Steven Watanabe
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2004 Arkadiy Vertleyb
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2004 Arkadiy Vertleyb
-// Copyright (C) 2004 Peder Holt
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2004 Arkadiy Vertleyb
-// Copyright (C) 2005 Peder Holt
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2004, 2005 Arkadiy Vertleyb
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2004-2006 The Trustees of Indiana University.
-// Copyright (C) 2002 Brad King and Douglas Gregor
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2004-2006 The Trustees of Indiana University.
-// Copyright (C) 2007 Douglas Gregor
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2004-2008 The Trustees of Indiana University.
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2004-2008 The Trustees of Indiana University.
-// Copyright (C) 2007 Douglas Gregor
-// Copyright (C) 2007 Matthias Troyer <troyer@boost-consulting.com>
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2004-2008 The Trustees of Indiana University.
-// Copyright (C) 2007 Douglas Gregor <doug.gregor@gmail.com>
-// Copyright (C) 2007 Matthias Troyer <troyer@boost-consulting.com>
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2004-2009 The Trustees of Indiana University.
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2005 Arkadiy Vertleyb
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2005 Arkadiy Vertleyb, Peder Holt.
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2005 Douglas Gregor.
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2005 Eric Niebler
-// Copyright (C) 2014 Pieter Bastiaan Ober (Integricom).
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2006-2012
+// (C) Copyright Markus Schoepflin 2007
+// (C) Copyright Bryce Lelbach 2010
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2006-2014. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2007-2012. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2007-2013. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2007-2014. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2008
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2008-2012. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2008-2013. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2008-2015. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2009-2012. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2009. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2010-2012.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2010-2016.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2011-2012. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2011-2013. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2011-2014. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2012-2012. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2012-2013. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2012-2015.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2012-2016.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2014-2014.
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2014-2015. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2014-2017. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2015-2015. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2015-2016.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2016-2016. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2017-2017. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2017-2018.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Jens Maurer 2001.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Jeremy Siek 2000.
+// Copyright 2002 The Trustees of Indiana University.
+
+
+====================COPYRIGHT====================
+// (C) Copyright Jeremy Siek 2000.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Jeremy Siek 2001.
+// Distributed under the Boost Software License, Version 1.0. (See accompany-
+// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Jeremy Siek, 2001.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Joaquin M Lopez Munoz 2006-2013
+// (C) Copyright Ion Gaztanaga 2014-2014
+
+
+====================COPYRIGHT====================
+// (C) Copyright Jonathan Turkanis 2004-2005.
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Jorge Lodos 2008.
+// (C) Copyright Jonathan Turkanis 2003.
+// (C) Copyright Craig Henderson 2002. 'boost/memmap.hpp' from sandbox
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Michael Glassford 2004.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// (C) Copyright Milan Svoboda 2008.
+// Originally developed under the fusecompress project.
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Olaf Krzikalla 2004-2006.
+// (C) Copyright Ion Gaztanaga 2006-2014
+
+
+====================COPYRIGHT====================
+// (C) Copyright Orson Peters 2017.
+// (C) Copyright Ion Gaztanaga 2017-2018.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Pablo Halpern 2009. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Peter Dimov 2001, 2002
+// (C) Copyright Ion Gaztanaga 2006-2012. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Peter Dimov 2008.
+// (C) Copyright Ion Gaztanaga 2013-2013. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Peter Dimov and Multi Media Ltd. 2001, 2002, 2003
+// (C) Copyright Ion Gaztanaga 2006. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Peter Dimov and Multi Media Ltd. 2001, 2002, 2003
+// (C) Copyright Peter Dimov 2004-2005
+// (C) Copyright Ion Gaztanaga 2006-2012. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ronald Garcia 2002. Permission to copy, use, modify, sell and
+// distribute this software is granted provided this copyright notice appears
+// in all copies. This software is provided "as is" without express or implied
+// warranty, and with no claim as to its suitability for any purpose.
+
+
+====================COPYRIGHT====================
+// (C) Copyright Stephen Cleary 2000
+// (C) Copyright Ion Gaztanaga 2015-2017.
+
+
+====================COPYRIGHT====================
+// (C) Copyright Stephen Cleary 2000.
+// (C) Copyright Ion Gaztanaga 2007-2013.
+
+
+====================COPYRIGHT====================
+// (C) Copyright Thorsten Ottosen 2002-2003. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Thorsten Ottosen 2005
+// (C) Copyright Howard Hinnant 2004
+// (C) Copyright Jonathan Turkanis 2004
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Tobias Schwinger
+
+
+====================COPYRIGHT====================
+// (C) Copyright Toon Knapen 2001.
+// (C) Copyright David Abrahams 2003.
+// (C) Copyright Roland Richter 2003.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Vicente J. Botet Escriba 20010.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or
+
+
+====================COPYRIGHT====================
+// (C) Copyright Vicente J. Botet Escriba 2008-2009,2012. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Vicente J. Botet Escriba 2010.
+// Distributed under the Boost
+// Software License, Version 1.0.
+
+
+====================COPYRIGHT====================
+// (C) Copyright Vicente J. Botet Escriba 2013-2014. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Vicente J. Botet Escriba 2013-2017. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Vicente J. Botet Escriba 2014-2015. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Vicente J. Botet Escriba 2014. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (c) 2008 Gordon Woodhull
// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2005 Igor Chesnokov, mailto:ichesnokov@gmail.com (VC 6.5,VC 7.1 + counter code)
-// Copyright (C) 2005-2007 Peder Holt (VC 7.0 + framework)
-// Copyright (C) 2006 Steven Watanabe (VC 8.0)
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2005, 2006 Douglas Gregor <doug.gregor -at- gmail.com>.
-// Copyright (C) 2016 K. Noel Belcourt <kbelco -at- sandia.gov>.
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2005, Fernando Luis Cacciola Carballal.
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2005-2006 Alain Miniussi <alain.miniussi -at- oca.eu>.
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2005-2006 Douglas Gregor <doug.gregor -at- gmail.com>.
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2005-2006 Douglas Gregor <doug.gregor@gmail.com>.
-// Copyright (C) 2004 The Trustees of Indiana University
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2005-2006 The Trustees of Indiana University.
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2005-2008 The Trustees of Indiana University.
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2005-2009 Jongsoo Park <jongsoo.park -at- gmail.com>
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2005-2010 The Trustees of Indiana University.
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2006 Tiago de Paula Peixoto <tiago@forked.de>
-// Copyright (C) 2004 The Trustees of Indiana University.
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2006 Arkadiy Vertleyb
-// Copyright (C) 2017 Daniela Engert
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2006 Douglas Gregor <doug.gregor -at- gmail.com>.
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2006 The Trustees of Indiana University.
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2006, 2009 Marcin Kalicinski
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2006-2009 Dmitry Bufistov and Andrey Parfenov
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2006-2009, 2012 Alexander Nasonov
-// Copyright (C) 2012 Lorenzo Caminiti
-// Distributed under the Boost Software License, Version 1.0
-// (see accompanying file LICENSE_1_0.txt or a copy at
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2006-2010 The Trustees of Indiana University.
-
-
-====================COPYRIGHT====================
+// (See accompanying file LICENSEmpl::_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (c) Copyright Andreas Huber Doenni 2002-2005, Eric Niebler 2006
+// Distributed under the Boost Software License, Version 1.0. (See accompany-
+// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (c) Copyright Jeremy Siek and John R. Bandela 2001.
+
+
+====================COPYRIGHT====================
+// (c) Copyright John Maddock 2003
+
+
+====================COPYRIGHT====================
+// (c) Copyright Juergen Hunold 2008
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (c) Copyright Raffi Enficiaud 2017.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands.
+
+
+====================COPYRIGHT====================
+// Author: Gerald Evenden
+// Copyright (c) 1995, Gerald Evenden
+
+
+====================COPYRIGHT====================
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
+// Copyright (C) 2000 Gary Powell (gary.powell@sierra.com)
+
+
+====================COPYRIGHT====================
+// Copyright (C) 1999-2001 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
+// Gary Powell (gwpowell@hotmail.com)
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2000 Gary Powell (gwpowell@hotmail.com)
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2000 Gary Powell (powellg@amazon.com)
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2000 Stephen Cleary
+// Copyright (C) 2008 Ion Gaztanaga
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2000, 2001 Stephen Cleary
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2000, 2001 Stephen Cleary
+// Copyright (C) 2010 Paul A. Bristow added Doxygen comments.
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2001 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2001 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
+// 2001 Gary Powell (gary.powell@sierra.com)
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2001 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
+// Copyright (C) 2001 Gary Powell (gary.powell@sierra.com)
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2001 Jeremy Siek, Douglas Gregor, Brian Osman
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2001 Vladimir Prus <ghost@cs.msu.su>
+// Copyright (C) 2001 Jeremy Siek <jsiek@cs.indiana.edu>
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2001-2003
+// Mac Murrett
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2001-2003
+// William E. Kempf
+// (C) Copyright 2008-9 Anthony Williams
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2001-2003
+// William E. Kempf
+// Copyright (C) 2007-9 Anthony Williams
+// (C) Copyright 2011-2012 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2001-2003
+// William E. Kempf
+// Copyright (C) 2011-2013 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2002 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
+// Copyright (C) 2002 Gary Powell (gwpowell@hotmail.com)
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2002-2003
+// David Moore, William E. Kempf
+// Copyright (C) 2007-8 Anthony Williams
+// (C) Copyright 2013 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2002-2006 Marcin Kalicinski
+// Copyright (C) 2007 Alexey Baskakov
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2002-2006 Marcin Kalicinski
+// Copyright (C) 2009 Sebastian Redl
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2002-2006 Marcin Kalicinski
+// Copyright (C) 2013 Sebastian Redl
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2002-2006 Marcin Kalicinski
+// Copyright (C) 2015 Sebastian Redl
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2002-2007 Marcin Kalicinski
+// Copyright (C) 2007 Alexey Baskakov
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2003, 2008 Fernando Luis Cacciola Carballal.
+// Copyright (C) 2014 - 2017 Andrzej Krzemienski.
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2003, 2008 Fernando Luis Cacciola Carballal.
+// Copyright (C) 2014-2016 Andrzej Krzemienski.
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2003, 2008 Fernando Luis Cacciola Carballal.
+// Copyright (C) 2015 - 2017 Andrzej Krzemienski.
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2003, 2008 Fernando Luis Cacciola Carballal.
+// Copyright (C) 2015 Andrzej Krzemienski.
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2003, 2008 Fernando Luis Cacciola Carballal.
+// Copyright (C) 2016 Andrzej Krzemienski
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2003, Fernando Luis Cacciola Carballal.
+// Copyright (C) 2007, Tobias Schwinger.
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2003, Fernando Luis Cacciola Carballal.
+// Copyright (C) 2014, 2015 Andrzej Krzemienski.
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard.
+// Copyright (C) 2005-2008 Daniel James.
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard.
+// Copyright (C) 2005-2011 Daniel James.
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard.
+// Copyright (C) 2005-2016 Daniel James
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2003-2008 Matthias Christian Schabel
+// Copyright (C) 2007-2008 Steven Watanabe
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2003-2008 Matthias Christian Schabel
+// Copyright (C) 2007-2010 Steven Watanabe
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2003-2008 Matthias Christian Schabel
+// Copyright (C) 2008 Steven Watanabe
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2003-2009 Matthias Christian Schabel
+// Copyright (C) 2007-2009 Steven Watanabe
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2004 Arkadiy Vertleyb
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2004 Arkadiy Vertleyb
+// Copyright (C) 2004 Peder Holt
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2004 Arkadiy Vertleyb
+// Copyright (C) 2005 Peder Holt
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2004, 2005 Arkadiy Vertleyb
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2004-2006 The Trustees of Indiana University.
+// Copyright (C) 2002 Brad King and Douglas Gregor
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2004-2006 The Trustees of Indiana University.
// Copyright (C) 2007 Douglas Gregor
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2007 Douglas Gregor
-// Copyright (C) 2007 Hartmut Kaiser
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2007 Douglas Gregor and Matthias Troyer
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2007 Marcin Kalicinski
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2007 Matthias Troyer
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2007 Peder Holt
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2007 The Trustees of Indiana University.
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2007 Trustees of Indiana University
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2007, 2008 Steven Watanabe, Joseph Gauterin, Niels Dekker
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2008 Eric Niebler.
-// Copyright (C) 2012 Pieter Bastiaan Ober (Integricom).
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2004-2008 The Trustees of Indiana University.
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2004-2008 The Trustees of Indiana University.
+// Copyright (C) 2007 Douglas Gregor
+// Copyright (C) 2007 Matthias Troyer <troyer@boost-consulting.com>
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2004-2008 The Trustees of Indiana University.
+// Copyright (C) 2007 Douglas Gregor <doug.gregor@gmail.com>
+// Copyright (C) 2007 Matthias Troyer <troyer@boost-consulting.com>
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2004-2009 The Trustees of Indiana University.
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2005 Arkadiy Vertleyb
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2005 Arkadiy Vertleyb, Peder Holt.
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2005 Douglas Gregor.
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2005 Eric Niebler
+// Copyright (C) 2014 Pieter Bastiaan Ober (Integricom).
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2005 Igor Chesnokov, mailto:ichesnokov@gmail.com (VC 6.5,VC 7.1 + counter code)
+// Copyright (C) 2005-2007 Peder Holt (VC 7.0 + framework)
+// Copyright (C) 2006 Steven Watanabe (VC 8.0)
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2005, 2006 Douglas Gregor <doug.gregor -at- gmail.com>.
+// Copyright (C) 2016 K. Noel Belcourt <kbelco -at- sandia.gov>.
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2005, Fernando Luis Cacciola Carballal.
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2005-2006 Alain Miniussi <alain.miniussi -at- oca.eu>.
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2005-2006 Douglas Gregor <doug.gregor -at- gmail.com>.
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2005-2006 Douglas Gregor <doug.gregor@gmail.com>.
+// Copyright (C) 2004 The Trustees of Indiana University
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2005-2006 The Trustees of Indiana University.
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2005-2008 The Trustees of Indiana University.
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2005-2009 Jongsoo Park <jongsoo.park -at- gmail.com>
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2005-2010 The Trustees of Indiana University.
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2006 Tiago de Paula Peixoto <tiago@forked.de>
+// Copyright (C) 2004 The Trustees of Indiana University.
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2006 Arkadiy Vertleyb
+// Copyright (C) 2017 Daniela Engert
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2006 Douglas Gregor <doug.gregor -at- gmail.com>.
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2006 The Trustees of Indiana University.
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2006, 2009 Marcin Kalicinski
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2006-2009 Dmitry Bufistov and Andrey Parfenov
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2006-2009, 2012 Alexander Nasonov
+// Copyright (C) 2012 Lorenzo Caminiti
+// Distributed under the Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2006-2010 The Trustees of Indiana University.
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2007 Douglas Gregor
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2007 Douglas Gregor
+// Copyright (C) 2007 Hartmut Kaiser
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2007 Douglas Gregor and Matthias Troyer
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2007 Marcin Kalicinski
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2007 Matthias Troyer
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2007 Peder Holt
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2007 The Trustees of Indiana University.
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2007 Trustees of Indiana University
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2007, 2008 Steven Watanabe, Joseph Gauterin, Niels Dekker
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2008 Eric Niebler.
+// Copyright (C) 2012 Pieter Bastiaan Ober (Integricom).
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2008-2011 Daniel James.
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2008-2016 Daniel James.
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2008-2018 Lorenzo Caminiti
+// Distributed under the Boost Software License, Version 1.0 (see accompanying
+// file LICENSE_1_0.txt or a copy at http://www.boost.org/LICENSE_1_0.txt).
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2009 Andrew Sutton
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2009-2012 Lorenzo Caminiti
+// Distributed under the Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2010 Peder Holt
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2010 Tim Blechmann
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2010-2011 Tim Blechmann
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2011 Júlio Hoffimann.
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2011 Tim Blechmann
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2011 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2012 Flavio De Lorenzi (fdlorenzi@gmail.com)
+// Copyright (C) 2013 Jakob Lykke Andersen, University of Southern Denmark (jlandersen@imada.sdu.dk)
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2012 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2012-2013 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2013 Eurodecision
+// Authors: Guillaume Pinot
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2013 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2013,2014 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2013-2014 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2014 Erik Erlandson
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2014 Ian Forbed
+// Copyright (C) 2014-2015 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2014 Ian Forbed
+// Copyright (C) 2014-2017 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2014, Andrzej Krzemienski.
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2015 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2015-2016 Andrzej Krzemienski.
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2017
+// Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2017 Andrzej Krzemienski.
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2017 Michel Morin.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2000 David Abrahams.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2008-2011 Daniel James.
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2008-2016 Daniel James.
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2008-2018 Lorenzo Caminiti
-// Distributed under the Boost Software License, Version 1.0 (see accompanying
-// file LICENSE_1_0.txt or a copy at http://www.boost.org/LICENSE_1_0.txt).
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2009 Andrew Sutton
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2009-2012 Lorenzo Caminiti
-// Distributed under the Boost Software License, Version 1.0
-// (see accompanying file LICENSE_1_0.txt or a copy at
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2010 Peder Holt
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2010 Tim Blechmann
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2010-2011 Tim Blechmann
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2011 Júlio Hoffimann.
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2011 Tim Blechmann
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2011 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2012 Flavio De Lorenzi (fdlorenzi@gmail.com)
-// Copyright (C) 2013 Jakob Lykke Andersen, University of Southern Denmark (jlandersen@imada.sdu.dk)
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2012 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2012-2013 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2013 Eurodecision
-// Authors: Guillaume Pinot
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2013 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2013,2014 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2013-2014 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2014 Erik Erlandson
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2014 Ian Forbed
-// Copyright (C) 2014-2015 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2014 Ian Forbed
-// Copyright (C) 2014-2017 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2014, Andrzej Krzemienski.
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2015 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2015-2016 Andrzej Krzemienski.
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2017
-// Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2017 Andrzej Krzemienski.
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2017 Michel Morin.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2000 David Abrahams.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright (c) 1995, 2007-2015 Barend Gehrels, Amsterdam, the Netherlands.
-// Copyright (c) 1995 Maarten Hilferink, Amsterdam, the Netherlands
-
-
-====================COPYRIGHT====================
-// Copyright (c) 1996-1998
-// Silicon Graphics Computer Systems, Inc.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2000 Cadenza New Zealand Ltd
-// Distributed under the Boost Software License, Version 1.0. (See accompany-
-// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2000, Frank Warmerdam
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001 Ronald Garcia, Indiana University (garcia@osl.iu.edu)
-// Andrew Lumsdaine, Indiana University (lums@osl.iu.edu).
-// Distributed under the Boost Software License, Version 1.0. (See
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2001, Thomas Flemming, tf@ttqv.com
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2002 Eric Friedman, Itay Maman
-// Copyright (c) 2016-2017 Antony Polukhin
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2002-2003
-// Eric Friedman
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2002-2003
-// Eric Friedman, Itay Maman
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2002-2003 Eric Friedman
-// Copyright (c) 2014-2017 Antony Polukhin
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2002-2003 Eric Friedman, Itay Maman
-// Copyright (c) 2012-2016 Antony Polukhin
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2003
-// Eric Friedman
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2003
-// Eric Friedman, Itay Maman
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2003 Gerald I. Evenden
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2003 Eric Friedman
-// Copyright (c) 2015-2016 Antony Polukhin
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2003 Eric Friedman
-// Copyright (c) 2016 Antony Polukhin
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2003 Eric Friedman, Itay Maman
-// Copyright (c) 2013-2016 Antony Polukhin
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2003 Eric Friedman, Itay Maman
-// Copyright (c) 2014 Antony Polukhin
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2003, 2006 Gerald I. Evenden
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2003-2008 Jan Gaspar
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2003-2008 Jan Gaspar
-// Copyright (c) 2013 Paul A. Bristow // Doxygen comments changed.
-// Copyright (c) 2013 Antony Polukhin // Move semantics implementation.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2003-2017 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2005 Stefan Arentz (stefan at soze dot com)
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Roelof Naude (roelof.naude at gmail dot com)
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2011 Boris Schaeling (boris@highscore.de)
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2014 Oliver Kowalke (oliver dot kowalke at gmail dot com)
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2004 Gerald I. Evenden
-// Copyright (c) 2012 Martin Raspaud
-// See also (section 4.4.3.2):
-// http://www.eumetsat.int/en/area4/msg/news/us_doc/cgms_03_26.pdf
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2004 Jonathan Brandmeyer
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2004 Kristopher Beevers
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2005 Aaron Windsor
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com
-// Copyright (c) 2005-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2006 Johan Rade
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2006, 2007 Julio M. Merino Vidal
-// Copyright (c) 2008 Ilya Sokolov, Boris Schaeling
-// Copyright (c) 2009 Boris Schaeling
-// Copyright (c) 2010 Felipe Tanus, Boris Schaeling
-// Copyright (c) 2011 Jeff Flinn, Boris Schaeling
-// Copyright (c) 2012 Boris Schaeling
-// Copyright (c) 2016 Klemens D. Morgenstern
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2006, 2007 Julio M. Merino Vidal
-// Copyright (c) 2008 Ilya Sokolov, Boris Schaeling
-// Copyright (c) 2009 Boris Schaeling
-// Copyright (c) 2010 Felipe Tanus, Boris Schaeling
-// Copyright (c) 2011, 2012 Jeff Flinn, Boris Schaeling
-// Copyright (c) 2016 Klemens D. Morgenstern
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2006-2007 Matias Capeletto
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/)
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2007-2011 Barend Gehrels, Amsterdam, the Netherlands.
-// Copyright (c) 2008-2011 Bruno Lalande, Paris, France.
-// Copyright (c) 2009-2011 Mateusz Loskot, London, UK.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
-// Copyright (c) 2008-2012 Bruno Lalande, Paris, France.
-// Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
-// Copyright (c) 2014 Samuel Debionne, Grenoble, France.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
-// Copyright (c) 2008-2012 Bruno Lalande, Paris, France.
-// Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
-// Copyright (c) 2014-2018 Adam Wulkiewicz, Lodz, Poland.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
-// Copyright (c) 2008-2012 Bruno Lalande, Paris, France.
-// Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
-// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2007-2013 Barend Gehrels, Amsterdam, the Netherlands.
-// Copyright (c) 2008-2013 Bruno Lalande, Paris, France.
-// Copyright (c) 2009-2013 Mateusz Loskot, London, UK.
-// Copyright (c) 2013-2017 Adam Wulkiewicz, Lodz, Poland.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
-// Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
-// Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
-// Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
-// Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
-// Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2007-2015 Barend Gehrels, Amsterdam, the Netherlands.
-// Copyright (c) 2008-2015 Bruno Lalande, Paris, France.
-// Copyright (c) 2009-2015 Mateusz Loskot, London, UK.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2007-2015 Barend Gehrels, Amsterdam, the Netherlands.
-// Copyright (c) 2008-2015 Bruno Lalande, Paris, France.
-// Copyright (c) 2009-2015 Mateusz Loskot, London, UK.
-// Copyright (c) 2013-2015 Adam Wulkiewicz, Lodz, Poland.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2007-2015 Barend Gehrels, Amsterdam, the Netherlands.
-// Copyright (c) 2008-2015 Bruno Lalande, Paris, France.
-// Copyright (c) 2009-2015 Mateusz Loskot, London, UK.
-// Copyright (c) 2014-2015 Adam Wulkiewicz, Lodz, Poland.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2007-2015 Barend Gehrels, Amsterdam, the Netherlands.
-// Copyright (c) 2008-2015 Bruno Lalande, Paris, France.
-// Copyright (c) 2009-2015 Mateusz Loskot, London, UK.
-// Copyright (c) 2014-2015 Samuel Debionne, Grenoble, France.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2007-2015 Barend Gehrels, Amsterdam, the Netherlands.
-// Copyright (c) 2008-2015 Bruno Lalande, Paris, France.
-// Copyright (c) 2009-2015 Mateusz Loskot, London, UK.
-// Copyright (c) 2014-2017 Adam Wulkiewicz, Lodz, Poland.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2007-2016 Barend Gehrels, Amsterdam, the Netherlands.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2007-2017 Barend Gehrels, Amsterdam, the Netherlands.
-// Copyright (c) 2008-2017 Bruno Lalande, Paris, France.
-// Copyright (c) 2009-2017 Mateusz Loskot, London, UK.
-// Copyright (c) 2014-2017 Adam Wulkiewicz, Lodz, Poland.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2008 Gerald I. Evenden
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2008 Federico J. Fernandez.
-// Copyright (c) 2011-2018 Adam Wulkiewicz, Lodz, Poland.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2008-2009 Ben Hanson (http://www.benhanson.net/)
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2008-2012 Bruno Lalande, Paris, France.
-// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands.
-// Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
-// Copyright (c) 2008-2014 Barend Gehrels, Amsterdam, the Netherlands.
-// Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2009 Ben Hanson (http://www.benhanson.net/)
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2009-2012 Barend Gehrels, Amsterdam, the Netherlands.
-// Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2009-2015 Barend Gehrels, Amsterdam, the Netherlands.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2009-2016 Vladimir Batov.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2010 Alfredo Correa
-// Copyright (c) 2010-2012 Barend Gehrels, Amsterdam, the Netherlands.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2010 Alfredo Correa
-// Copyright (c) 2010-2012 Barend Gehrels, Amsterdam, the Netherlands.
-// Copyright (c) 2016 Norbert Wenzel
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2011
-// Antony Polukhin
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2011, 2012 Martin Lambers <marlam@marlam.de>
-// The QSC projection was introduced in:
-// [OL76]
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
-// Copyright (c) 2011-2012 Bruno Lalande, Paris, France.
-// Copyright (c) 2011-2012 Mateusz Loskot, London, UK.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
-// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2011-2015 Adam Wulkiewicz, Lodz, Poland.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2011-2015 Akira Takahashi
-// Copyright (c) 2011-2015 Barend Gehrels, Amsterdam, the Netherlands.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2011-2015 Barend Gehrels, Amsterdam, the Netherlands.
-// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2011-2016 Adam Wulkiewicz, Lodz, Poland.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2011-2017 Adam Wulkiewicz, Lodz, Poland.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2011-2018 Adam Wulkiewicz, Lodz, Poland.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2012 Barend Gehrels, Amsterdam, the Netherlands.
-// Copyright (c) 2012 Bruno Lalande, Paris, France.
-// Copyright (c) 2012 Mateusz Loskot, London, UK.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2012-2013 Adam Wulkiewicz, Lodz, Poland.
-// Copyright (c) 2011-2013 Andrew Hundt.
-// Copyright (c) 2013-2014 Ion Gaztanaga
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2012-2014 Barend Gehrels, Amsterdam, the Netherlands.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2012-2014 Barend Gehrels, Amsterdam, the Netherlands.
-// Copyright (c) 2012-2014 Bruno Lalande, Paris, France.
-// Copyright (c) 2012-2014 Mateusz Loskot, London, UK.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2012-2015 Adam Wulkiewicz, Lodz, Poland.
-// Copyright (c) 2011-2013 Andrew Hundt.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2012-2015 Barend Gehrels, Amsterdam, the Netherlands.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2013 Barend Gehrels, Amsterdam, the Netherlands.
-// Copyright (c) 2013 Bruno Lalande, Paris, France.
-// Copyright (c) 2013 Mateusz Loskot, London, UK.
-// Copyright (c) 2013 Adam Wulkiewicz, Lodz, Poland.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2013 John Maddock, Antony Polukhin
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2013 Kyle Lutz <kyle.r.lutz@gmail.com>
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2013-2014 Kyle Lutz <kyle.r.lutz@gmail.com>
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2013-2015 Kyle Lutz <kyle.r.lutz@gmail.com>
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2013-2017 Antony Polukhin
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2013-2017 Vinnie Falco (vinnie dot falco at gmail dot com)
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2014 Barend Gehrels, Amsterdam, the Netherlands.
-// Copyright (c) 2014 Bruno Lalande, Paris, France.
-// Copyright (c) 2014 Mateusz Loskot, London, UK.
-// Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2014 Glen Joseph Fernandes
-// glenfe at live dot com
-// Copyright (c) 2014 Riccardo Marcangelo
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2014 Mageswaran.D <mageswaran1989@gmail.com>
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2014 Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2014 Roshan <thisisroshansmail@gmail.com>
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2014, Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2014-2015 Antony Polukhin
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2014-2015 Barend Gehrels, Amsterdam, the Netherlands.
-// Copyright (c) 2014-2015 Bruno Lalande, Paris, France.
-// Copyright (c) 2014-2015 Mateusz Loskot, London, UK.
-// Copyright (c) 2014-2015 Adam Wulkiewicz, Lodz, Poland.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2014-2015, Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2014-2016 Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2014-2017 Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2014-2017, Oracle and/or its affiliates.
-// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2014-2018, Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2015 Barend Gehrels, Amsterdam, the Netherlands.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2015 Jakub Pola <jakub.pola@gmail.com>
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2015 Jakub Szuppe <j.szuppe@gmail.com>
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2015 Muhammad Junaid Muzammil <mjunaidmuzammil@gmail.com>
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2015 Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2015 Seth Heeren
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2015, Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2015-2016 Barend Gehrels, Amsterdam, the Netherlands.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2015-2016 Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2015-2016 Vinnie Falco (vinnie dot falco at gmail dot com)
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2015-2017 Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2015-2017, Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2015-2018 Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2016 Jakub Szuppe <j.szuppe@gmail.com>
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2016 Klemens D. Morgenstern
-// Copyright (c) 2008 Beman Dawes
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2016 Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2016, Oracle and/or its affiliates.
-// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2016-2017 Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2016-2017 Vinnie Falco (vinnie dot falco at gmail dot com)
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2016-2017, Oracle and/or its affiliates.
-// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2016-2018 Oracle and/or its affiliates.
-// Contributed and/or modified by Vissarion Fisikopoulos, on behalf of Oracle
-// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2017 Barend Gehrels, Amsterdam, the Netherlands.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2017 Denis Demidov <dennis.demidov@gmail.com>
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2017 Klemens D. Morgenstern
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2017 Oracle and/or its affiliates.
-// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2017 Vinnie Falco (vinnie dot falco at gmail dot com)
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2017, Oracle and/or its affiliates.
-// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2017-2017 Barend Gehrels, Amsterdam, the Netherlands.
-// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2017-2018, Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2018 Adam Wulkiewicz, Lodz, Poland.
-
-
-====================COPYRIGHT====================
-// Copyright (c) Aaron Windsor 2007
-
-
-====================COPYRIGHT====================
-// Copyright (c) Antony Polukhin, 2012-2016.
-
-
-====================COPYRIGHT====================
-// Copyright (c) Antony Polukhin, 2012-2018.
-
-
-====================COPYRIGHT====================
-// Copyright (c) Antony Polukhin, 2013-2014.
-
-
-====================COPYRIGHT====================
-// Copyright (c) Antony Polukhin, 2013-2018.
-
-
-====================COPYRIGHT====================
-// Copyright (c) Chris Glover, 2016.
-
-
-====================COPYRIGHT====================
-// Copyright (c) David Abrahams 2001.
-// Copyright (c) Jeremy Siek 2001-2003.
-// Copyright (c) Thomas Witt 2002.
-
-
-====================COPYRIGHT====================
-// Copyright (c) Intel Corporation 2008.
-// Copyright (c) 2008-2012 Simonson Lucanus.
-// Copyright (c) 2012-2012 Andrii Sydorchuk.
-
-
-====================COPYRIGHT====================
-// Copyright (c) Jeremy Siek 2001
-// Copyright (c) Douglas Gregor 2004
-
-
-====================COPYRIGHT====================
-// Copyright (c) Jeremy Siek 2001, Marc Wintermantel 2002
-
-
-====================COPYRIGHT====================
-// Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
-// Copyright (C) Vladimir Prus 2003
-// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek
-
-
-====================COPYRIGHT====================
-// Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
-// Copyright 2003 Bruce Barr
-// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek
-
-
-====================COPYRIGHT====================
-// Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
-// Copyright 2004 The Trustees of Indiana University.
-// Copyright 2007 University of Karlsruhe
-// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek, Douglas Gregor,
-// Jens Mueller
-
-
-====================COPYRIGHT====================
-// Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
-// Copyright 2004, 2005 Trustees of Indiana University
-// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek,
-// Doug Gregor, D. Kevin McGrath
-
-
-====================COPYRIGHT====================
-// Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
-// Copyright 2006 The Trustees of Indiana University.
-// Copyright (C) 2001 Vladimir Prus <ghost@cs.msu.su>
-// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek, Douglas Gregor
-
-
-====================COPYRIGHT====================
-// Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
-// Copyright 2009 Trustees of Indiana University.
-// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek, Michael Hansen
-
-
-====================COPYRIGHT====================
-// Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
-// Copyright 2010 Thomas Claveirole
-// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek, Thomas Claveirole
-
-
-====================COPYRIGHT====================
-// Copyright 1997-2001 University of Notre Dame.
-// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek
-
-
-====================COPYRIGHT====================
-// Copyright 2000 John Maddock (john@johnmaddock.co.uk)
-// Copyright 2000 Jeremy Siek (jsiek@lsc.nd.edu)
-// Copyright 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
-
-
-====================COPYRIGHT====================
-// Copyright 2000 University of Notre Dame.
-// Authors: Jeremy G. Siek, Andrew Lumsdaine, Lie-Quan Lee
-
-
-====================COPYRIGHT====================
-// Copyright 2001 Indiana University
-// Author: Jeremy G. Siek
-
-
-====================COPYRIGHT====================
-// Copyright 2001 Universite Joseph Fourier, Grenoble.
-// Author: Francois Faure
-
-
-====================COPYRIGHT====================
-// Copyright 2001 University of Notre Dame.
-// Copyright 2003 Jeremy Siek
-// Authors: Lie-Quan Lee, Jeremy Siek, and Douglas Gregor
-
-
-====================COPYRIGHT====================
-// Copyright 2001 University of Notre Dame.
-// Copyright 2006 Trustees of Indiana University
-// Authors: Jeremy G. Siek and Douglas Gregor <dgregor@cs.indiana.edu>
-
-
-====================COPYRIGHT====================
-// Copyright 2002 Indiana University.
-// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek
-
-
-====================COPYRIGHT====================
-// Copyright 2002 Marc Wintermantel (wintermantel@even-ag.ch)
-// ETH Zurich, Center of Structure Technologies (www.imes.ethz.ch/st)
-
-
-====================COPYRIGHT====================
-// Copyright 2002 Rensselaer Polytechnic Institute
-
-
-====================COPYRIGHT====================
-// Copyright 2002, 2005 Daryle Walker. Use, modification, and distribution
-// are subject to the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or a copy at <http://www.boost.org/LICENSE_1_0.txt>.)
-
-
-====================COPYRIGHT====================
-// Copyright 2002-2006 Andreas Huber Doenni
-// Distributed under the Boost Software License, Version 1.0. (See accompany-
-// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2002-2007 Andreas Huber Doenni
-// Distributed under the Boost Software License, Version 1.0. (See accompany-
-// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2002-2008 Andreas Huber Doenni
-// Distributed under the Boost Software License, Version 1.0. (See accompany-
-// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2002-2010 Andreas Huber Doenni
-// Distributed under the Boost Software License, Version 1.0. (See accompany-
-// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2003 (c) The Trustees of Indiana University.
-
-
-====================COPYRIGHT====================
-// Copyright 2004 Eric Niebler.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright 2004 The Trustees of Indiana University.
-
-
-====================COPYRIGHT====================
-// Copyright 2004 The Trustees of Indiana University.
-// Copyright 2005 Matthias Troyer.
-// Copyright 2006 Douglas Gregor <doug.gregor -at- gmail.com>.
-
-
-====================COPYRIGHT====================
-// Copyright 2004, 2005 The Trustees of Indiana University.
-
-
-====================COPYRIGHT====================
-// Copyright 2004-2006 The Trustees of Indiana University.
-
-
-====================COPYRIGHT====================
-// Copyright 2004-5 The Trustees of Indiana University.
-// Copyright 2002 Brad King and Douglas Gregor
-
-
-====================COPYRIGHT====================
-// Copyright 2004-9 Trustees of Indiana University
-
-
-====================COPYRIGHT====================
-// Copyright 2005 Alexander Nasonov.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
+
+
+====================COPYRIGHT====================
+// Copyright (c) 1995, 2007-2015 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 1995 Maarten Hilferink, Amsterdam, the Netherlands
+
+
+====================COPYRIGHT====================
+// Copyright (c) 1996-1998
+// Silicon Graphics Computer Systems, Inc.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2000 Cadenza New Zealand Ltd
+// Distributed under the Boost Software License, Version 1.0. (See accompany-
+// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2000, Frank Warmerdam
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001 Ronald Garcia, Indiana University (garcia@osl.iu.edu)
+// Andrew Lumsdaine, Indiana University (lums@osl.iu.edu).
+// Distributed under the Boost Software License, Version 1.0. (See
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2001, Thomas Flemming, tf@ttqv.com
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2002 Eric Friedman, Itay Maman
+// Copyright (c) 2016-2017 Antony Polukhin
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2002-2003
+// Eric Friedman
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2002-2003
+// Eric Friedman, Itay Maman
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2002-2003 Eric Friedman
+// Copyright (c) 2014-2017 Antony Polukhin
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2002-2003 Eric Friedman, Itay Maman
+// Copyright (c) 2012-2016 Antony Polukhin
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2003
+// Eric Friedman
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2003
+// Eric Friedman, Itay Maman
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2003 Gerald I. Evenden
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2003 Eric Friedman
+// Copyright (c) 2015-2016 Antony Polukhin
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2003 Eric Friedman
+// Copyright (c) 2016 Antony Polukhin
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2003 Eric Friedman, Itay Maman
+// Copyright (c) 2013-2016 Antony Polukhin
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2003 Eric Friedman, Itay Maman
+// Copyright (c) 2014 Antony Polukhin
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2003, 2006 Gerald I. Evenden
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2003-2008 Jan Gaspar
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2003-2008 Jan Gaspar
+// Copyright (c) 2013 Paul A. Bristow // Doxygen comments changed.
+// Copyright (c) 2013 Antony Polukhin // Move semantics implementation.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2003-2017 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2005 Stefan Arentz (stefan at soze dot com)
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2008 Roelof Naude (roelof.naude at gmail dot com)
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2011 Boris Schaeling (boris@highscore.de)
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2014 Oliver Kowalke (oliver dot kowalke at gmail dot com)
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2004 Gerald I. Evenden
+// Copyright (c) 2012 Martin Raspaud
+// See also (section 4.4.3.2):
+// http://www.eumetsat.int/en/area4/msg/news/us_doc/cgms_03_26.pdf
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2004 Jonathan Brandmeyer
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2004 Kristopher Beevers
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2005 Aaron Windsor
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com
+// Copyright (c) 2005-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2006 Johan Rade
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2006, 2007 Julio M. Merino Vidal
+// Copyright (c) 2008 Ilya Sokolov, Boris Schaeling
+// Copyright (c) 2009 Boris Schaeling
+// Copyright (c) 2010 Felipe Tanus, Boris Schaeling
+// Copyright (c) 2011 Jeff Flinn, Boris Schaeling
+// Copyright (c) 2012 Boris Schaeling
+// Copyright (c) 2016 Klemens D. Morgenstern
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2006, 2007 Julio M. Merino Vidal
+// Copyright (c) 2008 Ilya Sokolov, Boris Schaeling
+// Copyright (c) 2009 Boris Schaeling
+// Copyright (c) 2010 Felipe Tanus, Boris Schaeling
+// Copyright (c) 2011, 2012 Jeff Flinn, Boris Schaeling
+// Copyright (c) 2016 Klemens D. Morgenstern
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2006-2007 Matias Capeletto
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/)
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2007-2011 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2008-2011 Bruno Lalande, Paris, France.
+// Copyright (c) 2009-2011 Mateusz Loskot, London, UK.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2008-2012 Bruno Lalande, Paris, France.
+// Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
+// Copyright (c) 2014 Samuel Debionne, Grenoble, France.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2008-2012 Bruno Lalande, Paris, France.
+// Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
+// Copyright (c) 2014-2018 Adam Wulkiewicz, Lodz, Poland.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2008-2012 Bruno Lalande, Paris, France.
+// Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
+// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2007-2013 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2008-2013 Bruno Lalande, Paris, France.
+// Copyright (c) 2009-2013 Mateusz Loskot, London, UK.
+// Copyright (c) 2013-2017 Adam Wulkiewicz, Lodz, Poland.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
+// Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
+// Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
+// Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2007-2015 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2008-2015 Bruno Lalande, Paris, France.
+// Copyright (c) 2009-2015 Mateusz Loskot, London, UK.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2007-2015 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2008-2015 Bruno Lalande, Paris, France.
+// Copyright (c) 2009-2015 Mateusz Loskot, London, UK.
+// Copyright (c) 2013-2015 Adam Wulkiewicz, Lodz, Poland.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2007-2015 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2008-2015 Bruno Lalande, Paris, France.
+// Copyright (c) 2009-2015 Mateusz Loskot, London, UK.
+// Copyright (c) 2014-2015 Adam Wulkiewicz, Lodz, Poland.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2007-2015 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2008-2015 Bruno Lalande, Paris, France.
+// Copyright (c) 2009-2015 Mateusz Loskot, London, UK.
+// Copyright (c) 2014-2015 Samuel Debionne, Grenoble, France.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2007-2015 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2008-2015 Bruno Lalande, Paris, France.
+// Copyright (c) 2009-2015 Mateusz Loskot, London, UK.
+// Copyright (c) 2014-2017 Adam Wulkiewicz, Lodz, Poland.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2007-2016 Barend Gehrels, Amsterdam, the Netherlands.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2007-2017 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2008-2017 Bruno Lalande, Paris, France.
+// Copyright (c) 2009-2017 Mateusz Loskot, London, UK.
+// Copyright (c) 2014-2017 Adam Wulkiewicz, Lodz, Poland.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2008 Gerald I. Evenden
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2008 Federico J. Fernandez.
+// Copyright (c) 2011-2018 Adam Wulkiewicz, Lodz, Poland.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2008-2009 Ben Hanson (http://www.benhanson.net/)
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2008-2012 Bruno Lalande, Paris, France.
+// Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
+// Copyright (c) 2008-2014 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2009 Ben Hanson (http://www.benhanson.net/)
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2009-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2009-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2009-2016 Vladimir Batov.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2010 Alfredo Correa
+// Copyright (c) 2010-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2010 Alfredo Correa
+// Copyright (c) 2010-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2016 Norbert Wenzel
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2011
+// Antony Polukhin
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2011, 2012 Martin Lambers <marlam@marlam.de>
+// The QSC projection was introduced in:
+// [OL76]
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2011-2012 Bruno Lalande, Paris, France.
+// Copyright (c) 2011-2012 Mateusz Loskot, London, UK.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2011-2015 Adam Wulkiewicz, Lodz, Poland.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2011-2015 Akira Takahashi
+// Copyright (c) 2011-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2011-2015 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2011-2016 Adam Wulkiewicz, Lodz, Poland.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2011-2017 Adam Wulkiewicz, Lodz, Poland.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2011-2018 Adam Wulkiewicz, Lodz, Poland.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2012 Bruno Lalande, Paris, France.
+// Copyright (c) 2012 Mateusz Loskot, London, UK.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2012-2013 Adam Wulkiewicz, Lodz, Poland.
+// Copyright (c) 2011-2013 Andrew Hundt.
+// Copyright (c) 2013-2014 Ion Gaztanaga
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2012-2014 Barend Gehrels, Amsterdam, the Netherlands.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2012-2014 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2012-2014 Bruno Lalande, Paris, France.
+// Copyright (c) 2012-2014 Mateusz Loskot, London, UK.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2012-2015 Adam Wulkiewicz, Lodz, Poland.
+// Copyright (c) 2011-2013 Andrew Hundt.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2012-2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2013 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2013 Bruno Lalande, Paris, France.
+// Copyright (c) 2013 Mateusz Loskot, London, UK.
+// Copyright (c) 2013 Adam Wulkiewicz, Lodz, Poland.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2013 John Maddock, Antony Polukhin
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2013 Kyle Lutz <kyle.r.lutz@gmail.com>
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2013-2014 Kyle Lutz <kyle.r.lutz@gmail.com>
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2013-2015 Kyle Lutz <kyle.r.lutz@gmail.com>
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2013-2017 Antony Polukhin
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2013-2017 Vinnie Falco (vinnie dot falco at gmail dot com)
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2014 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2014 Bruno Lalande, Paris, France.
+// Copyright (c) 2014 Mateusz Loskot, London, UK.
+// Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2014 Glen Joseph Fernandes
+// glenfe at live dot com
+// Copyright (c) 2014 Riccardo Marcangelo
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2014 Mageswaran.D <mageswaran1989@gmail.com>
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2014 Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2014 Roshan <thisisroshansmail@gmail.com>
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2014-2015 Antony Polukhin
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2014-2015 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2014-2015 Bruno Lalande, Paris, France.
+// Copyright (c) 2014-2015 Mateusz Loskot, London, UK.
+// Copyright (c) 2014-2015 Adam Wulkiewicz, Lodz, Poland.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2014-2015, Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2014-2016 Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2014-2017 Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2014-2017, Oracle and/or its affiliates.
+// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2014-2018, Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2015 Barend Gehrels, Amsterdam, the Netherlands.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2015 Jakub Pola <jakub.pola@gmail.com>
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2015 Jakub Szuppe <j.szuppe@gmail.com>
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2015 Muhammad Junaid Muzammil <mjunaidmuzammil@gmail.com>
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2015 Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2015 Seth Heeren
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2015, Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2015-2016 Barend Gehrels, Amsterdam, the Netherlands.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2015-2016 Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2015-2016 Vinnie Falco (vinnie dot falco at gmail dot com)
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2015-2017 Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2015-2017, Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2015-2018 Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2016 Jakub Szuppe <j.szuppe@gmail.com>
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2016 Klemens D. Morgenstern
+// Copyright (c) 2008 Beman Dawes
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2016 Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2016, Oracle and/or its affiliates.
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2016-2017 Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2016-2017 Vinnie Falco (vinnie dot falco at gmail dot com)
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2016-2017, Oracle and/or its affiliates.
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2016-2018 Oracle and/or its affiliates.
+// Contributed and/or modified by Vissarion Fisikopoulos, on behalf of Oracle
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2017 Barend Gehrels, Amsterdam, the Netherlands.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2017 Denis Demidov <dennis.demidov@gmail.com>
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2017 Klemens D. Morgenstern
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2017 Oracle and/or its affiliates.
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2017 Vinnie Falco (vinnie dot falco at gmail dot com)
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2017, Oracle and/or its affiliates.
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2017-2017 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2017-2018, Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2018 Adam Wulkiewicz, Lodz, Poland.
+
+
+====================COPYRIGHT====================
+// Copyright (c) Aaron Windsor 2007
+
+
+====================COPYRIGHT====================
+// Copyright (c) Antony Polukhin, 2012-2016.
+
+
+====================COPYRIGHT====================
+// Copyright (c) Antony Polukhin, 2012-2018.
+
+
+====================COPYRIGHT====================
+// Copyright (c) Antony Polukhin, 2013-2014.
+
+
+====================COPYRIGHT====================
+// Copyright (c) Antony Polukhin, 2013-2018.
+
+
+====================COPYRIGHT====================
+// Copyright (c) Chris Glover, 2016.
+
+
+====================COPYRIGHT====================
+// Copyright (c) David Abrahams 2001.
+// Copyright (c) Jeremy Siek 2001-2003.
+// Copyright (c) Thomas Witt 2002.
+
+
+====================COPYRIGHT====================
+// Copyright (c) Intel Corporation 2008.
+// Copyright (c) 2008-2012 Simonson Lucanus.
+// Copyright (c) 2012-2012 Andrii Sydorchuk.
+
+
+====================COPYRIGHT====================
+// Copyright (c) Jeremy Siek 2001
+// Copyright (c) Douglas Gregor 2004
+
+
+====================COPYRIGHT====================
+// Copyright (c) Jeremy Siek 2001, Marc Wintermantel 2002
+
+
+====================COPYRIGHT====================
+// Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
+// Copyright (C) Vladimir Prus 2003
+// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek
+
+
+====================COPYRIGHT====================
+// Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
+// Copyright 2003 Bruce Barr
+// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek
+
+
+====================COPYRIGHT====================
+// Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
+// Copyright 2004 The Trustees of Indiana University.
+// Copyright 2007 University of Karlsruhe
+// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek, Douglas Gregor,
+// Jens Mueller
+
+
+====================COPYRIGHT====================
+// Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
+// Copyright 2004, 2005 Trustees of Indiana University
+// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek,
+// Doug Gregor, D. Kevin McGrath
+
+
+====================COPYRIGHT====================
+// Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
+// Copyright 2006 The Trustees of Indiana University.
+// Copyright (C) 2001 Vladimir Prus <ghost@cs.msu.su>
+// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek, Douglas Gregor
+
+
+====================COPYRIGHT====================
+// Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
+// Copyright 2009 Trustees of Indiana University.
+// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek, Michael Hansen
+
+
+====================COPYRIGHT====================
+// Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
+// Copyright 2010 Thomas Claveirole
+// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek, Thomas Claveirole
+
+
+====================COPYRIGHT====================
+// Copyright 1997-2001 University of Notre Dame.
+// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek
+
+
+====================COPYRIGHT====================
+// Copyright 2000 John Maddock (john@johnmaddock.co.uk)
+// Copyright 2000 Jeremy Siek (jsiek@lsc.nd.edu)
+// Copyright 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
+
+
+====================COPYRIGHT====================
+// Copyright 2000 University of Notre Dame.
+// Authors: Jeremy G. Siek, Andrew Lumsdaine, Lie-Quan Lee
+
+
+====================COPYRIGHT====================
+// Copyright 2001 Indiana University
+// Author: Jeremy G. Siek
+
+
+====================COPYRIGHT====================
+// Copyright 2001 Universite Joseph Fourier, Grenoble.
+// Author: Francois Faure
+
+
+====================COPYRIGHT====================
+// Copyright 2001 University of Notre Dame.
+// Copyright 2003 Jeremy Siek
+// Authors: Lie-Quan Lee, Jeremy Siek, and Douglas Gregor
+
+
+====================COPYRIGHT====================
+// Copyright 2001 University of Notre Dame.
+// Copyright 2006 Trustees of Indiana University
+// Authors: Jeremy G. Siek and Douglas Gregor <dgregor@cs.indiana.edu>
+
+
+====================COPYRIGHT====================
+// Copyright 2002 Indiana University.
+// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek
+
+
+====================COPYRIGHT====================
+// Copyright 2002 Marc Wintermantel (wintermantel@even-ag.ch)
+// ETH Zurich, Center of Structure Technologies (www.imes.ethz.ch/st)
+
+
+====================COPYRIGHT====================
+// Copyright 2002 Rensselaer Polytechnic Institute
+
+
+====================COPYRIGHT====================
+// Copyright 2002, 2005 Daryle Walker. Use, modification, and distribution
+// are subject to the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or a copy at <http://www.boost.org/LICENSE_1_0.txt>.)
+
+
+====================COPYRIGHT====================
+// Copyright 2002-2006 Andreas Huber Doenni
+// Distributed under the Boost Software License, Version 1.0. (See accompany-
+// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2002-2007 Andreas Huber Doenni
+// Distributed under the Boost Software License, Version 1.0. (See accompany-
+// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2002-2008 Andreas Huber Doenni
+// Distributed under the Boost Software License, Version 1.0. (See accompany-
+// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2002-2010 Andreas Huber Doenni
+// Distributed under the Boost Software License, Version 1.0. (See accompany-
+// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2003 (c) The Trustees of Indiana University.
+
+
+====================COPYRIGHT====================
+// Copyright 2004 Eric Niebler.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright 2004 The Trustees of Indiana University.
+
+
+====================COPYRIGHT====================
+// Copyright 2004 The Trustees of Indiana University.
+// Copyright 2005 Matthias Troyer.
+// Copyright 2006 Douglas Gregor <doug.gregor -at- gmail.com>.
+
+
+====================COPYRIGHT====================
+// Copyright 2004, 2005 The Trustees of Indiana University.
+
+
+====================COPYRIGHT====================
+// Copyright 2004-2006 The Trustees of Indiana University.
+
+
+====================COPYRIGHT====================
+// Copyright 2004-5 The Trustees of Indiana University.
+// Copyright 2002 Brad King and Douglas Gregor
+
+
+====================COPYRIGHT====================
+// Copyright 2004-9 Trustees of Indiana University
+
+
+====================COPYRIGHT====================
+// Copyright 2005 Alexander Nasonov.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright 2005 Daniel Wallin.
+// Copyright 2005 Joel de Guzman.
+// Copyright 2005 Dan Marsden.
+// Copyright 2008 Hartmut Kaiser.
+// Copyright 2015 John Fletcher.
+
+
+====================COPYRIGHT====================
// Copyright 2005 Daniel Wallin.
-// Copyright 2005 Joel de Guzman.
+// Copyright 2005 Joel de Guzman.
// Copyright 2005 Dan Marsden.
-// Copyright 2008 Hartmut Kaiser.
-// Copyright 2015 John Fletcher.
-
-
-====================COPYRIGHT====================
-// Copyright 2005 Daniel Wallin.
-// Copyright 2005 Joel de Guzman.
-// Copyright 2005 Dan Marsden.
-
-
-====================COPYRIGHT====================
-// Copyright 2005 Douglas Gregor.
-
-
-====================COPYRIGHT====================
-// Copyright 2005 Eric Niebler.
-// Copyright (C) 2014 Pieter Bastiaan Ober (Integricom).
+
+
+====================COPYRIGHT====================
+// Copyright 2005 Douglas Gregor.
+
+
+====================COPYRIGHT====================
+// Copyright 2005 Eric Niebler.
+// Copyright (C) 2014 Pieter Bastiaan Ober (Integricom).
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright 2005 Jeremy G. Siek
+// Authors: Jeremy G. Siek
+
+
+====================COPYRIGHT====================
+// Copyright 2005 The Trustees of Indiana University.
+
+
+====================COPYRIGHT====================
+// Copyright 2005 Trustees of Indiana University
+// Authors: Andrew Lumsdaine, Douglas Gregor
+
+
+====================COPYRIGHT====================
+// Copyright 2005-2006 Andreas Huber Doenni
+// Distributed under the Boost Software License, Version 1.0. (See accompany-
+// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2005-2008 Andreas Huber Doenni
+// Distributed under the Boost Software License, Version 1.0. (See accompany-
+// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2005-2009 Daniel James.
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2005-2009 The Trustees of Indiana University.
+
+
+====================COPYRIGHT====================
+// Copyright 2005-2011 Daniel James.
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2005-2012 Daniel James.
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2005-2014 Daniel James.
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2006 Andy Tompkins.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright 2006 Johan Rade
+// Copyright 2012 K R Walker
+// Copyright 2011, 2012 Paul A. Bristow
+
+
+====================COPYRIGHT====================
+// Copyright 2006 Roland Schwarz.
+// (C) Copyright 2007 Anthony Williams
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright 2006 Thorsten Ottosen.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright 2007 Aaron Windsor
+
+
+====================COPYRIGHT====================
+// Copyright 2007 Alexandre Courpron
+
+
+====================COPYRIGHT====================
+// Copyright 2007 Andy Tompkins.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright 2007 Stanford University
+// Authors: David Gleich
+
+
+====================COPYRIGHT====================
+// Copyright 2008
+// Author: Matyas W Egyhazy
+
+
+====================COPYRIGHT====================
+// Copyright 2008 Andreas Huber Doenni
+// Distributed under the Boost Software License, Version 1.0. (See accompany-
+// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2008 Christophe Henry
+// henry UNDERSCORE christophe AT hotmail DOT com
+// This is an extended version of the state machine available in the boost::mpl library
+
+
+====================COPYRIGHT====================
+// Copyright 2008 Eric Niebler. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2008 Gautam Sewani
+// Copyright 2008 John Maddock
+
+
+====================COPYRIGHT====================
+// Copyright 2008 Joaquin M Lopez Munoz.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright 2008-2010 Gordon Woodhull
// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2009 (C) Dean Michael Berris <me@deanberris.com>
+// Copyright 2012 (C) Google, Inc.
+// Copyright 2012 (C) Jeffrey Lee Hellrung, Jr.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright 2009 Andy Tompkins.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright 2009 Neil Groves.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright 2009 The Trustees of Indiana University.
+
+
+====================COPYRIGHT====================
+// Copyright 2009, Andrew Sutton
+
+
+====================COPYRIGHT====================
+// Copyright 2009-2014 Neil Groves.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright 2010 Andy Tompkins.
+// Copyright 2017 James E. King III
+
+
+====================COPYRIGHT====================
+// Copyright 2010 Eric Niebler.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright 2010 The Trustees of Indiana University.
+
+
+====================COPYRIGHT====================
+// Copyright 2011 Christophe Henry
+// henry UNDERSCORE christophe AT hotmail DOT com
+// This is an extended version of the state machine available in the boost::mpl library
+
+
+====================COPYRIGHT====================
+// Copyright 2011 Steven Watanabe
+
+
+====================COPYRIGHT====================
+// Copyright 2011, Andrew Ross
+
+
+====================COPYRIGHT====================
+// Copyright 2011-2012 Steven Watanabe
+
+
+====================COPYRIGHT====================
+// Copyright 2012 Fernando Vilas
+// 2010 Daniel Trebbien
+
+
+====================COPYRIGHT====================
+// Copyright 2012 Steven Watanabe
+
+
+====================COPYRIGHT====================
+// Copyright 2012 The Trustees of Indiana University.
+
+
+====================COPYRIGHT====================
+// Copyright 2012, Philipp Moeller
+
+
+====================COPYRIGHT====================
+// Copyright 2012-2013 Steven Watanabe
+
+
+====================COPYRIGHT====================
+// Copyright 2013 Maciej Piechotka
+// Authors: Maciej Piechotka
+
+
+====================COPYRIGHT====================
+// Copyright 2013 Rene Rivera
+// Distributed under the Boost Software License, Version 1.0. (See accompany-
+// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2013 University of Warsaw.
+// Authors: Piotr Wygocki
+
+
+====================COPYRIGHT====================
+// Copyright 2014 Peter Dimov
+// Copyright 2014 Andrey Semashev
+
+
+====================COPYRIGHT====================
+// Copyright 2014 Renato Tegon Forti, Antony Polukhin.
+// Copyright 2015 Antony Polukhin.
+
+
+====================COPYRIGHT====================
+// Copyright 2014 Renato Tegon Forti, Antony Polukhin.
+// Copyright 2015-2016 Antony Polukhin.
+
+
+====================COPYRIGHT====================
+// Copyright 2014 Renato Tegon Forti, Antony Polukhin.
+// Copyright 2015-2017 Antony Polukhin.
+
+
+====================COPYRIGHT====================
+// Copyright 2014 Renato Tegon Forti, Antony Polukhin.
+// Copyright 2015-2018 Antony Polukhin.
+
+
+====================COPYRIGHT====================
+// Copyright 2014,2018 Glen Joseph Fernandes
+// (glenjofe@gmail.com)
+
+
+====================COPYRIGHT====================
+// Copyright 2014-2015 Renato Tegon Forti, Antony Polukhin.
+
+
+====================COPYRIGHT====================
+// Copyright 2015 Steven Watanabe
+
+
+====================COPYRIGHT====================
+// Copyright 2015-2016 Klemens D. Morgenstern
+
+
+====================COPYRIGHT====================
+// Copyright 2016 Klemens Morgenstern, Antony Polukhin
+
+
+====================COPYRIGHT====================
+// Copyright 2017 Daniel James.
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2018 Steven Watanabe
+
+
+====================COPYRIGHT====================
+// Copyright Abel Sinkovics (abel@sinkovics.hu) 2009 - 2010.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Abel Sinkovics (abel@sinkovics.hu) 2009 - 2011.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Abel Sinkovics (abel@sinkovics.hu) 2009 - 2012.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Abel Sinkovics (abel@sinkovics.hu) 2010 - 2011.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Abel Sinkovics (abel@sinkovics.hu) 2010.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Abel Sinkovics (abel@sinkovics.hu) 2012.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Abel Sinkovics (abel@sinkovics.hu) 2014.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Abel Sinkovics (abel@sinkovics.hu) 2015.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Abel Sinkovics (abel@sinkovics.hu) 2016.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Abel Sinkovics (abel@sinkovics.hu) 2017.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Abel Sinkovics (abel@sinkovics.hu) 2011 - 2012.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Abel Sinkovics (abel@sinkovics.hu) 2013.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Aleksey Gurtovoy 2000-2002
+
+
+====================COPYRIGHT====================
+// Copyright Aleksey Gurtovoy 2000-2003
+
+
+====================COPYRIGHT====================
+// Copyright Aleksey Gurtovoy 2000-2004
+
+
+====================COPYRIGHT====================
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright John R. Bandela 2000-2002
+// Copyright David Abrahams 2003-2004
+
+
+====================COPYRIGHT====================
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Peter Dimov 2000-2003
+
+
+====================COPYRIGHT====================
+// Copyright Aleksey Gurtovoy 2000-2006
+
+
+====================COPYRIGHT====================
+// Copyright Aleksey Gurtovoy 2000-2008
+
+
+====================COPYRIGHT====================
+// Copyright Aleksey Gurtovoy 2000-2009
+// Copyright Jaap Suter 2003
+
+
+====================COPYRIGHT====================
+// Copyright Aleksey Gurtovoy 2000-2010
+// Copyright David Abrahams 2000-2002
+
+
+====================COPYRIGHT====================
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright Dave Abrahams 2001-2002
+
+
+====================COPYRIGHT====================
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright David Abrahams 2001-2002
+
+
+====================COPYRIGHT====================
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright Peter Dimov 2001-2003
+
+
+====================COPYRIGHT====================
+// Copyright Aleksey Gurtovoy 2001-2006
+
+
+====================COPYRIGHT====================
+// Copyright Aleksey Gurtovoy 2001-2007
+
+
+====================COPYRIGHT====================
+// Copyright Aleksey Gurtovoy 2001-2008
+
+
+====================COPYRIGHT====================
+// Copyright Aleksey Gurtovoy 2002-2004
+
+
+====================COPYRIGHT====================
+// Copyright Aleksey Gurtovoy 2002-2006
+// Copyright David Abrahams 2002-2003
+// Copyright Daniel Walker 2007
+
+
+====================COPYRIGHT====================
+// Copyright Aleksey Gurtovoy 2003-2004
+// Copyright David Abrahams 2003-2004
+
+
+====================COPYRIGHT====================
+// Copyright Aleksey Gurtovoy 2003-2007
+// Copyright David Abrahams 2003-2004
+
+
+====================COPYRIGHT====================
+// Copyright Aleksey Gurtovoy 2004
+
+
+====================COPYRIGHT====================
+// Copyright Aleksey Gurtovoy 2004
+// Copyright Alexander Nasonov 2004
+
+
+====================COPYRIGHT====================
+// Copyright Aleksey Gurtovoy 2006
+
+
+====================COPYRIGHT====================
+// Copyright Aleksey Gurtovoy 2008
+
+
+====================COPYRIGHT====================
+// Copyright Alexander Nasonov & Paul A. Bristow 2006.
+
+
+====================COPYRIGHT====================
+// Copyright Antony Polukhin, 2016-2017.
+
+
+====================COPYRIGHT====================
+// Copyright Antony Polukhin, 2016-2018.
+
+
+====================COPYRIGHT====================
+// Copyright Bruno Dutra 2015
+
+
+====================COPYRIGHT====================
+// Copyright Christopher Kormanyos 2002 - 2011.
+// Copyright 2011 John Maddock. Distributed under the Boost
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Christopher Kormanyos 2002 - 2013.
+// Copyright 2011 - 2013 John Maddock. Distributed under the Boost
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Christopher Kormanyos 2002 - 2013.
+// Copyright 2011 -2013 John Maddock. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright Christopher Kormanyos 2014.
+// Copyright John Maddock 2014.
+// Copyright Paul Bristow 2014.
+// Distributed under the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt
+
+
+====================COPYRIGHT====================
+// Copyright Daniel Wallin 2005. Use, modification and distribution is
+// subject to the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright Daniel Wallin 2006. Use, modification and distribution is
+// subject to the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright Daniel Wallin 2007. Use, modification and distribution is
+// subject to the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright Daniel Wallin, David Abrahams 2005. Use, modification and
+// distribution is subject to the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Daniel Wallin, David Abrahams 2010. Use, modification and
+// distribution is subject to the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright David Abrahams 2002, Nikolay Mladenov 2007.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright David Abrahams 2002, Joel de Guzman, 2002.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright David Abrahams 2002.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright David Abrahams 2003.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright David Abrahams 2004. Use, modification and distribution is
+// subject to the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright David Abrahams 2005. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright David Abrahams 2006. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright David Abrahams 2009. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright David Abrahams and Jeremy Siek 2003.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright David Abrahams and Nikolay Mladenov 2003.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright David Abrahams and Thomas Becker 2000-2006.
+// Copyright Kohei Takahashi 2012-2014.
+
+
+====================COPYRIGHT====================
+// Copyright David Abrahams, Daniel Wallin 2003. Use, modification and
+// distribution is subject to the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright 2005 Jeremy G. Siek
-// Authors: Jeremy G. Siek
-
-
-====================COPYRIGHT====================
-// Copyright 2005 The Trustees of Indiana University.
-
-
-====================COPYRIGHT====================
-// Copyright 2005 Trustees of Indiana University
-// Authors: Andrew Lumsdaine, Douglas Gregor
-
-
-====================COPYRIGHT====================
-// Copyright 2005-2006 Andreas Huber Doenni
-// Distributed under the Boost Software License, Version 1.0. (See accompany-
-// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2005-2008 Andreas Huber Doenni
-// Distributed under the Boost Software License, Version 1.0. (See accompany-
-// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2005-2009 Daniel James.
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2005-2009 The Trustees of Indiana University.
-
-
-====================COPYRIGHT====================
-// Copyright 2005-2011 Daniel James.
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2005-2012 Daniel James.
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2005-2014 Daniel James.
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2006 Andy Tompkins.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright 2006 Johan Rade
-// Copyright 2012 K R Walker
-// Copyright 2011, 2012 Paul A. Bristow
-
-
-====================COPYRIGHT====================
-// Copyright 2006 Roland Schwarz.
-// (C) Copyright 2007 Anthony Williams
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright 2006 Thorsten Ottosen.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright 2007 Aaron Windsor
-
-
-====================COPYRIGHT====================
-// Copyright 2007 Alexandre Courpron
-
-
-====================COPYRIGHT====================
-// Copyright 2007 Andy Tompkins.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright 2007 Stanford University
-// Authors: David Gleich
-
-
-====================COPYRIGHT====================
-// Copyright 2008
-// Author: Matyas W Egyhazy
-
-
-====================COPYRIGHT====================
-// Copyright 2008 Andreas Huber Doenni
-// Distributed under the Boost Software License, Version 1.0. (See accompany-
-// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2008 Christophe Henry
-// henry UNDERSCORE christophe AT hotmail DOT com
-// This is an extended version of the state machine available in the boost::mpl library
-
-
-====================COPYRIGHT====================
-// Copyright 2008 Eric Niebler. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2008 Gautam Sewani
-// Copyright 2008 John Maddock
-
-
-====================COPYRIGHT====================
-// Copyright 2008 Joaquin M Lopez Munoz.
-// Distributed under the Boost Software License, Version 1.0.
+
+
+====================COPYRIGHT====================
+// Copyright David Abrahams, Daniel Wallin 2005. Use, modification and
+// distribution is subject to the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright 2008-2010 Gordon Woodhull
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2009 (C) Dean Michael Berris <me@deanberris.com>
-// Copyright 2012 (C) Google, Inc.
-// Copyright 2012 (C) Jeffrey Lee Hellrung, Jr.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright 2009 Andy Tompkins.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright 2009 Neil Groves.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright 2009 The Trustees of Indiana University.
-
-
-====================COPYRIGHT====================
-// Copyright 2009, Andrew Sutton
-
-
-====================COPYRIGHT====================
-// Copyright 2009-2014 Neil Groves.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright 2010 Andy Tompkins.
-// Copyright 2017 James E. King III
-
-
-====================COPYRIGHT====================
-// Copyright 2010 Eric Niebler.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright 2010 The Trustees of Indiana University.
-
-
-====================COPYRIGHT====================
-// Copyright 2011 Christophe Henry
-// henry UNDERSCORE christophe AT hotmail DOT com
-// This is an extended version of the state machine available in the boost::mpl library
-
-
-====================COPYRIGHT====================
-// Copyright 2011 Steven Watanabe
-
-
-====================COPYRIGHT====================
-// Copyright 2011, Andrew Ross
-
-
-====================COPYRIGHT====================
-// Copyright 2011-2012 Steven Watanabe
-
-
-====================COPYRIGHT====================
-// Copyright 2012 Fernando Vilas
-// 2010 Daniel Trebbien
-
-
-====================COPYRIGHT====================
-// Copyright 2012 Steven Watanabe
-
-
-====================COPYRIGHT====================
-// Copyright 2012 The Trustees of Indiana University.
-
-
-====================COPYRIGHT====================
-// Copyright 2012, Philipp Moeller
-
-
-====================COPYRIGHT====================
-// Copyright 2012-2013 Steven Watanabe
-
-
-====================COPYRIGHT====================
-// Copyright 2013 Maciej Piechotka
-// Authors: Maciej Piechotka
-
-
-====================COPYRIGHT====================
-// Copyright 2013 Rene Rivera
-// Distributed under the Boost Software License, Version 1.0. (See accompany-
-// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2013 University of Warsaw.
-// Authors: Piotr Wygocki
-
-
-====================COPYRIGHT====================
-// Copyright 2014 Peter Dimov
-// Copyright 2014 Andrey Semashev
-
-
-====================COPYRIGHT====================
-// Copyright 2014 Renato Tegon Forti, Antony Polukhin.
-// Copyright 2015 Antony Polukhin.
-
-
-====================COPYRIGHT====================
-// Copyright 2014 Renato Tegon Forti, Antony Polukhin.
-// Copyright 2015-2016 Antony Polukhin.
-
-
-====================COPYRIGHT====================
-// Copyright 2014 Renato Tegon Forti, Antony Polukhin.
-// Copyright 2015-2017 Antony Polukhin.
-
-
-====================COPYRIGHT====================
-// Copyright 2014 Renato Tegon Forti, Antony Polukhin.
-// Copyright 2015-2018 Antony Polukhin.
-
-
-====================COPYRIGHT====================
-// Copyright 2014,2018 Glen Joseph Fernandes
-// (glenjofe@gmail.com)
-
-
-====================COPYRIGHT====================
-// Copyright 2014-2015 Renato Tegon Forti, Antony Polukhin.
-
-
-====================COPYRIGHT====================
-// Copyright 2015 Steven Watanabe
-
-
-====================COPYRIGHT====================
-// Copyright 2015-2016 Klemens D. Morgenstern
-
-
-====================COPYRIGHT====================
-// Copyright 2016 Klemens Morgenstern, Antony Polukhin
-
-
-====================COPYRIGHT====================
-// Copyright 2017 Daniel James.
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2018 Steven Watanabe
-
-
-====================COPYRIGHT====================
-// Copyright Abel Sinkovics (abel@sinkovics.hu) 2009 - 2010.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Abel Sinkovics (abel@sinkovics.hu) 2009 - 2011.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Abel Sinkovics (abel@sinkovics.hu) 2009 - 2012.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Abel Sinkovics (abel@sinkovics.hu) 2010 - 2011.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Abel Sinkovics (abel@sinkovics.hu) 2010.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Abel Sinkovics (abel@sinkovics.hu) 2012.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Abel Sinkovics (abel@sinkovics.hu) 2014.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Abel Sinkovics (abel@sinkovics.hu) 2015.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Abel Sinkovics (abel@sinkovics.hu) 2016.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Abel Sinkovics (abel@sinkovics.hu) 2017.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Abel Sinkovics (abel@sinkovics.hu) 2011 - 2012.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Abel Sinkovics (abel@sinkovics.hu) 2013.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Aleksey Gurtovoy 2000-2002
-
-
-====================COPYRIGHT====================
-// Copyright Aleksey Gurtovoy 2000-2003
-
-
-====================COPYRIGHT====================
-// Copyright Aleksey Gurtovoy 2000-2004
-
-
-====================COPYRIGHT====================
-// Copyright Aleksey Gurtovoy 2000-2004
-// Copyright John R. Bandela 2000-2002
-// Copyright David Abrahams 2003-2004
-
-
-====================COPYRIGHT====================
-// Copyright Aleksey Gurtovoy 2000-2004
-// Copyright Peter Dimov 2000-2003
-
-
-====================COPYRIGHT====================
-// Copyright Aleksey Gurtovoy 2000-2006
-
-
-====================COPYRIGHT====================
-// Copyright Aleksey Gurtovoy 2000-2008
-
-
-====================COPYRIGHT====================
-// Copyright Aleksey Gurtovoy 2000-2009
-// Copyright Jaap Suter 2003
-
-
-====================COPYRIGHT====================
-// Copyright Aleksey Gurtovoy 2000-2010
-// Copyright David Abrahams 2000-2002
-
-
-====================COPYRIGHT====================
-// Copyright Aleksey Gurtovoy 2001-2004
-// Copyright Dave Abrahams 2001-2002
-
-
-====================COPYRIGHT====================
-// Copyright Aleksey Gurtovoy 2001-2004
-// Copyright David Abrahams 2001-2002
-
-
-====================COPYRIGHT====================
-// Copyright Aleksey Gurtovoy 2001-2004
-// Copyright Peter Dimov 2001-2003
-
-
-====================COPYRIGHT====================
-// Copyright Aleksey Gurtovoy 2001-2006
-
-
-====================COPYRIGHT====================
-// Copyright Aleksey Gurtovoy 2001-2007
-
-
-====================COPYRIGHT====================
-// Copyright Aleksey Gurtovoy 2001-2008
-
-
-====================COPYRIGHT====================
-// Copyright Aleksey Gurtovoy 2002-2004
-
-
-====================COPYRIGHT====================
-// Copyright Aleksey Gurtovoy 2002-2006
-// Copyright David Abrahams 2002-2003
-// Copyright Daniel Walker 2007
-
-
-====================COPYRIGHT====================
-// Copyright Aleksey Gurtovoy 2003-2004
-// Copyright David Abrahams 2003-2004
-
-
-====================COPYRIGHT====================
-// Copyright Aleksey Gurtovoy 2003-2007
-// Copyright David Abrahams 2003-2004
-
-
-====================COPYRIGHT====================
-// Copyright Aleksey Gurtovoy 2004
-
-
-====================COPYRIGHT====================
-// Copyright Aleksey Gurtovoy 2004
-// Copyright Alexander Nasonov 2004
-
-
-====================COPYRIGHT====================
-// Copyright Aleksey Gurtovoy 2006
-
-
-====================COPYRIGHT====================
-// Copyright Aleksey Gurtovoy 2008
-
-
-====================COPYRIGHT====================
-// Copyright Alexander Nasonov & Paul A. Bristow 2006.
-
-
-====================COPYRIGHT====================
-// Copyright Antony Polukhin, 2016-2017.
-
-
-====================COPYRIGHT====================
-// Copyright Antony Polukhin, 2016-2018.
-
-
-====================COPYRIGHT====================
-// Copyright Bruno Dutra 2015
-
-
-====================COPYRIGHT====================
-// Copyright Christopher Kormanyos 2002 - 2011.
-// Copyright 2011 John Maddock. Distributed under the Boost
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Christopher Kormanyos 2002 - 2013.
-// Copyright 2011 - 2013 John Maddock. Distributed under the Boost
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Christopher Kormanyos 2002 - 2013.
-// Copyright 2011 -2013 John Maddock. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright Christopher Kormanyos 2014.
-// Copyright John Maddock 2014.
-// Copyright Paul Bristow 2014.
-// Distributed under the Boost Software License,
-// Version 1.0. (See accompanying file LICENSE_1_0.txt
-
-
-====================COPYRIGHT====================
-// Copyright Daniel Wallin 2005. Use, modification and distribution is
-// subject to the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright Daniel Wallin 2006. Use, modification and distribution is
-// subject to the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright Daniel Wallin 2007. Use, modification and distribution is
-// subject to the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright Daniel Wallin, David Abrahams 2005. Use, modification and
-// distribution is subject to the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Daniel Wallin, David Abrahams 2010. Use, modification and
-// distribution is subject to the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright David Abrahams 2002, Nikolay Mladenov 2007.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright David Abrahams 2002, Joel de Guzman, 2002.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright David Abrahams 2002.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright David Abrahams 2003.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright David Abrahams 2004. Use, modification and distribution is
-// subject to the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright David Abrahams 2005. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright David Abrahams 2006. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright David Abrahams 2009. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright David Abrahams and Jeremy Siek 2003.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright David Abrahams and Nikolay Mladenov 2003.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright David Abrahams and Thomas Becker 2000-2006.
-// Copyright Kohei Takahashi 2012-2014.
-
-
-====================COPYRIGHT====================
-// Copyright David Abrahams, Daniel Wallin 2003. Use, modification and
-// distribution is subject to the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright David Abrahams, Daniel Wallin 2005. Use, modification and
-// distribution is subject to the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Douglas Gregor 2001-2004. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Douglas Gregor 2001-2006. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Douglas Gregor 2002-2004. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Douglas Gregor 2003-2004. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Eric Friedman 2002
-// Copyright Aleksey Gurtovoy 2004
-
-
-====================COPYRIGHT====================
-// Copyright Eric Friedman 2002-2003
-// Copyright Aleksey Gurtovoy 2004
-
-
-====================COPYRIGHT====================
-// Copyright Eric Friedman 2003
-
-
-====================COPYRIGHT====================
-// Copyright Eric Niebler 2005.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Eric Niebler 2008
-
-
-====================COPYRIGHT====================
-// Copyright Eric Niebler 2009
-
-
-====================COPYRIGHT====================
-// Copyright Eric Niebler 2014
-
-
-====================COPYRIGHT====================
-// Copyright Frank Mori Hess 2007,2009.
-// Copyright Timmo Stange 2007.
-// Copyright Douglas Gregor 2001-2004. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Frank Mori Hess 2007-2008.
-// Distributed under the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Frank Mori Hess 2007-2009.
-// Copyright Timmo Stange 2007.
-// Copyright Douglas Gregor 2001-2004. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Frank Mori Hess 2007-2010.
-// Use, modification and
-// distribution is subject to the Boost Software License, Version
-
-
-====================COPYRIGHT====================
-// Copyright Frank Mori Hess 2007.
-// Copyright Douglas Gregor 2001-2003. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Frank Mori Hess 2008.
-// Distributed under the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Frank Mori Hess 2009
-// Use, modification and
-// distribution is subject to the Boost Software License, Version
-
-
-====================COPYRIGHT====================
-// Copyright Gottfried Ganßauge 2003.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Gottfried Ganßauge 2003..2006.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Howard Hinnant 2007-2010.
-// Copyright Vicente J. Botet Escriba 2012.
-
-
-====================COPYRIGHT====================
-// Copyright Jim Bosch 2010-2012.
-// Copyright Stefan Seefeld 2016.
-// Distributed under the Boost Software License, Version 1.0.
+
+
+====================COPYRIGHT====================
+// Copyright Douglas Gregor 2001-2004. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Douglas Gregor 2001-2006. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Douglas Gregor 2002-2004. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Douglas Gregor 2003-2004. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Eric Friedman 2002
+// Copyright Aleksey Gurtovoy 2004
+
+
+====================COPYRIGHT====================
+// Copyright Eric Friedman 2002-2003
+// Copyright Aleksey Gurtovoy 2004
+
+
+====================COPYRIGHT====================
+// Copyright Eric Friedman 2003
+
+
+====================COPYRIGHT====================
+// Copyright Eric Niebler 2005.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Eric Niebler 2008
+
+
+====================COPYRIGHT====================
+// Copyright Eric Niebler 2009
+
+
+====================COPYRIGHT====================
+// Copyright Eric Niebler 2014
+
+
+====================COPYRIGHT====================
+// Copyright Frank Mori Hess 2007,2009.
+// Copyright Timmo Stange 2007.
+// Copyright Douglas Gregor 2001-2004. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Frank Mori Hess 2007-2008.
+// Distributed under the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Frank Mori Hess 2007-2009.
+// Copyright Timmo Stange 2007.
+// Copyright Douglas Gregor 2001-2004. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Frank Mori Hess 2007-2010.
+// Use, modification and
+// distribution is subject to the Boost Software License, Version
+
+
+====================COPYRIGHT====================
+// Copyright Frank Mori Hess 2007.
+// Copyright Douglas Gregor 2001-2003. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Frank Mori Hess 2008.
+// Distributed under the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Frank Mori Hess 2009
+// Use, modification and
+// distribution is subject to the Boost Software License, Version
+
+
+====================COPYRIGHT====================
+// Copyright Gottfried Ganßauge 2003.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Gottfried Ganßauge 2003..2006.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Howard Hinnant 2007-2010.
+// Copyright Vicente J. Botet Escriba 2012.
+
+
+====================COPYRIGHT====================
+// Copyright Jim Bosch 2010-2012.
+// Copyright Stefan Seefeld 2016.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright John Maddock 2006, 2007.
+// Copyright Paul A. Bristow 2008, 2010.
+
+
+====================COPYRIGHT====================
+// Copyright John Maddock 2006.
+// Copyright Paul A. Bristow 2006.
+
+
+====================COPYRIGHT====================
+// Copyright John Maddock 2006.
+// Copyright Paul A. Bristow 2007.
+
+
+====================COPYRIGHT====================
+// Copyright John Maddock 2008-11.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0.
+
+
+====================COPYRIGHT====================
+// Copyright John Maddock 2010.
+// Copyright Paul A. Bristow 2010.
+
+
+====================COPYRIGHT====================
+// Copyright John Maddock 2012.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0.
+
+
+====================COPYRIGHT====================
+// Copyright John Maddock 2014.
+// Copyright Paul A. Bristow 2014.
+
+
+====================COPYRIGHT====================
+// Copyright John R. Bandela 2001.
+
+
+====================COPYRIGHT====================
+// Copyright Kevlin Henney, 2000, 2001, 2002. All rights reserved.
+
+
+====================COPYRIGHT====================
+// Copyright Kevlin Henney, 2000-2005.
+// Copyright Alexander Nasonov, 2006-2010.
+// Copyright Antony Polukhin, 2011-2014.
+
+
+====================COPYRIGHT====================
+// Copyright Kevlin Henney, 2000-2005.
+// Copyright Alexander Nasonov, 2006-2010.
+// Copyright Antony Polukhin, 2011-2016.
+
+
+====================COPYRIGHT====================
+// Copyright Louis Dionne 2013
+
+
+====================COPYRIGHT====================
+// Copyright Michael Drexl 2005, 2006.
+// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright John Maddock 2006, 2007.
-// Copyright Paul A. Bristow 2008, 2010.
-
-
-====================COPYRIGHT====================
-// Copyright John Maddock 2006.
-// Copyright Paul A. Bristow 2006.
-
-
-====================COPYRIGHT====================
-// Copyright John Maddock 2006.
-// Copyright Paul A. Bristow 2007.
-
-
-====================COPYRIGHT====================
-// Copyright John Maddock 2008-11.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0.
-
-
-====================COPYRIGHT====================
-// Copyright John Maddock 2010.
-// Copyright Paul A. Bristow 2010.
-
-
-====================COPYRIGHT====================
-// Copyright John Maddock 2012.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0.
-
-
-====================COPYRIGHT====================
-// Copyright John Maddock 2014.
-// Copyright Paul A. Bristow 2014.
-
-
-====================COPYRIGHT====================
-// Copyright John R. Bandela 2001.
-
-
-====================COPYRIGHT====================
-// Copyright Kevlin Henney, 2000, 2001, 2002. All rights reserved.
-
-
-====================COPYRIGHT====================
-// Copyright Kevlin Henney, 2000-2005.
-// Copyright Alexander Nasonov, 2006-2010.
-// Copyright Antony Polukhin, 2011-2014.
-
-
-====================COPYRIGHT====================
-// Copyright Kevlin Henney, 2000-2005.
-// Copyright Alexander Nasonov, 2006-2010.
-// Copyright Antony Polukhin, 2011-2016.
-
-
-====================COPYRIGHT====================
-// Copyright Louis Dionne 2013
-
-
-====================COPYRIGHT====================
-// Copyright Michael Drexl 2005, 2006.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Nikolay Mladenov 2007.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Paul A. Bristow 2007, 2010, 2012, 2014.
-// Copyright John Maddock 2007.
-
-
-====================COPYRIGHT====================
-// Copyright Peter Dimov 2000-2002
-// Copyright Aleksey Gurtovoy 2000-2004
-
-
-====================COPYRIGHT====================
-// Copyright Peter Dimov 2001
-// Copyright Aleksey Gurtovoy 2001-2004
-
-
-====================COPYRIGHT====================
-// Copyright Peter Dimov 2001-2002
-// Copyright Aleksey Gurtovoy 2001-2004
-
-
-====================COPYRIGHT====================
-// Copyright Peter Dimov and David Abrahams 2002.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Peter Dimov and Multi Media Ltd 2001, 2002
-// Copyright David Abrahams 2001
-
-
-====================COPYRIGHT====================
-// Copyright Ralf W. Grosse-Kunstleve & David Abrahams 2006.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Ralf W. Grosse-Kunstleve 2006.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Robert Ramey 2007. Changes made to permit
-// application throughout the serialization library.
-
-
-====================COPYRIGHT====================
-// Copyright Sebastian Ramacher, 2007.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Sergey Krivonos 2017
-
-
-====================COPYRIGHT====================
-// Copyright Shreyans Doshi 2017.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Shunsuke Sogame 2005-2006.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Stefan Seefeld 2005.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Thorsten Ottosen, 2009.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Vicente J. Botet Escriba 2010
-
-
-====================COPYRIGHT====================
-// Copyright Vladimir Prus 2002-2004.
-// Copyright Bertolt Mildner 2004.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-
-
-====================COPYRIGHT====================
-// Copyright Vladimir Prus 2002-2004.
+
+
+====================COPYRIGHT====================
+// Copyright Nikolay Mladenov 2007.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Paul A. Bristow 2007, 2010, 2012, 2014.
+// Copyright John Maddock 2007.
+
+
+====================COPYRIGHT====================
+// Copyright Peter Dimov 2000-2002
+// Copyright Aleksey Gurtovoy 2000-2004
+
+
+====================COPYRIGHT====================
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-2004
+
+
+====================COPYRIGHT====================
+// Copyright Peter Dimov 2001-2002
+// Copyright Aleksey Gurtovoy 2001-2004
+
+
+====================COPYRIGHT====================
+// Copyright Peter Dimov and David Abrahams 2002.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Peter Dimov and Multi Media Ltd 2001, 2002
+// Copyright David Abrahams 2001
+
+
+====================COPYRIGHT====================
+// Copyright Ralf W. Grosse-Kunstleve & David Abrahams 2006.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Ralf W. Grosse-Kunstleve 2006.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Robert Ramey 2007. Changes made to permit
+// application throughout the serialization library.
+
+
+====================COPYRIGHT====================
+// Copyright Sebastian Ramacher, 2007.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Sergey Krivonos 2017
+
+
+====================COPYRIGHT====================
+// Copyright Shreyans Doshi 2017.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Shunsuke Sogame 2005-2006.
// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-
-
-====================COPYRIGHT====================
-// Copyright Vladimir Prus 2002.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Vladimir Prus 2004.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-
-
-====================COPYRIGHT====================
-// Copyright for the original version:
-// Copyright 2005 David Abrahams and Aleksey Gurtovoy. Distributed
-// under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Portions Copyright (C) 2002 David Abrahams
-
-
-====================COPYRIGHT====================
-// This file was modified by Oracle on 2013, 2014, 2015.
-// Modifications copyright (c) 2013-2015 Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// This file was modified by Oracle on 2013, 2014, 2015.
-// Modifications copyright (c) 2013-2015, Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// This file was modified by Oracle on 2013, 2014, 2017.
-// Modifications copyright (c) 2013-2017 Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// This file was modified by Oracle on 2013, 2014.
-// Modifications copyright (c) 2013, 2014 Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// This file was modified by Oracle on 2013, 2014.
-// Modifications copyright (c) 2013, 2014, Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// This file was modified by Oracle on 2013, 2014.
-// Modifications copyright (c) 2013-2014 Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// This file was modified by Oracle on 2013-2014.
-// Modifications copyright (c) 2013-2014, Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// This file was modified by Oracle on 2013-2016.
-// Modifications copyright (c) 2013-2016 Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// This file was modified by Oracle on 2013-2017.
-// Modifications copyright (c) 2013-2017, Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// This file was modified by Oracle on 2013.
-// Modifications copyright (c) 2013, Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// This file was modified by Oracle on 2014, 2015.
-// Modifications copyright (c) 2014-2015 Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// This file was modified by Oracle on 2014, 2015.
-// Modifications copyright (c) 2014-2015, Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// This file was modified by Oracle on 2014, 2016, 2017.
-// Modifications copyright (c) 2014-2017, Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// This file was modified by Oracle on 2014, 2017.
-// Modifications copyright (c) 2014-2017 Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// This file was modified by Oracle on 2014-2018.
-// Modifications copyright (c) 2014-2018 Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// This file was modified by Oracle on 2014.
-// Modifications copyright (c) 2014 Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// This file was modified by Oracle on 2014.
-// Modifications copyright (c) 2014, Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// This file was modified by Oracle on 2015, 2016.
-// Modifications copyright (c) 2015-2016 Oracle and/or its affiliates.
-// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
-
-
-====================COPYRIGHT====================
-// This file was modified by Oracle on 2015, 2016.
-// Modifications copyright (c) 2015-2016, Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// This file was modified by Oracle on 2015, 2017.
-// Modifications copyright (c) 2015-2017 Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// This file was modified by Oracle on 2015, 2017.
-// Modifications copyright (c) 2015-2017, Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// This file was modified by Oracle on 2015.
-// Modifications copyright (c) 2015 Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// This file was modified by Oracle on 2015.
-// Modifications copyright (c) 2015, Oracle and/or its affiliates.
-
-
-====================COPYRIGHT====================
-// This file was modified by Oracle on 2016, 2017.
-// Modifications copyright (c) 2016-2017, Oracle and/or its affiliates.
-// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
-
-
-====================COPYRIGHT====================
-// This file was modified by Oracle on 2016-2017.
-// Modifications copyright (c) 2016-2017 Oracle and/or its affiliates.
-// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
-
-
-====================COPYRIGHT====================
-// This file was modified by Oracle on 2016.
-// Modifications copyright (c) 2016 Oracle and/or its affiliates.
-// Contributed and/or modified by Vissarion Fysikopoulos, on behalf of Oracle
-
-
-====================COPYRIGHT====================
-// This file was modified by Oracle on 2016.
-// Modifications copyright (c) 2016, Oracle and/or its affiliates.
-// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
-
-
-====================COPYRIGHT====================
-// This file was modified by Oracle on 2017, 2018.
-// Modifications copyright (c) 2017-2018 Oracle and/or its affiliates.
-// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
-
-
-====================COPYRIGHT====================
-// This file was modified by Oracle on 2017, 2018.
-// Modifications copyright (c) 2017-2018, Oracle and/or its affiliates.
-// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
-
-
-====================COPYRIGHT====================
-// This file was modified by Oracle on 2017.
-// Modifications copyright (c) 2017 Oracle and/or its affiliates.
-// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
-
-
-====================COPYRIGHT====================
-// This file was modified by Oracle on 2017.
-// Modifications copyright (c) 2017, Oracle and/or its affiliates.
-// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
-
-
-====================COPYRIGHT====================
-// copyright (c) 2005
-// troy d. straszheim <troy@resophonic.com>
-// http://www.resophonic.com
-
-
-====================COPYRIGHT====================
-// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
-
-
-====================COPYRIGHT====================
-// is handled by pj_transform.c.
-// Author: Frank Warmerdam, warmerdam@pobox.com
-// Copyright (c) 2002, Frank Warmerdam
-
-
-====================COPYRIGHT====================
-// to the right implementation method. Most of the implementation details
-// are in separate headers and copyright Xiaogang Zhang.
-
-
-====================COPYRIGHT====================
-//! Copyright (c) 2011
-//! Brandon Kohn
-
-
-====================COPYRIGHT====================
-//! Copyright (c) 2011-2012
-//! Brandon Kohn
-
-
-====================COPYRIGHT====================
-/// @author Copyright (c) 2010 2015 Francisco José Tapia (fjtapia@gmail.com )\n
-/// Distributed under the Boost Software License, Version 1.0.\n
-/// ( See accompanyingfile LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-/// @author Copyright (c) 2015 Francisco José Tapia (fjtapia@gmail.com )\n
-/// Distributed under the Boost Software License, Version 1.0.\n
-/// ( See accompanyingfile LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-/// @author Copyright (c) 2016 Francisco Jose Tapia (fjtapia@gmail.com )\n
-/// Distributed under the Boost Software License, Version 1.0.\n
-/// ( See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-/// @author Copyright (c) 2017 Francisco Jose Tapia (fjtapia@gmail.com )\n
-/// Distributed under the Boost Software License, Version 1.0.\n
-/// ( See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-//Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc.
-
-
-====================COPYRIGHT====================
-//Copyright (c) 2006-2009 Emil Dotchevski and Reverge Studios, Inc.
-
-
-====================COPYRIGHT====================
-//Copyright (c) 2006-2010 Emil Dotchevski and Reverge Studios, Inc.
-
-
-====================COPYRIGHT====================
-//Copyright (c) 2006-2013 Emil Dotchevski and Reverge Studios, Inc.
-
-
-====================COPYRIGHT====================
-//Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc.
-
-
-====================COPYRIGHT====================
-//Copyright (c) 2008-2017 Emil Dotchevski and Reverge Studios, Inc.
-
-
-====================COPYRIGHT====================
-@Copyright Barrett Adair 2015-2017
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-@Copyright Barrett Adair 2016-2017
-
-
-====================COPYRIGHT====================
-@copyright Jason Rice 2016
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-@copyright Louis Dionne 2013-2016
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-@copyright Louis Dionne 2013-2017
-@copyright Gonzalo Brito Gadeschi 2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-@copyright Louis Dionne 2013-2017
-@copyright Jason Rice 2017
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-@copyright Louis Dionne 2013-2017
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-@copyright Louis Dionne 2016
-@copyright Jason Rice 2016
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-Author: Joachim Faulhaber
-Copyright (c) 2009-2010: Joachim Faulhaber
-
-
-====================COPYRIGHT====================
-Author: Joachim Faulhaber
-Copyright (c) 2009-2011: Joachim Faulhaber
-
-
-====================COPYRIGHT====================
-Copyright (C) 2002 Brad King (brad.king@kitware.com)
- Douglas Gregor (gregod@cs.rpi.edu)
-
-
-====================COPYRIGHT====================
-Copyright (C) 2002, 2008, 2013 Peter Dimov
-
-
-====================COPYRIGHT====================
-Copyright (C) 2017 Glen Joseph Fernandes (glenjofe@gmail.com)
-
-
-====================COPYRIGHT====================
-Copyright (c) 2007-2009: Joachim Faulhaber
-
-
-====================COPYRIGHT====================
-Copyright (c) 2007-2010: Joachim Faulhaber
-Copyright (c) 1999-2006: Cortex Software GmbH, Kantstrasse 57, Berlin
-
-
-====================COPYRIGHT====================
-Copyright (c) 2007-2011: Joachim Faulhaber
-Copyright (c) 1999-2006: Cortex Software GmbH, Kantstrasse 57, Berlin
-
-
-====================COPYRIGHT====================
-Copyright (c) 2007-2012: Joachim Faulhaber
-Copyright (c) 1999-2006: Cortex Software GmbH, Kantstrasse 57, Berlin
-
-
-====================COPYRIGHT====================
-Copyright (c) 2008-2009: Joachim Faulhaber
-
-
-====================COPYRIGHT====================
-Copyright (c) 2008-2010: Joachim Faulhaber
-
-
-====================COPYRIGHT====================
-Copyright (c) 2008-2011: Joachim Faulhaber
-
-
-====================COPYRIGHT====================
-Copyright (c) 2008-2012: Joachim Faulhaber
-
-
-====================COPYRIGHT====================
-Copyright (c) 2009-2009: Joachim Faulhaber
-
-
-====================COPYRIGHT====================
-Copyright (c) 2010-2010: Joachim Faulhaber
-
-
-====================COPYRIGHT====================
-Copyright (c) 2010-2011: Joachim Faulhaber
-
-
-====================COPYRIGHT====================
-Copyright (c) 2011-2011: Joachim Faulhaber
-
-
-====================COPYRIGHT====================
-Copyright (c) 2013 Agustin Berge http://spirit.sourceforge.net
-
-====================COPYRIGHT====================
-Copyright (c) 2016 Barrett Adair
-
-
-====================COPYRIGHT====================
-Copyright (c) 2016 Frank Hein, maxence business consulting gmbh
-
-
-====================COPYRIGHT====================
-Copyright (c) 2016 Modified Work Barrett Adair
-
-
-====================COPYRIGHT====================
-Copyright 2012-2013 Andreas Angelopoulos
-Copyright 2012-2013 Karsten Ahnert
-Copyright 2012-2013 Mario Mulansky
-
-
-====================COPYRIGHT====================
-Copyright 2012-2015 Glen Joseph Fernandes
-(glenjofe@gmail.com)
-
-
-====================COPYRIGHT====================
-Copyright 2012-2017 Glen Joseph Fernandes
-(glenjofe@gmail.com)
-
-
-====================COPYRIGHT====================
-Copyright 2014 Glen Joseph Fernandes
-(glenjofe@gmail.com)
-
-
-====================COPYRIGHT====================
-Copyright 2014-2015 Glen Joseph Fernandes
-(glenjofe@gmail.com)
-
-
-====================COPYRIGHT====================
-Copyright 2014-2016 Glen Joseph Fernandes
-(glenjofe@gmail.com)
-
-
-====================COPYRIGHT====================
-Copyright 2015 Glen Joseph Fernandes
-(glenjofe@gmail.com)
-
-
-====================COPYRIGHT====================
-Copyright 2015 NumScale SAS
-Copyright 2015 LRI UMR 8623 CNRS/University Paris Sud XI
-
-
-====================COPYRIGHT====================
-Copyright 2017 Glen Joseph Fernandes
-
-
-====================COPYRIGHT====================
-Copyright 2017 Glen Joseph Fernandes
-(glenjofe@gmail.com)
-
-
-====================COPYRIGHT====================
-Copyright 2017-2018 Glen Joseph Fernandes
-
-
-====================COPYRIGHT====================
-Copyright 2017-2018 Glen Joseph Fernandes
-(glenjofe@gmail.com)
-
-
-====================COPYRIGHT====================
-Copyright 2018 Glen Joseph Fernandes
-(glenjofe@gmail.com)
-
-
-====================COPYRIGHT====================
-Copyright 2020-2021 Glen Joseph Fernandes
-(glenjofe@gmail.com)
-
-
-====================COPYRIGHT====================
-Copyright Charly Chevalier 2015
-Copyright Joel Falcou 2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-Copyright James E. King III, 2017
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-Copyright Jessica Hamilton 2014
-Copyright Rene Rivera 2014-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-Copyright Rene Rivera 2005-2016
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-Copyright Rene Rivera 2008-2013
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-Copyright Rene Rivera 2008-2015
-Copyright Franz Detro 2014
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-Copyright Rene Rivera 2008-2017
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-Copyright Rene Rivera 2011-2012
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-Copyright Rene Rivera 2011-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-Copyright Rene Rivera 2012-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-Copyright Rene Rivera 2013
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-Copyright Rene Rivera 2013-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-Copyright Rene Rivera 2014
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-Copyright Rene Rivera 2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-Copyright Rene Rivera 2015-2016
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-Copyright Rene Rivera 2017
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-Copyright Ruslan Baratov 2017
-Copyright Rene Rivera 2017
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================File: LICENSE_1_0.txt====================
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
-
-
-====================MIT====================
-// 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. OF SUCH DAMAGE.
-
-
-====================MIT====================
-// 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.
-
-
-====================Mit-Old-Style====================
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
-
-
-====================Mit-Old-Style====================
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
-
-
-====================Mit-Old-Style====================
-// Permission to use, copy, modify, distribute and sell this software
-// and its documentation for any purpose is hereby granted without fee,
-// provided that the above copyright notice appear in all copies and
-// that both that copyright notice and this permission notice appear
-// in supporting documentation. Hewlett-Packard Company makes no
-// representations about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied warranty.
-
-
-====================Mit-Old-Style====================
-// Permission to use, copy, modify, distribute and sell this software
-// and its documentation for any purpose is hereby granted without fee,
-// provided that the above copyright notice appear in all copies and
-// that both that copyright notice and this permission notice appear
-// in supporting documentation. Silicon Graphics makes no
-// representations about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied warranty.
-
-
-====================Mit-Old-Style====================
-// Permission to use, copy, modify, distribute and sell this software
-// and its documentation for any purpose is hereby granted without fee,
-// provided that the above copyright notice appear in all copies and
-// that both that copyright notice and this permission notice appear
-// in supporting documentation. William E. Kempf makes no representations
-
-
-====================NCSA AND MIT====================
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-
-
-====================Public-Domain====================
- * http://openwall.info/wiki/people/solar/software/public-domain-source-code/md5
- *
- * Author:
- * Alexander Peslyak, better known as Solar Designer <solar at openwall.com>
- *
- * This software was written by Alexander Peslyak in 2001. No copyright is
- * claimed, and the software is hereby placed in the public domain.
- * In case this attempt to disclaim copyright and place the software in the
- * public domain is deemed null and void, then the software is
- * Copyright (c) 2001 Alexander Peslyak and it is hereby released to the
- * general public under the following terms:
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted.
- *
- * There's ABSOLUTELY NO WARRANTY, express or implied.
- *
- */
-
-// Distributed under the Boost Software License, Version 1.0. (See
-
-
-====================Public-Domain====================
-// This also contains public domain code from MurmurHash. From the
-
-
-====================Public-Domain====================
-// MurmurHash3 was written by Austin Appleby, and is placed in the public
-// domain. The author hereby disclaims copyright to this source code.
-
-
-====================Public-Domain====================
-// This code is in the public domain. Anyone may use it or change it in any way that
-
-
-====================Public-Domain====================
-// and is in the public domain.
-
-
-====================Zlib====================
- /* A std::uint16_t is an index in the character window. We use short instead of int to
- * save space in the various tables. IPos is used only for parameter passing.
-
-
-====================Zlib====================
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-
- Jean-loup Gailly Mark Adler
- jloup@gzip.org madler@alumni.caltech.edu
-
-
-====================Zlib====================
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the copyright holder be held liable for
- any damages arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute
- it freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must
- not claim that you wrote the original software. If you use this
- software in a product, an acknowledgment in the product documentation
- would be appreciated but is not required.
-
- 2. Altered source versions must be plainly marked as such, and must
- not be misrepresented as being the original software.
-
- 3. This notice may not be removed or altered from any source
- distribution.
-
-
-====================Zlib====================
- This source code is provided 'as-is', without any express or implied
- warranty. In no event will the author be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this source code must not be misrepresented; you must not
- claim that you wrote the original source code. If you use this source code
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
-
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original source code.
-
- 3. This notice may not be removed or altered from any source distribution.
-
-
-====================Zlib====================
-// This software is provided 'as-is', without any express or implied warranty. In no event will the
-// authors be held liable for any damages arising from the use of this software.
-// Permission is granted to anyone to use this software for any purpose, including commercial
-// applications, and to alter it and redistribute it freely, subject to the following restrictions:
-// 1. The origin of this software must not be misrepresented; you must not claim that you wrote the
-// original software. If you use this software in a product, an acknowledgment in the product
-// documentation would be appreciated but is not required.
-// 2. Altered source versions must be plainly marked as such, and must not be misrepresented as
-// being the original software.
-// 3. This notice may not be removed or altered from any source distribution.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Stefan Seefeld 2005.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Thorsten Ottosen, 2009.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Vicente J. Botet Escriba 2010
+
+
+====================COPYRIGHT====================
+// Copyright Vladimir Prus 2002-2004.
+// Copyright Bertolt Mildner 2004.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt
+
+
+====================COPYRIGHT====================
+// Copyright Vladimir Prus 2002-2004.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt
+
+
+====================COPYRIGHT====================
+// Copyright Vladimir Prus 2002.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Vladimir Prus 2004.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt
+
+
+====================COPYRIGHT====================
+// Copyright for the original version:
+// Copyright 2005 David Abrahams and Aleksey Gurtovoy. Distributed
+// under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Portions Copyright (C) 2002 David Abrahams
+
+
+====================COPYRIGHT====================
+// This file was modified by Oracle on 2013, 2014, 2015.
+// Modifications copyright (c) 2013-2015 Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// This file was modified by Oracle on 2013, 2014, 2015.
+// Modifications copyright (c) 2013-2015, Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// This file was modified by Oracle on 2013, 2014, 2017.
+// Modifications copyright (c) 2013-2017 Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// This file was modified by Oracle on 2013, 2014.
+// Modifications copyright (c) 2013, 2014 Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// This file was modified by Oracle on 2013, 2014.
+// Modifications copyright (c) 2013, 2014, Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// This file was modified by Oracle on 2013, 2014.
+// Modifications copyright (c) 2013-2014 Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// This file was modified by Oracle on 2013-2014.
+// Modifications copyright (c) 2013-2014, Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// This file was modified by Oracle on 2013-2016.
+// Modifications copyright (c) 2013-2016 Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// This file was modified by Oracle on 2013-2017.
+// Modifications copyright (c) 2013-2017, Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// This file was modified by Oracle on 2013.
+// Modifications copyright (c) 2013, Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// This file was modified by Oracle on 2014, 2015.
+// Modifications copyright (c) 2014-2015 Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// This file was modified by Oracle on 2014, 2015.
+// Modifications copyright (c) 2014-2015, Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// This file was modified by Oracle on 2014, 2016, 2017.
+// Modifications copyright (c) 2014-2017, Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// This file was modified by Oracle on 2014, 2017.
+// Modifications copyright (c) 2014-2017 Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// This file was modified by Oracle on 2014-2018.
+// Modifications copyright (c) 2014-2018 Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// This file was modified by Oracle on 2014.
+// Modifications copyright (c) 2014 Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// This file was modified by Oracle on 2014.
+// Modifications copyright (c) 2014, Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// This file was modified by Oracle on 2015, 2016.
+// Modifications copyright (c) 2015-2016 Oracle and/or its affiliates.
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+
+====================COPYRIGHT====================
+// This file was modified by Oracle on 2015, 2016.
+// Modifications copyright (c) 2015-2016, Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// This file was modified by Oracle on 2015, 2017.
+// Modifications copyright (c) 2015-2017 Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// This file was modified by Oracle on 2015, 2017.
+// Modifications copyright (c) 2015-2017, Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// This file was modified by Oracle on 2015.
+// Modifications copyright (c) 2015 Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// This file was modified by Oracle on 2015.
+// Modifications copyright (c) 2015, Oracle and/or its affiliates.
+
+
+====================COPYRIGHT====================
+// This file was modified by Oracle on 2016, 2017.
+// Modifications copyright (c) 2016-2017, Oracle and/or its affiliates.
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+
+====================COPYRIGHT====================
+// This file was modified by Oracle on 2016-2017.
+// Modifications copyright (c) 2016-2017 Oracle and/or its affiliates.
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+
+====================COPYRIGHT====================
+// This file was modified by Oracle on 2016.
+// Modifications copyright (c) 2016 Oracle and/or its affiliates.
+// Contributed and/or modified by Vissarion Fysikopoulos, on behalf of Oracle
+
+
+====================COPYRIGHT====================
+// This file was modified by Oracle on 2016.
+// Modifications copyright (c) 2016, Oracle and/or its affiliates.
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+
+====================COPYRIGHT====================
+// This file was modified by Oracle on 2017, 2018.
+// Modifications copyright (c) 2017-2018 Oracle and/or its affiliates.
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+
+====================COPYRIGHT====================
+// This file was modified by Oracle on 2017, 2018.
+// Modifications copyright (c) 2017-2018, Oracle and/or its affiliates.
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+
+====================COPYRIGHT====================
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017 Oracle and/or its affiliates.
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+
+====================COPYRIGHT====================
+// This file was modified by Oracle on 2017.
+// Modifications copyright (c) 2017, Oracle and/or its affiliates.
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+
+====================COPYRIGHT====================
+// copyright (c) 2005
+// troy d. straszheim <troy@resophonic.com>
+// http://www.resophonic.com
+
+
+====================COPYRIGHT====================
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+
+====================COPYRIGHT====================
+// is handled by pj_transform.c.
+// Author: Frank Warmerdam, warmerdam@pobox.com
+// Copyright (c) 2002, Frank Warmerdam
+
+
+====================COPYRIGHT====================
+// to the right implementation method. Most of the implementation details
+// are in separate headers and copyright Xiaogang Zhang.
+
+
+====================COPYRIGHT====================
+//! Copyright (c) 2011
+//! Brandon Kohn
+
+
+====================COPYRIGHT====================
+//! Copyright (c) 2011-2012
+//! Brandon Kohn
+
+
+====================COPYRIGHT====================
+/// @author Copyright (c) 2010 2015 Francisco José Tapia (fjtapia@gmail.com )\n
+/// Distributed under the Boost Software License, Version 1.0.\n
+/// ( See accompanyingfile LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+/// @author Copyright (c) 2015 Francisco José Tapia (fjtapia@gmail.com )\n
+/// Distributed under the Boost Software License, Version 1.0.\n
+/// ( See accompanyingfile LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+/// @author Copyright (c) 2016 Francisco Jose Tapia (fjtapia@gmail.com )\n
+/// Distributed under the Boost Software License, Version 1.0.\n
+/// ( See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+/// @author Copyright (c) 2017 Francisco Jose Tapia (fjtapia@gmail.com )\n
+/// Distributed under the Boost Software License, Version 1.0.\n
+/// ( See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+//Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc.
+
+
+====================COPYRIGHT====================
+//Copyright (c) 2006-2009 Emil Dotchevski and Reverge Studios, Inc.
+
+
+====================COPYRIGHT====================
+//Copyright (c) 2006-2010 Emil Dotchevski and Reverge Studios, Inc.
+
+
+====================COPYRIGHT====================
+//Copyright (c) 2006-2013 Emil Dotchevski and Reverge Studios, Inc.
+
+
+====================COPYRIGHT====================
+//Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc.
+
+
+====================COPYRIGHT====================
+//Copyright (c) 2008-2017 Emil Dotchevski and Reverge Studios, Inc.
+
+
+====================COPYRIGHT====================
+@Copyright Barrett Adair 2015-2017
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+@Copyright Barrett Adair 2016-2017
+
+
+====================COPYRIGHT====================
+@copyright Jason Rice 2016
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+@copyright Louis Dionne 2013-2016
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+@copyright Louis Dionne 2013-2017
+@copyright Gonzalo Brito Gadeschi 2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+@copyright Louis Dionne 2013-2017
+@copyright Jason Rice 2017
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+@copyright Louis Dionne 2013-2017
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+@copyright Louis Dionne 2016
+@copyright Jason Rice 2016
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+Author: Joachim Faulhaber
+Copyright (c) 2009-2010: Joachim Faulhaber
+
+
+====================COPYRIGHT====================
+Author: Joachim Faulhaber
+Copyright (c) 2009-2011: Joachim Faulhaber
+
+
+====================COPYRIGHT====================
+Copyright (C) 2002 Brad King (brad.king@kitware.com)
+ Douglas Gregor (gregod@cs.rpi.edu)
+
+
+====================COPYRIGHT====================
+Copyright (C) 2002, 2008, 2013 Peter Dimov
+
+
+====================COPYRIGHT====================
+Copyright (C) 2017 Glen Joseph Fernandes (glenjofe@gmail.com)
+
+
+====================COPYRIGHT====================
+Copyright (c) 2007-2009: Joachim Faulhaber
+
+
+====================COPYRIGHT====================
+Copyright (c) 2007-2010: Joachim Faulhaber
+Copyright (c) 1999-2006: Cortex Software GmbH, Kantstrasse 57, Berlin
+
+
+====================COPYRIGHT====================
+Copyright (c) 2007-2011: Joachim Faulhaber
+Copyright (c) 1999-2006: Cortex Software GmbH, Kantstrasse 57, Berlin
+
+
+====================COPYRIGHT====================
+Copyright (c) 2007-2012: Joachim Faulhaber
+Copyright (c) 1999-2006: Cortex Software GmbH, Kantstrasse 57, Berlin
+
+
+====================COPYRIGHT====================
+Copyright (c) 2008-2009: Joachim Faulhaber
+
+
+====================COPYRIGHT====================
+Copyright (c) 2008-2010: Joachim Faulhaber
+
+
+====================COPYRIGHT====================
+Copyright (c) 2008-2011: Joachim Faulhaber
+
+
+====================COPYRIGHT====================
+Copyright (c) 2008-2012: Joachim Faulhaber
+
+
+====================COPYRIGHT====================
+Copyright (c) 2009-2009: Joachim Faulhaber
+
+
+====================COPYRIGHT====================
+Copyright (c) 2010-2010: Joachim Faulhaber
+
+
+====================COPYRIGHT====================
+Copyright (c) 2010-2011: Joachim Faulhaber
+
+
+====================COPYRIGHT====================
+Copyright (c) 2011-2011: Joachim Faulhaber
+
+
+====================COPYRIGHT====================
+Copyright (c) 2013 Agustin Berge http://spirit.sourceforge.net
+
+====================COPYRIGHT====================
+Copyright (c) 2016 Barrett Adair
+
+
+====================COPYRIGHT====================
+Copyright (c) 2016 Frank Hein, maxence business consulting gmbh
+
+
+====================COPYRIGHT====================
+Copyright (c) 2016 Modified Work Barrett Adair
+
+
+====================COPYRIGHT====================
+Copyright 2012-2013 Andreas Angelopoulos
+Copyright 2012-2013 Karsten Ahnert
+Copyright 2012-2013 Mario Mulansky
+
+
+====================COPYRIGHT====================
+Copyright 2012-2015 Glen Joseph Fernandes
+(glenjofe@gmail.com)
+
+
+====================COPYRIGHT====================
+Copyright 2012-2017 Glen Joseph Fernandes
+(glenjofe@gmail.com)
+
+
+====================COPYRIGHT====================
+Copyright 2014 Glen Joseph Fernandes
+(glenjofe@gmail.com)
+
+
+====================COPYRIGHT====================
+Copyright 2014-2015 Glen Joseph Fernandes
+(glenjofe@gmail.com)
+
+
+====================COPYRIGHT====================
+Copyright 2014-2016 Glen Joseph Fernandes
+(glenjofe@gmail.com)
+
+
+====================COPYRIGHT====================
+Copyright 2015 Glen Joseph Fernandes
+(glenjofe@gmail.com)
+
+
+====================COPYRIGHT====================
+Copyright 2015 NumScale SAS
+Copyright 2015 LRI UMR 8623 CNRS/University Paris Sud XI
+
+
+====================COPYRIGHT====================
+Copyright 2017 Glen Joseph Fernandes
+
+
+====================COPYRIGHT====================
+Copyright 2017 Glen Joseph Fernandes
+(glenjofe@gmail.com)
+
+
+====================COPYRIGHT====================
+Copyright 2017-2018 Glen Joseph Fernandes
+
+
+====================COPYRIGHT====================
+Copyright 2017-2018 Glen Joseph Fernandes
+(glenjofe@gmail.com)
+
+
+====================COPYRIGHT====================
+Copyright 2018 Glen Joseph Fernandes
+(glenjofe@gmail.com)
+
+
+====================COPYRIGHT====================
+Copyright 2020-2021 Glen Joseph Fernandes
+(glenjofe@gmail.com)
+
+
+====================COPYRIGHT====================
+Copyright Charly Chevalier 2015
+Copyright Joel Falcou 2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+Copyright James E. King III, 2017
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+Copyright Jessica Hamilton 2014
+Copyright Rene Rivera 2014-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+Copyright Rene Rivera 2005-2016
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+Copyright Rene Rivera 2008-2013
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+Copyright Rene Rivera 2008-2015
+Copyright Franz Detro 2014
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+Copyright Rene Rivera 2008-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+Copyright Rene Rivera 2008-2017
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+Copyright Rene Rivera 2011-2012
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+Copyright Rene Rivera 2011-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+Copyright Rene Rivera 2012-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+Copyright Rene Rivera 2013
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+Copyright Rene Rivera 2013-2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+Copyright Rene Rivera 2014
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+Copyright Rene Rivera 2015
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+Copyright Rene Rivera 2015-2016
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+Copyright Rene Rivera 2017
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+Copyright Ruslan Baratov 2017
+Copyright Rene Rivera 2017
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================File: LICENSE_1_0.txt====================
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+
+====================MIT====================
+// 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. OF SUCH DAMAGE.
+
+
+====================MIT====================
+// 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.
+
+
+====================Mit-Old-Style====================
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation. Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose. It is provided "as is" without express or implied warranty.
+
+
+====================Mit-Old-Style====================
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation. Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose. It is provided "as is" without express or implied warranty.
+
+
+====================Mit-Old-Style====================
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee,
+// provided that the above copyright notice appear in all copies and
+// that both that copyright notice and this permission notice appear
+// in supporting documentation. Hewlett-Packard Company makes no
+// representations about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied warranty.
+
+
+====================Mit-Old-Style====================
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee,
+// provided that the above copyright notice appear in all copies and
+// that both that copyright notice and this permission notice appear
+// in supporting documentation. Silicon Graphics makes no
+// representations about the suitability of this software for any
+// purpose. It is provided "as is" without express or implied warranty.
+
+
+====================Mit-Old-Style====================
+// Permission to use, copy, modify, distribute and sell this software
+// and its documentation for any purpose is hereby granted without fee,
+// provided that the above copyright notice appear in all copies and
+// that both that copyright notice and this permission notice appear
+// in supporting documentation. William E. Kempf makes no representations
+
+
+====================NCSA AND MIT====================
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+
+
+====================Public-Domain====================
+ * http://openwall.info/wiki/people/solar/software/public-domain-source-code/md5
+ *
+ * Author:
+ * Alexander Peslyak, better known as Solar Designer <solar at openwall.com>
+ *
+ * This software was written by Alexander Peslyak in 2001. No copyright is
+ * claimed, and the software is hereby placed in the public domain.
+ * In case this attempt to disclaim copyright and place the software in the
+ * public domain is deemed null and void, then the software is
+ * Copyright (c) 2001 Alexander Peslyak and it is hereby released to the
+ * general public under the following terms:
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted.
+ *
+ * There's ABSOLUTELY NO WARRANTY, express or implied.
+ *
+ */
+
+// Distributed under the Boost Software License, Version 1.0. (See
+
+
+====================Public-Domain====================
+// This also contains public domain code from MurmurHash. From the
+
+
+====================Public-Domain====================
+// MurmurHash3 was written by Austin Appleby, and is placed in the public
+// domain. The author hereby disclaims copyright to this source code.
+
+
+====================Public-Domain====================
+// This code is in the public domain. Anyone may use it or change it in any way that
+
+
+====================Public-Domain====================
+// and is in the public domain.
+
+
+====================Zlib====================
+ /* A std::uint16_t is an index in the character window. We use short instead of int to
+ * save space in the various tables. IPos is used only for parameter passing.
+
+
+====================Zlib====================
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source distribution.
+
+ Jean-loup Gailly Mark Adler
+ jloup@gzip.org madler@alumni.caltech.edu
+
+
+====================Zlib====================
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the copyright holder be held liable for
+ any damages arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute
+ it freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must
+ not claim that you wrote the original software. If you use this
+ software in a product, an acknowledgment in the product documentation
+ would be appreciated but is not required.
+
+ 2. Altered source versions must be plainly marked as such, and must
+ not be misrepresented as being the original software.
+
+ 3. This notice may not be removed or altered from any source
+ distribution.
+
+
+====================Zlib====================
+ This source code is provided 'as-is', without any express or implied
+ warranty. In no event will the author be held liable for any damages
+ arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this source code must not be misrepresented; you must not
+ claim that you wrote the original source code. If you use this source code
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original source code.
+
+ 3. This notice may not be removed or altered from any source distribution.
+
+
+====================Zlib====================
+// This software is provided 'as-is', without any express or implied warranty. In no event will the
+// authors be held liable for any damages arising from the use of this software.
+// Permission is granted to anyone to use this software for any purpose, including commercial
+// applications, and to alter it and redistribute it freely, subject to the following restrictions:
+// 1. The origin of this software must not be misrepresented; you must not claim that you wrote the
+// original software. If you use this software in a product, an acknowledgment in the product
+// documentation would be appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be misrepresented as
+// being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
diff --git a/contrib/restricted/boost/LICENSE_1_0.txt b/contrib/restricted/boost/LICENSE_1_0.txt
index a5e31aa98d..36b7cd93cd 100644
--- a/contrib/restricted/boost/LICENSE_1_0.txt
+++ b/contrib/restricted/boost/LICENSE_1_0.txt
@@ -1,23 +1,23 @@
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/contrib/restricted/boost/arcadia_test/ya.make b/contrib/restricted/boost/arcadia_test/ya.make
index 1f67be9cf9..9d9ba18de9 100644
--- a/contrib/restricted/boost/arcadia_test/ya.make
+++ b/contrib/restricted/boost/arcadia_test/ya.make
@@ -2,8 +2,8 @@ OWNER(rb:yatool)
UNITTEST()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
SRCS(
test_shared_ptr.cpp
)
diff --git a/contrib/restricted/boost/boost/concept/detail/msvc.hpp b/contrib/restricted/boost/boost/concept/detail/msvc.hpp
index b5176dbe48..09d325ceeb 100644
--- a/contrib/restricted/boost/boost/concept/detail/msvc.hpp
+++ b/contrib/restricted/boost/boost/concept/detail/msvc.hpp
@@ -18,11 +18,11 @@
# pragma warning(disable:4100)
# endif
-# if defined(__clang__)
-# pragma clang diagnostic push
-# pragma clang diagnostic ignored "-Wnon-virtual-dtor"
-# endif
-
+# if defined(__clang__)
+# pragma clang diagnostic push
+# pragma clang diagnostic ignored "-Wnon-virtual-dtor"
+# endif
+
namespace boost { namespace concepts {
@@ -121,10 +121,10 @@ enum \
# endif
}}
-# if defined(__clang__)
-# pragma clang diagnostic pop
-# endif
-
+# if defined(__clang__)
+# pragma clang diagnostic pop
+# endif
+
# ifdef BOOST_MSVC
# pragma warning(pop)
# endif
diff --git a/contrib/restricted/boost/boost/config/detail/select_compiler_config.hpp b/contrib/restricted/boost/boost/config/detail/select_compiler_config.hpp
index f652a0ff27..727f11bff6 100644
--- a/contrib/restricted/boost/boost/config/detail/select_compiler_config.hpp
+++ b/contrib/restricted/boost/boost/config/detail/select_compiler_config.hpp
@@ -39,7 +39,7 @@
// Intel
# define BOOST_COMPILER_CONFIG "boost/config/compiler/intel.hpp"
-#elif defined __clang__ && !defined(__CUDACC__) && !defined(__ibmxl__) && !defined(_MSC_VER)
+#elif defined __clang__ && !defined(__CUDACC__) && !defined(__ibmxl__) && !defined(_MSC_VER)
// when using clang and cuda at same time, you want to appear as gcc
// Clang C++ emulates GCC, so it has to appear early.
# define BOOST_COMPILER_CONFIG "boost/config/compiler/clang.hpp"
diff --git a/contrib/restricted/boost/boost/type_traits/type_with_alignment.hpp b/contrib/restricted/boost/boost/type_traits/type_with_alignment.hpp
index 4628fa53fe..591f213b46 100644
--- a/contrib/restricted/boost/boost/type_traits/type_with_alignment.hpp
+++ b/contrib/restricted/boost/boost/type_traits/type_with_alignment.hpp
@@ -83,7 +83,7 @@ struct type_with_alignment
typedef typename boost::detail::char_alignment<Align, boost::alignment_of<char>::value >= Align>::type type;
};
-#if (defined(__GNUC__) || (defined (__SUNPRO_CC) && (__SUNPRO_CC >= 0x5130)) || defined(__clang__)) && !defined(BOOST_TT_DISABLE_INTRINSICS) && !defined(_MSC_VER)
+#if (defined(__GNUC__) || (defined (__SUNPRO_CC) && (__SUNPRO_CC >= 0x5130)) || defined(__clang__)) && !defined(BOOST_TT_DISABLE_INTRINSICS) && !defined(_MSC_VER)
namespace tt_align_ns {
struct __attribute__((__aligned__(2))) a2 {};
struct __attribute__((__aligned__(4))) a4 {};
diff --git a/contrib/restricted/boost/libs/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/.yandex_meta/licenses.list.txt
index d755c13f43..db29dd547c 100644
--- a/contrib/restricted/boost/libs/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/boost/libs/.yandex_meta/licenses.list.txt
@@ -1,72 +1,72 @@
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2016 Raffi Enficiaud.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Gennadiy Rozental 2005-2010.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Gennadiy Rozental 2006-2010.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Gennadiy Rozental 2011.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (c) Copyright Raffi Enficiaud 2017.
-// Distributed under the Boost Software License, Version 1.0.
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================File: LICENSE_1_0.txt====================
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2016 Raffi Enficiaud.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Gennadiy Rozental 2005-2010.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Gennadiy Rozental 2006-2010.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Gennadiy Rozental 2011.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (c) Copyright Raffi Enficiaud 2017.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================File: LICENSE_1_0.txt====================
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/contrib/restricted/boost/libs/asio/ya.make b/contrib/restricted/boost/libs/asio/ya.make
index 4ec20e2f76..127ba91c55 100644
--- a/contrib/restricted/boost/libs/asio/ya.make
+++ b/contrib/restricted/boost/libs/asio/ya.make
@@ -1,16 +1,16 @@
LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
LICENSE(BSL-1.0)
VERSION(1.67)
-OWNER(
- antoshkka
- g:cpp-committee
- g:cpp-contrib
-)
+OWNER(
+ antoshkka
+ g:cpp-committee
+ g:cpp-contrib
+)
INCLUDE(${ARCADIA_ROOT}/contrib/restricted/boost/boost_common.inc)
diff --git a/contrib/restricted/boost/libs/atomic/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/atomic/.yandex_meta/licenses.list.txt
index 1855b41790..445e6b59c5 100644
--- a/contrib/restricted/boost/libs/atomic/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/boost/libs/atomic/.yandex_meta/licenses.list.txt
@@ -1,39 +1,39 @@
-====================BSL-1.0====================
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
- * Copyright (c) 2011 Helge Bahmann
- * Copyright (c) 2013-2014 Andrey Semashev
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2011 Helge Bahmann
-
-
-====================File: LICENSE_1_0.txt====================
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+====================BSL-1.0====================
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 2011 Helge Bahmann
+ * Copyright (c) 2013-2014 Andrey Semashev
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2011 Helge Bahmann
+
+
+====================File: LICENSE_1_0.txt====================
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/contrib/restricted/boost/libs/atomic/ya.make b/contrib/restricted/boost/libs/atomic/ya.make
index 1475f6cdbb..7bbe714418 100644
--- a/contrib/restricted/boost/libs/atomic/ya.make
+++ b/contrib/restricted/boost/libs/atomic/ya.make
@@ -2,14 +2,14 @@ LIBRARY()
LICENSE(BSL-1.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
+OWNER(
+ antoshkka
+ g:cpp-committee
+ g:cpp-contrib
+)
-OWNER(
- antoshkka
- g:cpp-committee
- g:cpp-contrib
-)
-
INCLUDE(${ARCADIA_ROOT}/contrib/restricted/boost/boost_common.inc)
SRCS(
diff --git a/contrib/restricted/boost/libs/chrono/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/chrono/.yandex_meta/licenses.list.txt
index a2bba69b95..261729da1d 100644
--- a/contrib/restricted/boost/libs/chrono/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/boost/libs/chrono/.yandex_meta/licenses.list.txt
@@ -1,86 +1,86 @@
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or
-// copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// See http://www.boost.org/LICENSE_1_0.txt
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost
-// Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or
-// copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Howard Hinnant
-// Copyright 2011 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// Copyright 2009-2010 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// Copyright 2009-2011 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// Copyright 2010 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 2003, 2006, 2008
-// Copyright 2009-2011 Vicente J. Botet Escriba
-// Copyright (c) Microsoft Corporation 2014
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 2008
-// Copyright Vicente J. Botet Escriba 2009
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 2008
-// Copyright Vicente J. Botet Escriba 2009-2010
-
-
-====================COPYRIGHT====================
-// (C) Copyright Vicente J. Botet Escriba 2010.
-// Distributed under the Boost
-// Software License, Version 1.0.
-
-
-====================File: LICENSE_1_0.txt====================
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or
+// copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// See http://www.boost.org/LICENSE_1_0.txt
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost
+// Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or
+// copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Howard Hinnant
+// Copyright 2011 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// Copyright 2009-2010 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// Copyright 2009-2011 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// Copyright 2010 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 2003, 2006, 2008
+// Copyright 2009-2011 Vicente J. Botet Escriba
+// Copyright (c) Microsoft Corporation 2014
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 2008
+// Copyright Vicente J. Botet Escriba 2009
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 2008
+// Copyright Vicente J. Botet Escriba 2009-2010
+
+
+====================COPYRIGHT====================
+// (C) Copyright Vicente J. Botet Escriba 2010.
+// Distributed under the Boost
+// Software License, Version 1.0.
+
+
+====================File: LICENSE_1_0.txt====================
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/contrib/restricted/boost/libs/chrono/ya.make b/contrib/restricted/boost/libs/chrono/ya.make
index b2c56bd4b8..e9f2172645 100644
--- a/contrib/restricted/boost/libs/chrono/ya.make
+++ b/contrib/restricted/boost/libs/chrono/ya.make
@@ -2,14 +2,14 @@ LIBRARY()
LICENSE(BSL-1.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
+OWNER(
+ antoshkka
+ g:cpp-committee
+ g:cpp-contrib
+)
-OWNER(
- antoshkka
- g:cpp-committee
- g:cpp-contrib
-)
-
INCLUDE(${ARCADIA_ROOT}/contrib/restricted/boost/boost_common.inc)
SRCS(
diff --git a/contrib/restricted/boost/libs/container/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/container/.yandex_meta/licenses.list.txt
index bc55018fe6..86ed39445e 100644
--- a/contrib/restricted/boost/libs/container/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/boost/libs/container/.yandex_meta/licenses.list.txt
@@ -1,65 +1,65 @@
-====================BSL-1.0====================
-// (C) Copyright Ion Gaztanaga 2007-2015. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Ion Gaztanaga 2012-2013. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// (C) Copyright Ion Gaztanaga 2015-2015. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================CC0-1.0====================
- Doug Lea and released to the public domain, as explained at
- http://creativecommons.org/publicdomain/zero/1.0/ Send questions,
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2007-2015. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2012-2013. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Ion Gaztanaga 2015-2015. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================File: LICENSE_1_0.txt====================
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+====================BSL-1.0====================
+// (C) Copyright Ion Gaztanaga 2007-2015. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Ion Gaztanaga 2012-2013. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// (C) Copyright Ion Gaztanaga 2015-2015. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================CC0-1.0====================
+ Doug Lea and released to the public domain, as explained at
+ http://creativecommons.org/publicdomain/zero/1.0/ Send questions,
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2007-2015. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2012-2013. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Ion Gaztanaga 2015-2015. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================File: LICENSE_1_0.txt====================
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/contrib/restricted/boost/libs/container/ya.make b/contrib/restricted/boost/libs/container/ya.make
index 160e785808..bc9a2cd150 100644
--- a/contrib/restricted/boost/libs/container/ya.make
+++ b/contrib/restricted/boost/libs/container/ya.make
@@ -1,18 +1,18 @@
LIBRARY()
-LICENSE(
- BSL-1.0 AND
- CC0-1.0
-)
+LICENSE(
+ BSL-1.0 AND
+ CC0-1.0
+)
+
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+OWNER(
+ antoshkka
+ g:cpp-committee
+ g:cpp-contrib
+)
-OWNER(
- antoshkka
- g:cpp-committee
- g:cpp-contrib
-)
-
INCLUDE(${ARCADIA_ROOT}/contrib/restricted/boost/boost_common.inc)
SRCS(
diff --git a/contrib/restricted/boost/libs/context/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/context/.yandex_meta/licenses.list.txt
index 33785bdbf9..79fa1e073c 100644
--- a/contrib/restricted/boost/libs/context/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/boost/libs/context/.yandex_meta/licenses.list.txt
@@ -1,91 +1,91 @@
-====================BSL-1.0====================
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-; Distributed under the Boost Software License, Version 1.0.
-; (See accompanying file LICENSE_1_0.txt or copy at
-; http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-; Distributed under the Boost Software License, Version 1.0.
-; (See accompanying file LICENSE_1_0.txt or copy at
-; http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
- Copyright Oliver Kowalke 2009.
- Copyright Thomas Sailer 2013.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
- Copyright Sergue E. Leontiev 2013.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
- Copyright Edward Nevill + Oliver Kowalke 2015
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Oliver Kowalke 2009.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Oliver Kowalke 2014.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Oliver Kowalke 2017.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================File: LICENSE_1_0.txt====================
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+====================BSL-1.0====================
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+; Distributed under the Boost Software License, Version 1.0.
+; (See accompanying file LICENSE_1_0.txt or copy at
+; http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+; Distributed under the Boost Software License, Version 1.0.
+; (See accompanying file LICENSE_1_0.txt or copy at
+; http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+ Copyright Oliver Kowalke 2009.
+ Copyright Thomas Sailer 2013.
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+ Copyright Sergue E. Leontiev 2013.
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+ Copyright Edward Nevill + Oliver Kowalke 2015
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Oliver Kowalke 2009.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Oliver Kowalke 2014.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Oliver Kowalke 2017.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================File: LICENSE_1_0.txt====================
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/contrib/restricted/boost/libs/context/ya.make b/contrib/restricted/boost/libs/context/ya.make
index adfec6e3e8..0ed9d696fe 100644
--- a/contrib/restricted/boost/libs/context/ya.make
+++ b/contrib/restricted/boost/libs/context/ya.make
@@ -2,19 +2,19 @@ LIBRARY()
LICENSE(BSL-1.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
+OWNER(
+ antoshkka
+ g:cpp-committee
+ g:cpp-contrib
+)
-OWNER(
- antoshkka
- g:cpp-committee
- g:cpp-contrib
-)
-
INCLUDE(${ARCADIA_ROOT}/contrib/restricted/boost/boost_common.inc)
-CFLAGS(
- -DBOOST_CONTEXT_SOURCE
-)
+CFLAGS(
+ -DBOOST_CONTEXT_SOURCE
+)
# https://www.boost.org/doc/libs/1_74_0/libs/context/doc/html/context/stack/sanitizers.html
IF (SANITIZER_TYPE == "address")
@@ -56,7 +56,7 @@ IF (OS_WINDOWS)
src/asm/jump_arm_aapcs_pe_armasm.masm
src/asm/make_arm_aapcs_pe_armasm.masm
src/asm/ontop_arm_aapcs_pe_armasm.masm
- )
+ )
ENDIF()
ELSEIF (OS_DARWIN OR OS_IOS)
IF (ARCH_ARM7)
diff --git a/contrib/restricted/boost/libs/coroutine/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/coroutine/.yandex_meta/licenses.list.txt
index 98deecab99..e36f8b9042 100644
--- a/contrib/restricted/boost/libs/coroutine/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/boost/libs/coroutine/.yandex_meta/licenses.list.txt
@@ -1,36 +1,36 @@
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright Oliver Kowalke 2009.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================File: LICENSE_1_0.txt====================
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright Oliver Kowalke 2009.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================File: LICENSE_1_0.txt====================
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/contrib/restricted/boost/libs/coroutine/ya.make b/contrib/restricted/boost/libs/coroutine/ya.make
index 013c462df4..b0093b9475 100644
--- a/contrib/restricted/boost/libs/coroutine/ya.make
+++ b/contrib/restricted/boost/libs/coroutine/ya.make
@@ -2,14 +2,14 @@ LIBRARY()
LICENSE(BSL-1.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
-OWNER(
- antoshkka
- g:cpp-committee
- g:cpp-contrib
-)
-
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
+OWNER(
+ antoshkka
+ g:cpp-committee
+ g:cpp-contrib
+)
+
INCLUDE(${ARCADIA_ROOT}/contrib/restricted/boost/boost_common.inc)
PEERDIR(
diff --git a/contrib/restricted/boost/libs/date_time/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/date_time/.yandex_meta/licenses.list.txt
index 436ba23219..06ca92039d 100644
--- a/contrib/restricted/boost/libs/date_time/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/boost/libs/date_time/.yandex_meta/licenses.list.txt
@@ -1,50 +1,50 @@
-====================BSL-1.0====================
- * Use, modification and distribution is subject to the
- * Boost Software License, Version 1.0. (See accompanying
- * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+====================BSL-1.0====================
* Use, modification and distribution is subject to the
- * Boost Software License, Version 1.0. (See accompanying
-
-
-====================COPYRIGHT====================
-/* Copyright (c) 2002-2004 CrystalClear Software, Inc.
- * Subject to the Boost Software License, Version 1.0. (See accompanying
- * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
- * Author: Jeff Garland, Bart Garst
- * $Date$
-
-
-====================COPYRIGHT====================
-/* Copyright (c) 2002-2005 CrystalClear Software, Inc.
- * Use, modification and distribution is subject to the
- * Boost Software License, Version 1.0. (See accompanying
-
-
-====================File: LICENSE_1_0.txt====================
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+
+
+====================COPYRIGHT====================
+/* Copyright (c) 2002-2004 CrystalClear Software, Inc.
+ * Subject to the Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date$
+
+
+====================COPYRIGHT====================
+/* Copyright (c) 2002-2005 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+
+
+====================File: LICENSE_1_0.txt====================
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/contrib/restricted/boost/libs/date_time/ya.make b/contrib/restricted/boost/libs/date_time/ya.make
index 2486eccc96..21ad128e07 100644
--- a/contrib/restricted/boost/libs/date_time/ya.make
+++ b/contrib/restricted/boost/libs/date_time/ya.make
@@ -2,14 +2,14 @@ LIBRARY()
LICENSE(BSL-1.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
+OWNER(
+ antoshkka
+ g:cpp-committee
+ g:cpp-contrib
+)
-OWNER(
- antoshkka
- g:cpp-committee
- g:cpp-contrib
-)
-
INCLUDE(${ARCADIA_ROOT}/contrib/restricted/boost/boost_common.inc)
SRCS(
diff --git a/contrib/restricted/boost/libs/exception/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/exception/.yandex_meta/licenses.list.txt
index a8b5b9f585..ef636c0de3 100644
--- a/contrib/restricted/boost/libs/exception/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/boost/libs/exception/.yandex_meta/licenses.list.txt
@@ -1,33 +1,33 @@
-====================BSL-1.0====================
-//Distributed under the Boost Software License, Version 1.0. (See accompanying
-//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-//Copyright (c) 2006-2009 Emil Dotchevski and Reverge Studios, Inc.
-
-
-====================File: LICENSE_1_0.txt====================
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+====================BSL-1.0====================
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+//Copyright (c) 2006-2009 Emil Dotchevski and Reverge Studios, Inc.
+
+
+====================File: LICENSE_1_0.txt====================
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/contrib/restricted/boost/libs/exception/ya.make b/contrib/restricted/boost/libs/exception/ya.make
index d17d031e8b..bef34a6144 100644
--- a/contrib/restricted/boost/libs/exception/ya.make
+++ b/contrib/restricted/boost/libs/exception/ya.make
@@ -2,14 +2,14 @@ LIBRARY()
LICENSE(BSL-1.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
+OWNER(
+ antoshkka
+ g:cpp-committee
+ g:cpp-contrib
+)
-OWNER(
- antoshkka
- g:cpp-committee
- g:cpp-contrib
-)
-
INCLUDE(${ARCADIA_ROOT}/contrib/restricted/boost/boost_common.inc)
SRCS(
diff --git a/contrib/restricted/boost/libs/filesystem/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/filesystem/.yandex_meta/licenses.list.txt
index 9341c76979..65af627257 100644
--- a/contrib/restricted/boost/libs/filesystem/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/boost/libs/filesystem/.yandex_meta/licenses.list.txt
@@ -1,80 +1,80 @@
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// See http://www.boost.org/LICENSE_1_0.txt
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// See http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Use, modification, and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy
-// at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-// or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright 2002-2005 Beman Dawes
-// Use, modification, and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy
-
-
-====================COPYRIGHT====================
-// Copyright 2002-2009, 2014 Beman Dawes
-// Copyright 2001 Dietmar Kuehl
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 2008
-// Copyright Vicente J. Botet Escriba 2009
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 2008, 2009
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 2009
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 2010
-
-
-====================COPYRIGHT====================
-// Copyright Vladimir Prus 2004.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-
-
-====================File: LICENSE_1_0.txt====================
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// See http://www.boost.org/LICENSE_1_0.txt
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// See http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Use, modification, and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy
+// at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt
+// or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright 2002-2005 Beman Dawes
+// Use, modification, and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy
+
+
+====================COPYRIGHT====================
+// Copyright 2002-2009, 2014 Beman Dawes
+// Copyright 2001 Dietmar Kuehl
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 2008
+// Copyright Vicente J. Botet Escriba 2009
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 2008, 2009
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 2009
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 2010
+
+
+====================COPYRIGHT====================
+// Copyright Vladimir Prus 2004.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt
+
+
+====================File: LICENSE_1_0.txt====================
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/contrib/restricted/boost/libs/filesystem/ya.make b/contrib/restricted/boost/libs/filesystem/ya.make
index 3e3990551b..bfad363675 100644
--- a/contrib/restricted/boost/libs/filesystem/ya.make
+++ b/contrib/restricted/boost/libs/filesystem/ya.make
@@ -2,24 +2,24 @@ LIBRARY()
LICENSE(BSL-1.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
-OWNER(
- antoshkka
- g:cpp-committee
- g:cpp-contrib
-)
-
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
+OWNER(
+ antoshkka
+ g:cpp-committee
+ g:cpp-contrib
+)
+
INCLUDE(${ARCADIA_ROOT}/contrib/restricted/boost/boost_common.inc)
IF (DYNAMIC_BOOST)
- CFLAGS(
- -DBOOST_FILESYSTEM_DYN_LINK=1
- )
+ CFLAGS(
+ -DBOOST_FILESYSTEM_DYN_LINK=1
+ )
ELSE()
- CFLAGS(
- -DBOOST_FILESYSTEM_STATIC_LINK=1
- )
+ CFLAGS(
+ -DBOOST_FILESYSTEM_STATIC_LINK=1
+ )
ENDIF()
PEERDIR(
diff --git a/contrib/restricted/boost/libs/iostreams/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/iostreams/.yandex_meta/licenses.list.txt
index 9710f4e217..49ffba18e1 100644
--- a/contrib/restricted/boost/libs/iostreams/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/boost/libs/iostreams/.yandex_meta/licenses.list.txt
@@ -1,67 +1,67 @@
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com)
-// (C) Copyright 2003-2007 Jonathan Turkanis
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com)
-// (C) Copyright 2005-2007 Jonathan Turkanis
-// (C) Copyright Jonathan Graehl 2004.
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Jorge Lodos 2008.
-// (C) Copyright Jonathan Turkanis 2003.
-// (C) Copyright Craig Henderson 2002. 'boost/memmap.hpp' from sandbox
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Milan Svoboda 2008.
-// Originally developed under the fusecompress project.
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
-
-
-====================COPYRIGHT====================
-// (C) Copyright Thorsten Ottosen 2005
-// (C) Copyright Howard Hinnant 2004
-// (C) Copyright Jonathan Turkanis 2004
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
-
-
-====================File: LICENSE_1_0.txt====================
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com)
+// (C) Copyright 2003-2007 Jonathan Turkanis
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com)
+// (C) Copyright 2005-2007 Jonathan Turkanis
+// (C) Copyright Jonathan Graehl 2004.
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Jorge Lodos 2008.
+// (C) Copyright Jonathan Turkanis 2003.
+// (C) Copyright Craig Henderson 2002. 'boost/memmap.hpp' from sandbox
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Milan Svoboda 2008.
+// Originally developed under the fusecompress project.
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
+
+
+====================COPYRIGHT====================
+// (C) Copyright Thorsten Ottosen 2005
+// (C) Copyright Howard Hinnant 2004
+// (C) Copyright Jonathan Turkanis 2004
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
+
+
+====================File: LICENSE_1_0.txt====================
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/contrib/restricted/boost/libs/iostreams/ya.make b/contrib/restricted/boost/libs/iostreams/ya.make
index e4302cb66a..a2a0614496 100644
--- a/contrib/restricted/boost/libs/iostreams/ya.make
+++ b/contrib/restricted/boost/libs/iostreams/ya.make
@@ -2,14 +2,14 @@ LIBRARY()
LICENSE(BSL-1.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
-OWNER(
- antoshkka
- g:cpp-committee
- g:cpp-contrib
-)
-
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
+OWNER(
+ antoshkka
+ g:cpp-committee
+ g:cpp-contrib
+)
+
INCLUDE(${ARCADIA_ROOT}/contrib/restricted/boost/boost_common.inc)
PEERDIR(
@@ -17,9 +17,9 @@ PEERDIR(
contrib/libs/libbz2
)
-CFLAGS(
- -DBOOST_IOSTREAMS_USE_DEPRECATED
-)
+CFLAGS(
+ -DBOOST_IOSTREAMS_USE_DEPRECATED
+)
SRCS(
src/file_descriptor.cpp
diff --git a/contrib/restricted/boost/libs/locale/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/locale/.yandex_meta/licenses.list.txt
index 1aac689f45..43e19a74a4 100644
--- a/contrib/restricted/boost/libs/locale/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/boost/libs/locale/.yandex_meta/licenses.list.txt
@@ -1,38 +1,38 @@
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2009-2011 Artyom Beilis (Tonkikh)
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2009-2015 Artyom Beilis (Tonkikh)
-
-
-====================File: LICENSE_1_0.txt====================
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2009-2011 Artyom Beilis (Tonkikh)
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2009-2015 Artyom Beilis (Tonkikh)
+
+
+====================File: LICENSE_1_0.txt====================
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/contrib/restricted/boost/libs/locale/ya.make b/contrib/restricted/boost/libs/locale/ya.make
index cb4e722627..c214b86dbc 100644
--- a/contrib/restricted/boost/libs/locale/ya.make
+++ b/contrib/restricted/boost/libs/locale/ya.make
@@ -2,14 +2,14 @@ LIBRARY()
LICENSE(BSL-1.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
+OWNER(
+ antoshkka
+ g:cpp-committee
+ g:cpp-contrib
+)
-OWNER(
- antoshkka
- g:cpp-committee
- g:cpp-contrib
-)
-
INCLUDE(${ARCADIA_ROOT}/contrib/restricted/boost/boost_common.inc)
PEERDIR(
@@ -27,9 +27,9 @@ IF (OS_ANDROID)
-DBOOST_LOCALE_NO_POSIX_BACKEND=1
)
ELSEIF (OS_WINDOWS)
- CFLAGS(
- -DBOOST_LOCALE_NO_POSIX_BACKEND=1
- )
+ CFLAGS(
+ -DBOOST_LOCALE_NO_POSIX_BACKEND=1
+ )
ELSE()
CFLAGS(
-DBOOST_LOCALE_NO_WINAPI_BACKEND=1
@@ -44,7 +44,7 @@ IF (OS_WINDOWS)
src/win32/numeric.cpp
src/win32/win_backend.cpp
)
-ELSEIF (NOT OS_ANDROID)
+ELSEIF (NOT OS_ANDROID)
SRCS(
src/posix/codecvt.cpp
src/posix/collate.cpp
diff --git a/contrib/restricted/boost/libs/log/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/log/.yandex_meta/licenses.list.txt
index a84d451044..977477afbc 100644
--- a/contrib/restricted/boost/libs/log/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/boost/libs/log/.yandex_meta/licenses.list.txt
@@ -1,66 +1,66 @@
-====================BSL-1.0====================
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
- Copyright Andrey Semashev 2007 - 2015.
-
-
-====================COPYRIGHT====================
- * Copyright Lingxi Li 2015.
- * Copyright Andrey Semashev 2015.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
- * Copyright Lingxi Li 2015.
- * Copyright Andrey Semashev 2016.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
- * Copyright Andrey Semashev 2016.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
- * Copyright Andrey Semashev 2017.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
- * Copyright Andrey Semashev 2007 - 2018.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================File: LICENSE_1_0.txt====================
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+====================BSL-1.0====================
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+ Copyright Andrey Semashev 2007 - 2015.
+
+
+====================COPYRIGHT====================
+ * Copyright Lingxi Li 2015.
+ * Copyright Andrey Semashev 2015.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+ * Copyright Lingxi Li 2015.
+ * Copyright Andrey Semashev 2016.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+ * Copyright Andrey Semashev 2016.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+ * Copyright Andrey Semashev 2017.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+ * Copyright Andrey Semashev 2007 - 2018.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================File: LICENSE_1_0.txt====================
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/contrib/restricted/boost/libs/log/ya.make b/contrib/restricted/boost/libs/log/ya.make
index 990bf956fa..09429ee0cd 100644
--- a/contrib/restricted/boost/libs/log/ya.make
+++ b/contrib/restricted/boost/libs/log/ya.make
@@ -2,14 +2,14 @@ LIBRARY()
LICENSE(BSL-1.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
+OWNER(
+ antoshkka
+ g:cpp-committee
+ g:cpp-contrib
+)
-OWNER(
- antoshkka
- g:cpp-committee
- g:cpp-contrib
-)
-
INCLUDE(${ARCADIA_ROOT}/contrib/restricted/boost/boost_common.inc)
ADDINCL(
@@ -20,7 +20,7 @@ CFLAGS(
-DBOOST_LOG_BUILDING_THE_LIB=1
-DBOOST_LOG_SETUP_BUILDING_THE_LIB=1
)
-
+
IF (OS_WINDOWS)
CFLAGS(
-D_CRT_SECURE_NO_DEPRECATE
@@ -30,7 +30,7 @@ IF (OS_WINDOWS)
ELSE()
IF (OS_LINUX AND OS_SDK != "ubuntu-10")
CFLAGS(
- -DBOOST_LOG_HAS_PTHREAD_MUTEX_ROBUST
+ -DBOOST_LOG_HAS_PTHREAD_MUTEX_ROBUST
)
ENDIF()
CFLAGS(
diff --git a/contrib/restricted/boost/libs/program_options/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/program_options/.yandex_meta/licenses.list.txt
index 2118e09e42..484ea5452b 100644
--- a/contrib/restricted/boost/libs/program_options/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/boost/libs/program_options/.yandex_meta/licenses.list.txt
@@ -1,55 +1,55 @@
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-// or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright Sascha Ochsenknecht 2009.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-
-
-====================COPYRIGHT====================
-// Copyright Vladimir Prus 2002-2004.
-// Copyright Bertolt Mildner 2004.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-
-
-====================COPYRIGHT====================
-// Copyright Vladimir Prus 2002-2004.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-
-
-====================COPYRIGHT====================
-// Copyright Vladimir Prus 2004.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-
-
-====================File: LICENSE_1_0.txt====================
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt
+// or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright Sascha Ochsenknecht 2009.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt
+
+
+====================COPYRIGHT====================
+// Copyright Vladimir Prus 2002-2004.
+// Copyright Bertolt Mildner 2004.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt
+
+
+====================COPYRIGHT====================
+// Copyright Vladimir Prus 2002-2004.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt
+
+
+====================COPYRIGHT====================
+// Copyright Vladimir Prus 2004.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt
+
+
+====================File: LICENSE_1_0.txt====================
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/contrib/restricted/boost/libs/program_options/ya.make b/contrib/restricted/boost/libs/program_options/ya.make
index 7085bf521c..bc228af72f 100644
--- a/contrib/restricted/boost/libs/program_options/ya.make
+++ b/contrib/restricted/boost/libs/program_options/ya.make
@@ -2,14 +2,14 @@ LIBRARY()
LICENSE(BSL-1.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
+OWNER(
+ antoshkka
+ g:cpp-committee
+ g:cpp-contrib
+)
-OWNER(
- antoshkka
- g:cpp-committee
- g:cpp-contrib
-)
-
INCLUDE(${ARCADIA_ROOT}/contrib/restricted/boost/boost_common.inc)
SRCS(
diff --git a/contrib/restricted/boost/libs/python/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/python/.yandex_meta/licenses.list.txt
index e2776772d4..0d88af215d 100644
--- a/contrib/restricted/boost/libs/python/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/boost/libs/python/.yandex_meta/licenses.list.txt
@@ -1,120 +1,120 @@
-====================BSL-1.0====================
- // Contributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Use, modification and distribution are subject to the
+====================BSL-1.0====================
+ // Contributed under the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Copyright David Abrahams 2004. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// (C) Copyright David Abrahams 2000.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright R.W. Grosse-Kunstleve 2002.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2004 Jonathan Brandmeyer
+// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Copyright David Abrahams 2004. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// (C) Copyright David Abrahams 2000.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright R.W. Grosse-Kunstleve 2002.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2004 Jonathan Brandmeyer
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// Copyright David Abrahams 2002.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright David Abrahams 2004. Use, modification and distribution is
-// subject to the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright Eric Niebler 2005.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Jim Bosch 2010-2012.
-// Copyright Stefan Seefeld 2016.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Nikolay Mladenov 2007.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright Peter Dimov and Multi Media Ltd 2001, 2002
-// Copyright David Abrahams 2001
-
-
-====================COPYRIGHT====================
-// Copyright Stefan Seefeld 2005.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================File: LICENSE_1_0.txt====================
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+
+
+====================COPYRIGHT====================
+// Copyright David Abrahams 2002.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright David Abrahams 2004. Use, modification and distribution is
+// subject to the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright Eric Niebler 2005.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Jim Bosch 2010-2012.
+// Copyright Stefan Seefeld 2016.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Nikolay Mladenov 2007.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright Peter Dimov and Multi Media Ltd 2001, 2002
+// Copyright David Abrahams 2001
+
+
+====================COPYRIGHT====================
+// Copyright Stefan Seefeld 2005.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================File: LICENSE_1_0.txt====================
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/contrib/restricted/boost/libs/python/arcadia_test/mod/ya.make b/contrib/restricted/boost/libs/python/arcadia_test/mod/ya.make
index 1655844472..ff4c0e70e4 100644
--- a/contrib/restricted/boost/libs/python/arcadia_test/mod/ya.make
+++ b/contrib/restricted/boost/libs/python/arcadia_test/mod/ya.make
@@ -1,14 +1,14 @@
PY23_NATIVE_LIBRARY()
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
LICENSE(BSL-1.0)
-OWNER(
- antoshkka
- g:cpp-committee
- g:cpp-contrib
-)
+OWNER(
+ antoshkka
+ g:cpp-committee
+ g:cpp-contrib
+)
PEERDIR(
contrib/restricted/boost/libs/python
@@ -16,12 +16,12 @@ PEERDIR(
NO_COMPILER_WARNINGS()
-SRCS(
- module.cpp
-)
+SRCS(
+ module.cpp
+)
-PY_REGISTER(
- arcadia_boost_python_test
-)
+PY_REGISTER(
+ arcadia_boost_python_test
+)
END()
diff --git a/contrib/restricted/boost/libs/python/arcadia_test/py2/ya.make b/contrib/restricted/boost/libs/python/arcadia_test/py2/ya.make
index 0df1375161..2eb3461699 100644
--- a/contrib/restricted/boost/libs/python/arcadia_test/py2/ya.make
+++ b/contrib/restricted/boost/libs/python/arcadia_test/py2/ya.make
@@ -1,17 +1,17 @@
PY2TEST()
-WITHOUT_LICENSE_TEXTS()
+WITHOUT_LICENSE_TEXTS()
-OWNER(
- antoshkka
- g:cpp-committee
- g:cpp-contrib
-)
+OWNER(
+ antoshkka
+ g:cpp-committee
+ g:cpp-contrib
+)
+
+PEERDIR(
+ contrib/restricted/boost/libs/python/arcadia_test/mod
+)
-PEERDIR(
- contrib/restricted/boost/libs/python/arcadia_test/mod
-)
-
TEST_SRCS(test_hello.py)
END()
diff --git a/contrib/restricted/boost/libs/python/arcadia_test/py3/ya.make b/contrib/restricted/boost/libs/python/arcadia_test/py3/ya.make
index d920534a23..5334de5fb0 100644
--- a/contrib/restricted/boost/libs/python/arcadia_test/py3/ya.make
+++ b/contrib/restricted/boost/libs/python/arcadia_test/py3/ya.make
@@ -1,17 +1,17 @@
PY3TEST()
-WITHOUT_LICENSE_TEXTS()
+WITHOUT_LICENSE_TEXTS()
-OWNER(
- antoshkka
- g:cpp-committee
- g:cpp-contrib
-)
+OWNER(
+ antoshkka
+ g:cpp-committee
+ g:cpp-contrib
+)
+
+PEERDIR(
+ contrib/restricted/boost/libs/python/arcadia_test/mod
+)
-PEERDIR(
- contrib/restricted/boost/libs/python/arcadia_test/mod
-)
-
TEST_SRCS(test_hello.py)
END()
diff --git a/contrib/restricted/boost/libs/python/ya.make b/contrib/restricted/boost/libs/python/ya.make
index ac2e2312aa..8a9607986f 100644
--- a/contrib/restricted/boost/libs/python/ya.make
+++ b/contrib/restricted/boost/libs/python/ya.make
@@ -2,14 +2,14 @@ PY23_NATIVE_LIBRARY()
LICENSE(BSL-1.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
+OWNER(
+ antoshkka
+ g:cpp-committee
+ g:cpp-contrib
+)
-OWNER(
- antoshkka
- g:cpp-committee
- g:cpp-contrib
-)
-
INCLUDE(${ARCADIA_ROOT}/contrib/restricted/boost/boost_common.inc)
CFLAGS(
diff --git a/contrib/restricted/boost/libs/random/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/random/.yandex_meta/licenses.list.txt
index 9048ad2a24..230178a3f1 100644
--- a/contrib/restricted/boost/libs/random/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/boost/libs/random/.yandex_meta/licenses.list.txt
@@ -1,43 +1,43 @@
-====================BSL-1.0====================
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
- * Copyright Jens Maurer 2000
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
- * Copyright Jens Maurer 2000-2001
- * Copyright Steven Watanabe 2010-2011
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
-
-
-====================File: LICENSE_1_0.txt====================
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+====================BSL-1.0====================
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+ * Copyright Jens Maurer 2000
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+ * Copyright Jens Maurer 2000-2001
+ * Copyright Steven Watanabe 2010-2011
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+
+
+====================File: LICENSE_1_0.txt====================
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/contrib/restricted/boost/libs/random/ya.make b/contrib/restricted/boost/libs/random/ya.make
index f6610ae867..5d319bcb88 100644
--- a/contrib/restricted/boost/libs/random/ya.make
+++ b/contrib/restricted/boost/libs/random/ya.make
@@ -2,22 +2,22 @@ LIBRARY()
LICENSE(BSL-1.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
+OWNER(
+ antoshkka
+ g:cpp-committee
+ g:cpp-contrib
+)
-OWNER(
- antoshkka
- g:cpp-committee
- g:cpp-contrib
-)
-
INCLUDE(${ARCADIA_ROOT}/contrib/restricted/boost/boost_common.inc)
SRCS(
src/random_device.cpp
)
-PEERDIR(
- contrib/restricted/boost/libs/system
-)
+PEERDIR(
+ contrib/restricted/boost/libs/system
+)
END()
diff --git a/contrib/restricted/boost/libs/regex/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/regex/.yandex_meta/licenses.list.txt
index 7d624022f6..24d839b2a7 100644
--- a/contrib/restricted/boost/libs/regex/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/boost/libs/regex/.yandex_meta/licenses.list.txt
@@ -1,51 +1,51 @@
-====================BSL-1.0====================
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
- * Copyright (c) 1998-2002
- * John Maddock
-
-
-====================COPYRIGHT====================
- * Copyright (c) 1998-2004 John Maddock
- * Copyright 2011 Garmin Ltd. or its subsidiaries
-
-
-====================COPYRIGHT====================
- * Copyright (c) 2004
- * John Maddock
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2011 John Maddock
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================File: LICENSE_1_0.txt====================
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+====================BSL-1.0====================
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 1998-2002
+ * John Maddock
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 1998-2004 John Maddock
+ * Copyright 2011 Garmin Ltd. or its subsidiaries
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 2004
+ * John Maddock
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2011 John Maddock
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================File: LICENSE_1_0.txt====================
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/contrib/restricted/boost/libs/regex/ya.make b/contrib/restricted/boost/libs/regex/ya.make
index f1098651f1..379c0831ae 100644
--- a/contrib/restricted/boost/libs/regex/ya.make
+++ b/contrib/restricted/boost/libs/regex/ya.make
@@ -2,14 +2,14 @@ LIBRARY()
LICENSE(BSL-1.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
-OWNER(
- antoshkka
- g:cpp-committee
- g:cpp-contrib
-)
-
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
+OWNER(
+ antoshkka
+ g:cpp-committee
+ g:cpp-contrib
+)
+
INCLUDE(${ARCADIA_ROOT}/contrib/restricted/boost/boost_common.inc)
PEERDIR(
diff --git a/contrib/restricted/boost/libs/serialization/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/serialization/.yandex_meta/licenses.list.txt
index 628fa29d2e..17e2899be4 100644
--- a/contrib/restricted/boost/libs/serialization/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/boost/libs/serialization/.yandex_meta/licenses.list.txt
@@ -1,87 +1,87 @@
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-// or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for updates, documentation, and revision history.
-
-
-====================BSL-1.0====================
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-// <gennadiy.rozental@tfn.com>
-
-// See http://www.boost.org for updates, documentation, and revision history.
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2004 Robert Ramey - http://www.rrsd.com .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2005 Robert Ramey - http://www.rrsd.com
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2009 Robert Ramey - http://www.rrsd.com .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// Copyright (c) 2004 Robert Ramey, Indiana University (garcia@osl.iu.edu)
-// Andrew Lumsdaine, Indiana University (lums@osl.iu.edu).
-// Use, modification and distribution is subject to the Boost Software
-
-
-====================COPYRIGHT====================
-// Copyright Vladimir Prus 2004.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-
-
-====================File: LICENSE_1_0.txt====================
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt
+// or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for updates, documentation, and revision history.
+
+
+====================BSL-1.0====================
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+// <gennadiy.rozental@tfn.com>
+
+// See http://www.boost.org for updates, documentation, and revision history.
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2004 Robert Ramey - http://www.rrsd.com .
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2005 Robert Ramey - http://www.rrsd.com
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2009 Robert Ramey - http://www.rrsd.com .
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// Copyright (c) 2004 Robert Ramey, Indiana University (garcia@osl.iu.edu)
+// Andrew Lumsdaine, Indiana University (lums@osl.iu.edu).
+// Use, modification and distribution is subject to the Boost Software
+
+
+====================COPYRIGHT====================
+// Copyright Vladimir Prus 2004.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt
+
+
+====================File: LICENSE_1_0.txt====================
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/contrib/restricted/boost/libs/serialization/ya.make b/contrib/restricted/boost/libs/serialization/ya.make
index ee5191bf41..5576e6a7ed 100644
--- a/contrib/restricted/boost/libs/serialization/ya.make
+++ b/contrib/restricted/boost/libs/serialization/ya.make
@@ -2,14 +2,14 @@ LIBRARY()
LICENSE(BSL-1.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
+OWNER(
+ antoshkka
+ g:cpp-committee
+ g:cpp-contrib
+)
-OWNER(
- antoshkka
- g:cpp-committee
- g:cpp-contrib
-)
-
INCLUDE(${ARCADIA_ROOT}/contrib/restricted/boost/boost_common.inc)
SRCS(
diff --git a/contrib/restricted/boost/libs/system/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/system/.yandex_meta/licenses.list.txt
index 50ccad18ee..9a6126914d 100644
--- a/contrib/restricted/boost/libs/system/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/boost/libs/system/.yandex_meta/licenses.list.txt
@@ -1,36 +1,36 @@
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 2002, 2006
-// Copyright (c) Microsoft Corporation 2014
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================File: LICENSE_1_0.txt====================
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 2002, 2006
+// Copyright (c) Microsoft Corporation 2014
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================File: LICENSE_1_0.txt====================
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/contrib/restricted/boost/libs/system/ya.make b/contrib/restricted/boost/libs/system/ya.make
index 56ab597276..4571531ed1 100644
--- a/contrib/restricted/boost/libs/system/ya.make
+++ b/contrib/restricted/boost/libs/system/ya.make
@@ -2,14 +2,14 @@ LIBRARY()
LICENSE(BSL-1.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
+OWNER(
+ antoshkka
+ g:cpp-committee
+ g:cpp-contrib
+)
-OWNER(
- antoshkka
- g:cpp-committee
- g:cpp-contrib
-)
-
INCLUDE(${ARCADIA_ROOT}/contrib/restricted/boost/boost_common.inc)
SRCS(
diff --git a/contrib/restricted/boost/libs/test/targets/lib/ya.make b/contrib/restricted/boost/libs/test/targets/lib/ya.make
index 81c1fb0b6b..4058af6c64 100644
--- a/contrib/restricted/boost/libs/test/targets/lib/ya.make
+++ b/contrib/restricted/boost/libs/test/targets/lib/ya.make
@@ -1,14 +1,14 @@
LIBRARY(unit_test_framework)
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
LICENSE(BSL-1.0)
-OWNER(
- antoshkka
- g:cpp-committee
- g:cpp-contrib
-)
+OWNER(
+ antoshkka
+ g:cpp-committee
+ g:cpp-contrib
+)
INCLUDE(${ARCADIA_ROOT}/contrib/restricted/boost/boost_common.inc)
diff --git a/contrib/restricted/boost/libs/test/targets/prog/ya.make b/contrib/restricted/boost/libs/test/targets/prog/ya.make
index cb03b2d741..0111d202fb 100644
--- a/contrib/restricted/boost/libs/test/targets/prog/ya.make
+++ b/contrib/restricted/boost/libs/test/targets/prog/ya.make
@@ -1,14 +1,14 @@
LIBRARY(prg_exec_mon)
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
LICENSE(BSL-1.0)
-OWNER(
- antoshkka
- g:cpp-committee
- g:cpp-contrib
-)
+OWNER(
+ antoshkka
+ g:cpp-committee
+ g:cpp-contrib
+)
INCLUDE(${ARCADIA_ROOT}/contrib/restricted/boost/boost_common.inc)
diff --git a/contrib/restricted/boost/libs/test/targets/test/ya.make b/contrib/restricted/boost/libs/test/targets/test/ya.make
index 7928fbfad1..34111fc0a8 100644
--- a/contrib/restricted/boost/libs/test/targets/test/ya.make
+++ b/contrib/restricted/boost/libs/test/targets/test/ya.make
@@ -1,14 +1,14 @@
LIBRARY(test_exec_mon)
-WITHOUT_LICENSE_TEXTS()
-
+WITHOUT_LICENSE_TEXTS()
+
LICENSE(BSL-1.0)
-OWNER(
- antoshkka
- g:cpp-committee
- g:cpp-contrib
-)
+OWNER(
+ antoshkka
+ g:cpp-committee
+ g:cpp-contrib
+)
INCLUDE(${ARCADIA_ROOT}/contrib/restricted/boost/boost_common.inc)
diff --git a/contrib/restricted/boost/libs/thread/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/thread/.yandex_meta/licenses.list.txt
index 7163300746..74a48e4c31 100644
--- a/contrib/restricted/boost/libs/thread/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/boost/libs/thread/.yandex_meta/licenses.list.txt
@@ -1,116 +1,116 @@
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
- * (C) Copyright 2013 Tim Blechmann
- * (C) Copyright 2013 Andrey Semashev
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2005-7 Anthony Williams
-// (C) Copyright 2007 David Deakins
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2007 Anthony Williams
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2018 Andrey Semashev
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2007 Anthony Williams
-// (C) Copyright 2007 David Deakins
-// (C) Copyright 2011-2018 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// (C) Copyright 2012 Vicente J. Botet Escriba
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-
-
-====================COPYRIGHT====================
-// (C) Copyright Aaron W. LaFramboise, Roland Schwarz, Michael Glassford 2004.
-// (C) Copyright 2007 Roland Schwarz
-// (C) Copyright 2007 Anthony Williams
-// (C) Copyright 2007 David Deakins
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// (C) Copyright Michael Glassford 2004.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2001-2003
-// William E. Kempf
-// (C) Copyright 2008-9 Anthony Williams
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2001-2003
-// William E. Kempf
-// Copyright (C) 2007-9 Anthony Williams
-// (C) Copyright 2011-2012 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2002-2003
-// David Moore, William E. Kempf
-// Copyright (C) 2007-8 Anthony Williams
-// (C) Copyright 2013 Vicente J. Botet Escriba
-
-
-====================COPYRIGHT====================
-// Copyright (C) 2007 Anthony Williams
-
-
-====================File: LICENSE_1_0.txt====================
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+ * (C) Copyright 2013 Tim Blechmann
+ * (C) Copyright 2013 Andrey Semashev
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2005-7 Anthony Williams
+// (C) Copyright 2007 David Deakins
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2007 Anthony Williams
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2018 Andrey Semashev
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2007 Anthony Williams
+// (C) Copyright 2007 David Deakins
+// (C) Copyright 2011-2018 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// (C) Copyright 2012 Vicente J. Botet Escriba
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+
+
+====================COPYRIGHT====================
+// (C) Copyright Aaron W. LaFramboise, Roland Schwarz, Michael Glassford 2004.
+// (C) Copyright 2007 Roland Schwarz
+// (C) Copyright 2007 Anthony Williams
+// (C) Copyright 2007 David Deakins
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// (C) Copyright Michael Glassford 2004.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2001-2003
+// William E. Kempf
+// (C) Copyright 2008-9 Anthony Williams
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2001-2003
+// William E. Kempf
+// Copyright (C) 2007-9 Anthony Williams
+// (C) Copyright 2011-2012 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2002-2003
+// David Moore, William E. Kempf
+// Copyright (C) 2007-8 Anthony Williams
+// (C) Copyright 2013 Vicente J. Botet Escriba
+
+
+====================COPYRIGHT====================
+// Copyright (C) 2007 Anthony Williams
+
+
+====================File: LICENSE_1_0.txt====================
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/contrib/restricted/boost/libs/thread/ya.make b/contrib/restricted/boost/libs/thread/ya.make
index 00d2b9cdbc..880df0ebc6 100644
--- a/contrib/restricted/boost/libs/thread/ya.make
+++ b/contrib/restricted/boost/libs/thread/ya.make
@@ -2,14 +2,14 @@ LIBRARY()
LICENSE(BSL-1.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
-OWNER(
- antoshkka
- g:cpp-committee
- g:cpp-contrib
-)
-
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
+OWNER(
+ antoshkka
+ g:cpp-committee
+ g:cpp-contrib
+)
+
INCLUDE(${ARCADIA_ROOT}/contrib/restricted/boost/boost_common.inc)
PEERDIR(
diff --git a/contrib/restricted/boost/libs/timer/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/timer/.yandex_meta/licenses.list.txt
index 7c934fbe0d..5dee7360cb 100644
--- a/contrib/restricted/boost/libs/timer/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/boost/libs/timer/.yandex_meta/licenses.list.txt
@@ -1,42 +1,42 @@
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0.
-// See http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 1994-2006, 2011
-
-
-====================COPYRIGHT====================
-// Copyright Beman Dawes 2007, 2011
-
-
-====================File: LICENSE_1_0.txt====================
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0.
+// See http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 1994-2006, 2011
+
+
+====================COPYRIGHT====================
+// Copyright Beman Dawes 2007, 2011
+
+
+====================File: LICENSE_1_0.txt====================
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/contrib/restricted/boost/libs/timer/ya.make b/contrib/restricted/boost/libs/timer/ya.make
index 53c1e2f9cb..897693bdf7 100644
--- a/contrib/restricted/boost/libs/timer/ya.make
+++ b/contrib/restricted/boost/libs/timer/ya.make
@@ -2,14 +2,14 @@ LIBRARY()
LICENSE(BSL-1.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
+OWNER(
+ antoshkka
+ g:cpp-committee
+ g:cpp-contrib
+)
-OWNER(
- antoshkka
- g:cpp-committee
- g:cpp-contrib
-)
-
INCLUDE(${ARCADIA_ROOT}/contrib/restricted/boost/boost_common.inc)
SRCS(
diff --git a/contrib/restricted/boost/libs/ya.make b/contrib/restricted/boost/libs/ya.make
index 0256c81658..c42a994cdc 100644
--- a/contrib/restricted/boost/libs/ya.make
+++ b/contrib/restricted/boost/libs/ya.make
@@ -2,15 +2,15 @@ LIBRARY()
LICENSE(BSL-1.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
VERSION(1.67)
-OWNER(
- antoshkka
- g:cpp-committee
- g:cpp-contrib
-)
+OWNER(
+ antoshkka
+ g:cpp-committee
+ g:cpp-contrib
+)
INCLUDE(${ARCADIA_ROOT}/contrib/restricted/boost/boost_common.inc)
diff --git a/contrib/restricted/boost/ya.make b/contrib/restricted/boost/ya.make
index a6c24e1020..77e2dc66c0 100644
--- a/contrib/restricted/boost/ya.make
+++ b/contrib/restricted/boost/ya.make
@@ -1,24 +1,24 @@
LIBRARY()
-LICENSE(
- BSD-3-Clause AND
- BSL-1.0 AND
- MIT AND
- Mit-Old-Style AND
- NCSA AND
- Public-Domain AND
- Zlib
-)
-
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
+LICENSE(
+ BSD-3-Clause AND
+ BSL-1.0 AND
+ MIT AND
+ Mit-Old-Style AND
+ NCSA AND
+ Public-Domain AND
+ Zlib
+)
+
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
VERSION(1.67)
-OWNER(
- antoshkka
- g:cpp-committee
- g:cpp-contrib
-)
+OWNER(
+ antoshkka
+ g:cpp-committee
+ g:cpp-contrib
+)
NO_UTIL()
diff --git a/contrib/restricted/cityhash-1.0.2/.yandex_meta/devtools.copyrights.report b/contrib/restricted/cityhash-1.0.2/.yandex_meta/devtools.copyrights.report
index b77d69f721..cf4f890267 100644
--- a/contrib/restricted/cityhash-1.0.2/.yandex_meta/devtools.copyrights.report
+++ b/contrib/restricted/cityhash-1.0.2/.yandex_meta/devtools.copyrights.report
@@ -1,44 +1,44 @@
-# File format ($ symbol means the beginning of a line):
-#
-# $ # this message
-# $ # =======================
-# $ # comments (all commentaries should starts with some number of spaces and # symbol)
-# ${action} {license id} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
-# ${all_file_action} filename
-# $ # user commentaries (many lines)
-# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
-# ${action} {license spdx} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/3/ya.make
-# ${all_file_action} filename
-# $ # user commentaries
-# $ generated description
-# $ ...
-#
-# You can modify action, all_file_action and add commentaries
-# Available actions:
-# keep - keep license in contrib and use in credits
-# skip - skip license
-# remove - remove all files with this license
-# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
-#
-# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
-# We suppose that that files can contain some license info
-# Available all file actions:
-# FILE_IGNORE - ignore file (do nothing)
-# FILE_INCLUDE - include all file data into licenses text file
-# =======================
-
-KEEP COPYRIGHT_SERVICE_LABEL 208adbe57f76a0aea35b7f5728c590ad
-BELONGS ya.make
- License text:
- // Copyright (c) 2011 Google, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- COPYING [1:1]
- city.cc [1:1]
- city.h [1:1]
- citycrc.h [1:1]
+# File format ($ symbol means the beginning of a line):
+#
+# $ # this message
+# $ # =======================
+# $ # comments (all commentaries should starts with some number of spaces and # symbol)
+# ${action} {license id} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
+# ${all_file_action} filename
+# $ # user commentaries (many lines)
+# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
+# ${action} {license spdx} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/3/ya.make
+# ${all_file_action} filename
+# $ # user commentaries
+# $ generated description
+# $ ...
+#
+# You can modify action, all_file_action and add commentaries
+# Available actions:
+# keep - keep license in contrib and use in credits
+# skip - skip license
+# remove - remove all files with this license
+# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
+#
+# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
+# We suppose that that files can contain some license info
+# Available all file actions:
+# FILE_IGNORE - ignore file (do nothing)
+# FILE_INCLUDE - include all file data into licenses text file
+# =======================
+
+KEEP COPYRIGHT_SERVICE_LABEL 208adbe57f76a0aea35b7f5728c590ad
+BELONGS ya.make
+ License text:
+ // Copyright (c) 2011 Google, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ COPYING [1:1]
+ city.cc [1:1]
+ city.h [1:1]
+ citycrc.h [1:1]
diff --git a/contrib/restricted/cityhash-1.0.2/.yandex_meta/devtools.licenses.report b/contrib/restricted/cityhash-1.0.2/.yandex_meta/devtools.licenses.report
index f1a20875d4..2eed395853 100644
--- a/contrib/restricted/cityhash-1.0.2/.yandex_meta/devtools.licenses.report
+++ b/contrib/restricted/cityhash-1.0.2/.yandex_meta/devtools.licenses.report
@@ -1,44 +1,44 @@
-# File format ($ symbol means the beginning of a line):
-#
-# $ # this message
-# $ # =======================
-# $ # comments (all commentaries should starts with some number of spaces and # symbol)
-# ${action} {license id} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
-# ${all_file_action} filename
-# $ # user commentaries (many lines)
-# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
-# ${action} {license spdx} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/3/ya.make
-# ${all_file_action} filename
-# $ # user commentaries
-# $ generated description
-# $ ...
-#
-# You can modify action, all_file_action and add commentaries
-# Available actions:
-# keep - keep license in contrib and use in credits
-# skip - skip license
-# remove - remove all files with this license
-# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
-#
-# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
-# We suppose that that files can contain some license info
-# Available all file actions:
-# FILE_IGNORE - ignore file (do nothing)
-# FILE_INCLUDE - include all file data into licenses text file
-# =======================
-
-KEEP MIT df72b988aaabd56ef5353d0ec9ab39dc
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: MIT
- Score : 100.00
- Match type : TEXT
- Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
- Files with this license:
- COPYING [3:19]
- city.cc [3:19]
- city.h [3:19]
- citycrc.h [3:19]
+# File format ($ symbol means the beginning of a line):
+#
+# $ # this message
+# $ # =======================
+# $ # comments (all commentaries should starts with some number of spaces and # symbol)
+# ${action} {license id} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
+# ${all_file_action} filename
+# $ # user commentaries (many lines)
+# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
+# ${action} {license spdx} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/3/ya.make
+# ${all_file_action} filename
+# $ # user commentaries
+# $ generated description
+# $ ...
+#
+# You can modify action, all_file_action and add commentaries
+# Available actions:
+# keep - keep license in contrib and use in credits
+# skip - skip license
+# remove - remove all files with this license
+# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
+#
+# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
+# We suppose that that files can contain some license info
+# Available all file actions:
+# FILE_IGNORE - ignore file (do nothing)
+# FILE_INCLUDE - include all file data into licenses text file
+# =======================
+
+KEEP MIT df72b988aaabd56ef5353d0ec9ab39dc
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: MIT
+ Score : 100.00
+ Match type : TEXT
+ Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
+ Files with this license:
+ COPYING [3:19]
+ city.cc [3:19]
+ city.h [3:19]
+ citycrc.h [3:19]
diff --git a/contrib/restricted/cityhash-1.0.2/.yandex_meta/licenses.list.txt b/contrib/restricted/cityhash-1.0.2/.yandex_meta/licenses.list.txt
index da081c1a2b..5520439fe6 100644
--- a/contrib/restricted/cityhash-1.0.2/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/cityhash-1.0.2/.yandex_meta/licenses.list.txt
@@ -1,22 +1,22 @@
-====================COPYRIGHT====================
-// Copyright (c) 2011 Google, Inc.
-
-
-====================MIT====================
-// 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.
+====================COPYRIGHT====================
+// Copyright (c) 2011 Google, Inc.
+
+
+====================MIT====================
+// 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.
diff --git a/contrib/restricted/cityhash-1.0.2/ya.make b/contrib/restricted/cityhash-1.0.2/ya.make
index fa1fe4d2ea..db6cfb6311 100644
--- a/contrib/restricted/cityhash-1.0.2/ya.make
+++ b/contrib/restricted/cityhash-1.0.2/ya.make
@@ -1,28 +1,28 @@
-OWNER(
- g:clickhouse
- g:cpp-contrib
-)
+OWNER(
+ g:clickhouse
+ g:cpp-contrib
+)
# Origin: https://github.com/google/cityhash.git
LIBRARY()
VERSION(bc38ef45ddbbe640e48db7b8ef65e80ea7f71298)
-
+
PROVIDES(cityhash)
-LICENSE(MIT)
-
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
+LICENSE(MIT)
+
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
NO_UTIL()
-ADDINCL(
- GLOBAL contrib/restricted/cityhash-1.0.2
-)
+ADDINCL(
+ GLOBAL contrib/restricted/cityhash-1.0.2
+)
SRCS(
- city.cc
+ city.cc
)
END()
diff --git a/contrib/restricted/dragonbox/.yandex_meta/devtools.copyrights.report b/contrib/restricted/dragonbox/.yandex_meta/devtools.copyrights.report
index b66817950e..3478e658ca 100644
--- a/contrib/restricted/dragonbox/.yandex_meta/devtools.copyrights.report
+++ b/contrib/restricted/dragonbox/.yandex_meta/devtools.copyrights.report
@@ -1,54 +1,54 @@
-# File format ($ symbol means the beginning of a line):
-#
-# $ # this message
-# $ # =======================
-# $ # comments (all commentaries should starts with some number of spaces and # symbol)
-# ${action} {license id} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
-# ${all_file_action} filename
-# $ # user commentaries (many lines)
-# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
-# ${action} {license spdx} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/3/ya.make
-# ${all_file_action} filename
-# $ # user commentaries
-# $ generated description
-# $ ...
-#
-# You can modify action, all_file_action and add commentaries
-# Available actions:
-# keep - keep license in contrib and use in credits
-# skip - skip license
-# remove - remove all files with this license
-# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
-#
-# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
-# We suppose that that files can contain some license info
-# Available all file actions:
-# FILE_IGNORE - ignore file (do nothing)
-# FILE_INCLUDE - include all file data into licenses text file
-# =======================
-
-KEEP COPYRIGHT_SERVICE_LABEL 33fb5dcc2845a99d87d337644dac5e88
-BELONGS ya.make
- License text:
- // Copyright 2018 Ulf Adams
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- source/dragonbox_to_chars.cpp [9:9]
-
-KEEP COPYRIGHT_SERVICE_LABEL c6d13080900fee936b22b12a7c646bac
-BELONGS ya.make
- License text:
- // Copyright 2020 Junekey Jeon
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- include/dragonbox/dragonbox.h [1:1]
- include/dragonbox/dragonbox_to_chars.h [1:1]
- source/dragonbox_to_chars.cpp [26:26]
+# File format ($ symbol means the beginning of a line):
+#
+# $ # this message
+# $ # =======================
+# $ # comments (all commentaries should starts with some number of spaces and # symbol)
+# ${action} {license id} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
+# ${all_file_action} filename
+# $ # user commentaries (many lines)
+# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
+# ${action} {license spdx} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/3/ya.make
+# ${all_file_action} filename
+# $ # user commentaries
+# $ generated description
+# $ ...
+#
+# You can modify action, all_file_action and add commentaries
+# Available actions:
+# keep - keep license in contrib and use in credits
+# skip - skip license
+# remove - remove all files with this license
+# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
+#
+# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
+# We suppose that that files can contain some license info
+# Available all file actions:
+# FILE_IGNORE - ignore file (do nothing)
+# FILE_INCLUDE - include all file data into licenses text file
+# =======================
+
+KEEP COPYRIGHT_SERVICE_LABEL 33fb5dcc2845a99d87d337644dac5e88
+BELONGS ya.make
+ License text:
+ // Copyright 2018 Ulf Adams
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ source/dragonbox_to_chars.cpp [9:9]
+
+KEEP COPYRIGHT_SERVICE_LABEL c6d13080900fee936b22b12a7c646bac
+BELONGS ya.make
+ License text:
+ // Copyright 2020 Junekey Jeon
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ include/dragonbox/dragonbox.h [1:1]
+ include/dragonbox/dragonbox_to_chars.h [1:1]
+ source/dragonbox_to_chars.cpp [26:26]
diff --git a/contrib/restricted/dragonbox/.yandex_meta/devtools.licenses.report b/contrib/restricted/dragonbox/.yandex_meta/devtools.licenses.report
index cd1b8848e8..ce936c89d2 100644
--- a/contrib/restricted/dragonbox/.yandex_meta/devtools.licenses.report
+++ b/contrib/restricted/dragonbox/.yandex_meta/devtools.licenses.report
@@ -1,336 +1,336 @@
-# File format ($ symbol means the beginning of a line):
-#
-# $ # this message
-# $ # =======================
-# $ # comments (all commentaries should starts with some number of spaces and # symbol)
-# ${action} {license id} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
-# ${all_file_action} filename
-# $ # user commentaries (many lines)
-# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
-# ${action} {license spdx} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/3/ya.make
-# ${all_file_action} filename
-# $ # user commentaries
-# $ generated description
-# $ ...
-#
-# You can modify action, all_file_action and add commentaries
-# Available actions:
-# keep - keep license in contrib and use in credits
-# skip - skip license
-# remove - remove all files with this license
-# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
-#
-# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
-# We suppose that that files can contain some license info
-# Available all file actions:
-# FILE_IGNORE - ignore file (do nothing)
-# FILE_INCLUDE - include all file data into licenses text file
-# =======================
-
-SKIP LicenseRef-scancode-unknown-license-reference 0432342f1219b9f45896d0a51fc3f86d
-BELONGS ya.make
- License text:
- // which are distributed under the following terms:
- Scancode info:
- Original SPDX id: LicenseRef-scancode-unknown-license-reference
- Score : 11.00
- Match type : INTRO
- Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/unknown-license-reference.LICENSE
- Files with this license:
- source/dragonbox_to_chars.cpp [7:7]
-
-KEEP Apache-2.0 WITH LLVM-exception 058caf649a75342f1f37077d4171fe67
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: LLVM-exception
- Score : 100.00
- Match type : TEXT
- Links : http://llvm.org/foundation/relicensing/LICENSE.txt, https://spdx.org/licenses/LLVM-exception
- Files with this license:
- LICENSE-Apache2-LLVM [204:218]
-
-SKIP LicenseRef-scancode-unknown-license-reference 0d48e0b09865a98a90db20ea37b36bb8
-BELONGS ya.make
- License text:
- All code, except for those belong to third-party libraries (code in [`subproject/3rdparty`](subproject/3rdparty)), is licensed under either of
- Scancode info:
- Original SPDX id: LicenseRef-scancode-unknown-license-reference
- Score : 11.00
- Match type : INTRO
- Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/unknown-license-reference.LICENSE
- Files with this license:
- README.md [281:281]
- README.md [286:286]
-
-KEEP Apache-2.0 1d11316a363a29fbee8a8b9855651248
-BELONGS ya.make
- License text:
- * Apache License Version 2.0 ([LICENSE-Apache2](fp_to_chars/LICENSE-Apache2) or http://www.apache.org/licenses/LICENSE-2.0) or
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 100.00
- Match type : REFERENCE
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
- README.md [288:288]
-
-KEEP Apache-2.0 2b42edef8fa55315f34f2370b4715ca9
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 100.00
- Match type : TEXT
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
- source/LICENSE-Apache2 [1:201]
-
-KEEP Apache-2.0 2c3bc3726a0ef68dea2a008702f96131
-BELONGS ya.make
- License text:
- // (See accompanying file LICENSE-Apache or copy at
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 90.00
- Match type : TAG
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
- include/dragonbox/dragonbox.h [6:6]
- include/dragonbox/dragonbox_to_chars.h [6:6]
-
-KEEP BSL-1.0 2c7a3fa82e66676005cd4ee2608fd7d2
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : TEXT
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- LICENSE-Boost [1:23]
- source/LICENSE-Boost [1:23]
-
-KEEP Apache-2.0 3cc6415fc70717aa068e4184f4248def
-BELONGS ya.make
- License text:
- * Apache License Version 2.0 with LLVM Exceptions ([LICENSE-Apache2-LLVM](LICENSE-Apache2-LLVM) or https://llvm.org/foundation/relicensing/LICENSE.txt) or
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 100.00
- Match type : REFERENCE
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
- README.md [283:283]
-
-KEEP BSL-1.0 OR Apache-2.0 3d2829ea88115134c31fd7dfb3ce70dd
-BELONGS ya.make
-FILE_INCLUDE LICENSE-Boost found in files: source/dragonbox_to_chars.cpp at line 19
-FILE_INCLUDE source/LICENSE-Boost found in files: source/dragonbox_to_chars.cpp at line 19
- # License was detected incorrectly and fixed by hand
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: MPL-1.1
- Score : 34.74
- Match type : NOTICE
- Links : http://www.mozilla.com/MPL/1.1/index.html, http://www.mozilla.org/MPL/MPL-1.1.html, https://spdx.org/licenses/MPL-1.1
- Files with this license:
- source/dragonbox_to_chars.cpp [17:24]
- Scancode info:
- Original SPDX id: LGPL-2.1-or-later
- Score : 34.74
- Match type : NOTICE
- Links : http://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html, https://spdx.org/licenses/LGPL-2.1-or-later
- Files with this license:
- source/dragonbox_to_chars.cpp [17:24]
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 34.74
- Match type : NOTICE
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
- source/dragonbox_to_chars.cpp [17:24]
-
-KEEP BSL-1.0 50e2a0087163df2f2c3b04a66aece833
-BELONGS ya.make
- License text:
- * Boost Software License Version 1.0 ([LICENSE-Boost](LICENSE-Boost) or https://www.boost.org/LICENSE_1_0.txt).
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 95.00
- Match type : REFERENCE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- README.md [284:284]
- README.md [289:289]
-
-KEEP BSL-1.0 67d785c23d7b32d9a77d1123e74d8da2
-BELONGS ya.make
-FILE_INCLUDE LICENSE-Boost found in files: include/dragonbox/dragonbox.h at line 11, include/dragonbox/dragonbox_to_chars.h at line 11, source/dragonbox_to_chars.cpp at line 19
-FILE_INCLUDE source/LICENSE-Boost found in files: include/dragonbox/dragonbox.h at line 11, include/dragonbox/dragonbox_to_chars.h at line 11, source/dragonbox_to_chars.cpp at line 19
- License text:
- // the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE-Boost or copy at
- // https://www.boost.org/LICENSE_1_0.txt)
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 72.00
- Match type : NOTICE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- include/dragonbox/dragonbox.h [10:12]
- include/dragonbox/dragonbox_to_chars.h [10:12]
- source/dragonbox_to_chars.cpp [18:20]
-
-KEEP BSL-1.0 6f214ad5175428024bf6301184470668
-BELONGS ya.make
- License text:
- * Boost Software License Version 1.0 ([LICENSE-Boost](LICENSE-Boost) or https://www.boost.org/LICENSE_1_0.txt).
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 95.00
- Match type : REFERENCE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- README.md [284:284]
- README.md [289:289]
-
-KEEP Apache-2.0 764a173eeeb853ac037bc179a0dcef1e
-BELONGS ya.make
- License text:
- * Apache License Version 2.0 ([LICENSE-Apache2](fp_to_chars/LICENSE-Apache2) or http://www.apache.org/licenses/LICENSE-2.0) or
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 100.00
- Match type : TAG
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
- README.md [288:288]
-
-SKIP LicenseRef-scancode-warranty-disclaimer 7dc9ca1a97640eeb4068f2530c132db9
-BELONGS ya.make
- License text:
- // Unless required by applicable law or agreed to in writing, this software
- // is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- // KIND, either express or implied.
- Scancode info:
- Original SPDX id: LicenseRef-scancode-warranty-disclaimer
- Score : 57.45
- Match type : TEXT
- Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/warranty-disclaimer.LICENSE
- Files with this license:
- include/dragonbox/dragonbox.h [14:16]
- include/dragonbox/dragonbox_to_chars.h [14:16]
- source/dragonbox_to_chars.cpp [22:24]
-
-KEEP BSL-1.0 8d1a316e985f5001c2db542ac9f487a3
-BELONGS ya.make
- License text:
- * Boost Software License Version 1.0 ([LICENSE-Boost](LICENSE-Boost) or https://www.boost.org/LICENSE_1_0.txt).
- Scancode info:
- Original SPDX id: BSL-1.0
- Score : 100.00
- Match type : REFERENCE
- Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
- Files with this license:
- README.md [284:284]
- README.md [289:289]
-
-KEEP Apache-2.0 904bd2627ab2024efa261034c468d69a
-BELONGS ya.make
- License text:
- * Apache License Version 2.0 with LLVM Exceptions ([LICENSE-Apache2-LLVM](LICENSE-Apache2-LLVM) or https://llvm.org/foundation/relicensing/LICENSE.txt) or
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 100.00
- Match type : TAG
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
- README.md [283:283]
-
-SKIP NCSA 97a1bac8fc57b3791a75fc7862e0e3eb
-BELONGS ya.make
- License text:
- * Apache License Version 2.0 with LLVM Exceptions ([LICENSE-Apache2-LLVM](LICENSE-Apache2-LLVM) or https://llvm.org/foundation/relicensing/LICENSE.txt) or
- Scancode info:
- Original SPDX id: NCSA
- Score : 95.00
- Match type : REFERENCE
- Links : http://www.otm.illinois.edu/faculty/forms/opensource.asp, https://spdx.org/licenses/NCSA
- Files with this license:
- README.md [283:283]
-
-KEEP Apache-2.0 9ac77f65a898755c7eed97099caded94
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 100.00
- Match type : TEXT
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
- LICENSE-Apache2-LLVM [1:201]
-
-KEEP Apache-2.0 abf5eafb0ee92297e46157620f7672e0
-BELONGS ya.make
- License text:
- * Apache License Version 2.0 ([LICENSE-Apache2](fp_to_chars/LICENSE-Apache2) or http://www.apache.org/licenses/LICENSE-2.0) or
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 100.00
- Match type : TAG
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
- README.md [288:288]
-
-KEEP Apache-2.0 WITH LLVM-exception c6d514740e772226c6397fc13f9c7395
-BELONGS ya.make
- License text:
- // the Apache License v2.0 with LLVM Exceptions.
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
- include/dragonbox/dragonbox.h [4:4]
- include/dragonbox/dragonbox_to_chars.h [4:4]
- Scancode info:
- Original SPDX id: LLVM-exception
- Score : 100.00
- Match type : NOTICE
- Links : http://llvm.org/foundation/relicensing/LICENSE.txt, https://spdx.org/licenses/LLVM-exception
- Files with this license:
- include/dragonbox/dragonbox.h [4:4]
- include/dragonbox/dragonbox_to_chars.h [4:4]
-
-KEEP Apache-2.0 AND MIT ced97964d87d02604e955cae9c7ef3f1
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 27.78
- Match type : NOTICE
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
- README.md [288:289]
- Scancode info:
- Original SPDX id: MIT
- Score : 27.78
- Match type : NOTICE
- Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
- Files with this license:
- README.md [288:289]
-
-KEEP Apache-2.0 db6eb89a8b6a3431633f0800fa377869
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 21.54
- Match type : NOTICE
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
- source/dragonbox_to_chars.cpp [11:15]
+# File format ($ symbol means the beginning of a line):
+#
+# $ # this message
+# $ # =======================
+# $ # comments (all commentaries should starts with some number of spaces and # symbol)
+# ${action} {license id} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
+# ${all_file_action} filename
+# $ # user commentaries (many lines)
+# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
+# ${action} {license spdx} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/3/ya.make
+# ${all_file_action} filename
+# $ # user commentaries
+# $ generated description
+# $ ...
+#
+# You can modify action, all_file_action and add commentaries
+# Available actions:
+# keep - keep license in contrib and use in credits
+# skip - skip license
+# remove - remove all files with this license
+# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
+#
+# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
+# We suppose that that files can contain some license info
+# Available all file actions:
+# FILE_IGNORE - ignore file (do nothing)
+# FILE_INCLUDE - include all file data into licenses text file
+# =======================
+
+SKIP LicenseRef-scancode-unknown-license-reference 0432342f1219b9f45896d0a51fc3f86d
+BELONGS ya.make
+ License text:
+ // which are distributed under the following terms:
+ Scancode info:
+ Original SPDX id: LicenseRef-scancode-unknown-license-reference
+ Score : 11.00
+ Match type : INTRO
+ Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/unknown-license-reference.LICENSE
+ Files with this license:
+ source/dragonbox_to_chars.cpp [7:7]
+
+KEEP Apache-2.0 WITH LLVM-exception 058caf649a75342f1f37077d4171fe67
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: LLVM-exception
+ Score : 100.00
+ Match type : TEXT
+ Links : http://llvm.org/foundation/relicensing/LICENSE.txt, https://spdx.org/licenses/LLVM-exception
+ Files with this license:
+ LICENSE-Apache2-LLVM [204:218]
+
+SKIP LicenseRef-scancode-unknown-license-reference 0d48e0b09865a98a90db20ea37b36bb8
+BELONGS ya.make
+ License text:
+ All code, except for those belong to third-party libraries (code in [`subproject/3rdparty`](subproject/3rdparty)), is licensed under either of
+ Scancode info:
+ Original SPDX id: LicenseRef-scancode-unknown-license-reference
+ Score : 11.00
+ Match type : INTRO
+ Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/unknown-license-reference.LICENSE
+ Files with this license:
+ README.md [281:281]
+ README.md [286:286]
+
+KEEP Apache-2.0 1d11316a363a29fbee8a8b9855651248
+BELONGS ya.make
+ License text:
+ * Apache License Version 2.0 ([LICENSE-Apache2](fp_to_chars/LICENSE-Apache2) or http://www.apache.org/licenses/LICENSE-2.0) or
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 100.00
+ Match type : REFERENCE
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ README.md [288:288]
+
+KEEP Apache-2.0 2b42edef8fa55315f34f2370b4715ca9
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 100.00
+ Match type : TEXT
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ source/LICENSE-Apache2 [1:201]
+
+KEEP Apache-2.0 2c3bc3726a0ef68dea2a008702f96131
+BELONGS ya.make
+ License text:
+ // (See accompanying file LICENSE-Apache or copy at
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 90.00
+ Match type : TAG
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ include/dragonbox/dragonbox.h [6:6]
+ include/dragonbox/dragonbox_to_chars.h [6:6]
+
+KEEP BSL-1.0 2c7a3fa82e66676005cd4ee2608fd7d2
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : TEXT
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ LICENSE-Boost [1:23]
+ source/LICENSE-Boost [1:23]
+
+KEEP Apache-2.0 3cc6415fc70717aa068e4184f4248def
+BELONGS ya.make
+ License text:
+ * Apache License Version 2.0 with LLVM Exceptions ([LICENSE-Apache2-LLVM](LICENSE-Apache2-LLVM) or https://llvm.org/foundation/relicensing/LICENSE.txt) or
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 100.00
+ Match type : REFERENCE
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ README.md [283:283]
+
+KEEP BSL-1.0 OR Apache-2.0 3d2829ea88115134c31fd7dfb3ce70dd
+BELONGS ya.make
+FILE_INCLUDE LICENSE-Boost found in files: source/dragonbox_to_chars.cpp at line 19
+FILE_INCLUDE source/LICENSE-Boost found in files: source/dragonbox_to_chars.cpp at line 19
+ # License was detected incorrectly and fixed by hand
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: MPL-1.1
+ Score : 34.74
+ Match type : NOTICE
+ Links : http://www.mozilla.com/MPL/1.1/index.html, http://www.mozilla.org/MPL/MPL-1.1.html, https://spdx.org/licenses/MPL-1.1
+ Files with this license:
+ source/dragonbox_to_chars.cpp [17:24]
+ Scancode info:
+ Original SPDX id: LGPL-2.1-or-later
+ Score : 34.74
+ Match type : NOTICE
+ Links : http://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html, https://spdx.org/licenses/LGPL-2.1-or-later
+ Files with this license:
+ source/dragonbox_to_chars.cpp [17:24]
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 34.74
+ Match type : NOTICE
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ source/dragonbox_to_chars.cpp [17:24]
+
+KEEP BSL-1.0 50e2a0087163df2f2c3b04a66aece833
+BELONGS ya.make
+ License text:
+ * Boost Software License Version 1.0 ([LICENSE-Boost](LICENSE-Boost) or https://www.boost.org/LICENSE_1_0.txt).
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 95.00
+ Match type : REFERENCE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ README.md [284:284]
+ README.md [289:289]
+
+KEEP BSL-1.0 67d785c23d7b32d9a77d1123e74d8da2
+BELONGS ya.make
+FILE_INCLUDE LICENSE-Boost found in files: include/dragonbox/dragonbox.h at line 11, include/dragonbox/dragonbox_to_chars.h at line 11, source/dragonbox_to_chars.cpp at line 19
+FILE_INCLUDE source/LICENSE-Boost found in files: include/dragonbox/dragonbox.h at line 11, include/dragonbox/dragonbox_to_chars.h at line 11, source/dragonbox_to_chars.cpp at line 19
+ License text:
+ // the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE-Boost or copy at
+ // https://www.boost.org/LICENSE_1_0.txt)
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 72.00
+ Match type : NOTICE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ include/dragonbox/dragonbox.h [10:12]
+ include/dragonbox/dragonbox_to_chars.h [10:12]
+ source/dragonbox_to_chars.cpp [18:20]
+
+KEEP BSL-1.0 6f214ad5175428024bf6301184470668
+BELONGS ya.make
+ License text:
+ * Boost Software License Version 1.0 ([LICENSE-Boost](LICENSE-Boost) or https://www.boost.org/LICENSE_1_0.txt).
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 95.00
+ Match type : REFERENCE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ README.md [284:284]
+ README.md [289:289]
+
+KEEP Apache-2.0 764a173eeeb853ac037bc179a0dcef1e
+BELONGS ya.make
+ License text:
+ * Apache License Version 2.0 ([LICENSE-Apache2](fp_to_chars/LICENSE-Apache2) or http://www.apache.org/licenses/LICENSE-2.0) or
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 100.00
+ Match type : TAG
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ README.md [288:288]
+
+SKIP LicenseRef-scancode-warranty-disclaimer 7dc9ca1a97640eeb4068f2530c132db9
+BELONGS ya.make
+ License text:
+ // Unless required by applicable law or agreed to in writing, this software
+ // is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ // KIND, either express or implied.
+ Scancode info:
+ Original SPDX id: LicenseRef-scancode-warranty-disclaimer
+ Score : 57.45
+ Match type : TEXT
+ Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/warranty-disclaimer.LICENSE
+ Files with this license:
+ include/dragonbox/dragonbox.h [14:16]
+ include/dragonbox/dragonbox_to_chars.h [14:16]
+ source/dragonbox_to_chars.cpp [22:24]
+
+KEEP BSL-1.0 8d1a316e985f5001c2db542ac9f487a3
+BELONGS ya.make
+ License text:
+ * Boost Software License Version 1.0 ([LICENSE-Boost](LICENSE-Boost) or https://www.boost.org/LICENSE_1_0.txt).
+ Scancode info:
+ Original SPDX id: BSL-1.0
+ Score : 100.00
+ Match type : REFERENCE
+ Links : http://www.boost.org/LICENSE_1_0.txt, http://www.boost.org/users/license.html, https://spdx.org/licenses/BSL-1.0
+ Files with this license:
+ README.md [284:284]
+ README.md [289:289]
+
+KEEP Apache-2.0 904bd2627ab2024efa261034c468d69a
+BELONGS ya.make
+ License text:
+ * Apache License Version 2.0 with LLVM Exceptions ([LICENSE-Apache2-LLVM](LICENSE-Apache2-LLVM) or https://llvm.org/foundation/relicensing/LICENSE.txt) or
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 100.00
+ Match type : TAG
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ README.md [283:283]
+
+SKIP NCSA 97a1bac8fc57b3791a75fc7862e0e3eb
+BELONGS ya.make
+ License text:
+ * Apache License Version 2.0 with LLVM Exceptions ([LICENSE-Apache2-LLVM](LICENSE-Apache2-LLVM) or https://llvm.org/foundation/relicensing/LICENSE.txt) or
+ Scancode info:
+ Original SPDX id: NCSA
+ Score : 95.00
+ Match type : REFERENCE
+ Links : http://www.otm.illinois.edu/faculty/forms/opensource.asp, https://spdx.org/licenses/NCSA
+ Files with this license:
+ README.md [283:283]
+
+KEEP Apache-2.0 9ac77f65a898755c7eed97099caded94
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 100.00
+ Match type : TEXT
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ LICENSE-Apache2-LLVM [1:201]
+
+KEEP Apache-2.0 abf5eafb0ee92297e46157620f7672e0
+BELONGS ya.make
+ License text:
+ * Apache License Version 2.0 ([LICENSE-Apache2](fp_to_chars/LICENSE-Apache2) or http://www.apache.org/licenses/LICENSE-2.0) or
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 100.00
+ Match type : TAG
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ README.md [288:288]
+
+KEEP Apache-2.0 WITH LLVM-exception c6d514740e772226c6397fc13f9c7395
+BELONGS ya.make
+ License text:
+ // the Apache License v2.0 with LLVM Exceptions.
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ include/dragonbox/dragonbox.h [4:4]
+ include/dragonbox/dragonbox_to_chars.h [4:4]
+ Scancode info:
+ Original SPDX id: LLVM-exception
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://llvm.org/foundation/relicensing/LICENSE.txt, https://spdx.org/licenses/LLVM-exception
+ Files with this license:
+ include/dragonbox/dragonbox.h [4:4]
+ include/dragonbox/dragonbox_to_chars.h [4:4]
+
+KEEP Apache-2.0 AND MIT ced97964d87d02604e955cae9c7ef3f1
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 27.78
+ Match type : NOTICE
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ README.md [288:289]
+ Scancode info:
+ Original SPDX id: MIT
+ Score : 27.78
+ Match type : NOTICE
+ Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
+ Files with this license:
+ README.md [288:289]
+
+KEEP Apache-2.0 db6eb89a8b6a3431633f0800fa377869
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 21.54
+ Match type : NOTICE
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ source/dragonbox_to_chars.cpp [11:15]
diff --git a/contrib/restricted/dragonbox/.yandex_meta/licenses.list.txt b/contrib/restricted/dragonbox/.yandex_meta/licenses.list.txt
index 6c08104582..9ddb05da1d 100644
--- a/contrib/restricted/dragonbox/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/dragonbox/.yandex_meta/licenses.list.txt
@@ -1,557 +1,557 @@
-====================Apache-2.0====================
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
-
-====================Apache-2.0====================
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
-====================Apache-2.0====================
- * Apache License Version 2.0 ([LICENSE-Apache2](fp_to_chars/LICENSE-Apache2) or http://www.apache.org/licenses/LICENSE-2.0) or
-
-
-====================Apache-2.0====================
- * Apache License Version 2.0 with LLVM Exceptions ([LICENSE-Apache2-LLVM](LICENSE-Apache2-LLVM) or https://llvm.org/foundation/relicensing/LICENSE.txt) or
-
-
-====================Apache-2.0====================
-// (See accompanying file LICENSE-Apache or copy at
-
-
-====================Apache-2.0====================
-// The contents of this file may be used under the terms of the Apache License,
-// Version 2.0.
-//
-// (See accompanying file LICENSE-Apache or copy at
-// http://www.apache.org/licenses/LICENSE-2.0)
-
-
-====================Apache-2.0 AND MIT====================
- * Apache License Version 2.0 ([LICENSE-Apache2](fp_to_chars/LICENSE-Apache2) or http://www.apache.org/licenses/LICENSE-2.0) or
- * Boost Software License Version 1.0 ([LICENSE-Boost](fp_to_chars/LICENSE-Boost) or https://www.boost.org/LICENSE_1_0.txt).
-
-
-====================Apache-2.0 WITH LLVM-exception====================
---- LLVM Exceptions to the Apache 2.0 License ----
-
-As an exception, if, as a result of your compiling your source code, portions
-of this Software are embedded into an Object form of such source code, you
-may redistribute such embedded portions in such Object form without complying
-with the conditions of Sections 4(a), 4(b) and 4(d) of the License.
-
-In addition, if you combine or link compiled forms of this Software with
-software that is licensed under the GPLv2 ("Combined Software") and if a
-court of competent jurisdiction determines that the patent provision (Section
-3), the indemnity provision (Section 9) or other Section of the License
-conflicts with the conditions of the GPLv2, you may retroactively and
-prospectively choose to deem waived or otherwise exclude such Section(s) of
-the License, but only in their entirety and only with respect to the Combined
-Software.
-
-====================Apache-2.0 WITH LLVM-exception====================
-// the Apache License v2.0 with LLVM Exceptions.
-
-
-====================BSL-1.0====================
- * Boost Software License Version 1.0 ([LICENSE-Boost](LICENSE-Boost) or https://www.boost.org/LICENSE_1_0.txt).
-
-
-====================BSL-1.0====================
-// the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE-Boost or copy at
-// https://www.boost.org/LICENSE_1_0.txt)
-
-
-====================BSL-1.0====================
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
-
-====================BSL-1.0 OR Apache-2.0====================
-// Alternatively, the contents of this file may be used under the terms of
-// the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE-Boost or copy at
-// https://www.boost.org/LICENSE_1_0.txt)
-//
-// Unless required by applicable law or agreed to in writing, this software
-// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.
-
-
-====================COPYRIGHT====================
-// Copyright 2018 Ulf Adams
-
-
-====================COPYRIGHT====================
-// Copyright 2020 Junekey Jeon
-
-
-====================File: LICENSE-Boost====================
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
-
-
-====================File: source/LICENSE-Boost====================
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+====================Apache-2.0====================
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+
+====================Apache-2.0====================
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+====================Apache-2.0====================
+ * Apache License Version 2.0 ([LICENSE-Apache2](fp_to_chars/LICENSE-Apache2) or http://www.apache.org/licenses/LICENSE-2.0) or
+
+
+====================Apache-2.0====================
+ * Apache License Version 2.0 with LLVM Exceptions ([LICENSE-Apache2-LLVM](LICENSE-Apache2-LLVM) or https://llvm.org/foundation/relicensing/LICENSE.txt) or
+
+
+====================Apache-2.0====================
+// (See accompanying file LICENSE-Apache or copy at
+
+
+====================Apache-2.0====================
+// The contents of this file may be used under the terms of the Apache License,
+// Version 2.0.
+//
+// (See accompanying file LICENSE-Apache or copy at
+// http://www.apache.org/licenses/LICENSE-2.0)
+
+
+====================Apache-2.0 AND MIT====================
+ * Apache License Version 2.0 ([LICENSE-Apache2](fp_to_chars/LICENSE-Apache2) or http://www.apache.org/licenses/LICENSE-2.0) or
+ * Boost Software License Version 1.0 ([LICENSE-Boost](fp_to_chars/LICENSE-Boost) or https://www.boost.org/LICENSE_1_0.txt).
+
+
+====================Apache-2.0 WITH LLVM-exception====================
+--- LLVM Exceptions to the Apache 2.0 License ----
+
+As an exception, if, as a result of your compiling your source code, portions
+of this Software are embedded into an Object form of such source code, you
+may redistribute such embedded portions in such Object form without complying
+with the conditions of Sections 4(a), 4(b) and 4(d) of the License.
+
+In addition, if you combine or link compiled forms of this Software with
+software that is licensed under the GPLv2 ("Combined Software") and if a
+court of competent jurisdiction determines that the patent provision (Section
+3), the indemnity provision (Section 9) or other Section of the License
+conflicts with the conditions of the GPLv2, you may retroactively and
+prospectively choose to deem waived or otherwise exclude such Section(s) of
+the License, but only in their entirety and only with respect to the Combined
+Software.
+
+====================Apache-2.0 WITH LLVM-exception====================
+// the Apache License v2.0 with LLVM Exceptions.
+
+
+====================BSL-1.0====================
+ * Boost Software License Version 1.0 ([LICENSE-Boost](LICENSE-Boost) or https://www.boost.org/LICENSE_1_0.txt).
+
+
+====================BSL-1.0====================
+// the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE-Boost or copy at
+// https://www.boost.org/LICENSE_1_0.txt)
+
+
+====================BSL-1.0====================
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+====================BSL-1.0 OR Apache-2.0====================
+// Alternatively, the contents of this file may be used under the terms of
+// the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE-Boost or copy at
+// https://www.boost.org/LICENSE_1_0.txt)
+//
+// Unless required by applicable law or agreed to in writing, this software
+// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.
+
+
+====================COPYRIGHT====================
+// Copyright 2018 Ulf Adams
+
+
+====================COPYRIGHT====================
+// Copyright 2020 Junekey Jeon
+
+
+====================File: LICENSE-Boost====================
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+
+====================File: source/LICENSE-Boost====================
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/contrib/restricted/dragonbox/LICENSE-Apache2-LLVM b/contrib/restricted/dragonbox/LICENSE-Apache2-LLVM
index de00c73e45..bd8b243dfa 100644
--- a/contrib/restricted/dragonbox/LICENSE-Apache2-LLVM
+++ b/contrib/restricted/dragonbox/LICENSE-Apache2-LLVM
@@ -1,218 +1,218 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
-
---- LLVM Exceptions to the Apache 2.0 License ----
-
-As an exception, if, as a result of your compiling your source code, portions
-of this Software are embedded into an Object form of such source code, you
-may redistribute such embedded portions in such Object form without complying
-with the conditions of Sections 4(a), 4(b) and 4(d) of the License.
-
-In addition, if you combine or link compiled forms of this Software with
-software that is licensed under the GPLv2 ("Combined Software") and if a
-court of competent jurisdiction determines that the patent provision (Section
-3), the indemnity provision (Section 9) or other Section of the License
-conflicts with the conditions of the GPLv2, you may retroactively and
-prospectively choose to deem waived or otherwise exclude such Section(s) of
-the License, but only in their entirety and only with respect to the Combined
-Software.
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+
+--- LLVM Exceptions to the Apache 2.0 License ----
+
+As an exception, if, as a result of your compiling your source code, portions
+of this Software are embedded into an Object form of such source code, you
+may redistribute such embedded portions in such Object form without complying
+with the conditions of Sections 4(a), 4(b) and 4(d) of the License.
+
+In addition, if you combine or link compiled forms of this Software with
+software that is licensed under the GPLv2 ("Combined Software") and if a
+court of competent jurisdiction determines that the patent provision (Section
+3), the indemnity provision (Section 9) or other Section of the License
+conflicts with the conditions of the GPLv2, you may retroactively and
+prospectively choose to deem waived or otherwise exclude such Section(s) of
+the License, but only in their entirety and only with respect to the Combined
+Software.
diff --git a/contrib/restricted/dragonbox/LICENSE-Boost b/contrib/restricted/dragonbox/LICENSE-Boost
index a5e31aa98d..36b7cd93cd 100644
--- a/contrib/restricted/dragonbox/LICENSE-Boost
+++ b/contrib/restricted/dragonbox/LICENSE-Boost
@@ -1,23 +1,23 @@
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/contrib/restricted/dragonbox/source/LICENSE-Apache2 b/contrib/restricted/dragonbox/source/LICENSE-Apache2
index 63871c2153..261eeb9e9f 100644
--- a/contrib/restricted/dragonbox/source/LICENSE-Apache2
+++ b/contrib/restricted/dragonbox/source/LICENSE-Apache2
@@ -1,201 +1,201 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/contrib/restricted/dragonbox/source/LICENSE-Boost b/contrib/restricted/dragonbox/source/LICENSE-Boost
index a5e31aa98d..36b7cd93cd 100644
--- a/contrib/restricted/dragonbox/source/LICENSE-Boost
+++ b/contrib/restricted/dragonbox/source/LICENSE-Boost
@@ -1,23 +1,23 @@
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/contrib/restricted/dragonbox/ya.make b/contrib/restricted/dragonbox/ya.make
index 110370cf9b..15e083ea41 100644
--- a/contrib/restricted/dragonbox/ya.make
+++ b/contrib/restricted/dragonbox/ya.make
@@ -1,25 +1,25 @@
LIBRARY(dragonbox)
-# git repository: https://github.com/ClickHouse-Extras/dragonbox.git
-# fork of: https://github.com/jk-jeon/dragonbox.git
-# revision: b2751c65c0592c0239aec3becd53d0ea2fde9329
-
+# git repository: https://github.com/ClickHouse-Extras/dragonbox.git
+# fork of: https://github.com/jk-jeon/dragonbox.git
+# revision: b2751c65c0592c0239aec3becd53d0ea2fde9329
+
OWNER(g:clickhouse)
VERSION(2020-12-14-b2751c65c0592c0239aec3becd53d0ea2fde9329)
-LICENSE(
- "(BSL-1.0 OR Apache-2.0)" AND
- Apache-2.0 AND
- Apache-2.0 WITH LLVM-exception AND
- BSL-1.0 AND
- MIT
-)
+LICENSE(
+ "(BSL-1.0 OR Apache-2.0)" AND
+ Apache-2.0 AND
+ Apache-2.0 WITH LLVM-exception AND
+ BSL-1.0 AND
+ MIT
+)
+
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
NO_UTIL()
-
+
NO_COMPILER_WARNINGS()
ADDINCL(
diff --git a/contrib/restricted/fast_float/.yandex_meta/devtools.copyrights.report b/contrib/restricted/fast_float/.yandex_meta/devtools.copyrights.report
index a5942d5a47..9d52ed34b5 100644
--- a/contrib/restricted/fast_float/.yandex_meta/devtools.copyrights.report
+++ b/contrib/restricted/fast_float/.yandex_meta/devtools.copyrights.report
@@ -1,43 +1,43 @@
-# File format ($ symbol means the beginning of a line):
-#
-# $ # this message
-# $ # =======================
-# $ # comments (all commentaries should starts with some number of spaces and # symbol)
-# ${action} {license id} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
-# ${all_file_action} filename
-# $ # user commentaries (many lines)
-# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
-# ${action} {license spdx} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/3/ya.make
-# ${all_file_action} filename
-# $ # user commentaries
-# $ generated description
-# $ ...
-#
-# You can modify action, all_file_action and add commentaries
-# Available actions:
-# keep - keep license in contrib and use in credits
-# skip - skip license
-# remove - remove all files with this license
-# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
-#
-# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
-# We suppose that that files can contain some license info
-# Available all file actions:
-# FILE_IGNORE - ignore file (do nothing)
-# FILE_INCLUDE - include all file data into licenses text file
-# =======================
-
+# File format ($ symbol means the beginning of a line):
+#
+# $ # this message
+# $ # =======================
+# $ # comments (all commentaries should starts with some number of spaces and # symbol)
+# ${action} {license id} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
+# ${all_file_action} filename
+# $ # user commentaries (many lines)
+# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
+# ${action} {license spdx} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/3/ya.make
+# ${all_file_action} filename
+# $ # user commentaries
+# $ generated description
+# $ ...
+#
+# You can modify action, all_file_action and add commentaries
+# Available actions:
+# keep - keep license in contrib and use in credits
+# skip - skip license
+# remove - remove all files with this license
+# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
+#
+# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
+# We suppose that that files can contain some license info
+# Available all file actions:
+# FILE_IGNORE - ignore file (do nothing)
+# FILE_INCLUDE - include all file data into licenses text file
+# =======================
+
KEEP COPYRIGHT_SERVICE_LABEL 3f8e6ecc96f8543539ce4b548cdc9afb
-BELONGS ya.make
- License text:
+BELONGS ya.make
+ License text:
Copyright 2021 The fast_float authors
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
LICENSE-APACHE [178:178]
KEEP COPYRIGHT_SERVICE_LABEL 82ebfb92cb87bd05a6fa255f5b15c9c8
diff --git a/contrib/restricted/fast_float/.yandex_meta/devtools.licenses.report b/contrib/restricted/fast_float/.yandex_meta/devtools.licenses.report
index ee457d829f..8800c37c87 100644
--- a/contrib/restricted/fast_float/.yandex_meta/devtools.licenses.report
+++ b/contrib/restricted/fast_float/.yandex_meta/devtools.licenses.report
@@ -1,52 +1,52 @@
-# File format ($ symbol means the beginning of a line):
-#
-# $ # this message
-# $ # =======================
-# $ # comments (all commentaries should starts with some number of spaces and # symbol)
-# ${action} {license id} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
-# ${all_file_action} filename
-# $ # user commentaries (many lines)
-# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
-# ${action} {license spdx} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/3/ya.make
-# ${all_file_action} filename
-# $ # user commentaries
-# $ generated description
-# $ ...
-#
-# You can modify action, all_file_action and add commentaries
-# Available actions:
-# keep - keep license in contrib and use in credits
-# skip - skip license
-# remove - remove all files with this license
-# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
-#
-# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
-# We suppose that that files can contain some license info
-# Available all file actions:
-# FILE_IGNORE - ignore file (do nothing)
-# FILE_INCLUDE - include all file data into licenses text file
-# =======================
-
-KEEP Apache-2.0 AND MIT 245f2cf2a981943544eac8f7e2843ceb
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 50.70
- Match type : NOTICE
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
+# File format ($ symbol means the beginning of a line):
+#
+# $ # this message
+# $ # =======================
+# $ # comments (all commentaries should starts with some number of spaces and # symbol)
+# ${action} {license id} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
+# ${all_file_action} filename
+# $ # user commentaries (many lines)
+# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
+# ${action} {license spdx} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/3/ya.make
+# ${all_file_action} filename
+# $ # user commentaries
+# $ generated description
+# $ ...
+#
+# You can modify action, all_file_action and add commentaries
+# Available actions:
+# keep - keep license in contrib and use in credits
+# skip - skip license
+# remove - remove all files with this license
+# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
+#
+# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
+# We suppose that that files can contain some license info
+# Available all file actions:
+# FILE_IGNORE - ignore file (do nothing)
+# FILE_INCLUDE - include all file data into licenses text file
+# =======================
+
+KEEP Apache-2.0 AND MIT 245f2cf2a981943544eac8f7e2843ceb
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 50.70
+ Match type : NOTICE
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
README.md [203:217]
- Scancode info:
- Original SPDX id: MIT
- Score : 50.70
- Match type : NOTICE
- Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
- Files with this license:
+ Scancode info:
+ Original SPDX id: MIT
+ Score : 50.70
+ Match type : NOTICE
+ Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
+ Files with this license:
README.md [203:217]
-
+
KEEP MIT 399584035c417b91040964779555dfac
BELONGS ya.make
License text:
@@ -59,77 +59,77 @@ BELONGS ya.make
Files with this license:
LICENSE-MIT [1:1]
-KEEP MIT 5040e467e8fd4daf9f11f923fb91a69f
-BELONGS ya.make
+KEEP MIT 5040e467e8fd4daf9f11f923fb91a69f
+BELONGS ya.make
FILE_INCLUDE AUTHORS found in files: LICENSE-MIT at line 23
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: MIT
- Score : 100.00
- Match type : TEXT
- Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
- Files with this license:
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: MIT
+ Score : 100.00
+ Match type : TEXT
+ Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
+ Files with this license:
LICENSE-MIT [5:27]
-
-SKIP LicenseRef-scancode-unknown-license-reference 5332daea95b50b06c92625648767000b
-BELONGS ya.make
- License text:
- Licensed under either of <a href="LICENSE-APACHE">Apache License, Version
- Scancode info:
- Original SPDX id: LicenseRef-scancode-unknown-license-reference
- Score : 11.00
- Match type : INTRO
- Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/unknown-license-reference.LICENSE
- Files with this license:
+
+SKIP LicenseRef-scancode-unknown-license-reference 5332daea95b50b06c92625648767000b
+BELONGS ya.make
+ License text:
+ Licensed under either of <a href="LICENSE-APACHE">Apache License, Version
+ Scancode info:
+ Original SPDX id: LicenseRef-scancode-unknown-license-reference
+ Score : 11.00
+ Match type : INTRO
+ Links : https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/unknown-license-reference.LICENSE
+ Files with this license:
README.md [208:208]
-
-KEEP Apache-2.0 5e7d4154fa46facc827f6086a0b6b5d1
-BELONGS ya.make
- License text:
- under the Apache 2.0 license.
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
+
+KEEP Apache-2.0 5e7d4154fa46facc827f6086a0b6b5d1
+BELONGS ya.make
+ License text:
+ under the Apache 2.0 license.
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
README.md [203:203]
-
-KEEP Apache-2.0 62795c4c9961569de215634277f01a15
-BELONGS ya.make
- License text:
- Licensed under either of <a href="LICENSE-APACHE">Apache License, Version
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 90.00
- Match type : TAG
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
+
+KEEP Apache-2.0 62795c4c9961569de215634277f01a15
+BELONGS ya.make
+ License text:
+ Licensed under either of <a href="LICENSE-APACHE">Apache License, Version
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 90.00
+ Match type : TAG
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
README.md [208:208]
-
-KEEP Apache-2.0 922a268d401707c0a55929c692c037a5
-BELONGS ya.make
- License text:
- Licensed under either of <a href="LICENSE-APACHE">Apache License, Version
- 2.0</a> or <a href="LICENSE-MIT">MIT license</a> at your option.
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 100.00
- Match type : REFERENCE
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
+
+KEEP Apache-2.0 922a268d401707c0a55929c692c037a5
+BELONGS ya.make
+ License text:
+ Licensed under either of <a href="LICENSE-APACHE">Apache License, Version
+ 2.0</a> or <a href="LICENSE-MIT">MIT license</a> at your option.
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 100.00
+ Match type : REFERENCE
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
README.md [208:209]
-
-KEEP MIT cf519141cd6049a5930eb400ab733edc
-BELONGS ya.make
- License text:
- 2.0</a> or <a href="LICENSE-MIT">MIT license</a> at your option.
- Scancode info:
- Original SPDX id: MIT
- Score : 100.00
- Match type : TAG
- Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
- Files with this license:
+
+KEEP MIT cf519141cd6049a5930eb400ab733edc
+BELONGS ya.make
+ License text:
+ 2.0</a> or <a href="LICENSE-MIT">MIT license</a> at your option.
+ Scancode info:
+ Original SPDX id: MIT
+ Score : 100.00
+ Match type : TAG
+ Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
+ Files with this license:
README.md [209:209]
KEEP Apache-2.0 fb21a7d67961597593aefff800484f8d
diff --git a/contrib/restricted/fast_float/.yandex_meta/licenses.list.txt b/contrib/restricted/fast_float/.yandex_meta/licenses.list.txt
index f1f3e2b5e4..ede17de705 100644
--- a/contrib/restricted/fast_float/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/fast_float/.yandex_meta/licenses.list.txt
@@ -1,268 +1,268 @@
-====================Apache-2.0====================
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
+====================Apache-2.0====================
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
Copyright 2021 The fast_float authors
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
-====================Apache-2.0====================
-Licensed under either of <a href="LICENSE-APACHE">Apache License, Version
-
-
-====================Apache-2.0====================
-Licensed under either of <a href="LICENSE-APACHE">Apache License, Version
-2.0</a> or <a href="LICENSE-MIT">MIT license</a> at your option.
-
-
-====================Apache-2.0====================
-under the Apache 2.0 license.
-
-
-====================Apache-2.0 AND MIT====================
-under the Apache 2.0 license.
-
-## License
-
-<sup>
-Licensed under either of <a href="LICENSE-APACHE">Apache License, Version
-2.0</a> or <a href="LICENSE-MIT">MIT license</a> at your option.
-</sup>
-
-<br>
-
-<sub>
-Unless you explicitly state otherwise, any contribution intentionally submitted
-for inclusion in this repository by you, as defined in the Apache-2.0 license,
-shall be dual licensed as above, without any additional terms or conditions.
-
-
-====================COPYRIGHT====================
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+====================Apache-2.0====================
+Licensed under either of <a href="LICENSE-APACHE">Apache License, Version
+
+
+====================Apache-2.0====================
+Licensed under either of <a href="LICENSE-APACHE">Apache License, Version
+2.0</a> or <a href="LICENSE-MIT">MIT license</a> at your option.
+
+
+====================Apache-2.0====================
+under the Apache 2.0 license.
+
+
+====================Apache-2.0 AND MIT====================
+under the Apache 2.0 license.
+
+## License
+
+<sup>
+Licensed under either of <a href="LICENSE-APACHE">Apache License, Version
+2.0</a> or <a href="LICENSE-MIT">MIT license</a> at your option.
+</sup>
+
+<br>
+
+<sub>
+Unless you explicitly state otherwise, any contribution intentionally submitted
+for inclusion in this repository by you, as defined in the Apache-2.0 license,
+shall be dual licensed as above, without any additional terms or conditions.
+
+
+====================COPYRIGHT====================
Copyright 2021 The fast_float authors
-
-
+
+
====================COPYRIGHT====================
Copyright (c) 2021 The fast_float authors
-====================File: AUTHORS====================
-Daniel Lemire
-João Paulo Magalhaes
-
-
-====================MIT====================
-2.0</a> or <a href="LICENSE-MIT">MIT license</a> at your option.
-
-
-====================MIT====================
+====================File: AUTHORS====================
+Daniel Lemire
+João Paulo Magalhaes
+
+
+====================MIT====================
+2.0</a> or <a href="LICENSE-MIT">MIT license</a> at your option.
+
+
+====================MIT====================
MIT License
====================MIT====================
-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. \ No newline at end of file
+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. \ No newline at end of file
diff --git a/contrib/restricted/fast_float/LICENSE-APACHE b/contrib/restricted/fast_float/LICENSE-APACHE
index 6fec72fc56..26f4398f24 100644
--- a/contrib/restricted/fast_float/LICENSE-APACHE
+++ b/contrib/restricted/fast_float/LICENSE-APACHE
@@ -1,190 +1,190 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
Copyright 2021 The fast_float authors
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/contrib/restricted/fast_float/ya.make b/contrib/restricted/fast_float/ya.make
index 513da17cfd..dd331096b3 100644
--- a/contrib/restricted/fast_float/ya.make
+++ b/contrib/restricted/fast_float/ya.make
@@ -1,7 +1,7 @@
# Generated by devtools/yamaker from nixpkgs 21.11.
LIBRARY()
-
+
LICENSE(
Apache-2.0 AND
MIT
diff --git a/contrib/restricted/googletest/googlemock/.yandex_meta/licenses.list.txt b/contrib/restricted/googletest/googlemock/.yandex_meta/licenses.list.txt
index 1b0a2dc28a..eeaae90774 100644
--- a/contrib/restricted/googletest/googlemock/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/googletest/googlemock/.yandex_meta/licenses.list.txt
@@ -1,144 +1,144 @@
-====================Apache-2.0====================
-[cppclean project](http://code.google.com/p/cppclean/) and under the Apache
-License, which is different from GoogleMock's license.
-
-
-====================BSD-3-Clause====================
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-====================BSD-3-Clause====================
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
- * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-====================COPYRIGHT====================
-// Copyright 2007, Google Inc.
-// All rights reserved.
-
-
-====================COPYRIGHT====================
-// Copyright 2013, Google Inc.
-// All rights reserved.
-
-
-====================COPYRIGHT====================
-// Copyright 2015, Google Inc.
-// All rights reserved.
-
-
-====================COPYRIGHT====================
-Copyright 2008, Google Inc.
-All rights reserved.
-
-
-====================File: CONTRIBUTORS====================
-# This file contains a list of people who've made non-trivial
-# contribution to the Google C++ Testing Framework project. People
-# who commit code to the project are encouraged to add their names
-# here. Please keep the list sorted by first names.
-
-Ajay Joshi <jaj@google.com>
-Balázs Dán <balazs.dan@gmail.com>
-Benoit Sigoure <tsuna@google.com>
-Bharat Mediratta <bharat@menalto.com>
-Bogdan Piloca <boo@google.com>
-Chandler Carruth <chandlerc@google.com>
-Chris Prince <cprince@google.com>
-Chris Taylor <taylorc@google.com>
-Dan Egnor <egnor@google.com>
-Dave MacLachlan <dmaclach@gmail.com>
-David Anderson <danderson@google.com>
-Dean Sturtevant
-Eric Roman <eroman@chromium.org>
-Gene Volovich <gv@cite.com>
-Hady Zalek <hady.zalek@gmail.com>
-Hal Burch <gmock@hburch.com>
-Jeffrey Yasskin <jyasskin@google.com>
-Jim Keller <jimkeller@google.com>
-Joe Walnes <joe@truemesh.com>
-Jon Wray <jwray@google.com>
-Jói Sigurðsson <joi@google.com>
-Keir Mierle <mierle@gmail.com>
-Keith Ray <keith.ray@gmail.com>
-Kenton Varda <kenton@google.com>
-Kostya Serebryany <kcc@google.com>
-Krystian Kuzniarek <krystian.kuzniarek@gmail.com>
-Lev Makhlis
-Manuel Klimek <klimek@google.com>
-Mario Tanev <radix@google.com>
-Mark Paskin
-Markus Heule <markus.heule@gmail.com>
-Matthew Simmons <simmonmt@acm.org>
-Mika Raento <mikie@iki.fi>
-Mike Bland <mbland@google.com>
-Miklós Fazekas <mfazekas@szemafor.com>
-Neal Norwitz <nnorwitz@gmail.com>
-Nermin Ozkiranartli <nermin@google.com>
-Owen Carlsen <ocarlsen@google.com>
-Paneendra Ba <paneendra@google.com>
-Pasi Valminen <pasi.valminen@gmail.com>
-Patrick Hanna <phanna@google.com>
-Patrick Riley <pfr@google.com>
-Paul Menage <menage@google.com>
-Peter Kaminski <piotrk@google.com>
-Piotr Kaminski <piotrk@google.com>
-Preston Jackson <preston.a.jackson@gmail.com>
-Rainer Klaffenboeck <rainer.klaffenboeck@dynatrace.com>
-Russ Cox <rsc@google.com>
-Russ Rufer <russ@pentad.com>
-Sean Mcafee <eefacm@gmail.com>
-Sigurður Ásgeirsson <siggi@google.com>
-Sverre Sundsdal <sundsdal@gmail.com>
-Takeshi Yoshino <tyoshino@google.com>
-Tracy Bialik <tracy@pentad.com>
-Vadim Berman <vadimb@google.com>
-Vlad Losev <vladl@google.com>
-Wolfgang Klier <wklier@google.com>
-Zhanyong Wan <wan@google.com>
+====================Apache-2.0====================
+[cppclean project](http://code.google.com/p/cppclean/) and under the Apache
+License, which is different from GoogleMock's license.
+
+
+====================BSD-3-Clause====================
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+====================BSD-3-Clause====================
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+ * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+====================COPYRIGHT====================
+// Copyright 2007, Google Inc.
+// All rights reserved.
+
+
+====================COPYRIGHT====================
+// Copyright 2013, Google Inc.
+// All rights reserved.
+
+
+====================COPYRIGHT====================
+// Copyright 2015, Google Inc.
+// All rights reserved.
+
+
+====================COPYRIGHT====================
+Copyright 2008, Google Inc.
+All rights reserved.
+
+
+====================File: CONTRIBUTORS====================
+# This file contains a list of people who've made non-trivial
+# contribution to the Google C++ Testing Framework project. People
+# who commit code to the project are encouraged to add their names
+# here. Please keep the list sorted by first names.
+
+Ajay Joshi <jaj@google.com>
+Balázs Dán <balazs.dan@gmail.com>
+Benoit Sigoure <tsuna@google.com>
+Bharat Mediratta <bharat@menalto.com>
+Bogdan Piloca <boo@google.com>
+Chandler Carruth <chandlerc@google.com>
+Chris Prince <cprince@google.com>
+Chris Taylor <taylorc@google.com>
+Dan Egnor <egnor@google.com>
+Dave MacLachlan <dmaclach@gmail.com>
+David Anderson <danderson@google.com>
+Dean Sturtevant
+Eric Roman <eroman@chromium.org>
+Gene Volovich <gv@cite.com>
+Hady Zalek <hady.zalek@gmail.com>
+Hal Burch <gmock@hburch.com>
+Jeffrey Yasskin <jyasskin@google.com>
+Jim Keller <jimkeller@google.com>
+Joe Walnes <joe@truemesh.com>
+Jon Wray <jwray@google.com>
+Jói Sigurðsson <joi@google.com>
+Keir Mierle <mierle@gmail.com>
+Keith Ray <keith.ray@gmail.com>
+Kenton Varda <kenton@google.com>
+Kostya Serebryany <kcc@google.com>
+Krystian Kuzniarek <krystian.kuzniarek@gmail.com>
+Lev Makhlis
+Manuel Klimek <klimek@google.com>
+Mario Tanev <radix@google.com>
+Mark Paskin
+Markus Heule <markus.heule@gmail.com>
+Matthew Simmons <simmonmt@acm.org>
+Mika Raento <mikie@iki.fi>
+Mike Bland <mbland@google.com>
+Miklós Fazekas <mfazekas@szemafor.com>
+Neal Norwitz <nnorwitz@gmail.com>
+Nermin Ozkiranartli <nermin@google.com>
+Owen Carlsen <ocarlsen@google.com>
+Paneendra Ba <paneendra@google.com>
+Pasi Valminen <pasi.valminen@gmail.com>
+Patrick Hanna <phanna@google.com>
+Patrick Riley <pfr@google.com>
+Paul Menage <menage@google.com>
+Peter Kaminski <piotrk@google.com>
+Piotr Kaminski <piotrk@google.com>
+Preston Jackson <preston.a.jackson@gmail.com>
+Rainer Klaffenboeck <rainer.klaffenboeck@dynatrace.com>
+Russ Cox <rsc@google.com>
+Russ Rufer <russ@pentad.com>
+Sean Mcafee <eefacm@gmail.com>
+Sigurður Ásgeirsson <siggi@google.com>
+Sverre Sundsdal <sundsdal@gmail.com>
+Takeshi Yoshino <tyoshino@google.com>
+Tracy Bialik <tracy@pentad.com>
+Vadim Berman <vadimb@google.com>
+Vlad Losev <vladl@google.com>
+Wolfgang Klier <wklier@google.com>
+Zhanyong Wan <wan@google.com>
diff --git a/contrib/restricted/googletest/googlemock/gmock_main/.yandex_meta/licenses.list.txt b/contrib/restricted/googletest/googlemock/gmock_main/.yandex_meta/licenses.list.txt
index 88dff17f10..c2e41973c1 100644
--- a/contrib/restricted/googletest/googlemock/gmock_main/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/googletest/googlemock/gmock_main/.yandex_meta/licenses.list.txt
@@ -1,96 +1,96 @@
-====================BSD-3-Clause====================
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
- * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-====================COPYRIGHT====================
-Copyright 2008, Google Inc.
-All rights reserved.
-
-
-====================File: CONTRIBUTORS====================
-# This file contains a list of people who've made non-trivial
-# contribution to the Google C++ Testing Framework project. People
-# who commit code to the project are encouraged to add their names
-# here. Please keep the list sorted by first names.
-
-Ajay Joshi <jaj@google.com>
-Balázs Dán <balazs.dan@gmail.com>
-Benoit Sigoure <tsuna@google.com>
-Bharat Mediratta <bharat@menalto.com>
-Bogdan Piloca <boo@google.com>
-Chandler Carruth <chandlerc@google.com>
-Chris Prince <cprince@google.com>
-Chris Taylor <taylorc@google.com>
-Dan Egnor <egnor@google.com>
-Dave MacLachlan <dmaclach@gmail.com>
-David Anderson <danderson@google.com>
-Dean Sturtevant
-Eric Roman <eroman@chromium.org>
-Gene Volovich <gv@cite.com>
-Hady Zalek <hady.zalek@gmail.com>
-Hal Burch <gmock@hburch.com>
-Jeffrey Yasskin <jyasskin@google.com>
-Jim Keller <jimkeller@google.com>
-Joe Walnes <joe@truemesh.com>
-Jon Wray <jwray@google.com>
-Jói Sigurðsson <joi@google.com>
-Keir Mierle <mierle@gmail.com>
-Keith Ray <keith.ray@gmail.com>
-Kenton Varda <kenton@google.com>
-Kostya Serebryany <kcc@google.com>
-Krystian Kuzniarek <krystian.kuzniarek@gmail.com>
-Lev Makhlis
-Manuel Klimek <klimek@google.com>
-Mario Tanev <radix@google.com>
-Mark Paskin
-Markus Heule <markus.heule@gmail.com>
-Matthew Simmons <simmonmt@acm.org>
-Mika Raento <mikie@iki.fi>
-Mike Bland <mbland@google.com>
-Miklós Fazekas <mfazekas@szemafor.com>
-Neal Norwitz <nnorwitz@gmail.com>
-Nermin Ozkiranartli <nermin@google.com>
-Owen Carlsen <ocarlsen@google.com>
-Paneendra Ba <paneendra@google.com>
-Pasi Valminen <pasi.valminen@gmail.com>
-Patrick Hanna <phanna@google.com>
-Patrick Riley <pfr@google.com>
-Paul Menage <menage@google.com>
-Peter Kaminski <piotrk@google.com>
-Piotr Kaminski <piotrk@google.com>
-Preston Jackson <preston.a.jackson@gmail.com>
-Rainer Klaffenboeck <rainer.klaffenboeck@dynatrace.com>
-Russ Cox <rsc@google.com>
-Russ Rufer <russ@pentad.com>
-Sean Mcafee <eefacm@gmail.com>
-Sigurður Ásgeirsson <siggi@google.com>
-Sverre Sundsdal <sundsdal@gmail.com>
-Takeshi Yoshino <tyoshino@google.com>
-Tracy Bialik <tracy@pentad.com>
-Vadim Berman <vadimb@google.com>
-Vlad Losev <vladl@google.com>
-Wolfgang Klier <wklier@google.com>
-Zhanyong Wan <wan@google.com>
+====================BSD-3-Clause====================
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+ * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+====================COPYRIGHT====================
+Copyright 2008, Google Inc.
+All rights reserved.
+
+
+====================File: CONTRIBUTORS====================
+# This file contains a list of people who've made non-trivial
+# contribution to the Google C++ Testing Framework project. People
+# who commit code to the project are encouraged to add their names
+# here. Please keep the list sorted by first names.
+
+Ajay Joshi <jaj@google.com>
+Balázs Dán <balazs.dan@gmail.com>
+Benoit Sigoure <tsuna@google.com>
+Bharat Mediratta <bharat@menalto.com>
+Bogdan Piloca <boo@google.com>
+Chandler Carruth <chandlerc@google.com>
+Chris Prince <cprince@google.com>
+Chris Taylor <taylorc@google.com>
+Dan Egnor <egnor@google.com>
+Dave MacLachlan <dmaclach@gmail.com>
+David Anderson <danderson@google.com>
+Dean Sturtevant
+Eric Roman <eroman@chromium.org>
+Gene Volovich <gv@cite.com>
+Hady Zalek <hady.zalek@gmail.com>
+Hal Burch <gmock@hburch.com>
+Jeffrey Yasskin <jyasskin@google.com>
+Jim Keller <jimkeller@google.com>
+Joe Walnes <joe@truemesh.com>
+Jon Wray <jwray@google.com>
+Jói Sigurðsson <joi@google.com>
+Keir Mierle <mierle@gmail.com>
+Keith Ray <keith.ray@gmail.com>
+Kenton Varda <kenton@google.com>
+Kostya Serebryany <kcc@google.com>
+Krystian Kuzniarek <krystian.kuzniarek@gmail.com>
+Lev Makhlis
+Manuel Klimek <klimek@google.com>
+Mario Tanev <radix@google.com>
+Mark Paskin
+Markus Heule <markus.heule@gmail.com>
+Matthew Simmons <simmonmt@acm.org>
+Mika Raento <mikie@iki.fi>
+Mike Bland <mbland@google.com>
+Miklós Fazekas <mfazekas@szemafor.com>
+Neal Norwitz <nnorwitz@gmail.com>
+Nermin Ozkiranartli <nermin@google.com>
+Owen Carlsen <ocarlsen@google.com>
+Paneendra Ba <paneendra@google.com>
+Pasi Valminen <pasi.valminen@gmail.com>
+Patrick Hanna <phanna@google.com>
+Patrick Riley <pfr@google.com>
+Paul Menage <menage@google.com>
+Peter Kaminski <piotrk@google.com>
+Piotr Kaminski <piotrk@google.com>
+Preston Jackson <preston.a.jackson@gmail.com>
+Rainer Klaffenboeck <rainer.klaffenboeck@dynatrace.com>
+Russ Cox <rsc@google.com>
+Russ Rufer <russ@pentad.com>
+Sean Mcafee <eefacm@gmail.com>
+Sigurður Ásgeirsson <siggi@google.com>
+Sverre Sundsdal <sundsdal@gmail.com>
+Takeshi Yoshino <tyoshino@google.com>
+Tracy Bialik <tracy@pentad.com>
+Vadim Berman <vadimb@google.com>
+Vlad Losev <vladl@google.com>
+Wolfgang Klier <wklier@google.com>
+Zhanyong Wan <wan@google.com>
diff --git a/contrib/restricted/googletest/googlemock/gmock_main/ya.make b/contrib/restricted/googletest/googlemock/gmock_main/ya.make
index 1bd069cb36..eb95d44b72 100644
--- a/contrib/restricted/googletest/googlemock/gmock_main/ya.make
+++ b/contrib/restricted/googletest/googlemock/gmock_main/ya.make
@@ -2,15 +2,15 @@
LIBRARY()
-OWNER(
- somov
- g:cpp-contrib
-)
+OWNER(
+ somov
+ g:cpp-contrib
+)
LICENSE(BSD-3-Clause)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
PEERDIR(
contrib/restricted/googletest/googlemock
contrib/restricted/googletest/googletest
diff --git a/contrib/restricted/googletest/googlemock/include/gmock/gmock-actions.h b/contrib/restricted/googletest/googlemock/include/gmock/gmock-actions.h
index dd03053850..f2393bd3af 100644
--- a/contrib/restricted/googletest/googlemock/include/gmock/gmock-actions.h
+++ b/contrib/restricted/googletest/googlemock/include/gmock/gmock-actions.h
@@ -1,35 +1,35 @@
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Google Mock - a framework for writing C++ mock classes.
-//
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+// Google Mock - a framework for writing C++ mock classes.
+//
// The ACTION* family of macros can be used in a namespace scope to
// define custom actions easily. The syntax:
//
@@ -124,318 +124,318 @@
//
// To learn more about using these macros, please search for 'ACTION' on
// https://github.com/google/googletest/blob/master/docs/gmock_cook_book.md
-
+
// GOOGLETEST_CM0002 DO NOT DELETE
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_ACTIONS_H_
#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_ACTIONS_H_
-
-#ifndef _WIN32_WCE
-# include <errno.h>
-#endif
-
-#include <algorithm>
+
+#ifndef _WIN32_WCE
+# include <errno.h>
+#endif
+
+#include <algorithm>
#include <functional>
#include <memory>
-#include <string>
+#include <string>
#include <tuple>
#include <type_traits>
#include <utility>
-
-#include "gmock/internal/gmock-internal-utils.h"
-#include "gmock/internal/gmock-port.h"
+
+#include "gmock/internal/gmock-internal-utils.h"
+#include "gmock/internal/gmock-port.h"
#include "gmock/internal/gmock-pp.h"
-
+
#ifdef _MSC_VER
# pragma warning(push)
# pragma warning(disable:4100)
-#endif
-
-namespace testing {
-
-// To implement an action Foo, define:
-// 1. a class FooAction that implements the ActionInterface interface, and
-// 2. a factory function that creates an Action object from a
-// const FooAction*.
-//
-// The two-level delegation design follows that of Matcher, providing
-// consistency for extension developers. It also eases ownership
-// management as Action objects can now be copied like plain values.
-
-namespace internal {
-
-// BuiltInDefaultValueGetter<T, true>::Get() returns a
-// default-constructed T value. BuiltInDefaultValueGetter<T,
-// false>::Get() crashes with an error.
-//
-// This primary template is used when kDefaultConstructible is true.
-template <typename T, bool kDefaultConstructible>
-struct BuiltInDefaultValueGetter {
- static T Get() { return T(); }
-};
-template <typename T>
-struct BuiltInDefaultValueGetter<T, false> {
- static T Get() {
- Assert(false, __FILE__, __LINE__,
- "Default action undefined for the function return type.");
- return internal::Invalid<T>();
- // The above statement will never be reached, but is required in
- // order for this function to compile.
- }
-};
-
-// BuiltInDefaultValue<T>::Get() returns the "built-in" default value
-// for type T, which is NULL when T is a raw pointer type, 0 when T is
-// a numeric type, false when T is bool, or "" when T is string or
-// std::string. In addition, in C++11 and above, it turns a
-// default-constructed T value if T is default constructible. For any
-// other type T, the built-in default T value is undefined, and the
-// function will abort the process.
-template <typename T>
-class BuiltInDefaultValue {
- public:
+#endif
+
+namespace testing {
+
+// To implement an action Foo, define:
+// 1. a class FooAction that implements the ActionInterface interface, and
+// 2. a factory function that creates an Action object from a
+// const FooAction*.
+//
+// The two-level delegation design follows that of Matcher, providing
+// consistency for extension developers. It also eases ownership
+// management as Action objects can now be copied like plain values.
+
+namespace internal {
+
+// BuiltInDefaultValueGetter<T, true>::Get() returns a
+// default-constructed T value. BuiltInDefaultValueGetter<T,
+// false>::Get() crashes with an error.
+//
+// This primary template is used when kDefaultConstructible is true.
+template <typename T, bool kDefaultConstructible>
+struct BuiltInDefaultValueGetter {
+ static T Get() { return T(); }
+};
+template <typename T>
+struct BuiltInDefaultValueGetter<T, false> {
+ static T Get() {
+ Assert(false, __FILE__, __LINE__,
+ "Default action undefined for the function return type.");
+ return internal::Invalid<T>();
+ // The above statement will never be reached, but is required in
+ // order for this function to compile.
+ }
+};
+
+// BuiltInDefaultValue<T>::Get() returns the "built-in" default value
+// for type T, which is NULL when T is a raw pointer type, 0 when T is
+// a numeric type, false when T is bool, or "" when T is string or
+// std::string. In addition, in C++11 and above, it turns a
+// default-constructed T value if T is default constructible. For any
+// other type T, the built-in default T value is undefined, and the
+// function will abort the process.
+template <typename T>
+class BuiltInDefaultValue {
+ public:
// This function returns true if and only if type T has a built-in default
// value.
- static bool Exists() {
- return ::std::is_default_constructible<T>::value;
- }
-
- static T Get() {
- return BuiltInDefaultValueGetter<
- T, ::std::is_default_constructible<T>::value>::Get();
- }
-};
-
-// This partial specialization says that we use the same built-in
-// default value for T and const T.
-template <typename T>
-class BuiltInDefaultValue<const T> {
- public:
- static bool Exists() { return BuiltInDefaultValue<T>::Exists(); }
- static T Get() { return BuiltInDefaultValue<T>::Get(); }
-};
-
-// This partial specialization defines the default values for pointer
-// types.
-template <typename T>
-class BuiltInDefaultValue<T*> {
- public:
- static bool Exists() { return true; }
+ static bool Exists() {
+ return ::std::is_default_constructible<T>::value;
+ }
+
+ static T Get() {
+ return BuiltInDefaultValueGetter<
+ T, ::std::is_default_constructible<T>::value>::Get();
+ }
+};
+
+// This partial specialization says that we use the same built-in
+// default value for T and const T.
+template <typename T>
+class BuiltInDefaultValue<const T> {
+ public:
+ static bool Exists() { return BuiltInDefaultValue<T>::Exists(); }
+ static T Get() { return BuiltInDefaultValue<T>::Get(); }
+};
+
+// This partial specialization defines the default values for pointer
+// types.
+template <typename T>
+class BuiltInDefaultValue<T*> {
+ public:
+ static bool Exists() { return true; }
static T* Get() { return nullptr; }
-};
-
-// The following specializations define the default values for
-// specific types we care about.
-#define GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(type, value) \
- template <> \
- class BuiltInDefaultValue<type> { \
- public: \
- static bool Exists() { return true; } \
- static type Get() { return value; } \
- }
-
-GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(void, ); // NOLINT
-GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(::std::string, "");
-GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(bool, false);
-GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(unsigned char, '\0');
-GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(signed char, '\0');
-GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(char, '\0');
-
-// There's no need for a default action for signed wchar_t, as that
-// type is the same as wchar_t for gcc, and invalid for MSVC.
-//
-// There's also no need for a default action for unsigned wchar_t, as
-// that type is the same as unsigned int for gcc, and invalid for
-// MSVC.
-#if GMOCK_WCHAR_T_IS_NATIVE_
-GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(wchar_t, 0U); // NOLINT
-#endif
-
-GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(unsigned short, 0U); // NOLINT
-GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(signed short, 0); // NOLINT
-GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(unsigned int, 0U);
-GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(signed int, 0);
-GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(unsigned long, 0UL); // NOLINT
-GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(signed long, 0L); // NOLINT
+};
+
+// The following specializations define the default values for
+// specific types we care about.
+#define GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(type, value) \
+ template <> \
+ class BuiltInDefaultValue<type> { \
+ public: \
+ static bool Exists() { return true; } \
+ static type Get() { return value; } \
+ }
+
+GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(void, ); // NOLINT
+GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(::std::string, "");
+GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(bool, false);
+GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(unsigned char, '\0');
+GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(signed char, '\0');
+GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(char, '\0');
+
+// There's no need for a default action for signed wchar_t, as that
+// type is the same as wchar_t for gcc, and invalid for MSVC.
+//
+// There's also no need for a default action for unsigned wchar_t, as
+// that type is the same as unsigned int for gcc, and invalid for
+// MSVC.
+#if GMOCK_WCHAR_T_IS_NATIVE_
+GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(wchar_t, 0U); // NOLINT
+#endif
+
+GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(unsigned short, 0U); // NOLINT
+GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(signed short, 0); // NOLINT
+GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(unsigned int, 0U);
+GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(signed int, 0);
+GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(unsigned long, 0UL); // NOLINT
+GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(signed long, 0L); // NOLINT
GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(unsigned long long, 0); // NOLINT
GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(signed long long, 0); // NOLINT
-GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(float, 0);
-GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(double, 0);
-
-#undef GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_
-
+GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(float, 0);
+GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(double, 0);
+
+#undef GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_
+
// Simple two-arg form of std::disjunction.
template <typename P, typename Q>
using disjunction = typename ::std::conditional<P::value, P, Q>::type;
-} // namespace internal
-
-// When an unexpected function call is encountered, Google Mock will
-// let it return a default value if the user has specified one for its
-// return type, or if the return type has a built-in default value;
-// otherwise Google Mock won't know what value to return and will have
-// to abort the process.
-//
-// The DefaultValue<T> class allows a user to specify the
-// default value for a type T that is both copyable and publicly
-// destructible (i.e. anything that can be used as a function return
-// type). The usage is:
-//
-// // Sets the default value for type T to be foo.
-// DefaultValue<T>::Set(foo);
-template <typename T>
-class DefaultValue {
- public:
- // Sets the default value for type T; requires T to be
- // copy-constructable and have a public destructor.
- static void Set(T x) {
- delete producer_;
- producer_ = new FixedValueProducer(x);
- }
-
- // Provides a factory function to be called to generate the default value.
- // This method can be used even if T is only move-constructible, but it is not
- // limited to that case.
- typedef T (*FactoryFunction)();
- static void SetFactory(FactoryFunction factory) {
- delete producer_;
- producer_ = new FactoryValueProducer(factory);
- }
-
- // Unsets the default value for type T.
- static void Clear() {
- delete producer_;
+} // namespace internal
+
+// When an unexpected function call is encountered, Google Mock will
+// let it return a default value if the user has specified one for its
+// return type, or if the return type has a built-in default value;
+// otherwise Google Mock won't know what value to return and will have
+// to abort the process.
+//
+// The DefaultValue<T> class allows a user to specify the
+// default value for a type T that is both copyable and publicly
+// destructible (i.e. anything that can be used as a function return
+// type). The usage is:
+//
+// // Sets the default value for type T to be foo.
+// DefaultValue<T>::Set(foo);
+template <typename T>
+class DefaultValue {
+ public:
+ // Sets the default value for type T; requires T to be
+ // copy-constructable and have a public destructor.
+ static void Set(T x) {
+ delete producer_;
+ producer_ = new FixedValueProducer(x);
+ }
+
+ // Provides a factory function to be called to generate the default value.
+ // This method can be used even if T is only move-constructible, but it is not
+ // limited to that case.
+ typedef T (*FactoryFunction)();
+ static void SetFactory(FactoryFunction factory) {
+ delete producer_;
+ producer_ = new FactoryValueProducer(factory);
+ }
+
+ // Unsets the default value for type T.
+ static void Clear() {
+ delete producer_;
producer_ = nullptr;
- }
-
+ }
+
// Returns true if and only if the user has set the default value for type T.
static bool IsSet() { return producer_ != nullptr; }
-
- // Returns true if T has a default return value set by the user or there
- // exists a built-in default value.
- static bool Exists() {
- return IsSet() || internal::BuiltInDefaultValue<T>::Exists();
- }
-
- // Returns the default value for type T if the user has set one;
- // otherwise returns the built-in default value. Requires that Exists()
- // is true, which ensures that the return value is well-defined.
- static T Get() {
+
+ // Returns true if T has a default return value set by the user or there
+ // exists a built-in default value.
+ static bool Exists() {
+ return IsSet() || internal::BuiltInDefaultValue<T>::Exists();
+ }
+
+ // Returns the default value for type T if the user has set one;
+ // otherwise returns the built-in default value. Requires that Exists()
+ // is true, which ensures that the return value is well-defined.
+ static T Get() {
return producer_ == nullptr ? internal::BuiltInDefaultValue<T>::Get()
: producer_->Produce();
- }
-
- private:
- class ValueProducer {
- public:
- virtual ~ValueProducer() {}
- virtual T Produce() = 0;
- };
-
- class FixedValueProducer : public ValueProducer {
- public:
- explicit FixedValueProducer(T value) : value_(value) {}
+ }
+
+ private:
+ class ValueProducer {
+ public:
+ virtual ~ValueProducer() {}
+ virtual T Produce() = 0;
+ };
+
+ class FixedValueProducer : public ValueProducer {
+ public:
+ explicit FixedValueProducer(T value) : value_(value) {}
T Produce() override { return value_; }
-
- private:
- const T value_;
- GTEST_DISALLOW_COPY_AND_ASSIGN_(FixedValueProducer);
- };
-
- class FactoryValueProducer : public ValueProducer {
- public:
- explicit FactoryValueProducer(FactoryFunction factory)
- : factory_(factory) {}
+
+ private:
+ const T value_;
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(FixedValueProducer);
+ };
+
+ class FactoryValueProducer : public ValueProducer {
+ public:
+ explicit FactoryValueProducer(FactoryFunction factory)
+ : factory_(factory) {}
T Produce() override { return factory_(); }
-
- private:
- const FactoryFunction factory_;
- GTEST_DISALLOW_COPY_AND_ASSIGN_(FactoryValueProducer);
- };
-
- static ValueProducer* producer_;
-};
-
-// This partial specialization allows a user to set default values for
-// reference types.
-template <typename T>
-class DefaultValue<T&> {
- public:
- // Sets the default value for type T&.
- static void Set(T& x) { // NOLINT
- address_ = &x;
- }
-
- // Unsets the default value for type T&.
+
+ private:
+ const FactoryFunction factory_;
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(FactoryValueProducer);
+ };
+
+ static ValueProducer* producer_;
+};
+
+// This partial specialization allows a user to set default values for
+// reference types.
+template <typename T>
+class DefaultValue<T&> {
+ public:
+ // Sets the default value for type T&.
+ static void Set(T& x) { // NOLINT
+ address_ = &x;
+ }
+
+ // Unsets the default value for type T&.
static void Clear() { address_ = nullptr; }
-
+
// Returns true if and only if the user has set the default value for type T&.
static bool IsSet() { return address_ != nullptr; }
-
- // Returns true if T has a default return value set by the user or there
- // exists a built-in default value.
- static bool Exists() {
- return IsSet() || internal::BuiltInDefaultValue<T&>::Exists();
- }
-
- // Returns the default value for type T& if the user has set one;
- // otherwise returns the built-in default value if there is one;
- // otherwise aborts the process.
- static T& Get() {
+
+ // Returns true if T has a default return value set by the user or there
+ // exists a built-in default value.
+ static bool Exists() {
+ return IsSet() || internal::BuiltInDefaultValue<T&>::Exists();
+ }
+
+ // Returns the default value for type T& if the user has set one;
+ // otherwise returns the built-in default value if there is one;
+ // otherwise aborts the process.
+ static T& Get() {
return address_ == nullptr ? internal::BuiltInDefaultValue<T&>::Get()
: *address_;
- }
-
- private:
- static T* address_;
-};
-
-// This specialization allows DefaultValue<void>::Get() to
-// compile.
-template <>
-class DefaultValue<void> {
- public:
- static bool Exists() { return true; }
- static void Get() {}
-};
-
-// Points to the user-set default value for type T.
-template <typename T>
+ }
+
+ private:
+ static T* address_;
+};
+
+// This specialization allows DefaultValue<void>::Get() to
+// compile.
+template <>
+class DefaultValue<void> {
+ public:
+ static bool Exists() { return true; }
+ static void Get() {}
+};
+
+// Points to the user-set default value for type T.
+template <typename T>
typename DefaultValue<T>::ValueProducer* DefaultValue<T>::producer_ = nullptr;
-
-// Points to the user-set default value for type T&.
-template <typename T>
+
+// Points to the user-set default value for type T&.
+template <typename T>
T* DefaultValue<T&>::address_ = nullptr;
-
-// Implement this interface to define an action for function type F.
-template <typename F>
-class ActionInterface {
- public:
- typedef typename internal::Function<F>::Result Result;
- typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
-
- ActionInterface() {}
- virtual ~ActionInterface() {}
-
- // Performs the action. This method is not const, as in general an
- // action can have side effects and be stateful. For example, a
- // get-the-next-element-from-the-collection action will need to
- // remember the current element.
- virtual Result Perform(const ArgumentTuple& args) = 0;
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ActionInterface);
-};
-
-// An Action<F> is a copyable and IMMUTABLE (except by assignment)
-// object that represents an action to be taken when a mock function
-// of type F is called. The implementation of Action<T> is just a
+
+// Implement this interface to define an action for function type F.
+template <typename F>
+class ActionInterface {
+ public:
+ typedef typename internal::Function<F>::Result Result;
+ typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
+
+ ActionInterface() {}
+ virtual ~ActionInterface() {}
+
+ // Performs the action. This method is not const, as in general an
+ // action can have side effects and be stateful. For example, a
+ // get-the-next-element-from-the-collection action will need to
+ // remember the current element.
+ virtual Result Perform(const ArgumentTuple& args) = 0;
+
+ private:
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ActionInterface);
+};
+
+// An Action<F> is a copyable and IMMUTABLE (except by assignment)
+// object that represents an action to be taken when a mock function
+// of type F is called. The implementation of Action<T> is just a
// std::shared_ptr to const ActionInterface<T>. Don't inherit from Action!
-// You can view an object implementing ActionInterface<F> as a
-// concrete action (including its current state), and an Action<F>
-// object as a handle to it.
-template <typename F>
-class Action {
+// You can view an object implementing ActionInterface<F> as a
+// concrete action (including its current state), and an Action<F>
+// object as a handle to it.
+template <typename F>
+class Action {
// Adapter class to allow constructing Action from a legacy ActionInterface.
// New code should create Actions from functors instead.
struct ActionAdapter {
@@ -452,14 +452,14 @@ class Action {
template <typename G>
using IsCompatibleFunctor = std::is_constructible<std::function<F>, G>;
- public:
- typedef typename internal::Function<F>::Result Result;
- typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
-
- // Constructs a null Action. Needed for storing Action objects in
- // STL containers.
+ public:
+ typedef typename internal::Function<F>::Result Result;
+ typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
+
+ // Constructs a null Action. Needed for storing Action objects in
+ // STL containers.
Action() {}
-
+
// Construct an Action from a specified callable.
// This cannot take std::function directly, because then Action would not be
// directly constructible from lambda (it would require two conversions).
@@ -471,37 +471,37 @@ class Action {
Action(G&& fun) { // NOLINT
Init(::std::forward<G>(fun), IsCompatibleFunctor<G>());
}
-
+
// Constructs an Action from its implementation.
explicit Action(ActionInterface<F>* impl)
: fun_(ActionAdapter{::std::shared_ptr<ActionInterface<F>>(impl)}) {}
-
- // This constructor allows us to turn an Action<Func> object into an
- // Action<F>, as long as F's arguments can be implicitly converted
+
+ // This constructor allows us to turn an Action<Func> object into an
+ // Action<F>, as long as F's arguments can be implicitly converted
// to Func's and Func's return type can be implicitly converted to F's.
- template <typename Func>
+ template <typename Func>
explicit Action(const Action<Func>& action) : fun_(action.fun_) {}
-
+
// Returns true if and only if this is the DoDefault() action.
bool IsDoDefault() const { return fun_ == nullptr; }
-
- // Performs the action. Note that this method is const even though
- // the corresponding method in ActionInterface is not. The reason
- // is that a const Action<F> means that it cannot be re-bound to
- // another concrete action, not that the concrete action it binds to
- // cannot change state. (Think of the difference between a const
- // pointer and a pointer to const.)
+
+ // Performs the action. Note that this method is const even though
+ // the corresponding method in ActionInterface is not. The reason
+ // is that a const Action<F> means that it cannot be re-bound to
+ // another concrete action, not that the concrete action it binds to
+ // cannot change state. (Think of the difference between a const
+ // pointer and a pointer to const.)
Result Perform(ArgumentTuple args) const {
if (IsDoDefault()) {
internal::IllegalDoDefault(__FILE__, __LINE__);
}
return internal::Apply(fun_, ::std::move(args));
- }
-
- private:
+ }
+
+ private:
template <typename G>
friend class Action;
-
+
template <typename G>
void Init(G&& g, ::std::true_type) {
fun_ = ::std::forward<G>(g);
@@ -524,308 +524,308 @@ class Action {
// fun_ is an empty function if and only if this is the DoDefault() action.
::std::function<F> fun_;
-};
-
-// The PolymorphicAction class template makes it easy to implement a
-// polymorphic action (i.e. an action that can be used in mock
-// functions of than one type, e.g. Return()).
-//
-// To define a polymorphic action, a user first provides a COPYABLE
-// implementation class that has a Perform() method template:
-//
-// class FooAction {
-// public:
-// template <typename Result, typename ArgumentTuple>
-// Result Perform(const ArgumentTuple& args) const {
-// // Processes the arguments and returns a result, using
+};
+
+// The PolymorphicAction class template makes it easy to implement a
+// polymorphic action (i.e. an action that can be used in mock
+// functions of than one type, e.g. Return()).
+//
+// To define a polymorphic action, a user first provides a COPYABLE
+// implementation class that has a Perform() method template:
+//
+// class FooAction {
+// public:
+// template <typename Result, typename ArgumentTuple>
+// Result Perform(const ArgumentTuple& args) const {
+// // Processes the arguments and returns a result, using
// // std::get<N>(args) to get the N-th (0-based) argument in the tuple.
-// }
-// ...
-// };
-//
-// Then the user creates the polymorphic action using
-// MakePolymorphicAction(object) where object has type FooAction. See
-// the definition of Return(void) and SetArgumentPointee<N>(value) for
-// complete examples.
-template <typename Impl>
-class PolymorphicAction {
- public:
- explicit PolymorphicAction(const Impl& impl) : impl_(impl) {}
-
- template <typename F>
- operator Action<F>() const {
- return Action<F>(new MonomorphicImpl<F>(impl_));
- }
-
- private:
- template <typename F>
- class MonomorphicImpl : public ActionInterface<F> {
- public:
- typedef typename internal::Function<F>::Result Result;
- typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
-
- explicit MonomorphicImpl(const Impl& impl) : impl_(impl) {}
-
+// }
+// ...
+// };
+//
+// Then the user creates the polymorphic action using
+// MakePolymorphicAction(object) where object has type FooAction. See
+// the definition of Return(void) and SetArgumentPointee<N>(value) for
+// complete examples.
+template <typename Impl>
+class PolymorphicAction {
+ public:
+ explicit PolymorphicAction(const Impl& impl) : impl_(impl) {}
+
+ template <typename F>
+ operator Action<F>() const {
+ return Action<F>(new MonomorphicImpl<F>(impl_));
+ }
+
+ private:
+ template <typename F>
+ class MonomorphicImpl : public ActionInterface<F> {
+ public:
+ typedef typename internal::Function<F>::Result Result;
+ typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
+
+ explicit MonomorphicImpl(const Impl& impl) : impl_(impl) {}
+
Result Perform(const ArgumentTuple& args) override {
- return impl_.template Perform<Result>(args);
- }
-
- private:
- Impl impl_;
- };
-
- Impl impl_;
-};
-
-// Creates an Action from its implementation and returns it. The
-// created Action object owns the implementation.
-template <typename F>
-Action<F> MakeAction(ActionInterface<F>* impl) {
- return Action<F>(impl);
-}
-
-// Creates a polymorphic action from its implementation. This is
-// easier to use than the PolymorphicAction<Impl> constructor as it
-// doesn't require you to explicitly write the template argument, e.g.
-//
-// MakePolymorphicAction(foo);
-// vs
-// PolymorphicAction<TypeOfFoo>(foo);
-template <typename Impl>
-inline PolymorphicAction<Impl> MakePolymorphicAction(const Impl& impl) {
- return PolymorphicAction<Impl>(impl);
-}
-
-namespace internal {
-
-// Helper struct to specialize ReturnAction to execute a move instead of a copy
-// on return. Useful for move-only types, but could be used on any type.
-template <typename T>
-struct ByMoveWrapper {
+ return impl_.template Perform<Result>(args);
+ }
+
+ private:
+ Impl impl_;
+ };
+
+ Impl impl_;
+};
+
+// Creates an Action from its implementation and returns it. The
+// created Action object owns the implementation.
+template <typename F>
+Action<F> MakeAction(ActionInterface<F>* impl) {
+ return Action<F>(impl);
+}
+
+// Creates a polymorphic action from its implementation. This is
+// easier to use than the PolymorphicAction<Impl> constructor as it
+// doesn't require you to explicitly write the template argument, e.g.
+//
+// MakePolymorphicAction(foo);
+// vs
+// PolymorphicAction<TypeOfFoo>(foo);
+template <typename Impl>
+inline PolymorphicAction<Impl> MakePolymorphicAction(const Impl& impl) {
+ return PolymorphicAction<Impl>(impl);
+}
+
+namespace internal {
+
+// Helper struct to specialize ReturnAction to execute a move instead of a copy
+// on return. Useful for move-only types, but could be used on any type.
+template <typename T>
+struct ByMoveWrapper {
explicit ByMoveWrapper(T value) : payload(std::move(value)) {}
- T payload;
-};
-
-// Implements the polymorphic Return(x) action, which can be used in
-// any function that returns the type of x, regardless of the argument
-// types.
-//
-// Note: The value passed into Return must be converted into
-// Function<F>::Result when this action is cast to Action<F> rather than
-// when that action is performed. This is important in scenarios like
-//
-// MOCK_METHOD1(Method, T(U));
-// ...
-// {
-// Foo foo;
-// X x(&foo);
-// EXPECT_CALL(mock, Method(_)).WillOnce(Return(x));
-// }
-//
-// In the example above the variable x holds reference to foo which leaves
-// scope and gets destroyed. If copying X just copies a reference to foo,
-// that copy will be left with a hanging reference. If conversion to T
-// makes a copy of foo, the above code is safe. To support that scenario, we
-// need to make sure that the type conversion happens inside the EXPECT_CALL
-// statement, and conversion of the result of Return to Action<T(U)> is a
-// good place for that.
-//
+ T payload;
+};
+
+// Implements the polymorphic Return(x) action, which can be used in
+// any function that returns the type of x, regardless of the argument
+// types.
+//
+// Note: The value passed into Return must be converted into
+// Function<F>::Result when this action is cast to Action<F> rather than
+// when that action is performed. This is important in scenarios like
+//
+// MOCK_METHOD1(Method, T(U));
+// ...
+// {
+// Foo foo;
+// X x(&foo);
+// EXPECT_CALL(mock, Method(_)).WillOnce(Return(x));
+// }
+//
+// In the example above the variable x holds reference to foo which leaves
+// scope and gets destroyed. If copying X just copies a reference to foo,
+// that copy will be left with a hanging reference. If conversion to T
+// makes a copy of foo, the above code is safe. To support that scenario, we
+// need to make sure that the type conversion happens inside the EXPECT_CALL
+// statement, and conversion of the result of Return to Action<T(U)> is a
+// good place for that.
+//
// The real life example of the above scenario happens when an invocation
// of gtl::Container() is passed into Return.
//
-template <typename R>
-class ReturnAction {
- public:
- // Constructs a ReturnAction object from the value to be returned.
- // 'value' is passed by value instead of by const reference in order
- // to allow Return("string literal") to compile.
+template <typename R>
+class ReturnAction {
+ public:
+ // Constructs a ReturnAction object from the value to be returned.
+ // 'value' is passed by value instead of by const reference in order
+ // to allow Return("string literal") to compile.
explicit ReturnAction(R value) : value_(new R(std::move(value))) {}
-
- // This template type conversion operator allows Return(x) to be
- // used in ANY function that returns x's type.
- template <typename F>
+
+ // This template type conversion operator allows Return(x) to be
+ // used in ANY function that returns x's type.
+ template <typename F>
operator Action<F>() const { // NOLINT
- // Assert statement belongs here because this is the best place to verify
- // conditions on F. It produces the clearest error messages
- // in most compilers.
- // Impl really belongs in this scope as a local class but can't
- // because MSVC produces duplicate symbols in different translation units
- // in this case. Until MS fixes that bug we put Impl into the class scope
- // and put the typedef both here (for use in assert statement) and
- // in the Impl class. But both definitions must be the same.
- typedef typename Function<F>::Result Result;
- GTEST_COMPILE_ASSERT_(
+ // Assert statement belongs here because this is the best place to verify
+ // conditions on F. It produces the clearest error messages
+ // in most compilers.
+ // Impl really belongs in this scope as a local class but can't
+ // because MSVC produces duplicate symbols in different translation units
+ // in this case. Until MS fixes that bug we put Impl into the class scope
+ // and put the typedef both here (for use in assert statement) and
+ // in the Impl class. But both definitions must be the same.
+ typedef typename Function<F>::Result Result;
+ GTEST_COMPILE_ASSERT_(
!std::is_reference<Result>::value,
- use_ReturnRef_instead_of_Return_to_return_a_reference);
+ use_ReturnRef_instead_of_Return_to_return_a_reference);
static_assert(!std::is_void<Result>::value,
"Can't use Return() on an action expected to return `void`.");
- return Action<F>(new Impl<R, F>(value_));
- }
-
- private:
- // Implements the Return(x) action for a particular function type F.
- template <typename R_, typename F>
- class Impl : public ActionInterface<F> {
- public:
- typedef typename Function<F>::Result Result;
- typedef typename Function<F>::ArgumentTuple ArgumentTuple;
-
- // The implicit cast is necessary when Result has more than one
- // single-argument constructor (e.g. Result is std::vector<int>) and R
- // has a type conversion operator template. In that case, value_(value)
- // won't compile as the compiler doesn't known which constructor of
- // Result to call. ImplicitCast_ forces the compiler to convert R to
- // Result without considering explicit constructors, thus resolving the
- // ambiguity. value_ is then initialized using its copy constructor.
+ return Action<F>(new Impl<R, F>(value_));
+ }
+
+ private:
+ // Implements the Return(x) action for a particular function type F.
+ template <typename R_, typename F>
+ class Impl : public ActionInterface<F> {
+ public:
+ typedef typename Function<F>::Result Result;
+ typedef typename Function<F>::ArgumentTuple ArgumentTuple;
+
+ // The implicit cast is necessary when Result has more than one
+ // single-argument constructor (e.g. Result is std::vector<int>) and R
+ // has a type conversion operator template. In that case, value_(value)
+ // won't compile as the compiler doesn't known which constructor of
+ // Result to call. ImplicitCast_ forces the compiler to convert R to
+ // Result without considering explicit constructors, thus resolving the
+ // ambiguity. value_ is then initialized using its copy constructor.
explicit Impl(const std::shared_ptr<R>& value)
- : value_before_cast_(*value),
- value_(ImplicitCast_<Result>(value_before_cast_)) {}
-
+ : value_before_cast_(*value),
+ value_(ImplicitCast_<Result>(value_before_cast_)) {}
+
Result Perform(const ArgumentTuple&) override { return value_; }
-
- private:
+
+ private:
GTEST_COMPILE_ASSERT_(!std::is_reference<Result>::value,
- Result_cannot_be_a_reference_type);
- // We save the value before casting just in case it is being cast to a
- // wrapper type.
- R value_before_cast_;
- Result value_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(Impl);
- };
-
- // Partially specialize for ByMoveWrapper. This version of ReturnAction will
- // move its contents instead.
- template <typename R_, typename F>
- class Impl<ByMoveWrapper<R_>, F> : public ActionInterface<F> {
- public:
- typedef typename Function<F>::Result Result;
- typedef typename Function<F>::ArgumentTuple ArgumentTuple;
-
+ Result_cannot_be_a_reference_type);
+ // We save the value before casting just in case it is being cast to a
+ // wrapper type.
+ R value_before_cast_;
+ Result value_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(Impl);
+ };
+
+ // Partially specialize for ByMoveWrapper. This version of ReturnAction will
+ // move its contents instead.
+ template <typename R_, typename F>
+ class Impl<ByMoveWrapper<R_>, F> : public ActionInterface<F> {
+ public:
+ typedef typename Function<F>::Result Result;
+ typedef typename Function<F>::ArgumentTuple ArgumentTuple;
+
explicit Impl(const std::shared_ptr<R>& wrapper)
- : performed_(false), wrapper_(wrapper) {}
-
+ : performed_(false), wrapper_(wrapper) {}
+
Result Perform(const ArgumentTuple&) override {
- GTEST_CHECK_(!performed_)
- << "A ByMove() action should only be performed once.";
- performed_ = true;
+ GTEST_CHECK_(!performed_)
+ << "A ByMove() action should only be performed once.";
+ performed_ = true;
return std::move(wrapper_->payload);
- }
-
- private:
- bool performed_;
+ }
+
+ private:
+ bool performed_;
const std::shared_ptr<R> wrapper_;
- };
-
+ };
+
const std::shared_ptr<R> value_;
-};
-
-// Implements the ReturnNull() action.
-class ReturnNullAction {
- public:
- // Allows ReturnNull() to be used in any pointer-returning function. In C++11
- // this is enforced by returning nullptr, and in non-C++11 by asserting a
- // pointer type on compile time.
- template <typename Result, typename ArgumentTuple>
- static Result Perform(const ArgumentTuple&) {
- return nullptr;
- }
-};
-
-// Implements the Return() action.
-class ReturnVoidAction {
- public:
- // Allows Return() to be used in any void-returning function.
- template <typename Result, typename ArgumentTuple>
- static void Perform(const ArgumentTuple&) {
+};
+
+// Implements the ReturnNull() action.
+class ReturnNullAction {
+ public:
+ // Allows ReturnNull() to be used in any pointer-returning function. In C++11
+ // this is enforced by returning nullptr, and in non-C++11 by asserting a
+ // pointer type on compile time.
+ template <typename Result, typename ArgumentTuple>
+ static Result Perform(const ArgumentTuple&) {
+ return nullptr;
+ }
+};
+
+// Implements the Return() action.
+class ReturnVoidAction {
+ public:
+ // Allows Return() to be used in any void-returning function.
+ template <typename Result, typename ArgumentTuple>
+ static void Perform(const ArgumentTuple&) {
static_assert(std::is_void<Result>::value, "Result should be void.");
- }
-};
-
-// Implements the polymorphic ReturnRef(x) action, which can be used
-// in any function that returns a reference to the type of x,
-// regardless of the argument types.
-template <typename T>
-class ReturnRefAction {
- public:
- // Constructs a ReturnRefAction object from the reference to be returned.
- explicit ReturnRefAction(T& ref) : ref_(ref) {} // NOLINT
-
- // This template type conversion operator allows ReturnRef(x) to be
- // used in ANY function that returns a reference to x's type.
- template <typename F>
- operator Action<F>() const {
- typedef typename Function<F>::Result Result;
- // Asserts that the function return type is a reference. This
- // catches the user error of using ReturnRef(x) when Return(x)
- // should be used, and generates some helpful error message.
+ }
+};
+
+// Implements the polymorphic ReturnRef(x) action, which can be used
+// in any function that returns a reference to the type of x,
+// regardless of the argument types.
+template <typename T>
+class ReturnRefAction {
+ public:
+ // Constructs a ReturnRefAction object from the reference to be returned.
+ explicit ReturnRefAction(T& ref) : ref_(ref) {} // NOLINT
+
+ // This template type conversion operator allows ReturnRef(x) to be
+ // used in ANY function that returns a reference to x's type.
+ template <typename F>
+ operator Action<F>() const {
+ typedef typename Function<F>::Result Result;
+ // Asserts that the function return type is a reference. This
+ // catches the user error of using ReturnRef(x) when Return(x)
+ // should be used, and generates some helpful error message.
GTEST_COMPILE_ASSERT_(std::is_reference<Result>::value,
- use_Return_instead_of_ReturnRef_to_return_a_value);
- return Action<F>(new Impl<F>(ref_));
- }
-
- private:
- // Implements the ReturnRef(x) action for a particular function type F.
- template <typename F>
- class Impl : public ActionInterface<F> {
- public:
- typedef typename Function<F>::Result Result;
- typedef typename Function<F>::ArgumentTuple ArgumentTuple;
-
- explicit Impl(T& ref) : ref_(ref) {} // NOLINT
-
+ use_Return_instead_of_ReturnRef_to_return_a_value);
+ return Action<F>(new Impl<F>(ref_));
+ }
+
+ private:
+ // Implements the ReturnRef(x) action for a particular function type F.
+ template <typename F>
+ class Impl : public ActionInterface<F> {
+ public:
+ typedef typename Function<F>::Result Result;
+ typedef typename Function<F>::ArgumentTuple ArgumentTuple;
+
+ explicit Impl(T& ref) : ref_(ref) {} // NOLINT
+
Result Perform(const ArgumentTuple&) override { return ref_; }
-
- private:
- T& ref_;
- };
-
- T& ref_;
-};
-
-// Implements the polymorphic ReturnRefOfCopy(x) action, which can be
-// used in any function that returns a reference to the type of x,
-// regardless of the argument types.
-template <typename T>
-class ReturnRefOfCopyAction {
- public:
- // Constructs a ReturnRefOfCopyAction object from the reference to
- // be returned.
- explicit ReturnRefOfCopyAction(const T& value) : value_(value) {} // NOLINT
-
- // This template type conversion operator allows ReturnRefOfCopy(x) to be
- // used in ANY function that returns a reference to x's type.
- template <typename F>
- operator Action<F>() const {
- typedef typename Function<F>::Result Result;
- // Asserts that the function return type is a reference. This
- // catches the user error of using ReturnRefOfCopy(x) when Return(x)
- // should be used, and generates some helpful error message.
- GTEST_COMPILE_ASSERT_(
+
+ private:
+ T& ref_;
+ };
+
+ T& ref_;
+};
+
+// Implements the polymorphic ReturnRefOfCopy(x) action, which can be
+// used in any function that returns a reference to the type of x,
+// regardless of the argument types.
+template <typename T>
+class ReturnRefOfCopyAction {
+ public:
+ // Constructs a ReturnRefOfCopyAction object from the reference to
+ // be returned.
+ explicit ReturnRefOfCopyAction(const T& value) : value_(value) {} // NOLINT
+
+ // This template type conversion operator allows ReturnRefOfCopy(x) to be
+ // used in ANY function that returns a reference to x's type.
+ template <typename F>
+ operator Action<F>() const {
+ typedef typename Function<F>::Result Result;
+ // Asserts that the function return type is a reference. This
+ // catches the user error of using ReturnRefOfCopy(x) when Return(x)
+ // should be used, and generates some helpful error message.
+ GTEST_COMPILE_ASSERT_(
std::is_reference<Result>::value,
- use_Return_instead_of_ReturnRefOfCopy_to_return_a_value);
- return Action<F>(new Impl<F>(value_));
- }
-
- private:
- // Implements the ReturnRefOfCopy(x) action for a particular function type F.
- template <typename F>
- class Impl : public ActionInterface<F> {
- public:
- typedef typename Function<F>::Result Result;
- typedef typename Function<F>::ArgumentTuple ArgumentTuple;
-
- explicit Impl(const T& value) : value_(value) {} // NOLINT
-
+ use_Return_instead_of_ReturnRefOfCopy_to_return_a_value);
+ return Action<F>(new Impl<F>(value_));
+ }
+
+ private:
+ // Implements the ReturnRefOfCopy(x) action for a particular function type F.
+ template <typename F>
+ class Impl : public ActionInterface<F> {
+ public:
+ typedef typename Function<F>::Result Result;
+ typedef typename Function<F>::ArgumentTuple ArgumentTuple;
+
+ explicit Impl(const T& value) : value_(value) {} // NOLINT
+
Result Perform(const ArgumentTuple&) override { return value_; }
-
- private:
- T value_;
- };
-
- const T value_;
+
+ private:
+ T value_;
+ };
+
+ const T value_;
};
-
+
// Implements the polymorphic ReturnRoundRobin(v) action, which can be
// used in any function that returns the element_type of v.
template <typename T>
@@ -854,167 +854,167 @@ class ReturnRoundRobinAction {
size_t i = 0;
};
std::shared_ptr<State> state_ = std::make_shared<State>();
-};
-
-// Implements the polymorphic DoDefault() action.
-class DoDefaultAction {
- public:
- // This template type conversion operator allows DoDefault() to be
- // used in any function.
- template <typename F>
+};
+
+// Implements the polymorphic DoDefault() action.
+class DoDefaultAction {
+ public:
+ // This template type conversion operator allows DoDefault() to be
+ // used in any function.
+ template <typename F>
operator Action<F>() const { return Action<F>(); } // NOLINT
-};
-
-// Implements the Assign action to set a given pointer referent to a
-// particular value.
-template <typename T1, typename T2>
-class AssignAction {
- public:
- AssignAction(T1* ptr, T2 value) : ptr_(ptr), value_(value) {}
-
- template <typename Result, typename ArgumentTuple>
- void Perform(const ArgumentTuple& /* args */) const {
- *ptr_ = value_;
- }
-
- private:
- T1* const ptr_;
- const T2 value_;
-};
-
-#if !GTEST_OS_WINDOWS_MOBILE
-
-// Implements the SetErrnoAndReturn action to simulate return from
-// various system calls and libc functions.
-template <typename T>
-class SetErrnoAndReturnAction {
- public:
- SetErrnoAndReturnAction(int errno_value, T result)
- : errno_(errno_value),
- result_(result) {}
- template <typename Result, typename ArgumentTuple>
- Result Perform(const ArgumentTuple& /* args */) const {
- errno = errno_;
- return result_;
- }
-
- private:
- const int errno_;
- const T result_;
-};
-
-#endif // !GTEST_OS_WINDOWS_MOBILE
-
-// Implements the SetArgumentPointee<N>(x) action for any function
+};
+
+// Implements the Assign action to set a given pointer referent to a
+// particular value.
+template <typename T1, typename T2>
+class AssignAction {
+ public:
+ AssignAction(T1* ptr, T2 value) : ptr_(ptr), value_(value) {}
+
+ template <typename Result, typename ArgumentTuple>
+ void Perform(const ArgumentTuple& /* args */) const {
+ *ptr_ = value_;
+ }
+
+ private:
+ T1* const ptr_;
+ const T2 value_;
+};
+
+#if !GTEST_OS_WINDOWS_MOBILE
+
+// Implements the SetErrnoAndReturn action to simulate return from
+// various system calls and libc functions.
+template <typename T>
+class SetErrnoAndReturnAction {
+ public:
+ SetErrnoAndReturnAction(int errno_value, T result)
+ : errno_(errno_value),
+ result_(result) {}
+ template <typename Result, typename ArgumentTuple>
+ Result Perform(const ArgumentTuple& /* args */) const {
+ errno = errno_;
+ return result_;
+ }
+
+ private:
+ const int errno_;
+ const T result_;
+};
+
+#endif // !GTEST_OS_WINDOWS_MOBILE
+
+// Implements the SetArgumentPointee<N>(x) action for any function
// whose N-th argument (0-based) is a pointer to x's type.
template <size_t N, typename A, typename = void>
struct SetArgumentPointeeAction {
A value;
-
+
template <typename... Args>
void operator()(const Args&... args) const {
*::std::get<N>(std::tie(args...)) = value;
- }
-};
-
+ }
+};
+
// Implements the Invoke(object_ptr, &Class::Method) action.
template <class Class, typename MethodPtr>
struct InvokeMethodAction {
Class* const obj_ptr;
const MethodPtr method_ptr;
-
+
template <typename... Args>
auto operator()(Args&&... args) const
-> decltype((obj_ptr->*method_ptr)(std::forward<Args>(args)...)) {
return (obj_ptr->*method_ptr)(std::forward<Args>(args)...);
- }
-};
-
-// Implements the InvokeWithoutArgs(f) action. The template argument
-// FunctionImpl is the implementation type of f, which can be either a
-// function pointer or a functor. InvokeWithoutArgs(f) can be used as an
+ }
+};
+
+// Implements the InvokeWithoutArgs(f) action. The template argument
+// FunctionImpl is the implementation type of f, which can be either a
+// function pointer or a functor. InvokeWithoutArgs(f) can be used as an
// Action<F> as long as f's type is compatible with F.
-template <typename FunctionImpl>
+template <typename FunctionImpl>
struct InvokeWithoutArgsAction {
FunctionImpl function_impl;
-
- // Allows InvokeWithoutArgs(f) to be used as any action whose type is
- // compatible with f.
+
+ // Allows InvokeWithoutArgs(f) to be used as any action whose type is
+ // compatible with f.
template <typename... Args>
auto operator()(const Args&...) -> decltype(function_impl()) {
return function_impl();
}
-};
-
-// Implements the InvokeWithoutArgs(object_ptr, &Class::Method) action.
-template <class Class, typename MethodPtr>
+};
+
+// Implements the InvokeWithoutArgs(object_ptr, &Class::Method) action.
+template <class Class, typename MethodPtr>
struct InvokeMethodWithoutArgsAction {
Class* const obj_ptr;
const MethodPtr method_ptr;
-
+
using ReturnType =
decltype((std::declval<Class*>()->*std::declval<MethodPtr>())());
template <typename... Args>
ReturnType operator()(const Args&...) const {
return (obj_ptr->*method_ptr)();
- }
-};
-
-// Implements the IgnoreResult(action) action.
-template <typename A>
-class IgnoreResultAction {
- public:
- explicit IgnoreResultAction(const A& action) : action_(action) {}
-
- template <typename F>
- operator Action<F>() const {
- // Assert statement belongs here because this is the best place to verify
- // conditions on F. It produces the clearest error messages
- // in most compilers.
- // Impl really belongs in this scope as a local class but can't
- // because MSVC produces duplicate symbols in different translation units
- // in this case. Until MS fixes that bug we put Impl into the class scope
- // and put the typedef both here (for use in assert statement) and
- // in the Impl class. But both definitions must be the same.
- typedef typename internal::Function<F>::Result Result;
-
- // Asserts at compile time that F returns void.
+ }
+};
+
+// Implements the IgnoreResult(action) action.
+template <typename A>
+class IgnoreResultAction {
+ public:
+ explicit IgnoreResultAction(const A& action) : action_(action) {}
+
+ template <typename F>
+ operator Action<F>() const {
+ // Assert statement belongs here because this is the best place to verify
+ // conditions on F. It produces the clearest error messages
+ // in most compilers.
+ // Impl really belongs in this scope as a local class but can't
+ // because MSVC produces duplicate symbols in different translation units
+ // in this case. Until MS fixes that bug we put Impl into the class scope
+ // and put the typedef both here (for use in assert statement) and
+ // in the Impl class. But both definitions must be the same.
+ typedef typename internal::Function<F>::Result Result;
+
+ // Asserts at compile time that F returns void.
static_assert(std::is_void<Result>::value, "Result type should be void.");
-
- return Action<F>(new Impl<F>(action_));
- }
-
- private:
- template <typename F>
- class Impl : public ActionInterface<F> {
- public:
- typedef typename internal::Function<F>::Result Result;
- typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
-
- explicit Impl(const A& action) : action_(action) {}
-
+
+ return Action<F>(new Impl<F>(action_));
+ }
+
+ private:
+ template <typename F>
+ class Impl : public ActionInterface<F> {
+ public:
+ typedef typename internal::Function<F>::Result Result;
+ typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
+
+ explicit Impl(const A& action) : action_(action) {}
+
void Perform(const ArgumentTuple& args) override {
- // Performs the action and ignores its result.
- action_.Perform(args);
- }
-
- private:
- // Type OriginalFunction is the same as F except that its return
- // type is IgnoredValue.
- typedef typename internal::Function<F>::MakeResultIgnoredValue
- OriginalFunction;
-
- const Action<OriginalFunction> action_;
- };
-
- const A action_;
-};
-
+ // Performs the action and ignores its result.
+ action_.Perform(args);
+ }
+
+ private:
+ // Type OriginalFunction is the same as F except that its return
+ // type is IgnoredValue.
+ typedef typename internal::Function<F>::MakeResultIgnoredValue
+ OriginalFunction;
+
+ const Action<OriginalFunction> action_;
+ };
+
+ const A action_;
+};
+
template <typename InnerAction, size_t... I>
struct WithArgsAction {
InnerAction action;
-
+
// The inner action could be anything convertible to Action<X>.
// We use the conversion operator to detect the signature of the inner Action.
template <typename R, typename... Args>
@@ -1028,8 +1028,8 @@ struct WithArgsAction {
std::get<I>(std::forward_as_tuple(std::forward<Args>(args)...))...));
};
}
-};
-
+};
+
template <typename... Actions>
struct DoAllAction {
private:
@@ -1041,10 +1041,10 @@ struct DoAllAction {
std::vector<ActionT> Convert(IndexSequence<I...>) const {
return {ActionT(std::get<I>(actions))...};
}
-
- public:
+
+ public:
std::tuple<Actions...> actions;
-
+
template <typename R, typename... Args>
operator Action<R(Args...)>() const { // NOLINT
struct Op {
@@ -1061,9 +1061,9 @@ struct DoAllAction {
return Op{Convert<Action<void(NonFinalType<Args>...)>>(
MakeIndexSequence<sizeof...(Actions) - 1>()),
std::get<sizeof...(Actions) - 1>(actions)};
- }
-};
-
+ }
+};
+
template <typename T, typename... Params>
struct ReturnNewAction {
T* operator()() const {
@@ -1163,40 +1163,40 @@ struct ThrowAction {
};
#endif // GTEST_HAS_EXCEPTIONS
-} // namespace internal
-
-// An Unused object can be implicitly constructed from ANY value.
-// This is handy when defining actions that ignore some or all of the
-// mock function arguments. For example, given
-//
-// MOCK_METHOD3(Foo, double(const string& label, double x, double y));
-// MOCK_METHOD3(Bar, double(int index, double x, double y));
-//
-// instead of
-//
-// double DistanceToOriginWithLabel(const string& label, double x, double y) {
-// return sqrt(x*x + y*y);
-// }
-// double DistanceToOriginWithIndex(int index, double x, double y) {
-// return sqrt(x*x + y*y);
-// }
-// ...
+} // namespace internal
+
+// An Unused object can be implicitly constructed from ANY value.
+// This is handy when defining actions that ignore some or all of the
+// mock function arguments. For example, given
+//
+// MOCK_METHOD3(Foo, double(const string& label, double x, double y));
+// MOCK_METHOD3(Bar, double(int index, double x, double y));
+//
+// instead of
+//
+// double DistanceToOriginWithLabel(const string& label, double x, double y) {
+// return sqrt(x*x + y*y);
+// }
+// double DistanceToOriginWithIndex(int index, double x, double y) {
+// return sqrt(x*x + y*y);
+// }
+// ...
// EXPECT_CALL(mock, Foo("abc", _, _))
-// .WillOnce(Invoke(DistanceToOriginWithLabel));
+// .WillOnce(Invoke(DistanceToOriginWithLabel));
// EXPECT_CALL(mock, Bar(5, _, _))
-// .WillOnce(Invoke(DistanceToOriginWithIndex));
-//
-// you could write
-//
-// // We can declare any uninteresting argument as Unused.
-// double DistanceToOrigin(Unused, double x, double y) {
-// return sqrt(x*x + y*y);
-// }
-// ...
+// .WillOnce(Invoke(DistanceToOriginWithIndex));
+//
+// you could write
+//
+// // We can declare any uninteresting argument as Unused.
+// double DistanceToOrigin(Unused, double x, double y) {
+// return sqrt(x*x + y*y);
+// }
+// ...
// EXPECT_CALL(mock, Foo("abc", _, _)).WillOnce(Invoke(DistanceToOrigin));
// EXPECT_CALL(mock, Bar(5, _, _)).WillOnce(Invoke(DistanceToOrigin));
-typedef internal::IgnoredValue Unused;
-
+typedef internal::IgnoredValue Unused;
+
// Creates an action that does actions a1, a2, ..., sequentially in
// each invocation. All but the last action will have a readonly view of the
// arguments.
@@ -1205,7 +1205,7 @@ internal::DoAllAction<typename std::decay<Action>::type...> DoAll(
Action&&... action) {
return {std::forward_as_tuple(std::forward<Action>(action)...)};
}
-
+
// WithArg<k>(an_action) creates an action that passes the k-th
// (0-based) argument of the mock function to an_action and performs
// it. It adapts an action accepting one argument to one that accepts
@@ -1237,51 +1237,51 @@ WithoutArgs(InnerAction&& action) {
return {std::forward<InnerAction>(action)};
}
-// Creates an action that returns 'value'. 'value' is passed by value
-// instead of const reference - otherwise Return("string literal")
-// will trigger a compiler error about using array as initializer.
-template <typename R>
-internal::ReturnAction<R> Return(R value) {
+// Creates an action that returns 'value'. 'value' is passed by value
+// instead of const reference - otherwise Return("string literal")
+// will trigger a compiler error about using array as initializer.
+template <typename R>
+internal::ReturnAction<R> Return(R value) {
return internal::ReturnAction<R>(std::move(value));
-}
-
-// Creates an action that returns NULL.
-inline PolymorphicAction<internal::ReturnNullAction> ReturnNull() {
- return MakePolymorphicAction(internal::ReturnNullAction());
-}
-
-// Creates an action that returns from a void function.
-inline PolymorphicAction<internal::ReturnVoidAction> Return() {
- return MakePolymorphicAction(internal::ReturnVoidAction());
-}
-
-// Creates an action that returns the reference to a variable.
-template <typename R>
-inline internal::ReturnRefAction<R> ReturnRef(R& x) { // NOLINT
- return internal::ReturnRefAction<R>(x);
-}
-
+}
+
+// Creates an action that returns NULL.
+inline PolymorphicAction<internal::ReturnNullAction> ReturnNull() {
+ return MakePolymorphicAction(internal::ReturnNullAction());
+}
+
+// Creates an action that returns from a void function.
+inline PolymorphicAction<internal::ReturnVoidAction> Return() {
+ return MakePolymorphicAction(internal::ReturnVoidAction());
+}
+
+// Creates an action that returns the reference to a variable.
+template <typename R>
+inline internal::ReturnRefAction<R> ReturnRef(R& x) { // NOLINT
+ return internal::ReturnRefAction<R>(x);
+}
+
// Prevent using ReturnRef on reference to temporary.
template <typename R, R* = nullptr>
internal::ReturnRefAction<R> ReturnRef(R&&) = delete;
-// Creates an action that returns the reference to a copy of the
-// argument. The copy is created when the action is constructed and
-// lives as long as the action.
-template <typename R>
-inline internal::ReturnRefOfCopyAction<R> ReturnRefOfCopy(const R& x) {
- return internal::ReturnRefOfCopyAction<R>(x);
-}
-
-// Modifies the parent action (a Return() action) to perform a move of the
-// argument instead of a copy.
-// Return(ByMove()) actions can only be executed once and will assert this
-// invariant.
-template <typename R>
-internal::ByMoveWrapper<R> ByMove(R x) {
+// Creates an action that returns the reference to a copy of the
+// argument. The copy is created when the action is constructed and
+// lives as long as the action.
+template <typename R>
+inline internal::ReturnRefOfCopyAction<R> ReturnRefOfCopy(const R& x) {
+ return internal::ReturnRefOfCopyAction<R>(x);
+}
+
+// Modifies the parent action (a Return() action) to perform a move of the
+// argument instead of a copy.
+// Return(ByMove()) actions can only be executed once and will assert this
+// invariant.
+template <typename R>
+internal::ByMoveWrapper<R> ByMove(R x) {
return internal::ByMoveWrapper<R>(std::move(x));
-}
-
+}
+
// Creates an action that returns an element of `vals`. Calling this action will
// repeatedly return the next value from `vals` until it reaches the end and
// will restart from the beginning.
@@ -1299,44 +1299,44 @@ internal::ReturnRoundRobinAction<T> ReturnRoundRobin(
return internal::ReturnRoundRobinAction<T>(std::vector<T>(vals));
}
-// Creates an action that does the default action for the give mock function.
-inline internal::DoDefaultAction DoDefault() {
- return internal::DoDefaultAction();
-}
-
-// Creates an action that sets the variable pointed by the N-th
-// (0-based) function argument to 'value'.
-template <size_t N, typename T>
+// Creates an action that does the default action for the give mock function.
+inline internal::DoDefaultAction DoDefault() {
+ return internal::DoDefaultAction();
+}
+
+// Creates an action that sets the variable pointed by the N-th
+// (0-based) function argument to 'value'.
+template <size_t N, typename T>
internal::SetArgumentPointeeAction<N, T> SetArgPointee(T value) {
return {std::move(value)};
-}
-
-// The following version is DEPRECATED.
-template <size_t N, typename T>
+}
+
+// The following version is DEPRECATED.
+template <size_t N, typename T>
internal::SetArgumentPointeeAction<N, T> SetArgumentPointee(T value) {
return {std::move(value)};
-}
-
-// Creates an action that sets a pointer referent to a given value.
-template <typename T1, typename T2>
-PolymorphicAction<internal::AssignAction<T1, T2> > Assign(T1* ptr, T2 val) {
- return MakePolymorphicAction(internal::AssignAction<T1, T2>(ptr, val));
-}
-
-#if !GTEST_OS_WINDOWS_MOBILE
-
-// Creates an action that sets errno and returns the appropriate error.
-template <typename T>
-PolymorphicAction<internal::SetErrnoAndReturnAction<T> >
-SetErrnoAndReturn(int errval, T result) {
- return MakePolymorphicAction(
- internal::SetErrnoAndReturnAction<T>(errval, result));
-}
-
-#endif // !GTEST_OS_WINDOWS_MOBILE
-
+}
+
+// Creates an action that sets a pointer referent to a given value.
+template <typename T1, typename T2>
+PolymorphicAction<internal::AssignAction<T1, T2> > Assign(T1* ptr, T2 val) {
+ return MakePolymorphicAction(internal::AssignAction<T1, T2>(ptr, val));
+}
+
+#if !GTEST_OS_WINDOWS_MOBILE
+
+// Creates an action that sets errno and returns the appropriate error.
+template <typename T>
+PolymorphicAction<internal::SetErrnoAndReturnAction<T> >
+SetErrnoAndReturn(int errval, T result) {
+ return MakePolymorphicAction(
+ internal::SetErrnoAndReturnAction<T>(errval, result));
+}
+
+#endif // !GTEST_OS_WINDOWS_MOBILE
+
// Various overloads for Invoke().
-
+
// Legacy function.
// Actions can now be implicitly constructed from callables. No need to create
// wrapper objects.
@@ -1354,44 +1354,44 @@ internal::InvokeMethodAction<Class, MethodPtr> Invoke(Class* obj_ptr,
return {obj_ptr, method_ptr};
}
-// Creates an action that invokes 'function_impl' with no argument.
-template <typename FunctionImpl>
+// Creates an action that invokes 'function_impl' with no argument.
+template <typename FunctionImpl>
internal::InvokeWithoutArgsAction<typename std::decay<FunctionImpl>::type>
-InvokeWithoutArgs(FunctionImpl function_impl) {
+InvokeWithoutArgs(FunctionImpl function_impl) {
return {std::move(function_impl)};
-}
-
-// Creates an action that invokes the given method on the given object
-// with no argument.
-template <class Class, typename MethodPtr>
+}
+
+// Creates an action that invokes the given method on the given object
+// with no argument.
+template <class Class, typename MethodPtr>
internal::InvokeMethodWithoutArgsAction<Class, MethodPtr> InvokeWithoutArgs(
Class* obj_ptr, MethodPtr method_ptr) {
return {obj_ptr, method_ptr};
-}
-
-// Creates an action that performs an_action and throws away its
-// result. In other words, it changes the return type of an_action to
-// void. an_action MUST NOT return void, or the code won't compile.
-template <typename A>
-inline internal::IgnoreResultAction<A> IgnoreResult(const A& an_action) {
- return internal::IgnoreResultAction<A>(an_action);
-}
-
-// Creates a reference wrapper for the given L-value. If necessary,
-// you can explicitly specify the type of the reference. For example,
-// suppose 'derived' is an object of type Derived, ByRef(derived)
-// would wrap a Derived&. If you want to wrap a const Base& instead,
-// where Base is a base class of Derived, just write:
-//
-// ByRef<const Base>(derived)
+}
+
+// Creates an action that performs an_action and throws away its
+// result. In other words, it changes the return type of an_action to
+// void. an_action MUST NOT return void, or the code won't compile.
+template <typename A>
+inline internal::IgnoreResultAction<A> IgnoreResult(const A& an_action) {
+ return internal::IgnoreResultAction<A>(an_action);
+}
+
+// Creates a reference wrapper for the given L-value. If necessary,
+// you can explicitly specify the type of the reference. For example,
+// suppose 'derived' is an object of type Derived, ByRef(derived)
+// would wrap a Derived&. If you want to wrap a const Base& instead,
+// where Base is a base class of Derived, just write:
+//
+// ByRef<const Base>(derived)
//
// N.B. ByRef is redundant with std::ref, std::cref and std::reference_wrapper.
// However, it may still be used for consistency with ByMove().
-template <typename T>
+template <typename T>
inline ::std::reference_wrapper<T> ByRef(T& l_value) { // NOLINT
return ::std::reference_wrapper<T>(l_value);
-}
-
+}
+
// The ReturnNew<T>(a1, a2, ..., a_k) action returns a pointer to a new
// instance of type T, constructed on the heap with constructor arguments
// a1, a2, ..., and a_k. The caller assumes ownership of the returned value.
@@ -1678,8 +1678,8 @@ template <typename F, typename Impl>
#define ACTION_P10(name, ...) \
GMOCK_INTERNAL_ACTION(name, name##ActionP10, (__VA_ARGS__))
-} // namespace testing
-
+} // namespace testing
+
#ifdef _MSC_VER
# pragma warning(pop)
#endif
diff --git a/contrib/restricted/googletest/googlemock/include/gmock/gmock-cardinalities.h b/contrib/restricted/googletest/googlemock/include/gmock/gmock-cardinalities.h
index 2065c434cf..fc7f803a7a 100644
--- a/contrib/restricted/googletest/googlemock/include/gmock/gmock-cardinalities.h
+++ b/contrib/restricted/googletest/googlemock/include/gmock/gmock-cardinalities.h
@@ -1,157 +1,157 @@
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Google Mock - a framework for writing C++ mock classes.
-//
-// This file implements some commonly used cardinalities. More
-// cardinalities can be defined by the user implementing the
-// CardinalityInterface interface if necessary.
-
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file implements some commonly used cardinalities. More
+// cardinalities can be defined by the user implementing the
+// CardinalityInterface interface if necessary.
+
// GOOGLETEST_CM0002 DO NOT DELETE
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_CARDINALITIES_H_
#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_CARDINALITIES_H_
-
-#include <limits.h>
+
+#include <limits.h>
#include <memory>
-#include <ostream> // NOLINT
-#include "gmock/internal/gmock-port.h"
-#include "gtest/gtest.h"
-
+#include <ostream> // NOLINT
+#include "gmock/internal/gmock-port.h"
+#include "gtest/gtest.h"
+
GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
/* class A needs to have dll-interface to be used by clients of class B */)
-namespace testing {
-
-// To implement a cardinality Foo, define:
-// 1. a class FooCardinality that implements the
-// CardinalityInterface interface, and
-// 2. a factory function that creates a Cardinality object from a
-// const FooCardinality*.
-//
-// The two-level delegation design follows that of Matcher, providing
-// consistency for extension developers. It also eases ownership
-// management as Cardinality objects can now be copied like plain values.
-
-// The implementation of a cardinality.
-class CardinalityInterface {
- public:
- virtual ~CardinalityInterface() {}
-
- // Conservative estimate on the lower/upper bound of the number of
- // calls allowed.
- virtual int ConservativeLowerBound() const { return 0; }
- virtual int ConservativeUpperBound() const { return INT_MAX; }
-
+namespace testing {
+
+// To implement a cardinality Foo, define:
+// 1. a class FooCardinality that implements the
+// CardinalityInterface interface, and
+// 2. a factory function that creates a Cardinality object from a
+// const FooCardinality*.
+//
+// The two-level delegation design follows that of Matcher, providing
+// consistency for extension developers. It also eases ownership
+// management as Cardinality objects can now be copied like plain values.
+
+// The implementation of a cardinality.
+class CardinalityInterface {
+ public:
+ virtual ~CardinalityInterface() {}
+
+ // Conservative estimate on the lower/upper bound of the number of
+ // calls allowed.
+ virtual int ConservativeLowerBound() const { return 0; }
+ virtual int ConservativeUpperBound() const { return INT_MAX; }
+
// Returns true if and only if call_count calls will satisfy this
// cardinality.
- virtual bool IsSatisfiedByCallCount(int call_count) const = 0;
-
+ virtual bool IsSatisfiedByCallCount(int call_count) const = 0;
+
// Returns true if and only if call_count calls will saturate this
// cardinality.
- virtual bool IsSaturatedByCallCount(int call_count) const = 0;
-
- // Describes self to an ostream.
- virtual void DescribeTo(::std::ostream* os) const = 0;
-};
-
-// A Cardinality is a copyable and IMMUTABLE (except by assignment)
-// object that specifies how many times a mock function is expected to
+ virtual bool IsSaturatedByCallCount(int call_count) const = 0;
+
+ // Describes self to an ostream.
+ virtual void DescribeTo(::std::ostream* os) const = 0;
+};
+
+// A Cardinality is a copyable and IMMUTABLE (except by assignment)
+// object that specifies how many times a mock function is expected to
// be called. The implementation of Cardinality is just a std::shared_ptr
// to const CardinalityInterface. Don't inherit from Cardinality!
-class GTEST_API_ Cardinality {
- public:
- // Constructs a null cardinality. Needed for storing Cardinality
- // objects in STL containers.
- Cardinality() {}
-
- // Constructs a Cardinality from its implementation.
- explicit Cardinality(const CardinalityInterface* impl) : impl_(impl) {}
-
- // Conservative estimate on the lower/upper bound of the number of
- // calls allowed.
- int ConservativeLowerBound() const { return impl_->ConservativeLowerBound(); }
- int ConservativeUpperBound() const { return impl_->ConservativeUpperBound(); }
-
+class GTEST_API_ Cardinality {
+ public:
+ // Constructs a null cardinality. Needed for storing Cardinality
+ // objects in STL containers.
+ Cardinality() {}
+
+ // Constructs a Cardinality from its implementation.
+ explicit Cardinality(const CardinalityInterface* impl) : impl_(impl) {}
+
+ // Conservative estimate on the lower/upper bound of the number of
+ // calls allowed.
+ int ConservativeLowerBound() const { return impl_->ConservativeLowerBound(); }
+ int ConservativeUpperBound() const { return impl_->ConservativeUpperBound(); }
+
// Returns true if and only if call_count calls will satisfy this
// cardinality.
- bool IsSatisfiedByCallCount(int call_count) const {
- return impl_->IsSatisfiedByCallCount(call_count);
- }
-
+ bool IsSatisfiedByCallCount(int call_count) const {
+ return impl_->IsSatisfiedByCallCount(call_count);
+ }
+
// Returns true if and only if call_count calls will saturate this
// cardinality.
- bool IsSaturatedByCallCount(int call_count) const {
- return impl_->IsSaturatedByCallCount(call_count);
- }
-
+ bool IsSaturatedByCallCount(int call_count) const {
+ return impl_->IsSaturatedByCallCount(call_count);
+ }
+
// Returns true if and only if call_count calls will over-saturate this
- // cardinality, i.e. exceed the maximum number of allowed calls.
- bool IsOverSaturatedByCallCount(int call_count) const {
- return impl_->IsSaturatedByCallCount(call_count) &&
- !impl_->IsSatisfiedByCallCount(call_count);
- }
-
- // Describes self to an ostream
- void DescribeTo(::std::ostream* os) const { impl_->DescribeTo(os); }
-
- // Describes the given actual call count to an ostream.
- static void DescribeActualCallCountTo(int actual_call_count,
- ::std::ostream* os);
-
- private:
+ // cardinality, i.e. exceed the maximum number of allowed calls.
+ bool IsOverSaturatedByCallCount(int call_count) const {
+ return impl_->IsSaturatedByCallCount(call_count) &&
+ !impl_->IsSatisfiedByCallCount(call_count);
+ }
+
+ // Describes self to an ostream
+ void DescribeTo(::std::ostream* os) const { impl_->DescribeTo(os); }
+
+ // Describes the given actual call count to an ostream.
+ static void DescribeActualCallCountTo(int actual_call_count,
+ ::std::ostream* os);
+
+ private:
std::shared_ptr<const CardinalityInterface> impl_;
-};
-
-// Creates a cardinality that allows at least n calls.
-GTEST_API_ Cardinality AtLeast(int n);
-
-// Creates a cardinality that allows at most n calls.
-GTEST_API_ Cardinality AtMost(int n);
-
-// Creates a cardinality that allows any number of calls.
-GTEST_API_ Cardinality AnyNumber();
-
-// Creates a cardinality that allows between min and max calls.
-GTEST_API_ Cardinality Between(int min, int max);
-
-// Creates a cardinality that allows exactly n calls.
-GTEST_API_ Cardinality Exactly(int n);
-
-// Creates a cardinality from its implementation.
-inline Cardinality MakeCardinality(const CardinalityInterface* c) {
- return Cardinality(c);
-}
-
-} // namespace testing
-
+};
+
+// Creates a cardinality that allows at least n calls.
+GTEST_API_ Cardinality AtLeast(int n);
+
+// Creates a cardinality that allows at most n calls.
+GTEST_API_ Cardinality AtMost(int n);
+
+// Creates a cardinality that allows any number of calls.
+GTEST_API_ Cardinality AnyNumber();
+
+// Creates a cardinality that allows between min and max calls.
+GTEST_API_ Cardinality Between(int min, int max);
+
+// Creates a cardinality that allows exactly n calls.
+GTEST_API_ Cardinality Exactly(int n);
+
+// Creates a cardinality from its implementation.
+inline Cardinality MakeCardinality(const CardinalityInterface* c) {
+ return Cardinality(c);
+}
+
+} // namespace testing
+
GTEST_DISABLE_MSC_WARNINGS_POP_() // 4251
#endif // GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_CARDINALITIES_H_
diff --git a/contrib/restricted/googletest/googlemock/include/gmock/gmock-matchers.h b/contrib/restricted/googletest/googlemock/include/gmock/gmock-matchers.h
index b073798ba3..86be9c176e 100644
--- a/contrib/restricted/googletest/googlemock/include/gmock/gmock-matchers.h
+++ b/contrib/restricted/googletest/googlemock/include/gmock/gmock-matchers.h
@@ -1,35 +1,35 @@
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Google Mock - a framework for writing C++ mock classes.
-//
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+// Google Mock - a framework for writing C++ mock classes.
+//
// The MATCHER* family of macros can be used in a namespace scope to
// define custom matchers easily.
//
@@ -244,129 +244,129 @@
// https://github.com/google/googletest/blob/master/docs/gmock_cook_book.md
//
// This file also implements some commonly used argument matchers. More
-// matchers can be defined by the user implementing the
-// MatcherInterface<T> interface if necessary.
+// matchers can be defined by the user implementing the
+// MatcherInterface<T> interface if necessary.
//
// See googletest/include/gtest/gtest-matchers.h for the definition of class
// Matcher, class MatcherInterface, and others.
-
+
// GOOGLETEST_CM0002 DO NOT DELETE
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_MATCHERS_H_
#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_MATCHERS_H_
-
-#include <algorithm>
+
+#include <algorithm>
#include <cmath>
#include <initializer_list>
-#include <iterator>
-#include <limits>
+#include <iterator>
+#include <limits>
#include <memory>
-#include <ostream> // NOLINT
-#include <sstream>
-#include <string>
+#include <ostream> // NOLINT
+#include <sstream>
+#include <string>
#include <type_traits>
-#include <utility>
-#include <vector>
+#include <utility>
+#include <vector>
-#include "gmock/internal/gmock-internal-utils.h"
-#include "gmock/internal/gmock-port.h"
+#include "gmock/internal/gmock-internal-utils.h"
+#include "gmock/internal/gmock-port.h"
#include "gmock/internal/gmock-pp.h"
-#include "gtest/gtest.h"
-
+#include "gtest/gtest.h"
+
// MSVC warning C5046 is new as of VS2017 version 15.8.
#if defined(_MSC_VER) && _MSC_VER >= 1915
#define GMOCK_MAYBE_5046_ 5046
#else
#define GMOCK_MAYBE_5046_
-#endif
-
+#endif
+
GTEST_DISABLE_MSC_WARNINGS_PUSH_(
4251 GMOCK_MAYBE_5046_ /* class A needs to have dll-interface to be used by
clients of class B */
/* Symbol involving type with internal linkage not defined */)
-namespace testing {
-
-// To implement a matcher Foo for type T, define:
-// 1. a class FooMatcherImpl that implements the
-// MatcherInterface<T> interface, and
-// 2. a factory function that creates a Matcher<T> object from a
-// FooMatcherImpl*.
-//
-// The two-level delegation design makes it possible to allow a user
-// to write "v" instead of "Eq(v)" where a Matcher is expected, which
-// is impossible if we pass matchers by pointers. It also eases
-// ownership management as Matcher objects can now be copied like
-// plain values.
-
-// A match result listener that stores the explanation in a string.
-class StringMatchResultListener : public MatchResultListener {
- public:
- StringMatchResultListener() : MatchResultListener(&ss_) {}
-
- // Returns the explanation accumulated so far.
+namespace testing {
+
+// To implement a matcher Foo for type T, define:
+// 1. a class FooMatcherImpl that implements the
+// MatcherInterface<T> interface, and
+// 2. a factory function that creates a Matcher<T> object from a
+// FooMatcherImpl*.
+//
+// The two-level delegation design makes it possible to allow a user
+// to write "v" instead of "Eq(v)" where a Matcher is expected, which
+// is impossible if we pass matchers by pointers. It also eases
+// ownership management as Matcher objects can now be copied like
+// plain values.
+
+// A match result listener that stores the explanation in a string.
+class StringMatchResultListener : public MatchResultListener {
+ public:
+ StringMatchResultListener() : MatchResultListener(&ss_) {}
+
+ // Returns the explanation accumulated so far.
std::string str() const { return ss_.str(); }
-
- // Clears the explanation accumulated so far.
- void Clear() { ss_.str(""); }
-
- private:
- ::std::stringstream ss_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(StringMatchResultListener);
-};
-
-// Anything inside the 'internal' namespace IS INTERNAL IMPLEMENTATION
-// and MUST NOT BE USED IN USER CODE!!!
-namespace internal {
-
-// The MatcherCastImpl class template is a helper for implementing
-// MatcherCast(). We need this helper in order to partially
-// specialize the implementation of MatcherCast() (C++ allows
-// class/struct templates to be partially specialized, but not
-// function templates.).
-
-// This general version is used when MatcherCast()'s argument is a
-// polymorphic matcher (i.e. something that can be converted to a
-// Matcher but is not one yet; for example, Eq(value)) or a value (for
-// example, "hello").
-template <typename T, typename M>
-class MatcherCastImpl {
- public:
- static Matcher<T> Cast(const M& polymorphic_matcher_or_value) {
+
+ // Clears the explanation accumulated so far.
+ void Clear() { ss_.str(""); }
+
+ private:
+ ::std::stringstream ss_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(StringMatchResultListener);
+};
+
+// Anything inside the 'internal' namespace IS INTERNAL IMPLEMENTATION
+// and MUST NOT BE USED IN USER CODE!!!
+namespace internal {
+
+// The MatcherCastImpl class template is a helper for implementing
+// MatcherCast(). We need this helper in order to partially
+// specialize the implementation of MatcherCast() (C++ allows
+// class/struct templates to be partially specialized, but not
+// function templates.).
+
+// This general version is used when MatcherCast()'s argument is a
+// polymorphic matcher (i.e. something that can be converted to a
+// Matcher but is not one yet; for example, Eq(value)) or a value (for
+// example, "hello").
+template <typename T, typename M>
+class MatcherCastImpl {
+ public:
+ static Matcher<T> Cast(const M& polymorphic_matcher_or_value) {
// M can be a polymorphic matcher, in which case we want to use
- // its conversion operator to create Matcher<T>. Or it can be a value
- // that should be passed to the Matcher<T>'s constructor.
- //
- // We can't call Matcher<T>(polymorphic_matcher_or_value) when M is a
- // polymorphic matcher because it'll be ambiguous if T has an implicit
- // constructor from M (this usually happens when T has an implicit
- // constructor from any type).
- //
+ // its conversion operator to create Matcher<T>. Or it can be a value
+ // that should be passed to the Matcher<T>'s constructor.
+ //
+ // We can't call Matcher<T>(polymorphic_matcher_or_value) when M is a
+ // polymorphic matcher because it'll be ambiguous if T has an implicit
+ // constructor from M (this usually happens when T has an implicit
+ // constructor from any type).
+ //
// It won't work to unconditionally implicit_cast
- // polymorphic_matcher_or_value to Matcher<T> because it won't trigger
- // a user-defined conversion from M to T if one exists (assuming M is
- // a value).
+ // polymorphic_matcher_or_value to Matcher<T> because it won't trigger
+ // a user-defined conversion from M to T if one exists (assuming M is
+ // a value).
return CastImpl(polymorphic_matcher_or_value,
std::is_convertible<M, Matcher<T>>{},
std::is_convertible<M, T>{});
- }
-
- private:
+ }
+
+ private:
template <bool Ignore>
- static Matcher<T> CastImpl(const M& polymorphic_matcher_or_value,
+ static Matcher<T> CastImpl(const M& polymorphic_matcher_or_value,
std::true_type /* convertible_to_matcher */,
std::integral_constant<bool, Ignore>) {
- // M is implicitly convertible to Matcher<T>, which means that either
+ // M is implicitly convertible to Matcher<T>, which means that either
// M is a polymorphic matcher or Matcher<T> has an implicit constructor
- // from M. In both cases using the implicit conversion will produce a
- // matcher.
- //
- // Even if T has an implicit constructor from M, it won't be called because
- // creating Matcher<T> would require a chain of two user-defined conversions
- // (first to create T from M and then to create Matcher<T> from T).
- return polymorphic_matcher_or_value;
- }
+ // from M. In both cases using the implicit conversion will produce a
+ // matcher.
+ //
+ // Even if T has an implicit constructor from M, it won't be called because
+ // creating Matcher<T> would require a chain of two user-defined conversions
+ // (first to create T from M and then to create Matcher<T> from T).
+ return polymorphic_matcher_or_value;
+ }
// M can't be implicitly converted to Matcher<T>, so M isn't a polymorphic
// matcher. It's a value of a type implicitly convertible to T. Use direct
@@ -390,25 +390,25 @@ class MatcherCastImpl {
static Matcher<T> CastImpl(const M& value,
std::false_type /* convertible_to_matcher */,
std::false_type /* convertible_to_T */);
-};
-
-// This more specialized version is used when MatcherCast()'s argument
-// is already a Matcher. This only compiles when type T can be
-// statically converted to type U.
-template <typename T, typename U>
-class MatcherCastImpl<T, Matcher<U> > {
- public:
- static Matcher<T> Cast(const Matcher<U>& source_matcher) {
- return Matcher<T>(new Impl(source_matcher));
- }
-
- private:
- class Impl : public MatcherInterface<T> {
- public:
- explicit Impl(const Matcher<U>& source_matcher)
- : source_matcher_(source_matcher) {}
-
- // We delegate the matching logic to the source matcher.
+};
+
+// This more specialized version is used when MatcherCast()'s argument
+// is already a Matcher. This only compiles when type T can be
+// statically converted to type U.
+template <typename T, typename U>
+class MatcherCastImpl<T, Matcher<U> > {
+ public:
+ static Matcher<T> Cast(const Matcher<U>& source_matcher) {
+ return Matcher<T>(new Impl(source_matcher));
+ }
+
+ private:
+ class Impl : public MatcherInterface<T> {
+ public:
+ explicit Impl(const Matcher<U>& source_matcher)
+ : source_matcher_(source_matcher) {}
+
+ // We delegate the matching logic to the source matcher.
bool MatchAndExplain(T x, MatchResultListener* listener) const override {
using FromType = typename std::remove_cv<typename std::remove_pointer<
typename std::remove_reference<T>::type>::type>::type;
@@ -432,29 +432,29 @@ class MatcherCastImpl<T, Matcher<U> > {
return source_matcher_.MatchAndExplain(static_cast<CastType>(x),
listener);
- }
-
+ }
+
void DescribeTo(::std::ostream* os) const override {
- source_matcher_.DescribeTo(os);
- }
-
+ source_matcher_.DescribeTo(os);
+ }
+
void DescribeNegationTo(::std::ostream* os) const override {
- source_matcher_.DescribeNegationTo(os);
- }
-
- private:
- const Matcher<U> source_matcher_;
- };
-};
-
-// This even more specialized version is used for efficiently casting
-// a matcher to its own type.
-template <typename T>
-class MatcherCastImpl<T, Matcher<T> > {
- public:
- static Matcher<T> Cast(const Matcher<T>& matcher) { return matcher; }
-};
-
+ source_matcher_.DescribeNegationTo(os);
+ }
+
+ private:
+ const Matcher<U> source_matcher_;
+ };
+};
+
+// This even more specialized version is used for efficiently casting
+// a matcher to its own type.
+template <typename T>
+class MatcherCastImpl<T, Matcher<T> > {
+ public:
+ static Matcher<T> Cast(const Matcher<T>& matcher) { return matcher; }
+};
+
// Template specialization for parameterless Matcher.
template <typename Derived>
class MatcherBaseImpl {
@@ -499,24 +499,24 @@ class MatcherBaseImpl<Derived<Ts...>> {
const std::tuple<Ts...> params_;
};
-} // namespace internal
-
-// In order to be safe and clear, casting between different matcher
-// types is done explicitly via MatcherCast<T>(m), which takes a
-// matcher m and returns a Matcher<T>. It compiles only when T can be
-// statically converted to the argument type of m.
-template <typename T, typename M>
-inline Matcher<T> MatcherCast(const M& matcher) {
- return internal::MatcherCastImpl<T, M>::Cast(matcher);
-}
-
+} // namespace internal
+
+// In order to be safe and clear, casting between different matcher
+// types is done explicitly via MatcherCast<T>(m), which takes a
+// matcher m and returns a Matcher<T>. It compiles only when T can be
+// statically converted to the argument type of m.
+template <typename T, typename M>
+inline Matcher<T> MatcherCast(const M& matcher) {
+ return internal::MatcherCastImpl<T, M>::Cast(matcher);
+}
+
// This overload handles polymorphic matchers and values only since
// monomorphic matchers are handled by the next one.
-template <typename T, typename M>
+template <typename T, typename M>
inline Matcher<T> SafeMatcherCast(const M& polymorphic_matcher_or_value) {
return MatcherCast<T>(polymorphic_matcher_or_value);
-}
-
+}
+
// This overload handles monomorphic matchers.
//
// In general, if type T can be implicitly converted to type U, we can
@@ -549,198 +549,198 @@ inline Matcher<T> SafeMatcherCast(const Matcher<U>& matcher) {
return MatcherCast<T>(matcher);
}
-// A<T>() returns a matcher that matches any value of type T.
-template <typename T>
-Matcher<T> A();
-
-// Anything inside the 'internal' namespace IS INTERNAL IMPLEMENTATION
-// and MUST NOT BE USED IN USER CODE!!!
-namespace internal {
-
-// If the explanation is not empty, prints it to the ostream.
+// A<T>() returns a matcher that matches any value of type T.
+template <typename T>
+Matcher<T> A();
+
+// Anything inside the 'internal' namespace IS INTERNAL IMPLEMENTATION
+// and MUST NOT BE USED IN USER CODE!!!
+namespace internal {
+
+// If the explanation is not empty, prints it to the ostream.
inline void PrintIfNotEmpty(const std::string& explanation,
- ::std::ostream* os) {
+ ::std::ostream* os) {
if (explanation != "" && os != nullptr) {
- *os << ", " << explanation;
- }
-}
-
-// Returns true if the given type name is easy to read by a human.
-// This is used to decide whether printing the type of a value might
-// be helpful.
+ *os << ", " << explanation;
+ }
+}
+
+// Returns true if the given type name is easy to read by a human.
+// This is used to decide whether printing the type of a value might
+// be helpful.
inline bool IsReadableTypeName(const std::string& type_name) {
- // We consider a type name readable if it's short or doesn't contain
- // a template or function type.
- return (type_name.length() <= 20 ||
+ // We consider a type name readable if it's short or doesn't contain
+ // a template or function type.
+ return (type_name.length() <= 20 ||
type_name.find_first_of("<(") == std::string::npos);
-}
-
-// Matches the value against the given matcher, prints the value and explains
-// the match result to the listener. Returns the match result.
-// 'listener' must not be NULL.
-// Value cannot be passed by const reference, because some matchers take a
-// non-const argument.
-template <typename Value, typename T>
-bool MatchPrintAndExplain(Value& value, const Matcher<T>& matcher,
- MatchResultListener* listener) {
- if (!listener->IsInterested()) {
- // If the listener is not interested, we do not need to construct the
- // inner explanation.
- return matcher.Matches(value);
- }
-
- StringMatchResultListener inner_listener;
- const bool match = matcher.MatchAndExplain(value, &inner_listener);
-
- UniversalPrint(value, listener->stream());
-#if GTEST_HAS_RTTI
+}
+
+// Matches the value against the given matcher, prints the value and explains
+// the match result to the listener. Returns the match result.
+// 'listener' must not be NULL.
+// Value cannot be passed by const reference, because some matchers take a
+// non-const argument.
+template <typename Value, typename T>
+bool MatchPrintAndExplain(Value& value, const Matcher<T>& matcher,
+ MatchResultListener* listener) {
+ if (!listener->IsInterested()) {
+ // If the listener is not interested, we do not need to construct the
+ // inner explanation.
+ return matcher.Matches(value);
+ }
+
+ StringMatchResultListener inner_listener;
+ const bool match = matcher.MatchAndExplain(value, &inner_listener);
+
+ UniversalPrint(value, listener->stream());
+#if GTEST_HAS_RTTI
const std::string& type_name = GetTypeName<Value>();
- if (IsReadableTypeName(type_name))
- *listener->stream() << " (of type " << type_name << ")";
-#endif
- PrintIfNotEmpty(inner_listener.str(), listener->stream());
-
- return match;
-}
-
-// An internal helper class for doing compile-time loop on a tuple's
-// fields.
-template <size_t N>
-class TuplePrefix {
- public:
- // TuplePrefix<N>::Matches(matcher_tuple, value_tuple) returns true
+ if (IsReadableTypeName(type_name))
+ *listener->stream() << " (of type " << type_name << ")";
+#endif
+ PrintIfNotEmpty(inner_listener.str(), listener->stream());
+
+ return match;
+}
+
+// An internal helper class for doing compile-time loop on a tuple's
+// fields.
+template <size_t N>
+class TuplePrefix {
+ public:
+ // TuplePrefix<N>::Matches(matcher_tuple, value_tuple) returns true
// if and only if the first N fields of matcher_tuple matches
// the first N fields of value_tuple, respectively.
- template <typename MatcherTuple, typename ValueTuple>
- static bool Matches(const MatcherTuple& matcher_tuple,
- const ValueTuple& value_tuple) {
+ template <typename MatcherTuple, typename ValueTuple>
+ static bool Matches(const MatcherTuple& matcher_tuple,
+ const ValueTuple& value_tuple) {
return TuplePrefix<N - 1>::Matches(matcher_tuple, value_tuple) &&
std::get<N - 1>(matcher_tuple).Matches(std::get<N - 1>(value_tuple));
- }
-
- // TuplePrefix<N>::ExplainMatchFailuresTo(matchers, values, os)
- // describes failures in matching the first N fields of matchers
- // against the first N fields of values. If there is no failure,
- // nothing will be streamed to os.
- template <typename MatcherTuple, typename ValueTuple>
- static void ExplainMatchFailuresTo(const MatcherTuple& matchers,
- const ValueTuple& values,
- ::std::ostream* os) {
- // First, describes failures in the first N - 1 fields.
- TuplePrefix<N - 1>::ExplainMatchFailuresTo(matchers, values, os);
-
- // Then describes the failure (if any) in the (N - 1)-th (0-based)
- // field.
+ }
+
+ // TuplePrefix<N>::ExplainMatchFailuresTo(matchers, values, os)
+ // describes failures in matching the first N fields of matchers
+ // against the first N fields of values. If there is no failure,
+ // nothing will be streamed to os.
+ template <typename MatcherTuple, typename ValueTuple>
+ static void ExplainMatchFailuresTo(const MatcherTuple& matchers,
+ const ValueTuple& values,
+ ::std::ostream* os) {
+ // First, describes failures in the first N - 1 fields.
+ TuplePrefix<N - 1>::ExplainMatchFailuresTo(matchers, values, os);
+
+ // Then describes the failure (if any) in the (N - 1)-th (0-based)
+ // field.
typename std::tuple_element<N - 1, MatcherTuple>::type matcher =
std::get<N - 1>(matchers);
typedef typename std::tuple_element<N - 1, ValueTuple>::type Value;
const Value& value = std::get<N - 1>(values);
- StringMatchResultListener listener;
- if (!matcher.MatchAndExplain(value, &listener)) {
- *os << " Expected arg #" << N - 1 << ": ";
+ StringMatchResultListener listener;
+ if (!matcher.MatchAndExplain(value, &listener)) {
+ *os << " Expected arg #" << N - 1 << ": ";
std::get<N - 1>(matchers).DescribeTo(os);
- *os << "\n Actual: ";
- // We remove the reference in type Value to prevent the
- // universal printer from printing the address of value, which
- // isn't interesting to the user most of the time. The
- // matcher's MatchAndExplain() method handles the case when
- // the address is interesting.
- internal::UniversalPrint(value, os);
- PrintIfNotEmpty(listener.str(), os);
- *os << "\n";
- }
- }
-};
-
-// The base case.
-template <>
-class TuplePrefix<0> {
- public:
- template <typename MatcherTuple, typename ValueTuple>
- static bool Matches(const MatcherTuple& /* matcher_tuple */,
- const ValueTuple& /* value_tuple */) {
- return true;
- }
-
- template <typename MatcherTuple, typename ValueTuple>
- static void ExplainMatchFailuresTo(const MatcherTuple& /* matchers */,
- const ValueTuple& /* values */,
- ::std::ostream* /* os */) {}
-};
-
+ *os << "\n Actual: ";
+ // We remove the reference in type Value to prevent the
+ // universal printer from printing the address of value, which
+ // isn't interesting to the user most of the time. The
+ // matcher's MatchAndExplain() method handles the case when
+ // the address is interesting.
+ internal::UniversalPrint(value, os);
+ PrintIfNotEmpty(listener.str(), os);
+ *os << "\n";
+ }
+ }
+};
+
+// The base case.
+template <>
+class TuplePrefix<0> {
+ public:
+ template <typename MatcherTuple, typename ValueTuple>
+ static bool Matches(const MatcherTuple& /* matcher_tuple */,
+ const ValueTuple& /* value_tuple */) {
+ return true;
+ }
+
+ template <typename MatcherTuple, typename ValueTuple>
+ static void ExplainMatchFailuresTo(const MatcherTuple& /* matchers */,
+ const ValueTuple& /* values */,
+ ::std::ostream* /* os */) {}
+};
+
// TupleMatches(matcher_tuple, value_tuple) returns true if and only if
// all matchers in matcher_tuple match the corresponding fields in
-// value_tuple. It is a compiler error if matcher_tuple and
-// value_tuple have different number of fields or incompatible field
-// types.
-template <typename MatcherTuple, typename ValueTuple>
-bool TupleMatches(const MatcherTuple& matcher_tuple,
- const ValueTuple& value_tuple) {
- // Makes sure that matcher_tuple and value_tuple have the same
- // number of fields.
+// value_tuple. It is a compiler error if matcher_tuple and
+// value_tuple have different number of fields or incompatible field
+// types.
+template <typename MatcherTuple, typename ValueTuple>
+bool TupleMatches(const MatcherTuple& matcher_tuple,
+ const ValueTuple& value_tuple) {
+ // Makes sure that matcher_tuple and value_tuple have the same
+ // number of fields.
GTEST_COMPILE_ASSERT_(std::tuple_size<MatcherTuple>::value ==
std::tuple_size<ValueTuple>::value,
- matcher_and_value_have_different_numbers_of_fields);
+ matcher_and_value_have_different_numbers_of_fields);
return TuplePrefix<std::tuple_size<ValueTuple>::value>::Matches(matcher_tuple,
value_tuple);
-}
-
-// Describes failures in matching matchers against values. If there
-// is no failure, nothing will be streamed to os.
-template <typename MatcherTuple, typename ValueTuple>
-void ExplainMatchFailureTupleTo(const MatcherTuple& matchers,
- const ValueTuple& values,
- ::std::ostream* os) {
+}
+
+// Describes failures in matching matchers against values. If there
+// is no failure, nothing will be streamed to os.
+template <typename MatcherTuple, typename ValueTuple>
+void ExplainMatchFailureTupleTo(const MatcherTuple& matchers,
+ const ValueTuple& values,
+ ::std::ostream* os) {
TuplePrefix<std::tuple_size<MatcherTuple>::value>::ExplainMatchFailuresTo(
- matchers, values, os);
-}
-
-// TransformTupleValues and its helper.
-//
-// TransformTupleValuesHelper hides the internal machinery that
-// TransformTupleValues uses to implement a tuple traversal.
-template <typename Tuple, typename Func, typename OutIter>
-class TransformTupleValuesHelper {
- private:
+ matchers, values, os);
+}
+
+// TransformTupleValues and its helper.
+//
+// TransformTupleValuesHelper hides the internal machinery that
+// TransformTupleValues uses to implement a tuple traversal.
+template <typename Tuple, typename Func, typename OutIter>
+class TransformTupleValuesHelper {
+ private:
typedef ::std::tuple_size<Tuple> TupleSize;
-
- public:
- // For each member of tuple 't', taken in order, evaluates '*out++ = f(t)'.
- // Returns the final value of 'out' in case the caller needs it.
- static OutIter Run(Func f, const Tuple& t, OutIter out) {
- return IterateOverTuple<Tuple, TupleSize::value>()(f, t, out);
- }
-
- private:
- template <typename Tup, size_t kRemainingSize>
- struct IterateOverTuple {
- OutIter operator() (Func f, const Tup& t, OutIter out) const {
+
+ public:
+ // For each member of tuple 't', taken in order, evaluates '*out++ = f(t)'.
+ // Returns the final value of 'out' in case the caller needs it.
+ static OutIter Run(Func f, const Tuple& t, OutIter out) {
+ return IterateOverTuple<Tuple, TupleSize::value>()(f, t, out);
+ }
+
+ private:
+ template <typename Tup, size_t kRemainingSize>
+ struct IterateOverTuple {
+ OutIter operator() (Func f, const Tup& t, OutIter out) const {
*out++ = f(::std::get<TupleSize::value - kRemainingSize>(t));
- return IterateOverTuple<Tup, kRemainingSize - 1>()(f, t, out);
- }
- };
- template <typename Tup>
- struct IterateOverTuple<Tup, 0> {
- OutIter operator() (Func /* f */, const Tup& /* t */, OutIter out) const {
- return out;
- }
- };
-};
-
-// Successively invokes 'f(element)' on each element of the tuple 't',
-// appending each result to the 'out' iterator. Returns the final value
-// of 'out'.
-template <typename Tuple, typename Func, typename OutIter>
-OutIter TransformTupleValues(Func f, const Tuple& t, OutIter out) {
- return TransformTupleValuesHelper<Tuple, Func, OutIter>::Run(f, t, out);
-}
-
+ return IterateOverTuple<Tup, kRemainingSize - 1>()(f, t, out);
+ }
+ };
+ template <typename Tup>
+ struct IterateOverTuple<Tup, 0> {
+ OutIter operator() (Func /* f */, const Tup& /* t */, OutIter out) const {
+ return out;
+ }
+ };
+};
+
+// Successively invokes 'f(element)' on each element of the tuple 't',
+// appending each result to the 'out' iterator. Returns the final value
+// of 'out'.
+template <typename Tuple, typename Func, typename OutIter>
+OutIter TransformTupleValues(Func f, const Tuple& t, OutIter out) {
+ return TransformTupleValuesHelper<Tuple, Func, OutIter>::Run(f, t, out);
+}
+
// Implements _, a matcher that matches any value of any
// type. This is a polymorphic matcher, so we need a template type
// conversion operator to make it appearing as a Matcher<T> for any
// type T.
class AnythingMatcher {
- public:
+ public:
using is_gtest_matcher = void;
template <typename T>
@@ -750,158 +750,158 @@ class AnythingMatcher {
void DescribeTo(std::ostream* os) const { *os << "is anything"; }
void DescribeNegationTo(::std::ostream* os) const {
// This is mostly for completeness' sake, as it's not very useful
- // to write Not(A<bool>()). However we cannot completely rule out
- // such a possibility, and it doesn't hurt to be prepared.
- *os << "never matches";
- }
-};
-
-// Implements the polymorphic IsNull() matcher, which matches any raw or smart
-// pointer that is NULL.
-class IsNullMatcher {
- public:
- template <typename Pointer>
- bool MatchAndExplain(const Pointer& p,
- MatchResultListener* /* listener */) const {
- return p == nullptr;
- }
-
- void DescribeTo(::std::ostream* os) const { *os << "is NULL"; }
- void DescribeNegationTo(::std::ostream* os) const {
- *os << "isn't NULL";
- }
-};
-
-// Implements the polymorphic NotNull() matcher, which matches any raw or smart
-// pointer that is not NULL.
-class NotNullMatcher {
- public:
- template <typename Pointer>
- bool MatchAndExplain(const Pointer& p,
- MatchResultListener* /* listener */) const {
- return p != nullptr;
- }
-
- void DescribeTo(::std::ostream* os) const { *os << "isn't NULL"; }
- void DescribeNegationTo(::std::ostream* os) const {
- *os << "is NULL";
- }
-};
-
-// Ref(variable) matches any argument that is a reference to
-// 'variable'. This matcher is polymorphic as it can match any
-// super type of the type of 'variable'.
-//
-// The RefMatcher template class implements Ref(variable). It can
-// only be instantiated with a reference type. This prevents a user
-// from mistakenly using Ref(x) to match a non-reference function
-// argument. For example, the following will righteously cause a
-// compiler error:
-//
-// int n;
-// Matcher<int> m1 = Ref(n); // This won't compile.
-// Matcher<int&> m2 = Ref(n); // This will compile.
-template <typename T>
-class RefMatcher;
-
-template <typename T>
-class RefMatcher<T&> {
- // Google Mock is a generic framework and thus needs to support
- // mocking any function types, including those that take non-const
- // reference arguments. Therefore the template parameter T (and
- // Super below) can be instantiated to either a const type or a
- // non-const type.
- public:
- // RefMatcher() takes a T& instead of const T&, as we want the
- // compiler to catch using Ref(const_value) as a matcher for a
- // non-const reference.
- explicit RefMatcher(T& x) : object_(x) {} // NOLINT
-
- template <typename Super>
- operator Matcher<Super&>() const {
- // By passing object_ (type T&) to Impl(), which expects a Super&,
- // we make sure that Super is a super type of T. In particular,
- // this catches using Ref(const_value) as a matcher for a
- // non-const reference, as you cannot implicitly convert a const
- // reference to a non-const reference.
- return MakeMatcher(new Impl<Super>(object_));
- }
-
- private:
- template <typename Super>
- class Impl : public MatcherInterface<Super&> {
- public:
- explicit Impl(Super& x) : object_(x) {} // NOLINT
-
- // MatchAndExplain() takes a Super& (as opposed to const Super&)
- // in order to match the interface MatcherInterface<Super&>.
+ // to write Not(A<bool>()). However we cannot completely rule out
+ // such a possibility, and it doesn't hurt to be prepared.
+ *os << "never matches";
+ }
+};
+
+// Implements the polymorphic IsNull() matcher, which matches any raw or smart
+// pointer that is NULL.
+class IsNullMatcher {
+ public:
+ template <typename Pointer>
+ bool MatchAndExplain(const Pointer& p,
+ MatchResultListener* /* listener */) const {
+ return p == nullptr;
+ }
+
+ void DescribeTo(::std::ostream* os) const { *os << "is NULL"; }
+ void DescribeNegationTo(::std::ostream* os) const {
+ *os << "isn't NULL";
+ }
+};
+
+// Implements the polymorphic NotNull() matcher, which matches any raw or smart
+// pointer that is not NULL.
+class NotNullMatcher {
+ public:
+ template <typename Pointer>
+ bool MatchAndExplain(const Pointer& p,
+ MatchResultListener* /* listener */) const {
+ return p != nullptr;
+ }
+
+ void DescribeTo(::std::ostream* os) const { *os << "isn't NULL"; }
+ void DescribeNegationTo(::std::ostream* os) const {
+ *os << "is NULL";
+ }
+};
+
+// Ref(variable) matches any argument that is a reference to
+// 'variable'. This matcher is polymorphic as it can match any
+// super type of the type of 'variable'.
+//
+// The RefMatcher template class implements Ref(variable). It can
+// only be instantiated with a reference type. This prevents a user
+// from mistakenly using Ref(x) to match a non-reference function
+// argument. For example, the following will righteously cause a
+// compiler error:
+//
+// int n;
+// Matcher<int> m1 = Ref(n); // This won't compile.
+// Matcher<int&> m2 = Ref(n); // This will compile.
+template <typename T>
+class RefMatcher;
+
+template <typename T>
+class RefMatcher<T&> {
+ // Google Mock is a generic framework and thus needs to support
+ // mocking any function types, including those that take non-const
+ // reference arguments. Therefore the template parameter T (and
+ // Super below) can be instantiated to either a const type or a
+ // non-const type.
+ public:
+ // RefMatcher() takes a T& instead of const T&, as we want the
+ // compiler to catch using Ref(const_value) as a matcher for a
+ // non-const reference.
+ explicit RefMatcher(T& x) : object_(x) {} // NOLINT
+
+ template <typename Super>
+ operator Matcher<Super&>() const {
+ // By passing object_ (type T&) to Impl(), which expects a Super&,
+ // we make sure that Super is a super type of T. In particular,
+ // this catches using Ref(const_value) as a matcher for a
+ // non-const reference, as you cannot implicitly convert a const
+ // reference to a non-const reference.
+ return MakeMatcher(new Impl<Super>(object_));
+ }
+
+ private:
+ template <typename Super>
+ class Impl : public MatcherInterface<Super&> {
+ public:
+ explicit Impl(Super& x) : object_(x) {} // NOLINT
+
+ // MatchAndExplain() takes a Super& (as opposed to const Super&)
+ // in order to match the interface MatcherInterface<Super&>.
bool MatchAndExplain(Super& x,
MatchResultListener* listener) const override {
- *listener << "which is located @" << static_cast<const void*>(&x);
- return &x == &object_;
- }
-
+ *listener << "which is located @" << static_cast<const void*>(&x);
+ return &x == &object_;
+ }
+
void DescribeTo(::std::ostream* os) const override {
- *os << "references the variable ";
- UniversalPrinter<Super&>::Print(object_, os);
- }
-
+ *os << "references the variable ";
+ UniversalPrinter<Super&>::Print(object_, os);
+ }
+
void DescribeNegationTo(::std::ostream* os) const override {
- *os << "does not reference the variable ";
- UniversalPrinter<Super&>::Print(object_, os);
- }
-
- private:
- const Super& object_;
- };
-
- T& object_;
-};
-
-// Polymorphic helper functions for narrow and wide string matchers.
-inline bool CaseInsensitiveCStringEquals(const char* lhs, const char* rhs) {
- return String::CaseInsensitiveCStringEquals(lhs, rhs);
-}
-
-inline bool CaseInsensitiveCStringEquals(const wchar_t* lhs,
- const wchar_t* rhs) {
- return String::CaseInsensitiveWideCStringEquals(lhs, rhs);
-}
-
-// String comparison for narrow or wide strings that can have embedded NUL
-// characters.
-template <typename StringType>
-bool CaseInsensitiveStringEquals(const StringType& s1,
- const StringType& s2) {
- // Are the heads equal?
- if (!CaseInsensitiveCStringEquals(s1.c_str(), s2.c_str())) {
- return false;
- }
-
- // Skip the equal heads.
- const typename StringType::value_type nul = 0;
- const size_t i1 = s1.find(nul), i2 = s2.find(nul);
-
- // Are we at the end of either s1 or s2?
- if (i1 == StringType::npos || i2 == StringType::npos) {
- return i1 == i2;
- }
-
- // Are the tails equal?
- return CaseInsensitiveStringEquals(s1.substr(i1 + 1), s2.substr(i2 + 1));
-}
-
-// String matchers.
-
-// Implements equality-based string matchers like StrEq, StrCaseNe, and etc.
-template <typename StringType>
-class StrEqualityMatcher {
- public:
+ *os << "does not reference the variable ";
+ UniversalPrinter<Super&>::Print(object_, os);
+ }
+
+ private:
+ const Super& object_;
+ };
+
+ T& object_;
+};
+
+// Polymorphic helper functions for narrow and wide string matchers.
+inline bool CaseInsensitiveCStringEquals(const char* lhs, const char* rhs) {
+ return String::CaseInsensitiveCStringEquals(lhs, rhs);
+}
+
+inline bool CaseInsensitiveCStringEquals(const wchar_t* lhs,
+ const wchar_t* rhs) {
+ return String::CaseInsensitiveWideCStringEquals(lhs, rhs);
+}
+
+// String comparison for narrow or wide strings that can have embedded NUL
+// characters.
+template <typename StringType>
+bool CaseInsensitiveStringEquals(const StringType& s1,
+ const StringType& s2) {
+ // Are the heads equal?
+ if (!CaseInsensitiveCStringEquals(s1.c_str(), s2.c_str())) {
+ return false;
+ }
+
+ // Skip the equal heads.
+ const typename StringType::value_type nul = 0;
+ const size_t i1 = s1.find(nul), i2 = s2.find(nul);
+
+ // Are we at the end of either s1 or s2?
+ if (i1 == StringType::npos || i2 == StringType::npos) {
+ return i1 == i2;
+ }
+
+ // Are the tails equal?
+ return CaseInsensitiveStringEquals(s1.substr(i1 + 1), s2.substr(i2 + 1));
+}
+
+// String matchers.
+
+// Implements equality-based string matchers like StrEq, StrCaseNe, and etc.
+template <typename StringType>
+class StrEqualityMatcher {
+ public:
StrEqualityMatcher(StringType str, bool expect_eq, bool case_sensitive)
: string_(std::move(str)),
expect_eq_(expect_eq),
case_sensitive_(case_sensitive) {}
-
+
#if GTEST_INTERNAL_HAS_STRING_VIEW
bool MatchAndExplain(const internal::StringView& s,
MatchResultListener* listener) const {
@@ -912,64 +912,64 @@ class StrEqualityMatcher {
}
#endif // GTEST_INTERNAL_HAS_STRING_VIEW
- // Accepts pointer types, particularly:
- // const char*
- // char*
- // const wchar_t*
- // wchar_t*
- template <typename CharType>
- bool MatchAndExplain(CharType* s, MatchResultListener* listener) const {
+ // Accepts pointer types, particularly:
+ // const char*
+ // char*
+ // const wchar_t*
+ // wchar_t*
+ template <typename CharType>
+ bool MatchAndExplain(CharType* s, MatchResultListener* listener) const {
if (s == nullptr) {
- return !expect_eq_;
- }
- return MatchAndExplain(StringType(s), listener);
- }
-
- // Matches anything that can convert to StringType.
- //
- // This is a template, not just a plain function with const StringType&,
+ return !expect_eq_;
+ }
+ return MatchAndExplain(StringType(s), listener);
+ }
+
+ // Matches anything that can convert to StringType.
+ //
+ // This is a template, not just a plain function with const StringType&,
// because StringView has some interfering non-explicit constructors.
- template <typename MatcheeStringType>
- bool MatchAndExplain(const MatcheeStringType& s,
- MatchResultListener* /* listener */) const {
+ template <typename MatcheeStringType>
+ bool MatchAndExplain(const MatcheeStringType& s,
+ MatchResultListener* /* listener */) const {
const StringType s2(s);
- const bool eq = case_sensitive_ ? s2 == string_ :
- CaseInsensitiveStringEquals(s2, string_);
- return expect_eq_ == eq;
- }
-
- void DescribeTo(::std::ostream* os) const {
- DescribeToHelper(expect_eq_, os);
- }
-
- void DescribeNegationTo(::std::ostream* os) const {
- DescribeToHelper(!expect_eq_, os);
- }
-
- private:
- void DescribeToHelper(bool expect_eq, ::std::ostream* os) const {
- *os << (expect_eq ? "is " : "isn't ");
- *os << "equal to ";
- if (!case_sensitive_) {
- *os << "(ignoring case) ";
- }
- UniversalPrint(string_, os);
- }
-
- const StringType string_;
- const bool expect_eq_;
- const bool case_sensitive_;
-};
-
-// Implements the polymorphic HasSubstr(substring) matcher, which
-// can be used as a Matcher<T> as long as T can be converted to a
-// string.
-template <typename StringType>
-class HasSubstrMatcher {
- public:
- explicit HasSubstrMatcher(const StringType& substring)
- : substring_(substring) {}
-
+ const bool eq = case_sensitive_ ? s2 == string_ :
+ CaseInsensitiveStringEquals(s2, string_);
+ return expect_eq_ == eq;
+ }
+
+ void DescribeTo(::std::ostream* os) const {
+ DescribeToHelper(expect_eq_, os);
+ }
+
+ void DescribeNegationTo(::std::ostream* os) const {
+ DescribeToHelper(!expect_eq_, os);
+ }
+
+ private:
+ void DescribeToHelper(bool expect_eq, ::std::ostream* os) const {
+ *os << (expect_eq ? "is " : "isn't ");
+ *os << "equal to ";
+ if (!case_sensitive_) {
+ *os << "(ignoring case) ";
+ }
+ UniversalPrint(string_, os);
+ }
+
+ const StringType string_;
+ const bool expect_eq_;
+ const bool case_sensitive_;
+};
+
+// Implements the polymorphic HasSubstr(substring) matcher, which
+// can be used as a Matcher<T> as long as T can be converted to a
+// string.
+template <typename StringType>
+class HasSubstrMatcher {
+ public:
+ explicit HasSubstrMatcher(const StringType& substring)
+ : substring_(substring) {}
+
#if GTEST_INTERNAL_HAS_STRING_VIEW
bool MatchAndExplain(const internal::StringView& s,
MatchResultListener* listener) const {
@@ -980,50 +980,50 @@ class HasSubstrMatcher {
}
#endif // GTEST_INTERNAL_HAS_STRING_VIEW
- // Accepts pointer types, particularly:
- // const char*
- // char*
- // const wchar_t*
- // wchar_t*
- template <typename CharType>
- bool MatchAndExplain(CharType* s, MatchResultListener* listener) const {
+ // Accepts pointer types, particularly:
+ // const char*
+ // char*
+ // const wchar_t*
+ // wchar_t*
+ template <typename CharType>
+ bool MatchAndExplain(CharType* s, MatchResultListener* listener) const {
return s != nullptr && MatchAndExplain(StringType(s), listener);
- }
-
- // Matches anything that can convert to StringType.
- //
- // This is a template, not just a plain function with const StringType&,
+ }
+
+ // Matches anything that can convert to StringType.
+ //
+ // This is a template, not just a plain function with const StringType&,
// because StringView has some interfering non-explicit constructors.
- template <typename MatcheeStringType>
- bool MatchAndExplain(const MatcheeStringType& s,
- MatchResultListener* /* listener */) const {
+ template <typename MatcheeStringType>
+ bool MatchAndExplain(const MatcheeStringType& s,
+ MatchResultListener* /* listener */) const {
return StringType(s).find(substring_) != StringType::npos;
- }
-
- // Describes what this matcher matches.
- void DescribeTo(::std::ostream* os) const {
- *os << "has substring ";
- UniversalPrint(substring_, os);
- }
-
- void DescribeNegationTo(::std::ostream* os) const {
- *os << "has no substring ";
- UniversalPrint(substring_, os);
- }
-
- private:
- const StringType substring_;
-};
-
-// Implements the polymorphic StartsWith(substring) matcher, which
-// can be used as a Matcher<T> as long as T can be converted to a
-// string.
-template <typename StringType>
-class StartsWithMatcher {
- public:
- explicit StartsWithMatcher(const StringType& prefix) : prefix_(prefix) {
- }
-
+ }
+
+ // Describes what this matcher matches.
+ void DescribeTo(::std::ostream* os) const {
+ *os << "has substring ";
+ UniversalPrint(substring_, os);
+ }
+
+ void DescribeNegationTo(::std::ostream* os) const {
+ *os << "has no substring ";
+ UniversalPrint(substring_, os);
+ }
+
+ private:
+ const StringType substring_;
+};
+
+// Implements the polymorphic StartsWith(substring) matcher, which
+// can be used as a Matcher<T> as long as T can be converted to a
+// string.
+template <typename StringType>
+class StartsWithMatcher {
+ public:
+ explicit StartsWithMatcher(const StringType& prefix) : prefix_(prefix) {
+ }
+
#if GTEST_INTERNAL_HAS_STRING_VIEW
bool MatchAndExplain(const internal::StringView& s,
MatchResultListener* listener) const {
@@ -1034,50 +1034,50 @@ class StartsWithMatcher {
}
#endif // GTEST_INTERNAL_HAS_STRING_VIEW
- // Accepts pointer types, particularly:
- // const char*
- // char*
- // const wchar_t*
- // wchar_t*
- template <typename CharType>
- bool MatchAndExplain(CharType* s, MatchResultListener* listener) const {
+ // Accepts pointer types, particularly:
+ // const char*
+ // char*
+ // const wchar_t*
+ // wchar_t*
+ template <typename CharType>
+ bool MatchAndExplain(CharType* s, MatchResultListener* listener) const {
return s != nullptr && MatchAndExplain(StringType(s), listener);
- }
-
- // Matches anything that can convert to StringType.
- //
- // This is a template, not just a plain function with const StringType&,
+ }
+
+ // Matches anything that can convert to StringType.
+ //
+ // This is a template, not just a plain function with const StringType&,
// because StringView has some interfering non-explicit constructors.
- template <typename MatcheeStringType>
- bool MatchAndExplain(const MatcheeStringType& s,
- MatchResultListener* /* listener */) const {
- const StringType& s2(s);
- return s2.length() >= prefix_.length() &&
- s2.substr(0, prefix_.length()) == prefix_;
- }
-
- void DescribeTo(::std::ostream* os) const {
- *os << "starts with ";
- UniversalPrint(prefix_, os);
- }
-
- void DescribeNegationTo(::std::ostream* os) const {
- *os << "doesn't start with ";
- UniversalPrint(prefix_, os);
- }
-
- private:
- const StringType prefix_;
-};
-
-// Implements the polymorphic EndsWith(substring) matcher, which
-// can be used as a Matcher<T> as long as T can be converted to a
-// string.
-template <typename StringType>
-class EndsWithMatcher {
- public:
- explicit EndsWithMatcher(const StringType& suffix) : suffix_(suffix) {}
-
+ template <typename MatcheeStringType>
+ bool MatchAndExplain(const MatcheeStringType& s,
+ MatchResultListener* /* listener */) const {
+ const StringType& s2(s);
+ return s2.length() >= prefix_.length() &&
+ s2.substr(0, prefix_.length()) == prefix_;
+ }
+
+ void DescribeTo(::std::ostream* os) const {
+ *os << "starts with ";
+ UniversalPrint(prefix_, os);
+ }
+
+ void DescribeNegationTo(::std::ostream* os) const {
+ *os << "doesn't start with ";
+ UniversalPrint(prefix_, os);
+ }
+
+ private:
+ const StringType prefix_;
+};
+
+// Implements the polymorphic EndsWith(substring) matcher, which
+// can be used as a Matcher<T> as long as T can be converted to a
+// string.
+template <typename StringType>
+class EndsWithMatcher {
+ public:
+ explicit EndsWithMatcher(const StringType& suffix) : suffix_(suffix) {}
+
#if GTEST_INTERNAL_HAS_STRING_VIEW
bool MatchAndExplain(const internal::StringView& s,
MatchResultListener* listener) const {
@@ -1088,187 +1088,187 @@ class EndsWithMatcher {
}
#endif // GTEST_INTERNAL_HAS_STRING_VIEW
- // Accepts pointer types, particularly:
- // const char*
- // char*
- // const wchar_t*
- // wchar_t*
- template <typename CharType>
- bool MatchAndExplain(CharType* s, MatchResultListener* listener) const {
+ // Accepts pointer types, particularly:
+ // const char*
+ // char*
+ // const wchar_t*
+ // wchar_t*
+ template <typename CharType>
+ bool MatchAndExplain(CharType* s, MatchResultListener* listener) const {
return s != nullptr && MatchAndExplain(StringType(s), listener);
- }
-
- // Matches anything that can convert to StringType.
- //
- // This is a template, not just a plain function with const StringType&,
+ }
+
+ // Matches anything that can convert to StringType.
+ //
+ // This is a template, not just a plain function with const StringType&,
// because StringView has some interfering non-explicit constructors.
- template <typename MatcheeStringType>
- bool MatchAndExplain(const MatcheeStringType& s,
- MatchResultListener* /* listener */) const {
- const StringType& s2(s);
- return s2.length() >= suffix_.length() &&
- s2.substr(s2.length() - suffix_.length()) == suffix_;
- }
-
- void DescribeTo(::std::ostream* os) const {
- *os << "ends with ";
- UniversalPrint(suffix_, os);
- }
-
- void DescribeNegationTo(::std::ostream* os) const {
- *os << "doesn't end with ";
- UniversalPrint(suffix_, os);
- }
-
- private:
- const StringType suffix_;
-};
-
-// Implements a matcher that compares the two fields of a 2-tuple
-// using one of the ==, <=, <, etc, operators. The two fields being
-// compared don't have to have the same type.
-//
-// The matcher defined here is polymorphic (for example, Eq() can be
+ template <typename MatcheeStringType>
+ bool MatchAndExplain(const MatcheeStringType& s,
+ MatchResultListener* /* listener */) const {
+ const StringType& s2(s);
+ return s2.length() >= suffix_.length() &&
+ s2.substr(s2.length() - suffix_.length()) == suffix_;
+ }
+
+ void DescribeTo(::std::ostream* os) const {
+ *os << "ends with ";
+ UniversalPrint(suffix_, os);
+ }
+
+ void DescribeNegationTo(::std::ostream* os) const {
+ *os << "doesn't end with ";
+ UniversalPrint(suffix_, os);
+ }
+
+ private:
+ const StringType suffix_;
+};
+
+// Implements a matcher that compares the two fields of a 2-tuple
+// using one of the ==, <=, <, etc, operators. The two fields being
+// compared don't have to have the same type.
+//
+// The matcher defined here is polymorphic (for example, Eq() can be
// used to match a std::tuple<int, short>, a std::tuple<const long&, double>,
-// etc). Therefore we use a template type conversion operator in the
-// implementation.
-template <typename D, typename Op>
-class PairMatchBase {
- public:
- template <typename T1, typename T2>
+// etc). Therefore we use a template type conversion operator in the
+// implementation.
+template <typename D, typename Op>
+class PairMatchBase {
+ public:
+ template <typename T1, typename T2>
operator Matcher<::std::tuple<T1, T2>>() const {
return Matcher<::std::tuple<T1, T2>>(new Impl<const ::std::tuple<T1, T2>&>);
- }
- template <typename T1, typename T2>
+ }
+ template <typename T1, typename T2>
operator Matcher<const ::std::tuple<T1, T2>&>() const {
return MakeMatcher(new Impl<const ::std::tuple<T1, T2>&>);
- }
-
- private:
- static ::std::ostream& GetDesc(::std::ostream& os) { // NOLINT
- return os << D::Desc();
- }
-
- template <typename Tuple>
- class Impl : public MatcherInterface<Tuple> {
- public:
+ }
+
+ private:
+ static ::std::ostream& GetDesc(::std::ostream& os) { // NOLINT
+ return os << D::Desc();
+ }
+
+ template <typename Tuple>
+ class Impl : public MatcherInterface<Tuple> {
+ public:
bool MatchAndExplain(Tuple args,
MatchResultListener* /* listener */) const override {
return Op()(::std::get<0>(args), ::std::get<1>(args));
- }
+ }
void DescribeTo(::std::ostream* os) const override {
- *os << "are " << GetDesc;
- }
+ *os << "are " << GetDesc;
+ }
void DescribeNegationTo(::std::ostream* os) const override {
- *os << "aren't " << GetDesc;
- }
- };
-};
-
-class Eq2Matcher : public PairMatchBase<Eq2Matcher, AnyEq> {
- public:
- static const char* Desc() { return "an equal pair"; }
-};
-class Ne2Matcher : public PairMatchBase<Ne2Matcher, AnyNe> {
- public:
- static const char* Desc() { return "an unequal pair"; }
-};
-class Lt2Matcher : public PairMatchBase<Lt2Matcher, AnyLt> {
- public:
- static const char* Desc() { return "a pair where the first < the second"; }
-};
-class Gt2Matcher : public PairMatchBase<Gt2Matcher, AnyGt> {
- public:
- static const char* Desc() { return "a pair where the first > the second"; }
-};
-class Le2Matcher : public PairMatchBase<Le2Matcher, AnyLe> {
- public:
- static const char* Desc() { return "a pair where the first <= the second"; }
-};
-class Ge2Matcher : public PairMatchBase<Ge2Matcher, AnyGe> {
- public:
- static const char* Desc() { return "a pair where the first >= the second"; }
-};
-
-// Implements the Not(...) matcher for a particular argument type T.
-// We do not nest it inside the NotMatcher class template, as that
-// will prevent different instantiations of NotMatcher from sharing
-// the same NotMatcherImpl<T> class.
-template <typename T>
+ *os << "aren't " << GetDesc;
+ }
+ };
+};
+
+class Eq2Matcher : public PairMatchBase<Eq2Matcher, AnyEq> {
+ public:
+ static const char* Desc() { return "an equal pair"; }
+};
+class Ne2Matcher : public PairMatchBase<Ne2Matcher, AnyNe> {
+ public:
+ static const char* Desc() { return "an unequal pair"; }
+};
+class Lt2Matcher : public PairMatchBase<Lt2Matcher, AnyLt> {
+ public:
+ static const char* Desc() { return "a pair where the first < the second"; }
+};
+class Gt2Matcher : public PairMatchBase<Gt2Matcher, AnyGt> {
+ public:
+ static const char* Desc() { return "a pair where the first > the second"; }
+};
+class Le2Matcher : public PairMatchBase<Le2Matcher, AnyLe> {
+ public:
+ static const char* Desc() { return "a pair where the first <= the second"; }
+};
+class Ge2Matcher : public PairMatchBase<Ge2Matcher, AnyGe> {
+ public:
+ static const char* Desc() { return "a pair where the first >= the second"; }
+};
+
+// Implements the Not(...) matcher for a particular argument type T.
+// We do not nest it inside the NotMatcher class template, as that
+// will prevent different instantiations of NotMatcher from sharing
+// the same NotMatcherImpl<T> class.
+template <typename T>
class NotMatcherImpl : public MatcherInterface<const T&> {
- public:
- explicit NotMatcherImpl(const Matcher<T>& matcher)
- : matcher_(matcher) {}
-
+ public:
+ explicit NotMatcherImpl(const Matcher<T>& matcher)
+ : matcher_(matcher) {}
+
bool MatchAndExplain(const T& x,
MatchResultListener* listener) const override {
- return !matcher_.MatchAndExplain(x, listener);
- }
-
+ return !matcher_.MatchAndExplain(x, listener);
+ }
+
void DescribeTo(::std::ostream* os) const override {
- matcher_.DescribeNegationTo(os);
- }
-
+ matcher_.DescribeNegationTo(os);
+ }
+
void DescribeNegationTo(::std::ostream* os) const override {
- matcher_.DescribeTo(os);
- }
-
- private:
- const Matcher<T> matcher_;
-};
-
-// Implements the Not(m) matcher, which matches a value that doesn't
-// match matcher m.
-template <typename InnerMatcher>
-class NotMatcher {
- public:
- explicit NotMatcher(InnerMatcher matcher) : matcher_(matcher) {}
-
- // This template type conversion operator allows Not(m) to be used
- // to match any type m can match.
- template <typename T>
- operator Matcher<T>() const {
- return Matcher<T>(new NotMatcherImpl<T>(SafeMatcherCast<T>(matcher_)));
- }
-
- private:
- InnerMatcher matcher_;
-};
-
-// Implements the AllOf(m1, m2) matcher for a particular argument type
-// T. We do not nest it inside the BothOfMatcher class template, as
-// that will prevent different instantiations of BothOfMatcher from
-// sharing the same BothOfMatcherImpl<T> class.
-template <typename T>
+ matcher_.DescribeTo(os);
+ }
+
+ private:
+ const Matcher<T> matcher_;
+};
+
+// Implements the Not(m) matcher, which matches a value that doesn't
+// match matcher m.
+template <typename InnerMatcher>
+class NotMatcher {
+ public:
+ explicit NotMatcher(InnerMatcher matcher) : matcher_(matcher) {}
+
+ // This template type conversion operator allows Not(m) to be used
+ // to match any type m can match.
+ template <typename T>
+ operator Matcher<T>() const {
+ return Matcher<T>(new NotMatcherImpl<T>(SafeMatcherCast<T>(matcher_)));
+ }
+
+ private:
+ InnerMatcher matcher_;
+};
+
+// Implements the AllOf(m1, m2) matcher for a particular argument type
+// T. We do not nest it inside the BothOfMatcher class template, as
+// that will prevent different instantiations of BothOfMatcher from
+// sharing the same BothOfMatcherImpl<T> class.
+template <typename T>
class AllOfMatcherImpl : public MatcherInterface<const T&> {
- public:
+ public:
explicit AllOfMatcherImpl(std::vector<Matcher<T> > matchers)
: matchers_(std::move(matchers)) {}
-
+
void DescribeTo(::std::ostream* os) const override {
- *os << "(";
+ *os << "(";
for (size_t i = 0; i < matchers_.size(); ++i) {
if (i != 0) *os << ") and (";
matchers_[i].DescribeTo(os);
}
- *os << ")";
- }
-
+ *os << ")";
+ }
+
void DescribeNegationTo(::std::ostream* os) const override {
- *os << "(";
+ *os << "(";
for (size_t i = 0; i < matchers_.size(); ++i) {
if (i != 0) *os << ") or (";
matchers_[i].DescribeNegationTo(os);
}
- *os << ")";
- }
-
+ *os << ")";
+ }
+
bool MatchAndExplain(const T& x,
MatchResultListener* listener) const override {
- // If either matcher1_ or matcher2_ doesn't match x, we only need
- // to explain why one of them fails.
+ // If either matcher1_ or matcher2_ doesn't match x, we only need
+ // to explain why one of them fails.
std::string all_match_result;
-
+
for (size_t i = 0; i < matchers_.size(); ++i) {
StringMatchResultListener slistener;
if (matchers_[i].MatchAndExplain(x, &slistener)) {
@@ -1285,95 +1285,95 @@ class AllOfMatcherImpl : public MatcherInterface<const T&> {
*listener << slistener.str();
return false;
}
- }
-
- // Otherwise we need to explain why *both* of them match.
+ }
+
+ // Otherwise we need to explain why *both* of them match.
*listener << all_match_result;
- return true;
- }
-
- private:
+ return true;
+ }
+
+ private:
const std::vector<Matcher<T> > matchers_;
-};
-
-// VariadicMatcher is used for the variadic implementation of
-// AllOf(m_1, m_2, ...) and AnyOf(m_1, m_2, ...).
-// CombiningMatcher<T> is used to recursively combine the provided matchers
-// (of type Args...).
-template <template <typename T> class CombiningMatcher, typename... Args>
-class VariadicMatcher {
- public:
- VariadicMatcher(const Args&... matchers) // NOLINT
+};
+
+// VariadicMatcher is used for the variadic implementation of
+// AllOf(m_1, m_2, ...) and AnyOf(m_1, m_2, ...).
+// CombiningMatcher<T> is used to recursively combine the provided matchers
+// (of type Args...).
+template <template <typename T> class CombiningMatcher, typename... Args>
+class VariadicMatcher {
+ public:
+ VariadicMatcher(const Args&... matchers) // NOLINT
: matchers_(matchers...) {
static_assert(sizeof...(Args) > 0, "Must have at least one matcher.");
}
-
+
VariadicMatcher(const VariadicMatcher&) = default;
VariadicMatcher& operator=(const VariadicMatcher&) = delete;
- // This template type conversion operator allows an
- // VariadicMatcher<Matcher1, Matcher2...> object to match any type that
- // all of the provided matchers (Matcher1, Matcher2, ...) can match.
- template <typename T>
- operator Matcher<T>() const {
+ // This template type conversion operator allows an
+ // VariadicMatcher<Matcher1, Matcher2...> object to match any type that
+ // all of the provided matchers (Matcher1, Matcher2, ...) can match.
+ template <typename T>
+ operator Matcher<T>() const {
std::vector<Matcher<T> > values;
CreateVariadicMatcher<T>(&values, std::integral_constant<size_t, 0>());
return Matcher<T>(new CombiningMatcher<T>(std::move(values)));
- }
-
- private:
+ }
+
+ private:
template <typename T, size_t I>
void CreateVariadicMatcher(std::vector<Matcher<T> >* values,
std::integral_constant<size_t, I>) const {
values->push_back(SafeMatcherCast<T>(std::get<I>(matchers_)));
CreateVariadicMatcher<T>(values, std::integral_constant<size_t, I + 1>());
}
-
+
template <typename T>
void CreateVariadicMatcher(
std::vector<Matcher<T> >*,
std::integral_constant<size_t, sizeof...(Args)>) const {}
-
+
std::tuple<Args...> matchers_;
-};
-
-template <typename... Args>
+};
+
+template <typename... Args>
using AllOfMatcher = VariadicMatcher<AllOfMatcherImpl, Args...>;
-
-// Implements the AnyOf(m1, m2) matcher for a particular argument type
-// T. We do not nest it inside the AnyOfMatcher class template, as
-// that will prevent different instantiations of AnyOfMatcher from
-// sharing the same EitherOfMatcherImpl<T> class.
-template <typename T>
+
+// Implements the AnyOf(m1, m2) matcher for a particular argument type
+// T. We do not nest it inside the AnyOfMatcher class template, as
+// that will prevent different instantiations of AnyOfMatcher from
+// sharing the same EitherOfMatcherImpl<T> class.
+template <typename T>
class AnyOfMatcherImpl : public MatcherInterface<const T&> {
- public:
+ public:
explicit AnyOfMatcherImpl(std::vector<Matcher<T> > matchers)
: matchers_(std::move(matchers)) {}
-
+
void DescribeTo(::std::ostream* os) const override {
- *os << "(";
+ *os << "(";
for (size_t i = 0; i < matchers_.size(); ++i) {
if (i != 0) *os << ") or (";
matchers_[i].DescribeTo(os);
}
- *os << ")";
- }
-
+ *os << ")";
+ }
+
void DescribeNegationTo(::std::ostream* os) const override {
- *os << "(";
+ *os << "(";
for (size_t i = 0; i < matchers_.size(); ++i) {
if (i != 0) *os << ") and (";
matchers_[i].DescribeNegationTo(os);
}
- *os << ")";
- }
-
+ *os << ")";
+ }
+
bool MatchAndExplain(const T& x,
MatchResultListener* listener) const override {
std::string no_match_result;
- // If either matcher1_ or matcher2_ matches x, we just need to
- // explain why *one* of them matches.
+ // If either matcher1_ or matcher2_ matches x, we just need to
+ // explain why *one* of them matches.
for (size_t i = 0; i < matchers_.size(); ++i) {
StringMatchResultListener slistener;
if (matchers_[i].MatchAndExplain(x, &slistener)) {
@@ -1390,30 +1390,30 @@ class AnyOfMatcherImpl : public MatcherInterface<const T&> {
}
}
}
- }
-
- // Otherwise we need to explain why *both* of them fail.
+ }
+
+ // Otherwise we need to explain why *both* of them fail.
*listener << no_match_result;
- return false;
- }
-
- private:
+ return false;
+ }
+
+ private:
const std::vector<Matcher<T> > matchers_;
-};
-
-// AnyOfMatcher is used for the variadic implementation of AnyOf(m_1, m_2, ...).
-template <typename... Args>
+};
+
+// AnyOfMatcher is used for the variadic implementation of AnyOf(m_1, m_2, ...).
+template <typename... Args>
using AnyOfMatcher = VariadicMatcher<AnyOfMatcherImpl, Args...>;
-
+
// Wrapper for implementation of Any/AllOfArray().
template <template <class> class MatcherImpl, typename T>
class SomeOfArrayMatcher {
- public:
+ public:
// Constructs the matcher from a sequence of element values or
// element matchers.
template <typename Iter>
SomeOfArrayMatcher(Iter first, Iter last) : matchers_(first, last) {}
-
+
template <typename U>
operator Matcher<U>() const { // NOLINT
using RawU = typename std::decay<U>::type;
@@ -1422,127 +1422,127 @@ class SomeOfArrayMatcher {
matchers.push_back(MatcherCast<RawU>(matcher));
}
return Matcher<U>(new MatcherImpl<RawU>(std::move(matchers)));
- }
-
- private:
+ }
+
+ private:
const ::std::vector<T> matchers_;
-};
-
+};
+
template <typename T>
using AllOfArrayMatcher = SomeOfArrayMatcher<AllOfMatcherImpl, T>;
template <typename T>
using AnyOfArrayMatcher = SomeOfArrayMatcher<AnyOfMatcherImpl, T>;
-// Used for implementing Truly(pred), which turns a predicate into a
-// matcher.
-template <typename Predicate>
-class TrulyMatcher {
- public:
- explicit TrulyMatcher(Predicate pred) : predicate_(pred) {}
-
- // This method template allows Truly(pred) to be used as a matcher
- // for type T where T is the argument type of predicate 'pred'. The
- // argument is passed by reference as the predicate may be
- // interested in the address of the argument.
- template <typename T>
- bool MatchAndExplain(T& x, // NOLINT
+// Used for implementing Truly(pred), which turns a predicate into a
+// matcher.
+template <typename Predicate>
+class TrulyMatcher {
+ public:
+ explicit TrulyMatcher(Predicate pred) : predicate_(pred) {}
+
+ // This method template allows Truly(pred) to be used as a matcher
+ // for type T where T is the argument type of predicate 'pred'. The
+ // argument is passed by reference as the predicate may be
+ // interested in the address of the argument.
+ template <typename T>
+ bool MatchAndExplain(T& x, // NOLINT
MatchResultListener* listener) const {
- // Without the if-statement, MSVC sometimes warns about converting
- // a value to bool (warning 4800).
- //
- // We cannot write 'return !!predicate_(x);' as that doesn't work
- // when predicate_(x) returns a class convertible to bool but
- // having no operator!().
- if (predicate_(x))
- return true;
+ // Without the if-statement, MSVC sometimes warns about converting
+ // a value to bool (warning 4800).
+ //
+ // We cannot write 'return !!predicate_(x);' as that doesn't work
+ // when predicate_(x) returns a class convertible to bool but
+ // having no operator!().
+ if (predicate_(x))
+ return true;
*listener << "didn't satisfy the given predicate";
- return false;
- }
-
- void DescribeTo(::std::ostream* os) const {
- *os << "satisfies the given predicate";
- }
-
- void DescribeNegationTo(::std::ostream* os) const {
- *os << "doesn't satisfy the given predicate";
- }
-
- private:
- Predicate predicate_;
-};
-
-// Used for implementing Matches(matcher), which turns a matcher into
-// a predicate.
-template <typename M>
-class MatcherAsPredicate {
- public:
- explicit MatcherAsPredicate(M matcher) : matcher_(matcher) {}
-
- // This template operator() allows Matches(m) to be used as a
- // predicate on type T where m is a matcher on type T.
- //
- // The argument x is passed by reference instead of by value, as
- // some matcher may be interested in its address (e.g. as in
- // Matches(Ref(n))(x)).
- template <typename T>
- bool operator()(const T& x) const {
- // We let matcher_ commit to a particular type here instead of
- // when the MatcherAsPredicate object was constructed. This
- // allows us to write Matches(m) where m is a polymorphic matcher
- // (e.g. Eq(5)).
- //
- // If we write Matcher<T>(matcher_).Matches(x) here, it won't
- // compile when matcher_ has type Matcher<const T&>; if we write
- // Matcher<const T&>(matcher_).Matches(x) here, it won't compile
- // when matcher_ has type Matcher<T>; if we just write
- // matcher_.Matches(x), it won't compile when matcher_ is
- // polymorphic, e.g. Eq(5).
- //
- // MatcherCast<const T&>() is necessary for making the code work
- // in all of the above situations.
- return MatcherCast<const T&>(matcher_).Matches(x);
- }
-
- private:
- M matcher_;
-};
-
-// For implementing ASSERT_THAT() and EXPECT_THAT(). The template
-// argument M must be a type that can be converted to a matcher.
-template <typename M>
-class PredicateFormatterFromMatcher {
- public:
+ return false;
+ }
+
+ void DescribeTo(::std::ostream* os) const {
+ *os << "satisfies the given predicate";
+ }
+
+ void DescribeNegationTo(::std::ostream* os) const {
+ *os << "doesn't satisfy the given predicate";
+ }
+
+ private:
+ Predicate predicate_;
+};
+
+// Used for implementing Matches(matcher), which turns a matcher into
+// a predicate.
+template <typename M>
+class MatcherAsPredicate {
+ public:
+ explicit MatcherAsPredicate(M matcher) : matcher_(matcher) {}
+
+ // This template operator() allows Matches(m) to be used as a
+ // predicate on type T where m is a matcher on type T.
+ //
+ // The argument x is passed by reference instead of by value, as
+ // some matcher may be interested in its address (e.g. as in
+ // Matches(Ref(n))(x)).
+ template <typename T>
+ bool operator()(const T& x) const {
+ // We let matcher_ commit to a particular type here instead of
+ // when the MatcherAsPredicate object was constructed. This
+ // allows us to write Matches(m) where m is a polymorphic matcher
+ // (e.g. Eq(5)).
+ //
+ // If we write Matcher<T>(matcher_).Matches(x) here, it won't
+ // compile when matcher_ has type Matcher<const T&>; if we write
+ // Matcher<const T&>(matcher_).Matches(x) here, it won't compile
+ // when matcher_ has type Matcher<T>; if we just write
+ // matcher_.Matches(x), it won't compile when matcher_ is
+ // polymorphic, e.g. Eq(5).
+ //
+ // MatcherCast<const T&>() is necessary for making the code work
+ // in all of the above situations.
+ return MatcherCast<const T&>(matcher_).Matches(x);
+ }
+
+ private:
+ M matcher_;
+};
+
+// For implementing ASSERT_THAT() and EXPECT_THAT(). The template
+// argument M must be a type that can be converted to a matcher.
+template <typename M>
+class PredicateFormatterFromMatcher {
+ public:
explicit PredicateFormatterFromMatcher(M m) : matcher_(std::move(m)) {}
-
- // This template () operator allows a PredicateFormatterFromMatcher
- // object to act as a predicate-formatter suitable for using with
- // Google Test's EXPECT_PRED_FORMAT1() macro.
- template <typename T>
- AssertionResult operator()(const char* value_text, const T& x) const {
- // We convert matcher_ to a Matcher<const T&> *now* instead of
- // when the PredicateFormatterFromMatcher object was constructed,
- // as matcher_ may be polymorphic (e.g. NotNull()) and we won't
- // know which type to instantiate it to until we actually see the
- // type of x here.
- //
- // We write SafeMatcherCast<const T&>(matcher_) instead of
- // Matcher<const T&>(matcher_), as the latter won't compile when
- // matcher_ has type Matcher<T> (e.g. An<int>()).
- // We don't write MatcherCast<const T&> either, as that allows
- // potentially unsafe downcasting of the matcher argument.
- const Matcher<const T&> matcher = SafeMatcherCast<const T&>(matcher_);
+
+ // This template () operator allows a PredicateFormatterFromMatcher
+ // object to act as a predicate-formatter suitable for using with
+ // Google Test's EXPECT_PRED_FORMAT1() macro.
+ template <typename T>
+ AssertionResult operator()(const char* value_text, const T& x) const {
+ // We convert matcher_ to a Matcher<const T&> *now* instead of
+ // when the PredicateFormatterFromMatcher object was constructed,
+ // as matcher_ may be polymorphic (e.g. NotNull()) and we won't
+ // know which type to instantiate it to until we actually see the
+ // type of x here.
+ //
+ // We write SafeMatcherCast<const T&>(matcher_) instead of
+ // Matcher<const T&>(matcher_), as the latter won't compile when
+ // matcher_ has type Matcher<T> (e.g. An<int>()).
+ // We don't write MatcherCast<const T&> either, as that allows
+ // potentially unsafe downcasting of the matcher argument.
+ const Matcher<const T&> matcher = SafeMatcherCast<const T&>(matcher_);
// The expected path here is that the matcher should match (i.e. that most
// tests pass) so optimize for this case.
if (matcher.Matches(x)) {
- return AssertionSuccess();
+ return AssertionSuccess();
}
-
- ::std::stringstream ss;
- ss << "Value of: " << value_text << "\n"
- << "Expected: ";
- matcher.DescribeTo(&ss);
+
+ ::std::stringstream ss;
+ ss << "Value of: " << value_text << "\n"
+ << "Expected: ";
+ matcher.DescribeTo(&ss);
// Rerun the matcher to "PrintAndExplain" the failure.
StringMatchResultListener listener;
@@ -1550,24 +1550,24 @@ class PredicateFormatterFromMatcher {
ss << "\n The matcher failed on the initial attempt; but passed when "
"rerun to generate the explanation.";
}
- ss << "\n Actual: " << listener.str();
- return AssertionFailure() << ss.str();
- }
-
- private:
- const M matcher_;
-};
-
-// A helper function for converting a matcher to a predicate-formatter
-// without the user needing to explicitly write the type. This is
-// used for implementing ASSERT_THAT() and EXPECT_THAT().
-// Implementation detail: 'matcher' is received by-value to force decaying.
-template <typename M>
-inline PredicateFormatterFromMatcher<M>
-MakePredicateFormatterFromMatcher(M matcher) {
+ ss << "\n Actual: " << listener.str();
+ return AssertionFailure() << ss.str();
+ }
+
+ private:
+ const M matcher_;
+};
+
+// A helper function for converting a matcher to a predicate-formatter
+// without the user needing to explicitly write the type. This is
+// used for implementing ASSERT_THAT() and EXPECT_THAT().
+// Implementation detail: 'matcher' is received by-value to force decaying.
+template <typename M>
+inline PredicateFormatterFromMatcher<M>
+MakePredicateFormatterFromMatcher(M matcher) {
return PredicateFormatterFromMatcher<M>(std::move(matcher));
-}
-
+}
+
// Implements the polymorphic IsNan() matcher, which matches any floating type
// value that is Nan.
class IsNanMatcher {
@@ -1584,156 +1584,156 @@ class IsNanMatcher {
}
};
-// Implements the polymorphic floating point equality matcher, which matches
-// two float values using ULP-based approximation or, optionally, a
-// user-specified epsilon. The template is meant to be instantiated with
-// FloatType being either float or double.
-template <typename FloatType>
-class FloatingEqMatcher {
- public:
- // Constructor for FloatingEqMatcher.
- // The matcher's input will be compared with expected. The matcher treats two
- // NANs as equal if nan_eq_nan is true. Otherwise, under IEEE standards,
- // equality comparisons between NANs will always return false. We specify a
- // negative max_abs_error_ term to indicate that ULP-based approximation will
- // be used for comparison.
- FloatingEqMatcher(FloatType expected, bool nan_eq_nan) :
- expected_(expected), nan_eq_nan_(nan_eq_nan), max_abs_error_(-1) {
- }
-
- // Constructor that supports a user-specified max_abs_error that will be used
- // for comparison instead of ULP-based approximation. The max absolute
- // should be non-negative.
- FloatingEqMatcher(FloatType expected, bool nan_eq_nan,
- FloatType max_abs_error)
- : expected_(expected),
- nan_eq_nan_(nan_eq_nan),
- max_abs_error_(max_abs_error) {
- GTEST_CHECK_(max_abs_error >= 0)
- << ", where max_abs_error is" << max_abs_error;
- }
-
- // Implements floating point equality matcher as a Matcher<T>.
- template <typename T>
- class Impl : public MatcherInterface<T> {
- public:
- Impl(FloatType expected, bool nan_eq_nan, FloatType max_abs_error)
- : expected_(expected),
- nan_eq_nan_(nan_eq_nan),
- max_abs_error_(max_abs_error) {}
-
+// Implements the polymorphic floating point equality matcher, which matches
+// two float values using ULP-based approximation or, optionally, a
+// user-specified epsilon. The template is meant to be instantiated with
+// FloatType being either float or double.
+template <typename FloatType>
+class FloatingEqMatcher {
+ public:
+ // Constructor for FloatingEqMatcher.
+ // The matcher's input will be compared with expected. The matcher treats two
+ // NANs as equal if nan_eq_nan is true. Otherwise, under IEEE standards,
+ // equality comparisons between NANs will always return false. We specify a
+ // negative max_abs_error_ term to indicate that ULP-based approximation will
+ // be used for comparison.
+ FloatingEqMatcher(FloatType expected, bool nan_eq_nan) :
+ expected_(expected), nan_eq_nan_(nan_eq_nan), max_abs_error_(-1) {
+ }
+
+ // Constructor that supports a user-specified max_abs_error that will be used
+ // for comparison instead of ULP-based approximation. The max absolute
+ // should be non-negative.
+ FloatingEqMatcher(FloatType expected, bool nan_eq_nan,
+ FloatType max_abs_error)
+ : expected_(expected),
+ nan_eq_nan_(nan_eq_nan),
+ max_abs_error_(max_abs_error) {
+ GTEST_CHECK_(max_abs_error >= 0)
+ << ", where max_abs_error is" << max_abs_error;
+ }
+
+ // Implements floating point equality matcher as a Matcher<T>.
+ template <typename T>
+ class Impl : public MatcherInterface<T> {
+ public:
+ Impl(FloatType expected, bool nan_eq_nan, FloatType max_abs_error)
+ : expected_(expected),
+ nan_eq_nan_(nan_eq_nan),
+ max_abs_error_(max_abs_error) {}
+
bool MatchAndExplain(T value,
MatchResultListener* listener) const override {
- const FloatingPoint<FloatType> actual(value), expected(expected_);
-
- // Compares NaNs first, if nan_eq_nan_ is true.
- if (actual.is_nan() || expected.is_nan()) {
- if (actual.is_nan() && expected.is_nan()) {
- return nan_eq_nan_;
- }
- // One is nan; the other is not nan.
- return false;
- }
- if (HasMaxAbsError()) {
- // We perform an equality check so that inf will match inf, regardless
- // of error bounds. If the result of value - expected_ would result in
- // overflow or if either value is inf, the default result is infinity,
- // which should only match if max_abs_error_ is also infinity.
- if (value == expected_) {
- return true;
- }
-
- const FloatType diff = value - expected_;
+ const FloatingPoint<FloatType> actual(value), expected(expected_);
+
+ // Compares NaNs first, if nan_eq_nan_ is true.
+ if (actual.is_nan() || expected.is_nan()) {
+ if (actual.is_nan() && expected.is_nan()) {
+ return nan_eq_nan_;
+ }
+ // One is nan; the other is not nan.
+ return false;
+ }
+ if (HasMaxAbsError()) {
+ // We perform an equality check so that inf will match inf, regardless
+ // of error bounds. If the result of value - expected_ would result in
+ // overflow or if either value is inf, the default result is infinity,
+ // which should only match if max_abs_error_ is also infinity.
+ if (value == expected_) {
+ return true;
+ }
+
+ const FloatType diff = value - expected_;
if (::std::fabs(diff) <= max_abs_error_) {
- return true;
- }
-
- if (listener->IsInterested()) {
- *listener << "which is " << diff << " from " << expected_;
- }
- return false;
- } else {
- return actual.AlmostEquals(expected);
- }
- }
-
+ return true;
+ }
+
+ if (listener->IsInterested()) {
+ *listener << "which is " << diff << " from " << expected_;
+ }
+ return false;
+ } else {
+ return actual.AlmostEquals(expected);
+ }
+ }
+
void DescribeTo(::std::ostream* os) const override {
- // os->precision() returns the previously set precision, which we
- // store to restore the ostream to its original configuration
- // after outputting.
- const ::std::streamsize old_precision = os->precision(
- ::std::numeric_limits<FloatType>::digits10 + 2);
- if (FloatingPoint<FloatType>(expected_).is_nan()) {
- if (nan_eq_nan_) {
- *os << "is NaN";
- } else {
- *os << "never matches";
- }
- } else {
- *os << "is approximately " << expected_;
- if (HasMaxAbsError()) {
- *os << " (absolute error <= " << max_abs_error_ << ")";
- }
- }
- os->precision(old_precision);
- }
-
+ // os->precision() returns the previously set precision, which we
+ // store to restore the ostream to its original configuration
+ // after outputting.
+ const ::std::streamsize old_precision = os->precision(
+ ::std::numeric_limits<FloatType>::digits10 + 2);
+ if (FloatingPoint<FloatType>(expected_).is_nan()) {
+ if (nan_eq_nan_) {
+ *os << "is NaN";
+ } else {
+ *os << "never matches";
+ }
+ } else {
+ *os << "is approximately " << expected_;
+ if (HasMaxAbsError()) {
+ *os << " (absolute error <= " << max_abs_error_ << ")";
+ }
+ }
+ os->precision(old_precision);
+ }
+
void DescribeNegationTo(::std::ostream* os) const override {
- // As before, get original precision.
- const ::std::streamsize old_precision = os->precision(
- ::std::numeric_limits<FloatType>::digits10 + 2);
- if (FloatingPoint<FloatType>(expected_).is_nan()) {
- if (nan_eq_nan_) {
- *os << "isn't NaN";
- } else {
- *os << "is anything";
- }
- } else {
- *os << "isn't approximately " << expected_;
- if (HasMaxAbsError()) {
- *os << " (absolute error > " << max_abs_error_ << ")";
- }
- }
- // Restore original precision.
- os->precision(old_precision);
- }
-
- private:
- bool HasMaxAbsError() const {
- return max_abs_error_ >= 0;
- }
-
- const FloatType expected_;
- const bool nan_eq_nan_;
- // max_abs_error will be used for value comparison when >= 0.
- const FloatType max_abs_error_;
- };
-
- // The following 3 type conversion operators allow FloatEq(expected) and
- // NanSensitiveFloatEq(expected) to be used as a Matcher<float>, a
- // Matcher<const float&>, or a Matcher<float&>, but nothing else.
- operator Matcher<FloatType>() const {
- return MakeMatcher(
- new Impl<FloatType>(expected_, nan_eq_nan_, max_abs_error_));
- }
-
- operator Matcher<const FloatType&>() const {
- return MakeMatcher(
- new Impl<const FloatType&>(expected_, nan_eq_nan_, max_abs_error_));
- }
-
- operator Matcher<FloatType&>() const {
- return MakeMatcher(
- new Impl<FloatType&>(expected_, nan_eq_nan_, max_abs_error_));
- }
-
- private:
- const FloatType expected_;
- const bool nan_eq_nan_;
- // max_abs_error will be used for value comparison when >= 0.
- const FloatType max_abs_error_;
-};
-
+ // As before, get original precision.
+ const ::std::streamsize old_precision = os->precision(
+ ::std::numeric_limits<FloatType>::digits10 + 2);
+ if (FloatingPoint<FloatType>(expected_).is_nan()) {
+ if (nan_eq_nan_) {
+ *os << "isn't NaN";
+ } else {
+ *os << "is anything";
+ }
+ } else {
+ *os << "isn't approximately " << expected_;
+ if (HasMaxAbsError()) {
+ *os << " (absolute error > " << max_abs_error_ << ")";
+ }
+ }
+ // Restore original precision.
+ os->precision(old_precision);
+ }
+
+ private:
+ bool HasMaxAbsError() const {
+ return max_abs_error_ >= 0;
+ }
+
+ const FloatType expected_;
+ const bool nan_eq_nan_;
+ // max_abs_error will be used for value comparison when >= 0.
+ const FloatType max_abs_error_;
+ };
+
+ // The following 3 type conversion operators allow FloatEq(expected) and
+ // NanSensitiveFloatEq(expected) to be used as a Matcher<float>, a
+ // Matcher<const float&>, or a Matcher<float&>, but nothing else.
+ operator Matcher<FloatType>() const {
+ return MakeMatcher(
+ new Impl<FloatType>(expected_, nan_eq_nan_, max_abs_error_));
+ }
+
+ operator Matcher<const FloatType&>() const {
+ return MakeMatcher(
+ new Impl<const FloatType&>(expected_, nan_eq_nan_, max_abs_error_));
+ }
+
+ operator Matcher<FloatType&>() const {
+ return MakeMatcher(
+ new Impl<FloatType&>(expected_, nan_eq_nan_, max_abs_error_));
+ }
+
+ private:
+ const FloatType expected_;
+ const bool nan_eq_nan_;
+ // max_abs_error will be used for value comparison when >= 0.
+ const FloatType max_abs_error_;
+};
+
// A 2-tuple ("binary") wrapper around FloatingEqMatcher:
// FloatingEq2Matcher() matches (x, y) by matching FloatingEqMatcher(x, false)
// against y, and FloatingEq2Matcher(e) matches FloatingEqMatcher(x, false, e)
@@ -1810,63 +1810,63 @@ class FloatingEq2Matcher {
bool nan_eq_nan_;
};
-// Implements the Pointee(m) matcher for matching a pointer whose
-// pointee matches matcher m. The pointer can be either raw or smart.
-template <typename InnerMatcher>
-class PointeeMatcher {
- public:
- explicit PointeeMatcher(const InnerMatcher& matcher) : matcher_(matcher) {}
-
- // This type conversion operator template allows Pointee(m) to be
- // used as a matcher for any pointer type whose pointee type is
- // compatible with the inner matcher, where type Pointer can be
- // either a raw pointer or a smart pointer.
- //
- // The reason we do this instead of relying on
- // MakePolymorphicMatcher() is that the latter is not flexible
- // enough for implementing the DescribeTo() method of Pointee().
- template <typename Pointer>
- operator Matcher<Pointer>() const {
+// Implements the Pointee(m) matcher for matching a pointer whose
+// pointee matches matcher m. The pointer can be either raw or smart.
+template <typename InnerMatcher>
+class PointeeMatcher {
+ public:
+ explicit PointeeMatcher(const InnerMatcher& matcher) : matcher_(matcher) {}
+
+ // This type conversion operator template allows Pointee(m) to be
+ // used as a matcher for any pointer type whose pointee type is
+ // compatible with the inner matcher, where type Pointer can be
+ // either a raw pointer or a smart pointer.
+ //
+ // The reason we do this instead of relying on
+ // MakePolymorphicMatcher() is that the latter is not flexible
+ // enough for implementing the DescribeTo() method of Pointee().
+ template <typename Pointer>
+ operator Matcher<Pointer>() const {
return Matcher<Pointer>(new Impl<const Pointer&>(matcher_));
- }
-
- private:
- // The monomorphic implementation that works for a particular pointer type.
- template <typename Pointer>
- class Impl : public MatcherInterface<Pointer> {
- public:
+ }
+
+ private:
+ // The monomorphic implementation that works for a particular pointer type.
+ template <typename Pointer>
+ class Impl : public MatcherInterface<Pointer> {
+ public:
using Pointee =
typename std::pointer_traits<GTEST_REMOVE_REFERENCE_AND_CONST_(
Pointer)>::element_type;
-
- explicit Impl(const InnerMatcher& matcher)
- : matcher_(MatcherCast<const Pointee&>(matcher)) {}
-
+
+ explicit Impl(const InnerMatcher& matcher)
+ : matcher_(MatcherCast<const Pointee&>(matcher)) {}
+
void DescribeTo(::std::ostream* os) const override {
- *os << "points to a value that ";
- matcher_.DescribeTo(os);
- }
-
+ *os << "points to a value that ";
+ matcher_.DescribeTo(os);
+ }
+
void DescribeNegationTo(::std::ostream* os) const override {
- *os << "does not point to a value that ";
- matcher_.DescribeTo(os);
- }
-
+ *os << "does not point to a value that ";
+ matcher_.DescribeTo(os);
+ }
+
bool MatchAndExplain(Pointer pointer,
MatchResultListener* listener) const override {
if (GetRawPointer(pointer) == nullptr) return false;
-
- *listener << "which points to ";
- return MatchPrintAndExplain(*pointer, matcher_, listener);
- }
-
- private:
- const Matcher<const Pointee&> matcher_;
- };
-
- const InnerMatcher matcher_;
-};
-
+
+ *listener << "which points to ";
+ return MatchPrintAndExplain(*pointer, matcher_, listener);
+ }
+
+ private:
+ const Matcher<const Pointee&> matcher_;
+ };
+
+ const InnerMatcher matcher_;
+};
+
// Implements the Pointer(m) matcher
// Implements the Pointer(m) matcher for matching a pointer that matches matcher
// m. The pointer can be either raw or smart, and will match `m` against the
@@ -1926,821 +1926,821 @@ class PointerMatcher {
};
#if GTEST_HAS_RTTI
-// Implements the WhenDynamicCastTo<T>(m) matcher that matches a pointer or
-// reference that matches inner_matcher when dynamic_cast<T> is applied.
-// The result of dynamic_cast<To> is forwarded to the inner matcher.
-// If To is a pointer and the cast fails, the inner matcher will receive NULL.
-// If To is a reference and the cast fails, this matcher returns false
-// immediately.
-template <typename To>
-class WhenDynamicCastToMatcherBase {
- public:
- explicit WhenDynamicCastToMatcherBase(const Matcher<To>& matcher)
- : matcher_(matcher) {}
-
- void DescribeTo(::std::ostream* os) const {
- GetCastTypeDescription(os);
- matcher_.DescribeTo(os);
- }
-
- void DescribeNegationTo(::std::ostream* os) const {
- GetCastTypeDescription(os);
- matcher_.DescribeNegationTo(os);
- }
-
- protected:
- const Matcher<To> matcher_;
-
+// Implements the WhenDynamicCastTo<T>(m) matcher that matches a pointer or
+// reference that matches inner_matcher when dynamic_cast<T> is applied.
+// The result of dynamic_cast<To> is forwarded to the inner matcher.
+// If To is a pointer and the cast fails, the inner matcher will receive NULL.
+// If To is a reference and the cast fails, this matcher returns false
+// immediately.
+template <typename To>
+class WhenDynamicCastToMatcherBase {
+ public:
+ explicit WhenDynamicCastToMatcherBase(const Matcher<To>& matcher)
+ : matcher_(matcher) {}
+
+ void DescribeTo(::std::ostream* os) const {
+ GetCastTypeDescription(os);
+ matcher_.DescribeTo(os);
+ }
+
+ void DescribeNegationTo(::std::ostream* os) const {
+ GetCastTypeDescription(os);
+ matcher_.DescribeNegationTo(os);
+ }
+
+ protected:
+ const Matcher<To> matcher_;
+
static std::string GetToName() {
- return GetTypeName<To>();
- }
-
- private:
- static void GetCastTypeDescription(::std::ostream* os) {
- *os << "when dynamic_cast to " << GetToName() << ", ";
- }
-};
-
-// Primary template.
-// To is a pointer. Cast and forward the result.
-template <typename To>
-class WhenDynamicCastToMatcher : public WhenDynamicCastToMatcherBase<To> {
- public:
- explicit WhenDynamicCastToMatcher(const Matcher<To>& matcher)
- : WhenDynamicCastToMatcherBase<To>(matcher) {}
-
- template <typename From>
- bool MatchAndExplain(From from, MatchResultListener* listener) const {
- To to = dynamic_cast<To>(from);
- return MatchPrintAndExplain(to, this->matcher_, listener);
- }
-};
-
-// Specialize for references.
-// In this case we return false if the dynamic_cast fails.
-template <typename To>
-class WhenDynamicCastToMatcher<To&> : public WhenDynamicCastToMatcherBase<To&> {
- public:
- explicit WhenDynamicCastToMatcher(const Matcher<To&>& matcher)
- : WhenDynamicCastToMatcherBase<To&>(matcher) {}
-
- template <typename From>
- bool MatchAndExplain(From& from, MatchResultListener* listener) const {
- // We don't want an std::bad_cast here, so do the cast with pointers.
- To* to = dynamic_cast<To*>(&from);
+ return GetTypeName<To>();
+ }
+
+ private:
+ static void GetCastTypeDescription(::std::ostream* os) {
+ *os << "when dynamic_cast to " << GetToName() << ", ";
+ }
+};
+
+// Primary template.
+// To is a pointer. Cast and forward the result.
+template <typename To>
+class WhenDynamicCastToMatcher : public WhenDynamicCastToMatcherBase<To> {
+ public:
+ explicit WhenDynamicCastToMatcher(const Matcher<To>& matcher)
+ : WhenDynamicCastToMatcherBase<To>(matcher) {}
+
+ template <typename From>
+ bool MatchAndExplain(From from, MatchResultListener* listener) const {
+ To to = dynamic_cast<To>(from);
+ return MatchPrintAndExplain(to, this->matcher_, listener);
+ }
+};
+
+// Specialize for references.
+// In this case we return false if the dynamic_cast fails.
+template <typename To>
+class WhenDynamicCastToMatcher<To&> : public WhenDynamicCastToMatcherBase<To&> {
+ public:
+ explicit WhenDynamicCastToMatcher(const Matcher<To&>& matcher)
+ : WhenDynamicCastToMatcherBase<To&>(matcher) {}
+
+ template <typename From>
+ bool MatchAndExplain(From& from, MatchResultListener* listener) const {
+ // We don't want an std::bad_cast here, so do the cast with pointers.
+ To* to = dynamic_cast<To*>(&from);
if (to == nullptr) {
- *listener << "which cannot be dynamic_cast to " << this->GetToName();
- return false;
- }
- return MatchPrintAndExplain(*to, this->matcher_, listener);
- }
-};
+ *listener << "which cannot be dynamic_cast to " << this->GetToName();
+ return false;
+ }
+ return MatchPrintAndExplain(*to, this->matcher_, listener);
+ }
+};
#endif // GTEST_HAS_RTTI
-
-// Implements the Field() matcher for matching a field (i.e. member
-// variable) of an object.
-template <typename Class, typename FieldType>
-class FieldMatcher {
- public:
- FieldMatcher(FieldType Class::*field,
- const Matcher<const FieldType&>& matcher)
+
+// Implements the Field() matcher for matching a field (i.e. member
+// variable) of an object.
+template <typename Class, typename FieldType>
+class FieldMatcher {
+ public:
+ FieldMatcher(FieldType Class::*field,
+ const Matcher<const FieldType&>& matcher)
: field_(field), matcher_(matcher), whose_field_("whose given field ") {}
-
+
FieldMatcher(const std::string& field_name, FieldType Class::*field,
const Matcher<const FieldType&>& matcher)
: field_(field),
matcher_(matcher),
whose_field_("whose field `" + field_name + "` ") {}
- void DescribeTo(::std::ostream* os) const {
+ void DescribeTo(::std::ostream* os) const {
*os << "is an object " << whose_field_;
- matcher_.DescribeTo(os);
- }
-
- void DescribeNegationTo(::std::ostream* os) const {
+ matcher_.DescribeTo(os);
+ }
+
+ void DescribeNegationTo(::std::ostream* os) const {
*os << "is an object " << whose_field_;
- matcher_.DescribeNegationTo(os);
- }
-
- template <typename T>
- bool MatchAndExplain(const T& value, MatchResultListener* listener) const {
+ matcher_.DescribeNegationTo(os);
+ }
+
+ template <typename T>
+ bool MatchAndExplain(const T& value, MatchResultListener* listener) const {
// FIXME: The dispatch on std::is_pointer was introduced as a workaround for
// a compiler bug, and can now be removed.
- return MatchAndExplainImpl(
+ return MatchAndExplainImpl(
typename std::is_pointer<typename std::remove_const<T>::type>::type(),
- value, listener);
- }
-
- private:
+ value, listener);
+ }
+
+ private:
bool MatchAndExplainImpl(std::false_type /* is_not_pointer */,
const Class& obj,
- MatchResultListener* listener) const {
+ MatchResultListener* listener) const {
*listener << whose_field_ << "is ";
- return MatchPrintAndExplain(obj.*field_, matcher_, listener);
- }
-
+ return MatchPrintAndExplain(obj.*field_, matcher_, listener);
+ }
+
bool MatchAndExplainImpl(std::true_type /* is_pointer */, const Class* p,
- MatchResultListener* listener) const {
+ MatchResultListener* listener) const {
if (p == nullptr) return false;
-
- *listener << "which points to an object ";
- // Since *p has a field, it must be a class/struct/union type and
- // thus cannot be a pointer. Therefore we pass false_type() as
- // the first argument.
+
+ *listener << "which points to an object ";
+ // Since *p has a field, it must be a class/struct/union type and
+ // thus cannot be a pointer. Therefore we pass false_type() as
+ // the first argument.
return MatchAndExplainImpl(std::false_type(), *p, listener);
- }
-
- const FieldType Class::*field_;
- const Matcher<const FieldType&> matcher_;
-
+ }
+
+ const FieldType Class::*field_;
+ const Matcher<const FieldType&> matcher_;
+
// Contains either "whose given field " if the name of the field is unknown
// or "whose field `name_of_field` " if the name is known.
const std::string whose_field_;
-};
-
-// Implements the Property() matcher for matching a property
-// (i.e. return value of a getter method) of an object.
+};
+
+// Implements the Property() matcher for matching a property
+// (i.e. return value of a getter method) of an object.
//
// Property is a const-qualified member function of Class returning
// PropertyType.
template <typename Class, typename PropertyType, typename Property>
-class PropertyMatcher {
- public:
+class PropertyMatcher {
+ public:
typedef const PropertyType& RefToConstProperty;
-
+
PropertyMatcher(Property property, const Matcher<RefToConstProperty>& matcher)
: property_(property),
matcher_(matcher),
whose_property_("whose given property ") {}
PropertyMatcher(const std::string& property_name, Property property,
- const Matcher<RefToConstProperty>& matcher)
+ const Matcher<RefToConstProperty>& matcher)
: property_(property),
matcher_(matcher),
whose_property_("whose property `" + property_name + "` ") {}
-
- void DescribeTo(::std::ostream* os) const {
+
+ void DescribeTo(::std::ostream* os) const {
*os << "is an object " << whose_property_;
- matcher_.DescribeTo(os);
- }
-
- void DescribeNegationTo(::std::ostream* os) const {
+ matcher_.DescribeTo(os);
+ }
+
+ void DescribeNegationTo(::std::ostream* os) const {
*os << "is an object " << whose_property_;
- matcher_.DescribeNegationTo(os);
- }
-
- template <typename T>
- bool MatchAndExplain(const T&value, MatchResultListener* listener) const {
- return MatchAndExplainImpl(
+ matcher_.DescribeNegationTo(os);
+ }
+
+ template <typename T>
+ bool MatchAndExplain(const T&value, MatchResultListener* listener) const {
+ return MatchAndExplainImpl(
typename std::is_pointer<typename std::remove_const<T>::type>::type(),
- value, listener);
- }
-
- private:
+ value, listener);
+ }
+
+ private:
bool MatchAndExplainImpl(std::false_type /* is_not_pointer */,
const Class& obj,
- MatchResultListener* listener) const {
+ MatchResultListener* listener) const {
*listener << whose_property_ << "is ";
- // Cannot pass the return value (for example, int) to MatchPrintAndExplain,
- // which takes a non-const reference as argument.
- RefToConstProperty result = (obj.*property_)();
- return MatchPrintAndExplain(result, matcher_, listener);
- }
-
+ // Cannot pass the return value (for example, int) to MatchPrintAndExplain,
+ // which takes a non-const reference as argument.
+ RefToConstProperty result = (obj.*property_)();
+ return MatchPrintAndExplain(result, matcher_, listener);
+ }
+
bool MatchAndExplainImpl(std::true_type /* is_pointer */, const Class* p,
- MatchResultListener* listener) const {
+ MatchResultListener* listener) const {
if (p == nullptr) return false;
-
- *listener << "which points to an object ";
- // Since *p has a property method, it must be a class/struct/union
- // type and thus cannot be a pointer. Therefore we pass
- // false_type() as the first argument.
+
+ *listener << "which points to an object ";
+ // Since *p has a property method, it must be a class/struct/union
+ // type and thus cannot be a pointer. Therefore we pass
+ // false_type() as the first argument.
return MatchAndExplainImpl(std::false_type(), *p, listener);
- }
-
+ }
+
Property property_;
- const Matcher<RefToConstProperty> matcher_;
-
+ const Matcher<RefToConstProperty> matcher_;
+
// Contains either "whose given property " if the name of the property is
// unknown or "whose property `name_of_property` " if the name is known.
const std::string whose_property_;
-};
-
-// Type traits specifying various features of different functors for ResultOf.
-// The default template specifies features for functor objects.
-template <typename Functor>
-struct CallableTraits {
- typedef Functor StorageType;
-
- static void CheckIsValid(Functor /* functor */) {}
-
- template <typename T>
+};
+
+// Type traits specifying various features of different functors for ResultOf.
+// The default template specifies features for functor objects.
+template <typename Functor>
+struct CallableTraits {
+ typedef Functor StorageType;
+
+ static void CheckIsValid(Functor /* functor */) {}
+
+ template <typename T>
static auto Invoke(Functor f, const T& arg) -> decltype(f(arg)) {
return f(arg);
}
-};
-
-// Specialization for function pointers.
-template <typename ArgType, typename ResType>
-struct CallableTraits<ResType(*)(ArgType)> {
- typedef ResType ResultType;
- typedef ResType(*StorageType)(ArgType);
-
- static void CheckIsValid(ResType(*f)(ArgType)) {
+};
+
+// Specialization for function pointers.
+template <typename ArgType, typename ResType>
+struct CallableTraits<ResType(*)(ArgType)> {
+ typedef ResType ResultType;
+ typedef ResType(*StorageType)(ArgType);
+
+ static void CheckIsValid(ResType(*f)(ArgType)) {
GTEST_CHECK_(f != nullptr)
- << "NULL function pointer is passed into ResultOf().";
- }
- template <typename T>
- static ResType Invoke(ResType(*f)(ArgType), T arg) {
- return (*f)(arg);
- }
-};
-
-// Implements the ResultOf() matcher for matching a return value of a
-// unary function of an object.
+ << "NULL function pointer is passed into ResultOf().";
+ }
+ template <typename T>
+ static ResType Invoke(ResType(*f)(ArgType), T arg) {
+ return (*f)(arg);
+ }
+};
+
+// Implements the ResultOf() matcher for matching a return value of a
+// unary function of an object.
template <typename Callable, typename InnerMatcher>
-class ResultOfMatcher {
- public:
+class ResultOfMatcher {
+ public:
ResultOfMatcher(Callable callable, InnerMatcher matcher)
: callable_(std::move(callable)), matcher_(std::move(matcher)) {
- CallableTraits<Callable>::CheckIsValid(callable_);
- }
-
- template <typename T>
- operator Matcher<T>() const {
+ CallableTraits<Callable>::CheckIsValid(callable_);
+ }
+
+ template <typename T>
+ operator Matcher<T>() const {
return Matcher<T>(new Impl<const T&>(callable_, matcher_));
- }
-
- private:
- typedef typename CallableTraits<Callable>::StorageType CallableStorageType;
-
- template <typename T>
- class Impl : public MatcherInterface<T> {
+ }
+
+ private:
+ typedef typename CallableTraits<Callable>::StorageType CallableStorageType;
+
+ template <typename T>
+ class Impl : public MatcherInterface<T> {
using ResultType = decltype(CallableTraits<Callable>::template Invoke<T>(
std::declval<CallableStorageType>(), std::declval<T>()));
- public:
+ public:
template <typename M>
Impl(const CallableStorageType& callable, const M& matcher)
: callable_(callable), matcher_(MatcherCast<ResultType>(matcher)) {}
-
+
void DescribeTo(::std::ostream* os) const override {
- *os << "is mapped by the given callable to a value that ";
- matcher_.DescribeTo(os);
- }
-
+ *os << "is mapped by the given callable to a value that ";
+ matcher_.DescribeTo(os);
+ }
+
void DescribeNegationTo(::std::ostream* os) const override {
- *os << "is mapped by the given callable to a value that ";
- matcher_.DescribeNegationTo(os);
- }
-
+ *os << "is mapped by the given callable to a value that ";
+ matcher_.DescribeNegationTo(os);
+ }
+
bool MatchAndExplain(T obj, MatchResultListener* listener) const override {
- *listener << "which is mapped by the given callable to ";
+ *listener << "which is mapped by the given callable to ";
// Cannot pass the return value directly to MatchPrintAndExplain, which
// takes a non-const reference as argument.
// Also, specifying template argument explicitly is needed because T could
// be a non-const reference (e.g. Matcher<Uncopyable&>).
- ResultType result =
- CallableTraits<Callable>::template Invoke<T>(callable_, obj);
- return MatchPrintAndExplain(result, matcher_, listener);
- }
-
- private:
- // Functors often define operator() as non-const method even though
+ ResultType result =
+ CallableTraits<Callable>::template Invoke<T>(callable_, obj);
+ return MatchPrintAndExplain(result, matcher_, listener);
+ }
+
+ private:
+ // Functors often define operator() as non-const method even though
// they are actually stateless. But we need to use them even when
- // 'this' is a const pointer. It's the user's responsibility not to
+ // 'this' is a const pointer. It's the user's responsibility not to
// use stateful callables with ResultOf(), which doesn't guarantee
- // how many times the callable will be invoked.
- mutable CallableStorageType callable_;
- const Matcher<ResultType> matcher_;
- }; // class Impl
-
- const CallableStorageType callable_;
+ // how many times the callable will be invoked.
+ mutable CallableStorageType callable_;
+ const Matcher<ResultType> matcher_;
+ }; // class Impl
+
+ const CallableStorageType callable_;
const InnerMatcher matcher_;
-};
-
-// Implements a matcher that checks the size of an STL-style container.
-template <typename SizeMatcher>
-class SizeIsMatcher {
- public:
- explicit SizeIsMatcher(const SizeMatcher& size_matcher)
- : size_matcher_(size_matcher) {
- }
-
- template <typename Container>
- operator Matcher<Container>() const {
+};
+
+// Implements a matcher that checks the size of an STL-style container.
+template <typename SizeMatcher>
+class SizeIsMatcher {
+ public:
+ explicit SizeIsMatcher(const SizeMatcher& size_matcher)
+ : size_matcher_(size_matcher) {
+ }
+
+ template <typename Container>
+ operator Matcher<Container>() const {
return Matcher<Container>(new Impl<const Container&>(size_matcher_));
- }
-
- template <typename Container>
- class Impl : public MatcherInterface<Container> {
- public:
+ }
+
+ template <typename Container>
+ class Impl : public MatcherInterface<Container> {
+ public:
using SizeType = decltype(std::declval<Container>().size());
- explicit Impl(const SizeMatcher& size_matcher)
- : size_matcher_(MatcherCast<SizeType>(size_matcher)) {}
-
+ explicit Impl(const SizeMatcher& size_matcher)
+ : size_matcher_(MatcherCast<SizeType>(size_matcher)) {}
+
void DescribeTo(::std::ostream* os) const override {
- *os << "size ";
- size_matcher_.DescribeTo(os);
- }
+ *os << "size ";
+ size_matcher_.DescribeTo(os);
+ }
void DescribeNegationTo(::std::ostream* os) const override {
- *os << "size ";
- size_matcher_.DescribeNegationTo(os);
- }
-
+ *os << "size ";
+ size_matcher_.DescribeNegationTo(os);
+ }
+
bool MatchAndExplain(Container container,
MatchResultListener* listener) const override {
- SizeType size = container.size();
- StringMatchResultListener size_listener;
- const bool result = size_matcher_.MatchAndExplain(size, &size_listener);
- *listener
- << "whose size " << size << (result ? " matches" : " doesn't match");
- PrintIfNotEmpty(size_listener.str(), listener->stream());
- return result;
- }
-
- private:
- const Matcher<SizeType> size_matcher_;
- };
-
- private:
- const SizeMatcher size_matcher_;
-};
-
-// Implements a matcher that checks the begin()..end() distance of an STL-style
-// container.
-template <typename DistanceMatcher>
-class BeginEndDistanceIsMatcher {
- public:
- explicit BeginEndDistanceIsMatcher(const DistanceMatcher& distance_matcher)
- : distance_matcher_(distance_matcher) {}
-
- template <typename Container>
- operator Matcher<Container>() const {
+ SizeType size = container.size();
+ StringMatchResultListener size_listener;
+ const bool result = size_matcher_.MatchAndExplain(size, &size_listener);
+ *listener
+ << "whose size " << size << (result ? " matches" : " doesn't match");
+ PrintIfNotEmpty(size_listener.str(), listener->stream());
+ return result;
+ }
+
+ private:
+ const Matcher<SizeType> size_matcher_;
+ };
+
+ private:
+ const SizeMatcher size_matcher_;
+};
+
+// Implements a matcher that checks the begin()..end() distance of an STL-style
+// container.
+template <typename DistanceMatcher>
+class BeginEndDistanceIsMatcher {
+ public:
+ explicit BeginEndDistanceIsMatcher(const DistanceMatcher& distance_matcher)
+ : distance_matcher_(distance_matcher) {}
+
+ template <typename Container>
+ operator Matcher<Container>() const {
return Matcher<Container>(new Impl<const Container&>(distance_matcher_));
- }
-
- template <typename Container>
- class Impl : public MatcherInterface<Container> {
- public:
- typedef internal::StlContainerView<
- GTEST_REMOVE_REFERENCE_AND_CONST_(Container)> ContainerView;
- typedef typename std::iterator_traits<
- typename ContainerView::type::const_iterator>::difference_type
- DistanceType;
- explicit Impl(const DistanceMatcher& distance_matcher)
- : distance_matcher_(MatcherCast<DistanceType>(distance_matcher)) {}
-
+ }
+
+ template <typename Container>
+ class Impl : public MatcherInterface<Container> {
+ public:
+ typedef internal::StlContainerView<
+ GTEST_REMOVE_REFERENCE_AND_CONST_(Container)> ContainerView;
+ typedef typename std::iterator_traits<
+ typename ContainerView::type::const_iterator>::difference_type
+ DistanceType;
+ explicit Impl(const DistanceMatcher& distance_matcher)
+ : distance_matcher_(MatcherCast<DistanceType>(distance_matcher)) {}
+
void DescribeTo(::std::ostream* os) const override {
- *os << "distance between begin() and end() ";
- distance_matcher_.DescribeTo(os);
- }
+ *os << "distance between begin() and end() ";
+ distance_matcher_.DescribeTo(os);
+ }
void DescribeNegationTo(::std::ostream* os) const override {
- *os << "distance between begin() and end() ";
- distance_matcher_.DescribeNegationTo(os);
- }
-
+ *os << "distance between begin() and end() ";
+ distance_matcher_.DescribeNegationTo(os);
+ }
+
bool MatchAndExplain(Container container,
MatchResultListener* listener) const override {
- using std::begin;
- using std::end;
- DistanceType distance = std::distance(begin(container), end(container));
- StringMatchResultListener distance_listener;
- const bool result =
- distance_matcher_.MatchAndExplain(distance, &distance_listener);
- *listener << "whose distance between begin() and end() " << distance
- << (result ? " matches" : " doesn't match");
- PrintIfNotEmpty(distance_listener.str(), listener->stream());
- return result;
- }
-
- private:
- const Matcher<DistanceType> distance_matcher_;
- };
-
- private:
- const DistanceMatcher distance_matcher_;
-};
-
-// Implements an equality matcher for any STL-style container whose elements
-// support ==. This matcher is like Eq(), but its failure explanations provide
-// more detailed information that is useful when the container is used as a set.
-// The failure message reports elements that are in one of the operands but not
-// the other. The failure messages do not report duplicate or out-of-order
-// elements in the containers (which don't properly matter to sets, but can
-// occur if the containers are vectors or lists, for example).
-//
-// Uses the container's const_iterator, value_type, operator ==,
-// begin(), and end().
-template <typename Container>
-class ContainerEqMatcher {
- public:
- typedef internal::StlContainerView<Container> View;
- typedef typename View::type StlContainer;
- typedef typename View::const_reference StlContainerReference;
-
+ using std::begin;
+ using std::end;
+ DistanceType distance = std::distance(begin(container), end(container));
+ StringMatchResultListener distance_listener;
+ const bool result =
+ distance_matcher_.MatchAndExplain(distance, &distance_listener);
+ *listener << "whose distance between begin() and end() " << distance
+ << (result ? " matches" : " doesn't match");
+ PrintIfNotEmpty(distance_listener.str(), listener->stream());
+ return result;
+ }
+
+ private:
+ const Matcher<DistanceType> distance_matcher_;
+ };
+
+ private:
+ const DistanceMatcher distance_matcher_;
+};
+
+// Implements an equality matcher for any STL-style container whose elements
+// support ==. This matcher is like Eq(), but its failure explanations provide
+// more detailed information that is useful when the container is used as a set.
+// The failure message reports elements that are in one of the operands but not
+// the other. The failure messages do not report duplicate or out-of-order
+// elements in the containers (which don't properly matter to sets, but can
+// occur if the containers are vectors or lists, for example).
+//
+// Uses the container's const_iterator, value_type, operator ==,
+// begin(), and end().
+template <typename Container>
+class ContainerEqMatcher {
+ public:
+ typedef internal::StlContainerView<Container> View;
+ typedef typename View::type StlContainer;
+ typedef typename View::const_reference StlContainerReference;
+
static_assert(!std::is_const<Container>::value,
"Container type must not be const");
static_assert(!std::is_reference<Container>::value,
"Container type must not be a reference");
- // We make a copy of expected in case the elements in it are modified
- // after this matcher is created.
- explicit ContainerEqMatcher(const Container& expected)
+ // We make a copy of expected in case the elements in it are modified
+ // after this matcher is created.
+ explicit ContainerEqMatcher(const Container& expected)
: expected_(View::Copy(expected)) {}
-
- void DescribeTo(::std::ostream* os) const {
- *os << "equals ";
- UniversalPrint(expected_, os);
- }
- void DescribeNegationTo(::std::ostream* os) const {
- *os << "does not equal ";
- UniversalPrint(expected_, os);
- }
-
- template <typename LhsContainer>
- bool MatchAndExplain(const LhsContainer& lhs,
- MatchResultListener* listener) const {
+
+ void DescribeTo(::std::ostream* os) const {
+ *os << "equals ";
+ UniversalPrint(expected_, os);
+ }
+ void DescribeNegationTo(::std::ostream* os) const {
+ *os << "does not equal ";
+ UniversalPrint(expected_, os);
+ }
+
+ template <typename LhsContainer>
+ bool MatchAndExplain(const LhsContainer& lhs,
+ MatchResultListener* listener) const {
typedef internal::StlContainerView<
typename std::remove_const<LhsContainer>::type>
- LhsView;
- typedef typename LhsView::type LhsStlContainer;
- StlContainerReference lhs_stl_container = LhsView::ConstReference(lhs);
- if (lhs_stl_container == expected_)
- return true;
-
- ::std::ostream* const os = listener->stream();
+ LhsView;
+ typedef typename LhsView::type LhsStlContainer;
+ StlContainerReference lhs_stl_container = LhsView::ConstReference(lhs);
+ if (lhs_stl_container == expected_)
+ return true;
+
+ ::std::ostream* const os = listener->stream();
if (os != nullptr) {
- // Something is different. Check for extra values first.
- bool printed_header = false;
- for (typename LhsStlContainer::const_iterator it =
- lhs_stl_container.begin();
- it != lhs_stl_container.end(); ++it) {
- if (internal::ArrayAwareFind(expected_.begin(), expected_.end(), *it) ==
- expected_.end()) {
- if (printed_header) {
- *os << ", ";
- } else {
- *os << "which has these unexpected elements: ";
- printed_header = true;
- }
- UniversalPrint(*it, os);
- }
- }
-
- // Now check for missing values.
- bool printed_header2 = false;
- for (typename StlContainer::const_iterator it = expected_.begin();
- it != expected_.end(); ++it) {
- if (internal::ArrayAwareFind(
- lhs_stl_container.begin(), lhs_stl_container.end(), *it) ==
- lhs_stl_container.end()) {
- if (printed_header2) {
- *os << ", ";
- } else {
- *os << (printed_header ? ",\nand" : "which")
- << " doesn't have these expected elements: ";
- printed_header2 = true;
- }
- UniversalPrint(*it, os);
- }
- }
- }
-
- return false;
- }
-
- private:
- const StlContainer expected_;
-};
-
-// A comparator functor that uses the < operator to compare two values.
-struct LessComparator {
- template <typename T, typename U>
- bool operator()(const T& lhs, const U& rhs) const { return lhs < rhs; }
-};
-
-// Implements WhenSortedBy(comparator, container_matcher).
-template <typename Comparator, typename ContainerMatcher>
-class WhenSortedByMatcher {
- public:
- WhenSortedByMatcher(const Comparator& comparator,
- const ContainerMatcher& matcher)
- : comparator_(comparator), matcher_(matcher) {}
-
- template <typename LhsContainer>
- operator Matcher<LhsContainer>() const {
- return MakeMatcher(new Impl<LhsContainer>(comparator_, matcher_));
- }
-
- template <typename LhsContainer>
- class Impl : public MatcherInterface<LhsContainer> {
- public:
- typedef internal::StlContainerView<
- GTEST_REMOVE_REFERENCE_AND_CONST_(LhsContainer)> LhsView;
- typedef typename LhsView::type LhsStlContainer;
- typedef typename LhsView::const_reference LhsStlContainerReference;
- // Transforms std::pair<const Key, Value> into std::pair<Key, Value>
- // so that we can match associative containers.
- typedef typename RemoveConstFromKey<
- typename LhsStlContainer::value_type>::type LhsValue;
-
- Impl(const Comparator& comparator, const ContainerMatcher& matcher)
- : comparator_(comparator), matcher_(matcher) {}
-
+ // Something is different. Check for extra values first.
+ bool printed_header = false;
+ for (typename LhsStlContainer::const_iterator it =
+ lhs_stl_container.begin();
+ it != lhs_stl_container.end(); ++it) {
+ if (internal::ArrayAwareFind(expected_.begin(), expected_.end(), *it) ==
+ expected_.end()) {
+ if (printed_header) {
+ *os << ", ";
+ } else {
+ *os << "which has these unexpected elements: ";
+ printed_header = true;
+ }
+ UniversalPrint(*it, os);
+ }
+ }
+
+ // Now check for missing values.
+ bool printed_header2 = false;
+ for (typename StlContainer::const_iterator it = expected_.begin();
+ it != expected_.end(); ++it) {
+ if (internal::ArrayAwareFind(
+ lhs_stl_container.begin(), lhs_stl_container.end(), *it) ==
+ lhs_stl_container.end()) {
+ if (printed_header2) {
+ *os << ", ";
+ } else {
+ *os << (printed_header ? ",\nand" : "which")
+ << " doesn't have these expected elements: ";
+ printed_header2 = true;
+ }
+ UniversalPrint(*it, os);
+ }
+ }
+ }
+
+ return false;
+ }
+
+ private:
+ const StlContainer expected_;
+};
+
+// A comparator functor that uses the < operator to compare two values.
+struct LessComparator {
+ template <typename T, typename U>
+ bool operator()(const T& lhs, const U& rhs) const { return lhs < rhs; }
+};
+
+// Implements WhenSortedBy(comparator, container_matcher).
+template <typename Comparator, typename ContainerMatcher>
+class WhenSortedByMatcher {
+ public:
+ WhenSortedByMatcher(const Comparator& comparator,
+ const ContainerMatcher& matcher)
+ : comparator_(comparator), matcher_(matcher) {}
+
+ template <typename LhsContainer>
+ operator Matcher<LhsContainer>() const {
+ return MakeMatcher(new Impl<LhsContainer>(comparator_, matcher_));
+ }
+
+ template <typename LhsContainer>
+ class Impl : public MatcherInterface<LhsContainer> {
+ public:
+ typedef internal::StlContainerView<
+ GTEST_REMOVE_REFERENCE_AND_CONST_(LhsContainer)> LhsView;
+ typedef typename LhsView::type LhsStlContainer;
+ typedef typename LhsView::const_reference LhsStlContainerReference;
+ // Transforms std::pair<const Key, Value> into std::pair<Key, Value>
+ // so that we can match associative containers.
+ typedef typename RemoveConstFromKey<
+ typename LhsStlContainer::value_type>::type LhsValue;
+
+ Impl(const Comparator& comparator, const ContainerMatcher& matcher)
+ : comparator_(comparator), matcher_(matcher) {}
+
void DescribeTo(::std::ostream* os) const override {
- *os << "(when sorted) ";
- matcher_.DescribeTo(os);
- }
-
+ *os << "(when sorted) ";
+ matcher_.DescribeTo(os);
+ }
+
void DescribeNegationTo(::std::ostream* os) const override {
- *os << "(when sorted) ";
- matcher_.DescribeNegationTo(os);
- }
-
+ *os << "(when sorted) ";
+ matcher_.DescribeNegationTo(os);
+ }
+
bool MatchAndExplain(LhsContainer lhs,
MatchResultListener* listener) const override {
- LhsStlContainerReference lhs_stl_container = LhsView::ConstReference(lhs);
- ::std::vector<LhsValue> sorted_container(lhs_stl_container.begin(),
- lhs_stl_container.end());
- ::std::sort(
- sorted_container.begin(), sorted_container.end(), comparator_);
-
- if (!listener->IsInterested()) {
- // If the listener is not interested, we do not need to
- // construct the inner explanation.
- return matcher_.Matches(sorted_container);
- }
-
- *listener << "which is ";
- UniversalPrint(sorted_container, listener->stream());
- *listener << " when sorted";
-
- StringMatchResultListener inner_listener;
- const bool match = matcher_.MatchAndExplain(sorted_container,
- &inner_listener);
- PrintIfNotEmpty(inner_listener.str(), listener->stream());
- return match;
- }
-
- private:
- const Comparator comparator_;
- const Matcher<const ::std::vector<LhsValue>&> matcher_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(Impl);
- };
-
- private:
- const Comparator comparator_;
- const ContainerMatcher matcher_;
-};
-
-// Implements Pointwise(tuple_matcher, rhs_container). tuple_matcher
+ LhsStlContainerReference lhs_stl_container = LhsView::ConstReference(lhs);
+ ::std::vector<LhsValue> sorted_container(lhs_stl_container.begin(),
+ lhs_stl_container.end());
+ ::std::sort(
+ sorted_container.begin(), sorted_container.end(), comparator_);
+
+ if (!listener->IsInterested()) {
+ // If the listener is not interested, we do not need to
+ // construct the inner explanation.
+ return matcher_.Matches(sorted_container);
+ }
+
+ *listener << "which is ";
+ UniversalPrint(sorted_container, listener->stream());
+ *listener << " when sorted";
+
+ StringMatchResultListener inner_listener;
+ const bool match = matcher_.MatchAndExplain(sorted_container,
+ &inner_listener);
+ PrintIfNotEmpty(inner_listener.str(), listener->stream());
+ return match;
+ }
+
+ private:
+ const Comparator comparator_;
+ const Matcher<const ::std::vector<LhsValue>&> matcher_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(Impl);
+ };
+
+ private:
+ const Comparator comparator_;
+ const ContainerMatcher matcher_;
+};
+
+// Implements Pointwise(tuple_matcher, rhs_container). tuple_matcher
// must be able to be safely cast to Matcher<std::tuple<const T1&, const
-// T2&> >, where T1 and T2 are the types of elements in the LHS
-// container and the RHS container respectively.
-template <typename TupleMatcher, typename RhsContainer>
-class PointwiseMatcher {
+// T2&> >, where T1 and T2 are the types of elements in the LHS
+// container and the RHS container respectively.
+template <typename TupleMatcher, typename RhsContainer>
+class PointwiseMatcher {
GTEST_COMPILE_ASSERT_(
!IsHashTable<GTEST_REMOVE_REFERENCE_AND_CONST_(RhsContainer)>::value,
use_UnorderedPointwise_with_hash_tables);
- public:
- typedef internal::StlContainerView<RhsContainer> RhsView;
- typedef typename RhsView::type RhsStlContainer;
- typedef typename RhsStlContainer::value_type RhsValue;
-
+ public:
+ typedef internal::StlContainerView<RhsContainer> RhsView;
+ typedef typename RhsView::type RhsStlContainer;
+ typedef typename RhsStlContainer::value_type RhsValue;
+
static_assert(!std::is_const<RhsContainer>::value,
"RhsContainer type must not be const");
static_assert(!std::is_reference<RhsContainer>::value,
"RhsContainer type must not be a reference");
- // Like ContainerEq, we make a copy of rhs in case the elements in
- // it are modified after this matcher is created.
- PointwiseMatcher(const TupleMatcher& tuple_matcher, const RhsContainer& rhs)
+ // Like ContainerEq, we make a copy of rhs in case the elements in
+ // it are modified after this matcher is created.
+ PointwiseMatcher(const TupleMatcher& tuple_matcher, const RhsContainer& rhs)
: tuple_matcher_(tuple_matcher), rhs_(RhsView::Copy(rhs)) {}
-
- template <typename LhsContainer>
- operator Matcher<LhsContainer>() const {
+
+ template <typename LhsContainer>
+ operator Matcher<LhsContainer>() const {
GTEST_COMPILE_ASSERT_(
!IsHashTable<GTEST_REMOVE_REFERENCE_AND_CONST_(LhsContainer)>::value,
use_UnorderedPointwise_with_hash_tables);
return Matcher<LhsContainer>(
new Impl<const LhsContainer&>(tuple_matcher_, rhs_));
- }
-
- template <typename LhsContainer>
- class Impl : public MatcherInterface<LhsContainer> {
- public:
- typedef internal::StlContainerView<
- GTEST_REMOVE_REFERENCE_AND_CONST_(LhsContainer)> LhsView;
- typedef typename LhsView::type LhsStlContainer;
- typedef typename LhsView::const_reference LhsStlContainerReference;
- typedef typename LhsStlContainer::value_type LhsValue;
- // We pass the LHS value and the RHS value to the inner matcher by
- // reference, as they may be expensive to copy. We must use tuple
- // instead of pair here, as a pair cannot hold references (C++ 98,
- // 20.2.2 [lib.pairs]).
+ }
+
+ template <typename LhsContainer>
+ class Impl : public MatcherInterface<LhsContainer> {
+ public:
+ typedef internal::StlContainerView<
+ GTEST_REMOVE_REFERENCE_AND_CONST_(LhsContainer)> LhsView;
+ typedef typename LhsView::type LhsStlContainer;
+ typedef typename LhsView::const_reference LhsStlContainerReference;
+ typedef typename LhsStlContainer::value_type LhsValue;
+ // We pass the LHS value and the RHS value to the inner matcher by
+ // reference, as they may be expensive to copy. We must use tuple
+ // instead of pair here, as a pair cannot hold references (C++ 98,
+ // 20.2.2 [lib.pairs]).
typedef ::std::tuple<const LhsValue&, const RhsValue&> InnerMatcherArg;
-
- Impl(const TupleMatcher& tuple_matcher, const RhsStlContainer& rhs)
- // mono_tuple_matcher_ holds a monomorphic version of the tuple matcher.
- : mono_tuple_matcher_(SafeMatcherCast<InnerMatcherArg>(tuple_matcher)),
- rhs_(rhs) {}
-
+
+ Impl(const TupleMatcher& tuple_matcher, const RhsStlContainer& rhs)
+ // mono_tuple_matcher_ holds a monomorphic version of the tuple matcher.
+ : mono_tuple_matcher_(SafeMatcherCast<InnerMatcherArg>(tuple_matcher)),
+ rhs_(rhs) {}
+
void DescribeTo(::std::ostream* os) const override {
- *os << "contains " << rhs_.size()
- << " values, where each value and its corresponding value in ";
- UniversalPrinter<RhsStlContainer>::Print(rhs_, os);
- *os << " ";
- mono_tuple_matcher_.DescribeTo(os);
- }
+ *os << "contains " << rhs_.size()
+ << " values, where each value and its corresponding value in ";
+ UniversalPrinter<RhsStlContainer>::Print(rhs_, os);
+ *os << " ";
+ mono_tuple_matcher_.DescribeTo(os);
+ }
void DescribeNegationTo(::std::ostream* os) const override {
- *os << "doesn't contain exactly " << rhs_.size()
- << " values, or contains a value x at some index i"
- << " where x and the i-th value of ";
- UniversalPrint(rhs_, os);
- *os << " ";
- mono_tuple_matcher_.DescribeNegationTo(os);
- }
-
+ *os << "doesn't contain exactly " << rhs_.size()
+ << " values, or contains a value x at some index i"
+ << " where x and the i-th value of ";
+ UniversalPrint(rhs_, os);
+ *os << " ";
+ mono_tuple_matcher_.DescribeNegationTo(os);
+ }
+
bool MatchAndExplain(LhsContainer lhs,
MatchResultListener* listener) const override {
- LhsStlContainerReference lhs_stl_container = LhsView::ConstReference(lhs);
- const size_t actual_size = lhs_stl_container.size();
- if (actual_size != rhs_.size()) {
- *listener << "which contains " << actual_size << " values";
- return false;
- }
-
- typename LhsStlContainer::const_iterator left = lhs_stl_container.begin();
- typename RhsStlContainer::const_iterator right = rhs_.begin();
- for (size_t i = 0; i != actual_size; ++i, ++left, ++right) {
- if (listener->IsInterested()) {
- StringMatchResultListener inner_listener;
+ LhsStlContainerReference lhs_stl_container = LhsView::ConstReference(lhs);
+ const size_t actual_size = lhs_stl_container.size();
+ if (actual_size != rhs_.size()) {
+ *listener << "which contains " << actual_size << " values";
+ return false;
+ }
+
+ typename LhsStlContainer::const_iterator left = lhs_stl_container.begin();
+ typename RhsStlContainer::const_iterator right = rhs_.begin();
+ for (size_t i = 0; i != actual_size; ++i, ++left, ++right) {
+ if (listener->IsInterested()) {
+ StringMatchResultListener inner_listener;
// Create InnerMatcherArg as a temporarily object to avoid it outlives
// *left and *right. Dereference or the conversion to `const T&` may
// return temp objects, e.g for vector<bool>.
- if (!mono_tuple_matcher_.MatchAndExplain(
+ if (!mono_tuple_matcher_.MatchAndExplain(
InnerMatcherArg(ImplicitCast_<const LhsValue&>(*left),
ImplicitCast_<const RhsValue&>(*right)),
&inner_listener)) {
- *listener << "where the value pair (";
- UniversalPrint(*left, listener->stream());
- *listener << ", ";
- UniversalPrint(*right, listener->stream());
- *listener << ") at index #" << i << " don't match";
- PrintIfNotEmpty(inner_listener.str(), listener->stream());
- return false;
- }
- } else {
+ *listener << "where the value pair (";
+ UniversalPrint(*left, listener->stream());
+ *listener << ", ";
+ UniversalPrint(*right, listener->stream());
+ *listener << ") at index #" << i << " don't match";
+ PrintIfNotEmpty(inner_listener.str(), listener->stream());
+ return false;
+ }
+ } else {
if (!mono_tuple_matcher_.Matches(
InnerMatcherArg(ImplicitCast_<const LhsValue&>(*left),
ImplicitCast_<const RhsValue&>(*right))))
- return false;
- }
- }
-
- return true;
- }
-
- private:
- const Matcher<InnerMatcherArg> mono_tuple_matcher_;
- const RhsStlContainer rhs_;
- };
-
- private:
- const TupleMatcher tuple_matcher_;
- const RhsStlContainer rhs_;
-};
-
-// Holds the logic common to ContainsMatcherImpl and EachMatcherImpl.
-template <typename Container>
-class QuantifierMatcherImpl : public MatcherInterface<Container> {
- public:
- typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer;
- typedef StlContainerView<RawContainer> View;
- typedef typename View::type StlContainer;
- typedef typename View::const_reference StlContainerReference;
- typedef typename StlContainer::value_type Element;
-
- template <typename InnerMatcher>
- explicit QuantifierMatcherImpl(InnerMatcher inner_matcher)
- : inner_matcher_(
- testing::SafeMatcherCast<const Element&>(inner_matcher)) {}
-
- // Checks whether:
- // * All elements in the container match, if all_elements_should_match.
- // * Any element in the container matches, if !all_elements_should_match.
- bool MatchAndExplainImpl(bool all_elements_should_match,
- Container container,
- MatchResultListener* listener) const {
- StlContainerReference stl_container = View::ConstReference(container);
- size_t i = 0;
- for (typename StlContainer::const_iterator it = stl_container.begin();
- it != stl_container.end(); ++it, ++i) {
- StringMatchResultListener inner_listener;
- const bool matches = inner_matcher_.MatchAndExplain(*it, &inner_listener);
-
- if (matches != all_elements_should_match) {
- *listener << "whose element #" << i
- << (matches ? " matches" : " doesn't match");
- PrintIfNotEmpty(inner_listener.str(), listener->stream());
- return !all_elements_should_match;
- }
- }
- return all_elements_should_match;
- }
-
- protected:
- const Matcher<const Element&> inner_matcher_;
-};
-
-// Implements Contains(element_matcher) for the given argument type Container.
-// Symmetric to EachMatcherImpl.
-template <typename Container>
-class ContainsMatcherImpl : public QuantifierMatcherImpl<Container> {
- public:
- template <typename InnerMatcher>
- explicit ContainsMatcherImpl(InnerMatcher inner_matcher)
- : QuantifierMatcherImpl<Container>(inner_matcher) {}
-
- // Describes what this matcher does.
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ private:
+ const Matcher<InnerMatcherArg> mono_tuple_matcher_;
+ const RhsStlContainer rhs_;
+ };
+
+ private:
+ const TupleMatcher tuple_matcher_;
+ const RhsStlContainer rhs_;
+};
+
+// Holds the logic common to ContainsMatcherImpl and EachMatcherImpl.
+template <typename Container>
+class QuantifierMatcherImpl : public MatcherInterface<Container> {
+ public:
+ typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer;
+ typedef StlContainerView<RawContainer> View;
+ typedef typename View::type StlContainer;
+ typedef typename View::const_reference StlContainerReference;
+ typedef typename StlContainer::value_type Element;
+
+ template <typename InnerMatcher>
+ explicit QuantifierMatcherImpl(InnerMatcher inner_matcher)
+ : inner_matcher_(
+ testing::SafeMatcherCast<const Element&>(inner_matcher)) {}
+
+ // Checks whether:
+ // * All elements in the container match, if all_elements_should_match.
+ // * Any element in the container matches, if !all_elements_should_match.
+ bool MatchAndExplainImpl(bool all_elements_should_match,
+ Container container,
+ MatchResultListener* listener) const {
+ StlContainerReference stl_container = View::ConstReference(container);
+ size_t i = 0;
+ for (typename StlContainer::const_iterator it = stl_container.begin();
+ it != stl_container.end(); ++it, ++i) {
+ StringMatchResultListener inner_listener;
+ const bool matches = inner_matcher_.MatchAndExplain(*it, &inner_listener);
+
+ if (matches != all_elements_should_match) {
+ *listener << "whose element #" << i
+ << (matches ? " matches" : " doesn't match");
+ PrintIfNotEmpty(inner_listener.str(), listener->stream());
+ return !all_elements_should_match;
+ }
+ }
+ return all_elements_should_match;
+ }
+
+ protected:
+ const Matcher<const Element&> inner_matcher_;
+};
+
+// Implements Contains(element_matcher) for the given argument type Container.
+// Symmetric to EachMatcherImpl.
+template <typename Container>
+class ContainsMatcherImpl : public QuantifierMatcherImpl<Container> {
+ public:
+ template <typename InnerMatcher>
+ explicit ContainsMatcherImpl(InnerMatcher inner_matcher)
+ : QuantifierMatcherImpl<Container>(inner_matcher) {}
+
+ // Describes what this matcher does.
void DescribeTo(::std::ostream* os) const override {
- *os << "contains at least one element that ";
- this->inner_matcher_.DescribeTo(os);
- }
-
+ *os << "contains at least one element that ";
+ this->inner_matcher_.DescribeTo(os);
+ }
+
void DescribeNegationTo(::std::ostream* os) const override {
- *os << "doesn't contain any element that ";
- this->inner_matcher_.DescribeTo(os);
- }
-
+ *os << "doesn't contain any element that ";
+ this->inner_matcher_.DescribeTo(os);
+ }
+
bool MatchAndExplain(Container container,
MatchResultListener* listener) const override {
- return this->MatchAndExplainImpl(false, container, listener);
- }
-};
-
-// Implements Each(element_matcher) for the given argument type Container.
-// Symmetric to ContainsMatcherImpl.
-template <typename Container>
-class EachMatcherImpl : public QuantifierMatcherImpl<Container> {
- public:
- template <typename InnerMatcher>
- explicit EachMatcherImpl(InnerMatcher inner_matcher)
- : QuantifierMatcherImpl<Container>(inner_matcher) {}
-
- // Describes what this matcher does.
+ return this->MatchAndExplainImpl(false, container, listener);
+ }
+};
+
+// Implements Each(element_matcher) for the given argument type Container.
+// Symmetric to ContainsMatcherImpl.
+template <typename Container>
+class EachMatcherImpl : public QuantifierMatcherImpl<Container> {
+ public:
+ template <typename InnerMatcher>
+ explicit EachMatcherImpl(InnerMatcher inner_matcher)
+ : QuantifierMatcherImpl<Container>(inner_matcher) {}
+
+ // Describes what this matcher does.
void DescribeTo(::std::ostream* os) const override {
- *os << "only contains elements that ";
- this->inner_matcher_.DescribeTo(os);
- }
-
+ *os << "only contains elements that ";
+ this->inner_matcher_.DescribeTo(os);
+ }
+
void DescribeNegationTo(::std::ostream* os) const override {
- *os << "contains some element that ";
- this->inner_matcher_.DescribeNegationTo(os);
- }
-
+ *os << "contains some element that ";
+ this->inner_matcher_.DescribeNegationTo(os);
+ }
+
bool MatchAndExplain(Container container,
MatchResultListener* listener) const override {
- return this->MatchAndExplainImpl(true, container, listener);
- }
-};
-
-// Implements polymorphic Contains(element_matcher).
-template <typename M>
-class ContainsMatcher {
- public:
- explicit ContainsMatcher(M m) : inner_matcher_(m) {}
-
- template <typename Container>
- operator Matcher<Container>() const {
+ return this->MatchAndExplainImpl(true, container, listener);
+ }
+};
+
+// Implements polymorphic Contains(element_matcher).
+template <typename M>
+class ContainsMatcher {
+ public:
+ explicit ContainsMatcher(M m) : inner_matcher_(m) {}
+
+ template <typename Container>
+ operator Matcher<Container>() const {
return Matcher<Container>(
new ContainsMatcherImpl<const Container&>(inner_matcher_));
- }
-
- private:
- const M inner_matcher_;
-};
-
-// Implements polymorphic Each(element_matcher).
-template <typename M>
-class EachMatcher {
- public:
- explicit EachMatcher(M m) : inner_matcher_(m) {}
-
- template <typename Container>
- operator Matcher<Container>() const {
+ }
+
+ private:
+ const M inner_matcher_;
+};
+
+// Implements polymorphic Each(element_matcher).
+template <typename M>
+class EachMatcher {
+ public:
+ explicit EachMatcher(M m) : inner_matcher_(m) {}
+
+ template <typename Container>
+ operator Matcher<Container>() const {
return Matcher<Container>(
new EachMatcherImpl<const Container&>(inner_matcher_));
- }
-
- private:
- const M inner_matcher_;
-};
-
+ }
+
+ private:
+ const M inner_matcher_;
+};
+
struct Rank1 {};
struct Rank0 : Rank1 {};
@@ -2765,68 +2765,68 @@ auto Second(T& x, Rank0) -> decltype((x.second)) { // NOLINT
}
} // namespace pair_getters
-// Implements Key(inner_matcher) for the given argument pair type.
-// Key(inner_matcher) matches an std::pair whose 'first' field matches
-// inner_matcher. For example, Contains(Key(Ge(5))) can be used to match an
-// std::map that contains at least one element whose key is >= 5.
-template <typename PairType>
-class KeyMatcherImpl : public MatcherInterface<PairType> {
- public:
- typedef GTEST_REMOVE_REFERENCE_AND_CONST_(PairType) RawPairType;
- typedef typename RawPairType::first_type KeyType;
-
- template <typename InnerMatcher>
- explicit KeyMatcherImpl(InnerMatcher inner_matcher)
- : inner_matcher_(
- testing::SafeMatcherCast<const KeyType&>(inner_matcher)) {
- }
-
+// Implements Key(inner_matcher) for the given argument pair type.
+// Key(inner_matcher) matches an std::pair whose 'first' field matches
+// inner_matcher. For example, Contains(Key(Ge(5))) can be used to match an
+// std::map that contains at least one element whose key is >= 5.
+template <typename PairType>
+class KeyMatcherImpl : public MatcherInterface<PairType> {
+ public:
+ typedef GTEST_REMOVE_REFERENCE_AND_CONST_(PairType) RawPairType;
+ typedef typename RawPairType::first_type KeyType;
+
+ template <typename InnerMatcher>
+ explicit KeyMatcherImpl(InnerMatcher inner_matcher)
+ : inner_matcher_(
+ testing::SafeMatcherCast<const KeyType&>(inner_matcher)) {
+ }
+
// Returns true if and only if 'key_value.first' (the key) matches the inner
// matcher.
bool MatchAndExplain(PairType key_value,
MatchResultListener* listener) const override {
- StringMatchResultListener inner_listener;
+ StringMatchResultListener inner_listener;
const bool match = inner_matcher_.MatchAndExplain(
pair_getters::First(key_value, Rank0()), &inner_listener);
const std::string explanation = inner_listener.str();
- if (explanation != "") {
- *listener << "whose first field is a value " << explanation;
- }
- return match;
- }
-
- // Describes what this matcher does.
+ if (explanation != "") {
+ *listener << "whose first field is a value " << explanation;
+ }
+ return match;
+ }
+
+ // Describes what this matcher does.
void DescribeTo(::std::ostream* os) const override {
- *os << "has a key that ";
- inner_matcher_.DescribeTo(os);
- }
-
- // Describes what the negation of this matcher does.
+ *os << "has a key that ";
+ inner_matcher_.DescribeTo(os);
+ }
+
+ // Describes what the negation of this matcher does.
void DescribeNegationTo(::std::ostream* os) const override {
- *os << "doesn't have a key that ";
- inner_matcher_.DescribeTo(os);
- }
-
- private:
- const Matcher<const KeyType&> inner_matcher_;
-};
-
-// Implements polymorphic Key(matcher_for_key).
-template <typename M>
-class KeyMatcher {
- public:
- explicit KeyMatcher(M m) : matcher_for_key_(m) {}
-
- template <typename PairType>
- operator Matcher<PairType>() const {
+ *os << "doesn't have a key that ";
+ inner_matcher_.DescribeTo(os);
+ }
+
+ private:
+ const Matcher<const KeyType&> inner_matcher_;
+};
+
+// Implements polymorphic Key(matcher_for_key).
+template <typename M>
+class KeyMatcher {
+ public:
+ explicit KeyMatcher(M m) : matcher_for_key_(m) {}
+
+ template <typename PairType>
+ operator Matcher<PairType>() const {
return Matcher<PairType>(
new KeyMatcherImpl<const PairType&>(matcher_for_key_));
- }
-
- private:
- const M matcher_for_key_;
-};
-
+ }
+
+ private:
+ const M matcher_for_key_;
+};
+
// Implements polymorphic Address(matcher_for_address).
template <typename InnerMatcher>
class AddressMatcher {
@@ -2870,109 +2870,109 @@ class AddressMatcher {
const InnerMatcher matcher_;
};
-// Implements Pair(first_matcher, second_matcher) for the given argument pair
-// type with its two matchers. See Pair() function below.
-template <typename PairType>
-class PairMatcherImpl : public MatcherInterface<PairType> {
- public:
- typedef GTEST_REMOVE_REFERENCE_AND_CONST_(PairType) RawPairType;
- typedef typename RawPairType::first_type FirstType;
- typedef typename RawPairType::second_type SecondType;
-
- template <typename FirstMatcher, typename SecondMatcher>
- PairMatcherImpl(FirstMatcher first_matcher, SecondMatcher second_matcher)
- : first_matcher_(
- testing::SafeMatcherCast<const FirstType&>(first_matcher)),
- second_matcher_(
- testing::SafeMatcherCast<const SecondType&>(second_matcher)) {
- }
-
- // Describes what this matcher does.
+// Implements Pair(first_matcher, second_matcher) for the given argument pair
+// type with its two matchers. See Pair() function below.
+template <typename PairType>
+class PairMatcherImpl : public MatcherInterface<PairType> {
+ public:
+ typedef GTEST_REMOVE_REFERENCE_AND_CONST_(PairType) RawPairType;
+ typedef typename RawPairType::first_type FirstType;
+ typedef typename RawPairType::second_type SecondType;
+
+ template <typename FirstMatcher, typename SecondMatcher>
+ PairMatcherImpl(FirstMatcher first_matcher, SecondMatcher second_matcher)
+ : first_matcher_(
+ testing::SafeMatcherCast<const FirstType&>(first_matcher)),
+ second_matcher_(
+ testing::SafeMatcherCast<const SecondType&>(second_matcher)) {
+ }
+
+ // Describes what this matcher does.
void DescribeTo(::std::ostream* os) const override {
- *os << "has a first field that ";
- first_matcher_.DescribeTo(os);
- *os << ", and has a second field that ";
- second_matcher_.DescribeTo(os);
- }
-
- // Describes what the negation of this matcher does.
+ *os << "has a first field that ";
+ first_matcher_.DescribeTo(os);
+ *os << ", and has a second field that ";
+ second_matcher_.DescribeTo(os);
+ }
+
+ // Describes what the negation of this matcher does.
void DescribeNegationTo(::std::ostream* os) const override {
- *os << "has a first field that ";
- first_matcher_.DescribeNegationTo(os);
- *os << ", or has a second field that ";
- second_matcher_.DescribeNegationTo(os);
- }
-
+ *os << "has a first field that ";
+ first_matcher_.DescribeNegationTo(os);
+ *os << ", or has a second field that ";
+ second_matcher_.DescribeNegationTo(os);
+ }
+
// Returns true if and only if 'a_pair.first' matches first_matcher and
// 'a_pair.second' matches second_matcher.
bool MatchAndExplain(PairType a_pair,
MatchResultListener* listener) const override {
- if (!listener->IsInterested()) {
- // If the listener is not interested, we don't need to construct the
- // explanation.
+ if (!listener->IsInterested()) {
+ // If the listener is not interested, we don't need to construct the
+ // explanation.
return first_matcher_.Matches(pair_getters::First(a_pair, Rank0())) &&
second_matcher_.Matches(pair_getters::Second(a_pair, Rank0()));
- }
- StringMatchResultListener first_inner_listener;
+ }
+ StringMatchResultListener first_inner_listener;
if (!first_matcher_.MatchAndExplain(pair_getters::First(a_pair, Rank0()),
- &first_inner_listener)) {
- *listener << "whose first field does not match";
- PrintIfNotEmpty(first_inner_listener.str(), listener->stream());
- return false;
- }
- StringMatchResultListener second_inner_listener;
+ &first_inner_listener)) {
+ *listener << "whose first field does not match";
+ PrintIfNotEmpty(first_inner_listener.str(), listener->stream());
+ return false;
+ }
+ StringMatchResultListener second_inner_listener;
if (!second_matcher_.MatchAndExplain(pair_getters::Second(a_pair, Rank0()),
- &second_inner_listener)) {
- *listener << "whose second field does not match";
- PrintIfNotEmpty(second_inner_listener.str(), listener->stream());
- return false;
- }
- ExplainSuccess(first_inner_listener.str(), second_inner_listener.str(),
- listener);
- return true;
- }
-
- private:
+ &second_inner_listener)) {
+ *listener << "whose second field does not match";
+ PrintIfNotEmpty(second_inner_listener.str(), listener->stream());
+ return false;
+ }
+ ExplainSuccess(first_inner_listener.str(), second_inner_listener.str(),
+ listener);
+ return true;
+ }
+
+ private:
void ExplainSuccess(const std::string& first_explanation,
const std::string& second_explanation,
- MatchResultListener* listener) const {
- *listener << "whose both fields match";
- if (first_explanation != "") {
- *listener << ", where the first field is a value " << first_explanation;
- }
- if (second_explanation != "") {
- *listener << ", ";
- if (first_explanation != "") {
- *listener << "and ";
- } else {
- *listener << "where ";
- }
- *listener << "the second field is a value " << second_explanation;
- }
- }
-
- const Matcher<const FirstType&> first_matcher_;
- const Matcher<const SecondType&> second_matcher_;
-};
-
-// Implements polymorphic Pair(first_matcher, second_matcher).
-template <typename FirstMatcher, typename SecondMatcher>
-class PairMatcher {
- public:
- PairMatcher(FirstMatcher first_matcher, SecondMatcher second_matcher)
- : first_matcher_(first_matcher), second_matcher_(second_matcher) {}
-
- template <typename PairType>
- operator Matcher<PairType> () const {
+ MatchResultListener* listener) const {
+ *listener << "whose both fields match";
+ if (first_explanation != "") {
+ *listener << ", where the first field is a value " << first_explanation;
+ }
+ if (second_explanation != "") {
+ *listener << ", ";
+ if (first_explanation != "") {
+ *listener << "and ";
+ } else {
+ *listener << "where ";
+ }
+ *listener << "the second field is a value " << second_explanation;
+ }
+ }
+
+ const Matcher<const FirstType&> first_matcher_;
+ const Matcher<const SecondType&> second_matcher_;
+};
+
+// Implements polymorphic Pair(first_matcher, second_matcher).
+template <typename FirstMatcher, typename SecondMatcher>
+class PairMatcher {
+ public:
+ PairMatcher(FirstMatcher first_matcher, SecondMatcher second_matcher)
+ : first_matcher_(first_matcher), second_matcher_(second_matcher) {}
+
+ template <typename PairType>
+ operator Matcher<PairType> () const {
return Matcher<PairType>(
new PairMatcherImpl<const PairType&>(first_matcher_, second_matcher_));
- }
-
- private:
- const FirstMatcher first_matcher_;
- const SecondMatcher second_matcher_;
-};
-
+ }
+
+ private:
+ const FirstMatcher first_matcher_;
+ const SecondMatcher second_matcher_;
+};
+
template <typename T, size_t... I>
auto UnpackStructImpl(const T& t, IndexSequence<I...>, int)
-> decltype(std::tie(get<I>(t)...)) {
@@ -3170,203 +3170,203 @@ class FieldsAreMatcher {
std::tuple<Inner...> matchers_;
};
-// Implements ElementsAre() and ElementsAreArray().
-template <typename Container>
-class ElementsAreMatcherImpl : public MatcherInterface<Container> {
- public:
- typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer;
- typedef internal::StlContainerView<RawContainer> View;
- typedef typename View::type StlContainer;
- typedef typename View::const_reference StlContainerReference;
- typedef typename StlContainer::value_type Element;
-
- // Constructs the matcher from a sequence of element values or
- // element matchers.
- template <typename InputIter>
- ElementsAreMatcherImpl(InputIter first, InputIter last) {
- while (first != last) {
- matchers_.push_back(MatcherCast<const Element&>(*first++));
- }
- }
-
- // Describes what this matcher does.
+// Implements ElementsAre() and ElementsAreArray().
+template <typename Container>
+class ElementsAreMatcherImpl : public MatcherInterface<Container> {
+ public:
+ typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer;
+ typedef internal::StlContainerView<RawContainer> View;
+ typedef typename View::type StlContainer;
+ typedef typename View::const_reference StlContainerReference;
+ typedef typename StlContainer::value_type Element;
+
+ // Constructs the matcher from a sequence of element values or
+ // element matchers.
+ template <typename InputIter>
+ ElementsAreMatcherImpl(InputIter first, InputIter last) {
+ while (first != last) {
+ matchers_.push_back(MatcherCast<const Element&>(*first++));
+ }
+ }
+
+ // Describes what this matcher does.
void DescribeTo(::std::ostream* os) const override {
- if (count() == 0) {
- *os << "is empty";
- } else if (count() == 1) {
- *os << "has 1 element that ";
- matchers_[0].DescribeTo(os);
- } else {
- *os << "has " << Elements(count()) << " where\n";
- for (size_t i = 0; i != count(); ++i) {
- *os << "element #" << i << " ";
- matchers_[i].DescribeTo(os);
- if (i + 1 < count()) {
- *os << ",\n";
- }
- }
- }
- }
-
- // Describes what the negation of this matcher does.
+ if (count() == 0) {
+ *os << "is empty";
+ } else if (count() == 1) {
+ *os << "has 1 element that ";
+ matchers_[0].DescribeTo(os);
+ } else {
+ *os << "has " << Elements(count()) << " where\n";
+ for (size_t i = 0; i != count(); ++i) {
+ *os << "element #" << i << " ";
+ matchers_[i].DescribeTo(os);
+ if (i + 1 < count()) {
+ *os << ",\n";
+ }
+ }
+ }
+ }
+
+ // Describes what the negation of this matcher does.
void DescribeNegationTo(::std::ostream* os) const override {
- if (count() == 0) {
- *os << "isn't empty";
- return;
- }
-
- *os << "doesn't have " << Elements(count()) << ", or\n";
- for (size_t i = 0; i != count(); ++i) {
- *os << "element #" << i << " ";
- matchers_[i].DescribeNegationTo(os);
- if (i + 1 < count()) {
- *os << ", or\n";
- }
- }
- }
-
+ if (count() == 0) {
+ *os << "isn't empty";
+ return;
+ }
+
+ *os << "doesn't have " << Elements(count()) << ", or\n";
+ for (size_t i = 0; i != count(); ++i) {
+ *os << "element #" << i << " ";
+ matchers_[i].DescribeNegationTo(os);
+ if (i + 1 < count()) {
+ *os << ", or\n";
+ }
+ }
+ }
+
bool MatchAndExplain(Container container,
MatchResultListener* listener) const override {
- // To work with stream-like "containers", we must only walk
- // through the elements in one pass.
-
- const bool listener_interested = listener->IsInterested();
-
- // explanations[i] is the explanation of the element at index i.
+ // To work with stream-like "containers", we must only walk
+ // through the elements in one pass.
+
+ const bool listener_interested = listener->IsInterested();
+
+ // explanations[i] is the explanation of the element at index i.
::std::vector<std::string> explanations(count());
- StlContainerReference stl_container = View::ConstReference(container);
- typename StlContainer::const_iterator it = stl_container.begin();
- size_t exam_pos = 0;
- bool mismatch_found = false; // Have we found a mismatched element yet?
-
- // Go through the elements and matchers in pairs, until we reach
- // the end of either the elements or the matchers, or until we find a
- // mismatch.
- for (; it != stl_container.end() && exam_pos != count(); ++it, ++exam_pos) {
- bool match; // Does the current element match the current matcher?
- if (listener_interested) {
- StringMatchResultListener s;
- match = matchers_[exam_pos].MatchAndExplain(*it, &s);
- explanations[exam_pos] = s.str();
- } else {
- match = matchers_[exam_pos].Matches(*it);
- }
-
- if (!match) {
- mismatch_found = true;
- break;
- }
- }
- // If mismatch_found is true, 'exam_pos' is the index of the mismatch.
-
- // Find how many elements the actual container has. We avoid
- // calling size() s.t. this code works for stream-like "containers"
- // that don't define size().
- size_t actual_count = exam_pos;
- for (; it != stl_container.end(); ++it) {
- ++actual_count;
- }
-
- if (actual_count != count()) {
- // The element count doesn't match. If the container is empty,
- // there's no need to explain anything as Google Mock already
- // prints the empty container. Otherwise we just need to show
- // how many elements there actually are.
- if (listener_interested && (actual_count != 0)) {
- *listener << "which has " << Elements(actual_count);
- }
- return false;
- }
-
- if (mismatch_found) {
- // The element count matches, but the exam_pos-th element doesn't match.
- if (listener_interested) {
- *listener << "whose element #" << exam_pos << " doesn't match";
- PrintIfNotEmpty(explanations[exam_pos], listener->stream());
- }
- return false;
- }
-
- // Every element matches its expectation. We need to explain why
- // (the obvious ones can be skipped).
- if (listener_interested) {
- bool reason_printed = false;
- for (size_t i = 0; i != count(); ++i) {
+ StlContainerReference stl_container = View::ConstReference(container);
+ typename StlContainer::const_iterator it = stl_container.begin();
+ size_t exam_pos = 0;
+ bool mismatch_found = false; // Have we found a mismatched element yet?
+
+ // Go through the elements and matchers in pairs, until we reach
+ // the end of either the elements or the matchers, or until we find a
+ // mismatch.
+ for (; it != stl_container.end() && exam_pos != count(); ++it, ++exam_pos) {
+ bool match; // Does the current element match the current matcher?
+ if (listener_interested) {
+ StringMatchResultListener s;
+ match = matchers_[exam_pos].MatchAndExplain(*it, &s);
+ explanations[exam_pos] = s.str();
+ } else {
+ match = matchers_[exam_pos].Matches(*it);
+ }
+
+ if (!match) {
+ mismatch_found = true;
+ break;
+ }
+ }
+ // If mismatch_found is true, 'exam_pos' is the index of the mismatch.
+
+ // Find how many elements the actual container has. We avoid
+ // calling size() s.t. this code works for stream-like "containers"
+ // that don't define size().
+ size_t actual_count = exam_pos;
+ for (; it != stl_container.end(); ++it) {
+ ++actual_count;
+ }
+
+ if (actual_count != count()) {
+ // The element count doesn't match. If the container is empty,
+ // there's no need to explain anything as Google Mock already
+ // prints the empty container. Otherwise we just need to show
+ // how many elements there actually are.
+ if (listener_interested && (actual_count != 0)) {
+ *listener << "which has " << Elements(actual_count);
+ }
+ return false;
+ }
+
+ if (mismatch_found) {
+ // The element count matches, but the exam_pos-th element doesn't match.
+ if (listener_interested) {
+ *listener << "whose element #" << exam_pos << " doesn't match";
+ PrintIfNotEmpty(explanations[exam_pos], listener->stream());
+ }
+ return false;
+ }
+
+ // Every element matches its expectation. We need to explain why
+ // (the obvious ones can be skipped).
+ if (listener_interested) {
+ bool reason_printed = false;
+ for (size_t i = 0; i != count(); ++i) {
const std::string& s = explanations[i];
- if (!s.empty()) {
- if (reason_printed) {
- *listener << ",\nand ";
- }
- *listener << "whose element #" << i << " matches, " << s;
- reason_printed = true;
- }
- }
- }
- return true;
- }
-
- private:
- static Message Elements(size_t count) {
- return Message() << count << (count == 1 ? " element" : " elements");
- }
-
- size_t count() const { return matchers_.size(); }
-
- ::std::vector<Matcher<const Element&> > matchers_;
-};
-
-// Connectivity matrix of (elements X matchers), in element-major order.
-// Initially, there are no edges.
-// Use NextGraph() to iterate over all possible edge configurations.
-// Use Randomize() to generate a random edge configuration.
-class GTEST_API_ MatchMatrix {
- public:
- MatchMatrix(size_t num_elements, size_t num_matchers)
- : num_elements_(num_elements),
- num_matchers_(num_matchers),
- matched_(num_elements_* num_matchers_, 0) {
- }
-
- size_t LhsSize() const { return num_elements_; }
- size_t RhsSize() const { return num_matchers_; }
- bool HasEdge(size_t ilhs, size_t irhs) const {
- return matched_[SpaceIndex(ilhs, irhs)] == 1;
- }
- void SetEdge(size_t ilhs, size_t irhs, bool b) {
- matched_[SpaceIndex(ilhs, irhs)] = b ? 1 : 0;
- }
-
- // Treating the connectivity matrix as a (LhsSize()*RhsSize())-bit number,
- // adds 1 to that number; returns false if incrementing the graph left it
- // empty.
- bool NextGraph();
-
- void Randomize();
-
+ if (!s.empty()) {
+ if (reason_printed) {
+ *listener << ",\nand ";
+ }
+ *listener << "whose element #" << i << " matches, " << s;
+ reason_printed = true;
+ }
+ }
+ }
+ return true;
+ }
+
+ private:
+ static Message Elements(size_t count) {
+ return Message() << count << (count == 1 ? " element" : " elements");
+ }
+
+ size_t count() const { return matchers_.size(); }
+
+ ::std::vector<Matcher<const Element&> > matchers_;
+};
+
+// Connectivity matrix of (elements X matchers), in element-major order.
+// Initially, there are no edges.
+// Use NextGraph() to iterate over all possible edge configurations.
+// Use Randomize() to generate a random edge configuration.
+class GTEST_API_ MatchMatrix {
+ public:
+ MatchMatrix(size_t num_elements, size_t num_matchers)
+ : num_elements_(num_elements),
+ num_matchers_(num_matchers),
+ matched_(num_elements_* num_matchers_, 0) {
+ }
+
+ size_t LhsSize() const { return num_elements_; }
+ size_t RhsSize() const { return num_matchers_; }
+ bool HasEdge(size_t ilhs, size_t irhs) const {
+ return matched_[SpaceIndex(ilhs, irhs)] == 1;
+ }
+ void SetEdge(size_t ilhs, size_t irhs, bool b) {
+ matched_[SpaceIndex(ilhs, irhs)] = b ? 1 : 0;
+ }
+
+ // Treating the connectivity matrix as a (LhsSize()*RhsSize())-bit number,
+ // adds 1 to that number; returns false if incrementing the graph left it
+ // empty.
+ bool NextGraph();
+
+ void Randomize();
+
std::string DebugString() const;
-
- private:
- size_t SpaceIndex(size_t ilhs, size_t irhs) const {
- return ilhs * num_matchers_ + irhs;
- }
-
- size_t num_elements_;
- size_t num_matchers_;
-
- // Each element is a char interpreted as bool. They are stored as a
- // flattened array in lhs-major order, use 'SpaceIndex()' to translate
- // a (ilhs, irhs) matrix coordinate into an offset.
- ::std::vector<char> matched_;
-};
-
-typedef ::std::pair<size_t, size_t> ElementMatcherPair;
-typedef ::std::vector<ElementMatcherPair> ElementMatcherPairs;
-
-// Returns a maximum bipartite matching for the specified graph 'g'.
-// The matching is represented as a vector of {element, matcher} pairs.
-GTEST_API_ ElementMatcherPairs
-FindMaxBipartiteMatching(const MatchMatrix& g);
-
+
+ private:
+ size_t SpaceIndex(size_t ilhs, size_t irhs) const {
+ return ilhs * num_matchers_ + irhs;
+ }
+
+ size_t num_elements_;
+ size_t num_matchers_;
+
+ // Each element is a char interpreted as bool. They are stored as a
+ // flattened array in lhs-major order, use 'SpaceIndex()' to translate
+ // a (ilhs, irhs) matrix coordinate into an offset.
+ ::std::vector<char> matched_;
+};
+
+typedef ::std::pair<size_t, size_t> ElementMatcherPair;
+typedef ::std::vector<ElementMatcherPair> ElementMatcherPairs;
+
+// Returns a maximum bipartite matching for the specified graph 'g'.
+// The matching is represented as a vector of {element, matcher} pairs.
+GTEST_API_ ElementMatcherPairs
+FindMaxBipartiteMatching(const MatchMatrix& g);
+
struct UnorderedMatcherRequire {
enum Flags {
Superset = 1 << 0,
@@ -3374,96 +3374,96 @@ struct UnorderedMatcherRequire {
ExactMatch = Superset | Subset,
};
};
-
-// Untyped base class for implementing UnorderedElementsAre. By
-// putting logic that's not specific to the element type here, we
-// reduce binary bloat and increase compilation speed.
-class GTEST_API_ UnorderedElementsAreMatcherImplBase {
- protected:
+
+// Untyped base class for implementing UnorderedElementsAre. By
+// putting logic that's not specific to the element type here, we
+// reduce binary bloat and increase compilation speed.
+class GTEST_API_ UnorderedElementsAreMatcherImplBase {
+ protected:
explicit UnorderedElementsAreMatcherImplBase(
UnorderedMatcherRequire::Flags matcher_flags)
: match_flags_(matcher_flags) {}
- // A vector of matcher describers, one for each element matcher.
- // Does not own the describers (and thus can be used only when the
- // element matchers are alive).
- typedef ::std::vector<const MatcherDescriberInterface*> MatcherDescriberVec;
-
- // Describes this UnorderedElementsAre matcher.
- void DescribeToImpl(::std::ostream* os) const;
-
- // Describes the negation of this UnorderedElementsAre matcher.
- void DescribeNegationToImpl(::std::ostream* os) const;
-
+ // A vector of matcher describers, one for each element matcher.
+ // Does not own the describers (and thus can be used only when the
+ // element matchers are alive).
+ typedef ::std::vector<const MatcherDescriberInterface*> MatcherDescriberVec;
+
+ // Describes this UnorderedElementsAre matcher.
+ void DescribeToImpl(::std::ostream* os) const;
+
+ // Describes the negation of this UnorderedElementsAre matcher.
+ void DescribeNegationToImpl(::std::ostream* os) const;
+
bool VerifyMatchMatrix(const ::std::vector<std::string>& element_printouts,
const MatchMatrix& matrix,
MatchResultListener* listener) const;
-
+
bool FindPairing(const MatchMatrix& matrix,
MatchResultListener* listener) const;
- MatcherDescriberVec& matcher_describers() {
- return matcher_describers_;
- }
-
- static Message Elements(size_t n) {
- return Message() << n << " element" << (n == 1 ? "" : "s");
- }
-
+ MatcherDescriberVec& matcher_describers() {
+ return matcher_describers_;
+ }
+
+ static Message Elements(size_t n) {
+ return Message() << n << " element" << (n == 1 ? "" : "s");
+ }
+
UnorderedMatcherRequire::Flags match_flags() const { return match_flags_; }
- private:
+ private:
UnorderedMatcherRequire::Flags match_flags_;
- MatcherDescriberVec matcher_describers_;
-};
-
+ MatcherDescriberVec matcher_describers_;
+};
+
// Implements UnorderedElementsAre, UnorderedElementsAreArray, IsSubsetOf, and
// IsSupersetOf.
-template <typename Container>
-class UnorderedElementsAreMatcherImpl
- : public MatcherInterface<Container>,
- public UnorderedElementsAreMatcherImplBase {
- public:
- typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer;
- typedef internal::StlContainerView<RawContainer> View;
- typedef typename View::type StlContainer;
- typedef typename View::const_reference StlContainerReference;
- typedef typename StlContainer::const_iterator StlContainerConstIterator;
- typedef typename StlContainer::value_type Element;
-
- template <typename InputIter>
+template <typename Container>
+class UnorderedElementsAreMatcherImpl
+ : public MatcherInterface<Container>,
+ public UnorderedElementsAreMatcherImplBase {
+ public:
+ typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer;
+ typedef internal::StlContainerView<RawContainer> View;
+ typedef typename View::type StlContainer;
+ typedef typename View::const_reference StlContainerReference;
+ typedef typename StlContainer::const_iterator StlContainerConstIterator;
+ typedef typename StlContainer::value_type Element;
+
+ template <typename InputIter>
UnorderedElementsAreMatcherImpl(UnorderedMatcherRequire::Flags matcher_flags,
InputIter first, InputIter last)
: UnorderedElementsAreMatcherImplBase(matcher_flags) {
- for (; first != last; ++first) {
- matchers_.push_back(MatcherCast<const Element&>(*first));
- }
+ for (; first != last; ++first) {
+ matchers_.push_back(MatcherCast<const Element&>(*first));
+ }
for (const auto& m : matchers_) {
matcher_describers().push_back(m.GetDescriber());
}
- }
-
- // Describes what this matcher does.
+ }
+
+ // Describes what this matcher does.
void DescribeTo(::std::ostream* os) const override {
- return UnorderedElementsAreMatcherImplBase::DescribeToImpl(os);
- }
-
- // Describes what the negation of this matcher does.
+ return UnorderedElementsAreMatcherImplBase::DescribeToImpl(os);
+ }
+
+ // Describes what the negation of this matcher does.
void DescribeNegationTo(::std::ostream* os) const override {
- return UnorderedElementsAreMatcherImplBase::DescribeNegationToImpl(os);
- }
-
+ return UnorderedElementsAreMatcherImplBase::DescribeNegationToImpl(os);
+ }
+
bool MatchAndExplain(Container container,
MatchResultListener* listener) const override {
- StlContainerReference stl_container = View::ConstReference(container);
+ StlContainerReference stl_container = View::ConstReference(container);
::std::vector<std::string> element_printouts;
MatchMatrix matrix =
AnalyzeElements(stl_container.begin(), stl_container.end(),
&element_printouts, listener);
-
+
if (matrix.LhsSize() == 0 && matrix.RhsSize() == 0) {
- return true;
- }
+ return true;
+ }
if (match_flags() == UnorderedMatcherRequire::ExactMatch) {
if (matrix.LhsSize() != matrix.RhsSize()) {
@@ -3475,237 +3475,237 @@ class UnorderedElementsAreMatcherImpl
*listener << "which has " << Elements(matrix.LhsSize());
}
return false;
- }
- }
-
+ }
+ }
+
return VerifyMatchMatrix(element_printouts, matrix, listener) &&
- FindPairing(matrix, listener);
- }
-
- private:
- template <typename ElementIter>
- MatchMatrix AnalyzeElements(ElementIter elem_first, ElementIter elem_last,
+ FindPairing(matrix, listener);
+ }
+
+ private:
+ template <typename ElementIter>
+ MatchMatrix AnalyzeElements(ElementIter elem_first, ElementIter elem_last,
::std::vector<std::string>* element_printouts,
- MatchResultListener* listener) const {
- element_printouts->clear();
- ::std::vector<char> did_match;
- size_t num_elements = 0;
+ MatchResultListener* listener) const {
+ element_printouts->clear();
+ ::std::vector<char> did_match;
+ size_t num_elements = 0;
DummyMatchResultListener dummy;
- for (; elem_first != elem_last; ++num_elements, ++elem_first) {
- if (listener->IsInterested()) {
- element_printouts->push_back(PrintToString(*elem_first));
- }
- for (size_t irhs = 0; irhs != matchers_.size(); ++irhs) {
+ for (; elem_first != elem_last; ++num_elements, ++elem_first) {
+ if (listener->IsInterested()) {
+ element_printouts->push_back(PrintToString(*elem_first));
+ }
+ for (size_t irhs = 0; irhs != matchers_.size(); ++irhs) {
did_match.push_back(
matchers_[irhs].MatchAndExplain(*elem_first, &dummy));
- }
- }
-
- MatchMatrix matrix(num_elements, matchers_.size());
- ::std::vector<char>::const_iterator did_match_iter = did_match.begin();
- for (size_t ilhs = 0; ilhs != num_elements; ++ilhs) {
- for (size_t irhs = 0; irhs != matchers_.size(); ++irhs) {
- matrix.SetEdge(ilhs, irhs, *did_match_iter++ != 0);
- }
- }
- return matrix;
- }
-
+ }
+ }
+
+ MatchMatrix matrix(num_elements, matchers_.size());
+ ::std::vector<char>::const_iterator did_match_iter = did_match.begin();
+ for (size_t ilhs = 0; ilhs != num_elements; ++ilhs) {
+ for (size_t irhs = 0; irhs != matchers_.size(); ++irhs) {
+ matrix.SetEdge(ilhs, irhs, *did_match_iter++ != 0);
+ }
+ }
+ return matrix;
+ }
+
::std::vector<Matcher<const Element&> > matchers_;
-};
-
-// Functor for use in TransformTuple.
-// Performs MatcherCast<Target> on an input argument of any type.
-template <typename Target>
-struct CastAndAppendTransform {
- template <typename Arg>
- Matcher<Target> operator()(const Arg& a) const {
- return MatcherCast<Target>(a);
- }
-};
-
-// Implements UnorderedElementsAre.
-template <typename MatcherTuple>
-class UnorderedElementsAreMatcher {
- public:
- explicit UnorderedElementsAreMatcher(const MatcherTuple& args)
- : matchers_(args) {}
-
- template <typename Container>
- operator Matcher<Container>() const {
- typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer;
- typedef typename internal::StlContainerView<RawContainer>::type View;
- typedef typename View::value_type Element;
- typedef ::std::vector<Matcher<const Element&> > MatcherVec;
- MatcherVec matchers;
+};
+
+// Functor for use in TransformTuple.
+// Performs MatcherCast<Target> on an input argument of any type.
+template <typename Target>
+struct CastAndAppendTransform {
+ template <typename Arg>
+ Matcher<Target> operator()(const Arg& a) const {
+ return MatcherCast<Target>(a);
+ }
+};
+
+// Implements UnorderedElementsAre.
+template <typename MatcherTuple>
+class UnorderedElementsAreMatcher {
+ public:
+ explicit UnorderedElementsAreMatcher(const MatcherTuple& args)
+ : matchers_(args) {}
+
+ template <typename Container>
+ operator Matcher<Container>() const {
+ typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer;
+ typedef typename internal::StlContainerView<RawContainer>::type View;
+ typedef typename View::value_type Element;
+ typedef ::std::vector<Matcher<const Element&> > MatcherVec;
+ MatcherVec matchers;
matchers.reserve(::std::tuple_size<MatcherTuple>::value);
- TransformTupleValues(CastAndAppendTransform<const Element&>(), matchers_,
- ::std::back_inserter(matchers));
+ TransformTupleValues(CastAndAppendTransform<const Element&>(), matchers_,
+ ::std::back_inserter(matchers));
return Matcher<Container>(
new UnorderedElementsAreMatcherImpl<const Container&>(
UnorderedMatcherRequire::ExactMatch, matchers.begin(),
matchers.end()));
- }
-
- private:
- const MatcherTuple matchers_;
-};
-
-// Implements ElementsAre.
-template <typename MatcherTuple>
-class ElementsAreMatcher {
- public:
- explicit ElementsAreMatcher(const MatcherTuple& args) : matchers_(args) {}
-
- template <typename Container>
- operator Matcher<Container>() const {
+ }
+
+ private:
+ const MatcherTuple matchers_;
+};
+
+// Implements ElementsAre.
+template <typename MatcherTuple>
+class ElementsAreMatcher {
+ public:
+ explicit ElementsAreMatcher(const MatcherTuple& args) : matchers_(args) {}
+
+ template <typename Container>
+ operator Matcher<Container>() const {
GTEST_COMPILE_ASSERT_(
!IsHashTable<GTEST_REMOVE_REFERENCE_AND_CONST_(Container)>::value ||
::std::tuple_size<MatcherTuple>::value < 2,
use_UnorderedElementsAre_with_hash_tables);
- typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer;
- typedef typename internal::StlContainerView<RawContainer>::type View;
- typedef typename View::value_type Element;
- typedef ::std::vector<Matcher<const Element&> > MatcherVec;
- MatcherVec matchers;
+ typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer;
+ typedef typename internal::StlContainerView<RawContainer>::type View;
+ typedef typename View::value_type Element;
+ typedef ::std::vector<Matcher<const Element&> > MatcherVec;
+ MatcherVec matchers;
matchers.reserve(::std::tuple_size<MatcherTuple>::value);
- TransformTupleValues(CastAndAppendTransform<const Element&>(), matchers_,
- ::std::back_inserter(matchers));
+ TransformTupleValues(CastAndAppendTransform<const Element&>(), matchers_,
+ ::std::back_inserter(matchers));
return Matcher<Container>(new ElementsAreMatcherImpl<const Container&>(
matchers.begin(), matchers.end()));
- }
-
- private:
- const MatcherTuple matchers_;
-};
-
+ }
+
+ private:
+ const MatcherTuple matchers_;
+};
+
// Implements UnorderedElementsAreArray(), IsSubsetOf(), and IsSupersetOf().
-template <typename T>
-class UnorderedElementsAreArrayMatcher {
- public:
- template <typename Iter>
+template <typename T>
+class UnorderedElementsAreArrayMatcher {
+ public:
+ template <typename Iter>
UnorderedElementsAreArrayMatcher(UnorderedMatcherRequire::Flags match_flags,
Iter first, Iter last)
: match_flags_(match_flags), matchers_(first, last) {}
-
- template <typename Container>
- operator Matcher<Container>() const {
+
+ template <typename Container>
+ operator Matcher<Container>() const {
return Matcher<Container>(
new UnorderedElementsAreMatcherImpl<const Container&>(
match_flags_, matchers_.begin(), matchers_.end()));
- }
-
- private:
+ }
+
+ private:
UnorderedMatcherRequire::Flags match_flags_;
- ::std::vector<T> matchers_;
-};
-
-// Implements ElementsAreArray().
-template <typename T>
-class ElementsAreArrayMatcher {
- public:
- template <typename Iter>
- ElementsAreArrayMatcher(Iter first, Iter last) : matchers_(first, last) {}
-
- template <typename Container>
- operator Matcher<Container>() const {
+ ::std::vector<T> matchers_;
+};
+
+// Implements ElementsAreArray().
+template <typename T>
+class ElementsAreArrayMatcher {
+ public:
+ template <typename Iter>
+ ElementsAreArrayMatcher(Iter first, Iter last) : matchers_(first, last) {}
+
+ template <typename Container>
+ operator Matcher<Container>() const {
GTEST_COMPILE_ASSERT_(
!IsHashTable<GTEST_REMOVE_REFERENCE_AND_CONST_(Container)>::value,
use_UnorderedElementsAreArray_with_hash_tables);
return Matcher<Container>(new ElementsAreMatcherImpl<const Container&>(
- matchers_.begin(), matchers_.end()));
- }
-
- private:
- const ::std::vector<T> matchers_;
-};
-
-// Given a 2-tuple matcher tm of type Tuple2Matcher and a value second
-// of type Second, BoundSecondMatcher<Tuple2Matcher, Second>(tm,
+ matchers_.begin(), matchers_.end()));
+ }
+
+ private:
+ const ::std::vector<T> matchers_;
+};
+
+// Given a 2-tuple matcher tm of type Tuple2Matcher and a value second
+// of type Second, BoundSecondMatcher<Tuple2Matcher, Second>(tm,
// second) is a polymorphic matcher that matches a value x if and only if
// tm matches tuple (x, second). Useful for implementing
-// UnorderedPointwise() in terms of UnorderedElementsAreArray().
-//
-// BoundSecondMatcher is copyable and assignable, as we need to put
-// instances of this class in a vector when implementing
-// UnorderedPointwise().
-template <typename Tuple2Matcher, typename Second>
-class BoundSecondMatcher {
- public:
- BoundSecondMatcher(const Tuple2Matcher& tm, const Second& second)
- : tuple2_matcher_(tm), second_value_(second) {}
-
+// UnorderedPointwise() in terms of UnorderedElementsAreArray().
+//
+// BoundSecondMatcher is copyable and assignable, as we need to put
+// instances of this class in a vector when implementing
+// UnorderedPointwise().
+template <typename Tuple2Matcher, typename Second>
+class BoundSecondMatcher {
+ public:
+ BoundSecondMatcher(const Tuple2Matcher& tm, const Second& second)
+ : tuple2_matcher_(tm), second_value_(second) {}
+
BoundSecondMatcher(const BoundSecondMatcher& other) = default;
- template <typename T>
- operator Matcher<T>() const {
- return MakeMatcher(new Impl<T>(tuple2_matcher_, second_value_));
- }
-
- // We have to define this for UnorderedPointwise() to compile in
- // C++98 mode, as it puts BoundSecondMatcher instances in a vector,
- // which requires the elements to be assignable in C++98. The
- // compiler cannot generate the operator= for us, as Tuple2Matcher
- // and Second may not be assignable.
- //
- // However, this should never be called, so the implementation just
- // need to assert.
- void operator=(const BoundSecondMatcher& /*rhs*/) {
- GTEST_LOG_(FATAL) << "BoundSecondMatcher should never be assigned.";
- }
-
- private:
- template <typename T>
- class Impl : public MatcherInterface<T> {
- public:
+ template <typename T>
+ operator Matcher<T>() const {
+ return MakeMatcher(new Impl<T>(tuple2_matcher_, second_value_));
+ }
+
+ // We have to define this for UnorderedPointwise() to compile in
+ // C++98 mode, as it puts BoundSecondMatcher instances in a vector,
+ // which requires the elements to be assignable in C++98. The
+ // compiler cannot generate the operator= for us, as Tuple2Matcher
+ // and Second may not be assignable.
+ //
+ // However, this should never be called, so the implementation just
+ // need to assert.
+ void operator=(const BoundSecondMatcher& /*rhs*/) {
+ GTEST_LOG_(FATAL) << "BoundSecondMatcher should never be assigned.";
+ }
+
+ private:
+ template <typename T>
+ class Impl : public MatcherInterface<T> {
+ public:
typedef ::std::tuple<T, Second> ArgTuple;
-
- Impl(const Tuple2Matcher& tm, const Second& second)
- : mono_tuple2_matcher_(SafeMatcherCast<const ArgTuple&>(tm)),
- second_value_(second) {}
-
+
+ Impl(const Tuple2Matcher& tm, const Second& second)
+ : mono_tuple2_matcher_(SafeMatcherCast<const ArgTuple&>(tm)),
+ second_value_(second) {}
+
void DescribeTo(::std::ostream* os) const override {
- *os << "and ";
- UniversalPrint(second_value_, os);
- *os << " ";
- mono_tuple2_matcher_.DescribeTo(os);
- }
-
+ *os << "and ";
+ UniversalPrint(second_value_, os);
+ *os << " ";
+ mono_tuple2_matcher_.DescribeTo(os);
+ }
+
bool MatchAndExplain(T x, MatchResultListener* listener) const override {
- return mono_tuple2_matcher_.MatchAndExplain(ArgTuple(x, second_value_),
- listener);
- }
-
- private:
- const Matcher<const ArgTuple&> mono_tuple2_matcher_;
- const Second second_value_;
- };
-
- const Tuple2Matcher tuple2_matcher_;
- const Second second_value_;
-};
-
-// Given a 2-tuple matcher tm and a value second,
-// MatcherBindSecond(tm, second) returns a matcher that matches a
+ return mono_tuple2_matcher_.MatchAndExplain(ArgTuple(x, second_value_),
+ listener);
+ }
+
+ private:
+ const Matcher<const ArgTuple&> mono_tuple2_matcher_;
+ const Second second_value_;
+ };
+
+ const Tuple2Matcher tuple2_matcher_;
+ const Second second_value_;
+};
+
+// Given a 2-tuple matcher tm and a value second,
+// MatcherBindSecond(tm, second) returns a matcher that matches a
// value x if and only if tm matches tuple (x, second). Useful for
// implementing UnorderedPointwise() in terms of UnorderedElementsAreArray().
-template <typename Tuple2Matcher, typename Second>
-BoundSecondMatcher<Tuple2Matcher, Second> MatcherBindSecond(
- const Tuple2Matcher& tm, const Second& second) {
- return BoundSecondMatcher<Tuple2Matcher, Second>(tm, second);
-}
-
-// Returns the description for a matcher defined using the MATCHER*()
-// macro where the user-supplied description string is "", if
-// 'negation' is false; otherwise returns the description of the
-// negation of the matcher. 'param_values' contains a list of strings
-// that are the print-out of the matcher's parameters.
+template <typename Tuple2Matcher, typename Second>
+BoundSecondMatcher<Tuple2Matcher, Second> MatcherBindSecond(
+ const Tuple2Matcher& tm, const Second& second) {
+ return BoundSecondMatcher<Tuple2Matcher, Second>(tm, second);
+}
+
+// Returns the description for a matcher defined using the MATCHER*()
+// macro where the user-supplied description string is "", if
+// 'negation' is false; otherwise returns the description of the
+// negation of the matcher. 'param_values' contains a list of strings
+// that are the print-out of the matcher's parameters.
GTEST_API_ std::string FormatMatcherDescription(bool negation,
const char* matcher_name,
const Strings& param_values);
-
+
// Implements a matcher that checks the value of a optional<> type variable.
template <typename ValueMatcher>
class OptionalMatcher {
@@ -3955,61 +3955,61 @@ class ArgsMatcher {
InnerMatcher inner_matcher_;
};
-} // namespace internal
-
+} // namespace internal
+
// ElementsAreArray(iterator_first, iterator_last)
-// ElementsAreArray(pointer, count)
-// ElementsAreArray(array)
-// ElementsAreArray(container)
-// ElementsAreArray({ e1, e2, ..., en })
-//
-// The ElementsAreArray() functions are like ElementsAre(...), except
-// that they are given a homogeneous sequence rather than taking each
-// element as a function argument. The sequence can be specified as an
-// array, a pointer and count, a vector, an initializer list, or an
-// STL iterator range. In each of these cases, the underlying sequence
-// can be either a sequence of values or a sequence of matchers.
-//
-// All forms of ElementsAreArray() make a copy of the input matcher sequence.
-
-template <typename Iter>
-inline internal::ElementsAreArrayMatcher<
- typename ::std::iterator_traits<Iter>::value_type>
-ElementsAreArray(Iter first, Iter last) {
- typedef typename ::std::iterator_traits<Iter>::value_type T;
- return internal::ElementsAreArrayMatcher<T>(first, last);
-}
-
-template <typename T>
-inline internal::ElementsAreArrayMatcher<T> ElementsAreArray(
- const T* pointer, size_t count) {
- return ElementsAreArray(pointer, pointer + count);
-}
-
-template <typename T, size_t N>
-inline internal::ElementsAreArrayMatcher<T> ElementsAreArray(
- const T (&array)[N]) {
- return ElementsAreArray(array, N);
-}
-
-template <typename Container>
-inline internal::ElementsAreArrayMatcher<typename Container::value_type>
-ElementsAreArray(const Container& container) {
- return ElementsAreArray(container.begin(), container.end());
-}
-
-template <typename T>
-inline internal::ElementsAreArrayMatcher<T>
-ElementsAreArray(::std::initializer_list<T> xs) {
- return ElementsAreArray(xs.begin(), xs.end());
-}
-
+// ElementsAreArray(pointer, count)
+// ElementsAreArray(array)
+// ElementsAreArray(container)
+// ElementsAreArray({ e1, e2, ..., en })
+//
+// The ElementsAreArray() functions are like ElementsAre(...), except
+// that they are given a homogeneous sequence rather than taking each
+// element as a function argument. The sequence can be specified as an
+// array, a pointer and count, a vector, an initializer list, or an
+// STL iterator range. In each of these cases, the underlying sequence
+// can be either a sequence of values or a sequence of matchers.
+//
+// All forms of ElementsAreArray() make a copy of the input matcher sequence.
+
+template <typename Iter>
+inline internal::ElementsAreArrayMatcher<
+ typename ::std::iterator_traits<Iter>::value_type>
+ElementsAreArray(Iter first, Iter last) {
+ typedef typename ::std::iterator_traits<Iter>::value_type T;
+ return internal::ElementsAreArrayMatcher<T>(first, last);
+}
+
+template <typename T>
+inline internal::ElementsAreArrayMatcher<T> ElementsAreArray(
+ const T* pointer, size_t count) {
+ return ElementsAreArray(pointer, pointer + count);
+}
+
+template <typename T, size_t N>
+inline internal::ElementsAreArrayMatcher<T> ElementsAreArray(
+ const T (&array)[N]) {
+ return ElementsAreArray(array, N);
+}
+
+template <typename Container>
+inline internal::ElementsAreArrayMatcher<typename Container::value_type>
+ElementsAreArray(const Container& container) {
+ return ElementsAreArray(container.begin(), container.end());
+}
+
+template <typename T>
+inline internal::ElementsAreArrayMatcher<T>
+ElementsAreArray(::std::initializer_list<T> xs) {
+ return ElementsAreArray(xs.begin(), xs.end());
+}
+
// UnorderedElementsAreArray(iterator_first, iterator_last)
-// UnorderedElementsAreArray(pointer, count)
-// UnorderedElementsAreArray(array)
-// UnorderedElementsAreArray(container)
-// UnorderedElementsAreArray({ e1, e2, ..., en })
-//
+// UnorderedElementsAreArray(pointer, count)
+// UnorderedElementsAreArray(array)
+// UnorderedElementsAreArray(container)
+// UnorderedElementsAreArray({ e1, e2, ..., en })
+//
// UnorderedElementsAreArray() verifies that a bijective mapping onto a
// collection of matchers exists.
//
@@ -4017,189 +4017,189 @@ ElementsAreArray(::std::initializer_list<T> xs) {
// an initializer list, or an STL iterator range. In each of these cases, the
// underlying matchers can be either values or matchers.
-template <typename Iter>
-inline internal::UnorderedElementsAreArrayMatcher<
- typename ::std::iterator_traits<Iter>::value_type>
-UnorderedElementsAreArray(Iter first, Iter last) {
- typedef typename ::std::iterator_traits<Iter>::value_type T;
+template <typename Iter>
+inline internal::UnorderedElementsAreArrayMatcher<
+ typename ::std::iterator_traits<Iter>::value_type>
+UnorderedElementsAreArray(Iter first, Iter last) {
+ typedef typename ::std::iterator_traits<Iter>::value_type T;
return internal::UnorderedElementsAreArrayMatcher<T>(
internal::UnorderedMatcherRequire::ExactMatch, first, last);
-}
-
-template <typename T>
-inline internal::UnorderedElementsAreArrayMatcher<T>
-UnorderedElementsAreArray(const T* pointer, size_t count) {
- return UnorderedElementsAreArray(pointer, pointer + count);
-}
-
-template <typename T, size_t N>
-inline internal::UnorderedElementsAreArrayMatcher<T>
-UnorderedElementsAreArray(const T (&array)[N]) {
- return UnorderedElementsAreArray(array, N);
-}
-
-template <typename Container>
-inline internal::UnorderedElementsAreArrayMatcher<
- typename Container::value_type>
-UnorderedElementsAreArray(const Container& container) {
- return UnorderedElementsAreArray(container.begin(), container.end());
-}
-
-template <typename T>
-inline internal::UnorderedElementsAreArrayMatcher<T>
-UnorderedElementsAreArray(::std::initializer_list<T> xs) {
- return UnorderedElementsAreArray(xs.begin(), xs.end());
-}
-
-// _ is a matcher that matches anything of any type.
-//
-// This definition is fine as:
-//
-// 1. The C++ standard permits using the name _ in a namespace that
-// is not the global namespace or ::std.
-// 2. The AnythingMatcher class has no data member or constructor,
-// so it's OK to create global variables of this type.
-// 3. c-style has approved of using _ in this case.
-const internal::AnythingMatcher _ = {};
-// Creates a matcher that matches any value of the given type T.
-template <typename T>
+}
+
+template <typename T>
+inline internal::UnorderedElementsAreArrayMatcher<T>
+UnorderedElementsAreArray(const T* pointer, size_t count) {
+ return UnorderedElementsAreArray(pointer, pointer + count);
+}
+
+template <typename T, size_t N>
+inline internal::UnorderedElementsAreArrayMatcher<T>
+UnorderedElementsAreArray(const T (&array)[N]) {
+ return UnorderedElementsAreArray(array, N);
+}
+
+template <typename Container>
+inline internal::UnorderedElementsAreArrayMatcher<
+ typename Container::value_type>
+UnorderedElementsAreArray(const Container& container) {
+ return UnorderedElementsAreArray(container.begin(), container.end());
+}
+
+template <typename T>
+inline internal::UnorderedElementsAreArrayMatcher<T>
+UnorderedElementsAreArray(::std::initializer_list<T> xs) {
+ return UnorderedElementsAreArray(xs.begin(), xs.end());
+}
+
+// _ is a matcher that matches anything of any type.
+//
+// This definition is fine as:
+//
+// 1. The C++ standard permits using the name _ in a namespace that
+// is not the global namespace or ::std.
+// 2. The AnythingMatcher class has no data member or constructor,
+// so it's OK to create global variables of this type.
+// 3. c-style has approved of using _ in this case.
+const internal::AnythingMatcher _ = {};
+// Creates a matcher that matches any value of the given type T.
+template <typename T>
inline Matcher<T> A() {
return _;
}
-
-// Creates a matcher that matches any value of the given type T.
-template <typename T>
+
+// Creates a matcher that matches any value of the given type T.
+template <typename T>
inline Matcher<T> An() {
return _;
}
-
+
template <typename T, typename M>
Matcher<T> internal::MatcherCastImpl<T, M>::CastImpl(
const M& value, std::false_type /* convertible_to_matcher */,
std::false_type /* convertible_to_T */) {
return Eq(value);
-}
-
-// Creates a polymorphic matcher that matches any NULL pointer.
-inline PolymorphicMatcher<internal::IsNullMatcher > IsNull() {
- return MakePolymorphicMatcher(internal::IsNullMatcher());
-}
-
-// Creates a polymorphic matcher that matches any non-NULL pointer.
-// This is convenient as Not(NULL) doesn't compile (the compiler
-// thinks that that expression is comparing a pointer with an integer).
-inline PolymorphicMatcher<internal::NotNullMatcher > NotNull() {
- return MakePolymorphicMatcher(internal::NotNullMatcher());
-}
-
-// Creates a polymorphic matcher that matches any argument that
-// references variable x.
-template <typename T>
-inline internal::RefMatcher<T&> Ref(T& x) { // NOLINT
- return internal::RefMatcher<T&>(x);
-}
-
+}
+
+// Creates a polymorphic matcher that matches any NULL pointer.
+inline PolymorphicMatcher<internal::IsNullMatcher > IsNull() {
+ return MakePolymorphicMatcher(internal::IsNullMatcher());
+}
+
+// Creates a polymorphic matcher that matches any non-NULL pointer.
+// This is convenient as Not(NULL) doesn't compile (the compiler
+// thinks that that expression is comparing a pointer with an integer).
+inline PolymorphicMatcher<internal::NotNullMatcher > NotNull() {
+ return MakePolymorphicMatcher(internal::NotNullMatcher());
+}
+
+// Creates a polymorphic matcher that matches any argument that
+// references variable x.
+template <typename T>
+inline internal::RefMatcher<T&> Ref(T& x) { // NOLINT
+ return internal::RefMatcher<T&>(x);
+}
+
// Creates a polymorphic matcher that matches any NaN floating point.
inline PolymorphicMatcher<internal::IsNanMatcher> IsNan() {
return MakePolymorphicMatcher(internal::IsNanMatcher());
}
-// Creates a matcher that matches any double argument approximately
-// equal to rhs, where two NANs are considered unequal.
-inline internal::FloatingEqMatcher<double> DoubleEq(double rhs) {
- return internal::FloatingEqMatcher<double>(rhs, false);
-}
-
-// Creates a matcher that matches any double argument approximately
-// equal to rhs, including NaN values when rhs is NaN.
-inline internal::FloatingEqMatcher<double> NanSensitiveDoubleEq(double rhs) {
- return internal::FloatingEqMatcher<double>(rhs, true);
-}
-
-// Creates a matcher that matches any double argument approximately equal to
-// rhs, up to the specified max absolute error bound, where two NANs are
-// considered unequal. The max absolute error bound must be non-negative.
-inline internal::FloatingEqMatcher<double> DoubleNear(
- double rhs, double max_abs_error) {
- return internal::FloatingEqMatcher<double>(rhs, false, max_abs_error);
-}
-
-// Creates a matcher that matches any double argument approximately equal to
-// rhs, up to the specified max absolute error bound, including NaN values when
-// rhs is NaN. The max absolute error bound must be non-negative.
-inline internal::FloatingEqMatcher<double> NanSensitiveDoubleNear(
- double rhs, double max_abs_error) {
- return internal::FloatingEqMatcher<double>(rhs, true, max_abs_error);
-}
-
-// Creates a matcher that matches any float argument approximately
-// equal to rhs, where two NANs are considered unequal.
-inline internal::FloatingEqMatcher<float> FloatEq(float rhs) {
- return internal::FloatingEqMatcher<float>(rhs, false);
-}
-
-// Creates a matcher that matches any float argument approximately
-// equal to rhs, including NaN values when rhs is NaN.
-inline internal::FloatingEqMatcher<float> NanSensitiveFloatEq(float rhs) {
- return internal::FloatingEqMatcher<float>(rhs, true);
-}
-
-// Creates a matcher that matches any float argument approximately equal to
-// rhs, up to the specified max absolute error bound, where two NANs are
-// considered unequal. The max absolute error bound must be non-negative.
-inline internal::FloatingEqMatcher<float> FloatNear(
- float rhs, float max_abs_error) {
- return internal::FloatingEqMatcher<float>(rhs, false, max_abs_error);
-}
-
-// Creates a matcher that matches any float argument approximately equal to
-// rhs, up to the specified max absolute error bound, including NaN values when
-// rhs is NaN. The max absolute error bound must be non-negative.
-inline internal::FloatingEqMatcher<float> NanSensitiveFloatNear(
- float rhs, float max_abs_error) {
- return internal::FloatingEqMatcher<float>(rhs, true, max_abs_error);
-}
-
-// Creates a matcher that matches a pointer (raw or smart) that points
-// to a value that matches inner_matcher.
-template <typename InnerMatcher>
-inline internal::PointeeMatcher<InnerMatcher> Pointee(
- const InnerMatcher& inner_matcher) {
- return internal::PointeeMatcher<InnerMatcher>(inner_matcher);
-}
-
+// Creates a matcher that matches any double argument approximately
+// equal to rhs, where two NANs are considered unequal.
+inline internal::FloatingEqMatcher<double> DoubleEq(double rhs) {
+ return internal::FloatingEqMatcher<double>(rhs, false);
+}
+
+// Creates a matcher that matches any double argument approximately
+// equal to rhs, including NaN values when rhs is NaN.
+inline internal::FloatingEqMatcher<double> NanSensitiveDoubleEq(double rhs) {
+ return internal::FloatingEqMatcher<double>(rhs, true);
+}
+
+// Creates a matcher that matches any double argument approximately equal to
+// rhs, up to the specified max absolute error bound, where two NANs are
+// considered unequal. The max absolute error bound must be non-negative.
+inline internal::FloatingEqMatcher<double> DoubleNear(
+ double rhs, double max_abs_error) {
+ return internal::FloatingEqMatcher<double>(rhs, false, max_abs_error);
+}
+
+// Creates a matcher that matches any double argument approximately equal to
+// rhs, up to the specified max absolute error bound, including NaN values when
+// rhs is NaN. The max absolute error bound must be non-negative.
+inline internal::FloatingEqMatcher<double> NanSensitiveDoubleNear(
+ double rhs, double max_abs_error) {
+ return internal::FloatingEqMatcher<double>(rhs, true, max_abs_error);
+}
+
+// Creates a matcher that matches any float argument approximately
+// equal to rhs, where two NANs are considered unequal.
+inline internal::FloatingEqMatcher<float> FloatEq(float rhs) {
+ return internal::FloatingEqMatcher<float>(rhs, false);
+}
+
+// Creates a matcher that matches any float argument approximately
+// equal to rhs, including NaN values when rhs is NaN.
+inline internal::FloatingEqMatcher<float> NanSensitiveFloatEq(float rhs) {
+ return internal::FloatingEqMatcher<float>(rhs, true);
+}
+
+// Creates a matcher that matches any float argument approximately equal to
+// rhs, up to the specified max absolute error bound, where two NANs are
+// considered unequal. The max absolute error bound must be non-negative.
+inline internal::FloatingEqMatcher<float> FloatNear(
+ float rhs, float max_abs_error) {
+ return internal::FloatingEqMatcher<float>(rhs, false, max_abs_error);
+}
+
+// Creates a matcher that matches any float argument approximately equal to
+// rhs, up to the specified max absolute error bound, including NaN values when
+// rhs is NaN. The max absolute error bound must be non-negative.
+inline internal::FloatingEqMatcher<float> NanSensitiveFloatNear(
+ float rhs, float max_abs_error) {
+ return internal::FloatingEqMatcher<float>(rhs, true, max_abs_error);
+}
+
+// Creates a matcher that matches a pointer (raw or smart) that points
+// to a value that matches inner_matcher.
+template <typename InnerMatcher>
+inline internal::PointeeMatcher<InnerMatcher> Pointee(
+ const InnerMatcher& inner_matcher) {
+ return internal::PointeeMatcher<InnerMatcher>(inner_matcher);
+}
+
#if GTEST_HAS_RTTI
-// Creates a matcher that matches a pointer or reference that matches
-// inner_matcher when dynamic_cast<To> is applied.
-// The result of dynamic_cast<To> is forwarded to the inner matcher.
-// If To is a pointer and the cast fails, the inner matcher will receive NULL.
-// If To is a reference and the cast fails, this matcher returns false
-// immediately.
-template <typename To>
-inline PolymorphicMatcher<internal::WhenDynamicCastToMatcher<To> >
-WhenDynamicCastTo(const Matcher<To>& inner_matcher) {
- return MakePolymorphicMatcher(
- internal::WhenDynamicCastToMatcher<To>(inner_matcher));
-}
+// Creates a matcher that matches a pointer or reference that matches
+// inner_matcher when dynamic_cast<To> is applied.
+// The result of dynamic_cast<To> is forwarded to the inner matcher.
+// If To is a pointer and the cast fails, the inner matcher will receive NULL.
+// If To is a reference and the cast fails, this matcher returns false
+// immediately.
+template <typename To>
+inline PolymorphicMatcher<internal::WhenDynamicCastToMatcher<To> >
+WhenDynamicCastTo(const Matcher<To>& inner_matcher) {
+ return MakePolymorphicMatcher(
+ internal::WhenDynamicCastToMatcher<To>(inner_matcher));
+}
#endif // GTEST_HAS_RTTI
-
-// Creates a matcher that matches an object whose given field matches
-// 'matcher'. For example,
-// Field(&Foo::number, Ge(5))
+
+// Creates a matcher that matches an object whose given field matches
+// 'matcher'. For example,
+// Field(&Foo::number, Ge(5))
// matches a Foo object x if and only if x.number >= 5.
-template <typename Class, typename FieldType, typename FieldMatcher>
-inline PolymorphicMatcher<
- internal::FieldMatcher<Class, FieldType> > Field(
- FieldType Class::*field, const FieldMatcher& matcher) {
- return MakePolymorphicMatcher(
- internal::FieldMatcher<Class, FieldType>(
- field, MatcherCast<const FieldType&>(matcher)));
- // The call to MatcherCast() is required for supporting inner
- // matchers of compatible types. For example, it allows
- // Field(&Foo::bar, m)
- // to compile where bar is an int32 and m is a matcher for int64.
-}
-
+template <typename Class, typename FieldType, typename FieldMatcher>
+inline PolymorphicMatcher<
+ internal::FieldMatcher<Class, FieldType> > Field(
+ FieldType Class::*field, const FieldMatcher& matcher) {
+ return MakePolymorphicMatcher(
+ internal::FieldMatcher<Class, FieldType>(
+ field, MatcherCast<const FieldType&>(matcher)));
+ // The call to MatcherCast() is required for supporting inner
+ // matchers of compatible types. For example, it allows
+ // Field(&Foo::bar, m)
+ // to compile where bar is an int32 and m is a matcher for int64.
+}
+
// Same as Field() but also takes the name of the field to provide better error
// messages.
template <typename Class, typename FieldType, typename FieldMatcher>
@@ -4210,25 +4210,25 @@ inline PolymorphicMatcher<internal::FieldMatcher<Class, FieldType> > Field(
field_name, field, MatcherCast<const FieldType&>(matcher)));
}
-// Creates a matcher that matches an object whose given property
-// matches 'matcher'. For example,
-// Property(&Foo::str, StartsWith("hi"))
+// Creates a matcher that matches an object whose given property
+// matches 'matcher'. For example,
+// Property(&Foo::str, StartsWith("hi"))
// matches a Foo object x if and only if x.str() starts with "hi".
-template <typename Class, typename PropertyType, typename PropertyMatcher>
+template <typename Class, typename PropertyType, typename PropertyMatcher>
inline PolymorphicMatcher<internal::PropertyMatcher<
Class, PropertyType, PropertyType (Class::*)() const> >
Property(PropertyType (Class::*property)() const,
const PropertyMatcher& matcher) {
- return MakePolymorphicMatcher(
+ return MakePolymorphicMatcher(
internal::PropertyMatcher<Class, PropertyType,
PropertyType (Class::*)() const>(
property, MatcherCast<const PropertyType&>(matcher)));
- // The call to MatcherCast() is required for supporting inner
- // matchers of compatible types. For example, it allows
- // Property(&Foo::bar, m)
- // to compile where bar() returns an int32 and m is a matcher for int64.
-}
-
+ // The call to MatcherCast() is required for supporting inner
+ // matchers of compatible types. For example, it allows
+ // Property(&Foo::bar, m)
+ // to compile where bar() returns an int32 and m is a matcher for int64.
+}
+
// Same as Property() above, but also takes the name of the property to provide
// better error messages.
template <typename Class, typename PropertyType, typename PropertyMatcher>
@@ -4270,7 +4270,7 @@ Property(const std::string& property_name,
// Creates a matcher that matches an object if and only if the result of
// applying a callable to x matches 'matcher'. For example,
-// ResultOf(f, StartsWith("hi"))
+// ResultOf(f, StartsWith("hi"))
// matches a Foo object x if and only if f(x) starts with "hi".
// `callable` parameter can be a function, function pointer, or a functor. It is
// required to keep no state affecting the results of the calls on it and make
@@ -4281,146 +4281,146 @@ internal::ResultOfMatcher<Callable, InnerMatcher> ResultOf(
Callable callable, InnerMatcher matcher) {
return internal::ResultOfMatcher<Callable, InnerMatcher>(
std::move(callable), std::move(matcher));
-}
-
-// String matchers.
-
-// Matches a string equal to str.
+}
+
+// String matchers.
+
+// Matches a string equal to str.
template <typename T = std::string>
PolymorphicMatcher<internal::StrEqualityMatcher<std::string> > StrEq(
const internal::StringLike<T>& str) {
return MakePolymorphicMatcher(
internal::StrEqualityMatcher<std::string>(std::string(str), true, true));
-}
-
-// Matches a string not equal to str.
+}
+
+// Matches a string not equal to str.
template <typename T = std::string>
PolymorphicMatcher<internal::StrEqualityMatcher<std::string> > StrNe(
const internal::StringLike<T>& str) {
return MakePolymorphicMatcher(
internal::StrEqualityMatcher<std::string>(std::string(str), false, true));
-}
-
-// Matches a string equal to str, ignoring case.
+}
+
+// Matches a string equal to str, ignoring case.
template <typename T = std::string>
PolymorphicMatcher<internal::StrEqualityMatcher<std::string> > StrCaseEq(
const internal::StringLike<T>& str) {
return MakePolymorphicMatcher(
internal::StrEqualityMatcher<std::string>(std::string(str), true, false));
-}
-
-// Matches a string not equal to str, ignoring case.
+}
+
+// Matches a string not equal to str, ignoring case.
template <typename T = std::string>
PolymorphicMatcher<internal::StrEqualityMatcher<std::string> > StrCaseNe(
const internal::StringLike<T>& str) {
return MakePolymorphicMatcher(internal::StrEqualityMatcher<std::string>(
std::string(str), false, false));
-}
-
-// Creates a matcher that matches any string, std::string, or C string
-// that contains the given substring.
+}
+
+// Creates a matcher that matches any string, std::string, or C string
+// that contains the given substring.
template <typename T = std::string>
PolymorphicMatcher<internal::HasSubstrMatcher<std::string> > HasSubstr(
const internal::StringLike<T>& substring) {
return MakePolymorphicMatcher(
internal::HasSubstrMatcher<std::string>(std::string(substring)));
-}
-
-// Matches a string that starts with 'prefix' (case-sensitive).
+}
+
+// Matches a string that starts with 'prefix' (case-sensitive).
template <typename T = std::string>
PolymorphicMatcher<internal::StartsWithMatcher<std::string> > StartsWith(
const internal::StringLike<T>& prefix) {
return MakePolymorphicMatcher(
internal::StartsWithMatcher<std::string>(std::string(prefix)));
-}
-
-// Matches a string that ends with 'suffix' (case-sensitive).
+}
+
+// Matches a string that ends with 'suffix' (case-sensitive).
template <typename T = std::string>
PolymorphicMatcher<internal::EndsWithMatcher<std::string> > EndsWith(
const internal::StringLike<T>& suffix) {
return MakePolymorphicMatcher(
internal::EndsWithMatcher<std::string>(std::string(suffix)));
-}
-
+}
+
#if GTEST_HAS_STD_WSTRING
-// Wide string matchers.
-
-// Matches a string equal to str.
+// Wide string matchers.
+
+// Matches a string equal to str.
inline PolymorphicMatcher<internal::StrEqualityMatcher<std::wstring> > StrEq(
const std::wstring& str) {
return MakePolymorphicMatcher(
internal::StrEqualityMatcher<std::wstring>(str, true, true));
-}
-
-// Matches a string not equal to str.
+}
+
+// Matches a string not equal to str.
inline PolymorphicMatcher<internal::StrEqualityMatcher<std::wstring> > StrNe(
const std::wstring& str) {
return MakePolymorphicMatcher(
internal::StrEqualityMatcher<std::wstring>(str, false, true));
-}
-
-// Matches a string equal to str, ignoring case.
+}
+
+// Matches a string equal to str, ignoring case.
inline PolymorphicMatcher<internal::StrEqualityMatcher<std::wstring> >
StrCaseEq(const std::wstring& str) {
return MakePolymorphicMatcher(
internal::StrEqualityMatcher<std::wstring>(str, true, false));
-}
-
-// Matches a string not equal to str, ignoring case.
+}
+
+// Matches a string not equal to str, ignoring case.
inline PolymorphicMatcher<internal::StrEqualityMatcher<std::wstring> >
StrCaseNe(const std::wstring& str) {
return MakePolymorphicMatcher(
internal::StrEqualityMatcher<std::wstring>(str, false, false));
-}
-
+}
+
// Creates a matcher that matches any ::wstring, std::wstring, or C wide string
-// that contains the given substring.
+// that contains the given substring.
inline PolymorphicMatcher<internal::HasSubstrMatcher<std::wstring> > HasSubstr(
const std::wstring& substring) {
return MakePolymorphicMatcher(
internal::HasSubstrMatcher<std::wstring>(substring));
-}
-
-// Matches a string that starts with 'prefix' (case-sensitive).
+}
+
+// Matches a string that starts with 'prefix' (case-sensitive).
inline PolymorphicMatcher<internal::StartsWithMatcher<std::wstring> >
StartsWith(const std::wstring& prefix) {
return MakePolymorphicMatcher(
internal::StartsWithMatcher<std::wstring>(prefix));
-}
-
-// Matches a string that ends with 'suffix' (case-sensitive).
+}
+
+// Matches a string that ends with 'suffix' (case-sensitive).
inline PolymorphicMatcher<internal::EndsWithMatcher<std::wstring> > EndsWith(
const std::wstring& suffix) {
return MakePolymorphicMatcher(
internal::EndsWithMatcher<std::wstring>(suffix));
-}
-
+}
+
#endif // GTEST_HAS_STD_WSTRING
-
-// Creates a polymorphic matcher that matches a 2-tuple where the
-// first field == the second field.
-inline internal::Eq2Matcher Eq() { return internal::Eq2Matcher(); }
-
-// Creates a polymorphic matcher that matches a 2-tuple where the
-// first field >= the second field.
-inline internal::Ge2Matcher Ge() { return internal::Ge2Matcher(); }
-
-// Creates a polymorphic matcher that matches a 2-tuple where the
-// first field > the second field.
-inline internal::Gt2Matcher Gt() { return internal::Gt2Matcher(); }
-
-// Creates a polymorphic matcher that matches a 2-tuple where the
-// first field <= the second field.
-inline internal::Le2Matcher Le() { return internal::Le2Matcher(); }
-
-// Creates a polymorphic matcher that matches a 2-tuple where the
-// first field < the second field.
-inline internal::Lt2Matcher Lt() { return internal::Lt2Matcher(); }
-
-// Creates a polymorphic matcher that matches a 2-tuple where the
-// first field != the second field.
-inline internal::Ne2Matcher Ne() { return internal::Ne2Matcher(); }
-
+
+// Creates a polymorphic matcher that matches a 2-tuple where the
+// first field == the second field.
+inline internal::Eq2Matcher Eq() { return internal::Eq2Matcher(); }
+
+// Creates a polymorphic matcher that matches a 2-tuple where the
+// first field >= the second field.
+inline internal::Ge2Matcher Ge() { return internal::Ge2Matcher(); }
+
+// Creates a polymorphic matcher that matches a 2-tuple where the
+// first field > the second field.
+inline internal::Gt2Matcher Gt() { return internal::Gt2Matcher(); }
+
+// Creates a polymorphic matcher that matches a 2-tuple where the
+// first field <= the second field.
+inline internal::Le2Matcher Le() { return internal::Le2Matcher(); }
+
+// Creates a polymorphic matcher that matches a 2-tuple where the
+// first field < the second field.
+inline internal::Lt2Matcher Lt() { return internal::Lt2Matcher(); }
+
+// Creates a polymorphic matcher that matches a 2-tuple where the
+// first field != the second field.
+inline internal::Ne2Matcher Ne() { return internal::Ne2Matcher(); }
+
// Creates a polymorphic matcher that matches a 2-tuple where
// FloatEq(first field) matches the second field.
inline internal::FloatingEq2Matcher<float> FloatEq() {
@@ -4473,172 +4473,172 @@ inline internal::FloatingEq2Matcher<double> NanSensitiveDoubleNear(
return internal::FloatingEq2Matcher<double>(max_abs_error, true);
}
-// Creates a matcher that matches any value of type T that m doesn't
-// match.
-template <typename InnerMatcher>
-inline internal::NotMatcher<InnerMatcher> Not(InnerMatcher m) {
- return internal::NotMatcher<InnerMatcher>(m);
-}
-
-// Returns a matcher that matches anything that satisfies the given
-// predicate. The predicate can be any unary function or functor
-// whose return type can be implicitly converted to bool.
-template <typename Predicate>
-inline PolymorphicMatcher<internal::TrulyMatcher<Predicate> >
-Truly(Predicate pred) {
- return MakePolymorphicMatcher(internal::TrulyMatcher<Predicate>(pred));
-}
-
-// Returns a matcher that matches the container size. The container must
-// support both size() and size_type which all STL-like containers provide.
-// Note that the parameter 'size' can be a value of type size_type as well as
-// matcher. For instance:
-// EXPECT_THAT(container, SizeIs(2)); // Checks container has 2 elements.
-// EXPECT_THAT(container, SizeIs(Le(2)); // Checks container has at most 2.
-template <typename SizeMatcher>
-inline internal::SizeIsMatcher<SizeMatcher>
-SizeIs(const SizeMatcher& size_matcher) {
- return internal::SizeIsMatcher<SizeMatcher>(size_matcher);
-}
-
-// Returns a matcher that matches the distance between the container's begin()
-// iterator and its end() iterator, i.e. the size of the container. This matcher
-// can be used instead of SizeIs with containers such as std::forward_list which
-// do not implement size(). The container must provide const_iterator (with
-// valid iterator_traits), begin() and end().
-template <typename DistanceMatcher>
-inline internal::BeginEndDistanceIsMatcher<DistanceMatcher>
-BeginEndDistanceIs(const DistanceMatcher& distance_matcher) {
- return internal::BeginEndDistanceIsMatcher<DistanceMatcher>(distance_matcher);
-}
-
-// Returns a matcher that matches an equal container.
-// This matcher behaves like Eq(), but in the event of mismatch lists the
-// values that are included in one container but not the other. (Duplicate
-// values and order differences are not explained.)
-template <typename Container>
+// Creates a matcher that matches any value of type T that m doesn't
+// match.
+template <typename InnerMatcher>
+inline internal::NotMatcher<InnerMatcher> Not(InnerMatcher m) {
+ return internal::NotMatcher<InnerMatcher>(m);
+}
+
+// Returns a matcher that matches anything that satisfies the given
+// predicate. The predicate can be any unary function or functor
+// whose return type can be implicitly converted to bool.
+template <typename Predicate>
+inline PolymorphicMatcher<internal::TrulyMatcher<Predicate> >
+Truly(Predicate pred) {
+ return MakePolymorphicMatcher(internal::TrulyMatcher<Predicate>(pred));
+}
+
+// Returns a matcher that matches the container size. The container must
+// support both size() and size_type which all STL-like containers provide.
+// Note that the parameter 'size' can be a value of type size_type as well as
+// matcher. For instance:
+// EXPECT_THAT(container, SizeIs(2)); // Checks container has 2 elements.
+// EXPECT_THAT(container, SizeIs(Le(2)); // Checks container has at most 2.
+template <typename SizeMatcher>
+inline internal::SizeIsMatcher<SizeMatcher>
+SizeIs(const SizeMatcher& size_matcher) {
+ return internal::SizeIsMatcher<SizeMatcher>(size_matcher);
+}
+
+// Returns a matcher that matches the distance between the container's begin()
+// iterator and its end() iterator, i.e. the size of the container. This matcher
+// can be used instead of SizeIs with containers such as std::forward_list which
+// do not implement size(). The container must provide const_iterator (with
+// valid iterator_traits), begin() and end().
+template <typename DistanceMatcher>
+inline internal::BeginEndDistanceIsMatcher<DistanceMatcher>
+BeginEndDistanceIs(const DistanceMatcher& distance_matcher) {
+ return internal::BeginEndDistanceIsMatcher<DistanceMatcher>(distance_matcher);
+}
+
+// Returns a matcher that matches an equal container.
+// This matcher behaves like Eq(), but in the event of mismatch lists the
+// values that are included in one container but not the other. (Duplicate
+// values and order differences are not explained.)
+template <typename Container>
inline PolymorphicMatcher<internal::ContainerEqMatcher<
typename std::remove_const<Container>::type>>
ContainerEq(const Container& rhs) {
return MakePolymorphicMatcher(internal::ContainerEqMatcher<Container>(rhs));
-}
-
-// Returns a matcher that matches a container that, when sorted using
-// the given comparator, matches container_matcher.
-template <typename Comparator, typename ContainerMatcher>
-inline internal::WhenSortedByMatcher<Comparator, ContainerMatcher>
-WhenSortedBy(const Comparator& comparator,
- const ContainerMatcher& container_matcher) {
- return internal::WhenSortedByMatcher<Comparator, ContainerMatcher>(
- comparator, container_matcher);
-}
-
-// Returns a matcher that matches a container that, when sorted using
-// the < operator, matches container_matcher.
-template <typename ContainerMatcher>
-inline internal::WhenSortedByMatcher<internal::LessComparator, ContainerMatcher>
-WhenSorted(const ContainerMatcher& container_matcher) {
- return
- internal::WhenSortedByMatcher<internal::LessComparator, ContainerMatcher>(
- internal::LessComparator(), container_matcher);
-}
-
-// Matches an STL-style container or a native array that contains the
-// same number of elements as in rhs, where its i-th element and rhs's
-// i-th element (as a pair) satisfy the given pair matcher, for all i.
+}
+
+// Returns a matcher that matches a container that, when sorted using
+// the given comparator, matches container_matcher.
+template <typename Comparator, typename ContainerMatcher>
+inline internal::WhenSortedByMatcher<Comparator, ContainerMatcher>
+WhenSortedBy(const Comparator& comparator,
+ const ContainerMatcher& container_matcher) {
+ return internal::WhenSortedByMatcher<Comparator, ContainerMatcher>(
+ comparator, container_matcher);
+}
+
+// Returns a matcher that matches a container that, when sorted using
+// the < operator, matches container_matcher.
+template <typename ContainerMatcher>
+inline internal::WhenSortedByMatcher<internal::LessComparator, ContainerMatcher>
+WhenSorted(const ContainerMatcher& container_matcher) {
+ return
+ internal::WhenSortedByMatcher<internal::LessComparator, ContainerMatcher>(
+ internal::LessComparator(), container_matcher);
+}
+
+// Matches an STL-style container or a native array that contains the
+// same number of elements as in rhs, where its i-th element and rhs's
+// i-th element (as a pair) satisfy the given pair matcher, for all i.
// TupleMatcher must be able to be safely cast to Matcher<std::tuple<const
-// T1&, const T2&> >, where T1 and T2 are the types of elements in the
-// LHS container and the RHS container respectively.
-template <typename TupleMatcher, typename Container>
-inline internal::PointwiseMatcher<TupleMatcher,
+// T1&, const T2&> >, where T1 and T2 are the types of elements in the
+// LHS container and the RHS container respectively.
+template <typename TupleMatcher, typename Container>
+inline internal::PointwiseMatcher<TupleMatcher,
typename std::remove_const<Container>::type>
-Pointwise(const TupleMatcher& tuple_matcher, const Container& rhs) {
+Pointwise(const TupleMatcher& tuple_matcher, const Container& rhs) {
return internal::PointwiseMatcher<TupleMatcher, Container>(tuple_matcher,
rhs);
-}
-
-
-// Supports the Pointwise(m, {a, b, c}) syntax.
-template <typename TupleMatcher, typename T>
-inline internal::PointwiseMatcher<TupleMatcher, std::vector<T> > Pointwise(
- const TupleMatcher& tuple_matcher, std::initializer_list<T> rhs) {
- return Pointwise(tuple_matcher, std::vector<T>(rhs));
-}
-
-
-// UnorderedPointwise(pair_matcher, rhs) matches an STL-style
-// container or a native array that contains the same number of
-// elements as in rhs, where in some permutation of the container, its
-// i-th element and rhs's i-th element (as a pair) satisfy the given
-// pair matcher, for all i. Tuple2Matcher must be able to be safely
+}
+
+
+// Supports the Pointwise(m, {a, b, c}) syntax.
+template <typename TupleMatcher, typename T>
+inline internal::PointwiseMatcher<TupleMatcher, std::vector<T> > Pointwise(
+ const TupleMatcher& tuple_matcher, std::initializer_list<T> rhs) {
+ return Pointwise(tuple_matcher, std::vector<T>(rhs));
+}
+
+
+// UnorderedPointwise(pair_matcher, rhs) matches an STL-style
+// container or a native array that contains the same number of
+// elements as in rhs, where in some permutation of the container, its
+// i-th element and rhs's i-th element (as a pair) satisfy the given
+// pair matcher, for all i. Tuple2Matcher must be able to be safely
// cast to Matcher<std::tuple<const T1&, const T2&> >, where T1 and T2 are
-// the types of elements in the LHS container and the RHS container
-// respectively.
-//
-// This is like Pointwise(pair_matcher, rhs), except that the element
-// order doesn't matter.
-template <typename Tuple2Matcher, typename RhsContainer>
-inline internal::UnorderedElementsAreArrayMatcher<
- typename internal::BoundSecondMatcher<
+// the types of elements in the LHS container and the RHS container
+// respectively.
+//
+// This is like Pointwise(pair_matcher, rhs), except that the element
+// order doesn't matter.
+template <typename Tuple2Matcher, typename RhsContainer>
+inline internal::UnorderedElementsAreArrayMatcher<
+ typename internal::BoundSecondMatcher<
Tuple2Matcher,
typename internal::StlContainerView<
typename std::remove_const<RhsContainer>::type>::type::value_type>>
-UnorderedPointwise(const Tuple2Matcher& tuple2_matcher,
- const RhsContainer& rhs_container) {
- // RhsView allows the same code to handle RhsContainer being a
- // STL-style container and it being a native C-style array.
+UnorderedPointwise(const Tuple2Matcher& tuple2_matcher,
+ const RhsContainer& rhs_container) {
+ // RhsView allows the same code to handle RhsContainer being a
+ // STL-style container and it being a native C-style array.
typedef typename internal::StlContainerView<RhsContainer> RhsView;
- typedef typename RhsView::type RhsStlContainer;
- typedef typename RhsStlContainer::value_type Second;
- const RhsStlContainer& rhs_stl_container =
- RhsView::ConstReference(rhs_container);
-
- // Create a matcher for each element in rhs_container.
- ::std::vector<internal::BoundSecondMatcher<Tuple2Matcher, Second> > matchers;
- for (typename RhsStlContainer::const_iterator it = rhs_stl_container.begin();
- it != rhs_stl_container.end(); ++it) {
- matchers.push_back(
- internal::MatcherBindSecond(tuple2_matcher, *it));
- }
-
- // Delegate the work to UnorderedElementsAreArray().
- return UnorderedElementsAreArray(matchers);
-}
-
-
-// Supports the UnorderedPointwise(m, {a, b, c}) syntax.
-template <typename Tuple2Matcher, typename T>
-inline internal::UnorderedElementsAreArrayMatcher<
- typename internal::BoundSecondMatcher<Tuple2Matcher, T> >
-UnorderedPointwise(const Tuple2Matcher& tuple2_matcher,
- std::initializer_list<T> rhs) {
- return UnorderedPointwise(tuple2_matcher, std::vector<T>(rhs));
-}
-
-
-// Matches an STL-style container or a native array that contains at
-// least one element matching the given value or matcher.
-//
-// Examples:
-// ::std::set<int> page_ids;
-// page_ids.insert(3);
-// page_ids.insert(1);
-// EXPECT_THAT(page_ids, Contains(1));
-// EXPECT_THAT(page_ids, Contains(Gt(2)));
-// EXPECT_THAT(page_ids, Not(Contains(4)));
-//
-// ::std::map<int, size_t> page_lengths;
-// page_lengths[1] = 100;
-// EXPECT_THAT(page_lengths,
-// Contains(::std::pair<const int, size_t>(1, 100)));
-//
-// const char* user_ids[] = { "joe", "mike", "tom" };
-// EXPECT_THAT(user_ids, Contains(Eq(::std::string("tom"))));
-template <typename M>
-inline internal::ContainsMatcher<M> Contains(M matcher) {
- return internal::ContainsMatcher<M>(matcher);
-}
-
+ typedef typename RhsView::type RhsStlContainer;
+ typedef typename RhsStlContainer::value_type Second;
+ const RhsStlContainer& rhs_stl_container =
+ RhsView::ConstReference(rhs_container);
+
+ // Create a matcher for each element in rhs_container.
+ ::std::vector<internal::BoundSecondMatcher<Tuple2Matcher, Second> > matchers;
+ for (typename RhsStlContainer::const_iterator it = rhs_stl_container.begin();
+ it != rhs_stl_container.end(); ++it) {
+ matchers.push_back(
+ internal::MatcherBindSecond(tuple2_matcher, *it));
+ }
+
+ // Delegate the work to UnorderedElementsAreArray().
+ return UnorderedElementsAreArray(matchers);
+}
+
+
+// Supports the UnorderedPointwise(m, {a, b, c}) syntax.
+template <typename Tuple2Matcher, typename T>
+inline internal::UnorderedElementsAreArrayMatcher<
+ typename internal::BoundSecondMatcher<Tuple2Matcher, T> >
+UnorderedPointwise(const Tuple2Matcher& tuple2_matcher,
+ std::initializer_list<T> rhs) {
+ return UnorderedPointwise(tuple2_matcher, std::vector<T>(rhs));
+}
+
+
+// Matches an STL-style container or a native array that contains at
+// least one element matching the given value or matcher.
+//
+// Examples:
+// ::std::set<int> page_ids;
+// page_ids.insert(3);
+// page_ids.insert(1);
+// EXPECT_THAT(page_ids, Contains(1));
+// EXPECT_THAT(page_ids, Contains(Gt(2)));
+// EXPECT_THAT(page_ids, Not(Contains(4)));
+//
+// ::std::map<int, size_t> page_lengths;
+// page_lengths[1] = 100;
+// EXPECT_THAT(page_lengths,
+// Contains(::std::pair<const int, size_t>(1, 100)));
+//
+// const char* user_ids[] = { "joe", "mike", "tom" };
+// EXPECT_THAT(user_ids, Contains(Eq(::std::string("tom"))));
+template <typename M>
+inline internal::ContainsMatcher<M> Contains(M matcher) {
+ return internal::ContainsMatcher<M>(matcher);
+}
+
// IsSupersetOf(iterator_first, iterator_last)
// IsSupersetOf(pointer, count)
// IsSupersetOf(array)
@@ -4757,58 +4757,58 @@ inline internal::UnorderedElementsAreArrayMatcher<T> IsSubsetOf(
return IsSubsetOf(xs.begin(), xs.end());
}
-// Matches an STL-style container or a native array that contains only
-// elements matching the given value or matcher.
-//
-// Each(m) is semantically equivalent to Not(Contains(Not(m))). Only
-// the messages are different.
-//
-// Examples:
-// ::std::set<int> page_ids;
-// // Each(m) matches an empty container, regardless of what m is.
-// EXPECT_THAT(page_ids, Each(Eq(1)));
-// EXPECT_THAT(page_ids, Each(Eq(77)));
-//
-// page_ids.insert(3);
-// EXPECT_THAT(page_ids, Each(Gt(0)));
-// EXPECT_THAT(page_ids, Not(Each(Gt(4))));
-// page_ids.insert(1);
-// EXPECT_THAT(page_ids, Not(Each(Lt(2))));
-//
-// ::std::map<int, size_t> page_lengths;
-// page_lengths[1] = 100;
-// page_lengths[2] = 200;
-// page_lengths[3] = 300;
-// EXPECT_THAT(page_lengths, Not(Each(Pair(1, 100))));
-// EXPECT_THAT(page_lengths, Each(Key(Le(3))));
-//
-// const char* user_ids[] = { "joe", "mike", "tom" };
-// EXPECT_THAT(user_ids, Not(Each(Eq(::std::string("tom")))));
-template <typename M>
-inline internal::EachMatcher<M> Each(M matcher) {
- return internal::EachMatcher<M>(matcher);
-}
-
-// Key(inner_matcher) matches an std::pair whose 'first' field matches
-// inner_matcher. For example, Contains(Key(Ge(5))) can be used to match an
-// std::map that contains at least one element whose key is >= 5.
-template <typename M>
-inline internal::KeyMatcher<M> Key(M inner_matcher) {
- return internal::KeyMatcher<M>(inner_matcher);
-}
-
-// Pair(first_matcher, second_matcher) matches a std::pair whose 'first' field
-// matches first_matcher and whose 'second' field matches second_matcher. For
-// example, EXPECT_THAT(map_type, ElementsAre(Pair(Ge(5), "foo"))) can be used
-// to match a std::map<int, string> that contains exactly one element whose key
-// is >= 5 and whose value equals "foo".
-template <typename FirstMatcher, typename SecondMatcher>
-inline internal::PairMatcher<FirstMatcher, SecondMatcher>
-Pair(FirstMatcher first_matcher, SecondMatcher second_matcher) {
- return internal::PairMatcher<FirstMatcher, SecondMatcher>(
- first_matcher, second_matcher);
-}
-
+// Matches an STL-style container or a native array that contains only
+// elements matching the given value or matcher.
+//
+// Each(m) is semantically equivalent to Not(Contains(Not(m))). Only
+// the messages are different.
+//
+// Examples:
+// ::std::set<int> page_ids;
+// // Each(m) matches an empty container, regardless of what m is.
+// EXPECT_THAT(page_ids, Each(Eq(1)));
+// EXPECT_THAT(page_ids, Each(Eq(77)));
+//
+// page_ids.insert(3);
+// EXPECT_THAT(page_ids, Each(Gt(0)));
+// EXPECT_THAT(page_ids, Not(Each(Gt(4))));
+// page_ids.insert(1);
+// EXPECT_THAT(page_ids, Not(Each(Lt(2))));
+//
+// ::std::map<int, size_t> page_lengths;
+// page_lengths[1] = 100;
+// page_lengths[2] = 200;
+// page_lengths[3] = 300;
+// EXPECT_THAT(page_lengths, Not(Each(Pair(1, 100))));
+// EXPECT_THAT(page_lengths, Each(Key(Le(3))));
+//
+// const char* user_ids[] = { "joe", "mike", "tom" };
+// EXPECT_THAT(user_ids, Not(Each(Eq(::std::string("tom")))));
+template <typename M>
+inline internal::EachMatcher<M> Each(M matcher) {
+ return internal::EachMatcher<M>(matcher);
+}
+
+// Key(inner_matcher) matches an std::pair whose 'first' field matches
+// inner_matcher. For example, Contains(Key(Ge(5))) can be used to match an
+// std::map that contains at least one element whose key is >= 5.
+template <typename M>
+inline internal::KeyMatcher<M> Key(M inner_matcher) {
+ return internal::KeyMatcher<M>(inner_matcher);
+}
+
+// Pair(first_matcher, second_matcher) matches a std::pair whose 'first' field
+// matches first_matcher and whose 'second' field matches second_matcher. For
+// example, EXPECT_THAT(map_type, ElementsAre(Pair(Ge(5), "foo"))) can be used
+// to match a std::map<int, string> that contains exactly one element whose key
+// is >= 5 and whose value equals "foo".
+template <typename FirstMatcher, typename SecondMatcher>
+inline internal::PairMatcher<FirstMatcher, SecondMatcher>
+Pair(FirstMatcher first_matcher, SecondMatcher second_matcher) {
+ return internal::PairMatcher<FirstMatcher, SecondMatcher>(
+ first_matcher, second_matcher);
+}
+
namespace no_adl {
// FieldsAre(matchers...) matches piecewise the fields of compatible structs.
// These include those that support `get<I>(obj)`, and when structured bindings
@@ -4838,27 +4838,27 @@ inline internal::AddressMatcher<InnerMatcher> Address(
}
} // namespace no_adl
-// Returns a predicate that is satisfied by anything that matches the
-// given matcher.
-template <typename M>
-inline internal::MatcherAsPredicate<M> Matches(M matcher) {
- return internal::MatcherAsPredicate<M>(matcher);
-}
-
+// Returns a predicate that is satisfied by anything that matches the
+// given matcher.
+template <typename M>
+inline internal::MatcherAsPredicate<M> Matches(M matcher) {
+ return internal::MatcherAsPredicate<M>(matcher);
+}
+
// Returns true if and only if the value matches the matcher.
-template <typename T, typename M>
-inline bool Value(const T& value, M matcher) {
- return testing::Matches(matcher)(value);
-}
-
-// Matches the value against the given matcher and explains the match
-// result to listener.
-template <typename T, typename M>
-inline bool ExplainMatchResult(
- M matcher, const T& value, MatchResultListener* listener) {
- return SafeMatcherCast<const T&>(matcher).MatchAndExplain(value, listener);
-}
-
+template <typename T, typename M>
+inline bool Value(const T& value, M matcher) {
+ return testing::Matches(matcher)(value);
+}
+
+// Matches the value against the given matcher and explains the match
+// result to listener.
+template <typename T, typename M>
+inline bool ExplainMatchResult(
+ M matcher, const T& value, MatchResultListener* listener) {
+ return SafeMatcherCast<const T&>(matcher).MatchAndExplain(value, listener);
+}
+
// Returns a string representation of the given matcher. Useful for description
// strings of matchers defined using MATCHER_P* macros that accept matchers as
// their arguments. For example:
@@ -4881,24 +4881,24 @@ std::string DescribeMatcher(const M& matcher, bool negation = false) {
return ss.str();
}
-template <typename... Args>
+template <typename... Args>
internal::ElementsAreMatcher<
std::tuple<typename std::decay<const Args&>::type...>>
ElementsAre(const Args&... matchers) {
return internal::ElementsAreMatcher<
std::tuple<typename std::decay<const Args&>::type...>>(
std::make_tuple(matchers...));
-}
-
-template <typename... Args>
+}
+
+template <typename... Args>
internal::UnorderedElementsAreMatcher<
std::tuple<typename std::decay<const Args&>::type...>>
UnorderedElementsAre(const Args&... matchers) {
return internal::UnorderedElementsAreMatcher<
std::tuple<typename std::decay<const Args&>::type...>>(
std::make_tuple(matchers...));
-}
-
+}
+
// Define variadic matcher versions.
template <typename... Args>
internal::AllOfMatcher<typename std::decay<const Args&>::type...> AllOf(
@@ -4906,7 +4906,7 @@ internal::AllOfMatcher<typename std::decay<const Args&>::type...> AllOf(
return internal::AllOfMatcher<typename std::decay<const Args&>::type...>(
matchers...);
}
-
+
template <typename... Args>
internal::AnyOfMatcher<typename std::decay<const Args&>::type...> AnyOf(
const Args&... matchers) {
@@ -5006,16 +5006,16 @@ internal::ArgsMatcher<typename std::decay<InnerMatcher>::type, k...> Args(
std::forward<InnerMatcher>(matcher));
}
-// AllArgs(m) is a synonym of m. This is useful in
-//
-// EXPECT_CALL(foo, Bar(_, _)).With(AllArgs(Eq()));
-//
-// which is easier to read than
-//
-// EXPECT_CALL(foo, Bar(_, _)).With(Eq());
-template <typename InnerMatcher>
-inline InnerMatcher AllArgs(const InnerMatcher& matcher) { return matcher; }
-
+// AllArgs(m) is a synonym of m. This is useful in
+//
+// EXPECT_CALL(foo, Bar(_, _)).With(AllArgs(Eq()));
+//
+// which is easier to read than
+//
+// EXPECT_CALL(foo, Bar(_, _)).With(Eq());
+template <typename InnerMatcher>
+inline InnerMatcher AllArgs(const InnerMatcher& matcher) { return matcher; }
+
// Returns a matcher that matches the value of an optional<> type variable.
// The matcher implementation only uses '!arg' and requires that the optional<>
// type has a 'value_type' member type and that '*arg' is of type 'value_type'
@@ -5218,15 +5218,15 @@ PolymorphicMatcher<internal::ExceptionMatcherImpl<Err>> ThrowsMessage(
#endif // GTEST_HAS_EXCEPTIONS
-// These macros allow using matchers to check values in Google Test
-// tests. ASSERT_THAT(value, matcher) and EXPECT_THAT(value, matcher)
+// These macros allow using matchers to check values in Google Test
+// tests. ASSERT_THAT(value, matcher) and EXPECT_THAT(value, matcher)
// succeed if and only if the value matches the matcher. If the assertion
// fails, the value and the description of the matcher will be printed.
-#define ASSERT_THAT(value, matcher) ASSERT_PRED_FORMAT1(\
- ::testing::internal::MakePredicateFormatterFromMatcher(matcher), value)
-#define EXPECT_THAT(value, matcher) EXPECT_PRED_FORMAT1(\
- ::testing::internal::MakePredicateFormatterFromMatcher(matcher), value)
-
+#define ASSERT_THAT(value, matcher) ASSERT_PRED_FORMAT1(\
+ ::testing::internal::MakePredicateFormatterFromMatcher(matcher), value)
+#define EXPECT_THAT(value, matcher) EXPECT_PRED_FORMAT1(\
+ ::testing::internal::MakePredicateFormatterFromMatcher(matcher), value)
+
// MATCHER* macroses itself are listed below.
#define MATCHER(name, description) \
class name##Matcher \
@@ -5380,13 +5380,13 @@ PolymorphicMatcher<internal::ExceptionMatcherImpl<Err>> ThrowsMessage(
// To prevent ADL on certain functions we put them on a separate namespace.
using namespace no_adl; // NOLINT
-} // namespace testing
-
+} // namespace testing
+
GTEST_DISABLE_MSC_WARNINGS_POP_() // 4251 5046
-// Include any custom callback matchers added by the local installation.
-// We must include this header at the end to make sure it can use the
-// declarations from this file.
-#include "gmock/internal/custom/gmock-matchers.h"
+// Include any custom callback matchers added by the local installation.
+// We must include this header at the end to make sure it can use the
+// declarations from this file.
+#include "gmock/internal/custom/gmock-matchers.h"
#endif // GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_MATCHERS_H_
diff --git a/contrib/restricted/googletest/googlemock/include/gmock/gmock-more-actions.h b/contrib/restricted/googletest/googlemock/include/gmock/gmock-more-actions.h
index 37e200b1cb..fd293358a2 100644
--- a/contrib/restricted/googletest/googlemock/include/gmock/gmock-more-actions.h
+++ b/contrib/restricted/googletest/googlemock/include/gmock/gmock-more-actions.h
@@ -1,51 +1,51 @@
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-// Google Mock - a framework for writing C++ mock classes.
-//
+
+// Google Mock - a framework for writing C++ mock classes.
+//
// This file implements some commonly used variadic actions.
-
+
// GOOGLETEST_CM0002 DO NOT DELETE
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_MORE_ACTIONS_H_
#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_MORE_ACTIONS_H_
-
+
#include <memory>
#include <utility>
-
+
#include "gmock/gmock-actions.h"
#include "gmock/internal/gmock-port.h"
-
+
// Include any custom callback actions added by the local installation.
#include "gmock/internal/custom/gmock-generated-actions.h"
-
+
// Sometimes you want to give an action explicit template parameters
// that cannot be inferred from its value parameters. ACTION() and
// ACTION_P*() don't support that. ACTION_TEMPLATE() remedies that
@@ -126,7 +126,7 @@
// the maximum number of template/value parameters supported. Without
// using it, we'd have to devote O(N^2) amount of code to implement all
// combinations of m and n.
-
+
// Declares the template parameters.
#define GMOCK_INTERNAL_DECL_HAS_1_TEMPLATE_PARAMS(kind0, name0) kind0 name0
#define GMOCK_INTERNAL_DECL_HAS_2_TEMPLATE_PARAMS(kind0, name0, kind1, \
@@ -160,7 +160,7 @@
name6, kind7, name7, kind8, name8, kind9, name9) kind0 name0, \
kind1 name1, kind2 name2, kind3 name3, kind4 name4, kind5 name5, \
kind6 name6, kind7 name7, kind8 name8, kind9 name9
-
+
// Lists the template parameters.
#define GMOCK_INTERNAL_LIST_HAS_1_TEMPLATE_PARAMS(kind0, name0) name0
#define GMOCK_INTERNAL_LIST_HAS_2_TEMPLATE_PARAMS(kind0, name0, kind1, \
@@ -189,7 +189,7 @@
name1, kind2, name2, kind3, name3, kind4, name4, kind5, name5, kind6, \
name6, kind7, name7, kind8, name8, kind9, name9) name0, name1, name2, \
name3, name4, name5, name6, name7, name8, name9
-
+
// Declares the types of value parameters.
#define GMOCK_INTERNAL_DECL_TYPE_AND_0_VALUE_PARAMS()
#define GMOCK_INTERNAL_DECL_TYPE_AND_1_VALUE_PARAMS(p0) , typename p0##_type
@@ -489,18 +489,18 @@
namespace testing {
-// The ACTION*() macros trigger warning C4100 (unreferenced formal
-// parameter) in MSVC with -W4. Unfortunately they cannot be fixed in
-// the macro definition, as the warnings are generated when the macro
-// is expanded and macro expansion cannot contain #pragma. Therefore
-// we suppress them here.
-#ifdef _MSC_VER
-# pragma warning(push)
-# pragma warning(disable:4100)
-#endif
-
+// The ACTION*() macros trigger warning C4100 (unreferenced formal
+// parameter) in MSVC with -W4. Unfortunately they cannot be fixed in
+// the macro definition, as the warnings are generated when the macro
+// is expanded and macro expansion cannot contain #pragma. Therefore
+// we suppress them here.
+#ifdef _MSC_VER
+# pragma warning(push)
+# pragma warning(disable:4100)
+#endif
+
namespace internal {
-
+
// internal::InvokeArgument - a helper for InvokeArgument action.
// The basic overloads are provided here for generic functors.
// Overloads for other custom-callables are provided in the
@@ -508,8 +508,8 @@ namespace internal {
template <typename F, typename... Args>
auto InvokeArgument(F f, Args... args) -> decltype(f(args...)) {
return f(args...);
-}
-
+}
+
template <std::size_t index, typename... Params>
struct InvokeArgumentAction {
template <typename... Args>
@@ -524,12 +524,12 @@ struct InvokeArgumentAction {
std::forward<decltype(callable)>(callable), unpacked_params...);
});
}
-
+
internal::FlatTuple<Params...> params;
};
-
+
} // namespace internal
-
+
// The InvokeArgument<N>(a1, a2, ..., a_k) action invokes the N-th
// (0-based) argument, which must be a k-ary callable, of the mock
// function, with arguments a1, a2, ..., a_k.
@@ -562,12 +562,12 @@ internal::InvokeArgumentAction<index, typename std::decay<Params>::type...>
InvokeArgument(Params&&... params) {
return {internal::FlatTuple<typename std::decay<Params>::type...>(
internal::FlatTupleConstructTag{}, std::forward<Params>(params)...)};
-}
-
-#ifdef _MSC_VER
-# pragma warning(pop)
-#endif
-
-} // namespace testing
-
+}
+
+#ifdef _MSC_VER
+# pragma warning(pop)
+#endif
+
+} // namespace testing
+
#endif // GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_MORE_ACTIONS_H_
diff --git a/contrib/restricted/googletest/googlemock/include/gmock/gmock-more-matchers.h b/contrib/restricted/googletest/googlemock/include/gmock/gmock-more-matchers.h
index 9dcc66e332..dfc77e359c 100644
--- a/contrib/restricted/googletest/googlemock/include/gmock/gmock-more-matchers.h
+++ b/contrib/restricted/googletest/googlemock/include/gmock/gmock-more-matchers.h
@@ -1,49 +1,49 @@
-// Copyright 2013, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
+// Copyright 2013, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-// Google Mock - a framework for writing C++ mock classes.
-//
+
+// Google Mock - a framework for writing C++ mock classes.
+//
// This file implements some matchers that depend on gmock-matchers.h.
-//
-// Note that tests are implemented in gmock-matchers_test.cc rather than
-// gmock-more-matchers-test.cc.
-
+//
+// Note that tests are implemented in gmock-matchers_test.cc rather than
+// gmock-more-matchers-test.cc.
+
// GOOGLETEST_CM0002 DO NOT DELETE
-
+
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_MORE_MATCHERS_H_
#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_MORE_MATCHERS_H_
#include "gmock/gmock-matchers.h"
-
-namespace testing {
-
+
+namespace testing {
+
// Silence C4100 (unreferenced formal
// parameter) for MSVC
#ifdef _MSC_VER
@@ -56,16 +56,16 @@ namespace testing {
#endif
#endif
-// Defines a matcher that matches an empty container. The container must
-// support both size() and empty(), which all STL-like containers provide.
-MATCHER(IsEmpty, negation ? "isn't empty" : "is empty") {
- if (arg.empty()) {
- return true;
- }
- *result_listener << "whose size is " << arg.size();
- return false;
-}
-
+// Defines a matcher that matches an empty container. The container must
+// support both size() and empty(), which all STL-like containers provide.
+MATCHER(IsEmpty, negation ? "isn't empty" : "is empty") {
+ if (arg.empty()) {
+ return true;
+ }
+ *result_listener << "whose size is " << arg.size();
+ return false;
+}
+
// Define a matcher that matches a value that evaluates in boolean
// context to true. Useful for types that define "explicit operator
// bool" operators and so can't be compared for equality with true
@@ -87,6 +87,6 @@ MATCHER(IsFalse, negation ? "is true" : "is false") {
#endif
-} // namespace testing
-
+} // namespace testing
+
#endif // GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_MORE_MATCHERS_H_
diff --git a/contrib/restricted/googletest/googlemock/include/gmock/gmock-spec-builders.h b/contrib/restricted/googletest/googlemock/include/gmock/gmock-spec-builders.h
index f2e77dda3c..41323c1cc0 100644
--- a/contrib/restricted/googletest/googlemock/include/gmock/gmock-spec-builders.h
+++ b/contrib/restricted/googletest/googlemock/include/gmock/gmock-spec-builders.h
@@ -1,82 +1,82 @@
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Google Mock - a framework for writing C++ mock classes.
-//
-// This file implements the ON_CALL() and EXPECT_CALL() macros.
-//
-// A user can use the ON_CALL() macro to specify the default action of
-// a mock method. The syntax is:
-//
-// ON_CALL(mock_object, Method(argument-matchers))
-// .With(multi-argument-matcher)
-// .WillByDefault(action);
-//
-// where the .With() clause is optional.
-//
-// A user can use the EXPECT_CALL() macro to specify an expectation on
-// a mock method. The syntax is:
-//
-// EXPECT_CALL(mock_object, Method(argument-matchers))
-// .With(multi-argument-matchers)
-// .Times(cardinality)
-// .InSequence(sequences)
-// .After(expectations)
-// .WillOnce(action)
-// .WillRepeatedly(action)
-// .RetiresOnSaturation();
-//
-// where all clauses are optional, and .InSequence()/.After()/
-// .WillOnce() can appear any number of times.
-
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file implements the ON_CALL() and EXPECT_CALL() macros.
+//
+// A user can use the ON_CALL() macro to specify the default action of
+// a mock method. The syntax is:
+//
+// ON_CALL(mock_object, Method(argument-matchers))
+// .With(multi-argument-matcher)
+// .WillByDefault(action);
+//
+// where the .With() clause is optional.
+//
+// A user can use the EXPECT_CALL() macro to specify an expectation on
+// a mock method. The syntax is:
+//
+// EXPECT_CALL(mock_object, Method(argument-matchers))
+// .With(multi-argument-matchers)
+// .Times(cardinality)
+// .InSequence(sequences)
+// .After(expectations)
+// .WillOnce(action)
+// .WillRepeatedly(action)
+// .RetiresOnSaturation();
+//
+// where all clauses are optional, and .InSequence()/.After()/
+// .WillOnce() can appear any number of times.
+
// GOOGLETEST_CM0002 DO NOT DELETE
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_SPEC_BUILDERS_H_
#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_SPEC_BUILDERS_H_
-
+
#include <functional>
-#include <map>
+#include <map>
#include <memory>
-#include <set>
-#include <sstream>
-#include <string>
+#include <set>
+#include <sstream>
+#include <string>
#include <type_traits>
#include <utility>
-#include <vector>
-#include "gmock/gmock-actions.h"
-#include "gmock/gmock-cardinalities.h"
-#include "gmock/gmock-matchers.h"
-#include "gmock/internal/gmock-internal-utils.h"
-#include "gmock/internal/gmock-port.h"
-#include "gtest/gtest.h"
-
+#include <vector>
+#include "gmock/gmock-actions.h"
+#include "gmock/gmock-cardinalities.h"
+#include "gmock/gmock-matchers.h"
+#include "gmock/internal/gmock-internal-utils.h"
+#include "gmock/internal/gmock-port.h"
+#include "gtest/gtest.h"
+
#if GTEST_HAS_EXCEPTIONS
# include <stdexcept> // NOLINT
#endif
@@ -84,30 +84,30 @@
GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
/* class A needs to have dll-interface to be used by clients of class B */)
-namespace testing {
-
-// An abstract handle of an expectation.
-class Expectation;
-
-// A set of expectation handles.
-class ExpectationSet;
-
-// Anything inside the 'internal' namespace IS INTERNAL IMPLEMENTATION
-// and MUST NOT BE USED IN USER CODE!!!
-namespace internal {
-
-// Implements a mock function.
-template <typename F> class FunctionMocker;
-
-// Base class for expectations.
-class ExpectationBase;
-
-// Implements an expectation.
-template <typename F> class TypedExpectation;
-
-// Helper class for testing the Expectation class template.
-class ExpectationTester;
-
+namespace testing {
+
+// An abstract handle of an expectation.
+class Expectation;
+
+// A set of expectation handles.
+class ExpectationSet;
+
+// Anything inside the 'internal' namespace IS INTERNAL IMPLEMENTATION
+// and MUST NOT BE USED IN USER CODE!!!
+namespace internal {
+
+// Implements a mock function.
+template <typename F> class FunctionMocker;
+
+// Base class for expectations.
+class ExpectationBase;
+
+// Implements an expectation.
+template <typename F> class TypedExpectation;
+
+// Helper class for testing the Expectation class template.
+class ExpectationTester;
+
// Helper classes for implementing NiceMock, StrictMock, and NaggyMock.
template <typename MockClass>
class NiceMockImpl;
@@ -116,135 +116,135 @@ class StrictMockImpl;
template <typename MockClass>
class NaggyMockImpl;
-// Protects the mock object registry (in class Mock), all function
-// mockers, and all expectations.
-//
-// The reason we don't use more fine-grained protection is: when a
-// mock function Foo() is called, it needs to consult its expectations
-// to see which one should be picked. If another thread is allowed to
-// call a mock function (either Foo() or a different one) at the same
-// time, it could affect the "retired" attributes of Foo()'s
-// expectations when InSequence() is used, and thus affect which
-// expectation gets picked. Therefore, we sequence all mock function
-// calls to ensure the integrity of the mock objects' states.
-GTEST_API_ GTEST_DECLARE_STATIC_MUTEX_(g_gmock_mutex);
-
-// Untyped base class for ActionResultHolder<R>.
-class UntypedActionResultHolderBase;
-
+// Protects the mock object registry (in class Mock), all function
+// mockers, and all expectations.
+//
+// The reason we don't use more fine-grained protection is: when a
+// mock function Foo() is called, it needs to consult its expectations
+// to see which one should be picked. If another thread is allowed to
+// call a mock function (either Foo() or a different one) at the same
+// time, it could affect the "retired" attributes of Foo()'s
+// expectations when InSequence() is used, and thus affect which
+// expectation gets picked. Therefore, we sequence all mock function
+// calls to ensure the integrity of the mock objects' states.
+GTEST_API_ GTEST_DECLARE_STATIC_MUTEX_(g_gmock_mutex);
+
+// Untyped base class for ActionResultHolder<R>.
+class UntypedActionResultHolderBase;
+
// Abstract base class of FunctionMocker. This is the
-// type-agnostic part of the function mocker interface. Its pure
+// type-agnostic part of the function mocker interface. Its pure
// virtual methods are implemented by FunctionMocker.
-class GTEST_API_ UntypedFunctionMockerBase {
- public:
- UntypedFunctionMockerBase();
- virtual ~UntypedFunctionMockerBase();
-
- // Verifies that all expectations on this mock function have been
- // satisfied. Reports one or more Google Test non-fatal failures
- // and returns false if not.
- bool VerifyAndClearExpectationsLocked()
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex);
-
- // Clears the ON_CALL()s set on this mock function.
- virtual void ClearDefaultActionsLocked()
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) = 0;
-
- // In all of the following Untyped* functions, it's the caller's
- // responsibility to guarantee the correctness of the arguments'
- // types.
-
- // Performs the default action with the given arguments and returns
- // the action's result. The call description string will be used in
- // the error message to describe the call in the case the default
- // action fails.
- // L = *
- virtual UntypedActionResultHolderBase* UntypedPerformDefaultAction(
+class GTEST_API_ UntypedFunctionMockerBase {
+ public:
+ UntypedFunctionMockerBase();
+ virtual ~UntypedFunctionMockerBase();
+
+ // Verifies that all expectations on this mock function have been
+ // satisfied. Reports one or more Google Test non-fatal failures
+ // and returns false if not.
+ bool VerifyAndClearExpectationsLocked()
+ GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex);
+
+ // Clears the ON_CALL()s set on this mock function.
+ virtual void ClearDefaultActionsLocked()
+ GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) = 0;
+
+ // In all of the following Untyped* functions, it's the caller's
+ // responsibility to guarantee the correctness of the arguments'
+ // types.
+
+ // Performs the default action with the given arguments and returns
+ // the action's result. The call description string will be used in
+ // the error message to describe the call in the case the default
+ // action fails.
+ // L = *
+ virtual UntypedActionResultHolderBase* UntypedPerformDefaultAction(
void* untyped_args, const std::string& call_description) const = 0;
-
- // Performs the given action with the given arguments and returns
- // the action's result.
- // L = *
- virtual UntypedActionResultHolderBase* UntypedPerformAction(
+
+ // Performs the given action with the given arguments and returns
+ // the action's result.
+ // L = *
+ virtual UntypedActionResultHolderBase* UntypedPerformAction(
const void* untyped_action, void* untyped_args) const = 0;
-
- // Writes a message that the call is uninteresting (i.e. neither
- // explicitly expected nor explicitly unexpected) to the given
- // ostream.
- virtual void UntypedDescribeUninterestingCall(
- const void* untyped_args,
- ::std::ostream* os) const
- GTEST_LOCK_EXCLUDED_(g_gmock_mutex) = 0;
-
- // Returns the expectation that matches the given function arguments
- // (or NULL is there's no match); when a match is found,
- // untyped_action is set to point to the action that should be
- // performed (or NULL if the action is "do default"), and
- // is_excessive is modified to indicate whether the call exceeds the
- // expected number.
- virtual const ExpectationBase* UntypedFindMatchingExpectation(
- const void* untyped_args,
- const void** untyped_action, bool* is_excessive,
- ::std::ostream* what, ::std::ostream* why)
- GTEST_LOCK_EXCLUDED_(g_gmock_mutex) = 0;
-
- // Prints the given function arguments to the ostream.
- virtual void UntypedPrintArgs(const void* untyped_args,
- ::std::ostream* os) const = 0;
-
- // Sets the mock object this mock method belongs to, and registers
- // this information in the global mock registry. Will be called
- // whenever an EXPECT_CALL() or ON_CALL() is executed on this mock
- // method.
- void RegisterOwner(const void* mock_obj)
- GTEST_LOCK_EXCLUDED_(g_gmock_mutex);
-
- // Sets the mock object this mock method belongs to, and sets the
- // name of the mock function. Will be called upon each invocation
- // of this mock function.
- void SetOwnerAndName(const void* mock_obj, const char* name)
- GTEST_LOCK_EXCLUDED_(g_gmock_mutex);
-
- // Returns the mock object this mock method belongs to. Must be
- // called after RegisterOwner() or SetOwnerAndName() has been
- // called.
- const void* MockObject() const
- GTEST_LOCK_EXCLUDED_(g_gmock_mutex);
-
- // Returns the name of this mock method. Must be called after
- // SetOwnerAndName() has been called.
- const char* Name() const
- GTEST_LOCK_EXCLUDED_(g_gmock_mutex);
-
- // Returns the result of invoking this mock function with the given
- // arguments. This function can be safely called from multiple
- // threads concurrently. The caller is responsible for deleting the
- // result.
+
+ // Writes a message that the call is uninteresting (i.e. neither
+ // explicitly expected nor explicitly unexpected) to the given
+ // ostream.
+ virtual void UntypedDescribeUninterestingCall(
+ const void* untyped_args,
+ ::std::ostream* os) const
+ GTEST_LOCK_EXCLUDED_(g_gmock_mutex) = 0;
+
+ // Returns the expectation that matches the given function arguments
+ // (or NULL is there's no match); when a match is found,
+ // untyped_action is set to point to the action that should be
+ // performed (or NULL if the action is "do default"), and
+ // is_excessive is modified to indicate whether the call exceeds the
+ // expected number.
+ virtual const ExpectationBase* UntypedFindMatchingExpectation(
+ const void* untyped_args,
+ const void** untyped_action, bool* is_excessive,
+ ::std::ostream* what, ::std::ostream* why)
+ GTEST_LOCK_EXCLUDED_(g_gmock_mutex) = 0;
+
+ // Prints the given function arguments to the ostream.
+ virtual void UntypedPrintArgs(const void* untyped_args,
+ ::std::ostream* os) const = 0;
+
+ // Sets the mock object this mock method belongs to, and registers
+ // this information in the global mock registry. Will be called
+ // whenever an EXPECT_CALL() or ON_CALL() is executed on this mock
+ // method.
+ void RegisterOwner(const void* mock_obj)
+ GTEST_LOCK_EXCLUDED_(g_gmock_mutex);
+
+ // Sets the mock object this mock method belongs to, and sets the
+ // name of the mock function. Will be called upon each invocation
+ // of this mock function.
+ void SetOwnerAndName(const void* mock_obj, const char* name)
+ GTEST_LOCK_EXCLUDED_(g_gmock_mutex);
+
+ // Returns the mock object this mock method belongs to. Must be
+ // called after RegisterOwner() or SetOwnerAndName() has been
+ // called.
+ const void* MockObject() const
+ GTEST_LOCK_EXCLUDED_(g_gmock_mutex);
+
+ // Returns the name of this mock method. Must be called after
+ // SetOwnerAndName() has been called.
+ const char* Name() const
+ GTEST_LOCK_EXCLUDED_(g_gmock_mutex);
+
+ // Returns the result of invoking this mock function with the given
+ // arguments. This function can be safely called from multiple
+ // threads concurrently. The caller is responsible for deleting the
+ // result.
UntypedActionResultHolderBase* UntypedInvokeWith(void* untyped_args)
GTEST_LOCK_EXCLUDED_(g_gmock_mutex);
-
- protected:
- typedef std::vector<const void*> UntypedOnCallSpecs;
-
+
+ protected:
+ typedef std::vector<const void*> UntypedOnCallSpecs;
+
using UntypedExpectations = std::vector<std::shared_ptr<ExpectationBase>>;
-
- // Returns an Expectation object that references and co-owns exp,
- // which must be an expectation on this mock function.
- Expectation GetHandleOf(ExpectationBase* exp);
-
- // Address of the mock object this mock method belongs to. Only
- // valid after this mock method has been called or
- // ON_CALL/EXPECT_CALL has been invoked on it.
- const void* mock_obj_; // Protected by g_gmock_mutex.
-
- // Name of the function being mocked. Only valid after this mock
- // method has been called.
- const char* name_; // Protected by g_gmock_mutex.
-
- // All default action specs for this function mocker.
- UntypedOnCallSpecs untyped_on_call_specs_;
-
- // All expectations for this function mocker.
+
+ // Returns an Expectation object that references and co-owns exp,
+ // which must be an expectation on this mock function.
+ Expectation GetHandleOf(ExpectationBase* exp);
+
+ // Address of the mock object this mock method belongs to. Only
+ // valid after this mock method has been called or
+ // ON_CALL/EXPECT_CALL has been invoked on it.
+ const void* mock_obj_; // Protected by g_gmock_mutex.
+
+ // Name of the function being mocked. Only valid after this mock
+ // method has been called.
+ const char* name_; // Protected by g_gmock_mutex.
+
+ // All default action specs for this function mocker.
+ UntypedOnCallSpecs untyped_on_call_specs_;
+
+ // All expectations for this function mocker.
//
// It's undefined behavior to interleave expectations (EXPECT_CALLs
// or ON_CALLs) and mock function calls. Also, the order of
@@ -253,156 +253,156 @@ class GTEST_API_ UntypedFunctionMockerBase {
// tools like tsan to catch concurrent read/write accesses to
// untyped_expectations, we deliberately leave accesses to it
// unprotected.
- UntypedExpectations untyped_expectations_;
-}; // class UntypedFunctionMockerBase
-
-// Untyped base class for OnCallSpec<F>.
-class UntypedOnCallSpecBase {
- public:
- // The arguments are the location of the ON_CALL() statement.
- UntypedOnCallSpecBase(const char* a_file, int a_line)
- : file_(a_file), line_(a_line), last_clause_(kNone) {}
-
- // Where in the source file was the default action spec defined?
- const char* file() const { return file_; }
- int line() const { return line_; }
-
- protected:
- // Gives each clause in the ON_CALL() statement a name.
- enum Clause {
- // Do not change the order of the enum members! The run-time
- // syntax checking relies on it.
- kNone,
- kWith,
- kWillByDefault
- };
-
- // Asserts that the ON_CALL() statement has a certain property.
+ UntypedExpectations untyped_expectations_;
+}; // class UntypedFunctionMockerBase
+
+// Untyped base class for OnCallSpec<F>.
+class UntypedOnCallSpecBase {
+ public:
+ // The arguments are the location of the ON_CALL() statement.
+ UntypedOnCallSpecBase(const char* a_file, int a_line)
+ : file_(a_file), line_(a_line), last_clause_(kNone) {}
+
+ // Where in the source file was the default action spec defined?
+ const char* file() const { return file_; }
+ int line() const { return line_; }
+
+ protected:
+ // Gives each clause in the ON_CALL() statement a name.
+ enum Clause {
+ // Do not change the order of the enum members! The run-time
+ // syntax checking relies on it.
+ kNone,
+ kWith,
+ kWillByDefault
+ };
+
+ // Asserts that the ON_CALL() statement has a certain property.
void AssertSpecProperty(bool property,
const std::string& failure_message) const {
- Assert(property, file_, line_, failure_message);
- }
-
- // Expects that the ON_CALL() statement has a certain property.
+ Assert(property, file_, line_, failure_message);
+ }
+
+ // Expects that the ON_CALL() statement has a certain property.
void ExpectSpecProperty(bool property,
const std::string& failure_message) const {
- Expect(property, file_, line_, failure_message);
- }
-
- const char* file_;
- int line_;
-
- // The last clause in the ON_CALL() statement as seen so far.
- // Initially kNone and changes as the statement is parsed.
- Clause last_clause_;
-}; // class UntypedOnCallSpecBase
-
-// This template class implements an ON_CALL spec.
-template <typename F>
-class OnCallSpec : public UntypedOnCallSpecBase {
- public:
- typedef typename Function<F>::ArgumentTuple ArgumentTuple;
- typedef typename Function<F>::ArgumentMatcherTuple ArgumentMatcherTuple;
-
- // Constructs an OnCallSpec object from the information inside
- // the parenthesis of an ON_CALL() statement.
- OnCallSpec(const char* a_file, int a_line,
- const ArgumentMatcherTuple& matchers)
- : UntypedOnCallSpecBase(a_file, a_line),
- matchers_(matchers),
- // By default, extra_matcher_ should match anything. However,
+ Expect(property, file_, line_, failure_message);
+ }
+
+ const char* file_;
+ int line_;
+
+ // The last clause in the ON_CALL() statement as seen so far.
+ // Initially kNone and changes as the statement is parsed.
+ Clause last_clause_;
+}; // class UntypedOnCallSpecBase
+
+// This template class implements an ON_CALL spec.
+template <typename F>
+class OnCallSpec : public UntypedOnCallSpecBase {
+ public:
+ typedef typename Function<F>::ArgumentTuple ArgumentTuple;
+ typedef typename Function<F>::ArgumentMatcherTuple ArgumentMatcherTuple;
+
+ // Constructs an OnCallSpec object from the information inside
+ // the parenthesis of an ON_CALL() statement.
+ OnCallSpec(const char* a_file, int a_line,
+ const ArgumentMatcherTuple& matchers)
+ : UntypedOnCallSpecBase(a_file, a_line),
+ matchers_(matchers),
+ // By default, extra_matcher_ should match anything. However,
// we cannot initialize it with _ as that causes ambiguity between
// Matcher's copy and move constructor for some argument types.
extra_matcher_(A<const ArgumentTuple&>()) {}
-
- // Implements the .With() clause.
- OnCallSpec& With(const Matcher<const ArgumentTuple&>& m) {
- // Makes sure this is called at most once.
- ExpectSpecProperty(last_clause_ < kWith,
- ".With() cannot appear "
- "more than once in an ON_CALL().");
- last_clause_ = kWith;
-
- extra_matcher_ = m;
- return *this;
- }
-
- // Implements the .WillByDefault() clause.
- OnCallSpec& WillByDefault(const Action<F>& action) {
- ExpectSpecProperty(last_clause_ < kWillByDefault,
- ".WillByDefault() must appear "
- "exactly once in an ON_CALL().");
- last_clause_ = kWillByDefault;
-
- ExpectSpecProperty(!action.IsDoDefault(),
- "DoDefault() cannot be used in ON_CALL().");
- action_ = action;
- return *this;
- }
-
+
+ // Implements the .With() clause.
+ OnCallSpec& With(const Matcher<const ArgumentTuple&>& m) {
+ // Makes sure this is called at most once.
+ ExpectSpecProperty(last_clause_ < kWith,
+ ".With() cannot appear "
+ "more than once in an ON_CALL().");
+ last_clause_ = kWith;
+
+ extra_matcher_ = m;
+ return *this;
+ }
+
+ // Implements the .WillByDefault() clause.
+ OnCallSpec& WillByDefault(const Action<F>& action) {
+ ExpectSpecProperty(last_clause_ < kWillByDefault,
+ ".WillByDefault() must appear "
+ "exactly once in an ON_CALL().");
+ last_clause_ = kWillByDefault;
+
+ ExpectSpecProperty(!action.IsDoDefault(),
+ "DoDefault() cannot be used in ON_CALL().");
+ action_ = action;
+ return *this;
+ }
+
// Returns true if and only if the given arguments match the matchers.
- bool Matches(const ArgumentTuple& args) const {
- return TupleMatches(matchers_, args) && extra_matcher_.Matches(args);
- }
-
- // Returns the action specified by the user.
- const Action<F>& GetAction() const {
- AssertSpecProperty(last_clause_ == kWillByDefault,
- ".WillByDefault() must appear exactly "
- "once in an ON_CALL().");
- return action_;
- }
-
- private:
- // The information in statement
- //
- // ON_CALL(mock_object, Method(matchers))
- // .With(multi-argument-matcher)
- // .WillByDefault(action);
- //
- // is recorded in the data members like this:
- //
- // source file that contains the statement => file_
- // line number of the statement => line_
- // matchers => matchers_
- // multi-argument-matcher => extra_matcher_
- // action => action_
- ArgumentMatcherTuple matchers_;
- Matcher<const ArgumentTuple&> extra_matcher_;
- Action<F> action_;
-}; // class OnCallSpec
-
-// Possible reactions on uninteresting calls.
-enum CallReaction {
- kAllow,
- kWarn,
- kFail,
-};
-
-} // namespace internal
-
-// Utilities for manipulating mock objects.
-class GTEST_API_ Mock {
- public:
- // The following public methods can be called concurrently.
-
- // Tells Google Mock to ignore mock_obj when checking for leaked
- // mock objects.
- static void AllowLeak(const void* mock_obj)
- GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
-
- // Verifies and clears all expectations on the given mock object.
- // If the expectations aren't satisfied, generates one or more
- // Google Test non-fatal failures and returns false.
- static bool VerifyAndClearExpectations(void* mock_obj)
- GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
-
- // Verifies all expectations on the given mock object and clears its
+ bool Matches(const ArgumentTuple& args) const {
+ return TupleMatches(matchers_, args) && extra_matcher_.Matches(args);
+ }
+
+ // Returns the action specified by the user.
+ const Action<F>& GetAction() const {
+ AssertSpecProperty(last_clause_ == kWillByDefault,
+ ".WillByDefault() must appear exactly "
+ "once in an ON_CALL().");
+ return action_;
+ }
+
+ private:
+ // The information in statement
+ //
+ // ON_CALL(mock_object, Method(matchers))
+ // .With(multi-argument-matcher)
+ // .WillByDefault(action);
+ //
+ // is recorded in the data members like this:
+ //
+ // source file that contains the statement => file_
+ // line number of the statement => line_
+ // matchers => matchers_
+ // multi-argument-matcher => extra_matcher_
+ // action => action_
+ ArgumentMatcherTuple matchers_;
+ Matcher<const ArgumentTuple&> extra_matcher_;
+ Action<F> action_;
+}; // class OnCallSpec
+
+// Possible reactions on uninteresting calls.
+enum CallReaction {
+ kAllow,
+ kWarn,
+ kFail,
+};
+
+} // namespace internal
+
+// Utilities for manipulating mock objects.
+class GTEST_API_ Mock {
+ public:
+ // The following public methods can be called concurrently.
+
+ // Tells Google Mock to ignore mock_obj when checking for leaked
+ // mock objects.
+ static void AllowLeak(const void* mock_obj)
+ GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
+
+ // Verifies and clears all expectations on the given mock object.
+ // If the expectations aren't satisfied, generates one or more
+ // Google Test non-fatal failures and returns false.
+ static bool VerifyAndClearExpectations(void* mock_obj)
+ GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
+
+ // Verifies all expectations on the given mock object and clears its
// default actions and expectations. Returns true if and only if the
- // verification was successful.
- static bool VerifyAndClear(void* mock_obj)
- GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
-
+ // verification was successful.
+ static bool VerifyAndClear(void* mock_obj)
+ GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
+
// Returns whether the mock was created as a naggy mock (default)
static bool IsNaggy(void* mock_obj)
GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
@@ -413,880 +413,880 @@ class GTEST_API_ Mock {
static bool IsStrict(void* mock_obj)
GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
- private:
- friend class internal::UntypedFunctionMockerBase;
-
- // Needed for a function mocker to register itself (so that we know
- // how to clear a mock object).
- template <typename F>
+ private:
+ friend class internal::UntypedFunctionMockerBase;
+
+ // Needed for a function mocker to register itself (so that we know
+ // how to clear a mock object).
+ template <typename F>
friend class internal::FunctionMocker;
-
+
template <typename MockClass>
friend class internal::NiceMockImpl;
template <typename MockClass>
friend class internal::NaggyMockImpl;
template <typename MockClass>
friend class internal::StrictMockImpl;
-
- // Tells Google Mock to allow uninteresting calls on the given mock
- // object.
- static void AllowUninterestingCalls(const void* mock_obj)
- GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
-
- // Tells Google Mock to warn the user about uninteresting calls on
- // the given mock object.
- static void WarnUninterestingCalls(const void* mock_obj)
- GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
-
- // Tells Google Mock to fail uninteresting calls on the given mock
- // object.
- static void FailUninterestingCalls(const void* mock_obj)
- GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
-
- // Tells Google Mock the given mock object is being destroyed and
- // its entry in the call-reaction table should be removed.
- static void UnregisterCallReaction(const void* mock_obj)
- GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
-
- // Returns the reaction Google Mock will have on uninteresting calls
- // made on the given mock object.
- static internal::CallReaction GetReactionOnUninterestingCalls(
- const void* mock_obj)
- GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
-
- // Verifies that all expectations on the given mock object have been
- // satisfied. Reports one or more Google Test non-fatal failures
- // and returns false if not.
- static bool VerifyAndClearExpectationsLocked(void* mock_obj)
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(internal::g_gmock_mutex);
-
- // Clears all ON_CALL()s set on the given mock object.
- static void ClearDefaultActionsLocked(void* mock_obj)
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(internal::g_gmock_mutex);
-
- // Registers a mock object and a mock method it owns.
- static void Register(
- const void* mock_obj,
- internal::UntypedFunctionMockerBase* mocker)
- GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
-
- // Tells Google Mock where in the source code mock_obj is used in an
- // ON_CALL or EXPECT_CALL. In case mock_obj is leaked, this
- // information helps the user identify which object it is.
- static void RegisterUseByOnCallOrExpectCall(
- const void* mock_obj, const char* file, int line)
- GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
-
- // Unregisters a mock method; removes the owning mock object from
- // the registry when the last mock method associated with it has
- // been unregistered. This is called only in the destructor of
+
+ // Tells Google Mock to allow uninteresting calls on the given mock
+ // object.
+ static void AllowUninterestingCalls(const void* mock_obj)
+ GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
+
+ // Tells Google Mock to warn the user about uninteresting calls on
+ // the given mock object.
+ static void WarnUninterestingCalls(const void* mock_obj)
+ GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
+
+ // Tells Google Mock to fail uninteresting calls on the given mock
+ // object.
+ static void FailUninterestingCalls(const void* mock_obj)
+ GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
+
+ // Tells Google Mock the given mock object is being destroyed and
+ // its entry in the call-reaction table should be removed.
+ static void UnregisterCallReaction(const void* mock_obj)
+ GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
+
+ // Returns the reaction Google Mock will have on uninteresting calls
+ // made on the given mock object.
+ static internal::CallReaction GetReactionOnUninterestingCalls(
+ const void* mock_obj)
+ GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
+
+ // Verifies that all expectations on the given mock object have been
+ // satisfied. Reports one or more Google Test non-fatal failures
+ // and returns false if not.
+ static bool VerifyAndClearExpectationsLocked(void* mock_obj)
+ GTEST_EXCLUSIVE_LOCK_REQUIRED_(internal::g_gmock_mutex);
+
+ // Clears all ON_CALL()s set on the given mock object.
+ static void ClearDefaultActionsLocked(void* mock_obj)
+ GTEST_EXCLUSIVE_LOCK_REQUIRED_(internal::g_gmock_mutex);
+
+ // Registers a mock object and a mock method it owns.
+ static void Register(
+ const void* mock_obj,
+ internal::UntypedFunctionMockerBase* mocker)
+ GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
+
+ // Tells Google Mock where in the source code mock_obj is used in an
+ // ON_CALL or EXPECT_CALL. In case mock_obj is leaked, this
+ // information helps the user identify which object it is.
+ static void RegisterUseByOnCallOrExpectCall(
+ const void* mock_obj, const char* file, int line)
+ GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
+
+ // Unregisters a mock method; removes the owning mock object from
+ // the registry when the last mock method associated with it has
+ // been unregistered. This is called only in the destructor of
// FunctionMocker.
- static void UnregisterLocked(internal::UntypedFunctionMockerBase* mocker)
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(internal::g_gmock_mutex);
-}; // class Mock
-
-// An abstract handle of an expectation. Useful in the .After()
-// clause of EXPECT_CALL() for setting the (partial) order of
-// expectations. The syntax:
-//
-// Expectation e1 = EXPECT_CALL(...)...;
-// EXPECT_CALL(...).After(e1)...;
-//
-// sets two expectations where the latter can only be matched after
-// the former has been satisfied.
-//
-// Notes:
-// - This class is copyable and has value semantics.
-// - Constness is shallow: a const Expectation object itself cannot
-// be modified, but the mutable methods of the ExpectationBase
-// object it references can be called via expectation_base().
-
-class GTEST_API_ Expectation {
- public:
- // Constructs a null object that doesn't reference any expectation.
- Expectation();
+ static void UnregisterLocked(internal::UntypedFunctionMockerBase* mocker)
+ GTEST_EXCLUSIVE_LOCK_REQUIRED_(internal::g_gmock_mutex);
+}; // class Mock
+
+// An abstract handle of an expectation. Useful in the .After()
+// clause of EXPECT_CALL() for setting the (partial) order of
+// expectations. The syntax:
+//
+// Expectation e1 = EXPECT_CALL(...)...;
+// EXPECT_CALL(...).After(e1)...;
+//
+// sets two expectations where the latter can only be matched after
+// the former has been satisfied.
+//
+// Notes:
+// - This class is copyable and has value semantics.
+// - Constness is shallow: a const Expectation object itself cannot
+// be modified, but the mutable methods of the ExpectationBase
+// object it references can be called via expectation_base().
+
+class GTEST_API_ Expectation {
+ public:
+ // Constructs a null object that doesn't reference any expectation.
+ Expectation();
Expectation(Expectation&&) = default;
Expectation(const Expectation&) = default;
Expectation& operator=(Expectation&&) = default;
Expectation& operator=(const Expectation&) = default;
- ~Expectation();
-
- // This single-argument ctor must not be explicit, in order to support the
- // Expectation e = EXPECT_CALL(...);
- // syntax.
- //
- // A TypedExpectation object stores its pre-requisites as
- // Expectation objects, and needs to call the non-const Retire()
- // method on the ExpectationBase objects they reference. Therefore
- // Expectation must receive a *non-const* reference to the
- // ExpectationBase object.
- Expectation(internal::ExpectationBase& exp); // NOLINT
-
- // The compiler-generated copy ctor and operator= work exactly as
- // intended, so we don't need to define our own.
-
+ ~Expectation();
+
+ // This single-argument ctor must not be explicit, in order to support the
+ // Expectation e = EXPECT_CALL(...);
+ // syntax.
+ //
+ // A TypedExpectation object stores its pre-requisites as
+ // Expectation objects, and needs to call the non-const Retire()
+ // method on the ExpectationBase objects they reference. Therefore
+ // Expectation must receive a *non-const* reference to the
+ // ExpectationBase object.
+ Expectation(internal::ExpectationBase& exp); // NOLINT
+
+ // The compiler-generated copy ctor and operator= work exactly as
+ // intended, so we don't need to define our own.
+
// Returns true if and only if rhs references the same expectation as this
// object does.
- bool operator==(const Expectation& rhs) const {
- return expectation_base_ == rhs.expectation_base_;
- }
-
- bool operator!=(const Expectation& rhs) const { return !(*this == rhs); }
-
- private:
- friend class ExpectationSet;
- friend class Sequence;
- friend class ::testing::internal::ExpectationBase;
- friend class ::testing::internal::UntypedFunctionMockerBase;
-
- template <typename F>
+ bool operator==(const Expectation& rhs) const {
+ return expectation_base_ == rhs.expectation_base_;
+ }
+
+ bool operator!=(const Expectation& rhs) const { return !(*this == rhs); }
+
+ private:
+ friend class ExpectationSet;
+ friend class Sequence;
+ friend class ::testing::internal::ExpectationBase;
+ friend class ::testing::internal::UntypedFunctionMockerBase;
+
+ template <typename F>
friend class ::testing::internal::FunctionMocker;
-
- template <typename F>
- friend class ::testing::internal::TypedExpectation;
-
- // This comparator is needed for putting Expectation objects into a set.
- class Less {
- public:
- bool operator()(const Expectation& lhs, const Expectation& rhs) const {
- return lhs.expectation_base_.get() < rhs.expectation_base_.get();
- }
- };
-
- typedef ::std::set<Expectation, Less> Set;
-
- Expectation(
+
+ template <typename F>
+ friend class ::testing::internal::TypedExpectation;
+
+ // This comparator is needed for putting Expectation objects into a set.
+ class Less {
+ public:
+ bool operator()(const Expectation& lhs, const Expectation& rhs) const {
+ return lhs.expectation_base_.get() < rhs.expectation_base_.get();
+ }
+ };
+
+ typedef ::std::set<Expectation, Less> Set;
+
+ Expectation(
const std::shared_ptr<internal::ExpectationBase>& expectation_base);
-
- // Returns the expectation this object references.
+
+ // Returns the expectation this object references.
const std::shared_ptr<internal::ExpectationBase>& expectation_base() const {
- return expectation_base_;
- }
-
+ return expectation_base_;
+ }
+
// A shared_ptr that co-owns the expectation this handle references.
std::shared_ptr<internal::ExpectationBase> expectation_base_;
-};
-
-// A set of expectation handles. Useful in the .After() clause of
-// EXPECT_CALL() for setting the (partial) order of expectations. The
-// syntax:
-//
-// ExpectationSet es;
-// es += EXPECT_CALL(...)...;
-// es += EXPECT_CALL(...)...;
-// EXPECT_CALL(...).After(es)...;
-//
-// sets three expectations where the last one can only be matched
-// after the first two have both been satisfied.
-//
-// This class is copyable and has value semantics.
-class ExpectationSet {
- public:
- // A bidirectional iterator that can read a const element in the set.
- typedef Expectation::Set::const_iterator const_iterator;
-
- // An object stored in the set. This is an alias of Expectation.
- typedef Expectation::Set::value_type value_type;
-
- // Constructs an empty set.
- ExpectationSet() {}
-
- // This single-argument ctor must not be explicit, in order to support the
- // ExpectationSet es = EXPECT_CALL(...);
- // syntax.
- ExpectationSet(internal::ExpectationBase& exp) { // NOLINT
- *this += Expectation(exp);
- }
-
- // This single-argument ctor implements implicit conversion from
- // Expectation and thus must not be explicit. This allows either an
- // Expectation or an ExpectationSet to be used in .After().
- ExpectationSet(const Expectation& e) { // NOLINT
- *this += e;
- }
-
- // The compiler-generator ctor and operator= works exactly as
- // intended, so we don't need to define our own.
-
+};
+
+// A set of expectation handles. Useful in the .After() clause of
+// EXPECT_CALL() for setting the (partial) order of expectations. The
+// syntax:
+//
+// ExpectationSet es;
+// es += EXPECT_CALL(...)...;
+// es += EXPECT_CALL(...)...;
+// EXPECT_CALL(...).After(es)...;
+//
+// sets three expectations where the last one can only be matched
+// after the first two have both been satisfied.
+//
+// This class is copyable and has value semantics.
+class ExpectationSet {
+ public:
+ // A bidirectional iterator that can read a const element in the set.
+ typedef Expectation::Set::const_iterator const_iterator;
+
+ // An object stored in the set. This is an alias of Expectation.
+ typedef Expectation::Set::value_type value_type;
+
+ // Constructs an empty set.
+ ExpectationSet() {}
+
+ // This single-argument ctor must not be explicit, in order to support the
+ // ExpectationSet es = EXPECT_CALL(...);
+ // syntax.
+ ExpectationSet(internal::ExpectationBase& exp) { // NOLINT
+ *this += Expectation(exp);
+ }
+
+ // This single-argument ctor implements implicit conversion from
+ // Expectation and thus must not be explicit. This allows either an
+ // Expectation or an ExpectationSet to be used in .After().
+ ExpectationSet(const Expectation& e) { // NOLINT
+ *this += e;
+ }
+
+ // The compiler-generator ctor and operator= works exactly as
+ // intended, so we don't need to define our own.
+
// Returns true if and only if rhs contains the same set of Expectation
// objects as this does.
- bool operator==(const ExpectationSet& rhs) const {
- return expectations_ == rhs.expectations_;
- }
-
- bool operator!=(const ExpectationSet& rhs) const { return !(*this == rhs); }
-
- // Implements the syntax
- // expectation_set += EXPECT_CALL(...);
- ExpectationSet& operator+=(const Expectation& e) {
- expectations_.insert(e);
- return *this;
- }
-
- int size() const { return static_cast<int>(expectations_.size()); }
-
- const_iterator begin() const { return expectations_.begin(); }
- const_iterator end() const { return expectations_.end(); }
-
- private:
- Expectation::Set expectations_;
-};
-
-
-// Sequence objects are used by a user to specify the relative order
-// in which the expectations should match. They are copyable (we rely
-// on the compiler-defined copy constructor and assignment operator).
-class GTEST_API_ Sequence {
- public:
- // Constructs an empty sequence.
- Sequence() : last_expectation_(new Expectation) {}
-
- // Adds an expectation to this sequence. The caller must ensure
- // that no other thread is accessing this Sequence object.
- void AddExpectation(const Expectation& expectation) const;
-
- private:
+ bool operator==(const ExpectationSet& rhs) const {
+ return expectations_ == rhs.expectations_;
+ }
+
+ bool operator!=(const ExpectationSet& rhs) const { return !(*this == rhs); }
+
+ // Implements the syntax
+ // expectation_set += EXPECT_CALL(...);
+ ExpectationSet& operator+=(const Expectation& e) {
+ expectations_.insert(e);
+ return *this;
+ }
+
+ int size() const { return static_cast<int>(expectations_.size()); }
+
+ const_iterator begin() const { return expectations_.begin(); }
+ const_iterator end() const { return expectations_.end(); }
+
+ private:
+ Expectation::Set expectations_;
+};
+
+
+// Sequence objects are used by a user to specify the relative order
+// in which the expectations should match. They are copyable (we rely
+// on the compiler-defined copy constructor and assignment operator).
+class GTEST_API_ Sequence {
+ public:
+ // Constructs an empty sequence.
+ Sequence() : last_expectation_(new Expectation) {}
+
+ // Adds an expectation to this sequence. The caller must ensure
+ // that no other thread is accessing this Sequence object.
+ void AddExpectation(const Expectation& expectation) const;
+
+ private:
// The last expectation in this sequence.
std::shared_ptr<Expectation> last_expectation_;
-}; // class Sequence
-
-// An object of this type causes all EXPECT_CALL() statements
-// encountered in its scope to be put in an anonymous sequence. The
-// work is done in the constructor and destructor. You should only
-// create an InSequence object on the stack.
-//
-// The sole purpose for this class is to support easy definition of
-// sequential expectations, e.g.
-//
-// {
-// InSequence dummy; // The name of the object doesn't matter.
-//
-// // The following expectations must match in the order they appear.
-// EXPECT_CALL(a, Bar())...;
-// EXPECT_CALL(a, Baz())...;
-// ...
-// EXPECT_CALL(b, Xyz())...;
-// }
-//
-// You can create InSequence objects in multiple threads, as long as
-// they are used to affect different mock objects. The idea is that
-// each thread can create and set up its own mocks as if it's the only
-// thread. However, for clarity of your tests we recommend you to set
-// up mocks in the main thread unless you have a good reason not to do
-// so.
-class GTEST_API_ InSequence {
- public:
- InSequence();
- ~InSequence();
- private:
- bool sequence_created_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(InSequence); // NOLINT
-} GTEST_ATTRIBUTE_UNUSED_;
-
-namespace internal {
-
-// Points to the implicit sequence introduced by a living InSequence
-// object (if any) in the current thread or NULL.
-GTEST_API_ extern ThreadLocal<Sequence*> g_gmock_implicit_sequence;
-
-// Base class for implementing expectations.
-//
-// There are two reasons for having a type-agnostic base class for
-// Expectation:
-//
-// 1. We need to store collections of expectations of different
-// types (e.g. all pre-requisites of a particular expectation, all
-// expectations in a sequence). Therefore these expectation objects
-// must share a common base class.
-//
-// 2. We can avoid binary code bloat by moving methods not depending
-// on the template argument of Expectation to the base class.
-//
-// This class is internal and mustn't be used by user code directly.
-class GTEST_API_ ExpectationBase {
- public:
- // source_text is the EXPECT_CALL(...) source that created this Expectation.
+}; // class Sequence
+
+// An object of this type causes all EXPECT_CALL() statements
+// encountered in its scope to be put in an anonymous sequence. The
+// work is done in the constructor and destructor. You should only
+// create an InSequence object on the stack.
+//
+// The sole purpose for this class is to support easy definition of
+// sequential expectations, e.g.
+//
+// {
+// InSequence dummy; // The name of the object doesn't matter.
+//
+// // The following expectations must match in the order they appear.
+// EXPECT_CALL(a, Bar())...;
+// EXPECT_CALL(a, Baz())...;
+// ...
+// EXPECT_CALL(b, Xyz())...;
+// }
+//
+// You can create InSequence objects in multiple threads, as long as
+// they are used to affect different mock objects. The idea is that
+// each thread can create and set up its own mocks as if it's the only
+// thread. However, for clarity of your tests we recommend you to set
+// up mocks in the main thread unless you have a good reason not to do
+// so.
+class GTEST_API_ InSequence {
+ public:
+ InSequence();
+ ~InSequence();
+ private:
+ bool sequence_created_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(InSequence); // NOLINT
+} GTEST_ATTRIBUTE_UNUSED_;
+
+namespace internal {
+
+// Points to the implicit sequence introduced by a living InSequence
+// object (if any) in the current thread or NULL.
+GTEST_API_ extern ThreadLocal<Sequence*> g_gmock_implicit_sequence;
+
+// Base class for implementing expectations.
+//
+// There are two reasons for having a type-agnostic base class for
+// Expectation:
+//
+// 1. We need to store collections of expectations of different
+// types (e.g. all pre-requisites of a particular expectation, all
+// expectations in a sequence). Therefore these expectation objects
+// must share a common base class.
+//
+// 2. We can avoid binary code bloat by moving methods not depending
+// on the template argument of Expectation to the base class.
+//
+// This class is internal and mustn't be used by user code directly.
+class GTEST_API_ ExpectationBase {
+ public:
+ // source_text is the EXPECT_CALL(...) source that created this Expectation.
ExpectationBase(const char* file, int line, const std::string& source_text);
-
- virtual ~ExpectationBase();
-
- // Where in the source file was the expectation spec defined?
- const char* file() const { return file_; }
- int line() const { return line_; }
- const char* source_text() const { return source_text_.c_str(); }
- // Returns the cardinality specified in the expectation spec.
- const Cardinality& cardinality() const { return cardinality_; }
-
- // Describes the source file location of this expectation.
- void DescribeLocationTo(::std::ostream* os) const {
- *os << FormatFileLocation(file(), line()) << " ";
- }
-
- // Describes how many times a function call matching this
- // expectation has occurred.
- void DescribeCallCountTo(::std::ostream* os) const
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex);
-
- // If this mock method has an extra matcher (i.e. .With(matcher)),
- // describes it to the ostream.
- virtual void MaybeDescribeExtraMatcherTo(::std::ostream* os) = 0;
-
- protected:
- friend class ::testing::Expectation;
- friend class UntypedFunctionMockerBase;
-
- enum Clause {
- // Don't change the order of the enum members!
- kNone,
- kWith,
- kTimes,
- kInSequence,
- kAfter,
- kWillOnce,
- kWillRepeatedly,
- kRetiresOnSaturation
- };
-
- typedef std::vector<const void*> UntypedActions;
-
- // Returns an Expectation object that references and co-owns this
- // expectation.
- virtual Expectation GetHandle() = 0;
-
- // Asserts that the EXPECT_CALL() statement has the given property.
+
+ virtual ~ExpectationBase();
+
+ // Where in the source file was the expectation spec defined?
+ const char* file() const { return file_; }
+ int line() const { return line_; }
+ const char* source_text() const { return source_text_.c_str(); }
+ // Returns the cardinality specified in the expectation spec.
+ const Cardinality& cardinality() const { return cardinality_; }
+
+ // Describes the source file location of this expectation.
+ void DescribeLocationTo(::std::ostream* os) const {
+ *os << FormatFileLocation(file(), line()) << " ";
+ }
+
+ // Describes how many times a function call matching this
+ // expectation has occurred.
+ void DescribeCallCountTo(::std::ostream* os) const
+ GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex);
+
+ // If this mock method has an extra matcher (i.e. .With(matcher)),
+ // describes it to the ostream.
+ virtual void MaybeDescribeExtraMatcherTo(::std::ostream* os) = 0;
+
+ protected:
+ friend class ::testing::Expectation;
+ friend class UntypedFunctionMockerBase;
+
+ enum Clause {
+ // Don't change the order of the enum members!
+ kNone,
+ kWith,
+ kTimes,
+ kInSequence,
+ kAfter,
+ kWillOnce,
+ kWillRepeatedly,
+ kRetiresOnSaturation
+ };
+
+ typedef std::vector<const void*> UntypedActions;
+
+ // Returns an Expectation object that references and co-owns this
+ // expectation.
+ virtual Expectation GetHandle() = 0;
+
+ // Asserts that the EXPECT_CALL() statement has the given property.
void AssertSpecProperty(bool property,
const std::string& failure_message) const {
- Assert(property, file_, line_, failure_message);
- }
-
- // Expects that the EXPECT_CALL() statement has the given property.
+ Assert(property, file_, line_, failure_message);
+ }
+
+ // Expects that the EXPECT_CALL() statement has the given property.
void ExpectSpecProperty(bool property,
const std::string& failure_message) const {
- Expect(property, file_, line_, failure_message);
- }
-
- // Explicitly specifies the cardinality of this expectation. Used
- // by the subclasses to implement the .Times() clause.
- void SpecifyCardinality(const Cardinality& cardinality);
-
+ Expect(property, file_, line_, failure_message);
+ }
+
+ // Explicitly specifies the cardinality of this expectation. Used
+ // by the subclasses to implement the .Times() clause.
+ void SpecifyCardinality(const Cardinality& cardinality);
+
// Returns true if and only if the user specified the cardinality
// explicitly using a .Times().
- bool cardinality_specified() const { return cardinality_specified_; }
-
- // Sets the cardinality of this expectation spec.
- void set_cardinality(const Cardinality& a_cardinality) {
- cardinality_ = a_cardinality;
- }
-
- // The following group of methods should only be called after the
- // EXPECT_CALL() statement, and only when g_gmock_mutex is held by
- // the current thread.
-
- // Retires all pre-requisites of this expectation.
- void RetireAllPreRequisites()
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex);
-
+ bool cardinality_specified() const { return cardinality_specified_; }
+
+ // Sets the cardinality of this expectation spec.
+ void set_cardinality(const Cardinality& a_cardinality) {
+ cardinality_ = a_cardinality;
+ }
+
+ // The following group of methods should only be called after the
+ // EXPECT_CALL() statement, and only when g_gmock_mutex is held by
+ // the current thread.
+
+ // Retires all pre-requisites of this expectation.
+ void RetireAllPreRequisites()
+ GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex);
+
// Returns true if and only if this expectation is retired.
- bool is_retired() const
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
- g_gmock_mutex.AssertHeld();
- return retired_;
- }
-
- // Retires this expectation.
- void Retire()
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
- g_gmock_mutex.AssertHeld();
- retired_ = true;
- }
-
+ bool is_retired() const
+ GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+ g_gmock_mutex.AssertHeld();
+ return retired_;
+ }
+
+ // Retires this expectation.
+ void Retire()
+ GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+ g_gmock_mutex.AssertHeld();
+ retired_ = true;
+ }
+
// Returns true if and only if this expectation is satisfied.
- bool IsSatisfied() const
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
- g_gmock_mutex.AssertHeld();
- return cardinality().IsSatisfiedByCallCount(call_count_);
- }
-
+ bool IsSatisfied() const
+ GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+ g_gmock_mutex.AssertHeld();
+ return cardinality().IsSatisfiedByCallCount(call_count_);
+ }
+
// Returns true if and only if this expectation is saturated.
- bool IsSaturated() const
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
- g_gmock_mutex.AssertHeld();
- return cardinality().IsSaturatedByCallCount(call_count_);
- }
-
+ bool IsSaturated() const
+ GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+ g_gmock_mutex.AssertHeld();
+ return cardinality().IsSaturatedByCallCount(call_count_);
+ }
+
// Returns true if and only if this expectation is over-saturated.
- bool IsOverSaturated() const
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
- g_gmock_mutex.AssertHeld();
- return cardinality().IsOverSaturatedByCallCount(call_count_);
- }
-
+ bool IsOverSaturated() const
+ GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+ g_gmock_mutex.AssertHeld();
+ return cardinality().IsOverSaturatedByCallCount(call_count_);
+ }
+
// Returns true if and only if all pre-requisites of this expectation are
// satisfied.
- bool AllPrerequisitesAreSatisfied() const
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex);
-
- // Adds unsatisfied pre-requisites of this expectation to 'result'.
- void FindUnsatisfiedPrerequisites(ExpectationSet* result) const
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex);
-
- // Returns the number this expectation has been invoked.
- int call_count() const
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
- g_gmock_mutex.AssertHeld();
- return call_count_;
- }
-
- // Increments the number this expectation has been invoked.
- void IncrementCallCount()
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
- g_gmock_mutex.AssertHeld();
- call_count_++;
- }
-
- // Checks the action count (i.e. the number of WillOnce() and
- // WillRepeatedly() clauses) against the cardinality if this hasn't
- // been done before. Prints a warning if there are too many or too
- // few actions.
- void CheckActionCountIfNotDone() const
- GTEST_LOCK_EXCLUDED_(mutex_);
-
- friend class ::testing::Sequence;
- friend class ::testing::internal::ExpectationTester;
-
- template <typename Function>
- friend class TypedExpectation;
-
- // Implements the .Times() clause.
- void UntypedTimes(const Cardinality& a_cardinality);
-
- // This group of fields are part of the spec and won't change after
- // an EXPECT_CALL() statement finishes.
- const char* file_; // The file that contains the expectation.
- int line_; // The line number of the expectation.
+ bool AllPrerequisitesAreSatisfied() const
+ GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex);
+
+ // Adds unsatisfied pre-requisites of this expectation to 'result'.
+ void FindUnsatisfiedPrerequisites(ExpectationSet* result) const
+ GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex);
+
+ // Returns the number this expectation has been invoked.
+ int call_count() const
+ GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+ g_gmock_mutex.AssertHeld();
+ return call_count_;
+ }
+
+ // Increments the number this expectation has been invoked.
+ void IncrementCallCount()
+ GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+ g_gmock_mutex.AssertHeld();
+ call_count_++;
+ }
+
+ // Checks the action count (i.e. the number of WillOnce() and
+ // WillRepeatedly() clauses) against the cardinality if this hasn't
+ // been done before. Prints a warning if there are too many or too
+ // few actions.
+ void CheckActionCountIfNotDone() const
+ GTEST_LOCK_EXCLUDED_(mutex_);
+
+ friend class ::testing::Sequence;
+ friend class ::testing::internal::ExpectationTester;
+
+ template <typename Function>
+ friend class TypedExpectation;
+
+ // Implements the .Times() clause.
+ void UntypedTimes(const Cardinality& a_cardinality);
+
+ // This group of fields are part of the spec and won't change after
+ // an EXPECT_CALL() statement finishes.
+ const char* file_; // The file that contains the expectation.
+ int line_; // The line number of the expectation.
const std::string source_text_; // The EXPECT_CALL(...) source text.
// True if and only if the cardinality is specified explicitly.
- bool cardinality_specified_;
- Cardinality cardinality_; // The cardinality of the expectation.
- // The immediate pre-requisites (i.e. expectations that must be
- // satisfied before this expectation can be matched) of this
+ bool cardinality_specified_;
+ Cardinality cardinality_; // The cardinality of the expectation.
+ // The immediate pre-requisites (i.e. expectations that must be
+ // satisfied before this expectation can be matched) of this
// expectation. We use std::shared_ptr in the set because we want an
- // Expectation object to be co-owned by its FunctionMocker and its
- // successors. This allows multiple mock objects to be deleted at
- // different times.
- ExpectationSet immediate_prerequisites_;
-
- // This group of fields are the current state of the expectation,
- // and can change as the mock function is called.
- int call_count_; // How many times this expectation has been invoked.
+ // Expectation object to be co-owned by its FunctionMocker and its
+ // successors. This allows multiple mock objects to be deleted at
+ // different times.
+ ExpectationSet immediate_prerequisites_;
+
+ // This group of fields are the current state of the expectation,
+ // and can change as the mock function is called.
+ int call_count_; // How many times this expectation has been invoked.
bool retired_; // True if and only if this expectation has retired.
- UntypedActions untyped_actions_;
- bool extra_matcher_specified_;
- bool repeated_action_specified_; // True if a WillRepeatedly() was specified.
- bool retires_on_saturation_;
- Clause last_clause_;
- mutable bool action_count_checked_; // Under mutex_.
- mutable Mutex mutex_; // Protects action_count_checked_.
-}; // class ExpectationBase
-
-// Impements an expectation for the given function type.
-template <typename F>
-class TypedExpectation : public ExpectationBase {
- public:
- typedef typename Function<F>::ArgumentTuple ArgumentTuple;
- typedef typename Function<F>::ArgumentMatcherTuple ArgumentMatcherTuple;
- typedef typename Function<F>::Result Result;
-
+ UntypedActions untyped_actions_;
+ bool extra_matcher_specified_;
+ bool repeated_action_specified_; // True if a WillRepeatedly() was specified.
+ bool retires_on_saturation_;
+ Clause last_clause_;
+ mutable bool action_count_checked_; // Under mutex_.
+ mutable Mutex mutex_; // Protects action_count_checked_.
+}; // class ExpectationBase
+
+// Impements an expectation for the given function type.
+template <typename F>
+class TypedExpectation : public ExpectationBase {
+ public:
+ typedef typename Function<F>::ArgumentTuple ArgumentTuple;
+ typedef typename Function<F>::ArgumentMatcherTuple ArgumentMatcherTuple;
+ typedef typename Function<F>::Result Result;
+
TypedExpectation(FunctionMocker<F>* owner, const char* a_file, int a_line,
const std::string& a_source_text,
- const ArgumentMatcherTuple& m)
- : ExpectationBase(a_file, a_line, a_source_text),
- owner_(owner),
- matchers_(m),
- // By default, extra_matcher_ should match anything. However,
+ const ArgumentMatcherTuple& m)
+ : ExpectationBase(a_file, a_line, a_source_text),
+ owner_(owner),
+ matchers_(m),
+ // By default, extra_matcher_ should match anything. However,
// we cannot initialize it with _ as that causes ambiguity between
// Matcher's copy and move constructor for some argument types.
- extra_matcher_(A<const ArgumentTuple&>()),
- repeated_action_(DoDefault()) {}
-
+ extra_matcher_(A<const ArgumentTuple&>()),
+ repeated_action_(DoDefault()) {}
+
~TypedExpectation() override {
- // Check the validity of the action count if it hasn't been done
- // yet (for example, if the expectation was never used).
- CheckActionCountIfNotDone();
- for (UntypedActions::const_iterator it = untyped_actions_.begin();
- it != untyped_actions_.end(); ++it) {
- delete static_cast<const Action<F>*>(*it);
- }
- }
-
- // Implements the .With() clause.
- TypedExpectation& With(const Matcher<const ArgumentTuple&>& m) {
- if (last_clause_ == kWith) {
- ExpectSpecProperty(false,
- ".With() cannot appear "
- "more than once in an EXPECT_CALL().");
- } else {
- ExpectSpecProperty(last_clause_ < kWith,
- ".With() must be the first "
- "clause in an EXPECT_CALL().");
- }
- last_clause_ = kWith;
-
- extra_matcher_ = m;
- extra_matcher_specified_ = true;
- return *this;
- }
-
- // Implements the .Times() clause.
- TypedExpectation& Times(const Cardinality& a_cardinality) {
- ExpectationBase::UntypedTimes(a_cardinality);
- return *this;
- }
-
- // Implements the .Times() clause.
- TypedExpectation& Times(int n) {
- return Times(Exactly(n));
- }
-
- // Implements the .InSequence() clause.
- TypedExpectation& InSequence(const Sequence& s) {
- ExpectSpecProperty(last_clause_ <= kInSequence,
- ".InSequence() cannot appear after .After(),"
- " .WillOnce(), .WillRepeatedly(), or "
- ".RetiresOnSaturation().");
- last_clause_ = kInSequence;
-
- s.AddExpectation(GetHandle());
- return *this;
- }
- TypedExpectation& InSequence(const Sequence& s1, const Sequence& s2) {
- return InSequence(s1).InSequence(s2);
- }
- TypedExpectation& InSequence(const Sequence& s1, const Sequence& s2,
- const Sequence& s3) {
- return InSequence(s1, s2).InSequence(s3);
- }
- TypedExpectation& InSequence(const Sequence& s1, const Sequence& s2,
- const Sequence& s3, const Sequence& s4) {
- return InSequence(s1, s2, s3).InSequence(s4);
- }
- TypedExpectation& InSequence(const Sequence& s1, const Sequence& s2,
- const Sequence& s3, const Sequence& s4,
- const Sequence& s5) {
- return InSequence(s1, s2, s3, s4).InSequence(s5);
- }
-
- // Implements that .After() clause.
- TypedExpectation& After(const ExpectationSet& s) {
- ExpectSpecProperty(last_clause_ <= kAfter,
- ".After() cannot appear after .WillOnce(),"
- " .WillRepeatedly(), or "
- ".RetiresOnSaturation().");
- last_clause_ = kAfter;
-
- for (ExpectationSet::const_iterator it = s.begin(); it != s.end(); ++it) {
- immediate_prerequisites_ += *it;
- }
- return *this;
- }
- TypedExpectation& After(const ExpectationSet& s1, const ExpectationSet& s2) {
- return After(s1).After(s2);
- }
- TypedExpectation& After(const ExpectationSet& s1, const ExpectationSet& s2,
- const ExpectationSet& s3) {
- return After(s1, s2).After(s3);
- }
- TypedExpectation& After(const ExpectationSet& s1, const ExpectationSet& s2,
- const ExpectationSet& s3, const ExpectationSet& s4) {
- return After(s1, s2, s3).After(s4);
- }
- TypedExpectation& After(const ExpectationSet& s1, const ExpectationSet& s2,
- const ExpectationSet& s3, const ExpectationSet& s4,
- const ExpectationSet& s5) {
- return After(s1, s2, s3, s4).After(s5);
- }
-
- // Implements the .WillOnce() clause.
- TypedExpectation& WillOnce(const Action<F>& action) {
- ExpectSpecProperty(last_clause_ <= kWillOnce,
- ".WillOnce() cannot appear after "
- ".WillRepeatedly() or .RetiresOnSaturation().");
- last_clause_ = kWillOnce;
-
- untyped_actions_.push_back(new Action<F>(action));
- if (!cardinality_specified()) {
- set_cardinality(Exactly(static_cast<int>(untyped_actions_.size())));
- }
- return *this;
- }
-
- // Implements the .WillRepeatedly() clause.
- TypedExpectation& WillRepeatedly(const Action<F>& action) {
- if (last_clause_ == kWillRepeatedly) {
- ExpectSpecProperty(false,
- ".WillRepeatedly() cannot appear "
- "more than once in an EXPECT_CALL().");
- } else {
- ExpectSpecProperty(last_clause_ < kWillRepeatedly,
- ".WillRepeatedly() cannot appear "
- "after .RetiresOnSaturation().");
- }
- last_clause_ = kWillRepeatedly;
- repeated_action_specified_ = true;
-
- repeated_action_ = action;
- if (!cardinality_specified()) {
- set_cardinality(AtLeast(static_cast<int>(untyped_actions_.size())));
- }
-
- // Now that no more action clauses can be specified, we check
- // whether their count makes sense.
- CheckActionCountIfNotDone();
- return *this;
- }
-
- // Implements the .RetiresOnSaturation() clause.
- TypedExpectation& RetiresOnSaturation() {
- ExpectSpecProperty(last_clause_ < kRetiresOnSaturation,
- ".RetiresOnSaturation() cannot appear "
- "more than once.");
- last_clause_ = kRetiresOnSaturation;
- retires_on_saturation_ = true;
-
- // Now that no more action clauses can be specified, we check
- // whether their count makes sense.
- CheckActionCountIfNotDone();
- return *this;
- }
-
- // Returns the matchers for the arguments as specified inside the
- // EXPECT_CALL() macro.
- const ArgumentMatcherTuple& matchers() const {
- return matchers_;
- }
-
- // Returns the matcher specified by the .With() clause.
- const Matcher<const ArgumentTuple&>& extra_matcher() const {
- return extra_matcher_;
- }
-
- // Returns the action specified by the .WillRepeatedly() clause.
- const Action<F>& repeated_action() const { return repeated_action_; }
-
- // If this mock method has an extra matcher (i.e. .With(matcher)),
- // describes it to the ostream.
+ // Check the validity of the action count if it hasn't been done
+ // yet (for example, if the expectation was never used).
+ CheckActionCountIfNotDone();
+ for (UntypedActions::const_iterator it = untyped_actions_.begin();
+ it != untyped_actions_.end(); ++it) {
+ delete static_cast<const Action<F>*>(*it);
+ }
+ }
+
+ // Implements the .With() clause.
+ TypedExpectation& With(const Matcher<const ArgumentTuple&>& m) {
+ if (last_clause_ == kWith) {
+ ExpectSpecProperty(false,
+ ".With() cannot appear "
+ "more than once in an EXPECT_CALL().");
+ } else {
+ ExpectSpecProperty(last_clause_ < kWith,
+ ".With() must be the first "
+ "clause in an EXPECT_CALL().");
+ }
+ last_clause_ = kWith;
+
+ extra_matcher_ = m;
+ extra_matcher_specified_ = true;
+ return *this;
+ }
+
+ // Implements the .Times() clause.
+ TypedExpectation& Times(const Cardinality& a_cardinality) {
+ ExpectationBase::UntypedTimes(a_cardinality);
+ return *this;
+ }
+
+ // Implements the .Times() clause.
+ TypedExpectation& Times(int n) {
+ return Times(Exactly(n));
+ }
+
+ // Implements the .InSequence() clause.
+ TypedExpectation& InSequence(const Sequence& s) {
+ ExpectSpecProperty(last_clause_ <= kInSequence,
+ ".InSequence() cannot appear after .After(),"
+ " .WillOnce(), .WillRepeatedly(), or "
+ ".RetiresOnSaturation().");
+ last_clause_ = kInSequence;
+
+ s.AddExpectation(GetHandle());
+ return *this;
+ }
+ TypedExpectation& InSequence(const Sequence& s1, const Sequence& s2) {
+ return InSequence(s1).InSequence(s2);
+ }
+ TypedExpectation& InSequence(const Sequence& s1, const Sequence& s2,
+ const Sequence& s3) {
+ return InSequence(s1, s2).InSequence(s3);
+ }
+ TypedExpectation& InSequence(const Sequence& s1, const Sequence& s2,
+ const Sequence& s3, const Sequence& s4) {
+ return InSequence(s1, s2, s3).InSequence(s4);
+ }
+ TypedExpectation& InSequence(const Sequence& s1, const Sequence& s2,
+ const Sequence& s3, const Sequence& s4,
+ const Sequence& s5) {
+ return InSequence(s1, s2, s3, s4).InSequence(s5);
+ }
+
+ // Implements that .After() clause.
+ TypedExpectation& After(const ExpectationSet& s) {
+ ExpectSpecProperty(last_clause_ <= kAfter,
+ ".After() cannot appear after .WillOnce(),"
+ " .WillRepeatedly(), or "
+ ".RetiresOnSaturation().");
+ last_clause_ = kAfter;
+
+ for (ExpectationSet::const_iterator it = s.begin(); it != s.end(); ++it) {
+ immediate_prerequisites_ += *it;
+ }
+ return *this;
+ }
+ TypedExpectation& After(const ExpectationSet& s1, const ExpectationSet& s2) {
+ return After(s1).After(s2);
+ }
+ TypedExpectation& After(const ExpectationSet& s1, const ExpectationSet& s2,
+ const ExpectationSet& s3) {
+ return After(s1, s2).After(s3);
+ }
+ TypedExpectation& After(const ExpectationSet& s1, const ExpectationSet& s2,
+ const ExpectationSet& s3, const ExpectationSet& s4) {
+ return After(s1, s2, s3).After(s4);
+ }
+ TypedExpectation& After(const ExpectationSet& s1, const ExpectationSet& s2,
+ const ExpectationSet& s3, const ExpectationSet& s4,
+ const ExpectationSet& s5) {
+ return After(s1, s2, s3, s4).After(s5);
+ }
+
+ // Implements the .WillOnce() clause.
+ TypedExpectation& WillOnce(const Action<F>& action) {
+ ExpectSpecProperty(last_clause_ <= kWillOnce,
+ ".WillOnce() cannot appear after "
+ ".WillRepeatedly() or .RetiresOnSaturation().");
+ last_clause_ = kWillOnce;
+
+ untyped_actions_.push_back(new Action<F>(action));
+ if (!cardinality_specified()) {
+ set_cardinality(Exactly(static_cast<int>(untyped_actions_.size())));
+ }
+ return *this;
+ }
+
+ // Implements the .WillRepeatedly() clause.
+ TypedExpectation& WillRepeatedly(const Action<F>& action) {
+ if (last_clause_ == kWillRepeatedly) {
+ ExpectSpecProperty(false,
+ ".WillRepeatedly() cannot appear "
+ "more than once in an EXPECT_CALL().");
+ } else {
+ ExpectSpecProperty(last_clause_ < kWillRepeatedly,
+ ".WillRepeatedly() cannot appear "
+ "after .RetiresOnSaturation().");
+ }
+ last_clause_ = kWillRepeatedly;
+ repeated_action_specified_ = true;
+
+ repeated_action_ = action;
+ if (!cardinality_specified()) {
+ set_cardinality(AtLeast(static_cast<int>(untyped_actions_.size())));
+ }
+
+ // Now that no more action clauses can be specified, we check
+ // whether their count makes sense.
+ CheckActionCountIfNotDone();
+ return *this;
+ }
+
+ // Implements the .RetiresOnSaturation() clause.
+ TypedExpectation& RetiresOnSaturation() {
+ ExpectSpecProperty(last_clause_ < kRetiresOnSaturation,
+ ".RetiresOnSaturation() cannot appear "
+ "more than once.");
+ last_clause_ = kRetiresOnSaturation;
+ retires_on_saturation_ = true;
+
+ // Now that no more action clauses can be specified, we check
+ // whether their count makes sense.
+ CheckActionCountIfNotDone();
+ return *this;
+ }
+
+ // Returns the matchers for the arguments as specified inside the
+ // EXPECT_CALL() macro.
+ const ArgumentMatcherTuple& matchers() const {
+ return matchers_;
+ }
+
+ // Returns the matcher specified by the .With() clause.
+ const Matcher<const ArgumentTuple&>& extra_matcher() const {
+ return extra_matcher_;
+ }
+
+ // Returns the action specified by the .WillRepeatedly() clause.
+ const Action<F>& repeated_action() const { return repeated_action_; }
+
+ // If this mock method has an extra matcher (i.e. .With(matcher)),
+ // describes it to the ostream.
void MaybeDescribeExtraMatcherTo(::std::ostream* os) override {
- if (extra_matcher_specified_) {
- *os << " Expected args: ";
- extra_matcher_.DescribeTo(os);
- *os << "\n";
- }
- }
-
- private:
- template <typename Function>
+ if (extra_matcher_specified_) {
+ *os << " Expected args: ";
+ extra_matcher_.DescribeTo(os);
+ *os << "\n";
+ }
+ }
+
+ private:
+ template <typename Function>
friend class FunctionMocker;
-
- // Returns an Expectation object that references and co-owns this
- // expectation.
+
+ // Returns an Expectation object that references and co-owns this
+ // expectation.
Expectation GetHandle() override { return owner_->GetHandleOf(this); }
-
- // The following methods will be called only after the EXPECT_CALL()
- // statement finishes and when the current thread holds
- // g_gmock_mutex.
-
+
+ // The following methods will be called only after the EXPECT_CALL()
+ // statement finishes and when the current thread holds
+ // g_gmock_mutex.
+
// Returns true if and only if this expectation matches the given arguments.
- bool Matches(const ArgumentTuple& args) const
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
- g_gmock_mutex.AssertHeld();
- return TupleMatches(matchers_, args) && extra_matcher_.Matches(args);
- }
-
+ bool Matches(const ArgumentTuple& args) const
+ GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+ g_gmock_mutex.AssertHeld();
+ return TupleMatches(matchers_, args) && extra_matcher_.Matches(args);
+ }
+
// Returns true if and only if this expectation should handle the given
// arguments.
- bool ShouldHandleArguments(const ArgumentTuple& args) const
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
- g_gmock_mutex.AssertHeld();
-
- // In case the action count wasn't checked when the expectation
- // was defined (e.g. if this expectation has no WillRepeatedly()
- // or RetiresOnSaturation() clause), we check it when the
- // expectation is used for the first time.
- CheckActionCountIfNotDone();
- return !is_retired() && AllPrerequisitesAreSatisfied() && Matches(args);
- }
-
- // Describes the result of matching the arguments against this
- // expectation to the given ostream.
- void ExplainMatchResultTo(
- const ArgumentTuple& args,
- ::std::ostream* os) const
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
- g_gmock_mutex.AssertHeld();
-
- if (is_retired()) {
- *os << " Expected: the expectation is active\n"
- << " Actual: it is retired\n";
- } else if (!Matches(args)) {
- if (!TupleMatches(matchers_, args)) {
- ExplainMatchFailureTupleTo(matchers_, args, os);
- }
- StringMatchResultListener listener;
- if (!extra_matcher_.MatchAndExplain(args, &listener)) {
- *os << " Expected args: ";
- extra_matcher_.DescribeTo(os);
- *os << "\n Actual: don't match";
-
- internal::PrintIfNotEmpty(listener.str(), os);
- *os << "\n";
- }
- } else if (!AllPrerequisitesAreSatisfied()) {
- *os << " Expected: all pre-requisites are satisfied\n"
- << " Actual: the following immediate pre-requisites "
- << "are not satisfied:\n";
- ExpectationSet unsatisfied_prereqs;
- FindUnsatisfiedPrerequisites(&unsatisfied_prereqs);
- int i = 0;
- for (ExpectationSet::const_iterator it = unsatisfied_prereqs.begin();
- it != unsatisfied_prereqs.end(); ++it) {
- it->expectation_base()->DescribeLocationTo(os);
- *os << "pre-requisite #" << i++ << "\n";
- }
- *os << " (end of pre-requisites)\n";
- } else {
- // This line is here just for completeness' sake. It will never
- // be executed as currently the ExplainMatchResultTo() function
- // is called only when the mock function call does NOT match the
- // expectation.
- *os << "The call matches the expectation.\n";
- }
- }
-
- // Returns the action that should be taken for the current invocation.
+ bool ShouldHandleArguments(const ArgumentTuple& args) const
+ GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+ g_gmock_mutex.AssertHeld();
+
+ // In case the action count wasn't checked when the expectation
+ // was defined (e.g. if this expectation has no WillRepeatedly()
+ // or RetiresOnSaturation() clause), we check it when the
+ // expectation is used for the first time.
+ CheckActionCountIfNotDone();
+ return !is_retired() && AllPrerequisitesAreSatisfied() && Matches(args);
+ }
+
+ // Describes the result of matching the arguments against this
+ // expectation to the given ostream.
+ void ExplainMatchResultTo(
+ const ArgumentTuple& args,
+ ::std::ostream* os) const
+ GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+ g_gmock_mutex.AssertHeld();
+
+ if (is_retired()) {
+ *os << " Expected: the expectation is active\n"
+ << " Actual: it is retired\n";
+ } else if (!Matches(args)) {
+ if (!TupleMatches(matchers_, args)) {
+ ExplainMatchFailureTupleTo(matchers_, args, os);
+ }
+ StringMatchResultListener listener;
+ if (!extra_matcher_.MatchAndExplain(args, &listener)) {
+ *os << " Expected args: ";
+ extra_matcher_.DescribeTo(os);
+ *os << "\n Actual: don't match";
+
+ internal::PrintIfNotEmpty(listener.str(), os);
+ *os << "\n";
+ }
+ } else if (!AllPrerequisitesAreSatisfied()) {
+ *os << " Expected: all pre-requisites are satisfied\n"
+ << " Actual: the following immediate pre-requisites "
+ << "are not satisfied:\n";
+ ExpectationSet unsatisfied_prereqs;
+ FindUnsatisfiedPrerequisites(&unsatisfied_prereqs);
+ int i = 0;
+ for (ExpectationSet::const_iterator it = unsatisfied_prereqs.begin();
+ it != unsatisfied_prereqs.end(); ++it) {
+ it->expectation_base()->DescribeLocationTo(os);
+ *os << "pre-requisite #" << i++ << "\n";
+ }
+ *os << " (end of pre-requisites)\n";
+ } else {
+ // This line is here just for completeness' sake. It will never
+ // be executed as currently the ExplainMatchResultTo() function
+ // is called only when the mock function call does NOT match the
+ // expectation.
+ *os << "The call matches the expectation.\n";
+ }
+ }
+
+ // Returns the action that should be taken for the current invocation.
const Action<F>& GetCurrentAction(const FunctionMocker<F>* mocker,
const ArgumentTuple& args) const
GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
- g_gmock_mutex.AssertHeld();
- const int count = call_count();
- Assert(count >= 1, __FILE__, __LINE__,
- "call_count() is <= 0 when GetCurrentAction() is "
- "called - this should never happen.");
-
- const int action_count = static_cast<int>(untyped_actions_.size());
- if (action_count > 0 && !repeated_action_specified_ &&
- count > action_count) {
- // If there is at least one WillOnce() and no WillRepeatedly(),
- // we warn the user when the WillOnce() clauses ran out.
- ::std::stringstream ss;
- DescribeLocationTo(&ss);
- ss << "Actions ran out in " << source_text() << "...\n"
- << "Called " << count << " times, but only "
- << action_count << " WillOnce()"
- << (action_count == 1 ? " is" : "s are") << " specified - ";
- mocker->DescribeDefaultActionTo(args, &ss);
- Log(kWarning, ss.str(), 1);
- }
-
+ g_gmock_mutex.AssertHeld();
+ const int count = call_count();
+ Assert(count >= 1, __FILE__, __LINE__,
+ "call_count() is <= 0 when GetCurrentAction() is "
+ "called - this should never happen.");
+
+ const int action_count = static_cast<int>(untyped_actions_.size());
+ if (action_count > 0 && !repeated_action_specified_ &&
+ count > action_count) {
+ // If there is at least one WillOnce() and no WillRepeatedly(),
+ // we warn the user when the WillOnce() clauses ran out.
+ ::std::stringstream ss;
+ DescribeLocationTo(&ss);
+ ss << "Actions ran out in " << source_text() << "...\n"
+ << "Called " << count << " times, but only "
+ << action_count << " WillOnce()"
+ << (action_count == 1 ? " is" : "s are") << " specified - ";
+ mocker->DescribeDefaultActionTo(args, &ss);
+ Log(kWarning, ss.str(), 1);
+ }
+
return count <= action_count
? *static_cast<const Action<F>*>(
untyped_actions_[static_cast<size_t>(count - 1)])
: repeated_action();
- }
-
- // Given the arguments of a mock function call, if the call will
- // over-saturate this expectation, returns the default action;
- // otherwise, returns the next action in this expectation. Also
- // describes *what* happened to 'what', and explains *why* Google
- // Mock does it to 'why'. This method is not const as it calls
- // IncrementCallCount(). A return value of NULL means the default
- // action.
+ }
+
+ // Given the arguments of a mock function call, if the call will
+ // over-saturate this expectation, returns the default action;
+ // otherwise, returns the next action in this expectation. Also
+ // describes *what* happened to 'what', and explains *why* Google
+ // Mock does it to 'why'. This method is not const as it calls
+ // IncrementCallCount(). A return value of NULL means the default
+ // action.
const Action<F>* GetActionForArguments(const FunctionMocker<F>* mocker,
const ArgumentTuple& args,
::std::ostream* what,
::std::ostream* why)
GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
- g_gmock_mutex.AssertHeld();
- if (IsSaturated()) {
- // We have an excessive call.
- IncrementCallCount();
- *what << "Mock function called more times than expected - ";
- mocker->DescribeDefaultActionTo(args, what);
- DescribeCallCountTo(why);
-
+ g_gmock_mutex.AssertHeld();
+ if (IsSaturated()) {
+ // We have an excessive call.
+ IncrementCallCount();
+ *what << "Mock function called more times than expected - ";
+ mocker->DescribeDefaultActionTo(args, what);
+ DescribeCallCountTo(why);
+
return nullptr;
- }
-
- IncrementCallCount();
- RetireAllPreRequisites();
-
- if (retires_on_saturation_ && IsSaturated()) {
- Retire();
- }
-
- // Must be done after IncrementCount()!
- *what << "Mock function call matches " << source_text() <<"...\n";
- return &(GetCurrentAction(mocker, args));
- }
-
- // All the fields below won't change once the EXPECT_CALL()
- // statement finishes.
+ }
+
+ IncrementCallCount();
+ RetireAllPreRequisites();
+
+ if (retires_on_saturation_ && IsSaturated()) {
+ Retire();
+ }
+
+ // Must be done after IncrementCount()!
+ *what << "Mock function call matches " << source_text() <<"...\n";
+ return &(GetCurrentAction(mocker, args));
+ }
+
+ // All the fields below won't change once the EXPECT_CALL()
+ // statement finishes.
FunctionMocker<F>* const owner_;
- ArgumentMatcherTuple matchers_;
- Matcher<const ArgumentTuple&> extra_matcher_;
- Action<F> repeated_action_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(TypedExpectation);
-}; // class TypedExpectation
-
-// A MockSpec object is used by ON_CALL() or EXPECT_CALL() for
-// specifying the default behavior of, or expectation on, a mock
-// function.
-
-// Note: class MockSpec really belongs to the ::testing namespace.
-// However if we define it in ::testing, MSVC will complain when
-// classes in ::testing::internal declare it as a friend class
-// template. To workaround this compiler bug, we define MockSpec in
-// ::testing::internal and import it into ::testing.
-
-// Logs a message including file and line number information.
-GTEST_API_ void LogWithLocation(testing::internal::LogSeverity severity,
- const char* file, int line,
+ ArgumentMatcherTuple matchers_;
+ Matcher<const ArgumentTuple&> extra_matcher_;
+ Action<F> repeated_action_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(TypedExpectation);
+}; // class TypedExpectation
+
+// A MockSpec object is used by ON_CALL() or EXPECT_CALL() for
+// specifying the default behavior of, or expectation on, a mock
+// function.
+
+// Note: class MockSpec really belongs to the ::testing namespace.
+// However if we define it in ::testing, MSVC will complain when
+// classes in ::testing::internal declare it as a friend class
+// template. To workaround this compiler bug, we define MockSpec in
+// ::testing::internal and import it into ::testing.
+
+// Logs a message including file and line number information.
+GTEST_API_ void LogWithLocation(testing::internal::LogSeverity severity,
+ const char* file, int line,
const std::string& message);
-
-template <typename F>
-class MockSpec {
- public:
- typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
- typedef typename internal::Function<F>::ArgumentMatcherTuple
- ArgumentMatcherTuple;
-
- // Constructs a MockSpec object, given the function mocker object
- // that the spec is associated with.
+
+template <typename F>
+class MockSpec {
+ public:
+ typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
+ typedef typename internal::Function<F>::ArgumentMatcherTuple
+ ArgumentMatcherTuple;
+
+ // Constructs a MockSpec object, given the function mocker object
+ // that the spec is associated with.
MockSpec(internal::FunctionMocker<F>* function_mocker,
const ArgumentMatcherTuple& matchers)
: function_mocker_(function_mocker), matchers_(matchers) {}
-
- // Adds a new default action spec to the function mocker and returns
- // the newly created spec.
- internal::OnCallSpec<F>& InternalDefaultActionSetAt(
- const char* file, int line, const char* obj, const char* call) {
- LogWithLocation(internal::kInfo, file, line,
+
+ // Adds a new default action spec to the function mocker and returns
+ // the newly created spec.
+ internal::OnCallSpec<F>& InternalDefaultActionSetAt(
+ const char* file, int line, const char* obj, const char* call) {
+ LogWithLocation(internal::kInfo, file, line,
std::string("ON_CALL(") + obj + ", " + call + ") invoked");
- return function_mocker_->AddNewOnCallSpec(file, line, matchers_);
- }
-
- // Adds a new expectation spec to the function mocker and returns
- // the newly created spec.
- internal::TypedExpectation<F>& InternalExpectedAt(
- const char* file, int line, const char* obj, const char* call) {
+ return function_mocker_->AddNewOnCallSpec(file, line, matchers_);
+ }
+
+ // Adds a new expectation spec to the function mocker and returns
+ // the newly created spec.
+ internal::TypedExpectation<F>& InternalExpectedAt(
+ const char* file, int line, const char* obj, const char* call) {
const std::string source_text(std::string("EXPECT_CALL(") + obj + ", " +
call + ")");
- LogWithLocation(internal::kInfo, file, line, source_text + " invoked");
- return function_mocker_->AddNewExpectation(
- file, line, source_text, matchers_);
- }
-
+ LogWithLocation(internal::kInfo, file, line, source_text + " invoked");
+ return function_mocker_->AddNewExpectation(
+ file, line, source_text, matchers_);
+ }
+
// This operator overload is used to swallow the superfluous parameter list
// introduced by the ON/EXPECT_CALL macros. See the macro comments for more
// explanation.
@@ -1294,179 +1294,179 @@ class MockSpec {
return *this;
}
- private:
- template <typename Function>
- friend class internal::FunctionMocker;
-
- // The function mocker that owns this spec.
+ private:
+ template <typename Function>
+ friend class internal::FunctionMocker;
+
+ // The function mocker that owns this spec.
internal::FunctionMocker<F>* const function_mocker_;
- // The argument matchers specified in the spec.
- ArgumentMatcherTuple matchers_;
-}; // class MockSpec
-
-// Wrapper type for generically holding an ordinary value or lvalue reference.
-// If T is not a reference type, it must be copyable or movable.
-// ReferenceOrValueWrapper<T> is movable, and will also be copyable unless
-// T is a move-only value type (which means that it will always be copyable
-// if the current platform does not support move semantics).
-//
-// The primary template defines handling for values, but function header
-// comments describe the contract for the whole template (including
-// specializations).
-template <typename T>
-class ReferenceOrValueWrapper {
- public:
- // Constructs a wrapper from the given value/reference.
- explicit ReferenceOrValueWrapper(T value)
+ // The argument matchers specified in the spec.
+ ArgumentMatcherTuple matchers_;
+}; // class MockSpec
+
+// Wrapper type for generically holding an ordinary value or lvalue reference.
+// If T is not a reference type, it must be copyable or movable.
+// ReferenceOrValueWrapper<T> is movable, and will also be copyable unless
+// T is a move-only value type (which means that it will always be copyable
+// if the current platform does not support move semantics).
+//
+// The primary template defines handling for values, but function header
+// comments describe the contract for the whole template (including
+// specializations).
+template <typename T>
+class ReferenceOrValueWrapper {
+ public:
+ // Constructs a wrapper from the given value/reference.
+ explicit ReferenceOrValueWrapper(T value)
: value_(std::move(value)) {
- }
-
- // Unwraps and returns the underlying value/reference, exactly as
- // originally passed. The behavior of calling this more than once on
- // the same object is unspecified.
+ }
+
+ // Unwraps and returns the underlying value/reference, exactly as
+ // originally passed. The behavior of calling this more than once on
+ // the same object is unspecified.
T Unwrap() { return std::move(value_); }
-
- // Provides nondestructive access to the underlying value/reference.
- // Always returns a const reference (more precisely,
+
+ // Provides nondestructive access to the underlying value/reference.
+ // Always returns a const reference (more precisely,
// const std::add_lvalue_reference<T>::type). The behavior of calling this
// after calling Unwrap on the same object is unspecified.
- const T& Peek() const {
- return value_;
- }
-
- private:
- T value_;
-};
-
-// Specialization for lvalue reference types. See primary template
-// for documentation.
-template <typename T>
-class ReferenceOrValueWrapper<T&> {
- public:
- // Workaround for debatable pass-by-reference lint warning (c-library-team
- // policy precludes NOLINT in this context)
- typedef T& reference;
- explicit ReferenceOrValueWrapper(reference ref)
- : value_ptr_(&ref) {}
- T& Unwrap() { return *value_ptr_; }
- const T& Peek() const { return *value_ptr_; }
-
- private:
- T* value_ptr_;
-};
-
-// C++ treats the void type specially. For example, you cannot define
-// a void-typed variable or pass a void value to a function.
-// ActionResultHolder<T> holds a value of type T, where T must be a
-// copyable type or void (T doesn't need to be default-constructable).
-// It hides the syntactic difference between void and other types, and
-// is used to unify the code for invoking both void-returning and
-// non-void-returning mock functions.
-
-// Untyped base class for ActionResultHolder<T>.
-class UntypedActionResultHolderBase {
- public:
- virtual ~UntypedActionResultHolderBase() {}
-
- // Prints the held value as an action's result to os.
- virtual void PrintAsActionResult(::std::ostream* os) const = 0;
-};
-
-// This generic definition is used when T is not void.
-template <typename T>
-class ActionResultHolder : public UntypedActionResultHolderBase {
- public:
- // Returns the held value. Must not be called more than once.
- T Unwrap() {
- return result_.Unwrap();
- }
-
- // Prints the held value as an action's result to os.
+ const T& Peek() const {
+ return value_;
+ }
+
+ private:
+ T value_;
+};
+
+// Specialization for lvalue reference types. See primary template
+// for documentation.
+template <typename T>
+class ReferenceOrValueWrapper<T&> {
+ public:
+ // Workaround for debatable pass-by-reference lint warning (c-library-team
+ // policy precludes NOLINT in this context)
+ typedef T& reference;
+ explicit ReferenceOrValueWrapper(reference ref)
+ : value_ptr_(&ref) {}
+ T& Unwrap() { return *value_ptr_; }
+ const T& Peek() const { return *value_ptr_; }
+
+ private:
+ T* value_ptr_;
+};
+
+// C++ treats the void type specially. For example, you cannot define
+// a void-typed variable or pass a void value to a function.
+// ActionResultHolder<T> holds a value of type T, where T must be a
+// copyable type or void (T doesn't need to be default-constructable).
+// It hides the syntactic difference between void and other types, and
+// is used to unify the code for invoking both void-returning and
+// non-void-returning mock functions.
+
+// Untyped base class for ActionResultHolder<T>.
+class UntypedActionResultHolderBase {
+ public:
+ virtual ~UntypedActionResultHolderBase() {}
+
+ // Prints the held value as an action's result to os.
+ virtual void PrintAsActionResult(::std::ostream* os) const = 0;
+};
+
+// This generic definition is used when T is not void.
+template <typename T>
+class ActionResultHolder : public UntypedActionResultHolderBase {
+ public:
+ // Returns the held value. Must not be called more than once.
+ T Unwrap() {
+ return result_.Unwrap();
+ }
+
+ // Prints the held value as an action's result to os.
void PrintAsActionResult(::std::ostream* os) const override {
- *os << "\n Returns: ";
- // T may be a reference type, so we don't use UniversalPrint().
- UniversalPrinter<T>::Print(result_.Peek(), os);
- }
-
- // Performs the given mock function's default action and returns the
- // result in a new-ed ActionResultHolder.
- template <typename F>
- static ActionResultHolder* PerformDefaultAction(
+ *os << "\n Returns: ";
+ // T may be a reference type, so we don't use UniversalPrint().
+ UniversalPrinter<T>::Print(result_.Peek(), os);
+ }
+
+ // Performs the given mock function's default action and returns the
+ // result in a new-ed ActionResultHolder.
+ template <typename F>
+ static ActionResultHolder* PerformDefaultAction(
const FunctionMocker<F>* func_mocker,
typename Function<F>::ArgumentTuple&& args,
const std::string& call_description) {
return new ActionResultHolder(Wrapper(func_mocker->PerformDefaultAction(
std::move(args), call_description)));
- }
-
- // Performs the given action and returns the result in a new-ed
- // ActionResultHolder.
- template <typename F>
+ }
+
+ // Performs the given action and returns the result in a new-ed
+ // ActionResultHolder.
+ template <typename F>
static ActionResultHolder* PerformAction(
const Action<F>& action, typename Function<F>::ArgumentTuple&& args) {
return new ActionResultHolder(
Wrapper(action.Perform(std::move(args))));
- }
-
- private:
- typedef ReferenceOrValueWrapper<T> Wrapper;
-
- explicit ActionResultHolder(Wrapper result)
+ }
+
+ private:
+ typedef ReferenceOrValueWrapper<T> Wrapper;
+
+ explicit ActionResultHolder(Wrapper result)
: result_(std::move(result)) {
- }
-
- Wrapper result_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ActionResultHolder);
-};
-
-// Specialization for T = void.
-template <>
-class ActionResultHolder<void> : public UntypedActionResultHolderBase {
- public:
- void Unwrap() { }
-
+ }
+
+ Wrapper result_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ActionResultHolder);
+};
+
+// Specialization for T = void.
+template <>
+class ActionResultHolder<void> : public UntypedActionResultHolderBase {
+ public:
+ void Unwrap() { }
+
void PrintAsActionResult(::std::ostream* /* os */) const override {}
-
- // Performs the given mock function's default action and returns ownership
- // of an empty ActionResultHolder*.
- template <typename F>
- static ActionResultHolder* PerformDefaultAction(
+
+ // Performs the given mock function's default action and returns ownership
+ // of an empty ActionResultHolder*.
+ template <typename F>
+ static ActionResultHolder* PerformDefaultAction(
const FunctionMocker<F>* func_mocker,
typename Function<F>::ArgumentTuple&& args,
const std::string& call_description) {
func_mocker->PerformDefaultAction(std::move(args), call_description);
- return new ActionResultHolder;
- }
-
- // Performs the given action and returns ownership of an empty
- // ActionResultHolder*.
- template <typename F>
- static ActionResultHolder* PerformAction(
+ return new ActionResultHolder;
+ }
+
+ // Performs the given action and returns ownership of an empty
+ // ActionResultHolder*.
+ template <typename F>
+ static ActionResultHolder* PerformAction(
const Action<F>& action, typename Function<F>::ArgumentTuple&& args) {
action.Perform(std::move(args));
- return new ActionResultHolder;
- }
-
- private:
- ActionResultHolder() {}
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ActionResultHolder);
-};
-
-template <typename F>
+ return new ActionResultHolder;
+ }
+
+ private:
+ ActionResultHolder() {}
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ActionResultHolder);
+};
+
+template <typename F>
class FunctionMocker;
template <typename R, typename... Args>
class FunctionMocker<R(Args...)> final : public UntypedFunctionMockerBase {
using F = R(Args...);
- public:
+ public:
using Result = R;
using ArgumentTuple = std::tuple<Args...>;
using ArgumentMatcherTuple = std::tuple<Matcher<Args>...>;
-
+
FunctionMocker() {}
-
+
// There is no generally useful and implementable semantics of
// copying a mock object, so copying a mock is usually a user error.
// Thus we disallow copying function mockers. If the user really
@@ -1482,114 +1482,114 @@ class FunctionMocker<R(Args...)> final : public UntypedFunctionMockerBase {
FunctionMocker(const FunctionMocker&) = delete;
FunctionMocker& operator=(const FunctionMocker&) = delete;
- // The destructor verifies that all expectations on this mock
- // function have been satisfied. If not, it will report Google Test
- // non-fatal failures for the violations.
+ // The destructor verifies that all expectations on this mock
+ // function have been satisfied. If not, it will report Google Test
+ // non-fatal failures for the violations.
~FunctionMocker() override GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
- MutexLock l(&g_gmock_mutex);
- VerifyAndClearExpectationsLocked();
- Mock::UnregisterLocked(this);
- ClearDefaultActionsLocked();
- }
-
- // Returns the ON_CALL spec that matches this mock function with the
- // given arguments; returns NULL if no matching ON_CALL is found.
- // L = *
- const OnCallSpec<F>* FindOnCallSpec(
- const ArgumentTuple& args) const {
- for (UntypedOnCallSpecs::const_reverse_iterator it
- = untyped_on_call_specs_.rbegin();
- it != untyped_on_call_specs_.rend(); ++it) {
- const OnCallSpec<F>* spec = static_cast<const OnCallSpec<F>*>(*it);
- if (spec->Matches(args))
- return spec;
- }
-
+ MutexLock l(&g_gmock_mutex);
+ VerifyAndClearExpectationsLocked();
+ Mock::UnregisterLocked(this);
+ ClearDefaultActionsLocked();
+ }
+
+ // Returns the ON_CALL spec that matches this mock function with the
+ // given arguments; returns NULL if no matching ON_CALL is found.
+ // L = *
+ const OnCallSpec<F>* FindOnCallSpec(
+ const ArgumentTuple& args) const {
+ for (UntypedOnCallSpecs::const_reverse_iterator it
+ = untyped_on_call_specs_.rbegin();
+ it != untyped_on_call_specs_.rend(); ++it) {
+ const OnCallSpec<F>* spec = static_cast<const OnCallSpec<F>*>(*it);
+ if (spec->Matches(args))
+ return spec;
+ }
+
return nullptr;
- }
-
- // Performs the default action of this mock function on the given
- // arguments and returns the result. Asserts (or throws if
- // exceptions are enabled) with a helpful call descrption if there
- // is no valid return value. This method doesn't depend on the
- // mutable state of this object, and thus can be called concurrently
- // without locking.
- // L = *
+ }
+
+ // Performs the default action of this mock function on the given
+ // arguments and returns the result. Asserts (or throws if
+ // exceptions are enabled) with a helpful call descrption if there
+ // is no valid return value. This method doesn't depend on the
+ // mutable state of this object, and thus can be called concurrently
+ // without locking.
+ // L = *
Result PerformDefaultAction(ArgumentTuple&& args,
const std::string& call_description) const {
- const OnCallSpec<F>* const spec =
- this->FindOnCallSpec(args);
+ const OnCallSpec<F>* const spec =
+ this->FindOnCallSpec(args);
if (spec != nullptr) {
return spec->GetAction().Perform(std::move(args));
- }
+ }
const std::string message =
call_description +
- "\n The mock function has no default action "
- "set, and its return type has no default value set.";
-#if GTEST_HAS_EXCEPTIONS
- if (!DefaultValue<Result>::Exists()) {
- throw std::runtime_error(message);
- }
-#else
- Assert(DefaultValue<Result>::Exists(), "", -1, message);
-#endif
- return DefaultValue<Result>::Get();
- }
-
- // Performs the default action with the given arguments and returns
- // the action's result. The call description string will be used in
- // the error message to describe the call in the case the default
- // action fails. The caller is responsible for deleting the result.
- // L = *
+ "\n The mock function has no default action "
+ "set, and its return type has no default value set.";
+#if GTEST_HAS_EXCEPTIONS
+ if (!DefaultValue<Result>::Exists()) {
+ throw std::runtime_error(message);
+ }
+#else
+ Assert(DefaultValue<Result>::Exists(), "", -1, message);
+#endif
+ return DefaultValue<Result>::Get();
+ }
+
+ // Performs the default action with the given arguments and returns
+ // the action's result. The call description string will be used in
+ // the error message to describe the call in the case the default
+ // action fails. The caller is responsible for deleting the result.
+ // L = *
UntypedActionResultHolderBase* UntypedPerformDefaultAction(
void* untyped_args, // must point to an ArgumentTuple
const std::string& call_description) const override {
ArgumentTuple* args = static_cast<ArgumentTuple*>(untyped_args);
return ResultHolder::PerformDefaultAction(this, std::move(*args),
call_description);
- }
-
- // Performs the given action with the given arguments and returns
- // the action's result. The caller is responsible for deleting the
- // result.
- // L = *
+ }
+
+ // Performs the given action with the given arguments and returns
+ // the action's result. The caller is responsible for deleting the
+ // result.
+ // L = *
UntypedActionResultHolderBase* UntypedPerformAction(
const void* untyped_action, void* untyped_args) const override {
- // Make a copy of the action before performing it, in case the
- // action deletes the mock object (and thus deletes itself).
- const Action<F> action = *static_cast<const Action<F>*>(untyped_action);
+ // Make a copy of the action before performing it, in case the
+ // action deletes the mock object (and thus deletes itself).
+ const Action<F> action = *static_cast<const Action<F>*>(untyped_action);
ArgumentTuple* args = static_cast<ArgumentTuple*>(untyped_args);
return ResultHolder::PerformAction(action, std::move(*args));
- }
-
- // Implements UntypedFunctionMockerBase::ClearDefaultActionsLocked():
- // clears the ON_CALL()s set on this mock function.
+ }
+
+ // Implements UntypedFunctionMockerBase::ClearDefaultActionsLocked():
+ // clears the ON_CALL()s set on this mock function.
void ClearDefaultActionsLocked() override
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
- g_gmock_mutex.AssertHeld();
-
- // Deleting our default actions may trigger other mock objects to be
- // deleted, for example if an action contains a reference counted smart
- // pointer to that mock object, and that is the last reference. So if we
- // delete our actions within the context of the global mutex we may deadlock
- // when this method is called again. Instead, make a copy of the set of
- // actions to delete, clear our set within the mutex, and then delete the
- // actions outside of the mutex.
- UntypedOnCallSpecs specs_to_delete;
- untyped_on_call_specs_.swap(specs_to_delete);
-
- g_gmock_mutex.Unlock();
- for (UntypedOnCallSpecs::const_iterator it =
- specs_to_delete.begin();
- it != specs_to_delete.end(); ++it) {
- delete static_cast<const OnCallSpec<F>*>(*it);
- }
-
- // Lock the mutex again, since the caller expects it to be locked when we
- // return.
- g_gmock_mutex.Lock();
- }
-
+ GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+ g_gmock_mutex.AssertHeld();
+
+ // Deleting our default actions may trigger other mock objects to be
+ // deleted, for example if an action contains a reference counted smart
+ // pointer to that mock object, and that is the last reference. So if we
+ // delete our actions within the context of the global mutex we may deadlock
+ // when this method is called again. Instead, make a copy of the set of
+ // actions to delete, clear our set within the mutex, and then delete the
+ // actions outside of the mutex.
+ UntypedOnCallSpecs specs_to_delete;
+ untyped_on_call_specs_.swap(specs_to_delete);
+
+ g_gmock_mutex.Unlock();
+ for (UntypedOnCallSpecs::const_iterator it =
+ specs_to_delete.begin();
+ it != specs_to_delete.end(); ++it) {
+ delete static_cast<const OnCallSpec<F>*>(*it);
+ }
+
+ // Lock the mutex again, since the caller expects it to be locked when we
+ // return.
+ g_gmock_mutex.Lock();
+ }
+
// Returns the result of invoking this mock function with the given
// arguments. This function can be safely called from multiple
// threads concurrently.
@@ -1604,193 +1604,193 @@ class FunctionMocker<R(Args...)> final : public UntypedFunctionMockerBase {
return MockSpec<F>(this, ::std::make_tuple(std::move(m)...));
}
- protected:
- template <typename Function>
- friend class MockSpec;
-
- typedef ActionResultHolder<Result> ResultHolder;
-
- // Adds and returns a default action spec for this mock function.
- OnCallSpec<F>& AddNewOnCallSpec(
- const char* file, int line,
- const ArgumentMatcherTuple& m)
- GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
- Mock::RegisterUseByOnCallOrExpectCall(MockObject(), file, line);
- OnCallSpec<F>* const on_call_spec = new OnCallSpec<F>(file, line, m);
- untyped_on_call_specs_.push_back(on_call_spec);
- return *on_call_spec;
- }
-
- // Adds and returns an expectation spec for this mock function.
+ protected:
+ template <typename Function>
+ friend class MockSpec;
+
+ typedef ActionResultHolder<Result> ResultHolder;
+
+ // Adds and returns a default action spec for this mock function.
+ OnCallSpec<F>& AddNewOnCallSpec(
+ const char* file, int line,
+ const ArgumentMatcherTuple& m)
+ GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
+ Mock::RegisterUseByOnCallOrExpectCall(MockObject(), file, line);
+ OnCallSpec<F>* const on_call_spec = new OnCallSpec<F>(file, line, m);
+ untyped_on_call_specs_.push_back(on_call_spec);
+ return *on_call_spec;
+ }
+
+ // Adds and returns an expectation spec for this mock function.
TypedExpectation<F>& AddNewExpectation(const char* file, int line,
const std::string& source_text,
const ArgumentMatcherTuple& m)
GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
- Mock::RegisterUseByOnCallOrExpectCall(MockObject(), file, line);
- TypedExpectation<F>* const expectation =
- new TypedExpectation<F>(this, file, line, source_text, m);
+ Mock::RegisterUseByOnCallOrExpectCall(MockObject(), file, line);
+ TypedExpectation<F>* const expectation =
+ new TypedExpectation<F>(this, file, line, source_text, m);
const std::shared_ptr<ExpectationBase> untyped_expectation(expectation);
// See the definition of untyped_expectations_ for why access to
// it is unprotected here.
- untyped_expectations_.push_back(untyped_expectation);
-
- // Adds this expectation into the implicit sequence if there is one.
- Sequence* const implicit_sequence = g_gmock_implicit_sequence.get();
+ untyped_expectations_.push_back(untyped_expectation);
+
+ // Adds this expectation into the implicit sequence if there is one.
+ Sequence* const implicit_sequence = g_gmock_implicit_sequence.get();
if (implicit_sequence != nullptr) {
- implicit_sequence->AddExpectation(Expectation(untyped_expectation));
- }
-
- return *expectation;
- }
-
- private:
- template <typename Func> friend class TypedExpectation;
-
- // Some utilities needed for implementing UntypedInvokeWith().
-
- // Describes what default action will be performed for the given
- // arguments.
- // L = *
- void DescribeDefaultActionTo(const ArgumentTuple& args,
- ::std::ostream* os) const {
- const OnCallSpec<F>* const spec = FindOnCallSpec(args);
-
+ implicit_sequence->AddExpectation(Expectation(untyped_expectation));
+ }
+
+ return *expectation;
+ }
+
+ private:
+ template <typename Func> friend class TypedExpectation;
+
+ // Some utilities needed for implementing UntypedInvokeWith().
+
+ // Describes what default action will be performed for the given
+ // arguments.
+ // L = *
+ void DescribeDefaultActionTo(const ArgumentTuple& args,
+ ::std::ostream* os) const {
+ const OnCallSpec<F>* const spec = FindOnCallSpec(args);
+
if (spec == nullptr) {
*os << (std::is_void<Result>::value ? "returning directly.\n"
: "returning default value.\n");
- } else {
- *os << "taking default action specified at:\n"
- << FormatFileLocation(spec->file(), spec->line()) << "\n";
- }
- }
-
- // Writes a message that the call is uninteresting (i.e. neither
- // explicitly expected nor explicitly unexpected) to the given
- // ostream.
+ } else {
+ *os << "taking default action specified at:\n"
+ << FormatFileLocation(spec->file(), spec->line()) << "\n";
+ }
+ }
+
+ // Writes a message that the call is uninteresting (i.e. neither
+ // explicitly expected nor explicitly unexpected) to the given
+ // ostream.
void UntypedDescribeUninterestingCall(const void* untyped_args,
::std::ostream* os) const override
GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
- const ArgumentTuple& args =
- *static_cast<const ArgumentTuple*>(untyped_args);
- *os << "Uninteresting mock function call - ";
- DescribeDefaultActionTo(args, os);
- *os << " Function call: " << Name();
- UniversalPrint(args, os);
- }
-
- // Returns the expectation that matches the given function arguments
- // (or NULL is there's no match); when a match is found,
- // untyped_action is set to point to the action that should be
- // performed (or NULL if the action is "do default"), and
- // is_excessive is modified to indicate whether the call exceeds the
- // expected number.
- //
- // Critical section: We must find the matching expectation and the
- // corresponding action that needs to be taken in an ATOMIC
- // transaction. Otherwise another thread may call this mock
- // method in the middle and mess up the state.
- //
- // However, performing the action has to be left out of the critical
- // section. The reason is that we have no control on what the
- // action does (it can invoke an arbitrary user function or even a
- // mock function) and excessive locking could cause a dead lock.
+ const ArgumentTuple& args =
+ *static_cast<const ArgumentTuple*>(untyped_args);
+ *os << "Uninteresting mock function call - ";
+ DescribeDefaultActionTo(args, os);
+ *os << " Function call: " << Name();
+ UniversalPrint(args, os);
+ }
+
+ // Returns the expectation that matches the given function arguments
+ // (or NULL is there's no match); when a match is found,
+ // untyped_action is set to point to the action that should be
+ // performed (or NULL if the action is "do default"), and
+ // is_excessive is modified to indicate whether the call exceeds the
+ // expected number.
+ //
+ // Critical section: We must find the matching expectation and the
+ // corresponding action that needs to be taken in an ATOMIC
+ // transaction. Otherwise another thread may call this mock
+ // method in the middle and mess up the state.
+ //
+ // However, performing the action has to be left out of the critical
+ // section. The reason is that we have no control on what the
+ // action does (it can invoke an arbitrary user function or even a
+ // mock function) and excessive locking could cause a dead lock.
const ExpectationBase* UntypedFindMatchingExpectation(
const void* untyped_args, const void** untyped_action, bool* is_excessive,
::std::ostream* what, ::std::ostream* why) override
GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
- const ArgumentTuple& args =
- *static_cast<const ArgumentTuple*>(untyped_args);
- MutexLock l(&g_gmock_mutex);
- TypedExpectation<F>* exp = this->FindMatchingExpectationLocked(args);
+ const ArgumentTuple& args =
+ *static_cast<const ArgumentTuple*>(untyped_args);
+ MutexLock l(&g_gmock_mutex);
+ TypedExpectation<F>* exp = this->FindMatchingExpectationLocked(args);
if (exp == nullptr) { // A match wasn't found.
- this->FormatUnexpectedCallMessageLocked(args, what, why);
+ this->FormatUnexpectedCallMessageLocked(args, what, why);
return nullptr;
- }
-
- // This line must be done before calling GetActionForArguments(),
- // which will increment the call count for *exp and thus affect
- // its saturation status.
- *is_excessive = exp->IsSaturated();
- const Action<F>* action = exp->GetActionForArguments(this, args, what, why);
+ }
+
+ // This line must be done before calling GetActionForArguments(),
+ // which will increment the call count for *exp and thus affect
+ // its saturation status.
+ *is_excessive = exp->IsSaturated();
+ const Action<F>* action = exp->GetActionForArguments(this, args, what, why);
if (action != nullptr && action->IsDoDefault())
action = nullptr; // Normalize "do default" to NULL.
- *untyped_action = action;
- return exp;
- }
-
- // Prints the given function arguments to the ostream.
+ *untyped_action = action;
+ return exp;
+ }
+
+ // Prints the given function arguments to the ostream.
void UntypedPrintArgs(const void* untyped_args,
::std::ostream* os) const override {
- const ArgumentTuple& args =
- *static_cast<const ArgumentTuple*>(untyped_args);
- UniversalPrint(args, os);
- }
-
- // Returns the expectation that matches the arguments, or NULL if no
- // expectation matches them.
- TypedExpectation<F>* FindMatchingExpectationLocked(
- const ArgumentTuple& args) const
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
- g_gmock_mutex.AssertHeld();
+ const ArgumentTuple& args =
+ *static_cast<const ArgumentTuple*>(untyped_args);
+ UniversalPrint(args, os);
+ }
+
+ // Returns the expectation that matches the arguments, or NULL if no
+ // expectation matches them.
+ TypedExpectation<F>* FindMatchingExpectationLocked(
+ const ArgumentTuple& args) const
+ GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+ g_gmock_mutex.AssertHeld();
// See the definition of untyped_expectations_ for why access to
// it is unprotected here.
- for (typename UntypedExpectations::const_reverse_iterator it =
- untyped_expectations_.rbegin();
- it != untyped_expectations_.rend(); ++it) {
- TypedExpectation<F>* const exp =
- static_cast<TypedExpectation<F>*>(it->get());
- if (exp->ShouldHandleArguments(args)) {
- return exp;
- }
- }
+ for (typename UntypedExpectations::const_reverse_iterator it =
+ untyped_expectations_.rbegin();
+ it != untyped_expectations_.rend(); ++it) {
+ TypedExpectation<F>* const exp =
+ static_cast<TypedExpectation<F>*>(it->get());
+ if (exp->ShouldHandleArguments(args)) {
+ return exp;
+ }
+ }
return nullptr;
- }
-
- // Returns a message that the arguments don't match any expectation.
- void FormatUnexpectedCallMessageLocked(
- const ArgumentTuple& args,
- ::std::ostream* os,
- ::std::ostream* why) const
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
- g_gmock_mutex.AssertHeld();
- *os << "\nUnexpected mock function call - ";
- DescribeDefaultActionTo(args, os);
- PrintTriedExpectationsLocked(args, why);
- }
-
- // Prints a list of expectations that have been tried against the
- // current mock function call.
- void PrintTriedExpectationsLocked(
- const ArgumentTuple& args,
- ::std::ostream* why) const
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
- g_gmock_mutex.AssertHeld();
+ }
+
+ // Returns a message that the arguments don't match any expectation.
+ void FormatUnexpectedCallMessageLocked(
+ const ArgumentTuple& args,
+ ::std::ostream* os,
+ ::std::ostream* why) const
+ GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+ g_gmock_mutex.AssertHeld();
+ *os << "\nUnexpected mock function call - ";
+ DescribeDefaultActionTo(args, os);
+ PrintTriedExpectationsLocked(args, why);
+ }
+
+ // Prints a list of expectations that have been tried against the
+ // current mock function call.
+ void PrintTriedExpectationsLocked(
+ const ArgumentTuple& args,
+ ::std::ostream* why) const
+ GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+ g_gmock_mutex.AssertHeld();
const size_t count = untyped_expectations_.size();
- *why << "Google Mock tried the following " << count << " "
- << (count == 1 ? "expectation, but it didn't match" :
- "expectations, but none matched")
- << ":\n";
+ *why << "Google Mock tried the following " << count << " "
+ << (count == 1 ? "expectation, but it didn't match" :
+ "expectations, but none matched")
+ << ":\n";
for (size_t i = 0; i < count; i++) {
- TypedExpectation<F>* const expectation =
- static_cast<TypedExpectation<F>*>(untyped_expectations_[i].get());
- *why << "\n";
- expectation->DescribeLocationTo(why);
- if (count > 1) {
- *why << "tried expectation #" << i << ": ";
- }
- *why << expectation->source_text() << "...\n";
- expectation->ExplainMatchResultTo(args, why);
- expectation->DescribeCallCountTo(why);
- }
- }
+ TypedExpectation<F>* const expectation =
+ static_cast<TypedExpectation<F>*>(untyped_expectations_[i].get());
+ *why << "\n";
+ expectation->DescribeLocationTo(why);
+ if (count > 1) {
+ *why << "tried expectation #" << i << ": ";
+ }
+ *why << expectation->source_text() << "...\n";
+ expectation->ExplainMatchResultTo(args, why);
+ expectation->DescribeCallCountTo(why);
+ }
+ }
}; // class FunctionMocker
-
+
// Reports an uninteresting call (whose description is in msg) in the
// manner specified by 'reaction'.
void ReportUninterestingCall(CallReaction reaction, const std::string& msg);
-
+
} // namespace internal
-
+
namespace internal {
template <typename F>
@@ -1924,44 +1924,44 @@ using SignatureOfT = typename SignatureOf<F>::type;
template <typename F>
class MockFunction : public internal::MockFunction<internal::SignatureOfT<F>> {
using Base = internal::MockFunction<internal::SignatureOfT<F>>;
-
+
public:
using Base::Base;
};
-// The style guide prohibits "using" statements in a namespace scope
-// inside a header file. However, the MockSpec class template is
-// meant to be defined in the ::testing namespace. The following line
-// is just a trick for working around a bug in MSVC 8.0, which cannot
-// handle it if we define MockSpec in ::testing.
-using internal::MockSpec;
-
-// Const(x) is a convenient function for obtaining a const reference
-// to x. This is useful for setting expectations on an overloaded
-// const mock method, e.g.
-//
-// class MockFoo : public FooInterface {
-// public:
-// MOCK_METHOD0(Bar, int());
-// MOCK_CONST_METHOD0(Bar, int&());
-// };
-//
-// MockFoo foo;
-// // Expects a call to non-const MockFoo::Bar().
-// EXPECT_CALL(foo, Bar());
-// // Expects a call to const MockFoo::Bar().
-// EXPECT_CALL(Const(foo), Bar());
-template <typename T>
-inline const T& Const(const T& x) { return x; }
-
-// Constructs an Expectation object that references and co-owns exp.
-inline Expectation::Expectation(internal::ExpectationBase& exp) // NOLINT
- : expectation_base_(exp.GetHandle().expectation_base()) {}
-
-} // namespace testing
-
+// The style guide prohibits "using" statements in a namespace scope
+// inside a header file. However, the MockSpec class template is
+// meant to be defined in the ::testing namespace. The following line
+// is just a trick for working around a bug in MSVC 8.0, which cannot
+// handle it if we define MockSpec in ::testing.
+using internal::MockSpec;
+
+// Const(x) is a convenient function for obtaining a const reference
+// to x. This is useful for setting expectations on an overloaded
+// const mock method, e.g.
+//
+// class MockFoo : public FooInterface {
+// public:
+// MOCK_METHOD0(Bar, int());
+// MOCK_CONST_METHOD0(Bar, int&());
+// };
+//
+// MockFoo foo;
+// // Expects a call to non-const MockFoo::Bar().
+// EXPECT_CALL(foo, Bar());
+// // Expects a call to const MockFoo::Bar().
+// EXPECT_CALL(Const(foo), Bar());
+template <typename T>
+inline const T& Const(const T& x) { return x; }
+
+// Constructs an Expectation object that references and co-owns exp.
+inline Expectation::Expectation(internal::ExpectationBase& exp) // NOLINT
+ : expectation_base_(exp.GetHandle().expectation_base()) {}
+
+} // namespace testing
+
GTEST_DISABLE_MSC_WARNINGS_POP_() // 4251
-
+
// Implementation for ON_CALL and EXPECT_CALL macros. A separate macro is
// required to avoid compile errors when the name of the method used in call is
// a result of macro expansion. See CompilesWithMethodNameExpandedFromMacro
@@ -2028,7 +2028,7 @@ GTEST_DISABLE_MSC_WARNINGS_POP_() // 4251
((mock_expr).gmock_##call)(::testing::internal::GetWithoutMatchers(), \
nullptr) \
.Setter(__FILE__, __LINE__, #mock_expr, #call)
-
+
#define ON_CALL(obj, call) \
GMOCK_ON_CALL_IMPL_(obj, InternalDefaultActionSetAt, call)
diff --git a/contrib/restricted/googletest/googlemock/include/gmock/gmock.h b/contrib/restricted/googletest/googlemock/include/gmock/gmock.h
index f021eddb25..12469bc466 100644
--- a/contrib/restricted/googletest/googlemock/include/gmock/gmock.h
+++ b/contrib/restricted/googletest/googlemock/include/gmock/gmock.h
@@ -56,14 +56,14 @@
//
// where all clauses are optional and WillOnce() can be repeated.
-#include "gmock/gmock-actions.h"
-#include "gmock/gmock-cardinalities.h"
+#include "gmock/gmock-actions.h"
+#include "gmock/gmock-cardinalities.h"
#include "gmock/gmock-function-mocker.h"
-#include "gmock/gmock-matchers.h"
-#include "gmock/gmock-more-actions.h"
-#include "gmock/gmock-more-matchers.h"
+#include "gmock/gmock-matchers.h"
+#include "gmock/gmock-more-actions.h"
+#include "gmock/gmock-more-matchers.h"
#include "gmock/gmock-nice-strict.h"
-#include "gmock/internal/gmock-internal-utils.h"
+#include "gmock/internal/gmock-internal-utils.h"
namespace testing {
diff --git a/contrib/restricted/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h b/contrib/restricted/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h
index 532c1707b9..63f899962e 100644
--- a/contrib/restricted/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h
+++ b/contrib/restricted/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h
@@ -2,5 +2,5 @@
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_
#define GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_
-
+
#endif // GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_
diff --git a/contrib/restricted/googletest/googlemock/include/gmock/internal/custom/gmock-matchers.h b/contrib/restricted/googletest/googlemock/include/gmock/internal/custom/gmock-matchers.h
index 788f3c01a6..638429488e 100644
--- a/contrib/restricted/googletest/googlemock/include/gmock/internal/custom/gmock-matchers.h
+++ b/contrib/restricted/googletest/googlemock/include/gmock/internal/custom/gmock-matchers.h
@@ -1,36 +1,36 @@
-// Copyright 2015, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
+// Copyright 2015, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
// Injection point for custom user configurations. See README for details
-//
+//
// GOOGLETEST_CM0002 DO NOT DELETE
-
+
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_MATCHERS_H_
#define GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_MATCHERS_H_
#endif // GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_MATCHERS_H_
diff --git a/contrib/restricted/googletest/googlemock/include/gmock/internal/custom/gmock-port.h b/contrib/restricted/googletest/googlemock/include/gmock/internal/custom/gmock-port.h
index 06637a097f..14378692ae 100644
--- a/contrib/restricted/googletest/googlemock/include/gmock/internal/custom/gmock-port.h
+++ b/contrib/restricted/googletest/googlemock/include/gmock/internal/custom/gmock-port.h
@@ -1,39 +1,39 @@
-// Copyright 2015, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
+// Copyright 2015, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
// Injection point for custom user configurations. See README for details
-//
-// ** Custom implementation starts here **
-
+//
+// ** Custom implementation starts here **
+
// GOOGLETEST_CM0002 DO NOT DELETE
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_PORT_H_
#define GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_PORT_H_
-
+
#endif // GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_PORT_H_
diff --git a/contrib/restricted/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h b/contrib/restricted/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h
index 7502064281..317544a7da 100644
--- a/contrib/restricted/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h
+++ b/contrib/restricted/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h
@@ -1,58 +1,58 @@
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Google Mock - a framework for writing C++ mock classes.
-//
-// This file defines some utilities useful for implementing Google
-// Mock. They are subject to change without notice, so please DO NOT
-// USE THEM IN USER CODE.
-
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file defines some utilities useful for implementing Google
+// Mock. They are subject to change without notice, so please DO NOT
+// USE THEM IN USER CODE.
+
// GOOGLETEST_CM0002 DO NOT DELETE
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_INTERNAL_UTILS_H_
#define GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_INTERNAL_UTILS_H_
-
-#include <stdio.h>
-#include <ostream> // NOLINT
-#include <string>
+
+#include <stdio.h>
+#include <ostream> // NOLINT
+#include <string>
#include <type_traits>
-#include "gmock/internal/gmock-port.h"
-#include "gtest/gtest.h"
-
-namespace testing {
+#include "gmock/internal/gmock-port.h"
+#include "gtest/gtest.h"
+
+namespace testing {
template <typename>
class Matcher;
-namespace internal {
-
+namespace internal {
+
// Silence MSVC C4100 (unreferenced formal parameter) and
// C4805('==': unsafe mix of type 'const int' and type 'const bool')
#ifdef _MSC_VER
@@ -65,92 +65,92 @@ namespace internal {
// the joined string.
GTEST_API_ std::string JoinAsTuple(const Strings& fields);
-// Converts an identifier name to a space-separated list of lower-case
-// words. Each maximum substring of the form [A-Za-z][a-z]*|\d+ is
-// treated as one word. For example, both "FooBar123" and
-// "foo_bar_123" are converted to "foo bar 123".
+// Converts an identifier name to a space-separated list of lower-case
+// words. Each maximum substring of the form [A-Za-z][a-z]*|\d+ is
+// treated as one word. For example, both "FooBar123" and
+// "foo_bar_123" are converted to "foo bar 123".
GTEST_API_ std::string ConvertIdentifierNameToWords(const char* id_name);
-
-// GetRawPointer(p) returns the raw pointer underlying p when p is a
-// smart pointer, or returns p itself when p is already a raw pointer.
-// The following default implementation is for the smart pointer case.
-template <typename Pointer>
-inline const typename Pointer::element_type* GetRawPointer(const Pointer& p) {
- return p.get();
-}
-// This overloaded version is for the raw pointer case.
-template <typename Element>
-inline Element* GetRawPointer(Element* p) { return p; }
-
-// MSVC treats wchar_t as a native type usually, but treats it as the
-// same as unsigned short when the compiler option /Zc:wchar_t- is
-// specified. It defines _NATIVE_WCHAR_T_DEFINED symbol when wchar_t
-// is a native type.
+
+// GetRawPointer(p) returns the raw pointer underlying p when p is a
+// smart pointer, or returns p itself when p is already a raw pointer.
+// The following default implementation is for the smart pointer case.
+template <typename Pointer>
+inline const typename Pointer::element_type* GetRawPointer(const Pointer& p) {
+ return p.get();
+}
+// This overloaded version is for the raw pointer case.
+template <typename Element>
+inline Element* GetRawPointer(Element* p) { return p; }
+
+// MSVC treats wchar_t as a native type usually, but treats it as the
+// same as unsigned short when the compiler option /Zc:wchar_t- is
+// specified. It defines _NATIVE_WCHAR_T_DEFINED symbol when wchar_t
+// is a native type.
#if defined(_MSC_VER) && !defined(_NATIVE_WCHAR_T_DEFINED)
-// wchar_t is a typedef.
-#else
-# define GMOCK_WCHAR_T_IS_NATIVE_ 1
-#endif
-
-// In what follows, we use the term "kind" to indicate whether a type
-// is bool, an integer type (excluding bool), a floating-point type,
-// or none of them. This categorization is useful for determining
-// when a matcher argument type can be safely converted to another
-// type in the implementation of SafeMatcherCast.
-enum TypeKind {
- kBool, kInteger, kFloatingPoint, kOther
-};
-
-// KindOf<T>::value is the kind of type T.
-template <typename T> struct KindOf {
- enum { value = kOther }; // The default kind.
-};
-
-// This macro declares that the kind of 'type' is 'kind'.
-#define GMOCK_DECLARE_KIND_(type, kind) \
- template <> struct KindOf<type> { enum { value = kind }; }
-
-GMOCK_DECLARE_KIND_(bool, kBool);
-
-// All standard integer types.
-GMOCK_DECLARE_KIND_(char, kInteger);
-GMOCK_DECLARE_KIND_(signed char, kInteger);
-GMOCK_DECLARE_KIND_(unsigned char, kInteger);
-GMOCK_DECLARE_KIND_(short, kInteger); // NOLINT
-GMOCK_DECLARE_KIND_(unsigned short, kInteger); // NOLINT
-GMOCK_DECLARE_KIND_(int, kInteger);
-GMOCK_DECLARE_KIND_(unsigned int, kInteger);
-GMOCK_DECLARE_KIND_(long, kInteger); // NOLINT
-GMOCK_DECLARE_KIND_(unsigned long, kInteger); // NOLINT
+// wchar_t is a typedef.
+#else
+# define GMOCK_WCHAR_T_IS_NATIVE_ 1
+#endif
+
+// In what follows, we use the term "kind" to indicate whether a type
+// is bool, an integer type (excluding bool), a floating-point type,
+// or none of them. This categorization is useful for determining
+// when a matcher argument type can be safely converted to another
+// type in the implementation of SafeMatcherCast.
+enum TypeKind {
+ kBool, kInteger, kFloatingPoint, kOther
+};
+
+// KindOf<T>::value is the kind of type T.
+template <typename T> struct KindOf {
+ enum { value = kOther }; // The default kind.
+};
+
+// This macro declares that the kind of 'type' is 'kind'.
+#define GMOCK_DECLARE_KIND_(type, kind) \
+ template <> struct KindOf<type> { enum { value = kind }; }
+
+GMOCK_DECLARE_KIND_(bool, kBool);
+
+// All standard integer types.
+GMOCK_DECLARE_KIND_(char, kInteger);
+GMOCK_DECLARE_KIND_(signed char, kInteger);
+GMOCK_DECLARE_KIND_(unsigned char, kInteger);
+GMOCK_DECLARE_KIND_(short, kInteger); // NOLINT
+GMOCK_DECLARE_KIND_(unsigned short, kInteger); // NOLINT
+GMOCK_DECLARE_KIND_(int, kInteger);
+GMOCK_DECLARE_KIND_(unsigned int, kInteger);
+GMOCK_DECLARE_KIND_(long, kInteger); // NOLINT
+GMOCK_DECLARE_KIND_(unsigned long, kInteger); // NOLINT
GMOCK_DECLARE_KIND_(long long, kInteger); // NOLINT
GMOCK_DECLARE_KIND_(unsigned long long, kInteger); // NOLINT
-
-#if GMOCK_WCHAR_T_IS_NATIVE_
-GMOCK_DECLARE_KIND_(wchar_t, kInteger);
-#endif
-
-// All standard floating-point types.
-GMOCK_DECLARE_KIND_(float, kFloatingPoint);
-GMOCK_DECLARE_KIND_(double, kFloatingPoint);
-GMOCK_DECLARE_KIND_(long double, kFloatingPoint);
-
-#undef GMOCK_DECLARE_KIND_
-
-// Evaluates to the kind of 'type'.
-#define GMOCK_KIND_OF_(type) \
- static_cast< ::testing::internal::TypeKind>( \
- ::testing::internal::KindOf<type>::value)
-
-// LosslessArithmeticConvertibleImpl<kFromKind, From, kToKind, To>::value
+
+#if GMOCK_WCHAR_T_IS_NATIVE_
+GMOCK_DECLARE_KIND_(wchar_t, kInteger);
+#endif
+
+// All standard floating-point types.
+GMOCK_DECLARE_KIND_(float, kFloatingPoint);
+GMOCK_DECLARE_KIND_(double, kFloatingPoint);
+GMOCK_DECLARE_KIND_(long double, kFloatingPoint);
+
+#undef GMOCK_DECLARE_KIND_
+
+// Evaluates to the kind of 'type'.
+#define GMOCK_KIND_OF_(type) \
+ static_cast< ::testing::internal::TypeKind>( \
+ ::testing::internal::KindOf<type>::value)
+
+// LosslessArithmeticConvertibleImpl<kFromKind, From, kToKind, To>::value
// is true if and only if arithmetic type From can be losslessly converted to
-// arithmetic type To.
-//
-// It's the user's responsibility to ensure that both From and To are
-// raw (i.e. has no CV modifier, is not a pointer, and is not a
-// reference) built-in arithmetic types, kFromKind is the kind of
-// From, and kToKind is the kind of To; the value is
-// implementation-defined when the above pre-condition is violated.
-template <TypeKind kFromKind, typename From, TypeKind kToKind, typename To>
+// arithmetic type To.
+//
+// It's the user's responsibility to ensure that both From and To are
+// raw (i.e. has no CV modifier, is not a pointer, and is not a
+// reference) built-in arithmetic types, kFromKind is the kind of
+// From, and kToKind is the kind of To; the value is
+// implementation-defined when the above pre-condition is violated.
+template <TypeKind kFromKind, typename From, TypeKind kToKind, typename To>
using LosslessArithmeticConvertibleImpl = std::integral_constant<
bool,
// clang-format off
@@ -175,96 +175,96 @@ using LosslessArithmeticConvertibleImpl = std::integral_constant<
: false
// clang-format on
>;
-
+
// LosslessArithmeticConvertible<From, To>::value is true if and only if
// arithmetic type From can be losslessly converted to arithmetic type To.
-//
-// It's the user's responsibility to ensure that both From and To are
-// raw (i.e. has no CV modifier, is not a pointer, and is not a
-// reference) built-in arithmetic types; the value is
-// implementation-defined when the above pre-condition is violated.
-template <typename From, typename To>
+//
+// It's the user's responsibility to ensure that both From and To are
+// raw (i.e. has no CV modifier, is not a pointer, and is not a
+// reference) built-in arithmetic types; the value is
+// implementation-defined when the above pre-condition is violated.
+template <typename From, typename To>
using LosslessArithmeticConvertible =
LosslessArithmeticConvertibleImpl<GMOCK_KIND_OF_(From), From,
GMOCK_KIND_OF_(To), To>;
-
-// This interface knows how to report a Google Mock failure (either
-// non-fatal or fatal).
-class FailureReporterInterface {
- public:
- // The type of a failure (either non-fatal or fatal).
- enum FailureType {
- kNonfatal, kFatal
- };
-
- virtual ~FailureReporterInterface() {}
-
- // Reports a failure that occurred at the given source file location.
- virtual void ReportFailure(FailureType type, const char* file, int line,
+
+// This interface knows how to report a Google Mock failure (either
+// non-fatal or fatal).
+class FailureReporterInterface {
+ public:
+ // The type of a failure (either non-fatal or fatal).
+ enum FailureType {
+ kNonfatal, kFatal
+ };
+
+ virtual ~FailureReporterInterface() {}
+
+ // Reports a failure that occurred at the given source file location.
+ virtual void ReportFailure(FailureType type, const char* file, int line,
const std::string& message) = 0;
-};
-
-// Returns the failure reporter used by Google Mock.
-GTEST_API_ FailureReporterInterface* GetFailureReporter();
-
-// Asserts that condition is true; aborts the process with the given
-// message if condition is false. We cannot use LOG(FATAL) or CHECK()
-// as Google Mock might be used to mock the log sink itself. We
-// inline this function to prevent it from showing up in the stack
-// trace.
-inline void Assert(bool condition, const char* file, int line,
+};
+
+// Returns the failure reporter used by Google Mock.
+GTEST_API_ FailureReporterInterface* GetFailureReporter();
+
+// Asserts that condition is true; aborts the process with the given
+// message if condition is false. We cannot use LOG(FATAL) or CHECK()
+// as Google Mock might be used to mock the log sink itself. We
+// inline this function to prevent it from showing up in the stack
+// trace.
+inline void Assert(bool condition, const char* file, int line,
const std::string& msg) {
- if (!condition) {
- GetFailureReporter()->ReportFailure(FailureReporterInterface::kFatal,
- file, line, msg);
- }
-}
-inline void Assert(bool condition, const char* file, int line) {
- Assert(condition, file, line, "Assertion failed.");
-}
-
-// Verifies that condition is true; generates a non-fatal failure if
-// condition is false.
-inline void Expect(bool condition, const char* file, int line,
+ if (!condition) {
+ GetFailureReporter()->ReportFailure(FailureReporterInterface::kFatal,
+ file, line, msg);
+ }
+}
+inline void Assert(bool condition, const char* file, int line) {
+ Assert(condition, file, line, "Assertion failed.");
+}
+
+// Verifies that condition is true; generates a non-fatal failure if
+// condition is false.
+inline void Expect(bool condition, const char* file, int line,
const std::string& msg) {
- if (!condition) {
- GetFailureReporter()->ReportFailure(FailureReporterInterface::kNonfatal,
- file, line, msg);
- }
-}
-inline void Expect(bool condition, const char* file, int line) {
- Expect(condition, file, line, "Expectation failed.");
-}
-
-// Severity level of a log.
-enum LogSeverity {
- kInfo = 0,
- kWarning = 1
-};
-
-// Valid values for the --gmock_verbose flag.
-
-// All logs (informational and warnings) are printed.
-const char kInfoVerbosity[] = "info";
-// Only warnings are printed.
-const char kWarningVerbosity[] = "warning";
-// No logs are printed.
-const char kErrorVerbosity[] = "error";
-
+ if (!condition) {
+ GetFailureReporter()->ReportFailure(FailureReporterInterface::kNonfatal,
+ file, line, msg);
+ }
+}
+inline void Expect(bool condition, const char* file, int line) {
+ Expect(condition, file, line, "Expectation failed.");
+}
+
+// Severity level of a log.
+enum LogSeverity {
+ kInfo = 0,
+ kWarning = 1
+};
+
+// Valid values for the --gmock_verbose flag.
+
+// All logs (informational and warnings) are printed.
+const char kInfoVerbosity[] = "info";
+// Only warnings are printed.
+const char kWarningVerbosity[] = "warning";
+// No logs are printed.
+const char kErrorVerbosity[] = "error";
+
// Returns true if and only if a log with the given severity is visible
// according to the --gmock_verbose flag.
-GTEST_API_ bool LogIsVisible(LogSeverity severity);
-
+GTEST_API_ bool LogIsVisible(LogSeverity severity);
+
// Prints the given message to stdout if and only if 'severity' >= the level
-// specified by the --gmock_verbose flag. If stack_frames_to_skip >=
-// 0, also prints the stack trace excluding the top
-// stack_frames_to_skip frames. In opt mode, any positive
-// stack_frames_to_skip is treated as 0, since we don't know which
-// function calls will be inlined by the compiler and need to be
-// conservative.
+// specified by the --gmock_verbose flag. If stack_frames_to_skip >=
+// 0, also prints the stack trace excluding the top
+// stack_frames_to_skip frames. In opt mode, any positive
+// stack_frames_to_skip is treated as 0, since we don't know which
+// function calls will be inlined by the compiler and need to be
+// conservative.
GTEST_API_ void Log(LogSeverity severity, const std::string& message,
- int stack_frames_to_skip);
-
+ int stack_frames_to_skip);
+
// A marker class that is used to resolve parameterless expectations to the
// correct overload. This must not be instantiable, to prevent client code from
// accidentally resolving to the overload; for example:
@@ -276,131 +276,131 @@ class WithoutMatchers {
WithoutMatchers() {}
friend GTEST_API_ WithoutMatchers GetWithoutMatchers();
};
-
+
// Internal use only: access the singleton instance of WithoutMatchers.
GTEST_API_ WithoutMatchers GetWithoutMatchers();
-// Disable MSVC warnings for infinite recursion, since in this case the
-// the recursion is unreachable.
-#ifdef _MSC_VER
-# pragma warning(push)
-# pragma warning(disable:4717)
-#endif
-
-// Invalid<T>() is usable as an expression of type T, but will terminate
-// the program with an assertion failure if actually run. This is useful
-// when a value of type T is needed for compilation, but the statement
-// will not really be executed (or we don't care if the statement
-// crashes).
-template <typename T>
-inline T Invalid() {
- Assert(false, "", -1, "Internal error: attempt to return invalid value");
- // This statement is unreachable, and would never terminate even if it
- // could be reached. It is provided only to placate compiler warnings
- // about missing return statements.
- return Invalid<T>();
-}
-
-#ifdef _MSC_VER
-# pragma warning(pop)
-#endif
-
-// Given a raw type (i.e. having no top-level reference or const
-// modifier) RawContainer that's either an STL-style container or a
-// native array, class StlContainerView<RawContainer> has the
-// following members:
-//
-// - type is a type that provides an STL-style container view to
-// (i.e. implements the STL container concept for) RawContainer;
-// - const_reference is a type that provides a reference to a const
-// RawContainer;
-// - ConstReference(raw_container) returns a const reference to an STL-style
-// container view to raw_container, which is a RawContainer.
-// - Copy(raw_container) returns an STL-style container view of a
-// copy of raw_container, which is a RawContainer.
-//
-// This generic version is used when RawContainer itself is already an
-// STL-style container.
-template <class RawContainer>
-class StlContainerView {
- public:
- typedef RawContainer type;
- typedef const type& const_reference;
-
- static const_reference ConstReference(const RawContainer& container) {
+// Disable MSVC warnings for infinite recursion, since in this case the
+// the recursion is unreachable.
+#ifdef _MSC_VER
+# pragma warning(push)
+# pragma warning(disable:4717)
+#endif
+
+// Invalid<T>() is usable as an expression of type T, but will terminate
+// the program with an assertion failure if actually run. This is useful
+// when a value of type T is needed for compilation, but the statement
+// will not really be executed (or we don't care if the statement
+// crashes).
+template <typename T>
+inline T Invalid() {
+ Assert(false, "", -1, "Internal error: attempt to return invalid value");
+ // This statement is unreachable, and would never terminate even if it
+ // could be reached. It is provided only to placate compiler warnings
+ // about missing return statements.
+ return Invalid<T>();
+}
+
+#ifdef _MSC_VER
+# pragma warning(pop)
+#endif
+
+// Given a raw type (i.e. having no top-level reference or const
+// modifier) RawContainer that's either an STL-style container or a
+// native array, class StlContainerView<RawContainer> has the
+// following members:
+//
+// - type is a type that provides an STL-style container view to
+// (i.e. implements the STL container concept for) RawContainer;
+// - const_reference is a type that provides a reference to a const
+// RawContainer;
+// - ConstReference(raw_container) returns a const reference to an STL-style
+// container view to raw_container, which is a RawContainer.
+// - Copy(raw_container) returns an STL-style container view of a
+// copy of raw_container, which is a RawContainer.
+//
+// This generic version is used when RawContainer itself is already an
+// STL-style container.
+template <class RawContainer>
+class StlContainerView {
+ public:
+ typedef RawContainer type;
+ typedef const type& const_reference;
+
+ static const_reference ConstReference(const RawContainer& container) {
static_assert(!std::is_const<RawContainer>::value,
"RawContainer type must not be const");
- return container;
- }
- static type Copy(const RawContainer& container) { return container; }
-};
-
-// This specialization is used when RawContainer is a native array type.
-template <typename Element, size_t N>
-class StlContainerView<Element[N]> {
- public:
+ return container;
+ }
+ static type Copy(const RawContainer& container) { return container; }
+};
+
+// This specialization is used when RawContainer is a native array type.
+template <typename Element, size_t N>
+class StlContainerView<Element[N]> {
+ public:
typedef typename std::remove_const<Element>::type RawElement;
- typedef internal::NativeArray<RawElement> type;
- // NativeArray<T> can represent a native array either by value or by
- // reference (selected by a constructor argument), so 'const type'
- // can be used to reference a const native array. We cannot
- // 'typedef const type& const_reference' here, as that would mean
- // ConstReference() has to return a reference to a local variable.
- typedef const type const_reference;
-
- static const_reference ConstReference(const Element (&array)[N]) {
+ typedef internal::NativeArray<RawElement> type;
+ // NativeArray<T> can represent a native array either by value or by
+ // reference (selected by a constructor argument), so 'const type'
+ // can be used to reference a const native array. We cannot
+ // 'typedef const type& const_reference' here, as that would mean
+ // ConstReference() has to return a reference to a local variable.
+ typedef const type const_reference;
+
+ static const_reference ConstReference(const Element (&array)[N]) {
static_assert(std::is_same<Element, RawElement>::value,
"Element type must not be const");
- return type(array, N, RelationToSourceReference());
- }
- static type Copy(const Element (&array)[N]) {
- return type(array, N, RelationToSourceCopy());
- }
-};
-
-// This specialization is used when RawContainer is a native array
-// represented as a (pointer, size) tuple.
-template <typename ElementPointer, typename Size>
+ return type(array, N, RelationToSourceReference());
+ }
+ static type Copy(const Element (&array)[N]) {
+ return type(array, N, RelationToSourceCopy());
+ }
+};
+
+// This specialization is used when RawContainer is a native array
+// represented as a (pointer, size) tuple.
+template <typename ElementPointer, typename Size>
class StlContainerView< ::std::tuple<ElementPointer, Size> > {
- public:
+ public:
typedef typename std::remove_const<
typename std::pointer_traits<ElementPointer>::element_type>::type
RawElement;
- typedef internal::NativeArray<RawElement> type;
- typedef const type const_reference;
-
- static const_reference ConstReference(
+ typedef internal::NativeArray<RawElement> type;
+ typedef const type const_reference;
+
+ static const_reference ConstReference(
const ::std::tuple<ElementPointer, Size>& array) {
return type(std::get<0>(array), std::get<1>(array),
RelationToSourceReference());
- }
+ }
static type Copy(const ::std::tuple<ElementPointer, Size>& array) {
return type(std::get<0>(array), std::get<1>(array), RelationToSourceCopy());
- }
-};
-
-// The following specialization prevents the user from instantiating
-// StlContainer with a reference type.
-template <typename T> class StlContainerView<T&>;
-
-// A type transform to remove constness from the first part of a pair.
-// Pairs like that are used as the value_type of associative containers,
-// and this transform produces a similar but assignable pair.
-template <typename T>
-struct RemoveConstFromKey {
- typedef T type;
-};
-
-// Partially specialized to remove constness from std::pair<const K, V>.
-template <typename K, typename V>
-struct RemoveConstFromKey<std::pair<const K, V> > {
- typedef std::pair<K, V> type;
-};
-
+ }
+};
+
+// The following specialization prevents the user from instantiating
+// StlContainer with a reference type.
+template <typename T> class StlContainerView<T&>;
+
+// A type transform to remove constness from the first part of a pair.
+// Pairs like that are used as the value_type of associative containers,
+// and this transform produces a similar but assignable pair.
+template <typename T>
+struct RemoveConstFromKey {
+ typedef T type;
+};
+
+// Partially specialized to remove constness from std::pair<const K, V>.
+template <typename K, typename V>
+struct RemoveConstFromKey<std::pair<const K, V> > {
+ typedef std::pair<K, V> type;
+};
+
// Emit an assertion failure due to incorrect DoDefault() usage. Out-of-lined to
// reduce code size.
GTEST_API_ void IllegalDoDefault(const char* file, int line);
-
+
template <typename F, typename Tuple, size_t... Idx>
auto ApplyImpl(F&& f, Tuple&& args, IndexSequence<Idx...>) -> decltype(
std::forward<F>(f)(std::get<Idx>(std::forward<Tuple>(args))...)) {
@@ -453,7 +453,7 @@ constexpr size_t Function<R(Args...)>::ArgumentCount;
# pragma warning(pop)
#endif
-} // namespace internal
-} // namespace testing
-
+} // namespace internal
+} // namespace testing
+
#endif // GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_INTERNAL_UTILS_H_
diff --git a/contrib/restricted/googletest/googlemock/include/gmock/internal/gmock-port.h b/contrib/restricted/googletest/googlemock/include/gmock/internal/gmock-port.h
index 6a37a2f6c2..367a44d366 100644
--- a/contrib/restricted/googletest/googlemock/include/gmock/internal/gmock-port.h
+++ b/contrib/restricted/googletest/googlemock/include/gmock/internal/gmock-port.h
@@ -1,87 +1,87 @@
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+//
+// Low-level types and utilities for porting Google Mock to various
+// platforms. All macros ending with _ and symbols defined in an
+// internal namespace are subject to change without notice. Code
+// outside Google Mock MUST NOT USE THEM DIRECTLY. Macros that don't
+// end with _ are part of Google Mock's public API and can be used by
+// code outside Google Mock.
-//
-// Low-level types and utilities for porting Google Mock to various
-// platforms. All macros ending with _ and symbols defined in an
-// internal namespace are subject to change without notice. Code
-// outside Google Mock MUST NOT USE THEM DIRECTLY. Macros that don't
-// end with _ are part of Google Mock's public API and can be used by
-// code outside Google Mock.
-
// GOOGLETEST_CM0002 DO NOT DELETE
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_PORT_H_
#define GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_PORT_H_
-
-#include <assert.h>
-#include <stdlib.h>
+
+#include <assert.h>
+#include <stdlib.h>
#include <cstdint>
-#include <iostream>
-
-// Most of the utilities needed for porting Google Mock are also
-// required for Google Test and are defined in gtest-port.h.
-//
-// Note to maintainers: to reduce code duplication, prefer adding
-// portability utilities to Google Test's gtest-port.h instead of
-// here, as Google Mock depends on Google Test. Only add a utility
-// here if it's truly specific to Google Mock.
+#include <iostream>
+
+// Most of the utilities needed for porting Google Mock are also
+// required for Google Test and are defined in gtest-port.h.
+//
+// Note to maintainers: to reduce code duplication, prefer adding
+// portability utilities to Google Test's gtest-port.h instead of
+// here, as Google Mock depends on Google Test. Only add a utility
+// here if it's truly specific to Google Mock.
+
+#include "gtest/internal/gtest-port.h"
+#include "gmock/internal/custom/gmock-port.h"
-#include "gtest/internal/gtest-port.h"
-#include "gmock/internal/custom/gmock-port.h"
-
// For MS Visual C++, check the compiler version. At least VS 2015 is
-// required to compile Google Mock.
+// required to compile Google Mock.
#if defined(_MSC_VER) && _MSC_VER < 1900
# error "At least Visual C++ 2015 (14.0) is required to compile Google Mock."
-#endif
-
-// Macro for referencing flags. This is public as we want the user to
-// use this syntax to reference Google Mock flags.
-#define GMOCK_FLAG(name) FLAGS_gmock_##name
-
-#if !defined(GMOCK_DECLARE_bool_)
-
-// Macros for declaring flags.
+#endif
+
+// Macro for referencing flags. This is public as we want the user to
+// use this syntax to reference Google Mock flags.
+#define GMOCK_FLAG(name) FLAGS_gmock_##name
+
+#if !defined(GMOCK_DECLARE_bool_)
+
+// Macros for declaring flags.
# define GMOCK_DECLARE_bool_(name) extern GTEST_API_ bool GMOCK_FLAG(name)
# define GMOCK_DECLARE_int32_(name) extern GTEST_API_ int32_t GMOCK_FLAG(name)
# define GMOCK_DECLARE_string_(name) \
- extern GTEST_API_ ::std::string GMOCK_FLAG(name)
-
-// Macros for defining flags.
+ extern GTEST_API_ ::std::string GMOCK_FLAG(name)
+
+// Macros for defining flags.
# define GMOCK_DEFINE_bool_(name, default_val, doc) \
- GTEST_API_ bool GMOCK_FLAG(name) = (default_val)
+ GTEST_API_ bool GMOCK_FLAG(name) = (default_val)
# define GMOCK_DEFINE_int32_(name, default_val, doc) \
GTEST_API_ int32_t GMOCK_FLAG(name) = (default_val)
# define GMOCK_DEFINE_string_(name, default_val, doc) \
- GTEST_API_ ::std::string GMOCK_FLAG(name) = (default_val)
-
-#endif // !defined(GMOCK_DECLARE_bool_)
-
+ GTEST_API_ ::std::string GMOCK_FLAG(name) = (default_val)
+
+#endif // !defined(GMOCK_DECLARE_bool_)
+
#endif // GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_PORT_H_
diff --git a/contrib/restricted/googletest/googlemock/src/gmock-all.cc b/contrib/restricted/googletest/googlemock/src/gmock-all.cc
index d780d7ed24..e43c9b7b4c 100644
--- a/contrib/restricted/googletest/googlemock/src/gmock-all.cc
+++ b/contrib/restricted/googletest/googlemock/src/gmock-all.cc
@@ -1,46 +1,46 @@
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Google C++ Mocking Framework (Google Mock)
-//
-// This file #includes all Google Mock implementation .cc files. The
-// purpose is to allow a user to build Google Mock by compiling this
-// file alone.
-
-// This line ensures that gmock.h can be compiled on its own, even
-// when it's fused.
-#include "gmock/gmock.h"
-
-// The following lines pull in the real gmock *.cc files.
-#include "src/gmock-cardinalities.cc"
-#include "src/gmock-internal-utils.cc"
-#include "src/gmock-matchers.cc"
-#include "src/gmock-spec-builders.cc"
-#include "src/gmock.cc"
+//
+// Google C++ Mocking Framework (Google Mock)
+//
+// This file #includes all Google Mock implementation .cc files. The
+// purpose is to allow a user to build Google Mock by compiling this
+// file alone.
+
+// This line ensures that gmock.h can be compiled on its own, even
+// when it's fused.
+#include "gmock/gmock.h"
+
+// The following lines pull in the real gmock *.cc files.
+#include "src/gmock-cardinalities.cc"
+#include "src/gmock-internal-utils.cc"
+#include "src/gmock-matchers.cc"
+#include "src/gmock-spec-builders.cc"
+#include "src/gmock.cc"
diff --git a/contrib/restricted/googletest/googlemock/src/gmock-cardinalities.cc b/contrib/restricted/googletest/googlemock/src/gmock-cardinalities.cc
index 2e23c106fd..7463f43832 100644
--- a/contrib/restricted/googletest/googlemock/src/gmock-cardinalities.cc
+++ b/contrib/restricted/googletest/googlemock/src/gmock-cardinalities.cc
@@ -1,155 +1,155 @@
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Google Mock - a framework for writing C++ mock classes.
-//
-// This file implements cardinalities.
-
-#include "gmock/gmock-cardinalities.h"
-
-#include <limits.h>
-#include <ostream> // NOLINT
-#include <sstream>
-#include <string>
-#include "gmock/internal/gmock-internal-utils.h"
-#include "gtest/gtest.h"
-
-namespace testing {
-
-namespace {
-
-// Implements the Between(m, n) cardinality.
-class BetweenCardinalityImpl : public CardinalityInterface {
- public:
- BetweenCardinalityImpl(int min, int max)
- : min_(min >= 0 ? min : 0),
- max_(max >= min_ ? max : min_) {
- std::stringstream ss;
- if (min < 0) {
- ss << "The invocation lower bound must be >= 0, "
- << "but is actually " << min << ".";
- internal::Expect(false, __FILE__, __LINE__, ss.str());
- } else if (max < 0) {
- ss << "The invocation upper bound must be >= 0, "
- << "but is actually " << max << ".";
- internal::Expect(false, __FILE__, __LINE__, ss.str());
- } else if (min > max) {
- ss << "The invocation upper bound (" << max
- << ") must be >= the invocation lower bound (" << min
- << ").";
- internal::Expect(false, __FILE__, __LINE__, ss.str());
- }
- }
-
- // Conservative estimate on the lower/upper bound of the number of
- // calls allowed.
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file implements cardinalities.
+
+#include "gmock/gmock-cardinalities.h"
+
+#include <limits.h>
+#include <ostream> // NOLINT
+#include <sstream>
+#include <string>
+#include "gmock/internal/gmock-internal-utils.h"
+#include "gtest/gtest.h"
+
+namespace testing {
+
+namespace {
+
+// Implements the Between(m, n) cardinality.
+class BetweenCardinalityImpl : public CardinalityInterface {
+ public:
+ BetweenCardinalityImpl(int min, int max)
+ : min_(min >= 0 ? min : 0),
+ max_(max >= min_ ? max : min_) {
+ std::stringstream ss;
+ if (min < 0) {
+ ss << "The invocation lower bound must be >= 0, "
+ << "but is actually " << min << ".";
+ internal::Expect(false, __FILE__, __LINE__, ss.str());
+ } else if (max < 0) {
+ ss << "The invocation upper bound must be >= 0, "
+ << "but is actually " << max << ".";
+ internal::Expect(false, __FILE__, __LINE__, ss.str());
+ } else if (min > max) {
+ ss << "The invocation upper bound (" << max
+ << ") must be >= the invocation lower bound (" << min
+ << ").";
+ internal::Expect(false, __FILE__, __LINE__, ss.str());
+ }
+ }
+
+ // Conservative estimate on the lower/upper bound of the number of
+ // calls allowed.
int ConservativeLowerBound() const override { return min_; }
int ConservativeUpperBound() const override { return max_; }
-
+
bool IsSatisfiedByCallCount(int call_count) const override {
- return min_ <= call_count && call_count <= max_;
- }
-
+ return min_ <= call_count && call_count <= max_;
+ }
+
bool IsSaturatedByCallCount(int call_count) const override {
- return call_count >= max_;
- }
-
+ return call_count >= max_;
+ }
+
void DescribeTo(::std::ostream* os) const override;
-
- private:
- const int min_;
- const int max_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(BetweenCardinalityImpl);
-};
-
-// Formats "n times" in a human-friendly way.
+
+ private:
+ const int min_;
+ const int max_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(BetweenCardinalityImpl);
+};
+
+// Formats "n times" in a human-friendly way.
inline std::string FormatTimes(int n) {
- if (n == 1) {
- return "once";
- } else if (n == 2) {
- return "twice";
- } else {
- std::stringstream ss;
- ss << n << " times";
- return ss.str();
- }
-}
-
-// Describes the Between(m, n) cardinality in human-friendly text.
-void BetweenCardinalityImpl::DescribeTo(::std::ostream* os) const {
- if (min_ == 0) {
- if (max_ == 0) {
- *os << "never called";
- } else if (max_ == INT_MAX) {
- *os << "called any number of times";
- } else {
- *os << "called at most " << FormatTimes(max_);
- }
- } else if (min_ == max_) {
- *os << "called " << FormatTimes(min_);
- } else if (max_ == INT_MAX) {
- *os << "called at least " << FormatTimes(min_);
- } else {
- // 0 < min_ < max_ < INT_MAX
- *os << "called between " << min_ << " and " << max_ << " times";
- }
-}
-
-} // Unnamed namespace
-
-// Describes the given call count to an ostream.
-void Cardinality::DescribeActualCallCountTo(int actual_call_count,
- ::std::ostream* os) {
- if (actual_call_count > 0) {
- *os << "called " << FormatTimes(actual_call_count);
- } else {
- *os << "never called";
- }
-}
-
-// Creates a cardinality that allows at least n calls.
-GTEST_API_ Cardinality AtLeast(int n) { return Between(n, INT_MAX); }
-
-// Creates a cardinality that allows at most n calls.
-GTEST_API_ Cardinality AtMost(int n) { return Between(0, n); }
-
-// Creates a cardinality that allows any number of calls.
-GTEST_API_ Cardinality AnyNumber() { return AtLeast(0); }
-
-// Creates a cardinality that allows between min and max calls.
-GTEST_API_ Cardinality Between(int min, int max) {
- return Cardinality(new BetweenCardinalityImpl(min, max));
-}
-
-// Creates a cardinality that allows exactly n calls.
-GTEST_API_ Cardinality Exactly(int n) { return Between(n, n); }
-
-} // namespace testing
+ if (n == 1) {
+ return "once";
+ } else if (n == 2) {
+ return "twice";
+ } else {
+ std::stringstream ss;
+ ss << n << " times";
+ return ss.str();
+ }
+}
+
+// Describes the Between(m, n) cardinality in human-friendly text.
+void BetweenCardinalityImpl::DescribeTo(::std::ostream* os) const {
+ if (min_ == 0) {
+ if (max_ == 0) {
+ *os << "never called";
+ } else if (max_ == INT_MAX) {
+ *os << "called any number of times";
+ } else {
+ *os << "called at most " << FormatTimes(max_);
+ }
+ } else if (min_ == max_) {
+ *os << "called " << FormatTimes(min_);
+ } else if (max_ == INT_MAX) {
+ *os << "called at least " << FormatTimes(min_);
+ } else {
+ // 0 < min_ < max_ < INT_MAX
+ *os << "called between " << min_ << " and " << max_ << " times";
+ }
+}
+
+} // Unnamed namespace
+
+// Describes the given call count to an ostream.
+void Cardinality::DescribeActualCallCountTo(int actual_call_count,
+ ::std::ostream* os) {
+ if (actual_call_count > 0) {
+ *os << "called " << FormatTimes(actual_call_count);
+ } else {
+ *os << "never called";
+ }
+}
+
+// Creates a cardinality that allows at least n calls.
+GTEST_API_ Cardinality AtLeast(int n) { return Between(n, INT_MAX); }
+
+// Creates a cardinality that allows at most n calls.
+GTEST_API_ Cardinality AtMost(int n) { return Between(0, n); }
+
+// Creates a cardinality that allows any number of calls.
+GTEST_API_ Cardinality AnyNumber() { return AtLeast(0); }
+
+// Creates a cardinality that allows between min and max calls.
+GTEST_API_ Cardinality Between(int min, int max) {
+ return Cardinality(new BetweenCardinalityImpl(min, max));
+}
+
+// Creates a cardinality that allows exactly n calls.
+GTEST_API_ Cardinality Exactly(int n) { return Between(n, n); }
+
+} // namespace testing
diff --git a/contrib/restricted/googletest/googlemock/src/gmock-internal-utils.cc b/contrib/restricted/googletest/googlemock/src/gmock-internal-utils.cc
index 8167890a2e..e5b547981d 100644
--- a/contrib/restricted/googletest/googlemock/src/gmock-internal-utils.cc
+++ b/contrib/restricted/googletest/googlemock/src/gmock-internal-utils.cc
@@ -1,51 +1,51 @@
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Google Mock - a framework for writing C++ mock classes.
-//
-// This file defines some utilities useful for implementing Google
-// Mock. They are subject to change without notice, so please DO NOT
-// USE THEM IN USER CODE.
-
-#include "gmock/internal/gmock-internal-utils.h"
-
-#include <ctype.h>
-#include <ostream> // NOLINT
-#include <string>
-#include "gmock/gmock.h"
-#include "gmock/internal/gmock-port.h"
-#include "gtest/gtest.h"
-
-namespace testing {
-namespace internal {
-
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file defines some utilities useful for implementing Google
+// Mock. They are subject to change without notice, so please DO NOT
+// USE THEM IN USER CODE.
+
+#include "gmock/internal/gmock-internal-utils.h"
+
+#include <ctype.h>
+#include <ostream> // NOLINT
+#include <string>
+#include "gmock/gmock.h"
+#include "gmock/internal/gmock-port.h"
+#include "gtest/gtest.h"
+
+namespace testing {
+namespace internal {
+
// Joins a vector of strings as if they are fields of a tuple; returns
// the joined string.
GTEST_API_ std::string JoinAsTuple(const Strings& fields) {
@@ -65,125 +65,125 @@ GTEST_API_ std::string JoinAsTuple(const Strings& fields) {
}
}
-// Converts an identifier name to a space-separated list of lower-case
-// words. Each maximum substring of the form [A-Za-z][a-z]*|\d+ is
-// treated as one word. For example, both "FooBar123" and
-// "foo_bar_123" are converted to "foo bar 123".
+// Converts an identifier name to a space-separated list of lower-case
+// words. Each maximum substring of the form [A-Za-z][a-z]*|\d+ is
+// treated as one word. For example, both "FooBar123" and
+// "foo_bar_123" are converted to "foo bar 123".
GTEST_API_ std::string ConvertIdentifierNameToWords(const char* id_name) {
std::string result;
- char prev_char = '\0';
- for (const char* p = id_name; *p != '\0'; prev_char = *(p++)) {
- // We don't care about the current locale as the input is
- // guaranteed to be a valid C++ identifier name.
- const bool starts_new_word = IsUpper(*p) ||
- (!IsAlpha(prev_char) && IsLower(*p)) ||
- (!IsDigit(prev_char) && IsDigit(*p));
-
- if (IsAlNum(*p)) {
- if (starts_new_word && result != "")
- result += ' ';
- result += ToLower(*p);
- }
- }
- return result;
-}
-
-// This class reports Google Mock failures as Google Test failures. A
+ char prev_char = '\0';
+ for (const char* p = id_name; *p != '\0'; prev_char = *(p++)) {
+ // We don't care about the current locale as the input is
+ // guaranteed to be a valid C++ identifier name.
+ const bool starts_new_word = IsUpper(*p) ||
+ (!IsAlpha(prev_char) && IsLower(*p)) ||
+ (!IsDigit(prev_char) && IsDigit(*p));
+
+ if (IsAlNum(*p)) {
+ if (starts_new_word && result != "")
+ result += ' ';
+ result += ToLower(*p);
+ }
+ }
+ return result;
+}
+
+// This class reports Google Mock failures as Google Test failures. A
// user can define another class in a similar fashion if they intend to
-// use Google Mock with a testing framework other than Google Test.
-class GoogleTestFailureReporter : public FailureReporterInterface {
- public:
+// use Google Mock with a testing framework other than Google Test.
+class GoogleTestFailureReporter : public FailureReporterInterface {
+ public:
void ReportFailure(FailureType type, const char* file, int line,
const std::string& message) override {
- AssertHelper(type == kFatal ?
- TestPartResult::kFatalFailure :
- TestPartResult::kNonFatalFailure,
- file,
- line,
- message.c_str()) = Message();
- if (type == kFatal) {
- posix::Abort();
- }
- }
-};
-
-// Returns the global failure reporter. Will create a
-// GoogleTestFailureReporter and return it the first time called.
-GTEST_API_ FailureReporterInterface* GetFailureReporter() {
- // Points to the global failure reporter used by Google Mock. gcc
- // guarantees that the following use of failure_reporter is
- // thread-safe. We may need to add additional synchronization to
- // protect failure_reporter if we port Google Mock to other
- // compilers.
- static FailureReporterInterface* const failure_reporter =
- new GoogleTestFailureReporter();
- return failure_reporter;
-}
-
-// Protects global resources (stdout in particular) used by Log().
-static GTEST_DEFINE_STATIC_MUTEX_(g_log_mutex);
-
+ AssertHelper(type == kFatal ?
+ TestPartResult::kFatalFailure :
+ TestPartResult::kNonFatalFailure,
+ file,
+ line,
+ message.c_str()) = Message();
+ if (type == kFatal) {
+ posix::Abort();
+ }
+ }
+};
+
+// Returns the global failure reporter. Will create a
+// GoogleTestFailureReporter and return it the first time called.
+GTEST_API_ FailureReporterInterface* GetFailureReporter() {
+ // Points to the global failure reporter used by Google Mock. gcc
+ // guarantees that the following use of failure_reporter is
+ // thread-safe. We may need to add additional synchronization to
+ // protect failure_reporter if we port Google Mock to other
+ // compilers.
+ static FailureReporterInterface* const failure_reporter =
+ new GoogleTestFailureReporter();
+ return failure_reporter;
+}
+
+// Protects global resources (stdout in particular) used by Log().
+static GTEST_DEFINE_STATIC_MUTEX_(g_log_mutex);
+
// Returns true if and only if a log with the given severity is visible
// according to the --gmock_verbose flag.
-GTEST_API_ bool LogIsVisible(LogSeverity severity) {
- if (GMOCK_FLAG(verbose) == kInfoVerbosity) {
- // Always show the log if --gmock_verbose=info.
- return true;
- } else if (GMOCK_FLAG(verbose) == kErrorVerbosity) {
- // Always hide it if --gmock_verbose=error.
- return false;
- } else {
- // If --gmock_verbose is neither "info" nor "error", we treat it
- // as "warning" (its default value).
- return severity == kWarning;
- }
-}
-
+GTEST_API_ bool LogIsVisible(LogSeverity severity) {
+ if (GMOCK_FLAG(verbose) == kInfoVerbosity) {
+ // Always show the log if --gmock_verbose=info.
+ return true;
+ } else if (GMOCK_FLAG(verbose) == kErrorVerbosity) {
+ // Always hide it if --gmock_verbose=error.
+ return false;
+ } else {
+ // If --gmock_verbose is neither "info" nor "error", we treat it
+ // as "warning" (its default value).
+ return severity == kWarning;
+ }
+}
+
// Prints the given message to stdout if and only if 'severity' >= the level
-// specified by the --gmock_verbose flag. If stack_frames_to_skip >=
-// 0, also prints the stack trace excluding the top
-// stack_frames_to_skip frames. In opt mode, any positive
-// stack_frames_to_skip is treated as 0, since we don't know which
-// function calls will be inlined by the compiler and need to be
-// conservative.
+// specified by the --gmock_verbose flag. If stack_frames_to_skip >=
+// 0, also prints the stack trace excluding the top
+// stack_frames_to_skip frames. In opt mode, any positive
+// stack_frames_to_skip is treated as 0, since we don't know which
+// function calls will be inlined by the compiler and need to be
+// conservative.
GTEST_API_ void Log(LogSeverity severity, const std::string& message,
- int stack_frames_to_skip) {
- if (!LogIsVisible(severity))
- return;
-
- // Ensures that logs from different threads don't interleave.
- MutexLock l(&g_log_mutex);
-
- if (severity == kWarning) {
- // Prints a GMOCK WARNING marker to make the warnings easily searchable.
- std::cout << "\nGMOCK WARNING:";
- }
- // Pre-pends a new-line to message if it doesn't start with one.
- if (message.empty() || message[0] != '\n') {
- std::cout << "\n";
- }
- std::cout << message;
- if (stack_frames_to_skip >= 0) {
-#ifdef NDEBUG
- // In opt mode, we have to be conservative and skip no stack frame.
- const int actual_to_skip = 0;
-#else
- // In dbg mode, we can do what the caller tell us to do (plus one
- // for skipping this function's stack frame).
- const int actual_to_skip = stack_frames_to_skip + 1;
-#endif // NDEBUG
-
- // Appends a new-line to message if it doesn't end with one.
- if (!message.empty() && *message.rbegin() != '\n') {
- std::cout << "\n";
- }
- std::cout << "Stack trace:\n"
- << ::testing::internal::GetCurrentOsStackTraceExceptTop(
- ::testing::UnitTest::GetInstance(), actual_to_skip);
- }
- std::cout << ::std::flush;
-}
-
+ int stack_frames_to_skip) {
+ if (!LogIsVisible(severity))
+ return;
+
+ // Ensures that logs from different threads don't interleave.
+ MutexLock l(&g_log_mutex);
+
+ if (severity == kWarning) {
+ // Prints a GMOCK WARNING marker to make the warnings easily searchable.
+ std::cout << "\nGMOCK WARNING:";
+ }
+ // Pre-pends a new-line to message if it doesn't start with one.
+ if (message.empty() || message[0] != '\n') {
+ std::cout << "\n";
+ }
+ std::cout << message;
+ if (stack_frames_to_skip >= 0) {
+#ifdef NDEBUG
+ // In opt mode, we have to be conservative and skip no stack frame.
+ const int actual_to_skip = 0;
+#else
+ // In dbg mode, we can do what the caller tell us to do (plus one
+ // for skipping this function's stack frame).
+ const int actual_to_skip = stack_frames_to_skip + 1;
+#endif // NDEBUG
+
+ // Appends a new-line to message if it doesn't end with one.
+ if (!message.empty() && *message.rbegin() != '\n') {
+ std::cout << "\n";
+ }
+ std::cout << "Stack trace:\n"
+ << ::testing::internal::GetCurrentOsStackTraceExceptTop(
+ ::testing::UnitTest::GetInstance(), actual_to_skip);
+ }
+ std::cout << ::std::flush;
+}
+
GTEST_API_ WithoutMatchers GetWithoutMatchers() { return WithoutMatchers(); }
GTEST_API_ void IllegalDoDefault(const char* file, int line) {
@@ -196,5 +196,5 @@ GTEST_API_ void IllegalDoDefault(const char* file, int line) {
"the variable in various places.");
}
-} // namespace internal
-} // namespace testing
+} // namespace internal
+} // namespace testing
diff --git a/contrib/restricted/googletest/googlemock/src/gmock-matchers.cc b/contrib/restricted/googletest/googlemock/src/gmock-matchers.cc
index 6b00ca3d0e..dded437add 100644
--- a/contrib/restricted/googletest/googlemock/src/gmock-matchers.cc
+++ b/contrib/restricted/googletest/googlemock/src/gmock-matchers.cc
@@ -1,284 +1,284 @@
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-// Google Mock - a framework for writing C++ mock classes.
-//
-// This file implements Matcher<const string&>, Matcher<string>, and
-// utilities for defining matchers.
-
-#include "gmock/gmock-matchers.h"
-
-#include <string.h>
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file implements Matcher<const string&>, Matcher<string>, and
+// utilities for defining matchers.
+
+#include "gmock/gmock-matchers.h"
+
+#include <string.h>
#include <iostream>
-#include <sstream>
-#include <string>
-
-namespace testing {
-namespace internal {
-
-// Returns the description for a matcher defined using the MATCHER*()
-// macro where the user-supplied description string is "", if
-// 'negation' is false; otherwise returns the description of the
-// negation of the matcher. 'param_values' contains a list of strings
-// that are the print-out of the matcher's parameters.
+#include <sstream>
+#include <string>
+
+namespace testing {
+namespace internal {
+
+// Returns the description for a matcher defined using the MATCHER*()
+// macro where the user-supplied description string is "", if
+// 'negation' is false; otherwise returns the description of the
+// negation of the matcher. 'param_values' contains a list of strings
+// that are the print-out of the matcher's parameters.
GTEST_API_ std::string FormatMatcherDescription(bool negation,
const char* matcher_name,
const Strings& param_values) {
std::string result = ConvertIdentifierNameToWords(matcher_name);
if (param_values.size() >= 1) result += " " + JoinAsTuple(param_values);
- return negation ? "not (" + result + ")" : result;
-}
-
-// FindMaxBipartiteMatching and its helper class.
-//
-// Uses the well-known Ford-Fulkerson max flow method to find a maximum
-// bipartite matching. Flow is considered to be from left to right.
-// There is an implicit source node that is connected to all of the left
-// nodes, and an implicit sink node that is connected to all of the
-// right nodes. All edges have unit capacity.
-//
-// Neither the flow graph nor the residual flow graph are represented
-// explicitly. Instead, they are implied by the information in 'graph' and
-// a vector<int> called 'left_' whose elements are initialized to the
-// value kUnused. This represents the initial state of the algorithm,
-// where the flow graph is empty, and the residual flow graph has the
-// following edges:
-// - An edge from source to each left_ node
-// - An edge from each right_ node to sink
-// - An edge from each left_ node to each right_ node, if the
-// corresponding edge exists in 'graph'.
-//
-// When the TryAugment() method adds a flow, it sets left_[l] = r for some
-// nodes l and r. This induces the following changes:
-// - The edges (source, l), (l, r), and (r, sink) are added to the
-// flow graph.
-// - The same three edges are removed from the residual flow graph.
-// - The reverse edges (l, source), (r, l), and (sink, r) are added
-// to the residual flow graph, which is a directional graph
-// representing unused flow capacity.
-//
-// When the method augments a flow (moving left_[l] from some r1 to some
-// other r2), this can be thought of as "undoing" the above steps with
-// respect to r1 and "redoing" them with respect to r2.
-//
-// It bears repeating that the flow graph and residual flow graph are
-// never represented explicitly, but can be derived by looking at the
-// information in 'graph' and in left_.
-//
-// As an optimization, there is a second vector<int> called right_ which
-// does not provide any new information. Instead, it enables more
-// efficient queries about edges entering or leaving the right-side nodes
-// of the flow or residual flow graphs. The following invariants are
-// maintained:
-//
-// left[l] == kUnused or right[left[l]] == l
-// right[r] == kUnused or left[right[r]] == r
-//
-// . [ source ] .
-// . ||| .
-// . ||| .
-// . ||\--> left[0]=1 ---\ right[0]=-1 ----\ .
-// . || | | .
-// . |\---> left[1]=-1 \--> right[1]=0 ---\| .
-// . | || .
-// . \----> left[2]=2 ------> right[2]=2 --\|| .
-// . ||| .
-// . elements matchers vvv .
-// . [ sink ] .
-//
-// See Also:
-// [1] Cormen, et al (2001). "Section 26.2: The Ford-Fulkerson method".
-// "Introduction to Algorithms (Second ed.)", pp. 651-664.
-// [2] "Ford-Fulkerson algorithm", Wikipedia,
-// 'http://en.wikipedia.org/wiki/Ford%E2%80%93Fulkerson_algorithm'
-class MaxBipartiteMatchState {
- public:
- explicit MaxBipartiteMatchState(const MatchMatrix& graph)
- : graph_(&graph),
- left_(graph_->LhsSize(), kUnused),
+ return negation ? "not (" + result + ")" : result;
+}
+
+// FindMaxBipartiteMatching and its helper class.
+//
+// Uses the well-known Ford-Fulkerson max flow method to find a maximum
+// bipartite matching. Flow is considered to be from left to right.
+// There is an implicit source node that is connected to all of the left
+// nodes, and an implicit sink node that is connected to all of the
+// right nodes. All edges have unit capacity.
+//
+// Neither the flow graph nor the residual flow graph are represented
+// explicitly. Instead, they are implied by the information in 'graph' and
+// a vector<int> called 'left_' whose elements are initialized to the
+// value kUnused. This represents the initial state of the algorithm,
+// where the flow graph is empty, and the residual flow graph has the
+// following edges:
+// - An edge from source to each left_ node
+// - An edge from each right_ node to sink
+// - An edge from each left_ node to each right_ node, if the
+// corresponding edge exists in 'graph'.
+//
+// When the TryAugment() method adds a flow, it sets left_[l] = r for some
+// nodes l and r. This induces the following changes:
+// - The edges (source, l), (l, r), and (r, sink) are added to the
+// flow graph.
+// - The same three edges are removed from the residual flow graph.
+// - The reverse edges (l, source), (r, l), and (sink, r) are added
+// to the residual flow graph, which is a directional graph
+// representing unused flow capacity.
+//
+// When the method augments a flow (moving left_[l] from some r1 to some
+// other r2), this can be thought of as "undoing" the above steps with
+// respect to r1 and "redoing" them with respect to r2.
+//
+// It bears repeating that the flow graph and residual flow graph are
+// never represented explicitly, but can be derived by looking at the
+// information in 'graph' and in left_.
+//
+// As an optimization, there is a second vector<int> called right_ which
+// does not provide any new information. Instead, it enables more
+// efficient queries about edges entering or leaving the right-side nodes
+// of the flow or residual flow graphs. The following invariants are
+// maintained:
+//
+// left[l] == kUnused or right[left[l]] == l
+// right[r] == kUnused or left[right[r]] == r
+//
+// . [ source ] .
+// . ||| .
+// . ||| .
+// . ||\--> left[0]=1 ---\ right[0]=-1 ----\ .
+// . || | | .
+// . |\---> left[1]=-1 \--> right[1]=0 ---\| .
+// . | || .
+// . \----> left[2]=2 ------> right[2]=2 --\|| .
+// . ||| .
+// . elements matchers vvv .
+// . [ sink ] .
+//
+// See Also:
+// [1] Cormen, et al (2001). "Section 26.2: The Ford-Fulkerson method".
+// "Introduction to Algorithms (Second ed.)", pp. 651-664.
+// [2] "Ford-Fulkerson algorithm", Wikipedia,
+// 'http://en.wikipedia.org/wiki/Ford%E2%80%93Fulkerson_algorithm'
+class MaxBipartiteMatchState {
+ public:
+ explicit MaxBipartiteMatchState(const MatchMatrix& graph)
+ : graph_(&graph),
+ left_(graph_->LhsSize(), kUnused),
right_(graph_->RhsSize(), kUnused) {}
-
- // Returns the edges of a maximal match, each in the form {left, right}.
- ElementMatcherPairs Compute() {
- // 'seen' is used for path finding { 0: unseen, 1: seen }.
- ::std::vector<char> seen;
- // Searches the residual flow graph for a path from each left node to
- // the sink in the residual flow graph, and if one is found, add flow
- // to the graph. It's okay to search through the left nodes once. The
- // edge from the implicit source node to each previously-visited left
- // node will have flow if that left node has any path to the sink
- // whatsoever. Subsequent augmentations can only add flow to the
- // network, and cannot take away that previous flow unit from the source.
- // Since the source-to-left edge can only carry one flow unit (or,
- // each element can be matched to only one matcher), there is no need
- // to visit the left nodes more than once looking for augmented paths.
- // The flow is known to be possible or impossible by looking at the
- // node once.
- for (size_t ilhs = 0; ilhs < graph_->LhsSize(); ++ilhs) {
- // Reset the path-marking vector and try to find a path from
- // source to sink starting at the left_[ilhs] node.
- GTEST_CHECK_(left_[ilhs] == kUnused)
- << "ilhs: " << ilhs << ", left_[ilhs]: " << left_[ilhs];
- // 'seen' initialized to 'graph_->RhsSize()' copies of 0.
- seen.assign(graph_->RhsSize(), 0);
- TryAugment(ilhs, &seen);
- }
- ElementMatcherPairs result;
- for (size_t ilhs = 0; ilhs < left_.size(); ++ilhs) {
- size_t irhs = left_[ilhs];
- if (irhs == kUnused) continue;
- result.push_back(ElementMatcherPair(ilhs, irhs));
- }
- return result;
- }
-
- private:
- static const size_t kUnused = static_cast<size_t>(-1);
-
- // Perform a depth-first search from left node ilhs to the sink. If a
- // path is found, flow is added to the network by linking the left and
- // right vector elements corresponding each segment of the path.
- // Returns true if a path to sink was found, which means that a unit of
- // flow was added to the network. The 'seen' vector elements correspond
- // to right nodes and are marked to eliminate cycles from the search.
- //
- // Left nodes will only be explored at most once because they
- // are accessible from at most one right node in the residual flow
- // graph.
- //
- // Note that left_[ilhs] is the only element of left_ that TryAugment will
- // potentially transition from kUnused to another value. Any other
- // left_ element holding kUnused before TryAugment will be holding it
- // when TryAugment returns.
- //
- bool TryAugment(size_t ilhs, ::std::vector<char>* seen) {
- for (size_t irhs = 0; irhs < graph_->RhsSize(); ++irhs) {
+
+ // Returns the edges of a maximal match, each in the form {left, right}.
+ ElementMatcherPairs Compute() {
+ // 'seen' is used for path finding { 0: unseen, 1: seen }.
+ ::std::vector<char> seen;
+ // Searches the residual flow graph for a path from each left node to
+ // the sink in the residual flow graph, and if one is found, add flow
+ // to the graph. It's okay to search through the left nodes once. The
+ // edge from the implicit source node to each previously-visited left
+ // node will have flow if that left node has any path to the sink
+ // whatsoever. Subsequent augmentations can only add flow to the
+ // network, and cannot take away that previous flow unit from the source.
+ // Since the source-to-left edge can only carry one flow unit (or,
+ // each element can be matched to only one matcher), there is no need
+ // to visit the left nodes more than once looking for augmented paths.
+ // The flow is known to be possible or impossible by looking at the
+ // node once.
+ for (size_t ilhs = 0; ilhs < graph_->LhsSize(); ++ilhs) {
+ // Reset the path-marking vector and try to find a path from
+ // source to sink starting at the left_[ilhs] node.
+ GTEST_CHECK_(left_[ilhs] == kUnused)
+ << "ilhs: " << ilhs << ", left_[ilhs]: " << left_[ilhs];
+ // 'seen' initialized to 'graph_->RhsSize()' copies of 0.
+ seen.assign(graph_->RhsSize(), 0);
+ TryAugment(ilhs, &seen);
+ }
+ ElementMatcherPairs result;
+ for (size_t ilhs = 0; ilhs < left_.size(); ++ilhs) {
+ size_t irhs = left_[ilhs];
+ if (irhs == kUnused) continue;
+ result.push_back(ElementMatcherPair(ilhs, irhs));
+ }
+ return result;
+ }
+
+ private:
+ static const size_t kUnused = static_cast<size_t>(-1);
+
+ // Perform a depth-first search from left node ilhs to the sink. If a
+ // path is found, flow is added to the network by linking the left and
+ // right vector elements corresponding each segment of the path.
+ // Returns true if a path to sink was found, which means that a unit of
+ // flow was added to the network. The 'seen' vector elements correspond
+ // to right nodes and are marked to eliminate cycles from the search.
+ //
+ // Left nodes will only be explored at most once because they
+ // are accessible from at most one right node in the residual flow
+ // graph.
+ //
+ // Note that left_[ilhs] is the only element of left_ that TryAugment will
+ // potentially transition from kUnused to another value. Any other
+ // left_ element holding kUnused before TryAugment will be holding it
+ // when TryAugment returns.
+ //
+ bool TryAugment(size_t ilhs, ::std::vector<char>* seen) {
+ for (size_t irhs = 0; irhs < graph_->RhsSize(); ++irhs) {
if ((*seen)[irhs]) continue;
if (!graph_->HasEdge(ilhs, irhs)) continue;
- // There's an available edge from ilhs to irhs.
- (*seen)[irhs] = 1;
- // Next a search is performed to determine whether
- // this edge is a dead end or leads to the sink.
- //
- // right_[irhs] == kUnused means that there is residual flow from
- // right node irhs to the sink, so we can use that to finish this
- // flow path and return success.
- //
- // Otherwise there is residual flow to some ilhs. We push flow
- // along that path and call ourselves recursively to see if this
- // ultimately leads to sink.
- if (right_[irhs] == kUnused || TryAugment(right_[irhs], seen)) {
- // Add flow from left_[ilhs] to right_[irhs].
- left_[ilhs] = irhs;
- right_[irhs] = ilhs;
- return true;
- }
- }
- return false;
- }
-
- const MatchMatrix* graph_; // not owned
- // Each element of the left_ vector represents a left hand side node
- // (i.e. an element) and each element of right_ is a right hand side
- // node (i.e. a matcher). The values in the left_ vector indicate
+ // There's an available edge from ilhs to irhs.
+ (*seen)[irhs] = 1;
+ // Next a search is performed to determine whether
+ // this edge is a dead end or leads to the sink.
+ //
+ // right_[irhs] == kUnused means that there is residual flow from
+ // right node irhs to the sink, so we can use that to finish this
+ // flow path and return success.
+ //
+ // Otherwise there is residual flow to some ilhs. We push flow
+ // along that path and call ourselves recursively to see if this
+ // ultimately leads to sink.
+ if (right_[irhs] == kUnused || TryAugment(right_[irhs], seen)) {
+ // Add flow from left_[ilhs] to right_[irhs].
+ left_[ilhs] = irhs;
+ right_[irhs] = ilhs;
+ return true;
+ }
+ }
+ return false;
+ }
+
+ const MatchMatrix* graph_; // not owned
+ // Each element of the left_ vector represents a left hand side node
+ // (i.e. an element) and each element of right_ is a right hand side
+ // node (i.e. a matcher). The values in the left_ vector indicate
// outflow from that node to a node on the right_ side. The values
- // in the right_ indicate inflow, and specify which left_ node is
- // feeding that right_ node, if any. For example, left_[3] == 1 means
- // there's a flow from element #3 to matcher #1. Such a flow would also
- // be redundantly represented in the right_ vector as right_[1] == 3.
- // Elements of left_ and right_ are either kUnused or mutually
- // referent. Mutually referent means that left_[right_[i]] = i and
- // right_[left_[i]] = i.
- ::std::vector<size_t> left_;
- ::std::vector<size_t> right_;
-};
-
-const size_t MaxBipartiteMatchState::kUnused;
-
+ // in the right_ indicate inflow, and specify which left_ node is
+ // feeding that right_ node, if any. For example, left_[3] == 1 means
+ // there's a flow from element #3 to matcher #1. Such a flow would also
+ // be redundantly represented in the right_ vector as right_[1] == 3.
+ // Elements of left_ and right_ are either kUnused or mutually
+ // referent. Mutually referent means that left_[right_[i]] = i and
+ // right_[left_[i]] = i.
+ ::std::vector<size_t> left_;
+ ::std::vector<size_t> right_;
+};
+
+const size_t MaxBipartiteMatchState::kUnused;
+
GTEST_API_ ElementMatcherPairs FindMaxBipartiteMatching(const MatchMatrix& g) {
- return MaxBipartiteMatchState(g).Compute();
-}
-
-static void LogElementMatcherPairVec(const ElementMatcherPairs& pairs,
- ::std::ostream* stream) {
- typedef ElementMatcherPairs::const_iterator Iter;
- ::std::ostream& os = *stream;
- os << "{";
+ return MaxBipartiteMatchState(g).Compute();
+}
+
+static void LogElementMatcherPairVec(const ElementMatcherPairs& pairs,
+ ::std::ostream* stream) {
+ typedef ElementMatcherPairs::const_iterator Iter;
+ ::std::ostream& os = *stream;
+ os << "{";
const char* sep = "";
- for (Iter it = pairs.begin(); it != pairs.end(); ++it) {
- os << sep << "\n ("
- << "element #" << it->first << ", "
- << "matcher #" << it->second << ")";
- sep = ",";
- }
- os << "\n}";
-}
-
-bool MatchMatrix::NextGraph() {
- for (size_t ilhs = 0; ilhs < LhsSize(); ++ilhs) {
- for (size_t irhs = 0; irhs < RhsSize(); ++irhs) {
- char& b = matched_[SpaceIndex(ilhs, irhs)];
- if (!b) {
- b = 1;
- return true;
- }
- b = 0;
- }
- }
- return false;
-}
-
-void MatchMatrix::Randomize() {
- for (size_t ilhs = 0; ilhs < LhsSize(); ++ilhs) {
- for (size_t irhs = 0; irhs < RhsSize(); ++irhs) {
- char& b = matched_[SpaceIndex(ilhs, irhs)];
- b = static_cast<char>(rand() & 1); // NOLINT
- }
- }
-}
-
+ for (Iter it = pairs.begin(); it != pairs.end(); ++it) {
+ os << sep << "\n ("
+ << "element #" << it->first << ", "
+ << "matcher #" << it->second << ")";
+ sep = ",";
+ }
+ os << "\n}";
+}
+
+bool MatchMatrix::NextGraph() {
+ for (size_t ilhs = 0; ilhs < LhsSize(); ++ilhs) {
+ for (size_t irhs = 0; irhs < RhsSize(); ++irhs) {
+ char& b = matched_[SpaceIndex(ilhs, irhs)];
+ if (!b) {
+ b = 1;
+ return true;
+ }
+ b = 0;
+ }
+ }
+ return false;
+}
+
+void MatchMatrix::Randomize() {
+ for (size_t ilhs = 0; ilhs < LhsSize(); ++ilhs) {
+ for (size_t irhs = 0; irhs < RhsSize(); ++irhs) {
+ char& b = matched_[SpaceIndex(ilhs, irhs)];
+ b = static_cast<char>(rand() & 1); // NOLINT
+ }
+ }
+}
+
std::string MatchMatrix::DebugString() const {
- ::std::stringstream ss;
+ ::std::stringstream ss;
const char* sep = "";
- for (size_t i = 0; i < LhsSize(); ++i) {
- ss << sep;
- for (size_t j = 0; j < RhsSize(); ++j) {
- ss << HasEdge(i, j);
- }
- sep = ";";
- }
- return ss.str();
-}
-
-void UnorderedElementsAreMatcherImplBase::DescribeToImpl(
- ::std::ostream* os) const {
+ for (size_t i = 0; i < LhsSize(); ++i) {
+ ss << sep;
+ for (size_t j = 0; j < RhsSize(); ++j) {
+ ss << HasEdge(i, j);
+ }
+ sep = ";";
+ }
+ return ss.str();
+}
+
+void UnorderedElementsAreMatcherImplBase::DescribeToImpl(
+ ::std::ostream* os) const {
switch (match_flags()) {
case UnorderedMatcherRequire::ExactMatch:
if (matcher_describers_.empty()) {
@@ -299,27 +299,27 @@ void UnorderedElementsAreMatcherImplBase::DescribeToImpl(
case UnorderedMatcherRequire::Subset:
*os << "an injection from elements to requirements exists such that:\n";
break;
- }
+ }
- const char* sep = "";
- for (size_t i = 0; i != matcher_describers_.size(); ++i) {
+ const char* sep = "";
+ for (size_t i = 0; i != matcher_describers_.size(); ++i) {
*os << sep;
if (match_flags() == UnorderedMatcherRequire::ExactMatch) {
*os << " - element #" << i << " ";
} else {
*os << " - an element ";
}
- matcher_describers_[i]->DescribeTo(os);
+ matcher_describers_[i]->DescribeTo(os);
if (match_flags() == UnorderedMatcherRequire::ExactMatch) {
sep = ", and\n";
} else {
sep = "\n";
}
- }
-}
-
-void UnorderedElementsAreMatcherImplBase::DescribeNegationToImpl(
- ::std::ostream* os) const {
+ }
+}
+
+void UnorderedElementsAreMatcherImplBase::DescribeNegationToImpl(
+ ::std::ostream* os) const {
switch (match_flags()) {
case UnorderedMatcherRequire::ExactMatch:
if (matcher_describers_.empty()) {
@@ -341,79 +341,79 @@ void UnorderedElementsAreMatcherImplBase::DescribeNegationToImpl(
case UnorderedMatcherRequire::Subset:
*os << "no injection from elements to requirements exists such that:\n";
break;
- }
- const char* sep = "";
- for (size_t i = 0; i != matcher_describers_.size(); ++i) {
+ }
+ const char* sep = "";
+ for (size_t i = 0; i != matcher_describers_.size(); ++i) {
*os << sep;
if (match_flags() == UnorderedMatcherRequire::ExactMatch) {
*os << " - element #" << i << " ";
} else {
*os << " - an element ";
}
- matcher_describers_[i]->DescribeTo(os);
+ matcher_describers_[i]->DescribeTo(os);
if (match_flags() == UnorderedMatcherRequire::ExactMatch) {
sep = ", and\n";
} else {
sep = "\n";
}
- }
-}
-
-// Checks that all matchers match at least one element, and that all
-// elements match at least one matcher. This enables faster matching
-// and better error reporting.
-// Returns false, writing an explanation to 'listener', if and only
-// if the success criteria are not met.
+ }
+}
+
+// Checks that all matchers match at least one element, and that all
+// elements match at least one matcher. This enables faster matching
+// and better error reporting.
+// Returns false, writing an explanation to 'listener', if and only
+// if the success criteria are not met.
bool UnorderedElementsAreMatcherImplBase::VerifyMatchMatrix(
const ::std::vector<std::string>& element_printouts,
const MatchMatrix& matrix, MatchResultListener* listener) const {
- bool result = true;
- ::std::vector<char> element_matched(matrix.LhsSize(), 0);
- ::std::vector<char> matcher_matched(matrix.RhsSize(), 0);
-
- for (size_t ilhs = 0; ilhs < matrix.LhsSize(); ilhs++) {
- for (size_t irhs = 0; irhs < matrix.RhsSize(); irhs++) {
- char matched = matrix.HasEdge(ilhs, irhs);
- element_matched[ilhs] |= matched;
- matcher_matched[irhs] |= matched;
- }
- }
-
+ bool result = true;
+ ::std::vector<char> element_matched(matrix.LhsSize(), 0);
+ ::std::vector<char> matcher_matched(matrix.RhsSize(), 0);
+
+ for (size_t ilhs = 0; ilhs < matrix.LhsSize(); ilhs++) {
+ for (size_t irhs = 0; irhs < matrix.RhsSize(); irhs++) {
+ char matched = matrix.HasEdge(ilhs, irhs);
+ element_matched[ilhs] |= matched;
+ matcher_matched[irhs] |= matched;
+ }
+ }
+
if (match_flags() & UnorderedMatcherRequire::Superset) {
- const char* sep =
- "where the following matchers don't match any elements:\n";
- for (size_t mi = 0; mi < matcher_matched.size(); ++mi) {
+ const char* sep =
+ "where the following matchers don't match any elements:\n";
+ for (size_t mi = 0; mi < matcher_matched.size(); ++mi) {
if (matcher_matched[mi]) continue;
- result = false;
- if (listener->IsInterested()) {
- *listener << sep << "matcher #" << mi << ": ";
- matcher_describers_[mi]->DescribeTo(listener->stream());
- sep = ",\n";
- }
- }
- }
-
+ result = false;
+ if (listener->IsInterested()) {
+ *listener << sep << "matcher #" << mi << ": ";
+ matcher_describers_[mi]->DescribeTo(listener->stream());
+ sep = ",\n";
+ }
+ }
+ }
+
if (match_flags() & UnorderedMatcherRequire::Subset) {
- const char* sep =
- "where the following elements don't match any matchers:\n";
- const char* outer_sep = "";
- if (!result) {
- outer_sep = "\nand ";
- }
- for (size_t ei = 0; ei < element_matched.size(); ++ei) {
+ const char* sep =
+ "where the following elements don't match any matchers:\n";
+ const char* outer_sep = "";
+ if (!result) {
+ outer_sep = "\nand ";
+ }
+ for (size_t ei = 0; ei < element_matched.size(); ++ei) {
if (element_matched[ei]) continue;
- result = false;
- if (listener->IsInterested()) {
- *listener << outer_sep << sep << "element #" << ei << ": "
- << element_printouts[ei];
- sep = ",\n";
- outer_sep = "";
- }
- }
- }
- return result;
-}
-
+ result = false;
+ if (listener->IsInterested()) {
+ *listener << outer_sep << sep << "element #" << ei << ": "
+ << element_printouts[ei];
+ sep = ",\n";
+ outer_sep = "";
+ }
+ }
+ }
+ return result;
+}
+
bool UnorderedElementsAreMatcherImplBase::FindPairing(
const MatchMatrix& matrix, MatchResultListener* listener) const {
ElementMatcherPairs matches = FindMaxBipartiteMatching(matrix);
@@ -455,5 +455,5 @@ bool UnorderedElementsAreMatcherImplBase::FindPairing(
return true;
}
-} // namespace internal
-} // namespace testing
+} // namespace internal
+} // namespace testing
diff --git a/contrib/restricted/googletest/googlemock/src/gmock-spec-builders.cc b/contrib/restricted/googletest/googlemock/src/gmock-spec-builders.cc
index 3e2025239b..c7266a3704 100644
--- a/contrib/restricted/googletest/googlemock/src/gmock-spec-builders.cc
+++ b/contrib/restricted/googletest/googlemock/src/gmock-spec-builders.cc
@@ -1,57 +1,57 @@
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Google Mock - a framework for writing C++ mock classes.
-//
-// This file implements the spec builder syntax (ON_CALL and
-// EXPECT_CALL).
-
-#include "gmock/gmock-spec-builders.h"
-
-#include <stdlib.h>
-
-#include <iostream> // NOLINT
-#include <map>
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file implements the spec builder syntax (ON_CALL and
+// EXPECT_CALL).
+
+#include "gmock/gmock-spec-builders.h"
+
+#include <stdlib.h>
+
+#include <iostream> // NOLINT
+#include <map>
#include <memory>
-#include <set>
-#include <string>
+#include <set>
+#include <string>
#include <vector>
-#include "gmock/gmock.h"
-#include "gtest/gtest.h"
+#include "gmock/gmock.h"
+#include "gtest/gtest.h"
#include "gtest/internal/gtest-port.h"
-
-#if GTEST_OS_CYGWIN || GTEST_OS_LINUX || GTEST_OS_MAC
-# include <unistd.h> // NOLINT
-#endif
-
+
+#if GTEST_OS_CYGWIN || GTEST_OS_LINUX || GTEST_OS_MAC
+# include <unistd.h> // NOLINT
+#endif
+
// Silence C4800 (C4800: 'int *const ': forcing value
// to bool 'true' or 'false') for MSVC 15
#ifdef _MSC_VER
@@ -61,58 +61,58 @@
#endif
#endif
-namespace testing {
-namespace internal {
-
-// Protects the mock object registry (in class Mock), all function
-// mockers, and all expectations.
-GTEST_API_ GTEST_DEFINE_STATIC_MUTEX_(g_gmock_mutex);
-
-// Logs a message including file and line number information.
-GTEST_API_ void LogWithLocation(testing::internal::LogSeverity severity,
- const char* file, int line,
+namespace testing {
+namespace internal {
+
+// Protects the mock object registry (in class Mock), all function
+// mockers, and all expectations.
+GTEST_API_ GTEST_DEFINE_STATIC_MUTEX_(g_gmock_mutex);
+
+// Logs a message including file and line number information.
+GTEST_API_ void LogWithLocation(testing::internal::LogSeverity severity,
+ const char* file, int line,
const std::string& message) {
- ::std::ostringstream s;
+ ::std::ostringstream s;
s << internal::FormatFileLocation(file, line) << " " << message
<< ::std::endl;
- Log(severity, s.str(), 0);
-}
-
-// Constructs an ExpectationBase object.
+ Log(severity, s.str(), 0);
+}
+
+// Constructs an ExpectationBase object.
ExpectationBase::ExpectationBase(const char* a_file, int a_line,
const std::string& a_source_text)
- : file_(a_file),
- line_(a_line),
- source_text_(a_source_text),
- cardinality_specified_(false),
- cardinality_(Exactly(1)),
- call_count_(0),
- retired_(false),
- extra_matcher_specified_(false),
- repeated_action_specified_(false),
- retires_on_saturation_(false),
- last_clause_(kNone),
- action_count_checked_(false) {}
-
-// Destructs an ExpectationBase object.
-ExpectationBase::~ExpectationBase() {}
-
-// Explicitly specifies the cardinality of this expectation. Used by
-// the subclasses to implement the .Times() clause.
-void ExpectationBase::SpecifyCardinality(const Cardinality& a_cardinality) {
- cardinality_specified_ = true;
- cardinality_ = a_cardinality;
-}
-
-// Retires all pre-requisites of this expectation.
-void ExpectationBase::RetireAllPreRequisites()
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
- if (is_retired()) {
- // We can take this short-cut as we never retire an expectation
- // until we have retired all its pre-requisites.
- return;
- }
-
+ : file_(a_file),
+ line_(a_line),
+ source_text_(a_source_text),
+ cardinality_specified_(false),
+ cardinality_(Exactly(1)),
+ call_count_(0),
+ retired_(false),
+ extra_matcher_specified_(false),
+ repeated_action_specified_(false),
+ retires_on_saturation_(false),
+ last_clause_(kNone),
+ action_count_checked_(false) {}
+
+// Destructs an ExpectationBase object.
+ExpectationBase::~ExpectationBase() {}
+
+// Explicitly specifies the cardinality of this expectation. Used by
+// the subclasses to implement the .Times() clause.
+void ExpectationBase::SpecifyCardinality(const Cardinality& a_cardinality) {
+ cardinality_specified_ = true;
+ cardinality_ = a_cardinality;
+}
+
+// Retires all pre-requisites of this expectation.
+void ExpectationBase::RetireAllPreRequisites()
+ GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+ if (is_retired()) {
+ // We can take this short-cut as we never retire an expectation
+ // until we have retired all its pre-requisites.
+ return;
+ }
+
::std::vector<ExpectationBase*> expectations(1, this);
while (!expectations.empty()) {
ExpectationBase* exp = expectations.back();
@@ -126,15 +126,15 @@ void ExpectationBase::RetireAllPreRequisites()
next->Retire();
expectations.push_back(next);
}
- }
- }
-}
-
+ }
+ }
+}
+
// Returns true if and only if all pre-requisites of this expectation
// have been satisfied.
-bool ExpectationBase::AllPrerequisitesAreSatisfied() const
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
- g_gmock_mutex.AssertHeld();
+bool ExpectationBase::AllPrerequisitesAreSatisfied() const
+ GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+ g_gmock_mutex.AssertHeld();
::std::vector<const ExpectationBase*> expectations(1, this);
while (!expectations.empty()) {
const ExpectationBase* exp = expectations.back();
@@ -147,14 +147,14 @@ bool ExpectationBase::AllPrerequisitesAreSatisfied() const
if (!next->IsSatisfied()) return false;
expectations.push_back(next);
}
- }
- return true;
-}
-
-// Adds unsatisfied pre-requisites of this expectation to 'result'.
-void ExpectationBase::FindUnsatisfiedPrerequisites(ExpectationSet* result) const
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
- g_gmock_mutex.AssertHeld();
+ }
+ return true;
+}
+
+// Adds unsatisfied pre-requisites of this expectation to 'result'.
+void ExpectationBase::FindUnsatisfiedPrerequisites(ExpectationSet* result) const
+ GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+ g_gmock_mutex.AssertHeld();
::std::vector<const ExpectationBase*> expectations(1, this);
while (!expectations.empty()) {
const ExpectationBase* exp = expectations.back();
@@ -176,121 +176,121 @@ void ExpectationBase::FindUnsatisfiedPrerequisites(ExpectationSet* result) const
// in whether its pre-requisites are satisfied. Therefore we
// don't iterate into it here.
*result += *it;
- }
- }
- }
-}
-
-// Describes how many times a function call matching this
-// expectation has occurred.
-void ExpectationBase::DescribeCallCountTo(::std::ostream* os) const
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
- g_gmock_mutex.AssertHeld();
-
- // Describes how many times the function is expected to be called.
- *os << " Expected: to be ";
- cardinality().DescribeTo(os);
- *os << "\n Actual: ";
- Cardinality::DescribeActualCallCountTo(call_count(), os);
-
- // Describes the state of the expectation (e.g. is it satisfied?
- // is it active?).
- *os << " - " << (IsOverSaturated() ? "over-saturated" :
- IsSaturated() ? "saturated" :
- IsSatisfied() ? "satisfied" : "unsatisfied")
- << " and "
- << (is_retired() ? "retired" : "active");
-}
-
-// Checks the action count (i.e. the number of WillOnce() and
-// WillRepeatedly() clauses) against the cardinality if this hasn't
-// been done before. Prints a warning if there are too many or too
-// few actions.
-void ExpectationBase::CheckActionCountIfNotDone() const
- GTEST_LOCK_EXCLUDED_(mutex_) {
- bool should_check = false;
- {
- MutexLock l(&mutex_);
- if (!action_count_checked_) {
- action_count_checked_ = true;
- should_check = true;
- }
- }
-
- if (should_check) {
- if (!cardinality_specified_) {
- // The cardinality was inferred - no need to check the action
- // count against it.
- return;
- }
-
- // The cardinality was explicitly specified.
- const int action_count = static_cast<int>(untyped_actions_.size());
- const int upper_bound = cardinality().ConservativeUpperBound();
- const int lower_bound = cardinality().ConservativeLowerBound();
- bool too_many; // True if there are too many actions, or false
- // if there are too few.
- if (action_count > upper_bound ||
- (action_count == upper_bound && repeated_action_specified_)) {
- too_many = true;
- } else if (0 < action_count && action_count < lower_bound &&
- !repeated_action_specified_) {
- too_many = false;
- } else {
- return;
- }
-
- ::std::stringstream ss;
- DescribeLocationTo(&ss);
- ss << "Too " << (too_many ? "many" : "few")
- << " actions specified in " << source_text() << "...\n"
- << "Expected to be ";
- cardinality().DescribeTo(&ss);
- ss << ", but has " << (too_many ? "" : "only ")
- << action_count << " WillOnce()"
- << (action_count == 1 ? "" : "s");
- if (repeated_action_specified_) {
- ss << " and a WillRepeatedly()";
- }
- ss << ".";
- Log(kWarning, ss.str(), -1); // -1 means "don't print stack trace".
- }
-}
-
-// Implements the .Times() clause.
-void ExpectationBase::UntypedTimes(const Cardinality& a_cardinality) {
- if (last_clause_ == kTimes) {
- ExpectSpecProperty(false,
- ".Times() cannot appear "
- "more than once in an EXPECT_CALL().");
- } else {
- ExpectSpecProperty(last_clause_ < kTimes,
- ".Times() cannot appear after "
- ".InSequence(), .WillOnce(), .WillRepeatedly(), "
- "or .RetiresOnSaturation().");
- }
- last_clause_ = kTimes;
-
- SpecifyCardinality(a_cardinality);
-}
-
-// Points to the implicit sequence introduced by a living InSequence
-// object (if any) in the current thread or NULL.
-GTEST_API_ ThreadLocal<Sequence*> g_gmock_implicit_sequence;
-
-// Reports an uninteresting call (whose description is in msg) in the
-// manner specified by 'reaction'.
+ }
+ }
+ }
+}
+
+// Describes how many times a function call matching this
+// expectation has occurred.
+void ExpectationBase::DescribeCallCountTo(::std::ostream* os) const
+ GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+ g_gmock_mutex.AssertHeld();
+
+ // Describes how many times the function is expected to be called.
+ *os << " Expected: to be ";
+ cardinality().DescribeTo(os);
+ *os << "\n Actual: ";
+ Cardinality::DescribeActualCallCountTo(call_count(), os);
+
+ // Describes the state of the expectation (e.g. is it satisfied?
+ // is it active?).
+ *os << " - " << (IsOverSaturated() ? "over-saturated" :
+ IsSaturated() ? "saturated" :
+ IsSatisfied() ? "satisfied" : "unsatisfied")
+ << " and "
+ << (is_retired() ? "retired" : "active");
+}
+
+// Checks the action count (i.e. the number of WillOnce() and
+// WillRepeatedly() clauses) against the cardinality if this hasn't
+// been done before. Prints a warning if there are too many or too
+// few actions.
+void ExpectationBase::CheckActionCountIfNotDone() const
+ GTEST_LOCK_EXCLUDED_(mutex_) {
+ bool should_check = false;
+ {
+ MutexLock l(&mutex_);
+ if (!action_count_checked_) {
+ action_count_checked_ = true;
+ should_check = true;
+ }
+ }
+
+ if (should_check) {
+ if (!cardinality_specified_) {
+ // The cardinality was inferred - no need to check the action
+ // count against it.
+ return;
+ }
+
+ // The cardinality was explicitly specified.
+ const int action_count = static_cast<int>(untyped_actions_.size());
+ const int upper_bound = cardinality().ConservativeUpperBound();
+ const int lower_bound = cardinality().ConservativeLowerBound();
+ bool too_many; // True if there are too many actions, or false
+ // if there are too few.
+ if (action_count > upper_bound ||
+ (action_count == upper_bound && repeated_action_specified_)) {
+ too_many = true;
+ } else if (0 < action_count && action_count < lower_bound &&
+ !repeated_action_specified_) {
+ too_many = false;
+ } else {
+ return;
+ }
+
+ ::std::stringstream ss;
+ DescribeLocationTo(&ss);
+ ss << "Too " << (too_many ? "many" : "few")
+ << " actions specified in " << source_text() << "...\n"
+ << "Expected to be ";
+ cardinality().DescribeTo(&ss);
+ ss << ", but has " << (too_many ? "" : "only ")
+ << action_count << " WillOnce()"
+ << (action_count == 1 ? "" : "s");
+ if (repeated_action_specified_) {
+ ss << " and a WillRepeatedly()";
+ }
+ ss << ".";
+ Log(kWarning, ss.str(), -1); // -1 means "don't print stack trace".
+ }
+}
+
+// Implements the .Times() clause.
+void ExpectationBase::UntypedTimes(const Cardinality& a_cardinality) {
+ if (last_clause_ == kTimes) {
+ ExpectSpecProperty(false,
+ ".Times() cannot appear "
+ "more than once in an EXPECT_CALL().");
+ } else {
+ ExpectSpecProperty(last_clause_ < kTimes,
+ ".Times() cannot appear after "
+ ".InSequence(), .WillOnce(), .WillRepeatedly(), "
+ "or .RetiresOnSaturation().");
+ }
+ last_clause_ = kTimes;
+
+ SpecifyCardinality(a_cardinality);
+}
+
+// Points to the implicit sequence introduced by a living InSequence
+// object (if any) in the current thread or NULL.
+GTEST_API_ ThreadLocal<Sequence*> g_gmock_implicit_sequence;
+
+// Reports an uninteresting call (whose description is in msg) in the
+// manner specified by 'reaction'.
void ReportUninterestingCall(CallReaction reaction, const std::string& msg) {
- // Include a stack trace only if --gmock_verbose=info is specified.
- const int stack_frames_to_skip =
- GMOCK_FLAG(verbose) == kInfoVerbosity ? 3 : -1;
- switch (reaction) {
- case kAllow:
- Log(kInfo, msg, stack_frames_to_skip);
- break;
- case kWarn:
- Log(kWarning,
- msg +
+ // Include a stack trace only if --gmock_verbose=info is specified.
+ const int stack_frames_to_skip =
+ GMOCK_FLAG(verbose) == kInfoVerbosity ? 3 : -1;
+ switch (reaction) {
+ case kAllow:
+ Log(kInfo, msg, stack_frames_to_skip);
+ break;
+ case kWarn:
+ Log(kWarning,
+ msg +
"\nNOTE: You can safely ignore the above warning unless this "
"call should not happen. Do not suppress it by blindly adding "
"an EXPECT_CALL() if you don't mean to enforce the call. "
@@ -298,103 +298,103 @@ void ReportUninterestingCall(CallReaction reaction, const std::string& msg) {
"https://github.com/google/googletest/blob/master/docs/"
"gmock_cook_book.md#"
"knowing-when-to-expect for details.\n",
- stack_frames_to_skip);
- break;
- default: // FAIL
+ stack_frames_to_skip);
+ break;
+ default: // FAIL
Expect(false, nullptr, -1, msg);
- }
-}
-
-UntypedFunctionMockerBase::UntypedFunctionMockerBase()
+ }
+}
+
+UntypedFunctionMockerBase::UntypedFunctionMockerBase()
: mock_obj_(nullptr), name_("") {}
-
-UntypedFunctionMockerBase::~UntypedFunctionMockerBase() {}
-
-// Sets the mock object this mock method belongs to, and registers
-// this information in the global mock registry. Will be called
-// whenever an EXPECT_CALL() or ON_CALL() is executed on this mock
-// method.
-void UntypedFunctionMockerBase::RegisterOwner(const void* mock_obj)
- GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
- {
- MutexLock l(&g_gmock_mutex);
- mock_obj_ = mock_obj;
- }
- Mock::Register(mock_obj, this);
-}
-
-// Sets the mock object this mock method belongs to, and sets the name
-// of the mock function. Will be called upon each invocation of this
-// mock function.
-void UntypedFunctionMockerBase::SetOwnerAndName(const void* mock_obj,
- const char* name)
- GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
- // We protect name_ under g_gmock_mutex in case this mock function
- // is called from two threads concurrently.
- MutexLock l(&g_gmock_mutex);
- mock_obj_ = mock_obj;
- name_ = name;
-}
-
-// Returns the name of the function being mocked. Must be called
-// after RegisterOwner() or SetOwnerAndName() has been called.
-const void* UntypedFunctionMockerBase::MockObject() const
- GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
- const void* mock_obj;
- {
- // We protect mock_obj_ under g_gmock_mutex in case this mock
- // function is called from two threads concurrently.
- MutexLock l(&g_gmock_mutex);
+
+UntypedFunctionMockerBase::~UntypedFunctionMockerBase() {}
+
+// Sets the mock object this mock method belongs to, and registers
+// this information in the global mock registry. Will be called
+// whenever an EXPECT_CALL() or ON_CALL() is executed on this mock
+// method.
+void UntypedFunctionMockerBase::RegisterOwner(const void* mock_obj)
+ GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
+ {
+ MutexLock l(&g_gmock_mutex);
+ mock_obj_ = mock_obj;
+ }
+ Mock::Register(mock_obj, this);
+}
+
+// Sets the mock object this mock method belongs to, and sets the name
+// of the mock function. Will be called upon each invocation of this
+// mock function.
+void UntypedFunctionMockerBase::SetOwnerAndName(const void* mock_obj,
+ const char* name)
+ GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
+ // We protect name_ under g_gmock_mutex in case this mock function
+ // is called from two threads concurrently.
+ MutexLock l(&g_gmock_mutex);
+ mock_obj_ = mock_obj;
+ name_ = name;
+}
+
+// Returns the name of the function being mocked. Must be called
+// after RegisterOwner() or SetOwnerAndName() has been called.
+const void* UntypedFunctionMockerBase::MockObject() const
+ GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
+ const void* mock_obj;
+ {
+ // We protect mock_obj_ under g_gmock_mutex in case this mock
+ // function is called from two threads concurrently.
+ MutexLock l(&g_gmock_mutex);
Assert(mock_obj_ != nullptr, __FILE__, __LINE__,
- "MockObject() must not be called before RegisterOwner() or "
- "SetOwnerAndName() has been called.");
- mock_obj = mock_obj_;
- }
- return mock_obj;
-}
-
-// Returns the name of this mock method. Must be called after
-// SetOwnerAndName() has been called.
-const char* UntypedFunctionMockerBase::Name() const
- GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
- const char* name;
- {
- // We protect name_ under g_gmock_mutex in case this mock
- // function is called from two threads concurrently.
- MutexLock l(&g_gmock_mutex);
+ "MockObject() must not be called before RegisterOwner() or "
+ "SetOwnerAndName() has been called.");
+ mock_obj = mock_obj_;
+ }
+ return mock_obj;
+}
+
+// Returns the name of this mock method. Must be called after
+// SetOwnerAndName() has been called.
+const char* UntypedFunctionMockerBase::Name() const
+ GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
+ const char* name;
+ {
+ // We protect name_ under g_gmock_mutex in case this mock
+ // function is called from two threads concurrently.
+ MutexLock l(&g_gmock_mutex);
Assert(name_ != nullptr, __FILE__, __LINE__,
- "Name() must not be called before SetOwnerAndName() has "
- "been called.");
- name = name_;
- }
- return name;
-}
-
-// Calculates the result of invoking this mock function with the given
-// arguments, prints it, and returns it. The caller is responsible
-// for deleting the result.
+ "Name() must not be called before SetOwnerAndName() has "
+ "been called.");
+ name = name_;
+ }
+ return name;
+}
+
+// Calculates the result of invoking this mock function with the given
+// arguments, prints it, and returns it. The caller is responsible
+// for deleting the result.
UntypedActionResultHolderBase* UntypedFunctionMockerBase::UntypedInvokeWith(
void* const untyped_args) GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
// See the definition of untyped_expectations_ for why access to it
// is unprotected here.
- if (untyped_expectations_.size() == 0) {
- // No expectation is set on this mock method - we have an
- // uninteresting call.
-
- // We must get Google Mock's reaction on uninteresting calls
- // made on this mock object BEFORE performing the action,
- // because the action may DELETE the mock object and make the
- // following expression meaningless.
- const CallReaction reaction =
- Mock::GetReactionOnUninterestingCalls(MockObject());
-
+ if (untyped_expectations_.size() == 0) {
+ // No expectation is set on this mock method - we have an
+ // uninteresting call.
+
+ // We must get Google Mock's reaction on uninteresting calls
+ // made on this mock object BEFORE performing the action,
+ // because the action may DELETE the mock object and make the
+ // following expression meaningless.
+ const CallReaction reaction =
+ Mock::GetReactionOnUninterestingCalls(MockObject());
+
// True if and only if we need to print this call's arguments and return
- // value. This definition must be kept in sync with
- // the behavior of ReportUninterestingCall().
- const bool need_to_report_uninteresting_call =
- // If the user allows this uninteresting call, we print it
+ // value. This definition must be kept in sync with
+ // the behavior of ReportUninterestingCall().
+ const bool need_to_report_uninteresting_call =
+ // If the user allows this uninteresting call, we print it
// only when they want informational messages.
- reaction == kAllow ? LogIsVisible(kInfo) :
+ reaction == kAllow ? LogIsVisible(kInfo) :
// If the user wants this to be a warning, we print
// it only when they want to see warnings.
reaction == kWarn
@@ -403,66 +403,66 @@ UntypedActionResultHolderBase* UntypedFunctionMockerBase::UntypedInvokeWith(
// Otherwise, the user wants this to be an error, and we
// should always print detailed information in the error.
true;
-
- if (!need_to_report_uninteresting_call) {
- // Perform the action without printing the call information.
+
+ if (!need_to_report_uninteresting_call) {
+ // Perform the action without printing the call information.
return this->UntypedPerformDefaultAction(
untyped_args, "Function call: " + std::string(Name()));
- }
-
- // Warns about the uninteresting call.
- ::std::stringstream ss;
- this->UntypedDescribeUninterestingCall(untyped_args, &ss);
-
- // Calculates the function result.
- UntypedActionResultHolderBase* const result =
- this->UntypedPerformDefaultAction(untyped_args, ss.str());
-
- // Prints the function result.
+ }
+
+ // Warns about the uninteresting call.
+ ::std::stringstream ss;
+ this->UntypedDescribeUninterestingCall(untyped_args, &ss);
+
+ // Calculates the function result.
+ UntypedActionResultHolderBase* const result =
+ this->UntypedPerformDefaultAction(untyped_args, ss.str());
+
+ // Prints the function result.
if (result != nullptr) result->PrintAsActionResult(&ss);
-
- ReportUninterestingCall(reaction, ss.str());
- return result;
- }
-
- bool is_excessive = false;
- ::std::stringstream ss;
- ::std::stringstream why;
- ::std::stringstream loc;
+
+ ReportUninterestingCall(reaction, ss.str());
+ return result;
+ }
+
+ bool is_excessive = false;
+ ::std::stringstream ss;
+ ::std::stringstream why;
+ ::std::stringstream loc;
const void* untyped_action = nullptr;
-
- // The UntypedFindMatchingExpectation() function acquires and
- // releases g_gmock_mutex.
- const ExpectationBase* const untyped_expectation =
+ // The UntypedFindMatchingExpectation() function acquires and
+ // releases g_gmock_mutex.
+
+ const ExpectationBase* const untyped_expectation =
this->UntypedFindMatchingExpectation(untyped_args, &untyped_action,
&is_excessive, &ss, &why);
const bool found = untyped_expectation != nullptr;
-
+
// True if and only if we need to print the call's arguments
// and return value.
- // This definition must be kept in sync with the uses of Expect()
- // and Log() in this function.
- const bool need_to_report_call =
- !found || is_excessive || LogIsVisible(kInfo);
- if (!need_to_report_call) {
- // Perform the action without printing the call information.
+ // This definition must be kept in sync with the uses of Expect()
+ // and Log() in this function.
+ const bool need_to_report_call =
+ !found || is_excessive || LogIsVisible(kInfo);
+ if (!need_to_report_call) {
+ // Perform the action without printing the call information.
return untyped_action == nullptr
? this->UntypedPerformDefaultAction(untyped_args, "")
: this->UntypedPerformAction(untyped_action, untyped_args);
- }
-
- ss << " Function call: " << Name();
- this->UntypedPrintArgs(untyped_args, &ss);
-
- // In case the action deletes a piece of the expectation, we
- // generate the message beforehand.
- if (found && !is_excessive) {
- untyped_expectation->DescribeLocationTo(&loc);
- }
-
+ }
+
+ ss << " Function call: " << Name();
+ this->UntypedPrintArgs(untyped_args, &ss);
+
+ // In case the action deletes a piece of the expectation, we
+ // generate the message beforehand.
+ if (found && !is_excessive) {
+ untyped_expectation->DescribeLocationTo(&loc);
+ }
+
UntypedActionResultHolderBase* result = nullptr;
-
+
auto perform_action = [&] {
return untyped_action == nullptr
? this->UntypedPerformDefaultAction(untyped_args, ss.str())
@@ -490,83 +490,83 @@ UntypedActionResultHolderBase* UntypedFunctionMockerBase::UntypedInvokeWith(
} catch (...) {
handle_failures();
throw;
- }
+ }
#else
result = perform_action();
#endif
-
+
if (result != nullptr) result->PrintAsActionResult(&ss);
handle_failures();
- return result;
-}
-
-// Returns an Expectation object that references and co-owns exp,
-// which must be an expectation on this mock function.
-Expectation UntypedFunctionMockerBase::GetHandleOf(ExpectationBase* exp) {
+ return result;
+}
+
+// Returns an Expectation object that references and co-owns exp,
+// which must be an expectation on this mock function.
+Expectation UntypedFunctionMockerBase::GetHandleOf(ExpectationBase* exp) {
// See the definition of untyped_expectations_ for why access to it
// is unprotected here.
- for (UntypedExpectations::const_iterator it =
- untyped_expectations_.begin();
- it != untyped_expectations_.end(); ++it) {
- if (it->get() == exp) {
- return Expectation(*it);
- }
- }
-
- Assert(false, __FILE__, __LINE__, "Cannot find expectation.");
- return Expectation();
- // The above statement is just to make the code compile, and will
- // never be executed.
-}
-
-// Verifies that all expectations on this mock function have been
-// satisfied. Reports one or more Google Test non-fatal failures
-// and returns false if not.
-bool UntypedFunctionMockerBase::VerifyAndClearExpectationsLocked()
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
- g_gmock_mutex.AssertHeld();
- bool expectations_met = true;
- for (UntypedExpectations::const_iterator it =
- untyped_expectations_.begin();
- it != untyped_expectations_.end(); ++it) {
- ExpectationBase* const untyped_expectation = it->get();
- if (untyped_expectation->IsOverSaturated()) {
- // There was an upper-bound violation. Since the error was
- // already reported when it occurred, there is no need to do
- // anything here.
- expectations_met = false;
- } else if (!untyped_expectation->IsSatisfied()) {
- expectations_met = false;
- ::std::stringstream ss;
- ss << "Actual function call count doesn't match "
- << untyped_expectation->source_text() << "...\n";
- // No need to show the source file location of the expectation
- // in the description, as the Expect() call that follows already
- // takes care of it.
- untyped_expectation->MaybeDescribeExtraMatcherTo(&ss);
- untyped_expectation->DescribeCallCountTo(&ss);
- Expect(false, untyped_expectation->file(),
- untyped_expectation->line(), ss.str());
- }
- }
-
- // Deleting our expectations may trigger other mock objects to be deleted, for
- // example if an action contains a reference counted smart pointer to that
- // mock object, and that is the last reference. So if we delete our
- // expectations within the context of the global mutex we may deadlock when
- // this method is called again. Instead, make a copy of the set of
- // expectations to delete, clear our set within the mutex, and then clear the
- // copied set outside of it.
- UntypedExpectations expectations_to_delete;
- untyped_expectations_.swap(expectations_to_delete);
-
- g_gmock_mutex.Unlock();
- expectations_to_delete.clear();
- g_gmock_mutex.Lock();
-
- return expectations_met;
-}
-
+ for (UntypedExpectations::const_iterator it =
+ untyped_expectations_.begin();
+ it != untyped_expectations_.end(); ++it) {
+ if (it->get() == exp) {
+ return Expectation(*it);
+ }
+ }
+
+ Assert(false, __FILE__, __LINE__, "Cannot find expectation.");
+ return Expectation();
+ // The above statement is just to make the code compile, and will
+ // never be executed.
+}
+
+// Verifies that all expectations on this mock function have been
+// satisfied. Reports one or more Google Test non-fatal failures
+// and returns false if not.
+bool UntypedFunctionMockerBase::VerifyAndClearExpectationsLocked()
+ GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+ g_gmock_mutex.AssertHeld();
+ bool expectations_met = true;
+ for (UntypedExpectations::const_iterator it =
+ untyped_expectations_.begin();
+ it != untyped_expectations_.end(); ++it) {
+ ExpectationBase* const untyped_expectation = it->get();
+ if (untyped_expectation->IsOverSaturated()) {
+ // There was an upper-bound violation. Since the error was
+ // already reported when it occurred, there is no need to do
+ // anything here.
+ expectations_met = false;
+ } else if (!untyped_expectation->IsSatisfied()) {
+ expectations_met = false;
+ ::std::stringstream ss;
+ ss << "Actual function call count doesn't match "
+ << untyped_expectation->source_text() << "...\n";
+ // No need to show the source file location of the expectation
+ // in the description, as the Expect() call that follows already
+ // takes care of it.
+ untyped_expectation->MaybeDescribeExtraMatcherTo(&ss);
+ untyped_expectation->DescribeCallCountTo(&ss);
+ Expect(false, untyped_expectation->file(),
+ untyped_expectation->line(), ss.str());
+ }
+ }
+
+ // Deleting our expectations may trigger other mock objects to be deleted, for
+ // example if an action contains a reference counted smart pointer to that
+ // mock object, and that is the last reference. So if we delete our
+ // expectations within the context of the global mutex we may deadlock when
+ // this method is called again. Instead, make a copy of the set of
+ // expectations to delete, clear our set within the mutex, and then clear the
+ // copied set outside of it.
+ UntypedExpectations expectations_to_delete;
+ untyped_expectations_.swap(expectations_to_delete);
+
+ g_gmock_mutex.Unlock();
+ expectations_to_delete.clear();
+ g_gmock_mutex.Lock();
+
+ return expectations_met;
+}
+
CallReaction intToCallReaction(int mock_behavior) {
if (mock_behavior >= kAllow && mock_behavior <= kFail) {
return static_cast<internal::CallReaction>(mock_behavior);
@@ -574,70 +574,70 @@ CallReaction intToCallReaction(int mock_behavior) {
return kWarn;
}
-} // namespace internal
-
-// Class Mock.
-
-namespace {
-
-typedef std::set<internal::UntypedFunctionMockerBase*> FunctionMockers;
-
-// The current state of a mock object. Such information is needed for
-// detecting leaked mock objects and explicitly verifying a mock's
-// expectations.
-struct MockObjectState {
- MockObjectState()
+} // namespace internal
+
+// Class Mock.
+
+namespace {
+
+typedef std::set<internal::UntypedFunctionMockerBase*> FunctionMockers;
+
+// The current state of a mock object. Such information is needed for
+// detecting leaked mock objects and explicitly verifying a mock's
+// expectations.
+struct MockObjectState {
+ MockObjectState()
: first_used_file(nullptr), first_used_line(-1), leakable(false) {}
-
- // Where in the source file an ON_CALL or EXPECT_CALL is first
- // invoked on this mock object.
- const char* first_used_file;
- int first_used_line;
+
+ // Where in the source file an ON_CALL or EXPECT_CALL is first
+ // invoked on this mock object.
+ const char* first_used_file;
+ int first_used_line;
::std::string first_used_test_suite;
- ::std::string first_used_test;
+ ::std::string first_used_test;
bool leakable; // true if and only if it's OK to leak the object.
- FunctionMockers function_mockers; // All registered methods of the object.
-};
-
-// A global registry holding the state of all mock objects that are
-// alive. A mock object is added to this registry the first time
-// Mock::AllowLeak(), ON_CALL(), or EXPECT_CALL() is called on it. It
-// is removed from the registry in the mock object's destructor.
-class MockObjectRegistry {
- public:
- // Maps a mock object (identified by its address) to its state.
- typedef std::map<const void*, MockObjectState> StateMap;
-
- // This destructor will be called when a program exits, after all
- // tests in it have been run. By then, there should be no mock
- // object alive. Therefore we report any living object as test
- // failure, unless the user explicitly asked us to ignore it.
- ~MockObjectRegistry() {
- if (!GMOCK_FLAG(catch_leaked_mocks))
- return;
-
- int leaked_count = 0;
- for (StateMap::const_iterator it = states_.begin(); it != states_.end();
- ++it) {
- if (it->second.leakable) // The user said it's fine to leak this object.
- continue;
-
+ FunctionMockers function_mockers; // All registered methods of the object.
+};
+
+// A global registry holding the state of all mock objects that are
+// alive. A mock object is added to this registry the first time
+// Mock::AllowLeak(), ON_CALL(), or EXPECT_CALL() is called on it. It
+// is removed from the registry in the mock object's destructor.
+class MockObjectRegistry {
+ public:
+ // Maps a mock object (identified by its address) to its state.
+ typedef std::map<const void*, MockObjectState> StateMap;
+
+ // This destructor will be called when a program exits, after all
+ // tests in it have been run. By then, there should be no mock
+ // object alive. Therefore we report any living object as test
+ // failure, unless the user explicitly asked us to ignore it.
+ ~MockObjectRegistry() {
+ if (!GMOCK_FLAG(catch_leaked_mocks))
+ return;
+
+ int leaked_count = 0;
+ for (StateMap::const_iterator it = states_.begin(); it != states_.end();
+ ++it) {
+ if (it->second.leakable) // The user said it's fine to leak this object.
+ continue;
+
// FIXME: Print the type of the leaked object.
- // This can help the user identify the leaked object.
- std::cout << "\n";
- const MockObjectState& state = it->second;
- std::cout << internal::FormatFileLocation(state.first_used_file,
- state.first_used_line);
- std::cout << " ERROR: this mock object";
- if (state.first_used_test != "") {
+ // This can help the user identify the leaked object.
+ std::cout << "\n";
+ const MockObjectState& state = it->second;
+ std::cout << internal::FormatFileLocation(state.first_used_file,
+ state.first_used_line);
+ std::cout << " ERROR: this mock object";
+ if (state.first_used_test != "") {
std::cout << " (used in test " << state.first_used_test_suite << "."
<< state.first_used_test << ")";
- }
- std::cout << " should be deleted but never is. Its address is @"
- << it->first << ".";
- leaked_count++;
- }
- if (leaked_count > 0) {
+ }
+ std::cout << " should be deleted but never is. Its address is @"
+ << it->first << ".";
+ leaked_count++;
+ }
+ if (leaked_count > 0) {
std::cout << "\nERROR: " << leaked_count << " leaked mock "
<< (leaked_count == 1 ? "object" : "objects")
<< " found at program exit. Expectations on a mock object are "
@@ -647,135 +647,135 @@ class MockObjectRegistry {
"you can suppress this error using "
"testing::Mock::AllowLeak(mock_object), or you may use a "
"fake or stub instead of a mock.\n";
- std::cout.flush();
- ::std::cerr.flush();
- // RUN_ALL_TESTS() has already returned when this destructor is
- // called. Therefore we cannot use the normal Google Test
- // failure reporting mechanism.
- _exit(1); // We cannot call exit() as it is not reentrant and
- // may already have been called.
- }
- }
-
- StateMap& states() { return states_; }
-
- private:
- StateMap states_;
-};
-
-// Protected by g_gmock_mutex.
-MockObjectRegistry g_mock_object_registry;
-
-// Maps a mock object to the reaction Google Mock should have when an
-// uninteresting method is called. Protected by g_gmock_mutex.
-std::map<const void*, internal::CallReaction> g_uninteresting_call_reaction;
-
-// Sets the reaction Google Mock should have when an uninteresting
-// method of the given mock object is called.
-void SetReactionOnUninterestingCalls(const void* mock_obj,
- internal::CallReaction reaction)
- GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
- internal::MutexLock l(&internal::g_gmock_mutex);
- g_uninteresting_call_reaction[mock_obj] = reaction;
-}
-
-} // namespace
-
-// Tells Google Mock to allow uninteresting calls on the given mock
-// object.
-void Mock::AllowUninterestingCalls(const void* mock_obj)
- GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
- SetReactionOnUninterestingCalls(mock_obj, internal::kAllow);
-}
-
-// Tells Google Mock to warn the user about uninteresting calls on the
-// given mock object.
-void Mock::WarnUninterestingCalls(const void* mock_obj)
- GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
- SetReactionOnUninterestingCalls(mock_obj, internal::kWarn);
-}
-
-// Tells Google Mock to fail uninteresting calls on the given mock
-// object.
-void Mock::FailUninterestingCalls(const void* mock_obj)
- GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
- SetReactionOnUninterestingCalls(mock_obj, internal::kFail);
-}
-
-// Tells Google Mock the given mock object is being destroyed and its
-// entry in the call-reaction table should be removed.
-void Mock::UnregisterCallReaction(const void* mock_obj)
- GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
- internal::MutexLock l(&internal::g_gmock_mutex);
- g_uninteresting_call_reaction.erase(mock_obj);
-}
-
-// Returns the reaction Google Mock will have on uninteresting calls
-// made on the given mock object.
-internal::CallReaction Mock::GetReactionOnUninterestingCalls(
- const void* mock_obj)
- GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
- internal::MutexLock l(&internal::g_gmock_mutex);
- return (g_uninteresting_call_reaction.count(mock_obj) == 0) ?
+ std::cout.flush();
+ ::std::cerr.flush();
+ // RUN_ALL_TESTS() has already returned when this destructor is
+ // called. Therefore we cannot use the normal Google Test
+ // failure reporting mechanism.
+ _exit(1); // We cannot call exit() as it is not reentrant and
+ // may already have been called.
+ }
+ }
+
+ StateMap& states() { return states_; }
+
+ private:
+ StateMap states_;
+};
+
+// Protected by g_gmock_mutex.
+MockObjectRegistry g_mock_object_registry;
+
+// Maps a mock object to the reaction Google Mock should have when an
+// uninteresting method is called. Protected by g_gmock_mutex.
+std::map<const void*, internal::CallReaction> g_uninteresting_call_reaction;
+
+// Sets the reaction Google Mock should have when an uninteresting
+// method of the given mock object is called.
+void SetReactionOnUninterestingCalls(const void* mock_obj,
+ internal::CallReaction reaction)
+ GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
+ internal::MutexLock l(&internal::g_gmock_mutex);
+ g_uninteresting_call_reaction[mock_obj] = reaction;
+}
+
+} // namespace
+
+// Tells Google Mock to allow uninteresting calls on the given mock
+// object.
+void Mock::AllowUninterestingCalls(const void* mock_obj)
+ GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
+ SetReactionOnUninterestingCalls(mock_obj, internal::kAllow);
+}
+
+// Tells Google Mock to warn the user about uninteresting calls on the
+// given mock object.
+void Mock::WarnUninterestingCalls(const void* mock_obj)
+ GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
+ SetReactionOnUninterestingCalls(mock_obj, internal::kWarn);
+}
+
+// Tells Google Mock to fail uninteresting calls on the given mock
+// object.
+void Mock::FailUninterestingCalls(const void* mock_obj)
+ GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
+ SetReactionOnUninterestingCalls(mock_obj, internal::kFail);
+}
+
+// Tells Google Mock the given mock object is being destroyed and its
+// entry in the call-reaction table should be removed.
+void Mock::UnregisterCallReaction(const void* mock_obj)
+ GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
+ internal::MutexLock l(&internal::g_gmock_mutex);
+ g_uninteresting_call_reaction.erase(mock_obj);
+}
+
+// Returns the reaction Google Mock will have on uninteresting calls
+// made on the given mock object.
+internal::CallReaction Mock::GetReactionOnUninterestingCalls(
+ const void* mock_obj)
+ GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
+ internal::MutexLock l(&internal::g_gmock_mutex);
+ return (g_uninteresting_call_reaction.count(mock_obj) == 0) ?
internal::intToCallReaction(GMOCK_FLAG(default_mock_behavior)) :
g_uninteresting_call_reaction[mock_obj];
-}
-
-// Tells Google Mock to ignore mock_obj when checking for leaked mock
-// objects.
-void Mock::AllowLeak(const void* mock_obj)
- GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
- internal::MutexLock l(&internal::g_gmock_mutex);
- g_mock_object_registry.states()[mock_obj].leakable = true;
-}
-
-// Verifies and clears all expectations on the given mock object. If
-// the expectations aren't satisfied, generates one or more Google
-// Test non-fatal failures and returns false.
-bool Mock::VerifyAndClearExpectations(void* mock_obj)
- GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
- internal::MutexLock l(&internal::g_gmock_mutex);
- return VerifyAndClearExpectationsLocked(mock_obj);
-}
-
-// Verifies all expectations on the given mock object and clears its
+}
+
+// Tells Google Mock to ignore mock_obj when checking for leaked mock
+// objects.
+void Mock::AllowLeak(const void* mock_obj)
+ GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
+ internal::MutexLock l(&internal::g_gmock_mutex);
+ g_mock_object_registry.states()[mock_obj].leakable = true;
+}
+
+// Verifies and clears all expectations on the given mock object. If
+// the expectations aren't satisfied, generates one or more Google
+// Test non-fatal failures and returns false.
+bool Mock::VerifyAndClearExpectations(void* mock_obj)
+ GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
+ internal::MutexLock l(&internal::g_gmock_mutex);
+ return VerifyAndClearExpectationsLocked(mock_obj);
+}
+
+// Verifies all expectations on the given mock object and clears its
// default actions and expectations. Returns true if and only if the
-// verification was successful.
-bool Mock::VerifyAndClear(void* mock_obj)
- GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
- internal::MutexLock l(&internal::g_gmock_mutex);
- ClearDefaultActionsLocked(mock_obj);
- return VerifyAndClearExpectationsLocked(mock_obj);
-}
-
-// Verifies and clears all expectations on the given mock object. If
-// the expectations aren't satisfied, generates one or more Google
-// Test non-fatal failures and returns false.
-bool Mock::VerifyAndClearExpectationsLocked(void* mock_obj)
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(internal::g_gmock_mutex) {
- internal::g_gmock_mutex.AssertHeld();
- if (g_mock_object_registry.states().count(mock_obj) == 0) {
- // No EXPECT_CALL() was set on the given mock object.
- return true;
- }
-
- // Verifies and clears the expectations on each mock method in the
- // given mock object.
- bool expectations_met = true;
- FunctionMockers& mockers =
- g_mock_object_registry.states()[mock_obj].function_mockers;
- for (FunctionMockers::const_iterator it = mockers.begin();
- it != mockers.end(); ++it) {
- if (!(*it)->VerifyAndClearExpectationsLocked()) {
- expectations_met = false;
- }
- }
-
- // We don't clear the content of mockers, as they may still be
- // needed by ClearDefaultActionsLocked().
- return expectations_met;
-}
-
+// verification was successful.
+bool Mock::VerifyAndClear(void* mock_obj)
+ GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
+ internal::MutexLock l(&internal::g_gmock_mutex);
+ ClearDefaultActionsLocked(mock_obj);
+ return VerifyAndClearExpectationsLocked(mock_obj);
+}
+
+// Verifies and clears all expectations on the given mock object. If
+// the expectations aren't satisfied, generates one or more Google
+// Test non-fatal failures and returns false.
+bool Mock::VerifyAndClearExpectationsLocked(void* mock_obj)
+ GTEST_EXCLUSIVE_LOCK_REQUIRED_(internal::g_gmock_mutex) {
+ internal::g_gmock_mutex.AssertHeld();
+ if (g_mock_object_registry.states().count(mock_obj) == 0) {
+ // No EXPECT_CALL() was set on the given mock object.
+ return true;
+ }
+
+ // Verifies and clears the expectations on each mock method in the
+ // given mock object.
+ bool expectations_met = true;
+ FunctionMockers& mockers =
+ g_mock_object_registry.states()[mock_obj].function_mockers;
+ for (FunctionMockers::const_iterator it = mockers.begin();
+ it != mockers.end(); ++it) {
+ if (!(*it)->VerifyAndClearExpectationsLocked()) {
+ expectations_met = false;
+ }
+ }
+
+ // We don't clear the content of mockers, as they may still be
+ // needed by ClearDefaultActionsLocked().
+ return expectations_met;
+}
+
bool Mock::IsNaggy(void* mock_obj)
GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
return Mock::GetReactionOnUninterestingCalls(mock_obj) == internal::kWarn;
@@ -789,117 +789,117 @@ bool Mock::IsStrict(void* mock_obj)
return Mock::GetReactionOnUninterestingCalls(mock_obj) == internal::kFail;
}
-// Registers a mock object and a mock method it owns.
-void Mock::Register(const void* mock_obj,
- internal::UntypedFunctionMockerBase* mocker)
- GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
- internal::MutexLock l(&internal::g_gmock_mutex);
- g_mock_object_registry.states()[mock_obj].function_mockers.insert(mocker);
-}
-
-// Tells Google Mock where in the source code mock_obj is used in an
-// ON_CALL or EXPECT_CALL. In case mock_obj is leaked, this
-// information helps the user identify which object it is.
-void Mock::RegisterUseByOnCallOrExpectCall(const void* mock_obj,
- const char* file, int line)
- GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
- internal::MutexLock l(&internal::g_gmock_mutex);
- MockObjectState& state = g_mock_object_registry.states()[mock_obj];
+// Registers a mock object and a mock method it owns.
+void Mock::Register(const void* mock_obj,
+ internal::UntypedFunctionMockerBase* mocker)
+ GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
+ internal::MutexLock l(&internal::g_gmock_mutex);
+ g_mock_object_registry.states()[mock_obj].function_mockers.insert(mocker);
+}
+
+// Tells Google Mock where in the source code mock_obj is used in an
+// ON_CALL or EXPECT_CALL. In case mock_obj is leaked, this
+// information helps the user identify which object it is.
+void Mock::RegisterUseByOnCallOrExpectCall(const void* mock_obj,
+ const char* file, int line)
+ GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
+ internal::MutexLock l(&internal::g_gmock_mutex);
+ MockObjectState& state = g_mock_object_registry.states()[mock_obj];
if (state.first_used_file == nullptr) {
- state.first_used_file = file;
- state.first_used_line = line;
- const TestInfo* const test_info =
- UnitTest::GetInstance()->current_test_info();
+ state.first_used_file = file;
+ state.first_used_line = line;
+ const TestInfo* const test_info =
+ UnitTest::GetInstance()->current_test_info();
if (test_info != nullptr) {
state.first_used_test_suite = test_info->test_suite_name();
- state.first_used_test = test_info->name();
- }
- }
-}
-
-// Unregisters a mock method; removes the owning mock object from the
-// registry when the last mock method associated with it has been
-// unregistered. This is called only in the destructor of
-// FunctionMockerBase.
-void Mock::UnregisterLocked(internal::UntypedFunctionMockerBase* mocker)
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(internal::g_gmock_mutex) {
- internal::g_gmock_mutex.AssertHeld();
- for (MockObjectRegistry::StateMap::iterator it =
- g_mock_object_registry.states().begin();
- it != g_mock_object_registry.states().end(); ++it) {
- FunctionMockers& mockers = it->second.function_mockers;
- if (mockers.erase(mocker) > 0) {
- // mocker was in mockers and has been just removed.
- if (mockers.empty()) {
- g_mock_object_registry.states().erase(it);
- }
- return;
- }
- }
-}
-
-// Clears all ON_CALL()s set on the given mock object.
-void Mock::ClearDefaultActionsLocked(void* mock_obj)
- GTEST_EXCLUSIVE_LOCK_REQUIRED_(internal::g_gmock_mutex) {
- internal::g_gmock_mutex.AssertHeld();
-
- if (g_mock_object_registry.states().count(mock_obj) == 0) {
- // No ON_CALL() was set on the given mock object.
- return;
- }
-
- // Clears the default actions for each mock method in the given mock
- // object.
- FunctionMockers& mockers =
- g_mock_object_registry.states()[mock_obj].function_mockers;
- for (FunctionMockers::const_iterator it = mockers.begin();
- it != mockers.end(); ++it) {
- (*it)->ClearDefaultActionsLocked();
- }
-
- // We don't clear the content of mockers, as they may still be
- // needed by VerifyAndClearExpectationsLocked().
-}
-
-Expectation::Expectation() {}
-
-Expectation::Expectation(
+ state.first_used_test = test_info->name();
+ }
+ }
+}
+
+// Unregisters a mock method; removes the owning mock object from the
+// registry when the last mock method associated with it has been
+// unregistered. This is called only in the destructor of
+// FunctionMockerBase.
+void Mock::UnregisterLocked(internal::UntypedFunctionMockerBase* mocker)
+ GTEST_EXCLUSIVE_LOCK_REQUIRED_(internal::g_gmock_mutex) {
+ internal::g_gmock_mutex.AssertHeld();
+ for (MockObjectRegistry::StateMap::iterator it =
+ g_mock_object_registry.states().begin();
+ it != g_mock_object_registry.states().end(); ++it) {
+ FunctionMockers& mockers = it->second.function_mockers;
+ if (mockers.erase(mocker) > 0) {
+ // mocker was in mockers and has been just removed.
+ if (mockers.empty()) {
+ g_mock_object_registry.states().erase(it);
+ }
+ return;
+ }
+ }
+}
+
+// Clears all ON_CALL()s set on the given mock object.
+void Mock::ClearDefaultActionsLocked(void* mock_obj)
+ GTEST_EXCLUSIVE_LOCK_REQUIRED_(internal::g_gmock_mutex) {
+ internal::g_gmock_mutex.AssertHeld();
+
+ if (g_mock_object_registry.states().count(mock_obj) == 0) {
+ // No ON_CALL() was set on the given mock object.
+ return;
+ }
+
+ // Clears the default actions for each mock method in the given mock
+ // object.
+ FunctionMockers& mockers =
+ g_mock_object_registry.states()[mock_obj].function_mockers;
+ for (FunctionMockers::const_iterator it = mockers.begin();
+ it != mockers.end(); ++it) {
+ (*it)->ClearDefaultActionsLocked();
+ }
+
+ // We don't clear the content of mockers, as they may still be
+ // needed by VerifyAndClearExpectationsLocked().
+}
+
+Expectation::Expectation() {}
+
+Expectation::Expectation(
const std::shared_ptr<internal::ExpectationBase>& an_expectation_base)
- : expectation_base_(an_expectation_base) {}
-
-Expectation::~Expectation() {}
-
-// Adds an expectation to a sequence.
-void Sequence::AddExpectation(const Expectation& expectation) const {
- if (*last_expectation_ != expectation) {
+ : expectation_base_(an_expectation_base) {}
+
+Expectation::~Expectation() {}
+
+// Adds an expectation to a sequence.
+void Sequence::AddExpectation(const Expectation& expectation) const {
+ if (*last_expectation_ != expectation) {
if (last_expectation_->expectation_base() != nullptr) {
- expectation.expectation_base()->immediate_prerequisites_
- += *last_expectation_;
- }
- *last_expectation_ = expectation;
- }
-}
-
-// Creates the implicit sequence if there isn't one.
-InSequence::InSequence() {
+ expectation.expectation_base()->immediate_prerequisites_
+ += *last_expectation_;
+ }
+ *last_expectation_ = expectation;
+ }
+}
+
+// Creates the implicit sequence if there isn't one.
+InSequence::InSequence() {
if (internal::g_gmock_implicit_sequence.get() == nullptr) {
- internal::g_gmock_implicit_sequence.set(new Sequence);
- sequence_created_ = true;
- } else {
- sequence_created_ = false;
- }
-}
-
-// Deletes the implicit sequence if it was created by the constructor
-// of this object.
-InSequence::~InSequence() {
- if (sequence_created_) {
- delete internal::g_gmock_implicit_sequence.get();
+ internal::g_gmock_implicit_sequence.set(new Sequence);
+ sequence_created_ = true;
+ } else {
+ sequence_created_ = false;
+ }
+}
+
+// Deletes the implicit sequence if it was created by the constructor
+// of this object.
+InSequence::~InSequence() {
+ if (sequence_created_) {
+ delete internal::g_gmock_implicit_sequence.get();
internal::g_gmock_implicit_sequence.set(nullptr);
- }
-}
-
-} // namespace testing
+ }
+}
+
+} // namespace testing
#ifdef _MSC_VER
#if _MSC_VER == 1900
diff --git a/contrib/restricted/googletest/googlemock/src/gmock.cc b/contrib/restricted/googletest/googlemock/src/gmock.cc
index 8b89c5e8dc..7bcdb0ba2d 100644
--- a/contrib/restricted/googletest/googlemock/src/gmock.cc
+++ b/contrib/restricted/googletest/googlemock/src/gmock.cc
@@ -1,49 +1,49 @@
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-#include "gmock/gmock.h"
-#include "gmock/internal/gmock-port.h"
-
-namespace testing {
-
-GMOCK_DEFINE_bool_(catch_leaked_mocks, true,
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+#include "gmock/gmock.h"
+#include "gmock/internal/gmock-port.h"
+
+namespace testing {
+
+GMOCK_DEFINE_bool_(catch_leaked_mocks, true,
"true if and only if Google Mock should report leaked "
"mock objects as failures.");
-
-GMOCK_DEFINE_string_(verbose, internal::kWarningVerbosity,
- "Controls how verbose Google Mock's output is."
- " Valid values:\n"
- " info - prints all messages.\n"
- " warning - prints warnings and errors.\n"
- " error - prints errors only.");
-
+
+GMOCK_DEFINE_string_(verbose, internal::kWarningVerbosity,
+ "Controls how verbose Google Mock's output is."
+ " Valid values:\n"
+ " info - prints all messages.\n"
+ " warning - prints warnings and errors.\n"
+ " error - prints errors only.");
+
GMOCK_DEFINE_int32_(default_mock_behavior, 1,
"Controls the default behavior of mocks."
" Valid values:\n"
@@ -51,78 +51,78 @@ GMOCK_DEFINE_int32_(default_mock_behavior, 1,
" 1 - by default, mocks act as NaggyMocks.\n"
" 2 - by default, mocks act as StrictMocks.");
-namespace internal {
-
-// Parses a string as a command line flag. The string should have the
-// format "--gmock_flag=value". When def_optional is true, the
-// "=value" part can be omitted.
-//
-// Returns the value of the flag, or NULL if the parsing failed.
-static const char* ParseGoogleMockFlagValue(const char* str,
- const char* flag,
- bool def_optional) {
- // str and flag must not be NULL.
+namespace internal {
+
+// Parses a string as a command line flag. The string should have the
+// format "--gmock_flag=value". When def_optional is true, the
+// "=value" part can be omitted.
+//
+// Returns the value of the flag, or NULL if the parsing failed.
+static const char* ParseGoogleMockFlagValue(const char* str,
+ const char* flag,
+ bool def_optional) {
+ // str and flag must not be NULL.
if (str == nullptr || flag == nullptr) return nullptr;
-
- // The flag must start with "--gmock_".
- const std::string flag_str = std::string("--gmock_") + flag;
- const size_t flag_len = flag_str.length();
+
+ // The flag must start with "--gmock_".
+ const std::string flag_str = std::string("--gmock_") + flag;
+ const size_t flag_len = flag_str.length();
if (strncmp(str, flag_str.c_str(), flag_len) != 0) return nullptr;
-
- // Skips the flag name.
- const char* flag_end = str + flag_len;
-
- // When def_optional is true, it's OK to not have a "=value" part.
- if (def_optional && (flag_end[0] == '\0')) {
- return flag_end;
- }
-
- // If def_optional is true and there are more characters after the
- // flag name, or if def_optional is false, there must be a '=' after
- // the flag name.
+
+ // Skips the flag name.
+ const char* flag_end = str + flag_len;
+
+ // When def_optional is true, it's OK to not have a "=value" part.
+ if (def_optional && (flag_end[0] == '\0')) {
+ return flag_end;
+ }
+
+ // If def_optional is true and there are more characters after the
+ // flag name, or if def_optional is false, there must be a '=' after
+ // the flag name.
if (flag_end[0] != '=') return nullptr;
-
- // Returns the string after "=".
- return flag_end + 1;
-}
-
-// Parses a string for a Google Mock bool flag, in the form of
-// "--gmock_flag=value".
-//
-// On success, stores the value of the flag in *value, and returns
-// true. On failure, returns false without changing *value.
-static bool ParseGoogleMockBoolFlag(const char* str, const char* flag,
- bool* value) {
- // Gets the value of the flag as a string.
- const char* const value_str = ParseGoogleMockFlagValue(str, flag, true);
-
- // Aborts if the parsing failed.
+
+ // Returns the string after "=".
+ return flag_end + 1;
+}
+
+// Parses a string for a Google Mock bool flag, in the form of
+// "--gmock_flag=value".
+//
+// On success, stores the value of the flag in *value, and returns
+// true. On failure, returns false without changing *value.
+static bool ParseGoogleMockBoolFlag(const char* str, const char* flag,
+ bool* value) {
+ // Gets the value of the flag as a string.
+ const char* const value_str = ParseGoogleMockFlagValue(str, flag, true);
+
+ // Aborts if the parsing failed.
if (value_str == nullptr) return false;
-
- // Converts the string value to a bool.
- *value = !(*value_str == '0' || *value_str == 'f' || *value_str == 'F');
- return true;
-}
-
-// Parses a string for a Google Mock string flag, in the form of
-// "--gmock_flag=value".
-//
-// On success, stores the value of the flag in *value, and returns
-// true. On failure, returns false without changing *value.
-template <typename String>
-static bool ParseGoogleMockStringFlag(const char* str, const char* flag,
- String* value) {
- // Gets the value of the flag as a string.
- const char* const value_str = ParseGoogleMockFlagValue(str, flag, false);
-
- // Aborts if the parsing failed.
+
+ // Converts the string value to a bool.
+ *value = !(*value_str == '0' || *value_str == 'f' || *value_str == 'F');
+ return true;
+}
+
+// Parses a string for a Google Mock string flag, in the form of
+// "--gmock_flag=value".
+//
+// On success, stores the value of the flag in *value, and returns
+// true. On failure, returns false without changing *value.
+template <typename String>
+static bool ParseGoogleMockStringFlag(const char* str, const char* flag,
+ String* value) {
+ // Gets the value of the flag as a string.
+ const char* const value_str = ParseGoogleMockFlagValue(str, flag, false);
+
+ // Aborts if the parsing failed.
if (value_str == nullptr) return false;
-
- // Sets *value to the value of the flag.
- *value = value_str;
- return true;
-}
-
+
+ // Sets *value to the value of the flag.
+ *value = value_str;
+ return true;
+}
+
static bool ParseGoogleMockIntFlag(const char* str, const char* flag,
int32_t* value) {
// Gets the value of the flag as a string.
@@ -136,68 +136,68 @@ static bool ParseGoogleMockIntFlag(const char* str, const char* flag,
value_str, value);
}
-// The internal implementation of InitGoogleMock().
-//
-// The type parameter CharType can be instantiated to either char or
-// wchar_t.
-template <typename CharType>
-void InitGoogleMockImpl(int* argc, CharType** argv) {
- // Makes sure Google Test is initialized. InitGoogleTest() is
- // idempotent, so it's fine if the user has already called it.
- InitGoogleTest(argc, argv);
- if (*argc <= 0) return;
-
- for (int i = 1; i != *argc; i++) {
- const std::string arg_string = StreamableToString(argv[i]);
- const char* const arg = arg_string.c_str();
-
- // Do we see a Google Mock flag?
- if (ParseGoogleMockBoolFlag(arg, "catch_leaked_mocks",
- &GMOCK_FLAG(catch_leaked_mocks)) ||
+// The internal implementation of InitGoogleMock().
+//
+// The type parameter CharType can be instantiated to either char or
+// wchar_t.
+template <typename CharType>
+void InitGoogleMockImpl(int* argc, CharType** argv) {
+ // Makes sure Google Test is initialized. InitGoogleTest() is
+ // idempotent, so it's fine if the user has already called it.
+ InitGoogleTest(argc, argv);
+ if (*argc <= 0) return;
+
+ for (int i = 1; i != *argc; i++) {
+ const std::string arg_string = StreamableToString(argv[i]);
+ const char* const arg = arg_string.c_str();
+
+ // Do we see a Google Mock flag?
+ if (ParseGoogleMockBoolFlag(arg, "catch_leaked_mocks",
+ &GMOCK_FLAG(catch_leaked_mocks)) ||
ParseGoogleMockStringFlag(arg, "verbose", &GMOCK_FLAG(verbose)) ||
ParseGoogleMockIntFlag(arg, "default_mock_behavior",
&GMOCK_FLAG(default_mock_behavior))) {
- // Yes. Shift the remainder of the argv list left by one. Note
- // that argv has (*argc + 1) elements, the last one always being
- // NULL. The following loop moves the trailing NULL element as
- // well.
- for (int j = i; j != *argc; j++) {
- argv[j] = argv[j + 1];
- }
-
- // Decrements the argument count.
- (*argc)--;
-
- // We also need to decrement the iterator as we just removed
- // an element.
- i--;
- }
- }
-}
-
-} // namespace internal
-
-// Initializes Google Mock. This must be called before running the
-// tests. In particular, it parses a command line for the flags that
-// Google Mock recognizes. Whenever a Google Mock flag is seen, it is
-// removed from argv, and *argc is decremented.
-//
-// No value is returned. Instead, the Google Mock flag variables are
-// updated.
-//
-// Since Google Test is needed for Google Mock to work, this function
-// also initializes Google Test and parses its flags, if that hasn't
-// been done.
-GTEST_API_ void InitGoogleMock(int* argc, char** argv) {
- internal::InitGoogleMockImpl(argc, argv);
-}
-
-// This overloaded version can be used in Windows programs compiled in
-// UNICODE mode.
-GTEST_API_ void InitGoogleMock(int* argc, wchar_t** argv) {
- internal::InitGoogleMockImpl(argc, argv);
-}
-
+ // Yes. Shift the remainder of the argv list left by one. Note
+ // that argv has (*argc + 1) elements, the last one always being
+ // NULL. The following loop moves the trailing NULL element as
+ // well.
+ for (int j = i; j != *argc; j++) {
+ argv[j] = argv[j + 1];
+ }
+
+ // Decrements the argument count.
+ (*argc)--;
+
+ // We also need to decrement the iterator as we just removed
+ // an element.
+ i--;
+ }
+ }
+}
+
+} // namespace internal
+
+// Initializes Google Mock. This must be called before running the
+// tests. In particular, it parses a command line for the flags that
+// Google Mock recognizes. Whenever a Google Mock flag is seen, it is
+// removed from argv, and *argc is decremented.
+//
+// No value is returned. Instead, the Google Mock flag variables are
+// updated.
+//
+// Since Google Test is needed for Google Mock to work, this function
+// also initializes Google Test and parses its flags, if that hasn't
+// been done.
+GTEST_API_ void InitGoogleMock(int* argc, char** argv) {
+ internal::InitGoogleMockImpl(argc, argv);
+}
+
+// This overloaded version can be used in Windows programs compiled in
+// UNICODE mode.
+GTEST_API_ void InitGoogleMock(int* argc, wchar_t** argv) {
+ internal::InitGoogleMockImpl(argc, argv);
+}
+
// This overloaded version can be used on Arduino/embedded platforms where
// there is no argc/argv.
GTEST_API_ void InitGoogleMock() {
@@ -210,4 +210,4 @@ GTEST_API_ void InitGoogleMock() {
internal::InitGoogleMockImpl(&argc, argv);
}
-} // namespace testing
+} // namespace testing
diff --git a/contrib/restricted/googletest/googlemock/src/gmock_main.cc b/contrib/restricted/googletest/googlemock/src/gmock_main.cc
index 76ea4111f5..18c500f663 100644
--- a/contrib/restricted/googletest/googlemock/src/gmock_main.cc
+++ b/contrib/restricted/googletest/googlemock/src/gmock_main.cc
@@ -1,37 +1,37 @@
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+#include <iostream>
+#include "gmock/gmock.h"
+#include "gtest/gtest.h"
-#include <iostream>
-#include "gmock/gmock.h"
-#include "gtest/gtest.h"
-
#if GTEST_OS_ESP8266 || GTEST_OS_ESP32
#if GTEST_OS_ESP8266
extern "C" {
@@ -49,24 +49,24 @@ void loop() { RUN_ALL_TESTS(); }
#else
-// MS C++ compiler/linker has a bug on Windows (not on Windows CE), which
-// causes a link error when _tmain is defined in a static library and UNICODE
-// is enabled. For this reason instead of _tmain, main function is used on
-// Windows. See the following link to track the current status of this bug:
+// MS C++ compiler/linker has a bug on Windows (not on Windows CE), which
+// causes a link error when _tmain is defined in a static library and UNICODE
+// is enabled. For this reason instead of _tmain, main function is used on
+// Windows. See the following link to track the current status of this bug:
// https://web.archive.org/web/20170912203238/connect.microsoft.com/VisualStudio/feedback/details/394464/wmain-link-error-in-the-static-library
// // NOLINT
-#if GTEST_OS_WINDOWS_MOBILE
-# include <tchar.h> // NOLINT
-
-GTEST_API_ int _tmain(int argc, TCHAR** argv) {
-#else
-GTEST_API_ int main(int argc, char** argv) {
-#endif // GTEST_OS_WINDOWS_MOBILE
- std::cout << "Running main() from gmock_main.cc\n";
- // Since Google Mock depends on Google Test, InitGoogleMock() is
- // also responsible for initializing Google Test. Therefore there's
- // no need for calling testing::InitGoogleTest() separately.
- testing::InitGoogleMock(&argc, argv);
- return RUN_ALL_TESTS();
-}
+#if GTEST_OS_WINDOWS_MOBILE
+# include <tchar.h> // NOLINT
+
+GTEST_API_ int _tmain(int argc, TCHAR** argv) {
+#else
+GTEST_API_ int main(int argc, char** argv) {
+#endif // GTEST_OS_WINDOWS_MOBILE
+ std::cout << "Running main() from gmock_main.cc\n";
+ // Since Google Mock depends on Google Test, InitGoogleMock() is
+ // also responsible for initializing Google Test. Therefore there's
+ // no need for calling testing::InitGoogleTest() separately.
+ testing::InitGoogleMock(&argc, argv);
+ return RUN_ALL_TESTS();
+}
#endif
diff --git a/contrib/restricted/googletest/googlemock/ya.make b/contrib/restricted/googletest/googlemock/ya.make
index ac2fa911c0..38649ba5fc 100644
--- a/contrib/restricted/googletest/googlemock/ya.make
+++ b/contrib/restricted/googletest/googlemock/ya.make
@@ -2,22 +2,22 @@
LIBRARY()
-OWNER(
- somov
- g:cpp-contrib
-)
-
-LICENSE(
- Apache-2.0 AND
- BSD-3-Clause
-)
-
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
-PEERDIR(
+OWNER(
+ somov
+ g:cpp-contrib
+)
+
+LICENSE(
+ Apache-2.0 AND
+ BSD-3-Clause
+)
+
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
+PEERDIR(
contrib/restricted/googletest/googletest
-)
-
+)
+
ADDINCL(
GLOBAL contrib/restricted/googletest/googlemock/include
GLOBAL contrib/restricted/googletest/googletest/include
diff --git a/contrib/restricted/googletest/googletest/.yandex_meta/licenses.list.txt b/contrib/restricted/googletest/googletest/.yandex_meta/licenses.list.txt
index 705be9b187..10d48733b2 100644
--- a/contrib/restricted/googletest/googletest/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/googletest/googletest/.yandex_meta/licenses.list.txt
@@ -1,149 +1,149 @@
-====================BSD-3-Clause====================
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-====================BSD-3-Clause====================
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
- * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-====================COPYRIGHT====================
-// Copyright 2005, Google Inc.
-// All rights reserved.
-
-
-====================COPYRIGHT====================
-// Copyright 2006, Google Inc.
-// All rights reserved.
-
-
-====================COPYRIGHT====================
-// Copyright 2007, Google Inc.
-// All rights reserved.
-
-
-====================COPYRIGHT====================
-// Copyright 2008 Google Inc.
-// All Rights Reserved.
-
-
-====================COPYRIGHT====================
-// Copyright 2015, Google Inc.
-// All rights reserved.
-
-
-====================COPYRIGHT====================
-Copyright 2008, Google Inc.
-All rights reserved.
-
-
-====================File: CONTRIBUTORS====================
-# This file contains a list of people who've made non-trivial
-# contribution to the Google C++ Testing Framework project. People
-# who commit code to the project are encouraged to add their names
-# here. Please keep the list sorted by first names.
-
-Ajay Joshi <jaj@google.com>
-Balázs Dán <balazs.dan@gmail.com>
-Benoit Sigoure <tsuna@google.com>
-Bharat Mediratta <bharat@menalto.com>
-Bogdan Piloca <boo@google.com>
-Chandler Carruth <chandlerc@google.com>
-Chris Prince <cprince@google.com>
-Chris Taylor <taylorc@google.com>
-Dan Egnor <egnor@google.com>
-Dave MacLachlan <dmaclach@gmail.com>
-David Anderson <danderson@google.com>
-Dean Sturtevant
-Eric Roman <eroman@chromium.org>
-Gene Volovich <gv@cite.com>
-Hady Zalek <hady.zalek@gmail.com>
-Hal Burch <gmock@hburch.com>
-Jeffrey Yasskin <jyasskin@google.com>
-Jim Keller <jimkeller@google.com>
-Joe Walnes <joe@truemesh.com>
-Jon Wray <jwray@google.com>
-Jói Sigurðsson <joi@google.com>
-Keir Mierle <mierle@gmail.com>
-Keith Ray <keith.ray@gmail.com>
-Kenton Varda <kenton@google.com>
-Kostya Serebryany <kcc@google.com>
-Krystian Kuzniarek <krystian.kuzniarek@gmail.com>
-Lev Makhlis
-Manuel Klimek <klimek@google.com>
-Mario Tanev <radix@google.com>
-Mark Paskin
-Markus Heule <markus.heule@gmail.com>
-Matthew Simmons <simmonmt@acm.org>
-Mika Raento <mikie@iki.fi>
-Mike Bland <mbland@google.com>
-Miklós Fazekas <mfazekas@szemafor.com>
-Neal Norwitz <nnorwitz@gmail.com>
-Nermin Ozkiranartli <nermin@google.com>
-Owen Carlsen <ocarlsen@google.com>
-Paneendra Ba <paneendra@google.com>
-Pasi Valminen <pasi.valminen@gmail.com>
-Patrick Hanna <phanna@google.com>
-Patrick Riley <pfr@google.com>
-Paul Menage <menage@google.com>
-Peter Kaminski <piotrk@google.com>
-Piotr Kaminski <piotrk@google.com>
-Preston Jackson <preston.a.jackson@gmail.com>
-Rainer Klaffenboeck <rainer.klaffenboeck@dynatrace.com>
-Russ Cox <rsc@google.com>
-Russ Rufer <russ@pentad.com>
-Sean Mcafee <eefacm@gmail.com>
-Sigurður Ásgeirsson <siggi@google.com>
-Sverre Sundsdal <sundsdal@gmail.com>
-Takeshi Yoshino <tyoshino@google.com>
-Tracy Bialik <tracy@pentad.com>
-Vadim Berman <vadimb@google.com>
-Vlad Losev <vladl@google.com>
-Wolfgang Klier <wklier@google.com>
-Zhanyong Wan <wan@google.com>
+====================BSD-3-Clause====================
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+====================BSD-3-Clause====================
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+ * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+====================COPYRIGHT====================
+// Copyright 2005, Google Inc.
+// All rights reserved.
+
+
+====================COPYRIGHT====================
+// Copyright 2006, Google Inc.
+// All rights reserved.
+
+
+====================COPYRIGHT====================
+// Copyright 2007, Google Inc.
+// All rights reserved.
+
+
+====================COPYRIGHT====================
+// Copyright 2008 Google Inc.
+// All Rights Reserved.
+
+
+====================COPYRIGHT====================
+// Copyright 2015, Google Inc.
+// All rights reserved.
+
+
+====================COPYRIGHT====================
+Copyright 2008, Google Inc.
+All rights reserved.
+
+
+====================File: CONTRIBUTORS====================
+# This file contains a list of people who've made non-trivial
+# contribution to the Google C++ Testing Framework project. People
+# who commit code to the project are encouraged to add their names
+# here. Please keep the list sorted by first names.
+
+Ajay Joshi <jaj@google.com>
+Balázs Dán <balazs.dan@gmail.com>
+Benoit Sigoure <tsuna@google.com>
+Bharat Mediratta <bharat@menalto.com>
+Bogdan Piloca <boo@google.com>
+Chandler Carruth <chandlerc@google.com>
+Chris Prince <cprince@google.com>
+Chris Taylor <taylorc@google.com>
+Dan Egnor <egnor@google.com>
+Dave MacLachlan <dmaclach@gmail.com>
+David Anderson <danderson@google.com>
+Dean Sturtevant
+Eric Roman <eroman@chromium.org>
+Gene Volovich <gv@cite.com>
+Hady Zalek <hady.zalek@gmail.com>
+Hal Burch <gmock@hburch.com>
+Jeffrey Yasskin <jyasskin@google.com>
+Jim Keller <jimkeller@google.com>
+Joe Walnes <joe@truemesh.com>
+Jon Wray <jwray@google.com>
+Jói Sigurðsson <joi@google.com>
+Keir Mierle <mierle@gmail.com>
+Keith Ray <keith.ray@gmail.com>
+Kenton Varda <kenton@google.com>
+Kostya Serebryany <kcc@google.com>
+Krystian Kuzniarek <krystian.kuzniarek@gmail.com>
+Lev Makhlis
+Manuel Klimek <klimek@google.com>
+Mario Tanev <radix@google.com>
+Mark Paskin
+Markus Heule <markus.heule@gmail.com>
+Matthew Simmons <simmonmt@acm.org>
+Mika Raento <mikie@iki.fi>
+Mike Bland <mbland@google.com>
+Miklós Fazekas <mfazekas@szemafor.com>
+Neal Norwitz <nnorwitz@gmail.com>
+Nermin Ozkiranartli <nermin@google.com>
+Owen Carlsen <ocarlsen@google.com>
+Paneendra Ba <paneendra@google.com>
+Pasi Valminen <pasi.valminen@gmail.com>
+Patrick Hanna <phanna@google.com>
+Patrick Riley <pfr@google.com>
+Paul Menage <menage@google.com>
+Peter Kaminski <piotrk@google.com>
+Piotr Kaminski <piotrk@google.com>
+Preston Jackson <preston.a.jackson@gmail.com>
+Rainer Klaffenboeck <rainer.klaffenboeck@dynatrace.com>
+Russ Cox <rsc@google.com>
+Russ Rufer <russ@pentad.com>
+Sean Mcafee <eefacm@gmail.com>
+Sigurður Ásgeirsson <siggi@google.com>
+Sverre Sundsdal <sundsdal@gmail.com>
+Takeshi Yoshino <tyoshino@google.com>
+Tracy Bialik <tracy@pentad.com>
+Vadim Berman <vadimb@google.com>
+Vlad Losev <vladl@google.com>
+Wolfgang Klier <wklier@google.com>
+Zhanyong Wan <wan@google.com>
diff --git a/contrib/restricted/googletest/googletest/gtest_main/.yandex_meta/licenses.list.txt b/contrib/restricted/googletest/googletest/gtest_main/.yandex_meta/licenses.list.txt
index 88dff17f10..c2e41973c1 100644
--- a/contrib/restricted/googletest/googletest/gtest_main/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/googletest/googletest/gtest_main/.yandex_meta/licenses.list.txt
@@ -1,96 +1,96 @@
-====================BSD-3-Clause====================
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
- * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-====================COPYRIGHT====================
-Copyright 2008, Google Inc.
-All rights reserved.
-
-
-====================File: CONTRIBUTORS====================
-# This file contains a list of people who've made non-trivial
-# contribution to the Google C++ Testing Framework project. People
-# who commit code to the project are encouraged to add their names
-# here. Please keep the list sorted by first names.
-
-Ajay Joshi <jaj@google.com>
-Balázs Dán <balazs.dan@gmail.com>
-Benoit Sigoure <tsuna@google.com>
-Bharat Mediratta <bharat@menalto.com>
-Bogdan Piloca <boo@google.com>
-Chandler Carruth <chandlerc@google.com>
-Chris Prince <cprince@google.com>
-Chris Taylor <taylorc@google.com>
-Dan Egnor <egnor@google.com>
-Dave MacLachlan <dmaclach@gmail.com>
-David Anderson <danderson@google.com>
-Dean Sturtevant
-Eric Roman <eroman@chromium.org>
-Gene Volovich <gv@cite.com>
-Hady Zalek <hady.zalek@gmail.com>
-Hal Burch <gmock@hburch.com>
-Jeffrey Yasskin <jyasskin@google.com>
-Jim Keller <jimkeller@google.com>
-Joe Walnes <joe@truemesh.com>
-Jon Wray <jwray@google.com>
-Jói Sigurðsson <joi@google.com>
-Keir Mierle <mierle@gmail.com>
-Keith Ray <keith.ray@gmail.com>
-Kenton Varda <kenton@google.com>
-Kostya Serebryany <kcc@google.com>
-Krystian Kuzniarek <krystian.kuzniarek@gmail.com>
-Lev Makhlis
-Manuel Klimek <klimek@google.com>
-Mario Tanev <radix@google.com>
-Mark Paskin
-Markus Heule <markus.heule@gmail.com>
-Matthew Simmons <simmonmt@acm.org>
-Mika Raento <mikie@iki.fi>
-Mike Bland <mbland@google.com>
-Miklós Fazekas <mfazekas@szemafor.com>
-Neal Norwitz <nnorwitz@gmail.com>
-Nermin Ozkiranartli <nermin@google.com>
-Owen Carlsen <ocarlsen@google.com>
-Paneendra Ba <paneendra@google.com>
-Pasi Valminen <pasi.valminen@gmail.com>
-Patrick Hanna <phanna@google.com>
-Patrick Riley <pfr@google.com>
-Paul Menage <menage@google.com>
-Peter Kaminski <piotrk@google.com>
-Piotr Kaminski <piotrk@google.com>
-Preston Jackson <preston.a.jackson@gmail.com>
-Rainer Klaffenboeck <rainer.klaffenboeck@dynatrace.com>
-Russ Cox <rsc@google.com>
-Russ Rufer <russ@pentad.com>
-Sean Mcafee <eefacm@gmail.com>
-Sigurður Ásgeirsson <siggi@google.com>
-Sverre Sundsdal <sundsdal@gmail.com>
-Takeshi Yoshino <tyoshino@google.com>
-Tracy Bialik <tracy@pentad.com>
-Vadim Berman <vadimb@google.com>
-Vlad Losev <vladl@google.com>
-Wolfgang Klier <wklier@google.com>
-Zhanyong Wan <wan@google.com>
+====================BSD-3-Clause====================
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+ * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+====================COPYRIGHT====================
+Copyright 2008, Google Inc.
+All rights reserved.
+
+
+====================File: CONTRIBUTORS====================
+# This file contains a list of people who've made non-trivial
+# contribution to the Google C++ Testing Framework project. People
+# who commit code to the project are encouraged to add their names
+# here. Please keep the list sorted by first names.
+
+Ajay Joshi <jaj@google.com>
+Balázs Dán <balazs.dan@gmail.com>
+Benoit Sigoure <tsuna@google.com>
+Bharat Mediratta <bharat@menalto.com>
+Bogdan Piloca <boo@google.com>
+Chandler Carruth <chandlerc@google.com>
+Chris Prince <cprince@google.com>
+Chris Taylor <taylorc@google.com>
+Dan Egnor <egnor@google.com>
+Dave MacLachlan <dmaclach@gmail.com>
+David Anderson <danderson@google.com>
+Dean Sturtevant
+Eric Roman <eroman@chromium.org>
+Gene Volovich <gv@cite.com>
+Hady Zalek <hady.zalek@gmail.com>
+Hal Burch <gmock@hburch.com>
+Jeffrey Yasskin <jyasskin@google.com>
+Jim Keller <jimkeller@google.com>
+Joe Walnes <joe@truemesh.com>
+Jon Wray <jwray@google.com>
+Jói Sigurðsson <joi@google.com>
+Keir Mierle <mierle@gmail.com>
+Keith Ray <keith.ray@gmail.com>
+Kenton Varda <kenton@google.com>
+Kostya Serebryany <kcc@google.com>
+Krystian Kuzniarek <krystian.kuzniarek@gmail.com>
+Lev Makhlis
+Manuel Klimek <klimek@google.com>
+Mario Tanev <radix@google.com>
+Mark Paskin
+Markus Heule <markus.heule@gmail.com>
+Matthew Simmons <simmonmt@acm.org>
+Mika Raento <mikie@iki.fi>
+Mike Bland <mbland@google.com>
+Miklós Fazekas <mfazekas@szemafor.com>
+Neal Norwitz <nnorwitz@gmail.com>
+Nermin Ozkiranartli <nermin@google.com>
+Owen Carlsen <ocarlsen@google.com>
+Paneendra Ba <paneendra@google.com>
+Pasi Valminen <pasi.valminen@gmail.com>
+Patrick Hanna <phanna@google.com>
+Patrick Riley <pfr@google.com>
+Paul Menage <menage@google.com>
+Peter Kaminski <piotrk@google.com>
+Piotr Kaminski <piotrk@google.com>
+Preston Jackson <preston.a.jackson@gmail.com>
+Rainer Klaffenboeck <rainer.klaffenboeck@dynatrace.com>
+Russ Cox <rsc@google.com>
+Russ Rufer <russ@pentad.com>
+Sean Mcafee <eefacm@gmail.com>
+Sigurður Ásgeirsson <siggi@google.com>
+Sverre Sundsdal <sundsdal@gmail.com>
+Takeshi Yoshino <tyoshino@google.com>
+Tracy Bialik <tracy@pentad.com>
+Vadim Berman <vadimb@google.com>
+Vlad Losev <vladl@google.com>
+Wolfgang Klier <wklier@google.com>
+Zhanyong Wan <wan@google.com>
diff --git a/contrib/restricted/googletest/googletest/gtest_main/ya.make b/contrib/restricted/googletest/googletest/gtest_main/ya.make
index c3478e52b2..98edf7262a 100644
--- a/contrib/restricted/googletest/googletest/gtest_main/ya.make
+++ b/contrib/restricted/googletest/googletest/gtest_main/ya.make
@@ -2,15 +2,15 @@
LIBRARY()
-OWNER(
- somov
- g:cpp-contrib
-)
+OWNER(
+ somov
+ g:cpp-contrib
+)
LICENSE(BSD-3-Clause)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
PEERDIR(
contrib/restricted/googletest/googletest
)
diff --git a/contrib/restricted/googletest/googletest/include/gtest/gtest-death-test.h b/contrib/restricted/googletest/googletest/include/gtest/gtest-death-test.h
index 3fe2826b16..9b4d4d1337 100644
--- a/contrib/restricted/googletest/googletest/include/gtest/gtest-death-test.h
+++ b/contrib/restricted/googletest/googletest/include/gtest/gtest-death-test.h
@@ -1,281 +1,281 @@
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
+//
// The Google C++ Testing and Mocking Framework (Google Test)
-//
-// This header file defines the public API for death tests. It is
-// #included by gtest.h so a user doesn't need to include this
-// directly.
+//
+// This header file defines the public API for death tests. It is
+// #included by gtest.h so a user doesn't need to include this
+// directly.
// GOOGLETEST_CM0001 DO NOT DELETE
-
+
#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
#define GOOGLETEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
-
-#include "gtest/internal/gtest-death-test-internal.h"
-
-namespace testing {
-
-// This flag controls the style of death tests. Valid values are "threadsafe",
-// meaning that the death test child process will re-execute the test binary
-// from the start, running only a single death test, or "fast",
-// meaning that the child process will execute the test logic immediately
-// after forking.
-GTEST_DECLARE_string_(death_test_style);
-
-#if GTEST_HAS_DEATH_TEST
-
-namespace internal {
-
-// Returns a Boolean value indicating whether the caller is currently
-// executing in the context of the death test child process. Tools such as
-// Valgrind heap checkers may need this to modify their behavior in death
-// tests. IMPORTANT: This is an internal utility. Using it may break the
-// implementation of death tests. User code MUST NOT use it.
-GTEST_API_ bool InDeathTestChild();
-
-} // namespace internal
-
-// The following macros are useful for writing death tests.
-
-// Here's what happens when an ASSERT_DEATH* or EXPECT_DEATH* is
-// executed:
-//
-// 1. It generates a warning if there is more than one active
-// thread. This is because it's safe to fork() or clone() only
-// when there is a single thread.
-//
-// 2. The parent process clone()s a sub-process and runs the death
-// test in it; the sub-process exits with code 0 at the end of the
-// death test, if it hasn't exited already.
-//
-// 3. The parent process waits for the sub-process to terminate.
-//
-// 4. The parent process checks the exit code and error message of
-// the sub-process.
-//
-// Examples:
-//
-// ASSERT_DEATH(server.SendMessage(56, "Hello"), "Invalid port number");
-// for (int i = 0; i < 5; i++) {
-// EXPECT_DEATH(server.ProcessRequest(i),
-// "Invalid request .* in ProcessRequest()")
-// << "Failed to die on request " << i;
-// }
-//
-// ASSERT_EXIT(server.ExitNow(), ::testing::ExitedWithCode(0), "Exiting");
-//
-// bool KilledBySIGHUP(int exit_code) {
-// return WIFSIGNALED(exit_code) && WTERMSIG(exit_code) == SIGHUP;
-// }
-//
-// ASSERT_EXIT(client.HangUpServer(), KilledBySIGHUP, "Hanging up!");
-//
+
+#include "gtest/internal/gtest-death-test-internal.h"
+
+namespace testing {
+
+// This flag controls the style of death tests. Valid values are "threadsafe",
+// meaning that the death test child process will re-execute the test binary
+// from the start, running only a single death test, or "fast",
+// meaning that the child process will execute the test logic immediately
+// after forking.
+GTEST_DECLARE_string_(death_test_style);
+
+#if GTEST_HAS_DEATH_TEST
+
+namespace internal {
+
+// Returns a Boolean value indicating whether the caller is currently
+// executing in the context of the death test child process. Tools such as
+// Valgrind heap checkers may need this to modify their behavior in death
+// tests. IMPORTANT: This is an internal utility. Using it may break the
+// implementation of death tests. User code MUST NOT use it.
+GTEST_API_ bool InDeathTestChild();
+
+} // namespace internal
+
+// The following macros are useful for writing death tests.
+
+// Here's what happens when an ASSERT_DEATH* or EXPECT_DEATH* is
+// executed:
+//
+// 1. It generates a warning if there is more than one active
+// thread. This is because it's safe to fork() or clone() only
+// when there is a single thread.
+//
+// 2. The parent process clone()s a sub-process and runs the death
+// test in it; the sub-process exits with code 0 at the end of the
+// death test, if it hasn't exited already.
+//
+// 3. The parent process waits for the sub-process to terminate.
+//
+// 4. The parent process checks the exit code and error message of
+// the sub-process.
+//
+// Examples:
+//
+// ASSERT_DEATH(server.SendMessage(56, "Hello"), "Invalid port number");
+// for (int i = 0; i < 5; i++) {
+// EXPECT_DEATH(server.ProcessRequest(i),
+// "Invalid request .* in ProcessRequest()")
+// << "Failed to die on request " << i;
+// }
+//
+// ASSERT_EXIT(server.ExitNow(), ::testing::ExitedWithCode(0), "Exiting");
+//
+// bool KilledBySIGHUP(int exit_code) {
+// return WIFSIGNALED(exit_code) && WTERMSIG(exit_code) == SIGHUP;
+// }
+//
+// ASSERT_EXIT(client.HangUpServer(), KilledBySIGHUP, "Hanging up!");
+//
// The final parameter to each of these macros is a matcher applied to any data
// the sub-process wrote to stderr. For compatibility with existing tests, a
// bare string is interpreted as a regular expression matcher.
//
-// On the regular expressions used in death tests:
-//
+// On the regular expressions used in death tests:
+//
// GOOGLETEST_CM0005 DO NOT DELETE
-// On POSIX-compliant systems (*nix), we use the <regex.h> library,
-// which uses the POSIX extended regex syntax.
-//
+// On POSIX-compliant systems (*nix), we use the <regex.h> library,
+// which uses the POSIX extended regex syntax.
+//
// On other platforms (e.g. Windows or Mac), we only support a simple regex
-// syntax implemented as part of Google Test. This limited
-// implementation should be enough most of the time when writing
-// death tests; though it lacks many features you can find in PCRE
-// or POSIX extended regex syntax. For example, we don't support
-// union ("x|y"), grouping ("(xy)"), brackets ("[xy]"), and
-// repetition count ("x{5,7}"), among others.
-//
-// Below is the syntax that we do support. We chose it to be a
-// subset of both PCRE and POSIX extended regex, so it's easy to
-// learn wherever you come from. In the following: 'A' denotes a
-// literal character, period (.), or a single \\ escape sequence;
-// 'x' and 'y' denote regular expressions; 'm' and 'n' are for
-// natural numbers.
-//
-// c matches any literal character c
-// \\d matches any decimal digit
-// \\D matches any character that's not a decimal digit
-// \\f matches \f
-// \\n matches \n
-// \\r matches \r
-// \\s matches any ASCII whitespace, including \n
-// \\S matches any character that's not a whitespace
-// \\t matches \t
-// \\v matches \v
-// \\w matches any letter, _, or decimal digit
-// \\W matches any character that \\w doesn't match
-// \\c matches any literal character c, which must be a punctuation
-// . matches any single character except \n
-// A? matches 0 or 1 occurrences of A
-// A* matches 0 or many occurrences of A
-// A+ matches 1 or many occurrences of A
-// ^ matches the beginning of a string (not that of each line)
-// $ matches the end of a string (not that of each line)
-// xy matches x followed by y
-//
-// If you accidentally use PCRE or POSIX extended regex features
-// not implemented by us, you will get a run-time failure. In that
-// case, please try to rewrite your regular expression within the
-// above syntax.
-//
-// This implementation is *not* meant to be as highly tuned or robust
-// as a compiled regex library, but should perform well enough for a
-// death test, which already incurs significant overhead by launching
-// a child process.
-//
-// Known caveats:
-//
-// A "threadsafe" style death test obtains the path to the test
-// program from argv[0] and re-executes it in the sub-process. For
-// simplicity, the current implementation doesn't search the PATH
-// when launching the sub-process. This means that the user must
-// invoke the test program via a path that contains at least one
-// path separator (e.g. path/to/foo_test and
-// /absolute/path/to/bar_test are fine, but foo_test is not). This
-// is rarely a problem as people usually don't put the test binary
-// directory in PATH.
-//
-
+// syntax implemented as part of Google Test. This limited
+// implementation should be enough most of the time when writing
+// death tests; though it lacks many features you can find in PCRE
+// or POSIX extended regex syntax. For example, we don't support
+// union ("x|y"), grouping ("(xy)"), brackets ("[xy]"), and
+// repetition count ("x{5,7}"), among others.
+//
+// Below is the syntax that we do support. We chose it to be a
+// subset of both PCRE and POSIX extended regex, so it's easy to
+// learn wherever you come from. In the following: 'A' denotes a
+// literal character, period (.), or a single \\ escape sequence;
+// 'x' and 'y' denote regular expressions; 'm' and 'n' are for
+// natural numbers.
+//
+// c matches any literal character c
+// \\d matches any decimal digit
+// \\D matches any character that's not a decimal digit
+// \\f matches \f
+// \\n matches \n
+// \\r matches \r
+// \\s matches any ASCII whitespace, including \n
+// \\S matches any character that's not a whitespace
+// \\t matches \t
+// \\v matches \v
+// \\w matches any letter, _, or decimal digit
+// \\W matches any character that \\w doesn't match
+// \\c matches any literal character c, which must be a punctuation
+// . matches any single character except \n
+// A? matches 0 or 1 occurrences of A
+// A* matches 0 or many occurrences of A
+// A+ matches 1 or many occurrences of A
+// ^ matches the beginning of a string (not that of each line)
+// $ matches the end of a string (not that of each line)
+// xy matches x followed by y
+//
+// If you accidentally use PCRE or POSIX extended regex features
+// not implemented by us, you will get a run-time failure. In that
+// case, please try to rewrite your regular expression within the
+// above syntax.
+//
+// This implementation is *not* meant to be as highly tuned or robust
+// as a compiled regex library, but should perform well enough for a
+// death test, which already incurs significant overhead by launching
+// a child process.
+//
+// Known caveats:
+//
+// A "threadsafe" style death test obtains the path to the test
+// program from argv[0] and re-executes it in the sub-process. For
+// simplicity, the current implementation doesn't search the PATH
+// when launching the sub-process. This means that the user must
+// invoke the test program via a path that contains at least one
+// path separator (e.g. path/to/foo_test and
+// /absolute/path/to/bar_test are fine, but foo_test is not). This
+// is rarely a problem as people usually don't put the test binary
+// directory in PATH.
+//
+
// Asserts that a given `statement` causes the program to exit, with an
// integer exit status that satisfies `predicate`, and emitting error output
// that matches `matcher`.
# define ASSERT_EXIT(statement, predicate, matcher) \
GTEST_DEATH_TEST_(statement, predicate, matcher, GTEST_FATAL_FAILURE_)
-
+
// Like `ASSERT_EXIT`, but continues on to successive tests in the
// test suite, if any:
# define EXPECT_EXIT(statement, predicate, matcher) \
GTEST_DEATH_TEST_(statement, predicate, matcher, GTEST_NONFATAL_FAILURE_)
-
+
// Asserts that a given `statement` causes the program to exit, either by
-// explicitly exiting with a nonzero exit code or being killed by a
+// explicitly exiting with a nonzero exit code or being killed by a
// signal, and emitting error output that matches `matcher`.
# define ASSERT_DEATH(statement, matcher) \
ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, matcher)
-
+
// Like `ASSERT_DEATH`, but continues on to successive tests in the
// test suite, if any:
# define EXPECT_DEATH(statement, matcher) \
EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, matcher)
-
-// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*:
-
-// Tests that an exit code describes a normal exit with a given exit code.
-class GTEST_API_ ExitedWithCode {
- public:
- explicit ExitedWithCode(int exit_code);
+
+// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*:
+
+// Tests that an exit code describes a normal exit with a given exit code.
+class GTEST_API_ ExitedWithCode {
+ public:
+ explicit ExitedWithCode(int exit_code);
ExitedWithCode(const ExitedWithCode&) = default;
void operator=(const ExitedWithCode& other) = delete;
- bool operator()(int exit_status) const;
- private:
- const int exit_code_;
-};
-
+ bool operator()(int exit_status) const;
+ private:
+ const int exit_code_;
+};
+
# if !GTEST_OS_WINDOWS && !GTEST_OS_FUCHSIA
-// Tests that an exit code describes an exit due to termination by a
-// given signal.
+// Tests that an exit code describes an exit due to termination by a
+// given signal.
// GOOGLETEST_CM0006 DO NOT DELETE
-class GTEST_API_ KilledBySignal {
- public:
- explicit KilledBySignal(int signum);
- bool operator()(int exit_status) const;
- private:
- const int signum_;
-};
-# endif // !GTEST_OS_WINDOWS
-
-// EXPECT_DEBUG_DEATH asserts that the given statements die in debug mode.
-// The death testing framework causes this to have interesting semantics,
-// since the sideeffects of the call are only visible in opt mode, and not
-// in debug mode.
-//
-// In practice, this can be used to test functions that utilize the
-// LOG(DFATAL) macro using the following style:
-//
-// int DieInDebugOr12(int* sideeffect) {
-// if (sideeffect) {
-// *sideeffect = 12;
-// }
-// LOG(DFATAL) << "death";
-// return 12;
-// }
-//
+class GTEST_API_ KilledBySignal {
+ public:
+ explicit KilledBySignal(int signum);
+ bool operator()(int exit_status) const;
+ private:
+ const int signum_;
+};
+# endif // !GTEST_OS_WINDOWS
+
+// EXPECT_DEBUG_DEATH asserts that the given statements die in debug mode.
+// The death testing framework causes this to have interesting semantics,
+// since the sideeffects of the call are only visible in opt mode, and not
+// in debug mode.
+//
+// In practice, this can be used to test functions that utilize the
+// LOG(DFATAL) macro using the following style:
+//
+// int DieInDebugOr12(int* sideeffect) {
+// if (sideeffect) {
+// *sideeffect = 12;
+// }
+// LOG(DFATAL) << "death";
+// return 12;
+// }
+//
// TEST(TestSuite, TestDieOr12WorksInDgbAndOpt) {
-// int sideeffect = 0;
-// // Only asserts in dbg.
-// EXPECT_DEBUG_DEATH(DieInDebugOr12(&sideeffect), "death");
-//
-// #ifdef NDEBUG
-// // opt-mode has sideeffect visible.
-// EXPECT_EQ(12, sideeffect);
-// #else
-// // dbg-mode no visible sideeffect.
-// EXPECT_EQ(0, sideeffect);
-// #endif
-// }
-//
-// This will assert that DieInDebugReturn12InOpt() crashes in debug
-// mode, usually due to a DCHECK or LOG(DFATAL), but returns the
-// appropriate fallback value (12 in this case) in opt mode. If you
-// need to test that a function has appropriate side-effects in opt
-// mode, include assertions against the side-effects. A general
-// pattern for this is:
-//
-// EXPECT_DEBUG_DEATH({
-// // Side-effects here will have an effect after this statement in
-// // opt mode, but none in debug mode.
-// EXPECT_EQ(12, DieInDebugOr12(&sideeffect));
-// }, "death");
-//
-# ifdef NDEBUG
-
-# define EXPECT_DEBUG_DEATH(statement, regex) \
- GTEST_EXECUTE_STATEMENT_(statement, regex)
-
-# define ASSERT_DEBUG_DEATH(statement, regex) \
- GTEST_EXECUTE_STATEMENT_(statement, regex)
-
-# else
-
-# define EXPECT_DEBUG_DEATH(statement, regex) \
- EXPECT_DEATH(statement, regex)
-
-# define ASSERT_DEBUG_DEATH(statement, regex) \
- ASSERT_DEATH(statement, regex)
-
-# endif // NDEBUG for EXPECT_DEBUG_DEATH
-#endif // GTEST_HAS_DEATH_TEST
-
+// int sideeffect = 0;
+// // Only asserts in dbg.
+// EXPECT_DEBUG_DEATH(DieInDebugOr12(&sideeffect), "death");
+//
+// #ifdef NDEBUG
+// // opt-mode has sideeffect visible.
+// EXPECT_EQ(12, sideeffect);
+// #else
+// // dbg-mode no visible sideeffect.
+// EXPECT_EQ(0, sideeffect);
+// #endif
+// }
+//
+// This will assert that DieInDebugReturn12InOpt() crashes in debug
+// mode, usually due to a DCHECK or LOG(DFATAL), but returns the
+// appropriate fallback value (12 in this case) in opt mode. If you
+// need to test that a function has appropriate side-effects in opt
+// mode, include assertions against the side-effects. A general
+// pattern for this is:
+//
+// EXPECT_DEBUG_DEATH({
+// // Side-effects here will have an effect after this statement in
+// // opt mode, but none in debug mode.
+// EXPECT_EQ(12, DieInDebugOr12(&sideeffect));
+// }, "death");
+//
+# ifdef NDEBUG
+
+# define EXPECT_DEBUG_DEATH(statement, regex) \
+ GTEST_EXECUTE_STATEMENT_(statement, regex)
+
+# define ASSERT_DEBUG_DEATH(statement, regex) \
+ GTEST_EXECUTE_STATEMENT_(statement, regex)
+
+# else
+
+# define EXPECT_DEBUG_DEATH(statement, regex) \
+ EXPECT_DEATH(statement, regex)
+
+# define ASSERT_DEBUG_DEATH(statement, regex) \
+ ASSERT_DEATH(statement, regex)
+
+# endif // NDEBUG for EXPECT_DEBUG_DEATH
+#endif // GTEST_HAS_DEATH_TEST
+
// This macro is used for implementing macros such as
// EXPECT_DEATH_IF_SUPPORTED and ASSERT_DEATH_IF_SUPPORTED on systems where
// death tests are not supported. Those macros must compile on such systems
@@ -324,23 +324,23 @@ class GTEST_API_ KilledBySignal {
} else \
::testing::Message()
-// EXPECT_DEATH_IF_SUPPORTED(statement, regex) and
-// ASSERT_DEATH_IF_SUPPORTED(statement, regex) expand to real death tests if
-// death tests are supported; otherwise they just issue a warning. This is
-// useful when you are combining death test assertions with normal test
-// assertions in one test.
-#if GTEST_HAS_DEATH_TEST
-# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \
- EXPECT_DEATH(statement, regex)
-# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \
- ASSERT_DEATH(statement, regex)
-#else
-# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \
+// EXPECT_DEATH_IF_SUPPORTED(statement, regex) and
+// ASSERT_DEATH_IF_SUPPORTED(statement, regex) expand to real death tests if
+// death tests are supported; otherwise they just issue a warning. This is
+// useful when you are combining death test assertions with normal test
+// assertions in one test.
+#if GTEST_HAS_DEATH_TEST
+# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \
+ EXPECT_DEATH(statement, regex)
+# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \
+ ASSERT_DEATH(statement, regex)
+#else
+# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \
GTEST_UNSUPPORTED_DEATH_TEST(statement, regex, )
-# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \
+# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \
GTEST_UNSUPPORTED_DEATH_TEST(statement, regex, return)
-#endif
-
-} // namespace testing
-
+#endif
+
+} // namespace testing
+
#endif // GOOGLETEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
diff --git a/contrib/restricted/googletest/googletest/include/gtest/gtest-message.h b/contrib/restricted/googletest/googletest/include/gtest/gtest-message.h
index c7f0058d26..becfd49fcb 100644
--- a/contrib/restricted/googletest/googletest/include/gtest/gtest-message.h
+++ b/contrib/restricted/googletest/googletest/include/gtest/gtest-message.h
@@ -1,219 +1,219 @@
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+//
// The Google C++ Testing and Mocking Framework (Google Test)
-//
-// This header file defines the Message class.
-//
-// IMPORTANT NOTE: Due to limitation of the C++ language, we have to
-// leave some internal implementation details in this header file.
-// They are clearly marked by comments like this:
-//
-// // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-//
-// Such code is NOT meant to be used by a user directly, and is subject
-// to CHANGE WITHOUT NOTICE. Therefore DO NOT DEPEND ON IT in a user
-// program!
-
+//
+// This header file defines the Message class.
+//
+// IMPORTANT NOTE: Due to limitation of the C++ language, we have to
+// leave some internal implementation details in this header file.
+// They are clearly marked by comments like this:
+//
+// // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+//
+// Such code is NOT meant to be used by a user directly, and is subject
+// to CHANGE WITHOUT NOTICE. Therefore DO NOT DEPEND ON IT in a user
+// program!
+
// GOOGLETEST_CM0001 DO NOT DELETE
#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
#define GOOGLETEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
-
-#include <limits>
+
+#include <limits>
#include <memory>
#include <sstream>
-
-#include "gtest/internal/gtest-port.h"
-
+
+#include "gtest/internal/gtest-port.h"
+
GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
/* class A needs to have dll-interface to be used by clients of class B */)
-// Ensures that there is at least one operator<< in the global namespace.
-// See Message& operator<<(...) below for why.
-void operator<<(const testing::internal::Secret&, int);
-
-namespace testing {
-
-// The Message class works like an ostream repeater.
-//
-// Typical usage:
-//
-// 1. You stream a bunch of values to a Message object.
-// It will remember the text in a stringstream.
-// 2. Then you stream the Message object to an ostream.
-// This causes the text in the Message to be streamed
-// to the ostream.
-//
-// For example;
-//
-// testing::Message foo;
-// foo << 1 << " != " << 2;
-// std::cout << foo;
-//
-// will print "1 != 2".
-//
-// Message is not intended to be inherited from. In particular, its
-// destructor is not virtual.
-//
-// Note that stringstream behaves differently in gcc and in MSVC. You
-// can stream a NULL char pointer to it in the former, but not in the
-// latter (it causes an access violation if you do). The Message
-// class hides this difference by treating a NULL char pointer as
-// "(null)".
-class GTEST_API_ Message {
- private:
- // The type of basic IO manipulators (endl, ends, and flush) for
- // narrow streams.
- typedef std::ostream& (*BasicNarrowIoManip)(std::ostream&);
-
- public:
- // Constructs an empty Message.
- Message();
-
- // Copy constructor.
- Message(const Message& msg) : ss_(new ::std::stringstream) { // NOLINT
- *ss_ << msg.GetString();
- }
-
- // Constructs a Message from a C-string.
- explicit Message(const char* str) : ss_(new ::std::stringstream) {
- *ss_ << str;
- }
-
- // Streams a non-pointer value to this object.
- template <typename T>
- inline Message& operator <<(const T& val) {
- // Some libraries overload << for STL containers. These
- // overloads are defined in the global namespace instead of ::std.
- //
- // C++'s symbol lookup rule (i.e. Koenig lookup) says that these
- // overloads are visible in either the std namespace or the global
- // namespace, but not other namespaces, including the testing
- // namespace which Google Test's Message class is in.
- //
- // To allow STL containers (and other types that has a << operator
- // defined in the global namespace) to be used in Google Test
- // assertions, testing::Message must access the custom << operator
- // from the global namespace. With this using declaration,
- // overloads of << defined in the global namespace and those
- // visible via Koenig lookup are both exposed in this function.
- using ::operator <<;
- *ss_ << val;
- return *this;
- }
-
- // Streams a pointer value to this object.
- //
- // This function is an overload of the previous one. When you
- // stream a pointer to a Message, this definition will be used as it
- // is more specialized. (The C++ Standard, section
- // [temp.func.order].) If you stream a non-pointer, then the
- // previous definition will be used.
- //
- // The reason for this overload is that streaming a NULL pointer to
- // ostream is undefined behavior. Depending on the compiler, you
- // may get "0", "(nil)", "(null)", or an access violation. To
- // ensure consistent result across compilers, we always treat NULL
- // as "(null)".
- template <typename T>
- inline Message& operator <<(T* const& pointer) { // NOLINT
+// Ensures that there is at least one operator<< in the global namespace.
+// See Message& operator<<(...) below for why.
+void operator<<(const testing::internal::Secret&, int);
+
+namespace testing {
+
+// The Message class works like an ostream repeater.
+//
+// Typical usage:
+//
+// 1. You stream a bunch of values to a Message object.
+// It will remember the text in a stringstream.
+// 2. Then you stream the Message object to an ostream.
+// This causes the text in the Message to be streamed
+// to the ostream.
+//
+// For example;
+//
+// testing::Message foo;
+// foo << 1 << " != " << 2;
+// std::cout << foo;
+//
+// will print "1 != 2".
+//
+// Message is not intended to be inherited from. In particular, its
+// destructor is not virtual.
+//
+// Note that stringstream behaves differently in gcc and in MSVC. You
+// can stream a NULL char pointer to it in the former, but not in the
+// latter (it causes an access violation if you do). The Message
+// class hides this difference by treating a NULL char pointer as
+// "(null)".
+class GTEST_API_ Message {
+ private:
+ // The type of basic IO manipulators (endl, ends, and flush) for
+ // narrow streams.
+ typedef std::ostream& (*BasicNarrowIoManip)(std::ostream&);
+
+ public:
+ // Constructs an empty Message.
+ Message();
+
+ // Copy constructor.
+ Message(const Message& msg) : ss_(new ::std::stringstream) { // NOLINT
+ *ss_ << msg.GetString();
+ }
+
+ // Constructs a Message from a C-string.
+ explicit Message(const char* str) : ss_(new ::std::stringstream) {
+ *ss_ << str;
+ }
+
+ // Streams a non-pointer value to this object.
+ template <typename T>
+ inline Message& operator <<(const T& val) {
+ // Some libraries overload << for STL containers. These
+ // overloads are defined in the global namespace instead of ::std.
+ //
+ // C++'s symbol lookup rule (i.e. Koenig lookup) says that these
+ // overloads are visible in either the std namespace or the global
+ // namespace, but not other namespaces, including the testing
+ // namespace which Google Test's Message class is in.
+ //
+ // To allow STL containers (and other types that has a << operator
+ // defined in the global namespace) to be used in Google Test
+ // assertions, testing::Message must access the custom << operator
+ // from the global namespace. With this using declaration,
+ // overloads of << defined in the global namespace and those
+ // visible via Koenig lookup are both exposed in this function.
+ using ::operator <<;
+ *ss_ << val;
+ return *this;
+ }
+
+ // Streams a pointer value to this object.
+ //
+ // This function is an overload of the previous one. When you
+ // stream a pointer to a Message, this definition will be used as it
+ // is more specialized. (The C++ Standard, section
+ // [temp.func.order].) If you stream a non-pointer, then the
+ // previous definition will be used.
+ //
+ // The reason for this overload is that streaming a NULL pointer to
+ // ostream is undefined behavior. Depending on the compiler, you
+ // may get "0", "(nil)", "(null)", or an access violation. To
+ // ensure consistent result across compilers, we always treat NULL
+ // as "(null)".
+ template <typename T>
+ inline Message& operator <<(T* const& pointer) { // NOLINT
if (pointer == nullptr) {
- *ss_ << "(null)";
- } else {
- *ss_ << pointer;
- }
- return *this;
- }
-
- // Since the basic IO manipulators are overloaded for both narrow
- // and wide streams, we have to provide this specialized definition
- // of operator <<, even though its body is the same as the
- // templatized version above. Without this definition, streaming
- // endl or other basic IO manipulators to Message will confuse the
- // compiler.
- Message& operator <<(BasicNarrowIoManip val) {
- *ss_ << val;
- return *this;
- }
-
- // Instead of 1/0, we want to see true/false for bool values.
- Message& operator <<(bool b) {
- return *this << (b ? "true" : "false");
- }
-
- // These two overloads allow streaming a wide C string to a Message
- // using the UTF-8 encoding.
- Message& operator <<(const wchar_t* wide_c_str);
- Message& operator <<(wchar_t* wide_c_str);
-
-#if GTEST_HAS_STD_WSTRING
- // Converts the given wide string to a narrow string using the UTF-8
- // encoding, and streams the result to this Message object.
- Message& operator <<(const ::std::wstring& wstr);
-#endif // GTEST_HAS_STD_WSTRING
-
- // Gets the text streamed to this object so far as an std::string.
- // Each '\0' character in the buffer is replaced with "\\0".
- //
- // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
- std::string GetString() const;
-
- private:
- // We'll hold the text streamed to this object here.
+ *ss_ << "(null)";
+ } else {
+ *ss_ << pointer;
+ }
+ return *this;
+ }
+
+ // Since the basic IO manipulators are overloaded for both narrow
+ // and wide streams, we have to provide this specialized definition
+ // of operator <<, even though its body is the same as the
+ // templatized version above. Without this definition, streaming
+ // endl or other basic IO manipulators to Message will confuse the
+ // compiler.
+ Message& operator <<(BasicNarrowIoManip val) {
+ *ss_ << val;
+ return *this;
+ }
+
+ // Instead of 1/0, we want to see true/false for bool values.
+ Message& operator <<(bool b) {
+ return *this << (b ? "true" : "false");
+ }
+
+ // These two overloads allow streaming a wide C string to a Message
+ // using the UTF-8 encoding.
+ Message& operator <<(const wchar_t* wide_c_str);
+ Message& operator <<(wchar_t* wide_c_str);
+
+#if GTEST_HAS_STD_WSTRING
+ // Converts the given wide string to a narrow string using the UTF-8
+ // encoding, and streams the result to this Message object.
+ Message& operator <<(const ::std::wstring& wstr);
+#endif // GTEST_HAS_STD_WSTRING
+
+ // Gets the text streamed to this object so far as an std::string.
+ // Each '\0' character in the buffer is replaced with "\\0".
+ //
+ // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ std::string GetString() const;
+
+ private:
+ // We'll hold the text streamed to this object here.
const std::unique_ptr< ::std::stringstream> ss_;
-
- // We declare (but don't implement) this to prevent the compiler
- // from implementing the assignment operator.
- void operator=(const Message&);
-};
-
-// Streams a Message to an ostream.
-inline std::ostream& operator <<(std::ostream& os, const Message& sb) {
- return os << sb.GetString();
-}
-
-namespace internal {
-
-// Converts a streamable value to an std::string. A NULL pointer is
-// converted to "(null)". When the input value is a ::string,
-// ::std::string, ::wstring, or ::std::wstring object, each NUL
-// character in it is replaced with "\\0".
-template <typename T>
-std::string StreamableToString(const T& streamable) {
- return (Message() << streamable).GetString();
-}
-
-} // namespace internal
-} // namespace testing
-
+
+ // We declare (but don't implement) this to prevent the compiler
+ // from implementing the assignment operator.
+ void operator=(const Message&);
+};
+
+// Streams a Message to an ostream.
+inline std::ostream& operator <<(std::ostream& os, const Message& sb) {
+ return os << sb.GetString();
+}
+
+namespace internal {
+
+// Converts a streamable value to an std::string. A NULL pointer is
+// converted to "(null)". When the input value is a ::string,
+// ::std::string, ::wstring, or ::std::wstring object, each NUL
+// character in it is replaced with "\\0".
+template <typename T>
+std::string StreamableToString(const T& streamable) {
+ return (Message() << streamable).GetString();
+}
+
+} // namespace internal
+} // namespace testing
+
GTEST_DISABLE_MSC_WARNINGS_POP_() // 4251
#endif // GOOGLETEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
diff --git a/contrib/restricted/googletest/googletest/include/gtest/gtest-param-test.h b/contrib/restricted/googletest/googletest/include/gtest/gtest-param-test.h
index ac5278b495..804e702817 100644
--- a/contrib/restricted/googletest/googletest/include/gtest/gtest-param-test.h
+++ b/contrib/restricted/googletest/googletest/include/gtest/gtest-param-test.h
@@ -1,411 +1,411 @@
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Macros and functions for implementing parameterized tests
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Macros and functions for implementing parameterized tests
// in Google C++ Testing and Mocking Framework (Google Test)
-//
+//
// GOOGLETEST_CM0001 DO NOT DELETE
#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
#define GOOGLETEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
-
-// Value-parameterized tests allow you to test your code with different
-// parameters without writing multiple copies of the same test.
-//
-// Here is how you use value-parameterized tests:
-
-#if 0
-
-// To write value-parameterized tests, first you should define a fixture
-// class. It is usually derived from testing::TestWithParam<T> (see below for
-// another inheritance scheme that's sometimes useful in more complicated
-// class hierarchies), where the type of your parameter values.
-// TestWithParam<T> is itself derived from testing::Test. T can be any
-// copyable type. If it's a raw pointer, you are responsible for managing the
-// lifespan of the pointed values.
-
-class FooTest : public ::testing::TestWithParam<const char*> {
- // You can implement all the usual class fixture members here.
-};
-
-// Then, use the TEST_P macro to define as many parameterized tests
-// for this fixture as you want. The _P suffix is for "parameterized"
-// or "pattern", whichever you prefer to think.
-
-TEST_P(FooTest, DoesBlah) {
- // Inside a test, access the test parameter with the GetParam() method
- // of the TestWithParam<T> class:
- EXPECT_TRUE(foo.Blah(GetParam()));
- ...
-}
-
-TEST_P(FooTest, HasBlahBlah) {
- ...
-}
-
+
+// Value-parameterized tests allow you to test your code with different
+// parameters without writing multiple copies of the same test.
+//
+// Here is how you use value-parameterized tests:
+
+#if 0
+
+// To write value-parameterized tests, first you should define a fixture
+// class. It is usually derived from testing::TestWithParam<T> (see below for
+// another inheritance scheme that's sometimes useful in more complicated
+// class hierarchies), where the type of your parameter values.
+// TestWithParam<T> is itself derived from testing::Test. T can be any
+// copyable type. If it's a raw pointer, you are responsible for managing the
+// lifespan of the pointed values.
+
+class FooTest : public ::testing::TestWithParam<const char*> {
+ // You can implement all the usual class fixture members here.
+};
+
+// Then, use the TEST_P macro to define as many parameterized tests
+// for this fixture as you want. The _P suffix is for "parameterized"
+// or "pattern", whichever you prefer to think.
+
+TEST_P(FooTest, DoesBlah) {
+ // Inside a test, access the test parameter with the GetParam() method
+ // of the TestWithParam<T> class:
+ EXPECT_TRUE(foo.Blah(GetParam()));
+ ...
+}
+
+TEST_P(FooTest, HasBlahBlah) {
+ ...
+}
+
// Finally, you can use INSTANTIATE_TEST_SUITE_P to instantiate the test
-// case with any set of parameters you want. Google Test defines a number
-// of functions for generating test parameters. They return what we call
+// case with any set of parameters you want. Google Test defines a number
+// of functions for generating test parameters. They return what we call
// (surprise!) parameter generators. Here is a summary of them, which
-// are all in the testing namespace:
-//
-//
-// Range(begin, end [, step]) - Yields values {begin, begin+step,
-// begin+step+step, ...}. The values do not
-// include end. step defaults to 1.
-// Values(v1, v2, ..., vN) - Yields values {v1, v2, ..., vN}.
-// ValuesIn(container) - Yields values from a C-style array, an STL
-// ValuesIn(begin,end) container, or an iterator range [begin, end).
-// Bool() - Yields sequence {false, true}.
-// Combine(g1, g2, ..., gN) - Yields all combinations (the Cartesian product
-// for the math savvy) of the values generated
-// by the N generators.
-//
-// For more details, see comments at the definitions of these functions below
-// in this file.
-//
+// are all in the testing namespace:
+//
+//
+// Range(begin, end [, step]) - Yields values {begin, begin+step,
+// begin+step+step, ...}. The values do not
+// include end. step defaults to 1.
+// Values(v1, v2, ..., vN) - Yields values {v1, v2, ..., vN}.
+// ValuesIn(container) - Yields values from a C-style array, an STL
+// ValuesIn(begin,end) container, or an iterator range [begin, end).
+// Bool() - Yields sequence {false, true}.
+// Combine(g1, g2, ..., gN) - Yields all combinations (the Cartesian product
+// for the math savvy) of the values generated
+// by the N generators.
+//
+// For more details, see comments at the definitions of these functions below
+// in this file.
+//
// The following statement will instantiate tests from the FooTest test suite
-// each with parameter values "meeny", "miny", and "moe".
-
+// each with parameter values "meeny", "miny", and "moe".
+
INSTANTIATE_TEST_SUITE_P(InstantiationName,
FooTest,
Values("meeny", "miny", "moe"));
-
-// To distinguish different instances of the pattern, (yes, you
+
+// To distinguish different instances of the pattern, (yes, you
// can instantiate it more than once) the first argument to the
// INSTANTIATE_TEST_SUITE_P macro is a prefix that will be added to the
// actual test suite name. Remember to pick unique prefixes for different
-// instantiations. The tests from the instantiation above will have
-// these names:
-//
-// * InstantiationName/FooTest.DoesBlah/0 for "meeny"
-// * InstantiationName/FooTest.DoesBlah/1 for "miny"
-// * InstantiationName/FooTest.DoesBlah/2 for "moe"
-// * InstantiationName/FooTest.HasBlahBlah/0 for "meeny"
-// * InstantiationName/FooTest.HasBlahBlah/1 for "miny"
-// * InstantiationName/FooTest.HasBlahBlah/2 for "moe"
-//
-// You can use these names in --gtest_filter.
-//
-// This statement will instantiate all tests from FooTest again, each
-// with parameter values "cat" and "dog":
-
-const char* pets[] = {"cat", "dog"};
+// instantiations. The tests from the instantiation above will have
+// these names:
+//
+// * InstantiationName/FooTest.DoesBlah/0 for "meeny"
+// * InstantiationName/FooTest.DoesBlah/1 for "miny"
+// * InstantiationName/FooTest.DoesBlah/2 for "moe"
+// * InstantiationName/FooTest.HasBlahBlah/0 for "meeny"
+// * InstantiationName/FooTest.HasBlahBlah/1 for "miny"
+// * InstantiationName/FooTest.HasBlahBlah/2 for "moe"
+//
+// You can use these names in --gtest_filter.
+//
+// This statement will instantiate all tests from FooTest again, each
+// with parameter values "cat" and "dog":
+
+const char* pets[] = {"cat", "dog"};
INSTANTIATE_TEST_SUITE_P(AnotherInstantiationName, FooTest, ValuesIn(pets));
-
-// The tests from the instantiation above will have these names:
-//
-// * AnotherInstantiationName/FooTest.DoesBlah/0 for "cat"
-// * AnotherInstantiationName/FooTest.DoesBlah/1 for "dog"
-// * AnotherInstantiationName/FooTest.HasBlahBlah/0 for "cat"
-// * AnotherInstantiationName/FooTest.HasBlahBlah/1 for "dog"
-//
+
+// The tests from the instantiation above will have these names:
+//
+// * AnotherInstantiationName/FooTest.DoesBlah/0 for "cat"
+// * AnotherInstantiationName/FooTest.DoesBlah/1 for "dog"
+// * AnotherInstantiationName/FooTest.HasBlahBlah/0 for "cat"
+// * AnotherInstantiationName/FooTest.HasBlahBlah/1 for "dog"
+//
// Please note that INSTANTIATE_TEST_SUITE_P will instantiate all tests
// in the given test suite, whether their definitions come before or
// AFTER the INSTANTIATE_TEST_SUITE_P statement.
-//
-// Please also note that generator expressions (including parameters to the
-// generators) are evaluated in InitGoogleTest(), after main() has started.
-// This allows the user on one hand, to adjust generator parameters in order
-// to dynamically determine a set of tests to run and on the other hand,
-// give the user a chance to inspect the generated tests with Google Test
-// reflection API before RUN_ALL_TESTS() is executed.
-//
-// You can see samples/sample7_unittest.cc and samples/sample8_unittest.cc
-// for more examples.
-//
-// In the future, we plan to publish the API for defining new parameter
-// generators. But for now this interface remains part of the internal
-// implementation and is subject to change.
-//
-//
-// A parameterized test fixture must be derived from testing::Test and from
-// testing::WithParamInterface<T>, where T is the type of the parameter
-// values. Inheriting from TestWithParam<T> satisfies that requirement because
-// TestWithParam<T> inherits from both Test and WithParamInterface. In more
-// complicated hierarchies, however, it is occasionally useful to inherit
-// separately from Test and WithParamInterface. For example:
-
-class BaseTest : public ::testing::Test {
- // You can inherit all the usual members for a non-parameterized test
- // fixture here.
-};
-
-class DerivedTest : public BaseTest, public ::testing::WithParamInterface<int> {
- // The usual test fixture members go here too.
-};
-
-TEST_F(BaseTest, HasFoo) {
- // This is an ordinary non-parameterized test.
-}
-
-TEST_P(DerivedTest, DoesBlah) {
- // GetParam works just the same here as if you inherit from TestWithParam.
- EXPECT_TRUE(foo.Blah(GetParam()));
-}
-
-#endif // 0
-
+//
+// Please also note that generator expressions (including parameters to the
+// generators) are evaluated in InitGoogleTest(), after main() has started.
+// This allows the user on one hand, to adjust generator parameters in order
+// to dynamically determine a set of tests to run and on the other hand,
+// give the user a chance to inspect the generated tests with Google Test
+// reflection API before RUN_ALL_TESTS() is executed.
+//
+// You can see samples/sample7_unittest.cc and samples/sample8_unittest.cc
+// for more examples.
+//
+// In the future, we plan to publish the API for defining new parameter
+// generators. But for now this interface remains part of the internal
+// implementation and is subject to change.
+//
+//
+// A parameterized test fixture must be derived from testing::Test and from
+// testing::WithParamInterface<T>, where T is the type of the parameter
+// values. Inheriting from TestWithParam<T> satisfies that requirement because
+// TestWithParam<T> inherits from both Test and WithParamInterface. In more
+// complicated hierarchies, however, it is occasionally useful to inherit
+// separately from Test and WithParamInterface. For example:
+
+class BaseTest : public ::testing::Test {
+ // You can inherit all the usual members for a non-parameterized test
+ // fixture here.
+};
+
+class DerivedTest : public BaseTest, public ::testing::WithParamInterface<int> {
+ // The usual test fixture members go here too.
+};
+
+TEST_F(BaseTest, HasFoo) {
+ // This is an ordinary non-parameterized test.
+}
+
+TEST_P(DerivedTest, DoesBlah) {
+ // GetParam works just the same here as if you inherit from TestWithParam.
+ EXPECT_TRUE(foo.Blah(GetParam()));
+}
+
+#endif // 0
+
#include <iterator>
#include <utility>
-
-#include "gtest/internal/gtest-internal.h"
-#include "gtest/internal/gtest-param-util.h"
+
+#include "gtest/internal/gtest-internal.h"
+#include "gtest/internal/gtest-param-util.h"
#include "gtest/internal/gtest-port.h"
-
-namespace testing {
-
-// Functions producing parameter generators.
-//
-// Google Test uses these generators to produce parameters for value-
+
+namespace testing {
+
+// Functions producing parameter generators.
+//
+// Google Test uses these generators to produce parameters for value-
// parameterized tests. When a parameterized test suite is instantiated
-// with a particular generator, Google Test creates and runs tests
-// for each element in the sequence produced by the generator.
-//
+// with a particular generator, Google Test creates and runs tests
+// for each element in the sequence produced by the generator.
+//
// In the following sample, tests from test suite FooTest are instantiated
-// each three times with parameter values 3, 5, and 8:
-//
-// class FooTest : public TestWithParam<int> { ... };
-//
-// TEST_P(FooTest, TestThis) {
-// }
-// TEST_P(FooTest, TestThat) {
-// }
+// each three times with parameter values 3, 5, and 8:
+//
+// class FooTest : public TestWithParam<int> { ... };
+//
+// TEST_P(FooTest, TestThis) {
+// }
+// TEST_P(FooTest, TestThat) {
+// }
// INSTANTIATE_TEST_SUITE_P(TestSequence, FooTest, Values(3, 5, 8));
-//
-
-// Range() returns generators providing sequences of values in a range.
-//
-// Synopsis:
-// Range(start, end)
-// - returns a generator producing a sequence of values {start, start+1,
-// start+2, ..., }.
-// Range(start, end, step)
-// - returns a generator producing a sequence of values {start, start+step,
-// start+step+step, ..., }.
-// Notes:
-// * The generated sequences never include end. For example, Range(1, 5)
-// returns a generator producing a sequence {1, 2, 3, 4}. Range(1, 9, 2)
-// returns a generator producing {1, 3, 5, 7}.
-// * start and end must have the same type. That type may be any integral or
-// floating-point type or a user defined type satisfying these conditions:
-// * It must be assignable (have operator=() defined).
-// * It must have operator+() (operator+(int-compatible type) for
-// two-operand version).
-// * It must have operator<() defined.
-// Elements in the resulting sequences will also have that type.
-// * Condition start < end must be satisfied in order for resulting sequences
-// to contain any elements.
-//
-template <typename T, typename IncrementT>
-internal::ParamGenerator<T> Range(T start, T end, IncrementT step) {
- return internal::ParamGenerator<T>(
- new internal::RangeGenerator<T, IncrementT>(start, end, step));
-}
-
-template <typename T>
-internal::ParamGenerator<T> Range(T start, T end) {
- return Range(start, end, 1);
-}
-
-// ValuesIn() function allows generation of tests with parameters coming from
-// a container.
-//
-// Synopsis:
-// ValuesIn(const T (&array)[N])
-// - returns a generator producing sequences with elements from
-// a C-style array.
-// ValuesIn(const Container& container)
-// - returns a generator producing sequences with elements from
-// an STL-style container.
-// ValuesIn(Iterator begin, Iterator end)
-// - returns a generator producing sequences with elements from
-// a range [begin, end) defined by a pair of STL-style iterators. These
-// iterators can also be plain C pointers.
-//
-// Please note that ValuesIn copies the values from the containers
-// passed in and keeps them to generate tests in RUN_ALL_TESTS().
-//
-// Examples:
-//
+//
+
+// Range() returns generators providing sequences of values in a range.
+//
+// Synopsis:
+// Range(start, end)
+// - returns a generator producing a sequence of values {start, start+1,
+// start+2, ..., }.
+// Range(start, end, step)
+// - returns a generator producing a sequence of values {start, start+step,
+// start+step+step, ..., }.
+// Notes:
+// * The generated sequences never include end. For example, Range(1, 5)
+// returns a generator producing a sequence {1, 2, 3, 4}. Range(1, 9, 2)
+// returns a generator producing {1, 3, 5, 7}.
+// * start and end must have the same type. That type may be any integral or
+// floating-point type or a user defined type satisfying these conditions:
+// * It must be assignable (have operator=() defined).
+// * It must have operator+() (operator+(int-compatible type) for
+// two-operand version).
+// * It must have operator<() defined.
+// Elements in the resulting sequences will also have that type.
+// * Condition start < end must be satisfied in order for resulting sequences
+// to contain any elements.
+//
+template <typename T, typename IncrementT>
+internal::ParamGenerator<T> Range(T start, T end, IncrementT step) {
+ return internal::ParamGenerator<T>(
+ new internal::RangeGenerator<T, IncrementT>(start, end, step));
+}
+
+template <typename T>
+internal::ParamGenerator<T> Range(T start, T end) {
+ return Range(start, end, 1);
+}
+
+// ValuesIn() function allows generation of tests with parameters coming from
+// a container.
+//
+// Synopsis:
+// ValuesIn(const T (&array)[N])
+// - returns a generator producing sequences with elements from
+// a C-style array.
+// ValuesIn(const Container& container)
+// - returns a generator producing sequences with elements from
+// an STL-style container.
+// ValuesIn(Iterator begin, Iterator end)
+// - returns a generator producing sequences with elements from
+// a range [begin, end) defined by a pair of STL-style iterators. These
+// iterators can also be plain C pointers.
+//
+// Please note that ValuesIn copies the values from the containers
+// passed in and keeps them to generate tests in RUN_ALL_TESTS().
+//
+// Examples:
+//
// This instantiates tests from test suite StringTest
-// each with C-string values of "foo", "bar", and "baz":
-//
-// const char* strings[] = {"foo", "bar", "baz"};
+// each with C-string values of "foo", "bar", and "baz":
+//
+// const char* strings[] = {"foo", "bar", "baz"};
// INSTANTIATE_TEST_SUITE_P(StringSequence, StringTest, ValuesIn(strings));
-//
+//
// This instantiates tests from test suite StlStringTest
-// each with STL strings with values "a" and "b":
-//
-// ::std::vector< ::std::string> GetParameterStrings() {
-// ::std::vector< ::std::string> v;
-// v.push_back("a");
-// v.push_back("b");
-// return v;
-// }
-//
+// each with STL strings with values "a" and "b":
+//
+// ::std::vector< ::std::string> GetParameterStrings() {
+// ::std::vector< ::std::string> v;
+// v.push_back("a");
+// v.push_back("b");
+// return v;
+// }
+//
// INSTANTIATE_TEST_SUITE_P(CharSequence,
// StlStringTest,
// ValuesIn(GetParameterStrings()));
-//
-//
-// This will also instantiate tests from CharTest
-// each with parameter values 'a' and 'b':
-//
-// ::std::list<char> GetParameterChars() {
-// ::std::list<char> list;
-// list.push_back('a');
-// list.push_back('b');
-// return list;
-// }
-// ::std::list<char> l = GetParameterChars();
+//
+//
+// This will also instantiate tests from CharTest
+// each with parameter values 'a' and 'b':
+//
+// ::std::list<char> GetParameterChars() {
+// ::std::list<char> list;
+// list.push_back('a');
+// list.push_back('b');
+// return list;
+// }
+// ::std::list<char> l = GetParameterChars();
// INSTANTIATE_TEST_SUITE_P(CharSequence2,
// CharTest,
// ValuesIn(l.begin(), l.end()));
-//
-template <typename ForwardIterator>
-internal::ParamGenerator<
+//
+template <typename ForwardIterator>
+internal::ParamGenerator<
typename std::iterator_traits<ForwardIterator>::value_type>
-ValuesIn(ForwardIterator begin, ForwardIterator end) {
+ValuesIn(ForwardIterator begin, ForwardIterator end) {
typedef typename std::iterator_traits<ForwardIterator>::value_type ParamType;
- return internal::ParamGenerator<ParamType>(
- new internal::ValuesInIteratorRangeGenerator<ParamType>(begin, end));
-}
-
-template <typename T, size_t N>
-internal::ParamGenerator<T> ValuesIn(const T (&array)[N]) {
- return ValuesIn(array, array + N);
-}
-
-template <class Container>
-internal::ParamGenerator<typename Container::value_type> ValuesIn(
- const Container& container) {
- return ValuesIn(container.begin(), container.end());
-}
-
-// Values() allows generating tests from explicitly specified list of
-// parameters.
-//
-// Synopsis:
-// Values(T v1, T v2, ..., T vN)
-// - returns a generator producing sequences with elements v1, v2, ..., vN.
-//
+ return internal::ParamGenerator<ParamType>(
+ new internal::ValuesInIteratorRangeGenerator<ParamType>(begin, end));
+}
+
+template <typename T, size_t N>
+internal::ParamGenerator<T> ValuesIn(const T (&array)[N]) {
+ return ValuesIn(array, array + N);
+}
+
+template <class Container>
+internal::ParamGenerator<typename Container::value_type> ValuesIn(
+ const Container& container) {
+ return ValuesIn(container.begin(), container.end());
+}
+
+// Values() allows generating tests from explicitly specified list of
+// parameters.
+//
+// Synopsis:
+// Values(T v1, T v2, ..., T vN)
+// - returns a generator producing sequences with elements v1, v2, ..., vN.
+//
// For example, this instantiates tests from test suite BarTest each
-// with values "one", "two", and "three":
-//
+// with values "one", "two", and "three":
+//
// INSTANTIATE_TEST_SUITE_P(NumSequence,
// BarTest,
// Values("one", "two", "three"));
-//
+//
// This instantiates tests from test suite BazTest each with values 1, 2, 3.5.
-// The exact type of values will depend on the type of parameter in BazTest.
-//
+// The exact type of values will depend on the type of parameter in BazTest.
+//
// INSTANTIATE_TEST_SUITE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5));
-//
-//
+//
+//
template <typename... T>
internal::ValueArray<T...> Values(T... v) {
return internal::ValueArray<T...>(std::move(v)...);
-}
-
-// Bool() allows generating tests with parameters in a set of (false, true).
-//
-// Synopsis:
-// Bool()
-// - returns a generator producing sequences with elements {false, true}.
-//
-// It is useful when testing code that depends on Boolean flags. Combinations
-// of multiple flags can be tested when several Bool()'s are combined using
-// Combine() function.
-//
+}
+
+// Bool() allows generating tests with parameters in a set of (false, true).
+//
+// Synopsis:
+// Bool()
+// - returns a generator producing sequences with elements {false, true}.
+//
+// It is useful when testing code that depends on Boolean flags. Combinations
+// of multiple flags can be tested when several Bool()'s are combined using
+// Combine() function.
+//
// In the following example all tests in the test suite FlagDependentTest
-// will be instantiated twice with parameters false and true.
-//
-// class FlagDependentTest : public testing::TestWithParam<bool> {
-// virtual void SetUp() {
-// external_flag = GetParam();
-// }
-// }
+// will be instantiated twice with parameters false and true.
+//
+// class FlagDependentTest : public testing::TestWithParam<bool> {
+// virtual void SetUp() {
+// external_flag = GetParam();
+// }
+// }
// INSTANTIATE_TEST_SUITE_P(BoolSequence, FlagDependentTest, Bool());
-//
-inline internal::ParamGenerator<bool> Bool() {
- return Values(false, true);
-}
-
-// Combine() allows the user to combine two or more sequences to produce
-// values of a Cartesian product of those sequences' elements.
-//
-// Synopsis:
-// Combine(gen1, gen2, ..., genN)
-// - returns a generator producing sequences with elements coming from
-// the Cartesian product of elements from the sequences generated by
-// gen1, gen2, ..., genN. The sequence elements will have a type of
+//
+inline internal::ParamGenerator<bool> Bool() {
+ return Values(false, true);
+}
+
+// Combine() allows the user to combine two or more sequences to produce
+// values of a Cartesian product of those sequences' elements.
+//
+// Synopsis:
+// Combine(gen1, gen2, ..., genN)
+// - returns a generator producing sequences with elements coming from
+// the Cartesian product of elements from the sequences generated by
+// gen1, gen2, ..., genN. The sequence elements will have a type of
// std::tuple<T1, T2, ..., TN> where T1, T2, ..., TN are the types
-// of elements from sequences produces by gen1, gen2, ..., genN.
-//
-// Example:
-//
+// of elements from sequences produces by gen1, gen2, ..., genN.
+//
+// Example:
+//
// This will instantiate tests in test suite AnimalTest each one with
-// the parameter values tuple("cat", BLACK), tuple("cat", WHITE),
-// tuple("dog", BLACK), and tuple("dog", WHITE):
-//
-// enum Color { BLACK, GRAY, WHITE };
-// class AnimalTest
+// the parameter values tuple("cat", BLACK), tuple("cat", WHITE),
+// tuple("dog", BLACK), and tuple("dog", WHITE):
+//
+// enum Color { BLACK, GRAY, WHITE };
+// class AnimalTest
// : public testing::TestWithParam<std::tuple<const char*, Color> > {...};
-//
-// TEST_P(AnimalTest, AnimalLooksNice) {...}
-//
+//
+// TEST_P(AnimalTest, AnimalLooksNice) {...}
+//
// INSTANTIATE_TEST_SUITE_P(AnimalVariations, AnimalTest,
// Combine(Values("cat", "dog"),
// Values(BLACK, WHITE)));
-//
-// This will instantiate tests in FlagDependentTest with all variations of two
-// Boolean flags:
-//
-// class FlagDependentTest
+//
+// This will instantiate tests in FlagDependentTest with all variations of two
+// Boolean flags:
+//
+// class FlagDependentTest
// : public testing::TestWithParam<std::tuple<bool, bool> > {
-// virtual void SetUp() {
-// // Assigns external_flag_1 and external_flag_2 values from the tuple.
+// virtual void SetUp() {
+// // Assigns external_flag_1 and external_flag_2 values from the tuple.
// std::tie(external_flag_1, external_flag_2) = GetParam();
-// }
-// };
-//
-// TEST_P(FlagDependentTest, TestFeature1) {
-// // Test your code using external_flag_1 and external_flag_2 here.
-// }
+// }
+// };
+//
+// TEST_P(FlagDependentTest, TestFeature1) {
+// // Test your code using external_flag_1 and external_flag_2 here.
+// }
// INSTANTIATE_TEST_SUITE_P(TwoBoolSequence, FlagDependentTest,
// Combine(Bool(), Bool()));
-//
+//
template <typename... Generator>
internal::CartesianProductHolder<Generator...> Combine(const Generator&... g) {
return internal::CartesianProductHolder<Generator...>(g...);
-}
-
+}
+
#define TEST_P(test_suite_name, test_name) \
class GTEST_TEST_CLASS_NAME_(test_suite_name, test_name) \
: public test_suite_name { \
@@ -435,24 +435,24 @@ internal::CartesianProductHolder<Generator...> Combine(const Generator&... g) {
test_name)::gtest_registering_dummy_ = \
GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)::AddToRegistry(); \
void GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)::TestBody()
-
+
// The last argument to INSTANTIATE_TEST_SUITE_P allows the user to specify
// generator and an optional function or functor that generates custom test name
// suffixes based on the test parameters. Such a function or functor should
// accept one argument of type testing::TestParamInfo<class ParamType>, and
// return std::string.
-//
-// testing::PrintToStringParamName is a builtin test suffix generator that
+//
+// testing::PrintToStringParamName is a builtin test suffix generator that
// returns the value of testing::PrintToString(GetParam()).
-//
-// Note: test names must be non-empty, unique, and may only contain ASCII
+//
+// Note: test names must be non-empty, unique, and may only contain ASCII
// alphanumeric characters or underscore. Because PrintToString adds quotes
// to std::string and C strings, it won't work for these types.
-
+
#define GTEST_EXPAND_(arg) arg
#define GTEST_GET_FIRST_(first, ...) first
#define GTEST_GET_SECOND_(first, second, ...) second
-
+
#define INSTANTIATE_TEST_SUITE_P(prefix, test_suite_name, ...) \
static ::testing::internal::ParamGenerator<test_suite_name::ParamType> \
gtest_##prefix##test_suite_name##_EvalGenerator_() { \
@@ -502,6 +502,6 @@ internal::CartesianProductHolder<Generator...> Combine(const Generator&... g) {
INSTANTIATE_TEST_SUITE_P
#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-} // namespace testing
-
+} // namespace testing
+
#endif // GOOGLETEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
diff --git a/contrib/restricted/googletest/googletest/include/gtest/gtest-printers.h b/contrib/restricted/googletest/googletest/include/gtest/gtest-printers.h
index 2bc58cb0bf..5a155d2141 100644
--- a/contrib/restricted/googletest/googletest/include/gtest/gtest-printers.h
+++ b/contrib/restricted/googletest/googletest/include/gtest/gtest-printers.h
@@ -1,127 +1,127 @@
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
// Google Test - The Google C++ Testing and Mocking Framework
-//
-// This file implements a universal value printer that can print a
-// value of any type T:
-//
-// void ::testing::internal::UniversalPrinter<T>::Print(value, ostream_ptr);
-//
-// A user can teach this function how to print a class type T by
-// defining either operator<<() or PrintTo() in the namespace that
-// defines T. More specifically, the FIRST defined function in the
-// following list will be used (assuming T is defined in namespace
-// foo):
-//
-// 1. foo::PrintTo(const T&, ostream*)
-// 2. operator<<(ostream&, const T&) defined in either foo or the
-// global namespace.
-//
+//
+// This file implements a universal value printer that can print a
+// value of any type T:
+//
+// void ::testing::internal::UniversalPrinter<T>::Print(value, ostream_ptr);
+//
+// A user can teach this function how to print a class type T by
+// defining either operator<<() or PrintTo() in the namespace that
+// defines T. More specifically, the FIRST defined function in the
+// following list will be used (assuming T is defined in namespace
+// foo):
+//
+// 1. foo::PrintTo(const T&, ostream*)
+// 2. operator<<(ostream&, const T&) defined in either foo or the
+// global namespace.
+//
// However if T is an STL-style container then it is printed element-wise
// unless foo::PrintTo(const T&, ostream*) is defined. Note that
// operator<<() is ignored for container types.
//
-// If none of the above is defined, it will print the debug string of
-// the value if it is a protocol buffer, or print the raw bytes in the
-// value otherwise.
-//
-// To aid debugging: when T is a reference type, the address of the
-// value is also printed; when T is a (const) char pointer, both the
-// pointer value and the NUL-terminated string it points to are
-// printed.
-//
-// We also provide some convenient wrappers:
-//
-// // Prints a value to a string. For a (const or not) char
-// // pointer, the NUL-terminated string (but not the pointer) is
-// // printed.
-// std::string ::testing::PrintToString(const T& value);
-//
-// // Prints a value tersely: for a reference type, the referenced
-// // value (but not the address) is printed; for a (const or not) char
-// // pointer, the NUL-terminated string (but not the pointer) is
-// // printed.
-// void ::testing::internal::UniversalTersePrint(const T& value, ostream*);
-//
-// // Prints value using the type inferred by the compiler. The difference
-// // from UniversalTersePrint() is that this function prints both the
-// // pointer and the NUL-terminated string for a (const or not) char pointer.
-// void ::testing::internal::UniversalPrint(const T& value, ostream*);
-//
-// // Prints the fields of a tuple tersely to a string vector, one
-// // element for each field. Tuple support must be enabled in
-// // gtest-port.h.
-// std::vector<string> UniversalTersePrintTupleFieldsToStrings(
-// const Tuple& value);
-//
-// Known limitation:
-//
-// The print primitives print the elements of an STL-style container
-// using the compiler-inferred type of *iter where iter is a
-// const_iterator of the container. When const_iterator is an input
-// iterator but not a forward iterator, this inferred type may not
-// match value_type, and the print output may be incorrect. In
-// practice, this is rarely a problem as for most containers
-// const_iterator is a forward iterator. We'll fix this if there's an
-// actual need for it. Note that this fix cannot rely on value_type
-// being defined as many user-defined container types don't have
-// value_type.
-
+// If none of the above is defined, it will print the debug string of
+// the value if it is a protocol buffer, or print the raw bytes in the
+// value otherwise.
+//
+// To aid debugging: when T is a reference type, the address of the
+// value is also printed; when T is a (const) char pointer, both the
+// pointer value and the NUL-terminated string it points to are
+// printed.
+//
+// We also provide some convenient wrappers:
+//
+// // Prints a value to a string. For a (const or not) char
+// // pointer, the NUL-terminated string (but not the pointer) is
+// // printed.
+// std::string ::testing::PrintToString(const T& value);
+//
+// // Prints a value tersely: for a reference type, the referenced
+// // value (but not the address) is printed; for a (const or not) char
+// // pointer, the NUL-terminated string (but not the pointer) is
+// // printed.
+// void ::testing::internal::UniversalTersePrint(const T& value, ostream*);
+//
+// // Prints value using the type inferred by the compiler. The difference
+// // from UniversalTersePrint() is that this function prints both the
+// // pointer and the NUL-terminated string for a (const or not) char pointer.
+// void ::testing::internal::UniversalPrint(const T& value, ostream*);
+//
+// // Prints the fields of a tuple tersely to a string vector, one
+// // element for each field. Tuple support must be enabled in
+// // gtest-port.h.
+// std::vector<string> UniversalTersePrintTupleFieldsToStrings(
+// const Tuple& value);
+//
+// Known limitation:
+//
+// The print primitives print the elements of an STL-style container
+// using the compiler-inferred type of *iter where iter is a
+// const_iterator of the container. When const_iterator is an input
+// iterator but not a forward iterator, this inferred type may not
+// match value_type, and the print output may be incorrect. In
+// practice, this is rarely a problem as for most containers
+// const_iterator is a forward iterator. We'll fix this if there's an
+// actual need for it. Note that this fix cannot rely on value_type
+// being defined as many user-defined container types don't have
+// value_type.
+
// GOOGLETEST_CM0001 DO NOT DELETE
#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
#define GOOGLETEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
-
+
#include <functional>
#include <memory>
-#include <ostream> // NOLINT
-#include <sstream>
-#include <string>
+#include <ostream> // NOLINT
+#include <sstream>
+#include <string>
#include <tuple>
#include <type_traits>
-#include <utility>
-#include <vector>
+#include <utility>
+#include <vector>
#include "gtest/internal/gtest-internal.h"
-#include "gtest/internal/gtest-port.h"
-
-namespace testing {
-
+#include "gtest/internal/gtest-port.h"
+
+namespace testing {
+
// Definitions in the internal* namespaces are subject to change without notice.
// DO NOT USE THEM IN USER CODE!
namespace internal {
-
+
template <typename T>
void UniversalPrint(const T& value, ::std::ostream* os);
-
+
// Used to print an STL-style container when the user doesn't define
// a PrintTo() for it.
struct ContainerPrinter {
@@ -153,8 +153,8 @@ struct ContainerPrinter {
}
*os << '}';
}
-};
-
+};
+
// Used to print a pointer that is neither a char pointer nor a member
// pointer, when the user doesn't define PrintTo() for it. (A member
// variable pointer or member function pointer doesn't really point to
@@ -173,9 +173,9 @@ struct FunctionPointerPrinter {
// void*.
*os << reinterpret_cast<const void*>(p);
}
- }
-};
-
+ }
+};
+
struct PointerPrinter {
template <typename T>
static void PrintValue(T* p, ::std::ostream* os) {
@@ -189,7 +189,7 @@ struct PointerPrinter {
}
}
};
-
+
namespace internal_stream_operator_without_lexical_name_lookup {
// The presence of an operator<< here will terminate lexical scope lookup
@@ -209,7 +209,7 @@ struct StreamPrinter {
// ADL (possibly involving implicit conversions).
typename = decltype(std::declval<std::ostream&>()
<< std::declval<const T&>())>
- static void PrintValue(const T& value, ::std::ostream* os) {
+ static void PrintValue(const T& value, ::std::ostream* os) {
// Call streaming operator found by ADL, possibly with implicit conversions
// of the arguments.
// lambda w/o captures treats as pointer to function in clang, but does not match trait is_function
@@ -241,23 +241,23 @@ struct ProtobufPrinter {
if (pretty_str.length() > kProtobufOneLinerMaxLength) {
pretty_str = "\n" + value.DebugString();
}
- *os << ("<" + pretty_str + ">");
- }
-};
-
+ *os << ("<" + pretty_str + ">");
+ }
+};
+
struct ConvertibleToIntegerPrinter {
- // Since T has no << operator or PrintTo() but can be implicitly
- // converted to BiggestInt, we print it as a BiggestInt.
- //
- // Most likely T is an enum type (either named or unnamed), in which
- // case printing it as an integer is the desired behavior. In case
- // T is not an enum, printing it as an integer is the best we can do
- // given that it has no user-defined printer.
+ // Since T has no << operator or PrintTo() but can be implicitly
+ // converted to BiggestInt, we print it as a BiggestInt.
+ //
+ // Most likely T is an enum type (either named or unnamed), in which
+ // case printing it as an integer is the desired behavior. In case
+ // T is not an enum, printing it as an integer is the best we can do
+ // given that it has no user-defined printer.
static void PrintValue(internal::BiggestInt value, ::std::ostream* os) {
*os << value;
- }
-};
-
+ }
+};
+
struct ConvertibleToStringViewPrinter {
#if GTEST_INTERNAL_HAS_STRING_VIEW
static void PrintValue(internal::StringView value, ::std::ostream* os) {
@@ -266,7 +266,7 @@ struct ConvertibleToStringViewPrinter {
#endif
};
-
+
// Prints the given number of bytes in the given object to the given
// ostream.
GTEST_API_ void PrintBytesInObjectTo(const unsigned char* obj_bytes,
@@ -283,7 +283,7 @@ struct RawBytesPrinter {
sizeof(value), os);
}
};
-
+
struct FallbackPrinter {
template <typename T>
static void PrintValue(const T&, ::std::ostream* os) {
@@ -294,7 +294,7 @@ struct FallbackPrinter {
// Try every printer in order and return the first one that works.
template <typename T, typename E, typename Printer, typename... Printers>
struct FindFirstPrinter : FindFirstPrinter<T, E, Printers...> {};
-
+
template <typename T, typename Printer, typename... Printers>
struct FindFirstPrinter<
T, decltype(Printer::PrintValue(std::declval<const T&>(), nullptr)),
@@ -311,7 +311,7 @@ struct FindFirstPrinter<
// - Print types convertible to BiggestInt.
// - Print types convertible to StringView, if available.
// - Fallback to printing the raw bytes of the object.
-template <typename T>
+template <typename T>
void PrintWithFallback(const T& value, ::std::ostream* os) {
using Printer = typename FindFirstPrinter<
T, void, ContainerPrinter, FunctionPointerPrinter, PointerPrinter,
@@ -319,56 +319,56 @@ void PrintWithFallback(const T& value, ::std::ostream* os) {
ProtobufPrinter, ConvertibleToIntegerPrinter,
ConvertibleToStringViewPrinter, RawBytesPrinter, FallbackPrinter>::type;
Printer::PrintValue(value, os);
-}
-
-// FormatForComparison<ToPrint, OtherOperand>::Format(value) formats a
-// value of type ToPrint that is an operand of a comparison assertion
-// (e.g. ASSERT_EQ). OtherOperand is the type of the other operand in
-// the comparison, and is used to help determine the best way to
-// format the value. In particular, when the value is a C string
-// (char pointer) and the other operand is an STL string object, we
-// want to format the C string as a string, since we know it is
-// compared by value with the string object. If the value is a char
-// pointer but the other operand is not an STL string object, we don't
-// know whether the pointer is supposed to point to a NUL-terminated
-// string, and thus want to print it as a pointer to be safe.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-
-// The default case.
-template <typename ToPrint, typename OtherOperand>
-class FormatForComparison {
- public:
- static ::std::string Format(const ToPrint& value) {
- return ::testing::PrintToString(value);
- }
-};
-
-// Array.
-template <typename ToPrint, size_t N, typename OtherOperand>
-class FormatForComparison<ToPrint[N], OtherOperand> {
- public:
- static ::std::string Format(const ToPrint* value) {
- return FormatForComparison<const ToPrint*, OtherOperand>::Format(value);
- }
-};
-
-// By default, print C string as pointers to be safe, as we don't know
-// whether they actually point to a NUL-terminated string.
-
-#define GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(CharType) \
- template <typename OtherOperand> \
- class FormatForComparison<CharType*, OtherOperand> { \
- public: \
- static ::std::string Format(CharType* value) { \
- return ::testing::PrintToString(static_cast<const void*>(value)); \
- } \
- }
-
-GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(char);
-GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const char);
-GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(wchar_t);
-GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const wchar_t);
+}
+
+// FormatForComparison<ToPrint, OtherOperand>::Format(value) formats a
+// value of type ToPrint that is an operand of a comparison assertion
+// (e.g. ASSERT_EQ). OtherOperand is the type of the other operand in
+// the comparison, and is used to help determine the best way to
+// format the value. In particular, when the value is a C string
+// (char pointer) and the other operand is an STL string object, we
+// want to format the C string as a string, since we know it is
+// compared by value with the string object. If the value is a char
+// pointer but the other operand is not an STL string object, we don't
+// know whether the pointer is supposed to point to a NUL-terminated
+// string, and thus want to print it as a pointer to be safe.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+
+// The default case.
+template <typename ToPrint, typename OtherOperand>
+class FormatForComparison {
+ public:
+ static ::std::string Format(const ToPrint& value) {
+ return ::testing::PrintToString(value);
+ }
+};
+
+// Array.
+template <typename ToPrint, size_t N, typename OtherOperand>
+class FormatForComparison<ToPrint[N], OtherOperand> {
+ public:
+ static ::std::string Format(const ToPrint* value) {
+ return FormatForComparison<const ToPrint*, OtherOperand>::Format(value);
+ }
+};
+
+// By default, print C string as pointers to be safe, as we don't know
+// whether they actually point to a NUL-terminated string.
+
+#define GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(CharType) \
+ template <typename OtherOperand> \
+ class FormatForComparison<CharType*, OtherOperand> { \
+ public: \
+ static ::std::string Format(CharType* value) { \
+ return ::testing::PrintToString(static_cast<const void*>(value)); \
+ } \
+ }
+
+GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(char);
+GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const char);
+GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(wchar_t);
+GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const wchar_t);
#ifdef __cpp_char8_t
GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(char8_t);
GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const char8_t);
@@ -377,23 +377,23 @@ GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(char16_t);
GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const char16_t);
GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(char32_t);
GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const char32_t);
-
-#undef GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_
-
-// If a C string is compared with an STL string object, we know it's meant
-// to point to a NUL-terminated string, and thus can print it as a string.
-
-#define GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(CharType, OtherStringType) \
- template <> \
- class FormatForComparison<CharType*, OtherStringType> { \
- public: \
- static ::std::string Format(CharType* value) { \
- return ::testing::PrintToString(value); \
- } \
- }
-
-GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(char, ::std::string);
-GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const char, ::std::string);
+
+#undef GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_
+
+// If a C string is compared with an STL string object, we know it's meant
+// to point to a NUL-terminated string, and thus can print it as a string.
+
+#define GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(CharType, OtherStringType) \
+ template <> \
+ class FormatForComparison<CharType*, OtherStringType> { \
+ public: \
+ static ::std::string Format(CharType* value) { \
+ return ::testing::PrintToString(value); \
+ } \
+ }
+
+GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(char, ::std::string);
+GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const char, ::std::string);
#ifdef __cpp_lib_char8_t
GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(char8_t, ::std::u8string);
GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const char8_t, ::std::u8string);
@@ -402,82 +402,82 @@ GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(char16_t, ::std::u16string);
GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const char16_t, ::std::u16string);
GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(char32_t, ::std::u32string);
GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const char32_t, ::std::u32string);
-
-#if GTEST_HAS_STD_WSTRING
-GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(wchar_t, ::std::wstring);
-GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const wchar_t, ::std::wstring);
-#endif
-
-#undef GTEST_IMPL_FORMAT_C_STRING_AS_STRING_
-
-// Formats a comparison assertion (e.g. ASSERT_EQ, EXPECT_LT, and etc)
-// operand to be used in a failure message. The type (but not value)
-// of the other operand may affect the format. This allows us to
-// print a char* as a raw pointer when it is compared against another
-// char* or void*, and print it as a C string when it is compared
-// against an std::string object, for example.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-template <typename T1, typename T2>
-std::string FormatForComparisonFailureMessage(
- const T1& value, const T2& /* other_operand */) {
- return FormatForComparison<T1, T2>::Format(value);
-}
-
-// UniversalPrinter<T>::Print(value, ostream_ptr) prints the given
-// value to the given ostream. The caller must ensure that
-// 'ostream_ptr' is not NULL, or the behavior is undefined.
-//
-// We define UniversalPrinter as a class template (as opposed to a
-// function template), as we need to partially specialize it for
-// reference types, which cannot be done with function templates.
-template <typename T>
-class UniversalPrinter;
-
-// Prints the given value using the << operator if it has one;
-// otherwise prints the bytes in it. This is what
-// UniversalPrinter<T>::Print() does when PrintTo() is not specialized
-// or overloaded for type T.
-//
-// A user can override this behavior for a class type Foo by defining
-// an overload of PrintTo() in the namespace where Foo is defined. We
-// give the user this option as sometimes defining a << operator for
-// Foo is not desirable (e.g. the coding style may prevent doing it,
-// or there is already a << operator but it doesn't do what the user
-// wants).
-template <typename T>
-void PrintTo(const T& value, ::std::ostream* os) {
+
+#if GTEST_HAS_STD_WSTRING
+GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(wchar_t, ::std::wstring);
+GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const wchar_t, ::std::wstring);
+#endif
+
+#undef GTEST_IMPL_FORMAT_C_STRING_AS_STRING_
+
+// Formats a comparison assertion (e.g. ASSERT_EQ, EXPECT_LT, and etc)
+// operand to be used in a failure message. The type (but not value)
+// of the other operand may affect the format. This allows us to
+// print a char* as a raw pointer when it is compared against another
+// char* or void*, and print it as a C string when it is compared
+// against an std::string object, for example.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+template <typename T1, typename T2>
+std::string FormatForComparisonFailureMessage(
+ const T1& value, const T2& /* other_operand */) {
+ return FormatForComparison<T1, T2>::Format(value);
+}
+
+// UniversalPrinter<T>::Print(value, ostream_ptr) prints the given
+// value to the given ostream. The caller must ensure that
+// 'ostream_ptr' is not NULL, or the behavior is undefined.
+//
+// We define UniversalPrinter as a class template (as opposed to a
+// function template), as we need to partially specialize it for
+// reference types, which cannot be done with function templates.
+template <typename T>
+class UniversalPrinter;
+
+// Prints the given value using the << operator if it has one;
+// otherwise prints the bytes in it. This is what
+// UniversalPrinter<T>::Print() does when PrintTo() is not specialized
+// or overloaded for type T.
+//
+// A user can override this behavior for a class type Foo by defining
+// an overload of PrintTo() in the namespace where Foo is defined. We
+// give the user this option as sometimes defining a << operator for
+// Foo is not desirable (e.g. the coding style may prevent doing it,
+// or there is already a << operator but it doesn't do what the user
+// wants).
+template <typename T>
+void PrintTo(const T& value, ::std::ostream* os) {
internal::PrintWithFallback(value, os);
-}
-
-// The following list of PrintTo() overloads tells
-// UniversalPrinter<T>::Print() how to print standard types (built-in
-// types, strings, plain arrays, and pointers).
-
-// Overloads for various char types.
-GTEST_API_ void PrintTo(unsigned char c, ::std::ostream* os);
-GTEST_API_ void PrintTo(signed char c, ::std::ostream* os);
-inline void PrintTo(char c, ::std::ostream* os) {
- // When printing a plain char, we always treat it as unsigned. This
- // way, the output won't be affected by whether the compiler thinks
- // char is signed or not.
- PrintTo(static_cast<unsigned char>(c), os);
-}
-
-// Overloads for other simple built-in types.
-inline void PrintTo(bool x, ::std::ostream* os) {
- *os << (x ? "true" : "false");
-}
-
-// Overload for wchar_t type.
-// Prints a wchar_t as a symbol if it is printable or as its internal
-// code otherwise and also as its decimal code (except for L'\0').
-// The L'\0' char is printed as "L'\\0'". The decimal code is printed
-// as signed integer when wchar_t is implemented by the compiler
-// as a signed type and is printed as an unsigned integer when wchar_t
-// is implemented as an unsigned type.
-GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os);
-
+}
+
+// The following list of PrintTo() overloads tells
+// UniversalPrinter<T>::Print() how to print standard types (built-in
+// types, strings, plain arrays, and pointers).
+
+// Overloads for various char types.
+GTEST_API_ void PrintTo(unsigned char c, ::std::ostream* os);
+GTEST_API_ void PrintTo(signed char c, ::std::ostream* os);
+inline void PrintTo(char c, ::std::ostream* os) {
+ // When printing a plain char, we always treat it as unsigned. This
+ // way, the output won't be affected by whether the compiler thinks
+ // char is signed or not.
+ PrintTo(static_cast<unsigned char>(c), os);
+}
+
+// Overloads for other simple built-in types.
+inline void PrintTo(bool x, ::std::ostream* os) {
+ *os << (x ? "true" : "false");
+}
+
+// Overload for wchar_t type.
+// Prints a wchar_t as a symbol if it is printable or as its internal
+// code otherwise and also as its decimal code (except for L'\0').
+// The L'\0' char is printed as "L'\\0'". The decimal code is printed
+// as signed integer when wchar_t is implemented by the compiler
+// as a signed type and is printed as an unsigned integer when wchar_t
+// is implemented as an unsigned type.
+GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os);
+
GTEST_API_ void PrintTo(char32_t c, ::std::ostream* os);
inline void PrintTo(char16_t c, ::std::ostream* os) {
PrintTo(ImplicitCast_<char32_t>(c), os);
@@ -488,26 +488,26 @@ inline void PrintTo(char8_t c, ::std::ostream* os) {
}
#endif
-// Overloads for C strings.
-GTEST_API_ void PrintTo(const char* s, ::std::ostream* os);
-inline void PrintTo(char* s, ::std::ostream* os) {
- PrintTo(ImplicitCast_<const char*>(s), os);
-}
-
-// signed/unsigned char is often used for representing binary data, so
-// we print pointers to it as void* to be safe.
-inline void PrintTo(const signed char* s, ::std::ostream* os) {
- PrintTo(ImplicitCast_<const void*>(s), os);
-}
-inline void PrintTo(signed char* s, ::std::ostream* os) {
- PrintTo(ImplicitCast_<const void*>(s), os);
-}
-inline void PrintTo(const unsigned char* s, ::std::ostream* os) {
- PrintTo(ImplicitCast_<const void*>(s), os);
-}
-inline void PrintTo(unsigned char* s, ::std::ostream* os) {
- PrintTo(ImplicitCast_<const void*>(s), os);
-}
+// Overloads for C strings.
+GTEST_API_ void PrintTo(const char* s, ::std::ostream* os);
+inline void PrintTo(char* s, ::std::ostream* os) {
+ PrintTo(ImplicitCast_<const char*>(s), os);
+}
+
+// signed/unsigned char is often used for representing binary data, so
+// we print pointers to it as void* to be safe.
+inline void PrintTo(const signed char* s, ::std::ostream* os) {
+ PrintTo(ImplicitCast_<const void*>(s), os);
+}
+inline void PrintTo(signed char* s, ::std::ostream* os) {
+ PrintTo(ImplicitCast_<const void*>(s), os);
+}
+inline void PrintTo(const unsigned char* s, ::std::ostream* os) {
+ PrintTo(ImplicitCast_<const void*>(s), os);
+}
+inline void PrintTo(unsigned char* s, ::std::ostream* os) {
+ PrintTo(ImplicitCast_<const void*>(s), os);
+}
#ifdef __cpp_char8_t
// Overloads for u8 strings.
GTEST_API_ void PrintTo(const char8_t* s, ::std::ostream* os);
@@ -525,40 +525,40 @@ GTEST_API_ void PrintTo(const char32_t* s, ::std::ostream* os);
inline void PrintTo(char32_t* s, ::std::ostream* os) {
PrintTo(ImplicitCast_<const char32_t*>(s), os);
}
-
-// MSVC can be configured to define wchar_t as a typedef of unsigned
-// short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native
-// type. When wchar_t is a typedef, defining an overload for const
-// wchar_t* would cause unsigned short* be printed as a wide string,
-// possibly causing invalid memory accesses.
-#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED)
-// Overloads for wide C strings
-GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os);
-inline void PrintTo(wchar_t* s, ::std::ostream* os) {
- PrintTo(ImplicitCast_<const wchar_t*>(s), os);
-}
-#endif
-
-// Overload for C arrays. Multi-dimensional arrays are printed
-// properly.
-
-// Prints the given number of elements in an array, without printing
-// the curly braces.
-template <typename T>
-void PrintRawArrayTo(const T a[], size_t count, ::std::ostream* os) {
- UniversalPrint(a[0], os);
- for (size_t i = 1; i != count; i++) {
- *os << ", ";
- UniversalPrint(a[i], os);
- }
-}
-
+
+// MSVC can be configured to define wchar_t as a typedef of unsigned
+// short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native
+// type. When wchar_t is a typedef, defining an overload for const
+// wchar_t* would cause unsigned short* be printed as a wide string,
+// possibly causing invalid memory accesses.
+#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED)
+// Overloads for wide C strings
+GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os);
+inline void PrintTo(wchar_t* s, ::std::ostream* os) {
+ PrintTo(ImplicitCast_<const wchar_t*>(s), os);
+}
+#endif
+
+// Overload for C arrays. Multi-dimensional arrays are printed
+// properly.
+
+// Prints the given number of elements in an array, without printing
+// the curly braces.
+template <typename T>
+void PrintRawArrayTo(const T a[], size_t count, ::std::ostream* os) {
+ UniversalPrint(a[0], os);
+ for (size_t i = 1; i != count; i++) {
+ *os << ", ";
+ UniversalPrint(a[i], os);
+ }
+}
+
// Overloads for ::std::string.
-GTEST_API_ void PrintStringTo(const ::std::string&s, ::std::ostream* os);
-inline void PrintTo(const ::std::string& s, ::std::ostream* os) {
- PrintStringTo(s, os);
-}
-
+GTEST_API_ void PrintStringTo(const ::std::string&s, ::std::ostream* os);
+inline void PrintTo(const ::std::string& s, ::std::ostream* os) {
+ PrintStringTo(s, os);
+}
+
// Overloads for ::std::u8string
#ifdef __cpp_char8_t
GTEST_API_ void PrintU8StringTo(const ::std::u8string& s, ::std::ostream* os);
@@ -580,27 +580,27 @@ inline void PrintTo(const ::std::u32string& s, ::std::ostream* os) {
}
// Overloads for ::std::wstring.
-#if GTEST_HAS_STD_WSTRING
-GTEST_API_ void PrintWideStringTo(const ::std::wstring&s, ::std::ostream* os);
-inline void PrintTo(const ::std::wstring& s, ::std::ostream* os) {
- PrintWideStringTo(s, os);
-}
-#endif // GTEST_HAS_STD_WSTRING
-
+#if GTEST_HAS_STD_WSTRING
+GTEST_API_ void PrintWideStringTo(const ::std::wstring&s, ::std::ostream* os);
+inline void PrintTo(const ::std::wstring& s, ::std::ostream* os) {
+ PrintWideStringTo(s, os);
+}
+#endif // GTEST_HAS_STD_WSTRING
+
#if GTEST_INTERNAL_HAS_STRING_VIEW
// Overload for internal::StringView.
inline void PrintTo(internal::StringView sp, ::std::ostream* os) {
PrintTo(::std::string(sp), os);
-}
+}
#endif // GTEST_INTERNAL_HAS_STRING_VIEW
-
+
inline void PrintTo(std::nullptr_t, ::std::ostream* os) { *os << "(nullptr)"; }
-
+
template <typename T>
void PrintTo(std::reference_wrapper<T> ref, ::std::ostream* os) {
UniversalPrinter<T&>::Print(ref.get(), os);
-}
-
+}
+
inline const void* VoidifyPointer(const void* p) { return p; }
inline const void* VoidifyPointer(volatile const void* p) {
return const_cast<const void*>(p);
@@ -643,7 +643,7 @@ void PrintTo(const std::shared_ptr<T>& ptr, std::ostream* os) {
template <typename T>
void PrintTupleTo(const T&, std::integral_constant<size_t, 0>,
::std::ostream*) {}
-
+
template <typename T, size_t I>
void PrintTupleTo(const T& t, std::integral_constant<size_t, I>,
::std::ostream* os) {
@@ -655,54 +655,54 @@ void PrintTupleTo(const T& t, std::integral_constant<size_t, I>,
}
UniversalPrinter<typename std::tuple_element<I - 1, T>::type>::Print(
std::get<I - 1>(t), os);
-}
-
-template <typename... Types>
-void PrintTo(const ::std::tuple<Types...>& t, ::std::ostream* os) {
+}
+
+template <typename... Types>
+void PrintTo(const ::std::tuple<Types...>& t, ::std::ostream* os) {
*os << "(";
PrintTupleTo(t, std::integral_constant<size_t, sizeof...(Types)>(), os);
*os << ")";
-}
-
-// Overload for std::pair.
-template <typename T1, typename T2>
-void PrintTo(const ::std::pair<T1, T2>& value, ::std::ostream* os) {
- *os << '(';
- // We cannot use UniversalPrint(value.first, os) here, as T1 may be
- // a reference type. The same for printing value.second.
- UniversalPrinter<T1>::Print(value.first, os);
- *os << ", ";
- UniversalPrinter<T2>::Print(value.second, os);
- *os << ')';
-}
-
-// Implements printing a non-reference type T by letting the compiler
-// pick the right overload of PrintTo() for T.
-template <typename T>
-class UniversalPrinter {
- public:
- // MSVC warns about adding const to a function type, so we want to
- // disable the warning.
- GTEST_DISABLE_MSC_WARNINGS_PUSH_(4180)
-
- // Note: we deliberately don't call this PrintTo(), as that name
- // conflicts with ::testing::internal::PrintTo in the body of the
- // function.
- static void Print(const T& value, ::std::ostream* os) {
- // By default, ::testing::internal::PrintTo() is used for printing
- // the value.
- //
- // Thanks to Koenig look-up, if T is a class and has its own
- // PrintTo() function defined in its namespace, that function will
- // be visible here. Since it is more specific than the generic ones
- // in ::testing::internal, it will be picked by the compiler in the
- // following statement - exactly what we want.
- PrintTo(value, os);
- }
-
- GTEST_DISABLE_MSC_WARNINGS_POP_()
-};
-
+}
+
+// Overload for std::pair.
+template <typename T1, typename T2>
+void PrintTo(const ::std::pair<T1, T2>& value, ::std::ostream* os) {
+ *os << '(';
+ // We cannot use UniversalPrint(value.first, os) here, as T1 may be
+ // a reference type. The same for printing value.second.
+ UniversalPrinter<T1>::Print(value.first, os);
+ *os << ", ";
+ UniversalPrinter<T2>::Print(value.second, os);
+ *os << ')';
+}
+
+// Implements printing a non-reference type T by letting the compiler
+// pick the right overload of PrintTo() for T.
+template <typename T>
+class UniversalPrinter {
+ public:
+ // MSVC warns about adding const to a function type, so we want to
+ // disable the warning.
+ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4180)
+
+ // Note: we deliberately don't call this PrintTo(), as that name
+ // conflicts with ::testing::internal::PrintTo in the body of the
+ // function.
+ static void Print(const T& value, ::std::ostream* os) {
+ // By default, ::testing::internal::PrintTo() is used for printing
+ // the value.
+ //
+ // Thanks to Koenig look-up, if T is a class and has its own
+ // PrintTo() function defined in its namespace, that function will
+ // be visible here. Since it is more specific than the generic ones
+ // in ::testing::internal, it will be picked by the compiler in the
+ // following statement - exactly what we want.
+ PrintTo(value, os);
+ }
+
+ GTEST_DISABLE_MSC_WARNINGS_POP_()
+};
+
// Remove any const-qualifiers before passing a type to UniversalPrinter.
template <typename T>
class UniversalPrinter<const T> : public UniversalPrinter<T> {};
@@ -787,33 +787,33 @@ class UniversalPrinter<Variant<T...>> {
#endif // GTEST_INTERNAL_HAS_VARIANT
-// UniversalPrintArray(begin, len, os) prints an array of 'len'
-// elements, starting at address 'begin'.
-template <typename T>
-void UniversalPrintArray(const T* begin, size_t len, ::std::ostream* os) {
- if (len == 0) {
- *os << "{}";
- } else {
- *os << "{ ";
- const size_t kThreshold = 18;
- const size_t kChunkSize = 8;
- // If the array has more than kThreshold elements, we'll have to
- // omit some details by printing only the first and the last
- // kChunkSize elements.
- if (len <= kThreshold) {
- PrintRawArrayTo(begin, len, os);
- } else {
- PrintRawArrayTo(begin, kChunkSize, os);
- *os << ", ..., ";
- PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os);
- }
- *os << " }";
- }
-}
-// This overload prints a (const) char array compactly.
-GTEST_API_ void UniversalPrintArray(
- const char* begin, size_t len, ::std::ostream* os);
-
+// UniversalPrintArray(begin, len, os) prints an array of 'len'
+// elements, starting at address 'begin'.
+template <typename T>
+void UniversalPrintArray(const T* begin, size_t len, ::std::ostream* os) {
+ if (len == 0) {
+ *os << "{}";
+ } else {
+ *os << "{ ";
+ const size_t kThreshold = 18;
+ const size_t kChunkSize = 8;
+ // If the array has more than kThreshold elements, we'll have to
+ // omit some details by printing only the first and the last
+ // kChunkSize elements.
+ if (len <= kThreshold) {
+ PrintRawArrayTo(begin, len, os);
+ } else {
+ PrintRawArrayTo(begin, kChunkSize, os);
+ *os << ", ..., ";
+ PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os);
+ }
+ *os << " }";
+ }
+}
+// This overload prints a (const) char array compactly.
+GTEST_API_ void UniversalPrintArray(
+ const char* begin, size_t len, ::std::ostream* os);
+
#ifdef __cpp_char8_t
// This overload prints a (const) char8_t array compactly.
GTEST_API_ void UniversalPrintArray(const char8_t* begin, size_t len,
@@ -828,98 +828,98 @@ GTEST_API_ void UniversalPrintArray(const char16_t* begin, size_t len,
GTEST_API_ void UniversalPrintArray(const char32_t* begin, size_t len,
::std::ostream* os);
-// This overload prints a (const) wchar_t array compactly.
-GTEST_API_ void UniversalPrintArray(
- const wchar_t* begin, size_t len, ::std::ostream* os);
-
-// Implements printing an array type T[N].
-template <typename T, size_t N>
-class UniversalPrinter<T[N]> {
- public:
- // Prints the given array, omitting some elements when there are too
- // many.
- static void Print(const T (&a)[N], ::std::ostream* os) {
- UniversalPrintArray(a, N, os);
- }
-};
-
-// Implements printing a reference type T&.
-template <typename T>
-class UniversalPrinter<T&> {
- public:
- // MSVC warns about adding const to a function type, so we want to
- // disable the warning.
- GTEST_DISABLE_MSC_WARNINGS_PUSH_(4180)
-
- static void Print(const T& value, ::std::ostream* os) {
- // Prints the address of the value. We use reinterpret_cast here
- // as static_cast doesn't compile when T is a function type.
- *os << "@" << reinterpret_cast<const void*>(&value) << " ";
-
- // Then prints the value itself.
- UniversalPrint(value, os);
- }
-
- GTEST_DISABLE_MSC_WARNINGS_POP_()
-};
-
-// Prints a value tersely: for a reference type, the referenced value
-// (but not the address) is printed; for a (const) char pointer, the
-// NUL-terminated string (but not the pointer) is printed.
-
-template <typename T>
-class UniversalTersePrinter {
- public:
- static void Print(const T& value, ::std::ostream* os) {
- UniversalPrint(value, os);
- }
-};
-template <typename T>
-class UniversalTersePrinter<T&> {
- public:
- static void Print(const T& value, ::std::ostream* os) {
- UniversalPrint(value, os);
- }
-};
-template <typename T, size_t N>
-class UniversalTersePrinter<T[N]> {
- public:
- static void Print(const T (&value)[N], ::std::ostream* os) {
- UniversalPrinter<T[N]>::Print(value, os);
- }
-};
-template <>
-class UniversalTersePrinter<const char*> {
- public:
- static void Print(const char* str, ::std::ostream* os) {
+// This overload prints a (const) wchar_t array compactly.
+GTEST_API_ void UniversalPrintArray(
+ const wchar_t* begin, size_t len, ::std::ostream* os);
+
+// Implements printing an array type T[N].
+template <typename T, size_t N>
+class UniversalPrinter<T[N]> {
+ public:
+ // Prints the given array, omitting some elements when there are too
+ // many.
+ static void Print(const T (&a)[N], ::std::ostream* os) {
+ UniversalPrintArray(a, N, os);
+ }
+};
+
+// Implements printing a reference type T&.
+template <typename T>
+class UniversalPrinter<T&> {
+ public:
+ // MSVC warns about adding const to a function type, so we want to
+ // disable the warning.
+ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4180)
+
+ static void Print(const T& value, ::std::ostream* os) {
+ // Prints the address of the value. We use reinterpret_cast here
+ // as static_cast doesn't compile when T is a function type.
+ *os << "@" << reinterpret_cast<const void*>(&value) << " ";
+
+ // Then prints the value itself.
+ UniversalPrint(value, os);
+ }
+
+ GTEST_DISABLE_MSC_WARNINGS_POP_()
+};
+
+// Prints a value tersely: for a reference type, the referenced value
+// (but not the address) is printed; for a (const) char pointer, the
+// NUL-terminated string (but not the pointer) is printed.
+
+template <typename T>
+class UniversalTersePrinter {
+ public:
+ static void Print(const T& value, ::std::ostream* os) {
+ UniversalPrint(value, os);
+ }
+};
+template <typename T>
+class UniversalTersePrinter<T&> {
+ public:
+ static void Print(const T& value, ::std::ostream* os) {
+ UniversalPrint(value, os);
+ }
+};
+template <typename T, size_t N>
+class UniversalTersePrinter<T[N]> {
+ public:
+ static void Print(const T (&value)[N], ::std::ostream* os) {
+ UniversalPrinter<T[N]>::Print(value, os);
+ }
+};
+template <>
+class UniversalTersePrinter<const char*> {
+ public:
+ static void Print(const char* str, ::std::ostream* os) {
if (str == nullptr) {
- *os << "NULL";
- } else {
+ *os << "NULL";
+ } else {
UniversalPrint(std::string(str), os);
- }
- }
-};
-template <>
+ }
+ }
+};
+template <>
class UniversalTersePrinter<char*> : public UniversalTersePrinter<const char*> {
};
#ifdef __cpp_char8_t
template <>
class UniversalTersePrinter<const char8_t*> {
- public:
+ public:
static void Print(const char8_t* str, ::std::ostream* os) {
if (str == nullptr) {
*os << "NULL";
} else {
UniversalPrint(::std::u8string(str), os);
}
- }
-};
+ }
+};
template <>
class UniversalTersePrinter<char8_t*>
: public UniversalTersePrinter<const char8_t*> {};
#endif
-
+
template <>
class UniversalTersePrinter<const char16_t*> {
public:
@@ -950,50 +950,50 @@ template <>
class UniversalTersePrinter<char32_t*>
: public UniversalTersePrinter<const char32_t*> {};
-#if GTEST_HAS_STD_WSTRING
-template <>
-class UniversalTersePrinter<const wchar_t*> {
- public:
- static void Print(const wchar_t* str, ::std::ostream* os) {
+#if GTEST_HAS_STD_WSTRING
+template <>
+class UniversalTersePrinter<const wchar_t*> {
+ public:
+ static void Print(const wchar_t* str, ::std::ostream* os) {
if (str == nullptr) {
- *os << "NULL";
- } else {
- UniversalPrint(::std::wstring(str), os);
- }
- }
-};
-#endif
-
-template <>
-class UniversalTersePrinter<wchar_t*> {
- public:
- static void Print(wchar_t* str, ::std::ostream* os) {
- UniversalTersePrinter<const wchar_t*>::Print(str, os);
- }
-};
-
-template <typename T>
-void UniversalTersePrint(const T& value, ::std::ostream* os) {
- UniversalTersePrinter<T>::Print(value, os);
-}
-
-// Prints a value using the type inferred by the compiler. The
-// difference between this and UniversalTersePrint() is that for a
-// (const) char pointer, this prints both the pointer and the
-// NUL-terminated string.
-template <typename T>
-void UniversalPrint(const T& value, ::std::ostream* os) {
- // A workarond for the bug in VC++ 7.1 that prevents us from instantiating
- // UniversalPrinter with T directly.
- typedef T T1;
- UniversalPrinter<T1>::Print(value, os);
-}
-
+ *os << "NULL";
+ } else {
+ UniversalPrint(::std::wstring(str), os);
+ }
+ }
+};
+#endif
+
+template <>
+class UniversalTersePrinter<wchar_t*> {
+ public:
+ static void Print(wchar_t* str, ::std::ostream* os) {
+ UniversalTersePrinter<const wchar_t*>::Print(str, os);
+ }
+};
+
+template <typename T>
+void UniversalTersePrint(const T& value, ::std::ostream* os) {
+ UniversalTersePrinter<T>::Print(value, os);
+}
+
+// Prints a value using the type inferred by the compiler. The
+// difference between this and UniversalTersePrint() is that for a
+// (const) char pointer, this prints both the pointer and the
+// NUL-terminated string.
+template <typename T>
+void UniversalPrint(const T& value, ::std::ostream* os) {
+ // A workarond for the bug in VC++ 7.1 that prevents us from instantiating
+ // UniversalPrinter with T directly.
+ typedef T T1;
+ UniversalPrinter<T1>::Print(value, os);
+}
+
typedef ::std::vector< ::std::string> Strings;
-
- // Tersely prints the first N fields of a tuple to a string vector,
- // one element for each field.
-template <typename Tuple>
+
+ // Tersely prints the first N fields of a tuple to a string vector,
+ // one element for each field.
+template <typename Tuple>
void TersePrintPrefixToStrings(const Tuple&, std::integral_constant<size_t, 0>,
Strings*) {}
template <typename Tuple, size_t I>
@@ -1005,34 +1005,34 @@ void TersePrintPrefixToStrings(const Tuple& t,
::std::stringstream ss;
UniversalTersePrint(std::get<I - 1>(t), &ss);
strings->push_back(ss.str());
-}
-
-// Prints the fields of a tuple tersely to a string vector, one
-// element for each field. See the comment before
-// UniversalTersePrint() for how we define "tersely".
-template <typename Tuple>
-Strings UniversalTersePrintTupleFieldsToStrings(const Tuple& value) {
- Strings result;
+}
+
+// Prints the fields of a tuple tersely to a string vector, one
+// element for each field. See the comment before
+// UniversalTersePrint() for how we define "tersely".
+template <typename Tuple>
+Strings UniversalTersePrintTupleFieldsToStrings(const Tuple& value) {
+ Strings result;
TersePrintPrefixToStrings(
value, std::integral_constant<size_t, std::tuple_size<Tuple>::value>(),
&result);
- return result;
-}
-
-} // namespace internal
-
-template <typename T>
-::std::string PrintToString(const T& value) {
- ::std::stringstream ss;
- internal::UniversalTersePrinter<T>::Print(value, &ss);
- return ss.str();
-}
-
-} // namespace testing
-
-// Include any custom printer added by the local installation.
-// We must include this header at the end to make sure it can use the
-// declarations from this file.
-#include "gtest/internal/custom/gtest-printers.h"
-
+ return result;
+}
+
+} // namespace internal
+
+template <typename T>
+::std::string PrintToString(const T& value) {
+ ::std::stringstream ss;
+ internal::UniversalTersePrinter<T>::Print(value, &ss);
+ return ss.str();
+}
+
+} // namespace testing
+
+// Include any custom printer added by the local installation.
+// We must include this header at the end to make sure it can use the
+// declarations from this file.
+#include "gtest/internal/custom/gtest-printers.h"
+
#endif // GOOGLETEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
diff --git a/contrib/restricted/googletest/googletest/include/gtest/gtest-spi.h b/contrib/restricted/googletest/googletest/include/gtest/gtest-spi.h
index eccde437e9..eacef44669 100644
--- a/contrib/restricted/googletest/googletest/include/gtest/gtest-spi.h
+++ b/contrib/restricted/googletest/googletest/include/gtest/gtest-spi.h
@@ -1,238 +1,238 @@
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//
-// Utilities for testing Google Test itself and code that uses Google Test
-// (e.g. frameworks built on top of Google Test).
-
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+//
+// Utilities for testing Google Test itself and code that uses Google Test
+// (e.g. frameworks built on top of Google Test).
+
// GOOGLETEST_CM0004 DO NOT DELETE
#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_SPI_H_
#define GOOGLETEST_INCLUDE_GTEST_GTEST_SPI_H_
-
-#include "gtest/gtest.h"
-
+
+#include "gtest/gtest.h"
+
GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
/* class A needs to have dll-interface to be used by clients of class B */)
-namespace testing {
-
-// This helper class can be used to mock out Google Test failure reporting
-// so that we can test Google Test or code that builds on Google Test.
-//
-// An object of this class appends a TestPartResult object to the
-// TestPartResultArray object given in the constructor whenever a Google Test
-// failure is reported. It can either intercept only failures that are
-// generated in the same thread that created this object or it can intercept
-// all generated failures. The scope of this mock object can be controlled with
-// the second argument to the two arguments constructor.
-class GTEST_API_ ScopedFakeTestPartResultReporter
- : public TestPartResultReporterInterface {
- public:
- // The two possible mocking modes of this object.
- enum InterceptMode {
- INTERCEPT_ONLY_CURRENT_THREAD, // Intercepts only thread local failures.
- INTERCEPT_ALL_THREADS // Intercepts all failures.
- };
-
- // The c'tor sets this object as the test part result reporter used
- // by Google Test. The 'result' parameter specifies where to report the
- // results. This reporter will only catch failures generated in the current
- // thread. DEPRECATED
- explicit ScopedFakeTestPartResultReporter(TestPartResultArray* result);
-
- // Same as above, but you can choose the interception scope of this object.
- ScopedFakeTestPartResultReporter(InterceptMode intercept_mode,
- TestPartResultArray* result);
-
- // The d'tor restores the previous test part result reporter.
+namespace testing {
+
+// This helper class can be used to mock out Google Test failure reporting
+// so that we can test Google Test or code that builds on Google Test.
+//
+// An object of this class appends a TestPartResult object to the
+// TestPartResultArray object given in the constructor whenever a Google Test
+// failure is reported. It can either intercept only failures that are
+// generated in the same thread that created this object or it can intercept
+// all generated failures. The scope of this mock object can be controlled with
+// the second argument to the two arguments constructor.
+class GTEST_API_ ScopedFakeTestPartResultReporter
+ : public TestPartResultReporterInterface {
+ public:
+ // The two possible mocking modes of this object.
+ enum InterceptMode {
+ INTERCEPT_ONLY_CURRENT_THREAD, // Intercepts only thread local failures.
+ INTERCEPT_ALL_THREADS // Intercepts all failures.
+ };
+
+ // The c'tor sets this object as the test part result reporter used
+ // by Google Test. The 'result' parameter specifies where to report the
+ // results. This reporter will only catch failures generated in the current
+ // thread. DEPRECATED
+ explicit ScopedFakeTestPartResultReporter(TestPartResultArray* result);
+
+ // Same as above, but you can choose the interception scope of this object.
+ ScopedFakeTestPartResultReporter(InterceptMode intercept_mode,
+ TestPartResultArray* result);
+
+ // The d'tor restores the previous test part result reporter.
~ScopedFakeTestPartResultReporter() override;
-
- // Appends the TestPartResult object to the TestPartResultArray
- // received in the constructor.
- //
- // This method is from the TestPartResultReporterInterface
- // interface.
+
+ // Appends the TestPartResult object to the TestPartResultArray
+ // received in the constructor.
+ //
+ // This method is from the TestPartResultReporterInterface
+ // interface.
void ReportTestPartResult(const TestPartResult& result) override;
- private:
- void Init();
-
- const InterceptMode intercept_mode_;
- TestPartResultReporterInterface* old_reporter_;
- TestPartResultArray* const result_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedFakeTestPartResultReporter);
-};
-
-namespace internal {
-
-// A helper class for implementing EXPECT_FATAL_FAILURE() and
-// EXPECT_NONFATAL_FAILURE(). Its destructor verifies that the given
-// TestPartResultArray contains exactly one failure that has the given
-// type and contains the given substring. If that's not the case, a
-// non-fatal failure will be generated.
-class GTEST_API_ SingleFailureChecker {
- public:
- // The constructor remembers the arguments.
- SingleFailureChecker(const TestPartResultArray* results,
+ private:
+ void Init();
+
+ const InterceptMode intercept_mode_;
+ TestPartResultReporterInterface* old_reporter_;
+ TestPartResultArray* const result_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedFakeTestPartResultReporter);
+};
+
+namespace internal {
+
+// A helper class for implementing EXPECT_FATAL_FAILURE() and
+// EXPECT_NONFATAL_FAILURE(). Its destructor verifies that the given
+// TestPartResultArray contains exactly one failure that has the given
+// type and contains the given substring. If that's not the case, a
+// non-fatal failure will be generated.
+class GTEST_API_ SingleFailureChecker {
+ public:
+ // The constructor remembers the arguments.
+ SingleFailureChecker(const TestPartResultArray* results,
TestPartResult::Type type, const std::string& substr);
- ~SingleFailureChecker();
- private:
- const TestPartResultArray* const results_;
- const TestPartResult::Type type_;
+ ~SingleFailureChecker();
+ private:
+ const TestPartResultArray* const results_;
+ const TestPartResult::Type type_;
const std::string substr_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(SingleFailureChecker);
-};
-
-} // namespace internal
-
-} // namespace testing
-
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(SingleFailureChecker);
+};
+
+} // namespace internal
+
+} // namespace testing
+
GTEST_DISABLE_MSC_WARNINGS_POP_() // 4251
-// A set of macros for testing Google Test assertions or code that's expected
-// to generate Google Test fatal failures. It verifies that the given
-// statement will cause exactly one fatal Google Test failure with 'substr'
-// being part of the failure message.
-//
-// There are two different versions of this macro. EXPECT_FATAL_FAILURE only
-// affects and considers failures generated in the current thread and
-// EXPECT_FATAL_FAILURE_ON_ALL_THREADS does the same but for all threads.
-//
-// The verification of the assertion is done correctly even when the statement
-// throws an exception or aborts the current function.
-//
-// Known restrictions:
-// - 'statement' cannot reference local non-static variables or
-// non-static members of the current object.
-// - 'statement' cannot return a value.
-// - You cannot stream a failure message to this macro.
-//
-// Note that even though the implementations of the following two
-// macros are much alike, we cannot refactor them to use a common
-// helper macro, due to some peculiarity in how the preprocessor
-// works. The AcceptsMacroThatExpandsToUnprotectedComma test in
-// gtest_unittest.cc will fail to compile if we do that.
-#define EXPECT_FATAL_FAILURE(statement, substr) \
- do { \
- class GTestExpectFatalFailureHelper {\
- public:\
- static void Execute() { statement; }\
- };\
- ::testing::TestPartResultArray gtest_failures;\
- ::testing::internal::SingleFailureChecker gtest_checker(\
- &gtest_failures, ::testing::TestPartResult::kFatalFailure, (substr));\
- {\
- ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
- ::testing::ScopedFakeTestPartResultReporter:: \
- INTERCEPT_ONLY_CURRENT_THREAD, &gtest_failures);\
- GTestExpectFatalFailureHelper::Execute();\
- }\
- } while (::testing::internal::AlwaysFalse())
-
-#define EXPECT_FATAL_FAILURE_ON_ALL_THREADS(statement, substr) \
- do { \
- class GTestExpectFatalFailureHelper {\
- public:\
- static void Execute() { statement; }\
- };\
- ::testing::TestPartResultArray gtest_failures;\
- ::testing::internal::SingleFailureChecker gtest_checker(\
- &gtest_failures, ::testing::TestPartResult::kFatalFailure, (substr));\
- {\
- ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
- ::testing::ScopedFakeTestPartResultReporter:: \
- INTERCEPT_ALL_THREADS, &gtest_failures);\
- GTestExpectFatalFailureHelper::Execute();\
- }\
- } while (::testing::internal::AlwaysFalse())
-
-// A macro for testing Google Test assertions or code that's expected to
-// generate Google Test non-fatal failures. It asserts that the given
-// statement will cause exactly one non-fatal Google Test failure with 'substr'
-// being part of the failure message.
-//
-// There are two different versions of this macro. EXPECT_NONFATAL_FAILURE only
-// affects and considers failures generated in the current thread and
-// EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS does the same but for all threads.
-//
-// 'statement' is allowed to reference local variables and members of
-// the current object.
-//
-// The verification of the assertion is done correctly even when the statement
-// throws an exception or aborts the current function.
-//
-// Known restrictions:
-// - You cannot stream a failure message to this macro.
-//
-// Note that even though the implementations of the following two
-// macros are much alike, we cannot refactor them to use a common
-// helper macro, due to some peculiarity in how the preprocessor
-// works. If we do that, the code won't compile when the user gives
-// EXPECT_NONFATAL_FAILURE() a statement that contains a macro that
-// expands to code containing an unprotected comma. The
-// AcceptsMacroThatExpandsToUnprotectedComma test in gtest_unittest.cc
-// catches that.
-//
-// For the same reason, we have to write
-// if (::testing::internal::AlwaysTrue()) { statement; }
-// instead of
-// GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement)
-// to avoid an MSVC warning on unreachable code.
-#define EXPECT_NONFATAL_FAILURE(statement, substr) \
- do {\
- ::testing::TestPartResultArray gtest_failures;\
- ::testing::internal::SingleFailureChecker gtest_checker(\
- &gtest_failures, ::testing::TestPartResult::kNonFatalFailure, \
- (substr));\
- {\
- ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
- ::testing::ScopedFakeTestPartResultReporter:: \
- INTERCEPT_ONLY_CURRENT_THREAD, &gtest_failures);\
- if (::testing::internal::AlwaysTrue()) { statement; }\
- }\
- } while (::testing::internal::AlwaysFalse())
-
-#define EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS(statement, substr) \
- do {\
- ::testing::TestPartResultArray gtest_failures;\
- ::testing::internal::SingleFailureChecker gtest_checker(\
- &gtest_failures, ::testing::TestPartResult::kNonFatalFailure, \
- (substr));\
- {\
- ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
- ::testing::ScopedFakeTestPartResultReporter::INTERCEPT_ALL_THREADS, \
- &gtest_failures);\
- if (::testing::internal::AlwaysTrue()) { statement; }\
- }\
- } while (::testing::internal::AlwaysFalse())
-
+// A set of macros for testing Google Test assertions or code that's expected
+// to generate Google Test fatal failures. It verifies that the given
+// statement will cause exactly one fatal Google Test failure with 'substr'
+// being part of the failure message.
+//
+// There are two different versions of this macro. EXPECT_FATAL_FAILURE only
+// affects and considers failures generated in the current thread and
+// EXPECT_FATAL_FAILURE_ON_ALL_THREADS does the same but for all threads.
+//
+// The verification of the assertion is done correctly even when the statement
+// throws an exception or aborts the current function.
+//
+// Known restrictions:
+// - 'statement' cannot reference local non-static variables or
+// non-static members of the current object.
+// - 'statement' cannot return a value.
+// - You cannot stream a failure message to this macro.
+//
+// Note that even though the implementations of the following two
+// macros are much alike, we cannot refactor them to use a common
+// helper macro, due to some peculiarity in how the preprocessor
+// works. The AcceptsMacroThatExpandsToUnprotectedComma test in
+// gtest_unittest.cc will fail to compile if we do that.
+#define EXPECT_FATAL_FAILURE(statement, substr) \
+ do { \
+ class GTestExpectFatalFailureHelper {\
+ public:\
+ static void Execute() { statement; }\
+ };\
+ ::testing::TestPartResultArray gtest_failures;\
+ ::testing::internal::SingleFailureChecker gtest_checker(\
+ &gtest_failures, ::testing::TestPartResult::kFatalFailure, (substr));\
+ {\
+ ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
+ ::testing::ScopedFakeTestPartResultReporter:: \
+ INTERCEPT_ONLY_CURRENT_THREAD, &gtest_failures);\
+ GTestExpectFatalFailureHelper::Execute();\
+ }\
+ } while (::testing::internal::AlwaysFalse())
+
+#define EXPECT_FATAL_FAILURE_ON_ALL_THREADS(statement, substr) \
+ do { \
+ class GTestExpectFatalFailureHelper {\
+ public:\
+ static void Execute() { statement; }\
+ };\
+ ::testing::TestPartResultArray gtest_failures;\
+ ::testing::internal::SingleFailureChecker gtest_checker(\
+ &gtest_failures, ::testing::TestPartResult::kFatalFailure, (substr));\
+ {\
+ ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
+ ::testing::ScopedFakeTestPartResultReporter:: \
+ INTERCEPT_ALL_THREADS, &gtest_failures);\
+ GTestExpectFatalFailureHelper::Execute();\
+ }\
+ } while (::testing::internal::AlwaysFalse())
+
+// A macro for testing Google Test assertions or code that's expected to
+// generate Google Test non-fatal failures. It asserts that the given
+// statement will cause exactly one non-fatal Google Test failure with 'substr'
+// being part of the failure message.
+//
+// There are two different versions of this macro. EXPECT_NONFATAL_FAILURE only
+// affects and considers failures generated in the current thread and
+// EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS does the same but for all threads.
+//
+// 'statement' is allowed to reference local variables and members of
+// the current object.
+//
+// The verification of the assertion is done correctly even when the statement
+// throws an exception or aborts the current function.
+//
+// Known restrictions:
+// - You cannot stream a failure message to this macro.
+//
+// Note that even though the implementations of the following two
+// macros are much alike, we cannot refactor them to use a common
+// helper macro, due to some peculiarity in how the preprocessor
+// works. If we do that, the code won't compile when the user gives
+// EXPECT_NONFATAL_FAILURE() a statement that contains a macro that
+// expands to code containing an unprotected comma. The
+// AcceptsMacroThatExpandsToUnprotectedComma test in gtest_unittest.cc
+// catches that.
+//
+// For the same reason, we have to write
+// if (::testing::internal::AlwaysTrue()) { statement; }
+// instead of
+// GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement)
+// to avoid an MSVC warning on unreachable code.
+#define EXPECT_NONFATAL_FAILURE(statement, substr) \
+ do {\
+ ::testing::TestPartResultArray gtest_failures;\
+ ::testing::internal::SingleFailureChecker gtest_checker(\
+ &gtest_failures, ::testing::TestPartResult::kNonFatalFailure, \
+ (substr));\
+ {\
+ ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
+ ::testing::ScopedFakeTestPartResultReporter:: \
+ INTERCEPT_ONLY_CURRENT_THREAD, &gtest_failures);\
+ if (::testing::internal::AlwaysTrue()) { statement; }\
+ }\
+ } while (::testing::internal::AlwaysFalse())
+
+#define EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS(statement, substr) \
+ do {\
+ ::testing::TestPartResultArray gtest_failures;\
+ ::testing::internal::SingleFailureChecker gtest_checker(\
+ &gtest_failures, ::testing::TestPartResult::kNonFatalFailure, \
+ (substr));\
+ {\
+ ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
+ ::testing::ScopedFakeTestPartResultReporter::INTERCEPT_ALL_THREADS, \
+ &gtest_failures);\
+ if (::testing::internal::AlwaysTrue()) { statement; }\
+ }\
+ } while (::testing::internal::AlwaysFalse())
+
#endif // GOOGLETEST_INCLUDE_GTEST_GTEST_SPI_H_
diff --git a/contrib/restricted/googletest/googletest/include/gtest/gtest-test-part.h b/contrib/restricted/googletest/googletest/include/gtest/gtest-test-part.h
index 4db763f926..203fdf98c6 100644
--- a/contrib/restricted/googletest/googletest/include/gtest/gtest-test-part.h
+++ b/contrib/restricted/googletest/googletest/include/gtest/gtest-test-part.h
@@ -1,184 +1,184 @@
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
// GOOGLETEST_CM0001 DO NOT DELETE
-
+
#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_TEST_PART_H_
#define GOOGLETEST_INCLUDE_GTEST_GTEST_TEST_PART_H_
-
-#include <iosfwd>
-#include <vector>
-#include "gtest/internal/gtest-internal.h"
-#include "gtest/internal/gtest-string.h"
-
+
+#include <iosfwd>
+#include <vector>
+#include "gtest/internal/gtest-internal.h"
+#include "gtest/internal/gtest-string.h"
+
GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
/* class A needs to have dll-interface to be used by clients of class B */)
-namespace testing {
-
-// A copyable object representing the result of a test part (i.e. an
-// assertion or an explicit FAIL(), ADD_FAILURE(), or SUCCESS()).
-//
-// Don't inherit from TestPartResult as its destructor is not virtual.
-class GTEST_API_ TestPartResult {
- public:
- // The possible outcomes of a test part (i.e. an assertion or an
- // explicit SUCCEED(), FAIL(), or ADD_FAILURE()).
- enum Type {
- kSuccess, // Succeeded.
- kNonFatalFailure, // Failed but the test can continue.
+namespace testing {
+
+// A copyable object representing the result of a test part (i.e. an
+// assertion or an explicit FAIL(), ADD_FAILURE(), or SUCCESS()).
+//
+// Don't inherit from TestPartResult as its destructor is not virtual.
+class GTEST_API_ TestPartResult {
+ public:
+ // The possible outcomes of a test part (i.e. an assertion or an
+ // explicit SUCCEED(), FAIL(), or ADD_FAILURE()).
+ enum Type {
+ kSuccess, // Succeeded.
+ kNonFatalFailure, // Failed but the test can continue.
kFatalFailure, // Failed and the test should be terminated.
kSkip // Skipped.
- };
-
- // C'tor. TestPartResult does NOT have a default constructor.
- // Always use this constructor (with parameters) to create a
- // TestPartResult object.
+ };
+
+ // C'tor. TestPartResult does NOT have a default constructor.
+ // Always use this constructor (with parameters) to create a
+ // TestPartResult object.
TestPartResult(Type a_type, const char* a_file_name, int a_line_number,
- const char* a_message)
- : type_(a_type),
+ const char* a_message)
+ : type_(a_type),
file_name_(a_file_name == nullptr ? "" : a_file_name),
- line_number_(a_line_number),
- summary_(ExtractSummary(a_message)),
+ line_number_(a_line_number),
+ summary_(ExtractSummary(a_message)),
message_(a_message) {}
-
- // Gets the outcome of the test part.
- Type type() const { return type_; }
-
- // Gets the name of the source file where the test part took place, or
- // NULL if it's unknown.
- const char* file_name() const {
+
+ // Gets the outcome of the test part.
+ Type type() const { return type_; }
+
+ // Gets the name of the source file where the test part took place, or
+ // NULL if it's unknown.
+ const char* file_name() const {
return file_name_.empty() ? nullptr : file_name_.c_str();
- }
-
- // Gets the line in the source file where the test part took place,
- // or -1 if it's unknown.
- int line_number() const { return line_number_; }
-
- // Gets the summary of the failure message.
- const char* summary() const { return summary_.c_str(); }
-
- // Gets the message associated with the test part.
- const char* message() const { return message_.c_str(); }
-
+ }
+
+ // Gets the line in the source file where the test part took place,
+ // or -1 if it's unknown.
+ int line_number() const { return line_number_; }
+
+ // Gets the summary of the failure message.
+ const char* summary() const { return summary_.c_str(); }
+
+ // Gets the message associated with the test part.
+ const char* message() const { return message_.c_str(); }
+
// Returns true if and only if the test part was skipped.
bool skipped() const { return type_ == kSkip; }
// Returns true if and only if the test part passed.
- bool passed() const { return type_ == kSuccess; }
-
+ bool passed() const { return type_ == kSuccess; }
+
// Returns true if and only if the test part non-fatally failed.
- bool nonfatally_failed() const { return type_ == kNonFatalFailure; }
-
+ bool nonfatally_failed() const { return type_ == kNonFatalFailure; }
+
// Returns true if and only if the test part fatally failed.
- bool fatally_failed() const { return type_ == kFatalFailure; }
-
+ bool fatally_failed() const { return type_ == kFatalFailure; }
+
// Returns true if and only if the test part failed.
bool failed() const { return fatally_failed() || nonfatally_failed(); }
- private:
- Type type_;
-
- // Gets the summary of the failure message by omitting the stack
- // trace in it.
- static std::string ExtractSummary(const char* message);
-
- // The name of the source file where the test part took place, or
- // "" if the source file is unknown.
- std::string file_name_;
- // The line in the source file where the test part took place, or -1
- // if the line number is unknown.
- int line_number_;
- std::string summary_; // The test failure summary.
- std::string message_; // The test failure message.
-};
-
-// Prints a TestPartResult object.
-std::ostream& operator<<(std::ostream& os, const TestPartResult& result);
-
-// An array of TestPartResult objects.
-//
-// Don't inherit from TestPartResultArray as its destructor is not
-// virtual.
-class GTEST_API_ TestPartResultArray {
- public:
- TestPartResultArray() {}
-
- // Appends the given TestPartResult to the array.
- void Append(const TestPartResult& result);
-
- // Returns the TestPartResult at the given index (0-based).
- const TestPartResult& GetTestPartResult(int index) const;
-
- // Returns the number of TestPartResult objects in the array.
- int size() const;
-
- private:
- std::vector<TestPartResult> array_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(TestPartResultArray);
-};
-
-// This interface knows how to report a test part result.
+ private:
+ Type type_;
+
+ // Gets the summary of the failure message by omitting the stack
+ // trace in it.
+ static std::string ExtractSummary(const char* message);
+
+ // The name of the source file where the test part took place, or
+ // "" if the source file is unknown.
+ std::string file_name_;
+ // The line in the source file where the test part took place, or -1
+ // if the line number is unknown.
+ int line_number_;
+ std::string summary_; // The test failure summary.
+ std::string message_; // The test failure message.
+};
+
+// Prints a TestPartResult object.
+std::ostream& operator<<(std::ostream& os, const TestPartResult& result);
+
+// An array of TestPartResult objects.
+//
+// Don't inherit from TestPartResultArray as its destructor is not
+// virtual.
+class GTEST_API_ TestPartResultArray {
+ public:
+ TestPartResultArray() {}
+
+ // Appends the given TestPartResult to the array.
+ void Append(const TestPartResult& result);
+
+ // Returns the TestPartResult at the given index (0-based).
+ const TestPartResult& GetTestPartResult(int index) const;
+
+ // Returns the number of TestPartResult objects in the array.
+ int size() const;
+
+ private:
+ std::vector<TestPartResult> array_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(TestPartResultArray);
+};
+
+// This interface knows how to report a test part result.
class GTEST_API_ TestPartResultReporterInterface {
- public:
- virtual ~TestPartResultReporterInterface() {}
-
- virtual void ReportTestPartResult(const TestPartResult& result) = 0;
-};
-
-namespace internal {
-
-// This helper class is used by {ASSERT|EXPECT}_NO_FATAL_FAILURE to check if a
-// statement generates new fatal failures. To do so it registers itself as the
-// current test part result reporter. Besides checking if fatal failures were
-// reported, it only delegates the reporting to the former result reporter.
-// The original result reporter is restored in the destructor.
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-class GTEST_API_ HasNewFatalFailureHelper
- : public TestPartResultReporterInterface {
- public:
- HasNewFatalFailureHelper();
+ public:
+ virtual ~TestPartResultReporterInterface() {}
+
+ virtual void ReportTestPartResult(const TestPartResult& result) = 0;
+};
+
+namespace internal {
+
+// This helper class is used by {ASSERT|EXPECT}_NO_FATAL_FAILURE to check if a
+// statement generates new fatal failures. To do so it registers itself as the
+// current test part result reporter. Besides checking if fatal failures were
+// reported, it only delegates the reporting to the former result reporter.
+// The original result reporter is restored in the destructor.
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+class GTEST_API_ HasNewFatalFailureHelper
+ : public TestPartResultReporterInterface {
+ public:
+ HasNewFatalFailureHelper();
~HasNewFatalFailureHelper() override;
void ReportTestPartResult(const TestPartResult& result) override;
- bool has_new_fatal_failure() const { return has_new_fatal_failure_; }
- private:
- bool has_new_fatal_failure_;
- TestPartResultReporterInterface* original_reporter_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(HasNewFatalFailureHelper);
-};
-
-} // namespace internal
-
-} // namespace testing
-
+ bool has_new_fatal_failure() const { return has_new_fatal_failure_; }
+ private:
+ bool has_new_fatal_failure_;
+ TestPartResultReporterInterface* original_reporter_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(HasNewFatalFailureHelper);
+};
+
+} // namespace internal
+
+} // namespace testing
+
GTEST_DISABLE_MSC_WARNINGS_POP_() // 4251
#endif // GOOGLETEST_INCLUDE_GTEST_GTEST_TEST_PART_H_
diff --git a/contrib/restricted/googletest/googletest/include/gtest/gtest-typed-test.h b/contrib/restricted/googletest/googletest/include/gtest/gtest-typed-test.h
index 8e64f88fe2..9fdc6be10d 100644
--- a/contrib/restricted/googletest/googletest/include/gtest/gtest-typed-test.h
+++ b/contrib/restricted/googletest/googletest/include/gtest/gtest-typed-test.h
@@ -1,87 +1,87 @@
-// Copyright 2008 Google Inc.
-// All Rights Reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
+// Copyright 2008 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
// GOOGLETEST_CM0001 DO NOT DELETE
#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_
#define GOOGLETEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_
-
-// This header implements typed tests and type-parameterized tests.
-
-// Typed (aka type-driven) tests repeat the same test for types in a
-// list. You must know which types you want to test with when writing
-// typed tests. Here's how you do it:
-
-#if 0
-
-// First, define a fixture class template. It should be parameterized
-// by a type. Remember to derive it from testing::Test.
-template <typename T>
-class FooTest : public testing::Test {
- public:
- ...
- typedef std::list<T> List;
- static T shared_;
- T value_;
-};
-
+
+// This header implements typed tests and type-parameterized tests.
+
+// Typed (aka type-driven) tests repeat the same test for types in a
+// list. You must know which types you want to test with when writing
+// typed tests. Here's how you do it:
+
+#if 0
+
+// First, define a fixture class template. It should be parameterized
+// by a type. Remember to derive it from testing::Test.
+template <typename T>
+class FooTest : public testing::Test {
+ public:
+ ...
+ typedef std::list<T> List;
+ static T shared_;
+ T value_;
+};
+
// Next, associate a list of types with the test suite, which will be
-// repeated for each type in the list. The typedef is necessary for
-// the macro to parse correctly.
-typedef testing::Types<char, int, unsigned int> MyTypes;
+// repeated for each type in the list. The typedef is necessary for
+// the macro to parse correctly.
+typedef testing::Types<char, int, unsigned int> MyTypes;
TYPED_TEST_SUITE(FooTest, MyTypes);
-
-// If the type list contains only one type, you can write that type
-// directly without Types<...>:
+
+// If the type list contains only one type, you can write that type
+// directly without Types<...>:
// TYPED_TEST_SUITE(FooTest, int);
-
-// Then, use TYPED_TEST() instead of TEST_F() to define as many typed
+
+// Then, use TYPED_TEST() instead of TEST_F() to define as many typed
// tests for this test suite as you want.
-TYPED_TEST(FooTest, DoesBlah) {
+TYPED_TEST(FooTest, DoesBlah) {
// Inside a test, refer to the special name TypeParam to get the type
// parameter. Since we are inside a derived class template, C++ requires
// us to visit the members of FooTest via 'this'.
- TypeParam n = this->value_;
-
- // To visit static members of the fixture, add the TestFixture::
- // prefix.
- n += TestFixture::shared_;
-
- // To refer to typedefs in the fixture, add the "typename
- // TestFixture::" prefix.
- typename TestFixture::List values;
- values.push_back(n);
- ...
-}
-
-TYPED_TEST(FooTest, HasPropertyA) { ... }
-
+ TypeParam n = this->value_;
+
+ // To visit static members of the fixture, add the TestFixture::
+ // prefix.
+ n += TestFixture::shared_;
+
+ // To refer to typedefs in the fixture, add the "typename
+ // TestFixture::" prefix.
+ typename TestFixture::List values;
+ values.push_back(n);
+ ...
+}
+
+TYPED_TEST(FooTest, HasPropertyA) { ... }
+
// TYPED_TEST_SUITE takes an optional third argument which allows to specify a
// class that generates custom test name suffixes based on the type. This should
// be a class which has a static template function GetName(int index) returning
@@ -100,98 +100,98 @@ TYPED_TEST(FooTest, HasPropertyA) { ... }
// };
// TYPED_TEST_SUITE(FooTest, MyTypes, MyTypeNames);
-#endif // 0
-
-// Type-parameterized tests are abstract test patterns parameterized
-// by a type. Compared with typed tests, type-parameterized tests
-// allow you to define the test pattern without knowing what the type
-// parameters are. The defined pattern can be instantiated with
-// different types any number of times, in any number of translation
-// units.
-//
-// If you are designing an interface or concept, you can define a
-// suite of type-parameterized tests to verify properties that any
-// valid implementation of the interface/concept should have. Then,
-// each implementation can easily instantiate the test suite to verify
-// that it conforms to the requirements, without having to write
-// similar tests repeatedly. Here's an example:
-
-#if 0
-
-// First, define a fixture class template. It should be parameterized
-// by a type. Remember to derive it from testing::Test.
-template <typename T>
-class FooTest : public testing::Test {
- ...
-};
-
+#endif // 0
+
+// Type-parameterized tests are abstract test patterns parameterized
+// by a type. Compared with typed tests, type-parameterized tests
+// allow you to define the test pattern without knowing what the type
+// parameters are. The defined pattern can be instantiated with
+// different types any number of times, in any number of translation
+// units.
+//
+// If you are designing an interface or concept, you can define a
+// suite of type-parameterized tests to verify properties that any
+// valid implementation of the interface/concept should have. Then,
+// each implementation can easily instantiate the test suite to verify
+// that it conforms to the requirements, without having to write
+// similar tests repeatedly. Here's an example:
+
+#if 0
+
+// First, define a fixture class template. It should be parameterized
+// by a type. Remember to derive it from testing::Test.
+template <typename T>
+class FooTest : public testing::Test {
+ ...
+};
+
// Next, declare that you will define a type-parameterized test suite
-// (the _P suffix is for "parameterized" or "pattern", whichever you
-// prefer):
+// (the _P suffix is for "parameterized" or "pattern", whichever you
+// prefer):
TYPED_TEST_SUITE_P(FooTest);
-
-// Then, use TYPED_TEST_P() to define as many type-parameterized tests
+
+// Then, use TYPED_TEST_P() to define as many type-parameterized tests
// for this type-parameterized test suite as you want.
-TYPED_TEST_P(FooTest, DoesBlah) {
- // Inside a test, refer to TypeParam to get the type parameter.
- TypeParam n = 0;
- ...
-}
-
-TYPED_TEST_P(FooTest, HasPropertyA) { ... }
-
-// Now the tricky part: you need to register all test patterns before
-// you can instantiate them. The first argument of the macro is the
+TYPED_TEST_P(FooTest, DoesBlah) {
+ // Inside a test, refer to TypeParam to get the type parameter.
+ TypeParam n = 0;
+ ...
+}
+
+TYPED_TEST_P(FooTest, HasPropertyA) { ... }
+
+// Now the tricky part: you need to register all test patterns before
+// you can instantiate them. The first argument of the macro is the
// test suite name; the rest are the names of the tests in this test
-// case.
+// case.
REGISTER_TYPED_TEST_SUITE_P(FooTest,
DoesBlah, HasPropertyA);
-
-// Finally, you are free to instantiate the pattern with the types you
-// want. If you put the above code in a header file, you can #include
-// it in multiple C++ source files and instantiate it multiple times.
-//
-// To distinguish different instances of the pattern, the first
-// argument to the INSTANTIATE_* macro is a prefix that will be added
+
+// Finally, you are free to instantiate the pattern with the types you
+// want. If you put the above code in a header file, you can #include
+// it in multiple C++ source files and instantiate it multiple times.
+//
+// To distinguish different instances of the pattern, the first
+// argument to the INSTANTIATE_* macro is a prefix that will be added
// to the actual test suite name. Remember to pick unique prefixes for
-// different instances.
-typedef testing::Types<char, int, unsigned int> MyTypes;
+// different instances.
+typedef testing::Types<char, int, unsigned int> MyTypes;
INSTANTIATE_TYPED_TEST_SUITE_P(My, FooTest, MyTypes);
-
-// If the type list contains only one type, you can write that type
-// directly without Types<...>:
+
+// If the type list contains only one type, you can write that type
+// directly without Types<...>:
// INSTANTIATE_TYPED_TEST_SUITE_P(My, FooTest, int);
//
// Similar to the optional argument of TYPED_TEST_SUITE above,
// INSTANTIATE_TEST_SUITE_P takes an optional fourth argument which allows to
// generate custom names.
// INSTANTIATE_TYPED_TEST_SUITE_P(My, FooTest, MyTypes, MyTypeNames);
-
-#endif // 0
-
+
+#endif // 0
+
#include "gtest/internal/gtest-internal.h"
-#include "gtest/internal/gtest-port.h"
-#include "gtest/internal/gtest-type-util.h"
-
-// Implements typed tests.
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// Expands to the name of the typedef for the type parameters of the
+#include "gtest/internal/gtest-port.h"
+#include "gtest/internal/gtest-type-util.h"
+
+// Implements typed tests.
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Expands to the name of the typedef for the type parameters of the
// given test suite.
#define GTEST_TYPE_PARAMS_(TestSuiteName) gtest_type_params_##TestSuiteName##_
-
+
// Expands to the name of the typedef for the NameGenerator, responsible for
// creating the suffixes of the name.
#define GTEST_NAME_GENERATOR_(TestSuiteName) \
gtest_type_params_##TestSuiteName##_NameGenerator
-
+
#define TYPED_TEST_SUITE(CaseName, Types, ...) \
typedef ::testing::internal::GenerateTypeList<Types>::type \
GTEST_TYPE_PARAMS_(CaseName); \
typedef ::testing::internal::NameGeneratorSelector<__VA_ARGS__>::type \
GTEST_NAME_GENERATOR_(CaseName)
-
+
#define TYPED_TEST(CaseName, TestName) \
static_assert(sizeof(GTEST_STRINGIFY_(TestName)) > 1, \
"test-name must not be empty"); \
@@ -228,43 +228,43 @@ INSTANTIATE_TYPED_TEST_SUITE_P(My, FooTest, MyTypes);
TYPED_TEST_SUITE
#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-// Implements type-parameterized tests.
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// Expands to the namespace name that the type-parameterized tests for
+// Implements type-parameterized tests.
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Expands to the namespace name that the type-parameterized tests for
// the given type-parameterized test suite are defined in. The exact
-// name of the namespace is subject to change without notice.
+// name of the namespace is subject to change without notice.
#define GTEST_SUITE_NAMESPACE_(TestSuiteName) gtest_suite_##TestSuiteName##_
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// Expands to the name of the variable used to remember the names of
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Expands to the name of the variable used to remember the names of
// the defined tests in the given test suite.
#define GTEST_TYPED_TEST_SUITE_P_STATE_(TestSuiteName) \
gtest_typed_test_suite_p_state_##TestSuiteName##_
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE DIRECTLY.
-//
-// Expands to the name of the variable used to remember the names of
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE DIRECTLY.
+//
+// Expands to the name of the variable used to remember the names of
// the registered tests in the given test suite.
#define GTEST_REGISTERED_TEST_NAMES_(TestSuiteName) \
gtest_registered_test_names_##TestSuiteName##_
-
-// The variables defined in the type-parameterized test macros are
-// static as typically these macros are used in a .h file that can be
-// #included in multiple translation units linked together.
+
+// The variables defined in the type-parameterized test macros are
+// static as typically these macros are used in a .h file that can be
+// #included in multiple translation units linked together.
#define TYPED_TEST_SUITE_P(SuiteName) \
static ::testing::internal::TypedTestSuitePState \
GTEST_TYPED_TEST_SUITE_P_STATE_(SuiteName)
-
+
// Legacy API is deprecated but still available
#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
#define TYPED_TEST_CASE_P \
static_assert(::testing::internal::TypedTestCase_P_IsDeprecated(), ""); \
TYPED_TEST_SUITE_P
#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
+
#define TYPED_TEST_P(SuiteName, TestName) \
namespace GTEST_SUITE_NAMESPACE_(SuiteName) { \
template <typename gtest_TypeParam_> \
@@ -292,7 +292,7 @@ INSTANTIATE_TYPED_TEST_SUITE_P(My, FooTest, MyTypes);
SuiteName) GTEST_ATTRIBUTE_UNUSED_ = \
GTEST_TYPED_TEST_SUITE_P_STATE_(SuiteName).VerifyRegisteredTestNames( \
GTEST_STRINGIFY_(SuiteName), __FILE__, __LINE__, #__VA_ARGS__)
-
+
// Legacy API is deprecated but still available
#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
#define REGISTER_TYPED_TEST_CASE_P \
@@ -300,7 +300,7 @@ INSTANTIATE_TYPED_TEST_SUITE_P(My, FooTest, MyTypes);
""); \
REGISTER_TYPED_TEST_SUITE_P
#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
+
#define INSTANTIATE_TYPED_TEST_SUITE_P(Prefix, SuiteName, Types, ...) \
static_assert(sizeof(GTEST_STRINGIFY_(Prefix)) > 1, \
"test-suit-prefix must not be empty"); \
diff --git a/contrib/restricted/googletest/googletest/include/gtest/gtest.h b/contrib/restricted/googletest/googletest/include/gtest/gtest.h
index aad46d8dd1..7a5d057c4a 100644
--- a/contrib/restricted/googletest/googletest/include/gtest/gtest.h
+++ b/contrib/restricted/googletest/googletest/include/gtest/gtest.h
@@ -1,80 +1,80 @@
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+//
// The Google C++ Testing and Mocking Framework (Google Test)
-//
-// This header file defines the public API for Google Test. It should be
-// included by any test program that uses Google Test.
-//
-// IMPORTANT NOTE: Due to limitation of the C++ language, we have to
-// leave some internal implementation details in this header file.
-// They are clearly marked by comments like this:
-//
-// // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-//
-// Such code is NOT meant to be used by a user directly, and is subject
-// to CHANGE WITHOUT NOTICE. Therefore DO NOT DEPEND ON IT in a user
-// program!
-//
-// Acknowledgment: Google Test borrowed the idea of automatic test
-// registration from Barthelemy Dagenais' (barthelemy@prologique.com)
-// easyUnit framework.
-
+//
+// This header file defines the public API for Google Test. It should be
+// included by any test program that uses Google Test.
+//
+// IMPORTANT NOTE: Due to limitation of the C++ language, we have to
+// leave some internal implementation details in this header file.
+// They are clearly marked by comments like this:
+//
+// // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+//
+// Such code is NOT meant to be used by a user directly, and is subject
+// to CHANGE WITHOUT NOTICE. Therefore DO NOT DEPEND ON IT in a user
+// program!
+//
+// Acknowledgment: Google Test borrowed the idea of automatic test
+// registration from Barthelemy Dagenais' (barthelemy@prologique.com)
+// easyUnit framework.
+
// GOOGLETEST_CM0001 DO NOT DELETE
#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_H_
#define GOOGLETEST_INCLUDE_GTEST_GTEST_H_
-
+
#include <cstddef>
-#include <limits>
+#include <limits>
#include <memory>
-#include <ostream>
+#include <ostream>
#include <type_traits>
-#include <vector>
-
-#include "gtest/internal/gtest-internal.h"
-#include "gtest/internal/gtest-string.h"
-#include "gtest/gtest-death-test.h"
+#include <vector>
+
+#include "gtest/internal/gtest-internal.h"
+#include "gtest/internal/gtest-string.h"
+#include "gtest/gtest-death-test.h"
#include "gtest/gtest-matchers.h"
-#include "gtest/gtest-message.h"
-#include "gtest/gtest-param-test.h"
-#include "gtest/gtest-printers.h"
-#include "gtest/gtest_prod.h"
-#include "gtest/gtest-test-part.h"
-#include "gtest/gtest-typed-test.h"
-
+#include "gtest/gtest-message.h"
+#include "gtest/gtest-param-test.h"
+#include "gtest/gtest-printers.h"
+#include "gtest/gtest_prod.h"
+#include "gtest/gtest-test-part.h"
+#include "gtest/gtest-typed-test.h"
+
GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
/* class A needs to have dll-interface to be used by clients of class B */)
-
-namespace testing {
-
+
+namespace testing {
+
// Silence C4100 (unreferenced formal parameter) and 4805
// unsafe mix of type 'const int' and type 'const bool'
#ifdef _MSC_VER
@@ -84,301 +84,301 @@ namespace testing {
#endif
-// Declares the flags.
-
-// This flag temporary enables the disabled tests.
-GTEST_DECLARE_bool_(also_run_disabled_tests);
-
-// This flag brings the debugger on an assertion failure.
-GTEST_DECLARE_bool_(break_on_failure);
-
-// This flag controls whether Google Test catches all test-thrown exceptions
-// and logs them as failures.
-GTEST_DECLARE_bool_(catch_exceptions);
-
-// This flag enables using colors in terminal output. Available values are
-// "yes" to enable colors, "no" (disable colors), or "auto" (the default)
-// to let Google Test decide.
-GTEST_DECLARE_string_(color);
-
+// Declares the flags.
+
+// This flag temporary enables the disabled tests.
+GTEST_DECLARE_bool_(also_run_disabled_tests);
+
+// This flag brings the debugger on an assertion failure.
+GTEST_DECLARE_bool_(break_on_failure);
+
+// This flag controls whether Google Test catches all test-thrown exceptions
+// and logs them as failures.
+GTEST_DECLARE_bool_(catch_exceptions);
+
+// This flag enables using colors in terminal output. Available values are
+// "yes" to enable colors, "no" (disable colors), or "auto" (the default)
+// to let Google Test decide.
+GTEST_DECLARE_string_(color);
+
// This flag controls whether the test runner should continue execution past
// first failure.
GTEST_DECLARE_bool_(fail_fast);
-// This flag sets up the filter to select by name using a glob pattern
-// the tests to run. If the filter is not given all tests are executed.
-GTEST_DECLARE_string_(filter);
-
+// This flag sets up the filter to select by name using a glob pattern
+// the tests to run. If the filter is not given all tests are executed.
+GTEST_DECLARE_string_(filter);
+
// This flag controls whether Google Test installs a signal handler that dumps
// debugging information when fatal signals are raised.
GTEST_DECLARE_bool_(install_failure_signal_handler);
-// This flag causes the Google Test to list tests. None of the tests listed
-// are actually run if the flag is provided.
-GTEST_DECLARE_bool_(list_tests);
-
-// This flag controls whether Google Test emits a detailed XML report to a file
-// in addition to its normal textual output.
-GTEST_DECLARE_string_(output);
-
+// This flag causes the Google Test to list tests. None of the tests listed
+// are actually run if the flag is provided.
+GTEST_DECLARE_bool_(list_tests);
+
+// This flag controls whether Google Test emits a detailed XML report to a file
+// in addition to its normal textual output.
+GTEST_DECLARE_string_(output);
+
// This flags control whether Google Test prints only test failures.
GTEST_DECLARE_bool_(brief);
-// This flags control whether Google Test prints the elapsed time for each
-// test.
-GTEST_DECLARE_bool_(print_time);
-
+// This flags control whether Google Test prints the elapsed time for each
+// test.
+GTEST_DECLARE_bool_(print_time);
+
// This flags control whether Google Test prints UTF8 characters as text.
GTEST_DECLARE_bool_(print_utf8);
-// This flag specifies the random number seed.
-GTEST_DECLARE_int32_(random_seed);
-
-// This flag sets how many times the tests are repeated. The default value
-// is 1. If the value is -1 the tests are repeating forever.
-GTEST_DECLARE_int32_(repeat);
-
-// This flag controls whether Google Test includes Google Test internal
-// stack frames in failure stack traces.
-GTEST_DECLARE_bool_(show_internal_stack_frames);
-
-// When this flag is specified, tests' order is randomized on every iteration.
-GTEST_DECLARE_bool_(shuffle);
-
-// This flag specifies the maximum number of stack frames to be
-// printed in a failure message.
-GTEST_DECLARE_int32_(stack_trace_depth);
-
-// When this flag is specified, a failed assertion will throw an
-// exception if exceptions are enabled, or exit the program with a
+// This flag specifies the random number seed.
+GTEST_DECLARE_int32_(random_seed);
+
+// This flag sets how many times the tests are repeated. The default value
+// is 1. If the value is -1 the tests are repeating forever.
+GTEST_DECLARE_int32_(repeat);
+
+// This flag controls whether Google Test includes Google Test internal
+// stack frames in failure stack traces.
+GTEST_DECLARE_bool_(show_internal_stack_frames);
+
+// When this flag is specified, tests' order is randomized on every iteration.
+GTEST_DECLARE_bool_(shuffle);
+
+// This flag specifies the maximum number of stack frames to be
+// printed in a failure message.
+GTEST_DECLARE_int32_(stack_trace_depth);
+
+// When this flag is specified, a failed assertion will throw an
+// exception if exceptions are enabled, or exit the program with a
// non-zero code otherwise. For use with an external test framework.
-GTEST_DECLARE_bool_(throw_on_failure);
-
-// When this flag is set with a "host:port" string, on supported
-// platforms test results are streamed to the specified port on
-// the specified host machine.
-GTEST_DECLARE_string_(stream_result_to);
-
+GTEST_DECLARE_bool_(throw_on_failure);
+
+// When this flag is set with a "host:port" string, on supported
+// platforms test results are streamed to the specified port on
+// the specified host machine.
+GTEST_DECLARE_string_(stream_result_to);
+
#if GTEST_USE_OWN_FLAGFILE_FLAG_
GTEST_DECLARE_string_(flagfile);
#endif // GTEST_USE_OWN_FLAGFILE_FLAG_
-// The upper limit for valid stack trace depths.
-const int kMaxStackTraceDepth = 100;
-
-namespace internal {
-
-class AssertHelper;
-class DefaultGlobalTestPartResultReporter;
-class ExecDeathTest;
-class NoExecDeathTest;
-class FinalSuccessChecker;
-class GTestFlagSaver;
-class StreamingListenerTest;
-class TestResultAccessor;
-class TestEventListenersAccessor;
-class TestEventRepeater;
-class UnitTestRecordPropertyTestHelper;
-class WindowsDeathTest;
+// The upper limit for valid stack trace depths.
+const int kMaxStackTraceDepth = 100;
+
+namespace internal {
+
+class AssertHelper;
+class DefaultGlobalTestPartResultReporter;
+class ExecDeathTest;
+class NoExecDeathTest;
+class FinalSuccessChecker;
+class GTestFlagSaver;
+class StreamingListenerTest;
+class TestResultAccessor;
+class TestEventListenersAccessor;
+class TestEventRepeater;
+class UnitTestRecordPropertyTestHelper;
+class WindowsDeathTest;
class FuchsiaDeathTest;
-class UnitTestImpl* GetUnitTestImpl();
-void ReportFailureInUnknownLocation(TestPartResult::Type result_type,
- const std::string& message);
+class UnitTestImpl* GetUnitTestImpl();
+void ReportFailureInUnknownLocation(TestPartResult::Type result_type,
+ const std::string& message);
std::set<std::string>* GetIgnoredParameterizedTestSuites();
-
-} // namespace internal
-
-// The friend relationship of some of these classes is cyclic.
-// If we don't forward declare them the compiler might confuse the classes
-// in friendship clauses with same named classes on the scope.
-class Test;
+
+} // namespace internal
+
+// The friend relationship of some of these classes is cyclic.
+// If we don't forward declare them the compiler might confuse the classes
+// in friendship clauses with same named classes on the scope.
+class Test;
class TestSuite;
// Old API is still available but deprecated
#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
using TestCase = TestSuite;
#endif
-class TestInfo;
-class UnitTest;
-
-// A class for indicating whether an assertion was successful. When
-// the assertion wasn't successful, the AssertionResult object
-// remembers a non-empty message that describes how it failed.
-//
-// To create an instance of this class, use one of the factory functions
-// (AssertionSuccess() and AssertionFailure()).
-//
-// This class is useful for two purposes:
-// 1. Defining predicate functions to be used with Boolean test assertions
-// EXPECT_TRUE/EXPECT_FALSE and their ASSERT_ counterparts
-// 2. Defining predicate-format functions to be
-// used with predicate assertions (ASSERT_PRED_FORMAT*, etc).
-//
-// For example, if you define IsEven predicate:
-//
-// testing::AssertionResult IsEven(int n) {
-// if ((n % 2) == 0)
-// return testing::AssertionSuccess();
-// else
-// return testing::AssertionFailure() << n << " is odd";
-// }
-//
-// Then the failed expectation EXPECT_TRUE(IsEven(Fib(5)))
-// will print the message
-//
-// Value of: IsEven(Fib(5))
-// Actual: false (5 is odd)
-// Expected: true
-//
-// instead of a more opaque
-//
-// Value of: IsEven(Fib(5))
-// Actual: false
-// Expected: true
-//
-// in case IsEven is a simple Boolean predicate.
-//
-// If you expect your predicate to be reused and want to support informative
-// messages in EXPECT_FALSE and ASSERT_FALSE (negative assertions show up
-// about half as often as positive ones in our tests), supply messages for
-// both success and failure cases:
-//
-// testing::AssertionResult IsEven(int n) {
-// if ((n % 2) == 0)
-// return testing::AssertionSuccess() << n << " is even";
-// else
-// return testing::AssertionFailure() << n << " is odd";
-// }
-//
-// Then a statement EXPECT_FALSE(IsEven(Fib(6))) will print
-//
-// Value of: IsEven(Fib(6))
-// Actual: true (8 is even)
-// Expected: false
-//
-// NB: Predicates that support negative Boolean assertions have reduced
-// performance in positive ones so be careful not to use them in tests
-// that have lots (tens of thousands) of positive Boolean assertions.
-//
-// To use this class with EXPECT_PRED_FORMAT assertions such as:
-//
-// // Verifies that Foo() returns an even number.
-// EXPECT_PRED_FORMAT1(IsEven, Foo());
-//
-// you need to define:
-//
-// testing::AssertionResult IsEven(const char* expr, int n) {
-// if ((n % 2) == 0)
-// return testing::AssertionSuccess();
-// else
-// return testing::AssertionFailure()
-// << "Expected: " << expr << " is even\n Actual: it's " << n;
-// }
-//
-// If Foo() returns 5, you will see the following message:
-//
-// Expected: Foo() is even
-// Actual: it's 5
-//
-class GTEST_API_ AssertionResult {
- public:
- // Copy constructor.
- // Used in EXPECT_TRUE/FALSE(assertion_result).
- AssertionResult(const AssertionResult& other);
-
+class TestInfo;
+class UnitTest;
+
+// A class for indicating whether an assertion was successful. When
+// the assertion wasn't successful, the AssertionResult object
+// remembers a non-empty message that describes how it failed.
+//
+// To create an instance of this class, use one of the factory functions
+// (AssertionSuccess() and AssertionFailure()).
+//
+// This class is useful for two purposes:
+// 1. Defining predicate functions to be used with Boolean test assertions
+// EXPECT_TRUE/EXPECT_FALSE and their ASSERT_ counterparts
+// 2. Defining predicate-format functions to be
+// used with predicate assertions (ASSERT_PRED_FORMAT*, etc).
+//
+// For example, if you define IsEven predicate:
+//
+// testing::AssertionResult IsEven(int n) {
+// if ((n % 2) == 0)
+// return testing::AssertionSuccess();
+// else
+// return testing::AssertionFailure() << n << " is odd";
+// }
+//
+// Then the failed expectation EXPECT_TRUE(IsEven(Fib(5)))
+// will print the message
+//
+// Value of: IsEven(Fib(5))
+// Actual: false (5 is odd)
+// Expected: true
+//
+// instead of a more opaque
+//
+// Value of: IsEven(Fib(5))
+// Actual: false
+// Expected: true
+//
+// in case IsEven is a simple Boolean predicate.
+//
+// If you expect your predicate to be reused and want to support informative
+// messages in EXPECT_FALSE and ASSERT_FALSE (negative assertions show up
+// about half as often as positive ones in our tests), supply messages for
+// both success and failure cases:
+//
+// testing::AssertionResult IsEven(int n) {
+// if ((n % 2) == 0)
+// return testing::AssertionSuccess() << n << " is even";
+// else
+// return testing::AssertionFailure() << n << " is odd";
+// }
+//
+// Then a statement EXPECT_FALSE(IsEven(Fib(6))) will print
+//
+// Value of: IsEven(Fib(6))
+// Actual: true (8 is even)
+// Expected: false
+//
+// NB: Predicates that support negative Boolean assertions have reduced
+// performance in positive ones so be careful not to use them in tests
+// that have lots (tens of thousands) of positive Boolean assertions.
+//
+// To use this class with EXPECT_PRED_FORMAT assertions such as:
+//
+// // Verifies that Foo() returns an even number.
+// EXPECT_PRED_FORMAT1(IsEven, Foo());
+//
+// you need to define:
+//
+// testing::AssertionResult IsEven(const char* expr, int n) {
+// if ((n % 2) == 0)
+// return testing::AssertionSuccess();
+// else
+// return testing::AssertionFailure()
+// << "Expected: " << expr << " is even\n Actual: it's " << n;
+// }
+//
+// If Foo() returns 5, you will see the following message:
+//
+// Expected: Foo() is even
+// Actual: it's 5
+//
+class GTEST_API_ AssertionResult {
+ public:
+ // Copy constructor.
+ // Used in EXPECT_TRUE/FALSE(assertion_result).
+ AssertionResult(const AssertionResult& other);
+
// C4800 is a level 3 warning in Visual Studio 2015 and earlier.
// This warning is not emitted in Visual Studio 2017.
// This warning is off by default starting in Visual Studio 2019 but can be
// enabled with command-line options.
#if defined(_MSC_VER) && (_MSC_VER < 1910 || _MSC_VER >= 1920)
- GTEST_DISABLE_MSC_WARNINGS_PUSH_(4800 /* forcing value to bool */)
+ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4800 /* forcing value to bool */)
#endif
-
- // Used in the EXPECT_TRUE/FALSE(bool_expression).
- //
- // T must be contextually convertible to bool.
- //
- // The second parameter prevents this overload from being considered if
- // the argument is implicitly convertible to AssertionResult. In that case
- // we want AssertionResult's copy constructor to be used.
- template <typename T>
- explicit AssertionResult(
- const T& success,
+
+ // Used in the EXPECT_TRUE/FALSE(bool_expression).
+ //
+ // T must be contextually convertible to bool.
+ //
+ // The second parameter prevents this overload from being considered if
+ // the argument is implicitly convertible to AssertionResult. In that case
+ // we want AssertionResult's copy constructor to be used.
+ template <typename T>
+ explicit AssertionResult(
+ const T& success,
typename std::enable_if<
!std::is_convertible<T, AssertionResult>::value>::type*
/*enabler*/
= nullptr)
- : success_(success) {}
-
+ : success_(success) {}
+
#if defined(_MSC_VER) && (_MSC_VER < 1910 || _MSC_VER >= 1920)
- GTEST_DISABLE_MSC_WARNINGS_POP_()
+ GTEST_DISABLE_MSC_WARNINGS_POP_()
#endif
-
- // Assignment operator.
- AssertionResult& operator=(AssertionResult other) {
- swap(other);
- return *this;
- }
-
+
+ // Assignment operator.
+ AssertionResult& operator=(AssertionResult other) {
+ swap(other);
+ return *this;
+ }
+
// Returns true if and only if the assertion succeeded.
- operator bool() const { return success_; } // NOLINT
-
- // Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE.
- AssertionResult operator!() const;
-
- // Returns the text streamed into this AssertionResult. Test assertions
- // use it when they fail (i.e., the predicate's outcome doesn't match the
- // assertion's expectation). When nothing has been streamed into the
- // object, returns an empty string.
- const char* message() const {
+ operator bool() const { return success_; } // NOLINT
+
+ // Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE.
+ AssertionResult operator!() const;
+
+ // Returns the text streamed into this AssertionResult. Test assertions
+ // use it when they fail (i.e., the predicate's outcome doesn't match the
+ // assertion's expectation). When nothing has been streamed into the
+ // object, returns an empty string.
+ const char* message() const {
return message_.get() != nullptr ? message_->c_str() : "";
- }
- // Deprecated; please use message() instead.
- const char* failure_message() const { return message(); }
-
- // Streams a custom failure message into this object.
- template <typename T> AssertionResult& operator<<(const T& value) {
- AppendMessage(Message() << value);
- return *this;
- }
-
- // Allows streaming basic output manipulators such as endl or flush into
- // this object.
- AssertionResult& operator<<(
- ::std::ostream& (*basic_manipulator)(::std::ostream& stream)) {
- AppendMessage(Message() << basic_manipulator);
- return *this;
- }
-
- private:
- // Appends the contents of message to message_.
- void AppendMessage(const Message& a_message) {
+ }
+ // Deprecated; please use message() instead.
+ const char* failure_message() const { return message(); }
+
+ // Streams a custom failure message into this object.
+ template <typename T> AssertionResult& operator<<(const T& value) {
+ AppendMessage(Message() << value);
+ return *this;
+ }
+
+ // Allows streaming basic output manipulators such as endl or flush into
+ // this object.
+ AssertionResult& operator<<(
+ ::std::ostream& (*basic_manipulator)(::std::ostream& stream)) {
+ AppendMessage(Message() << basic_manipulator);
+ return *this;
+ }
+
+ private:
+ // Appends the contents of message to message_.
+ void AppendMessage(const Message& a_message) {
if (message_.get() == nullptr) message_.reset(new ::std::string);
- message_->append(a_message.GetString().c_str());
- }
-
- // Swap the contents of this AssertionResult with other.
- void swap(AssertionResult& other);
-
- // Stores result of the assertion predicate.
- bool success_;
- // Stores the message describing the condition in case the expectation
- // construct is not satisfied with the predicate's outcome.
- // Referenced via a pointer to avoid taking too much stack frame space
- // with test assertions.
+ message_->append(a_message.GetString().c_str());
+ }
+
+ // Swap the contents of this AssertionResult with other.
+ void swap(AssertionResult& other);
+
+ // Stores result of the assertion predicate.
+ bool success_;
+ // Stores the message describing the condition in case the expectation
+ // construct is not satisfied with the predicate's outcome.
+ // Referenced via a pointer to avoid taking too much stack frame space
+ // with test assertions.
std::unique_ptr< ::std::string> message_;
-};
-
-// Makes a successful assertion result.
-GTEST_API_ AssertionResult AssertionSuccess();
-
-// Makes a failed assertion result.
-GTEST_API_ AssertionResult AssertionFailure();
-
-// Makes a failed assertion result with the given failure message.
-// Deprecated; use AssertionFailure() << msg.
-GTEST_API_ AssertionResult AssertionFailure(const Message& msg);
-
+};
+
+// Makes a successful assertion result.
+GTEST_API_ AssertionResult AssertionSuccess();
+
+// Makes a failed assertion result.
+GTEST_API_ AssertionResult AssertionFailure();
+
+// Makes a failed assertion result with the given failure message.
+// Deprecated; use AssertionFailure() << msg.
+GTEST_API_ AssertionResult AssertionFailure(const Message& msg);
+
} // namespace testing
// Includes the auto-generated header that implements a family of generic
@@ -388,572 +388,572 @@ GTEST_API_ AssertionResult AssertionFailure(const Message& msg);
namespace testing {
-// The abstract class that all tests inherit from.
-//
+// The abstract class that all tests inherit from.
+//
// In Google Test, a unit test program contains one or many TestSuites, and
// each TestSuite contains one or many Tests.
-//
-// When you define a test using the TEST macro, you don't need to
-// explicitly derive from Test - the TEST macro automatically does
-// this for you.
-//
-// The only time you derive from Test is when defining a test fixture
+//
+// When you define a test using the TEST macro, you don't need to
+// explicitly derive from Test - the TEST macro automatically does
+// this for you.
+//
+// The only time you derive from Test is when defining a test fixture
// to be used in a TEST_F. For example:
-//
-// class FooTest : public testing::Test {
-// protected:
-// void SetUp() override { ... }
-// void TearDown() override { ... }
-// ...
-// };
-//
-// TEST_F(FooTest, Bar) { ... }
-// TEST_F(FooTest, Baz) { ... }
-//
-// Test is not copyable.
-class GTEST_API_ Test {
- public:
- friend class TestInfo;
-
- // The d'tor is virtual as we intend to inherit from Test.
- virtual ~Test();
-
+//
+// class FooTest : public testing::Test {
+// protected:
+// void SetUp() override { ... }
+// void TearDown() override { ... }
+// ...
+// };
+//
+// TEST_F(FooTest, Bar) { ... }
+// TEST_F(FooTest, Baz) { ... }
+//
+// Test is not copyable.
+class GTEST_API_ Test {
+ public:
+ friend class TestInfo;
+
+ // The d'tor is virtual as we intend to inherit from Test.
+ virtual ~Test();
+
// Sets up the stuff shared by all tests in this test suite.
- //
+ //
// Google Test will call Foo::SetUpTestSuite() before running the first
// test in test suite Foo. Hence a sub-class can define its own
// SetUpTestSuite() method to shadow the one defined in the super
- // class.
+ // class.
static void SetUpTestSuite() {}
-
+
// Tears down the stuff shared by all tests in this test suite.
- //
+ //
// Google Test will call Foo::TearDownTestSuite() after running the last
// test in test suite Foo. Hence a sub-class can define its own
// TearDownTestSuite() method to shadow the one defined in the super
- // class.
+ // class.
static void TearDownTestSuite() {}
// Legacy API is deprecated but still available. Use SetUpTestSuite and
// TearDownTestSuite instead.
#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
- static void TearDownTestCase() {}
+ static void TearDownTestCase() {}
static void SetUpTestCase() {}
#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
+
// Returns true if and only if the current test has a fatal failure.
- static bool HasFatalFailure();
-
+ static bool HasFatalFailure();
+
// Returns true if and only if the current test has a non-fatal failure.
- static bool HasNonfatalFailure();
-
+ static bool HasNonfatalFailure();
+
// Returns true if and only if the current test was skipped.
static bool IsSkipped();
// Returns true if and only if the current test has a (either fatal or
- // non-fatal) failure.
- static bool HasFailure() { return HasFatalFailure() || HasNonfatalFailure(); }
-
+ // non-fatal) failure.
+ static bool HasFailure() { return HasFatalFailure() || HasNonfatalFailure(); }
+
// Logs a property for the current test, test suite, or for the entire
- // invocation of the test program when used outside of the context of a
+ // invocation of the test program when used outside of the context of a
// test suite. Only the last value for a given key is remembered. These
- // are public static so they can be called from utility functions that are
- // not members of the test fixture. Calls to RecordProperty made during
- // lifespan of the test (from the moment its constructor starts to the
- // moment its destructor finishes) will be output in XML as attributes of
- // the <testcase> element. Properties recorded from fixture's
+ // are public static so they can be called from utility functions that are
+ // not members of the test fixture. Calls to RecordProperty made during
+ // lifespan of the test (from the moment its constructor starts to the
+ // moment its destructor finishes) will be output in XML as attributes of
+ // the <testcase> element. Properties recorded from fixture's
// SetUpTestSuite or TearDownTestSuite are logged as attributes of the
- // corresponding <testsuite> element. Calls to RecordProperty made in the
- // global context (before or after invocation of RUN_ALL_TESTS and from
- // SetUp/TearDown method of Environment objects registered with Google
- // Test) will be output as attributes of the <testsuites> element.
- static void RecordProperty(const std::string& key, const std::string& value);
- static void RecordProperty(const std::string& key, int value);
-
- protected:
- // Creates a Test object.
- Test();
-
- // Sets up the test fixture.
- virtual void SetUp();
-
- // Tears down the test fixture.
- virtual void TearDown();
-
- private:
+ // corresponding <testsuite> element. Calls to RecordProperty made in the
+ // global context (before or after invocation of RUN_ALL_TESTS and from
+ // SetUp/TearDown method of Environment objects registered with Google
+ // Test) will be output as attributes of the <testsuites> element.
+ static void RecordProperty(const std::string& key, const std::string& value);
+ static void RecordProperty(const std::string& key, int value);
+
+ protected:
+ // Creates a Test object.
+ Test();
+
+ // Sets up the test fixture.
+ virtual void SetUp();
+
+ // Tears down the test fixture.
+ virtual void TearDown();
+
+ private:
// Returns true if and only if the current test has the same fixture class
// as the first test in the current test suite.
- static bool HasSameFixtureClass();
-
- // Runs the test after the test fixture has been set up.
- //
- // A sub-class must implement this to define the test logic.
- //
- // DO NOT OVERRIDE THIS FUNCTION DIRECTLY IN A USER PROGRAM.
- // Instead, use the TEST or TEST_F macro.
- virtual void TestBody() = 0;
-
- // Sets up, executes, and tears down the test.
- void Run();
-
- // Deletes self. We deliberately pick an unusual name for this
- // internal method to avoid clashing with names used in user TESTs.
- void DeleteSelf_() { delete this; }
-
+ static bool HasSameFixtureClass();
+
+ // Runs the test after the test fixture has been set up.
+ //
+ // A sub-class must implement this to define the test logic.
+ //
+ // DO NOT OVERRIDE THIS FUNCTION DIRECTLY IN A USER PROGRAM.
+ // Instead, use the TEST or TEST_F macro.
+ virtual void TestBody() = 0;
+
+ // Sets up, executes, and tears down the test.
+ void Run();
+
+ // Deletes self. We deliberately pick an unusual name for this
+ // internal method to avoid clashing with names used in user TESTs.
+ void DeleteSelf_() { delete this; }
+
const std::unique_ptr<GTEST_FLAG_SAVER_> gtest_flag_saver_;
-
- // Often a user misspells SetUp() as Setup() and spends a long time
- // wondering why it is never called by Google Test. The declaration of
- // the following method is solely for catching such an error at
- // compile time:
- //
- // - The return type is deliberately chosen to be not void, so it
- // will be a conflict if void Setup() is declared in the user's
- // test fixture.
- //
- // - This method is private, so it will be another compiler error
- // if the method is called from the user's test fixture.
- //
- // DO NOT OVERRIDE THIS FUNCTION.
- //
- // If you see an error about overriding the following function or
- // about it being private, you have mis-spelled SetUp() as Setup().
- struct Setup_should_be_spelled_SetUp {};
+
+ // Often a user misspells SetUp() as Setup() and spends a long time
+ // wondering why it is never called by Google Test. The declaration of
+ // the following method is solely for catching such an error at
+ // compile time:
+ //
+ // - The return type is deliberately chosen to be not void, so it
+ // will be a conflict if void Setup() is declared in the user's
+ // test fixture.
+ //
+ // - This method is private, so it will be another compiler error
+ // if the method is called from the user's test fixture.
+ //
+ // DO NOT OVERRIDE THIS FUNCTION.
+ //
+ // If you see an error about overriding the following function or
+ // about it being private, you have mis-spelled SetUp() as Setup().
+ struct Setup_should_be_spelled_SetUp {};
virtual Setup_should_be_spelled_SetUp* Setup() { return nullptr; }
-
- // We disallow copying Tests.
- GTEST_DISALLOW_COPY_AND_ASSIGN_(Test);
-};
-
-typedef internal::TimeInMillis TimeInMillis;
-
-// A copyable object representing a user specified test property which can be
-// output as a key/value string pair.
-//
-// Don't inherit from TestProperty as its destructor is not virtual.
-class TestProperty {
- public:
- // C'tor. TestProperty does NOT have a default constructor.
- // Always use this constructor (with parameters) to create a
- // TestProperty object.
- TestProperty(const std::string& a_key, const std::string& a_value) :
- key_(a_key), value_(a_value) {
- }
-
- // Gets the user supplied key.
- const char* key() const {
- return key_.c_str();
- }
-
- // Gets the user supplied value.
- const char* value() const {
- return value_.c_str();
- }
-
- // Sets a new value, overriding the one supplied in the constructor.
- void SetValue(const std::string& new_value) {
- value_ = new_value;
- }
-
- private:
- // The key supplied by the user.
- std::string key_;
- // The value supplied by the user.
- std::string value_;
-};
-
-// The result of a single Test. This includes a list of
-// TestPartResults, a list of TestProperties, a count of how many
-// death tests there are in the Test, and how much time it took to run
-// the Test.
-//
-// TestResult is not copyable.
-class GTEST_API_ TestResult {
- public:
- // Creates an empty TestResult.
- TestResult();
-
- // D'tor. Do not inherit from TestResult.
- ~TestResult();
-
- // Gets the number of all test parts. This is the sum of the number
- // of successful test parts and the number of failed test parts.
- int total_part_count() const;
-
- // Returns the number of the test properties.
- int test_property_count() const;
-
+
+ // We disallow copying Tests.
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(Test);
+};
+
+typedef internal::TimeInMillis TimeInMillis;
+
+// A copyable object representing a user specified test property which can be
+// output as a key/value string pair.
+//
+// Don't inherit from TestProperty as its destructor is not virtual.
+class TestProperty {
+ public:
+ // C'tor. TestProperty does NOT have a default constructor.
+ // Always use this constructor (with parameters) to create a
+ // TestProperty object.
+ TestProperty(const std::string& a_key, const std::string& a_value) :
+ key_(a_key), value_(a_value) {
+ }
+
+ // Gets the user supplied key.
+ const char* key() const {
+ return key_.c_str();
+ }
+
+ // Gets the user supplied value.
+ const char* value() const {
+ return value_.c_str();
+ }
+
+ // Sets a new value, overriding the one supplied in the constructor.
+ void SetValue(const std::string& new_value) {
+ value_ = new_value;
+ }
+
+ private:
+ // The key supplied by the user.
+ std::string key_;
+ // The value supplied by the user.
+ std::string value_;
+};
+
+// The result of a single Test. This includes a list of
+// TestPartResults, a list of TestProperties, a count of how many
+// death tests there are in the Test, and how much time it took to run
+// the Test.
+//
+// TestResult is not copyable.
+class GTEST_API_ TestResult {
+ public:
+ // Creates an empty TestResult.
+ TestResult();
+
+ // D'tor. Do not inherit from TestResult.
+ ~TestResult();
+
+ // Gets the number of all test parts. This is the sum of the number
+ // of successful test parts and the number of failed test parts.
+ int total_part_count() const;
+
+ // Returns the number of the test properties.
+ int test_property_count() const;
+
// Returns true if and only if the test passed (i.e. no test part failed).
bool Passed() const { return !Skipped() && !Failed(); }
-
+
// Returns true if and only if the test was skipped.
bool Skipped() const;
// Returns true if and only if the test failed.
- bool Failed() const;
-
+ bool Failed() const;
+
// Returns true if and only if the test fatally failed.
- bool HasFatalFailure() const;
-
+ bool HasFatalFailure() const;
+
// Returns true if and only if the test has a non-fatal failure.
- bool HasNonfatalFailure() const;
-
- // Returns the elapsed time, in milliseconds.
- TimeInMillis elapsed_time() const { return elapsed_time_; }
-
+ bool HasNonfatalFailure() const;
+
+ // Returns the elapsed time, in milliseconds.
+ TimeInMillis elapsed_time() const { return elapsed_time_; }
+
// Gets the time of the test case start, in ms from the start of the
// UNIX epoch.
TimeInMillis start_timestamp() const { return start_timestamp_; }
// Returns the i-th test part result among all the results. i can range from 0
// to total_part_count() - 1. If i is not in that range, aborts the program.
- const TestPartResult& GetTestPartResult(int i) const;
-
- // Returns the i-th test property. i can range from 0 to
- // test_property_count() - 1. If i is not in that range, aborts the
- // program.
- const TestProperty& GetTestProperty(int i) const;
-
- private:
- friend class TestInfo;
+ const TestPartResult& GetTestPartResult(int i) const;
+
+ // Returns the i-th test property. i can range from 0 to
+ // test_property_count() - 1. If i is not in that range, aborts the
+ // program.
+ const TestProperty& GetTestProperty(int i) const;
+
+ private:
+ friend class TestInfo;
friend class TestSuite;
- friend class UnitTest;
- friend class internal::DefaultGlobalTestPartResultReporter;
- friend class internal::ExecDeathTest;
- friend class internal::TestResultAccessor;
- friend class internal::UnitTestImpl;
- friend class internal::WindowsDeathTest;
+ friend class UnitTest;
+ friend class internal::DefaultGlobalTestPartResultReporter;
+ friend class internal::ExecDeathTest;
+ friend class internal::TestResultAccessor;
+ friend class internal::UnitTestImpl;
+ friend class internal::WindowsDeathTest;
friend class internal::FuchsiaDeathTest;
-
- // Gets the vector of TestPartResults.
- const std::vector<TestPartResult>& test_part_results() const {
- return test_part_results_;
- }
-
- // Gets the vector of TestProperties.
- const std::vector<TestProperty>& test_properties() const {
- return test_properties_;
- }
-
+
+ // Gets the vector of TestPartResults.
+ const std::vector<TestPartResult>& test_part_results() const {
+ return test_part_results_;
+ }
+
+ // Gets the vector of TestProperties.
+ const std::vector<TestProperty>& test_properties() const {
+ return test_properties_;
+ }
+
// Sets the start time.
void set_start_timestamp(TimeInMillis start) { start_timestamp_ = start; }
- // Sets the elapsed time.
- void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; }
-
- // Adds a test property to the list. The property is validated and may add
- // a non-fatal failure if invalid (e.g., if it conflicts with reserved
- // key names). If a property is already recorded for the same key, the
- // value will be updated, rather than storing multiple values for the same
- // key. xml_element specifies the element for which the property is being
- // recorded and is used for validation.
- void RecordProperty(const std::string& xml_element,
- const TestProperty& test_property);
-
- // Adds a failure if the key is a reserved attribute of Google Test
+ // Sets the elapsed time.
+ void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; }
+
+ // Adds a test property to the list. The property is validated and may add
+ // a non-fatal failure if invalid (e.g., if it conflicts with reserved
+ // key names). If a property is already recorded for the same key, the
+ // value will be updated, rather than storing multiple values for the same
+ // key. xml_element specifies the element for which the property is being
+ // recorded and is used for validation.
+ void RecordProperty(const std::string& xml_element,
+ const TestProperty& test_property);
+
+ // Adds a failure if the key is a reserved attribute of Google Test
// testsuite tags. Returns true if the property is valid.
// FIXME: Validate attribute names are legal and human readable.
- static bool ValidateTestProperty(const std::string& xml_element,
- const TestProperty& test_property);
-
- // Adds a test part result to the list.
- void AddTestPartResult(const TestPartResult& test_part_result);
-
- // Returns the death test count.
- int death_test_count() const { return death_test_count_; }
-
- // Increments the death test count, returning the new count.
- int increment_death_test_count() { return ++death_test_count_; }
-
- // Clears the test part results.
- void ClearTestPartResults();
-
- // Clears the object.
- void Clear();
-
- // Protects mutable state of the property vector and of owned
- // properties, whose values may be updated.
+ static bool ValidateTestProperty(const std::string& xml_element,
+ const TestProperty& test_property);
+
+ // Adds a test part result to the list.
+ void AddTestPartResult(const TestPartResult& test_part_result);
+
+ // Returns the death test count.
+ int death_test_count() const { return death_test_count_; }
+
+ // Increments the death test count, returning the new count.
+ int increment_death_test_count() { return ++death_test_count_; }
+
+ // Clears the test part results.
+ void ClearTestPartResults();
+
+ // Clears the object.
+ void Clear();
+
+ // Protects mutable state of the property vector and of owned
+ // properties, whose values may be updated.
internal::Mutex test_properties_mutex_;
-
- // The vector of TestPartResults
- std::vector<TestPartResult> test_part_results_;
- // The vector of TestProperties
- std::vector<TestProperty> test_properties_;
- // Running count of death tests.
- int death_test_count_;
+
+ // The vector of TestPartResults
+ std::vector<TestPartResult> test_part_results_;
+ // The vector of TestProperties
+ std::vector<TestProperty> test_properties_;
+ // Running count of death tests.
+ int death_test_count_;
// The start time, in milliseconds since UNIX Epoch.
TimeInMillis start_timestamp_;
- // The elapsed time, in milliseconds.
- TimeInMillis elapsed_time_;
-
- // We disallow copying TestResult.
- GTEST_DISALLOW_COPY_AND_ASSIGN_(TestResult);
-}; // class TestResult
-
-// A TestInfo object stores the following information about a test:
-//
+ // The elapsed time, in milliseconds.
+ TimeInMillis elapsed_time_;
+
+ // We disallow copying TestResult.
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(TestResult);
+}; // class TestResult
+
+// A TestInfo object stores the following information about a test:
+//
// Test suite name
-// Test name
-// Whether the test should be run
-// A function pointer that creates the test object when invoked
-// Test result
-//
-// The constructor of TestInfo registers itself with the UnitTest
-// singleton such that the RUN_ALL_TESTS() macro knows which tests to
-// run.
-class GTEST_API_ TestInfo {
- public:
- // Destructs a TestInfo object. This function is not virtual, so
- // don't inherit from TestInfo.
- ~TestInfo();
-
+// Test name
+// Whether the test should be run
+// A function pointer that creates the test object when invoked
+// Test result
+//
+// The constructor of TestInfo registers itself with the UnitTest
+// singleton such that the RUN_ALL_TESTS() macro knows which tests to
+// run.
+class GTEST_API_ TestInfo {
+ public:
+ // Destructs a TestInfo object. This function is not virtual, so
+ // don't inherit from TestInfo.
+ ~TestInfo();
+
// Returns the test suite name.
const char* test_suite_name() const { return test_suite_name_.c_str(); }
-
+
// Legacy API is deprecated but still available
#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
const char* test_case_name() const { return test_suite_name(); }
#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
- // Returns the test name.
- const char* name() const { return name_.c_str(); }
-
- // Returns the name of the parameter type, or NULL if this is not a typed
- // or a type-parameterized test.
- const char* type_param() const {
+ // Returns the test name.
+ const char* name() const { return name_.c_str(); }
+
+ // Returns the name of the parameter type, or NULL if this is not a typed
+ // or a type-parameterized test.
+ const char* type_param() const {
if (type_param_.get() != nullptr) return type_param_->c_str();
return nullptr;
- }
-
- // Returns the text representation of the value parameter, or NULL if this
- // is not a value-parameterized test.
- const char* value_param() const {
+ }
+
+ // Returns the text representation of the value parameter, or NULL if this
+ // is not a value-parameterized test.
+ const char* value_param() const {
if (value_param_.get() != nullptr) return value_param_->c_str();
return nullptr;
- }
-
- // Returns the file name where this test is defined.
- const char* file() const { return location_.file.c_str(); }
-
- // Returns the line where this test is defined.
- int line() const { return location_.line; }
-
+ }
+
+ // Returns the file name where this test is defined.
+ const char* file() const { return location_.file.c_str(); }
+
+ // Returns the line where this test is defined.
+ int line() const { return location_.line; }
+
// Return true if this test should not be run because it's in another shard.
bool is_in_another_shard() const { return is_in_another_shard_; }
- // Returns true if this test should run, that is if the test is not
- // disabled (or it is disabled but the also_run_disabled_tests flag has
- // been specified) and its full name matches the user-specified filter.
- //
- // Google Test allows the user to filter the tests by their full names.
+ // Returns true if this test should run, that is if the test is not
+ // disabled (or it is disabled but the also_run_disabled_tests flag has
+ // been specified) and its full name matches the user-specified filter.
+ //
+ // Google Test allows the user to filter the tests by their full names.
// The full name of a test Bar in test suite Foo is defined as
- // "Foo.Bar". Only the tests that match the filter will run.
- //
- // A filter is a colon-separated list of glob (not regex) patterns,
- // optionally followed by a '-' and a colon-separated list of
- // negative patterns (tests to exclude). A test is run if it
- // matches one of the positive patterns and does not match any of
- // the negative patterns.
- //
- // For example, *A*:Foo.* is a filter that matches any string that
- // contains the character 'A' or starts with "Foo.".
- bool should_run() const { return should_run_; }
-
+ // "Foo.Bar". Only the tests that match the filter will run.
+ //
+ // A filter is a colon-separated list of glob (not regex) patterns,
+ // optionally followed by a '-' and a colon-separated list of
+ // negative patterns (tests to exclude). A test is run if it
+ // matches one of the positive patterns and does not match any of
+ // the negative patterns.
+ //
+ // For example, *A*:Foo.* is a filter that matches any string that
+ // contains the character 'A' or starts with "Foo.".
+ bool should_run() const { return should_run_; }
+
// Returns true if and only if this test will appear in the XML report.
- bool is_reportable() const {
+ bool is_reportable() const {
// The XML report includes tests matching the filter, excluding those
// run in other shards.
return matches_filter_ && !is_in_another_shard_;
- }
-
- // Returns the result of the test.
- const TestResult* result() const { return &result_; }
-
- private:
-#if GTEST_HAS_DEATH_TEST
- friend class internal::DefaultDeathTestFactory;
-#endif // GTEST_HAS_DEATH_TEST
- friend class Test;
+ }
+
+ // Returns the result of the test.
+ const TestResult* result() const { return &result_; }
+
+ private:
+#if GTEST_HAS_DEATH_TEST
+ friend class internal::DefaultDeathTestFactory;
+#endif // GTEST_HAS_DEATH_TEST
+ friend class Test;
friend class TestSuite;
- friend class internal::UnitTestImpl;
- friend class internal::StreamingListenerTest;
- friend TestInfo* internal::MakeAndRegisterTestInfo(
+ friend class internal::UnitTestImpl;
+ friend class internal::StreamingListenerTest;
+ friend TestInfo* internal::MakeAndRegisterTestInfo(
const char* test_suite_name, const char* name, const char* type_param,
const char* value_param, internal::CodeLocation code_location,
internal::TypeId fixture_class_id, internal::SetUpTestSuiteFunc set_up_tc,
internal::TearDownTestSuiteFunc tear_down_tc,
- internal::TestFactoryBase* factory);
-
- // Constructs a TestInfo object. The newly constructed instance assumes
- // ownership of the factory object.
+ internal::TestFactoryBase* factory);
+
+ // Constructs a TestInfo object. The newly constructed instance assumes
+ // ownership of the factory object.
TestInfo(const std::string& test_suite_name, const std::string& name,
- const char* a_type_param, // NULL if not a type-parameterized test
- const char* a_value_param, // NULL if not a value-parameterized test
- internal::CodeLocation a_code_location,
- internal::TypeId fixture_class_id,
- internal::TestFactoryBase* factory);
-
- // Increments the number of death tests encountered in this test so
- // far.
- int increment_death_test_count() {
- return result_.increment_death_test_count();
- }
-
- // Creates the test object, runs it, records its result, and then
- // deletes it.
- void Run();
-
+ const char* a_type_param, // NULL if not a type-parameterized test
+ const char* a_value_param, // NULL if not a value-parameterized test
+ internal::CodeLocation a_code_location,
+ internal::TypeId fixture_class_id,
+ internal::TestFactoryBase* factory);
+
+ // Increments the number of death tests encountered in this test so
+ // far.
+ int increment_death_test_count() {
+ return result_.increment_death_test_count();
+ }
+
+ // Creates the test object, runs it, records its result, and then
+ // deletes it.
+ void Run();
+
// Skip and records the test result for this object.
void Skip();
- static void ClearTestResult(TestInfo* test_info) {
- test_info->result_.Clear();
- }
-
- // These fields are immutable properties of the test.
+ static void ClearTestResult(TestInfo* test_info) {
+ test_info->result_.Clear();
+ }
+
+ // These fields are immutable properties of the test.
const std::string test_suite_name_; // test suite name
- const std::string name_; // Test name
- // Name of the parameter type, or NULL if this is not a typed or a
- // type-parameterized test.
+ const std::string name_; // Test name
+ // Name of the parameter type, or NULL if this is not a typed or a
+ // type-parameterized test.
const std::unique_ptr<const ::std::string> type_param_;
- // Text representation of the value parameter, or NULL if this is not a
- // value-parameterized test.
+ // Text representation of the value parameter, or NULL if this is not a
+ // value-parameterized test.
const std::unique_ptr<const ::std::string> value_param_;
- internal::CodeLocation location_;
+ internal::CodeLocation location_;
const internal::TypeId fixture_class_id_; // ID of the test fixture class
bool should_run_; // True if and only if this test should run
bool is_disabled_; // True if and only if this test is disabled
bool matches_filter_; // True if this test matches the
// user-specified filter.
bool is_in_another_shard_; // Will be run in another shard.
- internal::TestFactoryBase* const factory_; // The factory that creates
- // the test object
-
- // This field is mutable and needs to be reset before running the
- // test for the second time.
- TestResult result_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(TestInfo);
-};
-
+ internal::TestFactoryBase* const factory_; // The factory that creates
+ // the test object
+
+ // This field is mutable and needs to be reset before running the
+ // test for the second time.
+ TestResult result_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(TestInfo);
+};
+
// A test suite, which consists of a vector of TestInfos.
-//
+//
// TestSuite is not copyable.
class GTEST_API_ TestSuite {
- public:
+ public:
// Creates a TestSuite with the given name.
- //
+ //
// TestSuite does NOT have a default constructor. Always use this
// constructor to create a TestSuite object.
- //
- // Arguments:
- //
+ //
+ // Arguments:
+ //
// name: name of the test suite
- // a_type_param: the name of the test's type parameter, or NULL if
- // this is not a type-parameterized test.
+ // a_type_param: the name of the test's type parameter, or NULL if
+ // this is not a type-parameterized test.
// set_up_tc: pointer to the function that sets up the test suite
// tear_down_tc: pointer to the function that tears down the test suite
TestSuite(const char* name, const char* a_type_param,
internal::SetUpTestSuiteFunc set_up_tc,
internal::TearDownTestSuiteFunc tear_down_tc);
-
+
// Destructor of TestSuite.
virtual ~TestSuite();
-
+
// Gets the name of the TestSuite.
- const char* name() const { return name_.c_str(); }
-
- // Returns the name of the parameter type, or NULL if this is not a
+ const char* name() const { return name_.c_str(); }
+
+ // Returns the name of the parameter type, or NULL if this is not a
// type-parameterized test suite.
- const char* type_param() const {
+ const char* type_param() const {
if (type_param_.get() != nullptr) return type_param_->c_str();
return nullptr;
- }
-
+ }
+
// Returns true if any test in this test suite should run.
- bool should_run() const { return should_run_; }
-
+ bool should_run() const { return should_run_; }
+
// Gets the number of successful tests in this test suite.
- int successful_test_count() const;
-
+ int successful_test_count() const;
+
// Gets the number of skipped tests in this test suite.
int skipped_test_count() const;
// Gets the number of failed tests in this test suite.
- int failed_test_count() const;
-
- // Gets the number of disabled tests that will be reported in the XML report.
- int reportable_disabled_test_count() const;
-
+ int failed_test_count() const;
+
+ // Gets the number of disabled tests that will be reported in the XML report.
+ int reportable_disabled_test_count() const;
+
// Gets the number of disabled tests in this test suite.
- int disabled_test_count() const;
-
- // Gets the number of tests to be printed in the XML report.
- int reportable_test_count() const;
-
+ int disabled_test_count() const;
+
+ // Gets the number of tests to be printed in the XML report.
+ int reportable_test_count() const;
+
// Get the number of tests in this test suite that should run.
- int test_to_run_count() const;
-
+ int test_to_run_count() const;
+
// Gets the number of all tests in this test suite.
- int total_test_count() const;
-
+ int total_test_count() const;
+
// Returns true if and only if the test suite passed.
- bool Passed() const { return !Failed(); }
-
+ bool Passed() const { return !Failed(); }
+
// Returns true if and only if the test suite failed.
bool Failed() const {
return failed_test_count() > 0 || ad_hoc_test_result().Failed();
}
-
- // Returns the elapsed time, in milliseconds.
- TimeInMillis elapsed_time() const { return elapsed_time_; }
-
+
+ // Returns the elapsed time, in milliseconds.
+ TimeInMillis elapsed_time() const { return elapsed_time_; }
+
// Gets the time of the test suite start, in ms from the start of the
// UNIX epoch.
TimeInMillis start_timestamp() const { return start_timestamp_; }
- // Returns the i-th test among all the tests. i can range from 0 to
- // total_test_count() - 1. If i is not in that range, returns NULL.
- const TestInfo* GetTestInfo(int i) const;
-
- // Returns the TestResult that holds test properties recorded during
+ // Returns the i-th test among all the tests. i can range from 0 to
+ // total_test_count() - 1. If i is not in that range, returns NULL.
+ const TestInfo* GetTestInfo(int i) const;
+
+ // Returns the TestResult that holds test properties recorded during
// execution of SetUpTestSuite and TearDownTestSuite.
- const TestResult& ad_hoc_test_result() const { return ad_hoc_test_result_; }
-
- private:
- friend class Test;
- friend class internal::UnitTestImpl;
-
+ const TestResult& ad_hoc_test_result() const { return ad_hoc_test_result_; }
+
+ private:
+ friend class Test;
+ friend class internal::UnitTestImpl;
+
// Gets the (mutable) vector of TestInfos in this TestSuite.
- std::vector<TestInfo*>& test_info_list() { return test_info_list_; }
-
+ std::vector<TestInfo*>& test_info_list() { return test_info_list_; }
+
// Gets the (immutable) vector of TestInfos in this TestSuite.
- const std::vector<TestInfo*>& test_info_list() const {
- return test_info_list_;
- }
-
- // Returns the i-th test among all the tests. i can range from 0 to
- // total_test_count() - 1. If i is not in that range, returns NULL.
- TestInfo* GetMutableTestInfo(int i);
-
- // Sets the should_run member.
- void set_should_run(bool should) { should_run_ = should; }
-
+ const std::vector<TestInfo*>& test_info_list() const {
+ return test_info_list_;
+ }
+
+ // Returns the i-th test among all the tests. i can range from 0 to
+ // total_test_count() - 1. If i is not in that range, returns NULL.
+ TestInfo* GetMutableTestInfo(int i);
+
+ // Sets the should_run member.
+ void set_should_run(bool should) { should_run_ = should; }
+
// Adds a TestInfo to this test suite. Will delete the TestInfo upon
// destruction of the TestSuite object.
- void AddTestInfo(TestInfo * test_info);
-
+ void AddTestInfo(TestInfo * test_info);
+
// Clears the results of all tests in this test suite.
- void ClearResult();
-
+ void ClearResult();
+
// Clears the results of all tests in the given test suite.
static void ClearTestSuiteResult(TestSuite* test_suite) {
test_suite->ClearResult();
- }
-
+ }
+
// Runs every test in this TestSuite.
- void Run();
-
+ void Run();
+
// Skips the execution of tests under this TestSuite
void Skip();
@@ -964,7 +964,7 @@ class GTEST_API_ TestSuite {
(*set_up_tc_)();
}
}
-
+
// Runs TearDownTestSuite() for this TestSuite. This wrapper is
// needed for catching exceptions thrown from TearDownTestSuite().
void RunTearDownTestSuite() {
@@ -972,110 +972,110 @@ class GTEST_API_ TestSuite {
(*tear_down_tc_)();
}
}
-
+
// Returns true if and only if test passed.
- static bool TestPassed(const TestInfo* test_info) {
- return test_info->should_run() && test_info->result()->Passed();
- }
-
+ static bool TestPassed(const TestInfo* test_info) {
+ return test_info->should_run() && test_info->result()->Passed();
+ }
+
// Returns true if and only if test skipped.
static bool TestSkipped(const TestInfo* test_info) {
return test_info->should_run() && test_info->result()->Skipped();
}
// Returns true if and only if test failed.
- static bool TestFailed(const TestInfo* test_info) {
- return test_info->should_run() && test_info->result()->Failed();
- }
-
+ static bool TestFailed(const TestInfo* test_info) {
+ return test_info->should_run() && test_info->result()->Failed();
+ }
+
// Returns true if and only if the test is disabled and will be reported in
// the XML report.
- static bool TestReportableDisabled(const TestInfo* test_info) {
- return test_info->is_reportable() && test_info->is_disabled_;
- }
-
+ static bool TestReportableDisabled(const TestInfo* test_info) {
+ return test_info->is_reportable() && test_info->is_disabled_;
+ }
+
// Returns true if and only if test is disabled.
- static bool TestDisabled(const TestInfo* test_info) {
- return test_info->is_disabled_;
- }
-
+ static bool TestDisabled(const TestInfo* test_info) {
+ return test_info->is_disabled_;
+ }
+
// Returns true if and only if this test will appear in the XML report.
- static bool TestReportable(const TestInfo* test_info) {
- return test_info->is_reportable();
- }
-
- // Returns true if the given test should run.
- static bool ShouldRunTest(const TestInfo* test_info) {
- return test_info->should_run();
- }
-
+ static bool TestReportable(const TestInfo* test_info) {
+ return test_info->is_reportable();
+ }
+
+ // Returns true if the given test should run.
+ static bool ShouldRunTest(const TestInfo* test_info) {
+ return test_info->should_run();
+ }
+
// Shuffles the tests in this test suite.
- void ShuffleTests(internal::Random* random);
-
- // Restores the test order to before the first shuffle.
- void UnshuffleTests();
-
+ void ShuffleTests(internal::Random* random);
+
+ // Restores the test order to before the first shuffle.
+ void UnshuffleTests();
+
// Name of the test suite.
- std::string name_;
- // Name of the parameter type, or NULL if this is not a typed or a
- // type-parameterized test.
+ std::string name_;
+ // Name of the parameter type, or NULL if this is not a typed or a
+ // type-parameterized test.
const std::unique_ptr<const ::std::string> type_param_;
- // The vector of TestInfos in their original order. It owns the
- // elements in the vector.
- std::vector<TestInfo*> test_info_list_;
- // Provides a level of indirection for the test list to allow easy
- // shuffling and restoring the test order. The i-th element in this
- // vector is the index of the i-th test in the shuffled test list.
- std::vector<int> test_indices_;
+ // The vector of TestInfos in their original order. It owns the
+ // elements in the vector.
+ std::vector<TestInfo*> test_info_list_;
+ // Provides a level of indirection for the test list to allow easy
+ // shuffling and restoring the test order. The i-th element in this
+ // vector is the index of the i-th test in the shuffled test list.
+ std::vector<int> test_indices_;
// Pointer to the function that sets up the test suite.
internal::SetUpTestSuiteFunc set_up_tc_;
// Pointer to the function that tears down the test suite.
internal::TearDownTestSuiteFunc tear_down_tc_;
// True if and only if any test in this test suite should run.
- bool should_run_;
+ bool should_run_;
// The start time, in milliseconds since UNIX Epoch.
TimeInMillis start_timestamp_;
- // Elapsed time, in milliseconds.
- TimeInMillis elapsed_time_;
+ // Elapsed time, in milliseconds.
+ TimeInMillis elapsed_time_;
// Holds test properties recorded during execution of SetUpTestSuite and
// TearDownTestSuite.
- TestResult ad_hoc_test_result_;
-
+ TestResult ad_hoc_test_result_;
+
// We disallow copying TestSuites.
GTEST_DISALLOW_COPY_AND_ASSIGN_(TestSuite);
-};
-
-// An Environment object is capable of setting up and tearing down an
-// environment. You should subclass this to define your own
-// environment(s).
-//
-// An Environment object does the set-up and tear-down in virtual
-// methods SetUp() and TearDown() instead of the constructor and the
-// destructor, as:
-//
-// 1. You cannot safely throw from a destructor. This is a problem
-// as in some cases Google Test is used where exceptions are enabled, and
-// we may want to implement ASSERT_* using exceptions where they are
-// available.
-// 2. You cannot use ASSERT_* directly in a constructor or
-// destructor.
-class Environment {
- public:
- // The d'tor is virtual as we need to subclass Environment.
- virtual ~Environment() {}
-
- // Override this to define how to set up the environment.
- virtual void SetUp() {}
-
- // Override this to define how to tear down the environment.
- virtual void TearDown() {}
- private:
- // If you see an error about overriding the following function or
- // about it being private, you have mis-spelled SetUp() as Setup().
- struct Setup_should_be_spelled_SetUp {};
+};
+
+// An Environment object is capable of setting up and tearing down an
+// environment. You should subclass this to define your own
+// environment(s).
+//
+// An Environment object does the set-up and tear-down in virtual
+// methods SetUp() and TearDown() instead of the constructor and the
+// destructor, as:
+//
+// 1. You cannot safely throw from a destructor. This is a problem
+// as in some cases Google Test is used where exceptions are enabled, and
+// we may want to implement ASSERT_* using exceptions where they are
+// available.
+// 2. You cannot use ASSERT_* directly in a constructor or
+// destructor.
+class Environment {
+ public:
+ // The d'tor is virtual as we need to subclass Environment.
+ virtual ~Environment() {}
+
+ // Override this to define how to set up the environment.
+ virtual void SetUp() {}
+
+ // Override this to define how to tear down the environment.
+ virtual void TearDown() {}
+ private:
+ // If you see an error about overriding the following function or
+ // about it being private, you have mis-spelled SetUp() as Setup().
+ struct Setup_should_be_spelled_SetUp {};
virtual Setup_should_be_spelled_SetUp* Setup() { return nullptr; }
-};
-
+};
+
#if GTEST_HAS_EXCEPTIONS
// Exception which can be thrown from TestEventListener::OnTestPartResult.
@@ -1088,75 +1088,75 @@ class GTEST_API_ AssertionException
#endif // GTEST_HAS_EXCEPTIONS
-// The interface for tracing execution of tests. The methods are organized in
-// the order the corresponding events are fired.
-class TestEventListener {
- public:
- virtual ~TestEventListener() {}
-
- // Fired before any test activity starts.
- virtual void OnTestProgramStart(const UnitTest& unit_test) = 0;
-
- // Fired before each iteration of tests starts. There may be more than
- // one iteration if GTEST_FLAG(repeat) is set. iteration is the iteration
- // index, starting from 0.
- virtual void OnTestIterationStart(const UnitTest& unit_test,
- int iteration) = 0;
-
- // Fired before environment set-up for each iteration of tests starts.
- virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test) = 0;
-
- // Fired after environment set-up for each iteration of tests ends.
- virtual void OnEnvironmentsSetUpEnd(const UnitTest& unit_test) = 0;
-
+// The interface for tracing execution of tests. The methods are organized in
+// the order the corresponding events are fired.
+class TestEventListener {
+ public:
+ virtual ~TestEventListener() {}
+
+ // Fired before any test activity starts.
+ virtual void OnTestProgramStart(const UnitTest& unit_test) = 0;
+
+ // Fired before each iteration of tests starts. There may be more than
+ // one iteration if GTEST_FLAG(repeat) is set. iteration is the iteration
+ // index, starting from 0.
+ virtual void OnTestIterationStart(const UnitTest& unit_test,
+ int iteration) = 0;
+
+ // Fired before environment set-up for each iteration of tests starts.
+ virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test) = 0;
+
+ // Fired after environment set-up for each iteration of tests ends.
+ virtual void OnEnvironmentsSetUpEnd(const UnitTest& unit_test) = 0;
+
// Fired before the test suite starts.
virtual void OnTestSuiteStart(const TestSuite& /*test_suite*/) {}
-
+
// Legacy API is deprecated but still available
#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
virtual void OnTestCaseStart(const TestCase& /*test_case*/) {}
#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
- // Fired before the test starts.
- virtual void OnTestStart(const TestInfo& test_info) = 0;
-
- // Fired after a failed assertion or a SUCCEED() invocation.
+ // Fired before the test starts.
+ virtual void OnTestStart(const TestInfo& test_info) = 0;
+
+ // Fired after a failed assertion or a SUCCEED() invocation.
// If you want to throw an exception from this function to skip to the next
// TEST, it must be AssertionException defined above, or inherited from it.
- virtual void OnTestPartResult(const TestPartResult& test_part_result) = 0;
-
- // Fired after the test ends.
- virtual void OnTestEnd(const TestInfo& test_info) = 0;
-
+ virtual void OnTestPartResult(const TestPartResult& test_part_result) = 0;
+
+ // Fired after the test ends.
+ virtual void OnTestEnd(const TestInfo& test_info) = 0;
+
// Fired after the test suite ends.
virtual void OnTestSuiteEnd(const TestSuite& /*test_suite*/) {}
-
+
// Legacy API is deprecated but still available
#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
virtual void OnTestCaseEnd(const TestCase& /*test_case*/) {}
#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
- // Fired before environment tear-down for each iteration of tests starts.
- virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test) = 0;
-
- // Fired after environment tear-down for each iteration of tests ends.
- virtual void OnEnvironmentsTearDownEnd(const UnitTest& unit_test) = 0;
-
- // Fired after each iteration of tests finishes.
- virtual void OnTestIterationEnd(const UnitTest& unit_test,
- int iteration) = 0;
-
- // Fired after all test activities have ended.
- virtual void OnTestProgramEnd(const UnitTest& unit_test) = 0;
-};
-
-// The convenience class for users who need to override just one or two
-// methods and are not concerned that a possible change to a signature of
-// the methods they override will not be caught during the build. For
-// comments about each method please see the definition of TestEventListener
-// above.
-class EmptyTestEventListener : public TestEventListener {
- public:
+ // Fired before environment tear-down for each iteration of tests starts.
+ virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test) = 0;
+
+ // Fired after environment tear-down for each iteration of tests ends.
+ virtual void OnEnvironmentsTearDownEnd(const UnitTest& unit_test) = 0;
+
+ // Fired after each iteration of tests finishes.
+ virtual void OnTestIterationEnd(const UnitTest& unit_test,
+ int iteration) = 0;
+
+ // Fired after all test activities have ended.
+ virtual void OnTestProgramEnd(const UnitTest& unit_test) = 0;
+};
+
+// The convenience class for users who need to override just one or two
+// methods and are not concerned that a possible change to a signature of
+// the methods they override will not be caught during the build. For
+// comments about each method please see the definition of TestEventListener
+// above.
+class EmptyTestEventListener : public TestEventListener {
+ public:
void OnTestProgramStart(const UnitTest& /*unit_test*/) override {}
void OnTestIterationStart(const UnitTest& /*unit_test*/,
int /*iteration*/) override {}
@@ -1181,150 +1181,150 @@ class EmptyTestEventListener : public TestEventListener {
void OnTestIterationEnd(const UnitTest& /*unit_test*/,
int /*iteration*/) override {}
void OnTestProgramEnd(const UnitTest& /*unit_test*/) override {}
-};
-
-// TestEventListeners lets users add listeners to track events in Google Test.
-class GTEST_API_ TestEventListeners {
- public:
- TestEventListeners();
- ~TestEventListeners();
-
- // Appends an event listener to the end of the list. Google Test assumes
- // the ownership of the listener (i.e. it will delete the listener when
- // the test program finishes).
- void Append(TestEventListener* listener);
-
- // Removes the given event listener from the list and returns it. It then
- // becomes the caller's responsibility to delete the listener. Returns
- // NULL if the listener is not found in the list.
- TestEventListener* Release(TestEventListener* listener);
-
- // Returns the standard listener responsible for the default console
- // output. Can be removed from the listeners list to shut down default
- // console output. Note that removing this object from the listener list
- // with Release transfers its ownership to the caller and makes this
- // function return NULL the next time.
- TestEventListener* default_result_printer() const {
- return default_result_printer_;
- }
-
- // Returns the standard listener responsible for the default XML output
- // controlled by the --gtest_output=xml flag. Can be removed from the
- // listeners list by users who want to shut down the default XML output
- // controlled by this flag and substitute it with custom one. Note that
- // removing this object from the listener list with Release transfers its
- // ownership to the caller and makes this function return NULL the next
- // time.
- TestEventListener* default_xml_generator() const {
- return default_xml_generator_;
- }
-
- private:
+};
+
+// TestEventListeners lets users add listeners to track events in Google Test.
+class GTEST_API_ TestEventListeners {
+ public:
+ TestEventListeners();
+ ~TestEventListeners();
+
+ // Appends an event listener to the end of the list. Google Test assumes
+ // the ownership of the listener (i.e. it will delete the listener when
+ // the test program finishes).
+ void Append(TestEventListener* listener);
+
+ // Removes the given event listener from the list and returns it. It then
+ // becomes the caller's responsibility to delete the listener. Returns
+ // NULL if the listener is not found in the list.
+ TestEventListener* Release(TestEventListener* listener);
+
+ // Returns the standard listener responsible for the default console
+ // output. Can be removed from the listeners list to shut down default
+ // console output. Note that removing this object from the listener list
+ // with Release transfers its ownership to the caller and makes this
+ // function return NULL the next time.
+ TestEventListener* default_result_printer() const {
+ return default_result_printer_;
+ }
+
+ // Returns the standard listener responsible for the default XML output
+ // controlled by the --gtest_output=xml flag. Can be removed from the
+ // listeners list by users who want to shut down the default XML output
+ // controlled by this flag and substitute it with custom one. Note that
+ // removing this object from the listener list with Release transfers its
+ // ownership to the caller and makes this function return NULL the next
+ // time.
+ TestEventListener* default_xml_generator() const {
+ return default_xml_generator_;
+ }
+
+ private:
friend class TestSuite;
- friend class TestInfo;
- friend class internal::DefaultGlobalTestPartResultReporter;
- friend class internal::NoExecDeathTest;
- friend class internal::TestEventListenersAccessor;
- friend class internal::UnitTestImpl;
-
- // Returns repeater that broadcasts the TestEventListener events to all
- // subscribers.
- TestEventListener* repeater();
-
- // Sets the default_result_printer attribute to the provided listener.
- // The listener is also added to the listener list and previous
- // default_result_printer is removed from it and deleted. The listener can
- // also be NULL in which case it will not be added to the list. Does
- // nothing if the previous and the current listener objects are the same.
- void SetDefaultResultPrinter(TestEventListener* listener);
-
- // Sets the default_xml_generator attribute to the provided listener. The
- // listener is also added to the listener list and previous
- // default_xml_generator is removed from it and deleted. The listener can
- // also be NULL in which case it will not be added to the list. Does
- // nothing if the previous and the current listener objects are the same.
- void SetDefaultXmlGenerator(TestEventListener* listener);
-
- // Controls whether events will be forwarded by the repeater to the
- // listeners in the list.
- bool EventForwardingEnabled() const;
- void SuppressEventForwarding();
-
- // The actual list of listeners.
- internal::TestEventRepeater* repeater_;
- // Listener responsible for the standard result output.
- TestEventListener* default_result_printer_;
- // Listener responsible for the creation of the XML output file.
- TestEventListener* default_xml_generator_;
-
- // We disallow copying TestEventListeners.
- GTEST_DISALLOW_COPY_AND_ASSIGN_(TestEventListeners);
-};
-
+ friend class TestInfo;
+ friend class internal::DefaultGlobalTestPartResultReporter;
+ friend class internal::NoExecDeathTest;
+ friend class internal::TestEventListenersAccessor;
+ friend class internal::UnitTestImpl;
+
+ // Returns repeater that broadcasts the TestEventListener events to all
+ // subscribers.
+ TestEventListener* repeater();
+
+ // Sets the default_result_printer attribute to the provided listener.
+ // The listener is also added to the listener list and previous
+ // default_result_printer is removed from it and deleted. The listener can
+ // also be NULL in which case it will not be added to the list. Does
+ // nothing if the previous and the current listener objects are the same.
+ void SetDefaultResultPrinter(TestEventListener* listener);
+
+ // Sets the default_xml_generator attribute to the provided listener. The
+ // listener is also added to the listener list and previous
+ // default_xml_generator is removed from it and deleted. The listener can
+ // also be NULL in which case it will not be added to the list. Does
+ // nothing if the previous and the current listener objects are the same.
+ void SetDefaultXmlGenerator(TestEventListener* listener);
+
+ // Controls whether events will be forwarded by the repeater to the
+ // listeners in the list.
+ bool EventForwardingEnabled() const;
+ void SuppressEventForwarding();
+
+ // The actual list of listeners.
+ internal::TestEventRepeater* repeater_;
+ // Listener responsible for the standard result output.
+ TestEventListener* default_result_printer_;
+ // Listener responsible for the creation of the XML output file.
+ TestEventListener* default_xml_generator_;
+
+ // We disallow copying TestEventListeners.
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(TestEventListeners);
+};
+
// A UnitTest consists of a vector of TestSuites.
-//
-// This is a singleton class. The only instance of UnitTest is
-// created when UnitTest::GetInstance() is first called. This
-// instance is never deleted.
-//
-// UnitTest is not copyable.
-//
-// This class is thread-safe as long as the methods are called
-// according to their specification.
-class GTEST_API_ UnitTest {
- public:
- // Gets the singleton UnitTest object. The first time this method
- // is called, a UnitTest object is constructed and returned.
- // Consecutive calls will return the same object.
- static UnitTest* GetInstance();
-
- // Runs all tests in this UnitTest object and prints the result.
- // Returns 0 if successful, or 1 otherwise.
- //
- // This method can only be called from the main thread.
- //
- // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
- int Run() GTEST_MUST_USE_RESULT_;
-
- // Returns the working directory when the first TEST() or TEST_F()
- // was executed. The UnitTest object owns the string.
- const char* original_working_dir() const;
-
+//
+// This is a singleton class. The only instance of UnitTest is
+// created when UnitTest::GetInstance() is first called. This
+// instance is never deleted.
+//
+// UnitTest is not copyable.
+//
+// This class is thread-safe as long as the methods are called
+// according to their specification.
+class GTEST_API_ UnitTest {
+ public:
+ // Gets the singleton UnitTest object. The first time this method
+ // is called, a UnitTest object is constructed and returned.
+ // Consecutive calls will return the same object.
+ static UnitTest* GetInstance();
+
+ // Runs all tests in this UnitTest object and prints the result.
+ // Returns 0 if successful, or 1 otherwise.
+ //
+ // This method can only be called from the main thread.
+ //
+ // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ int Run() GTEST_MUST_USE_RESULT_;
+
+ // Returns the working directory when the first TEST() or TEST_F()
+ // was executed. The UnitTest object owns the string.
+ const char* original_working_dir() const;
+
// Returns the TestSuite object for the test that's currently running,
- // or NULL if no test is running.
+ // or NULL if no test is running.
const TestSuite* current_test_suite() const GTEST_LOCK_EXCLUDED_(mutex_);
-
+
// Legacy API is still available but deprecated
#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
const TestCase* current_test_case() const GTEST_LOCK_EXCLUDED_(mutex_);
#endif
- // Returns the TestInfo object for the test that's currently running,
- // or NULL if no test is running.
- const TestInfo* current_test_info() const
- GTEST_LOCK_EXCLUDED_(mutex_);
-
- // Returns the random seed used at the start of the current test run.
- int random_seed() const;
-
+ // Returns the TestInfo object for the test that's currently running,
+ // or NULL if no test is running.
+ const TestInfo* current_test_info() const
+ GTEST_LOCK_EXCLUDED_(mutex_);
+
+ // Returns the random seed used at the start of the current test run.
+ int random_seed() const;
+
// Returns the ParameterizedTestSuiteRegistry object used to keep track of
- // value-parameterized tests and instantiate and register them.
- //
- // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ // value-parameterized tests and instantiate and register them.
+ //
+ // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
internal::ParameterizedTestSuiteRegistry& parameterized_test_registry()
- GTEST_LOCK_EXCLUDED_(mutex_);
-
+ GTEST_LOCK_EXCLUDED_(mutex_);
+
// Gets the number of successful test suites.
int successful_test_suite_count() const;
-
+
// Gets the number of failed test suites.
int failed_test_suite_count() const;
-
+
// Gets the number of all test suites.
int total_test_suite_count() const;
-
+
// Gets the number of all test suites that contain at least one test
- // that should run.
+ // that should run.
int test_suite_to_run_count() const;
// Legacy API is deprecated but still available
@@ -1332,203 +1332,203 @@ class GTEST_API_ UnitTest {
int successful_test_case_count() const;
int failed_test_case_count() const;
int total_test_case_count() const;
- int test_case_to_run_count() const;
+ int test_case_to_run_count() const;
#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
- // Gets the number of successful tests.
- int successful_test_count() const;
-
+
+ // Gets the number of successful tests.
+ int successful_test_count() const;
+
// Gets the number of skipped tests.
int skipped_test_count() const;
- // Gets the number of failed tests.
- int failed_test_count() const;
-
- // Gets the number of disabled tests that will be reported in the XML report.
- int reportable_disabled_test_count() const;
-
- // Gets the number of disabled tests.
- int disabled_test_count() const;
-
- // Gets the number of tests to be printed in the XML report.
- int reportable_test_count() const;
-
- // Gets the number of all tests.
- int total_test_count() const;
-
- // Gets the number of tests that should run.
- int test_to_run_count() const;
-
- // Gets the time of the test program start, in ms from the start of the
- // UNIX epoch.
- TimeInMillis start_timestamp() const;
-
- // Gets the elapsed time, in milliseconds.
- TimeInMillis elapsed_time() const;
-
+ // Gets the number of failed tests.
+ int failed_test_count() const;
+
+ // Gets the number of disabled tests that will be reported in the XML report.
+ int reportable_disabled_test_count() const;
+
+ // Gets the number of disabled tests.
+ int disabled_test_count() const;
+
+ // Gets the number of tests to be printed in the XML report.
+ int reportable_test_count() const;
+
+ // Gets the number of all tests.
+ int total_test_count() const;
+
+ // Gets the number of tests that should run.
+ int test_to_run_count() const;
+
+ // Gets the time of the test program start, in ms from the start of the
+ // UNIX epoch.
+ TimeInMillis start_timestamp() const;
+
+ // Gets the elapsed time, in milliseconds.
+ TimeInMillis elapsed_time() const;
+
// Returns true if and only if the unit test passed (i.e. all test suites
// passed).
- bool Passed() const;
-
+ bool Passed() const;
+
// Returns true if and only if the unit test failed (i.e. some test suite
// failed or something outside of all tests failed).
- bool Failed() const;
-
+ bool Failed() const;
+
// Gets the i-th test suite among all the test suites. i can range from 0 to
// total_test_suite_count() - 1. If i is not in that range, returns NULL.
const TestSuite* GetTestSuite(int i) const;
// Legacy API is deprecated but still available
#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
- const TestCase* GetTestCase(int i) const;
+ const TestCase* GetTestCase(int i) const;
#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
- // Returns the TestResult containing information on test failures and
+
+ // Returns the TestResult containing information on test failures and
// properties logged outside of individual test suites.
- const TestResult& ad_hoc_test_result() const;
-
- // Returns the list of event listeners that can be used to track events
- // inside Google Test.
- TestEventListeners& listeners();
-
- private:
- // Registers and returns a global test environment. When a test
- // program is run, all global test environments will be set-up in
- // the order they were registered. After all tests in the program
- // have finished, all global test environments will be torn-down in
- // the *reverse* order they were registered.
- //
- // The UnitTest object takes ownership of the given environment.
- //
- // This method can only be called from the main thread.
- Environment* AddEnvironment(Environment* env);
-
- // Adds a TestPartResult to the current TestResult object. All
- // Google Test assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc)
- // eventually call this to report their results. The user code
- // should use the assertion macros instead of calling this directly.
- void AddTestPartResult(TestPartResult::Type result_type,
- const char* file_name,
- int line_number,
- const std::string& message,
- const std::string& os_stack_trace)
- GTEST_LOCK_EXCLUDED_(mutex_);
-
- // Adds a TestProperty to the current TestResult object when invoked from
+ const TestResult& ad_hoc_test_result() const;
+
+ // Returns the list of event listeners that can be used to track events
+ // inside Google Test.
+ TestEventListeners& listeners();
+
+ private:
+ // Registers and returns a global test environment. When a test
+ // program is run, all global test environments will be set-up in
+ // the order they were registered. After all tests in the program
+ // have finished, all global test environments will be torn-down in
+ // the *reverse* order they were registered.
+ //
+ // The UnitTest object takes ownership of the given environment.
+ //
+ // This method can only be called from the main thread.
+ Environment* AddEnvironment(Environment* env);
+
+ // Adds a TestPartResult to the current TestResult object. All
+ // Google Test assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc)
+ // eventually call this to report their results. The user code
+ // should use the assertion macros instead of calling this directly.
+ void AddTestPartResult(TestPartResult::Type result_type,
+ const char* file_name,
+ int line_number,
+ const std::string& message,
+ const std::string& os_stack_trace)
+ GTEST_LOCK_EXCLUDED_(mutex_);
+
+ // Adds a TestProperty to the current TestResult object when invoked from
// inside a test, to current TestSuite's ad_hoc_test_result_ when invoked
// from SetUpTestSuite or TearDownTestSuite, or to the global property set
- // when invoked elsewhere. If the result already contains a property with
- // the same key, the value will be updated.
- void RecordProperty(const std::string& key, const std::string& value);
-
+ // when invoked elsewhere. If the result already contains a property with
+ // the same key, the value will be updated.
+ void RecordProperty(const std::string& key, const std::string& value);
+
// Gets the i-th test suite among all the test suites. i can range from 0 to
// total_test_suite_count() - 1. If i is not in that range, returns NULL.
TestSuite* GetMutableTestSuite(int i);
-
- // Accessors for the implementation object.
- internal::UnitTestImpl* impl() { return impl_; }
- const internal::UnitTestImpl* impl() const { return impl_; }
-
+
+ // Accessors for the implementation object.
+ internal::UnitTestImpl* impl() { return impl_; }
+ const internal::UnitTestImpl* impl() const { return impl_; }
+
// These classes and functions are friends as they need to access private
- // members of UnitTest.
+ // members of UnitTest.
friend class ScopedTrace;
- friend class Test;
- friend class internal::AssertHelper;
- friend class internal::StreamingListenerTest;
- friend class internal::UnitTestRecordPropertyTestHelper;
- friend Environment* AddGlobalTestEnvironment(Environment* env);
+ friend class Test;
+ friend class internal::AssertHelper;
+ friend class internal::StreamingListenerTest;
+ friend class internal::UnitTestRecordPropertyTestHelper;
+ friend Environment* AddGlobalTestEnvironment(Environment* env);
friend std::set<std::string>* internal::GetIgnoredParameterizedTestSuites();
- friend internal::UnitTestImpl* internal::GetUnitTestImpl();
- friend void internal::ReportFailureInUnknownLocation(
- TestPartResult::Type result_type,
- const std::string& message);
-
- // Creates an empty UnitTest.
- UnitTest();
-
- // D'tor
- virtual ~UnitTest();
-
- // Pushes a trace defined by SCOPED_TRACE() on to the per-thread
- // Google Test trace stack.
- void PushGTestTrace(const internal::TraceInfo& trace)
- GTEST_LOCK_EXCLUDED_(mutex_);
-
- // Pops a trace from the per-thread Google Test trace stack.
- void PopGTestTrace()
- GTEST_LOCK_EXCLUDED_(mutex_);
-
- // Protects mutable state in *impl_. This is mutable as some const
- // methods need to lock it too.
- mutable internal::Mutex mutex_;
-
- // Opaque implementation object. This field is never changed once
- // the object is constructed. We don't mark it as const here, as
- // doing so will cause a warning in the constructor of UnitTest.
- // Mutable state in *impl_ is protected by mutex_.
- internal::UnitTestImpl* impl_;
-
- // We disallow copying UnitTest.
- GTEST_DISALLOW_COPY_AND_ASSIGN_(UnitTest);
-};
-
-// A convenient wrapper for adding an environment for the test
-// program.
-//
-// You should call this before RUN_ALL_TESTS() is called, probably in
-// main(). If you use gtest_main, you need to call this before main()
-// starts for it to take effect. For example, you can define a global
-// variable like this:
-//
-// testing::Environment* const foo_env =
-// testing::AddGlobalTestEnvironment(new FooEnvironment);
-//
-// However, we strongly recommend you to write your own main() and
-// call AddGlobalTestEnvironment() there, as relying on initialization
-// of global variables makes the code harder to read and may cause
-// problems when you register multiple environments from different
-// translation units and the environments have dependencies among them
-// (remember that the compiler doesn't guarantee the order in which
-// global variables from different translation units are initialized).
-inline Environment* AddGlobalTestEnvironment(Environment* env) {
- return UnitTest::GetInstance()->AddEnvironment(env);
-}
-
-// Initializes Google Test. This must be called before calling
-// RUN_ALL_TESTS(). In particular, it parses a command line for the
-// flags that Google Test recognizes. Whenever a Google Test flag is
-// seen, it is removed from argv, and *argc is decremented.
-//
-// No value is returned. Instead, the Google Test flag variables are
-// updated.
-//
-// Calling the function for the second time has no user-visible effect.
-GTEST_API_ void InitGoogleTest(int* argc, char** argv);
-
-// This overloaded version can be used in Windows programs compiled in
-// UNICODE mode.
-GTEST_API_ void InitGoogleTest(int* argc, wchar_t** argv);
-
+ friend internal::UnitTestImpl* internal::GetUnitTestImpl();
+ friend void internal::ReportFailureInUnknownLocation(
+ TestPartResult::Type result_type,
+ const std::string& message);
+
+ // Creates an empty UnitTest.
+ UnitTest();
+
+ // D'tor
+ virtual ~UnitTest();
+
+ // Pushes a trace defined by SCOPED_TRACE() on to the per-thread
+ // Google Test trace stack.
+ void PushGTestTrace(const internal::TraceInfo& trace)
+ GTEST_LOCK_EXCLUDED_(mutex_);
+
+ // Pops a trace from the per-thread Google Test trace stack.
+ void PopGTestTrace()
+ GTEST_LOCK_EXCLUDED_(mutex_);
+
+ // Protects mutable state in *impl_. This is mutable as some const
+ // methods need to lock it too.
+ mutable internal::Mutex mutex_;
+
+ // Opaque implementation object. This field is never changed once
+ // the object is constructed. We don't mark it as const here, as
+ // doing so will cause a warning in the constructor of UnitTest.
+ // Mutable state in *impl_ is protected by mutex_.
+ internal::UnitTestImpl* impl_;
+
+ // We disallow copying UnitTest.
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(UnitTest);
+};
+
+// A convenient wrapper for adding an environment for the test
+// program.
+//
+// You should call this before RUN_ALL_TESTS() is called, probably in
+// main(). If you use gtest_main, you need to call this before main()
+// starts for it to take effect. For example, you can define a global
+// variable like this:
+//
+// testing::Environment* const foo_env =
+// testing::AddGlobalTestEnvironment(new FooEnvironment);
+//
+// However, we strongly recommend you to write your own main() and
+// call AddGlobalTestEnvironment() there, as relying on initialization
+// of global variables makes the code harder to read and may cause
+// problems when you register multiple environments from different
+// translation units and the environments have dependencies among them
+// (remember that the compiler doesn't guarantee the order in which
+// global variables from different translation units are initialized).
+inline Environment* AddGlobalTestEnvironment(Environment* env) {
+ return UnitTest::GetInstance()->AddEnvironment(env);
+}
+
+// Initializes Google Test. This must be called before calling
+// RUN_ALL_TESTS(). In particular, it parses a command line for the
+// flags that Google Test recognizes. Whenever a Google Test flag is
+// seen, it is removed from argv, and *argc is decremented.
+//
+// No value is returned. Instead, the Google Test flag variables are
+// updated.
+//
+// Calling the function for the second time has no user-visible effect.
+GTEST_API_ void InitGoogleTest(int* argc, char** argv);
+
+// This overloaded version can be used in Windows programs compiled in
+// UNICODE mode.
+GTEST_API_ void InitGoogleTest(int* argc, wchar_t** argv);
+
// This overloaded version can be used on Arduino/embedded platforms where
// there is no argc/argv.
GTEST_API_ void InitGoogleTest();
-namespace internal {
-
-// Separate the error generating code from the code path to reduce the stack
-// frame size of CmpHelperEQ. This helps reduce the overhead of some sanitizers
-// when calling EXPECT_* in a tight loop.
-template <typename T1, typename T2>
-AssertionResult CmpHelperEQFailure(const char* lhs_expression,
- const char* rhs_expression,
- const T1& lhs, const T2& rhs) {
- return EqFailure(lhs_expression,
- rhs_expression,
- FormatForComparisonFailureMessage(lhs, rhs),
- FormatForComparisonFailureMessage(rhs, lhs),
- false);
-}
-
+namespace internal {
+
+// Separate the error generating code from the code path to reduce the stack
+// frame size of CmpHelperEQ. This helps reduce the overhead of some sanitizers
+// when calling EXPECT_* in a tight loop.
+template <typename T1, typename T2>
+AssertionResult CmpHelperEQFailure(const char* lhs_expression,
+ const char* rhs_expression,
+ const T1& lhs, const T2& rhs) {
+ return EqFailure(lhs_expression,
+ rhs_expression,
+ FormatForComparisonFailureMessage(lhs, rhs),
+ FormatForComparisonFailureMessage(rhs, lhs),
+ false);
+}
+
// This block of code defines operator==/!=
// to block lexical scope lookup.
// It prevents using invalid operator==/!= defined at namespace scope.
@@ -1536,445 +1536,445 @@ struct faketype {};
inline bool operator==(faketype, faketype) { return true; }
inline bool operator!=(faketype, faketype) { return false; }
-// The helper function for {ASSERT|EXPECT}_EQ.
-template <typename T1, typename T2>
-AssertionResult CmpHelperEQ(const char* lhs_expression,
- const char* rhs_expression,
- const T1& lhs,
- const T2& rhs) {
- if (lhs == rhs) {
- return AssertionSuccess();
- }
-
- return CmpHelperEQFailure(lhs_expression, rhs_expression, lhs, rhs);
-}
-
-class EqHelper {
- public:
- // This templatized version is for the general case.
+// The helper function for {ASSERT|EXPECT}_EQ.
+template <typename T1, typename T2>
+AssertionResult CmpHelperEQ(const char* lhs_expression,
+ const char* rhs_expression,
+ const T1& lhs,
+ const T2& rhs) {
+ if (lhs == rhs) {
+ return AssertionSuccess();
+ }
+
+ return CmpHelperEQFailure(lhs_expression, rhs_expression, lhs, rhs);
+}
+
+class EqHelper {
+ public:
+ // This templatized version is for the general case.
template <
typename T1, typename T2,
// Disable this overload for cases where one argument is a pointer
// and the other is the null pointer constant.
typename std::enable_if<!std::is_integral<T1>::value ||
!std::is_pointer<T2>::value>::type* = nullptr>
- static AssertionResult Compare(const char* lhs_expression,
+ static AssertionResult Compare(const char* lhs_expression,
const char* rhs_expression, const T1& lhs,
- const T2& rhs) {
- return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
- }
-
- // With this overloaded version, we allow anonymous enums to be used
- // in {ASSERT|EXPECT}_EQ when compiled with gcc 4, as anonymous
- // enums can be implicitly cast to BiggestInt.
- //
- // Even though its body looks the same as the above version, we
- // cannot merge the two, as it will make anonymous enums unhappy.
- static AssertionResult Compare(const char* lhs_expression,
- const char* rhs_expression,
- BiggestInt lhs,
- BiggestInt rhs) {
- return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
- }
-
- template <typename T>
- static AssertionResult Compare(
+ const T2& rhs) {
+ return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
+ }
+
+ // With this overloaded version, we allow anonymous enums to be used
+ // in {ASSERT|EXPECT}_EQ when compiled with gcc 4, as anonymous
+ // enums can be implicitly cast to BiggestInt.
+ //
+ // Even though its body looks the same as the above version, we
+ // cannot merge the two, as it will make anonymous enums unhappy.
+ static AssertionResult Compare(const char* lhs_expression,
+ const char* rhs_expression,
+ BiggestInt lhs,
+ BiggestInt rhs) {
+ return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
+ }
+
+ template <typename T>
+ static AssertionResult Compare(
const char* lhs_expression, const char* rhs_expression,
// Handle cases where '0' is used as a null pointer literal.
std::nullptr_t /* lhs */, T* rhs) {
- // We already know that 'lhs' is a null pointer.
+ // We already know that 'lhs' is a null pointer.
return CmpHelperEQ(lhs_expression, rhs_expression, static_cast<T*>(nullptr),
rhs);
- }
-};
-
-// Separate the error generating code from the code path to reduce the stack
-// frame size of CmpHelperOP. This helps reduce the overhead of some sanitizers
-// when calling EXPECT_OP in a tight loop.
-template <typename T1, typename T2>
-AssertionResult CmpHelperOpFailure(const char* expr1, const char* expr2,
- const T1& val1, const T2& val2,
- const char* op) {
- return AssertionFailure()
- << "Expected: (" << expr1 << ") " << op << " (" << expr2
- << "), actual: " << FormatForComparisonFailureMessage(val1, val2)
- << " vs " << FormatForComparisonFailureMessage(val2, val1);
-}
-
-// A macro for implementing the helper functions needed to implement
-// ASSERT_?? and EXPECT_??. It is here just to avoid copy-and-paste
-// of similar code.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-
-#define GTEST_IMPL_CMP_HELPER_(op_name, op)\
-template <typename T1, typename T2>\
-AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \
- const T1& val1, const T2& val2) {\
- if (val1 op val2) {\
- return AssertionSuccess();\
- } else {\
- return CmpHelperOpFailure(expr1, expr2, val1, val2, #op);\
- }\
+ }
+};
+
+// Separate the error generating code from the code path to reduce the stack
+// frame size of CmpHelperOP. This helps reduce the overhead of some sanitizers
+// when calling EXPECT_OP in a tight loop.
+template <typename T1, typename T2>
+AssertionResult CmpHelperOpFailure(const char* expr1, const char* expr2,
+ const T1& val1, const T2& val2,
+ const char* op) {
+ return AssertionFailure()
+ << "Expected: (" << expr1 << ") " << op << " (" << expr2
+ << "), actual: " << FormatForComparisonFailureMessage(val1, val2)
+ << " vs " << FormatForComparisonFailureMessage(val2, val1);
+}
+
+// A macro for implementing the helper functions needed to implement
+// ASSERT_?? and EXPECT_??. It is here just to avoid copy-and-paste
+// of similar code.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+
+#define GTEST_IMPL_CMP_HELPER_(op_name, op)\
+template <typename T1, typename T2>\
+AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \
+ const T1& val1, const T2& val2) {\
+ if (val1 op val2) {\
+ return AssertionSuccess();\
+ } else {\
+ return CmpHelperOpFailure(expr1, expr2, val1, val2, #op);\
+ }\
}
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-
-// Implements the helper function for {ASSERT|EXPECT}_NE
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+
+// Implements the helper function for {ASSERT|EXPECT}_NE
GTEST_IMPL_CMP_HELPER_(NE, !=)
-// Implements the helper function for {ASSERT|EXPECT}_LE
+// Implements the helper function for {ASSERT|EXPECT}_LE
GTEST_IMPL_CMP_HELPER_(LE, <=)
-// Implements the helper function for {ASSERT|EXPECT}_LT
+// Implements the helper function for {ASSERT|EXPECT}_LT
GTEST_IMPL_CMP_HELPER_(LT, <)
-// Implements the helper function for {ASSERT|EXPECT}_GE
+// Implements the helper function for {ASSERT|EXPECT}_GE
GTEST_IMPL_CMP_HELPER_(GE, >=)
-// Implements the helper function for {ASSERT|EXPECT}_GT
+// Implements the helper function for {ASSERT|EXPECT}_GT
GTEST_IMPL_CMP_HELPER_(GT, >)
-
-#undef GTEST_IMPL_CMP_HELPER_
-
-// The helper function for {ASSERT|EXPECT}_STREQ.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression,
- const char* s2_expression,
- const char* s1,
- const char* s2);
-
-// The helper function for {ASSERT|EXPECT}_STRCASEEQ.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression,
- const char* s2_expression,
- const char* s1,
- const char* s2);
-
-// The helper function for {ASSERT|EXPECT}_STRNE.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression,
- const char* s2_expression,
- const char* s1,
- const char* s2);
-
-// The helper function for {ASSERT|EXPECT}_STRCASENE.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression,
- const char* s2_expression,
- const char* s1,
- const char* s2);
-
-
-// Helper function for *_STREQ on wide strings.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression,
- const char* s2_expression,
- const wchar_t* s1,
- const wchar_t* s2);
-
-// Helper function for *_STRNE on wide strings.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression,
- const char* s2_expression,
- const wchar_t* s1,
- const wchar_t* s2);
-
-} // namespace internal
-
-// IsSubstring() and IsNotSubstring() are intended to be used as the
-// first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by
-// themselves. They check whether needle is a substring of haystack
-// (NULL is considered a substring of itself only), and return an
-// appropriate error message when they fail.
-//
-// The {needle,haystack}_expr arguments are the stringified
-// expressions that generated the two real arguments.
-GTEST_API_ AssertionResult IsSubstring(
- const char* needle_expr, const char* haystack_expr,
- const char* needle, const char* haystack);
-GTEST_API_ AssertionResult IsSubstring(
- const char* needle_expr, const char* haystack_expr,
- const wchar_t* needle, const wchar_t* haystack);
-GTEST_API_ AssertionResult IsNotSubstring(
- const char* needle_expr, const char* haystack_expr,
- const char* needle, const char* haystack);
-GTEST_API_ AssertionResult IsNotSubstring(
- const char* needle_expr, const char* haystack_expr,
- const wchar_t* needle, const wchar_t* haystack);
-GTEST_API_ AssertionResult IsSubstring(
- const char* needle_expr, const char* haystack_expr,
- const ::std::string& needle, const ::std::string& haystack);
-GTEST_API_ AssertionResult IsNotSubstring(
- const char* needle_expr, const char* haystack_expr,
- const ::std::string& needle, const ::std::string& haystack);
-
-#if GTEST_HAS_STD_WSTRING
-GTEST_API_ AssertionResult IsSubstring(
- const char* needle_expr, const char* haystack_expr,
- const ::std::wstring& needle, const ::std::wstring& haystack);
-GTEST_API_ AssertionResult IsNotSubstring(
- const char* needle_expr, const char* haystack_expr,
- const ::std::wstring& needle, const ::std::wstring& haystack);
-#endif // GTEST_HAS_STD_WSTRING
-
-namespace internal {
-
-// Helper template function for comparing floating-points.
-//
-// Template parameter:
-//
-// RawType: the raw floating-point type (either float or double)
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-template <typename RawType>
-AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression,
- const char* rhs_expression,
- RawType lhs_value,
- RawType rhs_value) {
- const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value);
-
- if (lhs.AlmostEquals(rhs)) {
- return AssertionSuccess();
- }
-
- ::std::stringstream lhs_ss;
- lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
- << lhs_value;
-
- ::std::stringstream rhs_ss;
- rhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
- << rhs_value;
-
- return EqFailure(lhs_expression,
- rhs_expression,
- StringStreamToString(&lhs_ss),
- StringStreamToString(&rhs_ss),
- false);
-}
-
-// Helper function for implementing ASSERT_NEAR.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-GTEST_API_ AssertionResult DoubleNearPredFormat(const char* expr1,
- const char* expr2,
- const char* abs_error_expr,
- double val1,
- double val2,
- double abs_error);
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-// A class that enables one to stream messages to assertion macros
-class GTEST_API_ AssertHelper {
- public:
- // Constructor.
- AssertHelper(TestPartResult::Type type,
- const char* file,
- int line,
- const char* message);
- ~AssertHelper();
-
- // Message assignment is a semantic trick to enable assertion
- // streaming; see the GTEST_MESSAGE_ macro below.
- void operator=(const Message& message) const;
-
- private:
- // We put our data in a struct so that the size of the AssertHelper class can
- // be as small as possible. This is important because gcc is incapable of
- // re-using stack space even for temporary variables, so every EXPECT_EQ
- // reserves stack space for another AssertHelper.
- struct AssertHelperData {
- AssertHelperData(TestPartResult::Type t,
- const char* srcfile,
- int line_num,
- const char* msg)
- : type(t), file(srcfile), line(line_num), message(msg) { }
-
- TestPartResult::Type const type;
- const char* const file;
- int const line;
- std::string const message;
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelperData);
- };
-
- AssertHelperData* const data_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelper);
-};
-
-} // namespace internal
-
-// The pure interface class that all value-parameterized tests inherit from.
-// A value-parameterized class must inherit from both ::testing::Test and
-// ::testing::WithParamInterface. In most cases that just means inheriting
-// from ::testing::TestWithParam, but more complicated test hierarchies
-// may need to inherit from Test and WithParamInterface at different levels.
-//
-// This interface has support for accessing the test parameter value via
-// the GetParam() method.
-//
-// Use it with one of the parameter generator defining functions, like Range(),
-// Values(), ValuesIn(), Bool(), and Combine().
-//
-// class FooTest : public ::testing::TestWithParam<int> {
-// protected:
-// FooTest() {
-// // Can use GetParam() here.
-// }
+
+#undef GTEST_IMPL_CMP_HELPER_
+
+// The helper function for {ASSERT|EXPECT}_STREQ.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression,
+ const char* s2_expression,
+ const char* s1,
+ const char* s2);
+
+// The helper function for {ASSERT|EXPECT}_STRCASEEQ.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression,
+ const char* s2_expression,
+ const char* s1,
+ const char* s2);
+
+// The helper function for {ASSERT|EXPECT}_STRNE.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression,
+ const char* s2_expression,
+ const char* s1,
+ const char* s2);
+
+// The helper function for {ASSERT|EXPECT}_STRCASENE.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression,
+ const char* s2_expression,
+ const char* s1,
+ const char* s2);
+
+
+// Helper function for *_STREQ on wide strings.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression,
+ const char* s2_expression,
+ const wchar_t* s1,
+ const wchar_t* s2);
+
+// Helper function for *_STRNE on wide strings.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression,
+ const char* s2_expression,
+ const wchar_t* s1,
+ const wchar_t* s2);
+
+} // namespace internal
+
+// IsSubstring() and IsNotSubstring() are intended to be used as the
+// first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by
+// themselves. They check whether needle is a substring of haystack
+// (NULL is considered a substring of itself only), and return an
+// appropriate error message when they fail.
+//
+// The {needle,haystack}_expr arguments are the stringified
+// expressions that generated the two real arguments.
+GTEST_API_ AssertionResult IsSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const char* needle, const char* haystack);
+GTEST_API_ AssertionResult IsSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const wchar_t* needle, const wchar_t* haystack);
+GTEST_API_ AssertionResult IsNotSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const char* needle, const char* haystack);
+GTEST_API_ AssertionResult IsNotSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const wchar_t* needle, const wchar_t* haystack);
+GTEST_API_ AssertionResult IsSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const ::std::string& needle, const ::std::string& haystack);
+GTEST_API_ AssertionResult IsNotSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const ::std::string& needle, const ::std::string& haystack);
+
+#if GTEST_HAS_STD_WSTRING
+GTEST_API_ AssertionResult IsSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const ::std::wstring& needle, const ::std::wstring& haystack);
+GTEST_API_ AssertionResult IsNotSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const ::std::wstring& needle, const ::std::wstring& haystack);
+#endif // GTEST_HAS_STD_WSTRING
+
+namespace internal {
+
+// Helper template function for comparing floating-points.
+//
+// Template parameter:
+//
+// RawType: the raw floating-point type (either float or double)
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+template <typename RawType>
+AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression,
+ const char* rhs_expression,
+ RawType lhs_value,
+ RawType rhs_value) {
+ const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value);
+
+ if (lhs.AlmostEquals(rhs)) {
+ return AssertionSuccess();
+ }
+
+ ::std::stringstream lhs_ss;
+ lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
+ << lhs_value;
+
+ ::std::stringstream rhs_ss;
+ rhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
+ << rhs_value;
+
+ return EqFailure(lhs_expression,
+ rhs_expression,
+ StringStreamToString(&lhs_ss),
+ StringStreamToString(&rhs_ss),
+ false);
+}
+
+// Helper function for implementing ASSERT_NEAR.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+GTEST_API_ AssertionResult DoubleNearPredFormat(const char* expr1,
+ const char* expr2,
+ const char* abs_error_expr,
+ double val1,
+ double val2,
+ double abs_error);
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+// A class that enables one to stream messages to assertion macros
+class GTEST_API_ AssertHelper {
+ public:
+ // Constructor.
+ AssertHelper(TestPartResult::Type type,
+ const char* file,
+ int line,
+ const char* message);
+ ~AssertHelper();
+
+ // Message assignment is a semantic trick to enable assertion
+ // streaming; see the GTEST_MESSAGE_ macro below.
+ void operator=(const Message& message) const;
+
+ private:
+ // We put our data in a struct so that the size of the AssertHelper class can
+ // be as small as possible. This is important because gcc is incapable of
+ // re-using stack space even for temporary variables, so every EXPECT_EQ
+ // reserves stack space for another AssertHelper.
+ struct AssertHelperData {
+ AssertHelperData(TestPartResult::Type t,
+ const char* srcfile,
+ int line_num,
+ const char* msg)
+ : type(t), file(srcfile), line(line_num), message(msg) { }
+
+ TestPartResult::Type const type;
+ const char* const file;
+ int const line;
+ std::string const message;
+
+ private:
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelperData);
+ };
+
+ AssertHelperData* const data_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelper);
+};
+
+} // namespace internal
+
+// The pure interface class that all value-parameterized tests inherit from.
+// A value-parameterized class must inherit from both ::testing::Test and
+// ::testing::WithParamInterface. In most cases that just means inheriting
+// from ::testing::TestWithParam, but more complicated test hierarchies
+// may need to inherit from Test and WithParamInterface at different levels.
+//
+// This interface has support for accessing the test parameter value via
+// the GetParam() method.
+//
+// Use it with one of the parameter generator defining functions, like Range(),
+// Values(), ValuesIn(), Bool(), and Combine().
+//
+// class FooTest : public ::testing::TestWithParam<int> {
+// protected:
+// FooTest() {
+// // Can use GetParam() here.
+// }
// ~FooTest() override {
-// // Can use GetParam() here.
-// }
+// // Can use GetParam() here.
+// }
// void SetUp() override {
-// // Can use GetParam() here.
-// }
+// // Can use GetParam() here.
+// }
// void TearDown override {
-// // Can use GetParam() here.
-// }
-// };
-// TEST_P(FooTest, DoesBar) {
-// // Can use GetParam() method here.
-// Foo foo;
-// ASSERT_TRUE(foo.DoesBar(GetParam()));
-// }
+// // Can use GetParam() here.
+// }
+// };
+// TEST_P(FooTest, DoesBar) {
+// // Can use GetParam() method here.
+// Foo foo;
+// ASSERT_TRUE(foo.DoesBar(GetParam()));
+// }
// INSTANTIATE_TEST_SUITE_P(OneToTenRange, FooTest, ::testing::Range(1, 10));
-
-template <typename T>
-class WithParamInterface {
- public:
- typedef T ParamType;
- virtual ~WithParamInterface() {}
-
- // The current parameter value. Is also available in the test fixture's
+
+template <typename T>
+class WithParamInterface {
+ public:
+ typedef T ParamType;
+ virtual ~WithParamInterface() {}
+
+ // The current parameter value. Is also available in the test fixture's
// constructor.
static const ParamType& GetParam() {
GTEST_CHECK_(parameter_ != nullptr)
- << "GetParam() can only be called inside a value-parameterized test "
- << "-- did you intend to write TEST_P instead of TEST_F?";
- return *parameter_;
- }
-
- private:
- // Sets parameter value. The caller is responsible for making sure the value
- // remains alive and unchanged throughout the current test.
- static void SetParam(const ParamType* parameter) {
- parameter_ = parameter;
- }
-
- // Static value used for accessing parameter during a test lifetime.
- static const ParamType* parameter_;
-
- // TestClass must be a subclass of WithParamInterface<T> and Test.
- template <class TestClass> friend class internal::ParameterizedTestFactory;
-};
-
-template <typename T>
+ << "GetParam() can only be called inside a value-parameterized test "
+ << "-- did you intend to write TEST_P instead of TEST_F?";
+ return *parameter_;
+ }
+
+ private:
+ // Sets parameter value. The caller is responsible for making sure the value
+ // remains alive and unchanged throughout the current test.
+ static void SetParam(const ParamType* parameter) {
+ parameter_ = parameter;
+ }
+
+ // Static value used for accessing parameter during a test lifetime.
+ static const ParamType* parameter_;
+
+ // TestClass must be a subclass of WithParamInterface<T> and Test.
+ template <class TestClass> friend class internal::ParameterizedTestFactory;
+};
+
+template <typename T>
const T* WithParamInterface<T>::parameter_ = nullptr;
-
-// Most value-parameterized classes can ignore the existence of
-// WithParamInterface, and can just inherit from ::testing::TestWithParam.
-
-template <typename T>
-class TestWithParam : public Test, public WithParamInterface<T> {
-};
-
-// Macros for indicating success/failure in test code.
-
+
+// Most value-parameterized classes can ignore the existence of
+// WithParamInterface, and can just inherit from ::testing::TestWithParam.
+
+template <typename T>
+class TestWithParam : public Test, public WithParamInterface<T> {
+};
+
+// Macros for indicating success/failure in test code.
+
// Skips test in runtime.
// Skipping test aborts current function.
// Skipped tests are neither successful nor failed.
#define GTEST_SKIP() GTEST_SKIP_("")
-// ADD_FAILURE unconditionally adds a failure to the current test.
-// SUCCEED generates a success - it doesn't automatically make the
-// current test successful, as a test is only successful when it has
-// no failure.
-//
-// EXPECT_* verifies that a certain condition is satisfied. If not,
-// it behaves like ADD_FAILURE. In particular:
-//
-// EXPECT_TRUE verifies that a Boolean condition is true.
-// EXPECT_FALSE verifies that a Boolean condition is false.
-//
-// FAIL and ASSERT_* are similar to ADD_FAILURE and EXPECT_*, except
-// that they will also abort the current function on failure. People
-// usually want the fail-fast behavior of FAIL and ASSERT_*, but those
-// writing data-driven tests often find themselves using ADD_FAILURE
-// and EXPECT_* more.
-
-// Generates a nonfatal failure with a generic message.
-#define ADD_FAILURE() GTEST_NONFATAL_FAILURE_("Failed")
-
-// Generates a nonfatal failure at the given source file location with
-// a generic message.
-#define ADD_FAILURE_AT(file, line) \
- GTEST_MESSAGE_AT_(file, line, "Failed", \
- ::testing::TestPartResult::kNonFatalFailure)
-
-// Generates a fatal failure with a generic message.
-#define GTEST_FAIL() GTEST_FATAL_FAILURE_("Failed")
-
+// ADD_FAILURE unconditionally adds a failure to the current test.
+// SUCCEED generates a success - it doesn't automatically make the
+// current test successful, as a test is only successful when it has
+// no failure.
+//
+// EXPECT_* verifies that a certain condition is satisfied. If not,
+// it behaves like ADD_FAILURE. In particular:
+//
+// EXPECT_TRUE verifies that a Boolean condition is true.
+// EXPECT_FALSE verifies that a Boolean condition is false.
+//
+// FAIL and ASSERT_* are similar to ADD_FAILURE and EXPECT_*, except
+// that they will also abort the current function on failure. People
+// usually want the fail-fast behavior of FAIL and ASSERT_*, but those
+// writing data-driven tests often find themselves using ADD_FAILURE
+// and EXPECT_* more.
+
+// Generates a nonfatal failure with a generic message.
+#define ADD_FAILURE() GTEST_NONFATAL_FAILURE_("Failed")
+
+// Generates a nonfatal failure at the given source file location with
+// a generic message.
+#define ADD_FAILURE_AT(file, line) \
+ GTEST_MESSAGE_AT_(file, line, "Failed", \
+ ::testing::TestPartResult::kNonFatalFailure)
+
+// Generates a fatal failure with a generic message.
+#define GTEST_FAIL() GTEST_FATAL_FAILURE_("Failed")
+
// Like GTEST_FAIL(), but at the given source file location.
#define GTEST_FAIL_AT(file, line) \
GTEST_MESSAGE_AT_(file, line, "Failed", \
::testing::TestPartResult::kFatalFailure)
-// Define this macro to 1 to omit the definition of FAIL(), which is a
-// generic name and clashes with some other libraries.
-#if !GTEST_DONT_DEFINE_FAIL
-# define FAIL() GTEST_FAIL()
-#endif
-
-// Generates a success with a generic message.
-#define GTEST_SUCCEED() GTEST_SUCCESS_("Succeeded")
-
-// Define this macro to 1 to omit the definition of SUCCEED(), which
-// is a generic name and clashes with some other libraries.
-#if !GTEST_DONT_DEFINE_SUCCEED
-# define SUCCEED() GTEST_SUCCEED()
-#endif
-
-// Macros for testing exceptions.
-//
-// * {ASSERT|EXPECT}_THROW(statement, expected_exception):
-// Tests that the statement throws the expected exception.
-// * {ASSERT|EXPECT}_NO_THROW(statement):
-// Tests that the statement doesn't throw any exception.
-// * {ASSERT|EXPECT}_ANY_THROW(statement):
-// Tests that the statement throws an exception.
-
-#define EXPECT_THROW(statement, expected_exception) \
- GTEST_TEST_THROW_(statement, expected_exception, GTEST_NONFATAL_FAILURE_)
-#define EXPECT_NO_THROW(statement) \
- GTEST_TEST_NO_THROW_(statement, GTEST_NONFATAL_FAILURE_)
-#define EXPECT_ANY_THROW(statement) \
- GTEST_TEST_ANY_THROW_(statement, GTEST_NONFATAL_FAILURE_)
-#define ASSERT_THROW(statement, expected_exception) \
- GTEST_TEST_THROW_(statement, expected_exception, GTEST_FATAL_FAILURE_)
-#define ASSERT_NO_THROW(statement) \
- GTEST_TEST_NO_THROW_(statement, GTEST_FATAL_FAILURE_)
-#define ASSERT_ANY_THROW(statement) \
- GTEST_TEST_ANY_THROW_(statement, GTEST_FATAL_FAILURE_)
-
-// Boolean assertions. Condition can be either a Boolean expression or an
-// AssertionResult. For more information on how to use AssertionResult with
-// these macros see comments on that class.
+// Define this macro to 1 to omit the definition of FAIL(), which is a
+// generic name and clashes with some other libraries.
+#if !GTEST_DONT_DEFINE_FAIL
+# define FAIL() GTEST_FAIL()
+#endif
+
+// Generates a success with a generic message.
+#define GTEST_SUCCEED() GTEST_SUCCESS_("Succeeded")
+
+// Define this macro to 1 to omit the definition of SUCCEED(), which
+// is a generic name and clashes with some other libraries.
+#if !GTEST_DONT_DEFINE_SUCCEED
+# define SUCCEED() GTEST_SUCCEED()
+#endif
+
+// Macros for testing exceptions.
+//
+// * {ASSERT|EXPECT}_THROW(statement, expected_exception):
+// Tests that the statement throws the expected exception.
+// * {ASSERT|EXPECT}_NO_THROW(statement):
+// Tests that the statement doesn't throw any exception.
+// * {ASSERT|EXPECT}_ANY_THROW(statement):
+// Tests that the statement throws an exception.
+
+#define EXPECT_THROW(statement, expected_exception) \
+ GTEST_TEST_THROW_(statement, expected_exception, GTEST_NONFATAL_FAILURE_)
+#define EXPECT_NO_THROW(statement) \
+ GTEST_TEST_NO_THROW_(statement, GTEST_NONFATAL_FAILURE_)
+#define EXPECT_ANY_THROW(statement) \
+ GTEST_TEST_ANY_THROW_(statement, GTEST_NONFATAL_FAILURE_)
+#define ASSERT_THROW(statement, expected_exception) \
+ GTEST_TEST_THROW_(statement, expected_exception, GTEST_FATAL_FAILURE_)
+#define ASSERT_NO_THROW(statement) \
+ GTEST_TEST_NO_THROW_(statement, GTEST_FATAL_FAILURE_)
+#define ASSERT_ANY_THROW(statement) \
+ GTEST_TEST_ANY_THROW_(statement, GTEST_FATAL_FAILURE_)
+
+// Boolean assertions. Condition can be either a Boolean expression or an
+// AssertionResult. For more information on how to use AssertionResult with
+// these macros see comments on that class.
#define GTEST_EXPECT_TRUE(condition) \
- GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \
- GTEST_NONFATAL_FAILURE_)
+ GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \
+ GTEST_NONFATAL_FAILURE_)
#define GTEST_EXPECT_FALSE(condition) \
- GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \
- GTEST_NONFATAL_FAILURE_)
+ GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \
+ GTEST_NONFATAL_FAILURE_)
#define GTEST_ASSERT_TRUE(condition) \
- GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \
- GTEST_FATAL_FAILURE_)
+ GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \
+ GTEST_FATAL_FAILURE_)
#define GTEST_ASSERT_FALSE(condition) \
- GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \
- GTEST_FATAL_FAILURE_)
-
+ GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \
+ GTEST_FATAL_FAILURE_)
+
// Define these macros to 1 to omit the definition of the corresponding
// EXPECT or ASSERT, which clashes with some users' own code.
@@ -1994,230 +1994,230 @@ class TestWithParam : public Test, public WithParamInterface<T> {
#define ASSERT_FALSE(condition) GTEST_ASSERT_FALSE(condition)
#endif
-// Macros for testing equalities and inequalities.
-//
-// * {ASSERT|EXPECT}_EQ(v1, v2): Tests that v1 == v2
-// * {ASSERT|EXPECT}_NE(v1, v2): Tests that v1 != v2
-// * {ASSERT|EXPECT}_LT(v1, v2): Tests that v1 < v2
-// * {ASSERT|EXPECT}_LE(v1, v2): Tests that v1 <= v2
-// * {ASSERT|EXPECT}_GT(v1, v2): Tests that v1 > v2
-// * {ASSERT|EXPECT}_GE(v1, v2): Tests that v1 >= v2
-//
-// When they are not, Google Test prints both the tested expressions and
-// their actual values. The values must be compatible built-in types,
-// or you will get a compiler error. By "compatible" we mean that the
-// values can be compared by the respective operator.
-//
-// Note:
-//
-// 1. It is possible to make a user-defined type work with
-// {ASSERT|EXPECT}_??(), but that requires overloading the
-// comparison operators and is thus discouraged by the Google C++
-// Usage Guide. Therefore, you are advised to use the
-// {ASSERT|EXPECT}_TRUE() macro to assert that two objects are
-// equal.
-//
-// 2. The {ASSERT|EXPECT}_??() macros do pointer comparisons on
-// pointers (in particular, C strings). Therefore, if you use it
-// with two C strings, you are testing how their locations in memory
-// are related, not how their content is related. To compare two C
-// strings by content, use {ASSERT|EXPECT}_STR*().
-//
-// 3. {ASSERT|EXPECT}_EQ(v1, v2) is preferred to
-// {ASSERT|EXPECT}_TRUE(v1 == v2), as the former tells you
-// what the actual value is when it fails, and similarly for the
-// other comparisons.
-//
-// 4. Do not depend on the order in which {ASSERT|EXPECT}_??()
-// evaluate their arguments, which is undefined.
-//
-// 5. These macros evaluate their arguments exactly once.
-//
-// Examples:
-//
+// Macros for testing equalities and inequalities.
+//
+// * {ASSERT|EXPECT}_EQ(v1, v2): Tests that v1 == v2
+// * {ASSERT|EXPECT}_NE(v1, v2): Tests that v1 != v2
+// * {ASSERT|EXPECT}_LT(v1, v2): Tests that v1 < v2
+// * {ASSERT|EXPECT}_LE(v1, v2): Tests that v1 <= v2
+// * {ASSERT|EXPECT}_GT(v1, v2): Tests that v1 > v2
+// * {ASSERT|EXPECT}_GE(v1, v2): Tests that v1 >= v2
+//
+// When they are not, Google Test prints both the tested expressions and
+// their actual values. The values must be compatible built-in types,
+// or you will get a compiler error. By "compatible" we mean that the
+// values can be compared by the respective operator.
+//
+// Note:
+//
+// 1. It is possible to make a user-defined type work with
+// {ASSERT|EXPECT}_??(), but that requires overloading the
+// comparison operators and is thus discouraged by the Google C++
+// Usage Guide. Therefore, you are advised to use the
+// {ASSERT|EXPECT}_TRUE() macro to assert that two objects are
+// equal.
+//
+// 2. The {ASSERT|EXPECT}_??() macros do pointer comparisons on
+// pointers (in particular, C strings). Therefore, if you use it
+// with two C strings, you are testing how their locations in memory
+// are related, not how their content is related. To compare two C
+// strings by content, use {ASSERT|EXPECT}_STR*().
+//
+// 3. {ASSERT|EXPECT}_EQ(v1, v2) is preferred to
+// {ASSERT|EXPECT}_TRUE(v1 == v2), as the former tells you
+// what the actual value is when it fails, and similarly for the
+// other comparisons.
+//
+// 4. Do not depend on the order in which {ASSERT|EXPECT}_??()
+// evaluate their arguments, which is undefined.
+//
+// 5. These macros evaluate their arguments exactly once.
+//
+// Examples:
+//
// EXPECT_NE(Foo(), 5);
// EXPECT_EQ(a_pointer, NULL);
-// ASSERT_LT(i, array_size);
-// ASSERT_GT(records.size(), 0) << "There is no record left.";
-
-#define EXPECT_EQ(val1, val2) \
+// ASSERT_LT(i, array_size);
+// ASSERT_GT(records.size(), 0) << "There is no record left.";
+
+#define EXPECT_EQ(val1, val2) \
EXPECT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2)
-#define EXPECT_NE(val1, val2) \
- EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2)
-#define EXPECT_LE(val1, val2) \
- EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2)
-#define EXPECT_LT(val1, val2) \
- EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2)
-#define EXPECT_GE(val1, val2) \
- EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2)
-#define EXPECT_GT(val1, val2) \
- EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
-
-#define GTEST_ASSERT_EQ(val1, val2) \
+#define EXPECT_NE(val1, val2) \
+ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2)
+#define EXPECT_LE(val1, val2) \
+ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2)
+#define EXPECT_LT(val1, val2) \
+ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2)
+#define EXPECT_GE(val1, val2) \
+ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2)
+#define EXPECT_GT(val1, val2) \
+ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
+
+#define GTEST_ASSERT_EQ(val1, val2) \
ASSERT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2)
-#define GTEST_ASSERT_NE(val1, val2) \
- ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2)
-#define GTEST_ASSERT_LE(val1, val2) \
- ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2)
-#define GTEST_ASSERT_LT(val1, val2) \
- ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2)
-#define GTEST_ASSERT_GE(val1, val2) \
- ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2)
-#define GTEST_ASSERT_GT(val1, val2) \
- ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
-
-// Define macro GTEST_DONT_DEFINE_ASSERT_XY to 1 to omit the definition of
-// ASSERT_XY(), which clashes with some users' own code.
-
-#if !GTEST_DONT_DEFINE_ASSERT_EQ
-# define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2)
-#endif
-
-#if !GTEST_DONT_DEFINE_ASSERT_NE
-# define ASSERT_NE(val1, val2) GTEST_ASSERT_NE(val1, val2)
-#endif
-
-#if !GTEST_DONT_DEFINE_ASSERT_LE
-# define ASSERT_LE(val1, val2) GTEST_ASSERT_LE(val1, val2)
-#endif
-
-#if !GTEST_DONT_DEFINE_ASSERT_LT
-# define ASSERT_LT(val1, val2) GTEST_ASSERT_LT(val1, val2)
-#endif
-
-#if !GTEST_DONT_DEFINE_ASSERT_GE
-# define ASSERT_GE(val1, val2) GTEST_ASSERT_GE(val1, val2)
-#endif
-
-#if !GTEST_DONT_DEFINE_ASSERT_GT
-# define ASSERT_GT(val1, val2) GTEST_ASSERT_GT(val1, val2)
-#endif
-
-// C-string Comparisons. All tests treat NULL and any non-NULL string
-// as different. Two NULLs are equal.
-//
-// * {ASSERT|EXPECT}_STREQ(s1, s2): Tests that s1 == s2
-// * {ASSERT|EXPECT}_STRNE(s1, s2): Tests that s1 != s2
-// * {ASSERT|EXPECT}_STRCASEEQ(s1, s2): Tests that s1 == s2, ignoring case
-// * {ASSERT|EXPECT}_STRCASENE(s1, s2): Tests that s1 != s2, ignoring case
-//
-// For wide or narrow string objects, you can use the
-// {ASSERT|EXPECT}_??() macros.
-//
-// Don't depend on the order in which the arguments are evaluated,
-// which is undefined.
-//
-// These macros evaluate their arguments exactly once.
-
-#define EXPECT_STREQ(s1, s2) \
- EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, s1, s2)
-#define EXPECT_STRNE(s1, s2) \
- EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)
-#define EXPECT_STRCASEEQ(s1, s2) \
- EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, s1, s2)
-#define EXPECT_STRCASENE(s1, s2)\
- EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)
-
-#define ASSERT_STREQ(s1, s2) \
- ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, s1, s2)
-#define ASSERT_STRNE(s1, s2) \
- ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)
-#define ASSERT_STRCASEEQ(s1, s2) \
- ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, s1, s2)
-#define ASSERT_STRCASENE(s1, s2)\
- ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)
-
-// Macros for comparing floating-point numbers.
-//
-// * {ASSERT|EXPECT}_FLOAT_EQ(val1, val2):
-// Tests that two float values are almost equal.
-// * {ASSERT|EXPECT}_DOUBLE_EQ(val1, val2):
-// Tests that two double values are almost equal.
-// * {ASSERT|EXPECT}_NEAR(v1, v2, abs_error):
-// Tests that v1 and v2 are within the given distance to each other.
-//
-// Google Test uses ULP-based comparison to automatically pick a default
-// error bound that is appropriate for the operands. See the
-// FloatingPoint template class in gtest-internal.h if you are
-// interested in the implementation details.
-
-#define EXPECT_FLOAT_EQ(val1, val2)\
- EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \
- val1, val2)
-
-#define EXPECT_DOUBLE_EQ(val1, val2)\
- EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \
- val1, val2)
-
-#define ASSERT_FLOAT_EQ(val1, val2)\
- ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \
- val1, val2)
-
-#define ASSERT_DOUBLE_EQ(val1, val2)\
- ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \
- val1, val2)
-
-#define EXPECT_NEAR(val1, val2, abs_error)\
- EXPECT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \
- val1, val2, abs_error)
-
-#define ASSERT_NEAR(val1, val2, abs_error)\
- ASSERT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \
- val1, val2, abs_error)
-
-// These predicate format functions work on floating-point values, and
-// can be used in {ASSERT|EXPECT}_PRED_FORMAT2*(), e.g.
-//
-// EXPECT_PRED_FORMAT2(testing::DoubleLE, Foo(), 5.0);
-
-// Asserts that val1 is less than, or almost equal to, val2. Fails
-// otherwise. In particular, it fails if either val1 or val2 is NaN.
-GTEST_API_ AssertionResult FloatLE(const char* expr1, const char* expr2,
- float val1, float val2);
-GTEST_API_ AssertionResult DoubleLE(const char* expr1, const char* expr2,
- double val1, double val2);
-
-
-#if GTEST_OS_WINDOWS
-
-// Macros that test for HRESULT failure and success, these are only useful
-// on Windows, and rely on Windows SDK macros and APIs to compile.
-//
-// * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr)
-//
-// When expr unexpectedly fails or succeeds, Google Test prints the
-// expected result and the actual result with both a human-readable
-// string representation of the error, if available, as well as the
-// hex result code.
-# define EXPECT_HRESULT_SUCCEEDED(expr) \
- EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr))
-
-# define ASSERT_HRESULT_SUCCEEDED(expr) \
- ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr))
-
-# define EXPECT_HRESULT_FAILED(expr) \
- EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
-
-# define ASSERT_HRESULT_FAILED(expr) \
- ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
-
-#endif // GTEST_OS_WINDOWS
-
-// Macros that execute statement and check that it doesn't generate new fatal
-// failures in the current thread.
-//
-// * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement);
-//
-// Examples:
-//
-// EXPECT_NO_FATAL_FAILURE(Process());
-// ASSERT_NO_FATAL_FAILURE(Process()) << "Process() failed";
-//
-#define ASSERT_NO_FATAL_FAILURE(statement) \
- GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_FATAL_FAILURE_)
-#define EXPECT_NO_FATAL_FAILURE(statement) \
- GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_NONFATAL_FAILURE_)
-
+#define GTEST_ASSERT_NE(val1, val2) \
+ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2)
+#define GTEST_ASSERT_LE(val1, val2) \
+ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2)
+#define GTEST_ASSERT_LT(val1, val2) \
+ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2)
+#define GTEST_ASSERT_GE(val1, val2) \
+ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2)
+#define GTEST_ASSERT_GT(val1, val2) \
+ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
+
+// Define macro GTEST_DONT_DEFINE_ASSERT_XY to 1 to omit the definition of
+// ASSERT_XY(), which clashes with some users' own code.
+
+#if !GTEST_DONT_DEFINE_ASSERT_EQ
+# define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2)
+#endif
+
+#if !GTEST_DONT_DEFINE_ASSERT_NE
+# define ASSERT_NE(val1, val2) GTEST_ASSERT_NE(val1, val2)
+#endif
+
+#if !GTEST_DONT_DEFINE_ASSERT_LE
+# define ASSERT_LE(val1, val2) GTEST_ASSERT_LE(val1, val2)
+#endif
+
+#if !GTEST_DONT_DEFINE_ASSERT_LT
+# define ASSERT_LT(val1, val2) GTEST_ASSERT_LT(val1, val2)
+#endif
+
+#if !GTEST_DONT_DEFINE_ASSERT_GE
+# define ASSERT_GE(val1, val2) GTEST_ASSERT_GE(val1, val2)
+#endif
+
+#if !GTEST_DONT_DEFINE_ASSERT_GT
+# define ASSERT_GT(val1, val2) GTEST_ASSERT_GT(val1, val2)
+#endif
+
+// C-string Comparisons. All tests treat NULL and any non-NULL string
+// as different. Two NULLs are equal.
+//
+// * {ASSERT|EXPECT}_STREQ(s1, s2): Tests that s1 == s2
+// * {ASSERT|EXPECT}_STRNE(s1, s2): Tests that s1 != s2
+// * {ASSERT|EXPECT}_STRCASEEQ(s1, s2): Tests that s1 == s2, ignoring case
+// * {ASSERT|EXPECT}_STRCASENE(s1, s2): Tests that s1 != s2, ignoring case
+//
+// For wide or narrow string objects, you can use the
+// {ASSERT|EXPECT}_??() macros.
+//
+// Don't depend on the order in which the arguments are evaluated,
+// which is undefined.
+//
+// These macros evaluate their arguments exactly once.
+
+#define EXPECT_STREQ(s1, s2) \
+ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, s1, s2)
+#define EXPECT_STRNE(s1, s2) \
+ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)
+#define EXPECT_STRCASEEQ(s1, s2) \
+ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, s1, s2)
+#define EXPECT_STRCASENE(s1, s2)\
+ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)
+
+#define ASSERT_STREQ(s1, s2) \
+ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, s1, s2)
+#define ASSERT_STRNE(s1, s2) \
+ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)
+#define ASSERT_STRCASEEQ(s1, s2) \
+ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, s1, s2)
+#define ASSERT_STRCASENE(s1, s2)\
+ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)
+
+// Macros for comparing floating-point numbers.
+//
+// * {ASSERT|EXPECT}_FLOAT_EQ(val1, val2):
+// Tests that two float values are almost equal.
+// * {ASSERT|EXPECT}_DOUBLE_EQ(val1, val2):
+// Tests that two double values are almost equal.
+// * {ASSERT|EXPECT}_NEAR(v1, v2, abs_error):
+// Tests that v1 and v2 are within the given distance to each other.
+//
+// Google Test uses ULP-based comparison to automatically pick a default
+// error bound that is appropriate for the operands. See the
+// FloatingPoint template class in gtest-internal.h if you are
+// interested in the implementation details.
+
+#define EXPECT_FLOAT_EQ(val1, val2)\
+ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \
+ val1, val2)
+
+#define EXPECT_DOUBLE_EQ(val1, val2)\
+ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \
+ val1, val2)
+
+#define ASSERT_FLOAT_EQ(val1, val2)\
+ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \
+ val1, val2)
+
+#define ASSERT_DOUBLE_EQ(val1, val2)\
+ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \
+ val1, val2)
+
+#define EXPECT_NEAR(val1, val2, abs_error)\
+ EXPECT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \
+ val1, val2, abs_error)
+
+#define ASSERT_NEAR(val1, val2, abs_error)\
+ ASSERT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \
+ val1, val2, abs_error)
+
+// These predicate format functions work on floating-point values, and
+// can be used in {ASSERT|EXPECT}_PRED_FORMAT2*(), e.g.
+//
+// EXPECT_PRED_FORMAT2(testing::DoubleLE, Foo(), 5.0);
+
+// Asserts that val1 is less than, or almost equal to, val2. Fails
+// otherwise. In particular, it fails if either val1 or val2 is NaN.
+GTEST_API_ AssertionResult FloatLE(const char* expr1, const char* expr2,
+ float val1, float val2);
+GTEST_API_ AssertionResult DoubleLE(const char* expr1, const char* expr2,
+ double val1, double val2);
+
+
+#if GTEST_OS_WINDOWS
+
+// Macros that test for HRESULT failure and success, these are only useful
+// on Windows, and rely on Windows SDK macros and APIs to compile.
+//
+// * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr)
+//
+// When expr unexpectedly fails or succeeds, Google Test prints the
+// expected result and the actual result with both a human-readable
+// string representation of the error, if available, as well as the
+// hex result code.
+# define EXPECT_HRESULT_SUCCEEDED(expr) \
+ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr))
+
+# define ASSERT_HRESULT_SUCCEEDED(expr) \
+ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr))
+
+# define EXPECT_HRESULT_FAILED(expr) \
+ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+
+# define ASSERT_HRESULT_FAILED(expr) \
+ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+
+#endif // GTEST_OS_WINDOWS
+
+// Macros that execute statement and check that it doesn't generate new fatal
+// failures in the current thread.
+//
+// * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement);
+//
+// Examples:
+//
+// EXPECT_NO_FATAL_FAILURE(Process());
+// ASSERT_NO_FATAL_FAILURE(Process()) << "Process() failed";
+//
+#define ASSERT_NO_FATAL_FAILURE(statement) \
+ GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_FATAL_FAILURE_)
+#define EXPECT_NO_FATAL_FAILURE(statement) \
+ GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_NONFATAL_FAILURE_)
+
// Causes a trace (including the given source file path and line number,
// and the given message) to be included in every test failure message generated
// by code in the scope of the lifetime of an instance of this class. The effect
@@ -2263,129 +2263,129 @@ class GTEST_API_ ScopedTrace {
// c'tor and d'tor. Therefore it doesn't
// need to be used otherwise.
-// Causes a trace (including the source file path, the current line
-// number, and the given message) to be included in every test failure
-// message generated by code in the current scope. The effect is
-// undone when the control leaves the current scope.
-//
-// The message argument can be anything streamable to std::ostream.
-//
-// In the implementation, we include the current line number as part
-// of the dummy variable name, thus allowing multiple SCOPED_TRACE()s
-// to appear in the same block - as long as they are on different
-// lines.
+// Causes a trace (including the source file path, the current line
+// number, and the given message) to be included in every test failure
+// message generated by code in the current scope. The effect is
+// undone when the control leaves the current scope.
+//
+// The message argument can be anything streamable to std::ostream.
+//
+// In the implementation, we include the current line number as part
+// of the dummy variable name, thus allowing multiple SCOPED_TRACE()s
+// to appear in the same block - as long as they are on different
+// lines.
//
// Assuming that each thread maintains its own stack of traces.
// Therefore, a SCOPED_TRACE() would (correctly) only affect the
// assertions in its own thread.
-#define SCOPED_TRACE(message) \
+#define SCOPED_TRACE(message) \
::testing::ScopedTrace GTEST_CONCAT_TOKEN_(gtest_trace_, __LINE__)(\
__FILE__, __LINE__, (message))
-
-// Compile-time assertion for type equality.
+
+// Compile-time assertion for type equality.
// StaticAssertTypeEq<type1, type2>() compiles if and only if type1 and type2
// are the same type. The value it returns is not interesting.
-//
-// Instead of making StaticAssertTypeEq a class template, we make it a
-// function template that invokes a helper class template. This
-// prevents a user from misusing StaticAssertTypeEq<T1, T2> by
-// defining objects of that type.
-//
-// CAVEAT:
-//
-// When used inside a method of a class template,
-// StaticAssertTypeEq<T1, T2>() is effective ONLY IF the method is
-// instantiated. For example, given:
-//
-// template <typename T> class Foo {
-// public:
-// void Bar() { testing::StaticAssertTypeEq<int, T>(); }
-// };
-//
-// the code:
-//
-// void Test1() { Foo<bool> foo; }
-//
-// will NOT generate a compiler error, as Foo<bool>::Bar() is never
-// actually instantiated. Instead, you need:
-//
-// void Test2() { Foo<bool> foo; foo.Bar(); }
-//
-// to cause a compiler error.
-template <typename T1, typename T2>
+//
+// Instead of making StaticAssertTypeEq a class template, we make it a
+// function template that invokes a helper class template. This
+// prevents a user from misusing StaticAssertTypeEq<T1, T2> by
+// defining objects of that type.
+//
+// CAVEAT:
+//
+// When used inside a method of a class template,
+// StaticAssertTypeEq<T1, T2>() is effective ONLY IF the method is
+// instantiated. For example, given:
+//
+// template <typename T> class Foo {
+// public:
+// void Bar() { testing::StaticAssertTypeEq<int, T>(); }
+// };
+//
+// the code:
+//
+// void Test1() { Foo<bool> foo; }
+//
+// will NOT generate a compiler error, as Foo<bool>::Bar() is never
+// actually instantiated. Instead, you need:
+//
+// void Test2() { Foo<bool> foo; foo.Bar(); }
+//
+// to cause a compiler error.
+template <typename T1, typename T2>
constexpr bool StaticAssertTypeEq() noexcept {
static_assert(std::is_same<T1, T2>::value, "T1 and T2 are not the same type");
- return true;
-}
-
-// Defines a test.
-//
+ return true;
+}
+
+// Defines a test.
+//
// The first parameter is the name of the test suite, and the second
// parameter is the name of the test within the test suite.
-//
+//
// The convention is to end the test suite name with "Test". For
// example, a test suite for the Foo class can be named FooTest.
-//
-// Test code should appear between braces after an invocation of
-// this macro. Example:
-//
-// TEST(FooTest, InitializesCorrectly) {
-// Foo foo;
-// EXPECT_TRUE(foo.StatusIsOK());
-// }
-
-// Note that we call GetTestTypeId() instead of GetTypeId<
-// ::testing::Test>() here to get the type ID of testing::Test. This
-// is to work around a suspected linker bug when using Google Test as
-// a framework on Mac OS X. The bug causes GetTypeId<
-// ::testing::Test>() to return different values depending on whether
-// the call is from the Google Test framework itself or from user test
-// code. GetTestTypeId() is guaranteed to always return the same
-// value, as it always calls GetTypeId<>() from the Google Test
-// framework.
+//
+// Test code should appear between braces after an invocation of
+// this macro. Example:
+//
+// TEST(FooTest, InitializesCorrectly) {
+// Foo foo;
+// EXPECT_TRUE(foo.StatusIsOK());
+// }
+
+// Note that we call GetTestTypeId() instead of GetTypeId<
+// ::testing::Test>() here to get the type ID of testing::Test. This
+// is to work around a suspected linker bug when using Google Test as
+// a framework on Mac OS X. The bug causes GetTypeId<
+// ::testing::Test>() to return different values depending on whether
+// the call is from the Google Test framework itself or from user test
+// code. GetTestTypeId() is guaranteed to always return the same
+// value, as it always calls GetTypeId<>() from the Google Test
+// framework.
#define GTEST_TEST(test_suite_name, test_name) \
GTEST_TEST_(test_suite_name, test_name, ::testing::Test, \
::testing::internal::GetTestTypeId())
-
-// Define this macro to 1 to omit the definition of TEST(), which
-// is a generic name and clashes with some other libraries.
-#if !GTEST_DONT_DEFINE_TEST
+
+// Define this macro to 1 to omit the definition of TEST(), which
+// is a generic name and clashes with some other libraries.
+#if !GTEST_DONT_DEFINE_TEST
#define TEST(test_suite_name, test_name) GTEST_TEST(test_suite_name, test_name)
-#endif
-
-// Defines a test that uses a test fixture.
-//
-// The first parameter is the name of the test fixture class, which
+#endif
+
+// Defines a test that uses a test fixture.
+//
+// The first parameter is the name of the test fixture class, which
// also doubles as the test suite name. The second parameter is the
// name of the test within the test suite.
-//
-// A test fixture class must be declared earlier. The user should put
+//
+// A test fixture class must be declared earlier. The user should put
// the test code between braces after using this macro. Example:
-//
-// class FooTest : public testing::Test {
-// protected:
+//
+// class FooTest : public testing::Test {
+// protected:
// void SetUp() override { b_.AddElement(3); }
-//
-// Foo a_;
-// Foo b_;
-// };
-//
-// TEST_F(FooTest, InitializesCorrectly) {
-// EXPECT_TRUE(a_.StatusIsOK());
-// }
-//
-// TEST_F(FooTest, ReturnsElementCountCorrectly) {
+//
+// Foo a_;
+// Foo b_;
+// };
+//
+// TEST_F(FooTest, InitializesCorrectly) {
+// EXPECT_TRUE(a_.StatusIsOK());
+// }
+//
+// TEST_F(FooTest, ReturnsElementCountCorrectly) {
// EXPECT_EQ(a_.size(), 0);
// EXPECT_EQ(b_.size(), 1);
-// }
+// }
//
// GOOGLETEST_CM0011 DO NOT DELETE
#if !GTEST_DONT_DEFINE_TEST
-#define TEST_F(test_fixture, test_name)\
- GTEST_TEST_(test_fixture, test_name, test_fixture, \
- ::testing::internal::GetTypeId<test_fixture>())
+#define TEST_F(test_fixture, test_name)\
+ GTEST_TEST_(test_fixture, test_name, test_fixture, \
+ ::testing::internal::GetTypeId<test_fixture>())
#endif // !GTEST_DONT_DEFINE_TEST
-
+
// Returns a path to temporary directory.
// Tries to determine an appropriate directory for the platform.
GTEST_API_ std::string TempDir();
@@ -2474,22 +2474,22 @@ TestInfo* RegisterTest(const char* test_suite_name, const char* test_name,
new FactoryImpl{std::move(factory)});
}
-} // namespace testing
-
-// Use this function in main() to run all tests. It returns 0 if all
-// tests are successful, or 1 otherwise.
-//
-// RUN_ALL_TESTS() should be invoked after the command line has been
-// parsed by InitGoogleTest().
-//
-// This function was formerly a macro; thus, it is in the global
-// namespace and has an all-caps name.
-int RUN_ALL_TESTS() GTEST_MUST_USE_RESULT_;
-
-inline int RUN_ALL_TESTS() {
- return ::testing::UnitTest::GetInstance()->Run();
-}
-
+} // namespace testing
+
+// Use this function in main() to run all tests. It returns 0 if all
+// tests are successful, or 1 otherwise.
+//
+// RUN_ALL_TESTS() should be invoked after the command line has been
+// parsed by InitGoogleTest().
+//
+// This function was formerly a macro; thus, it is in the global
+// namespace and has an all-caps name.
+int RUN_ALL_TESTS() GTEST_MUST_USE_RESULT_;
+
+inline int RUN_ALL_TESTS() {
+ return ::testing::UnitTest::GetInstance()->Run();
+}
+
GTEST_DISABLE_MSC_WARNINGS_POP_() // 4251
#endif // GOOGLETEST_INCLUDE_GTEST_GTEST_H_
diff --git a/contrib/restricted/googletest/googletest/include/gtest/gtest_pred_impl.h b/contrib/restricted/googletest/googletest/include/gtest/gtest_pred_impl.h
index 9df5414ea0..5029a9bb02 100644
--- a/contrib/restricted/googletest/googletest/include/gtest/gtest_pred_impl.h
+++ b/contrib/restricted/googletest/googletest/include/gtest/gtest_pred_impl.h
@@ -1,192 +1,192 @@
-// Copyright 2006, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
+// Copyright 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
// This file is AUTOMATICALLY GENERATED on 01/02/2019 by command
-// 'gen_gtest_pred_impl.py 5'. DO NOT EDIT BY HAND!
-//
-// Implements a family of generic predicate assertion macros.
+// 'gen_gtest_pred_impl.py 5'. DO NOT EDIT BY HAND!
+//
+// Implements a family of generic predicate assertion macros.
// GOOGLETEST_CM0001 DO NOT DELETE
-
+
#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
#define GOOGLETEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
-
+
#include "gtest/gtest.h"
-
+
namespace testing {
-// This header implements a family of generic predicate assertion
-// macros:
-//
-// ASSERT_PRED_FORMAT1(pred_format, v1)
-// ASSERT_PRED_FORMAT2(pred_format, v1, v2)
-// ...
-//
-// where pred_format is a function or functor that takes n (in the
-// case of ASSERT_PRED_FORMATn) values and their source expression
-// text, and returns a testing::AssertionResult. See the definition
-// of ASSERT_EQ in gtest.h for an example.
-//
-// If you don't care about formatting, you can use the more
-// restrictive version:
-//
-// ASSERT_PRED1(pred, v1)
-// ASSERT_PRED2(pred, v1, v2)
-// ...
-//
-// where pred is an n-ary function or functor that returns bool,
-// and the values v1, v2, ..., must support the << operator for
-// streaming to std::ostream.
-//
-// We also define the EXPECT_* variations.
-//
-// For now we only support predicates whose arity is at most 5.
-// Please email googletestframework@googlegroups.com if you need
-// support for higher arities.
-
-// GTEST_ASSERT_ is the basic statement to which all of the assertions
-// in this file reduce. Don't use this in your code.
-
-#define GTEST_ASSERT_(expression, on_failure) \
- GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
- if (const ::testing::AssertionResult gtest_ar = (expression)) \
- ; \
- else \
- on_failure(gtest_ar.failure_message())
-
-
-// Helper function for implementing {EXPECT|ASSERT}_PRED1. Don't use
-// this in your code.
-template <typename Pred,
- typename T1>
-AssertionResult AssertPred1Helper(const char* pred_text,
- const char* e1,
- Pred pred,
- const T1& v1) {
- if (pred(v1)) return AssertionSuccess();
-
+// This header implements a family of generic predicate assertion
+// macros:
+//
+// ASSERT_PRED_FORMAT1(pred_format, v1)
+// ASSERT_PRED_FORMAT2(pred_format, v1, v2)
+// ...
+//
+// where pred_format is a function or functor that takes n (in the
+// case of ASSERT_PRED_FORMATn) values and their source expression
+// text, and returns a testing::AssertionResult. See the definition
+// of ASSERT_EQ in gtest.h for an example.
+//
+// If you don't care about formatting, you can use the more
+// restrictive version:
+//
+// ASSERT_PRED1(pred, v1)
+// ASSERT_PRED2(pred, v1, v2)
+// ...
+//
+// where pred is an n-ary function or functor that returns bool,
+// and the values v1, v2, ..., must support the << operator for
+// streaming to std::ostream.
+//
+// We also define the EXPECT_* variations.
+//
+// For now we only support predicates whose arity is at most 5.
+// Please email googletestframework@googlegroups.com if you need
+// support for higher arities.
+
+// GTEST_ASSERT_ is the basic statement to which all of the assertions
+// in this file reduce. Don't use this in your code.
+
+#define GTEST_ASSERT_(expression, on_failure) \
+ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+ if (const ::testing::AssertionResult gtest_ar = (expression)) \
+ ; \
+ else \
+ on_failure(gtest_ar.failure_message())
+
+
+// Helper function for implementing {EXPECT|ASSERT}_PRED1. Don't use
+// this in your code.
+template <typename Pred,
+ typename T1>
+AssertionResult AssertPred1Helper(const char* pred_text,
+ const char* e1,
+ Pred pred,
+ const T1& v1) {
+ if (pred(v1)) return AssertionSuccess();
+
return AssertionFailure()
<< pred_text << "(" << e1 << ") evaluates to false, where"
<< "\n"
<< e1 << " evaluates to " << ::testing::PrintToString(v1);
-}
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT1.
-// Don't use this in your code.
-#define GTEST_PRED_FORMAT1_(pred_format, v1, on_failure)\
- GTEST_ASSERT_(pred_format(#v1, v1), \
- on_failure)
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED1. Don't use
-// this in your code.
-#define GTEST_PRED1_(pred, v1, on_failure)\
- GTEST_ASSERT_(::testing::AssertPred1Helper(#pred, \
- #v1, \
- pred, \
- v1), on_failure)
-
-// Unary predicate assertion macros.
-#define EXPECT_PRED_FORMAT1(pred_format, v1) \
- GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_NONFATAL_FAILURE_)
-#define EXPECT_PRED1(pred, v1) \
- GTEST_PRED1_(pred, v1, GTEST_NONFATAL_FAILURE_)
-#define ASSERT_PRED_FORMAT1(pred_format, v1) \
- GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_FATAL_FAILURE_)
-#define ASSERT_PRED1(pred, v1) \
- GTEST_PRED1_(pred, v1, GTEST_FATAL_FAILURE_)
-
-
-
-// Helper function for implementing {EXPECT|ASSERT}_PRED2. Don't use
-// this in your code.
-template <typename Pred,
- typename T1,
- typename T2>
-AssertionResult AssertPred2Helper(const char* pred_text,
- const char* e1,
- const char* e2,
- Pred pred,
- const T1& v1,
- const T2& v2) {
- if (pred(v1, v2)) return AssertionSuccess();
-
+}
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT1.
+// Don't use this in your code.
+#define GTEST_PRED_FORMAT1_(pred_format, v1, on_failure)\
+ GTEST_ASSERT_(pred_format(#v1, v1), \
+ on_failure)
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED1. Don't use
+// this in your code.
+#define GTEST_PRED1_(pred, v1, on_failure)\
+ GTEST_ASSERT_(::testing::AssertPred1Helper(#pred, \
+ #v1, \
+ pred, \
+ v1), on_failure)
+
+// Unary predicate assertion macros.
+#define EXPECT_PRED_FORMAT1(pred_format, v1) \
+ GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_NONFATAL_FAILURE_)
+#define EXPECT_PRED1(pred, v1) \
+ GTEST_PRED1_(pred, v1, GTEST_NONFATAL_FAILURE_)
+#define ASSERT_PRED_FORMAT1(pred_format, v1) \
+ GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_FATAL_FAILURE_)
+#define ASSERT_PRED1(pred, v1) \
+ GTEST_PRED1_(pred, v1, GTEST_FATAL_FAILURE_)
+
+
+
+// Helper function for implementing {EXPECT|ASSERT}_PRED2. Don't use
+// this in your code.
+template <typename Pred,
+ typename T1,
+ typename T2>
+AssertionResult AssertPred2Helper(const char* pred_text,
+ const char* e1,
+ const char* e2,
+ Pred pred,
+ const T1& v1,
+ const T2& v2) {
+ if (pred(v1, v2)) return AssertionSuccess();
+
return AssertionFailure()
<< pred_text << "(" << e1 << ", " << e2
<< ") evaluates to false, where"
<< "\n"
<< e1 << " evaluates to " << ::testing::PrintToString(v1) << "\n"
<< e2 << " evaluates to " << ::testing::PrintToString(v2);
-}
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT2.
-// Don't use this in your code.
-#define GTEST_PRED_FORMAT2_(pred_format, v1, v2, on_failure)\
- GTEST_ASSERT_(pred_format(#v1, #v2, v1, v2), \
- on_failure)
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED2. Don't use
-// this in your code.
-#define GTEST_PRED2_(pred, v1, v2, on_failure)\
- GTEST_ASSERT_(::testing::AssertPred2Helper(#pred, \
- #v1, \
- #v2, \
- pred, \
- v1, \
- v2), on_failure)
-
-// Binary predicate assertion macros.
-#define EXPECT_PRED_FORMAT2(pred_format, v1, v2) \
- GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_NONFATAL_FAILURE_)
-#define EXPECT_PRED2(pred, v1, v2) \
- GTEST_PRED2_(pred, v1, v2, GTEST_NONFATAL_FAILURE_)
-#define ASSERT_PRED_FORMAT2(pred_format, v1, v2) \
- GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_FATAL_FAILURE_)
-#define ASSERT_PRED2(pred, v1, v2) \
- GTEST_PRED2_(pred, v1, v2, GTEST_FATAL_FAILURE_)
-
-
-
-// Helper function for implementing {EXPECT|ASSERT}_PRED3. Don't use
-// this in your code.
-template <typename Pred,
- typename T1,
- typename T2,
- typename T3>
-AssertionResult AssertPred3Helper(const char* pred_text,
- const char* e1,
- const char* e2,
- const char* e3,
- Pred pred,
- const T1& v1,
- const T2& v2,
- const T3& v3) {
- if (pred(v1, v2, v3)) return AssertionSuccess();
-
+}
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT2.
+// Don't use this in your code.
+#define GTEST_PRED_FORMAT2_(pred_format, v1, v2, on_failure)\
+ GTEST_ASSERT_(pred_format(#v1, #v2, v1, v2), \
+ on_failure)
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED2. Don't use
+// this in your code.
+#define GTEST_PRED2_(pred, v1, v2, on_failure)\
+ GTEST_ASSERT_(::testing::AssertPred2Helper(#pred, \
+ #v1, \
+ #v2, \
+ pred, \
+ v1, \
+ v2), on_failure)
+
+// Binary predicate assertion macros.
+#define EXPECT_PRED_FORMAT2(pred_format, v1, v2) \
+ GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_NONFATAL_FAILURE_)
+#define EXPECT_PRED2(pred, v1, v2) \
+ GTEST_PRED2_(pred, v1, v2, GTEST_NONFATAL_FAILURE_)
+#define ASSERT_PRED_FORMAT2(pred_format, v1, v2) \
+ GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_FATAL_FAILURE_)
+#define ASSERT_PRED2(pred, v1, v2) \
+ GTEST_PRED2_(pred, v1, v2, GTEST_FATAL_FAILURE_)
+
+
+
+// Helper function for implementing {EXPECT|ASSERT}_PRED3. Don't use
+// this in your code.
+template <typename Pred,
+ typename T1,
+ typename T2,
+ typename T3>
+AssertionResult AssertPred3Helper(const char* pred_text,
+ const char* e1,
+ const char* e2,
+ const char* e3,
+ Pred pred,
+ const T1& v1,
+ const T2& v2,
+ const T3& v3) {
+ if (pred(v1, v2, v3)) return AssertionSuccess();
+
return AssertionFailure()
<< pred_text << "(" << e1 << ", " << e2 << ", " << e3
<< ") evaluates to false, where"
@@ -194,57 +194,57 @@ AssertionResult AssertPred3Helper(const char* pred_text,
<< e1 << " evaluates to " << ::testing::PrintToString(v1) << "\n"
<< e2 << " evaluates to " << ::testing::PrintToString(v2) << "\n"
<< e3 << " evaluates to " << ::testing::PrintToString(v3);
-}
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT3.
-// Don't use this in your code.
-#define GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, on_failure)\
- GTEST_ASSERT_(pred_format(#v1, #v2, #v3, v1, v2, v3), \
- on_failure)
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED3. Don't use
-// this in your code.
-#define GTEST_PRED3_(pred, v1, v2, v3, on_failure)\
- GTEST_ASSERT_(::testing::AssertPred3Helper(#pred, \
- #v1, \
- #v2, \
- #v3, \
- pred, \
- v1, \
- v2, \
- v3), on_failure)
-
-// Ternary predicate assertion macros.
-#define EXPECT_PRED_FORMAT3(pred_format, v1, v2, v3) \
- GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_NONFATAL_FAILURE_)
-#define EXPECT_PRED3(pred, v1, v2, v3) \
- GTEST_PRED3_(pred, v1, v2, v3, GTEST_NONFATAL_FAILURE_)
-#define ASSERT_PRED_FORMAT3(pred_format, v1, v2, v3) \
- GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_FATAL_FAILURE_)
-#define ASSERT_PRED3(pred, v1, v2, v3) \
- GTEST_PRED3_(pred, v1, v2, v3, GTEST_FATAL_FAILURE_)
-
-
-
-// Helper function for implementing {EXPECT|ASSERT}_PRED4. Don't use
-// this in your code.
-template <typename Pred,
- typename T1,
- typename T2,
- typename T3,
- typename T4>
-AssertionResult AssertPred4Helper(const char* pred_text,
- const char* e1,
- const char* e2,
- const char* e3,
- const char* e4,
- Pred pred,
- const T1& v1,
- const T2& v2,
- const T3& v3,
- const T4& v4) {
- if (pred(v1, v2, v3, v4)) return AssertionSuccess();
-
+}
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT3.
+// Don't use this in your code.
+#define GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, on_failure)\
+ GTEST_ASSERT_(pred_format(#v1, #v2, #v3, v1, v2, v3), \
+ on_failure)
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED3. Don't use
+// this in your code.
+#define GTEST_PRED3_(pred, v1, v2, v3, on_failure)\
+ GTEST_ASSERT_(::testing::AssertPred3Helper(#pred, \
+ #v1, \
+ #v2, \
+ #v3, \
+ pred, \
+ v1, \
+ v2, \
+ v3), on_failure)
+
+// Ternary predicate assertion macros.
+#define EXPECT_PRED_FORMAT3(pred_format, v1, v2, v3) \
+ GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_NONFATAL_FAILURE_)
+#define EXPECT_PRED3(pred, v1, v2, v3) \
+ GTEST_PRED3_(pred, v1, v2, v3, GTEST_NONFATAL_FAILURE_)
+#define ASSERT_PRED_FORMAT3(pred_format, v1, v2, v3) \
+ GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_FATAL_FAILURE_)
+#define ASSERT_PRED3(pred, v1, v2, v3) \
+ GTEST_PRED3_(pred, v1, v2, v3, GTEST_FATAL_FAILURE_)
+
+
+
+// Helper function for implementing {EXPECT|ASSERT}_PRED4. Don't use
+// this in your code.
+template <typename Pred,
+ typename T1,
+ typename T2,
+ typename T3,
+ typename T4>
+AssertionResult AssertPred4Helper(const char* pred_text,
+ const char* e1,
+ const char* e2,
+ const char* e3,
+ const char* e4,
+ Pred pred,
+ const T1& v1,
+ const T2& v2,
+ const T3& v3,
+ const T4& v4) {
+ if (pred(v1, v2, v3, v4)) return AssertionSuccess();
+
return AssertionFailure()
<< pred_text << "(" << e1 << ", " << e2 << ", " << e3 << ", " << e4
<< ") evaluates to false, where"
@@ -253,62 +253,62 @@ AssertionResult AssertPred4Helper(const char* pred_text,
<< e2 << " evaluates to " << ::testing::PrintToString(v2) << "\n"
<< e3 << " evaluates to " << ::testing::PrintToString(v3) << "\n"
<< e4 << " evaluates to " << ::testing::PrintToString(v4);
-}
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT4.
-// Don't use this in your code.
-#define GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, on_failure)\
- GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, v1, v2, v3, v4), \
- on_failure)
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED4. Don't use
-// this in your code.
-#define GTEST_PRED4_(pred, v1, v2, v3, v4, on_failure)\
- GTEST_ASSERT_(::testing::AssertPred4Helper(#pred, \
- #v1, \
- #v2, \
- #v3, \
- #v4, \
- pred, \
- v1, \
- v2, \
- v3, \
- v4), on_failure)
-
-// 4-ary predicate assertion macros.
-#define EXPECT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \
- GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_)
-#define EXPECT_PRED4(pred, v1, v2, v3, v4) \
- GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_)
-#define ASSERT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \
- GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_FATAL_FAILURE_)
-#define ASSERT_PRED4(pred, v1, v2, v3, v4) \
- GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_FATAL_FAILURE_)
-
-
-
-// Helper function for implementing {EXPECT|ASSERT}_PRED5. Don't use
-// this in your code.
-template <typename Pred,
- typename T1,
- typename T2,
- typename T3,
- typename T4,
- typename T5>
-AssertionResult AssertPred5Helper(const char* pred_text,
- const char* e1,
- const char* e2,
- const char* e3,
- const char* e4,
- const char* e5,
- Pred pred,
- const T1& v1,
- const T2& v2,
- const T3& v3,
- const T4& v4,
- const T5& v5) {
- if (pred(v1, v2, v3, v4, v5)) return AssertionSuccess();
-
+}
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT4.
+// Don't use this in your code.
+#define GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, on_failure)\
+ GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, v1, v2, v3, v4), \
+ on_failure)
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED4. Don't use
+// this in your code.
+#define GTEST_PRED4_(pred, v1, v2, v3, v4, on_failure)\
+ GTEST_ASSERT_(::testing::AssertPred4Helper(#pred, \
+ #v1, \
+ #v2, \
+ #v3, \
+ #v4, \
+ pred, \
+ v1, \
+ v2, \
+ v3, \
+ v4), on_failure)
+
+// 4-ary predicate assertion macros.
+#define EXPECT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \
+ GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_)
+#define EXPECT_PRED4(pred, v1, v2, v3, v4) \
+ GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_)
+#define ASSERT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \
+ GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_FATAL_FAILURE_)
+#define ASSERT_PRED4(pred, v1, v2, v3, v4) \
+ GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_FATAL_FAILURE_)
+
+
+
+// Helper function for implementing {EXPECT|ASSERT}_PRED5. Don't use
+// this in your code.
+template <typename Pred,
+ typename T1,
+ typename T2,
+ typename T3,
+ typename T4,
+ typename T5>
+AssertionResult AssertPred5Helper(const char* pred_text,
+ const char* e1,
+ const char* e2,
+ const char* e3,
+ const char* e4,
+ const char* e5,
+ Pred pred,
+ const T1& v1,
+ const T2& v2,
+ const T3& v3,
+ const T4& v4,
+ const T5& v5) {
+ if (pred(v1, v2, v3, v4, v5)) return AssertionSuccess();
+
return AssertionFailure()
<< pred_text << "(" << e1 << ", " << e2 << ", " << e3 << ", " << e4
<< ", " << e5 << ") evaluates to false, where"
@@ -318,42 +318,42 @@ AssertionResult AssertPred5Helper(const char* pred_text,
<< e3 << " evaluates to " << ::testing::PrintToString(v3) << "\n"
<< e4 << " evaluates to " << ::testing::PrintToString(v4) << "\n"
<< e5 << " evaluates to " << ::testing::PrintToString(v5);
-}
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT5.
-// Don't use this in your code.
-#define GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, on_failure)\
- GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, #v5, v1, v2, v3, v4, v5), \
- on_failure)
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED5. Don't use
-// this in your code.
-#define GTEST_PRED5_(pred, v1, v2, v3, v4, v5, on_failure)\
- GTEST_ASSERT_(::testing::AssertPred5Helper(#pred, \
- #v1, \
- #v2, \
- #v3, \
- #v4, \
- #v5, \
- pred, \
- v1, \
- v2, \
- v3, \
- v4, \
- v5), on_failure)
-
-// 5-ary predicate assertion macros.
-#define EXPECT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \
- GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_)
-#define EXPECT_PRED5(pred, v1, v2, v3, v4, v5) \
- GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_)
-#define ASSERT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \
- GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_)
-#define ASSERT_PRED5(pred, v1, v2, v3, v4, v5) \
- GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_)
-
-
-
+}
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT5.
+// Don't use this in your code.
+#define GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, on_failure)\
+ GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, #v5, v1, v2, v3, v4, v5), \
+ on_failure)
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED5. Don't use
+// this in your code.
+#define GTEST_PRED5_(pred, v1, v2, v3, v4, v5, on_failure)\
+ GTEST_ASSERT_(::testing::AssertPred5Helper(#pred, \
+ #v1, \
+ #v2, \
+ #v3, \
+ #v4, \
+ #v5, \
+ pred, \
+ v1, \
+ v2, \
+ v3, \
+ v4, \
+ v5), on_failure)
+
+// 5-ary predicate assertion macros.
+#define EXPECT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \
+ GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_)
+#define EXPECT_PRED5(pred, v1, v2, v3, v4, v5) \
+ GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_)
+#define ASSERT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \
+ GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_)
+#define ASSERT_PRED5(pred, v1, v2, v3, v4, v5) \
+ GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_)
+
+
+
} // namespace testing
#endif // GOOGLETEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
diff --git a/contrib/restricted/googletest/googletest/include/gtest/gtest_prod.h b/contrib/restricted/googletest/googletest/include/gtest/gtest_prod.h
index 6d513245e6..38b9d85a51 100644
--- a/contrib/restricted/googletest/googletest/include/gtest/gtest_prod.h
+++ b/contrib/restricted/googletest/googletest/include/gtest/gtest_prod.h
@@ -1,61 +1,61 @@
-// Copyright 2006, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+// Copyright 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
+//
// Google C++ Testing and Mocking Framework definitions useful in production code.
// GOOGLETEST_CM0003 DO NOT DELETE
-
+
#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_PROD_H_
#define GOOGLETEST_INCLUDE_GTEST_GTEST_PROD_H_
-
-// When you need to test the private or protected members of a class,
-// use the FRIEND_TEST macro to declare your tests as friends of the
-// class. For example:
-//
-// class MyClass {
-// private:
+
+// When you need to test the private or protected members of a class,
+// use the FRIEND_TEST macro to declare your tests as friends of the
+// class. For example:
+//
+// class MyClass {
+// private:
// void PrivateMethod();
// FRIEND_TEST(MyClassTest, PrivateMethodWorks);
-// };
-//
-// class MyClassTest : public testing::Test {
-// // ...
-// };
-//
+// };
+//
+// class MyClassTest : public testing::Test {
+// // ...
+// };
+//
// TEST_F(MyClassTest, PrivateMethodWorks) {
// // Can call MyClass::PrivateMethod() here.
-// }
+// }
//
// Note: The test class must be in the same namespace as the class being tested.
// For example, putting MyClassTest in an anonymous namespace will not work.
-
-#define FRIEND_TEST(test_case_name, test_name)\
-friend class test_case_name##_##test_name##_Test
-
+
+#define FRIEND_TEST(test_case_name, test_name)\
+friend class test_case_name##_##test_name##_Test
+
#endif // GOOGLETEST_INCLUDE_GTEST_GTEST_PROD_H_
diff --git a/contrib/restricted/googletest/googletest/include/gtest/internal/custom/gtest-port.h b/contrib/restricted/googletest/googletest/include/gtest/internal/custom/gtest-port.h
index 73fc5125ed..74b2c76e37 100644
--- a/contrib/restricted/googletest/googletest/include/gtest/internal/custom/gtest-port.h
+++ b/contrib/restricted/googletest/googletest/include/gtest/internal/custom/gtest-port.h
@@ -1,39 +1,39 @@
-// Copyright 2015, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
+// Copyright 2015, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
// Injection point for custom user configurations. See README for details
-//
-// ** Custom implementation starts here **
-
-#ifndef GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PORT_H_
-#define GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PORT_H_
-
+//
+// ** Custom implementation starts here **
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PORT_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PORT_H_
+
#include <re2/re2.h>
// this macro disables built-in implementation of class RE
@@ -79,4 +79,4 @@ namespace testing::internal {
};
}
-#endif // GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PORT_H_
+#endif // GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PORT_H_
diff --git a/contrib/restricted/googletest/googletest/include/gtest/internal/custom/gtest-printers.h b/contrib/restricted/googletest/googletest/include/gtest/internal/custom/gtest-printers.h
index a26cb6f00a..b9495d8378 100644
--- a/contrib/restricted/googletest/googletest/include/gtest/internal/custom/gtest-printers.h
+++ b/contrib/restricted/googletest/googletest/include/gtest/internal/custom/gtest-printers.h
@@ -1,42 +1,42 @@
-// Copyright 2015, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// This file provides an injection point for custom printers in a local
-// installation of gTest.
-// It will be included from gtest-printers.h and the overrides in this file
-// will be visible to everyone.
-//
+// Copyright 2015, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// This file provides an injection point for custom printers in a local
+// installation of gTest.
+// It will be included from gtest-printers.h and the overrides in this file
+// will be visible to everyone.
+//
// Injection point for custom user configurations. See README for details
//
-// ** Custom implementation starts here **
-
+// ** Custom implementation starts here **
+
#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PRINTERS_H_
#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PRINTERS_H_
-
+
#endif // GOOGLETEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PRINTERS_H_
diff --git a/contrib/restricted/googletest/googletest/include/gtest/internal/custom/gtest.h b/contrib/restricted/googletest/googletest/include/gtest/internal/custom/gtest.h
index b641cd3489..afaaf17ba2 100644
--- a/contrib/restricted/googletest/googletest/include/gtest/internal/custom/gtest.h
+++ b/contrib/restricted/googletest/googletest/include/gtest/internal/custom/gtest.h
@@ -1,37 +1,37 @@
-// Copyright 2015, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
+// Copyright 2015, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
// Injection point for custom user configurations. See README for details
-//
-// ** Custom implementation starts here **
-
+//
+// ** Custom implementation starts here **
+
#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_H_
#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_H_
-
+
#endif // GOOGLETEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_H_
diff --git a/contrib/restricted/googletest/googletest/include/gtest/internal/gtest-death-test-internal.h b/contrib/restricted/googletest/googletest/include/gtest/internal/gtest-death-test-internal.h
index 16172e8e90..490296dfad 100644
--- a/contrib/restricted/googletest/googletest/include/gtest/internal/gtest-death-test-internal.h
+++ b/contrib/restricted/googletest/googletest/include/gtest/internal/gtest-death-test-internal.h
@@ -1,167 +1,167 @@
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
// The Google C++ Testing and Mocking Framework (Google Test)
-//
-// This header file defines internal utilities needed for implementing
-// death tests. They are subject to change without notice.
+//
+// This header file defines internal utilities needed for implementing
+// death tests. They are subject to change without notice.
// GOOGLETEST_CM0001 DO NOT DELETE
-
+
#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_
#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_
-
+
#include "gtest/gtest-matchers.h"
-#include "gtest/internal/gtest-internal.h"
-
-#include <stdio.h>
+#include "gtest/internal/gtest-internal.h"
+
+#include <stdio.h>
#include <memory>
-
-namespace testing {
-namespace internal {
-
-GTEST_DECLARE_string_(internal_run_death_test);
-
-// Names of the flags (needed for parsing Google Test flags).
-const char kDeathTestStyleFlag[] = "death_test_style";
-const char kDeathTestUseFork[] = "death_test_use_fork";
-const char kInternalRunDeathTestFlag[] = "internal_run_death_test";
-
-#if GTEST_HAS_DEATH_TEST
-
+
+namespace testing {
+namespace internal {
+
+GTEST_DECLARE_string_(internal_run_death_test);
+
+// Names of the flags (needed for parsing Google Test flags).
+const char kDeathTestStyleFlag[] = "death_test_style";
+const char kDeathTestUseFork[] = "death_test_use_fork";
+const char kInternalRunDeathTestFlag[] = "internal_run_death_test";
+
+#if GTEST_HAS_DEATH_TEST
+
GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
/* class A needs to have dll-interface to be used by clients of class B */)
-// DeathTest is a class that hides much of the complexity of the
-// GTEST_DEATH_TEST_ macro. It is abstract; its static Create method
-// returns a concrete class that depends on the prevailing death test
-// style, as defined by the --gtest_death_test_style and/or
-// --gtest_internal_run_death_test flags.
-
-// In describing the results of death tests, these terms are used with
-// the corresponding definitions:
-//
-// exit status: The integer exit information in the format specified
-// by wait(2)
-// exit code: The integer code passed to exit(3), _exit(2), or
-// returned from main()
-class GTEST_API_ DeathTest {
- public:
- // Create returns false if there was an error determining the
- // appropriate action to take for the current death test; for example,
- // if the gtest_death_test_style flag is set to an invalid value.
- // The LastMessage method will return a more detailed message in that
- // case. Otherwise, the DeathTest pointer pointed to by the "test"
- // argument is set. If the death test should be skipped, the pointer
- // is set to NULL; otherwise, it is set to the address of a new concrete
- // DeathTest object that controls the execution of the current test.
+// DeathTest is a class that hides much of the complexity of the
+// GTEST_DEATH_TEST_ macro. It is abstract; its static Create method
+// returns a concrete class that depends on the prevailing death test
+// style, as defined by the --gtest_death_test_style and/or
+// --gtest_internal_run_death_test flags.
+
+// In describing the results of death tests, these terms are used with
+// the corresponding definitions:
+//
+// exit status: The integer exit information in the format specified
+// by wait(2)
+// exit code: The integer code passed to exit(3), _exit(2), or
+// returned from main()
+class GTEST_API_ DeathTest {
+ public:
+ // Create returns false if there was an error determining the
+ // appropriate action to take for the current death test; for example,
+ // if the gtest_death_test_style flag is set to an invalid value.
+ // The LastMessage method will return a more detailed message in that
+ // case. Otherwise, the DeathTest pointer pointed to by the "test"
+ // argument is set. If the death test should be skipped, the pointer
+ // is set to NULL; otherwise, it is set to the address of a new concrete
+ // DeathTest object that controls the execution of the current test.
static bool Create(const char* statement, Matcher<const std::string&> matcher,
- const char* file, int line, DeathTest** test);
- DeathTest();
- virtual ~DeathTest() { }
-
- // A helper class that aborts a death test when it's deleted.
- class ReturnSentinel {
- public:
- explicit ReturnSentinel(DeathTest* test) : test_(test) { }
- ~ReturnSentinel() { test_->Abort(TEST_ENCOUNTERED_RETURN_STATEMENT); }
- private:
- DeathTest* const test_;
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ReturnSentinel);
- } GTEST_ATTRIBUTE_UNUSED_;
-
- // An enumeration of possible roles that may be taken when a death
- // test is encountered. EXECUTE means that the death test logic should
- // be executed immediately. OVERSEE means that the program should prepare
- // the appropriate environment for a child process to execute the death
- // test, then wait for it to complete.
- enum TestRole { OVERSEE_TEST, EXECUTE_TEST };
-
- // An enumeration of the three reasons that a test might be aborted.
- enum AbortReason {
- TEST_ENCOUNTERED_RETURN_STATEMENT,
- TEST_THREW_EXCEPTION,
- TEST_DID_NOT_DIE
- };
-
- // Assumes one of the above roles.
- virtual TestRole AssumeRole() = 0;
-
- // Waits for the death test to finish and returns its status.
- virtual int Wait() = 0;
-
- // Returns true if the death test passed; that is, the test process
- // exited during the test, its exit status matches a user-supplied
- // predicate, and its stderr output matches a user-supplied regular
- // expression.
- // The user-supplied predicate may be a macro expression rather
- // than a function pointer or functor, or else Wait and Passed could
- // be combined.
- virtual bool Passed(bool exit_status_ok) = 0;
-
- // Signals that the death test did not die as expected.
- virtual void Abort(AbortReason reason) = 0;
-
- // Returns a human-readable outcome message regarding the outcome of
- // the last death test.
- static const char* LastMessage();
-
- static void set_last_death_test_message(const std::string& message);
-
- private:
- // A string containing a description of the outcome of the last death test.
- static std::string last_death_test_message_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(DeathTest);
-};
-
+ const char* file, int line, DeathTest** test);
+ DeathTest();
+ virtual ~DeathTest() { }
+
+ // A helper class that aborts a death test when it's deleted.
+ class ReturnSentinel {
+ public:
+ explicit ReturnSentinel(DeathTest* test) : test_(test) { }
+ ~ReturnSentinel() { test_->Abort(TEST_ENCOUNTERED_RETURN_STATEMENT); }
+ private:
+ DeathTest* const test_;
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ReturnSentinel);
+ } GTEST_ATTRIBUTE_UNUSED_;
+
+ // An enumeration of possible roles that may be taken when a death
+ // test is encountered. EXECUTE means that the death test logic should
+ // be executed immediately. OVERSEE means that the program should prepare
+ // the appropriate environment for a child process to execute the death
+ // test, then wait for it to complete.
+ enum TestRole { OVERSEE_TEST, EXECUTE_TEST };
+
+ // An enumeration of the three reasons that a test might be aborted.
+ enum AbortReason {
+ TEST_ENCOUNTERED_RETURN_STATEMENT,
+ TEST_THREW_EXCEPTION,
+ TEST_DID_NOT_DIE
+ };
+
+ // Assumes one of the above roles.
+ virtual TestRole AssumeRole() = 0;
+
+ // Waits for the death test to finish and returns its status.
+ virtual int Wait() = 0;
+
+ // Returns true if the death test passed; that is, the test process
+ // exited during the test, its exit status matches a user-supplied
+ // predicate, and its stderr output matches a user-supplied regular
+ // expression.
+ // The user-supplied predicate may be a macro expression rather
+ // than a function pointer or functor, or else Wait and Passed could
+ // be combined.
+ virtual bool Passed(bool exit_status_ok) = 0;
+
+ // Signals that the death test did not die as expected.
+ virtual void Abort(AbortReason reason) = 0;
+
+ // Returns a human-readable outcome message regarding the outcome of
+ // the last death test.
+ static const char* LastMessage();
+
+ static void set_last_death_test_message(const std::string& message);
+
+ private:
+ // A string containing a description of the outcome of the last death test.
+ static std::string last_death_test_message_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(DeathTest);
+};
+
GTEST_DISABLE_MSC_WARNINGS_POP_() // 4251
-// Factory interface for death tests. May be mocked out for testing.
-class DeathTestFactory {
- public:
- virtual ~DeathTestFactory() { }
+// Factory interface for death tests. May be mocked out for testing.
+class DeathTestFactory {
+ public:
+ virtual ~DeathTestFactory() { }
virtual bool Create(const char* statement,
Matcher<const std::string&> matcher, const char* file,
int line, DeathTest** test) = 0;
-};
-
-// A concrete DeathTestFactory implementation for normal use.
-class DefaultDeathTestFactory : public DeathTestFactory {
- public:
+};
+
+// A concrete DeathTestFactory implementation for normal use.
+class DefaultDeathTestFactory : public DeathTestFactory {
+ public:
bool Create(const char* statement, Matcher<const std::string&> matcher,
const char* file, int line, DeathTest** test) override;
-};
-
-// Returns true if exit_status describes a process that was terminated
-// by a signal, or exited normally with a nonzero exit code.
-GTEST_API_ bool ExitedUnsuccessfully(int exit_status);
-
+};
+
+// Returns true if exit_status describes a process that was terminated
+// by a signal, or exited normally with a nonzero exit code.
+GTEST_API_ bool ExitedUnsuccessfully(int exit_status);
+
// A string passed to EXPECT_DEATH (etc.) is caught by one of these overloads
// and interpreted as a regex (rather than an Eq matcher) for legacy
// compatibility.
@@ -184,33 +184,33 @@ inline Matcher<const ::std::string&> MakeDeathTestMatcher(
return matcher;
}
-// Traps C++ exceptions escaping statement and reports them as test
-// failures. Note that trapping SEH exceptions is not implemented here.
-# if GTEST_HAS_EXCEPTIONS
-# define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \
- try { \
- GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
- } catch (const ::std::exception& gtest_exception) { \
- fprintf(\
- stderr, \
- "\n%s: Caught std::exception-derived exception escaping the " \
- "death test statement. Exception message: %s\n", \
- ::testing::internal::FormatFileLocation(__FILE__, __LINE__).c_str(), \
- gtest_exception.what()); \
- fflush(stderr); \
- death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \
- } catch (...) { \
- death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \
- }
-
-# else
-# define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \
- GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement)
-
-# endif
-
-// This macro is for implementing ASSERT_DEATH*, EXPECT_DEATH*,
-// ASSERT_EXIT*, and EXPECT_EXIT*.
+// Traps C++ exceptions escaping statement and reports them as test
+// failures. Note that trapping SEH exceptions is not implemented here.
+# if GTEST_HAS_EXCEPTIONS
+# define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \
+ try { \
+ GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
+ } catch (const ::std::exception& gtest_exception) { \
+ fprintf(\
+ stderr, \
+ "\n%s: Caught std::exception-derived exception escaping the " \
+ "death test statement. Exception message: %s\n", \
+ ::testing::internal::FormatFileLocation(__FILE__, __LINE__).c_str(), \
+ gtest_exception.what()); \
+ fflush(stderr); \
+ death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \
+ } catch (...) { \
+ death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \
+ }
+
+# else
+# define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \
+ GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement)
+
+# endif
+
+// This macro is for implementing ASSERT_DEATH*, EXPECT_DEATH*,
+// ASSERT_EXIT*, and EXPECT_EXIT*.
#define GTEST_DEATH_TEST_(statement, predicate, regex_or_matcher, fail) \
GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
if (::testing::internal::AlwaysTrue()) { \
@@ -243,10 +243,10 @@ inline Matcher<const ::std::string&> MakeDeathTestMatcher(
} else \
GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__) \
: fail(::testing::internal::DeathTest::LastMessage())
-// The symbol "fail" here expands to something into which a message
-// can be streamed.
-
-// This macro is for implementing ASSERT/EXPECT_DEBUG_DEATH when compiled in
+// The symbol "fail" here expands to something into which a message
+// can be streamed.
+
+// This macro is for implementing ASSERT/EXPECT_DEBUG_DEATH when compiled in
// NDEBUG mode. In this case we need the statements to be executed and the macro
// must accept a streamed message even though the message is never printed.
// The regex object is not evaluated, but it is used to prevent "unused"
@@ -258,47 +258,47 @@ inline Matcher<const ::std::string&> MakeDeathTestMatcher(
} else if (!::testing::internal::AlwaysTrue()) { \
::testing::internal::MakeDeathTestMatcher(regex_or_matcher); \
} else \
- ::testing::Message()
-
-// A class representing the parsed contents of the
-// --gtest_internal_run_death_test flag, as it existed when
-// RUN_ALL_TESTS was called.
-class InternalRunDeathTestFlag {
- public:
- InternalRunDeathTestFlag(const std::string& a_file,
- int a_line,
- int an_index,
- int a_write_fd)
- : file_(a_file), line_(a_line), index_(an_index),
- write_fd_(a_write_fd) {}
-
- ~InternalRunDeathTestFlag() {
- if (write_fd_ >= 0)
- posix::Close(write_fd_);
- }
-
- const std::string& file() const { return file_; }
- int line() const { return line_; }
- int index() const { return index_; }
- int write_fd() const { return write_fd_; }
-
- private:
- std::string file_;
- int line_;
- int index_;
- int write_fd_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(InternalRunDeathTestFlag);
-};
-
-// Returns a newly created InternalRunDeathTestFlag object with fields
-// initialized from the GTEST_FLAG(internal_run_death_test) flag if
-// the flag is specified; otherwise returns NULL.
-InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag();
-
-#endif // GTEST_HAS_DEATH_TEST
-
-} // namespace internal
-} // namespace testing
-
+ ::testing::Message()
+
+// A class representing the parsed contents of the
+// --gtest_internal_run_death_test flag, as it existed when
+// RUN_ALL_TESTS was called.
+class InternalRunDeathTestFlag {
+ public:
+ InternalRunDeathTestFlag(const std::string& a_file,
+ int a_line,
+ int an_index,
+ int a_write_fd)
+ : file_(a_file), line_(a_line), index_(an_index),
+ write_fd_(a_write_fd) {}
+
+ ~InternalRunDeathTestFlag() {
+ if (write_fd_ >= 0)
+ posix::Close(write_fd_);
+ }
+
+ const std::string& file() const { return file_; }
+ int line() const { return line_; }
+ int index() const { return index_; }
+ int write_fd() const { return write_fd_; }
+
+ private:
+ std::string file_;
+ int line_;
+ int index_;
+ int write_fd_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(InternalRunDeathTestFlag);
+};
+
+// Returns a newly created InternalRunDeathTestFlag object with fields
+// initialized from the GTEST_FLAG(internal_run_death_test) flag if
+// the flag is specified; otherwise returns NULL.
+InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag();
+
+#endif // GTEST_HAS_DEATH_TEST
+
+} // namespace internal
+} // namespace testing
+
#endif // GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_
diff --git a/contrib/restricted/googletest/googletest/include/gtest/internal/gtest-filepath.h b/contrib/restricted/googletest/googletest/include/gtest/internal/gtest-filepath.h
index 5c3ef0a344..0c033abc34 100644
--- a/contrib/restricted/googletest/googletest/include/gtest/internal/gtest-filepath.h
+++ b/contrib/restricted/googletest/googletest/include/gtest/internal/gtest-filepath.h
@@ -1,211 +1,211 @@
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Google Test filepath utilities
-//
-// This header file declares classes and functions used internally by
-// Google Test. They are subject to change without notice.
-//
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Google Test filepath utilities
+//
+// This header file declares classes and functions used internally by
+// Google Test. They are subject to change without notice.
+//
// This file is #included in gtest/internal/gtest-internal.h.
-// Do not include this header file separately!
-
+// Do not include this header file separately!
+
// GOOGLETEST_CM0001 DO NOT DELETE
#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
-
-#include "gtest/internal/gtest-string.h"
-
+
+#include "gtest/internal/gtest-string.h"
+
GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
/* class A needs to have dll-interface to be used by clients of class B */)
-namespace testing {
-namespace internal {
-
-// FilePath - a class for file and directory pathname manipulation which
-// handles platform-specific conventions (like the pathname separator).
-// Used for helper functions for naming files in a directory for xml output.
-// Except for Set methods, all methods are const or static, which provides an
-// "immutable value object" -- useful for peace of mind.
-// A FilePath with a value ending in a path separator ("like/this/") represents
-// a directory, otherwise it is assumed to represent a file. In either case,
-// it may or may not represent an actual file or directory in the file system.
-// Names are NOT checked for syntax correctness -- no checking for illegal
-// characters, malformed paths, etc.
-
-class GTEST_API_ FilePath {
- public:
- FilePath() : pathname_("") { }
- FilePath(const FilePath& rhs) : pathname_(rhs.pathname_) { }
-
- explicit FilePath(const std::string& pathname) : pathname_(pathname) {
- Normalize();
- }
-
- FilePath& operator=(const FilePath& rhs) {
- Set(rhs);
- return *this;
- }
-
- void Set(const FilePath& rhs) {
- pathname_ = rhs.pathname_;
- }
-
- const std::string& string() const { return pathname_; }
- const char* c_str() const { return pathname_.c_str(); }
-
- // Returns the current working directory, or "" if unsuccessful.
- static FilePath GetCurrentDir();
-
- // Given directory = "dir", base_name = "test", number = 0,
- // extension = "xml", returns "dir/test.xml". If number is greater
- // than zero (e.g., 12), returns "dir/test_12.xml".
- // On Windows platform, uses \ as the separator rather than /.
- static FilePath MakeFileName(const FilePath& directory,
- const FilePath& base_name,
- int number,
- const char* extension);
-
- // Given directory = "dir", relative_path = "test.xml",
- // returns "dir/test.xml".
- // On Windows, uses \ as the separator rather than /.
- static FilePath ConcatPaths(const FilePath& directory,
- const FilePath& relative_path);
-
- // Returns a pathname for a file that does not currently exist. The pathname
- // will be directory/base_name.extension or
- // directory/base_name_<number>.extension if directory/base_name.extension
- // already exists. The number will be incremented until a pathname is found
- // that does not already exist.
- // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'.
- // There could be a race condition if two or more processes are calling this
- // function at the same time -- they could both pick the same filename.
- static FilePath GenerateUniqueFileName(const FilePath& directory,
- const FilePath& base_name,
- const char* extension);
-
+namespace testing {
+namespace internal {
+
+// FilePath - a class for file and directory pathname manipulation which
+// handles platform-specific conventions (like the pathname separator).
+// Used for helper functions for naming files in a directory for xml output.
+// Except for Set methods, all methods are const or static, which provides an
+// "immutable value object" -- useful for peace of mind.
+// A FilePath with a value ending in a path separator ("like/this/") represents
+// a directory, otherwise it is assumed to represent a file. In either case,
+// it may or may not represent an actual file or directory in the file system.
+// Names are NOT checked for syntax correctness -- no checking for illegal
+// characters, malformed paths, etc.
+
+class GTEST_API_ FilePath {
+ public:
+ FilePath() : pathname_("") { }
+ FilePath(const FilePath& rhs) : pathname_(rhs.pathname_) { }
+
+ explicit FilePath(const std::string& pathname) : pathname_(pathname) {
+ Normalize();
+ }
+
+ FilePath& operator=(const FilePath& rhs) {
+ Set(rhs);
+ return *this;
+ }
+
+ void Set(const FilePath& rhs) {
+ pathname_ = rhs.pathname_;
+ }
+
+ const std::string& string() const { return pathname_; }
+ const char* c_str() const { return pathname_.c_str(); }
+
+ // Returns the current working directory, or "" if unsuccessful.
+ static FilePath GetCurrentDir();
+
+ // Given directory = "dir", base_name = "test", number = 0,
+ // extension = "xml", returns "dir/test.xml". If number is greater
+ // than zero (e.g., 12), returns "dir/test_12.xml".
+ // On Windows platform, uses \ as the separator rather than /.
+ static FilePath MakeFileName(const FilePath& directory,
+ const FilePath& base_name,
+ int number,
+ const char* extension);
+
+ // Given directory = "dir", relative_path = "test.xml",
+ // returns "dir/test.xml".
+ // On Windows, uses \ as the separator rather than /.
+ static FilePath ConcatPaths(const FilePath& directory,
+ const FilePath& relative_path);
+
+ // Returns a pathname for a file that does not currently exist. The pathname
+ // will be directory/base_name.extension or
+ // directory/base_name_<number>.extension if directory/base_name.extension
+ // already exists. The number will be incremented until a pathname is found
+ // that does not already exist.
+ // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'.
+ // There could be a race condition if two or more processes are calling this
+ // function at the same time -- they could both pick the same filename.
+ static FilePath GenerateUniqueFileName(const FilePath& directory,
+ const FilePath& base_name,
+ const char* extension);
+
// Returns true if and only if the path is "".
- bool IsEmpty() const { return pathname_.empty(); }
-
- // If input name has a trailing separator character, removes it and returns
- // the name, otherwise return the name string unmodified.
- // On Windows platform, uses \ as the separator, other platforms use /.
- FilePath RemoveTrailingPathSeparator() const;
-
- // Returns a copy of the FilePath with the directory part removed.
- // Example: FilePath("path/to/file").RemoveDirectoryName() returns
- // FilePath("file"). If there is no directory part ("just_a_file"), it returns
- // the FilePath unmodified. If there is no file part ("just_a_dir/") it
- // returns an empty FilePath ("").
- // On Windows platform, '\' is the path separator, otherwise it is '/'.
- FilePath RemoveDirectoryName() const;
-
- // RemoveFileName returns the directory path with the filename removed.
- // Example: FilePath("path/to/file").RemoveFileName() returns "path/to/".
- // If the FilePath is "a_file" or "/a_file", RemoveFileName returns
- // FilePath("./") or, on Windows, FilePath(".\\"). If the filepath does
- // not have a file, like "just/a/dir/", it returns the FilePath unmodified.
- // On Windows platform, '\' is the path separator, otherwise it is '/'.
- FilePath RemoveFileName() const;
-
- // Returns a copy of the FilePath with the case-insensitive extension removed.
- // Example: FilePath("dir/file.exe").RemoveExtension("EXE") returns
- // FilePath("dir/file"). If a case-insensitive extension is not
- // found, returns a copy of the original FilePath.
- FilePath RemoveExtension(const char* extension) const;
-
- // Creates directories so that path exists. Returns true if successful or if
- // the directories already exist; returns false if unable to create
- // directories for any reason. Will also return false if the FilePath does
- // not represent a directory (that is, it doesn't end with a path separator).
- bool CreateDirectoriesRecursively() const;
-
- // Create the directory so that path exists. Returns true if successful or
- // if the directory already exists; returns false if unable to create the
- // directory for any reason, including if the parent directory does not
- // exist. Not named "CreateDirectory" because that's a macro on Windows.
- bool CreateFolder() const;
-
- // Returns true if FilePath describes something in the file-system,
- // either a file, directory, or whatever, and that something exists.
- bool FileOrDirectoryExists() const;
-
- // Returns true if pathname describes a directory in the file-system
- // that exists.
- bool DirectoryExists() const;
-
- // Returns true if FilePath ends with a path separator, which indicates that
- // it is intended to represent a directory. Returns false otherwise.
- // This does NOT check that a directory (or file) actually exists.
- bool IsDirectory() const;
-
- // Returns true if pathname describes a root directory. (Windows has one
- // root directory per disk drive.)
- bool IsRootDirectory() const;
-
- // Returns true if pathname describes an absolute path.
- bool IsAbsolutePath() const;
-
- private:
- // Replaces multiple consecutive separators with a single separator.
- // For example, "bar///foo" becomes "bar/foo". Does not eliminate other
- // redundancies that might be in a pathname involving "." or "..".
- //
- // A pathname with multiple consecutive separators may occur either through
- // user error or as a result of some scripts or APIs that generate a pathname
- // with a trailing separator. On other platforms the same API or script
- // may NOT generate a pathname with a trailing "/". Then elsewhere that
- // pathname may have another "/" and pathname components added to it,
- // without checking for the separator already being there.
- // The script language and operating system may allow paths like "foo//bar"
- // but some of the functions in FilePath will not handle that correctly. In
- // particular, RemoveTrailingPathSeparator() only removes one separator, and
- // it is called in CreateDirectoriesRecursively() assuming that it will change
- // a pathname from directory syntax (trailing separator) to filename syntax.
- //
- // On Windows this method also replaces the alternate path separator '/' with
- // the primary path separator '\\', so that for example "bar\\/\\foo" becomes
- // "bar\\foo".
-
- void Normalize();
-
+ bool IsEmpty() const { return pathname_.empty(); }
+
+ // If input name has a trailing separator character, removes it and returns
+ // the name, otherwise return the name string unmodified.
+ // On Windows platform, uses \ as the separator, other platforms use /.
+ FilePath RemoveTrailingPathSeparator() const;
+
+ // Returns a copy of the FilePath with the directory part removed.
+ // Example: FilePath("path/to/file").RemoveDirectoryName() returns
+ // FilePath("file"). If there is no directory part ("just_a_file"), it returns
+ // the FilePath unmodified. If there is no file part ("just_a_dir/") it
+ // returns an empty FilePath ("").
+ // On Windows platform, '\' is the path separator, otherwise it is '/'.
+ FilePath RemoveDirectoryName() const;
+
+ // RemoveFileName returns the directory path with the filename removed.
+ // Example: FilePath("path/to/file").RemoveFileName() returns "path/to/".
+ // If the FilePath is "a_file" or "/a_file", RemoveFileName returns
+ // FilePath("./") or, on Windows, FilePath(".\\"). If the filepath does
+ // not have a file, like "just/a/dir/", it returns the FilePath unmodified.
+ // On Windows platform, '\' is the path separator, otherwise it is '/'.
+ FilePath RemoveFileName() const;
+
+ // Returns a copy of the FilePath with the case-insensitive extension removed.
+ // Example: FilePath("dir/file.exe").RemoveExtension("EXE") returns
+ // FilePath("dir/file"). If a case-insensitive extension is not
+ // found, returns a copy of the original FilePath.
+ FilePath RemoveExtension(const char* extension) const;
+
+ // Creates directories so that path exists. Returns true if successful or if
+ // the directories already exist; returns false if unable to create
+ // directories for any reason. Will also return false if the FilePath does
+ // not represent a directory (that is, it doesn't end with a path separator).
+ bool CreateDirectoriesRecursively() const;
+
+ // Create the directory so that path exists. Returns true if successful or
+ // if the directory already exists; returns false if unable to create the
+ // directory for any reason, including if the parent directory does not
+ // exist. Not named "CreateDirectory" because that's a macro on Windows.
+ bool CreateFolder() const;
+
+ // Returns true if FilePath describes something in the file-system,
+ // either a file, directory, or whatever, and that something exists.
+ bool FileOrDirectoryExists() const;
+
+ // Returns true if pathname describes a directory in the file-system
+ // that exists.
+ bool DirectoryExists() const;
+
+ // Returns true if FilePath ends with a path separator, which indicates that
+ // it is intended to represent a directory. Returns false otherwise.
+ // This does NOT check that a directory (or file) actually exists.
+ bool IsDirectory() const;
+
+ // Returns true if pathname describes a root directory. (Windows has one
+ // root directory per disk drive.)
+ bool IsRootDirectory() const;
+
+ // Returns true if pathname describes an absolute path.
+ bool IsAbsolutePath() const;
+
+ private:
+ // Replaces multiple consecutive separators with a single separator.
+ // For example, "bar///foo" becomes "bar/foo". Does not eliminate other
+ // redundancies that might be in a pathname involving "." or "..".
+ //
+ // A pathname with multiple consecutive separators may occur either through
+ // user error or as a result of some scripts or APIs that generate a pathname
+ // with a trailing separator. On other platforms the same API or script
+ // may NOT generate a pathname with a trailing "/". Then elsewhere that
+ // pathname may have another "/" and pathname components added to it,
+ // without checking for the separator already being there.
+ // The script language and operating system may allow paths like "foo//bar"
+ // but some of the functions in FilePath will not handle that correctly. In
+ // particular, RemoveTrailingPathSeparator() only removes one separator, and
+ // it is called in CreateDirectoriesRecursively() assuming that it will change
+ // a pathname from directory syntax (trailing separator) to filename syntax.
+ //
+ // On Windows this method also replaces the alternate path separator '/' with
+ // the primary path separator '\\', so that for example "bar\\/\\foo" becomes
+ // "bar\\foo".
+
+ void Normalize();
+
// Returns a pointer to the last occurrence of a valid path separator in
- // the FilePath. On Windows, for example, both '/' and '\' are valid path
- // separators. Returns NULL if no path separator was found.
- const char* FindLastPathSeparator() const;
-
- std::string pathname_;
-}; // class FilePath
-
-} // namespace internal
-} // namespace testing
-
+ // the FilePath. On Windows, for example, both '/' and '\' are valid path
+ // separators. Returns NULL if no path separator was found.
+ const char* FindLastPathSeparator() const;
+
+ std::string pathname_;
+}; // class FilePath
+
+} // namespace internal
+} // namespace testing
+
GTEST_DISABLE_MSC_WARNINGS_POP_() // 4251
#endif // GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
diff --git a/contrib/restricted/googletest/googletest/include/gtest/internal/gtest-internal.h b/contrib/restricted/googletest/googletest/include/gtest/internal/gtest-internal.h
index 6786ef9e77..e53b5b593b 100644
--- a/contrib/restricted/googletest/googletest/include/gtest/internal/gtest-internal.h
+++ b/contrib/restricted/googletest/googletest/include/gtest/internal/gtest-internal.h
@@ -1,83 +1,83 @@
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
// The Google C++ Testing and Mocking Framework (Google Test)
-//
-// This header file declares functions and macros used internally by
-// Google Test. They are subject to change without notice.
-
+//
+// This header file declares functions and macros used internally by
+// Google Test. They are subject to change without notice.
+
// GOOGLETEST_CM0001 DO NOT DELETE
#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
-
-#include "gtest/internal/gtest-port.h"
-
-#if GTEST_OS_LINUX
-# include <stdlib.h>
-# include <sys/types.h>
-# include <sys/wait.h>
-# include <unistd.h>
-#endif // GTEST_OS_LINUX
-
-#if GTEST_HAS_EXCEPTIONS
-# include <stdexcept>
-#endif
-
-#include <ctype.h>
-#include <float.h>
-#include <string.h>
+
+#include "gtest/internal/gtest-port.h"
+
+#if GTEST_OS_LINUX
+# include <stdlib.h>
+# include <sys/types.h>
+# include <sys/wait.h>
+# include <unistd.h>
+#endif // GTEST_OS_LINUX
+
+#if GTEST_HAS_EXCEPTIONS
+# include <stdexcept>
+#endif
+
+#include <ctype.h>
+#include <float.h>
+#include <string.h>
#include <cstdint>
-#include <iomanip>
-#include <limits>
-#include <map>
-#include <set>
-#include <string>
+#include <iomanip>
+#include <limits>
+#include <map>
+#include <set>
+#include <string>
#include <type_traits>
-#include <vector>
-
-#include "gtest/gtest-message.h"
+#include <vector>
+
+#include "gtest/gtest-message.h"
#include "gtest/internal/gtest-filepath.h"
-#include "gtest/internal/gtest-string.h"
-#include "gtest/internal/gtest-type-util.h"
-
-// Due to C++ preprocessor weirdness, we need double indirection to
-// concatenate two tokens when one of them is __LINE__. Writing
-//
-// foo ## __LINE__
-//
-// will result in the token foo__LINE__, instead of foo followed by
-// the current line number. For more details, see
-// http://www.parashift.com/c++-faq-lite/misc-technical-issues.html#faq-39.6
-#define GTEST_CONCAT_TOKEN_(foo, bar) GTEST_CONCAT_TOKEN_IMPL_(foo, bar)
-#define GTEST_CONCAT_TOKEN_IMPL_(foo, bar) foo ## bar
-
+#include "gtest/internal/gtest-string.h"
+#include "gtest/internal/gtest-type-util.h"
+
+// Due to C++ preprocessor weirdness, we need double indirection to
+// concatenate two tokens when one of them is __LINE__. Writing
+//
+// foo ## __LINE__
+//
+// will result in the token foo__LINE__, instead of foo followed by
+// the current line number. For more details, see
+// http://www.parashift.com/c++-faq-lite/misc-technical-issues.html#faq-39.6
+#define GTEST_CONCAT_TOKEN_(foo, bar) GTEST_CONCAT_TOKEN_IMPL_(foo, bar)
+#define GTEST_CONCAT_TOKEN_IMPL_(foo, bar) foo ## bar
+
// Stringifies its argument.
// Work around a bug in visual studio which doesn't accept code like this:
//
@@ -93,31 +93,31 @@
namespace proto2 {
class MessageLite;
}
-
-namespace testing {
-
-// Forward declarations.
-
-class AssertionResult; // Result of an assertion.
-class Message; // Represents a failure message.
-class Test; // Represents a test.
-class TestInfo; // Information about a test.
-class TestPartResult; // Result of a test part.
+
+namespace testing {
+
+// Forward declarations.
+
+class AssertionResult; // Result of an assertion.
+class Message; // Represents a failure message.
+class Test; // Represents a test.
+class TestInfo; // Information about a test.
+class TestPartResult; // Result of a test part.
class UnitTest; // A collection of test suites.
-
-template <typename T>
-::std::string PrintToString(const T& value);
-
-namespace internal {
-
-struct TraceInfo; // Information about a trace point.
-class TestInfoImpl; // Opaque implementation of TestInfo
-class UnitTestImpl; // Opaque implementation of UnitTest
-
-// The text used in failure messages to indicate the start of the
-// stack trace.
-GTEST_API_ extern const char kStackTraceMarker[];
-
+
+template <typename T>
+::std::string PrintToString(const T& value);
+
+namespace internal {
+
+struct TraceInfo; // Information about a trace point.
+class TestInfoImpl; // Opaque implementation of TestInfo
+class UnitTestImpl; // Opaque implementation of UnitTest
+
+// The text used in failure messages to indicate the start of the
+// stack trace.
+GTEST_API_ extern const char kStackTraceMarker[];
+
// An IgnoredValue object can be implicitly constructed from ANY value.
class IgnoredValue {
struct Sink {};
@@ -134,369 +134,369 @@ class IgnoredValue {
int>::type = 0>
IgnoredValue(const T& /* ignored */) {} // NOLINT(runtime/explicit)
};
-
-// Appends the user-supplied message to the Google-Test-generated message.
-GTEST_API_ std::string AppendUserMessage(
- const std::string& gtest_msg, const Message& user_msg);
-
-#if GTEST_HAS_EXCEPTIONS
-
+
+// Appends the user-supplied message to the Google-Test-generated message.
+GTEST_API_ std::string AppendUserMessage(
+ const std::string& gtest_msg, const Message& user_msg);
+
+#if GTEST_HAS_EXCEPTIONS
+
GTEST_DISABLE_MSC_WARNINGS_PUSH_(4275 \
/* an exported class was derived from a class that was not exported */)
-// This exception is thrown by (and only by) a failed Google Test
-// assertion when GTEST_FLAG(throw_on_failure) is true (if exceptions
-// are enabled). We derive it from std::runtime_error, which is for
-// errors presumably detectable only at run time. Since
-// std::runtime_error inherits from std::exception, many testing
-// frameworks know how to extract and print the message inside it.
-class GTEST_API_ GoogleTestFailureException : public ::std::runtime_error {
- public:
- explicit GoogleTestFailureException(const TestPartResult& failure);
-};
-
+// This exception is thrown by (and only by) a failed Google Test
+// assertion when GTEST_FLAG(throw_on_failure) is true (if exceptions
+// are enabled). We derive it from std::runtime_error, which is for
+// errors presumably detectable only at run time. Since
+// std::runtime_error inherits from std::exception, many testing
+// frameworks know how to extract and print the message inside it.
+class GTEST_API_ GoogleTestFailureException : public ::std::runtime_error {
+ public:
+ explicit GoogleTestFailureException(const TestPartResult& failure);
+};
+
GTEST_DISABLE_MSC_WARNINGS_POP_() // 4275
-#endif // GTEST_HAS_EXCEPTIONS
-
-namespace edit_distance {
-// Returns the optimal edits to go from 'left' to 'right'.
-// All edits cost the same, with replace having lower priority than
-// add/remove.
+#endif // GTEST_HAS_EXCEPTIONS
+
+namespace edit_distance {
+// Returns the optimal edits to go from 'left' to 'right'.
+// All edits cost the same, with replace having lower priority than
+// add/remove.
// Simple implementation of the Wagner-Fischer algorithm.
-// See http://en.wikipedia.org/wiki/Wagner-Fischer_algorithm
-enum EditType { kMatch, kAdd, kRemove, kReplace };
-GTEST_API_ std::vector<EditType> CalculateOptimalEdits(
- const std::vector<size_t>& left, const std::vector<size_t>& right);
-
-// Same as above, but the input is represented as strings.
-GTEST_API_ std::vector<EditType> CalculateOptimalEdits(
- const std::vector<std::string>& left,
- const std::vector<std::string>& right);
-
-// Create a diff of the input strings in Unified diff format.
-GTEST_API_ std::string CreateUnifiedDiff(const std::vector<std::string>& left,
- const std::vector<std::string>& right,
- size_t context = 2);
-
-} // namespace edit_distance
-
-// Calculate the diff between 'left' and 'right' and return it in unified diff
-// format.
-// If not null, stores in 'total_line_count' the total number of lines found
-// in left + right.
-GTEST_API_ std::string DiffStrings(const std::string& left,
- const std::string& right,
- size_t* total_line_count);
-
-// Constructs and returns the message for an equality assertion
-// (e.g. ASSERT_EQ, EXPECT_STREQ, etc) failure.
-//
-// The first four parameters are the expressions used in the assertion
-// and their values, as strings. For example, for ASSERT_EQ(foo, bar)
-// where foo is 5 and bar is 6, we have:
-//
-// expected_expression: "foo"
-// actual_expression: "bar"
-// expected_value: "5"
-// actual_value: "6"
-//
+// See http://en.wikipedia.org/wiki/Wagner-Fischer_algorithm
+enum EditType { kMatch, kAdd, kRemove, kReplace };
+GTEST_API_ std::vector<EditType> CalculateOptimalEdits(
+ const std::vector<size_t>& left, const std::vector<size_t>& right);
+
+// Same as above, but the input is represented as strings.
+GTEST_API_ std::vector<EditType> CalculateOptimalEdits(
+ const std::vector<std::string>& left,
+ const std::vector<std::string>& right);
+
+// Create a diff of the input strings in Unified diff format.
+GTEST_API_ std::string CreateUnifiedDiff(const std::vector<std::string>& left,
+ const std::vector<std::string>& right,
+ size_t context = 2);
+
+} // namespace edit_distance
+
+// Calculate the diff between 'left' and 'right' and return it in unified diff
+// format.
+// If not null, stores in 'total_line_count' the total number of lines found
+// in left + right.
+GTEST_API_ std::string DiffStrings(const std::string& left,
+ const std::string& right,
+ size_t* total_line_count);
+
+// Constructs and returns the message for an equality assertion
+// (e.g. ASSERT_EQ, EXPECT_STREQ, etc) failure.
+//
+// The first four parameters are the expressions used in the assertion
+// and their values, as strings. For example, for ASSERT_EQ(foo, bar)
+// where foo is 5 and bar is 6, we have:
+//
+// expected_expression: "foo"
+// actual_expression: "bar"
+// expected_value: "5"
+// actual_value: "6"
+//
// The ignoring_case parameter is true if and only if the assertion is a
-// *_STRCASEEQ*. When it's true, the string " (ignoring case)" will
-// be inserted into the message.
-GTEST_API_ AssertionResult EqFailure(const char* expected_expression,
- const char* actual_expression,
- const std::string& expected_value,
- const std::string& actual_value,
- bool ignoring_case);
-
-// Constructs a failure message for Boolean assertions such as EXPECT_TRUE.
-GTEST_API_ std::string GetBoolAssertionFailureMessage(
- const AssertionResult& assertion_result,
- const char* expression_text,
- const char* actual_predicate_value,
- const char* expected_predicate_value);
-
-// This template class represents an IEEE floating-point number
-// (either single-precision or double-precision, depending on the
-// template parameters).
-//
-// The purpose of this class is to do more sophisticated number
-// comparison. (Due to round-off error, etc, it's very unlikely that
-// two floating-points will be equal exactly. Hence a naive
-// comparison by the == operation often doesn't work.)
-//
-// Format of IEEE floating-point:
-//
-// The most-significant bit being the leftmost, an IEEE
-// floating-point looks like
-//
-// sign_bit exponent_bits fraction_bits
-//
-// Here, sign_bit is a single bit that designates the sign of the
-// number.
-//
-// For float, there are 8 exponent bits and 23 fraction bits.
-//
-// For double, there are 11 exponent bits and 52 fraction bits.
-//
-// More details can be found at
-// http://en.wikipedia.org/wiki/IEEE_floating-point_standard.
-//
-// Template parameter:
-//
-// RawType: the raw floating-point type (either float or double)
-template <typename RawType>
-class FloatingPoint {
- public:
- // Defines the unsigned integer type that has the same size as the
- // floating point number.
- typedef typename TypeWithSize<sizeof(RawType)>::UInt Bits;
-
- // Constants.
-
- // # of bits in a number.
- static const size_t kBitCount = 8*sizeof(RawType);
-
- // # of fraction bits in a number.
- static const size_t kFractionBitCount =
- std::numeric_limits<RawType>::digits - 1;
-
- // # of exponent bits in a number.
- static const size_t kExponentBitCount = kBitCount - 1 - kFractionBitCount;
-
- // The mask for the sign bit.
- static const Bits kSignBitMask = static_cast<Bits>(1) << (kBitCount - 1);
-
- // The mask for the fraction bits.
- static const Bits kFractionBitMask =
- ~static_cast<Bits>(0) >> (kExponentBitCount + 1);
-
- // The mask for the exponent bits.
- static const Bits kExponentBitMask = ~(kSignBitMask | kFractionBitMask);
-
- // How many ULP's (Units in the Last Place) we want to tolerate when
- // comparing two numbers. The larger the value, the more error we
- // allow. A 0 value means that two numbers must be exactly the same
- // to be considered equal.
- //
- // The maximum error of a single floating-point operation is 0.5
- // units in the last place. On Intel CPU's, all floating-point
- // calculations are done with 80-bit precision, while double has 64
- // bits. Therefore, 4 should be enough for ordinary use.
- //
- // See the following article for more details on ULP:
- // http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/
+// *_STRCASEEQ*. When it's true, the string " (ignoring case)" will
+// be inserted into the message.
+GTEST_API_ AssertionResult EqFailure(const char* expected_expression,
+ const char* actual_expression,
+ const std::string& expected_value,
+ const std::string& actual_value,
+ bool ignoring_case);
+
+// Constructs a failure message for Boolean assertions such as EXPECT_TRUE.
+GTEST_API_ std::string GetBoolAssertionFailureMessage(
+ const AssertionResult& assertion_result,
+ const char* expression_text,
+ const char* actual_predicate_value,
+ const char* expected_predicate_value);
+
+// This template class represents an IEEE floating-point number
+// (either single-precision or double-precision, depending on the
+// template parameters).
+//
+// The purpose of this class is to do more sophisticated number
+// comparison. (Due to round-off error, etc, it's very unlikely that
+// two floating-points will be equal exactly. Hence a naive
+// comparison by the == operation often doesn't work.)
+//
+// Format of IEEE floating-point:
+//
+// The most-significant bit being the leftmost, an IEEE
+// floating-point looks like
+//
+// sign_bit exponent_bits fraction_bits
+//
+// Here, sign_bit is a single bit that designates the sign of the
+// number.
+//
+// For float, there are 8 exponent bits and 23 fraction bits.
+//
+// For double, there are 11 exponent bits and 52 fraction bits.
+//
+// More details can be found at
+// http://en.wikipedia.org/wiki/IEEE_floating-point_standard.
+//
+// Template parameter:
+//
+// RawType: the raw floating-point type (either float or double)
+template <typename RawType>
+class FloatingPoint {
+ public:
+ // Defines the unsigned integer type that has the same size as the
+ // floating point number.
+ typedef typename TypeWithSize<sizeof(RawType)>::UInt Bits;
+
+ // Constants.
+
+ // # of bits in a number.
+ static const size_t kBitCount = 8*sizeof(RawType);
+
+ // # of fraction bits in a number.
+ static const size_t kFractionBitCount =
+ std::numeric_limits<RawType>::digits - 1;
+
+ // # of exponent bits in a number.
+ static const size_t kExponentBitCount = kBitCount - 1 - kFractionBitCount;
+
+ // The mask for the sign bit.
+ static const Bits kSignBitMask = static_cast<Bits>(1) << (kBitCount - 1);
+
+ // The mask for the fraction bits.
+ static const Bits kFractionBitMask =
+ ~static_cast<Bits>(0) >> (kExponentBitCount + 1);
+
+ // The mask for the exponent bits.
+ static const Bits kExponentBitMask = ~(kSignBitMask | kFractionBitMask);
+
+ // How many ULP's (Units in the Last Place) we want to tolerate when
+ // comparing two numbers. The larger the value, the more error we
+ // allow. A 0 value means that two numbers must be exactly the same
+ // to be considered equal.
+ //
+ // The maximum error of a single floating-point operation is 0.5
+ // units in the last place. On Intel CPU's, all floating-point
+ // calculations are done with 80-bit precision, while double has 64
+ // bits. Therefore, 4 should be enough for ordinary use.
+ //
+ // See the following article for more details on ULP:
+ // http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/
static const uint32_t kMaxUlps = 4;
-
- // Constructs a FloatingPoint from a raw floating-point number.
- //
- // On an Intel CPU, passing a non-normalized NAN (Not a Number)
- // around may change its bits, although the new value is guaranteed
- // to be also a NAN. Therefore, don't expect this constructor to
- // preserve the bits in x when x is a NAN.
- explicit FloatingPoint(const RawType& x) { u_.value_ = x; }
-
- // Static methods
-
- // Reinterprets a bit pattern as a floating-point number.
- //
- // This function is needed to test the AlmostEquals() method.
- static RawType ReinterpretBits(const Bits bits) {
- FloatingPoint fp(0);
- fp.u_.bits_ = bits;
- return fp.u_.value_;
- }
-
- // Returns the floating-point number that represent positive infinity.
- static RawType Infinity() {
- return ReinterpretBits(kExponentBitMask);
- }
-
- // Returns the maximum representable finite floating-point number.
- static RawType Max();
-
- // Non-static methods
-
- // Returns the bits that represents this number.
- const Bits &bits() const { return u_.bits_; }
-
- // Returns the exponent bits of this number.
- Bits exponent_bits() const { return kExponentBitMask & u_.bits_; }
-
- // Returns the fraction bits of this number.
- Bits fraction_bits() const { return kFractionBitMask & u_.bits_; }
-
- // Returns the sign bit of this number.
- Bits sign_bit() const { return kSignBitMask & u_.bits_; }
-
+
+ // Constructs a FloatingPoint from a raw floating-point number.
+ //
+ // On an Intel CPU, passing a non-normalized NAN (Not a Number)
+ // around may change its bits, although the new value is guaranteed
+ // to be also a NAN. Therefore, don't expect this constructor to
+ // preserve the bits in x when x is a NAN.
+ explicit FloatingPoint(const RawType& x) { u_.value_ = x; }
+
+ // Static methods
+
+ // Reinterprets a bit pattern as a floating-point number.
+ //
+ // This function is needed to test the AlmostEquals() method.
+ static RawType ReinterpretBits(const Bits bits) {
+ FloatingPoint fp(0);
+ fp.u_.bits_ = bits;
+ return fp.u_.value_;
+ }
+
+ // Returns the floating-point number that represent positive infinity.
+ static RawType Infinity() {
+ return ReinterpretBits(kExponentBitMask);
+ }
+
+ // Returns the maximum representable finite floating-point number.
+ static RawType Max();
+
+ // Non-static methods
+
+ // Returns the bits that represents this number.
+ const Bits &bits() const { return u_.bits_; }
+
+ // Returns the exponent bits of this number.
+ Bits exponent_bits() const { return kExponentBitMask & u_.bits_; }
+
+ // Returns the fraction bits of this number.
+ Bits fraction_bits() const { return kFractionBitMask & u_.bits_; }
+
+ // Returns the sign bit of this number.
+ Bits sign_bit() const { return kSignBitMask & u_.bits_; }
+
// Returns true if and only if this is NAN (not a number).
- bool is_nan() const {
- // It's a NAN if the exponent bits are all ones and the fraction
- // bits are not entirely zeros.
- return (exponent_bits() == kExponentBitMask) && (fraction_bits() != 0);
- }
-
+ bool is_nan() const {
+ // It's a NAN if the exponent bits are all ones and the fraction
+ // bits are not entirely zeros.
+ return (exponent_bits() == kExponentBitMask) && (fraction_bits() != 0);
+ }
+
// Returns true if and only if this number is at most kMaxUlps ULP's away
// from rhs. In particular, this function:
- //
- // - returns false if either number is (or both are) NAN.
- // - treats really large numbers as almost equal to infinity.
- // - thinks +0.0 and -0.0 are 0 DLP's apart.
- bool AlmostEquals(const FloatingPoint& rhs) const {
- // The IEEE standard says that any comparison operation involving
- // a NAN must return false.
- if (is_nan() || rhs.is_nan()) return false;
-
- return DistanceBetweenSignAndMagnitudeNumbers(u_.bits_, rhs.u_.bits_)
- <= kMaxUlps;
- }
-
- private:
- // The data type used to store the actual floating-point number.
- union FloatingPointUnion {
- RawType value_; // The raw floating-point number.
- Bits bits_; // The bits that represent the number.
- };
-
- // Converts an integer from the sign-and-magnitude representation to
- // the biased representation. More precisely, let N be 2 to the
- // power of (kBitCount - 1), an integer x is represented by the
- // unsigned number x + N.
- //
- // For instance,
- //
- // -N + 1 (the most negative number representable using
- // sign-and-magnitude) is represented by 1;
- // 0 is represented by N; and
- // N - 1 (the biggest number representable using
- // sign-and-magnitude) is represented by 2N - 1.
- //
- // Read http://en.wikipedia.org/wiki/Signed_number_representations
- // for more details on signed number representations.
- static Bits SignAndMagnitudeToBiased(const Bits &sam) {
- if (kSignBitMask & sam) {
- // sam represents a negative number.
- return ~sam + 1;
- } else {
- // sam represents a positive number.
- return kSignBitMask | sam;
- }
- }
-
- // Given two numbers in the sign-and-magnitude representation,
- // returns the distance between them as an unsigned number.
- static Bits DistanceBetweenSignAndMagnitudeNumbers(const Bits &sam1,
- const Bits &sam2) {
- const Bits biased1 = SignAndMagnitudeToBiased(sam1);
- const Bits biased2 = SignAndMagnitudeToBiased(sam2);
- return (biased1 >= biased2) ? (biased1 - biased2) : (biased2 - biased1);
- }
-
- FloatingPointUnion u_;
-};
-
-// We cannot use std::numeric_limits<T>::max() as it clashes with the max()
-// macro defined by <windows.h>.
-template <>
-inline float FloatingPoint<float>::Max() { return FLT_MAX; }
-template <>
-inline double FloatingPoint<double>::Max() { return DBL_MAX; }
-
-// Typedefs the instances of the FloatingPoint template class that we
-// care to use.
-typedef FloatingPoint<float> Float;
-typedef FloatingPoint<double> Double;
-
-// In order to catch the mistake of putting tests that use different
+ //
+ // - returns false if either number is (or both are) NAN.
+ // - treats really large numbers as almost equal to infinity.
+ // - thinks +0.0 and -0.0 are 0 DLP's apart.
+ bool AlmostEquals(const FloatingPoint& rhs) const {
+ // The IEEE standard says that any comparison operation involving
+ // a NAN must return false.
+ if (is_nan() || rhs.is_nan()) return false;
+
+ return DistanceBetweenSignAndMagnitudeNumbers(u_.bits_, rhs.u_.bits_)
+ <= kMaxUlps;
+ }
+
+ private:
+ // The data type used to store the actual floating-point number.
+ union FloatingPointUnion {
+ RawType value_; // The raw floating-point number.
+ Bits bits_; // The bits that represent the number.
+ };
+
+ // Converts an integer from the sign-and-magnitude representation to
+ // the biased representation. More precisely, let N be 2 to the
+ // power of (kBitCount - 1), an integer x is represented by the
+ // unsigned number x + N.
+ //
+ // For instance,
+ //
+ // -N + 1 (the most negative number representable using
+ // sign-and-magnitude) is represented by 1;
+ // 0 is represented by N; and
+ // N - 1 (the biggest number representable using
+ // sign-and-magnitude) is represented by 2N - 1.
+ //
+ // Read http://en.wikipedia.org/wiki/Signed_number_representations
+ // for more details on signed number representations.
+ static Bits SignAndMagnitudeToBiased(const Bits &sam) {
+ if (kSignBitMask & sam) {
+ // sam represents a negative number.
+ return ~sam + 1;
+ } else {
+ // sam represents a positive number.
+ return kSignBitMask | sam;
+ }
+ }
+
+ // Given two numbers in the sign-and-magnitude representation,
+ // returns the distance between them as an unsigned number.
+ static Bits DistanceBetweenSignAndMagnitudeNumbers(const Bits &sam1,
+ const Bits &sam2) {
+ const Bits biased1 = SignAndMagnitudeToBiased(sam1);
+ const Bits biased2 = SignAndMagnitudeToBiased(sam2);
+ return (biased1 >= biased2) ? (biased1 - biased2) : (biased2 - biased1);
+ }
+
+ FloatingPointUnion u_;
+};
+
+// We cannot use std::numeric_limits<T>::max() as it clashes with the max()
+// macro defined by <windows.h>.
+template <>
+inline float FloatingPoint<float>::Max() { return FLT_MAX; }
+template <>
+inline double FloatingPoint<double>::Max() { return DBL_MAX; }
+
+// Typedefs the instances of the FloatingPoint template class that we
+// care to use.
+typedef FloatingPoint<float> Float;
+typedef FloatingPoint<double> Double;
+
+// In order to catch the mistake of putting tests that use different
// test fixture classes in the same test suite, we need to assign
-// unique IDs to fixture classes and compare them. The TypeId type is
-// used to hold such IDs. The user should treat TypeId as an opaque
-// type: the only operation allowed on TypeId values is to compare
-// them for equality using the == operator.
-typedef const void* TypeId;
-
-template <typename T>
-class TypeIdHelper {
- public:
- // dummy_ must not have a const type. Otherwise an overly eager
- // compiler (e.g. MSVC 7.1 & 8.0) may try to merge
- // TypeIdHelper<T>::dummy_ for different Ts as an "optimization".
- static bool dummy_;
-};
-
-template <typename T>
-bool TypeIdHelper<T>::dummy_ = false;
-
-// GetTypeId<T>() returns the ID of type T. Different values will be
-// returned for different types. Calling the function twice with the
-// same type argument is guaranteed to return the same ID.
-template <typename T>
-TypeId GetTypeId() {
- // The compiler is required to allocate a different
- // TypeIdHelper<T>::dummy_ variable for each T used to instantiate
- // the template. Therefore, the address of dummy_ is guaranteed to
- // be unique.
- return &(TypeIdHelper<T>::dummy_);
-}
-
-// Returns the type ID of ::testing::Test. Always call this instead
-// of GetTypeId< ::testing::Test>() to get the type ID of
-// ::testing::Test, as the latter may give the wrong result due to a
-// suspected linker bug when compiling Google Test as a Mac OS X
-// framework.
-GTEST_API_ TypeId GetTestTypeId();
-
-// Defines the abstract factory interface that creates instances
-// of a Test object.
-class TestFactoryBase {
- public:
- virtual ~TestFactoryBase() {}
-
- // Creates a test instance to run. The instance is both created and destroyed
- // within TestInfoImpl::Run()
- virtual Test* CreateTest() = 0;
-
- protected:
- TestFactoryBase() {}
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(TestFactoryBase);
-};
-
-// This class provides implementation of TeastFactoryBase interface.
-// It is used in TEST and TEST_F macros.
-template <class TestClass>
-class TestFactoryImpl : public TestFactoryBase {
- public:
+// unique IDs to fixture classes and compare them. The TypeId type is
+// used to hold such IDs. The user should treat TypeId as an opaque
+// type: the only operation allowed on TypeId values is to compare
+// them for equality using the == operator.
+typedef const void* TypeId;
+
+template <typename T>
+class TypeIdHelper {
+ public:
+ // dummy_ must not have a const type. Otherwise an overly eager
+ // compiler (e.g. MSVC 7.1 & 8.0) may try to merge
+ // TypeIdHelper<T>::dummy_ for different Ts as an "optimization".
+ static bool dummy_;
+};
+
+template <typename T>
+bool TypeIdHelper<T>::dummy_ = false;
+
+// GetTypeId<T>() returns the ID of type T. Different values will be
+// returned for different types. Calling the function twice with the
+// same type argument is guaranteed to return the same ID.
+template <typename T>
+TypeId GetTypeId() {
+ // The compiler is required to allocate a different
+ // TypeIdHelper<T>::dummy_ variable for each T used to instantiate
+ // the template. Therefore, the address of dummy_ is guaranteed to
+ // be unique.
+ return &(TypeIdHelper<T>::dummy_);
+}
+
+// Returns the type ID of ::testing::Test. Always call this instead
+// of GetTypeId< ::testing::Test>() to get the type ID of
+// ::testing::Test, as the latter may give the wrong result due to a
+// suspected linker bug when compiling Google Test as a Mac OS X
+// framework.
+GTEST_API_ TypeId GetTestTypeId();
+
+// Defines the abstract factory interface that creates instances
+// of a Test object.
+class TestFactoryBase {
+ public:
+ virtual ~TestFactoryBase() {}
+
+ // Creates a test instance to run. The instance is both created and destroyed
+ // within TestInfoImpl::Run()
+ virtual Test* CreateTest() = 0;
+
+ protected:
+ TestFactoryBase() {}
+
+ private:
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(TestFactoryBase);
+};
+
+// This class provides implementation of TeastFactoryBase interface.
+// It is used in TEST and TEST_F macros.
+template <class TestClass>
+class TestFactoryImpl : public TestFactoryBase {
+ public:
Test* CreateTest() override { return new TestClass; }
-};
-
-#if GTEST_OS_WINDOWS
-
-// Predicate-formatters for implementing the HRESULT checking macros
-// {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}
-// We pass a long instead of HRESULT to avoid causing an
-// include dependency for the HRESULT type.
-GTEST_API_ AssertionResult IsHRESULTSuccess(const char* expr,
- long hr); // NOLINT
-GTEST_API_ AssertionResult IsHRESULTFailure(const char* expr,
- long hr); // NOLINT
-
-#endif // GTEST_OS_WINDOWS
-
+};
+
+#if GTEST_OS_WINDOWS
+
+// Predicate-formatters for implementing the HRESULT checking macros
+// {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}
+// We pass a long instead of HRESULT to avoid causing an
+// include dependency for the HRESULT type.
+GTEST_API_ AssertionResult IsHRESULTSuccess(const char* expr,
+ long hr); // NOLINT
+GTEST_API_ AssertionResult IsHRESULTFailure(const char* expr,
+ long hr); // NOLINT
+
+#endif // GTEST_OS_WINDOWS
+
// Types of SetUpTestSuite() and TearDownTestSuite() functions.
using SetUpTestSuiteFunc = void (*)();
using TearDownTestSuiteFunc = void (*)();
-
-struct CodeLocation {
+
+struct CodeLocation {
CodeLocation(const std::string& a_file, int a_line)
: file(a_file), line(a_line) {}
-
+
std::string file;
- int line;
-};
-
+ int line;
+};
+
// Helper to identify which setup function for TestCase / TestSuite to call.
// Only one function is allowed, either TestCase or TestSute but not both.
@@ -561,85 +561,85 @@ struct SuiteApiResolver : T {
}
};
-// Creates a new TestInfo object and registers it with Google Test;
-// returns the created object.
-//
-// Arguments:
-//
+// Creates a new TestInfo object and registers it with Google Test;
+// returns the created object.
+//
+// Arguments:
+//
// test_suite_name: name of the test suite
-// name: name of the test
+// name: name of the test
// type_param: the name of the test's type parameter, or NULL if
-// this is not a typed or a type-parameterized test.
+// this is not a typed or a type-parameterized test.
// value_param: text representation of the test's value parameter,
-// or NULL if this is not a type-parameterized test.
-// code_location: code location where the test is defined
-// fixture_class_id: ID of the test fixture class
+// or NULL if this is not a type-parameterized test.
+// code_location: code location where the test is defined
+// fixture_class_id: ID of the test fixture class
// set_up_tc: pointer to the function that sets up the test suite
// tear_down_tc: pointer to the function that tears down the test suite
-// factory: pointer to the factory that creates a test object.
-// The newly created TestInfo instance will assume
-// ownership of the factory object.
-GTEST_API_ TestInfo* MakeAndRegisterTestInfo(
+// factory: pointer to the factory that creates a test object.
+// The newly created TestInfo instance will assume
+// ownership of the factory object.
+GTEST_API_ TestInfo* MakeAndRegisterTestInfo(
const char* test_suite_name, const char* name, const char* type_param,
const char* value_param, CodeLocation code_location,
TypeId fixture_class_id, SetUpTestSuiteFunc set_up_tc,
TearDownTestSuiteFunc tear_down_tc, TestFactoryBase* factory);
-
-// If *pstr starts with the given prefix, modifies *pstr to be right
-// past the prefix and returns true; otherwise leaves *pstr unchanged
-// and returns false. None of pstr, *pstr, and prefix can be NULL.
-GTEST_API_ bool SkipPrefix(const char* prefix, const char** pstr);
-
+
+// If *pstr starts with the given prefix, modifies *pstr to be right
+// past the prefix and returns true; otherwise leaves *pstr unchanged
+// and returns false. None of pstr, *pstr, and prefix can be NULL.
+GTEST_API_ bool SkipPrefix(const char* prefix, const char** pstr);
+
GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
/* class A needs to have dll-interface to be used by clients of class B */)
// State of the definition of a type-parameterized test suite.
class GTEST_API_ TypedTestSuitePState {
- public:
+ public:
TypedTestSuitePState() : registered_(false) {}
-
- // Adds the given test name to defined_test_names_ and return true
+
+ // Adds the given test name to defined_test_names_ and return true
// if the test suite hasn't been registered; otherwise aborts the
- // program.
- bool AddTestName(const char* file, int line, const char* case_name,
- const char* test_name) {
- if (registered_) {
+ // program.
+ bool AddTestName(const char* file, int line, const char* case_name,
+ const char* test_name) {
+ if (registered_) {
fprintf(stderr,
"%s Test %s must be defined before "
"REGISTER_TYPED_TEST_SUITE_P(%s, ...).\n",
- FormatFileLocation(file, line).c_str(), test_name, case_name);
- fflush(stderr);
- posix::Abort();
- }
- registered_tests_.insert(
- ::std::make_pair(test_name, CodeLocation(file, line)));
- return true;
- }
-
- bool TestExists(const std::string& test_name) const {
- return registered_tests_.count(test_name) > 0;
- }
-
- const CodeLocation& GetCodeLocation(const std::string& test_name) const {
- RegisteredTestsMap::const_iterator it = registered_tests_.find(test_name);
- GTEST_CHECK_(it != registered_tests_.end());
- return it->second;
- }
-
- // Verifies that registered_tests match the test names in
- // defined_test_names_; returns registered_tests if successful, or
- // aborts the program otherwise.
+ FormatFileLocation(file, line).c_str(), test_name, case_name);
+ fflush(stderr);
+ posix::Abort();
+ }
+ registered_tests_.insert(
+ ::std::make_pair(test_name, CodeLocation(file, line)));
+ return true;
+ }
+
+ bool TestExists(const std::string& test_name) const {
+ return registered_tests_.count(test_name) > 0;
+ }
+
+ const CodeLocation& GetCodeLocation(const std::string& test_name) const {
+ RegisteredTestsMap::const_iterator it = registered_tests_.find(test_name);
+ GTEST_CHECK_(it != registered_tests_.end());
+ return it->second;
+ }
+
+ // Verifies that registered_tests match the test names in
+ // defined_test_names_; returns registered_tests if successful, or
+ // aborts the program otherwise.
const char* VerifyRegisteredTestNames(const char* test_suite_name,
const char* file, int line,
const char* registered_tests);
-
- private:
- typedef ::std::map<std::string, CodeLocation> RegisteredTestsMap;
-
- bool registered_;
- RegisteredTestsMap registered_tests_;
-};
-
+
+ private:
+ typedef ::std::map<std::string, CodeLocation> RegisteredTestsMap;
+
+ bool registered_;
+ RegisteredTestsMap registered_tests_;
+};
+
// Legacy API is deprecated but still available
#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
using TypedTestCasePState = TypedTestSuitePState;
@@ -647,29 +647,29 @@ using TypedTestCasePState = TypedTestSuitePState;
GTEST_DISABLE_MSC_WARNINGS_POP_() // 4251
-// Skips to the first non-space char after the first comma in 'str';
-// returns NULL if no comma is found in 'str'.
-inline const char* SkipComma(const char* str) {
- const char* comma = strchr(str, ',');
+// Skips to the first non-space char after the first comma in 'str';
+// returns NULL if no comma is found in 'str'.
+inline const char* SkipComma(const char* str) {
+ const char* comma = strchr(str, ',');
if (comma == nullptr) {
return nullptr;
- }
- while (IsSpace(*(++comma))) {}
- return comma;
-}
-
-// Returns the prefix of 'str' before the first comma in it; returns
-// the entire string if it contains no comma.
-inline std::string GetPrefixUntilComma(const char* str) {
- const char* comma = strchr(str, ',');
+ }
+ while (IsSpace(*(++comma))) {}
+ return comma;
+}
+
+// Returns the prefix of 'str' before the first comma in it; returns
+// the entire string if it contains no comma.
+inline std::string GetPrefixUntilComma(const char* str) {
+ const char* comma = strchr(str, ',');
return comma == nullptr ? str : std::string(str, comma);
-}
-
-// Splits a given string on a given delimiter, populating a given
-// vector with the fields.
-void SplitString(const ::std::string& str, char delimiter,
- ::std::vector< ::std::string>* dest);
-
+}
+
+// Splits a given string on a given delimiter, populating a given
+// vector with the fields.
+void SplitString(const ::std::string& str, char delimiter,
+ ::std::vector< ::std::string>* dest);
+
// The default argument to the template below for the case when the user does
// not provide a name generator.
struct DefaultNameGenerator {
@@ -701,45 +701,45 @@ std::vector<std::string> GenerateNames() {
return result;
}
-// TypeParameterizedTest<Fixture, TestSel, Types>::Register()
-// registers a list of type-parameterized tests with Google Test. The
-// return value is insignificant - we just need to return something
-// such that we can call this function in a namespace scope.
-//
-// Implementation note: The GTEST_TEMPLATE_ macro declares a template
-// template parameter. It's defined in gtest-type-util.h.
-template <GTEST_TEMPLATE_ Fixture, class TestSel, typename Types>
-class TypeParameterizedTest {
- public:
- // 'index' is the index of the test in the type list 'Types'
+// TypeParameterizedTest<Fixture, TestSel, Types>::Register()
+// registers a list of type-parameterized tests with Google Test. The
+// return value is insignificant - we just need to return something
+// such that we can call this function in a namespace scope.
+//
+// Implementation note: The GTEST_TEMPLATE_ macro declares a template
+// template parameter. It's defined in gtest-type-util.h.
+template <GTEST_TEMPLATE_ Fixture, class TestSel, typename Types>
+class TypeParameterizedTest {
+ public:
+ // 'index' is the index of the test in the type list 'Types'
// specified in INSTANTIATE_TYPED_TEST_SUITE_P(Prefix, TestSuite,
- // Types). Valid values for 'index' are [0, N - 1] where N is the
- // length of Types.
+ // Types). Valid values for 'index' are [0, N - 1] where N is the
+ // length of Types.
static bool Register(const char* prefix, const CodeLocation& code_location,
const char* case_name, const char* test_names, int index,
const std::vector<std::string>& type_names =
GenerateNames<DefaultNameGenerator, Types>()) {
- typedef typename Types::Head Type;
- typedef Fixture<Type> FixtureClass;
- typedef typename GTEST_BIND_(TestSel, Type) TestClass;
-
- // First, registers the first type-parameterized test in the type
- // list.
- MakeAndRegisterTestInfo(
+ typedef typename Types::Head Type;
+ typedef Fixture<Type> FixtureClass;
+ typedef typename GTEST_BIND_(TestSel, Type) TestClass;
+
+ // First, registers the first type-parameterized test in the type
+ // list.
+ MakeAndRegisterTestInfo(
(std::string(prefix) + (prefix[0] == '\0' ? "" : "/") + case_name +
"/" + type_names[static_cast<size_t>(index)])
.c_str(),
- StripTrailingSpaces(GetPrefixUntilComma(test_names)).c_str(),
- GetTypeName<Type>().c_str(),
+ StripTrailingSpaces(GetPrefixUntilComma(test_names)).c_str(),
+ GetTypeName<Type>().c_str(),
nullptr, // No value parameter.
code_location, GetTypeId<FixtureClass>(),
SuiteApiResolver<TestClass>::GetSetUpCaseOrSuite(
code_location.file.c_str(), code_location.line),
SuiteApiResolver<TestClass>::GetTearDownCaseOrSuite(
code_location.file.c_str(), code_location.line),
- new TestFactoryImpl<TestClass>);
-
- // Next, recurses (at compile time) with the tail of the type list.
+ new TestFactoryImpl<TestClass>);
+
+ // Next, recurses (at compile time) with the tail of the type list.
return TypeParameterizedTest<Fixture, TestSel,
typename Types::Tail>::Register(prefix,
code_location,
@@ -747,111 +747,111 @@ class TypeParameterizedTest {
test_names,
index + 1,
type_names);
- }
-};
-
-// The base case for the compile time recursion.
-template <GTEST_TEMPLATE_ Fixture, class TestSel>
+ }
+};
+
+// The base case for the compile time recursion.
+template <GTEST_TEMPLATE_ Fixture, class TestSel>
class TypeParameterizedTest<Fixture, TestSel, internal::None> {
- public:
+ public:
static bool Register(const char* /*prefix*/, const CodeLocation&,
- const char* /*case_name*/, const char* /*test_names*/,
+ const char* /*case_name*/, const char* /*test_names*/,
int /*index*/,
const std::vector<std::string>& =
std::vector<std::string>() /*type_names*/) {
- return true;
- }
-};
-
+ return true;
+ }
+};
+
GTEST_API_ void RegisterTypeParameterizedTestSuite(const char* test_suite_name,
CodeLocation code_location);
GTEST_API_ void RegisterTypeParameterizedTestSuiteInstantiation(
const char* case_name);
// TypeParameterizedTestSuite<Fixture, Tests, Types>::Register()
-// registers *all combinations* of 'Tests' and 'Types' with Google
-// Test. The return value is insignificant - we just need to return
-// something such that we can call this function in a namespace scope.
-template <GTEST_TEMPLATE_ Fixture, typename Tests, typename Types>
+// registers *all combinations* of 'Tests' and 'Types' with Google
+// Test. The return value is insignificant - we just need to return
+// something such that we can call this function in a namespace scope.
+template <GTEST_TEMPLATE_ Fixture, typename Tests, typename Types>
class TypeParameterizedTestSuite {
- public:
- static bool Register(const char* prefix, CodeLocation code_location,
+ public:
+ static bool Register(const char* prefix, CodeLocation code_location,
const TypedTestSuitePState* state, const char* case_name,
const char* test_names,
const std::vector<std::string>& type_names =
GenerateNames<DefaultNameGenerator, Types>()) {
RegisterTypeParameterizedTestSuiteInstantiation(case_name);
- std::string test_name = StripTrailingSpaces(
- GetPrefixUntilComma(test_names));
- if (!state->TestExists(test_name)) {
- fprintf(stderr, "Failed to get code location for test %s.%s at %s.",
- case_name, test_name.c_str(),
- FormatFileLocation(code_location.file.c_str(),
- code_location.line).c_str());
- fflush(stderr);
- posix::Abort();
- }
- const CodeLocation& test_location = state->GetCodeLocation(test_name);
-
- typedef typename Tests::Head Head;
-
- // First, register the first test in 'Test' for each type in 'Types'.
- TypeParameterizedTest<Fixture, Head, Types>::Register(
+ std::string test_name = StripTrailingSpaces(
+ GetPrefixUntilComma(test_names));
+ if (!state->TestExists(test_name)) {
+ fprintf(stderr, "Failed to get code location for test %s.%s at %s.",
+ case_name, test_name.c_str(),
+ FormatFileLocation(code_location.file.c_str(),
+ code_location.line).c_str());
+ fflush(stderr);
+ posix::Abort();
+ }
+ const CodeLocation& test_location = state->GetCodeLocation(test_name);
+
+ typedef typename Tests::Head Head;
+
+ // First, register the first test in 'Test' for each type in 'Types'.
+ TypeParameterizedTest<Fixture, Head, Types>::Register(
prefix, test_location, case_name, test_names, 0, type_names);
-
- // Next, recurses (at compile time) with the tail of the test list.
+
+ // Next, recurses (at compile time) with the tail of the test list.
return TypeParameterizedTestSuite<Fixture, typename Tests::Tail,
Types>::Register(prefix, code_location,
state, case_name,
SkipComma(test_names),
type_names);
- }
-};
-
-// The base case for the compile time recursion.
-template <GTEST_TEMPLATE_ Fixture, typename Types>
+ }
+};
+
+// The base case for the compile time recursion.
+template <GTEST_TEMPLATE_ Fixture, typename Types>
class TypeParameterizedTestSuite<Fixture, internal::None, Types> {
- public:
+ public:
static bool Register(const char* /*prefix*/, const CodeLocation&,
const TypedTestSuitePState* /*state*/,
const char* /*case_name*/, const char* /*test_names*/,
const std::vector<std::string>& =
std::vector<std::string>() /*type_names*/) {
- return true;
- }
-};
-
-// Returns the current OS stack trace as an std::string.
-//
-// The maximum number of stack frames to be included is specified by
-// the gtest_stack_trace_depth flag. The skip_count parameter
-// specifies the number of top frames to be skipped, which doesn't
-// count against the number of frames to be included.
-//
-// For example, if Foo() calls Bar(), which in turn calls
-// GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in
-// the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't.
-GTEST_API_ std::string GetCurrentOsStackTraceExceptTop(
- UnitTest* unit_test, int skip_count);
-
-// Helpers for suppressing warnings on unreachable code or constant
-// condition.
-
-// Always returns true.
-GTEST_API_ bool AlwaysTrue();
-
-// Always returns false.
-inline bool AlwaysFalse() { return !AlwaysTrue(); }
-
-// Helper for suppressing false warning from Clang on a const char*
-// variable declared in a conditional expression always being NULL in
-// the else branch.
-struct GTEST_API_ ConstCharPtr {
- ConstCharPtr(const char* str) : value(str) {}
- operator bool() const { return true; }
- const char* value;
-};
-
+ return true;
+ }
+};
+
+// Returns the current OS stack trace as an std::string.
+//
+// The maximum number of stack frames to be included is specified by
+// the gtest_stack_trace_depth flag. The skip_count parameter
+// specifies the number of top frames to be skipped, which doesn't
+// count against the number of frames to be included.
+//
+// For example, if Foo() calls Bar(), which in turn calls
+// GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in
+// the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't.
+GTEST_API_ std::string GetCurrentOsStackTraceExceptTop(
+ UnitTest* unit_test, int skip_count);
+
+// Helpers for suppressing warnings on unreachable code or constant
+// condition.
+
+// Always returns true.
+GTEST_API_ bool AlwaysTrue();
+
+// Always returns false.
+inline bool AlwaysFalse() { return !AlwaysTrue(); }
+
+// Helper for suppressing false warning from Clang on a const char*
+// variable declared in a conditional expression always being NULL in
+// the else branch.
+struct GTEST_API_ ConstCharPtr {
+ ConstCharPtr(const char* str) : value(str) {}
+ operator bool() const { return true; }
+ const char* value;
+};
+
// Helper for declaring std::string within 'if' statement
// in pre C++17 build environment.
struct TrueWithString {
@@ -862,42 +862,42 @@ struct TrueWithString {
std::string value;
};
-// A simple Linear Congruential Generator for generating random
-// numbers with a uniform distribution. Unlike rand() and srand(), it
-// doesn't use global state (and therefore can't interfere with user
-// code). Unlike rand_r(), it's portable. An LCG isn't very random,
-// but it's good enough for our purposes.
-class GTEST_API_ Random {
- public:
+// A simple Linear Congruential Generator for generating random
+// numbers with a uniform distribution. Unlike rand() and srand(), it
+// doesn't use global state (and therefore can't interfere with user
+// code). Unlike rand_r(), it's portable. An LCG isn't very random,
+// but it's good enough for our purposes.
+class GTEST_API_ Random {
+ public:
static const uint32_t kMaxRange = 1u << 31;
-
+
explicit Random(uint32_t seed) : state_(seed) {}
-
+
void Reseed(uint32_t seed) { state_ = seed; }
-
- // Generates a random number from [0, range). Crashes if 'range' is
- // 0 or greater than kMaxRange.
+
+ // Generates a random number from [0, range). Crashes if 'range' is
+ // 0 or greater than kMaxRange.
uint32_t Generate(uint32_t range);
-
- private:
+
+ private:
uint32_t state_;
- GTEST_DISALLOW_COPY_AND_ASSIGN_(Random);
-};
-
-// Turns const U&, U&, const U, and U all into U.
-#define GTEST_REMOVE_REFERENCE_AND_CONST_(T) \
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(Random);
+};
+
+// Turns const U&, U&, const U, and U all into U.
+#define GTEST_REMOVE_REFERENCE_AND_CONST_(T) \
typename std::remove_const<typename std::remove_reference<T>::type>::type
-
+
// HasDebugStringAndShortDebugString<T>::value is a compile-time bool constant
// that's true if and only if T has methods DebugString() and ShortDebugString()
-template <typename T>
+template <typename T>
class HasDebugStringAndShortDebugString {
private:
template<typename C>
static std::true_type CheckDebugString(decltype(&C::DebugString));
template<typename>
static std::false_type CheckDebugString(...);
-
+
template<typename C>
static std::true_type CheckShortDebugString(decltype(&C::ShortDebugString));
template <typename>
@@ -914,31 +914,31 @@ class HasDebugStringAndShortDebugString {
template <typename T>
constexpr bool HasDebugStringAndShortDebugString<T>::value;
-// When the compiler sees expression IsContainerTest<C>(0), if C is an
-// STL-style container class, the first overload of IsContainerTest
-// will be viable (since both C::iterator* and C::const_iterator* are
-// valid types and NULL can be implicitly converted to them). It will
-// be picked over the second overload as 'int' is a perfect match for
-// the type of argument 0. If C::iterator or C::const_iterator is not
-// a valid type, the first overload is not viable, and the second
-// overload will be picked. Therefore, we can determine whether C is
-// a container class by checking the type of IsContainerTest<C>(0).
-// The value of the expression is insignificant.
-//
+// When the compiler sees expression IsContainerTest<C>(0), if C is an
+// STL-style container class, the first overload of IsContainerTest
+// will be viable (since both C::iterator* and C::const_iterator* are
+// valid types and NULL can be implicitly converted to them). It will
+// be picked over the second overload as 'int' is a perfect match for
+// the type of argument 0. If C::iterator or C::const_iterator is not
+// a valid type, the first overload is not viable, and the second
+// overload will be picked. Therefore, we can determine whether C is
+// a container class by checking the type of IsContainerTest<C>(0).
+// The value of the expression is insignificant.
+//
// In C++11 mode we check the existence of a const_iterator and that an
// iterator is properly implemented for the container.
//
// For pre-C++11 that we look for both C::iterator and C::const_iterator.
// The reason is that C++ injects the name of a class as a member of the
-// class itself (e.g. you can refer to class iterator as either
-// 'iterator' or 'iterator::iterator'). If we look for C::iterator
-// only, for example, we would mistakenly think that a class named
-// iterator is an STL container.
-//
-// Also note that the simpler approach of overloading
-// IsContainerTest(typename C::const_iterator*) and
-// IsContainerTest(...) doesn't work with Visual Age C++ and Sun C++.
-typedef int IsContainer;
+// class itself (e.g. you can refer to class iterator as either
+// 'iterator' or 'iterator::iterator'). If we look for C::iterator
+// only, for example, we would mistakenly think that a class named
+// iterator is an STL container.
+//
+// Also note that the simpler approach of overloading
+// IsContainerTest(typename C::const_iterator*) and
+// IsContainerTest(...) doesn't work with Visual Age C++ and Sun C++.
+typedef int IsContainer;
template <class C,
class Iterator = decltype(::std::declval<const C&>().begin()),
class = decltype(::std::declval<const C&>().end()),
@@ -946,13 +946,13 @@ template <class C,
class = decltype(*::std::declval<Iterator>()),
class = typename C::const_iterator>
IsContainer IsContainerTest(int /* dummy */) {
- return 0;
-}
-
-typedef char IsNotContainer;
-template <class C>
-IsNotContainer IsContainerTest(long /* dummy */) { return '\0'; }
-
+ return 0;
+}
+
+typedef char IsNotContainer;
+template <class C>
+IsNotContainer IsContainerTest(long /* dummy */) { return '\0'; }
+
// Trait to detect whether a type T is a hash table.
// The heuristic used is that the type contains an inner type `hasher` and does
// not contain an inner type `reverse_iterator`.
@@ -966,7 +966,7 @@ struct IsHashTable {
static int test(typename U::hasher*, ...);
template <typename U>
static char test(...);
-
+
public:
static const bool value = sizeof(test<T>(nullptr, nullptr)) == sizeof(int);
};
@@ -1003,153 +1003,153 @@ struct IsRecursiveContainerImpl<C, true> {
template <typename C>
struct IsRecursiveContainer : public IsRecursiveContainerImpl<C>::type {};
-// Utilities for native arrays.
-
-// ArrayEq() compares two k-dimensional native arrays using the
-// elements' operator==, where k can be any integer >= 0. When k is
-// 0, ArrayEq() degenerates into comparing a single pair of values.
-
-template <typename T, typename U>
-bool ArrayEq(const T* lhs, size_t size, const U* rhs);
-
-// This generic version is used when k is 0.
-template <typename T, typename U>
-inline bool ArrayEq(const T& lhs, const U& rhs) { return lhs == rhs; }
-
-// This overload is used when k >= 1.
-template <typename T, typename U, size_t N>
-inline bool ArrayEq(const T(&lhs)[N], const U(&rhs)[N]) {
- return internal::ArrayEq(lhs, N, rhs);
-}
-
-// This helper reduces code bloat. If we instead put its logic inside
-// the previous ArrayEq() function, arrays with different sizes would
-// lead to different copies of the template code.
-template <typename T, typename U>
-bool ArrayEq(const T* lhs, size_t size, const U* rhs) {
- for (size_t i = 0; i != size; i++) {
- if (!internal::ArrayEq(lhs[i], rhs[i]))
- return false;
- }
- return true;
-}
-
-// Finds the first element in the iterator range [begin, end) that
-// equals elem. Element may be a native array type itself.
-template <typename Iter, typename Element>
-Iter ArrayAwareFind(Iter begin, Iter end, const Element& elem) {
- for (Iter it = begin; it != end; ++it) {
- if (internal::ArrayEq(*it, elem))
- return it;
- }
- return end;
-}
-
-// CopyArray() copies a k-dimensional native array using the elements'
-// operator=, where k can be any integer >= 0. When k is 0,
-// CopyArray() degenerates into copying a single value.
-
-template <typename T, typename U>
-void CopyArray(const T* from, size_t size, U* to);
-
-// This generic version is used when k is 0.
-template <typename T, typename U>
-inline void CopyArray(const T& from, U* to) { *to = from; }
-
-// This overload is used when k >= 1.
-template <typename T, typename U, size_t N>
-inline void CopyArray(const T(&from)[N], U(*to)[N]) {
- internal::CopyArray(from, N, *to);
-}
-
-// This helper reduces code bloat. If we instead put its logic inside
-// the previous CopyArray() function, arrays with different sizes
-// would lead to different copies of the template code.
-template <typename T, typename U>
-void CopyArray(const T* from, size_t size, U* to) {
- for (size_t i = 0; i != size; i++) {
- internal::CopyArray(from[i], to + i);
- }
-}
-
-// The relation between an NativeArray object (see below) and the
-// native array it represents.
-// We use 2 different structs to allow non-copyable types to be used, as long
-// as RelationToSourceReference() is passed.
-struct RelationToSourceReference {};
-struct RelationToSourceCopy {};
-
-// Adapts a native array to a read-only STL-style container. Instead
-// of the complete STL container concept, this adaptor only implements
-// members useful for Google Mock's container matchers. New members
-// should be added as needed. To simplify the implementation, we only
-// support Element being a raw type (i.e. having no top-level const or
-// reference modifier). It's the client's responsibility to satisfy
-// this requirement. Element can be an array type itself (hence
-// multi-dimensional arrays are supported).
-template <typename Element>
-class NativeArray {
- public:
- // STL-style container typedefs.
- typedef Element value_type;
- typedef Element* iterator;
- typedef const Element* const_iterator;
-
- // Constructs from a native array. References the source.
- NativeArray(const Element* array, size_t count, RelationToSourceReference) {
- InitRef(array, count);
- }
-
- // Constructs from a native array. Copies the source.
- NativeArray(const Element* array, size_t count, RelationToSourceCopy) {
- InitCopy(array, count);
- }
-
- // Copy constructor.
- NativeArray(const NativeArray& rhs) {
- (this->*rhs.clone_)(rhs.array_, rhs.size_);
- }
-
- ~NativeArray() {
- if (clone_ != &NativeArray::InitRef)
- delete[] array_;
- }
-
- // STL-style container methods.
- size_t size() const { return size_; }
- const_iterator begin() const { return array_; }
- const_iterator end() const { return array_ + size_; }
- bool operator==(const NativeArray& rhs) const {
- return size() == rhs.size() &&
- ArrayEq(begin(), size(), rhs.begin());
- }
-
- private:
+// Utilities for native arrays.
+
+// ArrayEq() compares two k-dimensional native arrays using the
+// elements' operator==, where k can be any integer >= 0. When k is
+// 0, ArrayEq() degenerates into comparing a single pair of values.
+
+template <typename T, typename U>
+bool ArrayEq(const T* lhs, size_t size, const U* rhs);
+
+// This generic version is used when k is 0.
+template <typename T, typename U>
+inline bool ArrayEq(const T& lhs, const U& rhs) { return lhs == rhs; }
+
+// This overload is used when k >= 1.
+template <typename T, typename U, size_t N>
+inline bool ArrayEq(const T(&lhs)[N], const U(&rhs)[N]) {
+ return internal::ArrayEq(lhs, N, rhs);
+}
+
+// This helper reduces code bloat. If we instead put its logic inside
+// the previous ArrayEq() function, arrays with different sizes would
+// lead to different copies of the template code.
+template <typename T, typename U>
+bool ArrayEq(const T* lhs, size_t size, const U* rhs) {
+ for (size_t i = 0; i != size; i++) {
+ if (!internal::ArrayEq(lhs[i], rhs[i]))
+ return false;
+ }
+ return true;
+}
+
+// Finds the first element in the iterator range [begin, end) that
+// equals elem. Element may be a native array type itself.
+template <typename Iter, typename Element>
+Iter ArrayAwareFind(Iter begin, Iter end, const Element& elem) {
+ for (Iter it = begin; it != end; ++it) {
+ if (internal::ArrayEq(*it, elem))
+ return it;
+ }
+ return end;
+}
+
+// CopyArray() copies a k-dimensional native array using the elements'
+// operator=, where k can be any integer >= 0. When k is 0,
+// CopyArray() degenerates into copying a single value.
+
+template <typename T, typename U>
+void CopyArray(const T* from, size_t size, U* to);
+
+// This generic version is used when k is 0.
+template <typename T, typename U>
+inline void CopyArray(const T& from, U* to) { *to = from; }
+
+// This overload is used when k >= 1.
+template <typename T, typename U, size_t N>
+inline void CopyArray(const T(&from)[N], U(*to)[N]) {
+ internal::CopyArray(from, N, *to);
+}
+
+// This helper reduces code bloat. If we instead put its logic inside
+// the previous CopyArray() function, arrays with different sizes
+// would lead to different copies of the template code.
+template <typename T, typename U>
+void CopyArray(const T* from, size_t size, U* to) {
+ for (size_t i = 0; i != size; i++) {
+ internal::CopyArray(from[i], to + i);
+ }
+}
+
+// The relation between an NativeArray object (see below) and the
+// native array it represents.
+// We use 2 different structs to allow non-copyable types to be used, as long
+// as RelationToSourceReference() is passed.
+struct RelationToSourceReference {};
+struct RelationToSourceCopy {};
+
+// Adapts a native array to a read-only STL-style container. Instead
+// of the complete STL container concept, this adaptor only implements
+// members useful for Google Mock's container matchers. New members
+// should be added as needed. To simplify the implementation, we only
+// support Element being a raw type (i.e. having no top-level const or
+// reference modifier). It's the client's responsibility to satisfy
+// this requirement. Element can be an array type itself (hence
+// multi-dimensional arrays are supported).
+template <typename Element>
+class NativeArray {
+ public:
+ // STL-style container typedefs.
+ typedef Element value_type;
+ typedef Element* iterator;
+ typedef const Element* const_iterator;
+
+ // Constructs from a native array. References the source.
+ NativeArray(const Element* array, size_t count, RelationToSourceReference) {
+ InitRef(array, count);
+ }
+
+ // Constructs from a native array. Copies the source.
+ NativeArray(const Element* array, size_t count, RelationToSourceCopy) {
+ InitCopy(array, count);
+ }
+
+ // Copy constructor.
+ NativeArray(const NativeArray& rhs) {
+ (this->*rhs.clone_)(rhs.array_, rhs.size_);
+ }
+
+ ~NativeArray() {
+ if (clone_ != &NativeArray::InitRef)
+ delete[] array_;
+ }
+
+ // STL-style container methods.
+ size_t size() const { return size_; }
+ const_iterator begin() const { return array_; }
+ const_iterator end() const { return array_ + size_; }
+ bool operator==(const NativeArray& rhs) const {
+ return size() == rhs.size() &&
+ ArrayEq(begin(), size(), rhs.begin());
+ }
+
+ private:
static_assert(!std::is_const<Element>::value, "Type must not be const");
static_assert(!std::is_reference<Element>::value,
"Type must not be a reference");
-
- // Initializes this object with a copy of the input.
- void InitCopy(const Element* array, size_t a_size) {
- Element* const copy = new Element[a_size];
- CopyArray(array, a_size, copy);
- array_ = copy;
- size_ = a_size;
- clone_ = &NativeArray::InitCopy;
- }
-
- // Initializes this object with a reference of the input.
- void InitRef(const Element* array, size_t a_size) {
- array_ = array;
- size_ = a_size;
- clone_ = &NativeArray::InitRef;
- }
-
- const Element* array_;
- size_t size_;
- void (NativeArray::*clone_)(const Element*, size_t);
-};
-
+
+ // Initializes this object with a copy of the input.
+ void InitCopy(const Element* array, size_t a_size) {
+ Element* const copy = new Element[a_size];
+ CopyArray(array, a_size, copy);
+ array_ = copy;
+ size_ = a_size;
+ clone_ = &NativeArray::InitCopy;
+ }
+
+ // Initializes this object with a reference of the input.
+ void InitRef(const Element* array, size_t a_size) {
+ array_ = array;
+ size_ = a_size;
+ clone_ = &NativeArray::InitRef;
+ }
+
+ const Element* array_;
+ size_t size_;
+ void (NativeArray::*clone_)(const Element*, size_t);
+};
+
// Backport of std::index_sequence.
template <size_t... Is>
struct IndexSequence {
@@ -1313,9 +1313,9 @@ GTEST_INTERNAL_DEPRECATED(
"INSTANTIATE_TYPED_TEST_SUITE_P")
constexpr bool InstantiateTypedTestCase_P_IsDeprecated() { return true; }
-} // namespace internal
-} // namespace testing
-
+} // namespace internal
+} // namespace testing
+
namespace std {
// Some standard library implementations use `struct tuple_size` and some use
// `class tuple_size`. Clang warns about the mismatch.
@@ -1332,38 +1332,38 @@ struct tuple_size<testing::internal::FlatTuple<Ts...>>
#endif
} // namespace std
-#define GTEST_MESSAGE_AT_(file, line, message, result_type) \
- ::testing::internal::AssertHelper(result_type, file, line, message) \
- = ::testing::Message()
-
-#define GTEST_MESSAGE_(message, result_type) \
- GTEST_MESSAGE_AT_(__FILE__, __LINE__, message, result_type)
-
-#define GTEST_FATAL_FAILURE_(message) \
- return GTEST_MESSAGE_(message, ::testing::TestPartResult::kFatalFailure)
-
-#define GTEST_NONFATAL_FAILURE_(message) \
- GTEST_MESSAGE_(message, ::testing::TestPartResult::kNonFatalFailure)
-
-#define GTEST_SUCCESS_(message) \
- GTEST_MESSAGE_(message, ::testing::TestPartResult::kSuccess)
-
+#define GTEST_MESSAGE_AT_(file, line, message, result_type) \
+ ::testing::internal::AssertHelper(result_type, file, line, message) \
+ = ::testing::Message()
+
+#define GTEST_MESSAGE_(message, result_type) \
+ GTEST_MESSAGE_AT_(__FILE__, __LINE__, message, result_type)
+
+#define GTEST_FATAL_FAILURE_(message) \
+ return GTEST_MESSAGE_(message, ::testing::TestPartResult::kFatalFailure)
+
+#define GTEST_NONFATAL_FAILURE_(message) \
+ GTEST_MESSAGE_(message, ::testing::TestPartResult::kNonFatalFailure)
+
+#define GTEST_SUCCESS_(message) \
+ GTEST_MESSAGE_(message, ::testing::TestPartResult::kSuccess)
+
#define GTEST_SKIP_(message) \
return GTEST_MESSAGE_(message, ::testing::TestPartResult::kSkip)
// Suppress MSVC warning 4072 (unreachable code) for the code following
-// statement if it returns or throws (or doesn't return or throw in some
-// situations).
+// statement if it returns or throws (or doesn't return or throw in some
+// situations).
// NOTE: The "else" is important to keep this expansion to prevent a top-level
// "else" from attaching to our "if".
-#define GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) \
+#define GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) \
if (::testing::internal::AlwaysTrue()) { \
statement; \
} else /* NOLINT */ \
static_assert(true, "") // User must have a semicolon after expansion.
-
+
#if GTEST_HAS_EXCEPTIONS
-
+
namespace testing {
namespace internal {
@@ -1455,72 +1455,72 @@ class NeverThrown {
#endif // GTEST_HAS_EXCEPTIONS
-#define GTEST_TEST_NO_THROW_(statement, fail) \
- GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+#define GTEST_TEST_NO_THROW_(statement, fail) \
+ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
if (::testing::internal::TrueWithString gtest_msg{}) { \
- try { \
- GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
- } \
+ try { \
+ GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
+ } \
GTEST_TEST_NO_THROW_CATCH_STD_EXCEPTION_() \
- catch (...) { \
+ catch (...) { \
gtest_msg.value = "it throws."; \
- goto GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__); \
- } \
- } else \
- GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__): \
+ goto GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__); \
+ } \
+ } else \
+ GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__): \
fail(("Expected: " #statement " doesn't throw an exception.\n" \
" Actual: " + gtest_msg.value).c_str())
-
-#define GTEST_TEST_ANY_THROW_(statement, fail) \
- GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
- if (::testing::internal::AlwaysTrue()) { \
- bool gtest_caught_any = false; \
- try { \
- GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
- } \
- catch (...) { \
- gtest_caught_any = true; \
- } \
- if (!gtest_caught_any) { \
- goto GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__); \
- } \
- } else \
- GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__): \
- fail("Expected: " #statement " throws an exception.\n" \
- " Actual: it doesn't.")
-
-
-// Implements Boolean test assertions such as EXPECT_TRUE. expression can be
-// either a boolean expression or an AssertionResult. text is a textual
+
+#define GTEST_TEST_ANY_THROW_(statement, fail) \
+ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+ if (::testing::internal::AlwaysTrue()) { \
+ bool gtest_caught_any = false; \
+ try { \
+ GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
+ } \
+ catch (...) { \
+ gtest_caught_any = true; \
+ } \
+ if (!gtest_caught_any) { \
+ goto GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__); \
+ } \
+ } else \
+ GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__): \
+ fail("Expected: " #statement " throws an exception.\n" \
+ " Actual: it doesn't.")
+
+
+// Implements Boolean test assertions such as EXPECT_TRUE. expression can be
+// either a boolean expression or an AssertionResult. text is a textual
// representation of expression as it was passed into the EXPECT_TRUE.
-#define GTEST_TEST_BOOLEAN_(expression, text, actual, expected, fail) \
- GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
- if (const ::testing::AssertionResult gtest_ar_ = \
- ::testing::AssertionResult(expression)) \
- ; \
- else \
- fail(::testing::internal::GetBoolAssertionFailureMessage(\
- gtest_ar_, text, #actual, #expected).c_str())
-
-#define GTEST_TEST_NO_FATAL_FAILURE_(statement, fail) \
- GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
- if (::testing::internal::AlwaysTrue()) { \
- ::testing::internal::HasNewFatalFailureHelper gtest_fatal_failure_checker; \
- GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
- if (gtest_fatal_failure_checker.has_new_fatal_failure()) { \
- goto GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__); \
- } \
- } else \
- GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__): \
- fail("Expected: " #statement " doesn't generate new fatal " \
- "failures in the current thread.\n" \
- " Actual: it does.")
-
-// Expands to the name of the class that implements the given test.
+#define GTEST_TEST_BOOLEAN_(expression, text, actual, expected, fail) \
+ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+ if (const ::testing::AssertionResult gtest_ar_ = \
+ ::testing::AssertionResult(expression)) \
+ ; \
+ else \
+ fail(::testing::internal::GetBoolAssertionFailureMessage(\
+ gtest_ar_, text, #actual, #expected).c_str())
+
+#define GTEST_TEST_NO_FATAL_FAILURE_(statement, fail) \
+ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+ if (::testing::internal::AlwaysTrue()) { \
+ ::testing::internal::HasNewFatalFailureHelper gtest_fatal_failure_checker; \
+ GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
+ if (gtest_fatal_failure_checker.has_new_fatal_failure()) { \
+ goto GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__); \
+ } \
+ } else \
+ GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__): \
+ fail("Expected: " #statement " doesn't generate new fatal " \
+ "failures in the current thread.\n" \
+ " Actual: it does.")
+
+// Expands to the name of the class that implements the given test.
#define GTEST_TEST_CLASS_NAME_(test_suite_name, test_name) \
test_suite_name##_##test_name##_Test
-
-// Helper macro for defining tests.
+
+// Helper macro for defining tests.
#define GTEST_TEST_(test_suite_name, test_name, parent_class, parent_id) \
static_assert(sizeof(GTEST_STRINGIFY_(test_suite_name)) > 1, \
"test_suite_name must not be empty"); \
@@ -1553,5 +1553,5 @@ class NeverThrown {
new ::testing::internal::TestFactoryImpl<GTEST_TEST_CLASS_NAME_( \
test_suite_name, test_name)>); \
void GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)::TestBody()
-
+
#endif // GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
diff --git a/contrib/restricted/googletest/googletest/include/gtest/internal/gtest-param-util.h b/contrib/restricted/googletest/googletest/include/gtest/internal/gtest-param-util.h
index 7a8a84c04d..c2ef6e3124 100644
--- a/contrib/restricted/googletest/googletest/include/gtest/internal/gtest-param-util.h
+++ b/contrib/restricted/googletest/googletest/include/gtest/internal/gtest-param-util.h
@@ -1,481 +1,481 @@
-// Copyright 2008 Google Inc.
-// All Rights Reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Type and function utilities for implementing parameterized tests.
-
+// Copyright 2008 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+// Type and function utilities for implementing parameterized tests.
+
// GOOGLETEST_CM0001 DO NOT DELETE
#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
-
-#include <ctype.h>
-
+
+#include <ctype.h>
+
#include <cassert>
-#include <iterator>
+#include <iterator>
#include <memory>
-#include <set>
+#include <set>
#include <tuple>
#include <type_traits>
-#include <utility>
-#include <vector>
-
-#include "gtest/internal/gtest-internal.h"
-#include "gtest/internal/gtest-port.h"
-#include "gtest/gtest-printers.h"
+#include <utility>
+#include <vector>
+
+#include "gtest/internal/gtest-internal.h"
+#include "gtest/internal/gtest-port.h"
+#include "gtest/gtest-printers.h"
#include "gtest/gtest-test-part.h"
-
-namespace testing {
-// Input to a parameterized test name generator, describing a test parameter.
-// Consists of the parameter value and the integer parameter index.
-template <class ParamType>
-struct TestParamInfo {
- TestParamInfo(const ParamType& a_param, size_t an_index) :
- param(a_param),
- index(an_index) {}
- ParamType param;
- size_t index;
-};
-
-// A builtin parameterized test name generator which returns the result of
-// testing::PrintToString.
-struct PrintToStringParamName {
- template <class ParamType>
- std::string operator()(const TestParamInfo<ParamType>& info) const {
- return PrintToString(info.param);
- }
-};
-
-namespace internal {
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+
+namespace testing {
+// Input to a parameterized test name generator, describing a test parameter.
+// Consists of the parameter value and the integer parameter index.
+template <class ParamType>
+struct TestParamInfo {
+ TestParamInfo(const ParamType& a_param, size_t an_index) :
+ param(a_param),
+ index(an_index) {}
+ ParamType param;
+ size_t index;
+};
+
+// A builtin parameterized test name generator which returns the result of
+// testing::PrintToString.
+struct PrintToStringParamName {
+ template <class ParamType>
+ std::string operator()(const TestParamInfo<ParamType>& info) const {
+ return PrintToString(info.param);
+ }
+};
+
+namespace internal {
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
// Utility Functions
-// Outputs a message explaining invalid registration of different
+// Outputs a message explaining invalid registration of different
// fixture class for the same test suite. This may happen when
-// TEST_P macro is used to define two tests with the same name
-// but in different namespaces.
+// TEST_P macro is used to define two tests with the same name
+// but in different namespaces.
GTEST_API_ void ReportInvalidTestSuiteType(const char* test_suite_name,
CodeLocation code_location);
-
-template <typename> class ParamGeneratorInterface;
-template <typename> class ParamGenerator;
-
-// Interface for iterating over elements provided by an implementation
-// of ParamGeneratorInterface<T>.
-template <typename T>
-class ParamIteratorInterface {
- public:
- virtual ~ParamIteratorInterface() {}
- // A pointer to the base generator instance.
- // Used only for the purposes of iterator comparison
- // to make sure that two iterators belong to the same generator.
- virtual const ParamGeneratorInterface<T>* BaseGenerator() const = 0;
- // Advances iterator to point to the next element
- // provided by the generator. The caller is responsible
- // for not calling Advance() on an iterator equal to
- // BaseGenerator()->End().
- virtual void Advance() = 0;
- // Clones the iterator object. Used for implementing copy semantics
- // of ParamIterator<T>.
- virtual ParamIteratorInterface* Clone() const = 0;
- // Dereferences the current iterator and provides (read-only) access
- // to the pointed value. It is the caller's responsibility not to call
- // Current() on an iterator equal to BaseGenerator()->End().
- // Used for implementing ParamGenerator<T>::operator*().
- virtual const T* Current() const = 0;
- // Determines whether the given iterator and other point to the same
- // element in the sequence generated by the generator.
- // Used for implementing ParamGenerator<T>::operator==().
- virtual bool Equals(const ParamIteratorInterface& other) const = 0;
-};
-
-// Class iterating over elements provided by an implementation of
-// ParamGeneratorInterface<T>. It wraps ParamIteratorInterface<T>
-// and implements the const forward iterator concept.
-template <typename T>
-class ParamIterator {
- public:
- typedef T value_type;
- typedef const T& reference;
- typedef ptrdiff_t difference_type;
-
- // ParamIterator assumes ownership of the impl_ pointer.
- ParamIterator(const ParamIterator& other) : impl_(other.impl_->Clone()) {}
- ParamIterator& operator=(const ParamIterator& other) {
- if (this != &other)
- impl_.reset(other.impl_->Clone());
- return *this;
- }
-
- const T& operator*() const { return *impl_->Current(); }
- const T* operator->() const { return impl_->Current(); }
- // Prefix version of operator++.
- ParamIterator& operator++() {
- impl_->Advance();
- return *this;
- }
- // Postfix version of operator++.
- ParamIterator operator++(int /*unused*/) {
- ParamIteratorInterface<T>* clone = impl_->Clone();
- impl_->Advance();
- return ParamIterator(clone);
- }
- bool operator==(const ParamIterator& other) const {
- return impl_.get() == other.impl_.get() || impl_->Equals(*other.impl_);
- }
- bool operator!=(const ParamIterator& other) const {
- return !(*this == other);
- }
-
- private:
- friend class ParamGenerator<T>;
- explicit ParamIterator(ParamIteratorInterface<T>* impl) : impl_(impl) {}
+
+template <typename> class ParamGeneratorInterface;
+template <typename> class ParamGenerator;
+
+// Interface for iterating over elements provided by an implementation
+// of ParamGeneratorInterface<T>.
+template <typename T>
+class ParamIteratorInterface {
+ public:
+ virtual ~ParamIteratorInterface() {}
+ // A pointer to the base generator instance.
+ // Used only for the purposes of iterator comparison
+ // to make sure that two iterators belong to the same generator.
+ virtual const ParamGeneratorInterface<T>* BaseGenerator() const = 0;
+ // Advances iterator to point to the next element
+ // provided by the generator. The caller is responsible
+ // for not calling Advance() on an iterator equal to
+ // BaseGenerator()->End().
+ virtual void Advance() = 0;
+ // Clones the iterator object. Used for implementing copy semantics
+ // of ParamIterator<T>.
+ virtual ParamIteratorInterface* Clone() const = 0;
+ // Dereferences the current iterator and provides (read-only) access
+ // to the pointed value. It is the caller's responsibility not to call
+ // Current() on an iterator equal to BaseGenerator()->End().
+ // Used for implementing ParamGenerator<T>::operator*().
+ virtual const T* Current() const = 0;
+ // Determines whether the given iterator and other point to the same
+ // element in the sequence generated by the generator.
+ // Used for implementing ParamGenerator<T>::operator==().
+ virtual bool Equals(const ParamIteratorInterface& other) const = 0;
+};
+
+// Class iterating over elements provided by an implementation of
+// ParamGeneratorInterface<T>. It wraps ParamIteratorInterface<T>
+// and implements the const forward iterator concept.
+template <typename T>
+class ParamIterator {
+ public:
+ typedef T value_type;
+ typedef const T& reference;
+ typedef ptrdiff_t difference_type;
+
+ // ParamIterator assumes ownership of the impl_ pointer.
+ ParamIterator(const ParamIterator& other) : impl_(other.impl_->Clone()) {}
+ ParamIterator& operator=(const ParamIterator& other) {
+ if (this != &other)
+ impl_.reset(other.impl_->Clone());
+ return *this;
+ }
+
+ const T& operator*() const { return *impl_->Current(); }
+ const T* operator->() const { return impl_->Current(); }
+ // Prefix version of operator++.
+ ParamIterator& operator++() {
+ impl_->Advance();
+ return *this;
+ }
+ // Postfix version of operator++.
+ ParamIterator operator++(int /*unused*/) {
+ ParamIteratorInterface<T>* clone = impl_->Clone();
+ impl_->Advance();
+ return ParamIterator(clone);
+ }
+ bool operator==(const ParamIterator& other) const {
+ return impl_.get() == other.impl_.get() || impl_->Equals(*other.impl_);
+ }
+ bool operator!=(const ParamIterator& other) const {
+ return !(*this == other);
+ }
+
+ private:
+ friend class ParamGenerator<T>;
+ explicit ParamIterator(ParamIteratorInterface<T>* impl) : impl_(impl) {}
std::unique_ptr<ParamIteratorInterface<T> > impl_;
-};
-
-// ParamGeneratorInterface<T> is the binary interface to access generators
-// defined in other translation units.
-template <typename T>
-class ParamGeneratorInterface {
- public:
- typedef T ParamType;
-
- virtual ~ParamGeneratorInterface() {}
-
- // Generator interface definition
- virtual ParamIteratorInterface<T>* Begin() const = 0;
- virtual ParamIteratorInterface<T>* End() const = 0;
-};
-
-// Wraps ParamGeneratorInterface<T> and provides general generator syntax
-// compatible with the STL Container concept.
-// This class implements copy initialization semantics and the contained
-// ParamGeneratorInterface<T> instance is shared among all copies
-// of the original object. This is possible because that instance is immutable.
-template<typename T>
-class ParamGenerator {
- public:
- typedef ParamIterator<T> iterator;
-
- explicit ParamGenerator(ParamGeneratorInterface<T>* impl) : impl_(impl) {}
- ParamGenerator(const ParamGenerator& other) : impl_(other.impl_) {}
-
- ParamGenerator& operator=(const ParamGenerator& other) {
- impl_ = other.impl_;
- return *this;
- }
-
- iterator begin() const { return iterator(impl_->Begin()); }
- iterator end() const { return iterator(impl_->End()); }
-
- private:
+};
+
+// ParamGeneratorInterface<T> is the binary interface to access generators
+// defined in other translation units.
+template <typename T>
+class ParamGeneratorInterface {
+ public:
+ typedef T ParamType;
+
+ virtual ~ParamGeneratorInterface() {}
+
+ // Generator interface definition
+ virtual ParamIteratorInterface<T>* Begin() const = 0;
+ virtual ParamIteratorInterface<T>* End() const = 0;
+};
+
+// Wraps ParamGeneratorInterface<T> and provides general generator syntax
+// compatible with the STL Container concept.
+// This class implements copy initialization semantics and the contained
+// ParamGeneratorInterface<T> instance is shared among all copies
+// of the original object. This is possible because that instance is immutable.
+template<typename T>
+class ParamGenerator {
+ public:
+ typedef ParamIterator<T> iterator;
+
+ explicit ParamGenerator(ParamGeneratorInterface<T>* impl) : impl_(impl) {}
+ ParamGenerator(const ParamGenerator& other) : impl_(other.impl_) {}
+
+ ParamGenerator& operator=(const ParamGenerator& other) {
+ impl_ = other.impl_;
+ return *this;
+ }
+
+ iterator begin() const { return iterator(impl_->Begin()); }
+ iterator end() const { return iterator(impl_->End()); }
+
+ private:
std::shared_ptr<const ParamGeneratorInterface<T> > impl_;
-};
-
-// Generates values from a range of two comparable values. Can be used to
-// generate sequences of user-defined types that implement operator+() and
-// operator<().
-// This class is used in the Range() function.
-template <typename T, typename IncrementT>
-class RangeGenerator : public ParamGeneratorInterface<T> {
- public:
- RangeGenerator(T begin, T end, IncrementT step)
- : begin_(begin), end_(end),
- step_(step), end_index_(CalculateEndIndex(begin, end, step)) {}
+};
+
+// Generates values from a range of two comparable values. Can be used to
+// generate sequences of user-defined types that implement operator+() and
+// operator<().
+// This class is used in the Range() function.
+template <typename T, typename IncrementT>
+class RangeGenerator : public ParamGeneratorInterface<T> {
+ public:
+ RangeGenerator(T begin, T end, IncrementT step)
+ : begin_(begin), end_(end),
+ step_(step), end_index_(CalculateEndIndex(begin, end, step)) {}
~RangeGenerator() override {}
-
+
ParamIteratorInterface<T>* Begin() const override {
- return new Iterator(this, begin_, 0, step_);
- }
+ return new Iterator(this, begin_, 0, step_);
+ }
ParamIteratorInterface<T>* End() const override {
- return new Iterator(this, end_, end_index_, step_);
- }
-
- private:
- class Iterator : public ParamIteratorInterface<T> {
- public:
- Iterator(const ParamGeneratorInterface<T>* base, T value, int index,
- IncrementT step)
- : base_(base), value_(value), index_(index), step_(step) {}
+ return new Iterator(this, end_, end_index_, step_);
+ }
+
+ private:
+ class Iterator : public ParamIteratorInterface<T> {
+ public:
+ Iterator(const ParamGeneratorInterface<T>* base, T value, int index,
+ IncrementT step)
+ : base_(base), value_(value), index_(index), step_(step) {}
~Iterator() override {}
-
+
const ParamGeneratorInterface<T>* BaseGenerator() const override {
- return base_;
- }
+ return base_;
+ }
void Advance() override {
- value_ = static_cast<T>(value_ + step_);
- index_++;
- }
+ value_ = static_cast<T>(value_ + step_);
+ index_++;
+ }
ParamIteratorInterface<T>* Clone() const override {
- return new Iterator(*this);
- }
+ return new Iterator(*this);
+ }
const T* Current() const override { return &value_; }
bool Equals(const ParamIteratorInterface<T>& other) const override {
- // Having the same base generator guarantees that the other
- // iterator is of the same type and we can downcast.
- GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
- << "The program attempted to compare iterators "
- << "from different generators." << std::endl;
- const int other_index =
- CheckedDowncastToActualType<const Iterator>(&other)->index_;
- return index_ == other_index;
- }
-
- private:
- Iterator(const Iterator& other)
- : ParamIteratorInterface<T>(),
- base_(other.base_), value_(other.value_), index_(other.index_),
- step_(other.step_) {}
-
- // No implementation - assignment is unsupported.
- void operator=(const Iterator& other);
-
- const ParamGeneratorInterface<T>* const base_;
- T value_;
- int index_;
- const IncrementT step_;
- }; // class RangeGenerator::Iterator
-
- static int CalculateEndIndex(const T& begin,
- const T& end,
- const IncrementT& step) {
- int end_index = 0;
- for (T i = begin; i < end; i = static_cast<T>(i + step))
- end_index++;
- return end_index;
- }
-
- // No implementation - assignment is unsupported.
- void operator=(const RangeGenerator& other);
-
- const T begin_;
- const T end_;
- const IncrementT step_;
- // The index for the end() iterator. All the elements in the generated
- // sequence are indexed (0-based) to aid iterator comparison.
- const int end_index_;
-}; // class RangeGenerator
-
-
-// Generates values from a pair of STL-style iterators. Used in the
-// ValuesIn() function. The elements are copied from the source range
-// since the source can be located on the stack, and the generator
-// is likely to persist beyond that stack frame.
-template <typename T>
-class ValuesInIteratorRangeGenerator : public ParamGeneratorInterface<T> {
- public:
- template <typename ForwardIterator>
- ValuesInIteratorRangeGenerator(ForwardIterator begin, ForwardIterator end)
- : container_(begin, end) {}
+ // Having the same base generator guarantees that the other
+ // iterator is of the same type and we can downcast.
+ GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+ << "The program attempted to compare iterators "
+ << "from different generators." << std::endl;
+ const int other_index =
+ CheckedDowncastToActualType<const Iterator>(&other)->index_;
+ return index_ == other_index;
+ }
+
+ private:
+ Iterator(const Iterator& other)
+ : ParamIteratorInterface<T>(),
+ base_(other.base_), value_(other.value_), index_(other.index_),
+ step_(other.step_) {}
+
+ // No implementation - assignment is unsupported.
+ void operator=(const Iterator& other);
+
+ const ParamGeneratorInterface<T>* const base_;
+ T value_;
+ int index_;
+ const IncrementT step_;
+ }; // class RangeGenerator::Iterator
+
+ static int CalculateEndIndex(const T& begin,
+ const T& end,
+ const IncrementT& step) {
+ int end_index = 0;
+ for (T i = begin; i < end; i = static_cast<T>(i + step))
+ end_index++;
+ return end_index;
+ }
+
+ // No implementation - assignment is unsupported.
+ void operator=(const RangeGenerator& other);
+
+ const T begin_;
+ const T end_;
+ const IncrementT step_;
+ // The index for the end() iterator. All the elements in the generated
+ // sequence are indexed (0-based) to aid iterator comparison.
+ const int end_index_;
+}; // class RangeGenerator
+
+
+// Generates values from a pair of STL-style iterators. Used in the
+// ValuesIn() function. The elements are copied from the source range
+// since the source can be located on the stack, and the generator
+// is likely to persist beyond that stack frame.
+template <typename T>
+class ValuesInIteratorRangeGenerator : public ParamGeneratorInterface<T> {
+ public:
+ template <typename ForwardIterator>
+ ValuesInIteratorRangeGenerator(ForwardIterator begin, ForwardIterator end)
+ : container_(begin, end) {}
~ValuesInIteratorRangeGenerator() override {}
-
+
ParamIteratorInterface<T>* Begin() const override {
- return new Iterator(this, container_.begin());
- }
+ return new Iterator(this, container_.begin());
+ }
ParamIteratorInterface<T>* End() const override {
- return new Iterator(this, container_.end());
- }
-
- private:
- typedef typename ::std::vector<T> ContainerType;
-
- class Iterator : public ParamIteratorInterface<T> {
- public:
- Iterator(const ParamGeneratorInterface<T>* base,
- typename ContainerType::const_iterator iterator)
- : base_(base), iterator_(iterator) {}
+ return new Iterator(this, container_.end());
+ }
+
+ private:
+ typedef typename ::std::vector<T> ContainerType;
+
+ class Iterator : public ParamIteratorInterface<T> {
+ public:
+ Iterator(const ParamGeneratorInterface<T>* base,
+ typename ContainerType::const_iterator iterator)
+ : base_(base), iterator_(iterator) {}
~Iterator() override {}
-
+
const ParamGeneratorInterface<T>* BaseGenerator() const override {
- return base_;
- }
+ return base_;
+ }
void Advance() override {
- ++iterator_;
- value_.reset();
- }
+ ++iterator_;
+ value_.reset();
+ }
ParamIteratorInterface<T>* Clone() const override {
- return new Iterator(*this);
- }
- // We need to use cached value referenced by iterator_ because *iterator_
- // can return a temporary object (and of type other then T), so just
- // having "return &*iterator_;" doesn't work.
- // value_ is updated here and not in Advance() because Advance()
- // can advance iterator_ beyond the end of the range, and we cannot
- // detect that fact. The client code, on the other hand, is
- // responsible for not calling Current() on an out-of-range iterator.
+ return new Iterator(*this);
+ }
+ // We need to use cached value referenced by iterator_ because *iterator_
+ // can return a temporary object (and of type other then T), so just
+ // having "return &*iterator_;" doesn't work.
+ // value_ is updated here and not in Advance() because Advance()
+ // can advance iterator_ beyond the end of the range, and we cannot
+ // detect that fact. The client code, on the other hand, is
+ // responsible for not calling Current() on an out-of-range iterator.
const T* Current() const override {
if (value_.get() == nullptr) value_.reset(new T(*iterator_));
- return value_.get();
- }
+ return value_.get();
+ }
bool Equals(const ParamIteratorInterface<T>& other) const override {
- // Having the same base generator guarantees that the other
- // iterator is of the same type and we can downcast.
- GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
- << "The program attempted to compare iterators "
- << "from different generators." << std::endl;
- return iterator_ ==
- CheckedDowncastToActualType<const Iterator>(&other)->iterator_;
- }
-
- private:
- Iterator(const Iterator& other)
- // The explicit constructor call suppresses a false warning
- // emitted by gcc when supplied with the -Wextra option.
- : ParamIteratorInterface<T>(),
- base_(other.base_),
- iterator_(other.iterator_) {}
-
- const ParamGeneratorInterface<T>* const base_;
- typename ContainerType::const_iterator iterator_;
- // A cached value of *iterator_. We keep it here to allow access by
- // pointer in the wrapping iterator's operator->().
- // value_ needs to be mutable to be accessed in Current().
+ // Having the same base generator guarantees that the other
+ // iterator is of the same type and we can downcast.
+ GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+ << "The program attempted to compare iterators "
+ << "from different generators." << std::endl;
+ return iterator_ ==
+ CheckedDowncastToActualType<const Iterator>(&other)->iterator_;
+ }
+
+ private:
+ Iterator(const Iterator& other)
+ // The explicit constructor call suppresses a false warning
+ // emitted by gcc when supplied with the -Wextra option.
+ : ParamIteratorInterface<T>(),
+ base_(other.base_),
+ iterator_(other.iterator_) {}
+
+ const ParamGeneratorInterface<T>* const base_;
+ typename ContainerType::const_iterator iterator_;
+ // A cached value of *iterator_. We keep it here to allow access by
+ // pointer in the wrapping iterator's operator->().
+ // value_ needs to be mutable to be accessed in Current().
// Use of std::unique_ptr helps manage cached value's lifetime,
- // which is bound by the lifespan of the iterator itself.
+ // which is bound by the lifespan of the iterator itself.
mutable std::unique_ptr<const T> value_;
- }; // class ValuesInIteratorRangeGenerator::Iterator
-
- // No implementation - assignment is unsupported.
- void operator=(const ValuesInIteratorRangeGenerator& other);
-
- const ContainerType container_;
-}; // class ValuesInIteratorRangeGenerator
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// Default parameterized test name generator, returns a string containing the
-// integer test parameter index.
-template <class ParamType>
-std::string DefaultParamName(const TestParamInfo<ParamType>& info) {
- Message name_stream;
- name_stream << info.index;
- return name_stream.GetString();
-}
-
+ }; // class ValuesInIteratorRangeGenerator::Iterator
+
+ // No implementation - assignment is unsupported.
+ void operator=(const ValuesInIteratorRangeGenerator& other);
+
+ const ContainerType container_;
+}; // class ValuesInIteratorRangeGenerator
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Default parameterized test name generator, returns a string containing the
+// integer test parameter index.
+template <class ParamType>
+std::string DefaultParamName(const TestParamInfo<ParamType>& info) {
+ Message name_stream;
+ name_stream << info.index;
+ return name_stream.GetString();
+}
+
template <typename T = int>
void TestNotEmpty() {
static_assert(sizeof(T) == 0, "Empty arguments are not allowed.");
-}
+}
template <typename T = int>
void TestNotEmpty(const T&) {}
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// Stores a parameter value and later creates tests parameterized with that
-// value.
-template <class TestClass>
-class ParameterizedTestFactory : public TestFactoryBase {
- public:
- typedef typename TestClass::ParamType ParamType;
- explicit ParameterizedTestFactory(ParamType parameter) :
- parameter_(parameter) {}
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Stores a parameter value and later creates tests parameterized with that
+// value.
+template <class TestClass>
+class ParameterizedTestFactory : public TestFactoryBase {
+ public:
+ typedef typename TestClass::ParamType ParamType;
+ explicit ParameterizedTestFactory(ParamType parameter) :
+ parameter_(parameter) {}
Test* CreateTest() override {
- TestClass::SetParam(&parameter_);
- return new TestClass();
- }
-
- private:
- const ParamType parameter_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestFactory);
-};
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// TestMetaFactoryBase is a base class for meta-factories that create
-// test factories for passing into MakeAndRegisterTestInfo function.
-template <class ParamType>
-class TestMetaFactoryBase {
- public:
- virtual ~TestMetaFactoryBase() {}
-
- virtual TestFactoryBase* CreateTestFactory(ParamType parameter) = 0;
-};
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// TestMetaFactory creates test factories for passing into
-// MakeAndRegisterTestInfo function. Since MakeAndRegisterTestInfo receives
-// ownership of test factory pointer, same factory object cannot be passed
+ TestClass::SetParam(&parameter_);
+ return new TestClass();
+ }
+
+ private:
+ const ParamType parameter_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestFactory);
+};
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// TestMetaFactoryBase is a base class for meta-factories that create
+// test factories for passing into MakeAndRegisterTestInfo function.
+template <class ParamType>
+class TestMetaFactoryBase {
+ public:
+ virtual ~TestMetaFactoryBase() {}
+
+ virtual TestFactoryBase* CreateTestFactory(ParamType parameter) = 0;
+};
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// TestMetaFactory creates test factories for passing into
+// MakeAndRegisterTestInfo function. Since MakeAndRegisterTestInfo receives
+// ownership of test factory pointer, same factory object cannot be passed
// into that method twice. But ParameterizedTestSuiteInfo is going to call
-// it for each Test/Parameter value combination. Thus it needs meta factory
-// creator class.
+// it for each Test/Parameter value combination. Thus it needs meta factory
+// creator class.
template <class TestSuite>
-class TestMetaFactory
+class TestMetaFactory
: public TestMetaFactoryBase<typename TestSuite::ParamType> {
- public:
+ public:
using ParamType = typename TestSuite::ParamType;
-
- TestMetaFactory() {}
-
+
+ TestMetaFactory() {}
+
TestFactoryBase* CreateTestFactory(ParamType parameter) override {
return new ParameterizedTestFactory<TestSuite>(parameter);
- }
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(TestMetaFactory);
-};
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
+ }
+
+ private:
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(TestMetaFactory);
+};
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
// ParameterizedTestSuiteInfoBase is a generic interface
// to ParameterizedTestSuiteInfo classes. ParameterizedTestSuiteInfoBase
-// accumulates test information provided by TEST_P macro invocations
+// accumulates test information provided by TEST_P macro invocations
// and generators provided by INSTANTIATE_TEST_SUITE_P macro invocations
-// and uses that information to register all resulting test instances
+// and uses that information to register all resulting test instances
// in RegisterTests method. The ParameterizeTestSuiteRegistry class holds
// a collection of pointers to the ParameterizedTestSuiteInfo objects
-// and calls RegisterTests() on each of them when asked.
+// and calls RegisterTests() on each of them when asked.
class ParameterizedTestSuiteInfoBase {
- public:
+ public:
virtual ~ParameterizedTestSuiteInfoBase() {}
-
+
// Base part of test suite name for display purposes.
virtual const std::string& GetTestSuiteName() const = 0;
// Test suite id to verify identity.
virtual TypeId GetTestSuiteTypeId() const = 0;
- // UnitTest class invokes this method to register tests in this
+ // UnitTest class invokes this method to register tests in this
// test suite right before running them in RUN_ALL_TESTS macro.
// This method should not be called more than once on any single
// instance of a ParameterizedTestSuiteInfoBase derived class.
- virtual void RegisterTests() = 0;
-
- protected:
+ virtual void RegisterTests() = 0;
+
+ protected:
ParameterizedTestSuiteInfoBase() {}
-
- private:
+
+ private:
GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestSuiteInfoBase);
-};
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
+};
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
// Report a the name of a test_suit as safe to ignore
// as the side effect of construction of this type.
struct GTEST_API_ MarkAsIgnored {
@@ -491,50 +491,50 @@ GTEST_API_ void InsertSyntheticTestCase(const std::string& name,
// macro invocations for a particular test suite and generators
// obtained from INSTANTIATE_TEST_SUITE_P macro invocations for that
// test suite. It registers tests with all values generated by all
-// generators when asked.
+// generators when asked.
template <class TestSuite>
class ParameterizedTestSuiteInfo : public ParameterizedTestSuiteInfoBase {
- public:
- // ParamType and GeneratorCreationFunc are private types but are required
- // for declarations of public methods AddTestPattern() and
+ public:
+ // ParamType and GeneratorCreationFunc are private types but are required
+ // for declarations of public methods AddTestPattern() and
// AddTestSuiteInstantiation().
using ParamType = typename TestSuite::ParamType;
- // A function that returns an instance of appropriate generator type.
- typedef ParamGenerator<ParamType>(GeneratorCreationFunc)();
+ // A function that returns an instance of appropriate generator type.
+ typedef ParamGenerator<ParamType>(GeneratorCreationFunc)();
using ParamNameGeneratorFunc = std::string(const TestParamInfo<ParamType>&);
-
+
explicit ParameterizedTestSuiteInfo(const char* name,
CodeLocation code_location)
: test_suite_name_(name), code_location_(code_location) {}
-
+
// Test suite base name for display purposes.
const std::string& GetTestSuiteName() const override {
return test_suite_name_;
}
// Test suite id to verify identity.
TypeId GetTestSuiteTypeId() const override { return GetTypeId<TestSuite>(); }
- // TEST_P macro uses AddTestPattern() to record information
- // about a single test in a LocalTestInfo structure.
+ // TEST_P macro uses AddTestPattern() to record information
+ // about a single test in a LocalTestInfo structure.
// test_suite_name is the base name of the test suite (without invocation
- // prefix). test_base_name is the name of an individual test without
- // parameter index. For the test SequenceA/FooTest.DoBar/1 FooTest is
+ // prefix). test_base_name is the name of an individual test without
+ // parameter index. For the test SequenceA/FooTest.DoBar/1 FooTest is
// test suite base name and DoBar is test base name.
void AddTestPattern(const char* test_suite_name, const char* test_base_name,
TestMetaFactoryBase<ParamType>* meta_factory,
CodeLocation code_location) {
tests_.push_back(std::shared_ptr<TestInfo>(new TestInfo(
test_suite_name, test_base_name, meta_factory, code_location)));
- }
+ }
// INSTANTIATE_TEST_SUITE_P macro uses AddGenerator() to record information
- // about a generator.
+ // about a generator.
int AddTestSuiteInstantiation(const std::string& instantiation_name,
GeneratorCreationFunc* func,
ParamNameGeneratorFunc* name_func,
const char* file, int line) {
- instantiations_.push_back(
- InstantiationInfo(instantiation_name, func, name_func, file, line));
- return 0; // Return value used only to run this method in namespace scope.
- }
+ instantiations_.push_back(
+ InstantiationInfo(instantiation_name, func, name_func, file, line));
+ return 0; // Return value used only to run this method in namespace scope.
+ }
// UnitTest class invokes this method to register tests in this test suite
// right before running tests in RUN_ALL_TESTS macro.
// This method should not be called more than once on any single
@@ -543,61 +543,61 @@ class ParameterizedTestSuiteInfo : public ParameterizedTestSuiteInfoBase {
void RegisterTests() override {
bool generated_instantiations = false;
- for (typename TestInfoContainer::iterator test_it = tests_.begin();
- test_it != tests_.end(); ++test_it) {
+ for (typename TestInfoContainer::iterator test_it = tests_.begin();
+ test_it != tests_.end(); ++test_it) {
std::shared_ptr<TestInfo> test_info = *test_it;
- for (typename InstantiationContainer::iterator gen_it =
- instantiations_.begin(); gen_it != instantiations_.end();
- ++gen_it) {
+ for (typename InstantiationContainer::iterator gen_it =
+ instantiations_.begin(); gen_it != instantiations_.end();
+ ++gen_it) {
const std::string& instantiation_name = gen_it->name;
- ParamGenerator<ParamType> generator((*gen_it->generator)());
- ParamNameGeneratorFunc* name_func = gen_it->name_func;
- const char* file = gen_it->file;
- int line = gen_it->line;
-
+ ParamGenerator<ParamType> generator((*gen_it->generator)());
+ ParamNameGeneratorFunc* name_func = gen_it->name_func;
+ const char* file = gen_it->file;
+ int line = gen_it->line;
+
std::string test_suite_name;
- if ( !instantiation_name.empty() )
+ if ( !instantiation_name.empty() )
test_suite_name = instantiation_name + "/";
test_suite_name += test_info->test_suite_base_name;
-
- size_t i = 0;
- std::set<std::string> test_param_names;
- for (typename ParamGenerator<ParamType>::iterator param_it =
- generator.begin();
- param_it != generator.end(); ++param_it, ++i) {
+
+ size_t i = 0;
+ std::set<std::string> test_param_names;
+ for (typename ParamGenerator<ParamType>::iterator param_it =
+ generator.begin();
+ param_it != generator.end(); ++param_it, ++i) {
generated_instantiations = true;
- Message test_name_stream;
-
- std::string param_name = name_func(
- TestParamInfo<ParamType>(*param_it, i));
-
- GTEST_CHECK_(IsValidParamName(param_name))
- << "Parameterized test name '" << param_name
- << "' is invalid, in " << file
- << " line " << line << std::endl;
-
- GTEST_CHECK_(test_param_names.count(param_name) == 0)
- << "Duplicate parameterized test name '" << param_name
- << "', in " << file << " line " << line << std::endl;
-
- test_param_names.insert(param_name);
-
+ Message test_name_stream;
+
+ std::string param_name = name_func(
+ TestParamInfo<ParamType>(*param_it, i));
+
+ GTEST_CHECK_(IsValidParamName(param_name))
+ << "Parameterized test name '" << param_name
+ << "' is invalid, in " << file
+ << " line " << line << std::endl;
+
+ GTEST_CHECK_(test_param_names.count(param_name) == 0)
+ << "Duplicate parameterized test name '" << param_name
+ << "', in " << file << " line " << line << std::endl;
+
+ test_param_names.insert(param_name);
+
if (!test_info->test_base_name.empty()) {
test_name_stream << test_info->test_base_name << "/";
}
test_name_stream << param_name;
- MakeAndRegisterTestInfo(
+ MakeAndRegisterTestInfo(
test_suite_name.c_str(), test_name_stream.GetString().c_str(),
nullptr, // No type parameter.
PrintToString(*param_it).c_str(), test_info->code_location,
GetTestSuiteTypeId(),
SuiteApiResolver<TestSuite>::GetSetUpCaseOrSuite(file, line),
SuiteApiResolver<TestSuite>::GetTearDownCaseOrSuite(file, line),
- test_info->test_meta_factory->CreateTestFactory(*param_it));
- } // for param_it
- } // for gen_it
- } // for test_it
+ test_info->test_meta_factory->CreateTestFactory(*param_it));
+ } // for param_it
+ } // for gen_it
+ } // for test_it
if (!generated_instantiations) {
// There are no generaotrs, or they all generate nothing ...
@@ -605,11 +605,11 @@ class ParameterizedTestSuiteInfo : public ParameterizedTestSuiteInfoBase {
!tests_.empty());
}
} // RegisterTests
-
- private:
- // LocalTestInfo structure keeps information about a single test registered
- // with TEST_P macro.
- struct TestInfo {
+
+ private:
+ // LocalTestInfo structure keeps information about a single test registered
+ // with TEST_P macro.
+ struct TestInfo {
TestInfo(const char* a_test_suite_base_name, const char* a_test_base_name,
TestMetaFactoryBase<ParamType>* a_test_meta_factory,
CodeLocation a_code_location)
@@ -617,80 +617,80 @@ class ParameterizedTestSuiteInfo : public ParameterizedTestSuiteInfoBase {
test_base_name(a_test_base_name),
test_meta_factory(a_test_meta_factory),
code_location(a_code_location) {}
-
+
const std::string test_suite_base_name;
const std::string test_base_name;
const std::unique_ptr<TestMetaFactoryBase<ParamType> > test_meta_factory;
const CodeLocation code_location;
- };
+ };
using TestInfoContainer = ::std::vector<std::shared_ptr<TestInfo> >;
// Records data received from INSTANTIATE_TEST_SUITE_P macros:
- // <Instantiation name, Sequence generator creation function,
- // Name generator function, Source file, Source line>
- struct InstantiationInfo {
- InstantiationInfo(const std::string &name_in,
- GeneratorCreationFunc* generator_in,
- ParamNameGeneratorFunc* name_func_in,
- const char* file_in,
- int line_in)
- : name(name_in),
- generator(generator_in),
- name_func(name_func_in),
- file(file_in),
- line(line_in) {}
-
- std::string name;
- GeneratorCreationFunc* generator;
- ParamNameGeneratorFunc* name_func;
- const char* file;
- int line;
- };
- typedef ::std::vector<InstantiationInfo> InstantiationContainer;
-
- static bool IsValidParamName(const std::string& name) {
- // Check for empty string
- if (name.empty())
- return false;
-
- // Check for invalid characters
- for (std::string::size_type index = 0; index < name.size(); ++index) {
+ // <Instantiation name, Sequence generator creation function,
+ // Name generator function, Source file, Source line>
+ struct InstantiationInfo {
+ InstantiationInfo(const std::string &name_in,
+ GeneratorCreationFunc* generator_in,
+ ParamNameGeneratorFunc* name_func_in,
+ const char* file_in,
+ int line_in)
+ : name(name_in),
+ generator(generator_in),
+ name_func(name_func_in),
+ file(file_in),
+ line(line_in) {}
+
+ std::string name;
+ GeneratorCreationFunc* generator;
+ ParamNameGeneratorFunc* name_func;
+ const char* file;
+ int line;
+ };
+ typedef ::std::vector<InstantiationInfo> InstantiationContainer;
+
+ static bool IsValidParamName(const std::string& name) {
+ // Check for empty string
+ if (name.empty())
+ return false;
+
+ // Check for invalid characters
+ for (std::string::size_type index = 0; index < name.size(); ++index) {
if (!IsAlNum(name[index]) && name[index] != '_')
- return false;
- }
-
- return true;
- }
-
+ return false;
+ }
+
+ return true;
+ }
+
const std::string test_suite_name_;
- CodeLocation code_location_;
- TestInfoContainer tests_;
- InstantiationContainer instantiations_;
-
+ CodeLocation code_location_;
+ TestInfoContainer tests_;
+ InstantiationContainer instantiations_;
+
GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestSuiteInfo);
}; // class ParameterizedTestSuiteInfo
-
+
// Legacy API is deprecated but still available
#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
template <class TestCase>
using ParameterizedTestCaseInfo = ParameterizedTestSuiteInfo<TestCase>;
#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
// ParameterizedTestSuiteRegistry contains a map of
// ParameterizedTestSuiteInfoBase classes accessed by test suite names. TEST_P
// and INSTANTIATE_TEST_SUITE_P macros use it to locate their corresponding
// ParameterizedTestSuiteInfo descriptors.
class ParameterizedTestSuiteRegistry {
- public:
+ public:
ParameterizedTestSuiteRegistry() {}
~ParameterizedTestSuiteRegistry() {
for (auto& test_suite_info : test_suite_infos_) {
delete test_suite_info;
- }
- }
-
- // Looks up or creates and returns a structure containing information about
+ }
+ }
+
+ // Looks up or creates and returns a structure containing information about
// tests and instantiations of a particular test suite.
template <class TestSuite>
ParameterizedTestSuiteInfo<TestSuite>* GetTestSuitePatternHolder(
@@ -699,33 +699,33 @@ class ParameterizedTestSuiteRegistry {
for (auto& test_suite_info : test_suite_infos_) {
if (test_suite_info->GetTestSuiteName() == test_suite_name) {
if (test_suite_info->GetTestSuiteTypeId() != GetTypeId<TestSuite>()) {
- // Complain about incorrect usage of Google Test facilities
- // and terminate the program since we cannot guaranty correct
+ // Complain about incorrect usage of Google Test facilities
+ // and terminate the program since we cannot guaranty correct
// test suite setup and tear-down in this case.
ReportInvalidTestSuiteType(test_suite_name, code_location);
- posix::Abort();
- } else {
- // At this point we are sure that the object we found is of the same
- // type we are looking for, so we downcast it to that type
- // without further checks.
- typed_test_info = CheckedDowncastToActualType<
+ posix::Abort();
+ } else {
+ // At this point we are sure that the object we found is of the same
+ // type we are looking for, so we downcast it to that type
+ // without further checks.
+ typed_test_info = CheckedDowncastToActualType<
ParameterizedTestSuiteInfo<TestSuite> >(test_suite_info);
- }
- break;
- }
- }
+ }
+ break;
+ }
+ }
if (typed_test_info == nullptr) {
typed_test_info = new ParameterizedTestSuiteInfo<TestSuite>(
test_suite_name, code_location);
test_suite_infos_.push_back(typed_test_info);
- }
- return typed_test_info;
- }
- void RegisterTests() {
+ }
+ return typed_test_info;
+ }
+ void RegisterTests() {
for (auto& test_suite_info : test_suite_infos_) {
test_suite_info->RegisterTests();
- }
- }
+ }
+ }
// Legacy API is deprecated but still available
#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
template <class TestCase>
@@ -733,17 +733,17 @@ class ParameterizedTestSuiteRegistry {
const char* test_case_name, CodeLocation code_location) {
return GetTestSuitePatternHolder<TestCase>(test_case_name, code_location);
}
-
+
#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
- private:
+ private:
using TestSuiteInfoContainer = ::std::vector<ParameterizedTestSuiteInfoBase*>;
-
+
TestSuiteInfoContainer test_suite_infos_;
-
+
GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestSuiteRegistry);
-};
-
+};
+
// Keep track of what type-parameterized test suite are defined and
// where as well as which are intatiated. This allows susequently
// identifying suits that are defined but never used.
@@ -772,7 +772,7 @@ class TypeParameterizedTestSuiteRegistry {
std::map<std::string, TypeParameterizedTestSuiteInfo> suites_;
};
-} // namespace internal
+} // namespace internal
// Forward declarations of ValuesIn(), which is implemented in
// include/gtest/gtest-param-test.h.
@@ -942,6 +942,6 @@ class CartesianProductHolder {
};
} // namespace internal
-} // namespace testing
-
+} // namespace testing
+
#endif // GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
diff --git a/contrib/restricted/googletest/googletest/include/gtest/internal/gtest-port-arch.h b/contrib/restricted/googletest/googletest/include/gtest/internal/gtest-port-arch.h
index ae8d4cfee9..dd845915e3 100644
--- a/contrib/restricted/googletest/googletest/include/gtest/internal/gtest-port-arch.h
+++ b/contrib/restricted/googletest/googletest/include/gtest/internal/gtest-port-arch.h
@@ -1,106 +1,106 @@
-// Copyright 2015, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
+// Copyright 2015, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
// The Google C++ Testing and Mocking Framework (Google Test)
-//
-// This header file defines the GTEST_OS_* macro.
-// It is separate from gtest-port.h so that custom/gtest-port.h can include it.
-
+//
+// This header file defines the GTEST_OS_* macro.
+// It is separate from gtest-port.h so that custom/gtest-port.h can include it.
+
#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_ARCH_H_
#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_ARCH_H_
-
-// Determines the platform on which Google Test is compiled.
-#ifdef __CYGWIN__
-# define GTEST_OS_CYGWIN 1
+
+// Determines the platform on which Google Test is compiled.
+#ifdef __CYGWIN__
+# define GTEST_OS_CYGWIN 1
# elif defined(__MINGW__) || defined(__MINGW32__) || defined(__MINGW64__)
# define GTEST_OS_WINDOWS_MINGW 1
# define GTEST_OS_WINDOWS 1
-#elif defined _WIN32
-# define GTEST_OS_WINDOWS 1
-# ifdef _WIN32_WCE
-# define GTEST_OS_WINDOWS_MOBILE 1
-# elif defined(WINAPI_FAMILY)
-# include <winapifamily.h>
-# if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
-# define GTEST_OS_WINDOWS_DESKTOP 1
-# elif WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_PHONE_APP)
-# define GTEST_OS_WINDOWS_PHONE 1
-# elif WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
-# define GTEST_OS_WINDOWS_RT 1
+#elif defined _WIN32
+# define GTEST_OS_WINDOWS 1
+# ifdef _WIN32_WCE
+# define GTEST_OS_WINDOWS_MOBILE 1
+# elif defined(WINAPI_FAMILY)
+# include <winapifamily.h>
+# if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+# define GTEST_OS_WINDOWS_DESKTOP 1
+# elif WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_PHONE_APP)
+# define GTEST_OS_WINDOWS_PHONE 1
+# elif WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
+# define GTEST_OS_WINDOWS_RT 1
# elif WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_TV_TITLE)
# define GTEST_OS_WINDOWS_PHONE 1
# define GTEST_OS_WINDOWS_TV_TITLE 1
-# else
- // WINAPI_FAMILY defined but no known partition matched.
- // Default to desktop.
-# define GTEST_OS_WINDOWS_DESKTOP 1
-# endif
-# else
-# define GTEST_OS_WINDOWS_DESKTOP 1
-# endif // _WIN32_WCE
+# else
+ // WINAPI_FAMILY defined but no known partition matched.
+ // Default to desktop.
+# define GTEST_OS_WINDOWS_DESKTOP 1
+# endif
+# else
+# define GTEST_OS_WINDOWS_DESKTOP 1
+# endif // _WIN32_WCE
#elif defined __OS2__
# define GTEST_OS_OS2 1
-#elif defined __APPLE__
-# define GTEST_OS_MAC 1
+#elif defined __APPLE__
+# define GTEST_OS_MAC 1
# include <TargetConditionals.h>
-# if TARGET_OS_IPHONE
-# define GTEST_OS_IOS 1
-# endif
+# if TARGET_OS_IPHONE
+# define GTEST_OS_IOS 1
+# endif
#elif defined __DragonFly__
# define GTEST_OS_DRAGONFLY 1
-#elif defined __FreeBSD__
-# define GTEST_OS_FREEBSD 1
+#elif defined __FreeBSD__
+# define GTEST_OS_FREEBSD 1
#elif defined __Fuchsia__
# define GTEST_OS_FUCHSIA 1
#elif defined(__GLIBC__) && defined(__FreeBSD_kernel__)
# define GTEST_OS_GNU_KFREEBSD 1
-#elif defined __linux__
-# define GTEST_OS_LINUX 1
-# if defined __ANDROID__
-# define GTEST_OS_LINUX_ANDROID 1
-# endif
-#elif defined __MVS__
-# define GTEST_OS_ZOS 1
-#elif defined(__sun) && defined(__SVR4)
-# define GTEST_OS_SOLARIS 1
-#elif defined(_AIX)
-# define GTEST_OS_AIX 1
-#elif defined(__hpux)
-# define GTEST_OS_HPUX 1
-#elif defined __native_client__
-# define GTEST_OS_NACL 1
+#elif defined __linux__
+# define GTEST_OS_LINUX 1
+# if defined __ANDROID__
+# define GTEST_OS_LINUX_ANDROID 1
+# endif
+#elif defined __MVS__
+# define GTEST_OS_ZOS 1
+#elif defined(__sun) && defined(__SVR4)
+# define GTEST_OS_SOLARIS 1
+#elif defined(_AIX)
+# define GTEST_OS_AIX 1
+#elif defined(__hpux)
+# define GTEST_OS_HPUX 1
+#elif defined __native_client__
+# define GTEST_OS_NACL 1
#elif defined __NetBSD__
# define GTEST_OS_NETBSD 1
-#elif defined __OpenBSD__
-# define GTEST_OS_OPENBSD 1
-#elif defined __QNX__
-# define GTEST_OS_QNX 1
+#elif defined __OpenBSD__
+# define GTEST_OS_OPENBSD 1
+#elif defined __QNX__
+# define GTEST_OS_QNX 1
#elif defined(__HAIKU__)
#define GTEST_OS_HAIKU 1
#elif defined ESP8266
@@ -109,6 +109,6 @@
#define GTEST_OS_ESP32 1
#elif defined(__XTENSA__)
#define GTEST_OS_XTENSA 1
-#endif // __CYGWIN__
-
+#endif // __CYGWIN__
+
#endif // GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_ARCH_H_
diff --git a/contrib/restricted/googletest/googletest/include/gtest/internal/gtest-port.h b/contrib/restricted/googletest/googletest/include/gtest/internal/gtest-port.h
index 25b22b435b..5b5d8ad35d 100644
--- a/contrib/restricted/googletest/googletest/include/gtest/internal/gtest-port.h
+++ b/contrib/restricted/googletest/googletest/include/gtest/internal/gtest-port.h
@@ -1,204 +1,204 @@
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Low-level types and utilities for porting Google Test to various
-// platforms. All macros ending with _ and symbols defined in an
-// internal namespace are subject to change without notice. Code
-// outside Google Test MUST NOT USE THEM DIRECTLY. Macros that don't
-// end with _ are part of Google Test's public API and can be used by
-// code outside Google Test.
-//
-// This file is fundamental to Google Test. All other Google Test source
-// files are expected to #include this. Therefore, it cannot #include
-// any other Google Test header.
-
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Low-level types and utilities for porting Google Test to various
+// platforms. All macros ending with _ and symbols defined in an
+// internal namespace are subject to change without notice. Code
+// outside Google Test MUST NOT USE THEM DIRECTLY. Macros that don't
+// end with _ are part of Google Test's public API and can be used by
+// code outside Google Test.
+//
+// This file is fundamental to Google Test. All other Google Test source
+// files are expected to #include this. Therefore, it cannot #include
+// any other Google Test header.
+
// GOOGLETEST_CM0001 DO NOT DELETE
#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
-
-// Environment-describing macros
-// -----------------------------
-//
-// Google Test can be used in many different environments. Macros in
-// this section tell Google Test what kind of environment it is being
-// used in, such that Google Test can provide environment-specific
-// features and implementations.
-//
-// Google Test tries to automatically detect the properties of its
-// environment, so users usually don't need to worry about these
-// macros. However, the automatic detection is not perfect.
-// Sometimes it's necessary for a user to define some of the following
-// macros in the build script to override Google Test's decisions.
-//
-// If the user doesn't define a macro in the list, Google Test will
-// provide a default definition. After this header is #included, all
-// macros in this list will be defined to either 1 or 0.
-//
-// Notes to maintainers:
-// - Each macro here is a user-tweakable knob; do not grow the list
-// lightly.
-// - Use #if to key off these macros. Don't use #ifdef or "#if
-// defined(...)", which will not work as these macros are ALWAYS
-// defined.
-//
-// GTEST_HAS_CLONE - Define it to 1/0 to indicate that clone(2)
-// is/isn't available.
-// GTEST_HAS_EXCEPTIONS - Define it to 1/0 to indicate that exceptions
-// are enabled.
-// GTEST_HAS_POSIX_RE - Define it to 1/0 to indicate that POSIX regular
-// expressions are/aren't available.
-// GTEST_HAS_PTHREAD - Define it to 1/0 to indicate that <pthread.h>
-// is/isn't available.
-// GTEST_HAS_RTTI - Define it to 1/0 to indicate that RTTI is/isn't
-// enabled.
-// GTEST_HAS_STD_WSTRING - Define it to 1/0 to indicate that
-// std::wstring does/doesn't work (Google Test can
-// be used where std::wstring is unavailable).
-// GTEST_HAS_SEH - Define it to 1/0 to indicate whether the
-// compiler supports Microsoft's "Structured
-// Exception Handling".
-// GTEST_HAS_STREAM_REDIRECTION
-// - Define it to 1/0 to indicate whether the
-// platform supports I/O stream redirection using
-// dup() and dup2().
-// GTEST_LINKED_AS_SHARED_LIBRARY
-// - Define to 1 when compiling tests that use
-// Google Test as a shared library (known as
-// DLL on Windows).
-// GTEST_CREATE_SHARED_LIBRARY
-// - Define to 1 when compiling Google Test itself
-// as a shared library.
+
+// Environment-describing macros
+// -----------------------------
+//
+// Google Test can be used in many different environments. Macros in
+// this section tell Google Test what kind of environment it is being
+// used in, such that Google Test can provide environment-specific
+// features and implementations.
+//
+// Google Test tries to automatically detect the properties of its
+// environment, so users usually don't need to worry about these
+// macros. However, the automatic detection is not perfect.
+// Sometimes it's necessary for a user to define some of the following
+// macros in the build script to override Google Test's decisions.
+//
+// If the user doesn't define a macro in the list, Google Test will
+// provide a default definition. After this header is #included, all
+// macros in this list will be defined to either 1 or 0.
+//
+// Notes to maintainers:
+// - Each macro here is a user-tweakable knob; do not grow the list
+// lightly.
+// - Use #if to key off these macros. Don't use #ifdef or "#if
+// defined(...)", which will not work as these macros are ALWAYS
+// defined.
+//
+// GTEST_HAS_CLONE - Define it to 1/0 to indicate that clone(2)
+// is/isn't available.
+// GTEST_HAS_EXCEPTIONS - Define it to 1/0 to indicate that exceptions
+// are enabled.
+// GTEST_HAS_POSIX_RE - Define it to 1/0 to indicate that POSIX regular
+// expressions are/aren't available.
+// GTEST_HAS_PTHREAD - Define it to 1/0 to indicate that <pthread.h>
+// is/isn't available.
+// GTEST_HAS_RTTI - Define it to 1/0 to indicate that RTTI is/isn't
+// enabled.
+// GTEST_HAS_STD_WSTRING - Define it to 1/0 to indicate that
+// std::wstring does/doesn't work (Google Test can
+// be used where std::wstring is unavailable).
+// GTEST_HAS_SEH - Define it to 1/0 to indicate whether the
+// compiler supports Microsoft's "Structured
+// Exception Handling".
+// GTEST_HAS_STREAM_REDIRECTION
+// - Define it to 1/0 to indicate whether the
+// platform supports I/O stream redirection using
+// dup() and dup2().
+// GTEST_LINKED_AS_SHARED_LIBRARY
+// - Define to 1 when compiling tests that use
+// Google Test as a shared library (known as
+// DLL on Windows).
+// GTEST_CREATE_SHARED_LIBRARY
+// - Define to 1 when compiling Google Test itself
+// as a shared library.
// GTEST_DEFAULT_DEATH_TEST_STYLE
// - The default value of --gtest_death_test_style.
// The legacy default has been "fast" in the open
// source version since 2008. The recommended value
// is "threadsafe", and can be set in
// custom/gtest-port.h.
-
-// Platform-indicating macros
-// --------------------------
-//
-// Macros indicating the platform on which Google Test is being used
-// (a macro is defined to 1 if compiled on the given platform;
-// otherwise UNDEFINED -- it's never defined to 0.). Google Test
-// defines these macros automatically. Code outside Google Test MUST
-// NOT define them.
-//
-// GTEST_OS_AIX - IBM AIX
-// GTEST_OS_CYGWIN - Cygwin
+
+// Platform-indicating macros
+// --------------------------
+//
+// Macros indicating the platform on which Google Test is being used
+// (a macro is defined to 1 if compiled on the given platform;
+// otherwise UNDEFINED -- it's never defined to 0.). Google Test
+// defines these macros automatically. Code outside Google Test MUST
+// NOT define them.
+//
+// GTEST_OS_AIX - IBM AIX
+// GTEST_OS_CYGWIN - Cygwin
// GTEST_OS_DRAGONFLY - DragonFlyBSD
-// GTEST_OS_FREEBSD - FreeBSD
+// GTEST_OS_FREEBSD - FreeBSD
// GTEST_OS_FUCHSIA - Fuchsia
// GTEST_OS_GNU_KFREEBSD - GNU/kFreeBSD
// GTEST_OS_HAIKU - Haiku
-// GTEST_OS_HPUX - HP-UX
-// GTEST_OS_LINUX - Linux
-// GTEST_OS_LINUX_ANDROID - Google Android
-// GTEST_OS_MAC - Mac OS X
-// GTEST_OS_IOS - iOS
-// GTEST_OS_NACL - Google Native Client (NaCl)
+// GTEST_OS_HPUX - HP-UX
+// GTEST_OS_LINUX - Linux
+// GTEST_OS_LINUX_ANDROID - Google Android
+// GTEST_OS_MAC - Mac OS X
+// GTEST_OS_IOS - iOS
+// GTEST_OS_NACL - Google Native Client (NaCl)
// GTEST_OS_NETBSD - NetBSD
-// GTEST_OS_OPENBSD - OpenBSD
+// GTEST_OS_OPENBSD - OpenBSD
// GTEST_OS_OS2 - OS/2
-// GTEST_OS_QNX - QNX
-// GTEST_OS_SOLARIS - Sun Solaris
-// GTEST_OS_WINDOWS - Windows (Desktop, MinGW, or Mobile)
-// GTEST_OS_WINDOWS_DESKTOP - Windows Desktop
-// GTEST_OS_WINDOWS_MINGW - MinGW
-// GTEST_OS_WINDOWS_MOBILE - Windows Mobile
-// GTEST_OS_WINDOWS_PHONE - Windows Phone
-// GTEST_OS_WINDOWS_RT - Windows Store App/WinRT
-// GTEST_OS_ZOS - z/OS
-//
+// GTEST_OS_QNX - QNX
+// GTEST_OS_SOLARIS - Sun Solaris
+// GTEST_OS_WINDOWS - Windows (Desktop, MinGW, or Mobile)
+// GTEST_OS_WINDOWS_DESKTOP - Windows Desktop
+// GTEST_OS_WINDOWS_MINGW - MinGW
+// GTEST_OS_WINDOWS_MOBILE - Windows Mobile
+// GTEST_OS_WINDOWS_PHONE - Windows Phone
+// GTEST_OS_WINDOWS_RT - Windows Store App/WinRT
+// GTEST_OS_ZOS - z/OS
+//
// Among the platforms, Cygwin, Linux, Mac OS X, and Windows have the
-// most stable support. Since core members of the Google Test project
-// don't have access to other platforms, support for them may be less
-// stable. If you notice any problems on your platform, please notify
-// googletestframework@googlegroups.com (patches for fixing them are
-// even more welcome!).
-//
-// It is possible that none of the GTEST_OS_* macros are defined.
-
-// Feature-indicating macros
-// -------------------------
-//
-// Macros indicating which Google Test features are available (a macro
-// is defined to 1 if the corresponding feature is supported;
-// otherwise UNDEFINED -- it's never defined to 0.). Google Test
-// defines these macros automatically. Code outside Google Test MUST
-// NOT define them.
-//
-// These macros are public so that portable tests can be written.
-// Such tests typically surround code using a feature with an #if
-// which controls that code. For example:
-//
-// #if GTEST_HAS_DEATH_TEST
-// EXPECT_DEATH(DoSomethingDeadly());
-// #endif
-//
-// GTEST_HAS_DEATH_TEST - death tests
-// GTEST_HAS_TYPED_TEST - typed tests
-// GTEST_HAS_TYPED_TEST_P - type-parameterized tests
-// GTEST_IS_THREADSAFE - Google Test is thread-safe.
+// most stable support. Since core members of the Google Test project
+// don't have access to other platforms, support for them may be less
+// stable. If you notice any problems on your platform, please notify
+// googletestframework@googlegroups.com (patches for fixing them are
+// even more welcome!).
+//
+// It is possible that none of the GTEST_OS_* macros are defined.
+
+// Feature-indicating macros
+// -------------------------
+//
+// Macros indicating which Google Test features are available (a macro
+// is defined to 1 if the corresponding feature is supported;
+// otherwise UNDEFINED -- it's never defined to 0.). Google Test
+// defines these macros automatically. Code outside Google Test MUST
+// NOT define them.
+//
+// These macros are public so that portable tests can be written.
+// Such tests typically surround code using a feature with an #if
+// which controls that code. For example:
+//
+// #if GTEST_HAS_DEATH_TEST
+// EXPECT_DEATH(DoSomethingDeadly());
+// #endif
+//
+// GTEST_HAS_DEATH_TEST - death tests
+// GTEST_HAS_TYPED_TEST - typed tests
+// GTEST_HAS_TYPED_TEST_P - type-parameterized tests
+// GTEST_IS_THREADSAFE - Google Test is thread-safe.
// GOOGLETEST_CM0007 DO NOT DELETE
-// GTEST_USES_POSIX_RE - enhanced POSIX regex is used. Do not confuse with
-// GTEST_HAS_POSIX_RE (see above) which users can
-// define themselves.
-// GTEST_USES_SIMPLE_RE - our own simple regex is used;
+// GTEST_USES_POSIX_RE - enhanced POSIX regex is used. Do not confuse with
+// GTEST_HAS_POSIX_RE (see above) which users can
+// define themselves.
+// GTEST_USES_SIMPLE_RE - our own simple regex is used;
// the above RE\b(s) are mutually exclusive.
-
-// Misc public macros
-// ------------------
-//
-// GTEST_FLAG(flag_name) - references the variable corresponding to
-// the given Google Test flag.
-
-// Internal utilities
-// ------------------
-//
-// The following macros and utilities are for Google Test's INTERNAL
-// use only. Code outside Google Test MUST NOT USE THEM DIRECTLY.
-//
-// Macros for basic C++ coding:
-// GTEST_AMBIGUOUS_ELSE_BLOCKER_ - for disabling a gcc warning.
-// GTEST_ATTRIBUTE_UNUSED_ - declares that a class' instances or a
-// variable don't have to be used.
+
+// Misc public macros
+// ------------------
+//
+// GTEST_FLAG(flag_name) - references the variable corresponding to
+// the given Google Test flag.
+
+// Internal utilities
+// ------------------
+//
+// The following macros and utilities are for Google Test's INTERNAL
+// use only. Code outside Google Test MUST NOT USE THEM DIRECTLY.
+//
+// Macros for basic C++ coding:
+// GTEST_AMBIGUOUS_ELSE_BLOCKER_ - for disabling a gcc warning.
+// GTEST_ATTRIBUTE_UNUSED_ - declares that a class' instances or a
+// variable don't have to be used.
// GTEST_DISALLOW_ASSIGN_ - disables copy operator=.
-// GTEST_DISALLOW_COPY_AND_ASSIGN_ - disables copy ctor and operator=.
+// GTEST_DISALLOW_COPY_AND_ASSIGN_ - disables copy ctor and operator=.
// GTEST_DISALLOW_MOVE_ASSIGN_ - disables move operator=.
// GTEST_DISALLOW_MOVE_AND_ASSIGN_ - disables move ctor and operator=.
-// GTEST_MUST_USE_RESULT_ - declares that a function's result must be used.
-// GTEST_INTENTIONAL_CONST_COND_PUSH_ - start code section where MSVC C4127 is
-// suppressed (constant conditional).
-// GTEST_INTENTIONAL_CONST_COND_POP_ - finish code section where MSVC C4127
-// is suppressed.
+// GTEST_MUST_USE_RESULT_ - declares that a function's result must be used.
+// GTEST_INTENTIONAL_CONST_COND_PUSH_ - start code section where MSVC C4127 is
+// suppressed (constant conditional).
+// GTEST_INTENTIONAL_CONST_COND_POP_ - finish code section where MSVC C4127
+// is suppressed.
// GTEST_INTERNAL_HAS_ANY - for enabling UniversalPrinter<std::any> or
// UniversalPrinter<absl::any> specializations.
// GTEST_INTERNAL_HAS_OPTIONAL - for enabling UniversalPrinter<std::optional>
@@ -211,119 +211,119 @@
// GTEST_INTERNAL_HAS_VARIANT - for enabling UniversalPrinter<std::variant> or
// UniversalPrinter<absl::variant>
// specializations.
-//
-// Synchronization:
-// Mutex, MutexLock, ThreadLocal, GetThreadCount()
-// - synchronization primitives.
-//
-// Regular expressions:
-// RE - a simple regular expression class using the POSIX
+//
+// Synchronization:
+// Mutex, MutexLock, ThreadLocal, GetThreadCount()
+// - synchronization primitives.
+//
+// Regular expressions:
+// RE - a simple regular expression class using the POSIX
// Extended Regular Expression syntax on UNIX-like platforms
// GOOGLETEST_CM0008 DO NOT DELETE
// or a reduced regular exception syntax on other
// platforms, including Windows.
-// Logging:
-// GTEST_LOG_() - logs messages at the specified severity level.
-// LogToStderr() - directs all log messages to stderr.
-// FlushInfoLog() - flushes informational log messages.
-//
-// Stdout and stderr capturing:
-// CaptureStdout() - starts capturing stdout.
-// GetCapturedStdout() - stops capturing stdout and returns the captured
-// string.
-// CaptureStderr() - starts capturing stderr.
-// GetCapturedStderr() - stops capturing stderr and returns the captured
-// string.
-//
-// Integer types:
-// TypeWithSize - maps an integer to a int type.
+// Logging:
+// GTEST_LOG_() - logs messages at the specified severity level.
+// LogToStderr() - directs all log messages to stderr.
+// FlushInfoLog() - flushes informational log messages.
+//
+// Stdout and stderr capturing:
+// CaptureStdout() - starts capturing stdout.
+// GetCapturedStdout() - stops capturing stdout and returns the captured
+// string.
+// CaptureStderr() - starts capturing stderr.
+// GetCapturedStderr() - stops capturing stderr and returns the captured
+// string.
+//
+// Integer types:
+// TypeWithSize - maps an integer to a int type.
// TimeInMillis - integers of known sizes.
-// BiggestInt - the biggest signed integer type.
-//
-// Command-line utilities:
-// GTEST_DECLARE_*() - declares a flag.
-// GTEST_DEFINE_*() - defines a flag.
-// GetInjectableArgvs() - returns the command line as a vector of strings.
-//
-// Environment variable utilities:
-// GetEnv() - gets the value of an environment variable.
-// BoolFromGTestEnv() - parses a bool environment variable.
+// BiggestInt - the biggest signed integer type.
+//
+// Command-line utilities:
+// GTEST_DECLARE_*() - declares a flag.
+// GTEST_DEFINE_*() - defines a flag.
+// GetInjectableArgvs() - returns the command line as a vector of strings.
+//
+// Environment variable utilities:
+// GetEnv() - gets the value of an environment variable.
+// BoolFromGTestEnv() - parses a bool environment variable.
// Int32FromGTestEnv() - parses an int32_t environment variable.
-// StringFromGTestEnv() - parses a string environment variable.
+// StringFromGTestEnv() - parses a string environment variable.
//
// Deprecation warnings:
// GTEST_INTERNAL_DEPRECATED(message) - attribute marking a function as
// deprecated; calling a marked function
// should generate a compiler warning
-
-#include <ctype.h> // for isspace, etc
-#include <stddef.h> // for ptrdiff_t
+
+#include <ctype.h> // for isspace, etc
+#include <stddef.h> // for ptrdiff_t
#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
+#include <stdlib.h>
+#include <string.h>
#include <cerrno>
#include <cstdint>
#include <limits>
#include <type_traits>
-#ifndef _WIN32_WCE
-# include <sys/types.h>
-# include <sys/stat.h>
-#endif // !_WIN32_WCE
-
-#if defined __APPLE__
-# include <AvailabilityMacros.h>
-# include <TargetConditionals.h>
-#endif
-
+#ifndef _WIN32_WCE
+# include <sys/types.h>
+# include <sys/stat.h>
+#endif // !_WIN32_WCE
+
+#if defined __APPLE__
+# include <AvailabilityMacros.h>
+# include <TargetConditionals.h>
+#endif
+
#include <iostream> // NOLINT
#include <locale>
#include <memory>
#include <string> // NOLINT
#include <tuple>
-#include <vector> // NOLINT
-
+#include <vector> // NOLINT
+
#include "gtest/internal/custom/gtest-port.h"
-#include "gtest/internal/gtest-port-arch.h"
-
-#if !defined(GTEST_DEV_EMAIL_)
-# define GTEST_DEV_EMAIL_ "googletestframework@@googlegroups.com"
-# define GTEST_FLAG_PREFIX_ "gtest_"
-# define GTEST_FLAG_PREFIX_DASH_ "gtest-"
-# define GTEST_FLAG_PREFIX_UPPER_ "GTEST_"
-# define GTEST_NAME_ "Google Test"
-# define GTEST_PROJECT_URL_ "https://github.com/google/googletest/"
-#endif // !defined(GTEST_DEV_EMAIL_)
-
-#if !defined(GTEST_INIT_GOOGLE_TEST_NAME_)
-# define GTEST_INIT_GOOGLE_TEST_NAME_ "testing::InitGoogleTest"
-#endif // !defined(GTEST_INIT_GOOGLE_TEST_NAME_)
-
-// Determines the version of gcc that is used to compile this.
-#ifdef __GNUC__
-// 40302 means version 4.3.2.
-# define GTEST_GCC_VER_ \
- (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__)
-#endif // __GNUC__
-
-// Macros for disabling Microsoft Visual C++ warnings.
-//
-// GTEST_DISABLE_MSC_WARNINGS_PUSH_(4800 4385)
-// /* code that triggers warnings C4800 and C4385 */
-// GTEST_DISABLE_MSC_WARNINGS_POP_()
+#include "gtest/internal/gtest-port-arch.h"
+
+#if !defined(GTEST_DEV_EMAIL_)
+# define GTEST_DEV_EMAIL_ "googletestframework@@googlegroups.com"
+# define GTEST_FLAG_PREFIX_ "gtest_"
+# define GTEST_FLAG_PREFIX_DASH_ "gtest-"
+# define GTEST_FLAG_PREFIX_UPPER_ "GTEST_"
+# define GTEST_NAME_ "Google Test"
+# define GTEST_PROJECT_URL_ "https://github.com/google/googletest/"
+#endif // !defined(GTEST_DEV_EMAIL_)
+
+#if !defined(GTEST_INIT_GOOGLE_TEST_NAME_)
+# define GTEST_INIT_GOOGLE_TEST_NAME_ "testing::InitGoogleTest"
+#endif // !defined(GTEST_INIT_GOOGLE_TEST_NAME_)
+
+// Determines the version of gcc that is used to compile this.
+#ifdef __GNUC__
+// 40302 means version 4.3.2.
+# define GTEST_GCC_VER_ \
+ (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__)
+#endif // __GNUC__
+
+// Macros for disabling Microsoft Visual C++ warnings.
+//
+// GTEST_DISABLE_MSC_WARNINGS_PUSH_(4800 4385)
+// /* code that triggers warnings C4800 and C4385 */
+// GTEST_DISABLE_MSC_WARNINGS_POP_()
#if defined(_MSC_VER)
-# define GTEST_DISABLE_MSC_WARNINGS_PUSH_(warnings) \
- __pragma(warning(push)) \
- __pragma(warning(disable: warnings))
-# define GTEST_DISABLE_MSC_WARNINGS_POP_() \
- __pragma(warning(pop))
-#else
+# define GTEST_DISABLE_MSC_WARNINGS_PUSH_(warnings) \
+ __pragma(warning(push)) \
+ __pragma(warning(disable: warnings))
+# define GTEST_DISABLE_MSC_WARNINGS_POP_() \
+ __pragma(warning(pop))
+#else
// Not all compilers are MSVC
-# define GTEST_DISABLE_MSC_WARNINGS_PUSH_(warnings)
-# define GTEST_DISABLE_MSC_WARNINGS_POP_()
-#endif
-
+# define GTEST_DISABLE_MSC_WARNINGS_PUSH_(warnings)
+# define GTEST_DISABLE_MSC_WARNINGS_POP_()
+#endif
+
// Clang on Windows does not understand MSVC's pragma warning.
// We need clang-specific way to disable function deprecation warning.
#ifdef __clang__
@@ -338,97 +338,97 @@
GTEST_DISABLE_MSC_WARNINGS_PUSH_(4996)
# define GTEST_DISABLE_MSC_DEPRECATED_POP_() \
GTEST_DISABLE_MSC_WARNINGS_POP_()
-#endif
-
-// Brings in definitions for functions used in the testing::internal::posix
-// namespace (read, write, close, chdir, isatty, stat). We do not currently
-// use them on Windows Mobile.
-#if GTEST_OS_WINDOWS
-# if !GTEST_OS_WINDOWS_MOBILE
-# include <direct.h>
-# include <io.h>
-# endif
-// In order to avoid having to include <windows.h>, use forward declaration
+#endif
+
+// Brings in definitions for functions used in the testing::internal::posix
+// namespace (read, write, close, chdir, isatty, stat). We do not currently
+// use them on Windows Mobile.
+#if GTEST_OS_WINDOWS
+# if !GTEST_OS_WINDOWS_MOBILE
+# include <direct.h>
+# include <io.h>
+# endif
+// In order to avoid having to include <windows.h>, use forward declaration
#if GTEST_OS_WINDOWS_MINGW && !defined(__MINGW64_VERSION_MAJOR)
// MinGW defined _CRITICAL_SECTION and _RTL_CRITICAL_SECTION as two
// separate (equivalent) structs, instead of using typedef
typedef struct _CRITICAL_SECTION GTEST_CRITICAL_SECTION;
#else
// Assume CRITICAL_SECTION is a typedef of _RTL_CRITICAL_SECTION.
-// This assumption is verified by
-// WindowsTypesTest.CRITICAL_SECTIONIs_RTL_CRITICAL_SECTION.
+// This assumption is verified by
+// WindowsTypesTest.CRITICAL_SECTIONIs_RTL_CRITICAL_SECTION.
typedef struct _RTL_CRITICAL_SECTION GTEST_CRITICAL_SECTION;
#endif
#elif GTEST_OS_XTENSA
#include <unistd.h>
// Xtensa toolchains define strcasecmp in the string.h header instead of
// strings.h. string.h is already included.
-#else
-// This assumes that non-Windows OSes provide unistd.h. For OSes where this
-// is not the case, we need to include headers that provide the functions
-// mentioned above.
-# include <unistd.h>
-# include <strings.h>
-#endif // GTEST_OS_WINDOWS
-
-#if GTEST_OS_LINUX_ANDROID
-// Used to define __ANDROID_API__ matching the target NDK API level.
-# include <android/api-level.h> // NOLINT
-#endif
-
+#else
+// This assumes that non-Windows OSes provide unistd.h. For OSes where this
+// is not the case, we need to include headers that provide the functions
+// mentioned above.
+# include <unistd.h>
+# include <strings.h>
+#endif // GTEST_OS_WINDOWS
+
+#if GTEST_OS_LINUX_ANDROID
+// Used to define __ANDROID_API__ matching the target NDK API level.
+# include <android/api-level.h> // NOLINT
+#endif
+
// Defines this to true if and only if Google Test can use POSIX regular
// expressions.
-#ifndef GTEST_HAS_POSIX_RE
-# if GTEST_OS_LINUX_ANDROID
-// On Android, <regex.h> is only available starting with Gingerbread.
-# define GTEST_HAS_POSIX_RE (__ANDROID_API__ >= 9)
-# else
+#ifndef GTEST_HAS_POSIX_RE
+# if GTEST_OS_LINUX_ANDROID
+// On Android, <regex.h> is only available starting with Gingerbread.
+# define GTEST_HAS_POSIX_RE (__ANDROID_API__ >= 9)
+# else
#define GTEST_HAS_POSIX_RE (!GTEST_OS_WINDOWS && !GTEST_OS_XTENSA)
-# endif
-#endif
-
-#if GTEST_USES_PCRE
-// The appropriate headers have already been included.
-
-#elif GTEST_HAS_POSIX_RE
-
-// On some platforms, <regex.h> needs someone to define size_t, and
-// won't compile otherwise. We can #include it here as we already
-// included <stdlib.h>, which is guaranteed to define size_t through
-// <stddef.h>.
+# endif
+#endif
+
+#if GTEST_USES_PCRE
+// The appropriate headers have already been included.
+
+#elif GTEST_HAS_POSIX_RE
+
+// On some platforms, <regex.h> needs someone to define size_t, and
+// won't compile otherwise. We can #include it here as we already
+// included <stdlib.h>, which is guaranteed to define size_t through
+// <stddef.h>.
# error #include <regex.h> // NOLINT
-
-# define GTEST_USES_POSIX_RE 1
-
-#elif GTEST_OS_WINDOWS
-
-// <regex.h> is not available on Windows. Use our own simple regex
-// implementation instead.
-# define GTEST_USES_SIMPLE_RE 1
-
-#else
-
-// <regex.h> may not be available on this platform. Use our own
-// simple regex implementation instead.
-# define GTEST_USES_SIMPLE_RE 1
-
-#endif // GTEST_USES_PCRE
-
-#ifndef GTEST_HAS_EXCEPTIONS
-// The user didn't tell us whether exceptions are enabled, so we need
-// to figure it out.
+
+# define GTEST_USES_POSIX_RE 1
+
+#elif GTEST_OS_WINDOWS
+
+// <regex.h> is not available on Windows. Use our own simple regex
+// implementation instead.
+# define GTEST_USES_SIMPLE_RE 1
+
+#else
+
+// <regex.h> may not be available on this platform. Use our own
+// simple regex implementation instead.
+# define GTEST_USES_SIMPLE_RE 1
+
+#endif // GTEST_USES_PCRE
+
+#ifndef GTEST_HAS_EXCEPTIONS
+// The user didn't tell us whether exceptions are enabled, so we need
+// to figure it out.
# if defined(_MSC_VER) && defined(_CPPUNWIND)
// MSVC defines _CPPUNWIND to 1 if and only if exceptions are enabled.
# define GTEST_HAS_EXCEPTIONS 1
# elif defined(__BORLANDC__)
// C++Builder's implementation of the STL uses the _HAS_EXCEPTIONS
-// macro to enable exceptions, so we'll do the same.
-// Assumes that exceptions are enabled by default.
-# ifndef _HAS_EXCEPTIONS
-# define _HAS_EXCEPTIONS 1
-# endif // _HAS_EXCEPTIONS
-# define GTEST_HAS_EXCEPTIONS _HAS_EXCEPTIONS
-# elif defined(__clang__)
+// macro to enable exceptions, so we'll do the same.
+// Assumes that exceptions are enabled by default.
+# ifndef _HAS_EXCEPTIONS
+# define _HAS_EXCEPTIONS 1
+# endif // _HAS_EXCEPTIONS
+# define GTEST_HAS_EXCEPTIONS _HAS_EXCEPTIONS
+# elif defined(__clang__)
// clang defines __EXCEPTIONS if and only if exceptions are enabled before clang
// 220714, but if and only if cleanups are enabled after that. In Obj-C++ files,
// there can be cleanups for ObjC exceptions which also need cleanups, even if
@@ -436,239 +436,239 @@ typedef struct _RTL_CRITICAL_SECTION GTEST_CRITICAL_SECTION;
// checks for C++ exceptions starting at clang r206352, but which checked for
// cleanups prior to that. To reliably check for C++ exception availability with
// clang, check for
-// __EXCEPTIONS && __has_feature(cxx_exceptions).
-# define GTEST_HAS_EXCEPTIONS (__EXCEPTIONS && __has_feature(cxx_exceptions))
-# elif defined(__GNUC__) && __EXCEPTIONS
+// __EXCEPTIONS && __has_feature(cxx_exceptions).
+# define GTEST_HAS_EXCEPTIONS (__EXCEPTIONS && __has_feature(cxx_exceptions))
+# elif defined(__GNUC__) && __EXCEPTIONS
// gcc defines __EXCEPTIONS to 1 if and only if exceptions are enabled.
-# define GTEST_HAS_EXCEPTIONS 1
-# elif defined(__SUNPRO_CC)
-// Sun Pro CC supports exceptions. However, there is no compile-time way of
-// detecting whether they are enabled or not. Therefore, we assume that
-// they are enabled unless the user tells us otherwise.
-# define GTEST_HAS_EXCEPTIONS 1
-# elif defined(__IBMCPP__) && __EXCEPTIONS
+# define GTEST_HAS_EXCEPTIONS 1
+# elif defined(__SUNPRO_CC)
+// Sun Pro CC supports exceptions. However, there is no compile-time way of
+// detecting whether they are enabled or not. Therefore, we assume that
+// they are enabled unless the user tells us otherwise.
+# define GTEST_HAS_EXCEPTIONS 1
+# elif defined(__IBMCPP__) && __EXCEPTIONS
// xlC defines __EXCEPTIONS to 1 if and only if exceptions are enabled.
-# define GTEST_HAS_EXCEPTIONS 1
-# elif defined(__HP_aCC)
-// Exception handling is in effect by default in HP aCC compiler. It has to
-// be turned of by +noeh compiler option if desired.
-# define GTEST_HAS_EXCEPTIONS 1
-# else
-// For other compilers, we assume exceptions are disabled to be
-// conservative.
-# define GTEST_HAS_EXCEPTIONS 0
-# endif // defined(_MSC_VER) || defined(__BORLANDC__)
-#endif // GTEST_HAS_EXCEPTIONS
-
-#ifndef GTEST_HAS_STD_WSTRING
-// The user didn't tell us whether ::std::wstring is available, so we need
-// to figure it out.
-// Cygwin 1.7 and below doesn't support ::std::wstring.
-// Solaris' libc++ doesn't support it either. Android has
-// no support for it at least as recent as Froyo (2.2).
+# define GTEST_HAS_EXCEPTIONS 1
+# elif defined(__HP_aCC)
+// Exception handling is in effect by default in HP aCC compiler. It has to
+// be turned of by +noeh compiler option if desired.
+# define GTEST_HAS_EXCEPTIONS 1
+# else
+// For other compilers, we assume exceptions are disabled to be
+// conservative.
+# define GTEST_HAS_EXCEPTIONS 0
+# endif // defined(_MSC_VER) || defined(__BORLANDC__)
+#endif // GTEST_HAS_EXCEPTIONS
+
+#ifndef GTEST_HAS_STD_WSTRING
+// The user didn't tell us whether ::std::wstring is available, so we need
+// to figure it out.
+// Cygwin 1.7 and below doesn't support ::std::wstring.
+// Solaris' libc++ doesn't support it either. Android has
+// no support for it at least as recent as Froyo (2.2).
#define GTEST_HAS_STD_WSTRING \
(!(GTEST_OS_LINUX_ANDROID || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS || \
GTEST_OS_HAIKU || GTEST_OS_ESP32 || GTEST_OS_ESP8266 || GTEST_OS_XTENSA))
-
-#endif // GTEST_HAS_STD_WSTRING
-
-// Determines whether RTTI is available.
-#ifndef GTEST_HAS_RTTI
-// The user didn't tell us whether RTTI is enabled, so we need to
-// figure it out.
-
-# ifdef _MSC_VER
-
+
+#endif // GTEST_HAS_STD_WSTRING
+
+// Determines whether RTTI is available.
+#ifndef GTEST_HAS_RTTI
+// The user didn't tell us whether RTTI is enabled, so we need to
+// figure it out.
+
+# ifdef _MSC_VER
+
#ifdef _CPPRTTI // MSVC defines this macro if and only if RTTI is enabled.
-# define GTEST_HAS_RTTI 1
-# else
-# define GTEST_HAS_RTTI 0
-# endif
-
+# define GTEST_HAS_RTTI 1
+# else
+# define GTEST_HAS_RTTI 0
+# endif
+
// Starting with version 4.3.2, gcc defines __GXX_RTTI if and only if RTTI is
// enabled.
# elif defined(__GNUC__)
-
-# ifdef __GXX_RTTI
-// When building against STLport with the Android NDK and with
-// -frtti -fno-exceptions, the build fails at link time with undefined
-// references to __cxa_bad_typeid. Note sure if STL or toolchain bug,
-// so disable RTTI when detected.
-# if GTEST_OS_LINUX_ANDROID && defined(_STLPORT_MAJOR) && \
- !defined(__EXCEPTIONS)
-# define GTEST_HAS_RTTI 0
-# else
-# define GTEST_HAS_RTTI 1
-# endif // GTEST_OS_LINUX_ANDROID && __STLPORT_MAJOR && !__EXCEPTIONS
-# else
-# define GTEST_HAS_RTTI 0
-# endif // __GXX_RTTI
-
-// Clang defines __GXX_RTTI starting with version 3.0, but its manual recommends
-// using has_feature instead. has_feature(cxx_rtti) is supported since 2.7, the
-// first version with C++ support.
-# elif defined(__clang__)
-
-# define GTEST_HAS_RTTI __has_feature(cxx_rtti)
-
-// Starting with version 9.0 IBM Visual Age defines __RTTI_ALL__ to 1 if
-// both the typeid and dynamic_cast features are present.
-# elif defined(__IBMCPP__) && (__IBMCPP__ >= 900)
-
-# ifdef __RTTI_ALL__
-# define GTEST_HAS_RTTI 1
-# else
-# define GTEST_HAS_RTTI 0
-# endif
-
-# else
-
-// For all other compilers, we assume RTTI is enabled.
-# define GTEST_HAS_RTTI 1
-
-# endif // _MSC_VER
-
-#endif // GTEST_HAS_RTTI
-
-// It's this header's responsibility to #include <typeinfo> when RTTI
-// is enabled.
-#if GTEST_HAS_RTTI
-# include <typeinfo>
-#endif
-
-// Determines whether Google Test can use the pthreads library.
-#ifndef GTEST_HAS_PTHREAD
-// The user didn't tell us explicitly, so we make reasonable assumptions about
-// which platforms have pthreads support.
-//
-// To disable threading support in Google Test, add -DGTEST_HAS_PTHREAD=0
-// to your compiler flags.
+
+# ifdef __GXX_RTTI
+// When building against STLport with the Android NDK and with
+// -frtti -fno-exceptions, the build fails at link time with undefined
+// references to __cxa_bad_typeid. Note sure if STL or toolchain bug,
+// so disable RTTI when detected.
+# if GTEST_OS_LINUX_ANDROID && defined(_STLPORT_MAJOR) && \
+ !defined(__EXCEPTIONS)
+# define GTEST_HAS_RTTI 0
+# else
+# define GTEST_HAS_RTTI 1
+# endif // GTEST_OS_LINUX_ANDROID && __STLPORT_MAJOR && !__EXCEPTIONS
+# else
+# define GTEST_HAS_RTTI 0
+# endif // __GXX_RTTI
+
+// Clang defines __GXX_RTTI starting with version 3.0, but its manual recommends
+// using has_feature instead. has_feature(cxx_rtti) is supported since 2.7, the
+// first version with C++ support.
+# elif defined(__clang__)
+
+# define GTEST_HAS_RTTI __has_feature(cxx_rtti)
+
+// Starting with version 9.0 IBM Visual Age defines __RTTI_ALL__ to 1 if
+// both the typeid and dynamic_cast features are present.
+# elif defined(__IBMCPP__) && (__IBMCPP__ >= 900)
+
+# ifdef __RTTI_ALL__
+# define GTEST_HAS_RTTI 1
+# else
+# define GTEST_HAS_RTTI 0
+# endif
+
+# else
+
+// For all other compilers, we assume RTTI is enabled.
+# define GTEST_HAS_RTTI 1
+
+# endif // _MSC_VER
+
+#endif // GTEST_HAS_RTTI
+
+// It's this header's responsibility to #include <typeinfo> when RTTI
+// is enabled.
+#if GTEST_HAS_RTTI
+# include <typeinfo>
+#endif
+
+// Determines whether Google Test can use the pthreads library.
+#ifndef GTEST_HAS_PTHREAD
+// The user didn't tell us explicitly, so we make reasonable assumptions about
+// which platforms have pthreads support.
+//
+// To disable threading support in Google Test, add -DGTEST_HAS_PTHREAD=0
+// to your compiler flags.
#define GTEST_HAS_PTHREAD \
(GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_HPUX || GTEST_OS_QNX || \
GTEST_OS_FREEBSD || GTEST_OS_NACL || GTEST_OS_NETBSD || GTEST_OS_FUCHSIA || \
GTEST_OS_DRAGONFLY || GTEST_OS_GNU_KFREEBSD || GTEST_OS_OPENBSD || \
GTEST_OS_HAIKU)
-#endif // GTEST_HAS_PTHREAD
-
-#if GTEST_HAS_PTHREAD
-// gtest-port.h guarantees to #include <pthread.h> when GTEST_HAS_PTHREAD is
-// true.
-# include <pthread.h> // NOLINT
-
-// For timespec and nanosleep, used below.
-# include <time.h> // NOLINT
-#endif
-
-// Determines whether clone(2) is supported.
-// Usually it will only be available on Linux, excluding
-// Linux on the Itanium architecture.
-// Also see http://linux.die.net/man/2/clone.
-#ifndef GTEST_HAS_CLONE
-// The user didn't tell us, so we need to figure it out.
-
-# if GTEST_OS_LINUX && !defined(__ia64__)
-# if GTEST_OS_LINUX_ANDROID
+#endif // GTEST_HAS_PTHREAD
+
+#if GTEST_HAS_PTHREAD
+// gtest-port.h guarantees to #include <pthread.h> when GTEST_HAS_PTHREAD is
+// true.
+# include <pthread.h> // NOLINT
+
+// For timespec and nanosleep, used below.
+# include <time.h> // NOLINT
+#endif
+
+// Determines whether clone(2) is supported.
+// Usually it will only be available on Linux, excluding
+// Linux on the Itanium architecture.
+// Also see http://linux.die.net/man/2/clone.
+#ifndef GTEST_HAS_CLONE
+// The user didn't tell us, so we need to figure it out.
+
+# if GTEST_OS_LINUX && !defined(__ia64__)
+# if GTEST_OS_LINUX_ANDROID
// On Android, clone() became available at different API levels for each 32-bit
// architecture.
# if defined(__LP64__) || \
(defined(__arm__) && __ANDROID_API__ >= 9) || \
(defined(__mips__) && __ANDROID_API__ >= 12) || \
(defined(__i386__) && __ANDROID_API__ >= 17)
-# define GTEST_HAS_CLONE 1
-# else
-# define GTEST_HAS_CLONE 0
-# endif
-# else
-# define GTEST_HAS_CLONE 1
-# endif
-# else
-# define GTEST_HAS_CLONE 0
-# endif // GTEST_OS_LINUX && !defined(__ia64__)
-
-#endif // GTEST_HAS_CLONE
-
-// Determines whether to support stream redirection. This is used to test
-// output correctness and to implement death tests.
-#ifndef GTEST_HAS_STREAM_REDIRECTION
-// By default, we assume that stream redirection is supported on all
-// platforms except known mobile ones.
+# define GTEST_HAS_CLONE 1
+# else
+# define GTEST_HAS_CLONE 0
+# endif
+# else
+# define GTEST_HAS_CLONE 1
+# endif
+# else
+# define GTEST_HAS_CLONE 0
+# endif // GTEST_OS_LINUX && !defined(__ia64__)
+
+#endif // GTEST_HAS_CLONE
+
+// Determines whether to support stream redirection. This is used to test
+// output correctness and to implement death tests.
+#ifndef GTEST_HAS_STREAM_REDIRECTION
+// By default, we assume that stream redirection is supported on all
+// platforms except known mobile ones.
#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_WINDOWS_PHONE || \
GTEST_OS_WINDOWS_RT || GTEST_OS_ESP8266 || GTEST_OS_XTENSA
-# define GTEST_HAS_STREAM_REDIRECTION 0
-# else
-# define GTEST_HAS_STREAM_REDIRECTION 1
+# define GTEST_HAS_STREAM_REDIRECTION 0
+# else
+# define GTEST_HAS_STREAM_REDIRECTION 1
# endif // !GTEST_OS_WINDOWS_MOBILE
-#endif // GTEST_HAS_STREAM_REDIRECTION
-
-// Determines whether to support death tests.
-// pops up a dialog window that cannot be suppressed programmatically.
+#endif // GTEST_HAS_STREAM_REDIRECTION
+
+// Determines whether to support death tests.
+// pops up a dialog window that cannot be suppressed programmatically.
#if (GTEST_OS_LINUX || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS || \
(GTEST_OS_MAC && !GTEST_OS_IOS) || \
(GTEST_OS_WINDOWS_DESKTOP && _MSC_VER) || GTEST_OS_WINDOWS_MINGW || \
GTEST_OS_AIX || GTEST_OS_HPUX || GTEST_OS_OPENBSD || GTEST_OS_QNX || \
GTEST_OS_FREEBSD || GTEST_OS_NETBSD || GTEST_OS_FUCHSIA || \
GTEST_OS_DRAGONFLY || GTEST_OS_GNU_KFREEBSD || GTEST_OS_HAIKU)
-# define GTEST_HAS_DEATH_TEST 1
-#endif
-
-// Determines whether to support type-driven tests.
-
-// Typed tests need <typeinfo> and variadic macros, which GCC, VC++ 8.0,
-// Sun Pro CC, IBM Visual Age, and HP aCC support.
+# define GTEST_HAS_DEATH_TEST 1
+#endif
+
+// Determines whether to support type-driven tests.
+
+// Typed tests need <typeinfo> and variadic macros, which GCC, VC++ 8.0,
+// Sun Pro CC, IBM Visual Age, and HP aCC support.
#if defined(__GNUC__) || defined(_MSC_VER) || defined(__SUNPRO_CC) || \
- defined(__IBMCPP__) || defined(__HP_aCC)
-# define GTEST_HAS_TYPED_TEST 1
-# define GTEST_HAS_TYPED_TEST_P 1
-#endif
-
-// Determines whether the system compiler uses UTF-16 for encoding wide strings.
-#define GTEST_WIDE_STRING_USES_UTF16_ \
+ defined(__IBMCPP__) || defined(__HP_aCC)
+# define GTEST_HAS_TYPED_TEST 1
+# define GTEST_HAS_TYPED_TEST_P 1
+#endif
+
+// Determines whether the system compiler uses UTF-16 for encoding wide strings.
+#define GTEST_WIDE_STRING_USES_UTF16_ \
(GTEST_OS_WINDOWS || GTEST_OS_CYGWIN || GTEST_OS_AIX || GTEST_OS_OS2)
-
-// Determines whether test results can be streamed to a socket.
+
+// Determines whether test results can be streamed to a socket.
#if GTEST_OS_LINUX || GTEST_OS_GNU_KFREEBSD || GTEST_OS_DRAGONFLY || \
GTEST_OS_FREEBSD || GTEST_OS_NETBSD || GTEST_OS_OPENBSD
-# define GTEST_CAN_STREAM_RESULTS_ 1
-#endif
-
-// Defines some utility macros.
-
-// The GNU compiler emits a warning if nested "if" statements are followed by
-// an "else" statement and braces are not used to explicitly disambiguate the
-// "else" binding. This leads to problems with code like:
-//
-// if (gate)
-// ASSERT_*(condition) << "Some message";
-//
-// The "switch (0) case 0:" idiom is used to suppress this.
-#ifdef __INTEL_COMPILER
-# define GTEST_AMBIGUOUS_ELSE_BLOCKER_
-#else
-# define GTEST_AMBIGUOUS_ELSE_BLOCKER_ switch (0) case 0: default: // NOLINT
-#endif
-
-// Use this annotation at the end of a struct/class definition to
-// prevent the compiler from optimizing away instances that are never
-// used. This is useful when all interesting logic happens inside the
-// c'tor and / or d'tor. Example:
-//
-// struct Foo {
-// Foo() { ... }
-// } GTEST_ATTRIBUTE_UNUSED_;
-//
-// Also use it after a variable or parameter declaration to tell the
-// compiler the variable/parameter does not have to be used.
-#if defined(__GNUC__) && !defined(COMPILER_ICC)
-# define GTEST_ATTRIBUTE_UNUSED_ __attribute__ ((unused))
-#elif defined(__clang__)
-# if __has_attribute(unused)
-# define GTEST_ATTRIBUTE_UNUSED_ __attribute__ ((unused))
-# endif
-#endif
-#ifndef GTEST_ATTRIBUTE_UNUSED_
-# define GTEST_ATTRIBUTE_UNUSED_
-#endif
-
+# define GTEST_CAN_STREAM_RESULTS_ 1
+#endif
+
+// Defines some utility macros.
+
+// The GNU compiler emits a warning if nested "if" statements are followed by
+// an "else" statement and braces are not used to explicitly disambiguate the
+// "else" binding. This leads to problems with code like:
+//
+// if (gate)
+// ASSERT_*(condition) << "Some message";
+//
+// The "switch (0) case 0:" idiom is used to suppress this.
+#ifdef __INTEL_COMPILER
+# define GTEST_AMBIGUOUS_ELSE_BLOCKER_
+#else
+# define GTEST_AMBIGUOUS_ELSE_BLOCKER_ switch (0) case 0: default: // NOLINT
+#endif
+
+// Use this annotation at the end of a struct/class definition to
+// prevent the compiler from optimizing away instances that are never
+// used. This is useful when all interesting logic happens inside the
+// c'tor and / or d'tor. Example:
+//
+// struct Foo {
+// Foo() { ... }
+// } GTEST_ATTRIBUTE_UNUSED_;
+//
+// Also use it after a variable or parameter declaration to tell the
+// compiler the variable/parameter does not have to be used.
+#if defined(__GNUC__) && !defined(COMPILER_ICC)
+# define GTEST_ATTRIBUTE_UNUSED_ __attribute__ ((unused))
+#elif defined(__clang__)
+# if __has_attribute(unused)
+# define GTEST_ATTRIBUTE_UNUSED_ __attribute__ ((unused))
+# endif
+#endif
+#ifndef GTEST_ATTRIBUTE_UNUSED_
+# define GTEST_ATTRIBUTE_UNUSED_
+#endif
+
// Use this annotation before a function that takes a printf format string.
#if (defined(__GNUC__) || defined(__clang__)) && !defined(COMPILER_ICC)
# if defined(__MINGW_PRINTF_FORMAT)
@@ -688,16 +688,16 @@ typedef struct _RTL_CRITICAL_SECTION GTEST_CRITICAL_SECTION;
// A macro to disallow copy operator=
-// This should be used in the private: declarations for a class.
+// This should be used in the private: declarations for a class.
#define GTEST_DISALLOW_ASSIGN_(type) \
type& operator=(type const &) = delete
-
-// A macro to disallow copy constructor and operator=
-// This should be used in the private: declarations for a class.
+
+// A macro to disallow copy constructor and operator=
+// This should be used in the private: declarations for a class.
#define GTEST_DISALLOW_COPY_AND_ASSIGN_(type) \
type(type const&) = delete; \
type& operator=(type const&) = delete
-
+
// A macro to disallow move operator=
// This should be used in the private: declarations for a class.
#define GTEST_DISALLOW_MOVE_ASSIGN_(type) \
@@ -709,46 +709,46 @@ typedef struct _RTL_CRITICAL_SECTION GTEST_CRITICAL_SECTION;
type(type&&) noexcept = delete; \
type& operator=(type&&) noexcept = delete
-// Tell the compiler to warn about unused return values for functions declared
-// with this macro. The macro should be used on function declarations
-// following the argument list:
-//
-// Sprocket* AllocateSprocket() GTEST_MUST_USE_RESULT_;
+// Tell the compiler to warn about unused return values for functions declared
+// with this macro. The macro should be used on function declarations
+// following the argument list:
+//
+// Sprocket* AllocateSprocket() GTEST_MUST_USE_RESULT_;
#if defined(__GNUC__) && !defined(COMPILER_ICC)
-# define GTEST_MUST_USE_RESULT_ __attribute__ ((warn_unused_result))
-#else
-# define GTEST_MUST_USE_RESULT_
+# define GTEST_MUST_USE_RESULT_ __attribute__ ((warn_unused_result))
+#else
+# define GTEST_MUST_USE_RESULT_
#endif // __GNUC__ && !COMPILER_ICC
-
-// MS C++ compiler emits warning when a conditional expression is compile time
-// constant. In some contexts this warning is false positive and needs to be
-// suppressed. Use the following two macros in such cases:
-//
-// GTEST_INTENTIONAL_CONST_COND_PUSH_()
-// while (true) {
-// GTEST_INTENTIONAL_CONST_COND_POP_()
-// }
-# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \
- GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127)
-# define GTEST_INTENTIONAL_CONST_COND_POP_() \
- GTEST_DISABLE_MSC_WARNINGS_POP_()
-
-// Determine whether the compiler supports Microsoft's Structured Exception
-// Handling. This is supported by several Windows compilers but generally
-// does not exist on any other system.
-#ifndef GTEST_HAS_SEH
-// The user didn't tell us, so we need to figure it out.
-
-# if defined(_MSC_VER) || defined(__BORLANDC__)
-// These two compilers are known to support SEH.
-# define GTEST_HAS_SEH 1
-# else
-// Assume no SEH.
-# define GTEST_HAS_SEH 0
-# endif
-
-#endif // GTEST_HAS_SEH
-
+
+// MS C++ compiler emits warning when a conditional expression is compile time
+// constant. In some contexts this warning is false positive and needs to be
+// suppressed. Use the following two macros in such cases:
+//
+// GTEST_INTENTIONAL_CONST_COND_PUSH_()
+// while (true) {
+// GTEST_INTENTIONAL_CONST_COND_POP_()
+// }
+# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \
+ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127)
+# define GTEST_INTENTIONAL_CONST_COND_POP_() \
+ GTEST_DISABLE_MSC_WARNINGS_POP_()
+
+// Determine whether the compiler supports Microsoft's Structured Exception
+// Handling. This is supported by several Windows compilers but generally
+// does not exist on any other system.
+#ifndef GTEST_HAS_SEH
+// The user didn't tell us, so we need to figure it out.
+
+# if defined(_MSC_VER) || defined(__BORLANDC__)
+// These two compilers are known to support SEH.
+# define GTEST_HAS_SEH 1
+# else
+// Assume no SEH.
+# define GTEST_HAS_SEH 0
+# endif
+
+#endif // GTEST_HAS_SEH
+
#ifndef GTEST_IS_THREADSAFE
#define GTEST_IS_THREADSAFE \
@@ -763,67 +763,67 @@ typedef struct _RTL_CRITICAL_SECTION GTEST_CRITICAL_SECTION;
// gtest/internal/custom/gtest-port.h
#ifndef GTEST_API_
-#ifdef _MSC_VER
-# if GTEST_LINKED_AS_SHARED_LIBRARY
-# define GTEST_API_ __declspec(dllimport)
-# elif GTEST_CREATE_SHARED_LIBRARY
-# define GTEST_API_ __declspec(dllexport)
-# endif
-#elif __GNUC__ >= 4 || defined(__clang__)
-# define GTEST_API_ __attribute__((visibility ("default")))
+#ifdef _MSC_VER
+# if GTEST_LINKED_AS_SHARED_LIBRARY
+# define GTEST_API_ __declspec(dllimport)
+# elif GTEST_CREATE_SHARED_LIBRARY
+# define GTEST_API_ __declspec(dllexport)
+# endif
+#elif __GNUC__ >= 4 || defined(__clang__)
+# define GTEST_API_ __attribute__((visibility ("default")))
#endif // _MSC_VER
-
+
#endif // GTEST_API_
-#ifndef GTEST_API_
-# define GTEST_API_
+#ifndef GTEST_API_
+# define GTEST_API_
#endif // GTEST_API_
-
+
#ifndef GTEST_DEFAULT_DEATH_TEST_STYLE
# define GTEST_DEFAULT_DEATH_TEST_STYLE "fast"
#endif // GTEST_DEFAULT_DEATH_TEST_STYLE
-#ifdef __GNUC__
-// Ask the compiler to never inline a given function.
-# define GTEST_NO_INLINE_ __attribute__((noinline))
-#else
-# define GTEST_NO_INLINE_
-#endif
-
-// _LIBCPP_VERSION is defined by the libc++ library from the LLVM project.
+#ifdef __GNUC__
+// Ask the compiler to never inline a given function.
+# define GTEST_NO_INLINE_ __attribute__((noinline))
+#else
+# define GTEST_NO_INLINE_
+#endif
+
+// _LIBCPP_VERSION is defined by the libc++ library from the LLVM project.
#if !defined(GTEST_HAS_CXXABI_H_)
# if defined(__GLIBCXX__) || (defined(_LIBCPP_VERSION) && !defined(_MSC_VER))
# define GTEST_HAS_CXXABI_H_ 1
# else
# define GTEST_HAS_CXXABI_H_ 0
# endif
-#endif
-
-// A function level attribute to disable checking for use of uninitialized
-// memory when built with MemorySanitizer.
-#if defined(__clang__)
-# if __has_feature(memory_sanitizer)
-# define GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_ \
- __attribute__((no_sanitize_memory))
-# else
-# define GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
-# endif // __has_feature(memory_sanitizer)
-#else
-# define GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
-#endif // __clang__
-
-// A function level attribute to disable AddressSanitizer instrumentation.
-#if defined(__clang__)
-# if __has_feature(address_sanitizer)
-# define GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_ \
- __attribute__((no_sanitize_address))
-# else
-# define GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
-# endif // __has_feature(address_sanitizer)
-#else
-# define GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
-#endif // __clang__
-
+#endif
+
+// A function level attribute to disable checking for use of uninitialized
+// memory when built with MemorySanitizer.
+#if defined(__clang__)
+# if __has_feature(memory_sanitizer)
+# define GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_ \
+ __attribute__((no_sanitize_memory))
+# else
+# define GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
+# endif // __has_feature(memory_sanitizer)
+#else
+# define GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
+#endif // __clang__
+
+// A function level attribute to disable AddressSanitizer instrumentation.
+#if defined(__clang__)
+# if __has_feature(address_sanitizer)
+# define GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_ \
+ __attribute__((no_sanitize_address))
+# else
+# define GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
+# endif // __has_feature(address_sanitizer)
+#else
+# define GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
+#endif // __clang__
+
// A function level attribute to disable HWAddressSanitizer instrumentation.
#if defined(__clang__)
# if __has_feature(hwaddress_sanitizer)
@@ -836,22 +836,22 @@ typedef struct _RTL_CRITICAL_SECTION GTEST_CRITICAL_SECTION;
# define GTEST_ATTRIBUTE_NO_SANITIZE_HWADDRESS_
#endif // __clang__
-// A function level attribute to disable ThreadSanitizer instrumentation.
-#if defined(__clang__)
-# if __has_feature(thread_sanitizer)
-# define GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_ \
- __attribute__((no_sanitize_thread))
-# else
-# define GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_
-# endif // __has_feature(thread_sanitizer)
-#else
-# define GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_
-#endif // __clang__
-
-namespace testing {
-
-class Message;
-
+// A function level attribute to disable ThreadSanitizer instrumentation.
+#if defined(__clang__)
+# if __has_feature(thread_sanitizer)
+# define GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_ \
+ __attribute__((no_sanitize_thread))
+# else
+# define GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_
+# endif // __has_feature(thread_sanitizer)
+#else
+# define GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_
+#endif // __clang__
+
+namespace testing {
+
+class Message;
+
// Legacy imports for backwards compatibility.
// New code should use std:: names directly.
using std::get;
@@ -859,170 +859,170 @@ using std::make_tuple;
using std::tuple;
using std::tuple_element;
using std::tuple_size;
-
-namespace internal {
-
-// A secret type that Google Test users don't know about. It has no
-// definition on purpose. Therefore it's impossible to create a
-// Secret object, which is what we want.
-class Secret;
-
+
+namespace internal {
+
+// A secret type that Google Test users don't know about. It has no
+// definition on purpose. Therefore it's impossible to create a
+// Secret object, which is what we want.
+class Secret;
+
// The GTEST_COMPILE_ASSERT_ is a legacy macro used to verify that a compile
// time expression is true (in new code, use static_assert instead). For
// example, you could use it to verify the size of a static array:
-//
-// GTEST_COMPILE_ASSERT_(GTEST_ARRAY_SIZE_(names) == NUM_NAMES,
-// names_incorrect_size);
-//
+//
+// GTEST_COMPILE_ASSERT_(GTEST_ARRAY_SIZE_(names) == NUM_NAMES,
+// names_incorrect_size);
+//
// The second argument to the macro must be a valid C++ identifier. If the
// expression is false, compiler will issue an error containing this identifier.
#define GTEST_COMPILE_ASSERT_(expr, msg) static_assert(expr, #msg)
-
-// A helper for suppressing warnings on constant condition. It just
-// returns 'condition'.
-GTEST_API_ bool IsTrue(bool condition);
-
+
+// A helper for suppressing warnings on constant condition. It just
+// returns 'condition'.
+GTEST_API_ bool IsTrue(bool condition);
+
// Defines RE.
-
+
#if GTEST_USES_PCRE
// if used, PCRE is injected by custom/gtest-port.h
#elif GTEST_USES_POSIX_RE || GTEST_USES_SIMPLE_RE
-
-// A simple C++ wrapper for <regex.h>. It uses the POSIX Extended
-// Regular Expression syntax.
-class GTEST_API_ RE {
- public:
- // A copy constructor is required by the Standard to initialize object
- // references from r-values.
- RE(const RE& other) { Init(other.pattern()); }
-
- // Constructs an RE from a string.
- RE(const ::std::string& regex) { Init(regex.c_str()); } // NOLINT
-
- RE(const char* regex) { Init(regex); } // NOLINT
- ~RE();
-
- // Returns the string representation of the regex.
- const char* pattern() const { return pattern_; }
-
+
+// A simple C++ wrapper for <regex.h>. It uses the POSIX Extended
+// Regular Expression syntax.
+class GTEST_API_ RE {
+ public:
+ // A copy constructor is required by the Standard to initialize object
+ // references from r-values.
+ RE(const RE& other) { Init(other.pattern()); }
+
+ // Constructs an RE from a string.
+ RE(const ::std::string& regex) { Init(regex.c_str()); } // NOLINT
+
+ RE(const char* regex) { Init(regex); } // NOLINT
+ ~RE();
+
+ // Returns the string representation of the regex.
+ const char* pattern() const { return pattern_; }
+
// FullMatch(str, re) returns true if and only if regular expression re
// matches the entire str.
// PartialMatch(str, re) returns true if and only if regular expression re
- // matches a substring of str (including str itself).
- static bool FullMatch(const ::std::string& str, const RE& re) {
- return FullMatch(str.c_str(), re);
- }
- static bool PartialMatch(const ::std::string& str, const RE& re) {
- return PartialMatch(str.c_str(), re);
- }
-
- static bool FullMatch(const char* str, const RE& re);
- static bool PartialMatch(const char* str, const RE& re);
-
- private:
- void Init(const char* regex);
- const char* pattern_;
- bool is_valid_;
-
+ // matches a substring of str (including str itself).
+ static bool FullMatch(const ::std::string& str, const RE& re) {
+ return FullMatch(str.c_str(), re);
+ }
+ static bool PartialMatch(const ::std::string& str, const RE& re) {
+ return PartialMatch(str.c_str(), re);
+ }
+
+ static bool FullMatch(const char* str, const RE& re);
+ static bool PartialMatch(const char* str, const RE& re);
+
+ private:
+ void Init(const char* regex);
+ const char* pattern_;
+ bool is_valid_;
+
# if GTEST_USES_POSIX_RE
-
- regex_t full_regex_; // For FullMatch().
- regex_t partial_regex_; // For PartialMatch().
-
+
+ regex_t full_regex_; // For FullMatch().
+ regex_t partial_regex_; // For PartialMatch().
+
# else // GTEST_USES_SIMPLE_RE
-
- const char* full_pattern_; // For FullMatch();
-
+
+ const char* full_pattern_; // For FullMatch();
+
# endif
-};
-
+};
+
#endif // GTEST_USES_PCRE
-// Formats a source file path and a line number as they would appear
-// in an error message from the compiler used to compile this code.
-GTEST_API_ ::std::string FormatFileLocation(const char* file, int line);
-
-// Formats a file location for compiler-independent XML output.
-// Although this function is not platform dependent, we put it next to
-// FormatFileLocation in order to contrast the two functions.
-GTEST_API_ ::std::string FormatCompilerIndependentFileLocation(const char* file,
- int line);
-
-// Defines logging utilities:
-// GTEST_LOG_(severity) - logs messages at the specified severity level. The
-// message itself is streamed into the macro.
-// LogToStderr() - directs all log messages to stderr.
-// FlushInfoLog() - flushes informational log messages.
-
-enum GTestLogSeverity {
- GTEST_INFO,
- GTEST_WARNING,
- GTEST_ERROR,
- GTEST_FATAL
-};
-
-// Formats log entry severity, provides a stream object for streaming the
-// log message, and terminates the message with a newline when going out of
-// scope.
-class GTEST_API_ GTestLog {
- public:
- GTestLog(GTestLogSeverity severity, const char* file, int line);
-
- // Flushes the buffers and, if severity is GTEST_FATAL, aborts the program.
- ~GTestLog();
-
- ::std::ostream& GetStream() { return ::std::cerr; }
-
- private:
- const GTestLogSeverity severity_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestLog);
-};
-
-#if !defined(GTEST_LOG_)
-
-# define GTEST_LOG_(severity) \
- ::testing::internal::GTestLog(::testing::internal::GTEST_##severity, \
- __FILE__, __LINE__).GetStream()
-
-inline void LogToStderr() {}
+// Formats a source file path and a line number as they would appear
+// in an error message from the compiler used to compile this code.
+GTEST_API_ ::std::string FormatFileLocation(const char* file, int line);
+
+// Formats a file location for compiler-independent XML output.
+// Although this function is not platform dependent, we put it next to
+// FormatFileLocation in order to contrast the two functions.
+GTEST_API_ ::std::string FormatCompilerIndependentFileLocation(const char* file,
+ int line);
+
+// Defines logging utilities:
+// GTEST_LOG_(severity) - logs messages at the specified severity level. The
+// message itself is streamed into the macro.
+// LogToStderr() - directs all log messages to stderr.
+// FlushInfoLog() - flushes informational log messages.
+
+enum GTestLogSeverity {
+ GTEST_INFO,
+ GTEST_WARNING,
+ GTEST_ERROR,
+ GTEST_FATAL
+};
+
+// Formats log entry severity, provides a stream object for streaming the
+// log message, and terminates the message with a newline when going out of
+// scope.
+class GTEST_API_ GTestLog {
+ public:
+ GTestLog(GTestLogSeverity severity, const char* file, int line);
+
+ // Flushes the buffers and, if severity is GTEST_FATAL, aborts the program.
+ ~GTestLog();
+
+ ::std::ostream& GetStream() { return ::std::cerr; }
+
+ private:
+ const GTestLogSeverity severity_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestLog);
+};
+
+#if !defined(GTEST_LOG_)
+
+# define GTEST_LOG_(severity) \
+ ::testing::internal::GTestLog(::testing::internal::GTEST_##severity, \
+ __FILE__, __LINE__).GetStream()
+
+inline void LogToStderr() {}
inline void FlushInfoLog() { fflush(nullptr); }
-
-#endif // !defined(GTEST_LOG_)
-
-#if !defined(GTEST_CHECK_)
-// INTERNAL IMPLEMENTATION - DO NOT USE.
-//
-// GTEST_CHECK_ is an all-mode assert. It aborts the program if the condition
-// is not satisfied.
-// Synopsys:
-// GTEST_CHECK_(boolean_condition);
-// or
-// GTEST_CHECK_(boolean_condition) << "Additional message";
-//
-// This checks the condition and if the condition is not satisfied
-// it prints message about the condition violation, including the
-// condition itself, plus additional message streamed into it, if any,
-// and then it aborts the program. It aborts the program irrespective of
-// whether it is built in the debug mode or not.
-# define GTEST_CHECK_(condition) \
- GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
- if (::testing::internal::IsTrue(condition)) \
- ; \
- else \
- GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
-#endif // !defined(GTEST_CHECK_)
-
-// An all-mode assert to verify that the given POSIX-style function
-// call returns 0 (indicating success). Known limitation: this
-// doesn't expand to a balanced 'if' statement, so enclose the macro
-// in {} if you need to use it as the only statement in an 'if'
-// branch.
-#define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \
- if (const int gtest_error = (posix_call)) \
- GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
- << gtest_error
-
+
+#endif // !defined(GTEST_LOG_)
+
+#if !defined(GTEST_CHECK_)
+// INTERNAL IMPLEMENTATION - DO NOT USE.
+//
+// GTEST_CHECK_ is an all-mode assert. It aborts the program if the condition
+// is not satisfied.
+// Synopsys:
+// GTEST_CHECK_(boolean_condition);
+// or
+// GTEST_CHECK_(boolean_condition) << "Additional message";
+//
+// This checks the condition and if the condition is not satisfied
+// it prints message about the condition violation, including the
+// condition itself, plus additional message streamed into it, if any,
+// and then it aborts the program. It aborts the program irrespective of
+// whether it is built in the debug mode or not.
+# define GTEST_CHECK_(condition) \
+ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+ if (::testing::internal::IsTrue(condition)) \
+ ; \
+ else \
+ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+#endif // !defined(GTEST_CHECK_)
+
+// An all-mode assert to verify that the given POSIX-style function
+// call returns 0 (indicating success). Known limitation: this
+// doesn't expand to a balanced 'if' statement, so enclose the macro
+// in {} if you need to use it as the only statement in an 'if'
+// branch.
+#define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \
+ if (const int gtest_error = (posix_call)) \
+ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
+ << gtest_error
+
// Transforms "T" into "const T&" according to standard reference collapsing
// rules (this is only needed as a backport for C++98 compilers that do not
// support reference collapsing). Specifically, it transforms:
@@ -1034,663 +1034,663 @@ inline void FlushInfoLog() { fflush(nullptr); }
//
// Note that the non-const reference will not have "const" added. This is
// standard, and necessary so that "T" can always bind to "const T&".
-template <typename T>
+template <typename T>
struct ConstRef { typedef const T& type; };
template <typename T>
struct ConstRef<T&> { typedef T& type; };
-
+
// The argument T must depend on some template parameters.
#define GTEST_REFERENCE_TO_CONST_(T) \
typename ::testing::internal::ConstRef<T>::type
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// Use ImplicitCast_ as a safe version of static_cast for upcasting in
-// the type hierarchy (e.g. casting a Foo* to a SuperclassOfFoo* or a
-// const Foo*). When you use ImplicitCast_, the compiler checks that
-// the cast is safe. Such explicit ImplicitCast_s are necessary in
-// surprisingly many situations where C++ demands an exact type match
-// instead of an argument type convertable to a target type.
-//
-// The syntax for using ImplicitCast_ is the same as for static_cast:
-//
-// ImplicitCast_<ToType>(expr)
-//
-// ImplicitCast_ would have been part of the C++ standard library,
-// but the proposal was submitted too late. It will probably make
-// its way into the language in the future.
-//
-// This relatively ugly name is intentional. It prevents clashes with
-// similar functions users may have (e.g., implicit_cast). The internal
-// namespace alone is not enough because the function can be found by ADL.
-template<typename To>
-inline To ImplicitCast_(To x) { return x; }
-
-// When you upcast (that is, cast a pointer from type Foo to type
-// SuperclassOfFoo), it's fine to use ImplicitCast_<>, since upcasts
-// always succeed. When you downcast (that is, cast a pointer from
-// type Foo to type SubclassOfFoo), static_cast<> isn't safe, because
-// how do you know the pointer is really of type SubclassOfFoo? It
-// could be a bare Foo, or of type DifferentSubclassOfFoo. Thus,
-// when you downcast, you should use this macro. In debug mode, we
-// use dynamic_cast<> to double-check the downcast is legal (we die
-// if it's not). In normal mode, we do the efficient static_cast<>
-// instead. Thus, it's important to test in debug mode to make sure
-// the cast is legal!
-// This is the only place in the code we should use dynamic_cast<>.
-// In particular, you SHOULDN'T be using dynamic_cast<> in order to
-// do RTTI (eg code like this:
-// if (dynamic_cast<Subclass1>(foo)) HandleASubclass1Object(foo);
-// if (dynamic_cast<Subclass2>(foo)) HandleASubclass2Object(foo);
-// You should design the code some other way not to need this.
-//
-// This relatively ugly name is intentional. It prevents clashes with
-// similar functions users may have (e.g., down_cast). The internal
-// namespace alone is not enough because the function can be found by ADL.
-template<typename To, typename From> // use like this: DownCast_<T*>(foo);
-inline To DownCast_(From* f) { // so we only accept pointers
- // Ensures that To is a sub-type of From *. This test is here only
- // for compile-time type checking, and has no overhead in an
- // optimized build at run-time, as it will be optimized away
- // completely.
- GTEST_INTENTIONAL_CONST_COND_PUSH_()
- if (false) {
- GTEST_INTENTIONAL_CONST_COND_POP_()
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Use ImplicitCast_ as a safe version of static_cast for upcasting in
+// the type hierarchy (e.g. casting a Foo* to a SuperclassOfFoo* or a
+// const Foo*). When you use ImplicitCast_, the compiler checks that
+// the cast is safe. Such explicit ImplicitCast_s are necessary in
+// surprisingly many situations where C++ demands an exact type match
+// instead of an argument type convertable to a target type.
+//
+// The syntax for using ImplicitCast_ is the same as for static_cast:
+//
+// ImplicitCast_<ToType>(expr)
+//
+// ImplicitCast_ would have been part of the C++ standard library,
+// but the proposal was submitted too late. It will probably make
+// its way into the language in the future.
+//
+// This relatively ugly name is intentional. It prevents clashes with
+// similar functions users may have (e.g., implicit_cast). The internal
+// namespace alone is not enough because the function can be found by ADL.
+template<typename To>
+inline To ImplicitCast_(To x) { return x; }
+
+// When you upcast (that is, cast a pointer from type Foo to type
+// SuperclassOfFoo), it's fine to use ImplicitCast_<>, since upcasts
+// always succeed. When you downcast (that is, cast a pointer from
+// type Foo to type SubclassOfFoo), static_cast<> isn't safe, because
+// how do you know the pointer is really of type SubclassOfFoo? It
+// could be a bare Foo, or of type DifferentSubclassOfFoo. Thus,
+// when you downcast, you should use this macro. In debug mode, we
+// use dynamic_cast<> to double-check the downcast is legal (we die
+// if it's not). In normal mode, we do the efficient static_cast<>
+// instead. Thus, it's important to test in debug mode to make sure
+// the cast is legal!
+// This is the only place in the code we should use dynamic_cast<>.
+// In particular, you SHOULDN'T be using dynamic_cast<> in order to
+// do RTTI (eg code like this:
+// if (dynamic_cast<Subclass1>(foo)) HandleASubclass1Object(foo);
+// if (dynamic_cast<Subclass2>(foo)) HandleASubclass2Object(foo);
+// You should design the code some other way not to need this.
+//
+// This relatively ugly name is intentional. It prevents clashes with
+// similar functions users may have (e.g., down_cast). The internal
+// namespace alone is not enough because the function can be found by ADL.
+template<typename To, typename From> // use like this: DownCast_<T*>(foo);
+inline To DownCast_(From* f) { // so we only accept pointers
+ // Ensures that To is a sub-type of From *. This test is here only
+ // for compile-time type checking, and has no overhead in an
+ // optimized build at run-time, as it will be optimized away
+ // completely.
+ GTEST_INTENTIONAL_CONST_COND_PUSH_()
+ if (false) {
+ GTEST_INTENTIONAL_CONST_COND_POP_()
const To to = nullptr;
::testing::internal::ImplicitCast_<From*>(to);
- }
-
-#if GTEST_HAS_RTTI
- // RTTI: debug mode only!
+ }
+
+#if GTEST_HAS_RTTI
+ // RTTI: debug mode only!
GTEST_CHECK_(f == nullptr || dynamic_cast<To>(f) != nullptr);
-#endif
- return static_cast<To>(f);
-}
-
-// Downcasts the pointer of type Base to Derived.
-// Derived must be a subclass of Base. The parameter MUST
-// point to a class of type Derived, not any subclass of it.
-// When RTTI is available, the function performs a runtime
-// check to enforce this.
-template <class Derived, class Base>
-Derived* CheckedDowncastToActualType(Base* base) {
-#if GTEST_HAS_RTTI
- GTEST_CHECK_(typeid(*base) == typeid(Derived));
-#endif
-
-#if GTEST_HAS_DOWNCAST_
- return ::down_cast<Derived*>(base);
-#elif GTEST_HAS_RTTI
- return dynamic_cast<Derived*>(base); // NOLINT
-#else
- return static_cast<Derived*>(base); // Poor man's downcast.
-#endif
-}
-
-#if GTEST_HAS_STREAM_REDIRECTION
-
-// Defines the stderr capturer:
-// CaptureStdout - starts capturing stdout.
-// GetCapturedStdout - stops capturing stdout and returns the captured string.
-// CaptureStderr - starts capturing stderr.
-// GetCapturedStderr - stops capturing stderr and returns the captured string.
-//
-GTEST_API_ void CaptureStdout();
-GTEST_API_ std::string GetCapturedStdout();
-GTEST_API_ void CaptureStderr();
-GTEST_API_ std::string GetCapturedStderr();
-
-#endif // GTEST_HAS_STREAM_REDIRECTION
-// Returns the size (in bytes) of a file.
-GTEST_API_ size_t GetFileSize(FILE* file);
-
-// Reads the entire content of a file as a string.
-GTEST_API_ std::string ReadEntireFile(FILE* file);
-
-// All command line arguments.
+#endif
+ return static_cast<To>(f);
+}
+
+// Downcasts the pointer of type Base to Derived.
+// Derived must be a subclass of Base. The parameter MUST
+// point to a class of type Derived, not any subclass of it.
+// When RTTI is available, the function performs a runtime
+// check to enforce this.
+template <class Derived, class Base>
+Derived* CheckedDowncastToActualType(Base* base) {
+#if GTEST_HAS_RTTI
+ GTEST_CHECK_(typeid(*base) == typeid(Derived));
+#endif
+
+#if GTEST_HAS_DOWNCAST_
+ return ::down_cast<Derived*>(base);
+#elif GTEST_HAS_RTTI
+ return dynamic_cast<Derived*>(base); // NOLINT
+#else
+ return static_cast<Derived*>(base); // Poor man's downcast.
+#endif
+}
+
+#if GTEST_HAS_STREAM_REDIRECTION
+
+// Defines the stderr capturer:
+// CaptureStdout - starts capturing stdout.
+// GetCapturedStdout - stops capturing stdout and returns the captured string.
+// CaptureStderr - starts capturing stderr.
+// GetCapturedStderr - stops capturing stderr and returns the captured string.
+//
+GTEST_API_ void CaptureStdout();
+GTEST_API_ std::string GetCapturedStdout();
+GTEST_API_ void CaptureStderr();
+GTEST_API_ std::string GetCapturedStderr();
+
+#endif // GTEST_HAS_STREAM_REDIRECTION
+// Returns the size (in bytes) of a file.
+GTEST_API_ size_t GetFileSize(FILE* file);
+
+// Reads the entire content of a file as a string.
+GTEST_API_ std::string ReadEntireFile(FILE* file);
+
+// All command line arguments.
GTEST_API_ std::vector<std::string> GetArgvs();
-
-#if GTEST_HAS_DEATH_TEST
-
+
+#if GTEST_HAS_DEATH_TEST
+
std::vector<std::string> GetInjectableArgvs();
// Deprecated: pass the args vector by value instead.
void SetInjectableArgvs(const std::vector<std::string>* new_argvs);
void SetInjectableArgvs(const std::vector<std::string>& new_argvs);
void ClearInjectableArgvs();
-
-#endif // GTEST_HAS_DEATH_TEST
-
-// Defines synchronization primitives.
-#if GTEST_IS_THREADSAFE
-# if GTEST_HAS_PTHREAD
-// Sleeps for (roughly) n milliseconds. This function is only for testing
-// Google Test's own constructs. Don't use it in user tests, either
-// directly or indirectly.
-inline void SleepMilliseconds(int n) {
- const timespec time = {
- 0, // 0 seconds.
- n * 1000L * 1000L, // And n ms.
- };
+
+#endif // GTEST_HAS_DEATH_TEST
+
+// Defines synchronization primitives.
+#if GTEST_IS_THREADSAFE
+# if GTEST_HAS_PTHREAD
+// Sleeps for (roughly) n milliseconds. This function is only for testing
+// Google Test's own constructs. Don't use it in user tests, either
+// directly or indirectly.
+inline void SleepMilliseconds(int n) {
+ const timespec time = {
+ 0, // 0 seconds.
+ n * 1000L * 1000L, // And n ms.
+ };
nanosleep(&time, nullptr);
-}
-# endif // GTEST_HAS_PTHREAD
-
-# if GTEST_HAS_NOTIFICATION_
-// Notification has already been imported into the namespace.
-// Nothing to do here.
-
-# elif GTEST_HAS_PTHREAD
-// Allows a controller thread to pause execution of newly created
-// threads until notified. Instances of this class must be created
-// and destroyed in the controller thread.
-//
-// This class is only for testing Google Test's own constructs. Do not
-// use it in user tests, either directly or indirectly.
-class Notification {
- public:
- Notification() : notified_(false) {
+}
+# endif // GTEST_HAS_PTHREAD
+
+# if GTEST_HAS_NOTIFICATION_
+// Notification has already been imported into the namespace.
+// Nothing to do here.
+
+# elif GTEST_HAS_PTHREAD
+// Allows a controller thread to pause execution of newly created
+// threads until notified. Instances of this class must be created
+// and destroyed in the controller thread.
+//
+// This class is only for testing Google Test's own constructs. Do not
+// use it in user tests, either directly or indirectly.
+class Notification {
+ public:
+ Notification() : notified_(false) {
GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, nullptr));
- }
- ~Notification() {
- pthread_mutex_destroy(&mutex_);
- }
-
- // Notifies all threads created with this notification to start. Must
- // be called from the controller thread.
- void Notify() {
- pthread_mutex_lock(&mutex_);
- notified_ = true;
- pthread_mutex_unlock(&mutex_);
- }
-
- // Blocks until the controller thread notifies. Must be called from a test
- // thread.
- void WaitForNotification() {
- for (;;) {
- pthread_mutex_lock(&mutex_);
- const bool notified = notified_;
- pthread_mutex_unlock(&mutex_);
- if (notified)
- break;
- SleepMilliseconds(10);
- }
- }
-
- private:
- pthread_mutex_t mutex_;
- bool notified_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(Notification);
-};
-
-# elif GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT
-
-GTEST_API_ void SleepMilliseconds(int n);
-
-// Provides leak-safe Windows kernel handle ownership.
-// Used in death tests and in threading support.
-class GTEST_API_ AutoHandle {
- public:
- // Assume that Win32 HANDLE type is equivalent to void*. Doing so allows us to
- // avoid including <windows.h> in this header file. Including <windows.h> is
- // undesirable because it defines a lot of symbols and macros that tend to
- // conflict with client code. This assumption is verified by
- // WindowsTypesTest.HANDLEIsVoidStar.
- typedef void* Handle;
- AutoHandle();
- explicit AutoHandle(Handle handle);
-
- ~AutoHandle();
-
- Handle Get() const;
- void Reset();
- void Reset(Handle handle);
-
- private:
+ }
+ ~Notification() {
+ pthread_mutex_destroy(&mutex_);
+ }
+
+ // Notifies all threads created with this notification to start. Must
+ // be called from the controller thread.
+ void Notify() {
+ pthread_mutex_lock(&mutex_);
+ notified_ = true;
+ pthread_mutex_unlock(&mutex_);
+ }
+
+ // Blocks until the controller thread notifies. Must be called from a test
+ // thread.
+ void WaitForNotification() {
+ for (;;) {
+ pthread_mutex_lock(&mutex_);
+ const bool notified = notified_;
+ pthread_mutex_unlock(&mutex_);
+ if (notified)
+ break;
+ SleepMilliseconds(10);
+ }
+ }
+
+ private:
+ pthread_mutex_t mutex_;
+ bool notified_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(Notification);
+};
+
+# elif GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT
+
+GTEST_API_ void SleepMilliseconds(int n);
+
+// Provides leak-safe Windows kernel handle ownership.
+// Used in death tests and in threading support.
+class GTEST_API_ AutoHandle {
+ public:
+ // Assume that Win32 HANDLE type is equivalent to void*. Doing so allows us to
+ // avoid including <windows.h> in this header file. Including <windows.h> is
+ // undesirable because it defines a lot of symbols and macros that tend to
+ // conflict with client code. This assumption is verified by
+ // WindowsTypesTest.HANDLEIsVoidStar.
+ typedef void* Handle;
+ AutoHandle();
+ explicit AutoHandle(Handle handle);
+
+ ~AutoHandle();
+
+ Handle Get() const;
+ void Reset();
+ void Reset(Handle handle);
+
+ private:
// Returns true if and only if the handle is a valid handle object that can be
// closed.
- bool IsCloseable() const;
-
- Handle handle_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(AutoHandle);
-};
-
-// Allows a controller thread to pause execution of newly created
-// threads until notified. Instances of this class must be created
-// and destroyed in the controller thread.
-//
-// This class is only for testing Google Test's own constructs. Do not
-// use it in user tests, either directly or indirectly.
-class GTEST_API_ Notification {
- public:
- Notification();
- void Notify();
- void WaitForNotification();
-
- private:
- AutoHandle event_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(Notification);
-};
-# endif // GTEST_HAS_NOTIFICATION_
-
-// On MinGW, we can have both GTEST_OS_WINDOWS and GTEST_HAS_PTHREAD
-// defined, but we don't want to use MinGW's pthreads implementation, which
-// has conformance problems with some versions of the POSIX standard.
-# if GTEST_HAS_PTHREAD && !GTEST_OS_WINDOWS_MINGW
-
-// As a C-function, ThreadFuncWithCLinkage cannot be templated itself.
-// Consequently, it cannot select a correct instantiation of ThreadWithParam
-// in order to call its Run(). Introducing ThreadWithParamBase as a
-// non-templated base class for ThreadWithParam allows us to bypass this
-// problem.
-class ThreadWithParamBase {
- public:
- virtual ~ThreadWithParamBase() {}
- virtual void Run() = 0;
-};
-
-// pthread_create() accepts a pointer to a function type with the C linkage.
-// According to the Standard (7.5/1), function types with different linkages
-// are different even if they are otherwise identical. Some compilers (for
-// example, SunStudio) treat them as different types. Since class methods
-// cannot be defined with C-linkage we need to define a free C-function to
-// pass into pthread_create().
-extern "C" inline void* ThreadFuncWithCLinkage(void* thread) {
- static_cast<ThreadWithParamBase*>(thread)->Run();
+ bool IsCloseable() const;
+
+ Handle handle_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(AutoHandle);
+};
+
+// Allows a controller thread to pause execution of newly created
+// threads until notified. Instances of this class must be created
+// and destroyed in the controller thread.
+//
+// This class is only for testing Google Test's own constructs. Do not
+// use it in user tests, either directly or indirectly.
+class GTEST_API_ Notification {
+ public:
+ Notification();
+ void Notify();
+ void WaitForNotification();
+
+ private:
+ AutoHandle event_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(Notification);
+};
+# endif // GTEST_HAS_NOTIFICATION_
+
+// On MinGW, we can have both GTEST_OS_WINDOWS and GTEST_HAS_PTHREAD
+// defined, but we don't want to use MinGW's pthreads implementation, which
+// has conformance problems with some versions of the POSIX standard.
+# if GTEST_HAS_PTHREAD && !GTEST_OS_WINDOWS_MINGW
+
+// As a C-function, ThreadFuncWithCLinkage cannot be templated itself.
+// Consequently, it cannot select a correct instantiation of ThreadWithParam
+// in order to call its Run(). Introducing ThreadWithParamBase as a
+// non-templated base class for ThreadWithParam allows us to bypass this
+// problem.
+class ThreadWithParamBase {
+ public:
+ virtual ~ThreadWithParamBase() {}
+ virtual void Run() = 0;
+};
+
+// pthread_create() accepts a pointer to a function type with the C linkage.
+// According to the Standard (7.5/1), function types with different linkages
+// are different even if they are otherwise identical. Some compilers (for
+// example, SunStudio) treat them as different types. Since class methods
+// cannot be defined with C-linkage we need to define a free C-function to
+// pass into pthread_create().
+extern "C" inline void* ThreadFuncWithCLinkage(void* thread) {
+ static_cast<ThreadWithParamBase*>(thread)->Run();
return nullptr;
-}
-
-// Helper class for testing Google Test's multi-threading constructs.
-// To use it, write:
-//
-// void ThreadFunc(int param) { /* Do things with param */ }
-// Notification thread_can_start;
-// ...
-// // The thread_can_start parameter is optional; you can supply NULL.
-// ThreadWithParam<int> thread(&ThreadFunc, 5, &thread_can_start);
-// thread_can_start.Notify();
-//
-// These classes are only for testing Google Test's own constructs. Do
-// not use them in user tests, either directly or indirectly.
-template <typename T>
-class ThreadWithParam : public ThreadWithParamBase {
- public:
- typedef void UserThreadFunc(T);
-
- ThreadWithParam(UserThreadFunc* func, T param, Notification* thread_can_start)
- : func_(func),
- param_(param),
- thread_can_start_(thread_can_start),
- finished_(false) {
- ThreadWithParamBase* const base = this;
- // The thread can be created only after all fields except thread_
- // have been initialized.
- GTEST_CHECK_POSIX_SUCCESS_(
+}
+
+// Helper class for testing Google Test's multi-threading constructs.
+// To use it, write:
+//
+// void ThreadFunc(int param) { /* Do things with param */ }
+// Notification thread_can_start;
+// ...
+// // The thread_can_start parameter is optional; you can supply NULL.
+// ThreadWithParam<int> thread(&ThreadFunc, 5, &thread_can_start);
+// thread_can_start.Notify();
+//
+// These classes are only for testing Google Test's own constructs. Do
+// not use them in user tests, either directly or indirectly.
+template <typename T>
+class ThreadWithParam : public ThreadWithParamBase {
+ public:
+ typedef void UserThreadFunc(T);
+
+ ThreadWithParam(UserThreadFunc* func, T param, Notification* thread_can_start)
+ : func_(func),
+ param_(param),
+ thread_can_start_(thread_can_start),
+ finished_(false) {
+ ThreadWithParamBase* const base = this;
+ // The thread can be created only after all fields except thread_
+ // have been initialized.
+ GTEST_CHECK_POSIX_SUCCESS_(
pthread_create(&thread_, nullptr, &ThreadFuncWithCLinkage, base));
- }
+ }
~ThreadWithParam() override { Join(); }
-
- void Join() {
- if (!finished_) {
+
+ void Join() {
+ if (!finished_) {
GTEST_CHECK_POSIX_SUCCESS_(pthread_join(thread_, nullptr));
- finished_ = true;
- }
- }
-
+ finished_ = true;
+ }
+ }
+
void Run() override {
if (thread_can_start_ != nullptr) thread_can_start_->WaitForNotification();
- func_(param_);
- }
-
- private:
- UserThreadFunc* const func_; // User-supplied thread function.
- const T param_; // User-supplied parameter to the thread function.
- // When non-NULL, used to block execution until the controller thread
- // notifies.
- Notification* const thread_can_start_;
+ func_(param_);
+ }
+
+ private:
+ UserThreadFunc* const func_; // User-supplied thread function.
+ const T param_; // User-supplied parameter to the thread function.
+ // When non-NULL, used to block execution until the controller thread
+ // notifies.
+ Notification* const thread_can_start_;
bool finished_; // true if and only if we know that the thread function has
// finished.
- pthread_t thread_; // The native thread object.
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParam);
-};
-# endif // !GTEST_OS_WINDOWS && GTEST_HAS_PTHREAD ||
- // GTEST_HAS_MUTEX_AND_THREAD_LOCAL_
-
-# if GTEST_HAS_MUTEX_AND_THREAD_LOCAL_
-// Mutex and ThreadLocal have already been imported into the namespace.
-// Nothing to do here.
-
-# elif GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT
-
-// Mutex implements mutex on Windows platforms. It is used in conjunction
-// with class MutexLock:
-//
-// Mutex mutex;
-// ...
-// MutexLock lock(&mutex); // Acquires the mutex and releases it at the
-// // end of the current scope.
-//
-// A static Mutex *must* be defined or declared using one of the following
-// macros:
-// GTEST_DEFINE_STATIC_MUTEX_(g_some_mutex);
-// GTEST_DECLARE_STATIC_MUTEX_(g_some_mutex);
-//
-// (A non-static Mutex is defined/declared in the usual way).
-class GTEST_API_ Mutex {
- public:
- enum MutexType { kStatic = 0, kDynamic = 1 };
- // We rely on kStaticMutex being 0 as it is to what the linker initializes
- // type_ in static mutexes. critical_section_ will be initialized lazily
- // in ThreadSafeLazyInit().
- enum StaticConstructorSelector { kStaticMutex = 0 };
-
- // This constructor intentionally does nothing. It relies on type_ being
- // statically initialized to 0 (effectively setting it to kStatic) and on
- // ThreadSafeLazyInit() to lazily initialize the rest of the members.
- explicit Mutex(StaticConstructorSelector /*dummy*/) {}
-
- Mutex();
- ~Mutex();
-
- void Lock();
-
- void Unlock();
-
- // Does nothing if the current thread holds the mutex. Otherwise, crashes
- // with high probability.
- void AssertHeld();
-
- private:
- // Initializes owner_thread_id_ and critical_section_ in static mutexes.
- void ThreadSafeLazyInit();
-
+ pthread_t thread_; // The native thread object.
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParam);
+};
+# endif // !GTEST_OS_WINDOWS && GTEST_HAS_PTHREAD ||
+ // GTEST_HAS_MUTEX_AND_THREAD_LOCAL_
+
+# if GTEST_HAS_MUTEX_AND_THREAD_LOCAL_
+// Mutex and ThreadLocal have already been imported into the namespace.
+// Nothing to do here.
+
+# elif GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT
+
+// Mutex implements mutex on Windows platforms. It is used in conjunction
+// with class MutexLock:
+//
+// Mutex mutex;
+// ...
+// MutexLock lock(&mutex); // Acquires the mutex and releases it at the
+// // end of the current scope.
+//
+// A static Mutex *must* be defined or declared using one of the following
+// macros:
+// GTEST_DEFINE_STATIC_MUTEX_(g_some_mutex);
+// GTEST_DECLARE_STATIC_MUTEX_(g_some_mutex);
+//
+// (A non-static Mutex is defined/declared in the usual way).
+class GTEST_API_ Mutex {
+ public:
+ enum MutexType { kStatic = 0, kDynamic = 1 };
+ // We rely on kStaticMutex being 0 as it is to what the linker initializes
+ // type_ in static mutexes. critical_section_ will be initialized lazily
+ // in ThreadSafeLazyInit().
+ enum StaticConstructorSelector { kStaticMutex = 0 };
+
+ // This constructor intentionally does nothing. It relies on type_ being
+ // statically initialized to 0 (effectively setting it to kStatic) and on
+ // ThreadSafeLazyInit() to lazily initialize the rest of the members.
+ explicit Mutex(StaticConstructorSelector /*dummy*/) {}
+
+ Mutex();
+ ~Mutex();
+
+ void Lock();
+
+ void Unlock();
+
+ // Does nothing if the current thread holds the mutex. Otherwise, crashes
+ // with high probability.
+ void AssertHeld();
+
+ private:
+ // Initializes owner_thread_id_ and critical_section_ in static mutexes.
+ void ThreadSafeLazyInit();
+
// Per https://blogs.msdn.microsoft.com/oldnewthing/20040223-00/?p=40503,
- // we assume that 0 is an invalid value for thread IDs.
- unsigned int owner_thread_id_;
-
- // For static mutexes, we rely on these members being initialized to zeros
- // by the linker.
- MutexType type_;
- long critical_section_init_phase_; // NOLINT
+ // we assume that 0 is an invalid value for thread IDs.
+ unsigned int owner_thread_id_;
+
+ // For static mutexes, we rely on these members being initialized to zeros
+ // by the linker.
+ MutexType type_;
+ long critical_section_init_phase_; // NOLINT
GTEST_CRITICAL_SECTION* critical_section_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(Mutex);
-};
-
-# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \
- extern ::testing::internal::Mutex mutex
-
-# define GTEST_DEFINE_STATIC_MUTEX_(mutex) \
- ::testing::internal::Mutex mutex(::testing::internal::Mutex::kStaticMutex)
-
-// We cannot name this class MutexLock because the ctor declaration would
-// conflict with a macro named MutexLock, which is defined on some
-// platforms. That macro is used as a defensive measure to prevent against
-// inadvertent misuses of MutexLock like "MutexLock(&mu)" rather than
-// "MutexLock l(&mu)". Hence the typedef trick below.
-class GTestMutexLock {
- public:
- explicit GTestMutexLock(Mutex* mutex)
- : mutex_(mutex) { mutex_->Lock(); }
-
- ~GTestMutexLock() { mutex_->Unlock(); }
-
- private:
- Mutex* const mutex_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestMutexLock);
-};
-
-typedef GTestMutexLock MutexLock;
-
-// Base class for ValueHolder<T>. Allows a caller to hold and delete a value
-// without knowing its type.
-class ThreadLocalValueHolderBase {
- public:
- virtual ~ThreadLocalValueHolderBase() {}
-};
-
-// Provides a way for a thread to send notifications to a ThreadLocal
-// regardless of its parameter type.
-class ThreadLocalBase {
- public:
- // Creates a new ValueHolder<T> object holding a default value passed to
- // this ThreadLocal<T>'s constructor and returns it. It is the caller's
- // responsibility not to call this when the ThreadLocal<T> instance already
- // has a value on the current thread.
- virtual ThreadLocalValueHolderBase* NewValueForCurrentThread() const = 0;
-
- protected:
- ThreadLocalBase() {}
- virtual ~ThreadLocalBase() {}
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadLocalBase);
-};
-
-// Maps a thread to a set of ThreadLocals that have values instantiated on that
-// thread and notifies them when the thread exits. A ThreadLocal instance is
-// expected to persist until all threads it has values on have terminated.
-class GTEST_API_ ThreadLocalRegistry {
- public:
- // Registers thread_local_instance as having value on the current thread.
- // Returns a value that can be used to identify the thread from other threads.
- static ThreadLocalValueHolderBase* GetValueOnCurrentThread(
- const ThreadLocalBase* thread_local_instance);
-
- // Invoked when a ThreadLocal instance is destroyed.
- static void OnThreadLocalDestroyed(
- const ThreadLocalBase* thread_local_instance);
-};
-
-class GTEST_API_ ThreadWithParamBase {
- public:
- void Join();
-
- protected:
- class Runnable {
- public:
- virtual ~Runnable() {}
- virtual void Run() = 0;
- };
-
- ThreadWithParamBase(Runnable *runnable, Notification* thread_can_start);
- virtual ~ThreadWithParamBase();
-
- private:
- AutoHandle thread_;
-};
-
-// Helper class for testing Google Test's multi-threading constructs.
-template <typename T>
-class ThreadWithParam : public ThreadWithParamBase {
- public:
- typedef void UserThreadFunc(T);
-
- ThreadWithParam(UserThreadFunc* func, T param, Notification* thread_can_start)
- : ThreadWithParamBase(new RunnableImpl(func, param), thread_can_start) {
- }
- virtual ~ThreadWithParam() {}
-
- private:
- class RunnableImpl : public Runnable {
- public:
- RunnableImpl(UserThreadFunc* func, T param)
- : func_(func),
- param_(param) {
- }
- virtual ~RunnableImpl() {}
- virtual void Run() {
- func_(param_);
- }
-
- private:
- UserThreadFunc* const func_;
- const T param_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(RunnableImpl);
- };
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParam);
-};
-
-// Implements thread-local storage on Windows systems.
-//
-// // Thread 1
-// ThreadLocal<int> tl(100); // 100 is the default value for each thread.
-//
-// // Thread 2
-// tl.set(150); // Changes the value for thread 2 only.
-// EXPECT_EQ(150, tl.get());
-//
-// // Thread 1
-// EXPECT_EQ(100, tl.get()); // In thread 1, tl has the original value.
-// tl.set(200);
-// EXPECT_EQ(200, tl.get());
-//
-// The template type argument T must have a public copy constructor.
-// In addition, the default ThreadLocal constructor requires T to have
-// a public default constructor.
-//
-// The users of a TheadLocal instance have to make sure that all but one
-// threads (including the main one) using that instance have exited before
-// destroying it. Otherwise, the per-thread objects managed for them by the
-// ThreadLocal instance are not guaranteed to be destroyed on all platforms.
-//
-// Google Test only uses global ThreadLocal objects. That means they
-// will die after main() has returned. Therefore, no per-thread
-// object managed by Google Test will be leaked as long as all threads
-// using Google Test have exited when main() returns.
-template <typename T>
-class ThreadLocal : public ThreadLocalBase {
- public:
- ThreadLocal() : default_factory_(new DefaultValueHolderFactory()) {}
- explicit ThreadLocal(const T& value)
- : default_factory_(new InstanceValueHolderFactory(value)) {}
-
- ~ThreadLocal() { ThreadLocalRegistry::OnThreadLocalDestroyed(this); }
-
- T* pointer() { return GetOrCreateValue(); }
- const T* pointer() const { return GetOrCreateValue(); }
- const T& get() const { return *pointer(); }
- void set(const T& value) { *pointer() = value; }
-
- private:
- // Holds a value of T. Can be deleted via its base class without the caller
- // knowing the type of T.
- class ValueHolder : public ThreadLocalValueHolderBase {
- public:
- ValueHolder() : value_() {}
- explicit ValueHolder(const T& value) : value_(value) {}
-
- T* pointer() { return &value_; }
-
- private:
- T value_;
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolder);
- };
-
-
- T* GetOrCreateValue() const {
- return static_cast<ValueHolder*>(
- ThreadLocalRegistry::GetValueOnCurrentThread(this))->pointer();
- }
-
- virtual ThreadLocalValueHolderBase* NewValueForCurrentThread() const {
- return default_factory_->MakeNewHolder();
- }
-
- class ValueHolderFactory {
- public:
- ValueHolderFactory() {}
- virtual ~ValueHolderFactory() {}
- virtual ValueHolder* MakeNewHolder() const = 0;
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolderFactory);
- };
-
- class DefaultValueHolderFactory : public ValueHolderFactory {
- public:
- DefaultValueHolderFactory() {}
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(Mutex);
+};
+
+# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \
+ extern ::testing::internal::Mutex mutex
+
+# define GTEST_DEFINE_STATIC_MUTEX_(mutex) \
+ ::testing::internal::Mutex mutex(::testing::internal::Mutex::kStaticMutex)
+
+// We cannot name this class MutexLock because the ctor declaration would
+// conflict with a macro named MutexLock, which is defined on some
+// platforms. That macro is used as a defensive measure to prevent against
+// inadvertent misuses of MutexLock like "MutexLock(&mu)" rather than
+// "MutexLock l(&mu)". Hence the typedef trick below.
+class GTestMutexLock {
+ public:
+ explicit GTestMutexLock(Mutex* mutex)
+ : mutex_(mutex) { mutex_->Lock(); }
+
+ ~GTestMutexLock() { mutex_->Unlock(); }
+
+ private:
+ Mutex* const mutex_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestMutexLock);
+};
+
+typedef GTestMutexLock MutexLock;
+
+// Base class for ValueHolder<T>. Allows a caller to hold and delete a value
+// without knowing its type.
+class ThreadLocalValueHolderBase {
+ public:
+ virtual ~ThreadLocalValueHolderBase() {}
+};
+
+// Provides a way for a thread to send notifications to a ThreadLocal
+// regardless of its parameter type.
+class ThreadLocalBase {
+ public:
+ // Creates a new ValueHolder<T> object holding a default value passed to
+ // this ThreadLocal<T>'s constructor and returns it. It is the caller's
+ // responsibility not to call this when the ThreadLocal<T> instance already
+ // has a value on the current thread.
+ virtual ThreadLocalValueHolderBase* NewValueForCurrentThread() const = 0;
+
+ protected:
+ ThreadLocalBase() {}
+ virtual ~ThreadLocalBase() {}
+
+ private:
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadLocalBase);
+};
+
+// Maps a thread to a set of ThreadLocals that have values instantiated on that
+// thread and notifies them when the thread exits. A ThreadLocal instance is
+// expected to persist until all threads it has values on have terminated.
+class GTEST_API_ ThreadLocalRegistry {
+ public:
+ // Registers thread_local_instance as having value on the current thread.
+ // Returns a value that can be used to identify the thread from other threads.
+ static ThreadLocalValueHolderBase* GetValueOnCurrentThread(
+ const ThreadLocalBase* thread_local_instance);
+
+ // Invoked when a ThreadLocal instance is destroyed.
+ static void OnThreadLocalDestroyed(
+ const ThreadLocalBase* thread_local_instance);
+};
+
+class GTEST_API_ ThreadWithParamBase {
+ public:
+ void Join();
+
+ protected:
+ class Runnable {
+ public:
+ virtual ~Runnable() {}
+ virtual void Run() = 0;
+ };
+
+ ThreadWithParamBase(Runnable *runnable, Notification* thread_can_start);
+ virtual ~ThreadWithParamBase();
+
+ private:
+ AutoHandle thread_;
+};
+
+// Helper class for testing Google Test's multi-threading constructs.
+template <typename T>
+class ThreadWithParam : public ThreadWithParamBase {
+ public:
+ typedef void UserThreadFunc(T);
+
+ ThreadWithParam(UserThreadFunc* func, T param, Notification* thread_can_start)
+ : ThreadWithParamBase(new RunnableImpl(func, param), thread_can_start) {
+ }
+ virtual ~ThreadWithParam() {}
+
+ private:
+ class RunnableImpl : public Runnable {
+ public:
+ RunnableImpl(UserThreadFunc* func, T param)
+ : func_(func),
+ param_(param) {
+ }
+ virtual ~RunnableImpl() {}
+ virtual void Run() {
+ func_(param_);
+ }
+
+ private:
+ UserThreadFunc* const func_;
+ const T param_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(RunnableImpl);
+ };
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParam);
+};
+
+// Implements thread-local storage on Windows systems.
+//
+// // Thread 1
+// ThreadLocal<int> tl(100); // 100 is the default value for each thread.
+//
+// // Thread 2
+// tl.set(150); // Changes the value for thread 2 only.
+// EXPECT_EQ(150, tl.get());
+//
+// // Thread 1
+// EXPECT_EQ(100, tl.get()); // In thread 1, tl has the original value.
+// tl.set(200);
+// EXPECT_EQ(200, tl.get());
+//
+// The template type argument T must have a public copy constructor.
+// In addition, the default ThreadLocal constructor requires T to have
+// a public default constructor.
+//
+// The users of a TheadLocal instance have to make sure that all but one
+// threads (including the main one) using that instance have exited before
+// destroying it. Otherwise, the per-thread objects managed for them by the
+// ThreadLocal instance are not guaranteed to be destroyed on all platforms.
+//
+// Google Test only uses global ThreadLocal objects. That means they
+// will die after main() has returned. Therefore, no per-thread
+// object managed by Google Test will be leaked as long as all threads
+// using Google Test have exited when main() returns.
+template <typename T>
+class ThreadLocal : public ThreadLocalBase {
+ public:
+ ThreadLocal() : default_factory_(new DefaultValueHolderFactory()) {}
+ explicit ThreadLocal(const T& value)
+ : default_factory_(new InstanceValueHolderFactory(value)) {}
+
+ ~ThreadLocal() { ThreadLocalRegistry::OnThreadLocalDestroyed(this); }
+
+ T* pointer() { return GetOrCreateValue(); }
+ const T* pointer() const { return GetOrCreateValue(); }
+ const T& get() const { return *pointer(); }
+ void set(const T& value) { *pointer() = value; }
+
+ private:
+ // Holds a value of T. Can be deleted via its base class without the caller
+ // knowing the type of T.
+ class ValueHolder : public ThreadLocalValueHolderBase {
+ public:
+ ValueHolder() : value_() {}
+ explicit ValueHolder(const T& value) : value_(value) {}
+
+ T* pointer() { return &value_; }
+
+ private:
+ T value_;
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolder);
+ };
+
+
+ T* GetOrCreateValue() const {
+ return static_cast<ValueHolder*>(
+ ThreadLocalRegistry::GetValueOnCurrentThread(this))->pointer();
+ }
+
+ virtual ThreadLocalValueHolderBase* NewValueForCurrentThread() const {
+ return default_factory_->MakeNewHolder();
+ }
+
+ class ValueHolderFactory {
+ public:
+ ValueHolderFactory() {}
+ virtual ~ValueHolderFactory() {}
+ virtual ValueHolder* MakeNewHolder() const = 0;
+
+ private:
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolderFactory);
+ };
+
+ class DefaultValueHolderFactory : public ValueHolderFactory {
+ public:
+ DefaultValueHolderFactory() {}
ValueHolder* MakeNewHolder() const override { return new ValueHolder(); }
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultValueHolderFactory);
- };
-
- class InstanceValueHolderFactory : public ValueHolderFactory {
- public:
- explicit InstanceValueHolderFactory(const T& value) : value_(value) {}
+
+ private:
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultValueHolderFactory);
+ };
+
+ class InstanceValueHolderFactory : public ValueHolderFactory {
+ public:
+ explicit InstanceValueHolderFactory(const T& value) : value_(value) {}
ValueHolder* MakeNewHolder() const override {
- return new ValueHolder(value_);
- }
-
- private:
- const T value_; // The value for each thread.
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(InstanceValueHolderFactory);
- };
-
+ return new ValueHolder(value_);
+ }
+
+ private:
+ const T value_; // The value for each thread.
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(InstanceValueHolderFactory);
+ };
+
std::unique_ptr<ValueHolderFactory> default_factory_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadLocal);
-};
-
-# elif GTEST_HAS_PTHREAD
-
-// MutexBase and Mutex implement mutex on pthreads-based platforms.
-class MutexBase {
- public:
- // Acquires this mutex.
- void Lock() {
- GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_lock(&mutex_));
- owner_ = pthread_self();
- has_owner_ = true;
- }
-
- // Releases this mutex.
- void Unlock() {
- // Since the lock is being released the owner_ field should no longer be
- // considered valid. We don't protect writing to has_owner_ here, as it's
- // the caller's responsibility to ensure that the current thread holds the
- // mutex when this is called.
- has_owner_ = false;
- GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_unlock(&mutex_));
- }
-
- // Does nothing if the current thread holds the mutex. Otherwise, crashes
- // with high probability.
- void AssertHeld() const {
- GTEST_CHECK_(has_owner_ && pthread_equal(owner_, pthread_self()))
- << "The current thread is not holding the mutex @" << this;
- }
-
- // A static mutex may be used before main() is entered. It may even
- // be used before the dynamic initialization stage. Therefore we
- // must be able to initialize a static mutex object at link time.
- // This means MutexBase has to be a POD and its member variables
- // have to be public.
- public:
- pthread_mutex_t mutex_; // The underlying pthread mutex.
- // has_owner_ indicates whether the owner_ field below contains a valid thread
- // ID and is therefore safe to inspect (e.g., to use in pthread_equal()). All
- // accesses to the owner_ field should be protected by a check of this field.
- // An alternative might be to memset() owner_ to all zeros, but there's no
- // guarantee that a zero'd pthread_t is necessarily invalid or even different
- // from pthread_self().
- bool has_owner_;
- pthread_t owner_; // The thread holding the mutex.
-};
-
-// Forward-declares a static mutex.
-# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \
- extern ::testing::internal::MutexBase mutex
-
-// Defines and statically (i.e. at link time) initializes a static mutex.
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadLocal);
+};
+
+# elif GTEST_HAS_PTHREAD
+
+// MutexBase and Mutex implement mutex on pthreads-based platforms.
+class MutexBase {
+ public:
+ // Acquires this mutex.
+ void Lock() {
+ GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_lock(&mutex_));
+ owner_ = pthread_self();
+ has_owner_ = true;
+ }
+
+ // Releases this mutex.
+ void Unlock() {
+ // Since the lock is being released the owner_ field should no longer be
+ // considered valid. We don't protect writing to has_owner_ here, as it's
+ // the caller's responsibility to ensure that the current thread holds the
+ // mutex when this is called.
+ has_owner_ = false;
+ GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_unlock(&mutex_));
+ }
+
+ // Does nothing if the current thread holds the mutex. Otherwise, crashes
+ // with high probability.
+ void AssertHeld() const {
+ GTEST_CHECK_(has_owner_ && pthread_equal(owner_, pthread_self()))
+ << "The current thread is not holding the mutex @" << this;
+ }
+
+ // A static mutex may be used before main() is entered. It may even
+ // be used before the dynamic initialization stage. Therefore we
+ // must be able to initialize a static mutex object at link time.
+ // This means MutexBase has to be a POD and its member variables
+ // have to be public.
+ public:
+ pthread_mutex_t mutex_; // The underlying pthread mutex.
+ // has_owner_ indicates whether the owner_ field below contains a valid thread
+ // ID and is therefore safe to inspect (e.g., to use in pthread_equal()). All
+ // accesses to the owner_ field should be protected by a check of this field.
+ // An alternative might be to memset() owner_ to all zeros, but there's no
+ // guarantee that a zero'd pthread_t is necessarily invalid or even different
+ // from pthread_self().
+ bool has_owner_;
+ pthread_t owner_; // The thread holding the mutex.
+};
+
+// Forward-declares a static mutex.
+# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \
+ extern ::testing::internal::MutexBase mutex
+
+// Defines and statically (i.e. at link time) initializes a static mutex.
// The initialization list here does not explicitly initialize each field,
// instead relying on default initialization for the unspecified fields. In
// particular, the owner_ field (a pthread_t) is not explicitly initialized.
@@ -1698,248 +1698,248 @@ class MutexBase {
// The flag -Wmissing-field-initializers must not be specified for this to work.
#define GTEST_DEFINE_STATIC_MUTEX_(mutex) \
::testing::internal::MutexBase mutex = {PTHREAD_MUTEX_INITIALIZER, false, 0}
-
-// The Mutex class can only be used for mutexes created at runtime. It
-// shares its API with MutexBase otherwise.
-class Mutex : public MutexBase {
- public:
- Mutex() {
+
+// The Mutex class can only be used for mutexes created at runtime. It
+// shares its API with MutexBase otherwise.
+class Mutex : public MutexBase {
+ public:
+ Mutex() {
GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, nullptr));
- has_owner_ = false;
- }
- ~Mutex() {
- GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_destroy(&mutex_));
- }
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(Mutex);
-};
-
-// We cannot name this class MutexLock because the ctor declaration would
-// conflict with a macro named MutexLock, which is defined on some
-// platforms. That macro is used as a defensive measure to prevent against
-// inadvertent misuses of MutexLock like "MutexLock(&mu)" rather than
-// "MutexLock l(&mu)". Hence the typedef trick below.
-class GTestMutexLock {
- public:
- explicit GTestMutexLock(MutexBase* mutex)
- : mutex_(mutex) { mutex_->Lock(); }
-
- ~GTestMutexLock() { mutex_->Unlock(); }
-
- private:
- MutexBase* const mutex_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestMutexLock);
-};
-
-typedef GTestMutexLock MutexLock;
-
-// Helpers for ThreadLocal.
-
-// pthread_key_create() requires DeleteThreadLocalValue() to have
-// C-linkage. Therefore it cannot be templatized to access
-// ThreadLocal<T>. Hence the need for class
-// ThreadLocalValueHolderBase.
-class ThreadLocalValueHolderBase {
- public:
- virtual ~ThreadLocalValueHolderBase() {}
-};
-
-// Called by pthread to delete thread-local data stored by
-// pthread_setspecific().
-extern "C" inline void DeleteThreadLocalValue(void* value_holder) {
- delete static_cast<ThreadLocalValueHolderBase*>(value_holder);
-}
-
-// Implements thread-local storage on pthreads-based systems.
-template <typename T>
+ has_owner_ = false;
+ }
+ ~Mutex() {
+ GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_destroy(&mutex_));
+ }
+
+ private:
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(Mutex);
+};
+
+// We cannot name this class MutexLock because the ctor declaration would
+// conflict with a macro named MutexLock, which is defined on some
+// platforms. That macro is used as a defensive measure to prevent against
+// inadvertent misuses of MutexLock like "MutexLock(&mu)" rather than
+// "MutexLock l(&mu)". Hence the typedef trick below.
+class GTestMutexLock {
+ public:
+ explicit GTestMutexLock(MutexBase* mutex)
+ : mutex_(mutex) { mutex_->Lock(); }
+
+ ~GTestMutexLock() { mutex_->Unlock(); }
+
+ private:
+ MutexBase* const mutex_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestMutexLock);
+};
+
+typedef GTestMutexLock MutexLock;
+
+// Helpers for ThreadLocal.
+
+// pthread_key_create() requires DeleteThreadLocalValue() to have
+// C-linkage. Therefore it cannot be templatized to access
+// ThreadLocal<T>. Hence the need for class
+// ThreadLocalValueHolderBase.
+class ThreadLocalValueHolderBase {
+ public:
+ virtual ~ThreadLocalValueHolderBase() {}
+};
+
+// Called by pthread to delete thread-local data stored by
+// pthread_setspecific().
+extern "C" inline void DeleteThreadLocalValue(void* value_holder) {
+ delete static_cast<ThreadLocalValueHolderBase*>(value_holder);
+}
+
+// Implements thread-local storage on pthreads-based systems.
+template <typename T>
class GTEST_API_ ThreadLocal {
- public:
- ThreadLocal()
- : key_(CreateKey()), default_factory_(new DefaultValueHolderFactory()) {}
- explicit ThreadLocal(const T& value)
- : key_(CreateKey()),
- default_factory_(new InstanceValueHolderFactory(value)) {}
-
- ~ThreadLocal() {
- // Destroys the managed object for the current thread, if any.
- DeleteThreadLocalValue(pthread_getspecific(key_));
-
- // Releases resources associated with the key. This will *not*
- // delete managed objects for other threads.
- GTEST_CHECK_POSIX_SUCCESS_(pthread_key_delete(key_));
- }
-
- T* pointer() { return GetOrCreateValue(); }
- const T* pointer() const { return GetOrCreateValue(); }
- const T& get() const { return *pointer(); }
- void set(const T& value) { *pointer() = value; }
-
- private:
- // Holds a value of type T.
- class ValueHolder : public ThreadLocalValueHolderBase {
- public:
- ValueHolder() : value_() {}
- explicit ValueHolder(const T& value) : value_(value) {}
-
- T* pointer() { return &value_; }
-
- private:
- T value_;
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolder);
- };
-
- static pthread_key_t CreateKey() {
- pthread_key_t key;
- // When a thread exits, DeleteThreadLocalValue() will be called on
- // the object managed for that thread.
- GTEST_CHECK_POSIX_SUCCESS_(
- pthread_key_create(&key, &DeleteThreadLocalValue));
- return key;
- }
-
- T* GetOrCreateValue() const {
- ThreadLocalValueHolderBase* const holder =
- static_cast<ThreadLocalValueHolderBase*>(pthread_getspecific(key_));
+ public:
+ ThreadLocal()
+ : key_(CreateKey()), default_factory_(new DefaultValueHolderFactory()) {}
+ explicit ThreadLocal(const T& value)
+ : key_(CreateKey()),
+ default_factory_(new InstanceValueHolderFactory(value)) {}
+
+ ~ThreadLocal() {
+ // Destroys the managed object for the current thread, if any.
+ DeleteThreadLocalValue(pthread_getspecific(key_));
+
+ // Releases resources associated with the key. This will *not*
+ // delete managed objects for other threads.
+ GTEST_CHECK_POSIX_SUCCESS_(pthread_key_delete(key_));
+ }
+
+ T* pointer() { return GetOrCreateValue(); }
+ const T* pointer() const { return GetOrCreateValue(); }
+ const T& get() const { return *pointer(); }
+ void set(const T& value) { *pointer() = value; }
+
+ private:
+ // Holds a value of type T.
+ class ValueHolder : public ThreadLocalValueHolderBase {
+ public:
+ ValueHolder() : value_() {}
+ explicit ValueHolder(const T& value) : value_(value) {}
+
+ T* pointer() { return &value_; }
+
+ private:
+ T value_;
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolder);
+ };
+
+ static pthread_key_t CreateKey() {
+ pthread_key_t key;
+ // When a thread exits, DeleteThreadLocalValue() will be called on
+ // the object managed for that thread.
+ GTEST_CHECK_POSIX_SUCCESS_(
+ pthread_key_create(&key, &DeleteThreadLocalValue));
+ return key;
+ }
+
+ T* GetOrCreateValue() const {
+ ThreadLocalValueHolderBase* const holder =
+ static_cast<ThreadLocalValueHolderBase*>(pthread_getspecific(key_));
if (holder != nullptr) {
- return CheckedDowncastToActualType<ValueHolder>(holder)->pointer();
- }
-
- ValueHolder* const new_holder = default_factory_->MakeNewHolder();
- ThreadLocalValueHolderBase* const holder_base = new_holder;
- GTEST_CHECK_POSIX_SUCCESS_(pthread_setspecific(key_, holder_base));
- return new_holder->pointer();
- }
-
- class ValueHolderFactory {
- public:
- ValueHolderFactory() {}
- virtual ~ValueHolderFactory() {}
- virtual ValueHolder* MakeNewHolder() const = 0;
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolderFactory);
- };
-
- class DefaultValueHolderFactory : public ValueHolderFactory {
- public:
- DefaultValueHolderFactory() {}
+ return CheckedDowncastToActualType<ValueHolder>(holder)->pointer();
+ }
+
+ ValueHolder* const new_holder = default_factory_->MakeNewHolder();
+ ThreadLocalValueHolderBase* const holder_base = new_holder;
+ GTEST_CHECK_POSIX_SUCCESS_(pthread_setspecific(key_, holder_base));
+ return new_holder->pointer();
+ }
+
+ class ValueHolderFactory {
+ public:
+ ValueHolderFactory() {}
+ virtual ~ValueHolderFactory() {}
+ virtual ValueHolder* MakeNewHolder() const = 0;
+
+ private:
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolderFactory);
+ };
+
+ class DefaultValueHolderFactory : public ValueHolderFactory {
+ public:
+ DefaultValueHolderFactory() {}
ValueHolder* MakeNewHolder() const override { return new ValueHolder(); }
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultValueHolderFactory);
- };
-
- class InstanceValueHolderFactory : public ValueHolderFactory {
- public:
- explicit InstanceValueHolderFactory(const T& value) : value_(value) {}
+
+ private:
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultValueHolderFactory);
+ };
+
+ class InstanceValueHolderFactory : public ValueHolderFactory {
+ public:
+ explicit InstanceValueHolderFactory(const T& value) : value_(value) {}
ValueHolder* MakeNewHolder() const override {
- return new ValueHolder(value_);
- }
-
- private:
- const T value_; // The value for each thread.
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(InstanceValueHolderFactory);
- };
-
- // A key pthreads uses for looking up per-thread values.
- const pthread_key_t key_;
+ return new ValueHolder(value_);
+ }
+
+ private:
+ const T value_; // The value for each thread.
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(InstanceValueHolderFactory);
+ };
+
+ // A key pthreads uses for looking up per-thread values.
+ const pthread_key_t key_;
std::unique_ptr<ValueHolderFactory> default_factory_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadLocal);
-};
-
-# endif // GTEST_HAS_MUTEX_AND_THREAD_LOCAL_
-
-#else // GTEST_IS_THREADSAFE
-
-// A dummy implementation of synchronization primitives (mutex, lock,
-// and thread-local variable). Necessary for compiling Google Test where
-// mutex is not supported - using Google Test in multiple threads is not
-// supported on such platforms.
-
-class Mutex {
- public:
- Mutex() {}
- void Lock() {}
- void Unlock() {}
- void AssertHeld() const {}
-};
-
-# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \
- extern ::testing::internal::Mutex mutex
-
-# define GTEST_DEFINE_STATIC_MUTEX_(mutex) ::testing::internal::Mutex mutex
-
-// We cannot name this class MutexLock because the ctor declaration would
-// conflict with a macro named MutexLock, which is defined on some
-// platforms. That macro is used as a defensive measure to prevent against
-// inadvertent misuses of MutexLock like "MutexLock(&mu)" rather than
-// "MutexLock l(&mu)". Hence the typedef trick below.
-class GTestMutexLock {
- public:
- explicit GTestMutexLock(Mutex*) {} // NOLINT
-};
-
-typedef GTestMutexLock MutexLock;
-
-template <typename T>
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadLocal);
+};
+
+# endif // GTEST_HAS_MUTEX_AND_THREAD_LOCAL_
+
+#else // GTEST_IS_THREADSAFE
+
+// A dummy implementation of synchronization primitives (mutex, lock,
+// and thread-local variable). Necessary for compiling Google Test where
+// mutex is not supported - using Google Test in multiple threads is not
+// supported on such platforms.
+
+class Mutex {
+ public:
+ Mutex() {}
+ void Lock() {}
+ void Unlock() {}
+ void AssertHeld() const {}
+};
+
+# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \
+ extern ::testing::internal::Mutex mutex
+
+# define GTEST_DEFINE_STATIC_MUTEX_(mutex) ::testing::internal::Mutex mutex
+
+// We cannot name this class MutexLock because the ctor declaration would
+// conflict with a macro named MutexLock, which is defined on some
+// platforms. That macro is used as a defensive measure to prevent against
+// inadvertent misuses of MutexLock like "MutexLock(&mu)" rather than
+// "MutexLock l(&mu)". Hence the typedef trick below.
+class GTestMutexLock {
+ public:
+ explicit GTestMutexLock(Mutex*) {} // NOLINT
+};
+
+typedef GTestMutexLock MutexLock;
+
+template <typename T>
class GTEST_API_ ThreadLocal {
- public:
- ThreadLocal() : value_() {}
- explicit ThreadLocal(const T& value) : value_(value) {}
- T* pointer() { return &value_; }
- const T* pointer() const { return &value_; }
- const T& get() const { return value_; }
- void set(const T& value) { value_ = value; }
- private:
- T value_;
-};
-
-#endif // GTEST_IS_THREADSAFE
-
-// Returns the number of threads running in the process, or 0 to indicate that
-// we cannot detect it.
-GTEST_API_ size_t GetThreadCount();
-
-#if GTEST_OS_WINDOWS
-# define GTEST_PATH_SEP_ "\\"
-# define GTEST_HAS_ALT_PATH_SEP_ 1
-#else
-# define GTEST_PATH_SEP_ "/"
-# define GTEST_HAS_ALT_PATH_SEP_ 0
-#endif // GTEST_OS_WINDOWS
-
-// Utilities for char.
-
-// isspace(int ch) and friends accept an unsigned char or EOF. char
-// may be signed, depending on the compiler (or compiler flags).
-// Therefore we need to cast a char to unsigned char before calling
-// isspace(), etc.
-
-inline bool IsAlpha(char ch) {
- return isalpha(static_cast<unsigned char>(ch)) != 0;
-}
-inline bool IsAlNum(char ch) {
- return isalnum(static_cast<unsigned char>(ch)) != 0;
-}
-inline bool IsDigit(char ch) {
- return isdigit(static_cast<unsigned char>(ch)) != 0;
-}
-inline bool IsLower(char ch) {
- return islower(static_cast<unsigned char>(ch)) != 0;
-}
-inline bool IsSpace(char ch) {
- return isspace(static_cast<unsigned char>(ch)) != 0;
-}
-inline bool IsUpper(char ch) {
- return isupper(static_cast<unsigned char>(ch)) != 0;
-}
-inline bool IsXDigit(char ch) {
- return isxdigit(static_cast<unsigned char>(ch)) != 0;
-}
+ public:
+ ThreadLocal() : value_() {}
+ explicit ThreadLocal(const T& value) : value_(value) {}
+ T* pointer() { return &value_; }
+ const T* pointer() const { return &value_; }
+ const T& get() const { return value_; }
+ void set(const T& value) { value_ = value; }
+ private:
+ T value_;
+};
+
+#endif // GTEST_IS_THREADSAFE
+
+// Returns the number of threads running in the process, or 0 to indicate that
+// we cannot detect it.
+GTEST_API_ size_t GetThreadCount();
+
+#if GTEST_OS_WINDOWS
+# define GTEST_PATH_SEP_ "\\"
+# define GTEST_HAS_ALT_PATH_SEP_ 1
+#else
+# define GTEST_PATH_SEP_ "/"
+# define GTEST_HAS_ALT_PATH_SEP_ 0
+#endif // GTEST_OS_WINDOWS
+
+// Utilities for char.
+
+// isspace(int ch) and friends accept an unsigned char or EOF. char
+// may be signed, depending on the compiler (or compiler flags).
+// Therefore we need to cast a char to unsigned char before calling
+// isspace(), etc.
+
+inline bool IsAlpha(char ch) {
+ return isalpha(static_cast<unsigned char>(ch)) != 0;
+}
+inline bool IsAlNum(char ch) {
+ return isalnum(static_cast<unsigned char>(ch)) != 0;
+}
+inline bool IsDigit(char ch) {
+ return isdigit(static_cast<unsigned char>(ch)) != 0;
+}
+inline bool IsLower(char ch) {
+ return islower(static_cast<unsigned char>(ch)) != 0;
+}
+inline bool IsSpace(char ch) {
+ return isspace(static_cast<unsigned char>(ch)) != 0;
+}
+inline bool IsUpper(char ch) {
+ return isupper(static_cast<unsigned char>(ch)) != 0;
+}
+inline bool IsXDigit(char ch) {
+ return isxdigit(static_cast<unsigned char>(ch)) != 0;
+}
#ifdef __cpp_char8_t
inline bool IsXDigit(char8_t ch) {
return isxdigit(static_cast<unsigned char>(ch)) != 0;
@@ -1953,70 +1953,70 @@ inline bool IsXDigit(char32_t ch) {
const unsigned char low_byte = static_cast<unsigned char>(ch);
return ch == low_byte && isxdigit(low_byte) != 0;
}
-inline bool IsXDigit(wchar_t ch) {
- const unsigned char low_byte = static_cast<unsigned char>(ch);
- return ch == low_byte && isxdigit(low_byte) != 0;
-}
-
-inline char ToLower(char ch) {
- return static_cast<char>(tolower(static_cast<unsigned char>(ch)));
-}
-inline char ToUpper(char ch) {
- return static_cast<char>(toupper(static_cast<unsigned char>(ch)));
-}
-
-inline std::string StripTrailingSpaces(std::string str) {
- std::string::iterator it = str.end();
- while (it != str.begin() && IsSpace(*--it))
- it = str.erase(it);
- return str;
-}
-
-// The testing::internal::posix namespace holds wrappers for common
-// POSIX functions. These wrappers hide the differences between
-// Windows/MSVC and POSIX systems. Since some compilers define these
-// standard functions as macros, the wrapper cannot have the same name
-// as the wrapped function.
-
-namespace posix {
-
-// Functions with a different name on Windows.
-
-#if GTEST_OS_WINDOWS
-
-typedef struct _stat StatStruct;
-
-# ifdef __BORLANDC__
+inline bool IsXDigit(wchar_t ch) {
+ const unsigned char low_byte = static_cast<unsigned char>(ch);
+ return ch == low_byte && isxdigit(low_byte) != 0;
+}
+
+inline char ToLower(char ch) {
+ return static_cast<char>(tolower(static_cast<unsigned char>(ch)));
+}
+inline char ToUpper(char ch) {
+ return static_cast<char>(toupper(static_cast<unsigned char>(ch)));
+}
+
+inline std::string StripTrailingSpaces(std::string str) {
+ std::string::iterator it = str.end();
+ while (it != str.begin() && IsSpace(*--it))
+ it = str.erase(it);
+ return str;
+}
+
+// The testing::internal::posix namespace holds wrappers for common
+// POSIX functions. These wrappers hide the differences between
+// Windows/MSVC and POSIX systems. Since some compilers define these
+// standard functions as macros, the wrapper cannot have the same name
+// as the wrapped function.
+
+namespace posix {
+
+// Functions with a different name on Windows.
+
+#if GTEST_OS_WINDOWS
+
+typedef struct _stat StatStruct;
+
+# ifdef __BORLANDC__
inline int DoIsATTY(int fd) { return isatty(fd); }
-inline int StrCaseCmp(const char* s1, const char* s2) {
- return stricmp(s1, s2);
-}
-inline char* StrDup(const char* src) { return strdup(src); }
-# else // !__BORLANDC__
-# if GTEST_OS_WINDOWS_MOBILE
+inline int StrCaseCmp(const char* s1, const char* s2) {
+ return stricmp(s1, s2);
+}
+inline char* StrDup(const char* src) { return strdup(src); }
+# else // !__BORLANDC__
+# if GTEST_OS_WINDOWS_MOBILE
inline int DoIsATTY(int /* fd */) { return 0; }
-# else
+# else
inline int DoIsATTY(int fd) { return _isatty(fd); }
-# endif // GTEST_OS_WINDOWS_MOBILE
-inline int StrCaseCmp(const char* s1, const char* s2) {
- return _stricmp(s1, s2);
-}
-inline char* StrDup(const char* src) { return _strdup(src); }
-# endif // __BORLANDC__
-
-# if GTEST_OS_WINDOWS_MOBILE
-inline int FileNo(FILE* file) { return reinterpret_cast<int>(_fileno(file)); }
-// Stat(), RmDir(), and IsDir() are not needed on Windows CE at this
-// time and thus not defined there.
-# else
-inline int FileNo(FILE* file) { return _fileno(file); }
-inline int Stat(const char* path, StatStruct* buf) { return _stat(path, buf); }
-inline int RmDir(const char* dir) { return _rmdir(dir); }
-inline bool IsDir(const StatStruct& st) {
- return (_S_IFDIR & st.st_mode) != 0;
-}
-# endif // GTEST_OS_WINDOWS_MOBILE
-
+# endif // GTEST_OS_WINDOWS_MOBILE
+inline int StrCaseCmp(const char* s1, const char* s2) {
+ return _stricmp(s1, s2);
+}
+inline char* StrDup(const char* src) { return _strdup(src); }
+# endif // __BORLANDC__
+
+# if GTEST_OS_WINDOWS_MOBILE
+inline int FileNo(FILE* file) { return reinterpret_cast<int>(_fileno(file)); }
+// Stat(), RmDir(), and IsDir() are not needed on Windows CE at this
+// time and thus not defined there.
+# else
+inline int FileNo(FILE* file) { return _fileno(file); }
+inline int Stat(const char* path, StatStruct* buf) { return _stat(path, buf); }
+inline int RmDir(const char* dir) { return _rmdir(dir); }
+inline bool IsDir(const StatStruct& st) {
+ return (_S_IFDIR & st.st_mode) != 0;
+}
+# endif // GTEST_OS_WINDOWS_MOBILE
+
#elif GTEST_OS_ESP8266
typedef struct stat StatStruct;
@@ -2033,22 +2033,22 @@ inline char* StrDup(const char* src) { return strdup(src); }
inline int RmDir(const char* dir) { return rmdir(dir); }
inline bool IsDir(const StatStruct& st) { return S_ISDIR(st.st_mode); }
-#else
-
-typedef struct stat StatStruct;
-
-inline int FileNo(FILE* file) { return fileno(file); }
+#else
+
+typedef struct stat StatStruct;
+
+inline int FileNo(FILE* file) { return fileno(file); }
inline int DoIsATTY(int fd) { return isatty(fd); }
-inline int Stat(const char* path, StatStruct* buf) { return stat(path, buf); }
-inline int StrCaseCmp(const char* s1, const char* s2) {
- return strcasecmp(s1, s2);
-}
-inline char* StrDup(const char* src) { return strdup(src); }
-inline int RmDir(const char* dir) { return rmdir(dir); }
-inline bool IsDir(const StatStruct& st) { return S_ISDIR(st.st_mode); }
-
-#endif // GTEST_OS_WINDOWS
-
+inline int Stat(const char* path, StatStruct* buf) { return stat(path, buf); }
+inline int StrCaseCmp(const char* s1, const char* s2) {
+ return strcasecmp(s1, s2);
+}
+inline char* StrDup(const char* src) { return strdup(src); }
+inline int RmDir(const char* dir) { return rmdir(dir); }
+inline bool IsDir(const StatStruct& st) { return S_ISDIR(st.st_mode); }
+
+#endif // GTEST_OS_WINDOWS
+
inline int IsATTY(int fd) {
// DoIsATTY might change errno (for example ENOTTY in case you redirect stdout
// to a file on Linux), which is unexpected, so save the previous value, and
@@ -2060,19 +2060,19 @@ inline int IsATTY(int fd) {
return isAttyValue;
}
-// Functions deprecated by MSVC 8.0.
-
+// Functions deprecated by MSVC 8.0.
+
GTEST_DISABLE_MSC_DEPRECATED_PUSH_()
-
-// ChDir(), FReopen(), FDOpen(), Read(), Write(), Close(), and
-// StrError() aren't needed on Windows CE at this time and thus not
-// defined there.
-
+
+// ChDir(), FReopen(), FDOpen(), Read(), Write(), Close(), and
+// StrError() aren't needed on Windows CE at this time and thus not
+// defined there.
+
#if !GTEST_OS_WINDOWS_MOBILE && !GTEST_OS_WINDOWS_PHONE && \
!GTEST_OS_WINDOWS_RT && !GTEST_OS_ESP8266 && !GTEST_OS_XTENSA
-inline int ChDir(const char* dir) { return chdir(dir); }
-#endif
-inline FILE* FOpen(const char* path, const char* mode) {
+inline int ChDir(const char* dir) { return chdir(dir); }
+#endif
+inline FILE* FOpen(const char* path, const char* mode) {
#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MINGW
struct wchar_codecvt : public std::codecvt<wchar_t, char, std::mbstate_t> {};
std::wstring_convert<wchar_codecvt> converter;
@@ -2080,177 +2080,177 @@ inline FILE* FOpen(const char* path, const char* mode) {
std::wstring wide_mode = converter.from_bytes(mode);
return _wfopen(wide_path.c_str(), wide_mode.c_str());
#else // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MINGW
- return fopen(path, mode);
+ return fopen(path, mode);
#endif // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MINGW
-}
-#if !GTEST_OS_WINDOWS_MOBILE
-inline FILE *FReopen(const char* path, const char* mode, FILE* stream) {
- return freopen(path, mode, stream);
-}
-inline FILE* FDOpen(int fd, const char* mode) { return fdopen(fd, mode); }
-#endif
-inline int FClose(FILE* fp) { return fclose(fp); }
-#if !GTEST_OS_WINDOWS_MOBILE
-inline int Read(int fd, void* buf, unsigned int count) {
- return static_cast<int>(read(fd, buf, count));
-}
-inline int Write(int fd, const void* buf, unsigned int count) {
- return static_cast<int>(write(fd, buf, count));
-}
-inline int Close(int fd) { return close(fd); }
-inline const char* StrError(int errnum) { return strerror(errnum); }
-#endif
-inline const char* GetEnv(const char* name) {
+}
+#if !GTEST_OS_WINDOWS_MOBILE
+inline FILE *FReopen(const char* path, const char* mode, FILE* stream) {
+ return freopen(path, mode, stream);
+}
+inline FILE* FDOpen(int fd, const char* mode) { return fdopen(fd, mode); }
+#endif
+inline int FClose(FILE* fp) { return fclose(fp); }
+#if !GTEST_OS_WINDOWS_MOBILE
+inline int Read(int fd, void* buf, unsigned int count) {
+ return static_cast<int>(read(fd, buf, count));
+}
+inline int Write(int fd, const void* buf, unsigned int count) {
+ return static_cast<int>(write(fd, buf, count));
+}
+inline int Close(int fd) { return close(fd); }
+inline const char* StrError(int errnum) { return strerror(errnum); }
+#endif
+inline const char* GetEnv(const char* name) {
#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_WINDOWS_PHONE || \
GTEST_OS_WINDOWS_RT || GTEST_OS_ESP8266 || GTEST_OS_XTENSA
// We are on an embedded platform, which has no environment variables.
- static_cast<void>(name); // To prevent 'unused argument' warning.
+ static_cast<void>(name); // To prevent 'unused argument' warning.
return nullptr;
-#elif defined(__BORLANDC__) || defined(__SunOS_5_8) || defined(__SunOS_5_9)
- // Environment variables which we programmatically clear will be set to the
- // empty string rather than unset (NULL). Handle that case.
- const char* const env = getenv(name);
+#elif defined(__BORLANDC__) || defined(__SunOS_5_8) || defined(__SunOS_5_9)
+ // Environment variables which we programmatically clear will be set to the
+ // empty string rather than unset (NULL). Handle that case.
+ const char* const env = getenv(name);
return (env != nullptr && env[0] != '\0') ? env : nullptr;
-#else
- return getenv(name);
-#endif
-}
-
+#else
+ return getenv(name);
+#endif
+}
+
GTEST_DISABLE_MSC_DEPRECATED_POP_()
-
-#if GTEST_OS_WINDOWS_MOBILE
-// Windows CE has no C library. The abort() function is used in
-// several places in Google Test. This implementation provides a reasonable
-// imitation of standard behaviour.
+
+#if GTEST_OS_WINDOWS_MOBILE
+// Windows CE has no C library. The abort() function is used in
+// several places in Google Test. This implementation provides a reasonable
+// imitation of standard behaviour.
[[noreturn]] void Abort();
-#else
+#else
[[noreturn]] inline void Abort() { abort(); }
-#endif // GTEST_OS_WINDOWS_MOBILE
-
-} // namespace posix
-
-// MSVC "deprecates" snprintf and issues warnings wherever it is used. In
-// order to avoid these warnings, we need to use _snprintf or _snprintf_s on
-// MSVC-based platforms. We map the GTEST_SNPRINTF_ macro to the appropriate
-// function in order to achieve that. We use macro definition here because
-// snprintf is a variadic function.
+#endif // GTEST_OS_WINDOWS_MOBILE
+
+} // namespace posix
+
+// MSVC "deprecates" snprintf and issues warnings wherever it is used. In
+// order to avoid these warnings, we need to use _snprintf or _snprintf_s on
+// MSVC-based platforms. We map the GTEST_SNPRINTF_ macro to the appropriate
+// function in order to achieve that. We use macro definition here because
+// snprintf is a variadic function.
#if _MSC_VER && !GTEST_OS_WINDOWS_MOBILE
-// MSVC 2005 and above support variadic macros.
-# define GTEST_SNPRINTF_(buffer, size, format, ...) \
- _snprintf_s(buffer, size, size, format, __VA_ARGS__)
-#elif defined(_MSC_VER)
+// MSVC 2005 and above support variadic macros.
+# define GTEST_SNPRINTF_(buffer, size, format, ...) \
+ _snprintf_s(buffer, size, size, format, __VA_ARGS__)
+#elif defined(_MSC_VER)
// Windows CE does not define _snprintf_s
-# define GTEST_SNPRINTF_ _snprintf
-#else
-# define GTEST_SNPRINTF_ snprintf
-#endif
-
+# define GTEST_SNPRINTF_ _snprintf
+#else
+# define GTEST_SNPRINTF_ snprintf
+#endif
+
// The biggest signed integer type the compiler supports.
-//
+//
// long long is guaranteed to be at least 64-bits in C++11.
using BiggestInt = long long; // NOLINT
-
+
// The maximum number a BiggestInt can represent.
constexpr BiggestInt kMaxBiggestInt = (std::numeric_limits<BiggestInt>::max)();
-// This template class serves as a compile-time function from size to
-// type. It maps a size in bytes to a primitive type with that
-// size. e.g.
-//
-// TypeWithSize<4>::UInt
-//
-// is typedef-ed to be unsigned int (unsigned integer made up of 4
-// bytes).
-//
-// Such functionality should belong to STL, but I cannot find it
-// there.
-//
-// Google Test uses this class in the implementation of floating-point
-// comparison.
-//
-// For now it only handles UInt (unsigned int) as that's all Google Test
-// needs. Other types can be easily added in the future if need
-// arises.
-template <size_t size>
-class TypeWithSize {
- public:
- // This prevents the user from using TypeWithSize<N> with incorrect
- // values of N.
+// This template class serves as a compile-time function from size to
+// type. It maps a size in bytes to a primitive type with that
+// size. e.g.
+//
+// TypeWithSize<4>::UInt
+//
+// is typedef-ed to be unsigned int (unsigned integer made up of 4
+// bytes).
+//
+// Such functionality should belong to STL, but I cannot find it
+// there.
+//
+// Google Test uses this class in the implementation of floating-point
+// comparison.
+//
+// For now it only handles UInt (unsigned int) as that's all Google Test
+// needs. Other types can be easily added in the future if need
+// arises.
+template <size_t size>
+class TypeWithSize {
+ public:
+ // This prevents the user from using TypeWithSize<N> with incorrect
+ // values of N.
using UInt = void;
-};
-
-// The specialization for size 4.
-template <>
-class TypeWithSize<4> {
- public:
+};
+
+// The specialization for size 4.
+template <>
+class TypeWithSize<4> {
+ public:
using Int = std::int32_t;
using UInt = std::uint32_t;
-};
-
-// The specialization for size 8.
-template <>
-class TypeWithSize<8> {
- public:
+};
+
+// The specialization for size 8.
+template <>
+class TypeWithSize<8> {
+ public:
using Int = std::int64_t;
using UInt = std::uint64_t;
-};
-
-// Integer types of known sizes.
+};
+
+// Integer types of known sizes.
using TimeInMillis = int64_t; // Represents time in milliseconds.
-
-// Utilities for command line flags and environment variables.
-
-// Macro for referencing flags.
-#if !defined(GTEST_FLAG)
-# define GTEST_FLAG(name) FLAGS_gtest_##name
-#endif // !defined(GTEST_FLAG)
-
-#if !defined(GTEST_USE_OWN_FLAGFILE_FLAG_)
-# define GTEST_USE_OWN_FLAGFILE_FLAG_ 1
-#endif // !defined(GTEST_USE_OWN_FLAGFILE_FLAG_)
-
-#if !defined(GTEST_DECLARE_bool_)
-# define GTEST_FLAG_SAVER_ ::testing::internal::GTestFlagSaver
-
-// Macros for declaring flags.
-# define GTEST_DECLARE_bool_(name) GTEST_API_ extern bool GTEST_FLAG(name)
-# define GTEST_DECLARE_int32_(name) \
+
+// Utilities for command line flags and environment variables.
+
+// Macro for referencing flags.
+#if !defined(GTEST_FLAG)
+# define GTEST_FLAG(name) FLAGS_gtest_##name
+#endif // !defined(GTEST_FLAG)
+
+#if !defined(GTEST_USE_OWN_FLAGFILE_FLAG_)
+# define GTEST_USE_OWN_FLAGFILE_FLAG_ 1
+#endif // !defined(GTEST_USE_OWN_FLAGFILE_FLAG_)
+
+#if !defined(GTEST_DECLARE_bool_)
+# define GTEST_FLAG_SAVER_ ::testing::internal::GTestFlagSaver
+
+// Macros for declaring flags.
+# define GTEST_DECLARE_bool_(name) GTEST_API_ extern bool GTEST_FLAG(name)
+# define GTEST_DECLARE_int32_(name) \
GTEST_API_ extern std::int32_t GTEST_FLAG(name)
# define GTEST_DECLARE_string_(name) \
- GTEST_API_ extern ::std::string GTEST_FLAG(name)
-
-// Macros for defining flags.
+ GTEST_API_ extern ::std::string GTEST_FLAG(name)
+
+// Macros for defining flags.
# define GTEST_DEFINE_bool_(name, default_val, doc) \
- GTEST_API_ bool GTEST_FLAG(name) = (default_val)
+ GTEST_API_ bool GTEST_FLAG(name) = (default_val)
# define GTEST_DEFINE_int32_(name, default_val, doc) \
GTEST_API_ std::int32_t GTEST_FLAG(name) = (default_val)
# define GTEST_DEFINE_string_(name, default_val, doc) \
- GTEST_API_ ::std::string GTEST_FLAG(name) = (default_val)
-
-#endif // !defined(GTEST_DECLARE_bool_)
-
-// Thread annotations
-#if !defined(GTEST_EXCLUSIVE_LOCK_REQUIRED_)
-# define GTEST_EXCLUSIVE_LOCK_REQUIRED_(locks)
-# define GTEST_LOCK_EXCLUDED_(locks)
-#endif // !defined(GTEST_EXCLUSIVE_LOCK_REQUIRED_)
-
-// Parses 'str' for a 32-bit signed integer. If successful, writes the result
-// to *value and returns true; otherwise leaves *value unchanged and returns
-// false.
+ GTEST_API_ ::std::string GTEST_FLAG(name) = (default_val)
+
+#endif // !defined(GTEST_DECLARE_bool_)
+
+// Thread annotations
+#if !defined(GTEST_EXCLUSIVE_LOCK_REQUIRED_)
+# define GTEST_EXCLUSIVE_LOCK_REQUIRED_(locks)
+# define GTEST_LOCK_EXCLUDED_(locks)
+#endif // !defined(GTEST_EXCLUSIVE_LOCK_REQUIRED_)
+
+// Parses 'str' for a 32-bit signed integer. If successful, writes the result
+// to *value and returns true; otherwise leaves *value unchanged and returns
+// false.
GTEST_API_ bool ParseInt32(const Message& src_text, const char* str,
int32_t* value);
-
+
// Parses a bool/int32_t/string from the environment variable
-// corresponding to the given Google Test flag.
-bool BoolFromGTestEnv(const char* flag, bool default_val);
+// corresponding to the given Google Test flag.
+bool BoolFromGTestEnv(const char* flag, bool default_val);
GTEST_API_ int32_t Int32FromGTestEnv(const char* flag, int32_t default_val);
std::string OutputFlagAlsoCheckEnvVar();
const char* StringFromGTestEnv(const char* flag, const char* default_val);
-
-} // namespace internal
-} // namespace testing
-
+
+} // namespace internal
+} // namespace testing
+
#if !defined(GTEST_INTERNAL_DEPRECATED)
// Internal Macro to mark an API deprecated, for googletest usage only
diff --git a/contrib/restricted/googletest/googletest/include/gtest/internal/gtest-string.h b/contrib/restricted/googletest/googletest/include/gtest/internal/gtest-string.h
index 8d23c82967..68de72c67f 100644
--- a/contrib/restricted/googletest/googletest/include/gtest/internal/gtest-string.h
+++ b/contrib/restricted/googletest/googletest/include/gtest/internal/gtest-string.h
@@ -1,175 +1,175 @@
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
// The Google C++ Testing and Mocking Framework (Google Test)
-//
-// This header file declares the String class and functions used internally by
-// Google Test. They are subject to change without notice. They should not used
-// by code external to Google Test.
-//
+//
+// This header file declares the String class and functions used internally by
+// Google Test. They are subject to change without notice. They should not used
+// by code external to Google Test.
+//
// This header file is #included by gtest-internal.h.
-// It should not be #included by other files.
-
+// It should not be #included by other files.
+
// GOOGLETEST_CM0001 DO NOT DELETE
#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
-
-#ifdef __BORLANDC__
-// string.h is not guaranteed to provide strcpy on C++ Builder.
+
+#ifdef __BORLANDC__
+// string.h is not guaranteed to provide strcpy on C++ Builder.
# error #include <mem.h>
-#endif
-
-#include <string.h>
+#endif
+
+#include <string.h>
#include <cstdint>
-#include <string>
-
-#include "gtest/internal/gtest-port.h"
-
-namespace testing {
-namespace internal {
-
-// String - an abstract class holding static string utilities.
-class GTEST_API_ String {
- public:
- // Static utility methods
-
- // Clones a 0-terminated C string, allocating memory using new. The
- // caller is responsible for deleting the return value using
- // delete[]. Returns the cloned string, or NULL if the input is
- // NULL.
- //
- // This is different from strdup() in string.h, which allocates
- // memory using malloc().
- static const char* CloneCString(const char* c_str);
-
-#if GTEST_OS_WINDOWS_MOBILE
- // Windows CE does not have the 'ANSI' versions of Win32 APIs. To be
- // able to pass strings to Win32 APIs on CE we need to convert them
- // to 'Unicode', UTF-16.
-
- // Creates a UTF-16 wide string from the given ANSI string, allocating
- // memory using new. The caller is responsible for deleting the return
- // value using delete[]. Returns the wide string, or NULL if the
- // input is NULL.
- //
- // The wide string is created using the ANSI codepage (CP_ACP) to
- // match the behaviour of the ANSI versions of Win32 calls and the
- // C runtime.
- static LPCWSTR AnsiToUtf16(const char* c_str);
-
- // Creates an ANSI string from the given wide string, allocating
- // memory using new. The caller is responsible for deleting the return
- // value using delete[]. Returns the ANSI string, or NULL if the
- // input is NULL.
- //
- // The returned string is created using the ANSI codepage (CP_ACP) to
- // match the behaviour of the ANSI versions of Win32 calls and the
- // C runtime.
- static const char* Utf16ToAnsi(LPCWSTR utf16_str);
-#endif
-
+#include <string>
+
+#include "gtest/internal/gtest-port.h"
+
+namespace testing {
+namespace internal {
+
+// String - an abstract class holding static string utilities.
+class GTEST_API_ String {
+ public:
+ // Static utility methods
+
+ // Clones a 0-terminated C string, allocating memory using new. The
+ // caller is responsible for deleting the return value using
+ // delete[]. Returns the cloned string, or NULL if the input is
+ // NULL.
+ //
+ // This is different from strdup() in string.h, which allocates
+ // memory using malloc().
+ static const char* CloneCString(const char* c_str);
+
+#if GTEST_OS_WINDOWS_MOBILE
+ // Windows CE does not have the 'ANSI' versions of Win32 APIs. To be
+ // able to pass strings to Win32 APIs on CE we need to convert them
+ // to 'Unicode', UTF-16.
+
+ // Creates a UTF-16 wide string from the given ANSI string, allocating
+ // memory using new. The caller is responsible for deleting the return
+ // value using delete[]. Returns the wide string, or NULL if the
+ // input is NULL.
+ //
+ // The wide string is created using the ANSI codepage (CP_ACP) to
+ // match the behaviour of the ANSI versions of Win32 calls and the
+ // C runtime.
+ static LPCWSTR AnsiToUtf16(const char* c_str);
+
+ // Creates an ANSI string from the given wide string, allocating
+ // memory using new. The caller is responsible for deleting the return
+ // value using delete[]. Returns the ANSI string, or NULL if the
+ // input is NULL.
+ //
+ // The returned string is created using the ANSI codepage (CP_ACP) to
+ // match the behaviour of the ANSI versions of Win32 calls and the
+ // C runtime.
+ static const char* Utf16ToAnsi(LPCWSTR utf16_str);
+#endif
+
// Compares two C strings. Returns true if and only if they have the same
// content.
- //
- // Unlike strcmp(), this function can handle NULL argument(s). A
- // NULL C string is considered different to any non-NULL C string,
- // including the empty string.
- static bool CStringEquals(const char* lhs, const char* rhs);
-
- // Converts a wide C string to a String using the UTF-8 encoding.
- // NULL will be converted to "(null)". If an error occurred during
- // the conversion, "(failed to convert from wide string)" is
- // returned.
- static std::string ShowWideCString(const wchar_t* wide_c_str);
-
+ //
+ // Unlike strcmp(), this function can handle NULL argument(s). A
+ // NULL C string is considered different to any non-NULL C string,
+ // including the empty string.
+ static bool CStringEquals(const char* lhs, const char* rhs);
+
+ // Converts a wide C string to a String using the UTF-8 encoding.
+ // NULL will be converted to "(null)". If an error occurred during
+ // the conversion, "(failed to convert from wide string)" is
+ // returned.
+ static std::string ShowWideCString(const wchar_t* wide_c_str);
+
// Compares two wide C strings. Returns true if and only if they have the
// same content.
- //
- // Unlike wcscmp(), this function can handle NULL argument(s). A
- // NULL C string is considered different to any non-NULL C string,
- // including the empty string.
- static bool WideCStringEquals(const wchar_t* lhs, const wchar_t* rhs);
-
+ //
+ // Unlike wcscmp(), this function can handle NULL argument(s). A
+ // NULL C string is considered different to any non-NULL C string,
+ // including the empty string.
+ static bool WideCStringEquals(const wchar_t* lhs, const wchar_t* rhs);
+
// Compares two C strings, ignoring case. Returns true if and only if
// they have the same content.
- //
- // Unlike strcasecmp(), this function can handle NULL argument(s).
- // A NULL C string is considered different to any non-NULL C string,
- // including the empty string.
- static bool CaseInsensitiveCStringEquals(const char* lhs,
- const char* rhs);
-
+ //
+ // Unlike strcasecmp(), this function can handle NULL argument(s).
+ // A NULL C string is considered different to any non-NULL C string,
+ // including the empty string.
+ static bool CaseInsensitiveCStringEquals(const char* lhs,
+ const char* rhs);
+
// Compares two wide C strings, ignoring case. Returns true if and only if
// they have the same content.
- //
- // Unlike wcscasecmp(), this function can handle NULL argument(s).
- // A NULL C string is considered different to any non-NULL wide C string,
- // including the empty string.
- // NB: The implementations on different platforms slightly differ.
- // On windows, this method uses _wcsicmp which compares according to LC_CTYPE
- // environment variable. On GNU platform this method uses wcscasecmp
- // which compares according to LC_CTYPE category of the current locale.
- // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the
- // current locale.
- static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs,
- const wchar_t* rhs);
-
+ //
+ // Unlike wcscasecmp(), this function can handle NULL argument(s).
+ // A NULL C string is considered different to any non-NULL wide C string,
+ // including the empty string.
+ // NB: The implementations on different platforms slightly differ.
+ // On windows, this method uses _wcsicmp which compares according to LC_CTYPE
+ // environment variable. On GNU platform this method uses wcscasecmp
+ // which compares according to LC_CTYPE category of the current locale.
+ // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the
+ // current locale.
+ static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs,
+ const wchar_t* rhs);
+
// Returns true if and only if the given string ends with the given suffix,
// ignoring case. Any string is considered to end with an empty suffix.
- static bool EndsWithCaseInsensitive(
- const std::string& str, const std::string& suffix);
-
- // Formats an int value as "%02d".
- static std::string FormatIntWidth2(int value); // "%02d" for width == 2
-
+ static bool EndsWithCaseInsensitive(
+ const std::string& str, const std::string& suffix);
+
+ // Formats an int value as "%02d".
+ static std::string FormatIntWidth2(int value); // "%02d" for width == 2
+
// Formats an int value to given width with leading zeros.
static std::string FormatIntWidthN(int value, int width);
- // Formats an int value as "%X".
- static std::string FormatHexInt(int value);
-
+ // Formats an int value as "%X".
+ static std::string FormatHexInt(int value);
+
// Formats an int value as "%X".
static std::string FormatHexUInt32(uint32_t value);
- // Formats a byte as "%02X".
- static std::string FormatByte(unsigned char value);
-
- private:
- String(); // Not meant to be instantiated.
-}; // class String
-
-// Gets the content of the stringstream's buffer as an std::string. Each '\0'
-// character in the buffer is replaced with "\\0".
-GTEST_API_ std::string StringStreamToString(::std::stringstream* stream);
-
-} // namespace internal
-} // namespace testing
-
+ // Formats a byte as "%02X".
+ static std::string FormatByte(unsigned char value);
+
+ private:
+ String(); // Not meant to be instantiated.
+}; // class String
+
+// Gets the content of the stringstream's buffer as an std::string. Each '\0'
+// character in the buffer is replaced with "\\0".
+GTEST_API_ std::string StringStreamToString(::std::stringstream* stream);
+
+} // namespace internal
+} // namespace testing
+
#endif // GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
diff --git a/contrib/restricted/googletest/googletest/include/gtest/internal/gtest-type-util.h b/contrib/restricted/googletest/googletest/include/gtest/internal/gtest-type-util.h
index 7c552bd894..b87a2e2cac 100644
--- a/contrib/restricted/googletest/googletest/include/gtest/internal/gtest-type-util.h
+++ b/contrib/restricted/googletest/googletest/include/gtest/internal/gtest-type-util.h
@@ -1,53 +1,53 @@
-// Copyright 2008 Google Inc.
-// All Rights Reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Type utilities needed for implementing typed and type-parameterized
+// Copyright 2008 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Type utilities needed for implementing typed and type-parameterized
// tests.
-
+
// GOOGLETEST_CM0001 DO NOT DELETE
#ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
#define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
-
-#include "gtest/internal/gtest-port.h"
-
-// #ifdef __GNUC__ is too general here. It is possible to use gcc without using
-// libstdc++ (which is where cxxabi.h comes from).
-# if GTEST_HAS_CXXABI_H_
-# include <cxxabi.h>
-# elif defined(__HP_aCC)
-# include <acxx_demangle.h>
-# endif // GTEST_HASH_CXXABI_H_
-
-namespace testing {
-namespace internal {
-
+
+#include "gtest/internal/gtest-port.h"
+
+// #ifdef __GNUC__ is too general here. It is possible to use gcc without using
+// libstdc++ (which is where cxxabi.h comes from).
+# if GTEST_HAS_CXXABI_H_
+# include <cxxabi.h>
+# elif defined(__HP_aCC)
+# include <acxx_demangle.h>
+# endif // GTEST_HASH_CXXABI_H_
+
+namespace testing {
+namespace internal {
+
// Canonicalizes a given name with respect to the Standard C++ Library.
// This handles removing the inline namespace within `std` that is
// used by various standard libraries (e.g., `std::__1`). Names outside
@@ -96,88 +96,88 @@ std::string GetTypeName() {
#else
return "<type>";
#endif // GTEST_HAS_RTTI
-}
-
+}
+
// A unique type indicating an empty node
-struct None {};
-
-# define GTEST_TEMPLATE_ template <typename T> class
-
-// The template "selector" struct TemplateSel<Tmpl> is used to
-// represent Tmpl, which must be a class template with one type
-// parameter, as a type. TemplateSel<Tmpl>::Bind<T>::type is defined
-// as the type Tmpl<T>. This allows us to actually instantiate the
-// template "selected" by TemplateSel<Tmpl>.
-//
-// This trick is necessary for simulating typedef for class templates,
-// which C++ doesn't support directly.
-template <GTEST_TEMPLATE_ Tmpl>
-struct TemplateSel {
- template <typename T>
- struct Bind {
- typedef Tmpl<T> type;
- };
-};
-
-# define GTEST_BIND_(TmplSel, T) \
- TmplSel::template Bind<T>::type
-
+struct None {};
+
+# define GTEST_TEMPLATE_ template <typename T> class
+
+// The template "selector" struct TemplateSel<Tmpl> is used to
+// represent Tmpl, which must be a class template with one type
+// parameter, as a type. TemplateSel<Tmpl>::Bind<T>::type is defined
+// as the type Tmpl<T>. This allows us to actually instantiate the
+// template "selected" by TemplateSel<Tmpl>.
+//
+// This trick is necessary for simulating typedef for class templates,
+// which C++ doesn't support directly.
+template <GTEST_TEMPLATE_ Tmpl>
+struct TemplateSel {
+ template <typename T>
+ struct Bind {
+ typedef Tmpl<T> type;
+ };
+};
+
+# define GTEST_BIND_(TmplSel, T) \
+ TmplSel::template Bind<T>::type
+
template <GTEST_TEMPLATE_ Head_, GTEST_TEMPLATE_... Tail_>
struct Templates {
using Head = TemplateSel<Head_>;
using Tail = Templates<Tail_...>;
-};
-
+};
+
template <GTEST_TEMPLATE_ Head_>
struct Templates<Head_> {
using Head = TemplateSel<Head_>;
using Tail = None;
-};
-
+};
+
// Tuple-like type lists
template <typename Head_, typename... Tail_>
struct Types {
using Head = Head_;
using Tail = Types<Tail_...>;
-};
-
+};
+
template <typename Head_>
struct Types<Head_> {
using Head = Head_;
using Tail = None;
-};
-
+};
+
// Helper metafunctions to tell apart a single type from types
// generated by ::testing::Types
template <typename... Ts>
struct ProxyTypeList {
using type = Types<Ts...>;
-};
-
+};
+
template <typename>
struct is_proxy_type_list : std::false_type {};
-
+
template <typename... Ts>
struct is_proxy_type_list<ProxyTypeList<Ts...>> : std::true_type {};
-
+
// Generator which conditionally creates type lists.
// It recognizes if a requested type list should be created
// and prevents creating a new type list nested within another one.
-template <typename T>
+template <typename T>
struct GenerateTypeList {
private:
using proxy = typename std::conditional<is_proxy_type_list<T>::value, T,
ProxyTypeList<T>>::type;
-
+
public:
using type = typename proxy::type;
-};
-
-} // namespace internal
+};
+
+} // namespace internal
template <typename... Ts>
using Types = internal::ProxyTypeList<Ts...>;
-} // namespace testing
-
+} // namespace testing
+
#endif // GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
diff --git a/contrib/restricted/googletest/googletest/src/gtest-all.cc b/contrib/restricted/googletest/googletest/src/gtest-all.cc
index 6656b80225..ad292905cf 100644
--- a/contrib/restricted/googletest/googletest/src/gtest-all.cc
+++ b/contrib/restricted/googletest/googletest/src/gtest-all.cc
@@ -1,48 +1,48 @@
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
+//
// Google C++ Testing and Mocking Framework (Google Test)
-//
-// Sometimes it's desirable to build Google Test by compiling a single file.
-// This file serves this purpose.
-
-// This line ensures that gtest.h can be compiled on its own, even
-// when it's fused.
-#include "gtest/gtest.h"
-
-// The following lines pull in the real gtest *.cc files.
-#include "src/gtest.cc"
-#include "src/gtest-death-test.cc"
-#include "src/gtest-filepath.cc"
+//
+// Sometimes it's desirable to build Google Test by compiling a single file.
+// This file serves this purpose.
+
+// This line ensures that gtest.h can be compiled on its own, even
+// when it's fused.
+#include "gtest/gtest.h"
+
+// The following lines pull in the real gtest *.cc files.
+#include "src/gtest.cc"
+#include "src/gtest-death-test.cc"
+#include "src/gtest-filepath.cc"
#include "src/gtest-matchers.cc"
-#include "src/gtest-port.cc"
-#include "src/gtest-printers.cc"
-#include "src/gtest-test-part.cc"
-#include "src/gtest-typed-test.cc"
+#include "src/gtest-port.cc"
+#include "src/gtest-printers.cc"
+#include "src/gtest-test-part.cc"
+#include "src/gtest-typed-test.cc"
diff --git a/contrib/restricted/googletest/googletest/src/gtest-death-test.cc b/contrib/restricted/googletest/googletest/src/gtest-death-test.cc
index 60b121120f..0d184ad24a 100644
--- a/contrib/restricted/googletest/googletest/src/gtest-death-test.cc
+++ b/contrib/restricted/googletest/googletest/src/gtest-death-test.cc
@@ -1,70 +1,70 @@
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//
-// This file implements death tests.
-
-#include "gtest/gtest-death-test.h"
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+//
+// This file implements death tests.
+
+#include "gtest/gtest-death-test.h"
#include <functional>
#include <utility>
-#include "gtest/internal/gtest-port.h"
-#include "gtest/internal/custom/gtest.h"
-
-#if GTEST_HAS_DEATH_TEST
-
-# if GTEST_OS_MAC
-# include <crt_externs.h>
-# endif // GTEST_OS_MAC
-
-# include <errno.h>
-# include <fcntl.h>
-# include <limits.h>
-
-# if GTEST_OS_LINUX
-# include <signal.h>
-# endif // GTEST_OS_LINUX
-
-# include <stdarg.h>
-
-# if GTEST_OS_WINDOWS
-# include <windows.h>
-# else
-# include <sys/mman.h>
-# include <sys/wait.h>
-# endif // GTEST_OS_WINDOWS
-
-# if GTEST_OS_QNX
-# include <spawn.h>
-# endif // GTEST_OS_QNX
-
+#include "gtest/internal/gtest-port.h"
+#include "gtest/internal/custom/gtest.h"
+
+#if GTEST_HAS_DEATH_TEST
+
+# if GTEST_OS_MAC
+# include <crt_externs.h>
+# endif // GTEST_OS_MAC
+
+# include <errno.h>
+# include <fcntl.h>
+# include <limits.h>
+
+# if GTEST_OS_LINUX
+# include <signal.h>
+# endif // GTEST_OS_LINUX
+
+# include <stdarg.h>
+
+# if GTEST_OS_WINDOWS
+# include <windows.h>
+# else
+# include <sys/mman.h>
+# include <sys/wait.h>
+# endif // GTEST_OS_WINDOWS
+
+# if GTEST_OS_QNX
+# include <spawn.h>
+# endif // GTEST_OS_QNX
+
# if GTEST_OS_FUCHSIA
# error #include <lib/fdio/fd.h>
# error #include <lib/fdio/io.h>
@@ -79,189 +79,189 @@
# error #include <zircon/syscalls/port.h>
# endif // GTEST_OS_FUCHSIA
-#endif // GTEST_HAS_DEATH_TEST
-
-#include "gtest/gtest-message.h"
-#include "gtest/internal/gtest-string.h"
-#include "src/gtest-internal-inl.h"
-
-namespace testing {
-
-// Constants.
-
-// The default death test style.
+#endif // GTEST_HAS_DEATH_TEST
+
+#include "gtest/gtest-message.h"
+#include "gtest/internal/gtest-string.h"
+#include "src/gtest-internal-inl.h"
+
+namespace testing {
+
+// Constants.
+
+// The default death test style.
//
// This is defined in internal/gtest-port.h as "fast", but can be overridden by
// a definition in internal/custom/gtest-port.h. The recommended value, which is
// used internally at Google, is "threadsafe".
static const char kDefaultDeathTestStyle[] = GTEST_DEFAULT_DEATH_TEST_STYLE;
-
-GTEST_DEFINE_string_(
- death_test_style,
- internal::StringFromGTestEnv("death_test_style", kDefaultDeathTestStyle),
- "Indicates how to run a death test in a forked child process: "
- "\"threadsafe\" (child process re-executes the test binary "
- "from the beginning, running only the specific death test) or "
- "\"fast\" (child process runs the death test immediately "
- "after forking).");
-
-GTEST_DEFINE_bool_(
- death_test_use_fork,
- internal::BoolFromGTestEnv("death_test_use_fork", false),
- "Instructs to use fork()/_exit() instead of clone() in death tests. "
- "Ignored and always uses fork() on POSIX systems where clone() is not "
- "implemented. Useful when running under valgrind or similar tools if "
- "those do not support clone(). Valgrind 3.3.1 will just fail if "
- "it sees an unsupported combination of clone() flags. "
- "It is not recommended to use this flag w/o valgrind though it will "
- "work in 99% of the cases. Once valgrind is fixed, this flag will "
- "most likely be removed.");
-
-namespace internal {
-GTEST_DEFINE_string_(
- internal_run_death_test, "",
- "Indicates the file, line number, temporal index of "
- "the single death test to run, and a file descriptor to "
- "which a success code may be sent, all separated by "
+
+GTEST_DEFINE_string_(
+ death_test_style,
+ internal::StringFromGTestEnv("death_test_style", kDefaultDeathTestStyle),
+ "Indicates how to run a death test in a forked child process: "
+ "\"threadsafe\" (child process re-executes the test binary "
+ "from the beginning, running only the specific death test) or "
+ "\"fast\" (child process runs the death test immediately "
+ "after forking).");
+
+GTEST_DEFINE_bool_(
+ death_test_use_fork,
+ internal::BoolFromGTestEnv("death_test_use_fork", false),
+ "Instructs to use fork()/_exit() instead of clone() in death tests. "
+ "Ignored and always uses fork() on POSIX systems where clone() is not "
+ "implemented. Useful when running under valgrind or similar tools if "
+ "those do not support clone(). Valgrind 3.3.1 will just fail if "
+ "it sees an unsupported combination of clone() flags. "
+ "It is not recommended to use this flag w/o valgrind though it will "
+ "work in 99% of the cases. Once valgrind is fixed, this flag will "
+ "most likely be removed.");
+
+namespace internal {
+GTEST_DEFINE_string_(
+ internal_run_death_test, "",
+ "Indicates the file, line number, temporal index of "
+ "the single death test to run, and a file descriptor to "
+ "which a success code may be sent, all separated by "
"the '|' characters. This flag is specified if and only if the "
"current process is a sub-process launched for running a thread-safe "
- "death test. FOR INTERNAL USE ONLY.");
-} // namespace internal
-
-#if GTEST_HAS_DEATH_TEST
-
-namespace internal {
-
-// Valid only for fast death tests. Indicates the code is running in the
-// child process of a fast style death test.
+ "death test. FOR INTERNAL USE ONLY.");
+} // namespace internal
+
+#if GTEST_HAS_DEATH_TEST
+
+namespace internal {
+
+// Valid only for fast death tests. Indicates the code is running in the
+// child process of a fast style death test.
# if !GTEST_OS_WINDOWS && !GTEST_OS_FUCHSIA
-static bool g_in_fast_death_test_child = false;
-# endif
-
-// Returns a Boolean value indicating whether the caller is currently
-// executing in the context of the death test child process. Tools such as
-// Valgrind heap checkers may need this to modify their behavior in death
-// tests. IMPORTANT: This is an internal utility. Using it may break the
-// implementation of death tests. User code MUST NOT use it.
-bool InDeathTestChild() {
+static bool g_in_fast_death_test_child = false;
+# endif
+
+// Returns a Boolean value indicating whether the caller is currently
+// executing in the context of the death test child process. Tools such as
+// Valgrind heap checkers may need this to modify their behavior in death
+// tests. IMPORTANT: This is an internal utility. Using it may break the
+// implementation of death tests. User code MUST NOT use it.
+bool InDeathTestChild() {
# if GTEST_OS_WINDOWS || GTEST_OS_FUCHSIA
-
+
// On Windows and Fuchsia, death tests are thread-safe regardless of the value
// of the death_test_style flag.
- return !GTEST_FLAG(internal_run_death_test).empty();
-
-# else
-
- if (GTEST_FLAG(death_test_style) == "threadsafe")
- return !GTEST_FLAG(internal_run_death_test).empty();
- else
- return g_in_fast_death_test_child;
-#endif
-}
-
-} // namespace internal
-
-// ExitedWithCode constructor.
-ExitedWithCode::ExitedWithCode(int exit_code) : exit_code_(exit_code) {
-}
-
-// ExitedWithCode function-call operator.
-bool ExitedWithCode::operator()(int exit_status) const {
+ return !GTEST_FLAG(internal_run_death_test).empty();
+
+# else
+
+ if (GTEST_FLAG(death_test_style) == "threadsafe")
+ return !GTEST_FLAG(internal_run_death_test).empty();
+ else
+ return g_in_fast_death_test_child;
+#endif
+}
+
+} // namespace internal
+
+// ExitedWithCode constructor.
+ExitedWithCode::ExitedWithCode(int exit_code) : exit_code_(exit_code) {
+}
+
+// ExitedWithCode function-call operator.
+bool ExitedWithCode::operator()(int exit_status) const {
# if GTEST_OS_WINDOWS || GTEST_OS_FUCHSIA
-
- return exit_status == exit_code_;
-
-# else
-
- return WIFEXITED(exit_status) && WEXITSTATUS(exit_status) == exit_code_;
-
+
+ return exit_status == exit_code_;
+
+# else
+
+ return WIFEXITED(exit_status) && WEXITSTATUS(exit_status) == exit_code_;
+
# endif // GTEST_OS_WINDOWS || GTEST_OS_FUCHSIA
-}
-
+}
+
# if !GTEST_OS_WINDOWS && !GTEST_OS_FUCHSIA
-// KilledBySignal constructor.
-KilledBySignal::KilledBySignal(int signum) : signum_(signum) {
-}
-
-// KilledBySignal function-call operator.
-bool KilledBySignal::operator()(int exit_status) const {
-# if defined(GTEST_KILLED_BY_SIGNAL_OVERRIDE_)
- {
- bool result;
- if (GTEST_KILLED_BY_SIGNAL_OVERRIDE_(signum_, exit_status, &result)) {
- return result;
- }
- }
-# endif // defined(GTEST_KILLED_BY_SIGNAL_OVERRIDE_)
- return WIFSIGNALED(exit_status) && WTERMSIG(exit_status) == signum_;
-}
+// KilledBySignal constructor.
+KilledBySignal::KilledBySignal(int signum) : signum_(signum) {
+}
+
+// KilledBySignal function-call operator.
+bool KilledBySignal::operator()(int exit_status) const {
+# if defined(GTEST_KILLED_BY_SIGNAL_OVERRIDE_)
+ {
+ bool result;
+ if (GTEST_KILLED_BY_SIGNAL_OVERRIDE_(signum_, exit_status, &result)) {
+ return result;
+ }
+ }
+# endif // defined(GTEST_KILLED_BY_SIGNAL_OVERRIDE_)
+ return WIFSIGNALED(exit_status) && WTERMSIG(exit_status) == signum_;
+}
# endif // !GTEST_OS_WINDOWS && !GTEST_OS_FUCHSIA
-
-namespace internal {
-
-// Utilities needed for death tests.
-
-// Generates a textual description of a given exit code, in the format
-// specified by wait(2).
-static std::string ExitSummary(int exit_code) {
- Message m;
-
+
+namespace internal {
+
+// Utilities needed for death tests.
+
+// Generates a textual description of a given exit code, in the format
+// specified by wait(2).
+static std::string ExitSummary(int exit_code) {
+ Message m;
+
# if GTEST_OS_WINDOWS || GTEST_OS_FUCHSIA
-
- m << "Exited with exit status " << exit_code;
-
-# else
-
- if (WIFEXITED(exit_code)) {
- m << "Exited with exit status " << WEXITSTATUS(exit_code);
- } else if (WIFSIGNALED(exit_code)) {
- m << "Terminated by signal " << WTERMSIG(exit_code);
- }
-# ifdef WCOREDUMP
- if (WCOREDUMP(exit_code)) {
- m << " (core dumped)";
- }
-# endif
+
+ m << "Exited with exit status " << exit_code;
+
+# else
+
+ if (WIFEXITED(exit_code)) {
+ m << "Exited with exit status " << WEXITSTATUS(exit_code);
+ } else if (WIFSIGNALED(exit_code)) {
+ m << "Terminated by signal " << WTERMSIG(exit_code);
+ }
+# ifdef WCOREDUMP
+ if (WCOREDUMP(exit_code)) {
+ m << " (core dumped)";
+ }
+# endif
# endif // GTEST_OS_WINDOWS || GTEST_OS_FUCHSIA
-
- return m.GetString();
-}
-
-// Returns true if exit_status describes a process that was terminated
-// by a signal, or exited normally with a nonzero exit code.
-bool ExitedUnsuccessfully(int exit_status) {
- return !ExitedWithCode(0)(exit_status);
-}
-
+
+ return m.GetString();
+}
+
+// Returns true if exit_status describes a process that was terminated
+// by a signal, or exited normally with a nonzero exit code.
+bool ExitedUnsuccessfully(int exit_status) {
+ return !ExitedWithCode(0)(exit_status);
+}
+
# if !GTEST_OS_WINDOWS && !GTEST_OS_FUCHSIA
-// Generates a textual failure message when a death test finds more than
-// one thread running, or cannot determine the number of threads, prior
-// to executing the given statement. It is the responsibility of the
-// caller not to pass a thread_count of 1.
-static std::string DeathTestThreadWarning(size_t thread_count) {
- Message msg;
- msg << "Death tests use fork(), which is unsafe particularly"
- << " in a threaded context. For this test, " << GTEST_NAME_ << " ";
+// Generates a textual failure message when a death test finds more than
+// one thread running, or cannot determine the number of threads, prior
+// to executing the given statement. It is the responsibility of the
+// caller not to pass a thread_count of 1.
+static std::string DeathTestThreadWarning(size_t thread_count) {
+ Message msg;
+ msg << "Death tests use fork(), which is unsafe particularly"
+ << " in a threaded context. For this test, " << GTEST_NAME_ << " ";
if (thread_count == 0) {
- msg << "couldn't detect the number of threads.";
+ msg << "couldn't detect the number of threads.";
} else {
- msg << "detected " << thread_count << " threads.";
+ msg << "detected " << thread_count << " threads.";
}
msg << " See "
"https://github.com/google/googletest/blob/master/docs/"
"advanced.md#death-tests-and-threads"
<< " for more explanation and suggested solutions, especially if"
<< " this is the last message you see before your test times out.";
- return msg.GetString();
-}
+ return msg.GetString();
+}
# endif // !GTEST_OS_WINDOWS && !GTEST_OS_FUCHSIA
-
-// Flag characters for reporting a death test that did not die.
-static const char kDeathTestLived = 'L';
-static const char kDeathTestReturned = 'R';
-static const char kDeathTestThrew = 'T';
-static const char kDeathTestInternalError = 'I';
-
+
+// Flag characters for reporting a death test that did not die.
+static const char kDeathTestLived = 'L';
+static const char kDeathTestReturned = 'R';
+static const char kDeathTestThrew = 'T';
+static const char kDeathTestInternalError = 'I';
+
#if GTEST_OS_FUCHSIA
// File descriptor used for the pipe in the child process.
@@ -269,488 +269,488 @@ static const int kFuchsiaReadPipeFd = 3;
#endif
-// An enumeration describing all of the possible ways that a death test can
-// conclude. DIED means that the process died while executing the test
-// code; LIVED means that process lived beyond the end of the test code;
-// RETURNED means that the test statement attempted to execute a return
-// statement, which is not allowed; THREW means that the test statement
-// returned control by throwing an exception. IN_PROGRESS means the test
-// has not yet concluded.
-enum DeathTestOutcome { IN_PROGRESS, DIED, LIVED, RETURNED, THREW };
-
-// Routine for aborting the program which is safe to call from an
-// exec-style death test child process, in which case the error
-// message is propagated back to the parent process. Otherwise, the
-// message is simply printed to stderr. In either case, the program
-// then exits with status 1.
+// An enumeration describing all of the possible ways that a death test can
+// conclude. DIED means that the process died while executing the test
+// code; LIVED means that process lived beyond the end of the test code;
+// RETURNED means that the test statement attempted to execute a return
+// statement, which is not allowed; THREW means that the test statement
+// returned control by throwing an exception. IN_PROGRESS means the test
+// has not yet concluded.
+enum DeathTestOutcome { IN_PROGRESS, DIED, LIVED, RETURNED, THREW };
+
+// Routine for aborting the program which is safe to call from an
+// exec-style death test child process, in which case the error
+// message is propagated back to the parent process. Otherwise, the
+// message is simply printed to stderr. In either case, the program
+// then exits with status 1.
static void DeathTestAbort(const std::string& message) {
- // On a POSIX system, this function may be called from a threadsafe-style
- // death test child process, which operates on a very small stack. Use
- // the heap for any additional non-minuscule memory requirements.
- const InternalRunDeathTestFlag* const flag =
- GetUnitTestImpl()->internal_run_death_test_flag();
+ // On a POSIX system, this function may be called from a threadsafe-style
+ // death test child process, which operates on a very small stack. Use
+ // the heap for any additional non-minuscule memory requirements.
+ const InternalRunDeathTestFlag* const flag =
+ GetUnitTestImpl()->internal_run_death_test_flag();
if (flag != nullptr) {
- FILE* parent = posix::FDOpen(flag->write_fd(), "w");
- fputc(kDeathTestInternalError, parent);
- fprintf(parent, "%s", message.c_str());
- fflush(parent);
- _exit(1);
- } else {
- fprintf(stderr, "%s", message.c_str());
- fflush(stderr);
- posix::Abort();
- }
-}
-
-// A replacement for CHECK that calls DeathTestAbort if the assertion
-// fails.
-# define GTEST_DEATH_TEST_CHECK_(expression) \
- do { \
- if (!::testing::internal::IsTrue(expression)) { \
- DeathTestAbort( \
- ::std::string("CHECK failed: File ") + __FILE__ + ", line " \
- + ::testing::internal::StreamableToString(__LINE__) + ": " \
- + #expression); \
- } \
- } while (::testing::internal::AlwaysFalse())
-
-// This macro is similar to GTEST_DEATH_TEST_CHECK_, but it is meant for
-// evaluating any system call that fulfills two conditions: it must return
-// -1 on failure, and set errno to EINTR when it is interrupted and
-// should be tried again. The macro expands to a loop that repeatedly
-// evaluates the expression as long as it evaluates to -1 and sets
-// errno to EINTR. If the expression evaluates to -1 but errno is
-// something other than EINTR, DeathTestAbort is called.
-# define GTEST_DEATH_TEST_CHECK_SYSCALL_(expression) \
- do { \
- int gtest_retval; \
- do { \
- gtest_retval = (expression); \
- } while (gtest_retval == -1 && errno == EINTR); \
- if (gtest_retval == -1) { \
- DeathTestAbort( \
- ::std::string("CHECK failed: File ") + __FILE__ + ", line " \
- + ::testing::internal::StreamableToString(__LINE__) + ": " \
- + #expression + " != -1"); \
- } \
- } while (::testing::internal::AlwaysFalse())
-
-// Returns the message describing the last system error in errno.
-std::string GetLastErrnoDescription() {
- return errno == 0 ? "" : posix::StrError(errno);
-}
-
-// This is called from a death test parent process to read a failure
-// message from the death test child process and log it with the FATAL
-// severity. On Windows, the message is read from a pipe handle. On other
-// platforms, it is read from a file descriptor.
-static void FailFromInternalError(int fd) {
- Message error;
- char buffer[256];
- int num_read;
-
- do {
- while ((num_read = posix::Read(fd, buffer, 255)) > 0) {
- buffer[num_read] = '\0';
- error << buffer;
- }
- } while (num_read == -1 && errno == EINTR);
-
- if (num_read == 0) {
- GTEST_LOG_(FATAL) << error.GetString();
- } else {
- const int last_error = errno;
- GTEST_LOG_(FATAL) << "Error while reading death test internal: "
- << GetLastErrnoDescription() << " [" << last_error << "]";
- }
-}
-
-// Death test constructor. Increments the running death test count
-// for the current test.
-DeathTest::DeathTest() {
- TestInfo* const info = GetUnitTestImpl()->current_test_info();
+ FILE* parent = posix::FDOpen(flag->write_fd(), "w");
+ fputc(kDeathTestInternalError, parent);
+ fprintf(parent, "%s", message.c_str());
+ fflush(parent);
+ _exit(1);
+ } else {
+ fprintf(stderr, "%s", message.c_str());
+ fflush(stderr);
+ posix::Abort();
+ }
+}
+
+// A replacement for CHECK that calls DeathTestAbort if the assertion
+// fails.
+# define GTEST_DEATH_TEST_CHECK_(expression) \
+ do { \
+ if (!::testing::internal::IsTrue(expression)) { \
+ DeathTestAbort( \
+ ::std::string("CHECK failed: File ") + __FILE__ + ", line " \
+ + ::testing::internal::StreamableToString(__LINE__) + ": " \
+ + #expression); \
+ } \
+ } while (::testing::internal::AlwaysFalse())
+
+// This macro is similar to GTEST_DEATH_TEST_CHECK_, but it is meant for
+// evaluating any system call that fulfills two conditions: it must return
+// -1 on failure, and set errno to EINTR when it is interrupted and
+// should be tried again. The macro expands to a loop that repeatedly
+// evaluates the expression as long as it evaluates to -1 and sets
+// errno to EINTR. If the expression evaluates to -1 but errno is
+// something other than EINTR, DeathTestAbort is called.
+# define GTEST_DEATH_TEST_CHECK_SYSCALL_(expression) \
+ do { \
+ int gtest_retval; \
+ do { \
+ gtest_retval = (expression); \
+ } while (gtest_retval == -1 && errno == EINTR); \
+ if (gtest_retval == -1) { \
+ DeathTestAbort( \
+ ::std::string("CHECK failed: File ") + __FILE__ + ", line " \
+ + ::testing::internal::StreamableToString(__LINE__) + ": " \
+ + #expression + " != -1"); \
+ } \
+ } while (::testing::internal::AlwaysFalse())
+
+// Returns the message describing the last system error in errno.
+std::string GetLastErrnoDescription() {
+ return errno == 0 ? "" : posix::StrError(errno);
+}
+
+// This is called from a death test parent process to read a failure
+// message from the death test child process and log it with the FATAL
+// severity. On Windows, the message is read from a pipe handle. On other
+// platforms, it is read from a file descriptor.
+static void FailFromInternalError(int fd) {
+ Message error;
+ char buffer[256];
+ int num_read;
+
+ do {
+ while ((num_read = posix::Read(fd, buffer, 255)) > 0) {
+ buffer[num_read] = '\0';
+ error << buffer;
+ }
+ } while (num_read == -1 && errno == EINTR);
+
+ if (num_read == 0) {
+ GTEST_LOG_(FATAL) << error.GetString();
+ } else {
+ const int last_error = errno;
+ GTEST_LOG_(FATAL) << "Error while reading death test internal: "
+ << GetLastErrnoDescription() << " [" << last_error << "]";
+ }
+}
+
+// Death test constructor. Increments the running death test count
+// for the current test.
+DeathTest::DeathTest() {
+ TestInfo* const info = GetUnitTestImpl()->current_test_info();
if (info == nullptr) {
- DeathTestAbort("Cannot run a death test outside of a TEST or "
- "TEST_F construct");
- }
-}
-
-// Creates and returns a death test by dispatching to the current
-// death test factory.
+ DeathTestAbort("Cannot run a death test outside of a TEST or "
+ "TEST_F construct");
+ }
+}
+
+// Creates and returns a death test by dispatching to the current
+// death test factory.
bool DeathTest::Create(const char* statement,
Matcher<const std::string&> matcher, const char* file,
int line, DeathTest** test) {
- return GetUnitTestImpl()->death_test_factory()->Create(
+ return GetUnitTestImpl()->death_test_factory()->Create(
statement, std::move(matcher), file, line, test);
-}
-
-const char* DeathTest::LastMessage() {
- return last_death_test_message_.c_str();
-}
-
-void DeathTest::set_last_death_test_message(const std::string& message) {
- last_death_test_message_ = message;
-}
-
-std::string DeathTest::last_death_test_message_;
-
-// Provides cross platform implementation for some death functionality.
-class DeathTestImpl : public DeathTest {
- protected:
+}
+
+const char* DeathTest::LastMessage() {
+ return last_death_test_message_.c_str();
+}
+
+void DeathTest::set_last_death_test_message(const std::string& message) {
+ last_death_test_message_ = message;
+}
+
+std::string DeathTest::last_death_test_message_;
+
+// Provides cross platform implementation for some death functionality.
+class DeathTestImpl : public DeathTest {
+ protected:
DeathTestImpl(const char* a_statement, Matcher<const std::string&> matcher)
- : statement_(a_statement),
+ : statement_(a_statement),
matcher_(std::move(matcher)),
- spawned_(false),
- status_(-1),
- outcome_(IN_PROGRESS),
- read_fd_(-1),
- write_fd_(-1) {}
-
- // read_fd_ is expected to be closed and cleared by a derived class.
+ spawned_(false),
+ status_(-1),
+ outcome_(IN_PROGRESS),
+ read_fd_(-1),
+ write_fd_(-1) {}
+
+ // read_fd_ is expected to be closed and cleared by a derived class.
~DeathTestImpl() override { GTEST_DEATH_TEST_CHECK_(read_fd_ == -1); }
-
+
void Abort(AbortReason reason) override;
bool Passed(bool status_ok) override;
-
- const char* statement() const { return statement_; }
- bool spawned() const { return spawned_; }
- void set_spawned(bool is_spawned) { spawned_ = is_spawned; }
- int status() const { return status_; }
- void set_status(int a_status) { status_ = a_status; }
- DeathTestOutcome outcome() const { return outcome_; }
- void set_outcome(DeathTestOutcome an_outcome) { outcome_ = an_outcome; }
- int read_fd() const { return read_fd_; }
- void set_read_fd(int fd) { read_fd_ = fd; }
- int write_fd() const { return write_fd_; }
- void set_write_fd(int fd) { write_fd_ = fd; }
-
- // Called in the parent process only. Reads the result code of the death
- // test child process via a pipe, interprets it to set the outcome_
- // member, and closes read_fd_. Outputs diagnostics and terminates in
- // case of unexpected codes.
- void ReadAndInterpretStatusByte();
-
+
+ const char* statement() const { return statement_; }
+ bool spawned() const { return spawned_; }
+ void set_spawned(bool is_spawned) { spawned_ = is_spawned; }
+ int status() const { return status_; }
+ void set_status(int a_status) { status_ = a_status; }
+ DeathTestOutcome outcome() const { return outcome_; }
+ void set_outcome(DeathTestOutcome an_outcome) { outcome_ = an_outcome; }
+ int read_fd() const { return read_fd_; }
+ void set_read_fd(int fd) { read_fd_ = fd; }
+ int write_fd() const { return write_fd_; }
+ void set_write_fd(int fd) { write_fd_ = fd; }
+
+ // Called in the parent process only. Reads the result code of the death
+ // test child process via a pipe, interprets it to set the outcome_
+ // member, and closes read_fd_. Outputs diagnostics and terminates in
+ // case of unexpected codes.
+ void ReadAndInterpretStatusByte();
+
// Returns stderr output from the child process.
virtual std::string GetErrorLogs();
- private:
- // The textual content of the code this object is testing. This class
- // doesn't own this string and should not attempt to delete it.
- const char* const statement_;
+ private:
+ // The textual content of the code this object is testing. This class
+ // doesn't own this string and should not attempt to delete it.
+ const char* const statement_;
// A matcher that's expected to match the stderr output by the child process.
Matcher<const std::string&> matcher_;
- // True if the death test child process has been successfully spawned.
- bool spawned_;
- // The exit status of the child process.
- int status_;
- // How the death test concluded.
- DeathTestOutcome outcome_;
- // Descriptor to the read end of the pipe to the child process. It is
- // always -1 in the child process. The child keeps its write end of the
- // pipe in write_fd_.
- int read_fd_;
- // Descriptor to the child's write end of the pipe to the parent process.
- // It is always -1 in the parent process. The parent keeps its end of the
- // pipe in read_fd_.
- int write_fd_;
-};
-
-// Called in the parent process only. Reads the result code of the death
-// test child process via a pipe, interprets it to set the outcome_
-// member, and closes read_fd_. Outputs diagnostics and terminates in
-// case of unexpected codes.
-void DeathTestImpl::ReadAndInterpretStatusByte() {
- char flag;
- int bytes_read;
-
- // The read() here blocks until data is available (signifying the
- // failure of the death test) or until the pipe is closed (signifying
- // its success), so it's okay to call this in the parent before
- // the child process has exited.
- do {
- bytes_read = posix::Read(read_fd(), &flag, 1);
- } while (bytes_read == -1 && errno == EINTR);
-
- if (bytes_read == 0) {
- set_outcome(DIED);
- } else if (bytes_read == 1) {
- switch (flag) {
- case kDeathTestReturned:
- set_outcome(RETURNED);
- break;
- case kDeathTestThrew:
- set_outcome(THREW);
- break;
- case kDeathTestLived:
- set_outcome(LIVED);
- break;
- case kDeathTestInternalError:
- FailFromInternalError(read_fd()); // Does not return.
- break;
- default:
- GTEST_LOG_(FATAL) << "Death test child process reported "
- << "unexpected status byte ("
- << static_cast<unsigned int>(flag) << ")";
- }
- } else {
- GTEST_LOG_(FATAL) << "Read from death test child process failed: "
- << GetLastErrnoDescription();
- }
- GTEST_DEATH_TEST_CHECK_SYSCALL_(posix::Close(read_fd()));
- set_read_fd(-1);
-}
-
+ // True if the death test child process has been successfully spawned.
+ bool spawned_;
+ // The exit status of the child process.
+ int status_;
+ // How the death test concluded.
+ DeathTestOutcome outcome_;
+ // Descriptor to the read end of the pipe to the child process. It is
+ // always -1 in the child process. The child keeps its write end of the
+ // pipe in write_fd_.
+ int read_fd_;
+ // Descriptor to the child's write end of the pipe to the parent process.
+ // It is always -1 in the parent process. The parent keeps its end of the
+ // pipe in read_fd_.
+ int write_fd_;
+};
+
+// Called in the parent process only. Reads the result code of the death
+// test child process via a pipe, interprets it to set the outcome_
+// member, and closes read_fd_. Outputs diagnostics and terminates in
+// case of unexpected codes.
+void DeathTestImpl::ReadAndInterpretStatusByte() {
+ char flag;
+ int bytes_read;
+
+ // The read() here blocks until data is available (signifying the
+ // failure of the death test) or until the pipe is closed (signifying
+ // its success), so it's okay to call this in the parent before
+ // the child process has exited.
+ do {
+ bytes_read = posix::Read(read_fd(), &flag, 1);
+ } while (bytes_read == -1 && errno == EINTR);
+
+ if (bytes_read == 0) {
+ set_outcome(DIED);
+ } else if (bytes_read == 1) {
+ switch (flag) {
+ case kDeathTestReturned:
+ set_outcome(RETURNED);
+ break;
+ case kDeathTestThrew:
+ set_outcome(THREW);
+ break;
+ case kDeathTestLived:
+ set_outcome(LIVED);
+ break;
+ case kDeathTestInternalError:
+ FailFromInternalError(read_fd()); // Does not return.
+ break;
+ default:
+ GTEST_LOG_(FATAL) << "Death test child process reported "
+ << "unexpected status byte ("
+ << static_cast<unsigned int>(flag) << ")";
+ }
+ } else {
+ GTEST_LOG_(FATAL) << "Read from death test child process failed: "
+ << GetLastErrnoDescription();
+ }
+ GTEST_DEATH_TEST_CHECK_SYSCALL_(posix::Close(read_fd()));
+ set_read_fd(-1);
+}
+
std::string DeathTestImpl::GetErrorLogs() {
return GetCapturedStderr();
}
-// Signals that the death test code which should have exited, didn't.
-// Should be called only in a death test child process.
-// Writes a status byte to the child's status file descriptor, then
-// calls _exit(1).
-void DeathTestImpl::Abort(AbortReason reason) {
- // The parent process considers the death test to be a failure if
- // it finds any data in our pipe. So, here we write a single flag byte
- // to the pipe, then exit.
- const char status_ch =
- reason == TEST_DID_NOT_DIE ? kDeathTestLived :
- reason == TEST_THREW_EXCEPTION ? kDeathTestThrew : kDeathTestReturned;
-
- GTEST_DEATH_TEST_CHECK_SYSCALL_(posix::Write(write_fd(), &status_ch, 1));
- // We are leaking the descriptor here because on some platforms (i.e.,
- // when built as Windows DLL), destructors of global objects will still
- // run after calling _exit(). On such systems, write_fd_ will be
- // indirectly closed from the destructor of UnitTestImpl, causing double
- // close if it is also closed here. On debug configurations, double close
- // may assert. As there are no in-process buffers to flush here, we are
- // relying on the OS to close the descriptor after the process terminates
- // when the destructors are not run.
- _exit(1); // Exits w/o any normal exit hooks (we were supposed to crash)
-}
-
-// Returns an indented copy of stderr output for a death test.
-// This makes distinguishing death test output lines from regular log lines
-// much easier.
-static ::std::string FormatDeathTestOutput(const ::std::string& output) {
- ::std::string ret;
- for (size_t at = 0; ; ) {
- const size_t line_end = output.find('\n', at);
- ret += "[ DEATH ] ";
- if (line_end == ::std::string::npos) {
- ret += output.substr(at);
- break;
- }
- ret += output.substr(at, line_end + 1 - at);
- at = line_end + 1;
- }
- return ret;
-}
-
-// Assesses the success or failure of a death test, using both private
-// members which have previously been set, and one argument:
-//
-// Private data members:
-// outcome: An enumeration describing how the death test
-// concluded: DIED, LIVED, THREW, or RETURNED. The death test
-// fails in the latter three cases.
-// status: The exit status of the child process. On *nix, it is in the
-// in the format specified by wait(2). On Windows, this is the
-// value supplied to the ExitProcess() API or a numeric code
-// of the exception that terminated the program.
+// Signals that the death test code which should have exited, didn't.
+// Should be called only in a death test child process.
+// Writes a status byte to the child's status file descriptor, then
+// calls _exit(1).
+void DeathTestImpl::Abort(AbortReason reason) {
+ // The parent process considers the death test to be a failure if
+ // it finds any data in our pipe. So, here we write a single flag byte
+ // to the pipe, then exit.
+ const char status_ch =
+ reason == TEST_DID_NOT_DIE ? kDeathTestLived :
+ reason == TEST_THREW_EXCEPTION ? kDeathTestThrew : kDeathTestReturned;
+
+ GTEST_DEATH_TEST_CHECK_SYSCALL_(posix::Write(write_fd(), &status_ch, 1));
+ // We are leaking the descriptor here because on some platforms (i.e.,
+ // when built as Windows DLL), destructors of global objects will still
+ // run after calling _exit(). On such systems, write_fd_ will be
+ // indirectly closed from the destructor of UnitTestImpl, causing double
+ // close if it is also closed here. On debug configurations, double close
+ // may assert. As there are no in-process buffers to flush here, we are
+ // relying on the OS to close the descriptor after the process terminates
+ // when the destructors are not run.
+ _exit(1); // Exits w/o any normal exit hooks (we were supposed to crash)
+}
+
+// Returns an indented copy of stderr output for a death test.
+// This makes distinguishing death test output lines from regular log lines
+// much easier.
+static ::std::string FormatDeathTestOutput(const ::std::string& output) {
+ ::std::string ret;
+ for (size_t at = 0; ; ) {
+ const size_t line_end = output.find('\n', at);
+ ret += "[ DEATH ] ";
+ if (line_end == ::std::string::npos) {
+ ret += output.substr(at);
+ break;
+ }
+ ret += output.substr(at, line_end + 1 - at);
+ at = line_end + 1;
+ }
+ return ret;
+}
+
+// Assesses the success or failure of a death test, using both private
+// members which have previously been set, and one argument:
+//
+// Private data members:
+// outcome: An enumeration describing how the death test
+// concluded: DIED, LIVED, THREW, or RETURNED. The death test
+// fails in the latter three cases.
+// status: The exit status of the child process. On *nix, it is in the
+// in the format specified by wait(2). On Windows, this is the
+// value supplied to the ExitProcess() API or a numeric code
+// of the exception that terminated the program.
// matcher_: A matcher that's expected to match the stderr output by the child
// process.
-//
-// Argument:
-// status_ok: true if exit_status is acceptable in the context of
-// this particular death test, which fails if it is false
-//
+//
+// Argument:
+// status_ok: true if exit_status is acceptable in the context of
+// this particular death test, which fails if it is false
+//
// Returns true if and only if all of the above conditions are met. Otherwise,
// the first failing condition, in the order given above, is the one that is
-// reported. Also sets the last death test message string.
-bool DeathTestImpl::Passed(bool status_ok) {
- if (!spawned())
- return false;
-
+// reported. Also sets the last death test message string.
+bool DeathTestImpl::Passed(bool status_ok) {
+ if (!spawned())
+ return false;
+
const std::string error_message = GetErrorLogs();
-
- bool success = false;
- Message buffer;
-
- buffer << "Death test: " << statement() << "\n";
- switch (outcome()) {
- case LIVED:
- buffer << " Result: failed to die.\n"
- << " Error msg:\n" << FormatDeathTestOutput(error_message);
- break;
- case THREW:
- buffer << " Result: threw an exception.\n"
- << " Error msg:\n" << FormatDeathTestOutput(error_message);
- break;
- case RETURNED:
- buffer << " Result: illegal return in test statement.\n"
- << " Error msg:\n" << FormatDeathTestOutput(error_message);
- break;
- case DIED:
- if (status_ok) {
+
+ bool success = false;
+ Message buffer;
+
+ buffer << "Death test: " << statement() << "\n";
+ switch (outcome()) {
+ case LIVED:
+ buffer << " Result: failed to die.\n"
+ << " Error msg:\n" << FormatDeathTestOutput(error_message);
+ break;
+ case THREW:
+ buffer << " Result: threw an exception.\n"
+ << " Error msg:\n" << FormatDeathTestOutput(error_message);
+ break;
+ case RETURNED:
+ buffer << " Result: illegal return in test statement.\n"
+ << " Error msg:\n" << FormatDeathTestOutput(error_message);
+ break;
+ case DIED:
+ if (status_ok) {
if (matcher_.Matches(error_message)) {
- success = true;
- } else {
+ success = true;
+ } else {
std::ostringstream stream;
matcher_.DescribeTo(&stream);
- buffer << " Result: died but not with expected error.\n"
+ buffer << " Result: died but not with expected error.\n"
<< " Expected: " << stream.str() << "\n"
<< "Actual msg:\n"
<< FormatDeathTestOutput(error_message);
- }
- } else {
- buffer << " Result: died but not with expected exit code:\n"
- << " " << ExitSummary(status()) << "\n"
- << "Actual msg:\n" << FormatDeathTestOutput(error_message);
- }
- break;
- case IN_PROGRESS:
- default:
- GTEST_LOG_(FATAL)
- << "DeathTest::Passed somehow called before conclusion of test";
- }
-
- DeathTest::set_last_death_test_message(buffer.GetString());
- return success;
-}
-
-# if GTEST_OS_WINDOWS
-// WindowsDeathTest implements death tests on Windows. Due to the
-// specifics of starting new processes on Windows, death tests there are
-// always threadsafe, and Google Test considers the
-// --gtest_death_test_style=fast setting to be equivalent to
-// --gtest_death_test_style=threadsafe there.
-//
-// A few implementation notes: Like the Linux version, the Windows
-// implementation uses pipes for child-to-parent communication. But due to
-// the specifics of pipes on Windows, some extra steps are required:
-//
-// 1. The parent creates a communication pipe and stores handles to both
-// ends of it.
-// 2. The parent starts the child and provides it with the information
-// necessary to acquire the handle to the write end of the pipe.
-// 3. The child acquires the write end of the pipe and signals the parent
-// using a Windows event.
-// 4. Now the parent can release the write end of the pipe on its side. If
-// this is done before step 3, the object's reference count goes down to
-// 0 and it is destroyed, preventing the child from acquiring it. The
-// parent now has to release it, or read operations on the read end of
-// the pipe will not return when the child terminates.
-// 5. The parent reads child's output through the pipe (outcome code and
-// any possible error messages) from the pipe, and its stderr and then
-// determines whether to fail the test.
-//
-// Note: to distinguish Win32 API calls from the local method and function
-// calls, the former are explicitly resolved in the global namespace.
-//
-class WindowsDeathTest : public DeathTestImpl {
- public:
+ }
+ } else {
+ buffer << " Result: died but not with expected exit code:\n"
+ << " " << ExitSummary(status()) << "\n"
+ << "Actual msg:\n" << FormatDeathTestOutput(error_message);
+ }
+ break;
+ case IN_PROGRESS:
+ default:
+ GTEST_LOG_(FATAL)
+ << "DeathTest::Passed somehow called before conclusion of test";
+ }
+
+ DeathTest::set_last_death_test_message(buffer.GetString());
+ return success;
+}
+
+# if GTEST_OS_WINDOWS
+// WindowsDeathTest implements death tests on Windows. Due to the
+// specifics of starting new processes on Windows, death tests there are
+// always threadsafe, and Google Test considers the
+// --gtest_death_test_style=fast setting to be equivalent to
+// --gtest_death_test_style=threadsafe there.
+//
+// A few implementation notes: Like the Linux version, the Windows
+// implementation uses pipes for child-to-parent communication. But due to
+// the specifics of pipes on Windows, some extra steps are required:
+//
+// 1. The parent creates a communication pipe and stores handles to both
+// ends of it.
+// 2. The parent starts the child and provides it with the information
+// necessary to acquire the handle to the write end of the pipe.
+// 3. The child acquires the write end of the pipe and signals the parent
+// using a Windows event.
+// 4. Now the parent can release the write end of the pipe on its side. If
+// this is done before step 3, the object's reference count goes down to
+// 0 and it is destroyed, preventing the child from acquiring it. The
+// parent now has to release it, or read operations on the read end of
+// the pipe will not return when the child terminates.
+// 5. The parent reads child's output through the pipe (outcome code and
+// any possible error messages) from the pipe, and its stderr and then
+// determines whether to fail the test.
+//
+// Note: to distinguish Win32 API calls from the local method and function
+// calls, the former are explicitly resolved in the global namespace.
+//
+class WindowsDeathTest : public DeathTestImpl {
+ public:
WindowsDeathTest(const char* a_statement, Matcher<const std::string&> matcher,
const char* file, int line)
: DeathTestImpl(a_statement, std::move(matcher)),
file_(file),
line_(line) {}
-
- // All of these virtual functions are inherited from DeathTest.
- virtual int Wait();
- virtual TestRole AssumeRole();
-
- private:
- // The name of the file in which the death test is located.
- const char* const file_;
- // The line number on which the death test is located.
- const int line_;
- // Handle to the write end of the pipe to the child process.
- AutoHandle write_handle_;
- // Child process handle.
- AutoHandle child_handle_;
- // Event the child process uses to signal the parent that it has
- // acquired the handle to the write end of the pipe. After seeing this
- // event the parent can release its own handles to make sure its
- // ReadFile() calls return when the child terminates.
- AutoHandle event_handle_;
-};
-
-// Waits for the child in a death test to exit, returning its exit
-// status, or 0 if no child process exists. As a side effect, sets the
-// outcome data member.
-int WindowsDeathTest::Wait() {
- if (!spawned())
- return 0;
-
- // Wait until the child either signals that it has acquired the write end
- // of the pipe or it dies.
- const HANDLE wait_handles[2] = { child_handle_.Get(), event_handle_.Get() };
- switch (::WaitForMultipleObjects(2,
- wait_handles,
- FALSE, // Waits for any of the handles.
- INFINITE)) {
- case WAIT_OBJECT_0:
- case WAIT_OBJECT_0 + 1:
- break;
- default:
- GTEST_DEATH_TEST_CHECK_(false); // Should not get here.
- }
-
- // The child has acquired the write end of the pipe or exited.
- // We release the handle on our side and continue.
- write_handle_.Reset();
- event_handle_.Reset();
-
- ReadAndInterpretStatusByte();
-
- // Waits for the child process to exit if it haven't already. This
- // returns immediately if the child has already exited, regardless of
- // whether previous calls to WaitForMultipleObjects synchronized on this
- // handle or not.
- GTEST_DEATH_TEST_CHECK_(
- WAIT_OBJECT_0 == ::WaitForSingleObject(child_handle_.Get(),
- INFINITE));
- DWORD status_code;
- GTEST_DEATH_TEST_CHECK_(
- ::GetExitCodeProcess(child_handle_.Get(), &status_code) != FALSE);
- child_handle_.Reset();
- set_status(static_cast<int>(status_code));
- return status();
-}
-
-// The AssumeRole process for a Windows death test. It creates a child
-// process with the same executable as the current process to run the
-// death test. The child process is given the --gtest_filter and
-// --gtest_internal_run_death_test flags such that it knows to run the
-// current death test only.
-DeathTest::TestRole WindowsDeathTest::AssumeRole() {
- const UnitTestImpl* const impl = GetUnitTestImpl();
- const InternalRunDeathTestFlag* const flag =
- impl->internal_run_death_test_flag();
- const TestInfo* const info = impl->current_test_info();
- const int death_test_index = info->result()->death_test_count();
-
+
+ // All of these virtual functions are inherited from DeathTest.
+ virtual int Wait();
+ virtual TestRole AssumeRole();
+
+ private:
+ // The name of the file in which the death test is located.
+ const char* const file_;
+ // The line number on which the death test is located.
+ const int line_;
+ // Handle to the write end of the pipe to the child process.
+ AutoHandle write_handle_;
+ // Child process handle.
+ AutoHandle child_handle_;
+ // Event the child process uses to signal the parent that it has
+ // acquired the handle to the write end of the pipe. After seeing this
+ // event the parent can release its own handles to make sure its
+ // ReadFile() calls return when the child terminates.
+ AutoHandle event_handle_;
+};
+
+// Waits for the child in a death test to exit, returning its exit
+// status, or 0 if no child process exists. As a side effect, sets the
+// outcome data member.
+int WindowsDeathTest::Wait() {
+ if (!spawned())
+ return 0;
+
+ // Wait until the child either signals that it has acquired the write end
+ // of the pipe or it dies.
+ const HANDLE wait_handles[2] = { child_handle_.Get(), event_handle_.Get() };
+ switch (::WaitForMultipleObjects(2,
+ wait_handles,
+ FALSE, // Waits for any of the handles.
+ INFINITE)) {
+ case WAIT_OBJECT_0:
+ case WAIT_OBJECT_0 + 1:
+ break;
+ default:
+ GTEST_DEATH_TEST_CHECK_(false); // Should not get here.
+ }
+
+ // The child has acquired the write end of the pipe or exited.
+ // We release the handle on our side and continue.
+ write_handle_.Reset();
+ event_handle_.Reset();
+
+ ReadAndInterpretStatusByte();
+
+ // Waits for the child process to exit if it haven't already. This
+ // returns immediately if the child has already exited, regardless of
+ // whether previous calls to WaitForMultipleObjects synchronized on this
+ // handle or not.
+ GTEST_DEATH_TEST_CHECK_(
+ WAIT_OBJECT_0 == ::WaitForSingleObject(child_handle_.Get(),
+ INFINITE));
+ DWORD status_code;
+ GTEST_DEATH_TEST_CHECK_(
+ ::GetExitCodeProcess(child_handle_.Get(), &status_code) != FALSE);
+ child_handle_.Reset();
+ set_status(static_cast<int>(status_code));
+ return status();
+}
+
+// The AssumeRole process for a Windows death test. It creates a child
+// process with the same executable as the current process to run the
+// death test. The child process is given the --gtest_filter and
+// --gtest_internal_run_death_test flags such that it knows to run the
+// current death test only.
+DeathTest::TestRole WindowsDeathTest::AssumeRole() {
+ const UnitTestImpl* const impl = GetUnitTestImpl();
+ const InternalRunDeathTestFlag* const flag =
+ impl->internal_run_death_test_flag();
+ const TestInfo* const info = impl->current_test_info();
+ const int death_test_index = info->result()->death_test_count();
+
if (flag != nullptr) {
- // ParseInternalRunDeathTestFlag() has performed all the necessary
- // processing.
- set_write_fd(flag->write_fd());
- return EXECUTE_TEST;
- }
-
- // WindowsDeathTest uses an anonymous pipe to communicate results of
- // a death test.
+ // ParseInternalRunDeathTestFlag() has performed all the necessary
+ // processing.
+ set_write_fd(flag->write_fd());
+ return EXECUTE_TEST;
+ }
+
+ // WindowsDeathTest uses an anonymous pipe to communicate results of
+ // a death test.
SECURITY_ATTRIBUTES handles_are_inheritable = {sizeof(SECURITY_ATTRIBUTES),
nullptr, TRUE};
- HANDLE read_handle, write_handle;
- GTEST_DEATH_TEST_CHECK_(
- ::CreatePipe(&read_handle, &write_handle, &handles_are_inheritable,
- 0) // Default buffer size.
- != FALSE);
- set_read_fd(::_open_osfhandle(reinterpret_cast<intptr_t>(read_handle),
- O_RDONLY));
- write_handle_.Reset(write_handle);
- event_handle_.Reset(::CreateEvent(
- &handles_are_inheritable,
+ HANDLE read_handle, write_handle;
+ GTEST_DEATH_TEST_CHECK_(
+ ::CreatePipe(&read_handle, &write_handle, &handles_are_inheritable,
+ 0) // Default buffer size.
+ != FALSE);
+ set_read_fd(::_open_osfhandle(reinterpret_cast<intptr_t>(read_handle),
+ O_RDONLY));
+ write_handle_.Reset(write_handle);
+ event_handle_.Reset(::CreateEvent(
+ &handles_are_inheritable,
TRUE, // The event will automatically reset to non-signaled state.
FALSE, // The initial state is non-signalled.
nullptr)); // The even is unnamed.
@@ -758,41 +758,41 @@ DeathTest::TestRole WindowsDeathTest::AssumeRole() {
const std::string filter_flag = std::string("--") + GTEST_FLAG_PREFIX_ +
kFilterFlag + "=" + info->test_suite_name() +
"." + info->name();
- const std::string internal_flag =
- std::string("--") + GTEST_FLAG_PREFIX_ + kInternalRunDeathTestFlag +
- "=" + file_ + "|" + StreamableToString(line_) + "|" +
- StreamableToString(death_test_index) + "|" +
- StreamableToString(static_cast<unsigned int>(::GetCurrentProcessId())) +
- // size_t has the same width as pointers on both 32-bit and 64-bit
- // Windows platforms.
- // See http://msdn.microsoft.com/en-us/library/tcxf1dw6.aspx.
- "|" + StreamableToString(reinterpret_cast<size_t>(write_handle)) +
- "|" + StreamableToString(reinterpret_cast<size_t>(event_handle_.Get()));
-
- char executable_path[_MAX_PATH + 1]; // NOLINT
+ const std::string internal_flag =
+ std::string("--") + GTEST_FLAG_PREFIX_ + kInternalRunDeathTestFlag +
+ "=" + file_ + "|" + StreamableToString(line_) + "|" +
+ StreamableToString(death_test_index) + "|" +
+ StreamableToString(static_cast<unsigned int>(::GetCurrentProcessId())) +
+ // size_t has the same width as pointers on both 32-bit and 64-bit
+ // Windows platforms.
+ // See http://msdn.microsoft.com/en-us/library/tcxf1dw6.aspx.
+ "|" + StreamableToString(reinterpret_cast<size_t>(write_handle)) +
+ "|" + StreamableToString(reinterpret_cast<size_t>(event_handle_.Get()));
+
+ char executable_path[_MAX_PATH + 1]; // NOLINT
GTEST_DEATH_TEST_CHECK_(_MAX_PATH + 1 != ::GetModuleFileNameA(nullptr,
executable_path,
_MAX_PATH));
-
- std::string command_line =
- std::string(::GetCommandLineA()) + " " + filter_flag + " \"" +
- internal_flag + "\"";
-
- DeathTest::set_last_death_test_message("");
-
- CaptureStderr();
- // Flush the log buffers since the log streams are shared with the child.
- FlushInfoLog();
-
- // The child process will share the standard handles with the parent.
- STARTUPINFOA startup_info;
- memset(&startup_info, 0, sizeof(STARTUPINFO));
- startup_info.dwFlags = STARTF_USESTDHANDLES;
- startup_info.hStdInput = ::GetStdHandle(STD_INPUT_HANDLE);
- startup_info.hStdOutput = ::GetStdHandle(STD_OUTPUT_HANDLE);
- startup_info.hStdError = ::GetStdHandle(STD_ERROR_HANDLE);
-
- PROCESS_INFORMATION process_info;
+
+ std::string command_line =
+ std::string(::GetCommandLineA()) + " " + filter_flag + " \"" +
+ internal_flag + "\"";
+
+ DeathTest::set_last_death_test_message("");
+
+ CaptureStderr();
+ // Flush the log buffers since the log streams are shared with the child.
+ FlushInfoLog();
+
+ // The child process will share the standard handles with the parent.
+ STARTUPINFOA startup_info;
+ memset(&startup_info, 0, sizeof(STARTUPINFO));
+ startup_info.dwFlags = STARTF_USESTDHANDLES;
+ startup_info.hStdInput = ::GetStdHandle(STD_INPUT_HANDLE);
+ startup_info.hStdOutput = ::GetStdHandle(STD_OUTPUT_HANDLE);
+ startup_info.hStdError = ::GetStdHandle(STD_ERROR_HANDLE);
+
+ PROCESS_INFORMATION process_info;
GTEST_DEATH_TEST_CHECK_(
::CreateProcessA(
executable_path, const_cast<char*>(command_line.c_str()),
@@ -803,12 +803,12 @@ DeathTest::TestRole WindowsDeathTest::AssumeRole() {
nullptr, // Inherit the parent's environment.
UnitTest::GetInstance()->original_working_dir(), &startup_info,
&process_info) != FALSE);
- child_handle_.Reset(process_info.hProcess);
- ::CloseHandle(process_info.hThread);
- set_spawned(true);
- return OVERSEE_TEST;
-}
-
+ child_handle_.Reset(process_info.hProcess);
+ ::CloseHandle(process_info.hThread);
+ set_spawned(true);
+ return OVERSEE_TEST;
+}
+
# elif GTEST_OS_FUCHSIA
class FuchsiaDeathTest : public DeathTestImpl {
@@ -1066,103 +1066,103 @@ std::string FuchsiaDeathTest::GetErrorLogs() {
#else // We are neither on Windows, nor on Fuchsia.
-// ForkingDeathTest provides implementations for most of the abstract
-// methods of the DeathTest interface. Only the AssumeRole method is
-// left undefined.
-class ForkingDeathTest : public DeathTestImpl {
- public:
+// ForkingDeathTest provides implementations for most of the abstract
+// methods of the DeathTest interface. Only the AssumeRole method is
+// left undefined.
+class ForkingDeathTest : public DeathTestImpl {
+ public:
ForkingDeathTest(const char* statement, Matcher<const std::string&> matcher);
-
- // All of these virtual functions are inherited from DeathTest.
+
+ // All of these virtual functions are inherited from DeathTest.
int Wait() override;
-
- protected:
- void set_child_pid(pid_t child_pid) { child_pid_ = child_pid; }
-
- private:
- // PID of child process during death test; 0 in the child process itself.
- pid_t child_pid_;
-};
-
-// Constructs a ForkingDeathTest.
+
+ protected:
+ void set_child_pid(pid_t child_pid) { child_pid_ = child_pid; }
+
+ private:
+ // PID of child process during death test; 0 in the child process itself.
+ pid_t child_pid_;
+};
+
+// Constructs a ForkingDeathTest.
ForkingDeathTest::ForkingDeathTest(const char* a_statement,
Matcher<const std::string&> matcher)
: DeathTestImpl(a_statement, std::move(matcher)), child_pid_(-1) {}
-
-// Waits for the child in a death test to exit, returning its exit
-// status, or 0 if no child process exists. As a side effect, sets the
-// outcome data member.
-int ForkingDeathTest::Wait() {
- if (!spawned())
- return 0;
-
- ReadAndInterpretStatusByte();
-
- int status_value;
- GTEST_DEATH_TEST_CHECK_SYSCALL_(waitpid(child_pid_, &status_value, 0));
- set_status(status_value);
- return status_value;
-}
-
-// A concrete death test class that forks, then immediately runs the test
-// in the child process.
-class NoExecDeathTest : public ForkingDeathTest {
- public:
+
+// Waits for the child in a death test to exit, returning its exit
+// status, or 0 if no child process exists. As a side effect, sets the
+// outcome data member.
+int ForkingDeathTest::Wait() {
+ if (!spawned())
+ return 0;
+
+ ReadAndInterpretStatusByte();
+
+ int status_value;
+ GTEST_DEATH_TEST_CHECK_SYSCALL_(waitpid(child_pid_, &status_value, 0));
+ set_status(status_value);
+ return status_value;
+}
+
+// A concrete death test class that forks, then immediately runs the test
+// in the child process.
+class NoExecDeathTest : public ForkingDeathTest {
+ public:
NoExecDeathTest(const char* a_statement, Matcher<const std::string&> matcher)
: ForkingDeathTest(a_statement, std::move(matcher)) {}
TestRole AssumeRole() override;
-};
-
-// The AssumeRole process for a fork-and-run death test. It implements a
-// straightforward fork, with a simple pipe to transmit the status byte.
-DeathTest::TestRole NoExecDeathTest::AssumeRole() {
- const size_t thread_count = GetThreadCount();
- if (thread_count != 1) {
- GTEST_LOG_(WARNING) << DeathTestThreadWarning(thread_count);
- }
-
- int pipe_fd[2];
- GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1);
-
- DeathTest::set_last_death_test_message("");
- CaptureStderr();
- // When we fork the process below, the log file buffers are copied, but the
- // file descriptors are shared. We flush all log files here so that closing
- // the file descriptors in the child process doesn't throw off the
- // synchronization between descriptors and buffers in the parent process.
- // This is as close to the fork as possible to avoid a race condition in case
- // there are multiple threads running before the death test, and another
- // thread writes to the log file.
- FlushInfoLog();
-
- const pid_t child_pid = fork();
- GTEST_DEATH_TEST_CHECK_(child_pid != -1);
- set_child_pid(child_pid);
- if (child_pid == 0) {
- GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[0]));
- set_write_fd(pipe_fd[1]);
- // Redirects all logging to stderr in the child process to prevent
- // concurrent writes to the log files. We capture stderr in the parent
- // process and append the child process' output to a log.
- LogToStderr();
- // Event forwarding to the listeners of event listener API mush be shut
- // down in death test subprocesses.
- GetUnitTestImpl()->listeners()->SuppressEventForwarding();
- g_in_fast_death_test_child = true;
- return EXECUTE_TEST;
- } else {
- GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[1]));
- set_read_fd(pipe_fd[0]);
- set_spawned(true);
- return OVERSEE_TEST;
- }
-}
-
-// A concrete death test class that forks and re-executes the main
-// program from the beginning, with command-line flags set that cause
-// only this specific death test to be run.
-class ExecDeathTest : public ForkingDeathTest {
- public:
+};
+
+// The AssumeRole process for a fork-and-run death test. It implements a
+// straightforward fork, with a simple pipe to transmit the status byte.
+DeathTest::TestRole NoExecDeathTest::AssumeRole() {
+ const size_t thread_count = GetThreadCount();
+ if (thread_count != 1) {
+ GTEST_LOG_(WARNING) << DeathTestThreadWarning(thread_count);
+ }
+
+ int pipe_fd[2];
+ GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1);
+
+ DeathTest::set_last_death_test_message("");
+ CaptureStderr();
+ // When we fork the process below, the log file buffers are copied, but the
+ // file descriptors are shared. We flush all log files here so that closing
+ // the file descriptors in the child process doesn't throw off the
+ // synchronization between descriptors and buffers in the parent process.
+ // This is as close to the fork as possible to avoid a race condition in case
+ // there are multiple threads running before the death test, and another
+ // thread writes to the log file.
+ FlushInfoLog();
+
+ const pid_t child_pid = fork();
+ GTEST_DEATH_TEST_CHECK_(child_pid != -1);
+ set_child_pid(child_pid);
+ if (child_pid == 0) {
+ GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[0]));
+ set_write_fd(pipe_fd[1]);
+ // Redirects all logging to stderr in the child process to prevent
+ // concurrent writes to the log files. We capture stderr in the parent
+ // process and append the child process' output to a log.
+ LogToStderr();
+ // Event forwarding to the listeners of event listener API mush be shut
+ // down in death test subprocesses.
+ GetUnitTestImpl()->listeners()->SuppressEventForwarding();
+ g_in_fast_death_test_child = true;
+ return EXECUTE_TEST;
+ } else {
+ GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[1]));
+ set_read_fd(pipe_fd[0]);
+ set_spawned(true);
+ return OVERSEE_TEST;
+ }
+}
+
+// A concrete death test class that forks and re-executes the main
+// program from the beginning, with command-line flags set that cause
+// only this specific death test to be run.
+class ExecDeathTest : public ForkingDeathTest {
+ public:
ExecDeathTest(const char* a_statement, Matcher<const std::string&> matcher,
const char* file, int line)
: ForkingDeathTest(a_statement, std::move(matcher)),
@@ -1170,105 +1170,105 @@ class ExecDeathTest : public ForkingDeathTest {
line_(line) {}
TestRole AssumeRole() override;
- private:
+ private:
static ::std::vector<std::string> GetArgvsForDeathTestChildProcess() {
::std::vector<std::string> args = GetInjectableArgvs();
-# if defined(GTEST_EXTRA_DEATH_TEST_COMMAND_LINE_ARGS_)
+# if defined(GTEST_EXTRA_DEATH_TEST_COMMAND_LINE_ARGS_)
::std::vector<std::string> extra_args =
- GTEST_EXTRA_DEATH_TEST_COMMAND_LINE_ARGS_();
- args.insert(args.end(), extra_args.begin(), extra_args.end());
-# endif // defined(GTEST_EXTRA_DEATH_TEST_COMMAND_LINE_ARGS_)
- return args;
- }
- // The name of the file in which the death test is located.
- const char* const file_;
- // The line number on which the death test is located.
- const int line_;
-};
-
-// Utility class for accumulating command-line arguments.
-class Arguments {
- public:
+ GTEST_EXTRA_DEATH_TEST_COMMAND_LINE_ARGS_();
+ args.insert(args.end(), extra_args.begin(), extra_args.end());
+# endif // defined(GTEST_EXTRA_DEATH_TEST_COMMAND_LINE_ARGS_)
+ return args;
+ }
+ // The name of the file in which the death test is located.
+ const char* const file_;
+ // The line number on which the death test is located.
+ const int line_;
+};
+
+// Utility class for accumulating command-line arguments.
+class Arguments {
+ public:
Arguments() { args_.push_back(nullptr); }
-
- ~Arguments() {
- for (std::vector<char*>::iterator i = args_.begin(); i != args_.end();
- ++i) {
- free(*i);
- }
- }
- void AddArgument(const char* argument) {
- args_.insert(args_.end() - 1, posix::StrDup(argument));
- }
-
- template <typename Str>
- void AddArguments(const ::std::vector<Str>& arguments) {
- for (typename ::std::vector<Str>::const_iterator i = arguments.begin();
- i != arguments.end();
- ++i) {
- args_.insert(args_.end() - 1, posix::StrDup(i->c_str()));
- }
- }
- char* const* Argv() {
- return &args_[0];
- }
-
- private:
- std::vector<char*> args_;
-};
-
-// A struct that encompasses the arguments to the child process of a
-// threadsafe-style death test process.
-struct ExecDeathTestArgs {
- char* const* argv; // Command-line arguments for the child's call to exec
- int close_fd; // File descriptor to close; the read end of a pipe
-};
-
+
+ ~Arguments() {
+ for (std::vector<char*>::iterator i = args_.begin(); i != args_.end();
+ ++i) {
+ free(*i);
+ }
+ }
+ void AddArgument(const char* argument) {
+ args_.insert(args_.end() - 1, posix::StrDup(argument));
+ }
+
+ template <typename Str>
+ void AddArguments(const ::std::vector<Str>& arguments) {
+ for (typename ::std::vector<Str>::const_iterator i = arguments.begin();
+ i != arguments.end();
+ ++i) {
+ args_.insert(args_.end() - 1, posix::StrDup(i->c_str()));
+ }
+ }
+ char* const* Argv() {
+ return &args_[0];
+ }
+
+ private:
+ std::vector<char*> args_;
+};
+
+// A struct that encompasses the arguments to the child process of a
+// threadsafe-style death test process.
+struct ExecDeathTestArgs {
+ char* const* argv; // Command-line arguments for the child's call to exec
+ int close_fd; // File descriptor to close; the read end of a pipe
+};
+
# if GTEST_OS_QNX
-extern "C" char** environ;
+extern "C" char** environ;
# else // GTEST_OS_QNX
-// The main function for a threadsafe-style death test child process.
-// This function is called in a clone()-ed process and thus must avoid
-// any potentially unsafe operations like malloc or libc functions.
-static int ExecDeathTestChildMain(void* child_arg) {
- ExecDeathTestArgs* const args = static_cast<ExecDeathTestArgs*>(child_arg);
- GTEST_DEATH_TEST_CHECK_SYSCALL_(close(args->close_fd));
-
- // We need to execute the test program in the same environment where
- // it was originally invoked. Therefore we change to the original
- // working directory first.
- const char* const original_dir =
- UnitTest::GetInstance()->original_working_dir();
- // We can safely call chdir() as it's a direct system call.
- if (chdir(original_dir) != 0) {
- DeathTestAbort(std::string("chdir(\"") + original_dir + "\") failed: " +
- GetLastErrnoDescription());
- return EXIT_FAILURE;
- }
-
+// The main function for a threadsafe-style death test child process.
+// This function is called in a clone()-ed process and thus must avoid
+// any potentially unsafe operations like malloc or libc functions.
+static int ExecDeathTestChildMain(void* child_arg) {
+ ExecDeathTestArgs* const args = static_cast<ExecDeathTestArgs*>(child_arg);
+ GTEST_DEATH_TEST_CHECK_SYSCALL_(close(args->close_fd));
+
+ // We need to execute the test program in the same environment where
+ // it was originally invoked. Therefore we change to the original
+ // working directory first.
+ const char* const original_dir =
+ UnitTest::GetInstance()->original_working_dir();
+ // We can safely call chdir() as it's a direct system call.
+ if (chdir(original_dir) != 0) {
+ DeathTestAbort(std::string("chdir(\"") + original_dir + "\") failed: " +
+ GetLastErrnoDescription());
+ return EXIT_FAILURE;
+ }
+
// We can safely call execv() as it's almost a direct system call. We
- // cannot use execvp() as it's a libc function and thus potentially
+ // cannot use execvp() as it's a libc function and thus potentially
// unsafe. Since execv() doesn't search the PATH, the user must
- // invoke the test program via a valid path that contains at least
- // one path separator.
+ // invoke the test program via a valid path that contains at least
+ // one path separator.
execv(args->argv[0], args->argv);
DeathTestAbort(std::string("execv(") + args->argv[0] + ", ...) in " +
- original_dir + " failed: " +
- GetLastErrnoDescription());
- return EXIT_FAILURE;
-}
+ original_dir + " failed: " +
+ GetLastErrnoDescription());
+ return EXIT_FAILURE;
+}
# endif // GTEST_OS_QNX
-
+
# if GTEST_HAS_CLONE
-// Two utility routines that together determine the direction the stack
-// grows.
-// This could be accomplished more elegantly by a single recursive
-// function, but we want to guard against the unlikely possibility of
-// a smart compiler optimizing the recursion away.
-//
-// GTEST_NO_INLINE_ is required to prevent GCC 4.6 from inlining
-// StackLowerThanAddress into StackGrowsDown, which then doesn't give
-// correct answer.
+// Two utility routines that together determine the direction the stack
+// grows.
+// This could be accomplished more elegantly by a single recursive
+// function, but we want to guard against the unlikely possibility of
+// a smart compiler optimizing the recursion away.
+//
+// GTEST_NO_INLINE_ is required to prevent GCC 4.6 from inlining
+// StackLowerThanAddress into StackGrowsDown, which then doesn't give
+// correct answer.
static void StackLowerThanAddress(const void* ptr,
bool* result) GTEST_NO_INLINE_;
// Make sure sanitizers do not tamper with the stack here.
@@ -1282,211 +1282,211 @@ GTEST_ATTRIBUTE_NO_SANITIZE_HWADDRESS_
static void StackLowerThanAddress(const void* ptr, bool* result) {
int dummy = 0;
*result = std::less<const void*>()(&dummy, ptr);
-}
-
-// Make sure AddressSanitizer does not tamper with the stack here.
-GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
+}
+
+// Make sure AddressSanitizer does not tamper with the stack here.
+GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
GTEST_ATTRIBUTE_NO_SANITIZE_HWADDRESS_
static bool StackGrowsDown() {
int dummy = 0;
- bool result;
- StackLowerThanAddress(&dummy, &result);
- return result;
-}
+ bool result;
+ StackLowerThanAddress(&dummy, &result);
+ return result;
+}
# endif // GTEST_HAS_CLONE
-
-// Spawns a child process with the same executable as the current process in
-// a thread-safe manner and instructs it to run the death test. The
-// implementation uses fork(2) + exec. On systems where clone(2) is
-// available, it is used instead, being slightly more thread-safe. On QNX,
-// fork supports only single-threaded environments, so this function uses
-// spawn(2) there instead. The function dies with an error message if
-// anything goes wrong.
-static pid_t ExecDeathTestSpawnChild(char* const* argv, int close_fd) {
- ExecDeathTestArgs args = { argv, close_fd };
- pid_t child_pid = -1;
-
-# if GTEST_OS_QNX
- // Obtains the current directory and sets it to be closed in the child
- // process.
- const int cwd_fd = open(".", O_RDONLY);
- GTEST_DEATH_TEST_CHECK_(cwd_fd != -1);
- GTEST_DEATH_TEST_CHECK_SYSCALL_(fcntl(cwd_fd, F_SETFD, FD_CLOEXEC));
- // We need to execute the test program in the same environment where
- // it was originally invoked. Therefore we change to the original
- // working directory first.
- const char* const original_dir =
- UnitTest::GetInstance()->original_working_dir();
- // We can safely call chdir() as it's a direct system call.
- if (chdir(original_dir) != 0) {
- DeathTestAbort(std::string("chdir(\"") + original_dir + "\") failed: " +
- GetLastErrnoDescription());
- return EXIT_FAILURE;
- }
-
- int fd_flags;
- // Set close_fd to be closed after spawn.
- GTEST_DEATH_TEST_CHECK_SYSCALL_(fd_flags = fcntl(close_fd, F_GETFD));
- GTEST_DEATH_TEST_CHECK_SYSCALL_(fcntl(close_fd, F_SETFD,
- fd_flags | FD_CLOEXEC));
- struct inheritance inherit = {0};
- // spawn is a system call.
+
+// Spawns a child process with the same executable as the current process in
+// a thread-safe manner and instructs it to run the death test. The
+// implementation uses fork(2) + exec. On systems where clone(2) is
+// available, it is used instead, being slightly more thread-safe. On QNX,
+// fork supports only single-threaded environments, so this function uses
+// spawn(2) there instead. The function dies with an error message if
+// anything goes wrong.
+static pid_t ExecDeathTestSpawnChild(char* const* argv, int close_fd) {
+ ExecDeathTestArgs args = { argv, close_fd };
+ pid_t child_pid = -1;
+
+# if GTEST_OS_QNX
+ // Obtains the current directory and sets it to be closed in the child
+ // process.
+ const int cwd_fd = open(".", O_RDONLY);
+ GTEST_DEATH_TEST_CHECK_(cwd_fd != -1);
+ GTEST_DEATH_TEST_CHECK_SYSCALL_(fcntl(cwd_fd, F_SETFD, FD_CLOEXEC));
+ // We need to execute the test program in the same environment where
+ // it was originally invoked. Therefore we change to the original
+ // working directory first.
+ const char* const original_dir =
+ UnitTest::GetInstance()->original_working_dir();
+ // We can safely call chdir() as it's a direct system call.
+ if (chdir(original_dir) != 0) {
+ DeathTestAbort(std::string("chdir(\"") + original_dir + "\") failed: " +
+ GetLastErrnoDescription());
+ return EXIT_FAILURE;
+ }
+
+ int fd_flags;
+ // Set close_fd to be closed after spawn.
+ GTEST_DEATH_TEST_CHECK_SYSCALL_(fd_flags = fcntl(close_fd, F_GETFD));
+ GTEST_DEATH_TEST_CHECK_SYSCALL_(fcntl(close_fd, F_SETFD,
+ fd_flags | FD_CLOEXEC));
+ struct inheritance inherit = {0};
+ // spawn is a system call.
child_pid = spawn(args.argv[0], 0, nullptr, &inherit, args.argv, environ);
- // Restores the current working directory.
- GTEST_DEATH_TEST_CHECK_(fchdir(cwd_fd) != -1);
- GTEST_DEATH_TEST_CHECK_SYSCALL_(close(cwd_fd));
-
-# else // GTEST_OS_QNX
-# if GTEST_OS_LINUX
- // When a SIGPROF signal is received while fork() or clone() are executing,
- // the process may hang. To avoid this, we ignore SIGPROF here and re-enable
- // it after the call to fork()/clone() is complete.
- struct sigaction saved_sigprof_action;
- struct sigaction ignore_sigprof_action;
- memset(&ignore_sigprof_action, 0, sizeof(ignore_sigprof_action));
- sigemptyset(&ignore_sigprof_action.sa_mask);
- ignore_sigprof_action.sa_handler = SIG_IGN;
- GTEST_DEATH_TEST_CHECK_SYSCALL_(sigaction(
- SIGPROF, &ignore_sigprof_action, &saved_sigprof_action));
-# endif // GTEST_OS_LINUX
-
-# if GTEST_HAS_CLONE
- const bool use_fork = GTEST_FLAG(death_test_use_fork);
-
- if (!use_fork) {
- static const bool stack_grows_down = StackGrowsDown();
+ // Restores the current working directory.
+ GTEST_DEATH_TEST_CHECK_(fchdir(cwd_fd) != -1);
+ GTEST_DEATH_TEST_CHECK_SYSCALL_(close(cwd_fd));
+
+# else // GTEST_OS_QNX
+# if GTEST_OS_LINUX
+ // When a SIGPROF signal is received while fork() or clone() are executing,
+ // the process may hang. To avoid this, we ignore SIGPROF here and re-enable
+ // it after the call to fork()/clone() is complete.
+ struct sigaction saved_sigprof_action;
+ struct sigaction ignore_sigprof_action;
+ memset(&ignore_sigprof_action, 0, sizeof(ignore_sigprof_action));
+ sigemptyset(&ignore_sigprof_action.sa_mask);
+ ignore_sigprof_action.sa_handler = SIG_IGN;
+ GTEST_DEATH_TEST_CHECK_SYSCALL_(sigaction(
+ SIGPROF, &ignore_sigprof_action, &saved_sigprof_action));
+# endif // GTEST_OS_LINUX
+
+# if GTEST_HAS_CLONE
+ const bool use_fork = GTEST_FLAG(death_test_use_fork);
+
+ if (!use_fork) {
+ static const bool stack_grows_down = StackGrowsDown();
const auto stack_size = static_cast<size_t>(getpagesize() * 2);
- // MMAP_ANONYMOUS is not defined on Mac, so we use MAP_ANON instead.
+ // MMAP_ANONYMOUS is not defined on Mac, so we use MAP_ANON instead.
void* const stack = mmap(nullptr, stack_size, PROT_READ | PROT_WRITE,
- MAP_ANON | MAP_PRIVATE, -1, 0);
- GTEST_DEATH_TEST_CHECK_(stack != MAP_FAILED);
-
- // Maximum stack alignment in bytes: For a downward-growing stack, this
- // amount is subtracted from size of the stack space to get an address
- // that is within the stack space and is aligned on all systems we care
- // about. As far as I know there is no ABI with stack alignment greater
- // than 64. We assume stack and stack_size already have alignment of
- // kMaxStackAlignment.
- const size_t kMaxStackAlignment = 64;
- void* const stack_top =
- static_cast<char*>(stack) +
- (stack_grows_down ? stack_size - kMaxStackAlignment : 0);
+ MAP_ANON | MAP_PRIVATE, -1, 0);
+ GTEST_DEATH_TEST_CHECK_(stack != MAP_FAILED);
+
+ // Maximum stack alignment in bytes: For a downward-growing stack, this
+ // amount is subtracted from size of the stack space to get an address
+ // that is within the stack space and is aligned on all systems we care
+ // about. As far as I know there is no ABI with stack alignment greater
+ // than 64. We assume stack and stack_size already have alignment of
+ // kMaxStackAlignment.
+ const size_t kMaxStackAlignment = 64;
+ void* const stack_top =
+ static_cast<char*>(stack) +
+ (stack_grows_down ? stack_size - kMaxStackAlignment : 0);
GTEST_DEATH_TEST_CHECK_(
static_cast<size_t>(stack_size) > kMaxStackAlignment &&
reinterpret_cast<uintptr_t>(stack_top) % kMaxStackAlignment == 0);
-
- child_pid = clone(&ExecDeathTestChildMain, stack_top, SIGCHLD, &args);
-
- GTEST_DEATH_TEST_CHECK_(munmap(stack, stack_size) != -1);
- }
-# else
- const bool use_fork = true;
-# endif // GTEST_HAS_CLONE
-
- if (use_fork && (child_pid = fork()) == 0) {
- ExecDeathTestChildMain(&args);
- _exit(0);
- }
-# endif // GTEST_OS_QNX
-# if GTEST_OS_LINUX
- GTEST_DEATH_TEST_CHECK_SYSCALL_(
+
+ child_pid = clone(&ExecDeathTestChildMain, stack_top, SIGCHLD, &args);
+
+ GTEST_DEATH_TEST_CHECK_(munmap(stack, stack_size) != -1);
+ }
+# else
+ const bool use_fork = true;
+# endif // GTEST_HAS_CLONE
+
+ if (use_fork && (child_pid = fork()) == 0) {
+ ExecDeathTestChildMain(&args);
+ _exit(0);
+ }
+# endif // GTEST_OS_QNX
+# if GTEST_OS_LINUX
+ GTEST_DEATH_TEST_CHECK_SYSCALL_(
sigaction(SIGPROF, &saved_sigprof_action, nullptr));
-# endif // GTEST_OS_LINUX
-
- GTEST_DEATH_TEST_CHECK_(child_pid != -1);
- return child_pid;
-}
-
-// The AssumeRole process for a fork-and-exec death test. It re-executes the
-// main program from the beginning, setting the --gtest_filter
-// and --gtest_internal_run_death_test flags to cause only the current
-// death test to be re-run.
-DeathTest::TestRole ExecDeathTest::AssumeRole() {
- const UnitTestImpl* const impl = GetUnitTestImpl();
- const InternalRunDeathTestFlag* const flag =
- impl->internal_run_death_test_flag();
- const TestInfo* const info = impl->current_test_info();
- const int death_test_index = info->result()->death_test_count();
-
+# endif // GTEST_OS_LINUX
+
+ GTEST_DEATH_TEST_CHECK_(child_pid != -1);
+ return child_pid;
+}
+
+// The AssumeRole process for a fork-and-exec death test. It re-executes the
+// main program from the beginning, setting the --gtest_filter
+// and --gtest_internal_run_death_test flags to cause only the current
+// death test to be re-run.
+DeathTest::TestRole ExecDeathTest::AssumeRole() {
+ const UnitTestImpl* const impl = GetUnitTestImpl();
+ const InternalRunDeathTestFlag* const flag =
+ impl->internal_run_death_test_flag();
+ const TestInfo* const info = impl->current_test_info();
+ const int death_test_index = info->result()->death_test_count();
+
if (flag != nullptr) {
- set_write_fd(flag->write_fd());
- return EXECUTE_TEST;
- }
-
- int pipe_fd[2];
- GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1);
- // Clear the close-on-exec flag on the write end of the pipe, lest
- // it be closed when the child process does an exec:
- GTEST_DEATH_TEST_CHECK_(fcntl(pipe_fd[1], F_SETFD, 0) != -1);
-
+ set_write_fd(flag->write_fd());
+ return EXECUTE_TEST;
+ }
+
+ int pipe_fd[2];
+ GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1);
+ // Clear the close-on-exec flag on the write end of the pipe, lest
+ // it be closed when the child process does an exec:
+ GTEST_DEATH_TEST_CHECK_(fcntl(pipe_fd[1], F_SETFD, 0) != -1);
+
const std::string filter_flag = std::string("--") + GTEST_FLAG_PREFIX_ +
kFilterFlag + "=" + info->test_suite_name() +
"." + info->name();
- const std::string internal_flag =
- std::string("--") + GTEST_FLAG_PREFIX_ + kInternalRunDeathTestFlag + "="
- + file_ + "|" + StreamableToString(line_) + "|"
- + StreamableToString(death_test_index) + "|"
- + StreamableToString(pipe_fd[1]);
- Arguments args;
- args.AddArguments(GetArgvsForDeathTestChildProcess());
- args.AddArgument(filter_flag.c_str());
- args.AddArgument(internal_flag.c_str());
-
- DeathTest::set_last_death_test_message("");
-
- CaptureStderr();
- // See the comment in NoExecDeathTest::AssumeRole for why the next line
- // is necessary.
- FlushInfoLog();
-
- const pid_t child_pid = ExecDeathTestSpawnChild(args.Argv(), pipe_fd[0]);
- GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[1]));
- set_child_pid(child_pid);
- set_read_fd(pipe_fd[0]);
- set_spawned(true);
- return OVERSEE_TEST;
-}
-
-# endif // !GTEST_OS_WINDOWS
-
-// Creates a concrete DeathTest-derived class that depends on the
-// --gtest_death_test_style flag, and sets the pointer pointed to
-// by the "test" argument to its address. If the test should be
-// skipped, sets that pointer to NULL. Returns true, unless the
-// flag is set to an invalid value.
+ const std::string internal_flag =
+ std::string("--") + GTEST_FLAG_PREFIX_ + kInternalRunDeathTestFlag + "="
+ + file_ + "|" + StreamableToString(line_) + "|"
+ + StreamableToString(death_test_index) + "|"
+ + StreamableToString(pipe_fd[1]);
+ Arguments args;
+ args.AddArguments(GetArgvsForDeathTestChildProcess());
+ args.AddArgument(filter_flag.c_str());
+ args.AddArgument(internal_flag.c_str());
+
+ DeathTest::set_last_death_test_message("");
+
+ CaptureStderr();
+ // See the comment in NoExecDeathTest::AssumeRole for why the next line
+ // is necessary.
+ FlushInfoLog();
+
+ const pid_t child_pid = ExecDeathTestSpawnChild(args.Argv(), pipe_fd[0]);
+ GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[1]));
+ set_child_pid(child_pid);
+ set_read_fd(pipe_fd[0]);
+ set_spawned(true);
+ return OVERSEE_TEST;
+}
+
+# endif // !GTEST_OS_WINDOWS
+
+// Creates a concrete DeathTest-derived class that depends on the
+// --gtest_death_test_style flag, and sets the pointer pointed to
+// by the "test" argument to its address. If the test should be
+// skipped, sets that pointer to NULL. Returns true, unless the
+// flag is set to an invalid value.
bool DefaultDeathTestFactory::Create(const char* statement,
Matcher<const std::string&> matcher,
- const char* file, int line,
- DeathTest** test) {
- UnitTestImpl* const impl = GetUnitTestImpl();
- const InternalRunDeathTestFlag* const flag =
- impl->internal_run_death_test_flag();
- const int death_test_index = impl->current_test_info()
- ->increment_death_test_count();
-
+ const char* file, int line,
+ DeathTest** test) {
+ UnitTestImpl* const impl = GetUnitTestImpl();
+ const InternalRunDeathTestFlag* const flag =
+ impl->internal_run_death_test_flag();
+ const int death_test_index = impl->current_test_info()
+ ->increment_death_test_count();
+
if (flag != nullptr) {
- if (death_test_index > flag->index()) {
- DeathTest::set_last_death_test_message(
- "Death test count (" + StreamableToString(death_test_index)
- + ") somehow exceeded expected maximum ("
- + StreamableToString(flag->index()) + ")");
- return false;
- }
-
- if (!(flag->file() == file && flag->line() == line &&
- flag->index() == death_test_index)) {
+ if (death_test_index > flag->index()) {
+ DeathTest::set_last_death_test_message(
+ "Death test count (" + StreamableToString(death_test_index)
+ + ") somehow exceeded expected maximum ("
+ + StreamableToString(flag->index()) + ")");
+ return false;
+ }
+
+ if (!(flag->file() == file && flag->line() == line &&
+ flag->index() == death_test_index)) {
*test = nullptr;
- return true;
- }
- }
-
-# if GTEST_OS_WINDOWS
-
- if (GTEST_FLAG(death_test_style) == "threadsafe" ||
- GTEST_FLAG(death_test_style) == "fast") {
+ return true;
+ }
+ }
+
+# if GTEST_OS_WINDOWS
+
+ if (GTEST_FLAG(death_test_style) == "threadsafe" ||
+ GTEST_FLAG(death_test_style) == "fast") {
*test = new WindowsDeathTest(statement, std::move(matcher), file, line);
- }
-
+ }
+
# elif GTEST_OS_FUCHSIA
if (GTEST_FLAG(death_test_style) == "threadsafe" ||
@@ -1494,124 +1494,124 @@ bool DefaultDeathTestFactory::Create(const char* statement,
*test = new FuchsiaDeathTest(statement, std::move(matcher), file, line);
}
-# else
-
- if (GTEST_FLAG(death_test_style) == "threadsafe") {
+# else
+
+ if (GTEST_FLAG(death_test_style) == "threadsafe") {
*test = new ExecDeathTest(statement, std::move(matcher), file, line);
- } else if (GTEST_FLAG(death_test_style) == "fast") {
+ } else if (GTEST_FLAG(death_test_style) == "fast") {
*test = new NoExecDeathTest(statement, std::move(matcher));
- }
-
-# endif // GTEST_OS_WINDOWS
-
- else { // NOLINT - this is more readable than unbalanced brackets inside #if.
- DeathTest::set_last_death_test_message(
- "Unknown death test style \"" + GTEST_FLAG(death_test_style)
- + "\" encountered");
- return false;
- }
-
- return true;
-}
-
-# if GTEST_OS_WINDOWS
-// Recreates the pipe and event handles from the provided parameters,
-// signals the event, and returns a file descriptor wrapped around the pipe
-// handle. This function is called in the child process only.
+ }
+
+# endif // GTEST_OS_WINDOWS
+
+ else { // NOLINT - this is more readable than unbalanced brackets inside #if.
+ DeathTest::set_last_death_test_message(
+ "Unknown death test style \"" + GTEST_FLAG(death_test_style)
+ + "\" encountered");
+ return false;
+ }
+
+ return true;
+}
+
+# if GTEST_OS_WINDOWS
+// Recreates the pipe and event handles from the provided parameters,
+// signals the event, and returns a file descriptor wrapped around the pipe
+// handle. This function is called in the child process only.
static int GetStatusFileDescriptor(unsigned int parent_process_id,
- size_t write_handle_as_size_t,
- size_t event_handle_as_size_t) {
- AutoHandle parent_process_handle(::OpenProcess(PROCESS_DUP_HANDLE,
- FALSE, // Non-inheritable.
- parent_process_id));
- if (parent_process_handle.Get() == INVALID_HANDLE_VALUE) {
- DeathTestAbort("Unable to open parent process " +
- StreamableToString(parent_process_id));
- }
-
- GTEST_CHECK_(sizeof(HANDLE) <= sizeof(size_t));
-
- const HANDLE write_handle =
- reinterpret_cast<HANDLE>(write_handle_as_size_t);
- HANDLE dup_write_handle;
-
+ size_t write_handle_as_size_t,
+ size_t event_handle_as_size_t) {
+ AutoHandle parent_process_handle(::OpenProcess(PROCESS_DUP_HANDLE,
+ FALSE, // Non-inheritable.
+ parent_process_id));
+ if (parent_process_handle.Get() == INVALID_HANDLE_VALUE) {
+ DeathTestAbort("Unable to open parent process " +
+ StreamableToString(parent_process_id));
+ }
+
+ GTEST_CHECK_(sizeof(HANDLE) <= sizeof(size_t));
+
+ const HANDLE write_handle =
+ reinterpret_cast<HANDLE>(write_handle_as_size_t);
+ HANDLE dup_write_handle;
+
// The newly initialized handle is accessible only in the parent
- // process. To obtain one accessible within the child, we need to use
- // DuplicateHandle.
- if (!::DuplicateHandle(parent_process_handle.Get(), write_handle,
- ::GetCurrentProcess(), &dup_write_handle,
- 0x0, // Requested privileges ignored since
- // DUPLICATE_SAME_ACCESS is used.
- FALSE, // Request non-inheritable handler.
- DUPLICATE_SAME_ACCESS)) {
- DeathTestAbort("Unable to duplicate the pipe handle " +
- StreamableToString(write_handle_as_size_t) +
- " from the parent process " +
- StreamableToString(parent_process_id));
- }
-
- const HANDLE event_handle = reinterpret_cast<HANDLE>(event_handle_as_size_t);
- HANDLE dup_event_handle;
-
- if (!::DuplicateHandle(parent_process_handle.Get(), event_handle,
- ::GetCurrentProcess(), &dup_event_handle,
- 0x0,
- FALSE,
- DUPLICATE_SAME_ACCESS)) {
- DeathTestAbort("Unable to duplicate the event handle " +
- StreamableToString(event_handle_as_size_t) +
- " from the parent process " +
- StreamableToString(parent_process_id));
- }
-
- const int write_fd =
- ::_open_osfhandle(reinterpret_cast<intptr_t>(dup_write_handle), O_APPEND);
- if (write_fd == -1) {
- DeathTestAbort("Unable to convert pipe handle " +
- StreamableToString(write_handle_as_size_t) +
- " to a file descriptor");
- }
-
- // Signals the parent that the write end of the pipe has been acquired
- // so the parent can release its own write end.
- ::SetEvent(dup_event_handle);
-
- return write_fd;
-}
-# endif // GTEST_OS_WINDOWS
-
-// Returns a newly created InternalRunDeathTestFlag object with fields
-// initialized from the GTEST_FLAG(internal_run_death_test) flag if
-// the flag is specified; otherwise returns NULL.
-InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag() {
+ // process. To obtain one accessible within the child, we need to use
+ // DuplicateHandle.
+ if (!::DuplicateHandle(parent_process_handle.Get(), write_handle,
+ ::GetCurrentProcess(), &dup_write_handle,
+ 0x0, // Requested privileges ignored since
+ // DUPLICATE_SAME_ACCESS is used.
+ FALSE, // Request non-inheritable handler.
+ DUPLICATE_SAME_ACCESS)) {
+ DeathTestAbort("Unable to duplicate the pipe handle " +
+ StreamableToString(write_handle_as_size_t) +
+ " from the parent process " +
+ StreamableToString(parent_process_id));
+ }
+
+ const HANDLE event_handle = reinterpret_cast<HANDLE>(event_handle_as_size_t);
+ HANDLE dup_event_handle;
+
+ if (!::DuplicateHandle(parent_process_handle.Get(), event_handle,
+ ::GetCurrentProcess(), &dup_event_handle,
+ 0x0,
+ FALSE,
+ DUPLICATE_SAME_ACCESS)) {
+ DeathTestAbort("Unable to duplicate the event handle " +
+ StreamableToString(event_handle_as_size_t) +
+ " from the parent process " +
+ StreamableToString(parent_process_id));
+ }
+
+ const int write_fd =
+ ::_open_osfhandle(reinterpret_cast<intptr_t>(dup_write_handle), O_APPEND);
+ if (write_fd == -1) {
+ DeathTestAbort("Unable to convert pipe handle " +
+ StreamableToString(write_handle_as_size_t) +
+ " to a file descriptor");
+ }
+
+ // Signals the parent that the write end of the pipe has been acquired
+ // so the parent can release its own write end.
+ ::SetEvent(dup_event_handle);
+
+ return write_fd;
+}
+# endif // GTEST_OS_WINDOWS
+
+// Returns a newly created InternalRunDeathTestFlag object with fields
+// initialized from the GTEST_FLAG(internal_run_death_test) flag if
+// the flag is specified; otherwise returns NULL.
+InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag() {
if (GTEST_FLAG(internal_run_death_test) == "") return nullptr;
-
- // GTEST_HAS_DEATH_TEST implies that we have ::std::string, so we
- // can use it here.
- int line = -1;
- int index = -1;
- ::std::vector< ::std::string> fields;
- SplitString(GTEST_FLAG(internal_run_death_test).c_str(), '|', &fields);
- int write_fd = -1;
-
-# if GTEST_OS_WINDOWS
-
- unsigned int parent_process_id = 0;
- size_t write_handle_as_size_t = 0;
- size_t event_handle_as_size_t = 0;
-
- if (fields.size() != 6
- || !ParseNaturalNumber(fields[1], &line)
- || !ParseNaturalNumber(fields[2], &index)
- || !ParseNaturalNumber(fields[3], &parent_process_id)
- || !ParseNaturalNumber(fields[4], &write_handle_as_size_t)
- || !ParseNaturalNumber(fields[5], &event_handle_as_size_t)) {
- DeathTestAbort("Bad --gtest_internal_run_death_test flag: " +
- GTEST_FLAG(internal_run_death_test));
- }
- write_fd = GetStatusFileDescriptor(parent_process_id,
- write_handle_as_size_t,
- event_handle_as_size_t);
+
+ // GTEST_HAS_DEATH_TEST implies that we have ::std::string, so we
+ // can use it here.
+ int line = -1;
+ int index = -1;
+ ::std::vector< ::std::string> fields;
+ SplitString(GTEST_FLAG(internal_run_death_test).c_str(), '|', &fields);
+ int write_fd = -1;
+
+# if GTEST_OS_WINDOWS
+
+ unsigned int parent_process_id = 0;
+ size_t write_handle_as_size_t = 0;
+ size_t event_handle_as_size_t = 0;
+
+ if (fields.size() != 6
+ || !ParseNaturalNumber(fields[1], &line)
+ || !ParseNaturalNumber(fields[2], &index)
+ || !ParseNaturalNumber(fields[3], &parent_process_id)
+ || !ParseNaturalNumber(fields[4], &write_handle_as_size_t)
+ || !ParseNaturalNumber(fields[5], &event_handle_as_size_t)) {
+ DeathTestAbort("Bad --gtest_internal_run_death_test flag: " +
+ GTEST_FLAG(internal_run_death_test));
+ }
+ write_fd = GetStatusFileDescriptor(parent_process_id,
+ write_handle_as_size_t,
+ event_handle_as_size_t);
# elif GTEST_OS_FUCHSIA
@@ -1622,23 +1622,23 @@ InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag() {
+ GTEST_FLAG(internal_run_death_test));
}
-# else
-
- if (fields.size() != 4
- || !ParseNaturalNumber(fields[1], &line)
- || !ParseNaturalNumber(fields[2], &index)
- || !ParseNaturalNumber(fields[3], &write_fd)) {
- DeathTestAbort("Bad --gtest_internal_run_death_test flag: "
- + GTEST_FLAG(internal_run_death_test));
- }
-
-# endif // GTEST_OS_WINDOWS
-
- return new InternalRunDeathTestFlag(fields[0], line, index, write_fd);
-}
-
-} // namespace internal
-
-#endif // GTEST_HAS_DEATH_TEST
-
-} // namespace testing
+# else
+
+ if (fields.size() != 4
+ || !ParseNaturalNumber(fields[1], &line)
+ || !ParseNaturalNumber(fields[2], &index)
+ || !ParseNaturalNumber(fields[3], &write_fd)) {
+ DeathTestAbort("Bad --gtest_internal_run_death_test flag: "
+ + GTEST_FLAG(internal_run_death_test));
+ }
+
+# endif // GTEST_OS_WINDOWS
+
+ return new InternalRunDeathTestFlag(fields[0], line, index, write_fd);
+}
+
+} // namespace internal
+
+#endif // GTEST_HAS_DEATH_TEST
+
+} // namespace testing
diff --git a/contrib/restricted/googletest/googletest/src/gtest-filepath.cc b/contrib/restricted/googletest/googletest/src/gtest-filepath.cc
index 4d2c5bcd35..0b5629401b 100644
--- a/contrib/restricted/googletest/googletest/src/gtest-filepath.cc
+++ b/contrib/restricted/googletest/googletest/src/gtest-filepath.cc
@@ -1,369 +1,369 @@
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#include "gtest/internal/gtest-filepath.h"
-
-#include <stdlib.h>
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "gtest/internal/gtest-filepath.h"
+
+#include <stdlib.h>
#include "gtest/internal/gtest-port.h"
#include "gtest/gtest-message.h"
-
-#if GTEST_OS_WINDOWS_MOBILE
-# include <windows.h>
-#elif GTEST_OS_WINDOWS
-# include <direct.h>
-# include <io.h>
-#else
-# include <limits.h>
-# include <climits> // Some Linux distributions define PATH_MAX here.
-#endif // GTEST_OS_WINDOWS_MOBILE
-
+
+#if GTEST_OS_WINDOWS_MOBILE
+# include <windows.h>
+#elif GTEST_OS_WINDOWS
+# include <direct.h>
+# include <io.h>
+#else
+# include <limits.h>
+# include <climits> // Some Linux distributions define PATH_MAX here.
+#endif // GTEST_OS_WINDOWS_MOBILE
+
#include "gtest/internal/gtest-string.h"
-#if GTEST_OS_WINDOWS
-# define GTEST_PATH_MAX_ _MAX_PATH
-#elif defined(PATH_MAX)
-# define GTEST_PATH_MAX_ PATH_MAX
-#elif defined(_XOPEN_PATH_MAX)
-# define GTEST_PATH_MAX_ _XOPEN_PATH_MAX
-#else
-# define GTEST_PATH_MAX_ _POSIX_PATH_MAX
-#endif // GTEST_OS_WINDOWS
-
-namespace testing {
-namespace internal {
-
-#if GTEST_OS_WINDOWS
-// On Windows, '\\' is the standard path separator, but many tools and the
-// Windows API also accept '/' as an alternate path separator. Unless otherwise
-// noted, a file path can contain either kind of path separators, or a mixture
-// of them.
-const char kPathSeparator = '\\';
-const char kAlternatePathSeparator = '/';
-const char kAlternatePathSeparatorString[] = "/";
-# if GTEST_OS_WINDOWS_MOBILE
-// Windows CE doesn't have a current directory. You should not use
-// the current directory in tests on Windows CE, but this at least
-// provides a reasonable fallback.
-const char kCurrentDirectoryString[] = "\\";
-// Windows CE doesn't define INVALID_FILE_ATTRIBUTES
-const DWORD kInvalidFileAttributes = 0xffffffff;
-# else
-const char kCurrentDirectoryString[] = ".\\";
-# endif // GTEST_OS_WINDOWS_MOBILE
-#else
-const char kPathSeparator = '/';
-const char kCurrentDirectoryString[] = "./";
-#endif // GTEST_OS_WINDOWS
-
-// Returns whether the given character is a valid path separator.
-static bool IsPathSeparator(char c) {
-#if GTEST_HAS_ALT_PATH_SEP_
- return (c == kPathSeparator) || (c == kAlternatePathSeparator);
-#else
- return c == kPathSeparator;
-#endif
-}
-
-// Returns the current working directory, or "" if unsuccessful.
-FilePath FilePath::GetCurrentDir() {
+#if GTEST_OS_WINDOWS
+# define GTEST_PATH_MAX_ _MAX_PATH
+#elif defined(PATH_MAX)
+# define GTEST_PATH_MAX_ PATH_MAX
+#elif defined(_XOPEN_PATH_MAX)
+# define GTEST_PATH_MAX_ _XOPEN_PATH_MAX
+#else
+# define GTEST_PATH_MAX_ _POSIX_PATH_MAX
+#endif // GTEST_OS_WINDOWS
+
+namespace testing {
+namespace internal {
+
+#if GTEST_OS_WINDOWS
+// On Windows, '\\' is the standard path separator, but many tools and the
+// Windows API also accept '/' as an alternate path separator. Unless otherwise
+// noted, a file path can contain either kind of path separators, or a mixture
+// of them.
+const char kPathSeparator = '\\';
+const char kAlternatePathSeparator = '/';
+const char kAlternatePathSeparatorString[] = "/";
+# if GTEST_OS_WINDOWS_MOBILE
+// Windows CE doesn't have a current directory. You should not use
+// the current directory in tests on Windows CE, but this at least
+// provides a reasonable fallback.
+const char kCurrentDirectoryString[] = "\\";
+// Windows CE doesn't define INVALID_FILE_ATTRIBUTES
+const DWORD kInvalidFileAttributes = 0xffffffff;
+# else
+const char kCurrentDirectoryString[] = ".\\";
+# endif // GTEST_OS_WINDOWS_MOBILE
+#else
+const char kPathSeparator = '/';
+const char kCurrentDirectoryString[] = "./";
+#endif // GTEST_OS_WINDOWS
+
+// Returns whether the given character is a valid path separator.
+static bool IsPathSeparator(char c) {
+#if GTEST_HAS_ALT_PATH_SEP_
+ return (c == kPathSeparator) || (c == kAlternatePathSeparator);
+#else
+ return c == kPathSeparator;
+#endif
+}
+
+// Returns the current working directory, or "" if unsuccessful.
+FilePath FilePath::GetCurrentDir() {
#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_WINDOWS_PHONE || \
GTEST_OS_WINDOWS_RT || GTEST_OS_ESP8266 || GTEST_OS_ESP32 || \
GTEST_OS_XTENSA
// These platforms do not have a current directory, so we just return
- // something reasonable.
- return FilePath(kCurrentDirectoryString);
-#elif GTEST_OS_WINDOWS
- char cwd[GTEST_PATH_MAX_ + 1] = { '\0' };
+ // something reasonable.
+ return FilePath(kCurrentDirectoryString);
+#elif GTEST_OS_WINDOWS
+ char cwd[GTEST_PATH_MAX_ + 1] = { '\0' };
return FilePath(_getcwd(cwd, sizeof(cwd)) == nullptr ? "" : cwd);
-#else
- char cwd[GTEST_PATH_MAX_ + 1] = { '\0' };
- char* result = getcwd(cwd, sizeof(cwd));
-# if GTEST_OS_NACL
- // getcwd will likely fail in NaCl due to the sandbox, so return something
- // reasonable. The user may have provided a shim implementation for getcwd,
- // however, so fallback only when failure is detected.
+#else
+ char cwd[GTEST_PATH_MAX_ + 1] = { '\0' };
+ char* result = getcwd(cwd, sizeof(cwd));
+# if GTEST_OS_NACL
+ // getcwd will likely fail in NaCl due to the sandbox, so return something
+ // reasonable. The user may have provided a shim implementation for getcwd,
+ // however, so fallback only when failure is detected.
return FilePath(result == nullptr ? kCurrentDirectoryString : cwd);
-# endif // GTEST_OS_NACL
+# endif // GTEST_OS_NACL
return FilePath(result == nullptr ? "" : cwd);
-#endif // GTEST_OS_WINDOWS_MOBILE
-}
-
-// Returns a copy of the FilePath with the case-insensitive extension removed.
-// Example: FilePath("dir/file.exe").RemoveExtension("EXE") returns
-// FilePath("dir/file"). If a case-insensitive extension is not
-// found, returns a copy of the original FilePath.
-FilePath FilePath::RemoveExtension(const char* extension) const {
- const std::string dot_extension = std::string(".") + extension;
- if (String::EndsWithCaseInsensitive(pathname_, dot_extension)) {
- return FilePath(pathname_.substr(
- 0, pathname_.length() - dot_extension.length()));
- }
- return *this;
-}
-
+#endif // GTEST_OS_WINDOWS_MOBILE
+}
+
+// Returns a copy of the FilePath with the case-insensitive extension removed.
+// Example: FilePath("dir/file.exe").RemoveExtension("EXE") returns
+// FilePath("dir/file"). If a case-insensitive extension is not
+// found, returns a copy of the original FilePath.
+FilePath FilePath::RemoveExtension(const char* extension) const {
+ const std::string dot_extension = std::string(".") + extension;
+ if (String::EndsWithCaseInsensitive(pathname_, dot_extension)) {
+ return FilePath(pathname_.substr(
+ 0, pathname_.length() - dot_extension.length()));
+ }
+ return *this;
+}
+
// Returns a pointer to the last occurrence of a valid path separator in
-// the FilePath. On Windows, for example, both '/' and '\' are valid path
-// separators. Returns NULL if no path separator was found.
-const char* FilePath::FindLastPathSeparator() const {
- const char* const last_sep = strrchr(c_str(), kPathSeparator);
-#if GTEST_HAS_ALT_PATH_SEP_
- const char* const last_alt_sep = strrchr(c_str(), kAlternatePathSeparator);
- // Comparing two pointers of which only one is NULL is undefined.
+// the FilePath. On Windows, for example, both '/' and '\' are valid path
+// separators. Returns NULL if no path separator was found.
+const char* FilePath::FindLastPathSeparator() const {
+ const char* const last_sep = strrchr(c_str(), kPathSeparator);
+#if GTEST_HAS_ALT_PATH_SEP_
+ const char* const last_alt_sep = strrchr(c_str(), kAlternatePathSeparator);
+ // Comparing two pointers of which only one is NULL is undefined.
if (last_alt_sep != nullptr &&
(last_sep == nullptr || last_alt_sep > last_sep)) {
- return last_alt_sep;
- }
-#endif
- return last_sep;
-}
-
-// Returns a copy of the FilePath with the directory part removed.
-// Example: FilePath("path/to/file").RemoveDirectoryName() returns
-// FilePath("file"). If there is no directory part ("just_a_file"), it returns
-// the FilePath unmodified. If there is no file part ("just_a_dir/") it
-// returns an empty FilePath ("").
-// On Windows platform, '\' is the path separator, otherwise it is '/'.
-FilePath FilePath::RemoveDirectoryName() const {
- const char* const last_sep = FindLastPathSeparator();
- return last_sep ? FilePath(last_sep + 1) : *this;
-}
-
-// RemoveFileName returns the directory path with the filename removed.
-// Example: FilePath("path/to/file").RemoveFileName() returns "path/to/".
-// If the FilePath is "a_file" or "/a_file", RemoveFileName returns
-// FilePath("./") or, on Windows, FilePath(".\\"). If the filepath does
-// not have a file, like "just/a/dir/", it returns the FilePath unmodified.
-// On Windows platform, '\' is the path separator, otherwise it is '/'.
-FilePath FilePath::RemoveFileName() const {
- const char* const last_sep = FindLastPathSeparator();
- std::string dir;
- if (last_sep) {
+ return last_alt_sep;
+ }
+#endif
+ return last_sep;
+}
+
+// Returns a copy of the FilePath with the directory part removed.
+// Example: FilePath("path/to/file").RemoveDirectoryName() returns
+// FilePath("file"). If there is no directory part ("just_a_file"), it returns
+// the FilePath unmodified. If there is no file part ("just_a_dir/") it
+// returns an empty FilePath ("").
+// On Windows platform, '\' is the path separator, otherwise it is '/'.
+FilePath FilePath::RemoveDirectoryName() const {
+ const char* const last_sep = FindLastPathSeparator();
+ return last_sep ? FilePath(last_sep + 1) : *this;
+}
+
+// RemoveFileName returns the directory path with the filename removed.
+// Example: FilePath("path/to/file").RemoveFileName() returns "path/to/".
+// If the FilePath is "a_file" or "/a_file", RemoveFileName returns
+// FilePath("./") or, on Windows, FilePath(".\\"). If the filepath does
+// not have a file, like "just/a/dir/", it returns the FilePath unmodified.
+// On Windows platform, '\' is the path separator, otherwise it is '/'.
+FilePath FilePath::RemoveFileName() const {
+ const char* const last_sep = FindLastPathSeparator();
+ std::string dir;
+ if (last_sep) {
dir = std::string(c_str(), static_cast<size_t>(last_sep + 1 - c_str()));
- } else {
- dir = kCurrentDirectoryString;
- }
- return FilePath(dir);
-}
-
-// Helper functions for naming files in a directory for xml output.
-
-// Given directory = "dir", base_name = "test", number = 0,
-// extension = "xml", returns "dir/test.xml". If number is greater
-// than zero (e.g., 12), returns "dir/test_12.xml".
-// On Windows platform, uses \ as the separator rather than /.
-FilePath FilePath::MakeFileName(const FilePath& directory,
- const FilePath& base_name,
- int number,
- const char* extension) {
- std::string file;
- if (number == 0) {
- file = base_name.string() + "." + extension;
- } else {
- file = base_name.string() + "_" + StreamableToString(number)
- + "." + extension;
- }
- return ConcatPaths(directory, FilePath(file));
-}
-
-// Given directory = "dir", relative_path = "test.xml", returns "dir/test.xml".
-// On Windows, uses \ as the separator rather than /.
-FilePath FilePath::ConcatPaths(const FilePath& directory,
- const FilePath& relative_path) {
- if (directory.IsEmpty())
- return relative_path;
- const FilePath dir(directory.RemoveTrailingPathSeparator());
- return FilePath(dir.string() + kPathSeparator + relative_path.string());
-}
-
-// Returns true if pathname describes something findable in the file-system,
-// either a file, directory, or whatever.
-bool FilePath::FileOrDirectoryExists() const {
-#if GTEST_OS_WINDOWS_MOBILE
- LPCWSTR unicode = String::AnsiToUtf16(pathname_.c_str());
- const DWORD attributes = GetFileAttributes(unicode);
- delete [] unicode;
- return attributes != kInvalidFileAttributes;
-#else
+ } else {
+ dir = kCurrentDirectoryString;
+ }
+ return FilePath(dir);
+}
+
+// Helper functions for naming files in a directory for xml output.
+
+// Given directory = "dir", base_name = "test", number = 0,
+// extension = "xml", returns "dir/test.xml". If number is greater
+// than zero (e.g., 12), returns "dir/test_12.xml".
+// On Windows platform, uses \ as the separator rather than /.
+FilePath FilePath::MakeFileName(const FilePath& directory,
+ const FilePath& base_name,
+ int number,
+ const char* extension) {
+ std::string file;
+ if (number == 0) {
+ file = base_name.string() + "." + extension;
+ } else {
+ file = base_name.string() + "_" + StreamableToString(number)
+ + "." + extension;
+ }
+ return ConcatPaths(directory, FilePath(file));
+}
+
+// Given directory = "dir", relative_path = "test.xml", returns "dir/test.xml".
+// On Windows, uses \ as the separator rather than /.
+FilePath FilePath::ConcatPaths(const FilePath& directory,
+ const FilePath& relative_path) {
+ if (directory.IsEmpty())
+ return relative_path;
+ const FilePath dir(directory.RemoveTrailingPathSeparator());
+ return FilePath(dir.string() + kPathSeparator + relative_path.string());
+}
+
+// Returns true if pathname describes something findable in the file-system,
+// either a file, directory, or whatever.
+bool FilePath::FileOrDirectoryExists() const {
+#if GTEST_OS_WINDOWS_MOBILE
+ LPCWSTR unicode = String::AnsiToUtf16(pathname_.c_str());
+ const DWORD attributes = GetFileAttributes(unicode);
+ delete [] unicode;
+ return attributes != kInvalidFileAttributes;
+#else
posix::StatStruct file_stat{};
- return posix::Stat(pathname_.c_str(), &file_stat) == 0;
-#endif // GTEST_OS_WINDOWS_MOBILE
-}
-
-// Returns true if pathname describes a directory in the file-system
-// that exists.
-bool FilePath::DirectoryExists() const {
- bool result = false;
-#if GTEST_OS_WINDOWS
- // Don't strip off trailing separator if path is a root directory on
- // Windows (like "C:\\").
- const FilePath& path(IsRootDirectory() ? *this :
- RemoveTrailingPathSeparator());
-#else
- const FilePath& path(*this);
-#endif
-
-#if GTEST_OS_WINDOWS_MOBILE
- LPCWSTR unicode = String::AnsiToUtf16(path.c_str());
- const DWORD attributes = GetFileAttributes(unicode);
- delete [] unicode;
- if ((attributes != kInvalidFileAttributes) &&
- (attributes & FILE_ATTRIBUTE_DIRECTORY)) {
- result = true;
- }
-#else
+ return posix::Stat(pathname_.c_str(), &file_stat) == 0;
+#endif // GTEST_OS_WINDOWS_MOBILE
+}
+
+// Returns true if pathname describes a directory in the file-system
+// that exists.
+bool FilePath::DirectoryExists() const {
+ bool result = false;
+#if GTEST_OS_WINDOWS
+ // Don't strip off trailing separator if path is a root directory on
+ // Windows (like "C:\\").
+ const FilePath& path(IsRootDirectory() ? *this :
+ RemoveTrailingPathSeparator());
+#else
+ const FilePath& path(*this);
+#endif
+
+#if GTEST_OS_WINDOWS_MOBILE
+ LPCWSTR unicode = String::AnsiToUtf16(path.c_str());
+ const DWORD attributes = GetFileAttributes(unicode);
+ delete [] unicode;
+ if ((attributes != kInvalidFileAttributes) &&
+ (attributes & FILE_ATTRIBUTE_DIRECTORY)) {
+ result = true;
+ }
+#else
posix::StatStruct file_stat{};
- result = posix::Stat(path.c_str(), &file_stat) == 0 &&
- posix::IsDir(file_stat);
-#endif // GTEST_OS_WINDOWS_MOBILE
-
- return result;
-}
-
-// Returns true if pathname describes a root directory. (Windows has one
-// root directory per disk drive.)
-bool FilePath::IsRootDirectory() const {
-#if GTEST_OS_WINDOWS
- return pathname_.length() == 3 && IsAbsolutePath();
-#else
- return pathname_.length() == 1 && IsPathSeparator(pathname_.c_str()[0]);
-#endif
-}
-
-// Returns true if pathname describes an absolute path.
-bool FilePath::IsAbsolutePath() const {
- const char* const name = pathname_.c_str();
-#if GTEST_OS_WINDOWS
- return pathname_.length() >= 3 &&
- ((name[0] >= 'a' && name[0] <= 'z') ||
- (name[0] >= 'A' && name[0] <= 'Z')) &&
- name[1] == ':' &&
- IsPathSeparator(name[2]);
-#else
- return IsPathSeparator(name[0]);
-#endif
-}
-
-// Returns a pathname for a file that does not currently exist. The pathname
-// will be directory/base_name.extension or
-// directory/base_name_<number>.extension if directory/base_name.extension
-// already exists. The number will be incremented until a pathname is found
-// that does not already exist.
-// Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'.
-// There could be a race condition if two or more processes are calling this
-// function at the same time -- they could both pick the same filename.
-FilePath FilePath::GenerateUniqueFileName(const FilePath& directory,
- const FilePath& base_name,
- const char* extension) {
- FilePath full_pathname;
- int number = 0;
- do {
- full_pathname.Set(MakeFileName(directory, base_name, number++, extension));
- } while (full_pathname.FileOrDirectoryExists());
- return full_pathname;
-}
-
-// Returns true if FilePath ends with a path separator, which indicates that
-// it is intended to represent a directory. Returns false otherwise.
-// This does NOT check that a directory (or file) actually exists.
-bool FilePath::IsDirectory() const {
- return !pathname_.empty() &&
- IsPathSeparator(pathname_.c_str()[pathname_.length() - 1]);
-}
-
-// Create directories so that path exists. Returns true if successful or if
-// the directories already exist; returns false if unable to create directories
-// for any reason.
-bool FilePath::CreateDirectoriesRecursively() const {
- if (!this->IsDirectory()) {
- return false;
- }
-
- if (pathname_.length() == 0 || this->DirectoryExists()) {
- return true;
- }
-
- const FilePath parent(this->RemoveTrailingPathSeparator().RemoveFileName());
- return parent.CreateDirectoriesRecursively() && this->CreateFolder();
-}
-
-// Create the directory so that path exists. Returns true if successful or
-// if the directory already exists; returns false if unable to create the
-// directory for any reason, including if the parent directory does not
-// exist. Not named "CreateDirectory" because that's a macro on Windows.
-bool FilePath::CreateFolder() const {
-#if GTEST_OS_WINDOWS_MOBILE
- FilePath removed_sep(this->RemoveTrailingPathSeparator());
- LPCWSTR unicode = String::AnsiToUtf16(removed_sep.c_str());
+ result = posix::Stat(path.c_str(), &file_stat) == 0 &&
+ posix::IsDir(file_stat);
+#endif // GTEST_OS_WINDOWS_MOBILE
+
+ return result;
+}
+
+// Returns true if pathname describes a root directory. (Windows has one
+// root directory per disk drive.)
+bool FilePath::IsRootDirectory() const {
+#if GTEST_OS_WINDOWS
+ return pathname_.length() == 3 && IsAbsolutePath();
+#else
+ return pathname_.length() == 1 && IsPathSeparator(pathname_.c_str()[0]);
+#endif
+}
+
+// Returns true if pathname describes an absolute path.
+bool FilePath::IsAbsolutePath() const {
+ const char* const name = pathname_.c_str();
+#if GTEST_OS_WINDOWS
+ return pathname_.length() >= 3 &&
+ ((name[0] >= 'a' && name[0] <= 'z') ||
+ (name[0] >= 'A' && name[0] <= 'Z')) &&
+ name[1] == ':' &&
+ IsPathSeparator(name[2]);
+#else
+ return IsPathSeparator(name[0]);
+#endif
+}
+
+// Returns a pathname for a file that does not currently exist. The pathname
+// will be directory/base_name.extension or
+// directory/base_name_<number>.extension if directory/base_name.extension
+// already exists. The number will be incremented until a pathname is found
+// that does not already exist.
+// Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'.
+// There could be a race condition if two or more processes are calling this
+// function at the same time -- they could both pick the same filename.
+FilePath FilePath::GenerateUniqueFileName(const FilePath& directory,
+ const FilePath& base_name,
+ const char* extension) {
+ FilePath full_pathname;
+ int number = 0;
+ do {
+ full_pathname.Set(MakeFileName(directory, base_name, number++, extension));
+ } while (full_pathname.FileOrDirectoryExists());
+ return full_pathname;
+}
+
+// Returns true if FilePath ends with a path separator, which indicates that
+// it is intended to represent a directory. Returns false otherwise.
+// This does NOT check that a directory (or file) actually exists.
+bool FilePath::IsDirectory() const {
+ return !pathname_.empty() &&
+ IsPathSeparator(pathname_.c_str()[pathname_.length() - 1]);
+}
+
+// Create directories so that path exists. Returns true if successful or if
+// the directories already exist; returns false if unable to create directories
+// for any reason.
+bool FilePath::CreateDirectoriesRecursively() const {
+ if (!this->IsDirectory()) {
+ return false;
+ }
+
+ if (pathname_.length() == 0 || this->DirectoryExists()) {
+ return true;
+ }
+
+ const FilePath parent(this->RemoveTrailingPathSeparator().RemoveFileName());
+ return parent.CreateDirectoriesRecursively() && this->CreateFolder();
+}
+
+// Create the directory so that path exists. Returns true if successful or
+// if the directory already exists; returns false if unable to create the
+// directory for any reason, including if the parent directory does not
+// exist. Not named "CreateDirectory" because that's a macro on Windows.
+bool FilePath::CreateFolder() const {
+#if GTEST_OS_WINDOWS_MOBILE
+ FilePath removed_sep(this->RemoveTrailingPathSeparator());
+ LPCWSTR unicode = String::AnsiToUtf16(removed_sep.c_str());
int result = CreateDirectory(unicode, nullptr) ? 0 : -1;
- delete [] unicode;
-#elif GTEST_OS_WINDOWS
- int result = _mkdir(pathname_.c_str());
+ delete [] unicode;
+#elif GTEST_OS_WINDOWS
+ int result = _mkdir(pathname_.c_str());
#elif GTEST_OS_ESP8266 || GTEST_OS_XTENSA
// do nothing
int result = 0;
-#else
- int result = mkdir(pathname_.c_str(), 0777);
-#endif // GTEST_OS_WINDOWS_MOBILE
-
- if (result == -1) {
- return this->DirectoryExists(); // An error is OK if the directory exists.
- }
- return true; // No error.
-}
-
-// If input name has a trailing separator character, remove it and return the
-// name, otherwise return the name string unmodified.
-// On Windows platform, uses \ as the separator, other platforms use /.
-FilePath FilePath::RemoveTrailingPathSeparator() const {
- return IsDirectory()
- ? FilePath(pathname_.substr(0, pathname_.length() - 1))
- : *this;
-}
-
-// Removes any redundant separators that might be in the pathname.
-// For example, "bar///foo" becomes "bar/foo". Does not eliminate other
-// redundancies that might be in a pathname involving "." or "..".
-void FilePath::Normalize() {
+#else
+ int result = mkdir(pathname_.c_str(), 0777);
+#endif // GTEST_OS_WINDOWS_MOBILE
+
+ if (result == -1) {
+ return this->DirectoryExists(); // An error is OK if the directory exists.
+ }
+ return true; // No error.
+}
+
+// If input name has a trailing separator character, remove it and return the
+// name, otherwise return the name string unmodified.
+// On Windows platform, uses \ as the separator, other platforms use /.
+FilePath FilePath::RemoveTrailingPathSeparator() const {
+ return IsDirectory()
+ ? FilePath(pathname_.substr(0, pathname_.length() - 1))
+ : *this;
+}
+
+// Removes any redundant separators that might be in the pathname.
+// For example, "bar///foo" becomes "bar/foo". Does not eliminate other
+// redundancies that might be in a pathname involving "." or "..".
+void FilePath::Normalize() {
auto out = pathname_.begin();
-
+
for (const char character : pathname_) {
if (!IsPathSeparator(character)) {
*(out++) = character;
} else if (out == pathname_.begin() || *std::prev(out) != kPathSeparator) {
*(out++) = kPathSeparator;
- } else {
+ } else {
continue;
- }
- }
+ }
+ }
pathname_.erase(out, pathname_.end());
-}
-
-} // namespace internal
-} // namespace testing
+}
+
+} // namespace internal
+} // namespace testing
diff --git a/contrib/restricted/googletest/googletest/src/gtest-internal-inl.h b/contrib/restricted/googletest/googletest/src/gtest-internal-inl.h
index ea27f74049..6d8cecbbb3 100644
--- a/contrib/restricted/googletest/googletest/src/gtest-internal-inl.h
+++ b/contrib/restricted/googletest/googletest/src/gtest-internal-inl.h
@@ -1,458 +1,458 @@
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
// Utility functions and classes used by the Google C++ testing framework.//
-// This file contains purely Google Test's internal implementation. Please
-// DO NOT #INCLUDE IT IN A USER PROGRAM.
-
+// This file contains purely Google Test's internal implementation. Please
+// DO NOT #INCLUDE IT IN A USER PROGRAM.
+
#ifndef GOOGLETEST_SRC_GTEST_INTERNAL_INL_H_
#define GOOGLETEST_SRC_GTEST_INTERNAL_INL_H_
-
-#ifndef _WIN32_WCE
-# include <errno.h>
-#endif // !_WIN32_WCE
-#include <stddef.h>
-#include <stdlib.h> // For strtoll/_strtoul64/malloc/free.
-#include <string.h> // For memmove.
-
-#include <algorithm>
+
+#ifndef _WIN32_WCE
+# include <errno.h>
+#endif // !_WIN32_WCE
+#include <stddef.h>
+#include <stdlib.h> // For strtoll/_strtoul64/malloc/free.
+#include <string.h> // For memmove.
+
+#include <algorithm>
#include <cstdint>
#include <memory>
-#include <string>
-#include <vector>
-
-#include "gtest/internal/gtest-port.h"
-
-#if GTEST_CAN_STREAM_RESULTS_
-# include <arpa/inet.h> // NOLINT
-# include <netdb.h> // NOLINT
-#endif
-
-#if GTEST_OS_WINDOWS
-# include <windows.h> // NOLINT
-#endif // GTEST_OS_WINDOWS
-
+#include <string>
+#include <vector>
+
+#include "gtest/internal/gtest-port.h"
+
+#if GTEST_CAN_STREAM_RESULTS_
+# include <arpa/inet.h> // NOLINT
+# include <netdb.h> // NOLINT
+#endif
+
+#if GTEST_OS_WINDOWS
+# include <windows.h> // NOLINT
+#endif // GTEST_OS_WINDOWS
+
#include "gtest/gtest.h"
-#include "gtest/gtest-spi.h"
-
+#include "gtest/gtest-spi.h"
+
GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
/* class A needs to have dll-interface to be used by clients of class B */)
-namespace testing {
-
-// Declares the flags.
-//
-// We don't want the users to modify this flag in the code, but want
-// Google Test's own unit tests to be able to access it. Therefore we
-// declare it here as opposed to in gtest.h.
-GTEST_DECLARE_bool_(death_test_use_fork);
-
-namespace internal {
-
-// The value of GetTestTypeId() as seen from within the Google Test
-// library. This is solely for testing GetTestTypeId().
-GTEST_API_ extern const TypeId kTestTypeIdInGoogleTest;
-
-// Names of the flags (needed for parsing Google Test flags).
-const char kAlsoRunDisabledTestsFlag[] = "also_run_disabled_tests";
-const char kBreakOnFailureFlag[] = "break_on_failure";
-const char kCatchExceptionsFlag[] = "catch_exceptions";
-const char kColorFlag[] = "color";
+namespace testing {
+
+// Declares the flags.
+//
+// We don't want the users to modify this flag in the code, but want
+// Google Test's own unit tests to be able to access it. Therefore we
+// declare it here as opposed to in gtest.h.
+GTEST_DECLARE_bool_(death_test_use_fork);
+
+namespace internal {
+
+// The value of GetTestTypeId() as seen from within the Google Test
+// library. This is solely for testing GetTestTypeId().
+GTEST_API_ extern const TypeId kTestTypeIdInGoogleTest;
+
+// Names of the flags (needed for parsing Google Test flags).
+const char kAlsoRunDisabledTestsFlag[] = "also_run_disabled_tests";
+const char kBreakOnFailureFlag[] = "break_on_failure";
+const char kCatchExceptionsFlag[] = "catch_exceptions";
+const char kColorFlag[] = "color";
const char kFailFast[] = "fail_fast";
-const char kFilterFlag[] = "filter";
-const char kListTestsFlag[] = "list_tests";
-const char kOutputFlag[] = "output";
+const char kFilterFlag[] = "filter";
+const char kListTestsFlag[] = "list_tests";
+const char kOutputFlag[] = "output";
const char kBriefFlag[] = "brief";
-const char kPrintTimeFlag[] = "print_time";
+const char kPrintTimeFlag[] = "print_time";
const char kPrintUTF8Flag[] = "print_utf8";
-const char kRandomSeedFlag[] = "random_seed";
-const char kRepeatFlag[] = "repeat";
-const char kShuffleFlag[] = "shuffle";
-const char kStackTraceDepthFlag[] = "stack_trace_depth";
-const char kStreamResultToFlag[] = "stream_result_to";
-const char kThrowOnFailureFlag[] = "throw_on_failure";
-const char kFlagfileFlag[] = "flagfile";
-
-// A valid random seed must be in [1, kMaxRandomSeed].
-const int kMaxRandomSeed = 99999;
-
+const char kRandomSeedFlag[] = "random_seed";
+const char kRepeatFlag[] = "repeat";
+const char kShuffleFlag[] = "shuffle";
+const char kStackTraceDepthFlag[] = "stack_trace_depth";
+const char kStreamResultToFlag[] = "stream_result_to";
+const char kThrowOnFailureFlag[] = "throw_on_failure";
+const char kFlagfileFlag[] = "flagfile";
+
+// A valid random seed must be in [1, kMaxRandomSeed].
+const int kMaxRandomSeed = 99999;
+
// g_help_flag is true if and only if the --help flag or an equivalent form
// is specified on the command line.
-GTEST_API_ extern bool g_help_flag;
-
-// Returns the current time in milliseconds.
-GTEST_API_ TimeInMillis GetTimeInMillis();
-
+GTEST_API_ extern bool g_help_flag;
+
+// Returns the current time in milliseconds.
+GTEST_API_ TimeInMillis GetTimeInMillis();
+
// Returns true if and only if Google Test should use colors in the output.
-GTEST_API_ bool ShouldUseColor(bool stdout_is_tty);
-
-// Formats the given time in milliseconds as seconds.
-GTEST_API_ std::string FormatTimeInMillisAsSeconds(TimeInMillis ms);
-
-// Converts the given time in milliseconds to a date string in the ISO 8601
-// format, without the timezone information. N.B.: due to the use the
-// non-reentrant localtime() function, this function is not thread safe. Do
-// not use it in any code that can be called from multiple threads.
-GTEST_API_ std::string FormatEpochTimeInMillisAsIso8601(TimeInMillis ms);
-
-// Parses a string for an Int32 flag, in the form of "--flag=value".
-//
-// On success, stores the value of the flag in *value, and returns
-// true. On failure, returns false without changing *value.
-GTEST_API_ bool ParseInt32Flag(
+GTEST_API_ bool ShouldUseColor(bool stdout_is_tty);
+
+// Formats the given time in milliseconds as seconds.
+GTEST_API_ std::string FormatTimeInMillisAsSeconds(TimeInMillis ms);
+
+// Converts the given time in milliseconds to a date string in the ISO 8601
+// format, without the timezone information. N.B.: due to the use the
+// non-reentrant localtime() function, this function is not thread safe. Do
+// not use it in any code that can be called from multiple threads.
+GTEST_API_ std::string FormatEpochTimeInMillisAsIso8601(TimeInMillis ms);
+
+// Parses a string for an Int32 flag, in the form of "--flag=value".
+//
+// On success, stores the value of the flag in *value, and returns
+// true. On failure, returns false without changing *value.
+GTEST_API_ bool ParseInt32Flag(
const char* str, const char* flag, int32_t* value);
-
-// Returns a random seed in range [1, kMaxRandomSeed] based on the
-// given --gtest_random_seed flag value.
+
+// Returns a random seed in range [1, kMaxRandomSeed] based on the
+// given --gtest_random_seed flag value.
inline int GetRandomSeedFromFlag(int32_t random_seed_flag) {
- const unsigned int raw_seed = (random_seed_flag == 0) ?
- static_cast<unsigned int>(GetTimeInMillis()) :
- static_cast<unsigned int>(random_seed_flag);
-
- // Normalizes the actual seed to range [1, kMaxRandomSeed] such that
- // it's easy to type.
- const int normalized_seed =
- static_cast<int>((raw_seed - 1U) %
- static_cast<unsigned int>(kMaxRandomSeed)) + 1;
- return normalized_seed;
-}
-
-// Returns the first valid random seed after 'seed'. The behavior is
-// undefined if 'seed' is invalid. The seed after kMaxRandomSeed is
-// considered to be 1.
-inline int GetNextRandomSeed(int seed) {
- GTEST_CHECK_(1 <= seed && seed <= kMaxRandomSeed)
- << "Invalid random seed " << seed << " - must be in [1, "
- << kMaxRandomSeed << "].";
- const int next_seed = seed + 1;
- return (next_seed > kMaxRandomSeed) ? 1 : next_seed;
-}
-
-// This class saves the values of all Google Test flags in its c'tor, and
-// restores them in its d'tor.
-class GTestFlagSaver {
- public:
- // The c'tor.
- GTestFlagSaver() {
- also_run_disabled_tests_ = GTEST_FLAG(also_run_disabled_tests);
- break_on_failure_ = GTEST_FLAG(break_on_failure);
- catch_exceptions_ = GTEST_FLAG(catch_exceptions);
- color_ = GTEST_FLAG(color);
- death_test_style_ = GTEST_FLAG(death_test_style);
- death_test_use_fork_ = GTEST_FLAG(death_test_use_fork);
+ const unsigned int raw_seed = (random_seed_flag == 0) ?
+ static_cast<unsigned int>(GetTimeInMillis()) :
+ static_cast<unsigned int>(random_seed_flag);
+
+ // Normalizes the actual seed to range [1, kMaxRandomSeed] such that
+ // it's easy to type.
+ const int normalized_seed =
+ static_cast<int>((raw_seed - 1U) %
+ static_cast<unsigned int>(kMaxRandomSeed)) + 1;
+ return normalized_seed;
+}
+
+// Returns the first valid random seed after 'seed'. The behavior is
+// undefined if 'seed' is invalid. The seed after kMaxRandomSeed is
+// considered to be 1.
+inline int GetNextRandomSeed(int seed) {
+ GTEST_CHECK_(1 <= seed && seed <= kMaxRandomSeed)
+ << "Invalid random seed " << seed << " - must be in [1, "
+ << kMaxRandomSeed << "].";
+ const int next_seed = seed + 1;
+ return (next_seed > kMaxRandomSeed) ? 1 : next_seed;
+}
+
+// This class saves the values of all Google Test flags in its c'tor, and
+// restores them in its d'tor.
+class GTestFlagSaver {
+ public:
+ // The c'tor.
+ GTestFlagSaver() {
+ also_run_disabled_tests_ = GTEST_FLAG(also_run_disabled_tests);
+ break_on_failure_ = GTEST_FLAG(break_on_failure);
+ catch_exceptions_ = GTEST_FLAG(catch_exceptions);
+ color_ = GTEST_FLAG(color);
+ death_test_style_ = GTEST_FLAG(death_test_style);
+ death_test_use_fork_ = GTEST_FLAG(death_test_use_fork);
fail_fast_ = GTEST_FLAG(fail_fast);
- filter_ = GTEST_FLAG(filter);
- internal_run_death_test_ = GTEST_FLAG(internal_run_death_test);
- list_tests_ = GTEST_FLAG(list_tests);
- output_ = GTEST_FLAG(output);
+ filter_ = GTEST_FLAG(filter);
+ internal_run_death_test_ = GTEST_FLAG(internal_run_death_test);
+ list_tests_ = GTEST_FLAG(list_tests);
+ output_ = GTEST_FLAG(output);
brief_ = GTEST_FLAG(brief);
- print_time_ = GTEST_FLAG(print_time);
+ print_time_ = GTEST_FLAG(print_time);
print_utf8_ = GTEST_FLAG(print_utf8);
- random_seed_ = GTEST_FLAG(random_seed);
- repeat_ = GTEST_FLAG(repeat);
- shuffle_ = GTEST_FLAG(shuffle);
- stack_trace_depth_ = GTEST_FLAG(stack_trace_depth);
- stream_result_to_ = GTEST_FLAG(stream_result_to);
- throw_on_failure_ = GTEST_FLAG(throw_on_failure);
- }
-
- // The d'tor is not virtual. DO NOT INHERIT FROM THIS CLASS.
- ~GTestFlagSaver() {
- GTEST_FLAG(also_run_disabled_tests) = also_run_disabled_tests_;
- GTEST_FLAG(break_on_failure) = break_on_failure_;
- GTEST_FLAG(catch_exceptions) = catch_exceptions_;
- GTEST_FLAG(color) = color_;
- GTEST_FLAG(death_test_style) = death_test_style_;
- GTEST_FLAG(death_test_use_fork) = death_test_use_fork_;
- GTEST_FLAG(filter) = filter_;
+ random_seed_ = GTEST_FLAG(random_seed);
+ repeat_ = GTEST_FLAG(repeat);
+ shuffle_ = GTEST_FLAG(shuffle);
+ stack_trace_depth_ = GTEST_FLAG(stack_trace_depth);
+ stream_result_to_ = GTEST_FLAG(stream_result_to);
+ throw_on_failure_ = GTEST_FLAG(throw_on_failure);
+ }
+
+ // The d'tor is not virtual. DO NOT INHERIT FROM THIS CLASS.
+ ~GTestFlagSaver() {
+ GTEST_FLAG(also_run_disabled_tests) = also_run_disabled_tests_;
+ GTEST_FLAG(break_on_failure) = break_on_failure_;
+ GTEST_FLAG(catch_exceptions) = catch_exceptions_;
+ GTEST_FLAG(color) = color_;
+ GTEST_FLAG(death_test_style) = death_test_style_;
+ GTEST_FLAG(death_test_use_fork) = death_test_use_fork_;
+ GTEST_FLAG(filter) = filter_;
GTEST_FLAG(fail_fast) = fail_fast_;
- GTEST_FLAG(internal_run_death_test) = internal_run_death_test_;
- GTEST_FLAG(list_tests) = list_tests_;
- GTEST_FLAG(output) = output_;
+ GTEST_FLAG(internal_run_death_test) = internal_run_death_test_;
+ GTEST_FLAG(list_tests) = list_tests_;
+ GTEST_FLAG(output) = output_;
GTEST_FLAG(brief) = brief_;
- GTEST_FLAG(print_time) = print_time_;
+ GTEST_FLAG(print_time) = print_time_;
GTEST_FLAG(print_utf8) = print_utf8_;
- GTEST_FLAG(random_seed) = random_seed_;
- GTEST_FLAG(repeat) = repeat_;
- GTEST_FLAG(shuffle) = shuffle_;
- GTEST_FLAG(stack_trace_depth) = stack_trace_depth_;
- GTEST_FLAG(stream_result_to) = stream_result_to_;
- GTEST_FLAG(throw_on_failure) = throw_on_failure_;
- }
-
- private:
- // Fields for saving the original values of flags.
- bool also_run_disabled_tests_;
- bool break_on_failure_;
- bool catch_exceptions_;
- std::string color_;
- std::string death_test_style_;
- bool death_test_use_fork_;
+ GTEST_FLAG(random_seed) = random_seed_;
+ GTEST_FLAG(repeat) = repeat_;
+ GTEST_FLAG(shuffle) = shuffle_;
+ GTEST_FLAG(stack_trace_depth) = stack_trace_depth_;
+ GTEST_FLAG(stream_result_to) = stream_result_to_;
+ GTEST_FLAG(throw_on_failure) = throw_on_failure_;
+ }
+
+ private:
+ // Fields for saving the original values of flags.
+ bool also_run_disabled_tests_;
+ bool break_on_failure_;
+ bool catch_exceptions_;
+ std::string color_;
+ std::string death_test_style_;
+ bool death_test_use_fork_;
bool fail_fast_;
- std::string filter_;
- std::string internal_run_death_test_;
- bool list_tests_;
- std::string output_;
+ std::string filter_;
+ std::string internal_run_death_test_;
+ bool list_tests_;
+ std::string output_;
bool brief_;
- bool print_time_;
+ bool print_time_;
bool print_utf8_;
int32_t random_seed_;
int32_t repeat_;
- bool shuffle_;
+ bool shuffle_;
int32_t stack_trace_depth_;
- std::string stream_result_to_;
- bool throw_on_failure_;
-} GTEST_ATTRIBUTE_UNUSED_;
-
-// Converts a Unicode code point to a narrow string in UTF-8 encoding.
-// code_point parameter is of type UInt32 because wchar_t may not be
-// wide enough to contain a code point.
-// If the code_point is not a valid Unicode code point
-// (i.e. outside of Unicode range U+0 to U+10FFFF) it will be converted
-// to "(Invalid Unicode 0xXXXXXXXX)".
+ std::string stream_result_to_;
+ bool throw_on_failure_;
+} GTEST_ATTRIBUTE_UNUSED_;
+
+// Converts a Unicode code point to a narrow string in UTF-8 encoding.
+// code_point parameter is of type UInt32 because wchar_t may not be
+// wide enough to contain a code point.
+// If the code_point is not a valid Unicode code point
+// (i.e. outside of Unicode range U+0 to U+10FFFF) it will be converted
+// to "(Invalid Unicode 0xXXXXXXXX)".
GTEST_API_ std::string CodePointToUtf8(uint32_t code_point);
-
-// Converts a wide string to a narrow string in UTF-8 encoding.
-// The wide string is assumed to have the following encoding:
+
+// Converts a wide string to a narrow string in UTF-8 encoding.
+// The wide string is assumed to have the following encoding:
// UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin)
-// UTF-32 if sizeof(wchar_t) == 4 (on Linux)
-// Parameter str points to a null-terminated wide string.
-// Parameter num_chars may additionally limit the number
-// of wchar_t characters processed. -1 is used when the entire string
-// should be processed.
-// If the string contains code points that are not valid Unicode code points
-// (i.e. outside of Unicode range U+0 to U+10FFFF) they will be output
-// as '(Invalid Unicode 0xXXXXXXXX)'. If the string is in UTF16 encoding
-// and contains invalid UTF-16 surrogate pairs, values in those pairs
-// will be encoded as individual Unicode characters from Basic Normal Plane.
-GTEST_API_ std::string WideStringToUtf8(const wchar_t* str, int num_chars);
-
-// Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file
-// if the variable is present. If a file already exists at this location, this
-// function will write over it. If the variable is present, but the file cannot
-// be created, prints an error and exits.
-void WriteToShardStatusFileIfNeeded();
-
-// Checks whether sharding is enabled by examining the relevant
-// environment variable values. If the variables are present,
-// but inconsistent (e.g., shard_index >= total_shards), prints
-// an error and exits. If in_subprocess_for_death_test, sharding is
-// disabled because it must only be applied to the original test
-// process. Otherwise, we could filter out death tests we intended to execute.
-GTEST_API_ bool ShouldShard(const char* total_shards_str,
- const char* shard_index_str,
- bool in_subprocess_for_death_test);
-
+// UTF-32 if sizeof(wchar_t) == 4 (on Linux)
+// Parameter str points to a null-terminated wide string.
+// Parameter num_chars may additionally limit the number
+// of wchar_t characters processed. -1 is used when the entire string
+// should be processed.
+// If the string contains code points that are not valid Unicode code points
+// (i.e. outside of Unicode range U+0 to U+10FFFF) they will be output
+// as '(Invalid Unicode 0xXXXXXXXX)'. If the string is in UTF16 encoding
+// and contains invalid UTF-16 surrogate pairs, values in those pairs
+// will be encoded as individual Unicode characters from Basic Normal Plane.
+GTEST_API_ std::string WideStringToUtf8(const wchar_t* str, int num_chars);
+
+// Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file
+// if the variable is present. If a file already exists at this location, this
+// function will write over it. If the variable is present, but the file cannot
+// be created, prints an error and exits.
+void WriteToShardStatusFileIfNeeded();
+
+// Checks whether sharding is enabled by examining the relevant
+// environment variable values. If the variables are present,
+// but inconsistent (e.g., shard_index >= total_shards), prints
+// an error and exits. If in_subprocess_for_death_test, sharding is
+// disabled because it must only be applied to the original test
+// process. Otherwise, we could filter out death tests we intended to execute.
+GTEST_API_ bool ShouldShard(const char* total_shards_str,
+ const char* shard_index_str,
+ bool in_subprocess_for_death_test);
+
// Parses the environment variable var as a 32-bit integer. If it is unset,
// returns default_val. If it is not a 32-bit integer, prints an error and
-// and aborts.
+// and aborts.
GTEST_API_ int32_t Int32FromEnvOrDie(const char* env_var, int32_t default_val);
-
-// Given the total number of shards, the shard index, and the test id,
+
+// Given the total number of shards, the shard index, and the test id,
// returns true if and only if the test should be run on this shard. The test id
// is some arbitrary but unique non-negative integer assigned to each test
-// method. Assumes that 0 <= shard_index < total_shards.
-GTEST_API_ bool ShouldRunTestOnShard(
- int total_shards, int shard_index, int test_id);
-
-// STL container utilities.
-
-// Returns the number of elements in the given container that satisfy
-// the given predicate.
-template <class Container, typename Predicate>
-inline int CountIf(const Container& c, Predicate predicate) {
- // Implemented as an explicit loop since std::count_if() in libCstd on
- // Solaris has a non-standard signature.
- int count = 0;
- for (typename Container::const_iterator it = c.begin(); it != c.end(); ++it) {
- if (predicate(*it))
- ++count;
- }
- return count;
-}
-
-// Applies a function/functor to each element in the container.
-template <class Container, typename Functor>
-void ForEach(const Container& c, Functor functor) {
- std::for_each(c.begin(), c.end(), functor);
-}
-
-// Returns the i-th element of the vector, or default_value if i is not
-// in range [0, v.size()).
-template <typename E>
-inline E GetElementOr(const std::vector<E>& v, int i, E default_value) {
+// method. Assumes that 0 <= shard_index < total_shards.
+GTEST_API_ bool ShouldRunTestOnShard(
+ int total_shards, int shard_index, int test_id);
+
+// STL container utilities.
+
+// Returns the number of elements in the given container that satisfy
+// the given predicate.
+template <class Container, typename Predicate>
+inline int CountIf(const Container& c, Predicate predicate) {
+ // Implemented as an explicit loop since std::count_if() in libCstd on
+ // Solaris has a non-standard signature.
+ int count = 0;
+ for (typename Container::const_iterator it = c.begin(); it != c.end(); ++it) {
+ if (predicate(*it))
+ ++count;
+ }
+ return count;
+}
+
+// Applies a function/functor to each element in the container.
+template <class Container, typename Functor>
+void ForEach(const Container& c, Functor functor) {
+ std::for_each(c.begin(), c.end(), functor);
+}
+
+// Returns the i-th element of the vector, or default_value if i is not
+// in range [0, v.size()).
+template <typename E>
+inline E GetElementOr(const std::vector<E>& v, int i, E default_value) {
return (i < 0 || i >= static_cast<int>(v.size())) ? default_value
: v[static_cast<size_t>(i)];
-}
-
-// Performs an in-place shuffle of a range of the vector's elements.
-// 'begin' and 'end' are element indices as an STL-style range;
-// i.e. [begin, end) are shuffled, where 'end' == size() means to
-// shuffle to the end of the vector.
-template <typename E>
-void ShuffleRange(internal::Random* random, int begin, int end,
- std::vector<E>* v) {
- const int size = static_cast<int>(v->size());
- GTEST_CHECK_(0 <= begin && begin <= size)
- << "Invalid shuffle range start " << begin << ": must be in range [0, "
- << size << "].";
- GTEST_CHECK_(begin <= end && end <= size)
- << "Invalid shuffle range finish " << end << ": must be in range ["
- << begin << ", " << size << "].";
-
- // Fisher-Yates shuffle, from
- // http://en.wikipedia.org/wiki/Fisher-Yates_shuffle
- for (int range_width = end - begin; range_width >= 2; range_width--) {
- const int last_in_range = begin + range_width - 1;
+}
+
+// Performs an in-place shuffle of a range of the vector's elements.
+// 'begin' and 'end' are element indices as an STL-style range;
+// i.e. [begin, end) are shuffled, where 'end' == size() means to
+// shuffle to the end of the vector.
+template <typename E>
+void ShuffleRange(internal::Random* random, int begin, int end,
+ std::vector<E>* v) {
+ const int size = static_cast<int>(v->size());
+ GTEST_CHECK_(0 <= begin && begin <= size)
+ << "Invalid shuffle range start " << begin << ": must be in range [0, "
+ << size << "].";
+ GTEST_CHECK_(begin <= end && end <= size)
+ << "Invalid shuffle range finish " << end << ": must be in range ["
+ << begin << ", " << size << "].";
+
+ // Fisher-Yates shuffle, from
+ // http://en.wikipedia.org/wiki/Fisher-Yates_shuffle
+ for (int range_width = end - begin; range_width >= 2; range_width--) {
+ const int last_in_range = begin + range_width - 1;
const int selected =
begin +
static_cast<int>(random->Generate(static_cast<uint32_t>(range_width)));
std::swap((*v)[static_cast<size_t>(selected)],
(*v)[static_cast<size_t>(last_in_range)]);
- }
-}
-
-// Performs an in-place shuffle of the vector's elements.
-template <typename E>
-inline void Shuffle(internal::Random* random, std::vector<E>* v) {
- ShuffleRange(random, 0, static_cast<int>(v->size()), v);
-}
-
-// A function for deleting an object. Handy for being used as a
-// functor.
-template <typename T>
-static void Delete(T* x) {
- delete x;
-}
-
-// A predicate that checks the key of a TestProperty against a known key.
-//
-// TestPropertyKeyIs is copyable.
-class TestPropertyKeyIs {
- public:
- // Constructor.
- //
- // TestPropertyKeyIs has NO default constructor.
- explicit TestPropertyKeyIs(const std::string& key) : key_(key) {}
-
+ }
+}
+
+// Performs an in-place shuffle of the vector's elements.
+template <typename E>
+inline void Shuffle(internal::Random* random, std::vector<E>* v) {
+ ShuffleRange(random, 0, static_cast<int>(v->size()), v);
+}
+
+// A function for deleting an object. Handy for being used as a
+// functor.
+template <typename T>
+static void Delete(T* x) {
+ delete x;
+}
+
+// A predicate that checks the key of a TestProperty against a known key.
+//
+// TestPropertyKeyIs is copyable.
+class TestPropertyKeyIs {
+ public:
+ // Constructor.
+ //
+ // TestPropertyKeyIs has NO default constructor.
+ explicit TestPropertyKeyIs(const std::string& key) : key_(key) {}
+
// Returns true if and only if the test name of test property matches on key_.
- bool operator()(const TestProperty& test_property) const {
- return test_property.key() == key_;
- }
-
- private:
- std::string key_;
-};
-
-// Class UnitTestOptions.
-//
-// This class contains functions for processing options the user
-// specifies when running the tests. It has only static members.
-//
-// In most cases, the user can specify an option using either an
-// environment variable or a command line flag. E.g. you can set the
-// test filter using either GTEST_FILTER or --gtest_filter. If both
-// the variable and the flag are present, the latter overrides the
-// former.
-class GTEST_API_ UnitTestOptions {
- public:
- // Functions for processing the gtest_output flag.
-
- // Returns the output format, or "" for normal printed output.
- static std::string GetOutputFormat();
-
- // Returns the absolute path of the requested output file, or the
- // default (test_detail.xml in the original working directory) if
- // none was explicitly specified.
- static std::string GetAbsolutePathToOutputFile();
-
- // Functions for processing the gtest_filter flag.
-
+ bool operator()(const TestProperty& test_property) const {
+ return test_property.key() == key_;
+ }
+
+ private:
+ std::string key_;
+};
+
+// Class UnitTestOptions.
+//
+// This class contains functions for processing options the user
+// specifies when running the tests. It has only static members.
+//
+// In most cases, the user can specify an option using either an
+// environment variable or a command line flag. E.g. you can set the
+// test filter using either GTEST_FILTER or --gtest_filter. If both
+// the variable and the flag are present, the latter overrides the
+// former.
+class GTEST_API_ UnitTestOptions {
+ public:
+ // Functions for processing the gtest_output flag.
+
+ // Returns the output format, or "" for normal printed output.
+ static std::string GetOutputFormat();
+
+ // Returns the absolute path of the requested output file, or the
+ // default (test_detail.xml in the original working directory) if
+ // none was explicitly specified.
+ static std::string GetAbsolutePathToOutputFile();
+
+ // Functions for processing the gtest_filter flag.
+
// Returns true if and only if the user-specified filter matches the test
// suite name and the test name.
static bool FilterMatchesTest(const std::string& test_suite_name,
const std::string& test_name);
-
-#if GTEST_OS_WINDOWS
- // Function for supporting the gtest_catch_exception flag.
-
- // Returns EXCEPTION_EXECUTE_HANDLER if Google Test should handle the
- // given SEH exception, or EXCEPTION_CONTINUE_SEARCH otherwise.
- // This function is useful as an __except condition.
- static int GTestShouldProcessSEH(DWORD exception_code);
-#endif // GTEST_OS_WINDOWS
-
- // Returns true if "name" matches the ':' separated list of glob-style
- // filters in "filter".
- static bool MatchesFilter(const std::string& name, const char* filter);
-};
-
-// Returns the current application's name, removing directory path if that
-// is present. Used by UnitTestOptions::GetOutputFile.
-GTEST_API_ FilePath GetCurrentExecutableName();
-
-// The role interface for getting the OS stack trace as a string.
-class OsStackTraceGetterInterface {
- public:
- OsStackTraceGetterInterface() {}
- virtual ~OsStackTraceGetterInterface() {}
-
- // Returns the current OS stack trace as an std::string. Parameters:
- //
- // max_depth - the maximum number of stack frames to be included
- // in the trace.
- // skip_count - the number of top frames to be skipped; doesn't count
- // against max_depth.
+
+#if GTEST_OS_WINDOWS
+ // Function for supporting the gtest_catch_exception flag.
+
+ // Returns EXCEPTION_EXECUTE_HANDLER if Google Test should handle the
+ // given SEH exception, or EXCEPTION_CONTINUE_SEARCH otherwise.
+ // This function is useful as an __except condition.
+ static int GTestShouldProcessSEH(DWORD exception_code);
+#endif // GTEST_OS_WINDOWS
+
+ // Returns true if "name" matches the ':' separated list of glob-style
+ // filters in "filter".
+ static bool MatchesFilter(const std::string& name, const char* filter);
+};
+
+// Returns the current application's name, removing directory path if that
+// is present. Used by UnitTestOptions::GetOutputFile.
+GTEST_API_ FilePath GetCurrentExecutableName();
+
+// The role interface for getting the OS stack trace as a string.
+class OsStackTraceGetterInterface {
+ public:
+ OsStackTraceGetterInterface() {}
+ virtual ~OsStackTraceGetterInterface() {}
+
+ // Returns the current OS stack trace as an std::string. Parameters:
+ //
+ // max_depth - the maximum number of stack frames to be included
+ // in the trace.
+ // skip_count - the number of top frames to be skipped; doesn't count
+ // against max_depth.
virtual std::string CurrentStackTrace(int max_depth, int skip_count) = 0;
-
- // UponLeavingGTest() should be called immediately before Google Test calls
- // user code. It saves some information about the current stack that
- // CurrentStackTrace() will use to find and hide Google Test stack frames.
- virtual void UponLeavingGTest() = 0;
-
- // This string is inserted in place of stack frames that are part of
- // Google Test's implementation.
- static const char* const kElidedFramesMarker;
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(OsStackTraceGetterInterface);
-};
-
-// A working implementation of the OsStackTraceGetterInterface interface.
-class OsStackTraceGetter : public OsStackTraceGetterInterface {
- public:
- OsStackTraceGetter() {}
-
+
+ // UponLeavingGTest() should be called immediately before Google Test calls
+ // user code. It saves some information about the current stack that
+ // CurrentStackTrace() will use to find and hide Google Test stack frames.
+ virtual void UponLeavingGTest() = 0;
+
+ // This string is inserted in place of stack frames that are part of
+ // Google Test's implementation.
+ static const char* const kElidedFramesMarker;
+
+ private:
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(OsStackTraceGetterInterface);
+};
+
+// A working implementation of the OsStackTraceGetterInterface interface.
+class OsStackTraceGetter : public OsStackTraceGetterInterface {
+ public:
+ OsStackTraceGetter() {}
+
std::string CurrentStackTrace(int max_depth, int skip_count) override;
void UponLeavingGTest() override;
-
- private:
+
+ private:
#if GTEST_HAS_ABSL
Mutex mutex_; // Protects all internal state.
@@ -463,139 +463,139 @@ class OsStackTraceGetter : public OsStackTraceGetterInterface {
void* caller_frame_ = nullptr;
#endif // GTEST_HAS_ABSL
- GTEST_DISALLOW_COPY_AND_ASSIGN_(OsStackTraceGetter);
-};
-
-// Information about a Google Test trace point.
-struct TraceInfo {
- const char* file;
- int line;
- std::string message;
-};
-
-// This is the default global test part result reporter used in UnitTestImpl.
-// This class should only be used by UnitTestImpl.
-class DefaultGlobalTestPartResultReporter
- : public TestPartResultReporterInterface {
- public:
- explicit DefaultGlobalTestPartResultReporter(UnitTestImpl* unit_test);
- // Implements the TestPartResultReporterInterface. Reports the test part
- // result in the current test.
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(OsStackTraceGetter);
+};
+
+// Information about a Google Test trace point.
+struct TraceInfo {
+ const char* file;
+ int line;
+ std::string message;
+};
+
+// This is the default global test part result reporter used in UnitTestImpl.
+// This class should only be used by UnitTestImpl.
+class DefaultGlobalTestPartResultReporter
+ : public TestPartResultReporterInterface {
+ public:
+ explicit DefaultGlobalTestPartResultReporter(UnitTestImpl* unit_test);
+ // Implements the TestPartResultReporterInterface. Reports the test part
+ // result in the current test.
void ReportTestPartResult(const TestPartResult& result) override;
-
- private:
- UnitTestImpl* const unit_test_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultGlobalTestPartResultReporter);
-};
-
-// This is the default per thread test part result reporter used in
-// UnitTestImpl. This class should only be used by UnitTestImpl.
-class DefaultPerThreadTestPartResultReporter
- : public TestPartResultReporterInterface {
- public:
- explicit DefaultPerThreadTestPartResultReporter(UnitTestImpl* unit_test);
- // Implements the TestPartResultReporterInterface. The implementation just
- // delegates to the current global test part result reporter of *unit_test_.
+
+ private:
+ UnitTestImpl* const unit_test_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultGlobalTestPartResultReporter);
+};
+
+// This is the default per thread test part result reporter used in
+// UnitTestImpl. This class should only be used by UnitTestImpl.
+class DefaultPerThreadTestPartResultReporter
+ : public TestPartResultReporterInterface {
+ public:
+ explicit DefaultPerThreadTestPartResultReporter(UnitTestImpl* unit_test);
+ // Implements the TestPartResultReporterInterface. The implementation just
+ // delegates to the current global test part result reporter of *unit_test_.
void ReportTestPartResult(const TestPartResult& result) override;
-
- private:
- UnitTestImpl* const unit_test_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultPerThreadTestPartResultReporter);
-};
-
-// The private implementation of the UnitTest class. We don't protect
-// the methods under a mutex, as this class is not accessible by a
-// user and the UnitTest class that delegates work to this class does
-// proper locking.
-class GTEST_API_ UnitTestImpl {
- public:
- explicit UnitTestImpl(UnitTest* parent);
- virtual ~UnitTestImpl();
-
- // There are two different ways to register your own TestPartResultReporter.
- // You can register your own repoter to listen either only for test results
- // from the current thread or for results from all threads.
- // By default, each per-thread test result repoter just passes a new
- // TestPartResult to the global test result reporter, which registers the
- // test part result for the currently running test.
-
- // Returns the global test part result reporter.
- TestPartResultReporterInterface* GetGlobalTestPartResultReporter();
-
- // Sets the global test part result reporter.
- void SetGlobalTestPartResultReporter(
- TestPartResultReporterInterface* reporter);
-
- // Returns the test part result reporter for the current thread.
- TestPartResultReporterInterface* GetTestPartResultReporterForCurrentThread();
-
- // Sets the test part result reporter for the current thread.
- void SetTestPartResultReporterForCurrentThread(
- TestPartResultReporterInterface* reporter);
-
+
+ private:
+ UnitTestImpl* const unit_test_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultPerThreadTestPartResultReporter);
+};
+
+// The private implementation of the UnitTest class. We don't protect
+// the methods under a mutex, as this class is not accessible by a
+// user and the UnitTest class that delegates work to this class does
+// proper locking.
+class GTEST_API_ UnitTestImpl {
+ public:
+ explicit UnitTestImpl(UnitTest* parent);
+ virtual ~UnitTestImpl();
+
+ // There are two different ways to register your own TestPartResultReporter.
+ // You can register your own repoter to listen either only for test results
+ // from the current thread or for results from all threads.
+ // By default, each per-thread test result repoter just passes a new
+ // TestPartResult to the global test result reporter, which registers the
+ // test part result for the currently running test.
+
+ // Returns the global test part result reporter.
+ TestPartResultReporterInterface* GetGlobalTestPartResultReporter();
+
+ // Sets the global test part result reporter.
+ void SetGlobalTestPartResultReporter(
+ TestPartResultReporterInterface* reporter);
+
+ // Returns the test part result reporter for the current thread.
+ TestPartResultReporterInterface* GetTestPartResultReporterForCurrentThread();
+
+ // Sets the test part result reporter for the current thread.
+ void SetTestPartResultReporterForCurrentThread(
+ TestPartResultReporterInterface* reporter);
+
// Gets the number of successful test suites.
int successful_test_suite_count() const;
-
+
// Gets the number of failed test suites.
int failed_test_suite_count() const;
-
+
// Gets the number of all test suites.
int total_test_suite_count() const;
-
+
// Gets the number of all test suites that contain at least one test
- // that should run.
+ // that should run.
int test_suite_to_run_count() const;
-
- // Gets the number of successful tests.
- int successful_test_count() const;
-
+
+ // Gets the number of successful tests.
+ int successful_test_count() const;
+
// Gets the number of skipped tests.
int skipped_test_count() const;
- // Gets the number of failed tests.
- int failed_test_count() const;
-
- // Gets the number of disabled tests that will be reported in the XML report.
- int reportable_disabled_test_count() const;
-
- // Gets the number of disabled tests.
- int disabled_test_count() const;
-
- // Gets the number of tests to be printed in the XML report.
- int reportable_test_count() const;
-
- // Gets the number of all tests.
- int total_test_count() const;
-
- // Gets the number of tests that should run.
- int test_to_run_count() const;
-
- // Gets the time of the test program start, in ms from the start of the
- // UNIX epoch.
- TimeInMillis start_timestamp() const { return start_timestamp_; }
-
- // Gets the elapsed time, in milliseconds.
- TimeInMillis elapsed_time() const { return elapsed_time_; }
-
+ // Gets the number of failed tests.
+ int failed_test_count() const;
+
+ // Gets the number of disabled tests that will be reported in the XML report.
+ int reportable_disabled_test_count() const;
+
+ // Gets the number of disabled tests.
+ int disabled_test_count() const;
+
+ // Gets the number of tests to be printed in the XML report.
+ int reportable_test_count() const;
+
+ // Gets the number of all tests.
+ int total_test_count() const;
+
+ // Gets the number of tests that should run.
+ int test_to_run_count() const;
+
+ // Gets the time of the test program start, in ms from the start of the
+ // UNIX epoch.
+ TimeInMillis start_timestamp() const { return start_timestamp_; }
+
+ // Gets the elapsed time, in milliseconds.
+ TimeInMillis elapsed_time() const { return elapsed_time_; }
+
// Returns true if and only if the unit test passed (i.e. all test suites
// passed).
- bool Passed() const { return !Failed(); }
-
+ bool Passed() const { return !Failed(); }
+
// Returns true if and only if the unit test failed (i.e. some test suite
// failed or something outside of all tests failed).
- bool Failed() const {
+ bool Failed() const {
return failed_test_suite_count() > 0 || ad_hoc_test_result()->Failed();
- }
-
+ }
+
// Gets the i-th test suite among all the test suites. i can range from 0 to
// total_test_suite_count() - 1. If i is not in that range, returns NULL.
const TestSuite* GetTestSuite(int i) const {
const int index = GetElementOr(test_suite_indices_, i, -1);
return index < 0 ? nullptr : test_suites_[static_cast<size_t>(i)];
- }
-
+ }
+
// Legacy API is deprecated but still available
#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
const TestCase* GetTestCase(int i) const { return GetTestSuite(i); }
@@ -606,47 +606,47 @@ class GTEST_API_ UnitTestImpl {
TestSuite* GetMutableSuiteCase(int i) {
const int index = GetElementOr(test_suite_indices_, i, -1);
return index < 0 ? nullptr : test_suites_[static_cast<size_t>(index)];
- }
-
- // Provides access to the event listener list.
- TestEventListeners* listeners() { return &listeners_; }
-
- // Returns the TestResult for the test that's currently running, or
- // the TestResult for the ad hoc test if no test is running.
- TestResult* current_test_result();
-
- // Returns the TestResult for the ad hoc test.
- const TestResult* ad_hoc_test_result() const { return &ad_hoc_test_result_; }
-
- // Sets the OS stack trace getter.
- //
- // Does nothing if the input and the current OS stack trace getter
- // are the same; otherwise, deletes the old getter and makes the
- // input the current getter.
- void set_os_stack_trace_getter(OsStackTraceGetterInterface* getter);
-
- // Returns the current OS stack trace getter if it is not NULL;
- // otherwise, creates an OsStackTraceGetter, makes it the current
- // getter, and returns it.
- OsStackTraceGetterInterface* os_stack_trace_getter();
-
- // Returns the current OS stack trace as an std::string.
- //
- // The maximum number of stack frames to be included is specified by
- // the gtest_stack_trace_depth flag. The skip_count parameter
- // specifies the number of top frames to be skipped, which doesn't
- // count against the number of frames to be included.
- //
- // For example, if Foo() calls Bar(), which in turn calls
- // CurrentOsStackTraceExceptTop(1), Foo() will be included in the
- // trace but Bar() and CurrentOsStackTraceExceptTop() won't.
- std::string CurrentOsStackTraceExceptTop(int skip_count) GTEST_NO_INLINE_;
-
+ }
+
+ // Provides access to the event listener list.
+ TestEventListeners* listeners() { return &listeners_; }
+
+ // Returns the TestResult for the test that's currently running, or
+ // the TestResult for the ad hoc test if no test is running.
+ TestResult* current_test_result();
+
+ // Returns the TestResult for the ad hoc test.
+ const TestResult* ad_hoc_test_result() const { return &ad_hoc_test_result_; }
+
+ // Sets the OS stack trace getter.
+ //
+ // Does nothing if the input and the current OS stack trace getter
+ // are the same; otherwise, deletes the old getter and makes the
+ // input the current getter.
+ void set_os_stack_trace_getter(OsStackTraceGetterInterface* getter);
+
+ // Returns the current OS stack trace getter if it is not NULL;
+ // otherwise, creates an OsStackTraceGetter, makes it the current
+ // getter, and returns it.
+ OsStackTraceGetterInterface* os_stack_trace_getter();
+
+ // Returns the current OS stack trace as an std::string.
+ //
+ // The maximum number of stack frames to be included is specified by
+ // the gtest_stack_trace_depth flag. The skip_count parameter
+ // specifies the number of top frames to be skipped, which doesn't
+ // count against the number of frames to be included.
+ //
+ // For example, if Foo() calls Bar(), which in turn calls
+ // CurrentOsStackTraceExceptTop(1), Foo() will be included in the
+ // trace but Bar() and CurrentOsStackTraceExceptTop() won't.
+ std::string CurrentOsStackTraceExceptTop(int skip_count) GTEST_NO_INLINE_;
+
// Finds and returns a TestSuite with the given name. If one doesn't
- // exist, creates one and returns it.
- //
- // Arguments:
- //
+ // exist, creates one and returns it.
+ //
+ // Arguments:
+ //
// test_suite_name: name of the test suite
// type_param: the name of the test's type parameter, or NULL if
// this is not a typed or a type-parameterized test.
@@ -655,7 +655,7 @@ class GTEST_API_ UnitTestImpl {
TestSuite* GetTestSuite(const char* test_suite_name, const char* type_param,
internal::SetUpTestSuiteFunc set_up_tc,
internal::TearDownTestSuiteFunc tear_down_tc);
-
+
// Legacy API is deprecated but still available
#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
TestCase* GetTestCase(const char* test_case_name, const char* type_param,
@@ -665,42 +665,42 @@ class GTEST_API_ UnitTestImpl {
}
#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
- // Adds a TestInfo to the unit test.
- //
- // Arguments:
- //
+ // Adds a TestInfo to the unit test.
+ //
+ // Arguments:
+ //
// set_up_tc: pointer to the function that sets up the test suite
// tear_down_tc: pointer to the function that tears down the test suite
- // test_info: the TestInfo object
+ // test_info: the TestInfo object
void AddTestInfo(internal::SetUpTestSuiteFunc set_up_tc,
internal::TearDownTestSuiteFunc tear_down_tc,
- TestInfo* test_info) {
+ TestInfo* test_info) {
#if GTEST_HAS_DEATH_TEST
- // In order to support thread-safe death tests, we need to
- // remember the original working directory when the test program
- // was first invoked. We cannot do this in RUN_ALL_TESTS(), as
- // the user may have changed the current directory before calling
- // RUN_ALL_TESTS(). Therefore we capture the current directory in
- // AddTestInfo(), which is called to register a TEST or TEST_F
- // before main() is reached.
- if (original_working_dir_.IsEmpty()) {
- original_working_dir_.Set(FilePath::GetCurrentDir());
- GTEST_CHECK_(!original_working_dir_.IsEmpty())
- << "Failed to get the current working directory.";
- }
+ // In order to support thread-safe death tests, we need to
+ // remember the original working directory when the test program
+ // was first invoked. We cannot do this in RUN_ALL_TESTS(), as
+ // the user may have changed the current directory before calling
+ // RUN_ALL_TESTS(). Therefore we capture the current directory in
+ // AddTestInfo(), which is called to register a TEST or TEST_F
+ // before main() is reached.
+ if (original_working_dir_.IsEmpty()) {
+ original_working_dir_.Set(FilePath::GetCurrentDir());
+ GTEST_CHECK_(!original_working_dir_.IsEmpty())
+ << "Failed to get the current working directory.";
+ }
#endif // GTEST_HAS_DEATH_TEST
-
+
GetTestSuite(test_info->test_suite_name(), test_info->type_param(),
set_up_tc, tear_down_tc)
->AddTestInfo(test_info);
- }
-
+ }
+
// Returns ParameterizedTestSuiteRegistry object used to keep track of
- // value-parameterized tests and instantiate and register them.
+ // value-parameterized tests and instantiate and register them.
internal::ParameterizedTestSuiteRegistry& parameterized_test_registry() {
- return parameterized_test_registry_;
- }
-
+ return parameterized_test_registry_;
+ }
+
std::set<std::string>* ignored_parameterized_test_suites() {
return &ignored_parameterized_test_suites_;
}
@@ -715,507 +715,507 @@ class GTEST_API_ UnitTestImpl {
// Sets the TestSuite object for the test that's currently running.
void set_current_test_suite(TestSuite* a_current_test_suite) {
current_test_suite_ = a_current_test_suite;
- }
-
- // Sets the TestInfo object for the test that's currently running. If
- // current_test_info is NULL, the assertion results will be stored in
- // ad_hoc_test_result_.
- void set_current_test_info(TestInfo* a_current_test_info) {
- current_test_info_ = a_current_test_info;
- }
-
- // Registers all parameterized tests defined using TEST_P and
+ }
+
+ // Sets the TestInfo object for the test that's currently running. If
+ // current_test_info is NULL, the assertion results will be stored in
+ // ad_hoc_test_result_.
+ void set_current_test_info(TestInfo* a_current_test_info) {
+ current_test_info_ = a_current_test_info;
+ }
+
+ // Registers all parameterized tests defined using TEST_P and
// INSTANTIATE_TEST_SUITE_P, creating regular tests for each test/parameter
- // combination. This method can be called more then once; it has guards
- // protecting from registering the tests more then once. If
- // value-parameterized tests are disabled, RegisterParameterizedTests is
- // present but does nothing.
- void RegisterParameterizedTests();
-
- // Runs all tests in this UnitTest object, prints the result, and
- // returns true if all tests are successful. If any exception is
- // thrown during a test, this test is considered to be failed, but
- // the rest of the tests will still be run.
- bool RunAllTests();
-
- // Clears the results of all tests, except the ad hoc tests.
- void ClearNonAdHocTestResult() {
+ // combination. This method can be called more then once; it has guards
+ // protecting from registering the tests more then once. If
+ // value-parameterized tests are disabled, RegisterParameterizedTests is
+ // present but does nothing.
+ void RegisterParameterizedTests();
+
+ // Runs all tests in this UnitTest object, prints the result, and
+ // returns true if all tests are successful. If any exception is
+ // thrown during a test, this test is considered to be failed, but
+ // the rest of the tests will still be run.
+ bool RunAllTests();
+
+ // Clears the results of all tests, except the ad hoc tests.
+ void ClearNonAdHocTestResult() {
ForEach(test_suites_, TestSuite::ClearTestSuiteResult);
- }
-
- // Clears the results of ad-hoc test assertions.
- void ClearAdHocTestResult() {
- ad_hoc_test_result_.Clear();
- }
-
- // Adds a TestProperty to the current TestResult object when invoked in a
+ }
+
+ // Clears the results of ad-hoc test assertions.
+ void ClearAdHocTestResult() {
+ ad_hoc_test_result_.Clear();
+ }
+
+ // Adds a TestProperty to the current TestResult object when invoked in a
// context of a test or a test suite, or to the global property set. If the
- // result already contains a property with the same key, the value will be
- // updated.
- void RecordProperty(const TestProperty& test_property);
-
- enum ReactionToSharding {
- HONOR_SHARDING_PROTOCOL,
- IGNORE_SHARDING_PROTOCOL
- };
-
- // Matches the full name of each test against the user-specified
- // filter to decide whether the test should run, then records the
+ // result already contains a property with the same key, the value will be
+ // updated.
+ void RecordProperty(const TestProperty& test_property);
+
+ enum ReactionToSharding {
+ HONOR_SHARDING_PROTOCOL,
+ IGNORE_SHARDING_PROTOCOL
+ };
+
+ // Matches the full name of each test against the user-specified
+ // filter to decide whether the test should run, then records the
// result in each TestSuite and TestInfo object.
- // If shard_tests == HONOR_SHARDING_PROTOCOL, further filters tests
- // based on sharding variables in the environment.
- // Returns the number of tests that should run.
- int FilterTests(ReactionToSharding shard_tests);
-
- // Prints the names of the tests matching the user-specified filter flag.
- void ListTestsMatchingFilter();
-
+ // If shard_tests == HONOR_SHARDING_PROTOCOL, further filters tests
+ // based on sharding variables in the environment.
+ // Returns the number of tests that should run.
+ int FilterTests(ReactionToSharding shard_tests);
+
+ // Prints the names of the tests matching the user-specified filter flag.
+ void ListTestsMatchingFilter();
+
const TestSuite* current_test_suite() const { return current_test_suite_; }
- TestInfo* current_test_info() { return current_test_info_; }
- const TestInfo* current_test_info() const { return current_test_info_; }
-
- // Returns the vector of environments that need to be set-up/torn-down
- // before/after the tests are run.
- std::vector<Environment*>& environments() { return environments_; }
-
- // Getters for the per-thread Google Test trace stack.
- std::vector<TraceInfo>& gtest_trace_stack() {
- return *(gtest_trace_stack_.pointer());
- }
- const std::vector<TraceInfo>& gtest_trace_stack() const {
- return gtest_trace_stack_.get();
- }
-
-#if GTEST_HAS_DEATH_TEST
- void InitDeathTestSubprocessControlInfo() {
- internal_run_death_test_flag_.reset(ParseInternalRunDeathTestFlag());
- }
- // Returns a pointer to the parsed --gtest_internal_run_death_test
- // flag, or NULL if that flag was not specified.
- // This information is useful only in a death test child process.
- // Must not be called before a call to InitGoogleTest.
- const InternalRunDeathTestFlag* internal_run_death_test_flag() const {
- return internal_run_death_test_flag_.get();
- }
-
- // Returns a pointer to the current death test factory.
- internal::DeathTestFactory* death_test_factory() {
- return death_test_factory_.get();
- }
-
- void SuppressTestEventsIfInSubprocess();
-
- friend class ReplaceDeathTestFactory;
-#endif // GTEST_HAS_DEATH_TEST
-
- // Initializes the event listener performing XML output as specified by
- // UnitTestOptions. Must not be called before InitGoogleTest.
- void ConfigureXmlOutput();
-
-#if GTEST_CAN_STREAM_RESULTS_
- // Initializes the event listener for streaming test results to a socket.
- // Must not be called before InitGoogleTest.
- void ConfigureStreamingOutput();
-#endif
-
- // Performs initialization dependent upon flag values obtained in
- // ParseGoogleTestFlagsOnly. Is called from InitGoogleTest after the call to
- // ParseGoogleTestFlagsOnly. In case a user neglects to call InitGoogleTest
- // this function is also called from RunAllTests. Since this function can be
- // called more than once, it has to be idempotent.
- void PostFlagParsingInit();
-
- // Gets the random seed used at the start of the current test iteration.
- int random_seed() const { return random_seed_; }
-
- // Gets the random number generator.
- internal::Random* random() { return &random_; }
-
+ TestInfo* current_test_info() { return current_test_info_; }
+ const TestInfo* current_test_info() const { return current_test_info_; }
+
+ // Returns the vector of environments that need to be set-up/torn-down
+ // before/after the tests are run.
+ std::vector<Environment*>& environments() { return environments_; }
+
+ // Getters for the per-thread Google Test trace stack.
+ std::vector<TraceInfo>& gtest_trace_stack() {
+ return *(gtest_trace_stack_.pointer());
+ }
+ const std::vector<TraceInfo>& gtest_trace_stack() const {
+ return gtest_trace_stack_.get();
+ }
+
+#if GTEST_HAS_DEATH_TEST
+ void InitDeathTestSubprocessControlInfo() {
+ internal_run_death_test_flag_.reset(ParseInternalRunDeathTestFlag());
+ }
+ // Returns a pointer to the parsed --gtest_internal_run_death_test
+ // flag, or NULL if that flag was not specified.
+ // This information is useful only in a death test child process.
+ // Must not be called before a call to InitGoogleTest.
+ const InternalRunDeathTestFlag* internal_run_death_test_flag() const {
+ return internal_run_death_test_flag_.get();
+ }
+
+ // Returns a pointer to the current death test factory.
+ internal::DeathTestFactory* death_test_factory() {
+ return death_test_factory_.get();
+ }
+
+ void SuppressTestEventsIfInSubprocess();
+
+ friend class ReplaceDeathTestFactory;
+#endif // GTEST_HAS_DEATH_TEST
+
+ // Initializes the event listener performing XML output as specified by
+ // UnitTestOptions. Must not be called before InitGoogleTest.
+ void ConfigureXmlOutput();
+
+#if GTEST_CAN_STREAM_RESULTS_
+ // Initializes the event listener for streaming test results to a socket.
+ // Must not be called before InitGoogleTest.
+ void ConfigureStreamingOutput();
+#endif
+
+ // Performs initialization dependent upon flag values obtained in
+ // ParseGoogleTestFlagsOnly. Is called from InitGoogleTest after the call to
+ // ParseGoogleTestFlagsOnly. In case a user neglects to call InitGoogleTest
+ // this function is also called from RunAllTests. Since this function can be
+ // called more than once, it has to be idempotent.
+ void PostFlagParsingInit();
+
+ // Gets the random seed used at the start of the current test iteration.
+ int random_seed() const { return random_seed_; }
+
+ // Gets the random number generator.
+ internal::Random* random() { return &random_; }
+
// Shuffles all test suites, and the tests within each test suite,
- // making sure that death tests are still run first.
- void ShuffleTests();
-
+ // making sure that death tests are still run first.
+ void ShuffleTests();
+
// Restores the test suites and tests to their order before the first shuffle.
- void UnshuffleTests();
-
- // Returns the value of GTEST_FLAG(catch_exceptions) at the moment
- // UnitTest::Run() starts.
- bool catch_exceptions() const { return catch_exceptions_; }
-
- private:
- friend class ::testing::UnitTest;
-
- // Used by UnitTest::Run() to capture the state of
- // GTEST_FLAG(catch_exceptions) at the moment it starts.
- void set_catch_exceptions(bool value) { catch_exceptions_ = value; }
-
- // The UnitTest object that owns this implementation object.
- UnitTest* const parent_;
-
- // The working directory when the first TEST() or TEST_F() was
- // executed.
- internal::FilePath original_working_dir_;
-
- // The default test part result reporters.
- DefaultGlobalTestPartResultReporter default_global_test_part_result_reporter_;
- DefaultPerThreadTestPartResultReporter
- default_per_thread_test_part_result_reporter_;
-
- // Points to (but doesn't own) the global test part result reporter.
- TestPartResultReporterInterface* global_test_part_result_repoter_;
-
- // Protects read and write access to global_test_part_result_reporter_.
- internal::Mutex global_test_part_result_reporter_mutex_;
-
- // Points to (but doesn't own) the per-thread test part result reporter.
- internal::ThreadLocal<TestPartResultReporterInterface*>
- per_thread_test_part_result_reporter_;
-
- // The vector of environments that need to be set-up/torn-down
- // before/after the tests are run.
- std::vector<Environment*> environments_;
-
+ void UnshuffleTests();
+
+ // Returns the value of GTEST_FLAG(catch_exceptions) at the moment
+ // UnitTest::Run() starts.
+ bool catch_exceptions() const { return catch_exceptions_; }
+
+ private:
+ friend class ::testing::UnitTest;
+
+ // Used by UnitTest::Run() to capture the state of
+ // GTEST_FLAG(catch_exceptions) at the moment it starts.
+ void set_catch_exceptions(bool value) { catch_exceptions_ = value; }
+
+ // The UnitTest object that owns this implementation object.
+ UnitTest* const parent_;
+
+ // The working directory when the first TEST() or TEST_F() was
+ // executed.
+ internal::FilePath original_working_dir_;
+
+ // The default test part result reporters.
+ DefaultGlobalTestPartResultReporter default_global_test_part_result_reporter_;
+ DefaultPerThreadTestPartResultReporter
+ default_per_thread_test_part_result_reporter_;
+
+ // Points to (but doesn't own) the global test part result reporter.
+ TestPartResultReporterInterface* global_test_part_result_repoter_;
+
+ // Protects read and write access to global_test_part_result_reporter_.
+ internal::Mutex global_test_part_result_reporter_mutex_;
+
+ // Points to (but doesn't own) the per-thread test part result reporter.
+ internal::ThreadLocal<TestPartResultReporterInterface*>
+ per_thread_test_part_result_reporter_;
+
+ // The vector of environments that need to be set-up/torn-down
+ // before/after the tests are run.
+ std::vector<Environment*> environments_;
+
// The vector of TestSuites in their original order. It owns the
- // elements in the vector.
+ // elements in the vector.
std::vector<TestSuite*> test_suites_;
-
+
// Provides a level of indirection for the test suite list to allow
// easy shuffling and restoring the test suite order. The i-th
// element of this vector is the index of the i-th test suite in the
- // shuffled order.
+ // shuffled order.
std::vector<int> test_suite_indices_;
-
- // ParameterizedTestRegistry object used to register value-parameterized
- // tests.
+
+ // ParameterizedTestRegistry object used to register value-parameterized
+ // tests.
internal::ParameterizedTestSuiteRegistry parameterized_test_registry_;
internal::TypeParameterizedTestSuiteRegistry
type_parameterized_test_registry_;
-
+
// The set holding the name of parameterized
// test suites that may go uninstantiated.
std::set<std::string> ignored_parameterized_test_suites_;
- // Indicates whether RegisterParameterizedTests() has been called already.
- bool parameterized_tests_registered_;
-
+ // Indicates whether RegisterParameterizedTests() has been called already.
+ bool parameterized_tests_registered_;
+
// Index of the last death test suite registered. Initially -1.
int last_death_test_suite_;
-
+
// This points to the TestSuite for the currently running test. It
// changes as Google Test goes through one test suite after another.
- // When no test is running, this is set to NULL and Google Test
- // stores assertion results in ad_hoc_test_result_. Initially NULL.
+ // When no test is running, this is set to NULL and Google Test
+ // stores assertion results in ad_hoc_test_result_. Initially NULL.
TestSuite* current_test_suite_;
-
- // This points to the TestInfo for the currently running test. It
- // changes as Google Test goes through one test after another. When
- // no test is running, this is set to NULL and Google Test stores
- // assertion results in ad_hoc_test_result_. Initially NULL.
- TestInfo* current_test_info_;
-
- // Normally, a user only writes assertions inside a TEST or TEST_F,
- // or inside a function called by a TEST or TEST_F. Since Google
- // Test keeps track of which test is current running, it can
- // associate such an assertion with the test it belongs to.
- //
- // If an assertion is encountered when no TEST or TEST_F is running,
- // Google Test attributes the assertion result to an imaginary "ad hoc"
- // test, and records the result in ad_hoc_test_result_.
- TestResult ad_hoc_test_result_;
-
- // The list of event listeners that can be used to track events inside
- // Google Test.
- TestEventListeners listeners_;
-
- // The OS stack trace getter. Will be deleted when the UnitTest
- // object is destructed. By default, an OsStackTraceGetter is used,
- // but the user can set this field to use a custom getter if that is
- // desired.
- OsStackTraceGetterInterface* os_stack_trace_getter_;
-
+
+ // This points to the TestInfo for the currently running test. It
+ // changes as Google Test goes through one test after another. When
+ // no test is running, this is set to NULL and Google Test stores
+ // assertion results in ad_hoc_test_result_. Initially NULL.
+ TestInfo* current_test_info_;
+
+ // Normally, a user only writes assertions inside a TEST or TEST_F,
+ // or inside a function called by a TEST or TEST_F. Since Google
+ // Test keeps track of which test is current running, it can
+ // associate such an assertion with the test it belongs to.
+ //
+ // If an assertion is encountered when no TEST or TEST_F is running,
+ // Google Test attributes the assertion result to an imaginary "ad hoc"
+ // test, and records the result in ad_hoc_test_result_.
+ TestResult ad_hoc_test_result_;
+
+ // The list of event listeners that can be used to track events inside
+ // Google Test.
+ TestEventListeners listeners_;
+
+ // The OS stack trace getter. Will be deleted when the UnitTest
+ // object is destructed. By default, an OsStackTraceGetter is used,
+ // but the user can set this field to use a custom getter if that is
+ // desired.
+ OsStackTraceGetterInterface* os_stack_trace_getter_;
+
// True if and only if PostFlagParsingInit() has been called.
- bool post_flag_parse_init_performed_;
-
- // The random number seed used at the beginning of the test run.
- int random_seed_;
-
- // Our random number generator.
- internal::Random random_;
-
- // The time of the test program start, in ms from the start of the
- // UNIX epoch.
- TimeInMillis start_timestamp_;
-
- // How long the test took to run, in milliseconds.
- TimeInMillis elapsed_time_;
-
-#if GTEST_HAS_DEATH_TEST
- // The decomposed components of the gtest_internal_run_death_test flag,
- // parsed when RUN_ALL_TESTS is called.
+ bool post_flag_parse_init_performed_;
+
+ // The random number seed used at the beginning of the test run.
+ int random_seed_;
+
+ // Our random number generator.
+ internal::Random random_;
+
+ // The time of the test program start, in ms from the start of the
+ // UNIX epoch.
+ TimeInMillis start_timestamp_;
+
+ // How long the test took to run, in milliseconds.
+ TimeInMillis elapsed_time_;
+
+#if GTEST_HAS_DEATH_TEST
+ // The decomposed components of the gtest_internal_run_death_test flag,
+ // parsed when RUN_ALL_TESTS is called.
std::unique_ptr<InternalRunDeathTestFlag> internal_run_death_test_flag_;
std::unique_ptr<internal::DeathTestFactory> death_test_factory_;
-#endif // GTEST_HAS_DEATH_TEST
-
- // A per-thread stack of traces created by the SCOPED_TRACE() macro.
- internal::ThreadLocal<std::vector<TraceInfo> > gtest_trace_stack_;
-
- // The value of GTEST_FLAG(catch_exceptions) at the moment RunAllTests()
- // starts.
- bool catch_exceptions_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(UnitTestImpl);
-}; // class UnitTestImpl
-
-// Convenience function for accessing the global UnitTest
-// implementation object.
-inline UnitTestImpl* GetUnitTestImpl() {
- return UnitTest::GetInstance()->impl();
-}
-
-#if GTEST_USES_SIMPLE_RE
-
-// Internal helper functions for implementing the simple regular
-// expression matcher.
-GTEST_API_ bool IsInSet(char ch, const char* str);
-GTEST_API_ bool IsAsciiDigit(char ch);
-GTEST_API_ bool IsAsciiPunct(char ch);
-GTEST_API_ bool IsRepeat(char ch);
-GTEST_API_ bool IsAsciiWhiteSpace(char ch);
-GTEST_API_ bool IsAsciiWordChar(char ch);
-GTEST_API_ bool IsValidEscape(char ch);
-GTEST_API_ bool AtomMatchesChar(bool escaped, char pattern, char ch);
-GTEST_API_ bool ValidateRegex(const char* regex);
-GTEST_API_ bool MatchRegexAtHead(const char* regex, const char* str);
-GTEST_API_ bool MatchRepetitionAndRegexAtHead(
- bool escaped, char ch, char repeat, const char* regex, const char* str);
-GTEST_API_ bool MatchRegexAnywhere(const char* regex, const char* str);
-
-#endif // GTEST_USES_SIMPLE_RE
-
-// Parses the command line for Google Test flags, without initializing
-// other parts of Google Test.
-GTEST_API_ void ParseGoogleTestFlagsOnly(int* argc, char** argv);
-GTEST_API_ void ParseGoogleTestFlagsOnly(int* argc, wchar_t** argv);
-
-#if GTEST_HAS_DEATH_TEST
-
-// Returns the message describing the last system error, regardless of the
-// platform.
-GTEST_API_ std::string GetLastErrnoDescription();
-
-// Attempts to parse a string into a positive integer pointed to by the
-// number parameter. Returns true if that is possible.
-// GTEST_HAS_DEATH_TEST implies that we have ::std::string, so we can use
-// it here.
-template <typename Integer>
-bool ParseNaturalNumber(const ::std::string& str, Integer* number) {
- // Fail fast if the given string does not begin with a digit;
- // this bypasses strtoXXX's "optional leading whitespace and plus
- // or minus sign" semantics, which are undesirable here.
- if (str.empty() || !IsDigit(str[0])) {
- return false;
- }
- errno = 0;
-
- char* end;
- // BiggestConvertible is the largest integer type that system-provided
- // string-to-number conversion routines can return.
+#endif // GTEST_HAS_DEATH_TEST
+
+ // A per-thread stack of traces created by the SCOPED_TRACE() macro.
+ internal::ThreadLocal<std::vector<TraceInfo> > gtest_trace_stack_;
+
+ // The value of GTEST_FLAG(catch_exceptions) at the moment RunAllTests()
+ // starts.
+ bool catch_exceptions_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(UnitTestImpl);
+}; // class UnitTestImpl
+
+// Convenience function for accessing the global UnitTest
+// implementation object.
+inline UnitTestImpl* GetUnitTestImpl() {
+ return UnitTest::GetInstance()->impl();
+}
+
+#if GTEST_USES_SIMPLE_RE
+
+// Internal helper functions for implementing the simple regular
+// expression matcher.
+GTEST_API_ bool IsInSet(char ch, const char* str);
+GTEST_API_ bool IsAsciiDigit(char ch);
+GTEST_API_ bool IsAsciiPunct(char ch);
+GTEST_API_ bool IsRepeat(char ch);
+GTEST_API_ bool IsAsciiWhiteSpace(char ch);
+GTEST_API_ bool IsAsciiWordChar(char ch);
+GTEST_API_ bool IsValidEscape(char ch);
+GTEST_API_ bool AtomMatchesChar(bool escaped, char pattern, char ch);
+GTEST_API_ bool ValidateRegex(const char* regex);
+GTEST_API_ bool MatchRegexAtHead(const char* regex, const char* str);
+GTEST_API_ bool MatchRepetitionAndRegexAtHead(
+ bool escaped, char ch, char repeat, const char* regex, const char* str);
+GTEST_API_ bool MatchRegexAnywhere(const char* regex, const char* str);
+
+#endif // GTEST_USES_SIMPLE_RE
+
+// Parses the command line for Google Test flags, without initializing
+// other parts of Google Test.
+GTEST_API_ void ParseGoogleTestFlagsOnly(int* argc, char** argv);
+GTEST_API_ void ParseGoogleTestFlagsOnly(int* argc, wchar_t** argv);
+
+#if GTEST_HAS_DEATH_TEST
+
+// Returns the message describing the last system error, regardless of the
+// platform.
+GTEST_API_ std::string GetLastErrnoDescription();
+
+// Attempts to parse a string into a positive integer pointed to by the
+// number parameter. Returns true if that is possible.
+// GTEST_HAS_DEATH_TEST implies that we have ::std::string, so we can use
+// it here.
+template <typename Integer>
+bool ParseNaturalNumber(const ::std::string& str, Integer* number) {
+ // Fail fast if the given string does not begin with a digit;
+ // this bypasses strtoXXX's "optional leading whitespace and plus
+ // or minus sign" semantics, which are undesirable here.
+ if (str.empty() || !IsDigit(str[0])) {
+ return false;
+ }
+ errno = 0;
+
+ char* end;
+ // BiggestConvertible is the largest integer type that system-provided
+ // string-to-number conversion routines can return.
using BiggestConvertible = unsigned long long; // NOLINT
-
+
const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10); // NOLINT
- const bool parse_success = *end == '\0' && errno == 0;
-
- GTEST_CHECK_(sizeof(Integer) <= sizeof(parsed));
-
- const Integer result = static_cast<Integer>(parsed);
- if (parse_success && static_cast<BiggestConvertible>(result) == parsed) {
- *number = result;
- return true;
- }
- return false;
-}
-#endif // GTEST_HAS_DEATH_TEST
-
-// TestResult contains some private methods that should be hidden from
-// Google Test user but are required for testing. This class allow our tests
-// to access them.
-//
-// This class is supplied only for the purpose of testing Google Test's own
-// constructs. Do not use it in user tests, either directly or indirectly.
-class TestResultAccessor {
- public:
- static void RecordProperty(TestResult* test_result,
- const std::string& xml_element,
- const TestProperty& property) {
- test_result->RecordProperty(xml_element, property);
- }
-
- static void ClearTestPartResults(TestResult* test_result) {
- test_result->ClearTestPartResults();
- }
-
- static const std::vector<testing::TestPartResult>& test_part_results(
- const TestResult& test_result) {
- return test_result.test_part_results();
- }
-};
-
-#if GTEST_CAN_STREAM_RESULTS_
-
-// Streams test results to the given port on the given host machine.
+ const bool parse_success = *end == '\0' && errno == 0;
+
+ GTEST_CHECK_(sizeof(Integer) <= sizeof(parsed));
+
+ const Integer result = static_cast<Integer>(parsed);
+ if (parse_success && static_cast<BiggestConvertible>(result) == parsed) {
+ *number = result;
+ return true;
+ }
+ return false;
+}
+#endif // GTEST_HAS_DEATH_TEST
+
+// TestResult contains some private methods that should be hidden from
+// Google Test user but are required for testing. This class allow our tests
+// to access them.
+//
+// This class is supplied only for the purpose of testing Google Test's own
+// constructs. Do not use it in user tests, either directly or indirectly.
+class TestResultAccessor {
+ public:
+ static void RecordProperty(TestResult* test_result,
+ const std::string& xml_element,
+ const TestProperty& property) {
+ test_result->RecordProperty(xml_element, property);
+ }
+
+ static void ClearTestPartResults(TestResult* test_result) {
+ test_result->ClearTestPartResults();
+ }
+
+ static const std::vector<testing::TestPartResult>& test_part_results(
+ const TestResult& test_result) {
+ return test_result.test_part_results();
+ }
+};
+
+#if GTEST_CAN_STREAM_RESULTS_
+
+// Streams test results to the given port on the given host machine.
class StreamingListener : public EmptyTestEventListener {
- public:
- // Abstract base class for writing strings to a socket.
- class AbstractSocketWriter {
- public:
- virtual ~AbstractSocketWriter() {}
-
- // Sends a string to the socket.
+ public:
+ // Abstract base class for writing strings to a socket.
+ class AbstractSocketWriter {
+ public:
+ virtual ~AbstractSocketWriter() {}
+
+ // Sends a string to the socket.
virtual void Send(const std::string& message) = 0;
-
- // Closes the socket.
- virtual void CloseConnection() {}
-
- // Sends a string and a newline to the socket.
+
+ // Closes the socket.
+ virtual void CloseConnection() {}
+
+ // Sends a string and a newline to the socket.
void SendLn(const std::string& message) { Send(message + "\n"); }
- };
-
- // Concrete class for actually writing strings to a socket.
- class SocketWriter : public AbstractSocketWriter {
- public:
+ };
+
+ // Concrete class for actually writing strings to a socket.
+ class SocketWriter : public AbstractSocketWriter {
+ public:
SocketWriter(const std::string& host, const std::string& port)
- : sockfd_(-1), host_name_(host), port_num_(port) {
- MakeConnection();
- }
-
+ : sockfd_(-1), host_name_(host), port_num_(port) {
+ MakeConnection();
+ }
+
~SocketWriter() override {
- if (sockfd_ != -1)
- CloseConnection();
- }
-
- // Sends a string to the socket.
+ if (sockfd_ != -1)
+ CloseConnection();
+ }
+
+ // Sends a string to the socket.
void Send(const std::string& message) override {
- GTEST_CHECK_(sockfd_ != -1)
- << "Send() can be called only when there is a connection.";
-
+ GTEST_CHECK_(sockfd_ != -1)
+ << "Send() can be called only when there is a connection.";
+
const auto len = static_cast<size_t>(message.length());
if (write(sockfd_, message.c_str(), len) != static_cast<ssize_t>(len)) {
- GTEST_LOG_(WARNING)
- << "stream_result_to: failed to stream to "
- << host_name_ << ":" << port_num_;
- }
- }
-
- private:
- // Creates a client socket and connects to the server.
- void MakeConnection();
-
- // Closes the socket.
+ GTEST_LOG_(WARNING)
+ << "stream_result_to: failed to stream to "
+ << host_name_ << ":" << port_num_;
+ }
+ }
+
+ private:
+ // Creates a client socket and connects to the server.
+ void MakeConnection();
+
+ // Closes the socket.
void CloseConnection() override {
- GTEST_CHECK_(sockfd_ != -1)
- << "CloseConnection() can be called only when there is a connection.";
-
- close(sockfd_);
- sockfd_ = -1;
- }
-
- int sockfd_; // socket file descriptor
+ GTEST_CHECK_(sockfd_ != -1)
+ << "CloseConnection() can be called only when there is a connection.";
+
+ close(sockfd_);
+ sockfd_ = -1;
+ }
+
+ int sockfd_; // socket file descriptor
const std::string host_name_;
const std::string port_num_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(SocketWriter);
- }; // class SocketWriter
-
- // Escapes '=', '&', '%', and '\n' characters in str as "%xx".
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(SocketWriter);
+ }; // class SocketWriter
+
+ // Escapes '=', '&', '%', and '\n' characters in str as "%xx".
static std::string UrlEncode(const char* str);
-
+
StreamingListener(const std::string& host, const std::string& port)
: socket_writer_(new SocketWriter(host, port)) {
Start();
}
-
- explicit StreamingListener(AbstractSocketWriter* socket_writer)
- : socket_writer_(socket_writer) { Start(); }
-
+
+ explicit StreamingListener(AbstractSocketWriter* socket_writer)
+ : socket_writer_(socket_writer) { Start(); }
+
void OnTestProgramStart(const UnitTest& /* unit_test */) override {
- SendLn("event=TestProgramStart");
- }
-
+ SendLn("event=TestProgramStart");
+ }
+
void OnTestProgramEnd(const UnitTest& unit_test) override {
- // Note that Google Test current only report elapsed time for each
- // test iteration, not for the entire test program.
- SendLn("event=TestProgramEnd&passed=" + FormatBool(unit_test.Passed()));
-
- // Notify the streaming server to stop.
- socket_writer_->CloseConnection();
- }
-
+ // Note that Google Test current only report elapsed time for each
+ // test iteration, not for the entire test program.
+ SendLn("event=TestProgramEnd&passed=" + FormatBool(unit_test.Passed()));
+
+ // Notify the streaming server to stop.
+ socket_writer_->CloseConnection();
+ }
+
void OnTestIterationStart(const UnitTest& /* unit_test */,
int iteration) override {
- SendLn("event=TestIterationStart&iteration=" +
- StreamableToString(iteration));
- }
-
+ SendLn("event=TestIterationStart&iteration=" +
+ StreamableToString(iteration));
+ }
+
void OnTestIterationEnd(const UnitTest& unit_test,
int /* iteration */) override {
- SendLn("event=TestIterationEnd&passed=" +
- FormatBool(unit_test.Passed()) + "&elapsed_time=" +
- StreamableToString(unit_test.elapsed_time()) + "ms");
- }
-
+ SendLn("event=TestIterationEnd&passed=" +
+ FormatBool(unit_test.Passed()) + "&elapsed_time=" +
+ StreamableToString(unit_test.elapsed_time()) + "ms");
+ }
+
// Note that "event=TestCaseStart" is a wire format and has to remain
// "case" for compatibility
void OnTestCaseStart(const TestCase& test_case) override {
- SendLn(std::string("event=TestCaseStart&name=") + test_case.name());
- }
-
+ SendLn(std::string("event=TestCaseStart&name=") + test_case.name());
+ }
+
// Note that "event=TestCaseEnd" is a wire format and has to remain
// "case" for compatibility
void OnTestCaseEnd(const TestCase& test_case) override {
SendLn("event=TestCaseEnd&passed=" + FormatBool(test_case.Passed()) +
"&elapsed_time=" + StreamableToString(test_case.elapsed_time()) +
"ms");
- }
-
+ }
+
void OnTestStart(const TestInfo& test_info) override {
- SendLn(std::string("event=TestStart&name=") + test_info.name());
- }
-
+ SendLn(std::string("event=TestStart&name=") + test_info.name());
+ }
+
void OnTestEnd(const TestInfo& test_info) override {
- SendLn("event=TestEnd&passed=" +
- FormatBool((test_info.result())->Passed()) +
- "&elapsed_time=" +
- StreamableToString((test_info.result())->elapsed_time()) + "ms");
- }
-
+ SendLn("event=TestEnd&passed=" +
+ FormatBool((test_info.result())->Passed()) +
+ "&elapsed_time=" +
+ StreamableToString((test_info.result())->elapsed_time()) + "ms");
+ }
+
void OnTestPartResult(const TestPartResult& test_part_result) override {
- const char* file_name = test_part_result.file_name();
+ const char* file_name = test_part_result.file_name();
if (file_name == nullptr) file_name = "";
- SendLn("event=TestPartResult&file=" + UrlEncode(file_name) +
- "&line=" + StreamableToString(test_part_result.line_number()) +
- "&message=" + UrlEncode(test_part_result.message()));
- }
-
- private:
- // Sends the given message and a newline to the socket.
+ SendLn("event=TestPartResult&file=" + UrlEncode(file_name) +
+ "&line=" + StreamableToString(test_part_result.line_number()) +
+ "&message=" + UrlEncode(test_part_result.message()));
+ }
+
+ private:
+ // Sends the given message and a newline to the socket.
void SendLn(const std::string& message) { socket_writer_->SendLn(message); }
-
- // Called at the start of streaming to notify the receiver what
- // protocol we are using.
- void Start() { SendLn("gtest_streaming_protocol_version=1.0"); }
-
+
+ // Called at the start of streaming to notify the receiver what
+ // protocol we are using.
+ void Start() { SendLn("gtest_streaming_protocol_version=1.0"); }
+
std::string FormatBool(bool value) { return value ? "1" : "0"; }
-
+
const std::unique_ptr<AbstractSocketWriter> socket_writer_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(StreamingListener);
-}; // class StreamingListener
-
-#endif // GTEST_CAN_STREAM_RESULTS_
-
-} // namespace internal
-} // namespace testing
-
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(StreamingListener);
+}; // class StreamingListener
+
+#endif // GTEST_CAN_STREAM_RESULTS_
+
+} // namespace internal
+} // namespace testing
+
GTEST_DISABLE_MSC_WARNINGS_POP_() // 4251
#endif // GOOGLETEST_SRC_GTEST_INTERNAL_INL_H_
diff --git a/contrib/restricted/googletest/googletest/src/gtest-port.cc b/contrib/restricted/googletest/googletest/src/gtest-port.cc
index 82d048ae19..da65822d98 100644
--- a/contrib/restricted/googletest/googletest/src/gtest-port.cc
+++ b/contrib/restricted/googletest/googletest/src/gtest-port.cc
@@ -1,61 +1,61 @@
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-#include "gtest/internal/gtest-port.h"
-
-#include <limits.h>
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+#include "gtest/internal/gtest-port.h"
+
+#include <limits.h>
#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
+#include <stdlib.h>
+#include <string.h>
#include <cstdint>
-#include <fstream>
+#include <fstream>
#include <memory>
-
-#if GTEST_OS_WINDOWS
-# include <windows.h>
-# include <io.h>
-# include <sys/stat.h>
-# include <map> // Used in ThreadLocal.
+
+#if GTEST_OS_WINDOWS
+# include <windows.h>
+# include <io.h>
+# include <sys/stat.h>
+# include <map> // Used in ThreadLocal.
# ifdef _MSC_VER
# include <crtdbg.h>
# endif // _MSC_VER
-#else
-# include <unistd.h>
-#endif // GTEST_OS_WINDOWS
-
-#if GTEST_OS_MAC
-# include <mach/mach_init.h>
-# include <mach/task.h>
-# include <mach/vm_map.h>
-#endif // GTEST_OS_MAC
-
+#else
+# include <unistd.h>
+#endif // GTEST_OS_WINDOWS
+
+#if GTEST_OS_MAC
+# include <mach/mach_init.h>
+# include <mach/task.h>
+# include <mach/vm_map.h>
+#endif // GTEST_OS_MAC
+
#if GTEST_OS_DRAGONFLY || GTEST_OS_FREEBSD || GTEST_OS_GNU_KFREEBSD || \
GTEST_OS_NETBSD || GTEST_OS_OPENBSD
# include <sys/sysctl.h>
@@ -64,82 +64,82 @@
# endif
#endif
-#if GTEST_OS_QNX
-# include <devctl.h>
-# include <fcntl.h>
-# include <sys/procfs.h>
-#endif // GTEST_OS_QNX
-
-#if GTEST_OS_AIX
-# include <procinfo.h>
-# include <sys/types.h>
-#endif // GTEST_OS_AIX
-
+#if GTEST_OS_QNX
+# include <devctl.h>
+# include <fcntl.h>
+# include <sys/procfs.h>
+#endif // GTEST_OS_QNX
+
+#if GTEST_OS_AIX
+# include <procinfo.h>
+# include <sys/types.h>
+#endif // GTEST_OS_AIX
+
#if GTEST_OS_FUCHSIA
# error #include <zircon/process.h>
# error #include <zircon/syscalls.h>
#endif // GTEST_OS_FUCHSIA
-#include "gtest/gtest-spi.h"
-#include "gtest/gtest-message.h"
-#include "gtest/internal/gtest-internal.h"
-#include "gtest/internal/gtest-string.h"
-#include "src/gtest-internal-inl.h"
-
-namespace testing {
-namespace internal {
-
-#if defined(_MSC_VER) || defined(__BORLANDC__)
-// MSVC and C++Builder do not provide a definition of STDERR_FILENO.
-const int kStdOutFileno = 1;
-const int kStdErrFileno = 2;
-#else
-const int kStdOutFileno = STDOUT_FILENO;
-const int kStdErrFileno = STDERR_FILENO;
-#endif // _MSC_VER
-
-#if GTEST_OS_LINUX
-
-namespace {
-template <typename T>
+#include "gtest/gtest-spi.h"
+#include "gtest/gtest-message.h"
+#include "gtest/internal/gtest-internal.h"
+#include "gtest/internal/gtest-string.h"
+#include "src/gtest-internal-inl.h"
+
+namespace testing {
+namespace internal {
+
+#if defined(_MSC_VER) || defined(__BORLANDC__)
+// MSVC and C++Builder do not provide a definition of STDERR_FILENO.
+const int kStdOutFileno = 1;
+const int kStdErrFileno = 2;
+#else
+const int kStdOutFileno = STDOUT_FILENO;
+const int kStdErrFileno = STDERR_FILENO;
+#endif // _MSC_VER
+
+#if GTEST_OS_LINUX
+
+namespace {
+template <typename T>
T ReadProcFileField(const std::string& filename, int field) {
- std::string dummy;
- std::ifstream file(filename.c_str());
- while (field-- > 0) {
- file >> dummy;
- }
- T output = 0;
- file >> output;
- return output;
-}
-} // namespace
-
-// Returns the number of active threads, or 0 when there is an error.
-size_t GetThreadCount() {
+ std::string dummy;
+ std::ifstream file(filename.c_str());
+ while (field-- > 0) {
+ file >> dummy;
+ }
+ T output = 0;
+ file >> output;
+ return output;
+}
+} // namespace
+
+// Returns the number of active threads, or 0 when there is an error.
+size_t GetThreadCount() {
const std::string filename =
- (Message() << "/proc/" << getpid() << "/stat").GetString();
+ (Message() << "/proc/" << getpid() << "/stat").GetString();
return ReadProcFileField<size_t>(filename, 19);
-}
-
-#elif GTEST_OS_MAC
-
-size_t GetThreadCount() {
- const task_t task = mach_task_self();
- mach_msg_type_number_t thread_count;
- thread_act_array_t thread_list;
- const kern_return_t status = task_threads(task, &thread_list, &thread_count);
- if (status == KERN_SUCCESS) {
- // task_threads allocates resources in thread_list and we need to free them
- // to avoid leaks.
- vm_deallocate(task,
- reinterpret_cast<vm_address_t>(thread_list),
- sizeof(thread_t) * thread_count);
- return static_cast<size_t>(thread_count);
- } else {
- return 0;
- }
-}
-
+}
+
+#elif GTEST_OS_MAC
+
+size_t GetThreadCount() {
+ const task_t task = mach_task_self();
+ mach_msg_type_number_t thread_count;
+ thread_act_array_t thread_list;
+ const kern_return_t status = task_threads(task, &thread_list, &thread_count);
+ if (status == KERN_SUCCESS) {
+ // task_threads allocates resources in thread_list and we need to free them
+ // to avoid leaks.
+ vm_deallocate(task,
+ reinterpret_cast<vm_address_t>(thread_list),
+ sizeof(thread_t) * thread_count);
+ return static_cast<size_t>(thread_count);
+ } else {
+ return 0;
+ }
+}
+
#elif GTEST_OS_DRAGONFLY || GTEST_OS_FREEBSD || GTEST_OS_GNU_KFREEBSD || \
GTEST_OS_NETBSD
@@ -216,39 +216,39 @@ size_t GetThreadCount() {
return nthreads;
}
-#elif GTEST_OS_QNX
-
-// Returns the number of threads running in the process, or 0 to indicate that
-// we cannot detect it.
-size_t GetThreadCount() {
- const int fd = open("/proc/self/as", O_RDONLY);
- if (fd < 0) {
- return 0;
- }
- procfs_info process_info;
- const int status =
+#elif GTEST_OS_QNX
+
+// Returns the number of threads running in the process, or 0 to indicate that
+// we cannot detect it.
+size_t GetThreadCount() {
+ const int fd = open("/proc/self/as", O_RDONLY);
+ if (fd < 0) {
+ return 0;
+ }
+ procfs_info process_info;
+ const int status =
devctl(fd, DCMD_PROC_INFO, &process_info, sizeof(process_info), nullptr);
- close(fd);
- if (status == EOK) {
- return static_cast<size_t>(process_info.num_threads);
- } else {
- return 0;
- }
-}
-
-#elif GTEST_OS_AIX
-
-size_t GetThreadCount() {
- struct procentry64 entry;
- pid_t pid = getpid();
+ close(fd);
+ if (status == EOK) {
+ return static_cast<size_t>(process_info.num_threads);
+ } else {
+ return 0;
+ }
+}
+
+#elif GTEST_OS_AIX
+
+size_t GetThreadCount() {
+ struct procentry64 entry;
+ pid_t pid = getpid();
int status = getprocs64(&entry, sizeof(entry), nullptr, 0, &pid, 1);
- if (status == 1) {
- return entry.pi_thcount;
- } else {
- return 0;
- }
-}
-
+ if (status == 1) {
+ return entry.pi_thcount;
+ } else {
+ return 0;
+ }
+}
+
#elif GTEST_OS_FUCHSIA
size_t GetThreadCount() {
@@ -268,118 +268,118 @@ size_t GetThreadCount() {
}
}
-#else
-
-size_t GetThreadCount() {
- // There's no portable way to detect the number of threads, so we just
- // return 0 to indicate that we cannot detect it.
- return 0;
-}
-
-#endif // GTEST_OS_LINUX
-
-#if GTEST_IS_THREADSAFE && GTEST_OS_WINDOWS
-
-void SleepMilliseconds(int n) {
+#else
+
+size_t GetThreadCount() {
+ // There's no portable way to detect the number of threads, so we just
+ // return 0 to indicate that we cannot detect it.
+ return 0;
+}
+
+#endif // GTEST_OS_LINUX
+
+#if GTEST_IS_THREADSAFE && GTEST_OS_WINDOWS
+
+void SleepMilliseconds(int n) {
::Sleep(static_cast<DWORD>(n));
-}
-
-AutoHandle::AutoHandle()
- : handle_(INVALID_HANDLE_VALUE) {}
-
-AutoHandle::AutoHandle(Handle handle)
- : handle_(handle) {}
-
-AutoHandle::~AutoHandle() {
- Reset();
-}
-
-AutoHandle::Handle AutoHandle::Get() const {
- return handle_;
-}
-
-void AutoHandle::Reset() {
- Reset(INVALID_HANDLE_VALUE);
-}
-
-void AutoHandle::Reset(HANDLE handle) {
- // Resetting with the same handle we already own is invalid.
- if (handle_ != handle) {
- if (IsCloseable()) {
- ::CloseHandle(handle_);
- }
- handle_ = handle;
- } else {
- GTEST_CHECK_(!IsCloseable())
- << "Resetting a valid handle to itself is likely a programmer error "
- "and thus not allowed.";
- }
-}
-
-bool AutoHandle::IsCloseable() const {
- // Different Windows APIs may use either of these values to represent an
- // invalid handle.
+}
+
+AutoHandle::AutoHandle()
+ : handle_(INVALID_HANDLE_VALUE) {}
+
+AutoHandle::AutoHandle(Handle handle)
+ : handle_(handle) {}
+
+AutoHandle::~AutoHandle() {
+ Reset();
+}
+
+AutoHandle::Handle AutoHandle::Get() const {
+ return handle_;
+}
+
+void AutoHandle::Reset() {
+ Reset(INVALID_HANDLE_VALUE);
+}
+
+void AutoHandle::Reset(HANDLE handle) {
+ // Resetting with the same handle we already own is invalid.
+ if (handle_ != handle) {
+ if (IsCloseable()) {
+ ::CloseHandle(handle_);
+ }
+ handle_ = handle;
+ } else {
+ GTEST_CHECK_(!IsCloseable())
+ << "Resetting a valid handle to itself is likely a programmer error "
+ "and thus not allowed.";
+ }
+}
+
+bool AutoHandle::IsCloseable() const {
+ // Different Windows APIs may use either of these values to represent an
+ // invalid handle.
return handle_ != nullptr && handle_ != INVALID_HANDLE_VALUE;
-}
-
-Notification::Notification()
+}
+
+Notification::Notification()
: event_(::CreateEvent(nullptr, // Default security attributes.
TRUE, // Do not reset automatically.
FALSE, // Initially unset.
nullptr)) { // Anonymous event.
GTEST_CHECK_(event_.Get() != nullptr);
-}
-
-void Notification::Notify() {
- GTEST_CHECK_(::SetEvent(event_.Get()) != FALSE);
-}
-
-void Notification::WaitForNotification() {
- GTEST_CHECK_(
- ::WaitForSingleObject(event_.Get(), INFINITE) == WAIT_OBJECT_0);
-}
-
-Mutex::Mutex()
- : owner_thread_id_(0),
- type_(kDynamic),
- critical_section_init_phase_(0),
- critical_section_(new CRITICAL_SECTION) {
- ::InitializeCriticalSection(critical_section_);
-}
-
-Mutex::~Mutex() {
- // Static mutexes are leaked intentionally. It is not thread-safe to try
- // to clean them up.
- if (type_ == kDynamic) {
- ::DeleteCriticalSection(critical_section_);
- delete critical_section_;
+}
+
+void Notification::Notify() {
+ GTEST_CHECK_(::SetEvent(event_.Get()) != FALSE);
+}
+
+void Notification::WaitForNotification() {
+ GTEST_CHECK_(
+ ::WaitForSingleObject(event_.Get(), INFINITE) == WAIT_OBJECT_0);
+}
+
+Mutex::Mutex()
+ : owner_thread_id_(0),
+ type_(kDynamic),
+ critical_section_init_phase_(0),
+ critical_section_(new CRITICAL_SECTION) {
+ ::InitializeCriticalSection(critical_section_);
+}
+
+Mutex::~Mutex() {
+ // Static mutexes are leaked intentionally. It is not thread-safe to try
+ // to clean them up.
+ if (type_ == kDynamic) {
+ ::DeleteCriticalSection(critical_section_);
+ delete critical_section_;
critical_section_ = nullptr;
- }
-}
-
-void Mutex::Lock() {
- ThreadSafeLazyInit();
- ::EnterCriticalSection(critical_section_);
- owner_thread_id_ = ::GetCurrentThreadId();
-}
-
-void Mutex::Unlock() {
- ThreadSafeLazyInit();
- // We don't protect writing to owner_thread_id_ here, as it's the
- // caller's responsibility to ensure that the current thread holds the
- // mutex when this is called.
- owner_thread_id_ = 0;
- ::LeaveCriticalSection(critical_section_);
-}
-
-// Does nothing if the current thread holds the mutex. Otherwise, crashes
-// with high probability.
-void Mutex::AssertHeld() {
- ThreadSafeLazyInit();
- GTEST_CHECK_(owner_thread_id_ == ::GetCurrentThreadId())
- << "The current thread is not holding the mutex @" << this;
-}
-
+ }
+}
+
+void Mutex::Lock() {
+ ThreadSafeLazyInit();
+ ::EnterCriticalSection(critical_section_);
+ owner_thread_id_ = ::GetCurrentThreadId();
+}
+
+void Mutex::Unlock() {
+ ThreadSafeLazyInit();
+ // We don't protect writing to owner_thread_id_ here, as it's the
+ // caller's responsibility to ensure that the current thread holds the
+ // mutex when this is called.
+ owner_thread_id_ = 0;
+ ::LeaveCriticalSection(critical_section_);
+}
+
+// Does nothing if the current thread holds the mutex. Otherwise, crashes
+// with high probability.
+void Mutex::AssertHeld() {
+ ThreadSafeLazyInit();
+ GTEST_CHECK_(owner_thread_id_ == ::GetCurrentThreadId())
+ << "The current thread is not holding the mutex @" << this;
+}
+
namespace {
#ifdef _MSC_VER
@@ -415,16 +415,16 @@ class MemoryIsNotDeallocated
} // namespace
-// Initializes owner_thread_id_ and critical_section_ in static mutexes.
-void Mutex::ThreadSafeLazyInit() {
- // Dynamic mutexes are initialized in the constructor.
- if (type_ == kStatic) {
- switch (
- ::InterlockedCompareExchange(&critical_section_init_phase_, 1L, 0L)) {
- case 0:
- // If critical_section_init_phase_ was 0 before the exchange, we
- // are the first to test it and need to perform the initialization.
- owner_thread_id_ = 0;
+// Initializes owner_thread_id_ and critical_section_ in static mutexes.
+void Mutex::ThreadSafeLazyInit() {
+ // Dynamic mutexes are initialized in the constructor.
+ if (type_ == kStatic) {
+ switch (
+ ::InterlockedCompareExchange(&critical_section_init_phase_, 1L, 0L)) {
+ case 0:
+ // If critical_section_init_phase_ was 0 before the exchange, we
+ // are the first to test it and need to perform the initialization.
+ owner_thread_id_ = 0;
{
// Use RAII to flag that following mem alloc is never deallocated.
#ifdef _MSC_VER
@@ -432,681 +432,681 @@ void Mutex::ThreadSafeLazyInit() {
#endif // _MSC_VER
critical_section_ = new CRITICAL_SECTION;
}
- ::InitializeCriticalSection(critical_section_);
- // Updates the critical_section_init_phase_ to 2 to signal
- // initialization complete.
- GTEST_CHECK_(::InterlockedCompareExchange(
- &critical_section_init_phase_, 2L, 1L) ==
- 1L);
- break;
- case 1:
- // Somebody else is already initializing the mutex; spin until they
- // are done.
- while (::InterlockedCompareExchange(&critical_section_init_phase_,
- 2L,
- 2L) != 2L) {
- // Possibly yields the rest of the thread's time slice to other
- // threads.
- ::Sleep(0);
- }
- break;
-
- case 2:
- break; // The mutex is already initialized and ready for use.
-
- default:
- GTEST_CHECK_(false)
- << "Unexpected value of critical_section_init_phase_ "
- << "while initializing a static mutex.";
- }
- }
-}
-
-namespace {
-
-class ThreadWithParamSupport : public ThreadWithParamBase {
- public:
- static HANDLE CreateThread(Runnable* runnable,
- Notification* thread_can_start) {
- ThreadMainParam* param = new ThreadMainParam(runnable, thread_can_start);
- DWORD thread_id;
- HANDLE thread_handle = ::CreateThread(
+ ::InitializeCriticalSection(critical_section_);
+ // Updates the critical_section_init_phase_ to 2 to signal
+ // initialization complete.
+ GTEST_CHECK_(::InterlockedCompareExchange(
+ &critical_section_init_phase_, 2L, 1L) ==
+ 1L);
+ break;
+ case 1:
+ // Somebody else is already initializing the mutex; spin until they
+ // are done.
+ while (::InterlockedCompareExchange(&critical_section_init_phase_,
+ 2L,
+ 2L) != 2L) {
+ // Possibly yields the rest of the thread's time slice to other
+ // threads.
+ ::Sleep(0);
+ }
+ break;
+
+ case 2:
+ break; // The mutex is already initialized and ready for use.
+
+ default:
+ GTEST_CHECK_(false)
+ << "Unexpected value of critical_section_init_phase_ "
+ << "while initializing a static mutex.";
+ }
+ }
+}
+
+namespace {
+
+class ThreadWithParamSupport : public ThreadWithParamBase {
+ public:
+ static HANDLE CreateThread(Runnable* runnable,
+ Notification* thread_can_start) {
+ ThreadMainParam* param = new ThreadMainParam(runnable, thread_can_start);
+ DWORD thread_id;
+ HANDLE thread_handle = ::CreateThread(
nullptr, // Default security.
0, // Default stack size.
- &ThreadWithParamSupport::ThreadMain,
+ &ThreadWithParamSupport::ThreadMain,
param, // Parameter to ThreadMainStatic
0x0, // Default creation flags.
- &thread_id); // Need a valid pointer for the call to work under Win98.
+ &thread_id); // Need a valid pointer for the call to work under Win98.
GTEST_CHECK_(thread_handle != nullptr)
<< "CreateThread failed with error " << ::GetLastError() << ".";
if (thread_handle == nullptr) {
- delete param;
- }
- return thread_handle;
- }
-
- private:
- struct ThreadMainParam {
- ThreadMainParam(Runnable* runnable, Notification* thread_can_start)
- : runnable_(runnable),
- thread_can_start_(thread_can_start) {
- }
+ delete param;
+ }
+ return thread_handle;
+ }
+
+ private:
+ struct ThreadMainParam {
+ ThreadMainParam(Runnable* runnable, Notification* thread_can_start)
+ : runnable_(runnable),
+ thread_can_start_(thread_can_start) {
+ }
std::unique_ptr<Runnable> runnable_;
- // Does not own.
- Notification* thread_can_start_;
- };
-
- static DWORD WINAPI ThreadMain(void* ptr) {
- // Transfers ownership.
+ // Does not own.
+ Notification* thread_can_start_;
+ };
+
+ static DWORD WINAPI ThreadMain(void* ptr) {
+ // Transfers ownership.
std::unique_ptr<ThreadMainParam> param(static_cast<ThreadMainParam*>(ptr));
if (param->thread_can_start_ != nullptr)
- param->thread_can_start_->WaitForNotification();
- param->runnable_->Run();
- return 0;
- }
-
- // Prohibit instantiation.
- ThreadWithParamSupport();
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParamSupport);
-};
-
-} // namespace
-
-ThreadWithParamBase::ThreadWithParamBase(Runnable *runnable,
- Notification* thread_can_start)
- : thread_(ThreadWithParamSupport::CreateThread(runnable,
- thread_can_start)) {
-}
-
-ThreadWithParamBase::~ThreadWithParamBase() {
- Join();
-}
-
-void ThreadWithParamBase::Join() {
- GTEST_CHECK_(::WaitForSingleObject(thread_.Get(), INFINITE) == WAIT_OBJECT_0)
- << "Failed to join the thread with error " << ::GetLastError() << ".";
-}
-
-// Maps a thread to a set of ThreadIdToThreadLocals that have values
-// instantiated on that thread and notifies them when the thread exits. A
-// ThreadLocal instance is expected to persist until all threads it has
-// values on have terminated.
-class ThreadLocalRegistryImpl {
- public:
- // Registers thread_local_instance as having value on the current thread.
- // Returns a value that can be used to identify the thread from other threads.
- static ThreadLocalValueHolderBase* GetValueOnCurrentThread(
- const ThreadLocalBase* thread_local_instance) {
+ param->thread_can_start_->WaitForNotification();
+ param->runnable_->Run();
+ return 0;
+ }
+
+ // Prohibit instantiation.
+ ThreadWithParamSupport();
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParamSupport);
+};
+
+} // namespace
+
+ThreadWithParamBase::ThreadWithParamBase(Runnable *runnable,
+ Notification* thread_can_start)
+ : thread_(ThreadWithParamSupport::CreateThread(runnable,
+ thread_can_start)) {
+}
+
+ThreadWithParamBase::~ThreadWithParamBase() {
+ Join();
+}
+
+void ThreadWithParamBase::Join() {
+ GTEST_CHECK_(::WaitForSingleObject(thread_.Get(), INFINITE) == WAIT_OBJECT_0)
+ << "Failed to join the thread with error " << ::GetLastError() << ".";
+}
+
+// Maps a thread to a set of ThreadIdToThreadLocals that have values
+// instantiated on that thread and notifies them when the thread exits. A
+// ThreadLocal instance is expected to persist until all threads it has
+// values on have terminated.
+class ThreadLocalRegistryImpl {
+ public:
+ // Registers thread_local_instance as having value on the current thread.
+ // Returns a value that can be used to identify the thread from other threads.
+ static ThreadLocalValueHolderBase* GetValueOnCurrentThread(
+ const ThreadLocalBase* thread_local_instance) {
#ifdef _MSC_VER
MemoryIsNotDeallocated memory_is_not_deallocated;
#endif // _MSC_VER
- DWORD current_thread = ::GetCurrentThreadId();
- MutexLock lock(&mutex_);
- ThreadIdToThreadLocals* const thread_to_thread_locals =
- GetThreadLocalsMapLocked();
- ThreadIdToThreadLocals::iterator thread_local_pos =
- thread_to_thread_locals->find(current_thread);
- if (thread_local_pos == thread_to_thread_locals->end()) {
- thread_local_pos = thread_to_thread_locals->insert(
- std::make_pair(current_thread, ThreadLocalValues())).first;
- StartWatcherThreadFor(current_thread);
- }
- ThreadLocalValues& thread_local_values = thread_local_pos->second;
- ThreadLocalValues::iterator value_pos =
- thread_local_values.find(thread_local_instance);
- if (value_pos == thread_local_values.end()) {
- value_pos =
- thread_local_values
- .insert(std::make_pair(
- thread_local_instance,
+ DWORD current_thread = ::GetCurrentThreadId();
+ MutexLock lock(&mutex_);
+ ThreadIdToThreadLocals* const thread_to_thread_locals =
+ GetThreadLocalsMapLocked();
+ ThreadIdToThreadLocals::iterator thread_local_pos =
+ thread_to_thread_locals->find(current_thread);
+ if (thread_local_pos == thread_to_thread_locals->end()) {
+ thread_local_pos = thread_to_thread_locals->insert(
+ std::make_pair(current_thread, ThreadLocalValues())).first;
+ StartWatcherThreadFor(current_thread);
+ }
+ ThreadLocalValues& thread_local_values = thread_local_pos->second;
+ ThreadLocalValues::iterator value_pos =
+ thread_local_values.find(thread_local_instance);
+ if (value_pos == thread_local_values.end()) {
+ value_pos =
+ thread_local_values
+ .insert(std::make_pair(
+ thread_local_instance,
std::shared_ptr<ThreadLocalValueHolderBase>(
- thread_local_instance->NewValueForCurrentThread())))
- .first;
- }
- return value_pos->second.get();
- }
-
- static void OnThreadLocalDestroyed(
- const ThreadLocalBase* thread_local_instance) {
+ thread_local_instance->NewValueForCurrentThread())))
+ .first;
+ }
+ return value_pos->second.get();
+ }
+
+ static void OnThreadLocalDestroyed(
+ const ThreadLocalBase* thread_local_instance) {
std::vector<std::shared_ptr<ThreadLocalValueHolderBase> > value_holders;
- // Clean up the ThreadLocalValues data structure while holding the lock, but
- // defer the destruction of the ThreadLocalValueHolderBases.
- {
- MutexLock lock(&mutex_);
- ThreadIdToThreadLocals* const thread_to_thread_locals =
- GetThreadLocalsMapLocked();
- for (ThreadIdToThreadLocals::iterator it =
- thread_to_thread_locals->begin();
- it != thread_to_thread_locals->end();
- ++it) {
- ThreadLocalValues& thread_local_values = it->second;
- ThreadLocalValues::iterator value_pos =
- thread_local_values.find(thread_local_instance);
- if (value_pos != thread_local_values.end()) {
- value_holders.push_back(value_pos->second);
- thread_local_values.erase(value_pos);
- // This 'if' can only be successful at most once, so theoretically we
- // could break out of the loop here, but we don't bother doing so.
- }
- }
- }
- // Outside the lock, let the destructor for 'value_holders' deallocate the
- // ThreadLocalValueHolderBases.
- }
-
- static void OnThreadExit(DWORD thread_id) {
- GTEST_CHECK_(thread_id != 0) << ::GetLastError();
+ // Clean up the ThreadLocalValues data structure while holding the lock, but
+ // defer the destruction of the ThreadLocalValueHolderBases.
+ {
+ MutexLock lock(&mutex_);
+ ThreadIdToThreadLocals* const thread_to_thread_locals =
+ GetThreadLocalsMapLocked();
+ for (ThreadIdToThreadLocals::iterator it =
+ thread_to_thread_locals->begin();
+ it != thread_to_thread_locals->end();
+ ++it) {
+ ThreadLocalValues& thread_local_values = it->second;
+ ThreadLocalValues::iterator value_pos =
+ thread_local_values.find(thread_local_instance);
+ if (value_pos != thread_local_values.end()) {
+ value_holders.push_back(value_pos->second);
+ thread_local_values.erase(value_pos);
+ // This 'if' can only be successful at most once, so theoretically we
+ // could break out of the loop here, but we don't bother doing so.
+ }
+ }
+ }
+ // Outside the lock, let the destructor for 'value_holders' deallocate the
+ // ThreadLocalValueHolderBases.
+ }
+
+ static void OnThreadExit(DWORD thread_id) {
+ GTEST_CHECK_(thread_id != 0) << ::GetLastError();
std::vector<std::shared_ptr<ThreadLocalValueHolderBase> > value_holders;
- // Clean up the ThreadIdToThreadLocals data structure while holding the
- // lock, but defer the destruction of the ThreadLocalValueHolderBases.
- {
- MutexLock lock(&mutex_);
- ThreadIdToThreadLocals* const thread_to_thread_locals =
- GetThreadLocalsMapLocked();
- ThreadIdToThreadLocals::iterator thread_local_pos =
- thread_to_thread_locals->find(thread_id);
- if (thread_local_pos != thread_to_thread_locals->end()) {
- ThreadLocalValues& thread_local_values = thread_local_pos->second;
- for (ThreadLocalValues::iterator value_pos =
- thread_local_values.begin();
- value_pos != thread_local_values.end();
- ++value_pos) {
- value_holders.push_back(value_pos->second);
- }
- thread_to_thread_locals->erase(thread_local_pos);
- }
- }
- // Outside the lock, let the destructor for 'value_holders' deallocate the
- // ThreadLocalValueHolderBases.
- }
-
- private:
- // In a particular thread, maps a ThreadLocal object to its value.
- typedef std::map<const ThreadLocalBase*,
+ // Clean up the ThreadIdToThreadLocals data structure while holding the
+ // lock, but defer the destruction of the ThreadLocalValueHolderBases.
+ {
+ MutexLock lock(&mutex_);
+ ThreadIdToThreadLocals* const thread_to_thread_locals =
+ GetThreadLocalsMapLocked();
+ ThreadIdToThreadLocals::iterator thread_local_pos =
+ thread_to_thread_locals->find(thread_id);
+ if (thread_local_pos != thread_to_thread_locals->end()) {
+ ThreadLocalValues& thread_local_values = thread_local_pos->second;
+ for (ThreadLocalValues::iterator value_pos =
+ thread_local_values.begin();
+ value_pos != thread_local_values.end();
+ ++value_pos) {
+ value_holders.push_back(value_pos->second);
+ }
+ thread_to_thread_locals->erase(thread_local_pos);
+ }
+ }
+ // Outside the lock, let the destructor for 'value_holders' deallocate the
+ // ThreadLocalValueHolderBases.
+ }
+
+ private:
+ // In a particular thread, maps a ThreadLocal object to its value.
+ typedef std::map<const ThreadLocalBase*,
std::shared_ptr<ThreadLocalValueHolderBase> >
ThreadLocalValues;
- // Stores all ThreadIdToThreadLocals having values in a thread, indexed by
- // thread's ID.
- typedef std::map<DWORD, ThreadLocalValues> ThreadIdToThreadLocals;
-
- // Holds the thread id and thread handle that we pass from
- // StartWatcherThreadFor to WatcherThreadFunc.
- typedef std::pair<DWORD, HANDLE> ThreadIdAndHandle;
-
- static void StartWatcherThreadFor(DWORD thread_id) {
- // The returned handle will be kept in thread_map and closed by
- // watcher_thread in WatcherThreadFunc.
- HANDLE thread = ::OpenThread(SYNCHRONIZE | THREAD_QUERY_INFORMATION,
- FALSE,
- thread_id);
+ // Stores all ThreadIdToThreadLocals having values in a thread, indexed by
+ // thread's ID.
+ typedef std::map<DWORD, ThreadLocalValues> ThreadIdToThreadLocals;
+
+ // Holds the thread id and thread handle that we pass from
+ // StartWatcherThreadFor to WatcherThreadFunc.
+ typedef std::pair<DWORD, HANDLE> ThreadIdAndHandle;
+
+ static void StartWatcherThreadFor(DWORD thread_id) {
+ // The returned handle will be kept in thread_map and closed by
+ // watcher_thread in WatcherThreadFunc.
+ HANDLE thread = ::OpenThread(SYNCHRONIZE | THREAD_QUERY_INFORMATION,
+ FALSE,
+ thread_id);
GTEST_CHECK_(thread != nullptr);
// We need to pass a valid thread ID pointer into CreateThread for it
- // to work correctly under Win98.
- DWORD watcher_thread_id;
- HANDLE watcher_thread = ::CreateThread(
+ // to work correctly under Win98.
+ DWORD watcher_thread_id;
+ HANDLE watcher_thread = ::CreateThread(
nullptr, // Default security.
0, // Default stack size
- &ThreadLocalRegistryImpl::WatcherThreadFunc,
- reinterpret_cast<LPVOID>(new ThreadIdAndHandle(thread_id, thread)),
+ &ThreadLocalRegistryImpl::WatcherThreadFunc,
+ reinterpret_cast<LPVOID>(new ThreadIdAndHandle(thread_id, thread)),
CREATE_SUSPENDED, &watcher_thread_id);
GTEST_CHECK_(watcher_thread != nullptr);
- // Give the watcher thread the same priority as ours to avoid being
- // blocked by it.
- ::SetThreadPriority(watcher_thread,
- ::GetThreadPriority(::GetCurrentThread()));
- ::ResumeThread(watcher_thread);
- ::CloseHandle(watcher_thread);
- }
-
- // Monitors exit from a given thread and notifies those
- // ThreadIdToThreadLocals about thread termination.
- static DWORD WINAPI WatcherThreadFunc(LPVOID param) {
- const ThreadIdAndHandle* tah =
- reinterpret_cast<const ThreadIdAndHandle*>(param);
- GTEST_CHECK_(
- ::WaitForSingleObject(tah->second, INFINITE) == WAIT_OBJECT_0);
- OnThreadExit(tah->first);
- ::CloseHandle(tah->second);
- delete tah;
- return 0;
- }
-
- // Returns map of thread local instances.
- static ThreadIdToThreadLocals* GetThreadLocalsMapLocked() {
- mutex_.AssertHeld();
+ // Give the watcher thread the same priority as ours to avoid being
+ // blocked by it.
+ ::SetThreadPriority(watcher_thread,
+ ::GetThreadPriority(::GetCurrentThread()));
+ ::ResumeThread(watcher_thread);
+ ::CloseHandle(watcher_thread);
+ }
+
+ // Monitors exit from a given thread and notifies those
+ // ThreadIdToThreadLocals about thread termination.
+ static DWORD WINAPI WatcherThreadFunc(LPVOID param) {
+ const ThreadIdAndHandle* tah =
+ reinterpret_cast<const ThreadIdAndHandle*>(param);
+ GTEST_CHECK_(
+ ::WaitForSingleObject(tah->second, INFINITE) == WAIT_OBJECT_0);
+ OnThreadExit(tah->first);
+ ::CloseHandle(tah->second);
+ delete tah;
+ return 0;
+ }
+
+ // Returns map of thread local instances.
+ static ThreadIdToThreadLocals* GetThreadLocalsMapLocked() {
+ mutex_.AssertHeld();
#ifdef _MSC_VER
MemoryIsNotDeallocated memory_is_not_deallocated;
#endif // _MSC_VER
static ThreadIdToThreadLocals* map = new ThreadIdToThreadLocals();
- return map;
- }
-
- // Protects access to GetThreadLocalsMapLocked() and its return value.
- static Mutex mutex_;
- // Protects access to GetThreadMapLocked() and its return value.
- static Mutex thread_map_mutex_;
-};
-
+ return map;
+ }
+
+ // Protects access to GetThreadLocalsMapLocked() and its return value.
+ static Mutex mutex_;
+ // Protects access to GetThreadMapLocked() and its return value.
+ static Mutex thread_map_mutex_;
+};
+
Mutex ThreadLocalRegistryImpl::mutex_(Mutex::kStaticMutex); // NOLINT
Mutex ThreadLocalRegistryImpl::thread_map_mutex_(Mutex::kStaticMutex); // NOLINT
-
-ThreadLocalValueHolderBase* ThreadLocalRegistry::GetValueOnCurrentThread(
- const ThreadLocalBase* thread_local_instance) {
- return ThreadLocalRegistryImpl::GetValueOnCurrentThread(
- thread_local_instance);
-}
-
-void ThreadLocalRegistry::OnThreadLocalDestroyed(
- const ThreadLocalBase* thread_local_instance) {
- ThreadLocalRegistryImpl::OnThreadLocalDestroyed(thread_local_instance);
-}
-
-#endif // GTEST_IS_THREADSAFE && GTEST_OS_WINDOWS
-
-#if GTEST_USES_POSIX_RE
-
-// Implements RE. Currently only needed for death tests.
-
-RE::~RE() {
- if (is_valid_) {
- // regfree'ing an invalid regex might crash because the content
- // of the regex is undefined. Since the regex's are essentially
- // the same, one cannot be valid (or invalid) without the other
- // being so too.
- regfree(&partial_regex_);
- regfree(&full_regex_);
- }
- free(const_cast<char*>(pattern_));
-}
-
+
+ThreadLocalValueHolderBase* ThreadLocalRegistry::GetValueOnCurrentThread(
+ const ThreadLocalBase* thread_local_instance) {
+ return ThreadLocalRegistryImpl::GetValueOnCurrentThread(
+ thread_local_instance);
+}
+
+void ThreadLocalRegistry::OnThreadLocalDestroyed(
+ const ThreadLocalBase* thread_local_instance) {
+ ThreadLocalRegistryImpl::OnThreadLocalDestroyed(thread_local_instance);
+}
+
+#endif // GTEST_IS_THREADSAFE && GTEST_OS_WINDOWS
+
+#if GTEST_USES_POSIX_RE
+
+// Implements RE. Currently only needed for death tests.
+
+RE::~RE() {
+ if (is_valid_) {
+ // regfree'ing an invalid regex might crash because the content
+ // of the regex is undefined. Since the regex's are essentially
+ // the same, one cannot be valid (or invalid) without the other
+ // being so too.
+ regfree(&partial_regex_);
+ regfree(&full_regex_);
+ }
+ free(const_cast<char*>(pattern_));
+}
+
// Returns true if and only if regular expression re matches the entire str.
-bool RE::FullMatch(const char* str, const RE& re) {
- if (!re.is_valid_) return false;
-
- regmatch_t match;
- return regexec(&re.full_regex_, str, 1, &match, 0) == 0;
-}
-
+bool RE::FullMatch(const char* str, const RE& re) {
+ if (!re.is_valid_) return false;
+
+ regmatch_t match;
+ return regexec(&re.full_regex_, str, 1, &match, 0) == 0;
+}
+
// Returns true if and only if regular expression re matches a substring of
// str (including str itself).
-bool RE::PartialMatch(const char* str, const RE& re) {
- if (!re.is_valid_) return false;
-
- regmatch_t match;
- return regexec(&re.partial_regex_, str, 1, &match, 0) == 0;
-}
-
-// Initializes an RE from its string representation.
-void RE::Init(const char* regex) {
- pattern_ = posix::StrDup(regex);
-
- // Reserves enough bytes to hold the regular expression used for a
- // full match.
- const size_t full_regex_len = strlen(regex) + 10;
- char* const full_pattern = new char[full_regex_len];
-
- snprintf(full_pattern, full_regex_len, "^(%s)$", regex);
- is_valid_ = regcomp(&full_regex_, full_pattern, REG_EXTENDED) == 0;
- // We want to call regcomp(&partial_regex_, ...) even if the
- // previous expression returns false. Otherwise partial_regex_ may
- // not be properly initialized can may cause trouble when it's
- // freed.
- //
- // Some implementation of POSIX regex (e.g. on at least some
- // versions of Cygwin) doesn't accept the empty string as a valid
- // regex. We change it to an equivalent form "()" to be safe.
- if (is_valid_) {
- const char* const partial_regex = (*regex == '\0') ? "()" : regex;
- is_valid_ = regcomp(&partial_regex_, partial_regex, REG_EXTENDED) == 0;
- }
- EXPECT_TRUE(is_valid_)
- << "Regular expression \"" << regex
- << "\" is not a valid POSIX Extended regular expression.";
-
- delete[] full_pattern;
-}
-
-#elif GTEST_USES_SIMPLE_RE
-
+bool RE::PartialMatch(const char* str, const RE& re) {
+ if (!re.is_valid_) return false;
+
+ regmatch_t match;
+ return regexec(&re.partial_regex_, str, 1, &match, 0) == 0;
+}
+
+// Initializes an RE from its string representation.
+void RE::Init(const char* regex) {
+ pattern_ = posix::StrDup(regex);
+
+ // Reserves enough bytes to hold the regular expression used for a
+ // full match.
+ const size_t full_regex_len = strlen(regex) + 10;
+ char* const full_pattern = new char[full_regex_len];
+
+ snprintf(full_pattern, full_regex_len, "^(%s)$", regex);
+ is_valid_ = regcomp(&full_regex_, full_pattern, REG_EXTENDED) == 0;
+ // We want to call regcomp(&partial_regex_, ...) even if the
+ // previous expression returns false. Otherwise partial_regex_ may
+ // not be properly initialized can may cause trouble when it's
+ // freed.
+ //
+ // Some implementation of POSIX regex (e.g. on at least some
+ // versions of Cygwin) doesn't accept the empty string as a valid
+ // regex. We change it to an equivalent form "()" to be safe.
+ if (is_valid_) {
+ const char* const partial_regex = (*regex == '\0') ? "()" : regex;
+ is_valid_ = regcomp(&partial_regex_, partial_regex, REG_EXTENDED) == 0;
+ }
+ EXPECT_TRUE(is_valid_)
+ << "Regular expression \"" << regex
+ << "\" is not a valid POSIX Extended regular expression.";
+
+ delete[] full_pattern;
+}
+
+#elif GTEST_USES_SIMPLE_RE
+
// Returns true if and only if ch appears anywhere in str (excluding the
-// terminating '\0' character).
-bool IsInSet(char ch, const char* str) {
+// terminating '\0' character).
+bool IsInSet(char ch, const char* str) {
return ch != '\0' && strchr(str, ch) != nullptr;
-}
-
+}
+
// Returns true if and only if ch belongs to the given classification.
// Unlike similar functions in <ctype.h>, these aren't affected by the
-// current locale.
-bool IsAsciiDigit(char ch) { return '0' <= ch && ch <= '9'; }
-bool IsAsciiPunct(char ch) {
- return IsInSet(ch, "^-!\"#$%&'()*+,./:;<=>?@[\\]_`{|}~");
-}
-bool IsRepeat(char ch) { return IsInSet(ch, "?*+"); }
-bool IsAsciiWhiteSpace(char ch) { return IsInSet(ch, " \f\n\r\t\v"); }
-bool IsAsciiWordChar(char ch) {
- return ('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z') ||
- ('0' <= ch && ch <= '9') || ch == '_';
-}
-
+// current locale.
+bool IsAsciiDigit(char ch) { return '0' <= ch && ch <= '9'; }
+bool IsAsciiPunct(char ch) {
+ return IsInSet(ch, "^-!\"#$%&'()*+,./:;<=>?@[\\]_`{|}~");
+}
+bool IsRepeat(char ch) { return IsInSet(ch, "?*+"); }
+bool IsAsciiWhiteSpace(char ch) { return IsInSet(ch, " \f\n\r\t\v"); }
+bool IsAsciiWordChar(char ch) {
+ return ('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z') ||
+ ('0' <= ch && ch <= '9') || ch == '_';
+}
+
// Returns true if and only if "\\c" is a supported escape sequence.
-bool IsValidEscape(char c) {
- return (IsAsciiPunct(c) || IsInSet(c, "dDfnrsStvwW"));
-}
-
+bool IsValidEscape(char c) {
+ return (IsAsciiPunct(c) || IsInSet(c, "dDfnrsStvwW"));
+}
+
// Returns true if and only if the given atom (specified by escaped and
// pattern) matches ch. The result is undefined if the atom is invalid.
-bool AtomMatchesChar(bool escaped, char pattern_char, char ch) {
- if (escaped) { // "\\p" where p is pattern_char.
- switch (pattern_char) {
- case 'd': return IsAsciiDigit(ch);
- case 'D': return !IsAsciiDigit(ch);
- case 'f': return ch == '\f';
- case 'n': return ch == '\n';
- case 'r': return ch == '\r';
- case 's': return IsAsciiWhiteSpace(ch);
- case 'S': return !IsAsciiWhiteSpace(ch);
- case 't': return ch == '\t';
- case 'v': return ch == '\v';
- case 'w': return IsAsciiWordChar(ch);
- case 'W': return !IsAsciiWordChar(ch);
- }
- return IsAsciiPunct(pattern_char) && pattern_char == ch;
- }
-
- return (pattern_char == '.' && ch != '\n') || pattern_char == ch;
-}
-
-// Helper function used by ValidateRegex() to format error messages.
+bool AtomMatchesChar(bool escaped, char pattern_char, char ch) {
+ if (escaped) { // "\\p" where p is pattern_char.
+ switch (pattern_char) {
+ case 'd': return IsAsciiDigit(ch);
+ case 'D': return !IsAsciiDigit(ch);
+ case 'f': return ch == '\f';
+ case 'n': return ch == '\n';
+ case 'r': return ch == '\r';
+ case 's': return IsAsciiWhiteSpace(ch);
+ case 'S': return !IsAsciiWhiteSpace(ch);
+ case 't': return ch == '\t';
+ case 'v': return ch == '\v';
+ case 'w': return IsAsciiWordChar(ch);
+ case 'W': return !IsAsciiWordChar(ch);
+ }
+ return IsAsciiPunct(pattern_char) && pattern_char == ch;
+ }
+
+ return (pattern_char == '.' && ch != '\n') || pattern_char == ch;
+}
+
+// Helper function used by ValidateRegex() to format error messages.
static std::string FormatRegexSyntaxError(const char* regex, int index) {
- return (Message() << "Syntax error at index " << index
- << " in simple regular expression \"" << regex << "\": ").GetString();
-}
-
-// Generates non-fatal failures and returns false if regex is invalid;
-// otherwise returns true.
-bool ValidateRegex(const char* regex) {
+ return (Message() << "Syntax error at index " << index
+ << " in simple regular expression \"" << regex << "\": ").GetString();
+}
+
+// Generates non-fatal failures and returns false if regex is invalid;
+// otherwise returns true.
+bool ValidateRegex(const char* regex) {
if (regex == nullptr) {
- ADD_FAILURE() << "NULL is not a valid simple regular expression.";
- return false;
- }
-
- bool is_valid = true;
-
+ ADD_FAILURE() << "NULL is not a valid simple regular expression.";
+ return false;
+ }
+
+ bool is_valid = true;
+
// True if and only if ?, *, or + can follow the previous atom.
- bool prev_repeatable = false;
- for (int i = 0; regex[i]; i++) {
- if (regex[i] == '\\') { // An escape sequence
- i++;
- if (regex[i] == '\0') {
- ADD_FAILURE() << FormatRegexSyntaxError(regex, i - 1)
- << "'\\' cannot appear at the end.";
- return false;
- }
-
- if (!IsValidEscape(regex[i])) {
- ADD_FAILURE() << FormatRegexSyntaxError(regex, i - 1)
- << "invalid escape sequence \"\\" << regex[i] << "\".";
- is_valid = false;
- }
- prev_repeatable = true;
- } else { // Not an escape sequence.
- const char ch = regex[i];
-
- if (ch == '^' && i > 0) {
- ADD_FAILURE() << FormatRegexSyntaxError(regex, i)
- << "'^' can only appear at the beginning.";
- is_valid = false;
- } else if (ch == '$' && regex[i + 1] != '\0') {
- ADD_FAILURE() << FormatRegexSyntaxError(regex, i)
- << "'$' can only appear at the end.";
- is_valid = false;
- } else if (IsInSet(ch, "()[]{}|")) {
- ADD_FAILURE() << FormatRegexSyntaxError(regex, i)
- << "'" << ch << "' is unsupported.";
- is_valid = false;
- } else if (IsRepeat(ch) && !prev_repeatable) {
- ADD_FAILURE() << FormatRegexSyntaxError(regex, i)
- << "'" << ch << "' can only follow a repeatable token.";
- is_valid = false;
- }
-
- prev_repeatable = !IsInSet(ch, "^$?*+");
- }
- }
-
- return is_valid;
-}
-
-// Matches a repeated regex atom followed by a valid simple regular
-// expression. The regex atom is defined as c if escaped is false,
-// or \c otherwise. repeat is the repetition meta character (?, *,
-// or +). The behavior is undefined if str contains too many
-// characters to be indexable by size_t, in which case the test will
-// probably time out anyway. We are fine with this limitation as
-// std::string has it too.
-bool MatchRepetitionAndRegexAtHead(
- bool escaped, char c, char repeat, const char* regex,
- const char* str) {
- const size_t min_count = (repeat == '+') ? 1 : 0;
- const size_t max_count = (repeat == '?') ? 1 :
- static_cast<size_t>(-1) - 1;
- // We cannot call numeric_limits::max() as it conflicts with the
- // max() macro on Windows.
-
- for (size_t i = 0; i <= max_count; ++i) {
- // We know that the atom matches each of the first i characters in str.
- if (i >= min_count && MatchRegexAtHead(regex, str + i)) {
- // We have enough matches at the head, and the tail matches too.
- // Since we only care about *whether* the pattern matches str
- // (as opposed to *how* it matches), there is no need to find a
- // greedy match.
- return true;
- }
- if (str[i] == '\0' || !AtomMatchesChar(escaped, c, str[i]))
- return false;
- }
- return false;
-}
-
+ bool prev_repeatable = false;
+ for (int i = 0; regex[i]; i++) {
+ if (regex[i] == '\\') { // An escape sequence
+ i++;
+ if (regex[i] == '\0') {
+ ADD_FAILURE() << FormatRegexSyntaxError(regex, i - 1)
+ << "'\\' cannot appear at the end.";
+ return false;
+ }
+
+ if (!IsValidEscape(regex[i])) {
+ ADD_FAILURE() << FormatRegexSyntaxError(regex, i - 1)
+ << "invalid escape sequence \"\\" << regex[i] << "\".";
+ is_valid = false;
+ }
+ prev_repeatable = true;
+ } else { // Not an escape sequence.
+ const char ch = regex[i];
+
+ if (ch == '^' && i > 0) {
+ ADD_FAILURE() << FormatRegexSyntaxError(regex, i)
+ << "'^' can only appear at the beginning.";
+ is_valid = false;
+ } else if (ch == '$' && regex[i + 1] != '\0') {
+ ADD_FAILURE() << FormatRegexSyntaxError(regex, i)
+ << "'$' can only appear at the end.";
+ is_valid = false;
+ } else if (IsInSet(ch, "()[]{}|")) {
+ ADD_FAILURE() << FormatRegexSyntaxError(regex, i)
+ << "'" << ch << "' is unsupported.";
+ is_valid = false;
+ } else if (IsRepeat(ch) && !prev_repeatable) {
+ ADD_FAILURE() << FormatRegexSyntaxError(regex, i)
+ << "'" << ch << "' can only follow a repeatable token.";
+ is_valid = false;
+ }
+
+ prev_repeatable = !IsInSet(ch, "^$?*+");
+ }
+ }
+
+ return is_valid;
+}
+
+// Matches a repeated regex atom followed by a valid simple regular
+// expression. The regex atom is defined as c if escaped is false,
+// or \c otherwise. repeat is the repetition meta character (?, *,
+// or +). The behavior is undefined if str contains too many
+// characters to be indexable by size_t, in which case the test will
+// probably time out anyway. We are fine with this limitation as
+// std::string has it too.
+bool MatchRepetitionAndRegexAtHead(
+ bool escaped, char c, char repeat, const char* regex,
+ const char* str) {
+ const size_t min_count = (repeat == '+') ? 1 : 0;
+ const size_t max_count = (repeat == '?') ? 1 :
+ static_cast<size_t>(-1) - 1;
+ // We cannot call numeric_limits::max() as it conflicts with the
+ // max() macro on Windows.
+
+ for (size_t i = 0; i <= max_count; ++i) {
+ // We know that the atom matches each of the first i characters in str.
+ if (i >= min_count && MatchRegexAtHead(regex, str + i)) {
+ // We have enough matches at the head, and the tail matches too.
+ // Since we only care about *whether* the pattern matches str
+ // (as opposed to *how* it matches), there is no need to find a
+ // greedy match.
+ return true;
+ }
+ if (str[i] == '\0' || !AtomMatchesChar(escaped, c, str[i]))
+ return false;
+ }
+ return false;
+}
+
// Returns true if and only if regex matches a prefix of str. regex must
// be a valid simple regular expression and not start with "^", or the
-// result is undefined.
-bool MatchRegexAtHead(const char* regex, const char* str) {
- if (*regex == '\0') // An empty regex matches a prefix of anything.
- return true;
-
- // "$" only matches the end of a string. Note that regex being
- // valid guarantees that there's nothing after "$" in it.
- if (*regex == '$')
- return *str == '\0';
-
- // Is the first thing in regex an escape sequence?
- const bool escaped = *regex == '\\';
- if (escaped)
- ++regex;
- if (IsRepeat(regex[1])) {
- // MatchRepetitionAndRegexAtHead() calls MatchRegexAtHead(), so
- // here's an indirect recursion. It terminates as the regex gets
- // shorter in each recursion.
- return MatchRepetitionAndRegexAtHead(
- escaped, regex[0], regex[1], regex + 2, str);
- } else {
- // regex isn't empty, isn't "$", and doesn't start with a
- // repetition. We match the first atom of regex with the first
- // character of str and recurse.
- return (*str != '\0') && AtomMatchesChar(escaped, *regex, *str) &&
- MatchRegexAtHead(regex + 1, str + 1);
- }
-}
-
+// result is undefined.
+bool MatchRegexAtHead(const char* regex, const char* str) {
+ if (*regex == '\0') // An empty regex matches a prefix of anything.
+ return true;
+
+ // "$" only matches the end of a string. Note that regex being
+ // valid guarantees that there's nothing after "$" in it.
+ if (*regex == '$')
+ return *str == '\0';
+
+ // Is the first thing in regex an escape sequence?
+ const bool escaped = *regex == '\\';
+ if (escaped)
+ ++regex;
+ if (IsRepeat(regex[1])) {
+ // MatchRepetitionAndRegexAtHead() calls MatchRegexAtHead(), so
+ // here's an indirect recursion. It terminates as the regex gets
+ // shorter in each recursion.
+ return MatchRepetitionAndRegexAtHead(
+ escaped, regex[0], regex[1], regex + 2, str);
+ } else {
+ // regex isn't empty, isn't "$", and doesn't start with a
+ // repetition. We match the first atom of regex with the first
+ // character of str and recurse.
+ return (*str != '\0') && AtomMatchesChar(escaped, *regex, *str) &&
+ MatchRegexAtHead(regex + 1, str + 1);
+ }
+}
+
// Returns true if and only if regex matches any substring of str. regex must
// be a valid simple regular expression, or the result is undefined.
-//
-// The algorithm is recursive, but the recursion depth doesn't exceed
-// the regex length, so we won't need to worry about running out of
-// stack space normally. In rare cases the time complexity can be
-// exponential with respect to the regex length + the string length,
-// but usually it's must faster (often close to linear).
-bool MatchRegexAnywhere(const char* regex, const char* str) {
+//
+// The algorithm is recursive, but the recursion depth doesn't exceed
+// the regex length, so we won't need to worry about running out of
+// stack space normally. In rare cases the time complexity can be
+// exponential with respect to the regex length + the string length,
+// but usually it's must faster (often close to linear).
+bool MatchRegexAnywhere(const char* regex, const char* str) {
if (regex == nullptr || str == nullptr) return false;
-
- if (*regex == '^')
- return MatchRegexAtHead(regex + 1, str);
-
- // A successful match can be anywhere in str.
- do {
- if (MatchRegexAtHead(regex, str))
- return true;
- } while (*str++ != '\0');
- return false;
-}
-
-// Implements the RE class.
-
-RE::~RE() {
- free(const_cast<char*>(pattern_));
- free(const_cast<char*>(full_pattern_));
-}
-
+
+ if (*regex == '^')
+ return MatchRegexAtHead(regex + 1, str);
+
+ // A successful match can be anywhere in str.
+ do {
+ if (MatchRegexAtHead(regex, str))
+ return true;
+ } while (*str++ != '\0');
+ return false;
+}
+
+// Implements the RE class.
+
+RE::~RE() {
+ free(const_cast<char*>(pattern_));
+ free(const_cast<char*>(full_pattern_));
+}
+
// Returns true if and only if regular expression re matches the entire str.
-bool RE::FullMatch(const char* str, const RE& re) {
- return re.is_valid_ && MatchRegexAnywhere(re.full_pattern_, str);
-}
-
+bool RE::FullMatch(const char* str, const RE& re) {
+ return re.is_valid_ && MatchRegexAnywhere(re.full_pattern_, str);
+}
+
// Returns true if and only if regular expression re matches a substring of
// str (including str itself).
-bool RE::PartialMatch(const char* str, const RE& re) {
- return re.is_valid_ && MatchRegexAnywhere(re.pattern_, str);
-}
-
-// Initializes an RE from its string representation.
-void RE::Init(const char* regex) {
+bool RE::PartialMatch(const char* str, const RE& re) {
+ return re.is_valid_ && MatchRegexAnywhere(re.pattern_, str);
+}
+
+// Initializes an RE from its string representation.
+void RE::Init(const char* regex) {
pattern_ = full_pattern_ = nullptr;
if (regex != nullptr) {
- pattern_ = posix::StrDup(regex);
- }
-
- is_valid_ = ValidateRegex(regex);
- if (!is_valid_) {
- // No need to calculate the full pattern when the regex is invalid.
- return;
- }
-
- const size_t len = strlen(regex);
- // Reserves enough bytes to hold the regular expression used for a
- // full match: we need space to prepend a '^', append a '$', and
- // terminate the string with '\0'.
- char* buffer = static_cast<char*>(malloc(len + 3));
- full_pattern_ = buffer;
-
- if (*regex != '^')
- *buffer++ = '^'; // Makes sure full_pattern_ starts with '^'.
-
- // We don't use snprintf or strncpy, as they trigger a warning when
- // compiled with VC++ 8.0.
- memcpy(buffer, regex, len);
- buffer += len;
-
- if (len == 0 || regex[len - 1] != '$')
- *buffer++ = '$'; // Makes sure full_pattern_ ends with '$'.
-
- *buffer = '\0';
-}
-
-#endif // GTEST_USES_POSIX_RE
-
-const char kUnknownFile[] = "unknown file";
-
-// Formats a source file path and a line number as they would appear
-// in an error message from the compiler used to compile this code.
-GTEST_API_ ::std::string FormatFileLocation(const char* file, int line) {
+ pattern_ = posix::StrDup(regex);
+ }
+
+ is_valid_ = ValidateRegex(regex);
+ if (!is_valid_) {
+ // No need to calculate the full pattern when the regex is invalid.
+ return;
+ }
+
+ const size_t len = strlen(regex);
+ // Reserves enough bytes to hold the regular expression used for a
+ // full match: we need space to prepend a '^', append a '$', and
+ // terminate the string with '\0'.
+ char* buffer = static_cast<char*>(malloc(len + 3));
+ full_pattern_ = buffer;
+
+ if (*regex != '^')
+ *buffer++ = '^'; // Makes sure full_pattern_ starts with '^'.
+
+ // We don't use snprintf or strncpy, as they trigger a warning when
+ // compiled with VC++ 8.0.
+ memcpy(buffer, regex, len);
+ buffer += len;
+
+ if (len == 0 || regex[len - 1] != '$')
+ *buffer++ = '$'; // Makes sure full_pattern_ ends with '$'.
+
+ *buffer = '\0';
+}
+
+#endif // GTEST_USES_POSIX_RE
+
+const char kUnknownFile[] = "unknown file";
+
+// Formats a source file path and a line number as they would appear
+// in an error message from the compiler used to compile this code.
+GTEST_API_ ::std::string FormatFileLocation(const char* file, int line) {
const std::string file_name(file == nullptr ? kUnknownFile : file);
-
- if (line < 0) {
- return file_name + ":";
- }
-#ifdef _MSC_VER
- return file_name + "(" + StreamableToString(line) + "):";
-#else
- return file_name + ":" + StreamableToString(line) + ":";
-#endif // _MSC_VER
-}
-
-// Formats a file location for compiler-independent XML output.
-// Although this function is not platform dependent, we put it next to
-// FormatFileLocation in order to contrast the two functions.
-// Note that FormatCompilerIndependentFileLocation() does NOT append colon
-// to the file location it produces, unlike FormatFileLocation().
-GTEST_API_ ::std::string FormatCompilerIndependentFileLocation(
- const char* file, int line) {
+
+ if (line < 0) {
+ return file_name + ":";
+ }
+#ifdef _MSC_VER
+ return file_name + "(" + StreamableToString(line) + "):";
+#else
+ return file_name + ":" + StreamableToString(line) + ":";
+#endif // _MSC_VER
+}
+
+// Formats a file location for compiler-independent XML output.
+// Although this function is not platform dependent, we put it next to
+// FormatFileLocation in order to contrast the two functions.
+// Note that FormatCompilerIndependentFileLocation() does NOT append colon
+// to the file location it produces, unlike FormatFileLocation().
+GTEST_API_ ::std::string FormatCompilerIndependentFileLocation(
+ const char* file, int line) {
const std::string file_name(file == nullptr ? kUnknownFile : file);
-
- if (line < 0)
- return file_name;
- else
- return file_name + ":" + StreamableToString(line);
-}
-
-GTestLog::GTestLog(GTestLogSeverity severity, const char* file, int line)
- : severity_(severity) {
- const char* const marker =
- severity == GTEST_INFO ? "[ INFO ]" :
- severity == GTEST_WARNING ? "[WARNING]" :
- severity == GTEST_ERROR ? "[ ERROR ]" : "[ FATAL ]";
- GetStream() << ::std::endl << marker << " "
- << FormatFileLocation(file, line).c_str() << ": ";
-}
-
-// Flushes the buffers and, if severity is GTEST_FATAL, aborts the program.
-GTestLog::~GTestLog() {
- GetStream() << ::std::endl;
- if (severity_ == GTEST_FATAL) {
- fflush(stderr);
- posix::Abort();
- }
-}
-
-// Disable Microsoft deprecation warnings for POSIX functions called from
-// this class (creat, dup, dup2, and close)
+
+ if (line < 0)
+ return file_name;
+ else
+ return file_name + ":" + StreamableToString(line);
+}
+
+GTestLog::GTestLog(GTestLogSeverity severity, const char* file, int line)
+ : severity_(severity) {
+ const char* const marker =
+ severity == GTEST_INFO ? "[ INFO ]" :
+ severity == GTEST_WARNING ? "[WARNING]" :
+ severity == GTEST_ERROR ? "[ ERROR ]" : "[ FATAL ]";
+ GetStream() << ::std::endl << marker << " "
+ << FormatFileLocation(file, line).c_str() << ": ";
+}
+
+// Flushes the buffers and, if severity is GTEST_FATAL, aborts the program.
+GTestLog::~GTestLog() {
+ GetStream() << ::std::endl;
+ if (severity_ == GTEST_FATAL) {
+ fflush(stderr);
+ posix::Abort();
+ }
+}
+
+// Disable Microsoft deprecation warnings for POSIX functions called from
+// this class (creat, dup, dup2, and close)
GTEST_DISABLE_MSC_DEPRECATED_PUSH_()
-
-#if GTEST_HAS_STREAM_REDIRECTION
-
-// Object that captures an output stream (stdout/stderr).
-class CapturedStream {
- public:
- // The ctor redirects the stream to a temporary file.
- explicit CapturedStream(int fd) : fd_(fd), uncaptured_fd_(dup(fd)) {
-# if GTEST_OS_WINDOWS
- char temp_dir_path[MAX_PATH + 1] = { '\0' }; // NOLINT
- char temp_file_path[MAX_PATH + 1] = { '\0' }; // NOLINT
-
- ::GetTempPathA(sizeof(temp_dir_path), temp_dir_path);
- const UINT success = ::GetTempFileNameA(temp_dir_path,
- "gtest_redir",
- 0, // Generate unique file name.
- temp_file_path);
- GTEST_CHECK_(success != 0)
- << "Unable to create a temporary file in " << temp_dir_path;
- const int captured_fd = creat(temp_file_path, _S_IREAD | _S_IWRITE);
- GTEST_CHECK_(captured_fd != -1) << "Unable to open temporary file "
- << temp_file_path;
- filename_ = temp_file_path;
-# else
- // There's no guarantee that a test has write access to the current
+
+#if GTEST_HAS_STREAM_REDIRECTION
+
+// Object that captures an output stream (stdout/stderr).
+class CapturedStream {
+ public:
+ // The ctor redirects the stream to a temporary file.
+ explicit CapturedStream(int fd) : fd_(fd), uncaptured_fd_(dup(fd)) {
+# if GTEST_OS_WINDOWS
+ char temp_dir_path[MAX_PATH + 1] = { '\0' }; // NOLINT
+ char temp_file_path[MAX_PATH + 1] = { '\0' }; // NOLINT
+
+ ::GetTempPathA(sizeof(temp_dir_path), temp_dir_path);
+ const UINT success = ::GetTempFileNameA(temp_dir_path,
+ "gtest_redir",
+ 0, // Generate unique file name.
+ temp_file_path);
+ GTEST_CHECK_(success != 0)
+ << "Unable to create a temporary file in " << temp_dir_path;
+ const int captured_fd = creat(temp_file_path, _S_IREAD | _S_IWRITE);
+ GTEST_CHECK_(captured_fd != -1) << "Unable to open temporary file "
+ << temp_file_path;
+ filename_ = temp_file_path;
+# else
+ // There's no guarantee that a test has write access to the current
// directory, so we create the temporary file in a temporary directory.
std::string name_template;
-# if GTEST_OS_LINUX_ANDROID
- // Note: Android applications are expected to call the framework's
- // Context.getExternalStorageDirectory() method through JNI to get
- // the location of the world-writable SD Card directory. However,
- // this requires a Context handle, which cannot be retrieved
- // globally from native code. Doing so also precludes running the
- // code as part of a regular standalone executable, which doesn't
- // run in a Dalvik process (e.g. when running it through 'adb shell').
- //
+# if GTEST_OS_LINUX_ANDROID
+ // Note: Android applications are expected to call the framework's
+ // Context.getExternalStorageDirectory() method through JNI to get
+ // the location of the world-writable SD Card directory. However,
+ // this requires a Context handle, which cannot be retrieved
+ // globally from native code. Doing so also precludes running the
+ // code as part of a regular standalone executable, which doesn't
+ // run in a Dalvik process (e.g. when running it through 'adb shell').
+ //
// The location /data/local/tmp is directly accessible from native code.
// '/sdcard' and other variants cannot be relied on, as they are not
// guaranteed to be mounted, or may have a delay in mounting.
@@ -1132,7 +1132,7 @@ class CapturedStream {
name_template = user_temp_dir;
if (name_template.back() != GTEST_PATH_SEP_[0])
name_template.push_back(GTEST_PATH_SEP_[0]);
-# else
+# else
name_template = "/tmp/";
# endif
name_template.append("gtest_captured_stream.XXXXXX");
@@ -1150,132 +1150,132 @@ class CapturedStream {
<< " for test; does the test have access to the /tmp directory?";
}
filename_ = std::move(name_template);
-# endif // GTEST_OS_WINDOWS
+# endif // GTEST_OS_WINDOWS
fflush(nullptr);
- dup2(captured_fd, fd_);
- close(captured_fd);
- }
-
- ~CapturedStream() {
- remove(filename_.c_str());
- }
-
- std::string GetCapturedString() {
- if (uncaptured_fd_ != -1) {
- // Restores the original stream.
+ dup2(captured_fd, fd_);
+ close(captured_fd);
+ }
+
+ ~CapturedStream() {
+ remove(filename_.c_str());
+ }
+
+ std::string GetCapturedString() {
+ if (uncaptured_fd_ != -1) {
+ // Restores the original stream.
fflush(nullptr);
- dup2(uncaptured_fd_, fd_);
- close(uncaptured_fd_);
- uncaptured_fd_ = -1;
- }
-
- FILE* const file = posix::FOpen(filename_.c_str(), "r");
+ dup2(uncaptured_fd_, fd_);
+ close(uncaptured_fd_);
+ uncaptured_fd_ = -1;
+ }
+
+ FILE* const file = posix::FOpen(filename_.c_str(), "r");
if (file == nullptr) {
GTEST_LOG_(FATAL) << "Failed to open tmp file " << filename_
<< " for capturing stream.";
}
- const std::string content = ReadEntireFile(file);
- posix::FClose(file);
- return content;
- }
-
- private:
- const int fd_; // A stream to capture.
- int uncaptured_fd_;
- // Name of the temporary file holding the stderr output.
- ::std::string filename_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(CapturedStream);
-};
-
+ const std::string content = ReadEntireFile(file);
+ posix::FClose(file);
+ return content;
+ }
+
+ private:
+ const int fd_; // A stream to capture.
+ int uncaptured_fd_;
+ // Name of the temporary file holding the stderr output.
+ ::std::string filename_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(CapturedStream);
+};
+
GTEST_DISABLE_MSC_DEPRECATED_POP_()
-
+
static CapturedStream* g_captured_stderr = nullptr;
static CapturedStream* g_captured_stdout = nullptr;
-
-// Starts capturing an output stream (stdout/stderr).
+
+// Starts capturing an output stream (stdout/stderr).
static void CaptureStream(int fd, const char* stream_name,
CapturedStream** stream) {
if (*stream != nullptr) {
- GTEST_LOG_(FATAL) << "Only one " << stream_name
- << " capturer can exist at a time.";
- }
- *stream = new CapturedStream(fd);
-}
-
-// Stops capturing the output stream and returns the captured string.
+ GTEST_LOG_(FATAL) << "Only one " << stream_name
+ << " capturer can exist at a time.";
+ }
+ *stream = new CapturedStream(fd);
+}
+
+// Stops capturing the output stream and returns the captured string.
static std::string GetCapturedStream(CapturedStream** captured_stream) {
- const std::string content = (*captured_stream)->GetCapturedString();
-
- delete *captured_stream;
+ const std::string content = (*captured_stream)->GetCapturedString();
+
+ delete *captured_stream;
*captured_stream = nullptr;
-
- return content;
-}
-
-// Starts capturing stdout.
-void CaptureStdout() {
- CaptureStream(kStdOutFileno, "stdout", &g_captured_stdout);
-}
-
-// Starts capturing stderr.
-void CaptureStderr() {
- CaptureStream(kStdErrFileno, "stderr", &g_captured_stderr);
-}
-
-// Stops capturing stdout and returns the captured string.
-std::string GetCapturedStdout() {
- return GetCapturedStream(&g_captured_stdout);
-}
-
-// Stops capturing stderr and returns the captured string.
-std::string GetCapturedStderr() {
- return GetCapturedStream(&g_captured_stderr);
-}
-
-#endif // GTEST_HAS_STREAM_REDIRECTION
-
-
-
-
-
-size_t GetFileSize(FILE* file) {
- fseek(file, 0, SEEK_END);
- return static_cast<size_t>(ftell(file));
-}
-
-std::string ReadEntireFile(FILE* file) {
- const size_t file_size = GetFileSize(file);
- char* const buffer = new char[file_size];
-
- size_t bytes_last_read = 0; // # of bytes read in the last fread()
- size_t bytes_read = 0; // # of bytes read so far
-
- fseek(file, 0, SEEK_SET);
-
- // Keeps reading the file until we cannot read further or the
- // pre-determined file size is reached.
- do {
- bytes_last_read = fread(buffer+bytes_read, 1, file_size-bytes_read, file);
- bytes_read += bytes_last_read;
- } while (bytes_last_read > 0 && bytes_read < file_size);
-
- const std::string content(buffer, bytes_read);
- delete[] buffer;
-
- return content;
-}
-
-#if GTEST_HAS_DEATH_TEST
+
+ return content;
+}
+
+// Starts capturing stdout.
+void CaptureStdout() {
+ CaptureStream(kStdOutFileno, "stdout", &g_captured_stdout);
+}
+
+// Starts capturing stderr.
+void CaptureStderr() {
+ CaptureStream(kStdErrFileno, "stderr", &g_captured_stderr);
+}
+
+// Stops capturing stdout and returns the captured string.
+std::string GetCapturedStdout() {
+ return GetCapturedStream(&g_captured_stdout);
+}
+
+// Stops capturing stderr and returns the captured string.
+std::string GetCapturedStderr() {
+ return GetCapturedStream(&g_captured_stderr);
+}
+
+#endif // GTEST_HAS_STREAM_REDIRECTION
+
+
+
+
+
+size_t GetFileSize(FILE* file) {
+ fseek(file, 0, SEEK_END);
+ return static_cast<size_t>(ftell(file));
+}
+
+std::string ReadEntireFile(FILE* file) {
+ const size_t file_size = GetFileSize(file);
+ char* const buffer = new char[file_size];
+
+ size_t bytes_last_read = 0; // # of bytes read in the last fread()
+ size_t bytes_read = 0; // # of bytes read so far
+
+ fseek(file, 0, SEEK_SET);
+
+ // Keeps reading the file until we cannot read further or the
+ // pre-determined file size is reached.
+ do {
+ bytes_last_read = fread(buffer+bytes_read, 1, file_size-bytes_read, file);
+ bytes_read += bytes_last_read;
+ } while (bytes_last_read > 0 && bytes_read < file_size);
+
+ const std::string content(buffer, bytes_read);
+ delete[] buffer;
+
+ return content;
+}
+
+#if GTEST_HAS_DEATH_TEST
static const std::vector<std::string>* g_injected_test_argvs =
nullptr; // Owned.
-
+
std::vector<std::string> GetInjectableArgvs() {
if (g_injected_test_argvs != nullptr) {
- return *g_injected_test_argvs;
- }
- return GetArgvs();
-}
+ return *g_injected_test_argvs;
+ }
+ return GetArgvs();
+}
void SetInjectableArgvs(const std::vector<std::string>* new_argvs) {
if (g_injected_test_argvs != new_argvs) delete g_injected_test_argvs;
@@ -1291,115 +1291,115 @@ void ClearInjectableArgvs() {
delete g_injected_test_argvs;
g_injected_test_argvs = nullptr;
}
-#endif // GTEST_HAS_DEATH_TEST
-
-#if GTEST_OS_WINDOWS_MOBILE
-namespace posix {
-void Abort() {
- DebugBreak();
- TerminateProcess(GetCurrentProcess(), 1);
-}
-} // namespace posix
-#endif // GTEST_OS_WINDOWS_MOBILE
-
-// Returns the name of the environment variable corresponding to the
-// given flag. For example, FlagToEnvVar("foo") will return
-// "GTEST_FOO" in the open-source version.
-static std::string FlagToEnvVar(const char* flag) {
- const std::string full_flag =
- (Message() << GTEST_FLAG_PREFIX_ << flag).GetString();
-
- Message env_var;
- for (size_t i = 0; i != full_flag.length(); i++) {
- env_var << ToUpper(full_flag.c_str()[i]);
- }
-
- return env_var.GetString();
-}
-
-// Parses 'str' for a 32-bit signed integer. If successful, writes
-// the result to *value and returns true; otherwise leaves *value
-// unchanged and returns false.
+#endif // GTEST_HAS_DEATH_TEST
+
+#if GTEST_OS_WINDOWS_MOBILE
+namespace posix {
+void Abort() {
+ DebugBreak();
+ TerminateProcess(GetCurrentProcess(), 1);
+}
+} // namespace posix
+#endif // GTEST_OS_WINDOWS_MOBILE
+
+// Returns the name of the environment variable corresponding to the
+// given flag. For example, FlagToEnvVar("foo") will return
+// "GTEST_FOO" in the open-source version.
+static std::string FlagToEnvVar(const char* flag) {
+ const std::string full_flag =
+ (Message() << GTEST_FLAG_PREFIX_ << flag).GetString();
+
+ Message env_var;
+ for (size_t i = 0; i != full_flag.length(); i++) {
+ env_var << ToUpper(full_flag.c_str()[i]);
+ }
+
+ return env_var.GetString();
+}
+
+// Parses 'str' for a 32-bit signed integer. If successful, writes
+// the result to *value and returns true; otherwise leaves *value
+// unchanged and returns false.
bool ParseInt32(const Message& src_text, const char* str, int32_t* value) {
- // Parses the environment variable as a decimal integer.
+ // Parses the environment variable as a decimal integer.
char* end = nullptr;
- const long long_value = strtol(str, &end, 10); // NOLINT
-
- // Has strtol() consumed all characters in the string?
- if (*end != '\0') {
- // No - an invalid character was encountered.
- Message msg;
- msg << "WARNING: " << src_text
- << " is expected to be a 32-bit integer, but actually"
- << " has value \"" << str << "\".\n";
- printf("%s", msg.GetString().c_str());
- fflush(stdout);
- return false;
- }
-
+ const long long_value = strtol(str, &end, 10); // NOLINT
+
+ // Has strtol() consumed all characters in the string?
+ if (*end != '\0') {
+ // No - an invalid character was encountered.
+ Message msg;
+ msg << "WARNING: " << src_text
+ << " is expected to be a 32-bit integer, but actually"
+ << " has value \"" << str << "\".\n";
+ printf("%s", msg.GetString().c_str());
+ fflush(stdout);
+ return false;
+ }
+
// Is the parsed value in the range of an int32_t?
const auto result = static_cast<int32_t>(long_value);
- if (long_value == LONG_MAX || long_value == LONG_MIN ||
- // The parsed value overflows as a long. (strtol() returns
- // LONG_MAX or LONG_MIN when the input overflows.)
- result != long_value
+ if (long_value == LONG_MAX || long_value == LONG_MIN ||
+ // The parsed value overflows as a long. (strtol() returns
+ // LONG_MAX or LONG_MIN when the input overflows.)
+ result != long_value
// The parsed value overflows as an int32_t.
- ) {
- Message msg;
- msg << "WARNING: " << src_text
- << " is expected to be a 32-bit integer, but actually"
- << " has value " << str << ", which overflows.\n";
- printf("%s", msg.GetString().c_str());
- fflush(stdout);
- return false;
- }
-
- *value = result;
- return true;
-}
-
-// Reads and returns the Boolean environment variable corresponding to
-// the given flag; if it's not set, returns default_value.
-//
+ ) {
+ Message msg;
+ msg << "WARNING: " << src_text
+ << " is expected to be a 32-bit integer, but actually"
+ << " has value " << str << ", which overflows.\n";
+ printf("%s", msg.GetString().c_str());
+ fflush(stdout);
+ return false;
+ }
+
+ *value = result;
+ return true;
+}
+
+// Reads and returns the Boolean environment variable corresponding to
+// the given flag; if it's not set, returns default_value.
+//
// The value is considered true if and only if it's not "0".
-bool BoolFromGTestEnv(const char* flag, bool default_value) {
-#if defined(GTEST_GET_BOOL_FROM_ENV_)
- return GTEST_GET_BOOL_FROM_ENV_(flag, default_value);
+bool BoolFromGTestEnv(const char* flag, bool default_value) {
+#if defined(GTEST_GET_BOOL_FROM_ENV_)
+ return GTEST_GET_BOOL_FROM_ENV_(flag, default_value);
#else
- const std::string env_var = FlagToEnvVar(flag);
- const char* const string_value = posix::GetEnv(env_var.c_str());
+ const std::string env_var = FlagToEnvVar(flag);
+ const char* const string_value = posix::GetEnv(env_var.c_str());
return string_value == nullptr ? default_value
: strcmp(string_value, "0") != 0;
#endif // defined(GTEST_GET_BOOL_FROM_ENV_)
-}
-
-// Reads and returns a 32-bit integer stored in the environment
-// variable corresponding to the given flag; if it isn't set or
-// doesn't represent a valid 32-bit integer, returns default_value.
+}
+
+// Reads and returns a 32-bit integer stored in the environment
+// variable corresponding to the given flag; if it isn't set or
+// doesn't represent a valid 32-bit integer, returns default_value.
int32_t Int32FromGTestEnv(const char* flag, int32_t default_value) {
-#if defined(GTEST_GET_INT32_FROM_ENV_)
- return GTEST_GET_INT32_FROM_ENV_(flag, default_value);
+#if defined(GTEST_GET_INT32_FROM_ENV_)
+ return GTEST_GET_INT32_FROM_ENV_(flag, default_value);
#else
- const std::string env_var = FlagToEnvVar(flag);
- const char* const string_value = posix::GetEnv(env_var.c_str());
+ const std::string env_var = FlagToEnvVar(flag);
+ const char* const string_value = posix::GetEnv(env_var.c_str());
if (string_value == nullptr) {
- // The environment variable is not set.
- return default_value;
- }
-
+ // The environment variable is not set.
+ return default_value;
+ }
+
int32_t result = default_value;
- if (!ParseInt32(Message() << "Environment variable " << env_var,
- string_value, &result)) {
- printf("The default value %s is used.\n",
- (Message() << default_value).GetString().c_str());
- fflush(stdout);
- return default_value;
- }
-
- return result;
+ if (!ParseInt32(Message() << "Environment variable " << env_var,
+ string_value, &result)) {
+ printf("The default value %s is used.\n",
+ (Message() << default_value).GetString().c_str());
+ fflush(stdout);
+ return default_value;
+ }
+
+ return result;
#endif // defined(GTEST_GET_INT32_FROM_ENV_)
-}
-
+}
+
// As a special case for the 'output' flag, if GTEST_OUTPUT is not
// set, we look for XML_OUTPUT_FILE, which is set by the Bazel build
// system. The value of XML_OUTPUT_FILE is a filename without the
@@ -1417,17 +1417,17 @@ std::string OutputFlagAlsoCheckEnvVar(){
return default_value_for_output_flag;
}
-// Reads and returns the string environment variable corresponding to
-// the given flag; if it's not set, returns default_value.
+// Reads and returns the string environment variable corresponding to
+// the given flag; if it's not set, returns default_value.
const char* StringFromGTestEnv(const char* flag, const char* default_value) {
-#if defined(GTEST_GET_STRING_FROM_ENV_)
- return GTEST_GET_STRING_FROM_ENV_(flag, default_value);
+#if defined(GTEST_GET_STRING_FROM_ENV_)
+ return GTEST_GET_STRING_FROM_ENV_(flag, default_value);
#else
const std::string env_var = FlagToEnvVar(flag);
const char* const value = posix::GetEnv(env_var.c_str());
return value == nullptr ? default_value : value;
-#endif // defined(GTEST_GET_STRING_FROM_ENV_)
-}
-
-} // namespace internal
-} // namespace testing
+#endif // defined(GTEST_GET_STRING_FROM_ENV_)
+}
+
+} // namespace internal
+} // namespace testing
diff --git a/contrib/restricted/googletest/googletest/src/gtest-printers.cc b/contrib/restricted/googletest/googletest/src/gtest-printers.cc
index 2b7be1a2ac..1b68fcb500 100644
--- a/contrib/restricted/googletest/googletest/src/gtest-printers.cc
+++ b/contrib/restricted/googletest/googletest/src/gtest-printers.cc
@@ -1,112 +1,112 @@
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
// Google Test - The Google C++ Testing and Mocking Framework
-//
-// This file implements a universal value printer that can print a
-// value of any type T:
-//
-// void ::testing::internal::UniversalPrinter<T>::Print(value, ostream_ptr);
-//
-// It uses the << operator when possible, and prints the bytes in the
-// object otherwise. A user can override its behavior for a class
-// type Foo by defining either operator<<(::std::ostream&, const Foo&)
-// or void PrintTo(const Foo&, ::std::ostream*) in the namespace that
-// defines Foo.
-
-#include "gtest/gtest-printers.h"
-
-#include <stdio.h>
+//
+// This file implements a universal value printer that can print a
+// value of any type T:
+//
+// void ::testing::internal::UniversalPrinter<T>::Print(value, ostream_ptr);
+//
+// It uses the << operator when possible, and prints the bytes in the
+// object otherwise. A user can override its behavior for a class
+// type Foo by defining either operator<<(::std::ostream&, const Foo&)
+// or void PrintTo(const Foo&, ::std::ostream*) in the namespace that
+// defines Foo.
+
+#include "gtest/gtest-printers.h"
+
+#include <stdio.h>
#include <cctype>
#include <cstdint>
-#include <cwchar>
-#include <ostream> // NOLINT
-#include <string>
+#include <cwchar>
+#include <ostream> // NOLINT
+#include <string>
#include <type_traits>
-#include "gtest/internal/gtest-port.h"
+#include "gtest/internal/gtest-port.h"
#include "src/gtest-internal-inl.h"
-
-namespace testing {
-
-namespace {
-
-using ::std::ostream;
-
-// Prints a segment of bytes in the given object.
-GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
-GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
+
+namespace testing {
+
+namespace {
+
+using ::std::ostream;
+
+// Prints a segment of bytes in the given object.
+GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
+GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
GTEST_ATTRIBUTE_NO_SANITIZE_HWADDRESS_
-GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_
-void PrintByteSegmentInObjectTo(const unsigned char* obj_bytes, size_t start,
- size_t count, ostream* os) {
- char text[5] = "";
- for (size_t i = 0; i != count; i++) {
- const size_t j = start + i;
- if (i != 0) {
- // Organizes the bytes into groups of 2 for easy parsing by
- // human.
- if ((j % 2) == 0)
- *os << ' ';
- else
- *os << '-';
- }
- GTEST_SNPRINTF_(text, sizeof(text), "%02X", obj_bytes[j]);
- *os << text;
- }
-}
-
-// Prints the bytes in the given value to the given ostream.
-void PrintBytesInObjectToImpl(const unsigned char* obj_bytes, size_t count,
- ostream* os) {
- // Tells the user how big the object is.
- *os << count << "-byte object <";
-
- const size_t kThreshold = 132;
- const size_t kChunkSize = 64;
- // If the object size is bigger than kThreshold, we'll have to omit
- // some details by printing only the first and the last kChunkSize
- // bytes.
- if (count < kThreshold) {
- PrintByteSegmentInObjectTo(obj_bytes, 0, count, os);
- } else {
- PrintByteSegmentInObjectTo(obj_bytes, 0, kChunkSize, os);
- *os << " ... ";
- // Rounds up to 2-byte boundary.
- const size_t resume_pos = (count - kChunkSize + 1)/2*2;
- PrintByteSegmentInObjectTo(obj_bytes, resume_pos, count - resume_pos, os);
- }
- *os << ">";
-}
-
+GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_
+void PrintByteSegmentInObjectTo(const unsigned char* obj_bytes, size_t start,
+ size_t count, ostream* os) {
+ char text[5] = "";
+ for (size_t i = 0; i != count; i++) {
+ const size_t j = start + i;
+ if (i != 0) {
+ // Organizes the bytes into groups of 2 for easy parsing by
+ // human.
+ if ((j % 2) == 0)
+ *os << ' ';
+ else
+ *os << '-';
+ }
+ GTEST_SNPRINTF_(text, sizeof(text), "%02X", obj_bytes[j]);
+ *os << text;
+ }
+}
+
+// Prints the bytes in the given value to the given ostream.
+void PrintBytesInObjectToImpl(const unsigned char* obj_bytes, size_t count,
+ ostream* os) {
+ // Tells the user how big the object is.
+ *os << count << "-byte object <";
+
+ const size_t kThreshold = 132;
+ const size_t kChunkSize = 64;
+ // If the object size is bigger than kThreshold, we'll have to omit
+ // some details by printing only the first and the last kChunkSize
+ // bytes.
+ if (count < kThreshold) {
+ PrintByteSegmentInObjectTo(obj_bytes, 0, count, os);
+ } else {
+ PrintByteSegmentInObjectTo(obj_bytes, 0, kChunkSize, os);
+ *os << " ... ";
+ // Rounds up to 2-byte boundary.
+ const size_t resume_pos = (count - kChunkSize + 1)/2*2;
+ PrintByteSegmentInObjectTo(obj_bytes, resume_pos, count - resume_pos, os);
+ }
+ *os << ">";
+}
+
// Helpers for widening a character to char32_t. Since the standard does not
// specify if char / wchar_t is signed or unsigned, it is important to first
// convert it to the unsigned type of the same width before widening it to
@@ -117,102 +117,102 @@ char32_t ToChar32(CharType in) {
static_cast<typename std::make_unsigned<CharType>::type>(in));
}
-} // namespace
-
+} // namespace
+
namespace internal {
-
-// Delegates to PrintBytesInObjectToImpl() to print the bytes in the
-// given object. The delegation simplifies the implementation, which
-// uses the << operator and thus is easier done outside of the
-// ::testing::internal namespace, which contains a << operator that
-// sometimes conflicts with the one in STL.
-void PrintBytesInObjectTo(const unsigned char* obj_bytes, size_t count,
- ostream* os) {
- PrintBytesInObjectToImpl(obj_bytes, count, os);
-}
-
-// Depending on the value of a char (or wchar_t), we print it in one
-// of three formats:
-// - as is if it's a printable ASCII (e.g. 'a', '2', ' '),
+
+// Delegates to PrintBytesInObjectToImpl() to print the bytes in the
+// given object. The delegation simplifies the implementation, which
+// uses the << operator and thus is easier done outside of the
+// ::testing::internal namespace, which contains a << operator that
+// sometimes conflicts with the one in STL.
+void PrintBytesInObjectTo(const unsigned char* obj_bytes, size_t count,
+ ostream* os) {
+ PrintBytesInObjectToImpl(obj_bytes, count, os);
+}
+
+// Depending on the value of a char (or wchar_t), we print it in one
+// of three formats:
+// - as is if it's a printable ASCII (e.g. 'a', '2', ' '),
// - as a hexadecimal escape sequence (e.g. '\x7F'), or
-// - as a special escape sequence (e.g. '\r', '\n').
-enum CharFormat {
- kAsIs,
- kHexEscape,
- kSpecialEscape
-};
-
-// Returns true if c is a printable ASCII character. We test the
-// value of c directly instead of calling isprint(), which is buggy on
-// Windows Mobile.
+// - as a special escape sequence (e.g. '\r', '\n').
+enum CharFormat {
+ kAsIs,
+ kHexEscape,
+ kSpecialEscape
+};
+
+// Returns true if c is a printable ASCII character. We test the
+// value of c directly instead of calling isprint(), which is buggy on
+// Windows Mobile.
inline bool IsPrintableAscii(char32_t c) { return 0x20 <= c && c <= 0x7E; }
-
+
// Prints c (of type char, char8_t, char16_t, char32_t, or wchar_t) as a
// character literal without the quotes, escaping it when necessary; returns how
// c was formatted.
template <typename Char>
-static CharFormat PrintAsCharLiteralTo(Char c, ostream* os) {
+static CharFormat PrintAsCharLiteralTo(Char c, ostream* os) {
const char32_t u_c = ToChar32(c);
switch (u_c) {
- case L'\0':
- *os << "\\0";
- break;
- case L'\'':
- *os << "\\'";
- break;
- case L'\\':
- *os << "\\\\";
- break;
- case L'\a':
- *os << "\\a";
- break;
- case L'\b':
- *os << "\\b";
- break;
- case L'\f':
- *os << "\\f";
- break;
- case L'\n':
- *os << "\\n";
- break;
- case L'\r':
- *os << "\\r";
- break;
- case L'\t':
- *os << "\\t";
- break;
- case L'\v':
- *os << "\\v";
- break;
- default:
+ case L'\0':
+ *os << "\\0";
+ break;
+ case L'\'':
+ *os << "\\'";
+ break;
+ case L'\\':
+ *os << "\\\\";
+ break;
+ case L'\a':
+ *os << "\\a";
+ break;
+ case L'\b':
+ *os << "\\b";
+ break;
+ case L'\f':
+ *os << "\\f";
+ break;
+ case L'\n':
+ *os << "\\n";
+ break;
+ case L'\r':
+ *os << "\\r";
+ break;
+ case L'\t':
+ *os << "\\t";
+ break;
+ case L'\v':
+ *os << "\\v";
+ break;
+ default:
if (IsPrintableAscii(u_c)) {
- *os << static_cast<char>(c);
- return kAsIs;
- } else {
+ *os << static_cast<char>(c);
+ return kAsIs;
+ } else {
ostream::fmtflags flags = os->flags();
*os << "\\x" << std::hex << std::uppercase << static_cast<int>(u_c);
os->flags(flags);
- return kHexEscape;
- }
- }
- return kSpecialEscape;
-}
-
+ return kHexEscape;
+ }
+ }
+ return kSpecialEscape;
+}
+
// Prints a char32_t c as if it's part of a string literal, escaping it when
-// necessary; returns how c was formatted.
+// necessary; returns how c was formatted.
static CharFormat PrintAsStringLiteralTo(char32_t c, ostream* os) {
- switch (c) {
- case L'\'':
- *os << "'";
- return kAsIs;
- case L'"':
- *os << "\\\"";
- return kSpecialEscape;
- default:
+ switch (c) {
+ case L'\'':
+ *os << "'";
+ return kAsIs;
+ case L'"':
+ *os << "\\\"";
+ return kSpecialEscape;
+ default:
return PrintAsCharLiteralTo(c, os);
- }
-}
-
+ }
+}
+
static const char* GetCharWidthPrefix(char) {
return "";
}
@@ -243,12 +243,12 @@ static const char* GetCharWidthPrefix(wchar_t) {
return "L";
}
-// Prints a char c as if it's part of a string literal, escaping it when
-// necessary; returns how c was formatted.
-static CharFormat PrintAsStringLiteralTo(char c, ostream* os) {
+// Prints a char c as if it's part of a string literal, escaping it when
+// necessary; returns how c was formatted.
+static CharFormat PrintAsStringLiteralTo(char c, ostream* os) {
return PrintAsStringLiteralTo(ToChar32(c), os);
-}
-
+}
+
#ifdef __cpp_char8_t
static CharFormat PrintAsStringLiteralTo(char8_t c, ostream* os) {
return PrintAsStringLiteralTo(ToChar32(c), os);
@@ -267,110 +267,110 @@ static CharFormat PrintAsStringLiteralTo(wchar_t c, ostream* os) {
// and its code. '\0' is printed as "'\\0'", other unprintable characters are
// also properly escaped using the standard C++ escape sequence.
template <typename Char>
-void PrintCharAndCodeTo(Char c, ostream* os) {
- // First, print c as a literal in the most readable form we can find.
+void PrintCharAndCodeTo(Char c, ostream* os) {
+ // First, print c as a literal in the most readable form we can find.
*os << GetCharWidthPrefix(c) << "'";
const CharFormat format = PrintAsCharLiteralTo(c, os);
- *os << "'";
-
- // To aid user debugging, we also print c's code in decimal, unless
- // it's 0 (in which case c was printed as '\\0', making the code
- // obvious).
- if (c == 0)
- return;
- *os << " (" << static_cast<int>(c);
-
+ *os << "'";
+
+ // To aid user debugging, we also print c's code in decimal, unless
+ // it's 0 (in which case c was printed as '\\0', making the code
+ // obvious).
+ if (c == 0)
+ return;
+ *os << " (" << static_cast<int>(c);
+
// For more convenience, we print c's code again in hexadecimal,
- // unless c was already printed in the form '\x##' or the code is in
- // [1, 9].
- if (format == kHexEscape || (1 <= c && c <= 9)) {
- // Do nothing.
- } else {
+ // unless c was already printed in the form '\x##' or the code is in
+ // [1, 9].
+ if (format == kHexEscape || (1 <= c && c <= 9)) {
+ // Do nothing.
+ } else {
*os << ", 0x" << String::FormatHexInt(static_cast<int>(c));
- }
- *os << ")";
-}
-
+ }
+ *os << ")";
+}
+
void PrintTo(unsigned char c, ::std::ostream* os) { PrintCharAndCodeTo(c, os); }
void PrintTo(signed char c, ::std::ostream* os) { PrintCharAndCodeTo(c, os); }
-
-// Prints a wchar_t as a symbol if it is printable or as its internal
-// code otherwise and also as its code. L'\0' is printed as "L'\\0'".
+
+// Prints a wchar_t as a symbol if it is printable or as its internal
+// code otherwise and also as its code. L'\0' is printed as "L'\\0'".
void PrintTo(wchar_t wc, ostream* os) { PrintCharAndCodeTo(wc, os); }
-
+
// TODO(dcheng): Consider making this delegate to PrintCharAndCodeTo() as well.
void PrintTo(char32_t c, ::std::ostream* os) {
*os << std::hex << "U+" << std::uppercase << std::setfill('0') << std::setw(4)
<< static_cast<uint32_t>(c);
}
-// Prints the given array of characters to the ostream. CharType must be either
+// Prints the given array of characters to the ostream. CharType must be either
// char, char8_t, char16_t, char32_t, or wchar_t.
-// The array starts at begin, the length is len, it may include '\0' characters
-// and may not be NUL-terminated.
-template <typename CharType>
-GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
-GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
+// The array starts at begin, the length is len, it may include '\0' characters
+// and may not be NUL-terminated.
+template <typename CharType>
+GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
+GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
GTEST_ATTRIBUTE_NO_SANITIZE_HWADDRESS_
-GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_
+GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_
static CharFormat PrintCharsAsStringTo(
- const CharType* begin, size_t len, ostream* os) {
+ const CharType* begin, size_t len, ostream* os) {
const char* const quote_prefix = GetCharWidthPrefix(*begin);
*os << quote_prefix << "\"";
- bool is_previous_hex = false;
+ bool is_previous_hex = false;
CharFormat print_format = kAsIs;
- for (size_t index = 0; index < len; ++index) {
- const CharType cur = begin[index];
- if (is_previous_hex && IsXDigit(cur)) {
- // Previous character is of '\x..' form and this character can be
- // interpreted as another hexadecimal digit in its number. Break string to
- // disambiguate.
+ for (size_t index = 0; index < len; ++index) {
+ const CharType cur = begin[index];
+ if (is_previous_hex && IsXDigit(cur)) {
+ // Previous character is of '\x..' form and this character can be
+ // interpreted as another hexadecimal digit in its number. Break string to
+ // disambiguate.
*os << "\" " << quote_prefix << "\"";
- }
- is_previous_hex = PrintAsStringLiteralTo(cur, os) == kHexEscape;
+ }
+ is_previous_hex = PrintAsStringLiteralTo(cur, os) == kHexEscape;
// Remember if any characters required hex escaping.
if (is_previous_hex) {
print_format = kHexEscape;
}
- }
- *os << "\"";
+ }
+ *os << "\"";
return print_format;
-}
-
-// Prints a (const) char/wchar_t array of 'len' elements, starting at address
-// 'begin'. CharType must be either char or wchar_t.
-template <typename CharType>
-GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
-GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
+}
+
+// Prints a (const) char/wchar_t array of 'len' elements, starting at address
+// 'begin'. CharType must be either char or wchar_t.
+template <typename CharType>
+GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
+GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
GTEST_ATTRIBUTE_NO_SANITIZE_HWADDRESS_
-GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_
-static void UniversalPrintCharArray(
- const CharType* begin, size_t len, ostream* os) {
- // The code
- // const char kFoo[] = "foo";
- // generates an array of 4, not 3, elements, with the last one being '\0'.
- //
- // Therefore when printing a char array, we don't print the last element if
- // it's '\0', such that the output matches the string literal as it's
- // written in the source code.
- if (len > 0 && begin[len - 1] == '\0') {
- PrintCharsAsStringTo(begin, len - 1, os);
- return;
- }
-
- // If, however, the last element in the array is not '\0', e.g.
- // const char kFoo[] = { 'f', 'o', 'o' };
- // we must print the entire array. We also print a message to indicate
- // that the array is not NUL-terminated.
- PrintCharsAsStringTo(begin, len, os);
- *os << " (no terminating NUL)";
-}
-
-// Prints a (const) char array of 'len' elements, starting at address 'begin'.
-void UniversalPrintArray(const char* begin, size_t len, ostream* os) {
- UniversalPrintCharArray(begin, len, os);
-}
-
+GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_
+static void UniversalPrintCharArray(
+ const CharType* begin, size_t len, ostream* os) {
+ // The code
+ // const char kFoo[] = "foo";
+ // generates an array of 4, not 3, elements, with the last one being '\0'.
+ //
+ // Therefore when printing a char array, we don't print the last element if
+ // it's '\0', such that the output matches the string literal as it's
+ // written in the source code.
+ if (len > 0 && begin[len - 1] == '\0') {
+ PrintCharsAsStringTo(begin, len - 1, os);
+ return;
+ }
+
+ // If, however, the last element in the array is not '\0', e.g.
+ // const char kFoo[] = { 'f', 'o', 'o' };
+ // we must print the entire array. We also print a message to indicate
+ // that the array is not NUL-terminated.
+ PrintCharsAsStringTo(begin, len, os);
+ *os << " (no terminating NUL)";
+}
+
+// Prints a (const) char array of 'len' elements, starting at address 'begin'.
+void UniversalPrintArray(const char* begin, size_t len, ostream* os) {
+ UniversalPrintCharArray(begin, len, os);
+}
+
#ifdef __cpp_char8_t
// Prints a (const) char8_t array of 'len' elements, starting at address
// 'begin'.
@@ -391,25 +391,25 @@ void UniversalPrintArray(const char32_t* begin, size_t len, ostream* os) {
UniversalPrintCharArray(begin, len, os);
}
-// Prints a (const) wchar_t array of 'len' elements, starting at address
-// 'begin'.
-void UniversalPrintArray(const wchar_t* begin, size_t len, ostream* os) {
- UniversalPrintCharArray(begin, len, os);
-}
-
+// Prints a (const) wchar_t array of 'len' elements, starting at address
+// 'begin'.
+void UniversalPrintArray(const wchar_t* begin, size_t len, ostream* os) {
+ UniversalPrintCharArray(begin, len, os);
+}
+
namespace {
// Prints a null-terminated C-style string to the ostream.
template <typename Char>
void PrintCStringTo(const Char* s, ostream* os) {
if (s == nullptr) {
- *os << "NULL";
- } else {
- *os << ImplicitCast_<const void*>(s) << " pointing to ";
+ *os << "NULL";
+ } else {
+ *os << ImplicitCast_<const void*>(s) << " pointing to ";
PrintCharsAsStringTo(s, std::char_traits<Char>::length(s), os);
- }
-}
-
+ }
+}
+
} // anonymous namespace
void PrintTo(const char* s, ostream* os) { PrintCStringTo(s, os); }
@@ -422,17 +422,17 @@ void PrintTo(const char16_t* s, ostream* os) { PrintCStringTo(s, os); }
void PrintTo(const char32_t* s, ostream* os) { PrintCStringTo(s, os); }
-// MSVC compiler can be configured to define whar_t as a typedef
-// of unsigned short. Defining an overload for const wchar_t* in that case
-// would cause pointers to unsigned shorts be printed as wide strings,
-// possibly accessing more memory than intended and causing invalid
-// memory accesses. MSVC defines _NATIVE_WCHAR_T_DEFINED symbol when
-// wchar_t is implemented as a native type.
-#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED)
-// Prints the given wide C string to the ostream.
+// MSVC compiler can be configured to define whar_t as a typedef
+// of unsigned short. Defining an overload for const wchar_t* in that case
+// would cause pointers to unsigned shorts be printed as wide strings,
+// possibly accessing more memory than intended and causing invalid
+// memory accesses. MSVC defines _NATIVE_WCHAR_T_DEFINED symbol when
+// wchar_t is implemented as a native type.
+#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED)
+// Prints the given wide C string to the ostream.
void PrintTo(const wchar_t* s, ostream* os) { PrintCStringTo(s, os); }
-#endif // wchar_t is native
-
+#endif // wchar_t is native
+
namespace {
bool ContainsUnprintableControlCodes(const char* str, size_t length) {
@@ -452,8 +452,8 @@ bool ContainsUnprintableControlCodes(const char* str, size_t length) {
}
}
return false;
-}
-
+}
+
bool IsUTF8TrailByte(unsigned char t) { return 0x80 <= t && t<= 0xbf; }
bool IsValidUTF8(const char* str, size_t length) {
@@ -489,15 +489,15 @@ bool IsValidUTF8(const char* str, size_t length) {
}
}
return true;
-}
-
+}
+
void ConditionalPrintAsText(const char* str, size_t length, ostream* os) {
if (!ContainsUnprintableControlCodes(str, length) &&
IsValidUTF8(str, length)) {
*os << "\n As Text: \"" << str << "\"";
}
-}
-
+}
+
} // anonymous namespace
void PrintStringTo(const ::std::string& s, ostream* os) {
@@ -522,12 +522,12 @@ void PrintU32StringTo(const ::std::u32string& s, ostream* os) {
PrintCharsAsStringTo(s.data(), s.size(), os);
}
-#if GTEST_HAS_STD_WSTRING
-void PrintWideStringTo(const ::std::wstring& s, ostream* os) {
- PrintCharsAsStringTo(s.data(), s.size(), os);
-}
-#endif // GTEST_HAS_STD_WSTRING
-
-} // namespace internal
-
-} // namespace testing
+#if GTEST_HAS_STD_WSTRING
+void PrintWideStringTo(const ::std::wstring& s, ostream* os) {
+ PrintCharsAsStringTo(s.data(), s.size(), os);
+}
+#endif // GTEST_HAS_STD_WSTRING
+
+} // namespace internal
+
+} // namespace testing
diff --git a/contrib/restricted/googletest/googletest/src/gtest-test-part.cc b/contrib/restricted/googletest/googletest/src/gtest-test-part.cc
index 5cc0aa7d5e..a938683ced 100644
--- a/contrib/restricted/googletest/googletest/src/gtest-test-part.cc
+++ b/contrib/restricted/googletest/googletest/src/gtest-test-part.cc
@@ -1,53 +1,53 @@
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+//
// The Google C++ Testing and Mocking Framework (Google Test)
-
-#include "gtest/gtest-test-part.h"
+
+#include "gtest/gtest-test-part.h"
#include "gtest/internal/gtest-port.h"
-#include "src/gtest-internal-inl.h"
-
-namespace testing {
-
-using internal::GetUnitTestImpl;
-
-// Gets the summary of the failure message by omitting the stack trace
-// in it.
-std::string TestPartResult::ExtractSummary(const char* message) {
- const char* const stack_trace = strstr(message, internal::kStackTraceMarker);
+#include "src/gtest-internal-inl.h"
+
+namespace testing {
+
+using internal::GetUnitTestImpl;
+
+// Gets the summary of the failure message by omitting the stack trace
+// in it.
+std::string TestPartResult::ExtractSummary(const char* message) {
+ const char* const stack_trace = strstr(message, internal::kStackTraceMarker);
return stack_trace == nullptr ? message : std::string(message, stack_trace);
-}
-
-// Prints a TestPartResult object.
-std::ostream& operator<<(std::ostream& os, const TestPartResult& result) {
+}
+
+// Prints a TestPartResult object.
+std::ostream& operator<<(std::ostream& os, const TestPartResult& result) {
return os << internal::FormatFileLocation(result.file_name(),
result.line_number())
<< " "
@@ -60,49 +60,49 @@ std::ostream& operator<<(std::ostream& os, const TestPartResult& result) {
: "Non-fatal failure")
<< ":\n"
<< result.message() << std::endl;
-}
-
-// Appends a TestPartResult to the array.
-void TestPartResultArray::Append(const TestPartResult& result) {
- array_.push_back(result);
-}
-
-// Returns the TestPartResult at the given index (0-based).
-const TestPartResult& TestPartResultArray::GetTestPartResult(int index) const {
- if (index < 0 || index >= size()) {
- printf("\nInvalid index (%d) into TestPartResultArray.\n", index);
- internal::posix::Abort();
- }
-
+}
+
+// Appends a TestPartResult to the array.
+void TestPartResultArray::Append(const TestPartResult& result) {
+ array_.push_back(result);
+}
+
+// Returns the TestPartResult at the given index (0-based).
+const TestPartResult& TestPartResultArray::GetTestPartResult(int index) const {
+ if (index < 0 || index >= size()) {
+ printf("\nInvalid index (%d) into TestPartResultArray.\n", index);
+ internal::posix::Abort();
+ }
+
return array_[static_cast<size_t>(index)];
-}
-
-// Returns the number of TestPartResult objects in the array.
-int TestPartResultArray::size() const {
- return static_cast<int>(array_.size());
-}
-
-namespace internal {
-
-HasNewFatalFailureHelper::HasNewFatalFailureHelper()
- : has_new_fatal_failure_(false),
- original_reporter_(GetUnitTestImpl()->
- GetTestPartResultReporterForCurrentThread()) {
- GetUnitTestImpl()->SetTestPartResultReporterForCurrentThread(this);
-}
-
-HasNewFatalFailureHelper::~HasNewFatalFailureHelper() {
- GetUnitTestImpl()->SetTestPartResultReporterForCurrentThread(
- original_reporter_);
-}
-
-void HasNewFatalFailureHelper::ReportTestPartResult(
- const TestPartResult& result) {
- if (result.fatally_failed())
- has_new_fatal_failure_ = true;
- original_reporter_->ReportTestPartResult(result);
-}
-
-} // namespace internal
-
-} // namespace testing
+}
+
+// Returns the number of TestPartResult objects in the array.
+int TestPartResultArray::size() const {
+ return static_cast<int>(array_.size());
+}
+
+namespace internal {
+
+HasNewFatalFailureHelper::HasNewFatalFailureHelper()
+ : has_new_fatal_failure_(false),
+ original_reporter_(GetUnitTestImpl()->
+ GetTestPartResultReporterForCurrentThread()) {
+ GetUnitTestImpl()->SetTestPartResultReporterForCurrentThread(this);
+}
+
+HasNewFatalFailureHelper::~HasNewFatalFailureHelper() {
+ GetUnitTestImpl()->SetTestPartResultReporterForCurrentThread(
+ original_reporter_);
+}
+
+void HasNewFatalFailureHelper::ReportTestPartResult(
+ const TestPartResult& result) {
+ if (result.fatally_failed())
+ has_new_fatal_failure_ = true;
+ original_reporter_->ReportTestPartResult(result);
+}
+
+} // namespace internal
+
+} // namespace testing
diff --git a/contrib/restricted/googletest/googletest/src/gtest-typed-test.cc b/contrib/restricted/googletest/googletest/src/gtest-typed-test.cc
index 70137b34c8..c02c3df659 100644
--- a/contrib/restricted/googletest/googletest/src/gtest-typed-test.cc
+++ b/contrib/restricted/googletest/googletest/src/gtest-typed-test.cc
@@ -1,107 +1,107 @@
-// Copyright 2008 Google Inc.
-// All Rights Reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-#include "gtest/gtest-typed-test.h"
-
-#include "gtest/gtest.h"
-
-namespace testing {
-namespace internal {
-
-// Skips to the first non-space char in str. Returns an empty string if str
-// contains only whitespace characters.
-static const char* SkipSpaces(const char* str) {
- while (IsSpace(*str))
- str++;
- return str;
-}
-
-static std::vector<std::string> SplitIntoTestNames(const char* src) {
- std::vector<std::string> name_vec;
- src = SkipSpaces(src);
+// Copyright 2008 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+#include "gtest/gtest-typed-test.h"
+
+#include "gtest/gtest.h"
+
+namespace testing {
+namespace internal {
+
+// Skips to the first non-space char in str. Returns an empty string if str
+// contains only whitespace characters.
+static const char* SkipSpaces(const char* str) {
+ while (IsSpace(*str))
+ str++;
+ return str;
+}
+
+static std::vector<std::string> SplitIntoTestNames(const char* src) {
+ std::vector<std::string> name_vec;
+ src = SkipSpaces(src);
for (; src != nullptr; src = SkipComma(src)) {
- name_vec.push_back(StripTrailingSpaces(GetPrefixUntilComma(src)));
- }
- return name_vec;
-}
-
-// Verifies that registered_tests match the test names in
-// registered_tests_; returns registered_tests if successful, or
-// aborts the program otherwise.
+ name_vec.push_back(StripTrailingSpaces(GetPrefixUntilComma(src)));
+ }
+ return name_vec;
+}
+
+// Verifies that registered_tests match the test names in
+// registered_tests_; returns registered_tests if successful, or
+// aborts the program otherwise.
const char* TypedTestSuitePState::VerifyRegisteredTestNames(
const char* test_suite_name, const char* file, int line,
const char* registered_tests) {
RegisterTypeParameterizedTestSuite(test_suite_name, CodeLocation(file, line));
- typedef RegisteredTestsMap::const_iterator RegisteredTestIter;
- registered_ = true;
-
- std::vector<std::string> name_vec = SplitIntoTestNames(registered_tests);
-
- Message errors;
-
- std::set<std::string> tests;
- for (std::vector<std::string>::const_iterator name_it = name_vec.begin();
- name_it != name_vec.end(); ++name_it) {
- const std::string& name = *name_it;
- if (tests.count(name) != 0) {
- errors << "Test " << name << " is listed more than once.\n";
- continue;
- }
-
+ typedef RegisteredTestsMap::const_iterator RegisteredTestIter;
+ registered_ = true;
+
+ std::vector<std::string> name_vec = SplitIntoTestNames(registered_tests);
+
+ Message errors;
+
+ std::set<std::string> tests;
+ for (std::vector<std::string>::const_iterator name_it = name_vec.begin();
+ name_it != name_vec.end(); ++name_it) {
+ const std::string& name = *name_it;
+ if (tests.count(name) != 0) {
+ errors << "Test " << name << " is listed more than once.\n";
+ continue;
+ }
+
if (registered_tests_.count(name) != 0) {
- tests.insert(name);
- } else {
- errors << "No test named " << name
+ tests.insert(name);
+ } else {
+ errors << "No test named " << name
<< " can be found in this test suite.\n";
- }
- }
-
- for (RegisteredTestIter it = registered_tests_.begin();
- it != registered_tests_.end();
- ++it) {
- if (tests.count(it->first) == 0) {
- errors << "You forgot to list test " << it->first << ".\n";
- }
- }
-
- const std::string& errors_str = errors.GetString();
- if (errors_str != "") {
- fprintf(stderr, "%s %s", FormatFileLocation(file, line).c_str(),
- errors_str.c_str());
- fflush(stderr);
- posix::Abort();
- }
-
- return registered_tests;
-}
-
-} // namespace internal
-} // namespace testing
+ }
+ }
+
+ for (RegisteredTestIter it = registered_tests_.begin();
+ it != registered_tests_.end();
+ ++it) {
+ if (tests.count(it->first) == 0) {
+ errors << "You forgot to list test " << it->first << ".\n";
+ }
+ }
+
+ const std::string& errors_str = errors.GetString();
+ if (errors_str != "") {
+ fprintf(stderr, "%s %s", FormatFileLocation(file, line).c_str(),
+ errors_str.c_str());
+ fflush(stderr);
+ posix::Abort();
+ }
+
+ return registered_tests;
+}
+
+} // namespace internal
+} // namespace testing
diff --git a/contrib/restricted/googletest/googletest/src/gtest.cc b/contrib/restricted/googletest/googletest/src/gtest.cc
index f29d5eda3d..856da12edb 100644
--- a/contrib/restricted/googletest/googletest/src/gtest.cc
+++ b/contrib/restricted/googletest/googletest/src/gtest.cc
@@ -1,84 +1,84 @@
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+//
// The Google C++ Testing and Mocking Framework (Google Test)
-
-#include "gtest/gtest.h"
-#include "gtest/internal/custom/gtest.h"
-#include "gtest/gtest-spi.h"
-
-#include <ctype.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <wchar.h>
-#include <wctype.h>
-
-#include <algorithm>
+
+#include "gtest/gtest.h"
+#include "gtest/internal/custom/gtest.h"
+#include "gtest/gtest-spi.h"
+
+#include <ctype.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include <wchar.h>
+#include <wctype.h>
+
+#include <algorithm>
#include <chrono> // NOLINT
#include <cmath>
#include <cstdint>
-#include <iomanip>
-#include <limits>
-#include <list>
-#include <map>
-#include <ostream> // NOLINT
-#include <sstream>
-#include <vector>
-
-#if GTEST_OS_LINUX
-
-# include <fcntl.h> // NOLINT
-# include <limits.h> // NOLINT
-# include <sched.h> // NOLINT
-// Declares vsnprintf(). This header is not available on Windows.
-# include <strings.h> // NOLINT
-# include <sys/mman.h> // NOLINT
-# include <sys/time.h> // NOLINT
-# include <unistd.h> // NOLINT
-# include <string>
-
-#elif GTEST_OS_ZOS
-# include <sys/time.h> // NOLINT
-
-// On z/OS we additionally need strings.h for strcasecmp.
-# include <strings.h> // NOLINT
-
-#elif GTEST_OS_WINDOWS_MOBILE // We are on Windows CE.
-
-# include <windows.h> // NOLINT
-# undef min
-
-#elif GTEST_OS_WINDOWS // We are on Windows proper.
-
+#include <iomanip>
+#include <limits>
+#include <list>
+#include <map>
+#include <ostream> // NOLINT
+#include <sstream>
+#include <vector>
+
+#if GTEST_OS_LINUX
+
+# include <fcntl.h> // NOLINT
+# include <limits.h> // NOLINT
+# include <sched.h> // NOLINT
+// Declares vsnprintf(). This header is not available on Windows.
+# include <strings.h> // NOLINT
+# include <sys/mman.h> // NOLINT
+# include <sys/time.h> // NOLINT
+# include <unistd.h> // NOLINT
+# include <string>
+
+#elif GTEST_OS_ZOS
+# include <sys/time.h> // NOLINT
+
+// On z/OS we additionally need strings.h for strcasecmp.
+# include <strings.h> // NOLINT
+
+#elif GTEST_OS_WINDOWS_MOBILE // We are on Windows CE.
+
+# include <windows.h> // NOLINT
+# undef min
+
+#elif GTEST_OS_WINDOWS // We are on Windows proper.
+
# include <windows.h> // NOLINT
# undef min
@@ -86,41 +86,41 @@
# include <crtdbg.h> // NOLINT
#endif
-# include <io.h> // NOLINT
-# include <sys/timeb.h> // NOLINT
-# include <sys/types.h> // NOLINT
-# include <sys/stat.h> // NOLINT
-
-# if GTEST_OS_WINDOWS_MINGW
-# include <sys/time.h> // NOLINT
-# endif // GTEST_OS_WINDOWS_MINGW
-
-#else
-
-// cpplint thinks that the header is already included, so we want to
-// silence it.
-# include <sys/time.h> // NOLINT
-# include <unistd.h> // NOLINT
-
-#endif // GTEST_OS_LINUX
-
-#if GTEST_HAS_EXCEPTIONS
-# include <stdexcept>
-#endif
-
-#if GTEST_CAN_STREAM_RESULTS_
-# include <arpa/inet.h> // NOLINT
-# include <netdb.h> // NOLINT
-# include <sys/socket.h> // NOLINT
-# include <sys/types.h> // NOLINT
-#endif
-
-#include "src/gtest-internal-inl.h"
-
-#if GTEST_OS_WINDOWS
-# define vsnprintf _vsnprintf
-#endif // GTEST_OS_WINDOWS
-
+# include <io.h> // NOLINT
+# include <sys/timeb.h> // NOLINT
+# include <sys/types.h> // NOLINT
+# include <sys/stat.h> // NOLINT
+
+# if GTEST_OS_WINDOWS_MINGW
+# include <sys/time.h> // NOLINT
+# endif // GTEST_OS_WINDOWS_MINGW
+
+#else
+
+// cpplint thinks that the header is already included, so we want to
+// silence it.
+# include <sys/time.h> // NOLINT
+# include <unistd.h> // NOLINT
+
+#endif // GTEST_OS_LINUX
+
+#if GTEST_HAS_EXCEPTIONS
+# include <stdexcept>
+#endif
+
+#if GTEST_CAN_STREAM_RESULTS_
+# include <arpa/inet.h> // NOLINT
+# include <netdb.h> // NOLINT
+# include <sys/socket.h> // NOLINT
+# include <sys/types.h> // NOLINT
+#endif
+
+#include "src/gtest-internal-inl.h"
+
+#if GTEST_OS_WINDOWS
+# define vsnprintf _vsnprintf
+#endif // GTEST_OS_WINDOWS
+
#if GTEST_OS_MAC
#ifndef GTEST_OS_IOS
#include <crt_externs.h>
@@ -134,49 +134,49 @@
#error #include "absl/strings/str_cat.h"
#endif // GTEST_HAS_ABSL
-namespace testing {
-
-using internal::CountIf;
-using internal::ForEach;
-using internal::GetElementOr;
-using internal::Shuffle;
-
-// Constants.
-
+namespace testing {
+
+using internal::CountIf;
+using internal::ForEach;
+using internal::GetElementOr;
+using internal::Shuffle;
+
+// Constants.
+
// A test whose test suite name or test name matches this filter is
-// disabled and not run.
-static const char kDisableTestFilter[] = "DISABLED_*:*/DISABLED_*";
-
+// disabled and not run.
+static const char kDisableTestFilter[] = "DISABLED_*:*/DISABLED_*";
+
// A test suite whose name matches this filter is considered a death
// test suite and will be run before test suites whose name doesn't
-// match this filter.
+// match this filter.
static const char kDeathTestSuiteFilter[] = "*DeathTest:*DeathTest/*";
-
-// A test filter that matches everything.
-static const char kUniversalFilter[] = "*";
-
+
+// A test filter that matches everything.
+static const char kUniversalFilter[] = "*";
+
// The default output format.
static const char kDefaultOutputFormat[] = "xml";
// The default output file.
static const char kDefaultOutputFile[] = "test_detail";
-
-// The environment variable name for the test shard index.
-static const char kTestShardIndex[] = "GTEST_SHARD_INDEX";
-// The environment variable name for the total number of test shards.
-static const char kTestTotalShards[] = "GTEST_TOTAL_SHARDS";
-// The environment variable name for the test shard status file.
-static const char kTestShardStatusFile[] = "GTEST_SHARD_STATUS_FILE";
-
-namespace internal {
-
-// The text used in failure messages to indicate the start of the
-// stack trace.
-const char kStackTraceMarker[] = "\nStack trace:\n";
-
+
+// The environment variable name for the test shard index.
+static const char kTestShardIndex[] = "GTEST_SHARD_INDEX";
+// The environment variable name for the total number of test shards.
+static const char kTestTotalShards[] = "GTEST_TOTAL_SHARDS";
+// The environment variable name for the test shard status file.
+static const char kTestShardStatusFile[] = "GTEST_SHARD_STATUS_FILE";
+
+namespace internal {
+
+// The text used in failure messages to indicate the start of the
+// stack trace.
+const char kStackTraceMarker[] = "\nStack trace:\n";
+
// g_help_flag is true if and only if the --help flag or an equivalent form
// is specified on the command line.
-bool g_help_flag = false;
-
+bool g_help_flag = false;
+
// Utilty function to Open File for Writing
static FILE* OpenFileForWriting(const std::string& output_file) {
FILE* fileout = nullptr;
@@ -192,19 +192,19 @@ static FILE* OpenFileForWriting(const std::string& output_file) {
return fileout;
}
-} // namespace internal
-
+} // namespace internal
+
// Bazel passes in the argument to '--test_filter' via the TESTBRIDGE_TEST_ONLY
// environment variable.
-static const char* GetDefaultFilter() {
+static const char* GetDefaultFilter() {
const char* const testbridge_test_only =
internal::posix::GetEnv("TESTBRIDGE_TEST_ONLY");
if (testbridge_test_only != nullptr) {
- return testbridge_test_only;
- }
- return kUniversalFilter;
-}
-
+ return testbridge_test_only;
+ }
+ return kUniversalFilter;
+}
+
// Bazel passes in the argument to '--test_runner_fail_fast' via the
// TESTBRIDGE_TEST_RUNNER_FAIL_FAST environment variable.
static bool GetDefaultFailFast() {
@@ -216,42 +216,42 @@ static bool GetDefaultFailFast() {
return false;
}
-GTEST_DEFINE_bool_(
+GTEST_DEFINE_bool_(
fail_fast, internal::BoolFromGTestEnv("fail_fast", GetDefaultFailFast()),
"True if and only if a test failure should stop further test execution.");
GTEST_DEFINE_bool_(
- also_run_disabled_tests,
- internal::BoolFromGTestEnv("also_run_disabled_tests", false),
- "Run disabled tests too, in addition to the tests normally being run.");
-
-GTEST_DEFINE_bool_(
+ also_run_disabled_tests,
+ internal::BoolFromGTestEnv("also_run_disabled_tests", false),
+ "Run disabled tests too, in addition to the tests normally being run.");
+
+GTEST_DEFINE_bool_(
break_on_failure, internal::BoolFromGTestEnv("break_on_failure", false),
"True if and only if a failed assertion should be a debugger "
"break-point.");
-
+
GTEST_DEFINE_bool_(catch_exceptions,
internal::BoolFromGTestEnv("catch_exceptions", true),
"True if and only if " GTEST_NAME_
" should catch exceptions and treat them as test failures.");
-
-GTEST_DEFINE_string_(
- color,
- internal::StringFromGTestEnv("color", "auto"),
- "Whether to use colors in the output. Valid values: yes, no, "
- "and auto. 'auto' means to use colors if the output is "
- "being sent to a terminal and the TERM environment variable "
- "is set to a terminal type that supports colors.");
-
-GTEST_DEFINE_string_(
- filter,
- internal::StringFromGTestEnv("filter", GetDefaultFilter()),
- "A colon-separated list of glob (not regex) patterns "
- "for filtering the tests to run, optionally followed by a "
- "'-' and a : separated list of negative patterns (tests to "
- "exclude). A test is run if it matches one of the positive "
- "patterns and does not match any of the negative patterns.");
-
+
+GTEST_DEFINE_string_(
+ color,
+ internal::StringFromGTestEnv("color", "auto"),
+ "Whether to use colors in the output. Valid values: yes, no, "
+ "and auto. 'auto' means to use colors if the output is "
+ "being sent to a terminal and the TERM environment variable "
+ "is set to a terminal type that supports colors.");
+
+GTEST_DEFINE_string_(
+ filter,
+ internal::StringFromGTestEnv("filter", GetDefaultFilter()),
+ "A colon-separated list of glob (not regex) patterns "
+ "for filtering the tests to run, optionally followed by a "
+ "'-' and a : separated list of negative patterns (tests to "
+ "exclude). A test is run if it matches one of the positive "
+ "patterns and does not match any of the negative patterns.");
+
GTEST_DEFINE_bool_(
install_failure_signal_handler,
internal::BoolFromGTestEnv("install_failure_signal_handler", false),
@@ -259,27 +259,27 @@ GTEST_DEFINE_bool_(
"install a signal handler that dumps debugging information when fatal "
"signals are raised.");
-GTEST_DEFINE_bool_(list_tests, false,
- "List all tests without running them.");
-
+GTEST_DEFINE_bool_(list_tests, false,
+ "List all tests without running them.");
+
// The net priority order after flag processing is thus:
// --gtest_output command line flag
// GTEST_OUTPUT environment variable
// XML_OUTPUT_FILE environment variable
// ''
-GTEST_DEFINE_string_(
- output,
+GTEST_DEFINE_string_(
+ output,
internal::StringFromGTestEnv("output",
internal::OutputFlagAlsoCheckEnvVar().c_str()),
"A format (defaults to \"xml\" but can be specified to be \"json\"), "
"optionally followed by a colon and an output file name or directory. "
"A directory is indicated by a trailing pathname separator. "
- "Examples: \"xml:filename.xml\", \"xml::directoryname/\". "
- "If a directory is specified, output files will be created "
- "within that directory, with file-names based on the test "
- "executable's name and, if necessary, made unique by adding "
- "digits.");
-
+ "Examples: \"xml:filename.xml\", \"xml::directoryname/\". "
+ "If a directory is specified, output files will be created "
+ "within that directory, with file-names based on the test "
+ "executable's name and, if necessary, made unique by adding "
+ "digits.");
+
GTEST_DEFINE_bool_(
brief, internal::BoolFromGTestEnv("brief", false),
"True if only test failures should be displayed in text output.");
@@ -287,137 +287,137 @@ GTEST_DEFINE_bool_(
GTEST_DEFINE_bool_(print_time, internal::BoolFromGTestEnv("print_time", true),
"True if and only if " GTEST_NAME_
" should display elapsed time in text output.");
-
+
GTEST_DEFINE_bool_(print_utf8, internal::BoolFromGTestEnv("print_utf8", true),
"True if and only if " GTEST_NAME_
" prints UTF8 characters as text.");
-GTEST_DEFINE_int32_(
- random_seed,
- internal::Int32FromGTestEnv("random_seed", 0),
- "Random number seed to use when shuffling test orders. Must be in range "
- "[1, 99999], or 0 to use a seed based on the current time.");
-
-GTEST_DEFINE_int32_(
- repeat,
- internal::Int32FromGTestEnv("repeat", 1),
- "How many times to repeat each test. Specify a negative number "
- "for repeating forever. Useful for shaking out flaky tests.");
-
+GTEST_DEFINE_int32_(
+ random_seed,
+ internal::Int32FromGTestEnv("random_seed", 0),
+ "Random number seed to use when shuffling test orders. Must be in range "
+ "[1, 99999], or 0 to use a seed based on the current time.");
+
+GTEST_DEFINE_int32_(
+ repeat,
+ internal::Int32FromGTestEnv("repeat", 1),
+ "How many times to repeat each test. Specify a negative number "
+ "for repeating forever. Useful for shaking out flaky tests.");
+
GTEST_DEFINE_bool_(show_internal_stack_frames, false,
"True if and only if " GTEST_NAME_
" should include internal stack frames when "
"printing test failure stack traces.");
-
+
GTEST_DEFINE_bool_(shuffle, internal::BoolFromGTestEnv("shuffle", false),
"True if and only if " GTEST_NAME_
" should randomize tests' order on every run.");
-
-GTEST_DEFINE_int32_(
- stack_trace_depth,
- internal::Int32FromGTestEnv("stack_trace_depth", kMaxStackTraceDepth),
- "The maximum number of stack frames to print when an "
- "assertion fails. The valid range is 0 through 100, inclusive.");
-
-GTEST_DEFINE_string_(
- stream_result_to,
- internal::StringFromGTestEnv("stream_result_to", ""),
- "This flag specifies the host name and the port number on which to stream "
- "test results. Example: \"localhost:555\". The flag is effective only on "
- "Linux.");
-
-GTEST_DEFINE_bool_(
- throw_on_failure,
- internal::BoolFromGTestEnv("throw_on_failure", false),
- "When this flag is specified, a failed assertion will throw an exception "
- "if exceptions are enabled or exit the program with a non-zero code "
+
+GTEST_DEFINE_int32_(
+ stack_trace_depth,
+ internal::Int32FromGTestEnv("stack_trace_depth", kMaxStackTraceDepth),
+ "The maximum number of stack frames to print when an "
+ "assertion fails. The valid range is 0 through 100, inclusive.");
+
+GTEST_DEFINE_string_(
+ stream_result_to,
+ internal::StringFromGTestEnv("stream_result_to", ""),
+ "This flag specifies the host name and the port number on which to stream "
+ "test results. Example: \"localhost:555\". The flag is effective only on "
+ "Linux.");
+
+GTEST_DEFINE_bool_(
+ throw_on_failure,
+ internal::BoolFromGTestEnv("throw_on_failure", false),
+ "When this flag is specified, a failed assertion will throw an exception "
+ "if exceptions are enabled or exit the program with a non-zero code "
"otherwise. For use with an external test framework.");
-
-#if GTEST_USE_OWN_FLAGFILE_FLAG_
-GTEST_DEFINE_string_(
- flagfile,
- internal::StringFromGTestEnv("flagfile", ""),
- "This flag specifies the flagfile to read command-line flags from.");
-#endif // GTEST_USE_OWN_FLAGFILE_FLAG_
-
-namespace internal {
-
-// Generates a random number from [0, range), using a Linear
-// Congruential Generator (LCG). Crashes if 'range' is 0 or greater
-// than kMaxRange.
+
+#if GTEST_USE_OWN_FLAGFILE_FLAG_
+GTEST_DEFINE_string_(
+ flagfile,
+ internal::StringFromGTestEnv("flagfile", ""),
+ "This flag specifies the flagfile to read command-line flags from.");
+#endif // GTEST_USE_OWN_FLAGFILE_FLAG_
+
+namespace internal {
+
+// Generates a random number from [0, range), using a Linear
+// Congruential Generator (LCG). Crashes if 'range' is 0 or greater
+// than kMaxRange.
uint32_t Random::Generate(uint32_t range) {
- // These constants are the same as are used in glibc's rand(3).
+ // These constants are the same as are used in glibc's rand(3).
// Use wider types than necessary to prevent unsigned overflow diagnostics.
state_ = static_cast<uint32_t>(1103515245ULL*state_ + 12345U) % kMaxRange;
-
- GTEST_CHECK_(range > 0)
- << "Cannot generate a number in the range [0, 0).";
- GTEST_CHECK_(range <= kMaxRange)
- << "Generation of a number in [0, " << range << ") was requested, "
- << "but this can only generate numbers in [0, " << kMaxRange << ").";
-
- // Converting via modulus introduces a bit of downward bias, but
- // it's simple, and a linear congruential generator isn't too good
- // to begin with.
- return state_ % range;
-}
-
+
+ GTEST_CHECK_(range > 0)
+ << "Cannot generate a number in the range [0, 0).";
+ GTEST_CHECK_(range <= kMaxRange)
+ << "Generation of a number in [0, " << range << ") was requested, "
+ << "but this can only generate numbers in [0, " << kMaxRange << ").";
+
+ // Converting via modulus introduces a bit of downward bias, but
+ // it's simple, and a linear congruential generator isn't too good
+ // to begin with.
+ return state_ % range;
+}
+
// GTestIsInitialized() returns true if and only if the user has initialized
-// Google Test. Useful for catching the user mistake of not initializing
-// Google Test before calling RUN_ALL_TESTS().
-static bool GTestIsInitialized() { return GetArgvs().size() > 0; }
-
+// Google Test. Useful for catching the user mistake of not initializing
+// Google Test before calling RUN_ALL_TESTS().
+static bool GTestIsInitialized() { return GetArgvs().size() > 0; }
+
// Iterates over a vector of TestSuites, keeping a running sum of the
-// results of calling a given int-returning method on each.
-// Returns the sum.
+// results of calling a given int-returning method on each.
+// Returns the sum.
static int SumOverTestSuiteList(const std::vector<TestSuite*>& case_list,
int (TestSuite::*method)() const) {
- int sum = 0;
- for (size_t i = 0; i < case_list.size(); i++) {
- sum += (case_list[i]->*method)();
- }
- return sum;
-}
-
+ int sum = 0;
+ for (size_t i = 0; i < case_list.size(); i++) {
+ sum += (case_list[i]->*method)();
+ }
+ return sum;
+}
+
// Returns true if and only if the test suite passed.
static bool TestSuitePassed(const TestSuite* test_suite) {
return test_suite->should_run() && test_suite->Passed();
-}
-
+}
+
// Returns true if and only if the test suite failed.
static bool TestSuiteFailed(const TestSuite* test_suite) {
return test_suite->should_run() && test_suite->Failed();
-}
-
+}
+
// Returns true if and only if test_suite contains at least one test that
// should run.
static bool ShouldRunTestSuite(const TestSuite* test_suite) {
return test_suite->should_run();
-}
-
-// AssertHelper constructor.
-AssertHelper::AssertHelper(TestPartResult::Type type,
- const char* file,
- int line,
- const char* message)
- : data_(new AssertHelperData(type, file, line, message)) {
-}
-
-AssertHelper::~AssertHelper() {
- delete data_;
-}
-
-// Message assignment, for assertion streaming support.
-void AssertHelper::operator=(const Message& message) const {
- UnitTest::GetInstance()->
- AddTestPartResult(data_->type, data_->file, data_->line,
- AppendUserMessage(data_->message, message),
- UnitTest::GetInstance()->impl()
- ->CurrentOsStackTraceExceptTop(1)
- // Skips the stack frame for this function itself.
- ); // NOLINT
-}
-
+}
+
+// AssertHelper constructor.
+AssertHelper::AssertHelper(TestPartResult::Type type,
+ const char* file,
+ int line,
+ const char* message)
+ : data_(new AssertHelperData(type, file, line, message)) {
+}
+
+AssertHelper::~AssertHelper() {
+ delete data_;
+}
+
+// Message assignment, for assertion streaming support.
+void AssertHelper::operator=(const Message& message) const {
+ UnitTest::GetInstance()->
+ AddTestPartResult(data_->type, data_->file, data_->line,
+ AppendUserMessage(data_->message, message),
+ UnitTest::GetInstance()->impl()
+ ->CurrentOsStackTraceExceptTop(1)
+ // Skips the stack frame for this function itself.
+ ); // NOLINT
+}
+
namespace {
// When TEST_P is found without a matching INSTANTIATE_TEST_SUITE_P
@@ -574,82 +574,82 @@ void TypeParameterizedTestSuiteRegistry::CheckForInstantiations() {
}
}
-// A copy of all command line arguments. Set by InitGoogleTest().
+// A copy of all command line arguments. Set by InitGoogleTest().
static ::std::vector<std::string> g_argvs;
-
+
::std::vector<std::string> GetArgvs() {
-#if defined(GTEST_CUSTOM_GET_ARGVS_)
+#if defined(GTEST_CUSTOM_GET_ARGVS_)
// GTEST_CUSTOM_GET_ARGVS_() may return a container of std::string or
// ::string. This code converts it to the appropriate type.
const auto& custom = GTEST_CUSTOM_GET_ARGVS_();
return ::std::vector<std::string>(custom.begin(), custom.end());
#else // defined(GTEST_CUSTOM_GET_ARGVS_)
- return g_argvs;
-#endif // defined(GTEST_CUSTOM_GET_ARGVS_)
-}
-
-// Returns the current application's name, removing directory path if that
-// is present.
-FilePath GetCurrentExecutableName() {
- FilePath result;
-
+ return g_argvs;
+#endif // defined(GTEST_CUSTOM_GET_ARGVS_)
+}
+
+// Returns the current application's name, removing directory path if that
+// is present.
+FilePath GetCurrentExecutableName() {
+ FilePath result;
+
#if GTEST_OS_WINDOWS || GTEST_OS_OS2
- result.Set(FilePath(GetArgvs()[0]).RemoveExtension("exe"));
-#else
- result.Set(FilePath(GetArgvs()[0]));
-#endif // GTEST_OS_WINDOWS
-
- return result.RemoveDirectoryName();
-}
-
-// Functions for processing the gtest_output flag.
-
-// Returns the output format, or "" for normal printed output.
-std::string UnitTestOptions::GetOutputFormat() {
- const char* const gtest_output_flag = GTEST_FLAG(output).c_str();
- const char* const colon = strchr(gtest_output_flag, ':');
+ result.Set(FilePath(GetArgvs()[0]).RemoveExtension("exe"));
+#else
+ result.Set(FilePath(GetArgvs()[0]));
+#endif // GTEST_OS_WINDOWS
+
+ return result.RemoveDirectoryName();
+}
+
+// Functions for processing the gtest_output flag.
+
+// Returns the output format, or "" for normal printed output.
+std::string UnitTestOptions::GetOutputFormat() {
+ const char* const gtest_output_flag = GTEST_FLAG(output).c_str();
+ const char* const colon = strchr(gtest_output_flag, ':');
return (colon == nullptr)
? std::string(gtest_output_flag)
: std::string(gtest_output_flag,
static_cast<size_t>(colon - gtest_output_flag));
-}
-
-// Returns the name of the requested output file, or the default if none
-// was explicitly specified.
-std::string UnitTestOptions::GetAbsolutePathToOutputFile() {
- const char* const gtest_output_flag = GTEST_FLAG(output).c_str();
-
+}
+
+// Returns the name of the requested output file, or the default if none
+// was explicitly specified.
+std::string UnitTestOptions::GetAbsolutePathToOutputFile() {
+ const char* const gtest_output_flag = GTEST_FLAG(output).c_str();
+
std::string format = GetOutputFormat();
if (format.empty())
format = std::string(kDefaultOutputFormat);
- const char* const colon = strchr(gtest_output_flag, ':');
+ const char* const colon = strchr(gtest_output_flag, ':');
if (colon == nullptr)
return internal::FilePath::MakeFileName(
- internal::FilePath(
- UnitTest::GetInstance()->original_working_dir()),
+ internal::FilePath(
+ UnitTest::GetInstance()->original_working_dir()),
internal::FilePath(kDefaultOutputFile), 0,
format.c_str()).string();
-
- internal::FilePath output_name(colon + 1);
- if (!output_name.IsAbsolutePath())
- output_name = internal::FilePath::ConcatPaths(
- internal::FilePath(UnitTest::GetInstance()->original_working_dir()),
- internal::FilePath(colon + 1));
-
- if (!output_name.IsDirectory())
- return output_name.string();
-
- internal::FilePath result(internal::FilePath::GenerateUniqueFileName(
- output_name, internal::GetCurrentExecutableName(),
- GetOutputFormat().c_str()));
- return result.string();
-}
-
+
+ internal::FilePath output_name(colon + 1);
+ if (!output_name.IsAbsolutePath())
+ output_name = internal::FilePath::ConcatPaths(
+ internal::FilePath(UnitTest::GetInstance()->original_working_dir()),
+ internal::FilePath(colon + 1));
+
+ if (!output_name.IsDirectory())
+ return output_name.string();
+
+ internal::FilePath result(internal::FilePath::GenerateUniqueFileName(
+ output_name, internal::GetCurrentExecutableName(),
+ GetOutputFormat().c_str()));
+ return result.string();
+}
+
// Returns true if and only if the wildcard pattern matches the string. Each
// pattern consists of regular characters, single-character wildcards (?), and
// multi-character wildcards (*).
-//
+//
// This function implements a linear-time string globbing algorithm based on
// https://research.swtch.com/glob.
static bool PatternMatchesString(const std::string& name_str,
@@ -695,10 +695,10 @@ static bool PatternMatchesString(const std::string& name_str,
continue;
}
return false;
- }
+ }
return true;
-}
-
+}
+
bool UnitTestOptions::MatchesFilter(const std::string& name_str,
const char* filter) {
// The filter is a list of patterns separated by colons (:).
@@ -711,342 +711,342 @@ bool UnitTestOptions::MatchesFilter(const std::string& name_str,
// Check if this pattern matches name_str.
if (PatternMatchesString(name_str, pattern, pattern_end)) {
- return true;
- }
-
+ return true;
+ }
+
// Give up on this pattern. However, if we found a pattern separator (:),
// advance to the next pattern (skipping over the separator) and restart.
if (next_sep == nullptr) {
- return false;
- }
+ return false;
+ }
pattern = next_sep + 1;
- }
+ }
return true;
-}
-
+}
+
// Returns true if and only if the user-specified filter matches the test
// suite name and the test name.
bool UnitTestOptions::FilterMatchesTest(const std::string& test_suite_name,
const std::string& test_name) {
const std::string& full_name = test_suite_name + "." + test_name.c_str();
-
- // Split --gtest_filter at '-', if there is one, to separate into
- // positive filter and negative filter portions
- const char* const p = GTEST_FLAG(filter).c_str();
- const char* const dash = strchr(p, '-');
- std::string positive;
- std::string negative;
+
+ // Split --gtest_filter at '-', if there is one, to separate into
+ // positive filter and negative filter portions
+ const char* const p = GTEST_FLAG(filter).c_str();
+ const char* const dash = strchr(p, '-');
+ std::string positive;
+ std::string negative;
if (dash == nullptr) {
- positive = GTEST_FLAG(filter).c_str(); // Whole string is a positive filter
- negative = "";
- } else {
- positive = std::string(p, dash); // Everything up to the dash
- negative = std::string(dash + 1); // Everything after the dash
- if (positive.empty()) {
- // Treat '-test1' as the same as '*-test1'
- positive = kUniversalFilter;
- }
- }
-
- // A filter is a colon-separated list of patterns. It matches a
- // test if any pattern in it matches the test.
- return (MatchesFilter(full_name, positive.c_str()) &&
- !MatchesFilter(full_name, negative.c_str()));
-}
-
-#if GTEST_HAS_SEH
-// Returns EXCEPTION_EXECUTE_HANDLER if Google Test should handle the
-// given SEH exception, or EXCEPTION_CONTINUE_SEARCH otherwise.
-// This function is useful as an __except condition.
-int UnitTestOptions::GTestShouldProcessSEH(DWORD exception_code) {
- // Google Test should handle a SEH exception if:
- // 1. the user wants it to, AND
- // 2. this is not a breakpoint exception, AND
- // 3. this is not a C++ exception (VC++ implements them via SEH,
- // apparently).
- //
- // SEH exception code for C++ exceptions.
- // (see http://support.microsoft.com/kb/185294 for more information).
- const DWORD kCxxExceptionCode = 0xe06d7363;
-
- bool should_handle = true;
-
- if (!GTEST_FLAG(catch_exceptions))
- should_handle = false;
- else if (exception_code == EXCEPTION_BREAKPOINT)
- should_handle = false;
- else if (exception_code == kCxxExceptionCode)
- should_handle = false;
-
- return should_handle ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH;
-}
-#endif // GTEST_HAS_SEH
-
-} // namespace internal
-
-// The c'tor sets this object as the test part result reporter used by
-// Google Test. The 'result' parameter specifies where to report the
-// results. Intercepts only failures from the current thread.
-ScopedFakeTestPartResultReporter::ScopedFakeTestPartResultReporter(
- TestPartResultArray* result)
- : intercept_mode_(INTERCEPT_ONLY_CURRENT_THREAD),
- result_(result) {
- Init();
-}
-
-// The c'tor sets this object as the test part result reporter used by
-// Google Test. The 'result' parameter specifies where to report the
-// results.
-ScopedFakeTestPartResultReporter::ScopedFakeTestPartResultReporter(
- InterceptMode intercept_mode, TestPartResultArray* result)
- : intercept_mode_(intercept_mode),
- result_(result) {
- Init();
-}
-
-void ScopedFakeTestPartResultReporter::Init() {
- internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
- if (intercept_mode_ == INTERCEPT_ALL_THREADS) {
- old_reporter_ = impl->GetGlobalTestPartResultReporter();
- impl->SetGlobalTestPartResultReporter(this);
- } else {
- old_reporter_ = impl->GetTestPartResultReporterForCurrentThread();
- impl->SetTestPartResultReporterForCurrentThread(this);
- }
-}
-
-// The d'tor restores the test part result reporter used by Google Test
-// before.
-ScopedFakeTestPartResultReporter::~ScopedFakeTestPartResultReporter() {
- internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
- if (intercept_mode_ == INTERCEPT_ALL_THREADS) {
- impl->SetGlobalTestPartResultReporter(old_reporter_);
- } else {
- impl->SetTestPartResultReporterForCurrentThread(old_reporter_);
- }
-}
-
-// Increments the test part result count and remembers the result.
-// This method is from the TestPartResultReporterInterface interface.
-void ScopedFakeTestPartResultReporter::ReportTestPartResult(
- const TestPartResult& result) {
- result_->Append(result);
-}
-
-namespace internal {
-
-// Returns the type ID of ::testing::Test. We should always call this
-// instead of GetTypeId< ::testing::Test>() to get the type ID of
-// testing::Test. This is to work around a suspected linker bug when
-// using Google Test as a framework on Mac OS X. The bug causes
-// GetTypeId< ::testing::Test>() to return different values depending
-// on whether the call is from the Google Test framework itself or
-// from user test code. GetTestTypeId() is guaranteed to always
-// return the same value, as it always calls GetTypeId<>() from the
-// gtest.cc, which is within the Google Test framework.
-TypeId GetTestTypeId() {
- return GetTypeId<Test>();
-}
-
-// The value of GetTestTypeId() as seen from within the Google Test
-// library. This is solely for testing GetTestTypeId().
-extern const TypeId kTestTypeIdInGoogleTest = GetTestTypeId();
-
-// This predicate-formatter checks that 'results' contains a test part
-// failure of the given type and that the failure message contains the
-// given substring.
+ positive = GTEST_FLAG(filter).c_str(); // Whole string is a positive filter
+ negative = "";
+ } else {
+ positive = std::string(p, dash); // Everything up to the dash
+ negative = std::string(dash + 1); // Everything after the dash
+ if (positive.empty()) {
+ // Treat '-test1' as the same as '*-test1'
+ positive = kUniversalFilter;
+ }
+ }
+
+ // A filter is a colon-separated list of patterns. It matches a
+ // test if any pattern in it matches the test.
+ return (MatchesFilter(full_name, positive.c_str()) &&
+ !MatchesFilter(full_name, negative.c_str()));
+}
+
+#if GTEST_HAS_SEH
+// Returns EXCEPTION_EXECUTE_HANDLER if Google Test should handle the
+// given SEH exception, or EXCEPTION_CONTINUE_SEARCH otherwise.
+// This function is useful as an __except condition.
+int UnitTestOptions::GTestShouldProcessSEH(DWORD exception_code) {
+ // Google Test should handle a SEH exception if:
+ // 1. the user wants it to, AND
+ // 2. this is not a breakpoint exception, AND
+ // 3. this is not a C++ exception (VC++ implements them via SEH,
+ // apparently).
+ //
+ // SEH exception code for C++ exceptions.
+ // (see http://support.microsoft.com/kb/185294 for more information).
+ const DWORD kCxxExceptionCode = 0xe06d7363;
+
+ bool should_handle = true;
+
+ if (!GTEST_FLAG(catch_exceptions))
+ should_handle = false;
+ else if (exception_code == EXCEPTION_BREAKPOINT)
+ should_handle = false;
+ else if (exception_code == kCxxExceptionCode)
+ should_handle = false;
+
+ return should_handle ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH;
+}
+#endif // GTEST_HAS_SEH
+
+} // namespace internal
+
+// The c'tor sets this object as the test part result reporter used by
+// Google Test. The 'result' parameter specifies where to report the
+// results. Intercepts only failures from the current thread.
+ScopedFakeTestPartResultReporter::ScopedFakeTestPartResultReporter(
+ TestPartResultArray* result)
+ : intercept_mode_(INTERCEPT_ONLY_CURRENT_THREAD),
+ result_(result) {
+ Init();
+}
+
+// The c'tor sets this object as the test part result reporter used by
+// Google Test. The 'result' parameter specifies where to report the
+// results.
+ScopedFakeTestPartResultReporter::ScopedFakeTestPartResultReporter(
+ InterceptMode intercept_mode, TestPartResultArray* result)
+ : intercept_mode_(intercept_mode),
+ result_(result) {
+ Init();
+}
+
+void ScopedFakeTestPartResultReporter::Init() {
+ internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
+ if (intercept_mode_ == INTERCEPT_ALL_THREADS) {
+ old_reporter_ = impl->GetGlobalTestPartResultReporter();
+ impl->SetGlobalTestPartResultReporter(this);
+ } else {
+ old_reporter_ = impl->GetTestPartResultReporterForCurrentThread();
+ impl->SetTestPartResultReporterForCurrentThread(this);
+ }
+}
+
+// The d'tor restores the test part result reporter used by Google Test
+// before.
+ScopedFakeTestPartResultReporter::~ScopedFakeTestPartResultReporter() {
+ internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
+ if (intercept_mode_ == INTERCEPT_ALL_THREADS) {
+ impl->SetGlobalTestPartResultReporter(old_reporter_);
+ } else {
+ impl->SetTestPartResultReporterForCurrentThread(old_reporter_);
+ }
+}
+
+// Increments the test part result count and remembers the result.
+// This method is from the TestPartResultReporterInterface interface.
+void ScopedFakeTestPartResultReporter::ReportTestPartResult(
+ const TestPartResult& result) {
+ result_->Append(result);
+}
+
+namespace internal {
+
+// Returns the type ID of ::testing::Test. We should always call this
+// instead of GetTypeId< ::testing::Test>() to get the type ID of
+// testing::Test. This is to work around a suspected linker bug when
+// using Google Test as a framework on Mac OS X. The bug causes
+// GetTypeId< ::testing::Test>() to return different values depending
+// on whether the call is from the Google Test framework itself or
+// from user test code. GetTestTypeId() is guaranteed to always
+// return the same value, as it always calls GetTypeId<>() from the
+// gtest.cc, which is within the Google Test framework.
+TypeId GetTestTypeId() {
+ return GetTypeId<Test>();
+}
+
+// The value of GetTestTypeId() as seen from within the Google Test
+// library. This is solely for testing GetTestTypeId().
+extern const TypeId kTestTypeIdInGoogleTest = GetTestTypeId();
+
+// This predicate-formatter checks that 'results' contains a test part
+// failure of the given type and that the failure message contains the
+// given substring.
static AssertionResult HasOneFailure(const char* /* results_expr */,
const char* /* type_expr */,
const char* /* substr_expr */,
const TestPartResultArray& results,
TestPartResult::Type type,
const std::string& substr) {
- const std::string expected(type == TestPartResult::kFatalFailure ?
- "1 fatal failure" :
- "1 non-fatal failure");
- Message msg;
- if (results.size() != 1) {
- msg << "Expected: " << expected << "\n"
- << " Actual: " << results.size() << " failures";
- for (int i = 0; i < results.size(); i++) {
- msg << "\n" << results.GetTestPartResult(i);
- }
- return AssertionFailure() << msg;
- }
-
- const TestPartResult& r = results.GetTestPartResult(0);
- if (r.type() != type) {
- return AssertionFailure() << "Expected: " << expected << "\n"
- << " Actual:\n"
- << r;
- }
-
+ const std::string expected(type == TestPartResult::kFatalFailure ?
+ "1 fatal failure" :
+ "1 non-fatal failure");
+ Message msg;
+ if (results.size() != 1) {
+ msg << "Expected: " << expected << "\n"
+ << " Actual: " << results.size() << " failures";
+ for (int i = 0; i < results.size(); i++) {
+ msg << "\n" << results.GetTestPartResult(i);
+ }
+ return AssertionFailure() << msg;
+ }
+
+ const TestPartResult& r = results.GetTestPartResult(0);
+ if (r.type() != type) {
+ return AssertionFailure() << "Expected: " << expected << "\n"
+ << " Actual:\n"
+ << r;
+ }
+
if (strstr(r.message(), substr.c_str()) == nullptr) {
- return AssertionFailure() << "Expected: " << expected << " containing \""
- << substr << "\"\n"
- << " Actual:\n"
- << r;
- }
-
- return AssertionSuccess();
-}
-
-// The constructor of SingleFailureChecker remembers where to look up
-// test part results, what type of failure we expect, and what
-// substring the failure message should contain.
+ return AssertionFailure() << "Expected: " << expected << " containing \""
+ << substr << "\"\n"
+ << " Actual:\n"
+ << r;
+ }
+
+ return AssertionSuccess();
+}
+
+// The constructor of SingleFailureChecker remembers where to look up
+// test part results, what type of failure we expect, and what
+// substring the failure message should contain.
SingleFailureChecker::SingleFailureChecker(const TestPartResultArray* results,
TestPartResult::Type type,
const std::string& substr)
: results_(results), type_(type), substr_(substr) {}
-
-// The destructor of SingleFailureChecker verifies that the given
-// TestPartResultArray contains exactly one failure that has the given
-// type and contains the given substring. If that's not the case, a
-// non-fatal failure will be generated.
-SingleFailureChecker::~SingleFailureChecker() {
- EXPECT_PRED_FORMAT3(HasOneFailure, *results_, type_, substr_);
-}
-
-DefaultGlobalTestPartResultReporter::DefaultGlobalTestPartResultReporter(
- UnitTestImpl* unit_test) : unit_test_(unit_test) {}
-
-void DefaultGlobalTestPartResultReporter::ReportTestPartResult(
- const TestPartResult& result) {
- unit_test_->current_test_result()->AddTestPartResult(result);
- unit_test_->listeners()->repeater()->OnTestPartResult(result);
-}
-
-DefaultPerThreadTestPartResultReporter::DefaultPerThreadTestPartResultReporter(
- UnitTestImpl* unit_test) : unit_test_(unit_test) {}
-
-void DefaultPerThreadTestPartResultReporter::ReportTestPartResult(
- const TestPartResult& result) {
- unit_test_->GetGlobalTestPartResultReporter()->ReportTestPartResult(result);
-}
-
-// Returns the global test part result reporter.
-TestPartResultReporterInterface*
-UnitTestImpl::GetGlobalTestPartResultReporter() {
- internal::MutexLock lock(&global_test_part_result_reporter_mutex_);
- return global_test_part_result_repoter_;
-}
-
-// Sets the global test part result reporter.
-void UnitTestImpl::SetGlobalTestPartResultReporter(
- TestPartResultReporterInterface* reporter) {
- internal::MutexLock lock(&global_test_part_result_reporter_mutex_);
- global_test_part_result_repoter_ = reporter;
-}
-
-// Returns the test part result reporter for the current thread.
-TestPartResultReporterInterface*
-UnitTestImpl::GetTestPartResultReporterForCurrentThread() {
- return per_thread_test_part_result_reporter_.get();
-}
-
-// Sets the test part result reporter for the current thread.
-void UnitTestImpl::SetTestPartResultReporterForCurrentThread(
- TestPartResultReporterInterface* reporter) {
- per_thread_test_part_result_reporter_.set(reporter);
-}
-
+
+// The destructor of SingleFailureChecker verifies that the given
+// TestPartResultArray contains exactly one failure that has the given
+// type and contains the given substring. If that's not the case, a
+// non-fatal failure will be generated.
+SingleFailureChecker::~SingleFailureChecker() {
+ EXPECT_PRED_FORMAT3(HasOneFailure, *results_, type_, substr_);
+}
+
+DefaultGlobalTestPartResultReporter::DefaultGlobalTestPartResultReporter(
+ UnitTestImpl* unit_test) : unit_test_(unit_test) {}
+
+void DefaultGlobalTestPartResultReporter::ReportTestPartResult(
+ const TestPartResult& result) {
+ unit_test_->current_test_result()->AddTestPartResult(result);
+ unit_test_->listeners()->repeater()->OnTestPartResult(result);
+}
+
+DefaultPerThreadTestPartResultReporter::DefaultPerThreadTestPartResultReporter(
+ UnitTestImpl* unit_test) : unit_test_(unit_test) {}
+
+void DefaultPerThreadTestPartResultReporter::ReportTestPartResult(
+ const TestPartResult& result) {
+ unit_test_->GetGlobalTestPartResultReporter()->ReportTestPartResult(result);
+}
+
+// Returns the global test part result reporter.
+TestPartResultReporterInterface*
+UnitTestImpl::GetGlobalTestPartResultReporter() {
+ internal::MutexLock lock(&global_test_part_result_reporter_mutex_);
+ return global_test_part_result_repoter_;
+}
+
+// Sets the global test part result reporter.
+void UnitTestImpl::SetGlobalTestPartResultReporter(
+ TestPartResultReporterInterface* reporter) {
+ internal::MutexLock lock(&global_test_part_result_reporter_mutex_);
+ global_test_part_result_repoter_ = reporter;
+}
+
+// Returns the test part result reporter for the current thread.
+TestPartResultReporterInterface*
+UnitTestImpl::GetTestPartResultReporterForCurrentThread() {
+ return per_thread_test_part_result_reporter_.get();
+}
+
+// Sets the test part result reporter for the current thread.
+void UnitTestImpl::SetTestPartResultReporterForCurrentThread(
+ TestPartResultReporterInterface* reporter) {
+ per_thread_test_part_result_reporter_.set(reporter);
+}
+
// Gets the number of successful test suites.
int UnitTestImpl::successful_test_suite_count() const {
return CountIf(test_suites_, TestSuitePassed);
-}
-
+}
+
// Gets the number of failed test suites.
int UnitTestImpl::failed_test_suite_count() const {
return CountIf(test_suites_, TestSuiteFailed);
-}
-
+}
+
// Gets the number of all test suites.
int UnitTestImpl::total_test_suite_count() const {
return static_cast<int>(test_suites_.size());
-}
-
+}
+
// Gets the number of all test suites that contain at least one test
-// that should run.
+// that should run.
int UnitTestImpl::test_suite_to_run_count() const {
return CountIf(test_suites_, ShouldRunTestSuite);
-}
-
-// Gets the number of successful tests.
-int UnitTestImpl::successful_test_count() const {
+}
+
+// Gets the number of successful tests.
+int UnitTestImpl::successful_test_count() const {
return SumOverTestSuiteList(test_suites_, &TestSuite::successful_test_count);
-}
-
+}
+
// Gets the number of skipped tests.
int UnitTestImpl::skipped_test_count() const {
return SumOverTestSuiteList(test_suites_, &TestSuite::skipped_test_count);
}
-// Gets the number of failed tests.
-int UnitTestImpl::failed_test_count() const {
+// Gets the number of failed tests.
+int UnitTestImpl::failed_test_count() const {
return SumOverTestSuiteList(test_suites_, &TestSuite::failed_test_count);
-}
-
-// Gets the number of disabled tests that will be reported in the XML report.
-int UnitTestImpl::reportable_disabled_test_count() const {
+}
+
+// Gets the number of disabled tests that will be reported in the XML report.
+int UnitTestImpl::reportable_disabled_test_count() const {
return SumOverTestSuiteList(test_suites_,
&TestSuite::reportable_disabled_test_count);
-}
-
-// Gets the number of disabled tests.
-int UnitTestImpl::disabled_test_count() const {
+}
+
+// Gets the number of disabled tests.
+int UnitTestImpl::disabled_test_count() const {
return SumOverTestSuiteList(test_suites_, &TestSuite::disabled_test_count);
-}
-
-// Gets the number of tests to be printed in the XML report.
-int UnitTestImpl::reportable_test_count() const {
+}
+
+// Gets the number of tests to be printed in the XML report.
+int UnitTestImpl::reportable_test_count() const {
return SumOverTestSuiteList(test_suites_, &TestSuite::reportable_test_count);
-}
-
-// Gets the number of all tests.
-int UnitTestImpl::total_test_count() const {
+}
+
+// Gets the number of all tests.
+int UnitTestImpl::total_test_count() const {
return SumOverTestSuiteList(test_suites_, &TestSuite::total_test_count);
-}
-
-// Gets the number of tests that should run.
-int UnitTestImpl::test_to_run_count() const {
+}
+
+// Gets the number of tests that should run.
+int UnitTestImpl::test_to_run_count() const {
return SumOverTestSuiteList(test_suites_, &TestSuite::test_to_run_count);
-}
-
-// Returns the current OS stack trace as an std::string.
-//
-// The maximum number of stack frames to be included is specified by
-// the gtest_stack_trace_depth flag. The skip_count parameter
-// specifies the number of top frames to be skipped, which doesn't
-// count against the number of frames to be included.
-//
-// For example, if Foo() calls Bar(), which in turn calls
-// CurrentOsStackTraceExceptTop(1), Foo() will be included in the
-// trace but Bar() and CurrentOsStackTraceExceptTop() won't.
-std::string UnitTestImpl::CurrentOsStackTraceExceptTop(int skip_count) {
- return os_stack_trace_getter()->CurrentStackTrace(
- static_cast<int>(GTEST_FLAG(stack_trace_depth)),
- skip_count + 1
- // Skips the user-specified number of frames plus this function
- // itself.
- ); // NOLINT
-}
-
+}
+
+// Returns the current OS stack trace as an std::string.
+//
+// The maximum number of stack frames to be included is specified by
+// the gtest_stack_trace_depth flag. The skip_count parameter
+// specifies the number of top frames to be skipped, which doesn't
+// count against the number of frames to be included.
+//
+// For example, if Foo() calls Bar(), which in turn calls
+// CurrentOsStackTraceExceptTop(1), Foo() will be included in the
+// trace but Bar() and CurrentOsStackTraceExceptTop() won't.
+std::string UnitTestImpl::CurrentOsStackTraceExceptTop(int skip_count) {
+ return os_stack_trace_getter()->CurrentStackTrace(
+ static_cast<int>(GTEST_FLAG(stack_trace_depth)),
+ skip_count + 1
+ // Skips the user-specified number of frames plus this function
+ // itself.
+ ); // NOLINT
+}
+
// A helper class for measuring elapsed times.
class Timer {
public:
Timer() : start_(std::chrono::steady_clock::now()) {}
-
+
// Return time elapsed in milliseconds since the timer was created.
TimeInMillis Elapsed() {
return std::chrono::duration_cast<std::chrono::milliseconds>(
std::chrono::steady_clock::now() - start_)
.count();
- }
-
+ }
+
private:
std::chrono::steady_clock::time_point start_;
};
-
+
// Returns a timestamp as milliseconds since the epoch. Note this time may jump
// around subject to adjustments by the system, to measure elapsed time use
// Timer instead.
@@ -1055,520 +1055,520 @@ TimeInMillis GetTimeInMillis() {
std::chrono::system_clock::now() -
std::chrono::system_clock::from_time_t(0))
.count();
-}
-
-// Utilities
-
-// class String.
-
-#if GTEST_OS_WINDOWS_MOBILE
-// Creates a UTF-16 wide string from the given ANSI string, allocating
-// memory using new. The caller is responsible for deleting the return
-// value using delete[]. Returns the wide string, or NULL if the
-// input is NULL.
-LPCWSTR String::AnsiToUtf16(const char* ansi) {
+}
+
+// Utilities
+
+// class String.
+
+#if GTEST_OS_WINDOWS_MOBILE
+// Creates a UTF-16 wide string from the given ANSI string, allocating
+// memory using new. The caller is responsible for deleting the return
+// value using delete[]. Returns the wide string, or NULL if the
+// input is NULL.
+LPCWSTR String::AnsiToUtf16(const char* ansi) {
if (!ansi) return nullptr;
- const int length = strlen(ansi);
- const int unicode_length =
+ const int length = strlen(ansi);
+ const int unicode_length =
MultiByteToWideChar(CP_ACP, 0, ansi, length, nullptr, 0);
- WCHAR* unicode = new WCHAR[unicode_length + 1];
- MultiByteToWideChar(CP_ACP, 0, ansi, length,
- unicode, unicode_length);
- unicode[unicode_length] = 0;
- return unicode;
-}
-
-// Creates an ANSI string from the given wide string, allocating
-// memory using new. The caller is responsible for deleting the return
-// value using delete[]. Returns the ANSI string, or NULL if the
-// input is NULL.
-const char* String::Utf16ToAnsi(LPCWSTR utf16_str) {
+ WCHAR* unicode = new WCHAR[unicode_length + 1];
+ MultiByteToWideChar(CP_ACP, 0, ansi, length,
+ unicode, unicode_length);
+ unicode[unicode_length] = 0;
+ return unicode;
+}
+
+// Creates an ANSI string from the given wide string, allocating
+// memory using new. The caller is responsible for deleting the return
+// value using delete[]. Returns the ANSI string, or NULL if the
+// input is NULL.
+const char* String::Utf16ToAnsi(LPCWSTR utf16_str) {
if (!utf16_str) return nullptr;
const int ansi_length = WideCharToMultiByte(CP_ACP, 0, utf16_str, -1, nullptr,
0, nullptr, nullptr);
- char* ansi = new char[ansi_length + 1];
+ char* ansi = new char[ansi_length + 1];
WideCharToMultiByte(CP_ACP, 0, utf16_str, -1, ansi, ansi_length, nullptr,
nullptr);
- ansi[ansi_length] = 0;
- return ansi;
-}
-
-#endif // GTEST_OS_WINDOWS_MOBILE
-
+ ansi[ansi_length] = 0;
+ return ansi;
+}
+
+#endif // GTEST_OS_WINDOWS_MOBILE
+
// Compares two C strings. Returns true if and only if they have the same
// content.
-//
-// Unlike strcmp(), this function can handle NULL argument(s). A NULL
-// C string is considered different to any non-NULL C string,
-// including the empty string.
-bool String::CStringEquals(const char * lhs, const char * rhs) {
+//
+// Unlike strcmp(), this function can handle NULL argument(s). A NULL
+// C string is considered different to any non-NULL C string,
+// including the empty string.
+bool String::CStringEquals(const char * lhs, const char * rhs) {
if (lhs == nullptr) return rhs == nullptr;
-
+
if (rhs == nullptr) return false;
-
- return strcmp(lhs, rhs) == 0;
-}
-
+
+ return strcmp(lhs, rhs) == 0;
+}
+
#if GTEST_HAS_STD_WSTRING
-
-// Converts an array of wide chars to a narrow string using the UTF-8
-// encoding, and streams the result to the given Message object.
-static void StreamWideCharsToMessage(const wchar_t* wstr, size_t length,
- Message* msg) {
- for (size_t i = 0; i != length; ) { // NOLINT
- if (wstr[i] != L'\0') {
- *msg << WideStringToUtf8(wstr + i, static_cast<int>(length - i));
- while (i != length && wstr[i] != L'\0')
- i++;
- } else {
- *msg << '\0';
- i++;
- }
- }
-}
-
+
+// Converts an array of wide chars to a narrow string using the UTF-8
+// encoding, and streams the result to the given Message object.
+static void StreamWideCharsToMessage(const wchar_t* wstr, size_t length,
+ Message* msg) {
+ for (size_t i = 0; i != length; ) { // NOLINT
+ if (wstr[i] != L'\0') {
+ *msg << WideStringToUtf8(wstr + i, static_cast<int>(length - i));
+ while (i != length && wstr[i] != L'\0')
+ i++;
+ } else {
+ *msg << '\0';
+ i++;
+ }
+ }
+}
+
+#endif // GTEST_HAS_STD_WSTRING
+
+void SplitString(const ::std::string& str, char delimiter,
+ ::std::vector< ::std::string>* dest) {
+ ::std::vector< ::std::string> parsed;
+ ::std::string::size_type pos = 0;
+ while (::testing::internal::AlwaysTrue()) {
+ const ::std::string::size_type colon = str.find(delimiter, pos);
+ if (colon == ::std::string::npos) {
+ parsed.push_back(str.substr(pos));
+ break;
+ } else {
+ parsed.push_back(str.substr(pos, colon - pos));
+ pos = colon + 1;
+ }
+ }
+ dest->swap(parsed);
+}
+
+} // namespace internal
+
+// Constructs an empty Message.
+// We allocate the stringstream separately because otherwise each use of
+// ASSERT/EXPECT in a procedure adds over 200 bytes to the procedure's
+// stack frame leading to huge stack frames in some cases; gcc does not reuse
+// the stack space.
+Message::Message() : ss_(new ::std::stringstream) {
+ // By default, we want there to be enough precision when printing
+ // a double to a Message.
+ *ss_ << std::setprecision(std::numeric_limits<double>::digits10 + 2);
+}
+
+// These two overloads allow streaming a wide C string to a Message
+// using the UTF-8 encoding.
+Message& Message::operator <<(const wchar_t* wide_c_str) {
+ return *this << internal::String::ShowWideCString(wide_c_str);
+}
+Message& Message::operator <<(wchar_t* wide_c_str) {
+ return *this << internal::String::ShowWideCString(wide_c_str);
+}
+
+#if GTEST_HAS_STD_WSTRING
+// Converts the given wide string to a narrow string using the UTF-8
+// encoding, and streams the result to this Message object.
+Message& Message::operator <<(const ::std::wstring& wstr) {
+ internal::StreamWideCharsToMessage(wstr.c_str(), wstr.length(), this);
+ return *this;
+}
#endif // GTEST_HAS_STD_WSTRING
-
-void SplitString(const ::std::string& str, char delimiter,
- ::std::vector< ::std::string>* dest) {
- ::std::vector< ::std::string> parsed;
- ::std::string::size_type pos = 0;
- while (::testing::internal::AlwaysTrue()) {
- const ::std::string::size_type colon = str.find(delimiter, pos);
- if (colon == ::std::string::npos) {
- parsed.push_back(str.substr(pos));
- break;
- } else {
- parsed.push_back(str.substr(pos, colon - pos));
- pos = colon + 1;
- }
- }
- dest->swap(parsed);
-}
-
-} // namespace internal
-
-// Constructs an empty Message.
-// We allocate the stringstream separately because otherwise each use of
-// ASSERT/EXPECT in a procedure adds over 200 bytes to the procedure's
-// stack frame leading to huge stack frames in some cases; gcc does not reuse
-// the stack space.
-Message::Message() : ss_(new ::std::stringstream) {
- // By default, we want there to be enough precision when printing
- // a double to a Message.
- *ss_ << std::setprecision(std::numeric_limits<double>::digits10 + 2);
-}
-
-// These two overloads allow streaming a wide C string to a Message
-// using the UTF-8 encoding.
-Message& Message::operator <<(const wchar_t* wide_c_str) {
- return *this << internal::String::ShowWideCString(wide_c_str);
-}
-Message& Message::operator <<(wchar_t* wide_c_str) {
- return *this << internal::String::ShowWideCString(wide_c_str);
-}
-
-#if GTEST_HAS_STD_WSTRING
-// Converts the given wide string to a narrow string using the UTF-8
-// encoding, and streams the result to this Message object.
-Message& Message::operator <<(const ::std::wstring& wstr) {
- internal::StreamWideCharsToMessage(wstr.c_str(), wstr.length(), this);
- return *this;
-}
-#endif // GTEST_HAS_STD_WSTRING
-
-// Gets the text streamed to this object so far as an std::string.
-// Each '\0' character in the buffer is replaced with "\\0".
-std::string Message::GetString() const {
- return internal::StringStreamToString(ss_.get());
-}
-
-// AssertionResult constructors.
-// Used in EXPECT_TRUE/FALSE(assertion_result).
-AssertionResult::AssertionResult(const AssertionResult& other)
- : success_(other.success_),
+
+// Gets the text streamed to this object so far as an std::string.
+// Each '\0' character in the buffer is replaced with "\\0".
+std::string Message::GetString() const {
+ return internal::StringStreamToString(ss_.get());
+}
+
+// AssertionResult constructors.
+// Used in EXPECT_TRUE/FALSE(assertion_result).
+AssertionResult::AssertionResult(const AssertionResult& other)
+ : success_(other.success_),
message_(other.message_.get() != nullptr
? new ::std::string(*other.message_)
: static_cast< ::std::string*>(nullptr)) {}
-
-// Swaps two AssertionResults.
-void AssertionResult::swap(AssertionResult& other) {
- using std::swap;
- swap(success_, other.success_);
+
+// Swaps two AssertionResults.
+void AssertionResult::swap(AssertionResult& other) {
+ using std::swap;
+ swap(success_, other.success_);
swap(message_, other.message_);
-}
-
-// Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE.
-AssertionResult AssertionResult::operator!() const {
- AssertionResult negation(!success_);
+}
+
+// Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE.
+AssertionResult AssertionResult::operator!() const {
+ AssertionResult negation(!success_);
if (message_.get() != nullptr) negation << *message_;
- return negation;
-}
-
-// Makes a successful assertion result.
-AssertionResult AssertionSuccess() {
- return AssertionResult(true);
-}
-
-// Makes a failed assertion result.
-AssertionResult AssertionFailure() {
- return AssertionResult(false);
-}
-
-// Makes a failed assertion result with the given failure message.
-// Deprecated; use AssertionFailure() << message.
-AssertionResult AssertionFailure(const Message& message) {
- return AssertionFailure() << message;
-}
-
-namespace internal {
-
-namespace edit_distance {
-std::vector<EditType> CalculateOptimalEdits(const std::vector<size_t>& left,
- const std::vector<size_t>& right) {
- std::vector<std::vector<double> > costs(
- left.size() + 1, std::vector<double>(right.size() + 1));
- std::vector<std::vector<EditType> > best_move(
- left.size() + 1, std::vector<EditType>(right.size() + 1));
-
- // Populate for empty right.
- for (size_t l_i = 0; l_i < costs.size(); ++l_i) {
- costs[l_i][0] = static_cast<double>(l_i);
- best_move[l_i][0] = kRemove;
- }
- // Populate for empty left.
- for (size_t r_i = 1; r_i < costs[0].size(); ++r_i) {
- costs[0][r_i] = static_cast<double>(r_i);
- best_move[0][r_i] = kAdd;
- }
-
- for (size_t l_i = 0; l_i < left.size(); ++l_i) {
- for (size_t r_i = 0; r_i < right.size(); ++r_i) {
- if (left[l_i] == right[r_i]) {
- // Found a match. Consume it.
- costs[l_i + 1][r_i + 1] = costs[l_i][r_i];
- best_move[l_i + 1][r_i + 1] = kMatch;
- continue;
- }
-
- const double add = costs[l_i + 1][r_i];
- const double remove = costs[l_i][r_i + 1];
- const double replace = costs[l_i][r_i];
- if (add < remove && add < replace) {
- costs[l_i + 1][r_i + 1] = add + 1;
- best_move[l_i + 1][r_i + 1] = kAdd;
- } else if (remove < add && remove < replace) {
- costs[l_i + 1][r_i + 1] = remove + 1;
- best_move[l_i + 1][r_i + 1] = kRemove;
- } else {
- // We make replace a little more expensive than add/remove to lower
- // their priority.
- costs[l_i + 1][r_i + 1] = replace + 1.00001;
- best_move[l_i + 1][r_i + 1] = kReplace;
- }
- }
- }
-
- // Reconstruct the best path. We do it in reverse order.
- std::vector<EditType> best_path;
- for (size_t l_i = left.size(), r_i = right.size(); l_i > 0 || r_i > 0;) {
- EditType move = best_move[l_i][r_i];
- best_path.push_back(move);
- l_i -= move != kAdd;
- r_i -= move != kRemove;
- }
- std::reverse(best_path.begin(), best_path.end());
- return best_path;
-}
-
-namespace {
-
-// Helper class to convert string into ids with deduplication.
-class InternalStrings {
- public:
- size_t GetId(const std::string& str) {
- IdMap::iterator it = ids_.find(str);
- if (it != ids_.end()) return it->second;
- size_t id = ids_.size();
- return ids_[str] = id;
- }
-
- private:
- typedef std::map<std::string, size_t> IdMap;
- IdMap ids_;
-};
-
-} // namespace
-
-std::vector<EditType> CalculateOptimalEdits(
- const std::vector<std::string>& left,
- const std::vector<std::string>& right) {
- std::vector<size_t> left_ids, right_ids;
- {
- InternalStrings intern_table;
- for (size_t i = 0; i < left.size(); ++i) {
- left_ids.push_back(intern_table.GetId(left[i]));
- }
- for (size_t i = 0; i < right.size(); ++i) {
- right_ids.push_back(intern_table.GetId(right[i]));
- }
- }
- return CalculateOptimalEdits(left_ids, right_ids);
-}
-
-namespace {
-
-// Helper class that holds the state for one hunk and prints it out to the
-// stream.
-// It reorders adds/removes when possible to group all removes before all
-// adds. It also adds the hunk header before printint into the stream.
-class Hunk {
- public:
- Hunk(size_t left_start, size_t right_start)
- : left_start_(left_start),
- right_start_(right_start),
- adds_(),
- removes_(),
- common_() {}
-
- void PushLine(char edit, const char* line) {
- switch (edit) {
- case ' ':
- ++common_;
- FlushEdits();
- hunk_.push_back(std::make_pair(' ', line));
- break;
- case '-':
- ++removes_;
- hunk_removes_.push_back(std::make_pair('-', line));
- break;
- case '+':
- ++adds_;
- hunk_adds_.push_back(std::make_pair('+', line));
- break;
- }
- }
-
- void PrintTo(std::ostream* os) {
- PrintHeader(os);
- FlushEdits();
- for (std::list<std::pair<char, const char*> >::const_iterator it =
- hunk_.begin();
- it != hunk_.end(); ++it) {
- *os << it->first << it->second << "\n";
- }
- }
-
- bool has_edits() const { return adds_ || removes_; }
-
- private:
- void FlushEdits() {
- hunk_.splice(hunk_.end(), hunk_removes_);
- hunk_.splice(hunk_.end(), hunk_adds_);
- }
-
- // Print a unified diff header for one hunk.
- // The format is
- // "@@ -<left_start>,<left_length> +<right_start>,<right_length> @@"
+ return negation;
+}
+
+// Makes a successful assertion result.
+AssertionResult AssertionSuccess() {
+ return AssertionResult(true);
+}
+
+// Makes a failed assertion result.
+AssertionResult AssertionFailure() {
+ return AssertionResult(false);
+}
+
+// Makes a failed assertion result with the given failure message.
+// Deprecated; use AssertionFailure() << message.
+AssertionResult AssertionFailure(const Message& message) {
+ return AssertionFailure() << message;
+}
+
+namespace internal {
+
+namespace edit_distance {
+std::vector<EditType> CalculateOptimalEdits(const std::vector<size_t>& left,
+ const std::vector<size_t>& right) {
+ std::vector<std::vector<double> > costs(
+ left.size() + 1, std::vector<double>(right.size() + 1));
+ std::vector<std::vector<EditType> > best_move(
+ left.size() + 1, std::vector<EditType>(right.size() + 1));
+
+ // Populate for empty right.
+ for (size_t l_i = 0; l_i < costs.size(); ++l_i) {
+ costs[l_i][0] = static_cast<double>(l_i);
+ best_move[l_i][0] = kRemove;
+ }
+ // Populate for empty left.
+ for (size_t r_i = 1; r_i < costs[0].size(); ++r_i) {
+ costs[0][r_i] = static_cast<double>(r_i);
+ best_move[0][r_i] = kAdd;
+ }
+
+ for (size_t l_i = 0; l_i < left.size(); ++l_i) {
+ for (size_t r_i = 0; r_i < right.size(); ++r_i) {
+ if (left[l_i] == right[r_i]) {
+ // Found a match. Consume it.
+ costs[l_i + 1][r_i + 1] = costs[l_i][r_i];
+ best_move[l_i + 1][r_i + 1] = kMatch;
+ continue;
+ }
+
+ const double add = costs[l_i + 1][r_i];
+ const double remove = costs[l_i][r_i + 1];
+ const double replace = costs[l_i][r_i];
+ if (add < remove && add < replace) {
+ costs[l_i + 1][r_i + 1] = add + 1;
+ best_move[l_i + 1][r_i + 1] = kAdd;
+ } else if (remove < add && remove < replace) {
+ costs[l_i + 1][r_i + 1] = remove + 1;
+ best_move[l_i + 1][r_i + 1] = kRemove;
+ } else {
+ // We make replace a little more expensive than add/remove to lower
+ // their priority.
+ costs[l_i + 1][r_i + 1] = replace + 1.00001;
+ best_move[l_i + 1][r_i + 1] = kReplace;
+ }
+ }
+ }
+
+ // Reconstruct the best path. We do it in reverse order.
+ std::vector<EditType> best_path;
+ for (size_t l_i = left.size(), r_i = right.size(); l_i > 0 || r_i > 0;) {
+ EditType move = best_move[l_i][r_i];
+ best_path.push_back(move);
+ l_i -= move != kAdd;
+ r_i -= move != kRemove;
+ }
+ std::reverse(best_path.begin(), best_path.end());
+ return best_path;
+}
+
+namespace {
+
+// Helper class to convert string into ids with deduplication.
+class InternalStrings {
+ public:
+ size_t GetId(const std::string& str) {
+ IdMap::iterator it = ids_.find(str);
+ if (it != ids_.end()) return it->second;
+ size_t id = ids_.size();
+ return ids_[str] = id;
+ }
+
+ private:
+ typedef std::map<std::string, size_t> IdMap;
+ IdMap ids_;
+};
+
+} // namespace
+
+std::vector<EditType> CalculateOptimalEdits(
+ const std::vector<std::string>& left,
+ const std::vector<std::string>& right) {
+ std::vector<size_t> left_ids, right_ids;
+ {
+ InternalStrings intern_table;
+ for (size_t i = 0; i < left.size(); ++i) {
+ left_ids.push_back(intern_table.GetId(left[i]));
+ }
+ for (size_t i = 0; i < right.size(); ++i) {
+ right_ids.push_back(intern_table.GetId(right[i]));
+ }
+ }
+ return CalculateOptimalEdits(left_ids, right_ids);
+}
+
+namespace {
+
+// Helper class that holds the state for one hunk and prints it out to the
+// stream.
+// It reorders adds/removes when possible to group all removes before all
+// adds. It also adds the hunk header before printint into the stream.
+class Hunk {
+ public:
+ Hunk(size_t left_start, size_t right_start)
+ : left_start_(left_start),
+ right_start_(right_start),
+ adds_(),
+ removes_(),
+ common_() {}
+
+ void PushLine(char edit, const char* line) {
+ switch (edit) {
+ case ' ':
+ ++common_;
+ FlushEdits();
+ hunk_.push_back(std::make_pair(' ', line));
+ break;
+ case '-':
+ ++removes_;
+ hunk_removes_.push_back(std::make_pair('-', line));
+ break;
+ case '+':
+ ++adds_;
+ hunk_adds_.push_back(std::make_pair('+', line));
+ break;
+ }
+ }
+
+ void PrintTo(std::ostream* os) {
+ PrintHeader(os);
+ FlushEdits();
+ for (std::list<std::pair<char, const char*> >::const_iterator it =
+ hunk_.begin();
+ it != hunk_.end(); ++it) {
+ *os << it->first << it->second << "\n";
+ }
+ }
+
+ bool has_edits() const { return adds_ || removes_; }
+
+ private:
+ void FlushEdits() {
+ hunk_.splice(hunk_.end(), hunk_removes_);
+ hunk_.splice(hunk_.end(), hunk_adds_);
+ }
+
+ // Print a unified diff header for one hunk.
+ // The format is
+ // "@@ -<left_start>,<left_length> +<right_start>,<right_length> @@"
// where the left/right parts are omitted if unnecessary.
- void PrintHeader(std::ostream* ss) const {
- *ss << "@@ ";
- if (removes_) {
- *ss << "-" << left_start_ << "," << (removes_ + common_);
- }
- if (removes_ && adds_) {
- *ss << " ";
- }
- if (adds_) {
- *ss << "+" << right_start_ << "," << (adds_ + common_);
- }
- *ss << " @@\n";
- }
-
- size_t left_start_, right_start_;
- size_t adds_, removes_, common_;
- std::list<std::pair<char, const char*> > hunk_, hunk_adds_, hunk_removes_;
-};
-
-} // namespace
-
-// Create a list of diff hunks in Unified diff format.
-// Each hunk has a header generated by PrintHeader above plus a body with
-// lines prefixed with ' ' for no change, '-' for deletion and '+' for
-// addition.
-// 'context' represents the desired unchanged prefix/suffix around the diff.
-// If two hunks are close enough that their contexts overlap, then they are
-// joined into one hunk.
-std::string CreateUnifiedDiff(const std::vector<std::string>& left,
- const std::vector<std::string>& right,
- size_t context) {
- const std::vector<EditType> edits = CalculateOptimalEdits(left, right);
-
- size_t l_i = 0, r_i = 0, edit_i = 0;
- std::stringstream ss;
- while (edit_i < edits.size()) {
- // Find first edit.
- while (edit_i < edits.size() && edits[edit_i] == kMatch) {
- ++l_i;
- ++r_i;
- ++edit_i;
- }
-
- // Find the first line to include in the hunk.
- const size_t prefix_context = std::min(l_i, context);
- Hunk hunk(l_i - prefix_context + 1, r_i - prefix_context + 1);
- for (size_t i = prefix_context; i > 0; --i) {
- hunk.PushLine(' ', left[l_i - i].c_str());
- }
-
- // Iterate the edits until we found enough suffix for the hunk or the input
- // is over.
- size_t n_suffix = 0;
- for (; edit_i < edits.size(); ++edit_i) {
- if (n_suffix >= context) {
- // Continue only if the next hunk is very close.
+ void PrintHeader(std::ostream* ss) const {
+ *ss << "@@ ";
+ if (removes_) {
+ *ss << "-" << left_start_ << "," << (removes_ + common_);
+ }
+ if (removes_ && adds_) {
+ *ss << " ";
+ }
+ if (adds_) {
+ *ss << "+" << right_start_ << "," << (adds_ + common_);
+ }
+ *ss << " @@\n";
+ }
+
+ size_t left_start_, right_start_;
+ size_t adds_, removes_, common_;
+ std::list<std::pair<char, const char*> > hunk_, hunk_adds_, hunk_removes_;
+};
+
+} // namespace
+
+// Create a list of diff hunks in Unified diff format.
+// Each hunk has a header generated by PrintHeader above plus a body with
+// lines prefixed with ' ' for no change, '-' for deletion and '+' for
+// addition.
+// 'context' represents the desired unchanged prefix/suffix around the diff.
+// If two hunks are close enough that their contexts overlap, then they are
+// joined into one hunk.
+std::string CreateUnifiedDiff(const std::vector<std::string>& left,
+ const std::vector<std::string>& right,
+ size_t context) {
+ const std::vector<EditType> edits = CalculateOptimalEdits(left, right);
+
+ size_t l_i = 0, r_i = 0, edit_i = 0;
+ std::stringstream ss;
+ while (edit_i < edits.size()) {
+ // Find first edit.
+ while (edit_i < edits.size() && edits[edit_i] == kMatch) {
+ ++l_i;
+ ++r_i;
+ ++edit_i;
+ }
+
+ // Find the first line to include in the hunk.
+ const size_t prefix_context = std::min(l_i, context);
+ Hunk hunk(l_i - prefix_context + 1, r_i - prefix_context + 1);
+ for (size_t i = prefix_context; i > 0; --i) {
+ hunk.PushLine(' ', left[l_i - i].c_str());
+ }
+
+ // Iterate the edits until we found enough suffix for the hunk or the input
+ // is over.
+ size_t n_suffix = 0;
+ for (; edit_i < edits.size(); ++edit_i) {
+ if (n_suffix >= context) {
+ // Continue only if the next hunk is very close.
auto it = edits.begin() + static_cast<int>(edit_i);
- while (it != edits.end() && *it == kMatch) ++it;
+ while (it != edits.end() && *it == kMatch) ++it;
if (it == edits.end() ||
static_cast<size_t>(it - edits.begin()) - edit_i >= context) {
- // There is no next edit or it is too far away.
- break;
- }
- }
-
- EditType edit = edits[edit_i];
- // Reset count when a non match is found.
- n_suffix = edit == kMatch ? n_suffix + 1 : 0;
-
- if (edit == kMatch || edit == kRemove || edit == kReplace) {
- hunk.PushLine(edit == kMatch ? ' ' : '-', left[l_i].c_str());
- }
- if (edit == kAdd || edit == kReplace) {
- hunk.PushLine('+', right[r_i].c_str());
- }
-
- // Advance indices, depending on edit type.
- l_i += edit != kAdd;
- r_i += edit != kRemove;
- }
-
- if (!hunk.has_edits()) {
- // We are done. We don't want this hunk.
- break;
- }
-
- hunk.PrintTo(&ss);
- }
- return ss.str();
-}
-
-} // namespace edit_distance
-
-namespace {
-
-// The string representation of the values received in EqFailure() are already
-// escaped. Split them on escaped '\n' boundaries. Leave all other escaped
-// characters the same.
-std::vector<std::string> SplitEscapedString(const std::string& str) {
- std::vector<std::string> lines;
- size_t start = 0, end = str.size();
- if (end > 2 && str[0] == '"' && str[end - 1] == '"') {
- ++start;
- --end;
- }
- bool escaped = false;
- for (size_t i = start; i + 1 < end; ++i) {
- if (escaped) {
- escaped = false;
- if (str[i] == 'n') {
- lines.push_back(str.substr(start, i - start - 1));
- start = i + 1;
- }
- } else {
- escaped = str[i] == '\\';
- }
- }
- lines.push_back(str.substr(start, end - start));
- return lines;
-}
-
-} // namespace
-
-// Constructs and returns the message for an equality assertion
-// (e.g. ASSERT_EQ, EXPECT_STREQ, etc) failure.
-//
-// The first four parameters are the expressions used in the assertion
-// and their values, as strings. For example, for ASSERT_EQ(foo, bar)
-// where foo is 5 and bar is 6, we have:
-//
-// lhs_expression: "foo"
-// rhs_expression: "bar"
-// lhs_value: "5"
-// rhs_value: "6"
-//
+ // There is no next edit or it is too far away.
+ break;
+ }
+ }
+
+ EditType edit = edits[edit_i];
+ // Reset count when a non match is found.
+ n_suffix = edit == kMatch ? n_suffix + 1 : 0;
+
+ if (edit == kMatch || edit == kRemove || edit == kReplace) {
+ hunk.PushLine(edit == kMatch ? ' ' : '-', left[l_i].c_str());
+ }
+ if (edit == kAdd || edit == kReplace) {
+ hunk.PushLine('+', right[r_i].c_str());
+ }
+
+ // Advance indices, depending on edit type.
+ l_i += edit != kAdd;
+ r_i += edit != kRemove;
+ }
+
+ if (!hunk.has_edits()) {
+ // We are done. We don't want this hunk.
+ break;
+ }
+
+ hunk.PrintTo(&ss);
+ }
+ return ss.str();
+}
+
+} // namespace edit_distance
+
+namespace {
+
+// The string representation of the values received in EqFailure() are already
+// escaped. Split them on escaped '\n' boundaries. Leave all other escaped
+// characters the same.
+std::vector<std::string> SplitEscapedString(const std::string& str) {
+ std::vector<std::string> lines;
+ size_t start = 0, end = str.size();
+ if (end > 2 && str[0] == '"' && str[end - 1] == '"') {
+ ++start;
+ --end;
+ }
+ bool escaped = false;
+ for (size_t i = start; i + 1 < end; ++i) {
+ if (escaped) {
+ escaped = false;
+ if (str[i] == 'n') {
+ lines.push_back(str.substr(start, i - start - 1));
+ start = i + 1;
+ }
+ } else {
+ escaped = str[i] == '\\';
+ }
+ }
+ lines.push_back(str.substr(start, end - start));
+ return lines;
+}
+
+} // namespace
+
+// Constructs and returns the message for an equality assertion
+// (e.g. ASSERT_EQ, EXPECT_STREQ, etc) failure.
+//
+// The first four parameters are the expressions used in the assertion
+// and their values, as strings. For example, for ASSERT_EQ(foo, bar)
+// where foo is 5 and bar is 6, we have:
+//
+// lhs_expression: "foo"
+// rhs_expression: "bar"
+// lhs_value: "5"
+// rhs_value: "6"
+//
// The ignoring_case parameter is true if and only if the assertion is a
-// *_STRCASEEQ*. When it's true, the string "Ignoring case" will
-// be inserted into the message.
-AssertionResult EqFailure(const char* lhs_expression,
- const char* rhs_expression,
- const std::string& lhs_value,
- const std::string& rhs_value,
- bool ignoring_case) {
- Message msg;
+// *_STRCASEEQ*. When it's true, the string "Ignoring case" will
+// be inserted into the message.
+AssertionResult EqFailure(const char* lhs_expression,
+ const char* rhs_expression,
+ const std::string& lhs_value,
+ const std::string& rhs_value,
+ bool ignoring_case) {
+ Message msg;
msg << "Expected equality of these values:";
msg << "\n " << lhs_expression;
- if (lhs_value != lhs_expression) {
+ if (lhs_value != lhs_expression) {
msg << "\n Which is: " << lhs_value;
- }
+ }
msg << "\n " << rhs_expression;
- if (rhs_value != rhs_expression) {
+ if (rhs_value != rhs_expression) {
msg << "\n Which is: " << rhs_value;
- }
-
- if (ignoring_case) {
- msg << "\nIgnoring case";
- }
-
- if (!lhs_value.empty() && !rhs_value.empty()) {
- const std::vector<std::string> lhs_lines =
- SplitEscapedString(lhs_value);
- const std::vector<std::string> rhs_lines =
- SplitEscapedString(rhs_value);
- if (lhs_lines.size() > 1 || rhs_lines.size() > 1) {
- msg << "\nWith diff:\n"
- << edit_distance::CreateUnifiedDiff(lhs_lines, rhs_lines);
- }
- }
-
- return AssertionFailure() << msg;
-}
-
-// Constructs a failure message for Boolean assertions such as EXPECT_TRUE.
-std::string GetBoolAssertionFailureMessage(
- const AssertionResult& assertion_result,
- const char* expression_text,
- const char* actual_predicate_value,
- const char* expected_predicate_value) {
- const char* actual_message = assertion_result.message();
- Message msg;
- msg << "Value of: " << expression_text
- << "\n Actual: " << actual_predicate_value;
- if (actual_message[0] != '\0')
- msg << " (" << actual_message << ")";
- msg << "\nExpected: " << expected_predicate_value;
- return msg.GetString();
-}
-
-// Helper function for implementing ASSERT_NEAR.
-AssertionResult DoubleNearPredFormat(const char* expr1,
- const char* expr2,
- const char* abs_error_expr,
- double val1,
- double val2,
- double abs_error) {
- const double diff = fabs(val1 - val2);
- if (diff <= abs_error) return AssertionSuccess();
-
+ }
+
+ if (ignoring_case) {
+ msg << "\nIgnoring case";
+ }
+
+ if (!lhs_value.empty() && !rhs_value.empty()) {
+ const std::vector<std::string> lhs_lines =
+ SplitEscapedString(lhs_value);
+ const std::vector<std::string> rhs_lines =
+ SplitEscapedString(rhs_value);
+ if (lhs_lines.size() > 1 || rhs_lines.size() > 1) {
+ msg << "\nWith diff:\n"
+ << edit_distance::CreateUnifiedDiff(lhs_lines, rhs_lines);
+ }
+ }
+
+ return AssertionFailure() << msg;
+}
+
+// Constructs a failure message for Boolean assertions such as EXPECT_TRUE.
+std::string GetBoolAssertionFailureMessage(
+ const AssertionResult& assertion_result,
+ const char* expression_text,
+ const char* actual_predicate_value,
+ const char* expected_predicate_value) {
+ const char* actual_message = assertion_result.message();
+ Message msg;
+ msg << "Value of: " << expression_text
+ << "\n Actual: " << actual_predicate_value;
+ if (actual_message[0] != '\0')
+ msg << " (" << actual_message << ")";
+ msg << "\nExpected: " << expected_predicate_value;
+ return msg.GetString();
+}
+
+// Helper function for implementing ASSERT_NEAR.
+AssertionResult DoubleNearPredFormat(const char* expr1,
+ const char* expr2,
+ const char* abs_error_expr,
+ double val1,
+ double val2,
+ double abs_error) {
+ const double diff = fabs(val1 - val2);
+ if (diff <= abs_error) return AssertionSuccess();
+
// Find the value which is closest to zero.
const double min_abs = std::min(fabs(val1), fabs(val2));
// Find the distance to the next double from that value.
@@ -1594,380 +1594,380 @@ AssertionResult DoubleNearPredFormat(const char* expr1,
<< ", thus making this EXPECT_NEAR check equivalent to "
"EXPECT_EQUAL. Consider using EXPECT_DOUBLE_EQ instead.";
}
- return AssertionFailure()
- << "The difference between " << expr1 << " and " << expr2
- << " is " << diff << ", which exceeds " << abs_error_expr << ", where\n"
- << expr1 << " evaluates to " << val1 << ",\n"
- << expr2 << " evaluates to " << val2 << ", and\n"
- << abs_error_expr << " evaluates to " << abs_error << ".";
-}
-
-
-// Helper template for implementing FloatLE() and DoubleLE().
-template <typename RawType>
-AssertionResult FloatingPointLE(const char* expr1,
- const char* expr2,
- RawType val1,
- RawType val2) {
- // Returns success if val1 is less than val2,
- if (val1 < val2) {
- return AssertionSuccess();
- }
-
- // or if val1 is almost equal to val2.
- const FloatingPoint<RawType> lhs(val1), rhs(val2);
- if (lhs.AlmostEquals(rhs)) {
- return AssertionSuccess();
- }
-
- // Note that the above two checks will both fail if either val1 or
- // val2 is NaN, as the IEEE floating-point standard requires that
- // any predicate involving a NaN must return false.
-
- ::std::stringstream val1_ss;
- val1_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
- << val1;
-
- ::std::stringstream val2_ss;
- val2_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
- << val2;
-
- return AssertionFailure()
- << "Expected: (" << expr1 << ") <= (" << expr2 << ")\n"
- << " Actual: " << StringStreamToString(&val1_ss) << " vs "
- << StringStreamToString(&val2_ss);
-}
-
-} // namespace internal
-
-// Asserts that val1 is less than, or almost equal to, val2. Fails
-// otherwise. In particular, it fails if either val1 or val2 is NaN.
-AssertionResult FloatLE(const char* expr1, const char* expr2,
- float val1, float val2) {
- return internal::FloatingPointLE<float>(expr1, expr2, val1, val2);
-}
-
-// Asserts that val1 is less than, or almost equal to, val2. Fails
-// otherwise. In particular, it fails if either val1 or val2 is NaN.
-AssertionResult DoubleLE(const char* expr1, const char* expr2,
- double val1, double val2) {
- return internal::FloatingPointLE<double>(expr1, expr2, val1, val2);
-}
-
-namespace internal {
-
-// The helper function for {ASSERT|EXPECT}_STREQ.
-AssertionResult CmpHelperSTREQ(const char* lhs_expression,
- const char* rhs_expression,
- const char* lhs,
- const char* rhs) {
- if (String::CStringEquals(lhs, rhs)) {
- return AssertionSuccess();
- }
-
- return EqFailure(lhs_expression,
- rhs_expression,
- PrintToString(lhs),
- PrintToString(rhs),
- false);
-}
-
-// The helper function for {ASSERT|EXPECT}_STRCASEEQ.
-AssertionResult CmpHelperSTRCASEEQ(const char* lhs_expression,
- const char* rhs_expression,
- const char* lhs,
- const char* rhs) {
- if (String::CaseInsensitiveCStringEquals(lhs, rhs)) {
- return AssertionSuccess();
- }
-
- return EqFailure(lhs_expression,
- rhs_expression,
- PrintToString(lhs),
- PrintToString(rhs),
- true);
-}
-
-// The helper function for {ASSERT|EXPECT}_STRNE.
-AssertionResult CmpHelperSTRNE(const char* s1_expression,
- const char* s2_expression,
- const char* s1,
- const char* s2) {
- if (!String::CStringEquals(s1, s2)) {
- return AssertionSuccess();
- } else {
- return AssertionFailure() << "Expected: (" << s1_expression << ") != ("
- << s2_expression << "), actual: \""
- << s1 << "\" vs \"" << s2 << "\"";
- }
-}
-
-// The helper function for {ASSERT|EXPECT}_STRCASENE.
-AssertionResult CmpHelperSTRCASENE(const char* s1_expression,
- const char* s2_expression,
- const char* s1,
- const char* s2) {
- if (!String::CaseInsensitiveCStringEquals(s1, s2)) {
- return AssertionSuccess();
- } else {
- return AssertionFailure()
- << "Expected: (" << s1_expression << ") != ("
- << s2_expression << ") (ignoring case), actual: \""
- << s1 << "\" vs \"" << s2 << "\"";
- }
-}
-
-} // namespace internal
-
-namespace {
-
-// Helper functions for implementing IsSubString() and IsNotSubstring().
-
+ return AssertionFailure()
+ << "The difference between " << expr1 << " and " << expr2
+ << " is " << diff << ", which exceeds " << abs_error_expr << ", where\n"
+ << expr1 << " evaluates to " << val1 << ",\n"
+ << expr2 << " evaluates to " << val2 << ", and\n"
+ << abs_error_expr << " evaluates to " << abs_error << ".";
+}
+
+
+// Helper template for implementing FloatLE() and DoubleLE().
+template <typename RawType>
+AssertionResult FloatingPointLE(const char* expr1,
+ const char* expr2,
+ RawType val1,
+ RawType val2) {
+ // Returns success if val1 is less than val2,
+ if (val1 < val2) {
+ return AssertionSuccess();
+ }
+
+ // or if val1 is almost equal to val2.
+ const FloatingPoint<RawType> lhs(val1), rhs(val2);
+ if (lhs.AlmostEquals(rhs)) {
+ return AssertionSuccess();
+ }
+
+ // Note that the above two checks will both fail if either val1 or
+ // val2 is NaN, as the IEEE floating-point standard requires that
+ // any predicate involving a NaN must return false.
+
+ ::std::stringstream val1_ss;
+ val1_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
+ << val1;
+
+ ::std::stringstream val2_ss;
+ val2_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
+ << val2;
+
+ return AssertionFailure()
+ << "Expected: (" << expr1 << ") <= (" << expr2 << ")\n"
+ << " Actual: " << StringStreamToString(&val1_ss) << " vs "
+ << StringStreamToString(&val2_ss);
+}
+
+} // namespace internal
+
+// Asserts that val1 is less than, or almost equal to, val2. Fails
+// otherwise. In particular, it fails if either val1 or val2 is NaN.
+AssertionResult FloatLE(const char* expr1, const char* expr2,
+ float val1, float val2) {
+ return internal::FloatingPointLE<float>(expr1, expr2, val1, val2);
+}
+
+// Asserts that val1 is less than, or almost equal to, val2. Fails
+// otherwise. In particular, it fails if either val1 or val2 is NaN.
+AssertionResult DoubleLE(const char* expr1, const char* expr2,
+ double val1, double val2) {
+ return internal::FloatingPointLE<double>(expr1, expr2, val1, val2);
+}
+
+namespace internal {
+
+// The helper function for {ASSERT|EXPECT}_STREQ.
+AssertionResult CmpHelperSTREQ(const char* lhs_expression,
+ const char* rhs_expression,
+ const char* lhs,
+ const char* rhs) {
+ if (String::CStringEquals(lhs, rhs)) {
+ return AssertionSuccess();
+ }
+
+ return EqFailure(lhs_expression,
+ rhs_expression,
+ PrintToString(lhs),
+ PrintToString(rhs),
+ false);
+}
+
+// The helper function for {ASSERT|EXPECT}_STRCASEEQ.
+AssertionResult CmpHelperSTRCASEEQ(const char* lhs_expression,
+ const char* rhs_expression,
+ const char* lhs,
+ const char* rhs) {
+ if (String::CaseInsensitiveCStringEquals(lhs, rhs)) {
+ return AssertionSuccess();
+ }
+
+ return EqFailure(lhs_expression,
+ rhs_expression,
+ PrintToString(lhs),
+ PrintToString(rhs),
+ true);
+}
+
+// The helper function for {ASSERT|EXPECT}_STRNE.
+AssertionResult CmpHelperSTRNE(const char* s1_expression,
+ const char* s2_expression,
+ const char* s1,
+ const char* s2) {
+ if (!String::CStringEquals(s1, s2)) {
+ return AssertionSuccess();
+ } else {
+ return AssertionFailure() << "Expected: (" << s1_expression << ") != ("
+ << s2_expression << "), actual: \""
+ << s1 << "\" vs \"" << s2 << "\"";
+ }
+}
+
+// The helper function for {ASSERT|EXPECT}_STRCASENE.
+AssertionResult CmpHelperSTRCASENE(const char* s1_expression,
+ const char* s2_expression,
+ const char* s1,
+ const char* s2) {
+ if (!String::CaseInsensitiveCStringEquals(s1, s2)) {
+ return AssertionSuccess();
+ } else {
+ return AssertionFailure()
+ << "Expected: (" << s1_expression << ") != ("
+ << s2_expression << ") (ignoring case), actual: \""
+ << s1 << "\" vs \"" << s2 << "\"";
+ }
+}
+
+} // namespace internal
+
+namespace {
+
+// Helper functions for implementing IsSubString() and IsNotSubstring().
+
// This group of overloaded functions return true if and only if needle
// is a substring of haystack. NULL is considered a substring of
// itself only.
-
-bool IsSubstringPred(const char* needle, const char* haystack) {
+
+bool IsSubstringPred(const char* needle, const char* haystack) {
if (needle == nullptr || haystack == nullptr) return needle == haystack;
-
+
return strstr(haystack, needle) != nullptr;
-}
-
-bool IsSubstringPred(const wchar_t* needle, const wchar_t* haystack) {
+}
+
+bool IsSubstringPred(const wchar_t* needle, const wchar_t* haystack) {
if (needle == nullptr || haystack == nullptr) return needle == haystack;
-
+
return wcsstr(haystack, needle) != nullptr;
-}
-
-// StringType here can be either ::std::string or ::std::wstring.
-template <typename StringType>
-bool IsSubstringPred(const StringType& needle,
- const StringType& haystack) {
- return haystack.find(needle) != StringType::npos;
-}
-
-// This function implements either IsSubstring() or IsNotSubstring(),
-// depending on the value of the expected_to_be_substring parameter.
-// StringType here can be const char*, const wchar_t*, ::std::string,
-// or ::std::wstring.
-template <typename StringType>
-AssertionResult IsSubstringImpl(
- bool expected_to_be_substring,
- const char* needle_expr, const char* haystack_expr,
- const StringType& needle, const StringType& haystack) {
- if (IsSubstringPred(needle, haystack) == expected_to_be_substring)
- return AssertionSuccess();
-
- const bool is_wide_string = sizeof(needle[0]) > 1;
- const char* const begin_string_quote = is_wide_string ? "L\"" : "\"";
- return AssertionFailure()
- << "Value of: " << needle_expr << "\n"
- << " Actual: " << begin_string_quote << needle << "\"\n"
- << "Expected: " << (expected_to_be_substring ? "" : "not ")
- << "a substring of " << haystack_expr << "\n"
- << "Which is: " << begin_string_quote << haystack << "\"";
-}
-
-} // namespace
-
-// IsSubstring() and IsNotSubstring() check whether needle is a
-// substring of haystack (NULL is considered a substring of itself
-// only), and return an appropriate error message when they fail.
-
-AssertionResult IsSubstring(
- const char* needle_expr, const char* haystack_expr,
- const char* needle, const char* haystack) {
- return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);
-}
-
-AssertionResult IsSubstring(
- const char* needle_expr, const char* haystack_expr,
- const wchar_t* needle, const wchar_t* haystack) {
- return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);
-}
-
-AssertionResult IsNotSubstring(
- const char* needle_expr, const char* haystack_expr,
- const char* needle, const char* haystack) {
- return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);
-}
-
-AssertionResult IsNotSubstring(
- const char* needle_expr, const char* haystack_expr,
- const wchar_t* needle, const wchar_t* haystack) {
- return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);
-}
-
-AssertionResult IsSubstring(
- const char* needle_expr, const char* haystack_expr,
- const ::std::string& needle, const ::std::string& haystack) {
- return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);
-}
-
-AssertionResult IsNotSubstring(
- const char* needle_expr, const char* haystack_expr,
- const ::std::string& needle, const ::std::string& haystack) {
- return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);
-}
-
-#if GTEST_HAS_STD_WSTRING
-AssertionResult IsSubstring(
- const char* needle_expr, const char* haystack_expr,
- const ::std::wstring& needle, const ::std::wstring& haystack) {
- return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);
-}
-
-AssertionResult IsNotSubstring(
- const char* needle_expr, const char* haystack_expr,
- const ::std::wstring& needle, const ::std::wstring& haystack) {
- return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);
-}
-#endif // GTEST_HAS_STD_WSTRING
-
-namespace internal {
-
-#if GTEST_OS_WINDOWS
-
-namespace {
-
-// Helper function for IsHRESULT{SuccessFailure} predicates
-AssertionResult HRESULTFailureHelper(const char* expr,
- const char* expected,
- long hr) { // NOLINT
+}
+
+// StringType here can be either ::std::string or ::std::wstring.
+template <typename StringType>
+bool IsSubstringPred(const StringType& needle,
+ const StringType& haystack) {
+ return haystack.find(needle) != StringType::npos;
+}
+
+// This function implements either IsSubstring() or IsNotSubstring(),
+// depending on the value of the expected_to_be_substring parameter.
+// StringType here can be const char*, const wchar_t*, ::std::string,
+// or ::std::wstring.
+template <typename StringType>
+AssertionResult IsSubstringImpl(
+ bool expected_to_be_substring,
+ const char* needle_expr, const char* haystack_expr,
+ const StringType& needle, const StringType& haystack) {
+ if (IsSubstringPred(needle, haystack) == expected_to_be_substring)
+ return AssertionSuccess();
+
+ const bool is_wide_string = sizeof(needle[0]) > 1;
+ const char* const begin_string_quote = is_wide_string ? "L\"" : "\"";
+ return AssertionFailure()
+ << "Value of: " << needle_expr << "\n"
+ << " Actual: " << begin_string_quote << needle << "\"\n"
+ << "Expected: " << (expected_to_be_substring ? "" : "not ")
+ << "a substring of " << haystack_expr << "\n"
+ << "Which is: " << begin_string_quote << haystack << "\"";
+}
+
+} // namespace
+
+// IsSubstring() and IsNotSubstring() check whether needle is a
+// substring of haystack (NULL is considered a substring of itself
+// only), and return an appropriate error message when they fail.
+
+AssertionResult IsSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const char* needle, const char* haystack) {
+ return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);
+}
+
+AssertionResult IsSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const wchar_t* needle, const wchar_t* haystack) {
+ return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);
+}
+
+AssertionResult IsNotSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const char* needle, const char* haystack) {
+ return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);
+}
+
+AssertionResult IsNotSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const wchar_t* needle, const wchar_t* haystack) {
+ return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);
+}
+
+AssertionResult IsSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const ::std::string& needle, const ::std::string& haystack) {
+ return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);
+}
+
+AssertionResult IsNotSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const ::std::string& needle, const ::std::string& haystack) {
+ return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);
+}
+
+#if GTEST_HAS_STD_WSTRING
+AssertionResult IsSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const ::std::wstring& needle, const ::std::wstring& haystack) {
+ return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);
+}
+
+AssertionResult IsNotSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const ::std::wstring& needle, const ::std::wstring& haystack) {
+ return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);
+}
+#endif // GTEST_HAS_STD_WSTRING
+
+namespace internal {
+
+#if GTEST_OS_WINDOWS
+
+namespace {
+
+// Helper function for IsHRESULT{SuccessFailure} predicates
+AssertionResult HRESULTFailureHelper(const char* expr,
+ const char* expected,
+ long hr) { // NOLINT
# if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_WINDOWS_TV_TITLE
-
- // Windows CE doesn't support FormatMessage.
- const char error_text[] = "";
-
-# else
-
- // Looks up the human-readable system message for the HRESULT code
- // and since we're not passing any params to FormatMessage, we don't
- // want inserts expanded.
- const DWORD kFlags = FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS;
- const DWORD kBufSize = 4096;
- // Gets the system's human readable message string for this HRESULT.
- char error_text[kBufSize] = { '\0' };
- DWORD message_length = ::FormatMessageA(kFlags,
+
+ // Windows CE doesn't support FormatMessage.
+ const char error_text[] = "";
+
+# else
+
+ // Looks up the human-readable system message for the HRESULT code
+ // and since we're not passing any params to FormatMessage, we don't
+ // want inserts expanded.
+ const DWORD kFlags = FORMAT_MESSAGE_FROM_SYSTEM |
+ FORMAT_MESSAGE_IGNORE_INSERTS;
+ const DWORD kBufSize = 4096;
+ // Gets the system's human readable message string for this HRESULT.
+ char error_text[kBufSize] = { '\0' };
+ DWORD message_length = ::FormatMessageA(kFlags,
0, // no source, we're asking system
static_cast<DWORD>(hr), // the error
0, // no line width restrictions
- error_text, // output buffer
+ error_text, // output buffer
kBufSize, // buf size
nullptr); // no arguments for inserts
- // Trims tailing white space (FormatMessage leaves a trailing CR-LF)
- for (; message_length && IsSpace(error_text[message_length - 1]);
- --message_length) {
- error_text[message_length - 1] = '\0';
- }
-
-# endif // GTEST_OS_WINDOWS_MOBILE
-
- const std::string error_hex("0x" + String::FormatHexInt(hr));
- return ::testing::AssertionFailure()
- << "Expected: " << expr << " " << expected << ".\n"
- << " Actual: " << error_hex << " " << error_text << "\n";
-}
-
-} // namespace
-
-AssertionResult IsHRESULTSuccess(const char* expr, long hr) { // NOLINT
- if (SUCCEEDED(hr)) {
- return AssertionSuccess();
- }
- return HRESULTFailureHelper(expr, "succeeds", hr);
-}
-
-AssertionResult IsHRESULTFailure(const char* expr, long hr) { // NOLINT
- if (FAILED(hr)) {
- return AssertionSuccess();
- }
- return HRESULTFailureHelper(expr, "fails", hr);
-}
-
-#endif // GTEST_OS_WINDOWS
-
-// Utility functions for encoding Unicode text (wide strings) in
-// UTF-8.
-
+ // Trims tailing white space (FormatMessage leaves a trailing CR-LF)
+ for (; message_length && IsSpace(error_text[message_length - 1]);
+ --message_length) {
+ error_text[message_length - 1] = '\0';
+ }
+
+# endif // GTEST_OS_WINDOWS_MOBILE
+
+ const std::string error_hex("0x" + String::FormatHexInt(hr));
+ return ::testing::AssertionFailure()
+ << "Expected: " << expr << " " << expected << ".\n"
+ << " Actual: " << error_hex << " " << error_text << "\n";
+}
+
+} // namespace
+
+AssertionResult IsHRESULTSuccess(const char* expr, long hr) { // NOLINT
+ if (SUCCEEDED(hr)) {
+ return AssertionSuccess();
+ }
+ return HRESULTFailureHelper(expr, "succeeds", hr);
+}
+
+AssertionResult IsHRESULTFailure(const char* expr, long hr) { // NOLINT
+ if (FAILED(hr)) {
+ return AssertionSuccess();
+ }
+ return HRESULTFailureHelper(expr, "fails", hr);
+}
+
+#endif // GTEST_OS_WINDOWS
+
+// Utility functions for encoding Unicode text (wide strings) in
+// UTF-8.
+
// A Unicode code-point can have up to 21 bits, and is encoded in UTF-8
-// like this:
-//
-// Code-point length Encoding
-// 0 - 7 bits 0xxxxxxx
-// 8 - 11 bits 110xxxxx 10xxxxxx
-// 12 - 16 bits 1110xxxx 10xxxxxx 10xxxxxx
-// 17 - 21 bits 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
-
-// The maximum code-point a one-byte UTF-8 sequence can represent.
+// like this:
+//
+// Code-point length Encoding
+// 0 - 7 bits 0xxxxxxx
+// 8 - 11 bits 110xxxxx 10xxxxxx
+// 12 - 16 bits 1110xxxx 10xxxxxx 10xxxxxx
+// 17 - 21 bits 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
+
+// The maximum code-point a one-byte UTF-8 sequence can represent.
constexpr uint32_t kMaxCodePoint1 = (static_cast<uint32_t>(1) << 7) - 1;
-
-// The maximum code-point a two-byte UTF-8 sequence can represent.
+
+// The maximum code-point a two-byte UTF-8 sequence can represent.
constexpr uint32_t kMaxCodePoint2 = (static_cast<uint32_t>(1) << (5 + 6)) - 1;
-
-// The maximum code-point a three-byte UTF-8 sequence can represent.
+
+// The maximum code-point a three-byte UTF-8 sequence can represent.
constexpr uint32_t kMaxCodePoint3 = (static_cast<uint32_t>(1) << (4 + 2*6)) - 1;
-
-// The maximum code-point a four-byte UTF-8 sequence can represent.
+
+// The maximum code-point a four-byte UTF-8 sequence can represent.
constexpr uint32_t kMaxCodePoint4 = (static_cast<uint32_t>(1) << (3 + 3*6)) - 1;
-
-// Chops off the n lowest bits from a bit pattern. Returns the n
-// lowest bits. As a side effect, the original bit pattern will be
-// shifted to the right by n bits.
+
+// Chops off the n lowest bits from a bit pattern. Returns the n
+// lowest bits. As a side effect, the original bit pattern will be
+// shifted to the right by n bits.
inline uint32_t ChopLowBits(uint32_t* bits, int n) {
const uint32_t low_bits = *bits & ((static_cast<uint32_t>(1) << n) - 1);
- *bits >>= n;
- return low_bits;
-}
-
-// Converts a Unicode code point to a narrow string in UTF-8 encoding.
+ *bits >>= n;
+ return low_bits;
+}
+
+// Converts a Unicode code point to a narrow string in UTF-8 encoding.
// code_point parameter is of type uint32_t because wchar_t may not be
-// wide enough to contain a code point.
-// If the code_point is not a valid Unicode code point
-// (i.e. outside of Unicode range U+0 to U+10FFFF) it will be converted
-// to "(Invalid Unicode 0xXXXXXXXX)".
+// wide enough to contain a code point.
+// If the code_point is not a valid Unicode code point
+// (i.e. outside of Unicode range U+0 to U+10FFFF) it will be converted
+// to "(Invalid Unicode 0xXXXXXXXX)".
std::string CodePointToUtf8(uint32_t code_point) {
- if (code_point > kMaxCodePoint4) {
+ if (code_point > kMaxCodePoint4) {
return "(Invalid Unicode 0x" + String::FormatHexUInt32(code_point) + ")";
- }
-
- char str[5]; // Big enough for the largest valid code point.
- if (code_point <= kMaxCodePoint1) {
- str[1] = '\0';
- str[0] = static_cast<char>(code_point); // 0xxxxxxx
- } else if (code_point <= kMaxCodePoint2) {
- str[2] = '\0';
- str[1] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
- str[0] = static_cast<char>(0xC0 | code_point); // 110xxxxx
- } else if (code_point <= kMaxCodePoint3) {
- str[3] = '\0';
- str[2] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
- str[1] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
- str[0] = static_cast<char>(0xE0 | code_point); // 1110xxxx
- } else { // code_point <= kMaxCodePoint4
- str[4] = '\0';
- str[3] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
- str[2] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
- str[1] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
- str[0] = static_cast<char>(0xF0 | code_point); // 11110xxx
- }
- return str;
-}
-
+ }
+
+ char str[5]; // Big enough for the largest valid code point.
+ if (code_point <= kMaxCodePoint1) {
+ str[1] = '\0';
+ str[0] = static_cast<char>(code_point); // 0xxxxxxx
+ } else if (code_point <= kMaxCodePoint2) {
+ str[2] = '\0';
+ str[1] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
+ str[0] = static_cast<char>(0xC0 | code_point); // 110xxxxx
+ } else if (code_point <= kMaxCodePoint3) {
+ str[3] = '\0';
+ str[2] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
+ str[1] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
+ str[0] = static_cast<char>(0xE0 | code_point); // 1110xxxx
+ } else { // code_point <= kMaxCodePoint4
+ str[4] = '\0';
+ str[3] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
+ str[2] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
+ str[1] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
+ str[0] = static_cast<char>(0xF0 | code_point); // 11110xxx
+ }
+ return str;
+}
+
// The following two functions only make sense if the system
-// uses UTF-16 for wide string encoding. All supported systems
+// uses UTF-16 for wide string encoding. All supported systems
// with 16 bit wchar_t (Windows, Cygwin) do use UTF-16.
-
-// Determines if the arguments constitute UTF-16 surrogate pair
-// and thus should be combined into a single Unicode code point
-// using CreateCodePointFromUtf16SurrogatePair.
-inline bool IsUtf16SurrogatePair(wchar_t first, wchar_t second) {
- return sizeof(wchar_t) == 2 &&
- (first & 0xFC00) == 0xD800 && (second & 0xFC00) == 0xDC00;
-}
-
-// Creates a Unicode code point from UTF16 surrogate pair.
+
+// Determines if the arguments constitute UTF-16 surrogate pair
+// and thus should be combined into a single Unicode code point
+// using CreateCodePointFromUtf16SurrogatePair.
+inline bool IsUtf16SurrogatePair(wchar_t first, wchar_t second) {
+ return sizeof(wchar_t) == 2 &&
+ (first & 0xFC00) == 0xD800 && (second & 0xFC00) == 0xDC00;
+}
+
+// Creates a Unicode code point from UTF16 surrogate pair.
inline uint32_t CreateCodePointFromUtf16SurrogatePair(wchar_t first,
wchar_t second) {
const auto first_u = static_cast<uint32_t>(first);
@@ -1979,109 +1979,109 @@ inline uint32_t CreateCodePointFromUtf16SurrogatePair(wchar_t first,
// This function should not be called when the condition is
// false, but we provide a sensible default in case it is.
first_u;
-}
-
-// Converts a wide string to a narrow string in UTF-8 encoding.
-// The wide string is assumed to have the following encoding:
+}
+
+// Converts a wide string to a narrow string in UTF-8 encoding.
+// The wide string is assumed to have the following encoding:
// UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin)
-// UTF-32 if sizeof(wchar_t) == 4 (on Linux)
-// Parameter str points to a null-terminated wide string.
-// Parameter num_chars may additionally limit the number
-// of wchar_t characters processed. -1 is used when the entire string
-// should be processed.
-// If the string contains code points that are not valid Unicode code points
-// (i.e. outside of Unicode range U+0 to U+10FFFF) they will be output
-// as '(Invalid Unicode 0xXXXXXXXX)'. If the string is in UTF16 encoding
-// and contains invalid UTF-16 surrogate pairs, values in those pairs
-// will be encoded as individual Unicode characters from Basic Normal Plane.
-std::string WideStringToUtf8(const wchar_t* str, int num_chars) {
- if (num_chars == -1)
- num_chars = static_cast<int>(wcslen(str));
-
- ::std::stringstream stream;
- for (int i = 0; i < num_chars; ++i) {
+// UTF-32 if sizeof(wchar_t) == 4 (on Linux)
+// Parameter str points to a null-terminated wide string.
+// Parameter num_chars may additionally limit the number
+// of wchar_t characters processed. -1 is used when the entire string
+// should be processed.
+// If the string contains code points that are not valid Unicode code points
+// (i.e. outside of Unicode range U+0 to U+10FFFF) they will be output
+// as '(Invalid Unicode 0xXXXXXXXX)'. If the string is in UTF16 encoding
+// and contains invalid UTF-16 surrogate pairs, values in those pairs
+// will be encoded as individual Unicode characters from Basic Normal Plane.
+std::string WideStringToUtf8(const wchar_t* str, int num_chars) {
+ if (num_chars == -1)
+ num_chars = static_cast<int>(wcslen(str));
+
+ ::std::stringstream stream;
+ for (int i = 0; i < num_chars; ++i) {
uint32_t unicode_code_point;
-
- if (str[i] == L'\0') {
- break;
- } else if (i + 1 < num_chars && IsUtf16SurrogatePair(str[i], str[i + 1])) {
- unicode_code_point = CreateCodePointFromUtf16SurrogatePair(str[i],
- str[i + 1]);
- i++;
- } else {
+
+ if (str[i] == L'\0') {
+ break;
+ } else if (i + 1 < num_chars && IsUtf16SurrogatePair(str[i], str[i + 1])) {
+ unicode_code_point = CreateCodePointFromUtf16SurrogatePair(str[i],
+ str[i + 1]);
+ i++;
+ } else {
unicode_code_point = static_cast<uint32_t>(str[i]);
- }
-
- stream << CodePointToUtf8(unicode_code_point);
- }
- return StringStreamToString(&stream);
-}
-
-// Converts a wide C string to an std::string using the UTF-8 encoding.
-// NULL will be converted to "(null)".
-std::string String::ShowWideCString(const wchar_t * wide_c_str) {
+ }
+
+ stream << CodePointToUtf8(unicode_code_point);
+ }
+ return StringStreamToString(&stream);
+}
+
+// Converts a wide C string to an std::string using the UTF-8 encoding.
+// NULL will be converted to "(null)".
+std::string String::ShowWideCString(const wchar_t * wide_c_str) {
if (wide_c_str == nullptr) return "(null)";
-
- return internal::WideStringToUtf8(wide_c_str, -1);
-}
-
+
+ return internal::WideStringToUtf8(wide_c_str, -1);
+}
+
// Compares two wide C strings. Returns true if and only if they have the
// same content.
-//
-// Unlike wcscmp(), this function can handle NULL argument(s). A NULL
-// C string is considered different to any non-NULL C string,
-// including the empty string.
-bool String::WideCStringEquals(const wchar_t * lhs, const wchar_t * rhs) {
+//
+// Unlike wcscmp(), this function can handle NULL argument(s). A NULL
+// C string is considered different to any non-NULL C string,
+// including the empty string.
+bool String::WideCStringEquals(const wchar_t * lhs, const wchar_t * rhs) {
if (lhs == nullptr) return rhs == nullptr;
-
+
if (rhs == nullptr) return false;
-
- return wcscmp(lhs, rhs) == 0;
-}
-
-// Helper function for *_STREQ on wide strings.
-AssertionResult CmpHelperSTREQ(const char* lhs_expression,
- const char* rhs_expression,
- const wchar_t* lhs,
- const wchar_t* rhs) {
- if (String::WideCStringEquals(lhs, rhs)) {
- return AssertionSuccess();
- }
-
- return EqFailure(lhs_expression,
- rhs_expression,
- PrintToString(lhs),
- PrintToString(rhs),
- false);
-}
-
-// Helper function for *_STRNE on wide strings.
-AssertionResult CmpHelperSTRNE(const char* s1_expression,
- const char* s2_expression,
- const wchar_t* s1,
- const wchar_t* s2) {
- if (!String::WideCStringEquals(s1, s2)) {
- return AssertionSuccess();
- }
-
- return AssertionFailure() << "Expected: (" << s1_expression << ") != ("
- << s2_expression << "), actual: "
- << PrintToString(s1)
- << " vs " << PrintToString(s2);
-}
-
+
+ return wcscmp(lhs, rhs) == 0;
+}
+
+// Helper function for *_STREQ on wide strings.
+AssertionResult CmpHelperSTREQ(const char* lhs_expression,
+ const char* rhs_expression,
+ const wchar_t* lhs,
+ const wchar_t* rhs) {
+ if (String::WideCStringEquals(lhs, rhs)) {
+ return AssertionSuccess();
+ }
+
+ return EqFailure(lhs_expression,
+ rhs_expression,
+ PrintToString(lhs),
+ PrintToString(rhs),
+ false);
+}
+
+// Helper function for *_STRNE on wide strings.
+AssertionResult CmpHelperSTRNE(const char* s1_expression,
+ const char* s2_expression,
+ const wchar_t* s1,
+ const wchar_t* s2) {
+ if (!String::WideCStringEquals(s1, s2)) {
+ return AssertionSuccess();
+ }
+
+ return AssertionFailure() << "Expected: (" << s1_expression << ") != ("
+ << s2_expression << "), actual: "
+ << PrintToString(s1)
+ << " vs " << PrintToString(s2);
+}
+
// Compares two C strings, ignoring case. Returns true if and only if they have
-// the same content.
-//
-// Unlike strcasecmp(), this function can handle NULL argument(s). A
-// NULL C string is considered different to any non-NULL C string,
-// including the empty string.
-bool String::CaseInsensitiveCStringEquals(const char * lhs, const char * rhs) {
+// the same content.
+//
+// Unlike strcasecmp(), this function can handle NULL argument(s). A
+// NULL C string is considered different to any non-NULL C string,
+// including the empty string.
+bool String::CaseInsensitiveCStringEquals(const char * lhs, const char * rhs) {
if (lhs == nullptr) return rhs == nullptr;
if (rhs == nullptr) return false;
- return posix::StrCaseCmp(lhs, rhs) == 0;
-}
-
+ return posix::StrCaseCmp(lhs, rhs) == 0;
+}
+
// Compares two wide C strings, ignoring case. Returns true if and only if they
// have the same content.
//
@@ -2094,188 +2094,188 @@ bool String::CaseInsensitiveCStringEquals(const char * lhs, const char * rhs) {
// which compares according to LC_CTYPE category of the current locale.
// On MacOS X, it uses towlower, which also uses LC_CTYPE category of the
// current locale.
-bool String::CaseInsensitiveWideCStringEquals(const wchar_t* lhs,
- const wchar_t* rhs) {
+bool String::CaseInsensitiveWideCStringEquals(const wchar_t* lhs,
+ const wchar_t* rhs) {
if (lhs == nullptr) return rhs == nullptr;
-
+
if (rhs == nullptr) return false;
-
-#if GTEST_OS_WINDOWS
- return _wcsicmp(lhs, rhs) == 0;
-#elif GTEST_OS_LINUX && !GTEST_OS_LINUX_ANDROID
- return wcscasecmp(lhs, rhs) == 0;
-#else
- // Android, Mac OS X and Cygwin don't define wcscasecmp.
- // Other unknown OSes may not define it either.
- wint_t left, right;
- do {
+
+#if GTEST_OS_WINDOWS
+ return _wcsicmp(lhs, rhs) == 0;
+#elif GTEST_OS_LINUX && !GTEST_OS_LINUX_ANDROID
+ return wcscasecmp(lhs, rhs) == 0;
+#else
+ // Android, Mac OS X and Cygwin don't define wcscasecmp.
+ // Other unknown OSes may not define it either.
+ wint_t left, right;
+ do {
left = towlower(static_cast<wint_t>(*lhs++));
right = towlower(static_cast<wint_t>(*rhs++));
- } while (left && left == right);
- return left == right;
-#endif // OS selector
-}
-
+ } while (left && left == right);
+ return left == right;
+#endif // OS selector
+}
+
// Returns true if and only if str ends with the given suffix, ignoring case.
-// Any string is considered to end with an empty suffix.
-bool String::EndsWithCaseInsensitive(
- const std::string& str, const std::string& suffix) {
- const size_t str_len = str.length();
- const size_t suffix_len = suffix.length();
- return (str_len >= suffix_len) &&
- CaseInsensitiveCStringEquals(str.c_str() + str_len - suffix_len,
- suffix.c_str());
-}
-
-// Formats an int value as "%02d".
-std::string String::FormatIntWidth2(int value) {
+// Any string is considered to end with an empty suffix.
+bool String::EndsWithCaseInsensitive(
+ const std::string& str, const std::string& suffix) {
+ const size_t str_len = str.length();
+ const size_t suffix_len = suffix.length();
+ return (str_len >= suffix_len) &&
+ CaseInsensitiveCStringEquals(str.c_str() + str_len - suffix_len,
+ suffix.c_str());
+}
+
+// Formats an int value as "%02d".
+std::string String::FormatIntWidth2(int value) {
return FormatIntWidthN(value, 2);
}
// Formats an int value to given width with leading zeros.
std::string String::FormatIntWidthN(int value, int width) {
- std::stringstream ss;
+ std::stringstream ss;
ss << std::setfill('0') << std::setw(width) << value;
- return ss.str();
-}
-
-// Formats an int value as "%X".
+ return ss.str();
+}
+
+// Formats an int value as "%X".
std::string String::FormatHexUInt32(uint32_t value) {
- std::stringstream ss;
- ss << std::hex << std::uppercase << value;
- return ss.str();
-}
-
+ std::stringstream ss;
+ ss << std::hex << std::uppercase << value;
+ return ss.str();
+}
+
// Formats an int value as "%X".
std::string String::FormatHexInt(int value) {
return FormatHexUInt32(static_cast<uint32_t>(value));
}
-// Formats a byte as "%02X".
-std::string String::FormatByte(unsigned char value) {
- std::stringstream ss;
- ss << std::setfill('0') << std::setw(2) << std::hex << std::uppercase
- << static_cast<unsigned int>(value);
- return ss.str();
-}
-
-// Converts the buffer in a stringstream to an std::string, converting NUL
-// bytes to "\\0" along the way.
-std::string StringStreamToString(::std::stringstream* ss) {
- const ::std::string& str = ss->str();
- const char* const start = str.c_str();
- const char* const end = start + str.length();
-
- std::string result;
+// Formats a byte as "%02X".
+std::string String::FormatByte(unsigned char value) {
+ std::stringstream ss;
+ ss << std::setfill('0') << std::setw(2) << std::hex << std::uppercase
+ << static_cast<unsigned int>(value);
+ return ss.str();
+}
+
+// Converts the buffer in a stringstream to an std::string, converting NUL
+// bytes to "\\0" along the way.
+std::string StringStreamToString(::std::stringstream* ss) {
+ const ::std::string& str = ss->str();
+ const char* const start = str.c_str();
+ const char* const end = start + str.length();
+
+ std::string result;
result.reserve(static_cast<size_t>(2 * (end - start)));
- for (const char* ch = start; ch != end; ++ch) {
- if (*ch == '\0') {
- result += "\\0"; // Replaces NUL with "\\0";
- } else {
- result += *ch;
- }
- }
-
- return result;
-}
-
-// Appends the user-supplied message to the Google-Test-generated message.
-std::string AppendUserMessage(const std::string& gtest_msg,
- const Message& user_msg) {
- // Appends the user message if it's non-empty.
- const std::string user_msg_string = user_msg.GetString();
- if (user_msg_string.empty()) {
- return gtest_msg;
- }
+ for (const char* ch = start; ch != end; ++ch) {
+ if (*ch == '\0') {
+ result += "\\0"; // Replaces NUL with "\\0";
+ } else {
+ result += *ch;
+ }
+ }
+
+ return result;
+}
+
+// Appends the user-supplied message to the Google-Test-generated message.
+std::string AppendUserMessage(const std::string& gtest_msg,
+ const Message& user_msg) {
+ // Appends the user message if it's non-empty.
+ const std::string user_msg_string = user_msg.GetString();
+ if (user_msg_string.empty()) {
+ return gtest_msg;
+ }
if (gtest_msg.empty()) {
return user_msg_string;
}
- return gtest_msg + "\n" + user_msg_string;
-}
-
-} // namespace internal
-
-// class TestResult
-
-// Creates an empty TestResult.
-TestResult::TestResult()
+ return gtest_msg + "\n" + user_msg_string;
+}
+
+} // namespace internal
+
+// class TestResult
+
+// Creates an empty TestResult.
+TestResult::TestResult()
: death_test_count_(0), start_timestamp_(0), elapsed_time_(0) {}
-
-// D'tor.
-TestResult::~TestResult() {
-}
-
-// Returns the i-th test part result among all the results. i can
-// range from 0 to total_part_count() - 1. If i is not in that range,
-// aborts the program.
-const TestPartResult& TestResult::GetTestPartResult(int i) const {
- if (i < 0 || i >= total_part_count())
- internal::posix::Abort();
+
+// D'tor.
+TestResult::~TestResult() {
+}
+
+// Returns the i-th test part result among all the results. i can
+// range from 0 to total_part_count() - 1. If i is not in that range,
+// aborts the program.
+const TestPartResult& TestResult::GetTestPartResult(int i) const {
+ if (i < 0 || i >= total_part_count())
+ internal::posix::Abort();
return test_part_results_.at(static_cast<size_t>(i));
-}
-
-// Returns the i-th test property. i can range from 0 to
-// test_property_count() - 1. If i is not in that range, aborts the
-// program.
-const TestProperty& TestResult::GetTestProperty(int i) const {
- if (i < 0 || i >= test_property_count())
- internal::posix::Abort();
+}
+
+// Returns the i-th test property. i can range from 0 to
+// test_property_count() - 1. If i is not in that range, aborts the
+// program.
+const TestProperty& TestResult::GetTestProperty(int i) const {
+ if (i < 0 || i >= test_property_count())
+ internal::posix::Abort();
return test_properties_.at(static_cast<size_t>(i));
-}
-
-// Clears the test part results.
-void TestResult::ClearTestPartResults() {
- test_part_results_.clear();
-}
-
-// Adds a test part result to the list.
-void TestResult::AddTestPartResult(const TestPartResult& test_part_result) {
- test_part_results_.push_back(test_part_result);
-}
-
-// Adds a test property to the list. If a property with the same key as the
-// supplied property is already represented, the value of this test_property
-// replaces the old value for that key.
-void TestResult::RecordProperty(const std::string& xml_element,
- const TestProperty& test_property) {
- if (!ValidateTestProperty(xml_element, test_property)) {
- return;
- }
+}
+
+// Clears the test part results.
+void TestResult::ClearTestPartResults() {
+ test_part_results_.clear();
+}
+
+// Adds a test part result to the list.
+void TestResult::AddTestPartResult(const TestPartResult& test_part_result) {
+ test_part_results_.push_back(test_part_result);
+}
+
+// Adds a test property to the list. If a property with the same key as the
+// supplied property is already represented, the value of this test_property
+// replaces the old value for that key.
+void TestResult::RecordProperty(const std::string& xml_element,
+ const TestProperty& test_property) {
+ if (!ValidateTestProperty(xml_element, test_property)) {
+ return;
+ }
internal::MutexLock lock(&test_properties_mutex_);
- const std::vector<TestProperty>::iterator property_with_matching_key =
- std::find_if(test_properties_.begin(), test_properties_.end(),
- internal::TestPropertyKeyIs(test_property.key()));
- if (property_with_matching_key == test_properties_.end()) {
- test_properties_.push_back(test_property);
- return;
- }
- property_with_matching_key->SetValue(test_property.value());
-}
-
-// The list of reserved attributes used in the <testsuites> element of XML
-// output.
-static const char* const kReservedTestSuitesAttributes[] = {
- "disabled",
- "errors",
- "failures",
- "name",
- "random_seed",
- "tests",
- "time",
- "timestamp"
-};
-
-// The list of reserved attributes used in the <testsuite> element of XML
-// output.
-static const char* const kReservedTestSuiteAttributes[] = {
+ const std::vector<TestProperty>::iterator property_with_matching_key =
+ std::find_if(test_properties_.begin(), test_properties_.end(),
+ internal::TestPropertyKeyIs(test_property.key()));
+ if (property_with_matching_key == test_properties_.end()) {
+ test_properties_.push_back(test_property);
+ return;
+ }
+ property_with_matching_key->SetValue(test_property.value());
+}
+
+// The list of reserved attributes used in the <testsuites> element of XML
+// output.
+static const char* const kReservedTestSuitesAttributes[] = {
+ "disabled",
+ "errors",
+ "failures",
+ "name",
+ "random_seed",
+ "tests",
+ "time",
+ "timestamp"
+};
+
+// The list of reserved attributes used in the <testsuite> element of XML
+// output.
+static const char* const kReservedTestSuiteAttributes[] = {
"disabled", "errors", "failures", "name",
"tests", "time", "timestamp", "skipped"};
-
-// The list of reserved attributes used in the <testcase> element of XML output.
-static const char* const kReservedTestCaseAttributes[] = {
+
+// The list of reserved attributes used in the <testcase> element of XML output.
+static const char* const kReservedTestCaseAttributes[] = {
"classname", "name", "status", "time", "type_param",
"value_param", "file", "line"};
-
+
// Use a slightly different set for allowed output to ensure existing tests can
// still RecordProperty("result") or "RecordProperty(timestamp")
static const char* const kReservedOutputTestCaseAttributes[] = {
@@ -2283,25 +2283,25 @@ static const char* const kReservedOutputTestCaseAttributes[] = {
"value_param", "file", "line", "result", "timestamp"};
template <size_t kSize>
-std::vector<std::string> ArrayAsVector(const char* const (&array)[kSize]) {
- return std::vector<std::string>(array, array + kSize);
-}
-
-static std::vector<std::string> GetReservedAttributesForElement(
- const std::string& xml_element) {
- if (xml_element == "testsuites") {
- return ArrayAsVector(kReservedTestSuitesAttributes);
- } else if (xml_element == "testsuite") {
- return ArrayAsVector(kReservedTestSuiteAttributes);
- } else if (xml_element == "testcase") {
- return ArrayAsVector(kReservedTestCaseAttributes);
- } else {
- GTEST_CHECK_(false) << "Unrecognized xml_element provided: " << xml_element;
- }
- // This code is unreachable but some compilers may not realizes that.
- return std::vector<std::string>();
-}
-
+std::vector<std::string> ArrayAsVector(const char* const (&array)[kSize]) {
+ return std::vector<std::string>(array, array + kSize);
+}
+
+static std::vector<std::string> GetReservedAttributesForElement(
+ const std::string& xml_element) {
+ if (xml_element == "testsuites") {
+ return ArrayAsVector(kReservedTestSuitesAttributes);
+ } else if (xml_element == "testsuite") {
+ return ArrayAsVector(kReservedTestSuiteAttributes);
+ } else if (xml_element == "testcase") {
+ return ArrayAsVector(kReservedTestCaseAttributes);
+ } else {
+ GTEST_CHECK_(false) << "Unrecognized xml_element provided: " << xml_element;
+ }
+ // This code is unreachable but some compilers may not realizes that.
+ return std::vector<std::string>();
+}
+
// TODO(jdesprez): Merge the two getReserved attributes once skip is improved
static std::vector<std::string> GetReservedOutputAttributesForElement(
const std::string& xml_element) {
@@ -2318,49 +2318,49 @@ static std::vector<std::string> GetReservedOutputAttributesForElement(
return std::vector<std::string>();
}
-static std::string FormatWordList(const std::vector<std::string>& words) {
- Message word_list;
- for (size_t i = 0; i < words.size(); ++i) {
- if (i > 0 && words.size() > 2) {
- word_list << ", ";
- }
- if (i == words.size() - 1) {
- word_list << "and ";
- }
- word_list << "'" << words[i] << "'";
- }
- return word_list.GetString();
-}
-
+static std::string FormatWordList(const std::vector<std::string>& words) {
+ Message word_list;
+ for (size_t i = 0; i < words.size(); ++i) {
+ if (i > 0 && words.size() > 2) {
+ word_list << ", ";
+ }
+ if (i == words.size() - 1) {
+ word_list << "and ";
+ }
+ word_list << "'" << words[i] << "'";
+ }
+ return word_list.GetString();
+}
+
static bool ValidateTestPropertyName(
const std::string& property_name,
const std::vector<std::string>& reserved_names) {
- if (std::find(reserved_names.begin(), reserved_names.end(), property_name) !=
- reserved_names.end()) {
- ADD_FAILURE() << "Reserved key used in RecordProperty(): " << property_name
- << " (" << FormatWordList(reserved_names)
- << " are reserved by " << GTEST_NAME_ << ")";
- return false;
- }
- return true;
-}
-
-// Adds a failure if the key is a reserved attribute of the element named
-// xml_element. Returns true if the property is valid.
-bool TestResult::ValidateTestProperty(const std::string& xml_element,
- const TestProperty& test_property) {
- return ValidateTestPropertyName(test_property.key(),
- GetReservedAttributesForElement(xml_element));
-}
-
-// Clears the object.
-void TestResult::Clear() {
- test_part_results_.clear();
- test_properties_.clear();
- death_test_count_ = 0;
- elapsed_time_ = 0;
-}
-
+ if (std::find(reserved_names.begin(), reserved_names.end(), property_name) !=
+ reserved_names.end()) {
+ ADD_FAILURE() << "Reserved key used in RecordProperty(): " << property_name
+ << " (" << FormatWordList(reserved_names)
+ << " are reserved by " << GTEST_NAME_ << ")";
+ return false;
+ }
+ return true;
+}
+
+// Adds a failure if the key is a reserved attribute of the element named
+// xml_element. Returns true if the property is valid.
+bool TestResult::ValidateTestProperty(const std::string& xml_element,
+ const TestProperty& test_property) {
+ return ValidateTestPropertyName(test_property.key(),
+ GetReservedAttributesForElement(xml_element));
+}
+
+// Clears the object.
+void TestResult::Clear() {
+ test_part_results_.clear();
+ test_properties_.clear();
+ death_test_count_ = 0;
+ elapsed_time_ = 0;
+}
+
// Returns true off the test part was skipped.
static bool TestPartSkipped(const TestPartResult& result) {
return result.skipped();
@@ -2372,512 +2372,512 @@ bool TestResult::Skipped() const {
}
// Returns true if and only if the test failed.
-bool TestResult::Failed() const {
- for (int i = 0; i < total_part_count(); ++i) {
- if (GetTestPartResult(i).failed())
- return true;
- }
- return false;
-}
-
+bool TestResult::Failed() const {
+ for (int i = 0; i < total_part_count(); ++i) {
+ if (GetTestPartResult(i).failed())
+ return true;
+ }
+ return false;
+}
+
// Returns true if and only if the test part fatally failed.
-static bool TestPartFatallyFailed(const TestPartResult& result) {
- return result.fatally_failed();
-}
-
+static bool TestPartFatallyFailed(const TestPartResult& result) {
+ return result.fatally_failed();
+}
+
// Returns true if and only if the test fatally failed.
-bool TestResult::HasFatalFailure() const {
- return CountIf(test_part_results_, TestPartFatallyFailed) > 0;
-}
-
+bool TestResult::HasFatalFailure() const {
+ return CountIf(test_part_results_, TestPartFatallyFailed) > 0;
+}
+
// Returns true if and only if the test part non-fatally failed.
-static bool TestPartNonfatallyFailed(const TestPartResult& result) {
- return result.nonfatally_failed();
-}
-
+static bool TestPartNonfatallyFailed(const TestPartResult& result) {
+ return result.nonfatally_failed();
+}
+
// Returns true if and only if the test has a non-fatal failure.
-bool TestResult::HasNonfatalFailure() const {
- return CountIf(test_part_results_, TestPartNonfatallyFailed) > 0;
-}
-
-// Gets the number of all test parts. This is the sum of the number
-// of successful test parts and the number of failed test parts.
-int TestResult::total_part_count() const {
- return static_cast<int>(test_part_results_.size());
-}
-
-// Returns the number of the test properties.
-int TestResult::test_property_count() const {
- return static_cast<int>(test_properties_.size());
-}
-
-// class Test
-
-// Creates a Test object.
-
-// The c'tor saves the states of all flags.
-Test::Test()
- : gtest_flag_saver_(new GTEST_FLAG_SAVER_) {
-}
-
-// The d'tor restores the states of all flags. The actual work is
-// done by the d'tor of the gtest_flag_saver_ field, and thus not
-// visible here.
-Test::~Test() {
-}
-
-// Sets up the test fixture.
-//
-// A sub-class may override this.
-void Test::SetUp() {
-}
-
-// Tears down the test fixture.
-//
-// A sub-class may override this.
-void Test::TearDown() {
-}
-
-// Allows user supplied key value pairs to be recorded for later output.
-void Test::RecordProperty(const std::string& key, const std::string& value) {
- UnitTest::GetInstance()->RecordProperty(key, value);
-}
-
-// Allows user supplied key value pairs to be recorded for later output.
-void Test::RecordProperty(const std::string& key, int value) {
- Message value_message;
- value_message << value;
- RecordProperty(key, value_message.GetString().c_str());
-}
-
-namespace internal {
-
-void ReportFailureInUnknownLocation(TestPartResult::Type result_type,
- const std::string& message) {
- // This function is a friend of UnitTest and as such has access to
- // AddTestPartResult.
- UnitTest::GetInstance()->AddTestPartResult(
- result_type,
+bool TestResult::HasNonfatalFailure() const {
+ return CountIf(test_part_results_, TestPartNonfatallyFailed) > 0;
+}
+
+// Gets the number of all test parts. This is the sum of the number
+// of successful test parts and the number of failed test parts.
+int TestResult::total_part_count() const {
+ return static_cast<int>(test_part_results_.size());
+}
+
+// Returns the number of the test properties.
+int TestResult::test_property_count() const {
+ return static_cast<int>(test_properties_.size());
+}
+
+// class Test
+
+// Creates a Test object.
+
+// The c'tor saves the states of all flags.
+Test::Test()
+ : gtest_flag_saver_(new GTEST_FLAG_SAVER_) {
+}
+
+// The d'tor restores the states of all flags. The actual work is
+// done by the d'tor of the gtest_flag_saver_ field, and thus not
+// visible here.
+Test::~Test() {
+}
+
+// Sets up the test fixture.
+//
+// A sub-class may override this.
+void Test::SetUp() {
+}
+
+// Tears down the test fixture.
+//
+// A sub-class may override this.
+void Test::TearDown() {
+}
+
+// Allows user supplied key value pairs to be recorded for later output.
+void Test::RecordProperty(const std::string& key, const std::string& value) {
+ UnitTest::GetInstance()->RecordProperty(key, value);
+}
+
+// Allows user supplied key value pairs to be recorded for later output.
+void Test::RecordProperty(const std::string& key, int value) {
+ Message value_message;
+ value_message << value;
+ RecordProperty(key, value_message.GetString().c_str());
+}
+
+namespace internal {
+
+void ReportFailureInUnknownLocation(TestPartResult::Type result_type,
+ const std::string& message) {
+ // This function is a friend of UnitTest and as such has access to
+ // AddTestPartResult.
+ UnitTest::GetInstance()->AddTestPartResult(
+ result_type,
nullptr, // No info about the source file where the exception occurred.
-1, // We have no info on which line caused the exception.
- message,
+ message,
""); // No stack trace, either.
-}
-
-} // namespace internal
-
+}
+
+} // namespace internal
+
// Google Test requires all tests in the same test suite to use the same test
-// fixture class. This function checks if the current test has the
+// fixture class. This function checks if the current test has the
// same fixture class as the first test in the current test suite. If
-// yes, it returns true; otherwise it generates a Google Test failure and
-// returns false.
-bool Test::HasSameFixtureClass() {
- internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
+// yes, it returns true; otherwise it generates a Google Test failure and
+// returns false.
+bool Test::HasSameFixtureClass() {
+ internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
const TestSuite* const test_suite = impl->current_test_suite();
-
+
// Info about the first test in the current test suite.
const TestInfo* const first_test_info = test_suite->test_info_list()[0];
- const internal::TypeId first_fixture_id = first_test_info->fixture_class_id_;
- const char* const first_test_name = first_test_info->name();
-
- // Info about the current test.
- const TestInfo* const this_test_info = impl->current_test_info();
- const internal::TypeId this_fixture_id = this_test_info->fixture_class_id_;
- const char* const this_test_name = this_test_info->name();
-
- if (this_fixture_id != first_fixture_id) {
- // Is the first test defined using TEST?
- const bool first_is_TEST = first_fixture_id == internal::GetTestTypeId();
- // Is this test defined using TEST?
- const bool this_is_TEST = this_fixture_id == internal::GetTestTypeId();
-
- if (first_is_TEST || this_is_TEST) {
+ const internal::TypeId first_fixture_id = first_test_info->fixture_class_id_;
+ const char* const first_test_name = first_test_info->name();
+
+ // Info about the current test.
+ const TestInfo* const this_test_info = impl->current_test_info();
+ const internal::TypeId this_fixture_id = this_test_info->fixture_class_id_;
+ const char* const this_test_name = this_test_info->name();
+
+ if (this_fixture_id != first_fixture_id) {
+ // Is the first test defined using TEST?
+ const bool first_is_TEST = first_fixture_id == internal::GetTestTypeId();
+ // Is this test defined using TEST?
+ const bool this_is_TEST = this_fixture_id == internal::GetTestTypeId();
+
+ if (first_is_TEST || this_is_TEST) {
// Both TEST and TEST_F appear in same test suite, which is incorrect.
- // Tell the user how to fix this.
-
- // Gets the name of the TEST and the name of the TEST_F. Note
- // that first_is_TEST and this_is_TEST cannot both be true, as
- // the fixture IDs are different for the two tests.
- const char* const TEST_name =
- first_is_TEST ? first_test_name : this_test_name;
- const char* const TEST_F_name =
- first_is_TEST ? this_test_name : first_test_name;
-
- ADD_FAILURE()
+ // Tell the user how to fix this.
+
+ // Gets the name of the TEST and the name of the TEST_F. Note
+ // that first_is_TEST and this_is_TEST cannot both be true, as
+ // the fixture IDs are different for the two tests.
+ const char* const TEST_name =
+ first_is_TEST ? first_test_name : this_test_name;
+ const char* const TEST_F_name =
+ first_is_TEST ? this_test_name : first_test_name;
+
+ ADD_FAILURE()
<< "All tests in the same test suite must use the same test fixture\n"
<< "class, so mixing TEST_F and TEST in the same test suite is\n"
<< "illegal. In test suite " << this_test_info->test_suite_name()
- << ",\n"
- << "test " << TEST_F_name << " is defined using TEST_F but\n"
- << "test " << TEST_name << " is defined using TEST. You probably\n"
- << "want to change the TEST to TEST_F or move it to another test\n"
- << "case.";
- } else {
- // Two fixture classes with the same name appear in two different
- // namespaces, which is not allowed. Tell the user how to fix this.
- ADD_FAILURE()
+ << ",\n"
+ << "test " << TEST_F_name << " is defined using TEST_F but\n"
+ << "test " << TEST_name << " is defined using TEST. You probably\n"
+ << "want to change the TEST to TEST_F or move it to another test\n"
+ << "case.";
+ } else {
+ // Two fixture classes with the same name appear in two different
+ // namespaces, which is not allowed. Tell the user how to fix this.
+ ADD_FAILURE()
<< "All tests in the same test suite must use the same test fixture\n"
<< "class. However, in test suite "
<< this_test_info->test_suite_name() << ",\n"
<< "you defined test " << first_test_name << " and test "
<< this_test_name << "\n"
- << "using two different test fixture classes. This can happen if\n"
- << "the two classes are from different namespaces or translation\n"
- << "units and have the same name. You should probably rename one\n"
+ << "using two different test fixture classes. This can happen if\n"
+ << "the two classes are from different namespaces or translation\n"
+ << "units and have the same name. You should probably rename one\n"
<< "of the classes to put the tests into different test suites.";
- }
- return false;
- }
-
- return true;
-}
-
-#if GTEST_HAS_SEH
-
-// Adds an "exception thrown" fatal failure to the current test. This
-// function returns its result via an output parameter pointer because VC++
-// prohibits creation of objects with destructors on stack in functions
-// using __try (see error C2712).
-static std::string* FormatSehExceptionMessage(DWORD exception_code,
- const char* location) {
- Message message;
- message << "SEH exception with code 0x" << std::setbase(16) <<
- exception_code << std::setbase(10) << " thrown in " << location << ".";
-
- return new std::string(message.GetString());
-}
-
-#endif // GTEST_HAS_SEH
-
-namespace internal {
-
-#if GTEST_HAS_EXCEPTIONS
-
-// Adds an "exception thrown" fatal failure to the current test.
-static std::string FormatCxxExceptionMessage(const char* description,
- const char* location) {
- Message message;
+ }
+ return false;
+ }
+
+ return true;
+}
+
+#if GTEST_HAS_SEH
+
+// Adds an "exception thrown" fatal failure to the current test. This
+// function returns its result via an output parameter pointer because VC++
+// prohibits creation of objects with destructors on stack in functions
+// using __try (see error C2712).
+static std::string* FormatSehExceptionMessage(DWORD exception_code,
+ const char* location) {
+ Message message;
+ message << "SEH exception with code 0x" << std::setbase(16) <<
+ exception_code << std::setbase(10) << " thrown in " << location << ".";
+
+ return new std::string(message.GetString());
+}
+
+#endif // GTEST_HAS_SEH
+
+namespace internal {
+
+#if GTEST_HAS_EXCEPTIONS
+
+// Adds an "exception thrown" fatal failure to the current test.
+static std::string FormatCxxExceptionMessage(const char* description,
+ const char* location) {
+ Message message;
if (description != nullptr) {
- message << "C++ exception with description \"" << description << "\"";
- } else {
- message << "Unknown C++ exception";
- }
- message << " thrown in " << location << ".";
-
- return message.GetString();
-}
-
-static std::string PrintTestPartResultToString(
- const TestPartResult& test_part_result);
-
-GoogleTestFailureException::GoogleTestFailureException(
- const TestPartResult& failure)
- : ::std::runtime_error(PrintTestPartResultToString(failure).c_str()) {}
-
-#endif // GTEST_HAS_EXCEPTIONS
-
-// We put these helper functions in the internal namespace as IBM's xlC
-// compiler rejects the code if they were declared static.
-
-// Runs the given method and handles SEH exceptions it throws, when
-// SEH is supported; returns the 0-value for type Result in case of an
-// SEH exception. (Microsoft compilers cannot handle SEH and C++
-// exceptions in the same function. Therefore, we provide a separate
-// wrapper function for handling SEH exceptions.)
-template <class T, typename Result>
-Result HandleSehExceptionsInMethodIfSupported(
- T* object, Result (T::*method)(), const char* location) {
-#if GTEST_HAS_SEH
- __try {
- return (object->*method)();
- } __except (internal::UnitTestOptions::GTestShouldProcessSEH( // NOLINT
- GetExceptionCode())) {
- // We create the exception message on the heap because VC++ prohibits
- // creation of objects with destructors on stack in functions using __try
- // (see error C2712).
- std::string* exception_message = FormatSehExceptionMessage(
- GetExceptionCode(), location);
- internal::ReportFailureInUnknownLocation(TestPartResult::kFatalFailure,
- *exception_message);
- delete exception_message;
- return static_cast<Result>(0);
- }
-#else
- (void)location;
- return (object->*method)();
-#endif // GTEST_HAS_SEH
-}
-
-// Runs the given method and catches and reports C++ and/or SEH-style
-// exceptions, if they are supported; returns the 0-value for type
-// Result in case of an SEH exception.
-template <class T, typename Result>
-Result HandleExceptionsInMethodIfSupported(
- T* object, Result (T::*method)(), const char* location) {
- // NOTE: The user code can affect the way in which Google Test handles
- // exceptions by setting GTEST_FLAG(catch_exceptions), but only before
- // RUN_ALL_TESTS() starts. It is technically possible to check the flag
- // after the exception is caught and either report or re-throw the
- // exception based on the flag's value:
- //
- // try {
- // // Perform the test method.
- // } catch (...) {
- // if (GTEST_FLAG(catch_exceptions))
- // // Report the exception as failure.
- // else
- // throw; // Re-throws the original exception.
- // }
- //
- // However, the purpose of this flag is to allow the program to drop into
- // the debugger when the exception is thrown. On most platforms, once the
- // control enters the catch block, the exception origin information is
- // lost and the debugger will stop the program at the point of the
- // re-throw in this function -- instead of at the point of the original
- // throw statement in the code under test. For this reason, we perform
- // the check early, sacrificing the ability to affect Google Test's
- // exception handling in the method where the exception is thrown.
- if (internal::GetUnitTestImpl()->catch_exceptions()) {
-#if GTEST_HAS_EXCEPTIONS
- try {
- return HandleSehExceptionsInMethodIfSupported(object, method, location);
+ message << "C++ exception with description \"" << description << "\"";
+ } else {
+ message << "Unknown C++ exception";
+ }
+ message << " thrown in " << location << ".";
+
+ return message.GetString();
+}
+
+static std::string PrintTestPartResultToString(
+ const TestPartResult& test_part_result);
+
+GoogleTestFailureException::GoogleTestFailureException(
+ const TestPartResult& failure)
+ : ::std::runtime_error(PrintTestPartResultToString(failure).c_str()) {}
+
+#endif // GTEST_HAS_EXCEPTIONS
+
+// We put these helper functions in the internal namespace as IBM's xlC
+// compiler rejects the code if they were declared static.
+
+// Runs the given method and handles SEH exceptions it throws, when
+// SEH is supported; returns the 0-value for type Result in case of an
+// SEH exception. (Microsoft compilers cannot handle SEH and C++
+// exceptions in the same function. Therefore, we provide a separate
+// wrapper function for handling SEH exceptions.)
+template <class T, typename Result>
+Result HandleSehExceptionsInMethodIfSupported(
+ T* object, Result (T::*method)(), const char* location) {
+#if GTEST_HAS_SEH
+ __try {
+ return (object->*method)();
+ } __except (internal::UnitTestOptions::GTestShouldProcessSEH( // NOLINT
+ GetExceptionCode())) {
+ // We create the exception message on the heap because VC++ prohibits
+ // creation of objects with destructors on stack in functions using __try
+ // (see error C2712).
+ std::string* exception_message = FormatSehExceptionMessage(
+ GetExceptionCode(), location);
+ internal::ReportFailureInUnknownLocation(TestPartResult::kFatalFailure,
+ *exception_message);
+ delete exception_message;
+ return static_cast<Result>(0);
+ }
+#else
+ (void)location;
+ return (object->*method)();
+#endif // GTEST_HAS_SEH
+}
+
+// Runs the given method and catches and reports C++ and/or SEH-style
+// exceptions, if they are supported; returns the 0-value for type
+// Result in case of an SEH exception.
+template <class T, typename Result>
+Result HandleExceptionsInMethodIfSupported(
+ T* object, Result (T::*method)(), const char* location) {
+ // NOTE: The user code can affect the way in which Google Test handles
+ // exceptions by setting GTEST_FLAG(catch_exceptions), but only before
+ // RUN_ALL_TESTS() starts. It is technically possible to check the flag
+ // after the exception is caught and either report or re-throw the
+ // exception based on the flag's value:
+ //
+ // try {
+ // // Perform the test method.
+ // } catch (...) {
+ // if (GTEST_FLAG(catch_exceptions))
+ // // Report the exception as failure.
+ // else
+ // throw; // Re-throws the original exception.
+ // }
+ //
+ // However, the purpose of this flag is to allow the program to drop into
+ // the debugger when the exception is thrown. On most platforms, once the
+ // control enters the catch block, the exception origin information is
+ // lost and the debugger will stop the program at the point of the
+ // re-throw in this function -- instead of at the point of the original
+ // throw statement in the code under test. For this reason, we perform
+ // the check early, sacrificing the ability to affect Google Test's
+ // exception handling in the method where the exception is thrown.
+ if (internal::GetUnitTestImpl()->catch_exceptions()) {
+#if GTEST_HAS_EXCEPTIONS
+ try {
+ return HandleSehExceptionsInMethodIfSupported(object, method, location);
} catch (const AssertionException&) { // NOLINT
// This failure was reported already.
- } catch (const internal::GoogleTestFailureException&) { // NOLINT
- // This exception type can only be thrown by a failed Google
- // Test assertion with the intention of letting another testing
- // framework catch it. Therefore we just re-throw it.
- throw;
- } catch (const std::exception& e) { // NOLINT
- internal::ReportFailureInUnknownLocation(
- TestPartResult::kFatalFailure,
- FormatCxxExceptionMessage(e.what(), location));
- } catch (...) { // NOLINT
- internal::ReportFailureInUnknownLocation(
- TestPartResult::kFatalFailure,
+ } catch (const internal::GoogleTestFailureException&) { // NOLINT
+ // This exception type can only be thrown by a failed Google
+ // Test assertion with the intention of letting another testing
+ // framework catch it. Therefore we just re-throw it.
+ throw;
+ } catch (const std::exception& e) { // NOLINT
+ internal::ReportFailureInUnknownLocation(
+ TestPartResult::kFatalFailure,
+ FormatCxxExceptionMessage(e.what(), location));
+ } catch (...) { // NOLINT
+ internal::ReportFailureInUnknownLocation(
+ TestPartResult::kFatalFailure,
FormatCxxExceptionMessage(nullptr, location));
- }
- return static_cast<Result>(0);
-#else
- return HandleSehExceptionsInMethodIfSupported(object, method, location);
-#endif // GTEST_HAS_EXCEPTIONS
- } else {
- return (object->*method)();
- }
-}
-
-} // namespace internal
-
-// Runs the test and updates the test result.
-void Test::Run() {
- if (!HasSameFixtureClass()) return;
-
- internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
- impl->os_stack_trace_getter()->UponLeavingGTest();
- internal::HandleExceptionsInMethodIfSupported(this, &Test::SetUp, "SetUp()");
+ }
+ return static_cast<Result>(0);
+#else
+ return HandleSehExceptionsInMethodIfSupported(object, method, location);
+#endif // GTEST_HAS_EXCEPTIONS
+ } else {
+ return (object->*method)();
+ }
+}
+
+} // namespace internal
+
+// Runs the test and updates the test result.
+void Test::Run() {
+ if (!HasSameFixtureClass()) return;
+
+ internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
+ impl->os_stack_trace_getter()->UponLeavingGTest();
+ internal::HandleExceptionsInMethodIfSupported(this, &Test::SetUp, "SetUp()");
// We will run the test only if SetUp() was successful and didn't call
// GTEST_SKIP().
if (!HasFatalFailure() && !IsSkipped()) {
- impl->os_stack_trace_getter()->UponLeavingGTest();
- internal::HandleExceptionsInMethodIfSupported(
- this, &Test::TestBody, "the test body");
- }
-
- // However, we want to clean up as much as possible. Hence we will
- // always call TearDown(), even if SetUp() or the test body has
- // failed.
- impl->os_stack_trace_getter()->UponLeavingGTest();
- internal::HandleExceptionsInMethodIfSupported(
- this, &Test::TearDown, "TearDown()");
-}
-
+ impl->os_stack_trace_getter()->UponLeavingGTest();
+ internal::HandleExceptionsInMethodIfSupported(
+ this, &Test::TestBody, "the test body");
+ }
+
+ // However, we want to clean up as much as possible. Hence we will
+ // always call TearDown(), even if SetUp() or the test body has
+ // failed.
+ impl->os_stack_trace_getter()->UponLeavingGTest();
+ internal::HandleExceptionsInMethodIfSupported(
+ this, &Test::TearDown, "TearDown()");
+}
+
// Returns true if and only if the current test has a fatal failure.
-bool Test::HasFatalFailure() {
- return internal::GetUnitTestImpl()->current_test_result()->HasFatalFailure();
-}
-
+bool Test::HasFatalFailure() {
+ return internal::GetUnitTestImpl()->current_test_result()->HasFatalFailure();
+}
+
// Returns true if and only if the current test has a non-fatal failure.
-bool Test::HasNonfatalFailure() {
- return internal::GetUnitTestImpl()->current_test_result()->
- HasNonfatalFailure();
-}
-
+bool Test::HasNonfatalFailure() {
+ return internal::GetUnitTestImpl()->current_test_result()->
+ HasNonfatalFailure();
+}
+
// Returns true if and only if the current test was skipped.
bool Test::IsSkipped() {
return internal::GetUnitTestImpl()->current_test_result()->Skipped();
}
-// class TestInfo
-
-// Constructs a TestInfo object. It assumes ownership of the test factory
-// object.
+// class TestInfo
+
+// Constructs a TestInfo object. It assumes ownership of the test factory
+// object.
TestInfo::TestInfo(const std::string& a_test_suite_name,
const std::string& a_name, const char* a_type_param,
- const char* a_value_param,
- internal::CodeLocation a_code_location,
- internal::TypeId fixture_class_id,
- internal::TestFactoryBase* factory)
+ const char* a_value_param,
+ internal::CodeLocation a_code_location,
+ internal::TypeId fixture_class_id,
+ internal::TestFactoryBase* factory)
: test_suite_name_(a_test_suite_name),
- name_(a_name),
+ name_(a_name),
type_param_(a_type_param ? new std::string(a_type_param) : nullptr),
value_param_(a_value_param ? new std::string(a_value_param) : nullptr),
- location_(a_code_location),
- fixture_class_id_(fixture_class_id),
- should_run_(false),
- is_disabled_(false),
- matches_filter_(false),
+ location_(a_code_location),
+ fixture_class_id_(fixture_class_id),
+ should_run_(false),
+ is_disabled_(false),
+ matches_filter_(false),
is_in_another_shard_(false),
- factory_(factory),
- result_() {}
-
-// Destructs a TestInfo object.
-TestInfo::~TestInfo() { delete factory_; }
-
-namespace internal {
-
-// Creates a new TestInfo object and registers it with Google Test;
-// returns the created object.
-//
-// Arguments:
-//
+ factory_(factory),
+ result_() {}
+
+// Destructs a TestInfo object.
+TestInfo::~TestInfo() { delete factory_; }
+
+namespace internal {
+
+// Creates a new TestInfo object and registers it with Google Test;
+// returns the created object.
+//
+// Arguments:
+//
// test_suite_name: name of the test suite
-// name: name of the test
-// type_param: the name of the test's type parameter, or NULL if
-// this is not a typed or a type-parameterized test.
-// value_param: text representation of the test's value parameter,
-// or NULL if this is not a value-parameterized test.
-// code_location: code location where the test is defined
-// fixture_class_id: ID of the test fixture class
+// name: name of the test
+// type_param: the name of the test's type parameter, or NULL if
+// this is not a typed or a type-parameterized test.
+// value_param: text representation of the test's value parameter,
+// or NULL if this is not a value-parameterized test.
+// code_location: code location where the test is defined
+// fixture_class_id: ID of the test fixture class
// set_up_tc: pointer to the function that sets up the test suite
// tear_down_tc: pointer to the function that tears down the test suite
-// factory: pointer to the factory that creates a test object.
-// The newly created TestInfo instance will assume
-// ownership of the factory object.
-TestInfo* MakeAndRegisterTestInfo(
+// factory: pointer to the factory that creates a test object.
+// The newly created TestInfo instance will assume
+// ownership of the factory object.
+TestInfo* MakeAndRegisterTestInfo(
const char* test_suite_name, const char* name, const char* type_param,
const char* value_param, CodeLocation code_location,
TypeId fixture_class_id, SetUpTestSuiteFunc set_up_tc,
TearDownTestSuiteFunc tear_down_tc, TestFactoryBase* factory) {
- TestInfo* const test_info =
+ TestInfo* const test_info =
new TestInfo(test_suite_name, name, type_param, value_param,
- code_location, fixture_class_id, factory);
- GetUnitTestImpl()->AddTestInfo(set_up_tc, tear_down_tc, test_info);
- return test_info;
-}
-
+ code_location, fixture_class_id, factory);
+ GetUnitTestImpl()->AddTestInfo(set_up_tc, tear_down_tc, test_info);
+ return test_info;
+}
+
void ReportInvalidTestSuiteType(const char* test_suite_name,
CodeLocation code_location) {
- Message errors;
- errors
+ Message errors;
+ errors
<< "Attempted redefinition of test suite " << test_suite_name << ".\n"
<< "All tests in the same test suite must use the same test fixture\n"
<< "class. However, in test suite " << test_suite_name << ", you tried\n"
- << "to define a test using a fixture class different from the one\n"
- << "used earlier. This can happen if the two fixture classes are\n"
- << "from different namespaces and have the same name. You should\n"
- << "probably rename one of the classes to put the tests into different\n"
+ << "to define a test using a fixture class different from the one\n"
+ << "used earlier. This can happen if the two fixture classes are\n"
+ << "from different namespaces and have the same name. You should\n"
+ << "probably rename one of the classes to put the tests into different\n"
<< "test suites.";
-
+
GTEST_LOG_(ERROR) << FormatFileLocation(code_location.file.c_str(),
code_location.line)
<< " " << errors.GetString();
-}
-} // namespace internal
-
-namespace {
-
-// A predicate that checks the test name of a TestInfo against a known
-// value.
-//
+}
+} // namespace internal
+
+namespace {
+
+// A predicate that checks the test name of a TestInfo against a known
+// value.
+//
// This is used for implementation of the TestSuite class only. We put
-// it in the anonymous namespace to prevent polluting the outer
-// namespace.
-//
-// TestNameIs is copyable.
-class TestNameIs {
- public:
- // Constructor.
- //
- // TestNameIs has NO default constructor.
- explicit TestNameIs(const char* name)
- : name_(name) {}
-
+// it in the anonymous namespace to prevent polluting the outer
+// namespace.
+//
+// TestNameIs is copyable.
+class TestNameIs {
+ public:
+ // Constructor.
+ //
+ // TestNameIs has NO default constructor.
+ explicit TestNameIs(const char* name)
+ : name_(name) {}
+
// Returns true if and only if the test name of test_info matches name_.
- bool operator()(const TestInfo * test_info) const {
- return test_info && test_info->name() == name_;
- }
-
- private:
- std::string name_;
-};
-
-} // namespace
-
-namespace internal {
-
-// This method expands all parameterized tests registered with macros TEST_P
+ bool operator()(const TestInfo * test_info) const {
+ return test_info && test_info->name() == name_;
+ }
+
+ private:
+ std::string name_;
+};
+
+} // namespace
+
+namespace internal {
+
+// This method expands all parameterized tests registered with macros TEST_P
// and INSTANTIATE_TEST_SUITE_P into regular tests and registers those.
-// This will be done just once during the program runtime.
-void UnitTestImpl::RegisterParameterizedTests() {
- if (!parameterized_tests_registered_) {
- parameterized_test_registry_.RegisterTests();
+// This will be done just once during the program runtime.
+void UnitTestImpl::RegisterParameterizedTests() {
+ if (!parameterized_tests_registered_) {
+ parameterized_test_registry_.RegisterTests();
type_parameterized_test_registry_.CheckForInstantiations();
- parameterized_tests_registered_ = true;
- }
-}
-
-} // namespace internal
-
-// Creates the test object, runs it, records its result, and then
-// deletes it.
-void TestInfo::Run() {
- if (!should_run_) return;
-
- // Tells UnitTest where to store test result.
- internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
- impl->set_current_test_info(this);
-
- TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater();
-
- // Notifies the unit test event listeners that a test is about to start.
- repeater->OnTestStart(*this);
-
+ parameterized_tests_registered_ = true;
+ }
+}
+
+} // namespace internal
+
+// Creates the test object, runs it, records its result, and then
+// deletes it.
+void TestInfo::Run() {
+ if (!should_run_) return;
+
+ // Tells UnitTest where to store test result.
+ internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
+ impl->set_current_test_info(this);
+
+ TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater();
+
+ // Notifies the unit test event listeners that a test is about to start.
+ repeater->OnTestStart(*this);
+
result_.set_start_timestamp(internal::GetTimeInMillis());
internal::Timer timer;
-
- impl->os_stack_trace_getter()->UponLeavingGTest();
-
- // Creates the test object.
- Test* const test = internal::HandleExceptionsInMethodIfSupported(
- factory_, &internal::TestFactoryBase::CreateTest,
- "the test fixture's constructor");
-
+
+ impl->os_stack_trace_getter()->UponLeavingGTest();
+
+ // Creates the test object.
+ Test* const test = internal::HandleExceptionsInMethodIfSupported(
+ factory_, &internal::TestFactoryBase::CreateTest,
+ "the test fixture's constructor");
+
// Runs the test if the constructor didn't generate a fatal failure or invoke
// GTEST_SKIP().
// Note that the object will not be null
if (!Test::HasFatalFailure() && !Test::IsSkipped()) {
- // This doesn't throw as all user code that can throw are wrapped into
- // exception handling code.
- test->Run();
- }
-
+ // This doesn't throw as all user code that can throw are wrapped into
+ // exception handling code.
+ test->Run();
+ }
+
if (test != nullptr) {
// Deletes the test object.
impl->os_stack_trace_getter()->UponLeavingGTest();
internal::HandleExceptionsInMethodIfSupported(
test, &Test::DeleteSelf_, "the test fixture's destructor");
}
-
+
result_.set_elapsed_time(timer.Elapsed());
-
- // Notifies the unit test event listener that a test has just finished.
- repeater->OnTestEnd(*this);
-
- // Tells UnitTest to stop associating assertion results to this
- // test.
+
+ // Notifies the unit test event listener that a test has just finished.
+ repeater->OnTestEnd(*this);
+
+ // Tells UnitTest to stop associating assertion results to this
+ // test.
impl->set_current_test_info(nullptr);
-}
-
+}
+
// Skip and records a skipped test result for this object.
void TestInfo::Skip() {
if (!should_run_) return;
@@ -2901,12 +2901,12 @@ void TestInfo::Skip() {
}
// class TestSuite
-
+
// Gets the number of successful tests in this test suite.
int TestSuite::successful_test_count() const {
- return CountIf(test_info_list_, TestPassed);
-}
-
+ return CountIf(test_info_list_, TestPassed);
+}
+
// Gets the number of successful tests in this test suite.
int TestSuite::skipped_test_count() const {
return CountIf(test_info_list_, TestSkipped);
@@ -2914,38 +2914,38 @@ int TestSuite::skipped_test_count() const {
// Gets the number of failed tests in this test suite.
int TestSuite::failed_test_count() const {
- return CountIf(test_info_list_, TestFailed);
-}
-
-// Gets the number of disabled tests that will be reported in the XML report.
+ return CountIf(test_info_list_, TestFailed);
+}
+
+// Gets the number of disabled tests that will be reported in the XML report.
int TestSuite::reportable_disabled_test_count() const {
- return CountIf(test_info_list_, TestReportableDisabled);
-}
-
+ return CountIf(test_info_list_, TestReportableDisabled);
+}
+
// Gets the number of disabled tests in this test suite.
int TestSuite::disabled_test_count() const {
- return CountIf(test_info_list_, TestDisabled);
-}
-
-// Gets the number of tests to be printed in the XML report.
+ return CountIf(test_info_list_, TestDisabled);
+}
+
+// Gets the number of tests to be printed in the XML report.
int TestSuite::reportable_test_count() const {
- return CountIf(test_info_list_, TestReportable);
-}
-
+ return CountIf(test_info_list_, TestReportable);
+}
+
// Get the number of tests in this test suite that should run.
int TestSuite::test_to_run_count() const {
- return CountIf(test_info_list_, ShouldRunTest);
-}
-
-// Gets the number of all tests.
+ return CountIf(test_info_list_, ShouldRunTest);
+}
+
+// Gets the number of all tests.
int TestSuite::total_test_count() const {
- return static_cast<int>(test_info_list_.size());
-}
-
+ return static_cast<int>(test_info_list_.size());
+}
+
// Creates a TestSuite with the given name.
-//
-// Arguments:
-//
+//
+// Arguments:
+//
// a_name: name of the test suite
// a_type_param: the name of the test suite's type parameter, or NULL if
// this is not a typed or a type-parameterized test suite.
@@ -2954,88 +2954,88 @@ int TestSuite::total_test_count() const {
TestSuite::TestSuite(const char* a_name, const char* a_type_param,
internal::SetUpTestSuiteFunc set_up_tc,
internal::TearDownTestSuiteFunc tear_down_tc)
- : name_(a_name),
+ : name_(a_name),
type_param_(a_type_param ? new std::string(a_type_param) : nullptr),
- set_up_tc_(set_up_tc),
- tear_down_tc_(tear_down_tc),
- should_run_(false),
+ set_up_tc_(set_up_tc),
+ tear_down_tc_(tear_down_tc),
+ should_run_(false),
start_timestamp_(0),
elapsed_time_(0) {}
-
+
// Destructor of TestSuite.
TestSuite::~TestSuite() {
- // Deletes every Test in the collection.
- ForEach(test_info_list_, internal::Delete<TestInfo>);
-}
-
-// Returns the i-th test among all the tests. i can range from 0 to
-// total_test_count() - 1. If i is not in that range, returns NULL.
+ // Deletes every Test in the collection.
+ ForEach(test_info_list_, internal::Delete<TestInfo>);
+}
+
+// Returns the i-th test among all the tests. i can range from 0 to
+// total_test_count() - 1. If i is not in that range, returns NULL.
const TestInfo* TestSuite::GetTestInfo(int i) const {
- const int index = GetElementOr(test_indices_, i, -1);
+ const int index = GetElementOr(test_indices_, i, -1);
return index < 0 ? nullptr : test_info_list_[static_cast<size_t>(index)];
-}
-
-// Returns the i-th test among all the tests. i can range from 0 to
-// total_test_count() - 1. If i is not in that range, returns NULL.
+}
+
+// Returns the i-th test among all the tests. i can range from 0 to
+// total_test_count() - 1. If i is not in that range, returns NULL.
TestInfo* TestSuite::GetMutableTestInfo(int i) {
- const int index = GetElementOr(test_indices_, i, -1);
+ const int index = GetElementOr(test_indices_, i, -1);
return index < 0 ? nullptr : test_info_list_[static_cast<size_t>(index)];
-}
-
+}
+
// Adds a test to this test suite. Will delete the test upon
// destruction of the TestSuite object.
void TestSuite::AddTestInfo(TestInfo* test_info) {
- test_info_list_.push_back(test_info);
- test_indices_.push_back(static_cast<int>(test_indices_.size()));
-}
-
+ test_info_list_.push_back(test_info);
+ test_indices_.push_back(static_cast<int>(test_indices_.size()));
+}
+
// Runs every test in this TestSuite.
void TestSuite::Run() {
- if (!should_run_) return;
-
- internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
+ if (!should_run_) return;
+
+ internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
impl->set_current_test_suite(this);
-
- TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater();
-
+
+ TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater();
+
// Call both legacy and the new API
repeater->OnTestSuiteStart(*this);
// Legacy API is deprecated but still available
#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
- repeater->OnTestCaseStart(*this);
+ repeater->OnTestCaseStart(*this);
#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
- impl->os_stack_trace_getter()->UponLeavingGTest();
- internal::HandleExceptionsInMethodIfSupported(
+ impl->os_stack_trace_getter()->UponLeavingGTest();
+ internal::HandleExceptionsInMethodIfSupported(
this, &TestSuite::RunSetUpTestSuite, "SetUpTestSuite()");
-
+
start_timestamp_ = internal::GetTimeInMillis();
internal::Timer timer;
- for (int i = 0; i < total_test_count(); i++) {
- GetMutableTestInfo(i)->Run();
+ for (int i = 0; i < total_test_count(); i++) {
+ GetMutableTestInfo(i)->Run();
if (GTEST_FLAG(fail_fast) && GetMutableTestInfo(i)->result()->Failed()) {
for (int j = i + 1; j < total_test_count(); j++) {
GetMutableTestInfo(j)->Skip();
}
break;
}
- }
+ }
elapsed_time_ = timer.Elapsed();
-
- impl->os_stack_trace_getter()->UponLeavingGTest();
- internal::HandleExceptionsInMethodIfSupported(
+
+ impl->os_stack_trace_getter()->UponLeavingGTest();
+ internal::HandleExceptionsInMethodIfSupported(
this, &TestSuite::RunTearDownTestSuite, "TearDownTestSuite()");
-
+
// Call both legacy and the new API
repeater->OnTestSuiteEnd(*this);
// Legacy API is deprecated but still available
#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
- repeater->OnTestCaseEnd(*this);
+ repeater->OnTestCaseEnd(*this);
#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
impl->set_current_test_suite(nullptr);
-}
-
+}
+
// Skips all tests under this TestSuite.
void TestSuite::Skip() {
if (!should_run_) return;
@@ -3068,118 +3068,118 @@ void TestSuite::Skip() {
// Clears the results of all tests in this test suite.
void TestSuite::ClearResult() {
- ad_hoc_test_result_.Clear();
- ForEach(test_info_list_, TestInfo::ClearTestResult);
-}
-
+ ad_hoc_test_result_.Clear();
+ ForEach(test_info_list_, TestInfo::ClearTestResult);
+}
+
// Shuffles the tests in this test suite.
void TestSuite::ShuffleTests(internal::Random* random) {
- Shuffle(random, &test_indices_);
-}
-
-// Restores the test order to before the first shuffle.
+ Shuffle(random, &test_indices_);
+}
+
+// Restores the test order to before the first shuffle.
void TestSuite::UnshuffleTests() {
- for (size_t i = 0; i < test_indices_.size(); i++) {
- test_indices_[i] = static_cast<int>(i);
- }
-}
-
-// Formats a countable noun. Depending on its quantity, either the
-// singular form or the plural form is used. e.g.
-//
-// FormatCountableNoun(1, "formula", "formuli") returns "1 formula".
-// FormatCountableNoun(5, "book", "books") returns "5 books".
-static std::string FormatCountableNoun(int count,
- const char * singular_form,
- const char * plural_form) {
- return internal::StreamableToString(count) + " " +
- (count == 1 ? singular_form : plural_form);
-}
-
-// Formats the count of tests.
-static std::string FormatTestCount(int test_count) {
- return FormatCountableNoun(test_count, "test", "tests");
-}
-
+ for (size_t i = 0; i < test_indices_.size(); i++) {
+ test_indices_[i] = static_cast<int>(i);
+ }
+}
+
+// Formats a countable noun. Depending on its quantity, either the
+// singular form or the plural form is used. e.g.
+//
+// FormatCountableNoun(1, "formula", "formuli") returns "1 formula".
+// FormatCountableNoun(5, "book", "books") returns "5 books".
+static std::string FormatCountableNoun(int count,
+ const char * singular_form,
+ const char * plural_form) {
+ return internal::StreamableToString(count) + " " +
+ (count == 1 ? singular_form : plural_form);
+}
+
+// Formats the count of tests.
+static std::string FormatTestCount(int test_count) {
+ return FormatCountableNoun(test_count, "test", "tests");
+}
+
// Formats the count of test suites.
static std::string FormatTestSuiteCount(int test_suite_count) {
return FormatCountableNoun(test_suite_count, "test suite", "test suites");
-}
-
-// Converts a TestPartResult::Type enum to human-friendly string
-// representation. Both kNonFatalFailure and kFatalFailure are translated
-// to "Failure", as the user usually doesn't care about the difference
-// between the two when viewing the test result.
-static const char * TestPartResultTypeToString(TestPartResult::Type type) {
- switch (type) {
+}
+
+// Converts a TestPartResult::Type enum to human-friendly string
+// representation. Both kNonFatalFailure and kFatalFailure are translated
+// to "Failure", as the user usually doesn't care about the difference
+// between the two when viewing the test result.
+static const char * TestPartResultTypeToString(TestPartResult::Type type) {
+ switch (type) {
case TestPartResult::kSkip:
return "Skipped\n";
- case TestPartResult::kSuccess:
- return "Success";
-
- case TestPartResult::kNonFatalFailure:
- case TestPartResult::kFatalFailure:
-#ifdef _MSC_VER
- return "error: ";
-#else
- return "Failure\n";
-#endif
- default:
- return "Unknown result type";
- }
-}
-
-namespace internal {
+ case TestPartResult::kSuccess:
+ return "Success";
+
+ case TestPartResult::kNonFatalFailure:
+ case TestPartResult::kFatalFailure:
+#ifdef _MSC_VER
+ return "error: ";
+#else
+ return "Failure\n";
+#endif
+ default:
+ return "Unknown result type";
+ }
+}
+
+namespace internal {
namespace {
enum class GTestColor { kDefault, kRed, kGreen, kYellow };
} // namespace
-
-// Prints a TestPartResult to an std::string.
-static std::string PrintTestPartResultToString(
- const TestPartResult& test_part_result) {
- return (Message()
- << internal::FormatFileLocation(test_part_result.file_name(),
- test_part_result.line_number())
- << " " << TestPartResultTypeToString(test_part_result.type())
- << test_part_result.message()).GetString();
-}
-
-// Prints a TestPartResult.
-static void PrintTestPartResult(const TestPartResult& test_part_result) {
- const std::string& result =
- PrintTestPartResultToString(test_part_result);
- printf("%s\n", result.c_str());
- fflush(stdout);
- // If the test program runs in Visual Studio or a debugger, the
- // following statements add the test part result message to the Output
- // window such that the user can double-click on it to jump to the
- // corresponding source code location; otherwise they do nothing.
-#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE
- // We don't call OutputDebugString*() on Windows Mobile, as printing
- // to stdout is done by OutputDebugString() there already - we don't
- // want the same message printed twice.
- ::OutputDebugStringA(result.c_str());
- ::OutputDebugStringA("\n");
-#endif
-}
-
-// class PrettyUnitTestResultPrinter
-#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE && \
+
+// Prints a TestPartResult to an std::string.
+static std::string PrintTestPartResultToString(
+ const TestPartResult& test_part_result) {
+ return (Message()
+ << internal::FormatFileLocation(test_part_result.file_name(),
+ test_part_result.line_number())
+ << " " << TestPartResultTypeToString(test_part_result.type())
+ << test_part_result.message()).GetString();
+}
+
+// Prints a TestPartResult.
+static void PrintTestPartResult(const TestPartResult& test_part_result) {
+ const std::string& result =
+ PrintTestPartResultToString(test_part_result);
+ printf("%s\n", result.c_str());
+ fflush(stdout);
+ // If the test program runs in Visual Studio or a debugger, the
+ // following statements add the test part result message to the Output
+ // window such that the user can double-click on it to jump to the
+ // corresponding source code location; otherwise they do nothing.
+#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE
+ // We don't call OutputDebugString*() on Windows Mobile, as printing
+ // to stdout is done by OutputDebugString() there already - we don't
+ // want the same message printed twice.
+ ::OutputDebugStringA(result.c_str());
+ ::OutputDebugStringA("\n");
+#endif
+}
+
+// class PrettyUnitTestResultPrinter
+#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE && \
!GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT && !GTEST_OS_WINDOWS_MINGW
-
-// Returns the character attribute for the given color.
+
+// Returns the character attribute for the given color.
static WORD GetColorAttribute(GTestColor color) {
- switch (color) {
+ switch (color) {
case GTestColor::kRed:
return FOREGROUND_RED;
case GTestColor::kGreen:
return FOREGROUND_GREEN;
case GTestColor::kYellow:
return FOREGROUND_RED | FOREGROUND_GREEN;
- default: return 0;
- }
-}
-
+ default: return 0;
+ }
+}
+
static int GetBitOffset(WORD color_mask) {
if (color_mask == 0) return 0;
@@ -3211,12 +3211,12 @@ static WORD GetNewColor(GTestColor color, WORD old_color_attrs) {
return new_color;
}
-#else
-
+#else
+
// Returns the ANSI color code for the given color. GTestColor::kDefault is
-// an invalid input.
+// an invalid input.
static const char* GetAnsiColorCode(GTestColor color) {
- switch (color) {
+ switch (color) {
case GTestColor::kRed:
return "1";
case GTestColor::kGreen:
@@ -3226,133 +3226,133 @@ static const char* GetAnsiColorCode(GTestColor color) {
default:
return nullptr;
}
-}
-
-#endif // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE
-
+}
+
+#endif // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE
+
// Returns true if and only if Google Test should use colors in the output.
-bool ShouldUseColor(bool stdout_is_tty) {
- const char* const gtest_color = GTEST_FLAG(color).c_str();
-
- if (String::CaseInsensitiveCStringEquals(gtest_color, "auto")) {
+bool ShouldUseColor(bool stdout_is_tty) {
+ const char* const gtest_color = GTEST_FLAG(color).c_str();
+
+ if (String::CaseInsensitiveCStringEquals(gtest_color, "auto")) {
#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MINGW
- // On Windows the TERM variable is usually not set, but the
- // console there does support colors.
- return stdout_is_tty;
-#else
- // On non-Windows platforms, we rely on the TERM variable.
- const char* const term = posix::GetEnv("TERM");
- const bool term_supports_color =
- String::CStringEquals(term, "xterm") ||
- String::CStringEquals(term, "xterm-color") ||
- String::CStringEquals(term, "xterm-256color") ||
- String::CStringEquals(term, "screen") ||
- String::CStringEquals(term, "screen-256color") ||
- String::CStringEquals(term, "tmux") ||
- String::CStringEquals(term, "tmux-256color") ||
- String::CStringEquals(term, "rxvt-unicode") ||
- String::CStringEquals(term, "rxvt-unicode-256color") ||
- String::CStringEquals(term, "linux") ||
- String::CStringEquals(term, "cygwin");
- return stdout_is_tty && term_supports_color;
-#endif // GTEST_OS_WINDOWS
- }
-
- return String::CaseInsensitiveCStringEquals(gtest_color, "yes") ||
- String::CaseInsensitiveCStringEquals(gtest_color, "true") ||
- String::CaseInsensitiveCStringEquals(gtest_color, "t") ||
- String::CStringEquals(gtest_color, "1");
- // We take "yes", "true", "t", and "1" as meaning "yes". If the
- // value is neither one of these nor "auto", we treat it as "no" to
- // be conservative.
-}
-
-// Helpers for printing colored strings to stdout. Note that on Windows, we
-// cannot simply emit special characters and have the terminal change colors.
-// This routine must actually emit the characters rather than return a string
-// that would be colored when printed, as can be done on Linux.
+ // On Windows the TERM variable is usually not set, but the
+ // console there does support colors.
+ return stdout_is_tty;
+#else
+ // On non-Windows platforms, we rely on the TERM variable.
+ const char* const term = posix::GetEnv("TERM");
+ const bool term_supports_color =
+ String::CStringEquals(term, "xterm") ||
+ String::CStringEquals(term, "xterm-color") ||
+ String::CStringEquals(term, "xterm-256color") ||
+ String::CStringEquals(term, "screen") ||
+ String::CStringEquals(term, "screen-256color") ||
+ String::CStringEquals(term, "tmux") ||
+ String::CStringEquals(term, "tmux-256color") ||
+ String::CStringEquals(term, "rxvt-unicode") ||
+ String::CStringEquals(term, "rxvt-unicode-256color") ||
+ String::CStringEquals(term, "linux") ||
+ String::CStringEquals(term, "cygwin");
+ return stdout_is_tty && term_supports_color;
+#endif // GTEST_OS_WINDOWS
+ }
+
+ return String::CaseInsensitiveCStringEquals(gtest_color, "yes") ||
+ String::CaseInsensitiveCStringEquals(gtest_color, "true") ||
+ String::CaseInsensitiveCStringEquals(gtest_color, "t") ||
+ String::CStringEquals(gtest_color, "1");
+ // We take "yes", "true", "t", and "1" as meaning "yes". If the
+ // value is neither one of these nor "auto", we treat it as "no" to
+ // be conservative.
+}
+
+// Helpers for printing colored strings to stdout. Note that on Windows, we
+// cannot simply emit special characters and have the terminal change colors.
+// This routine must actually emit the characters rather than return a string
+// that would be colored when printed, as can be done on Linux.
GTEST_ATTRIBUTE_PRINTF_(2, 3)
static void ColoredPrintf(GTestColor color, const char *fmt, ...) {
- va_list args;
- va_start(args, fmt);
-
+ va_list args;
+ va_start(args, fmt);
+
#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_ZOS || GTEST_OS_IOS || \
GTEST_OS_WINDOWS_PHONE || GTEST_OS_WINDOWS_RT || defined(ESP_PLATFORM)
- const bool use_color = AlwaysFalse();
-#else
- static const bool in_color_mode =
- ShouldUseColor(posix::IsATTY(posix::FileNo(stdout)) != 0);
+ const bool use_color = AlwaysFalse();
+#else
+ static const bool in_color_mode =
+ ShouldUseColor(posix::IsATTY(posix::FileNo(stdout)) != 0);
const bool use_color = in_color_mode && (color != GTestColor::kDefault);
#endif // GTEST_OS_WINDOWS_MOBILE || GTEST_OS_ZOS
-
- if (!use_color) {
- vprintf(fmt, args);
- va_end(args);
- return;
- }
-
-#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE && \
+
+ if (!use_color) {
+ vprintf(fmt, args);
+ va_end(args);
+ return;
+ }
+
+#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE && \
!GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT && !GTEST_OS_WINDOWS_MINGW
- const HANDLE stdout_handle = GetStdHandle(STD_OUTPUT_HANDLE);
-
- // Gets the current text color.
- CONSOLE_SCREEN_BUFFER_INFO buffer_info;
- GetConsoleScreenBufferInfo(stdout_handle, &buffer_info);
- const WORD old_color_attrs = buffer_info.wAttributes;
+ const HANDLE stdout_handle = GetStdHandle(STD_OUTPUT_HANDLE);
+
+ // Gets the current text color.
+ CONSOLE_SCREEN_BUFFER_INFO buffer_info;
+ GetConsoleScreenBufferInfo(stdout_handle, &buffer_info);
+ const WORD old_color_attrs = buffer_info.wAttributes;
const WORD new_color = GetNewColor(color, old_color_attrs);
-
- // We need to flush the stream buffers into the console before each
- // SetConsoleTextAttribute call lest it affect the text that is already
- // printed but has not yet reached the console.
- fflush(stdout);
+
+ // We need to flush the stream buffers into the console before each
+ // SetConsoleTextAttribute call lest it affect the text that is already
+ // printed but has not yet reached the console.
+ fflush(stdout);
SetConsoleTextAttribute(stdout_handle, new_color);
- vprintf(fmt, args);
-
- fflush(stdout);
- // Restores the text color.
- SetConsoleTextAttribute(stdout_handle, old_color_attrs);
-#else
- printf("\033[0;3%sm", GetAnsiColorCode(color));
- vprintf(fmt, args);
- printf("\033[m"); // Resets the terminal to default.
-#endif // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE
- va_end(args);
-}
-
+ vprintf(fmt, args);
+
+ fflush(stdout);
+ // Restores the text color.
+ SetConsoleTextAttribute(stdout_handle, old_color_attrs);
+#else
+ printf("\033[0;3%sm", GetAnsiColorCode(color));
+ vprintf(fmt, args);
+ printf("\033[m"); // Resets the terminal to default.
+#endif // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE
+ va_end(args);
+}
+
// Text printed in Google Test's text output and --gtest_list_tests
-// output to label the type parameter and value parameter for a test.
-static const char kTypeParamLabel[] = "TypeParam";
-static const char kValueParamLabel[] = "GetParam()";
-
+// output to label the type parameter and value parameter for a test.
+static const char kTypeParamLabel[] = "TypeParam";
+static const char kValueParamLabel[] = "GetParam()";
+
static void PrintFullTestCommentIfPresent(const TestInfo& test_info) {
- const char* const type_param = test_info.type_param();
- const char* const value_param = test_info.value_param();
-
+ const char* const type_param = test_info.type_param();
+ const char* const value_param = test_info.value_param();
+
if (type_param != nullptr || value_param != nullptr) {
- printf(", where ");
+ printf(", where ");
if (type_param != nullptr) {
- printf("%s = %s", kTypeParamLabel, type_param);
+ printf("%s = %s", kTypeParamLabel, type_param);
if (value_param != nullptr) printf(" and ");
- }
+ }
if (value_param != nullptr) {
- printf("%s = %s", kValueParamLabel, value_param);
- }
- }
-}
-
-// This class implements the TestEventListener interface.
-//
-// Class PrettyUnitTestResultPrinter is copyable.
-class PrettyUnitTestResultPrinter : public TestEventListener {
- public:
- PrettyUnitTestResultPrinter() {}
+ printf("%s = %s", kValueParamLabel, value_param);
+ }
+ }
+}
+
+// This class implements the TestEventListener interface.
+//
+// Class PrettyUnitTestResultPrinter is copyable.
+class PrettyUnitTestResultPrinter : public TestEventListener {
+ public:
+ PrettyUnitTestResultPrinter() {}
static void PrintTestName(const char* test_suite, const char* test) {
printf("%s.%s", test_suite, test);
- }
-
- // The following methods override what's in the TestEventListener class.
+ }
+
+ // The following methods override what's in the TestEventListener class.
void OnTestProgramStart(const UnitTest& /*unit_test*/) override {}
void OnTestIterationStart(const UnitTest& unit_test, int iteration) override;
void OnEnvironmentsSetUpStart(const UnitTest& unit_test) override;
@@ -3362,7 +3362,7 @@ class PrettyUnitTestResultPrinter : public TestEventListener {
#else
void OnTestSuiteStart(const TestSuite& test_suite) override;
#endif // OnTestCaseStart
-
+
void OnTestStart(const TestInfo& test_info) override;
void OnTestPartResult(const TestPartResult& result) override;
@@ -3378,67 +3378,67 @@ class PrettyUnitTestResultPrinter : public TestEventListener {
void OnTestIterationEnd(const UnitTest& unit_test, int iteration) override;
void OnTestProgramEnd(const UnitTest& /*unit_test*/) override {}
- private:
- static void PrintFailedTests(const UnitTest& unit_test);
+ private:
+ static void PrintFailedTests(const UnitTest& unit_test);
static void PrintFailedTestSuites(const UnitTest& unit_test);
static void PrintSkippedTests(const UnitTest& unit_test);
-};
-
- // Fired before each iteration of tests starts.
-void PrettyUnitTestResultPrinter::OnTestIterationStart(
- const UnitTest& unit_test, int iteration) {
- if (GTEST_FLAG(repeat) != 1)
- printf("\nRepeating all tests (iteration %d) . . .\n\n", iteration + 1);
-
- const char* const filter = GTEST_FLAG(filter).c_str();
-
- // Prints the filter if it's not *. This reminds the user that some
- // tests may be skipped.
- if (!String::CStringEquals(filter, kUniversalFilter)) {
+};
+
+ // Fired before each iteration of tests starts.
+void PrettyUnitTestResultPrinter::OnTestIterationStart(
+ const UnitTest& unit_test, int iteration) {
+ if (GTEST_FLAG(repeat) != 1)
+ printf("\nRepeating all tests (iteration %d) . . .\n\n", iteration + 1);
+
+ const char* const filter = GTEST_FLAG(filter).c_str();
+
+ // Prints the filter if it's not *. This reminds the user that some
+ // tests may be skipped.
+ if (!String::CStringEquals(filter, kUniversalFilter)) {
ColoredPrintf(GTestColor::kYellow, "Note: %s filter = %s\n", GTEST_NAME_,
filter);
- }
-
- if (internal::ShouldShard(kTestTotalShards, kTestShardIndex, false)) {
+ }
+
+ if (internal::ShouldShard(kTestTotalShards, kTestShardIndex, false)) {
const int32_t shard_index = Int32FromEnvOrDie(kTestShardIndex, -1);
ColoredPrintf(GTestColor::kYellow, "Note: This is test shard %d of %s.\n",
- static_cast<int>(shard_index) + 1,
- internal::posix::GetEnv(kTestTotalShards));
- }
-
- if (GTEST_FLAG(shuffle)) {
+ static_cast<int>(shard_index) + 1,
+ internal::posix::GetEnv(kTestTotalShards));
+ }
+
+ if (GTEST_FLAG(shuffle)) {
ColoredPrintf(GTestColor::kYellow,
- "Note: Randomizing tests' orders with a seed of %d .\n",
- unit_test.random_seed());
- }
-
+ "Note: Randomizing tests' orders with a seed of %d .\n",
+ unit_test.random_seed());
+ }
+
ColoredPrintf(GTestColor::kGreen, "[==========] ");
- printf("Running %s from %s.\n",
- FormatTestCount(unit_test.test_to_run_count()).c_str(),
+ printf("Running %s from %s.\n",
+ FormatTestCount(unit_test.test_to_run_count()).c_str(),
FormatTestSuiteCount(unit_test.test_suite_to_run_count()).c_str());
- fflush(stdout);
-}
-
-void PrettyUnitTestResultPrinter::OnEnvironmentsSetUpStart(
- const UnitTest& /*unit_test*/) {
+ fflush(stdout);
+}
+
+void PrettyUnitTestResultPrinter::OnEnvironmentsSetUpStart(
+ const UnitTest& /*unit_test*/) {
ColoredPrintf(GTestColor::kGreen, "[----------] ");
- printf("Global test environment set-up.\n");
- fflush(stdout);
-}
-
+ printf("Global test environment set-up.\n");
+ fflush(stdout);
+}
+
#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-void PrettyUnitTestResultPrinter::OnTestCaseStart(const TestCase& test_case) {
- const std::string counts =
- FormatCountableNoun(test_case.test_to_run_count(), "test", "tests");
+void PrettyUnitTestResultPrinter::OnTestCaseStart(const TestCase& test_case) {
+ const std::string counts =
+ FormatCountableNoun(test_case.test_to_run_count(), "test", "tests");
ColoredPrintf(GTestColor::kGreen, "[----------] ");
- printf("%s from %s", counts.c_str(), test_case.name());
+ printf("%s from %s", counts.c_str(), test_case.name());
if (test_case.type_param() == nullptr) {
- printf("\n");
- } else {
- printf(", where %s = %s\n", kTypeParamLabel, test_case.type_param());
- }
- fflush(stdout);
-}
+ printf("\n");
+ } else {
+ printf(", where %s = %s\n", kTypeParamLabel, test_case.type_param());
+ }
+ fflush(stdout);
+}
#else
void PrettyUnitTestResultPrinter::OnTestSuiteStart(
const TestSuite& test_suite) {
@@ -3454,17 +3454,17 @@ void PrettyUnitTestResultPrinter::OnTestSuiteStart(
fflush(stdout);
}
#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-void PrettyUnitTestResultPrinter::OnTestStart(const TestInfo& test_info) {
+
+void PrettyUnitTestResultPrinter::OnTestStart(const TestInfo& test_info) {
ColoredPrintf(GTestColor::kGreen, "[ RUN ] ");
PrintTestName(test_info.test_suite_name(), test_info.name());
- printf("\n");
- fflush(stdout);
-}
-
-// Called after an assertion failure.
-void PrettyUnitTestResultPrinter::OnTestPartResult(
- const TestPartResult& result) {
+ printf("\n");
+ fflush(stdout);
+}
+
+// Called after an assertion failure.
+void PrettyUnitTestResultPrinter::OnTestPartResult(
+ const TestPartResult& result) {
switch (result.type()) {
// If the test part succeeded, we don't need to do anything.
case TestPartResult::kSuccess:
@@ -3475,44 +3475,44 @@ void PrettyUnitTestResultPrinter::OnTestPartResult(
PrintTestPartResult(result);
fflush(stdout);
}
-}
-
-void PrettyUnitTestResultPrinter::OnTestEnd(const TestInfo& test_info) {
- if (test_info.result()->Passed()) {
+}
+
+void PrettyUnitTestResultPrinter::OnTestEnd(const TestInfo& test_info) {
+ if (test_info.result()->Passed()) {
ColoredPrintf(GTestColor::kGreen, "[ OK ] ");
} else if (test_info.result()->Skipped()) {
ColoredPrintf(GTestColor::kGreen, "[ SKIPPED ] ");
- } else {
+ } else {
ColoredPrintf(GTestColor::kRed, "[ FAILED ] ");
- }
+ }
PrintTestName(test_info.test_suite_name(), test_info.name());
- if (test_info.result()->Failed())
- PrintFullTestCommentIfPresent(test_info);
-
- if (GTEST_FLAG(print_time)) {
- printf(" (%s ms)\n", internal::StreamableToString(
- test_info.result()->elapsed_time()).c_str());
- } else {
- printf("\n");
- }
- fflush(stdout);
-}
-
+ if (test_info.result()->Failed())
+ PrintFullTestCommentIfPresent(test_info);
+
+ if (GTEST_FLAG(print_time)) {
+ printf(" (%s ms)\n", internal::StreamableToString(
+ test_info.result()->elapsed_time()).c_str());
+ } else {
+ printf("\n");
+ }
+ fflush(stdout);
+}
+
#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-void PrettyUnitTestResultPrinter::OnTestCaseEnd(const TestCase& test_case) {
- if (!GTEST_FLAG(print_time)) return;
-
- const std::string counts =
- FormatCountableNoun(test_case.test_to_run_count(), "test", "tests");
+void PrettyUnitTestResultPrinter::OnTestCaseEnd(const TestCase& test_case) {
+ if (!GTEST_FLAG(print_time)) return;
+
+ const std::string counts =
+ FormatCountableNoun(test_case.test_to_run_count(), "test", "tests");
ColoredPrintf(GTestColor::kGreen, "[----------] ");
printf("%s from %s (%s ms total)\n\n", counts.c_str(), test_case.name(),
- internal::StreamableToString(test_case.elapsed_time()).c_str());
- fflush(stdout);
-}
+ internal::StreamableToString(test_case.elapsed_time()).c_str());
+ fflush(stdout);
+}
#else
void PrettyUnitTestResultPrinter::OnTestSuiteEnd(const TestSuite& test_suite) {
if (!GTEST_FLAG(print_time)) return;
-
+
const std::string counts =
FormatCountableNoun(test_suite.test_to_run_count(), "test", "tests");
ColoredPrintf(GTestColor::kGreen, "[----------] ");
@@ -3522,39 +3522,39 @@ void PrettyUnitTestResultPrinter::OnTestSuiteEnd(const TestSuite& test_suite) {
}
#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-void PrettyUnitTestResultPrinter::OnEnvironmentsTearDownStart(
- const UnitTest& /*unit_test*/) {
+void PrettyUnitTestResultPrinter::OnEnvironmentsTearDownStart(
+ const UnitTest& /*unit_test*/) {
ColoredPrintf(GTestColor::kGreen, "[----------] ");
- printf("Global test environment tear-down\n");
- fflush(stdout);
-}
-
-// Internal helper for printing the list of failed tests.
-void PrettyUnitTestResultPrinter::PrintFailedTests(const UnitTest& unit_test) {
- const int failed_test_count = unit_test.failed_test_count();
+ printf("Global test environment tear-down\n");
+ fflush(stdout);
+}
+
+// Internal helper for printing the list of failed tests.
+void PrettyUnitTestResultPrinter::PrintFailedTests(const UnitTest& unit_test) {
+ const int failed_test_count = unit_test.failed_test_count();
ColoredPrintf(GTestColor::kRed, "[ FAILED ] ");
printf("%s, listed below:\n", FormatTestCount(failed_test_count).c_str());
-
+
for (int i = 0; i < unit_test.total_test_suite_count(); ++i) {
const TestSuite& test_suite = *unit_test.GetTestSuite(i);
if (!test_suite.should_run() || (test_suite.failed_test_count() == 0)) {
- continue;
- }
+ continue;
+ }
for (int j = 0; j < test_suite.total_test_count(); ++j) {
const TestInfo& test_info = *test_suite.GetTestInfo(j);
if (!test_info.should_run() || !test_info.result()->Failed()) {
- continue;
- }
+ continue;
+ }
ColoredPrintf(GTestColor::kRed, "[ FAILED ] ");
printf("%s.%s", test_suite.name(), test_info.name());
- PrintFullTestCommentIfPresent(test_info);
- printf("\n");
- }
- }
+ PrintFullTestCommentIfPresent(test_info);
+ printf("\n");
+ }
+ }
printf("\n%2d FAILED %s\n", failed_test_count,
failed_test_count == 1 ? "TEST" : "TESTS");
-}
-
+}
+
// Internal helper for printing the list of test suite failures not covered by
// PrintFailedTests.
void PrettyUnitTestResultPrinter::PrintFailedTestSuites(
@@ -3601,20 +3601,20 @@ void PrettyUnitTestResultPrinter::PrintSkippedTests(const UnitTest& unit_test) {
}
}
-void PrettyUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
- int /*iteration*/) {
+void PrettyUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
+ int /*iteration*/) {
ColoredPrintf(GTestColor::kGreen, "[==========] ");
- printf("%s from %s ran.",
- FormatTestCount(unit_test.test_to_run_count()).c_str(),
+ printf("%s from %s ran.",
+ FormatTestCount(unit_test.test_to_run_count()).c_str(),
FormatTestSuiteCount(unit_test.test_suite_to_run_count()).c_str());
- if (GTEST_FLAG(print_time)) {
- printf(" (%s ms total)",
- internal::StreamableToString(unit_test.elapsed_time()).c_str());
- }
- printf("\n");
+ if (GTEST_FLAG(print_time)) {
+ printf(" (%s ms total)",
+ internal::StreamableToString(unit_test.elapsed_time()).c_str());
+ }
+ printf("\n");
ColoredPrintf(GTestColor::kGreen, "[ PASSED ] ");
- printf("%s.\n", FormatTestCount(unit_test.successful_test_count()).c_str());
-
+ printf("%s.\n", FormatTestCount(unit_test.successful_test_count()).c_str());
+
const int skipped_test_count = unit_test.skipped_test_count();
if (skipped_test_count > 0) {
ColoredPrintf(GTestColor::kGreen, "[ SKIPPED ] ");
@@ -3622,25 +3622,25 @@ void PrettyUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
PrintSkippedTests(unit_test);
}
- if (!unit_test.Passed()) {
- PrintFailedTests(unit_test);
+ if (!unit_test.Passed()) {
+ PrintFailedTests(unit_test);
PrintFailedTestSuites(unit_test);
- }
-
- int num_disabled = unit_test.reportable_disabled_test_count();
- if (num_disabled && !GTEST_FLAG(also_run_disabled_tests)) {
+ }
+
+ int num_disabled = unit_test.reportable_disabled_test_count();
+ if (num_disabled && !GTEST_FLAG(also_run_disabled_tests)) {
if (unit_test.Passed()) {
- printf("\n"); // Add a spacer if no FAILURE banner is displayed.
- }
+ printf("\n"); // Add a spacer if no FAILURE banner is displayed.
+ }
ColoredPrintf(GTestColor::kYellow, " YOU HAVE %d DISABLED %s\n\n",
num_disabled, num_disabled == 1 ? "TEST" : "TESTS");
- }
- // Ensure that Google Test output is printed before, e.g., heapchecker output.
- fflush(stdout);
-}
-
-// End PrettyUnitTestResultPrinter
-
+ }
+ // Ensure that Google Test output is printed before, e.g., heapchecker output.
+ fflush(stdout);
+}
+
+// End PrettyUnitTestResultPrinter
+
// This class implements the TestEventListener interface.
//
// Class BriefUnitTestResultPrinter is copyable.
@@ -3745,21 +3745,21 @@ void BriefUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
// End BriefUnitTestResultPrinter
-// class TestEventRepeater
-//
-// This class forwards events to other event listeners.
-class TestEventRepeater : public TestEventListener {
- public:
- TestEventRepeater() : forwarding_enabled_(true) {}
+// class TestEventRepeater
+//
+// This class forwards events to other event listeners.
+class TestEventRepeater : public TestEventListener {
+ public:
+ TestEventRepeater() : forwarding_enabled_(true) {}
~TestEventRepeater() override;
- void Append(TestEventListener *listener);
- TestEventListener* Release(TestEventListener* listener);
-
- // Controls whether events will be forwarded to listeners_. Set to false
- // in death test child processes.
- bool forwarding_enabled() const { return forwarding_enabled_; }
- void set_forwarding_enabled(bool enable) { forwarding_enabled_ = enable; }
-
+ void Append(TestEventListener *listener);
+ TestEventListener* Release(TestEventListener* listener);
+
+ // Controls whether events will be forwarded to listeners_. Set to false
+ // in death test child processes.
+ bool forwarding_enabled() const { return forwarding_enabled_; }
+ void set_forwarding_enabled(bool enable) { forwarding_enabled_ = enable; }
+
void OnTestProgramStart(const UnitTest& unit_test) override;
void OnTestIterationStart(const UnitTest& unit_test, int iteration) override;
void OnEnvironmentsSetUpStart(const UnitTest& unit_test) override;
@@ -3781,48 +3781,48 @@ class TestEventRepeater : public TestEventListener {
void OnEnvironmentsTearDownEnd(const UnitTest& unit_test) override;
void OnTestIterationEnd(const UnitTest& unit_test, int iteration) override;
void OnTestProgramEnd(const UnitTest& unit_test) override;
-
- private:
- // Controls whether events will be forwarded to listeners_. Set to false
- // in death test child processes.
- bool forwarding_enabled_;
- // The list of listeners that receive events.
- std::vector<TestEventListener*> listeners_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(TestEventRepeater);
-};
-
-TestEventRepeater::~TestEventRepeater() {
- ForEach(listeners_, Delete<TestEventListener>);
-}
-
-void TestEventRepeater::Append(TestEventListener *listener) {
- listeners_.push_back(listener);
-}
-
-TestEventListener* TestEventRepeater::Release(TestEventListener *listener) {
- for (size_t i = 0; i < listeners_.size(); ++i) {
- if (listeners_[i] == listener) {
+
+ private:
+ // Controls whether events will be forwarded to listeners_. Set to false
+ // in death test child processes.
+ bool forwarding_enabled_;
+ // The list of listeners that receive events.
+ std::vector<TestEventListener*> listeners_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(TestEventRepeater);
+};
+
+TestEventRepeater::~TestEventRepeater() {
+ ForEach(listeners_, Delete<TestEventListener>);
+}
+
+void TestEventRepeater::Append(TestEventListener *listener) {
+ listeners_.push_back(listener);
+}
+
+TestEventListener* TestEventRepeater::Release(TestEventListener *listener) {
+ for (size_t i = 0; i < listeners_.size(); ++i) {
+ if (listeners_[i] == listener) {
listeners_.erase(listeners_.begin() + static_cast<int>(i));
- return listener;
- }
- }
-
+ return listener;
+ }
+ }
+
return nullptr;
-}
-
-// Since most methods are very similar, use macros to reduce boilerplate.
-// This defines a member that forwards the call to all listeners.
-#define GTEST_REPEATER_METHOD_(Name, Type) \
-void TestEventRepeater::Name(const Type& parameter) { \
- if (forwarding_enabled_) { \
- for (size_t i = 0; i < listeners_.size(); i++) { \
- listeners_[i]->Name(parameter); \
- } \
- } \
-}
-// This defines a member that forwards the call to all listeners in reverse
-// order.
+}
+
+// Since most methods are very similar, use macros to reduce boilerplate.
+// This defines a member that forwards the call to all listeners.
+#define GTEST_REPEATER_METHOD_(Name, Type) \
+void TestEventRepeater::Name(const Type& parameter) { \
+ if (forwarding_enabled_) { \
+ for (size_t i = 0; i < listeners_.size(); i++) { \
+ listeners_[i]->Name(parameter); \
+ } \
+ } \
+}
+// This defines a member that forwards the call to all listeners in reverse
+// order.
#define GTEST_REVERSE_REPEATER_METHOD_(Name, Type) \
void TestEventRepeater::Name(const Type& parameter) { \
if (forwarding_enabled_) { \
@@ -3831,103 +3831,103 @@ void TestEventRepeater::Name(const Type& parameter) { \
} \
} \
}
-
-GTEST_REPEATER_METHOD_(OnTestProgramStart, UnitTest)
-GTEST_REPEATER_METHOD_(OnEnvironmentsSetUpStart, UnitTest)
+
+GTEST_REPEATER_METHOD_(OnTestProgramStart, UnitTest)
+GTEST_REPEATER_METHOD_(OnEnvironmentsSetUpStart, UnitTest)
// Legacy API is deprecated but still available
#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
GTEST_REPEATER_METHOD_(OnTestCaseStart, TestSuite)
#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
GTEST_REPEATER_METHOD_(OnTestSuiteStart, TestSuite)
-GTEST_REPEATER_METHOD_(OnTestStart, TestInfo)
-GTEST_REPEATER_METHOD_(OnTestPartResult, TestPartResult)
-GTEST_REPEATER_METHOD_(OnEnvironmentsTearDownStart, UnitTest)
-GTEST_REVERSE_REPEATER_METHOD_(OnEnvironmentsSetUpEnd, UnitTest)
-GTEST_REVERSE_REPEATER_METHOD_(OnEnvironmentsTearDownEnd, UnitTest)
-GTEST_REVERSE_REPEATER_METHOD_(OnTestEnd, TestInfo)
+GTEST_REPEATER_METHOD_(OnTestStart, TestInfo)
+GTEST_REPEATER_METHOD_(OnTestPartResult, TestPartResult)
+GTEST_REPEATER_METHOD_(OnEnvironmentsTearDownStart, UnitTest)
+GTEST_REVERSE_REPEATER_METHOD_(OnEnvironmentsSetUpEnd, UnitTest)
+GTEST_REVERSE_REPEATER_METHOD_(OnEnvironmentsTearDownEnd, UnitTest)
+GTEST_REVERSE_REPEATER_METHOD_(OnTestEnd, TestInfo)
// Legacy API is deprecated but still available
#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
GTEST_REVERSE_REPEATER_METHOD_(OnTestCaseEnd, TestSuite)
#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
GTEST_REVERSE_REPEATER_METHOD_(OnTestSuiteEnd, TestSuite)
-GTEST_REVERSE_REPEATER_METHOD_(OnTestProgramEnd, UnitTest)
-
-#undef GTEST_REPEATER_METHOD_
-#undef GTEST_REVERSE_REPEATER_METHOD_
-
-void TestEventRepeater::OnTestIterationStart(const UnitTest& unit_test,
- int iteration) {
- if (forwarding_enabled_) {
- for (size_t i = 0; i < listeners_.size(); i++) {
- listeners_[i]->OnTestIterationStart(unit_test, iteration);
- }
- }
-}
-
-void TestEventRepeater::OnTestIterationEnd(const UnitTest& unit_test,
- int iteration) {
- if (forwarding_enabled_) {
+GTEST_REVERSE_REPEATER_METHOD_(OnTestProgramEnd, UnitTest)
+
+#undef GTEST_REPEATER_METHOD_
+#undef GTEST_REVERSE_REPEATER_METHOD_
+
+void TestEventRepeater::OnTestIterationStart(const UnitTest& unit_test,
+ int iteration) {
+ if (forwarding_enabled_) {
+ for (size_t i = 0; i < listeners_.size(); i++) {
+ listeners_[i]->OnTestIterationStart(unit_test, iteration);
+ }
+ }
+}
+
+void TestEventRepeater::OnTestIterationEnd(const UnitTest& unit_test,
+ int iteration) {
+ if (forwarding_enabled_) {
for (size_t i = listeners_.size(); i > 0; i--) {
listeners_[i - 1]->OnTestIterationEnd(unit_test, iteration);
- }
- }
-}
-
-// End TestEventRepeater
-
-// This class generates an XML output file.
-class XmlUnitTestResultPrinter : public EmptyTestEventListener {
- public:
- explicit XmlUnitTestResultPrinter(const char* output_file);
-
+ }
+ }
+}
+
+// End TestEventRepeater
+
+// This class generates an XML output file.
+class XmlUnitTestResultPrinter : public EmptyTestEventListener {
+ public:
+ explicit XmlUnitTestResultPrinter(const char* output_file);
+
void OnTestIterationEnd(const UnitTest& unit_test, int iteration) override;
void ListTestsMatchingFilter(const std::vector<TestSuite*>& test_suites);
-
+
// Prints an XML summary of all unit tests.
static void PrintXmlTestsList(std::ostream* stream,
const std::vector<TestSuite*>& test_suites);
- private:
- // Is c a whitespace character that is normalized to a space character
- // when it appears in an XML attribute value?
- static bool IsNormalizableWhitespace(char c) {
- return c == 0x9 || c == 0xA || c == 0xD;
- }
-
- // May c appear in a well-formed XML document?
- static bool IsValidXmlCharacter(char c) {
- return IsNormalizableWhitespace(c) || c >= 0x20;
- }
-
- // Returns an XML-escaped copy of the input string str. If
- // is_attribute is true, the text is meant to appear as an attribute
- // value, and normalizable whitespace is preserved by replacing it
- // with character references.
- static std::string EscapeXml(const std::string& str, bool is_attribute);
-
- // Returns the given string with all characters invalid in XML removed.
- static std::string RemoveInvalidXmlCharacters(const std::string& str);
-
- // Convenience wrapper around EscapeXml when str is an attribute value.
- static std::string EscapeXmlAttribute(const std::string& str) {
- return EscapeXml(str, true);
- }
-
- // Convenience wrapper around EscapeXml when str is not an attribute value.
- static std::string EscapeXmlText(const char* str) {
- return EscapeXml(str, false);
- }
-
- // Verifies that the given attribute belongs to the given element and
- // streams the attribute as XML.
- static void OutputXmlAttribute(std::ostream* stream,
- const std::string& element_name,
- const std::string& name,
- const std::string& value);
-
- // Streams an XML CDATA section, escaping invalid CDATA sequences as needed.
- static void OutputXmlCDataSection(::std::ostream* stream, const char* data);
-
+ private:
+ // Is c a whitespace character that is normalized to a space character
+ // when it appears in an XML attribute value?
+ static bool IsNormalizableWhitespace(char c) {
+ return c == 0x9 || c == 0xA || c == 0xD;
+ }
+
+ // May c appear in a well-formed XML document?
+ static bool IsValidXmlCharacter(char c) {
+ return IsNormalizableWhitespace(c) || c >= 0x20;
+ }
+
+ // Returns an XML-escaped copy of the input string str. If
+ // is_attribute is true, the text is meant to appear as an attribute
+ // value, and normalizable whitespace is preserved by replacing it
+ // with character references.
+ static std::string EscapeXml(const std::string& str, bool is_attribute);
+
+ // Returns the given string with all characters invalid in XML removed.
+ static std::string RemoveInvalidXmlCharacters(const std::string& str);
+
+ // Convenience wrapper around EscapeXml when str is an attribute value.
+ static std::string EscapeXmlAttribute(const std::string& str) {
+ return EscapeXml(str, true);
+ }
+
+ // Convenience wrapper around EscapeXml when str is not an attribute value.
+ static std::string EscapeXmlText(const char* str) {
+ return EscapeXml(str, false);
+ }
+
+ // Verifies that the given attribute belongs to the given element and
+ // streams the attribute as XML.
+ static void OutputXmlAttribute(std::ostream* stream,
+ const std::string& element_name,
+ const std::string& name,
+ const std::string& value);
+
+ // Streams an XML CDATA section, escaping invalid CDATA sequences as needed.
+ static void OutputXmlCDataSection(::std::ostream* stream, const char* data);
+
// Streams a test suite XML stanza containing the given test result.
//
// Requires: result.Failed()
@@ -3938,54 +3938,54 @@ class XmlUnitTestResultPrinter : public EmptyTestEventListener {
static void OutputXmlTestResult(::std::ostream* stream,
const TestResult& result);
- // Streams an XML representation of a TestInfo object.
- static void OutputXmlTestInfo(::std::ostream* stream,
+ // Streams an XML representation of a TestInfo object.
+ static void OutputXmlTestInfo(::std::ostream* stream,
const char* test_suite_name,
- const TestInfo& test_info);
-
+ const TestInfo& test_info);
+
// Prints an XML representation of a TestSuite object
static void PrintXmlTestSuite(::std::ostream* stream,
const TestSuite& test_suite);
-
- // Prints an XML summary of unit_test to output stream out.
- static void PrintXmlUnitTest(::std::ostream* stream,
- const UnitTest& unit_test);
-
- // Produces a string representing the test properties in a result as space
- // delimited XML attributes based on the property key="value" pairs.
- // When the std::string is not empty, it includes a space at the beginning,
- // to delimit this attribute from prior attributes.
- static std::string TestPropertiesAsXmlAttributes(const TestResult& result);
-
+
+ // Prints an XML summary of unit_test to output stream out.
+ static void PrintXmlUnitTest(::std::ostream* stream,
+ const UnitTest& unit_test);
+
+ // Produces a string representing the test properties in a result as space
+ // delimited XML attributes based on the property key="value" pairs.
+ // When the std::string is not empty, it includes a space at the beginning,
+ // to delimit this attribute from prior attributes.
+ static std::string TestPropertiesAsXmlAttributes(const TestResult& result);
+
// Streams an XML representation of the test properties of a TestResult
// object.
static void OutputXmlTestProperties(std::ostream* stream,
const TestResult& result);
- // The output file.
- const std::string output_file_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(XmlUnitTestResultPrinter);
-};
-
-// Creates a new XmlUnitTestResultPrinter.
-XmlUnitTestResultPrinter::XmlUnitTestResultPrinter(const char* output_file)
- : output_file_(output_file) {
+ // The output file.
+ const std::string output_file_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(XmlUnitTestResultPrinter);
+};
+
+// Creates a new XmlUnitTestResultPrinter.
+XmlUnitTestResultPrinter::XmlUnitTestResultPrinter(const char* output_file)
+ : output_file_(output_file) {
if (output_file_.empty()) {
GTEST_LOG_(FATAL) << "XML output file may not be null";
- }
-}
-
-// Called after the unit test ends.
-void XmlUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
- int /*iteration*/) {
+ }
+}
+
+// Called after the unit test ends.
+void XmlUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
+ int /*iteration*/) {
FILE* xmlout = OpenFileForWriting(output_file_);
- std::stringstream stream;
- PrintXmlUnitTest(&stream, unit_test);
- fprintf(xmlout, "%s", StringStreamToString(&stream).c_str());
- fclose(xmlout);
-}
-
+ std::stringstream stream;
+ PrintXmlUnitTest(&stream, unit_test);
+ fprintf(xmlout, "%s", StringStreamToString(&stream).c_str());
+ fclose(xmlout);
+}
+
void XmlUnitTestResultPrinter::ListTestsMatchingFilter(
const std::vector<TestSuite*>& test_suites) {
FILE* xmlout = OpenFileForWriting(output_file_);
@@ -3995,168 +3995,168 @@ void XmlUnitTestResultPrinter::ListTestsMatchingFilter(
fclose(xmlout);
}
-// Returns an XML-escaped copy of the input string str. If is_attribute
-// is true, the text is meant to appear as an attribute value, and
-// normalizable whitespace is preserved by replacing it with character
-// references.
-//
-// Invalid XML characters in str, if any, are stripped from the output.
-// It is expected that most, if not all, of the text processed by this
-// module will consist of ordinary English text.
-// If this module is ever modified to produce version 1.1 XML output,
-// most invalid characters can be retained using character references.
-std::string XmlUnitTestResultPrinter::EscapeXml(
- const std::string& str, bool is_attribute) {
- Message m;
-
- for (size_t i = 0; i < str.size(); ++i) {
- const char ch = str[i];
- switch (ch) {
- case '<':
- m << "&lt;";
- break;
- case '>':
- m << "&gt;";
- break;
- case '&':
- m << "&amp;";
- break;
- case '\'':
- if (is_attribute)
- m << "&apos;";
- else
- m << '\'';
- break;
- case '"':
- if (is_attribute)
- m << "&quot;";
- else
- m << '"';
- break;
- default:
- if (IsValidXmlCharacter(ch)) {
- if (is_attribute && IsNormalizableWhitespace(ch))
- m << "&#x" << String::FormatByte(static_cast<unsigned char>(ch))
- << ";";
- else
- m << ch;
- }
- break;
- }
- }
-
- return m.GetString();
-}
-
-// Returns the given string with all characters invalid in XML removed.
-// Currently invalid characters are dropped from the string. An
-// alternative is to replace them with certain characters such as . or ?.
-std::string XmlUnitTestResultPrinter::RemoveInvalidXmlCharacters(
- const std::string& str) {
- std::string output;
- output.reserve(str.size());
- for (std::string::const_iterator it = str.begin(); it != str.end(); ++it)
- if (IsValidXmlCharacter(*it))
- output.push_back(*it);
-
- return output;
-}
-
-// The following routines generate an XML representation of a UnitTest
-// object.
+// Returns an XML-escaped copy of the input string str. If is_attribute
+// is true, the text is meant to appear as an attribute value, and
+// normalizable whitespace is preserved by replacing it with character
+// references.
+//
+// Invalid XML characters in str, if any, are stripped from the output.
+// It is expected that most, if not all, of the text processed by this
+// module will consist of ordinary English text.
+// If this module is ever modified to produce version 1.1 XML output,
+// most invalid characters can be retained using character references.
+std::string XmlUnitTestResultPrinter::EscapeXml(
+ const std::string& str, bool is_attribute) {
+ Message m;
+
+ for (size_t i = 0; i < str.size(); ++i) {
+ const char ch = str[i];
+ switch (ch) {
+ case '<':
+ m << "&lt;";
+ break;
+ case '>':
+ m << "&gt;";
+ break;
+ case '&':
+ m << "&amp;";
+ break;
+ case '\'':
+ if (is_attribute)
+ m << "&apos;";
+ else
+ m << '\'';
+ break;
+ case '"':
+ if (is_attribute)
+ m << "&quot;";
+ else
+ m << '"';
+ break;
+ default:
+ if (IsValidXmlCharacter(ch)) {
+ if (is_attribute && IsNormalizableWhitespace(ch))
+ m << "&#x" << String::FormatByte(static_cast<unsigned char>(ch))
+ << ";";
+ else
+ m << ch;
+ }
+ break;
+ }
+ }
+
+ return m.GetString();
+}
+
+// Returns the given string with all characters invalid in XML removed.
+// Currently invalid characters are dropped from the string. An
+// alternative is to replace them with certain characters such as . or ?.
+std::string XmlUnitTestResultPrinter::RemoveInvalidXmlCharacters(
+ const std::string& str) {
+ std::string output;
+ output.reserve(str.size());
+ for (std::string::const_iterator it = str.begin(); it != str.end(); ++it)
+ if (IsValidXmlCharacter(*it))
+ output.push_back(*it);
+
+ return output;
+}
+
+// The following routines generate an XML representation of a UnitTest
+// object.
// GOOGLETEST_CM0009 DO NOT DELETE
-//
-// This is how Google Test concepts map to the DTD:
-//
-// <testsuites name="AllTests"> <-- corresponds to a UnitTest object
+//
+// This is how Google Test concepts map to the DTD:
+//
+// <testsuites name="AllTests"> <-- corresponds to a UnitTest object
// <testsuite name="testcase-name"> <-- corresponds to a TestSuite object
-// <testcase name="test-name"> <-- corresponds to a TestInfo object
-// <failure message="...">...</failure>
-// <failure message="...">...</failure>
-// <failure message="...">...</failure>
-// <-- individual assertion failures
-// </testcase>
-// </testsuite>
-// </testsuites>
-
-// Formats the given time in milliseconds as seconds.
-std::string FormatTimeInMillisAsSeconds(TimeInMillis ms) {
- ::std::stringstream ss;
- ss << (static_cast<double>(ms) * 1e-3);
- return ss.str();
-}
-
-static bool PortableLocaltime(time_t seconds, struct tm* out) {
-#if defined(_MSC_VER)
- return localtime_s(out, &seconds) == 0;
-#elif defined(__MINGW32__) || defined(__MINGW64__)
- // MINGW <time.h> provides neither localtime_r nor localtime_s, but uses
- // Windows' localtime(), which has a thread-local tm buffer.
- struct tm* tm_ptr = localtime(&seconds); // NOLINT
+// <testcase name="test-name"> <-- corresponds to a TestInfo object
+// <failure message="...">...</failure>
+// <failure message="...">...</failure>
+// <failure message="...">...</failure>
+// <-- individual assertion failures
+// </testcase>
+// </testsuite>
+// </testsuites>
+
+// Formats the given time in milliseconds as seconds.
+std::string FormatTimeInMillisAsSeconds(TimeInMillis ms) {
+ ::std::stringstream ss;
+ ss << (static_cast<double>(ms) * 1e-3);
+ return ss.str();
+}
+
+static bool PortableLocaltime(time_t seconds, struct tm* out) {
+#if defined(_MSC_VER)
+ return localtime_s(out, &seconds) == 0;
+#elif defined(__MINGW32__) || defined(__MINGW64__)
+ // MINGW <time.h> provides neither localtime_r nor localtime_s, but uses
+ // Windows' localtime(), which has a thread-local tm buffer.
+ struct tm* tm_ptr = localtime(&seconds); // NOLINT
if (tm_ptr == nullptr) return false;
- *out = *tm_ptr;
- return true;
+ *out = *tm_ptr;
+ return true;
#elif defined(__STDC_LIB_EXT1__)
// Uses localtime_s when available as localtime_r is only available from
// C23 standard.
return localtime_s(&seconds, out) != nullptr;
-#else
+#else
return localtime_r(&seconds, out) != nullptr;
-#endif
-}
-
-// Converts the given epoch time in milliseconds to a date string in the ISO
-// 8601 format, without the timezone information.
-std::string FormatEpochTimeInMillisAsIso8601(TimeInMillis ms) {
- struct tm time_struct;
- if (!PortableLocaltime(static_cast<time_t>(ms / 1000), &time_struct))
- return "";
+#endif
+}
+
+// Converts the given epoch time in milliseconds to a date string in the ISO
+// 8601 format, without the timezone information.
+std::string FormatEpochTimeInMillisAsIso8601(TimeInMillis ms) {
+ struct tm time_struct;
+ if (!PortableLocaltime(static_cast<time_t>(ms / 1000), &time_struct))
+ return "";
// YYYY-MM-DDThh:mm:ss.sss
- return StreamableToString(time_struct.tm_year + 1900) + "-" +
- String::FormatIntWidth2(time_struct.tm_mon + 1) + "-" +
- String::FormatIntWidth2(time_struct.tm_mday) + "T" +
- String::FormatIntWidth2(time_struct.tm_hour) + ":" +
- String::FormatIntWidth2(time_struct.tm_min) + ":" +
+ return StreamableToString(time_struct.tm_year + 1900) + "-" +
+ String::FormatIntWidth2(time_struct.tm_mon + 1) + "-" +
+ String::FormatIntWidth2(time_struct.tm_mday) + "T" +
+ String::FormatIntWidth2(time_struct.tm_hour) + ":" +
+ String::FormatIntWidth2(time_struct.tm_min) + ":" +
String::FormatIntWidth2(time_struct.tm_sec) + "." +
String::FormatIntWidthN(static_cast<int>(ms % 1000), 3);
-}
-
-// Streams an XML CDATA section, escaping invalid CDATA sequences as needed.
-void XmlUnitTestResultPrinter::OutputXmlCDataSection(::std::ostream* stream,
- const char* data) {
- const char* segment = data;
- *stream << "<![CDATA[";
- for (;;) {
- const char* const next_segment = strstr(segment, "]]>");
+}
+
+// Streams an XML CDATA section, escaping invalid CDATA sequences as needed.
+void XmlUnitTestResultPrinter::OutputXmlCDataSection(::std::ostream* stream,
+ const char* data) {
+ const char* segment = data;
+ *stream << "<![CDATA[";
+ for (;;) {
+ const char* const next_segment = strstr(segment, "]]>");
if (next_segment != nullptr) {
- stream->write(
- segment, static_cast<std::streamsize>(next_segment - segment));
- *stream << "]]>]]&gt;<![CDATA[";
- segment = next_segment + strlen("]]>");
- } else {
- *stream << segment;
- break;
- }
- }
- *stream << "]]>";
-}
-
-void XmlUnitTestResultPrinter::OutputXmlAttribute(
- std::ostream* stream,
- const std::string& element_name,
- const std::string& name,
- const std::string& value) {
- const std::vector<std::string>& allowed_names =
+ stream->write(
+ segment, static_cast<std::streamsize>(next_segment - segment));
+ *stream << "]]>]]&gt;<![CDATA[";
+ segment = next_segment + strlen("]]>");
+ } else {
+ *stream << segment;
+ break;
+ }
+ }
+ *stream << "]]>";
+}
+
+void XmlUnitTestResultPrinter::OutputXmlAttribute(
+ std::ostream* stream,
+ const std::string& element_name,
+ const std::string& name,
+ const std::string& value) {
+ const std::vector<std::string>& allowed_names =
GetReservedOutputAttributesForElement(element_name);
-
- GTEST_CHECK_(std::find(allowed_names.begin(), allowed_names.end(), name) !=
- allowed_names.end())
- << "Attribute " << name << " is not allowed for element <" << element_name
- << ">.";
-
- *stream << " " << name << "=\"" << EscapeXmlAttribute(value) << "\"";
-}
-
+
+ GTEST_CHECK_(std::find(allowed_names.begin(), allowed_names.end(), name) !=
+ allowed_names.end())
+ << "Attribute " << name << " is not allowed for element <" << element_name
+ << ">.";
+
+ *stream << " " << name << "=\"" << EscapeXmlAttribute(value) << "\"";
+}
+
// Streams a test suite XML stanza containing the given test result.
void XmlUnitTestResultPrinter::OutputXmlTestSuiteForTestResult(
::std::ostream* stream, const TestResult& result) {
@@ -4194,28 +4194,28 @@ void XmlUnitTestResultPrinter::OutputXmlTestSuiteForTestResult(
*stream << " </testsuite>\n";
}
-// Prints an XML representation of a TestInfo object.
-void XmlUnitTestResultPrinter::OutputXmlTestInfo(::std::ostream* stream,
+// Prints an XML representation of a TestInfo object.
+void XmlUnitTestResultPrinter::OutputXmlTestInfo(::std::ostream* stream,
const char* test_suite_name,
- const TestInfo& test_info) {
- const TestResult& result = *test_info.result();
+ const TestInfo& test_info) {
+ const TestResult& result = *test_info.result();
const std::string kTestsuite = "testcase";
-
+
if (test_info.is_in_another_shard()) {
return;
}
- *stream << " <testcase";
+ *stream << " <testcase";
OutputXmlAttribute(stream, kTestsuite, "name", test_info.name());
-
+
if (test_info.value_param() != nullptr) {
OutputXmlAttribute(stream, kTestsuite, "value_param",
- test_info.value_param());
- }
+ test_info.value_param());
+ }
if (test_info.type_param() != nullptr) {
OutputXmlAttribute(stream, kTestsuite, "type_param",
test_info.type_param());
- }
+ }
if (GTEST_FLAG(list_tests)) {
OutputXmlAttribute(stream, kTestsuite, "file", test_info.file());
OutputXmlAttribute(stream, kTestsuite, "line",
@@ -4223,43 +4223,43 @@ void XmlUnitTestResultPrinter::OutputXmlTestInfo(::std::ostream* stream,
*stream << " />\n";
return;
}
-
+
OutputXmlAttribute(stream, kTestsuite, "status",
- test_info.should_run() ? "run" : "notrun");
+ test_info.should_run() ? "run" : "notrun");
OutputXmlAttribute(stream, kTestsuite, "result",
test_info.should_run()
? (result.Skipped() ? "skipped" : "completed")
: "suppressed");
OutputXmlAttribute(stream, kTestsuite, "time",
- FormatTimeInMillisAsSeconds(result.elapsed_time()));
+ FormatTimeInMillisAsSeconds(result.elapsed_time()));
OutputXmlAttribute(
stream, kTestsuite, "timestamp",
FormatEpochTimeInMillisAsIso8601(result.start_timestamp()));
OutputXmlAttribute(stream, kTestsuite, "classname", test_suite_name);
-
+
OutputXmlTestResult(stream, result);
}
void XmlUnitTestResultPrinter::OutputXmlTestResult(::std::ostream* stream,
const TestResult& result) {
- int failures = 0;
+ int failures = 0;
int skips = 0;
- for (int i = 0; i < result.total_part_count(); ++i) {
- const TestPartResult& part = result.GetTestPartResult(i);
- if (part.failed()) {
+ for (int i = 0; i < result.total_part_count(); ++i) {
+ const TestPartResult& part = result.GetTestPartResult(i);
+ if (part.failed()) {
if (++failures == 1 && skips == 0) {
- *stream << ">\n";
- }
+ *stream << ">\n";
+ }
const std::string location =
internal::FormatCompilerIndependentFileLocation(part.file_name(),
part.line_number());
const std::string summary = location + "\n" + part.summary();
- *stream << " <failure message=\""
+ *stream << " <failure message=\""
<< EscapeXmlAttribute(summary)
- << "\" type=\"\">";
+ << "\" type=\"\">";
const std::string detail = location + "\n" + part.message();
- OutputXmlCDataSection(stream, RemoveInvalidXmlCharacters(detail).c_str());
- *stream << "</failure>\n";
+ OutputXmlCDataSection(stream, RemoveInvalidXmlCharacters(detail).c_str());
+ *stream << "</failure>\n";
} else if (part.skipped()) {
if (++skips == 1 && failures == 0) {
*stream << ">\n";
@@ -4273,27 +4273,27 @@ void XmlUnitTestResultPrinter::OutputXmlTestResult(::std::ostream* stream,
const std::string detail = location + "\n" + part.message();
OutputXmlCDataSection(stream, RemoveInvalidXmlCharacters(detail).c_str());
*stream << "</skipped>\n";
- }
- }
-
+ }
+ }
+
if (failures == 0 && skips == 0 && result.test_property_count() == 0) {
- *stream << " />\n";
+ *stream << " />\n";
} else {
if (failures == 0 && skips == 0) {
*stream << ">\n";
}
OutputXmlTestProperties(stream, result);
- *stream << " </testcase>\n";
+ *stream << " </testcase>\n";
}
-}
-
+}
+
// Prints an XML representation of a TestSuite object
void XmlUnitTestResultPrinter::PrintXmlTestSuite(std::ostream* stream,
const TestSuite& test_suite) {
- const std::string kTestsuite = "testsuite";
- *stream << " <" << kTestsuite;
+ const std::string kTestsuite = "testsuite";
+ *stream << " <" << kTestsuite;
OutputXmlAttribute(stream, kTestsuite, "name", test_suite.name());
- OutputXmlAttribute(stream, kTestsuite, "tests",
+ OutputXmlAttribute(stream, kTestsuite, "tests",
StreamableToString(test_suite.reportable_test_count()));
if (!GTEST_FLAG(list_tests)) {
OutputXmlAttribute(stream, kTestsuite, "failures",
@@ -4312,50 +4312,50 @@ void XmlUnitTestResultPrinter::PrintXmlTestSuite(std::ostream* stream,
stream, kTestsuite, "timestamp",
FormatEpochTimeInMillisAsIso8601(test_suite.start_timestamp()));
*stream << TestPropertiesAsXmlAttributes(test_suite.ad_hoc_test_result());
- }
+ }
*stream << ">\n";
for (int i = 0; i < test_suite.total_test_count(); ++i) {
if (test_suite.GetTestInfo(i)->is_reportable())
OutputXmlTestInfo(stream, test_suite.name(), *test_suite.GetTestInfo(i));
}
- *stream << " </" << kTestsuite << ">\n";
-}
-
-// Prints an XML summary of unit_test to output stream out.
-void XmlUnitTestResultPrinter::PrintXmlUnitTest(std::ostream* stream,
- const UnitTest& unit_test) {
- const std::string kTestsuites = "testsuites";
-
- *stream << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
- *stream << "<" << kTestsuites;
-
- OutputXmlAttribute(stream, kTestsuites, "tests",
- StreamableToString(unit_test.reportable_test_count()));
- OutputXmlAttribute(stream, kTestsuites, "failures",
- StreamableToString(unit_test.failed_test_count()));
- OutputXmlAttribute(
- stream, kTestsuites, "disabled",
- StreamableToString(unit_test.reportable_disabled_test_count()));
- OutputXmlAttribute(stream, kTestsuites, "errors", "0");
+ *stream << " </" << kTestsuite << ">\n";
+}
+
+// Prints an XML summary of unit_test to output stream out.
+void XmlUnitTestResultPrinter::PrintXmlUnitTest(std::ostream* stream,
+ const UnitTest& unit_test) {
+ const std::string kTestsuites = "testsuites";
+
+ *stream << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+ *stream << "<" << kTestsuites;
+
+ OutputXmlAttribute(stream, kTestsuites, "tests",
+ StreamableToString(unit_test.reportable_test_count()));
+ OutputXmlAttribute(stream, kTestsuites, "failures",
+ StreamableToString(unit_test.failed_test_count()));
+ OutputXmlAttribute(
+ stream, kTestsuites, "disabled",
+ StreamableToString(unit_test.reportable_disabled_test_count()));
+ OutputXmlAttribute(stream, kTestsuites, "errors", "0");
OutputXmlAttribute(stream, kTestsuites, "time",
FormatTimeInMillisAsSeconds(unit_test.elapsed_time()));
- OutputXmlAttribute(
- stream, kTestsuites, "timestamp",
- FormatEpochTimeInMillisAsIso8601(unit_test.start_timestamp()));
-
- if (GTEST_FLAG(shuffle)) {
- OutputXmlAttribute(stream, kTestsuites, "random_seed",
- StreamableToString(unit_test.random_seed()));
- }
- *stream << TestPropertiesAsXmlAttributes(unit_test.ad_hoc_test_result());
-
- OutputXmlAttribute(stream, kTestsuites, "name", "AllTests");
- *stream << ">\n";
-
+ OutputXmlAttribute(
+ stream, kTestsuites, "timestamp",
+ FormatEpochTimeInMillisAsIso8601(unit_test.start_timestamp()));
+
+ if (GTEST_FLAG(shuffle)) {
+ OutputXmlAttribute(stream, kTestsuites, "random_seed",
+ StreamableToString(unit_test.random_seed()));
+ }
+ *stream << TestPropertiesAsXmlAttributes(unit_test.ad_hoc_test_result());
+
+ OutputXmlAttribute(stream, kTestsuites, "name", "AllTests");
+ *stream << ">\n";
+
for (int i = 0; i < unit_test.total_test_suite_count(); ++i) {
if (unit_test.GetTestSuite(i)->reportable_test_count() > 0)
PrintXmlTestSuite(stream, *unit_test.GetTestSuite(i));
- }
+ }
// If there was a test failure outside of one of the test suites (like in a
// test environment) include that in the output.
@@ -4363,9 +4363,9 @@ void XmlUnitTestResultPrinter::PrintXmlUnitTest(std::ostream* stream,
OutputXmlTestSuiteForTestResult(stream, unit_test.ad_hoc_test_result());
}
- *stream << "</" << kTestsuites << ">\n";
-}
-
+ *stream << "</" << kTestsuites << ">\n";
+}
+
void XmlUnitTestResultPrinter::PrintXmlTestsList(
std::ostream* stream, const std::vector<TestSuite*>& test_suites) {
const std::string kTestsuites = "testsuites";
@@ -4388,19 +4388,19 @@ void XmlUnitTestResultPrinter::PrintXmlTestsList(
*stream << "</" << kTestsuites << ">\n";
}
-// Produces a string representing the test properties in a result as space
-// delimited XML attributes based on the property key="value" pairs.
-std::string XmlUnitTestResultPrinter::TestPropertiesAsXmlAttributes(
- const TestResult& result) {
- Message attributes;
- for (int i = 0; i < result.test_property_count(); ++i) {
- const TestProperty& property = result.GetTestProperty(i);
- attributes << " " << property.key() << "="
- << "\"" << EscapeXmlAttribute(property.value()) << "\"";
- }
- return attributes.GetString();
-}
-
+// Produces a string representing the test properties in a result as space
+// delimited XML attributes based on the property key="value" pairs.
+std::string XmlUnitTestResultPrinter::TestPropertiesAsXmlAttributes(
+ const TestResult& result) {
+ Message attributes;
+ for (int i = 0; i < result.test_property_count(); ++i) {
+ const TestProperty& property = result.GetTestProperty(i);
+ attributes << " " << property.key() << "="
+ << "\"" << EscapeXmlAttribute(property.value()) << "\"";
+ }
+ return attributes.GetString();
+}
+
void XmlUnitTestResultPrinter::OutputXmlTestProperties(
std::ostream* stream, const TestResult& result) {
const std::string kProperties = "properties";
@@ -4421,8 +4421,8 @@ void XmlUnitTestResultPrinter::OutputXmlTestProperties(
*stream << "</" << kProperties << ">\n";
}
-// End XmlUnitTestResultPrinter
-
+// End XmlUnitTestResultPrinter
+
// This class generates an JSON output file.
class JsonUnitTestResultPrinter : public EmptyTestEventListener {
public:
@@ -4863,103 +4863,103 @@ std::string JsonUnitTestResultPrinter::TestPropertiesAsJson(
// End JsonUnitTestResultPrinter
-#if GTEST_CAN_STREAM_RESULTS_
-
-// Checks if str contains '=', '&', '%' or '\n' characters. If yes,
-// replaces them by "%xx" where xx is their hexadecimal value. For
-// example, replaces "=" with "%3D". This algorithm is O(strlen(str))
-// in both time and space -- important as the input str may contain an
-// arbitrarily long test failure message and stack trace.
+#if GTEST_CAN_STREAM_RESULTS_
+
+// Checks if str contains '=', '&', '%' or '\n' characters. If yes,
+// replaces them by "%xx" where xx is their hexadecimal value. For
+// example, replaces "=" with "%3D". This algorithm is O(strlen(str))
+// in both time and space -- important as the input str may contain an
+// arbitrarily long test failure message and stack trace.
std::string StreamingListener::UrlEncode(const char* str) {
std::string result;
- result.reserve(strlen(str) + 1);
- for (char ch = *str; ch != '\0'; ch = *++str) {
- switch (ch) {
- case '%':
- case '=':
- case '&':
- case '\n':
- result.append("%" + String::FormatByte(static_cast<unsigned char>(ch)));
- break;
- default:
- result.push_back(ch);
- break;
- }
- }
- return result;
-}
-
-void StreamingListener::SocketWriter::MakeConnection() {
- GTEST_CHECK_(sockfd_ == -1)
- << "MakeConnection() can't be called when there is already a connection.";
-
- addrinfo hints;
- memset(&hints, 0, sizeof(hints));
- hints.ai_family = AF_UNSPEC; // To allow both IPv4 and IPv6 addresses.
- hints.ai_socktype = SOCK_STREAM;
+ result.reserve(strlen(str) + 1);
+ for (char ch = *str; ch != '\0'; ch = *++str) {
+ switch (ch) {
+ case '%':
+ case '=':
+ case '&':
+ case '\n':
+ result.append("%" + String::FormatByte(static_cast<unsigned char>(ch)));
+ break;
+ default:
+ result.push_back(ch);
+ break;
+ }
+ }
+ return result;
+}
+
+void StreamingListener::SocketWriter::MakeConnection() {
+ GTEST_CHECK_(sockfd_ == -1)
+ << "MakeConnection() can't be called when there is already a connection.";
+
+ addrinfo hints;
+ memset(&hints, 0, sizeof(hints));
+ hints.ai_family = AF_UNSPEC; // To allow both IPv4 and IPv6 addresses.
+ hints.ai_socktype = SOCK_STREAM;
addrinfo* servinfo = nullptr;
-
- // Use the getaddrinfo() to get a linked list of IP addresses for
- // the given host name.
- const int error_num = getaddrinfo(
- host_name_.c_str(), port_num_.c_str(), &hints, &servinfo);
- if (error_num != 0) {
- GTEST_LOG_(WARNING) << "stream_result_to: getaddrinfo() failed: "
- << gai_strerror(error_num);
- }
-
- // Loop through all the results and connect to the first we can.
+
+ // Use the getaddrinfo() to get a linked list of IP addresses for
+ // the given host name.
+ const int error_num = getaddrinfo(
+ host_name_.c_str(), port_num_.c_str(), &hints, &servinfo);
+ if (error_num != 0) {
+ GTEST_LOG_(WARNING) << "stream_result_to: getaddrinfo() failed: "
+ << gai_strerror(error_num);
+ }
+
+ // Loop through all the results and connect to the first we can.
for (addrinfo* cur_addr = servinfo; sockfd_ == -1 && cur_addr != nullptr;
- cur_addr = cur_addr->ai_next) {
- sockfd_ = socket(
- cur_addr->ai_family, cur_addr->ai_socktype, cur_addr->ai_protocol);
- if (sockfd_ != -1) {
- // Connect the client socket to the server socket.
- if (connect(sockfd_, cur_addr->ai_addr, cur_addr->ai_addrlen) == -1) {
- close(sockfd_);
- sockfd_ = -1;
- }
- }
- }
-
- freeaddrinfo(servinfo); // all done with this structure
-
- if (sockfd_ == -1) {
- GTEST_LOG_(WARNING) << "stream_result_to: failed to connect to "
- << host_name_ << ":" << port_num_;
- }
-}
-
-// End of class Streaming Listener
-#endif // GTEST_CAN_STREAM_RESULTS__
-
+ cur_addr = cur_addr->ai_next) {
+ sockfd_ = socket(
+ cur_addr->ai_family, cur_addr->ai_socktype, cur_addr->ai_protocol);
+ if (sockfd_ != -1) {
+ // Connect the client socket to the server socket.
+ if (connect(sockfd_, cur_addr->ai_addr, cur_addr->ai_addrlen) == -1) {
+ close(sockfd_);
+ sockfd_ = -1;
+ }
+ }
+ }
+
+ freeaddrinfo(servinfo); // all done with this structure
+
+ if (sockfd_ == -1) {
+ GTEST_LOG_(WARNING) << "stream_result_to: failed to connect to "
+ << host_name_ << ":" << port_num_;
+ }
+}
+
+// End of class Streaming Listener
+#endif // GTEST_CAN_STREAM_RESULTS__
+
// class OsStackTraceGetter
-
+
const char* const OsStackTraceGetterInterface::kElidedFramesMarker =
"... " GTEST_NAME_ " internal frames ...";
-
+
std::string OsStackTraceGetter::CurrentStackTrace(int max_depth, int skip_count)
GTEST_LOCK_EXCLUDED_(mutex_) {
#if GTEST_HAS_ABSL
std::string result;
-
+
if (max_depth <= 0) {
return result;
}
-
+
max_depth = std::min(max_depth, kMaxStackTraceDepth);
-
+
std::vector<void*> raw_stack(max_depth);
// Skips the frames requested by the caller, plus this function.
const int raw_stack_size =
absl::GetStackTrace(&raw_stack[0], max_depth, skip_count + 1);
-
+
void* caller_frame = nullptr;
{
MutexLock lock(&mutex_);
caller_frame = caller_frame_;
}
-
+
for (int i = 0; i < raw_stack_size; ++i) {
if (raw_stack[i] == caller_frame &&
!GTEST_FLAG(show_internal_stack_frames)) {
@@ -4984,41 +4984,41 @@ std::string OsStackTraceGetter::CurrentStackTrace(int max_depth, int skip_count)
#else // !GTEST_HAS_ABSL
static_cast<void>(max_depth);
static_cast<void>(skip_count);
- return "";
+ return "";
#endif // GTEST_HAS_ABSL
-}
-
+}
+
void OsStackTraceGetter::UponLeavingGTest() GTEST_LOCK_EXCLUDED_(mutex_) {
#if GTEST_HAS_ABSL
void* caller_frame = nullptr;
if (absl::GetStackTrace(&caller_frame, 1, 3) <= 0) {
caller_frame = nullptr;
}
-
+
MutexLock lock(&mutex_);
caller_frame_ = caller_frame;
#endif // GTEST_HAS_ABSL
}
-// A helper class that creates the premature-exit file in its
-// constructor and deletes the file in its destructor.
-class ScopedPrematureExitFile {
- public:
- explicit ScopedPrematureExitFile(const char* premature_exit_filepath)
+// A helper class that creates the premature-exit file in its
+// constructor and deletes the file in its destructor.
+class ScopedPrematureExitFile {
+ public:
+ explicit ScopedPrematureExitFile(const char* premature_exit_filepath)
: premature_exit_filepath_(premature_exit_filepath ?
premature_exit_filepath : "") {
- // If a path to the premature-exit file is specified...
+ // If a path to the premature-exit file is specified...
if (!premature_exit_filepath_.empty()) {
- // create the file with a single "0" character in it. I/O
- // errors are ignored as there's nothing better we can do and we
- // don't want to fail the test because of this.
- FILE* pfile = posix::FOpen(premature_exit_filepath, "w");
- fwrite("0", 1, 1, pfile);
- fclose(pfile);
- }
- }
-
- ~ScopedPrematureExitFile() {
+ // create the file with a single "0" character in it. I/O
+ // errors are ignored as there's nothing better we can do and we
+ // don't want to fail the test because of this.
+ FILE* pfile = posix::FOpen(premature_exit_filepath, "w");
+ fwrite("0", 1, 1, pfile);
+ fclose(pfile);
+ }
+ }
+
+ ~ScopedPrematureExitFile() {
#if !defined GTEST_OS_ESP8266
if (!premature_exit_filepath_.empty()) {
int retval = remove(premature_exit_filepath_.c_str());
@@ -5027,130 +5027,130 @@ class ScopedPrematureExitFile {
<< premature_exit_filepath_ << "\" with error "
<< retval;
}
- }
+ }
#endif
- }
-
- private:
+ }
+
+ private:
const std::string premature_exit_filepath_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedPrematureExitFile);
-};
-
-} // namespace internal
-
-// class TestEventListeners
-
-TestEventListeners::TestEventListeners()
- : repeater_(new internal::TestEventRepeater()),
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedPrematureExitFile);
+};
+
+} // namespace internal
+
+// class TestEventListeners
+
+TestEventListeners::TestEventListeners()
+ : repeater_(new internal::TestEventRepeater()),
default_result_printer_(nullptr),
default_xml_generator_(nullptr) {}
-
-TestEventListeners::~TestEventListeners() { delete repeater_; }
-
-// Returns the standard listener responsible for the default console
-// output. Can be removed from the listeners list to shut down default
-// console output. Note that removing this object from the listener list
-// with Release transfers its ownership to the user.
-void TestEventListeners::Append(TestEventListener* listener) {
- repeater_->Append(listener);
-}
-
-// Removes the given event listener from the list and returns it. It then
-// becomes the caller's responsibility to delete the listener. Returns
-// NULL if the listener is not found in the list.
-TestEventListener* TestEventListeners::Release(TestEventListener* listener) {
- if (listener == default_result_printer_)
+
+TestEventListeners::~TestEventListeners() { delete repeater_; }
+
+// Returns the standard listener responsible for the default console
+// output. Can be removed from the listeners list to shut down default
+// console output. Note that removing this object from the listener list
+// with Release transfers its ownership to the user.
+void TestEventListeners::Append(TestEventListener* listener) {
+ repeater_->Append(listener);
+}
+
+// Removes the given event listener from the list and returns it. It then
+// becomes the caller's responsibility to delete the listener. Returns
+// NULL if the listener is not found in the list.
+TestEventListener* TestEventListeners::Release(TestEventListener* listener) {
+ if (listener == default_result_printer_)
default_result_printer_ = nullptr;
- else if (listener == default_xml_generator_)
+ else if (listener == default_xml_generator_)
default_xml_generator_ = nullptr;
- return repeater_->Release(listener);
-}
-
-// Returns repeater that broadcasts the TestEventListener events to all
-// subscribers.
-TestEventListener* TestEventListeners::repeater() { return repeater_; }
-
-// Sets the default_result_printer attribute to the provided listener.
-// The listener is also added to the listener list and previous
-// default_result_printer is removed from it and deleted. The listener can
-// also be NULL in which case it will not be added to the list. Does
-// nothing if the previous and the current listener objects are the same.
-void TestEventListeners::SetDefaultResultPrinter(TestEventListener* listener) {
- if (default_result_printer_ != listener) {
- // It is an error to pass this method a listener that is already in the
- // list.
- delete Release(default_result_printer_);
- default_result_printer_ = listener;
+ return repeater_->Release(listener);
+}
+
+// Returns repeater that broadcasts the TestEventListener events to all
+// subscribers.
+TestEventListener* TestEventListeners::repeater() { return repeater_; }
+
+// Sets the default_result_printer attribute to the provided listener.
+// The listener is also added to the listener list and previous
+// default_result_printer is removed from it and deleted. The listener can
+// also be NULL in which case it will not be added to the list. Does
+// nothing if the previous and the current listener objects are the same.
+void TestEventListeners::SetDefaultResultPrinter(TestEventListener* listener) {
+ if (default_result_printer_ != listener) {
+ // It is an error to pass this method a listener that is already in the
+ // list.
+ delete Release(default_result_printer_);
+ default_result_printer_ = listener;
if (listener != nullptr) Append(listener);
- }
-}
-
-// Sets the default_xml_generator attribute to the provided listener. The
-// listener is also added to the listener list and previous
-// default_xml_generator is removed from it and deleted. The listener can
-// also be NULL in which case it will not be added to the list. Does
-// nothing if the previous and the current listener objects are the same.
-void TestEventListeners::SetDefaultXmlGenerator(TestEventListener* listener) {
- if (default_xml_generator_ != listener) {
- // It is an error to pass this method a listener that is already in the
- // list.
- delete Release(default_xml_generator_);
- default_xml_generator_ = listener;
+ }
+}
+
+// Sets the default_xml_generator attribute to the provided listener. The
+// listener is also added to the listener list and previous
+// default_xml_generator is removed from it and deleted. The listener can
+// also be NULL in which case it will not be added to the list. Does
+// nothing if the previous and the current listener objects are the same.
+void TestEventListeners::SetDefaultXmlGenerator(TestEventListener* listener) {
+ if (default_xml_generator_ != listener) {
+ // It is an error to pass this method a listener that is already in the
+ // list.
+ delete Release(default_xml_generator_);
+ default_xml_generator_ = listener;
if (listener != nullptr) Append(listener);
- }
-}
-
-// Controls whether events will be forwarded by the repeater to the
-// listeners in the list.
-bool TestEventListeners::EventForwardingEnabled() const {
- return repeater_->forwarding_enabled();
-}
-
-void TestEventListeners::SuppressEventForwarding() {
- repeater_->set_forwarding_enabled(false);
-}
-
-// class UnitTest
-
-// Gets the singleton UnitTest object. The first time this method is
-// called, a UnitTest object is constructed and returned. Consecutive
-// calls will return the same object.
-//
-// We don't protect this under mutex_ as a user is not supposed to
-// call this before main() starts, from which point on the return
-// value will never change.
-UnitTest* UnitTest::GetInstance() {
- // CodeGear C++Builder insists on a public destructor for the
- // default implementation. Use this implementation to keep good OO
- // design with private destructor.
-
+ }
+}
+
+// Controls whether events will be forwarded by the repeater to the
+// listeners in the list.
+bool TestEventListeners::EventForwardingEnabled() const {
+ return repeater_->forwarding_enabled();
+}
+
+void TestEventListeners::SuppressEventForwarding() {
+ repeater_->set_forwarding_enabled(false);
+}
+
+// class UnitTest
+
+// Gets the singleton UnitTest object. The first time this method is
+// called, a UnitTest object is constructed and returned. Consecutive
+// calls will return the same object.
+//
+// We don't protect this under mutex_ as a user is not supposed to
+// call this before main() starts, from which point on the return
+// value will never change.
+UnitTest* UnitTest::GetInstance() {
+ // CodeGear C++Builder insists on a public destructor for the
+ // default implementation. Use this implementation to keep good OO
+ // design with private destructor.
+
#if defined(__BORLANDC__)
- static UnitTest* const instance = new UnitTest;
- return instance;
-#else
- static UnitTest instance;
- return &instance;
+ static UnitTest* const instance = new UnitTest;
+ return instance;
+#else
+ static UnitTest instance;
+ return &instance;
#endif // defined(__BORLANDC__)
-}
-
+}
+
// Gets the number of successful test suites.
int UnitTest::successful_test_suite_count() const {
return impl()->successful_test_suite_count();
-}
-
+}
+
// Gets the number of failed test suites.
int UnitTest::failed_test_suite_count() const {
return impl()->failed_test_suite_count();
-}
-
+}
+
// Gets the number of all test suites.
int UnitTest::total_test_suite_count() const {
return impl()->total_test_suite_count();
-}
-
+}
+
// Gets the number of all test suites that contain at least one test
-// that should run.
+// that should run.
int UnitTest::test_suite_to_run_count() const {
return impl()->test_suite_to_run_count();
}
@@ -5166,64 +5166,64 @@ int UnitTest::failed_test_case_count() const {
int UnitTest::total_test_case_count() const {
return impl()->total_test_suite_count();
}
-int UnitTest::test_case_to_run_count() const {
+int UnitTest::test_case_to_run_count() const {
return impl()->test_suite_to_run_count();
-}
+}
#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-// Gets the number of successful tests.
-int UnitTest::successful_test_count() const {
- return impl()->successful_test_count();
-}
-
+
+// Gets the number of successful tests.
+int UnitTest::successful_test_count() const {
+ return impl()->successful_test_count();
+}
+
// Gets the number of skipped tests.
int UnitTest::skipped_test_count() const {
return impl()->skipped_test_count();
}
-// Gets the number of failed tests.
-int UnitTest::failed_test_count() const { return impl()->failed_test_count(); }
-
-// Gets the number of disabled tests that will be reported in the XML report.
-int UnitTest::reportable_disabled_test_count() const {
- return impl()->reportable_disabled_test_count();
-}
-
-// Gets the number of disabled tests.
-int UnitTest::disabled_test_count() const {
- return impl()->disabled_test_count();
-}
-
-// Gets the number of tests to be printed in the XML report.
-int UnitTest::reportable_test_count() const {
- return impl()->reportable_test_count();
-}
-
-// Gets the number of all tests.
-int UnitTest::total_test_count() const { return impl()->total_test_count(); }
-
-// Gets the number of tests that should run.
-int UnitTest::test_to_run_count() const { return impl()->test_to_run_count(); }
-
-// Gets the time of the test program start, in ms from the start of the
-// UNIX epoch.
-internal::TimeInMillis UnitTest::start_timestamp() const {
- return impl()->start_timestamp();
-}
-
-// Gets the elapsed time, in milliseconds.
-internal::TimeInMillis UnitTest::elapsed_time() const {
- return impl()->elapsed_time();
-}
-
+// Gets the number of failed tests.
+int UnitTest::failed_test_count() const { return impl()->failed_test_count(); }
+
+// Gets the number of disabled tests that will be reported in the XML report.
+int UnitTest::reportable_disabled_test_count() const {
+ return impl()->reportable_disabled_test_count();
+}
+
+// Gets the number of disabled tests.
+int UnitTest::disabled_test_count() const {
+ return impl()->disabled_test_count();
+}
+
+// Gets the number of tests to be printed in the XML report.
+int UnitTest::reportable_test_count() const {
+ return impl()->reportable_test_count();
+}
+
+// Gets the number of all tests.
+int UnitTest::total_test_count() const { return impl()->total_test_count(); }
+
+// Gets the number of tests that should run.
+int UnitTest::test_to_run_count() const { return impl()->test_to_run_count(); }
+
+// Gets the time of the test program start, in ms from the start of the
+// UNIX epoch.
+internal::TimeInMillis UnitTest::start_timestamp() const {
+ return impl()->start_timestamp();
+}
+
+// Gets the elapsed time, in milliseconds.
+internal::TimeInMillis UnitTest::elapsed_time() const {
+ return impl()->elapsed_time();
+}
+
// Returns true if and only if the unit test passed (i.e. all test suites
// passed).
-bool UnitTest::Passed() const { return impl()->Passed(); }
-
+bool UnitTest::Passed() const { return impl()->Passed(); }
+
// Returns true if and only if the unit test failed (i.e. some test suite
// failed or something outside of all tests failed).
-bool UnitTest::Failed() const { return impl()->Failed(); }
-
+bool UnitTest::Failed() const { return impl()->Failed(); }
+
// Gets the i-th test suite among all the test suites. i can range from 0 to
// total_test_suite_count() - 1. If i is not in that range, returns NULL.
const TestSuite* UnitTest::GetTestSuite(int i) const {
@@ -5232,195 +5232,195 @@ const TestSuite* UnitTest::GetTestSuite(int i) const {
// Legacy API is deprecated but still available
#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-const TestCase* UnitTest::GetTestCase(int i) const {
- return impl()->GetTestCase(i);
-}
+const TestCase* UnitTest::GetTestCase(int i) const {
+ return impl()->GetTestCase(i);
+}
#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-// Returns the TestResult containing information on test failures and
+
+// Returns the TestResult containing information on test failures and
// properties logged outside of individual test suites.
-const TestResult& UnitTest::ad_hoc_test_result() const {
- return *impl()->ad_hoc_test_result();
-}
-
+const TestResult& UnitTest::ad_hoc_test_result() const {
+ return *impl()->ad_hoc_test_result();
+}
+
// Gets the i-th test suite among all the test suites. i can range from 0 to
// total_test_suite_count() - 1. If i is not in that range, returns NULL.
TestSuite* UnitTest::GetMutableTestSuite(int i) {
return impl()->GetMutableSuiteCase(i);
-}
-
-// Returns the list of event listeners that can be used to track events
-// inside Google Test.
-TestEventListeners& UnitTest::listeners() {
- return *impl()->listeners();
-}
-
-// Registers and returns a global test environment. When a test
-// program is run, all global test environments will be set-up in the
-// order they were registered. After all tests in the program have
-// finished, all global test environments will be torn-down in the
-// *reverse* order they were registered.
-//
-// The UnitTest object takes ownership of the given environment.
-//
-// We don't protect this under mutex_, as we only support calling it
-// from the main thread.
-Environment* UnitTest::AddEnvironment(Environment* env) {
+}
+
+// Returns the list of event listeners that can be used to track events
+// inside Google Test.
+TestEventListeners& UnitTest::listeners() {
+ return *impl()->listeners();
+}
+
+// Registers and returns a global test environment. When a test
+// program is run, all global test environments will be set-up in the
+// order they were registered. After all tests in the program have
+// finished, all global test environments will be torn-down in the
+// *reverse* order they were registered.
+//
+// The UnitTest object takes ownership of the given environment.
+//
+// We don't protect this under mutex_, as we only support calling it
+// from the main thread.
+Environment* UnitTest::AddEnvironment(Environment* env) {
if (env == nullptr) {
return nullptr;
- }
-
- impl_->environments().push_back(env);
- return env;
-}
-
-// Adds a TestPartResult to the current TestResult object. All Google Test
-// assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc) eventually call
-// this to report their results. The user code should use the
-// assertion macros instead of calling this directly.
-void UnitTest::AddTestPartResult(
- TestPartResult::Type result_type,
- const char* file_name,
- int line_number,
- const std::string& message,
- const std::string& os_stack_trace) GTEST_LOCK_EXCLUDED_(mutex_) {
- Message msg;
- msg << message;
-
- internal::MutexLock lock(&mutex_);
- if (impl_->gtest_trace_stack().size() > 0) {
- msg << "\n" << GTEST_NAME_ << " trace:";
-
+ }
+
+ impl_->environments().push_back(env);
+ return env;
+}
+
+// Adds a TestPartResult to the current TestResult object. All Google Test
+// assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc) eventually call
+// this to report their results. The user code should use the
+// assertion macros instead of calling this directly.
+void UnitTest::AddTestPartResult(
+ TestPartResult::Type result_type,
+ const char* file_name,
+ int line_number,
+ const std::string& message,
+ const std::string& os_stack_trace) GTEST_LOCK_EXCLUDED_(mutex_) {
+ Message msg;
+ msg << message;
+
+ internal::MutexLock lock(&mutex_);
+ if (impl_->gtest_trace_stack().size() > 0) {
+ msg << "\n" << GTEST_NAME_ << " trace:";
+
for (size_t i = impl_->gtest_trace_stack().size(); i > 0; --i) {
- const internal::TraceInfo& trace = impl_->gtest_trace_stack()[i - 1];
- msg << "\n" << internal::FormatFileLocation(trace.file, trace.line)
- << " " << trace.message;
- }
- }
-
+ const internal::TraceInfo& trace = impl_->gtest_trace_stack()[i - 1];
+ msg << "\n" << internal::FormatFileLocation(trace.file, trace.line)
+ << " " << trace.message;
+ }
+ }
+
if (os_stack_trace.c_str() != nullptr && !os_stack_trace.empty()) {
- msg << internal::kStackTraceMarker << os_stack_trace;
- }
-
+ msg << internal::kStackTraceMarker << os_stack_trace;
+ }
+
const TestPartResult result = TestPartResult(
result_type, file_name, line_number, msg.GetString().c_str());
- impl_->GetTestPartResultReporterForCurrentThread()->
- ReportTestPartResult(result);
-
+ impl_->GetTestPartResultReporterForCurrentThread()->
+ ReportTestPartResult(result);
+
if (result_type != TestPartResult::kSuccess &&
result_type != TestPartResult::kSkip) {
- // gtest_break_on_failure takes precedence over
- // gtest_throw_on_failure. This allows a user to set the latter
- // in the code (perhaps in order to use Google Test assertions
- // with another testing framework) and specify the former on the
- // command line for debugging.
- if (GTEST_FLAG(break_on_failure)) {
-#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT
- // Using DebugBreak on Windows allows gtest to still break into a debugger
- // when a failure happens and both the --gtest_break_on_failure and
- // the --gtest_catch_exceptions flags are specified.
- DebugBreak();
+ // gtest_break_on_failure takes precedence over
+ // gtest_throw_on_failure. This allows a user to set the latter
+ // in the code (perhaps in order to use Google Test assertions
+ // with another testing framework) and specify the former on the
+ // command line for debugging.
+ if (GTEST_FLAG(break_on_failure)) {
+#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT
+ // Using DebugBreak on Windows allows gtest to still break into a debugger
+ // when a failure happens and both the --gtest_break_on_failure and
+ // the --gtest_catch_exceptions flags are specified.
+ DebugBreak();
#elif (!defined(__native_client__)) && \
((defined(__clang__) || defined(__GNUC__)) && \
(defined(__x86_64__) || defined(__i386__)))
// with clang/gcc we can achieve the same effect on x86 by invoking int3
asm("int3");
-#else
+#else
// Dereference nullptr through a volatile pointer to prevent the compiler
- // from removing. We use this rather than abort() or __builtin_trap() for
+ // from removing. We use this rather than abort() or __builtin_trap() for
// portability: some debuggers don't correctly trap abort().
*static_cast<volatile int*>(nullptr) = 1;
-#endif // GTEST_OS_WINDOWS
- } else if (GTEST_FLAG(throw_on_failure)) {
-#if GTEST_HAS_EXCEPTIONS
- throw internal::GoogleTestFailureException(result);
-#else
- // We cannot call abort() as it generates a pop-up in debug mode
- // that cannot be suppressed in VC 7.1 or below.
- exit(1);
-#endif
- }
- }
-}
-
-// Adds a TestProperty to the current TestResult object when invoked from
+#endif // GTEST_OS_WINDOWS
+ } else if (GTEST_FLAG(throw_on_failure)) {
+#if GTEST_HAS_EXCEPTIONS
+ throw internal::GoogleTestFailureException(result);
+#else
+ // We cannot call abort() as it generates a pop-up in debug mode
+ // that cannot be suppressed in VC 7.1 or below.
+ exit(1);
+#endif
+ }
+ }
+}
+
+// Adds a TestProperty to the current TestResult object when invoked from
// inside a test, to current TestSuite's ad_hoc_test_result_ when invoked
// from SetUpTestSuite or TearDownTestSuite, or to the global property set
-// when invoked elsewhere. If the result already contains a property with
-// the same key, the value will be updated.
-void UnitTest::RecordProperty(const std::string& key,
- const std::string& value) {
- impl_->RecordProperty(TestProperty(key, value));
-}
-
-// Runs all tests in this UnitTest object and prints the result.
-// Returns 0 if successful, or 1 otherwise.
-//
-// We don't protect this under mutex_, as we only support calling it
-// from the main thread.
-int UnitTest::Run() {
- const bool in_death_test_child_process =
- internal::GTEST_FLAG(internal_run_death_test).length() > 0;
-
- // Google Test implements this protocol for catching that a test
- // program exits before returning control to Google Test:
- //
- // 1. Upon start, Google Test creates a file whose absolute path
- // is specified by the environment variable
- // TEST_PREMATURE_EXIT_FILE.
- // 2. When Google Test has finished its work, it deletes the file.
- //
- // This allows a test runner to set TEST_PREMATURE_EXIT_FILE before
- // running a Google-Test-based test program and check the existence
- // of the file at the end of the test execution to see if it has
- // exited prematurely.
-
- // If we are in the child process of a death test, don't
- // create/delete the premature exit file, as doing so is unnecessary
- // and will confuse the parent process. Otherwise, create/delete
- // the file upon entering/leaving this function. If the program
- // somehow exits before this function has a chance to return, the
- // premature-exit file will be left undeleted, causing a test runner
- // that understands the premature-exit-file protocol to report the
- // test as having failed.
- const internal::ScopedPrematureExitFile premature_exit_file(
+// when invoked elsewhere. If the result already contains a property with
+// the same key, the value will be updated.
+void UnitTest::RecordProperty(const std::string& key,
+ const std::string& value) {
+ impl_->RecordProperty(TestProperty(key, value));
+}
+
+// Runs all tests in this UnitTest object and prints the result.
+// Returns 0 if successful, or 1 otherwise.
+//
+// We don't protect this under mutex_, as we only support calling it
+// from the main thread.
+int UnitTest::Run() {
+ const bool in_death_test_child_process =
+ internal::GTEST_FLAG(internal_run_death_test).length() > 0;
+
+ // Google Test implements this protocol for catching that a test
+ // program exits before returning control to Google Test:
+ //
+ // 1. Upon start, Google Test creates a file whose absolute path
+ // is specified by the environment variable
+ // TEST_PREMATURE_EXIT_FILE.
+ // 2. When Google Test has finished its work, it deletes the file.
+ //
+ // This allows a test runner to set TEST_PREMATURE_EXIT_FILE before
+ // running a Google-Test-based test program and check the existence
+ // of the file at the end of the test execution to see if it has
+ // exited prematurely.
+
+ // If we are in the child process of a death test, don't
+ // create/delete the premature exit file, as doing so is unnecessary
+ // and will confuse the parent process. Otherwise, create/delete
+ // the file upon entering/leaving this function. If the program
+ // somehow exits before this function has a chance to return, the
+ // premature-exit file will be left undeleted, causing a test runner
+ // that understands the premature-exit-file protocol to report the
+ // test as having failed.
+ const internal::ScopedPrematureExitFile premature_exit_file(
in_death_test_child_process
? nullptr
: internal::posix::GetEnv("TEST_PREMATURE_EXIT_FILE"));
-
- // Captures the value of GTEST_FLAG(catch_exceptions). This value will be
- // used for the duration of the program.
- impl()->set_catch_exceptions(GTEST_FLAG(catch_exceptions));
-
+
+ // Captures the value of GTEST_FLAG(catch_exceptions). This value will be
+ // used for the duration of the program.
+ impl()->set_catch_exceptions(GTEST_FLAG(catch_exceptions));
+
#if GTEST_OS_WINDOWS
- // Either the user wants Google Test to catch exceptions thrown by the
- // tests or this is executing in the context of death test child
- // process. In either case the user does not want to see pop-up dialogs
- // about crashes - they are expected.
- if (impl()->catch_exceptions() || in_death_test_child_process) {
-# if !GTEST_OS_WINDOWS_MOBILE && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT
- // SetErrorMode doesn't exist on CE.
- SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOALIGNMENTFAULTEXCEPT |
- SEM_NOGPFAULTERRORBOX | SEM_NOOPENFILEERRORBOX);
-# endif // !GTEST_OS_WINDOWS_MOBILE
-
-# if (defined(_MSC_VER) || GTEST_OS_WINDOWS_MINGW) && !GTEST_OS_WINDOWS_MOBILE
- // Death test children can be terminated with _abort(). On Windows,
- // _abort() can show a dialog with a warning message. This forces the
- // abort message to go to stderr instead.
- _set_error_mode(_OUT_TO_STDERR);
-# endif
-
+ // Either the user wants Google Test to catch exceptions thrown by the
+ // tests or this is executing in the context of death test child
+ // process. In either case the user does not want to see pop-up dialogs
+ // about crashes - they are expected.
+ if (impl()->catch_exceptions() || in_death_test_child_process) {
+# if !GTEST_OS_WINDOWS_MOBILE && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT
+ // SetErrorMode doesn't exist on CE.
+ SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOALIGNMENTFAULTEXCEPT |
+ SEM_NOGPFAULTERRORBOX | SEM_NOOPENFILEERRORBOX);
+# endif // !GTEST_OS_WINDOWS_MOBILE
+
+# if (defined(_MSC_VER) || GTEST_OS_WINDOWS_MINGW) && !GTEST_OS_WINDOWS_MOBILE
+ // Death test children can be terminated with _abort(). On Windows,
+ // _abort() can show a dialog with a warning message. This forces the
+ // abort message to go to stderr instead.
+ _set_error_mode(_OUT_TO_STDERR);
+# endif
+
# if defined(_MSC_VER) && !GTEST_OS_WINDOWS_MOBILE
- // In the debug version, Visual Studio pops up a separate dialog
- // offering a choice to debug the aborted program. We need to suppress
- // this dialog or it will pop up for every EXPECT/ASSERT_DEATH statement
- // executed. Google Test will notify the user of any unexpected
- // failure via stderr.
- if (!GTEST_FLAG(break_on_failure))
- _set_abort_behavior(
- 0x0, // Clear the following flags:
- _WRITE_ABORT_MSG | _CALL_REPORTFAULT); // pop-up window, core dump.
+ // In the debug version, Visual Studio pops up a separate dialog
+ // offering a choice to debug the aborted program. We need to suppress
+ // this dialog or it will pop up for every EXPECT/ASSERT_DEATH statement
+ // executed. Google Test will notify the user of any unexpected
+ // failure via stderr.
+ if (!GTEST_FLAG(break_on_failure))
+ _set_abort_behavior(
+ 0x0, // Clear the following flags:
+ _WRITE_ABORT_MSG | _CALL_REPORTFAULT); // pop-up window, core dump.
// In debug mode, the Windows CRT can crash with an assertion over invalid
// input (e.g. passing an invalid file descriptor). The default handling
@@ -5432,23 +5432,23 @@ int UnitTest::Run() {
(void)_CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR);
}
# endif
- }
+ }
#endif // GTEST_OS_WINDOWS
-
- return internal::HandleExceptionsInMethodIfSupported(
- impl(),
- &internal::UnitTestImpl::RunAllTests,
- "auxiliary test code (environments or event listeners)") ? 0 : 1;
-}
-
-// Returns the working directory when the first TEST() or TEST_F() was
-// executed.
-const char* UnitTest::original_working_dir() const {
- return impl_->original_working_dir_.c_str();
-}
-
+
+ return internal::HandleExceptionsInMethodIfSupported(
+ impl(),
+ &internal::UnitTestImpl::RunAllTests,
+ "auxiliary test code (environments or event listeners)") ? 0 : 1;
+}
+
+// Returns the working directory when the first TEST() or TEST_F() was
+// executed.
+const char* UnitTest::original_working_dir() const {
+ return impl_->original_working_dir_.c_str();
+}
+
// Returns the TestSuite object for the test that's currently running,
-// or NULL if no test is running.
+// or NULL if no test is running.
const TestSuite* UnitTest::current_test_suite() const
GTEST_LOCK_EXCLUDED_(mutex_) {
internal::MutexLock lock(&mutex_);
@@ -5457,199 +5457,199 @@ const TestSuite* UnitTest::current_test_suite() const
// Legacy API is still available but deprecated
#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-const TestCase* UnitTest::current_test_case() const
- GTEST_LOCK_EXCLUDED_(mutex_) {
- internal::MutexLock lock(&mutex_);
+const TestCase* UnitTest::current_test_case() const
+ GTEST_LOCK_EXCLUDED_(mutex_) {
+ internal::MutexLock lock(&mutex_);
return impl_->current_test_suite();
-}
+}
#endif
-
-// Returns the TestInfo object for the test that's currently running,
-// or NULL if no test is running.
-const TestInfo* UnitTest::current_test_info() const
- GTEST_LOCK_EXCLUDED_(mutex_) {
- internal::MutexLock lock(&mutex_);
- return impl_->current_test_info();
-}
-
-// Returns the random seed used at the start of the current test run.
-int UnitTest::random_seed() const { return impl_->random_seed(); }
-
+
+// Returns the TestInfo object for the test that's currently running,
+// or NULL if no test is running.
+const TestInfo* UnitTest::current_test_info() const
+ GTEST_LOCK_EXCLUDED_(mutex_) {
+ internal::MutexLock lock(&mutex_);
+ return impl_->current_test_info();
+}
+
+// Returns the random seed used at the start of the current test run.
+int UnitTest::random_seed() const { return impl_->random_seed(); }
+
// Returns ParameterizedTestSuiteRegistry object used to keep track of
-// value-parameterized tests and instantiate and register them.
+// value-parameterized tests and instantiate and register them.
internal::ParameterizedTestSuiteRegistry&
UnitTest::parameterized_test_registry() GTEST_LOCK_EXCLUDED_(mutex_) {
- return impl_->parameterized_test_registry();
-}
-
-// Creates an empty UnitTest.
-UnitTest::UnitTest() {
- impl_ = new internal::UnitTestImpl(this);
-}
-
-// Destructor of UnitTest.
-UnitTest::~UnitTest() {
- delete impl_;
-}
-
-// Pushes a trace defined by SCOPED_TRACE() on to the per-thread
-// Google Test trace stack.
-void UnitTest::PushGTestTrace(const internal::TraceInfo& trace)
- GTEST_LOCK_EXCLUDED_(mutex_) {
- internal::MutexLock lock(&mutex_);
- impl_->gtest_trace_stack().push_back(trace);
-}
-
-// Pops a trace from the per-thread Google Test trace stack.
-void UnitTest::PopGTestTrace()
- GTEST_LOCK_EXCLUDED_(mutex_) {
- internal::MutexLock lock(&mutex_);
- impl_->gtest_trace_stack().pop_back();
-}
-
-namespace internal {
-
-UnitTestImpl::UnitTestImpl(UnitTest* parent)
- : parent_(parent),
- GTEST_DISABLE_MSC_WARNINGS_PUSH_(4355 /* using this in initializer */)
+ return impl_->parameterized_test_registry();
+}
+
+// Creates an empty UnitTest.
+UnitTest::UnitTest() {
+ impl_ = new internal::UnitTestImpl(this);
+}
+
+// Destructor of UnitTest.
+UnitTest::~UnitTest() {
+ delete impl_;
+}
+
+// Pushes a trace defined by SCOPED_TRACE() on to the per-thread
+// Google Test trace stack.
+void UnitTest::PushGTestTrace(const internal::TraceInfo& trace)
+ GTEST_LOCK_EXCLUDED_(mutex_) {
+ internal::MutexLock lock(&mutex_);
+ impl_->gtest_trace_stack().push_back(trace);
+}
+
+// Pops a trace from the per-thread Google Test trace stack.
+void UnitTest::PopGTestTrace()
+ GTEST_LOCK_EXCLUDED_(mutex_) {
+ internal::MutexLock lock(&mutex_);
+ impl_->gtest_trace_stack().pop_back();
+}
+
+namespace internal {
+
+UnitTestImpl::UnitTestImpl(UnitTest* parent)
+ : parent_(parent),
+ GTEST_DISABLE_MSC_WARNINGS_PUSH_(4355 /* using this in initializer */)
default_global_test_part_result_reporter_(this),
- default_per_thread_test_part_result_reporter_(this),
+ default_per_thread_test_part_result_reporter_(this),
GTEST_DISABLE_MSC_WARNINGS_POP_() global_test_part_result_repoter_(
- &default_global_test_part_result_reporter_),
- per_thread_test_part_result_reporter_(
- &default_per_thread_test_part_result_reporter_),
- parameterized_test_registry_(),
- parameterized_tests_registered_(false),
+ &default_global_test_part_result_reporter_),
+ per_thread_test_part_result_reporter_(
+ &default_per_thread_test_part_result_reporter_),
+ parameterized_test_registry_(),
+ parameterized_tests_registered_(false),
last_death_test_suite_(-1),
current_test_suite_(nullptr),
current_test_info_(nullptr),
- ad_hoc_test_result_(),
+ ad_hoc_test_result_(),
os_stack_trace_getter_(nullptr),
- post_flag_parse_init_performed_(false),
- random_seed_(0), // Will be overridden by the flag before first use.
+ post_flag_parse_init_performed_(false),
+ random_seed_(0), // Will be overridden by the flag before first use.
random_(0), // Will be reseeded before first use.
- start_timestamp_(0),
- elapsed_time_(0),
-#if GTEST_HAS_DEATH_TEST
- death_test_factory_(new DefaultDeathTestFactory),
-#endif
- // Will be overridden by the flag before first use.
- catch_exceptions_(false) {
- listeners()->SetDefaultResultPrinter(new PrettyUnitTestResultPrinter);
-}
-
-UnitTestImpl::~UnitTestImpl() {
+ start_timestamp_(0),
+ elapsed_time_(0),
+#if GTEST_HAS_DEATH_TEST
+ death_test_factory_(new DefaultDeathTestFactory),
+#endif
+ // Will be overridden by the flag before first use.
+ catch_exceptions_(false) {
+ listeners()->SetDefaultResultPrinter(new PrettyUnitTestResultPrinter);
+}
+
+UnitTestImpl::~UnitTestImpl() {
// Deletes every TestSuite.
ForEach(test_suites_, internal::Delete<TestSuite>);
-
- // Deletes every Environment.
- ForEach(environments_, internal::Delete<Environment>);
-
- delete os_stack_trace_getter_;
-}
-
-// Adds a TestProperty to the current TestResult object when invoked in a
+
+ // Deletes every Environment.
+ ForEach(environments_, internal::Delete<Environment>);
+
+ delete os_stack_trace_getter_;
+}
+
+// Adds a TestProperty to the current TestResult object when invoked in a
// context of a test, to current test suite's ad_hoc_test_result when invoke
// from SetUpTestSuite/TearDownTestSuite, or to the global property set
-// otherwise. If the result already contains a property with the same key,
-// the value will be updated.
-void UnitTestImpl::RecordProperty(const TestProperty& test_property) {
- std::string xml_element;
- TestResult* test_result; // TestResult appropriate for property recording.
-
+// otherwise. If the result already contains a property with the same key,
+// the value will be updated.
+void UnitTestImpl::RecordProperty(const TestProperty& test_property) {
+ std::string xml_element;
+ TestResult* test_result; // TestResult appropriate for property recording.
+
if (current_test_info_ != nullptr) {
- xml_element = "testcase";
- test_result = &(current_test_info_->result_);
+ xml_element = "testcase";
+ test_result = &(current_test_info_->result_);
} else if (current_test_suite_ != nullptr) {
- xml_element = "testsuite";
+ xml_element = "testsuite";
test_result = &(current_test_suite_->ad_hoc_test_result_);
- } else {
- xml_element = "testsuites";
- test_result = &ad_hoc_test_result_;
- }
- test_result->RecordProperty(xml_element, test_property);
-}
-
-#if GTEST_HAS_DEATH_TEST
-// Disables event forwarding if the control is currently in a death test
-// subprocess. Must not be called before InitGoogleTest.
-void UnitTestImpl::SuppressTestEventsIfInSubprocess() {
+ } else {
+ xml_element = "testsuites";
+ test_result = &ad_hoc_test_result_;
+ }
+ test_result->RecordProperty(xml_element, test_property);
+}
+
+#if GTEST_HAS_DEATH_TEST
+// Disables event forwarding if the control is currently in a death test
+// subprocess. Must not be called before InitGoogleTest.
+void UnitTestImpl::SuppressTestEventsIfInSubprocess() {
if (internal_run_death_test_flag_.get() != nullptr)
- listeners()->SuppressEventForwarding();
-}
-#endif // GTEST_HAS_DEATH_TEST
-
-// Initializes event listeners performing XML output as specified by
-// UnitTestOptions. Must not be called before InitGoogleTest.
-void UnitTestImpl::ConfigureXmlOutput() {
- const std::string& output_format = UnitTestOptions::GetOutputFormat();
- if (output_format == "xml") {
- listeners()->SetDefaultXmlGenerator(new XmlUnitTestResultPrinter(
- UnitTestOptions::GetAbsolutePathToOutputFile().c_str()));
+ listeners()->SuppressEventForwarding();
+}
+#endif // GTEST_HAS_DEATH_TEST
+
+// Initializes event listeners performing XML output as specified by
+// UnitTestOptions. Must not be called before InitGoogleTest.
+void UnitTestImpl::ConfigureXmlOutput() {
+ const std::string& output_format = UnitTestOptions::GetOutputFormat();
+ if (output_format == "xml") {
+ listeners()->SetDefaultXmlGenerator(new XmlUnitTestResultPrinter(
+ UnitTestOptions::GetAbsolutePathToOutputFile().c_str()));
} else if (output_format == "json") {
listeners()->SetDefaultXmlGenerator(new JsonUnitTestResultPrinter(
UnitTestOptions::GetAbsolutePathToOutputFile().c_str()));
- } else if (output_format != "") {
+ } else if (output_format != "") {
GTEST_LOG_(WARNING) << "WARNING: unrecognized output format \""
<< output_format << "\" ignored.";
- }
-}
-
-#if GTEST_CAN_STREAM_RESULTS_
-// Initializes event listeners for streaming test results in string form.
-// Must not be called before InitGoogleTest.
-void UnitTestImpl::ConfigureStreamingOutput() {
- const std::string& target = GTEST_FLAG(stream_result_to);
- if (!target.empty()) {
- const size_t pos = target.find(':');
- if (pos != std::string::npos) {
- listeners()->Append(new StreamingListener(target.substr(0, pos),
- target.substr(pos+1)));
- } else {
+ }
+}
+
+#if GTEST_CAN_STREAM_RESULTS_
+// Initializes event listeners for streaming test results in string form.
+// Must not be called before InitGoogleTest.
+void UnitTestImpl::ConfigureStreamingOutput() {
+ const std::string& target = GTEST_FLAG(stream_result_to);
+ if (!target.empty()) {
+ const size_t pos = target.find(':');
+ if (pos != std::string::npos) {
+ listeners()->Append(new StreamingListener(target.substr(0, pos),
+ target.substr(pos+1)));
+ } else {
GTEST_LOG_(WARNING) << "unrecognized streaming target \"" << target
<< "\" ignored.";
- }
- }
-}
-#endif // GTEST_CAN_STREAM_RESULTS_
-
-// Performs initialization dependent upon flag values obtained in
-// ParseGoogleTestFlagsOnly. Is called from InitGoogleTest after the call to
-// ParseGoogleTestFlagsOnly. In case a user neglects to call InitGoogleTest
-// this function is also called from RunAllTests. Since this function can be
-// called more than once, it has to be idempotent.
-void UnitTestImpl::PostFlagParsingInit() {
- // Ensures that this function does not execute more than once.
- if (!post_flag_parse_init_performed_) {
- post_flag_parse_init_performed_ = true;
-
-#if defined(GTEST_CUSTOM_TEST_EVENT_LISTENER_)
- // Register to send notifications about key process state changes.
- listeners()->Append(new GTEST_CUSTOM_TEST_EVENT_LISTENER_());
-#endif // defined(GTEST_CUSTOM_TEST_EVENT_LISTENER_)
-
-#if GTEST_HAS_DEATH_TEST
- InitDeathTestSubprocessControlInfo();
- SuppressTestEventsIfInSubprocess();
-#endif // GTEST_HAS_DEATH_TEST
-
- // Registers parameterized tests. This makes parameterized tests
- // available to the UnitTest reflection API without running
- // RUN_ALL_TESTS.
- RegisterParameterizedTests();
-
- // Configures listeners for XML output. This makes it possible for users
- // to shut down the default XML output before invoking RUN_ALL_TESTS.
- ConfigureXmlOutput();
-
+ }
+ }
+}
+#endif // GTEST_CAN_STREAM_RESULTS_
+
+// Performs initialization dependent upon flag values obtained in
+// ParseGoogleTestFlagsOnly. Is called from InitGoogleTest after the call to
+// ParseGoogleTestFlagsOnly. In case a user neglects to call InitGoogleTest
+// this function is also called from RunAllTests. Since this function can be
+// called more than once, it has to be idempotent.
+void UnitTestImpl::PostFlagParsingInit() {
+ // Ensures that this function does not execute more than once.
+ if (!post_flag_parse_init_performed_) {
+ post_flag_parse_init_performed_ = true;
+
+#if defined(GTEST_CUSTOM_TEST_EVENT_LISTENER_)
+ // Register to send notifications about key process state changes.
+ listeners()->Append(new GTEST_CUSTOM_TEST_EVENT_LISTENER_());
+#endif // defined(GTEST_CUSTOM_TEST_EVENT_LISTENER_)
+
+#if GTEST_HAS_DEATH_TEST
+ InitDeathTestSubprocessControlInfo();
+ SuppressTestEventsIfInSubprocess();
+#endif // GTEST_HAS_DEATH_TEST
+
+ // Registers parameterized tests. This makes parameterized tests
+ // available to the UnitTest reflection API without running
+ // RUN_ALL_TESTS.
+ RegisterParameterizedTests();
+
+ // Configures listeners for XML output. This makes it possible for users
+ // to shut down the default XML output before invoking RUN_ALL_TESTS.
+ ConfigureXmlOutput();
+
if (GTEST_FLAG(brief)) {
listeners()->SetDefaultResultPrinter(new BriefUnitTestResultPrinter);
}
-#if GTEST_CAN_STREAM_RESULTS_
- // Configures listeners for streaming test results to the specified server.
- ConfigureStreamingOutput();
-#endif // GTEST_CAN_STREAM_RESULTS_
+#if GTEST_CAN_STREAM_RESULTS_
+ // Configures listeners for streaming test results to the specified server.
+ ConfigureStreamingOutput();
+#endif // GTEST_CAN_STREAM_RESULTS_
#if GTEST_HAS_ABSL
if (GTEST_FLAG(install_failure_signal_handler)) {
@@ -5657,39 +5657,39 @@ void UnitTestImpl::PostFlagParsingInit() {
absl::InstallFailureSignalHandler(options);
}
#endif // GTEST_HAS_ABSL
- }
-}
-
+ }
+}
+
// A predicate that checks the name of a TestSuite against a known
-// value.
-//
-// This is used for implementation of the UnitTest class only. We put
-// it in the anonymous namespace to prevent polluting the outer
-// namespace.
-//
+// value.
+//
+// This is used for implementation of the UnitTest class only. We put
+// it in the anonymous namespace to prevent polluting the outer
+// namespace.
+//
// TestSuiteNameIs is copyable.
class TestSuiteNameIs {
- public:
- // Constructor.
+ public:
+ // Constructor.
explicit TestSuiteNameIs(const std::string& name) : name_(name) {}
-
+
// Returns true if and only if the name of test_suite matches name_.
bool operator()(const TestSuite* test_suite) const {
return test_suite != nullptr &&
strcmp(test_suite->name(), name_.c_str()) == 0;
- }
-
- private:
- std::string name_;
-};
-
+ }
+
+ private:
+ std::string name_;
+};
+
// Finds and returns a TestSuite with the given name. If one doesn't
-// exist, creates one and returns it. It's the CALLER'S
-// RESPONSIBILITY to ensure that this function is only called WHEN THE
-// TESTS ARE NOT SHUFFLED.
-//
-// Arguments:
-//
+// exist, creates one and returns it. It's the CALLER'S
+// RESPONSIBILITY to ensure that this function is only called WHEN THE
+// TESTS ARE NOT SHUFFLED.
+//
+// Arguments:
+//
// test_suite_name: name of the test suite
// type_param: the name of the test suite's type parameter, or NULL if
// this is not a typed or a type-parameterized test suite.
@@ -5703,136 +5703,136 @@ TestSuite* UnitTestImpl::GetTestSuite(
const auto test_suite =
std::find_if(test_suites_.rbegin(), test_suites_.rend(),
TestSuiteNameIs(test_suite_name));
-
+
if (test_suite != test_suites_.rend()) return *test_suite;
-
- // No. Let's create one.
+
+ // No. Let's create one.
auto* const new_test_suite =
new TestSuite(test_suite_name, type_param, set_up_tc, tear_down_tc);
-
+
// Is this a death test suite?
if (internal::UnitTestOptions::MatchesFilter(test_suite_name,
kDeathTestSuiteFilter)) {
// Yes. Inserts the test suite after the last death test suite
// defined so far. This only works when the test suites haven't
- // been shuffled. Otherwise we may end up running a death test
- // after a non-death test.
+ // been shuffled. Otherwise we may end up running a death test
+ // after a non-death test.
++last_death_test_suite_;
test_suites_.insert(test_suites_.begin() + last_death_test_suite_,
new_test_suite);
- } else {
- // No. Appends to the end of the list.
+ } else {
+ // No. Appends to the end of the list.
test_suites_.push_back(new_test_suite);
- }
-
+ }
+
test_suite_indices_.push_back(static_cast<int>(test_suite_indices_.size()));
return new_test_suite;
-}
-
-// Helpers for setting up / tearing down the given environment. They
-// are for use in the ForEach() function.
-static void SetUpEnvironment(Environment* env) { env->SetUp(); }
-static void TearDownEnvironment(Environment* env) { env->TearDown(); }
-
-// Runs all tests in this UnitTest object, prints the result, and
-// returns true if all tests are successful. If any exception is
-// thrown during a test, the test is considered to be failed, but the
-// rest of the tests will still be run.
-//
-// When parameterized tests are enabled, it expands and registers
-// parameterized tests first in RegisterParameterizedTests().
-// All other functions called from RunAllTests() may safely assume that
-// parameterized tests are ready to be counted and run.
-bool UnitTestImpl::RunAllTests() {
+}
+
+// Helpers for setting up / tearing down the given environment. They
+// are for use in the ForEach() function.
+static void SetUpEnvironment(Environment* env) { env->SetUp(); }
+static void TearDownEnvironment(Environment* env) { env->TearDown(); }
+
+// Runs all tests in this UnitTest object, prints the result, and
+// returns true if all tests are successful. If any exception is
+// thrown during a test, the test is considered to be failed, but the
+// rest of the tests will still be run.
+//
+// When parameterized tests are enabled, it expands and registers
+// parameterized tests first in RegisterParameterizedTests().
+// All other functions called from RunAllTests() may safely assume that
+// parameterized tests are ready to be counted and run.
+bool UnitTestImpl::RunAllTests() {
// True if and only if Google Test is initialized before RUN_ALL_TESTS() is
// called.
const bool gtest_is_initialized_before_run_all_tests = GTestIsInitialized();
-
- // Do not run any test if the --help flag was specified.
- if (g_help_flag)
- return true;
-
- // Repeats the call to the post-flag parsing initialization in case the
- // user didn't call InitGoogleTest.
- PostFlagParsingInit();
-
- // Even if sharding is not on, test runners may want to use the
- // GTEST_SHARD_STATUS_FILE to query whether the test supports the sharding
- // protocol.
- internal::WriteToShardStatusFileIfNeeded();
-
+
+ // Do not run any test if the --help flag was specified.
+ if (g_help_flag)
+ return true;
+
+ // Repeats the call to the post-flag parsing initialization in case the
+ // user didn't call InitGoogleTest.
+ PostFlagParsingInit();
+
+ // Even if sharding is not on, test runners may want to use the
+ // GTEST_SHARD_STATUS_FILE to query whether the test supports the sharding
+ // protocol.
+ internal::WriteToShardStatusFileIfNeeded();
+
// True if and only if we are in a subprocess for running a thread-safe-style
- // death test.
- bool in_subprocess_for_death_test = false;
-
-#if GTEST_HAS_DEATH_TEST
+ // death test.
+ bool in_subprocess_for_death_test = false;
+
+#if GTEST_HAS_DEATH_TEST
in_subprocess_for_death_test =
(internal_run_death_test_flag_.get() != nullptr);
-# if defined(GTEST_EXTRA_DEATH_TEST_CHILD_SETUP_)
- if (in_subprocess_for_death_test) {
- GTEST_EXTRA_DEATH_TEST_CHILD_SETUP_();
- }
-# endif // defined(GTEST_EXTRA_DEATH_TEST_CHILD_SETUP_)
-#endif // GTEST_HAS_DEATH_TEST
-
- const bool should_shard = ShouldShard(kTestTotalShards, kTestShardIndex,
- in_subprocess_for_death_test);
-
- // Compares the full test names with the filter to decide which
- // tests to run.
- const bool has_tests_to_run = FilterTests(should_shard
- ? HONOR_SHARDING_PROTOCOL
- : IGNORE_SHARDING_PROTOCOL) > 0;
-
- // Lists the tests and exits if the --gtest_list_tests flag was specified.
- if (GTEST_FLAG(list_tests)) {
- // This must be called *after* FilterTests() has been called.
- ListTestsMatchingFilter();
- return true;
- }
-
- random_seed_ = GTEST_FLAG(shuffle) ?
- GetRandomSeedFromFlag(GTEST_FLAG(random_seed)) : 0;
-
+# if defined(GTEST_EXTRA_DEATH_TEST_CHILD_SETUP_)
+ if (in_subprocess_for_death_test) {
+ GTEST_EXTRA_DEATH_TEST_CHILD_SETUP_();
+ }
+# endif // defined(GTEST_EXTRA_DEATH_TEST_CHILD_SETUP_)
+#endif // GTEST_HAS_DEATH_TEST
+
+ const bool should_shard = ShouldShard(kTestTotalShards, kTestShardIndex,
+ in_subprocess_for_death_test);
+
+ // Compares the full test names with the filter to decide which
+ // tests to run.
+ const bool has_tests_to_run = FilterTests(should_shard
+ ? HONOR_SHARDING_PROTOCOL
+ : IGNORE_SHARDING_PROTOCOL) > 0;
+
+ // Lists the tests and exits if the --gtest_list_tests flag was specified.
+ if (GTEST_FLAG(list_tests)) {
+ // This must be called *after* FilterTests() has been called.
+ ListTestsMatchingFilter();
+ return true;
+ }
+
+ random_seed_ = GTEST_FLAG(shuffle) ?
+ GetRandomSeedFromFlag(GTEST_FLAG(random_seed)) : 0;
+
// True if and only if at least one test has failed.
- bool failed = false;
-
- TestEventListener* repeater = listeners()->repeater();
-
- start_timestamp_ = GetTimeInMillis();
- repeater->OnTestProgramStart(*parent_);
-
- // How many times to repeat the tests? We don't want to repeat them
- // when we are inside the subprocess of a death test.
- const int repeat = in_subprocess_for_death_test ? 1 : GTEST_FLAG(repeat);
- // Repeats forever if the repeat count is negative.
+ bool failed = false;
+
+ TestEventListener* repeater = listeners()->repeater();
+
+ start_timestamp_ = GetTimeInMillis();
+ repeater->OnTestProgramStart(*parent_);
+
+ // How many times to repeat the tests? We don't want to repeat them
+ // when we are inside the subprocess of a death test.
+ const int repeat = in_subprocess_for_death_test ? 1 : GTEST_FLAG(repeat);
+ // Repeats forever if the repeat count is negative.
const bool gtest_repeat_forever = repeat < 0;
for (int i = 0; gtest_repeat_forever || i != repeat; i++) {
- // We want to preserve failures generated by ad-hoc test
- // assertions executed before RUN_ALL_TESTS().
- ClearNonAdHocTestResult();
-
+ // We want to preserve failures generated by ad-hoc test
+ // assertions executed before RUN_ALL_TESTS().
+ ClearNonAdHocTestResult();
+
Timer timer;
-
+
// Shuffles test suites and tests if requested.
- if (has_tests_to_run && GTEST_FLAG(shuffle)) {
+ if (has_tests_to_run && GTEST_FLAG(shuffle)) {
random()->Reseed(static_cast<uint32_t>(random_seed_));
- // This should be done before calling OnTestIterationStart(),
- // such that a test event listener can see the actual test order
- // in the event.
- ShuffleTests();
- }
-
- // Tells the unit test event listeners that the tests are about to start.
- repeater->OnTestIterationStart(*parent_, i);
-
+ // This should be done before calling OnTestIterationStart(),
+ // such that a test event listener can see the actual test order
+ // in the event.
+ ShuffleTests();
+ }
+
+ // Tells the unit test event listeners that the tests are about to start.
+ repeater->OnTestIterationStart(*parent_, i);
+
// Runs each test suite if there is at least one test to run.
- if (has_tests_to_run) {
- // Sets up all environments beforehand.
- repeater->OnEnvironmentsSetUpStart(*parent_);
- ForEach(environments_, SetUpEnvironment);
- repeater->OnEnvironmentsSetUpEnd(*parent_);
-
+ if (has_tests_to_run) {
+ // Sets up all environments beforehand.
+ repeater->OnEnvironmentsSetUpStart(*parent_);
+ ForEach(environments_, SetUpEnvironment);
+ repeater->OnEnvironmentsSetUpEnd(*parent_);
+
// Runs the tests only if there was no fatal failure or skip triggered
// during global set-up.
if (Test::IsSkipped()) {
@@ -5851,7 +5851,7 @@ bool UnitTestImpl::RunAllTests() {
fflush(stdout);
} else if (!Test::HasFatalFailure()) {
for (int test_index = 0; test_index < total_test_suite_count();
- test_index++) {
+ test_index++) {
GetMutableSuiteCase(test_index)->Run();
if (GTEST_FLAG(fail_fast) &&
GetMutableSuiteCase(test_index)->Failed()) {
@@ -5860,7 +5860,7 @@ bool UnitTestImpl::RunAllTests() {
}
break;
}
- }
+ }
} else if (Test::HasFatalFailure()) {
// If there was a fatal failure during the global setup then we know we
// aren't going to run any tests. Explicitly mark all of the tests as
@@ -5869,41 +5869,41 @@ bool UnitTestImpl::RunAllTests() {
test_index++) {
GetMutableSuiteCase(test_index)->Skip();
}
- }
-
- // Tears down all environments in reverse order afterwards.
- repeater->OnEnvironmentsTearDownStart(*parent_);
- std::for_each(environments_.rbegin(), environments_.rend(),
- TearDownEnvironment);
- repeater->OnEnvironmentsTearDownEnd(*parent_);
- }
-
+ }
+
+ // Tears down all environments in reverse order afterwards.
+ repeater->OnEnvironmentsTearDownStart(*parent_);
+ std::for_each(environments_.rbegin(), environments_.rend(),
+ TearDownEnvironment);
+ repeater->OnEnvironmentsTearDownEnd(*parent_);
+ }
+
elapsed_time_ = timer.Elapsed();
-
- // Tells the unit test event listener that the tests have just finished.
- repeater->OnTestIterationEnd(*parent_, i);
-
- // Gets the result and clears it.
- if (!Passed()) {
- failed = true;
- }
-
- // Restores the original test order after the iteration. This
- // allows the user to quickly repro a failure that happens in the
- // N-th iteration without repeating the first (N - 1) iterations.
- // This is not enclosed in "if (GTEST_FLAG(shuffle)) { ... }", in
- // case the user somehow changes the value of the flag somewhere
- // (it's always safe to unshuffle the tests).
- UnshuffleTests();
-
- if (GTEST_FLAG(shuffle)) {
- // Picks a new random seed for each iteration.
- random_seed_ = GetNextRandomSeed(random_seed_);
- }
- }
-
- repeater->OnTestProgramEnd(*parent_);
-
+
+ // Tells the unit test event listener that the tests have just finished.
+ repeater->OnTestIterationEnd(*parent_, i);
+
+ // Gets the result and clears it.
+ if (!Passed()) {
+ failed = true;
+ }
+
+ // Restores the original test order after the iteration. This
+ // allows the user to quickly repro a failure that happens in the
+ // N-th iteration without repeating the first (N - 1) iterations.
+ // This is not enclosed in "if (GTEST_FLAG(shuffle)) { ... }", in
+ // case the user somehow changes the value of the flag somewhere
+ // (it's always safe to unshuffle the tests).
+ UnshuffleTests();
+
+ if (GTEST_FLAG(shuffle)) {
+ // Picks a new random seed for each iteration.
+ random_seed_ = GetNextRandomSeed(random_seed_);
+ }
+ }
+
+ repeater->OnTestProgramEnd(*parent_);
+
if (!gtest_is_initialized_before_run_all_tests) {
ColoredPrintf(
GTestColor::kRed,
@@ -5918,216 +5918,216 @@ bool UnitTestImpl::RunAllTests() {
#endif // GTEST_FOR_GOOGLE_
}
- return !failed;
-}
-
-// Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file
-// if the variable is present. If a file already exists at this location, this
-// function will write over it. If the variable is present, but the file cannot
-// be created, prints an error and exits.
-void WriteToShardStatusFileIfNeeded() {
- const char* const test_shard_file = posix::GetEnv(kTestShardStatusFile);
+ return !failed;
+}
+
+// Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file
+// if the variable is present. If a file already exists at this location, this
+// function will write over it. If the variable is present, but the file cannot
+// be created, prints an error and exits.
+void WriteToShardStatusFileIfNeeded() {
+ const char* const test_shard_file = posix::GetEnv(kTestShardStatusFile);
if (test_shard_file != nullptr) {
- FILE* const file = posix::FOpen(test_shard_file, "w");
+ FILE* const file = posix::FOpen(test_shard_file, "w");
if (file == nullptr) {
ColoredPrintf(GTestColor::kRed,
- "Could not write to the test shard status file \"%s\" "
- "specified by the %s environment variable.\n",
- test_shard_file, kTestShardStatusFile);
- fflush(stdout);
- exit(EXIT_FAILURE);
- }
- fclose(file);
- }
-}
-
-// Checks whether sharding is enabled by examining the relevant
-// environment variable values. If the variables are present,
-// but inconsistent (i.e., shard_index >= total_shards), prints
-// an error and exits. If in_subprocess_for_death_test, sharding is
-// disabled because it must only be applied to the original test
-// process. Otherwise, we could filter out death tests we intended to execute.
-bool ShouldShard(const char* total_shards_env,
- const char* shard_index_env,
- bool in_subprocess_for_death_test) {
- if (in_subprocess_for_death_test) {
- return false;
- }
-
+ "Could not write to the test shard status file \"%s\" "
+ "specified by the %s environment variable.\n",
+ test_shard_file, kTestShardStatusFile);
+ fflush(stdout);
+ exit(EXIT_FAILURE);
+ }
+ fclose(file);
+ }
+}
+
+// Checks whether sharding is enabled by examining the relevant
+// environment variable values. If the variables are present,
+// but inconsistent (i.e., shard_index >= total_shards), prints
+// an error and exits. If in_subprocess_for_death_test, sharding is
+// disabled because it must only be applied to the original test
+// process. Otherwise, we could filter out death tests we intended to execute.
+bool ShouldShard(const char* total_shards_env,
+ const char* shard_index_env,
+ bool in_subprocess_for_death_test) {
+ if (in_subprocess_for_death_test) {
+ return false;
+ }
+
const int32_t total_shards = Int32FromEnvOrDie(total_shards_env, -1);
const int32_t shard_index = Int32FromEnvOrDie(shard_index_env, -1);
-
- if (total_shards == -1 && shard_index == -1) {
- return false;
- } else if (total_shards == -1 && shard_index != -1) {
- const Message msg = Message()
- << "Invalid environment variables: you have "
- << kTestShardIndex << " = " << shard_index
- << ", but have left " << kTestTotalShards << " unset.\n";
+
+ if (total_shards == -1 && shard_index == -1) {
+ return false;
+ } else if (total_shards == -1 && shard_index != -1) {
+ const Message msg = Message()
+ << "Invalid environment variables: you have "
+ << kTestShardIndex << " = " << shard_index
+ << ", but have left " << kTestTotalShards << " unset.\n";
ColoredPrintf(GTestColor::kRed, "%s", msg.GetString().c_str());
- fflush(stdout);
- exit(EXIT_FAILURE);
- } else if (total_shards != -1 && shard_index == -1) {
- const Message msg = Message()
- << "Invalid environment variables: you have "
- << kTestTotalShards << " = " << total_shards
- << ", but have left " << kTestShardIndex << " unset.\n";
+ fflush(stdout);
+ exit(EXIT_FAILURE);
+ } else if (total_shards != -1 && shard_index == -1) {
+ const Message msg = Message()
+ << "Invalid environment variables: you have "
+ << kTestTotalShards << " = " << total_shards
+ << ", but have left " << kTestShardIndex << " unset.\n";
ColoredPrintf(GTestColor::kRed, "%s", msg.GetString().c_str());
- fflush(stdout);
- exit(EXIT_FAILURE);
- } else if (shard_index < 0 || shard_index >= total_shards) {
- const Message msg = Message()
- << "Invalid environment variables: we require 0 <= "
- << kTestShardIndex << " < " << kTestTotalShards
- << ", but you have " << kTestShardIndex << "=" << shard_index
- << ", " << kTestTotalShards << "=" << total_shards << ".\n";
+ fflush(stdout);
+ exit(EXIT_FAILURE);
+ } else if (shard_index < 0 || shard_index >= total_shards) {
+ const Message msg = Message()
+ << "Invalid environment variables: we require 0 <= "
+ << kTestShardIndex << " < " << kTestTotalShards
+ << ", but you have " << kTestShardIndex << "=" << shard_index
+ << ", " << kTestTotalShards << "=" << total_shards << ".\n";
ColoredPrintf(GTestColor::kRed, "%s", msg.GetString().c_str());
- fflush(stdout);
- exit(EXIT_FAILURE);
- }
-
- return total_shards > 1;
-}
-
-// Parses the environment variable var as an Int32. If it is unset,
-// returns default_val. If it is not an Int32, prints an error
-// and aborts.
+ fflush(stdout);
+ exit(EXIT_FAILURE);
+ }
+
+ return total_shards > 1;
+}
+
+// Parses the environment variable var as an Int32. If it is unset,
+// returns default_val. If it is not an Int32, prints an error
+// and aborts.
int32_t Int32FromEnvOrDie(const char* var, int32_t default_val) {
- const char* str_val = posix::GetEnv(var);
+ const char* str_val = posix::GetEnv(var);
if (str_val == nullptr) {
- return default_val;
- }
-
+ return default_val;
+ }
+
int32_t result;
- if (!ParseInt32(Message() << "The value of environment variable " << var,
- str_val, &result)) {
- exit(EXIT_FAILURE);
- }
- return result;
-}
-
-// Given the total number of shards, the shard index, and the test id,
+ if (!ParseInt32(Message() << "The value of environment variable " << var,
+ str_val, &result)) {
+ exit(EXIT_FAILURE);
+ }
+ return result;
+}
+
+// Given the total number of shards, the shard index, and the test id,
// returns true if and only if the test should be run on this shard. The test id
// is some arbitrary but unique non-negative integer assigned to each test
-// method. Assumes that 0 <= shard_index < total_shards.
-bool ShouldRunTestOnShard(int total_shards, int shard_index, int test_id) {
- return (test_id % total_shards) == shard_index;
-}
-
-// Compares the name of each test with the user-specified filter to
-// decide whether the test should be run, then records the result in
+// method. Assumes that 0 <= shard_index < total_shards.
+bool ShouldRunTestOnShard(int total_shards, int shard_index, int test_id) {
+ return (test_id % total_shards) == shard_index;
+}
+
+// Compares the name of each test with the user-specified filter to
+// decide whether the test should be run, then records the result in
// each TestSuite and TestInfo object.
-// If shard_tests == true, further filters tests based on sharding
-// variables in the environment - see
+// If shard_tests == true, further filters tests based on sharding
+// variables in the environment - see
// https://github.com/google/googletest/blob/master/googletest/docs/advanced.md
// . Returns the number of tests that should run.
-int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) {
+int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) {
const int32_t total_shards = shard_tests == HONOR_SHARDING_PROTOCOL ?
- Int32FromEnvOrDie(kTestTotalShards, -1) : -1;
+ Int32FromEnvOrDie(kTestTotalShards, -1) : -1;
const int32_t shard_index = shard_tests == HONOR_SHARDING_PROTOCOL ?
- Int32FromEnvOrDie(kTestShardIndex, -1) : -1;
-
- // num_runnable_tests are the number of tests that will
- // run across all shards (i.e., match filter and are not disabled).
- // num_selected_tests are the number of tests to be run on
- // this shard.
- int num_runnable_tests = 0;
- int num_selected_tests = 0;
+ Int32FromEnvOrDie(kTestShardIndex, -1) : -1;
+
+ // num_runnable_tests are the number of tests that will
+ // run across all shards (i.e., match filter and are not disabled).
+ // num_selected_tests are the number of tests to be run on
+ // this shard.
+ int num_runnable_tests = 0;
+ int num_selected_tests = 0;
for (auto* test_suite : test_suites_) {
const std::string& test_suite_name = test_suite->name();
test_suite->set_should_run(false);
-
+
for (size_t j = 0; j < test_suite->test_info_list().size(); j++) {
TestInfo* const test_info = test_suite->test_info_list()[j];
- const std::string test_name(test_info->name());
+ const std::string test_name(test_info->name());
// A test is disabled if test suite name or test name matches
- // kDisableTestFilter.
+ // kDisableTestFilter.
const bool is_disabled = internal::UnitTestOptions::MatchesFilter(
test_suite_name, kDisableTestFilter) ||
internal::UnitTestOptions::MatchesFilter(
test_name, kDisableTestFilter);
- test_info->is_disabled_ = is_disabled;
-
+ test_info->is_disabled_ = is_disabled;
+
const bool matches_filter = internal::UnitTestOptions::FilterMatchesTest(
test_suite_name, test_name);
- test_info->matches_filter_ = matches_filter;
-
- const bool is_runnable =
- (GTEST_FLAG(also_run_disabled_tests) || !is_disabled) &&
- matches_filter;
-
+ test_info->matches_filter_ = matches_filter;
+
+ const bool is_runnable =
+ (GTEST_FLAG(also_run_disabled_tests) || !is_disabled) &&
+ matches_filter;
+
const bool is_in_another_shard =
shard_tests != IGNORE_SHARDING_PROTOCOL &&
!ShouldRunTestOnShard(total_shards, shard_index, num_runnable_tests);
test_info->is_in_another_shard_ = is_in_another_shard;
const bool is_selected = is_runnable && !is_in_another_shard;
-
- num_runnable_tests += is_runnable;
- num_selected_tests += is_selected;
-
- test_info->should_run_ = is_selected;
+
+ num_runnable_tests += is_runnable;
+ num_selected_tests += is_selected;
+
+ test_info->should_run_ = is_selected;
test_suite->set_should_run(test_suite->should_run() || is_selected);
- }
- }
- return num_selected_tests;
-}
-
-// Prints the given C-string on a single line by replacing all '\n'
-// characters with string "\\n". If the output takes more than
-// max_length characters, only prints the first max_length characters
-// and "...".
-static void PrintOnOneLine(const char* str, int max_length) {
+ }
+ }
+ return num_selected_tests;
+}
+
+// Prints the given C-string on a single line by replacing all '\n'
+// characters with string "\\n". If the output takes more than
+// max_length characters, only prints the first max_length characters
+// and "...".
+static void PrintOnOneLine(const char* str, int max_length) {
if (str != nullptr) {
- for (int i = 0; *str != '\0'; ++str) {
- if (i >= max_length) {
- printf("...");
- break;
- }
- if (*str == '\n') {
- printf("\\n");
- i += 2;
- } else {
- printf("%c", *str);
- ++i;
- }
- }
- }
-}
-
-// Prints the names of the tests matching the user-specified filter flag.
-void UnitTestImpl::ListTestsMatchingFilter() {
- // Print at most this many characters for each type/value parameter.
- const int kMaxParamLength = 250;
-
+ for (int i = 0; *str != '\0'; ++str) {
+ if (i >= max_length) {
+ printf("...");
+ break;
+ }
+ if (*str == '\n') {
+ printf("\\n");
+ i += 2;
+ } else {
+ printf("%c", *str);
+ ++i;
+ }
+ }
+ }
+}
+
+// Prints the names of the tests matching the user-specified filter flag.
+void UnitTestImpl::ListTestsMatchingFilter() {
+ // Print at most this many characters for each type/value parameter.
+ const int kMaxParamLength = 250;
+
for (auto* test_suite : test_suites_) {
bool printed_test_suite_name = false;
-
+
for (size_t j = 0; j < test_suite->test_info_list().size(); j++) {
const TestInfo* const test_info = test_suite->test_info_list()[j];
- if (test_info->matches_filter_) {
+ if (test_info->matches_filter_) {
if (!printed_test_suite_name) {
printed_test_suite_name = true;
printf("%s.", test_suite->name());
if (test_suite->type_param() != nullptr) {
- printf(" # %s = ", kTypeParamLabel);
- // We print the type parameter on a single line to make
- // the output easy to parse by a program.
+ printf(" # %s = ", kTypeParamLabel);
+ // We print the type parameter on a single line to make
+ // the output easy to parse by a program.
PrintOnOneLine(test_suite->type_param(), kMaxParamLength);
- }
- printf("\n");
- }
- printf(" %s", test_info->name());
+ }
+ printf("\n");
+ }
+ printf(" %s", test_info->name());
if (test_info->value_param() != nullptr) {
- printf(" # %s = ", kValueParamLabel);
- // We print the value parameter on a single line to make the
- // output easy to parse by a program.
- PrintOnOneLine(test_info->value_param(), kMaxParamLength);
- }
- printf("\n");
- }
- }
- }
- fflush(stdout);
+ printf(" # %s = ", kValueParamLabel);
+ // We print the value parameter on a single line to make the
+ // output easy to parse by a program.
+ PrintOnOneLine(test_info->value_param(), kMaxParamLength);
+ }
+ printf("\n");
+ }
+ }
+ }
+ fflush(stdout);
const std::string& output_format = UnitTestOptions::GetOutputFormat();
if (output_format == "xml" || output_format == "json") {
FILE* fileout = OpenFileForWriting(
@@ -6145,38 +6145,38 @@ void UnitTestImpl::ListTestsMatchingFilter() {
fprintf(fileout, "%s", StringStreamToString(&stream).c_str());
fclose(fileout);
}
-}
-
-// Sets the OS stack trace getter.
-//
-// Does nothing if the input and the current OS stack trace getter are
-// the same; otherwise, deletes the old getter and makes the input the
-// current getter.
-void UnitTestImpl::set_os_stack_trace_getter(
- OsStackTraceGetterInterface* getter) {
- if (os_stack_trace_getter_ != getter) {
- delete os_stack_trace_getter_;
- os_stack_trace_getter_ = getter;
- }
-}
-
-// Returns the current OS stack trace getter if it is not NULL;
-// otherwise, creates an OsStackTraceGetter, makes it the current
-// getter, and returns it.
-OsStackTraceGetterInterface* UnitTestImpl::os_stack_trace_getter() {
+}
+
+// Sets the OS stack trace getter.
+//
+// Does nothing if the input and the current OS stack trace getter are
+// the same; otherwise, deletes the old getter and makes the input the
+// current getter.
+void UnitTestImpl::set_os_stack_trace_getter(
+ OsStackTraceGetterInterface* getter) {
+ if (os_stack_trace_getter_ != getter) {
+ delete os_stack_trace_getter_;
+ os_stack_trace_getter_ = getter;
+ }
+}
+
+// Returns the current OS stack trace getter if it is not NULL;
+// otherwise, creates an OsStackTraceGetter, makes it the current
+// getter, and returns it.
+OsStackTraceGetterInterface* UnitTestImpl::os_stack_trace_getter() {
if (os_stack_trace_getter_ == nullptr) {
-#ifdef GTEST_OS_STACK_TRACE_GETTER_
- os_stack_trace_getter_ = new GTEST_OS_STACK_TRACE_GETTER_;
-#else
- os_stack_trace_getter_ = new OsStackTraceGetter;
-#endif // GTEST_OS_STACK_TRACE_GETTER_
- }
-
- return os_stack_trace_getter_;
-}
-
+#ifdef GTEST_OS_STACK_TRACE_GETTER_
+ os_stack_trace_getter_ = new GTEST_OS_STACK_TRACE_GETTER_;
+#else
+ os_stack_trace_getter_ = new OsStackTraceGetter;
+#endif // GTEST_OS_STACK_TRACE_GETTER_
+ }
+
+ return os_stack_trace_getter_;
+}
+
// Returns the most specific TestResult currently running.
-TestResult* UnitTestImpl::current_test_result() {
+TestResult* UnitTestImpl::current_test_result() {
if (current_test_info_ != nullptr) {
return &current_test_info_->result_;
}
@@ -6184,227 +6184,227 @@ TestResult* UnitTestImpl::current_test_result() {
return &current_test_suite_->ad_hoc_test_result_;
}
return &ad_hoc_test_result_;
-}
-
+}
+
// Shuffles all test suites, and the tests within each test suite,
-// making sure that death tests are still run first.
-void UnitTestImpl::ShuffleTests() {
+// making sure that death tests are still run first.
+void UnitTestImpl::ShuffleTests() {
// Shuffles the death test suites.
ShuffleRange(random(), 0, last_death_test_suite_ + 1, &test_suite_indices_);
-
+
// Shuffles the non-death test suites.
ShuffleRange(random(), last_death_test_suite_ + 1,
static_cast<int>(test_suites_.size()), &test_suite_indices_);
-
+
// Shuffles the tests inside each test suite.
for (auto& test_suite : test_suites_) {
test_suite->ShuffleTests(random());
- }
-}
-
+ }
+}
+
// Restores the test suites and tests to their order before the first shuffle.
-void UnitTestImpl::UnshuffleTests() {
+void UnitTestImpl::UnshuffleTests() {
for (size_t i = 0; i < test_suites_.size(); i++) {
// Unshuffles the tests in each test suite.
test_suites_[i]->UnshuffleTests();
// Resets the index of each test suite.
test_suite_indices_[i] = static_cast<int>(i);
- }
-}
-
-// Returns the current OS stack trace as an std::string.
-//
-// The maximum number of stack frames to be included is specified by
-// the gtest_stack_trace_depth flag. The skip_count parameter
-// specifies the number of top frames to be skipped, which doesn't
-// count against the number of frames to be included.
-//
-// For example, if Foo() calls Bar(), which in turn calls
-// GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in
-// the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't.
-std::string GetCurrentOsStackTraceExceptTop(UnitTest* /*unit_test*/,
- int skip_count) {
- // We pass skip_count + 1 to skip this wrapper function in addition
- // to what the user really wants to skip.
- return GetUnitTestImpl()->CurrentOsStackTraceExceptTop(skip_count + 1);
-}
-
-// Used by the GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_ macro to
-// suppress unreachable code warnings.
-namespace {
-class ClassUniqueToAlwaysTrue {};
-}
-
-bool IsTrue(bool condition) { return condition; }
-
-bool AlwaysTrue() {
-#if GTEST_HAS_EXCEPTIONS
- // This condition is always false so AlwaysTrue() never actually throws,
- // but it makes the compiler think that it may throw.
- if (IsTrue(false))
- throw ClassUniqueToAlwaysTrue();
-#endif // GTEST_HAS_EXCEPTIONS
- return true;
-}
-
-// If *pstr starts with the given prefix, modifies *pstr to be right
-// past the prefix and returns true; otherwise leaves *pstr unchanged
-// and returns false. None of pstr, *pstr, and prefix can be NULL.
-bool SkipPrefix(const char* prefix, const char** pstr) {
- const size_t prefix_len = strlen(prefix);
- if (strncmp(*pstr, prefix, prefix_len) == 0) {
- *pstr += prefix_len;
- return true;
- }
- return false;
-}
-
-// Parses a string as a command line flag. The string should have
-// the format "--flag=value". When def_optional is true, the "=value"
-// part can be omitted.
-//
-// Returns the value of the flag, or NULL if the parsing failed.
+ }
+}
+
+// Returns the current OS stack trace as an std::string.
+//
+// The maximum number of stack frames to be included is specified by
+// the gtest_stack_trace_depth flag. The skip_count parameter
+// specifies the number of top frames to be skipped, which doesn't
+// count against the number of frames to be included.
+//
+// For example, if Foo() calls Bar(), which in turn calls
+// GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in
+// the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't.
+std::string GetCurrentOsStackTraceExceptTop(UnitTest* /*unit_test*/,
+ int skip_count) {
+ // We pass skip_count + 1 to skip this wrapper function in addition
+ // to what the user really wants to skip.
+ return GetUnitTestImpl()->CurrentOsStackTraceExceptTop(skip_count + 1);
+}
+
+// Used by the GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_ macro to
+// suppress unreachable code warnings.
+namespace {
+class ClassUniqueToAlwaysTrue {};
+}
+
+bool IsTrue(bool condition) { return condition; }
+
+bool AlwaysTrue() {
+#if GTEST_HAS_EXCEPTIONS
+ // This condition is always false so AlwaysTrue() never actually throws,
+ // but it makes the compiler think that it may throw.
+ if (IsTrue(false))
+ throw ClassUniqueToAlwaysTrue();
+#endif // GTEST_HAS_EXCEPTIONS
+ return true;
+}
+
+// If *pstr starts with the given prefix, modifies *pstr to be right
+// past the prefix and returns true; otherwise leaves *pstr unchanged
+// and returns false. None of pstr, *pstr, and prefix can be NULL.
+bool SkipPrefix(const char* prefix, const char** pstr) {
+ const size_t prefix_len = strlen(prefix);
+ if (strncmp(*pstr, prefix, prefix_len) == 0) {
+ *pstr += prefix_len;
+ return true;
+ }
+ return false;
+}
+
+// Parses a string as a command line flag. The string should have
+// the format "--flag=value". When def_optional is true, the "=value"
+// part can be omitted.
+//
+// Returns the value of the flag, or NULL if the parsing failed.
static const char* ParseFlagValue(const char* str, const char* flag,
bool def_optional) {
- // str and flag must not be NULL.
+ // str and flag must not be NULL.
if (str == nullptr || flag == nullptr) return nullptr;
-
- // The flag must start with "--" followed by GTEST_FLAG_PREFIX_.
- const std::string flag_str = std::string("--") + GTEST_FLAG_PREFIX_ + flag;
- const size_t flag_len = flag_str.length();
+
+ // The flag must start with "--" followed by GTEST_FLAG_PREFIX_.
+ const std::string flag_str = std::string("--") + GTEST_FLAG_PREFIX_ + flag;
+ const size_t flag_len = flag_str.length();
if (strncmp(str, flag_str.c_str(), flag_len) != 0) return nullptr;
-
- // Skips the flag name.
- const char* flag_end = str + flag_len;
-
- // When def_optional is true, it's OK to not have a "=value" part.
- if (def_optional && (flag_end[0] == '\0')) {
- return flag_end;
- }
-
- // If def_optional is true and there are more characters after the
- // flag name, or if def_optional is false, there must be a '=' after
- // the flag name.
+
+ // Skips the flag name.
+ const char* flag_end = str + flag_len;
+
+ // When def_optional is true, it's OK to not have a "=value" part.
+ if (def_optional && (flag_end[0] == '\0')) {
+ return flag_end;
+ }
+
+ // If def_optional is true and there are more characters after the
+ // flag name, or if def_optional is false, there must be a '=' after
+ // the flag name.
if (flag_end[0] != '=') return nullptr;
-
- // Returns the string after "=".
- return flag_end + 1;
-}
-
-// Parses a string for a bool flag, in the form of either
-// "--flag=value" or "--flag".
-//
-// In the former case, the value is taken as true as long as it does
-// not start with '0', 'f', or 'F'.
-//
-// In the latter case, the value is taken as true.
-//
-// On success, stores the value of the flag in *value, and returns
-// true. On failure, returns false without changing *value.
+
+ // Returns the string after "=".
+ return flag_end + 1;
+}
+
+// Parses a string for a bool flag, in the form of either
+// "--flag=value" or "--flag".
+//
+// In the former case, the value is taken as true as long as it does
+// not start with '0', 'f', or 'F'.
+//
+// In the latter case, the value is taken as true.
+//
+// On success, stores the value of the flag in *value, and returns
+// true. On failure, returns false without changing *value.
static bool ParseBoolFlag(const char* str, const char* flag, bool* value) {
- // Gets the value of the flag as a string.
- const char* const value_str = ParseFlagValue(str, flag, true);
-
- // Aborts if the parsing failed.
+ // Gets the value of the flag as a string.
+ const char* const value_str = ParseFlagValue(str, flag, true);
+
+ // Aborts if the parsing failed.
if (value_str == nullptr) return false;
-
- // Converts the string value to a bool.
- *value = !(*value_str == '0' || *value_str == 'f' || *value_str == 'F');
- return true;
-}
-
+
+ // Converts the string value to a bool.
+ *value = !(*value_str == '0' || *value_str == 'f' || *value_str == 'F');
+ return true;
+}
+
// Parses a string for an int32_t flag, in the form of "--flag=value".
-//
-// On success, stores the value of the flag in *value, and returns
-// true. On failure, returns false without changing *value.
+//
+// On success, stores the value of the flag in *value, and returns
+// true. On failure, returns false without changing *value.
bool ParseInt32Flag(const char* str, const char* flag, int32_t* value) {
- // Gets the value of the flag as a string.
- const char* const value_str = ParseFlagValue(str, flag, false);
-
- // Aborts if the parsing failed.
+ // Gets the value of the flag as a string.
+ const char* const value_str = ParseFlagValue(str, flag, false);
+
+ // Aborts if the parsing failed.
if (value_str == nullptr) return false;
-
- // Sets *value to the value of the flag.
- return ParseInt32(Message() << "The value of flag --" << flag,
- value_str, value);
-}
-
+
+ // Sets *value to the value of the flag.
+ return ParseInt32(Message() << "The value of flag --" << flag,
+ value_str, value);
+}
+
// Parses a string for a string flag, in the form of "--flag=value".
-//
-// On success, stores the value of the flag in *value, and returns
-// true. On failure, returns false without changing *value.
+//
+// On success, stores the value of the flag in *value, and returns
+// true. On failure, returns false without changing *value.
template <typename String>
static bool ParseStringFlag(const char* str, const char* flag, String* value) {
- // Gets the value of the flag as a string.
- const char* const value_str = ParseFlagValue(str, flag, false);
-
- // Aborts if the parsing failed.
+ // Gets the value of the flag as a string.
+ const char* const value_str = ParseFlagValue(str, flag, false);
+
+ // Aborts if the parsing failed.
if (value_str == nullptr) return false;
-
- // Sets *value to the value of the flag.
- *value = value_str;
- return true;
-}
-
-// Determines whether a string has a prefix that Google Test uses for its
-// flags, i.e., starts with GTEST_FLAG_PREFIX_ or GTEST_FLAG_PREFIX_DASH_.
-// If Google Test detects that a command line flag has its prefix but is not
-// recognized, it will print its help message. Flags starting with
-// GTEST_INTERNAL_PREFIX_ followed by "internal_" are considered Google Test
-// internal flags and do not trigger the help message.
-static bool HasGoogleTestFlagPrefix(const char* str) {
- return (SkipPrefix("--", &str) ||
- SkipPrefix("-", &str) ||
- SkipPrefix("/", &str)) &&
- !SkipPrefix(GTEST_FLAG_PREFIX_ "internal_", &str) &&
- (SkipPrefix(GTEST_FLAG_PREFIX_, &str) ||
- SkipPrefix(GTEST_FLAG_PREFIX_DASH_, &str));
-}
-
-// Prints a string containing code-encoded text. The following escape
-// sequences can be used in the string to control the text color:
-//
-// @@ prints a single '@' character.
-// @R changes the color to red.
-// @G changes the color to green.
-// @Y changes the color to yellow.
-// @D changes to the default terminal text color.
-//
-static void PrintColorEncoded(const char* str) {
+
+ // Sets *value to the value of the flag.
+ *value = value_str;
+ return true;
+}
+
+// Determines whether a string has a prefix that Google Test uses for its
+// flags, i.e., starts with GTEST_FLAG_PREFIX_ or GTEST_FLAG_PREFIX_DASH_.
+// If Google Test detects that a command line flag has its prefix but is not
+// recognized, it will print its help message. Flags starting with
+// GTEST_INTERNAL_PREFIX_ followed by "internal_" are considered Google Test
+// internal flags and do not trigger the help message.
+static bool HasGoogleTestFlagPrefix(const char* str) {
+ return (SkipPrefix("--", &str) ||
+ SkipPrefix("-", &str) ||
+ SkipPrefix("/", &str)) &&
+ !SkipPrefix(GTEST_FLAG_PREFIX_ "internal_", &str) &&
+ (SkipPrefix(GTEST_FLAG_PREFIX_, &str) ||
+ SkipPrefix(GTEST_FLAG_PREFIX_DASH_, &str));
+}
+
+// Prints a string containing code-encoded text. The following escape
+// sequences can be used in the string to control the text color:
+//
+// @@ prints a single '@' character.
+// @R changes the color to red.
+// @G changes the color to green.
+// @Y changes the color to yellow.
+// @D changes to the default terminal text color.
+//
+static void PrintColorEncoded(const char* str) {
GTestColor color = GTestColor::kDefault; // The current color.
-
- // Conceptually, we split the string into segments divided by escape
- // sequences. Then we print one segment at a time. At the end of
- // each iteration, the str pointer advances to the beginning of the
- // next segment.
- for (;;) {
- const char* p = strchr(str, '@');
+
+ // Conceptually, we split the string into segments divided by escape
+ // sequences. Then we print one segment at a time. At the end of
+ // each iteration, the str pointer advances to the beginning of the
+ // next segment.
+ for (;;) {
+ const char* p = strchr(str, '@');
if (p == nullptr) {
- ColoredPrintf(color, "%s", str);
- return;
- }
-
- ColoredPrintf(color, "%s", std::string(str, p).c_str());
-
- const char ch = p[1];
- str = p + 2;
- if (ch == '@') {
- ColoredPrintf(color, "@");
- } else if (ch == 'D') {
+ ColoredPrintf(color, "%s", str);
+ return;
+ }
+
+ ColoredPrintf(color, "%s", std::string(str, p).c_str());
+
+ const char ch = p[1];
+ str = p + 2;
+ if (ch == '@') {
+ ColoredPrintf(color, "@");
+ } else if (ch == 'D') {
color = GTestColor::kDefault;
- } else if (ch == 'R') {
+ } else if (ch == 'R') {
color = GTestColor::kRed;
- } else if (ch == 'G') {
+ } else if (ch == 'G') {
color = GTestColor::kGreen;
- } else if (ch == 'Y') {
+ } else if (ch == 'Y') {
color = GTestColor::kYellow;
- } else {
- --str;
- }
- }
-}
-
-static const char kColorEncodedHelpMessage[] =
+ } else {
+ --str;
+ }
+ }
+}
+
+static const char kColorEncodedHelpMessage[] =
"This program contains tests written using " GTEST_NAME_
". You can use the\n"
"following command line flags to control its behavior:\n"
@@ -6416,7 +6416,7 @@ static const char kColorEncodedHelpMessage[] =
" TEST(Foo, Bar) is \"Foo.Bar\".\n"
" @G--" GTEST_FLAG_PREFIX_
"filter=@YPOSITIVE_PATTERNS"
- "[@G-@YNEGATIVE_PATTERNS]@D\n"
+ "[@G-@YNEGATIVE_PATTERNS]@D\n"
" Run only the tests whose name matches one of the positive patterns "
"but\n"
" none of the negative patterns. '?' matches any single character; "
@@ -6480,12 +6480,12 @@ static const char kColorEncodedHelpMessage[] =
"\n"
"Except for @G--" GTEST_FLAG_PREFIX_
"list_tests@D, you can alternatively set "
- "the corresponding\n"
+ "the corresponding\n"
"environment variable of a flag (all letters in upper-case). For example, "
"to\n"
"disable colored text output, you can either specify "
"@G--" GTEST_FLAG_PREFIX_
- "color=no@D or set\n"
+ "color=no@D or set\n"
"the @G" GTEST_FLAG_PREFIX_UPPER_
"COLOR@D environment variable to @Gno@D.\n"
"\n"
@@ -6495,10 +6495,10 @@ static const char kColorEncodedHelpMessage[] =
"\n"
"(not one in your own code or tests), please report it to\n"
"@G<" GTEST_DEV_EMAIL_ ">@D.\n";
-
+
static bool ParseGoogleTestFlag(const char* const arg) {
- return ParseBoolFlag(arg, kAlsoRunDisabledTestsFlag,
- &GTEST_FLAG(also_run_disabled_tests)) ||
+ return ParseBoolFlag(arg, kAlsoRunDisabledTestsFlag,
+ &GTEST_FLAG(also_run_disabled_tests)) ||
ParseBoolFlag(arg, kBreakOnFailureFlag,
&GTEST_FLAG(break_on_failure)) ||
ParseBoolFlag(arg, kCatchExceptionsFlag,
@@ -6525,87 +6525,87 @@ static bool ParseGoogleTestFlag(const char* const arg) {
ParseStringFlag(arg, kStreamResultToFlag,
&GTEST_FLAG(stream_result_to)) ||
ParseBoolFlag(arg, kThrowOnFailureFlag, &GTEST_FLAG(throw_on_failure));
-}
-
-#if GTEST_USE_OWN_FLAGFILE_FLAG_
+}
+
+#if GTEST_USE_OWN_FLAGFILE_FLAG_
static void LoadFlagsFromFile(const std::string& path) {
- FILE* flagfile = posix::FOpen(path.c_str(), "r");
- if (!flagfile) {
+ FILE* flagfile = posix::FOpen(path.c_str(), "r");
+ if (!flagfile) {
GTEST_LOG_(FATAL) << "Unable to open file \"" << GTEST_FLAG(flagfile)
<< "\"";
- }
- std::string contents(ReadEntireFile(flagfile));
- posix::FClose(flagfile);
- std::vector<std::string> lines;
- SplitString(contents, '\n', &lines);
- for (size_t i = 0; i < lines.size(); ++i) {
- if (lines[i].empty())
- continue;
- if (!ParseGoogleTestFlag(lines[i].c_str()))
- g_help_flag = true;
- }
-}
-#endif // GTEST_USE_OWN_FLAGFILE_FLAG_
-
-// Parses the command line for Google Test flags, without initializing
-// other parts of Google Test. The type parameter CharType can be
-// instantiated to either char or wchar_t.
-template <typename CharType>
-void ParseGoogleTestFlagsOnlyImpl(int* argc, CharType** argv) {
- for (int i = 1; i < *argc; i++) {
- const std::string arg_string = StreamableToString(argv[i]);
- const char* const arg = arg_string.c_str();
-
- using internal::ParseBoolFlag;
- using internal::ParseInt32Flag;
- using internal::ParseStringFlag;
-
- bool remove_flag = false;
- if (ParseGoogleTestFlag(arg)) {
- remove_flag = true;
-#if GTEST_USE_OWN_FLAGFILE_FLAG_
- } else if (ParseStringFlag(arg, kFlagfileFlag, &GTEST_FLAG(flagfile))) {
- LoadFlagsFromFile(GTEST_FLAG(flagfile));
- remove_flag = true;
-#endif // GTEST_USE_OWN_FLAGFILE_FLAG_
- } else if (arg_string == "--help" || arg_string == "-h" ||
- arg_string == "-?" || arg_string == "/?" ||
- HasGoogleTestFlagPrefix(arg)) {
- // Both help flag and unrecognized Google Test flags (excluding
- // internal ones) trigger help display.
- g_help_flag = true;
- }
-
- if (remove_flag) {
- // Shift the remainder of the argv list left by one. Note
- // that argv has (*argc + 1) elements, the last one always being
- // NULL. The following loop moves the trailing NULL element as
- // well.
- for (int j = i; j != *argc; j++) {
- argv[j] = argv[j + 1];
- }
-
- // Decrements the argument count.
- (*argc)--;
-
- // We also need to decrement the iterator as we just removed
- // an element.
- i--;
- }
- }
-
- if (g_help_flag) {
- // We print the help here instead of in RUN_ALL_TESTS(), as the
- // latter may not be called at all if the user is using Google
- // Test with another testing framework.
- PrintColorEncoded(kColorEncodedHelpMessage);
- }
-}
-
-// Parses the command line for Google Test flags, without initializing
-// other parts of Google Test.
-void ParseGoogleTestFlagsOnly(int* argc, char** argv) {
- ParseGoogleTestFlagsOnlyImpl(argc, argv);
+ }
+ std::string contents(ReadEntireFile(flagfile));
+ posix::FClose(flagfile);
+ std::vector<std::string> lines;
+ SplitString(contents, '\n', &lines);
+ for (size_t i = 0; i < lines.size(); ++i) {
+ if (lines[i].empty())
+ continue;
+ if (!ParseGoogleTestFlag(lines[i].c_str()))
+ g_help_flag = true;
+ }
+}
+#endif // GTEST_USE_OWN_FLAGFILE_FLAG_
+
+// Parses the command line for Google Test flags, without initializing
+// other parts of Google Test. The type parameter CharType can be
+// instantiated to either char or wchar_t.
+template <typename CharType>
+void ParseGoogleTestFlagsOnlyImpl(int* argc, CharType** argv) {
+ for (int i = 1; i < *argc; i++) {
+ const std::string arg_string = StreamableToString(argv[i]);
+ const char* const arg = arg_string.c_str();
+
+ using internal::ParseBoolFlag;
+ using internal::ParseInt32Flag;
+ using internal::ParseStringFlag;
+
+ bool remove_flag = false;
+ if (ParseGoogleTestFlag(arg)) {
+ remove_flag = true;
+#if GTEST_USE_OWN_FLAGFILE_FLAG_
+ } else if (ParseStringFlag(arg, kFlagfileFlag, &GTEST_FLAG(flagfile))) {
+ LoadFlagsFromFile(GTEST_FLAG(flagfile));
+ remove_flag = true;
+#endif // GTEST_USE_OWN_FLAGFILE_FLAG_
+ } else if (arg_string == "--help" || arg_string == "-h" ||
+ arg_string == "-?" || arg_string == "/?" ||
+ HasGoogleTestFlagPrefix(arg)) {
+ // Both help flag and unrecognized Google Test flags (excluding
+ // internal ones) trigger help display.
+ g_help_flag = true;
+ }
+
+ if (remove_flag) {
+ // Shift the remainder of the argv list left by one. Note
+ // that argv has (*argc + 1) elements, the last one always being
+ // NULL. The following loop moves the trailing NULL element as
+ // well.
+ for (int j = i; j != *argc; j++) {
+ argv[j] = argv[j + 1];
+ }
+
+ // Decrements the argument count.
+ (*argc)--;
+
+ // We also need to decrement the iterator as we just removed
+ // an element.
+ i--;
+ }
+ }
+
+ if (g_help_flag) {
+ // We print the help here instead of in RUN_ALL_TESTS(), as the
+ // latter may not be called at all if the user is using Google
+ // Test with another testing framework.
+ PrintColorEncoded(kColorEncodedHelpMessage);
+ }
+}
+
+// Parses the command line for Google Test flags, without initializing
+// other parts of Google Test.
+void ParseGoogleTestFlagsOnly(int* argc, char** argv) {
+ ParseGoogleTestFlagsOnlyImpl(argc, argv);
// Fix the value of *_NSGetArgc() on macOS, but if and only if
// *_NSGetArgv() == argv
@@ -6617,64 +6617,64 @@ void ParseGoogleTestFlagsOnly(int* argc, char** argv) {
}
#endif
#endif
-}
-void ParseGoogleTestFlagsOnly(int* argc, wchar_t** argv) {
- ParseGoogleTestFlagsOnlyImpl(argc, argv);
-}
-
-// The internal implementation of InitGoogleTest().
-//
-// The type parameter CharType can be instantiated to either char or
-// wchar_t.
-template <typename CharType>
-void InitGoogleTestImpl(int* argc, CharType** argv) {
- // We don't want to run the initialization code twice.
- if (GTestIsInitialized()) return;
-
- if (*argc <= 0) return;
-
- g_argvs.clear();
- for (int i = 0; i != *argc; i++) {
- g_argvs.push_back(StreamableToString(argv[i]));
- }
-
+}
+void ParseGoogleTestFlagsOnly(int* argc, wchar_t** argv) {
+ ParseGoogleTestFlagsOnlyImpl(argc, argv);
+}
+
+// The internal implementation of InitGoogleTest().
+//
+// The type parameter CharType can be instantiated to either char or
+// wchar_t.
+template <typename CharType>
+void InitGoogleTestImpl(int* argc, CharType** argv) {
+ // We don't want to run the initialization code twice.
+ if (GTestIsInitialized()) return;
+
+ if (*argc <= 0) return;
+
+ g_argvs.clear();
+ for (int i = 0; i != *argc; i++) {
+ g_argvs.push_back(StreamableToString(argv[i]));
+ }
+
#if GTEST_HAS_ABSL
absl::InitializeSymbolizer(g_argvs[0].c_str());
#endif // GTEST_HAS_ABSL
- ParseGoogleTestFlagsOnly(argc, argv);
- GetUnitTestImpl()->PostFlagParsingInit();
-}
-
-} // namespace internal
-
-// Initializes Google Test. This must be called before calling
-// RUN_ALL_TESTS(). In particular, it parses a command line for the
-// flags that Google Test recognizes. Whenever a Google Test flag is
-// seen, it is removed from argv, and *argc is decremented.
-//
-// No value is returned. Instead, the Google Test flag variables are
-// updated.
-//
-// Calling the function for the second time has no user-visible effect.
-void InitGoogleTest(int* argc, char** argv) {
-#if defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
- GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_(argc, argv);
-#else // defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
- internal::InitGoogleTestImpl(argc, argv);
-#endif // defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
-}
-
-// This overloaded version can be used in Windows programs compiled in
-// UNICODE mode.
-void InitGoogleTest(int* argc, wchar_t** argv) {
-#if defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
- GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_(argc, argv);
-#else // defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
- internal::InitGoogleTestImpl(argc, argv);
-#endif // defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
-}
-
+ ParseGoogleTestFlagsOnly(argc, argv);
+ GetUnitTestImpl()->PostFlagParsingInit();
+}
+
+} // namespace internal
+
+// Initializes Google Test. This must be called before calling
+// RUN_ALL_TESTS(). In particular, it parses a command line for the
+// flags that Google Test recognizes. Whenever a Google Test flag is
+// seen, it is removed from argv, and *argc is decremented.
+//
+// No value is returned. Instead, the Google Test flag variables are
+// updated.
+//
+// Calling the function for the second time has no user-visible effect.
+void InitGoogleTest(int* argc, char** argv) {
+#if defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
+ GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_(argc, argv);
+#else // defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
+ internal::InitGoogleTestImpl(argc, argv);
+#endif // defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
+}
+
+// This overloaded version can be used in Windows programs compiled in
+// UNICODE mode.
+void InitGoogleTest(int* argc, wchar_t** argv) {
+#if defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
+ GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_(argc, argv);
+#else // defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
+ internal::InitGoogleTestImpl(argc, argv);
+#endif // defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
+}
+
// This overloaded version can be used on Arduino/embedded platforms where
// there is no argc/argv.
void InitGoogleTest() {
@@ -6743,4 +6743,4 @@ ScopedTrace::~ScopedTrace()
UnitTest::GetInstance()->PopGTestTrace();
}
-} // namespace testing
+} // namespace testing
diff --git a/contrib/restricted/googletest/googletest/src/gtest_main.cc b/contrib/restricted/googletest/googletest/src/gtest_main.cc
index 53b5c17aaf..46b27c3d7d 100644
--- a/contrib/restricted/googletest/googletest/src/gtest_main.cc
+++ b/contrib/restricted/googletest/googletest/src/gtest_main.cc
@@ -1,35 +1,35 @@
-// Copyright 2006, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
+// Copyright 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
#include <cstdio>
-#include "gtest/gtest.h"
-
+#include "gtest/gtest.h"
+
#if GTEST_OS_ESP8266 || GTEST_OS_ESP32
#if GTEST_OS_ESP8266
extern "C" {
@@ -46,9 +46,9 @@ void loop() { RUN_ALL_TESTS(); }
#else
-GTEST_API_ int main(int argc, char **argv) {
+GTEST_API_ int main(int argc, char **argv) {
printf("Running main() from %s\n", __FILE__);
- testing::InitGoogleTest(&argc, argv);
- return RUN_ALL_TESTS();
-}
+ testing::InitGoogleTest(&argc, argv);
+ return RUN_ALL_TESTS();
+}
#endif
diff --git a/contrib/restricted/googletest/googletest/ya.make b/contrib/restricted/googletest/googletest/ya.make
index a9f759c2f3..fd0915ff2c 100644
--- a/contrib/restricted/googletest/googletest/ya.make
+++ b/contrib/restricted/googletest/googletest/ya.make
@@ -1,16 +1,16 @@
# Generated by devtools/yamaker.
-LIBRARY()
-
-OWNER(
- somov
- g:cpp-contrib
-)
-
+LIBRARY()
+
+OWNER(
+ somov
+ g:cpp-contrib
+)
+
LICENSE(BSD-3-Clause)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
PEERDIR(
contrib/libs/re2
)
@@ -20,8 +20,8 @@ ADDINCL(
contrib/restricted/googletest/googletest
)
-NO_COMPILER_WARNINGS()
-
+NO_COMPILER_WARNINGS()
+
NO_UTIL()
CFLAGS(
@@ -30,8 +30,8 @@ CFLAGS(
GLOBAL -DGTEST_HAS_STD_WSTRING=1
)
-SRCS(
+SRCS(
src/gtest-all.cc
-)
-
-END()
+)
+
+END()
diff --git a/contrib/restricted/libffi/.yandex_meta/devtools.copyrights.report b/contrib/restricted/libffi/.yandex_meta/devtools.copyrights.report
index 6152189c77..48c030d3f5 100644
--- a/contrib/restricted/libffi/.yandex_meta/devtools.copyrights.report
+++ b/contrib/restricted/libffi/.yandex_meta/devtools.copyrights.report
@@ -1,1052 +1,1052 @@
-# File format ($ symbol means the beginning of a line):
-#
-# $ # this message
-# $ # =======================
-# $ # comments (all commentaries should starts with some number of spaces and # symbol)
-# $ IGNORE_FILES {file1.ext1} {file2.ext2} - (optional) ignore listed files when generating license macro and credits
-# $
-# ${action} {license id} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
-# ${all_file_action} filename
-# $ # user commentaries (many lines)
-# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
-# ${action} {license spdx} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/3/ya.make
-# ${all_file_action} filename
-# $ # user commentaries
-# $ generated description
-# $ ...
-#
-# You can modify action, all_file_action and add commentaries
-# Available actions:
-# keep - keep license in contrib and use in credits
-# skip - skip license
-# remove - remove all files with this license
-# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
-#
-# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
-# We suppose that that files can contain some license info
-# Available all file actions:
-# FILE_IGNORE - ignore file (do nothing)
-# FILE_INCLUDE - include all file data into licenses text file
-# =======================
-
-KEEP COPYRIGHT_SERVICE_LABEL 00187c84ba55fad40c39abab3070b619
-BELONGS ya.make
-FILE_INCLUDE src/aarch64/sysv.S found in files: src/arm/sysv_msvc_arm32.S at line 2
-FILE_INCLUDE src/arm/sysv.S found in files: src/arm/sysv_msvc_arm32.S at line 2
-FILE_INCLUDE src/powerpc/sysv.S found in files: src/arm/sysv_msvc_arm32.S at line 2
-FILE_INCLUDE src/x86/sysv.S found in files: src/arm/sysv_msvc_arm32.S at line 2
- License text:
- sysv.S - Copyright (c) 1998, 2008, 2011 Red Hat, Inc.
- Copyright (c) 2011 Plausible Labs Cooperative, Inc.
- Copyright (c) 2019 Microsoft Corporation.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/arm/sysv_msvc_arm32.S [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 01765536b2c81b2e6d5723e26887c09d
-BELONGS ya.make
- License text:
- Copyright 1993 Bill Triggs <Bill.Triggs@inrialpes.fr>
- Copyright 1995-2017 Bruno Haible <bruno@clisp.org>
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- testsuite/libffi.bhaible/test-call.c [2:3]
- testsuite/libffi.bhaible/test-callback.c [2:3]
- testsuite/libffi.bhaible/testcases.c [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0478178879595bdc16427ed15715c662
-BELONGS ya.make
-FILE_INCLUDE src/x86/ffi64.c found in files: src/x86/ffi64.c at line 2
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/x86/ffi64.c [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 052c1c3a5e5d3d7795ca13c63af68d1d
-BELONGS ya.make
-FILE_INCLUDE src/aarch64/ffi.c found in files: src/x86/ffi.c at line 2
-FILE_INCLUDE src/arm/ffi.c found in files: src/x86/ffi.c at line 2
-FILE_INCLUDE src/powerpc/ffi.c found in files: src/x86/ffi.c at line 2
-FILE_INCLUDE src/x86/ffi.c found in files: src/x86/ffi.c at line 2
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/x86/ffi.c [2:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0b34bff2c04153740dde41de3b3c77ef
-BELONGS ya.make
-FILE_INCLUDE src/aarch64/sysv.S found in files: src/x86/sysv.S at line 2, src/x86/sysv_intel.S at line 2
-FILE_INCLUDE src/arm/sysv.S found in files: src/x86/sysv.S at line 2, src/x86/sysv_intel.S at line 2
-FILE_INCLUDE src/powerpc/sysv.S found in files: src/x86/sysv.S at line 2, src/x86/sysv_intel.S at line 2
-FILE_INCLUDE src/x86/sysv.S found in files: src/x86/sysv.S at line 2, src/x86/sysv_intel.S at line 2
- License text:
- sysv.S - Copyright (c) 2017 Anthony Green
- - Copyright (c) 2013 The Written Word, Inc.
- - Copyright (c) 1996,1998,2001-2003,2005,2008,2010 Red Hat, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/x86/sysv.S [2:4]
- src/x86/sysv_intel.S [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 0d63508d6f5d66dea1a1e0742236209e
-BELONGS ya.make
-FILE_INCLUDE configs/aarch64-apple-iphoneos/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/aarch64-apple-macos/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/aarch64-unknown-linux-android21/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/aarch64-unknown-linux-gnu/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/armv7-apple-iphoneos/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/i386-apple-iphonesimulator/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/i386-microsoft-windows/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/i686-pc-linux-android16/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-apple-iphonesimulator/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-apple-macosx/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-microsoft-windows/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-pc-linux-android21/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-pc-linux-gnu/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE src/aarch64/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE src/arm/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE src/powerpc/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE src/x86/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
- License text:
- ffitarget.h - Copyright (c) 2012 Anthony Green
- Copyright (c) 2010 CodeSourcery
- Copyright (c) 1996-2003 Red Hat, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- configs/armv7-apple-iphoneos/include/ffitarget.h [2:4]
- configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h [2:4]
- configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h [2:4]
- configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h [2:4]
- src/arm/ffitarget.h [2:4]
- src/powerpc/ffitarget.h [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 1b913280da29e7c568d48dd945239a81
-BELONGS ya.make
-FILE_INCLUDE configs/aarch64-apple-iphoneos/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/aarch64-apple-macos/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/aarch64-unknown-linux-android21/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/aarch64-unknown-linux-gnu/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/armv7-apple-iphoneos/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/i386-apple-iphonesimulator/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/i386-microsoft-windows/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/i686-pc-linux-android16/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-apple-iphonesimulator/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-apple-macosx/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-microsoft-windows/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-pc-linux-android21/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-pc-linux-gnu/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE src/aarch64/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE src/arm/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE src/powerpc/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE src/x86/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
- License text:
- ffitarget.h - Copyright (c) 2012, 2014, 2018 Anthony Green
- Copyright (c) 1996-2003, 2010 Red Hat, Inc.
- Copyright (C) 2008 Free Software Foundation, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- configs/i386-apple-iphonesimulator/include/ffitarget.h [2:4]
- configs/i386-microsoft-windows/include/ffitarget.h [2:4]
- configs/i686-pc-linux-android16/include/ffitarget.h [2:4]
- configs/x86_64-apple-iphonesimulator/include/ffitarget.h [2:4]
- configs/x86_64-apple-macosx/include/ffitarget.h [2:4]
- configs/x86_64-microsoft-windows/include/ffitarget.h [2:4]
- configs/x86_64-pc-linux-android21/include/ffitarget.h [2:4]
- configs/x86_64-pc-linux-gnu/include/ffitarget.h [2:4]
- src/x86/ffitarget.h [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2865fad4cff4be561dccb4f455262a73
-BELONGS ya.make
-FILE_INCLUDE src/x86/unix64.S found in files: src/x86/unix64.S at line 2
- License text:
- unix64.S - Copyright (c) 2013 The Written Word, Inc.
- - Copyright (c) 2008 Red Hat, Inc
- - Copyright (c) 2002 Bo Thorsen <bo@suse.de>
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/x86/unix64.S [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 2dc68728a251585f6ded3734ba275956
-BELONGS ya.make
-FILE_INCLUDE src/powerpc/darwin.S found in files: src/powerpc/darwin.S at line 2
- License text:
- darwin.S - Copyright (c) 2000 John Hornkvist
- Copyright (c) 2004, 2010 Free Software Foundation, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/powerpc/darwin.S [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3e4b38960dabd6f1e06c9e7b4092d50e
-BELONGS ya.make
- License text:
- sysv.h - Copyright (c) 2003 Jakub Jelinek <jakub@redhat.com>
- Copyright (c) 2008 Red Hat, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/powerpc/linux64.S [2:3]
- src/powerpc/linux64_closure.S [2:3]
- src/powerpc/ppc_closure.S [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 401b6365bfb4cd9bdc14e362e525bba7
-BELONGS ya.make
-FILE_INCLUDE src/powerpc/darwin.S found in files: src/powerpc/darwin.S at line 2
- License text:
- darwin.S - Copyright (c) 2000 John Hornkvist
- Copyright (c) 2004, 2010 Free Software Foundation, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/powerpc/darwin.S [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 403bbd17ce7819eed5b69efc8bc14d61
-BELONGS ya.make
-FILE_INCLUDE src/aarch64/ffi.c found in files: src/x86/ffi.c at line 2
-FILE_INCLUDE src/arm/ffi.c found in files: src/x86/ffi.c at line 2
-FILE_INCLUDE src/powerpc/ffi.c found in files: src/x86/ffi.c at line 2
-FILE_INCLUDE src/x86/ffi.c found in files: src/x86/ffi.c at line 2
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/x86/ffi.c [2:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4b07d96a6dedca019937e4533d75f6cf
-BELONGS ya.make
-FILE_INCLUDE src/aarch64/ffi.c found in files: src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2, src/x86/unix64.S at line 2
-FILE_INCLUDE src/arm/ffi.c found in files: src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2, src/x86/unix64.S at line 2
-FILE_INCLUDE src/powerpc/ffi.c found in files: src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2, src/x86/unix64.S at line 2
-FILE_INCLUDE src/x86/ffi.c found in files: src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2, src/x86/unix64.S at line 2
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/powerpc/ffi.c [2:7]
- src/powerpc/ffi_linux64.c [2:7]
- src/powerpc/ffi_powerpc.h [2:7]
- src/powerpc/ffi_sysv.c [2:7]
- src/x86/unix64.S [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4c3b062ed9fb36939eb0677ecdb00a76
-BELONGS ya.make
-FILE_INCLUDE src/aarch64/ffi.c found in files: src/arm/ffi.c at line 2
-FILE_INCLUDE src/arm/ffi.c found in files: src/arm/ffi.c at line 2
-FILE_INCLUDE src/powerpc/ffi.c found in files: src/arm/ffi.c at line 2
-FILE_INCLUDE src/x86/ffi.c found in files: src/arm/ffi.c at line 2
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/arm/ffi.c [2:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL 4d48c135b099068d5bb4d03b88fc70f6
-BELONGS ya.make
-FILE_INCLUDE src/prep_cif.c found in files: src/prep_cif.c at line 2
- License text:
- prep_cif.c - Copyright (c) 2011, 2012 Anthony Green
- Copyright (c) 1996, 1998, 2007 Red Hat, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/prep_cif.c [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5a234b05ce11f4b652f30f2349ccecfe
-BELONGS ya.make
-FILE_INCLUDE src/raw_api.c found in files: src/raw_api.c at line 2
- License text:
- raw_api.c - Copyright (c) 1999, 2008 Red Hat, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/raw_api.c [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5bd6b4c4faeac0b7ddfe9732d3220c34
-BELONGS ya.make
- License text:
- /* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- configs/aarch64-apple-iphoneos/include/ffitarget.h [1:1]
- configs/aarch64-apple-macos/include/ffitarget.h [1:1]
- configs/aarch64-unknown-linux-android21/include/ffitarget.h [1:1]
- configs/aarch64-unknown-linux-gnu/include/ffitarget.h [1:1]
- src/aarch64/ffi.c [1:1]
- src/aarch64/ffitarget.h [1:1]
- src/aarch64/sysv.S [1:1]
- src/aarch64/win64_armasm.S [1:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 5dd1514abb9fe8999227adb312261245
-BELONGS ya.make
-FILE_INCLUDE src/powerpc/asm.h found in files: src/powerpc/asm.h at line 2, src/powerpc/ffi.c at line 2, src/powerpc/ffi_darwin.c at line 4, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2, src/powerpc/sysv.S at line 2
- License text:
- asm.h - Copyright (c) 1998 Geoffrey Keating
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/powerpc/asm.h [2:2]
- src/powerpc/ffi.c [2:7]
- src/powerpc/ffi_darwin.c [4:6]
- src/powerpc/ffi_linux64.c [2:7]
- src/powerpc/ffi_powerpc.h [2:7]
- src/powerpc/ffi_sysv.c [2:7]
- src/powerpc/sysv.S [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6310e3a3d85ec95f6cde1a4905907db1
-BELONGS ya.make
-FILE_INCLUDE src/x86/ffi64.c found in files: src/x86/ffi64.c at line 2
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/x86/ffi64.c [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 637dc8a2961c48956053db2fe29d9fee
-BELONGS ya.make
-FILE_INCLUDE src/aarch64/ffi.c found in files: src/x86/ffi.c at line 2
-FILE_INCLUDE src/arm/ffi.c found in files: src/x86/ffi.c at line 2
-FILE_INCLUDE src/powerpc/ffi.c found in files: src/x86/ffi.c at line 2
-FILE_INCLUDE src/x86/ffi.c found in files: src/x86/ffi.c at line 2
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/x86/ffi.c [2:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 65afb8e4b8a0c6bf9e6770607da081fe
-BELONGS ya.make
-FILE_INCLUDE src/aarch64/ffi.c found in files: src/x86/ffi.c at line 2
-FILE_INCLUDE src/arm/ffi.c found in files: src/x86/ffi.c at line 2
-FILE_INCLUDE src/powerpc/ffi.c found in files: src/x86/ffi.c at line 2
-FILE_INCLUDE src/x86/ffi.c found in files: src/x86/ffi.c at line 2
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/x86/ffi.c [2:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 65db8ae202adc1cb1e89ab4ee7885f7d
-BELONGS ya.make
-FILE_INCLUDE configs/aarch64-apple-iphoneos/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/aarch64-apple-macos/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/aarch64-unknown-linux-android21/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/aarch64-unknown-linux-gnu/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/armv7-apple-iphoneos/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/i386-apple-iphonesimulator/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/i386-microsoft-windows/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/i686-pc-linux-android16/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-apple-iphonesimulator/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-apple-macosx/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-microsoft-windows/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-pc-linux-android21/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-pc-linux-gnu/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE src/aarch64/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE src/arm/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE src/powerpc/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE src/x86/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
- License text:
- ffitarget.h - Copyright (c) 2012, 2014, 2018 Anthony Green
- Copyright (c) 1996-2003, 2010 Red Hat, Inc.
- Copyright (C) 2008 Free Software Foundation, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- configs/i386-apple-iphonesimulator/include/ffitarget.h [2:4]
- configs/i386-microsoft-windows/include/ffitarget.h [2:4]
- configs/i686-pc-linux-android16/include/ffitarget.h [2:4]
- configs/x86_64-apple-iphonesimulator/include/ffitarget.h [2:4]
- configs/x86_64-apple-macosx/include/ffitarget.h [2:4]
- configs/x86_64-microsoft-windows/include/ffitarget.h [2:4]
- configs/x86_64-pc-linux-android21/include/ffitarget.h [2:4]
- configs/x86_64-pc-linux-gnu/include/ffitarget.h [2:4]
- src/x86/ffitarget.h [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 6cc31fa4e28785ced48f229334047f70
-BELONGS ya.make
-FILE_INCLUDE src/aarch64/sysv.S found in files: src/powerpc/sysv.S at line 2
-FILE_INCLUDE src/arm/sysv.S found in files: src/powerpc/sysv.S at line 2
-FILE_INCLUDE src/powerpc/sysv.S found in files: src/powerpc/sysv.S at line 2
-FILE_INCLUDE src/x86/sysv.S found in files: src/powerpc/sysv.S at line 2
- License text:
- sysv.S - Copyright (c) 1998 Geoffrey Keating
- Copyright (C) 2007 Free Software Foundation, Inc
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/powerpc/sysv.S [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 71010d0757c05a43e74b16857de2c506
-BELONGS ya.make
-FILE_INCLUDE configs/aarch64-apple-iphoneos/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
-FILE_INCLUDE configs/aarch64-apple-macos/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
-FILE_INCLUDE configs/aarch64-unknown-linux-android21/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
-FILE_INCLUDE configs/aarch64-unknown-linux-gnu/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
-FILE_INCLUDE configs/armv7-apple-iphoneos/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
-FILE_INCLUDE configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
-FILE_INCLUDE configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
-FILE_INCLUDE configs/i386-apple-iphonesimulator/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
-FILE_INCLUDE configs/i386-microsoft-windows/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
-FILE_INCLUDE configs/i686-pc-linux-android16/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
-FILE_INCLUDE configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-apple-iphonesimulator/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-apple-macosx/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-microsoft-windows/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-pc-linux-android21/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-pc-linux-gnu/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
-FILE_INCLUDE src/aarch64/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
-FILE_INCLUDE src/arm/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
-FILE_INCLUDE src/powerpc/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
-FILE_INCLUDE src/x86/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
- License text:
- ffitarget.h - Copyright (c) 2012 Anthony Green
- Copyright (c) 2010 CodeSourcery
- Copyright (c) 1996-2003 Red Hat, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- configs/armv7-apple-iphoneos/include/ffitarget.h [2:4]
- configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h [2:4]
- configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h [2:4]
- src/arm/ffitarget.h [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 71df39897cd5ad3a274921015eb65984
-BELONGS ya.make
-FILE_INCLUDE src/powerpc/aix_closure.S found in files: src/powerpc/aix_closure.S at line 2
-FILE_INCLUDE src/powerpc/darwin_closure.S found in files: src/powerpc/aix_closure.S at line 3
- License text:
- aix_closure.S - Copyright (c) 2002, 2003, 2009 Free Software Foundation, Inc.
- based on darwin_closure.S
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/powerpc/aix_closure.S [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 74baac5a7c57aca625e0c51f8df10a9c
-BELONGS ya.make
- License text:
- libffi - Copyright (c) 1996-2019 Anthony Green, Red Hat, Inc and others.
- See source files for details.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- LICENSE [1:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 799b178fb73cc00b885cb4dcd82bf43c
-BELONGS ya.make
-FILE_INCLUDE src/aarch64/ffi.c found in files: src/x86/ffi.c at line 2
-FILE_INCLUDE src/arm/ffi.c found in files: src/x86/ffi.c at line 2
-FILE_INCLUDE src/powerpc/ffi.c found in files: src/x86/ffi.c at line 2
-FILE_INCLUDE src/x86/ffi.c found in files: src/x86/ffi.c at line 2
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/x86/ffi.c [2:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 7e45c28cda10d145cfbe5e1b903aa8c4
-BELONGS ya.make
-FILE_INCLUDE src/types.c found in files: src/types.c at line 2
- License text:
- types.c - Copyright (c) 1996, 1998 Red Hat, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/types.c [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 85d966389272d37af2daebb0418648d1
-BELONGS ya.make
-FILE_INCLUDE src/aarch64/ffi.c found in files: src/arm/ffi.c at line 2, src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2
-FILE_INCLUDE src/arm/ffi.c found in files: src/arm/ffi.c at line 2, src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2
-FILE_INCLUDE src/powerpc/ffi.c found in files: src/arm/ffi.c at line 2, src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2
-FILE_INCLUDE src/x86/ffi.c found in files: src/arm/ffi.c at line 2, src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/arm/ffi.c [2:6]
- src/powerpc/ffi.c [2:7]
- src/powerpc/ffi_linux64.c [2:7]
- src/powerpc/ffi_powerpc.h [2:7]
- src/powerpc/ffi_sysv.c [2:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8a63aa0926f67817256a8eaf3f2e6169
-BELONGS ya.make
-FILE_INCLUDE configs/aarch64-apple-iphoneos/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/aarch64-apple-macos/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/aarch64-unknown-linux-android21/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/aarch64-unknown-linux-gnu/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/armv7-apple-iphoneos/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/i386-apple-iphonesimulator/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/i386-microsoft-windows/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/i686-pc-linux-android16/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-apple-iphonesimulator/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-apple-macosx/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-microsoft-windows/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-pc-linux-android21/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-pc-linux-gnu/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE src/aarch64/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE src/arm/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE src/powerpc/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
-FILE_INCLUDE src/x86/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
- License text:
- ffitarget.h - Copyright (c) 2012, 2014, 2018 Anthony Green
- Copyright (c) 1996-2003, 2010 Red Hat, Inc.
- Copyright (C) 2008 Free Software Foundation, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- configs/i386-apple-iphonesimulator/include/ffitarget.h [2:4]
- configs/i386-microsoft-windows/include/ffitarget.h [2:4]
- configs/i686-pc-linux-android16/include/ffitarget.h [2:4]
- configs/x86_64-apple-iphonesimulator/include/ffitarget.h [2:4]
- configs/x86_64-apple-macosx/include/ffitarget.h [2:4]
- configs/x86_64-microsoft-windows/include/ffitarget.h [2:4]
- configs/x86_64-pc-linux-android21/include/ffitarget.h [2:4]
- configs/x86_64-pc-linux-gnu/include/ffitarget.h [2:4]
- src/x86/ffitarget.h [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8bb209ebc146ca3e4e5452968b72b281
-BELONGS ya.make
- License text:
- Copyright 1993 Bill Triggs <Bill.Triggs@inrialpes.fr>
- Copyright 1995-2017 Bruno Haible <bruno@clisp.org>
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- testsuite/libffi.bhaible/test-call.c [2:3]
- testsuite/libffi.bhaible/test-callback.c [2:3]
- testsuite/libffi.bhaible/testcases.c [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8cf91579d8cb4087b6bd775cd2b2bbed
-BELONGS ya.make
- License text:
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- LICENSE-BUILDTOOLS [18:20]
-
-KEEP COPYRIGHT_SERVICE_LABEL 8f0c11aa1835fae641f4ad582e7e0a20
-BELONGS ya.make
-FILE_INCLUDE src/x86/ffiw64.c found in files: src/x86/ffiw64.c at line 2
- License text:
- ffiw64.c - Copyright (c) 2018 Anthony Green
- Copyright (c) 2014 Red Hat, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/x86/ffiw64.c [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 90a76f4892b37df2b5485aa231d8dfc6
-BELONGS ya.make
-FILE_INCLUDE src/powerpc/aix.S found in files: src/powerpc/aix.S at line 2
-FILE_INCLUDE src/powerpc/darwin.S found in files: src/powerpc/aix.S at line 3
- License text:
- aix.S - Copyright (c) 2002, 2009 Free Software Foundation, Inc.
- based on darwin.S by John Hornkvist
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/powerpc/aix.S [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 92088a0e20a826627cf80b1afeb28016
-BELONGS ya.make
-FILE_INCLUDE src/aarch64/ffi.c found in files: src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2
-FILE_INCLUDE src/arm/ffi.c found in files: src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2
-FILE_INCLUDE src/powerpc/ffi.c found in files: src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2
-FILE_INCLUDE src/x86/ffi.c found in files: src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/powerpc/ffi.c [2:7]
- src/powerpc/ffi_linux64.c [2:7]
- src/powerpc/ffi_powerpc.h [2:7]
- src/powerpc/ffi_sysv.c [2:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 92f69958e2cb3d97f5ceb8e09bbc7de3
-BELONGS ya.make
-FILE_INCLUDE configs/aarch64-apple-iphoneos/include/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/aarch64-apple-macos/include/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/aarch64-unknown-linux-android21/include/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/aarch64-unknown-linux-gnu/include/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/armv7-apple-iphoneos/include/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/i386-apple-iphonesimulator/include/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/i386-microsoft-windows/include/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/i686-pc-linux-android16/include/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-apple-iphonesimulator/include/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-apple-macosx/include/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-microsoft-windows/include/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-pc-linux-android21/include/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-pc-linux-gnu/include/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE src/aarch64/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE src/arm/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE src/powerpc/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE src/x86/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
- License text:
- ffitarget.h - Copyright (c) 2012 Anthony Green
- Copyright (C) 2007, 2008, 2010 Free Software Foundation, Inc
- Copyright (c) 1996-2003 Red Hat, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h [2:4]
- src/powerpc/ffitarget.h [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9360b5032b2bb2374921c8ed63690c5c
-BELONGS ya.make
-FILE_INCLUDE src/aarch64/ffi.c found in files: src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2
-FILE_INCLUDE src/arm/ffi.c found in files: src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2
-FILE_INCLUDE src/powerpc/ffi.c found in files: src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2
-FILE_INCLUDE src/x86/ffi.c found in files: src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/powerpc/ffi.c [2:7]
- src/powerpc/ffi_linux64.c [2:7]
- src/powerpc/ffi_powerpc.h [2:7]
- src/powerpc/ffi_sysv.c [2:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 98ca267ad638ce93032244eddc331671
-BELONGS ya.make
- License text:
- libffi 3.3 - Copyright (c) 2011, 2014, 2019 Anthony Green
- - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- configs/aarch64-apple-iphoneos/include/ffi.h [2:3]
- configs/aarch64-apple-macos/include/ffi.h [2:3]
- configs/aarch64-unknown-linux-android21/include/ffi.h [2:3]
- configs/aarch64-unknown-linux-gnu/include/ffi.h [2:3]
- configs/armv7-apple-iphoneos/include/ffi.h [2:3]
- configs/armv7a-unknown-linux-androideabi16/include/ffi.h [2:3]
- configs/armv7a-unknown-linux-gnueabihf/include/ffi.h [2:3]
- configs/i386-apple-iphonesimulator/include/ffi.h [2:3]
- configs/i386-microsoft-windows/include/ffi.h [2:3]
- configs/i686-pc-linux-android16/include/ffi.h [2:3]
- configs/powerpc64le-unknown-linux-gnu/include/ffi.h [2:3]
- configs/x86_64-apple-iphonesimulator/include/ffi.h [2:3]
- configs/x86_64-apple-macosx/include/ffi.h [2:3]
- configs/x86_64-microsoft-windows/include/ffi.h [2:3]
- configs/x86_64-pc-linux-android21/include/ffi.h [2:3]
- configs/x86_64-pc-linux-gnu/include/ffi.h [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9a3039fb6d1725a9e659c2ece11dc9df
-BELONGS ya.make
-FILE_INCLUDE src/aarch64/ffi.c found in files: src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2
-FILE_INCLUDE src/arm/ffi.c found in files: src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2
-FILE_INCLUDE src/powerpc/ffi.c found in files: src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2
-FILE_INCLUDE src/x86/ffi.c found in files: src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/powerpc/ffi.c [2:7]
- src/powerpc/ffi_linux64.c [2:7]
- src/powerpc/ffi_powerpc.h [2:7]
- src/powerpc/ffi_sysv.c [2:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 9aee05ea503217437fbb9b682dedd62b
-BELONGS ya.make
-FILE_INCLUDE src/aarch64/ffi.c found in files: src/x86/ffi.c at line 2, src/x86/sysv.S at line 2, src/x86/sysv_intel.S at line 2
-FILE_INCLUDE src/arm/ffi.c found in files: src/x86/ffi.c at line 2, src/x86/sysv.S at line 2, src/x86/sysv_intel.S at line 2
-FILE_INCLUDE src/powerpc/ffi.c found in files: src/x86/ffi.c at line 2, src/x86/sysv.S at line 2, src/x86/sysv_intel.S at line 2
-FILE_INCLUDE src/x86/ffi.c found in files: src/x86/ffi.c at line 2, src/x86/sysv.S at line 2, src/x86/sysv_intel.S at line 2
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/x86/ffi.c [2:7]
- src/x86/sysv.S [2:4]
- src/x86/sysv_intel.S [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL a53e947aa1cc85c66b06dbe114602193
-BELONGS ya.make
- License text:
- Copyright (C) 2003-2004, 2006, 2009-2017 Free Software Foundation, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- testsuite/libffi.bhaible/alignof.h [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL a60ca6b2738189ea2d405ca117cba78b
-BELONGS ya.make
-FILE_INCLUDE src/aarch64/ffi.c found in files: src/arm/ffi.c at line 2
-FILE_INCLUDE src/arm/ffi.c found in files: src/arm/ffi.c at line 2
-FILE_INCLUDE src/powerpc/ffi.c found in files: src/arm/ffi.c at line 2
-FILE_INCLUDE src/x86/ffi.c found in files: src/arm/ffi.c at line 2
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/arm/ffi.c [2:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL b347ef57b7ab30b906088c5599cb78aa
-BELONGS ya.make
-FILE_INCLUDE src/prep_cif.c found in files: src/prep_cif.c at line 2
- License text:
- prep_cif.c - Copyright (c) 2011, 2012 Anthony Green
- Copyright (c) 1996, 1998, 2007 Red Hat, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/prep_cif.c [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL b4a4b6d5dcf5d8a00940bcc67527cb55
-BELONGS ya.make
- License text:
- Copyright (C) 1998 Geoffrey Keating
- Copyright (C) 2001 John Hornkvist
- Copyright (C) 2002, 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/powerpc/ffi_darwin.c [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL bbeada5053f5f84669599cc3675c9ff8
-BELONGS ya.make
-FILE_INCLUDE src/x86/ffi64.c found in files: src/x86/ffi64.c at line 2, src/x86/sysv.S at line 2, src/x86/sysv_intel.S at line 2, src/x86/unix64.S at line 2
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/x86/ffi64.c [2:5]
- src/x86/sysv.S [2:4]
- src/x86/sysv_intel.S [2:4]
- src/x86/unix64.S [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL c0a580767e4df988cbeb3a33fe57d251
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- LICENSE-BUILDTOOLS [265:270]
-
-KEEP COPYRIGHT_SERVICE_LABEL c3da44843e293e10c846eb5919c3e957
-BELONGS ya.make
- License text:
- libffi 3.3 - Copyright (c) 2011, 2014, 2019 Anthony Green
- - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- configs/aarch64-apple-iphoneos/include/ffi.h [2:3]
- configs/aarch64-apple-macos/include/ffi.h [2:3]
- configs/aarch64-unknown-linux-android21/include/ffi.h [2:3]
- configs/aarch64-unknown-linux-gnu/include/ffi.h [2:3]
- configs/armv7-apple-iphoneos/include/ffi.h [2:3]
- configs/armv7a-unknown-linux-androideabi16/include/ffi.h [2:3]
- configs/armv7a-unknown-linux-gnueabihf/include/ffi.h [2:3]
- configs/i386-apple-iphonesimulator/include/ffi.h [2:3]
- configs/i386-microsoft-windows/include/ffi.h [2:3]
- configs/i686-pc-linux-android16/include/ffi.h [2:3]
- configs/powerpc64le-unknown-linux-gnu/include/ffi.h [2:3]
- configs/x86_64-apple-iphonesimulator/include/ffi.h [2:3]
- configs/x86_64-apple-macosx/include/ffi.h [2:3]
- configs/x86_64-microsoft-windows/include/ffi.h [2:3]
- configs/x86_64-pc-linux-android21/include/ffi.h [2:3]
- configs/x86_64-pc-linux-gnu/include/ffi.h [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL c5cd4e983e11baed0437804f072c4959
-BELONGS ya.make
-FILE_INCLUDE src/java_raw_api.c found in files: src/java_raw_api.c at line 2
- License text:
- java_raw_api.c - Copyright (c) 1999, 2007, 2008 Red Hat, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/java_raw_api.c [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL cf717d02a744822d6c307e6800af472e
-BELONGS ya.make
-FILE_INCLUDE src/x86/ffiw64.c found in files: src/x86/ffiw64.c at line 2
- License text:
- ffiw64.c - Copyright (c) 2018 Anthony Green
- Copyright (c) 2014 Red Hat, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/x86/ffiw64.c [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL d0e44c08baa88fd789bb5314fb7dd225
-BELONGS ya.make
-FILE_INCLUDE src/closures.c found in files: src/closures.c at line 2
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/closures.c [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL d44bbb09a09c349d90800f1c8524ebf5
-BELONGS ya.make
- License text:
- Copyright (C) 1998 Geoffrey Keating
- Copyright (C) 2001 John Hornkvist
- Copyright (C) 2002, 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/powerpc/ffi_darwin.c [4:6]
-
-KEEP COPYRIGHT_SERVICE_LABEL d51d88020cf2cb05e20c998ed1bcecea
-BELONGS ya.make
-FILE_INCLUDE configs/aarch64-apple-iphoneos/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/aarch64-apple-macos/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/aarch64-unknown-linux-android21/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/aarch64-unknown-linux-gnu/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/armv7-apple-iphoneos/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/i386-apple-iphonesimulator/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/i386-microsoft-windows/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/i686-pc-linux-android16/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-apple-iphonesimulator/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-apple-macosx/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-microsoft-windows/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-pc-linux-android21/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE configs/x86_64-pc-linux-gnu/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE src/aarch64/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE src/arm/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE src/powerpc/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
-FILE_INCLUDE src/x86/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
- License text:
- ffitarget.h - Copyright (c) 2012 Anthony Green
- Copyright (c) 2010 CodeSourcery
- Copyright (c) 1996-2003 Red Hat, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- configs/armv7-apple-iphoneos/include/ffitarget.h [2:4]
- configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h [2:4]
- configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h [2:4]
- configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h [2:4]
- src/arm/ffitarget.h [2:4]
- src/powerpc/ffitarget.h [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL d75d0a21b80e1ba25b7a741e84d78058
-BELONGS ya.make
-FILE_INCLUDE src/aarch64/ffi.c found in files: src/arm/ffi.c at line 2, src/arm/sysv.S at line 2, src/arm/sysv_msvc_arm32.S at line 2
-FILE_INCLUDE src/arm/ffi.c found in files: src/arm/ffi.c at line 2, src/arm/sysv.S at line 2, src/arm/sysv_msvc_arm32.S at line 2
-FILE_INCLUDE src/powerpc/ffi.c found in files: src/arm/ffi.c at line 2, src/arm/sysv.S at line 2, src/arm/sysv_msvc_arm32.S at line 2
-FILE_INCLUDE src/x86/ffi.c found in files: src/arm/ffi.c at line 2, src/arm/sysv.S at line 2, src/arm/sysv_msvc_arm32.S at line 2
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/arm/ffi.c [2:6]
- src/arm/sysv.S [2:3]
- src/arm/sysv_msvc_arm32.S [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL dae195961c4466f8ada6ccf3c4f03193
-BELONGS ya.make
-FILE_INCLUDE src/powerpc/darwin_closure.S found in files: src/powerpc/darwin_closure.S at line 2
-FILE_INCLUDE src/powerpc/ppc_closure.S found in files: src/powerpc/darwin_closure.S at line 4
- License text:
- darwin_closure.S - Copyright (c) 2002, 2003, 2004, 2010,
- Free Software Foundation, Inc.
- based on ppc_closure.S
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/powerpc/darwin_closure.S [2:4]
-
-KEEP COPYRIGHT_SERVICE_LABEL eab8fcbb0dd98b697803d416acbd2b9d
-BELONGS ya.make
- License text:
- sysv.h - Copyright (c) 2003 Jakub Jelinek <jakub@redhat.com>
- Copyright (c) 2008 Red Hat, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/powerpc/linux64.S [2:3]
- src/powerpc/linux64_closure.S [2:3]
- src/powerpc/ppc_closure.S [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL ec4dfe2ae44087a19ee17a7349a4c8cc
-BELONGS ya.make
-FILE_INCLUDE src/closures.c found in files: src/closures.c at line 2
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/closures.c [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL ec9f15539f2782bc2970e988e5571a2b
-BELONGS ya.make
-FILE_INCLUDE src/closures.c found in files: src/closures.c at line 2
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/closures.c [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL f7e8bccb8d662a0b5c345cbc976f4e7d
-BELONGS ya.make
-FILE_INCLUDE src/closures.c found in files: src/arm/ffi.c at line 2, src/arm/sysv.S at line 2, src/arm/sysv_msvc_arm32.S at line 2, src/closures.c at line 2
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/arm/ffi.c [2:6]
- src/arm/sysv.S [2:3]
- src/arm/sysv_msvc_arm32.S [2:4]
- src/closures.c [2:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL ff47afde0d2610960baab8078de46884
-BELONGS ya.make
-FILE_INCLUDE src/x86/ffi64.c found in files: src/x86/ffi64.c at line 2
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- src/x86/ffi64.c [2:5]
+# File format ($ symbol means the beginning of a line):
+#
+# $ # this message
+# $ # =======================
+# $ # comments (all commentaries should starts with some number of spaces and # symbol)
+# $ IGNORE_FILES {file1.ext1} {file2.ext2} - (optional) ignore listed files when generating license macro and credits
+# $
+# ${action} {license id} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
+# ${all_file_action} filename
+# $ # user commentaries (many lines)
+# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
+# ${action} {license spdx} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/3/ya.make
+# ${all_file_action} filename
+# $ # user commentaries
+# $ generated description
+# $ ...
+#
+# You can modify action, all_file_action and add commentaries
+# Available actions:
+# keep - keep license in contrib and use in credits
+# skip - skip license
+# remove - remove all files with this license
+# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
+#
+# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
+# We suppose that that files can contain some license info
+# Available all file actions:
+# FILE_IGNORE - ignore file (do nothing)
+# FILE_INCLUDE - include all file data into licenses text file
+# =======================
+
+KEEP COPYRIGHT_SERVICE_LABEL 00187c84ba55fad40c39abab3070b619
+BELONGS ya.make
+FILE_INCLUDE src/aarch64/sysv.S found in files: src/arm/sysv_msvc_arm32.S at line 2
+FILE_INCLUDE src/arm/sysv.S found in files: src/arm/sysv_msvc_arm32.S at line 2
+FILE_INCLUDE src/powerpc/sysv.S found in files: src/arm/sysv_msvc_arm32.S at line 2
+FILE_INCLUDE src/x86/sysv.S found in files: src/arm/sysv_msvc_arm32.S at line 2
+ License text:
+ sysv.S - Copyright (c) 1998, 2008, 2011 Red Hat, Inc.
+ Copyright (c) 2011 Plausible Labs Cooperative, Inc.
+ Copyright (c) 2019 Microsoft Corporation.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/arm/sysv_msvc_arm32.S [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 01765536b2c81b2e6d5723e26887c09d
+BELONGS ya.make
+ License text:
+ Copyright 1993 Bill Triggs <Bill.Triggs@inrialpes.fr>
+ Copyright 1995-2017 Bruno Haible <bruno@clisp.org>
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ testsuite/libffi.bhaible/test-call.c [2:3]
+ testsuite/libffi.bhaible/test-callback.c [2:3]
+ testsuite/libffi.bhaible/testcases.c [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0478178879595bdc16427ed15715c662
+BELONGS ya.make
+FILE_INCLUDE src/x86/ffi64.c found in files: src/x86/ffi64.c at line 2
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/x86/ffi64.c [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 052c1c3a5e5d3d7795ca13c63af68d1d
+BELONGS ya.make
+FILE_INCLUDE src/aarch64/ffi.c found in files: src/x86/ffi.c at line 2
+FILE_INCLUDE src/arm/ffi.c found in files: src/x86/ffi.c at line 2
+FILE_INCLUDE src/powerpc/ffi.c found in files: src/x86/ffi.c at line 2
+FILE_INCLUDE src/x86/ffi.c found in files: src/x86/ffi.c at line 2
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/x86/ffi.c [2:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0b34bff2c04153740dde41de3b3c77ef
+BELONGS ya.make
+FILE_INCLUDE src/aarch64/sysv.S found in files: src/x86/sysv.S at line 2, src/x86/sysv_intel.S at line 2
+FILE_INCLUDE src/arm/sysv.S found in files: src/x86/sysv.S at line 2, src/x86/sysv_intel.S at line 2
+FILE_INCLUDE src/powerpc/sysv.S found in files: src/x86/sysv.S at line 2, src/x86/sysv_intel.S at line 2
+FILE_INCLUDE src/x86/sysv.S found in files: src/x86/sysv.S at line 2, src/x86/sysv_intel.S at line 2
+ License text:
+ sysv.S - Copyright (c) 2017 Anthony Green
+ - Copyright (c) 2013 The Written Word, Inc.
+ - Copyright (c) 1996,1998,2001-2003,2005,2008,2010 Red Hat, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/x86/sysv.S [2:4]
+ src/x86/sysv_intel.S [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 0d63508d6f5d66dea1a1e0742236209e
+BELONGS ya.make
+FILE_INCLUDE configs/aarch64-apple-iphoneos/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/aarch64-apple-macos/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/aarch64-unknown-linux-android21/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/aarch64-unknown-linux-gnu/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/armv7-apple-iphoneos/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/i386-apple-iphonesimulator/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/i386-microsoft-windows/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/i686-pc-linux-android16/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-apple-iphonesimulator/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-apple-macosx/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-microsoft-windows/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-pc-linux-android21/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-pc-linux-gnu/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE src/aarch64/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE src/arm/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE src/powerpc/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE src/x86/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+ License text:
+ ffitarget.h - Copyright (c) 2012 Anthony Green
+ Copyright (c) 2010 CodeSourcery
+ Copyright (c) 1996-2003 Red Hat, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ configs/armv7-apple-iphoneos/include/ffitarget.h [2:4]
+ configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h [2:4]
+ configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h [2:4]
+ configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h [2:4]
+ src/arm/ffitarget.h [2:4]
+ src/powerpc/ffitarget.h [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1b913280da29e7c568d48dd945239a81
+BELONGS ya.make
+FILE_INCLUDE configs/aarch64-apple-iphoneos/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/aarch64-apple-macos/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/aarch64-unknown-linux-android21/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/aarch64-unknown-linux-gnu/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/armv7-apple-iphoneos/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/i386-apple-iphonesimulator/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/i386-microsoft-windows/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/i686-pc-linux-android16/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-apple-iphonesimulator/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-apple-macosx/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-microsoft-windows/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-pc-linux-android21/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-pc-linux-gnu/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE src/aarch64/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE src/arm/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE src/powerpc/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE src/x86/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+ License text:
+ ffitarget.h - Copyright (c) 2012, 2014, 2018 Anthony Green
+ Copyright (c) 1996-2003, 2010 Red Hat, Inc.
+ Copyright (C) 2008 Free Software Foundation, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ configs/i386-apple-iphonesimulator/include/ffitarget.h [2:4]
+ configs/i386-microsoft-windows/include/ffitarget.h [2:4]
+ configs/i686-pc-linux-android16/include/ffitarget.h [2:4]
+ configs/x86_64-apple-iphonesimulator/include/ffitarget.h [2:4]
+ configs/x86_64-apple-macosx/include/ffitarget.h [2:4]
+ configs/x86_64-microsoft-windows/include/ffitarget.h [2:4]
+ configs/x86_64-pc-linux-android21/include/ffitarget.h [2:4]
+ configs/x86_64-pc-linux-gnu/include/ffitarget.h [2:4]
+ src/x86/ffitarget.h [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2865fad4cff4be561dccb4f455262a73
+BELONGS ya.make
+FILE_INCLUDE src/x86/unix64.S found in files: src/x86/unix64.S at line 2
+ License text:
+ unix64.S - Copyright (c) 2013 The Written Word, Inc.
+ - Copyright (c) 2008 Red Hat, Inc
+ - Copyright (c) 2002 Bo Thorsen <bo@suse.de>
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/x86/unix64.S [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 2dc68728a251585f6ded3734ba275956
+BELONGS ya.make
+FILE_INCLUDE src/powerpc/darwin.S found in files: src/powerpc/darwin.S at line 2
+ License text:
+ darwin.S - Copyright (c) 2000 John Hornkvist
+ Copyright (c) 2004, 2010 Free Software Foundation, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/powerpc/darwin.S [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3e4b38960dabd6f1e06c9e7b4092d50e
+BELONGS ya.make
+ License text:
+ sysv.h - Copyright (c) 2003 Jakub Jelinek <jakub@redhat.com>
+ Copyright (c) 2008 Red Hat, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/powerpc/linux64.S [2:3]
+ src/powerpc/linux64_closure.S [2:3]
+ src/powerpc/ppc_closure.S [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 401b6365bfb4cd9bdc14e362e525bba7
+BELONGS ya.make
+FILE_INCLUDE src/powerpc/darwin.S found in files: src/powerpc/darwin.S at line 2
+ License text:
+ darwin.S - Copyright (c) 2000 John Hornkvist
+ Copyright (c) 2004, 2010 Free Software Foundation, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/powerpc/darwin.S [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 403bbd17ce7819eed5b69efc8bc14d61
+BELONGS ya.make
+FILE_INCLUDE src/aarch64/ffi.c found in files: src/x86/ffi.c at line 2
+FILE_INCLUDE src/arm/ffi.c found in files: src/x86/ffi.c at line 2
+FILE_INCLUDE src/powerpc/ffi.c found in files: src/x86/ffi.c at line 2
+FILE_INCLUDE src/x86/ffi.c found in files: src/x86/ffi.c at line 2
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/x86/ffi.c [2:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4b07d96a6dedca019937e4533d75f6cf
+BELONGS ya.make
+FILE_INCLUDE src/aarch64/ffi.c found in files: src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2, src/x86/unix64.S at line 2
+FILE_INCLUDE src/arm/ffi.c found in files: src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2, src/x86/unix64.S at line 2
+FILE_INCLUDE src/powerpc/ffi.c found in files: src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2, src/x86/unix64.S at line 2
+FILE_INCLUDE src/x86/ffi.c found in files: src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2, src/x86/unix64.S at line 2
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/powerpc/ffi.c [2:7]
+ src/powerpc/ffi_linux64.c [2:7]
+ src/powerpc/ffi_powerpc.h [2:7]
+ src/powerpc/ffi_sysv.c [2:7]
+ src/x86/unix64.S [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4c3b062ed9fb36939eb0677ecdb00a76
+BELONGS ya.make
+FILE_INCLUDE src/aarch64/ffi.c found in files: src/arm/ffi.c at line 2
+FILE_INCLUDE src/arm/ffi.c found in files: src/arm/ffi.c at line 2
+FILE_INCLUDE src/powerpc/ffi.c found in files: src/arm/ffi.c at line 2
+FILE_INCLUDE src/x86/ffi.c found in files: src/arm/ffi.c at line 2
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/arm/ffi.c [2:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL 4d48c135b099068d5bb4d03b88fc70f6
+BELONGS ya.make
+FILE_INCLUDE src/prep_cif.c found in files: src/prep_cif.c at line 2
+ License text:
+ prep_cif.c - Copyright (c) 2011, 2012 Anthony Green
+ Copyright (c) 1996, 1998, 2007 Red Hat, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/prep_cif.c [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5a234b05ce11f4b652f30f2349ccecfe
+BELONGS ya.make
+FILE_INCLUDE src/raw_api.c found in files: src/raw_api.c at line 2
+ License text:
+ raw_api.c - Copyright (c) 1999, 2008 Red Hat, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/raw_api.c [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5bd6b4c4faeac0b7ddfe9732d3220c34
+BELONGS ya.make
+ License text:
+ /* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ configs/aarch64-apple-iphoneos/include/ffitarget.h [1:1]
+ configs/aarch64-apple-macos/include/ffitarget.h [1:1]
+ configs/aarch64-unknown-linux-android21/include/ffitarget.h [1:1]
+ configs/aarch64-unknown-linux-gnu/include/ffitarget.h [1:1]
+ src/aarch64/ffi.c [1:1]
+ src/aarch64/ffitarget.h [1:1]
+ src/aarch64/sysv.S [1:1]
+ src/aarch64/win64_armasm.S [1:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 5dd1514abb9fe8999227adb312261245
+BELONGS ya.make
+FILE_INCLUDE src/powerpc/asm.h found in files: src/powerpc/asm.h at line 2, src/powerpc/ffi.c at line 2, src/powerpc/ffi_darwin.c at line 4, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2, src/powerpc/sysv.S at line 2
+ License text:
+ asm.h - Copyright (c) 1998 Geoffrey Keating
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/powerpc/asm.h [2:2]
+ src/powerpc/ffi.c [2:7]
+ src/powerpc/ffi_darwin.c [4:6]
+ src/powerpc/ffi_linux64.c [2:7]
+ src/powerpc/ffi_powerpc.h [2:7]
+ src/powerpc/ffi_sysv.c [2:7]
+ src/powerpc/sysv.S [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6310e3a3d85ec95f6cde1a4905907db1
+BELONGS ya.make
+FILE_INCLUDE src/x86/ffi64.c found in files: src/x86/ffi64.c at line 2
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/x86/ffi64.c [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 637dc8a2961c48956053db2fe29d9fee
+BELONGS ya.make
+FILE_INCLUDE src/aarch64/ffi.c found in files: src/x86/ffi.c at line 2
+FILE_INCLUDE src/arm/ffi.c found in files: src/x86/ffi.c at line 2
+FILE_INCLUDE src/powerpc/ffi.c found in files: src/x86/ffi.c at line 2
+FILE_INCLUDE src/x86/ffi.c found in files: src/x86/ffi.c at line 2
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/x86/ffi.c [2:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 65afb8e4b8a0c6bf9e6770607da081fe
+BELONGS ya.make
+FILE_INCLUDE src/aarch64/ffi.c found in files: src/x86/ffi.c at line 2
+FILE_INCLUDE src/arm/ffi.c found in files: src/x86/ffi.c at line 2
+FILE_INCLUDE src/powerpc/ffi.c found in files: src/x86/ffi.c at line 2
+FILE_INCLUDE src/x86/ffi.c found in files: src/x86/ffi.c at line 2
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/x86/ffi.c [2:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 65db8ae202adc1cb1e89ab4ee7885f7d
+BELONGS ya.make
+FILE_INCLUDE configs/aarch64-apple-iphoneos/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/aarch64-apple-macos/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/aarch64-unknown-linux-android21/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/aarch64-unknown-linux-gnu/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/armv7-apple-iphoneos/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/i386-apple-iphonesimulator/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/i386-microsoft-windows/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/i686-pc-linux-android16/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-apple-iphonesimulator/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-apple-macosx/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-microsoft-windows/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-pc-linux-android21/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-pc-linux-gnu/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE src/aarch64/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE src/arm/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE src/powerpc/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE src/x86/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+ License text:
+ ffitarget.h - Copyright (c) 2012, 2014, 2018 Anthony Green
+ Copyright (c) 1996-2003, 2010 Red Hat, Inc.
+ Copyright (C) 2008 Free Software Foundation, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ configs/i386-apple-iphonesimulator/include/ffitarget.h [2:4]
+ configs/i386-microsoft-windows/include/ffitarget.h [2:4]
+ configs/i686-pc-linux-android16/include/ffitarget.h [2:4]
+ configs/x86_64-apple-iphonesimulator/include/ffitarget.h [2:4]
+ configs/x86_64-apple-macosx/include/ffitarget.h [2:4]
+ configs/x86_64-microsoft-windows/include/ffitarget.h [2:4]
+ configs/x86_64-pc-linux-android21/include/ffitarget.h [2:4]
+ configs/x86_64-pc-linux-gnu/include/ffitarget.h [2:4]
+ src/x86/ffitarget.h [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 6cc31fa4e28785ced48f229334047f70
+BELONGS ya.make
+FILE_INCLUDE src/aarch64/sysv.S found in files: src/powerpc/sysv.S at line 2
+FILE_INCLUDE src/arm/sysv.S found in files: src/powerpc/sysv.S at line 2
+FILE_INCLUDE src/powerpc/sysv.S found in files: src/powerpc/sysv.S at line 2
+FILE_INCLUDE src/x86/sysv.S found in files: src/powerpc/sysv.S at line 2
+ License text:
+ sysv.S - Copyright (c) 1998 Geoffrey Keating
+ Copyright (C) 2007 Free Software Foundation, Inc
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/powerpc/sysv.S [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 71010d0757c05a43e74b16857de2c506
+BELONGS ya.make
+FILE_INCLUDE configs/aarch64-apple-iphoneos/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
+FILE_INCLUDE configs/aarch64-apple-macos/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
+FILE_INCLUDE configs/aarch64-unknown-linux-android21/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
+FILE_INCLUDE configs/aarch64-unknown-linux-gnu/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
+FILE_INCLUDE configs/armv7-apple-iphoneos/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
+FILE_INCLUDE configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
+FILE_INCLUDE configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
+FILE_INCLUDE configs/i386-apple-iphonesimulator/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
+FILE_INCLUDE configs/i386-microsoft-windows/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
+FILE_INCLUDE configs/i686-pc-linux-android16/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
+FILE_INCLUDE configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-apple-iphonesimulator/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-apple-macosx/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-microsoft-windows/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-pc-linux-android21/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-pc-linux-gnu/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
+FILE_INCLUDE src/aarch64/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
+FILE_INCLUDE src/arm/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
+FILE_INCLUDE src/powerpc/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
+FILE_INCLUDE src/x86/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2
+ License text:
+ ffitarget.h - Copyright (c) 2012 Anthony Green
+ Copyright (c) 2010 CodeSourcery
+ Copyright (c) 1996-2003 Red Hat, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ configs/armv7-apple-iphoneos/include/ffitarget.h [2:4]
+ configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h [2:4]
+ configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h [2:4]
+ src/arm/ffitarget.h [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 71df39897cd5ad3a274921015eb65984
+BELONGS ya.make
+FILE_INCLUDE src/powerpc/aix_closure.S found in files: src/powerpc/aix_closure.S at line 2
+FILE_INCLUDE src/powerpc/darwin_closure.S found in files: src/powerpc/aix_closure.S at line 3
+ License text:
+ aix_closure.S - Copyright (c) 2002, 2003, 2009 Free Software Foundation, Inc.
+ based on darwin_closure.S
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/powerpc/aix_closure.S [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 74baac5a7c57aca625e0c51f8df10a9c
+BELONGS ya.make
+ License text:
+ libffi - Copyright (c) 1996-2019 Anthony Green, Red Hat, Inc and others.
+ See source files for details.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ LICENSE [1:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 799b178fb73cc00b885cb4dcd82bf43c
+BELONGS ya.make
+FILE_INCLUDE src/aarch64/ffi.c found in files: src/x86/ffi.c at line 2
+FILE_INCLUDE src/arm/ffi.c found in files: src/x86/ffi.c at line 2
+FILE_INCLUDE src/powerpc/ffi.c found in files: src/x86/ffi.c at line 2
+FILE_INCLUDE src/x86/ffi.c found in files: src/x86/ffi.c at line 2
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/x86/ffi.c [2:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7e45c28cda10d145cfbe5e1b903aa8c4
+BELONGS ya.make
+FILE_INCLUDE src/types.c found in files: src/types.c at line 2
+ License text:
+ types.c - Copyright (c) 1996, 1998 Red Hat, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/types.c [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 85d966389272d37af2daebb0418648d1
+BELONGS ya.make
+FILE_INCLUDE src/aarch64/ffi.c found in files: src/arm/ffi.c at line 2, src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2
+FILE_INCLUDE src/arm/ffi.c found in files: src/arm/ffi.c at line 2, src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2
+FILE_INCLUDE src/powerpc/ffi.c found in files: src/arm/ffi.c at line 2, src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2
+FILE_INCLUDE src/x86/ffi.c found in files: src/arm/ffi.c at line 2, src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/arm/ffi.c [2:6]
+ src/powerpc/ffi.c [2:7]
+ src/powerpc/ffi_linux64.c [2:7]
+ src/powerpc/ffi_powerpc.h [2:7]
+ src/powerpc/ffi_sysv.c [2:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8a63aa0926f67817256a8eaf3f2e6169
+BELONGS ya.make
+FILE_INCLUDE configs/aarch64-apple-iphoneos/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/aarch64-apple-macos/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/aarch64-unknown-linux-android21/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/aarch64-unknown-linux-gnu/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/armv7-apple-iphoneos/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/i386-apple-iphonesimulator/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/i386-microsoft-windows/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/i686-pc-linux-android16/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-apple-iphonesimulator/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-apple-macosx/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-microsoft-windows/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-pc-linux-android21/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-pc-linux-gnu/include/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE src/aarch64/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE src/arm/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE src/powerpc/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+FILE_INCLUDE src/x86/ffitarget.h found in files: configs/i386-apple-iphonesimulator/include/ffitarget.h at line 2, configs/i386-microsoft-windows/include/ffitarget.h at line 2, configs/i686-pc-linux-android16/include/ffitarget.h at line 2, configs/x86_64-apple-iphonesimulator/include/ffitarget.h at line 2, configs/x86_64-apple-macosx/include/ffitarget.h at line 2, configs/x86_64-microsoft-windows/include/ffitarget.h at line 2, configs/x86_64-pc-linux-android21/include/ffitarget.h at line 2, configs/x86_64-pc-linux-gnu/include/ffitarget.h at line 2, src/x86/ffitarget.h at line 2
+ License text:
+ ffitarget.h - Copyright (c) 2012, 2014, 2018 Anthony Green
+ Copyright (c) 1996-2003, 2010 Red Hat, Inc.
+ Copyright (C) 2008 Free Software Foundation, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ configs/i386-apple-iphonesimulator/include/ffitarget.h [2:4]
+ configs/i386-microsoft-windows/include/ffitarget.h [2:4]
+ configs/i686-pc-linux-android16/include/ffitarget.h [2:4]
+ configs/x86_64-apple-iphonesimulator/include/ffitarget.h [2:4]
+ configs/x86_64-apple-macosx/include/ffitarget.h [2:4]
+ configs/x86_64-microsoft-windows/include/ffitarget.h [2:4]
+ configs/x86_64-pc-linux-android21/include/ffitarget.h [2:4]
+ configs/x86_64-pc-linux-gnu/include/ffitarget.h [2:4]
+ src/x86/ffitarget.h [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8bb209ebc146ca3e4e5452968b72b281
+BELONGS ya.make
+ License text:
+ Copyright 1993 Bill Triggs <Bill.Triggs@inrialpes.fr>
+ Copyright 1995-2017 Bruno Haible <bruno@clisp.org>
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ testsuite/libffi.bhaible/test-call.c [2:3]
+ testsuite/libffi.bhaible/test-callback.c [2:3]
+ testsuite/libffi.bhaible/testcases.c [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8cf91579d8cb4087b6bd775cd2b2bbed
+BELONGS ya.make
+ License text:
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ LICENSE-BUILDTOOLS [18:20]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8f0c11aa1835fae641f4ad582e7e0a20
+BELONGS ya.make
+FILE_INCLUDE src/x86/ffiw64.c found in files: src/x86/ffiw64.c at line 2
+ License text:
+ ffiw64.c - Copyright (c) 2018 Anthony Green
+ Copyright (c) 2014 Red Hat, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/x86/ffiw64.c [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 90a76f4892b37df2b5485aa231d8dfc6
+BELONGS ya.make
+FILE_INCLUDE src/powerpc/aix.S found in files: src/powerpc/aix.S at line 2
+FILE_INCLUDE src/powerpc/darwin.S found in files: src/powerpc/aix.S at line 3
+ License text:
+ aix.S - Copyright (c) 2002, 2009 Free Software Foundation, Inc.
+ based on darwin.S by John Hornkvist
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/powerpc/aix.S [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 92088a0e20a826627cf80b1afeb28016
+BELONGS ya.make
+FILE_INCLUDE src/aarch64/ffi.c found in files: src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2
+FILE_INCLUDE src/arm/ffi.c found in files: src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2
+FILE_INCLUDE src/powerpc/ffi.c found in files: src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2
+FILE_INCLUDE src/x86/ffi.c found in files: src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/powerpc/ffi.c [2:7]
+ src/powerpc/ffi_linux64.c [2:7]
+ src/powerpc/ffi_powerpc.h [2:7]
+ src/powerpc/ffi_sysv.c [2:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 92f69958e2cb3d97f5ceb8e09bbc7de3
+BELONGS ya.make
+FILE_INCLUDE configs/aarch64-apple-iphoneos/include/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/aarch64-apple-macos/include/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/aarch64-unknown-linux-android21/include/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/aarch64-unknown-linux-gnu/include/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/armv7-apple-iphoneos/include/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/i386-apple-iphonesimulator/include/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/i386-microsoft-windows/include/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/i686-pc-linux-android16/include/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-apple-iphonesimulator/include/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-apple-macosx/include/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-microsoft-windows/include/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-pc-linux-android21/include/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-pc-linux-gnu/include/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE src/aarch64/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE src/arm/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE src/powerpc/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE src/x86/ffitarget.h found in files: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+ License text:
+ ffitarget.h - Copyright (c) 2012 Anthony Green
+ Copyright (C) 2007, 2008, 2010 Free Software Foundation, Inc
+ Copyright (c) 1996-2003 Red Hat, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h [2:4]
+ src/powerpc/ffitarget.h [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9360b5032b2bb2374921c8ed63690c5c
+BELONGS ya.make
+FILE_INCLUDE src/aarch64/ffi.c found in files: src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2
+FILE_INCLUDE src/arm/ffi.c found in files: src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2
+FILE_INCLUDE src/powerpc/ffi.c found in files: src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2
+FILE_INCLUDE src/x86/ffi.c found in files: src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/powerpc/ffi.c [2:7]
+ src/powerpc/ffi_linux64.c [2:7]
+ src/powerpc/ffi_powerpc.h [2:7]
+ src/powerpc/ffi_sysv.c [2:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 98ca267ad638ce93032244eddc331671
+BELONGS ya.make
+ License text:
+ libffi 3.3 - Copyright (c) 2011, 2014, 2019 Anthony Green
+ - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ configs/aarch64-apple-iphoneos/include/ffi.h [2:3]
+ configs/aarch64-apple-macos/include/ffi.h [2:3]
+ configs/aarch64-unknown-linux-android21/include/ffi.h [2:3]
+ configs/aarch64-unknown-linux-gnu/include/ffi.h [2:3]
+ configs/armv7-apple-iphoneos/include/ffi.h [2:3]
+ configs/armv7a-unknown-linux-androideabi16/include/ffi.h [2:3]
+ configs/armv7a-unknown-linux-gnueabihf/include/ffi.h [2:3]
+ configs/i386-apple-iphonesimulator/include/ffi.h [2:3]
+ configs/i386-microsoft-windows/include/ffi.h [2:3]
+ configs/i686-pc-linux-android16/include/ffi.h [2:3]
+ configs/powerpc64le-unknown-linux-gnu/include/ffi.h [2:3]
+ configs/x86_64-apple-iphonesimulator/include/ffi.h [2:3]
+ configs/x86_64-apple-macosx/include/ffi.h [2:3]
+ configs/x86_64-microsoft-windows/include/ffi.h [2:3]
+ configs/x86_64-pc-linux-android21/include/ffi.h [2:3]
+ configs/x86_64-pc-linux-gnu/include/ffi.h [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9a3039fb6d1725a9e659c2ece11dc9df
+BELONGS ya.make
+FILE_INCLUDE src/aarch64/ffi.c found in files: src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2
+FILE_INCLUDE src/arm/ffi.c found in files: src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2
+FILE_INCLUDE src/powerpc/ffi.c found in files: src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2
+FILE_INCLUDE src/x86/ffi.c found in files: src/powerpc/ffi.c at line 2, src/powerpc/ffi_linux64.c at line 2, src/powerpc/ffi_powerpc.h at line 2, src/powerpc/ffi_sysv.c at line 2
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/powerpc/ffi.c [2:7]
+ src/powerpc/ffi_linux64.c [2:7]
+ src/powerpc/ffi_powerpc.h [2:7]
+ src/powerpc/ffi_sysv.c [2:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 9aee05ea503217437fbb9b682dedd62b
+BELONGS ya.make
+FILE_INCLUDE src/aarch64/ffi.c found in files: src/x86/ffi.c at line 2, src/x86/sysv.S at line 2, src/x86/sysv_intel.S at line 2
+FILE_INCLUDE src/arm/ffi.c found in files: src/x86/ffi.c at line 2, src/x86/sysv.S at line 2, src/x86/sysv_intel.S at line 2
+FILE_INCLUDE src/powerpc/ffi.c found in files: src/x86/ffi.c at line 2, src/x86/sysv.S at line 2, src/x86/sysv_intel.S at line 2
+FILE_INCLUDE src/x86/ffi.c found in files: src/x86/ffi.c at line 2, src/x86/sysv.S at line 2, src/x86/sysv_intel.S at line 2
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/x86/ffi.c [2:7]
+ src/x86/sysv.S [2:4]
+ src/x86/sysv_intel.S [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL a53e947aa1cc85c66b06dbe114602193
+BELONGS ya.make
+ License text:
+ Copyright (C) 2003-2004, 2006, 2009-2017 Free Software Foundation, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ testsuite/libffi.bhaible/alignof.h [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL a60ca6b2738189ea2d405ca117cba78b
+BELONGS ya.make
+FILE_INCLUDE src/aarch64/ffi.c found in files: src/arm/ffi.c at line 2
+FILE_INCLUDE src/arm/ffi.c found in files: src/arm/ffi.c at line 2
+FILE_INCLUDE src/powerpc/ffi.c found in files: src/arm/ffi.c at line 2
+FILE_INCLUDE src/x86/ffi.c found in files: src/arm/ffi.c at line 2
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/arm/ffi.c [2:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL b347ef57b7ab30b906088c5599cb78aa
+BELONGS ya.make
+FILE_INCLUDE src/prep_cif.c found in files: src/prep_cif.c at line 2
+ License text:
+ prep_cif.c - Copyright (c) 2011, 2012 Anthony Green
+ Copyright (c) 1996, 1998, 2007 Red Hat, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/prep_cif.c [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL b4a4b6d5dcf5d8a00940bcc67527cb55
+BELONGS ya.make
+ License text:
+ Copyright (C) 1998 Geoffrey Keating
+ Copyright (C) 2001 John Hornkvist
+ Copyright (C) 2002, 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/powerpc/ffi_darwin.c [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL bbeada5053f5f84669599cc3675c9ff8
+BELONGS ya.make
+FILE_INCLUDE src/x86/ffi64.c found in files: src/x86/ffi64.c at line 2, src/x86/sysv.S at line 2, src/x86/sysv_intel.S at line 2, src/x86/unix64.S at line 2
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/x86/ffi64.c [2:5]
+ src/x86/sysv.S [2:4]
+ src/x86/sysv_intel.S [2:4]
+ src/x86/unix64.S [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL c0a580767e4df988cbeb3a33fe57d251
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ LICENSE-BUILDTOOLS [265:270]
+
+KEEP COPYRIGHT_SERVICE_LABEL c3da44843e293e10c846eb5919c3e957
+BELONGS ya.make
+ License text:
+ libffi 3.3 - Copyright (c) 2011, 2014, 2019 Anthony Green
+ - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ configs/aarch64-apple-iphoneos/include/ffi.h [2:3]
+ configs/aarch64-apple-macos/include/ffi.h [2:3]
+ configs/aarch64-unknown-linux-android21/include/ffi.h [2:3]
+ configs/aarch64-unknown-linux-gnu/include/ffi.h [2:3]
+ configs/armv7-apple-iphoneos/include/ffi.h [2:3]
+ configs/armv7a-unknown-linux-androideabi16/include/ffi.h [2:3]
+ configs/armv7a-unknown-linux-gnueabihf/include/ffi.h [2:3]
+ configs/i386-apple-iphonesimulator/include/ffi.h [2:3]
+ configs/i386-microsoft-windows/include/ffi.h [2:3]
+ configs/i686-pc-linux-android16/include/ffi.h [2:3]
+ configs/powerpc64le-unknown-linux-gnu/include/ffi.h [2:3]
+ configs/x86_64-apple-iphonesimulator/include/ffi.h [2:3]
+ configs/x86_64-apple-macosx/include/ffi.h [2:3]
+ configs/x86_64-microsoft-windows/include/ffi.h [2:3]
+ configs/x86_64-pc-linux-android21/include/ffi.h [2:3]
+ configs/x86_64-pc-linux-gnu/include/ffi.h [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL c5cd4e983e11baed0437804f072c4959
+BELONGS ya.make
+FILE_INCLUDE src/java_raw_api.c found in files: src/java_raw_api.c at line 2
+ License text:
+ java_raw_api.c - Copyright (c) 1999, 2007, 2008 Red Hat, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/java_raw_api.c [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL cf717d02a744822d6c307e6800af472e
+BELONGS ya.make
+FILE_INCLUDE src/x86/ffiw64.c found in files: src/x86/ffiw64.c at line 2
+ License text:
+ ffiw64.c - Copyright (c) 2018 Anthony Green
+ Copyright (c) 2014 Red Hat, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/x86/ffiw64.c [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL d0e44c08baa88fd789bb5314fb7dd225
+BELONGS ya.make
+FILE_INCLUDE src/closures.c found in files: src/closures.c at line 2
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/closures.c [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL d44bbb09a09c349d90800f1c8524ebf5
+BELONGS ya.make
+ License text:
+ Copyright (C) 1998 Geoffrey Keating
+ Copyright (C) 2001 John Hornkvist
+ Copyright (C) 2002, 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/powerpc/ffi_darwin.c [4:6]
+
+KEEP COPYRIGHT_SERVICE_LABEL d51d88020cf2cb05e20c998ed1bcecea
+BELONGS ya.make
+FILE_INCLUDE configs/aarch64-apple-iphoneos/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/aarch64-apple-macos/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/aarch64-unknown-linux-android21/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/aarch64-unknown-linux-gnu/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/armv7-apple-iphoneos/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/i386-apple-iphonesimulator/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/i386-microsoft-windows/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/i686-pc-linux-android16/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-apple-iphonesimulator/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-apple-macosx/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-microsoft-windows/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-pc-linux-android21/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE configs/x86_64-pc-linux-gnu/include/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE src/aarch64/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE src/arm/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE src/powerpc/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+FILE_INCLUDE src/x86/ffitarget.h found in files: configs/armv7-apple-iphoneos/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h at line 2, configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h at line 2, configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h at line 2, src/arm/ffitarget.h at line 2, src/powerpc/ffitarget.h at line 2
+ License text:
+ ffitarget.h - Copyright (c) 2012 Anthony Green
+ Copyright (c) 2010 CodeSourcery
+ Copyright (c) 1996-2003 Red Hat, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ configs/armv7-apple-iphoneos/include/ffitarget.h [2:4]
+ configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h [2:4]
+ configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h [2:4]
+ configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h [2:4]
+ src/arm/ffitarget.h [2:4]
+ src/powerpc/ffitarget.h [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL d75d0a21b80e1ba25b7a741e84d78058
+BELONGS ya.make
+FILE_INCLUDE src/aarch64/ffi.c found in files: src/arm/ffi.c at line 2, src/arm/sysv.S at line 2, src/arm/sysv_msvc_arm32.S at line 2
+FILE_INCLUDE src/arm/ffi.c found in files: src/arm/ffi.c at line 2, src/arm/sysv.S at line 2, src/arm/sysv_msvc_arm32.S at line 2
+FILE_INCLUDE src/powerpc/ffi.c found in files: src/arm/ffi.c at line 2, src/arm/sysv.S at line 2, src/arm/sysv_msvc_arm32.S at line 2
+FILE_INCLUDE src/x86/ffi.c found in files: src/arm/ffi.c at line 2, src/arm/sysv.S at line 2, src/arm/sysv_msvc_arm32.S at line 2
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/arm/ffi.c [2:6]
+ src/arm/sysv.S [2:3]
+ src/arm/sysv_msvc_arm32.S [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL dae195961c4466f8ada6ccf3c4f03193
+BELONGS ya.make
+FILE_INCLUDE src/powerpc/darwin_closure.S found in files: src/powerpc/darwin_closure.S at line 2
+FILE_INCLUDE src/powerpc/ppc_closure.S found in files: src/powerpc/darwin_closure.S at line 4
+ License text:
+ darwin_closure.S - Copyright (c) 2002, 2003, 2004, 2010,
+ Free Software Foundation, Inc.
+ based on ppc_closure.S
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/powerpc/darwin_closure.S [2:4]
+
+KEEP COPYRIGHT_SERVICE_LABEL eab8fcbb0dd98b697803d416acbd2b9d
+BELONGS ya.make
+ License text:
+ sysv.h - Copyright (c) 2003 Jakub Jelinek <jakub@redhat.com>
+ Copyright (c) 2008 Red Hat, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/powerpc/linux64.S [2:3]
+ src/powerpc/linux64_closure.S [2:3]
+ src/powerpc/ppc_closure.S [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL ec4dfe2ae44087a19ee17a7349a4c8cc
+BELONGS ya.make
+FILE_INCLUDE src/closures.c found in files: src/closures.c at line 2
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/closures.c [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL ec9f15539f2782bc2970e988e5571a2b
+BELONGS ya.make
+FILE_INCLUDE src/closures.c found in files: src/closures.c at line 2
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/closures.c [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL f7e8bccb8d662a0b5c345cbc976f4e7d
+BELONGS ya.make
+FILE_INCLUDE src/closures.c found in files: src/arm/ffi.c at line 2, src/arm/sysv.S at line 2, src/arm/sysv_msvc_arm32.S at line 2, src/closures.c at line 2
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/arm/ffi.c [2:6]
+ src/arm/sysv.S [2:3]
+ src/arm/sysv_msvc_arm32.S [2:4]
+ src/closures.c [2:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL ff47afde0d2610960baab8078de46884
+BELONGS ya.make
+FILE_INCLUDE src/x86/ffi64.c found in files: src/x86/ffi64.c at line 2
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/x86/ffi64.c [2:5]
diff --git a/contrib/restricted/libffi/.yandex_meta/devtools.licenses.report b/contrib/restricted/libffi/.yandex_meta/devtools.licenses.report
index 583cc27fb6..e2937519c4 100644
--- a/contrib/restricted/libffi/.yandex_meta/devtools.licenses.report
+++ b/contrib/restricted/libffi/.yandex_meta/devtools.licenses.report
@@ -1,256 +1,256 @@
-# File format ($ symbol means the beginning of a line):
-#
-# $ # this message
-# $ # =======================
-# $ # comments (all commentaries should starts with some number of spaces and # symbol)
-# $ IGNORE_FILES {file1.ext1} {file2.ext2} - (optional) ignore listed files when generating license macro and credits
-# $
-# ${action} {license id} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
-# ${all_file_action} filename
-# $ # user commentaries (many lines)
-# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
-# ${action} {license spdx} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/3/ya.make
-# ${all_file_action} filename
-# $ # user commentaries
-# $ generated description
-# $ ...
-#
-# You can modify action, all_file_action and add commentaries
-# Available actions:
-# keep - keep license in contrib and use in credits
-# skip - skip license
-# remove - remove all files with this license
-# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
-#
-# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
-# We suppose that that files can contain some license info
-# Available all file actions:
-# FILE_IGNORE - ignore file (do nothing)
-# FILE_INCLUDE - include all file data into licenses text file
-# =======================
-
-KEEP MIT 37d1dc460f2de1e911ca8458b1084092
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: MIT
- Score : 100.00
- Match type : TEXT
- Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
- Files with this license:
- src/aarch64/win64_armasm.S [2:17]
-
-SKIP GPL-2.0-only 39bba7d2cf0ba1036f2a6e2be52fe3f0
-BELONGS ya.make
-FILE_INCLUDE LICENSE found in files: LICENSE-BUILDTOOLS at line 15, LICENSE-BUILDTOOLS at line 73
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: GPL-2.0-only
- Score : 100.00
- Match type : TEXT
- Links : http://www.gnu.org/licenses/gpl-2.0.html, http://www.gnu.org/licenses/gpl-2.0.txt, https://spdx.org/licenses/GPL-2.0-only
- Files with this license:
- LICENSE-BUILDTOOLS [15:353]
-
-SKIP GPL-2.0-or-later 4557c5a6d521b4d6e39185c061f971bf
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: GPL-2.0-or-later
- Score : 100.00
- Match type : NOTICE
- Links : http://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html, https://spdx.org/licenses/GPL-2.0-or-later
- Files with this license:
- testsuite/libffi.bhaible/alignof.h [4:15]
-
-SKIP GPL-3.0-only 52d9043040f3ab050a3f6cdf714d7f2e
-BELONGS ya.make
- License text:
- version 3 of the GNU General Public License and to point readers
- Scancode info:
- Original SPDX id: GPL-3.0-only
- Score : 100.00
- Match type : REFERENCE
- Links : http://www.gnu.org/licenses/gpl-3.0-standalone.html, http://www.gnu.org/licenses/gpl-3.0.html, https://spdx.org/licenses/GPL-3.0-only
- Files with this license:
- ChangeLog.old [2637:2637]
-
-SKIP GPL-2.0-only 5e3ff192c2c5a6e630a6fa1df72a3120
-BELONGS ya.make
- # This license should belong to all testsuite projects. It is set by yamaker.
- License text:
- msvcc.sh an testsuite/libffi.bhaible are both distributed under the
- terms of the GNU GPL version 2, as below.
- Scancode info:
- Original SPDX id: GPL-2.0-only
- Score : 100.00
- Match type : NOTICE
- Links : http://www.gnu.org/licenses/gpl-2.0.html, http://www.gnu.org/licenses/gpl-2.0.txt, https://spdx.org/licenses/GPL-2.0-only
- Files with this license:
- LICENSE-BUILDTOOLS [10:11]
-
-KEEP MIT 6473f716f40a9bab697483570db29487
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: MIT
- Score : 100.00
- Match type : TEXT
- Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
- Files with this license:
- LICENSE [4:21]
-
-KEEP MIT 77d6e1b67743071209d0265eba4a909b
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: MIT
- Score : 100.00
- Match type : TEXT
- Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
- Files with this license:
- src/powerpc/aix.S [7:24]
- src/powerpc/aix_closure.S [7:24]
- src/powerpc/asm.h [6:23]
- src/powerpc/darwin.S [7:24]
- src/powerpc/darwin_closure.S [8:25]
- src/powerpc/ffi.c [11:28]
- src/powerpc/ffi_darwin.c [10:27]
- src/powerpc/ffi_linux64.c [11:28]
- src/powerpc/ffi_powerpc.h [11:28]
- src/powerpc/ffi_sysv.c [11:28]
-
-KEEP CC-PDDC 80e1d00052cae3c51be03957922bff6c
-BELONGS ya.make
- License text:
- Doug Lea and released to the public domain, as explained at
- http://creativecommons.org/licenses/publicdomain. Send questions,
- Scancode info:
- Original SPDX id: CC-PDDC
- Score : 100.00
- Match type : NOTICE
- Links : http://creativecommons.org/licenses/publicdomain/, https://creativecommons.org/licenses/publicdomain/, https://spdx.org/licenses/CC-PDDC
- Files with this license:
- src/dlmalloc.c [3:4]
-
-SKIP GPL-3.0-or-later 89b4246da7378f845d8524dbdd0ee755
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: GPL-3.0-or-later
- Score : 100.00
- Match type : NOTICE
- Links : http://www.gnu.org/licenses/gpl-3.0-standalone.html, https://spdx.org/licenses/GPL-3.0-or-later
- Files with this license:
- testsuite/libffi.bhaible/testcases.c [5:16]
-
-KEEP MIT 8a7348686d1975121ceb5328e9f86d92
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: MIT
- Score : 100.00
- Match type : TEXT
- Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
- Files with this license:
- configs/armv7-apple-iphoneos/include/ffitarget.h [8:26]
- configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h [8:26]
- configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h [8:26]
- configs/i386-apple-iphonesimulator/include/ffitarget.h [8:26]
- configs/i386-microsoft-windows/include/ffitarget.h [8:26]
- configs/i686-pc-linux-android16/include/ffitarget.h [8:26]
- configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h [8:26]
- configs/x86_64-apple-iphonesimulator/include/ffitarget.h [8:26]
- configs/x86_64-apple-macosx/include/ffitarget.h [8:26]
- configs/x86_64-microsoft-windows/include/ffitarget.h [8:26]
- configs/x86_64-pc-linux-android21/include/ffitarget.h [8:26]
- configs/x86_64-pc-linux-gnu/include/ffitarget.h [8:26]
- src/arm/ffi.c [10:28]
- src/arm/ffitarget.h [8:26]
- src/arm/sysv.S [7:25]
- src/arm/sysv_msvc_arm32.S [8:26]
- src/closures.c [9:27]
- src/java_raw_api.c [11:29]
- src/powerpc/ffitarget.h [8:26]
- src/powerpc/linux64.S [7:25]
- src/powerpc/linux64_closure.S [7:25]
- src/powerpc/ppc_closure.S [7:25]
- src/powerpc/sysv.S [7:25]
- src/prep_cif.c [5:23]
- src/raw_api.c [6:24]
- src/types.c [6:24]
- src/x86/ffi.c [11:29]
- src/x86/ffi64.c [9:27]
- src/x86/ffitarget.h [8:26]
- src/x86/ffiw64.c [7:25]
- src/x86/sysv.S [8:26]
- src/x86/sysv_intel.S [8:26]
- src/x86/unix64.S [8:26]
-
-SKIP GPL-2.0-or-later a0df2e4ee15233d143a1cb8dfa6fac82
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: GPL-2.0-or-later
- Score : 100.00
- Match type : NOTICE
- Links : http://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html, https://spdx.org/licenses/GPL-2.0-or-later
- Files with this license:
- testsuite/libffi.bhaible/test-callback.c [5:16]
-
-KEEP MIT c256125971fdb3bd73b9d2f700e3ce71
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: MIT
- Score : 100.00
- Match type : TEXT
- Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
- Files with this license:
- configs/aarch64-apple-iphoneos/include/ffi.h [5:23]
- configs/aarch64-apple-macos/include/ffi.h [5:23]
- configs/aarch64-unknown-linux-android21/include/ffi.h [5:23]
- configs/aarch64-unknown-linux-gnu/include/ffi.h [5:23]
- configs/armv7-apple-iphoneos/include/ffi.h [5:23]
- configs/armv7a-unknown-linux-androideabi16/include/ffi.h [5:23]
- configs/armv7a-unknown-linux-gnueabihf/include/ffi.h [5:23]
- configs/i386-apple-iphonesimulator/include/ffi.h [5:23]
- configs/i386-microsoft-windows/include/ffi.h [5:23]
- configs/i686-pc-linux-android16/include/ffi.h [5:23]
- configs/powerpc64le-unknown-linux-gnu/include/ffi.h [5:23]
- configs/x86_64-apple-iphonesimulator/include/ffi.h [5:23]
- configs/x86_64-apple-macosx/include/ffi.h [5:23]
- configs/x86_64-microsoft-windows/include/ffi.h [5:23]
- configs/x86_64-pc-linux-android21/include/ffi.h [5:23]
- configs/x86_64-pc-linux-gnu/include/ffi.h [5:23]
-
-SKIP GPL-2.0-or-later e59edce08d8f56b01ccc13e7f6008082
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: GPL-2.0-or-later
- Score : 100.00
- Match type : NOTICE
- Links : http://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html, https://spdx.org/licenses/GPL-2.0-or-later
- Files with this license:
- testsuite/libffi.bhaible/test-call.c [5:16]
-
-KEEP MIT f3282ec937cc52c3e9dfb631266166d0
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: MIT
- Score : 100.00
- Match type : TEXT
- Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
- Files with this license:
- configs/aarch64-apple-iphoneos/include/ffitarget.h [3:20]
- configs/aarch64-apple-macos/include/ffitarget.h [3:20]
- configs/aarch64-unknown-linux-android21/include/ffitarget.h [3:20]
- configs/aarch64-unknown-linux-gnu/include/ffitarget.h [3:20]
- src/aarch64/ffi.c [3:20]
- src/aarch64/ffitarget.h [3:20]
- src/aarch64/internal.h [2:19]
- src/aarch64/sysv.S [3:20]
+# File format ($ symbol means the beginning of a line):
+#
+# $ # this message
+# $ # =======================
+# $ # comments (all commentaries should starts with some number of spaces and # symbol)
+# $ IGNORE_FILES {file1.ext1} {file2.ext2} - (optional) ignore listed files when generating license macro and credits
+# $
+# ${action} {license id} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
+# ${all_file_action} filename
+# $ # user commentaries (many lines)
+# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
+# ${action} {license spdx} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/3/ya.make
+# ${all_file_action} filename
+# $ # user commentaries
+# $ generated description
+# $ ...
+#
+# You can modify action, all_file_action and add commentaries
+# Available actions:
+# keep - keep license in contrib and use in credits
+# skip - skip license
+# remove - remove all files with this license
+# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
+#
+# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
+# We suppose that that files can contain some license info
+# Available all file actions:
+# FILE_IGNORE - ignore file (do nothing)
+# FILE_INCLUDE - include all file data into licenses text file
+# =======================
+
+KEEP MIT 37d1dc460f2de1e911ca8458b1084092
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: MIT
+ Score : 100.00
+ Match type : TEXT
+ Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
+ Files with this license:
+ src/aarch64/win64_armasm.S [2:17]
+
+SKIP GPL-2.0-only 39bba7d2cf0ba1036f2a6e2be52fe3f0
+BELONGS ya.make
+FILE_INCLUDE LICENSE found in files: LICENSE-BUILDTOOLS at line 15, LICENSE-BUILDTOOLS at line 73
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: GPL-2.0-only
+ Score : 100.00
+ Match type : TEXT
+ Links : http://www.gnu.org/licenses/gpl-2.0.html, http://www.gnu.org/licenses/gpl-2.0.txt, https://spdx.org/licenses/GPL-2.0-only
+ Files with this license:
+ LICENSE-BUILDTOOLS [15:353]
+
+SKIP GPL-2.0-or-later 4557c5a6d521b4d6e39185c061f971bf
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: GPL-2.0-or-later
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html, https://spdx.org/licenses/GPL-2.0-or-later
+ Files with this license:
+ testsuite/libffi.bhaible/alignof.h [4:15]
+
+SKIP GPL-3.0-only 52d9043040f3ab050a3f6cdf714d7f2e
+BELONGS ya.make
+ License text:
+ version 3 of the GNU General Public License and to point readers
+ Scancode info:
+ Original SPDX id: GPL-3.0-only
+ Score : 100.00
+ Match type : REFERENCE
+ Links : http://www.gnu.org/licenses/gpl-3.0-standalone.html, http://www.gnu.org/licenses/gpl-3.0.html, https://spdx.org/licenses/GPL-3.0-only
+ Files with this license:
+ ChangeLog.old [2637:2637]
+
+SKIP GPL-2.0-only 5e3ff192c2c5a6e630a6fa1df72a3120
+BELONGS ya.make
+ # This license should belong to all testsuite projects. It is set by yamaker.
+ License text:
+ msvcc.sh an testsuite/libffi.bhaible are both distributed under the
+ terms of the GNU GPL version 2, as below.
+ Scancode info:
+ Original SPDX id: GPL-2.0-only
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.gnu.org/licenses/gpl-2.0.html, http://www.gnu.org/licenses/gpl-2.0.txt, https://spdx.org/licenses/GPL-2.0-only
+ Files with this license:
+ LICENSE-BUILDTOOLS [10:11]
+
+KEEP MIT 6473f716f40a9bab697483570db29487
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: MIT
+ Score : 100.00
+ Match type : TEXT
+ Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
+ Files with this license:
+ LICENSE [4:21]
+
+KEEP MIT 77d6e1b67743071209d0265eba4a909b
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: MIT
+ Score : 100.00
+ Match type : TEXT
+ Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
+ Files with this license:
+ src/powerpc/aix.S [7:24]
+ src/powerpc/aix_closure.S [7:24]
+ src/powerpc/asm.h [6:23]
+ src/powerpc/darwin.S [7:24]
+ src/powerpc/darwin_closure.S [8:25]
+ src/powerpc/ffi.c [11:28]
+ src/powerpc/ffi_darwin.c [10:27]
+ src/powerpc/ffi_linux64.c [11:28]
+ src/powerpc/ffi_powerpc.h [11:28]
+ src/powerpc/ffi_sysv.c [11:28]
+
+KEEP CC-PDDC 80e1d00052cae3c51be03957922bff6c
+BELONGS ya.make
+ License text:
+ Doug Lea and released to the public domain, as explained at
+ http://creativecommons.org/licenses/publicdomain. Send questions,
+ Scancode info:
+ Original SPDX id: CC-PDDC
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://creativecommons.org/licenses/publicdomain/, https://creativecommons.org/licenses/publicdomain/, https://spdx.org/licenses/CC-PDDC
+ Files with this license:
+ src/dlmalloc.c [3:4]
+
+SKIP GPL-3.0-or-later 89b4246da7378f845d8524dbdd0ee755
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: GPL-3.0-or-later
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.gnu.org/licenses/gpl-3.0-standalone.html, https://spdx.org/licenses/GPL-3.0-or-later
+ Files with this license:
+ testsuite/libffi.bhaible/testcases.c [5:16]
+
+KEEP MIT 8a7348686d1975121ceb5328e9f86d92
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: MIT
+ Score : 100.00
+ Match type : TEXT
+ Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
+ Files with this license:
+ configs/armv7-apple-iphoneos/include/ffitarget.h [8:26]
+ configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h [8:26]
+ configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h [8:26]
+ configs/i386-apple-iphonesimulator/include/ffitarget.h [8:26]
+ configs/i386-microsoft-windows/include/ffitarget.h [8:26]
+ configs/i686-pc-linux-android16/include/ffitarget.h [8:26]
+ configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h [8:26]
+ configs/x86_64-apple-iphonesimulator/include/ffitarget.h [8:26]
+ configs/x86_64-apple-macosx/include/ffitarget.h [8:26]
+ configs/x86_64-microsoft-windows/include/ffitarget.h [8:26]
+ configs/x86_64-pc-linux-android21/include/ffitarget.h [8:26]
+ configs/x86_64-pc-linux-gnu/include/ffitarget.h [8:26]
+ src/arm/ffi.c [10:28]
+ src/arm/ffitarget.h [8:26]
+ src/arm/sysv.S [7:25]
+ src/arm/sysv_msvc_arm32.S [8:26]
+ src/closures.c [9:27]
+ src/java_raw_api.c [11:29]
+ src/powerpc/ffitarget.h [8:26]
+ src/powerpc/linux64.S [7:25]
+ src/powerpc/linux64_closure.S [7:25]
+ src/powerpc/ppc_closure.S [7:25]
+ src/powerpc/sysv.S [7:25]
+ src/prep_cif.c [5:23]
+ src/raw_api.c [6:24]
+ src/types.c [6:24]
+ src/x86/ffi.c [11:29]
+ src/x86/ffi64.c [9:27]
+ src/x86/ffitarget.h [8:26]
+ src/x86/ffiw64.c [7:25]
+ src/x86/sysv.S [8:26]
+ src/x86/sysv_intel.S [8:26]
+ src/x86/unix64.S [8:26]
+
+SKIP GPL-2.0-or-later a0df2e4ee15233d143a1cb8dfa6fac82
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: GPL-2.0-or-later
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html, https://spdx.org/licenses/GPL-2.0-or-later
+ Files with this license:
+ testsuite/libffi.bhaible/test-callback.c [5:16]
+
+KEEP MIT c256125971fdb3bd73b9d2f700e3ce71
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: MIT
+ Score : 100.00
+ Match type : TEXT
+ Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
+ Files with this license:
+ configs/aarch64-apple-iphoneos/include/ffi.h [5:23]
+ configs/aarch64-apple-macos/include/ffi.h [5:23]
+ configs/aarch64-unknown-linux-android21/include/ffi.h [5:23]
+ configs/aarch64-unknown-linux-gnu/include/ffi.h [5:23]
+ configs/armv7-apple-iphoneos/include/ffi.h [5:23]
+ configs/armv7a-unknown-linux-androideabi16/include/ffi.h [5:23]
+ configs/armv7a-unknown-linux-gnueabihf/include/ffi.h [5:23]
+ configs/i386-apple-iphonesimulator/include/ffi.h [5:23]
+ configs/i386-microsoft-windows/include/ffi.h [5:23]
+ configs/i686-pc-linux-android16/include/ffi.h [5:23]
+ configs/powerpc64le-unknown-linux-gnu/include/ffi.h [5:23]
+ configs/x86_64-apple-iphonesimulator/include/ffi.h [5:23]
+ configs/x86_64-apple-macosx/include/ffi.h [5:23]
+ configs/x86_64-microsoft-windows/include/ffi.h [5:23]
+ configs/x86_64-pc-linux-android21/include/ffi.h [5:23]
+ configs/x86_64-pc-linux-gnu/include/ffi.h [5:23]
+
+SKIP GPL-2.0-or-later e59edce08d8f56b01ccc13e7f6008082
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: GPL-2.0-or-later
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html, https://spdx.org/licenses/GPL-2.0-or-later
+ Files with this license:
+ testsuite/libffi.bhaible/test-call.c [5:16]
+
+KEEP MIT f3282ec937cc52c3e9dfb631266166d0
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: MIT
+ Score : 100.00
+ Match type : TEXT
+ Links : http://opensource.org/licenses/mit-license.php, https://spdx.org/licenses/MIT
+ Files with this license:
+ configs/aarch64-apple-iphoneos/include/ffitarget.h [3:20]
+ configs/aarch64-apple-macos/include/ffitarget.h [3:20]
+ configs/aarch64-unknown-linux-android21/include/ffitarget.h [3:20]
+ configs/aarch64-unknown-linux-gnu/include/ffitarget.h [3:20]
+ src/aarch64/ffi.c [3:20]
+ src/aarch64/ffitarget.h [3:20]
+ src/aarch64/internal.h [2:19]
+ src/aarch64/sysv.S [3:20]
diff --git a/contrib/restricted/libffi/.yandex_meta/licenses.list.txt b/contrib/restricted/libffi/.yandex_meta/licenses.list.txt
index 5271a6915c..3f2f666d7d 100644
--- a/contrib/restricted/libffi/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/libffi/.yandex_meta/licenses.list.txt
@@ -1,14436 +1,14436 @@
-====================CC-PDDC====================
- Doug Lea and released to the public domain, as explained at
- http://creativecommons.org/licenses/publicdomain. Send questions,
-
-
-====================COPYRIGHT====================
- Copyright (C) 1998 Geoffrey Keating
- Copyright (C) 2001 John Hornkvist
- Copyright (C) 2002, 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
-
-
-====================COPYRIGHT====================
- Copyright (C) 2003-2004, 2006, 2009-2017 Free Software Foundation, Inc.
-
-
-====================COPYRIGHT====================
- aix.S - Copyright (c) 2002, 2009 Free Software Foundation, Inc.
- based on darwin.S by John Hornkvist
-
-
-====================COPYRIGHT====================
- aix_closure.S - Copyright (c) 2002, 2003, 2009 Free Software Foundation, Inc.
- based on darwin_closure.S
-
-
-====================COPYRIGHT====================
- asm.h - Copyright (c) 1998 Geoffrey Keating
-
-
-====================COPYRIGHT====================
- closures.c - Copyright (c) 2019 Anthony Green
- Copyright (c) 2007, 2009, 2010 Red Hat, Inc.
- Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc
- Copyright (c) 2011 Plausible Labs Cooperative, Inc.
-
-
-====================COPYRIGHT====================
- darwin.S - Copyright (c) 2000 John Hornkvist
- Copyright (c) 2004, 2010 Free Software Foundation, Inc.
-
-
-====================COPYRIGHT====================
- darwin_closure.S - Copyright (c) 2002, 2003, 2004, 2010,
- Free Software Foundation, Inc.
- based on ppc_closure.S
-
-
-====================COPYRIGHT====================
- ffi.c - Copyright (C) 2013 IBM
- Copyright (C) 2011 Anthony Green
- Copyright (C) 2011 Kyle Moffett
- Copyright (C) 2008 Red Hat, Inc
- Copyright (C) 2007, 2008 Free Software Foundation, Inc
- Copyright (c) 1998 Geoffrey Keating
-
-
-====================COPYRIGHT====================
- ffi.c - Copyright (c) 2011 Timothy Wall
- Copyright (c) 2011 Plausible Labs Cooperative, Inc.
- Copyright (c) 2011 Anthony Green
- Copyright (c) 2011 Free Software Foundation
- Copyright (c) 1998, 2008, 2011 Red Hat, Inc.
-
-
-====================COPYRIGHT====================
- ffi.c - Copyright (c) 2017 Anthony Green
- Copyright (c) 1996, 1998, 1999, 2001, 2007, 2008 Red Hat, Inc.
- Copyright (c) 2002 Ranjit Mathew
- Copyright (c) 2002 Bo Thorsen
- Copyright (c) 2002 Roger Sayle
- Copyright (C) 2008, 2010 Free Software Foundation, Inc.
-
-
-====================COPYRIGHT====================
- ffi64.c - Copyright (c) 2011, 2018 Anthony Green
- Copyright (c) 2013 The Written Word, Inc.
- Copyright (c) 2008, 2010 Red Hat, Inc.
- Copyright (c) 2002, 2007 Bo Thorsen <bo@suse.de>
-
-
-====================COPYRIGHT====================
- ffitarget.h - Copyright (c) 2012 Anthony Green
- Copyright (C) 2007, 2008, 2010 Free Software Foundation, Inc
- Copyright (c) 1996-2003 Red Hat, Inc.
-
-
-====================COPYRIGHT====================
- ffitarget.h - Copyright (c) 2012 Anthony Green
- Copyright (c) 2010 CodeSourcery
- Copyright (c) 1996-2003 Red Hat, Inc.
-
-
-====================COPYRIGHT====================
- ffitarget.h - Copyright (c) 2012, 2014, 2018 Anthony Green
- Copyright (c) 1996-2003, 2010 Red Hat, Inc.
- Copyright (C) 2008 Free Software Foundation, Inc.
-
-
-====================COPYRIGHT====================
- ffiw64.c - Copyright (c) 2018 Anthony Green
- Copyright (c) 2014 Red Hat, Inc.
-
-
-====================COPYRIGHT====================
- java_raw_api.c - Copyright (c) 1999, 2007, 2008 Red Hat, Inc.
-
-
-====================COPYRIGHT====================
- libffi 3.3 - Copyright (c) 2011, 2014, 2019 Anthony Green
- - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc.
-
-
-====================COPYRIGHT====================
- prep_cif.c - Copyright (c) 2011, 2012 Anthony Green
- Copyright (c) 1996, 1998, 2007 Red Hat, Inc.
-
-
-====================COPYRIGHT====================
- raw_api.c - Copyright (c) 1999, 2008 Red Hat, Inc.
-
-
-====================COPYRIGHT====================
- sysv.S - Copyright (c) 1998 Geoffrey Keating
- Copyright (C) 2007 Free Software Foundation, Inc
-
-
-====================COPYRIGHT====================
- sysv.S - Copyright (c) 1998, 2008, 2011 Red Hat, Inc.
- Copyright (c) 2011 Plausible Labs Cooperative, Inc.
- Copyright (c) 2019 Microsoft Corporation.
-
-
-====================COPYRIGHT====================
- sysv.S - Copyright (c) 2017 Anthony Green
- - Copyright (c) 2013 The Written Word, Inc.
- - Copyright (c) 1996,1998,2001-2003,2005,2008,2010 Red Hat, Inc.
-
-
-====================COPYRIGHT====================
- sysv.h - Copyright (c) 2003 Jakub Jelinek <jakub@redhat.com>
- Copyright (c) 2008 Red Hat, Inc.
-
-
-====================COPYRIGHT====================
- types.c - Copyright (c) 1996, 1998 Red Hat, Inc.
-
-
-====================COPYRIGHT====================
- unix64.S - Copyright (c) 2013 The Written Word, Inc.
- - Copyright (c) 2008 Red Hat, Inc
- - Copyright (c) 2002 Bo Thorsen <bo@suse.de>
-
-
-====================COPYRIGHT====================
- Copyright 1993 Bill Triggs <Bill.Triggs@inrialpes.fr>
- Copyright 1995-2017 Bruno Haible <bruno@clisp.org>
-
-
-====================COPYRIGHT====================
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
-
-
-====================COPYRIGHT====================
-/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd.
-
-
-====================COPYRIGHT====================
-libffi - Copyright (c) 1996-2019 Anthony Green, Red Hat, Inc and others.
-See source files for details.
-
-
-====================COPYRIGHT====================
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-
-====================File: configs/aarch64-apple-iphoneos/include/ffitarget.h====================
-/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd.
-
-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. */
-
-#ifndef LIBFFI_TARGET_H
-#define LIBFFI_TARGET_H
-
-#ifndef LIBFFI_H
-#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
-#endif
-
-#ifndef LIBFFI_ASM
-#ifdef __ILP32__
-#define FFI_SIZEOF_ARG 8
-#define FFI_SIZEOF_JAVA_RAW 4
-typedef unsigned long long ffi_arg;
-typedef signed long long ffi_sarg;
-#elif defined(_M_ARM64)
-#define FFI_SIZEOF_ARG 8
-typedef unsigned long long ffi_arg;
-typedef signed long long ffi_sarg;
-#else
-typedef unsigned long ffi_arg;
-typedef signed long ffi_sarg;
-#endif
-
-typedef enum ffi_abi
- {
- FFI_FIRST_ABI = 0,
- FFI_SYSV,
- FFI_LAST_ABI,
- FFI_DEFAULT_ABI = FFI_SYSV
- } ffi_abi;
-#endif
-
-/* ---- Definitions for closures ----------------------------------------- */
-
-#define FFI_CLOSURES 1
-#define FFI_NATIVE_RAW_API 0
-
-#if defined (FFI_EXEC_TRAMPOLINE_TABLE) && FFI_EXEC_TRAMPOLINE_TABLE
-
-#ifdef __MACH__
-#define FFI_TRAMPOLINE_SIZE 16
-#define FFI_TRAMPOLINE_CLOSURE_OFFSET 16
-#else
-#error "No trampoline table implementation"
-#endif
-
-#else
-#define FFI_TRAMPOLINE_SIZE 24
-#define FFI_TRAMPOLINE_CLOSURE_OFFSET FFI_TRAMPOLINE_SIZE
-#endif
-
-#ifdef _M_ARM64
-#define FFI_EXTRA_CIF_FIELDS unsigned is_variadic
-#endif
-
-/* ---- Internal ---- */
-
-#if defined (__APPLE__)
-#define FFI_TARGET_SPECIFIC_VARIADIC
-#define FFI_EXTRA_CIF_FIELDS unsigned aarch64_nfixedargs
-#elif !defined(_M_ARM64)
-/* iOS and Windows reserve x18 for the system. Disable Go closures until
- a new static chain is chosen. */
-#define FFI_GO_CLOSURES 1
-#endif
-
-#ifndef _M_ARM64
-/* No complex type on Windows */
-#define FFI_TARGET_HAS_COMPLEX_TYPE
-#endif
-
-#endif
-
-
-====================File: configs/aarch64-apple-macos/include/ffitarget.h====================
-/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd.
-
-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. */
-
-#ifndef LIBFFI_TARGET_H
-#define LIBFFI_TARGET_H
-
-#ifndef LIBFFI_H
-#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
-#endif
-
-#ifndef LIBFFI_ASM
-#ifdef __ILP32__
-#define FFI_SIZEOF_ARG 8
-#define FFI_SIZEOF_JAVA_RAW 4
-typedef unsigned long long ffi_arg;
-typedef signed long long ffi_sarg;
-#elif defined(_M_ARM64)
-#define FFI_SIZEOF_ARG 8
-typedef unsigned long long ffi_arg;
-typedef signed long long ffi_sarg;
-#else
-typedef unsigned long ffi_arg;
-typedef signed long ffi_sarg;
-#endif
-
-typedef enum ffi_abi
- {
- FFI_FIRST_ABI = 0,
- FFI_SYSV,
- FFI_LAST_ABI,
- FFI_DEFAULT_ABI = FFI_SYSV
- } ffi_abi;
-#endif
-
-/* ---- Definitions for closures ----------------------------------------- */
-
-#define FFI_CLOSURES 1
-#define FFI_NATIVE_RAW_API 0
-
-#if defined (FFI_EXEC_TRAMPOLINE_TABLE) && FFI_EXEC_TRAMPOLINE_TABLE
-
-#ifdef __MACH__
-#define FFI_TRAMPOLINE_SIZE 16
-#define FFI_TRAMPOLINE_CLOSURE_OFFSET 16
-#else
-#error "No trampoline table implementation"
-#endif
-
-#else
-#define FFI_TRAMPOLINE_SIZE 24
-#define FFI_TRAMPOLINE_CLOSURE_OFFSET FFI_TRAMPOLINE_SIZE
-#endif
-
-#ifdef _M_ARM64
-#define FFI_EXTRA_CIF_FIELDS unsigned is_variadic
-#endif
-
-/* ---- Internal ---- */
-
-#if defined (__APPLE__)
-#define FFI_TARGET_SPECIFIC_VARIADIC
-#define FFI_EXTRA_CIF_FIELDS unsigned aarch64_nfixedargs
-#elif !defined(_M_ARM64)
-/* iOS and Windows reserve x18 for the system. Disable Go closures until
- a new static chain is chosen. */
-#define FFI_GO_CLOSURES 1
-#endif
-
-#ifndef _M_ARM64
-/* No complex type on Windows */
-#define FFI_TARGET_HAS_COMPLEX_TYPE
-#endif
-
-#endif
-
-
-====================File: configs/aarch64-unknown-linux-android21/include/ffitarget.h====================
-/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd.
-
-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. */
-
-#ifndef LIBFFI_TARGET_H
-#define LIBFFI_TARGET_H
-
-#ifndef LIBFFI_H
-#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
-#endif
-
-#ifndef LIBFFI_ASM
-#ifdef __ILP32__
-#define FFI_SIZEOF_ARG 8
-#define FFI_SIZEOF_JAVA_RAW 4
-typedef unsigned long long ffi_arg;
-typedef signed long long ffi_sarg;
-#elif defined(_M_ARM64)
-#define FFI_SIZEOF_ARG 8
-typedef unsigned long long ffi_arg;
-typedef signed long long ffi_sarg;
-#else
-typedef unsigned long ffi_arg;
-typedef signed long ffi_sarg;
-#endif
-
-typedef enum ffi_abi
- {
- FFI_FIRST_ABI = 0,
- FFI_SYSV,
- FFI_LAST_ABI,
- FFI_DEFAULT_ABI = FFI_SYSV
- } ffi_abi;
-#endif
-
-/* ---- Definitions for closures ----------------------------------------- */
-
-#define FFI_CLOSURES 1
-#define FFI_NATIVE_RAW_API 0
-
-#if defined (FFI_EXEC_TRAMPOLINE_TABLE) && FFI_EXEC_TRAMPOLINE_TABLE
-
-#ifdef __MACH__
-#define FFI_TRAMPOLINE_SIZE 16
-#define FFI_TRAMPOLINE_CLOSURE_OFFSET 16
-#else
-#error "No trampoline table implementation"
-#endif
-
-#else
-#define FFI_TRAMPOLINE_SIZE 24
-#define FFI_TRAMPOLINE_CLOSURE_OFFSET FFI_TRAMPOLINE_SIZE
-#endif
-
-#ifdef _M_ARM64
-#define FFI_EXTRA_CIF_FIELDS unsigned is_variadic
-#endif
-
-/* ---- Internal ---- */
-
-#if defined (__APPLE__)
-#define FFI_TARGET_SPECIFIC_VARIADIC
-#define FFI_EXTRA_CIF_FIELDS unsigned aarch64_nfixedargs
-#elif !defined(_M_ARM64)
-/* iOS and Windows reserve x18 for the system. Disable Go closures until
- a new static chain is chosen. */
-#define FFI_GO_CLOSURES 1
-#endif
-
-#ifndef _M_ARM64
-/* No complex type on Windows */
-#define FFI_TARGET_HAS_COMPLEX_TYPE
-#endif
-
-#endif
-
-
-====================File: configs/aarch64-unknown-linux-gnu/include/ffitarget.h====================
-/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd.
-
-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. */
-
-#ifndef LIBFFI_TARGET_H
-#define LIBFFI_TARGET_H
-
-#ifndef LIBFFI_H
-#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
-#endif
-
-#ifndef LIBFFI_ASM
-#ifdef __ILP32__
-#define FFI_SIZEOF_ARG 8
-#define FFI_SIZEOF_JAVA_RAW 4
-typedef unsigned long long ffi_arg;
-typedef signed long long ffi_sarg;
-#elif defined(_M_ARM64)
-#define FFI_SIZEOF_ARG 8
-typedef unsigned long long ffi_arg;
-typedef signed long long ffi_sarg;
-#else
-typedef unsigned long ffi_arg;
-typedef signed long ffi_sarg;
-#endif
-
-typedef enum ffi_abi
- {
- FFI_FIRST_ABI = 0,
- FFI_SYSV,
- FFI_LAST_ABI,
- FFI_DEFAULT_ABI = FFI_SYSV
- } ffi_abi;
-#endif
-
-/* ---- Definitions for closures ----------------------------------------- */
-
-#define FFI_CLOSURES 1
-#define FFI_NATIVE_RAW_API 0
-
-#if defined (FFI_EXEC_TRAMPOLINE_TABLE) && FFI_EXEC_TRAMPOLINE_TABLE
-
-#ifdef __MACH__
-#define FFI_TRAMPOLINE_SIZE 16
-#define FFI_TRAMPOLINE_CLOSURE_OFFSET 16
-#else
-#error "No trampoline table implementation"
-#endif
-
-#else
-#define FFI_TRAMPOLINE_SIZE 24
-#define FFI_TRAMPOLINE_CLOSURE_OFFSET FFI_TRAMPOLINE_SIZE
-#endif
-
-#ifdef _M_ARM64
-#define FFI_EXTRA_CIF_FIELDS unsigned is_variadic
-#endif
-
-/* ---- Internal ---- */
-
-#if defined (__APPLE__)
-#define FFI_TARGET_SPECIFIC_VARIADIC
-#define FFI_EXTRA_CIF_FIELDS unsigned aarch64_nfixedargs
-#elif !defined(_M_ARM64)
-/* iOS and Windows reserve x18 for the system. Disable Go closures until
- a new static chain is chosen. */
-#define FFI_GO_CLOSURES 1
-#endif
-
-#ifndef _M_ARM64
-/* No complex type on Windows */
-#define FFI_TARGET_HAS_COMPLEX_TYPE
-#endif
-
-#endif
-
-
-====================File: configs/armv7-apple-iphoneos/include/ffitarget.h====================
-/* -----------------------------------------------------------------*-C-*-
- ffitarget.h - Copyright (c) 2012 Anthony Green
- Copyright (c) 2010 CodeSourcery
- Copyright (c) 1996-2003 Red Hat, Inc.
-
- Target configuration macros for ARM.
-
- 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.
-
- ----------------------------------------------------------------------- */
-
-#ifndef LIBFFI_TARGET_H
-#define LIBFFI_TARGET_H
-
-#ifndef LIBFFI_H
-#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
-#endif
-
-#ifndef LIBFFI_ASM
-typedef unsigned long ffi_arg;
-typedef signed long ffi_sarg;
-
-typedef enum ffi_abi {
- FFI_FIRST_ABI = 0,
- FFI_SYSV,
- FFI_VFP,
- FFI_LAST_ABI,
-#if defined(__ARM_PCS_VFP) || defined(_M_ARM)
- FFI_DEFAULT_ABI = FFI_VFP,
-#else
- FFI_DEFAULT_ABI = FFI_SYSV,
-#endif
-} ffi_abi;
-#endif
-
-#define FFI_EXTRA_CIF_FIELDS \
- int vfp_used; \
- unsigned short vfp_reg_free, vfp_nargs; \
- signed char vfp_args[16] \
-
-#define FFI_TARGET_SPECIFIC_VARIADIC
-#ifndef _M_ARM
-#define FFI_TARGET_HAS_COMPLEX_TYPE
-#endif
-
-/* ---- Definitions for closures ----------------------------------------- */
-
-#define FFI_CLOSURES 1
-#define FFI_GO_CLOSURES 1
-#define FFI_NATIVE_RAW_API 0
-
-#if defined (FFI_EXEC_TRAMPOLINE_TABLE) && FFI_EXEC_TRAMPOLINE_TABLE
-
-#ifdef __MACH__
-#define FFI_TRAMPOLINE_SIZE 12
-#define FFI_TRAMPOLINE_CLOSURE_OFFSET 8
-#else
-#error "No trampoline table implementation"
-#endif
-
-#else
-#ifdef _MSC_VER
-#define FFI_TRAMPOLINE_SIZE 16
-#define FFI_TRAMPOLINE_CLOSURE_FUNCTION 12
-#else
-#define FFI_TRAMPOLINE_SIZE 12
-#endif
-#define FFI_TRAMPOLINE_CLOSURE_OFFSET FFI_TRAMPOLINE_SIZE
-#endif
-
-#endif
-
-
-====================File: configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h====================
-/* -----------------------------------------------------------------*-C-*-
- ffitarget.h - Copyright (c) 2012 Anthony Green
- Copyright (c) 2010 CodeSourcery
- Copyright (c) 1996-2003 Red Hat, Inc.
-
- Target configuration macros for ARM.
-
- 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.
-
- ----------------------------------------------------------------------- */
-
-#ifndef LIBFFI_TARGET_H
-#define LIBFFI_TARGET_H
-
-#ifndef LIBFFI_H
-#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
-#endif
-
-#ifndef LIBFFI_ASM
-typedef unsigned long ffi_arg;
-typedef signed long ffi_sarg;
-
-typedef enum ffi_abi {
- FFI_FIRST_ABI = 0,
- FFI_SYSV,
- FFI_VFP,
- FFI_LAST_ABI,
-#if defined(__ARM_PCS_VFP) || defined(_M_ARM)
- FFI_DEFAULT_ABI = FFI_VFP,
-#else
- FFI_DEFAULT_ABI = FFI_SYSV,
-#endif
-} ffi_abi;
-#endif
-
-#define FFI_EXTRA_CIF_FIELDS \
- int vfp_used; \
- unsigned short vfp_reg_free, vfp_nargs; \
- signed char vfp_args[16] \
-
-#define FFI_TARGET_SPECIFIC_VARIADIC
-#ifndef _M_ARM
-#define FFI_TARGET_HAS_COMPLEX_TYPE
-#endif
-
-/* ---- Definitions for closures ----------------------------------------- */
-
-#define FFI_CLOSURES 1
-#define FFI_GO_CLOSURES 1
-#define FFI_NATIVE_RAW_API 0
-
-#if defined (FFI_EXEC_TRAMPOLINE_TABLE) && FFI_EXEC_TRAMPOLINE_TABLE
-
-#ifdef __MACH__
-#define FFI_TRAMPOLINE_SIZE 12
-#define FFI_TRAMPOLINE_CLOSURE_OFFSET 8
-#else
-#error "No trampoline table implementation"
-#endif
-
-#else
-#ifdef _MSC_VER
-#define FFI_TRAMPOLINE_SIZE 16
-#define FFI_TRAMPOLINE_CLOSURE_FUNCTION 12
-#else
-#define FFI_TRAMPOLINE_SIZE 12
-#endif
-#define FFI_TRAMPOLINE_CLOSURE_OFFSET FFI_TRAMPOLINE_SIZE
-#endif
-
-#endif
-
-
-====================File: configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h====================
-/* -----------------------------------------------------------------*-C-*-
- ffitarget.h - Copyright (c) 2012 Anthony Green
- Copyright (c) 2010 CodeSourcery
- Copyright (c) 1996-2003 Red Hat, Inc.
-
- Target configuration macros for ARM.
-
- 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.
-
- ----------------------------------------------------------------------- */
-
-#ifndef LIBFFI_TARGET_H
-#define LIBFFI_TARGET_H
-
-#ifndef LIBFFI_H
-#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
-#endif
-
-#ifndef LIBFFI_ASM
-typedef unsigned long ffi_arg;
-typedef signed long ffi_sarg;
-
-typedef enum ffi_abi {
- FFI_FIRST_ABI = 0,
- FFI_SYSV,
- FFI_VFP,
- FFI_LAST_ABI,
-#if defined(__ARM_PCS_VFP) || defined(_M_ARM)
- FFI_DEFAULT_ABI = FFI_VFP,
-#else
- FFI_DEFAULT_ABI = FFI_SYSV,
-#endif
-} ffi_abi;
-#endif
-
-#define FFI_EXTRA_CIF_FIELDS \
- int vfp_used; \
- unsigned short vfp_reg_free, vfp_nargs; \
- signed char vfp_args[16] \
-
-#define FFI_TARGET_SPECIFIC_VARIADIC
-#ifndef _M_ARM
-#define FFI_TARGET_HAS_COMPLEX_TYPE
-#endif
-
-/* ---- Definitions for closures ----------------------------------------- */
-
-#define FFI_CLOSURES 1
-#define FFI_GO_CLOSURES 1
-#define FFI_NATIVE_RAW_API 0
-
-#if defined (FFI_EXEC_TRAMPOLINE_TABLE) && FFI_EXEC_TRAMPOLINE_TABLE
-
-#ifdef __MACH__
-#define FFI_TRAMPOLINE_SIZE 12
-#define FFI_TRAMPOLINE_CLOSURE_OFFSET 8
-#else
-#error "No trampoline table implementation"
-#endif
-
-#else
-#ifdef _MSC_VER
-#define FFI_TRAMPOLINE_SIZE 16
-#define FFI_TRAMPOLINE_CLOSURE_FUNCTION 12
-#else
-#define FFI_TRAMPOLINE_SIZE 12
-#endif
-#define FFI_TRAMPOLINE_CLOSURE_OFFSET FFI_TRAMPOLINE_SIZE
-#endif
-
-#endif
-
-
-====================File: configs/i386-apple-iphonesimulator/include/ffitarget.h====================
-/* -----------------------------------------------------------------*-C-*-
- ffitarget.h - Copyright (c) 2012, 2014, 2018 Anthony Green
- Copyright (c) 1996-2003, 2010 Red Hat, Inc.
- Copyright (C) 2008 Free Software Foundation, Inc.
-
- Target configuration macros for x86 and x86-64.
-
- 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.
-
- ----------------------------------------------------------------------- */
-
-#ifndef LIBFFI_TARGET_H
-#define LIBFFI_TARGET_H
-
-#ifndef LIBFFI_H
-#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
-#endif
-
-/* ---- System specific configurations ----------------------------------- */
-
-/* For code common to all platforms on x86 and x86_64. */
-#define X86_ANY
-
-#if defined (X86_64) && defined (__i386__)
-#undef X86_64
-#define X86
-#endif
-
-#ifdef X86_WIN64
-#define FFI_SIZEOF_ARG 8
-#define USE_BUILTIN_FFS 0 /* not yet implemented in mingw-64 */
-#endif
-
-#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION
-#ifndef _MSC_VER
-#define FFI_TARGET_HAS_COMPLEX_TYPE
-#endif
-
-/* ---- Generic type definitions ----------------------------------------- */
-
-#ifndef LIBFFI_ASM
-#ifdef X86_WIN64
-#ifdef _MSC_VER
-typedef unsigned __int64 ffi_arg;
-typedef __int64 ffi_sarg;
-#else
-typedef unsigned long long ffi_arg;
-typedef long long ffi_sarg;
-#endif
-#else
-#if defined __x86_64__ && defined __ILP32__
-#define FFI_SIZEOF_ARG 8
-#define FFI_SIZEOF_JAVA_RAW 4
-typedef unsigned long long ffi_arg;
-typedef long long ffi_sarg;
-#else
-typedef unsigned long ffi_arg;
-typedef signed long ffi_sarg;
-#endif
-#endif
-
-typedef enum ffi_abi {
-#if defined(X86_WIN64)
- FFI_FIRST_ABI = 0,
- FFI_WIN64, /* sizeof(long double) == 8 - microsoft compilers */
- FFI_GNUW64, /* sizeof(long double) == 16 - GNU compilers */
- FFI_LAST_ABI,
-#ifdef __GNUC__
- FFI_DEFAULT_ABI = FFI_GNUW64
-#else
- FFI_DEFAULT_ABI = FFI_WIN64
-#endif
-
-#elif defined(X86_64) || (defined (__x86_64__) && defined (X86_DARWIN))
- FFI_FIRST_ABI = 1,
- FFI_UNIX64,
- FFI_WIN64,
- FFI_EFI64 = FFI_WIN64,
- FFI_GNUW64,
- FFI_LAST_ABI,
- FFI_DEFAULT_ABI = FFI_UNIX64
-
-#elif defined(X86_WIN32)
- FFI_FIRST_ABI = 0,
- FFI_SYSV = 1,
- FFI_STDCALL = 2,
- FFI_THISCALL = 3,
- FFI_FASTCALL = 4,
- FFI_MS_CDECL = 5,
- FFI_PASCAL = 6,
- FFI_REGISTER = 7,
- FFI_LAST_ABI,
- FFI_DEFAULT_ABI = FFI_MS_CDECL
-#else
- FFI_FIRST_ABI = 0,
- FFI_SYSV = 1,
- FFI_THISCALL = 3,
- FFI_FASTCALL = 4,
- FFI_STDCALL = 5,
- FFI_PASCAL = 6,
- FFI_REGISTER = 7,
- FFI_MS_CDECL = 8,
- FFI_LAST_ABI,
- FFI_DEFAULT_ABI = FFI_SYSV
-#endif
-} ffi_abi;
-#endif
-
-/* ---- Definitions for closures ----------------------------------------- */
-
-#define FFI_CLOSURES 1
-#define FFI_GO_CLOSURES 1
-
-#define FFI_TYPE_SMALL_STRUCT_1B (FFI_TYPE_LAST + 1)
-#define FFI_TYPE_SMALL_STRUCT_2B (FFI_TYPE_LAST + 2)
-#define FFI_TYPE_SMALL_STRUCT_4B (FFI_TYPE_LAST + 3)
-#define FFI_TYPE_MS_STRUCT (FFI_TYPE_LAST + 4)
-
-#if defined (X86_64) || defined(X86_WIN64) \
- || (defined (__x86_64__) && defined (X86_DARWIN))
-# define FFI_TRAMPOLINE_SIZE 24
-# define FFI_NATIVE_RAW_API 0
-#else
-# define FFI_TRAMPOLINE_SIZE 12
-# define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */
-#endif
-
-#endif
-
-
-
-====================File: configs/i386-microsoft-windows/include/ffitarget.h====================
-/* -----------------------------------------------------------------*-C-*-
- ffitarget.h - Copyright (c) 2012, 2014, 2018 Anthony Green
- Copyright (c) 1996-2003, 2010 Red Hat, Inc.
- Copyright (C) 2008 Free Software Foundation, Inc.
-
- Target configuration macros for x86 and x86-64.
-
- 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.
-
- ----------------------------------------------------------------------- */
-
-#ifndef LIBFFI_TARGET_H
-#define LIBFFI_TARGET_H
-
-#ifndef LIBFFI_H
-#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
-#endif
-
-/* ---- System specific configurations ----------------------------------- */
-
-/* For code common to all platforms on x86 and x86_64. */
-#define X86_ANY
-
-#if defined (X86_64) && defined (__i386__)
-#undef X86_64
-#define X86
-#endif
-
-#ifdef X86_WIN64
-#define FFI_SIZEOF_ARG 8
-#define USE_BUILTIN_FFS 0 /* not yet implemented in mingw-64 */
-#endif
-
-#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION
-#ifndef _MSC_VER
-#define FFI_TARGET_HAS_COMPLEX_TYPE
-#endif
-
-/* ---- Generic type definitions ----------------------------------------- */
-
-#ifndef LIBFFI_ASM
-#ifdef X86_WIN64
-#ifdef _MSC_VER
-typedef unsigned __int64 ffi_arg;
-typedef __int64 ffi_sarg;
-#else
-typedef unsigned long long ffi_arg;
-typedef long long ffi_sarg;
-#endif
-#else
-#if defined __x86_64__ && defined __ILP32__
-#define FFI_SIZEOF_ARG 8
-#define FFI_SIZEOF_JAVA_RAW 4
-typedef unsigned long long ffi_arg;
-typedef long long ffi_sarg;
-#else
-typedef unsigned long ffi_arg;
-typedef signed long ffi_sarg;
-#endif
-#endif
-
-typedef enum ffi_abi {
-#if defined(X86_WIN64)
- FFI_FIRST_ABI = 0,
- FFI_WIN64, /* sizeof(long double) == 8 - microsoft compilers */
- FFI_GNUW64, /* sizeof(long double) == 16 - GNU compilers */
- FFI_LAST_ABI,
-#ifdef __GNUC__
- FFI_DEFAULT_ABI = FFI_GNUW64
-#else
- FFI_DEFAULT_ABI = FFI_WIN64
-#endif
-
-#elif defined(X86_64) || (defined (__x86_64__) && defined (X86_DARWIN))
- FFI_FIRST_ABI = 1,
- FFI_UNIX64,
- FFI_WIN64,
- FFI_EFI64 = FFI_WIN64,
- FFI_GNUW64,
- FFI_LAST_ABI,
- FFI_DEFAULT_ABI = FFI_UNIX64
-
-#elif defined(X86_WIN32)
- FFI_FIRST_ABI = 0,
- FFI_SYSV = 1,
- FFI_STDCALL = 2,
- FFI_THISCALL = 3,
- FFI_FASTCALL = 4,
- FFI_MS_CDECL = 5,
- FFI_PASCAL = 6,
- FFI_REGISTER = 7,
- FFI_LAST_ABI,
- FFI_DEFAULT_ABI = FFI_MS_CDECL
-#else
- FFI_FIRST_ABI = 0,
- FFI_SYSV = 1,
- FFI_THISCALL = 3,
- FFI_FASTCALL = 4,
- FFI_STDCALL = 5,
- FFI_PASCAL = 6,
- FFI_REGISTER = 7,
- FFI_MS_CDECL = 8,
- FFI_LAST_ABI,
- FFI_DEFAULT_ABI = FFI_SYSV
-#endif
-} ffi_abi;
-#endif
-
-/* ---- Definitions for closures ----------------------------------------- */
-
-#define FFI_CLOSURES 1
-#define FFI_GO_CLOSURES 1
-
-#define FFI_TYPE_SMALL_STRUCT_1B (FFI_TYPE_LAST + 1)
-#define FFI_TYPE_SMALL_STRUCT_2B (FFI_TYPE_LAST + 2)
-#define FFI_TYPE_SMALL_STRUCT_4B (FFI_TYPE_LAST + 3)
-#define FFI_TYPE_MS_STRUCT (FFI_TYPE_LAST + 4)
-
-#if defined (X86_64) || defined(X86_WIN64) \
- || (defined (__x86_64__) && defined (X86_DARWIN))
-/* 4 bytes of ENDBR64 + 7 bytes of LEA + 6 bytes of JMP + 7 bytes of NOP
- + 8 bytes of pointer. */
-# define FFI_TRAMPOLINE_SIZE 32
-# define FFI_NATIVE_RAW_API 0
-#else
-/* 4 bytes of ENDBR32 + 5 bytes of MOV + 5 bytes of JMP + 2 unused
- bytes. */
-# define FFI_TRAMPOLINE_SIZE 16
-# define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */
-#endif
-
-#if !defined(GENERATE_LIBFFI_MAP) && defined(__ASSEMBLER__) \
- && defined(__CET__)
-# include <cet.h>
-# define _CET_NOTRACK notrack
-#else
-# define _CET_ENDBR
-# define _CET_NOTRACK
-#endif
-
-#endif
-
-
-
-====================File: configs/i686-pc-linux-android16/include/ffitarget.h====================
-/* -----------------------------------------------------------------*-C-*-
- ffitarget.h - Copyright (c) 2012, 2014, 2018 Anthony Green
- Copyright (c) 1996-2003, 2010 Red Hat, Inc.
- Copyright (C) 2008 Free Software Foundation, Inc.
-
- Target configuration macros for x86 and x86-64.
-
- 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.
-
- ----------------------------------------------------------------------- */
-
-#ifndef LIBFFI_TARGET_H
-#define LIBFFI_TARGET_H
-
-#ifndef LIBFFI_H
-#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
-#endif
-
-/* ---- System specific configurations ----------------------------------- */
-
-/* For code common to all platforms on x86 and x86_64. */
-#define X86_ANY
-
-#if defined (X86_64) && defined (__i386__)
-#undef X86_64
-#define X86
-#endif
-
-#ifdef X86_WIN64
-#define FFI_SIZEOF_ARG 8
-#define USE_BUILTIN_FFS 0 /* not yet implemented in mingw-64 */
-#endif
-
-#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION
-#ifndef _MSC_VER
-#define FFI_TARGET_HAS_COMPLEX_TYPE
-#endif
-
-/* ---- Generic type definitions ----------------------------------------- */
-
-#ifndef LIBFFI_ASM
-#ifdef X86_WIN64
-#ifdef _MSC_VER
-typedef unsigned __int64 ffi_arg;
-typedef __int64 ffi_sarg;
-#else
-typedef unsigned long long ffi_arg;
-typedef long long ffi_sarg;
-#endif
-#else
-#if defined __x86_64__ && defined __ILP32__
-#define FFI_SIZEOF_ARG 8
-#define FFI_SIZEOF_JAVA_RAW 4
-typedef unsigned long long ffi_arg;
-typedef long long ffi_sarg;
-#else
-typedef unsigned long ffi_arg;
-typedef signed long ffi_sarg;
-#endif
-#endif
-
-typedef enum ffi_abi {
-#if defined(X86_WIN64)
- FFI_FIRST_ABI = 0,
- FFI_WIN64, /* sizeof(long double) == 8 - microsoft compilers */
- FFI_GNUW64, /* sizeof(long double) == 16 - GNU compilers */
- FFI_LAST_ABI,
-#ifdef __GNUC__
- FFI_DEFAULT_ABI = FFI_GNUW64
-#else
- FFI_DEFAULT_ABI = FFI_WIN64
-#endif
-
-#elif defined(X86_64) || (defined (__x86_64__) && defined (X86_DARWIN))
- FFI_FIRST_ABI = 1,
- FFI_UNIX64,
- FFI_WIN64,
- FFI_EFI64 = FFI_WIN64,
- FFI_GNUW64,
- FFI_LAST_ABI,
- FFI_DEFAULT_ABI = FFI_UNIX64
-
-#elif defined(X86_WIN32)
- FFI_FIRST_ABI = 0,
- FFI_SYSV = 1,
- FFI_STDCALL = 2,
- FFI_THISCALL = 3,
- FFI_FASTCALL = 4,
- FFI_MS_CDECL = 5,
- FFI_PASCAL = 6,
- FFI_REGISTER = 7,
- FFI_LAST_ABI,
- FFI_DEFAULT_ABI = FFI_MS_CDECL
-#else
- FFI_FIRST_ABI = 0,
- FFI_SYSV = 1,
- FFI_THISCALL = 3,
- FFI_FASTCALL = 4,
- FFI_STDCALL = 5,
- FFI_PASCAL = 6,
- FFI_REGISTER = 7,
- FFI_MS_CDECL = 8,
- FFI_LAST_ABI,
- FFI_DEFAULT_ABI = FFI_SYSV
-#endif
-} ffi_abi;
-#endif
-
-/* ---- Definitions for closures ----------------------------------------- */
-
-#define FFI_CLOSURES 1
-#define FFI_GO_CLOSURES 1
-
-#define FFI_TYPE_SMALL_STRUCT_1B (FFI_TYPE_LAST + 1)
-#define FFI_TYPE_SMALL_STRUCT_2B (FFI_TYPE_LAST + 2)
-#define FFI_TYPE_SMALL_STRUCT_4B (FFI_TYPE_LAST + 3)
-#define FFI_TYPE_MS_STRUCT (FFI_TYPE_LAST + 4)
-
-#if defined (X86_64) || defined(X86_WIN64) \
- || (defined (__x86_64__) && defined (X86_DARWIN))
-# define FFI_TRAMPOLINE_SIZE 24
-# define FFI_NATIVE_RAW_API 0
-#else
-# define FFI_TRAMPOLINE_SIZE 12
-# define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */
-#endif
-
-#endif
-
-
-
-====================File: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h====================
-/* -----------------------------------------------------------------*-C-*-
- ffitarget.h - Copyright (c) 2012 Anthony Green
- Copyright (C) 2007, 2008, 2010 Free Software Foundation, Inc
- Copyright (c) 1996-2003 Red Hat, Inc.
-
- Target configuration macros for PowerPC.
-
- 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.
-
- ----------------------------------------------------------------------- */
-
-#ifndef LIBFFI_TARGET_H
-#define LIBFFI_TARGET_H
-
-#ifndef LIBFFI_H
-#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
-#endif
-
-/* ---- System specific configurations ----------------------------------- */
-
-#if defined (POWERPC) && defined (__powerpc64__) /* linux64 */
-#ifndef POWERPC64
-#define POWERPC64
-#endif
-#elif defined (POWERPC_DARWIN) && defined (__ppc64__) /* Darwin64 */
-#ifndef POWERPC64
-#define POWERPC64
-#endif
-#ifndef POWERPC_DARWIN64
-#define POWERPC_DARWIN64
-#endif
-#elif defined (POWERPC_AIX) && defined (__64BIT__) /* AIX64 */
-#ifndef POWERPC64
-#define POWERPC64
-#endif
-#endif
-
-#ifndef LIBFFI_ASM
-typedef unsigned long ffi_arg;
-typedef signed long ffi_sarg;
-
-typedef enum ffi_abi {
- FFI_FIRST_ABI = 0,
-
-#if defined (POWERPC_AIX)
- FFI_AIX,
- FFI_DARWIN,
- FFI_DEFAULT_ABI = FFI_AIX,
- FFI_LAST_ABI
-
-#elif defined (POWERPC_DARWIN)
- FFI_AIX,
- FFI_DARWIN,
- FFI_DEFAULT_ABI = FFI_DARWIN,
- FFI_LAST_ABI
-
-#else
- /* The FFI_COMPAT values are used by old code. Since libffi may be
- a shared library we have to support old values for backwards
- compatibility. */
- FFI_COMPAT_SYSV,
- FFI_COMPAT_GCC_SYSV,
- FFI_COMPAT_LINUX64,
- FFI_COMPAT_LINUX,
- FFI_COMPAT_LINUX_SOFT_FLOAT,
-
-# if defined (POWERPC64)
- /* This bit, always set in new code, must not be set in any of the
- old FFI_COMPAT values that might be used for 64-bit linux. We
- only need worry about FFI_COMPAT_LINUX64, but to be safe avoid
- all old values. */
- FFI_LINUX = 8,
- /* This and following bits can reuse FFI_COMPAT values. */
- FFI_LINUX_STRUCT_ALIGN = 1,
- FFI_LINUX_LONG_DOUBLE_128 = 2,
- FFI_LINUX_LONG_DOUBLE_IEEE128 = 4,
- FFI_DEFAULT_ABI = (FFI_LINUX
-# ifdef __STRUCT_PARM_ALIGN__
- | FFI_LINUX_STRUCT_ALIGN
-# endif
-# ifdef __LONG_DOUBLE_128__
- | FFI_LINUX_LONG_DOUBLE_128
-# ifdef __LONG_DOUBLE_IEEE128__
- | FFI_LINUX_LONG_DOUBLE_IEEE128
-# endif
-# endif
- ),
- FFI_LAST_ABI = 16
-
-# else
- /* This bit, always set in new code, must not be set in any of the
- old FFI_COMPAT values that might be used for 32-bit linux/sysv/bsd. */
- FFI_SYSV = 8,
- /* This and following bits can reuse FFI_COMPAT values. */
- FFI_SYSV_SOFT_FLOAT = 1,
- FFI_SYSV_STRUCT_RET = 2,
- FFI_SYSV_IBM_LONG_DOUBLE = 4,
- FFI_SYSV_LONG_DOUBLE_128 = 16,
-
- FFI_DEFAULT_ABI = (FFI_SYSV
-# ifdef __NO_FPRS__
- | FFI_SYSV_SOFT_FLOAT
-# endif
-# if (defined (__SVR4_STRUCT_RETURN) \
- || defined (POWERPC_FREEBSD) && !defined (__AIX_STRUCT_RETURN))
- | FFI_SYSV_STRUCT_RET
-# endif
-# if __LDBL_MANT_DIG__ == 106
- | FFI_SYSV_IBM_LONG_DOUBLE
-# endif
-# ifdef __LONG_DOUBLE_128__
- | FFI_SYSV_LONG_DOUBLE_128
-# endif
- ),
- FFI_LAST_ABI = 32
-# endif
-#endif
-
-} ffi_abi;
-#endif
-
-/* ---- Definitions for closures ----------------------------------------- */
-
-#define FFI_CLOSURES 1
-#define FFI_NATIVE_RAW_API 0
-#if defined (POWERPC) || defined (POWERPC_FREEBSD)
-# define FFI_GO_CLOSURES 1
-# define FFI_TARGET_SPECIFIC_VARIADIC 1
-# define FFI_EXTRA_CIF_FIELDS unsigned nfixedargs
-#endif
-#if defined (POWERPC_AIX)
-# define FFI_GO_CLOSURES 1
-#endif
-
-/* ppc_closure.S and linux64_closure.S expect this. */
-#define FFI_PPC_TYPE_LAST FFI_TYPE_POINTER
-
-/* We define additional types below. If generic types are added that
- must be supported by powerpc libffi then it is likely that
- FFI_PPC_TYPE_LAST needs increasing *and* the jump tables in
- ppc_closure.S and linux64_closure.S be extended. */
-
-#if !(FFI_TYPE_LAST == FFI_PPC_TYPE_LAST \
- || (FFI_TYPE_LAST == FFI_TYPE_COMPLEX \
- && !defined FFI_TARGET_HAS_COMPLEX_TYPE))
-# error "You likely have a broken powerpc libffi"
-#endif
-
-/* Needed for soft-float long-double-128 support. */
-#define FFI_TYPE_UINT128 (FFI_PPC_TYPE_LAST + 1)
-
-/* Needed for FFI_SYSV small structure returns. */
-#define FFI_SYSV_TYPE_SMALL_STRUCT (FFI_PPC_TYPE_LAST + 2)
-
-/* Used by ELFv2 for homogenous structure returns. */
-#define FFI_V2_TYPE_VECTOR (FFI_PPC_TYPE_LAST + 1)
-#define FFI_V2_TYPE_VECTOR_HOMOG (FFI_PPC_TYPE_LAST + 2)
-#define FFI_V2_TYPE_FLOAT_HOMOG (FFI_PPC_TYPE_LAST + 3)
-#define FFI_V2_TYPE_DOUBLE_HOMOG (FFI_PPC_TYPE_LAST + 4)
-#define FFI_V2_TYPE_SMALL_STRUCT (FFI_PPC_TYPE_LAST + 5)
-
-#if _CALL_ELF == 2
-# define FFI_TRAMPOLINE_SIZE 32
-#else
-# if defined(POWERPC64) || defined(POWERPC_AIX)
-# if defined(POWERPC_DARWIN64)
-# define FFI_TRAMPOLINE_SIZE 48
-# else
-# define FFI_TRAMPOLINE_SIZE 24
-# endif
-# else /* POWERPC || POWERPC_AIX */
-# define FFI_TRAMPOLINE_SIZE 40
-# endif
-#endif
-
-#ifndef LIBFFI_ASM
-#if defined(POWERPC_DARWIN) || defined(POWERPC_AIX)
-struct ffi_aix_trampoline_struct {
- void * code_pointer; /* Pointer to ffi_closure_ASM */
- void * toc; /* TOC */
- void * static_chain; /* Pointer to closure */
-};
-#endif
-#endif
-
-#endif
-
-
-====================File: configs/x86_64-apple-iphonesimulator/include/ffitarget.h====================
-/* -----------------------------------------------------------------*-C-*-
- ffitarget.h - Copyright (c) 2012, 2014, 2018 Anthony Green
- Copyright (c) 1996-2003, 2010 Red Hat, Inc.
- Copyright (C) 2008 Free Software Foundation, Inc.
-
- Target configuration macros for x86 and x86-64.
-
- 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.
-
- ----------------------------------------------------------------------- */
-
-#ifndef LIBFFI_TARGET_H
-#define LIBFFI_TARGET_H
-
-#ifndef LIBFFI_H
-#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
-#endif
-
-/* ---- System specific configurations ----------------------------------- */
-
-/* For code common to all platforms on x86 and x86_64. */
-#define X86_ANY
-
-#if defined (X86_64) && defined (__i386__)
-#undef X86_64
-#define X86
-#endif
-
-#ifdef X86_WIN64
-#define FFI_SIZEOF_ARG 8
-#define USE_BUILTIN_FFS 0 /* not yet implemented in mingw-64 */
-#endif
-
-#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION
-#ifndef _MSC_VER
-#define FFI_TARGET_HAS_COMPLEX_TYPE
-#endif
-
-/* ---- Generic type definitions ----------------------------------------- */
-
-#ifndef LIBFFI_ASM
-#ifdef X86_WIN64
-#ifdef _MSC_VER
-typedef unsigned __int64 ffi_arg;
-typedef __int64 ffi_sarg;
-#else
-typedef unsigned long long ffi_arg;
-typedef long long ffi_sarg;
-#endif
-#else
-#if defined __x86_64__ && defined __ILP32__
-#define FFI_SIZEOF_ARG 8
-#define FFI_SIZEOF_JAVA_RAW 4
-typedef unsigned long long ffi_arg;
-typedef long long ffi_sarg;
-#else
-typedef unsigned long ffi_arg;
-typedef signed long ffi_sarg;
-#endif
-#endif
-
-typedef enum ffi_abi {
-#if defined(X86_WIN64)
- FFI_FIRST_ABI = 0,
- FFI_WIN64, /* sizeof(long double) == 8 - microsoft compilers */
- FFI_GNUW64, /* sizeof(long double) == 16 - GNU compilers */
- FFI_LAST_ABI,
-#ifdef __GNUC__
- FFI_DEFAULT_ABI = FFI_GNUW64
-#else
- FFI_DEFAULT_ABI = FFI_WIN64
-#endif
-
-#elif defined(X86_64) || (defined (__x86_64__) && defined (X86_DARWIN))
- FFI_FIRST_ABI = 1,
- FFI_UNIX64,
- FFI_WIN64,
- FFI_EFI64 = FFI_WIN64,
- FFI_GNUW64,
- FFI_LAST_ABI,
- FFI_DEFAULT_ABI = FFI_UNIX64
-
-#elif defined(X86_WIN32)
- FFI_FIRST_ABI = 0,
- FFI_SYSV = 1,
- FFI_STDCALL = 2,
- FFI_THISCALL = 3,
- FFI_FASTCALL = 4,
- FFI_MS_CDECL = 5,
- FFI_PASCAL = 6,
- FFI_REGISTER = 7,
- FFI_LAST_ABI,
- FFI_DEFAULT_ABI = FFI_MS_CDECL
-#else
- FFI_FIRST_ABI = 0,
- FFI_SYSV = 1,
- FFI_THISCALL = 3,
- FFI_FASTCALL = 4,
- FFI_STDCALL = 5,
- FFI_PASCAL = 6,
- FFI_REGISTER = 7,
- FFI_MS_CDECL = 8,
- FFI_LAST_ABI,
- FFI_DEFAULT_ABI = FFI_SYSV
-#endif
-} ffi_abi;
-#endif
-
-/* ---- Definitions for closures ----------------------------------------- */
-
-#define FFI_CLOSURES 1
-#define FFI_GO_CLOSURES 1
-
-#define FFI_TYPE_SMALL_STRUCT_1B (FFI_TYPE_LAST + 1)
-#define FFI_TYPE_SMALL_STRUCT_2B (FFI_TYPE_LAST + 2)
-#define FFI_TYPE_SMALL_STRUCT_4B (FFI_TYPE_LAST + 3)
-#define FFI_TYPE_MS_STRUCT (FFI_TYPE_LAST + 4)
-
-#if defined (X86_64) || defined(X86_WIN64) \
- || (defined (__x86_64__) && defined (X86_DARWIN))
-# define FFI_TRAMPOLINE_SIZE 24
-# define FFI_NATIVE_RAW_API 0
-#else
-# define FFI_TRAMPOLINE_SIZE 12
-# define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */
-#endif
-
-#endif
-
-
-
-====================File: configs/x86_64-apple-macosx/include/ffitarget.h====================
-/* -----------------------------------------------------------------*-C-*-
- ffitarget.h - Copyright (c) 2012, 2014, 2018 Anthony Green
- Copyright (c) 1996-2003, 2010 Red Hat, Inc.
- Copyright (C) 2008 Free Software Foundation, Inc.
-
- Target configuration macros for x86 and x86-64.
-
- 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.
-
- ----------------------------------------------------------------------- */
-
-#ifndef LIBFFI_TARGET_H
-#define LIBFFI_TARGET_H
-
-#ifndef LIBFFI_H
-#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
-#endif
-
-/* ---- System specific configurations ----------------------------------- */
-
-/* For code common to all platforms on x86 and x86_64. */
-#define X86_ANY
-
-#if defined (X86_64) && defined (__i386__)
-#undef X86_64
-#define X86
-#endif
-
-#ifdef X86_WIN64
-#define FFI_SIZEOF_ARG 8
-#define USE_BUILTIN_FFS 0 /* not yet implemented in mingw-64 */
-#endif
-
-#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION
-#ifndef _MSC_VER
-#define FFI_TARGET_HAS_COMPLEX_TYPE
-#endif
-
-/* ---- Generic type definitions ----------------------------------------- */
-
-#ifndef LIBFFI_ASM
-#ifdef X86_WIN64
-#ifdef _MSC_VER
-typedef unsigned __int64 ffi_arg;
-typedef __int64 ffi_sarg;
-#else
-typedef unsigned long long ffi_arg;
-typedef long long ffi_sarg;
-#endif
-#else
-#if defined __x86_64__ && defined __ILP32__
-#define FFI_SIZEOF_ARG 8
-#define FFI_SIZEOF_JAVA_RAW 4
-typedef unsigned long long ffi_arg;
-typedef long long ffi_sarg;
-#else
-typedef unsigned long ffi_arg;
-typedef signed long ffi_sarg;
-#endif
-#endif
-
-typedef enum ffi_abi {
-#if defined(X86_WIN64)
- FFI_FIRST_ABI = 0,
- FFI_WIN64, /* sizeof(long double) == 8 - microsoft compilers */
- FFI_GNUW64, /* sizeof(long double) == 16 - GNU compilers */
- FFI_LAST_ABI,
-#ifdef __GNUC__
- FFI_DEFAULT_ABI = FFI_GNUW64
-#else
- FFI_DEFAULT_ABI = FFI_WIN64
-#endif
-
-#elif defined(X86_64) || (defined (__x86_64__) && defined (X86_DARWIN))
- FFI_FIRST_ABI = 1,
- FFI_UNIX64,
- FFI_WIN64,
- FFI_EFI64 = FFI_WIN64,
- FFI_GNUW64,
- FFI_LAST_ABI,
- FFI_DEFAULT_ABI = FFI_UNIX64
-
-#elif defined(X86_WIN32)
- FFI_FIRST_ABI = 0,
- FFI_SYSV = 1,
- FFI_STDCALL = 2,
- FFI_THISCALL = 3,
- FFI_FASTCALL = 4,
- FFI_MS_CDECL = 5,
- FFI_PASCAL = 6,
- FFI_REGISTER = 7,
- FFI_LAST_ABI,
- FFI_DEFAULT_ABI = FFI_MS_CDECL
-#else
- FFI_FIRST_ABI = 0,
- FFI_SYSV = 1,
- FFI_THISCALL = 3,
- FFI_FASTCALL = 4,
- FFI_STDCALL = 5,
- FFI_PASCAL = 6,
- FFI_REGISTER = 7,
- FFI_MS_CDECL = 8,
- FFI_LAST_ABI,
- FFI_DEFAULT_ABI = FFI_SYSV
-#endif
-} ffi_abi;
-#endif
-
-/* ---- Definitions for closures ----------------------------------------- */
-
-#define FFI_CLOSURES 1
-#define FFI_GO_CLOSURES 1
-
-#define FFI_TYPE_SMALL_STRUCT_1B (FFI_TYPE_LAST + 1)
-#define FFI_TYPE_SMALL_STRUCT_2B (FFI_TYPE_LAST + 2)
-#define FFI_TYPE_SMALL_STRUCT_4B (FFI_TYPE_LAST + 3)
-#define FFI_TYPE_MS_STRUCT (FFI_TYPE_LAST + 4)
-
-#if defined (X86_64) || defined(X86_WIN64) \
- || (defined (__x86_64__) && defined (X86_DARWIN))
-# define FFI_TRAMPOLINE_SIZE 24
-# define FFI_NATIVE_RAW_API 0
-#else
-# define FFI_TRAMPOLINE_SIZE 12
-# define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */
-#endif
-
-#endif
-
-
-
-====================File: configs/x86_64-microsoft-windows/include/ffitarget.h====================
-/* -----------------------------------------------------------------*-C-*-
- ffitarget.h - Copyright (c) 2012, 2014, 2018 Anthony Green
- Copyright (c) 1996-2003, 2010 Red Hat, Inc.
- Copyright (C) 2008 Free Software Foundation, Inc.
-
- Target configuration macros for x86 and x86-64.
-
- 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.
-
- ----------------------------------------------------------------------- */
-
-#ifndef LIBFFI_TARGET_H
-#define LIBFFI_TARGET_H
-
-#ifndef LIBFFI_H
-#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
-#endif
-
-/* ---- System specific configurations ----------------------------------- */
-
-/* For code common to all platforms on x86 and x86_64. */
-#define X86_ANY
-
-#if defined (X86_64) && defined (__i386__)
-#undef X86_64
-#define X86
-#endif
-
-#ifdef X86_WIN64
-#define FFI_SIZEOF_ARG 8
-#define USE_BUILTIN_FFS 0 /* not yet implemented in mingw-64 */
-#endif
-
-#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION
-#ifndef _MSC_VER
-#define FFI_TARGET_HAS_COMPLEX_TYPE
-#endif
-
-/* ---- Generic type definitions ----------------------------------------- */
-
-#ifndef LIBFFI_ASM
-#ifdef X86_WIN64
-#ifdef _MSC_VER
-typedef unsigned __int64 ffi_arg;
-typedef __int64 ffi_sarg;
-#else
-typedef unsigned long long ffi_arg;
-typedef long long ffi_sarg;
-#endif
-#else
-#if defined __x86_64__ && defined __ILP32__
-#define FFI_SIZEOF_ARG 8
-#define FFI_SIZEOF_JAVA_RAW 4
-typedef unsigned long long ffi_arg;
-typedef long long ffi_sarg;
-#else
-typedef unsigned long ffi_arg;
-typedef signed long ffi_sarg;
-#endif
-#endif
-
-typedef enum ffi_abi {
-#if defined(X86_WIN64)
- FFI_FIRST_ABI = 0,
- FFI_WIN64, /* sizeof(long double) == 8 - microsoft compilers */
- FFI_GNUW64, /* sizeof(long double) == 16 - GNU compilers */
- FFI_LAST_ABI,
-#ifdef __GNUC__
- FFI_DEFAULT_ABI = FFI_GNUW64
-#else
- FFI_DEFAULT_ABI = FFI_WIN64
-#endif
-
-#elif defined(X86_64) || (defined (__x86_64__) && defined (X86_DARWIN))
- FFI_FIRST_ABI = 1,
- FFI_UNIX64,
- FFI_WIN64,
- FFI_EFI64 = FFI_WIN64,
- FFI_GNUW64,
- FFI_LAST_ABI,
- FFI_DEFAULT_ABI = FFI_UNIX64
-
-#elif defined(X86_WIN32)
- FFI_FIRST_ABI = 0,
- FFI_SYSV = 1,
- FFI_STDCALL = 2,
- FFI_THISCALL = 3,
- FFI_FASTCALL = 4,
- FFI_MS_CDECL = 5,
- FFI_PASCAL = 6,
- FFI_REGISTER = 7,
- FFI_LAST_ABI,
- FFI_DEFAULT_ABI = FFI_MS_CDECL
-#else
- FFI_FIRST_ABI = 0,
- FFI_SYSV = 1,
- FFI_THISCALL = 3,
- FFI_FASTCALL = 4,
- FFI_STDCALL = 5,
- FFI_PASCAL = 6,
- FFI_REGISTER = 7,
- FFI_MS_CDECL = 8,
- FFI_LAST_ABI,
- FFI_DEFAULT_ABI = FFI_SYSV
-#endif
-} ffi_abi;
-#endif
-
-/* ---- Definitions for closures ----------------------------------------- */
-
-#define FFI_CLOSURES 1
-#define FFI_GO_CLOSURES 1
-
-#define FFI_TYPE_SMALL_STRUCT_1B (FFI_TYPE_LAST + 1)
-#define FFI_TYPE_SMALL_STRUCT_2B (FFI_TYPE_LAST + 2)
-#define FFI_TYPE_SMALL_STRUCT_4B (FFI_TYPE_LAST + 3)
-#define FFI_TYPE_MS_STRUCT (FFI_TYPE_LAST + 4)
-
-#if defined (X86_64) || defined(X86_WIN64) \
- || (defined (__x86_64__) && defined (X86_DARWIN))
-/* 4 bytes of ENDBR64 + 7 bytes of LEA + 6 bytes of JMP + 7 bytes of NOP
- + 8 bytes of pointer. */
-# define FFI_TRAMPOLINE_SIZE 32
-# define FFI_NATIVE_RAW_API 0
-#else
-/* 4 bytes of ENDBR32 + 5 bytes of MOV + 5 bytes of JMP + 2 unused
- bytes. */
-# define FFI_TRAMPOLINE_SIZE 16
-# define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */
-#endif
-
-#if !defined(GENERATE_LIBFFI_MAP) && defined(__ASSEMBLER__) \
- && defined(__CET__)
-# include <cet.h>
-# define _CET_NOTRACK notrack
-#else
-# define _CET_ENDBR
-# define _CET_NOTRACK
-#endif
-
-#endif
-
-
-
-====================File: configs/x86_64-pc-linux-android21/include/ffitarget.h====================
-/* -----------------------------------------------------------------*-C-*-
- ffitarget.h - Copyright (c) 2012, 2014, 2018 Anthony Green
- Copyright (c) 1996-2003, 2010 Red Hat, Inc.
- Copyright (C) 2008 Free Software Foundation, Inc.
-
- Target configuration macros for x86 and x86-64.
-
- 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.
-
- ----------------------------------------------------------------------- */
-
-#ifndef LIBFFI_TARGET_H
-#define LIBFFI_TARGET_H
-
-#ifndef LIBFFI_H
-#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
-#endif
-
-/* ---- System specific configurations ----------------------------------- */
-
-/* For code common to all platforms on x86 and x86_64. */
-#define X86_ANY
-
-#if defined (X86_64) && defined (__i386__)
-#undef X86_64
-#define X86
-#endif
-
-#ifdef X86_WIN64
-#define FFI_SIZEOF_ARG 8
-#define USE_BUILTIN_FFS 0 /* not yet implemented in mingw-64 */
-#endif
-
-#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION
-#ifndef _MSC_VER
-#define FFI_TARGET_HAS_COMPLEX_TYPE
-#endif
-
-/* ---- Generic type definitions ----------------------------------------- */
-
-#ifndef LIBFFI_ASM
-#ifdef X86_WIN64
-#ifdef _MSC_VER
-typedef unsigned __int64 ffi_arg;
-typedef __int64 ffi_sarg;
-#else
-typedef unsigned long long ffi_arg;
-typedef long long ffi_sarg;
-#endif
-#else
-#if defined __x86_64__ && defined __ILP32__
-#define FFI_SIZEOF_ARG 8
-#define FFI_SIZEOF_JAVA_RAW 4
-typedef unsigned long long ffi_arg;
-typedef long long ffi_sarg;
-#else
-typedef unsigned long ffi_arg;
-typedef signed long ffi_sarg;
-#endif
-#endif
-
-typedef enum ffi_abi {
-#if defined(X86_WIN64)
- FFI_FIRST_ABI = 0,
- FFI_WIN64, /* sizeof(long double) == 8 - microsoft compilers */
- FFI_GNUW64, /* sizeof(long double) == 16 - GNU compilers */
- FFI_LAST_ABI,
-#ifdef __GNUC__
- FFI_DEFAULT_ABI = FFI_GNUW64
-#else
- FFI_DEFAULT_ABI = FFI_WIN64
-#endif
-
-#elif defined(X86_64) || (defined (__x86_64__) && defined (X86_DARWIN))
- FFI_FIRST_ABI = 1,
- FFI_UNIX64,
- FFI_WIN64,
- FFI_EFI64 = FFI_WIN64,
- FFI_GNUW64,
- FFI_LAST_ABI,
- FFI_DEFAULT_ABI = FFI_UNIX64
-
-#elif defined(X86_WIN32)
- FFI_FIRST_ABI = 0,
- FFI_SYSV = 1,
- FFI_STDCALL = 2,
- FFI_THISCALL = 3,
- FFI_FASTCALL = 4,
- FFI_MS_CDECL = 5,
- FFI_PASCAL = 6,
- FFI_REGISTER = 7,
- FFI_LAST_ABI,
- FFI_DEFAULT_ABI = FFI_MS_CDECL
-#else
- FFI_FIRST_ABI = 0,
- FFI_SYSV = 1,
- FFI_THISCALL = 3,
- FFI_FASTCALL = 4,
- FFI_STDCALL = 5,
- FFI_PASCAL = 6,
- FFI_REGISTER = 7,
- FFI_MS_CDECL = 8,
- FFI_LAST_ABI,
- FFI_DEFAULT_ABI = FFI_SYSV
-#endif
-} ffi_abi;
-#endif
-
-/* ---- Definitions for closures ----------------------------------------- */
-
-#define FFI_CLOSURES 1
-#define FFI_GO_CLOSURES 1
-
-#define FFI_TYPE_SMALL_STRUCT_1B (FFI_TYPE_LAST + 1)
-#define FFI_TYPE_SMALL_STRUCT_2B (FFI_TYPE_LAST + 2)
-#define FFI_TYPE_SMALL_STRUCT_4B (FFI_TYPE_LAST + 3)
-#define FFI_TYPE_MS_STRUCT (FFI_TYPE_LAST + 4)
-
-#if defined (X86_64) || defined(X86_WIN64) \
- || (defined (__x86_64__) && defined (X86_DARWIN))
-# define FFI_TRAMPOLINE_SIZE 24
-# define FFI_NATIVE_RAW_API 0
-#else
-# define FFI_TRAMPOLINE_SIZE 12
-# define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */
-#endif
-
-#endif
-
-
-
-====================File: configs/x86_64-pc-linux-gnu/include/ffitarget.h====================
-/* -----------------------------------------------------------------*-C-*-
- ffitarget.h - Copyright (c) 2012, 2014, 2018 Anthony Green
- Copyright (c) 1996-2003, 2010 Red Hat, Inc.
- Copyright (C) 2008 Free Software Foundation, Inc.
-
- Target configuration macros for x86 and x86-64.
-
- 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.
-
- ----------------------------------------------------------------------- */
-
-#ifndef LIBFFI_TARGET_H
-#define LIBFFI_TARGET_H
-
-#ifndef LIBFFI_H
-#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
-#endif
-
-/* ---- System specific configurations ----------------------------------- */
-
-/* For code common to all platforms on x86 and x86_64. */
-#define X86_ANY
-
-#if defined (X86_64) && defined (__i386__)
-#undef X86_64
-#define X86
-#endif
-
-#ifdef X86_WIN64
-#define FFI_SIZEOF_ARG 8
-#define USE_BUILTIN_FFS 0 /* not yet implemented in mingw-64 */
-#endif
-
-#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION
-#ifndef _MSC_VER
-#define FFI_TARGET_HAS_COMPLEX_TYPE
-#endif
-
-/* ---- Generic type definitions ----------------------------------------- */
-
-#ifndef LIBFFI_ASM
-#ifdef X86_WIN64
-#ifdef _MSC_VER
-typedef unsigned __int64 ffi_arg;
-typedef __int64 ffi_sarg;
-#else
-typedef unsigned long long ffi_arg;
-typedef long long ffi_sarg;
-#endif
-#else
-#if defined __x86_64__ && defined __ILP32__
-#define FFI_SIZEOF_ARG 8
-#define FFI_SIZEOF_JAVA_RAW 4
-typedef unsigned long long ffi_arg;
-typedef long long ffi_sarg;
-#else
-typedef unsigned long ffi_arg;
-typedef signed long ffi_sarg;
-#endif
-#endif
-
-typedef enum ffi_abi {
-#if defined(X86_WIN64)
- FFI_FIRST_ABI = 0,
- FFI_WIN64, /* sizeof(long double) == 8 - microsoft compilers */
- FFI_GNUW64, /* sizeof(long double) == 16 - GNU compilers */
- FFI_LAST_ABI,
-#ifdef __GNUC__
- FFI_DEFAULT_ABI = FFI_GNUW64
-#else
- FFI_DEFAULT_ABI = FFI_WIN64
-#endif
-
-#elif defined(X86_64) || (defined (__x86_64__) && defined (X86_DARWIN))
- FFI_FIRST_ABI = 1,
- FFI_UNIX64,
- FFI_WIN64,
- FFI_EFI64 = FFI_WIN64,
- FFI_GNUW64,
- FFI_LAST_ABI,
- FFI_DEFAULT_ABI = FFI_UNIX64
-
-#elif defined(X86_WIN32)
- FFI_FIRST_ABI = 0,
- FFI_SYSV = 1,
- FFI_STDCALL = 2,
- FFI_THISCALL = 3,
- FFI_FASTCALL = 4,
- FFI_MS_CDECL = 5,
- FFI_PASCAL = 6,
- FFI_REGISTER = 7,
- FFI_LAST_ABI,
- FFI_DEFAULT_ABI = FFI_MS_CDECL
-#else
- FFI_FIRST_ABI = 0,
- FFI_SYSV = 1,
- FFI_THISCALL = 3,
- FFI_FASTCALL = 4,
- FFI_STDCALL = 5,
- FFI_PASCAL = 6,
- FFI_REGISTER = 7,
- FFI_MS_CDECL = 8,
- FFI_LAST_ABI,
- FFI_DEFAULT_ABI = FFI_SYSV
-#endif
-} ffi_abi;
-#endif
-
-/* ---- Definitions for closures ----------------------------------------- */
-
-#define FFI_CLOSURES 1
-#define FFI_GO_CLOSURES 1
-
-#define FFI_TYPE_SMALL_STRUCT_1B (FFI_TYPE_LAST + 1)
-#define FFI_TYPE_SMALL_STRUCT_2B (FFI_TYPE_LAST + 2)
-#define FFI_TYPE_SMALL_STRUCT_4B (FFI_TYPE_LAST + 3)
-#define FFI_TYPE_MS_STRUCT (FFI_TYPE_LAST + 4)
-
-#if defined (X86_64) || defined(X86_WIN64) \
- || (defined (__x86_64__) && defined (X86_DARWIN))
-# define FFI_TRAMPOLINE_SIZE 24
-# define FFI_NATIVE_RAW_API 0
-#else
-# define FFI_TRAMPOLINE_SIZE 12
-# define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */
-#endif
-
-#endif
-
-
-
-====================File: src/aarch64/ffi.c====================
-/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd.
-
-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. */
-
-#if defined(__aarch64__) || defined(__arm64__)|| defined (_M_ARM64)
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include <fficonfig.h>
-#include <ffi.h>
-#include <ffi_common.h>
-#include "internal.h"
-#ifdef _M_ARM64
-#include <windows.h> /* FlushInstructionCache */
-#endif
-
-/* Force FFI_TYPE_LONGDOUBLE to be different than FFI_TYPE_DOUBLE;
- all further uses in this file will refer to the 128-bit type. */
-#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
-# if FFI_TYPE_LONGDOUBLE != 4
-# error FFI_TYPE_LONGDOUBLE out of date
-# endif
-#else
-# undef FFI_TYPE_LONGDOUBLE
-# define FFI_TYPE_LONGDOUBLE 4
-#endif
-
-union _d
-{
- UINT64 d;
- UINT32 s[2];
-};
-
-struct _v
-{
- union _d d[2] __attribute__((aligned(16)));
-};
-
-struct call_context
-{
- struct _v v[N_V_ARG_REG];
- UINT64 x[N_X_ARG_REG];
-};
-
-#if FFI_EXEC_TRAMPOLINE_TABLE
-
-#ifdef __MACH__
-#include <mach/vm_param.h>
-#endif
-
-#else
-
-#if defined (__clang__) && defined (__APPLE__)
-extern void sys_icache_invalidate (void *start, size_t len);
-#endif
-
-static inline void
-ffi_clear_cache (void *start, void *end)
-{
-#if defined (__clang__) && defined (__APPLE__)
- sys_icache_invalidate (start, (char *)end - (char *)start);
-#elif defined (__GNUC__)
- __builtin___clear_cache (start, end);
-#elif defined (_M_ARM64)
- FlushInstructionCache(GetCurrentProcess(), start, (char*)end - (char*)start);
-#else
-#error "Missing builtin to flush instruction cache"
-#endif
-}
-
-#endif
-
-/* A subroutine of is_vfp_type. Given a structure type, return the type code
- of the first non-structure element. Recurse for structure elements.
- Return -1 if the structure is in fact empty, i.e. no nested elements. */
-
-static int
-is_hfa0 (const ffi_type *ty)
-{
- ffi_type **elements = ty->elements;
- int i, ret = -1;
-
- if (elements != NULL)
- for (i = 0; elements[i]; ++i)
- {
- ret = elements[i]->type;
- if (ret == FFI_TYPE_STRUCT || ret == FFI_TYPE_COMPLEX)
- {
- ret = is_hfa0 (elements[i]);
- if (ret < 0)
- continue;
- }
- break;
- }
-
- return ret;
-}
-
-/* A subroutine of is_vfp_type. Given a structure type, return true if all
- of the non-structure elements are the same as CANDIDATE. */
-
-static int
-is_hfa1 (const ffi_type *ty, int candidate)
-{
- ffi_type **elements = ty->elements;
- int i;
-
- if (elements != NULL)
- for (i = 0; elements[i]; ++i)
- {
- int t = elements[i]->type;
- if (t == FFI_TYPE_STRUCT || t == FFI_TYPE_COMPLEX)
- {
- if (!is_hfa1 (elements[i], candidate))
- return 0;
- }
- else if (t != candidate)
- return 0;
- }
-
- return 1;
-}
-
-/* Determine if TY may be allocated to the FP registers. This is both an
- fp scalar type as well as an homogenous floating point aggregate (HFA).
- That is, a structure consisting of 1 to 4 members of all the same type,
- where that type is an fp scalar.
-
- Returns non-zero iff TY is an HFA. The result is the AARCH64_RET_*
- constant for the type. */
-
-static int
-is_vfp_type (const ffi_type *ty)
-{
- ffi_type **elements;
- int candidate, i;
- size_t size, ele_count;
-
- /* Quickest tests first. */
- candidate = ty->type;
- switch (candidate)
- {
- default:
- return 0;
- case FFI_TYPE_FLOAT:
- case FFI_TYPE_DOUBLE:
- case FFI_TYPE_LONGDOUBLE:
- ele_count = 1;
- goto done;
- case FFI_TYPE_COMPLEX:
- candidate = ty->elements[0]->type;
- switch (candidate)
- {
- case FFI_TYPE_FLOAT:
- case FFI_TYPE_DOUBLE:
- case FFI_TYPE_LONGDOUBLE:
- ele_count = 2;
- goto done;
- }
- return 0;
- case FFI_TYPE_STRUCT:
- break;
- }
-
- /* No HFA types are smaller than 4 bytes, or larger than 64 bytes. */
- size = ty->size;
- if (size < 4 || size > 64)
- return 0;
-
- /* Find the type of the first non-structure member. */
- elements = ty->elements;
- candidate = elements[0]->type;
- if (candidate == FFI_TYPE_STRUCT || candidate == FFI_TYPE_COMPLEX)
- {
- for (i = 0; ; ++i)
- {
- candidate = is_hfa0 (elements[i]);
- if (candidate >= 0)
- break;
- }
- }
-
- /* If the first member is not a floating point type, it's not an HFA.
- Also quickly re-check the size of the structure. */
- switch (candidate)
- {
- case FFI_TYPE_FLOAT:
- ele_count = size / sizeof(float);
- if (size != ele_count * sizeof(float))
- return 0;
- break;
- case FFI_TYPE_DOUBLE:
- ele_count = size / sizeof(double);
- if (size != ele_count * sizeof(double))
- return 0;
- break;
- case FFI_TYPE_LONGDOUBLE:
- ele_count = size / sizeof(long double);
- if (size != ele_count * sizeof(long double))
- return 0;
- break;
- default:
- return 0;
- }
- if (ele_count > 4)
- return 0;
-
- /* Finally, make sure that all scalar elements are the same type. */
- for (i = 0; elements[i]; ++i)
- {
- int t = elements[i]->type;
- if (t == FFI_TYPE_STRUCT || t == FFI_TYPE_COMPLEX)
- {
- if (!is_hfa1 (elements[i], candidate))
- return 0;
- }
- else if (t != candidate)
- return 0;
- }
-
- /* All tests succeeded. Encode the result. */
- done:
- return candidate * 4 + (4 - (int)ele_count);
-}
-
-/* Representation of the procedure call argument marshalling
- state.
-
- The terse state variable names match the names used in the AARCH64
- PCS. */
-
-struct arg_state
-{
- unsigned ngrn; /* Next general-purpose register number. */
- unsigned nsrn; /* Next vector register number. */
- size_t nsaa; /* Next stack offset. */
-
-#if defined (__APPLE__)
- unsigned allocating_variadic;
-#endif
-};
-
-/* Initialize a procedure call argument marshalling state. */
-static void
-arg_init (struct arg_state *state)
-{
- state->ngrn = 0;
- state->nsrn = 0;
- state->nsaa = 0;
-#if defined (__APPLE__)
- state->allocating_variadic = 0;
-#endif
-}
-
-/* Allocate an aligned slot on the stack and return a pointer to it. */
-static void *
-allocate_to_stack (struct arg_state *state, void *stack,
- size_t alignment, size_t size)
-{
- size_t nsaa = state->nsaa;
-
- /* Round up the NSAA to the larger of 8 or the natural
- alignment of the argument's type. */
-#if defined (__APPLE__)
- if (state->allocating_variadic && alignment < 8)
- alignment = 8;
-#else
- if (alignment < 8)
- alignment = 8;
-#endif
-
- nsaa = FFI_ALIGN (nsaa, alignment);
- state->nsaa = nsaa + size;
-
- return (char *)stack + nsaa;
-}
-
-static ffi_arg
-extend_integer_type (void *source, int type)
-{
- switch (type)
- {
- case FFI_TYPE_UINT8:
- return *(UINT8 *) source;
- case FFI_TYPE_SINT8:
- return *(SINT8 *) source;
- case FFI_TYPE_UINT16:
- return *(UINT16 *) source;
- case FFI_TYPE_SINT16:
- return *(SINT16 *) source;
- case FFI_TYPE_UINT32:
- return *(UINT32 *) source;
- case FFI_TYPE_INT:
- case FFI_TYPE_SINT32:
- return *(SINT32 *) source;
- case FFI_TYPE_UINT64:
- case FFI_TYPE_SINT64:
- return *(UINT64 *) source;
- break;
- case FFI_TYPE_POINTER:
- return *(uintptr_t *) source;
- default:
- abort();
- }
-}
-
-#if defined(_MSC_VER)
-void extend_hfa_type (void *dest, void *src, int h);
-#else
-static void
-extend_hfa_type (void *dest, void *src, int h)
-{
- ssize_t f = h - AARCH64_RET_S4;
- void *x0;
-
- asm volatile (
- "adr %0, 0f\n"
-" add %0, %0, %1\n"
-" br %0\n"
-"0: ldp s16, s17, [%3]\n" /* S4 */
-" ldp s18, s19, [%3, #8]\n"
-" b 4f\n"
-" ldp s16, s17, [%3]\n" /* S3 */
-" ldr s18, [%3, #8]\n"
-" b 3f\n"
-" ldp s16, s17, [%3]\n" /* S2 */
-" b 2f\n"
-" nop\n"
-" ldr s16, [%3]\n" /* S1 */
-" b 1f\n"
-" nop\n"
-" ldp d16, d17, [%3]\n" /* D4 */
-" ldp d18, d19, [%3, #16]\n"
-" b 4f\n"
-" ldp d16, d17, [%3]\n" /* D3 */
-" ldr d18, [%3, #16]\n"
-" b 3f\n"
-" ldp d16, d17, [%3]\n" /* D2 */
-" b 2f\n"
-" nop\n"
-" ldr d16, [%3]\n" /* D1 */
-" b 1f\n"
-" nop\n"
-" ldp q16, q17, [%3]\n" /* Q4 */
-" ldp q18, q19, [%3, #32]\n"
-" b 4f\n"
-" ldp q16, q17, [%3]\n" /* Q3 */
-" ldr q18, [%3, #32]\n"
-" b 3f\n"
-" ldp q16, q17, [%3]\n" /* Q2 */
-" b 2f\n"
-" nop\n"
-" ldr q16, [%3]\n" /* Q1 */
-" b 1f\n"
-"4: str q19, [%2, #48]\n"
-"3: str q18, [%2, #32]\n"
-"2: str q17, [%2, #16]\n"
-"1: str q16, [%2]"
- : "=&r"(x0)
- : "r"(f * 12), "r"(dest), "r"(src)
- : "memory", "v16", "v17", "v18", "v19");
-}
-#endif
-
-#if defined(_MSC_VER)
-void* compress_hfa_type (void *dest, void *src, int h);
-#else
-static void *
-compress_hfa_type (void *dest, void *reg, int h)
-{
- switch (h)
- {
- case AARCH64_RET_S1:
- if (dest == reg)
- {
-#ifdef __AARCH64EB__
- dest += 12;
-#endif
- }
- else
- *(float *)dest = *(float *)reg;
- break;
- case AARCH64_RET_S2:
- asm ("ldp q16, q17, [%1]\n\t"
- "st2 { v16.s, v17.s }[0], [%0]"
- : : "r"(dest), "r"(reg) : "memory", "v16", "v17");
- break;
- case AARCH64_RET_S3:
- asm ("ldp q16, q17, [%1]\n\t"
- "ldr q18, [%1, #32]\n\t"
- "st3 { v16.s, v17.s, v18.s }[0], [%0]"
- : : "r"(dest), "r"(reg) : "memory", "v16", "v17", "v18");
- break;
- case AARCH64_RET_S4:
- asm ("ldp q16, q17, [%1]\n\t"
- "ldp q18, q19, [%1, #32]\n\t"
- "st4 { v16.s, v17.s, v18.s, v19.s }[0], [%0]"
- : : "r"(dest), "r"(reg) : "memory", "v16", "v17", "v18", "v19");
- break;
-
- case AARCH64_RET_D1:
- if (dest == reg)
- {
-#ifdef __AARCH64EB__
- dest += 8;
-#endif
- }
- else
- *(double *)dest = *(double *)reg;
- break;
- case AARCH64_RET_D2:
- asm ("ldp q16, q17, [%1]\n\t"
- "st2 { v16.d, v17.d }[0], [%0]"
- : : "r"(dest), "r"(reg) : "memory", "v16", "v17");
- break;
- case AARCH64_RET_D3:
- asm ("ldp q16, q17, [%1]\n\t"
- "ldr q18, [%1, #32]\n\t"
- "st3 { v16.d, v17.d, v18.d }[0], [%0]"
- : : "r"(dest), "r"(reg) : "memory", "v16", "v17", "v18");
- break;
- case AARCH64_RET_D4:
- asm ("ldp q16, q17, [%1]\n\t"
- "ldp q18, q19, [%1, #32]\n\t"
- "st4 { v16.d, v17.d, v18.d, v19.d }[0], [%0]"
- : : "r"(dest), "r"(reg) : "memory", "v16", "v17", "v18", "v19");
- break;
-
- default:
- if (dest != reg)
- return memcpy (dest, reg, 16 * (4 - (h & 3)));
- break;
- }
- return dest;
-}
-#endif
-
-/* Either allocate an appropriate register for the argument type, or if
- none are available, allocate a stack slot and return a pointer
- to the allocated space. */
-
-static void *
-allocate_int_to_reg_or_stack (struct call_context *context,
- struct arg_state *state,
- void *stack, size_t size)
-{
- if (state->ngrn < N_X_ARG_REG)
- return &context->x[state->ngrn++];
-
- state->ngrn = N_X_ARG_REG;
- return allocate_to_stack (state, stack, size, size);
-}
-
-ffi_status FFI_HIDDEN
-ffi_prep_cif_machdep (ffi_cif *cif)
-{
- ffi_type *rtype = cif->rtype;
- size_t bytes = cif->bytes;
- int flags, i, n;
-
- switch (rtype->type)
- {
- case FFI_TYPE_VOID:
- flags = AARCH64_RET_VOID;
- break;
- case FFI_TYPE_UINT8:
- flags = AARCH64_RET_UINT8;
- break;
- case FFI_TYPE_UINT16:
- flags = AARCH64_RET_UINT16;
- break;
- case FFI_TYPE_UINT32:
- flags = AARCH64_RET_UINT32;
- break;
- case FFI_TYPE_SINT8:
- flags = AARCH64_RET_SINT8;
- break;
- case FFI_TYPE_SINT16:
- flags = AARCH64_RET_SINT16;
- break;
- case FFI_TYPE_INT:
- case FFI_TYPE_SINT32:
- flags = AARCH64_RET_SINT32;
- break;
- case FFI_TYPE_SINT64:
- case FFI_TYPE_UINT64:
- flags = AARCH64_RET_INT64;
- break;
- case FFI_TYPE_POINTER:
- flags = (sizeof(void *) == 4 ? AARCH64_RET_UINT32 : AARCH64_RET_INT64);
- break;
-
- case FFI_TYPE_FLOAT:
- case FFI_TYPE_DOUBLE:
- case FFI_TYPE_LONGDOUBLE:
- case FFI_TYPE_STRUCT:
- case FFI_TYPE_COMPLEX:
- flags = is_vfp_type (rtype);
- if (flags == 0)
- {
- size_t s = rtype->size;
- if (s > 16)
- {
- flags = AARCH64_RET_VOID | AARCH64_RET_IN_MEM;
- bytes += 8;
- }
- else if (s == 16)
- flags = AARCH64_RET_INT128;
- else if (s == 8)
- flags = AARCH64_RET_INT64;
- else
- flags = AARCH64_RET_INT128 | AARCH64_RET_NEED_COPY;
- }
- break;
-
- default:
- abort();
- }
-
- for (i = 0, n = cif->nargs; i < n; i++)
- if (is_vfp_type (cif->arg_types[i]))
- {
- flags |= AARCH64_FLAG_ARG_V;
- break;
- }
-
- /* Round the stack up to a multiple of the stack alignment requirement. */
- cif->bytes = (unsigned) FFI_ALIGN(bytes, 16);
- cif->flags = flags;
-#if defined (__APPLE__)
- cif->aarch64_nfixedargs = 0;
-#endif
-
- return FFI_OK;
-}
-
-#if defined (__APPLE__)
-/* Perform Apple-specific cif processing for variadic calls */
-ffi_status FFI_HIDDEN
-ffi_prep_cif_machdep_var(ffi_cif *cif, unsigned int nfixedargs,
- unsigned int ntotalargs)
-{
- ffi_status status = ffi_prep_cif_machdep (cif);
- cif->aarch64_nfixedargs = nfixedargs;
- return status;
-}
-#endif /* __APPLE__ */
-
-extern void ffi_call_SYSV (struct call_context *context, void *frame,
- void (*fn)(void), void *rvalue, int flags,
- void *closure) FFI_HIDDEN;
-
-/* Call a function with the provided arguments and capture the return
- value. */
-static void
-ffi_call_int (ffi_cif *cif, void (*fn)(void), void *orig_rvalue,
- void **avalue, void *closure)
-{
- struct call_context *context;
- void *stack, *frame, *rvalue;
- struct arg_state state;
- size_t stack_bytes, rtype_size, rsize;
- int i, nargs, flags;
- ffi_type *rtype;
-
- flags = cif->flags;
- rtype = cif->rtype;
- rtype_size = rtype->size;
- stack_bytes = cif->bytes;
-
- /* If the target function returns a structure via hidden pointer,
- then we cannot allow a null rvalue. Otherwise, mash a null
- rvalue to void return type. */
- rsize = 0;
- if (flags & AARCH64_RET_IN_MEM)
- {
- if (orig_rvalue == NULL)
- rsize = rtype_size;
- }
- else if (orig_rvalue == NULL)
- flags &= AARCH64_FLAG_ARG_V;
- else if (flags & AARCH64_RET_NEED_COPY)
- rsize = 16;
-
- /* Allocate consectutive stack for everything we'll need. */
- context = alloca (sizeof(struct call_context) + stack_bytes + 32 + rsize);
- stack = context + 1;
- frame = (void*)((uintptr_t)stack + (uintptr_t)stack_bytes);
- rvalue = (rsize ? (void*)((uintptr_t)frame + 32) : orig_rvalue);
-
- arg_init (&state);
- for (i = 0, nargs = cif->nargs; i < nargs; i++)
- {
- ffi_type *ty = cif->arg_types[i];
- size_t s = ty->size;
- void *a = avalue[i];
- int h, t;
-
- t = ty->type;
- switch (t)
- {
- case FFI_TYPE_VOID:
- FFI_ASSERT (0);
- break;
-
- /* If the argument is a basic type the argument is allocated to an
- appropriate register, or if none are available, to the stack. */
- case FFI_TYPE_INT:
- case FFI_TYPE_UINT8:
- case FFI_TYPE_SINT8:
- case FFI_TYPE_UINT16:
- case FFI_TYPE_SINT16:
- case FFI_TYPE_UINT32:
- case FFI_TYPE_SINT32:
- case FFI_TYPE_UINT64:
- case FFI_TYPE_SINT64:
- case FFI_TYPE_POINTER:
- do_pointer:
- {
- ffi_arg ext = extend_integer_type (a, t);
- if (state.ngrn < N_X_ARG_REG)
- context->x[state.ngrn++] = ext;
- else
- {
- void *d = allocate_to_stack (&state, stack, ty->alignment, s);
- state.ngrn = N_X_ARG_REG;
- /* Note that the default abi extends each argument
- to a full 64-bit slot, while the iOS abi allocates
- only enough space. */
-#ifdef __APPLE__
- memcpy(d, a, s);
-#else
- *(ffi_arg *)d = ext;
-#endif
- }
- }
- break;
-
- case FFI_TYPE_FLOAT:
- case FFI_TYPE_DOUBLE:
- case FFI_TYPE_LONGDOUBLE:
- case FFI_TYPE_STRUCT:
- case FFI_TYPE_COMPLEX:
- {
- void *dest;
-
- h = is_vfp_type (ty);
- if (h)
- {
- int elems = 4 - (h & 3);
-#ifdef _M_ARM64 /* for handling armasm calling convention */
- if (cif->is_variadic)
- {
- if (state.ngrn + elems <= N_X_ARG_REG)
- {
- dest = &context->x[state.ngrn];
- state.ngrn += elems;
- extend_hfa_type(dest, a, h);
- break;
- }
- state.nsrn = N_X_ARG_REG;
- dest = allocate_to_stack(&state, stack, ty->alignment, s);
- }
- else
- {
-#endif /* for handling armasm calling convention */
- if (state.nsrn + elems <= N_V_ARG_REG)
- {
- dest = &context->v[state.nsrn];
- state.nsrn += elems;
- extend_hfa_type (dest, a, h);
- break;
- }
- state.nsrn = N_V_ARG_REG;
- dest = allocate_to_stack (&state, stack, ty->alignment, s);
-#ifdef _M_ARM64 /* for handling armasm calling convention */
- }
-#endif /* for handling armasm calling convention */
- }
- else if (s > 16)
- {
- /* If the argument is a composite type that is larger than 16
- bytes, then the argument has been copied to memory, and
- the argument is replaced by a pointer to the copy. */
- a = &avalue[i];
- t = FFI_TYPE_POINTER;
- s = sizeof (void *);
- goto do_pointer;
- }
- else
- {
- size_t n = (s + 7) / 8;
- if (state.ngrn + n <= N_X_ARG_REG)
- {
- /* If the argument is a composite type and the size in
- double-words is not more than the number of available
- X registers, then the argument is copied into
- consecutive X registers. */
- dest = &context->x[state.ngrn];
- state.ngrn += (unsigned int)n;
- }
- else
- {
- /* Otherwise, there are insufficient X registers. Further
- X register allocations are prevented, the NSAA is
- adjusted and the argument is copied to memory at the
- adjusted NSAA. */
- state.ngrn = N_X_ARG_REG;
- dest = allocate_to_stack (&state, stack, ty->alignment, s);
- }
- }
- memcpy (dest, a, s);
- }
- break;
-
- default:
- abort();
- }
-
-#if defined (__APPLE__)
- if (i + 1 == cif->aarch64_nfixedargs)
- {
- state.ngrn = N_X_ARG_REG;
- state.nsrn = N_V_ARG_REG;
- state.allocating_variadic = 1;
- }
-#endif
- }
-
- ffi_call_SYSV (context, frame, fn, rvalue, flags, closure);
-
- if (flags & AARCH64_RET_NEED_COPY)
- memcpy (orig_rvalue, rvalue, rtype_size);
-}
-
-void
-ffi_call (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue)
-{
- ffi_call_int (cif, fn, rvalue, avalue, NULL);
-}
-
-#ifdef FFI_GO_CLOSURES
-void
-ffi_call_go (ffi_cif *cif, void (*fn) (void), void *rvalue,
- void **avalue, void *closure)
-{
- ffi_call_int (cif, fn, rvalue, avalue, closure);
-}
-#endif /* FFI_GO_CLOSURES */
-
-/* Build a trampoline. */
-
-extern void ffi_closure_SYSV (void) FFI_HIDDEN;
-extern void ffi_closure_SYSV_V (void) FFI_HIDDEN;
-
-ffi_status
-ffi_prep_closure_loc (ffi_closure *closure,
- ffi_cif* cif,
- void (*fun)(ffi_cif*,void*,void**,void*),
- void *user_data,
- void *codeloc)
-{
- if (cif->abi != FFI_SYSV)
- return FFI_BAD_ABI;
-
- void (*start)(void);
+====================CC-PDDC====================
+ Doug Lea and released to the public domain, as explained at
+ http://creativecommons.org/licenses/publicdomain. Send questions,
+
+
+====================COPYRIGHT====================
+ Copyright (C) 1998 Geoffrey Keating
+ Copyright (C) 2001 John Hornkvist
+ Copyright (C) 2002, 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
+
+
+====================COPYRIGHT====================
+ Copyright (C) 2003-2004, 2006, 2009-2017 Free Software Foundation, Inc.
+
+
+====================COPYRIGHT====================
+ aix.S - Copyright (c) 2002, 2009 Free Software Foundation, Inc.
+ based on darwin.S by John Hornkvist
+
+
+====================COPYRIGHT====================
+ aix_closure.S - Copyright (c) 2002, 2003, 2009 Free Software Foundation, Inc.
+ based on darwin_closure.S
+
+
+====================COPYRIGHT====================
+ asm.h - Copyright (c) 1998 Geoffrey Keating
+
+
+====================COPYRIGHT====================
+ closures.c - Copyright (c) 2019 Anthony Green
+ Copyright (c) 2007, 2009, 2010 Red Hat, Inc.
+ Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc
+ Copyright (c) 2011 Plausible Labs Cooperative, Inc.
+
+
+====================COPYRIGHT====================
+ darwin.S - Copyright (c) 2000 John Hornkvist
+ Copyright (c) 2004, 2010 Free Software Foundation, Inc.
+
+
+====================COPYRIGHT====================
+ darwin_closure.S - Copyright (c) 2002, 2003, 2004, 2010,
+ Free Software Foundation, Inc.
+ based on ppc_closure.S
+
+
+====================COPYRIGHT====================
+ ffi.c - Copyright (C) 2013 IBM
+ Copyright (C) 2011 Anthony Green
+ Copyright (C) 2011 Kyle Moffett
+ Copyright (C) 2008 Red Hat, Inc
+ Copyright (C) 2007, 2008 Free Software Foundation, Inc
+ Copyright (c) 1998 Geoffrey Keating
+
+
+====================COPYRIGHT====================
+ ffi.c - Copyright (c) 2011 Timothy Wall
+ Copyright (c) 2011 Plausible Labs Cooperative, Inc.
+ Copyright (c) 2011 Anthony Green
+ Copyright (c) 2011 Free Software Foundation
+ Copyright (c) 1998, 2008, 2011 Red Hat, Inc.
+
+
+====================COPYRIGHT====================
+ ffi.c - Copyright (c) 2017 Anthony Green
+ Copyright (c) 1996, 1998, 1999, 2001, 2007, 2008 Red Hat, Inc.
+ Copyright (c) 2002 Ranjit Mathew
+ Copyright (c) 2002 Bo Thorsen
+ Copyright (c) 2002 Roger Sayle
+ Copyright (C) 2008, 2010 Free Software Foundation, Inc.
+
+
+====================COPYRIGHT====================
+ ffi64.c - Copyright (c) 2011, 2018 Anthony Green
+ Copyright (c) 2013 The Written Word, Inc.
+ Copyright (c) 2008, 2010 Red Hat, Inc.
+ Copyright (c) 2002, 2007 Bo Thorsen <bo@suse.de>
+
+
+====================COPYRIGHT====================
+ ffitarget.h - Copyright (c) 2012 Anthony Green
+ Copyright (C) 2007, 2008, 2010 Free Software Foundation, Inc
+ Copyright (c) 1996-2003 Red Hat, Inc.
+
+
+====================COPYRIGHT====================
+ ffitarget.h - Copyright (c) 2012 Anthony Green
+ Copyright (c) 2010 CodeSourcery
+ Copyright (c) 1996-2003 Red Hat, Inc.
+
+
+====================COPYRIGHT====================
+ ffitarget.h - Copyright (c) 2012, 2014, 2018 Anthony Green
+ Copyright (c) 1996-2003, 2010 Red Hat, Inc.
+ Copyright (C) 2008 Free Software Foundation, Inc.
+
+
+====================COPYRIGHT====================
+ ffiw64.c - Copyright (c) 2018 Anthony Green
+ Copyright (c) 2014 Red Hat, Inc.
+
+
+====================COPYRIGHT====================
+ java_raw_api.c - Copyright (c) 1999, 2007, 2008 Red Hat, Inc.
+
+
+====================COPYRIGHT====================
+ libffi 3.3 - Copyright (c) 2011, 2014, 2019 Anthony Green
+ - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc.
+
+
+====================COPYRIGHT====================
+ prep_cif.c - Copyright (c) 2011, 2012 Anthony Green
+ Copyright (c) 1996, 1998, 2007 Red Hat, Inc.
+
+
+====================COPYRIGHT====================
+ raw_api.c - Copyright (c) 1999, 2008 Red Hat, Inc.
+
+
+====================COPYRIGHT====================
+ sysv.S - Copyright (c) 1998 Geoffrey Keating
+ Copyright (C) 2007 Free Software Foundation, Inc
+
+
+====================COPYRIGHT====================
+ sysv.S - Copyright (c) 1998, 2008, 2011 Red Hat, Inc.
+ Copyright (c) 2011 Plausible Labs Cooperative, Inc.
+ Copyright (c) 2019 Microsoft Corporation.
+
+
+====================COPYRIGHT====================
+ sysv.S - Copyright (c) 2017 Anthony Green
+ - Copyright (c) 2013 The Written Word, Inc.
+ - Copyright (c) 1996,1998,2001-2003,2005,2008,2010 Red Hat, Inc.
+
+
+====================COPYRIGHT====================
+ sysv.h - Copyright (c) 2003 Jakub Jelinek <jakub@redhat.com>
+ Copyright (c) 2008 Red Hat, Inc.
+
+
+====================COPYRIGHT====================
+ types.c - Copyright (c) 1996, 1998 Red Hat, Inc.
+
+
+====================COPYRIGHT====================
+ unix64.S - Copyright (c) 2013 The Written Word, Inc.
+ - Copyright (c) 2008 Red Hat, Inc
+ - Copyright (c) 2002 Bo Thorsen <bo@suse.de>
+
+
+====================COPYRIGHT====================
+ Copyright 1993 Bill Triggs <Bill.Triggs@inrialpes.fr>
+ Copyright 1995-2017 Bruno Haible <bruno@clisp.org>
+
+
+====================COPYRIGHT====================
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+
+
+====================COPYRIGHT====================
+/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd.
+
+
+====================COPYRIGHT====================
+libffi - Copyright (c) 1996-2019 Anthony Green, Red Hat, Inc and others.
+See source files for details.
+
+
+====================COPYRIGHT====================
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+
+====================File: configs/aarch64-apple-iphoneos/include/ffitarget.h====================
+/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd.
+
+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. */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
+#endif
+
+#ifndef LIBFFI_ASM
+#ifdef __ILP32__
+#define FFI_SIZEOF_ARG 8
+#define FFI_SIZEOF_JAVA_RAW 4
+typedef unsigned long long ffi_arg;
+typedef signed long long ffi_sarg;
+#elif defined(_M_ARM64)
+#define FFI_SIZEOF_ARG 8
+typedef unsigned long long ffi_arg;
+typedef signed long long ffi_sarg;
+#else
+typedef unsigned long ffi_arg;
+typedef signed long ffi_sarg;
+#endif
+
+typedef enum ffi_abi
+ {
+ FFI_FIRST_ABI = 0,
+ FFI_SYSV,
+ FFI_LAST_ABI,
+ FFI_DEFAULT_ABI = FFI_SYSV
+ } ffi_abi;
+#endif
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 1
+#define FFI_NATIVE_RAW_API 0
+
+#if defined (FFI_EXEC_TRAMPOLINE_TABLE) && FFI_EXEC_TRAMPOLINE_TABLE
+
+#ifdef __MACH__
+#define FFI_TRAMPOLINE_SIZE 16
+#define FFI_TRAMPOLINE_CLOSURE_OFFSET 16
+#else
+#error "No trampoline table implementation"
+#endif
+
+#else
+#define FFI_TRAMPOLINE_SIZE 24
+#define FFI_TRAMPOLINE_CLOSURE_OFFSET FFI_TRAMPOLINE_SIZE
+#endif
+
+#ifdef _M_ARM64
+#define FFI_EXTRA_CIF_FIELDS unsigned is_variadic
+#endif
+
+/* ---- Internal ---- */
+
+#if defined (__APPLE__)
+#define FFI_TARGET_SPECIFIC_VARIADIC
+#define FFI_EXTRA_CIF_FIELDS unsigned aarch64_nfixedargs
+#elif !defined(_M_ARM64)
+/* iOS and Windows reserve x18 for the system. Disable Go closures until
+ a new static chain is chosen. */
+#define FFI_GO_CLOSURES 1
+#endif
+
+#ifndef _M_ARM64
+/* No complex type on Windows */
+#define FFI_TARGET_HAS_COMPLEX_TYPE
+#endif
+
+#endif
+
+
+====================File: configs/aarch64-apple-macos/include/ffitarget.h====================
+/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd.
+
+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. */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
+#endif
+
+#ifndef LIBFFI_ASM
+#ifdef __ILP32__
+#define FFI_SIZEOF_ARG 8
+#define FFI_SIZEOF_JAVA_RAW 4
+typedef unsigned long long ffi_arg;
+typedef signed long long ffi_sarg;
+#elif defined(_M_ARM64)
+#define FFI_SIZEOF_ARG 8
+typedef unsigned long long ffi_arg;
+typedef signed long long ffi_sarg;
+#else
+typedef unsigned long ffi_arg;
+typedef signed long ffi_sarg;
+#endif
+
+typedef enum ffi_abi
+ {
+ FFI_FIRST_ABI = 0,
+ FFI_SYSV,
+ FFI_LAST_ABI,
+ FFI_DEFAULT_ABI = FFI_SYSV
+ } ffi_abi;
+#endif
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 1
+#define FFI_NATIVE_RAW_API 0
+
+#if defined (FFI_EXEC_TRAMPOLINE_TABLE) && FFI_EXEC_TRAMPOLINE_TABLE
+
+#ifdef __MACH__
+#define FFI_TRAMPOLINE_SIZE 16
+#define FFI_TRAMPOLINE_CLOSURE_OFFSET 16
+#else
+#error "No trampoline table implementation"
+#endif
+
+#else
+#define FFI_TRAMPOLINE_SIZE 24
+#define FFI_TRAMPOLINE_CLOSURE_OFFSET FFI_TRAMPOLINE_SIZE
+#endif
+
+#ifdef _M_ARM64
+#define FFI_EXTRA_CIF_FIELDS unsigned is_variadic
+#endif
+
+/* ---- Internal ---- */
+
+#if defined (__APPLE__)
+#define FFI_TARGET_SPECIFIC_VARIADIC
+#define FFI_EXTRA_CIF_FIELDS unsigned aarch64_nfixedargs
+#elif !defined(_M_ARM64)
+/* iOS and Windows reserve x18 for the system. Disable Go closures until
+ a new static chain is chosen. */
+#define FFI_GO_CLOSURES 1
+#endif
+
+#ifndef _M_ARM64
+/* No complex type on Windows */
+#define FFI_TARGET_HAS_COMPLEX_TYPE
+#endif
+
+#endif
+
+
+====================File: configs/aarch64-unknown-linux-android21/include/ffitarget.h====================
+/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd.
+
+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. */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
+#endif
+
+#ifndef LIBFFI_ASM
+#ifdef __ILP32__
+#define FFI_SIZEOF_ARG 8
+#define FFI_SIZEOF_JAVA_RAW 4
+typedef unsigned long long ffi_arg;
+typedef signed long long ffi_sarg;
+#elif defined(_M_ARM64)
+#define FFI_SIZEOF_ARG 8
+typedef unsigned long long ffi_arg;
+typedef signed long long ffi_sarg;
+#else
+typedef unsigned long ffi_arg;
+typedef signed long ffi_sarg;
+#endif
+
+typedef enum ffi_abi
+ {
+ FFI_FIRST_ABI = 0,
+ FFI_SYSV,
+ FFI_LAST_ABI,
+ FFI_DEFAULT_ABI = FFI_SYSV
+ } ffi_abi;
+#endif
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 1
+#define FFI_NATIVE_RAW_API 0
+
+#if defined (FFI_EXEC_TRAMPOLINE_TABLE) && FFI_EXEC_TRAMPOLINE_TABLE
+
+#ifdef __MACH__
+#define FFI_TRAMPOLINE_SIZE 16
+#define FFI_TRAMPOLINE_CLOSURE_OFFSET 16
+#else
+#error "No trampoline table implementation"
+#endif
+
+#else
+#define FFI_TRAMPOLINE_SIZE 24
+#define FFI_TRAMPOLINE_CLOSURE_OFFSET FFI_TRAMPOLINE_SIZE
+#endif
+
+#ifdef _M_ARM64
+#define FFI_EXTRA_CIF_FIELDS unsigned is_variadic
+#endif
+
+/* ---- Internal ---- */
+
+#if defined (__APPLE__)
+#define FFI_TARGET_SPECIFIC_VARIADIC
+#define FFI_EXTRA_CIF_FIELDS unsigned aarch64_nfixedargs
+#elif !defined(_M_ARM64)
+/* iOS and Windows reserve x18 for the system. Disable Go closures until
+ a new static chain is chosen. */
+#define FFI_GO_CLOSURES 1
+#endif
+
+#ifndef _M_ARM64
+/* No complex type on Windows */
+#define FFI_TARGET_HAS_COMPLEX_TYPE
+#endif
+
+#endif
+
+
+====================File: configs/aarch64-unknown-linux-gnu/include/ffitarget.h====================
+/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd.
+
+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. */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
+#endif
+
+#ifndef LIBFFI_ASM
+#ifdef __ILP32__
+#define FFI_SIZEOF_ARG 8
+#define FFI_SIZEOF_JAVA_RAW 4
+typedef unsigned long long ffi_arg;
+typedef signed long long ffi_sarg;
+#elif defined(_M_ARM64)
+#define FFI_SIZEOF_ARG 8
+typedef unsigned long long ffi_arg;
+typedef signed long long ffi_sarg;
+#else
+typedef unsigned long ffi_arg;
+typedef signed long ffi_sarg;
+#endif
+
+typedef enum ffi_abi
+ {
+ FFI_FIRST_ABI = 0,
+ FFI_SYSV,
+ FFI_LAST_ABI,
+ FFI_DEFAULT_ABI = FFI_SYSV
+ } ffi_abi;
+#endif
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 1
+#define FFI_NATIVE_RAW_API 0
+
+#if defined (FFI_EXEC_TRAMPOLINE_TABLE) && FFI_EXEC_TRAMPOLINE_TABLE
+
+#ifdef __MACH__
+#define FFI_TRAMPOLINE_SIZE 16
+#define FFI_TRAMPOLINE_CLOSURE_OFFSET 16
+#else
+#error "No trampoline table implementation"
+#endif
+
+#else
+#define FFI_TRAMPOLINE_SIZE 24
+#define FFI_TRAMPOLINE_CLOSURE_OFFSET FFI_TRAMPOLINE_SIZE
+#endif
+
+#ifdef _M_ARM64
+#define FFI_EXTRA_CIF_FIELDS unsigned is_variadic
+#endif
+
+/* ---- Internal ---- */
+
+#if defined (__APPLE__)
+#define FFI_TARGET_SPECIFIC_VARIADIC
+#define FFI_EXTRA_CIF_FIELDS unsigned aarch64_nfixedargs
+#elif !defined(_M_ARM64)
+/* iOS and Windows reserve x18 for the system. Disable Go closures until
+ a new static chain is chosen. */
+#define FFI_GO_CLOSURES 1
+#endif
+
+#ifndef _M_ARM64
+/* No complex type on Windows */
+#define FFI_TARGET_HAS_COMPLEX_TYPE
+#endif
+
+#endif
+
+
+====================File: configs/armv7-apple-iphoneos/include/ffitarget.h====================
+/* -----------------------------------------------------------------*-C-*-
+ ffitarget.h - Copyright (c) 2012 Anthony Green
+ Copyright (c) 2010 CodeSourcery
+ Copyright (c) 1996-2003 Red Hat, Inc.
+
+ Target configuration macros for ARM.
+
+ 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.
+
+ ----------------------------------------------------------------------- */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
+#endif
+
+#ifndef LIBFFI_ASM
+typedef unsigned long ffi_arg;
+typedef signed long ffi_sarg;
+
+typedef enum ffi_abi {
+ FFI_FIRST_ABI = 0,
+ FFI_SYSV,
+ FFI_VFP,
+ FFI_LAST_ABI,
+#if defined(__ARM_PCS_VFP) || defined(_M_ARM)
+ FFI_DEFAULT_ABI = FFI_VFP,
+#else
+ FFI_DEFAULT_ABI = FFI_SYSV,
+#endif
+} ffi_abi;
+#endif
+
+#define FFI_EXTRA_CIF_FIELDS \
+ int vfp_used; \
+ unsigned short vfp_reg_free, vfp_nargs; \
+ signed char vfp_args[16] \
+
+#define FFI_TARGET_SPECIFIC_VARIADIC
+#ifndef _M_ARM
+#define FFI_TARGET_HAS_COMPLEX_TYPE
+#endif
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 1
+#define FFI_GO_CLOSURES 1
+#define FFI_NATIVE_RAW_API 0
+
+#if defined (FFI_EXEC_TRAMPOLINE_TABLE) && FFI_EXEC_TRAMPOLINE_TABLE
+
+#ifdef __MACH__
+#define FFI_TRAMPOLINE_SIZE 12
+#define FFI_TRAMPOLINE_CLOSURE_OFFSET 8
+#else
+#error "No trampoline table implementation"
+#endif
+
+#else
+#ifdef _MSC_VER
+#define FFI_TRAMPOLINE_SIZE 16
+#define FFI_TRAMPOLINE_CLOSURE_FUNCTION 12
+#else
+#define FFI_TRAMPOLINE_SIZE 12
+#endif
+#define FFI_TRAMPOLINE_CLOSURE_OFFSET FFI_TRAMPOLINE_SIZE
+#endif
+
+#endif
+
+
+====================File: configs/armv7a-unknown-linux-androideabi16/include/ffitarget.h====================
+/* -----------------------------------------------------------------*-C-*-
+ ffitarget.h - Copyright (c) 2012 Anthony Green
+ Copyright (c) 2010 CodeSourcery
+ Copyright (c) 1996-2003 Red Hat, Inc.
+
+ Target configuration macros for ARM.
+
+ 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.
+
+ ----------------------------------------------------------------------- */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
+#endif
+
+#ifndef LIBFFI_ASM
+typedef unsigned long ffi_arg;
+typedef signed long ffi_sarg;
+
+typedef enum ffi_abi {
+ FFI_FIRST_ABI = 0,
+ FFI_SYSV,
+ FFI_VFP,
+ FFI_LAST_ABI,
+#if defined(__ARM_PCS_VFP) || defined(_M_ARM)
+ FFI_DEFAULT_ABI = FFI_VFP,
+#else
+ FFI_DEFAULT_ABI = FFI_SYSV,
+#endif
+} ffi_abi;
+#endif
+
+#define FFI_EXTRA_CIF_FIELDS \
+ int vfp_used; \
+ unsigned short vfp_reg_free, vfp_nargs; \
+ signed char vfp_args[16] \
+
+#define FFI_TARGET_SPECIFIC_VARIADIC
+#ifndef _M_ARM
+#define FFI_TARGET_HAS_COMPLEX_TYPE
+#endif
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 1
+#define FFI_GO_CLOSURES 1
+#define FFI_NATIVE_RAW_API 0
+
+#if defined (FFI_EXEC_TRAMPOLINE_TABLE) && FFI_EXEC_TRAMPOLINE_TABLE
+
+#ifdef __MACH__
+#define FFI_TRAMPOLINE_SIZE 12
+#define FFI_TRAMPOLINE_CLOSURE_OFFSET 8
+#else
+#error "No trampoline table implementation"
+#endif
+
+#else
+#ifdef _MSC_VER
+#define FFI_TRAMPOLINE_SIZE 16
+#define FFI_TRAMPOLINE_CLOSURE_FUNCTION 12
+#else
+#define FFI_TRAMPOLINE_SIZE 12
+#endif
+#define FFI_TRAMPOLINE_CLOSURE_OFFSET FFI_TRAMPOLINE_SIZE
+#endif
+
+#endif
+
+
+====================File: configs/armv7a-unknown-linux-gnueabihf/include/ffitarget.h====================
+/* -----------------------------------------------------------------*-C-*-
+ ffitarget.h - Copyright (c) 2012 Anthony Green
+ Copyright (c) 2010 CodeSourcery
+ Copyright (c) 1996-2003 Red Hat, Inc.
+
+ Target configuration macros for ARM.
+
+ 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.
+
+ ----------------------------------------------------------------------- */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
+#endif
+
+#ifndef LIBFFI_ASM
+typedef unsigned long ffi_arg;
+typedef signed long ffi_sarg;
+
+typedef enum ffi_abi {
+ FFI_FIRST_ABI = 0,
+ FFI_SYSV,
+ FFI_VFP,
+ FFI_LAST_ABI,
+#if defined(__ARM_PCS_VFP) || defined(_M_ARM)
+ FFI_DEFAULT_ABI = FFI_VFP,
+#else
+ FFI_DEFAULT_ABI = FFI_SYSV,
+#endif
+} ffi_abi;
+#endif
+
+#define FFI_EXTRA_CIF_FIELDS \
+ int vfp_used; \
+ unsigned short vfp_reg_free, vfp_nargs; \
+ signed char vfp_args[16] \
+
+#define FFI_TARGET_SPECIFIC_VARIADIC
+#ifndef _M_ARM
+#define FFI_TARGET_HAS_COMPLEX_TYPE
+#endif
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 1
+#define FFI_GO_CLOSURES 1
+#define FFI_NATIVE_RAW_API 0
+
+#if defined (FFI_EXEC_TRAMPOLINE_TABLE) && FFI_EXEC_TRAMPOLINE_TABLE
+
+#ifdef __MACH__
+#define FFI_TRAMPOLINE_SIZE 12
+#define FFI_TRAMPOLINE_CLOSURE_OFFSET 8
+#else
+#error "No trampoline table implementation"
+#endif
+
+#else
+#ifdef _MSC_VER
+#define FFI_TRAMPOLINE_SIZE 16
+#define FFI_TRAMPOLINE_CLOSURE_FUNCTION 12
+#else
+#define FFI_TRAMPOLINE_SIZE 12
+#endif
+#define FFI_TRAMPOLINE_CLOSURE_OFFSET FFI_TRAMPOLINE_SIZE
+#endif
+
+#endif
+
+
+====================File: configs/i386-apple-iphonesimulator/include/ffitarget.h====================
+/* -----------------------------------------------------------------*-C-*-
+ ffitarget.h - Copyright (c) 2012, 2014, 2018 Anthony Green
+ Copyright (c) 1996-2003, 2010 Red Hat, Inc.
+ Copyright (C) 2008 Free Software Foundation, Inc.
+
+ Target configuration macros for x86 and x86-64.
+
+ 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.
+
+ ----------------------------------------------------------------------- */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
+#endif
+
+/* ---- System specific configurations ----------------------------------- */
+
+/* For code common to all platforms on x86 and x86_64. */
+#define X86_ANY
+
+#if defined (X86_64) && defined (__i386__)
+#undef X86_64
+#define X86
+#endif
+
+#ifdef X86_WIN64
+#define FFI_SIZEOF_ARG 8
+#define USE_BUILTIN_FFS 0 /* not yet implemented in mingw-64 */
+#endif
+
+#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION
+#ifndef _MSC_VER
+#define FFI_TARGET_HAS_COMPLEX_TYPE
+#endif
+
+/* ---- Generic type definitions ----------------------------------------- */
+
+#ifndef LIBFFI_ASM
+#ifdef X86_WIN64
+#ifdef _MSC_VER
+typedef unsigned __int64 ffi_arg;
+typedef __int64 ffi_sarg;
+#else
+typedef unsigned long long ffi_arg;
+typedef long long ffi_sarg;
+#endif
+#else
+#if defined __x86_64__ && defined __ILP32__
+#define FFI_SIZEOF_ARG 8
+#define FFI_SIZEOF_JAVA_RAW 4
+typedef unsigned long long ffi_arg;
+typedef long long ffi_sarg;
+#else
+typedef unsigned long ffi_arg;
+typedef signed long ffi_sarg;
+#endif
+#endif
+
+typedef enum ffi_abi {
+#if defined(X86_WIN64)
+ FFI_FIRST_ABI = 0,
+ FFI_WIN64, /* sizeof(long double) == 8 - microsoft compilers */
+ FFI_GNUW64, /* sizeof(long double) == 16 - GNU compilers */
+ FFI_LAST_ABI,
+#ifdef __GNUC__
+ FFI_DEFAULT_ABI = FFI_GNUW64
+#else
+ FFI_DEFAULT_ABI = FFI_WIN64
+#endif
+
+#elif defined(X86_64) || (defined (__x86_64__) && defined (X86_DARWIN))
+ FFI_FIRST_ABI = 1,
+ FFI_UNIX64,
+ FFI_WIN64,
+ FFI_EFI64 = FFI_WIN64,
+ FFI_GNUW64,
+ FFI_LAST_ABI,
+ FFI_DEFAULT_ABI = FFI_UNIX64
+
+#elif defined(X86_WIN32)
+ FFI_FIRST_ABI = 0,
+ FFI_SYSV = 1,
+ FFI_STDCALL = 2,
+ FFI_THISCALL = 3,
+ FFI_FASTCALL = 4,
+ FFI_MS_CDECL = 5,
+ FFI_PASCAL = 6,
+ FFI_REGISTER = 7,
+ FFI_LAST_ABI,
+ FFI_DEFAULT_ABI = FFI_MS_CDECL
+#else
+ FFI_FIRST_ABI = 0,
+ FFI_SYSV = 1,
+ FFI_THISCALL = 3,
+ FFI_FASTCALL = 4,
+ FFI_STDCALL = 5,
+ FFI_PASCAL = 6,
+ FFI_REGISTER = 7,
+ FFI_MS_CDECL = 8,
+ FFI_LAST_ABI,
+ FFI_DEFAULT_ABI = FFI_SYSV
+#endif
+} ffi_abi;
+#endif
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 1
+#define FFI_GO_CLOSURES 1
+
+#define FFI_TYPE_SMALL_STRUCT_1B (FFI_TYPE_LAST + 1)
+#define FFI_TYPE_SMALL_STRUCT_2B (FFI_TYPE_LAST + 2)
+#define FFI_TYPE_SMALL_STRUCT_4B (FFI_TYPE_LAST + 3)
+#define FFI_TYPE_MS_STRUCT (FFI_TYPE_LAST + 4)
+
+#if defined (X86_64) || defined(X86_WIN64) \
+ || (defined (__x86_64__) && defined (X86_DARWIN))
+# define FFI_TRAMPOLINE_SIZE 24
+# define FFI_NATIVE_RAW_API 0
+#else
+# define FFI_TRAMPOLINE_SIZE 12
+# define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */
+#endif
+
+#endif
+
+
+
+====================File: configs/i386-microsoft-windows/include/ffitarget.h====================
+/* -----------------------------------------------------------------*-C-*-
+ ffitarget.h - Copyright (c) 2012, 2014, 2018 Anthony Green
+ Copyright (c) 1996-2003, 2010 Red Hat, Inc.
+ Copyright (C) 2008 Free Software Foundation, Inc.
+
+ Target configuration macros for x86 and x86-64.
+
+ 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.
+
+ ----------------------------------------------------------------------- */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
+#endif
+
+/* ---- System specific configurations ----------------------------------- */
+
+/* For code common to all platforms on x86 and x86_64. */
+#define X86_ANY
+
+#if defined (X86_64) && defined (__i386__)
+#undef X86_64
+#define X86
+#endif
+
+#ifdef X86_WIN64
+#define FFI_SIZEOF_ARG 8
+#define USE_BUILTIN_FFS 0 /* not yet implemented in mingw-64 */
+#endif
+
+#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION
+#ifndef _MSC_VER
+#define FFI_TARGET_HAS_COMPLEX_TYPE
+#endif
+
+/* ---- Generic type definitions ----------------------------------------- */
+
+#ifndef LIBFFI_ASM
+#ifdef X86_WIN64
+#ifdef _MSC_VER
+typedef unsigned __int64 ffi_arg;
+typedef __int64 ffi_sarg;
+#else
+typedef unsigned long long ffi_arg;
+typedef long long ffi_sarg;
+#endif
+#else
+#if defined __x86_64__ && defined __ILP32__
+#define FFI_SIZEOF_ARG 8
+#define FFI_SIZEOF_JAVA_RAW 4
+typedef unsigned long long ffi_arg;
+typedef long long ffi_sarg;
+#else
+typedef unsigned long ffi_arg;
+typedef signed long ffi_sarg;
+#endif
+#endif
+
+typedef enum ffi_abi {
+#if defined(X86_WIN64)
+ FFI_FIRST_ABI = 0,
+ FFI_WIN64, /* sizeof(long double) == 8 - microsoft compilers */
+ FFI_GNUW64, /* sizeof(long double) == 16 - GNU compilers */
+ FFI_LAST_ABI,
+#ifdef __GNUC__
+ FFI_DEFAULT_ABI = FFI_GNUW64
+#else
+ FFI_DEFAULT_ABI = FFI_WIN64
+#endif
+
+#elif defined(X86_64) || (defined (__x86_64__) && defined (X86_DARWIN))
+ FFI_FIRST_ABI = 1,
+ FFI_UNIX64,
+ FFI_WIN64,
+ FFI_EFI64 = FFI_WIN64,
+ FFI_GNUW64,
+ FFI_LAST_ABI,
+ FFI_DEFAULT_ABI = FFI_UNIX64
+
+#elif defined(X86_WIN32)
+ FFI_FIRST_ABI = 0,
+ FFI_SYSV = 1,
+ FFI_STDCALL = 2,
+ FFI_THISCALL = 3,
+ FFI_FASTCALL = 4,
+ FFI_MS_CDECL = 5,
+ FFI_PASCAL = 6,
+ FFI_REGISTER = 7,
+ FFI_LAST_ABI,
+ FFI_DEFAULT_ABI = FFI_MS_CDECL
+#else
+ FFI_FIRST_ABI = 0,
+ FFI_SYSV = 1,
+ FFI_THISCALL = 3,
+ FFI_FASTCALL = 4,
+ FFI_STDCALL = 5,
+ FFI_PASCAL = 6,
+ FFI_REGISTER = 7,
+ FFI_MS_CDECL = 8,
+ FFI_LAST_ABI,
+ FFI_DEFAULT_ABI = FFI_SYSV
+#endif
+} ffi_abi;
+#endif
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 1
+#define FFI_GO_CLOSURES 1
+
+#define FFI_TYPE_SMALL_STRUCT_1B (FFI_TYPE_LAST + 1)
+#define FFI_TYPE_SMALL_STRUCT_2B (FFI_TYPE_LAST + 2)
+#define FFI_TYPE_SMALL_STRUCT_4B (FFI_TYPE_LAST + 3)
+#define FFI_TYPE_MS_STRUCT (FFI_TYPE_LAST + 4)
+
+#if defined (X86_64) || defined(X86_WIN64) \
+ || (defined (__x86_64__) && defined (X86_DARWIN))
+/* 4 bytes of ENDBR64 + 7 bytes of LEA + 6 bytes of JMP + 7 bytes of NOP
+ + 8 bytes of pointer. */
+# define FFI_TRAMPOLINE_SIZE 32
+# define FFI_NATIVE_RAW_API 0
+#else
+/* 4 bytes of ENDBR32 + 5 bytes of MOV + 5 bytes of JMP + 2 unused
+ bytes. */
+# define FFI_TRAMPOLINE_SIZE 16
+# define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */
+#endif
+
+#if !defined(GENERATE_LIBFFI_MAP) && defined(__ASSEMBLER__) \
+ && defined(__CET__)
+# include <cet.h>
+# define _CET_NOTRACK notrack
+#else
+# define _CET_ENDBR
+# define _CET_NOTRACK
+#endif
+
+#endif
+
+
+
+====================File: configs/i686-pc-linux-android16/include/ffitarget.h====================
+/* -----------------------------------------------------------------*-C-*-
+ ffitarget.h - Copyright (c) 2012, 2014, 2018 Anthony Green
+ Copyright (c) 1996-2003, 2010 Red Hat, Inc.
+ Copyright (C) 2008 Free Software Foundation, Inc.
+
+ Target configuration macros for x86 and x86-64.
+
+ 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.
+
+ ----------------------------------------------------------------------- */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
+#endif
+
+/* ---- System specific configurations ----------------------------------- */
+
+/* For code common to all platforms on x86 and x86_64. */
+#define X86_ANY
+
+#if defined (X86_64) && defined (__i386__)
+#undef X86_64
+#define X86
+#endif
+
+#ifdef X86_WIN64
+#define FFI_SIZEOF_ARG 8
+#define USE_BUILTIN_FFS 0 /* not yet implemented in mingw-64 */
+#endif
+
+#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION
+#ifndef _MSC_VER
+#define FFI_TARGET_HAS_COMPLEX_TYPE
+#endif
+
+/* ---- Generic type definitions ----------------------------------------- */
+
+#ifndef LIBFFI_ASM
+#ifdef X86_WIN64
+#ifdef _MSC_VER
+typedef unsigned __int64 ffi_arg;
+typedef __int64 ffi_sarg;
+#else
+typedef unsigned long long ffi_arg;
+typedef long long ffi_sarg;
+#endif
+#else
+#if defined __x86_64__ && defined __ILP32__
+#define FFI_SIZEOF_ARG 8
+#define FFI_SIZEOF_JAVA_RAW 4
+typedef unsigned long long ffi_arg;
+typedef long long ffi_sarg;
+#else
+typedef unsigned long ffi_arg;
+typedef signed long ffi_sarg;
+#endif
+#endif
+
+typedef enum ffi_abi {
+#if defined(X86_WIN64)
+ FFI_FIRST_ABI = 0,
+ FFI_WIN64, /* sizeof(long double) == 8 - microsoft compilers */
+ FFI_GNUW64, /* sizeof(long double) == 16 - GNU compilers */
+ FFI_LAST_ABI,
+#ifdef __GNUC__
+ FFI_DEFAULT_ABI = FFI_GNUW64
+#else
+ FFI_DEFAULT_ABI = FFI_WIN64
+#endif
+
+#elif defined(X86_64) || (defined (__x86_64__) && defined (X86_DARWIN))
+ FFI_FIRST_ABI = 1,
+ FFI_UNIX64,
+ FFI_WIN64,
+ FFI_EFI64 = FFI_WIN64,
+ FFI_GNUW64,
+ FFI_LAST_ABI,
+ FFI_DEFAULT_ABI = FFI_UNIX64
+
+#elif defined(X86_WIN32)
+ FFI_FIRST_ABI = 0,
+ FFI_SYSV = 1,
+ FFI_STDCALL = 2,
+ FFI_THISCALL = 3,
+ FFI_FASTCALL = 4,
+ FFI_MS_CDECL = 5,
+ FFI_PASCAL = 6,
+ FFI_REGISTER = 7,
+ FFI_LAST_ABI,
+ FFI_DEFAULT_ABI = FFI_MS_CDECL
+#else
+ FFI_FIRST_ABI = 0,
+ FFI_SYSV = 1,
+ FFI_THISCALL = 3,
+ FFI_FASTCALL = 4,
+ FFI_STDCALL = 5,
+ FFI_PASCAL = 6,
+ FFI_REGISTER = 7,
+ FFI_MS_CDECL = 8,
+ FFI_LAST_ABI,
+ FFI_DEFAULT_ABI = FFI_SYSV
+#endif
+} ffi_abi;
+#endif
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 1
+#define FFI_GO_CLOSURES 1
+
+#define FFI_TYPE_SMALL_STRUCT_1B (FFI_TYPE_LAST + 1)
+#define FFI_TYPE_SMALL_STRUCT_2B (FFI_TYPE_LAST + 2)
+#define FFI_TYPE_SMALL_STRUCT_4B (FFI_TYPE_LAST + 3)
+#define FFI_TYPE_MS_STRUCT (FFI_TYPE_LAST + 4)
+
+#if defined (X86_64) || defined(X86_WIN64) \
+ || (defined (__x86_64__) && defined (X86_DARWIN))
+# define FFI_TRAMPOLINE_SIZE 24
+# define FFI_NATIVE_RAW_API 0
+#else
+# define FFI_TRAMPOLINE_SIZE 12
+# define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */
+#endif
+
+#endif
+
+
+
+====================File: configs/powerpc64le-unknown-linux-gnu/include/ffitarget.h====================
+/* -----------------------------------------------------------------*-C-*-
+ ffitarget.h - Copyright (c) 2012 Anthony Green
+ Copyright (C) 2007, 2008, 2010 Free Software Foundation, Inc
+ Copyright (c) 1996-2003 Red Hat, Inc.
+
+ Target configuration macros for PowerPC.
+
+ 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.
+
+ ----------------------------------------------------------------------- */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
+#endif
+
+/* ---- System specific configurations ----------------------------------- */
+
+#if defined (POWERPC) && defined (__powerpc64__) /* linux64 */
+#ifndef POWERPC64
+#define POWERPC64
+#endif
+#elif defined (POWERPC_DARWIN) && defined (__ppc64__) /* Darwin64 */
+#ifndef POWERPC64
+#define POWERPC64
+#endif
+#ifndef POWERPC_DARWIN64
+#define POWERPC_DARWIN64
+#endif
+#elif defined (POWERPC_AIX) && defined (__64BIT__) /* AIX64 */
+#ifndef POWERPC64
+#define POWERPC64
+#endif
+#endif
+
+#ifndef LIBFFI_ASM
+typedef unsigned long ffi_arg;
+typedef signed long ffi_sarg;
+
+typedef enum ffi_abi {
+ FFI_FIRST_ABI = 0,
+
+#if defined (POWERPC_AIX)
+ FFI_AIX,
+ FFI_DARWIN,
+ FFI_DEFAULT_ABI = FFI_AIX,
+ FFI_LAST_ABI
+
+#elif defined (POWERPC_DARWIN)
+ FFI_AIX,
+ FFI_DARWIN,
+ FFI_DEFAULT_ABI = FFI_DARWIN,
+ FFI_LAST_ABI
+
+#else
+ /* The FFI_COMPAT values are used by old code. Since libffi may be
+ a shared library we have to support old values for backwards
+ compatibility. */
+ FFI_COMPAT_SYSV,
+ FFI_COMPAT_GCC_SYSV,
+ FFI_COMPAT_LINUX64,
+ FFI_COMPAT_LINUX,
+ FFI_COMPAT_LINUX_SOFT_FLOAT,
+
+# if defined (POWERPC64)
+ /* This bit, always set in new code, must not be set in any of the
+ old FFI_COMPAT values that might be used for 64-bit linux. We
+ only need worry about FFI_COMPAT_LINUX64, but to be safe avoid
+ all old values. */
+ FFI_LINUX = 8,
+ /* This and following bits can reuse FFI_COMPAT values. */
+ FFI_LINUX_STRUCT_ALIGN = 1,
+ FFI_LINUX_LONG_DOUBLE_128 = 2,
+ FFI_LINUX_LONG_DOUBLE_IEEE128 = 4,
+ FFI_DEFAULT_ABI = (FFI_LINUX
+# ifdef __STRUCT_PARM_ALIGN__
+ | FFI_LINUX_STRUCT_ALIGN
+# endif
+# ifdef __LONG_DOUBLE_128__
+ | FFI_LINUX_LONG_DOUBLE_128
+# ifdef __LONG_DOUBLE_IEEE128__
+ | FFI_LINUX_LONG_DOUBLE_IEEE128
+# endif
+# endif
+ ),
+ FFI_LAST_ABI = 16
+
+# else
+ /* This bit, always set in new code, must not be set in any of the
+ old FFI_COMPAT values that might be used for 32-bit linux/sysv/bsd. */
+ FFI_SYSV = 8,
+ /* This and following bits can reuse FFI_COMPAT values. */
+ FFI_SYSV_SOFT_FLOAT = 1,
+ FFI_SYSV_STRUCT_RET = 2,
+ FFI_SYSV_IBM_LONG_DOUBLE = 4,
+ FFI_SYSV_LONG_DOUBLE_128 = 16,
+
+ FFI_DEFAULT_ABI = (FFI_SYSV
+# ifdef __NO_FPRS__
+ | FFI_SYSV_SOFT_FLOAT
+# endif
+# if (defined (__SVR4_STRUCT_RETURN) \
+ || defined (POWERPC_FREEBSD) && !defined (__AIX_STRUCT_RETURN))
+ | FFI_SYSV_STRUCT_RET
+# endif
+# if __LDBL_MANT_DIG__ == 106
+ | FFI_SYSV_IBM_LONG_DOUBLE
+# endif
+# ifdef __LONG_DOUBLE_128__
+ | FFI_SYSV_LONG_DOUBLE_128
+# endif
+ ),
+ FFI_LAST_ABI = 32
+# endif
+#endif
+
+} ffi_abi;
+#endif
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 1
+#define FFI_NATIVE_RAW_API 0
+#if defined (POWERPC) || defined (POWERPC_FREEBSD)
+# define FFI_GO_CLOSURES 1
+# define FFI_TARGET_SPECIFIC_VARIADIC 1
+# define FFI_EXTRA_CIF_FIELDS unsigned nfixedargs
+#endif
+#if defined (POWERPC_AIX)
+# define FFI_GO_CLOSURES 1
+#endif
+
+/* ppc_closure.S and linux64_closure.S expect this. */
+#define FFI_PPC_TYPE_LAST FFI_TYPE_POINTER
+
+/* We define additional types below. If generic types are added that
+ must be supported by powerpc libffi then it is likely that
+ FFI_PPC_TYPE_LAST needs increasing *and* the jump tables in
+ ppc_closure.S and linux64_closure.S be extended. */
+
+#if !(FFI_TYPE_LAST == FFI_PPC_TYPE_LAST \
+ || (FFI_TYPE_LAST == FFI_TYPE_COMPLEX \
+ && !defined FFI_TARGET_HAS_COMPLEX_TYPE))
+# error "You likely have a broken powerpc libffi"
+#endif
+
+/* Needed for soft-float long-double-128 support. */
+#define FFI_TYPE_UINT128 (FFI_PPC_TYPE_LAST + 1)
+
+/* Needed for FFI_SYSV small structure returns. */
+#define FFI_SYSV_TYPE_SMALL_STRUCT (FFI_PPC_TYPE_LAST + 2)
+
+/* Used by ELFv2 for homogenous structure returns. */
+#define FFI_V2_TYPE_VECTOR (FFI_PPC_TYPE_LAST + 1)
+#define FFI_V2_TYPE_VECTOR_HOMOG (FFI_PPC_TYPE_LAST + 2)
+#define FFI_V2_TYPE_FLOAT_HOMOG (FFI_PPC_TYPE_LAST + 3)
+#define FFI_V2_TYPE_DOUBLE_HOMOG (FFI_PPC_TYPE_LAST + 4)
+#define FFI_V2_TYPE_SMALL_STRUCT (FFI_PPC_TYPE_LAST + 5)
+
+#if _CALL_ELF == 2
+# define FFI_TRAMPOLINE_SIZE 32
+#else
+# if defined(POWERPC64) || defined(POWERPC_AIX)
+# if defined(POWERPC_DARWIN64)
+# define FFI_TRAMPOLINE_SIZE 48
+# else
+# define FFI_TRAMPOLINE_SIZE 24
+# endif
+# else /* POWERPC || POWERPC_AIX */
+# define FFI_TRAMPOLINE_SIZE 40
+# endif
+#endif
+
+#ifndef LIBFFI_ASM
+#if defined(POWERPC_DARWIN) || defined(POWERPC_AIX)
+struct ffi_aix_trampoline_struct {
+ void * code_pointer; /* Pointer to ffi_closure_ASM */
+ void * toc; /* TOC */
+ void * static_chain; /* Pointer to closure */
+};
+#endif
+#endif
+
+#endif
+
+
+====================File: configs/x86_64-apple-iphonesimulator/include/ffitarget.h====================
+/* -----------------------------------------------------------------*-C-*-
+ ffitarget.h - Copyright (c) 2012, 2014, 2018 Anthony Green
+ Copyright (c) 1996-2003, 2010 Red Hat, Inc.
+ Copyright (C) 2008 Free Software Foundation, Inc.
+
+ Target configuration macros for x86 and x86-64.
+
+ 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.
+
+ ----------------------------------------------------------------------- */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
+#endif
+
+/* ---- System specific configurations ----------------------------------- */
+
+/* For code common to all platforms on x86 and x86_64. */
+#define X86_ANY
+
+#if defined (X86_64) && defined (__i386__)
+#undef X86_64
+#define X86
+#endif
+
+#ifdef X86_WIN64
+#define FFI_SIZEOF_ARG 8
+#define USE_BUILTIN_FFS 0 /* not yet implemented in mingw-64 */
+#endif
+
+#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION
+#ifndef _MSC_VER
+#define FFI_TARGET_HAS_COMPLEX_TYPE
+#endif
+
+/* ---- Generic type definitions ----------------------------------------- */
+
+#ifndef LIBFFI_ASM
+#ifdef X86_WIN64
+#ifdef _MSC_VER
+typedef unsigned __int64 ffi_arg;
+typedef __int64 ffi_sarg;
+#else
+typedef unsigned long long ffi_arg;
+typedef long long ffi_sarg;
+#endif
+#else
+#if defined __x86_64__ && defined __ILP32__
+#define FFI_SIZEOF_ARG 8
+#define FFI_SIZEOF_JAVA_RAW 4
+typedef unsigned long long ffi_arg;
+typedef long long ffi_sarg;
+#else
+typedef unsigned long ffi_arg;
+typedef signed long ffi_sarg;
+#endif
+#endif
+
+typedef enum ffi_abi {
+#if defined(X86_WIN64)
+ FFI_FIRST_ABI = 0,
+ FFI_WIN64, /* sizeof(long double) == 8 - microsoft compilers */
+ FFI_GNUW64, /* sizeof(long double) == 16 - GNU compilers */
+ FFI_LAST_ABI,
+#ifdef __GNUC__
+ FFI_DEFAULT_ABI = FFI_GNUW64
+#else
+ FFI_DEFAULT_ABI = FFI_WIN64
+#endif
+
+#elif defined(X86_64) || (defined (__x86_64__) && defined (X86_DARWIN))
+ FFI_FIRST_ABI = 1,
+ FFI_UNIX64,
+ FFI_WIN64,
+ FFI_EFI64 = FFI_WIN64,
+ FFI_GNUW64,
+ FFI_LAST_ABI,
+ FFI_DEFAULT_ABI = FFI_UNIX64
+
+#elif defined(X86_WIN32)
+ FFI_FIRST_ABI = 0,
+ FFI_SYSV = 1,
+ FFI_STDCALL = 2,
+ FFI_THISCALL = 3,
+ FFI_FASTCALL = 4,
+ FFI_MS_CDECL = 5,
+ FFI_PASCAL = 6,
+ FFI_REGISTER = 7,
+ FFI_LAST_ABI,
+ FFI_DEFAULT_ABI = FFI_MS_CDECL
+#else
+ FFI_FIRST_ABI = 0,
+ FFI_SYSV = 1,
+ FFI_THISCALL = 3,
+ FFI_FASTCALL = 4,
+ FFI_STDCALL = 5,
+ FFI_PASCAL = 6,
+ FFI_REGISTER = 7,
+ FFI_MS_CDECL = 8,
+ FFI_LAST_ABI,
+ FFI_DEFAULT_ABI = FFI_SYSV
+#endif
+} ffi_abi;
+#endif
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 1
+#define FFI_GO_CLOSURES 1
+
+#define FFI_TYPE_SMALL_STRUCT_1B (FFI_TYPE_LAST + 1)
+#define FFI_TYPE_SMALL_STRUCT_2B (FFI_TYPE_LAST + 2)
+#define FFI_TYPE_SMALL_STRUCT_4B (FFI_TYPE_LAST + 3)
+#define FFI_TYPE_MS_STRUCT (FFI_TYPE_LAST + 4)
+
+#if defined (X86_64) || defined(X86_WIN64) \
+ || (defined (__x86_64__) && defined (X86_DARWIN))
+# define FFI_TRAMPOLINE_SIZE 24
+# define FFI_NATIVE_RAW_API 0
+#else
+# define FFI_TRAMPOLINE_SIZE 12
+# define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */
+#endif
+
+#endif
+
+
+
+====================File: configs/x86_64-apple-macosx/include/ffitarget.h====================
+/* -----------------------------------------------------------------*-C-*-
+ ffitarget.h - Copyright (c) 2012, 2014, 2018 Anthony Green
+ Copyright (c) 1996-2003, 2010 Red Hat, Inc.
+ Copyright (C) 2008 Free Software Foundation, Inc.
+
+ Target configuration macros for x86 and x86-64.
+
+ 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.
+
+ ----------------------------------------------------------------------- */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
+#endif
+
+/* ---- System specific configurations ----------------------------------- */
+
+/* For code common to all platforms on x86 and x86_64. */
+#define X86_ANY
+
+#if defined (X86_64) && defined (__i386__)
+#undef X86_64
+#define X86
+#endif
+
+#ifdef X86_WIN64
+#define FFI_SIZEOF_ARG 8
+#define USE_BUILTIN_FFS 0 /* not yet implemented in mingw-64 */
+#endif
+
+#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION
+#ifndef _MSC_VER
+#define FFI_TARGET_HAS_COMPLEX_TYPE
+#endif
+
+/* ---- Generic type definitions ----------------------------------------- */
+
+#ifndef LIBFFI_ASM
+#ifdef X86_WIN64
+#ifdef _MSC_VER
+typedef unsigned __int64 ffi_arg;
+typedef __int64 ffi_sarg;
+#else
+typedef unsigned long long ffi_arg;
+typedef long long ffi_sarg;
+#endif
+#else
+#if defined __x86_64__ && defined __ILP32__
+#define FFI_SIZEOF_ARG 8
+#define FFI_SIZEOF_JAVA_RAW 4
+typedef unsigned long long ffi_arg;
+typedef long long ffi_sarg;
+#else
+typedef unsigned long ffi_arg;
+typedef signed long ffi_sarg;
+#endif
+#endif
+
+typedef enum ffi_abi {
+#if defined(X86_WIN64)
+ FFI_FIRST_ABI = 0,
+ FFI_WIN64, /* sizeof(long double) == 8 - microsoft compilers */
+ FFI_GNUW64, /* sizeof(long double) == 16 - GNU compilers */
+ FFI_LAST_ABI,
+#ifdef __GNUC__
+ FFI_DEFAULT_ABI = FFI_GNUW64
+#else
+ FFI_DEFAULT_ABI = FFI_WIN64
+#endif
+
+#elif defined(X86_64) || (defined (__x86_64__) && defined (X86_DARWIN))
+ FFI_FIRST_ABI = 1,
+ FFI_UNIX64,
+ FFI_WIN64,
+ FFI_EFI64 = FFI_WIN64,
+ FFI_GNUW64,
+ FFI_LAST_ABI,
+ FFI_DEFAULT_ABI = FFI_UNIX64
+
+#elif defined(X86_WIN32)
+ FFI_FIRST_ABI = 0,
+ FFI_SYSV = 1,
+ FFI_STDCALL = 2,
+ FFI_THISCALL = 3,
+ FFI_FASTCALL = 4,
+ FFI_MS_CDECL = 5,
+ FFI_PASCAL = 6,
+ FFI_REGISTER = 7,
+ FFI_LAST_ABI,
+ FFI_DEFAULT_ABI = FFI_MS_CDECL
+#else
+ FFI_FIRST_ABI = 0,
+ FFI_SYSV = 1,
+ FFI_THISCALL = 3,
+ FFI_FASTCALL = 4,
+ FFI_STDCALL = 5,
+ FFI_PASCAL = 6,
+ FFI_REGISTER = 7,
+ FFI_MS_CDECL = 8,
+ FFI_LAST_ABI,
+ FFI_DEFAULT_ABI = FFI_SYSV
+#endif
+} ffi_abi;
+#endif
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 1
+#define FFI_GO_CLOSURES 1
+
+#define FFI_TYPE_SMALL_STRUCT_1B (FFI_TYPE_LAST + 1)
+#define FFI_TYPE_SMALL_STRUCT_2B (FFI_TYPE_LAST + 2)
+#define FFI_TYPE_SMALL_STRUCT_4B (FFI_TYPE_LAST + 3)
+#define FFI_TYPE_MS_STRUCT (FFI_TYPE_LAST + 4)
+
+#if defined (X86_64) || defined(X86_WIN64) \
+ || (defined (__x86_64__) && defined (X86_DARWIN))
+# define FFI_TRAMPOLINE_SIZE 24
+# define FFI_NATIVE_RAW_API 0
+#else
+# define FFI_TRAMPOLINE_SIZE 12
+# define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */
+#endif
+
+#endif
+
+
+
+====================File: configs/x86_64-microsoft-windows/include/ffitarget.h====================
+/* -----------------------------------------------------------------*-C-*-
+ ffitarget.h - Copyright (c) 2012, 2014, 2018 Anthony Green
+ Copyright (c) 1996-2003, 2010 Red Hat, Inc.
+ Copyright (C) 2008 Free Software Foundation, Inc.
+
+ Target configuration macros for x86 and x86-64.
+
+ 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.
+
+ ----------------------------------------------------------------------- */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
+#endif
+
+/* ---- System specific configurations ----------------------------------- */
+
+/* For code common to all platforms on x86 and x86_64. */
+#define X86_ANY
+
+#if defined (X86_64) && defined (__i386__)
+#undef X86_64
+#define X86
+#endif
+
+#ifdef X86_WIN64
+#define FFI_SIZEOF_ARG 8
+#define USE_BUILTIN_FFS 0 /* not yet implemented in mingw-64 */
+#endif
+
+#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION
+#ifndef _MSC_VER
+#define FFI_TARGET_HAS_COMPLEX_TYPE
+#endif
+
+/* ---- Generic type definitions ----------------------------------------- */
+
+#ifndef LIBFFI_ASM
+#ifdef X86_WIN64
+#ifdef _MSC_VER
+typedef unsigned __int64 ffi_arg;
+typedef __int64 ffi_sarg;
+#else
+typedef unsigned long long ffi_arg;
+typedef long long ffi_sarg;
+#endif
+#else
+#if defined __x86_64__ && defined __ILP32__
+#define FFI_SIZEOF_ARG 8
+#define FFI_SIZEOF_JAVA_RAW 4
+typedef unsigned long long ffi_arg;
+typedef long long ffi_sarg;
+#else
+typedef unsigned long ffi_arg;
+typedef signed long ffi_sarg;
+#endif
+#endif
+
+typedef enum ffi_abi {
+#if defined(X86_WIN64)
+ FFI_FIRST_ABI = 0,
+ FFI_WIN64, /* sizeof(long double) == 8 - microsoft compilers */
+ FFI_GNUW64, /* sizeof(long double) == 16 - GNU compilers */
+ FFI_LAST_ABI,
+#ifdef __GNUC__
+ FFI_DEFAULT_ABI = FFI_GNUW64
+#else
+ FFI_DEFAULT_ABI = FFI_WIN64
+#endif
+
+#elif defined(X86_64) || (defined (__x86_64__) && defined (X86_DARWIN))
+ FFI_FIRST_ABI = 1,
+ FFI_UNIX64,
+ FFI_WIN64,
+ FFI_EFI64 = FFI_WIN64,
+ FFI_GNUW64,
+ FFI_LAST_ABI,
+ FFI_DEFAULT_ABI = FFI_UNIX64
+
+#elif defined(X86_WIN32)
+ FFI_FIRST_ABI = 0,
+ FFI_SYSV = 1,
+ FFI_STDCALL = 2,
+ FFI_THISCALL = 3,
+ FFI_FASTCALL = 4,
+ FFI_MS_CDECL = 5,
+ FFI_PASCAL = 6,
+ FFI_REGISTER = 7,
+ FFI_LAST_ABI,
+ FFI_DEFAULT_ABI = FFI_MS_CDECL
+#else
+ FFI_FIRST_ABI = 0,
+ FFI_SYSV = 1,
+ FFI_THISCALL = 3,
+ FFI_FASTCALL = 4,
+ FFI_STDCALL = 5,
+ FFI_PASCAL = 6,
+ FFI_REGISTER = 7,
+ FFI_MS_CDECL = 8,
+ FFI_LAST_ABI,
+ FFI_DEFAULT_ABI = FFI_SYSV
+#endif
+} ffi_abi;
+#endif
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 1
+#define FFI_GO_CLOSURES 1
+
+#define FFI_TYPE_SMALL_STRUCT_1B (FFI_TYPE_LAST + 1)
+#define FFI_TYPE_SMALL_STRUCT_2B (FFI_TYPE_LAST + 2)
+#define FFI_TYPE_SMALL_STRUCT_4B (FFI_TYPE_LAST + 3)
+#define FFI_TYPE_MS_STRUCT (FFI_TYPE_LAST + 4)
+
+#if defined (X86_64) || defined(X86_WIN64) \
+ || (defined (__x86_64__) && defined (X86_DARWIN))
+/* 4 bytes of ENDBR64 + 7 bytes of LEA + 6 bytes of JMP + 7 bytes of NOP
+ + 8 bytes of pointer. */
+# define FFI_TRAMPOLINE_SIZE 32
+# define FFI_NATIVE_RAW_API 0
+#else
+/* 4 bytes of ENDBR32 + 5 bytes of MOV + 5 bytes of JMP + 2 unused
+ bytes. */
+# define FFI_TRAMPOLINE_SIZE 16
+# define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */
+#endif
+
+#if !defined(GENERATE_LIBFFI_MAP) && defined(__ASSEMBLER__) \
+ && defined(__CET__)
+# include <cet.h>
+# define _CET_NOTRACK notrack
+#else
+# define _CET_ENDBR
+# define _CET_NOTRACK
+#endif
+
+#endif
+
+
+
+====================File: configs/x86_64-pc-linux-android21/include/ffitarget.h====================
+/* -----------------------------------------------------------------*-C-*-
+ ffitarget.h - Copyright (c) 2012, 2014, 2018 Anthony Green
+ Copyright (c) 1996-2003, 2010 Red Hat, Inc.
+ Copyright (C) 2008 Free Software Foundation, Inc.
+
+ Target configuration macros for x86 and x86-64.
+
+ 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.
+
+ ----------------------------------------------------------------------- */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
+#endif
+
+/* ---- System specific configurations ----------------------------------- */
+
+/* For code common to all platforms on x86 and x86_64. */
+#define X86_ANY
+
+#if defined (X86_64) && defined (__i386__)
+#undef X86_64
+#define X86
+#endif
+
+#ifdef X86_WIN64
+#define FFI_SIZEOF_ARG 8
+#define USE_BUILTIN_FFS 0 /* not yet implemented in mingw-64 */
+#endif
+
+#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION
+#ifndef _MSC_VER
+#define FFI_TARGET_HAS_COMPLEX_TYPE
+#endif
+
+/* ---- Generic type definitions ----------------------------------------- */
+
+#ifndef LIBFFI_ASM
+#ifdef X86_WIN64
+#ifdef _MSC_VER
+typedef unsigned __int64 ffi_arg;
+typedef __int64 ffi_sarg;
+#else
+typedef unsigned long long ffi_arg;
+typedef long long ffi_sarg;
+#endif
+#else
+#if defined __x86_64__ && defined __ILP32__
+#define FFI_SIZEOF_ARG 8
+#define FFI_SIZEOF_JAVA_RAW 4
+typedef unsigned long long ffi_arg;
+typedef long long ffi_sarg;
+#else
+typedef unsigned long ffi_arg;
+typedef signed long ffi_sarg;
+#endif
+#endif
+
+typedef enum ffi_abi {
+#if defined(X86_WIN64)
+ FFI_FIRST_ABI = 0,
+ FFI_WIN64, /* sizeof(long double) == 8 - microsoft compilers */
+ FFI_GNUW64, /* sizeof(long double) == 16 - GNU compilers */
+ FFI_LAST_ABI,
+#ifdef __GNUC__
+ FFI_DEFAULT_ABI = FFI_GNUW64
+#else
+ FFI_DEFAULT_ABI = FFI_WIN64
+#endif
+
+#elif defined(X86_64) || (defined (__x86_64__) && defined (X86_DARWIN))
+ FFI_FIRST_ABI = 1,
+ FFI_UNIX64,
+ FFI_WIN64,
+ FFI_EFI64 = FFI_WIN64,
+ FFI_GNUW64,
+ FFI_LAST_ABI,
+ FFI_DEFAULT_ABI = FFI_UNIX64
+
+#elif defined(X86_WIN32)
+ FFI_FIRST_ABI = 0,
+ FFI_SYSV = 1,
+ FFI_STDCALL = 2,
+ FFI_THISCALL = 3,
+ FFI_FASTCALL = 4,
+ FFI_MS_CDECL = 5,
+ FFI_PASCAL = 6,
+ FFI_REGISTER = 7,
+ FFI_LAST_ABI,
+ FFI_DEFAULT_ABI = FFI_MS_CDECL
+#else
+ FFI_FIRST_ABI = 0,
+ FFI_SYSV = 1,
+ FFI_THISCALL = 3,
+ FFI_FASTCALL = 4,
+ FFI_STDCALL = 5,
+ FFI_PASCAL = 6,
+ FFI_REGISTER = 7,
+ FFI_MS_CDECL = 8,
+ FFI_LAST_ABI,
+ FFI_DEFAULT_ABI = FFI_SYSV
+#endif
+} ffi_abi;
+#endif
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 1
+#define FFI_GO_CLOSURES 1
+
+#define FFI_TYPE_SMALL_STRUCT_1B (FFI_TYPE_LAST + 1)
+#define FFI_TYPE_SMALL_STRUCT_2B (FFI_TYPE_LAST + 2)
+#define FFI_TYPE_SMALL_STRUCT_4B (FFI_TYPE_LAST + 3)
+#define FFI_TYPE_MS_STRUCT (FFI_TYPE_LAST + 4)
+
+#if defined (X86_64) || defined(X86_WIN64) \
+ || (defined (__x86_64__) && defined (X86_DARWIN))
+# define FFI_TRAMPOLINE_SIZE 24
+# define FFI_NATIVE_RAW_API 0
+#else
+# define FFI_TRAMPOLINE_SIZE 12
+# define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */
+#endif
+
+#endif
+
+
+
+====================File: configs/x86_64-pc-linux-gnu/include/ffitarget.h====================
+/* -----------------------------------------------------------------*-C-*-
+ ffitarget.h - Copyright (c) 2012, 2014, 2018 Anthony Green
+ Copyright (c) 1996-2003, 2010 Red Hat, Inc.
+ Copyright (C) 2008 Free Software Foundation, Inc.
+
+ Target configuration macros for x86 and x86-64.
+
+ 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.
+
+ ----------------------------------------------------------------------- */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
+#endif
+
+/* ---- System specific configurations ----------------------------------- */
+
+/* For code common to all platforms on x86 and x86_64. */
+#define X86_ANY
+
+#if defined (X86_64) && defined (__i386__)
+#undef X86_64
+#define X86
+#endif
+
+#ifdef X86_WIN64
+#define FFI_SIZEOF_ARG 8
+#define USE_BUILTIN_FFS 0 /* not yet implemented in mingw-64 */
+#endif
+
+#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION
+#ifndef _MSC_VER
+#define FFI_TARGET_HAS_COMPLEX_TYPE
+#endif
+
+/* ---- Generic type definitions ----------------------------------------- */
+
+#ifndef LIBFFI_ASM
+#ifdef X86_WIN64
+#ifdef _MSC_VER
+typedef unsigned __int64 ffi_arg;
+typedef __int64 ffi_sarg;
+#else
+typedef unsigned long long ffi_arg;
+typedef long long ffi_sarg;
+#endif
+#else
+#if defined __x86_64__ && defined __ILP32__
+#define FFI_SIZEOF_ARG 8
+#define FFI_SIZEOF_JAVA_RAW 4
+typedef unsigned long long ffi_arg;
+typedef long long ffi_sarg;
+#else
+typedef unsigned long ffi_arg;
+typedef signed long ffi_sarg;
+#endif
+#endif
+
+typedef enum ffi_abi {
+#if defined(X86_WIN64)
+ FFI_FIRST_ABI = 0,
+ FFI_WIN64, /* sizeof(long double) == 8 - microsoft compilers */
+ FFI_GNUW64, /* sizeof(long double) == 16 - GNU compilers */
+ FFI_LAST_ABI,
+#ifdef __GNUC__
+ FFI_DEFAULT_ABI = FFI_GNUW64
+#else
+ FFI_DEFAULT_ABI = FFI_WIN64
+#endif
+
+#elif defined(X86_64) || (defined (__x86_64__) && defined (X86_DARWIN))
+ FFI_FIRST_ABI = 1,
+ FFI_UNIX64,
+ FFI_WIN64,
+ FFI_EFI64 = FFI_WIN64,
+ FFI_GNUW64,
+ FFI_LAST_ABI,
+ FFI_DEFAULT_ABI = FFI_UNIX64
+
+#elif defined(X86_WIN32)
+ FFI_FIRST_ABI = 0,
+ FFI_SYSV = 1,
+ FFI_STDCALL = 2,
+ FFI_THISCALL = 3,
+ FFI_FASTCALL = 4,
+ FFI_MS_CDECL = 5,
+ FFI_PASCAL = 6,
+ FFI_REGISTER = 7,
+ FFI_LAST_ABI,
+ FFI_DEFAULT_ABI = FFI_MS_CDECL
+#else
+ FFI_FIRST_ABI = 0,
+ FFI_SYSV = 1,
+ FFI_THISCALL = 3,
+ FFI_FASTCALL = 4,
+ FFI_STDCALL = 5,
+ FFI_PASCAL = 6,
+ FFI_REGISTER = 7,
+ FFI_MS_CDECL = 8,
+ FFI_LAST_ABI,
+ FFI_DEFAULT_ABI = FFI_SYSV
+#endif
+} ffi_abi;
+#endif
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 1
+#define FFI_GO_CLOSURES 1
+
+#define FFI_TYPE_SMALL_STRUCT_1B (FFI_TYPE_LAST + 1)
+#define FFI_TYPE_SMALL_STRUCT_2B (FFI_TYPE_LAST + 2)
+#define FFI_TYPE_SMALL_STRUCT_4B (FFI_TYPE_LAST + 3)
+#define FFI_TYPE_MS_STRUCT (FFI_TYPE_LAST + 4)
+
+#if defined (X86_64) || defined(X86_WIN64) \
+ || (defined (__x86_64__) && defined (X86_DARWIN))
+# define FFI_TRAMPOLINE_SIZE 24
+# define FFI_NATIVE_RAW_API 0
+#else
+# define FFI_TRAMPOLINE_SIZE 12
+# define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */
+#endif
+
+#endif
+
+
+
+====================File: src/aarch64/ffi.c====================
+/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd.
+
+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. */
+
+#if defined(__aarch64__) || defined(__arm64__)|| defined (_M_ARM64)
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <fficonfig.h>
+#include <ffi.h>
+#include <ffi_common.h>
+#include "internal.h"
+#ifdef _M_ARM64
+#include <windows.h> /* FlushInstructionCache */
+#endif
+
+/* Force FFI_TYPE_LONGDOUBLE to be different than FFI_TYPE_DOUBLE;
+ all further uses in this file will refer to the 128-bit type. */
+#if FFI_TYPE_DOUBLE != FFI_TYPE_LONGDOUBLE
+# if FFI_TYPE_LONGDOUBLE != 4
+# error FFI_TYPE_LONGDOUBLE out of date
+# endif
+#else
+# undef FFI_TYPE_LONGDOUBLE
+# define FFI_TYPE_LONGDOUBLE 4
+#endif
+
+union _d
+{
+ UINT64 d;
+ UINT32 s[2];
+};
+
+struct _v
+{
+ union _d d[2] __attribute__((aligned(16)));
+};
+
+struct call_context
+{
+ struct _v v[N_V_ARG_REG];
+ UINT64 x[N_X_ARG_REG];
+};
+
+#if FFI_EXEC_TRAMPOLINE_TABLE
+
+#ifdef __MACH__
+#include <mach/vm_param.h>
+#endif
+
+#else
+
+#if defined (__clang__) && defined (__APPLE__)
+extern void sys_icache_invalidate (void *start, size_t len);
+#endif
+
+static inline void
+ffi_clear_cache (void *start, void *end)
+{
+#if defined (__clang__) && defined (__APPLE__)
+ sys_icache_invalidate (start, (char *)end - (char *)start);
+#elif defined (__GNUC__)
+ __builtin___clear_cache (start, end);
+#elif defined (_M_ARM64)
+ FlushInstructionCache(GetCurrentProcess(), start, (char*)end - (char*)start);
+#else
+#error "Missing builtin to flush instruction cache"
+#endif
+}
+
+#endif
+
+/* A subroutine of is_vfp_type. Given a structure type, return the type code
+ of the first non-structure element. Recurse for structure elements.
+ Return -1 if the structure is in fact empty, i.e. no nested elements. */
+
+static int
+is_hfa0 (const ffi_type *ty)
+{
+ ffi_type **elements = ty->elements;
+ int i, ret = -1;
+
+ if (elements != NULL)
+ for (i = 0; elements[i]; ++i)
+ {
+ ret = elements[i]->type;
+ if (ret == FFI_TYPE_STRUCT || ret == FFI_TYPE_COMPLEX)
+ {
+ ret = is_hfa0 (elements[i]);
+ if (ret < 0)
+ continue;
+ }
+ break;
+ }
+
+ return ret;
+}
+
+/* A subroutine of is_vfp_type. Given a structure type, return true if all
+ of the non-structure elements are the same as CANDIDATE. */
+
+static int
+is_hfa1 (const ffi_type *ty, int candidate)
+{
+ ffi_type **elements = ty->elements;
+ int i;
+
+ if (elements != NULL)
+ for (i = 0; elements[i]; ++i)
+ {
+ int t = elements[i]->type;
+ if (t == FFI_TYPE_STRUCT || t == FFI_TYPE_COMPLEX)
+ {
+ if (!is_hfa1 (elements[i], candidate))
+ return 0;
+ }
+ else if (t != candidate)
+ return 0;
+ }
+
+ return 1;
+}
+
+/* Determine if TY may be allocated to the FP registers. This is both an
+ fp scalar type as well as an homogenous floating point aggregate (HFA).
+ That is, a structure consisting of 1 to 4 members of all the same type,
+ where that type is an fp scalar.
+
+ Returns non-zero iff TY is an HFA. The result is the AARCH64_RET_*
+ constant for the type. */
+
+static int
+is_vfp_type (const ffi_type *ty)
+{
+ ffi_type **elements;
+ int candidate, i;
+ size_t size, ele_count;
+
+ /* Quickest tests first. */
+ candidate = ty->type;
+ switch (candidate)
+ {
+ default:
+ return 0;
+ case FFI_TYPE_FLOAT:
+ case FFI_TYPE_DOUBLE:
+ case FFI_TYPE_LONGDOUBLE:
+ ele_count = 1;
+ goto done;
+ case FFI_TYPE_COMPLEX:
+ candidate = ty->elements[0]->type;
+ switch (candidate)
+ {
+ case FFI_TYPE_FLOAT:
+ case FFI_TYPE_DOUBLE:
+ case FFI_TYPE_LONGDOUBLE:
+ ele_count = 2;
+ goto done;
+ }
+ return 0;
+ case FFI_TYPE_STRUCT:
+ break;
+ }
+
+ /* No HFA types are smaller than 4 bytes, or larger than 64 bytes. */
+ size = ty->size;
+ if (size < 4 || size > 64)
+ return 0;
+
+ /* Find the type of the first non-structure member. */
+ elements = ty->elements;
+ candidate = elements[0]->type;
+ if (candidate == FFI_TYPE_STRUCT || candidate == FFI_TYPE_COMPLEX)
+ {
+ for (i = 0; ; ++i)
+ {
+ candidate = is_hfa0 (elements[i]);
+ if (candidate >= 0)
+ break;
+ }
+ }
+
+ /* If the first member is not a floating point type, it's not an HFA.
+ Also quickly re-check the size of the structure. */
+ switch (candidate)
+ {
+ case FFI_TYPE_FLOAT:
+ ele_count = size / sizeof(float);
+ if (size != ele_count * sizeof(float))
+ return 0;
+ break;
+ case FFI_TYPE_DOUBLE:
+ ele_count = size / sizeof(double);
+ if (size != ele_count * sizeof(double))
+ return 0;
+ break;
+ case FFI_TYPE_LONGDOUBLE:
+ ele_count = size / sizeof(long double);
+ if (size != ele_count * sizeof(long double))
+ return 0;
+ break;
+ default:
+ return 0;
+ }
+ if (ele_count > 4)
+ return 0;
+
+ /* Finally, make sure that all scalar elements are the same type. */
+ for (i = 0; elements[i]; ++i)
+ {
+ int t = elements[i]->type;
+ if (t == FFI_TYPE_STRUCT || t == FFI_TYPE_COMPLEX)
+ {
+ if (!is_hfa1 (elements[i], candidate))
+ return 0;
+ }
+ else if (t != candidate)
+ return 0;
+ }
+
+ /* All tests succeeded. Encode the result. */
+ done:
+ return candidate * 4 + (4 - (int)ele_count);
+}
+
+/* Representation of the procedure call argument marshalling
+ state.
+
+ The terse state variable names match the names used in the AARCH64
+ PCS. */
+
+struct arg_state
+{
+ unsigned ngrn; /* Next general-purpose register number. */
+ unsigned nsrn; /* Next vector register number. */
+ size_t nsaa; /* Next stack offset. */
+
+#if defined (__APPLE__)
+ unsigned allocating_variadic;
+#endif
+};
+
+/* Initialize a procedure call argument marshalling state. */
+static void
+arg_init (struct arg_state *state)
+{
+ state->ngrn = 0;
+ state->nsrn = 0;
+ state->nsaa = 0;
+#if defined (__APPLE__)
+ state->allocating_variadic = 0;
+#endif
+}
+
+/* Allocate an aligned slot on the stack and return a pointer to it. */
+static void *
+allocate_to_stack (struct arg_state *state, void *stack,
+ size_t alignment, size_t size)
+{
+ size_t nsaa = state->nsaa;
+
+ /* Round up the NSAA to the larger of 8 or the natural
+ alignment of the argument's type. */
+#if defined (__APPLE__)
+ if (state->allocating_variadic && alignment < 8)
+ alignment = 8;
+#else
+ if (alignment < 8)
+ alignment = 8;
+#endif
+
+ nsaa = FFI_ALIGN (nsaa, alignment);
+ state->nsaa = nsaa + size;
+
+ return (char *)stack + nsaa;
+}
+
+static ffi_arg
+extend_integer_type (void *source, int type)
+{
+ switch (type)
+ {
+ case FFI_TYPE_UINT8:
+ return *(UINT8 *) source;
+ case FFI_TYPE_SINT8:
+ return *(SINT8 *) source;
+ case FFI_TYPE_UINT16:
+ return *(UINT16 *) source;
+ case FFI_TYPE_SINT16:
+ return *(SINT16 *) source;
+ case FFI_TYPE_UINT32:
+ return *(UINT32 *) source;
+ case FFI_TYPE_INT:
+ case FFI_TYPE_SINT32:
+ return *(SINT32 *) source;
+ case FFI_TYPE_UINT64:
+ case FFI_TYPE_SINT64:
+ return *(UINT64 *) source;
+ break;
+ case FFI_TYPE_POINTER:
+ return *(uintptr_t *) source;
+ default:
+ abort();
+ }
+}
+
+#if defined(_MSC_VER)
+void extend_hfa_type (void *dest, void *src, int h);
+#else
+static void
+extend_hfa_type (void *dest, void *src, int h)
+{
+ ssize_t f = h - AARCH64_RET_S4;
+ void *x0;
+
+ asm volatile (
+ "adr %0, 0f\n"
+" add %0, %0, %1\n"
+" br %0\n"
+"0: ldp s16, s17, [%3]\n" /* S4 */
+" ldp s18, s19, [%3, #8]\n"
+" b 4f\n"
+" ldp s16, s17, [%3]\n" /* S3 */
+" ldr s18, [%3, #8]\n"
+" b 3f\n"
+" ldp s16, s17, [%3]\n" /* S2 */
+" b 2f\n"
+" nop\n"
+" ldr s16, [%3]\n" /* S1 */
+" b 1f\n"
+" nop\n"
+" ldp d16, d17, [%3]\n" /* D4 */
+" ldp d18, d19, [%3, #16]\n"
+" b 4f\n"
+" ldp d16, d17, [%3]\n" /* D3 */
+" ldr d18, [%3, #16]\n"
+" b 3f\n"
+" ldp d16, d17, [%3]\n" /* D2 */
+" b 2f\n"
+" nop\n"
+" ldr d16, [%3]\n" /* D1 */
+" b 1f\n"
+" nop\n"
+" ldp q16, q17, [%3]\n" /* Q4 */
+" ldp q18, q19, [%3, #32]\n"
+" b 4f\n"
+" ldp q16, q17, [%3]\n" /* Q3 */
+" ldr q18, [%3, #32]\n"
+" b 3f\n"
+" ldp q16, q17, [%3]\n" /* Q2 */
+" b 2f\n"
+" nop\n"
+" ldr q16, [%3]\n" /* Q1 */
+" b 1f\n"
+"4: str q19, [%2, #48]\n"
+"3: str q18, [%2, #32]\n"
+"2: str q17, [%2, #16]\n"
+"1: str q16, [%2]"
+ : "=&r"(x0)
+ : "r"(f * 12), "r"(dest), "r"(src)
+ : "memory", "v16", "v17", "v18", "v19");
+}
+#endif
+
+#if defined(_MSC_VER)
+void* compress_hfa_type (void *dest, void *src, int h);
+#else
+static void *
+compress_hfa_type (void *dest, void *reg, int h)
+{
+ switch (h)
+ {
+ case AARCH64_RET_S1:
+ if (dest == reg)
+ {
+#ifdef __AARCH64EB__
+ dest += 12;
+#endif
+ }
+ else
+ *(float *)dest = *(float *)reg;
+ break;
+ case AARCH64_RET_S2:
+ asm ("ldp q16, q17, [%1]\n\t"
+ "st2 { v16.s, v17.s }[0], [%0]"
+ : : "r"(dest), "r"(reg) : "memory", "v16", "v17");
+ break;
+ case AARCH64_RET_S3:
+ asm ("ldp q16, q17, [%1]\n\t"
+ "ldr q18, [%1, #32]\n\t"
+ "st3 { v16.s, v17.s, v18.s }[0], [%0]"
+ : : "r"(dest), "r"(reg) : "memory", "v16", "v17", "v18");
+ break;
+ case AARCH64_RET_S4:
+ asm ("ldp q16, q17, [%1]\n\t"
+ "ldp q18, q19, [%1, #32]\n\t"
+ "st4 { v16.s, v17.s, v18.s, v19.s }[0], [%0]"
+ : : "r"(dest), "r"(reg) : "memory", "v16", "v17", "v18", "v19");
+ break;
+
+ case AARCH64_RET_D1:
+ if (dest == reg)
+ {
+#ifdef __AARCH64EB__
+ dest += 8;
+#endif
+ }
+ else
+ *(double *)dest = *(double *)reg;
+ break;
+ case AARCH64_RET_D2:
+ asm ("ldp q16, q17, [%1]\n\t"
+ "st2 { v16.d, v17.d }[0], [%0]"
+ : : "r"(dest), "r"(reg) : "memory", "v16", "v17");
+ break;
+ case AARCH64_RET_D3:
+ asm ("ldp q16, q17, [%1]\n\t"
+ "ldr q18, [%1, #32]\n\t"
+ "st3 { v16.d, v17.d, v18.d }[0], [%0]"
+ : : "r"(dest), "r"(reg) : "memory", "v16", "v17", "v18");
+ break;
+ case AARCH64_RET_D4:
+ asm ("ldp q16, q17, [%1]\n\t"
+ "ldp q18, q19, [%1, #32]\n\t"
+ "st4 { v16.d, v17.d, v18.d, v19.d }[0], [%0]"
+ : : "r"(dest), "r"(reg) : "memory", "v16", "v17", "v18", "v19");
+ break;
+
+ default:
+ if (dest != reg)
+ return memcpy (dest, reg, 16 * (4 - (h & 3)));
+ break;
+ }
+ return dest;
+}
+#endif
+
+/* Either allocate an appropriate register for the argument type, or if
+ none are available, allocate a stack slot and return a pointer
+ to the allocated space. */
+
+static void *
+allocate_int_to_reg_or_stack (struct call_context *context,
+ struct arg_state *state,
+ void *stack, size_t size)
+{
+ if (state->ngrn < N_X_ARG_REG)
+ return &context->x[state->ngrn++];
+
+ state->ngrn = N_X_ARG_REG;
+ return allocate_to_stack (state, stack, size, size);
+}
+
+ffi_status FFI_HIDDEN
+ffi_prep_cif_machdep (ffi_cif *cif)
+{
+ ffi_type *rtype = cif->rtype;
+ size_t bytes = cif->bytes;
+ int flags, i, n;
+
+ switch (rtype->type)
+ {
+ case FFI_TYPE_VOID:
+ flags = AARCH64_RET_VOID;
+ break;
+ case FFI_TYPE_UINT8:
+ flags = AARCH64_RET_UINT8;
+ break;
+ case FFI_TYPE_UINT16:
+ flags = AARCH64_RET_UINT16;
+ break;
+ case FFI_TYPE_UINT32:
+ flags = AARCH64_RET_UINT32;
+ break;
+ case FFI_TYPE_SINT8:
+ flags = AARCH64_RET_SINT8;
+ break;
+ case FFI_TYPE_SINT16:
+ flags = AARCH64_RET_SINT16;
+ break;
+ case FFI_TYPE_INT:
+ case FFI_TYPE_SINT32:
+ flags = AARCH64_RET_SINT32;
+ break;
+ case FFI_TYPE_SINT64:
+ case FFI_TYPE_UINT64:
+ flags = AARCH64_RET_INT64;
+ break;
+ case FFI_TYPE_POINTER:
+ flags = (sizeof(void *) == 4 ? AARCH64_RET_UINT32 : AARCH64_RET_INT64);
+ break;
+
+ case FFI_TYPE_FLOAT:
+ case FFI_TYPE_DOUBLE:
+ case FFI_TYPE_LONGDOUBLE:
+ case FFI_TYPE_STRUCT:
+ case FFI_TYPE_COMPLEX:
+ flags = is_vfp_type (rtype);
+ if (flags == 0)
+ {
+ size_t s = rtype->size;
+ if (s > 16)
+ {
+ flags = AARCH64_RET_VOID | AARCH64_RET_IN_MEM;
+ bytes += 8;
+ }
+ else if (s == 16)
+ flags = AARCH64_RET_INT128;
+ else if (s == 8)
+ flags = AARCH64_RET_INT64;
+ else
+ flags = AARCH64_RET_INT128 | AARCH64_RET_NEED_COPY;
+ }
+ break;
+
+ default:
+ abort();
+ }
+
+ for (i = 0, n = cif->nargs; i < n; i++)
+ if (is_vfp_type (cif->arg_types[i]))
+ {
+ flags |= AARCH64_FLAG_ARG_V;
+ break;
+ }
+
+ /* Round the stack up to a multiple of the stack alignment requirement. */
+ cif->bytes = (unsigned) FFI_ALIGN(bytes, 16);
+ cif->flags = flags;
+#if defined (__APPLE__)
+ cif->aarch64_nfixedargs = 0;
+#endif
+
+ return FFI_OK;
+}
+
+#if defined (__APPLE__)
+/* Perform Apple-specific cif processing for variadic calls */
+ffi_status FFI_HIDDEN
+ffi_prep_cif_machdep_var(ffi_cif *cif, unsigned int nfixedargs,
+ unsigned int ntotalargs)
+{
+ ffi_status status = ffi_prep_cif_machdep (cif);
+ cif->aarch64_nfixedargs = nfixedargs;
+ return status;
+}
+#endif /* __APPLE__ */
+
+extern void ffi_call_SYSV (struct call_context *context, void *frame,
+ void (*fn)(void), void *rvalue, int flags,
+ void *closure) FFI_HIDDEN;
+
+/* Call a function with the provided arguments and capture the return
+ value. */
+static void
+ffi_call_int (ffi_cif *cif, void (*fn)(void), void *orig_rvalue,
+ void **avalue, void *closure)
+{
+ struct call_context *context;
+ void *stack, *frame, *rvalue;
+ struct arg_state state;
+ size_t stack_bytes, rtype_size, rsize;
+ int i, nargs, flags;
+ ffi_type *rtype;
+
+ flags = cif->flags;
+ rtype = cif->rtype;
+ rtype_size = rtype->size;
+ stack_bytes = cif->bytes;
+
+ /* If the target function returns a structure via hidden pointer,
+ then we cannot allow a null rvalue. Otherwise, mash a null
+ rvalue to void return type. */
+ rsize = 0;
+ if (flags & AARCH64_RET_IN_MEM)
+ {
+ if (orig_rvalue == NULL)
+ rsize = rtype_size;
+ }
+ else if (orig_rvalue == NULL)
+ flags &= AARCH64_FLAG_ARG_V;
+ else if (flags & AARCH64_RET_NEED_COPY)
+ rsize = 16;
+
+ /* Allocate consectutive stack for everything we'll need. */
+ context = alloca (sizeof(struct call_context) + stack_bytes + 32 + rsize);
+ stack = context + 1;
+ frame = (void*)((uintptr_t)stack + (uintptr_t)stack_bytes);
+ rvalue = (rsize ? (void*)((uintptr_t)frame + 32) : orig_rvalue);
+
+ arg_init (&state);
+ for (i = 0, nargs = cif->nargs; i < nargs; i++)
+ {
+ ffi_type *ty = cif->arg_types[i];
+ size_t s = ty->size;
+ void *a = avalue[i];
+ int h, t;
+
+ t = ty->type;
+ switch (t)
+ {
+ case FFI_TYPE_VOID:
+ FFI_ASSERT (0);
+ break;
+
+ /* If the argument is a basic type the argument is allocated to an
+ appropriate register, or if none are available, to the stack. */
+ case FFI_TYPE_INT:
+ case FFI_TYPE_UINT8:
+ case FFI_TYPE_SINT8:
+ case FFI_TYPE_UINT16:
+ case FFI_TYPE_SINT16:
+ case FFI_TYPE_UINT32:
+ case FFI_TYPE_SINT32:
+ case FFI_TYPE_UINT64:
+ case FFI_TYPE_SINT64:
+ case FFI_TYPE_POINTER:
+ do_pointer:
+ {
+ ffi_arg ext = extend_integer_type (a, t);
+ if (state.ngrn < N_X_ARG_REG)
+ context->x[state.ngrn++] = ext;
+ else
+ {
+ void *d = allocate_to_stack (&state, stack, ty->alignment, s);
+ state.ngrn = N_X_ARG_REG;
+ /* Note that the default abi extends each argument
+ to a full 64-bit slot, while the iOS abi allocates
+ only enough space. */
+#ifdef __APPLE__
+ memcpy(d, a, s);
+#else
+ *(ffi_arg *)d = ext;
+#endif
+ }
+ }
+ break;
+
+ case FFI_TYPE_FLOAT:
+ case FFI_TYPE_DOUBLE:
+ case FFI_TYPE_LONGDOUBLE:
+ case FFI_TYPE_STRUCT:
+ case FFI_TYPE_COMPLEX:
+ {
+ void *dest;
+
+ h = is_vfp_type (ty);
+ if (h)
+ {
+ int elems = 4 - (h & 3);
+#ifdef _M_ARM64 /* for handling armasm calling convention */
+ if (cif->is_variadic)
+ {
+ if (state.ngrn + elems <= N_X_ARG_REG)
+ {
+ dest = &context->x[state.ngrn];
+ state.ngrn += elems;
+ extend_hfa_type(dest, a, h);
+ break;
+ }
+ state.nsrn = N_X_ARG_REG;
+ dest = allocate_to_stack(&state, stack, ty->alignment, s);
+ }
+ else
+ {
+#endif /* for handling armasm calling convention */
+ if (state.nsrn + elems <= N_V_ARG_REG)
+ {
+ dest = &context->v[state.nsrn];
+ state.nsrn += elems;
+ extend_hfa_type (dest, a, h);
+ break;
+ }
+ state.nsrn = N_V_ARG_REG;
+ dest = allocate_to_stack (&state, stack, ty->alignment, s);
+#ifdef _M_ARM64 /* for handling armasm calling convention */
+ }
+#endif /* for handling armasm calling convention */
+ }
+ else if (s > 16)
+ {
+ /* If the argument is a composite type that is larger than 16
+ bytes, then the argument has been copied to memory, and
+ the argument is replaced by a pointer to the copy. */
+ a = &avalue[i];
+ t = FFI_TYPE_POINTER;
+ s = sizeof (void *);
+ goto do_pointer;
+ }
+ else
+ {
+ size_t n = (s + 7) / 8;
+ if (state.ngrn + n <= N_X_ARG_REG)
+ {
+ /* If the argument is a composite type and the size in
+ double-words is not more than the number of available
+ X registers, then the argument is copied into
+ consecutive X registers. */
+ dest = &context->x[state.ngrn];
+ state.ngrn += (unsigned int)n;
+ }
+ else
+ {
+ /* Otherwise, there are insufficient X registers. Further
+ X register allocations are prevented, the NSAA is
+ adjusted and the argument is copied to memory at the
+ adjusted NSAA. */
+ state.ngrn = N_X_ARG_REG;
+ dest = allocate_to_stack (&state, stack, ty->alignment, s);
+ }
+ }
+ memcpy (dest, a, s);
+ }
+ break;
+
+ default:
+ abort();
+ }
+
+#if defined (__APPLE__)
+ if (i + 1 == cif->aarch64_nfixedargs)
+ {
+ state.ngrn = N_X_ARG_REG;
+ state.nsrn = N_V_ARG_REG;
+ state.allocating_variadic = 1;
+ }
+#endif
+ }
+
+ ffi_call_SYSV (context, frame, fn, rvalue, flags, closure);
+
+ if (flags & AARCH64_RET_NEED_COPY)
+ memcpy (orig_rvalue, rvalue, rtype_size);
+}
+
+void
+ffi_call (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue)
+{
+ ffi_call_int (cif, fn, rvalue, avalue, NULL);
+}
+
+#ifdef FFI_GO_CLOSURES
+void
+ffi_call_go (ffi_cif *cif, void (*fn) (void), void *rvalue,
+ void **avalue, void *closure)
+{
+ ffi_call_int (cif, fn, rvalue, avalue, closure);
+}
+#endif /* FFI_GO_CLOSURES */
+
+/* Build a trampoline. */
+
+extern void ffi_closure_SYSV (void) FFI_HIDDEN;
+extern void ffi_closure_SYSV_V (void) FFI_HIDDEN;
+
+ffi_status
+ffi_prep_closure_loc (ffi_closure *closure,
+ ffi_cif* cif,
+ void (*fun)(ffi_cif*,void*,void**,void*),
+ void *user_data,
+ void *codeloc)
+{
+ if (cif->abi != FFI_SYSV)
+ return FFI_BAD_ABI;
+
+ void (*start)(void);
+
+ if (cif->flags & AARCH64_FLAG_ARG_V)
+ start = ffi_closure_SYSV_V;
+ else
+ start = ffi_closure_SYSV;
+
+#if FFI_EXEC_TRAMPOLINE_TABLE
+#ifdef __MACH__
+ void **config = (void **)((uint8_t *)codeloc - PAGE_MAX_SIZE);
+ config[0] = closure;
+ config[1] = start;
+#endif
+#else
+ static const unsigned char trampoline[16] = {
+ 0x90, 0x00, 0x00, 0x58, /* ldr x16, tramp+16 */
+ 0xf1, 0xff, 0xff, 0x10, /* adr x17, tramp+0 */
+ 0x00, 0x02, 0x1f, 0xd6 /* br x16 */
+ };
+ char *tramp = closure->tramp;
+
+ memcpy (tramp, trampoline, sizeof(trampoline));
+
+ *(UINT64 *)(tramp + 16) = (uintptr_t)start;
+
+ ffi_clear_cache(tramp, tramp + FFI_TRAMPOLINE_SIZE);
+
+ /* Also flush the cache for code mapping. */
+#ifdef _M_ARM64
+ // Not using dlmalloc.c for Windows ARM64 builds
+ // so calling ffi_data_to_code_pointer() isn't necessary
+ unsigned char *tramp_code = tramp;
+ #else
+ unsigned char *tramp_code = ffi_data_to_code_pointer (tramp);
+ #endif
+ ffi_clear_cache (tramp_code, tramp_code + FFI_TRAMPOLINE_SIZE);
+#endif
+
+ closure->cif = cif;
+ closure->fun = fun;
+ closure->user_data = user_data;
+
+ return FFI_OK;
+}
+
+#ifdef FFI_GO_CLOSURES
+extern void ffi_go_closure_SYSV (void) FFI_HIDDEN;
+extern void ffi_go_closure_SYSV_V (void) FFI_HIDDEN;
+
+ffi_status
+ffi_prep_go_closure (ffi_go_closure *closure, ffi_cif* cif,
+ void (*fun)(ffi_cif*,void*,void**,void*))
+{
+ void (*start)(void);
+
+ if (cif->abi != FFI_SYSV)
+ return FFI_BAD_ABI;
+
+ if (cif->flags & AARCH64_FLAG_ARG_V)
+ start = ffi_go_closure_SYSV_V;
+ else
+ start = ffi_go_closure_SYSV;
+
+ closure->tramp = start;
+ closure->cif = cif;
+ closure->fun = fun;
+
+ return FFI_OK;
+}
+#endif /* FFI_GO_CLOSURES */
+
+/* Primary handler to setup and invoke a function within a closure.
+
+ A closure when invoked enters via the assembler wrapper
+ ffi_closure_SYSV(). The wrapper allocates a call context on the
+ stack, saves the interesting registers (from the perspective of
+ the calling convention) into the context then passes control to
+ ffi_closure_SYSV_inner() passing the saved context and a pointer to
+ the stack at the point ffi_closure_SYSV() was invoked.
+
+ On the return path the assembler wrapper will reload call context
+ registers.
+
+ ffi_closure_SYSV_inner() marshalls the call context into ffi value
+ descriptors, invokes the wrapped function, then marshalls the return
+ value back into the call context. */
+
+int FFI_HIDDEN
+ffi_closure_SYSV_inner (ffi_cif *cif,
+ void (*fun)(ffi_cif*,void*,void**,void*),
+ void *user_data,
+ struct call_context *context,
+ void *stack, void *rvalue, void *struct_rvalue)
+{
+ void **avalue = (void**) alloca (cif->nargs * sizeof (void*));
+ int i, h, nargs, flags;
+ struct arg_state state;
+
+ arg_init (&state);
+
+ for (i = 0, nargs = cif->nargs; i < nargs; i++)
+ {
+ ffi_type *ty = cif->arg_types[i];
+ int t = ty->type;
+ size_t n, s = ty->size;
+
+ switch (t)
+ {
+ case FFI_TYPE_VOID:
+ FFI_ASSERT (0);
+ break;
+
+ case FFI_TYPE_INT:
+ case FFI_TYPE_UINT8:
+ case FFI_TYPE_SINT8:
+ case FFI_TYPE_UINT16:
+ case FFI_TYPE_SINT16:
+ case FFI_TYPE_UINT32:
+ case FFI_TYPE_SINT32:
+ case FFI_TYPE_UINT64:
+ case FFI_TYPE_SINT64:
+ case FFI_TYPE_POINTER:
+ avalue[i] = allocate_int_to_reg_or_stack (context, &state, stack, s);
+ break;
+
+ case FFI_TYPE_FLOAT:
+ case FFI_TYPE_DOUBLE:
+ case FFI_TYPE_LONGDOUBLE:
+ case FFI_TYPE_STRUCT:
+ case FFI_TYPE_COMPLEX:
+ h = is_vfp_type (ty);
+ if (h)
+ {
+ n = 4 - (h & 3);
+#ifdef _M_ARM64 /* for handling armasm calling convention */
+ if (cif->is_variadic)
+ {
+ if (state.ngrn + n <= N_X_ARG_REG)
+ {
+ void *reg = &context->x[state.ngrn];
+ state.ngrn += (unsigned int)n;
+
+ /* Eeek! We need a pointer to the structure, however the
+ homogeneous float elements are being passed in individual
+ registers, therefore for float and double the structure
+ is not represented as a contiguous sequence of bytes in
+ our saved register context. We don't need the original
+ contents of the register storage, so we reformat the
+ structure into the same memory. */
+ avalue[i] = compress_hfa_type(reg, reg, h);
+ }
+ else
+ {
+ state.ngrn = N_X_ARG_REG;
+ state.nsrn = N_V_ARG_REG;
+ avalue[i] = allocate_to_stack(&state, stack,
+ ty->alignment, s);
+ }
+ }
+ else
+ {
+#endif /* for handling armasm calling convention */
+ if (state.nsrn + n <= N_V_ARG_REG)
+ {
+ void *reg = &context->v[state.nsrn];
+ state.nsrn += (unsigned int)n;
+ avalue[i] = compress_hfa_type(reg, reg, h);
+ }
+ else
+ {
+ state.nsrn = N_V_ARG_REG;
+ avalue[i] = allocate_to_stack(&state, stack,
+ ty->alignment, s);
+ }
+#ifdef _M_ARM64 /* for handling armasm calling convention */
+ }
+#endif /* for handling armasm calling convention */
+ }
+ else if (s > 16)
+ {
+ /* Replace Composite type of size greater than 16 with a
+ pointer. */
+ avalue[i] = *(void **)
+ allocate_int_to_reg_or_stack (context, &state, stack,
+ sizeof (void *));
+ }
+ else
+ {
+ n = (s + 7) / 8;
+ if (state.ngrn + n <= N_X_ARG_REG)
+ {
+ avalue[i] = &context->x[state.ngrn];
+ state.ngrn += (unsigned int)n;
+ }
+ else
+ {
+ state.ngrn = N_X_ARG_REG;
+ avalue[i] = allocate_to_stack(&state, stack,
+ ty->alignment, s);
+ }
+ }
+ break;
+
+ default:
+ abort();
+ }
+
+#if defined (__APPLE__)
+ if (i + 1 == cif->aarch64_nfixedargs)
+ {
+ state.ngrn = N_X_ARG_REG;
+ state.nsrn = N_V_ARG_REG;
+ state.allocating_variadic = 1;
+ }
+#endif
+ }
+
+ flags = cif->flags;
+ if (flags & AARCH64_RET_IN_MEM)
+ rvalue = struct_rvalue;
+
+ fun (cif, rvalue, avalue, user_data);
+
+ return flags;
+}
+
+#endif /* (__aarch64__) || defined(__arm64__)|| defined (_M_ARM64)*/
+
+
+====================File: src/aarch64/ffitarget.h====================
+/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd.
+
+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. */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
+#endif
+
+#ifndef LIBFFI_ASM
+#ifdef __ILP32__
+#define FFI_SIZEOF_ARG 8
+#define FFI_SIZEOF_JAVA_RAW 4
+typedef unsigned long long ffi_arg;
+typedef signed long long ffi_sarg;
+#elif defined(_M_ARM64)
+#define FFI_SIZEOF_ARG 8
+typedef unsigned long long ffi_arg;
+typedef signed long long ffi_sarg;
+#else
+typedef unsigned long ffi_arg;
+typedef signed long ffi_sarg;
+#endif
+
+typedef enum ffi_abi
+ {
+ FFI_FIRST_ABI = 0,
+ FFI_SYSV,
+ FFI_LAST_ABI,
+ FFI_DEFAULT_ABI = FFI_SYSV
+ } ffi_abi;
+#endif
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 1
+#define FFI_NATIVE_RAW_API 0
+
+#if defined (FFI_EXEC_TRAMPOLINE_TABLE) && FFI_EXEC_TRAMPOLINE_TABLE
+
+#ifdef __MACH__
+#define FFI_TRAMPOLINE_SIZE 16
+#define FFI_TRAMPOLINE_CLOSURE_OFFSET 16
+#else
+#error "No trampoline table implementation"
+#endif
+
+#else
+#define FFI_TRAMPOLINE_SIZE 24
+#define FFI_TRAMPOLINE_CLOSURE_OFFSET FFI_TRAMPOLINE_SIZE
+#endif
+
+#ifdef _M_ARM64
+#define FFI_EXTRA_CIF_FIELDS unsigned is_variadic
+#endif
+
+/* ---- Internal ---- */
+
+#if defined (__APPLE__)
+#define FFI_TARGET_SPECIFIC_VARIADIC
+#define FFI_EXTRA_CIF_FIELDS unsigned aarch64_nfixedargs
+#elif !defined(_M_ARM64)
+/* iOS and Windows reserve x18 for the system. Disable Go closures until
+ a new static chain is chosen. */
+#define FFI_GO_CLOSURES 1
+#endif
+
+#ifndef _M_ARM64
+/* No complex type on Windows */
+#define FFI_TARGET_HAS_COMPLEX_TYPE
+#endif
+
+#endif
+
+
+====================File: src/aarch64/sysv.S====================
+/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd.
+
+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. */
+
+#if defined(__aarch64__) || defined(__arm64__)
+#define LIBFFI_ASM
+#include <fficonfig.h>
+#include <ffi.h>
+#include <ffi_cfi.h>
+#include "internal.h"
+
+#ifdef HAVE_MACHINE_ASM_H
+#include <machine/asm.h>
+#else
+#ifdef __USER_LABEL_PREFIX__
+#define CONCAT1(a, b) CONCAT2(a, b)
+#define CONCAT2(a, b) a ## b
+
+/* Use the right prefix for global labels. */
+#define CNAME(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
+#else
+#define CNAME(x) x
+#endif
+#endif
+
+#ifdef __AARCH64EB__
+# define BE(X) X
+#else
+# define BE(X) 0
+#endif
+
+#ifdef __ILP32__
+#define PTR_REG(n) w##n
+#else
+#define PTR_REG(n) x##n
+#endif
+
+#ifdef __ILP32__
+#define PTR_SIZE 4
+#else
+#define PTR_SIZE 8
+#endif
+
+ .text
+ .align 4
+
+/* ffi_call_SYSV
+ extern void ffi_call_SYSV (void *stack, void *frame,
+ void (*fn)(void), void *rvalue,
+ int flags, void *closure);
+
+ Therefore on entry we have:
+
+ x0 stack
+ x1 frame
+ x2 fn
+ x3 rvalue
+ x4 flags
+ x5 closure
+*/
+
+ cfi_startproc
+CNAME(ffi_call_SYSV):
+ /* Use a stack frame allocated by our caller. */
+ cfi_def_cfa(x1, 32);
+ stp x29, x30, [x1]
+ mov x29, x1
+ mov sp, x0
+ cfi_def_cfa_register(x29)
+ cfi_rel_offset (x29, 0)
+ cfi_rel_offset (x30, 8)
+
+ mov x9, x2 /* save fn */
+ mov x8, x3 /* install structure return */
+#ifdef FFI_GO_CLOSURES
+ mov x18, x5 /* install static chain */
+#endif
+ stp x3, x4, [x29, #16] /* save rvalue and flags */
+
+ /* Load the vector argument passing registers, if necessary. */
+ tbz w4, #AARCH64_FLAG_ARG_V_BIT, 1f
+ ldp q0, q1, [sp, #0]
+ ldp q2, q3, [sp, #32]
+ ldp q4, q5, [sp, #64]
+ ldp q6, q7, [sp, #96]
+1:
+ /* Load the core argument passing registers, including
+ the structure return pointer. */
+ ldp x0, x1, [sp, #16*N_V_ARG_REG + 0]
+ ldp x2, x3, [sp, #16*N_V_ARG_REG + 16]
+ ldp x4, x5, [sp, #16*N_V_ARG_REG + 32]
+ ldp x6, x7, [sp, #16*N_V_ARG_REG + 48]
+
+ /* Deallocate the context, leaving the stacked arguments. */
+ add sp, sp, #CALL_CONTEXT_SIZE
+
+ blr x9 /* call fn */
+
+ ldp x3, x4, [x29, #16] /* reload rvalue and flags */
+
+ /* Partially deconstruct the stack frame. */
+ mov sp, x29
+ cfi_def_cfa_register (sp)
+ ldp x29, x30, [x29]
+
+ /* Save the return value as directed. */
+ adr x5, 0f
+ and w4, w4, #AARCH64_RET_MASK
+ add x5, x5, x4, lsl #3
+ br x5
+
+ /* Note that each table entry is 2 insns, and thus 8 bytes.
+ For integer data, note that we're storing into ffi_arg
+ and therefore we want to extend to 64 bits; these types
+ have two consecutive entries allocated for them. */
+ .align 4
+0: ret /* VOID */
+ nop
+1: str x0, [x3] /* INT64 */
+ ret
+2: stp x0, x1, [x3] /* INT128 */
+ ret
+3: brk #1000 /* UNUSED */
+ ret
+4: brk #1000 /* UNUSED */
+ ret
+5: brk #1000 /* UNUSED */
+ ret
+6: brk #1000 /* UNUSED */
+ ret
+7: brk #1000 /* UNUSED */
+ ret
+8: st4 { v0.s, v1.s, v2.s, v3.s }[0], [x3] /* S4 */
+ ret
+9: st3 { v0.s, v1.s, v2.s }[0], [x3] /* S3 */
+ ret
+10: stp s0, s1, [x3] /* S2 */
+ ret
+11: str s0, [x3] /* S1 */
+ ret
+12: st4 { v0.d, v1.d, v2.d, v3.d }[0], [x3] /* D4 */
+ ret
+13: st3 { v0.d, v1.d, v2.d }[0], [x3] /* D3 */
+ ret
+14: stp d0, d1, [x3] /* D2 */
+ ret
+15: str d0, [x3] /* D1 */
+ ret
+16: str q3, [x3, #48] /* Q4 */
+ nop
+17: str q2, [x3, #32] /* Q3 */
+ nop
+18: stp q0, q1, [x3] /* Q2 */
+ ret
+19: str q0, [x3] /* Q1 */
+ ret
+20: uxtb w0, w0 /* UINT8 */
+ str x0, [x3]
+21: ret /* reserved */
+ nop
+22: uxth w0, w0 /* UINT16 */
+ str x0, [x3]
+23: ret /* reserved */
+ nop
+24: mov w0, w0 /* UINT32 */
+ str x0, [x3]
+25: ret /* reserved */
+ nop
+26: sxtb x0, w0 /* SINT8 */
+ str x0, [x3]
+27: ret /* reserved */
+ nop
+28: sxth x0, w0 /* SINT16 */
+ str x0, [x3]
+29: ret /* reserved */
+ nop
+30: sxtw x0, w0 /* SINT32 */
+ str x0, [x3]
+31: ret /* reserved */
+ nop
+
+ cfi_endproc
+
+ .globl CNAME(ffi_call_SYSV)
+ FFI_HIDDEN(CNAME(ffi_call_SYSV))
+#ifdef __ELF__
+ .type CNAME(ffi_call_SYSV), #function
+ .size CNAME(ffi_call_SYSV), .-CNAME(ffi_call_SYSV)
+#endif
+
+/* ffi_closure_SYSV
+
+ Closure invocation glue. This is the low level code invoked directly by
+ the closure trampoline to setup and call a closure.
+
+ On entry x17 points to a struct ffi_closure, x16 has been clobbered
+ all other registers are preserved.
+
+ We allocate a call context and save the argument passing registers,
+ then invoked the generic C ffi_closure_SYSV_inner() function to do all
+ the real work, on return we load the result passing registers back from
+ the call context.
+*/
+
+#define ffi_closure_SYSV_FS (8*2 + CALL_CONTEXT_SIZE + 64)
+
+ .align 4
+CNAME(ffi_closure_SYSV_V):
+ cfi_startproc
+ stp x29, x30, [sp, #-ffi_closure_SYSV_FS]!
+ cfi_adjust_cfa_offset (ffi_closure_SYSV_FS)
+ cfi_rel_offset (x29, 0)
+ cfi_rel_offset (x30, 8)
+
+ /* Save the argument passing vector registers. */
+ stp q0, q1, [sp, #16 + 0]
+ stp q2, q3, [sp, #16 + 32]
+ stp q4, q5, [sp, #16 + 64]
+ stp q6, q7, [sp, #16 + 96]
+ b 0f
+ cfi_endproc
+
+ .globl CNAME(ffi_closure_SYSV_V)
+ FFI_HIDDEN(CNAME(ffi_closure_SYSV_V))
+#ifdef __ELF__
+ .type CNAME(ffi_closure_SYSV_V), #function
+ .size CNAME(ffi_closure_SYSV_V), . - CNAME(ffi_closure_SYSV_V)
+#endif
+
+ .align 4
+ cfi_startproc
+CNAME(ffi_closure_SYSV):
+ stp x29, x30, [sp, #-ffi_closure_SYSV_FS]!
+ cfi_adjust_cfa_offset (ffi_closure_SYSV_FS)
+ cfi_rel_offset (x29, 0)
+ cfi_rel_offset (x30, 8)
+0:
+ mov x29, sp
+
+ /* Save the argument passing core registers. */
+ stp x0, x1, [sp, #16 + 16*N_V_ARG_REG + 0]
+ stp x2, x3, [sp, #16 + 16*N_V_ARG_REG + 16]
+ stp x4, x5, [sp, #16 + 16*N_V_ARG_REG + 32]
+ stp x6, x7, [sp, #16 + 16*N_V_ARG_REG + 48]
+
+ /* Load ffi_closure_inner arguments. */
+ ldp PTR_REG(0), PTR_REG(1), [x17, #FFI_TRAMPOLINE_CLOSURE_OFFSET] /* load cif, fn */
+ ldr PTR_REG(2), [x17, #FFI_TRAMPOLINE_CLOSURE_OFFSET+PTR_SIZE*2] /* load user_data */
+.Ldo_closure:
+ add x3, sp, #16 /* load context */
+ add x4, sp, #ffi_closure_SYSV_FS /* load stack */
+ add x5, sp, #16+CALL_CONTEXT_SIZE /* load rvalue */
+ mov x6, x8 /* load struct_rval */
+ bl CNAME(ffi_closure_SYSV_inner)
+
+ /* Load the return value as directed. */
+ adr x1, 0f
+ and w0, w0, #AARCH64_RET_MASK
+ add x1, x1, x0, lsl #3
+ add x3, sp, #16+CALL_CONTEXT_SIZE
+ br x1
+
+ /* Note that each table entry is 2 insns, and thus 8 bytes. */
+ .align 4
+0: b 99f /* VOID */
+ nop
+1: ldr x0, [x3] /* INT64 */
+ b 99f
+2: ldp x0, x1, [x3] /* INT128 */
+ b 99f
+3: brk #1000 /* UNUSED */
+ nop
+4: brk #1000 /* UNUSED */
+ nop
+5: brk #1000 /* UNUSED */
+ nop
+6: brk #1000 /* UNUSED */
+ nop
+7: brk #1000 /* UNUSED */
+ nop
+8: ldr s3, [x3, #12] /* S4 */
+ nop
+9: ldr s2, [x3, #8] /* S3 */
+ nop
+10: ldp s0, s1, [x3] /* S2 */
+ b 99f
+11: ldr s0, [x3] /* S1 */
+ b 99f
+12: ldr d3, [x3, #24] /* D4 */
+ nop
+13: ldr d2, [x3, #16] /* D3 */
+ nop
+14: ldp d0, d1, [x3] /* D2 */
+ b 99f
+15: ldr d0, [x3] /* D1 */
+ b 99f
+16: ldr q3, [x3, #48] /* Q4 */
+ nop
+17: ldr q2, [x3, #32] /* Q3 */
+ nop
+18: ldp q0, q1, [x3] /* Q2 */
+ b 99f
+19: ldr q0, [x3] /* Q1 */
+ b 99f
+20: ldrb w0, [x3, #BE(7)] /* UINT8 */
+ b 99f
+21: brk #1000 /* reserved */
+ nop
+22: ldrh w0, [x3, #BE(6)] /* UINT16 */
+ b 99f
+23: brk #1000 /* reserved */
+ nop
+24: ldr w0, [x3, #BE(4)] /* UINT32 */
+ b 99f
+25: brk #1000 /* reserved */
+ nop
+26: ldrsb x0, [x3, #BE(7)] /* SINT8 */
+ b 99f
+27: brk #1000 /* reserved */
+ nop
+28: ldrsh x0, [x3, #BE(6)] /* SINT16 */
+ b 99f
+29: brk #1000 /* reserved */
+ nop
+30: ldrsw x0, [x3, #BE(4)] /* SINT32 */
+ nop
+31: /* reserved */
+99: ldp x29, x30, [sp], #ffi_closure_SYSV_FS
+ cfi_adjust_cfa_offset (-ffi_closure_SYSV_FS)
+ cfi_restore (x29)
+ cfi_restore (x30)
+ ret
+ cfi_endproc
+
+ .globl CNAME(ffi_closure_SYSV)
+ FFI_HIDDEN(CNAME(ffi_closure_SYSV))
+#ifdef __ELF__
+ .type CNAME(ffi_closure_SYSV), #function
+ .size CNAME(ffi_closure_SYSV), . - CNAME(ffi_closure_SYSV)
+#endif
+
+#if FFI_EXEC_TRAMPOLINE_TABLE
+
+#ifdef __MACH__
+#include <mach/machine/vm_param.h>
+ .align PAGE_MAX_SHIFT
+CNAME(ffi_closure_trampoline_table_page):
+ .rept PAGE_MAX_SIZE / FFI_TRAMPOLINE_SIZE
+ adr x16, -PAGE_MAX_SIZE
+ ldp x17, x16, [x16]
+ br x16
+ nop /* each entry in the trampoline config page is 2*sizeof(void*) so the trampoline itself cannot be smaller that 16 bytes */
+ .endr
+
+ .globl CNAME(ffi_closure_trampoline_table_page)
+ FFI_HIDDEN(CNAME(ffi_closure_trampoline_table_page))
+ #ifdef __ELF__
+ .type CNAME(ffi_closure_trampoline_table_page), #function
+ .size CNAME(ffi_closure_trampoline_table_page), . - CNAME(ffi_closure_trampoline_table_page)
+ #endif
+#endif
+
+#endif /* FFI_EXEC_TRAMPOLINE_TABLE */
+
+#ifdef FFI_GO_CLOSURES
+ .align 4
+CNAME(ffi_go_closure_SYSV_V):
+ cfi_startproc
+ stp x29, x30, [sp, #-ffi_closure_SYSV_FS]!
+ cfi_adjust_cfa_offset (ffi_closure_SYSV_FS)
+ cfi_rel_offset (x29, 0)
+ cfi_rel_offset (x30, 8)
+
+ /* Save the argument passing vector registers. */
+ stp q0, q1, [sp, #16 + 0]
+ stp q2, q3, [sp, #16 + 32]
+ stp q4, q5, [sp, #16 + 64]
+ stp q6, q7, [sp, #16 + 96]
+ b 0f
+ cfi_endproc
+
+ .globl CNAME(ffi_go_closure_SYSV_V)
+ FFI_HIDDEN(CNAME(ffi_go_closure_SYSV_V))
+#ifdef __ELF__
+ .type CNAME(ffi_go_closure_SYSV_V), #function
+ .size CNAME(ffi_go_closure_SYSV_V), . - CNAME(ffi_go_closure_SYSV_V)
+#endif
+
+ .align 4
+ cfi_startproc
+CNAME(ffi_go_closure_SYSV):
+ stp x29, x30, [sp, #-ffi_closure_SYSV_FS]!
+ cfi_adjust_cfa_offset (ffi_closure_SYSV_FS)
+ cfi_rel_offset (x29, 0)
+ cfi_rel_offset (x30, 8)
+0:
+ mov x29, sp
+
+ /* Save the argument passing core registers. */
+ stp x0, x1, [sp, #16 + 16*N_V_ARG_REG + 0]
+ stp x2, x3, [sp, #16 + 16*N_V_ARG_REG + 16]
+ stp x4, x5, [sp, #16 + 16*N_V_ARG_REG + 32]
+ stp x6, x7, [sp, #16 + 16*N_V_ARG_REG + 48]
+
+ /* Load ffi_closure_inner arguments. */
+ ldp PTR_REG(0), PTR_REG(1), [x18, #PTR_SIZE]/* load cif, fn */
+ mov x2, x18 /* load user_data */
+ b .Ldo_closure
+ cfi_endproc
+
+ .globl CNAME(ffi_go_closure_SYSV)
+ FFI_HIDDEN(CNAME(ffi_go_closure_SYSV))
+#ifdef __ELF__
+ .type CNAME(ffi_go_closure_SYSV), #function
+ .size CNAME(ffi_go_closure_SYSV), . - CNAME(ffi_go_closure_SYSV)
+#endif
+#endif /* FFI_GO_CLOSURES */
+#endif /* __arm64__ */
+
+#if defined __ELF__ && defined __linux__
+ .section .note.GNU-stack,"",%progbits
+#endif
+
+
+
+====================File: src/arm/ffi.c====================
+/* -----------------------------------------------------------------------
+ ffi.c - Copyright (c) 2011 Timothy Wall
+ Copyright (c) 2011 Plausible Labs Cooperative, Inc.
+ Copyright (c) 2011 Anthony Green
+ Copyright (c) 2011 Free Software Foundation
+ Copyright (c) 1998, 2008, 2011 Red Hat, Inc.
+
+ ARM Foreign Function Interface
+
+ 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.
+ ----------------------------------------------------------------------- */
+
+#if defined(__arm__) || defined(_M_ARM)
+#include <fficonfig.h>
+#include <ffi.h>
+#include <ffi_common.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include "internal.h"
+
+#if defined(_MSC_VER) && defined(_M_ARM)
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#endif
+
+#if FFI_EXEC_TRAMPOLINE_TABLE
+
+#ifdef __MACH__
+#include <mach/machine/vm_param.h>
+#endif
+
+#else
+#ifndef _M_ARM
+extern unsigned int ffi_arm_trampoline[2] FFI_HIDDEN;
+#else
+extern unsigned int ffi_arm_trampoline[3] FFI_HIDDEN;
+#endif
+#endif
+
+/* Forward declares. */
+static int vfp_type_p (const ffi_type *);
+static void layout_vfp_args (ffi_cif *);
+
+static void *
+ffi_align (ffi_type *ty, void *p)
+{
+ /* Align if necessary */
+ size_t alignment;
+#ifdef _WIN32_WCE
+ alignment = 4;
+#else
+ alignment = ty->alignment;
+ if (alignment < 4)
+ alignment = 4;
+#endif
+ return (void *) FFI_ALIGN (p, alignment);
+}
+
+static size_t
+ffi_put_arg (ffi_type *ty, void *src, void *dst)
+{
+ size_t z = ty->size;
+
+ switch (ty->type)
+ {
+ case FFI_TYPE_SINT8:
+ *(UINT32 *)dst = *(SINT8 *)src;
+ break;
+ case FFI_TYPE_UINT8:
+ *(UINT32 *)dst = *(UINT8 *)src;
+ break;
+ case FFI_TYPE_SINT16:
+ *(UINT32 *)dst = *(SINT16 *)src;
+ break;
+ case FFI_TYPE_UINT16:
+ *(UINT32 *)dst = *(UINT16 *)src;
+ break;
+
+ case FFI_TYPE_INT:
+ case FFI_TYPE_SINT32:
+ case FFI_TYPE_UINT32:
+ case FFI_TYPE_POINTER:
+#ifndef _MSC_VER
+ case FFI_TYPE_FLOAT:
+#endif
+ *(UINT32 *)dst = *(UINT32 *)src;
+ break;
+
+#ifdef _MSC_VER
+ // casting a float* to a UINT32* doesn't work on Windows
+ case FFI_TYPE_FLOAT:
+ *(uintptr_t *)dst = 0;
+ *(float *)dst = *(float *)src;
+ break;
+#endif
+
+ case FFI_TYPE_SINT64:
+ case FFI_TYPE_UINT64:
+ case FFI_TYPE_DOUBLE:
+ *(UINT64 *)dst = *(UINT64 *)src;
+ break;
+
+ case FFI_TYPE_STRUCT:
+ case FFI_TYPE_COMPLEX:
+ memcpy (dst, src, z);
+ break;
+
+ default:
+ abort();
+ }
+
+ return FFI_ALIGN (z, 4);
+}
+
+/* ffi_prep_args is called once stack space has been allocated
+ for the function's arguments.
+
+ The vfp_space parameter is the load area for VFP regs, the return
+ value is cif->vfp_used (word bitset of VFP regs used for passing
+ arguments). These are only used for the VFP hard-float ABI.
+*/
+static void
+ffi_prep_args_SYSV (ffi_cif *cif, int flags, void *rvalue,
+ void **avalue, char *argp)
+{
+ ffi_type **arg_types = cif->arg_types;
+ int i, n;
+
+ if (flags == ARM_TYPE_STRUCT)
+ {
+ *(void **) argp = rvalue;
+ argp += 4;
+ }
+
+ for (i = 0, n = cif->nargs; i < n; i++)
+ {
+ ffi_type *ty = arg_types[i];
+ argp = ffi_align (ty, argp);
+ argp += ffi_put_arg (ty, avalue[i], argp);
+ }
+}
+
+static void
+ffi_prep_args_VFP (ffi_cif *cif, int flags, void *rvalue,
+ void **avalue, char *stack, char *vfp_space)
+{
+ ffi_type **arg_types = cif->arg_types;
+ int i, n, vi = 0;
+ char *argp, *regp, *eo_regp;
+ char stack_used = 0;
+ char done_with_regs = 0;
+
+ /* The first 4 words on the stack are used for values
+ passed in core registers. */
+ regp = stack;
+ eo_regp = argp = regp + 16;
+
+ /* If the function returns an FFI_TYPE_STRUCT in memory,
+ that address is passed in r0 to the function. */
+ if (flags == ARM_TYPE_STRUCT)
+ {
+ *(void **) regp = rvalue;
+ regp += 4;
+ }
+
+ for (i = 0, n = cif->nargs; i < n; i++)
+ {
+ ffi_type *ty = arg_types[i];
+ void *a = avalue[i];
+ int is_vfp_type = vfp_type_p (ty);
+
+ /* Allocated in VFP registers. */
+ if (vi < cif->vfp_nargs && is_vfp_type)
+ {
+ char *vfp_slot = vfp_space + cif->vfp_args[vi++] * 4;
+ ffi_put_arg (ty, a, vfp_slot);
+ continue;
+ }
+ /* Try allocating in core registers. */
+ else if (!done_with_regs && !is_vfp_type)
+ {
+ char *tregp = ffi_align (ty, regp);
+ size_t size = ty->size;
+ size = (size < 4) ? 4 : size; // pad
+ /* Check if there is space left in the aligned register
+ area to place the argument. */
+ if (tregp + size <= eo_regp)
+ {
+ regp = tregp + ffi_put_arg (ty, a, tregp);
+ done_with_regs = (regp == argp);
+ // ensure we did not write into the stack area
+ FFI_ASSERT (regp <= argp);
+ continue;
+ }
+ /* In case there are no arguments in the stack area yet,
+ the argument is passed in the remaining core registers
+ and on the stack. */
+ else if (!stack_used)
+ {
+ stack_used = 1;
+ done_with_regs = 1;
+ argp = tregp + ffi_put_arg (ty, a, tregp);
+ FFI_ASSERT (eo_regp < argp);
+ continue;
+ }
+ }
+ /* Base case, arguments are passed on the stack */
+ stack_used = 1;
+ argp = ffi_align (ty, argp);
+ argp += ffi_put_arg (ty, a, argp);
+ }
+}
+
+/* Perform machine dependent cif processing */
+ffi_status FFI_HIDDEN
+ffi_prep_cif_machdep (ffi_cif *cif)
+{
+ int flags = 0, cabi = cif->abi;
+ size_t bytes = cif->bytes;
+
+ /* Map out the register placements of VFP register args. The VFP
+ hard-float calling conventions are slightly more sophisticated
+ than the base calling conventions, so we do it here instead of
+ in ffi_prep_args(). */
+ if (cabi == FFI_VFP)
+ layout_vfp_args (cif);
+
+ /* Set the return type flag */
+ switch (cif->rtype->type)
+ {
+ case FFI_TYPE_VOID:
+ flags = ARM_TYPE_VOID;
+ break;
+
+ case FFI_TYPE_INT:
+ case FFI_TYPE_UINT8:
+ case FFI_TYPE_SINT8:
+ case FFI_TYPE_UINT16:
+ case FFI_TYPE_SINT16:
+ case FFI_TYPE_UINT32:
+ case FFI_TYPE_SINT32:
+ case FFI_TYPE_POINTER:
+ flags = ARM_TYPE_INT;
+ break;
+
+ case FFI_TYPE_SINT64:
+ case FFI_TYPE_UINT64:
+ flags = ARM_TYPE_INT64;
+ break;
+
+ case FFI_TYPE_FLOAT:
+ flags = (cabi == FFI_VFP ? ARM_TYPE_VFP_S : ARM_TYPE_INT);
+ break;
+ case FFI_TYPE_DOUBLE:
+ flags = (cabi == FFI_VFP ? ARM_TYPE_VFP_D : ARM_TYPE_INT64);
+ break;
+
+ case FFI_TYPE_STRUCT:
+ case FFI_TYPE_COMPLEX:
+ if (cabi == FFI_VFP)
+ {
+ int h = vfp_type_p (cif->rtype);
+
+ flags = ARM_TYPE_VFP_N;
+ if (h == 0x100 + FFI_TYPE_FLOAT)
+ flags = ARM_TYPE_VFP_S;
+ if (h == 0x100 + FFI_TYPE_DOUBLE)
+ flags = ARM_TYPE_VFP_D;
+ if (h != 0)
+ break;
+ }
+
+ /* A Composite Type not larger than 4 bytes is returned in r0.
+ A Composite Type larger than 4 bytes, or whose size cannot
+ be determined statically ... is stored in memory at an
+ address passed [in r0]. */
+ if (cif->rtype->size <= 4)
+ flags = ARM_TYPE_INT;
+ else
+ {
+ flags = ARM_TYPE_STRUCT;
+ bytes += 4;
+ }
+ break;
+
+ default:
+ abort();
+ }
+
+ /* Round the stack up to a multiple of 8 bytes. This isn't needed
+ everywhere, but it is on some platforms, and it doesn't harm anything
+ when it isn't needed. */
+ bytes = FFI_ALIGN (bytes, 8);
+
+ /* Minimum stack space is the 4 register arguments that we pop. */
+ if (bytes < 4*4)
+ bytes = 4*4;
+
+ cif->bytes = bytes;
+ cif->flags = flags;
+
+ return FFI_OK;
+}
+
+/* Perform machine dependent cif processing for variadic calls */
+ffi_status FFI_HIDDEN
+ffi_prep_cif_machdep_var (ffi_cif * cif,
+ unsigned int nfixedargs, unsigned int ntotalargs)
+{
+ /* VFP variadic calls actually use the SYSV ABI */
+ if (cif->abi == FFI_VFP)
+ cif->abi = FFI_SYSV;
+
+ return ffi_prep_cif_machdep (cif);
+}
+
+/* Prototypes for assembly functions, in sysv.S. */
+
+struct call_frame
+{
+ void *fp;
+ void *lr;
+ void *rvalue;
+ int flags;
+ void *closure;
+};
+
+extern void ffi_call_SYSV (void *stack, struct call_frame *,
+ void (*fn) (void)) FFI_HIDDEN;
+extern void ffi_call_VFP (void *vfp_space, struct call_frame *,
+ void (*fn) (void), unsigned vfp_used) FFI_HIDDEN;
+
+static void
+ffi_call_int (ffi_cif * cif, void (*fn) (void), void *rvalue,
+ void **avalue, void *closure)
+{
+ int flags = cif->flags;
+ ffi_type *rtype = cif->rtype;
+ size_t bytes, rsize, vfp_size;
+ char *stack, *vfp_space, *new_rvalue;
+ struct call_frame *frame;
+
+ rsize = 0;
+ if (rvalue == NULL)
+ {
+ /* If the return value is a struct and we don't have a return
+ value address then we need to make one. Otherwise the return
+ value is in registers and we can ignore them. */
+ if (flags == ARM_TYPE_STRUCT)
+ rsize = rtype->size;
+ else
+ flags = ARM_TYPE_VOID;
+ }
+ else if (flags == ARM_TYPE_VFP_N)
+ {
+ /* Largest case is double x 4. */
+ rsize = 32;
+ }
+ else if (flags == ARM_TYPE_INT && rtype->type == FFI_TYPE_STRUCT)
+ rsize = 4;
+
+ /* Largest case. */
+ vfp_size = (cif->abi == FFI_VFP && cif->vfp_used ? 8*8: 0);
+
+ bytes = cif->bytes;
+ stack = alloca (vfp_size + bytes + sizeof(struct call_frame) + rsize);
+
+ vfp_space = NULL;
+ if (vfp_size)
+ {
+ vfp_space = stack;
+ stack += vfp_size;
+ }
+
+ frame = (struct call_frame *)(stack + bytes);
+
+ new_rvalue = rvalue;
+ if (rsize)
+ new_rvalue = (void *)(frame + 1);
+
+ frame->rvalue = new_rvalue;
+ frame->flags = flags;
+ frame->closure = closure;
+
+ if (vfp_space)
+ {
+ ffi_prep_args_VFP (cif, flags, new_rvalue, avalue, stack, vfp_space);
+ ffi_call_VFP (vfp_space, frame, fn, cif->vfp_used);
+ }
+ else
+ {
+ ffi_prep_args_SYSV (cif, flags, new_rvalue, avalue, stack);
+ ffi_call_SYSV (stack, frame, fn);
+ }
+
+ if (rvalue && rvalue != new_rvalue)
+ memcpy (rvalue, new_rvalue, rtype->size);
+}
+
+void
+ffi_call (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue)
+{
+ ffi_call_int (cif, fn, rvalue, avalue, NULL);
+}
+
+void
+ffi_call_go (ffi_cif *cif, void (*fn) (void), void *rvalue,
+ void **avalue, void *closure)
+{
+ ffi_call_int (cif, fn, rvalue, avalue, closure);
+}
+
+static void *
+ffi_prep_incoming_args_SYSV (ffi_cif *cif, void *rvalue,
+ char *argp, void **avalue)
+{
+ ffi_type **arg_types = cif->arg_types;
+ int i, n;
+
+ if (cif->flags == ARM_TYPE_STRUCT)
+ {
+ rvalue = *(void **) argp;
+ argp += 4;
+ }
+ else
+ {
+ if (cif->rtype->size && cif->rtype->size < 4)
+ *(uint32_t *) rvalue = 0;
+ }
+
+ for (i = 0, n = cif->nargs; i < n; i++)
+ {
+ ffi_type *ty = arg_types[i];
+ size_t z = ty->size;
+
+ argp = ffi_align (ty, argp);
+ avalue[i] = (void *) argp;
+ argp += z;
+ }
+
+ return rvalue;
+}
+
+static void *
+ffi_prep_incoming_args_VFP (ffi_cif *cif, void *rvalue, char *stack,
+ char *vfp_space, void **avalue)
+{
+ ffi_type **arg_types = cif->arg_types;
+ int i, n, vi = 0;
+ char *argp, *regp, *eo_regp;
+ char done_with_regs = 0;
+ char stack_used = 0;
+
+ regp = stack;
+ eo_regp = argp = regp + 16;
+
+ if (cif->flags == ARM_TYPE_STRUCT)
+ {
+ rvalue = *(void **) regp;
+ regp += 4;
+ }
+
+ for (i = 0, n = cif->nargs; i < n; i++)
+ {
+ ffi_type *ty = arg_types[i];
+ int is_vfp_type = vfp_type_p (ty);
+ size_t z = ty->size;
+
+ if (vi < cif->vfp_nargs && is_vfp_type)
+ {
+ avalue[i] = vfp_space + cif->vfp_args[vi++] * 4;
+ continue;
+ }
+ else if (!done_with_regs && !is_vfp_type)
+ {
+ char *tregp = ffi_align (ty, regp);
+
+ z = (z < 4) ? 4 : z; // pad
+
+ /* If the arguments either fits into the registers or uses registers
+ and stack, while we haven't read other things from the stack */
+ if (tregp + z <= eo_regp || !stack_used)
+ {
+ /* Because we're little endian, this is what it turns into. */
+ avalue[i] = (void *) tregp;
+ regp = tregp + z;
+
+ /* If we read past the last core register, make sure we
+ have not read from the stack before and continue
+ reading after regp. */
+ if (regp > eo_regp)
+ {
+ FFI_ASSERT (!stack_used);
+ argp = regp;
+ }
+ if (regp >= eo_regp)
+ {
+ done_with_regs = 1;
+ stack_used = 1;
+ }
+ continue;
+ }
+ }
+
+ stack_used = 1;
+ argp = ffi_align (ty, argp);
+ avalue[i] = (void *) argp;
+ argp += z;
+ }
+
+ return rvalue;
+}
+
+struct closure_frame
+{
+ char vfp_space[8*8] __attribute__((aligned(8)));
+ char result[8*4];
+ char argp[];
+};
+
+int FFI_HIDDEN
+ffi_closure_inner_SYSV (ffi_cif *cif,
+ void (*fun) (ffi_cif *, void *, void **, void *),
+ void *user_data,
+ struct closure_frame *frame)
+{
+ void **avalue = (void **) alloca (cif->nargs * sizeof (void *));
+ void *rvalue = ffi_prep_incoming_args_SYSV (cif, frame->result,
+ frame->argp, avalue);
+ fun (cif, rvalue, avalue, user_data);
+ return cif->flags;
+}
+
+int FFI_HIDDEN
+ffi_closure_inner_VFP (ffi_cif *cif,
+ void (*fun) (ffi_cif *, void *, void **, void *),
+ void *user_data,
+ struct closure_frame *frame)
+{
+ void **avalue = (void **) alloca (cif->nargs * sizeof (void *));
+ void *rvalue = ffi_prep_incoming_args_VFP (cif, frame->result, frame->argp,
+ frame->vfp_space, avalue);
+ fun (cif, rvalue, avalue, user_data);
+ return cif->flags;
+}
+
+void ffi_closure_SYSV (void) FFI_HIDDEN;
+void ffi_closure_VFP (void) FFI_HIDDEN;
+void ffi_go_closure_SYSV (void) FFI_HIDDEN;
+void ffi_go_closure_VFP (void) FFI_HIDDEN;
+
+/* the cif must already be prep'ed */
+
+ffi_status
+ffi_prep_closure_loc (ffi_closure * closure,
+ ffi_cif * cif,
+ void (*fun) (ffi_cif *, void *, void **, void *),
+ void *user_data, void *codeloc)
+{
+ void (*closure_func) (void) = ffi_closure_SYSV;
+
+ if (cif->abi == FFI_VFP)
+ {
+ /* We only need take the vfp path if there are vfp arguments. */
+ if (cif->vfp_used)
+ closure_func = ffi_closure_VFP;
+ }
+ else if (cif->abi != FFI_SYSV)
+ return FFI_BAD_ABI;
+
+#if FFI_EXEC_TRAMPOLINE_TABLE
+ void **config = (void **)((uint8_t *)codeloc - PAGE_MAX_SIZE);
+ config[0] = closure;
+ config[1] = closure_func;
+#else
+
+#ifndef _M_ARM
+ memcpy(closure->tramp, ffi_arm_trampoline, 8);
+#else
+ // cast away function type so MSVC doesn't set the lower bit of the function pointer
+ memcpy(closure->tramp, (void*)((uintptr_t)ffi_arm_trampoline & 0xFFFFFFFE), FFI_TRAMPOLINE_CLOSURE_OFFSET);
+#endif
+
+#if defined (__QNX__)
+ msync(closure->tramp, 8, 0x1000000); /* clear data map */
+ msync(codeloc, 8, 0x1000000); /* clear insn map */
+#elif defined(_MSC_VER)
+ FlushInstructionCache(GetCurrentProcess(), closure->tramp, FFI_TRAMPOLINE_SIZE);
+#else
+ __clear_cache(closure->tramp, closure->tramp + 8); /* clear data map */
+ __clear_cache(codeloc, codeloc + 8); /* clear insn map */
+#endif
+#ifdef _M_ARM
+ *(void(**)(void))(closure->tramp + FFI_TRAMPOLINE_CLOSURE_FUNCTION) = closure_func;
+#else
+ *(void (**)(void))(closure->tramp + 8) = closure_func;
+#endif
+#endif
+
+ closure->cif = cif;
+ closure->fun = fun;
+ closure->user_data = user_data;
+
+ return FFI_OK;
+}
+
+ffi_status
+ffi_prep_go_closure (ffi_go_closure *closure, ffi_cif *cif,
+ void (*fun) (ffi_cif *, void *, void **, void *))
+{
+ void (*closure_func) (void) = ffi_go_closure_SYSV;
+
+ if (cif->abi == FFI_VFP)
+ {
+ /* We only need take the vfp path if there are vfp arguments. */
+ if (cif->vfp_used)
+ closure_func = ffi_go_closure_VFP;
+ }
+ else if (cif->abi != FFI_SYSV)
+ return FFI_BAD_ABI;
+
+ closure->tramp = closure_func;
+ closure->cif = cif;
+ closure->fun = fun;
+
+ return FFI_OK;
+}
+
+/* Below are routines for VFP hard-float support. */
+
+/* A subroutine of vfp_type_p. Given a structure type, return the type code
+ of the first non-structure element. Recurse for structure elements.
+ Return -1 if the structure is in fact empty, i.e. no nested elements. */
+
+static int
+is_hfa0 (const ffi_type *ty)
+{
+ ffi_type **elements = ty->elements;
+ int i, ret = -1;
+
+ if (elements != NULL)
+ for (i = 0; elements[i]; ++i)
+ {
+ ret = elements[i]->type;
+ if (ret == FFI_TYPE_STRUCT || ret == FFI_TYPE_COMPLEX)
+ {
+ ret = is_hfa0 (elements[i]);
+ if (ret < 0)
+ continue;
+ }
+ break;
+ }
+
+ return ret;
+}
+
+/* A subroutine of vfp_type_p. Given a structure type, return true if all
+ of the non-structure elements are the same as CANDIDATE. */
+
+static int
+is_hfa1 (const ffi_type *ty, int candidate)
+{
+ ffi_type **elements = ty->elements;
+ int i;
+
+ if (elements != NULL)
+ for (i = 0; elements[i]; ++i)
+ {
+ int t = elements[i]->type;
+ if (t == FFI_TYPE_STRUCT || t == FFI_TYPE_COMPLEX)
+ {
+ if (!is_hfa1 (elements[i], candidate))
+ return 0;
+ }
+ else if (t != candidate)
+ return 0;
+ }
+
+ return 1;
+}
+
+/* Determine if TY is an homogenous floating point aggregate (HFA).
+ That is, a structure consisting of 1 to 4 members of all the same type,
+ where that type is a floating point scalar.
+
+ Returns non-zero iff TY is an HFA. The result is an encoded value where
+ bits 0-7 contain the type code, and bits 8-10 contain the element count. */
+
+static int
+vfp_type_p (const ffi_type *ty)
+{
+ ffi_type **elements;
+ int candidate, i;
+ size_t size, ele_count;
+
+ /* Quickest tests first. */
+ candidate = ty->type;
+ switch (ty->type)
+ {
+ default:
+ return 0;
+ case FFI_TYPE_FLOAT:
+ case FFI_TYPE_DOUBLE:
+ ele_count = 1;
+ goto done;
+ case FFI_TYPE_COMPLEX:
+ candidate = ty->elements[0]->type;
+ if (candidate != FFI_TYPE_FLOAT && candidate != FFI_TYPE_DOUBLE)
+ return 0;
+ ele_count = 2;
+ goto done;
+ case FFI_TYPE_STRUCT:
+ break;
+ }
+
+ /* No HFA types are smaller than 4 bytes, or larger than 32 bytes. */
+ size = ty->size;
+ if (size < 4 || size > 32)
+ return 0;
+
+ /* Find the type of the first non-structure member. */
+ elements = ty->elements;
+ candidate = elements[0]->type;
+ if (candidate == FFI_TYPE_STRUCT || candidate == FFI_TYPE_COMPLEX)
+ {
+ for (i = 0; ; ++i)
+ {
+ candidate = is_hfa0 (elements[i]);
+ if (candidate >= 0)
+ break;
+ }
+ }
+
+ /* If the first member is not a floating point type, it's not an HFA.
+ Also quickly re-check the size of the structure. */
+ switch (candidate)
+ {
+ case FFI_TYPE_FLOAT:
+ ele_count = size / sizeof(float);
+ if (size != ele_count * sizeof(float))
+ return 0;
+ break;
+ case FFI_TYPE_DOUBLE:
+ ele_count = size / sizeof(double);
+ if (size != ele_count * sizeof(double))
+ return 0;
+ break;
+ default:
+ return 0;
+ }
+ if (ele_count > 4)
+ return 0;
+
+ /* Finally, make sure that all scalar elements are the same type. */
+ for (i = 0; elements[i]; ++i)
+ {
+ int t = elements[i]->type;
+ if (t == FFI_TYPE_STRUCT || t == FFI_TYPE_COMPLEX)
+ {
+ if (!is_hfa1 (elements[i], candidate))
+ return 0;
+ }
+ else if (t != candidate)
+ return 0;
+ }
+
+ /* All tests succeeded. Encode the result. */
+ done:
+ return (ele_count << 8) | candidate;
+}
+
+static int
+place_vfp_arg (ffi_cif *cif, int h)
+{
+ unsigned short reg = cif->vfp_reg_free;
+ int align = 1, nregs = h >> 8;
+
+ if ((h & 0xff) == FFI_TYPE_DOUBLE)
+ align = 2, nregs *= 2;
+
+ /* Align register number. */
+ if ((reg & 1) && align == 2)
+ reg++;
+
+ while (reg + nregs <= 16)
+ {
+ int s, new_used = 0;
+ for (s = reg; s < reg + nregs; s++)
+ {
+ new_used |= (1 << s);
+ if (cif->vfp_used & (1 << s))
+ {
+ reg += align;
+ goto next_reg;
+ }
+ }
+ /* Found regs to allocate. */
+ cif->vfp_used |= new_used;
+ cif->vfp_args[cif->vfp_nargs++] = (signed char)reg;
+
+ /* Update vfp_reg_free. */
+ if (cif->vfp_used & (1 << cif->vfp_reg_free))
+ {
+ reg += nregs;
+ while (cif->vfp_used & (1 << reg))
+ reg += 1;
+ cif->vfp_reg_free = reg;
+ }
+ return 0;
+ next_reg:;
+ }
+ // done, mark all regs as used
+ cif->vfp_reg_free = 16;
+ cif->vfp_used = 0xFFFF;
+ return 1;
+}
+
+static void
+layout_vfp_args (ffi_cif * cif)
+{
+ unsigned int i;
+ /* Init VFP fields */
+ cif->vfp_used = 0;
+ cif->vfp_nargs = 0;
+ cif->vfp_reg_free = 0;
+ memset (cif->vfp_args, -1, 16); /* Init to -1. */
+
+ for (i = 0; i < cif->nargs; i++)
+ {
+ int h = vfp_type_p (cif->arg_types[i]);
+ if (h && place_vfp_arg (cif, h) == 1)
+ break;
+ }
+}
+
+#endif /* __arm__ or _M_ARM */
+
+
+====================File: src/arm/ffitarget.h====================
+/* -----------------------------------------------------------------*-C-*-
+ ffitarget.h - Copyright (c) 2012 Anthony Green
+ Copyright (c) 2010 CodeSourcery
+ Copyright (c) 1996-2003 Red Hat, Inc.
+
+ Target configuration macros for ARM.
+
+ 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.
+
+ ----------------------------------------------------------------------- */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
+#endif
+
+#ifndef LIBFFI_ASM
+typedef unsigned long ffi_arg;
+typedef signed long ffi_sarg;
+
+typedef enum ffi_abi {
+ FFI_FIRST_ABI = 0,
+ FFI_SYSV,
+ FFI_VFP,
+ FFI_LAST_ABI,
+#if defined(__ARM_PCS_VFP) || defined(_M_ARM)
+ FFI_DEFAULT_ABI = FFI_VFP,
+#else
+ FFI_DEFAULT_ABI = FFI_SYSV,
+#endif
+} ffi_abi;
+#endif
+
+#define FFI_EXTRA_CIF_FIELDS \
+ int vfp_used; \
+ unsigned short vfp_reg_free, vfp_nargs; \
+ signed char vfp_args[16] \
+
+#define FFI_TARGET_SPECIFIC_VARIADIC
+#ifndef _M_ARM
+#define FFI_TARGET_HAS_COMPLEX_TYPE
+#endif
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 1
+#define FFI_GO_CLOSURES 1
+#define FFI_NATIVE_RAW_API 0
+
+#if defined (FFI_EXEC_TRAMPOLINE_TABLE) && FFI_EXEC_TRAMPOLINE_TABLE
+
+#ifdef __MACH__
+#define FFI_TRAMPOLINE_SIZE 12
+#define FFI_TRAMPOLINE_CLOSURE_OFFSET 8
+#else
+#error "No trampoline table implementation"
+#endif
+
+#else
+#ifdef _MSC_VER
+#define FFI_TRAMPOLINE_SIZE 16
+#define FFI_TRAMPOLINE_CLOSURE_FUNCTION 12
+#else
+#define FFI_TRAMPOLINE_SIZE 12
+#endif
+#define FFI_TRAMPOLINE_CLOSURE_OFFSET FFI_TRAMPOLINE_SIZE
+#endif
+
+#endif
+
+
+====================File: src/arm/sysv.S====================
+/* -----------------------------------------------------------------------
+ sysv.S - Copyright (c) 1998, 2008, 2011 Red Hat, Inc.
+ Copyright (c) 2011 Plausible Labs Cooperative, Inc.
+
+ ARM Foreign Function Interface
+
+ 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.
+ ----------------------------------------------------------------------- */
+
+#ifdef __arm__
+#define LIBFFI_ASM
+#include <fficonfig.h>
+#include <ffi.h>
+#include <ffi_cfi.h>
+#include "internal.h"
+
+/* GCC 4.8 provides __ARM_ARCH; construct it otherwise. */
+#ifndef __ARM_ARCH
+# if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) \
+ || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) \
+ || defined(__ARM_ARCH_7EM__)
+# define __ARM_ARCH 7
+# elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) \
+ || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) \
+ || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__) \
+ || defined(__ARM_ARCH_6M__)
+# define __ARM_ARCH 6
+# elif defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) \
+ || defined(__ARM_ARCH_5E__) || defined(__ARM_ARCH_5TE__) \
+ || defined(__ARM_ARCH_5TEJ__)
+# define __ARM_ARCH 5
+# else
+# define __ARM_ARCH 4
+# endif
+#endif
+
+/* Conditionally compile unwinder directives. */
+#ifdef __ARM_EABI__
+# define UNWIND(...) __VA_ARGS__
+#else
+# define UNWIND(...)
+#endif
+
+#if defined(HAVE_AS_CFI_PSEUDO_OP) && defined(__ARM_EABI__)
+ .cfi_sections .debug_frame
+#endif
+
+#define CONCAT(a, b) CONCAT2(a, b)
+#define CONCAT2(a, b) a ## b
+
+#ifdef __USER_LABEL_PREFIX__
+# define CNAME(X) CONCAT (__USER_LABEL_PREFIX__, X)
+#else
+# define CNAME(X) X
+#endif
+#ifdef __ELF__
+# define SIZE(X) .size CNAME(X), . - CNAME(X)
+# define TYPE(X, Y) .type CNAME(X), Y
+#else
+# define SIZE(X)
+# define TYPE(X, Y)
+#endif
+
+#define ARM_FUNC_START_LOCAL(name) \
+ .align 3; \
+ TYPE(CNAME(name), %function); \
+ CNAME(name):
+
+#define ARM_FUNC_START(name) \
+ .globl CNAME(name); \
+ FFI_HIDDEN(CNAME(name)); \
+ ARM_FUNC_START_LOCAL(name)
+
+#define ARM_FUNC_END(name) \
+ SIZE(name)
+
+/* Aid in defining a jump table with 8 bytes between entries. */
+/* ??? The clang assembler doesn't handle .if with symbolic expressions. */
+#ifdef __clang__
+# define E(index)
+#else
+# define E(index) \
+ .if . - 0b - 8*index; \
+ .error "type table out of sync"; \
+ .endif
+#endif
+
+ .text
+ .syntax unified
+ .arm
+
+#ifndef __clang__
+ /* We require interworking on LDM, which implies ARMv5T,
+ which implies the existance of BLX. */
+ .arch armv5t
+#endif
+
+ /* Note that we use STC and LDC to encode VFP instructions,
+ so that we do not need ".fpu vfp", nor get that added to
+ the object file attributes. These will not be executed
+ unless the FFI_VFP abi is used. */
+
+ @ r0: stack
+ @ r1: frame
+ @ r2: fn
+ @ r3: vfp_used
+
+ARM_FUNC_START(ffi_call_VFP)
+ UNWIND(.fnstart)
+ cfi_startproc
+
+ cmp r3, #3 @ load only d0 if possible
+#ifdef __clang__
+ vldrle d0, [sp]
+ vldmgt sp, {d0-d7}
+#else
+ ldcle p11, cr0, [r0] @ vldrle d0, [sp]
+ ldcgt p11, cr0, [r0], {16} @ vldmgt sp, {d0-d7}
+#endif
+ add r0, r0, #64 @ discard the vfp register args
+ /* FALLTHRU */
+ARM_FUNC_END(ffi_call_VFP)
+
+ARM_FUNC_START(ffi_call_SYSV)
+ stm r1, {fp, lr}
+ mov fp, r1
+
+ @ This is a bit of a lie wrt the origin of the unwind info, but
+ @ now we've got the usual frame pointer and two saved registers.
+ UNWIND(.save {fp,lr})
+ UNWIND(.setfp fp, sp)
+ cfi_def_cfa(fp, 8)
+ cfi_rel_offset(fp, 0)
+ cfi_rel_offset(lr, 4)
+
+ mov sp, r0 @ install the stack pointer
+ mov lr, r2 @ move the fn pointer out of the way
+ ldr ip, [fp, #16] @ install the static chain
+ ldmia sp!, {r0-r3} @ move first 4 parameters in registers.
+ blx lr @ call fn
+
+ @ Load r2 with the pointer to storage for the return value
+ @ Load r3 with the return type code
+ ldr r2, [fp, #8]
+ ldr r3, [fp, #12]
+
+ @ Deallocate the stack with the arguments.
+ mov sp, fp
+ cfi_def_cfa_register(sp)
+
+ @ Store values stored in registers.
+ .align 3
+ add pc, pc, r3, lsl #3
+ nop
+0:
+E(ARM_TYPE_VFP_S)
+#ifdef __clang__
+ vstr s0, [r2]
+#else
+ stc p10, cr0, [r2] @ vstr s0, [r2]
+#endif
+ pop {fp,pc}
+E(ARM_TYPE_VFP_D)
+#ifdef __clang__
+ vstr d0, [r2]
+#else
+ stc p11, cr0, [r2] @ vstr d0, [r2]
+#endif
+ pop {fp,pc}
+E(ARM_TYPE_VFP_N)
+#ifdef __clang__
+ vstm r2, {d0-d3}
+#else
+ stc p11, cr0, [r2], {8} @ vstm r2, {d0-d3}
+#endif
+ pop {fp,pc}
+E(ARM_TYPE_INT64)
+ str r1, [r2, #4]
+ nop
+E(ARM_TYPE_INT)
+ str r0, [r2]
+ pop {fp,pc}
+E(ARM_TYPE_VOID)
+ pop {fp,pc}
+ nop
+E(ARM_TYPE_STRUCT)
+ pop {fp,pc}
+
+ cfi_endproc
+ UNWIND(.fnend)
+ARM_FUNC_END(ffi_call_SYSV)
+
+
+/*
+ int ffi_closure_inner_* (cif, fun, user_data, frame)
+*/
+
+ARM_FUNC_START(ffi_go_closure_SYSV)
+ cfi_startproc
+ stmdb sp!, {r0-r3} @ save argument regs
+ cfi_adjust_cfa_offset(16)
+ ldr r0, [ip, #4] @ load cif
+ ldr r1, [ip, #8] @ load fun
+ mov r2, ip @ load user_data
+ b 0f
+ cfi_endproc
+ARM_FUNC_END(ffi_go_closure_SYSV)
+
+ARM_FUNC_START(ffi_closure_SYSV)
+ UNWIND(.fnstart)
+ cfi_startproc
+ stmdb sp!, {r0-r3} @ save argument regs
+ cfi_adjust_cfa_offset(16)
+
+#if FFI_EXEC_TRAMPOLINE_TABLE
+ ldr ip, [ip] @ ip points to the config page, dereference to get the ffi_closure*
+#endif
+ ldr r0, [ip, #FFI_TRAMPOLINE_CLOSURE_OFFSET] @ load cif
+ ldr r1, [ip, #FFI_TRAMPOLINE_CLOSURE_OFFSET+4] @ load fun
+ ldr r2, [ip, #FFI_TRAMPOLINE_CLOSURE_OFFSET+8] @ load user_data
+0:
+ add ip, sp, #16 @ compute entry sp
+ sub sp, sp, #64+32 @ allocate frame
+ cfi_adjust_cfa_offset(64+32)
+ stmdb sp!, {ip,lr}
+
+ /* Remember that EABI unwind info only applies at call sites.
+ We need do nothing except note the save of the stack pointer
+ and the link registers. */
+ UNWIND(.save {sp,lr})
+ cfi_adjust_cfa_offset(8)
+ cfi_rel_offset(lr, 4)
+
+ add r3, sp, #8 @ load frame
+ bl CNAME(ffi_closure_inner_SYSV)
+
+ @ Load values returned in registers.
+ add r2, sp, #8+64 @ load result
+ adr r3, CNAME(ffi_closure_ret)
+ add pc, r3, r0, lsl #3
+ cfi_endproc
+ UNWIND(.fnend)
+ARM_FUNC_END(ffi_closure_SYSV)
+
+ARM_FUNC_START(ffi_go_closure_VFP)
+ cfi_startproc
+ stmdb sp!, {r0-r3} @ save argument regs
+ cfi_adjust_cfa_offset(16)
+ ldr r0, [ip, #4] @ load cif
+ ldr r1, [ip, #8] @ load fun
+ mov r2, ip @ load user_data
+ b 0f
+ cfi_endproc
+ARM_FUNC_END(ffi_go_closure_VFP)
+
+ARM_FUNC_START(ffi_closure_VFP)
+ UNWIND(.fnstart)
+ cfi_startproc
+ stmdb sp!, {r0-r3} @ save argument regs
+ cfi_adjust_cfa_offset(16)
+
+#if FFI_EXEC_TRAMPOLINE_TABLE
+ ldr ip, [ip] @ ip points to the config page, dereference to get the ffi_closure*
+#endif
+ ldr r0, [ip, #FFI_TRAMPOLINE_CLOSURE_OFFSET] @ load cif
+ ldr r1, [ip, #FFI_TRAMPOLINE_CLOSURE_OFFSET+4] @ load fun
+ ldr r2, [ip, #FFI_TRAMPOLINE_CLOSURE_OFFSET+8] @ load user_data
+0:
+ add ip, sp, #16
+ sub sp, sp, #64+32 @ allocate frame
+ cfi_adjust_cfa_offset(64+32)
+#ifdef __clang__
+ vstm sp, {d0-d7}
+#else
+ stc p11, cr0, [sp], {16} @ vstm sp, {d0-d7}
+#endif
+ stmdb sp!, {ip,lr}
+
+ /* See above. */
+ UNWIND(.save {sp,lr})
+ cfi_adjust_cfa_offset(8)
+ cfi_rel_offset(lr, 4)
+
+ add r3, sp, #8 @ load frame
+ bl CNAME(ffi_closure_inner_VFP)
+
+ @ Load values returned in registers.
+ add r2, sp, #8+64 @ load result
+ adr r3, CNAME(ffi_closure_ret)
+ add pc, r3, r0, lsl #3
+ cfi_endproc
+ UNWIND(.fnend)
+ARM_FUNC_END(ffi_closure_VFP)
+
+/* Load values returned in registers for both closure entry points.
+ Note that we use LDM with SP in the register set. This is deprecated
+ by ARM, but not yet unpredictable. */
+
+ARM_FUNC_START_LOCAL(ffi_closure_ret)
+ cfi_startproc
+ cfi_rel_offset(sp, 0)
+ cfi_rel_offset(lr, 4)
+0:
+E(ARM_TYPE_VFP_S)
+#ifdef __clang__
+ vldr s0, [r2]
+#else
+ ldc p10, cr0, [r2] @ vldr s0, [r2]
+#endif
+ ldm sp, {sp,pc}
+E(ARM_TYPE_VFP_D)
+#ifdef __clang__
+ vldr d0, [r2]
+#else
+ ldc p11, cr0, [r2] @ vldr d0, [r2]
+#endif
+ ldm sp, {sp,pc}
+E(ARM_TYPE_VFP_N)
+#ifdef __clang__
+ vldm r2, {d0-d3}
+#else
+ ldc p11, cr0, [r2], {8} @ vldm r2, {d0-d3}
+#endif
+ ldm sp, {sp,pc}
+E(ARM_TYPE_INT64)
+ ldr r1, [r2, #4]
+ nop
+E(ARM_TYPE_INT)
+ ldr r0, [r2]
+ ldm sp, {sp,pc}
+E(ARM_TYPE_VOID)
+ ldm sp, {sp,pc}
+ nop
+E(ARM_TYPE_STRUCT)
+ ldm sp, {sp,pc}
+ cfi_endproc
+ARM_FUNC_END(ffi_closure_ret)
+
+#if FFI_EXEC_TRAMPOLINE_TABLE
+
+#ifdef __MACH__
+#include <mach/machine/vm_param.h>
+
+.align PAGE_MAX_SHIFT
+ARM_FUNC_START(ffi_closure_trampoline_table_page)
+.rept PAGE_MAX_SIZE / FFI_TRAMPOLINE_SIZE
+ adr ip, #-PAGE_MAX_SIZE @ the config page is PAGE_MAX_SIZE behind the trampoline page
+ sub ip, #8 @ account for pc bias
+ ldr pc, [ip, #4] @ jump to ffi_closure_SYSV or ffi_closure_VFP
+.endr
+ARM_FUNC_END(ffi_closure_trampoline_table_page)
+#endif
+
+#else
+
+ARM_FUNC_START(ffi_arm_trampoline)
+0: adr ip, 0b
+ ldr pc, 1f
+1: .long 0
+ARM_FUNC_END(ffi_arm_trampoline)
+
+#endif /* FFI_EXEC_TRAMPOLINE_TABLE */
+#endif /* __arm__ */
+
+#if defined __ELF__ && defined __linux__
+ .section .note.GNU-stack,"",%progbits
+#endif
+
+
+====================File: src/closures.c====================
+/* -----------------------------------------------------------------------
+ closures.c - Copyright (c) 2019 Anthony Green
+ Copyright (c) 2007, 2009, 2010 Red Hat, Inc.
+ Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc
+ Copyright (c) 2011 Plausible Labs Cooperative, Inc.
+
+ Code to allocate and deallocate memory for closures.
+
+ 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.
+ ----------------------------------------------------------------------- */
+
+#if defined __linux__ && !defined _GNU_SOURCE
+#define _GNU_SOURCE 1
+#endif
+
+#include <fficonfig.h>
+#include <ffi.h>
+#include <ffi_common.h>
+
+#ifdef __NetBSD__
+#include <sys/param.h>
+#endif
+
+#if __NetBSD_Version__ - 0 >= 799007200
+/* NetBSD with PROT_MPROTECT */
+#include <sys/mman.h>
+
+#include <stddef.h>
+#include <unistd.h>
+
+static const size_t overhead =
+ (sizeof(max_align_t) > sizeof(void *) + sizeof(size_t)) ?
+ sizeof(max_align_t)
+ : sizeof(void *) + sizeof(size_t);
+
+#define ADD_TO_POINTER(p, d) ((void *)((uintptr_t)(p) + (d)))
+
+void *
+ffi_closure_alloc (size_t size, void **code)
+{
+ static size_t page_size;
+ size_t rounded_size;
+ void *codeseg, *dataseg;
+ int prot;
+
+ /* Expect that PAX mprotect is active and a separate code mapping is necessary. */
+ if (!code)
+ return NULL;
+
+ /* Obtain system page size. */
+ if (!page_size)
+ page_size = sysconf(_SC_PAGESIZE);
+
+ /* Round allocation size up to the next page, keeping in mind the size field and pointer to code map. */
+ rounded_size = (size + overhead + page_size - 1) & ~(page_size - 1);
+
+ /* Primary mapping is RW, but request permission to switch to PROT_EXEC later. */
+ prot = PROT_READ | PROT_WRITE | PROT_MPROTECT(PROT_EXEC);
+ dataseg = mmap(NULL, rounded_size, prot, MAP_ANON | MAP_PRIVATE, -1, 0);
+ if (dataseg == MAP_FAILED)
+ return NULL;
+
+ /* Create secondary mapping and switch it to RX. */
+ codeseg = mremap(dataseg, rounded_size, NULL, rounded_size, MAP_REMAPDUP);
+ if (codeseg == MAP_FAILED) {
+ munmap(dataseg, rounded_size);
+ return NULL;
+ }
+ if (mprotect(codeseg, rounded_size, PROT_READ | PROT_EXEC) == -1) {
+ munmap(codeseg, rounded_size);
+ munmap(dataseg, rounded_size);
+ return NULL;
+ }
+
+ /* Remember allocation size and location of the secondary mapping for ffi_closure_free. */
+ memcpy(dataseg, &rounded_size, sizeof(rounded_size));
+ memcpy(ADD_TO_POINTER(dataseg, sizeof(size_t)), &codeseg, sizeof(void *));
+ *code = ADD_TO_POINTER(codeseg, overhead);
+ return ADD_TO_POINTER(dataseg, overhead);
+}
+
+void
+ffi_closure_free (void *ptr)
+{
+ void *codeseg, *dataseg;
+ size_t rounded_size;
+
+ dataseg = ADD_TO_POINTER(ptr, -overhead);
+ memcpy(&rounded_size, dataseg, sizeof(rounded_size));
+ memcpy(&codeseg, ADD_TO_POINTER(dataseg, sizeof(size_t)), sizeof(void *));
+ munmap(dataseg, rounded_size);
+ munmap(codeseg, rounded_size);
+}
+#else /* !NetBSD with PROT_MPROTECT */
+
+#if !FFI_MMAP_EXEC_WRIT && !FFI_EXEC_TRAMPOLINE_TABLE
+# if __linux__ && !defined(__ANDROID__)
+/* This macro indicates it may be forbidden to map anonymous memory
+ with both write and execute permission. Code compiled when this
+ option is defined will attempt to map such pages once, but if it
+ fails, it falls back to creating a temporary file in a writable and
+ executable filesystem and mapping pages from it into separate
+ locations in the virtual memory space, one location writable and
+ another executable. */
+# define FFI_MMAP_EXEC_WRIT 1
+# define HAVE_MNTENT 1
+# endif
+# if defined(X86_WIN32) || defined(X86_WIN64) || defined(_M_ARM64) || defined(__OS2__)
+/* Windows systems may have Data Execution Protection (DEP) enabled,
+ which requires the use of VirtualMalloc/VirtualFree to alloc/free
+ executable memory. */
+# define FFI_MMAP_EXEC_WRIT 1
+# endif
+#endif
+
+#if FFI_MMAP_EXEC_WRIT && !defined FFI_MMAP_EXEC_SELINUX
+# if defined(__linux__) && !defined(__ANDROID__)
+/* When defined to 1 check for SELinux and if SELinux is active,
+ don't attempt PROT_EXEC|PROT_WRITE mapping at all, as that
+ might cause audit messages. */
+# define FFI_MMAP_EXEC_SELINUX 1
+# endif
+#endif
+
+#if FFI_CLOSURES
+
+#if FFI_EXEC_TRAMPOLINE_TABLE
+
+#ifdef __MACH__
+
+#include <mach/mach.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+extern void *ffi_closure_trampoline_table_page;
+
+typedef struct ffi_trampoline_table ffi_trampoline_table;
+typedef struct ffi_trampoline_table_entry ffi_trampoline_table_entry;
+
+struct ffi_trampoline_table
+{
+ /* contiguous writable and executable pages */
+ vm_address_t config_page;
+ vm_address_t trampoline_page;
+
+ /* free list tracking */
+ uint16_t free_count;
+ ffi_trampoline_table_entry *free_list;
+ ffi_trampoline_table_entry *free_list_pool;
+
+ ffi_trampoline_table *prev;
+ ffi_trampoline_table *next;
+};
+
+struct ffi_trampoline_table_entry
+{
+ void *(*trampoline) (void);
+ ffi_trampoline_table_entry *next;
+};
+
+/* Total number of trampolines that fit in one trampoline table */
+#define FFI_TRAMPOLINE_COUNT (PAGE_MAX_SIZE / FFI_TRAMPOLINE_SIZE)
+
+static pthread_mutex_t ffi_trampoline_lock = PTHREAD_MUTEX_INITIALIZER;
+static ffi_trampoline_table *ffi_trampoline_tables = NULL;
+
+static ffi_trampoline_table *
+ffi_trampoline_table_alloc (void)
+{
+ ffi_trampoline_table *table;
+ vm_address_t config_page;
+ vm_address_t trampoline_page;
+ vm_address_t trampoline_page_template;
+ vm_prot_t cur_prot;
+ vm_prot_t max_prot;
+ kern_return_t kt;
+ uint16_t i;
+
+ /* Allocate two pages -- a config page and a placeholder page */
+ config_page = 0x0;
+ kt = vm_allocate (mach_task_self (), &config_page, PAGE_MAX_SIZE * 2,
+ VM_FLAGS_ANYWHERE);
+ if (kt != KERN_SUCCESS)
+ return NULL;
+
+ /* Remap the trampoline table on top of the placeholder page */
+ trampoline_page = config_page + PAGE_MAX_SIZE;
+ trampoline_page_template = (vm_address_t)&ffi_closure_trampoline_table_page;
+#ifdef __arm__
+ /* ffi_closure_trampoline_table_page can be thumb-biased on some ARM archs */
+ trampoline_page_template &= ~1UL;
+#endif
+ kt = vm_remap (mach_task_self (), &trampoline_page, PAGE_MAX_SIZE, 0x0,
+ VM_FLAGS_OVERWRITE, mach_task_self (), trampoline_page_template,
+ FALSE, &cur_prot, &max_prot, VM_INHERIT_SHARE);
+ if (kt != KERN_SUCCESS)
+ {
+ vm_deallocate (mach_task_self (), config_page, PAGE_MAX_SIZE * 2);
+ return NULL;
+ }
+
+ /* We have valid trampoline and config pages */
+ table = calloc (1, sizeof (ffi_trampoline_table));
+ table->free_count = FFI_TRAMPOLINE_COUNT;
+ table->config_page = config_page;
+ table->trampoline_page = trampoline_page;
+
+ /* Create and initialize the free list */
+ table->free_list_pool =
+ calloc (FFI_TRAMPOLINE_COUNT, sizeof (ffi_trampoline_table_entry));
+
+ for (i = 0; i < table->free_count; i++)
+ {
+ ffi_trampoline_table_entry *entry = &table->free_list_pool[i];
+ entry->trampoline =
+ (void *) (table->trampoline_page + (i * FFI_TRAMPOLINE_SIZE));
+
+ if (i < table->free_count - 1)
+ entry->next = &table->free_list_pool[i + 1];
+ }
+
+ table->free_list = table->free_list_pool;
+
+ return table;
+}
+
+static void
+ffi_trampoline_table_free (ffi_trampoline_table *table)
+{
+ /* Remove from the list */
+ if (table->prev != NULL)
+ table->prev->next = table->next;
+
+ if (table->next != NULL)
+ table->next->prev = table->prev;
+
+ /* Deallocate pages */
+ vm_deallocate (mach_task_self (), table->config_page, PAGE_MAX_SIZE * 2);
+
+ /* Deallocate free list */
+ free (table->free_list_pool);
+ free (table);
+}
+
+void *
+ffi_closure_alloc (size_t size, void **code)
+{
+ /* Create the closure */
+ ffi_closure *closure = malloc (size);
+ if (closure == NULL)
+ return NULL;
+
+ pthread_mutex_lock (&ffi_trampoline_lock);
+
+ /* Check for an active trampoline table with available entries. */
+ ffi_trampoline_table *table = ffi_trampoline_tables;
+ if (table == NULL || table->free_list == NULL)
+ {
+ table = ffi_trampoline_table_alloc ();
+ if (table == NULL)
+ {
+ pthread_mutex_unlock (&ffi_trampoline_lock);
+ free (closure);
+ return NULL;
+ }
+
+ /* Insert the new table at the top of the list */
+ table->next = ffi_trampoline_tables;
+ if (table->next != NULL)
+ table->next->prev = table;
+
+ ffi_trampoline_tables = table;
+ }
+
+ /* Claim the free entry */
+ ffi_trampoline_table_entry *entry = ffi_trampoline_tables->free_list;
+ ffi_trampoline_tables->free_list = entry->next;
+ ffi_trampoline_tables->free_count--;
+ entry->next = NULL;
+
+ pthread_mutex_unlock (&ffi_trampoline_lock);
+
+ /* Initialize the return values */
+ *code = entry->trampoline;
+ closure->trampoline_table = table;
+ closure->trampoline_table_entry = entry;
+
+ return closure;
+}
+
+void
+ffi_closure_free (void *ptr)
+{
+ ffi_closure *closure = ptr;
+
+ pthread_mutex_lock (&ffi_trampoline_lock);
+
+ /* Fetch the table and entry references */
+ ffi_trampoline_table *table = closure->trampoline_table;
+ ffi_trampoline_table_entry *entry = closure->trampoline_table_entry;
+
+ /* Return the entry to the free list */
+ entry->next = table->free_list;
+ table->free_list = entry;
+ table->free_count++;
+
+ /* If all trampolines within this table are free, and at least one other table exists, deallocate
+ * the table */
+ if (table->free_count == FFI_TRAMPOLINE_COUNT
+ && ffi_trampoline_tables != table)
+ {
+ ffi_trampoline_table_free (table);
+ }
+ else if (ffi_trampoline_tables != table)
+ {
+ /* Otherwise, bump this table to the top of the list */
+ table->prev = NULL;
+ table->next = ffi_trampoline_tables;
+ if (ffi_trampoline_tables != NULL)
+ ffi_trampoline_tables->prev = table;
+
+ ffi_trampoline_tables = table;
+ }
+
+ pthread_mutex_unlock (&ffi_trampoline_lock);
+
+ /* Free the closure */
+ free (closure);
+}
+
+#endif
+
+// Per-target implementation; It's unclear what can reasonable be shared between two OS/architecture implementations.
+
+#elif FFI_MMAP_EXEC_WRIT /* !FFI_EXEC_TRAMPOLINE_TABLE */
+
+#define USE_LOCKS 1
+#define USE_DL_PREFIX 1
+#ifdef __GNUC__
+#ifndef USE_BUILTIN_FFS
+#define USE_BUILTIN_FFS 1
+#endif
+#endif
+
+/* We need to use mmap, not sbrk. */
+#define HAVE_MORECORE 0
+
+/* We could, in theory, support mremap, but it wouldn't buy us anything. */
+#define HAVE_MREMAP 0
+
+/* We have no use for this, so save some code and data. */
+#define NO_MALLINFO 1
+
+/* We need all allocations to be in regular segments, otherwise we
+ lose track of the corresponding code address. */
+#define DEFAULT_MMAP_THRESHOLD MAX_SIZE_T
+
+/* Don't allocate more than a page unless needed. */
+#define DEFAULT_GRANULARITY ((size_t)malloc_getpagesize)
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <errno.h>
+#ifndef _MSC_VER
+#include <unistd.h>
+#endif
+#include <string.h>
+#include <stdio.h>
+#if !defined(X86_WIN32) && !defined(X86_WIN64) && !defined(_M_ARM64)
+#ifdef HAVE_MNTENT
+#include <mntent.h>
+#endif /* HAVE_MNTENT */
+#include <sys/param.h>
+#include <pthread.h>
+
+/* We don't want sys/mman.h to be included after we redefine mmap and
+ dlmunmap. */
+#include <sys/mman.h>
+#define LACKS_SYS_MMAN_H 1
+
+#if FFI_MMAP_EXEC_SELINUX
+#include <sys/statfs.h>
+#include <stdlib.h>
+
+static int selinux_enabled = -1;
+
+static int
+selinux_enabled_check (void)
+{
+ struct statfs sfs;
+ FILE *f;
+ char *buf = NULL;
+ size_t len = 0;
+
+ if (statfs ("/selinux", &sfs) >= 0
+ && (unsigned int) sfs.f_type == 0xf97cff8cU)
+ return 1;
+ f = fopen ("/proc/mounts", "r");
+ if (f == NULL)
+ return 0;
+ while (getline (&buf, &len, f) >= 0)
+ {
+ char *p = strchr (buf, ' ');
+ if (p == NULL)
+ break;
+ p = strchr (p + 1, ' ');
+ if (p == NULL)
+ break;
+ if (strncmp (p + 1, "selinuxfs ", 10) == 0)
+ {
+ free (buf);
+ fclose (f);
+ return 1;
+ }
+ }
+ free (buf);
+ fclose (f);
+ return 0;
+}
+
+#define is_selinux_enabled() (selinux_enabled >= 0 ? selinux_enabled \
+ : (selinux_enabled = selinux_enabled_check ()))
+
+#else
+
+#define is_selinux_enabled() 0
+
+#endif /* !FFI_MMAP_EXEC_SELINUX */
+
+/* On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC. */
+#ifdef FFI_MMAP_EXEC_EMUTRAMP_PAX
+#include <stdlib.h>
+
+static int emutramp_enabled = -1;
+
+static int
+emutramp_enabled_check (void)
+{
+ char *buf = NULL;
+ size_t len = 0;
+ FILE *f;
+ int ret;
+ f = fopen ("/proc/self/status", "r");
+ if (f == NULL)
+ return 0;
+ ret = 0;
+
+ while (getline (&buf, &len, f) != -1)
+ if (!strncmp (buf, "PaX:", 4))
+ {
+ char emutramp;
+ if (sscanf (buf, "%*s %*c%c", &emutramp) == 1)
+ ret = (emutramp == 'E');
+ break;
+ }
+ free (buf);
+ fclose (f);
+ return ret;
+}
+
+#define is_emutramp_enabled() (emutramp_enabled >= 0 ? emutramp_enabled \
+ : (emutramp_enabled = emutramp_enabled_check ()))
+#endif /* FFI_MMAP_EXEC_EMUTRAMP_PAX */
+
+#elif defined (__CYGWIN__) || defined(__INTERIX)
+
+#include <sys/mman.h>
+
+/* Cygwin is Linux-like, but not quite that Linux-like. */
+#define is_selinux_enabled() 0
+
+#endif /* !defined(X86_WIN32) && !defined(X86_WIN64) */
+
+#ifndef FFI_MMAP_EXEC_EMUTRAMP_PAX
+#define is_emutramp_enabled() 0
+#endif /* FFI_MMAP_EXEC_EMUTRAMP_PAX */
+
+/* Declare all functions defined in dlmalloc.c as static. */
+static void *dlmalloc(size_t);
+static void dlfree(void*);
+static void *dlcalloc(size_t, size_t) MAYBE_UNUSED;
+static void *dlrealloc(void *, size_t) MAYBE_UNUSED;
+static void *dlmemalign(size_t, size_t) MAYBE_UNUSED;
+static void *dlvalloc(size_t) MAYBE_UNUSED;
+static int dlmallopt(int, int) MAYBE_UNUSED;
+static size_t dlmalloc_footprint(void) MAYBE_UNUSED;
+static size_t dlmalloc_max_footprint(void) MAYBE_UNUSED;
+static void** dlindependent_calloc(size_t, size_t, void**) MAYBE_UNUSED;
+static void** dlindependent_comalloc(size_t, size_t*, void**) MAYBE_UNUSED;
+static void *dlpvalloc(size_t) MAYBE_UNUSED;
+static int dlmalloc_trim(size_t) MAYBE_UNUSED;
+static size_t dlmalloc_usable_size(void*) MAYBE_UNUSED;
+static void dlmalloc_stats(void) MAYBE_UNUSED;
+
+#if !(defined(X86_WIN32) || defined(X86_WIN64) || defined(_M_ARM64) || defined(__OS2__)) || defined (__CYGWIN__) || defined(__INTERIX)
+/* Use these for mmap and munmap within dlmalloc.c. */
+static void *dlmmap(void *, size_t, int, int, int, off_t);
+static int dlmunmap(void *, size_t);
+#endif /* !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__) || defined(__INTERIX) */
+
+#define mmap dlmmap
+#define munmap dlmunmap
+
+#include "dlmalloc.c"
+
+#undef mmap
+#undef munmap
+
+#if !(defined(X86_WIN32) || defined(X86_WIN64) || defined(_M_ARM64) || defined(__OS2__)) || defined (__CYGWIN__) || defined(__INTERIX)
+
+/* A mutex used to synchronize access to *exec* variables in this file. */
+static pthread_mutex_t open_temp_exec_file_mutex = PTHREAD_MUTEX_INITIALIZER;
+
+/* A file descriptor of a temporary file from which we'll map
+ executable pages. */
+static int execfd = -1;
+
+/* The amount of space already allocated from the temporary file. */
+static size_t execsize = 0;
+
+/* Open a temporary file name, and immediately unlink it. */
+static int
+open_temp_exec_file_name (char *name, int flags)
+{
+ int fd;
+
+#ifdef HAVE_MKOSTEMP
+ fd = mkostemp (name, flags);
+#else
+ fd = mkstemp (name);
+#endif
+
+ if (fd != -1)
+ unlink (name);
+
+ return fd;
+}
+
+/* Open a temporary file in the named directory. */
+static int
+open_temp_exec_file_dir (const char *dir)
+{
+ static const char suffix[] = "/ffiXXXXXX";
+ int lendir, flags;
+ char *tempname;
+#ifdef O_TMPFILE
+ int fd;
+#endif
+
+#ifdef O_CLOEXEC
+ flags = O_CLOEXEC;
+#else
+ flags = 0;
+#endif
+
+#ifdef O_TMPFILE
+ fd = open (dir, flags | O_RDWR | O_EXCL | O_TMPFILE, 0700);
+ /* If the running system does not support the O_TMPFILE flag then retry without it. */
+ if (fd != -1 || (errno != EINVAL && errno != EISDIR && errno != EOPNOTSUPP)) {
+ return fd;
+ } else {
+ errno = 0;
+ }
+#endif
+
+ lendir = (int) strlen (dir);
+ tempname = __builtin_alloca (lendir + sizeof (suffix));
+
+ if (!tempname)
+ return -1;
+
+ memcpy (tempname, dir, lendir);
+ memcpy (tempname + lendir, suffix, sizeof (suffix));
+
+ return open_temp_exec_file_name (tempname, flags);
+}
+
+/* Open a temporary file in the directory in the named environment
+ variable. */
+static int
+open_temp_exec_file_env (const char *envvar)
+{
+ const char *value = getenv (envvar);
+
+ if (!value)
+ return -1;
+
+ return open_temp_exec_file_dir (value);
+}
+
+#ifdef HAVE_MNTENT
+/* Open a temporary file in an executable and writable mount point
+ listed in the mounts file. Subsequent calls with the same mounts
+ keep searching for mount points in the same file. Providing NULL
+ as the mounts file closes the file. */
+static int
+open_temp_exec_file_mnt (const char *mounts)
+{
+ static const char *last_mounts;
+ static FILE *last_mntent;
+
+ if (mounts != last_mounts)
+ {
+ if (last_mntent)
+ endmntent (last_mntent);
+
+ last_mounts = mounts;
+
+ if (mounts)
+ last_mntent = setmntent (mounts, "r");
+ else
+ last_mntent = NULL;
+ }
+
+ if (!last_mntent)
+ return -1;
+
+ for (;;)
+ {
+ int fd;
+ struct mntent mnt;
+ char buf[MAXPATHLEN * 3];
+
+ if (getmntent_r (last_mntent, &mnt, buf, sizeof (buf)) == NULL)
+ return -1;
+
+ if (hasmntopt (&mnt, "ro")
+ || hasmntopt (&mnt, "noexec")
+ || access (mnt.mnt_dir, W_OK))
+ continue;
+
+ fd = open_temp_exec_file_dir (mnt.mnt_dir);
+
+ if (fd != -1)
+ return fd;
+ }
+}
+#endif /* HAVE_MNTENT */
+
+/* Instructions to look for a location to hold a temporary file that
+ can be mapped in for execution. */
+static struct
+{
+ int (*func)(const char *);
+ const char *arg;
+ int repeat;
+} open_temp_exec_file_opts[] = {
+ { open_temp_exec_file_env, "TMPDIR", 0 },
+ { open_temp_exec_file_dir, "/tmp", 0 },
+ { open_temp_exec_file_dir, "/var/tmp", 0 },
+ { open_temp_exec_file_dir, "/dev/shm", 0 },
+ { open_temp_exec_file_env, "HOME", 0 },
+#ifdef HAVE_MNTENT
+ { open_temp_exec_file_mnt, "/etc/mtab", 1 },
+ { open_temp_exec_file_mnt, "/proc/mounts", 1 },
+#endif /* HAVE_MNTENT */
+};
+
+/* Current index into open_temp_exec_file_opts. */
+static int open_temp_exec_file_opts_idx = 0;
+
+/* Reset a current multi-call func, then advances to the next entry.
+ If we're at the last, go back to the first and return nonzero,
+ otherwise return zero. */
+static int
+open_temp_exec_file_opts_next (void)
+{
+ if (open_temp_exec_file_opts[open_temp_exec_file_opts_idx].repeat)
+ open_temp_exec_file_opts[open_temp_exec_file_opts_idx].func (NULL);
+
+ open_temp_exec_file_opts_idx++;
+ if (open_temp_exec_file_opts_idx
+ == (sizeof (open_temp_exec_file_opts)
+ / sizeof (*open_temp_exec_file_opts)))
+ {
+ open_temp_exec_file_opts_idx = 0;
+ return 1;
+ }
+
+ return 0;
+}
+
+/* Return a file descriptor of a temporary zero-sized file in a
+ writable and executable filesystem. */
+static int
+open_temp_exec_file (void)
+{
+ int fd;
+
+ do
+ {
+ fd = open_temp_exec_file_opts[open_temp_exec_file_opts_idx].func
+ (open_temp_exec_file_opts[open_temp_exec_file_opts_idx].arg);
+
+ if (!open_temp_exec_file_opts[open_temp_exec_file_opts_idx].repeat
+ || fd == -1)
+ {
+ if (open_temp_exec_file_opts_next ())
+ break;
+ }
+ }
+ while (fd == -1);
+
+ return fd;
+}
+
+/* We need to allocate space in a file that will be backing a writable
+ mapping. Several problems exist with the usual approaches:
+ - fallocate() is Linux-only
+ - posix_fallocate() is not available on all platforms
+ - ftruncate() does not allocate space on filesystems with sparse files
+ Failure to allocate the space will cause SIGBUS to be thrown when
+ the mapping is subsequently written to. */
+static int
+allocate_space (int fd, off_t offset, off_t len)
+{
+ static size_t page_size;
+
+ /* Obtain system page size. */
+ if (!page_size)
+ page_size = sysconf(_SC_PAGESIZE);
+
+ unsigned char buf[page_size];
+ memset (buf, 0, page_size);
+
+ while (len > 0)
+ {
+ off_t to_write = (len < page_size) ? len : page_size;
+ if (write (fd, buf, to_write) < to_write)
+ return -1;
+ len -= to_write;
+ }
+
+ return 0;
+}
+
+/* Map in a chunk of memory from the temporary exec file into separate
+ locations in the virtual memory address space, one writable and one
+ executable. Returns the address of the writable portion, after
+ storing an offset to the corresponding executable portion at the
+ last word of the requested chunk. */
+static void *
+dlmmap_locked (void *start, size_t length, int prot, int flags, off_t offset)
+{
+ void *ptr;
+
+ if (execfd == -1)
+ {
+ open_temp_exec_file_opts_idx = 0;
+ retry_open:
+ execfd = open_temp_exec_file ();
+ if (execfd == -1)
+ return MFAIL;
+ }
+
+ offset = execsize;
+
+ if (allocate_space (execfd, offset, length))
+ return MFAIL;
+
+ flags &= ~(MAP_PRIVATE | MAP_ANONYMOUS);
+ flags |= MAP_SHARED;
+
+ ptr = mmap (NULL, length, (prot & ~PROT_WRITE) | PROT_EXEC,
+ flags, execfd, offset);
+ if (ptr == MFAIL)
+ {
+ if (!offset)
+ {
+ close (execfd);
+ goto retry_open;
+ }
+ if (ftruncate (execfd, offset) != 0)
+ {
+ /* Fixme : Error logs can be added here. Returning an error for
+ * ftruncte() will not add any advantage as it is being
+ * validating in the error case. */
+ }
+
+ return MFAIL;
+ }
+ else if (!offset
+ && open_temp_exec_file_opts[open_temp_exec_file_opts_idx].repeat)
+ open_temp_exec_file_opts_next ();
+
+ start = mmap (start, length, prot, flags, execfd, offset);
+
+ if (start == MFAIL)
+ {
+ munmap (ptr, length);
+ if (ftruncate (execfd, offset) != 0)
+ {
+ /* Fixme : Error logs can be added here. Returning an error for
+ * ftruncte() will not add any advantage as it is being
+ * validating in the error case. */
+ }
+ return start;
+ }
+
+ mmap_exec_offset ((char *)start, length) = (char*)ptr - (char*)start;
+
+ execsize += length;
+
+ return start;
+}
+
+/* Map in a writable and executable chunk of memory if possible.
+ Failing that, fall back to dlmmap_locked. */
+static void *
+dlmmap (void *start, size_t length, int prot,
+ int flags, int fd, off_t offset)
+{
+ void *ptr;
+
+ assert (start == NULL && length % malloc_getpagesize == 0
+ && prot == (PROT_READ | PROT_WRITE)
+ && flags == (MAP_PRIVATE | MAP_ANONYMOUS)
+ && fd == -1 && offset == 0);
+
+ if (execfd == -1 && is_emutramp_enabled ())
+ {
+ ptr = mmap (start, length, prot & ~PROT_EXEC, flags, fd, offset);
+ return ptr;
+ }
+
+ if (execfd == -1 && !is_selinux_enabled ())
+ {
+ ptr = mmap (start, length, prot | PROT_EXEC, flags, fd, offset);
+
+ if (ptr != MFAIL || (errno != EPERM && errno != EACCES))
+ /* Cool, no need to mess with separate segments. */
+ return ptr;
+
+ /* If MREMAP_DUP is ever introduced and implemented, try mmap
+ with ((prot & ~PROT_WRITE) | PROT_EXEC) and mremap with
+ MREMAP_DUP and prot at this point. */
+ }
+
+ if (execsize == 0 || execfd == -1)
+ {
+ pthread_mutex_lock (&open_temp_exec_file_mutex);
+ ptr = dlmmap_locked (start, length, prot, flags, offset);
+ pthread_mutex_unlock (&open_temp_exec_file_mutex);
+
+ return ptr;
+ }
+
+ return dlmmap_locked (start, length, prot, flags, offset);
+}
+
+/* Release memory at the given address, as well as the corresponding
+ executable page if it's separate. */
+static int
+dlmunmap (void *start, size_t length)
+{
+ /* We don't bother decreasing execsize or truncating the file, since
+ we can't quite tell whether we're unmapping the end of the file.
+ We don't expect frequent deallocation anyway. If we did, we
+ could locate pages in the file by writing to the pages being
+ deallocated and checking that the file contents change.
+ Yuck. */
+ msegmentptr seg = segment_holding (gm, start);
+ void *code;
+
+ if (seg && (code = add_segment_exec_offset (start, seg)) != start)
+ {
+ int ret = munmap (code, length);
+ if (ret)
+ return ret;
+ }
+
+ return munmap (start, length);
+}
+
+#if FFI_CLOSURE_FREE_CODE
+/* Return segment holding given code address. */
+static msegmentptr
+segment_holding_code (mstate m, char* addr)
+{
+ msegmentptr sp = &m->seg;
+ for (;;) {
+ if (addr >= add_segment_exec_offset (sp->base, sp)
+ && addr < add_segment_exec_offset (sp->base, sp) + sp->size)
+ return sp;
+ if ((sp = sp->next) == 0)
+ return 0;
+ }
+}
+#endif
+
+#endif /* !(defined(X86_WIN32) || defined(X86_WIN64) || defined(_M_ARM64) || defined(__OS2__)) || defined (__CYGWIN__) || defined(__INTERIX) */
+
+/* Allocate a chunk of memory with the given size. Returns a pointer
+ to the writable address, and sets *CODE to the executable
+ corresponding virtual address. */
+void *
+ffi_closure_alloc (size_t size, void **code)
+{
+ void *ptr;
+
+ if (!code)
+ return NULL;
+
+ ptr = dlmalloc (size);
+
+ if (ptr)
+ {
+ msegmentptr seg = segment_holding (gm, ptr);
+
+ *code = add_segment_exec_offset (ptr, seg);
+ }
+
+ return ptr;
+}
+
+void *
+ffi_data_to_code_pointer (void *data)
+{
+ msegmentptr seg = segment_holding (gm, data);
+ /* We expect closures to be allocated with ffi_closure_alloc(), in
+ which case seg will be non-NULL. However, some users take on the
+ burden of managing this memory themselves, in which case this
+ we'll just return data. */
+ if (seg)
+ return add_segment_exec_offset (data, seg);
+ else
+ return data;
+}
+
+/* Release a chunk of memory allocated with ffi_closure_alloc. If
+ FFI_CLOSURE_FREE_CODE is nonzero, the given address can be the
+ writable or the executable address given. Otherwise, only the
+ writable address can be provided here. */
+void
+ffi_closure_free (void *ptr)
+{
+#if FFI_CLOSURE_FREE_CODE
+ msegmentptr seg = segment_holding_code (gm, ptr);
+
+ if (seg)
+ ptr = sub_segment_exec_offset (ptr, seg);
+#endif
+
+ dlfree (ptr);
+}
+
+# else /* ! FFI_MMAP_EXEC_WRIT */
+
+/* On many systems, memory returned by malloc is writable and
+ executable, so just use it. */
+
+#include <stdlib.h>
+
+void *
+ffi_closure_alloc (size_t size, void **code)
+{
+ if (!code)
+ return NULL;
+
+ return *code = malloc (size);
+}
+
+void
+ffi_closure_free (void *ptr)
+{
+ free (ptr);
+}
+
+void *
+ffi_data_to_code_pointer (void *data)
+{
+ return data;
+}
+
+# endif /* ! FFI_MMAP_EXEC_WRIT */
+#endif /* FFI_CLOSURES */
+
+#endif /* NetBSD with PROT_MPROTECT */
+
+
+====================File: src/java_raw_api.c====================
+/* -----------------------------------------------------------------------
+ java_raw_api.c - Copyright (c) 1999, 2007, 2008 Red Hat, Inc.
+
+ Cloned from raw_api.c
+
+ Raw_api.c author: Kresten Krab Thorup <krab@gnu.org>
+ Java_raw_api.c author: Hans-J. Boehm <hboehm@hpl.hp.com>
+
+ $Id $
+
+ 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.
+ ----------------------------------------------------------------------- */
+
+/* This defines a Java- and 64-bit specific variant of the raw API. */
+/* It assumes that "raw" argument blocks look like Java stacks on a */
+/* 64-bit machine. Arguments that can be stored in a single stack */
+/* stack slots (longs, doubles) occupy 128 bits, but only the first */
+/* 64 bits are actually used. */
+
+#include <ffi.h>
+#include <ffi_common.h>
+#include <stdlib.h>
+
+#if !defined(NO_JAVA_RAW_API)
+
+size_t
+ffi_java_raw_size (ffi_cif *cif)
+{
+ size_t result = 0;
+ int i;
+
+ ffi_type **at = cif->arg_types;
+
+ for (i = cif->nargs-1; i >= 0; i--, at++)
+ {
+ switch((*at) -> type) {
+ case FFI_TYPE_UINT64:
+ case FFI_TYPE_SINT64:
+ case FFI_TYPE_DOUBLE:
+ result += 2 * FFI_SIZEOF_JAVA_RAW;
+ break;
+ case FFI_TYPE_STRUCT:
+ /* No structure parameters in Java. */
+ abort();
+ case FFI_TYPE_COMPLEX:
+ /* Not supported yet. */
+ abort();
+ default:
+ result += FFI_SIZEOF_JAVA_RAW;
+ }
+ }
+
+ return result;
+}
+
+
+void
+ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_java_raw *raw, void **args)
+{
+ unsigned i;
+ ffi_type **tp = cif->arg_types;
+
+#if WORDS_BIGENDIAN
+
+ for (i = 0; i < cif->nargs; i++, tp++, args++)
+ {
+ switch ((*tp)->type)
+ {
+ case FFI_TYPE_UINT8:
+ case FFI_TYPE_SINT8:
+ *args = (void*) ((char*)(raw++) + 3);
+ break;
+
+ case FFI_TYPE_UINT16:
+ case FFI_TYPE_SINT16:
+ *args = (void*) ((char*)(raw++) + 2);
+ break;
+
+#if FFI_SIZEOF_JAVA_RAW == 8
+ case FFI_TYPE_UINT64:
+ case FFI_TYPE_SINT64:
+ case FFI_TYPE_DOUBLE:
+ *args = (void *)raw;
+ raw += 2;
+ break;
+#endif
+
+ case FFI_TYPE_POINTER:
+ *args = (void*) &(raw++)->ptr;
+ break;
+
+ case FFI_TYPE_COMPLEX:
+ /* Not supported yet. */
+ abort();
+
+ default:
+ *args = raw;
+ raw +=
+ FFI_ALIGN ((*tp)->size, sizeof(ffi_java_raw)) / sizeof(ffi_java_raw);
+ }
+ }
+
+#else /* WORDS_BIGENDIAN */
+
+#if !PDP
+
+ /* then assume little endian */
+ for (i = 0; i < cif->nargs; i++, tp++, args++)
+ {
+#if FFI_SIZEOF_JAVA_RAW == 8
+ switch((*tp)->type) {
+ case FFI_TYPE_UINT64:
+ case FFI_TYPE_SINT64:
+ case FFI_TYPE_DOUBLE:
+ *args = (void*) raw;
+ raw += 2;
+ break;
+ case FFI_TYPE_COMPLEX:
+ /* Not supported yet. */
+ abort();
+ default:
+ *args = (void*) raw++;
+ }
+#else /* FFI_SIZEOF_JAVA_RAW != 8 */
+ *args = (void*) raw;
+ raw +=
+ FFI_ALIGN ((*tp)->size, sizeof(ffi_java_raw)) / sizeof(ffi_java_raw);
+#endif /* FFI_SIZEOF_JAVA_RAW == 8 */
+ }
+
+#else
+#error "pdp endian not supported"
+#endif /* ! PDP */
+
+#endif /* WORDS_BIGENDIAN */
+}
+
+void
+ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_java_raw *raw)
+{
+ unsigned i;
+ ffi_type **tp = cif->arg_types;
+
+ for (i = 0; i < cif->nargs; i++, tp++, args++)
+ {
+ switch ((*tp)->type)
+ {
+ case FFI_TYPE_UINT8:
+#if WORDS_BIGENDIAN
+ *(UINT32*)(raw++) = *(UINT8*) (*args);
+#else
+ (raw++)->uint = *(UINT8*) (*args);
+#endif
+ break;
+
+ case FFI_TYPE_SINT8:
+#if WORDS_BIGENDIAN
+ *(SINT32*)(raw++) = *(SINT8*) (*args);
+#else
+ (raw++)->sint = *(SINT8*) (*args);
+#endif
+ break;
+
+ case FFI_TYPE_UINT16:
+#if WORDS_BIGENDIAN
+ *(UINT32*)(raw++) = *(UINT16*) (*args);
+#else
+ (raw++)->uint = *(UINT16*) (*args);
+#endif
+ break;
+
+ case FFI_TYPE_SINT16:
+#if WORDS_BIGENDIAN
+ *(SINT32*)(raw++) = *(SINT16*) (*args);
+#else
+ (raw++)->sint = *(SINT16*) (*args);
+#endif
+ break;
+
+ case FFI_TYPE_UINT32:
+#if WORDS_BIGENDIAN
+ *(UINT32*)(raw++) = *(UINT32*) (*args);
+#else
+ (raw++)->uint = *(UINT32*) (*args);
+#endif
+ break;
+
+ case FFI_TYPE_SINT32:
+#if WORDS_BIGENDIAN
+ *(SINT32*)(raw++) = *(SINT32*) (*args);
+#else
+ (raw++)->sint = *(SINT32*) (*args);
+#endif
+ break;
+
+ case FFI_TYPE_FLOAT:
+ (raw++)->flt = *(FLOAT32*) (*args);
+ break;
+
+#if FFI_SIZEOF_JAVA_RAW == 8
+ case FFI_TYPE_UINT64:
+ case FFI_TYPE_SINT64:
+ case FFI_TYPE_DOUBLE:
+ raw->uint = *(UINT64*) (*args);
+ raw += 2;
+ break;
+#endif
+
+ case FFI_TYPE_POINTER:
+ (raw++)->ptr = **(void***) args;
+ break;
+
+ default:
+#if FFI_SIZEOF_JAVA_RAW == 8
+ FFI_ASSERT(0); /* Should have covered all cases */
+#else
+ memcpy ((void*) raw->data, (void*)*args, (*tp)->size);
+ raw +=
+ FFI_ALIGN ((*tp)->size, sizeof(ffi_java_raw)) / sizeof(ffi_java_raw);
+#endif
+ }
+ }
+}
+
+#if !FFI_NATIVE_RAW_API
+
+static void
+ffi_java_rvalue_to_raw (ffi_cif *cif, void *rvalue)
+{
+#if WORDS_BIGENDIAN && FFI_SIZEOF_ARG == 8
+ switch (cif->rtype->type)
+ {
+ case FFI_TYPE_UINT8:
+ case FFI_TYPE_UINT16:
+ case FFI_TYPE_UINT32:
+ *(UINT64 *)rvalue <<= 32;
+ break;
+
+ case FFI_TYPE_SINT8:
+ case FFI_TYPE_SINT16:
+ case FFI_TYPE_SINT32:
+ case FFI_TYPE_INT:
+#if FFI_SIZEOF_JAVA_RAW == 4
+ case FFI_TYPE_POINTER:
+#endif
+ *(SINT64 *)rvalue <<= 32;
+ break;
+
+ case FFI_TYPE_COMPLEX:
+ /* Not supported yet. */
+ abort();
+
+ default:
+ break;
+ }
+#endif
+}
+
+static void
+ffi_java_raw_to_rvalue (ffi_cif *cif, void *rvalue)
+{
+#if WORDS_BIGENDIAN && FFI_SIZEOF_ARG == 8
+ switch (cif->rtype->type)
+ {
+ case FFI_TYPE_UINT8:
+ case FFI_TYPE_UINT16:
+ case FFI_TYPE_UINT32:
+ *(UINT64 *)rvalue >>= 32;
+ break;
+
+ case FFI_TYPE_SINT8:
+ case FFI_TYPE_SINT16:
+ case FFI_TYPE_SINT32:
+ case FFI_TYPE_INT:
+ *(SINT64 *)rvalue >>= 32;
+ break;
+
+ case FFI_TYPE_COMPLEX:
+ /* Not supported yet. */
+ abort();
+
+ default:
+ break;
+ }
+#endif
+}
+
+/* This is a generic definition of ffi_raw_call, to be used if the
+ * native system does not provide a machine-specific implementation.
+ * Having this, allows code to be written for the raw API, without
+ * the need for system-specific code to handle input in that format;
+ * these following couple of functions will handle the translation forth
+ * and back automatically. */
+
+void ffi_java_raw_call (ffi_cif *cif, void (*fn)(void), void *rvalue,
+ ffi_java_raw *raw)
+{
+ void **avalue = (void**) alloca (cif->nargs * sizeof (void*));
+ ffi_java_raw_to_ptrarray (cif, raw, avalue);
+ ffi_call (cif, fn, rvalue, avalue);
+ ffi_java_rvalue_to_raw (cif, rvalue);
+}
+
+#if FFI_CLOSURES /* base system provides closures */
+
+static void
+ffi_java_translate_args (ffi_cif *cif, void *rvalue,
+ void **avalue, void *user_data)
+{
+ ffi_java_raw *raw = (ffi_java_raw*)alloca (ffi_java_raw_size (cif));
+ ffi_raw_closure *cl = (ffi_raw_closure*)user_data;
+
+ ffi_java_ptrarray_to_raw (cif, avalue, raw);
+ (*cl->fun) (cif, rvalue, (ffi_raw*)raw, cl->user_data);
+ ffi_java_raw_to_rvalue (cif, rvalue);
+}
+
+ffi_status
+ffi_prep_java_raw_closure_loc (ffi_java_raw_closure* cl,
+ ffi_cif *cif,
+ void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*),
+ void *user_data,
+ void *codeloc)
+{
+ ffi_status status;
+
+ status = ffi_prep_closure_loc ((ffi_closure*) cl,
+ cif,
+ &ffi_java_translate_args,
+ codeloc,
+ codeloc);
+ if (status == FFI_OK)
+ {
+ cl->fun = fun;
+ cl->user_data = user_data;
+ }
+
+ return status;
+}
+
+/* Again, here is the generic version of ffi_prep_raw_closure, which
+ * will install an intermediate "hub" for translation of arguments from
+ * the pointer-array format, to the raw format */
+
+ffi_status
+ffi_prep_java_raw_closure (ffi_java_raw_closure* cl,
+ ffi_cif *cif,
+ void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*),
+ void *user_data)
+{
+ return ffi_prep_java_raw_closure_loc (cl, cif, fun, user_data, cl);
+}
+
+#endif /* FFI_CLOSURES */
+#endif /* !FFI_NATIVE_RAW_API */
+#endif /* !NO_JAVA_RAW_API */
+
+
+====================File: src/powerpc/aix.S====================
+/* -----------------------------------------------------------------------
+ aix.S - Copyright (c) 2002, 2009 Free Software Foundation, Inc.
+ based on darwin.S by John Hornkvist
+
+ PowerPC Assembly glue.
+
+ 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 AUTHOR 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.
+ ----------------------------------------------------------------------- */
+
+ .set r0,0
+ .set r1,1
+ .set r2,2
+ .set r3,3
+ .set r4,4
+ .set r5,5
+ .set r6,6
+ .set r7,7
+ .set r8,8
+ .set r9,9
+ .set r10,10
+ .set r11,11
+ .set r12,12
+ .set r13,13
+ .set r14,14
+ .set r15,15
+ .set r16,16
+ .set r17,17
+ .set r18,18
+ .set r19,19
+ .set r20,20
+ .set r21,21
+ .set r22,22
+ .set r23,23
+ .set r24,24
+ .set r25,25
+ .set r26,26
+ .set r27,27
+ .set r28,28
+ .set r29,29
+ .set r30,30
+ .set r31,31
+ .set f0,0
+ .set f1,1
+ .set f2,2
+ .set f3,3
+ .set f4,4
+ .set f5,5
+ .set f6,6
+ .set f7,7
+ .set f8,8
+ .set f9,9
+ .set f10,10
+ .set f11,11
+ .set f12,12
+ .set f13,13
+ .set f14,14
+ .set f15,15
+ .set f16,16
+ .set f17,17
+ .set f18,18
+ .set f19,19
+ .set f20,20
+ .set f21,21
+
+ .extern .ffi_prep_args
+
+#define LIBFFI_ASM
+#include <fficonfig.h>
+#include <ffi.h>
+#define JUMPTARGET(name) name
+#define L(x) x
+ .file "aix.S"
+ .toc
+
+ /* void ffi_call_AIX(extended_cif *ecif, unsigned long bytes,
+ * unsigned int flags, unsigned int *rvalue,
+ * void (*fn)(),
+ * void (*prep_args)(extended_cif*, unsigned *const));
+ * r3=ecif, r4=bytes, r5=flags, r6=rvalue, r7=fn, r8=prep_args
+ */
+
+.csect .text[PR]
+ .align 2
+ .globl ffi_call_AIX
+ .globl .ffi_call_AIX
+.csect ffi_call_AIX[DS]
+ffi_call_AIX:
+#ifdef __64BIT__
+ .llong .ffi_call_AIX, TOC[tc0], 0
+ .csect .text[PR]
+.ffi_call_AIX:
+ .function .ffi_call_AIX,.ffi_call_AIX,16,044,LFE..0-LFB..0
+ .bf __LINE__
+ .line 1
+LFB..0:
+ /* Save registers we use. */
+ mflr r0
+
+ std r28,-32(r1)
+ std r29,-24(r1)
+ std r30,-16(r1)
+ std r31, -8(r1)
+
+ std r0, 16(r1)
+LCFI..0:
+ mr r28, r1 /* our AP. */
+ stdux r1, r1, r4
+LCFI..1:
+
+ /* Save arguments over call... */
+ mr r31, r5 /* flags, */
+ mr r30, r6 /* rvalue, */
+ mr r29, r7 /* function address. */
+ std r2, 40(r1)
+
+ /* Call ffi_prep_args. */
+ mr r4, r1
+ bl .ffi_prep_args
+ nop
+
+ /* Now do the call. */
+ ld r0, 0(r29)
+ ld r2, 8(r29)
+ ld r11, 16(r29)
+ /* Set up cr1 with bits 4-7 of the flags. */
+ mtcrf 0x40, r31
+ mtctr r0
+ /* Load all those argument registers. */
+ /* We have set up a nice stack frame, just load it into registers. */
+ ld r3, 40+(1*8)(r1)
+ ld r4, 40+(2*8)(r1)
+ ld r5, 40+(3*8)(r1)
+ ld r6, 40+(4*8)(r1)
+ nop
+ ld r7, 40+(5*8)(r1)
+ ld r8, 40+(6*8)(r1)
+ ld r9, 40+(7*8)(r1)
+ ld r10,40+(8*8)(r1)
+
+L1:
+ /* Load all the FP registers. */
+ bf 6,L2 /* 2f + 0x18 */
+ lfd f1,-32-(13*8)(r28)
+ lfd f2,-32-(12*8)(r28)
+ lfd f3,-32-(11*8)(r28)
+ lfd f4,-32-(10*8)(r28)
+ nop
+ lfd f5,-32-(9*8)(r28)
+ lfd f6,-32-(8*8)(r28)
+ lfd f7,-32-(7*8)(r28)
+ lfd f8,-32-(6*8)(r28)
+ nop
+ lfd f9,-32-(5*8)(r28)
+ lfd f10,-32-(4*8)(r28)
+ lfd f11,-32-(3*8)(r28)
+ lfd f12,-32-(2*8)(r28)
+ nop
+ lfd f13,-32-(1*8)(r28)
+
+L2:
+ /* Make the call. */
+ bctrl
+ ld r2, 40(r1)
+
+ /* Now, deal with the return value. */
+ mtcrf 0x01, r31
+
+ bt 30, L(done_return_value)
+ bt 29, L(fp_return_value)
+ std r3, 0(r30)
+
+ /* Fall through... */
+
+L(done_return_value):
+ /* Restore the registers we used and return. */
+ mr r1, r28
+ ld r0, 16(r28)
+ ld r28, -32(r1)
+ mtlr r0
+ ld r29, -24(r1)
+ ld r30, -16(r1)
+ ld r31, -8(r1)
+ blr
+
+L(fp_return_value):
+ bf 28, L(float_return_value)
+ stfd f1, 0(r30)
+ bf 31, L(done_return_value)
+ stfd f2, 8(r30)
+ b L(done_return_value)
+L(float_return_value):
+ stfs f1, 0(r30)
+ b L(done_return_value)
+LFE..0:
+#else /* ! __64BIT__ */
+
+ .long .ffi_call_AIX, TOC[tc0], 0
+ .csect .text[PR]
+.ffi_call_AIX:
+ .function .ffi_call_AIX,.ffi_call_AIX,16,044,LFE..0-LFB..0
+ .bf __LINE__
+ .line 1
+LFB..0:
+ /* Save registers we use. */
+ mflr r0
+
+ stw r28,-16(r1)
+ stw r29,-12(r1)
+ stw r30, -8(r1)
+ stw r31, -4(r1)
+
+ stw r0, 8(r1)
+LCFI..0:
+ mr r28, r1 /* out AP. */
+ stwux r1, r1, r4
+LCFI..1:
+
+ /* Save arguments over call... */
+ mr r31, r5 /* flags, */
+ mr r30, r6 /* rvalue, */
+ mr r29, r7 /* function address, */
+ stw r2, 20(r1)
+
+ /* Call ffi_prep_args. */
+ mr r4, r1
+ bl .ffi_prep_args
+ nop
+
+ /* Now do the call. */
+ lwz r0, 0(r29)
+ lwz r2, 4(r29)
+ lwz r11, 8(r29)
+ /* Set up cr1 with bits 4-7 of the flags. */
+ mtcrf 0x40, r31
+ mtctr r0
+ /* Load all those argument registers. */
+ /* We have set up a nice stack frame, just load it into registers. */
+ lwz r3, 20+(1*4)(r1)
+ lwz r4, 20+(2*4)(r1)
+ lwz r5, 20+(3*4)(r1)
+ lwz r6, 20+(4*4)(r1)
+ nop
+ lwz r7, 20+(5*4)(r1)
+ lwz r8, 20+(6*4)(r1)
+ lwz r9, 20+(7*4)(r1)
+ lwz r10,20+(8*4)(r1)
+
+L1:
+ /* Load all the FP registers. */
+ bf 6,L2 /* 2f + 0x18 */
+ lfd f1,-16-(13*8)(r28)
+ lfd f2,-16-(12*8)(r28)
+ lfd f3,-16-(11*8)(r28)
+ lfd f4,-16-(10*8)(r28)
+ nop
+ lfd f5,-16-(9*8)(r28)
+ lfd f6,-16-(8*8)(r28)
+ lfd f7,-16-(7*8)(r28)
+ lfd f8,-16-(6*8)(r28)
+ nop
+ lfd f9,-16-(5*8)(r28)
+ lfd f10,-16-(4*8)(r28)
+ lfd f11,-16-(3*8)(r28)
+ lfd f12,-16-(2*8)(r28)
+ nop
+ lfd f13,-16-(1*8)(r28)
+
+L2:
+ /* Make the call. */
+ bctrl
+ lwz r2, 20(r1)
+
+ /* Now, deal with the return value. */
+ mtcrf 0x01, r31
+
+ bt 30, L(done_return_value)
+ bt 29, L(fp_return_value)
+ stw r3, 0(r30)
+ bf 28, L(done_return_value)
+ stw r4, 4(r30)
+
+ /* Fall through... */
+
+L(done_return_value):
+ /* Restore the registers we used and return. */
+ mr r1, r28
+ lwz r0, 8(r28)
+ lwz r28,-16(r1)
+ mtlr r0
+ lwz r29,-12(r1)
+ lwz r30, -8(r1)
+ lwz r31, -4(r1)
+ blr
+
+L(fp_return_value):
+ bf 28, L(float_return_value)
+ stfd f1, 0(r30)
+ b L(done_return_value)
+L(float_return_value):
+ stfs f1, 0(r30)
+ b L(done_return_value)
+LFE..0:
+#endif
+ .ef __LINE__
+ .long 0
+ .byte 0,0,0,1,128,4,0,0
+/* END(ffi_call_AIX) */
+
+ /* void ffi_call_go_AIX(extended_cif *ecif, unsigned long bytes,
+ * unsigned int flags, unsigned int *rvalue,
+ * void (*fn)(),
+ * void (*prep_args)(extended_cif*, unsigned *const),
+ * void *closure);
+ * r3=ecif, r4=bytes, r5=flags, r6=rvalue, r7=fn, r8=prep_args, r9=closure
+ */
+
+.csect .text[PR]
+ .align 2
+ .globl ffi_call_go_AIX
+ .globl .ffi_call_go_AIX
+.csect ffi_call_go_AIX[DS]
+ffi_call_go_AIX:
+#ifdef __64BIT__
+ .llong .ffi_call_go_AIX, TOC[tc0], 0
+ .csect .text[PR]
+.ffi_call_go_AIX:
+ .function .ffi_call_go_AIX,.ffi_call_go_AIX,16,044,LFE..1-LFB..1
+ .bf __LINE__
+ .line 1
+LFB..1:
+ /* Save registers we use. */
+ mflr r0
+
+ std r28,-32(r1)
+ std r29,-24(r1)
+ std r30,-16(r1)
+ std r31, -8(r1)
+
+ std r9, 8(r1) /* closure, saved in cr field. */
+ std r0, 16(r1)
+LCFI..2:
+ mr r28, r1 /* our AP. */
+ stdux r1, r1, r4
+LCFI..3:
+
+ /* Save arguments over call... */
+ mr r31, r5 /* flags, */
+ mr r30, r6 /* rvalue, */
+ mr r29, r7 /* function address, */
+ std r2, 40(r1)
+
+ /* Call ffi_prep_args. */
+ mr r4, r1
+ bl .ffi_prep_args
+ nop
+
+ /* Now do the call. */
+ ld r0, 0(r29)
+ ld r2, 8(r29)
+ ld r11, 8(r28) /* closure */
+ /* Set up cr1 with bits 4-7 of the flags. */
+ mtcrf 0x40, r31
+ mtctr r0
+ /* Load all those argument registers. */
+ /* We have set up a nice stack frame, just load it into registers. */
+ ld r3, 40+(1*8)(r1)
+ ld r4, 40+(2*8)(r1)
+ ld r5, 40+(3*8)(r1)
+ ld r6, 40+(4*8)(r1)
+ nop
+ ld r7, 40+(5*8)(r1)
+ ld r8, 40+(6*8)(r1)
+ ld r9, 40+(7*8)(r1)
+ ld r10,40+(8*8)(r1)
+
+ b L1
+LFE..1:
+#else /* ! __64BIT__ */
+
+ .long .ffi_call_go_AIX, TOC[tc0], 0
+ .csect .text[PR]
+.ffi_call_go_AIX:
+ .function .ffi_call_go_AIX,.ffi_call_go_AIX,16,044,LFE..1-LFB..1
+ .bf __LINE__
+ .line 1
+ /* Save registers we use. */
+LFB..1:
+ mflr r0
+
+ stw r28,-16(r1)
+ stw r29,-12(r1)
+ stw r30, -8(r1)
+ stw r31, -4(r1)
+
+ stw r9, 4(r1) /* closure, saved in cr field. */
+ stw r0, 8(r1)
+LCFI..2:
+ mr r28, r1 /* out AP. */
+ stwux r1, r1, r4
+LCFI..3:
+
+ /* Save arguments over call... */
+ mr r31, r5 /* flags, */
+ mr r30, r6 /* rvalue, */
+ mr r29, r7 /* function address, */
+ stw r2, 20(r1)
+
+ /* Call ffi_prep_args. */
+ mr r4, r1
+ bl .ffi_prep_args
+ nop
+
+ /* Now do the call. */
+ lwz r0, 0(r29)
+ lwz r2, 4(r29)
+ lwz r11, 4(r28) /* closure */
+ /* Set up cr1 with bits 4-7 of the flags. */
+ mtcrf 0x40, r31
+ mtctr r0
+ /* Load all those argument registers. */
+ /* We have set up a nice stack frame, just load it into registers. */
+ lwz r3, 20+(1*4)(r1)
+ lwz r4, 20+(2*4)(r1)
+ lwz r5, 20+(3*4)(r1)
+ lwz r6, 20+(4*4)(r1)
+ nop
+ lwz r7, 20+(5*4)(r1)
+ lwz r8, 20+(6*4)(r1)
+ lwz r9, 20+(7*4)(r1)
+ lwz r10,20+(8*4)(r1)
+
+ b L1
+LFE..1:
+#endif
+ .ef __LINE__
+ .long 0
+ .byte 0,0,0,1,128,4,0,0
+/* END(ffi_call_go_AIX) */
+
+.csect .text[PR]
+ .align 2
+ .globl ffi_call_DARWIN
+ .globl .ffi_call_DARWIN
+.csect ffi_call_DARWIN[DS]
+ffi_call_DARWIN:
+#ifdef __64BIT__
+ .llong .ffi_call_DARWIN, TOC[tc0], 0
+#else
+ .long .ffi_call_DARWIN, TOC[tc0], 0
+#endif
+ .csect .text[PR]
+.ffi_call_DARWIN:
+ blr
+ .long 0
+ .byte 0,0,0,0,0,0,0,0
+/* END(ffi_call_DARWIN) */
+
+/* EH frame stuff. */
+
+#define LR_REGNO 0x41 /* Link Register (65), see rs6000.md */
+#ifdef __64BIT__
+#define PTRSIZE 8
+#define LOG2_PTRSIZE 3
+#define FDE_ENCODING 0x1c /* DW_EH_PE_pcrel|DW_EH_PE_sdata8 */
+#define EH_DATA_ALIGN_FACT 0x78 /* LEB128 -8 */
+#else
+#define PTRSIZE 4
+#define LOG2_PTRSIZE 2
+#define FDE_ENCODING 0x1b /* DW_EH_PE_pcrel|DW_EH_PE_sdata4 */
+#define EH_DATA_ALIGN_FACT 0x7c /* LEB128 -4 */
+#endif
+ .csect _unwind.ro_[RO],4
+ .align LOG2_PTRSIZE
+ .globl _GLOBAL__F_libffi_src_powerpc_aix
+_GLOBAL__F_libffi_src_powerpc_aix:
+Lframe..1:
+ .vbyte 4,LECIE..1-LSCIE..1 /* CIE Length */
+LSCIE..1:
+ .vbyte 4,0 /* CIE Identifier Tag */
+ .byte 0x3 /* CIE Version */
+ .byte "zR" /* CIE Augmentation */
+ .byte 0
+ .byte 0x1 /* uleb128 0x1; CIE Code Alignment Factor */
+ .byte EH_DATA_ALIGN_FACT /* leb128 -4/-8; CIE Data Alignment Factor */
+ .byte 0x41 /* CIE RA Column */
+ .byte 0x1 /* uleb128 0x1; Augmentation size */
+ .byte FDE_ENCODING /* FDE Encoding (pcrel|sdata4/8) */
+ .byte 0xc /* DW_CFA_def_cfa */
+ .byte 0x1 /* uleb128 0x1; Register r1 */
+ .byte 0 /* uleb128 0x0; Offset 0 */
+ .align LOG2_PTRSIZE
+LECIE..1:
+LSFDE..1:
+ .vbyte 4,LEFDE..1-LASFDE..1 /* FDE Length */
+LASFDE..1:
+ .vbyte 4,LASFDE..1-Lframe..1 /* FDE CIE offset */
+ .vbyte PTRSIZE,LFB..0-$ /* FDE initial location */
+ .vbyte PTRSIZE,LFE..0-LFB..0 /* FDE address range */
+ .byte 0 /* uleb128 0x0; Augmentation size */
+ .byte 0x4 /* DW_CFA_advance_loc4 */
+ .vbyte 4,LCFI..0-LFB..0
+ .byte 0x11 /* DW_CFA_def_offset_extended_sf */
+ .byte LR_REGNO /* uleb128 LR_REGNO; Register LR */
+ .byte 0x7e /* leb128 -2; Offset -2 (8/16) */
+ .byte 0x9f /* DW_CFA_offset Register r31 */
+ .byte 0x1 /* uleb128 0x1; Offset 1 (-4/-8) */
+ .byte 0x9e /* DW_CFA_offset Register r30 */
+ .byte 0x2 /* uleb128 0x2; Offset 2 (-8/-16) */
+ .byte 0x9d /* DW_CFA_offset Register r29 */
+ .byte 0x3 /* uleb128 0x3; Offset 3 (-12/-24) */
+ .byte 0x9c /* DW_CFA_offset Register r28 */
+ .byte 0x4 /* uleb128 0x4; Offset 4 (-16/-32) */
+ .byte 0x4 /* DW_CFA_advance_loc4 */
+ .vbyte 4,LCFI..1-LCFI..0
+ .byte 0xd /* DW_CFA_def_cfa_register */
+ .byte 0x1c /* uleb128 28; Register r28 */
+ .align LOG2_PTRSIZE
+LEFDE..1:
+LSFDE..2:
+ .vbyte 4,LEFDE..2-LASFDE..2 /* FDE Length */
+LASFDE..2:
+ .vbyte 4,LASFDE..2-Lframe..1 /* FDE CIE offset */
+ .vbyte PTRSIZE,LFB..1-$ /* FDE initial location */
+ .vbyte PTRSIZE,LFE..1-LFB..1 /* FDE address range */
+ .byte 0 /* uleb128 0x0; Augmentation size */
+ .byte 0x4 /* DW_CFA_advance_loc4 */
+ .vbyte 4,LCFI..2-LFB..1
+ .byte 0x11 /* DW_CFA_def_offset_extended_sf */
+ .byte LR_REGNO /* uleb128 LR_REGNO; Register LR */
+ .byte 0x7e /* leb128 -2; Offset -2 (8/16) */
+ .byte 0x9f /* DW_CFA_offset Register r31 */
+ .byte 0x1 /* uleb128 0x1; Offset 1 (-4/-8) */
+ .byte 0x9e /* DW_CFA_offset Register r30 */
+ .byte 0x2 /* uleb128 0x2; Offset 2 (-8/-16) */
+ .byte 0x9d /* DW_CFA_offset Register r29 */
+ .byte 0x3 /* uleb128 0x3; Offset 3 (-12/-24) */
+ .byte 0x9c /* DW_CFA_offset Register r28 */
+ .byte 0x4 /* uleb128 0x4; Offset 4 (-16/-32) */
+ .byte 0x4 /* DW_CFA_advance_loc4 */
+ .vbyte 4,LCFI..3-LCFI..2
+ .byte 0xd /* DW_CFA_def_cfa_register */
+ .byte 0x1c /* uleb128 28; Register r28 */
+ .align LOG2_PTRSIZE
+LEFDE..2:
+ .vbyte 4,0 /* End of FDEs */
+
+ .csect .text[PR]
+ .ref _GLOBAL__F_libffi_src_powerpc_aix /* Prevents garbage collection by AIX linker */
+
+
+
+====================File: src/powerpc/aix_closure.S====================
+/* -----------------------------------------------------------------------
+ aix_closure.S - Copyright (c) 2002, 2003, 2009 Free Software Foundation, Inc.
+ based on darwin_closure.S
+
+ PowerPC Assembly glue.
+
+ 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 AUTHOR 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.
+ ----------------------------------------------------------------------- */
+
+ .set r0,0
+ .set r1,1
+ .set r2,2
+ .set r3,3
+ .set r4,4
+ .set r5,5
+ .set r6,6
+ .set r7,7
+ .set r8,8
+ .set r9,9
+ .set r10,10
+ .set r11,11
+ .set r12,12
+ .set r13,13
+ .set r14,14
+ .set r15,15
+ .set r16,16
+ .set r17,17
+ .set r18,18
+ .set r19,19
+ .set r20,20
+ .set r21,21
+ .set r22,22
+ .set r23,23
+ .set r24,24
+ .set r25,25
+ .set r26,26
+ .set r27,27
+ .set r28,28
+ .set r29,29
+ .set r30,30
+ .set r31,31
+ .set f0,0
+ .set f1,1
+ .set f2,2
+ .set f3,3
+ .set f4,4
+ .set f5,5
+ .set f6,6
+ .set f7,7
+ .set f8,8
+ .set f9,9
+ .set f10,10
+ .set f11,11
+ .set f12,12
+ .set f13,13
+ .set f14,14
+ .set f15,15
+ .set f16,16
+ .set f17,17
+ .set f18,18
+ .set f19,19
+ .set f20,20
+ .set f21,21
+
+ .extern .ffi_closure_helper_DARWIN
+ .extern .ffi_go_closure_helper_DARWIN
+
+#define LIBFFI_ASM
+#define JUMPTARGET(name) name
+#define L(x) x
+ .file "aix_closure.S"
+ .toc
+LC..60:
+ .tc L..60[TC],L..60
+ .csect .text[PR]
+ .align 2
+
+.csect .text[PR]
+ .align 2
+ .globl ffi_closure_ASM
+ .globl .ffi_closure_ASM
+.csect ffi_closure_ASM[DS]
+ffi_closure_ASM:
+#ifdef __64BIT__
+ .llong .ffi_closure_ASM, TOC[tc0], 0
+ .csect .text[PR]
+.ffi_closure_ASM:
+ .function .ffi_closure_ASM,.ffi_closure_ASM,16,044,LFE..0-LFB..0
+ .bf __LINE__
+ .line 1
+LFB..0:
+/* we want to build up an area for the parameters passed */
+/* in registers (both floating point and integer) */
+
+ /* we store gpr 3 to gpr 10 (aligned to 4)
+ in the parents outgoing area */
+ std r3, 48+(0*8)(r1)
+ std r4, 48+(1*8)(r1)
+ std r5, 48+(2*8)(r1)
+ std r6, 48+(3*8)(r1)
+ mflr r0
+
+ std r7, 48+(4*8)(r1)
+ std r8, 48+(5*8)(r1)
+ std r9, 48+(6*8)(r1)
+ std r10, 48+(7*8)(r1)
+ std r0, 16(r1) /* save the return address */
+LCFI..0:
+ /* 48 Bytes (Linkage Area) */
+ /* 64 Bytes (params) */
+ /* 16 Bytes (result) */
+ /* 104 Bytes (13*8 from FPR) */
+ /* 8 Bytes (alignment) */
+ /* 240 Bytes */
+
+ stdu r1, -240(r1) /* skip over caller save area
+ keep stack aligned to 16 */
+LCFI..1:
+
+ /* next save fpr 1 to fpr 13 (aligned to 8) */
+ stfd f1, 128+(0*8)(r1)
+ stfd f2, 128+(1*8)(r1)
+ stfd f3, 128+(2*8)(r1)
+ stfd f4, 128+(3*8)(r1)
+ stfd f5, 128+(4*8)(r1)
+ stfd f6, 128+(5*8)(r1)
+ stfd f7, 128+(6*8)(r1)
+ stfd f8, 128+(7*8)(r1)
+ stfd f9, 128+(8*8)(r1)
+ stfd f10, 128+(9*8)(r1)
+ stfd f11, 128+(10*8)(r1)
+ stfd f12, 128+(11*8)(r1)
+ stfd f13, 128+(12*8)(r1)
+
+ /* set up registers for the routine that actually does the work */
+ /* get the context pointer from the trampoline */
+ mr r3, r11
+
+ /* now load up the pointer to the result storage */
+ addi r4, r1, 112
+
+ /* now load up the pointer to the saved gpr registers */
+ addi r5, r1, 288
+
+ /* now load up the pointer to the saved fpr registers */
+ addi r6, r1, 128
+
+ /* make the call */
+ bl .ffi_closure_helper_DARWIN
+ nop
+
+.Ldoneclosure:
+
+ /* now r3 contains the return type */
+ /* so use it to look up in a table */
+ /* so we know how to deal with each type */
+
+ /* look up the proper starting point in table */
+ /* by using return type as offset */
+ lhz r3, 10(r3) /* load type from return type */
+ ld r4, LC..60(2) /* get address of jump table */
+ sldi r3, r3, 4 /* now multiply return type by 16 */
+ ld r0, 240+16(r1) /* load return address */
+ add r3, r3, r4 /* add contents of table to table address */
+ mtctr r3
+ bctr /* jump to it */
+
+/* Each fragment must be exactly 16 bytes long (4 instructions).
+ Align to 16 byte boundary for cache and dispatch efficiency. */
+ .align 4
+
+L..60:
+/* case FFI_TYPE_VOID */
+ mtlr r0
+ addi r1, r1, 240
+ blr
+ nop
+
+/* case FFI_TYPE_INT */
+ lwa r3, 112+4(r1)
+ mtlr r0
+ addi r1, r1, 240
+ blr
+
+/* case FFI_TYPE_FLOAT */
+ lfs f1, 112+0(r1)
+ mtlr r0
+ addi r1, r1, 240
+ blr
+
+/* case FFI_TYPE_DOUBLE */
+ lfd f1, 112+0(r1)
+ mtlr r0
+ addi r1, r1, 240
+ blr
+
+/* case FFI_TYPE_LONGDOUBLE */
+ lfd f1, 112+0(r1)
+ mtlr r0
+ lfd f2, 112+8(r1)
+ b L..finish
+
+/* case FFI_TYPE_UINT8 */
+ lbz r3, 112+7(r1)
+ mtlr r0
+ addi r1, r1, 240
+ blr
+
+/* case FFI_TYPE_SINT8 */
+ lbz r3, 112+7(r1)
+ mtlr r0
+ extsb r3, r3
+ b L..finish
+
+/* case FFI_TYPE_UINT16 */
+ lhz r3, 112+6(r1)
+ mtlr r0
+L..finish:
+ addi r1, r1, 240
+ blr
+
+/* case FFI_TYPE_SINT16 */
+ lha r3, 112+6(r1)
+ mtlr r0
+ addi r1, r1, 240
+ blr
+
+/* case FFI_TYPE_UINT32 */
+ lwz r3, 112+4(r1)
+ mtlr r0
+ addi r1, r1, 240
+ blr
+
+/* case FFI_TYPE_SINT32 */
+ lwa r3, 112+4(r1)
+ mtlr r0
+ addi r1, r1, 240
+ blr
+
+/* case FFI_TYPE_UINT64 */
+ ld r3, 112+0(r1)
+ mtlr r0
+ addi r1, r1, 240
+ blr
+
+/* case FFI_TYPE_SINT64 */
+ ld r3, 112+0(r1)
+ mtlr r0
+ addi r1, r1, 240
+ blr
+
+/* case FFI_TYPE_STRUCT */
+ mtlr r0
+ addi r1, r1, 240
+ blr
+ nop
+
+/* case FFI_TYPE_POINTER */
+ ld r3, 112+0(r1)
+ mtlr r0
+ addi r1, r1, 240
+ blr
+LFE..0:
+
+#else /* ! __64BIT__ */
+
+ .long .ffi_closure_ASM, TOC[tc0], 0
+ .csect .text[PR]
+.ffi_closure_ASM:
+ .function .ffi_closure_ASM,.ffi_closure_ASM,16,044,LFE..0-LFB..0
+ .bf __LINE__
+ .line 1
+LFB..0:
+/* we want to build up an area for the parameters passed */
+/* in registers (both floating point and integer) */
+
+ /* we store gpr 3 to gpr 10 (aligned to 4)
+ in the parents outgoing area */
+ stw r3, 24+(0*4)(r1)
+ stw r4, 24+(1*4)(r1)
+ stw r5, 24+(2*4)(r1)
+ stw r6, 24+(3*4)(r1)
+ mflr r0
+
+ stw r7, 24+(4*4)(r1)
+ stw r8, 24+(5*4)(r1)
+ stw r9, 24+(6*4)(r1)
+ stw r10, 24+(7*4)(r1)
+ stw r0, 8(r1)
+LCFI..0:
+ /* 24 Bytes (Linkage Area) */
+ /* 32 Bytes (params) */
+ /* 16 Bytes (result) */
+ /* 104 Bytes (13*8 from FPR) */
+ /* 176 Bytes */
+
+ stwu r1, -176(r1) /* skip over caller save area
+ keep stack aligned to 16 */
+LCFI..1:
+
+ /* next save fpr 1 to fpr 13 (aligned to 8) */
+ stfd f1, 72+(0*8)(r1)
+ stfd f2, 72+(1*8)(r1)
+ stfd f3, 72+(2*8)(r1)
+ stfd f4, 72+(3*8)(r1)
+ stfd f5, 72+(4*8)(r1)
+ stfd f6, 72+(5*8)(r1)
+ stfd f7, 72+(6*8)(r1)
+ stfd f8, 72+(7*8)(r1)
+ stfd f9, 72+(8*8)(r1)
+ stfd f10, 72+(9*8)(r1)
+ stfd f11, 72+(10*8)(r1)
+ stfd f12, 72+(11*8)(r1)
+ stfd f13, 72+(12*8)(r1)
+
+ /* set up registers for the routine that actually does the work */
+ /* get the context pointer from the trampoline */
+ mr r3, r11
+
+ /* now load up the pointer to the result storage */
+ addi r4, r1, 56
+
+ /* now load up the pointer to the saved gpr registers */
+ addi r5, r1, 200
+
+ /* now load up the pointer to the saved fpr registers */
+ addi r6, r1, 72
+
+ /* make the call */
+ bl .ffi_closure_helper_DARWIN
+ nop
+
+.Ldoneclosure:
+
+ /* now r3 contains the return type */
+ /* so use it to look up in a table */
+ /* so we know how to deal with each type */
+
+ /* look up the proper starting point in table */
+ /* by using return type as offset */
+ lhz r3, 6(r3) /* load type from return type */
+ lwz r4, LC..60(2) /* get address of jump table */
+ slwi r3, r3, 4 /* now multiply return type by 16 */
+ lwz r0, 176+8(r1) /* load return address */
+ add r3, r3, r4 /* add contents of table to table address */
+ mtctr r3
+ bctr /* jump to it */
+
+/* Each fragment must be exactly 16 bytes long (4 instructions).
+ Align to 16 byte boundary for cache and dispatch efficiency. */
+ .align 4
+
+L..60:
+/* case FFI_TYPE_VOID */
+ mtlr r0
+ addi r1, r1, 176
+ blr
+ nop
+
+/* case FFI_TYPE_INT */
+ lwz r3, 56+0(r1)
+ mtlr r0
+ addi r1, r1, 176
+ blr
+
+/* case FFI_TYPE_FLOAT */
+ lfs f1, 56+0(r1)
+ mtlr r0
+ addi r1, r1, 176
+ blr
+
+/* case FFI_TYPE_DOUBLE */
+ lfd f1, 56+0(r1)
+ mtlr r0
+ addi r1, r1, 176
+ blr
+
+/* case FFI_TYPE_LONGDOUBLE */
+ lfd f1, 56+0(r1)
+ mtlr r0
+ lfd f2, 56+8(r1)
+ b L..finish
+
+/* case FFI_TYPE_UINT8 */
+ lbz r3, 56+3(r1)
+ mtlr r0
+ addi r1, r1, 176
+ blr
+
+/* case FFI_TYPE_SINT8 */
+ lbz r3, 56+3(r1)
+ mtlr r0
+ extsb r3, r3
+ b L..finish
+
+/* case FFI_TYPE_UINT16 */
+ lhz r3, 56+2(r1)
+ mtlr r0
+ addi r1, r1, 176
+ blr
+
+/* case FFI_TYPE_SINT16 */
+ lha r3, 56+2(r1)
+ mtlr r0
+ addi r1, r1, 176
+ blr
+
+/* case FFI_TYPE_UINT32 */
+ lwz r3, 56+0(r1)
+ mtlr r0
+ addi r1, r1, 176
+ blr
+
+/* case FFI_TYPE_SINT32 */
+ lwz r3, 56+0(r1)
+ mtlr r0
+ addi r1, r1, 176
+ blr
+
+/* case FFI_TYPE_UINT64 */
+ lwz r3, 56+0(r1)
+ mtlr r0
+ lwz r4, 56+4(r1)
+ b L..finish
+
+/* case FFI_TYPE_SINT64 */
+ lwz r3, 56+0(r1)
+ mtlr r0
+ lwz r4, 56+4(r1)
+ b L..finish
+
+/* case FFI_TYPE_STRUCT */
+ mtlr r0
+ addi r1, r1, 176
+ blr
+ nop
+
+/* case FFI_TYPE_POINTER */
+ lwz r3, 56+0(r1)
+ mtlr r0
+L..finish:
+ addi r1, r1, 176
+ blr
+LFE..0:
+#endif
+ .ef __LINE__
+/* END(ffi_closure_ASM) */
+
+
+.csect .text[PR]
+ .align 2
+ .globl ffi_go_closure_ASM
+ .globl .ffi_go_closure_ASM
+.csect ffi_go_closure_ASM[DS]
+ffi_go_closure_ASM:
+#ifdef __64BIT__
+ .llong .ffi_go_closure_ASM, TOC[tc0], 0
+ .csect .text[PR]
+.ffi_go_closure_ASM:
+ .function .ffi_go_closure_ASM,.ffi_go_closure_ASM,16,044,LFE..1-LFB..1
+ .bf __LINE__
+ .line 1
+LFB..1:
+/* we want to build up an area for the parameters passed */
+/* in registers (both floating point and integer) */
+
+ /* we store gpr 3 to gpr 10 (aligned to 4)
+ in the parents outgoing area */
+ std r3, 48+(0*8)(r1)
+ std r4, 48+(1*8)(r1)
+ std r5, 48+(2*8)(r1)
+ std r6, 48+(3*8)(r1)
+ mflr r0
+
+ std r7, 48+(4*8)(r1)
+ std r8, 48+(5*8)(r1)
+ std r9, 48+(6*8)(r1)
+ std r10, 48+(7*8)(r1)
+ std r0, 16(r1) /* save the return address */
+LCFI..2:
+ /* 48 Bytes (Linkage Area) */
+ /* 64 Bytes (params) */
+ /* 16 Bytes (result) */
+ /* 104 Bytes (13*8 from FPR) */
+ /* 8 Bytes (alignment) */
+ /* 240 Bytes */
+
+ stdu r1, -240(r1) /* skip over caller save area
+ keep stack aligned to 16 */
+LCFI..3:
+
+ /* next save fpr 1 to fpr 13 (aligned to 8) */
+ stfd f1, 128+(0*8)(r1)
+ stfd f2, 128+(1*8)(r1)
+ stfd f3, 128+(2*8)(r1)
+ stfd f4, 128+(3*8)(r1)
+ stfd f5, 128+(4*8)(r1)
+ stfd f6, 128+(5*8)(r1)
+ stfd f7, 128+(6*8)(r1)
+ stfd f8, 128+(7*8)(r1)
+ stfd f9, 128+(8*8)(r1)
+ stfd f10, 128+(9*8)(r1)
+ stfd f11, 128+(10*8)(r1)
+ stfd f12, 128+(11*8)(r1)
+ stfd f13, 128+(12*8)(r1)
+
+ /* set up registers for the routine that actually does the work */
+ mr r3, r11 /* go closure */
+
+ /* now load up the pointer to the result storage */
+ addi r4, r1, 112
+
+ /* now load up the pointer to the saved gpr registers */
+ addi r5, r1, 288
+
+ /* now load up the pointer to the saved fpr registers */
+ addi r6, r1, 128
+
+ /* make the call */
+ bl .ffi_go_closure_helper_DARWIN
+ nop
+
+ b .Ldoneclosure
+LFE..1:
+
+#else /* ! __64BIT__ */
+
+ .long .ffi_go_closure_ASM, TOC[tc0], 0
+ .csect .text[PR]
+.ffi_go_closure_ASM:
+ .function .ffi_go_closure_ASM,.ffi_go_closure_ASM,16,044,LFE..1-LFB..1
+ .bf __LINE__
+ .line 1
+LFB..1:
+/* we want to build up an area for the parameters passed */
+/* in registers (both floating point and integer) */
+
+ /* we store gpr 3 to gpr 10 (aligned to 4)
+ in the parents outgoing area */
+ stw r3, 24+(0*4)(r1)
+ stw r4, 24+(1*4)(r1)
+ stw r5, 24+(2*4)(r1)
+ stw r6, 24+(3*4)(r1)
+ mflr r0
+
+ stw r7, 24+(4*4)(r1)
+ stw r8, 24+(5*4)(r1)
+ stw r9, 24+(6*4)(r1)
+ stw r10, 24+(7*4)(r1)
+ stw r0, 8(r1)
+LCFI..2:
+ /* 24 Bytes (Linkage Area) */
+ /* 32 Bytes (params) */
+ /* 16 Bytes (result) */
+ /* 104 Bytes (13*8 from FPR) */
+ /* 176 Bytes */
+
+ stwu r1, -176(r1) /* skip over caller save area
+ keep stack aligned to 16 */
+LCFI..3:
+
+ /* next save fpr 1 to fpr 13 (aligned to 8) */
+ stfd f1, 72+(0*8)(r1)
+ stfd f2, 72+(1*8)(r1)
+ stfd f3, 72+(2*8)(r1)
+ stfd f4, 72+(3*8)(r1)
+ stfd f5, 72+(4*8)(r1)
+ stfd f6, 72+(5*8)(r1)
+ stfd f7, 72+(6*8)(r1)
+ stfd f8, 72+(7*8)(r1)
+ stfd f9, 72+(8*8)(r1)
+ stfd f10, 72+(9*8)(r1)
+ stfd f11, 72+(10*8)(r1)
+ stfd f12, 72+(11*8)(r1)
+ stfd f13, 72+(12*8)(r1)
+
+ /* set up registers for the routine that actually does the work */
+ mr r3, 11 /* go closure */
+
+ /* now load up the pointer to the result storage */
+ addi r4, r1, 56
+
+ /* now load up the pointer to the saved gpr registers */
+ addi r5, r1, 200
+
+ /* now load up the pointer to the saved fpr registers */
+ addi r6, r1, 72
+
+ /* make the call */
+ bl .ffi_go_closure_helper_DARWIN
+ nop
+
+ b .Ldoneclosure
+LFE..1:
+#endif
+ .ef __LINE__
+/* END(ffi_go_closure_ASM) */
+
+/* EH frame stuff. */
+
+#define LR_REGNO 0x41 /* Link Register (65), see rs6000.md */
+#ifdef __64BIT__
+#define PTRSIZE 8
+#define LOG2_PTRSIZE 3
+#define CFA_OFFSET 0xf0,0x01 /* LEB128 240 */
+#define FDE_ENCODING 0x1c /* DW_EH_PE_pcrel|DW_EH_PE_sdata8 */
+#define EH_DATA_ALIGN_FACT 0x78 /* LEB128 -8 */
+#else
+#define PTRSIZE 4
+#define LOG2_PTRSIZE 2
+#define CFA_OFFSET 0xb0,0x01 /* LEB128 176 */
+#define FDE_ENCODING 0x1b /* DW_EH_PE_pcrel|DW_EH_PE_sdata4 */
+#define EH_DATA_ALIGN_FACT 0x7c /* LEB128 -4 */
+#endif
+
+ .csect _unwind.ro_[RO],4
+ .align LOG2_PTRSIZE
+ .globl _GLOBAL__F_libffi_src_powerpc_aix_closure
+_GLOBAL__F_libffi_src_powerpc_aix_closure:
+Lframe..1:
+ .vbyte 4,LECIE..1-LSCIE..1 /* CIE Length */
+LSCIE..1:
+ .vbyte 4,0 /* CIE Identifier Tag */
+ .byte 0x3 /* CIE Version */
+ .byte "zR" /* CIE Augmentation */
+ .byte 0
+ .byte 0x1 /* uleb128 0x1; CIE Code Alignment Factor */
+ .byte EH_DATA_ALIGN_FACT /* leb128 -4/-8; CIE Data Alignment Factor */
+ .byte LR_REGNO /* CIE RA Column */
+ .byte 0x1 /* uleb128 0x1; Augmentation size */
+ .byte FDE_ENCODING /* FDE Encoding (pcrel|sdata4/8) */
+ .byte 0xc /* DW_CFA_def_cfa */
+ .byte 0x1 /* uleb128 0x1; Register r1 */
+ .byte 0 /* uleb128 0x0; Offset 0 */
+ .align LOG2_PTRSIZE
+LECIE..1:
+LSFDE..1:
+ .vbyte 4,LEFDE..1-LASFDE..1 /* FDE Length */
+LASFDE..1:
+ .vbyte 4,LASFDE..1-Lframe..1 /* FDE CIE offset */
+ .vbyte PTRSIZE,LFB..0-$ /* FDE initial location */
+ .vbyte PTRSIZE,LFE..0-LFB..0 /* FDE address range */
+ .byte 0 /* uleb128 0x0; Augmentation size */
+ .byte 0x4 /* DW_CFA_advance_loc4 */
+ .vbyte 4,LCFI..1-LCFI..0
+ .byte 0xe /* DW_CFA_def_cfa_offset */
+ .byte CFA_OFFSET /* uleb128 176/240 */
+ .byte 0x4 /* DW_CFA_advance_loc4 */
+ .vbyte 4,LCFI..0-LFB..0
+ .byte 0x11 /* DW_CFA_offset_extended_sf */
+ .byte LR_REGNO /* uleb128 LR_REGNO; Register LR */
+ .byte 0x7e /* leb128 -2; Offset -2 (8/16) */
+ .align LOG2_PTRSIZE
+LEFDE..1:
+LSFDE..2:
+ .vbyte 4,LEFDE..2-LASFDE..2 /* FDE Length */
+LASFDE..2:
+ .vbyte 4,LASFDE..2-Lframe..1 /* FDE CIE offset */
+ .vbyte PTRSIZE,LFB..1-$ /* FDE initial location */
+ .vbyte PTRSIZE,LFE..1-LFB..1 /* FDE address range */
+ .byte 0 /* uleb128 0x0; Augmentation size */
+ .byte 0x4 /* DW_CFA_advance_loc4 */
+ .vbyte 4,LCFI..3-LCFI..2
+ .byte 0xe /* DW_CFA_def_cfa_offset */
+ .byte CFA_OFFSET /* uleb128 176/240 */
+ .byte 0x4 /* DW_CFA_advance_loc4 */
+ .vbyte 4,LCFI..2-LFB..1
+ .byte 0x11 /* DW_CFA_offset_extended_sf */
+ .byte LR_REGNO /* uleb128 LR_REGNO; Register LR */
+ .byte 0x7e /* leb128 -2; Offset -2 (8/16) */
+ .align LOG2_PTRSIZE
+LEFDE..2:
+ .vbyte 4,0 /* End of FDEs */
+
+ .csect .text[PR]
+ .ref _GLOBAL__F_libffi_src_powerpc_aix_closure /* Prevents garbage collection by AIX linker */
+
+
+
+====================File: src/powerpc/asm.h====================
+/* -----------------------------------------------------------------------
+ asm.h - Copyright (c) 1998 Geoffrey Keating
+
+ PowerPC Assembly glue.
+
+ 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 AUTHOR 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.
+ ----------------------------------------------------------------------- */
+
+#define ASM_GLOBAL_DIRECTIVE .globl
+
+
+#define C_SYMBOL_NAME(name) name
+/* Macro for a label. */
+#ifdef __STDC__
+#define C_LABEL(name) name##:
+#else
+#define C_LABEL(name) name/**/:
+#endif
+
+/* This seems to always be the case on PPC. */
+#define ALIGNARG(log2) log2
+/* For ELF we need the `.type' directive to make shared libs work right. */
+#define ASM_TYPE_DIRECTIVE(name,typearg) .type name,typearg;
+#define ASM_SIZE_DIRECTIVE(name) .size name,.-name
+
+/* If compiled for profiling, call `_mcount' at the start of each function. */
+#ifdef PROF
+/* The mcount code relies on the return address being on the stack
+ to locate our caller and so it can restore it; so store one just
+ for its benefit. */
+#ifdef PIC
+#define CALL_MCOUNT \
+ .pushsection; \
+ .section ".data"; \
+ .align ALIGNARG(2); \
+0:.long 0; \
+ .previous; \
+ mflr %r0; \
+ stw %r0,4(%r1); \
+ bl _GLOBAL_OFFSET_TABLE_@local-4; \
+ mflr %r11; \
+ lwz %r0,0b@got(%r11); \
+ bl JUMPTARGET(_mcount);
+#else /* PIC */
+#define CALL_MCOUNT \
+ .section ".data"; \
+ .align ALIGNARG(2); \
+0:.long 0; \
+ .previous; \
+ mflr %r0; \
+ lis %r11,0b@ha; \
+ stw %r0,4(%r1); \
+ addi %r0,%r11,0b@l; \
+ bl JUMPTARGET(_mcount);
+#endif /* PIC */
+#else /* PROF */
+#define CALL_MCOUNT /* Do nothing. */
+#endif /* PROF */
+
+#define ENTRY(name) \
+ ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(name); \
+ ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \
+ .align ALIGNARG(2); \
+ C_LABEL(name) \
+ CALL_MCOUNT
+
+#define EALIGN_W_0 /* No words to insert. */
+#define EALIGN_W_1 nop
+#define EALIGN_W_2 nop;nop
+#define EALIGN_W_3 nop;nop;nop
+#define EALIGN_W_4 EALIGN_W_3;nop
+#define EALIGN_W_5 EALIGN_W_4;nop
+#define EALIGN_W_6 EALIGN_W_5;nop
+#define EALIGN_W_7 EALIGN_W_6;nop
+
+/* EALIGN is like ENTRY, but does alignment to 'words'*4 bytes
+ past a 2^align boundary. */
+#ifdef PROF
+#define EFFI_ALIGN(name, alignt, words) \
+ ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(name); \
+ ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \
+ .align ALIGNARG(2); \
+ C_LABEL(name) \
+ CALL_MCOUNT \
+ b 0f; \
+ .align ALIGNARG(alignt); \
+ EALIGN_W_##words; \
+ 0:
+#else /* PROF */
+#define EFFI_ALIGN(name, alignt, words) \
+ ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(name); \
+ ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \
+ .align ALIGNARG(alignt); \
+ EALIGN_W_##words; \
+ C_LABEL(name)
+#endif
+
+#define END(name) \
+ ASM_SIZE_DIRECTIVE(name)
+
+#ifdef PIC
+#define JUMPTARGET(name) name##@plt
+#else
+#define JUMPTARGET(name) name
+#endif
+
+/* Local labels stripped out by the linker. */
+#define L(x) .L##x
+
+
+====================File: src/powerpc/darwin.S====================
+/* -----------------------------------------------------------------------
+ darwin.S - Copyright (c) 2000 John Hornkvist
+ Copyright (c) 2004, 2010 Free Software Foundation, Inc.
+
+ PowerPC Assembly glue.
+
+ 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 AUTHOR 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.
+ ----------------------------------------------------------------------- */
+
+#define LIBFFI_ASM
+#if defined(__ppc64__)
+#define MODE_CHOICE(x, y) y
+#else
+#define MODE_CHOICE(x, y) x
+#endif
+
+#define machine_choice MODE_CHOICE(ppc7400,ppc64)
+
+; Define some pseudo-opcodes for size-independent load & store of GPRs ...
+#define lgu MODE_CHOICE(lwzu, ldu)
+#define lg MODE_CHOICE(lwz,ld)
+#define sg MODE_CHOICE(stw,std)
+#define sgu MODE_CHOICE(stwu,stdu)
+#define sgux MODE_CHOICE(stwux,stdux)
+
+; ... and the size of GPRs and their storage indicator.
+#define GPR_BYTES MODE_CHOICE(4,8)
+#define LOG2_GPR_BYTES MODE_CHOICE(2,3) /* log2(GPR_BYTES) */
+#define g_long MODE_CHOICE(long, quad) /* usage is ".g_long" */
+
+; From the ABI doc: "Mac OS X ABI Function Call Guide" Version 2009-02-04.
+#define LINKAGE_SIZE MODE_CHOICE(24,48)
+#define PARAM_AREA MODE_CHOICE(32,64)
+#define SAVED_LR_OFFSET MODE_CHOICE(8,16) /* save position for lr */
+
+/* If there is any FP stuff we make space for all of the regs. */
+#define SAVED_FPR_COUNT 13
+#define FPR_SIZE 8
+#define RESULT_BYTES 16
+
+/* This should be kept in step with the same value in ffi_darwin.c. */
+#define ASM_NEEDS_REGISTERS 4
+#define SAVE_REGS_SIZE (ASM_NEEDS_REGISTERS * GPR_BYTES)
+
+#include <fficonfig.h>
+#include <ffi.h>
+
+#define JUMPTARGET(name) name
+#define L(x) x
+
+ .text
+ .align 2
+ .globl _ffi_prep_args
+
+ .align 2
+ .globl _ffi_call_DARWIN
+
+ /* We arrive here with:
+ r3 = ptr to extended cif.
+ r4 = -bytes.
+ r5 = cif flags.
+ r6 = ptr to return value.
+ r7 = fn pointer (user func).
+ r8 = fn pointer (ffi_prep_args).
+ r9 = ffi_type* for the ret val. */
+
+_ffi_call_DARWIN:
+Lstartcode:
+ mr r12,r8 /* We only need r12 until the call,
+ so it does not have to be saved. */
+LFB1:
+ /* Save the old stack pointer as AP. */
+ mr r8,r1
+LCFI0:
+
+ /* Save the retval type in parents frame. */
+ sg r9,(LINKAGE_SIZE+6*GPR_BYTES)(r8)
+
+ /* Allocate the stack space we need. */
+ sgux r1,r1,r4
+
+ /* Save registers we use. */
+ mflr r9
+ sg r9,SAVED_LR_OFFSET(r8)
+
+ sg r28,-(4 * GPR_BYTES)(r8)
+ sg r29,-(3 * GPR_BYTES)(r8)
+ sg r30,-(2 * GPR_BYTES)(r8)
+ sg r31,-( GPR_BYTES)(r8)
+
+#if !defined(POWERPC_DARWIN)
+ /* The TOC slot is reserved in the Darwin ABI and r2 is volatile. */
+ sg r2,(5 * GPR_BYTES)(r1)
+#endif
+
+LCFI1:
+
+ /* Save arguments over call. */
+ mr r31,r5 /* flags, */
+ mr r30,r6 /* rvalue, */
+ mr r29,r7 /* function address, */
+ mr r28,r8 /* our AP. */
+LCFI2:
+ /* Call ffi_prep_args. r3 = extended cif, r4 = stack ptr copy. */
+ mr r4,r1
+ li r9,0
+
+ mtctr r12 /* r12 holds address of _ffi_prep_args. */
+ bctrl
+
+#if !defined(POWERPC_DARWIN)
+ /* The TOC slot is reserved in the Darwin ABI and r2 is volatile. */
+ lg r2,(5 * GPR_BYTES)(r1)
+#endif
+ /* Now do the call.
+ Set up cr1 with bits 4-7 of the flags. */
+ mtcrf 0x40,r31
+ /* Get the address to call into CTR. */
+ mtctr r29
+ /* Load all those argument registers.
+ We have set up a nice stack frame, just load it into registers. */
+ lg r3, (LINKAGE_SIZE )(r1)
+ lg r4, (LINKAGE_SIZE + GPR_BYTES)(r1)
+ lg r5, (LINKAGE_SIZE + 2 * GPR_BYTES)(r1)
+ lg r6, (LINKAGE_SIZE + 3 * GPR_BYTES)(r1)
+ nop
+ lg r7, (LINKAGE_SIZE + 4 * GPR_BYTES)(r1)
+ lg r8, (LINKAGE_SIZE + 5 * GPR_BYTES)(r1)
+ lg r9, (LINKAGE_SIZE + 6 * GPR_BYTES)(r1)
+ lg r10,(LINKAGE_SIZE + 7 * GPR_BYTES)(r1)
+
+L1:
+ /* ... Load all the FP registers. */
+ bf 6,L2 /* No floats to load. */
+ lfd f1, -SAVE_REGS_SIZE-(13*FPR_SIZE)(r28)
+ lfd f2, -SAVE_REGS_SIZE-(12*FPR_SIZE)(r28)
+ lfd f3, -SAVE_REGS_SIZE-(11*FPR_SIZE)(r28)
+ lfd f4, -SAVE_REGS_SIZE-(10*FPR_SIZE)(r28)
+ nop
+ lfd f5, -SAVE_REGS_SIZE-( 9*FPR_SIZE)(r28)
+ lfd f6, -SAVE_REGS_SIZE-( 8*FPR_SIZE)(r28)
+ lfd f7, -SAVE_REGS_SIZE-( 7*FPR_SIZE)(r28)
+ lfd f8, -SAVE_REGS_SIZE-( 6*FPR_SIZE)(r28)
+ nop
+ lfd f9, -SAVE_REGS_SIZE-( 5*FPR_SIZE)(r28)
+ lfd f10,-SAVE_REGS_SIZE-( 4*FPR_SIZE)(r28)
+ lfd f11,-SAVE_REGS_SIZE-( 3*FPR_SIZE)(r28)
+ lfd f12,-SAVE_REGS_SIZE-( 2*FPR_SIZE)(r28)
+ nop
+ lfd f13,-SAVE_REGS_SIZE-( 1*FPR_SIZE)(r28)
+
+L2:
+ mr r12,r29 /* Put the target address in r12 as specified. */
+ mtctr r12
+ nop
+ nop
+
+ /* Make the call. */
+ bctrl
+
+ /* Now, deal with the return value. */
+
+ /* m64 structure returns can occupy the same set of registers as
+ would be used to pass such a structure as arg0 - so take care
+ not to step on any possibly hot regs. */
+
+ /* Get the flags.. */
+ mtcrf 0x03,r31 ; we need c6 & cr7 now.
+ ; FLAG_RETURNS_NOTHING also covers struct ret-by-ref.
+ bt 30,L(done_return_value) ; FLAG_RETURNS_NOTHING
+ bf 27,L(scalar_return_value) ; not FLAG_RETURNS_STRUCT
+
+ /* OK, so we have a struct. */
+#if defined(__ppc64__)
+ bt 31,L(maybe_return_128) ; FLAG_RETURNS_128BITS, special case
+
+ /* OK, we have to map the return back to a mem struct.
+ We are about to trample the parents param area, so recover the
+ return type. r29 is free, since the call is done. */
+ lg r29,(LINKAGE_SIZE + 6 * GPR_BYTES)(r28)
+
+ sg r3, (LINKAGE_SIZE )(r28)
+ sg r4, (LINKAGE_SIZE + GPR_BYTES)(r28)
+ sg r5, (LINKAGE_SIZE + 2 * GPR_BYTES)(r28)
+ sg r6, (LINKAGE_SIZE + 3 * GPR_BYTES)(r28)
+ nop
+ sg r7, (LINKAGE_SIZE + 4 * GPR_BYTES)(r28)
+ sg r8, (LINKAGE_SIZE + 5 * GPR_BYTES)(r28)
+ sg r9, (LINKAGE_SIZE + 6 * GPR_BYTES)(r28)
+ sg r10,(LINKAGE_SIZE + 7 * GPR_BYTES)(r28)
+ /* OK, so do the block move - we trust that memcpy will not trample
+ the fprs... */
+ mr r3,r30 ; dest
+ addi r4,r28,LINKAGE_SIZE ; source
+ /* The size is a size_t, should be long. */
+ lg r5,0(r29)
+ /* Figure out small structs */
+ cmpi 0,r5,4
+ bgt L3 ; 1, 2 and 4 bytes have special rules.
+ cmpi 0,r5,3
+ beq L3 ; not 3
+ addi r4,r4,8
+ subf r4,r5,r4
+L3:
+ bl _memcpy
+
+ /* ... do we need the FP registers? - recover the flags.. */
+ mtcrf 0x03,r31 ; we need c6 & cr7 now.
+ bf 29,L(done_return_value) /* No floats in the struct. */
+ stfd f1, -SAVE_REGS_SIZE-(13*FPR_SIZE)(r28)
+ stfd f2, -SAVE_REGS_SIZE-(12*FPR_SIZE)(r28)
+ stfd f3, -SAVE_REGS_SIZE-(11*FPR_SIZE)(r28)
+ stfd f4, -SAVE_REGS_SIZE-(10*FPR_SIZE)(r28)
+ nop
+ stfd f5, -SAVE_REGS_SIZE-( 9*FPR_SIZE)(r28)
+ stfd f6, -SAVE_REGS_SIZE-( 8*FPR_SIZE)(r28)
+ stfd f7, -SAVE_REGS_SIZE-( 7*FPR_SIZE)(r28)
+ stfd f8, -SAVE_REGS_SIZE-( 6*FPR_SIZE)(r28)
+ nop
+ stfd f9, -SAVE_REGS_SIZE-( 5*FPR_SIZE)(r28)
+ stfd f10,-SAVE_REGS_SIZE-( 4*FPR_SIZE)(r28)
+ stfd f11,-SAVE_REGS_SIZE-( 3*FPR_SIZE)(r28)
+ stfd f12,-SAVE_REGS_SIZE-( 2*FPR_SIZE)(r28)
+ nop
+ stfd f13,-SAVE_REGS_SIZE-( 1*FPR_SIZE)(r28)
+
+ mr r3,r29 ; ffi_type *
+ mr r4,r30 ; dest
+ addi r5,r28,-SAVE_REGS_SIZE-(13*FPR_SIZE) ; fprs
+ xor r6,r6,r6
+ sg r6,(LINKAGE_SIZE + 7 * GPR_BYTES)(r28)
+ addi r6,r28,(LINKAGE_SIZE + 7 * GPR_BYTES) ; point to a zeroed counter.
+ bl _darwin64_struct_floats_to_mem
+
+ b L(done_return_value)
+#else
+ stw r3,0(r30) ; m32 the only struct return in reg is 4 bytes.
+#endif
+ b L(done_return_value)
+
+L(fp_return_value):
+ /* Do we have long double to store? */
+ bf 31,L(fd_return_value) ; FLAG_RETURNS_128BITS
+ stfd f1,0(r30)
+ stfd f2,FPR_SIZE(r30)
+ b L(done_return_value)
+
+L(fd_return_value):
+ /* Do we have double to store? */
+ bf 28,L(float_return_value)
+ stfd f1,0(r30)
+ b L(done_return_value)
+
+L(float_return_value):
+ /* We only have a float to store. */
+ stfs f1,0(r30)
+ b L(done_return_value)
+
+L(scalar_return_value):
+ bt 29,L(fp_return_value) ; FLAG_RETURNS_FP
+ ; ffi_arg is defined as unsigned long.
+ sg r3,0(r30) ; Save the reg.
+ bf 28,L(done_return_value) ; not FLAG_RETURNS_64BITS
+
+#if defined(__ppc64__)
+L(maybe_return_128):
+ std r3,0(r30)
+ bf 31,L(done_return_value) ; not FLAG_RETURNS_128BITS
+ std r4,8(r30)
+#else
+ stw r4,4(r30)
+#endif
+
+ /* Fall through. */
+ /* We want this at the end to simplify eh epilog computation. */
+
+L(done_return_value):
+ /* Restore the registers we used and return. */
+ lg r29,SAVED_LR_OFFSET(r28)
+ ; epilog
+ lg r31,-(1 * GPR_BYTES)(r28)
+ mtlr r29
+ lg r30,-(2 * GPR_BYTES)(r28)
+ lg r29,-(3 * GPR_BYTES)(r28)
+ lg r28,-(4 * GPR_BYTES)(r28)
+ lg r1,0(r1)
+ blr
+LFE1:
+ .align 1
+/* END(_ffi_call_DARWIN) */
+
+/* Provide a null definition of _ffi_call_AIX. */
+ .text
+ .globl _ffi_call_AIX
+ .align 2
+_ffi_call_AIX:
+ blr
+/* END(_ffi_call_AIX) */
+
+/* EH stuff. */
+
+#define EH_DATA_ALIGN_FACT MODE_CHOICE(0x7c,0x78)
+
+ .section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support
+EH_frame1:
+ .set L$set$0,LECIE1-LSCIE1
+ .long L$set$0 ; Length of Common Information Entry
+LSCIE1:
+ .long 0x0 ; CIE Identifier Tag
+ .byte 0x1 ; CIE Version
+ .ascii "zR\0" ; CIE Augmentation
+ .byte 0x1 ; uleb128 0x1; CIE Code Alignment Factor
+ .byte EH_DATA_ALIGN_FACT ; sleb128 -4; CIE Data Alignment Factor
+ .byte 0x41 ; CIE RA Column
+ .byte 0x1 ; uleb128 0x1; Augmentation size
+ .byte 0x10 ; FDE Encoding (pcrel)
+ .byte 0xc ; DW_CFA_def_cfa
+ .byte 0x1 ; uleb128 0x1
+ .byte 0x0 ; uleb128 0x0
+ .align LOG2_GPR_BYTES
+LECIE1:
+
+ .globl _ffi_call_DARWIN.eh
+_ffi_call_DARWIN.eh:
+LSFDE1:
+ .set L$set$1,LEFDE1-LASFDE1
+ .long L$set$1 ; FDE Length
+LASFDE1:
+ .long LASFDE1-EH_frame1 ; FDE CIE offset
+ .g_long Lstartcode-. ; FDE initial location
+ .set L$set$3,LFE1-Lstartcode
+ .g_long L$set$3 ; FDE address range
+ .byte 0x0 ; uleb128 0x0; Augmentation size
+ .byte 0x4 ; DW_CFA_advance_loc4
+ .set L$set$4,LCFI0-Lstartcode
+ .long L$set$4
+ .byte 0xd ; DW_CFA_def_cfa_register
+ .byte 0x08 ; uleb128 0x08
+ .byte 0x4 ; DW_CFA_advance_loc4
+ .set L$set$5,LCFI1-LCFI0
+ .long L$set$5
+ .byte 0x11 ; DW_CFA_offset_extended_sf
+ .byte 0x41 ; uleb128 0x41
+ .byte 0x7e ; sleb128 -2
+ .byte 0x9f ; DW_CFA_offset, column 0x1f
+ .byte 0x1 ; uleb128 0x1
+ .byte 0x9e ; DW_CFA_offset, column 0x1e
+ .byte 0x2 ; uleb128 0x2
+ .byte 0x9d ; DW_CFA_offset, column 0x1d
+ .byte 0x3 ; uleb128 0x3
+ .byte 0x9c ; DW_CFA_offset, column 0x1c
+ .byte 0x4 ; uleb128 0x4
+ .byte 0x4 ; DW_CFA_advance_loc4
+ .set L$set$6,LCFI2-LCFI1
+ .long L$set$6
+ .byte 0xd ; DW_CFA_def_cfa_register
+ .byte 0x1c ; uleb128 0x1c
+ .align LOG2_GPR_BYTES
+LEFDE1:
+ .align 1
+
+
+
+====================File: src/powerpc/darwin_closure.S====================
+/* -----------------------------------------------------------------------
+ darwin_closure.S - Copyright (c) 2002, 2003, 2004, 2010,
+ Free Software Foundation, Inc.
+ based on ppc_closure.S
+
+ PowerPC Assembly glue.
+
+ 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 AUTHOR 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.
+ ----------------------------------------------------------------------- */
+
+#define LIBFFI_ASM
+#define L(x) x
+
+#if defined(__ppc64__)
+#define MODE_CHOICE(x, y) y
+#else
+#define MODE_CHOICE(x, y) x
+#endif
+
+#define machine_choice MODE_CHOICE(ppc7400,ppc64)
+
+; Define some pseudo-opcodes for size-independent load & store of GPRs ...
+#define lgu MODE_CHOICE(lwzu, ldu)
+#define lg MODE_CHOICE(lwz,ld)
+#define sg MODE_CHOICE(stw,std)
+#define sgu MODE_CHOICE(stwu,stdu)
+
+; ... and the size of GPRs and their storage indicator.
+#define GPR_BYTES MODE_CHOICE(4,8)
+#define LOG2_GPR_BYTES MODE_CHOICE(2,3) /* log2(GPR_BYTES) */
+#define g_long MODE_CHOICE(long, quad) /* usage is ".g_long" */
+
+; From the ABI doc: "Mac OS X ABI Function Call Guide" Version 2009-02-04.
+#define LINKAGE_SIZE MODE_CHOICE(24,48)
+#define PARAM_AREA MODE_CHOICE(32,64)
+
+#define SAVED_CR_OFFSET MODE_CHOICE(4,8) /* save position for CR */
+#define SAVED_LR_OFFSET MODE_CHOICE(8,16) /* save position for lr */
+
+/* WARNING: if ffi_type is changed... here be monsters.
+ Offsets of items within the result type. */
+#define FFI_TYPE_TYPE MODE_CHOICE(6,10)
+#define FFI_TYPE_ELEM MODE_CHOICE(8,16)
+
+#define SAVED_FPR_COUNT 13
+#define FPR_SIZE 8
+/* biggest m64 struct ret is 8GPRS + 13FPRS = 168 bytes - rounded to 16bytes = 176. */
+#define RESULT_BYTES MODE_CHOICE(16,176)
+
+; The whole stack frame **MUST** be 16byte-aligned.
+#define SAVE_SIZE (((LINKAGE_SIZE+PARAM_AREA+SAVED_FPR_COUNT*FPR_SIZE+RESULT_BYTES)+15) & -16LL)
+#define PAD_SIZE (SAVE_SIZE-(LINKAGE_SIZE+PARAM_AREA+SAVED_FPR_COUNT*FPR_SIZE+RESULT_BYTES))
+
+#define PARENT_PARM_BASE (SAVE_SIZE+LINKAGE_SIZE)
+#define FP_SAVE_BASE (LINKAGE_SIZE+PARAM_AREA)
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1050
+; We no longer need the pic symbol stub for Darwin >= 9.
+#define BLCLS_HELP _ffi_closure_helper_DARWIN
+#define STRUCT_RETVALUE_P _darwin64_struct_ret_by_value_p
+#define PASS_STR_FLOATS _darwin64_pass_struct_floats
+#undef WANT_STUB
+#else
+#define BLCLS_HELP L_ffi_closure_helper_DARWIN$stub
+#define STRUCT_RETVALUE_P L_darwin64_struct_ret_by_value_p$stub
+#define PASS_STR_FLOATS L_darwin64_pass_struct_floats$stub
+#define WANT_STUB
+#endif
+
+/* m32/m64
+
+ The stack layout looks like this:
+
+ | Additional params... | | Higher address
+ ~ ~ ~
+ | Parameters (at least 8*4/8=32/64) | | NUM_GPR_ARG_REGISTERS
+ |--------------------------------------------| |
+ | TOC=R2 (AIX) Reserved (Darwin) 4/8 | |
+ |--------------------------------------------| |
+ | Reserved 2*4/8 | |
+ |--------------------------------------------| |
+ | Space for callee`s LR 4/8 | |
+ |--------------------------------------------| |
+ | Saved CR [low word for m64] 4/8 | |
+ |--------------------------------------------| |
+ | Current backchain pointer 4/8 |-/ Parent`s frame.
+ |--------------------------------------------| <+ <<< on entry to
+ | Result Bytes 16/176 | |
+ |--------------------------------------------| |
+ ~ padding to 16-byte alignment ~ ~
+ |--------------------------------------------| |
+ | NUM_FPR_ARG_REGISTERS slots | |
+ | here fp13 .. fp1 13*8 | |
+ |--------------------------------------------| |
+ | R3..R10 8*4/8=32/64 | | NUM_GPR_ARG_REGISTERS
+ |--------------------------------------------| |
+ | TOC=R2 (AIX) Reserved (Darwin) 4/8 | |
+ |--------------------------------------------| | stack |
+ | Reserved [compiler,binder] 2*4/8 | | grows |
+ |--------------------------------------------| | down V
+ | Space for callees LR 4/8 | |
+ |--------------------------------------------| | lower addresses
+ | Saved CR [low word for m64] 4/8 | |
+ |--------------------------------------------| | stack pointer here
+ | Current backchain pointer 4/8 |-/ during
+ |--------------------------------------------| <<< call.
+
+*/
+
+ .file "darwin_closure.S"
+
+ .machine machine_choice
+
+ .text
+ .globl _ffi_closure_ASM
+ .align LOG2_GPR_BYTES
+_ffi_closure_ASM:
+LFB1:
+Lstartcode:
+ mflr r0 /* extract return address */
+ sg r0,SAVED_LR_OFFSET(r1) /* save the return address */
+LCFI0:
+ sgu r1,-SAVE_SIZE(r1) /* skip over caller save area
+ keep stack aligned to 16. */
+LCFI1:
+ /* We want to build up an area for the parameters passed
+ in registers. (both floating point and integer) */
+
+ /* Put gpr 3 to gpr 10 in the parents outgoing area...
+ ... the remainder of any params that overflowed the regs will
+ follow here. */
+ sg r3, (PARENT_PARM_BASE )(r1)
+ sg r4, (PARENT_PARM_BASE + GPR_BYTES )(r1)
+ sg r5, (PARENT_PARM_BASE + GPR_BYTES * 2)(r1)
+ sg r6, (PARENT_PARM_BASE + GPR_BYTES * 3)(r1)
+ sg r7, (PARENT_PARM_BASE + GPR_BYTES * 4)(r1)
+ sg r8, (PARENT_PARM_BASE + GPR_BYTES * 5)(r1)
+ sg r9, (PARENT_PARM_BASE + GPR_BYTES * 6)(r1)
+ sg r10,(PARENT_PARM_BASE + GPR_BYTES * 7)(r1)
+
+ /* We save fpr 1 to fpr 14 in our own save frame. */
+ stfd f1, (FP_SAVE_BASE )(r1)
+ stfd f2, (FP_SAVE_BASE + FPR_SIZE )(r1)
+ stfd f3, (FP_SAVE_BASE + FPR_SIZE * 2 )(r1)
+ stfd f4, (FP_SAVE_BASE + FPR_SIZE * 3 )(r1)
+ stfd f5, (FP_SAVE_BASE + FPR_SIZE * 4 )(r1)
+ stfd f6, (FP_SAVE_BASE + FPR_SIZE * 5 )(r1)
+ stfd f7, (FP_SAVE_BASE + FPR_SIZE * 6 )(r1)
+ stfd f8, (FP_SAVE_BASE + FPR_SIZE * 7 )(r1)
+ stfd f9, (FP_SAVE_BASE + FPR_SIZE * 8 )(r1)
+ stfd f10,(FP_SAVE_BASE + FPR_SIZE * 9 )(r1)
+ stfd f11,(FP_SAVE_BASE + FPR_SIZE * 10)(r1)
+ stfd f12,(FP_SAVE_BASE + FPR_SIZE * 11)(r1)
+ stfd f13,(FP_SAVE_BASE + FPR_SIZE * 12)(r1)
+
+ /* Set up registers for the routine that actually does the work
+ get the context pointer from the trampoline. */
+ mr r3,r11
+
+ /* Now load up the pointer to the result storage. */
+ addi r4,r1,(SAVE_SIZE-RESULT_BYTES)
+
+ /* Now load up the pointer to the saved gpr registers. */
+ addi r5,r1,PARENT_PARM_BASE
+
+ /* Now load up the pointer to the saved fpr registers. */
+ addi r6,r1,FP_SAVE_BASE
+
+ /* Make the call. */
+ bl BLCLS_HELP
+
+ /* r3 contains the rtype pointer... save it since we will need
+ it later. */
+ sg r3,LINKAGE_SIZE(r1) ; ffi_type * result_type
+ lg r0,0(r3) ; size => r0
+ lhz r3,FFI_TYPE_TYPE(r3) ; type => r3
+
+ /* The helper will have intercepted structure returns and inserted
+ the caller`s destination address for structs returned by ref. */
+
+ /* r3 contains the return type so use it to look up in a table
+ so we know how to deal with each type. */
+
+ addi r5,r1,(SAVE_SIZE-RESULT_BYTES) /* Otherwise, our return is here. */
+ bl Lget_ret_type0_addr /* Get pointer to Lret_type0 into LR. */
+ mflr r4 /* Move to r4. */
+ slwi r3,r3,4 /* Now multiply return type by 16. */
+ add r3,r3,r4 /* Add contents of table to table address. */
+ mtctr r3
+ bctr /* Jump to it. */
+LFE1:
+/* Each of the ret_typeX code fragments has to be exactly 16 bytes long
+ (4 instructions). For cache effectiveness we align to a 16 byte boundary
+ first. */
+
+ .align 4
+
+ nop
+ nop
+ nop
+Lget_ret_type0_addr:
+ blrl
+
+/* case FFI_TYPE_VOID */
+Lret_type0:
+ b Lfinish
+ nop
+ nop
+ nop
+
+/* case FFI_TYPE_INT */
+Lret_type1:
+ lg r3,0(r5)
+ b Lfinish
+ nop
+ nop
+
+/* case FFI_TYPE_FLOAT */
+Lret_type2:
+ lfs f1,0(r5)
+ b Lfinish
+ nop
+ nop
+
+/* case FFI_TYPE_DOUBLE */
+Lret_type3:
+ lfd f1,0(r5)
+ b Lfinish
+ nop
+ nop
+
+/* case FFI_TYPE_LONGDOUBLE */
+Lret_type4:
+ lfd f1,0(r5)
+ lfd f2,8(r5)
+ b Lfinish
+ nop
+
+/* case FFI_TYPE_UINT8 */
+Lret_type5:
+#if defined(__ppc64__)
+ lbz r3,7(r5)
+#else
+ lbz r3,3(r5)
+#endif
+ b Lfinish
+ nop
+ nop
+
+/* case FFI_TYPE_SINT8 */
+Lret_type6:
+#if defined(__ppc64__)
+ lbz r3,7(r5)
+#else
+ lbz r3,3(r5)
+#endif
+ extsb r3,r3
+ b Lfinish
+ nop
+
+/* case FFI_TYPE_UINT16 */
+Lret_type7:
+#if defined(__ppc64__)
+ lhz r3,6(r5)
+#else
+ lhz r3,2(r5)
+#endif
+ b Lfinish
+ nop
+ nop
+
+/* case FFI_TYPE_SINT16 */
+Lret_type8:
+#if defined(__ppc64__)
+ lha r3,6(r5)
+#else
+ lha r3,2(r5)
+#endif
+ b Lfinish
+ nop
+ nop
+
+/* case FFI_TYPE_UINT32 */
+Lret_type9:
+#if defined(__ppc64__)
+ lwz r3,4(r5)
+#else
+ lwz r3,0(r5)
+#endif
+ b Lfinish
+ nop
+ nop
+
+/* case FFI_TYPE_SINT32 */
+Lret_type10:
+#if defined(__ppc64__)
+ lwz r3,4(r5)
+#else
+ lwz r3,0(r5)
+#endif
+ b Lfinish
+ nop
+ nop
+
+/* case FFI_TYPE_UINT64 */
+Lret_type11:
+#if defined(__ppc64__)
+ lg r3,0(r5)
+ b Lfinish
+ nop
+#else
+ lwz r3,0(r5)
+ lwz r4,4(r5)
+ b Lfinish
+#endif
+ nop
+
+/* case FFI_TYPE_SINT64 */
+Lret_type12:
+#if defined(__ppc64__)
+ lg r3,0(r5)
+ b Lfinish
+ nop
+#else
+ lwz r3,0(r5)
+ lwz r4,4(r5)
+ b Lfinish
+#endif
+ nop
+
+/* case FFI_TYPE_STRUCT */
+Lret_type13:
+#if defined(__ppc64__)
+ lg r3,0(r5) ; we need at least this...
+ cmpi 0,r0,4
+ bgt Lstructend ; not a special small case
+ b Lsmallstruct ; see if we need more.
+#else
+ cmpwi 0,r0,4
+ bgt Lfinish ; not by value
+ lg r3,0(r5)
+ b Lfinish
+#endif
+/* case FFI_TYPE_POINTER */
+Lret_type14:
+ lg r3,0(r5)
+ b Lfinish
+ nop
+ nop
+
+#if defined(__ppc64__)
+Lsmallstruct:
+ beq Lfour ; continuation of Lret13.
+ cmpi 0,r0,3
+ beq Lfinish ; don`t adjust this - can`t be any floats here...
+ srdi r3,r3,48
+ cmpi 0,r0,2
+ beq Lfinish ; .. or here ..
+ srdi r3,r3,8
+ b Lfinish ; .. or here.
+
+Lfour:
+ lg r6,LINKAGE_SIZE(r1) ; get the result type
+ lg r6,FFI_TYPE_ELEM(r6) ; elements array pointer
+ lg r6,0(r6) ; first element
+ lhz r0,FFI_TYPE_TYPE(r6) ; OK go the type
+ cmpi 0,r0,2 ; FFI_TYPE_FLOAT
+ bne Lfourint
+ lfs f1,0(r5) ; just one float in the struct.
+ b Lfinish
+
+Lfourint:
+ srdi r3,r3,32 ; four bytes.
+ b Lfinish
+
+Lstructend:
+ lg r3,LINKAGE_SIZE(r1) ; get the result type
+ bl STRUCT_RETVALUE_P
+ cmpi 0,r3,0
+ beq Lfinish ; nope.
+ /* Recover a pointer to the results. */
+ addi r11,r1,(SAVE_SIZE-RESULT_BYTES)
+ lg r3,0(r11) ; we need at least this...
+ lg r4,8(r11)
+ cmpi 0,r0,16
+ beq Lfinish ; special case 16 bytes we don't consider floats.
+
+ /* OK, frustratingly, the process of saving the struct to mem might have
+ messed with the FPRs, so we have to re-load them :(.
+ We`ll use our FPRs space again - calling:
+ void darwin64_pass_struct_floats (ffi_type *s, char *src,
+ unsigned *nfpr, double **fprs)
+ We`ll temporarily pinch the first two slots of the param area for local
+ vars used by the routine. */
+ xor r6,r6,r6
+ addi r5,r1,PARENT_PARM_BASE ; some space
+ sg r6,0(r5) ; *nfpr zeroed.
+ addi r6,r5,8 ; **fprs
+ addi r3,r1,FP_SAVE_BASE ; pointer to FPRs space
+ sg r3,0(r6)
+ mr r4,r11 ; the struct is here...
+ lg r3,LINKAGE_SIZE(r1) ; ffi_type * result_type.
+ bl PASS_STR_FLOATS ; get struct floats into FPR save space.
+ /* See if we used any floats */
+ lwz r0,(SAVE_SIZE-RESULT_BYTES)(r1)
+ cmpi 0,r0,0
+ beq Lstructints ; nope.
+ /* OK load `em up... */
+ lfd f1, (FP_SAVE_BASE )(r1)
+ lfd f2, (FP_SAVE_BASE + FPR_SIZE )(r1)
+ lfd f3, (FP_SAVE_BASE + FPR_SIZE * 2 )(r1)
+ lfd f4, (FP_SAVE_BASE + FPR_SIZE * 3 )(r1)
+ lfd f5, (FP_SAVE_BASE + FPR_SIZE * 4 )(r1)
+ lfd f6, (FP_SAVE_BASE + FPR_SIZE * 5 )(r1)
+ lfd f7, (FP_SAVE_BASE + FPR_SIZE * 6 )(r1)
+ lfd f8, (FP_SAVE_BASE + FPR_SIZE * 7 )(r1)
+ lfd f9, (FP_SAVE_BASE + FPR_SIZE * 8 )(r1)
+ lfd f10,(FP_SAVE_BASE + FPR_SIZE * 9 )(r1)
+ lfd f11,(FP_SAVE_BASE + FPR_SIZE * 10)(r1)
+ lfd f12,(FP_SAVE_BASE + FPR_SIZE * 11)(r1)
+ lfd f13,(FP_SAVE_BASE + FPR_SIZE * 12)(r1)
+
+ /* point back at our saved struct. */
+Lstructints:
+ addi r11,r1,(SAVE_SIZE-RESULT_BYTES)
+ lg r3,0(r11) ; we end up picking the
+ lg r4,8(r11) ; first two again.
+ lg r5,16(r11)
+ lg r6,24(r11)
+ lg r7,32(r11)
+ lg r8,40(r11)
+ lg r9,48(r11)
+ lg r10,56(r11)
+#endif
+
+/* case done */
+Lfinish:
+ addi r1,r1,SAVE_SIZE /* Restore stack pointer. */
+ lg r0,SAVED_LR_OFFSET(r1) /* Get return address. */
+ mtlr r0 /* Reset link register. */
+ blr
+Lendcode:
+ .align 1
+
+/* END(ffi_closure_ASM) */
+
+/* EH frame stuff. */
+#define EH_DATA_ALIGN_FACT MODE_CHOICE(0x7c,0x78)
+/* 176, 400 */
+#define EH_FRAME_OFFSETA MODE_CHOICE(176,0x90)
+#define EH_FRAME_OFFSETB MODE_CHOICE(1,3)
+
+ .section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support
+EH_frame1:
+ .set L$set$0,LECIE1-LSCIE1
+ .long L$set$0 ; Length of Common Information Entry
+LSCIE1:
+ .long 0x0 ; CIE Identifier Tag
+ .byte 0x1 ; CIE Version
+ .ascii "zR\0" ; CIE Augmentation
+ .byte 0x1 ; uleb128 0x1; CIE Code Alignment Factor
+ .byte EH_DATA_ALIGN_FACT ; sleb128 -4; CIE Data Alignment Factor
+ .byte 0x41 ; CIE RA Column
+ .byte 0x1 ; uleb128 0x1; Augmentation size
+ .byte 0x10 ; FDE Encoding (pcrel)
+ .byte 0xc ; DW_CFA_def_cfa
+ .byte 0x1 ; uleb128 0x1
+ .byte 0x0 ; uleb128 0x0
+ .align LOG2_GPR_BYTES
+LECIE1:
+ .globl _ffi_closure_ASM.eh
+_ffi_closure_ASM.eh:
+LSFDE1:
+ .set L$set$1,LEFDE1-LASFDE1
+ .long L$set$1 ; FDE Length
+
+LASFDE1:
+ .long LASFDE1-EH_frame1 ; FDE CIE offset
+ .g_long Lstartcode-. ; FDE initial location
+ .set L$set$2,LFE1-Lstartcode
+ .g_long L$set$2 ; FDE address range
+ .byte 0x0 ; uleb128 0x0; Augmentation size
+ .byte 0x4 ; DW_CFA_advance_loc4
+ .set L$set$3,LCFI1-LCFI0
+ .long L$set$3
+ .byte 0xe ; DW_CFA_def_cfa_offset
+ .byte EH_FRAME_OFFSETA,EH_FRAME_OFFSETB ; uleb128 176,1/190,3
+ .byte 0x4 ; DW_CFA_advance_loc4
+ .set L$set$4,LCFI0-Lstartcode
+ .long L$set$4
+ .byte 0x11 ; DW_CFA_offset_extended_sf
+ .byte 0x41 ; uleb128 0x41
+ .byte 0x7e ; sleb128 -2
+ .align LOG2_GPR_BYTES
+LEFDE1:
+ .align 1
+
+#ifdef WANT_STUB
+ .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
+ .align 5
+L_ffi_closure_helper_DARWIN$stub:
+ .indirect_symbol _ffi_closure_helper_DARWIN
+ mflr r0
+ bcl 20,31,"L1$spb"
+"L1$spb":
+ mflr r11
+ addis r11,r11,ha16(L_ffi_closure_helper_DARWIN$lazy_ptr-"L1$spb")
+ mtlr r0
+ lwzu r12,lo16(L_ffi_closure_helper_DARWIN$lazy_ptr-"L1$spb")(r11)
+ mtctr r12
+ bctr
+ .lazy_symbol_pointer
+L_ffi_closure_helper_DARWIN$lazy_ptr:
+ .indirect_symbol _ffi_closure_helper_DARWIN
+ .g_long dyld_stub_binding_helper
+
+#if defined(__ppc64__)
+ .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
+ .align 5
+L_darwin64_struct_ret_by_value_p$stub:
+ .indirect_symbol _darwin64_struct_ret_by_value_p
+ mflr r0
+ bcl 20,31,"L2$spb"
+"L2$spb":
+ mflr r11
+ addis r11,r11,ha16(L_darwin64_struct_ret_by_value_p$lazy_ptr-"L2$spb")
+ mtlr r0
+ lwzu r12,lo16(L_darwin64_struct_ret_by_value_p$lazy_ptr-"L2$spb")(r11)
+ mtctr r12
+ bctr
+ .lazy_symbol_pointer
+L_darwin64_struct_ret_by_value_p$lazy_ptr:
+ .indirect_symbol _darwin64_struct_ret_by_value_p
+ .g_long dyld_stub_binding_helper
+
+ .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
+ .align 5
+L_darwin64_pass_struct_floats$stub:
+ .indirect_symbol _darwin64_pass_struct_floats
+ mflr r0
+ bcl 20,31,"L3$spb"
+"L3$spb":
+ mflr r11
+ addis r11,r11,ha16(L_darwin64_pass_struct_floats$lazy_ptr-"L3$spb")
+ mtlr r0
+ lwzu r12,lo16(L_darwin64_pass_struct_floats$lazy_ptr-"L3$spb")(r11)
+ mtctr r12
+ bctr
+ .lazy_symbol_pointer
+L_darwin64_pass_struct_floats$lazy_ptr:
+ .indirect_symbol _darwin64_pass_struct_floats
+ .g_long dyld_stub_binding_helper
+# endif
+#endif
+
+
+====================File: src/powerpc/ffi.c====================
+/* -----------------------------------------------------------------------
+ ffi.c - Copyright (C) 2013 IBM
+ Copyright (C) 2011 Anthony Green
+ Copyright (C) 2011 Kyle Moffett
+ Copyright (C) 2008 Red Hat, Inc
+ Copyright (C) 2007, 2008 Free Software Foundation, Inc
+ Copyright (c) 1998 Geoffrey Keating
+
+ PowerPC Foreign Function Interface
+
+ 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 AUTHOR 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.
+ ----------------------------------------------------------------------- */
+
+#include "ffi.h"
+#include "ffi_common.h"
+#include "ffi_powerpc.h"
+
+#if HAVE_LONG_DOUBLE_VARIANT
+/* Adjust ffi_type_longdouble. */
+void FFI_HIDDEN
+ffi_prep_types (ffi_abi abi)
+{
+# if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+# ifdef POWERPC64
+ ffi_prep_types_linux64 (abi);
+# else
+ ffi_prep_types_sysv (abi);
+# endif
+# endif
+}
+#endif
+
+/* Perform machine dependent cif processing */
+ffi_status FFI_HIDDEN
+ffi_prep_cif_machdep (ffi_cif *cif)
+{
+#ifdef POWERPC64
+ return ffi_prep_cif_linux64 (cif);
+#else
+ return ffi_prep_cif_sysv (cif);
+#endif
+}
+
+ffi_status FFI_HIDDEN
+ffi_prep_cif_machdep_var (ffi_cif *cif,
+ unsigned int nfixedargs MAYBE_UNUSED,
+ unsigned int ntotalargs MAYBE_UNUSED)
+{
+#ifdef POWERPC64
+ return ffi_prep_cif_linux64_var (cif, nfixedargs, ntotalargs);
+#else
+ return ffi_prep_cif_sysv (cif);
+#endif
+}
+
+static void
+ffi_call_int (ffi_cif *cif,
+ void (*fn) (void),
+ void *rvalue,
+ void **avalue,
+ void *closure)
+{
+ /* The final SYSV ABI says that structures smaller or equal 8 bytes
+ are returned in r3/r4. A draft ABI used by linux instead returns
+ them in memory.
+
+ We bounce-buffer SYSV small struct return values so that sysv.S
+ can write r3 and r4 to memory without worrying about struct size.
- if (cif->flags & AARCH64_FLAG_ARG_V)
- start = ffi_closure_SYSV_V;
- else
- start = ffi_closure_SYSV;
-
-#if FFI_EXEC_TRAMPOLINE_TABLE
-#ifdef __MACH__
- void **config = (void **)((uint8_t *)codeloc - PAGE_MAX_SIZE);
- config[0] = closure;
- config[1] = start;
-#endif
-#else
- static const unsigned char trampoline[16] = {
- 0x90, 0x00, 0x00, 0x58, /* ldr x16, tramp+16 */
- 0xf1, 0xff, 0xff, 0x10, /* adr x17, tramp+0 */
- 0x00, 0x02, 0x1f, 0xd6 /* br x16 */
- };
- char *tramp = closure->tramp;
+ For ELFv2 ABI, use a bounce buffer for homogeneous structs too,
+ for similar reasons. This bounce buffer must be aligned to 16
+ bytes for use with homogeneous structs of vectors (float128). */
+ float128 smst_buffer[8];
+ extended_cif ecif;
+
+ ecif.cif = cif;
+ ecif.avalue = avalue;
+
+ ecif.rvalue = rvalue;
+ if ((cif->flags & FLAG_RETURNS_SMST) != 0)
+ ecif.rvalue = smst_buffer;
+ /* Ensure that we have a valid struct return value.
+ FIXME: Isn't this just papering over a user problem? */
+ else if (!rvalue && cif->rtype->type == FFI_TYPE_STRUCT)
+ ecif.rvalue = alloca (cif->rtype->size);
+
+#ifdef POWERPC64
+ ffi_call_LINUX64 (&ecif, fn, ecif.rvalue, cif->flags, closure,
+ -(long) cif->bytes);
+#else
+ ffi_call_SYSV (&ecif, fn, ecif.rvalue, cif->flags, closure, -cif->bytes);
+#endif
+
+ /* Check for a bounce-buffered return value */
+ if (rvalue && ecif.rvalue == smst_buffer)
+ {
+ unsigned int rsize = cif->rtype->size;
+#ifndef __LITTLE_ENDIAN__
+ /* The SYSV ABI returns a structure of up to 4 bytes in size
+ left-padded in r3. */
+# ifndef POWERPC64
+ if (rsize <= 4)
+ memcpy (rvalue, (char *) smst_buffer + 4 - rsize, rsize);
+ else
+# endif
+ /* The SYSV ABI returns a structure of up to 8 bytes in size
+ left-padded in r3/r4, and the ELFv2 ABI similarly returns a
+ structure of up to 8 bytes in size left-padded in r3. But
+ note that a structure of a single float is not paddded. */
+ if (rsize <= 8 && (cif->flags & FLAG_RETURNS_FP) == 0)
+ memcpy (rvalue, (char *) smst_buffer + 8 - rsize, rsize);
+ else
+#endif
+ memcpy (rvalue, smst_buffer, rsize);
+ }
+}
+
+void
+ffi_call (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue)
+{
+ ffi_call_int (cif, fn, rvalue, avalue, NULL);
+}
+
+void
+ffi_call_go (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue,
+ void *closure)
+{
+ ffi_call_int (cif, fn, rvalue, avalue, closure);
+}
+
+ffi_status
+ffi_prep_closure_loc (ffi_closure *closure,
+ ffi_cif *cif,
+ void (*fun) (ffi_cif *, void *, void **, void *),
+ void *user_data,
+ void *codeloc)
+{
+#ifdef POWERPC64
+ return ffi_prep_closure_loc_linux64 (closure, cif, fun, user_data, codeloc);
+#else
+ return ffi_prep_closure_loc_sysv (closure, cif, fun, user_data, codeloc);
+#endif
+}
+
+ffi_status
+ffi_prep_go_closure (ffi_go_closure *closure,
+ ffi_cif *cif,
+ void (*fun) (ffi_cif *, void *, void **, void *))
+{
+#ifdef POWERPC64
+ closure->tramp = ffi_go_closure_linux64;
+#else
+ closure->tramp = ffi_go_closure_sysv;
+#endif
+ closure->cif = cif;
+ closure->fun = fun;
+ return FFI_OK;
+}
+
+
+====================File: src/powerpc/ffitarget.h====================
+/* -----------------------------------------------------------------*-C-*-
+ ffitarget.h - Copyright (c) 2012 Anthony Green
+ Copyright (C) 2007, 2008, 2010 Free Software Foundation, Inc
+ Copyright (c) 1996-2003 Red Hat, Inc.
+
+ Target configuration macros for PowerPC.
+
+ 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.
+
+ ----------------------------------------------------------------------- */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
+#endif
+
+/* ---- System specific configurations ----------------------------------- */
+
+#if defined (POWERPC) && defined (__powerpc64__) /* linux64 */
+#ifndef POWERPC64
+#define POWERPC64
+#endif
+#elif defined (POWERPC_DARWIN) && defined (__ppc64__) /* Darwin64 */
+#ifndef POWERPC64
+#define POWERPC64
+#endif
+#ifndef POWERPC_DARWIN64
+#define POWERPC_DARWIN64
+#endif
+#elif defined (POWERPC_AIX) && defined (__64BIT__) /* AIX64 */
+#ifndef POWERPC64
+#define POWERPC64
+#endif
+#endif
+
+#ifndef LIBFFI_ASM
+typedef unsigned long ffi_arg;
+typedef signed long ffi_sarg;
+
+typedef enum ffi_abi {
+ FFI_FIRST_ABI = 0,
+
+#if defined (POWERPC_AIX)
+ FFI_AIX,
+ FFI_DARWIN,
+ FFI_DEFAULT_ABI = FFI_AIX,
+ FFI_LAST_ABI
+
+#elif defined (POWERPC_DARWIN)
+ FFI_AIX,
+ FFI_DARWIN,
+ FFI_DEFAULT_ABI = FFI_DARWIN,
+ FFI_LAST_ABI
+
+#else
+ /* The FFI_COMPAT values are used by old code. Since libffi may be
+ a shared library we have to support old values for backwards
+ compatibility. */
+ FFI_COMPAT_SYSV,
+ FFI_COMPAT_GCC_SYSV,
+ FFI_COMPAT_LINUX64,
+ FFI_COMPAT_LINUX,
+ FFI_COMPAT_LINUX_SOFT_FLOAT,
+
+# if defined (POWERPC64)
+ /* This bit, always set in new code, must not be set in any of the
+ old FFI_COMPAT values that might be used for 64-bit linux. We
+ only need worry about FFI_COMPAT_LINUX64, but to be safe avoid
+ all old values. */
+ FFI_LINUX = 8,
+ /* This and following bits can reuse FFI_COMPAT values. */
+ FFI_LINUX_STRUCT_ALIGN = 1,
+ FFI_LINUX_LONG_DOUBLE_128 = 2,
+ FFI_LINUX_LONG_DOUBLE_IEEE128 = 4,
+ FFI_DEFAULT_ABI = (FFI_LINUX
+# ifdef __STRUCT_PARM_ALIGN__
+ | FFI_LINUX_STRUCT_ALIGN
+# endif
+# ifdef __LONG_DOUBLE_128__
+ | FFI_LINUX_LONG_DOUBLE_128
+# ifdef __LONG_DOUBLE_IEEE128__
+ | FFI_LINUX_LONG_DOUBLE_IEEE128
+# endif
+# endif
+ ),
+ FFI_LAST_ABI = 16
+
+# else
+ /* This bit, always set in new code, must not be set in any of the
+ old FFI_COMPAT values that might be used for 32-bit linux/sysv/bsd. */
+ FFI_SYSV = 8,
+ /* This and following bits can reuse FFI_COMPAT values. */
+ FFI_SYSV_SOFT_FLOAT = 1,
+ FFI_SYSV_STRUCT_RET = 2,
+ FFI_SYSV_IBM_LONG_DOUBLE = 4,
+ FFI_SYSV_LONG_DOUBLE_128 = 16,
+
+ FFI_DEFAULT_ABI = (FFI_SYSV
+# ifdef __NO_FPRS__
+ | FFI_SYSV_SOFT_FLOAT
+# endif
+# if (defined (__SVR4_STRUCT_RETURN) \
+ || defined (POWERPC_FREEBSD) && !defined (__AIX_STRUCT_RETURN))
+ | FFI_SYSV_STRUCT_RET
+# endif
+# if __LDBL_MANT_DIG__ == 106
+ | FFI_SYSV_IBM_LONG_DOUBLE
+# endif
+# ifdef __LONG_DOUBLE_128__
+ | FFI_SYSV_LONG_DOUBLE_128
+# endif
+ ),
+ FFI_LAST_ABI = 32
+# endif
+#endif
+
+} ffi_abi;
+#endif
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 1
+#define FFI_NATIVE_RAW_API 0
+#if defined (POWERPC) || defined (POWERPC_FREEBSD)
+# define FFI_GO_CLOSURES 1
+# define FFI_TARGET_SPECIFIC_VARIADIC 1
+# define FFI_EXTRA_CIF_FIELDS unsigned nfixedargs
+#endif
+#if defined (POWERPC_AIX)
+# define FFI_GO_CLOSURES 1
+#endif
+
+/* ppc_closure.S and linux64_closure.S expect this. */
+#define FFI_PPC_TYPE_LAST FFI_TYPE_POINTER
+
+/* We define additional types below. If generic types are added that
+ must be supported by powerpc libffi then it is likely that
+ FFI_PPC_TYPE_LAST needs increasing *and* the jump tables in
+ ppc_closure.S and linux64_closure.S be extended. */
+
+#if !(FFI_TYPE_LAST == FFI_PPC_TYPE_LAST \
+ || (FFI_TYPE_LAST == FFI_TYPE_COMPLEX \
+ && !defined FFI_TARGET_HAS_COMPLEX_TYPE))
+# error "You likely have a broken powerpc libffi"
+#endif
+
+/* Needed for soft-float long-double-128 support. */
+#define FFI_TYPE_UINT128 (FFI_PPC_TYPE_LAST + 1)
+
+/* Needed for FFI_SYSV small structure returns. */
+#define FFI_SYSV_TYPE_SMALL_STRUCT (FFI_PPC_TYPE_LAST + 2)
+
+/* Used by ELFv2 for homogenous structure returns. */
+#define FFI_V2_TYPE_VECTOR (FFI_PPC_TYPE_LAST + 1)
+#define FFI_V2_TYPE_VECTOR_HOMOG (FFI_PPC_TYPE_LAST + 2)
+#define FFI_V2_TYPE_FLOAT_HOMOG (FFI_PPC_TYPE_LAST + 3)
+#define FFI_V2_TYPE_DOUBLE_HOMOG (FFI_PPC_TYPE_LAST + 4)
+#define FFI_V2_TYPE_SMALL_STRUCT (FFI_PPC_TYPE_LAST + 5)
+
+#if _CALL_ELF == 2
+# define FFI_TRAMPOLINE_SIZE 32
+#else
+# if defined(POWERPC64) || defined(POWERPC_AIX)
+# if defined(POWERPC_DARWIN64)
+# define FFI_TRAMPOLINE_SIZE 48
+# else
+# define FFI_TRAMPOLINE_SIZE 24
+# endif
+# else /* POWERPC || POWERPC_AIX */
+# define FFI_TRAMPOLINE_SIZE 40
+# endif
+#endif
+
+#ifndef LIBFFI_ASM
+#if defined(POWERPC_DARWIN) || defined(POWERPC_AIX)
+struct ffi_aix_trampoline_struct {
+ void * code_pointer; /* Pointer to ffi_closure_ASM */
+ void * toc; /* TOC */
+ void * static_chain; /* Pointer to closure */
+};
+#endif
+#endif
+
+#endif
+
+
+====================File: src/powerpc/ppc_closure.S====================
+/* -----------------------------------------------------------------------
+ sysv.h - Copyright (c) 2003 Jakub Jelinek <jakub@redhat.com>
+ Copyright (c) 2008 Red Hat, Inc.
+
+ PowerPC Assembly glue.
+
+ 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.
+ ----------------------------------------------------------------------- */
+#define LIBFFI_ASM
+#include <fficonfig.h>
+#include <ffi.h>
+#include <powerpc/asm.h>
+
+ .file "ppc_closure.S"
+
+#ifndef POWERPC64
+
+FFI_HIDDEN(ffi_closure_SYSV)
+ENTRY(ffi_closure_SYSV)
+ .cfi_startproc
+ stwu %r1,-144(%r1)
+ .cfi_def_cfa_offset 144
+ mflr %r0
+ stw %r0,148(%r1)
+ .cfi_offset 65, 4
+
+# we want to build up an areas for the parameters passed
+# in registers (both floating point and integer)
+
+ # so first save gpr 3 to gpr 10 (aligned to 4)
+ stw %r3, 16(%r1)
+ stw %r4, 20(%r1)
+ stw %r5, 24(%r1)
+
+ # set up registers for the routine that does the work
+
+ # closure->cif
+ lwz %r3,FFI_TRAMPOLINE_SIZE(%r11)
+ # closure->fun
+ lwz %r4,FFI_TRAMPOLINE_SIZE+4(%r11)
+ # closure->user_data
+ lwz %r5,FFI_TRAMPOLINE_SIZE+8(%r11)
+
+.Ldoclosure:
+ stw %r6, 28(%r1)
+ stw %r7, 32(%r1)
+ stw %r8, 36(%r1)
+ stw %r9, 40(%r1)
+ stw %r10,44(%r1)
+
+#ifndef __NO_FPRS__
+ # next save fpr 1 to fpr 8 (aligned to 8)
+ stfd %f1, 48(%r1)
+ stfd %f2, 56(%r1)
+ stfd %f3, 64(%r1)
+ stfd %f4, 72(%r1)
+ stfd %f5, 80(%r1)
+ stfd %f6, 88(%r1)
+ stfd %f7, 96(%r1)
+ stfd %f8, 104(%r1)
+#endif
+
+ # pointer to the result storage
+ addi %r6,%r1,112
+
+ # pointer to the saved gpr registers
+ addi %r7,%r1,16
+
+ # pointer to the saved fpr registers
+ addi %r8,%r1,48
+
+ # pointer to the outgoing parameter save area in the previous frame
+ # i.e. the previous frame pointer + 8
+ addi %r9,%r1,152
+
+ # make the call
+ bl ffi_closure_helper_SYSV@local
+.Lret:
+ # now r3 contains the return type
+ # so use it to look up in a table
+ # so we know how to deal with each type
+
+ # look up the proper starting point in table
+ # by using return type as offset
+
+ mflr %r4 # move address of .Lret to r4
+ slwi %r3,%r3,4 # now multiply return type by 16
+ addi %r4, %r4, .Lret_type0 - .Lret
+ lwz %r0,148(%r1)
+ add %r3,%r3,%r4 # add contents of table to table address
+ mtctr %r3
+ bctr # jump to it
+
+# Each of the ret_typeX code fragments has to be exactly 16 bytes long
+# (4 instructions). For cache effectiveness we align to a 16 byte boundary
+# first.
+ .align 4
+# case FFI_TYPE_VOID
+.Lret_type0:
+ mtlr %r0
+ addi %r1,%r1,144
+ .cfi_def_cfa_offset 0
+ blr
+ .cfi_def_cfa_offset 144
+ nop
+
+# case FFI_TYPE_INT
+ lwz %r3,112+0(%r1)
+ mtlr %r0
+.Lfinish:
+ addi %r1,%r1,144
+ .cfi_def_cfa_offset 0
+ blr
+ .cfi_def_cfa_offset 144
+
+# case FFI_TYPE_FLOAT
+#ifndef __NO_FPRS__
+ lfs %f1,112+0(%r1)
+#else
+ nop
+#endif
+ mtlr %r0
+ addi %r1,%r1,144
+ .cfi_def_cfa_offset 0
+ blr
+ .cfi_def_cfa_offset 144
+
+# case FFI_TYPE_DOUBLE
+#ifndef __NO_FPRS__
+ lfd %f1,112+0(%r1)
+#else
+ nop
+#endif
+ mtlr %r0
+ addi %r1,%r1,144
+ .cfi_def_cfa_offset 0
+ blr
+ .cfi_def_cfa_offset 144
+
+# case FFI_TYPE_LONGDOUBLE
+#ifndef __NO_FPRS__
+ lfd %f1,112+0(%r1)
+ lfd %f2,112+8(%r1)
+ mtlr %r0
+ b .Lfinish
+#else
+ mtlr %r0
+ addi %r1,%r1,144
+ .cfi_def_cfa_offset 0
+ blr
+ .cfi_def_cfa_offset 144
+ nop
+#endif
+
+# case FFI_TYPE_UINT8
+#ifdef __LITTLE_ENDIAN__
+ lbz %r3,112+0(%r1)
+#else
+ lbz %r3,112+3(%r1)
+#endif
+ mtlr %r0
+ addi %r1,%r1,144
+ .cfi_def_cfa_offset 0
+ blr
+ .cfi_def_cfa_offset 144
+
+# case FFI_TYPE_SINT8
+#ifdef __LITTLE_ENDIAN__
+ lbz %r3,112+0(%r1)
+#else
+ lbz %r3,112+3(%r1)
+#endif
+ extsb %r3,%r3
+ mtlr %r0
+ b .Lfinish
+
+# case FFI_TYPE_UINT16
+#ifdef __LITTLE_ENDIAN__
+ lhz %r3,112+0(%r1)
+#else
+ lhz %r3,112+2(%r1)
+#endif
+ mtlr %r0
+ addi %r1,%r1,144
+ .cfi_def_cfa_offset 0
+ blr
+ .cfi_def_cfa_offset 144
+
+# case FFI_TYPE_SINT16
+#ifdef __LITTLE_ENDIAN__
+ lha %r3,112+0(%r1)
+#else
+ lha %r3,112+2(%r1)
+#endif
+ mtlr %r0
+ addi %r1,%r1,144
+ .cfi_def_cfa_offset 0
+ blr
+ .cfi_def_cfa_offset 144
+
+# case FFI_TYPE_UINT32
+ lwz %r3,112+0(%r1)
+ mtlr %r0
+ addi %r1,%r1,144
+ .cfi_def_cfa_offset 0
+ blr
+ .cfi_def_cfa_offset 144
+
+# case FFI_TYPE_SINT32
+ lwz %r3,112+0(%r1)
+ mtlr %r0
+ addi %r1,%r1,144
+ .cfi_def_cfa_offset 0
+ blr
+ .cfi_def_cfa_offset 144
+
+# case FFI_TYPE_UINT64
+ lwz %r3,112+0(%r1)
+ lwz %r4,112+4(%r1)
+ mtlr %r0
+ b .Lfinish
+
+# case FFI_TYPE_SINT64
+ lwz %r3,112+0(%r1)
+ lwz %r4,112+4(%r1)
+ mtlr %r0
+ b .Lfinish
+
+# case FFI_TYPE_STRUCT
+ mtlr %r0
+ addi %r1,%r1,144
+ .cfi_def_cfa_offset 0
+ blr
+ .cfi_def_cfa_offset 144
+ nop
+
+# case FFI_TYPE_POINTER
+ lwz %r3,112+0(%r1)
+ mtlr %r0
+ addi %r1,%r1,144
+ .cfi_def_cfa_offset 0
+ blr
+ .cfi_def_cfa_offset 144
+
+# case FFI_TYPE_UINT128
+ lwz %r3,112+0(%r1)
+ lwz %r4,112+4(%r1)
+ lwz %r5,112+8(%r1)
+ b .Luint128
+
+# The return types below are only used when the ABI type is FFI_SYSV.
+# case FFI_SYSV_TYPE_SMALL_STRUCT + 1. One byte struct.
+ lbz %r3,112+0(%r1)
+ mtlr %r0
+ addi %r1,%r1,144
+ .cfi_def_cfa_offset 0
+ blr
+ .cfi_def_cfa_offset 144
+
+# case FFI_SYSV_TYPE_SMALL_STRUCT + 2. Two byte struct.
+ lhz %r3,112+0(%r1)
+ mtlr %r0
+ addi %r1,%r1,144
+ .cfi_def_cfa_offset 0
+ blr
+ .cfi_def_cfa_offset 144
+
+# case FFI_SYSV_TYPE_SMALL_STRUCT + 3. Three byte struct.
+ lwz %r3,112+0(%r1)
+#ifdef __LITTLE_ENDIAN__
+ mtlr %r0
+ addi %r1,%r1,144
+ .cfi_def_cfa_offset 0
+ blr
+ .cfi_def_cfa_offset 144
+#else
+ srwi %r3,%r3,8
+ mtlr %r0
+ b .Lfinish
+#endif
+
+# case FFI_SYSV_TYPE_SMALL_STRUCT + 4. Four byte struct.
+ lwz %r3,112+0(%r1)
+ mtlr %r0
+ addi %r1,%r1,144
+ .cfi_def_cfa_offset 0
+ blr
+ .cfi_def_cfa_offset 144
+
+# case FFI_SYSV_TYPE_SMALL_STRUCT + 5. Five byte struct.
+ lwz %r3,112+0(%r1)
+ lwz %r4,112+4(%r1)
+#ifdef __LITTLE_ENDIAN__
+ mtlr %r0
+ b .Lfinish
+#else
+ li %r5,24
+ b .Lstruct567
+#endif
+
+# case FFI_SYSV_TYPE_SMALL_STRUCT + 6. Six byte struct.
+ lwz %r3,112+0(%r1)
+ lwz %r4,112+4(%r1)
+#ifdef __LITTLE_ENDIAN__
+ mtlr %r0
+ b .Lfinish
+#else
+ li %r5,16
+ b .Lstruct567
+#endif
+
+# case FFI_SYSV_TYPE_SMALL_STRUCT + 7. Seven byte struct.
+ lwz %r3,112+0(%r1)
+ lwz %r4,112+4(%r1)
+#ifdef __LITTLE_ENDIAN__
+ mtlr %r0
+ b .Lfinish
+#else
+ li %r5,8
+ b .Lstruct567
+#endif
+
+# case FFI_SYSV_TYPE_SMALL_STRUCT + 8. Eight byte struct.
+ lwz %r3,112+0(%r1)
+ lwz %r4,112+4(%r1)
+ mtlr %r0
+ b .Lfinish
+
+#ifndef __LITTLE_ENDIAN__
+.Lstruct567:
+ subfic %r6,%r5,32
+ srw %r4,%r4,%r5
+ slw %r6,%r3,%r6
+ srw %r3,%r3,%r5
+ or %r4,%r6,%r4
+ mtlr %r0
+ addi %r1,%r1,144
+ .cfi_def_cfa_offset 0
+ blr
+ .cfi_def_cfa_offset 144
+#endif
+
+.Luint128:
+ lwz %r6,112+12(%r1)
+ mtlr %r0
+ addi %r1,%r1,144
+ .cfi_def_cfa_offset 0
+ blr
+ .cfi_endproc
+END(ffi_closure_SYSV)
+
+
+FFI_HIDDEN(ffi_go_closure_sysv)
+ENTRY(ffi_go_closure_sysv)
+ .cfi_startproc
+ stwu %r1,-144(%r1)
+ .cfi_def_cfa_offset 144
+ mflr %r0
+ stw %r0,148(%r1)
+ .cfi_offset 65, 4
+
+ stw %r3, 16(%r1)
+ stw %r4, 20(%r1)
+ stw %r5, 24(%r1)
+
+ # closure->cif
+ lwz %r3,4(%r11)
+ # closure->fun
+ lwz %r4,8(%r11)
+ # user_data
+ mr %r5,%r11
+ b .Ldoclosure
+ .cfi_endproc
+END(ffi_go_closure_sysv)
+
+#if defined __ELF__ && defined __linux__
+ .section .note.GNU-stack,"",@progbits
+#endif
+#endif
+
+
+====================File: src/powerpc/sysv.S====================
+/* -----------------------------------------------------------------------
+ sysv.S - Copyright (c) 1998 Geoffrey Keating
+ Copyright (C) 2007 Free Software Foundation, Inc
+
+ PowerPC Assembly glue.
+
+ 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.
+ ----------------------------------------------------------------------- */
+
+#define LIBFFI_ASM
+#include <fficonfig.h>
+#include <ffi.h>
+#include <powerpc/asm.h>
+
+#ifndef POWERPC64
+FFI_HIDDEN(ffi_call_SYSV)
+ENTRY(ffi_call_SYSV)
+ .cfi_startproc
+ /* Save the old stack pointer as AP. */
+ mr %r10,%r1
+ .cfi_def_cfa_register 10
+
+ /* Allocate the stack space we need. */
+ stwux %r1,%r1,%r8
+ /* Save registers we use. */
+ mflr %r9
+ stw %r28,-16(%r10)
+ stw %r29,-12(%r10)
+ stw %r30, -8(%r10)
+ stw %r31, -4(%r10)
+ stw %r9, 4(%r10)
+ .cfi_offset 65, 4
+ .cfi_offset 31, -4
+ .cfi_offset 30, -8
+ .cfi_offset 29, -12
+ .cfi_offset 28, -16
+
+ /* Save arguments over call... */
+ stw %r7, -20(%r10) /* closure, */
+ mr %r31,%r6 /* flags, */
+ mr %r30,%r5 /* rvalue, */
+ mr %r29,%r4 /* function address, */
+ mr %r28,%r10 /* our AP. */
+ .cfi_def_cfa_register 28
+
+ /* Call ffi_prep_args_SYSV. */
+ mr %r4,%r1
+ bl ffi_prep_args_SYSV@local
+
+ /* Now do the call. */
+ /* Set up cr1 with bits 4-7 of the flags. */
+ mtcrf 0x40,%r31
+ /* Get the address to call into CTR. */
+ mtctr %r29
+ /* Load all those argument registers. */
+ lwz %r3,-24-(8*4)(%r28)
+ lwz %r4,-24-(7*4)(%r28)
+ lwz %r5,-24-(6*4)(%r28)
+ lwz %r6,-24-(5*4)(%r28)
+ bf- 5,1f
+ nop
+ lwz %r7,-24-(4*4)(%r28)
+ lwz %r8,-24-(3*4)(%r28)
+ lwz %r9,-24-(2*4)(%r28)
+ lwz %r10,-24-(1*4)(%r28)
+ nop
+1:
+
+#ifndef __NO_FPRS__
+ /* Load all the FP registers. */
+ bf- 6,2f
+ lfd %f1,-24-(8*4)-(8*8)(%r28)
+ lfd %f2,-24-(8*4)-(7*8)(%r28)
+ lfd %f3,-24-(8*4)-(6*8)(%r28)
+ lfd %f4,-24-(8*4)-(5*8)(%r28)
+ nop
+ lfd %f5,-24-(8*4)-(4*8)(%r28)
+ lfd %f6,-24-(8*4)-(3*8)(%r28)
+ lfd %f7,-24-(8*4)-(2*8)(%r28)
+ lfd %f8,-24-(8*4)-(1*8)(%r28)
+#endif
+2:
+
+ /* Make the call. */
+ lwz %r11, -20(%r28)
+ bctrl
+
+ /* Now, deal with the return value. */
+ mtcrf 0x01,%r31 /* cr7 */
+ bt- 31,L(small_struct_return_value)
+ bt- 30,L(done_return_value)
+#ifndef __NO_FPRS__
+ bt- 29,L(fp_return_value)
+#endif
+ stw %r3,0(%r30)
+ bf+ 28,L(done_return_value)
+ stw %r4,4(%r30)
+ mtcrf 0x02,%r31 /* cr6 */
+ bf 27,L(done_return_value)
+ stw %r5,8(%r30)
+ stw %r6,12(%r30)
+ /* Fall through... */
+
+L(done_return_value):
+ /* Restore the registers we used and return. */
+ lwz %r9, 4(%r28)
+ lwz %r31, -4(%r28)
+ mtlr %r9
+ lwz %r30, -8(%r28)
+ lwz %r29,-12(%r28)
+ lwz %r28,-16(%r28)
+ .cfi_remember_state
+ /* At this point we don't have a cfa register. Say all our
+ saved regs have been restored. */
+ .cfi_same_value 65
+ .cfi_same_value 31
+ .cfi_same_value 30
+ .cfi_same_value 29
+ .cfi_same_value 28
+ /* Hopefully this works.. */
+ .cfi_def_cfa_register 1
+ .cfi_offset 1, 0
+ lwz %r1,0(%r1)
+ .cfi_same_value 1
+ blr
+
+#ifndef __NO_FPRS__
+L(fp_return_value):
+ .cfi_restore_state
+ bf 28,L(float_return_value)
+ stfd %f1,0(%r30)
+ mtcrf 0x02,%r31 /* cr6 */
+ bf 27,L(done_return_value)
+ stfd %f2,8(%r30)
+ b L(done_return_value)
+L(float_return_value):
+ stfs %f1,0(%r30)
+ b L(done_return_value)
+#endif
+
+L(small_struct_return_value):
+ /*
+ * The C code always allocates a properly-aligned 8-byte bounce
+ * buffer to make this assembly code very simple. Just write out
+ * r3 and r4 to the buffer to allow the C code to handle the rest.
+ */
+ stw %r3, 0(%r30)
+ stw %r4, 4(%r30)
+ b L(done_return_value)
+ .cfi_endproc
+
+END(ffi_call_SYSV)
+
+#if defined __ELF__ && defined __linux__
+ .section .note.GNU-stack,"",@progbits
+#endif
+#endif
+
+
+====================File: src/prep_cif.c====================
+/* -----------------------------------------------------------------------
+ prep_cif.c - Copyright (c) 2011, 2012 Anthony Green
+ Copyright (c) 1996, 1998, 2007 Red Hat, Inc.
+
+ 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.
+ ----------------------------------------------------------------------- */
+
+#include <ffi.h>
+#include <ffi_common.h>
+#include <stdlib.h>
+
+/* Round up to FFI_SIZEOF_ARG. */
+
+#define STACK_ARG_SIZE(x) FFI_ALIGN(x, FFI_SIZEOF_ARG)
+
+/* Perform machine independent initialization of aggregate type
+ specifications. */
+
+static ffi_status initialize_aggregate(ffi_type *arg, size_t *offsets)
+{
+ ffi_type **ptr;
+
+ if (UNLIKELY(arg == NULL || arg->elements == NULL))
+ return FFI_BAD_TYPEDEF;
+
+ arg->size = 0;
+ arg->alignment = 0;
+
+ ptr = &(arg->elements[0]);
+
+ if (UNLIKELY(ptr == 0))
+ return FFI_BAD_TYPEDEF;
+
+ while ((*ptr) != NULL)
+ {
+ if (UNLIKELY(((*ptr)->size == 0)
+ && (initialize_aggregate((*ptr), NULL) != FFI_OK)))
+ return FFI_BAD_TYPEDEF;
+
+ /* Perform a sanity check on the argument type */
+ FFI_ASSERT_VALID_TYPE(*ptr);
+
+ arg->size = FFI_ALIGN(arg->size, (*ptr)->alignment);
+ if (offsets)
+ *offsets++ = arg->size;
+ arg->size += (*ptr)->size;
+
+ arg->alignment = (arg->alignment > (*ptr)->alignment) ?
+ arg->alignment : (*ptr)->alignment;
+
+ ptr++;
+ }
+
+ /* Structure size includes tail padding. This is important for
+ structures that fit in one register on ABIs like the PowerPC64
+ Linux ABI that right justify small structs in a register.
+ It's also needed for nested structure layout, for example
+ struct A { long a; char b; }; struct B { struct A x; char y; };
+ should find y at an offset of 2*sizeof(long) and result in a
+ total size of 3*sizeof(long). */
+ arg->size = FFI_ALIGN (arg->size, arg->alignment);
+
+ /* On some targets, the ABI defines that structures have an additional
+ alignment beyond the "natural" one based on their elements. */
+#ifdef FFI_AGGREGATE_ALIGNMENT
+ if (FFI_AGGREGATE_ALIGNMENT > arg->alignment)
+ arg->alignment = FFI_AGGREGATE_ALIGNMENT;
+#endif
+
+ if (arg->size == 0)
+ return FFI_BAD_TYPEDEF;
+ else
+ return FFI_OK;
+}
+
+#ifndef __CRIS__
+/* The CRIS ABI specifies structure elements to have byte
+ alignment only, so it completely overrides this functions,
+ which assumes "natural" alignment and padding. */
+
+/* Perform machine independent ffi_cif preparation, then call
+ machine dependent routine. */
+
+/* For non variadic functions isvariadic should be 0 and
+ nfixedargs==ntotalargs.
+
+ For variadic calls, isvariadic should be 1 and nfixedargs
+ and ntotalargs set as appropriate. nfixedargs must always be >=1 */
+
+
+ffi_status FFI_HIDDEN ffi_prep_cif_core(ffi_cif *cif, ffi_abi abi,
+ unsigned int isvariadic,
+ unsigned int nfixedargs,
+ unsigned int ntotalargs,
+ ffi_type *rtype, ffi_type **atypes)
+{
+ unsigned bytes = 0;
+ unsigned int i;
+ ffi_type **ptr;
+
+ FFI_ASSERT(cif != NULL);
+ FFI_ASSERT((!isvariadic) || (nfixedargs >= 1));
+ FFI_ASSERT(nfixedargs <= ntotalargs);
+
+ if (! (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI))
+ return FFI_BAD_ABI;
+
+ cif->abi = abi;
+ cif->arg_types = atypes;
+ cif->nargs = ntotalargs;
+ cif->rtype = rtype;
+
+ cif->flags = 0;
+#ifdef _M_ARM64
+ cif->is_variadic = isvariadic;
+#endif
+#if HAVE_LONG_DOUBLE_VARIANT
+ ffi_prep_types (abi);
+#endif
+
+ /* Initialize the return type if necessary */
+ if ((cif->rtype->size == 0)
+ && (initialize_aggregate(cif->rtype, NULL) != FFI_OK))
+ return FFI_BAD_TYPEDEF;
+
+#ifndef FFI_TARGET_HAS_COMPLEX_TYPE
+ if (rtype->type == FFI_TYPE_COMPLEX)
+ abort();
+#endif
+ /* Perform a sanity check on the return type */
+ FFI_ASSERT_VALID_TYPE(cif->rtype);
+
+ /* x86, x86-64 and s390 stack space allocation is handled in prep_machdep. */
+#if !defined FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION
+ /* Make space for the return structure pointer */
+ if (cif->rtype->type == FFI_TYPE_STRUCT
+#ifdef TILE
+ && (cif->rtype->size > 10 * FFI_SIZEOF_ARG)
+#endif
+#ifdef XTENSA
+ && (cif->rtype->size > 16)
+#endif
+#ifdef NIOS2
+ && (cif->rtype->size > 8)
+#endif
+ )
+ bytes = STACK_ARG_SIZE(sizeof(void*));
+#endif
+
+ for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++)
+ {
+
+ /* Initialize any uninitialized aggregate type definitions */
+ if (((*ptr)->size == 0)
+ && (initialize_aggregate((*ptr), NULL) != FFI_OK))
+ return FFI_BAD_TYPEDEF;
+
+#ifndef FFI_TARGET_HAS_COMPLEX_TYPE
+ if ((*ptr)->type == FFI_TYPE_COMPLEX)
+ abort();
+#endif
+ /* Perform a sanity check on the argument type, do this
+ check after the initialization. */
+ FFI_ASSERT_VALID_TYPE(*ptr);
+
+#if !defined FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION
+ {
+ /* Add any padding if necessary */
+ if (((*ptr)->alignment - 1) & bytes)
+ bytes = (unsigned)FFI_ALIGN(bytes, (*ptr)->alignment);
+
+#ifdef TILE
+ if (bytes < 10 * FFI_SIZEOF_ARG &&
+ bytes + STACK_ARG_SIZE((*ptr)->size) > 10 * FFI_SIZEOF_ARG)
+ {
+ /* An argument is never split between the 10 parameter
+ registers and the stack. */
+ bytes = 10 * FFI_SIZEOF_ARG;
+ }
+#endif
+#ifdef XTENSA
+ if (bytes <= 6*4 && bytes + STACK_ARG_SIZE((*ptr)->size) > 6*4)
+ bytes = 6*4;
+#endif
+
+ bytes += (unsigned int)STACK_ARG_SIZE((*ptr)->size);
+ }
+#endif
+ }
+
+ cif->bytes = bytes;
+
+ /* Perform machine dependent cif processing */
+#ifdef FFI_TARGET_SPECIFIC_VARIADIC
+ if (isvariadic)
+ return ffi_prep_cif_machdep_var(cif, nfixedargs, ntotalargs);
+#endif
+
+ return ffi_prep_cif_machdep(cif);
+}
+#endif /* not __CRIS__ */
+
+ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, unsigned int nargs,
+ ffi_type *rtype, ffi_type **atypes)
+{
+ return ffi_prep_cif_core(cif, abi, 0, nargs, nargs, rtype, atypes);
+}
+
+ffi_status ffi_prep_cif_var(ffi_cif *cif,
+ ffi_abi abi,
+ unsigned int nfixedargs,
+ unsigned int ntotalargs,
+ ffi_type *rtype,
+ ffi_type **atypes)
+{
+ return ffi_prep_cif_core(cif, abi, 1, nfixedargs, ntotalargs, rtype, atypes);
+}
+
+#if FFI_CLOSURES
+
+ffi_status
+ffi_prep_closure (ffi_closure* closure,
+ ffi_cif* cif,
+ void (*fun)(ffi_cif*,void*,void**,void*),
+ void *user_data)
+{
+ return ffi_prep_closure_loc (closure, cif, fun, user_data, closure);
+}
+
+#endif
+
+ffi_status
+ffi_get_struct_offsets (ffi_abi abi, ffi_type *struct_type, size_t *offsets)
+{
+ if (! (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI))
+ return FFI_BAD_ABI;
+ if (struct_type->type != FFI_TYPE_STRUCT)
+ return FFI_BAD_TYPEDEF;
+
+#if HAVE_LONG_DOUBLE_VARIANT
+ ffi_prep_types (abi);
+#endif
+
+ return initialize_aggregate(struct_type, offsets);
+}
+
+
+====================File: src/raw_api.c====================
+/* -----------------------------------------------------------------------
+ raw_api.c - Copyright (c) 1999, 2008 Red Hat, Inc.
+
+ Author: Kresten Krab Thorup <krab@gnu.org>
+
+ 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.
+ ----------------------------------------------------------------------- */
+
+/* This file defines generic functions for use with the raw api. */
+
+#include <ffi.h>
+#include <ffi_common.h>
+
+#if !FFI_NO_RAW_API
+
+size_t
+ffi_raw_size (ffi_cif *cif)
+{
+ size_t result = 0;
+ int i;
+
+ ffi_type **at = cif->arg_types;
+
+ for (i = cif->nargs-1; i >= 0; i--, at++)
+ {
+#if !FFI_NO_STRUCTS
+ if ((*at)->type == FFI_TYPE_STRUCT)
+ result += FFI_ALIGN (sizeof (void*), FFI_SIZEOF_ARG);
+ else
+#endif
+ result += FFI_ALIGN ((*at)->size, FFI_SIZEOF_ARG);
+ }
+
+ return result;
+}
+
+
+void
+ffi_raw_to_ptrarray (ffi_cif *cif, ffi_raw *raw, void **args)
+{
+ unsigned i;
+ ffi_type **tp = cif->arg_types;
+
+#if WORDS_BIGENDIAN
+
+ for (i = 0; i < cif->nargs; i++, tp++, args++)
+ {
+ switch ((*tp)->type)
+ {
+ case FFI_TYPE_UINT8:
+ case FFI_TYPE_SINT8:
+ *args = (void*) ((char*)(raw++) + FFI_SIZEOF_ARG - 1);
+ break;
+
+ case FFI_TYPE_UINT16:
+ case FFI_TYPE_SINT16:
+ *args = (void*) ((char*)(raw++) + FFI_SIZEOF_ARG - 2);
+ break;
+
+#if FFI_SIZEOF_ARG >= 4
+ case FFI_TYPE_UINT32:
+ case FFI_TYPE_SINT32:
+ *args = (void*) ((char*)(raw++) + FFI_SIZEOF_ARG - 4);
+ break;
+#endif
+
+#if !FFI_NO_STRUCTS
+ case FFI_TYPE_STRUCT:
+ *args = (raw++)->ptr;
+ break;
+#endif
+
+ case FFI_TYPE_COMPLEX:
+ *args = (raw++)->ptr;
+ break;
+
+ case FFI_TYPE_POINTER:
+ *args = (void*) &(raw++)->ptr;
+ break;
+
+ default:
+ *args = raw;
+ raw += FFI_ALIGN ((*tp)->size, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG;
+ }
+ }
+
+#else /* WORDS_BIGENDIAN */
+
+#if !PDP
+
+ /* then assume little endian */
+ for (i = 0; i < cif->nargs; i++, tp++, args++)
+ {
+#if !FFI_NO_STRUCTS
+ if ((*tp)->type == FFI_TYPE_STRUCT)
+ {
+ *args = (raw++)->ptr;
+ }
+ else
+#endif
+ if ((*tp)->type == FFI_TYPE_COMPLEX)
+ {
+ *args = (raw++)->ptr;
+ }
+ else
+ {
+ *args = (void*) raw;
+ raw += FFI_ALIGN ((*tp)->size, sizeof (void*)) / sizeof (void*);
+ }
+ }
+
+#else
+#error "pdp endian not supported"
+#endif /* ! PDP */
+
+#endif /* WORDS_BIGENDIAN */
+}
+
+void
+ffi_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_raw *raw)
+{
+ unsigned i;
+ ffi_type **tp = cif->arg_types;
+
+ for (i = 0; i < cif->nargs; i++, tp++, args++)
+ {
+ switch ((*tp)->type)
+ {
+ case FFI_TYPE_UINT8:
+ (raw++)->uint = *(UINT8*) (*args);
+ break;
+
+ case FFI_TYPE_SINT8:
+ (raw++)->sint = *(SINT8*) (*args);
+ break;
+
+ case FFI_TYPE_UINT16:
+ (raw++)->uint = *(UINT16*) (*args);
+ break;
+
+ case FFI_TYPE_SINT16:
+ (raw++)->sint = *(SINT16*) (*args);
+ break;
+
+#if FFI_SIZEOF_ARG >= 4
+ case FFI_TYPE_UINT32:
+ (raw++)->uint = *(UINT32*) (*args);
+ break;
+
+ case FFI_TYPE_SINT32:
+ (raw++)->sint = *(SINT32*) (*args);
+ break;
+#endif
+
+#if !FFI_NO_STRUCTS
+ case FFI_TYPE_STRUCT:
+ (raw++)->ptr = *args;
+ break;
+#endif
+
+ case FFI_TYPE_COMPLEX:
+ (raw++)->ptr = *args;
+ break;
+
+ case FFI_TYPE_POINTER:
+ (raw++)->ptr = **(void***) args;
+ break;
+
+ default:
+ memcpy ((void*) raw->data, (void*)*args, (*tp)->size);
+ raw += FFI_ALIGN ((*tp)->size, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG;
+ }
+ }
+}
+
+#if !FFI_NATIVE_RAW_API
+
+
+/* This is a generic definition of ffi_raw_call, to be used if the
+ * native system does not provide a machine-specific implementation.
+ * Having this, allows code to be written for the raw API, without
+ * the need for system-specific code to handle input in that format;
+ * these following couple of functions will handle the translation forth
+ * and back automatically. */
+
+void ffi_raw_call (ffi_cif *cif, void (*fn)(void), void *rvalue, ffi_raw *raw)
+{
+ void **avalue = (void**) alloca (cif->nargs * sizeof (void*));
+ ffi_raw_to_ptrarray (cif, raw, avalue);
+ ffi_call (cif, fn, rvalue, avalue);
+}
+
+#if FFI_CLOSURES /* base system provides closures */
+
+static void
+ffi_translate_args (ffi_cif *cif, void *rvalue,
+ void **avalue, void *user_data)
+{
+ ffi_raw *raw = (ffi_raw*)alloca (ffi_raw_size (cif));
+ ffi_raw_closure *cl = (ffi_raw_closure*)user_data;
+
+ ffi_ptrarray_to_raw (cif, avalue, raw);
+ (*cl->fun) (cif, rvalue, raw, cl->user_data);
+}
+
+ffi_status
+ffi_prep_raw_closure_loc (ffi_raw_closure* cl,
+ ffi_cif *cif,
+ void (*fun)(ffi_cif*,void*,ffi_raw*,void*),
+ void *user_data,
+ void *codeloc)
+{
+ ffi_status status;
+
+ status = ffi_prep_closure_loc ((ffi_closure*) cl,
+ cif,
+ &ffi_translate_args,
+ codeloc,
+ codeloc);
+ if (status == FFI_OK)
+ {
+ cl->fun = fun;
+ cl->user_data = user_data;
+ }
+
+ return status;
+}
+
+#endif /* FFI_CLOSURES */
+#endif /* !FFI_NATIVE_RAW_API */
+
+#if FFI_CLOSURES
+
+/* Again, here is the generic version of ffi_prep_raw_closure, which
+ * will install an intermediate "hub" for translation of arguments from
+ * the pointer-array format, to the raw format */
+
+ffi_status
+ffi_prep_raw_closure (ffi_raw_closure* cl,
+ ffi_cif *cif,
+ void (*fun)(ffi_cif*,void*,ffi_raw*,void*),
+ void *user_data)
+{
+ return ffi_prep_raw_closure_loc (cl, cif, fun, user_data, cl);
+}
+
+#endif /* FFI_CLOSURES */
+
+#endif /* !FFI_NO_RAW_API */
+
+
+====================File: src/types.c====================
+/* -----------------------------------------------------------------------
+ types.c - Copyright (c) 1996, 1998 Red Hat, Inc.
- memcpy (tramp, trampoline, sizeof(trampoline));
+ Predefined ffi_types needed by libffi.
+
+ 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.
+ ----------------------------------------------------------------------- */
+
+/* Hide the basic type definitions from the header file, so that we
+ can redefine them here as "const". */
+#define LIBFFI_HIDE_BASIC_TYPES
+
+#include <ffi.h>
+#include <ffi_common.h>
+
+/* Type definitions */
+
+#define FFI_TYPEDEF(name, type, id, maybe_const)\
+struct struct_align_##name { \
+ char c; \
+ type x; \
+}; \
+FFI_EXTERN \
+maybe_const ffi_type ffi_type_##name = { \
+ sizeof(type), \
+ offsetof(struct struct_align_##name, x), \
+ id, NULL \
+}
+
+#define FFI_COMPLEX_TYPEDEF(name, type, maybe_const) \
+static ffi_type *ffi_elements_complex_##name [2] = { \
+ (ffi_type *)(&ffi_type_##name), NULL \
+}; \
+struct struct_align_complex_##name { \
+ char c; \
+ _Complex type x; \
+}; \
+FFI_EXTERN \
+maybe_const ffi_type ffi_type_complex_##name = { \
+ sizeof(_Complex type), \
+ offsetof(struct struct_align_complex_##name, x), \
+ FFI_TYPE_COMPLEX, \
+ (ffi_type **)ffi_elements_complex_##name \
+}
+
+/* Size and alignment are fake here. They must not be 0. */
+FFI_EXTERN const ffi_type ffi_type_void = {
+ 1, 1, FFI_TYPE_VOID, NULL
+};
+
+FFI_TYPEDEF(uint8, UINT8, FFI_TYPE_UINT8, const);
+FFI_TYPEDEF(sint8, SINT8, FFI_TYPE_SINT8, const);
+FFI_TYPEDEF(uint16, UINT16, FFI_TYPE_UINT16, const);
+FFI_TYPEDEF(sint16, SINT16, FFI_TYPE_SINT16, const);
+FFI_TYPEDEF(uint32, UINT32, FFI_TYPE_UINT32, const);
+FFI_TYPEDEF(sint32, SINT32, FFI_TYPE_SINT32, const);
+FFI_TYPEDEF(uint64, UINT64, FFI_TYPE_UINT64, const);
+FFI_TYPEDEF(sint64, SINT64, FFI_TYPE_SINT64, const);
+
+FFI_TYPEDEF(pointer, void*, FFI_TYPE_POINTER, const);
+
+FFI_TYPEDEF(float, float, FFI_TYPE_FLOAT, const);
+FFI_TYPEDEF(double, double, FFI_TYPE_DOUBLE, const);
+
+#if !defined HAVE_LONG_DOUBLE_VARIANT || defined __alpha__
+#define FFI_LDBL_CONST const
+#else
+#define FFI_LDBL_CONST
+#endif
+
+#ifdef __alpha__
+/* Even if we're not configured to default to 128-bit long double,
+ maintain binary compatibility, as -mlong-double-128 can be used
+ at any time. */
+/* Validate the hard-coded number below. */
+# if defined(__LONG_DOUBLE_128__) && FFI_TYPE_LONGDOUBLE != 4
+# error FFI_TYPE_LONGDOUBLE out of date
+# endif
+const ffi_type ffi_type_longdouble = { 16, 16, 4, NULL };
+#elif FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+FFI_TYPEDEF(longdouble, long double, FFI_TYPE_LONGDOUBLE, FFI_LDBL_CONST);
+#endif
+
+#ifdef FFI_TARGET_HAS_COMPLEX_TYPE
+FFI_COMPLEX_TYPEDEF(float, float, const);
+FFI_COMPLEX_TYPEDEF(double, double, const);
+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+FFI_COMPLEX_TYPEDEF(longdouble, long double, FFI_LDBL_CONST);
+#endif
+#endif
+
+
+====================File: src/x86/ffi.c====================
+/* -----------------------------------------------------------------------
+ ffi.c - Copyright (c) 2017 Anthony Green
+ Copyright (c) 1996, 1998, 1999, 2001, 2007, 2008 Red Hat, Inc.
+ Copyright (c) 2002 Ranjit Mathew
+ Copyright (c) 2002 Bo Thorsen
+ Copyright (c) 2002 Roger Sayle
+ Copyright (C) 2008, 2010 Free Software Foundation, Inc.
+
+ x86 Foreign Function Interface
+
+ 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.
+ ----------------------------------------------------------------------- */
+
+#if defined(__i386__) || defined(_M_IX86)
+#include <ffi.h>
+#include <ffi_common.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include "internal.h"
+
+/* Force FFI_TYPE_LONGDOUBLE to be different than FFI_TYPE_DOUBLE;
+ all further uses in this file will refer to the 80-bit type. */
+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+# if FFI_TYPE_LONGDOUBLE != 4
+# error FFI_TYPE_LONGDOUBLE out of date
+# endif
+#else
+# undef FFI_TYPE_LONGDOUBLE
+# define FFI_TYPE_LONGDOUBLE 4
+#endif
+
+#if defined(__GNUC__) && !defined(__declspec)
+# define __declspec(x) __attribute__((x))
+#endif
+
+#if defined(_MSC_VER) && defined(_M_IX86)
+/* Stack is not 16-byte aligned on Windows. */
+#define STACK_ALIGN(bytes) (bytes)
+#else
+#define STACK_ALIGN(bytes) FFI_ALIGN (bytes, 16)
+#endif
+
+/* Perform machine dependent cif processing. */
+ffi_status FFI_HIDDEN
+ffi_prep_cif_machdep(ffi_cif *cif)
+{
+ size_t bytes = 0;
+ int i, n, flags, cabi = cif->abi;
+
+ switch (cabi)
+ {
+ case FFI_SYSV:
+ case FFI_STDCALL:
+ case FFI_THISCALL:
+ case FFI_FASTCALL:
+ case FFI_MS_CDECL:
+ case FFI_PASCAL:
+ case FFI_REGISTER:
+ break;
+ default:
+ return FFI_BAD_ABI;
+ }
+
+ switch (cif->rtype->type)
+ {
+ case FFI_TYPE_VOID:
+ flags = X86_RET_VOID;
+ break;
+ case FFI_TYPE_FLOAT:
+ flags = X86_RET_FLOAT;
+ break;
+ case FFI_TYPE_DOUBLE:
+ flags = X86_RET_DOUBLE;
+ break;
+ case FFI_TYPE_LONGDOUBLE:
+ flags = X86_RET_LDOUBLE;
+ break;
+ case FFI_TYPE_UINT8:
+ flags = X86_RET_UINT8;
+ break;
+ case FFI_TYPE_UINT16:
+ flags = X86_RET_UINT16;
+ break;
+ case FFI_TYPE_SINT8:
+ flags = X86_RET_SINT8;
+ break;
+ case FFI_TYPE_SINT16:
+ flags = X86_RET_SINT16;
+ break;
+ case FFI_TYPE_INT:
+ case FFI_TYPE_SINT32:
+ case FFI_TYPE_UINT32:
+ case FFI_TYPE_POINTER:
+ flags = X86_RET_INT32;
+ break;
+ case FFI_TYPE_SINT64:
+ case FFI_TYPE_UINT64:
+ flags = X86_RET_INT64;
+ break;
+ case FFI_TYPE_STRUCT:
+#ifndef X86
+ /* ??? This should be a different ABI rather than an ifdef. */
+ if (cif->rtype->size == 1)
+ flags = X86_RET_STRUCT_1B;
+ else if (cif->rtype->size == 2)
+ flags = X86_RET_STRUCT_2B;
+ else if (cif->rtype->size == 4)
+ flags = X86_RET_INT32;
+ else if (cif->rtype->size == 8)
+ flags = X86_RET_INT64;
+ else
+#endif
+ {
+ do_struct:
+ switch (cabi)
+ {
+ case FFI_THISCALL:
+ case FFI_FASTCALL:
+ case FFI_STDCALL:
+ case FFI_MS_CDECL:
+ flags = X86_RET_STRUCTARG;
+ break;
+ default:
+ flags = X86_RET_STRUCTPOP;
+ break;
+ }
+ /* Allocate space for return value pointer. */
+ bytes += FFI_ALIGN (sizeof(void*), FFI_SIZEOF_ARG);
+ }
+ break;
+ case FFI_TYPE_COMPLEX:
+ switch (cif->rtype->elements[0]->type)
+ {
+ case FFI_TYPE_DOUBLE:
+ case FFI_TYPE_LONGDOUBLE:
+ case FFI_TYPE_SINT64:
+ case FFI_TYPE_UINT64:
+ goto do_struct;
+ case FFI_TYPE_FLOAT:
+ case FFI_TYPE_INT:
+ case FFI_TYPE_SINT32:
+ case FFI_TYPE_UINT32:
+ flags = X86_RET_INT64;
+ break;
+ case FFI_TYPE_SINT16:
+ case FFI_TYPE_UINT16:
+ flags = X86_RET_INT32;
+ break;
+ case FFI_TYPE_SINT8:
+ case FFI_TYPE_UINT8:
+ flags = X86_RET_STRUCT_2B;
+ break;
+ default:
+ return FFI_BAD_TYPEDEF;
+ }
+ break;
+ default:
+ return FFI_BAD_TYPEDEF;
+ }
+ cif->flags = flags;
+
+ for (i = 0, n = cif->nargs; i < n; i++)
+ {
+ ffi_type *t = cif->arg_types[i];
+
+ bytes = FFI_ALIGN (bytes, t->alignment);
+ bytes += FFI_ALIGN (t->size, FFI_SIZEOF_ARG);
+ }
+ cif->bytes = bytes;
+
+ return FFI_OK;
+}
+
+static ffi_arg
+extend_basic_type(void *arg, int type)
+{
+ switch (type)
+ {
+ case FFI_TYPE_SINT8:
+ return *(SINT8 *)arg;
+ case FFI_TYPE_UINT8:
+ return *(UINT8 *)arg;
+ case FFI_TYPE_SINT16:
+ return *(SINT16 *)arg;
+ case FFI_TYPE_UINT16:
+ return *(UINT16 *)arg;
+
+ case FFI_TYPE_SINT32:
+ case FFI_TYPE_UINT32:
+ case FFI_TYPE_POINTER:
+ case FFI_TYPE_FLOAT:
+ return *(UINT32 *)arg;
+
+ default:
+ abort();
+ }
+}
+
+struct call_frame
+{
+ void *ebp; /* 0 */
+ void *retaddr; /* 4 */
+ void (*fn)(void); /* 8 */
+ int flags; /* 12 */
+ void *rvalue; /* 16 */
+ unsigned regs[3]; /* 20-28 */
+};
+
+struct abi_params
+{
+ int dir; /* parameter growth direction */
+ int static_chain; /* the static chain register used by gcc */
+ int nregs; /* number of register parameters */
+ int regs[3];
+};
+
+static const struct abi_params abi_params[FFI_LAST_ABI] = {
+ [FFI_SYSV] = { 1, R_ECX, 0 },
+ [FFI_THISCALL] = { 1, R_EAX, 1, { R_ECX } },
+ [FFI_FASTCALL] = { 1, R_EAX, 2, { R_ECX, R_EDX } },
+ [FFI_STDCALL] = { 1, R_ECX, 0 },
+ [FFI_PASCAL] = { -1, R_ECX, 0 },
+ /* ??? No defined static chain; gcc does not support REGISTER. */
+ [FFI_REGISTER] = { -1, R_ECX, 3, { R_EAX, R_EDX, R_ECX } },
+ [FFI_MS_CDECL] = { 1, R_ECX, 0 }
+};
+
+#ifdef HAVE_FASTCALL
+ #ifdef _MSC_VER
+ #define FFI_DECLARE_FASTCALL __fastcall
+ #else
+ #define FFI_DECLARE_FASTCALL __declspec(fastcall)
+ #endif
+#else
+ #define FFI_DECLARE_FASTCALL
+#endif
+
+extern void FFI_DECLARE_FASTCALL ffi_call_i386(struct call_frame *, char *) FFI_HIDDEN;
+
+static void
+ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue,
+ void **avalue, void *closure)
+{
+ size_t rsize, bytes;
+ struct call_frame *frame;
+ char *stack, *argp;
+ ffi_type **arg_types;
+ int flags, cabi, i, n, dir, narg_reg;
+ const struct abi_params *pabi;
+
+ flags = cif->flags;
+ cabi = cif->abi;
+ pabi = &abi_params[cabi];
+ dir = pabi->dir;
+
+ rsize = 0;
+ if (rvalue == NULL)
+ {
+ switch (flags)
+ {
+ case X86_RET_FLOAT:
+ case X86_RET_DOUBLE:
+ case X86_RET_LDOUBLE:
+ case X86_RET_STRUCTPOP:
+ case X86_RET_STRUCTARG:
+ /* The float cases need to pop the 387 stack.
+ The struct cases need to pass a valid pointer to the callee. */
+ rsize = cif->rtype->size;
+ break;
+ default:
+ /* We can pretend that the callee returns nothing. */
+ flags = X86_RET_VOID;
+ break;
+ }
+ }
+
+ bytes = STACK_ALIGN (cif->bytes);
+ stack = alloca(bytes + sizeof(*frame) + rsize);
+ argp = (dir < 0 ? stack + bytes : stack);
+ frame = (struct call_frame *)(stack + bytes);
+ if (rsize)
+ rvalue = frame + 1;
+
+ frame->fn = fn;
+ frame->flags = flags;
+ frame->rvalue = rvalue;
+ frame->regs[pabi->static_chain] = (unsigned)closure;
+
+ narg_reg = 0;
+ switch (flags)
+ {
+ case X86_RET_STRUCTARG:
+ /* The pointer is passed as the first argument. */
+ if (pabi->nregs > 0)
+ {
+ frame->regs[pabi->regs[0]] = (unsigned)rvalue;
+ narg_reg = 1;
+ break;
+ }
+ /* fallthru */
+ case X86_RET_STRUCTPOP:
+ *(void **)argp = rvalue;
+ argp += sizeof(void *);
+ break;
+ }
+
+ arg_types = cif->arg_types;
+ for (i = 0, n = cif->nargs; i < n; i++)
+ {
+ ffi_type *ty = arg_types[i];
+ void *valp = avalue[i];
+ size_t z = ty->size;
+ int t = ty->type;
+
+ if (z <= FFI_SIZEOF_ARG && t != FFI_TYPE_STRUCT)
+ {
+ ffi_arg val = extend_basic_type (valp, t);
+
+ if (t != FFI_TYPE_FLOAT && narg_reg < pabi->nregs)
+ frame->regs[pabi->regs[narg_reg++]] = val;
+ else if (dir < 0)
+ {
+ argp -= 4;
+ *(ffi_arg *)argp = val;
+ }
+ else
+ {
+ *(ffi_arg *)argp = val;
+ argp += 4;
+ }
+ }
+ else
+ {
+ size_t za = FFI_ALIGN (z, FFI_SIZEOF_ARG);
+ size_t align = FFI_SIZEOF_ARG;
+
+ /* Issue 434: For thiscall and fastcall, if the paramter passed
+ as 64-bit integer or struct, all following integer paramters
+ will be passed on stack. */
+ if ((cabi == FFI_THISCALL || cabi == FFI_FASTCALL)
+ && (t == FFI_TYPE_SINT64
+ || t == FFI_TYPE_UINT64
+ || t == FFI_TYPE_STRUCT))
+ narg_reg = 2;
+
+ /* Alignment rules for arguments are quite complex. Vectors and
+ structures with 16 byte alignment get it. Note that long double
+ on Darwin does have 16 byte alignment, and does not get this
+ alignment if passed directly; a structure with a long double
+ inside, however, would get 16 byte alignment. Since libffi does
+ not support vectors, we need non concern ourselves with other
+ cases. */
+ if (t == FFI_TYPE_STRUCT && ty->alignment >= 16)
+ align = 16;
+
+ if (dir < 0)
+ {
+ /* ??? These reverse argument ABIs are probably too old
+ to have cared about alignment. Someone should check. */
+ argp -= za;
+ memcpy (argp, valp, z);
+ }
+ else
+ {
+ argp = (char *)FFI_ALIGN (argp, align);
+ memcpy (argp, valp, z);
+ argp += za;
+ }
+ }
+ }
+ FFI_ASSERT (dir > 0 || argp == stack);
+
+ ffi_call_i386 (frame, stack);
+}
+
+void
+ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
+{
+ ffi_call_int (cif, fn, rvalue, avalue, NULL);
+}
+
+void
+ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue,
+ void **avalue, void *closure)
+{
+ ffi_call_int (cif, fn, rvalue, avalue, closure);
+}
+
+/** private members **/
+
+void FFI_HIDDEN ffi_closure_i386(void);
+void FFI_HIDDEN ffi_closure_STDCALL(void);
+void FFI_HIDDEN ffi_closure_REGISTER(void);
+
+struct closure_frame
+{
+ unsigned rettemp[4]; /* 0 */
+ unsigned regs[3]; /* 16-24 */
+ ffi_cif *cif; /* 28 */
+ void (*fun)(ffi_cif*,void*,void**,void*); /* 32 */
+ void *user_data; /* 36 */
+};
+
+int FFI_HIDDEN FFI_DECLARE_FASTCALL
+ffi_closure_inner (struct closure_frame *frame, char *stack)
+{
+ ffi_cif *cif = frame->cif;
+ int cabi, i, n, flags, dir, narg_reg;
+ const struct abi_params *pabi;
+ ffi_type **arg_types;
+ char *argp;
+ void *rvalue;
+ void **avalue;
+
+ cabi = cif->abi;
+ flags = cif->flags;
+ narg_reg = 0;
+ rvalue = frame->rettemp;
+ pabi = &abi_params[cabi];
+ dir = pabi->dir;
+ argp = (dir < 0 ? stack + STACK_ALIGN (cif->bytes) : stack);
+
+ switch (flags)
+ {
+ case X86_RET_STRUCTARG:
+ if (pabi->nregs > 0)
+ {
+ rvalue = (void *)frame->regs[pabi->regs[0]];
+ narg_reg = 1;
+ frame->rettemp[0] = (unsigned)rvalue;
+ break;
+ }
+ /* fallthru */
+ case X86_RET_STRUCTPOP:
+ rvalue = *(void **)argp;
+ argp += sizeof(void *);
+ frame->rettemp[0] = (unsigned)rvalue;
+ break;
+ }
+
+ n = cif->nargs;
+ avalue = alloca(sizeof(void *) * n);
+
+ arg_types = cif->arg_types;
+ for (i = 0; i < n; ++i)
+ {
+ ffi_type *ty = arg_types[i];
+ size_t z = ty->size;
+ int t = ty->type;
+ void *valp;
+
+ if (z <= FFI_SIZEOF_ARG && t != FFI_TYPE_STRUCT)
+ {
+ if (t != FFI_TYPE_FLOAT && narg_reg < pabi->nregs)
+ valp = &frame->regs[pabi->regs[narg_reg++]];
+ else if (dir < 0)
+ {
+ argp -= 4;
+ valp = argp;
+ }
+ else
+ {
+ valp = argp;
+ argp += 4;
+ }
+ }
+ else
+ {
+ size_t za = FFI_ALIGN (z, FFI_SIZEOF_ARG);
+ size_t align = FFI_SIZEOF_ARG;
+
+ /* See the comment in ffi_call_int. */
+ if (t == FFI_TYPE_STRUCT && ty->alignment >= 16)
+ align = 16;
+
+ /* Issue 434: For thiscall and fastcall, if the paramter passed
+ as 64-bit integer or struct, all following integer paramters
+ will be passed on stack. */
+ if ((cabi == FFI_THISCALL || cabi == FFI_FASTCALL)
+ && (t == FFI_TYPE_SINT64
+ || t == FFI_TYPE_UINT64
+ || t == FFI_TYPE_STRUCT))
+ narg_reg = 2;
+
+ if (dir < 0)
+ {
+ /* ??? These reverse argument ABIs are probably too old
+ to have cared about alignment. Someone should check. */
+ argp -= za;
+ valp = argp;
+ }
+ else
+ {
+ argp = (char *)FFI_ALIGN (argp, align);
+ valp = argp;
+ argp += za;
+ }
+ }
+
+ avalue[i] = valp;
+ }
+
+ frame->fun (cif, rvalue, avalue, frame->user_data);
+
+ if (cabi == FFI_STDCALL)
+ return flags + (cif->bytes << X86_RET_POP_SHIFT);
+ else
+ return flags;
+}
+
+ffi_status
+ffi_prep_closure_loc (ffi_closure* closure,
+ ffi_cif* cif,
+ void (*fun)(ffi_cif*,void*,void**,void*),
+ void *user_data,
+ void *codeloc)
+{
+ char *tramp = closure->tramp;
+ void (*dest)(void);
+ int op = 0xb8; /* movl imm, %eax */
+
+ switch (cif->abi)
+ {
+ case FFI_SYSV:
+ case FFI_THISCALL:
+ case FFI_FASTCALL:
+ case FFI_MS_CDECL:
+ dest = ffi_closure_i386;
+ break;
+ case FFI_STDCALL:
+ case FFI_PASCAL:
+ dest = ffi_closure_STDCALL;
+ break;
+ case FFI_REGISTER:
+ dest = ffi_closure_REGISTER;
+ op = 0x68; /* pushl imm */
+ break;
+ default:
+ return FFI_BAD_ABI;
+ }
+
+ /* movl or pushl immediate. */
+ tramp[0] = op;
+ *(void **)(tramp + 1) = codeloc;
+
+ /* jmp dest */
+ tramp[5] = 0xe9;
+ *(unsigned *)(tramp + 6) = (unsigned)dest - ((unsigned)codeloc + 10);
+
+ closure->cif = cif;
+ closure->fun = fun;
+ closure->user_data = user_data;
+
+ return FFI_OK;
+}
+
+void FFI_HIDDEN ffi_go_closure_EAX(void);
+void FFI_HIDDEN ffi_go_closure_ECX(void);
+void FFI_HIDDEN ffi_go_closure_STDCALL(void);
+
+ffi_status
+ffi_prep_go_closure (ffi_go_closure* closure, ffi_cif* cif,
+ void (*fun)(ffi_cif*,void*,void**,void*))
+{
+ void (*dest)(void);
+
+ switch (cif->abi)
+ {
+ case FFI_SYSV:
+ case FFI_MS_CDECL:
+ dest = ffi_go_closure_ECX;
+ break;
+ case FFI_THISCALL:
+ case FFI_FASTCALL:
+ dest = ffi_go_closure_EAX;
+ break;
+ case FFI_STDCALL:
+ case FFI_PASCAL:
+ dest = ffi_go_closure_STDCALL;
+ break;
+ case FFI_REGISTER:
+ default:
+ return FFI_BAD_ABI;
+ }
+
+ closure->tramp = dest;
+ closure->cif = cif;
+ closure->fun = fun;
+
+ return FFI_OK;
+}
+
+/* ------- Native raw API support -------------------------------- */
+
+#if !FFI_NO_RAW_API
+
+void FFI_HIDDEN ffi_closure_raw_SYSV(void);
+void FFI_HIDDEN ffi_closure_raw_THISCALL(void);
+
+ffi_status
+ffi_prep_raw_closure_loc (ffi_raw_closure *closure,
+ ffi_cif *cif,
+ void (*fun)(ffi_cif*,void*,ffi_raw*,void*),
+ void *user_data,
+ void *codeloc)
+{
+ char *tramp = closure->tramp;
+ void (*dest)(void);
+ int i;
+
+ /* We currently don't support certain kinds of arguments for raw
+ closures. This should be implemented by a separate assembly
+ language routine, since it would require argument processing,
+ something we don't do now for performance. */
+ for (i = cif->nargs-1; i >= 0; i--)
+ switch (cif->arg_types[i]->type)
+ {
+ case FFI_TYPE_STRUCT:
+ case FFI_TYPE_LONGDOUBLE:
+ return FFI_BAD_TYPEDEF;
+ }
+
+ switch (cif->abi)
+ {
+ case FFI_THISCALL:
+ dest = ffi_closure_raw_THISCALL;
+ break;
+ case FFI_SYSV:
+ dest = ffi_closure_raw_SYSV;
+ break;
+ default:
+ return FFI_BAD_ABI;
+ }
+
+ /* movl imm, %eax. */
+ tramp[0] = 0xb8;
+ *(void **)(tramp + 1) = codeloc;
+
+ /* jmp dest */
+ tramp[5] = 0xe9;
+ *(unsigned *)(tramp + 6) = (unsigned)dest - ((unsigned)codeloc + 10);
+
+ closure->cif = cif;
+ closure->fun = fun;
+ closure->user_data = user_data;
+
+ return FFI_OK;
+}
+
+void
+ffi_raw_call(ffi_cif *cif, void (*fn)(void), void *rvalue, ffi_raw *avalue)
+{
+ size_t rsize, bytes;
+ struct call_frame *frame;
+ char *stack, *argp;
+ ffi_type **arg_types;
+ int flags, cabi, i, n, narg_reg;
+ const struct abi_params *pabi;
+
+ flags = cif->flags;
+ cabi = cif->abi;
+ pabi = &abi_params[cabi];
+
+ rsize = 0;
+ if (rvalue == NULL)
+ {
+ switch (flags)
+ {
+ case X86_RET_FLOAT:
+ case X86_RET_DOUBLE:
+ case X86_RET_LDOUBLE:
+ case X86_RET_STRUCTPOP:
+ case X86_RET_STRUCTARG:
+ /* The float cases need to pop the 387 stack.
+ The struct cases need to pass a valid pointer to the callee. */
+ rsize = cif->rtype->size;
+ break;
+ default:
+ /* We can pretend that the callee returns nothing. */
+ flags = X86_RET_VOID;
+ break;
+ }
+ }
+
+ bytes = STACK_ALIGN (cif->bytes);
+ argp = stack =
+ (void *)((uintptr_t)alloca(bytes + sizeof(*frame) + rsize + 15) & ~16);
+ frame = (struct call_frame *)(stack + bytes);
+ if (rsize)
+ rvalue = frame + 1;
+
+ frame->fn = fn;
+ frame->flags = flags;
+ frame->rvalue = rvalue;
+
+ narg_reg = 0;
+ switch (flags)
+ {
+ case X86_RET_STRUCTARG:
+ /* The pointer is passed as the first argument. */
+ if (pabi->nregs > 0)
+ {
+ frame->regs[pabi->regs[0]] = (unsigned)rvalue;
+ narg_reg = 1;
+ break;
+ }
+ /* fallthru */
+ case X86_RET_STRUCTPOP:
+ *(void **)argp = rvalue;
+ argp += sizeof(void *);
+ bytes -= sizeof(void *);
+ break;
+ }
+
+ arg_types = cif->arg_types;
+ for (i = 0, n = cif->nargs; narg_reg < pabi->nregs && i < n; i++)
+ {
+ ffi_type *ty = arg_types[i];
+ size_t z = ty->size;
+ int t = ty->type;
+
+ if (z <= FFI_SIZEOF_ARG && t != FFI_TYPE_STRUCT && t != FFI_TYPE_FLOAT)
+ {
+ ffi_arg val = extend_basic_type (avalue, t);
+ frame->regs[pabi->regs[narg_reg++]] = val;
+ z = FFI_SIZEOF_ARG;
+ }
+ else
+ {
+ memcpy (argp, avalue, z);
+ z = FFI_ALIGN (z, FFI_SIZEOF_ARG);
+ argp += z;
+ }
+ avalue += z;
+ bytes -= z;
+ }
+ if (i < n)
+ memcpy (argp, avalue, bytes);
+
+ ffi_call_i386 (frame, stack);
+}
+#endif /* !FFI_NO_RAW_API */
+#endif /* __i386__ */
+
+
+====================File: src/x86/ffi64.c====================
+/* -----------------------------------------------------------------------
+ ffi64.c - Copyright (c) 2011, 2018 Anthony Green
+ Copyright (c) 2013 The Written Word, Inc.
+ Copyright (c) 2008, 2010 Red Hat, Inc.
+ Copyright (c) 2002, 2007 Bo Thorsen <bo@suse.de>
+
+ x86-64 Foreign Function Interface
+
+ 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.
+ ----------------------------------------------------------------------- */
+
+#include <ffi.h>
+#include <ffi_common.h>
+
+#include <stdlib.h>
+#include <stdarg.h>
+#include <stdint.h>
+#include "internal64.h"
+
+#ifdef __x86_64__
+
+#define MAX_GPR_REGS 6
+#define MAX_SSE_REGS 8
+
+#if defined(__INTEL_COMPILER)
+#include "xmmintrin.h"
+#define UINT128 __m128
+#else
+#if defined(__SUNPRO_C)
+#include <sunmedia_types.h>
+#define UINT128 __m128i
+#else
+#define UINT128 __int128_t
+#endif
+#endif
+
+union big_int_union
+{
+ UINT32 i32;
+ UINT64 i64;
+ UINT128 i128;
+};
+
+struct register_args
+{
+ /* Registers for argument passing. */
+ UINT64 gpr[MAX_GPR_REGS];
+ union big_int_union sse[MAX_SSE_REGS];
+ UINT64 rax; /* ssecount */
+ UINT64 r10; /* static chain */
+};
+
+extern void ffi_call_unix64 (void *args, unsigned long bytes, unsigned flags,
+ void *raddr, void (*fnaddr)(void)) FFI_HIDDEN;
+
+/* All reference to register classes here is identical to the code in
+ gcc/config/i386/i386.c. Do *not* change one without the other. */
+
+/* Register class used for passing given 64bit part of the argument.
+ These represent classes as documented by the PS ABI, with the
+ exception of SSESF, SSEDF classes, that are basically SSE class,
+ just gcc will use SF or DFmode move instead of DImode to avoid
+ reformatting penalties.
+
+ Similary we play games with INTEGERSI_CLASS to use cheaper SImode moves
+ whenever possible (upper half does contain padding). */
+enum x86_64_reg_class
+ {
+ X86_64_NO_CLASS,
+ X86_64_INTEGER_CLASS,
+ X86_64_INTEGERSI_CLASS,
+ X86_64_SSE_CLASS,
+ X86_64_SSESF_CLASS,
+ X86_64_SSEDF_CLASS,
+ X86_64_SSEUP_CLASS,
+ X86_64_X87_CLASS,
+ X86_64_X87UP_CLASS,
+ X86_64_COMPLEX_X87_CLASS,
+ X86_64_MEMORY_CLASS
+ };
+
+#define MAX_CLASSES 4
+
+#define SSE_CLASS_P(X) ((X) >= X86_64_SSE_CLASS && X <= X86_64_SSEUP_CLASS)
+
+/* x86-64 register passing implementation. See x86-64 ABI for details. Goal
+ of this code is to classify each 8bytes of incoming argument by the register
+ class and assign registers accordingly. */
+
+/* Return the union class of CLASS1 and CLASS2.
+ See the x86-64 PS ABI for details. */
+
+static enum x86_64_reg_class
+merge_classes (enum x86_64_reg_class class1, enum x86_64_reg_class class2)
+{
+ /* Rule #1: If both classes are equal, this is the resulting class. */
+ if (class1 == class2)
+ return class1;
+
+ /* Rule #2: If one of the classes is NO_CLASS, the resulting class is
+ the other class. */
+ if (class1 == X86_64_NO_CLASS)
+ return class2;
+ if (class2 == X86_64_NO_CLASS)
+ return class1;
+
+ /* Rule #3: If one of the classes is MEMORY, the result is MEMORY. */
+ if (class1 == X86_64_MEMORY_CLASS || class2 == X86_64_MEMORY_CLASS)
+ return X86_64_MEMORY_CLASS;
+
+ /* Rule #4: If one of the classes is INTEGER, the result is INTEGER. */
+ if ((class1 == X86_64_INTEGERSI_CLASS && class2 == X86_64_SSESF_CLASS)
+ || (class2 == X86_64_INTEGERSI_CLASS && class1 == X86_64_SSESF_CLASS))
+ return X86_64_INTEGERSI_CLASS;
+ if (class1 == X86_64_INTEGER_CLASS || class1 == X86_64_INTEGERSI_CLASS
+ || class2 == X86_64_INTEGER_CLASS || class2 == X86_64_INTEGERSI_CLASS)
+ return X86_64_INTEGER_CLASS;
+
+ /* Rule #5: If one of the classes is X87, X87UP, or COMPLEX_X87 class,
+ MEMORY is used. */
+ if (class1 == X86_64_X87_CLASS
+ || class1 == X86_64_X87UP_CLASS
+ || class1 == X86_64_COMPLEX_X87_CLASS
+ || class2 == X86_64_X87_CLASS
+ || class2 == X86_64_X87UP_CLASS
+ || class2 == X86_64_COMPLEX_X87_CLASS)
+ return X86_64_MEMORY_CLASS;
+
+ /* Rule #6: Otherwise class SSE is used. */
+ return X86_64_SSE_CLASS;
+}
+
+/* Classify the argument of type TYPE and mode MODE.
+ CLASSES will be filled by the register class used to pass each word
+ of the operand. The number of words is returned. In case the parameter
+ should be passed in memory, 0 is returned. As a special case for zero
+ sized containers, classes[0] will be NO_CLASS and 1 is returned.
+
+ See the x86-64 PS ABI for details.
+*/
+static size_t
+classify_argument (ffi_type *type, enum x86_64_reg_class classes[],
+ size_t byte_offset)
+{
+ switch (type->type)
+ {
+ case FFI_TYPE_UINT8:
+ case FFI_TYPE_SINT8:
+ case FFI_TYPE_UINT16:
+ case FFI_TYPE_SINT16:
+ case FFI_TYPE_UINT32:
+ case FFI_TYPE_SINT32:
+ case FFI_TYPE_UINT64:
+ case FFI_TYPE_SINT64:
+ case FFI_TYPE_POINTER:
+ do_integer:
+ {
+ size_t size = byte_offset + type->size;
+
+ if (size <= 4)
+ {
+ classes[0] = X86_64_INTEGERSI_CLASS;
+ return 1;
+ }
+ else if (size <= 8)
+ {
+ classes[0] = X86_64_INTEGER_CLASS;
+ return 1;
+ }
+ else if (size <= 12)
+ {
+ classes[0] = X86_64_INTEGER_CLASS;
+ classes[1] = X86_64_INTEGERSI_CLASS;
+ return 2;
+ }
+ else if (size <= 16)
+ {
+ classes[0] = classes[1] = X86_64_INTEGER_CLASS;
+ return 2;
+ }
+ else
+ FFI_ASSERT (0);
+ }
+ case FFI_TYPE_FLOAT:
+ if (!(byte_offset % 8))
+ classes[0] = X86_64_SSESF_CLASS;
+ else
+ classes[0] = X86_64_SSE_CLASS;
+ return 1;
+ case FFI_TYPE_DOUBLE:
+ classes[0] = X86_64_SSEDF_CLASS;
+ return 1;
+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+ case FFI_TYPE_LONGDOUBLE:
+ classes[0] = X86_64_X87_CLASS;
+ classes[1] = X86_64_X87UP_CLASS;
+ return 2;
+#endif
+ case FFI_TYPE_STRUCT:
+ {
+ const size_t UNITS_PER_WORD = 8;
+ size_t words = (type->size + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
+ ffi_type **ptr;
+ unsigned int i;
+ enum x86_64_reg_class subclasses[MAX_CLASSES];
+
+ /* If the struct is larger than 32 bytes, pass it on the stack. */
+ if (type->size > 32)
+ return 0;
+
+ for (i = 0; i < words; i++)
+ classes[i] = X86_64_NO_CLASS;
+
+ /* Zero sized arrays or structures are NO_CLASS. We return 0 to
+ signalize memory class, so handle it as special case. */
+ if (!words)
+ {
+ case FFI_TYPE_VOID:
+ classes[0] = X86_64_NO_CLASS;
+ return 1;
+ }
+
+ /* Merge the fields of structure. */
+ for (ptr = type->elements; *ptr != NULL; ptr++)
+ {
+ size_t num;
+
+ byte_offset = FFI_ALIGN (byte_offset, (*ptr)->alignment);
+
+ num = classify_argument (*ptr, subclasses, byte_offset % 8);
+ if (num == 0)
+ return 0;
+ for (i = 0; i < num; i++)
+ {
+ size_t pos = byte_offset / 8;
+ classes[i + pos] =
+ merge_classes (subclasses[i], classes[i + pos]);
+ }
+
+ byte_offset += (*ptr)->size;
+ }
+
+ if (words > 2)
+ {
+ /* When size > 16 bytes, if the first one isn't
+ X86_64_SSE_CLASS or any other ones aren't
+ X86_64_SSEUP_CLASS, everything should be passed in
+ memory. */
+ if (classes[0] != X86_64_SSE_CLASS)
+ return 0;
+
+ for (i = 1; i < words; i++)
+ if (classes[i] != X86_64_SSEUP_CLASS)
+ return 0;
+ }
+
+ /* Final merger cleanup. */
+ for (i = 0; i < words; i++)
+ {
+ /* If one class is MEMORY, everything should be passed in
+ memory. */
+ if (classes[i] == X86_64_MEMORY_CLASS)
+ return 0;
+
+ /* The X86_64_SSEUP_CLASS should be always preceded by
+ X86_64_SSE_CLASS or X86_64_SSEUP_CLASS. */
+ if (i > 1 && classes[i] == X86_64_SSEUP_CLASS
+ && classes[i - 1] != X86_64_SSE_CLASS
+ && classes[i - 1] != X86_64_SSEUP_CLASS)
+ {
+ /* The first one should never be X86_64_SSEUP_CLASS. */
+ FFI_ASSERT (i != 0);
+ classes[i] = X86_64_SSE_CLASS;
+ }
+
+ /* If X86_64_X87UP_CLASS isn't preceded by X86_64_X87_CLASS,
+ everything should be passed in memory. */
+ if (i > 1 && classes[i] == X86_64_X87UP_CLASS
+ && (classes[i - 1] != X86_64_X87_CLASS))
+ {
+ /* The first one should never be X86_64_X87UP_CLASS. */
+ FFI_ASSERT (i != 0);
+ return 0;
+ }
+ }
+ return words;
+ }
+ case FFI_TYPE_COMPLEX:
+ {
+ ffi_type *inner = type->elements[0];
+ switch (inner->type)
+ {
+ case FFI_TYPE_INT:
+ case FFI_TYPE_UINT8:
+ case FFI_TYPE_SINT8:
+ case FFI_TYPE_UINT16:
+ case FFI_TYPE_SINT16:
+ case FFI_TYPE_UINT32:
+ case FFI_TYPE_SINT32:
+ case FFI_TYPE_UINT64:
+ case FFI_TYPE_SINT64:
+ goto do_integer;
+
+ case FFI_TYPE_FLOAT:
+ classes[0] = X86_64_SSE_CLASS;
+ if (byte_offset % 8)
+ {
+ classes[1] = X86_64_SSESF_CLASS;
+ return 2;
+ }
+ return 1;
+ case FFI_TYPE_DOUBLE:
+ classes[0] = classes[1] = X86_64_SSEDF_CLASS;
+ return 2;
+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+ case FFI_TYPE_LONGDOUBLE:
+ classes[0] = X86_64_COMPLEX_X87_CLASS;
+ return 1;
+#endif
+ }
+ }
+ }
+ abort();
+}
+
+/* Examine the argument and return set number of register required in each
+ class. Return zero iff parameter should be passed in memory, otherwise
+ the number of registers. */
+
+static size_t
+examine_argument (ffi_type *type, enum x86_64_reg_class classes[MAX_CLASSES],
+ _Bool in_return, int *pngpr, int *pnsse)
+{
+ size_t n;
+ unsigned int i;
+ int ngpr, nsse;
+
+ n = classify_argument (type, classes, 0);
+ if (n == 0)
+ return 0;
+
+ ngpr = nsse = 0;
+ for (i = 0; i < n; ++i)
+ switch (classes[i])
+ {
+ case X86_64_INTEGER_CLASS:
+ case X86_64_INTEGERSI_CLASS:
+ ngpr++;
+ break;
+ case X86_64_SSE_CLASS:
+ case X86_64_SSESF_CLASS:
+ case X86_64_SSEDF_CLASS:
+ nsse++;
+ break;
+ case X86_64_NO_CLASS:
+ case X86_64_SSEUP_CLASS:
+ break;
+ case X86_64_X87_CLASS:
+ case X86_64_X87UP_CLASS:
+ case X86_64_COMPLEX_X87_CLASS:
+ return in_return != 0;
+ default:
+ abort ();
+ }
+
+ *pngpr = ngpr;
+ *pnsse = nsse;
+
+ return n;
+}
+
+/* Perform machine dependent cif processing. */
+
+#ifndef __ILP32__
+extern ffi_status
+ffi_prep_cif_machdep_efi64(ffi_cif *cif);
+#endif
+
+ffi_status FFI_HIDDEN
+ffi_prep_cif_machdep (ffi_cif *cif)
+{
+ int gprcount, ssecount, i, avn, ngpr, nsse;
+ unsigned flags;
+ enum x86_64_reg_class classes[MAX_CLASSES];
+ size_t bytes, n, rtype_size;
+ ffi_type *rtype;
+
+#ifndef __ILP32__
+ if (cif->abi == FFI_EFI64 || cif->abi == FFI_GNUW64)
+ return ffi_prep_cif_machdep_efi64(cif);
+#endif
+ if (cif->abi != FFI_UNIX64)
+ return FFI_BAD_ABI;
+
+ gprcount = ssecount = 0;
+
+ rtype = cif->rtype;
+ rtype_size = rtype->size;
+ switch (rtype->type)
+ {
+ case FFI_TYPE_VOID:
+ flags = UNIX64_RET_VOID;
+ break;
+ case FFI_TYPE_UINT8:
+ flags = UNIX64_RET_UINT8;
+ break;
+ case FFI_TYPE_SINT8:
+ flags = UNIX64_RET_SINT8;
+ break;
+ case FFI_TYPE_UINT16:
+ flags = UNIX64_RET_UINT16;
+ break;
+ case FFI_TYPE_SINT16:
+ flags = UNIX64_RET_SINT16;
+ break;
+ case FFI_TYPE_UINT32:
+ flags = UNIX64_RET_UINT32;
+ break;
+ case FFI_TYPE_INT:
+ case FFI_TYPE_SINT32:
+ flags = UNIX64_RET_SINT32;
+ break;
+ case FFI_TYPE_UINT64:
+ case FFI_TYPE_SINT64:
+ flags = UNIX64_RET_INT64;
+ break;
+ case FFI_TYPE_POINTER:
+ flags = (sizeof(void *) == 4 ? UNIX64_RET_UINT32 : UNIX64_RET_INT64);
+ break;
+ case FFI_TYPE_FLOAT:
+ flags = UNIX64_RET_XMM32;
+ break;
+ case FFI_TYPE_DOUBLE:
+ flags = UNIX64_RET_XMM64;
+ break;
+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+ case FFI_TYPE_LONGDOUBLE:
+ flags = UNIX64_RET_X87;
+ break;
+#endif
+ case FFI_TYPE_STRUCT:
+ n = examine_argument (cif->rtype, classes, 1, &ngpr, &nsse);
+ if (n == 0)
+ {
+ /* The return value is passed in memory. A pointer to that
+ memory is the first argument. Allocate a register for it. */
+ gprcount++;
+ /* We don't have to do anything in asm for the return. */
+ flags = UNIX64_RET_VOID | UNIX64_FLAG_RET_IN_MEM;
+ }
+ else
+ {
+ _Bool sse0 = SSE_CLASS_P (classes[0]);
+
+ if (rtype_size == 4 && sse0)
+ flags = UNIX64_RET_XMM32;
+ else if (rtype_size == 8)
+ flags = sse0 ? UNIX64_RET_XMM64 : UNIX64_RET_INT64;
+ else
+ {
+ _Bool sse1 = n == 2 && SSE_CLASS_P (classes[1]);
+ if (sse0 && sse1)
+ flags = UNIX64_RET_ST_XMM0_XMM1;
+ else if (sse0)
+ flags = UNIX64_RET_ST_XMM0_RAX;
+ else if (sse1)
+ flags = UNIX64_RET_ST_RAX_XMM0;
+ else
+ flags = UNIX64_RET_ST_RAX_RDX;
+ flags |= rtype_size << UNIX64_SIZE_SHIFT;
+ }
+ }
+ break;
+ case FFI_TYPE_COMPLEX:
+ switch (rtype->elements[0]->type)
+ {
+ case FFI_TYPE_UINT8:
+ case FFI_TYPE_SINT8:
+ case FFI_TYPE_UINT16:
+ case FFI_TYPE_SINT16:
+ case FFI_TYPE_INT:
+ case FFI_TYPE_UINT32:
+ case FFI_TYPE_SINT32:
+ case FFI_TYPE_UINT64:
+ case FFI_TYPE_SINT64:
+ flags = UNIX64_RET_ST_RAX_RDX | ((unsigned) rtype_size << UNIX64_SIZE_SHIFT);
+ break;
+ case FFI_TYPE_FLOAT:
+ flags = UNIX64_RET_XMM64;
+ break;
+ case FFI_TYPE_DOUBLE:
+ flags = UNIX64_RET_ST_XMM0_XMM1 | (16 << UNIX64_SIZE_SHIFT);
+ break;
+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+ case FFI_TYPE_LONGDOUBLE:
+ flags = UNIX64_RET_X87_2;
+ break;
+#endif
+ default:
+ return FFI_BAD_TYPEDEF;
+ }
+ break;
+ default:
+ return FFI_BAD_TYPEDEF;
+ }
+
+ /* Go over all arguments and determine the way they should be passed.
+ If it's in a register and there is space for it, let that be so. If
+ not, add it's size to the stack byte count. */
+ for (bytes = 0, i = 0, avn = cif->nargs; i < avn; i++)
+ {
+ if (examine_argument (cif->arg_types[i], classes, 0, &ngpr, &nsse) == 0
+ || gprcount + ngpr > MAX_GPR_REGS
+ || ssecount + nsse > MAX_SSE_REGS)
+ {
+ long align = cif->arg_types[i]->alignment;
+
+ if (align < 8)
+ align = 8;
+
+ bytes = FFI_ALIGN (bytes, align);
+ bytes += cif->arg_types[i]->size;
+ }
+ else
+ {
+ gprcount += ngpr;
+ ssecount += nsse;
+ }
+ }
+ if (ssecount)
+ flags |= UNIX64_FLAG_XMM_ARGS;
+
+ cif->flags = flags;
+ cif->bytes = (unsigned) FFI_ALIGN (bytes, 8);
+
+ return FFI_OK;
+}
+
+static void
+ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue,
+ void **avalue, void *closure)
+{
+ enum x86_64_reg_class classes[MAX_CLASSES];
+ char *stack, *argp;
+ ffi_type **arg_types;
+ int gprcount, ssecount, ngpr, nsse, i, avn, flags;
+ struct register_args *reg_args;
+
+ /* Can't call 32-bit mode from 64-bit mode. */
+ FFI_ASSERT (cif->abi == FFI_UNIX64);
+
+ /* If the return value is a struct and we don't have a return value
+ address then we need to make one. Otherwise we can ignore it. */
+ flags = cif->flags;
+ if (rvalue == NULL)
+ {
+ if (flags & UNIX64_FLAG_RET_IN_MEM)
+ rvalue = alloca (cif->rtype->size);
+ else
+ flags = UNIX64_RET_VOID;
+ }
+
+ /* Allocate the space for the arguments, plus 4 words of temp space. */
+ stack = alloca (sizeof (struct register_args) + cif->bytes + 4*8);
+ reg_args = (struct register_args *) stack;
+ argp = stack + sizeof (struct register_args);
+
+ reg_args->r10 = (uintptr_t) closure;
+
+ gprcount = ssecount = 0;
+
+ /* If the return value is passed in memory, add the pointer as the
+ first integer argument. */
+ if (flags & UNIX64_FLAG_RET_IN_MEM)
+ reg_args->gpr[gprcount++] = (unsigned long) rvalue;
+
+ avn = cif->nargs;
+ arg_types = cif->arg_types;
+
+ for (i = 0; i < avn; ++i)
+ {
+ size_t n, size = arg_types[i]->size;
+
+ n = examine_argument (arg_types[i], classes, 0, &ngpr, &nsse);
+ if (n == 0
+ || gprcount + ngpr > MAX_GPR_REGS
+ || ssecount + nsse > MAX_SSE_REGS)
+ {
+ long align = arg_types[i]->alignment;
+
+ /* Stack arguments are *always* at least 8 byte aligned. */
+ if (align < 8)
+ align = 8;
+
+ /* Pass this argument in memory. */
+ argp = (void *) FFI_ALIGN (argp, align);
+ memcpy (argp, avalue[i], size);
+ argp += size;
+ }
+ else
+ {
+ /* The argument is passed entirely in registers. */
+ char *a = (char *) avalue[i];
+ unsigned int j;
+
+ for (j = 0; j < n; j++, a += 8, size -= 8)
+ {
+ switch (classes[j])
+ {
+ case X86_64_NO_CLASS:
+ case X86_64_SSEUP_CLASS:
+ break;
+ case X86_64_INTEGER_CLASS:
+ case X86_64_INTEGERSI_CLASS:
+ /* Sign-extend integer arguments passed in general
+ purpose registers, to cope with the fact that
+ LLVM incorrectly assumes that this will be done
+ (the x86-64 PS ABI does not specify this). */
+ switch (arg_types[i]->type)
+ {
+ case FFI_TYPE_SINT8:
+ reg_args->gpr[gprcount] = (SINT64) *((SINT8 *) a);
+ break;
+ case FFI_TYPE_SINT16:
+ reg_args->gpr[gprcount] = (SINT64) *((SINT16 *) a);
+ break;
+ case FFI_TYPE_SINT32:
+ reg_args->gpr[gprcount] = (SINT64) *((SINT32 *) a);
+ break;
+ default:
+ reg_args->gpr[gprcount] = 0;
+ memcpy (&reg_args->gpr[gprcount], a, size);
+ }
+ gprcount++;
+ break;
+ case X86_64_SSE_CLASS:
+ case X86_64_SSEDF_CLASS:
+ memcpy (&reg_args->sse[ssecount++].i64, a, sizeof(UINT64));
+ break;
+ case X86_64_SSESF_CLASS:
+ memcpy (&reg_args->sse[ssecount++].i32, a, sizeof(UINT32));
+ break;
+ default:
+ abort();
+ }
+ }
+ }
+ }
+ reg_args->rax = ssecount;
+
+ ffi_call_unix64 (stack, cif->bytes + sizeof (struct register_args),
+ flags, rvalue, fn);
+}
+
+#ifndef __ILP32__
+extern void
+ffi_call_efi64(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue);
+#endif
+
+void
+ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
+{
+#ifndef __ILP32__
+ if (cif->abi == FFI_EFI64 || cif->abi == FFI_GNUW64)
+ {
+ ffi_call_efi64(cif, fn, rvalue, avalue);
+ return;
+ }
+#endif
+ ffi_call_int (cif, fn, rvalue, avalue, NULL);
+}
+
+#ifndef __ILP32__
+extern void
+ffi_call_go_efi64(ffi_cif *cif, void (*fn)(void), void *rvalue,
+ void **avalue, void *closure);
+#endif
+
+void
+ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue,
+ void **avalue, void *closure)
+{
+#ifndef __ILP32__
+ if (cif->abi == FFI_EFI64 || cif->abi == FFI_GNUW64)
+ {
+ ffi_call_go_efi64(cif, fn, rvalue, avalue, closure);
+ return;
+ }
+#endif
+ ffi_call_int (cif, fn, rvalue, avalue, closure);
+}
+
+
+extern void ffi_closure_unix64(void) FFI_HIDDEN;
+extern void ffi_closure_unix64_sse(void) FFI_HIDDEN;
+
+#ifndef __ILP32__
+extern ffi_status
+ffi_prep_closure_loc_efi64(ffi_closure* closure,
+ ffi_cif* cif,
+ void (*fun)(ffi_cif*, void*, void**, void*),
+ void *user_data,
+ void *codeloc);
+#endif
+
+ffi_status
+ffi_prep_closure_loc (ffi_closure* closure,
+ ffi_cif* cif,
+ void (*fun)(ffi_cif*, void*, void**, void*),
+ void *user_data,
+ void *codeloc)
+{
+ static const unsigned char trampoline[16] = {
+ /* leaq -0x7(%rip),%r10 # 0x0 */
+ 0x4c, 0x8d, 0x15, 0xf9, 0xff, 0xff, 0xff,
+ /* jmpq *0x3(%rip) # 0x10 */
+ 0xff, 0x25, 0x03, 0x00, 0x00, 0x00,
+ /* nopl (%rax) */
+ 0x0f, 0x1f, 0x00
+ };
+ void (*dest)(void);
+ char *tramp = closure->tramp;
+
+#ifndef __ILP32__
+ if (cif->abi == FFI_EFI64 || cif->abi == FFI_GNUW64)
+ return ffi_prep_closure_loc_efi64(closure, cif, fun, user_data, codeloc);
+#endif
+ if (cif->abi != FFI_UNIX64)
+ return FFI_BAD_ABI;
+
+ if (cif->flags & UNIX64_FLAG_XMM_ARGS)
+ dest = ffi_closure_unix64_sse;
+ else
+ dest = ffi_closure_unix64;
+
+ memcpy (tramp, trampoline, sizeof(trampoline));
+ *(UINT64 *)(tramp + 16) = (uintptr_t)dest;
+
+ closure->cif = cif;
+ closure->fun = fun;
+ closure->user_data = user_data;
+
+ return FFI_OK;
+}
+
+int FFI_HIDDEN
+ffi_closure_unix64_inner(ffi_cif *cif,
+ void (*fun)(ffi_cif*, void*, void**, void*),
+ void *user_data,
+ void *rvalue,
+ struct register_args *reg_args,
+ char *argp)
+{
+ void **avalue;
+ ffi_type **arg_types;
+ long i, avn;
+ int gprcount, ssecount, ngpr, nsse;
+ int flags;
+
+ avn = cif->nargs;
+ flags = cif->flags;
+ avalue = alloca(avn * sizeof(void *));
+ gprcount = ssecount = 0;
+
+ if (flags & UNIX64_FLAG_RET_IN_MEM)
+ {
+ /* On return, %rax will contain the address that was passed
+ by the caller in %rdi. */
+ void *r = (void *)(uintptr_t)reg_args->gpr[gprcount++];
+ *(void **)rvalue = r;
+ rvalue = r;
+ flags = (sizeof(void *) == 4 ? UNIX64_RET_UINT32 : UNIX64_RET_INT64);
+ }
+
+ arg_types = cif->arg_types;
+ for (i = 0; i < avn; ++i)
+ {
+ enum x86_64_reg_class classes[MAX_CLASSES];
+ size_t n;
+
+ n = examine_argument (arg_types[i], classes, 0, &ngpr, &nsse);
+ if (n == 0
+ || gprcount + ngpr > MAX_GPR_REGS
+ || ssecount + nsse > MAX_SSE_REGS)
+ {
+ long align = arg_types[i]->alignment;
+
+ /* Stack arguments are *always* at least 8 byte aligned. */
+ if (align < 8)
+ align = 8;
+
+ /* Pass this argument in memory. */
+ argp = (void *) FFI_ALIGN (argp, align);
+ avalue[i] = argp;
+ argp += arg_types[i]->size;
+ }
+ /* If the argument is in a single register, or two consecutive
+ integer registers, then we can use that address directly. */
+ else if (n == 1
+ || (n == 2 && !(SSE_CLASS_P (classes[0])
+ || SSE_CLASS_P (classes[1]))))
+ {
+ /* The argument is in a single register. */
+ if (SSE_CLASS_P (classes[0]))
+ {
+ avalue[i] = &reg_args->sse[ssecount];
+ ssecount += n;
+ }
+ else
+ {
+ avalue[i] = &reg_args->gpr[gprcount];
+ gprcount += n;
+ }
+ }
+ /* Otherwise, allocate space to make them consecutive. */
+ else
+ {
+ char *a = alloca (16);
+ unsigned int j;
+
+ avalue[i] = a;
+ for (j = 0; j < n; j++, a += 8)
+ {
+ if (SSE_CLASS_P (classes[j]))
+ memcpy (a, &reg_args->sse[ssecount++], 8);
+ else
+ memcpy (a, &reg_args->gpr[gprcount++], 8);
+ }
+ }
+ }
+
+ /* Invoke the closure. */
+ fun (cif, rvalue, avalue, user_data);
+
+ /* Tell assembly how to perform return type promotions. */
+ return flags;
+}
+
+extern void ffi_go_closure_unix64(void) FFI_HIDDEN;
+extern void ffi_go_closure_unix64_sse(void) FFI_HIDDEN;
+
+#ifndef __ILP32__
+extern ffi_status
+ffi_prep_go_closure_efi64(ffi_go_closure* closure, ffi_cif* cif,
+ void (*fun)(ffi_cif*, void*, void**, void*));
+#endif
+
+ffi_status
+ffi_prep_go_closure (ffi_go_closure* closure, ffi_cif* cif,
+ void (*fun)(ffi_cif*, void*, void**, void*))
+{
+#ifndef __ILP32__
+ if (cif->abi == FFI_EFI64 || cif->abi == FFI_GNUW64)
+ return ffi_prep_go_closure_efi64(closure, cif, fun);
+#endif
+ if (cif->abi != FFI_UNIX64)
+ return FFI_BAD_ABI;
+
+ closure->tramp = (cif->flags & UNIX64_FLAG_XMM_ARGS
+ ? ffi_go_closure_unix64_sse
+ : ffi_go_closure_unix64);
+ closure->cif = cif;
+ closure->fun = fun;
+
+ return FFI_OK;
+}
+
+#endif /* __x86_64__ */
+
+
+====================File: src/x86/ffitarget.h====================
+/* -----------------------------------------------------------------*-C-*-
+ ffitarget.h - Copyright (c) 2012, 2014, 2018 Anthony Green
+ Copyright (c) 1996-2003, 2010 Red Hat, Inc.
+ Copyright (C) 2008 Free Software Foundation, Inc.
+
+ Target configuration macros for x86 and x86-64.
+
+ 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.
+
+ ----------------------------------------------------------------------- */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
+#endif
+
+/* ---- System specific configurations ----------------------------------- */
+
+/* For code common to all platforms on x86 and x86_64. */
+#define X86_ANY
+
+#if defined (X86_64) && defined (__i386__)
+#undef X86_64
+#define X86
+#endif
+
+#ifdef X86_WIN64
+#define FFI_SIZEOF_ARG 8
+#define USE_BUILTIN_FFS 0 /* not yet implemented in mingw-64 */
+#endif
+
+#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION
+#ifndef _MSC_VER
+#define FFI_TARGET_HAS_COMPLEX_TYPE
+#endif
+
+/* ---- Generic type definitions ----------------------------------------- */
+
+#ifndef LIBFFI_ASM
+#ifdef X86_WIN64
+#ifdef _MSC_VER
+typedef unsigned __int64 ffi_arg;
+typedef __int64 ffi_sarg;
+#else
+typedef unsigned long long ffi_arg;
+typedef long long ffi_sarg;
+#endif
+#else
+#if defined __x86_64__ && defined __ILP32__
+#define FFI_SIZEOF_ARG 8
+#define FFI_SIZEOF_JAVA_RAW 4
+typedef unsigned long long ffi_arg;
+typedef long long ffi_sarg;
+#else
+typedef unsigned long ffi_arg;
+typedef signed long ffi_sarg;
+#endif
+#endif
+
+typedef enum ffi_abi {
+#if defined(X86_WIN64)
+ FFI_FIRST_ABI = 0,
+ FFI_WIN64, /* sizeof(long double) == 8 - microsoft compilers */
+ FFI_GNUW64, /* sizeof(long double) == 16 - GNU compilers */
+ FFI_LAST_ABI,
+#ifdef __GNUC__
+ FFI_DEFAULT_ABI = FFI_GNUW64
+#else
+ FFI_DEFAULT_ABI = FFI_WIN64
+#endif
+
+#elif defined(X86_64) || (defined (__x86_64__) && defined (X86_DARWIN))
+ FFI_FIRST_ABI = 1,
+ FFI_UNIX64,
+ FFI_WIN64,
+ FFI_EFI64 = FFI_WIN64,
+ FFI_GNUW64,
+ FFI_LAST_ABI,
+ FFI_DEFAULT_ABI = FFI_UNIX64
+
+#elif defined(X86_WIN32)
+ FFI_FIRST_ABI = 0,
+ FFI_SYSV = 1,
+ FFI_STDCALL = 2,
+ FFI_THISCALL = 3,
+ FFI_FASTCALL = 4,
+ FFI_MS_CDECL = 5,
+ FFI_PASCAL = 6,
+ FFI_REGISTER = 7,
+ FFI_LAST_ABI,
+ FFI_DEFAULT_ABI = FFI_MS_CDECL
+#else
+ FFI_FIRST_ABI = 0,
+ FFI_SYSV = 1,
+ FFI_THISCALL = 3,
+ FFI_FASTCALL = 4,
+ FFI_STDCALL = 5,
+ FFI_PASCAL = 6,
+ FFI_REGISTER = 7,
+ FFI_MS_CDECL = 8,
+ FFI_LAST_ABI,
+ FFI_DEFAULT_ABI = FFI_SYSV
+#endif
+} ffi_abi;
+#endif
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 1
+#define FFI_GO_CLOSURES 1
+
+#define FFI_TYPE_SMALL_STRUCT_1B (FFI_TYPE_LAST + 1)
+#define FFI_TYPE_SMALL_STRUCT_2B (FFI_TYPE_LAST + 2)
+#define FFI_TYPE_SMALL_STRUCT_4B (FFI_TYPE_LAST + 3)
+#define FFI_TYPE_MS_STRUCT (FFI_TYPE_LAST + 4)
+
+#if defined (X86_64) || defined(X86_WIN64) \
+ || (defined (__x86_64__) && defined (X86_DARWIN))
+# define FFI_TRAMPOLINE_SIZE 24
+# define FFI_NATIVE_RAW_API 0
+#else
+# define FFI_TRAMPOLINE_SIZE 12
+# define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */
+#endif
+
+#endif
+
+
+
+====================File: src/x86/ffiw64.c====================
+/* -----------------------------------------------------------------------
+ ffiw64.c - Copyright (c) 2018 Anthony Green
+ Copyright (c) 2014 Red Hat, Inc.
+
+ x86 win64 Foreign Function Interface
+
+ 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.
+ ----------------------------------------------------------------------- */
+
+#if defined(__x86_64__) || defined(_M_AMD64)
+#include <ffi.h>
+#include <ffi_common.h>
+#include <stdlib.h>
+#include <stdint.h>
+
+#ifdef X86_WIN64
+#define EFI64(name) name
+#else
+#define EFI64(name) FFI_HIDDEN name##_efi64
+#endif
+
+struct win64_call_frame
+{
+ UINT64 rbp; /* 0 */
+ UINT64 retaddr; /* 8 */
+ UINT64 fn; /* 16 */
+ UINT64 flags; /* 24 */
+ UINT64 rvalue; /* 32 */
+};
+
+extern void ffi_call_win64 (void *stack, struct win64_call_frame *,
+ void *closure) FFI_HIDDEN;
+
+ffi_status FFI_HIDDEN
+EFI64(ffi_prep_cif_machdep)(ffi_cif *cif)
+{
+ int flags, n;
+
+ switch (cif->abi)
+ {
+ case FFI_WIN64:
+ case FFI_GNUW64:
+ break;
+ default:
+ return FFI_BAD_ABI;
+ }
+
+ flags = cif->rtype->type;
+ switch (flags)
+ {
+ default:
+ break;
+ case FFI_TYPE_LONGDOUBLE:
+ /* GCC returns long double values by reference, like a struct */
+ if (cif->abi == FFI_GNUW64)
+ flags = FFI_TYPE_STRUCT;
+ break;
+ case FFI_TYPE_COMPLEX:
+ flags = FFI_TYPE_STRUCT;
+ /* FALLTHRU */
+ case FFI_TYPE_STRUCT:
+ switch (cif->rtype->size)
+ {
+ case 8:
+ flags = FFI_TYPE_UINT64;
+ break;
+ case 4:
+ flags = FFI_TYPE_SMALL_STRUCT_4B;
+ break;
+ case 2:
+ flags = FFI_TYPE_SMALL_STRUCT_2B;
+ break;
+ case 1:
+ flags = FFI_TYPE_SMALL_STRUCT_1B;
+ break;
+ }
+ break;
+ }
+ cif->flags = flags;
+
+ /* Each argument either fits in a register, an 8 byte slot, or is
+ passed by reference with the pointer in the 8 byte slot. */
+ n = cif->nargs;
+ n += (flags == FFI_TYPE_STRUCT);
+ if (n < 4)
+ n = 4;
+ cif->bytes = n * 8;
+
+ return FFI_OK;
+}
+
+static void
+ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue,
+ void **avalue, void *closure)
+{
+ int i, j, n, flags;
+ UINT64 *stack;
+ size_t rsize;
+ struct win64_call_frame *frame;
+
+ FFI_ASSERT(cif->abi == FFI_GNUW64 || cif->abi == FFI_WIN64);
+
+ flags = cif->flags;
+ rsize = 0;
+
+ /* If we have no return value for a structure, we need to create one.
+ Otherwise we can ignore the return type entirely. */
+ if (rvalue == NULL)
+ {
+ if (flags == FFI_TYPE_STRUCT)
+ rsize = cif->rtype->size;
+ else
+ flags = FFI_TYPE_VOID;
+ }
+
+ stack = alloca(cif->bytes + sizeof(struct win64_call_frame) + rsize);
+ frame = (struct win64_call_frame *)((char *)stack + cif->bytes);
+ if (rsize)
+ rvalue = frame + 1;
+
+ frame->fn = (uintptr_t)fn;
+ frame->flags = flags;
+ frame->rvalue = (uintptr_t)rvalue;
+
+ j = 0;
+ if (flags == FFI_TYPE_STRUCT)
+ {
+ stack[0] = (uintptr_t)rvalue;
+ j = 1;
+ }
+
+ for (i = 0, n = cif->nargs; i < n; ++i, ++j)
+ {
+ switch (cif->arg_types[i]->size)
+ {
+ case 8:
+ stack[j] = *(UINT64 *)avalue[i];
+ break;
+ case 4:
+ stack[j] = *(UINT32 *)avalue[i];
+ break;
+ case 2:
+ stack[j] = *(UINT16 *)avalue[i];
+ break;
+ case 1:
+ stack[j] = *(UINT8 *)avalue[i];
+ break;
+ default:
+ stack[j] = (uintptr_t)avalue[i];
+ break;
+ }
+ }
+
+ ffi_call_win64 (stack, frame, closure);
+}
+
+void
+EFI64(ffi_call)(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
+{
+ ffi_call_int (cif, fn, rvalue, avalue, NULL);
+}
+
+void
+EFI64(ffi_call_go)(ffi_cif *cif, void (*fn)(void), void *rvalue,
+ void **avalue, void *closure)
+{
+ ffi_call_int (cif, fn, rvalue, avalue, closure);
+}
+
+
+extern void ffi_closure_win64(void) FFI_HIDDEN;
+extern void ffi_go_closure_win64(void) FFI_HIDDEN;
+
+ffi_status
+EFI64(ffi_prep_closure_loc)(ffi_closure* closure,
+ ffi_cif* cif,
+ void (*fun)(ffi_cif*, void*, void**, void*),
+ void *user_data,
+ void *codeloc)
+{
+ static const unsigned char trampoline[16] = {
+ /* leaq -0x7(%rip),%r10 # 0x0 */
+ 0x4c, 0x8d, 0x15, 0xf9, 0xff, 0xff, 0xff,
+ /* jmpq *0x3(%rip) # 0x10 */
+ 0xff, 0x25, 0x03, 0x00, 0x00, 0x00,
+ /* nopl (%rax) */
+ 0x0f, 0x1f, 0x00
+ };
+ char *tramp = closure->tramp;
+
+ switch (cif->abi)
+ {
+ case FFI_WIN64:
+ case FFI_GNUW64:
+ break;
+ default:
+ return FFI_BAD_ABI;
+ }
+
+ memcpy (tramp, trampoline, sizeof(trampoline));
+ *(UINT64 *)(tramp + 16) = (uintptr_t)ffi_closure_win64;
+
+ closure->cif = cif;
+ closure->fun = fun;
+ closure->user_data = user_data;
+
+ return FFI_OK;
+}
+
+ffi_status
+EFI64(ffi_prep_go_closure)(ffi_go_closure* closure, ffi_cif* cif,
+ void (*fun)(ffi_cif*, void*, void**, void*))
+{
+ switch (cif->abi)
+ {
+ case FFI_WIN64:
+ case FFI_GNUW64:
+ break;
+ default:
+ return FFI_BAD_ABI;
+ }
+
+ closure->tramp = ffi_go_closure_win64;
+ closure->cif = cif;
+ closure->fun = fun;
+
+ return FFI_OK;
+}
+
+struct win64_closure_frame
+{
+ UINT64 rvalue[2];
+ UINT64 fargs[4];
+ UINT64 retaddr;
+ UINT64 args[];
+};
+
+/* Force the inner function to use the MS ABI. When compiling on win64
+ this is a nop. When compiling on unix, this simplifies the assembly,
+ and places the burden of saving the extra call-saved registers on
+ the compiler. */
+int FFI_HIDDEN __attribute__((ms_abi))
+ffi_closure_win64_inner(ffi_cif *cif,
+ void (*fun)(ffi_cif*, void*, void**, void*),
+ void *user_data,
+ struct win64_closure_frame *frame)
+{
+ void **avalue;
+ void *rvalue;
+ int i, n, nreg, flags;
+
+ avalue = alloca(cif->nargs * sizeof(void *));
+ rvalue = frame->rvalue;
+ nreg = 0;
+
+ /* When returning a structure, the address is in the first argument.
+ We must also be prepared to return the same address in eax, so
+ install that address in the frame and pretend we return a pointer. */
+ flags = cif->flags;
+ if (flags == FFI_TYPE_STRUCT)
+ {
+ rvalue = (void *)(uintptr_t)frame->args[0];
+ frame->rvalue[0] = frame->args[0];
+ nreg = 1;
+ }
+
+ for (i = 0, n = cif->nargs; i < n; ++i, ++nreg)
+ {
+ size_t size = cif->arg_types[i]->size;
+ size_t type = cif->arg_types[i]->type;
+ void *a;
+
+ if (type == FFI_TYPE_DOUBLE || type == FFI_TYPE_FLOAT)
+ {
+ if (nreg < 4)
+ a = &frame->fargs[nreg];
+ else
+ a = &frame->args[nreg];
+ }
+ else if (size == 1 || size == 2 || size == 4 || size == 8)
+ a = &frame->args[nreg];
+ else
+ a = (void *)(uintptr_t)frame->args[nreg];
+
+ avalue[i] = a;
+ }
+
+ /* Invoke the closure. */
+ fun (cif, rvalue, avalue, user_data);
+ return flags;
+}
+
+#endif /* __x86_64__ */
+
+
+====================File: src/x86/sysv.S====================
+/* -----------------------------------------------------------------------
+ sysv.S - Copyright (c) 2017 Anthony Green
+ - Copyright (c) 2013 The Written Word, Inc.
+ - Copyright (c) 1996,1998,2001-2003,2005,2008,2010 Red Hat, Inc.
- *(UINT64 *)(tramp + 16) = (uintptr_t)start;
-
- ffi_clear_cache(tramp, tramp + FFI_TRAMPOLINE_SIZE);
-
- /* Also flush the cache for code mapping. */
-#ifdef _M_ARM64
- // Not using dlmalloc.c for Windows ARM64 builds
- // so calling ffi_data_to_code_pointer() isn't necessary
- unsigned char *tramp_code = tramp;
- #else
- unsigned char *tramp_code = ffi_data_to_code_pointer (tramp);
- #endif
- ffi_clear_cache (tramp_code, tramp_code + FFI_TRAMPOLINE_SIZE);
-#endif
-
- closure->cif = cif;
- closure->fun = fun;
- closure->user_data = user_data;
-
- return FFI_OK;
-}
-
-#ifdef FFI_GO_CLOSURES
-extern void ffi_go_closure_SYSV (void) FFI_HIDDEN;
-extern void ffi_go_closure_SYSV_V (void) FFI_HIDDEN;
-
-ffi_status
-ffi_prep_go_closure (ffi_go_closure *closure, ffi_cif* cif,
- void (*fun)(ffi_cif*,void*,void**,void*))
-{
- void (*start)(void);
-
- if (cif->abi != FFI_SYSV)
- return FFI_BAD_ABI;
-
- if (cif->flags & AARCH64_FLAG_ARG_V)
- start = ffi_go_closure_SYSV_V;
- else
- start = ffi_go_closure_SYSV;
-
- closure->tramp = start;
- closure->cif = cif;
- closure->fun = fun;
-
- return FFI_OK;
-}
-#endif /* FFI_GO_CLOSURES */
-
-/* Primary handler to setup and invoke a function within a closure.
-
- A closure when invoked enters via the assembler wrapper
- ffi_closure_SYSV(). The wrapper allocates a call context on the
- stack, saves the interesting registers (from the perspective of
- the calling convention) into the context then passes control to
- ffi_closure_SYSV_inner() passing the saved context and a pointer to
- the stack at the point ffi_closure_SYSV() was invoked.
-
- On the return path the assembler wrapper will reload call context
- registers.
-
- ffi_closure_SYSV_inner() marshalls the call context into ffi value
- descriptors, invokes the wrapped function, then marshalls the return
- value back into the call context. */
-
-int FFI_HIDDEN
-ffi_closure_SYSV_inner (ffi_cif *cif,
- void (*fun)(ffi_cif*,void*,void**,void*),
- void *user_data,
- struct call_context *context,
- void *stack, void *rvalue, void *struct_rvalue)
-{
- void **avalue = (void**) alloca (cif->nargs * sizeof (void*));
- int i, h, nargs, flags;
- struct arg_state state;
-
- arg_init (&state);
-
- for (i = 0, nargs = cif->nargs; i < nargs; i++)
- {
- ffi_type *ty = cif->arg_types[i];
- int t = ty->type;
- size_t n, s = ty->size;
-
- switch (t)
- {
- case FFI_TYPE_VOID:
- FFI_ASSERT (0);
- break;
-
- case FFI_TYPE_INT:
- case FFI_TYPE_UINT8:
- case FFI_TYPE_SINT8:
- case FFI_TYPE_UINT16:
- case FFI_TYPE_SINT16:
- case FFI_TYPE_UINT32:
- case FFI_TYPE_SINT32:
- case FFI_TYPE_UINT64:
- case FFI_TYPE_SINT64:
- case FFI_TYPE_POINTER:
- avalue[i] = allocate_int_to_reg_or_stack (context, &state, stack, s);
- break;
-
- case FFI_TYPE_FLOAT:
- case FFI_TYPE_DOUBLE:
- case FFI_TYPE_LONGDOUBLE:
- case FFI_TYPE_STRUCT:
- case FFI_TYPE_COMPLEX:
- h = is_vfp_type (ty);
- if (h)
- {
- n = 4 - (h & 3);
-#ifdef _M_ARM64 /* for handling armasm calling convention */
- if (cif->is_variadic)
- {
- if (state.ngrn + n <= N_X_ARG_REG)
- {
- void *reg = &context->x[state.ngrn];
- state.ngrn += (unsigned int)n;
-
- /* Eeek! We need a pointer to the structure, however the
- homogeneous float elements are being passed in individual
- registers, therefore for float and double the structure
- is not represented as a contiguous sequence of bytes in
- our saved register context. We don't need the original
- contents of the register storage, so we reformat the
- structure into the same memory. */
- avalue[i] = compress_hfa_type(reg, reg, h);
- }
- else
- {
- state.ngrn = N_X_ARG_REG;
- state.nsrn = N_V_ARG_REG;
- avalue[i] = allocate_to_stack(&state, stack,
- ty->alignment, s);
- }
- }
- else
- {
-#endif /* for handling armasm calling convention */
- if (state.nsrn + n <= N_V_ARG_REG)
- {
- void *reg = &context->v[state.nsrn];
- state.nsrn += (unsigned int)n;
- avalue[i] = compress_hfa_type(reg, reg, h);
- }
- else
- {
- state.nsrn = N_V_ARG_REG;
- avalue[i] = allocate_to_stack(&state, stack,
- ty->alignment, s);
- }
-#ifdef _M_ARM64 /* for handling armasm calling convention */
- }
-#endif /* for handling armasm calling convention */
- }
- else if (s > 16)
- {
- /* Replace Composite type of size greater than 16 with a
- pointer. */
- avalue[i] = *(void **)
- allocate_int_to_reg_or_stack (context, &state, stack,
- sizeof (void *));
- }
- else
- {
- n = (s + 7) / 8;
- if (state.ngrn + n <= N_X_ARG_REG)
- {
- avalue[i] = &context->x[state.ngrn];
- state.ngrn += (unsigned int)n;
- }
- else
- {
- state.ngrn = N_X_ARG_REG;
- avalue[i] = allocate_to_stack(&state, stack,
- ty->alignment, s);
- }
- }
- break;
-
- default:
- abort();
- }
-
-#if defined (__APPLE__)
- if (i + 1 == cif->aarch64_nfixedargs)
- {
- state.ngrn = N_X_ARG_REG;
- state.nsrn = N_V_ARG_REG;
- state.allocating_variadic = 1;
- }
-#endif
- }
-
- flags = cif->flags;
- if (flags & AARCH64_RET_IN_MEM)
- rvalue = struct_rvalue;
-
- fun (cif, rvalue, avalue, user_data);
-
- return flags;
-}
-
-#endif /* (__aarch64__) || defined(__arm64__)|| defined (_M_ARM64)*/
-
-
-====================File: src/aarch64/ffitarget.h====================
-/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd.
-
-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. */
-
-#ifndef LIBFFI_TARGET_H
-#define LIBFFI_TARGET_H
-
-#ifndef LIBFFI_H
-#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
-#endif
-
-#ifndef LIBFFI_ASM
-#ifdef __ILP32__
-#define FFI_SIZEOF_ARG 8
-#define FFI_SIZEOF_JAVA_RAW 4
-typedef unsigned long long ffi_arg;
-typedef signed long long ffi_sarg;
-#elif defined(_M_ARM64)
-#define FFI_SIZEOF_ARG 8
-typedef unsigned long long ffi_arg;
-typedef signed long long ffi_sarg;
-#else
-typedef unsigned long ffi_arg;
-typedef signed long ffi_sarg;
-#endif
-
-typedef enum ffi_abi
- {
- FFI_FIRST_ABI = 0,
- FFI_SYSV,
- FFI_LAST_ABI,
- FFI_DEFAULT_ABI = FFI_SYSV
- } ffi_abi;
-#endif
-
-/* ---- Definitions for closures ----------------------------------------- */
-
-#define FFI_CLOSURES 1
-#define FFI_NATIVE_RAW_API 0
-
-#if defined (FFI_EXEC_TRAMPOLINE_TABLE) && FFI_EXEC_TRAMPOLINE_TABLE
-
-#ifdef __MACH__
-#define FFI_TRAMPOLINE_SIZE 16
-#define FFI_TRAMPOLINE_CLOSURE_OFFSET 16
-#else
-#error "No trampoline table implementation"
-#endif
-
-#else
-#define FFI_TRAMPOLINE_SIZE 24
-#define FFI_TRAMPOLINE_CLOSURE_OFFSET FFI_TRAMPOLINE_SIZE
-#endif
-
-#ifdef _M_ARM64
-#define FFI_EXTRA_CIF_FIELDS unsigned is_variadic
-#endif
-
-/* ---- Internal ---- */
-
-#if defined (__APPLE__)
-#define FFI_TARGET_SPECIFIC_VARIADIC
-#define FFI_EXTRA_CIF_FIELDS unsigned aarch64_nfixedargs
-#elif !defined(_M_ARM64)
-/* iOS and Windows reserve x18 for the system. Disable Go closures until
- a new static chain is chosen. */
-#define FFI_GO_CLOSURES 1
-#endif
-
-#ifndef _M_ARM64
-/* No complex type on Windows */
-#define FFI_TARGET_HAS_COMPLEX_TYPE
-#endif
-
-#endif
-
-
-====================File: src/aarch64/sysv.S====================
-/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd.
-
-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. */
-
-#if defined(__aarch64__) || defined(__arm64__)
-#define LIBFFI_ASM
-#include <fficonfig.h>
-#include <ffi.h>
-#include <ffi_cfi.h>
-#include "internal.h"
-
-#ifdef HAVE_MACHINE_ASM_H
-#include <machine/asm.h>
-#else
-#ifdef __USER_LABEL_PREFIX__
-#define CONCAT1(a, b) CONCAT2(a, b)
-#define CONCAT2(a, b) a ## b
-
-/* Use the right prefix for global labels. */
-#define CNAME(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
-#else
-#define CNAME(x) x
-#endif
-#endif
-
-#ifdef __AARCH64EB__
-# define BE(X) X
-#else
-# define BE(X) 0
-#endif
-
-#ifdef __ILP32__
-#define PTR_REG(n) w##n
-#else
-#define PTR_REG(n) x##n
-#endif
-
-#ifdef __ILP32__
-#define PTR_SIZE 4
-#else
-#define PTR_SIZE 8
-#endif
-
- .text
- .align 4
-
-/* ffi_call_SYSV
- extern void ffi_call_SYSV (void *stack, void *frame,
- void (*fn)(void), void *rvalue,
- int flags, void *closure);
-
- Therefore on entry we have:
-
- x0 stack
- x1 frame
- x2 fn
- x3 rvalue
- x4 flags
- x5 closure
-*/
-
- cfi_startproc
-CNAME(ffi_call_SYSV):
- /* Use a stack frame allocated by our caller. */
- cfi_def_cfa(x1, 32);
- stp x29, x30, [x1]
- mov x29, x1
- mov sp, x0
- cfi_def_cfa_register(x29)
- cfi_rel_offset (x29, 0)
- cfi_rel_offset (x30, 8)
-
- mov x9, x2 /* save fn */
- mov x8, x3 /* install structure return */
-#ifdef FFI_GO_CLOSURES
- mov x18, x5 /* install static chain */
-#endif
- stp x3, x4, [x29, #16] /* save rvalue and flags */
-
- /* Load the vector argument passing registers, if necessary. */
- tbz w4, #AARCH64_FLAG_ARG_V_BIT, 1f
- ldp q0, q1, [sp, #0]
- ldp q2, q3, [sp, #32]
- ldp q4, q5, [sp, #64]
- ldp q6, q7, [sp, #96]
-1:
- /* Load the core argument passing registers, including
- the structure return pointer. */
- ldp x0, x1, [sp, #16*N_V_ARG_REG + 0]
- ldp x2, x3, [sp, #16*N_V_ARG_REG + 16]
- ldp x4, x5, [sp, #16*N_V_ARG_REG + 32]
- ldp x6, x7, [sp, #16*N_V_ARG_REG + 48]
-
- /* Deallocate the context, leaving the stacked arguments. */
- add sp, sp, #CALL_CONTEXT_SIZE
-
- blr x9 /* call fn */
-
- ldp x3, x4, [x29, #16] /* reload rvalue and flags */
-
- /* Partially deconstruct the stack frame. */
- mov sp, x29
- cfi_def_cfa_register (sp)
- ldp x29, x30, [x29]
-
- /* Save the return value as directed. */
- adr x5, 0f
- and w4, w4, #AARCH64_RET_MASK
- add x5, x5, x4, lsl #3
- br x5
-
- /* Note that each table entry is 2 insns, and thus 8 bytes.
- For integer data, note that we're storing into ffi_arg
- and therefore we want to extend to 64 bits; these types
- have two consecutive entries allocated for them. */
- .align 4
-0: ret /* VOID */
- nop
-1: str x0, [x3] /* INT64 */
- ret
-2: stp x0, x1, [x3] /* INT128 */
- ret
-3: brk #1000 /* UNUSED */
- ret
-4: brk #1000 /* UNUSED */
- ret
-5: brk #1000 /* UNUSED */
- ret
-6: brk #1000 /* UNUSED */
- ret
-7: brk #1000 /* UNUSED */
- ret
-8: st4 { v0.s, v1.s, v2.s, v3.s }[0], [x3] /* S4 */
- ret
-9: st3 { v0.s, v1.s, v2.s }[0], [x3] /* S3 */
- ret
-10: stp s0, s1, [x3] /* S2 */
- ret
-11: str s0, [x3] /* S1 */
- ret
-12: st4 { v0.d, v1.d, v2.d, v3.d }[0], [x3] /* D4 */
- ret
-13: st3 { v0.d, v1.d, v2.d }[0], [x3] /* D3 */
- ret
-14: stp d0, d1, [x3] /* D2 */
- ret
-15: str d0, [x3] /* D1 */
- ret
-16: str q3, [x3, #48] /* Q4 */
- nop
-17: str q2, [x3, #32] /* Q3 */
- nop
-18: stp q0, q1, [x3] /* Q2 */
- ret
-19: str q0, [x3] /* Q1 */
- ret
-20: uxtb w0, w0 /* UINT8 */
- str x0, [x3]
-21: ret /* reserved */
- nop
-22: uxth w0, w0 /* UINT16 */
- str x0, [x3]
-23: ret /* reserved */
- nop
-24: mov w0, w0 /* UINT32 */
- str x0, [x3]
-25: ret /* reserved */
- nop
-26: sxtb x0, w0 /* SINT8 */
- str x0, [x3]
-27: ret /* reserved */
- nop
-28: sxth x0, w0 /* SINT16 */
- str x0, [x3]
-29: ret /* reserved */
- nop
-30: sxtw x0, w0 /* SINT32 */
- str x0, [x3]
-31: ret /* reserved */
- nop
-
- cfi_endproc
-
- .globl CNAME(ffi_call_SYSV)
- FFI_HIDDEN(CNAME(ffi_call_SYSV))
-#ifdef __ELF__
- .type CNAME(ffi_call_SYSV), #function
- .size CNAME(ffi_call_SYSV), .-CNAME(ffi_call_SYSV)
-#endif
-
-/* ffi_closure_SYSV
-
- Closure invocation glue. This is the low level code invoked directly by
- the closure trampoline to setup and call a closure.
-
- On entry x17 points to a struct ffi_closure, x16 has been clobbered
- all other registers are preserved.
-
- We allocate a call context and save the argument passing registers,
- then invoked the generic C ffi_closure_SYSV_inner() function to do all
- the real work, on return we load the result passing registers back from
- the call context.
-*/
-
-#define ffi_closure_SYSV_FS (8*2 + CALL_CONTEXT_SIZE + 64)
-
- .align 4
-CNAME(ffi_closure_SYSV_V):
- cfi_startproc
- stp x29, x30, [sp, #-ffi_closure_SYSV_FS]!
- cfi_adjust_cfa_offset (ffi_closure_SYSV_FS)
- cfi_rel_offset (x29, 0)
- cfi_rel_offset (x30, 8)
-
- /* Save the argument passing vector registers. */
- stp q0, q1, [sp, #16 + 0]
- stp q2, q3, [sp, #16 + 32]
- stp q4, q5, [sp, #16 + 64]
- stp q6, q7, [sp, #16 + 96]
- b 0f
- cfi_endproc
-
- .globl CNAME(ffi_closure_SYSV_V)
- FFI_HIDDEN(CNAME(ffi_closure_SYSV_V))
-#ifdef __ELF__
- .type CNAME(ffi_closure_SYSV_V), #function
- .size CNAME(ffi_closure_SYSV_V), . - CNAME(ffi_closure_SYSV_V)
-#endif
-
- .align 4
- cfi_startproc
-CNAME(ffi_closure_SYSV):
- stp x29, x30, [sp, #-ffi_closure_SYSV_FS]!
- cfi_adjust_cfa_offset (ffi_closure_SYSV_FS)
- cfi_rel_offset (x29, 0)
- cfi_rel_offset (x30, 8)
-0:
- mov x29, sp
-
- /* Save the argument passing core registers. */
- stp x0, x1, [sp, #16 + 16*N_V_ARG_REG + 0]
- stp x2, x3, [sp, #16 + 16*N_V_ARG_REG + 16]
- stp x4, x5, [sp, #16 + 16*N_V_ARG_REG + 32]
- stp x6, x7, [sp, #16 + 16*N_V_ARG_REG + 48]
-
- /* Load ffi_closure_inner arguments. */
- ldp PTR_REG(0), PTR_REG(1), [x17, #FFI_TRAMPOLINE_CLOSURE_OFFSET] /* load cif, fn */
- ldr PTR_REG(2), [x17, #FFI_TRAMPOLINE_CLOSURE_OFFSET+PTR_SIZE*2] /* load user_data */
-.Ldo_closure:
- add x3, sp, #16 /* load context */
- add x4, sp, #ffi_closure_SYSV_FS /* load stack */
- add x5, sp, #16+CALL_CONTEXT_SIZE /* load rvalue */
- mov x6, x8 /* load struct_rval */
- bl CNAME(ffi_closure_SYSV_inner)
-
- /* Load the return value as directed. */
- adr x1, 0f
- and w0, w0, #AARCH64_RET_MASK
- add x1, x1, x0, lsl #3
- add x3, sp, #16+CALL_CONTEXT_SIZE
- br x1
-
- /* Note that each table entry is 2 insns, and thus 8 bytes. */
- .align 4
-0: b 99f /* VOID */
- nop
-1: ldr x0, [x3] /* INT64 */
- b 99f
-2: ldp x0, x1, [x3] /* INT128 */
- b 99f
-3: brk #1000 /* UNUSED */
- nop
-4: brk #1000 /* UNUSED */
- nop
-5: brk #1000 /* UNUSED */
- nop
-6: brk #1000 /* UNUSED */
- nop
-7: brk #1000 /* UNUSED */
- nop
-8: ldr s3, [x3, #12] /* S4 */
- nop
-9: ldr s2, [x3, #8] /* S3 */
- nop
-10: ldp s0, s1, [x3] /* S2 */
- b 99f
-11: ldr s0, [x3] /* S1 */
- b 99f
-12: ldr d3, [x3, #24] /* D4 */
- nop
-13: ldr d2, [x3, #16] /* D3 */
- nop
-14: ldp d0, d1, [x3] /* D2 */
- b 99f
-15: ldr d0, [x3] /* D1 */
- b 99f
-16: ldr q3, [x3, #48] /* Q4 */
- nop
-17: ldr q2, [x3, #32] /* Q3 */
- nop
-18: ldp q0, q1, [x3] /* Q2 */
- b 99f
-19: ldr q0, [x3] /* Q1 */
- b 99f
-20: ldrb w0, [x3, #BE(7)] /* UINT8 */
- b 99f
-21: brk #1000 /* reserved */
- nop
-22: ldrh w0, [x3, #BE(6)] /* UINT16 */
- b 99f
-23: brk #1000 /* reserved */
- nop
-24: ldr w0, [x3, #BE(4)] /* UINT32 */
- b 99f
-25: brk #1000 /* reserved */
- nop
-26: ldrsb x0, [x3, #BE(7)] /* SINT8 */
- b 99f
-27: brk #1000 /* reserved */
- nop
-28: ldrsh x0, [x3, #BE(6)] /* SINT16 */
- b 99f
-29: brk #1000 /* reserved */
- nop
-30: ldrsw x0, [x3, #BE(4)] /* SINT32 */
- nop
-31: /* reserved */
-99: ldp x29, x30, [sp], #ffi_closure_SYSV_FS
- cfi_adjust_cfa_offset (-ffi_closure_SYSV_FS)
- cfi_restore (x29)
- cfi_restore (x30)
- ret
- cfi_endproc
-
- .globl CNAME(ffi_closure_SYSV)
- FFI_HIDDEN(CNAME(ffi_closure_SYSV))
-#ifdef __ELF__
- .type CNAME(ffi_closure_SYSV), #function
- .size CNAME(ffi_closure_SYSV), . - CNAME(ffi_closure_SYSV)
-#endif
-
-#if FFI_EXEC_TRAMPOLINE_TABLE
-
-#ifdef __MACH__
-#include <mach/machine/vm_param.h>
- .align PAGE_MAX_SHIFT
-CNAME(ffi_closure_trampoline_table_page):
- .rept PAGE_MAX_SIZE / FFI_TRAMPOLINE_SIZE
- adr x16, -PAGE_MAX_SIZE
- ldp x17, x16, [x16]
- br x16
- nop /* each entry in the trampoline config page is 2*sizeof(void*) so the trampoline itself cannot be smaller that 16 bytes */
- .endr
-
- .globl CNAME(ffi_closure_trampoline_table_page)
- FFI_HIDDEN(CNAME(ffi_closure_trampoline_table_page))
- #ifdef __ELF__
- .type CNAME(ffi_closure_trampoline_table_page), #function
- .size CNAME(ffi_closure_trampoline_table_page), . - CNAME(ffi_closure_trampoline_table_page)
- #endif
-#endif
-
-#endif /* FFI_EXEC_TRAMPOLINE_TABLE */
-
-#ifdef FFI_GO_CLOSURES
- .align 4
-CNAME(ffi_go_closure_SYSV_V):
- cfi_startproc
- stp x29, x30, [sp, #-ffi_closure_SYSV_FS]!
- cfi_adjust_cfa_offset (ffi_closure_SYSV_FS)
- cfi_rel_offset (x29, 0)
- cfi_rel_offset (x30, 8)
-
- /* Save the argument passing vector registers. */
- stp q0, q1, [sp, #16 + 0]
- stp q2, q3, [sp, #16 + 32]
- stp q4, q5, [sp, #16 + 64]
- stp q6, q7, [sp, #16 + 96]
- b 0f
- cfi_endproc
-
- .globl CNAME(ffi_go_closure_SYSV_V)
- FFI_HIDDEN(CNAME(ffi_go_closure_SYSV_V))
-#ifdef __ELF__
- .type CNAME(ffi_go_closure_SYSV_V), #function
- .size CNAME(ffi_go_closure_SYSV_V), . - CNAME(ffi_go_closure_SYSV_V)
-#endif
-
- .align 4
- cfi_startproc
-CNAME(ffi_go_closure_SYSV):
- stp x29, x30, [sp, #-ffi_closure_SYSV_FS]!
- cfi_adjust_cfa_offset (ffi_closure_SYSV_FS)
- cfi_rel_offset (x29, 0)
- cfi_rel_offset (x30, 8)
-0:
- mov x29, sp
-
- /* Save the argument passing core registers. */
- stp x0, x1, [sp, #16 + 16*N_V_ARG_REG + 0]
- stp x2, x3, [sp, #16 + 16*N_V_ARG_REG + 16]
- stp x4, x5, [sp, #16 + 16*N_V_ARG_REG + 32]
- stp x6, x7, [sp, #16 + 16*N_V_ARG_REG + 48]
-
- /* Load ffi_closure_inner arguments. */
- ldp PTR_REG(0), PTR_REG(1), [x18, #PTR_SIZE]/* load cif, fn */
- mov x2, x18 /* load user_data */
- b .Ldo_closure
- cfi_endproc
-
- .globl CNAME(ffi_go_closure_SYSV)
- FFI_HIDDEN(CNAME(ffi_go_closure_SYSV))
-#ifdef __ELF__
- .type CNAME(ffi_go_closure_SYSV), #function
- .size CNAME(ffi_go_closure_SYSV), . - CNAME(ffi_go_closure_SYSV)
-#endif
-#endif /* FFI_GO_CLOSURES */
-#endif /* __arm64__ */
-
-#if defined __ELF__ && defined __linux__
- .section .note.GNU-stack,"",%progbits
-#endif
-
-
-
-====================File: src/arm/ffi.c====================
-/* -----------------------------------------------------------------------
- ffi.c - Copyright (c) 2011 Timothy Wall
- Copyright (c) 2011 Plausible Labs Cooperative, Inc.
- Copyright (c) 2011 Anthony Green
- Copyright (c) 2011 Free Software Foundation
- Copyright (c) 1998, 2008, 2011 Red Hat, Inc.
-
- ARM Foreign Function Interface
-
- 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.
- ----------------------------------------------------------------------- */
-
-#if defined(__arm__) || defined(_M_ARM)
-#include <fficonfig.h>
-#include <ffi.h>
-#include <ffi_common.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include "internal.h"
-
-#if defined(_MSC_VER) && defined(_M_ARM)
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-#endif
-
-#if FFI_EXEC_TRAMPOLINE_TABLE
-
-#ifdef __MACH__
-#include <mach/machine/vm_param.h>
-#endif
-
-#else
-#ifndef _M_ARM
-extern unsigned int ffi_arm_trampoline[2] FFI_HIDDEN;
-#else
-extern unsigned int ffi_arm_trampoline[3] FFI_HIDDEN;
-#endif
-#endif
-
-/* Forward declares. */
-static int vfp_type_p (const ffi_type *);
-static void layout_vfp_args (ffi_cif *);
-
-static void *
-ffi_align (ffi_type *ty, void *p)
-{
- /* Align if necessary */
- size_t alignment;
-#ifdef _WIN32_WCE
- alignment = 4;
-#else
- alignment = ty->alignment;
- if (alignment < 4)
- alignment = 4;
-#endif
- return (void *) FFI_ALIGN (p, alignment);
-}
-
-static size_t
-ffi_put_arg (ffi_type *ty, void *src, void *dst)
-{
- size_t z = ty->size;
-
- switch (ty->type)
- {
- case FFI_TYPE_SINT8:
- *(UINT32 *)dst = *(SINT8 *)src;
- break;
- case FFI_TYPE_UINT8:
- *(UINT32 *)dst = *(UINT8 *)src;
- break;
- case FFI_TYPE_SINT16:
- *(UINT32 *)dst = *(SINT16 *)src;
- break;
- case FFI_TYPE_UINT16:
- *(UINT32 *)dst = *(UINT16 *)src;
- break;
-
- case FFI_TYPE_INT:
- case FFI_TYPE_SINT32:
- case FFI_TYPE_UINT32:
- case FFI_TYPE_POINTER:
-#ifndef _MSC_VER
- case FFI_TYPE_FLOAT:
-#endif
- *(UINT32 *)dst = *(UINT32 *)src;
- break;
-
-#ifdef _MSC_VER
- // casting a float* to a UINT32* doesn't work on Windows
- case FFI_TYPE_FLOAT:
- *(uintptr_t *)dst = 0;
- *(float *)dst = *(float *)src;
- break;
-#endif
-
- case FFI_TYPE_SINT64:
- case FFI_TYPE_UINT64:
- case FFI_TYPE_DOUBLE:
- *(UINT64 *)dst = *(UINT64 *)src;
- break;
-
- case FFI_TYPE_STRUCT:
- case FFI_TYPE_COMPLEX:
- memcpy (dst, src, z);
- break;
-
- default:
- abort();
- }
-
- return FFI_ALIGN (z, 4);
-}
-
-/* ffi_prep_args is called once stack space has been allocated
- for the function's arguments.
-
- The vfp_space parameter is the load area for VFP regs, the return
- value is cif->vfp_used (word bitset of VFP regs used for passing
- arguments). These are only used for the VFP hard-float ABI.
-*/
-static void
-ffi_prep_args_SYSV (ffi_cif *cif, int flags, void *rvalue,
- void **avalue, char *argp)
-{
- ffi_type **arg_types = cif->arg_types;
- int i, n;
-
- if (flags == ARM_TYPE_STRUCT)
- {
- *(void **) argp = rvalue;
- argp += 4;
- }
-
- for (i = 0, n = cif->nargs; i < n; i++)
- {
- ffi_type *ty = arg_types[i];
- argp = ffi_align (ty, argp);
- argp += ffi_put_arg (ty, avalue[i], argp);
- }
-}
-
-static void
-ffi_prep_args_VFP (ffi_cif *cif, int flags, void *rvalue,
- void **avalue, char *stack, char *vfp_space)
-{
- ffi_type **arg_types = cif->arg_types;
- int i, n, vi = 0;
- char *argp, *regp, *eo_regp;
- char stack_used = 0;
- char done_with_regs = 0;
-
- /* The first 4 words on the stack are used for values
- passed in core registers. */
- regp = stack;
- eo_regp = argp = regp + 16;
-
- /* If the function returns an FFI_TYPE_STRUCT in memory,
- that address is passed in r0 to the function. */
- if (flags == ARM_TYPE_STRUCT)
- {
- *(void **) regp = rvalue;
- regp += 4;
- }
-
- for (i = 0, n = cif->nargs; i < n; i++)
- {
- ffi_type *ty = arg_types[i];
- void *a = avalue[i];
- int is_vfp_type = vfp_type_p (ty);
-
- /* Allocated in VFP registers. */
- if (vi < cif->vfp_nargs && is_vfp_type)
- {
- char *vfp_slot = vfp_space + cif->vfp_args[vi++] * 4;
- ffi_put_arg (ty, a, vfp_slot);
- continue;
- }
- /* Try allocating in core registers. */
- else if (!done_with_regs && !is_vfp_type)
- {
- char *tregp = ffi_align (ty, regp);
- size_t size = ty->size;
- size = (size < 4) ? 4 : size; // pad
- /* Check if there is space left in the aligned register
- area to place the argument. */
- if (tregp + size <= eo_regp)
- {
- regp = tregp + ffi_put_arg (ty, a, tregp);
- done_with_regs = (regp == argp);
- // ensure we did not write into the stack area
- FFI_ASSERT (regp <= argp);
- continue;
- }
- /* In case there are no arguments in the stack area yet,
- the argument is passed in the remaining core registers
- and on the stack. */
- else if (!stack_used)
- {
- stack_used = 1;
- done_with_regs = 1;
- argp = tregp + ffi_put_arg (ty, a, tregp);
- FFI_ASSERT (eo_regp < argp);
- continue;
- }
- }
- /* Base case, arguments are passed on the stack */
- stack_used = 1;
- argp = ffi_align (ty, argp);
- argp += ffi_put_arg (ty, a, argp);
- }
-}
-
-/* Perform machine dependent cif processing */
-ffi_status FFI_HIDDEN
-ffi_prep_cif_machdep (ffi_cif *cif)
-{
- int flags = 0, cabi = cif->abi;
- size_t bytes = cif->bytes;
-
- /* Map out the register placements of VFP register args. The VFP
- hard-float calling conventions are slightly more sophisticated
- than the base calling conventions, so we do it here instead of
- in ffi_prep_args(). */
- if (cabi == FFI_VFP)
- layout_vfp_args (cif);
-
- /* Set the return type flag */
- switch (cif->rtype->type)
- {
- case FFI_TYPE_VOID:
- flags = ARM_TYPE_VOID;
- break;
-
- case FFI_TYPE_INT:
- case FFI_TYPE_UINT8:
- case FFI_TYPE_SINT8:
- case FFI_TYPE_UINT16:
- case FFI_TYPE_SINT16:
- case FFI_TYPE_UINT32:
- case FFI_TYPE_SINT32:
- case FFI_TYPE_POINTER:
- flags = ARM_TYPE_INT;
- break;
-
- case FFI_TYPE_SINT64:
- case FFI_TYPE_UINT64:
- flags = ARM_TYPE_INT64;
- break;
-
- case FFI_TYPE_FLOAT:
- flags = (cabi == FFI_VFP ? ARM_TYPE_VFP_S : ARM_TYPE_INT);
- break;
- case FFI_TYPE_DOUBLE:
- flags = (cabi == FFI_VFP ? ARM_TYPE_VFP_D : ARM_TYPE_INT64);
- break;
-
- case FFI_TYPE_STRUCT:
- case FFI_TYPE_COMPLEX:
- if (cabi == FFI_VFP)
- {
- int h = vfp_type_p (cif->rtype);
-
- flags = ARM_TYPE_VFP_N;
- if (h == 0x100 + FFI_TYPE_FLOAT)
- flags = ARM_TYPE_VFP_S;
- if (h == 0x100 + FFI_TYPE_DOUBLE)
- flags = ARM_TYPE_VFP_D;
- if (h != 0)
- break;
- }
-
- /* A Composite Type not larger than 4 bytes is returned in r0.
- A Composite Type larger than 4 bytes, or whose size cannot
- be determined statically ... is stored in memory at an
- address passed [in r0]. */
- if (cif->rtype->size <= 4)
- flags = ARM_TYPE_INT;
- else
- {
- flags = ARM_TYPE_STRUCT;
- bytes += 4;
- }
- break;
-
- default:
- abort();
- }
-
- /* Round the stack up to a multiple of 8 bytes. This isn't needed
- everywhere, but it is on some platforms, and it doesn't harm anything
- when it isn't needed. */
- bytes = FFI_ALIGN (bytes, 8);
-
- /* Minimum stack space is the 4 register arguments that we pop. */
- if (bytes < 4*4)
- bytes = 4*4;
-
- cif->bytes = bytes;
- cif->flags = flags;
-
- return FFI_OK;
-}
-
-/* Perform machine dependent cif processing for variadic calls */
-ffi_status FFI_HIDDEN
-ffi_prep_cif_machdep_var (ffi_cif * cif,
- unsigned int nfixedargs, unsigned int ntotalargs)
-{
- /* VFP variadic calls actually use the SYSV ABI */
- if (cif->abi == FFI_VFP)
- cif->abi = FFI_SYSV;
-
- return ffi_prep_cif_machdep (cif);
-}
-
-/* Prototypes for assembly functions, in sysv.S. */
-
-struct call_frame
-{
- void *fp;
- void *lr;
- void *rvalue;
- int flags;
- void *closure;
-};
-
-extern void ffi_call_SYSV (void *stack, struct call_frame *,
- void (*fn) (void)) FFI_HIDDEN;
-extern void ffi_call_VFP (void *vfp_space, struct call_frame *,
- void (*fn) (void), unsigned vfp_used) FFI_HIDDEN;
-
-static void
-ffi_call_int (ffi_cif * cif, void (*fn) (void), void *rvalue,
- void **avalue, void *closure)
-{
- int flags = cif->flags;
- ffi_type *rtype = cif->rtype;
- size_t bytes, rsize, vfp_size;
- char *stack, *vfp_space, *new_rvalue;
- struct call_frame *frame;
-
- rsize = 0;
- if (rvalue == NULL)
- {
- /* If the return value is a struct and we don't have a return
- value address then we need to make one. Otherwise the return
- value is in registers and we can ignore them. */
- if (flags == ARM_TYPE_STRUCT)
- rsize = rtype->size;
- else
- flags = ARM_TYPE_VOID;
- }
- else if (flags == ARM_TYPE_VFP_N)
- {
- /* Largest case is double x 4. */
- rsize = 32;
- }
- else if (flags == ARM_TYPE_INT && rtype->type == FFI_TYPE_STRUCT)
- rsize = 4;
-
- /* Largest case. */
- vfp_size = (cif->abi == FFI_VFP && cif->vfp_used ? 8*8: 0);
-
- bytes = cif->bytes;
- stack = alloca (vfp_size + bytes + sizeof(struct call_frame) + rsize);
-
- vfp_space = NULL;
- if (vfp_size)
- {
- vfp_space = stack;
- stack += vfp_size;
- }
-
- frame = (struct call_frame *)(stack + bytes);
-
- new_rvalue = rvalue;
- if (rsize)
- new_rvalue = (void *)(frame + 1);
-
- frame->rvalue = new_rvalue;
- frame->flags = flags;
- frame->closure = closure;
-
- if (vfp_space)
- {
- ffi_prep_args_VFP (cif, flags, new_rvalue, avalue, stack, vfp_space);
- ffi_call_VFP (vfp_space, frame, fn, cif->vfp_used);
- }
- else
- {
- ffi_prep_args_SYSV (cif, flags, new_rvalue, avalue, stack);
- ffi_call_SYSV (stack, frame, fn);
- }
-
- if (rvalue && rvalue != new_rvalue)
- memcpy (rvalue, new_rvalue, rtype->size);
-}
-
-void
-ffi_call (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue)
-{
- ffi_call_int (cif, fn, rvalue, avalue, NULL);
-}
-
-void
-ffi_call_go (ffi_cif *cif, void (*fn) (void), void *rvalue,
- void **avalue, void *closure)
-{
- ffi_call_int (cif, fn, rvalue, avalue, closure);
-}
-
-static void *
-ffi_prep_incoming_args_SYSV (ffi_cif *cif, void *rvalue,
- char *argp, void **avalue)
-{
- ffi_type **arg_types = cif->arg_types;
- int i, n;
-
- if (cif->flags == ARM_TYPE_STRUCT)
- {
- rvalue = *(void **) argp;
- argp += 4;
- }
- else
- {
- if (cif->rtype->size && cif->rtype->size < 4)
- *(uint32_t *) rvalue = 0;
- }
-
- for (i = 0, n = cif->nargs; i < n; i++)
- {
- ffi_type *ty = arg_types[i];
- size_t z = ty->size;
-
- argp = ffi_align (ty, argp);
- avalue[i] = (void *) argp;
- argp += z;
- }
-
- return rvalue;
-}
-
-static void *
-ffi_prep_incoming_args_VFP (ffi_cif *cif, void *rvalue, char *stack,
- char *vfp_space, void **avalue)
-{
- ffi_type **arg_types = cif->arg_types;
- int i, n, vi = 0;
- char *argp, *regp, *eo_regp;
- char done_with_regs = 0;
- char stack_used = 0;
-
- regp = stack;
- eo_regp = argp = regp + 16;
-
- if (cif->flags == ARM_TYPE_STRUCT)
- {
- rvalue = *(void **) regp;
- regp += 4;
- }
-
- for (i = 0, n = cif->nargs; i < n; i++)
- {
- ffi_type *ty = arg_types[i];
- int is_vfp_type = vfp_type_p (ty);
- size_t z = ty->size;
-
- if (vi < cif->vfp_nargs && is_vfp_type)
- {
- avalue[i] = vfp_space + cif->vfp_args[vi++] * 4;
- continue;
- }
- else if (!done_with_regs && !is_vfp_type)
- {
- char *tregp = ffi_align (ty, regp);
-
- z = (z < 4) ? 4 : z; // pad
-
- /* If the arguments either fits into the registers or uses registers
- and stack, while we haven't read other things from the stack */
- if (tregp + z <= eo_regp || !stack_used)
- {
- /* Because we're little endian, this is what it turns into. */
- avalue[i] = (void *) tregp;
- regp = tregp + z;
-
- /* If we read past the last core register, make sure we
- have not read from the stack before and continue
- reading after regp. */
- if (regp > eo_regp)
- {
- FFI_ASSERT (!stack_used);
- argp = regp;
- }
- if (regp >= eo_regp)
- {
- done_with_regs = 1;
- stack_used = 1;
- }
- continue;
- }
- }
-
- stack_used = 1;
- argp = ffi_align (ty, argp);
- avalue[i] = (void *) argp;
- argp += z;
- }
-
- return rvalue;
-}
-
-struct closure_frame
-{
- char vfp_space[8*8] __attribute__((aligned(8)));
- char result[8*4];
- char argp[];
-};
-
-int FFI_HIDDEN
-ffi_closure_inner_SYSV (ffi_cif *cif,
- void (*fun) (ffi_cif *, void *, void **, void *),
- void *user_data,
- struct closure_frame *frame)
-{
- void **avalue = (void **) alloca (cif->nargs * sizeof (void *));
- void *rvalue = ffi_prep_incoming_args_SYSV (cif, frame->result,
- frame->argp, avalue);
- fun (cif, rvalue, avalue, user_data);
- return cif->flags;
-}
-
-int FFI_HIDDEN
-ffi_closure_inner_VFP (ffi_cif *cif,
- void (*fun) (ffi_cif *, void *, void **, void *),
- void *user_data,
- struct closure_frame *frame)
-{
- void **avalue = (void **) alloca (cif->nargs * sizeof (void *));
- void *rvalue = ffi_prep_incoming_args_VFP (cif, frame->result, frame->argp,
- frame->vfp_space, avalue);
- fun (cif, rvalue, avalue, user_data);
- return cif->flags;
-}
-
-void ffi_closure_SYSV (void) FFI_HIDDEN;
-void ffi_closure_VFP (void) FFI_HIDDEN;
-void ffi_go_closure_SYSV (void) FFI_HIDDEN;
-void ffi_go_closure_VFP (void) FFI_HIDDEN;
-
-/* the cif must already be prep'ed */
-
-ffi_status
-ffi_prep_closure_loc (ffi_closure * closure,
- ffi_cif * cif,
- void (*fun) (ffi_cif *, void *, void **, void *),
- void *user_data, void *codeloc)
-{
- void (*closure_func) (void) = ffi_closure_SYSV;
-
- if (cif->abi == FFI_VFP)
- {
- /* We only need take the vfp path if there are vfp arguments. */
- if (cif->vfp_used)
- closure_func = ffi_closure_VFP;
- }
- else if (cif->abi != FFI_SYSV)
- return FFI_BAD_ABI;
-
-#if FFI_EXEC_TRAMPOLINE_TABLE
- void **config = (void **)((uint8_t *)codeloc - PAGE_MAX_SIZE);
- config[0] = closure;
- config[1] = closure_func;
-#else
-
-#ifndef _M_ARM
- memcpy(closure->tramp, ffi_arm_trampoline, 8);
-#else
- // cast away function type so MSVC doesn't set the lower bit of the function pointer
- memcpy(closure->tramp, (void*)((uintptr_t)ffi_arm_trampoline & 0xFFFFFFFE), FFI_TRAMPOLINE_CLOSURE_OFFSET);
-#endif
-
-#if defined (__QNX__)
- msync(closure->tramp, 8, 0x1000000); /* clear data map */
- msync(codeloc, 8, 0x1000000); /* clear insn map */
-#elif defined(_MSC_VER)
- FlushInstructionCache(GetCurrentProcess(), closure->tramp, FFI_TRAMPOLINE_SIZE);
-#else
- __clear_cache(closure->tramp, closure->tramp + 8); /* clear data map */
- __clear_cache(codeloc, codeloc + 8); /* clear insn map */
-#endif
-#ifdef _M_ARM
- *(void(**)(void))(closure->tramp + FFI_TRAMPOLINE_CLOSURE_FUNCTION) = closure_func;
-#else
- *(void (**)(void))(closure->tramp + 8) = closure_func;
-#endif
-#endif
-
- closure->cif = cif;
- closure->fun = fun;
- closure->user_data = user_data;
-
- return FFI_OK;
-}
-
-ffi_status
-ffi_prep_go_closure (ffi_go_closure *closure, ffi_cif *cif,
- void (*fun) (ffi_cif *, void *, void **, void *))
-{
- void (*closure_func) (void) = ffi_go_closure_SYSV;
-
- if (cif->abi == FFI_VFP)
- {
- /* We only need take the vfp path if there are vfp arguments. */
- if (cif->vfp_used)
- closure_func = ffi_go_closure_VFP;
- }
- else if (cif->abi != FFI_SYSV)
- return FFI_BAD_ABI;
-
- closure->tramp = closure_func;
- closure->cif = cif;
- closure->fun = fun;
-
- return FFI_OK;
-}
-
-/* Below are routines for VFP hard-float support. */
-
-/* A subroutine of vfp_type_p. Given a structure type, return the type code
- of the first non-structure element. Recurse for structure elements.
- Return -1 if the structure is in fact empty, i.e. no nested elements. */
-
-static int
-is_hfa0 (const ffi_type *ty)
-{
- ffi_type **elements = ty->elements;
- int i, ret = -1;
-
- if (elements != NULL)
- for (i = 0; elements[i]; ++i)
- {
- ret = elements[i]->type;
- if (ret == FFI_TYPE_STRUCT || ret == FFI_TYPE_COMPLEX)
- {
- ret = is_hfa0 (elements[i]);
- if (ret < 0)
- continue;
- }
- break;
- }
-
- return ret;
-}
-
-/* A subroutine of vfp_type_p. Given a structure type, return true if all
- of the non-structure elements are the same as CANDIDATE. */
-
-static int
-is_hfa1 (const ffi_type *ty, int candidate)
-{
- ffi_type **elements = ty->elements;
- int i;
-
- if (elements != NULL)
- for (i = 0; elements[i]; ++i)
- {
- int t = elements[i]->type;
- if (t == FFI_TYPE_STRUCT || t == FFI_TYPE_COMPLEX)
- {
- if (!is_hfa1 (elements[i], candidate))
- return 0;
- }
- else if (t != candidate)
- return 0;
- }
-
- return 1;
-}
-
-/* Determine if TY is an homogenous floating point aggregate (HFA).
- That is, a structure consisting of 1 to 4 members of all the same type,
- where that type is a floating point scalar.
-
- Returns non-zero iff TY is an HFA. The result is an encoded value where
- bits 0-7 contain the type code, and bits 8-10 contain the element count. */
-
-static int
-vfp_type_p (const ffi_type *ty)
-{
- ffi_type **elements;
- int candidate, i;
- size_t size, ele_count;
-
- /* Quickest tests first. */
- candidate = ty->type;
- switch (ty->type)
- {
- default:
- return 0;
- case FFI_TYPE_FLOAT:
- case FFI_TYPE_DOUBLE:
- ele_count = 1;
- goto done;
- case FFI_TYPE_COMPLEX:
- candidate = ty->elements[0]->type;
- if (candidate != FFI_TYPE_FLOAT && candidate != FFI_TYPE_DOUBLE)
- return 0;
- ele_count = 2;
- goto done;
- case FFI_TYPE_STRUCT:
- break;
- }
-
- /* No HFA types are smaller than 4 bytes, or larger than 32 bytes. */
- size = ty->size;
- if (size < 4 || size > 32)
- return 0;
-
- /* Find the type of the first non-structure member. */
- elements = ty->elements;
- candidate = elements[0]->type;
- if (candidate == FFI_TYPE_STRUCT || candidate == FFI_TYPE_COMPLEX)
- {
- for (i = 0; ; ++i)
- {
- candidate = is_hfa0 (elements[i]);
- if (candidate >= 0)
- break;
- }
- }
-
- /* If the first member is not a floating point type, it's not an HFA.
- Also quickly re-check the size of the structure. */
- switch (candidate)
- {
- case FFI_TYPE_FLOAT:
- ele_count = size / sizeof(float);
- if (size != ele_count * sizeof(float))
- return 0;
- break;
- case FFI_TYPE_DOUBLE:
- ele_count = size / sizeof(double);
- if (size != ele_count * sizeof(double))
- return 0;
- break;
- default:
- return 0;
- }
- if (ele_count > 4)
- return 0;
-
- /* Finally, make sure that all scalar elements are the same type. */
- for (i = 0; elements[i]; ++i)
- {
- int t = elements[i]->type;
- if (t == FFI_TYPE_STRUCT || t == FFI_TYPE_COMPLEX)
- {
- if (!is_hfa1 (elements[i], candidate))
- return 0;
- }
- else if (t != candidate)
- return 0;
- }
-
- /* All tests succeeded. Encode the result. */
- done:
- return (ele_count << 8) | candidate;
-}
-
-static int
-place_vfp_arg (ffi_cif *cif, int h)
-{
- unsigned short reg = cif->vfp_reg_free;
- int align = 1, nregs = h >> 8;
-
- if ((h & 0xff) == FFI_TYPE_DOUBLE)
- align = 2, nregs *= 2;
-
- /* Align register number. */
- if ((reg & 1) && align == 2)
- reg++;
-
- while (reg + nregs <= 16)
- {
- int s, new_used = 0;
- for (s = reg; s < reg + nregs; s++)
- {
- new_used |= (1 << s);
- if (cif->vfp_used & (1 << s))
- {
- reg += align;
- goto next_reg;
- }
- }
- /* Found regs to allocate. */
- cif->vfp_used |= new_used;
- cif->vfp_args[cif->vfp_nargs++] = (signed char)reg;
-
- /* Update vfp_reg_free. */
- if (cif->vfp_used & (1 << cif->vfp_reg_free))
- {
- reg += nregs;
- while (cif->vfp_used & (1 << reg))
- reg += 1;
- cif->vfp_reg_free = reg;
- }
- return 0;
- next_reg:;
- }
- // done, mark all regs as used
- cif->vfp_reg_free = 16;
- cif->vfp_used = 0xFFFF;
- return 1;
-}
-
-static void
-layout_vfp_args (ffi_cif * cif)
-{
- unsigned int i;
- /* Init VFP fields */
- cif->vfp_used = 0;
- cif->vfp_nargs = 0;
- cif->vfp_reg_free = 0;
- memset (cif->vfp_args, -1, 16); /* Init to -1. */
-
- for (i = 0; i < cif->nargs; i++)
- {
- int h = vfp_type_p (cif->arg_types[i]);
- if (h && place_vfp_arg (cif, h) == 1)
- break;
- }
-}
-
-#endif /* __arm__ or _M_ARM */
-
-
-====================File: src/arm/ffitarget.h====================
-/* -----------------------------------------------------------------*-C-*-
- ffitarget.h - Copyright (c) 2012 Anthony Green
- Copyright (c) 2010 CodeSourcery
- Copyright (c) 1996-2003 Red Hat, Inc.
-
- Target configuration macros for ARM.
-
- 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.
-
- ----------------------------------------------------------------------- */
-
-#ifndef LIBFFI_TARGET_H
-#define LIBFFI_TARGET_H
-
-#ifndef LIBFFI_H
-#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
-#endif
-
-#ifndef LIBFFI_ASM
-typedef unsigned long ffi_arg;
-typedef signed long ffi_sarg;
-
-typedef enum ffi_abi {
- FFI_FIRST_ABI = 0,
- FFI_SYSV,
- FFI_VFP,
- FFI_LAST_ABI,
-#if defined(__ARM_PCS_VFP) || defined(_M_ARM)
- FFI_DEFAULT_ABI = FFI_VFP,
-#else
- FFI_DEFAULT_ABI = FFI_SYSV,
-#endif
-} ffi_abi;
-#endif
-
-#define FFI_EXTRA_CIF_FIELDS \
- int vfp_used; \
- unsigned short vfp_reg_free, vfp_nargs; \
- signed char vfp_args[16] \
-
-#define FFI_TARGET_SPECIFIC_VARIADIC
-#ifndef _M_ARM
-#define FFI_TARGET_HAS_COMPLEX_TYPE
-#endif
-
-/* ---- Definitions for closures ----------------------------------------- */
-
-#define FFI_CLOSURES 1
-#define FFI_GO_CLOSURES 1
-#define FFI_NATIVE_RAW_API 0
-
-#if defined (FFI_EXEC_TRAMPOLINE_TABLE) && FFI_EXEC_TRAMPOLINE_TABLE
-
-#ifdef __MACH__
-#define FFI_TRAMPOLINE_SIZE 12
-#define FFI_TRAMPOLINE_CLOSURE_OFFSET 8
-#else
-#error "No trampoline table implementation"
-#endif
-
-#else
-#ifdef _MSC_VER
-#define FFI_TRAMPOLINE_SIZE 16
-#define FFI_TRAMPOLINE_CLOSURE_FUNCTION 12
-#else
-#define FFI_TRAMPOLINE_SIZE 12
-#endif
-#define FFI_TRAMPOLINE_CLOSURE_OFFSET FFI_TRAMPOLINE_SIZE
-#endif
-
-#endif
-
-
-====================File: src/arm/sysv.S====================
-/* -----------------------------------------------------------------------
- sysv.S - Copyright (c) 1998, 2008, 2011 Red Hat, Inc.
- Copyright (c) 2011 Plausible Labs Cooperative, Inc.
-
- ARM Foreign Function Interface
-
- 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.
- ----------------------------------------------------------------------- */
-
-#ifdef __arm__
-#define LIBFFI_ASM
-#include <fficonfig.h>
-#include <ffi.h>
-#include <ffi_cfi.h>
-#include "internal.h"
-
-/* GCC 4.8 provides __ARM_ARCH; construct it otherwise. */
-#ifndef __ARM_ARCH
-# if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) \
- || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) \
- || defined(__ARM_ARCH_7EM__)
-# define __ARM_ARCH 7
-# elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) \
- || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) \
- || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__) \
- || defined(__ARM_ARCH_6M__)
-# define __ARM_ARCH 6
-# elif defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) \
- || defined(__ARM_ARCH_5E__) || defined(__ARM_ARCH_5TE__) \
- || defined(__ARM_ARCH_5TEJ__)
-# define __ARM_ARCH 5
-# else
-# define __ARM_ARCH 4
-# endif
-#endif
-
-/* Conditionally compile unwinder directives. */
-#ifdef __ARM_EABI__
-# define UNWIND(...) __VA_ARGS__
-#else
-# define UNWIND(...)
-#endif
-
-#if defined(HAVE_AS_CFI_PSEUDO_OP) && defined(__ARM_EABI__)
- .cfi_sections .debug_frame
-#endif
-
-#define CONCAT(a, b) CONCAT2(a, b)
-#define CONCAT2(a, b) a ## b
-
-#ifdef __USER_LABEL_PREFIX__
-# define CNAME(X) CONCAT (__USER_LABEL_PREFIX__, X)
-#else
-# define CNAME(X) X
-#endif
-#ifdef __ELF__
-# define SIZE(X) .size CNAME(X), . - CNAME(X)
-# define TYPE(X, Y) .type CNAME(X), Y
-#else
-# define SIZE(X)
-# define TYPE(X, Y)
-#endif
-
-#define ARM_FUNC_START_LOCAL(name) \
- .align 3; \
- TYPE(CNAME(name), %function); \
- CNAME(name):
-
-#define ARM_FUNC_START(name) \
- .globl CNAME(name); \
- FFI_HIDDEN(CNAME(name)); \
- ARM_FUNC_START_LOCAL(name)
-
-#define ARM_FUNC_END(name) \
- SIZE(name)
-
-/* Aid in defining a jump table with 8 bytes between entries. */
-/* ??? The clang assembler doesn't handle .if with symbolic expressions. */
-#ifdef __clang__
-# define E(index)
-#else
-# define E(index) \
- .if . - 0b - 8*index; \
- .error "type table out of sync"; \
- .endif
-#endif
-
- .text
- .syntax unified
- .arm
-
-#ifndef __clang__
- /* We require interworking on LDM, which implies ARMv5T,
- which implies the existance of BLX. */
- .arch armv5t
-#endif
-
- /* Note that we use STC and LDC to encode VFP instructions,
- so that we do not need ".fpu vfp", nor get that added to
- the object file attributes. These will not be executed
- unless the FFI_VFP abi is used. */
-
- @ r0: stack
- @ r1: frame
- @ r2: fn
- @ r3: vfp_used
-
-ARM_FUNC_START(ffi_call_VFP)
- UNWIND(.fnstart)
- cfi_startproc
-
- cmp r3, #3 @ load only d0 if possible
-#ifdef __clang__
- vldrle d0, [sp]
- vldmgt sp, {d0-d7}
-#else
- ldcle p11, cr0, [r0] @ vldrle d0, [sp]
- ldcgt p11, cr0, [r0], {16} @ vldmgt sp, {d0-d7}
-#endif
- add r0, r0, #64 @ discard the vfp register args
- /* FALLTHRU */
-ARM_FUNC_END(ffi_call_VFP)
-
-ARM_FUNC_START(ffi_call_SYSV)
- stm r1, {fp, lr}
- mov fp, r1
-
- @ This is a bit of a lie wrt the origin of the unwind info, but
- @ now we've got the usual frame pointer and two saved registers.
- UNWIND(.save {fp,lr})
- UNWIND(.setfp fp, sp)
- cfi_def_cfa(fp, 8)
- cfi_rel_offset(fp, 0)
- cfi_rel_offset(lr, 4)
-
- mov sp, r0 @ install the stack pointer
- mov lr, r2 @ move the fn pointer out of the way
- ldr ip, [fp, #16] @ install the static chain
- ldmia sp!, {r0-r3} @ move first 4 parameters in registers.
- blx lr @ call fn
-
- @ Load r2 with the pointer to storage for the return value
- @ Load r3 with the return type code
- ldr r2, [fp, #8]
- ldr r3, [fp, #12]
-
- @ Deallocate the stack with the arguments.
- mov sp, fp
- cfi_def_cfa_register(sp)
-
- @ Store values stored in registers.
- .align 3
- add pc, pc, r3, lsl #3
- nop
-0:
-E(ARM_TYPE_VFP_S)
-#ifdef __clang__
- vstr s0, [r2]
-#else
- stc p10, cr0, [r2] @ vstr s0, [r2]
-#endif
- pop {fp,pc}
-E(ARM_TYPE_VFP_D)
-#ifdef __clang__
- vstr d0, [r2]
-#else
- stc p11, cr0, [r2] @ vstr d0, [r2]
-#endif
- pop {fp,pc}
-E(ARM_TYPE_VFP_N)
-#ifdef __clang__
- vstm r2, {d0-d3}
-#else
- stc p11, cr0, [r2], {8} @ vstm r2, {d0-d3}
-#endif
- pop {fp,pc}
-E(ARM_TYPE_INT64)
- str r1, [r2, #4]
- nop
-E(ARM_TYPE_INT)
- str r0, [r2]
- pop {fp,pc}
-E(ARM_TYPE_VOID)
- pop {fp,pc}
- nop
-E(ARM_TYPE_STRUCT)
- pop {fp,pc}
-
- cfi_endproc
- UNWIND(.fnend)
-ARM_FUNC_END(ffi_call_SYSV)
-
-
-/*
- int ffi_closure_inner_* (cif, fun, user_data, frame)
-*/
-
-ARM_FUNC_START(ffi_go_closure_SYSV)
- cfi_startproc
- stmdb sp!, {r0-r3} @ save argument regs
- cfi_adjust_cfa_offset(16)
- ldr r0, [ip, #4] @ load cif
- ldr r1, [ip, #8] @ load fun
- mov r2, ip @ load user_data
- b 0f
- cfi_endproc
-ARM_FUNC_END(ffi_go_closure_SYSV)
-
-ARM_FUNC_START(ffi_closure_SYSV)
- UNWIND(.fnstart)
- cfi_startproc
- stmdb sp!, {r0-r3} @ save argument regs
- cfi_adjust_cfa_offset(16)
-
-#if FFI_EXEC_TRAMPOLINE_TABLE
- ldr ip, [ip] @ ip points to the config page, dereference to get the ffi_closure*
-#endif
- ldr r0, [ip, #FFI_TRAMPOLINE_CLOSURE_OFFSET] @ load cif
- ldr r1, [ip, #FFI_TRAMPOLINE_CLOSURE_OFFSET+4] @ load fun
- ldr r2, [ip, #FFI_TRAMPOLINE_CLOSURE_OFFSET+8] @ load user_data
-0:
- add ip, sp, #16 @ compute entry sp
- sub sp, sp, #64+32 @ allocate frame
- cfi_adjust_cfa_offset(64+32)
- stmdb sp!, {ip,lr}
-
- /* Remember that EABI unwind info only applies at call sites.
- We need do nothing except note the save of the stack pointer
- and the link registers. */
- UNWIND(.save {sp,lr})
- cfi_adjust_cfa_offset(8)
- cfi_rel_offset(lr, 4)
-
- add r3, sp, #8 @ load frame
- bl CNAME(ffi_closure_inner_SYSV)
-
- @ Load values returned in registers.
- add r2, sp, #8+64 @ load result
- adr r3, CNAME(ffi_closure_ret)
- add pc, r3, r0, lsl #3
- cfi_endproc
- UNWIND(.fnend)
-ARM_FUNC_END(ffi_closure_SYSV)
-
-ARM_FUNC_START(ffi_go_closure_VFP)
- cfi_startproc
- stmdb sp!, {r0-r3} @ save argument regs
- cfi_adjust_cfa_offset(16)
- ldr r0, [ip, #4] @ load cif
- ldr r1, [ip, #8] @ load fun
- mov r2, ip @ load user_data
- b 0f
- cfi_endproc
-ARM_FUNC_END(ffi_go_closure_VFP)
-
-ARM_FUNC_START(ffi_closure_VFP)
- UNWIND(.fnstart)
- cfi_startproc
- stmdb sp!, {r0-r3} @ save argument regs
- cfi_adjust_cfa_offset(16)
-
-#if FFI_EXEC_TRAMPOLINE_TABLE
- ldr ip, [ip] @ ip points to the config page, dereference to get the ffi_closure*
-#endif
- ldr r0, [ip, #FFI_TRAMPOLINE_CLOSURE_OFFSET] @ load cif
- ldr r1, [ip, #FFI_TRAMPOLINE_CLOSURE_OFFSET+4] @ load fun
- ldr r2, [ip, #FFI_TRAMPOLINE_CLOSURE_OFFSET+8] @ load user_data
-0:
- add ip, sp, #16
- sub sp, sp, #64+32 @ allocate frame
- cfi_adjust_cfa_offset(64+32)
-#ifdef __clang__
- vstm sp, {d0-d7}
-#else
- stc p11, cr0, [sp], {16} @ vstm sp, {d0-d7}
-#endif
- stmdb sp!, {ip,lr}
-
- /* See above. */
- UNWIND(.save {sp,lr})
- cfi_adjust_cfa_offset(8)
- cfi_rel_offset(lr, 4)
-
- add r3, sp, #8 @ load frame
- bl CNAME(ffi_closure_inner_VFP)
-
- @ Load values returned in registers.
- add r2, sp, #8+64 @ load result
- adr r3, CNAME(ffi_closure_ret)
- add pc, r3, r0, lsl #3
- cfi_endproc
- UNWIND(.fnend)
-ARM_FUNC_END(ffi_closure_VFP)
-
-/* Load values returned in registers for both closure entry points.
- Note that we use LDM with SP in the register set. This is deprecated
- by ARM, but not yet unpredictable. */
-
-ARM_FUNC_START_LOCAL(ffi_closure_ret)
- cfi_startproc
- cfi_rel_offset(sp, 0)
- cfi_rel_offset(lr, 4)
-0:
-E(ARM_TYPE_VFP_S)
-#ifdef __clang__
- vldr s0, [r2]
-#else
- ldc p10, cr0, [r2] @ vldr s0, [r2]
-#endif
- ldm sp, {sp,pc}
-E(ARM_TYPE_VFP_D)
-#ifdef __clang__
- vldr d0, [r2]
-#else
- ldc p11, cr0, [r2] @ vldr d0, [r2]
-#endif
- ldm sp, {sp,pc}
-E(ARM_TYPE_VFP_N)
-#ifdef __clang__
- vldm r2, {d0-d3}
-#else
- ldc p11, cr0, [r2], {8} @ vldm r2, {d0-d3}
-#endif
- ldm sp, {sp,pc}
-E(ARM_TYPE_INT64)
- ldr r1, [r2, #4]
- nop
-E(ARM_TYPE_INT)
- ldr r0, [r2]
- ldm sp, {sp,pc}
-E(ARM_TYPE_VOID)
- ldm sp, {sp,pc}
- nop
-E(ARM_TYPE_STRUCT)
- ldm sp, {sp,pc}
- cfi_endproc
-ARM_FUNC_END(ffi_closure_ret)
-
-#if FFI_EXEC_TRAMPOLINE_TABLE
-
-#ifdef __MACH__
-#include <mach/machine/vm_param.h>
-
-.align PAGE_MAX_SHIFT
-ARM_FUNC_START(ffi_closure_trampoline_table_page)
-.rept PAGE_MAX_SIZE / FFI_TRAMPOLINE_SIZE
- adr ip, #-PAGE_MAX_SIZE @ the config page is PAGE_MAX_SIZE behind the trampoline page
- sub ip, #8 @ account for pc bias
- ldr pc, [ip, #4] @ jump to ffi_closure_SYSV or ffi_closure_VFP
-.endr
-ARM_FUNC_END(ffi_closure_trampoline_table_page)
-#endif
-
-#else
-
-ARM_FUNC_START(ffi_arm_trampoline)
-0: adr ip, 0b
- ldr pc, 1f
-1: .long 0
-ARM_FUNC_END(ffi_arm_trampoline)
-
-#endif /* FFI_EXEC_TRAMPOLINE_TABLE */
-#endif /* __arm__ */
-
-#if defined __ELF__ && defined __linux__
- .section .note.GNU-stack,"",%progbits
-#endif
-
-
-====================File: src/closures.c====================
-/* -----------------------------------------------------------------------
- closures.c - Copyright (c) 2019 Anthony Green
- Copyright (c) 2007, 2009, 2010 Red Hat, Inc.
- Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc
- Copyright (c) 2011 Plausible Labs Cooperative, Inc.
-
- Code to allocate and deallocate memory for closures.
-
- 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.
- ----------------------------------------------------------------------- */
-
-#if defined __linux__ && !defined _GNU_SOURCE
-#define _GNU_SOURCE 1
-#endif
-
-#include <fficonfig.h>
-#include <ffi.h>
-#include <ffi_common.h>
-
-#ifdef __NetBSD__
-#include <sys/param.h>
-#endif
-
-#if __NetBSD_Version__ - 0 >= 799007200
-/* NetBSD with PROT_MPROTECT */
-#include <sys/mman.h>
-
-#include <stddef.h>
-#include <unistd.h>
-
-static const size_t overhead =
- (sizeof(max_align_t) > sizeof(void *) + sizeof(size_t)) ?
- sizeof(max_align_t)
- : sizeof(void *) + sizeof(size_t);
-
-#define ADD_TO_POINTER(p, d) ((void *)((uintptr_t)(p) + (d)))
-
-void *
-ffi_closure_alloc (size_t size, void **code)
-{
- static size_t page_size;
- size_t rounded_size;
- void *codeseg, *dataseg;
- int prot;
-
- /* Expect that PAX mprotect is active and a separate code mapping is necessary. */
- if (!code)
- return NULL;
-
- /* Obtain system page size. */
- if (!page_size)
- page_size = sysconf(_SC_PAGESIZE);
-
- /* Round allocation size up to the next page, keeping in mind the size field and pointer to code map. */
- rounded_size = (size + overhead + page_size - 1) & ~(page_size - 1);
-
- /* Primary mapping is RW, but request permission to switch to PROT_EXEC later. */
- prot = PROT_READ | PROT_WRITE | PROT_MPROTECT(PROT_EXEC);
- dataseg = mmap(NULL, rounded_size, prot, MAP_ANON | MAP_PRIVATE, -1, 0);
- if (dataseg == MAP_FAILED)
- return NULL;
-
- /* Create secondary mapping and switch it to RX. */
- codeseg = mremap(dataseg, rounded_size, NULL, rounded_size, MAP_REMAPDUP);
- if (codeseg == MAP_FAILED) {
- munmap(dataseg, rounded_size);
- return NULL;
- }
- if (mprotect(codeseg, rounded_size, PROT_READ | PROT_EXEC) == -1) {
- munmap(codeseg, rounded_size);
- munmap(dataseg, rounded_size);
- return NULL;
- }
-
- /* Remember allocation size and location of the secondary mapping for ffi_closure_free. */
- memcpy(dataseg, &rounded_size, sizeof(rounded_size));
- memcpy(ADD_TO_POINTER(dataseg, sizeof(size_t)), &codeseg, sizeof(void *));
- *code = ADD_TO_POINTER(codeseg, overhead);
- return ADD_TO_POINTER(dataseg, overhead);
-}
-
-void
-ffi_closure_free (void *ptr)
-{
- void *codeseg, *dataseg;
- size_t rounded_size;
-
- dataseg = ADD_TO_POINTER(ptr, -overhead);
- memcpy(&rounded_size, dataseg, sizeof(rounded_size));
- memcpy(&codeseg, ADD_TO_POINTER(dataseg, sizeof(size_t)), sizeof(void *));
- munmap(dataseg, rounded_size);
- munmap(codeseg, rounded_size);
-}
-#else /* !NetBSD with PROT_MPROTECT */
-
-#if !FFI_MMAP_EXEC_WRIT && !FFI_EXEC_TRAMPOLINE_TABLE
-# if __linux__ && !defined(__ANDROID__)
-/* This macro indicates it may be forbidden to map anonymous memory
- with both write and execute permission. Code compiled when this
- option is defined will attempt to map such pages once, but if it
- fails, it falls back to creating a temporary file in a writable and
- executable filesystem and mapping pages from it into separate
- locations in the virtual memory space, one location writable and
- another executable. */
-# define FFI_MMAP_EXEC_WRIT 1
-# define HAVE_MNTENT 1
-# endif
-# if defined(X86_WIN32) || defined(X86_WIN64) || defined(_M_ARM64) || defined(__OS2__)
-/* Windows systems may have Data Execution Protection (DEP) enabled,
- which requires the use of VirtualMalloc/VirtualFree to alloc/free
- executable memory. */
-# define FFI_MMAP_EXEC_WRIT 1
-# endif
-#endif
-
-#if FFI_MMAP_EXEC_WRIT && !defined FFI_MMAP_EXEC_SELINUX
-# if defined(__linux__) && !defined(__ANDROID__)
-/* When defined to 1 check for SELinux and if SELinux is active,
- don't attempt PROT_EXEC|PROT_WRITE mapping at all, as that
- might cause audit messages. */
-# define FFI_MMAP_EXEC_SELINUX 1
-# endif
-#endif
-
-#if FFI_CLOSURES
-
-#if FFI_EXEC_TRAMPOLINE_TABLE
-
-#ifdef __MACH__
-
-#include <mach/mach.h>
-#include <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-extern void *ffi_closure_trampoline_table_page;
-
-typedef struct ffi_trampoline_table ffi_trampoline_table;
-typedef struct ffi_trampoline_table_entry ffi_trampoline_table_entry;
-
-struct ffi_trampoline_table
-{
- /* contiguous writable and executable pages */
- vm_address_t config_page;
- vm_address_t trampoline_page;
-
- /* free list tracking */
- uint16_t free_count;
- ffi_trampoline_table_entry *free_list;
- ffi_trampoline_table_entry *free_list_pool;
-
- ffi_trampoline_table *prev;
- ffi_trampoline_table *next;
-};
-
-struct ffi_trampoline_table_entry
-{
- void *(*trampoline) (void);
- ffi_trampoline_table_entry *next;
-};
-
-/* Total number of trampolines that fit in one trampoline table */
-#define FFI_TRAMPOLINE_COUNT (PAGE_MAX_SIZE / FFI_TRAMPOLINE_SIZE)
-
-static pthread_mutex_t ffi_trampoline_lock = PTHREAD_MUTEX_INITIALIZER;
-static ffi_trampoline_table *ffi_trampoline_tables = NULL;
-
-static ffi_trampoline_table *
-ffi_trampoline_table_alloc (void)
-{
- ffi_trampoline_table *table;
- vm_address_t config_page;
- vm_address_t trampoline_page;
- vm_address_t trampoline_page_template;
- vm_prot_t cur_prot;
- vm_prot_t max_prot;
- kern_return_t kt;
- uint16_t i;
-
- /* Allocate two pages -- a config page and a placeholder page */
- config_page = 0x0;
- kt = vm_allocate (mach_task_self (), &config_page, PAGE_MAX_SIZE * 2,
- VM_FLAGS_ANYWHERE);
- if (kt != KERN_SUCCESS)
- return NULL;
-
- /* Remap the trampoline table on top of the placeholder page */
- trampoline_page = config_page + PAGE_MAX_SIZE;
- trampoline_page_template = (vm_address_t)&ffi_closure_trampoline_table_page;
-#ifdef __arm__
- /* ffi_closure_trampoline_table_page can be thumb-biased on some ARM archs */
- trampoline_page_template &= ~1UL;
-#endif
- kt = vm_remap (mach_task_self (), &trampoline_page, PAGE_MAX_SIZE, 0x0,
- VM_FLAGS_OVERWRITE, mach_task_self (), trampoline_page_template,
- FALSE, &cur_prot, &max_prot, VM_INHERIT_SHARE);
- if (kt != KERN_SUCCESS)
- {
- vm_deallocate (mach_task_self (), config_page, PAGE_MAX_SIZE * 2);
- return NULL;
- }
-
- /* We have valid trampoline and config pages */
- table = calloc (1, sizeof (ffi_trampoline_table));
- table->free_count = FFI_TRAMPOLINE_COUNT;
- table->config_page = config_page;
- table->trampoline_page = trampoline_page;
-
- /* Create and initialize the free list */
- table->free_list_pool =
- calloc (FFI_TRAMPOLINE_COUNT, sizeof (ffi_trampoline_table_entry));
-
- for (i = 0; i < table->free_count; i++)
- {
- ffi_trampoline_table_entry *entry = &table->free_list_pool[i];
- entry->trampoline =
- (void *) (table->trampoline_page + (i * FFI_TRAMPOLINE_SIZE));
-
- if (i < table->free_count - 1)
- entry->next = &table->free_list_pool[i + 1];
- }
-
- table->free_list = table->free_list_pool;
-
- return table;
-}
-
-static void
-ffi_trampoline_table_free (ffi_trampoline_table *table)
-{
- /* Remove from the list */
- if (table->prev != NULL)
- table->prev->next = table->next;
-
- if (table->next != NULL)
- table->next->prev = table->prev;
-
- /* Deallocate pages */
- vm_deallocate (mach_task_self (), table->config_page, PAGE_MAX_SIZE * 2);
-
- /* Deallocate free list */
- free (table->free_list_pool);
- free (table);
-}
-
-void *
-ffi_closure_alloc (size_t size, void **code)
-{
- /* Create the closure */
- ffi_closure *closure = malloc (size);
- if (closure == NULL)
- return NULL;
-
- pthread_mutex_lock (&ffi_trampoline_lock);
-
- /* Check for an active trampoline table with available entries. */
- ffi_trampoline_table *table = ffi_trampoline_tables;
- if (table == NULL || table->free_list == NULL)
- {
- table = ffi_trampoline_table_alloc ();
- if (table == NULL)
- {
- pthread_mutex_unlock (&ffi_trampoline_lock);
- free (closure);
- return NULL;
- }
-
- /* Insert the new table at the top of the list */
- table->next = ffi_trampoline_tables;
- if (table->next != NULL)
- table->next->prev = table;
-
- ffi_trampoline_tables = table;
- }
-
- /* Claim the free entry */
- ffi_trampoline_table_entry *entry = ffi_trampoline_tables->free_list;
- ffi_trampoline_tables->free_list = entry->next;
- ffi_trampoline_tables->free_count--;
- entry->next = NULL;
-
- pthread_mutex_unlock (&ffi_trampoline_lock);
-
- /* Initialize the return values */
- *code = entry->trampoline;
- closure->trampoline_table = table;
- closure->trampoline_table_entry = entry;
-
- return closure;
-}
-
-void
-ffi_closure_free (void *ptr)
-{
- ffi_closure *closure = ptr;
-
- pthread_mutex_lock (&ffi_trampoline_lock);
-
- /* Fetch the table and entry references */
- ffi_trampoline_table *table = closure->trampoline_table;
- ffi_trampoline_table_entry *entry = closure->trampoline_table_entry;
-
- /* Return the entry to the free list */
- entry->next = table->free_list;
- table->free_list = entry;
- table->free_count++;
-
- /* If all trampolines within this table are free, and at least one other table exists, deallocate
- * the table */
- if (table->free_count == FFI_TRAMPOLINE_COUNT
- && ffi_trampoline_tables != table)
- {
- ffi_trampoline_table_free (table);
- }
- else if (ffi_trampoline_tables != table)
- {
- /* Otherwise, bump this table to the top of the list */
- table->prev = NULL;
- table->next = ffi_trampoline_tables;
- if (ffi_trampoline_tables != NULL)
- ffi_trampoline_tables->prev = table;
-
- ffi_trampoline_tables = table;
- }
-
- pthread_mutex_unlock (&ffi_trampoline_lock);
-
- /* Free the closure */
- free (closure);
-}
-
-#endif
-
-// Per-target implementation; It's unclear what can reasonable be shared between two OS/architecture implementations.
-
-#elif FFI_MMAP_EXEC_WRIT /* !FFI_EXEC_TRAMPOLINE_TABLE */
-
-#define USE_LOCKS 1
-#define USE_DL_PREFIX 1
-#ifdef __GNUC__
-#ifndef USE_BUILTIN_FFS
-#define USE_BUILTIN_FFS 1
-#endif
-#endif
-
-/* We need to use mmap, not sbrk. */
-#define HAVE_MORECORE 0
-
-/* We could, in theory, support mremap, but it wouldn't buy us anything. */
-#define HAVE_MREMAP 0
-
-/* We have no use for this, so save some code and data. */
-#define NO_MALLINFO 1
-
-/* We need all allocations to be in regular segments, otherwise we
- lose track of the corresponding code address. */
-#define DEFAULT_MMAP_THRESHOLD MAX_SIZE_T
-
-/* Don't allocate more than a page unless needed. */
-#define DEFAULT_GRANULARITY ((size_t)malloc_getpagesize)
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <errno.h>
-#ifndef _MSC_VER
-#include <unistd.h>
-#endif
-#include <string.h>
-#include <stdio.h>
-#if !defined(X86_WIN32) && !defined(X86_WIN64) && !defined(_M_ARM64)
-#ifdef HAVE_MNTENT
-#include <mntent.h>
-#endif /* HAVE_MNTENT */
-#include <sys/param.h>
-#include <pthread.h>
-
-/* We don't want sys/mman.h to be included after we redefine mmap and
- dlmunmap. */
-#include <sys/mman.h>
-#define LACKS_SYS_MMAN_H 1
-
-#if FFI_MMAP_EXEC_SELINUX
-#include <sys/statfs.h>
-#include <stdlib.h>
-
-static int selinux_enabled = -1;
-
-static int
-selinux_enabled_check (void)
-{
- struct statfs sfs;
- FILE *f;
- char *buf = NULL;
- size_t len = 0;
-
- if (statfs ("/selinux", &sfs) >= 0
- && (unsigned int) sfs.f_type == 0xf97cff8cU)
- return 1;
- f = fopen ("/proc/mounts", "r");
- if (f == NULL)
- return 0;
- while (getline (&buf, &len, f) >= 0)
- {
- char *p = strchr (buf, ' ');
- if (p == NULL)
- break;
- p = strchr (p + 1, ' ');
- if (p == NULL)
- break;
- if (strncmp (p + 1, "selinuxfs ", 10) == 0)
- {
- free (buf);
- fclose (f);
- return 1;
- }
- }
- free (buf);
- fclose (f);
- return 0;
-}
-
-#define is_selinux_enabled() (selinux_enabled >= 0 ? selinux_enabled \
- : (selinux_enabled = selinux_enabled_check ()))
-
-#else
-
-#define is_selinux_enabled() 0
-
-#endif /* !FFI_MMAP_EXEC_SELINUX */
-
-/* On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC. */
-#ifdef FFI_MMAP_EXEC_EMUTRAMP_PAX
-#include <stdlib.h>
-
-static int emutramp_enabled = -1;
-
-static int
-emutramp_enabled_check (void)
-{
- char *buf = NULL;
- size_t len = 0;
- FILE *f;
- int ret;
- f = fopen ("/proc/self/status", "r");
- if (f == NULL)
- return 0;
- ret = 0;
-
- while (getline (&buf, &len, f) != -1)
- if (!strncmp (buf, "PaX:", 4))
- {
- char emutramp;
- if (sscanf (buf, "%*s %*c%c", &emutramp) == 1)
- ret = (emutramp == 'E');
- break;
- }
- free (buf);
- fclose (f);
- return ret;
-}
-
-#define is_emutramp_enabled() (emutramp_enabled >= 0 ? emutramp_enabled \
- : (emutramp_enabled = emutramp_enabled_check ()))
-#endif /* FFI_MMAP_EXEC_EMUTRAMP_PAX */
-
-#elif defined (__CYGWIN__) || defined(__INTERIX)
-
-#include <sys/mman.h>
-
-/* Cygwin is Linux-like, but not quite that Linux-like. */
-#define is_selinux_enabled() 0
-
-#endif /* !defined(X86_WIN32) && !defined(X86_WIN64) */
-
-#ifndef FFI_MMAP_EXEC_EMUTRAMP_PAX
-#define is_emutramp_enabled() 0
-#endif /* FFI_MMAP_EXEC_EMUTRAMP_PAX */
-
-/* Declare all functions defined in dlmalloc.c as static. */
-static void *dlmalloc(size_t);
-static void dlfree(void*);
-static void *dlcalloc(size_t, size_t) MAYBE_UNUSED;
-static void *dlrealloc(void *, size_t) MAYBE_UNUSED;
-static void *dlmemalign(size_t, size_t) MAYBE_UNUSED;
-static void *dlvalloc(size_t) MAYBE_UNUSED;
-static int dlmallopt(int, int) MAYBE_UNUSED;
-static size_t dlmalloc_footprint(void) MAYBE_UNUSED;
-static size_t dlmalloc_max_footprint(void) MAYBE_UNUSED;
-static void** dlindependent_calloc(size_t, size_t, void**) MAYBE_UNUSED;
-static void** dlindependent_comalloc(size_t, size_t*, void**) MAYBE_UNUSED;
-static void *dlpvalloc(size_t) MAYBE_UNUSED;
-static int dlmalloc_trim(size_t) MAYBE_UNUSED;
-static size_t dlmalloc_usable_size(void*) MAYBE_UNUSED;
-static void dlmalloc_stats(void) MAYBE_UNUSED;
-
-#if !(defined(X86_WIN32) || defined(X86_WIN64) || defined(_M_ARM64) || defined(__OS2__)) || defined (__CYGWIN__) || defined(__INTERIX)
-/* Use these for mmap and munmap within dlmalloc.c. */
-static void *dlmmap(void *, size_t, int, int, int, off_t);
-static int dlmunmap(void *, size_t);
-#endif /* !(defined(X86_WIN32) || defined(X86_WIN64) || defined(__OS2__)) || defined (__CYGWIN__) || defined(__INTERIX) */
-
-#define mmap dlmmap
-#define munmap dlmunmap
-
-#include "dlmalloc.c"
-
-#undef mmap
-#undef munmap
-
-#if !(defined(X86_WIN32) || defined(X86_WIN64) || defined(_M_ARM64) || defined(__OS2__)) || defined (__CYGWIN__) || defined(__INTERIX)
-
-/* A mutex used to synchronize access to *exec* variables in this file. */
-static pthread_mutex_t open_temp_exec_file_mutex = PTHREAD_MUTEX_INITIALIZER;
-
-/* A file descriptor of a temporary file from which we'll map
- executable pages. */
-static int execfd = -1;
-
-/* The amount of space already allocated from the temporary file. */
-static size_t execsize = 0;
-
-/* Open a temporary file name, and immediately unlink it. */
-static int
-open_temp_exec_file_name (char *name, int flags)
-{
- int fd;
-
-#ifdef HAVE_MKOSTEMP
- fd = mkostemp (name, flags);
-#else
- fd = mkstemp (name);
-#endif
-
- if (fd != -1)
- unlink (name);
-
- return fd;
-}
-
-/* Open a temporary file in the named directory. */
-static int
-open_temp_exec_file_dir (const char *dir)
-{
- static const char suffix[] = "/ffiXXXXXX";
- int lendir, flags;
- char *tempname;
-#ifdef O_TMPFILE
- int fd;
-#endif
-
-#ifdef O_CLOEXEC
- flags = O_CLOEXEC;
-#else
- flags = 0;
-#endif
-
-#ifdef O_TMPFILE
- fd = open (dir, flags | O_RDWR | O_EXCL | O_TMPFILE, 0700);
- /* If the running system does not support the O_TMPFILE flag then retry without it. */
- if (fd != -1 || (errno != EINVAL && errno != EISDIR && errno != EOPNOTSUPP)) {
- return fd;
- } else {
- errno = 0;
- }
-#endif
-
- lendir = (int) strlen (dir);
- tempname = __builtin_alloca (lendir + sizeof (suffix));
-
- if (!tempname)
- return -1;
-
- memcpy (tempname, dir, lendir);
- memcpy (tempname + lendir, suffix, sizeof (suffix));
-
- return open_temp_exec_file_name (tempname, flags);
-}
-
-/* Open a temporary file in the directory in the named environment
- variable. */
-static int
-open_temp_exec_file_env (const char *envvar)
-{
- const char *value = getenv (envvar);
-
- if (!value)
- return -1;
-
- return open_temp_exec_file_dir (value);
-}
-
-#ifdef HAVE_MNTENT
-/* Open a temporary file in an executable and writable mount point
- listed in the mounts file. Subsequent calls with the same mounts
- keep searching for mount points in the same file. Providing NULL
- as the mounts file closes the file. */
-static int
-open_temp_exec_file_mnt (const char *mounts)
-{
- static const char *last_mounts;
- static FILE *last_mntent;
-
- if (mounts != last_mounts)
- {
- if (last_mntent)
- endmntent (last_mntent);
-
- last_mounts = mounts;
-
- if (mounts)
- last_mntent = setmntent (mounts, "r");
- else
- last_mntent = NULL;
- }
-
- if (!last_mntent)
- return -1;
-
- for (;;)
- {
- int fd;
- struct mntent mnt;
- char buf[MAXPATHLEN * 3];
-
- if (getmntent_r (last_mntent, &mnt, buf, sizeof (buf)) == NULL)
- return -1;
-
- if (hasmntopt (&mnt, "ro")
- || hasmntopt (&mnt, "noexec")
- || access (mnt.mnt_dir, W_OK))
- continue;
-
- fd = open_temp_exec_file_dir (mnt.mnt_dir);
-
- if (fd != -1)
- return fd;
- }
-}
-#endif /* HAVE_MNTENT */
-
-/* Instructions to look for a location to hold a temporary file that
- can be mapped in for execution. */
-static struct
-{
- int (*func)(const char *);
- const char *arg;
- int repeat;
-} open_temp_exec_file_opts[] = {
- { open_temp_exec_file_env, "TMPDIR", 0 },
- { open_temp_exec_file_dir, "/tmp", 0 },
- { open_temp_exec_file_dir, "/var/tmp", 0 },
- { open_temp_exec_file_dir, "/dev/shm", 0 },
- { open_temp_exec_file_env, "HOME", 0 },
-#ifdef HAVE_MNTENT
- { open_temp_exec_file_mnt, "/etc/mtab", 1 },
- { open_temp_exec_file_mnt, "/proc/mounts", 1 },
-#endif /* HAVE_MNTENT */
-};
-
-/* Current index into open_temp_exec_file_opts. */
-static int open_temp_exec_file_opts_idx = 0;
-
-/* Reset a current multi-call func, then advances to the next entry.
- If we're at the last, go back to the first and return nonzero,
- otherwise return zero. */
-static int
-open_temp_exec_file_opts_next (void)
-{
- if (open_temp_exec_file_opts[open_temp_exec_file_opts_idx].repeat)
- open_temp_exec_file_opts[open_temp_exec_file_opts_idx].func (NULL);
-
- open_temp_exec_file_opts_idx++;
- if (open_temp_exec_file_opts_idx
- == (sizeof (open_temp_exec_file_opts)
- / sizeof (*open_temp_exec_file_opts)))
- {
- open_temp_exec_file_opts_idx = 0;
- return 1;
- }
-
- return 0;
-}
-
-/* Return a file descriptor of a temporary zero-sized file in a
- writable and executable filesystem. */
-static int
-open_temp_exec_file (void)
-{
- int fd;
-
- do
- {
- fd = open_temp_exec_file_opts[open_temp_exec_file_opts_idx].func
- (open_temp_exec_file_opts[open_temp_exec_file_opts_idx].arg);
-
- if (!open_temp_exec_file_opts[open_temp_exec_file_opts_idx].repeat
- || fd == -1)
- {
- if (open_temp_exec_file_opts_next ())
- break;
- }
- }
- while (fd == -1);
-
- return fd;
-}
-
-/* We need to allocate space in a file that will be backing a writable
- mapping. Several problems exist with the usual approaches:
- - fallocate() is Linux-only
- - posix_fallocate() is not available on all platforms
- - ftruncate() does not allocate space on filesystems with sparse files
- Failure to allocate the space will cause SIGBUS to be thrown when
- the mapping is subsequently written to. */
-static int
-allocate_space (int fd, off_t offset, off_t len)
-{
- static size_t page_size;
-
- /* Obtain system page size. */
- if (!page_size)
- page_size = sysconf(_SC_PAGESIZE);
-
- unsigned char buf[page_size];
- memset (buf, 0, page_size);
-
- while (len > 0)
- {
- off_t to_write = (len < page_size) ? len : page_size;
- if (write (fd, buf, to_write) < to_write)
- return -1;
- len -= to_write;
- }
-
- return 0;
-}
-
-/* Map in a chunk of memory from the temporary exec file into separate
- locations in the virtual memory address space, one writable and one
- executable. Returns the address of the writable portion, after
- storing an offset to the corresponding executable portion at the
- last word of the requested chunk. */
-static void *
-dlmmap_locked (void *start, size_t length, int prot, int flags, off_t offset)
-{
- void *ptr;
-
- if (execfd == -1)
- {
- open_temp_exec_file_opts_idx = 0;
- retry_open:
- execfd = open_temp_exec_file ();
- if (execfd == -1)
- return MFAIL;
- }
-
- offset = execsize;
-
- if (allocate_space (execfd, offset, length))
- return MFAIL;
-
- flags &= ~(MAP_PRIVATE | MAP_ANONYMOUS);
- flags |= MAP_SHARED;
-
- ptr = mmap (NULL, length, (prot & ~PROT_WRITE) | PROT_EXEC,
- flags, execfd, offset);
- if (ptr == MFAIL)
- {
- if (!offset)
- {
- close (execfd);
- goto retry_open;
- }
- if (ftruncate (execfd, offset) != 0)
- {
- /* Fixme : Error logs can be added here. Returning an error for
- * ftruncte() will not add any advantage as it is being
- * validating in the error case. */
- }
-
- return MFAIL;
- }
- else if (!offset
- && open_temp_exec_file_opts[open_temp_exec_file_opts_idx].repeat)
- open_temp_exec_file_opts_next ();
-
- start = mmap (start, length, prot, flags, execfd, offset);
-
- if (start == MFAIL)
- {
- munmap (ptr, length);
- if (ftruncate (execfd, offset) != 0)
- {
- /* Fixme : Error logs can be added here. Returning an error for
- * ftruncte() will not add any advantage as it is being
- * validating in the error case. */
- }
- return start;
- }
-
- mmap_exec_offset ((char *)start, length) = (char*)ptr - (char*)start;
-
- execsize += length;
-
- return start;
-}
-
-/* Map in a writable and executable chunk of memory if possible.
- Failing that, fall back to dlmmap_locked. */
-static void *
-dlmmap (void *start, size_t length, int prot,
- int flags, int fd, off_t offset)
-{
- void *ptr;
-
- assert (start == NULL && length % malloc_getpagesize == 0
- && prot == (PROT_READ | PROT_WRITE)
- && flags == (MAP_PRIVATE | MAP_ANONYMOUS)
- && fd == -1 && offset == 0);
-
- if (execfd == -1 && is_emutramp_enabled ())
- {
- ptr = mmap (start, length, prot & ~PROT_EXEC, flags, fd, offset);
- return ptr;
- }
-
- if (execfd == -1 && !is_selinux_enabled ())
- {
- ptr = mmap (start, length, prot | PROT_EXEC, flags, fd, offset);
-
- if (ptr != MFAIL || (errno != EPERM && errno != EACCES))
- /* Cool, no need to mess with separate segments. */
- return ptr;
-
- /* If MREMAP_DUP is ever introduced and implemented, try mmap
- with ((prot & ~PROT_WRITE) | PROT_EXEC) and mremap with
- MREMAP_DUP and prot at this point. */
- }
-
- if (execsize == 0 || execfd == -1)
- {
- pthread_mutex_lock (&open_temp_exec_file_mutex);
- ptr = dlmmap_locked (start, length, prot, flags, offset);
- pthread_mutex_unlock (&open_temp_exec_file_mutex);
-
- return ptr;
- }
-
- return dlmmap_locked (start, length, prot, flags, offset);
-}
-
-/* Release memory at the given address, as well as the corresponding
- executable page if it's separate. */
-static int
-dlmunmap (void *start, size_t length)
-{
- /* We don't bother decreasing execsize or truncating the file, since
- we can't quite tell whether we're unmapping the end of the file.
- We don't expect frequent deallocation anyway. If we did, we
- could locate pages in the file by writing to the pages being
- deallocated and checking that the file contents change.
- Yuck. */
- msegmentptr seg = segment_holding (gm, start);
- void *code;
-
- if (seg && (code = add_segment_exec_offset (start, seg)) != start)
- {
- int ret = munmap (code, length);
- if (ret)
- return ret;
- }
-
- return munmap (start, length);
-}
-
-#if FFI_CLOSURE_FREE_CODE
-/* Return segment holding given code address. */
-static msegmentptr
-segment_holding_code (mstate m, char* addr)
-{
- msegmentptr sp = &m->seg;
- for (;;) {
- if (addr >= add_segment_exec_offset (sp->base, sp)
- && addr < add_segment_exec_offset (sp->base, sp) + sp->size)
- return sp;
- if ((sp = sp->next) == 0)
- return 0;
- }
-}
-#endif
-
-#endif /* !(defined(X86_WIN32) || defined(X86_WIN64) || defined(_M_ARM64) || defined(__OS2__)) || defined (__CYGWIN__) || defined(__INTERIX) */
-
-/* Allocate a chunk of memory with the given size. Returns a pointer
- to the writable address, and sets *CODE to the executable
- corresponding virtual address. */
-void *
-ffi_closure_alloc (size_t size, void **code)
-{
- void *ptr;
-
- if (!code)
- return NULL;
-
- ptr = dlmalloc (size);
-
- if (ptr)
- {
- msegmentptr seg = segment_holding (gm, ptr);
-
- *code = add_segment_exec_offset (ptr, seg);
- }
-
- return ptr;
-}
-
-void *
-ffi_data_to_code_pointer (void *data)
-{
- msegmentptr seg = segment_holding (gm, data);
- /* We expect closures to be allocated with ffi_closure_alloc(), in
- which case seg will be non-NULL. However, some users take on the
- burden of managing this memory themselves, in which case this
- we'll just return data. */
- if (seg)
- return add_segment_exec_offset (data, seg);
- else
- return data;
-}
-
-/* Release a chunk of memory allocated with ffi_closure_alloc. If
- FFI_CLOSURE_FREE_CODE is nonzero, the given address can be the
- writable or the executable address given. Otherwise, only the
- writable address can be provided here. */
-void
-ffi_closure_free (void *ptr)
-{
-#if FFI_CLOSURE_FREE_CODE
- msegmentptr seg = segment_holding_code (gm, ptr);
-
- if (seg)
- ptr = sub_segment_exec_offset (ptr, seg);
-#endif
-
- dlfree (ptr);
-}
-
-# else /* ! FFI_MMAP_EXEC_WRIT */
-
-/* On many systems, memory returned by malloc is writable and
- executable, so just use it. */
-
-#include <stdlib.h>
-
-void *
-ffi_closure_alloc (size_t size, void **code)
-{
- if (!code)
- return NULL;
-
- return *code = malloc (size);
-}
-
-void
-ffi_closure_free (void *ptr)
-{
- free (ptr);
-}
-
-void *
-ffi_data_to_code_pointer (void *data)
-{
- return data;
-}
-
-# endif /* ! FFI_MMAP_EXEC_WRIT */
-#endif /* FFI_CLOSURES */
-
-#endif /* NetBSD with PROT_MPROTECT */
-
-
-====================File: src/java_raw_api.c====================
-/* -----------------------------------------------------------------------
- java_raw_api.c - Copyright (c) 1999, 2007, 2008 Red Hat, Inc.
-
- Cloned from raw_api.c
-
- Raw_api.c author: Kresten Krab Thorup <krab@gnu.org>
- Java_raw_api.c author: Hans-J. Boehm <hboehm@hpl.hp.com>
-
- $Id $
-
- 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.
- ----------------------------------------------------------------------- */
-
-/* This defines a Java- and 64-bit specific variant of the raw API. */
-/* It assumes that "raw" argument blocks look like Java stacks on a */
-/* 64-bit machine. Arguments that can be stored in a single stack */
-/* stack slots (longs, doubles) occupy 128 bits, but only the first */
-/* 64 bits are actually used. */
-
-#include <ffi.h>
-#include <ffi_common.h>
-#include <stdlib.h>
-
-#if !defined(NO_JAVA_RAW_API)
-
-size_t
-ffi_java_raw_size (ffi_cif *cif)
-{
- size_t result = 0;
- int i;
-
- ffi_type **at = cif->arg_types;
-
- for (i = cif->nargs-1; i >= 0; i--, at++)
- {
- switch((*at) -> type) {
- case FFI_TYPE_UINT64:
- case FFI_TYPE_SINT64:
- case FFI_TYPE_DOUBLE:
- result += 2 * FFI_SIZEOF_JAVA_RAW;
- break;
- case FFI_TYPE_STRUCT:
- /* No structure parameters in Java. */
- abort();
- case FFI_TYPE_COMPLEX:
- /* Not supported yet. */
- abort();
- default:
- result += FFI_SIZEOF_JAVA_RAW;
- }
- }
-
- return result;
-}
-
-
-void
-ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_java_raw *raw, void **args)
-{
- unsigned i;
- ffi_type **tp = cif->arg_types;
-
-#if WORDS_BIGENDIAN
-
- for (i = 0; i < cif->nargs; i++, tp++, args++)
- {
- switch ((*tp)->type)
- {
- case FFI_TYPE_UINT8:
- case FFI_TYPE_SINT8:
- *args = (void*) ((char*)(raw++) + 3);
- break;
-
- case FFI_TYPE_UINT16:
- case FFI_TYPE_SINT16:
- *args = (void*) ((char*)(raw++) + 2);
- break;
-
-#if FFI_SIZEOF_JAVA_RAW == 8
- case FFI_TYPE_UINT64:
- case FFI_TYPE_SINT64:
- case FFI_TYPE_DOUBLE:
- *args = (void *)raw;
- raw += 2;
- break;
-#endif
-
- case FFI_TYPE_POINTER:
- *args = (void*) &(raw++)->ptr;
- break;
-
- case FFI_TYPE_COMPLEX:
- /* Not supported yet. */
- abort();
-
- default:
- *args = raw;
- raw +=
- FFI_ALIGN ((*tp)->size, sizeof(ffi_java_raw)) / sizeof(ffi_java_raw);
- }
- }
-
-#else /* WORDS_BIGENDIAN */
-
-#if !PDP
-
- /* then assume little endian */
- for (i = 0; i < cif->nargs; i++, tp++, args++)
- {
-#if FFI_SIZEOF_JAVA_RAW == 8
- switch((*tp)->type) {
- case FFI_TYPE_UINT64:
- case FFI_TYPE_SINT64:
- case FFI_TYPE_DOUBLE:
- *args = (void*) raw;
- raw += 2;
- break;
- case FFI_TYPE_COMPLEX:
- /* Not supported yet. */
- abort();
- default:
- *args = (void*) raw++;
- }
-#else /* FFI_SIZEOF_JAVA_RAW != 8 */
- *args = (void*) raw;
- raw +=
- FFI_ALIGN ((*tp)->size, sizeof(ffi_java_raw)) / sizeof(ffi_java_raw);
-#endif /* FFI_SIZEOF_JAVA_RAW == 8 */
- }
-
-#else
-#error "pdp endian not supported"
-#endif /* ! PDP */
-
-#endif /* WORDS_BIGENDIAN */
-}
-
-void
-ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_java_raw *raw)
-{
- unsigned i;
- ffi_type **tp = cif->arg_types;
-
- for (i = 0; i < cif->nargs; i++, tp++, args++)
- {
- switch ((*tp)->type)
- {
- case FFI_TYPE_UINT8:
-#if WORDS_BIGENDIAN
- *(UINT32*)(raw++) = *(UINT8*) (*args);
-#else
- (raw++)->uint = *(UINT8*) (*args);
-#endif
- break;
-
- case FFI_TYPE_SINT8:
-#if WORDS_BIGENDIAN
- *(SINT32*)(raw++) = *(SINT8*) (*args);
-#else
- (raw++)->sint = *(SINT8*) (*args);
-#endif
- break;
-
- case FFI_TYPE_UINT16:
-#if WORDS_BIGENDIAN
- *(UINT32*)(raw++) = *(UINT16*) (*args);
-#else
- (raw++)->uint = *(UINT16*) (*args);
-#endif
- break;
-
- case FFI_TYPE_SINT16:
-#if WORDS_BIGENDIAN
- *(SINT32*)(raw++) = *(SINT16*) (*args);
-#else
- (raw++)->sint = *(SINT16*) (*args);
-#endif
- break;
-
- case FFI_TYPE_UINT32:
-#if WORDS_BIGENDIAN
- *(UINT32*)(raw++) = *(UINT32*) (*args);
-#else
- (raw++)->uint = *(UINT32*) (*args);
-#endif
- break;
-
- case FFI_TYPE_SINT32:
-#if WORDS_BIGENDIAN
- *(SINT32*)(raw++) = *(SINT32*) (*args);
-#else
- (raw++)->sint = *(SINT32*) (*args);
-#endif
- break;
-
- case FFI_TYPE_FLOAT:
- (raw++)->flt = *(FLOAT32*) (*args);
- break;
-
-#if FFI_SIZEOF_JAVA_RAW == 8
- case FFI_TYPE_UINT64:
- case FFI_TYPE_SINT64:
- case FFI_TYPE_DOUBLE:
- raw->uint = *(UINT64*) (*args);
- raw += 2;
- break;
-#endif
-
- case FFI_TYPE_POINTER:
- (raw++)->ptr = **(void***) args;
- break;
-
- default:
-#if FFI_SIZEOF_JAVA_RAW == 8
- FFI_ASSERT(0); /* Should have covered all cases */
-#else
- memcpy ((void*) raw->data, (void*)*args, (*tp)->size);
- raw +=
- FFI_ALIGN ((*tp)->size, sizeof(ffi_java_raw)) / sizeof(ffi_java_raw);
-#endif
- }
- }
-}
-
-#if !FFI_NATIVE_RAW_API
-
-static void
-ffi_java_rvalue_to_raw (ffi_cif *cif, void *rvalue)
-{
-#if WORDS_BIGENDIAN && FFI_SIZEOF_ARG == 8
- switch (cif->rtype->type)
- {
- case FFI_TYPE_UINT8:
- case FFI_TYPE_UINT16:
- case FFI_TYPE_UINT32:
- *(UINT64 *)rvalue <<= 32;
- break;
-
- case FFI_TYPE_SINT8:
- case FFI_TYPE_SINT16:
- case FFI_TYPE_SINT32:
- case FFI_TYPE_INT:
-#if FFI_SIZEOF_JAVA_RAW == 4
- case FFI_TYPE_POINTER:
-#endif
- *(SINT64 *)rvalue <<= 32;
- break;
-
- case FFI_TYPE_COMPLEX:
- /* Not supported yet. */
- abort();
-
- default:
- break;
- }
-#endif
-}
-
-static void
-ffi_java_raw_to_rvalue (ffi_cif *cif, void *rvalue)
-{
-#if WORDS_BIGENDIAN && FFI_SIZEOF_ARG == 8
- switch (cif->rtype->type)
- {
- case FFI_TYPE_UINT8:
- case FFI_TYPE_UINT16:
- case FFI_TYPE_UINT32:
- *(UINT64 *)rvalue >>= 32;
- break;
-
- case FFI_TYPE_SINT8:
- case FFI_TYPE_SINT16:
- case FFI_TYPE_SINT32:
- case FFI_TYPE_INT:
- *(SINT64 *)rvalue >>= 32;
- break;
-
- case FFI_TYPE_COMPLEX:
- /* Not supported yet. */
- abort();
-
- default:
- break;
- }
-#endif
-}
-
-/* This is a generic definition of ffi_raw_call, to be used if the
- * native system does not provide a machine-specific implementation.
- * Having this, allows code to be written for the raw API, without
- * the need for system-specific code to handle input in that format;
- * these following couple of functions will handle the translation forth
- * and back automatically. */
-
-void ffi_java_raw_call (ffi_cif *cif, void (*fn)(void), void *rvalue,
- ffi_java_raw *raw)
-{
- void **avalue = (void**) alloca (cif->nargs * sizeof (void*));
- ffi_java_raw_to_ptrarray (cif, raw, avalue);
- ffi_call (cif, fn, rvalue, avalue);
- ffi_java_rvalue_to_raw (cif, rvalue);
-}
-
-#if FFI_CLOSURES /* base system provides closures */
-
-static void
-ffi_java_translate_args (ffi_cif *cif, void *rvalue,
- void **avalue, void *user_data)
-{
- ffi_java_raw *raw = (ffi_java_raw*)alloca (ffi_java_raw_size (cif));
- ffi_raw_closure *cl = (ffi_raw_closure*)user_data;
-
- ffi_java_ptrarray_to_raw (cif, avalue, raw);
- (*cl->fun) (cif, rvalue, (ffi_raw*)raw, cl->user_data);
- ffi_java_raw_to_rvalue (cif, rvalue);
-}
-
-ffi_status
-ffi_prep_java_raw_closure_loc (ffi_java_raw_closure* cl,
- ffi_cif *cif,
- void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*),
- void *user_data,
- void *codeloc)
-{
- ffi_status status;
-
- status = ffi_prep_closure_loc ((ffi_closure*) cl,
- cif,
- &ffi_java_translate_args,
- codeloc,
- codeloc);
- if (status == FFI_OK)
- {
- cl->fun = fun;
- cl->user_data = user_data;
- }
-
- return status;
-}
-
-/* Again, here is the generic version of ffi_prep_raw_closure, which
- * will install an intermediate "hub" for translation of arguments from
- * the pointer-array format, to the raw format */
-
-ffi_status
-ffi_prep_java_raw_closure (ffi_java_raw_closure* cl,
- ffi_cif *cif,
- void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*),
- void *user_data)
-{
- return ffi_prep_java_raw_closure_loc (cl, cif, fun, user_data, cl);
-}
-
-#endif /* FFI_CLOSURES */
-#endif /* !FFI_NATIVE_RAW_API */
-#endif /* !NO_JAVA_RAW_API */
-
-
-====================File: src/powerpc/aix.S====================
-/* -----------------------------------------------------------------------
- aix.S - Copyright (c) 2002, 2009 Free Software Foundation, Inc.
- based on darwin.S by John Hornkvist
-
- PowerPC Assembly glue.
-
- 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 AUTHOR 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.
- ----------------------------------------------------------------------- */
-
- .set r0,0
- .set r1,1
- .set r2,2
- .set r3,3
- .set r4,4
- .set r5,5
- .set r6,6
- .set r7,7
- .set r8,8
- .set r9,9
- .set r10,10
- .set r11,11
- .set r12,12
- .set r13,13
- .set r14,14
- .set r15,15
- .set r16,16
- .set r17,17
- .set r18,18
- .set r19,19
- .set r20,20
- .set r21,21
- .set r22,22
- .set r23,23
- .set r24,24
- .set r25,25
- .set r26,26
- .set r27,27
- .set r28,28
- .set r29,29
- .set r30,30
- .set r31,31
- .set f0,0
- .set f1,1
- .set f2,2
- .set f3,3
- .set f4,4
- .set f5,5
- .set f6,6
- .set f7,7
- .set f8,8
- .set f9,9
- .set f10,10
- .set f11,11
- .set f12,12
- .set f13,13
- .set f14,14
- .set f15,15
- .set f16,16
- .set f17,17
- .set f18,18
- .set f19,19
- .set f20,20
- .set f21,21
-
- .extern .ffi_prep_args
-
-#define LIBFFI_ASM
-#include <fficonfig.h>
-#include <ffi.h>
-#define JUMPTARGET(name) name
-#define L(x) x
- .file "aix.S"
- .toc
-
- /* void ffi_call_AIX(extended_cif *ecif, unsigned long bytes,
- * unsigned int flags, unsigned int *rvalue,
- * void (*fn)(),
- * void (*prep_args)(extended_cif*, unsigned *const));
- * r3=ecif, r4=bytes, r5=flags, r6=rvalue, r7=fn, r8=prep_args
- */
-
-.csect .text[PR]
- .align 2
- .globl ffi_call_AIX
- .globl .ffi_call_AIX
-.csect ffi_call_AIX[DS]
-ffi_call_AIX:
-#ifdef __64BIT__
- .llong .ffi_call_AIX, TOC[tc0], 0
- .csect .text[PR]
-.ffi_call_AIX:
- .function .ffi_call_AIX,.ffi_call_AIX,16,044,LFE..0-LFB..0
- .bf __LINE__
- .line 1
-LFB..0:
- /* Save registers we use. */
- mflr r0
-
- std r28,-32(r1)
- std r29,-24(r1)
- std r30,-16(r1)
- std r31, -8(r1)
-
- std r0, 16(r1)
-LCFI..0:
- mr r28, r1 /* our AP. */
- stdux r1, r1, r4
-LCFI..1:
-
- /* Save arguments over call... */
- mr r31, r5 /* flags, */
- mr r30, r6 /* rvalue, */
- mr r29, r7 /* function address. */
- std r2, 40(r1)
-
- /* Call ffi_prep_args. */
- mr r4, r1
- bl .ffi_prep_args
- nop
-
- /* Now do the call. */
- ld r0, 0(r29)
- ld r2, 8(r29)
- ld r11, 16(r29)
- /* Set up cr1 with bits 4-7 of the flags. */
- mtcrf 0x40, r31
- mtctr r0
- /* Load all those argument registers. */
- /* We have set up a nice stack frame, just load it into registers. */
- ld r3, 40+(1*8)(r1)
- ld r4, 40+(2*8)(r1)
- ld r5, 40+(3*8)(r1)
- ld r6, 40+(4*8)(r1)
- nop
- ld r7, 40+(5*8)(r1)
- ld r8, 40+(6*8)(r1)
- ld r9, 40+(7*8)(r1)
- ld r10,40+(8*8)(r1)
-
-L1:
- /* Load all the FP registers. */
- bf 6,L2 /* 2f + 0x18 */
- lfd f1,-32-(13*8)(r28)
- lfd f2,-32-(12*8)(r28)
- lfd f3,-32-(11*8)(r28)
- lfd f4,-32-(10*8)(r28)
- nop
- lfd f5,-32-(9*8)(r28)
- lfd f6,-32-(8*8)(r28)
- lfd f7,-32-(7*8)(r28)
- lfd f8,-32-(6*8)(r28)
- nop
- lfd f9,-32-(5*8)(r28)
- lfd f10,-32-(4*8)(r28)
- lfd f11,-32-(3*8)(r28)
- lfd f12,-32-(2*8)(r28)
- nop
- lfd f13,-32-(1*8)(r28)
-
-L2:
- /* Make the call. */
- bctrl
- ld r2, 40(r1)
-
- /* Now, deal with the return value. */
- mtcrf 0x01, r31
-
- bt 30, L(done_return_value)
- bt 29, L(fp_return_value)
- std r3, 0(r30)
-
- /* Fall through... */
-
-L(done_return_value):
- /* Restore the registers we used and return. */
- mr r1, r28
- ld r0, 16(r28)
- ld r28, -32(r1)
- mtlr r0
- ld r29, -24(r1)
- ld r30, -16(r1)
- ld r31, -8(r1)
- blr
-
-L(fp_return_value):
- bf 28, L(float_return_value)
- stfd f1, 0(r30)
- bf 31, L(done_return_value)
- stfd f2, 8(r30)
- b L(done_return_value)
-L(float_return_value):
- stfs f1, 0(r30)
- b L(done_return_value)
-LFE..0:
-#else /* ! __64BIT__ */
-
- .long .ffi_call_AIX, TOC[tc0], 0
- .csect .text[PR]
-.ffi_call_AIX:
- .function .ffi_call_AIX,.ffi_call_AIX,16,044,LFE..0-LFB..0
- .bf __LINE__
- .line 1
-LFB..0:
- /* Save registers we use. */
- mflr r0
-
- stw r28,-16(r1)
- stw r29,-12(r1)
- stw r30, -8(r1)
- stw r31, -4(r1)
-
- stw r0, 8(r1)
-LCFI..0:
- mr r28, r1 /* out AP. */
- stwux r1, r1, r4
-LCFI..1:
-
- /* Save arguments over call... */
- mr r31, r5 /* flags, */
- mr r30, r6 /* rvalue, */
- mr r29, r7 /* function address, */
- stw r2, 20(r1)
-
- /* Call ffi_prep_args. */
- mr r4, r1
- bl .ffi_prep_args
- nop
-
- /* Now do the call. */
- lwz r0, 0(r29)
- lwz r2, 4(r29)
- lwz r11, 8(r29)
- /* Set up cr1 with bits 4-7 of the flags. */
- mtcrf 0x40, r31
- mtctr r0
- /* Load all those argument registers. */
- /* We have set up a nice stack frame, just load it into registers. */
- lwz r3, 20+(1*4)(r1)
- lwz r4, 20+(2*4)(r1)
- lwz r5, 20+(3*4)(r1)
- lwz r6, 20+(4*4)(r1)
- nop
- lwz r7, 20+(5*4)(r1)
- lwz r8, 20+(6*4)(r1)
- lwz r9, 20+(7*4)(r1)
- lwz r10,20+(8*4)(r1)
-
-L1:
- /* Load all the FP registers. */
- bf 6,L2 /* 2f + 0x18 */
- lfd f1,-16-(13*8)(r28)
- lfd f2,-16-(12*8)(r28)
- lfd f3,-16-(11*8)(r28)
- lfd f4,-16-(10*8)(r28)
- nop
- lfd f5,-16-(9*8)(r28)
- lfd f6,-16-(8*8)(r28)
- lfd f7,-16-(7*8)(r28)
- lfd f8,-16-(6*8)(r28)
- nop
- lfd f9,-16-(5*8)(r28)
- lfd f10,-16-(4*8)(r28)
- lfd f11,-16-(3*8)(r28)
- lfd f12,-16-(2*8)(r28)
- nop
- lfd f13,-16-(1*8)(r28)
-
-L2:
- /* Make the call. */
- bctrl
- lwz r2, 20(r1)
-
- /* Now, deal with the return value. */
- mtcrf 0x01, r31
-
- bt 30, L(done_return_value)
- bt 29, L(fp_return_value)
- stw r3, 0(r30)
- bf 28, L(done_return_value)
- stw r4, 4(r30)
-
- /* Fall through... */
-
-L(done_return_value):
- /* Restore the registers we used and return. */
- mr r1, r28
- lwz r0, 8(r28)
- lwz r28,-16(r1)
- mtlr r0
- lwz r29,-12(r1)
- lwz r30, -8(r1)
- lwz r31, -4(r1)
- blr
-
-L(fp_return_value):
- bf 28, L(float_return_value)
- stfd f1, 0(r30)
- b L(done_return_value)
-L(float_return_value):
- stfs f1, 0(r30)
- b L(done_return_value)
-LFE..0:
-#endif
- .ef __LINE__
- .long 0
- .byte 0,0,0,1,128,4,0,0
-/* END(ffi_call_AIX) */
-
- /* void ffi_call_go_AIX(extended_cif *ecif, unsigned long bytes,
- * unsigned int flags, unsigned int *rvalue,
- * void (*fn)(),
- * void (*prep_args)(extended_cif*, unsigned *const),
- * void *closure);
- * r3=ecif, r4=bytes, r5=flags, r6=rvalue, r7=fn, r8=prep_args, r9=closure
- */
-
-.csect .text[PR]
- .align 2
- .globl ffi_call_go_AIX
- .globl .ffi_call_go_AIX
-.csect ffi_call_go_AIX[DS]
-ffi_call_go_AIX:
-#ifdef __64BIT__
- .llong .ffi_call_go_AIX, TOC[tc0], 0
- .csect .text[PR]
-.ffi_call_go_AIX:
- .function .ffi_call_go_AIX,.ffi_call_go_AIX,16,044,LFE..1-LFB..1
- .bf __LINE__
- .line 1
-LFB..1:
- /* Save registers we use. */
- mflr r0
-
- std r28,-32(r1)
- std r29,-24(r1)
- std r30,-16(r1)
- std r31, -8(r1)
-
- std r9, 8(r1) /* closure, saved in cr field. */
- std r0, 16(r1)
-LCFI..2:
- mr r28, r1 /* our AP. */
- stdux r1, r1, r4
-LCFI..3:
-
- /* Save arguments over call... */
- mr r31, r5 /* flags, */
- mr r30, r6 /* rvalue, */
- mr r29, r7 /* function address, */
- std r2, 40(r1)
-
- /* Call ffi_prep_args. */
- mr r4, r1
- bl .ffi_prep_args
- nop
-
- /* Now do the call. */
- ld r0, 0(r29)
- ld r2, 8(r29)
- ld r11, 8(r28) /* closure */
- /* Set up cr1 with bits 4-7 of the flags. */
- mtcrf 0x40, r31
- mtctr r0
- /* Load all those argument registers. */
- /* We have set up a nice stack frame, just load it into registers. */
- ld r3, 40+(1*8)(r1)
- ld r4, 40+(2*8)(r1)
- ld r5, 40+(3*8)(r1)
- ld r6, 40+(4*8)(r1)
- nop
- ld r7, 40+(5*8)(r1)
- ld r8, 40+(6*8)(r1)
- ld r9, 40+(7*8)(r1)
- ld r10,40+(8*8)(r1)
-
- b L1
-LFE..1:
-#else /* ! __64BIT__ */
-
- .long .ffi_call_go_AIX, TOC[tc0], 0
- .csect .text[PR]
-.ffi_call_go_AIX:
- .function .ffi_call_go_AIX,.ffi_call_go_AIX,16,044,LFE..1-LFB..1
- .bf __LINE__
- .line 1
- /* Save registers we use. */
-LFB..1:
- mflr r0
-
- stw r28,-16(r1)
- stw r29,-12(r1)
- stw r30, -8(r1)
- stw r31, -4(r1)
-
- stw r9, 4(r1) /* closure, saved in cr field. */
- stw r0, 8(r1)
-LCFI..2:
- mr r28, r1 /* out AP. */
- stwux r1, r1, r4
-LCFI..3:
-
- /* Save arguments over call... */
- mr r31, r5 /* flags, */
- mr r30, r6 /* rvalue, */
- mr r29, r7 /* function address, */
- stw r2, 20(r1)
-
- /* Call ffi_prep_args. */
- mr r4, r1
- bl .ffi_prep_args
- nop
-
- /* Now do the call. */
- lwz r0, 0(r29)
- lwz r2, 4(r29)
- lwz r11, 4(r28) /* closure */
- /* Set up cr1 with bits 4-7 of the flags. */
- mtcrf 0x40, r31
- mtctr r0
- /* Load all those argument registers. */
- /* We have set up a nice stack frame, just load it into registers. */
- lwz r3, 20+(1*4)(r1)
- lwz r4, 20+(2*4)(r1)
- lwz r5, 20+(3*4)(r1)
- lwz r6, 20+(4*4)(r1)
- nop
- lwz r7, 20+(5*4)(r1)
- lwz r8, 20+(6*4)(r1)
- lwz r9, 20+(7*4)(r1)
- lwz r10,20+(8*4)(r1)
-
- b L1
-LFE..1:
-#endif
- .ef __LINE__
- .long 0
- .byte 0,0,0,1,128,4,0,0
-/* END(ffi_call_go_AIX) */
-
-.csect .text[PR]
- .align 2
- .globl ffi_call_DARWIN
- .globl .ffi_call_DARWIN
-.csect ffi_call_DARWIN[DS]
-ffi_call_DARWIN:
-#ifdef __64BIT__
- .llong .ffi_call_DARWIN, TOC[tc0], 0
-#else
- .long .ffi_call_DARWIN, TOC[tc0], 0
-#endif
- .csect .text[PR]
-.ffi_call_DARWIN:
- blr
- .long 0
- .byte 0,0,0,0,0,0,0,0
-/* END(ffi_call_DARWIN) */
-
-/* EH frame stuff. */
-
-#define LR_REGNO 0x41 /* Link Register (65), see rs6000.md */
-#ifdef __64BIT__
-#define PTRSIZE 8
-#define LOG2_PTRSIZE 3
-#define FDE_ENCODING 0x1c /* DW_EH_PE_pcrel|DW_EH_PE_sdata8 */
-#define EH_DATA_ALIGN_FACT 0x78 /* LEB128 -8 */
-#else
-#define PTRSIZE 4
-#define LOG2_PTRSIZE 2
-#define FDE_ENCODING 0x1b /* DW_EH_PE_pcrel|DW_EH_PE_sdata4 */
-#define EH_DATA_ALIGN_FACT 0x7c /* LEB128 -4 */
-#endif
- .csect _unwind.ro_[RO],4
- .align LOG2_PTRSIZE
- .globl _GLOBAL__F_libffi_src_powerpc_aix
-_GLOBAL__F_libffi_src_powerpc_aix:
-Lframe..1:
- .vbyte 4,LECIE..1-LSCIE..1 /* CIE Length */
-LSCIE..1:
- .vbyte 4,0 /* CIE Identifier Tag */
- .byte 0x3 /* CIE Version */
- .byte "zR" /* CIE Augmentation */
- .byte 0
- .byte 0x1 /* uleb128 0x1; CIE Code Alignment Factor */
- .byte EH_DATA_ALIGN_FACT /* leb128 -4/-8; CIE Data Alignment Factor */
- .byte 0x41 /* CIE RA Column */
- .byte 0x1 /* uleb128 0x1; Augmentation size */
- .byte FDE_ENCODING /* FDE Encoding (pcrel|sdata4/8) */
- .byte 0xc /* DW_CFA_def_cfa */
- .byte 0x1 /* uleb128 0x1; Register r1 */
- .byte 0 /* uleb128 0x0; Offset 0 */
- .align LOG2_PTRSIZE
-LECIE..1:
-LSFDE..1:
- .vbyte 4,LEFDE..1-LASFDE..1 /* FDE Length */
-LASFDE..1:
- .vbyte 4,LASFDE..1-Lframe..1 /* FDE CIE offset */
- .vbyte PTRSIZE,LFB..0-$ /* FDE initial location */
- .vbyte PTRSIZE,LFE..0-LFB..0 /* FDE address range */
- .byte 0 /* uleb128 0x0; Augmentation size */
- .byte 0x4 /* DW_CFA_advance_loc4 */
- .vbyte 4,LCFI..0-LFB..0
- .byte 0x11 /* DW_CFA_def_offset_extended_sf */
- .byte LR_REGNO /* uleb128 LR_REGNO; Register LR */
- .byte 0x7e /* leb128 -2; Offset -2 (8/16) */
- .byte 0x9f /* DW_CFA_offset Register r31 */
- .byte 0x1 /* uleb128 0x1; Offset 1 (-4/-8) */
- .byte 0x9e /* DW_CFA_offset Register r30 */
- .byte 0x2 /* uleb128 0x2; Offset 2 (-8/-16) */
- .byte 0x9d /* DW_CFA_offset Register r29 */
- .byte 0x3 /* uleb128 0x3; Offset 3 (-12/-24) */
- .byte 0x9c /* DW_CFA_offset Register r28 */
- .byte 0x4 /* uleb128 0x4; Offset 4 (-16/-32) */
- .byte 0x4 /* DW_CFA_advance_loc4 */
- .vbyte 4,LCFI..1-LCFI..0
- .byte 0xd /* DW_CFA_def_cfa_register */
- .byte 0x1c /* uleb128 28; Register r28 */
- .align LOG2_PTRSIZE
-LEFDE..1:
-LSFDE..2:
- .vbyte 4,LEFDE..2-LASFDE..2 /* FDE Length */
-LASFDE..2:
- .vbyte 4,LASFDE..2-Lframe..1 /* FDE CIE offset */
- .vbyte PTRSIZE,LFB..1-$ /* FDE initial location */
- .vbyte PTRSIZE,LFE..1-LFB..1 /* FDE address range */
- .byte 0 /* uleb128 0x0; Augmentation size */
- .byte 0x4 /* DW_CFA_advance_loc4 */
- .vbyte 4,LCFI..2-LFB..1
- .byte 0x11 /* DW_CFA_def_offset_extended_sf */
- .byte LR_REGNO /* uleb128 LR_REGNO; Register LR */
- .byte 0x7e /* leb128 -2; Offset -2 (8/16) */
- .byte 0x9f /* DW_CFA_offset Register r31 */
- .byte 0x1 /* uleb128 0x1; Offset 1 (-4/-8) */
- .byte 0x9e /* DW_CFA_offset Register r30 */
- .byte 0x2 /* uleb128 0x2; Offset 2 (-8/-16) */
- .byte 0x9d /* DW_CFA_offset Register r29 */
- .byte 0x3 /* uleb128 0x3; Offset 3 (-12/-24) */
- .byte 0x9c /* DW_CFA_offset Register r28 */
- .byte 0x4 /* uleb128 0x4; Offset 4 (-16/-32) */
- .byte 0x4 /* DW_CFA_advance_loc4 */
- .vbyte 4,LCFI..3-LCFI..2
- .byte 0xd /* DW_CFA_def_cfa_register */
- .byte 0x1c /* uleb128 28; Register r28 */
- .align LOG2_PTRSIZE
-LEFDE..2:
- .vbyte 4,0 /* End of FDEs */
-
- .csect .text[PR]
- .ref _GLOBAL__F_libffi_src_powerpc_aix /* Prevents garbage collection by AIX linker */
-
-
-
-====================File: src/powerpc/aix_closure.S====================
-/* -----------------------------------------------------------------------
- aix_closure.S - Copyright (c) 2002, 2003, 2009 Free Software Foundation, Inc.
- based on darwin_closure.S
-
- PowerPC Assembly glue.
-
- 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 AUTHOR 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.
- ----------------------------------------------------------------------- */
-
- .set r0,0
- .set r1,1
- .set r2,2
- .set r3,3
- .set r4,4
- .set r5,5
- .set r6,6
- .set r7,7
- .set r8,8
- .set r9,9
- .set r10,10
- .set r11,11
- .set r12,12
- .set r13,13
- .set r14,14
- .set r15,15
- .set r16,16
- .set r17,17
- .set r18,18
- .set r19,19
- .set r20,20
- .set r21,21
- .set r22,22
- .set r23,23
- .set r24,24
- .set r25,25
- .set r26,26
- .set r27,27
- .set r28,28
- .set r29,29
- .set r30,30
- .set r31,31
- .set f0,0
- .set f1,1
- .set f2,2
- .set f3,3
- .set f4,4
- .set f5,5
- .set f6,6
- .set f7,7
- .set f8,8
- .set f9,9
- .set f10,10
- .set f11,11
- .set f12,12
- .set f13,13
- .set f14,14
- .set f15,15
- .set f16,16
- .set f17,17
- .set f18,18
- .set f19,19
- .set f20,20
- .set f21,21
-
- .extern .ffi_closure_helper_DARWIN
- .extern .ffi_go_closure_helper_DARWIN
-
-#define LIBFFI_ASM
-#define JUMPTARGET(name) name
-#define L(x) x
- .file "aix_closure.S"
- .toc
-LC..60:
- .tc L..60[TC],L..60
- .csect .text[PR]
- .align 2
-
-.csect .text[PR]
- .align 2
- .globl ffi_closure_ASM
- .globl .ffi_closure_ASM
-.csect ffi_closure_ASM[DS]
-ffi_closure_ASM:
-#ifdef __64BIT__
- .llong .ffi_closure_ASM, TOC[tc0], 0
- .csect .text[PR]
-.ffi_closure_ASM:
- .function .ffi_closure_ASM,.ffi_closure_ASM,16,044,LFE..0-LFB..0
- .bf __LINE__
- .line 1
-LFB..0:
-/* we want to build up an area for the parameters passed */
-/* in registers (both floating point and integer) */
-
- /* we store gpr 3 to gpr 10 (aligned to 4)
- in the parents outgoing area */
- std r3, 48+(0*8)(r1)
- std r4, 48+(1*8)(r1)
- std r5, 48+(2*8)(r1)
- std r6, 48+(3*8)(r1)
- mflr r0
-
- std r7, 48+(4*8)(r1)
- std r8, 48+(5*8)(r1)
- std r9, 48+(6*8)(r1)
- std r10, 48+(7*8)(r1)
- std r0, 16(r1) /* save the return address */
-LCFI..0:
- /* 48 Bytes (Linkage Area) */
- /* 64 Bytes (params) */
- /* 16 Bytes (result) */
- /* 104 Bytes (13*8 from FPR) */
- /* 8 Bytes (alignment) */
- /* 240 Bytes */
-
- stdu r1, -240(r1) /* skip over caller save area
- keep stack aligned to 16 */
-LCFI..1:
-
- /* next save fpr 1 to fpr 13 (aligned to 8) */
- stfd f1, 128+(0*8)(r1)
- stfd f2, 128+(1*8)(r1)
- stfd f3, 128+(2*8)(r1)
- stfd f4, 128+(3*8)(r1)
- stfd f5, 128+(4*8)(r1)
- stfd f6, 128+(5*8)(r1)
- stfd f7, 128+(6*8)(r1)
- stfd f8, 128+(7*8)(r1)
- stfd f9, 128+(8*8)(r1)
- stfd f10, 128+(9*8)(r1)
- stfd f11, 128+(10*8)(r1)
- stfd f12, 128+(11*8)(r1)
- stfd f13, 128+(12*8)(r1)
-
- /* set up registers for the routine that actually does the work */
- /* get the context pointer from the trampoline */
- mr r3, r11
-
- /* now load up the pointer to the result storage */
- addi r4, r1, 112
-
- /* now load up the pointer to the saved gpr registers */
- addi r5, r1, 288
-
- /* now load up the pointer to the saved fpr registers */
- addi r6, r1, 128
-
- /* make the call */
- bl .ffi_closure_helper_DARWIN
- nop
-
-.Ldoneclosure:
-
- /* now r3 contains the return type */
- /* so use it to look up in a table */
- /* so we know how to deal with each type */
-
- /* look up the proper starting point in table */
- /* by using return type as offset */
- lhz r3, 10(r3) /* load type from return type */
- ld r4, LC..60(2) /* get address of jump table */
- sldi r3, r3, 4 /* now multiply return type by 16 */
- ld r0, 240+16(r1) /* load return address */
- add r3, r3, r4 /* add contents of table to table address */
- mtctr r3
- bctr /* jump to it */
-
-/* Each fragment must be exactly 16 bytes long (4 instructions).
- Align to 16 byte boundary for cache and dispatch efficiency. */
- .align 4
-
-L..60:
-/* case FFI_TYPE_VOID */
- mtlr r0
- addi r1, r1, 240
- blr
- nop
-
-/* case FFI_TYPE_INT */
- lwa r3, 112+4(r1)
- mtlr r0
- addi r1, r1, 240
- blr
-
-/* case FFI_TYPE_FLOAT */
- lfs f1, 112+0(r1)
- mtlr r0
- addi r1, r1, 240
- blr
-
-/* case FFI_TYPE_DOUBLE */
- lfd f1, 112+0(r1)
- mtlr r0
- addi r1, r1, 240
- blr
-
-/* case FFI_TYPE_LONGDOUBLE */
- lfd f1, 112+0(r1)
- mtlr r0
- lfd f2, 112+8(r1)
- b L..finish
-
-/* case FFI_TYPE_UINT8 */
- lbz r3, 112+7(r1)
- mtlr r0
- addi r1, r1, 240
- blr
-
-/* case FFI_TYPE_SINT8 */
- lbz r3, 112+7(r1)
- mtlr r0
- extsb r3, r3
- b L..finish
-
-/* case FFI_TYPE_UINT16 */
- lhz r3, 112+6(r1)
- mtlr r0
-L..finish:
- addi r1, r1, 240
- blr
-
-/* case FFI_TYPE_SINT16 */
- lha r3, 112+6(r1)
- mtlr r0
- addi r1, r1, 240
- blr
-
-/* case FFI_TYPE_UINT32 */
- lwz r3, 112+4(r1)
- mtlr r0
- addi r1, r1, 240
- blr
-
-/* case FFI_TYPE_SINT32 */
- lwa r3, 112+4(r1)
- mtlr r0
- addi r1, r1, 240
- blr
-
-/* case FFI_TYPE_UINT64 */
- ld r3, 112+0(r1)
- mtlr r0
- addi r1, r1, 240
- blr
-
-/* case FFI_TYPE_SINT64 */
- ld r3, 112+0(r1)
- mtlr r0
- addi r1, r1, 240
- blr
-
-/* case FFI_TYPE_STRUCT */
- mtlr r0
- addi r1, r1, 240
- blr
- nop
-
-/* case FFI_TYPE_POINTER */
- ld r3, 112+0(r1)
- mtlr r0
- addi r1, r1, 240
- blr
-LFE..0:
-
-#else /* ! __64BIT__ */
-
- .long .ffi_closure_ASM, TOC[tc0], 0
- .csect .text[PR]
-.ffi_closure_ASM:
- .function .ffi_closure_ASM,.ffi_closure_ASM,16,044,LFE..0-LFB..0
- .bf __LINE__
- .line 1
-LFB..0:
-/* we want to build up an area for the parameters passed */
-/* in registers (both floating point and integer) */
-
- /* we store gpr 3 to gpr 10 (aligned to 4)
- in the parents outgoing area */
- stw r3, 24+(0*4)(r1)
- stw r4, 24+(1*4)(r1)
- stw r5, 24+(2*4)(r1)
- stw r6, 24+(3*4)(r1)
- mflr r0
-
- stw r7, 24+(4*4)(r1)
- stw r8, 24+(5*4)(r1)
- stw r9, 24+(6*4)(r1)
- stw r10, 24+(7*4)(r1)
- stw r0, 8(r1)
-LCFI..0:
- /* 24 Bytes (Linkage Area) */
- /* 32 Bytes (params) */
- /* 16 Bytes (result) */
- /* 104 Bytes (13*8 from FPR) */
- /* 176 Bytes */
-
- stwu r1, -176(r1) /* skip over caller save area
- keep stack aligned to 16 */
-LCFI..1:
-
- /* next save fpr 1 to fpr 13 (aligned to 8) */
- stfd f1, 72+(0*8)(r1)
- stfd f2, 72+(1*8)(r1)
- stfd f3, 72+(2*8)(r1)
- stfd f4, 72+(3*8)(r1)
- stfd f5, 72+(4*8)(r1)
- stfd f6, 72+(5*8)(r1)
- stfd f7, 72+(6*8)(r1)
- stfd f8, 72+(7*8)(r1)
- stfd f9, 72+(8*8)(r1)
- stfd f10, 72+(9*8)(r1)
- stfd f11, 72+(10*8)(r1)
- stfd f12, 72+(11*8)(r1)
- stfd f13, 72+(12*8)(r1)
-
- /* set up registers for the routine that actually does the work */
- /* get the context pointer from the trampoline */
- mr r3, r11
-
- /* now load up the pointer to the result storage */
- addi r4, r1, 56
-
- /* now load up the pointer to the saved gpr registers */
- addi r5, r1, 200
-
- /* now load up the pointer to the saved fpr registers */
- addi r6, r1, 72
-
- /* make the call */
- bl .ffi_closure_helper_DARWIN
- nop
-
-.Ldoneclosure:
-
- /* now r3 contains the return type */
- /* so use it to look up in a table */
- /* so we know how to deal with each type */
-
- /* look up the proper starting point in table */
- /* by using return type as offset */
- lhz r3, 6(r3) /* load type from return type */
- lwz r4, LC..60(2) /* get address of jump table */
- slwi r3, r3, 4 /* now multiply return type by 16 */
- lwz r0, 176+8(r1) /* load return address */
- add r3, r3, r4 /* add contents of table to table address */
- mtctr r3
- bctr /* jump to it */
-
-/* Each fragment must be exactly 16 bytes long (4 instructions).
- Align to 16 byte boundary for cache and dispatch efficiency. */
- .align 4
-
-L..60:
-/* case FFI_TYPE_VOID */
- mtlr r0
- addi r1, r1, 176
- blr
- nop
-
-/* case FFI_TYPE_INT */
- lwz r3, 56+0(r1)
- mtlr r0
- addi r1, r1, 176
- blr
-
-/* case FFI_TYPE_FLOAT */
- lfs f1, 56+0(r1)
- mtlr r0
- addi r1, r1, 176
- blr
-
-/* case FFI_TYPE_DOUBLE */
- lfd f1, 56+0(r1)
- mtlr r0
- addi r1, r1, 176
- blr
-
-/* case FFI_TYPE_LONGDOUBLE */
- lfd f1, 56+0(r1)
- mtlr r0
- lfd f2, 56+8(r1)
- b L..finish
-
-/* case FFI_TYPE_UINT8 */
- lbz r3, 56+3(r1)
- mtlr r0
- addi r1, r1, 176
- blr
-
-/* case FFI_TYPE_SINT8 */
- lbz r3, 56+3(r1)
- mtlr r0
- extsb r3, r3
- b L..finish
-
-/* case FFI_TYPE_UINT16 */
- lhz r3, 56+2(r1)
- mtlr r0
- addi r1, r1, 176
- blr
-
-/* case FFI_TYPE_SINT16 */
- lha r3, 56+2(r1)
- mtlr r0
- addi r1, r1, 176
- blr
-
-/* case FFI_TYPE_UINT32 */
- lwz r3, 56+0(r1)
- mtlr r0
- addi r1, r1, 176
- blr
-
-/* case FFI_TYPE_SINT32 */
- lwz r3, 56+0(r1)
- mtlr r0
- addi r1, r1, 176
- blr
-
-/* case FFI_TYPE_UINT64 */
- lwz r3, 56+0(r1)
- mtlr r0
- lwz r4, 56+4(r1)
- b L..finish
-
-/* case FFI_TYPE_SINT64 */
- lwz r3, 56+0(r1)
- mtlr r0
- lwz r4, 56+4(r1)
- b L..finish
-
-/* case FFI_TYPE_STRUCT */
- mtlr r0
- addi r1, r1, 176
- blr
- nop
-
-/* case FFI_TYPE_POINTER */
- lwz r3, 56+0(r1)
- mtlr r0
-L..finish:
- addi r1, r1, 176
- blr
-LFE..0:
-#endif
- .ef __LINE__
-/* END(ffi_closure_ASM) */
-
-
-.csect .text[PR]
- .align 2
- .globl ffi_go_closure_ASM
- .globl .ffi_go_closure_ASM
-.csect ffi_go_closure_ASM[DS]
-ffi_go_closure_ASM:
-#ifdef __64BIT__
- .llong .ffi_go_closure_ASM, TOC[tc0], 0
- .csect .text[PR]
-.ffi_go_closure_ASM:
- .function .ffi_go_closure_ASM,.ffi_go_closure_ASM,16,044,LFE..1-LFB..1
- .bf __LINE__
- .line 1
-LFB..1:
-/* we want to build up an area for the parameters passed */
-/* in registers (both floating point and integer) */
-
- /* we store gpr 3 to gpr 10 (aligned to 4)
- in the parents outgoing area */
- std r3, 48+(0*8)(r1)
- std r4, 48+(1*8)(r1)
- std r5, 48+(2*8)(r1)
- std r6, 48+(3*8)(r1)
- mflr r0
-
- std r7, 48+(4*8)(r1)
- std r8, 48+(5*8)(r1)
- std r9, 48+(6*8)(r1)
- std r10, 48+(7*8)(r1)
- std r0, 16(r1) /* save the return address */
-LCFI..2:
- /* 48 Bytes (Linkage Area) */
- /* 64 Bytes (params) */
- /* 16 Bytes (result) */
- /* 104 Bytes (13*8 from FPR) */
- /* 8 Bytes (alignment) */
- /* 240 Bytes */
-
- stdu r1, -240(r1) /* skip over caller save area
- keep stack aligned to 16 */
-LCFI..3:
-
- /* next save fpr 1 to fpr 13 (aligned to 8) */
- stfd f1, 128+(0*8)(r1)
- stfd f2, 128+(1*8)(r1)
- stfd f3, 128+(2*8)(r1)
- stfd f4, 128+(3*8)(r1)
- stfd f5, 128+(4*8)(r1)
- stfd f6, 128+(5*8)(r1)
- stfd f7, 128+(6*8)(r1)
- stfd f8, 128+(7*8)(r1)
- stfd f9, 128+(8*8)(r1)
- stfd f10, 128+(9*8)(r1)
- stfd f11, 128+(10*8)(r1)
- stfd f12, 128+(11*8)(r1)
- stfd f13, 128+(12*8)(r1)
-
- /* set up registers for the routine that actually does the work */
- mr r3, r11 /* go closure */
-
- /* now load up the pointer to the result storage */
- addi r4, r1, 112
-
- /* now load up the pointer to the saved gpr registers */
- addi r5, r1, 288
-
- /* now load up the pointer to the saved fpr registers */
- addi r6, r1, 128
-
- /* make the call */
- bl .ffi_go_closure_helper_DARWIN
- nop
-
- b .Ldoneclosure
-LFE..1:
-
-#else /* ! __64BIT__ */
-
- .long .ffi_go_closure_ASM, TOC[tc0], 0
- .csect .text[PR]
-.ffi_go_closure_ASM:
- .function .ffi_go_closure_ASM,.ffi_go_closure_ASM,16,044,LFE..1-LFB..1
- .bf __LINE__
- .line 1
-LFB..1:
-/* we want to build up an area for the parameters passed */
-/* in registers (both floating point and integer) */
-
- /* we store gpr 3 to gpr 10 (aligned to 4)
- in the parents outgoing area */
- stw r3, 24+(0*4)(r1)
- stw r4, 24+(1*4)(r1)
- stw r5, 24+(2*4)(r1)
- stw r6, 24+(3*4)(r1)
- mflr r0
-
- stw r7, 24+(4*4)(r1)
- stw r8, 24+(5*4)(r1)
- stw r9, 24+(6*4)(r1)
- stw r10, 24+(7*4)(r1)
- stw r0, 8(r1)
-LCFI..2:
- /* 24 Bytes (Linkage Area) */
- /* 32 Bytes (params) */
- /* 16 Bytes (result) */
- /* 104 Bytes (13*8 from FPR) */
- /* 176 Bytes */
-
- stwu r1, -176(r1) /* skip over caller save area
- keep stack aligned to 16 */
-LCFI..3:
-
- /* next save fpr 1 to fpr 13 (aligned to 8) */
- stfd f1, 72+(0*8)(r1)
- stfd f2, 72+(1*8)(r1)
- stfd f3, 72+(2*8)(r1)
- stfd f4, 72+(3*8)(r1)
- stfd f5, 72+(4*8)(r1)
- stfd f6, 72+(5*8)(r1)
- stfd f7, 72+(6*8)(r1)
- stfd f8, 72+(7*8)(r1)
- stfd f9, 72+(8*8)(r1)
- stfd f10, 72+(9*8)(r1)
- stfd f11, 72+(10*8)(r1)
- stfd f12, 72+(11*8)(r1)
- stfd f13, 72+(12*8)(r1)
-
- /* set up registers for the routine that actually does the work */
- mr r3, 11 /* go closure */
-
- /* now load up the pointer to the result storage */
- addi r4, r1, 56
-
- /* now load up the pointer to the saved gpr registers */
- addi r5, r1, 200
-
- /* now load up the pointer to the saved fpr registers */
- addi r6, r1, 72
-
- /* make the call */
- bl .ffi_go_closure_helper_DARWIN
- nop
-
- b .Ldoneclosure
-LFE..1:
-#endif
- .ef __LINE__
-/* END(ffi_go_closure_ASM) */
-
-/* EH frame stuff. */
-
-#define LR_REGNO 0x41 /* Link Register (65), see rs6000.md */
-#ifdef __64BIT__
-#define PTRSIZE 8
-#define LOG2_PTRSIZE 3
-#define CFA_OFFSET 0xf0,0x01 /* LEB128 240 */
-#define FDE_ENCODING 0x1c /* DW_EH_PE_pcrel|DW_EH_PE_sdata8 */
-#define EH_DATA_ALIGN_FACT 0x78 /* LEB128 -8 */
-#else
-#define PTRSIZE 4
-#define LOG2_PTRSIZE 2
-#define CFA_OFFSET 0xb0,0x01 /* LEB128 176 */
-#define FDE_ENCODING 0x1b /* DW_EH_PE_pcrel|DW_EH_PE_sdata4 */
-#define EH_DATA_ALIGN_FACT 0x7c /* LEB128 -4 */
-#endif
-
- .csect _unwind.ro_[RO],4
- .align LOG2_PTRSIZE
- .globl _GLOBAL__F_libffi_src_powerpc_aix_closure
-_GLOBAL__F_libffi_src_powerpc_aix_closure:
-Lframe..1:
- .vbyte 4,LECIE..1-LSCIE..1 /* CIE Length */
-LSCIE..1:
- .vbyte 4,0 /* CIE Identifier Tag */
- .byte 0x3 /* CIE Version */
- .byte "zR" /* CIE Augmentation */
- .byte 0
- .byte 0x1 /* uleb128 0x1; CIE Code Alignment Factor */
- .byte EH_DATA_ALIGN_FACT /* leb128 -4/-8; CIE Data Alignment Factor */
- .byte LR_REGNO /* CIE RA Column */
- .byte 0x1 /* uleb128 0x1; Augmentation size */
- .byte FDE_ENCODING /* FDE Encoding (pcrel|sdata4/8) */
- .byte 0xc /* DW_CFA_def_cfa */
- .byte 0x1 /* uleb128 0x1; Register r1 */
- .byte 0 /* uleb128 0x0; Offset 0 */
- .align LOG2_PTRSIZE
-LECIE..1:
-LSFDE..1:
- .vbyte 4,LEFDE..1-LASFDE..1 /* FDE Length */
-LASFDE..1:
- .vbyte 4,LASFDE..1-Lframe..1 /* FDE CIE offset */
- .vbyte PTRSIZE,LFB..0-$ /* FDE initial location */
- .vbyte PTRSIZE,LFE..0-LFB..0 /* FDE address range */
- .byte 0 /* uleb128 0x0; Augmentation size */
- .byte 0x4 /* DW_CFA_advance_loc4 */
- .vbyte 4,LCFI..1-LCFI..0
- .byte 0xe /* DW_CFA_def_cfa_offset */
- .byte CFA_OFFSET /* uleb128 176/240 */
- .byte 0x4 /* DW_CFA_advance_loc4 */
- .vbyte 4,LCFI..0-LFB..0
- .byte 0x11 /* DW_CFA_offset_extended_sf */
- .byte LR_REGNO /* uleb128 LR_REGNO; Register LR */
- .byte 0x7e /* leb128 -2; Offset -2 (8/16) */
- .align LOG2_PTRSIZE
-LEFDE..1:
-LSFDE..2:
- .vbyte 4,LEFDE..2-LASFDE..2 /* FDE Length */
-LASFDE..2:
- .vbyte 4,LASFDE..2-Lframe..1 /* FDE CIE offset */
- .vbyte PTRSIZE,LFB..1-$ /* FDE initial location */
- .vbyte PTRSIZE,LFE..1-LFB..1 /* FDE address range */
- .byte 0 /* uleb128 0x0; Augmentation size */
- .byte 0x4 /* DW_CFA_advance_loc4 */
- .vbyte 4,LCFI..3-LCFI..2
- .byte 0xe /* DW_CFA_def_cfa_offset */
- .byte CFA_OFFSET /* uleb128 176/240 */
- .byte 0x4 /* DW_CFA_advance_loc4 */
- .vbyte 4,LCFI..2-LFB..1
- .byte 0x11 /* DW_CFA_offset_extended_sf */
- .byte LR_REGNO /* uleb128 LR_REGNO; Register LR */
- .byte 0x7e /* leb128 -2; Offset -2 (8/16) */
- .align LOG2_PTRSIZE
-LEFDE..2:
- .vbyte 4,0 /* End of FDEs */
-
- .csect .text[PR]
- .ref _GLOBAL__F_libffi_src_powerpc_aix_closure /* Prevents garbage collection by AIX linker */
-
-
-
-====================File: src/powerpc/asm.h====================
-/* -----------------------------------------------------------------------
- asm.h - Copyright (c) 1998 Geoffrey Keating
-
- PowerPC Assembly glue.
-
- 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 AUTHOR 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.
- ----------------------------------------------------------------------- */
-
-#define ASM_GLOBAL_DIRECTIVE .globl
-
-
-#define C_SYMBOL_NAME(name) name
-/* Macro for a label. */
-#ifdef __STDC__
-#define C_LABEL(name) name##:
-#else
-#define C_LABEL(name) name/**/:
-#endif
-
-/* This seems to always be the case on PPC. */
-#define ALIGNARG(log2) log2
-/* For ELF we need the `.type' directive to make shared libs work right. */
-#define ASM_TYPE_DIRECTIVE(name,typearg) .type name,typearg;
-#define ASM_SIZE_DIRECTIVE(name) .size name,.-name
-
-/* If compiled for profiling, call `_mcount' at the start of each function. */
-#ifdef PROF
-/* The mcount code relies on the return address being on the stack
- to locate our caller and so it can restore it; so store one just
- for its benefit. */
-#ifdef PIC
-#define CALL_MCOUNT \
- .pushsection; \
- .section ".data"; \
- .align ALIGNARG(2); \
-0:.long 0; \
- .previous; \
- mflr %r0; \
- stw %r0,4(%r1); \
- bl _GLOBAL_OFFSET_TABLE_@local-4; \
- mflr %r11; \
- lwz %r0,0b@got(%r11); \
- bl JUMPTARGET(_mcount);
-#else /* PIC */
-#define CALL_MCOUNT \
- .section ".data"; \
- .align ALIGNARG(2); \
-0:.long 0; \
- .previous; \
- mflr %r0; \
- lis %r11,0b@ha; \
- stw %r0,4(%r1); \
- addi %r0,%r11,0b@l; \
- bl JUMPTARGET(_mcount);
-#endif /* PIC */
-#else /* PROF */
-#define CALL_MCOUNT /* Do nothing. */
-#endif /* PROF */
-
-#define ENTRY(name) \
- ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(name); \
- ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \
- .align ALIGNARG(2); \
- C_LABEL(name) \
- CALL_MCOUNT
-
-#define EALIGN_W_0 /* No words to insert. */
-#define EALIGN_W_1 nop
-#define EALIGN_W_2 nop;nop
-#define EALIGN_W_3 nop;nop;nop
-#define EALIGN_W_4 EALIGN_W_3;nop
-#define EALIGN_W_5 EALIGN_W_4;nop
-#define EALIGN_W_6 EALIGN_W_5;nop
-#define EALIGN_W_7 EALIGN_W_6;nop
-
-/* EALIGN is like ENTRY, but does alignment to 'words'*4 bytes
- past a 2^align boundary. */
-#ifdef PROF
-#define EFFI_ALIGN(name, alignt, words) \
- ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(name); \
- ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \
- .align ALIGNARG(2); \
- C_LABEL(name) \
- CALL_MCOUNT \
- b 0f; \
- .align ALIGNARG(alignt); \
- EALIGN_W_##words; \
- 0:
-#else /* PROF */
-#define EFFI_ALIGN(name, alignt, words) \
- ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(name); \
- ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \
- .align ALIGNARG(alignt); \
- EALIGN_W_##words; \
- C_LABEL(name)
-#endif
-
-#define END(name) \
- ASM_SIZE_DIRECTIVE(name)
-
-#ifdef PIC
-#define JUMPTARGET(name) name##@plt
-#else
-#define JUMPTARGET(name) name
-#endif
-
-/* Local labels stripped out by the linker. */
-#define L(x) .L##x
-
-
-====================File: src/powerpc/darwin.S====================
-/* -----------------------------------------------------------------------
- darwin.S - Copyright (c) 2000 John Hornkvist
- Copyright (c) 2004, 2010 Free Software Foundation, Inc.
-
- PowerPC Assembly glue.
-
- 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 AUTHOR 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.
- ----------------------------------------------------------------------- */
-
-#define LIBFFI_ASM
-#if defined(__ppc64__)
-#define MODE_CHOICE(x, y) y
-#else
-#define MODE_CHOICE(x, y) x
-#endif
-
-#define machine_choice MODE_CHOICE(ppc7400,ppc64)
-
-; Define some pseudo-opcodes for size-independent load & store of GPRs ...
-#define lgu MODE_CHOICE(lwzu, ldu)
-#define lg MODE_CHOICE(lwz,ld)
-#define sg MODE_CHOICE(stw,std)
-#define sgu MODE_CHOICE(stwu,stdu)
-#define sgux MODE_CHOICE(stwux,stdux)
-
-; ... and the size of GPRs and their storage indicator.
-#define GPR_BYTES MODE_CHOICE(4,8)
-#define LOG2_GPR_BYTES MODE_CHOICE(2,3) /* log2(GPR_BYTES) */
-#define g_long MODE_CHOICE(long, quad) /* usage is ".g_long" */
-
-; From the ABI doc: "Mac OS X ABI Function Call Guide" Version 2009-02-04.
-#define LINKAGE_SIZE MODE_CHOICE(24,48)
-#define PARAM_AREA MODE_CHOICE(32,64)
-#define SAVED_LR_OFFSET MODE_CHOICE(8,16) /* save position for lr */
-
-/* If there is any FP stuff we make space for all of the regs. */
-#define SAVED_FPR_COUNT 13
-#define FPR_SIZE 8
-#define RESULT_BYTES 16
-
-/* This should be kept in step with the same value in ffi_darwin.c. */
-#define ASM_NEEDS_REGISTERS 4
-#define SAVE_REGS_SIZE (ASM_NEEDS_REGISTERS * GPR_BYTES)
-
-#include <fficonfig.h>
-#include <ffi.h>
-
-#define JUMPTARGET(name) name
-#define L(x) x
-
- .text
- .align 2
- .globl _ffi_prep_args
-
- .align 2
- .globl _ffi_call_DARWIN
-
- /* We arrive here with:
- r3 = ptr to extended cif.
- r4 = -bytes.
- r5 = cif flags.
- r6 = ptr to return value.
- r7 = fn pointer (user func).
- r8 = fn pointer (ffi_prep_args).
- r9 = ffi_type* for the ret val. */
-
-_ffi_call_DARWIN:
-Lstartcode:
- mr r12,r8 /* We only need r12 until the call,
- so it does not have to be saved. */
-LFB1:
- /* Save the old stack pointer as AP. */
- mr r8,r1
-LCFI0:
-
- /* Save the retval type in parents frame. */
- sg r9,(LINKAGE_SIZE+6*GPR_BYTES)(r8)
-
- /* Allocate the stack space we need. */
- sgux r1,r1,r4
-
- /* Save registers we use. */
- mflr r9
- sg r9,SAVED_LR_OFFSET(r8)
-
- sg r28,-(4 * GPR_BYTES)(r8)
- sg r29,-(3 * GPR_BYTES)(r8)
- sg r30,-(2 * GPR_BYTES)(r8)
- sg r31,-( GPR_BYTES)(r8)
-
-#if !defined(POWERPC_DARWIN)
- /* The TOC slot is reserved in the Darwin ABI and r2 is volatile. */
- sg r2,(5 * GPR_BYTES)(r1)
-#endif
-
-LCFI1:
-
- /* Save arguments over call. */
- mr r31,r5 /* flags, */
- mr r30,r6 /* rvalue, */
- mr r29,r7 /* function address, */
- mr r28,r8 /* our AP. */
-LCFI2:
- /* Call ffi_prep_args. r3 = extended cif, r4 = stack ptr copy. */
- mr r4,r1
- li r9,0
-
- mtctr r12 /* r12 holds address of _ffi_prep_args. */
- bctrl
-
-#if !defined(POWERPC_DARWIN)
- /* The TOC slot is reserved in the Darwin ABI and r2 is volatile. */
- lg r2,(5 * GPR_BYTES)(r1)
-#endif
- /* Now do the call.
- Set up cr1 with bits 4-7 of the flags. */
- mtcrf 0x40,r31
- /* Get the address to call into CTR. */
- mtctr r29
- /* Load all those argument registers.
- We have set up a nice stack frame, just load it into registers. */
- lg r3, (LINKAGE_SIZE )(r1)
- lg r4, (LINKAGE_SIZE + GPR_BYTES)(r1)
- lg r5, (LINKAGE_SIZE + 2 * GPR_BYTES)(r1)
- lg r6, (LINKAGE_SIZE + 3 * GPR_BYTES)(r1)
- nop
- lg r7, (LINKAGE_SIZE + 4 * GPR_BYTES)(r1)
- lg r8, (LINKAGE_SIZE + 5 * GPR_BYTES)(r1)
- lg r9, (LINKAGE_SIZE + 6 * GPR_BYTES)(r1)
- lg r10,(LINKAGE_SIZE + 7 * GPR_BYTES)(r1)
-
-L1:
- /* ... Load all the FP registers. */
- bf 6,L2 /* No floats to load. */
- lfd f1, -SAVE_REGS_SIZE-(13*FPR_SIZE)(r28)
- lfd f2, -SAVE_REGS_SIZE-(12*FPR_SIZE)(r28)
- lfd f3, -SAVE_REGS_SIZE-(11*FPR_SIZE)(r28)
- lfd f4, -SAVE_REGS_SIZE-(10*FPR_SIZE)(r28)
- nop
- lfd f5, -SAVE_REGS_SIZE-( 9*FPR_SIZE)(r28)
- lfd f6, -SAVE_REGS_SIZE-( 8*FPR_SIZE)(r28)
- lfd f7, -SAVE_REGS_SIZE-( 7*FPR_SIZE)(r28)
- lfd f8, -SAVE_REGS_SIZE-( 6*FPR_SIZE)(r28)
- nop
- lfd f9, -SAVE_REGS_SIZE-( 5*FPR_SIZE)(r28)
- lfd f10,-SAVE_REGS_SIZE-( 4*FPR_SIZE)(r28)
- lfd f11,-SAVE_REGS_SIZE-( 3*FPR_SIZE)(r28)
- lfd f12,-SAVE_REGS_SIZE-( 2*FPR_SIZE)(r28)
- nop
- lfd f13,-SAVE_REGS_SIZE-( 1*FPR_SIZE)(r28)
-
-L2:
- mr r12,r29 /* Put the target address in r12 as specified. */
- mtctr r12
- nop
- nop
-
- /* Make the call. */
- bctrl
-
- /* Now, deal with the return value. */
-
- /* m64 structure returns can occupy the same set of registers as
- would be used to pass such a structure as arg0 - so take care
- not to step on any possibly hot regs. */
-
- /* Get the flags.. */
- mtcrf 0x03,r31 ; we need c6 & cr7 now.
- ; FLAG_RETURNS_NOTHING also covers struct ret-by-ref.
- bt 30,L(done_return_value) ; FLAG_RETURNS_NOTHING
- bf 27,L(scalar_return_value) ; not FLAG_RETURNS_STRUCT
-
- /* OK, so we have a struct. */
-#if defined(__ppc64__)
- bt 31,L(maybe_return_128) ; FLAG_RETURNS_128BITS, special case
-
- /* OK, we have to map the return back to a mem struct.
- We are about to trample the parents param area, so recover the
- return type. r29 is free, since the call is done. */
- lg r29,(LINKAGE_SIZE + 6 * GPR_BYTES)(r28)
-
- sg r3, (LINKAGE_SIZE )(r28)
- sg r4, (LINKAGE_SIZE + GPR_BYTES)(r28)
- sg r5, (LINKAGE_SIZE + 2 * GPR_BYTES)(r28)
- sg r6, (LINKAGE_SIZE + 3 * GPR_BYTES)(r28)
- nop
- sg r7, (LINKAGE_SIZE + 4 * GPR_BYTES)(r28)
- sg r8, (LINKAGE_SIZE + 5 * GPR_BYTES)(r28)
- sg r9, (LINKAGE_SIZE + 6 * GPR_BYTES)(r28)
- sg r10,(LINKAGE_SIZE + 7 * GPR_BYTES)(r28)
- /* OK, so do the block move - we trust that memcpy will not trample
- the fprs... */
- mr r3,r30 ; dest
- addi r4,r28,LINKAGE_SIZE ; source
- /* The size is a size_t, should be long. */
- lg r5,0(r29)
- /* Figure out small structs */
- cmpi 0,r5,4
- bgt L3 ; 1, 2 and 4 bytes have special rules.
- cmpi 0,r5,3
- beq L3 ; not 3
- addi r4,r4,8
- subf r4,r5,r4
-L3:
- bl _memcpy
-
- /* ... do we need the FP registers? - recover the flags.. */
- mtcrf 0x03,r31 ; we need c6 & cr7 now.
- bf 29,L(done_return_value) /* No floats in the struct. */
- stfd f1, -SAVE_REGS_SIZE-(13*FPR_SIZE)(r28)
- stfd f2, -SAVE_REGS_SIZE-(12*FPR_SIZE)(r28)
- stfd f3, -SAVE_REGS_SIZE-(11*FPR_SIZE)(r28)
- stfd f4, -SAVE_REGS_SIZE-(10*FPR_SIZE)(r28)
- nop
- stfd f5, -SAVE_REGS_SIZE-( 9*FPR_SIZE)(r28)
- stfd f6, -SAVE_REGS_SIZE-( 8*FPR_SIZE)(r28)
- stfd f7, -SAVE_REGS_SIZE-( 7*FPR_SIZE)(r28)
- stfd f8, -SAVE_REGS_SIZE-( 6*FPR_SIZE)(r28)
- nop
- stfd f9, -SAVE_REGS_SIZE-( 5*FPR_SIZE)(r28)
- stfd f10,-SAVE_REGS_SIZE-( 4*FPR_SIZE)(r28)
- stfd f11,-SAVE_REGS_SIZE-( 3*FPR_SIZE)(r28)
- stfd f12,-SAVE_REGS_SIZE-( 2*FPR_SIZE)(r28)
- nop
- stfd f13,-SAVE_REGS_SIZE-( 1*FPR_SIZE)(r28)
-
- mr r3,r29 ; ffi_type *
- mr r4,r30 ; dest
- addi r5,r28,-SAVE_REGS_SIZE-(13*FPR_SIZE) ; fprs
- xor r6,r6,r6
- sg r6,(LINKAGE_SIZE + 7 * GPR_BYTES)(r28)
- addi r6,r28,(LINKAGE_SIZE + 7 * GPR_BYTES) ; point to a zeroed counter.
- bl _darwin64_struct_floats_to_mem
-
- b L(done_return_value)
-#else
- stw r3,0(r30) ; m32 the only struct return in reg is 4 bytes.
-#endif
- b L(done_return_value)
-
-L(fp_return_value):
- /* Do we have long double to store? */
- bf 31,L(fd_return_value) ; FLAG_RETURNS_128BITS
- stfd f1,0(r30)
- stfd f2,FPR_SIZE(r30)
- b L(done_return_value)
-
-L(fd_return_value):
- /* Do we have double to store? */
- bf 28,L(float_return_value)
- stfd f1,0(r30)
- b L(done_return_value)
-
-L(float_return_value):
- /* We only have a float to store. */
- stfs f1,0(r30)
- b L(done_return_value)
-
-L(scalar_return_value):
- bt 29,L(fp_return_value) ; FLAG_RETURNS_FP
- ; ffi_arg is defined as unsigned long.
- sg r3,0(r30) ; Save the reg.
- bf 28,L(done_return_value) ; not FLAG_RETURNS_64BITS
-
-#if defined(__ppc64__)
-L(maybe_return_128):
- std r3,0(r30)
- bf 31,L(done_return_value) ; not FLAG_RETURNS_128BITS
- std r4,8(r30)
-#else
- stw r4,4(r30)
-#endif
-
- /* Fall through. */
- /* We want this at the end to simplify eh epilog computation. */
-
-L(done_return_value):
- /* Restore the registers we used and return. */
- lg r29,SAVED_LR_OFFSET(r28)
- ; epilog
- lg r31,-(1 * GPR_BYTES)(r28)
- mtlr r29
- lg r30,-(2 * GPR_BYTES)(r28)
- lg r29,-(3 * GPR_BYTES)(r28)
- lg r28,-(4 * GPR_BYTES)(r28)
- lg r1,0(r1)
- blr
-LFE1:
- .align 1
-/* END(_ffi_call_DARWIN) */
-
-/* Provide a null definition of _ffi_call_AIX. */
- .text
- .globl _ffi_call_AIX
- .align 2
-_ffi_call_AIX:
- blr
-/* END(_ffi_call_AIX) */
-
-/* EH stuff. */
-
-#define EH_DATA_ALIGN_FACT MODE_CHOICE(0x7c,0x78)
-
- .section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support
-EH_frame1:
- .set L$set$0,LECIE1-LSCIE1
- .long L$set$0 ; Length of Common Information Entry
-LSCIE1:
- .long 0x0 ; CIE Identifier Tag
- .byte 0x1 ; CIE Version
- .ascii "zR\0" ; CIE Augmentation
- .byte 0x1 ; uleb128 0x1; CIE Code Alignment Factor
- .byte EH_DATA_ALIGN_FACT ; sleb128 -4; CIE Data Alignment Factor
- .byte 0x41 ; CIE RA Column
- .byte 0x1 ; uleb128 0x1; Augmentation size
- .byte 0x10 ; FDE Encoding (pcrel)
- .byte 0xc ; DW_CFA_def_cfa
- .byte 0x1 ; uleb128 0x1
- .byte 0x0 ; uleb128 0x0
- .align LOG2_GPR_BYTES
-LECIE1:
-
- .globl _ffi_call_DARWIN.eh
-_ffi_call_DARWIN.eh:
-LSFDE1:
- .set L$set$1,LEFDE1-LASFDE1
- .long L$set$1 ; FDE Length
-LASFDE1:
- .long LASFDE1-EH_frame1 ; FDE CIE offset
- .g_long Lstartcode-. ; FDE initial location
- .set L$set$3,LFE1-Lstartcode
- .g_long L$set$3 ; FDE address range
- .byte 0x0 ; uleb128 0x0; Augmentation size
- .byte 0x4 ; DW_CFA_advance_loc4
- .set L$set$4,LCFI0-Lstartcode
- .long L$set$4
- .byte 0xd ; DW_CFA_def_cfa_register
- .byte 0x08 ; uleb128 0x08
- .byte 0x4 ; DW_CFA_advance_loc4
- .set L$set$5,LCFI1-LCFI0
- .long L$set$5
- .byte 0x11 ; DW_CFA_offset_extended_sf
- .byte 0x41 ; uleb128 0x41
- .byte 0x7e ; sleb128 -2
- .byte 0x9f ; DW_CFA_offset, column 0x1f
- .byte 0x1 ; uleb128 0x1
- .byte 0x9e ; DW_CFA_offset, column 0x1e
- .byte 0x2 ; uleb128 0x2
- .byte 0x9d ; DW_CFA_offset, column 0x1d
- .byte 0x3 ; uleb128 0x3
- .byte 0x9c ; DW_CFA_offset, column 0x1c
- .byte 0x4 ; uleb128 0x4
- .byte 0x4 ; DW_CFA_advance_loc4
- .set L$set$6,LCFI2-LCFI1
- .long L$set$6
- .byte 0xd ; DW_CFA_def_cfa_register
- .byte 0x1c ; uleb128 0x1c
- .align LOG2_GPR_BYTES
-LEFDE1:
- .align 1
-
-
-
-====================File: src/powerpc/darwin_closure.S====================
-/* -----------------------------------------------------------------------
- darwin_closure.S - Copyright (c) 2002, 2003, 2004, 2010,
- Free Software Foundation, Inc.
- based on ppc_closure.S
-
- PowerPC Assembly glue.
-
- 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 AUTHOR 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.
- ----------------------------------------------------------------------- */
-
-#define LIBFFI_ASM
-#define L(x) x
-
-#if defined(__ppc64__)
-#define MODE_CHOICE(x, y) y
-#else
-#define MODE_CHOICE(x, y) x
-#endif
-
-#define machine_choice MODE_CHOICE(ppc7400,ppc64)
-
-; Define some pseudo-opcodes for size-independent load & store of GPRs ...
-#define lgu MODE_CHOICE(lwzu, ldu)
-#define lg MODE_CHOICE(lwz,ld)
-#define sg MODE_CHOICE(stw,std)
-#define sgu MODE_CHOICE(stwu,stdu)
-
-; ... and the size of GPRs and their storage indicator.
-#define GPR_BYTES MODE_CHOICE(4,8)
-#define LOG2_GPR_BYTES MODE_CHOICE(2,3) /* log2(GPR_BYTES) */
-#define g_long MODE_CHOICE(long, quad) /* usage is ".g_long" */
-
-; From the ABI doc: "Mac OS X ABI Function Call Guide" Version 2009-02-04.
-#define LINKAGE_SIZE MODE_CHOICE(24,48)
-#define PARAM_AREA MODE_CHOICE(32,64)
-
-#define SAVED_CR_OFFSET MODE_CHOICE(4,8) /* save position for CR */
-#define SAVED_LR_OFFSET MODE_CHOICE(8,16) /* save position for lr */
-
-/* WARNING: if ffi_type is changed... here be monsters.
- Offsets of items within the result type. */
-#define FFI_TYPE_TYPE MODE_CHOICE(6,10)
-#define FFI_TYPE_ELEM MODE_CHOICE(8,16)
-
-#define SAVED_FPR_COUNT 13
-#define FPR_SIZE 8
-/* biggest m64 struct ret is 8GPRS + 13FPRS = 168 bytes - rounded to 16bytes = 176. */
-#define RESULT_BYTES MODE_CHOICE(16,176)
-
-; The whole stack frame **MUST** be 16byte-aligned.
-#define SAVE_SIZE (((LINKAGE_SIZE+PARAM_AREA+SAVED_FPR_COUNT*FPR_SIZE+RESULT_BYTES)+15) & -16LL)
-#define PAD_SIZE (SAVE_SIZE-(LINKAGE_SIZE+PARAM_AREA+SAVED_FPR_COUNT*FPR_SIZE+RESULT_BYTES))
-
-#define PARENT_PARM_BASE (SAVE_SIZE+LINKAGE_SIZE)
-#define FP_SAVE_BASE (LINKAGE_SIZE+PARAM_AREA)
-
-#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1050
-; We no longer need the pic symbol stub for Darwin >= 9.
-#define BLCLS_HELP _ffi_closure_helper_DARWIN
-#define STRUCT_RETVALUE_P _darwin64_struct_ret_by_value_p
-#define PASS_STR_FLOATS _darwin64_pass_struct_floats
-#undef WANT_STUB
-#else
-#define BLCLS_HELP L_ffi_closure_helper_DARWIN$stub
-#define STRUCT_RETVALUE_P L_darwin64_struct_ret_by_value_p$stub
-#define PASS_STR_FLOATS L_darwin64_pass_struct_floats$stub
-#define WANT_STUB
-#endif
-
-/* m32/m64
-
- The stack layout looks like this:
-
- | Additional params... | | Higher address
- ~ ~ ~
- | Parameters (at least 8*4/8=32/64) | | NUM_GPR_ARG_REGISTERS
- |--------------------------------------------| |
- | TOC=R2 (AIX) Reserved (Darwin) 4/8 | |
- |--------------------------------------------| |
- | Reserved 2*4/8 | |
- |--------------------------------------------| |
- | Space for callee`s LR 4/8 | |
- |--------------------------------------------| |
- | Saved CR [low word for m64] 4/8 | |
- |--------------------------------------------| |
- | Current backchain pointer 4/8 |-/ Parent`s frame.
- |--------------------------------------------| <+ <<< on entry to
- | Result Bytes 16/176 | |
- |--------------------------------------------| |
- ~ padding to 16-byte alignment ~ ~
- |--------------------------------------------| |
- | NUM_FPR_ARG_REGISTERS slots | |
- | here fp13 .. fp1 13*8 | |
- |--------------------------------------------| |
- | R3..R10 8*4/8=32/64 | | NUM_GPR_ARG_REGISTERS
- |--------------------------------------------| |
- | TOC=R2 (AIX) Reserved (Darwin) 4/8 | |
- |--------------------------------------------| | stack |
- | Reserved [compiler,binder] 2*4/8 | | grows |
- |--------------------------------------------| | down V
- | Space for callees LR 4/8 | |
- |--------------------------------------------| | lower addresses
- | Saved CR [low word for m64] 4/8 | |
- |--------------------------------------------| | stack pointer here
- | Current backchain pointer 4/8 |-/ during
- |--------------------------------------------| <<< call.
-
-*/
-
- .file "darwin_closure.S"
-
- .machine machine_choice
-
- .text
- .globl _ffi_closure_ASM
- .align LOG2_GPR_BYTES
-_ffi_closure_ASM:
-LFB1:
-Lstartcode:
- mflr r0 /* extract return address */
- sg r0,SAVED_LR_OFFSET(r1) /* save the return address */
-LCFI0:
- sgu r1,-SAVE_SIZE(r1) /* skip over caller save area
- keep stack aligned to 16. */
-LCFI1:
- /* We want to build up an area for the parameters passed
- in registers. (both floating point and integer) */
-
- /* Put gpr 3 to gpr 10 in the parents outgoing area...
- ... the remainder of any params that overflowed the regs will
- follow here. */
- sg r3, (PARENT_PARM_BASE )(r1)
- sg r4, (PARENT_PARM_BASE + GPR_BYTES )(r1)
- sg r5, (PARENT_PARM_BASE + GPR_BYTES * 2)(r1)
- sg r6, (PARENT_PARM_BASE + GPR_BYTES * 3)(r1)
- sg r7, (PARENT_PARM_BASE + GPR_BYTES * 4)(r1)
- sg r8, (PARENT_PARM_BASE + GPR_BYTES * 5)(r1)
- sg r9, (PARENT_PARM_BASE + GPR_BYTES * 6)(r1)
- sg r10,(PARENT_PARM_BASE + GPR_BYTES * 7)(r1)
-
- /* We save fpr 1 to fpr 14 in our own save frame. */
- stfd f1, (FP_SAVE_BASE )(r1)
- stfd f2, (FP_SAVE_BASE + FPR_SIZE )(r1)
- stfd f3, (FP_SAVE_BASE + FPR_SIZE * 2 )(r1)
- stfd f4, (FP_SAVE_BASE + FPR_SIZE * 3 )(r1)
- stfd f5, (FP_SAVE_BASE + FPR_SIZE * 4 )(r1)
- stfd f6, (FP_SAVE_BASE + FPR_SIZE * 5 )(r1)
- stfd f7, (FP_SAVE_BASE + FPR_SIZE * 6 )(r1)
- stfd f8, (FP_SAVE_BASE + FPR_SIZE * 7 )(r1)
- stfd f9, (FP_SAVE_BASE + FPR_SIZE * 8 )(r1)
- stfd f10,(FP_SAVE_BASE + FPR_SIZE * 9 )(r1)
- stfd f11,(FP_SAVE_BASE + FPR_SIZE * 10)(r1)
- stfd f12,(FP_SAVE_BASE + FPR_SIZE * 11)(r1)
- stfd f13,(FP_SAVE_BASE + FPR_SIZE * 12)(r1)
-
- /* Set up registers for the routine that actually does the work
- get the context pointer from the trampoline. */
- mr r3,r11
-
- /* Now load up the pointer to the result storage. */
- addi r4,r1,(SAVE_SIZE-RESULT_BYTES)
-
- /* Now load up the pointer to the saved gpr registers. */
- addi r5,r1,PARENT_PARM_BASE
-
- /* Now load up the pointer to the saved fpr registers. */
- addi r6,r1,FP_SAVE_BASE
-
- /* Make the call. */
- bl BLCLS_HELP
-
- /* r3 contains the rtype pointer... save it since we will need
- it later. */
- sg r3,LINKAGE_SIZE(r1) ; ffi_type * result_type
- lg r0,0(r3) ; size => r0
- lhz r3,FFI_TYPE_TYPE(r3) ; type => r3
-
- /* The helper will have intercepted structure returns and inserted
- the caller`s destination address for structs returned by ref. */
-
- /* r3 contains the return type so use it to look up in a table
- so we know how to deal with each type. */
-
- addi r5,r1,(SAVE_SIZE-RESULT_BYTES) /* Otherwise, our return is here. */
- bl Lget_ret_type0_addr /* Get pointer to Lret_type0 into LR. */
- mflr r4 /* Move to r4. */
- slwi r3,r3,4 /* Now multiply return type by 16. */
- add r3,r3,r4 /* Add contents of table to table address. */
- mtctr r3
- bctr /* Jump to it. */
-LFE1:
-/* Each of the ret_typeX code fragments has to be exactly 16 bytes long
- (4 instructions). For cache effectiveness we align to a 16 byte boundary
- first. */
-
- .align 4
-
- nop
- nop
- nop
-Lget_ret_type0_addr:
- blrl
-
-/* case FFI_TYPE_VOID */
-Lret_type0:
- b Lfinish
- nop
- nop
- nop
-
-/* case FFI_TYPE_INT */
-Lret_type1:
- lg r3,0(r5)
- b Lfinish
- nop
- nop
-
-/* case FFI_TYPE_FLOAT */
-Lret_type2:
- lfs f1,0(r5)
- b Lfinish
- nop
- nop
-
-/* case FFI_TYPE_DOUBLE */
-Lret_type3:
- lfd f1,0(r5)
- b Lfinish
- nop
- nop
-
-/* case FFI_TYPE_LONGDOUBLE */
-Lret_type4:
- lfd f1,0(r5)
- lfd f2,8(r5)
- b Lfinish
- nop
-
-/* case FFI_TYPE_UINT8 */
-Lret_type5:
-#if defined(__ppc64__)
- lbz r3,7(r5)
-#else
- lbz r3,3(r5)
-#endif
- b Lfinish
- nop
- nop
-
-/* case FFI_TYPE_SINT8 */
-Lret_type6:
-#if defined(__ppc64__)
- lbz r3,7(r5)
-#else
- lbz r3,3(r5)
-#endif
- extsb r3,r3
- b Lfinish
- nop
-
-/* case FFI_TYPE_UINT16 */
-Lret_type7:
-#if defined(__ppc64__)
- lhz r3,6(r5)
-#else
- lhz r3,2(r5)
-#endif
- b Lfinish
- nop
- nop
-
-/* case FFI_TYPE_SINT16 */
-Lret_type8:
-#if defined(__ppc64__)
- lha r3,6(r5)
-#else
- lha r3,2(r5)
-#endif
- b Lfinish
- nop
- nop
-
-/* case FFI_TYPE_UINT32 */
-Lret_type9:
-#if defined(__ppc64__)
- lwz r3,4(r5)
-#else
- lwz r3,0(r5)
-#endif
- b Lfinish
- nop
- nop
-
-/* case FFI_TYPE_SINT32 */
-Lret_type10:
-#if defined(__ppc64__)
- lwz r3,4(r5)
-#else
- lwz r3,0(r5)
-#endif
- b Lfinish
- nop
- nop
-
-/* case FFI_TYPE_UINT64 */
-Lret_type11:
-#if defined(__ppc64__)
- lg r3,0(r5)
- b Lfinish
- nop
-#else
- lwz r3,0(r5)
- lwz r4,4(r5)
- b Lfinish
-#endif
- nop
-
-/* case FFI_TYPE_SINT64 */
-Lret_type12:
-#if defined(__ppc64__)
- lg r3,0(r5)
- b Lfinish
- nop
-#else
- lwz r3,0(r5)
- lwz r4,4(r5)
- b Lfinish
-#endif
- nop
-
-/* case FFI_TYPE_STRUCT */
-Lret_type13:
-#if defined(__ppc64__)
- lg r3,0(r5) ; we need at least this...
- cmpi 0,r0,4
- bgt Lstructend ; not a special small case
- b Lsmallstruct ; see if we need more.
-#else
- cmpwi 0,r0,4
- bgt Lfinish ; not by value
- lg r3,0(r5)
- b Lfinish
-#endif
-/* case FFI_TYPE_POINTER */
-Lret_type14:
- lg r3,0(r5)
- b Lfinish
- nop
- nop
-
-#if defined(__ppc64__)
-Lsmallstruct:
- beq Lfour ; continuation of Lret13.
- cmpi 0,r0,3
- beq Lfinish ; don`t adjust this - can`t be any floats here...
- srdi r3,r3,48
- cmpi 0,r0,2
- beq Lfinish ; .. or here ..
- srdi r3,r3,8
- b Lfinish ; .. or here.
-
-Lfour:
- lg r6,LINKAGE_SIZE(r1) ; get the result type
- lg r6,FFI_TYPE_ELEM(r6) ; elements array pointer
- lg r6,0(r6) ; first element
- lhz r0,FFI_TYPE_TYPE(r6) ; OK go the type
- cmpi 0,r0,2 ; FFI_TYPE_FLOAT
- bne Lfourint
- lfs f1,0(r5) ; just one float in the struct.
- b Lfinish
-
-Lfourint:
- srdi r3,r3,32 ; four bytes.
- b Lfinish
-
-Lstructend:
- lg r3,LINKAGE_SIZE(r1) ; get the result type
- bl STRUCT_RETVALUE_P
- cmpi 0,r3,0
- beq Lfinish ; nope.
- /* Recover a pointer to the results. */
- addi r11,r1,(SAVE_SIZE-RESULT_BYTES)
- lg r3,0(r11) ; we need at least this...
- lg r4,8(r11)
- cmpi 0,r0,16
- beq Lfinish ; special case 16 bytes we don't consider floats.
-
- /* OK, frustratingly, the process of saving the struct to mem might have
- messed with the FPRs, so we have to re-load them :(.
- We`ll use our FPRs space again - calling:
- void darwin64_pass_struct_floats (ffi_type *s, char *src,
- unsigned *nfpr, double **fprs)
- We`ll temporarily pinch the first two slots of the param area for local
- vars used by the routine. */
- xor r6,r6,r6
- addi r5,r1,PARENT_PARM_BASE ; some space
- sg r6,0(r5) ; *nfpr zeroed.
- addi r6,r5,8 ; **fprs
- addi r3,r1,FP_SAVE_BASE ; pointer to FPRs space
- sg r3,0(r6)
- mr r4,r11 ; the struct is here...
- lg r3,LINKAGE_SIZE(r1) ; ffi_type * result_type.
- bl PASS_STR_FLOATS ; get struct floats into FPR save space.
- /* See if we used any floats */
- lwz r0,(SAVE_SIZE-RESULT_BYTES)(r1)
- cmpi 0,r0,0
- beq Lstructints ; nope.
- /* OK load `em up... */
- lfd f1, (FP_SAVE_BASE )(r1)
- lfd f2, (FP_SAVE_BASE + FPR_SIZE )(r1)
- lfd f3, (FP_SAVE_BASE + FPR_SIZE * 2 )(r1)
- lfd f4, (FP_SAVE_BASE + FPR_SIZE * 3 )(r1)
- lfd f5, (FP_SAVE_BASE + FPR_SIZE * 4 )(r1)
- lfd f6, (FP_SAVE_BASE + FPR_SIZE * 5 )(r1)
- lfd f7, (FP_SAVE_BASE + FPR_SIZE * 6 )(r1)
- lfd f8, (FP_SAVE_BASE + FPR_SIZE * 7 )(r1)
- lfd f9, (FP_SAVE_BASE + FPR_SIZE * 8 )(r1)
- lfd f10,(FP_SAVE_BASE + FPR_SIZE * 9 )(r1)
- lfd f11,(FP_SAVE_BASE + FPR_SIZE * 10)(r1)
- lfd f12,(FP_SAVE_BASE + FPR_SIZE * 11)(r1)
- lfd f13,(FP_SAVE_BASE + FPR_SIZE * 12)(r1)
-
- /* point back at our saved struct. */
-Lstructints:
- addi r11,r1,(SAVE_SIZE-RESULT_BYTES)
- lg r3,0(r11) ; we end up picking the
- lg r4,8(r11) ; first two again.
- lg r5,16(r11)
- lg r6,24(r11)
- lg r7,32(r11)
- lg r8,40(r11)
- lg r9,48(r11)
- lg r10,56(r11)
-#endif
-
-/* case done */
-Lfinish:
- addi r1,r1,SAVE_SIZE /* Restore stack pointer. */
- lg r0,SAVED_LR_OFFSET(r1) /* Get return address. */
- mtlr r0 /* Reset link register. */
- blr
-Lendcode:
- .align 1
-
-/* END(ffi_closure_ASM) */
-
-/* EH frame stuff. */
-#define EH_DATA_ALIGN_FACT MODE_CHOICE(0x7c,0x78)
-/* 176, 400 */
-#define EH_FRAME_OFFSETA MODE_CHOICE(176,0x90)
-#define EH_FRAME_OFFSETB MODE_CHOICE(1,3)
-
- .section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support
-EH_frame1:
- .set L$set$0,LECIE1-LSCIE1
- .long L$set$0 ; Length of Common Information Entry
-LSCIE1:
- .long 0x0 ; CIE Identifier Tag
- .byte 0x1 ; CIE Version
- .ascii "zR\0" ; CIE Augmentation
- .byte 0x1 ; uleb128 0x1; CIE Code Alignment Factor
- .byte EH_DATA_ALIGN_FACT ; sleb128 -4; CIE Data Alignment Factor
- .byte 0x41 ; CIE RA Column
- .byte 0x1 ; uleb128 0x1; Augmentation size
- .byte 0x10 ; FDE Encoding (pcrel)
- .byte 0xc ; DW_CFA_def_cfa
- .byte 0x1 ; uleb128 0x1
- .byte 0x0 ; uleb128 0x0
- .align LOG2_GPR_BYTES
-LECIE1:
- .globl _ffi_closure_ASM.eh
-_ffi_closure_ASM.eh:
-LSFDE1:
- .set L$set$1,LEFDE1-LASFDE1
- .long L$set$1 ; FDE Length
-
-LASFDE1:
- .long LASFDE1-EH_frame1 ; FDE CIE offset
- .g_long Lstartcode-. ; FDE initial location
- .set L$set$2,LFE1-Lstartcode
- .g_long L$set$2 ; FDE address range
- .byte 0x0 ; uleb128 0x0; Augmentation size
- .byte 0x4 ; DW_CFA_advance_loc4
- .set L$set$3,LCFI1-LCFI0
- .long L$set$3
- .byte 0xe ; DW_CFA_def_cfa_offset
- .byte EH_FRAME_OFFSETA,EH_FRAME_OFFSETB ; uleb128 176,1/190,3
- .byte 0x4 ; DW_CFA_advance_loc4
- .set L$set$4,LCFI0-Lstartcode
- .long L$set$4
- .byte 0x11 ; DW_CFA_offset_extended_sf
- .byte 0x41 ; uleb128 0x41
- .byte 0x7e ; sleb128 -2
- .align LOG2_GPR_BYTES
-LEFDE1:
- .align 1
-
-#ifdef WANT_STUB
- .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
- .align 5
-L_ffi_closure_helper_DARWIN$stub:
- .indirect_symbol _ffi_closure_helper_DARWIN
- mflr r0
- bcl 20,31,"L1$spb"
-"L1$spb":
- mflr r11
- addis r11,r11,ha16(L_ffi_closure_helper_DARWIN$lazy_ptr-"L1$spb")
- mtlr r0
- lwzu r12,lo16(L_ffi_closure_helper_DARWIN$lazy_ptr-"L1$spb")(r11)
- mtctr r12
- bctr
- .lazy_symbol_pointer
-L_ffi_closure_helper_DARWIN$lazy_ptr:
- .indirect_symbol _ffi_closure_helper_DARWIN
- .g_long dyld_stub_binding_helper
-
-#if defined(__ppc64__)
- .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
- .align 5
-L_darwin64_struct_ret_by_value_p$stub:
- .indirect_symbol _darwin64_struct_ret_by_value_p
- mflr r0
- bcl 20,31,"L2$spb"
-"L2$spb":
- mflr r11
- addis r11,r11,ha16(L_darwin64_struct_ret_by_value_p$lazy_ptr-"L2$spb")
- mtlr r0
- lwzu r12,lo16(L_darwin64_struct_ret_by_value_p$lazy_ptr-"L2$spb")(r11)
- mtctr r12
- bctr
- .lazy_symbol_pointer
-L_darwin64_struct_ret_by_value_p$lazy_ptr:
- .indirect_symbol _darwin64_struct_ret_by_value_p
- .g_long dyld_stub_binding_helper
-
- .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
- .align 5
-L_darwin64_pass_struct_floats$stub:
- .indirect_symbol _darwin64_pass_struct_floats
- mflr r0
- bcl 20,31,"L3$spb"
-"L3$spb":
- mflr r11
- addis r11,r11,ha16(L_darwin64_pass_struct_floats$lazy_ptr-"L3$spb")
- mtlr r0
- lwzu r12,lo16(L_darwin64_pass_struct_floats$lazy_ptr-"L3$spb")(r11)
- mtctr r12
- bctr
- .lazy_symbol_pointer
-L_darwin64_pass_struct_floats$lazy_ptr:
- .indirect_symbol _darwin64_pass_struct_floats
- .g_long dyld_stub_binding_helper
-# endif
-#endif
-
-
-====================File: src/powerpc/ffi.c====================
-/* -----------------------------------------------------------------------
- ffi.c - Copyright (C) 2013 IBM
- Copyright (C) 2011 Anthony Green
- Copyright (C) 2011 Kyle Moffett
- Copyright (C) 2008 Red Hat, Inc
- Copyright (C) 2007, 2008 Free Software Foundation, Inc
- Copyright (c) 1998 Geoffrey Keating
-
- PowerPC Foreign Function Interface
-
- 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 AUTHOR 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.
- ----------------------------------------------------------------------- */
-
-#include "ffi.h"
-#include "ffi_common.h"
-#include "ffi_powerpc.h"
-
-#if HAVE_LONG_DOUBLE_VARIANT
-/* Adjust ffi_type_longdouble. */
-void FFI_HIDDEN
-ffi_prep_types (ffi_abi abi)
-{
-# if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-# ifdef POWERPC64
- ffi_prep_types_linux64 (abi);
-# else
- ffi_prep_types_sysv (abi);
-# endif
-# endif
-}
-#endif
-
-/* Perform machine dependent cif processing */
-ffi_status FFI_HIDDEN
-ffi_prep_cif_machdep (ffi_cif *cif)
-{
-#ifdef POWERPC64
- return ffi_prep_cif_linux64 (cif);
-#else
- return ffi_prep_cif_sysv (cif);
-#endif
-}
-
-ffi_status FFI_HIDDEN
-ffi_prep_cif_machdep_var (ffi_cif *cif,
- unsigned int nfixedargs MAYBE_UNUSED,
- unsigned int ntotalargs MAYBE_UNUSED)
-{
-#ifdef POWERPC64
- return ffi_prep_cif_linux64_var (cif, nfixedargs, ntotalargs);
-#else
- return ffi_prep_cif_sysv (cif);
-#endif
-}
-
-static void
-ffi_call_int (ffi_cif *cif,
- void (*fn) (void),
- void *rvalue,
- void **avalue,
- void *closure)
-{
- /* The final SYSV ABI says that structures smaller or equal 8 bytes
- are returned in r3/r4. A draft ABI used by linux instead returns
- them in memory.
-
- We bounce-buffer SYSV small struct return values so that sysv.S
- can write r3 and r4 to memory without worrying about struct size.
-
- For ELFv2 ABI, use a bounce buffer for homogeneous structs too,
- for similar reasons. This bounce buffer must be aligned to 16
- bytes for use with homogeneous structs of vectors (float128). */
- float128 smst_buffer[8];
- extended_cif ecif;
-
- ecif.cif = cif;
- ecif.avalue = avalue;
-
- ecif.rvalue = rvalue;
- if ((cif->flags & FLAG_RETURNS_SMST) != 0)
- ecif.rvalue = smst_buffer;
- /* Ensure that we have a valid struct return value.
- FIXME: Isn't this just papering over a user problem? */
- else if (!rvalue && cif->rtype->type == FFI_TYPE_STRUCT)
- ecif.rvalue = alloca (cif->rtype->size);
-
-#ifdef POWERPC64
- ffi_call_LINUX64 (&ecif, fn, ecif.rvalue, cif->flags, closure,
- -(long) cif->bytes);
-#else
- ffi_call_SYSV (&ecif, fn, ecif.rvalue, cif->flags, closure, -cif->bytes);
-#endif
-
- /* Check for a bounce-buffered return value */
- if (rvalue && ecif.rvalue == smst_buffer)
- {
- unsigned int rsize = cif->rtype->size;
-#ifndef __LITTLE_ENDIAN__
- /* The SYSV ABI returns a structure of up to 4 bytes in size
- left-padded in r3. */
-# ifndef POWERPC64
- if (rsize <= 4)
- memcpy (rvalue, (char *) smst_buffer + 4 - rsize, rsize);
- else
-# endif
- /* The SYSV ABI returns a structure of up to 8 bytes in size
- left-padded in r3/r4, and the ELFv2 ABI similarly returns a
- structure of up to 8 bytes in size left-padded in r3. But
- note that a structure of a single float is not paddded. */
- if (rsize <= 8 && (cif->flags & FLAG_RETURNS_FP) == 0)
- memcpy (rvalue, (char *) smst_buffer + 8 - rsize, rsize);
- else
-#endif
- memcpy (rvalue, smst_buffer, rsize);
- }
-}
-
-void
-ffi_call (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue)
-{
- ffi_call_int (cif, fn, rvalue, avalue, NULL);
-}
-
-void
-ffi_call_go (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue,
- void *closure)
-{
- ffi_call_int (cif, fn, rvalue, avalue, closure);
-}
-
-ffi_status
-ffi_prep_closure_loc (ffi_closure *closure,
- ffi_cif *cif,
- void (*fun) (ffi_cif *, void *, void **, void *),
- void *user_data,
- void *codeloc)
-{
-#ifdef POWERPC64
- return ffi_prep_closure_loc_linux64 (closure, cif, fun, user_data, codeloc);
-#else
- return ffi_prep_closure_loc_sysv (closure, cif, fun, user_data, codeloc);
-#endif
-}
-
-ffi_status
-ffi_prep_go_closure (ffi_go_closure *closure,
- ffi_cif *cif,
- void (*fun) (ffi_cif *, void *, void **, void *))
-{
-#ifdef POWERPC64
- closure->tramp = ffi_go_closure_linux64;
-#else
- closure->tramp = ffi_go_closure_sysv;
-#endif
- closure->cif = cif;
- closure->fun = fun;
- return FFI_OK;
-}
-
-
-====================File: src/powerpc/ffitarget.h====================
-/* -----------------------------------------------------------------*-C-*-
- ffitarget.h - Copyright (c) 2012 Anthony Green
- Copyright (C) 2007, 2008, 2010 Free Software Foundation, Inc
- Copyright (c) 1996-2003 Red Hat, Inc.
-
- Target configuration macros for PowerPC.
-
- 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.
-
- ----------------------------------------------------------------------- */
-
-#ifndef LIBFFI_TARGET_H
-#define LIBFFI_TARGET_H
-
-#ifndef LIBFFI_H
-#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
-#endif
-
-/* ---- System specific configurations ----------------------------------- */
-
-#if defined (POWERPC) && defined (__powerpc64__) /* linux64 */
-#ifndef POWERPC64
-#define POWERPC64
-#endif
-#elif defined (POWERPC_DARWIN) && defined (__ppc64__) /* Darwin64 */
-#ifndef POWERPC64
-#define POWERPC64
-#endif
-#ifndef POWERPC_DARWIN64
-#define POWERPC_DARWIN64
-#endif
-#elif defined (POWERPC_AIX) && defined (__64BIT__) /* AIX64 */
-#ifndef POWERPC64
-#define POWERPC64
-#endif
-#endif
-
-#ifndef LIBFFI_ASM
-typedef unsigned long ffi_arg;
-typedef signed long ffi_sarg;
-
-typedef enum ffi_abi {
- FFI_FIRST_ABI = 0,
-
-#if defined (POWERPC_AIX)
- FFI_AIX,
- FFI_DARWIN,
- FFI_DEFAULT_ABI = FFI_AIX,
- FFI_LAST_ABI
-
-#elif defined (POWERPC_DARWIN)
- FFI_AIX,
- FFI_DARWIN,
- FFI_DEFAULT_ABI = FFI_DARWIN,
- FFI_LAST_ABI
-
-#else
- /* The FFI_COMPAT values are used by old code. Since libffi may be
- a shared library we have to support old values for backwards
- compatibility. */
- FFI_COMPAT_SYSV,
- FFI_COMPAT_GCC_SYSV,
- FFI_COMPAT_LINUX64,
- FFI_COMPAT_LINUX,
- FFI_COMPAT_LINUX_SOFT_FLOAT,
-
-# if defined (POWERPC64)
- /* This bit, always set in new code, must not be set in any of the
- old FFI_COMPAT values that might be used for 64-bit linux. We
- only need worry about FFI_COMPAT_LINUX64, but to be safe avoid
- all old values. */
- FFI_LINUX = 8,
- /* This and following bits can reuse FFI_COMPAT values. */
- FFI_LINUX_STRUCT_ALIGN = 1,
- FFI_LINUX_LONG_DOUBLE_128 = 2,
- FFI_LINUX_LONG_DOUBLE_IEEE128 = 4,
- FFI_DEFAULT_ABI = (FFI_LINUX
-# ifdef __STRUCT_PARM_ALIGN__
- | FFI_LINUX_STRUCT_ALIGN
-# endif
-# ifdef __LONG_DOUBLE_128__
- | FFI_LINUX_LONG_DOUBLE_128
-# ifdef __LONG_DOUBLE_IEEE128__
- | FFI_LINUX_LONG_DOUBLE_IEEE128
-# endif
-# endif
- ),
- FFI_LAST_ABI = 16
-
-# else
- /* This bit, always set in new code, must not be set in any of the
- old FFI_COMPAT values that might be used for 32-bit linux/sysv/bsd. */
- FFI_SYSV = 8,
- /* This and following bits can reuse FFI_COMPAT values. */
- FFI_SYSV_SOFT_FLOAT = 1,
- FFI_SYSV_STRUCT_RET = 2,
- FFI_SYSV_IBM_LONG_DOUBLE = 4,
- FFI_SYSV_LONG_DOUBLE_128 = 16,
-
- FFI_DEFAULT_ABI = (FFI_SYSV
-# ifdef __NO_FPRS__
- | FFI_SYSV_SOFT_FLOAT
-# endif
-# if (defined (__SVR4_STRUCT_RETURN) \
- || defined (POWERPC_FREEBSD) && !defined (__AIX_STRUCT_RETURN))
- | FFI_SYSV_STRUCT_RET
-# endif
-# if __LDBL_MANT_DIG__ == 106
- | FFI_SYSV_IBM_LONG_DOUBLE
-# endif
-# ifdef __LONG_DOUBLE_128__
- | FFI_SYSV_LONG_DOUBLE_128
-# endif
- ),
- FFI_LAST_ABI = 32
-# endif
-#endif
-
-} ffi_abi;
-#endif
-
-/* ---- Definitions for closures ----------------------------------------- */
-
-#define FFI_CLOSURES 1
-#define FFI_NATIVE_RAW_API 0
-#if defined (POWERPC) || defined (POWERPC_FREEBSD)
-# define FFI_GO_CLOSURES 1
-# define FFI_TARGET_SPECIFIC_VARIADIC 1
-# define FFI_EXTRA_CIF_FIELDS unsigned nfixedargs
-#endif
-#if defined (POWERPC_AIX)
-# define FFI_GO_CLOSURES 1
-#endif
-
-/* ppc_closure.S and linux64_closure.S expect this. */
-#define FFI_PPC_TYPE_LAST FFI_TYPE_POINTER
-
-/* We define additional types below. If generic types are added that
- must be supported by powerpc libffi then it is likely that
- FFI_PPC_TYPE_LAST needs increasing *and* the jump tables in
- ppc_closure.S and linux64_closure.S be extended. */
-
-#if !(FFI_TYPE_LAST == FFI_PPC_TYPE_LAST \
- || (FFI_TYPE_LAST == FFI_TYPE_COMPLEX \
- && !defined FFI_TARGET_HAS_COMPLEX_TYPE))
-# error "You likely have a broken powerpc libffi"
-#endif
-
-/* Needed for soft-float long-double-128 support. */
-#define FFI_TYPE_UINT128 (FFI_PPC_TYPE_LAST + 1)
-
-/* Needed for FFI_SYSV small structure returns. */
-#define FFI_SYSV_TYPE_SMALL_STRUCT (FFI_PPC_TYPE_LAST + 2)
-
-/* Used by ELFv2 for homogenous structure returns. */
-#define FFI_V2_TYPE_VECTOR (FFI_PPC_TYPE_LAST + 1)
-#define FFI_V2_TYPE_VECTOR_HOMOG (FFI_PPC_TYPE_LAST + 2)
-#define FFI_V2_TYPE_FLOAT_HOMOG (FFI_PPC_TYPE_LAST + 3)
-#define FFI_V2_TYPE_DOUBLE_HOMOG (FFI_PPC_TYPE_LAST + 4)
-#define FFI_V2_TYPE_SMALL_STRUCT (FFI_PPC_TYPE_LAST + 5)
-
-#if _CALL_ELF == 2
-# define FFI_TRAMPOLINE_SIZE 32
-#else
-# if defined(POWERPC64) || defined(POWERPC_AIX)
-# if defined(POWERPC_DARWIN64)
-# define FFI_TRAMPOLINE_SIZE 48
-# else
-# define FFI_TRAMPOLINE_SIZE 24
-# endif
-# else /* POWERPC || POWERPC_AIX */
-# define FFI_TRAMPOLINE_SIZE 40
-# endif
-#endif
-
-#ifndef LIBFFI_ASM
-#if defined(POWERPC_DARWIN) || defined(POWERPC_AIX)
-struct ffi_aix_trampoline_struct {
- void * code_pointer; /* Pointer to ffi_closure_ASM */
- void * toc; /* TOC */
- void * static_chain; /* Pointer to closure */
-};
-#endif
-#endif
-
-#endif
-
-
-====================File: src/powerpc/ppc_closure.S====================
-/* -----------------------------------------------------------------------
- sysv.h - Copyright (c) 2003 Jakub Jelinek <jakub@redhat.com>
- Copyright (c) 2008 Red Hat, Inc.
-
- PowerPC Assembly glue.
-
- 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.
- ----------------------------------------------------------------------- */
-#define LIBFFI_ASM
-#include <fficonfig.h>
-#include <ffi.h>
-#include <powerpc/asm.h>
-
- .file "ppc_closure.S"
-
-#ifndef POWERPC64
-
-FFI_HIDDEN(ffi_closure_SYSV)
-ENTRY(ffi_closure_SYSV)
- .cfi_startproc
- stwu %r1,-144(%r1)
- .cfi_def_cfa_offset 144
- mflr %r0
- stw %r0,148(%r1)
- .cfi_offset 65, 4
-
-# we want to build up an areas for the parameters passed
-# in registers (both floating point and integer)
-
- # so first save gpr 3 to gpr 10 (aligned to 4)
- stw %r3, 16(%r1)
- stw %r4, 20(%r1)
- stw %r5, 24(%r1)
-
- # set up registers for the routine that does the work
-
- # closure->cif
- lwz %r3,FFI_TRAMPOLINE_SIZE(%r11)
- # closure->fun
- lwz %r4,FFI_TRAMPOLINE_SIZE+4(%r11)
- # closure->user_data
- lwz %r5,FFI_TRAMPOLINE_SIZE+8(%r11)
-
-.Ldoclosure:
- stw %r6, 28(%r1)
- stw %r7, 32(%r1)
- stw %r8, 36(%r1)
- stw %r9, 40(%r1)
- stw %r10,44(%r1)
-
-#ifndef __NO_FPRS__
- # next save fpr 1 to fpr 8 (aligned to 8)
- stfd %f1, 48(%r1)
- stfd %f2, 56(%r1)
- stfd %f3, 64(%r1)
- stfd %f4, 72(%r1)
- stfd %f5, 80(%r1)
- stfd %f6, 88(%r1)
- stfd %f7, 96(%r1)
- stfd %f8, 104(%r1)
-#endif
-
- # pointer to the result storage
- addi %r6,%r1,112
-
- # pointer to the saved gpr registers
- addi %r7,%r1,16
-
- # pointer to the saved fpr registers
- addi %r8,%r1,48
-
- # pointer to the outgoing parameter save area in the previous frame
- # i.e. the previous frame pointer + 8
- addi %r9,%r1,152
-
- # make the call
- bl ffi_closure_helper_SYSV@local
-.Lret:
- # now r3 contains the return type
- # so use it to look up in a table
- # so we know how to deal with each type
-
- # look up the proper starting point in table
- # by using return type as offset
-
- mflr %r4 # move address of .Lret to r4
- slwi %r3,%r3,4 # now multiply return type by 16
- addi %r4, %r4, .Lret_type0 - .Lret
- lwz %r0,148(%r1)
- add %r3,%r3,%r4 # add contents of table to table address
- mtctr %r3
- bctr # jump to it
-
-# Each of the ret_typeX code fragments has to be exactly 16 bytes long
-# (4 instructions). For cache effectiveness we align to a 16 byte boundary
-# first.
- .align 4
-# case FFI_TYPE_VOID
-.Lret_type0:
- mtlr %r0
- addi %r1,%r1,144
- .cfi_def_cfa_offset 0
- blr
- .cfi_def_cfa_offset 144
- nop
-
-# case FFI_TYPE_INT
- lwz %r3,112+0(%r1)
- mtlr %r0
-.Lfinish:
- addi %r1,%r1,144
- .cfi_def_cfa_offset 0
- blr
- .cfi_def_cfa_offset 144
-
-# case FFI_TYPE_FLOAT
-#ifndef __NO_FPRS__
- lfs %f1,112+0(%r1)
-#else
- nop
-#endif
- mtlr %r0
- addi %r1,%r1,144
- .cfi_def_cfa_offset 0
- blr
- .cfi_def_cfa_offset 144
-
-# case FFI_TYPE_DOUBLE
-#ifndef __NO_FPRS__
- lfd %f1,112+0(%r1)
-#else
- nop
-#endif
- mtlr %r0
- addi %r1,%r1,144
- .cfi_def_cfa_offset 0
- blr
- .cfi_def_cfa_offset 144
-
-# case FFI_TYPE_LONGDOUBLE
-#ifndef __NO_FPRS__
- lfd %f1,112+0(%r1)
- lfd %f2,112+8(%r1)
- mtlr %r0
- b .Lfinish
-#else
- mtlr %r0
- addi %r1,%r1,144
- .cfi_def_cfa_offset 0
- blr
- .cfi_def_cfa_offset 144
- nop
-#endif
-
-# case FFI_TYPE_UINT8
-#ifdef __LITTLE_ENDIAN__
- lbz %r3,112+0(%r1)
-#else
- lbz %r3,112+3(%r1)
-#endif
- mtlr %r0
- addi %r1,%r1,144
- .cfi_def_cfa_offset 0
- blr
- .cfi_def_cfa_offset 144
-
-# case FFI_TYPE_SINT8
-#ifdef __LITTLE_ENDIAN__
- lbz %r3,112+0(%r1)
-#else
- lbz %r3,112+3(%r1)
-#endif
- extsb %r3,%r3
- mtlr %r0
- b .Lfinish
-
-# case FFI_TYPE_UINT16
-#ifdef __LITTLE_ENDIAN__
- lhz %r3,112+0(%r1)
-#else
- lhz %r3,112+2(%r1)
-#endif
- mtlr %r0
- addi %r1,%r1,144
- .cfi_def_cfa_offset 0
- blr
- .cfi_def_cfa_offset 144
-
-# case FFI_TYPE_SINT16
-#ifdef __LITTLE_ENDIAN__
- lha %r3,112+0(%r1)
-#else
- lha %r3,112+2(%r1)
-#endif
- mtlr %r0
- addi %r1,%r1,144
- .cfi_def_cfa_offset 0
- blr
- .cfi_def_cfa_offset 144
-
-# case FFI_TYPE_UINT32
- lwz %r3,112+0(%r1)
- mtlr %r0
- addi %r1,%r1,144
- .cfi_def_cfa_offset 0
- blr
- .cfi_def_cfa_offset 144
-
-# case FFI_TYPE_SINT32
- lwz %r3,112+0(%r1)
- mtlr %r0
- addi %r1,%r1,144
- .cfi_def_cfa_offset 0
- blr
- .cfi_def_cfa_offset 144
-
-# case FFI_TYPE_UINT64
- lwz %r3,112+0(%r1)
- lwz %r4,112+4(%r1)
- mtlr %r0
- b .Lfinish
-
-# case FFI_TYPE_SINT64
- lwz %r3,112+0(%r1)
- lwz %r4,112+4(%r1)
- mtlr %r0
- b .Lfinish
-
-# case FFI_TYPE_STRUCT
- mtlr %r0
- addi %r1,%r1,144
- .cfi_def_cfa_offset 0
- blr
- .cfi_def_cfa_offset 144
- nop
-
-# case FFI_TYPE_POINTER
- lwz %r3,112+0(%r1)
- mtlr %r0
- addi %r1,%r1,144
- .cfi_def_cfa_offset 0
- blr
- .cfi_def_cfa_offset 144
-
-# case FFI_TYPE_UINT128
- lwz %r3,112+0(%r1)
- lwz %r4,112+4(%r1)
- lwz %r5,112+8(%r1)
- b .Luint128
-
-# The return types below are only used when the ABI type is FFI_SYSV.
-# case FFI_SYSV_TYPE_SMALL_STRUCT + 1. One byte struct.
- lbz %r3,112+0(%r1)
- mtlr %r0
- addi %r1,%r1,144
- .cfi_def_cfa_offset 0
- blr
- .cfi_def_cfa_offset 144
-
-# case FFI_SYSV_TYPE_SMALL_STRUCT + 2. Two byte struct.
- lhz %r3,112+0(%r1)
- mtlr %r0
- addi %r1,%r1,144
- .cfi_def_cfa_offset 0
- blr
- .cfi_def_cfa_offset 144
-
-# case FFI_SYSV_TYPE_SMALL_STRUCT + 3. Three byte struct.
- lwz %r3,112+0(%r1)
-#ifdef __LITTLE_ENDIAN__
- mtlr %r0
- addi %r1,%r1,144
- .cfi_def_cfa_offset 0
- blr
- .cfi_def_cfa_offset 144
-#else
- srwi %r3,%r3,8
- mtlr %r0
- b .Lfinish
-#endif
-
-# case FFI_SYSV_TYPE_SMALL_STRUCT + 4. Four byte struct.
- lwz %r3,112+0(%r1)
- mtlr %r0
- addi %r1,%r1,144
- .cfi_def_cfa_offset 0
- blr
- .cfi_def_cfa_offset 144
-
-# case FFI_SYSV_TYPE_SMALL_STRUCT + 5. Five byte struct.
- lwz %r3,112+0(%r1)
- lwz %r4,112+4(%r1)
-#ifdef __LITTLE_ENDIAN__
- mtlr %r0
- b .Lfinish
-#else
- li %r5,24
- b .Lstruct567
-#endif
-
-# case FFI_SYSV_TYPE_SMALL_STRUCT + 6. Six byte struct.
- lwz %r3,112+0(%r1)
- lwz %r4,112+4(%r1)
-#ifdef __LITTLE_ENDIAN__
- mtlr %r0
- b .Lfinish
-#else
- li %r5,16
- b .Lstruct567
-#endif
-
-# case FFI_SYSV_TYPE_SMALL_STRUCT + 7. Seven byte struct.
- lwz %r3,112+0(%r1)
- lwz %r4,112+4(%r1)
-#ifdef __LITTLE_ENDIAN__
- mtlr %r0
- b .Lfinish
-#else
- li %r5,8
- b .Lstruct567
-#endif
-
-# case FFI_SYSV_TYPE_SMALL_STRUCT + 8. Eight byte struct.
- lwz %r3,112+0(%r1)
- lwz %r4,112+4(%r1)
- mtlr %r0
- b .Lfinish
-
-#ifndef __LITTLE_ENDIAN__
-.Lstruct567:
- subfic %r6,%r5,32
- srw %r4,%r4,%r5
- slw %r6,%r3,%r6
- srw %r3,%r3,%r5
- or %r4,%r6,%r4
- mtlr %r0
- addi %r1,%r1,144
- .cfi_def_cfa_offset 0
- blr
- .cfi_def_cfa_offset 144
-#endif
-
-.Luint128:
- lwz %r6,112+12(%r1)
- mtlr %r0
- addi %r1,%r1,144
- .cfi_def_cfa_offset 0
- blr
- .cfi_endproc
-END(ffi_closure_SYSV)
-
-
-FFI_HIDDEN(ffi_go_closure_sysv)
-ENTRY(ffi_go_closure_sysv)
- .cfi_startproc
- stwu %r1,-144(%r1)
- .cfi_def_cfa_offset 144
- mflr %r0
- stw %r0,148(%r1)
- .cfi_offset 65, 4
-
- stw %r3, 16(%r1)
- stw %r4, 20(%r1)
- stw %r5, 24(%r1)
-
- # closure->cif
- lwz %r3,4(%r11)
- # closure->fun
- lwz %r4,8(%r11)
- # user_data
- mr %r5,%r11
- b .Ldoclosure
- .cfi_endproc
-END(ffi_go_closure_sysv)
-
-#if defined __ELF__ && defined __linux__
- .section .note.GNU-stack,"",@progbits
-#endif
-#endif
-
-
-====================File: src/powerpc/sysv.S====================
-/* -----------------------------------------------------------------------
- sysv.S - Copyright (c) 1998 Geoffrey Keating
- Copyright (C) 2007 Free Software Foundation, Inc
-
- PowerPC Assembly glue.
-
- 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.
- ----------------------------------------------------------------------- */
-
-#define LIBFFI_ASM
-#include <fficonfig.h>
-#include <ffi.h>
-#include <powerpc/asm.h>
-
-#ifndef POWERPC64
-FFI_HIDDEN(ffi_call_SYSV)
-ENTRY(ffi_call_SYSV)
- .cfi_startproc
- /* Save the old stack pointer as AP. */
- mr %r10,%r1
- .cfi_def_cfa_register 10
-
- /* Allocate the stack space we need. */
- stwux %r1,%r1,%r8
- /* Save registers we use. */
- mflr %r9
- stw %r28,-16(%r10)
- stw %r29,-12(%r10)
- stw %r30, -8(%r10)
- stw %r31, -4(%r10)
- stw %r9, 4(%r10)
- .cfi_offset 65, 4
- .cfi_offset 31, -4
- .cfi_offset 30, -8
- .cfi_offset 29, -12
- .cfi_offset 28, -16
-
- /* Save arguments over call... */
- stw %r7, -20(%r10) /* closure, */
- mr %r31,%r6 /* flags, */
- mr %r30,%r5 /* rvalue, */
- mr %r29,%r4 /* function address, */
- mr %r28,%r10 /* our AP. */
- .cfi_def_cfa_register 28
-
- /* Call ffi_prep_args_SYSV. */
- mr %r4,%r1
- bl ffi_prep_args_SYSV@local
-
- /* Now do the call. */
- /* Set up cr1 with bits 4-7 of the flags. */
- mtcrf 0x40,%r31
- /* Get the address to call into CTR. */
- mtctr %r29
- /* Load all those argument registers. */
- lwz %r3,-24-(8*4)(%r28)
- lwz %r4,-24-(7*4)(%r28)
- lwz %r5,-24-(6*4)(%r28)
- lwz %r6,-24-(5*4)(%r28)
- bf- 5,1f
- nop
- lwz %r7,-24-(4*4)(%r28)
- lwz %r8,-24-(3*4)(%r28)
- lwz %r9,-24-(2*4)(%r28)
- lwz %r10,-24-(1*4)(%r28)
- nop
-1:
-
-#ifndef __NO_FPRS__
- /* Load all the FP registers. */
- bf- 6,2f
- lfd %f1,-24-(8*4)-(8*8)(%r28)
- lfd %f2,-24-(8*4)-(7*8)(%r28)
- lfd %f3,-24-(8*4)-(6*8)(%r28)
- lfd %f4,-24-(8*4)-(5*8)(%r28)
- nop
- lfd %f5,-24-(8*4)-(4*8)(%r28)
- lfd %f6,-24-(8*4)-(3*8)(%r28)
- lfd %f7,-24-(8*4)-(2*8)(%r28)
- lfd %f8,-24-(8*4)-(1*8)(%r28)
-#endif
-2:
-
- /* Make the call. */
- lwz %r11, -20(%r28)
- bctrl
-
- /* Now, deal with the return value. */
- mtcrf 0x01,%r31 /* cr7 */
- bt- 31,L(small_struct_return_value)
- bt- 30,L(done_return_value)
-#ifndef __NO_FPRS__
- bt- 29,L(fp_return_value)
-#endif
- stw %r3,0(%r30)
- bf+ 28,L(done_return_value)
- stw %r4,4(%r30)
- mtcrf 0x02,%r31 /* cr6 */
- bf 27,L(done_return_value)
- stw %r5,8(%r30)
- stw %r6,12(%r30)
- /* Fall through... */
-
-L(done_return_value):
- /* Restore the registers we used and return. */
- lwz %r9, 4(%r28)
- lwz %r31, -4(%r28)
- mtlr %r9
- lwz %r30, -8(%r28)
- lwz %r29,-12(%r28)
- lwz %r28,-16(%r28)
- .cfi_remember_state
- /* At this point we don't have a cfa register. Say all our
- saved regs have been restored. */
- .cfi_same_value 65
- .cfi_same_value 31
- .cfi_same_value 30
- .cfi_same_value 29
- .cfi_same_value 28
- /* Hopefully this works.. */
- .cfi_def_cfa_register 1
- .cfi_offset 1, 0
- lwz %r1,0(%r1)
- .cfi_same_value 1
- blr
-
-#ifndef __NO_FPRS__
-L(fp_return_value):
- .cfi_restore_state
- bf 28,L(float_return_value)
- stfd %f1,0(%r30)
- mtcrf 0x02,%r31 /* cr6 */
- bf 27,L(done_return_value)
- stfd %f2,8(%r30)
- b L(done_return_value)
-L(float_return_value):
- stfs %f1,0(%r30)
- b L(done_return_value)
-#endif
-
-L(small_struct_return_value):
- /*
- * The C code always allocates a properly-aligned 8-byte bounce
- * buffer to make this assembly code very simple. Just write out
- * r3 and r4 to the buffer to allow the C code to handle the rest.
- */
- stw %r3, 0(%r30)
- stw %r4, 4(%r30)
- b L(done_return_value)
- .cfi_endproc
-
-END(ffi_call_SYSV)
-
-#if defined __ELF__ && defined __linux__
- .section .note.GNU-stack,"",@progbits
-#endif
-#endif
-
-
-====================File: src/prep_cif.c====================
-/* -----------------------------------------------------------------------
- prep_cif.c - Copyright (c) 2011, 2012 Anthony Green
- Copyright (c) 1996, 1998, 2007 Red Hat, Inc.
-
- 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.
- ----------------------------------------------------------------------- */
-
-#include <ffi.h>
-#include <ffi_common.h>
-#include <stdlib.h>
-
-/* Round up to FFI_SIZEOF_ARG. */
-
-#define STACK_ARG_SIZE(x) FFI_ALIGN(x, FFI_SIZEOF_ARG)
-
-/* Perform machine independent initialization of aggregate type
- specifications. */
-
-static ffi_status initialize_aggregate(ffi_type *arg, size_t *offsets)
-{
- ffi_type **ptr;
-
- if (UNLIKELY(arg == NULL || arg->elements == NULL))
- return FFI_BAD_TYPEDEF;
-
- arg->size = 0;
- arg->alignment = 0;
-
- ptr = &(arg->elements[0]);
-
- if (UNLIKELY(ptr == 0))
- return FFI_BAD_TYPEDEF;
-
- while ((*ptr) != NULL)
- {
- if (UNLIKELY(((*ptr)->size == 0)
- && (initialize_aggregate((*ptr), NULL) != FFI_OK)))
- return FFI_BAD_TYPEDEF;
-
- /* Perform a sanity check on the argument type */
- FFI_ASSERT_VALID_TYPE(*ptr);
-
- arg->size = FFI_ALIGN(arg->size, (*ptr)->alignment);
- if (offsets)
- *offsets++ = arg->size;
- arg->size += (*ptr)->size;
-
- arg->alignment = (arg->alignment > (*ptr)->alignment) ?
- arg->alignment : (*ptr)->alignment;
-
- ptr++;
- }
-
- /* Structure size includes tail padding. This is important for
- structures that fit in one register on ABIs like the PowerPC64
- Linux ABI that right justify small structs in a register.
- It's also needed for nested structure layout, for example
- struct A { long a; char b; }; struct B { struct A x; char y; };
- should find y at an offset of 2*sizeof(long) and result in a
- total size of 3*sizeof(long). */
- arg->size = FFI_ALIGN (arg->size, arg->alignment);
-
- /* On some targets, the ABI defines that structures have an additional
- alignment beyond the "natural" one based on their elements. */
-#ifdef FFI_AGGREGATE_ALIGNMENT
- if (FFI_AGGREGATE_ALIGNMENT > arg->alignment)
- arg->alignment = FFI_AGGREGATE_ALIGNMENT;
-#endif
-
- if (arg->size == 0)
- return FFI_BAD_TYPEDEF;
- else
- return FFI_OK;
-}
-
-#ifndef __CRIS__
-/* The CRIS ABI specifies structure elements to have byte
- alignment only, so it completely overrides this functions,
- which assumes "natural" alignment and padding. */
-
-/* Perform machine independent ffi_cif preparation, then call
- machine dependent routine. */
-
-/* For non variadic functions isvariadic should be 0 and
- nfixedargs==ntotalargs.
-
- For variadic calls, isvariadic should be 1 and nfixedargs
- and ntotalargs set as appropriate. nfixedargs must always be >=1 */
-
-
-ffi_status FFI_HIDDEN ffi_prep_cif_core(ffi_cif *cif, ffi_abi abi,
- unsigned int isvariadic,
- unsigned int nfixedargs,
- unsigned int ntotalargs,
- ffi_type *rtype, ffi_type **atypes)
-{
- unsigned bytes = 0;
- unsigned int i;
- ffi_type **ptr;
-
- FFI_ASSERT(cif != NULL);
- FFI_ASSERT((!isvariadic) || (nfixedargs >= 1));
- FFI_ASSERT(nfixedargs <= ntotalargs);
-
- if (! (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI))
- return FFI_BAD_ABI;
-
- cif->abi = abi;
- cif->arg_types = atypes;
- cif->nargs = ntotalargs;
- cif->rtype = rtype;
-
- cif->flags = 0;
-#ifdef _M_ARM64
- cif->is_variadic = isvariadic;
-#endif
-#if HAVE_LONG_DOUBLE_VARIANT
- ffi_prep_types (abi);
-#endif
-
- /* Initialize the return type if necessary */
- if ((cif->rtype->size == 0)
- && (initialize_aggregate(cif->rtype, NULL) != FFI_OK))
- return FFI_BAD_TYPEDEF;
-
-#ifndef FFI_TARGET_HAS_COMPLEX_TYPE
- if (rtype->type == FFI_TYPE_COMPLEX)
- abort();
-#endif
- /* Perform a sanity check on the return type */
- FFI_ASSERT_VALID_TYPE(cif->rtype);
-
- /* x86, x86-64 and s390 stack space allocation is handled in prep_machdep. */
-#if !defined FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION
- /* Make space for the return structure pointer */
- if (cif->rtype->type == FFI_TYPE_STRUCT
-#ifdef TILE
- && (cif->rtype->size > 10 * FFI_SIZEOF_ARG)
-#endif
-#ifdef XTENSA
- && (cif->rtype->size > 16)
-#endif
-#ifdef NIOS2
- && (cif->rtype->size > 8)
-#endif
- )
- bytes = STACK_ARG_SIZE(sizeof(void*));
-#endif
-
- for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++)
- {
-
- /* Initialize any uninitialized aggregate type definitions */
- if (((*ptr)->size == 0)
- && (initialize_aggregate((*ptr), NULL) != FFI_OK))
- return FFI_BAD_TYPEDEF;
-
-#ifndef FFI_TARGET_HAS_COMPLEX_TYPE
- if ((*ptr)->type == FFI_TYPE_COMPLEX)
- abort();
-#endif
- /* Perform a sanity check on the argument type, do this
- check after the initialization. */
- FFI_ASSERT_VALID_TYPE(*ptr);
-
-#if !defined FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION
- {
- /* Add any padding if necessary */
- if (((*ptr)->alignment - 1) & bytes)
- bytes = (unsigned)FFI_ALIGN(bytes, (*ptr)->alignment);
-
-#ifdef TILE
- if (bytes < 10 * FFI_SIZEOF_ARG &&
- bytes + STACK_ARG_SIZE((*ptr)->size) > 10 * FFI_SIZEOF_ARG)
- {
- /* An argument is never split between the 10 parameter
- registers and the stack. */
- bytes = 10 * FFI_SIZEOF_ARG;
- }
-#endif
-#ifdef XTENSA
- if (bytes <= 6*4 && bytes + STACK_ARG_SIZE((*ptr)->size) > 6*4)
- bytes = 6*4;
-#endif
-
- bytes += (unsigned int)STACK_ARG_SIZE((*ptr)->size);
- }
-#endif
- }
-
- cif->bytes = bytes;
-
- /* Perform machine dependent cif processing */
-#ifdef FFI_TARGET_SPECIFIC_VARIADIC
- if (isvariadic)
- return ffi_prep_cif_machdep_var(cif, nfixedargs, ntotalargs);
-#endif
-
- return ffi_prep_cif_machdep(cif);
-}
-#endif /* not __CRIS__ */
-
-ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, unsigned int nargs,
- ffi_type *rtype, ffi_type **atypes)
-{
- return ffi_prep_cif_core(cif, abi, 0, nargs, nargs, rtype, atypes);
-}
-
-ffi_status ffi_prep_cif_var(ffi_cif *cif,
- ffi_abi abi,
- unsigned int nfixedargs,
- unsigned int ntotalargs,
- ffi_type *rtype,
- ffi_type **atypes)
-{
- return ffi_prep_cif_core(cif, abi, 1, nfixedargs, ntotalargs, rtype, atypes);
-}
-
-#if FFI_CLOSURES
-
-ffi_status
-ffi_prep_closure (ffi_closure* closure,
- ffi_cif* cif,
- void (*fun)(ffi_cif*,void*,void**,void*),
- void *user_data)
-{
- return ffi_prep_closure_loc (closure, cif, fun, user_data, closure);
-}
-
-#endif
-
-ffi_status
-ffi_get_struct_offsets (ffi_abi abi, ffi_type *struct_type, size_t *offsets)
-{
- if (! (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI))
- return FFI_BAD_ABI;
- if (struct_type->type != FFI_TYPE_STRUCT)
- return FFI_BAD_TYPEDEF;
-
-#if HAVE_LONG_DOUBLE_VARIANT
- ffi_prep_types (abi);
-#endif
-
- return initialize_aggregate(struct_type, offsets);
-}
-
-
-====================File: src/raw_api.c====================
-/* -----------------------------------------------------------------------
- raw_api.c - Copyright (c) 1999, 2008 Red Hat, Inc.
-
- Author: Kresten Krab Thorup <krab@gnu.org>
-
- 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.
- ----------------------------------------------------------------------- */
-
-/* This file defines generic functions for use with the raw api. */
-
-#include <ffi.h>
-#include <ffi_common.h>
-
-#if !FFI_NO_RAW_API
-
-size_t
-ffi_raw_size (ffi_cif *cif)
-{
- size_t result = 0;
- int i;
-
- ffi_type **at = cif->arg_types;
-
- for (i = cif->nargs-1; i >= 0; i--, at++)
- {
-#if !FFI_NO_STRUCTS
- if ((*at)->type == FFI_TYPE_STRUCT)
- result += FFI_ALIGN (sizeof (void*), FFI_SIZEOF_ARG);
- else
-#endif
- result += FFI_ALIGN ((*at)->size, FFI_SIZEOF_ARG);
- }
-
- return result;
-}
-
-
-void
-ffi_raw_to_ptrarray (ffi_cif *cif, ffi_raw *raw, void **args)
-{
- unsigned i;
- ffi_type **tp = cif->arg_types;
-
-#if WORDS_BIGENDIAN
-
- for (i = 0; i < cif->nargs; i++, tp++, args++)
- {
- switch ((*tp)->type)
- {
- case FFI_TYPE_UINT8:
- case FFI_TYPE_SINT8:
- *args = (void*) ((char*)(raw++) + FFI_SIZEOF_ARG - 1);
- break;
-
- case FFI_TYPE_UINT16:
- case FFI_TYPE_SINT16:
- *args = (void*) ((char*)(raw++) + FFI_SIZEOF_ARG - 2);
- break;
-
-#if FFI_SIZEOF_ARG >= 4
- case FFI_TYPE_UINT32:
- case FFI_TYPE_SINT32:
- *args = (void*) ((char*)(raw++) + FFI_SIZEOF_ARG - 4);
- break;
-#endif
-
-#if !FFI_NO_STRUCTS
- case FFI_TYPE_STRUCT:
- *args = (raw++)->ptr;
- break;
-#endif
-
- case FFI_TYPE_COMPLEX:
- *args = (raw++)->ptr;
- break;
-
- case FFI_TYPE_POINTER:
- *args = (void*) &(raw++)->ptr;
- break;
-
- default:
- *args = raw;
- raw += FFI_ALIGN ((*tp)->size, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG;
- }
- }
-
-#else /* WORDS_BIGENDIAN */
-
-#if !PDP
-
- /* then assume little endian */
- for (i = 0; i < cif->nargs; i++, tp++, args++)
- {
-#if !FFI_NO_STRUCTS
- if ((*tp)->type == FFI_TYPE_STRUCT)
- {
- *args = (raw++)->ptr;
- }
- else
-#endif
- if ((*tp)->type == FFI_TYPE_COMPLEX)
- {
- *args = (raw++)->ptr;
- }
- else
- {
- *args = (void*) raw;
- raw += FFI_ALIGN ((*tp)->size, sizeof (void*)) / sizeof (void*);
- }
- }
-
-#else
-#error "pdp endian not supported"
-#endif /* ! PDP */
-
-#endif /* WORDS_BIGENDIAN */
-}
-
-void
-ffi_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_raw *raw)
-{
- unsigned i;
- ffi_type **tp = cif->arg_types;
-
- for (i = 0; i < cif->nargs; i++, tp++, args++)
- {
- switch ((*tp)->type)
- {
- case FFI_TYPE_UINT8:
- (raw++)->uint = *(UINT8*) (*args);
- break;
-
- case FFI_TYPE_SINT8:
- (raw++)->sint = *(SINT8*) (*args);
- break;
-
- case FFI_TYPE_UINT16:
- (raw++)->uint = *(UINT16*) (*args);
- break;
-
- case FFI_TYPE_SINT16:
- (raw++)->sint = *(SINT16*) (*args);
- break;
-
-#if FFI_SIZEOF_ARG >= 4
- case FFI_TYPE_UINT32:
- (raw++)->uint = *(UINT32*) (*args);
- break;
-
- case FFI_TYPE_SINT32:
- (raw++)->sint = *(SINT32*) (*args);
- break;
-#endif
-
-#if !FFI_NO_STRUCTS
- case FFI_TYPE_STRUCT:
- (raw++)->ptr = *args;
- break;
-#endif
-
- case FFI_TYPE_COMPLEX:
- (raw++)->ptr = *args;
- break;
-
- case FFI_TYPE_POINTER:
- (raw++)->ptr = **(void***) args;
- break;
-
- default:
- memcpy ((void*) raw->data, (void*)*args, (*tp)->size);
- raw += FFI_ALIGN ((*tp)->size, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG;
- }
- }
-}
-
-#if !FFI_NATIVE_RAW_API
-
-
-/* This is a generic definition of ffi_raw_call, to be used if the
- * native system does not provide a machine-specific implementation.
- * Having this, allows code to be written for the raw API, without
- * the need for system-specific code to handle input in that format;
- * these following couple of functions will handle the translation forth
- * and back automatically. */
-
-void ffi_raw_call (ffi_cif *cif, void (*fn)(void), void *rvalue, ffi_raw *raw)
-{
- void **avalue = (void**) alloca (cif->nargs * sizeof (void*));
- ffi_raw_to_ptrarray (cif, raw, avalue);
- ffi_call (cif, fn, rvalue, avalue);
-}
-
-#if FFI_CLOSURES /* base system provides closures */
-
-static void
-ffi_translate_args (ffi_cif *cif, void *rvalue,
- void **avalue, void *user_data)
-{
- ffi_raw *raw = (ffi_raw*)alloca (ffi_raw_size (cif));
- ffi_raw_closure *cl = (ffi_raw_closure*)user_data;
-
- ffi_ptrarray_to_raw (cif, avalue, raw);
- (*cl->fun) (cif, rvalue, raw, cl->user_data);
-}
-
-ffi_status
-ffi_prep_raw_closure_loc (ffi_raw_closure* cl,
- ffi_cif *cif,
- void (*fun)(ffi_cif*,void*,ffi_raw*,void*),
- void *user_data,
- void *codeloc)
-{
- ffi_status status;
-
- status = ffi_prep_closure_loc ((ffi_closure*) cl,
- cif,
- &ffi_translate_args,
- codeloc,
- codeloc);
- if (status == FFI_OK)
- {
- cl->fun = fun;
- cl->user_data = user_data;
- }
-
- return status;
-}
-
-#endif /* FFI_CLOSURES */
-#endif /* !FFI_NATIVE_RAW_API */
-
-#if FFI_CLOSURES
-
-/* Again, here is the generic version of ffi_prep_raw_closure, which
- * will install an intermediate "hub" for translation of arguments from
- * the pointer-array format, to the raw format */
-
-ffi_status
-ffi_prep_raw_closure (ffi_raw_closure* cl,
- ffi_cif *cif,
- void (*fun)(ffi_cif*,void*,ffi_raw*,void*),
- void *user_data)
-{
- return ffi_prep_raw_closure_loc (cl, cif, fun, user_data, cl);
-}
-
-#endif /* FFI_CLOSURES */
-
-#endif /* !FFI_NO_RAW_API */
-
-
-====================File: src/types.c====================
-/* -----------------------------------------------------------------------
- types.c - Copyright (c) 1996, 1998 Red Hat, Inc.
-
- Predefined ffi_types needed by libffi.
-
- 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.
- ----------------------------------------------------------------------- */
-
-/* Hide the basic type definitions from the header file, so that we
- can redefine them here as "const". */
-#define LIBFFI_HIDE_BASIC_TYPES
-
-#include <ffi.h>
-#include <ffi_common.h>
-
-/* Type definitions */
-
-#define FFI_TYPEDEF(name, type, id, maybe_const)\
-struct struct_align_##name { \
- char c; \
- type x; \
-}; \
-FFI_EXTERN \
-maybe_const ffi_type ffi_type_##name = { \
- sizeof(type), \
- offsetof(struct struct_align_##name, x), \
- id, NULL \
-}
-
-#define FFI_COMPLEX_TYPEDEF(name, type, maybe_const) \
-static ffi_type *ffi_elements_complex_##name [2] = { \
- (ffi_type *)(&ffi_type_##name), NULL \
-}; \
-struct struct_align_complex_##name { \
- char c; \
- _Complex type x; \
-}; \
-FFI_EXTERN \
-maybe_const ffi_type ffi_type_complex_##name = { \
- sizeof(_Complex type), \
- offsetof(struct struct_align_complex_##name, x), \
- FFI_TYPE_COMPLEX, \
- (ffi_type **)ffi_elements_complex_##name \
-}
-
-/* Size and alignment are fake here. They must not be 0. */
-FFI_EXTERN const ffi_type ffi_type_void = {
- 1, 1, FFI_TYPE_VOID, NULL
-};
-
-FFI_TYPEDEF(uint8, UINT8, FFI_TYPE_UINT8, const);
-FFI_TYPEDEF(sint8, SINT8, FFI_TYPE_SINT8, const);
-FFI_TYPEDEF(uint16, UINT16, FFI_TYPE_UINT16, const);
-FFI_TYPEDEF(sint16, SINT16, FFI_TYPE_SINT16, const);
-FFI_TYPEDEF(uint32, UINT32, FFI_TYPE_UINT32, const);
-FFI_TYPEDEF(sint32, SINT32, FFI_TYPE_SINT32, const);
-FFI_TYPEDEF(uint64, UINT64, FFI_TYPE_UINT64, const);
-FFI_TYPEDEF(sint64, SINT64, FFI_TYPE_SINT64, const);
-
-FFI_TYPEDEF(pointer, void*, FFI_TYPE_POINTER, const);
-
-FFI_TYPEDEF(float, float, FFI_TYPE_FLOAT, const);
-FFI_TYPEDEF(double, double, FFI_TYPE_DOUBLE, const);
-
-#if !defined HAVE_LONG_DOUBLE_VARIANT || defined __alpha__
-#define FFI_LDBL_CONST const
-#else
-#define FFI_LDBL_CONST
-#endif
-
-#ifdef __alpha__
-/* Even if we're not configured to default to 128-bit long double,
- maintain binary compatibility, as -mlong-double-128 can be used
- at any time. */
-/* Validate the hard-coded number below. */
-# if defined(__LONG_DOUBLE_128__) && FFI_TYPE_LONGDOUBLE != 4
-# error FFI_TYPE_LONGDOUBLE out of date
-# endif
-const ffi_type ffi_type_longdouble = { 16, 16, 4, NULL };
-#elif FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-FFI_TYPEDEF(longdouble, long double, FFI_TYPE_LONGDOUBLE, FFI_LDBL_CONST);
-#endif
-
-#ifdef FFI_TARGET_HAS_COMPLEX_TYPE
-FFI_COMPLEX_TYPEDEF(float, float, const);
-FFI_COMPLEX_TYPEDEF(double, double, const);
-#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-FFI_COMPLEX_TYPEDEF(longdouble, long double, FFI_LDBL_CONST);
-#endif
-#endif
-
-
-====================File: src/x86/ffi.c====================
-/* -----------------------------------------------------------------------
- ffi.c - Copyright (c) 2017 Anthony Green
- Copyright (c) 1996, 1998, 1999, 2001, 2007, 2008 Red Hat, Inc.
- Copyright (c) 2002 Ranjit Mathew
- Copyright (c) 2002 Bo Thorsen
- Copyright (c) 2002 Roger Sayle
- Copyright (C) 2008, 2010 Free Software Foundation, Inc.
-
- x86 Foreign Function Interface
-
- 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.
- ----------------------------------------------------------------------- */
-
-#if defined(__i386__) || defined(_M_IX86)
-#include <ffi.h>
-#include <ffi_common.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include "internal.h"
-
-/* Force FFI_TYPE_LONGDOUBLE to be different than FFI_TYPE_DOUBLE;
- all further uses in this file will refer to the 80-bit type. */
-#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-# if FFI_TYPE_LONGDOUBLE != 4
-# error FFI_TYPE_LONGDOUBLE out of date
-# endif
-#else
-# undef FFI_TYPE_LONGDOUBLE
-# define FFI_TYPE_LONGDOUBLE 4
-#endif
-
-#if defined(__GNUC__) && !defined(__declspec)
-# define __declspec(x) __attribute__((x))
-#endif
-
-#if defined(_MSC_VER) && defined(_M_IX86)
-/* Stack is not 16-byte aligned on Windows. */
-#define STACK_ALIGN(bytes) (bytes)
-#else
-#define STACK_ALIGN(bytes) FFI_ALIGN (bytes, 16)
-#endif
-
-/* Perform machine dependent cif processing. */
-ffi_status FFI_HIDDEN
-ffi_prep_cif_machdep(ffi_cif *cif)
-{
- size_t bytes = 0;
- int i, n, flags, cabi = cif->abi;
-
- switch (cabi)
- {
- case FFI_SYSV:
- case FFI_STDCALL:
- case FFI_THISCALL:
- case FFI_FASTCALL:
- case FFI_MS_CDECL:
- case FFI_PASCAL:
- case FFI_REGISTER:
- break;
- default:
- return FFI_BAD_ABI;
- }
-
- switch (cif->rtype->type)
- {
- case FFI_TYPE_VOID:
- flags = X86_RET_VOID;
- break;
- case FFI_TYPE_FLOAT:
- flags = X86_RET_FLOAT;
- break;
- case FFI_TYPE_DOUBLE:
- flags = X86_RET_DOUBLE;
- break;
- case FFI_TYPE_LONGDOUBLE:
- flags = X86_RET_LDOUBLE;
- break;
- case FFI_TYPE_UINT8:
- flags = X86_RET_UINT8;
- break;
- case FFI_TYPE_UINT16:
- flags = X86_RET_UINT16;
- break;
- case FFI_TYPE_SINT8:
- flags = X86_RET_SINT8;
- break;
- case FFI_TYPE_SINT16:
- flags = X86_RET_SINT16;
- break;
- case FFI_TYPE_INT:
- case FFI_TYPE_SINT32:
- case FFI_TYPE_UINT32:
- case FFI_TYPE_POINTER:
- flags = X86_RET_INT32;
- break;
- case FFI_TYPE_SINT64:
- case FFI_TYPE_UINT64:
- flags = X86_RET_INT64;
- break;
- case FFI_TYPE_STRUCT:
-#ifndef X86
- /* ??? This should be a different ABI rather than an ifdef. */
- if (cif->rtype->size == 1)
- flags = X86_RET_STRUCT_1B;
- else if (cif->rtype->size == 2)
- flags = X86_RET_STRUCT_2B;
- else if (cif->rtype->size == 4)
- flags = X86_RET_INT32;
- else if (cif->rtype->size == 8)
- flags = X86_RET_INT64;
- else
-#endif
- {
- do_struct:
- switch (cabi)
- {
- case FFI_THISCALL:
- case FFI_FASTCALL:
- case FFI_STDCALL:
- case FFI_MS_CDECL:
- flags = X86_RET_STRUCTARG;
- break;
- default:
- flags = X86_RET_STRUCTPOP;
- break;
- }
- /* Allocate space for return value pointer. */
- bytes += FFI_ALIGN (sizeof(void*), FFI_SIZEOF_ARG);
- }
- break;
- case FFI_TYPE_COMPLEX:
- switch (cif->rtype->elements[0]->type)
- {
- case FFI_TYPE_DOUBLE:
- case FFI_TYPE_LONGDOUBLE:
- case FFI_TYPE_SINT64:
- case FFI_TYPE_UINT64:
- goto do_struct;
- case FFI_TYPE_FLOAT:
- case FFI_TYPE_INT:
- case FFI_TYPE_SINT32:
- case FFI_TYPE_UINT32:
- flags = X86_RET_INT64;
- break;
- case FFI_TYPE_SINT16:
- case FFI_TYPE_UINT16:
- flags = X86_RET_INT32;
- break;
- case FFI_TYPE_SINT8:
- case FFI_TYPE_UINT8:
- flags = X86_RET_STRUCT_2B;
- break;
- default:
- return FFI_BAD_TYPEDEF;
- }
- break;
- default:
- return FFI_BAD_TYPEDEF;
- }
- cif->flags = flags;
-
- for (i = 0, n = cif->nargs; i < n; i++)
- {
- ffi_type *t = cif->arg_types[i];
-
- bytes = FFI_ALIGN (bytes, t->alignment);
- bytes += FFI_ALIGN (t->size, FFI_SIZEOF_ARG);
- }
- cif->bytes = bytes;
-
- return FFI_OK;
-}
-
-static ffi_arg
-extend_basic_type(void *arg, int type)
-{
- switch (type)
- {
- case FFI_TYPE_SINT8:
- return *(SINT8 *)arg;
- case FFI_TYPE_UINT8:
- return *(UINT8 *)arg;
- case FFI_TYPE_SINT16:
- return *(SINT16 *)arg;
- case FFI_TYPE_UINT16:
- return *(UINT16 *)arg;
-
- case FFI_TYPE_SINT32:
- case FFI_TYPE_UINT32:
- case FFI_TYPE_POINTER:
- case FFI_TYPE_FLOAT:
- return *(UINT32 *)arg;
-
- default:
- abort();
- }
-}
-
-struct call_frame
-{
- void *ebp; /* 0 */
- void *retaddr; /* 4 */
- void (*fn)(void); /* 8 */
- int flags; /* 12 */
- void *rvalue; /* 16 */
- unsigned regs[3]; /* 20-28 */
-};
-
-struct abi_params
-{
- int dir; /* parameter growth direction */
- int static_chain; /* the static chain register used by gcc */
- int nregs; /* number of register parameters */
- int regs[3];
-};
-
-static const struct abi_params abi_params[FFI_LAST_ABI] = {
- [FFI_SYSV] = { 1, R_ECX, 0 },
- [FFI_THISCALL] = { 1, R_EAX, 1, { R_ECX } },
- [FFI_FASTCALL] = { 1, R_EAX, 2, { R_ECX, R_EDX } },
- [FFI_STDCALL] = { 1, R_ECX, 0 },
- [FFI_PASCAL] = { -1, R_ECX, 0 },
- /* ??? No defined static chain; gcc does not support REGISTER. */
- [FFI_REGISTER] = { -1, R_ECX, 3, { R_EAX, R_EDX, R_ECX } },
- [FFI_MS_CDECL] = { 1, R_ECX, 0 }
-};
-
-#ifdef HAVE_FASTCALL
- #ifdef _MSC_VER
- #define FFI_DECLARE_FASTCALL __fastcall
- #else
- #define FFI_DECLARE_FASTCALL __declspec(fastcall)
- #endif
-#else
- #define FFI_DECLARE_FASTCALL
-#endif
-
-extern void FFI_DECLARE_FASTCALL ffi_call_i386(struct call_frame *, char *) FFI_HIDDEN;
-
-static void
-ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue,
- void **avalue, void *closure)
-{
- size_t rsize, bytes;
- struct call_frame *frame;
- char *stack, *argp;
- ffi_type **arg_types;
- int flags, cabi, i, n, dir, narg_reg;
- const struct abi_params *pabi;
-
- flags = cif->flags;
- cabi = cif->abi;
- pabi = &abi_params[cabi];
- dir = pabi->dir;
-
- rsize = 0;
- if (rvalue == NULL)
- {
- switch (flags)
- {
- case X86_RET_FLOAT:
- case X86_RET_DOUBLE:
- case X86_RET_LDOUBLE:
- case X86_RET_STRUCTPOP:
- case X86_RET_STRUCTARG:
- /* The float cases need to pop the 387 stack.
- The struct cases need to pass a valid pointer to the callee. */
- rsize = cif->rtype->size;
- break;
- default:
- /* We can pretend that the callee returns nothing. */
- flags = X86_RET_VOID;
- break;
- }
- }
-
- bytes = STACK_ALIGN (cif->bytes);
- stack = alloca(bytes + sizeof(*frame) + rsize);
- argp = (dir < 0 ? stack + bytes : stack);
- frame = (struct call_frame *)(stack + bytes);
- if (rsize)
- rvalue = frame + 1;
-
- frame->fn = fn;
- frame->flags = flags;
- frame->rvalue = rvalue;
- frame->regs[pabi->static_chain] = (unsigned)closure;
-
- narg_reg = 0;
- switch (flags)
- {
- case X86_RET_STRUCTARG:
- /* The pointer is passed as the first argument. */
- if (pabi->nregs > 0)
- {
- frame->regs[pabi->regs[0]] = (unsigned)rvalue;
- narg_reg = 1;
- break;
- }
- /* fallthru */
- case X86_RET_STRUCTPOP:
- *(void **)argp = rvalue;
- argp += sizeof(void *);
- break;
- }
-
- arg_types = cif->arg_types;
- for (i = 0, n = cif->nargs; i < n; i++)
- {
- ffi_type *ty = arg_types[i];
- void *valp = avalue[i];
- size_t z = ty->size;
- int t = ty->type;
-
- if (z <= FFI_SIZEOF_ARG && t != FFI_TYPE_STRUCT)
- {
- ffi_arg val = extend_basic_type (valp, t);
-
- if (t != FFI_TYPE_FLOAT && narg_reg < pabi->nregs)
- frame->regs[pabi->regs[narg_reg++]] = val;
- else if (dir < 0)
- {
- argp -= 4;
- *(ffi_arg *)argp = val;
- }
- else
- {
- *(ffi_arg *)argp = val;
- argp += 4;
- }
- }
- else
- {
- size_t za = FFI_ALIGN (z, FFI_SIZEOF_ARG);
- size_t align = FFI_SIZEOF_ARG;
-
- /* Issue 434: For thiscall and fastcall, if the paramter passed
- as 64-bit integer or struct, all following integer paramters
- will be passed on stack. */
- if ((cabi == FFI_THISCALL || cabi == FFI_FASTCALL)
- && (t == FFI_TYPE_SINT64
- || t == FFI_TYPE_UINT64
- || t == FFI_TYPE_STRUCT))
- narg_reg = 2;
-
- /* Alignment rules for arguments are quite complex. Vectors and
- structures with 16 byte alignment get it. Note that long double
- on Darwin does have 16 byte alignment, and does not get this
- alignment if passed directly; a structure with a long double
- inside, however, would get 16 byte alignment. Since libffi does
- not support vectors, we need non concern ourselves with other
- cases. */
- if (t == FFI_TYPE_STRUCT && ty->alignment >= 16)
- align = 16;
-
- if (dir < 0)
- {
- /* ??? These reverse argument ABIs are probably too old
- to have cared about alignment. Someone should check. */
- argp -= za;
- memcpy (argp, valp, z);
- }
- else
- {
- argp = (char *)FFI_ALIGN (argp, align);
- memcpy (argp, valp, z);
- argp += za;
- }
- }
- }
- FFI_ASSERT (dir > 0 || argp == stack);
-
- ffi_call_i386 (frame, stack);
-}
-
-void
-ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
-{
- ffi_call_int (cif, fn, rvalue, avalue, NULL);
-}
-
-void
-ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue,
- void **avalue, void *closure)
-{
- ffi_call_int (cif, fn, rvalue, avalue, closure);
-}
-
-/** private members **/
-
-void FFI_HIDDEN ffi_closure_i386(void);
-void FFI_HIDDEN ffi_closure_STDCALL(void);
-void FFI_HIDDEN ffi_closure_REGISTER(void);
-
-struct closure_frame
-{
- unsigned rettemp[4]; /* 0 */
- unsigned regs[3]; /* 16-24 */
- ffi_cif *cif; /* 28 */
- void (*fun)(ffi_cif*,void*,void**,void*); /* 32 */
- void *user_data; /* 36 */
-};
-
-int FFI_HIDDEN FFI_DECLARE_FASTCALL
-ffi_closure_inner (struct closure_frame *frame, char *stack)
-{
- ffi_cif *cif = frame->cif;
- int cabi, i, n, flags, dir, narg_reg;
- const struct abi_params *pabi;
- ffi_type **arg_types;
- char *argp;
- void *rvalue;
- void **avalue;
-
- cabi = cif->abi;
- flags = cif->flags;
- narg_reg = 0;
- rvalue = frame->rettemp;
- pabi = &abi_params[cabi];
- dir = pabi->dir;
- argp = (dir < 0 ? stack + STACK_ALIGN (cif->bytes) : stack);
-
- switch (flags)
- {
- case X86_RET_STRUCTARG:
- if (pabi->nregs > 0)
- {
- rvalue = (void *)frame->regs[pabi->regs[0]];
- narg_reg = 1;
- frame->rettemp[0] = (unsigned)rvalue;
- break;
- }
- /* fallthru */
- case X86_RET_STRUCTPOP:
- rvalue = *(void **)argp;
- argp += sizeof(void *);
- frame->rettemp[0] = (unsigned)rvalue;
- break;
- }
-
- n = cif->nargs;
- avalue = alloca(sizeof(void *) * n);
-
- arg_types = cif->arg_types;
- for (i = 0; i < n; ++i)
- {
- ffi_type *ty = arg_types[i];
- size_t z = ty->size;
- int t = ty->type;
- void *valp;
-
- if (z <= FFI_SIZEOF_ARG && t != FFI_TYPE_STRUCT)
- {
- if (t != FFI_TYPE_FLOAT && narg_reg < pabi->nregs)
- valp = &frame->regs[pabi->regs[narg_reg++]];
- else if (dir < 0)
- {
- argp -= 4;
- valp = argp;
- }
- else
- {
- valp = argp;
- argp += 4;
- }
- }
- else
- {
- size_t za = FFI_ALIGN (z, FFI_SIZEOF_ARG);
- size_t align = FFI_SIZEOF_ARG;
-
- /* See the comment in ffi_call_int. */
- if (t == FFI_TYPE_STRUCT && ty->alignment >= 16)
- align = 16;
-
- /* Issue 434: For thiscall and fastcall, if the paramter passed
- as 64-bit integer or struct, all following integer paramters
- will be passed on stack. */
- if ((cabi == FFI_THISCALL || cabi == FFI_FASTCALL)
- && (t == FFI_TYPE_SINT64
- || t == FFI_TYPE_UINT64
- || t == FFI_TYPE_STRUCT))
- narg_reg = 2;
-
- if (dir < 0)
- {
- /* ??? These reverse argument ABIs are probably too old
- to have cared about alignment. Someone should check. */
- argp -= za;
- valp = argp;
- }
- else
- {
- argp = (char *)FFI_ALIGN (argp, align);
- valp = argp;
- argp += za;
- }
- }
-
- avalue[i] = valp;
- }
-
- frame->fun (cif, rvalue, avalue, frame->user_data);
-
- if (cabi == FFI_STDCALL)
- return flags + (cif->bytes << X86_RET_POP_SHIFT);
- else
- return flags;
-}
-
-ffi_status
-ffi_prep_closure_loc (ffi_closure* closure,
- ffi_cif* cif,
- void (*fun)(ffi_cif*,void*,void**,void*),
- void *user_data,
- void *codeloc)
-{
- char *tramp = closure->tramp;
- void (*dest)(void);
- int op = 0xb8; /* movl imm, %eax */
-
- switch (cif->abi)
- {
- case FFI_SYSV:
- case FFI_THISCALL:
- case FFI_FASTCALL:
- case FFI_MS_CDECL:
- dest = ffi_closure_i386;
- break;
- case FFI_STDCALL:
- case FFI_PASCAL:
- dest = ffi_closure_STDCALL;
- break;
- case FFI_REGISTER:
- dest = ffi_closure_REGISTER;
- op = 0x68; /* pushl imm */
- break;
- default:
- return FFI_BAD_ABI;
- }
-
- /* movl or pushl immediate. */
- tramp[0] = op;
- *(void **)(tramp + 1) = codeloc;
-
- /* jmp dest */
- tramp[5] = 0xe9;
- *(unsigned *)(tramp + 6) = (unsigned)dest - ((unsigned)codeloc + 10);
-
- closure->cif = cif;
- closure->fun = fun;
- closure->user_data = user_data;
-
- return FFI_OK;
-}
-
-void FFI_HIDDEN ffi_go_closure_EAX(void);
-void FFI_HIDDEN ffi_go_closure_ECX(void);
-void FFI_HIDDEN ffi_go_closure_STDCALL(void);
-
-ffi_status
-ffi_prep_go_closure (ffi_go_closure* closure, ffi_cif* cif,
- void (*fun)(ffi_cif*,void*,void**,void*))
-{
- void (*dest)(void);
-
- switch (cif->abi)
- {
- case FFI_SYSV:
- case FFI_MS_CDECL:
- dest = ffi_go_closure_ECX;
- break;
- case FFI_THISCALL:
- case FFI_FASTCALL:
- dest = ffi_go_closure_EAX;
- break;
- case FFI_STDCALL:
- case FFI_PASCAL:
- dest = ffi_go_closure_STDCALL;
- break;
- case FFI_REGISTER:
- default:
- return FFI_BAD_ABI;
- }
-
- closure->tramp = dest;
- closure->cif = cif;
- closure->fun = fun;
-
- return FFI_OK;
-}
-
-/* ------- Native raw API support -------------------------------- */
-
-#if !FFI_NO_RAW_API
-
-void FFI_HIDDEN ffi_closure_raw_SYSV(void);
-void FFI_HIDDEN ffi_closure_raw_THISCALL(void);
-
-ffi_status
-ffi_prep_raw_closure_loc (ffi_raw_closure *closure,
- ffi_cif *cif,
- void (*fun)(ffi_cif*,void*,ffi_raw*,void*),
- void *user_data,
- void *codeloc)
-{
- char *tramp = closure->tramp;
- void (*dest)(void);
- int i;
-
- /* We currently don't support certain kinds of arguments for raw
- closures. This should be implemented by a separate assembly
- language routine, since it would require argument processing,
- something we don't do now for performance. */
- for (i = cif->nargs-1; i >= 0; i--)
- switch (cif->arg_types[i]->type)
- {
- case FFI_TYPE_STRUCT:
- case FFI_TYPE_LONGDOUBLE:
- return FFI_BAD_TYPEDEF;
- }
-
- switch (cif->abi)
- {
- case FFI_THISCALL:
- dest = ffi_closure_raw_THISCALL;
- break;
- case FFI_SYSV:
- dest = ffi_closure_raw_SYSV;
- break;
- default:
- return FFI_BAD_ABI;
- }
-
- /* movl imm, %eax. */
- tramp[0] = 0xb8;
- *(void **)(tramp + 1) = codeloc;
-
- /* jmp dest */
- tramp[5] = 0xe9;
- *(unsigned *)(tramp + 6) = (unsigned)dest - ((unsigned)codeloc + 10);
-
- closure->cif = cif;
- closure->fun = fun;
- closure->user_data = user_data;
-
- return FFI_OK;
-}
-
-void
-ffi_raw_call(ffi_cif *cif, void (*fn)(void), void *rvalue, ffi_raw *avalue)
-{
- size_t rsize, bytes;
- struct call_frame *frame;
- char *stack, *argp;
- ffi_type **arg_types;
- int flags, cabi, i, n, narg_reg;
- const struct abi_params *pabi;
-
- flags = cif->flags;
- cabi = cif->abi;
- pabi = &abi_params[cabi];
-
- rsize = 0;
- if (rvalue == NULL)
- {
- switch (flags)
- {
- case X86_RET_FLOAT:
- case X86_RET_DOUBLE:
- case X86_RET_LDOUBLE:
- case X86_RET_STRUCTPOP:
- case X86_RET_STRUCTARG:
- /* The float cases need to pop the 387 stack.
- The struct cases need to pass a valid pointer to the callee. */
- rsize = cif->rtype->size;
- break;
- default:
- /* We can pretend that the callee returns nothing. */
- flags = X86_RET_VOID;
- break;
- }
- }
-
- bytes = STACK_ALIGN (cif->bytes);
- argp = stack =
- (void *)((uintptr_t)alloca(bytes + sizeof(*frame) + rsize + 15) & ~16);
- frame = (struct call_frame *)(stack + bytes);
- if (rsize)
- rvalue = frame + 1;
-
- frame->fn = fn;
- frame->flags = flags;
- frame->rvalue = rvalue;
-
- narg_reg = 0;
- switch (flags)
- {
- case X86_RET_STRUCTARG:
- /* The pointer is passed as the first argument. */
- if (pabi->nregs > 0)
- {
- frame->regs[pabi->regs[0]] = (unsigned)rvalue;
- narg_reg = 1;
- break;
- }
- /* fallthru */
- case X86_RET_STRUCTPOP:
- *(void **)argp = rvalue;
- argp += sizeof(void *);
- bytes -= sizeof(void *);
- break;
- }
-
- arg_types = cif->arg_types;
- for (i = 0, n = cif->nargs; narg_reg < pabi->nregs && i < n; i++)
- {
- ffi_type *ty = arg_types[i];
- size_t z = ty->size;
- int t = ty->type;
-
- if (z <= FFI_SIZEOF_ARG && t != FFI_TYPE_STRUCT && t != FFI_TYPE_FLOAT)
- {
- ffi_arg val = extend_basic_type (avalue, t);
- frame->regs[pabi->regs[narg_reg++]] = val;
- z = FFI_SIZEOF_ARG;
- }
- else
- {
- memcpy (argp, avalue, z);
- z = FFI_ALIGN (z, FFI_SIZEOF_ARG);
- argp += z;
- }
- avalue += z;
- bytes -= z;
- }
- if (i < n)
- memcpy (argp, avalue, bytes);
-
- ffi_call_i386 (frame, stack);
-}
-#endif /* !FFI_NO_RAW_API */
-#endif /* __i386__ */
-
-
-====================File: src/x86/ffi64.c====================
-/* -----------------------------------------------------------------------
- ffi64.c - Copyright (c) 2011, 2018 Anthony Green
- Copyright (c) 2013 The Written Word, Inc.
- Copyright (c) 2008, 2010 Red Hat, Inc.
- Copyright (c) 2002, 2007 Bo Thorsen <bo@suse.de>
-
+ X86 Foreign Function Interface
+
+ 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.
+ ----------------------------------------------------------------------- */
+
+#ifdef __i386__
+#ifndef _MSC_VER
+
+#define LIBFFI_ASM
+#include <fficonfig.h>
+#include <ffi.h>
+#include "internal.h"
+
+#define C2(X, Y) X ## Y
+#define C1(X, Y) C2(X, Y)
+#ifdef __USER_LABEL_PREFIX__
+# define C(X) C1(__USER_LABEL_PREFIX__, X)
+#else
+# define C(X) X
+#endif
+
+#ifdef X86_DARWIN
+# define L(X) C1(L, X)
+#else
+# define L(X) C1(.L, X)
+#endif
+
+#ifdef __ELF__
+# define ENDF(X) .type X,@function; .size X, . - X
+#else
+# define ENDF(X)
+#endif
+
+/* Handle win32 fastcall name mangling. */
+#ifdef X86_WIN32
+# define ffi_call_i386 @ffi_call_i386@8
+# define ffi_closure_inner @ffi_closure_inner@8
+#else
+# define ffi_call_i386 C(ffi_call_i386)
+# define ffi_closure_inner C(ffi_closure_inner)
+#endif
+
+/* This macro allows the safe creation of jump tables without an
+ actual table. The entry points into the table are all 8 bytes.
+ The use of ORG asserts that we're at the correct location. */
+/* ??? The clang assembler doesn't handle .org with symbolic expressions. */
+#if defined(__clang__) || defined(__APPLE__) || (defined (__sun__) && defined(__svr4__))
+# define E(BASE, X) .balign 8
+#else
+# define E(BASE, X) .balign 8; .org BASE + X * 8
+#endif
+
+ .text
+ .balign 16
+ .globl ffi_call_i386
+ FFI_HIDDEN(ffi_call_i386)
+
+/* This is declared as
+
+ void ffi_call_i386(struct call_frame *frame, char *argp)
+ __attribute__((fastcall));
+
+ Thus the arguments are present in
+
+ ecx: frame
+ edx: argp
+*/
+
+ffi_call_i386:
+L(UW0):
+ # cfi_startproc
+#if !HAVE_FASTCALL
+ movl 4(%esp), %ecx
+ movl 8(%esp), %edx
+#endif
+ movl (%esp), %eax /* move the return address */
+ movl %ebp, (%ecx) /* store %ebp into local frame */
+ movl %eax, 4(%ecx) /* store retaddr into local frame */
+
+ /* New stack frame based off ebp. This is a itty bit of unwind
+ trickery in that the CFA *has* changed. There is no easy way
+ to describe it correctly on entry to the function. Fortunately,
+ it doesn't matter too much since at all points we can correctly
+ unwind back to ffi_call. Note that the location to which we
+ moved the return address is (the new) CFA-4, so from the
+ perspective of the unwind info, it hasn't moved. */
+ movl %ecx, %ebp
+L(UW1):
+ # cfi_def_cfa(%ebp, 8)
+ # cfi_rel_offset(%ebp, 0)
+
+ movl %edx, %esp /* set outgoing argument stack */
+ movl 20+R_EAX*4(%ebp), %eax /* set register arguments */
+ movl 20+R_EDX*4(%ebp), %edx
+ movl 20+R_ECX*4(%ebp), %ecx
+
+ call *8(%ebp)
+
+ movl 12(%ebp), %ecx /* load return type code */
+ movl %ebx, 8(%ebp) /* preserve %ebx */
+L(UW2):
+ # cfi_rel_offset(%ebx, 8)
+
+ andl $X86_RET_TYPE_MASK, %ecx
+#ifdef __PIC__
+ call C(__x86.get_pc_thunk.bx)
+L(pc1):
+ leal L(store_table)-L(pc1)(%ebx, %ecx, 8), %ebx
+#else
+ leal L(store_table)(,%ecx, 8), %ebx
+#endif
+ movl 16(%ebp), %ecx /* load result address */
+ jmp *%ebx
+
+ .balign 8
+L(store_table):
+E(L(store_table), X86_RET_FLOAT)
+ fstps (%ecx)
+ jmp L(e1)
+E(L(store_table), X86_RET_DOUBLE)
+ fstpl (%ecx)
+ jmp L(e1)
+E(L(store_table), X86_RET_LDOUBLE)
+ fstpt (%ecx)
+ jmp L(e1)
+E(L(store_table), X86_RET_SINT8)
+ movsbl %al, %eax
+ mov %eax, (%ecx)
+ jmp L(e1)
+E(L(store_table), X86_RET_SINT16)
+ movswl %ax, %eax
+ mov %eax, (%ecx)
+ jmp L(e1)
+E(L(store_table), X86_RET_UINT8)
+ movzbl %al, %eax
+ mov %eax, (%ecx)
+ jmp L(e1)
+E(L(store_table), X86_RET_UINT16)
+ movzwl %ax, %eax
+ mov %eax, (%ecx)
+ jmp L(e1)
+E(L(store_table), X86_RET_INT64)
+ movl %edx, 4(%ecx)
+ /* fallthru */
+E(L(store_table), X86_RET_INT32)
+ movl %eax, (%ecx)
+ /* fallthru */
+E(L(store_table), X86_RET_VOID)
+L(e1):
+ movl 8(%ebp), %ebx
+ movl %ebp, %esp
+ popl %ebp
+L(UW3):
+ # cfi_remember_state
+ # cfi_def_cfa(%esp, 4)
+ # cfi_restore(%ebx)
+ # cfi_restore(%ebp)
+ ret
+L(UW4):
+ # cfi_restore_state
+
+E(L(store_table), X86_RET_STRUCTPOP)
+ jmp L(e1)
+E(L(store_table), X86_RET_STRUCTARG)
+ jmp L(e1)
+E(L(store_table), X86_RET_STRUCT_1B)
+ movb %al, (%ecx)
+ jmp L(e1)
+E(L(store_table), X86_RET_STRUCT_2B)
+ movw %ax, (%ecx)
+ jmp L(e1)
+
+ /* Fill out the table so that bad values are predictable. */
+E(L(store_table), X86_RET_UNUSED14)
+ ud2
+E(L(store_table), X86_RET_UNUSED15)
+ ud2
+
+L(UW5):
+ # cfi_endproc
+ENDF(ffi_call_i386)
+
+/* The inner helper is declared as
+
+ void ffi_closure_inner(struct closure_frame *frame, char *argp)
+ __attribute_((fastcall))
+
+ Thus the arguments are placed in
+
+ ecx: frame
+ edx: argp
+*/
+
+/* Macros to help setting up the closure_data structure. */
+
+#if HAVE_FASTCALL
+# define closure_FS (40 + 4)
+# define closure_CF 0
+#else
+# define closure_FS (8 + 40 + 12)
+# define closure_CF 8
+#endif
+
+#define FFI_CLOSURE_SAVE_REGS \
+ movl %eax, closure_CF+16+R_EAX*4(%esp); \
+ movl %edx, closure_CF+16+R_EDX*4(%esp); \
+ movl %ecx, closure_CF+16+R_ECX*4(%esp)
+
+#define FFI_CLOSURE_COPY_TRAMP_DATA \
+ movl FFI_TRAMPOLINE_SIZE(%eax), %edx; /* copy cif */ \
+ movl FFI_TRAMPOLINE_SIZE+4(%eax), %ecx; /* copy fun */ \
+ movl FFI_TRAMPOLINE_SIZE+8(%eax), %eax; /* copy user_data */ \
+ movl %edx, closure_CF+28(%esp); \
+ movl %ecx, closure_CF+32(%esp); \
+ movl %eax, closure_CF+36(%esp)
+
+#if HAVE_FASTCALL
+# define FFI_CLOSURE_PREP_CALL \
+ movl %esp, %ecx; /* load closure_data */ \
+ leal closure_FS+4(%esp), %edx; /* load incoming stack */
+#else
+# define FFI_CLOSURE_PREP_CALL \
+ leal closure_CF(%esp), %ecx; /* load closure_data */ \
+ leal closure_FS+4(%esp), %edx; /* load incoming stack */ \
+ movl %ecx, (%esp); \
+ movl %edx, 4(%esp)
+#endif
+
+#define FFI_CLOSURE_CALL_INNER(UWN) \
+ call ffi_closure_inner
+
+#define FFI_CLOSURE_MASK_AND_JUMP(N, UW) \
+ andl $X86_RET_TYPE_MASK, %eax; \
+ leal L(C1(load_table,N))(, %eax, 8), %edx; \
+ movl closure_CF(%esp), %eax; /* optimiztic load */ \
+ jmp *%edx
+
+#ifdef __PIC__
+# if defined X86_DARWIN || defined HAVE_HIDDEN_VISIBILITY_ATTRIBUTE
+# undef FFI_CLOSURE_MASK_AND_JUMP
+# define FFI_CLOSURE_MASK_AND_JUMP(N, UW) \
+ andl $X86_RET_TYPE_MASK, %eax; \
+ call C(__x86.get_pc_thunk.dx); \
+L(C1(pc,N)): \
+ leal L(C1(load_table,N))-L(C1(pc,N))(%edx, %eax, 8), %edx; \
+ movl closure_CF(%esp), %eax; /* optimiztic load */ \
+ jmp *%edx
+# else
+# define FFI_CLOSURE_CALL_INNER_SAVE_EBX
+# undef FFI_CLOSURE_CALL_INNER
+# define FFI_CLOSURE_CALL_INNER(UWN) \
+ movl %ebx, 40(%esp); /* save ebx */ \
+L(C1(UW,UWN)): \
+ /* cfi_rel_offset(%ebx, 40); */ \
+ call C(__x86.get_pc_thunk.bx); /* load got register */ \
+ addl $C(_GLOBAL_OFFSET_TABLE_), %ebx; \
+ call ffi_closure_inner@PLT
+# undef FFI_CLOSURE_MASK_AND_JUMP
+# define FFI_CLOSURE_MASK_AND_JUMP(N, UWN) \
+ andl $X86_RET_TYPE_MASK, %eax; \
+ leal L(C1(load_table,N))@GOTOFF(%ebx, %eax, 8), %edx; \
+ movl 40(%esp), %ebx; /* restore ebx */ \
+L(C1(UW,UWN)): \
+ /* cfi_restore(%ebx); */ \
+ movl closure_CF(%esp), %eax; /* optimiztic load */ \
+ jmp *%edx
+# endif /* DARWIN || HIDDEN */
+#endif /* __PIC__ */
+
+ .balign 16
+ .globl C(ffi_go_closure_EAX)
+ FFI_HIDDEN(C(ffi_go_closure_EAX))
+C(ffi_go_closure_EAX):
+L(UW6):
+ # cfi_startproc
+ subl $closure_FS, %esp
+L(UW7):
+ # cfi_def_cfa_offset(closure_FS + 4)
+ FFI_CLOSURE_SAVE_REGS
+ movl 4(%eax), %edx /* copy cif */
+ movl 8(%eax), %ecx /* copy fun */
+ movl %edx, closure_CF+28(%esp)
+ movl %ecx, closure_CF+32(%esp)
+ movl %eax, closure_CF+36(%esp) /* closure is user_data */
+ jmp L(do_closure_i386)
+L(UW8):
+ # cfi_endproc
+ENDF(C(ffi_go_closure_EAX))
+
+ .balign 16
+ .globl C(ffi_go_closure_ECX)
+ FFI_HIDDEN(C(ffi_go_closure_ECX))
+C(ffi_go_closure_ECX):
+L(UW9):
+ # cfi_startproc
+ subl $closure_FS, %esp
+L(UW10):
+ # cfi_def_cfa_offset(closure_FS + 4)
+ FFI_CLOSURE_SAVE_REGS
+ movl 4(%ecx), %edx /* copy cif */
+ movl 8(%ecx), %eax /* copy fun */
+ movl %edx, closure_CF+28(%esp)
+ movl %eax, closure_CF+32(%esp)
+ movl %ecx, closure_CF+36(%esp) /* closure is user_data */
+ jmp L(do_closure_i386)
+L(UW11):
+ # cfi_endproc
+ENDF(C(ffi_go_closure_ECX))
+
+/* The closure entry points are reached from the ffi_closure trampoline.
+ On entry, %eax contains the address of the ffi_closure. */
+
+ .balign 16
+ .globl C(ffi_closure_i386)
+ FFI_HIDDEN(C(ffi_closure_i386))
+
+C(ffi_closure_i386):
+L(UW12):
+ # cfi_startproc
+ subl $closure_FS, %esp
+L(UW13):
+ # cfi_def_cfa_offset(closure_FS + 4)
+
+ FFI_CLOSURE_SAVE_REGS
+ FFI_CLOSURE_COPY_TRAMP_DATA
+
+ /* Entry point from preceeding Go closures. */
+L(do_closure_i386):
+
+ FFI_CLOSURE_PREP_CALL
+ FFI_CLOSURE_CALL_INNER(14)
+ FFI_CLOSURE_MASK_AND_JUMP(2, 15)
+
+ .balign 8
+L(load_table2):
+E(L(load_table2), X86_RET_FLOAT)
+ flds closure_CF(%esp)
+ jmp L(e2)
+E(L(load_table2), X86_RET_DOUBLE)
+ fldl closure_CF(%esp)
+ jmp L(e2)
+E(L(load_table2), X86_RET_LDOUBLE)
+ fldt closure_CF(%esp)
+ jmp L(e2)
+E(L(load_table2), X86_RET_SINT8)
+ movsbl %al, %eax
+ jmp L(e2)
+E(L(load_table2), X86_RET_SINT16)
+ movswl %ax, %eax
+ jmp L(e2)
+E(L(load_table2), X86_RET_UINT8)
+ movzbl %al, %eax
+ jmp L(e2)
+E(L(load_table2), X86_RET_UINT16)
+ movzwl %ax, %eax
+ jmp L(e2)
+E(L(load_table2), X86_RET_INT64)
+ movl closure_CF+4(%esp), %edx
+ jmp L(e2)
+E(L(load_table2), X86_RET_INT32)
+ nop
+ /* fallthru */
+E(L(load_table2), X86_RET_VOID)
+L(e2):
+ addl $closure_FS, %esp
+L(UW16):
+ # cfi_adjust_cfa_offset(-closure_FS)
+ ret
+L(UW17):
+ # cfi_adjust_cfa_offset(closure_FS)
+E(L(load_table2), X86_RET_STRUCTPOP)
+ addl $closure_FS, %esp
+L(UW18):
+ # cfi_adjust_cfa_offset(-closure_FS)
+ ret $4
+L(UW19):
+ # cfi_adjust_cfa_offset(closure_FS)
+E(L(load_table2), X86_RET_STRUCTARG)
+ jmp L(e2)
+E(L(load_table2), X86_RET_STRUCT_1B)
+ movzbl %al, %eax
+ jmp L(e2)
+E(L(load_table2), X86_RET_STRUCT_2B)
+ movzwl %ax, %eax
+ jmp L(e2)
+
+ /* Fill out the table so that bad values are predictable. */
+E(L(load_table2), X86_RET_UNUSED14)
+ ud2
+E(L(load_table2), X86_RET_UNUSED15)
+ ud2
+
+L(UW20):
+ # cfi_endproc
+ENDF(C(ffi_closure_i386))
+
+ .balign 16
+ .globl C(ffi_go_closure_STDCALL)
+ FFI_HIDDEN(C(ffi_go_closure_STDCALL))
+C(ffi_go_closure_STDCALL):
+L(UW21):
+ # cfi_startproc
+ subl $closure_FS, %esp
+L(UW22):
+ # cfi_def_cfa_offset(closure_FS + 4)
+ FFI_CLOSURE_SAVE_REGS
+ movl 4(%ecx), %edx /* copy cif */
+ movl 8(%ecx), %eax /* copy fun */
+ movl %edx, closure_CF+28(%esp)
+ movl %eax, closure_CF+32(%esp)
+ movl %ecx, closure_CF+36(%esp) /* closure is user_data */
+ jmp L(do_closure_STDCALL)
+L(UW23):
+ # cfi_endproc
+ENDF(C(ffi_go_closure_STDCALL))
+
+/* For REGISTER, we have no available parameter registers, and so we
+ enter here having pushed the closure onto the stack. */
+
+ .balign 16
+ .globl C(ffi_closure_REGISTER)
+ FFI_HIDDEN(C(ffi_closure_REGISTER))
+C(ffi_closure_REGISTER):
+L(UW24):
+ # cfi_startproc
+ # cfi_def_cfa(%esp, 8)
+ # cfi_offset(%eip, -8)
+ subl $closure_FS-4, %esp
+L(UW25):
+ # cfi_def_cfa_offset(closure_FS + 4)
+ FFI_CLOSURE_SAVE_REGS
+ movl closure_FS-4(%esp), %ecx /* load retaddr */
+ movl closure_FS(%esp), %eax /* load closure */
+ movl %ecx, closure_FS(%esp) /* move retaddr */
+ jmp L(do_closure_REGISTER)
+L(UW26):
+ # cfi_endproc
+ENDF(C(ffi_closure_REGISTER))
+
+/* For STDCALL (and others), we need to pop N bytes of arguments off
+ the stack following the closure. The amount needing to be popped
+ is returned to us from ffi_closure_inner. */
+
+ .balign 16
+ .globl C(ffi_closure_STDCALL)
+ FFI_HIDDEN(C(ffi_closure_STDCALL))
+C(ffi_closure_STDCALL):
+L(UW27):
+ # cfi_startproc
+ subl $closure_FS, %esp
+L(UW28):
+ # cfi_def_cfa_offset(closure_FS + 4)
+
+ FFI_CLOSURE_SAVE_REGS
+
+ /* Entry point from ffi_closure_REGISTER. */
+L(do_closure_REGISTER):
+
+ FFI_CLOSURE_COPY_TRAMP_DATA
+
+ /* Entry point from preceeding Go closure. */
+L(do_closure_STDCALL):
+
+ FFI_CLOSURE_PREP_CALL
+ FFI_CLOSURE_CALL_INNER(29)
+
+ movl %eax, %ecx
+ shrl $X86_RET_POP_SHIFT, %ecx /* isolate pop count */
+ leal closure_FS(%esp, %ecx), %ecx /* compute popped esp */
+ movl closure_FS(%esp), %edx /* move return address */
+ movl %edx, (%ecx)
+
+ /* From this point on, the value of %esp upon return is %ecx+4,
+ and we've copied the return address to %ecx to make return easy.
+ There's no point in representing this in the unwind info, as
+ there is always a window between the mov and the ret which
+ will be wrong from one point of view or another. */
+
+ FFI_CLOSURE_MASK_AND_JUMP(3, 30)
+
+ .balign 8
+L(load_table3):
+E(L(load_table3), X86_RET_FLOAT)
+ flds closure_CF(%esp)
+ movl %ecx, %esp
+ ret
+E(L(load_table3), X86_RET_DOUBLE)
+ fldl closure_CF(%esp)
+ movl %ecx, %esp
+ ret
+E(L(load_table3), X86_RET_LDOUBLE)
+ fldt closure_CF(%esp)
+ movl %ecx, %esp
+ ret
+E(L(load_table3), X86_RET_SINT8)
+ movsbl %al, %eax
+ movl %ecx, %esp
+ ret
+E(L(load_table3), X86_RET_SINT16)
+ movswl %ax, %eax
+ movl %ecx, %esp
+ ret
+E(L(load_table3), X86_RET_UINT8)
+ movzbl %al, %eax
+ movl %ecx, %esp
+ ret
+E(L(load_table3), X86_RET_UINT16)
+ movzwl %ax, %eax
+ movl %ecx, %esp
+ ret
+E(L(load_table3), X86_RET_INT64)
+ movl closure_CF+4(%esp), %edx
+ movl %ecx, %esp
+ ret
+E(L(load_table3), X86_RET_INT32)
+ movl %ecx, %esp
+ ret
+E(L(load_table3), X86_RET_VOID)
+ movl %ecx, %esp
+ ret
+E(L(load_table3), X86_RET_STRUCTPOP)
+ movl %ecx, %esp
+ ret
+E(L(load_table3), X86_RET_STRUCTARG)
+ movl %ecx, %esp
+ ret
+E(L(load_table3), X86_RET_STRUCT_1B)
+ movzbl %al, %eax
+ movl %ecx, %esp
+ ret
+E(L(load_table3), X86_RET_STRUCT_2B)
+ movzwl %ax, %eax
+ movl %ecx, %esp
+ ret
+
+ /* Fill out the table so that bad values are predictable. */
+E(L(load_table3), X86_RET_UNUSED14)
+ ud2
+E(L(load_table3), X86_RET_UNUSED15)
+ ud2
+
+L(UW31):
+ # cfi_endproc
+ENDF(C(ffi_closure_STDCALL))
+
+#if !FFI_NO_RAW_API
+
+#define raw_closure_S_FS (16+16+12)
+
+ .balign 16
+ .globl C(ffi_closure_raw_SYSV)
+ FFI_HIDDEN(C(ffi_closure_raw_SYSV))
+C(ffi_closure_raw_SYSV):
+L(UW32):
+ # cfi_startproc
+ subl $raw_closure_S_FS, %esp
+L(UW33):
+ # cfi_def_cfa_offset(raw_closure_S_FS + 4)
+ movl %ebx, raw_closure_S_FS-4(%esp)
+L(UW34):
+ # cfi_rel_offset(%ebx, raw_closure_S_FS-4)
+
+ movl FFI_TRAMPOLINE_SIZE+8(%eax), %edx /* load cl->user_data */
+ movl %edx, 12(%esp)
+ leal raw_closure_S_FS+4(%esp), %edx /* load raw_args */
+ movl %edx, 8(%esp)
+ leal 16(%esp), %edx /* load &res */
+ movl %edx, 4(%esp)
+ movl FFI_TRAMPOLINE_SIZE(%eax), %ebx /* load cl->cif */
+ movl %ebx, (%esp)
+ call *FFI_TRAMPOLINE_SIZE+4(%eax) /* call cl->fun */
+
+ movl 20(%ebx), %eax /* load cif->flags */
+ andl $X86_RET_TYPE_MASK, %eax
+#ifdef __PIC__
+ call C(__x86.get_pc_thunk.bx)
+L(pc4):
+ leal L(load_table4)-L(pc4)(%ebx, %eax, 8), %ecx
+#else
+ leal L(load_table4)(,%eax, 8), %ecx
+#endif
+ movl raw_closure_S_FS-4(%esp), %ebx
+L(UW35):
+ # cfi_restore(%ebx)
+ movl 16(%esp), %eax /* Optimistic load */
+ jmp *%ecx
+
+ .balign 8
+L(load_table4):
+E(L(load_table4), X86_RET_FLOAT)
+ flds 16(%esp)
+ jmp L(e4)
+E(L(load_table4), X86_RET_DOUBLE)
+ fldl 16(%esp)
+ jmp L(e4)
+E(L(load_table4), X86_RET_LDOUBLE)
+ fldt 16(%esp)
+ jmp L(e4)
+E(L(load_table4), X86_RET_SINT8)
+ movsbl %al, %eax
+ jmp L(e4)
+E(L(load_table4), X86_RET_SINT16)
+ movswl %ax, %eax
+ jmp L(e4)
+E(L(load_table4), X86_RET_UINT8)
+ movzbl %al, %eax
+ jmp L(e4)
+E(L(load_table4), X86_RET_UINT16)
+ movzwl %ax, %eax
+ jmp L(e4)
+E(L(load_table4), X86_RET_INT64)
+ movl 16+4(%esp), %edx
+ jmp L(e4)
+E(L(load_table4), X86_RET_INT32)
+ nop
+ /* fallthru */
+E(L(load_table4), X86_RET_VOID)
+L(e4):
+ addl $raw_closure_S_FS, %esp
+L(UW36):
+ # cfi_adjust_cfa_offset(-raw_closure_S_FS)
+ ret
+L(UW37):
+ # cfi_adjust_cfa_offset(raw_closure_S_FS)
+E(L(load_table4), X86_RET_STRUCTPOP)
+ addl $raw_closure_S_FS, %esp
+L(UW38):
+ # cfi_adjust_cfa_offset(-raw_closure_S_FS)
+ ret $4
+L(UW39):
+ # cfi_adjust_cfa_offset(raw_closure_S_FS)
+E(L(load_table4), X86_RET_STRUCTARG)
+ jmp L(e4)
+E(L(load_table4), X86_RET_STRUCT_1B)
+ movzbl %al, %eax
+ jmp L(e4)
+E(L(load_table4), X86_RET_STRUCT_2B)
+ movzwl %ax, %eax
+ jmp L(e4)
+
+ /* Fill out the table so that bad values are predictable. */
+E(L(load_table4), X86_RET_UNUSED14)
+ ud2
+E(L(load_table4), X86_RET_UNUSED15)
+ ud2
+
+L(UW40):
+ # cfi_endproc
+ENDF(C(ffi_closure_raw_SYSV))
+
+#define raw_closure_T_FS (16+16+8)
+
+ .balign 16
+ .globl C(ffi_closure_raw_THISCALL)
+ FFI_HIDDEN(C(ffi_closure_raw_THISCALL))
+C(ffi_closure_raw_THISCALL):
+L(UW41):
+ # cfi_startproc
+ /* Rearrange the stack such that %ecx is the first argument.
+ This means moving the return address. */
+ popl %edx
+L(UW42):
+ # cfi_def_cfa_offset(0)
+ # cfi_register(%eip, %edx)
+ pushl %ecx
+L(UW43):
+ # cfi_adjust_cfa_offset(4)
+ pushl %edx
+L(UW44):
+ # cfi_adjust_cfa_offset(4)
+ # cfi_rel_offset(%eip, 0)
+ subl $raw_closure_T_FS, %esp
+L(UW45):
+ # cfi_adjust_cfa_offset(raw_closure_T_FS)
+ movl %ebx, raw_closure_T_FS-4(%esp)
+L(UW46):
+ # cfi_rel_offset(%ebx, raw_closure_T_FS-4)
+
+ movl FFI_TRAMPOLINE_SIZE+8(%eax), %edx /* load cl->user_data */
+ movl %edx, 12(%esp)
+ leal raw_closure_T_FS+4(%esp), %edx /* load raw_args */
+ movl %edx, 8(%esp)
+ leal 16(%esp), %edx /* load &res */
+ movl %edx, 4(%esp)
+ movl FFI_TRAMPOLINE_SIZE(%eax), %ebx /* load cl->cif */
+ movl %ebx, (%esp)
+ call *FFI_TRAMPOLINE_SIZE+4(%eax) /* call cl->fun */
+
+ movl 20(%ebx), %eax /* load cif->flags */
+ andl $X86_RET_TYPE_MASK, %eax
+#ifdef __PIC__
+ call C(__x86.get_pc_thunk.bx)
+L(pc5):
+ leal L(load_table5)-L(pc5)(%ebx, %eax, 8), %ecx
+#else
+ leal L(load_table5)(,%eax, 8), %ecx
+#endif
+ movl raw_closure_T_FS-4(%esp), %ebx
+L(UW47):
+ # cfi_restore(%ebx)
+ movl 16(%esp), %eax /* Optimistic load */
+ jmp *%ecx
+
+ .balign 8
+L(load_table5):
+E(L(load_table5), X86_RET_FLOAT)
+ flds 16(%esp)
+ jmp L(e5)
+E(L(load_table5), X86_RET_DOUBLE)
+ fldl 16(%esp)
+ jmp L(e5)
+E(L(load_table5), X86_RET_LDOUBLE)
+ fldt 16(%esp)
+ jmp L(e5)
+E(L(load_table5), X86_RET_SINT8)
+ movsbl %al, %eax
+ jmp L(e5)
+E(L(load_table5), X86_RET_SINT16)
+ movswl %ax, %eax
+ jmp L(e5)
+E(L(load_table5), X86_RET_UINT8)
+ movzbl %al, %eax
+ jmp L(e5)
+E(L(load_table5), X86_RET_UINT16)
+ movzwl %ax, %eax
+ jmp L(e5)
+E(L(load_table5), X86_RET_INT64)
+ movl 16+4(%esp), %edx
+ jmp L(e5)
+E(L(load_table5), X86_RET_INT32)
+ nop
+ /* fallthru */
+E(L(load_table5), X86_RET_VOID)
+L(e5):
+ addl $raw_closure_T_FS, %esp
+L(UW48):
+ # cfi_adjust_cfa_offset(-raw_closure_T_FS)
+ /* Remove the extra %ecx argument we pushed. */
+ ret $4
+L(UW49):
+ # cfi_adjust_cfa_offset(raw_closure_T_FS)
+E(L(load_table5), X86_RET_STRUCTPOP)
+ addl $raw_closure_T_FS, %esp
+L(UW50):
+ # cfi_adjust_cfa_offset(-raw_closure_T_FS)
+ ret $8
+L(UW51):
+ # cfi_adjust_cfa_offset(raw_closure_T_FS)
+E(L(load_table5), X86_RET_STRUCTARG)
+ jmp L(e5)
+E(L(load_table5), X86_RET_STRUCT_1B)
+ movzbl %al, %eax
+ jmp L(e5)
+E(L(load_table5), X86_RET_STRUCT_2B)
+ movzwl %ax, %eax
+ jmp L(e5)
+
+ /* Fill out the table so that bad values are predictable. */
+E(L(load_table5), X86_RET_UNUSED14)
+ ud2
+E(L(load_table5), X86_RET_UNUSED15)
+ ud2
+
+L(UW52):
+ # cfi_endproc
+ENDF(C(ffi_closure_raw_THISCALL))
+
+#endif /* !FFI_NO_RAW_API */
+
+#ifdef X86_DARWIN
+# define COMDAT(X) \
+ .section __TEXT,__text,coalesced,pure_instructions; \
+ .weak_definition X; \
+ FFI_HIDDEN(X)
+#elif defined __ELF__ && !(defined(__sun__) && defined(__svr4__))
+# define COMDAT(X) \
+ .section .text.X,"axG",@progbits,X,comdat; \
+ .globl X; \
+ FFI_HIDDEN(X)
+#else
+# define COMDAT(X)
+#endif
+
+#if defined(__PIC__)
+ COMDAT(C(__x86.get_pc_thunk.bx))
+C(__x86.get_pc_thunk.bx):
+ movl (%esp), %ebx
+ ret
+ENDF(C(__x86.get_pc_thunk.bx))
+# if defined X86_DARWIN || defined HAVE_HIDDEN_VISIBILITY_ATTRIBUTE
+ COMDAT(C(__x86.get_pc_thunk.dx))
+C(__x86.get_pc_thunk.dx):
+ movl (%esp), %edx
+ ret
+ENDF(C(__x86.get_pc_thunk.dx))
+#endif /* DARWIN || HIDDEN */
+#endif /* __PIC__ */
+
+/* Sadly, OSX cctools-as doesn't understand .cfi directives at all. */
+
+#ifdef __APPLE__
+.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support
+EHFrame0:
+#elif defined(X86_WIN32)
+.section .eh_frame,"r"
+#elif defined(HAVE_AS_X86_64_UNWIND_SECTION_TYPE)
+.section .eh_frame,EH_FRAME_FLAGS,@unwind
+#else
+.section .eh_frame,EH_FRAME_FLAGS,@progbits
+#endif
+
+#ifdef HAVE_AS_X86_PCREL
+# define PCREL(X) X - .
+#else
+# define PCREL(X) X@rel
+#endif
+
+/* Simplify advancing between labels. Assume DW_CFA_advance_loc1 fits. */
+#define ADV(N, P) .byte 2, L(N)-L(P)
+
+ .balign 4
+L(CIE):
+ .set L(set0),L(ECIE)-L(SCIE)
+ .long L(set0) /* CIE Length */
+L(SCIE):
+ .long 0 /* CIE Identifier Tag */
+ .byte 1 /* CIE Version */
+ .ascii "zR\0" /* CIE Augmentation */
+ .byte 1 /* CIE Code Alignment Factor */
+ .byte 0x7c /* CIE Data Alignment Factor */
+ .byte 0x8 /* CIE RA Column */
+ .byte 1 /* Augmentation size */
+ .byte 0x1b /* FDE Encoding (pcrel sdata4) */
+ .byte 0xc, 4, 4 /* DW_CFA_def_cfa, %esp offset 4 */
+ .byte 0x80+8, 1 /* DW_CFA_offset, %eip offset 1*-4 */
+ .balign 4
+L(ECIE):
+
+ .set L(set1),L(EFDE1)-L(SFDE1)
+ .long L(set1) /* FDE Length */
+L(SFDE1):
+ .long L(SFDE1)-L(CIE) /* FDE CIE offset */
+ .long PCREL(L(UW0)) /* Initial location */
+ .long L(UW5)-L(UW0) /* Address range */
+ .byte 0 /* Augmentation size */
+ ADV(UW1, UW0)
+ .byte 0xc, 5, 8 /* DW_CFA_def_cfa, %ebp 8 */
+ .byte 0x80+5, 2 /* DW_CFA_offset, %ebp 2*-4 */
+ ADV(UW2, UW1)
+ .byte 0x80+3, 0 /* DW_CFA_offset, %ebx 0*-4 */
+ ADV(UW3, UW2)
+ .byte 0xa /* DW_CFA_remember_state */
+ .byte 0xc, 4, 4 /* DW_CFA_def_cfa, %esp 4 */
+ .byte 0xc0+3 /* DW_CFA_restore, %ebx */
+ .byte 0xc0+5 /* DW_CFA_restore, %ebp */
+ ADV(UW4, UW3)
+ .byte 0xb /* DW_CFA_restore_state */
+ .balign 4
+L(EFDE1):
+
+ .set L(set2),L(EFDE2)-L(SFDE2)
+ .long L(set2) /* FDE Length */
+L(SFDE2):
+ .long L(SFDE2)-L(CIE) /* FDE CIE offset */
+ .long PCREL(L(UW6)) /* Initial location */
+ .long L(UW8)-L(UW6) /* Address range */
+ .byte 0 /* Augmentation size */
+ ADV(UW7, UW6)
+ .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */
+ .balign 4
+L(EFDE2):
+
+ .set L(set3),L(EFDE3)-L(SFDE3)
+ .long L(set3) /* FDE Length */
+L(SFDE3):
+ .long L(SFDE3)-L(CIE) /* FDE CIE offset */
+ .long PCREL(L(UW9)) /* Initial location */
+ .long L(UW11)-L(UW9) /* Address range */
+ .byte 0 /* Augmentation size */
+ ADV(UW10, UW9)
+ .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */
+ .balign 4
+L(EFDE3):
+
+ .set L(set4),L(EFDE4)-L(SFDE4)
+ .long L(set4) /* FDE Length */
+L(SFDE4):
+ .long L(SFDE4)-L(CIE) /* FDE CIE offset */
+ .long PCREL(L(UW12)) /* Initial location */
+ .long L(UW20)-L(UW12) /* Address range */
+ .byte 0 /* Augmentation size */
+ ADV(UW13, UW12)
+ .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */
+#ifdef FFI_CLOSURE_CALL_INNER_SAVE_EBX
+ ADV(UW14, UW13)
+ .byte 0x80+3, (40-(closure_FS+4))/-4 /* DW_CFA_offset %ebx */
+ ADV(UW15, UW14)
+ .byte 0xc0+3 /* DW_CFA_restore %ebx */
+ ADV(UW16, UW15)
+#else
+ ADV(UW16, UW13)
+#endif
+ .byte 0xe, 4 /* DW_CFA_def_cfa_offset */
+ ADV(UW17, UW16)
+ .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */
+ ADV(UW18, UW17)
+ .byte 0xe, 4 /* DW_CFA_def_cfa_offset */
+ ADV(UW19, UW18)
+ .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */
+ .balign 4
+L(EFDE4):
+
+ .set L(set5),L(EFDE5)-L(SFDE5)
+ .long L(set5) /* FDE Length */
+L(SFDE5):
+ .long L(SFDE5)-L(CIE) /* FDE CIE offset */
+ .long PCREL(L(UW21)) /* Initial location */
+ .long L(UW23)-L(UW21) /* Address range */
+ .byte 0 /* Augmentation size */
+ ADV(UW22, UW21)
+ .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */
+ .balign 4
+L(EFDE5):
+
+ .set L(set6),L(EFDE6)-L(SFDE6)
+ .long L(set6) /* FDE Length */
+L(SFDE6):
+ .long L(SFDE6)-L(CIE) /* FDE CIE offset */
+ .long PCREL(L(UW24)) /* Initial location */
+ .long L(UW26)-L(UW24) /* Address range */
+ .byte 0 /* Augmentation size */
+ .byte 0xe, 8 /* DW_CFA_def_cfa_offset */
+ .byte 0x80+8, 2 /* DW_CFA_offset %eip, 2*-4 */
+ ADV(UW25, UW24)
+ .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */
+ .balign 4
+L(EFDE6):
+
+ .set L(set7),L(EFDE7)-L(SFDE7)
+ .long L(set7) /* FDE Length */
+L(SFDE7):
+ .long L(SFDE7)-L(CIE) /* FDE CIE offset */
+ .long PCREL(L(UW27)) /* Initial location */
+ .long L(UW31)-L(UW27) /* Address range */
+ .byte 0 /* Augmentation size */
+ ADV(UW28, UW27)
+ .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */
+#ifdef FFI_CLOSURE_CALL_INNER_SAVE_EBX
+ ADV(UW29, UW28)
+ .byte 0x80+3, (40-(closure_FS+4))/-4 /* DW_CFA_offset %ebx */
+ ADV(UW30, UW29)
+ .byte 0xc0+3 /* DW_CFA_restore %ebx */
+#endif
+ .balign 4
+L(EFDE7):
+
+#if !FFI_NO_RAW_API
+ .set L(set8),L(EFDE8)-L(SFDE8)
+ .long L(set8) /* FDE Length */
+L(SFDE8):
+ .long L(SFDE8)-L(CIE) /* FDE CIE offset */
+ .long PCREL(L(UW32)) /* Initial location */
+ .long L(UW40)-L(UW32) /* Address range */
+ .byte 0 /* Augmentation size */
+ ADV(UW33, UW32)
+ .byte 0xe, raw_closure_S_FS+4 /* DW_CFA_def_cfa_offset */
+ ADV(UW34, UW33)
+ .byte 0x80+3, 2 /* DW_CFA_offset %ebx 2*-4 */
+ ADV(UW35, UW34)
+ .byte 0xc0+3 /* DW_CFA_restore %ebx */
+ ADV(UW36, UW35)
+ .byte 0xe, 4 /* DW_CFA_def_cfa_offset */
+ ADV(UW37, UW36)
+ .byte 0xe, raw_closure_S_FS+4 /* DW_CFA_def_cfa_offset */
+ ADV(UW38, UW37)
+ .byte 0xe, 4 /* DW_CFA_def_cfa_offset */
+ ADV(UW39, UW38)
+ .byte 0xe, raw_closure_S_FS+4 /* DW_CFA_def_cfa_offset */
+ .balign 4
+L(EFDE8):
+
+ .set L(set9),L(EFDE9)-L(SFDE9)
+ .long L(set9) /* FDE Length */
+L(SFDE9):
+ .long L(SFDE9)-L(CIE) /* FDE CIE offset */
+ .long PCREL(L(UW41)) /* Initial location */
+ .long L(UW52)-L(UW41) /* Address range */
+ .byte 0 /* Augmentation size */
+ ADV(UW42, UW41)
+ .byte 0xe, 0 /* DW_CFA_def_cfa_offset */
+ .byte 0x9, 8, 2 /* DW_CFA_register %eip, %edx */
+ ADV(UW43, UW42)
+ .byte 0xe, 4 /* DW_CFA_def_cfa_offset */
+ ADV(UW44, UW43)
+ .byte 0xe, 8 /* DW_CFA_def_cfa_offset */
+ .byte 0x80+8, 2 /* DW_CFA_offset %eip 2*-4 */
+ ADV(UW45, UW44)
+ .byte 0xe, raw_closure_T_FS+8 /* DW_CFA_def_cfa_offset */
+ ADV(UW46, UW45)
+ .byte 0x80+3, 3 /* DW_CFA_offset %ebx 3*-4 */
+ ADV(UW47, UW46)
+ .byte 0xc0+3 /* DW_CFA_restore %ebx */
+ ADV(UW48, UW47)
+ .byte 0xe, 8 /* DW_CFA_def_cfa_offset */
+ ADV(UW49, UW48)
+ .byte 0xe, raw_closure_T_FS+8 /* DW_CFA_def_cfa_offset */
+ ADV(UW50, UW49)
+ .byte 0xe, 8 /* DW_CFA_def_cfa_offset */
+ ADV(UW51, UW50)
+ .byte 0xe, raw_closure_T_FS+8 /* DW_CFA_def_cfa_offset */
+ .balign 4
+L(EFDE9):
+#endif /* !FFI_NO_RAW_API */
+
+#ifdef _WIN32
+ .def @feat.00;
+ .scl 3;
+ .type 0;
+ .endef
+ .globl @feat.00
+@feat.00 = 1
+#endif
+
+#ifdef __APPLE__
+ .subsections_via_symbols
+ .section __LD,__compact_unwind,regular,debug
+
+ /* compact unwind for ffi_call_i386 */
+ .long C(ffi_call_i386)
+ .set L1,L(UW5)-L(UW0)
+ .long L1
+ .long 0x04000000 /* use dwarf unwind info */
+ .long 0
+ .long 0
+
+ /* compact unwind for ffi_go_closure_EAX */
+ .long C(ffi_go_closure_EAX)
+ .set L2,L(UW8)-L(UW6)
+ .long L2
+ .long 0x04000000 /* use dwarf unwind info */
+ .long 0
+ .long 0
+
+ /* compact unwind for ffi_go_closure_ECX */
+ .long C(ffi_go_closure_ECX)
+ .set L3,L(UW11)-L(UW9)
+ .long L3
+ .long 0x04000000 /* use dwarf unwind info */
+ .long 0
+ .long 0
+
+ /* compact unwind for ffi_closure_i386 */
+ .long C(ffi_closure_i386)
+ .set L4,L(UW20)-L(UW12)
+ .long L4
+ .long 0x04000000 /* use dwarf unwind info */
+ .long 0
+ .long 0
+
+ /* compact unwind for ffi_go_closure_STDCALL */
+ .long C(ffi_go_closure_STDCALL)
+ .set L5,L(UW23)-L(UW21)
+ .long L5
+ .long 0x04000000 /* use dwarf unwind info */
+ .long 0
+ .long 0
+
+ /* compact unwind for ffi_closure_REGISTER */
+ .long C(ffi_closure_REGISTER)
+ .set L6,L(UW26)-L(UW24)
+ .long L6
+ .long 0x04000000 /* use dwarf unwind info */
+ .long 0
+ .long 0
+
+ /* compact unwind for ffi_closure_STDCALL */
+ .long C(ffi_closure_STDCALL)
+ .set L7,L(UW31)-L(UW27)
+ .long L7
+ .long 0x04000000 /* use dwarf unwind info */
+ .long 0
+ .long 0
+
+ /* compact unwind for ffi_closure_raw_SYSV */
+ .long C(ffi_closure_raw_SYSV)
+ .set L8,L(UW40)-L(UW32)
+ .long L8
+ .long 0x04000000 /* use dwarf unwind info */
+ .long 0
+ .long 0
+
+ /* compact unwind for ffi_closure_raw_THISCALL */
+ .long C(ffi_closure_raw_THISCALL)
+ .set L9,L(UW52)-L(UW41)
+ .long L9
+ .long 0x04000000 /* use dwarf unwind info */
+ .long 0
+ .long 0
+#endif /* __APPLE__ */
+
+#endif /* ifndef _MSC_VER */
+#endif /* ifdef __i386__ */
+
+#if defined __ELF__ && defined __linux__
+ .section .note.GNU-stack,"",@progbits
+#endif
+
+
+====================File: src/x86/unix64.S====================
+/* -----------------------------------------------------------------------
+ unix64.S - Copyright (c) 2013 The Written Word, Inc.
+ - Copyright (c) 2008 Red Hat, Inc
+ - Copyright (c) 2002 Bo Thorsen <bo@suse.de>
+
x86-64 Foreign Function Interface
-
- 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.
- ----------------------------------------------------------------------- */
-
-#include <ffi.h>
-#include <ffi_common.h>
-
-#include <stdlib.h>
-#include <stdarg.h>
-#include <stdint.h>
-#include "internal64.h"
-
-#ifdef __x86_64__
-
-#define MAX_GPR_REGS 6
-#define MAX_SSE_REGS 8
-
-#if defined(__INTEL_COMPILER)
-#include "xmmintrin.h"
-#define UINT128 __m128
-#else
-#if defined(__SUNPRO_C)
-#include <sunmedia_types.h>
-#define UINT128 __m128i
-#else
-#define UINT128 __int128_t
-#endif
-#endif
-
-union big_int_union
-{
- UINT32 i32;
- UINT64 i64;
- UINT128 i128;
-};
-
-struct register_args
-{
- /* Registers for argument passing. */
- UINT64 gpr[MAX_GPR_REGS];
- union big_int_union sse[MAX_SSE_REGS];
- UINT64 rax; /* ssecount */
- UINT64 r10; /* static chain */
-};
-
-extern void ffi_call_unix64 (void *args, unsigned long bytes, unsigned flags,
- void *raddr, void (*fnaddr)(void)) FFI_HIDDEN;
-
-/* All reference to register classes here is identical to the code in
- gcc/config/i386/i386.c. Do *not* change one without the other. */
-
-/* Register class used for passing given 64bit part of the argument.
- These represent classes as documented by the PS ABI, with the
- exception of SSESF, SSEDF classes, that are basically SSE class,
- just gcc will use SF or DFmode move instead of DImode to avoid
- reformatting penalties.
-
- Similary we play games with INTEGERSI_CLASS to use cheaper SImode moves
- whenever possible (upper half does contain padding). */
-enum x86_64_reg_class
- {
- X86_64_NO_CLASS,
- X86_64_INTEGER_CLASS,
- X86_64_INTEGERSI_CLASS,
- X86_64_SSE_CLASS,
- X86_64_SSESF_CLASS,
- X86_64_SSEDF_CLASS,
- X86_64_SSEUP_CLASS,
- X86_64_X87_CLASS,
- X86_64_X87UP_CLASS,
- X86_64_COMPLEX_X87_CLASS,
- X86_64_MEMORY_CLASS
- };
-
-#define MAX_CLASSES 4
-
-#define SSE_CLASS_P(X) ((X) >= X86_64_SSE_CLASS && X <= X86_64_SSEUP_CLASS)
-
-/* x86-64 register passing implementation. See x86-64 ABI for details. Goal
- of this code is to classify each 8bytes of incoming argument by the register
- class and assign registers accordingly. */
-
-/* Return the union class of CLASS1 and CLASS2.
- See the x86-64 PS ABI for details. */
-
-static enum x86_64_reg_class
-merge_classes (enum x86_64_reg_class class1, enum x86_64_reg_class class2)
-{
- /* Rule #1: If both classes are equal, this is the resulting class. */
- if (class1 == class2)
- return class1;
-
- /* Rule #2: If one of the classes is NO_CLASS, the resulting class is
- the other class. */
- if (class1 == X86_64_NO_CLASS)
- return class2;
- if (class2 == X86_64_NO_CLASS)
- return class1;
-
- /* Rule #3: If one of the classes is MEMORY, the result is MEMORY. */
- if (class1 == X86_64_MEMORY_CLASS || class2 == X86_64_MEMORY_CLASS)
- return X86_64_MEMORY_CLASS;
-
- /* Rule #4: If one of the classes is INTEGER, the result is INTEGER. */
- if ((class1 == X86_64_INTEGERSI_CLASS && class2 == X86_64_SSESF_CLASS)
- || (class2 == X86_64_INTEGERSI_CLASS && class1 == X86_64_SSESF_CLASS))
- return X86_64_INTEGERSI_CLASS;
- if (class1 == X86_64_INTEGER_CLASS || class1 == X86_64_INTEGERSI_CLASS
- || class2 == X86_64_INTEGER_CLASS || class2 == X86_64_INTEGERSI_CLASS)
- return X86_64_INTEGER_CLASS;
-
- /* Rule #5: If one of the classes is X87, X87UP, or COMPLEX_X87 class,
- MEMORY is used. */
- if (class1 == X86_64_X87_CLASS
- || class1 == X86_64_X87UP_CLASS
- || class1 == X86_64_COMPLEX_X87_CLASS
- || class2 == X86_64_X87_CLASS
- || class2 == X86_64_X87UP_CLASS
- || class2 == X86_64_COMPLEX_X87_CLASS)
- return X86_64_MEMORY_CLASS;
-
- /* Rule #6: Otherwise class SSE is used. */
- return X86_64_SSE_CLASS;
-}
-
-/* Classify the argument of type TYPE and mode MODE.
- CLASSES will be filled by the register class used to pass each word
- of the operand. The number of words is returned. In case the parameter
- should be passed in memory, 0 is returned. As a special case for zero
- sized containers, classes[0] will be NO_CLASS and 1 is returned.
-
- See the x86-64 PS ABI for details.
-*/
-static size_t
-classify_argument (ffi_type *type, enum x86_64_reg_class classes[],
- size_t byte_offset)
-{
- switch (type->type)
- {
- case FFI_TYPE_UINT8:
- case FFI_TYPE_SINT8:
- case FFI_TYPE_UINT16:
- case FFI_TYPE_SINT16:
- case FFI_TYPE_UINT32:
- case FFI_TYPE_SINT32:
- case FFI_TYPE_UINT64:
- case FFI_TYPE_SINT64:
- case FFI_TYPE_POINTER:
- do_integer:
- {
- size_t size = byte_offset + type->size;
-
- if (size <= 4)
- {
- classes[0] = X86_64_INTEGERSI_CLASS;
- return 1;
- }
- else if (size <= 8)
- {
- classes[0] = X86_64_INTEGER_CLASS;
- return 1;
- }
- else if (size <= 12)
- {
- classes[0] = X86_64_INTEGER_CLASS;
- classes[1] = X86_64_INTEGERSI_CLASS;
- return 2;
- }
- else if (size <= 16)
- {
- classes[0] = classes[1] = X86_64_INTEGER_CLASS;
- return 2;
- }
- else
- FFI_ASSERT (0);
- }
- case FFI_TYPE_FLOAT:
- if (!(byte_offset % 8))
- classes[0] = X86_64_SSESF_CLASS;
- else
- classes[0] = X86_64_SSE_CLASS;
- return 1;
- case FFI_TYPE_DOUBLE:
- classes[0] = X86_64_SSEDF_CLASS;
- return 1;
-#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
- case FFI_TYPE_LONGDOUBLE:
- classes[0] = X86_64_X87_CLASS;
- classes[1] = X86_64_X87UP_CLASS;
- return 2;
-#endif
- case FFI_TYPE_STRUCT:
- {
- const size_t UNITS_PER_WORD = 8;
- size_t words = (type->size + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
- ffi_type **ptr;
- unsigned int i;
- enum x86_64_reg_class subclasses[MAX_CLASSES];
-
- /* If the struct is larger than 32 bytes, pass it on the stack. */
- if (type->size > 32)
- return 0;
-
- for (i = 0; i < words; i++)
- classes[i] = X86_64_NO_CLASS;
-
- /* Zero sized arrays or structures are NO_CLASS. We return 0 to
- signalize memory class, so handle it as special case. */
- if (!words)
- {
- case FFI_TYPE_VOID:
- classes[0] = X86_64_NO_CLASS;
- return 1;
- }
-
- /* Merge the fields of structure. */
- for (ptr = type->elements; *ptr != NULL; ptr++)
- {
- size_t num;
-
- byte_offset = FFI_ALIGN (byte_offset, (*ptr)->alignment);
-
- num = classify_argument (*ptr, subclasses, byte_offset % 8);
- if (num == 0)
- return 0;
- for (i = 0; i < num; i++)
- {
- size_t pos = byte_offset / 8;
- classes[i + pos] =
- merge_classes (subclasses[i], classes[i + pos]);
- }
-
- byte_offset += (*ptr)->size;
- }
-
- if (words > 2)
- {
- /* When size > 16 bytes, if the first one isn't
- X86_64_SSE_CLASS or any other ones aren't
- X86_64_SSEUP_CLASS, everything should be passed in
- memory. */
- if (classes[0] != X86_64_SSE_CLASS)
- return 0;
-
- for (i = 1; i < words; i++)
- if (classes[i] != X86_64_SSEUP_CLASS)
- return 0;
- }
-
- /* Final merger cleanup. */
- for (i = 0; i < words; i++)
- {
- /* If one class is MEMORY, everything should be passed in
- memory. */
- if (classes[i] == X86_64_MEMORY_CLASS)
- return 0;
-
- /* The X86_64_SSEUP_CLASS should be always preceded by
- X86_64_SSE_CLASS or X86_64_SSEUP_CLASS. */
- if (i > 1 && classes[i] == X86_64_SSEUP_CLASS
- && classes[i - 1] != X86_64_SSE_CLASS
- && classes[i - 1] != X86_64_SSEUP_CLASS)
- {
- /* The first one should never be X86_64_SSEUP_CLASS. */
- FFI_ASSERT (i != 0);
- classes[i] = X86_64_SSE_CLASS;
- }
-
- /* If X86_64_X87UP_CLASS isn't preceded by X86_64_X87_CLASS,
- everything should be passed in memory. */
- if (i > 1 && classes[i] == X86_64_X87UP_CLASS
- && (classes[i - 1] != X86_64_X87_CLASS))
- {
- /* The first one should never be X86_64_X87UP_CLASS. */
- FFI_ASSERT (i != 0);
- return 0;
- }
- }
- return words;
- }
- case FFI_TYPE_COMPLEX:
- {
- ffi_type *inner = type->elements[0];
- switch (inner->type)
- {
- case FFI_TYPE_INT:
- case FFI_TYPE_UINT8:
- case FFI_TYPE_SINT8:
- case FFI_TYPE_UINT16:
- case FFI_TYPE_SINT16:
- case FFI_TYPE_UINT32:
- case FFI_TYPE_SINT32:
- case FFI_TYPE_UINT64:
- case FFI_TYPE_SINT64:
- goto do_integer;
-
- case FFI_TYPE_FLOAT:
- classes[0] = X86_64_SSE_CLASS;
- if (byte_offset % 8)
- {
- classes[1] = X86_64_SSESF_CLASS;
- return 2;
- }
- return 1;
- case FFI_TYPE_DOUBLE:
- classes[0] = classes[1] = X86_64_SSEDF_CLASS;
- return 2;
-#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
- case FFI_TYPE_LONGDOUBLE:
- classes[0] = X86_64_COMPLEX_X87_CLASS;
- return 1;
-#endif
- }
- }
- }
- abort();
-}
-
-/* Examine the argument and return set number of register required in each
- class. Return zero iff parameter should be passed in memory, otherwise
- the number of registers. */
-
-static size_t
-examine_argument (ffi_type *type, enum x86_64_reg_class classes[MAX_CLASSES],
- _Bool in_return, int *pngpr, int *pnsse)
-{
- size_t n;
- unsigned int i;
- int ngpr, nsse;
-
- n = classify_argument (type, classes, 0);
- if (n == 0)
- return 0;
-
- ngpr = nsse = 0;
- for (i = 0; i < n; ++i)
- switch (classes[i])
- {
- case X86_64_INTEGER_CLASS:
- case X86_64_INTEGERSI_CLASS:
- ngpr++;
- break;
- case X86_64_SSE_CLASS:
- case X86_64_SSESF_CLASS:
- case X86_64_SSEDF_CLASS:
- nsse++;
- break;
- case X86_64_NO_CLASS:
- case X86_64_SSEUP_CLASS:
- break;
- case X86_64_X87_CLASS:
- case X86_64_X87UP_CLASS:
- case X86_64_COMPLEX_X87_CLASS:
- return in_return != 0;
- default:
- abort ();
- }
-
- *pngpr = ngpr;
- *pnsse = nsse;
-
- return n;
-}
-
-/* Perform machine dependent cif processing. */
-
-#ifndef __ILP32__
-extern ffi_status
-ffi_prep_cif_machdep_efi64(ffi_cif *cif);
-#endif
-
-ffi_status FFI_HIDDEN
-ffi_prep_cif_machdep (ffi_cif *cif)
-{
- int gprcount, ssecount, i, avn, ngpr, nsse;
- unsigned flags;
- enum x86_64_reg_class classes[MAX_CLASSES];
- size_t bytes, n, rtype_size;
- ffi_type *rtype;
-
-#ifndef __ILP32__
- if (cif->abi == FFI_EFI64 || cif->abi == FFI_GNUW64)
- return ffi_prep_cif_machdep_efi64(cif);
-#endif
- if (cif->abi != FFI_UNIX64)
- return FFI_BAD_ABI;
-
- gprcount = ssecount = 0;
-
- rtype = cif->rtype;
- rtype_size = rtype->size;
- switch (rtype->type)
- {
- case FFI_TYPE_VOID:
- flags = UNIX64_RET_VOID;
- break;
- case FFI_TYPE_UINT8:
- flags = UNIX64_RET_UINT8;
- break;
- case FFI_TYPE_SINT8:
- flags = UNIX64_RET_SINT8;
- break;
- case FFI_TYPE_UINT16:
- flags = UNIX64_RET_UINT16;
- break;
- case FFI_TYPE_SINT16:
- flags = UNIX64_RET_SINT16;
- break;
- case FFI_TYPE_UINT32:
- flags = UNIX64_RET_UINT32;
- break;
- case FFI_TYPE_INT:
- case FFI_TYPE_SINT32:
- flags = UNIX64_RET_SINT32;
- break;
- case FFI_TYPE_UINT64:
- case FFI_TYPE_SINT64:
- flags = UNIX64_RET_INT64;
- break;
- case FFI_TYPE_POINTER:
- flags = (sizeof(void *) == 4 ? UNIX64_RET_UINT32 : UNIX64_RET_INT64);
- break;
- case FFI_TYPE_FLOAT:
- flags = UNIX64_RET_XMM32;
- break;
- case FFI_TYPE_DOUBLE:
- flags = UNIX64_RET_XMM64;
- break;
-#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
- case FFI_TYPE_LONGDOUBLE:
- flags = UNIX64_RET_X87;
- break;
-#endif
- case FFI_TYPE_STRUCT:
- n = examine_argument (cif->rtype, classes, 1, &ngpr, &nsse);
- if (n == 0)
- {
- /* The return value is passed in memory. A pointer to that
- memory is the first argument. Allocate a register for it. */
- gprcount++;
- /* We don't have to do anything in asm for the return. */
- flags = UNIX64_RET_VOID | UNIX64_FLAG_RET_IN_MEM;
- }
- else
- {
- _Bool sse0 = SSE_CLASS_P (classes[0]);
-
- if (rtype_size == 4 && sse0)
- flags = UNIX64_RET_XMM32;
- else if (rtype_size == 8)
- flags = sse0 ? UNIX64_RET_XMM64 : UNIX64_RET_INT64;
- else
- {
- _Bool sse1 = n == 2 && SSE_CLASS_P (classes[1]);
- if (sse0 && sse1)
- flags = UNIX64_RET_ST_XMM0_XMM1;
- else if (sse0)
- flags = UNIX64_RET_ST_XMM0_RAX;
- else if (sse1)
- flags = UNIX64_RET_ST_RAX_XMM0;
- else
- flags = UNIX64_RET_ST_RAX_RDX;
- flags |= rtype_size << UNIX64_SIZE_SHIFT;
- }
- }
- break;
- case FFI_TYPE_COMPLEX:
- switch (rtype->elements[0]->type)
- {
- case FFI_TYPE_UINT8:
- case FFI_TYPE_SINT8:
- case FFI_TYPE_UINT16:
- case FFI_TYPE_SINT16:
- case FFI_TYPE_INT:
- case FFI_TYPE_UINT32:
- case FFI_TYPE_SINT32:
- case FFI_TYPE_UINT64:
- case FFI_TYPE_SINT64:
- flags = UNIX64_RET_ST_RAX_RDX | ((unsigned) rtype_size << UNIX64_SIZE_SHIFT);
- break;
- case FFI_TYPE_FLOAT:
- flags = UNIX64_RET_XMM64;
- break;
- case FFI_TYPE_DOUBLE:
- flags = UNIX64_RET_ST_XMM0_XMM1 | (16 << UNIX64_SIZE_SHIFT);
- break;
-#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
- case FFI_TYPE_LONGDOUBLE:
- flags = UNIX64_RET_X87_2;
- break;
-#endif
- default:
- return FFI_BAD_TYPEDEF;
- }
- break;
- default:
- return FFI_BAD_TYPEDEF;
- }
-
- /* Go over all arguments and determine the way they should be passed.
- If it's in a register and there is space for it, let that be so. If
- not, add it's size to the stack byte count. */
- for (bytes = 0, i = 0, avn = cif->nargs; i < avn; i++)
- {
- if (examine_argument (cif->arg_types[i], classes, 0, &ngpr, &nsse) == 0
- || gprcount + ngpr > MAX_GPR_REGS
- || ssecount + nsse > MAX_SSE_REGS)
- {
- long align = cif->arg_types[i]->alignment;
-
- if (align < 8)
- align = 8;
-
- bytes = FFI_ALIGN (bytes, align);
- bytes += cif->arg_types[i]->size;
- }
- else
- {
- gprcount += ngpr;
- ssecount += nsse;
- }
- }
- if (ssecount)
- flags |= UNIX64_FLAG_XMM_ARGS;
-
- cif->flags = flags;
- cif->bytes = (unsigned) FFI_ALIGN (bytes, 8);
-
- return FFI_OK;
-}
-
-static void
-ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue,
- void **avalue, void *closure)
-{
- enum x86_64_reg_class classes[MAX_CLASSES];
- char *stack, *argp;
- ffi_type **arg_types;
- int gprcount, ssecount, ngpr, nsse, i, avn, flags;
- struct register_args *reg_args;
-
- /* Can't call 32-bit mode from 64-bit mode. */
- FFI_ASSERT (cif->abi == FFI_UNIX64);
-
- /* If the return value is a struct and we don't have a return value
- address then we need to make one. Otherwise we can ignore it. */
- flags = cif->flags;
- if (rvalue == NULL)
- {
- if (flags & UNIX64_FLAG_RET_IN_MEM)
- rvalue = alloca (cif->rtype->size);
- else
- flags = UNIX64_RET_VOID;
- }
-
- /* Allocate the space for the arguments, plus 4 words of temp space. */
- stack = alloca (sizeof (struct register_args) + cif->bytes + 4*8);
- reg_args = (struct register_args *) stack;
- argp = stack + sizeof (struct register_args);
-
- reg_args->r10 = (uintptr_t) closure;
-
- gprcount = ssecount = 0;
-
- /* If the return value is passed in memory, add the pointer as the
- first integer argument. */
- if (flags & UNIX64_FLAG_RET_IN_MEM)
- reg_args->gpr[gprcount++] = (unsigned long) rvalue;
-
- avn = cif->nargs;
- arg_types = cif->arg_types;
-
- for (i = 0; i < avn; ++i)
- {
- size_t n, size = arg_types[i]->size;
-
- n = examine_argument (arg_types[i], classes, 0, &ngpr, &nsse);
- if (n == 0
- || gprcount + ngpr > MAX_GPR_REGS
- || ssecount + nsse > MAX_SSE_REGS)
- {
- long align = arg_types[i]->alignment;
-
- /* Stack arguments are *always* at least 8 byte aligned. */
- if (align < 8)
- align = 8;
-
- /* Pass this argument in memory. */
- argp = (void *) FFI_ALIGN (argp, align);
- memcpy (argp, avalue[i], size);
- argp += size;
- }
- else
- {
- /* The argument is passed entirely in registers. */
- char *a = (char *) avalue[i];
- unsigned int j;
-
- for (j = 0; j < n; j++, a += 8, size -= 8)
- {
- switch (classes[j])
- {
- case X86_64_NO_CLASS:
- case X86_64_SSEUP_CLASS:
- break;
- case X86_64_INTEGER_CLASS:
- case X86_64_INTEGERSI_CLASS:
- /* Sign-extend integer arguments passed in general
- purpose registers, to cope with the fact that
- LLVM incorrectly assumes that this will be done
- (the x86-64 PS ABI does not specify this). */
- switch (arg_types[i]->type)
- {
- case FFI_TYPE_SINT8:
- reg_args->gpr[gprcount] = (SINT64) *((SINT8 *) a);
- break;
- case FFI_TYPE_SINT16:
- reg_args->gpr[gprcount] = (SINT64) *((SINT16 *) a);
- break;
- case FFI_TYPE_SINT32:
- reg_args->gpr[gprcount] = (SINT64) *((SINT32 *) a);
- break;
- default:
- reg_args->gpr[gprcount] = 0;
- memcpy (&reg_args->gpr[gprcount], a, size);
- }
- gprcount++;
- break;
- case X86_64_SSE_CLASS:
- case X86_64_SSEDF_CLASS:
- memcpy (&reg_args->sse[ssecount++].i64, a, sizeof(UINT64));
- break;
- case X86_64_SSESF_CLASS:
- memcpy (&reg_args->sse[ssecount++].i32, a, sizeof(UINT32));
- break;
- default:
- abort();
- }
- }
- }
- }
- reg_args->rax = ssecount;
-
- ffi_call_unix64 (stack, cif->bytes + sizeof (struct register_args),
- flags, rvalue, fn);
-}
-
-#ifndef __ILP32__
-extern void
-ffi_call_efi64(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue);
-#endif
-
-void
-ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
-{
-#ifndef __ILP32__
- if (cif->abi == FFI_EFI64 || cif->abi == FFI_GNUW64)
- {
- ffi_call_efi64(cif, fn, rvalue, avalue);
- return;
- }
-#endif
- ffi_call_int (cif, fn, rvalue, avalue, NULL);
-}
-
-#ifndef __ILP32__
-extern void
-ffi_call_go_efi64(ffi_cif *cif, void (*fn)(void), void *rvalue,
- void **avalue, void *closure);
-#endif
-
-void
-ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue,
- void **avalue, void *closure)
-{
-#ifndef __ILP32__
- if (cif->abi == FFI_EFI64 || cif->abi == FFI_GNUW64)
- {
- ffi_call_go_efi64(cif, fn, rvalue, avalue, closure);
- return;
- }
-#endif
- ffi_call_int (cif, fn, rvalue, avalue, closure);
-}
-
-
-extern void ffi_closure_unix64(void) FFI_HIDDEN;
-extern void ffi_closure_unix64_sse(void) FFI_HIDDEN;
-
-#ifndef __ILP32__
-extern ffi_status
-ffi_prep_closure_loc_efi64(ffi_closure* closure,
- ffi_cif* cif,
- void (*fun)(ffi_cif*, void*, void**, void*),
- void *user_data,
- void *codeloc);
-#endif
-
-ffi_status
-ffi_prep_closure_loc (ffi_closure* closure,
- ffi_cif* cif,
- void (*fun)(ffi_cif*, void*, void**, void*),
- void *user_data,
- void *codeloc)
-{
- static const unsigned char trampoline[16] = {
- /* leaq -0x7(%rip),%r10 # 0x0 */
- 0x4c, 0x8d, 0x15, 0xf9, 0xff, 0xff, 0xff,
- /* jmpq *0x3(%rip) # 0x10 */
- 0xff, 0x25, 0x03, 0x00, 0x00, 0x00,
- /* nopl (%rax) */
- 0x0f, 0x1f, 0x00
- };
- void (*dest)(void);
- char *tramp = closure->tramp;
-
-#ifndef __ILP32__
- if (cif->abi == FFI_EFI64 || cif->abi == FFI_GNUW64)
- return ffi_prep_closure_loc_efi64(closure, cif, fun, user_data, codeloc);
-#endif
- if (cif->abi != FFI_UNIX64)
- return FFI_BAD_ABI;
-
- if (cif->flags & UNIX64_FLAG_XMM_ARGS)
- dest = ffi_closure_unix64_sse;
- else
- dest = ffi_closure_unix64;
-
- memcpy (tramp, trampoline, sizeof(trampoline));
- *(UINT64 *)(tramp + 16) = (uintptr_t)dest;
-
- closure->cif = cif;
- closure->fun = fun;
- closure->user_data = user_data;
-
- return FFI_OK;
-}
-
-int FFI_HIDDEN
-ffi_closure_unix64_inner(ffi_cif *cif,
- void (*fun)(ffi_cif*, void*, void**, void*),
- void *user_data,
- void *rvalue,
- struct register_args *reg_args,
- char *argp)
-{
- void **avalue;
- ffi_type **arg_types;
- long i, avn;
- int gprcount, ssecount, ngpr, nsse;
- int flags;
-
- avn = cif->nargs;
- flags = cif->flags;
- avalue = alloca(avn * sizeof(void *));
- gprcount = ssecount = 0;
-
- if (flags & UNIX64_FLAG_RET_IN_MEM)
- {
- /* On return, %rax will contain the address that was passed
- by the caller in %rdi. */
- void *r = (void *)(uintptr_t)reg_args->gpr[gprcount++];
- *(void **)rvalue = r;
- rvalue = r;
- flags = (sizeof(void *) == 4 ? UNIX64_RET_UINT32 : UNIX64_RET_INT64);
- }
-
- arg_types = cif->arg_types;
- for (i = 0; i < avn; ++i)
- {
- enum x86_64_reg_class classes[MAX_CLASSES];
- size_t n;
-
- n = examine_argument (arg_types[i], classes, 0, &ngpr, &nsse);
- if (n == 0
- || gprcount + ngpr > MAX_GPR_REGS
- || ssecount + nsse > MAX_SSE_REGS)
- {
- long align = arg_types[i]->alignment;
-
- /* Stack arguments are *always* at least 8 byte aligned. */
- if (align < 8)
- align = 8;
-
- /* Pass this argument in memory. */
- argp = (void *) FFI_ALIGN (argp, align);
- avalue[i] = argp;
- argp += arg_types[i]->size;
- }
- /* If the argument is in a single register, or two consecutive
- integer registers, then we can use that address directly. */
- else if (n == 1
- || (n == 2 && !(SSE_CLASS_P (classes[0])
- || SSE_CLASS_P (classes[1]))))
- {
- /* The argument is in a single register. */
- if (SSE_CLASS_P (classes[0]))
- {
- avalue[i] = &reg_args->sse[ssecount];
- ssecount += n;
- }
- else
- {
- avalue[i] = &reg_args->gpr[gprcount];
- gprcount += n;
- }
- }
- /* Otherwise, allocate space to make them consecutive. */
- else
- {
- char *a = alloca (16);
- unsigned int j;
-
- avalue[i] = a;
- for (j = 0; j < n; j++, a += 8)
- {
- if (SSE_CLASS_P (classes[j]))
- memcpy (a, &reg_args->sse[ssecount++], 8);
- else
- memcpy (a, &reg_args->gpr[gprcount++], 8);
- }
- }
- }
-
- /* Invoke the closure. */
- fun (cif, rvalue, avalue, user_data);
-
- /* Tell assembly how to perform return type promotions. */
- return flags;
-}
-
-extern void ffi_go_closure_unix64(void) FFI_HIDDEN;
-extern void ffi_go_closure_unix64_sse(void) FFI_HIDDEN;
-
-#ifndef __ILP32__
-extern ffi_status
-ffi_prep_go_closure_efi64(ffi_go_closure* closure, ffi_cif* cif,
- void (*fun)(ffi_cif*, void*, void**, void*));
-#endif
-
-ffi_status
-ffi_prep_go_closure (ffi_go_closure* closure, ffi_cif* cif,
- void (*fun)(ffi_cif*, void*, void**, void*))
-{
-#ifndef __ILP32__
- if (cif->abi == FFI_EFI64 || cif->abi == FFI_GNUW64)
- return ffi_prep_go_closure_efi64(closure, cif, fun);
-#endif
- if (cif->abi != FFI_UNIX64)
- return FFI_BAD_ABI;
-
- closure->tramp = (cif->flags & UNIX64_FLAG_XMM_ARGS
- ? ffi_go_closure_unix64_sse
- : ffi_go_closure_unix64);
- closure->cif = cif;
- closure->fun = fun;
-
- return FFI_OK;
-}
-
-#endif /* __x86_64__ */
-
-
-====================File: src/x86/ffitarget.h====================
-/* -----------------------------------------------------------------*-C-*-
- ffitarget.h - Copyright (c) 2012, 2014, 2018 Anthony Green
- Copyright (c) 1996-2003, 2010 Red Hat, Inc.
- Copyright (C) 2008 Free Software Foundation, Inc.
-
- Target configuration macros for x86 and x86-64.
-
- 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.
-
- ----------------------------------------------------------------------- */
-
-#ifndef LIBFFI_TARGET_H
-#define LIBFFI_TARGET_H
-
-#ifndef LIBFFI_H
-#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
-#endif
-
-/* ---- System specific configurations ----------------------------------- */
-
-/* For code common to all platforms on x86 and x86_64. */
-#define X86_ANY
-
-#if defined (X86_64) && defined (__i386__)
-#undef X86_64
-#define X86
-#endif
-
-#ifdef X86_WIN64
-#define FFI_SIZEOF_ARG 8
-#define USE_BUILTIN_FFS 0 /* not yet implemented in mingw-64 */
-#endif
-
-#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION
-#ifndef _MSC_VER
-#define FFI_TARGET_HAS_COMPLEX_TYPE
-#endif
-
-/* ---- Generic type definitions ----------------------------------------- */
-
-#ifndef LIBFFI_ASM
-#ifdef X86_WIN64
-#ifdef _MSC_VER
-typedef unsigned __int64 ffi_arg;
-typedef __int64 ffi_sarg;
-#else
-typedef unsigned long long ffi_arg;
-typedef long long ffi_sarg;
-#endif
-#else
-#if defined __x86_64__ && defined __ILP32__
-#define FFI_SIZEOF_ARG 8
-#define FFI_SIZEOF_JAVA_RAW 4
-typedef unsigned long long ffi_arg;
-typedef long long ffi_sarg;
-#else
-typedef unsigned long ffi_arg;
-typedef signed long ffi_sarg;
-#endif
-#endif
-
-typedef enum ffi_abi {
-#if defined(X86_WIN64)
- FFI_FIRST_ABI = 0,
- FFI_WIN64, /* sizeof(long double) == 8 - microsoft compilers */
- FFI_GNUW64, /* sizeof(long double) == 16 - GNU compilers */
- FFI_LAST_ABI,
-#ifdef __GNUC__
- FFI_DEFAULT_ABI = FFI_GNUW64
-#else
- FFI_DEFAULT_ABI = FFI_WIN64
-#endif
-
-#elif defined(X86_64) || (defined (__x86_64__) && defined (X86_DARWIN))
- FFI_FIRST_ABI = 1,
- FFI_UNIX64,
- FFI_WIN64,
- FFI_EFI64 = FFI_WIN64,
- FFI_GNUW64,
- FFI_LAST_ABI,
- FFI_DEFAULT_ABI = FFI_UNIX64
-
-#elif defined(X86_WIN32)
- FFI_FIRST_ABI = 0,
- FFI_SYSV = 1,
- FFI_STDCALL = 2,
- FFI_THISCALL = 3,
- FFI_FASTCALL = 4,
- FFI_MS_CDECL = 5,
- FFI_PASCAL = 6,
- FFI_REGISTER = 7,
- FFI_LAST_ABI,
- FFI_DEFAULT_ABI = FFI_MS_CDECL
-#else
- FFI_FIRST_ABI = 0,
- FFI_SYSV = 1,
- FFI_THISCALL = 3,
- FFI_FASTCALL = 4,
- FFI_STDCALL = 5,
- FFI_PASCAL = 6,
- FFI_REGISTER = 7,
- FFI_MS_CDECL = 8,
- FFI_LAST_ABI,
- FFI_DEFAULT_ABI = FFI_SYSV
-#endif
-} ffi_abi;
-#endif
-
-/* ---- Definitions for closures ----------------------------------------- */
-
-#define FFI_CLOSURES 1
-#define FFI_GO_CLOSURES 1
-
-#define FFI_TYPE_SMALL_STRUCT_1B (FFI_TYPE_LAST + 1)
-#define FFI_TYPE_SMALL_STRUCT_2B (FFI_TYPE_LAST + 2)
-#define FFI_TYPE_SMALL_STRUCT_4B (FFI_TYPE_LAST + 3)
-#define FFI_TYPE_MS_STRUCT (FFI_TYPE_LAST + 4)
-
-#if defined (X86_64) || defined(X86_WIN64) \
- || (defined (__x86_64__) && defined (X86_DARWIN))
-# define FFI_TRAMPOLINE_SIZE 24
-# define FFI_NATIVE_RAW_API 0
-#else
-# define FFI_TRAMPOLINE_SIZE 12
-# define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */
-#endif
-
-#endif
-
-
-
-====================File: src/x86/ffiw64.c====================
-/* -----------------------------------------------------------------------
- ffiw64.c - Copyright (c) 2018 Anthony Green
- Copyright (c) 2014 Red Hat, Inc.
-
- x86 win64 Foreign Function Interface
-
- 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.
- ----------------------------------------------------------------------- */
-
-#if defined(__x86_64__) || defined(_M_AMD64)
-#include <ffi.h>
-#include <ffi_common.h>
-#include <stdlib.h>
-#include <stdint.h>
-
-#ifdef X86_WIN64
-#define EFI64(name) name
-#else
-#define EFI64(name) FFI_HIDDEN name##_efi64
-#endif
-
-struct win64_call_frame
-{
- UINT64 rbp; /* 0 */
- UINT64 retaddr; /* 8 */
- UINT64 fn; /* 16 */
- UINT64 flags; /* 24 */
- UINT64 rvalue; /* 32 */
-};
-
-extern void ffi_call_win64 (void *stack, struct win64_call_frame *,
- void *closure) FFI_HIDDEN;
-
-ffi_status FFI_HIDDEN
-EFI64(ffi_prep_cif_machdep)(ffi_cif *cif)
-{
- int flags, n;
-
- switch (cif->abi)
- {
- case FFI_WIN64:
- case FFI_GNUW64:
- break;
- default:
- return FFI_BAD_ABI;
- }
-
- flags = cif->rtype->type;
- switch (flags)
- {
- default:
- break;
- case FFI_TYPE_LONGDOUBLE:
- /* GCC returns long double values by reference, like a struct */
- if (cif->abi == FFI_GNUW64)
- flags = FFI_TYPE_STRUCT;
- break;
- case FFI_TYPE_COMPLEX:
- flags = FFI_TYPE_STRUCT;
- /* FALLTHRU */
- case FFI_TYPE_STRUCT:
- switch (cif->rtype->size)
- {
- case 8:
- flags = FFI_TYPE_UINT64;
- break;
- case 4:
- flags = FFI_TYPE_SMALL_STRUCT_4B;
- break;
- case 2:
- flags = FFI_TYPE_SMALL_STRUCT_2B;
- break;
- case 1:
- flags = FFI_TYPE_SMALL_STRUCT_1B;
- break;
- }
- break;
- }
- cif->flags = flags;
-
- /* Each argument either fits in a register, an 8 byte slot, or is
- passed by reference with the pointer in the 8 byte slot. */
- n = cif->nargs;
- n += (flags == FFI_TYPE_STRUCT);
- if (n < 4)
- n = 4;
- cif->bytes = n * 8;
-
- return FFI_OK;
-}
-
-static void
-ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue,
- void **avalue, void *closure)
-{
- int i, j, n, flags;
- UINT64 *stack;
- size_t rsize;
- struct win64_call_frame *frame;
-
- FFI_ASSERT(cif->abi == FFI_GNUW64 || cif->abi == FFI_WIN64);
-
- flags = cif->flags;
- rsize = 0;
-
- /* If we have no return value for a structure, we need to create one.
- Otherwise we can ignore the return type entirely. */
- if (rvalue == NULL)
- {
- if (flags == FFI_TYPE_STRUCT)
- rsize = cif->rtype->size;
- else
- flags = FFI_TYPE_VOID;
- }
-
- stack = alloca(cif->bytes + sizeof(struct win64_call_frame) + rsize);
- frame = (struct win64_call_frame *)((char *)stack + cif->bytes);
- if (rsize)
- rvalue = frame + 1;
-
- frame->fn = (uintptr_t)fn;
- frame->flags = flags;
- frame->rvalue = (uintptr_t)rvalue;
-
- j = 0;
- if (flags == FFI_TYPE_STRUCT)
- {
- stack[0] = (uintptr_t)rvalue;
- j = 1;
- }
-
- for (i = 0, n = cif->nargs; i < n; ++i, ++j)
- {
- switch (cif->arg_types[i]->size)
- {
- case 8:
- stack[j] = *(UINT64 *)avalue[i];
- break;
- case 4:
- stack[j] = *(UINT32 *)avalue[i];
- break;
- case 2:
- stack[j] = *(UINT16 *)avalue[i];
- break;
- case 1:
- stack[j] = *(UINT8 *)avalue[i];
- break;
- default:
- stack[j] = (uintptr_t)avalue[i];
- break;
- }
- }
-
- ffi_call_win64 (stack, frame, closure);
-}
-
-void
-EFI64(ffi_call)(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
-{
- ffi_call_int (cif, fn, rvalue, avalue, NULL);
-}
-
-void
-EFI64(ffi_call_go)(ffi_cif *cif, void (*fn)(void), void *rvalue,
- void **avalue, void *closure)
-{
- ffi_call_int (cif, fn, rvalue, avalue, closure);
-}
-
-
-extern void ffi_closure_win64(void) FFI_HIDDEN;
-extern void ffi_go_closure_win64(void) FFI_HIDDEN;
-
-ffi_status
-EFI64(ffi_prep_closure_loc)(ffi_closure* closure,
- ffi_cif* cif,
- void (*fun)(ffi_cif*, void*, void**, void*),
- void *user_data,
- void *codeloc)
-{
- static const unsigned char trampoline[16] = {
- /* leaq -0x7(%rip),%r10 # 0x0 */
- 0x4c, 0x8d, 0x15, 0xf9, 0xff, 0xff, 0xff,
- /* jmpq *0x3(%rip) # 0x10 */
- 0xff, 0x25, 0x03, 0x00, 0x00, 0x00,
- /* nopl (%rax) */
- 0x0f, 0x1f, 0x00
- };
- char *tramp = closure->tramp;
-
- switch (cif->abi)
- {
- case FFI_WIN64:
- case FFI_GNUW64:
- break;
- default:
- return FFI_BAD_ABI;
- }
-
- memcpy (tramp, trampoline, sizeof(trampoline));
- *(UINT64 *)(tramp + 16) = (uintptr_t)ffi_closure_win64;
-
- closure->cif = cif;
- closure->fun = fun;
- closure->user_data = user_data;
-
- return FFI_OK;
-}
-
-ffi_status
-EFI64(ffi_prep_go_closure)(ffi_go_closure* closure, ffi_cif* cif,
- void (*fun)(ffi_cif*, void*, void**, void*))
-{
- switch (cif->abi)
- {
- case FFI_WIN64:
- case FFI_GNUW64:
- break;
- default:
- return FFI_BAD_ABI;
- }
-
- closure->tramp = ffi_go_closure_win64;
- closure->cif = cif;
- closure->fun = fun;
-
- return FFI_OK;
-}
-
-struct win64_closure_frame
-{
- UINT64 rvalue[2];
- UINT64 fargs[4];
- UINT64 retaddr;
- UINT64 args[];
-};
-
-/* Force the inner function to use the MS ABI. When compiling on win64
- this is a nop. When compiling on unix, this simplifies the assembly,
- and places the burden of saving the extra call-saved registers on
- the compiler. */
-int FFI_HIDDEN __attribute__((ms_abi))
-ffi_closure_win64_inner(ffi_cif *cif,
- void (*fun)(ffi_cif*, void*, void**, void*),
- void *user_data,
- struct win64_closure_frame *frame)
-{
- void **avalue;
- void *rvalue;
- int i, n, nreg, flags;
-
- avalue = alloca(cif->nargs * sizeof(void *));
- rvalue = frame->rvalue;
- nreg = 0;
-
- /* When returning a structure, the address is in the first argument.
- We must also be prepared to return the same address in eax, so
- install that address in the frame and pretend we return a pointer. */
- flags = cif->flags;
- if (flags == FFI_TYPE_STRUCT)
- {
- rvalue = (void *)(uintptr_t)frame->args[0];
- frame->rvalue[0] = frame->args[0];
- nreg = 1;
- }
-
- for (i = 0, n = cif->nargs; i < n; ++i, ++nreg)
- {
- size_t size = cif->arg_types[i]->size;
- size_t type = cif->arg_types[i]->type;
- void *a;
-
- if (type == FFI_TYPE_DOUBLE || type == FFI_TYPE_FLOAT)
- {
- if (nreg < 4)
- a = &frame->fargs[nreg];
- else
- a = &frame->args[nreg];
- }
- else if (size == 1 || size == 2 || size == 4 || size == 8)
- a = &frame->args[nreg];
- else
- a = (void *)(uintptr_t)frame->args[nreg];
-
- avalue[i] = a;
- }
-
- /* Invoke the closure. */
- fun (cif, rvalue, avalue, user_data);
- return flags;
-}
-
-#endif /* __x86_64__ */
-
-
-====================File: src/x86/sysv.S====================
-/* -----------------------------------------------------------------------
- sysv.S - Copyright (c) 2017 Anthony Green
- - Copyright (c) 2013 The Written Word, Inc.
- - Copyright (c) 1996,1998,2001-2003,2005,2008,2010 Red Hat, Inc.
-
- X86 Foreign Function Interface
-
- 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.
- ----------------------------------------------------------------------- */
-
-#ifdef __i386__
-#ifndef _MSC_VER
-
-#define LIBFFI_ASM
-#include <fficonfig.h>
-#include <ffi.h>
-#include "internal.h"
-
-#define C2(X, Y) X ## Y
-#define C1(X, Y) C2(X, Y)
-#ifdef __USER_LABEL_PREFIX__
-# define C(X) C1(__USER_LABEL_PREFIX__, X)
-#else
-# define C(X) X
-#endif
-
-#ifdef X86_DARWIN
-# define L(X) C1(L, X)
-#else
-# define L(X) C1(.L, X)
-#endif
-
-#ifdef __ELF__
-# define ENDF(X) .type X,@function; .size X, . - X
-#else
-# define ENDF(X)
-#endif
-
-/* Handle win32 fastcall name mangling. */
-#ifdef X86_WIN32
-# define ffi_call_i386 @ffi_call_i386@8
-# define ffi_closure_inner @ffi_closure_inner@8
-#else
-# define ffi_call_i386 C(ffi_call_i386)
-# define ffi_closure_inner C(ffi_closure_inner)
-#endif
-
-/* This macro allows the safe creation of jump tables without an
- actual table. The entry points into the table are all 8 bytes.
- The use of ORG asserts that we're at the correct location. */
-/* ??? The clang assembler doesn't handle .org with symbolic expressions. */
-#if defined(__clang__) || defined(__APPLE__) || (defined (__sun__) && defined(__svr4__))
-# define E(BASE, X) .balign 8
-#else
-# define E(BASE, X) .balign 8; .org BASE + X * 8
-#endif
-
- .text
- .balign 16
- .globl ffi_call_i386
- FFI_HIDDEN(ffi_call_i386)
-
-/* This is declared as
-
- void ffi_call_i386(struct call_frame *frame, char *argp)
- __attribute__((fastcall));
-
- Thus the arguments are present in
-
- ecx: frame
- edx: argp
-*/
-
-ffi_call_i386:
-L(UW0):
- # cfi_startproc
-#if !HAVE_FASTCALL
- movl 4(%esp), %ecx
- movl 8(%esp), %edx
-#endif
- movl (%esp), %eax /* move the return address */
- movl %ebp, (%ecx) /* store %ebp into local frame */
- movl %eax, 4(%ecx) /* store retaddr into local frame */
-
- /* New stack frame based off ebp. This is a itty bit of unwind
- trickery in that the CFA *has* changed. There is no easy way
- to describe it correctly on entry to the function. Fortunately,
- it doesn't matter too much since at all points we can correctly
- unwind back to ffi_call. Note that the location to which we
- moved the return address is (the new) CFA-4, so from the
- perspective of the unwind info, it hasn't moved. */
- movl %ecx, %ebp
-L(UW1):
- # cfi_def_cfa(%ebp, 8)
- # cfi_rel_offset(%ebp, 0)
-
- movl %edx, %esp /* set outgoing argument stack */
- movl 20+R_EAX*4(%ebp), %eax /* set register arguments */
- movl 20+R_EDX*4(%ebp), %edx
- movl 20+R_ECX*4(%ebp), %ecx
-
- call *8(%ebp)
-
- movl 12(%ebp), %ecx /* load return type code */
- movl %ebx, 8(%ebp) /* preserve %ebx */
-L(UW2):
- # cfi_rel_offset(%ebx, 8)
-
- andl $X86_RET_TYPE_MASK, %ecx
-#ifdef __PIC__
- call C(__x86.get_pc_thunk.bx)
-L(pc1):
- leal L(store_table)-L(pc1)(%ebx, %ecx, 8), %ebx
-#else
- leal L(store_table)(,%ecx, 8), %ebx
-#endif
- movl 16(%ebp), %ecx /* load result address */
- jmp *%ebx
-
- .balign 8
-L(store_table):
-E(L(store_table), X86_RET_FLOAT)
- fstps (%ecx)
- jmp L(e1)
-E(L(store_table), X86_RET_DOUBLE)
- fstpl (%ecx)
- jmp L(e1)
-E(L(store_table), X86_RET_LDOUBLE)
- fstpt (%ecx)
- jmp L(e1)
-E(L(store_table), X86_RET_SINT8)
- movsbl %al, %eax
- mov %eax, (%ecx)
- jmp L(e1)
-E(L(store_table), X86_RET_SINT16)
- movswl %ax, %eax
- mov %eax, (%ecx)
- jmp L(e1)
-E(L(store_table), X86_RET_UINT8)
- movzbl %al, %eax
- mov %eax, (%ecx)
- jmp L(e1)
-E(L(store_table), X86_RET_UINT16)
- movzwl %ax, %eax
- mov %eax, (%ecx)
- jmp L(e1)
-E(L(store_table), X86_RET_INT64)
- movl %edx, 4(%ecx)
- /* fallthru */
-E(L(store_table), X86_RET_INT32)
- movl %eax, (%ecx)
- /* fallthru */
-E(L(store_table), X86_RET_VOID)
-L(e1):
- movl 8(%ebp), %ebx
- movl %ebp, %esp
- popl %ebp
-L(UW3):
- # cfi_remember_state
- # cfi_def_cfa(%esp, 4)
- # cfi_restore(%ebx)
- # cfi_restore(%ebp)
- ret
-L(UW4):
- # cfi_restore_state
-
-E(L(store_table), X86_RET_STRUCTPOP)
- jmp L(e1)
-E(L(store_table), X86_RET_STRUCTARG)
- jmp L(e1)
-E(L(store_table), X86_RET_STRUCT_1B)
- movb %al, (%ecx)
- jmp L(e1)
-E(L(store_table), X86_RET_STRUCT_2B)
- movw %ax, (%ecx)
- jmp L(e1)
-
- /* Fill out the table so that bad values are predictable. */
-E(L(store_table), X86_RET_UNUSED14)
- ud2
-E(L(store_table), X86_RET_UNUSED15)
- ud2
-
-L(UW5):
- # cfi_endproc
-ENDF(ffi_call_i386)
-
-/* The inner helper is declared as
-
- void ffi_closure_inner(struct closure_frame *frame, char *argp)
- __attribute_((fastcall))
-
- Thus the arguments are placed in
-
- ecx: frame
- edx: argp
-*/
-
-/* Macros to help setting up the closure_data structure. */
-
-#if HAVE_FASTCALL
-# define closure_FS (40 + 4)
-# define closure_CF 0
-#else
-# define closure_FS (8 + 40 + 12)
-# define closure_CF 8
-#endif
-
-#define FFI_CLOSURE_SAVE_REGS \
- movl %eax, closure_CF+16+R_EAX*4(%esp); \
- movl %edx, closure_CF+16+R_EDX*4(%esp); \
- movl %ecx, closure_CF+16+R_ECX*4(%esp)
-
-#define FFI_CLOSURE_COPY_TRAMP_DATA \
- movl FFI_TRAMPOLINE_SIZE(%eax), %edx; /* copy cif */ \
- movl FFI_TRAMPOLINE_SIZE+4(%eax), %ecx; /* copy fun */ \
- movl FFI_TRAMPOLINE_SIZE+8(%eax), %eax; /* copy user_data */ \
- movl %edx, closure_CF+28(%esp); \
- movl %ecx, closure_CF+32(%esp); \
- movl %eax, closure_CF+36(%esp)
-
-#if HAVE_FASTCALL
-# define FFI_CLOSURE_PREP_CALL \
- movl %esp, %ecx; /* load closure_data */ \
- leal closure_FS+4(%esp), %edx; /* load incoming stack */
-#else
-# define FFI_CLOSURE_PREP_CALL \
- leal closure_CF(%esp), %ecx; /* load closure_data */ \
- leal closure_FS+4(%esp), %edx; /* load incoming stack */ \
- movl %ecx, (%esp); \
- movl %edx, 4(%esp)
-#endif
-
-#define FFI_CLOSURE_CALL_INNER(UWN) \
- call ffi_closure_inner
-
-#define FFI_CLOSURE_MASK_AND_JUMP(N, UW) \
- andl $X86_RET_TYPE_MASK, %eax; \
- leal L(C1(load_table,N))(, %eax, 8), %edx; \
- movl closure_CF(%esp), %eax; /* optimiztic load */ \
- jmp *%edx
-
-#ifdef __PIC__
-# if defined X86_DARWIN || defined HAVE_HIDDEN_VISIBILITY_ATTRIBUTE
-# undef FFI_CLOSURE_MASK_AND_JUMP
-# define FFI_CLOSURE_MASK_AND_JUMP(N, UW) \
- andl $X86_RET_TYPE_MASK, %eax; \
- call C(__x86.get_pc_thunk.dx); \
-L(C1(pc,N)): \
- leal L(C1(load_table,N))-L(C1(pc,N))(%edx, %eax, 8), %edx; \
- movl closure_CF(%esp), %eax; /* optimiztic load */ \
- jmp *%edx
-# else
-# define FFI_CLOSURE_CALL_INNER_SAVE_EBX
-# undef FFI_CLOSURE_CALL_INNER
-# define FFI_CLOSURE_CALL_INNER(UWN) \
- movl %ebx, 40(%esp); /* save ebx */ \
-L(C1(UW,UWN)): \
- /* cfi_rel_offset(%ebx, 40); */ \
- call C(__x86.get_pc_thunk.bx); /* load got register */ \
- addl $C(_GLOBAL_OFFSET_TABLE_), %ebx; \
- call ffi_closure_inner@PLT
-# undef FFI_CLOSURE_MASK_AND_JUMP
-# define FFI_CLOSURE_MASK_AND_JUMP(N, UWN) \
- andl $X86_RET_TYPE_MASK, %eax; \
- leal L(C1(load_table,N))@GOTOFF(%ebx, %eax, 8), %edx; \
- movl 40(%esp), %ebx; /* restore ebx */ \
-L(C1(UW,UWN)): \
- /* cfi_restore(%ebx); */ \
- movl closure_CF(%esp), %eax; /* optimiztic load */ \
- jmp *%edx
-# endif /* DARWIN || HIDDEN */
-#endif /* __PIC__ */
-
- .balign 16
- .globl C(ffi_go_closure_EAX)
- FFI_HIDDEN(C(ffi_go_closure_EAX))
-C(ffi_go_closure_EAX):
-L(UW6):
- # cfi_startproc
- subl $closure_FS, %esp
-L(UW7):
- # cfi_def_cfa_offset(closure_FS + 4)
- FFI_CLOSURE_SAVE_REGS
- movl 4(%eax), %edx /* copy cif */
- movl 8(%eax), %ecx /* copy fun */
- movl %edx, closure_CF+28(%esp)
- movl %ecx, closure_CF+32(%esp)
- movl %eax, closure_CF+36(%esp) /* closure is user_data */
- jmp L(do_closure_i386)
-L(UW8):
- # cfi_endproc
-ENDF(C(ffi_go_closure_EAX))
-
- .balign 16
- .globl C(ffi_go_closure_ECX)
- FFI_HIDDEN(C(ffi_go_closure_ECX))
-C(ffi_go_closure_ECX):
-L(UW9):
- # cfi_startproc
- subl $closure_FS, %esp
-L(UW10):
- # cfi_def_cfa_offset(closure_FS + 4)
- FFI_CLOSURE_SAVE_REGS
- movl 4(%ecx), %edx /* copy cif */
- movl 8(%ecx), %eax /* copy fun */
- movl %edx, closure_CF+28(%esp)
- movl %eax, closure_CF+32(%esp)
- movl %ecx, closure_CF+36(%esp) /* closure is user_data */
- jmp L(do_closure_i386)
-L(UW11):
- # cfi_endproc
-ENDF(C(ffi_go_closure_ECX))
-
-/* The closure entry points are reached from the ffi_closure trampoline.
- On entry, %eax contains the address of the ffi_closure. */
-
- .balign 16
- .globl C(ffi_closure_i386)
- FFI_HIDDEN(C(ffi_closure_i386))
-
-C(ffi_closure_i386):
-L(UW12):
- # cfi_startproc
- subl $closure_FS, %esp
-L(UW13):
- # cfi_def_cfa_offset(closure_FS + 4)
-
- FFI_CLOSURE_SAVE_REGS
- FFI_CLOSURE_COPY_TRAMP_DATA
-
- /* Entry point from preceeding Go closures. */
-L(do_closure_i386):
-
- FFI_CLOSURE_PREP_CALL
- FFI_CLOSURE_CALL_INNER(14)
- FFI_CLOSURE_MASK_AND_JUMP(2, 15)
-
- .balign 8
-L(load_table2):
-E(L(load_table2), X86_RET_FLOAT)
- flds closure_CF(%esp)
- jmp L(e2)
-E(L(load_table2), X86_RET_DOUBLE)
- fldl closure_CF(%esp)
- jmp L(e2)
-E(L(load_table2), X86_RET_LDOUBLE)
- fldt closure_CF(%esp)
- jmp L(e2)
-E(L(load_table2), X86_RET_SINT8)
- movsbl %al, %eax
- jmp L(e2)
-E(L(load_table2), X86_RET_SINT16)
- movswl %ax, %eax
- jmp L(e2)
-E(L(load_table2), X86_RET_UINT8)
- movzbl %al, %eax
- jmp L(e2)
-E(L(load_table2), X86_RET_UINT16)
- movzwl %ax, %eax
- jmp L(e2)
-E(L(load_table2), X86_RET_INT64)
- movl closure_CF+4(%esp), %edx
- jmp L(e2)
-E(L(load_table2), X86_RET_INT32)
- nop
- /* fallthru */
-E(L(load_table2), X86_RET_VOID)
-L(e2):
- addl $closure_FS, %esp
-L(UW16):
- # cfi_adjust_cfa_offset(-closure_FS)
- ret
-L(UW17):
- # cfi_adjust_cfa_offset(closure_FS)
-E(L(load_table2), X86_RET_STRUCTPOP)
- addl $closure_FS, %esp
-L(UW18):
- # cfi_adjust_cfa_offset(-closure_FS)
- ret $4
-L(UW19):
- # cfi_adjust_cfa_offset(closure_FS)
-E(L(load_table2), X86_RET_STRUCTARG)
- jmp L(e2)
-E(L(load_table2), X86_RET_STRUCT_1B)
- movzbl %al, %eax
- jmp L(e2)
-E(L(load_table2), X86_RET_STRUCT_2B)
- movzwl %ax, %eax
- jmp L(e2)
-
- /* Fill out the table so that bad values are predictable. */
-E(L(load_table2), X86_RET_UNUSED14)
- ud2
-E(L(load_table2), X86_RET_UNUSED15)
- ud2
-
-L(UW20):
- # cfi_endproc
-ENDF(C(ffi_closure_i386))
-
- .balign 16
- .globl C(ffi_go_closure_STDCALL)
- FFI_HIDDEN(C(ffi_go_closure_STDCALL))
-C(ffi_go_closure_STDCALL):
-L(UW21):
- # cfi_startproc
- subl $closure_FS, %esp
-L(UW22):
- # cfi_def_cfa_offset(closure_FS + 4)
- FFI_CLOSURE_SAVE_REGS
- movl 4(%ecx), %edx /* copy cif */
- movl 8(%ecx), %eax /* copy fun */
- movl %edx, closure_CF+28(%esp)
- movl %eax, closure_CF+32(%esp)
- movl %ecx, closure_CF+36(%esp) /* closure is user_data */
- jmp L(do_closure_STDCALL)
-L(UW23):
- # cfi_endproc
-ENDF(C(ffi_go_closure_STDCALL))
-
-/* For REGISTER, we have no available parameter registers, and so we
- enter here having pushed the closure onto the stack. */
-
- .balign 16
- .globl C(ffi_closure_REGISTER)
- FFI_HIDDEN(C(ffi_closure_REGISTER))
-C(ffi_closure_REGISTER):
-L(UW24):
- # cfi_startproc
- # cfi_def_cfa(%esp, 8)
- # cfi_offset(%eip, -8)
- subl $closure_FS-4, %esp
-L(UW25):
- # cfi_def_cfa_offset(closure_FS + 4)
- FFI_CLOSURE_SAVE_REGS
- movl closure_FS-4(%esp), %ecx /* load retaddr */
- movl closure_FS(%esp), %eax /* load closure */
- movl %ecx, closure_FS(%esp) /* move retaddr */
- jmp L(do_closure_REGISTER)
-L(UW26):
- # cfi_endproc
-ENDF(C(ffi_closure_REGISTER))
-
-/* For STDCALL (and others), we need to pop N bytes of arguments off
- the stack following the closure. The amount needing to be popped
- is returned to us from ffi_closure_inner. */
-
- .balign 16
- .globl C(ffi_closure_STDCALL)
- FFI_HIDDEN(C(ffi_closure_STDCALL))
-C(ffi_closure_STDCALL):
-L(UW27):
- # cfi_startproc
- subl $closure_FS, %esp
-L(UW28):
- # cfi_def_cfa_offset(closure_FS + 4)
-
- FFI_CLOSURE_SAVE_REGS
-
- /* Entry point from ffi_closure_REGISTER. */
-L(do_closure_REGISTER):
-
- FFI_CLOSURE_COPY_TRAMP_DATA
-
- /* Entry point from preceeding Go closure. */
-L(do_closure_STDCALL):
-
- FFI_CLOSURE_PREP_CALL
- FFI_CLOSURE_CALL_INNER(29)
-
- movl %eax, %ecx
- shrl $X86_RET_POP_SHIFT, %ecx /* isolate pop count */
- leal closure_FS(%esp, %ecx), %ecx /* compute popped esp */
- movl closure_FS(%esp), %edx /* move return address */
- movl %edx, (%ecx)
-
- /* From this point on, the value of %esp upon return is %ecx+4,
- and we've copied the return address to %ecx to make return easy.
- There's no point in representing this in the unwind info, as
- there is always a window between the mov and the ret which
- will be wrong from one point of view or another. */
-
- FFI_CLOSURE_MASK_AND_JUMP(3, 30)
-
- .balign 8
-L(load_table3):
-E(L(load_table3), X86_RET_FLOAT)
- flds closure_CF(%esp)
- movl %ecx, %esp
- ret
-E(L(load_table3), X86_RET_DOUBLE)
- fldl closure_CF(%esp)
- movl %ecx, %esp
- ret
-E(L(load_table3), X86_RET_LDOUBLE)
- fldt closure_CF(%esp)
- movl %ecx, %esp
- ret
-E(L(load_table3), X86_RET_SINT8)
- movsbl %al, %eax
- movl %ecx, %esp
- ret
-E(L(load_table3), X86_RET_SINT16)
- movswl %ax, %eax
- movl %ecx, %esp
- ret
-E(L(load_table3), X86_RET_UINT8)
- movzbl %al, %eax
- movl %ecx, %esp
- ret
-E(L(load_table3), X86_RET_UINT16)
- movzwl %ax, %eax
- movl %ecx, %esp
- ret
-E(L(load_table3), X86_RET_INT64)
- movl closure_CF+4(%esp), %edx
- movl %ecx, %esp
- ret
-E(L(load_table3), X86_RET_INT32)
- movl %ecx, %esp
- ret
-E(L(load_table3), X86_RET_VOID)
- movl %ecx, %esp
- ret
-E(L(load_table3), X86_RET_STRUCTPOP)
- movl %ecx, %esp
- ret
-E(L(load_table3), X86_RET_STRUCTARG)
- movl %ecx, %esp
- ret
-E(L(load_table3), X86_RET_STRUCT_1B)
- movzbl %al, %eax
- movl %ecx, %esp
- ret
-E(L(load_table3), X86_RET_STRUCT_2B)
- movzwl %ax, %eax
- movl %ecx, %esp
- ret
-
- /* Fill out the table so that bad values are predictable. */
-E(L(load_table3), X86_RET_UNUSED14)
- ud2
-E(L(load_table3), X86_RET_UNUSED15)
- ud2
-
-L(UW31):
- # cfi_endproc
-ENDF(C(ffi_closure_STDCALL))
-
-#if !FFI_NO_RAW_API
-
-#define raw_closure_S_FS (16+16+12)
-
- .balign 16
- .globl C(ffi_closure_raw_SYSV)
- FFI_HIDDEN(C(ffi_closure_raw_SYSV))
-C(ffi_closure_raw_SYSV):
-L(UW32):
- # cfi_startproc
- subl $raw_closure_S_FS, %esp
-L(UW33):
- # cfi_def_cfa_offset(raw_closure_S_FS + 4)
- movl %ebx, raw_closure_S_FS-4(%esp)
-L(UW34):
- # cfi_rel_offset(%ebx, raw_closure_S_FS-4)
-
- movl FFI_TRAMPOLINE_SIZE+8(%eax), %edx /* load cl->user_data */
- movl %edx, 12(%esp)
- leal raw_closure_S_FS+4(%esp), %edx /* load raw_args */
- movl %edx, 8(%esp)
- leal 16(%esp), %edx /* load &res */
- movl %edx, 4(%esp)
- movl FFI_TRAMPOLINE_SIZE(%eax), %ebx /* load cl->cif */
- movl %ebx, (%esp)
- call *FFI_TRAMPOLINE_SIZE+4(%eax) /* call cl->fun */
-
- movl 20(%ebx), %eax /* load cif->flags */
- andl $X86_RET_TYPE_MASK, %eax
-#ifdef __PIC__
- call C(__x86.get_pc_thunk.bx)
-L(pc4):
- leal L(load_table4)-L(pc4)(%ebx, %eax, 8), %ecx
-#else
- leal L(load_table4)(,%eax, 8), %ecx
-#endif
- movl raw_closure_S_FS-4(%esp), %ebx
-L(UW35):
- # cfi_restore(%ebx)
- movl 16(%esp), %eax /* Optimistic load */
- jmp *%ecx
-
- .balign 8
-L(load_table4):
-E(L(load_table4), X86_RET_FLOAT)
- flds 16(%esp)
- jmp L(e4)
-E(L(load_table4), X86_RET_DOUBLE)
- fldl 16(%esp)
- jmp L(e4)
-E(L(load_table4), X86_RET_LDOUBLE)
- fldt 16(%esp)
- jmp L(e4)
-E(L(load_table4), X86_RET_SINT8)
- movsbl %al, %eax
- jmp L(e4)
-E(L(load_table4), X86_RET_SINT16)
- movswl %ax, %eax
- jmp L(e4)
-E(L(load_table4), X86_RET_UINT8)
- movzbl %al, %eax
- jmp L(e4)
-E(L(load_table4), X86_RET_UINT16)
- movzwl %ax, %eax
- jmp L(e4)
-E(L(load_table4), X86_RET_INT64)
- movl 16+4(%esp), %edx
- jmp L(e4)
-E(L(load_table4), X86_RET_INT32)
- nop
- /* fallthru */
-E(L(load_table4), X86_RET_VOID)
-L(e4):
- addl $raw_closure_S_FS, %esp
-L(UW36):
- # cfi_adjust_cfa_offset(-raw_closure_S_FS)
- ret
-L(UW37):
- # cfi_adjust_cfa_offset(raw_closure_S_FS)
-E(L(load_table4), X86_RET_STRUCTPOP)
- addl $raw_closure_S_FS, %esp
-L(UW38):
- # cfi_adjust_cfa_offset(-raw_closure_S_FS)
- ret $4
-L(UW39):
- # cfi_adjust_cfa_offset(raw_closure_S_FS)
-E(L(load_table4), X86_RET_STRUCTARG)
- jmp L(e4)
-E(L(load_table4), X86_RET_STRUCT_1B)
- movzbl %al, %eax
- jmp L(e4)
-E(L(load_table4), X86_RET_STRUCT_2B)
- movzwl %ax, %eax
- jmp L(e4)
-
- /* Fill out the table so that bad values are predictable. */
-E(L(load_table4), X86_RET_UNUSED14)
- ud2
-E(L(load_table4), X86_RET_UNUSED15)
- ud2
-
-L(UW40):
- # cfi_endproc
-ENDF(C(ffi_closure_raw_SYSV))
-
-#define raw_closure_T_FS (16+16+8)
-
- .balign 16
- .globl C(ffi_closure_raw_THISCALL)
- FFI_HIDDEN(C(ffi_closure_raw_THISCALL))
-C(ffi_closure_raw_THISCALL):
-L(UW41):
- # cfi_startproc
- /* Rearrange the stack such that %ecx is the first argument.
- This means moving the return address. */
- popl %edx
-L(UW42):
- # cfi_def_cfa_offset(0)
- # cfi_register(%eip, %edx)
- pushl %ecx
-L(UW43):
- # cfi_adjust_cfa_offset(4)
- pushl %edx
-L(UW44):
- # cfi_adjust_cfa_offset(4)
- # cfi_rel_offset(%eip, 0)
- subl $raw_closure_T_FS, %esp
-L(UW45):
- # cfi_adjust_cfa_offset(raw_closure_T_FS)
- movl %ebx, raw_closure_T_FS-4(%esp)
-L(UW46):
- # cfi_rel_offset(%ebx, raw_closure_T_FS-4)
-
- movl FFI_TRAMPOLINE_SIZE+8(%eax), %edx /* load cl->user_data */
- movl %edx, 12(%esp)
- leal raw_closure_T_FS+4(%esp), %edx /* load raw_args */
- movl %edx, 8(%esp)
- leal 16(%esp), %edx /* load &res */
- movl %edx, 4(%esp)
- movl FFI_TRAMPOLINE_SIZE(%eax), %ebx /* load cl->cif */
- movl %ebx, (%esp)
- call *FFI_TRAMPOLINE_SIZE+4(%eax) /* call cl->fun */
-
- movl 20(%ebx), %eax /* load cif->flags */
- andl $X86_RET_TYPE_MASK, %eax
-#ifdef __PIC__
- call C(__x86.get_pc_thunk.bx)
-L(pc5):
- leal L(load_table5)-L(pc5)(%ebx, %eax, 8), %ecx
-#else
- leal L(load_table5)(,%eax, 8), %ecx
-#endif
- movl raw_closure_T_FS-4(%esp), %ebx
-L(UW47):
- # cfi_restore(%ebx)
- movl 16(%esp), %eax /* Optimistic load */
- jmp *%ecx
-
- .balign 8
-L(load_table5):
-E(L(load_table5), X86_RET_FLOAT)
- flds 16(%esp)
- jmp L(e5)
-E(L(load_table5), X86_RET_DOUBLE)
- fldl 16(%esp)
- jmp L(e5)
-E(L(load_table5), X86_RET_LDOUBLE)
- fldt 16(%esp)
- jmp L(e5)
-E(L(load_table5), X86_RET_SINT8)
- movsbl %al, %eax
- jmp L(e5)
-E(L(load_table5), X86_RET_SINT16)
- movswl %ax, %eax
- jmp L(e5)
-E(L(load_table5), X86_RET_UINT8)
- movzbl %al, %eax
- jmp L(e5)
-E(L(load_table5), X86_RET_UINT16)
- movzwl %ax, %eax
- jmp L(e5)
-E(L(load_table5), X86_RET_INT64)
- movl 16+4(%esp), %edx
- jmp L(e5)
-E(L(load_table5), X86_RET_INT32)
- nop
- /* fallthru */
-E(L(load_table5), X86_RET_VOID)
-L(e5):
- addl $raw_closure_T_FS, %esp
-L(UW48):
- # cfi_adjust_cfa_offset(-raw_closure_T_FS)
- /* Remove the extra %ecx argument we pushed. */
- ret $4
-L(UW49):
- # cfi_adjust_cfa_offset(raw_closure_T_FS)
-E(L(load_table5), X86_RET_STRUCTPOP)
- addl $raw_closure_T_FS, %esp
-L(UW50):
- # cfi_adjust_cfa_offset(-raw_closure_T_FS)
- ret $8
-L(UW51):
- # cfi_adjust_cfa_offset(raw_closure_T_FS)
-E(L(load_table5), X86_RET_STRUCTARG)
- jmp L(e5)
-E(L(load_table5), X86_RET_STRUCT_1B)
- movzbl %al, %eax
- jmp L(e5)
-E(L(load_table5), X86_RET_STRUCT_2B)
- movzwl %ax, %eax
- jmp L(e5)
-
- /* Fill out the table so that bad values are predictable. */
-E(L(load_table5), X86_RET_UNUSED14)
- ud2
-E(L(load_table5), X86_RET_UNUSED15)
- ud2
-
-L(UW52):
- # cfi_endproc
-ENDF(C(ffi_closure_raw_THISCALL))
-
-#endif /* !FFI_NO_RAW_API */
-
-#ifdef X86_DARWIN
-# define COMDAT(X) \
- .section __TEXT,__text,coalesced,pure_instructions; \
- .weak_definition X; \
- FFI_HIDDEN(X)
-#elif defined __ELF__ && !(defined(__sun__) && defined(__svr4__))
-# define COMDAT(X) \
- .section .text.X,"axG",@progbits,X,comdat; \
- .globl X; \
- FFI_HIDDEN(X)
-#else
-# define COMDAT(X)
-#endif
-
-#if defined(__PIC__)
- COMDAT(C(__x86.get_pc_thunk.bx))
-C(__x86.get_pc_thunk.bx):
- movl (%esp), %ebx
- ret
-ENDF(C(__x86.get_pc_thunk.bx))
-# if defined X86_DARWIN || defined HAVE_HIDDEN_VISIBILITY_ATTRIBUTE
- COMDAT(C(__x86.get_pc_thunk.dx))
-C(__x86.get_pc_thunk.dx):
- movl (%esp), %edx
- ret
-ENDF(C(__x86.get_pc_thunk.dx))
-#endif /* DARWIN || HIDDEN */
-#endif /* __PIC__ */
-
-/* Sadly, OSX cctools-as doesn't understand .cfi directives at all. */
-
-#ifdef __APPLE__
-.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support
-EHFrame0:
-#elif defined(X86_WIN32)
-.section .eh_frame,"r"
-#elif defined(HAVE_AS_X86_64_UNWIND_SECTION_TYPE)
-.section .eh_frame,EH_FRAME_FLAGS,@unwind
-#else
-.section .eh_frame,EH_FRAME_FLAGS,@progbits
-#endif
-
-#ifdef HAVE_AS_X86_PCREL
-# define PCREL(X) X - .
-#else
-# define PCREL(X) X@rel
-#endif
-
-/* Simplify advancing between labels. Assume DW_CFA_advance_loc1 fits. */
-#define ADV(N, P) .byte 2, L(N)-L(P)
-
- .balign 4
-L(CIE):
- .set L(set0),L(ECIE)-L(SCIE)
- .long L(set0) /* CIE Length */
-L(SCIE):
- .long 0 /* CIE Identifier Tag */
- .byte 1 /* CIE Version */
- .ascii "zR\0" /* CIE Augmentation */
- .byte 1 /* CIE Code Alignment Factor */
- .byte 0x7c /* CIE Data Alignment Factor */
- .byte 0x8 /* CIE RA Column */
- .byte 1 /* Augmentation size */
- .byte 0x1b /* FDE Encoding (pcrel sdata4) */
- .byte 0xc, 4, 4 /* DW_CFA_def_cfa, %esp offset 4 */
- .byte 0x80+8, 1 /* DW_CFA_offset, %eip offset 1*-4 */
- .balign 4
-L(ECIE):
-
- .set L(set1),L(EFDE1)-L(SFDE1)
- .long L(set1) /* FDE Length */
-L(SFDE1):
- .long L(SFDE1)-L(CIE) /* FDE CIE offset */
- .long PCREL(L(UW0)) /* Initial location */
- .long L(UW5)-L(UW0) /* Address range */
- .byte 0 /* Augmentation size */
- ADV(UW1, UW0)
- .byte 0xc, 5, 8 /* DW_CFA_def_cfa, %ebp 8 */
- .byte 0x80+5, 2 /* DW_CFA_offset, %ebp 2*-4 */
- ADV(UW2, UW1)
- .byte 0x80+3, 0 /* DW_CFA_offset, %ebx 0*-4 */
- ADV(UW3, UW2)
- .byte 0xa /* DW_CFA_remember_state */
- .byte 0xc, 4, 4 /* DW_CFA_def_cfa, %esp 4 */
- .byte 0xc0+3 /* DW_CFA_restore, %ebx */
- .byte 0xc0+5 /* DW_CFA_restore, %ebp */
- ADV(UW4, UW3)
- .byte 0xb /* DW_CFA_restore_state */
- .balign 4
-L(EFDE1):
-
- .set L(set2),L(EFDE2)-L(SFDE2)
- .long L(set2) /* FDE Length */
-L(SFDE2):
- .long L(SFDE2)-L(CIE) /* FDE CIE offset */
- .long PCREL(L(UW6)) /* Initial location */
- .long L(UW8)-L(UW6) /* Address range */
- .byte 0 /* Augmentation size */
- ADV(UW7, UW6)
- .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */
- .balign 4
-L(EFDE2):
-
- .set L(set3),L(EFDE3)-L(SFDE3)
- .long L(set3) /* FDE Length */
-L(SFDE3):
- .long L(SFDE3)-L(CIE) /* FDE CIE offset */
- .long PCREL(L(UW9)) /* Initial location */
- .long L(UW11)-L(UW9) /* Address range */
- .byte 0 /* Augmentation size */
- ADV(UW10, UW9)
- .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */
- .balign 4
-L(EFDE3):
-
- .set L(set4),L(EFDE4)-L(SFDE4)
- .long L(set4) /* FDE Length */
-L(SFDE4):
- .long L(SFDE4)-L(CIE) /* FDE CIE offset */
- .long PCREL(L(UW12)) /* Initial location */
- .long L(UW20)-L(UW12) /* Address range */
- .byte 0 /* Augmentation size */
- ADV(UW13, UW12)
- .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */
-#ifdef FFI_CLOSURE_CALL_INNER_SAVE_EBX
- ADV(UW14, UW13)
- .byte 0x80+3, (40-(closure_FS+4))/-4 /* DW_CFA_offset %ebx */
- ADV(UW15, UW14)
- .byte 0xc0+3 /* DW_CFA_restore %ebx */
- ADV(UW16, UW15)
-#else
- ADV(UW16, UW13)
-#endif
- .byte 0xe, 4 /* DW_CFA_def_cfa_offset */
- ADV(UW17, UW16)
- .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */
- ADV(UW18, UW17)
- .byte 0xe, 4 /* DW_CFA_def_cfa_offset */
- ADV(UW19, UW18)
- .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */
- .balign 4
-L(EFDE4):
-
- .set L(set5),L(EFDE5)-L(SFDE5)
- .long L(set5) /* FDE Length */
-L(SFDE5):
- .long L(SFDE5)-L(CIE) /* FDE CIE offset */
- .long PCREL(L(UW21)) /* Initial location */
- .long L(UW23)-L(UW21) /* Address range */
- .byte 0 /* Augmentation size */
- ADV(UW22, UW21)
- .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */
- .balign 4
-L(EFDE5):
-
- .set L(set6),L(EFDE6)-L(SFDE6)
- .long L(set6) /* FDE Length */
-L(SFDE6):
- .long L(SFDE6)-L(CIE) /* FDE CIE offset */
- .long PCREL(L(UW24)) /* Initial location */
- .long L(UW26)-L(UW24) /* Address range */
- .byte 0 /* Augmentation size */
- .byte 0xe, 8 /* DW_CFA_def_cfa_offset */
- .byte 0x80+8, 2 /* DW_CFA_offset %eip, 2*-4 */
- ADV(UW25, UW24)
- .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */
- .balign 4
-L(EFDE6):
-
- .set L(set7),L(EFDE7)-L(SFDE7)
- .long L(set7) /* FDE Length */
-L(SFDE7):
- .long L(SFDE7)-L(CIE) /* FDE CIE offset */
- .long PCREL(L(UW27)) /* Initial location */
- .long L(UW31)-L(UW27) /* Address range */
- .byte 0 /* Augmentation size */
- ADV(UW28, UW27)
- .byte 0xe, closure_FS+4 /* DW_CFA_def_cfa_offset */
-#ifdef FFI_CLOSURE_CALL_INNER_SAVE_EBX
- ADV(UW29, UW28)
- .byte 0x80+3, (40-(closure_FS+4))/-4 /* DW_CFA_offset %ebx */
- ADV(UW30, UW29)
- .byte 0xc0+3 /* DW_CFA_restore %ebx */
-#endif
- .balign 4
-L(EFDE7):
-
-#if !FFI_NO_RAW_API
- .set L(set8),L(EFDE8)-L(SFDE8)
- .long L(set8) /* FDE Length */
-L(SFDE8):
- .long L(SFDE8)-L(CIE) /* FDE CIE offset */
- .long PCREL(L(UW32)) /* Initial location */
- .long L(UW40)-L(UW32) /* Address range */
- .byte 0 /* Augmentation size */
- ADV(UW33, UW32)
- .byte 0xe, raw_closure_S_FS+4 /* DW_CFA_def_cfa_offset */
- ADV(UW34, UW33)
- .byte 0x80+3, 2 /* DW_CFA_offset %ebx 2*-4 */
- ADV(UW35, UW34)
- .byte 0xc0+3 /* DW_CFA_restore %ebx */
- ADV(UW36, UW35)
- .byte 0xe, 4 /* DW_CFA_def_cfa_offset */
- ADV(UW37, UW36)
- .byte 0xe, raw_closure_S_FS+4 /* DW_CFA_def_cfa_offset */
- ADV(UW38, UW37)
- .byte 0xe, 4 /* DW_CFA_def_cfa_offset */
- ADV(UW39, UW38)
- .byte 0xe, raw_closure_S_FS+4 /* DW_CFA_def_cfa_offset */
- .balign 4
-L(EFDE8):
-
- .set L(set9),L(EFDE9)-L(SFDE9)
- .long L(set9) /* FDE Length */
-L(SFDE9):
- .long L(SFDE9)-L(CIE) /* FDE CIE offset */
- .long PCREL(L(UW41)) /* Initial location */
- .long L(UW52)-L(UW41) /* Address range */
- .byte 0 /* Augmentation size */
- ADV(UW42, UW41)
- .byte 0xe, 0 /* DW_CFA_def_cfa_offset */
- .byte 0x9, 8, 2 /* DW_CFA_register %eip, %edx */
- ADV(UW43, UW42)
- .byte 0xe, 4 /* DW_CFA_def_cfa_offset */
- ADV(UW44, UW43)
- .byte 0xe, 8 /* DW_CFA_def_cfa_offset */
- .byte 0x80+8, 2 /* DW_CFA_offset %eip 2*-4 */
- ADV(UW45, UW44)
- .byte 0xe, raw_closure_T_FS+8 /* DW_CFA_def_cfa_offset */
- ADV(UW46, UW45)
- .byte 0x80+3, 3 /* DW_CFA_offset %ebx 3*-4 */
- ADV(UW47, UW46)
- .byte 0xc0+3 /* DW_CFA_restore %ebx */
- ADV(UW48, UW47)
- .byte 0xe, 8 /* DW_CFA_def_cfa_offset */
- ADV(UW49, UW48)
- .byte 0xe, raw_closure_T_FS+8 /* DW_CFA_def_cfa_offset */
- ADV(UW50, UW49)
- .byte 0xe, 8 /* DW_CFA_def_cfa_offset */
- ADV(UW51, UW50)
- .byte 0xe, raw_closure_T_FS+8 /* DW_CFA_def_cfa_offset */
- .balign 4
-L(EFDE9):
-#endif /* !FFI_NO_RAW_API */
-
-#ifdef _WIN32
- .def @feat.00;
- .scl 3;
- .type 0;
- .endef
- .globl @feat.00
-@feat.00 = 1
-#endif
-
-#ifdef __APPLE__
- .subsections_via_symbols
- .section __LD,__compact_unwind,regular,debug
-
- /* compact unwind for ffi_call_i386 */
- .long C(ffi_call_i386)
- .set L1,L(UW5)-L(UW0)
- .long L1
- .long 0x04000000 /* use dwarf unwind info */
- .long 0
- .long 0
-
- /* compact unwind for ffi_go_closure_EAX */
- .long C(ffi_go_closure_EAX)
- .set L2,L(UW8)-L(UW6)
- .long L2
- .long 0x04000000 /* use dwarf unwind info */
- .long 0
- .long 0
-
- /* compact unwind for ffi_go_closure_ECX */
- .long C(ffi_go_closure_ECX)
- .set L3,L(UW11)-L(UW9)
- .long L3
- .long 0x04000000 /* use dwarf unwind info */
- .long 0
- .long 0
-
- /* compact unwind for ffi_closure_i386 */
- .long C(ffi_closure_i386)
- .set L4,L(UW20)-L(UW12)
- .long L4
- .long 0x04000000 /* use dwarf unwind info */
- .long 0
- .long 0
-
- /* compact unwind for ffi_go_closure_STDCALL */
- .long C(ffi_go_closure_STDCALL)
- .set L5,L(UW23)-L(UW21)
- .long L5
- .long 0x04000000 /* use dwarf unwind info */
- .long 0
- .long 0
-
- /* compact unwind for ffi_closure_REGISTER */
- .long C(ffi_closure_REGISTER)
- .set L6,L(UW26)-L(UW24)
- .long L6
- .long 0x04000000 /* use dwarf unwind info */
- .long 0
- .long 0
-
- /* compact unwind for ffi_closure_STDCALL */
- .long C(ffi_closure_STDCALL)
- .set L7,L(UW31)-L(UW27)
- .long L7
- .long 0x04000000 /* use dwarf unwind info */
- .long 0
- .long 0
-
- /* compact unwind for ffi_closure_raw_SYSV */
- .long C(ffi_closure_raw_SYSV)
- .set L8,L(UW40)-L(UW32)
- .long L8
- .long 0x04000000 /* use dwarf unwind info */
- .long 0
- .long 0
-
- /* compact unwind for ffi_closure_raw_THISCALL */
- .long C(ffi_closure_raw_THISCALL)
- .set L9,L(UW52)-L(UW41)
- .long L9
- .long 0x04000000 /* use dwarf unwind info */
- .long 0
- .long 0
-#endif /* __APPLE__ */
-
-#endif /* ifndef _MSC_VER */
-#endif /* ifdef __i386__ */
-
-#if defined __ELF__ && defined __linux__
- .section .note.GNU-stack,"",@progbits
-#endif
-
-
-====================File: src/x86/unix64.S====================
-/* -----------------------------------------------------------------------
- unix64.S - Copyright (c) 2013 The Written Word, Inc.
- - Copyright (c) 2008 Red Hat, Inc
- - Copyright (c) 2002 Bo Thorsen <bo@suse.de>
-
- x86-64 Foreign Function Interface
-
- 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.
- ----------------------------------------------------------------------- */
-
-#ifdef __x86_64__
-#define LIBFFI_ASM
-#include <fficonfig.h>
-#include <ffi.h>
-#include "internal64.h"
-#include "asmnames.h"
-
- .text
-
-/* This macro allows the safe creation of jump tables without an
- actual table. The entry points into the table are all 8 bytes.
- The use of ORG asserts that we're at the correct location. */
-/* ??? The clang assembler doesn't handle .org with symbolic expressions. */
-#if defined(__clang__) || defined(__APPLE__) || (defined (__sun__) && defined(__svr4__))
-# define E(BASE, X) .balign 8
-#else
-# define E(BASE, X) .balign 8; .org BASE + X * 8
-#endif
-
-/* ffi_call_unix64 (void *args, unsigned long bytes, unsigned flags,
- void *raddr, void (*fnaddr)(void));
-
- Bit o trickiness here -- ARGS+BYTES is the base of the stack frame
- for this function. This has been allocated by ffi_call. We also
- deallocate some of the stack that has been alloca'd. */
-
- .balign 8
- .globl C(ffi_call_unix64)
- FFI_HIDDEN(C(ffi_call_unix64))
-
-C(ffi_call_unix64):
-L(UW0):
- movq (%rsp), %r10 /* Load return address. */
- leaq (%rdi, %rsi), %rax /* Find local stack base. */
- movq %rdx, (%rax) /* Save flags. */
- movq %rcx, 8(%rax) /* Save raddr. */
- movq %rbp, 16(%rax) /* Save old frame pointer. */
- movq %r10, 24(%rax) /* Relocate return address. */
- movq %rax, %rbp /* Finalize local stack frame. */
-
- /* New stack frame based off rbp. This is a itty bit of unwind
- trickery in that the CFA *has* changed. There is no easy way
- to describe it correctly on entry to the function. Fortunately,
- it doesn't matter too much since at all points we can correctly
- unwind back to ffi_call. Note that the location to which we
- moved the return address is (the new) CFA-8, so from the
- perspective of the unwind info, it hasn't moved. */
-L(UW1):
- /* cfi_def_cfa(%rbp, 32) */
- /* cfi_rel_offset(%rbp, 16) */
-
- movq %rdi, %r10 /* Save a copy of the register area. */
- movq %r8, %r11 /* Save a copy of the target fn. */
- movl %r9d, %eax /* Set number of SSE registers. */
-
- /* Load up all argument registers. */
- movq (%r10), %rdi
- movq 0x08(%r10), %rsi
- movq 0x10(%r10), %rdx
- movq 0x18(%r10), %rcx
- movq 0x20(%r10), %r8
- movq 0x28(%r10), %r9
- movl 0xb0(%r10), %eax
- testl %eax, %eax
- jnz L(load_sse)
-L(ret_from_load_sse):
-
- /* Deallocate the reg arg area, except for r10, then load via pop. */
- leaq 0xb8(%r10), %rsp
- popq %r10
-
- /* Call the user function. */
- call *%r11
-
- /* Deallocate stack arg area; local stack frame in redzone. */
- leaq 24(%rbp), %rsp
-
- movq 0(%rbp), %rcx /* Reload flags. */
- movq 8(%rbp), %rdi /* Reload raddr. */
- movq 16(%rbp), %rbp /* Reload old frame pointer. */
-L(UW2):
- /* cfi_remember_state */
- /* cfi_def_cfa(%rsp, 8) */
- /* cfi_restore(%rbp) */
-
- /* The first byte of the flags contains the FFI_TYPE. */
- cmpb $UNIX64_RET_LAST, %cl
- movzbl %cl, %r10d
- leaq L(store_table)(%rip), %r11
- ja L(sa)
- leaq (%r11, %r10, 8), %r10
-
- /* Prep for the structure cases: scratch area in redzone. */
- leaq -20(%rsp), %rsi
- jmp *%r10
-
- .balign 8
-L(store_table):
-E(L(store_table), UNIX64_RET_VOID)
- ret
-E(L(store_table), UNIX64_RET_UINT8)
- movzbl %al, %eax
- movq %rax, (%rdi)
- ret
-E(L(store_table), UNIX64_RET_UINT16)
- movzwl %ax, %eax
- movq %rax, (%rdi)
- ret
-E(L(store_table), UNIX64_RET_UINT32)
- movl %eax, %eax
- movq %rax, (%rdi)
- ret
-E(L(store_table), UNIX64_RET_SINT8)
- movsbq %al, %rax
- movq %rax, (%rdi)
- ret
-E(L(store_table), UNIX64_RET_SINT16)
- movswq %ax, %rax
- movq %rax, (%rdi)
- ret
-E(L(store_table), UNIX64_RET_SINT32)
- cltq
- movq %rax, (%rdi)
- ret
-E(L(store_table), UNIX64_RET_INT64)
- movq %rax, (%rdi)
- ret
-E(L(store_table), UNIX64_RET_XMM32)
- movd %xmm0, (%rdi)
- ret
-E(L(store_table), UNIX64_RET_XMM64)
- movq %xmm0, (%rdi)
- ret
-E(L(store_table), UNIX64_RET_X87)
- fstpt (%rdi)
- ret
-E(L(store_table), UNIX64_RET_X87_2)
- fstpt (%rdi)
- fstpt 16(%rdi)
- ret
-E(L(store_table), UNIX64_RET_ST_XMM0_RAX)
- movq %rax, 8(%rsi)
- jmp L(s3)
-E(L(store_table), UNIX64_RET_ST_RAX_XMM0)
- movq %xmm0, 8(%rsi)
- jmp L(s2)
-E(L(store_table), UNIX64_RET_ST_XMM0_XMM1)
- movq %xmm1, 8(%rsi)
- jmp L(s3)
-E(L(store_table), UNIX64_RET_ST_RAX_RDX)
- movq %rdx, 8(%rsi)
-L(s2):
- movq %rax, (%rsi)
- shrl $UNIX64_SIZE_SHIFT, %ecx
- rep movsb
- ret
- .balign 8
-L(s3):
- movq %xmm0, (%rsi)
- shrl $UNIX64_SIZE_SHIFT, %ecx
- rep movsb
- ret
-
-L(sa): call PLT(C(abort))
-
- /* Many times we can avoid loading any SSE registers at all.
- It's not worth an indirect jump to load the exact set of
- SSE registers needed; zero or all is a good compromise. */
- .balign 2
-L(UW3):
- /* cfi_restore_state */
-L(load_sse):
- movdqa 0x30(%r10), %xmm0
- movdqa 0x40(%r10), %xmm1
- movdqa 0x50(%r10), %xmm2
- movdqa 0x60(%r10), %xmm3
- movdqa 0x70(%r10), %xmm4
- movdqa 0x80(%r10), %xmm5
- movdqa 0x90(%r10), %xmm6
- movdqa 0xa0(%r10), %xmm7
- jmp L(ret_from_load_sse)
-
-L(UW4):
-ENDF(C(ffi_call_unix64))
-
-/* 6 general registers, 8 vector registers,
- 32 bytes of rvalue, 8 bytes of alignment. */
-#define ffi_closure_OFS_G 0
-#define ffi_closure_OFS_V (6*8)
-#define ffi_closure_OFS_RVALUE (ffi_closure_OFS_V + 8*16)
-#define ffi_closure_FS (ffi_closure_OFS_RVALUE + 32 + 8)
-
-/* The location of rvalue within the red zone after deallocating the frame. */
-#define ffi_closure_RED_RVALUE (ffi_closure_OFS_RVALUE - ffi_closure_FS)
-
- .balign 2
- .globl C(ffi_closure_unix64_sse)
- FFI_HIDDEN(C(ffi_closure_unix64_sse))
-
-C(ffi_closure_unix64_sse):
-L(UW5):
- subq $ffi_closure_FS, %rsp
-L(UW6):
- /* cfi_adjust_cfa_offset(ffi_closure_FS) */
-
- movdqa %xmm0, ffi_closure_OFS_V+0x00(%rsp)
- movdqa %xmm1, ffi_closure_OFS_V+0x10(%rsp)
- movdqa %xmm2, ffi_closure_OFS_V+0x20(%rsp)
- movdqa %xmm3, ffi_closure_OFS_V+0x30(%rsp)
- movdqa %xmm4, ffi_closure_OFS_V+0x40(%rsp)
- movdqa %xmm5, ffi_closure_OFS_V+0x50(%rsp)
- movdqa %xmm6, ffi_closure_OFS_V+0x60(%rsp)
- movdqa %xmm7, ffi_closure_OFS_V+0x70(%rsp)
- jmp L(sse_entry1)
-
-L(UW7):
-ENDF(C(ffi_closure_unix64_sse))
-
- .balign 2
- .globl C(ffi_closure_unix64)
- FFI_HIDDEN(C(ffi_closure_unix64))
-
-C(ffi_closure_unix64):
-L(UW8):
- subq $ffi_closure_FS, %rsp
-L(UW9):
- /* cfi_adjust_cfa_offset(ffi_closure_FS) */
-L(sse_entry1):
- movq %rdi, ffi_closure_OFS_G+0x00(%rsp)
- movq %rsi, ffi_closure_OFS_G+0x08(%rsp)
- movq %rdx, ffi_closure_OFS_G+0x10(%rsp)
- movq %rcx, ffi_closure_OFS_G+0x18(%rsp)
- movq %r8, ffi_closure_OFS_G+0x20(%rsp)
- movq %r9, ffi_closure_OFS_G+0x28(%rsp)
-
-#ifdef __ILP32__
- movl FFI_TRAMPOLINE_SIZE(%r10), %edi /* Load cif */
- movl FFI_TRAMPOLINE_SIZE+4(%r10), %esi /* Load fun */
- movl FFI_TRAMPOLINE_SIZE+8(%r10), %edx /* Load user_data */
-#else
- movq FFI_TRAMPOLINE_SIZE(%r10), %rdi /* Load cif */
- movq FFI_TRAMPOLINE_SIZE+8(%r10), %rsi /* Load fun */
- movq FFI_TRAMPOLINE_SIZE+16(%r10), %rdx /* Load user_data */
-#endif
-L(do_closure):
- leaq ffi_closure_OFS_RVALUE(%rsp), %rcx /* Load rvalue */
- movq %rsp, %r8 /* Load reg_args */
- leaq ffi_closure_FS+8(%rsp), %r9 /* Load argp */
- call PLT(C(ffi_closure_unix64_inner))
-
- /* Deallocate stack frame early; return value is now in redzone. */
- addq $ffi_closure_FS, %rsp
-L(UW10):
- /* cfi_adjust_cfa_offset(-ffi_closure_FS) */
-
- /* The first byte of the return value contains the FFI_TYPE. */
- cmpb $UNIX64_RET_LAST, %al
- movzbl %al, %r10d
- leaq L(load_table)(%rip), %r11
- ja L(la)
- leaq (%r11, %r10, 8), %r10
- leaq ffi_closure_RED_RVALUE(%rsp), %rsi
- jmp *%r10
-
- .balign 8
-L(load_table):
-E(L(load_table), UNIX64_RET_VOID)
- ret
-E(L(load_table), UNIX64_RET_UINT8)
- movzbl (%rsi), %eax
- ret
-E(L(load_table), UNIX64_RET_UINT16)
- movzwl (%rsi), %eax
- ret
-E(L(load_table), UNIX64_RET_UINT32)
- movl (%rsi), %eax
- ret
-E(L(load_table), UNIX64_RET_SINT8)
- movsbl (%rsi), %eax
- ret
-E(L(load_table), UNIX64_RET_SINT16)
- movswl (%rsi), %eax
- ret
-E(L(load_table), UNIX64_RET_SINT32)
- movl (%rsi), %eax
- ret
-E(L(load_table), UNIX64_RET_INT64)
- movq (%rsi), %rax
- ret
-E(L(load_table), UNIX64_RET_XMM32)
- movd (%rsi), %xmm0
- ret
-E(L(load_table), UNIX64_RET_XMM64)
- movq (%rsi), %xmm0
- ret
-E(L(load_table), UNIX64_RET_X87)
- fldt (%rsi)
- ret
-E(L(load_table), UNIX64_RET_X87_2)
- fldt 16(%rsi)
- fldt (%rsi)
- ret
-E(L(load_table), UNIX64_RET_ST_XMM0_RAX)
- movq 8(%rsi), %rax
- jmp L(l3)
-E(L(load_table), UNIX64_RET_ST_RAX_XMM0)
- movq 8(%rsi), %xmm0
- jmp L(l2)
-E(L(load_table), UNIX64_RET_ST_XMM0_XMM1)
- movq 8(%rsi), %xmm1
- jmp L(l3)
-E(L(load_table), UNIX64_RET_ST_RAX_RDX)
- movq 8(%rsi), %rdx
-L(l2):
- movq (%rsi), %rax
- ret
- .balign 8
-L(l3):
- movq (%rsi), %xmm0
- ret
-
-L(la): call PLT(C(abort))
-
-L(UW11):
-ENDF(C(ffi_closure_unix64))
-
- .balign 2
- .globl C(ffi_go_closure_unix64_sse)
- FFI_HIDDEN(C(ffi_go_closure_unix64_sse))
-
-C(ffi_go_closure_unix64_sse):
-L(UW12):
- subq $ffi_closure_FS, %rsp
-L(UW13):
- /* cfi_adjust_cfa_offset(ffi_closure_FS) */
-
- movdqa %xmm0, ffi_closure_OFS_V+0x00(%rsp)
- movdqa %xmm1, ffi_closure_OFS_V+0x10(%rsp)
- movdqa %xmm2, ffi_closure_OFS_V+0x20(%rsp)
- movdqa %xmm3, ffi_closure_OFS_V+0x30(%rsp)
- movdqa %xmm4, ffi_closure_OFS_V+0x40(%rsp)
- movdqa %xmm5, ffi_closure_OFS_V+0x50(%rsp)
- movdqa %xmm6, ffi_closure_OFS_V+0x60(%rsp)
- movdqa %xmm7, ffi_closure_OFS_V+0x70(%rsp)
- jmp L(sse_entry2)
-
-L(UW14):
-ENDF(C(ffi_go_closure_unix64_sse))
-
- .balign 2
- .globl C(ffi_go_closure_unix64)
- FFI_HIDDEN(C(ffi_go_closure_unix64))
-
-C(ffi_go_closure_unix64):
-L(UW15):
- subq $ffi_closure_FS, %rsp
-L(UW16):
- /* cfi_adjust_cfa_offset(ffi_closure_FS) */
-L(sse_entry2):
- movq %rdi, ffi_closure_OFS_G+0x00(%rsp)
- movq %rsi, ffi_closure_OFS_G+0x08(%rsp)
- movq %rdx, ffi_closure_OFS_G+0x10(%rsp)
- movq %rcx, ffi_closure_OFS_G+0x18(%rsp)
- movq %r8, ffi_closure_OFS_G+0x20(%rsp)
- movq %r9, ffi_closure_OFS_G+0x28(%rsp)
-
-#ifdef __ILP32__
- movl 4(%r10), %edi /* Load cif */
- movl 8(%r10), %esi /* Load fun */
- movl %r10d, %edx /* Load closure (user_data) */
-#else
- movq 8(%r10), %rdi /* Load cif */
- movq 16(%r10), %rsi /* Load fun */
- movq %r10, %rdx /* Load closure (user_data) */
-#endif
- jmp L(do_closure)
-
-L(UW17):
-ENDF(C(ffi_go_closure_unix64))
-
-/* Sadly, OSX cctools-as doesn't understand .cfi directives at all. */
-
-#ifdef __APPLE__
-.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support
-EHFrame0:
-#elif defined(HAVE_AS_X86_64_UNWIND_SECTION_TYPE)
-.section .eh_frame,"a",@unwind
-#else
-.section .eh_frame,"a",@progbits
-#endif
-
-#ifdef HAVE_AS_X86_PCREL
-# define PCREL(X) X - .
-#else
-# define PCREL(X) X@rel
-#endif
-
-/* Simplify advancing between labels. Assume DW_CFA_advance_loc1 fits. */
-#define ADV(N, P) .byte 2, L(N)-L(P)
-
- .balign 8
-L(CIE):
- .set L(set0),L(ECIE)-L(SCIE)
- .long L(set0) /* CIE Length */
-L(SCIE):
- .long 0 /* CIE Identifier Tag */
- .byte 1 /* CIE Version */
- .ascii "zR\0" /* CIE Augmentation */
- .byte 1 /* CIE Code Alignment Factor */
- .byte 0x78 /* CIE Data Alignment Factor */
- .byte 0x10 /* CIE RA Column */
- .byte 1 /* Augmentation size */
- .byte 0x1b /* FDE Encoding (pcrel sdata4) */
- .byte 0xc, 7, 8 /* DW_CFA_def_cfa, %rsp offset 8 */
- .byte 0x80+16, 1 /* DW_CFA_offset, %rip offset 1*-8 */
- .balign 8
-L(ECIE):
-
- .set L(set1),L(EFDE1)-L(SFDE1)
- .long L(set1) /* FDE Length */
-L(SFDE1):
- .long L(SFDE1)-L(CIE) /* FDE CIE offset */
- .long PCREL(L(UW0)) /* Initial location */
- .long L(UW4)-L(UW0) /* Address range */
- .byte 0 /* Augmentation size */
- ADV(UW1, UW0)
- .byte 0xc, 6, 32 /* DW_CFA_def_cfa, %rbp 32 */
- .byte 0x80+6, 2 /* DW_CFA_offset, %rbp 2*-8 */
- ADV(UW2, UW1)
- .byte 0xa /* DW_CFA_remember_state */
- .byte 0xc, 7, 8 /* DW_CFA_def_cfa, %rsp 8 */
- .byte 0xc0+6 /* DW_CFA_restore, %rbp */
- ADV(UW3, UW2)
- .byte 0xb /* DW_CFA_restore_state */
- .balign 8
-L(EFDE1):
-
- .set L(set2),L(EFDE2)-L(SFDE2)
- .long L(set2) /* FDE Length */
-L(SFDE2):
- .long L(SFDE2)-L(CIE) /* FDE CIE offset */
- .long PCREL(L(UW5)) /* Initial location */
- .long L(UW7)-L(UW5) /* Address range */
- .byte 0 /* Augmentation size */
- ADV(UW6, UW5)
- .byte 0xe /* DW_CFA_def_cfa_offset */
- .byte ffi_closure_FS + 8, 1 /* uleb128, assuming 128 <= FS < 255 */
- .balign 8
-L(EFDE2):
-
- .set L(set3),L(EFDE3)-L(SFDE3)
- .long L(set3) /* FDE Length */
-L(SFDE3):
- .long L(SFDE3)-L(CIE) /* FDE CIE offset */
- .long PCREL(L(UW8)) /* Initial location */
- .long L(UW11)-L(UW8) /* Address range */
- .byte 0 /* Augmentation size */
- ADV(UW9, UW8)
- .byte 0xe /* DW_CFA_def_cfa_offset */
- .byte ffi_closure_FS + 8, 1 /* uleb128, assuming 128 <= FS < 255 */
- ADV(UW10, UW9)
- .byte 0xe, 8 /* DW_CFA_def_cfa_offset 8 */
-L(EFDE3):
-
- .set L(set4),L(EFDE4)-L(SFDE4)
- .long L(set4) /* FDE Length */
-L(SFDE4):
- .long L(SFDE4)-L(CIE) /* FDE CIE offset */
- .long PCREL(L(UW12)) /* Initial location */
- .long L(UW14)-L(UW12) /* Address range */
- .byte 0 /* Augmentation size */
- ADV(UW13, UW12)
- .byte 0xe /* DW_CFA_def_cfa_offset */
- .byte ffi_closure_FS + 8, 1 /* uleb128, assuming 128 <= FS < 255 */
- .balign 8
-L(EFDE4):
-
- .set L(set5),L(EFDE5)-L(SFDE5)
- .long L(set5) /* FDE Length */
-L(SFDE5):
- .long L(SFDE5)-L(CIE) /* FDE CIE offset */
- .long PCREL(L(UW15)) /* Initial location */
- .long L(UW17)-L(UW15) /* Address range */
- .byte 0 /* Augmentation size */
- ADV(UW16, UW15)
- .byte 0xe /* DW_CFA_def_cfa_offset */
- .byte ffi_closure_FS + 8, 1 /* uleb128, assuming 128 <= FS < 255 */
- .balign 8
-L(EFDE5):
-#ifdef __APPLE__
- .subsections_via_symbols
- .section __LD,__compact_unwind,regular,debug
-
- /* compact unwind for ffi_call_unix64 */
- .quad C(ffi_call_unix64)
- .set L1,L(UW4)-L(UW0)
- .long L1
- .long 0x04000000 /* use dwarf unwind info */
- .quad 0
- .quad 0
-
- /* compact unwind for ffi_closure_unix64_sse */
- .quad C(ffi_closure_unix64_sse)
- .set L2,L(UW7)-L(UW5)
- .long L2
- .long 0x04000000 /* use dwarf unwind info */
- .quad 0
- .quad 0
-
- /* compact unwind for ffi_closure_unix64 */
- .quad C(ffi_closure_unix64)
- .set L3,L(UW11)-L(UW8)
- .long L3
- .long 0x04000000 /* use dwarf unwind info */
- .quad 0
- .quad 0
-
- /* compact unwind for ffi_go_closure_unix64_sse */
- .quad C(ffi_go_closure_unix64_sse)
- .set L4,L(UW14)-L(UW12)
- .long L4
- .long 0x04000000 /* use dwarf unwind info */
- .quad 0
- .quad 0
-
- /* compact unwind for ffi_go_closure_unix64 */
- .quad C(ffi_go_closure_unix64)
- .set L5,L(UW17)-L(UW15)
- .long L5
- .long 0x04000000 /* use dwarf unwind info */
- .quad 0
- .quad 0
-#endif
-
-#endif /* __x86_64__ */
-#if defined __ELF__ && defined __linux__
- .section .note.GNU-stack,"",@progbits
-#endif
-
-
-====================MIT====================
- 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.
-
-
-====================MIT====================
- 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.
-
-
-====================MIT====================
- 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 AUTHOR 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.
-
-
-====================MIT====================
-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.
-
-====================MIT====================
-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. */
-
-
-====================MIT====================
-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. */
+
+ 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.
+ ----------------------------------------------------------------------- */
+
+#ifdef __x86_64__
+#define LIBFFI_ASM
+#include <fficonfig.h>
+#include <ffi.h>
+#include "internal64.h"
+#include "asmnames.h"
+
+ .text
+
+/* This macro allows the safe creation of jump tables without an
+ actual table. The entry points into the table are all 8 bytes.
+ The use of ORG asserts that we're at the correct location. */
+/* ??? The clang assembler doesn't handle .org with symbolic expressions. */
+#if defined(__clang__) || defined(__APPLE__) || (defined (__sun__) && defined(__svr4__))
+# define E(BASE, X) .balign 8
+#else
+# define E(BASE, X) .balign 8; .org BASE + X * 8
+#endif
+
+/* ffi_call_unix64 (void *args, unsigned long bytes, unsigned flags,
+ void *raddr, void (*fnaddr)(void));
+
+ Bit o trickiness here -- ARGS+BYTES is the base of the stack frame
+ for this function. This has been allocated by ffi_call. We also
+ deallocate some of the stack that has been alloca'd. */
+
+ .balign 8
+ .globl C(ffi_call_unix64)
+ FFI_HIDDEN(C(ffi_call_unix64))
+
+C(ffi_call_unix64):
+L(UW0):
+ movq (%rsp), %r10 /* Load return address. */
+ leaq (%rdi, %rsi), %rax /* Find local stack base. */
+ movq %rdx, (%rax) /* Save flags. */
+ movq %rcx, 8(%rax) /* Save raddr. */
+ movq %rbp, 16(%rax) /* Save old frame pointer. */
+ movq %r10, 24(%rax) /* Relocate return address. */
+ movq %rax, %rbp /* Finalize local stack frame. */
+
+ /* New stack frame based off rbp. This is a itty bit of unwind
+ trickery in that the CFA *has* changed. There is no easy way
+ to describe it correctly on entry to the function. Fortunately,
+ it doesn't matter too much since at all points we can correctly
+ unwind back to ffi_call. Note that the location to which we
+ moved the return address is (the new) CFA-8, so from the
+ perspective of the unwind info, it hasn't moved. */
+L(UW1):
+ /* cfi_def_cfa(%rbp, 32) */
+ /* cfi_rel_offset(%rbp, 16) */
+
+ movq %rdi, %r10 /* Save a copy of the register area. */
+ movq %r8, %r11 /* Save a copy of the target fn. */
+ movl %r9d, %eax /* Set number of SSE registers. */
+
+ /* Load up all argument registers. */
+ movq (%r10), %rdi
+ movq 0x08(%r10), %rsi
+ movq 0x10(%r10), %rdx
+ movq 0x18(%r10), %rcx
+ movq 0x20(%r10), %r8
+ movq 0x28(%r10), %r9
+ movl 0xb0(%r10), %eax
+ testl %eax, %eax
+ jnz L(load_sse)
+L(ret_from_load_sse):
+
+ /* Deallocate the reg arg area, except for r10, then load via pop. */
+ leaq 0xb8(%r10), %rsp
+ popq %r10
+
+ /* Call the user function. */
+ call *%r11
+
+ /* Deallocate stack arg area; local stack frame in redzone. */
+ leaq 24(%rbp), %rsp
+
+ movq 0(%rbp), %rcx /* Reload flags. */
+ movq 8(%rbp), %rdi /* Reload raddr. */
+ movq 16(%rbp), %rbp /* Reload old frame pointer. */
+L(UW2):
+ /* cfi_remember_state */
+ /* cfi_def_cfa(%rsp, 8) */
+ /* cfi_restore(%rbp) */
+
+ /* The first byte of the flags contains the FFI_TYPE. */
+ cmpb $UNIX64_RET_LAST, %cl
+ movzbl %cl, %r10d
+ leaq L(store_table)(%rip), %r11
+ ja L(sa)
+ leaq (%r11, %r10, 8), %r10
+
+ /* Prep for the structure cases: scratch area in redzone. */
+ leaq -20(%rsp), %rsi
+ jmp *%r10
+
+ .balign 8
+L(store_table):
+E(L(store_table), UNIX64_RET_VOID)
+ ret
+E(L(store_table), UNIX64_RET_UINT8)
+ movzbl %al, %eax
+ movq %rax, (%rdi)
+ ret
+E(L(store_table), UNIX64_RET_UINT16)
+ movzwl %ax, %eax
+ movq %rax, (%rdi)
+ ret
+E(L(store_table), UNIX64_RET_UINT32)
+ movl %eax, %eax
+ movq %rax, (%rdi)
+ ret
+E(L(store_table), UNIX64_RET_SINT8)
+ movsbq %al, %rax
+ movq %rax, (%rdi)
+ ret
+E(L(store_table), UNIX64_RET_SINT16)
+ movswq %ax, %rax
+ movq %rax, (%rdi)
+ ret
+E(L(store_table), UNIX64_RET_SINT32)
+ cltq
+ movq %rax, (%rdi)
+ ret
+E(L(store_table), UNIX64_RET_INT64)
+ movq %rax, (%rdi)
+ ret
+E(L(store_table), UNIX64_RET_XMM32)
+ movd %xmm0, (%rdi)
+ ret
+E(L(store_table), UNIX64_RET_XMM64)
+ movq %xmm0, (%rdi)
+ ret
+E(L(store_table), UNIX64_RET_X87)
+ fstpt (%rdi)
+ ret
+E(L(store_table), UNIX64_RET_X87_2)
+ fstpt (%rdi)
+ fstpt 16(%rdi)
+ ret
+E(L(store_table), UNIX64_RET_ST_XMM0_RAX)
+ movq %rax, 8(%rsi)
+ jmp L(s3)
+E(L(store_table), UNIX64_RET_ST_RAX_XMM0)
+ movq %xmm0, 8(%rsi)
+ jmp L(s2)
+E(L(store_table), UNIX64_RET_ST_XMM0_XMM1)
+ movq %xmm1, 8(%rsi)
+ jmp L(s3)
+E(L(store_table), UNIX64_RET_ST_RAX_RDX)
+ movq %rdx, 8(%rsi)
+L(s2):
+ movq %rax, (%rsi)
+ shrl $UNIX64_SIZE_SHIFT, %ecx
+ rep movsb
+ ret
+ .balign 8
+L(s3):
+ movq %xmm0, (%rsi)
+ shrl $UNIX64_SIZE_SHIFT, %ecx
+ rep movsb
+ ret
+
+L(sa): call PLT(C(abort))
+
+ /* Many times we can avoid loading any SSE registers at all.
+ It's not worth an indirect jump to load the exact set of
+ SSE registers needed; zero or all is a good compromise. */
+ .balign 2
+L(UW3):
+ /* cfi_restore_state */
+L(load_sse):
+ movdqa 0x30(%r10), %xmm0
+ movdqa 0x40(%r10), %xmm1
+ movdqa 0x50(%r10), %xmm2
+ movdqa 0x60(%r10), %xmm3
+ movdqa 0x70(%r10), %xmm4
+ movdqa 0x80(%r10), %xmm5
+ movdqa 0x90(%r10), %xmm6
+ movdqa 0xa0(%r10), %xmm7
+ jmp L(ret_from_load_sse)
+
+L(UW4):
+ENDF(C(ffi_call_unix64))
+
+/* 6 general registers, 8 vector registers,
+ 32 bytes of rvalue, 8 bytes of alignment. */
+#define ffi_closure_OFS_G 0
+#define ffi_closure_OFS_V (6*8)
+#define ffi_closure_OFS_RVALUE (ffi_closure_OFS_V + 8*16)
+#define ffi_closure_FS (ffi_closure_OFS_RVALUE + 32 + 8)
+
+/* The location of rvalue within the red zone after deallocating the frame. */
+#define ffi_closure_RED_RVALUE (ffi_closure_OFS_RVALUE - ffi_closure_FS)
+
+ .balign 2
+ .globl C(ffi_closure_unix64_sse)
+ FFI_HIDDEN(C(ffi_closure_unix64_sse))
+
+C(ffi_closure_unix64_sse):
+L(UW5):
+ subq $ffi_closure_FS, %rsp
+L(UW6):
+ /* cfi_adjust_cfa_offset(ffi_closure_FS) */
+
+ movdqa %xmm0, ffi_closure_OFS_V+0x00(%rsp)
+ movdqa %xmm1, ffi_closure_OFS_V+0x10(%rsp)
+ movdqa %xmm2, ffi_closure_OFS_V+0x20(%rsp)
+ movdqa %xmm3, ffi_closure_OFS_V+0x30(%rsp)
+ movdqa %xmm4, ffi_closure_OFS_V+0x40(%rsp)
+ movdqa %xmm5, ffi_closure_OFS_V+0x50(%rsp)
+ movdqa %xmm6, ffi_closure_OFS_V+0x60(%rsp)
+ movdqa %xmm7, ffi_closure_OFS_V+0x70(%rsp)
+ jmp L(sse_entry1)
+
+L(UW7):
+ENDF(C(ffi_closure_unix64_sse))
+
+ .balign 2
+ .globl C(ffi_closure_unix64)
+ FFI_HIDDEN(C(ffi_closure_unix64))
+
+C(ffi_closure_unix64):
+L(UW8):
+ subq $ffi_closure_FS, %rsp
+L(UW9):
+ /* cfi_adjust_cfa_offset(ffi_closure_FS) */
+L(sse_entry1):
+ movq %rdi, ffi_closure_OFS_G+0x00(%rsp)
+ movq %rsi, ffi_closure_OFS_G+0x08(%rsp)
+ movq %rdx, ffi_closure_OFS_G+0x10(%rsp)
+ movq %rcx, ffi_closure_OFS_G+0x18(%rsp)
+ movq %r8, ffi_closure_OFS_G+0x20(%rsp)
+ movq %r9, ffi_closure_OFS_G+0x28(%rsp)
+
+#ifdef __ILP32__
+ movl FFI_TRAMPOLINE_SIZE(%r10), %edi /* Load cif */
+ movl FFI_TRAMPOLINE_SIZE+4(%r10), %esi /* Load fun */
+ movl FFI_TRAMPOLINE_SIZE+8(%r10), %edx /* Load user_data */
+#else
+ movq FFI_TRAMPOLINE_SIZE(%r10), %rdi /* Load cif */
+ movq FFI_TRAMPOLINE_SIZE+8(%r10), %rsi /* Load fun */
+ movq FFI_TRAMPOLINE_SIZE+16(%r10), %rdx /* Load user_data */
+#endif
+L(do_closure):
+ leaq ffi_closure_OFS_RVALUE(%rsp), %rcx /* Load rvalue */
+ movq %rsp, %r8 /* Load reg_args */
+ leaq ffi_closure_FS+8(%rsp), %r9 /* Load argp */
+ call PLT(C(ffi_closure_unix64_inner))
+
+ /* Deallocate stack frame early; return value is now in redzone. */
+ addq $ffi_closure_FS, %rsp
+L(UW10):
+ /* cfi_adjust_cfa_offset(-ffi_closure_FS) */
+
+ /* The first byte of the return value contains the FFI_TYPE. */
+ cmpb $UNIX64_RET_LAST, %al
+ movzbl %al, %r10d
+ leaq L(load_table)(%rip), %r11
+ ja L(la)
+ leaq (%r11, %r10, 8), %r10
+ leaq ffi_closure_RED_RVALUE(%rsp), %rsi
+ jmp *%r10
+
+ .balign 8
+L(load_table):
+E(L(load_table), UNIX64_RET_VOID)
+ ret
+E(L(load_table), UNIX64_RET_UINT8)
+ movzbl (%rsi), %eax
+ ret
+E(L(load_table), UNIX64_RET_UINT16)
+ movzwl (%rsi), %eax
+ ret
+E(L(load_table), UNIX64_RET_UINT32)
+ movl (%rsi), %eax
+ ret
+E(L(load_table), UNIX64_RET_SINT8)
+ movsbl (%rsi), %eax
+ ret
+E(L(load_table), UNIX64_RET_SINT16)
+ movswl (%rsi), %eax
+ ret
+E(L(load_table), UNIX64_RET_SINT32)
+ movl (%rsi), %eax
+ ret
+E(L(load_table), UNIX64_RET_INT64)
+ movq (%rsi), %rax
+ ret
+E(L(load_table), UNIX64_RET_XMM32)
+ movd (%rsi), %xmm0
+ ret
+E(L(load_table), UNIX64_RET_XMM64)
+ movq (%rsi), %xmm0
+ ret
+E(L(load_table), UNIX64_RET_X87)
+ fldt (%rsi)
+ ret
+E(L(load_table), UNIX64_RET_X87_2)
+ fldt 16(%rsi)
+ fldt (%rsi)
+ ret
+E(L(load_table), UNIX64_RET_ST_XMM0_RAX)
+ movq 8(%rsi), %rax
+ jmp L(l3)
+E(L(load_table), UNIX64_RET_ST_RAX_XMM0)
+ movq 8(%rsi), %xmm0
+ jmp L(l2)
+E(L(load_table), UNIX64_RET_ST_XMM0_XMM1)
+ movq 8(%rsi), %xmm1
+ jmp L(l3)
+E(L(load_table), UNIX64_RET_ST_RAX_RDX)
+ movq 8(%rsi), %rdx
+L(l2):
+ movq (%rsi), %rax
+ ret
+ .balign 8
+L(l3):
+ movq (%rsi), %xmm0
+ ret
+
+L(la): call PLT(C(abort))
+
+L(UW11):
+ENDF(C(ffi_closure_unix64))
+
+ .balign 2
+ .globl C(ffi_go_closure_unix64_sse)
+ FFI_HIDDEN(C(ffi_go_closure_unix64_sse))
+
+C(ffi_go_closure_unix64_sse):
+L(UW12):
+ subq $ffi_closure_FS, %rsp
+L(UW13):
+ /* cfi_adjust_cfa_offset(ffi_closure_FS) */
+
+ movdqa %xmm0, ffi_closure_OFS_V+0x00(%rsp)
+ movdqa %xmm1, ffi_closure_OFS_V+0x10(%rsp)
+ movdqa %xmm2, ffi_closure_OFS_V+0x20(%rsp)
+ movdqa %xmm3, ffi_closure_OFS_V+0x30(%rsp)
+ movdqa %xmm4, ffi_closure_OFS_V+0x40(%rsp)
+ movdqa %xmm5, ffi_closure_OFS_V+0x50(%rsp)
+ movdqa %xmm6, ffi_closure_OFS_V+0x60(%rsp)
+ movdqa %xmm7, ffi_closure_OFS_V+0x70(%rsp)
+ jmp L(sse_entry2)
+
+L(UW14):
+ENDF(C(ffi_go_closure_unix64_sse))
+
+ .balign 2
+ .globl C(ffi_go_closure_unix64)
+ FFI_HIDDEN(C(ffi_go_closure_unix64))
+
+C(ffi_go_closure_unix64):
+L(UW15):
+ subq $ffi_closure_FS, %rsp
+L(UW16):
+ /* cfi_adjust_cfa_offset(ffi_closure_FS) */
+L(sse_entry2):
+ movq %rdi, ffi_closure_OFS_G+0x00(%rsp)
+ movq %rsi, ffi_closure_OFS_G+0x08(%rsp)
+ movq %rdx, ffi_closure_OFS_G+0x10(%rsp)
+ movq %rcx, ffi_closure_OFS_G+0x18(%rsp)
+ movq %r8, ffi_closure_OFS_G+0x20(%rsp)
+ movq %r9, ffi_closure_OFS_G+0x28(%rsp)
+
+#ifdef __ILP32__
+ movl 4(%r10), %edi /* Load cif */
+ movl 8(%r10), %esi /* Load fun */
+ movl %r10d, %edx /* Load closure (user_data) */
+#else
+ movq 8(%r10), %rdi /* Load cif */
+ movq 16(%r10), %rsi /* Load fun */
+ movq %r10, %rdx /* Load closure (user_data) */
+#endif
+ jmp L(do_closure)
+
+L(UW17):
+ENDF(C(ffi_go_closure_unix64))
+
+/* Sadly, OSX cctools-as doesn't understand .cfi directives at all. */
+
+#ifdef __APPLE__
+.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support
+EHFrame0:
+#elif defined(HAVE_AS_X86_64_UNWIND_SECTION_TYPE)
+.section .eh_frame,"a",@unwind
+#else
+.section .eh_frame,"a",@progbits
+#endif
+
+#ifdef HAVE_AS_X86_PCREL
+# define PCREL(X) X - .
+#else
+# define PCREL(X) X@rel
+#endif
+
+/* Simplify advancing between labels. Assume DW_CFA_advance_loc1 fits. */
+#define ADV(N, P) .byte 2, L(N)-L(P)
+
+ .balign 8
+L(CIE):
+ .set L(set0),L(ECIE)-L(SCIE)
+ .long L(set0) /* CIE Length */
+L(SCIE):
+ .long 0 /* CIE Identifier Tag */
+ .byte 1 /* CIE Version */
+ .ascii "zR\0" /* CIE Augmentation */
+ .byte 1 /* CIE Code Alignment Factor */
+ .byte 0x78 /* CIE Data Alignment Factor */
+ .byte 0x10 /* CIE RA Column */
+ .byte 1 /* Augmentation size */
+ .byte 0x1b /* FDE Encoding (pcrel sdata4) */
+ .byte 0xc, 7, 8 /* DW_CFA_def_cfa, %rsp offset 8 */
+ .byte 0x80+16, 1 /* DW_CFA_offset, %rip offset 1*-8 */
+ .balign 8
+L(ECIE):
+
+ .set L(set1),L(EFDE1)-L(SFDE1)
+ .long L(set1) /* FDE Length */
+L(SFDE1):
+ .long L(SFDE1)-L(CIE) /* FDE CIE offset */
+ .long PCREL(L(UW0)) /* Initial location */
+ .long L(UW4)-L(UW0) /* Address range */
+ .byte 0 /* Augmentation size */
+ ADV(UW1, UW0)
+ .byte 0xc, 6, 32 /* DW_CFA_def_cfa, %rbp 32 */
+ .byte 0x80+6, 2 /* DW_CFA_offset, %rbp 2*-8 */
+ ADV(UW2, UW1)
+ .byte 0xa /* DW_CFA_remember_state */
+ .byte 0xc, 7, 8 /* DW_CFA_def_cfa, %rsp 8 */
+ .byte 0xc0+6 /* DW_CFA_restore, %rbp */
+ ADV(UW3, UW2)
+ .byte 0xb /* DW_CFA_restore_state */
+ .balign 8
+L(EFDE1):
+
+ .set L(set2),L(EFDE2)-L(SFDE2)
+ .long L(set2) /* FDE Length */
+L(SFDE2):
+ .long L(SFDE2)-L(CIE) /* FDE CIE offset */
+ .long PCREL(L(UW5)) /* Initial location */
+ .long L(UW7)-L(UW5) /* Address range */
+ .byte 0 /* Augmentation size */
+ ADV(UW6, UW5)
+ .byte 0xe /* DW_CFA_def_cfa_offset */
+ .byte ffi_closure_FS + 8, 1 /* uleb128, assuming 128 <= FS < 255 */
+ .balign 8
+L(EFDE2):
+
+ .set L(set3),L(EFDE3)-L(SFDE3)
+ .long L(set3) /* FDE Length */
+L(SFDE3):
+ .long L(SFDE3)-L(CIE) /* FDE CIE offset */
+ .long PCREL(L(UW8)) /* Initial location */
+ .long L(UW11)-L(UW8) /* Address range */
+ .byte 0 /* Augmentation size */
+ ADV(UW9, UW8)
+ .byte 0xe /* DW_CFA_def_cfa_offset */
+ .byte ffi_closure_FS + 8, 1 /* uleb128, assuming 128 <= FS < 255 */
+ ADV(UW10, UW9)
+ .byte 0xe, 8 /* DW_CFA_def_cfa_offset 8 */
+L(EFDE3):
+
+ .set L(set4),L(EFDE4)-L(SFDE4)
+ .long L(set4) /* FDE Length */
+L(SFDE4):
+ .long L(SFDE4)-L(CIE) /* FDE CIE offset */
+ .long PCREL(L(UW12)) /* Initial location */
+ .long L(UW14)-L(UW12) /* Address range */
+ .byte 0 /* Augmentation size */
+ ADV(UW13, UW12)
+ .byte 0xe /* DW_CFA_def_cfa_offset */
+ .byte ffi_closure_FS + 8, 1 /* uleb128, assuming 128 <= FS < 255 */
+ .balign 8
+L(EFDE4):
+
+ .set L(set5),L(EFDE5)-L(SFDE5)
+ .long L(set5) /* FDE Length */
+L(SFDE5):
+ .long L(SFDE5)-L(CIE) /* FDE CIE offset */
+ .long PCREL(L(UW15)) /* Initial location */
+ .long L(UW17)-L(UW15) /* Address range */
+ .byte 0 /* Augmentation size */
+ ADV(UW16, UW15)
+ .byte 0xe /* DW_CFA_def_cfa_offset */
+ .byte ffi_closure_FS + 8, 1 /* uleb128, assuming 128 <= FS < 255 */
+ .balign 8
+L(EFDE5):
+#ifdef __APPLE__
+ .subsections_via_symbols
+ .section __LD,__compact_unwind,regular,debug
+
+ /* compact unwind for ffi_call_unix64 */
+ .quad C(ffi_call_unix64)
+ .set L1,L(UW4)-L(UW0)
+ .long L1
+ .long 0x04000000 /* use dwarf unwind info */
+ .quad 0
+ .quad 0
+
+ /* compact unwind for ffi_closure_unix64_sse */
+ .quad C(ffi_closure_unix64_sse)
+ .set L2,L(UW7)-L(UW5)
+ .long L2
+ .long 0x04000000 /* use dwarf unwind info */
+ .quad 0
+ .quad 0
+
+ /* compact unwind for ffi_closure_unix64 */
+ .quad C(ffi_closure_unix64)
+ .set L3,L(UW11)-L(UW8)
+ .long L3
+ .long 0x04000000 /* use dwarf unwind info */
+ .quad 0
+ .quad 0
+
+ /* compact unwind for ffi_go_closure_unix64_sse */
+ .quad C(ffi_go_closure_unix64_sse)
+ .set L4,L(UW14)-L(UW12)
+ .long L4
+ .long 0x04000000 /* use dwarf unwind info */
+ .quad 0
+ .quad 0
+
+ /* compact unwind for ffi_go_closure_unix64 */
+ .quad C(ffi_go_closure_unix64)
+ .set L5,L(UW17)-L(UW15)
+ .long L5
+ .long 0x04000000 /* use dwarf unwind info */
+ .quad 0
+ .quad 0
+#endif
+
+#endif /* __x86_64__ */
+#if defined __ELF__ && defined __linux__
+ .section .note.GNU-stack,"",@progbits
+#endif
+
+
+====================MIT====================
+ 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.
+
+
+====================MIT====================
+ 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.
+
+
+====================MIT====================
+ 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 AUTHOR 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.
+
+
+====================MIT====================
+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.
+
+====================MIT====================
+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. */
+
+
+====================MIT====================
+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. */
diff --git a/contrib/restricted/libffi/testsuite/libffi.bhaible/test-call/ya.make b/contrib/restricted/libffi/testsuite/libffi.bhaible/test-call/ya.make
index 3dc19763b5..e6dbfed4ee 100644
--- a/contrib/restricted/libffi/testsuite/libffi.bhaible/test-call/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.bhaible/test-call/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.bhaible/test-callback/ya.make b/contrib/restricted/libffi/testsuite/libffi.bhaible/test-callback/ya.make
index 24088e045b..72d601ab5b 100644
--- a/contrib/restricted/libffi/testsuite/libffi.bhaible/test-callback/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.bhaible/test-callback/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/align_mixed/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/align_mixed/ya.make
index 74c45f0920..71d7583453 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/align_mixed/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/align_mixed/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/align_stdcall/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/align_stdcall/ya.make
index ed0f3eca15..1d97a0cd0b 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/align_stdcall/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/align_stdcall/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/err_bad_typedef/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/err_bad_typedef/ya.make
index 8a09f8c101..a3e042e54f 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/err_bad_typedef/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/err_bad_typedef/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/float/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/float/ya.make
index 1be560a132..1df0a2f4a2 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/float/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/float/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/float1/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/float1/ya.make
index a6db42d412..ad26ae35ff 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/float1/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/float1/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/float2/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/float2/ya.make
index c4917f9114..ad89de3a7a 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/float2/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/float2/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/float3/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/float3/ya.make
index 93c41228e6..0064211582 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/float3/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/float3/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/float4/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/float4/ya.make
index 6137d89825..a11a21c8be 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/float4/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/float4/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/float_va/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/float_va/ya.make
index 1618f1980f..10d03d19ba 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/float_va/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/float_va/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/many/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/many/ya.make
index ebb3df1cac..ba6c09ca44 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/many/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/many/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/many2/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/many2/ya.make
index cc2b12146c..487fe0854a 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/many2/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/many2/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/many_double/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/many_double/ya.make
index 4e3999cd19..69436210b4 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/many_double/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/many_double/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/many_mixed/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/many_mixed/ya.make
index 9a8de9a104..5454d9a813 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/many_mixed/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/many_mixed/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/negint/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/negint/ya.make
index 4dd694dbe6..c745235357 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/negint/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/negint/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/offsets/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/offsets/ya.make
index 39b6c21587..a5e3a7b918 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/offsets/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/offsets/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/pr1172638/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/pr1172638/ya.make
index d2c6f293ba..a296cd0416 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/pr1172638/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/pr1172638/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/promotion/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/promotion/ya.make
index 1898b27e61..6ea10b0912 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/promotion/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/promotion/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/pyobjc-tc/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/pyobjc-tc/ya.make
index 4b7683dcf0..0f35bf8066 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/pyobjc-tc/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/pyobjc-tc/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/return_dbl/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/return_dbl/ya.make
index 38c42a3738..b660c2d98c 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/return_dbl/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/return_dbl/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/return_dbl1/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/return_dbl1/ya.make
index 4d40a9b24f..ed07c76be8 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/return_dbl1/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/return_dbl1/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/return_dbl2/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/return_dbl2/ya.make
index a81d8aa6df..c3fa0bd497 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/return_dbl2/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/return_dbl2/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/return_fl/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/return_fl/ya.make
index 681367b9ee..69e2118be6 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/return_fl/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/return_fl/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/return_fl1/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/return_fl1/ya.make
index 3ca64943a9..faef42e398 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/return_fl1/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/return_fl1/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/return_fl2/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/return_fl2/ya.make
index 8465718dfe..782ef404f2 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/return_fl2/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/return_fl2/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/return_fl3/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/return_fl3/ya.make
index d37e7ae443..18313a6da7 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/return_fl3/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/return_fl3/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/return_ldl/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/return_ldl/ya.make
index 5d3ad0f768..2aa17147d7 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/return_ldl/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/return_ldl/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/return_ll/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/return_ll/ya.make
index 96492a4be0..5cb0314096 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/return_ll/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/return_ll/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/return_ll1/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/return_ll1/ya.make
index 7555c52ed0..fab5a50575 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/return_ll1/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/return_ll1/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/return_sc/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/return_sc/ya.make
index 18b972c5c9..27c75c2ad5 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/return_sc/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/return_sc/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/return_sl/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/return_sl/ya.make
index b309277a03..e71a6891d0 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/return_sl/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/return_sl/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/return_uc/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/return_uc/ya.make
index a856132757..d06388572c 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/return_uc/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/return_uc/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/return_ul/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/return_ul/ya.make
index cdf4f6c0aa..087735767b 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/return_ul/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/return_ul/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/strlen/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/strlen/ya.make
index 4e7c4103c6..417008c98d 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/strlen/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/strlen/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/strlen2/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/strlen2/ya.make
index 682bd480f7..b5a07eb892 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/strlen2/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/strlen2/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/strlen3/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/strlen3/ya.make
index ca651884a6..24b6202920 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/strlen3/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/strlen3/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/strlen4/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/strlen4/ya.make
index 96afef6d1f..2323bae946 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/strlen4/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/strlen4/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/struct1/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/struct1/ya.make
index c943be3ad3..bde5c54505 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/struct1/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/struct1/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/struct10/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/struct10/ya.make
index 3ba204b36c..b0d290cd6f 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/struct10/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/struct10/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/struct2/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/struct2/ya.make
index d737300a81..89d2830e93 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/struct2/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/struct2/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/struct3/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/struct3/ya.make
index 257279b27c..a66e73de0d 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/struct3/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/struct3/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/struct4/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/struct4/ya.make
index c9beb33e68..4be023dd6c 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/struct4/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/struct4/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/struct5/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/struct5/ya.make
index 4c8ea83a47..ad74a3d56c 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/struct5/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/struct5/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/struct6/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/struct6/ya.make
index 2da172f7b3..fa57f9b947 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/struct6/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/struct6/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/struct7/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/struct7/ya.make
index 00f2683a59..5317e30fc3 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/struct7/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/struct7/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/struct8/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/struct8/ya.make
index fcb536bdda..3636773e8d 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/struct8/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/struct8/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/struct9/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/struct9/ya.make
index f40aeb7f59..ea77dc881e 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/struct9/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/struct9/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/uninitialized/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/uninitialized/ya.make
index 8f58bd5e42..f61b12d035 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/uninitialized/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/uninitialized/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/va_1/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/va_1/ya.make
index e95411f407..6957e760a2 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/va_1/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/va_1/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/va_struct1/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/va_struct1/ya.make
index cc5fde6456..d359d5573b 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/va_struct1/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/va_struct1/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/va_struct2/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/va_struct2/ya.make
index c364efc42f..34d842c536 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/va_struct2/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/va_struct2/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.call/va_struct3/ya.make b/contrib/restricted/libffi/testsuite/libffi.call/va_struct3/ya.make
index 977c5b6621..c2f77a757f 100644
--- a/contrib/restricted/libffi/testsuite/libffi.call/va_struct3/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.call/va_struct3/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/closure_fn0/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/closure_fn0/ya.make
index fe1314b087..30dc7128a6 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/closure_fn0/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/closure_fn0/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/closure_fn1/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/closure_fn1/ya.make
index d503fde0c3..05987baa5c 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/closure_fn1/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/closure_fn1/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/closure_fn2/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/closure_fn2/ya.make
index 22f061b3c3..9fb20abc91 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/closure_fn2/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/closure_fn2/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/closure_fn3/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/closure_fn3/ya.make
index 1fa2fa2792..7eeed24770 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/closure_fn3/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/closure_fn3/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/closure_fn4/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/closure_fn4/ya.make
index 520284e898..3f4fa8079e 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/closure_fn4/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/closure_fn4/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/closure_fn5/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/closure_fn5/ya.make
index da8a335486..331657b705 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/closure_fn5/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/closure_fn5/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/closure_fn6/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/closure_fn6/ya.make
index f2d672c18a..415974ea55 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/closure_fn6/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/closure_fn6/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/closure_loc_fn0/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/closure_loc_fn0/ya.make
index cde424dc6a..2345094723 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/closure_loc_fn0/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/closure_loc_fn0/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/closure_simple/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/closure_simple/ya.make
index 9bf1c361cd..e7edd97c74 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/closure_simple/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/closure_simple/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_12byte/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_12byte/ya.make
index 5e17c2a2c2..67a1d25459 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_12byte/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_12byte/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_16byte/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_16byte/ya.make
index 9b30b3c76f..fbb5a3034a 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_16byte/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_16byte/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_18byte/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_18byte/ya.make
index e2f8bccb40..77fbc79c01 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_18byte/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_18byte/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_19byte/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_19byte/ya.make
index 09b6c78498..33fac8f8b9 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_19byte/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_19byte/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_1_1byte/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_1_1byte/ya.make
index 53c8b4a1b4..efb2dd6dc5 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_1_1byte/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_1_1byte/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_20byte/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_20byte/ya.make
index 5cd5a45813..d7923e1680 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_20byte/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_20byte/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_20byte1/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_20byte1/ya.make
index 7ba1cddd85..1367a12243 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_20byte1/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_20byte1/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_24byte/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_24byte/ya.make
index e687adb306..213e1bae01 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_24byte/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_24byte/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_2byte/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_2byte/ya.make
index 0c648bc812..5498657347 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_2byte/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_2byte/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_3_1byte/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_3_1byte/ya.make
index 5c20435170..20f6378b64 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_3_1byte/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_3_1byte/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_3byte1/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_3byte1/ya.make
index b72b29707a..58c5e0810c 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_3byte1/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_3byte1/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_3byte2/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_3byte2/ya.make
index 53794f8c64..55bd1281af 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_3byte2/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_3byte2/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_3float/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_3float/ya.make
index 39c4362ade..d8fe8ba3ec 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_3float/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_3float/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_4_1byte/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_4_1byte/ya.make
index 3800155a46..e362b7c58e 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_4_1byte/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_4_1byte/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_4byte/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_4byte/ya.make
index 8352f673a1..e301b297d8 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_4byte/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_4byte/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_5_1_byte/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_5_1_byte/ya.make
index d6cae4d569..7079c46472 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_5_1_byte/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_5_1_byte/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_5byte/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_5byte/ya.make
index 40d3819fb3..d61db00fae 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_5byte/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_5byte/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_64byte/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_64byte/ya.make
index 1e8e6c4d7a..7d157845bd 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_64byte/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_64byte/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_6_1_byte/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_6_1_byte/ya.make
index 21817cce01..649bcb8f7f 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_6_1_byte/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_6_1_byte/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_6byte/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_6byte/ya.make
index edd3052295..cfc5422227 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_6byte/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_6byte/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_7_1_byte/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_7_1_byte/ya.make
index 7644bda39f..e463e968db 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_7_1_byte/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_7_1_byte/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_7byte/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_7byte/ya.make
index de96d366e0..24fe20b031 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_7byte/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_7byte/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_8byte/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_8byte/ya.make
index 6ea57fd319..61cf091810 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_8byte/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_8byte/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_9byte1/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_9byte1/ya.make
index 197da5b184..d36eaef0e7 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_9byte1/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_9byte1/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_9byte2/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_9byte2/ya.make
index 6bb658e389..5a3bc0edb9 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_9byte2/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_9byte2/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_double/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_double/ya.make
index bed048c53e..6de4ac5c85 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_double/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_double/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_float/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_float/ya.make
index 5d2243fda2..967b36ddc9 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_float/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_float/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_longdouble/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_longdouble/ya.make
index 7bd02b80f7..844482ac16 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_longdouble/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_longdouble/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_longdouble_split/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_longdouble_split/ya.make
index 7574df5fb7..8c805489e1 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_longdouble_split/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_longdouble_split/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_longdouble_split2/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_longdouble_split2/ya.make
index 6b1154ae50..5e40f1ac5e 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_longdouble_split2/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_longdouble_split2/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_pointer/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_pointer/ya.make
index 86be71241f..79562122b0 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_pointer/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_pointer/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_sint16/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_sint16/ya.make
index 296afd3c2f..964d524014 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_sint16/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_sint16/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_sint32/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_sint32/ya.make
index a24c65fa59..b7379245f6 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_sint32/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_sint32/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_sint64/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_sint64/ya.make
index 5ff5a758c1..35248e167f 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_sint64/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_sint64/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_uint16/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_uint16/ya.make
index b2521a02b0..e0da652591 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_uint16/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_uint16/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_uint32/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_uint32/ya.make
index ea03c4b947..0087a7b596 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_uint32/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_uint32/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_uint64/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_uint64/ya.make
index eebcbf8ab6..59b66b1e4b 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_uint64/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_align_uint64/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_dbls_struct/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_dbls_struct/ya.make
index 4561bc9c24..2aa4e316fe 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_dbls_struct/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_dbls_struct/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_double/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_double/ya.make
index f171d25e65..d150f7d354 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_double/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_double/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_double_va/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_double_va/ya.make
index 4c6ed4022a..a93d647f2b 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_double_va/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_double_va/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_float/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_float/ya.make
index e35094847a..e1a176dc73 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_float/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_float/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_longdouble/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_longdouble/ya.make
index afee791464..e7bb2a3cb6 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_longdouble/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_longdouble/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_longdouble_va/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_longdouble_va/ya.make
index cc086abd12..37f5b08c07 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_longdouble_va/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_longdouble_va/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_many_mixed_args/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_many_mixed_args/ya.make
index b0d7471739..25965bfc44 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_many_mixed_args/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_many_mixed_args/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_many_mixed_float_double/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_many_mixed_float_double/ya.make
index f0bb23d541..00425d4d8b 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_many_mixed_float_double/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_many_mixed_float_double/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_multi_schar/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_multi_schar/ya.make
index b83d751aa4..d96eace4d5 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_multi_schar/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_multi_schar/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_multi_sshort/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_multi_sshort/ya.make
index 65a3c20623..9cfeb70413 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_multi_sshort/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_multi_sshort/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_multi_sshortchar/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_multi_sshortchar/ya.make
index 1d40af2642..5e76efc9c5 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_multi_sshortchar/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_multi_sshortchar/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_multi_uchar/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_multi_uchar/ya.make
index 40a9aaef16..ef08173604 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_multi_uchar/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_multi_uchar/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_multi_ushort/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_multi_ushort/ya.make
index 68945961d1..31dbab5cf1 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_multi_ushort/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_multi_ushort/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_multi_ushortchar/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_multi_ushortchar/ya.make
index 9dd1b6c4d8..633d341d4c 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_multi_ushortchar/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_multi_ushortchar/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_pointer/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_pointer/ya.make
index c11705ece2..4cbd0599fe 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_pointer/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_pointer/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_pointer_stack/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_pointer_stack/ya.make
index 714e8f042d..20524524eb 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_pointer_stack/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_pointer_stack/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_schar/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_schar/ya.make
index 823ef393ab..647dbe1e33 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_schar/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_schar/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_sint/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_sint/ya.make
index 8d9391b3f9..d73d2b4bef 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_sint/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_sint/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_sshort/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_sshort/ya.make
index 1cdb6d53e8..dd0be63016 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_sshort/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_sshort/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_struct_va1/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_struct_va1/ya.make
index 4863eeaa3f..909b210dc0 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_struct_va1/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_struct_va1/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_uchar/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_uchar/ya.make
index 76aa96beef..edc1b7dee3 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_uchar/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_uchar/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_uchar_va/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_uchar_va/ya.make
index 94b354793e..2d963a350d 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_uchar_va/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_uchar_va/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_uint/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_uint/ya.make
index 104e831d2f..e4344b6e3d 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_uint/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_uint/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_uint_va/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_uint_va/ya.make
index 59b7f1ccad..87fb8f7030 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_uint_va/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_uint_va/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_ulong_va/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_ulong_va/ya.make
index 52cf84a067..5169351460 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_ulong_va/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_ulong_va/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_ulonglong/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_ulonglong/ya.make
index 6c92d2b405..9b2dc41c8e 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_ulonglong/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_ulonglong/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_ushort/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_ushort/ya.make
index 5621c24cfa..cd744ba6f4 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_ushort/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_ushort/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/cls_ushort_va/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/cls_ushort_va/ya.make
index 56c1d281c7..798c5ed5c9 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/cls_ushort_va/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/cls_ushort_va/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/err_bad_abi/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/err_bad_abi/ya.make
index 3712029dc2..67284d9c78 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/err_bad_abi/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/err_bad_abi/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/huge_struct/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/huge_struct/ya.make
index 862553c95a..7d2e07b233 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/huge_struct/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/huge_struct/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct/ya.make
index 27c782acbc..6e5232236a 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct1/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct1/ya.make
index 56050a1a5b..89f922394c 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct1/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct1/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct10/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct10/ya.make
index ee673bf21d..be040d0dec 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct10/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct10/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct11/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct11/ya.make
index 22a2dd106e..ad07ba5b80 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct11/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct11/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct2/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct2/ya.make
index f36338d2c7..937c161594 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct2/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct2/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct3/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct3/ya.make
index a0e9311099..968baf49ec 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct3/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct3/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct4/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct4/ya.make
index eea4d19278..57f13f8dda 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct4/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct4/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct5/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct5/ya.make
index 829f0f134c..37bfbda7e6 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct5/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct5/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct6/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct6/ya.make
index a5bf31d984..10fa25f293 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct6/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct6/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct7/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct7/ya.make
index 14be037764..9c1da60995 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct7/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct7/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct8/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct8/ya.make
index a6e33205fc..068551c748 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct8/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct8/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct9/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct9/ya.make
index 3c0acb697b..f49bada8fa 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct9/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/nested_struct9/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/problem1/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/problem1/ya.make
index bb94726f7c..284213056b 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/problem1/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/problem1/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/stret_large/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/stret_large/ya.make
index 2f33360978..7fba7a537a 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/stret_large/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/stret_large/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/stret_large2/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/stret_large2/ya.make
index 7f7378daeb..5320e5e8f9 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/stret_large2/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/stret_large2/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/stret_medium/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/stret_medium/ya.make
index 5921b0b278..fc8b550f06 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/stret_medium/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/stret_medium/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/stret_medium2/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/stret_medium2/ya.make
index 45c3f10a8a..bc1bb11694 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/stret_medium2/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/stret_medium2/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.closures/testclosure/ya.make b/contrib/restricted/libffi/testsuite/libffi.closures/testclosure/ya.make
index 326e4786b6..4bfb5ef07d 100644
--- a/contrib/restricted/libffi/testsuite/libffi.closures/testclosure/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.closures/testclosure/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.complex/cls_align_complex_double/ya.make b/contrib/restricted/libffi/testsuite/libffi.complex/cls_align_complex_double/ya.make
index 0ed92034ea..d83d272ce4 100644
--- a/contrib/restricted/libffi/testsuite/libffi.complex/cls_align_complex_double/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.complex/cls_align_complex_double/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.complex/cls_align_complex_float/ya.make b/contrib/restricted/libffi/testsuite/libffi.complex/cls_align_complex_float/ya.make
index eb0c47c11f..57634effef 100644
--- a/contrib/restricted/libffi/testsuite/libffi.complex/cls_align_complex_float/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.complex/cls_align_complex_float/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.complex/cls_align_complex_longdouble/ya.make b/contrib/restricted/libffi/testsuite/libffi.complex/cls_align_complex_longdouble/ya.make
index cfec827404..455cfb8ac9 100644
--- a/contrib/restricted/libffi/testsuite/libffi.complex/cls_align_complex_longdouble/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.complex/cls_align_complex_longdouble/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_double/ya.make b/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_double/ya.make
index 4b9bf4943b..2e37bfbd4b 100644
--- a/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_double/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_double/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_float/ya.make b/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_float/ya.make
index 58fc6119fc..a837883fba 100644
--- a/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_float/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_float/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_longdouble/ya.make b/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_longdouble/ya.make
index 79eaa54499..84c1f3c271 100644
--- a/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_longdouble/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_longdouble/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_struct_double/ya.make b/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_struct_double/ya.make
index e408247188..67041b3b3d 100644
--- a/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_struct_double/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_struct_double/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_struct_float/ya.make b/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_struct_float/ya.make
index 34f0139f0d..a73819b826 100644
--- a/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_struct_float/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_struct_float/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_struct_longdouble/ya.make b/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_struct_longdouble/ya.make
index 19d12fe00b..7e223a7b7e 100644
--- a/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_struct_longdouble/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_struct_longdouble/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_va_double/ya.make b/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_va_double/ya.make
index 94d1e8ab19..8f437dc41e 100644
--- a/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_va_double/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_va_double/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_va_float/ya.make b/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_va_float/ya.make
index 68277fcb21..b936ee74d3 100644
--- a/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_va_float/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_va_float/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_va_longdouble/ya.make b/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_va_longdouble/ya.make
index 1a933c4678..4225df798e 100644
--- a/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_va_longdouble/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.complex/cls_complex_va_longdouble/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.complex/complex_double/ya.make b/contrib/restricted/libffi/testsuite/libffi.complex/complex_double/ya.make
index 8acebed611..11976473c0 100644
--- a/contrib/restricted/libffi/testsuite/libffi.complex/complex_double/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.complex/complex_double/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.complex/complex_float/ya.make b/contrib/restricted/libffi/testsuite/libffi.complex/complex_float/ya.make
index aa6c3dd182..02103a290e 100644
--- a/contrib/restricted/libffi/testsuite/libffi.complex/complex_float/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.complex/complex_float/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.complex/complex_int/ya.make b/contrib/restricted/libffi/testsuite/libffi.complex/complex_int/ya.make
index c4fab659b0..94f7e6ae6a 100644
--- a/contrib/restricted/libffi/testsuite/libffi.complex/complex_int/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.complex/complex_int/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.complex/complex_longdouble/ya.make b/contrib/restricted/libffi/testsuite/libffi.complex/complex_longdouble/ya.make
index 5c80c0bbd5..c68e2c5613 100644
--- a/contrib/restricted/libffi/testsuite/libffi.complex/complex_longdouble/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.complex/complex_longdouble/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.complex/many_complex_double/ya.make b/contrib/restricted/libffi/testsuite/libffi.complex/many_complex_double/ya.make
index 1f8d40c049..2bcdfea7f1 100644
--- a/contrib/restricted/libffi/testsuite/libffi.complex/many_complex_double/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.complex/many_complex_double/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.complex/many_complex_float/ya.make b/contrib/restricted/libffi/testsuite/libffi.complex/many_complex_float/ya.make
index 32e367c8dd..82f2a93933 100644
--- a/contrib/restricted/libffi/testsuite/libffi.complex/many_complex_float/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.complex/many_complex_float/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.complex/many_complex_longdouble/ya.make b/contrib/restricted/libffi/testsuite/libffi.complex/many_complex_longdouble/ya.make
index 77abfa3d98..68bf0b2407 100644
--- a/contrib/restricted/libffi/testsuite/libffi.complex/many_complex_longdouble/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.complex/many_complex_longdouble/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.complex/return_complex1_double/ya.make b/contrib/restricted/libffi/testsuite/libffi.complex/return_complex1_double/ya.make
index d94fdadfd1..f3666626a6 100644
--- a/contrib/restricted/libffi/testsuite/libffi.complex/return_complex1_double/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.complex/return_complex1_double/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.complex/return_complex1_float/ya.make b/contrib/restricted/libffi/testsuite/libffi.complex/return_complex1_float/ya.make
index afbaf48da9..2f9ebac337 100644
--- a/contrib/restricted/libffi/testsuite/libffi.complex/return_complex1_float/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.complex/return_complex1_float/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.complex/return_complex1_longdouble/ya.make b/contrib/restricted/libffi/testsuite/libffi.complex/return_complex1_longdouble/ya.make
index 8f28e9f84e..e8ea56065b 100644
--- a/contrib/restricted/libffi/testsuite/libffi.complex/return_complex1_longdouble/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.complex/return_complex1_longdouble/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.complex/return_complex2_double/ya.make b/contrib/restricted/libffi/testsuite/libffi.complex/return_complex2_double/ya.make
index 0dc0c96499..08804ca850 100644
--- a/contrib/restricted/libffi/testsuite/libffi.complex/return_complex2_double/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.complex/return_complex2_double/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.complex/return_complex2_float/ya.make b/contrib/restricted/libffi/testsuite/libffi.complex/return_complex2_float/ya.make
index e5b09e2164..3fa5a7ebb1 100644
--- a/contrib/restricted/libffi/testsuite/libffi.complex/return_complex2_float/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.complex/return_complex2_float/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.complex/return_complex2_longdouble/ya.make b/contrib/restricted/libffi/testsuite/libffi.complex/return_complex2_longdouble/ya.make
index 57b61315ba..7104e84373 100644
--- a/contrib/restricted/libffi/testsuite/libffi.complex/return_complex2_longdouble/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.complex/return_complex2_longdouble/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.complex/return_complex_double/ya.make b/contrib/restricted/libffi/testsuite/libffi.complex/return_complex_double/ya.make
index 6a9235199e..19ccb8899b 100644
--- a/contrib/restricted/libffi/testsuite/libffi.complex/return_complex_double/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.complex/return_complex_double/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.complex/return_complex_float/ya.make b/contrib/restricted/libffi/testsuite/libffi.complex/return_complex_float/ya.make
index c9a9d769cf..cbe2235218 100644
--- a/contrib/restricted/libffi/testsuite/libffi.complex/return_complex_float/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.complex/return_complex_float/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.complex/return_complex_longdouble/ya.make b/contrib/restricted/libffi/testsuite/libffi.complex/return_complex_longdouble/ya.make
index 7be17beafc..a689752038 100644
--- a/contrib/restricted/libffi/testsuite/libffi.complex/return_complex_longdouble/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.complex/return_complex_longdouble/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.go/aa-direct/ya.make b/contrib/restricted/libffi/testsuite/libffi.go/aa-direct/ya.make
index c2a7168715..a065cc77d9 100644
--- a/contrib/restricted/libffi/testsuite/libffi.go/aa-direct/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.go/aa-direct/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/libffi.go/closure1/ya.make b/contrib/restricted/libffi/testsuite/libffi.go/closure1/ya.make
index 20732b4a37..d758d0bd64 100644
--- a/contrib/restricted/libffi/testsuite/libffi.go/closure1/ya.make
+++ b/contrib/restricted/libffi/testsuite/libffi.go/closure1/ya.make
@@ -2,15 +2,15 @@
PROGRAM()
-WITHOUT_LICENSE_TEXTS()
-
-OWNER(
- borman
- g:cpp-contrib
-)
-
-LICENSE(GPL-2.0-only)
-
+WITHOUT_LICENSE_TEXTS()
+
+OWNER(
+ borman
+ g:cpp-contrib
+)
+
+LICENSE(GPL-2.0-only)
+
PEERDIR(
contrib/restricted/libffi
)
diff --git a/contrib/restricted/libffi/testsuite/ya.make b/contrib/restricted/libffi/testsuite/ya.make
index 9c4b54d43b..7f589109a0 100644
--- a/contrib/restricted/libffi/testsuite/ya.make
+++ b/contrib/restricted/libffi/testsuite/ya.make
@@ -6,7 +6,7 @@ RECURSE(
libffi.closures
)
-IF (NOT OS_IOS)
+IF (NOT OS_IOS)
RECURSE(
libffi.go
)
diff --git a/contrib/restricted/libffi/ya.make b/contrib/restricted/libffi/ya.make
index 7b0a99f634..f39d7b6fe3 100644
--- a/contrib/restricted/libffi/ya.make
+++ b/contrib/restricted/libffi/ya.make
@@ -2,22 +2,22 @@
LIBRARY()
-OWNER(
- borman
- g:cpp-contrib
-)
+OWNER(
+ borman
+ g:cpp-contrib
+)
VERSION(3.3)
ORIGINAL_SOURCE(https://sourceware.org/pub/libffi/libffi-3.3.tar.gz)
-LICENSE(
- CC-PDDC AND
- MIT
-)
+LICENSE(
+ CC-PDDC AND
+ MIT
+)
+
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
ADDINCL(
contrib/restricted/libffi
contrib/restricted/libffi/include
diff --git a/contrib/restricted/thrift/.yandex_meta/devtools.copyrights.report b/contrib/restricted/thrift/.yandex_meta/devtools.copyrights.report
index a27384171a..b2b2422ee3 100644
--- a/contrib/restricted/thrift/.yandex_meta/devtools.copyrights.report
+++ b/contrib/restricted/thrift/.yandex_meta/devtools.copyrights.report
@@ -1,87 +1,87 @@
-# File format ($ symbol means the beginning of a line):
-#
-# $ # this message
-# $ # =======================
-# $ # comments (all commentaries should starts with some number of spaces and # symbol)
-# ${action} {license id} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
-# ${all_file_action} filename
-# $ # user commentaries (many lines)
-# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
-# ${action} {license spdx} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/3/ya.make
-# ${all_file_action} filename
-# $ # user commentaries
-# $ generated description
-# $ ...
-#
-# You can modify action, all_file_action and add commentaries
-# Available actions:
-# keep - keep license in contrib and use in credits
-# skip - skip license
-# remove - remove all files with this license
-# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
-#
-# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
-# We suppose that that files can contain some license info
-# Available all file actions:
-# FILE_IGNORE - ignore file (do nothing)
-# FILE_INCLUDE - include all file data into licenses text file
-# =======================
-
-KEEP COPYRIGHT_SERVICE_LABEL 368d549891fea2b4fff16d879818a915
-BELONGS compiler/ya.make
- License text:
- Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- compiler/thrift/thrifty.cc [5:5]
- compiler/thrift/thrifty.hh [5:5]
-
-KEEP COPYRIGHT_SERVICE_LABEL 3e927acd55bef09087f9bb2b2b66334b
-BELONGS ya.make
- License text:
- * Copyright 2007 by Nathan C. Myers <ncm@cantrip.org>; some rights reserved.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- thrift/windows/SocketPair.cpp [2:2]
-
-KEEP COPYRIGHT_SERVICE_LABEL 46d787a126d03ce8e9cb0b31bb56ef9a
-BELONGS compiler/ya.make
- License text:
- * Copyright (c) 2008- Patrick Collison <patrick@collison.ie>
- * Copyright (c) 2006- Facebook
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- compiler/thrift/generate/t_cl_generator.cc [2:3]
-
-KEEP COPYRIGHT_SERVICE_LABEL 841a40d84dc2436787d5e4689b424aa7
-BELONGS compiler/ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- compiler/thrift/generate/t_html_generator.h [5:7]
-
-KEEP COPYRIGHT_SERVICE_LABEL 97a8e68d757208fc4276d6800877a14f
-BELONGS compiler/ya.make
- License text:
- * Copyright (c) 2008- Patrick Collison <patrick@collison.ie>
- * Copyright (c) 2006- Facebook
- Scancode info:
- Original SPDX id: COPYRIGHT_SERVICE_LABEL
- Score : 100.00
- Match type : COPYRIGHT
- Files with this license:
- compiler/thrift/generate/t_cl_generator.cc [2:3]
+# File format ($ symbol means the beginning of a line):
+#
+# $ # this message
+# $ # =======================
+# $ # comments (all commentaries should starts with some number of spaces and # symbol)
+# ${action} {license id} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
+# ${all_file_action} filename
+# $ # user commentaries (many lines)
+# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
+# ${action} {license spdx} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/3/ya.make
+# ${all_file_action} filename
+# $ # user commentaries
+# $ generated description
+# $ ...
+#
+# You can modify action, all_file_action and add commentaries
+# Available actions:
+# keep - keep license in contrib and use in credits
+# skip - skip license
+# remove - remove all files with this license
+# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
+#
+# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
+# We suppose that that files can contain some license info
+# Available all file actions:
+# FILE_IGNORE - ignore file (do nothing)
+# FILE_INCLUDE - include all file data into licenses text file
+# =======================
+
+KEEP COPYRIGHT_SERVICE_LABEL 368d549891fea2b4fff16d879818a915
+BELONGS compiler/ya.make
+ License text:
+ Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ compiler/thrift/thrifty.cc [5:5]
+ compiler/thrift/thrifty.hh [5:5]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3e927acd55bef09087f9bb2b2b66334b
+BELONGS ya.make
+ License text:
+ * Copyright 2007 by Nathan C. Myers <ncm@cantrip.org>; some rights reserved.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ thrift/windows/SocketPair.cpp [2:2]
+
+KEEP COPYRIGHT_SERVICE_LABEL 46d787a126d03ce8e9cb0b31bb56ef9a
+BELONGS compiler/ya.make
+ License text:
+ * Copyright (c) 2008- Patrick Collison <patrick@collison.ie>
+ * Copyright (c) 2006- Facebook
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ compiler/thrift/generate/t_cl_generator.cc [2:3]
+
+KEEP COPYRIGHT_SERVICE_LABEL 841a40d84dc2436787d5e4689b424aa7
+BELONGS compiler/ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ compiler/thrift/generate/t_html_generator.h [5:7]
+
+KEEP COPYRIGHT_SERVICE_LABEL 97a8e68d757208fc4276d6800877a14f
+BELONGS compiler/ya.make
+ License text:
+ * Copyright (c) 2008- Patrick Collison <patrick@collison.ie>
+ * Copyright (c) 2006- Facebook
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ compiler/thrift/generate/t_cl_generator.cc [2:3]
diff --git a/contrib/restricted/thrift/.yandex_meta/devtools.licenses.report b/contrib/restricted/thrift/.yandex_meta/devtools.licenses.report
index 506e323ccf..265b185e36 100644
--- a/contrib/restricted/thrift/.yandex_meta/devtools.licenses.report
+++ b/contrib/restricted/thrift/.yandex_meta/devtools.licenses.report
@@ -1,328 +1,328 @@
-# File format ($ symbol means the beginning of a line):
-#
-# $ # this message
-# $ # =======================
-# $ # comments (all commentaries should starts with some number of spaces and # symbol)
-# ${action} {license id} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
-# ${all_file_action} filename
-# $ # user commentaries (many lines)
-# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
-# ${action} {license spdx} {license text hash}
-# $BELONGS ./ya/make/file/relative/path/3/ya.make
-# ${all_file_action} filename
-# $ # user commentaries
-# $ generated description
-# $ ...
-#
-# You can modify action, all_file_action and add commentaries
-# Available actions:
-# keep - keep license in contrib and use in credits
-# skip - skip license
-# remove - remove all files with this license
-# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
-#
-# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
-# We suppose that that files can contain some license info
-# Available all file actions:
-# FILE_IGNORE - ignore file (do nothing)
-# FILE_INCLUDE - include all file data into licenses text file
-# =======================
-
-KEEP Apache-2.0 353b7f53c15a69ee750c01ae193782e1
-BELONGS ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
- thrift/transport/TPipe.cpp [2:17]
- thrift/windows/OverlappedSubmissionThread.cpp [2:17]
-
-KEEP Apache-2.0 8583e8a40394a933bc5fbe9a68f522d9
-BELONGS compiler/ya.make ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
- compiler/thrift/common.cc [2:17]
- compiler/thrift/common.h [2:17]
- compiler/thrift/generate/t_as3_generator.cc [2:17]
- compiler/thrift/generate/t_c_glib_generator.cc [2:17]
- compiler/thrift/generate/t_cl_generator.cc [5:20]
- compiler/thrift/generate/t_cocoa_generator.cc [2:17]
- compiler/thrift/generate/t_cpp_generator.cc [2:17]
- compiler/thrift/generate/t_csharp_generator.cc [2:17]
- compiler/thrift/generate/t_d_generator.cc [2:17]
- compiler/thrift/generate/t_dart_generator.cc [2:17]
- compiler/thrift/generate/t_delphi_generator.cc [2:17]
- compiler/thrift/generate/t_erl_generator.cc [2:17]
- compiler/thrift/generate/t_generator.cc [2:17]
- compiler/thrift/generate/t_generator.h [2:17]
- compiler/thrift/generate/t_generator_registry.h [2:17]
- compiler/thrift/generate/t_go_generator.cc [2:17]
- compiler/thrift/generate/t_gv_generator.cc [2:17]
- compiler/thrift/generate/t_haxe_generator.cc [2:17]
- compiler/thrift/generate/t_hs_generator.cc [2:17]
- compiler/thrift/generate/t_html_generator.cc [2:17]
- compiler/thrift/generate/t_java_generator.cc [2:17]
- compiler/thrift/generate/t_javame_generator.cc [2:17]
- compiler/thrift/generate/t_js_generator.cc [2:17]
- compiler/thrift/generate/t_json_generator.cc [2:17]
- compiler/thrift/generate/t_lua_generator.cc [2:17]
- compiler/thrift/generate/t_netcore_generator.cc [2:17]
- compiler/thrift/generate/t_ocaml_generator.cc [2:17]
- compiler/thrift/generate/t_oop_generator.h [2:17]
- compiler/thrift/generate/t_perl_generator.cc [2:17]
- compiler/thrift/generate/t_php_generator.cc [2:17]
- compiler/thrift/generate/t_py_generator.cc [2:17]
- compiler/thrift/generate/t_rb_generator.cc [2:17]
- compiler/thrift/generate/t_rs_generator.cc [2:17]
- compiler/thrift/generate/t_st_generator.cc [2:17]
- compiler/thrift/generate/t_swift_generator.cc [2:17]
- compiler/thrift/generate/t_xml_generator.cc [2:17]
- compiler/thrift/generate/t_xsd_generator.cc [2:17]
- compiler/thrift/globals.h [2:17]
- compiler/thrift/logging.cc [2:17]
- compiler/thrift/logging.h [2:17]
- compiler/thrift/main.cc [2:17]
- compiler/thrift/main.h [2:17]
- compiler/thrift/parse/parse.cc [2:17]
- compiler/thrift/parse/t_base_type.h [2:17]
- compiler/thrift/parse/t_const.h [2:17]
- compiler/thrift/parse/t_const_value.h [2:17]
- compiler/thrift/parse/t_container.h [2:17]
- compiler/thrift/parse/t_doc.h [2:17]
- compiler/thrift/parse/t_enum.h [2:17]
- compiler/thrift/parse/t_enum_value.h [2:17]
- compiler/thrift/parse/t_field.h [2:17]
- compiler/thrift/parse/t_function.h [2:17]
- compiler/thrift/parse/t_list.h [2:17]
- compiler/thrift/parse/t_map.h [2:17]
- compiler/thrift/parse/t_program.h [2:17]
- compiler/thrift/parse/t_scope.h [2:17]
- compiler/thrift/parse/t_service.h [2:17]
- compiler/thrift/parse/t_set.h [2:17]
- compiler/thrift/parse/t_struct.h [2:17]
- compiler/thrift/parse/t_type.h [2:17]
- compiler/thrift/parse/t_typedef.cc [2:17]
- compiler/thrift/parse/t_typedef.h [2:17]
- compiler/thrift/platform.h [2:17]
- compiler/thrift/plugin/plugin.cc [2:17]
- compiler/thrift/plugin/plugin.h [2:17]
- compiler/thrift/plugin/plugin.thrift [2:17]
- compiler/thrift/plugin/plugin_output.cc [2:17]
- compiler/thrift/plugin/plugin_output.h [2:17]
- compiler/thrift/plugin/type_util.h [2:17]
- compiler/thrift/thriftl.cc [1105:1120]
- compiler/thrift/thriftl.ll [2:17]
- compiler/thrift/thrifty.cc [68:83]
- compiler/thrift/thrifty.yy [6:21]
- compiler/thrift/version.h [2:17]
- compiler/thrift/version.h.in [2:17]
- compiler/thrift/windows/config.h [2:17]
- thrift/TApplicationException.cpp [2:17]
- thrift/TApplicationException.h [2:17]
- thrift/TBase.h [2:17]
- thrift/TDispatchProcessor.h [2:17]
- thrift/TLogging.h [2:17]
- thrift/TOutput.cpp [2:17]
- thrift/TOutput.h [2:17]
- thrift/TProcessor.h [2:17]
- thrift/TToString.h [2:17]
- thrift/Thrift.h [2:17]
- thrift/VirtualProfiling.cpp [2:17]
- thrift/async/TAsyncBufferProcessor.h [2:17]
- thrift/async/TAsyncChannel.cpp [2:17]
- thrift/async/TAsyncChannel.h [2:17]
- thrift/async/TAsyncDispatchProcessor.h [2:17]
- thrift/async/TAsyncProcessor.h [2:17]
- thrift/async/TAsyncProtocolProcessor.cpp [2:17]
- thrift/async/TAsyncProtocolProcessor.h [2:17]
- thrift/async/TConcurrentClientSyncInfo.cpp [2:17]
- thrift/async/TConcurrentClientSyncInfo.h [2:17]
- thrift/async/TEvhttpClientChannel.cpp [2:17]
- thrift/async/TEvhttpClientChannel.h [2:17]
- thrift/async/TEvhttpServer.cpp [2:17]
- thrift/async/TEvhttpServer.h [2:17]
- thrift/concurrency/Exception.h [2:17]
- thrift/concurrency/FunctionRunner.h [2:17]
- thrift/concurrency/Monitor.h [2:17]
- thrift/concurrency/Mutex.h [2:17]
- thrift/concurrency/PlatformThreadFactory.h [2:17]
- thrift/concurrency/StdMonitor.cpp [2:17]
- thrift/concurrency/StdMutex.cpp [2:17]
- thrift/concurrency/StdThreadFactory.cpp [2:17]
- thrift/concurrency/StdThreadFactory.h [2:17]
- thrift/concurrency/Thread.h [2:17]
- thrift/concurrency/ThreadManager.cpp [2:17]
- thrift/concurrency/ThreadManager.h [2:17]
- thrift/concurrency/TimerManager.cpp [2:17]
- thrift/concurrency/TimerManager.h [2:17]
- thrift/concurrency/Util.cpp [2:17]
- thrift/concurrency/Util.h [2:17]
- thrift/processor/PeekProcessor.cpp [2:17]
- thrift/processor/PeekProcessor.h [2:17]
- thrift/processor/StatsProcessor.h [2:17]
- thrift/processor/TMultiplexedProcessor.h [2:17]
- thrift/protocol/TBase64Utils.cpp [2:17]
- thrift/protocol/TBase64Utils.h [2:17]
- thrift/protocol/TBinaryProtocol.h [2:17]
- thrift/protocol/TBinaryProtocol.tcc [2:17]
- thrift/protocol/TCompactProtocol.h [2:17]
- thrift/protocol/TCompactProtocol.tcc [2:17]
- thrift/protocol/TDebugProtocol.cpp [2:17]
- thrift/protocol/TDebugProtocol.h [2:17]
- thrift/protocol/THeaderProtocol.cpp [2:17]
- thrift/protocol/THeaderProtocol.h [2:17]
- thrift/protocol/TJSONProtocol.cpp [2:17]
- thrift/protocol/TJSONProtocol.h [2:17]
- thrift/protocol/TMultiplexedProtocol.cpp [2:17]
- thrift/protocol/TMultiplexedProtocol.h [2:17]
- thrift/protocol/TProtocol.cpp [2:17]
- thrift/protocol/TProtocol.h [2:17]
- thrift/protocol/TProtocolDecorator.h [2:17]
- thrift/protocol/TProtocolException.h [2:17]
- thrift/protocol/TProtocolTap.h [2:17]
- thrift/protocol/TProtocolTypes.h [2:17]
- thrift/protocol/TVirtualProtocol.h [2:17]
- thrift/qt/TQIODeviceTransport.cpp [2:17]
- thrift/qt/TQIODeviceTransport.h [2:17]
- thrift/qt/TQTcpServer.cpp [2:17]
- thrift/qt/TQTcpServer.h [2:17]
- thrift/server/TConnectedClient.cpp [2:17]
- thrift/server/TConnectedClient.h [2:17]
- thrift/server/TNonblockingServer.cpp [2:17]
- thrift/server/TNonblockingServer.h [2:17]
- thrift/server/TServer.cpp [2:17]
- thrift/server/TServer.h [2:17]
- thrift/server/TServerFramework.cpp [2:17]
- thrift/server/TServerFramework.h [2:17]
- thrift/server/TSimpleServer.cpp [2:17]
- thrift/server/TSimpleServer.h [2:17]
- thrift/server/TThreadPoolServer.cpp [2:17]
- thrift/server/TThreadPoolServer.h [2:17]
- thrift/server/TThreadedServer.cpp [2:17]
- thrift/server/TThreadedServer.h [2:17]
- thrift/stdcxx.h [2:17]
- thrift/thrift-config.h [2:17]
- thrift/transport/PlatformSocket.h [2:17]
- thrift/transport/TBufferTransports.cpp [2:17]
- thrift/transport/TBufferTransports.h [2:17]
- thrift/transport/TFDTransport.cpp [2:17]
- thrift/transport/TFDTransport.h [2:17]
- thrift/transport/TFileTransport.cpp [2:17]
- thrift/transport/TFileTransport.h [2:17]
- thrift/transport/THeaderTransport.cpp [2:17]
- thrift/transport/THeaderTransport.h [2:17]
- thrift/transport/THttpClient.cpp [2:17]
- thrift/transport/THttpClient.h [2:17]
- thrift/transport/THttpServer.cpp [2:17]
- thrift/transport/THttpServer.h [2:17]
- thrift/transport/THttpTransport.cpp [2:17]
- thrift/transport/THttpTransport.h [2:17]
- thrift/transport/TNonblockingSSLServerSocket.cpp [2:17]
- thrift/transport/TNonblockingSSLServerSocket.h [2:17]
- thrift/transport/TNonblockingServerSocket.cpp [2:17]
- thrift/transport/TNonblockingServerSocket.h [2:17]
- thrift/transport/TNonblockingServerTransport.h [2:17]
- thrift/transport/TPipe.h [2:17]
- thrift/transport/TPipeServer.cpp [2:17]
- thrift/transport/TPipeServer.h [2:17]
- thrift/transport/TSSLServerSocket.cpp [2:17]
- thrift/transport/TSSLServerSocket.h [2:17]
- thrift/transport/TSSLSocket.cpp [2:17]
- thrift/transport/TSSLSocket.h [2:17]
- thrift/transport/TServerSocket.cpp [2:17]
- thrift/transport/TServerSocket.h [2:17]
- thrift/transport/TServerTransport.h [2:17]
- thrift/transport/TShortReadTransport.h [2:17]
- thrift/transport/TSimpleFileTransport.cpp [2:17]
- thrift/transport/TSimpleFileTransport.h [2:17]
- thrift/transport/TSocket.cpp [2:17]
- thrift/transport/TSocket.h [2:17]
- thrift/transport/TSocketPool.cpp [2:17]
- thrift/transport/TSocketPool.h [2:17]
- thrift/transport/TTransport.h [2:17]
- thrift/transport/TTransportException.cpp [2:17]
- thrift/transport/TTransportException.h [2:17]
- thrift/transport/TTransportUtils.cpp [2:17]
- thrift/transport/TTransportUtils.h [2:17]
- thrift/transport/TVirtualTransport.h [2:17]
- thrift/transport/TZlibTransport.cpp [2:17]
- thrift/transport/TZlibTransport.h [2:17]
- thrift/windows/GetTimeOfDay.cpp [2:17]
- thrift/windows/GetTimeOfDay.h [2:17]
- thrift/windows/Operators.h [2:17]
- thrift/windows/OverlappedSubmissionThread.h [2:17]
- thrift/windows/SocketPair.cpp [12:27]
- thrift/windows/SocketPair.h [2:17]
- thrift/windows/Sync.h [2:17]
- thrift/windows/TWinsockSingleton.cpp [2:17]
- thrift/windows/TWinsockSingleton.h [2:17]
- thrift/windows/WinFcntl.cpp [2:17]
- thrift/windows/WinFcntl.h [2:17]
- thrift/windows/config.h [2:17]
-
-KEEP Apache-2.0 9020eb91c0b53327fba333a3d00407b7
-BELONGS compiler/ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
- compiler/thrift/plugin/Makefile.am [2:17]
-
-KEEP Apache-2.0 9dbe1b4d928b8e28ca55048c70d8bad2
-BELONGS compiler/ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: Apache-2.0
- Score : 100.00
- Match type : NOTICE
- Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
- Files with this license:
- compiler/thrift/generate/t_html_generator.h [6:7]
-
-KEEP GPL-3.0-or-later WITH Bison-exception-2.2 a1a13d070d6688e9c508f055e129a5bc
-BELONGS compiler/ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: GPL-3.0-or-later
- Score : 92.02
- Match type : NOTICE
- Links : http://www.gnu.org/licenses/gpl-3.0-standalone.html, https://spdx.org/licenses/GPL-3.0-or-later
- Files with this license:
- compiler/thrift/thrifty.hh [1:31]
- Scancode info:
- Original SPDX id: Bison-exception-2.2
- Score : 92.02
- Match type : NOTICE
- Links : https://spdx.org/licenses/Bison-exception-2.2
- Files with this license:
- compiler/thrift/thrifty.hh [1:31]
-
-KEEP GPL-3.0-or-later WITH Bison-exception-2.2 d514084a37be4aa60dda15660d0fb31e
-BELONGS compiler/ya.make
- Note: matched license text is too long. Read it in the source files.
- Scancode info:
- Original SPDX id: GPL-3.0-or-later
- Score : 92.02
- Match type : NOTICE
- Links : http://www.gnu.org/licenses/gpl-3.0-standalone.html, https://spdx.org/licenses/GPL-3.0-or-later
- Files with this license:
- compiler/thrift/thrifty.cc [1:31]
- Scancode info:
- Original SPDX id: Bison-exception-2.2
- Score : 92.02
- Match type : NOTICE
- Links : https://spdx.org/licenses/Bison-exception-2.2
- Files with this license:
- compiler/thrift/thrifty.cc [1:31]
+# File format ($ symbol means the beginning of a line):
+#
+# $ # this message
+# $ # =======================
+# $ # comments (all commentaries should starts with some number of spaces and # symbol)
+# ${action} {license id} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
+# ${all_file_action} filename
+# $ # user commentaries (many lines)
+# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
+# ${action} {license spdx} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/3/ya.make
+# ${all_file_action} filename
+# $ # user commentaries
+# $ generated description
+# $ ...
+#
+# You can modify action, all_file_action and add commentaries
+# Available actions:
+# keep - keep license in contrib and use in credits
+# skip - skip license
+# remove - remove all files with this license
+# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
+#
+# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
+# We suppose that that files can contain some license info
+# Available all file actions:
+# FILE_IGNORE - ignore file (do nothing)
+# FILE_INCLUDE - include all file data into licenses text file
+# =======================
+
+KEEP Apache-2.0 353b7f53c15a69ee750c01ae193782e1
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ thrift/transport/TPipe.cpp [2:17]
+ thrift/windows/OverlappedSubmissionThread.cpp [2:17]
+
+KEEP Apache-2.0 8583e8a40394a933bc5fbe9a68f522d9
+BELONGS compiler/ya.make ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ compiler/thrift/common.cc [2:17]
+ compiler/thrift/common.h [2:17]
+ compiler/thrift/generate/t_as3_generator.cc [2:17]
+ compiler/thrift/generate/t_c_glib_generator.cc [2:17]
+ compiler/thrift/generate/t_cl_generator.cc [5:20]
+ compiler/thrift/generate/t_cocoa_generator.cc [2:17]
+ compiler/thrift/generate/t_cpp_generator.cc [2:17]
+ compiler/thrift/generate/t_csharp_generator.cc [2:17]
+ compiler/thrift/generate/t_d_generator.cc [2:17]
+ compiler/thrift/generate/t_dart_generator.cc [2:17]
+ compiler/thrift/generate/t_delphi_generator.cc [2:17]
+ compiler/thrift/generate/t_erl_generator.cc [2:17]
+ compiler/thrift/generate/t_generator.cc [2:17]
+ compiler/thrift/generate/t_generator.h [2:17]
+ compiler/thrift/generate/t_generator_registry.h [2:17]
+ compiler/thrift/generate/t_go_generator.cc [2:17]
+ compiler/thrift/generate/t_gv_generator.cc [2:17]
+ compiler/thrift/generate/t_haxe_generator.cc [2:17]
+ compiler/thrift/generate/t_hs_generator.cc [2:17]
+ compiler/thrift/generate/t_html_generator.cc [2:17]
+ compiler/thrift/generate/t_java_generator.cc [2:17]
+ compiler/thrift/generate/t_javame_generator.cc [2:17]
+ compiler/thrift/generate/t_js_generator.cc [2:17]
+ compiler/thrift/generate/t_json_generator.cc [2:17]
+ compiler/thrift/generate/t_lua_generator.cc [2:17]
+ compiler/thrift/generate/t_netcore_generator.cc [2:17]
+ compiler/thrift/generate/t_ocaml_generator.cc [2:17]
+ compiler/thrift/generate/t_oop_generator.h [2:17]
+ compiler/thrift/generate/t_perl_generator.cc [2:17]
+ compiler/thrift/generate/t_php_generator.cc [2:17]
+ compiler/thrift/generate/t_py_generator.cc [2:17]
+ compiler/thrift/generate/t_rb_generator.cc [2:17]
+ compiler/thrift/generate/t_rs_generator.cc [2:17]
+ compiler/thrift/generate/t_st_generator.cc [2:17]
+ compiler/thrift/generate/t_swift_generator.cc [2:17]
+ compiler/thrift/generate/t_xml_generator.cc [2:17]
+ compiler/thrift/generate/t_xsd_generator.cc [2:17]
+ compiler/thrift/globals.h [2:17]
+ compiler/thrift/logging.cc [2:17]
+ compiler/thrift/logging.h [2:17]
+ compiler/thrift/main.cc [2:17]
+ compiler/thrift/main.h [2:17]
+ compiler/thrift/parse/parse.cc [2:17]
+ compiler/thrift/parse/t_base_type.h [2:17]
+ compiler/thrift/parse/t_const.h [2:17]
+ compiler/thrift/parse/t_const_value.h [2:17]
+ compiler/thrift/parse/t_container.h [2:17]
+ compiler/thrift/parse/t_doc.h [2:17]
+ compiler/thrift/parse/t_enum.h [2:17]
+ compiler/thrift/parse/t_enum_value.h [2:17]
+ compiler/thrift/parse/t_field.h [2:17]
+ compiler/thrift/parse/t_function.h [2:17]
+ compiler/thrift/parse/t_list.h [2:17]
+ compiler/thrift/parse/t_map.h [2:17]
+ compiler/thrift/parse/t_program.h [2:17]
+ compiler/thrift/parse/t_scope.h [2:17]
+ compiler/thrift/parse/t_service.h [2:17]
+ compiler/thrift/parse/t_set.h [2:17]
+ compiler/thrift/parse/t_struct.h [2:17]
+ compiler/thrift/parse/t_type.h [2:17]
+ compiler/thrift/parse/t_typedef.cc [2:17]
+ compiler/thrift/parse/t_typedef.h [2:17]
+ compiler/thrift/platform.h [2:17]
+ compiler/thrift/plugin/plugin.cc [2:17]
+ compiler/thrift/plugin/plugin.h [2:17]
+ compiler/thrift/plugin/plugin.thrift [2:17]
+ compiler/thrift/plugin/plugin_output.cc [2:17]
+ compiler/thrift/plugin/plugin_output.h [2:17]
+ compiler/thrift/plugin/type_util.h [2:17]
+ compiler/thrift/thriftl.cc [1105:1120]
+ compiler/thrift/thriftl.ll [2:17]
+ compiler/thrift/thrifty.cc [68:83]
+ compiler/thrift/thrifty.yy [6:21]
+ compiler/thrift/version.h [2:17]
+ compiler/thrift/version.h.in [2:17]
+ compiler/thrift/windows/config.h [2:17]
+ thrift/TApplicationException.cpp [2:17]
+ thrift/TApplicationException.h [2:17]
+ thrift/TBase.h [2:17]
+ thrift/TDispatchProcessor.h [2:17]
+ thrift/TLogging.h [2:17]
+ thrift/TOutput.cpp [2:17]
+ thrift/TOutput.h [2:17]
+ thrift/TProcessor.h [2:17]
+ thrift/TToString.h [2:17]
+ thrift/Thrift.h [2:17]
+ thrift/VirtualProfiling.cpp [2:17]
+ thrift/async/TAsyncBufferProcessor.h [2:17]
+ thrift/async/TAsyncChannel.cpp [2:17]
+ thrift/async/TAsyncChannel.h [2:17]
+ thrift/async/TAsyncDispatchProcessor.h [2:17]
+ thrift/async/TAsyncProcessor.h [2:17]
+ thrift/async/TAsyncProtocolProcessor.cpp [2:17]
+ thrift/async/TAsyncProtocolProcessor.h [2:17]
+ thrift/async/TConcurrentClientSyncInfo.cpp [2:17]
+ thrift/async/TConcurrentClientSyncInfo.h [2:17]
+ thrift/async/TEvhttpClientChannel.cpp [2:17]
+ thrift/async/TEvhttpClientChannel.h [2:17]
+ thrift/async/TEvhttpServer.cpp [2:17]
+ thrift/async/TEvhttpServer.h [2:17]
+ thrift/concurrency/Exception.h [2:17]
+ thrift/concurrency/FunctionRunner.h [2:17]
+ thrift/concurrency/Monitor.h [2:17]
+ thrift/concurrency/Mutex.h [2:17]
+ thrift/concurrency/PlatformThreadFactory.h [2:17]
+ thrift/concurrency/StdMonitor.cpp [2:17]
+ thrift/concurrency/StdMutex.cpp [2:17]
+ thrift/concurrency/StdThreadFactory.cpp [2:17]
+ thrift/concurrency/StdThreadFactory.h [2:17]
+ thrift/concurrency/Thread.h [2:17]
+ thrift/concurrency/ThreadManager.cpp [2:17]
+ thrift/concurrency/ThreadManager.h [2:17]
+ thrift/concurrency/TimerManager.cpp [2:17]
+ thrift/concurrency/TimerManager.h [2:17]
+ thrift/concurrency/Util.cpp [2:17]
+ thrift/concurrency/Util.h [2:17]
+ thrift/processor/PeekProcessor.cpp [2:17]
+ thrift/processor/PeekProcessor.h [2:17]
+ thrift/processor/StatsProcessor.h [2:17]
+ thrift/processor/TMultiplexedProcessor.h [2:17]
+ thrift/protocol/TBase64Utils.cpp [2:17]
+ thrift/protocol/TBase64Utils.h [2:17]
+ thrift/protocol/TBinaryProtocol.h [2:17]
+ thrift/protocol/TBinaryProtocol.tcc [2:17]
+ thrift/protocol/TCompactProtocol.h [2:17]
+ thrift/protocol/TCompactProtocol.tcc [2:17]
+ thrift/protocol/TDebugProtocol.cpp [2:17]
+ thrift/protocol/TDebugProtocol.h [2:17]
+ thrift/protocol/THeaderProtocol.cpp [2:17]
+ thrift/protocol/THeaderProtocol.h [2:17]
+ thrift/protocol/TJSONProtocol.cpp [2:17]
+ thrift/protocol/TJSONProtocol.h [2:17]
+ thrift/protocol/TMultiplexedProtocol.cpp [2:17]
+ thrift/protocol/TMultiplexedProtocol.h [2:17]
+ thrift/protocol/TProtocol.cpp [2:17]
+ thrift/protocol/TProtocol.h [2:17]
+ thrift/protocol/TProtocolDecorator.h [2:17]
+ thrift/protocol/TProtocolException.h [2:17]
+ thrift/protocol/TProtocolTap.h [2:17]
+ thrift/protocol/TProtocolTypes.h [2:17]
+ thrift/protocol/TVirtualProtocol.h [2:17]
+ thrift/qt/TQIODeviceTransport.cpp [2:17]
+ thrift/qt/TQIODeviceTransport.h [2:17]
+ thrift/qt/TQTcpServer.cpp [2:17]
+ thrift/qt/TQTcpServer.h [2:17]
+ thrift/server/TConnectedClient.cpp [2:17]
+ thrift/server/TConnectedClient.h [2:17]
+ thrift/server/TNonblockingServer.cpp [2:17]
+ thrift/server/TNonblockingServer.h [2:17]
+ thrift/server/TServer.cpp [2:17]
+ thrift/server/TServer.h [2:17]
+ thrift/server/TServerFramework.cpp [2:17]
+ thrift/server/TServerFramework.h [2:17]
+ thrift/server/TSimpleServer.cpp [2:17]
+ thrift/server/TSimpleServer.h [2:17]
+ thrift/server/TThreadPoolServer.cpp [2:17]
+ thrift/server/TThreadPoolServer.h [2:17]
+ thrift/server/TThreadedServer.cpp [2:17]
+ thrift/server/TThreadedServer.h [2:17]
+ thrift/stdcxx.h [2:17]
+ thrift/thrift-config.h [2:17]
+ thrift/transport/PlatformSocket.h [2:17]
+ thrift/transport/TBufferTransports.cpp [2:17]
+ thrift/transport/TBufferTransports.h [2:17]
+ thrift/transport/TFDTransport.cpp [2:17]
+ thrift/transport/TFDTransport.h [2:17]
+ thrift/transport/TFileTransport.cpp [2:17]
+ thrift/transport/TFileTransport.h [2:17]
+ thrift/transport/THeaderTransport.cpp [2:17]
+ thrift/transport/THeaderTransport.h [2:17]
+ thrift/transport/THttpClient.cpp [2:17]
+ thrift/transport/THttpClient.h [2:17]
+ thrift/transport/THttpServer.cpp [2:17]
+ thrift/transport/THttpServer.h [2:17]
+ thrift/transport/THttpTransport.cpp [2:17]
+ thrift/transport/THttpTransport.h [2:17]
+ thrift/transport/TNonblockingSSLServerSocket.cpp [2:17]
+ thrift/transport/TNonblockingSSLServerSocket.h [2:17]
+ thrift/transport/TNonblockingServerSocket.cpp [2:17]
+ thrift/transport/TNonblockingServerSocket.h [2:17]
+ thrift/transport/TNonblockingServerTransport.h [2:17]
+ thrift/transport/TPipe.h [2:17]
+ thrift/transport/TPipeServer.cpp [2:17]
+ thrift/transport/TPipeServer.h [2:17]
+ thrift/transport/TSSLServerSocket.cpp [2:17]
+ thrift/transport/TSSLServerSocket.h [2:17]
+ thrift/transport/TSSLSocket.cpp [2:17]
+ thrift/transport/TSSLSocket.h [2:17]
+ thrift/transport/TServerSocket.cpp [2:17]
+ thrift/transport/TServerSocket.h [2:17]
+ thrift/transport/TServerTransport.h [2:17]
+ thrift/transport/TShortReadTransport.h [2:17]
+ thrift/transport/TSimpleFileTransport.cpp [2:17]
+ thrift/transport/TSimpleFileTransport.h [2:17]
+ thrift/transport/TSocket.cpp [2:17]
+ thrift/transport/TSocket.h [2:17]
+ thrift/transport/TSocketPool.cpp [2:17]
+ thrift/transport/TSocketPool.h [2:17]
+ thrift/transport/TTransport.h [2:17]
+ thrift/transport/TTransportException.cpp [2:17]
+ thrift/transport/TTransportException.h [2:17]
+ thrift/transport/TTransportUtils.cpp [2:17]
+ thrift/transport/TTransportUtils.h [2:17]
+ thrift/transport/TVirtualTransport.h [2:17]
+ thrift/transport/TZlibTransport.cpp [2:17]
+ thrift/transport/TZlibTransport.h [2:17]
+ thrift/windows/GetTimeOfDay.cpp [2:17]
+ thrift/windows/GetTimeOfDay.h [2:17]
+ thrift/windows/Operators.h [2:17]
+ thrift/windows/OverlappedSubmissionThread.h [2:17]
+ thrift/windows/SocketPair.cpp [12:27]
+ thrift/windows/SocketPair.h [2:17]
+ thrift/windows/Sync.h [2:17]
+ thrift/windows/TWinsockSingleton.cpp [2:17]
+ thrift/windows/TWinsockSingleton.h [2:17]
+ thrift/windows/WinFcntl.cpp [2:17]
+ thrift/windows/WinFcntl.h [2:17]
+ thrift/windows/config.h [2:17]
+
+KEEP Apache-2.0 9020eb91c0b53327fba333a3d00407b7
+BELONGS compiler/ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ compiler/thrift/plugin/Makefile.am [2:17]
+
+KEEP Apache-2.0 9dbe1b4d928b8e28ca55048c70d8bad2
+BELONGS compiler/ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ compiler/thrift/generate/t_html_generator.h [6:7]
+
+KEEP GPL-3.0-or-later WITH Bison-exception-2.2 a1a13d070d6688e9c508f055e129a5bc
+BELONGS compiler/ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: GPL-3.0-or-later
+ Score : 92.02
+ Match type : NOTICE
+ Links : http://www.gnu.org/licenses/gpl-3.0-standalone.html, https://spdx.org/licenses/GPL-3.0-or-later
+ Files with this license:
+ compiler/thrift/thrifty.hh [1:31]
+ Scancode info:
+ Original SPDX id: Bison-exception-2.2
+ Score : 92.02
+ Match type : NOTICE
+ Links : https://spdx.org/licenses/Bison-exception-2.2
+ Files with this license:
+ compiler/thrift/thrifty.hh [1:31]
+
+KEEP GPL-3.0-or-later WITH Bison-exception-2.2 d514084a37be4aa60dda15660d0fb31e
+BELONGS compiler/ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: GPL-3.0-or-later
+ Score : 92.02
+ Match type : NOTICE
+ Links : http://www.gnu.org/licenses/gpl-3.0-standalone.html, https://spdx.org/licenses/GPL-3.0-or-later
+ Files with this license:
+ compiler/thrift/thrifty.cc [1:31]
+ Scancode info:
+ Original SPDX id: Bison-exception-2.2
+ Score : 92.02
+ Match type : NOTICE
+ Links : https://spdx.org/licenses/Bison-exception-2.2
+ Files with this license:
+ compiler/thrift/thrifty.cc [1:31]
diff --git a/contrib/restricted/thrift/.yandex_meta/licenses.list.txt b/contrib/restricted/thrift/.yandex_meta/licenses.list.txt
index 6287ea5dd7..ef04662bba 100644
--- a/contrib/restricted/thrift/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/thrift/.yandex_meta/licenses.list.txt
@@ -1,40 +1,40 @@
-====================Apache-2.0====================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
-
-
-====================Apache-2.0====================
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements. See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership. The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License. You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing,
-* software distributed under the License is distributed on an
-* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-* KIND, either express or implied. See the License for the
-* specific language governing permissions and limitations
-* under the License.
-
-
-====================COPYRIGHT====================
- * Copyright 2007 by Nathan C. Myers <ncm@cantrip.org>; some rights reserved.
+====================Apache-2.0====================
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+
+
+====================Apache-2.0====================
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+
+
+====================COPYRIGHT====================
+ * Copyright 2007 by Nathan C. Myers <ncm@cantrip.org>; some rights reserved.
diff --git a/contrib/restricted/thrift/compiler/.yandex_meta/licenses.list.txt b/contrib/restricted/thrift/compiler/.yandex_meta/licenses.list.txt
index 430f5d171e..fcd71f0e42 100644
--- a/contrib/restricted/thrift/compiler/.yandex_meta/licenses.list.txt
+++ b/contrib/restricted/thrift/compiler/.yandex_meta/licenses.list.txt
@@ -1,124 +1,124 @@
-====================Apache-2.0====================
- " * Licensed under the Apache License v2.0\n" \
- " * http://www.apache.org/licenses/LICENSE-2.0\n" \
-
-
-====================Apache-2.0====================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
-
-
-====================Apache-2.0====================
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-
-====================COPYRIGHT====================
- Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
-
-
-====================COPYRIGHT====================
- " * Copyright 2012 Twitter, Inc\n" \
- " * Licensed under the Apache License v2.0\n" \
- " * http://www.apache.org/licenses/LICENSE-2.0\n" \
-
-
-====================COPYRIGHT====================
- * Copyright (c) 2008- Patrick Collison <patrick@collison.ie>
- * Copyright (c) 2006- Facebook
-
-
-====================GPL-3.0-or-later WITH Bison-exception-2.2====================
-/* A Bison parser, made by GNU Bison 3.0.4. */
-
-/* Bison implementation for Yacc-like parsers in C
-
- Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
-
- 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, you may create a larger work that contains
- part or all of the Bison parser skeleton and distribute that work
- under terms of your choice, so long as that work isn't itself a
- parser generator using the skeleton or a modified version thereof
- as a parser skeleton. Alternatively, if you modify or redistribute
- the parser skeleton itself, you may (at your option) remove this
- special exception, which will cause the skeleton and the resulting
- Bison output files to be licensed under the GNU General Public
- License without this special exception.
-
- This special exception was added by the Free Software Foundation in
- version 2.2 of Bison. */
-
-
-====================GPL-3.0-or-later WITH Bison-exception-2.2====================
-/* A Bison parser, made by GNU Bison 3.0.4. */
-
-/* Bison interface for Yacc-like parsers in C
-
- Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
-
- 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, you may create a larger work that contains
- part or all of the Bison parser skeleton and distribute that work
- under terms of your choice, so long as that work isn't itself a
- parser generator using the skeleton or a modified version thereof
- as a parser skeleton. Alternatively, if you modify or redistribute
- the parser skeleton itself, you may (at your option) remove this
- special exception, which will cause the skeleton and the resulting
- Bison output files to be licensed under the GNU General Public
- License without this special exception.
-
- This special exception was added by the Free Software Foundation in
- version 2.2 of Bison. */
+====================Apache-2.0====================
+ " * Licensed under the Apache License v2.0\n" \
+ " * http://www.apache.org/licenses/LICENSE-2.0\n" \
+
+
+====================Apache-2.0====================
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+
+
+====================Apache-2.0====================
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+
+====================COPYRIGHT====================
+ Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
+
+
+====================COPYRIGHT====================
+ " * Copyright 2012 Twitter, Inc\n" \
+ " * Licensed under the Apache License v2.0\n" \
+ " * http://www.apache.org/licenses/LICENSE-2.0\n" \
+
+
+====================COPYRIGHT====================
+ * Copyright (c) 2008- Patrick Collison <patrick@collison.ie>
+ * Copyright (c) 2006- Facebook
+
+
+====================GPL-3.0-or-later WITH Bison-exception-2.2====================
+/* A Bison parser, made by GNU Bison 3.0.4. */
+
+/* Bison implementation for Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
+
+ 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, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
+
+
+====================GPL-3.0-or-later WITH Bison-exception-2.2====================
+/* A Bison parser, made by GNU Bison 3.0.4. */
+
+/* Bison interface for Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
+
+ 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, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
diff --git a/contrib/restricted/thrift/compiler/ya.make b/contrib/restricted/thrift/compiler/ya.make
index 93cb4f4ea9..73f2dd88bb 100644
--- a/contrib/restricted/thrift/compiler/ya.make
+++ b/contrib/restricted/thrift/compiler/ya.make
@@ -1,14 +1,14 @@
PROGRAM()
-LICENSE(
- Apache-2.0 AND
- GPL-3.0-or-later WITH Bison-exception-2.2
+LICENSE(
+ Apache-2.0 AND
+ GPL-3.0-or-later WITH Bison-exception-2.2
)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
-OWNER(g:contrib)
-
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
+OWNER(g:contrib)
+
PEERDIR(
contrib/restricted/boost
contrib/restricted/thrift
diff --git a/contrib/restricted/thrift/ya.make b/contrib/restricted/thrift/ya.make
index ea68a40624..ffdf32e4f7 100644
--- a/contrib/restricted/thrift/ya.make
+++ b/contrib/restricted/thrift/ya.make
@@ -4,8 +4,8 @@ VERSION(0.10.0)
LICENSE(Apache-2.0)
-LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-
+LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
+
OWNER(
g:contrib
g:cpp-contrib
@@ -15,9 +15,9 @@ NO_UTIL()
NO_COMPILER_WARNINGS()
-ADDINCL(
- GLOBAL contrib/restricted/thrift
-)
+ADDINCL(
+ GLOBAL contrib/restricted/thrift
+)
PEERDIR(
contrib/libs/libevent
diff --git a/contrib/restricted/uriparser/tool/ya.make b/contrib/restricted/uriparser/tool/ya.make
index 273e1331db..3692ca78e5 100644
--- a/contrib/restricted/uriparser/tool/ya.make
+++ b/contrib/restricted/uriparser/tool/ya.make
@@ -17,9 +17,9 @@ PEERDIR(
contrib/restricted/uriparser
)
-ADDINCL(
- contrib/restricted/uriparser/include
-)
+ADDINCL(
+ contrib/restricted/uriparser/include
+)
NO_COMPILER_WARNINGS()
diff --git a/contrib/restricted/ya.make b/contrib/restricted/ya.make
index 4f46f83d26..b52a206733 100644
--- a/contrib/restricted/ya.make
+++ b/contrib/restricted/ya.make
@@ -5,7 +5,7 @@ OWNER(
RECURSE(
abseil-cpp
- abseil-cpp-tstring
+ abseil-cpp-tstring
alsa-lib
avahi
aws
diff --git a/contrib/tools/bison/bison/src/parse-gram.c b/contrib/tools/bison/bison/src/parse-gram.c
index 961d4e10c1..5b862667e9 100644
--- a/contrib/tools/bison/bison/src/parse-gram.c
+++ b/contrib/tools/bison/bison/src/parse-gram.c
@@ -63,7 +63,7 @@
/* On column 0 to please syntax-check. */
#include <config.h>
-#include "string--.h"
+#include "string--.h"
#line 68 "src/parse-gram.c" /* yacc.c:316 */
/* Substitute the type names. */
diff --git a/contrib/tools/bison/bison/src/parse-gram.y b/contrib/tools/bison/bison/src/parse-gram.y
index c6c2aaa5d9..8c438dfeda 100644
--- a/contrib/tools/bison/bison/src/parse-gram.y
+++ b/contrib/tools/bison/bison/src/parse-gram.y
@@ -27,7 +27,7 @@
{
/* On column 0 to please syntax-check. */
#include <config.h>
-#include "string--.h"
+#include "string--.h"
}
%code
diff --git a/contrib/tools/bison/bison/src/print-xml.c b/contrib/tools/bison/bison/src/print-xml.c
index 896f12cb80..c30da729db 100644
--- a/contrib/tools/bison/bison/src/print-xml.c
+++ b/contrib/tools/bison/bison/src/print-xml.c
@@ -18,7 +18,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
-#include "string--.h"
+#include "string--.h"
#include "system.h"
#include <stdarg.h>
diff --git a/contrib/tools/bison/bison/ya.make b/contrib/tools/bison/bison/ya.make
index bd6a4032c5..04f8ae3758 100644
--- a/contrib/tools/bison/bison/ya.make
+++ b/contrib/tools/bison/bison/ya.make
@@ -9,10 +9,10 @@ LICENSE(
LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-IF (NOT MUSL)
- NO_RUNTIME()
-ENDIF()
-
+IF (NOT MUSL)
+ NO_RUNTIME()
+ENDIF()
+
NO_COMPILER_WARNINGS()
ADDINCLSELF()
diff --git a/contrib/tools/bison/gnulib/src/clean-temp.c b/contrib/tools/bison/gnulib/src/clean-temp.c
index 80af03a325..2961114168 100644
--- a/contrib/tools/bison/gnulib/src/clean-temp.c
+++ b/contrib/tools/bison/gnulib/src/clean-temp.c
@@ -26,7 +26,7 @@
#include <fcntl.h>
#include <limits.h>
#include <stdbool.h>
-#include "stdlib--.h"
+#include "stdlib--.h"
#include <string.h>
#include <unistd.h>
diff --git a/contrib/tools/bison/gnulib/src/closein.c b/contrib/tools/bison/gnulib/src/closein.c
index 2acb2a91d9..c9bf73781f 100644
--- a/contrib/tools/bison/gnulib/src/closein.c
+++ b/contrib/tools/bison/gnulib/src/closein.c
@@ -21,7 +21,7 @@
#include <errno.h>
#include <stdbool.h>
-#include "stdio--.h"
+#include "stdio--.h"
#include <unistd.h>
#include "gettext.h"
diff --git a/contrib/tools/bison/gnulib/src/concat-filename.c b/contrib/tools/bison/gnulib/src/concat-filename.c
index 342be2647e..b749d6838b 100644
--- a/contrib/tools/bison/gnulib/src/concat-filename.c
+++ b/contrib/tools/bison/gnulib/src/concat-filename.c
@@ -23,7 +23,7 @@
#include <errno.h>
#include <stdlib.h>
-#include "string--.h"
+#include "string--.h"
#include "filename.h"
diff --git a/contrib/tools/bison/gnulib/src/fflush.c b/contrib/tools/bison/gnulib/src/fflush.c
index fc1cf3da43..9df79119dd 100644
--- a/contrib/tools/bison/gnulib/src/fflush.c
+++ b/contrib/tools/bison/gnulib/src/fflush.c
@@ -19,7 +19,7 @@
#include <config.h>
/* Specification. */
-#include "stdio--.h"
+#include "stdio--.h"
#include <errno.h>
#include <unistd.h>
diff --git a/contrib/tools/bison/gnulib/src/mbswidth.c b/contrib/tools/bison/gnulib/src/mbswidth.c
index e3d9c5f817..6571037592 100644
--- a/contrib/tools/bison/gnulib/src/mbswidth.c
+++ b/contrib/tools/bison/gnulib/src/mbswidth.c
@@ -30,7 +30,7 @@
#include <ctype.h>
/* Get mbstate_t, mbrtowc(), mbsinit(), wcwidth(). */
-#include "wchar--.h"
+#include "wchar--.h"
/* Get iswcntrl(). */
#include <wctype.h>
diff --git a/contrib/tools/bison/gnulib/src/mkstemp-safer.c b/contrib/tools/bison/gnulib/src/mkstemp-safer.c
index 1268a98edb..9ddf86fb60 100644
--- a/contrib/tools/bison/gnulib/src/mkstemp-safer.c
+++ b/contrib/tools/bison/gnulib/src/mkstemp-safer.c
@@ -21,10 +21,10 @@
#include "stdlib-safer.h"
-#include "stdlib--.h"
+#include "stdlib--.h"
#include "unistd-safer.h"
-
+
/* Like mkstemp, but do not return STDIN_FILENO, STDOUT_FILENO, or
STDERR_FILENO. */
diff --git a/contrib/tools/bison/gnulib/src/obstack.h b/contrib/tools/bison/gnulib/src/obstack.h
index 10a69f5ad8..c57cc57b92 100644
--- a/contrib/tools/bison/gnulib/src/obstack.h
+++ b/contrib/tools/bison/gnulib/src/obstack.h
@@ -511,8 +511,8 @@ __extension__ \
} /* C++ */
#endif
-#if defined(_WIN32)
-int obstack_printf(struct obstack *obs, const char *format, ...);
-#endif
-
+#if defined(_WIN32)
+int obstack_printf(struct obstack *obs, const char *format, ...);
+#endif
+
#endif /* obstack.h */
diff --git a/contrib/tools/bison/gnulib/src/obstack_printf.c b/contrib/tools/bison/gnulib/src/obstack_printf.c
index 093b0493a2..291dcd52a4 100644
--- a/contrib/tools/bison/gnulib/src/obstack_printf.c
+++ b/contrib/tools/bison/gnulib/src/obstack_printf.c
@@ -26,8 +26,8 @@
#include <stdarg.h>
#include <stdlib.h>
-int obstack_vprintf(struct obstack *obs, const char *format, va_list args);
-
+int obstack_vprintf(struct obstack *obs, const char *format, va_list args);
+
/* Grow an obstack with formatted output. Return the number of bytes
added to OBS. No trailing nul byte is added, and the object should
be closed with obstack_finish before use.
diff --git a/contrib/tools/bison/gnulib/src/stdio--.h b/contrib/tools/bison/gnulib/src/stdio--.h
index fc2cbb2576..5d9b19b50a 100644
--- a/contrib/tools/bison/gnulib/src/stdio--.h
+++ b/contrib/tools/bison/gnulib/src/stdio--.h
@@ -18,15 +18,15 @@
/* Written by Paul Eggert. */
#include <stdio.h>
-#include <unistd.h>
+#include <unistd.h>
#include "stdio-safer.h"
-#if defined(_WIN32)
-int fpurge(FILE *stream);
-int fseeko(FILE *stream, off_t offset, int whence);
-off_t ftello(FILE *stream);
-#endif
-
+#if defined(_WIN32)
+int fpurge(FILE *stream);
+int fseeko(FILE *stream, off_t offset, int whence);
+off_t ftello(FILE *stream);
+#endif
+
#if GNULIB_FOPEN_SAFER
# undef fopen
# define fopen fopen_safer
diff --git a/contrib/tools/bison/gnulib/src/stdlib--.h b/contrib/tools/bison/gnulib/src/stdlib--.h
index f140668bd5..28360a2707 100644
--- a/contrib/tools/bison/gnulib/src/stdlib--.h
+++ b/contrib/tools/bison/gnulib/src/stdlib--.h
@@ -20,12 +20,12 @@
#include <stdlib.h>
#include "stdlib-safer.h"
-#if defined(_WIN32)
-char *mkdtemp(char *template);
-int mkstemp(char*);
-char *secure_getenv(const char *name);
-#endif
-
+#if defined(_WIN32)
+char *mkdtemp(char *template);
+int mkstemp(char*);
+char *secure_getenv(const char *name);
+#endif
+
#undef mkstemp
#define mkstemp mkstemp_safer
diff --git a/contrib/tools/bison/gnulib/src/strchrnul.c b/contrib/tools/bison/gnulib/src/strchrnul.c
index f8e112a248..4308889950 100644
--- a/contrib/tools/bison/gnulib/src/strchrnul.c
+++ b/contrib/tools/bison/gnulib/src/strchrnul.c
@@ -17,7 +17,7 @@
#include <config.h>
/* Specification. */
-#include "string--.h"
+#include "string--.h"
/* Find the first occurrence of C in S or the final NUL byte. */
char *
diff --git a/contrib/tools/bison/gnulib/src/string--.h b/contrib/tools/bison/gnulib/src/string--.h
index 58179dd958..37cc3727f8 100644
--- a/contrib/tools/bison/gnulib/src/string--.h
+++ b/contrib/tools/bison/gnulib/src/string--.h
@@ -1,9 +1,9 @@
-#pragma once
-
-#include <string.h>
-
-#if defined(_WIN32)
-void *rawmemchr(const void *s, int c);
-char *stpcpy(char *dest, const char *src);
-int strverscmp(const char *s1, const char *s2);
-#endif
+#pragma once
+
+#include <string.h>
+
+#if defined(_WIN32)
+void *rawmemchr(const void *s, int c);
+char *stpcpy(char *dest, const char *src);
+int strverscmp(const char *s1, const char *s2);
+#endif
diff --git a/contrib/tools/bison/gnulib/src/tempname.c b/contrib/tools/bison/gnulib/src/tempname.c
index 6df485938d..9975449a89 100644
--- a/contrib/tools/bison/gnulib/src/tempname.c
+++ b/contrib/tools/bison/gnulib/src/tempname.c
@@ -54,7 +54,7 @@
#include <fcntl.h>
#include <sys/time.h>
#include <stdint.h>
-#include "unistd--.h"
+#include "unistd--.h"
#include <sys/stat.h>
diff --git a/contrib/tools/bison/gnulib/src/tmpdir.c b/contrib/tools/bison/gnulib/src/tmpdir.c
index 3040f6cd4b..1b3fb023a0 100644
--- a/contrib/tools/bison/gnulib/src/tmpdir.c
+++ b/contrib/tools/bison/gnulib/src/tmpdir.c
@@ -23,7 +23,7 @@
#include "tmpdir.h"
#include <stdbool.h>
-#include "stdlib--.h"
+#include "stdlib--.h"
#include <string.h>
#include <errno.h>
diff --git a/contrib/tools/bison/gnulib/src/unistd--.h b/contrib/tools/bison/gnulib/src/unistd--.h
index af60c0643a..fee7ecf03d 100644
--- a/contrib/tools/bison/gnulib/src/unistd--.h
+++ b/contrib/tools/bison/gnulib/src/unistd--.h
@@ -20,10 +20,10 @@
#include <unistd.h>
#include "unistd-safer.h"
-#if defined(_WIN32)
-# include <process.h>
-#endif
-
+#if defined(_WIN32)
+# include <process.h>
+#endif
+
#undef dup
#define dup dup_safer
diff --git a/contrib/tools/bison/gnulib/src/wchar--.h b/contrib/tools/bison/gnulib/src/wchar--.h
index 0ced5f7549..41751e00ac 100644
--- a/contrib/tools/bison/gnulib/src/wchar--.h
+++ b/contrib/tools/bison/gnulib/src/wchar--.h
@@ -1,7 +1,7 @@
-#pragma once
-
-#include <wchar.h>
-
-#if defined(_WIN32)
-int wcwidth(wchar_t c);
-#endif
+#pragma once
+
+#include <wchar.h>
+
+#if defined(_WIN32)
+int wcwidth(wchar_t c);
+#endif
diff --git a/contrib/tools/bison/gnulib/ya.make b/contrib/tools/bison/gnulib/ya.make
index 6e92f3bff7..b674fd9ada 100644
--- a/contrib/tools/bison/gnulib/ya.make
+++ b/contrib/tools/bison/gnulib/ya.make
@@ -10,10 +10,10 @@ LICENSE(
LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-IF (NOT MUSL)
- NO_RUNTIME()
-ENDIF()
-
+IF (NOT MUSL)
+ NO_RUNTIME()
+ENDIF()
+
NO_COMPILER_WARNINGS()
ADDINCL(
diff --git a/contrib/tools/python/LICENSE b/contrib/tools/python/LICENSE
index f0175aa550..9dc010d803 100644
--- a/contrib/tools/python/LICENSE
+++ b/contrib/tools/python/LICENSE
@@ -1,254 +1,254 @@
-A. HISTORY OF THE SOFTWARE
-==========================
-
-Python was created in the early 1990s by Guido van Rossum at Stichting
-Mathematisch Centrum (CWI, see http://www.cwi.nl) in the Netherlands
-as a successor of a language called ABC. Guido remains Python's
-principal author, although it includes many contributions from others.
-
-In 1995, Guido continued his work on Python at the Corporation for
-National Research Initiatives (CNRI, see http://www.cnri.reston.va.us)
-in Reston, Virginia where he released several versions of the
-software.
-
-In May 2000, Guido and the Python core development team moved to
-BeOpen.com to form the BeOpen PythonLabs team. In October of the same
-year, the PythonLabs team moved to Digital Creations, which became
-Zope Corporation. In 2001, the Python Software Foundation (PSF, see
-https://www.python.org/psf/) was formed, a non-profit organization
-created specifically to own Python-related Intellectual Property.
-Zope Corporation was a sponsoring member of the PSF.
-
-All Python releases are Open Source (see http://www.opensource.org for
-the Open Source Definition). Historically, most, but not all, Python
-releases have also been GPL-compatible; the table below summarizes
-the various releases.
-
- Release Derived Year Owner GPL-
- from compatible? (1)
-
- 0.9.0 thru 1.2 1991-1995 CWI yes
- 1.3 thru 1.5.2 1.2 1995-1999 CNRI yes
- 1.6 1.5.2 2000 CNRI no
- 2.0 1.6 2000 BeOpen.com no
- 1.6.1 1.6 2001 CNRI yes (2)
- 2.1 2.0+1.6.1 2001 PSF no
- 2.0.1 2.0+1.6.1 2001 PSF yes
- 2.1.1 2.1+2.0.1 2001 PSF yes
- 2.1.2 2.1.1 2002 PSF yes
- 2.1.3 2.1.2 2002 PSF yes
- 2.2 and above 2.1.1 2001-now PSF yes
-
-Footnotes:
-
-(1) GPL-compatible doesn't mean that we're distributing Python under
- the GPL. All Python licenses, unlike the GPL, let you distribute
- a modified version without making your changes open source. The
- GPL-compatible licenses make it possible to combine Python with
- other software that is released under the GPL; the others don't.
-
-(2) According to Richard Stallman, 1.6.1 is not GPL-compatible,
- because its license has a choice of law clause. According to
- CNRI, however, Stallman's lawyer has told CNRI's lawyer that 1.6.1
- is "not incompatible" with the GPL.
-
-Thanks to the many outside volunteers who have worked under Guido's
-direction to make these releases possible.
-
-
-B. TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING PYTHON
-===============================================================
-
-PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
---------------------------------------------
-
-1. This LICENSE AGREEMENT is between the Python Software Foundation
-("PSF"), and the Individual or Organization ("Licensee") accessing and
-otherwise using this software ("Python") in source or binary form and
-its associated documentation.
-
-2. Subject to the terms and conditions of this License Agreement, PSF hereby
-grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce,
-analyze, test, perform and/or display publicly, prepare derivative works,
-distribute, and otherwise use Python alone or in any derivative version,
-provided, however, that PSF's License Agreement and PSF's notice of copyright,
-i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
-2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Python Software Foundation;
-All Rights Reserved" are retained in Python alone or in any derivative version
-prepared by Licensee.
-
-3. In the event Licensee prepares a derivative work that is based on
-or incorporates Python or any part thereof, and wants to make
-the derivative work available to others as provided herein, then
-Licensee hereby agrees to include in any such work a brief summary of
-the changes made to Python.
-
-4. PSF is making Python available to Licensee on an "AS IS"
-basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
-IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
-DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
-FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT
-INFRINGE ANY THIRD PARTY RIGHTS.
-
-5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
-FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
-A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON,
-OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
-
-6. This License Agreement will automatically terminate upon a material
-breach of its terms and conditions.
-
-7. Nothing in this License Agreement shall be deemed to create any
-relationship of agency, partnership, or joint venture between PSF and
-Licensee. This License Agreement does not grant permission to use PSF
-trademarks or trade name in a trademark sense to endorse or promote
-products or services of Licensee, or any third party.
-
-8. By copying, installing or otherwise using Python, Licensee
-agrees to be bound by the terms and conditions of this License
-Agreement.
-
-
-BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0
--------------------------------------------
-
-BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1
-
-1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an
-office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the
-Individual or Organization ("Licensee") accessing and otherwise using
-this software in source or binary form and its associated
-documentation ("the Software").
-
-2. Subject to the terms and conditions of this BeOpen Python License
-Agreement, BeOpen hereby grants Licensee a non-exclusive,
-royalty-free, world-wide license to reproduce, analyze, test, perform
-and/or display publicly, prepare derivative works, distribute, and
-otherwise use the Software alone or in any derivative version,
-provided, however, that the BeOpen Python License is retained in the
-Software, alone or in any derivative version prepared by Licensee.
-
-3. BeOpen is making the Software available to Licensee on an "AS IS"
-basis. BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
-IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND
-DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
-FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT
-INFRINGE ANY THIRD PARTY RIGHTS.
-
-4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE
-SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS
-AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY
-DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
-
-5. This License Agreement will automatically terminate upon a material
-breach of its terms and conditions.
-
-6. This License Agreement shall be governed by and interpreted in all
-respects by the law of the State of California, excluding conflict of
-law provisions. Nothing in this License Agreement shall be deemed to
-create any relationship of agency, partnership, or joint venture
-between BeOpen and Licensee. This License Agreement does not grant
-permission to use BeOpen trademarks or trade names in a trademark
-sense to endorse or promote products or services of Licensee, or any
-third party. As an exception, the "BeOpen Python" logos available at
-http://www.pythonlabs.com/logos.html may be used according to the
-permissions granted on that web page.
-
-7. By copying, installing or otherwise using the software, Licensee
-agrees to be bound by the terms and conditions of this License
-Agreement.
-
-
-CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1
----------------------------------------
-
-1. This LICENSE AGREEMENT is between the Corporation for National
-Research Initiatives, having an office at 1895 Preston White Drive,
-Reston, VA 20191 ("CNRI"), and the Individual or Organization
-("Licensee") accessing and otherwise using Python 1.6.1 software in
-source or binary form and its associated documentation.
-
-2. Subject to the terms and conditions of this License Agreement, CNRI
-hereby grants Licensee a nonexclusive, royalty-free, world-wide
-license to reproduce, analyze, test, perform and/or display publicly,
-prepare derivative works, distribute, and otherwise use Python 1.6.1
-alone or in any derivative version, provided, however, that CNRI's
-License Agreement and CNRI's notice of copyright, i.e., "Copyright (c)
-1995-2001 Corporation for National Research Initiatives; All Rights
-Reserved" are retained in Python 1.6.1 alone or in any derivative
-version prepared by Licensee. Alternately, in lieu of CNRI's License
-Agreement, Licensee may substitute the following text (omitting the
-quotes): "Python 1.6.1 is made available subject to the terms and
-conditions in CNRI's License Agreement. This Agreement together with
-Python 1.6.1 may be located on the Internet using the following
-unique, persistent identifier (known as a handle): 1895.22/1013. This
-Agreement may also be obtained from a proxy server on the Internet
-using the following URL: http://hdl.handle.net/1895.22/1013".
-
-3. In the event Licensee prepares a derivative work that is based on
-or incorporates Python 1.6.1 or any part thereof, and wants to make
-the derivative work available to others as provided herein, then
-Licensee hereby agrees to include in any such work a brief summary of
-the changes made to Python 1.6.1.
-
-4. CNRI is making Python 1.6.1 available to Licensee on an "AS IS"
-basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
-IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND
-DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
-FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6.1 WILL NOT
-INFRINGE ANY THIRD PARTY RIGHTS.
-
-5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
-1.6.1 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
-A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1,
-OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
-
-6. This License Agreement will automatically terminate upon a material
-breach of its terms and conditions.
-
-7. This License Agreement shall be governed by the federal
-intellectual property law of the United States, including without
-limitation the federal copyright law, and, to the extent such
-U.S. federal law does not apply, by the law of the Commonwealth of
-Virginia, excluding Virginia's conflict of law provisions.
-Notwithstanding the foregoing, with regard to derivative works based
-on Python 1.6.1 that incorporate non-separable material that was
-previously distributed under the GNU General Public License (GPL), the
-law of the Commonwealth of Virginia shall govern this License
-Agreement only as to issues arising under or with respect to
-Paragraphs 4, 5, and 7 of this License Agreement. Nothing in this
-License Agreement shall be deemed to create any relationship of
-agency, partnership, or joint venture between CNRI and Licensee. This
-License Agreement does not grant permission to use CNRI trademarks or
-trade name in a trademark sense to endorse or promote products or
-services of Licensee, or any third party.
-
-8. By clicking on the "ACCEPT" button where indicated, or by copying,
-installing or otherwise using Python 1.6.1, Licensee agrees to be
-bound by the terms and conditions of this License Agreement.
-
- ACCEPT
-
-
-CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2
---------------------------------------------------
-
-Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam,
-The Netherlands. All rights reserved.
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Stichting Mathematisch
-Centrum or CWI not be used in advertising or publicity pertaining to
-distribution of the software without specific, written prior
-permission.
-
-STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
-THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
-FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
-OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+A. HISTORY OF THE SOFTWARE
+==========================
+
+Python was created in the early 1990s by Guido van Rossum at Stichting
+Mathematisch Centrum (CWI, see http://www.cwi.nl) in the Netherlands
+as a successor of a language called ABC. Guido remains Python's
+principal author, although it includes many contributions from others.
+
+In 1995, Guido continued his work on Python at the Corporation for
+National Research Initiatives (CNRI, see http://www.cnri.reston.va.us)
+in Reston, Virginia where he released several versions of the
+software.
+
+In May 2000, Guido and the Python core development team moved to
+BeOpen.com to form the BeOpen PythonLabs team. In October of the same
+year, the PythonLabs team moved to Digital Creations, which became
+Zope Corporation. In 2001, the Python Software Foundation (PSF, see
+https://www.python.org/psf/) was formed, a non-profit organization
+created specifically to own Python-related Intellectual Property.
+Zope Corporation was a sponsoring member of the PSF.
+
+All Python releases are Open Source (see http://www.opensource.org for
+the Open Source Definition). Historically, most, but not all, Python
+releases have also been GPL-compatible; the table below summarizes
+the various releases.
+
+ Release Derived Year Owner GPL-
+ from compatible? (1)
+
+ 0.9.0 thru 1.2 1991-1995 CWI yes
+ 1.3 thru 1.5.2 1.2 1995-1999 CNRI yes
+ 1.6 1.5.2 2000 CNRI no
+ 2.0 1.6 2000 BeOpen.com no
+ 1.6.1 1.6 2001 CNRI yes (2)
+ 2.1 2.0+1.6.1 2001 PSF no
+ 2.0.1 2.0+1.6.1 2001 PSF yes
+ 2.1.1 2.1+2.0.1 2001 PSF yes
+ 2.1.2 2.1.1 2002 PSF yes
+ 2.1.3 2.1.2 2002 PSF yes
+ 2.2 and above 2.1.1 2001-now PSF yes
+
+Footnotes:
+
+(1) GPL-compatible doesn't mean that we're distributing Python under
+ the GPL. All Python licenses, unlike the GPL, let you distribute
+ a modified version without making your changes open source. The
+ GPL-compatible licenses make it possible to combine Python with
+ other software that is released under the GPL; the others don't.
+
+(2) According to Richard Stallman, 1.6.1 is not GPL-compatible,
+ because its license has a choice of law clause. According to
+ CNRI, however, Stallman's lawyer has told CNRI's lawyer that 1.6.1
+ is "not incompatible" with the GPL.
+
+Thanks to the many outside volunteers who have worked under Guido's
+direction to make these releases possible.
+
+
+B. TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING PYTHON
+===============================================================
+
+PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
+--------------------------------------------
+
+1. This LICENSE AGREEMENT is between the Python Software Foundation
+("PSF"), and the Individual or Organization ("Licensee") accessing and
+otherwise using this software ("Python") in source or binary form and
+its associated documentation.
+
+2. Subject to the terms and conditions of this License Agreement, PSF hereby
+grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce,
+analyze, test, perform and/or display publicly, prepare derivative works,
+distribute, and otherwise use Python alone or in any derivative version,
+provided, however, that PSF's License Agreement and PSF's notice of copyright,
+i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Python Software Foundation;
+All Rights Reserved" are retained in Python alone or in any derivative version
+prepared by Licensee.
+
+3. In the event Licensee prepares a derivative work that is based on
+or incorporates Python or any part thereof, and wants to make
+the derivative work available to others as provided herein, then
+Licensee hereby agrees to include in any such work a brief summary of
+the changes made to Python.
+
+4. PSF is making Python available to Licensee on an "AS IS"
+basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
+IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
+DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
+FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT
+INFRINGE ANY THIRD PARTY RIGHTS.
+
+5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
+FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
+A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON,
+OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
+
+6. This License Agreement will automatically terminate upon a material
+breach of its terms and conditions.
+
+7. Nothing in this License Agreement shall be deemed to create any
+relationship of agency, partnership, or joint venture between PSF and
+Licensee. This License Agreement does not grant permission to use PSF
+trademarks or trade name in a trademark sense to endorse or promote
+products or services of Licensee, or any third party.
+
+8. By copying, installing or otherwise using Python, Licensee
+agrees to be bound by the terms and conditions of this License
+Agreement.
+
+
+BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0
+-------------------------------------------
+
+BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1
+
+1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an
+office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the
+Individual or Organization ("Licensee") accessing and otherwise using
+this software in source or binary form and its associated
+documentation ("the Software").
+
+2. Subject to the terms and conditions of this BeOpen Python License
+Agreement, BeOpen hereby grants Licensee a non-exclusive,
+royalty-free, world-wide license to reproduce, analyze, test, perform
+and/or display publicly, prepare derivative works, distribute, and
+otherwise use the Software alone or in any derivative version,
+provided, however, that the BeOpen Python License is retained in the
+Software, alone or in any derivative version prepared by Licensee.
+
+3. BeOpen is making the Software available to Licensee on an "AS IS"
+basis. BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
+IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND
+DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
+FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT
+INFRINGE ANY THIRD PARTY RIGHTS.
+
+4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE
+SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS
+AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY
+DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
+
+5. This License Agreement will automatically terminate upon a material
+breach of its terms and conditions.
+
+6. This License Agreement shall be governed by and interpreted in all
+respects by the law of the State of California, excluding conflict of
+law provisions. Nothing in this License Agreement shall be deemed to
+create any relationship of agency, partnership, or joint venture
+between BeOpen and Licensee. This License Agreement does not grant
+permission to use BeOpen trademarks or trade names in a trademark
+sense to endorse or promote products or services of Licensee, or any
+third party. As an exception, the "BeOpen Python" logos available at
+http://www.pythonlabs.com/logos.html may be used according to the
+permissions granted on that web page.
+
+7. By copying, installing or otherwise using the software, Licensee
+agrees to be bound by the terms and conditions of this License
+Agreement.
+
+
+CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1
+---------------------------------------
+
+1. This LICENSE AGREEMENT is between the Corporation for National
+Research Initiatives, having an office at 1895 Preston White Drive,
+Reston, VA 20191 ("CNRI"), and the Individual or Organization
+("Licensee") accessing and otherwise using Python 1.6.1 software in
+source or binary form and its associated documentation.
+
+2. Subject to the terms and conditions of this License Agreement, CNRI
+hereby grants Licensee a nonexclusive, royalty-free, world-wide
+license to reproduce, analyze, test, perform and/or display publicly,
+prepare derivative works, distribute, and otherwise use Python 1.6.1
+alone or in any derivative version, provided, however, that CNRI's
+License Agreement and CNRI's notice of copyright, i.e., "Copyright (c)
+1995-2001 Corporation for National Research Initiatives; All Rights
+Reserved" are retained in Python 1.6.1 alone or in any derivative
+version prepared by Licensee. Alternately, in lieu of CNRI's License
+Agreement, Licensee may substitute the following text (omitting the
+quotes): "Python 1.6.1 is made available subject to the terms and
+conditions in CNRI's License Agreement. This Agreement together with
+Python 1.6.1 may be located on the Internet using the following
+unique, persistent identifier (known as a handle): 1895.22/1013. This
+Agreement may also be obtained from a proxy server on the Internet
+using the following URL: http://hdl.handle.net/1895.22/1013".
+
+3. In the event Licensee prepares a derivative work that is based on
+or incorporates Python 1.6.1 or any part thereof, and wants to make
+the derivative work available to others as provided herein, then
+Licensee hereby agrees to include in any such work a brief summary of
+the changes made to Python 1.6.1.
+
+4. CNRI is making Python 1.6.1 available to Licensee on an "AS IS"
+basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
+IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND
+DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
+FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6.1 WILL NOT
+INFRINGE ANY THIRD PARTY RIGHTS.
+
+5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
+1.6.1 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
+A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1,
+OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
+
+6. This License Agreement will automatically terminate upon a material
+breach of its terms and conditions.
+
+7. This License Agreement shall be governed by the federal
+intellectual property law of the United States, including without
+limitation the federal copyright law, and, to the extent such
+U.S. federal law does not apply, by the law of the Commonwealth of
+Virginia, excluding Virginia's conflict of law provisions.
+Notwithstanding the foregoing, with regard to derivative works based
+on Python 1.6.1 that incorporate non-separable material that was
+previously distributed under the GNU General Public License (GPL), the
+law of the Commonwealth of Virginia shall govern this License
+Agreement only as to issues arising under or with respect to
+Paragraphs 4, 5, and 7 of this License Agreement. Nothing in this
+License Agreement shall be deemed to create any relationship of
+agency, partnership, or joint venture between CNRI and Licensee. This
+License Agreement does not grant permission to use CNRI trademarks or
+trade name in a trademark sense to endorse or promote products or
+services of Licensee, or any third party.
+
+8. By clicking on the "ACCEPT" button where indicated, or by copying,
+installing or otherwise using Python 1.6.1, Licensee agrees to be
+bound by the terms and conditions of this License Agreement.
+
+ ACCEPT
+
+
+CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2
+--------------------------------------------------
+
+Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam,
+The Netherlands. All rights reserved.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Stichting Mathematisch
+Centrum or CWI not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission.
+
+STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
+THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
+FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/contrib/tools/python/src/Include/pyconfig.win32.h b/contrib/tools/python/src/Include/pyconfig.win32.h
index c16b8187da..3640ccd81a 100644
--- a/contrib/tools/python/src/Include/pyconfig.win32.h
+++ b/contrib/tools/python/src/Include/pyconfig.win32.h
@@ -326,8 +326,8 @@ typedef int pid_t;
# define PY_ULLONG_MAX _UI64_MAX
#endif
-#define Py_NO_ENABLE_SHARED 1
-
+#define Py_NO_ENABLE_SHARED 1
+
/* For Windows the Python core is in a DLL by default. Test
Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
#if !defined(MS_NO_COREDLL) && !defined(Py_NO_ENABLE_SHARED)
diff --git a/contrib/tools/python/ya.make b/contrib/tools/python/ya.make
index 8e1c3f7e35..fc95aaca64 100644
--- a/contrib/tools/python/ya.make
+++ b/contrib/tools/python/ya.make
@@ -2,8 +2,8 @@ PROGRAM(python)
OWNER(g:contrib orivej)
-LICENSE(PSF-2.0)
-
+LICENSE(PSF-2.0)
+
VERSION(2.7.16)
ORIGINAL_SOURCE(https://github.com/python/cpython)
diff --git a/contrib/tools/python3/src/Include/pytime.h b/contrib/tools/python3/src/Include/pytime.h
index cc6e303689..2b9cbd06c3 100644
--- a/contrib/tools/python3/src/Include/pytime.h
+++ b/contrib/tools/python3/src/Include/pytime.h
@@ -5,8 +5,8 @@
#include "pyconfig.h" /* include for defines */
#include "object.h"
-struct timeval;
-
+struct timeval;
+
/**************************************************************************
Symbols and macros to supply platform-independent interfaces to time related
functions and constants
diff --git a/contrib/tools/python3/src/Modules/_pickle.c b/contrib/tools/python3/src/Modules/_pickle.c
index 703488d713..30bb5c0d75 100644
--- a/contrib/tools/python3/src/Modules/_pickle.c
+++ b/contrib/tools/python3/src/Modules/_pickle.c
@@ -39,11 +39,11 @@ enum opcode {
POP = '0',
POP_MARK = '1',
DUP = '2',
- FLOAT_ = 'F',
- INT_ = 'I',
+ FLOAT_ = 'F',
+ INT_ = 'I',
BININT = 'J',
BININT1 = 'K',
- LONG_ = 'L',
+ LONG_ = 'L',
BININT2 = 'M',
NONE = 'N',
PERSID = 'P',
@@ -2120,7 +2120,7 @@ save_long(PicklerObject *self, PyObject *obj)
}
}
else {
- sprintf(pdata, "%c%ld\n", INT_, val);
+ sprintf(pdata, "%c%ld\n", INT_, val);
len = strlen(pdata);
}
if (_Pickler_Write(self, pdata, len) < 0)
@@ -2208,7 +2208,7 @@ save_long(PicklerObject *self, PyObject *obj)
goto error;
}
else {
- const char long_op = LONG_;
+ const char long_op = LONG_;
const char *string;
/* proto < 2: write the repr and newline. This is quadratic-time (in
@@ -2254,7 +2254,7 @@ save_float(PicklerObject *self, PyObject *obj)
else {
int result = -1;
char *buf = NULL;
- char op = FLOAT_;
+ char op = FLOAT_;
if (_Pickler_Write(self, &op, 1) < 0)
goto done;
@@ -6923,11 +6923,11 @@ load(UnpicklerObject *self)
OP(BININT, load_binint)
OP(BININT1, load_binint1)
OP(BININT2, load_binint2)
- OP(INT_, load_int)
- OP(LONG_, load_long)
+ OP(INT_, load_int)
+ OP(LONG_, load_long)
OP_ARG(LONG1, load_counted_long, 1)
OP_ARG(LONG4, load_counted_long, 4)
- OP(FLOAT_, load_float)
+ OP(FLOAT_, load_float)
OP(BINFLOAT, load_binfloat)
OP_ARG(SHORT_BINBYTES, load_counted_binbytes, 1)
OP_ARG(BINBYTES, load_counted_binbytes, 4)
diff --git a/contrib/tools/python3/src/Modules/_tracemalloc.c b/contrib/tools/python3/src/Modules/_tracemalloc.c
index cbd6149bb8..4c8f3c4cd8 100644
--- a/contrib/tools/python3/src/Modules/_tracemalloc.c
+++ b/contrib/tools/python3/src/Modules/_tracemalloc.c
@@ -53,7 +53,7 @@ static PyThread_type_lock tables_lock;
/* Pack the frame_t structure to reduce the memory footprint on 64-bit
architectures: 12 bytes instead of 16. */
typedef struct
-#if defined(__GNUC__) || defined(__clang__)
+#if defined(__GNUC__) || defined(__clang__)
__attribute__((packed))
#elif defined(_MSC_VER)
#pragma pack(push, 4)
@@ -64,7 +64,7 @@ __attribute__((packed))
PyObject *filename;
unsigned int lineno;
} frame_t;
-#if defined(_MSC_VER) && !defined(__clang__)
+#if defined(_MSC_VER) && !defined(__clang__)
#pragma pack(pop)
#endif
diff --git a/contrib/tools/python3/src/ya.make b/contrib/tools/python3/src/ya.make
index 39addb3930..64637cd287 100644
--- a/contrib/tools/python3/src/ya.make
+++ b/contrib/tools/python3/src/ya.make
@@ -20,10 +20,10 @@ CFLAGS(
-DPy_BUILD_CORE
)
-IF (CLANG_CL)
- CFLAGS(-Wno-invalid-token-paste)
-ENDIF()
-
+IF (CLANG_CL)
+ CFLAGS(-Wno-invalid-token-paste)
+ENDIF()
+
IF (OS_DARWIN)
LDFLAGS(
-framework CoreFoundation
diff --git a/contrib/tools/yasm/config-osx-linux.h b/contrib/tools/yasm/config-osx-linux.h
index 2454587e30..7096e2a4c9 100644
--- a/contrib/tools/yasm/config-osx-linux.h
+++ b/contrib/tools/yasm/config-osx-linux.h
@@ -1,48 +1,48 @@
-/* config.h. Generated by cmake from config.h.cmake */
-
-#define CMAKE_BUILD 1
-
-/* Define if shared libs are being built */
-/* #undef BUILD_SHARED_LIBS */
-
-/* Define if messsage translations are enabled */
-/* #undef ENABLE_NLS */
-
-/* */
-#undef HAVE_GETTEXT
-
-/* Define to 1 if you have the <libgen.h> header file. */
-#define HAVE_LIBGEN_H 1
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H 1
-
-/* Define to 1 if you have the <direct.h> header file. */
-/* #undef HAVE_DIRECT_H */
-
-/* Define to 1 if you have the `getcwd' function. */
-#define HAVE_GETCWD 1
-
-/* Define to 1 if you have the `toascii' function. */
-#define HAVE_TOASCII 1
-
-/* Name of package */
-#define PACKAGE "yasm"
-
-/* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT "bug-yasm@tortall.net"
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME "yasm"
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "yasm 1.3.0"
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION "1.3.0"
-
-#define VERSION PACKAGE_VERSION
-
-/* Command name to run C preprocessor */
-#define CPP_PROG "/usr/bin/cpp"
-
+/* config.h. Generated by cmake from config.h.cmake */
+
+#define CMAKE_BUILD 1
+
+/* Define if shared libs are being built */
+/* #undef BUILD_SHARED_LIBS */
+
+/* Define if messsage translations are enabled */
+/* #undef ENABLE_NLS */
+
+/* */
+#undef HAVE_GETTEXT
+
+/* Define to 1 if you have the <libgen.h> header file. */
+#define HAVE_LIBGEN_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the <direct.h> header file. */
+/* #undef HAVE_DIRECT_H */
+
+/* Define to 1 if you have the `getcwd' function. */
+#define HAVE_GETCWD 1
+
+/* Define to 1 if you have the `toascii' function. */
+#define HAVE_TOASCII 1
+
+/* Name of package */
+#define PACKAGE "yasm"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "bug-yasm@tortall.net"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "yasm"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "yasm 1.3.0"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "1.3.0"
+
+#define VERSION PACKAGE_VERSION
+
+/* Command name to run C preprocessor */
+#define CPP_PROG "/usr/bin/cpp"
+
diff --git a/contrib/tools/yasm/config-win.h b/contrib/tools/yasm/config-win.h
index de1c6b596b..b924e3ebfd 100644
--- a/contrib/tools/yasm/config-win.h
+++ b/contrib/tools/yasm/config-win.h
@@ -1,48 +1,48 @@
-/* config.h. Generated by cmake from config.h.cmake */
-
-#define CMAKE_BUILD 1
-
-/* Define if shared libs are being built */
-/* #undef BUILD_SHARED_LIBS */
-
-/* Define if messsage translations are enabled */
-/* #undef ENABLE_NLS */
-
-/* */
-#undef HAVE_GETTEXT
-
-/* Define to 1 if you have the <libgen.h> header file. */
-/* #undef HAVE_LIBGEN_H */
-
-/* Define to 1 if you have the <unistd.h> header file. */
-/* #undef HAVE_UNISTD_H */
-
-/* Define to 1 if you have the <direct.h> header file. */
-#define HAVE_DIRECT_H 1
-
-/* Define to 1 if you have the `getcwd' function. */
-#define HAVE_GETCWD 1
-
-/* Define to 1 if you have the `toascii' function. */
-/* #undef HAVE_TOASCII */
-
-/* Name of package */
-#define PACKAGE "yasm"
-
-/* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT "bug-yasm@tortall.net"
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME "yasm"
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "yasm 1.3.0"
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION "1.3.0"
-
-#define VERSION PACKAGE_VERSION
-
-/* Command name to run C preprocessor */
-#define CPP_PROG "CPP_PROG-NOTFOUND"
-
+/* config.h. Generated by cmake from config.h.cmake */
+
+#define CMAKE_BUILD 1
+
+/* Define if shared libs are being built */
+/* #undef BUILD_SHARED_LIBS */
+
+/* Define if messsage translations are enabled */
+/* #undef ENABLE_NLS */
+
+/* */
+#undef HAVE_GETTEXT
+
+/* Define to 1 if you have the <libgen.h> header file. */
+/* #undef HAVE_LIBGEN_H */
+
+/* Define to 1 if you have the <unistd.h> header file. */
+/* #undef HAVE_UNISTD_H */
+
+/* Define to 1 if you have the <direct.h> header file. */
+#define HAVE_DIRECT_H 1
+
+/* Define to 1 if you have the `getcwd' function. */
+#define HAVE_GETCWD 1
+
+/* Define to 1 if you have the `toascii' function. */
+/* #undef HAVE_TOASCII */
+
+/* Name of package */
+#define PACKAGE "yasm"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "bug-yasm@tortall.net"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "yasm"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "yasm 1.3.0"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "1.3.0"
+
+#define VERSION PACKAGE_VERSION
+
+/* Command name to run C preprocessor */
+#define CPP_PROG "CPP_PROG-NOTFOUND"
+
diff --git a/contrib/tools/yasm/config.h b/contrib/tools/yasm/config.h
index e7ff270511..862e891cbd 100644
--- a/contrib/tools/yasm/config.h
+++ b/contrib/tools/yasm/config.h
@@ -1,7 +1,7 @@
-#if defined(__APPLE__) && defined(__x86_64__)
-# include "config-osx-linux.h"
-#elif defined(_MSC_VER) && defined(_M_X64)
-# include "config-win.h"
-#else
-# include "config-osx-linux.h"
-#endif
+#if defined(__APPLE__) && defined(__x86_64__)
+# include "config-osx-linux.h"
+#elif defined(_MSC_VER) && defined(_M_X64)
+# include "config-win.h"
+#else
+# include "config-osx-linux.h"
+#endif
diff --git a/contrib/tools/yasm/frontends/tasm/license.c b/contrib/tools/yasm/frontends/tasm/license.c
index 1259971244..35c5a04137 100644
--- a/contrib/tools/yasm/frontends/tasm/license.c
+++ b/contrib/tools/yasm/frontends/tasm/license.c
@@ -1,65 +1,65 @@
-/* This file auto-generated from COPYING by genstring.py - don't edit it */
-
-static const char* license_msg[] = {
- "Yasm is Copyright (c) 2001-2014 Peter Johnson and other Yasm developers.",
- "",
- "Yasm developers and/or contributors include:",
- "Peter Johnson",
- "Michael Urman",
- "Brian Gladman (Visual Studio build files, other fixes)",
- "Stanislav Karchebny (options parser)",
- "Mathieu Monnier (SSE4 instruction patches, NASM preprocessor additions)",
- "Anonymous \"NASM64\" developer (NASM preprocessor fixes)",
- "Stephen Polkowski (x86 instruction patches)",
- "Henryk Richter (Mach-O object format)",
- "Ben Skeggs (patches, bug reports)",
- "Alexei Svitkine (GAS preprocessor)",
- "Samuel Thibault (TASM parser and frontend)",
- "",
- "-----------------------------------",
- "Yasm licensing overview and summary",
- "-----------------------------------",
- "",
- "Note: This document does not provide legal advice nor is it the actual",
- "license of any part of Yasm. See the individual licenses for complete",
- "details. Consult a lawyer for legal advice.",
- "",
- "The primary license of Yasm is the 2-clause BSD license. Please use this",
- "license if you plan on submitting code to the project.",
- "",
- "Yasm has absolutely no warranty; not even for merchantibility or fitness",
- "for a particular purpose.",
- "",
- "-------",
- "Libyasm",
- "-------",
- "Libyasm is 2-clause or 3-clause BSD licensed, with the exception of",
- "bitvect, which is triple-licensed under the Artistic license, GPL, and",
- "LGPL. Libyasm is thus GPL and LGPL compatible. In addition, this also",
- "means that libyasm is free for binary-only distribution as long as the",
- "terms of the 3-clause BSD license and Artistic license (as it applies to",
- "bitvect) are fulfilled.",
- "",
- "-------",
- "Modules",
- "-------",
- "The modules are 2-clause or 3-clause BSD licensed.",
- "",
- "---------",
- "Frontends",
- "---------",
- "The frontends are 2-clause BSD licensed.",
- "",
- "-------------",
- "License Texts",
- "-------------",
- "The full text of all licenses are provided in separate files in the source",
- "distribution. Each source file may include the entire license (in the case",
- "of the BSD and Artistic licenses), or may reference the GPL or LGPL license",
- "file.",
- "",
- "BSD.txt - 2-clause and 3-clause BSD licenses",
- "Artistic.txt - Artistic license",
- "GNU_GPL-2.0 - GNU General Public License",
- "GNU_LGPL-2.0 - GNU Library General Public License",
-};
+/* This file auto-generated from COPYING by genstring.py - don't edit it */
+
+static const char* license_msg[] = {
+ "Yasm is Copyright (c) 2001-2014 Peter Johnson and other Yasm developers.",
+ "",
+ "Yasm developers and/or contributors include:",
+ "Peter Johnson",
+ "Michael Urman",
+ "Brian Gladman (Visual Studio build files, other fixes)",
+ "Stanislav Karchebny (options parser)",
+ "Mathieu Monnier (SSE4 instruction patches, NASM preprocessor additions)",
+ "Anonymous \"NASM64\" developer (NASM preprocessor fixes)",
+ "Stephen Polkowski (x86 instruction patches)",
+ "Henryk Richter (Mach-O object format)",
+ "Ben Skeggs (patches, bug reports)",
+ "Alexei Svitkine (GAS preprocessor)",
+ "Samuel Thibault (TASM parser and frontend)",
+ "",
+ "-----------------------------------",
+ "Yasm licensing overview and summary",
+ "-----------------------------------",
+ "",
+ "Note: This document does not provide legal advice nor is it the actual",
+ "license of any part of Yasm. See the individual licenses for complete",
+ "details. Consult a lawyer for legal advice.",
+ "",
+ "The primary license of Yasm is the 2-clause BSD license. Please use this",
+ "license if you plan on submitting code to the project.",
+ "",
+ "Yasm has absolutely no warranty; not even for merchantibility or fitness",
+ "for a particular purpose.",
+ "",
+ "-------",
+ "Libyasm",
+ "-------",
+ "Libyasm is 2-clause or 3-clause BSD licensed, with the exception of",
+ "bitvect, which is triple-licensed under the Artistic license, GPL, and",
+ "LGPL. Libyasm is thus GPL and LGPL compatible. In addition, this also",
+ "means that libyasm is free for binary-only distribution as long as the",
+ "terms of the 3-clause BSD license and Artistic license (as it applies to",
+ "bitvect) are fulfilled.",
+ "",
+ "-------",
+ "Modules",
+ "-------",
+ "The modules are 2-clause or 3-clause BSD licensed.",
+ "",
+ "---------",
+ "Frontends",
+ "---------",
+ "The frontends are 2-clause BSD licensed.",
+ "",
+ "-------------",
+ "License Texts",
+ "-------------",
+ "The full text of all licenses are provided in separate files in the source",
+ "distribution. Each source file may include the entire license (in the case",
+ "of the BSD and Artistic licenses), or may reference the GPL or LGPL license",
+ "file.",
+ "",
+ "BSD.txt - 2-clause and 3-clause BSD licenses",
+ "Artistic.txt - Artistic license",
+ "GNU_GPL-2.0 - GNU General Public License",
+ "GNU_LGPL-2.0 - GNU Library General Public License",
+};
diff --git a/contrib/tools/yasm/frontends/tasm/tasm-options.c b/contrib/tools/yasm/frontends/tasm/tasm-options.c
index 3baee28fbb..57c3bdfd15 100644
--- a/contrib/tools/yasm/frontends/tasm/tasm-options.c
+++ b/contrib/tools/yasm/frontends/tasm/tasm-options.c
@@ -1,127 +1,127 @@
-/*
- * Generic Options Support Header File
- *
- * Copyright (c) 2001 Stanislav Karchebny <berk@madfire.net>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the author nor the names of other contributors
- * may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-#include <ctype.h>
-
-#include "tasm-options.h"
-
-
-#ifdef __DEBUG__
-#define DEBUG(x) fprintf ## x ;
-#else
-#define DEBUG(x)
-#endif
-
-
-/* Options Parser */
-int
-parse_cmdline(int argc, char **argv, opt_option *options, size_t nopts,
- void (*print_error) (const char *fmt, ...))
-{
- int errors = 0, warnings = 0;
- size_t i;
- int got_it;
-
- DEBUG((stderr, "parse_cmdline: entered\n"));
-
- fail:
- while (--argc) {
- argv++;
-
- if (argv[0][0] == '/' && argv[0][1]) { /* opt */
- got_it = 0;
- for (i = 0; i < nopts; i++) {
- char *cmd = &argv[0][1];
- size_t len = strlen(options[i].opt);
- if (yasm__strncasecmp(cmd, options[i].opt, len) == 0) {
- char *param;
-
- param = &argv[0][1+len];
- if (options[i].takes_param) {
- if (param[0] == '\0') {
- print_error(
- _("option `-%c' needs an argument!"),
- options[i].opt);
- errors++;
- goto fail;
- } else {
- argc--;
- argv++;
- }
- } else
- param = NULL;
-
- if (!options[i].handler(cmd, param, options[i].extra))
- got_it = 1;
- break;
- }
- }
- if (!got_it) {
- print_error(_("warning: unrecognized option `%s'"),
- argv[0]);
- warnings++;
- }
- } else { /* not an option, then it should be a file or something */
-
- if (not_an_option_handler(argv[0]))
- errors++;
- }
- }
-
- DEBUG((stderr, "parse_cmdline: finished\n"));
- return errors;
-}
-
-void
-help_msg(const char *msg, const char *tail, opt_option *options, size_t nopts)
-{
- char optbuf[100];
- size_t i;
-
- printf("%s", gettext(msg));
-
- for (i = 0; i < nopts; i++) {
- optbuf[0] = 0;
-
- if (options[i].takes_param) {
- if (options[i].opt)
- sprintf(optbuf, "/%s <%s>", options[i].opt,
- options[i].param_desc ? options[i].
- param_desc : _("param"));
- } else {
- if (options[i].opt)
- sprintf(optbuf, "/%s", options[i].opt);
- }
-
- printf(" %-22s %s\n", optbuf, gettext(options[i].description));
- }
-
- printf("%s", gettext(tail));
-}
+/*
+ * Generic Options Support Header File
+ *
+ * Copyright (c) 2001 Stanislav Karchebny <berk@madfire.net>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the author nor the names of other contributors
+ * may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+#include <ctype.h>
+
+#include "tasm-options.h"
+
+
+#ifdef __DEBUG__
+#define DEBUG(x) fprintf ## x ;
+#else
+#define DEBUG(x)
+#endif
+
+
+/* Options Parser */
+int
+parse_cmdline(int argc, char **argv, opt_option *options, size_t nopts,
+ void (*print_error) (const char *fmt, ...))
+{
+ int errors = 0, warnings = 0;
+ size_t i;
+ int got_it;
+
+ DEBUG((stderr, "parse_cmdline: entered\n"));
+
+ fail:
+ while (--argc) {
+ argv++;
+
+ if (argv[0][0] == '/' && argv[0][1]) { /* opt */
+ got_it = 0;
+ for (i = 0; i < nopts; i++) {
+ char *cmd = &argv[0][1];
+ size_t len = strlen(options[i].opt);
+ if (yasm__strncasecmp(cmd, options[i].opt, len) == 0) {
+ char *param;
+
+ param = &argv[0][1+len];
+ if (options[i].takes_param) {
+ if (param[0] == '\0') {
+ print_error(
+ _("option `-%c' needs an argument!"),
+ options[i].opt);
+ errors++;
+ goto fail;
+ } else {
+ argc--;
+ argv++;
+ }
+ } else
+ param = NULL;
+
+ if (!options[i].handler(cmd, param, options[i].extra))
+ got_it = 1;
+ break;
+ }
+ }
+ if (!got_it) {
+ print_error(_("warning: unrecognized option `%s'"),
+ argv[0]);
+ warnings++;
+ }
+ } else { /* not an option, then it should be a file or something */
+
+ if (not_an_option_handler(argv[0]))
+ errors++;
+ }
+ }
+
+ DEBUG((stderr, "parse_cmdline: finished\n"));
+ return errors;
+}
+
+void
+help_msg(const char *msg, const char *tail, opt_option *options, size_t nopts)
+{
+ char optbuf[100];
+ size_t i;
+
+ printf("%s", gettext(msg));
+
+ for (i = 0; i < nopts; i++) {
+ optbuf[0] = 0;
+
+ if (options[i].takes_param) {
+ if (options[i].opt)
+ sprintf(optbuf, "/%s <%s>", options[i].opt,
+ options[i].param_desc ? options[i].
+ param_desc : _("param"));
+ } else {
+ if (options[i].opt)
+ sprintf(optbuf, "/%s", options[i].opt);
+ }
+
+ printf(" %-22s %s\n", optbuf, gettext(options[i].description));
+ }
+
+ printf("%s", gettext(tail));
+}
diff --git a/contrib/tools/yasm/frontends/tasm/tasm-options.h b/contrib/tools/yasm/frontends/tasm/tasm-options.h
index f4bae6aa05..082409fc24 100644
--- a/contrib/tools/yasm/frontends/tasm/tasm-options.h
+++ b/contrib/tools/yasm/frontends/tasm/tasm-options.h
@@ -1,69 +1,69 @@
-/*
- * Generic Options Support Header File
- *
- * Copyright (c) 2001 Stanislav Karchebny <berk@madfire.net>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef TASM_OPTIONS_H
-#define TASM_OPTIONS_H
-
-/* an option structure
- * operate on either -sopt, --lopt, -sopt <val> or --lopt=<val>
- */
-typedef struct opt_option_s
-{
- /* option */
- const char *opt;
-
- /* !=0 if option requires parameter, 0 if not */
- int takes_param;
-
- int (*handler) (char *cmd, /*@null@*/ char *param, int extra);
- int extra; /* extra value for handler */
-
- /* description to use in help_msg() */
- /*@observer@*/ const char *description;
-
- /* optional description for the param taken (NULL if not present) */
- /* (short - will be printed after option sopt/lopt) */
- /*@observer@*/ /*@null@*/ const char *param_desc;
-} opt_option;
-
-/* handle everything that is not an option */
-int not_an_option_handler(char *param);
-
-/* parse command line calling handlers when appropriate
- * argc, argv - pass directly from main(argc,argv)
- * options - array of options
- * nopts - options count
- */
-int parse_cmdline(int argc, char **argv, opt_option *options, size_t nopts,
- void (*print_error) (const char *fmt, ...));
-
-/* display help message msg followed by list of options in options and followed
- * by tail
- */
-void help_msg(const char *msg, const char *tail, opt_option *options,
- size_t nopts);
-
-#endif
+/*
+ * Generic Options Support Header File
+ *
+ * Copyright (c) 2001 Stanislav Karchebny <berk@madfire.net>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef TASM_OPTIONS_H
+#define TASM_OPTIONS_H
+
+/* an option structure
+ * operate on either -sopt, --lopt, -sopt <val> or --lopt=<val>
+ */
+typedef struct opt_option_s
+{
+ /* option */
+ const char *opt;
+
+ /* !=0 if option requires parameter, 0 if not */
+ int takes_param;
+
+ int (*handler) (char *cmd, /*@null@*/ char *param, int extra);
+ int extra; /* extra value for handler */
+
+ /* description to use in help_msg() */
+ /*@observer@*/ const char *description;
+
+ /* optional description for the param taken (NULL if not present) */
+ /* (short - will be printed after option sopt/lopt) */
+ /*@observer@*/ /*@null@*/ const char *param_desc;
+} opt_option;
+
+/* handle everything that is not an option */
+int not_an_option_handler(char *param);
+
+/* parse command line calling handlers when appropriate
+ * argc, argv - pass directly from main(argc,argv)
+ * options - array of options
+ * nopts - options count
+ */
+int parse_cmdline(int argc, char **argv, opt_option *options, size_t nopts,
+ void (*print_error) (const char *fmt, ...));
+
+/* display help message msg followed by list of options in options and followed
+ * by tail
+ */
+void help_msg(const char *msg, const char *tail, opt_option *options,
+ size_t nopts);
+
+#endif
diff --git a/contrib/tools/yasm/frontends/tasm/tasm.c b/contrib/tools/yasm/frontends/tasm/tasm.c
index 45351342f8..58954b6457 100644
--- a/contrib/tools/yasm/frontends/tasm/tasm.c
+++ b/contrib/tools/yasm/frontends/tasm/tasm.c
@@ -1,1009 +1,1009 @@
-/*
- * Program entry point, command line parsing
- *
- * Copyright (C) 2001-2008 Peter Johnson
- * Copyright (C) 2007-2008 Samuel Thibault
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <ctype.h>
-#include <libyasm/compat-queue.h>
-#include <libyasm/bitvect.h>
-#include <libyasm.h>
-
-#ifdef HAVE_LIBGEN_H
-#include <libgen.h>
-#endif
-
-#include "tasm-options.h"
-
-#if defined(CMAKE_BUILD) && defined(BUILD_SHARED_LIBS)
-#include "yasm-plugin.h"
-#endif
-
-#include "license.c"
-
-#define DEFAULT_OBJFMT_MODULE "bin"
-
-#if defined(CMAKE_BUILD) && !defined(BUILD_SHARED_LIBS)
-void yasm_init_plugin(void);
-#endif
-
-/*@null@*/ /*@only@*/ static char *obj_filename = NULL, *in_filename = NULL;
-/*@null@*/ /*@only@*/ static char *list_filename = NULL, *xref_filename = NULL;
-/*@null@*/ /*@only@*/ static char *machine_name = NULL;
-static int special_options = 0;
-static int segment_ordering = 0;
-static int cross_reference = 0;
-static int floating_point = 0;
-static int listing = 0;
-static int expanded_listing = 0;
-static int case_sensitivity = 0;
-static int valid_length = -1;
-/*@null@*/ /*@dependent@*/ static yasm_arch *cur_arch = NULL;
-/*@null@*/ /*@dependent@*/ static const yasm_arch_module *
- cur_arch_module = NULL;
-/*@null@*/ /*@dependent@*/ static const yasm_parser_module *
- cur_parser_module = NULL;
-/*@null@*/ /*@dependent@*/ static yasm_preproc *cur_preproc = NULL;
-/*@null@*/ /*@dependent@*/ static const yasm_preproc_module *
- cur_preproc_module = NULL;
-/*@null@*/ static char *objfmt_keyword = NULL;
-/*@null@*/ /*@dependent@*/ static const yasm_objfmt_module *
- cur_objfmt_module = NULL;
-/*@null@*/ /*@dependent@*/ static const yasm_dbgfmt_module *
- cur_dbgfmt_module = NULL;
-/*@null@*/ /*@dependent@*/ static yasm_listfmt *cur_listfmt = NULL;
-/*@null@*/ /*@dependent@*/ static const yasm_listfmt_module *
- cur_listfmt_module = NULL;
-static int warning_error = 0; /* warnings being treated as errors */
-static FILE *errfile;
-/*@null@*/ /*@only@*/ static char *error_filename = NULL;
-
-/*@null@*/ /*@dependent@*/ static FILE *open_file(const char *filename,
- const char *mode);
-static void check_errors(/*@only@*/ yasm_errwarns *errwarns,
- /*@only@*/ yasm_object *object,
- /*@only@*/ yasm_linemap *linemap);
-static void cleanup(/*@null@*/ /*@only@*/ yasm_object *object);
-
-/* Forward declarations: cmd line parser handlers */
-static int opt_special_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_segment_ordering_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_cross_reference_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_floating_point_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_ignore(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_listing_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_case_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_valid_length_handler(char *cmd, /*@null@*/ char *param, int extra);
-
-static int opt_warning_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_preproc_option(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_exe_handler(char *cmd, /*@null@*/ char *param, int extra);
-
-static /*@only@*/ char *replace_extension(const char *orig, /*@null@*/
- const char *ext, const char *def);
-static void print_error(const char *fmt, ...);
-
-static /*@exits@*/ void handle_yasm_int_error(const char *file,
- unsigned int line,
- const char *message);
-static /*@exits@*/ void handle_yasm_fatal(const char *message, va_list va);
-static const char *handle_yasm_gettext(const char *msgid);
-static void print_yasm_error(const char *filename, unsigned long line,
- const char *msg, /*@null@*/ const char *xref_fn,
- unsigned long xref_line,
- /*@null@*/ const char *xref_msg);
-static void print_yasm_warning(const char *filename, unsigned long line,
- const char *msg);
-
-static void apply_preproc_builtins(void);
-static void apply_preproc_standard_macros(const yasm_stdmac *stdmacs);
-static void apply_preproc_saved_options(void);
-static void print_list_keyword_desc(const char *name, const char *keyword);
-
-/* values for special_options */
-#define SPECIAL_SHOW_HELP 0x01
-#define SPECIAL_SHOW_VERSION 0x02
-#define SPECIAL_SHOW_LICENSE 0x04
-
-#define SEGMENT_ORDERING_ALPHABETIC 0x01
-#define SEGMENT_ORDERING_SOURCE 0x02
-
-#define FP_EMULATED 0x01
-#define FP_REAL 0x02
-
-#define CASE_ALL 0x01
-#define CASE_GLOBALS 0x02
-#define CASE_NONE 0x04
-
-#define DEBUG_FULL 0x01
-#define DEBUG_LINES 0x02
-#define DEBUG_NONE 0x04
-
-/* command line options */
-static opt_option options[] =
-{
- { "version", 0, opt_special_handler, SPECIAL_SHOW_VERSION,
- N_("show version text"), NULL },
- { "license", 0, opt_special_handler, SPECIAL_SHOW_LICENSE,
- N_("show license text"), NULL },
- { "a", 0, opt_segment_ordering_handler, SEGMENT_ORDERING_ALPHABETIC,
- N_("Alphabetic segment ordering"), NULL },
- { "s", 0, opt_segment_ordering_handler, SEGMENT_ORDERING_SOURCE,
- N_("Source segment ordering"), NULL },
-
- { "c", 0, opt_cross_reference_handler, 0,
- N_("Generate cross-reference in listing"), NULL },
-
- { "d", 1, opt_preproc_option, 2,
- N_("pre-define a macro, optionally to value"), N_("macro[=value]") },
-
- { "e", 0, opt_floating_point_handler, FP_EMULATED,
- N_("Emulated floating-point instructions (not supported)"), NULL },
- { "r", 0, opt_floating_point_handler, FP_REAL,
- N_("Real floating-point instructions"), NULL },
-
- { "h", 0, opt_special_handler, SPECIAL_SHOW_HELP,
- N_("show help text"), NULL },
- { "?", 0, opt_special_handler, SPECIAL_SHOW_HELP,
- N_("show help text"), NULL },
-
- { "i", 1, opt_preproc_option, 0,
- N_("add include path"), N_("path") },
-
- { "j", 1, opt_ignore, 0,
- N_("Jam in an assemble directive CMD (eg. /jIDEAL) (not supported)"), NULL },
-
- { "k", 1, opt_ignore, 0,
- N_("Hash table capacity (ignored)"), N_("# symbols") },
-
- { "l", 0, opt_listing_handler, 0,
- N_("Generate listing"), N_("l=normal listing, la=expanded listing") },
-
- { "ml", 0, opt_case_handler, CASE_ALL,
- N_("Case sensitivity on all symbols"), NULL },
- { "mx", 0, opt_case_handler, CASE_GLOBALS,
- N_("Case sensitivity on global symbols"), NULL },
- { "mu", 0, opt_case_handler, CASE_NONE,
- N_("No case sensitivity on symbols"), NULL },
- { "mv", 0, opt_valid_length_handler, 0,
- N_("Set maximum valid length for symbols"), N_("length") },
-
- { "m", 1, opt_ignore, 0,
- N_("Allow multiple passes to resolve forward reference (ignored)"), N_("number of passes") },
-
- { "n", 0, opt_ignore, 0,
- N_("Suppress symbol tables in listing"), NULL },
-
- { "o", 0, opt_ignore, 0,
- N_("Object code"), N_("os: standard, o: standard w/overlays, op: Phar Lap, oi: IBM") },
-
- { "p", 0, opt_ignore, 0,
- N_("Check for code segment overrides in protected mode"), NULL },
- { "q", 0, opt_ignore, 0,
- N_("Suppress OBJ records not needed for linking (ignored)"), NULL },
- { "t", 0, opt_ignore, 0,
- N_("Suppress messages if successful assembly"), NULL },
- { "u", 0, opt_ignore, 0,
- N_("Set version emulation"), N_("Version") },
- { "w", 1, opt_warning_handler, 0,
- N_("Set warning level"), N_("w0=none, w1=w2=warnings on, w-xxx/w+xxx=disable/enable warning xxx") },
- { "x", 0, opt_ignore, 0,
- N_("Include false conditionals in listing"), NULL },
- { "zi", 0, opt_ignore, DEBUG_FULL,
- N_("Full debug info"), NULL },
- { "zd", 0, opt_ignore, DEBUG_LINES,
- N_("Line numbers debug info"), NULL },
- { "zn", 0, opt_ignore, DEBUG_NONE,
- N_("No debug info"), NULL },
- { "z", 0, opt_ignore, 0,
- N_("Display source line with error message (ignored)"), NULL },
-
- { "b", 0, opt_exe_handler, 0,
- N_("Build a (very) basic .exe file"), NULL },
-};
-
-/* version message */
-/*@observer@*/ static const char *version_msg[] = {
- PACKAGE_STRING,
- "Compiled on " __DATE__ ".",
- "Copyright (c) 2001-2010 Peter Johnson and other Yasm developers.",
- "Run yasm --license for licensing overview and summary."
-};
-
-/* help messages */
-/*@observer@*/ static const char *help_head = N_(
- "usage: tasm [option]* source [,object] [,listing] [,xref] \n"
- "Options:\n");
-/*@observer@*/ static const char *help_tail = N_(
- "\n"
- "source is asm source to be assembled.\n"
- "\n"
- "Sample invocation:\n"
- " tasm /zi source.asm\n"
- "\n"
- "Report bugs to bug-yasm@tortall.net\n");
-
-/* parsed command line storage until appropriate modules have been loaded */
-typedef STAILQ_HEAD(constcharparam_head, constcharparam) constcharparam_head;
-
-typedef struct constcharparam {
- STAILQ_ENTRY(constcharparam) link;
- const char *param;
- int id;
-} constcharparam;
-
-static constcharparam_head preproc_options;
-
-static int
-do_assemble(void)
-{
- yasm_object *object;
- const char *base_filename;
- /*@null@*/ FILE *obj = NULL;
- yasm_arch_create_error arch_error;
- yasm_linemap *linemap;
- yasm_errwarns *errwarns = yasm_errwarns_create();
- int i, matched;
-
- /* Initialize line map */
- linemap = yasm_linemap_create();
- yasm_linemap_set(linemap, in_filename, 0, 1, 1);
-
- /* determine the object filename if not specified */
- if (!obj_filename) {
- if (in_filename == NULL)
- /* Default to yasm.out if no obj filename specified */
- obj_filename = yasm__xstrdup("yasm.out");
- else {
- /* replace (or add) extension to base filename */
- yasm__splitpath(in_filename, &base_filename);
- if (base_filename[0] == '\0')
- obj_filename = yasm__xstrdup("yasm.out");
- else
- obj_filename = replace_extension(base_filename,
- "obj",
- "yasm.out");
- }
- }
-
- cur_arch = yasm_arch_create(cur_arch_module, machine_name,
- cur_parser_module->keyword, &arch_error);
- if (!cur_arch) {
- switch (arch_error) {
- case YASM_ARCH_CREATE_BAD_MACHINE:
- print_error(_("%s: `%s' is not a valid %s for %s `%s'"),
- _("FATAL"), machine_name, _("machine"),
- _("architecture"), cur_arch_module->keyword);
- break;
- case YASM_ARCH_CREATE_BAD_PARSER:
- print_error(_("%s: `%s' is not a valid %s for %s `%s'"),
- _("FATAL"), cur_parser_module->keyword,
- _("parser"), _("architecture"),
- cur_arch_module->keyword);
- break;
- default:
- print_error(_("%s: unknown architecture error"), _("FATAL"));
- }
-
- return EXIT_FAILURE;
- }
-
- /* Create object */
- object = yasm_object_create(in_filename, obj_filename, cur_arch,
- cur_objfmt_module, cur_dbgfmt_module);
- if (!object) {
- yasm_error_class eclass;
- unsigned long xrefline;
- /*@only@*/ /*@null@*/ char *estr, *xrefstr;
-
- yasm_error_fetch(&eclass, &estr, &xrefline, &xrefstr);
- print_error("%s: %s", _("FATAL"), estr);
- yasm_xfree(estr);
- yasm_xfree(xrefstr);
-
- cleanup(object);
- return EXIT_FAILURE;
- }
-
- /* Get a fresh copy of objfmt_module as it may have changed. */
- cur_objfmt_module = ((yasm_objfmt_base *)object->objfmt)->module;
-
- /* Check to see if the requested preprocessor is in the allowed list
- * for the active parser.
- */
- matched = 0;
- for (i=0; cur_parser_module->preproc_keywords[i]; i++)
- if (yasm__strcasecmp(cur_parser_module->preproc_keywords[i],
- cur_preproc_module->keyword) == 0)
- matched = 1;
- if (!matched) {
- print_error(_("%s: `%s' is not a valid %s for %s `%s'"), _("FATAL"),
- cur_preproc_module->keyword, _("preprocessor"),
- _("parser"), cur_parser_module->keyword);
- cleanup(object);
- return EXIT_FAILURE;
- }
-
- cur_preproc = yasm_preproc_create(cur_preproc_module, in_filename,
- object->symtab, linemap, errwarns);
-
- apply_preproc_builtins();
- apply_preproc_standard_macros(cur_parser_module->stdmacs);
- apply_preproc_standard_macros(cur_objfmt_module->stdmacs);
- apply_preproc_saved_options();
-
- /* Get initial x86 BITS setting from object format */
- if (strcmp(cur_arch_module->keyword, "x86") == 0) {
- yasm_arch_set_var(cur_arch, "mode_bits",
- cur_objfmt_module->default_x86_mode_bits);
- }
-
- /* Parse! */
- cur_parser_module->do_parse(object, cur_preproc, list_filename != NULL,
- linemap, errwarns);
-
- check_errors(errwarns, object, linemap);
-
- /* Finalize parse */
- yasm_object_finalize(object, errwarns);
- check_errors(errwarns, object, linemap);
-
- /* Optimize */
- yasm_object_optimize(object, errwarns);
- check_errors(errwarns, object, linemap);
-
- /* generate any debugging information */
- yasm_dbgfmt_generate(object, linemap, errwarns);
- check_errors(errwarns, object, linemap);
-
- /* open the object file for output (if not already opened by dbg objfmt) */
- if (!obj && strcmp(cur_objfmt_module->keyword, "dbg") != 0) {
- obj = open_file(obj_filename, "wb");
- if (!obj) {
- cleanup(object);
- return EXIT_FAILURE;
- }
- }
-
- /* Write the object file */
- yasm_objfmt_output(object, obj?obj:stderr,
- strcmp(cur_dbgfmt_module->keyword, "null"), errwarns);
-
- /* Close object file */
- if (obj)
- fclose(obj);
-
- /* If we had an error at this point, we also need to delete the output
- * object file (to make sure it's not left newer than the source).
- */
- if (yasm_errwarns_num_errors(errwarns, warning_error) > 0)
- remove(obj_filename);
- check_errors(errwarns, object, linemap);
-
- /* Open and write the list file */
- if (list_filename) {
- FILE *list = open_file(list_filename, "wt");
- if (!list) {
- cleanup(object);
- return EXIT_FAILURE;
- }
- /* Initialize the list format */
- cur_listfmt = yasm_listfmt_create(cur_listfmt_module, in_filename,
- obj_filename);
- yasm_listfmt_output(cur_listfmt, list, linemap, cur_arch);
- fclose(list);
- }
-
- yasm_errwarns_output_all(errwarns, linemap, warning_error,
- print_yasm_error, print_yasm_warning);
-
- yasm_linemap_destroy(linemap);
- yasm_errwarns_destroy(errwarns);
- cleanup(object);
- return EXIT_SUCCESS;
-}
-
-/* main function */
-/*@-globstate -unrecog@*/
-int
-main(int argc, char *argv[])
-{
- size_t i;
-
- errfile = stderr;
-
-#if defined(HAVE_SETLOCALE) && defined(HAVE_LC_MESSAGES)
- setlocale(LC_MESSAGES, "");
-#endif
-#if defined(LOCALEDIR)
- bindtextdomain(PACKAGE, LOCALEDIR);
-#endif
- textdomain(PACKAGE);
-
- /* Initialize errwarn handling */
- yasm_internal_error_ = handle_yasm_int_error;
- yasm_fatal = handle_yasm_fatal;
- yasm_gettext_hook = handle_yasm_gettext;
- yasm_errwarn_initialize();
-
- /* Initialize BitVector (needed for intnum/floatnum). */
- if (BitVector_Boot() != ErrCode_Ok) {
- print_error(_("%s: could not initialize BitVector"), _("FATAL"));
- return EXIT_FAILURE;
- }
-
- /* Initialize intnum and floatnum */
- yasm_intnum_initialize();
- yasm_floatnum_initialize();
-
-#ifdef CMAKE_BUILD
- /* Load standard modules */
-#ifdef BUILD_SHARED_LIBS
- if (!load_plugin("yasmstd")) {
- print_error(_("%s: could not load standard modules"), _("FATAL"));
- return EXIT_FAILURE;
- }
-#else
- yasm_init_plugin();
-#endif
-#endif
-
- /* Initialize parameter storage */
- STAILQ_INIT(&preproc_options);
-
- if (parse_cmdline(argc, argv, options, NELEMS(options), print_error))
- return EXIT_FAILURE;
-
- switch (special_options) {
- case SPECIAL_SHOW_HELP:
- /* Does gettext calls internally */
- help_msg(help_head, help_tail, options, NELEMS(options));
- return EXIT_SUCCESS;
- case SPECIAL_SHOW_VERSION:
- for (i=0; i<NELEMS(version_msg); i++)
- printf("%s\n", version_msg[i]);
- return EXIT_SUCCESS;
- case SPECIAL_SHOW_LICENSE:
- for (i=0; i<NELEMS(license_msg); i++)
- printf("%s\n", license_msg[i]);
- return EXIT_SUCCESS;
- }
-
- /* Open error file if specified. */
- if (error_filename) {
- errfile = open_file(error_filename, "wt");
- if (!errfile)
- return EXIT_FAILURE;
- }
-
- /* If not already specified, default to bin as the object format. */
- if (!cur_objfmt_module) {
- if (!objfmt_keyword)
- objfmt_keyword = yasm__xstrdup(DEFAULT_OBJFMT_MODULE);
- cur_objfmt_module = yasm_load_objfmt(objfmt_keyword);
- if (!cur_objfmt_module) {
- print_error(_("%s: could not load default %s"), _("FATAL"),
- _("object format"));
- return EXIT_FAILURE;
- }
- }
-
- /* TASM's architecture is x86 */
- cur_arch_module = yasm_load_arch("x86");
- if (!cur_arch_module) {
- print_error(_("%s: could not load %s"), _("FATAL"),
- _("architecture"));
- return EXIT_FAILURE;
- }
- machine_name =
- yasm__xstrdup(cur_arch_module->default_machine_keyword);
-
- /* Check for arch help */
- if (machine_name && strcmp(machine_name, "help") == 0) {
- const yasm_arch_machine *m = cur_arch_module->machines;
- printf(_("Available %s for %s `%s':\n"), _("machines"),
- _("architecture"), cur_arch_module->keyword);
- while (m->keyword && m->name) {
- print_list_keyword_desc(m->name, m->keyword);
- m++;
- }
- return EXIT_SUCCESS;
- }
-
- cur_parser_module = yasm_load_parser("tasm");
- if (!cur_parser_module) {
- print_error(_("%s: could not load %s"), _("FATAL"),
- _("parser"));
- cleanup(NULL);
- return EXIT_FAILURE;
- }
-
- /* If not already specified, default to the parser's default preproc. */
- if (!cur_preproc_module) {
- cur_preproc_module =
- yasm_load_preproc(cur_parser_module->default_preproc_keyword);
- if (!cur_preproc_module) {
- print_error(_("%s: could not load default %s"), _("FATAL"),
- _("preprocessor"));
- cleanup(NULL);
- return EXIT_FAILURE;
- }
- }
-
- /* Determine input filename and open input file. */
- if (!in_filename) {
- print_error(_("No input files specified"));
- return EXIT_FAILURE;
- }
-
- /* If list file enabled, make sure we have a list format loaded. */
- if (list_filename) {
- /* use nasm as the list format. */
- cur_listfmt_module = yasm_load_listfmt("nasm");
- }
-
- /* If not already specified, default to null as the debug format. */
- if (!cur_dbgfmt_module) {
- cur_dbgfmt_module = yasm_load_dbgfmt("null");
- if (!cur_dbgfmt_module) {
- print_error(_("%s: could not load default %s"), _("FATAL"),
- _("debug format"));
- return EXIT_FAILURE;
- }
- }
-
- return do_assemble();
-}
-/*@=globstate =unrecog@*/
-
-/* Open the object file. Returns 0 on failure. */
-static FILE *
-open_file(const char *filename, const char *mode)
-{
- FILE *f;
-
- f = fopen(filename, mode);
- if (!f)
- print_error(_("could not open file `%s'"), filename);
- return f;
-}
-
-static void
-check_errors(yasm_errwarns *errwarns, yasm_object *object,
- yasm_linemap *linemap)
-{
- if (yasm_errwarns_num_errors(errwarns, warning_error) > 0) {
- yasm_errwarns_output_all(errwarns, linemap, warning_error,
- print_yasm_error, print_yasm_warning);
- yasm_linemap_destroy(linemap);
- yasm_errwarns_destroy(errwarns);
- cleanup(object);
- exit(EXIT_FAILURE);
- }
-}
-
-/* Define DO_FREE to 1 to enable deallocation of all data structures.
- * Useful for detecting memory leaks, but slows down execution unnecessarily
- * (as the OS will free everything we miss here).
- */
-#define DO_FREE 1
-
-/* Cleans up all allocated structures. */
-static void
-cleanup(yasm_object *object)
-{
- if (DO_FREE) {
- if (cur_listfmt)
- yasm_listfmt_destroy(cur_listfmt);
- if (cur_preproc)
- yasm_preproc_destroy(cur_preproc);
- if (object)
- yasm_object_destroy(object);
-
- yasm_floatnum_cleanup();
- yasm_intnum_cleanup();
-
- yasm_errwarn_cleanup();
-
- BitVector_Shutdown();
- }
-
- if (DO_FREE) {
- if (in_filename)
- yasm_xfree(in_filename);
- if (obj_filename)
- yasm_xfree(obj_filename);
- if (list_filename)
- yasm_xfree(list_filename);
- if (xref_filename)
- yasm_xfree(xref_filename);
- if (machine_name)
- yasm_xfree(machine_name);
- if (objfmt_keyword)
- yasm_xfree(objfmt_keyword);
- }
-
- if (errfile != stderr && errfile != stdout)
- fclose(errfile);
-#if defined(CMAKE_BUILD) && defined(BUILD_SHARED_LIBS)
- unload_plugins();
-#endif
-}
-
-/*
- * Command line options handlers
- */
-static char ** const filenames[] = {
- &in_filename, &obj_filename, &list_filename, &xref_filename, NULL
-}, ** const * cur_filename = &filenames[0];
-
-static int filename_handler(char *param) {
- if (!*cur_filename) {
- print_error(_("error: too many files on command line."));
- return 1;
- }
-
- if (*param)
- **cur_filename = yasm__xstrdup(param);
-
- return 0;
-}
-int
-not_an_option_handler(char *param) {
- char *c, *d = param;
-
- while ((c = strchr(d, ','))) {
- *c = '\0';
- if (filename_handler(d))
- return 1;
- d = c + 1;
- cur_filename++;
- }
- filename_handler(d);
- return 0;
-}
-
-static int
-opt_special_handler(/*@unused@*/ char *cmd, /*@unused@*/ char *param, int extra)
-{
- if (special_options == 0)
- special_options = extra;
- return 0;
-}
-
-static int
-opt_segment_ordering_handler(/*@unused@*/ char *cmd, /*@unused@*/ char *param, int extra)
-{
- segment_ordering = extra;
- return 0;
-}
-
-static int
-opt_cross_reference_handler(/*@unused@*/ char *cmd, /*@unused@*/ char *param, int extra)
-{
- cross_reference = 1;
- return 0;
-}
-
-static int
-opt_floating_point_handler(/*@unused@*/ char *cmd, /*@unused@*/ char *param, int extra)
-{
- floating_point = extra;
- return 0;
-}
-
-static int
-opt_ignore(/*@unused@*/ char *cmd, /*@unused@*/ char *param, int extra)
-{
- return 0;
-}
-
-static int
-opt_listing_handler(/*@unused@*/ char *cmd, /*@unused@*/ char *param, int extra)
-{
- if (param && param[0]) {
- if (param[0] != 'a')
- return 1;
- expanded_listing = 1;
- }
- listing = 1;
- return 0;
-}
-
-static int
-opt_case_handler(/*@unused@*/ char *cmd, /*@unused@*/ char *param, int extra)
-{
- case_sensitivity = extra;
- return 0;
-}
-
-static int
-opt_valid_length_handler(/*@unused@*/ char *cmd, /*@unused@*/ char *param, int extra)
-{
- valid_length = atoi(param);
- return 0;
-}
-
-static int
-opt_warning_handler(char *cmd, /*@unused@*/ char *param, int extra)
-{
- /* is it disabling the warning instead of enabling? */
- void (*action)(yasm_warn_class wclass) = NULL;
-
- if (cmd[0] == '0') {
- /* /w0, disable warnings */
- yasm_warn_disable_all();
- return 0;
- }
-
- if (cmd[0] == '1' || cmd[0] == '2') {
- /* /w[12], enable warnings */
- yasm_warn_enable(YASM_WARN_UNREC_CHAR);
- yasm_warn_enable(YASM_WARN_ORPHAN_LABEL);
- yasm_warn_enable(YASM_WARN_UNINIT_CONTENTS);
- return 0;
- }
-
- /* detect no- prefix to disable the warning */
- if (cmd[0] == '-') {
- action = yasm_warn_disable;
- } else if (cmd[0] == '+') {
- action = yasm_warn_enable;
- } else return 1;
-
- /* skip past '+/-' */
- cmd++;
-
- if (cmd[0] == '\0')
- /* just /w- or /w+, so definitely not valid */
- return 1;
- else if (strcmp(cmd, "error") == 0)
- warning_error = (action == yasm_warn_enable);
- else if (strcmp(cmd, "unrecognized-char") == 0)
- action(YASM_WARN_UNREC_CHAR);
- else if (strcmp(cmd, "orphan-labels") == 0)
- action(YASM_WARN_ORPHAN_LABEL);
- else if (strcmp(cmd, "uninit-contents") == 0)
- action(YASM_WARN_UNINIT_CONTENTS);
- else if (strcmp(cmd, "size-override") == 0)
- action(YASM_WARN_SIZE_OVERRIDE);
- else
- return 1;
-
- return 0;
-}
-
-static int
-opt_preproc_option(/*@unused@*/ char *cmd, char *param, int extra)
-{
- constcharparam *cp;
- cp = yasm_xmalloc(sizeof(constcharparam));
- cp->param = param;
- cp->id = extra;
- STAILQ_INSERT_TAIL(&preproc_options, cp, link);
- return 0;
-}
-
-static int
-opt_exe_handler(char *cmd, /*@unused@*/ char *param, int extra)
-{
- objfmt_keyword = yasm__xstrdup("dosexe");
- return 0;
-}
-
-static void
-apply_preproc_builtins()
-{
- char *predef;
-
- if (!objfmt_keyword)
- objfmt_keyword = yasm__xstrdup(DEFAULT_OBJFMT_MODULE);
-
- /* Define standard YASM assembly-time macro constants */
- predef = yasm_xmalloc(strlen("__YASM_OBJFMT__=")
- + strlen(objfmt_keyword) + 1);
- strcpy(predef, "__YASM_OBJFMT__=");
- strcat(predef, objfmt_keyword);
- yasm_preproc_define_builtin(cur_preproc, predef);
- yasm_xfree(predef);
-}
-
-static void
-apply_preproc_standard_macros(const yasm_stdmac *stdmacs)
-{
- int i, matched;
-
- if (!stdmacs)
- return;
-
- matched = -1;
- for (i=0; stdmacs[i].parser; i++)
- if (yasm__strcasecmp(stdmacs[i].parser,
- cur_parser_module->keyword) == 0 &&
- yasm__strcasecmp(stdmacs[i].preproc,
- cur_preproc_module->keyword) == 0)
- matched = i;
- if (matched >= 0 && stdmacs[matched].macros)
- yasm_preproc_add_standard(cur_preproc, stdmacs[matched].macros);
-}
-
-static void
-apply_preproc_saved_options()
-{
- constcharparam *cp, *cpnext;
-
- void (*funcs[3])(yasm_preproc *, const char *);
- funcs[0] = cur_preproc_module->add_include_file;
- funcs[1] = cur_preproc_module->predefine_macro;
- funcs[2] = cur_preproc_module->undefine_macro;
-
- STAILQ_FOREACH(cp, &preproc_options, link) {
- if (0 <= cp->id && cp->id < 3 && funcs[cp->id])
- funcs[cp->id](cur_preproc, cp->param);
- }
-
- cp = STAILQ_FIRST(&preproc_options);
- while (cp != NULL) {
- cpnext = STAILQ_NEXT(cp, link);
- yasm_xfree(cp);
- cp = cpnext;
- }
- STAILQ_INIT(&preproc_options);
-}
-
-/* Replace extension on a filename (or append one if none is present).
- * If output filename would be identical to input (same extension out as in),
- * returns (copy of) def.
- * A NULL ext means the trailing '.' should NOT be included, whereas a "" ext
- * means the trailing '.' should be included.
- */
-static char *
-replace_extension(const char *orig, /*@null@*/ const char *ext,
- const char *def)
-{
- char *out, *outext;
- size_t deflen, outlen;
-
- /* allocate enough space for full existing name + extension */
- outlen = strlen(orig) + 2;
- if (ext)
- outlen += strlen(ext) + 1;
- deflen = strlen(def) + 1;
- if (outlen < deflen)
- outlen = deflen;
- out = yasm_xmalloc(outlen);
-
- strcpy(out, orig);
- outext = strrchr(out, '.');
- if (outext) {
- /* Existing extension: make sure it's not the same as the replacement
- * (as we don't want to overwrite the source file).
- */
- outext++; /* advance past '.' */
- if (ext && strcmp(outext, ext) == 0) {
- outext = NULL; /* indicate default should be used */
- print_error(
- _("file name already ends in `.%s': output will be in `%s'"),
- ext, def);
- }
- } else {
- /* No extension: make sure the output extension is not empty
- * (again, we don't want to overwrite the source file).
- */
- if (!ext)
- print_error(
- _("file name already has no extension: output will be in `%s'"),
- def);
- else {
- outext = strrchr(out, '\0'); /* point to end of the string */
- *outext++ = '.'; /* append '.' */
- }
- }
-
- /* replace extension or use default name */
- if (outext) {
- if (!ext) {
- /* Back up and replace '.' with string terminator */
- outext--;
- *outext = '\0';
- } else
- strcpy(outext, ext);
- } else
- strcpy(out, def);
-
- return out;
-}
-
-void
-print_list_keyword_desc(const char *name, const char *keyword)
-{
- printf("%4s%-12s%s\n", "", keyword, name);
-}
-
-static void
-print_error(const char *fmt, ...)
-{
- va_list va;
- fprintf(errfile, "tasm: ");
- va_start(va, fmt);
- vfprintf(errfile, fmt, va);
- va_end(va);
- fputc('\n', errfile);
-}
-
-static /*@exits@*/ void
-handle_yasm_int_error(const char *file, unsigned int line, const char *message)
-{
- fprintf(stderr, _("INTERNAL ERROR at %s, line %u: %s\n"), file, line,
- gettext(message));
-#ifdef HAVE_ABORT
- abort();
-#else
- exit(EXIT_FAILURE);
-#endif
-}
-
-static /*@exits@*/ void
-handle_yasm_fatal(const char *fmt, va_list va)
-{
- fprintf(errfile, "**%s**: ", _("Fatal"));
- vfprintf(errfile, gettext(fmt), va);
- fputc('\n', errfile);
- exit(EXIT_FAILURE);
-}
-
-static const char *
-handle_yasm_gettext(const char *msgid)
-{
- return gettext(msgid);
-}
-
-static void
-print_yasm_error(const char *filename, unsigned long line, const char *msg,
- const char *xref_fn, unsigned long xref_line,
- const char *xref_msg)
-{
- if (line)
- fprintf(errfile, "**%s** %s(%lu) %s\n", _("Error"), filename, line, msg);
- else
- fprintf(errfile, "**%s** %s %s\n", _("Error"), filename, msg);
-
- if (/* xref_fn && */ xref_msg) {
- if (xref_line)
- fprintf(errfile, "**%s** %s(%lu) %s\n", _("Error"), filename, xref_line, xref_msg);
- else
- fprintf(errfile, "**%s** %s %s\n", _("Error"), filename, xref_msg);
- }
-}
-
-static void
-print_yasm_warning(const char *filename, unsigned long line, const char *msg)
-{
- if (line)
- fprintf(errfile, "*%s* %s(%lu) %s\n", _("Warning"), filename, line, msg);
- else
- fprintf(errfile, "*%s* %s %s\n", _("Warning"), filename, msg);
-}
+/*
+ * Program entry point, command line parsing
+ *
+ * Copyright (C) 2001-2008 Peter Johnson
+ * Copyright (C) 2007-2008 Samuel Thibault
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <ctype.h>
+#include <libyasm/compat-queue.h>
+#include <libyasm/bitvect.h>
+#include <libyasm.h>
+
+#ifdef HAVE_LIBGEN_H
+#include <libgen.h>
+#endif
+
+#include "tasm-options.h"
+
+#if defined(CMAKE_BUILD) && defined(BUILD_SHARED_LIBS)
+#include "yasm-plugin.h"
+#endif
+
+#include "license.c"
+
+#define DEFAULT_OBJFMT_MODULE "bin"
+
+#if defined(CMAKE_BUILD) && !defined(BUILD_SHARED_LIBS)
+void yasm_init_plugin(void);
+#endif
+
+/*@null@*/ /*@only@*/ static char *obj_filename = NULL, *in_filename = NULL;
+/*@null@*/ /*@only@*/ static char *list_filename = NULL, *xref_filename = NULL;
+/*@null@*/ /*@only@*/ static char *machine_name = NULL;
+static int special_options = 0;
+static int segment_ordering = 0;
+static int cross_reference = 0;
+static int floating_point = 0;
+static int listing = 0;
+static int expanded_listing = 0;
+static int case_sensitivity = 0;
+static int valid_length = -1;
+/*@null@*/ /*@dependent@*/ static yasm_arch *cur_arch = NULL;
+/*@null@*/ /*@dependent@*/ static const yasm_arch_module *
+ cur_arch_module = NULL;
+/*@null@*/ /*@dependent@*/ static const yasm_parser_module *
+ cur_parser_module = NULL;
+/*@null@*/ /*@dependent@*/ static yasm_preproc *cur_preproc = NULL;
+/*@null@*/ /*@dependent@*/ static const yasm_preproc_module *
+ cur_preproc_module = NULL;
+/*@null@*/ static char *objfmt_keyword = NULL;
+/*@null@*/ /*@dependent@*/ static const yasm_objfmt_module *
+ cur_objfmt_module = NULL;
+/*@null@*/ /*@dependent@*/ static const yasm_dbgfmt_module *
+ cur_dbgfmt_module = NULL;
+/*@null@*/ /*@dependent@*/ static yasm_listfmt *cur_listfmt = NULL;
+/*@null@*/ /*@dependent@*/ static const yasm_listfmt_module *
+ cur_listfmt_module = NULL;
+static int warning_error = 0; /* warnings being treated as errors */
+static FILE *errfile;
+/*@null@*/ /*@only@*/ static char *error_filename = NULL;
+
+/*@null@*/ /*@dependent@*/ static FILE *open_file(const char *filename,
+ const char *mode);
+static void check_errors(/*@only@*/ yasm_errwarns *errwarns,
+ /*@only@*/ yasm_object *object,
+ /*@only@*/ yasm_linemap *linemap);
+static void cleanup(/*@null@*/ /*@only@*/ yasm_object *object);
+
+/* Forward declarations: cmd line parser handlers */
+static int opt_special_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_segment_ordering_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_cross_reference_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_floating_point_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_ignore(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_listing_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_case_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_valid_length_handler(char *cmd, /*@null@*/ char *param, int extra);
+
+static int opt_warning_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_preproc_option(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_exe_handler(char *cmd, /*@null@*/ char *param, int extra);
+
+static /*@only@*/ char *replace_extension(const char *orig, /*@null@*/
+ const char *ext, const char *def);
+static void print_error(const char *fmt, ...);
+
+static /*@exits@*/ void handle_yasm_int_error(const char *file,
+ unsigned int line,
+ const char *message);
+static /*@exits@*/ void handle_yasm_fatal(const char *message, va_list va);
+static const char *handle_yasm_gettext(const char *msgid);
+static void print_yasm_error(const char *filename, unsigned long line,
+ const char *msg, /*@null@*/ const char *xref_fn,
+ unsigned long xref_line,
+ /*@null@*/ const char *xref_msg);
+static void print_yasm_warning(const char *filename, unsigned long line,
+ const char *msg);
+
+static void apply_preproc_builtins(void);
+static void apply_preproc_standard_macros(const yasm_stdmac *stdmacs);
+static void apply_preproc_saved_options(void);
+static void print_list_keyword_desc(const char *name, const char *keyword);
+
+/* values for special_options */
+#define SPECIAL_SHOW_HELP 0x01
+#define SPECIAL_SHOW_VERSION 0x02
+#define SPECIAL_SHOW_LICENSE 0x04
+
+#define SEGMENT_ORDERING_ALPHABETIC 0x01
+#define SEGMENT_ORDERING_SOURCE 0x02
+
+#define FP_EMULATED 0x01
+#define FP_REAL 0x02
+
+#define CASE_ALL 0x01
+#define CASE_GLOBALS 0x02
+#define CASE_NONE 0x04
+
+#define DEBUG_FULL 0x01
+#define DEBUG_LINES 0x02
+#define DEBUG_NONE 0x04
+
+/* command line options */
+static opt_option options[] =
+{
+ { "version", 0, opt_special_handler, SPECIAL_SHOW_VERSION,
+ N_("show version text"), NULL },
+ { "license", 0, opt_special_handler, SPECIAL_SHOW_LICENSE,
+ N_("show license text"), NULL },
+ { "a", 0, opt_segment_ordering_handler, SEGMENT_ORDERING_ALPHABETIC,
+ N_("Alphabetic segment ordering"), NULL },
+ { "s", 0, opt_segment_ordering_handler, SEGMENT_ORDERING_SOURCE,
+ N_("Source segment ordering"), NULL },
+
+ { "c", 0, opt_cross_reference_handler, 0,
+ N_("Generate cross-reference in listing"), NULL },
+
+ { "d", 1, opt_preproc_option, 2,
+ N_("pre-define a macro, optionally to value"), N_("macro[=value]") },
+
+ { "e", 0, opt_floating_point_handler, FP_EMULATED,
+ N_("Emulated floating-point instructions (not supported)"), NULL },
+ { "r", 0, opt_floating_point_handler, FP_REAL,
+ N_("Real floating-point instructions"), NULL },
+
+ { "h", 0, opt_special_handler, SPECIAL_SHOW_HELP,
+ N_("show help text"), NULL },
+ { "?", 0, opt_special_handler, SPECIAL_SHOW_HELP,
+ N_("show help text"), NULL },
+
+ { "i", 1, opt_preproc_option, 0,
+ N_("add include path"), N_("path") },
+
+ { "j", 1, opt_ignore, 0,
+ N_("Jam in an assemble directive CMD (eg. /jIDEAL) (not supported)"), NULL },
+
+ { "k", 1, opt_ignore, 0,
+ N_("Hash table capacity (ignored)"), N_("# symbols") },
+
+ { "l", 0, opt_listing_handler, 0,
+ N_("Generate listing"), N_("l=normal listing, la=expanded listing") },
+
+ { "ml", 0, opt_case_handler, CASE_ALL,
+ N_("Case sensitivity on all symbols"), NULL },
+ { "mx", 0, opt_case_handler, CASE_GLOBALS,
+ N_("Case sensitivity on global symbols"), NULL },
+ { "mu", 0, opt_case_handler, CASE_NONE,
+ N_("No case sensitivity on symbols"), NULL },
+ { "mv", 0, opt_valid_length_handler, 0,
+ N_("Set maximum valid length for symbols"), N_("length") },
+
+ { "m", 1, opt_ignore, 0,
+ N_("Allow multiple passes to resolve forward reference (ignored)"), N_("number of passes") },
+
+ { "n", 0, opt_ignore, 0,
+ N_("Suppress symbol tables in listing"), NULL },
+
+ { "o", 0, opt_ignore, 0,
+ N_("Object code"), N_("os: standard, o: standard w/overlays, op: Phar Lap, oi: IBM") },
+
+ { "p", 0, opt_ignore, 0,
+ N_("Check for code segment overrides in protected mode"), NULL },
+ { "q", 0, opt_ignore, 0,
+ N_("Suppress OBJ records not needed for linking (ignored)"), NULL },
+ { "t", 0, opt_ignore, 0,
+ N_("Suppress messages if successful assembly"), NULL },
+ { "u", 0, opt_ignore, 0,
+ N_("Set version emulation"), N_("Version") },
+ { "w", 1, opt_warning_handler, 0,
+ N_("Set warning level"), N_("w0=none, w1=w2=warnings on, w-xxx/w+xxx=disable/enable warning xxx") },
+ { "x", 0, opt_ignore, 0,
+ N_("Include false conditionals in listing"), NULL },
+ { "zi", 0, opt_ignore, DEBUG_FULL,
+ N_("Full debug info"), NULL },
+ { "zd", 0, opt_ignore, DEBUG_LINES,
+ N_("Line numbers debug info"), NULL },
+ { "zn", 0, opt_ignore, DEBUG_NONE,
+ N_("No debug info"), NULL },
+ { "z", 0, opt_ignore, 0,
+ N_("Display source line with error message (ignored)"), NULL },
+
+ { "b", 0, opt_exe_handler, 0,
+ N_("Build a (very) basic .exe file"), NULL },
+};
+
+/* version message */
+/*@observer@*/ static const char *version_msg[] = {
+ PACKAGE_STRING,
+ "Compiled on " __DATE__ ".",
+ "Copyright (c) 2001-2010 Peter Johnson and other Yasm developers.",
+ "Run yasm --license for licensing overview and summary."
+};
+
+/* help messages */
+/*@observer@*/ static const char *help_head = N_(
+ "usage: tasm [option]* source [,object] [,listing] [,xref] \n"
+ "Options:\n");
+/*@observer@*/ static const char *help_tail = N_(
+ "\n"
+ "source is asm source to be assembled.\n"
+ "\n"
+ "Sample invocation:\n"
+ " tasm /zi source.asm\n"
+ "\n"
+ "Report bugs to bug-yasm@tortall.net\n");
+
+/* parsed command line storage until appropriate modules have been loaded */
+typedef STAILQ_HEAD(constcharparam_head, constcharparam) constcharparam_head;
+
+typedef struct constcharparam {
+ STAILQ_ENTRY(constcharparam) link;
+ const char *param;
+ int id;
+} constcharparam;
+
+static constcharparam_head preproc_options;
+
+static int
+do_assemble(void)
+{
+ yasm_object *object;
+ const char *base_filename;
+ /*@null@*/ FILE *obj = NULL;
+ yasm_arch_create_error arch_error;
+ yasm_linemap *linemap;
+ yasm_errwarns *errwarns = yasm_errwarns_create();
+ int i, matched;
+
+ /* Initialize line map */
+ linemap = yasm_linemap_create();
+ yasm_linemap_set(linemap, in_filename, 0, 1, 1);
+
+ /* determine the object filename if not specified */
+ if (!obj_filename) {
+ if (in_filename == NULL)
+ /* Default to yasm.out if no obj filename specified */
+ obj_filename = yasm__xstrdup("yasm.out");
+ else {
+ /* replace (or add) extension to base filename */
+ yasm__splitpath(in_filename, &base_filename);
+ if (base_filename[0] == '\0')
+ obj_filename = yasm__xstrdup("yasm.out");
+ else
+ obj_filename = replace_extension(base_filename,
+ "obj",
+ "yasm.out");
+ }
+ }
+
+ cur_arch = yasm_arch_create(cur_arch_module, machine_name,
+ cur_parser_module->keyword, &arch_error);
+ if (!cur_arch) {
+ switch (arch_error) {
+ case YASM_ARCH_CREATE_BAD_MACHINE:
+ print_error(_("%s: `%s' is not a valid %s for %s `%s'"),
+ _("FATAL"), machine_name, _("machine"),
+ _("architecture"), cur_arch_module->keyword);
+ break;
+ case YASM_ARCH_CREATE_BAD_PARSER:
+ print_error(_("%s: `%s' is not a valid %s for %s `%s'"),
+ _("FATAL"), cur_parser_module->keyword,
+ _("parser"), _("architecture"),
+ cur_arch_module->keyword);
+ break;
+ default:
+ print_error(_("%s: unknown architecture error"), _("FATAL"));
+ }
+
+ return EXIT_FAILURE;
+ }
+
+ /* Create object */
+ object = yasm_object_create(in_filename, obj_filename, cur_arch,
+ cur_objfmt_module, cur_dbgfmt_module);
+ if (!object) {
+ yasm_error_class eclass;
+ unsigned long xrefline;
+ /*@only@*/ /*@null@*/ char *estr, *xrefstr;
+
+ yasm_error_fetch(&eclass, &estr, &xrefline, &xrefstr);
+ print_error("%s: %s", _("FATAL"), estr);
+ yasm_xfree(estr);
+ yasm_xfree(xrefstr);
+
+ cleanup(object);
+ return EXIT_FAILURE;
+ }
+
+ /* Get a fresh copy of objfmt_module as it may have changed. */
+ cur_objfmt_module = ((yasm_objfmt_base *)object->objfmt)->module;
+
+ /* Check to see if the requested preprocessor is in the allowed list
+ * for the active parser.
+ */
+ matched = 0;
+ for (i=0; cur_parser_module->preproc_keywords[i]; i++)
+ if (yasm__strcasecmp(cur_parser_module->preproc_keywords[i],
+ cur_preproc_module->keyword) == 0)
+ matched = 1;
+ if (!matched) {
+ print_error(_("%s: `%s' is not a valid %s for %s `%s'"), _("FATAL"),
+ cur_preproc_module->keyword, _("preprocessor"),
+ _("parser"), cur_parser_module->keyword);
+ cleanup(object);
+ return EXIT_FAILURE;
+ }
+
+ cur_preproc = yasm_preproc_create(cur_preproc_module, in_filename,
+ object->symtab, linemap, errwarns);
+
+ apply_preproc_builtins();
+ apply_preproc_standard_macros(cur_parser_module->stdmacs);
+ apply_preproc_standard_macros(cur_objfmt_module->stdmacs);
+ apply_preproc_saved_options();
+
+ /* Get initial x86 BITS setting from object format */
+ if (strcmp(cur_arch_module->keyword, "x86") == 0) {
+ yasm_arch_set_var(cur_arch, "mode_bits",
+ cur_objfmt_module->default_x86_mode_bits);
+ }
+
+ /* Parse! */
+ cur_parser_module->do_parse(object, cur_preproc, list_filename != NULL,
+ linemap, errwarns);
+
+ check_errors(errwarns, object, linemap);
+
+ /* Finalize parse */
+ yasm_object_finalize(object, errwarns);
+ check_errors(errwarns, object, linemap);
+
+ /* Optimize */
+ yasm_object_optimize(object, errwarns);
+ check_errors(errwarns, object, linemap);
+
+ /* generate any debugging information */
+ yasm_dbgfmt_generate(object, linemap, errwarns);
+ check_errors(errwarns, object, linemap);
+
+ /* open the object file for output (if not already opened by dbg objfmt) */
+ if (!obj && strcmp(cur_objfmt_module->keyword, "dbg") != 0) {
+ obj = open_file(obj_filename, "wb");
+ if (!obj) {
+ cleanup(object);
+ return EXIT_FAILURE;
+ }
+ }
+
+ /* Write the object file */
+ yasm_objfmt_output(object, obj?obj:stderr,
+ strcmp(cur_dbgfmt_module->keyword, "null"), errwarns);
+
+ /* Close object file */
+ if (obj)
+ fclose(obj);
+
+ /* If we had an error at this point, we also need to delete the output
+ * object file (to make sure it's not left newer than the source).
+ */
+ if (yasm_errwarns_num_errors(errwarns, warning_error) > 0)
+ remove(obj_filename);
+ check_errors(errwarns, object, linemap);
+
+ /* Open and write the list file */
+ if (list_filename) {
+ FILE *list = open_file(list_filename, "wt");
+ if (!list) {
+ cleanup(object);
+ return EXIT_FAILURE;
+ }
+ /* Initialize the list format */
+ cur_listfmt = yasm_listfmt_create(cur_listfmt_module, in_filename,
+ obj_filename);
+ yasm_listfmt_output(cur_listfmt, list, linemap, cur_arch);
+ fclose(list);
+ }
+
+ yasm_errwarns_output_all(errwarns, linemap, warning_error,
+ print_yasm_error, print_yasm_warning);
+
+ yasm_linemap_destroy(linemap);
+ yasm_errwarns_destroy(errwarns);
+ cleanup(object);
+ return EXIT_SUCCESS;
+}
+
+/* main function */
+/*@-globstate -unrecog@*/
+int
+main(int argc, char *argv[])
+{
+ size_t i;
+
+ errfile = stderr;
+
+#if defined(HAVE_SETLOCALE) && defined(HAVE_LC_MESSAGES)
+ setlocale(LC_MESSAGES, "");
+#endif
+#if defined(LOCALEDIR)
+ bindtextdomain(PACKAGE, LOCALEDIR);
+#endif
+ textdomain(PACKAGE);
+
+ /* Initialize errwarn handling */
+ yasm_internal_error_ = handle_yasm_int_error;
+ yasm_fatal = handle_yasm_fatal;
+ yasm_gettext_hook = handle_yasm_gettext;
+ yasm_errwarn_initialize();
+
+ /* Initialize BitVector (needed for intnum/floatnum). */
+ if (BitVector_Boot() != ErrCode_Ok) {
+ print_error(_("%s: could not initialize BitVector"), _("FATAL"));
+ return EXIT_FAILURE;
+ }
+
+ /* Initialize intnum and floatnum */
+ yasm_intnum_initialize();
+ yasm_floatnum_initialize();
+
+#ifdef CMAKE_BUILD
+ /* Load standard modules */
+#ifdef BUILD_SHARED_LIBS
+ if (!load_plugin("yasmstd")) {
+ print_error(_("%s: could not load standard modules"), _("FATAL"));
+ return EXIT_FAILURE;
+ }
+#else
+ yasm_init_plugin();
+#endif
+#endif
+
+ /* Initialize parameter storage */
+ STAILQ_INIT(&preproc_options);
+
+ if (parse_cmdline(argc, argv, options, NELEMS(options), print_error))
+ return EXIT_FAILURE;
+
+ switch (special_options) {
+ case SPECIAL_SHOW_HELP:
+ /* Does gettext calls internally */
+ help_msg(help_head, help_tail, options, NELEMS(options));
+ return EXIT_SUCCESS;
+ case SPECIAL_SHOW_VERSION:
+ for (i=0; i<NELEMS(version_msg); i++)
+ printf("%s\n", version_msg[i]);
+ return EXIT_SUCCESS;
+ case SPECIAL_SHOW_LICENSE:
+ for (i=0; i<NELEMS(license_msg); i++)
+ printf("%s\n", license_msg[i]);
+ return EXIT_SUCCESS;
+ }
+
+ /* Open error file if specified. */
+ if (error_filename) {
+ errfile = open_file(error_filename, "wt");
+ if (!errfile)
+ return EXIT_FAILURE;
+ }
+
+ /* If not already specified, default to bin as the object format. */
+ if (!cur_objfmt_module) {
+ if (!objfmt_keyword)
+ objfmt_keyword = yasm__xstrdup(DEFAULT_OBJFMT_MODULE);
+ cur_objfmt_module = yasm_load_objfmt(objfmt_keyword);
+ if (!cur_objfmt_module) {
+ print_error(_("%s: could not load default %s"), _("FATAL"),
+ _("object format"));
+ return EXIT_FAILURE;
+ }
+ }
+
+ /* TASM's architecture is x86 */
+ cur_arch_module = yasm_load_arch("x86");
+ if (!cur_arch_module) {
+ print_error(_("%s: could not load %s"), _("FATAL"),
+ _("architecture"));
+ return EXIT_FAILURE;
+ }
+ machine_name =
+ yasm__xstrdup(cur_arch_module->default_machine_keyword);
+
+ /* Check for arch help */
+ if (machine_name && strcmp(machine_name, "help") == 0) {
+ const yasm_arch_machine *m = cur_arch_module->machines;
+ printf(_("Available %s for %s `%s':\n"), _("machines"),
+ _("architecture"), cur_arch_module->keyword);
+ while (m->keyword && m->name) {
+ print_list_keyword_desc(m->name, m->keyword);
+ m++;
+ }
+ return EXIT_SUCCESS;
+ }
+
+ cur_parser_module = yasm_load_parser("tasm");
+ if (!cur_parser_module) {
+ print_error(_("%s: could not load %s"), _("FATAL"),
+ _("parser"));
+ cleanup(NULL);
+ return EXIT_FAILURE;
+ }
+
+ /* If not already specified, default to the parser's default preproc. */
+ if (!cur_preproc_module) {
+ cur_preproc_module =
+ yasm_load_preproc(cur_parser_module->default_preproc_keyword);
+ if (!cur_preproc_module) {
+ print_error(_("%s: could not load default %s"), _("FATAL"),
+ _("preprocessor"));
+ cleanup(NULL);
+ return EXIT_FAILURE;
+ }
+ }
+
+ /* Determine input filename and open input file. */
+ if (!in_filename) {
+ print_error(_("No input files specified"));
+ return EXIT_FAILURE;
+ }
+
+ /* If list file enabled, make sure we have a list format loaded. */
+ if (list_filename) {
+ /* use nasm as the list format. */
+ cur_listfmt_module = yasm_load_listfmt("nasm");
+ }
+
+ /* If not already specified, default to null as the debug format. */
+ if (!cur_dbgfmt_module) {
+ cur_dbgfmt_module = yasm_load_dbgfmt("null");
+ if (!cur_dbgfmt_module) {
+ print_error(_("%s: could not load default %s"), _("FATAL"),
+ _("debug format"));
+ return EXIT_FAILURE;
+ }
+ }
+
+ return do_assemble();
+}
+/*@=globstate =unrecog@*/
+
+/* Open the object file. Returns 0 on failure. */
+static FILE *
+open_file(const char *filename, const char *mode)
+{
+ FILE *f;
+
+ f = fopen(filename, mode);
+ if (!f)
+ print_error(_("could not open file `%s'"), filename);
+ return f;
+}
+
+static void
+check_errors(yasm_errwarns *errwarns, yasm_object *object,
+ yasm_linemap *linemap)
+{
+ if (yasm_errwarns_num_errors(errwarns, warning_error) > 0) {
+ yasm_errwarns_output_all(errwarns, linemap, warning_error,
+ print_yasm_error, print_yasm_warning);
+ yasm_linemap_destroy(linemap);
+ yasm_errwarns_destroy(errwarns);
+ cleanup(object);
+ exit(EXIT_FAILURE);
+ }
+}
+
+/* Define DO_FREE to 1 to enable deallocation of all data structures.
+ * Useful for detecting memory leaks, but slows down execution unnecessarily
+ * (as the OS will free everything we miss here).
+ */
+#define DO_FREE 1
+
+/* Cleans up all allocated structures. */
+static void
+cleanup(yasm_object *object)
+{
+ if (DO_FREE) {
+ if (cur_listfmt)
+ yasm_listfmt_destroy(cur_listfmt);
+ if (cur_preproc)
+ yasm_preproc_destroy(cur_preproc);
+ if (object)
+ yasm_object_destroy(object);
+
+ yasm_floatnum_cleanup();
+ yasm_intnum_cleanup();
+
+ yasm_errwarn_cleanup();
+
+ BitVector_Shutdown();
+ }
+
+ if (DO_FREE) {
+ if (in_filename)
+ yasm_xfree(in_filename);
+ if (obj_filename)
+ yasm_xfree(obj_filename);
+ if (list_filename)
+ yasm_xfree(list_filename);
+ if (xref_filename)
+ yasm_xfree(xref_filename);
+ if (machine_name)
+ yasm_xfree(machine_name);
+ if (objfmt_keyword)
+ yasm_xfree(objfmt_keyword);
+ }
+
+ if (errfile != stderr && errfile != stdout)
+ fclose(errfile);
+#if defined(CMAKE_BUILD) && defined(BUILD_SHARED_LIBS)
+ unload_plugins();
+#endif
+}
+
+/*
+ * Command line options handlers
+ */
+static char ** const filenames[] = {
+ &in_filename, &obj_filename, &list_filename, &xref_filename, NULL
+}, ** const * cur_filename = &filenames[0];
+
+static int filename_handler(char *param) {
+ if (!*cur_filename) {
+ print_error(_("error: too many files on command line."));
+ return 1;
+ }
+
+ if (*param)
+ **cur_filename = yasm__xstrdup(param);
+
+ return 0;
+}
+int
+not_an_option_handler(char *param) {
+ char *c, *d = param;
+
+ while ((c = strchr(d, ','))) {
+ *c = '\0';
+ if (filename_handler(d))
+ return 1;
+ d = c + 1;
+ cur_filename++;
+ }
+ filename_handler(d);
+ return 0;
+}
+
+static int
+opt_special_handler(/*@unused@*/ char *cmd, /*@unused@*/ char *param, int extra)
+{
+ if (special_options == 0)
+ special_options = extra;
+ return 0;
+}
+
+static int
+opt_segment_ordering_handler(/*@unused@*/ char *cmd, /*@unused@*/ char *param, int extra)
+{
+ segment_ordering = extra;
+ return 0;
+}
+
+static int
+opt_cross_reference_handler(/*@unused@*/ char *cmd, /*@unused@*/ char *param, int extra)
+{
+ cross_reference = 1;
+ return 0;
+}
+
+static int
+opt_floating_point_handler(/*@unused@*/ char *cmd, /*@unused@*/ char *param, int extra)
+{
+ floating_point = extra;
+ return 0;
+}
+
+static int
+opt_ignore(/*@unused@*/ char *cmd, /*@unused@*/ char *param, int extra)
+{
+ return 0;
+}
+
+static int
+opt_listing_handler(/*@unused@*/ char *cmd, /*@unused@*/ char *param, int extra)
+{
+ if (param && param[0]) {
+ if (param[0] != 'a')
+ return 1;
+ expanded_listing = 1;
+ }
+ listing = 1;
+ return 0;
+}
+
+static int
+opt_case_handler(/*@unused@*/ char *cmd, /*@unused@*/ char *param, int extra)
+{
+ case_sensitivity = extra;
+ return 0;
+}
+
+static int
+opt_valid_length_handler(/*@unused@*/ char *cmd, /*@unused@*/ char *param, int extra)
+{
+ valid_length = atoi(param);
+ return 0;
+}
+
+static int
+opt_warning_handler(char *cmd, /*@unused@*/ char *param, int extra)
+{
+ /* is it disabling the warning instead of enabling? */
+ void (*action)(yasm_warn_class wclass) = NULL;
+
+ if (cmd[0] == '0') {
+ /* /w0, disable warnings */
+ yasm_warn_disable_all();
+ return 0;
+ }
+
+ if (cmd[0] == '1' || cmd[0] == '2') {
+ /* /w[12], enable warnings */
+ yasm_warn_enable(YASM_WARN_UNREC_CHAR);
+ yasm_warn_enable(YASM_WARN_ORPHAN_LABEL);
+ yasm_warn_enable(YASM_WARN_UNINIT_CONTENTS);
+ return 0;
+ }
+
+ /* detect no- prefix to disable the warning */
+ if (cmd[0] == '-') {
+ action = yasm_warn_disable;
+ } else if (cmd[0] == '+') {
+ action = yasm_warn_enable;
+ } else return 1;
+
+ /* skip past '+/-' */
+ cmd++;
+
+ if (cmd[0] == '\0')
+ /* just /w- or /w+, so definitely not valid */
+ return 1;
+ else if (strcmp(cmd, "error") == 0)
+ warning_error = (action == yasm_warn_enable);
+ else if (strcmp(cmd, "unrecognized-char") == 0)
+ action(YASM_WARN_UNREC_CHAR);
+ else if (strcmp(cmd, "orphan-labels") == 0)
+ action(YASM_WARN_ORPHAN_LABEL);
+ else if (strcmp(cmd, "uninit-contents") == 0)
+ action(YASM_WARN_UNINIT_CONTENTS);
+ else if (strcmp(cmd, "size-override") == 0)
+ action(YASM_WARN_SIZE_OVERRIDE);
+ else
+ return 1;
+
+ return 0;
+}
+
+static int
+opt_preproc_option(/*@unused@*/ char *cmd, char *param, int extra)
+{
+ constcharparam *cp;
+ cp = yasm_xmalloc(sizeof(constcharparam));
+ cp->param = param;
+ cp->id = extra;
+ STAILQ_INSERT_TAIL(&preproc_options, cp, link);
+ return 0;
+}
+
+static int
+opt_exe_handler(char *cmd, /*@unused@*/ char *param, int extra)
+{
+ objfmt_keyword = yasm__xstrdup("dosexe");
+ return 0;
+}
+
+static void
+apply_preproc_builtins()
+{
+ char *predef;
+
+ if (!objfmt_keyword)
+ objfmt_keyword = yasm__xstrdup(DEFAULT_OBJFMT_MODULE);
+
+ /* Define standard YASM assembly-time macro constants */
+ predef = yasm_xmalloc(strlen("__YASM_OBJFMT__=")
+ + strlen(objfmt_keyword) + 1);
+ strcpy(predef, "__YASM_OBJFMT__=");
+ strcat(predef, objfmt_keyword);
+ yasm_preproc_define_builtin(cur_preproc, predef);
+ yasm_xfree(predef);
+}
+
+static void
+apply_preproc_standard_macros(const yasm_stdmac *stdmacs)
+{
+ int i, matched;
+
+ if (!stdmacs)
+ return;
+
+ matched = -1;
+ for (i=0; stdmacs[i].parser; i++)
+ if (yasm__strcasecmp(stdmacs[i].parser,
+ cur_parser_module->keyword) == 0 &&
+ yasm__strcasecmp(stdmacs[i].preproc,
+ cur_preproc_module->keyword) == 0)
+ matched = i;
+ if (matched >= 0 && stdmacs[matched].macros)
+ yasm_preproc_add_standard(cur_preproc, stdmacs[matched].macros);
+}
+
+static void
+apply_preproc_saved_options()
+{
+ constcharparam *cp, *cpnext;
+
+ void (*funcs[3])(yasm_preproc *, const char *);
+ funcs[0] = cur_preproc_module->add_include_file;
+ funcs[1] = cur_preproc_module->predefine_macro;
+ funcs[2] = cur_preproc_module->undefine_macro;
+
+ STAILQ_FOREACH(cp, &preproc_options, link) {
+ if (0 <= cp->id && cp->id < 3 && funcs[cp->id])
+ funcs[cp->id](cur_preproc, cp->param);
+ }
+
+ cp = STAILQ_FIRST(&preproc_options);
+ while (cp != NULL) {
+ cpnext = STAILQ_NEXT(cp, link);
+ yasm_xfree(cp);
+ cp = cpnext;
+ }
+ STAILQ_INIT(&preproc_options);
+}
+
+/* Replace extension on a filename (or append one if none is present).
+ * If output filename would be identical to input (same extension out as in),
+ * returns (copy of) def.
+ * A NULL ext means the trailing '.' should NOT be included, whereas a "" ext
+ * means the trailing '.' should be included.
+ */
+static char *
+replace_extension(const char *orig, /*@null@*/ const char *ext,
+ const char *def)
+{
+ char *out, *outext;
+ size_t deflen, outlen;
+
+ /* allocate enough space for full existing name + extension */
+ outlen = strlen(orig) + 2;
+ if (ext)
+ outlen += strlen(ext) + 1;
+ deflen = strlen(def) + 1;
+ if (outlen < deflen)
+ outlen = deflen;
+ out = yasm_xmalloc(outlen);
+
+ strcpy(out, orig);
+ outext = strrchr(out, '.');
+ if (outext) {
+ /* Existing extension: make sure it's not the same as the replacement
+ * (as we don't want to overwrite the source file).
+ */
+ outext++; /* advance past '.' */
+ if (ext && strcmp(outext, ext) == 0) {
+ outext = NULL; /* indicate default should be used */
+ print_error(
+ _("file name already ends in `.%s': output will be in `%s'"),
+ ext, def);
+ }
+ } else {
+ /* No extension: make sure the output extension is not empty
+ * (again, we don't want to overwrite the source file).
+ */
+ if (!ext)
+ print_error(
+ _("file name already has no extension: output will be in `%s'"),
+ def);
+ else {
+ outext = strrchr(out, '\0'); /* point to end of the string */
+ *outext++ = '.'; /* append '.' */
+ }
+ }
+
+ /* replace extension or use default name */
+ if (outext) {
+ if (!ext) {
+ /* Back up and replace '.' with string terminator */
+ outext--;
+ *outext = '\0';
+ } else
+ strcpy(outext, ext);
+ } else
+ strcpy(out, def);
+
+ return out;
+}
+
+void
+print_list_keyword_desc(const char *name, const char *keyword)
+{
+ printf("%4s%-12s%s\n", "", keyword, name);
+}
+
+static void
+print_error(const char *fmt, ...)
+{
+ va_list va;
+ fprintf(errfile, "tasm: ");
+ va_start(va, fmt);
+ vfprintf(errfile, fmt, va);
+ va_end(va);
+ fputc('\n', errfile);
+}
+
+static /*@exits@*/ void
+handle_yasm_int_error(const char *file, unsigned int line, const char *message)
+{
+ fprintf(stderr, _("INTERNAL ERROR at %s, line %u: %s\n"), file, line,
+ gettext(message));
+#ifdef HAVE_ABORT
+ abort();
+#else
+ exit(EXIT_FAILURE);
+#endif
+}
+
+static /*@exits@*/ void
+handle_yasm_fatal(const char *fmt, va_list va)
+{
+ fprintf(errfile, "**%s**: ", _("Fatal"));
+ vfprintf(errfile, gettext(fmt), va);
+ fputc('\n', errfile);
+ exit(EXIT_FAILURE);
+}
+
+static const char *
+handle_yasm_gettext(const char *msgid)
+{
+ return gettext(msgid);
+}
+
+static void
+print_yasm_error(const char *filename, unsigned long line, const char *msg,
+ const char *xref_fn, unsigned long xref_line,
+ const char *xref_msg)
+{
+ if (line)
+ fprintf(errfile, "**%s** %s(%lu) %s\n", _("Error"), filename, line, msg);
+ else
+ fprintf(errfile, "**%s** %s %s\n", _("Error"), filename, msg);
+
+ if (/* xref_fn && */ xref_msg) {
+ if (xref_line)
+ fprintf(errfile, "**%s** %s(%lu) %s\n", _("Error"), filename, xref_line, xref_msg);
+ else
+ fprintf(errfile, "**%s** %s %s\n", _("Error"), filename, xref_msg);
+ }
+}
+
+static void
+print_yasm_warning(const char *filename, unsigned long line, const char *msg)
+{
+ if (line)
+ fprintf(errfile, "*%s* %s(%lu) %s\n", _("Warning"), filename, line, msg);
+ else
+ fprintf(errfile, "*%s* %s %s\n", _("Warning"), filename, msg);
+}
diff --git a/contrib/tools/yasm/frontends/vsyasm/license.c b/contrib/tools/yasm/frontends/vsyasm/license.c
index 1259971244..35c5a04137 100644
--- a/contrib/tools/yasm/frontends/vsyasm/license.c
+++ b/contrib/tools/yasm/frontends/vsyasm/license.c
@@ -1,65 +1,65 @@
-/* This file auto-generated from COPYING by genstring.py - don't edit it */
-
-static const char* license_msg[] = {
- "Yasm is Copyright (c) 2001-2014 Peter Johnson and other Yasm developers.",
- "",
- "Yasm developers and/or contributors include:",
- "Peter Johnson",
- "Michael Urman",
- "Brian Gladman (Visual Studio build files, other fixes)",
- "Stanislav Karchebny (options parser)",
- "Mathieu Monnier (SSE4 instruction patches, NASM preprocessor additions)",
- "Anonymous \"NASM64\" developer (NASM preprocessor fixes)",
- "Stephen Polkowski (x86 instruction patches)",
- "Henryk Richter (Mach-O object format)",
- "Ben Skeggs (patches, bug reports)",
- "Alexei Svitkine (GAS preprocessor)",
- "Samuel Thibault (TASM parser and frontend)",
- "",
- "-----------------------------------",
- "Yasm licensing overview and summary",
- "-----------------------------------",
- "",
- "Note: This document does not provide legal advice nor is it the actual",
- "license of any part of Yasm. See the individual licenses for complete",
- "details. Consult a lawyer for legal advice.",
- "",
- "The primary license of Yasm is the 2-clause BSD license. Please use this",
- "license if you plan on submitting code to the project.",
- "",
- "Yasm has absolutely no warranty; not even for merchantibility or fitness",
- "for a particular purpose.",
- "",
- "-------",
- "Libyasm",
- "-------",
- "Libyasm is 2-clause or 3-clause BSD licensed, with the exception of",
- "bitvect, which is triple-licensed under the Artistic license, GPL, and",
- "LGPL. Libyasm is thus GPL and LGPL compatible. In addition, this also",
- "means that libyasm is free for binary-only distribution as long as the",
- "terms of the 3-clause BSD license and Artistic license (as it applies to",
- "bitvect) are fulfilled.",
- "",
- "-------",
- "Modules",
- "-------",
- "The modules are 2-clause or 3-clause BSD licensed.",
- "",
- "---------",
- "Frontends",
- "---------",
- "The frontends are 2-clause BSD licensed.",
- "",
- "-------------",
- "License Texts",
- "-------------",
- "The full text of all licenses are provided in separate files in the source",
- "distribution. Each source file may include the entire license (in the case",
- "of the BSD and Artistic licenses), or may reference the GPL or LGPL license",
- "file.",
- "",
- "BSD.txt - 2-clause and 3-clause BSD licenses",
- "Artistic.txt - Artistic license",
- "GNU_GPL-2.0 - GNU General Public License",
- "GNU_LGPL-2.0 - GNU Library General Public License",
-};
+/* This file auto-generated from COPYING by genstring.py - don't edit it */
+
+static const char* license_msg[] = {
+ "Yasm is Copyright (c) 2001-2014 Peter Johnson and other Yasm developers.",
+ "",
+ "Yasm developers and/or contributors include:",
+ "Peter Johnson",
+ "Michael Urman",
+ "Brian Gladman (Visual Studio build files, other fixes)",
+ "Stanislav Karchebny (options parser)",
+ "Mathieu Monnier (SSE4 instruction patches, NASM preprocessor additions)",
+ "Anonymous \"NASM64\" developer (NASM preprocessor fixes)",
+ "Stephen Polkowski (x86 instruction patches)",
+ "Henryk Richter (Mach-O object format)",
+ "Ben Skeggs (patches, bug reports)",
+ "Alexei Svitkine (GAS preprocessor)",
+ "Samuel Thibault (TASM parser and frontend)",
+ "",
+ "-----------------------------------",
+ "Yasm licensing overview and summary",
+ "-----------------------------------",
+ "",
+ "Note: This document does not provide legal advice nor is it the actual",
+ "license of any part of Yasm. See the individual licenses for complete",
+ "details. Consult a lawyer for legal advice.",
+ "",
+ "The primary license of Yasm is the 2-clause BSD license. Please use this",
+ "license if you plan on submitting code to the project.",
+ "",
+ "Yasm has absolutely no warranty; not even for merchantibility or fitness",
+ "for a particular purpose.",
+ "",
+ "-------",
+ "Libyasm",
+ "-------",
+ "Libyasm is 2-clause or 3-clause BSD licensed, with the exception of",
+ "bitvect, which is triple-licensed under the Artistic license, GPL, and",
+ "LGPL. Libyasm is thus GPL and LGPL compatible. In addition, this also",
+ "means that libyasm is free for binary-only distribution as long as the",
+ "terms of the 3-clause BSD license and Artistic license (as it applies to",
+ "bitvect) are fulfilled.",
+ "",
+ "-------",
+ "Modules",
+ "-------",
+ "The modules are 2-clause or 3-clause BSD licensed.",
+ "",
+ "---------",
+ "Frontends",
+ "---------",
+ "The frontends are 2-clause BSD licensed.",
+ "",
+ "-------------",
+ "License Texts",
+ "-------------",
+ "The full text of all licenses are provided in separate files in the source",
+ "distribution. Each source file may include the entire license (in the case",
+ "of the BSD and Artistic licenses), or may reference the GPL or LGPL license",
+ "file.",
+ "",
+ "BSD.txt - 2-clause and 3-clause BSD licenses",
+ "Artistic.txt - Artistic license",
+ "GNU_GPL-2.0 - GNU General Public License",
+ "GNU_LGPL-2.0 - GNU Library General Public License",
+};
diff --git a/contrib/tools/yasm/frontends/vsyasm/vsyasm.c b/contrib/tools/yasm/frontends/vsyasm/vsyasm.c
index 8a47420ec2..905145fa15 100644
--- a/contrib/tools/yasm/frontends/vsyasm/vsyasm.c
+++ b/contrib/tools/yasm/frontends/vsyasm/vsyasm.c
@@ -1,1424 +1,1424 @@
-/*
- * Program entry point, command line parsing
- *
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <ctype.h>
-#include <libyasm/compat-queue.h>
-#include <libyasm/bitvect.h>
-#include <libyasm.h>
-
-#ifdef HAVE_LIBGEN_H
-#include <libgen.h>
-#endif
-
-#include "frontends/yasm/yasm-options.h"
-
-#if defined(CMAKE_BUILD) && defined(BUILD_SHARED_LIBS)
-#include "frontends/yasm/yasm-plugin.h"
-#endif
-
-#include "license.c"
-
-#if defined(CMAKE_BUILD) && !defined(BUILD_SHARED_LIBS)
-void yasm_init_plugin(void);
-#endif
-
-/*@null@*/ /*@only@*/ static char *objdir_pathname = NULL;
-/*@null@*/ /*@only@*/ static char *global_prefix = NULL, *global_suffix = NULL;
-/*@null@*/ /*@only@*/ static char *listdir_pathname = NULL;
-/*@null@*/ /*@only@*/ static char *mapdir_pathname = NULL;
-/*@null@*/ /*@only@*/ static char *objext = NULL;
-/*@null@*/ /*@only@*/ static char *listext = NULL, *mapext = NULL;
-/*@null@*/ /*@only@*/ static char *machine_name = NULL;
-static int special_options = 0;
-/*@null@*/ /*@dependent@*/ static const yasm_arch_module *
- cur_arch_module = NULL;
-/*@null@*/ /*@dependent@*/ static const yasm_parser_module *
- cur_parser_module = NULL;
-/*@null@*/ /*@dependent@*/ static const yasm_preproc_module *
- cur_preproc_module = NULL;
-/*@null@*/ static char *objfmt_keyword = NULL;
-/*@null@*/ /*@dependent@*/ static const yasm_objfmt_module *
- cur_objfmt_module = NULL;
-/*@null@*/ /*@dependent@*/ static const yasm_dbgfmt_module *
- cur_dbgfmt_module = NULL;
-/*@null@*/ /*@dependent@*/ static const yasm_listfmt_module *
- cur_listfmt_module = NULL;
-static unsigned int force_strict = 0;
-static int warning_error = 0; /* warnings being treated as errors */
-static FILE *errfile;
-/*@null@*/ /*@only@*/ static char *error_filename = NULL;
-static enum {
- EWSTYLE_GNU = 0,
- EWSTYLE_VC
-} ewmsg_style = EWSTYLE_GNU;
-
-/*@null@*/ /*@dependent@*/ static FILE *open_file(const char *filename,
- const char *mode);
-static int check_errors(/*@only@*/ yasm_errwarns *errwarns,
- /*@only@*/ yasm_object *object,
- /*@only@*/ yasm_linemap *linemap,
- /*@only@*/ yasm_preproc *preproc,
- /*@only@*/ yasm_arch *arch);
-static void cleanup(void);
-static void free_input_filenames(void);
-
-/* Forward declarations: cmd line parser handlers */
-static int opt_special_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_arch_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_parser_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_preproc_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_objfmt_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_dbgfmt_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_listfmt_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_listdir_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_objdir_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_mapdir_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_listext_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_objext_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_mapext_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_machine_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_strict_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_warning_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_error_file(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_error_stdout(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_include_option(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_preproc_option(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_ewmsg_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_prefix_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_suffix_handler(char *cmd, /*@null@*/ char *param, int extra);
-#if defined(CMAKE_BUILD) && defined(BUILD_SHARED_LIBS)
-static int opt_plugin_handler(char *cmd, /*@null@*/ char *param, int extra);
-#endif
-
-static /*@only@*/ char *replace_extension(const char *orig, /*@null@*/
- const char *ext);
-static void print_error(const char *fmt, ...);
-
-static /*@exits@*/ void handle_yasm_int_error(const char *file,
- unsigned int line,
- const char *message);
-static /*@exits@*/ void handle_yasm_fatal(const char *message, va_list va);
-static const char *handle_yasm_gettext(const char *msgid);
-static void print_yasm_error(const char *filename, unsigned long line,
- const char *msg, /*@null@*/ const char *xref_fn,
- unsigned long xref_line,
- /*@null@*/ const char *xref_msg);
-static void print_yasm_warning(const char *filename, unsigned long line,
- const char *msg);
-
-static void apply_preproc_builtins(yasm_preproc *preproc);
-static void apply_preproc_standard_macros(yasm_preproc *preproc,
- const yasm_stdmac *stdmacs);
-static void apply_preproc_saved_options(yasm_preproc *preproc);
-static void free_preproc_saved_options(void);
-static void print_list_keyword_desc(const char *name, const char *keyword);
-
-/* values for special_options */
-#define SPECIAL_SHOW_HELP 0x01
-#define SPECIAL_SHOW_VERSION 0x02
-#define SPECIAL_SHOW_LICENSE 0x04
-#define SPECIAL_LISTED 0x08
-
-/* command line options */
-static opt_option options[] =
-{
- { 0, "version", 0, opt_special_handler, SPECIAL_SHOW_VERSION,
- N_("show version text"), NULL },
- { 0, "license", 0, opt_special_handler, SPECIAL_SHOW_LICENSE,
- N_("show license text"), NULL },
- { 'h', "help", 0, opt_special_handler, SPECIAL_SHOW_HELP,
- N_("show help text"), NULL },
- { 'a', "arch", 1, opt_arch_handler, 0,
- N_("select architecture (list with -a help)"), N_("arch") },
- { 'p', "parser", 1, opt_parser_handler, 0,
- N_("select parser (list with -p help)"), N_("parser") },
- { 'r', "preproc", 1, opt_preproc_handler, 0,
- N_("select preprocessor (list with -r help)"), N_("preproc") },
- { 'f', "oformat", 1, opt_objfmt_handler, 0,
- N_("select object format (list with -f help)"), N_("format") },
- { 'g', "dformat", 1, opt_dbgfmt_handler, 0,
- N_("select debugging format (list with -g help)"), N_("debug") },
- { 'L', "lformat", 1, opt_listfmt_handler, 0,
- N_("select list format (list with -L help)"), N_("list") },
- { 'l', "list", 1, opt_listdir_handler, 0,
- N_("name of list-file output directory"), N_("pathname") },
- { 'o', "objdir", 1, opt_objdir_handler, 0,
- N_("name of object-file output directory"), N_("pathname") },
- { 0, "mapdir", 1, opt_mapdir_handler, 0,
- N_("name of map-file output directory"), N_("pathname") },
- { 0, "listext", 1, opt_listext_handler, 0,
- N_("list-file extension (default `lst')"), N_("ext") },
- { 0, "objext", 1, opt_objext_handler, 0,
- N_("object-file extension (default is by object format)"), N_("ext") },
- { 0, "mapext", 1, opt_mapext_handler, 0,
- N_("map-file extension (default `map')"), N_("ext") },
- { 'm', "machine", 1, opt_machine_handler, 0,
- N_("select machine (list with -m help)"), N_("machine") },
- { 0, "force-strict", 0, opt_strict_handler, 0,
- N_("treat all sized operands as if `strict' was used"), NULL },
- { 'w', NULL, 0, opt_warning_handler, 1,
- N_("inhibits warning messages"), NULL },
- { 'W', NULL, 0, opt_warning_handler, 0,
- N_("enables/disables warning"), NULL },
- { 'E', NULL, 1, opt_error_file, 0,
- N_("redirect error messages to file"), N_("file") },
- { 's', NULL, 0, opt_error_stdout, 0,
- N_("redirect error messages to stdout"), NULL },
- { 'i', NULL, 1, opt_include_option, 0,
- N_("add include path"), N_("path") },
- { 'I', NULL, 1, opt_include_option, 0,
- N_("add include path"), N_("path") },
- { 'P', NULL, 1, opt_preproc_option, 0,
- N_("pre-include file"), N_("filename") },
- { 'd', NULL, 1, opt_preproc_option, 1,
- N_("pre-define a macro, optionally to value"), N_("macro[=value]") },
- { 'D', NULL, 1, opt_preproc_option, 1,
- N_("pre-define a macro, optionally to value"), N_("macro[=value]") },
- { 'u', NULL, 1, opt_preproc_option, 2,
- N_("undefine a macro"), N_("macro") },
- { 'U', NULL, 1, opt_preproc_option, 2,
- N_("undefine a macro"), N_("macro") },
- { 'X', NULL, 1, opt_ewmsg_handler, 0,
- N_("select error/warning message style (`gnu' or `vc')"), N_("style") },
- { 0, "prefix", 1, opt_prefix_handler, 0,
- N_("prepend argument to name of all external symbols"), N_("prefix") },
- { 0, "suffix", 1, opt_suffix_handler, 0,
- N_("append argument to name of all external symbols"), N_("suffix") },
- { 0, "postfix", 1, opt_suffix_handler, 0,
- N_("append argument to name of all external symbols"), N_("suffix") },
-#if defined(CMAKE_BUILD) && defined(BUILD_SHARED_LIBS)
- { 'N', "plugin", 1, opt_plugin_handler, 0,
- N_("load plugin module"), N_("plugin") },
-#endif
-};
-
-/* version message */
-/*@observer@*/ static const char *version_msg[] = {
- PACKAGE_STRING,
- "Compiled on " __DATE__ ".",
- "Copyright (c) 2001-2010 Peter Johnson and other Yasm developers.",
- "Run yasm --license for licensing overview and summary."
-};
-
-/* help messages */
-/*@observer@*/ static const char *help_head = N_(
- "usage: vsyasm [option]* file...\n"
- "Options:\n");
-/*@observer@*/ static const char *help_tail = N_(
- "\n"
- "Files are asm sources to be assembled.\n"
- "\n"
- "Sample invocation:\n"
- " vsyasm -f win64 -o objdir source1.asm source2.asm\n"
- "\n"
- "All options apply to all files.\n"
- "\n"
- "Report bugs to bug-yasm@tortall.net\n");
-
-/* parsed command line storage until appropriate modules have been loaded */
-typedef STAILQ_HEAD(constcharparam_head, constcharparam) constcharparam_head;
-
-typedef struct constcharparam {
- STAILQ_ENTRY(constcharparam) link;
- const char *param;
- int id;
-} constcharparam;
-
-static constcharparam_head preproc_options;
-static constcharparam_head input_files;
-static int num_input_files = 0;
-
-static int
-do_assemble(const char *in_filename)
-{
- yasm_object *object;
- const char *base_filename;
- char *fn = NULL;
- char *obj_filename, *list_filename = NULL, *map_filename = NULL;
- /*@null@*/ FILE *obj = NULL;
- yasm_arch_create_error arch_error;
- yasm_linemap *linemap;
- yasm_arch *arch = NULL;
- yasm_preproc *preproc = NULL;
- yasm_errwarns *errwarns = yasm_errwarns_create();
- int i, matched;
-
- /* Initialize line map */
- linemap = yasm_linemap_create();
- yasm_linemap_set(linemap, in_filename, 0, 1, 1);
-
- /* determine the output filenames */
- /* replace (or add) extension to base filename */
- yasm__splitpath(in_filename, &base_filename);
- if (base_filename[0] != '\0')
- fn = replace_extension(base_filename, objext);
- if (!fn)
- {
- print_error(_("could not determine output filename for `%s'"),
- in_filename);
- return EXIT_FAILURE;
- }
- obj_filename = yasm__combpath(objdir_pathname, fn);
- yasm_xfree(fn);
-
- if (listdir_pathname) {
- fn = replace_extension(base_filename, listext);
- if (!fn)
- {
- print_error(_("could not determine list filename for `%s'"),
- in_filename);
- return EXIT_FAILURE;
- }
- list_filename = yasm__combpath(listdir_pathname, fn);
- yasm_xfree(fn);
- }
-
- if (mapdir_pathname) {
- fn = replace_extension(base_filename, mapext);
- if (!fn)
- {
- print_error(_("could not determine map filename for `%s'"),
- in_filename);
- return EXIT_FAILURE;
- }
- map_filename = yasm__combpath(mapdir_pathname, fn);
- yasm_xfree(fn);
- }
-
- /* Set up architecture using machine and parser. */
- if (!machine_name) {
- /* If we're using x86 and the default objfmt bits is 64, default the
- * machine to amd64. When we get more arches with multiple machines,
- * we should do this in a more modular fashion.
- */
- if (strcmp(cur_arch_module->keyword, "x86") == 0 &&
- cur_objfmt_module->default_x86_mode_bits == 64)
- machine_name = yasm__xstrdup("amd64");
- else
- machine_name =
- yasm__xstrdup(cur_arch_module->default_machine_keyword);
- }
-
- arch = yasm_arch_create(cur_arch_module, machine_name,
- cur_parser_module->keyword, &arch_error);
- if (!arch) {
- switch (arch_error) {
- case YASM_ARCH_CREATE_BAD_MACHINE:
- print_error(_("%s: `%s' is not a valid %s for %s `%s'"),
- _("FATAL"), machine_name, _("machine"),
- _("architecture"), cur_arch_module->keyword);
- break;
- case YASM_ARCH_CREATE_BAD_PARSER:
- print_error(_("%s: `%s' is not a valid %s for %s `%s'"),
- _("FATAL"), cur_parser_module->keyword,
- _("parser"), _("architecture"),
- cur_arch_module->keyword);
- break;
- default:
- print_error(_("%s: unknown architecture error"), _("FATAL"));
- }
-
- return EXIT_FAILURE;
- }
-
- /* Create object */
- object = yasm_object_create(in_filename, obj_filename, arch,
- cur_objfmt_module, cur_dbgfmt_module);
- if (!object) {
- yasm_error_class eclass;
- unsigned long xrefline;
- /*@only@*/ /*@null@*/ char *estr, *xrefstr;
-
- yasm_error_fetch(&eclass, &estr, &xrefline, &xrefstr);
- print_error("%s: %s", _("FATAL"), estr);
- yasm_xfree(estr);
- yasm_xfree(xrefstr);
- return EXIT_FAILURE;
- }
-
- /* Get a fresh copy of objfmt_module as it may have changed. */
- cur_objfmt_module = ((yasm_objfmt_base *)object->objfmt)->module;
-
- /* Check to see if the requested preprocessor is in the allowed list
- * for the active parser.
- */
- matched = 0;
- for (i=0; cur_parser_module->preproc_keywords[i]; i++)
- if (yasm__strcasecmp(cur_parser_module->preproc_keywords[i],
- cur_preproc_module->keyword) == 0)
- matched = 1;
- if (!matched) {
- print_error(_("%s: `%s' is not a valid %s for %s `%s'"), _("FATAL"),
- cur_preproc_module->keyword, _("preprocessor"),
- _("parser"), cur_parser_module->keyword);
- yasm_object_destroy(object);
- return EXIT_FAILURE;
- }
-
- if (global_prefix)
- yasm_object_set_global_prefix(object, global_prefix);
- if (global_suffix)
- yasm_object_set_global_suffix(object, global_suffix);
-
- preproc = yasm_preproc_create(cur_preproc_module, in_filename,
- object->symtab, linemap, errwarns);
-
- apply_preproc_builtins(preproc);
- apply_preproc_standard_macros(preproc, cur_parser_module->stdmacs);
- apply_preproc_standard_macros(preproc, cur_objfmt_module->stdmacs);
- apply_preproc_saved_options(preproc);
-
- /* Get initial x86 BITS setting from object format */
- if (strcmp(cur_arch_module->keyword, "x86") == 0) {
- yasm_arch_set_var(arch, "mode_bits",
- cur_objfmt_module->default_x86_mode_bits);
- }
-
- yasm_arch_set_var(arch, "force_strict", force_strict);
-
- /* Try to enable the map file via a map NASM directive. This is
- * somewhat of a hack.
- */
- if (map_filename) {
- const yasm_directive *dir = &cur_objfmt_module->directives[0];
- matched = 0;
- for (; dir && dir->name; dir++) {
- if (yasm__strcasecmp(dir->name, "map") == 0 &&
- yasm__strcasecmp(dir->parser, "nasm") == 0) {
- yasm_valparamhead vps;
- yasm_valparam *vp;
- matched = 1;
- yasm_vps_initialize(&vps);
- vp = yasm_vp_create_string(NULL, yasm__xstrdup(map_filename));
- yasm_vps_append(&vps, vp);
- dir->handler(object, &vps, NULL, 0);
- yasm_vps_delete(&vps);
- }
- }
- if (!matched) {
- print_error(
- _("warning: object format `%s' does not support map files"),
- cur_objfmt_module->keyword);
- }
- }
-
- /* Parse! */
- cur_parser_module->do_parse(object, preproc, list_filename != NULL,
- linemap, errwarns);
-
- if (check_errors(errwarns, object, linemap, preproc, arch) == EXIT_FAILURE)
- return EXIT_FAILURE;
-
- /* Finalize parse */
- yasm_object_finalize(object, errwarns);
- if (check_errors(errwarns, object, linemap, preproc, arch) == EXIT_FAILURE)
- return EXIT_FAILURE;
-
- /* Optimize */
- yasm_object_optimize(object, errwarns);
- if (check_errors(errwarns, object, linemap, preproc, arch) == EXIT_FAILURE)
- return EXIT_FAILURE;
-
- /* generate any debugging information */
- yasm_dbgfmt_generate(object, linemap, errwarns);
- if (check_errors(errwarns, object, linemap, preproc, arch) == EXIT_FAILURE)
- return EXIT_FAILURE;
-
- /* open the object file for output (if not already opened by dbg objfmt) */
- if (!obj && strcmp(cur_objfmt_module->keyword, "dbg") != 0) {
- obj = open_file(obj_filename, "wb");
- if (!obj) {
- yasm_preproc_destroy(preproc);
- yasm_object_destroy(object);
- yasm_linemap_destroy(linemap);
- yasm_errwarns_destroy(errwarns);
- return EXIT_FAILURE;
- }
- }
-
- /* Write the object file */
- yasm_objfmt_output(object, obj?obj:stderr,
- strcmp(cur_dbgfmt_module->keyword, "null"), errwarns);
-
- /* Close object file */
- if (obj)
- fclose(obj);
-
- /* If we had an error at this point, we also need to delete the output
- * object file (to make sure it's not left newer than the source).
- */
- if (yasm_errwarns_num_errors(errwarns, warning_error) > 0)
- remove(obj_filename);
- if (check_errors(errwarns, object, linemap, preproc, arch) == EXIT_FAILURE)
- return EXIT_FAILURE;
-
- /* Open and write the list file */
- if (list_filename) {
- yasm_listfmt *cur_listfmt;
- FILE *list = open_file(list_filename, "wt");
- if (!list) {
- yasm_preproc_destroy(preproc);
- yasm_object_destroy(object);
- yasm_linemap_destroy(linemap);
- yasm_errwarns_destroy(errwarns);
- return EXIT_FAILURE;
- }
- /* Initialize the list format */
- cur_listfmt = yasm_listfmt_create(cur_listfmt_module, in_filename,
- obj_filename);
- yasm_listfmt_output(cur_listfmt, list, linemap, arch);
- yasm_listfmt_destroy(cur_listfmt);
- fclose(list);
- }
-
- yasm_errwarns_output_all(errwarns, linemap, warning_error,
- print_yasm_error, print_yasm_warning);
-
- yasm_preproc_destroy(preproc);
- yasm_object_destroy(object);
- yasm_linemap_destroy(linemap);
- yasm_errwarns_destroy(errwarns);
-
- yasm_xfree(obj_filename);
- yasm_xfree(map_filename);
- yasm_xfree(list_filename);
- return EXIT_SUCCESS;
-}
-
-/* main function */
-/*@-globstate -unrecog@*/
-int
-main(int argc, char *argv[])
-{
- size_t i;
- constcharparam *infile;
-
- errfile = stderr;
-
-#if defined(HAVE_SETLOCALE) && defined(HAVE_LC_MESSAGES)
- setlocale(LC_MESSAGES, "");
-#endif
-#if defined(LOCALEDIR)
- bindtextdomain(PACKAGE, LOCALEDIR);
-#endif
- textdomain(PACKAGE);
-
- /* Initialize errwarn handling */
- yasm_internal_error_ = handle_yasm_int_error;
- yasm_fatal = handle_yasm_fatal;
- yasm_gettext_hook = handle_yasm_gettext;
- yasm_errwarn_initialize();
-
- /* Initialize BitVector (needed for intnum/floatnum). */
- if (BitVector_Boot() != ErrCode_Ok) {
- print_error(_("%s: could not initialize BitVector"), _("FATAL"));
- return EXIT_FAILURE;
- }
-
- /* Initialize intnum and floatnum */
- yasm_intnum_initialize();
- yasm_floatnum_initialize();
-
-#ifdef CMAKE_BUILD
- /* Load standard modules */
-#ifdef BUILD_SHARED_LIBS
- if (!load_plugin("yasmstd")) {
- print_error(_("%s: could not load standard modules"), _("FATAL"));
- return EXIT_FAILURE;
- }
-#else
- yasm_init_plugin();
-#endif
-#endif
-
- /* Initialize parameter storage */
- STAILQ_INIT(&preproc_options);
- STAILQ_INIT(&input_files);
-
- if (parse_cmdline(argc, argv, options, NELEMS(options), print_error))
- return EXIT_FAILURE;
-
- switch (special_options) {
- case SPECIAL_SHOW_HELP:
- /* Does gettext calls internally */
- help_msg(help_head, help_tail, options, NELEMS(options));
- return EXIT_SUCCESS;
- case SPECIAL_SHOW_VERSION:
- for (i=0; i<NELEMS(version_msg); i++)
- printf("%s\n", version_msg[i]);
- return EXIT_SUCCESS;
- case SPECIAL_SHOW_LICENSE:
- for (i=0; i<NELEMS(license_msg); i++)
- printf("%s\n", license_msg[i]);
- return EXIT_SUCCESS;
- case SPECIAL_LISTED:
- /* Printed out earlier */
- return EXIT_SUCCESS;
- }
-
- /* Open error file if specified. */
- if (error_filename) {
- int j;
- errfile = open_file(error_filename, "wt");
- if (!errfile)
- return EXIT_FAILURE;
-
- /* Print command line as first line in error file. */
- for (j=0; j<argc; j++)
- fprintf(errfile, "%s%c", argv[j], (j==argc-1) ? '\n' : ' ');
- }
-
- /* If not already specified, default to win32 as the object format. */
- if (!cur_objfmt_module) {
- if (!objfmt_keyword)
- objfmt_keyword = yasm__xstrdup("win32");
- cur_objfmt_module = yasm_load_objfmt(objfmt_keyword);
- if (!cur_objfmt_module) {
- print_error(_("%s: could not load default %s"), _("FATAL"),
- _("object format"));
- return EXIT_FAILURE;
- }
- }
-
- /* Default to x86 as the architecture */
- if (!cur_arch_module) {
- cur_arch_module = yasm_load_arch("x86");
- if (!cur_arch_module) {
- print_error(_("%s: could not load default %s"), _("FATAL"),
- _("architecture"));
- return EXIT_FAILURE;
- }
- }
-
- /* Check for arch help */
- if (machine_name && strcmp(machine_name, "help") == 0) {
- const yasm_arch_machine *m = cur_arch_module->machines;
- printf(_("Available %s for %s `%s':\n"), _("machines"),
- _("architecture"), cur_arch_module->keyword);
- while (m->keyword && m->name) {
- print_list_keyword_desc(m->name, m->keyword);
- m++;
- }
- return EXIT_SUCCESS;
- }
-
- /* Default to NASM as the parser */
- if (!cur_parser_module) {
- cur_parser_module = yasm_load_parser("nasm");
- if (!cur_parser_module) {
- print_error(_("%s: could not load default %s"), _("FATAL"),
- _("parser"));
- cleanup();
- return EXIT_FAILURE;
- }
- }
-
- /* If not already specified, default to the parser's default preproc. */
- if (!cur_preproc_module) {
- cur_preproc_module =
- yasm_load_preproc(cur_parser_module->default_preproc_keyword);
- if (!cur_preproc_module) {
- print_error(_("%s: could not load default %s"), _("FATAL"),
- _("preprocessor"));
- cleanup();
- return EXIT_FAILURE;
- }
- }
-
- /* Determine input filenames. */
- if (STAILQ_EMPTY(&input_files)) {
- print_error(_("No input files specified"));
- return EXIT_FAILURE;
- }
-
- /* If list file enabled, make sure we have a list format loaded. */
- if (listdir_pathname) {
- /* If not already specified, default to nasm as the list format. */
- if (!cur_listfmt_module) {
- cur_listfmt_module = yasm_load_listfmt("nasm");
- if (!cur_listfmt_module) {
- print_error(_("%s: could not load default %s"), _("FATAL"),
- _("list format"));
- return EXIT_FAILURE;
- }
- }
- }
-
- /* If not already specified, default to null as the debug format. */
- if (!cur_dbgfmt_module) {
- cur_dbgfmt_module = yasm_load_dbgfmt("null");
- if (!cur_dbgfmt_module) {
- print_error(_("%s: could not load default %s"), _("FATAL"),
- _("debug format"));
- return EXIT_FAILURE;
- }
- }
-
- /* If not already specified, output to the current directory. */
- if (!objdir_pathname)
- objdir_pathname = yasm__xstrdup("./");
- else if ((i = yasm__createpath(objdir_pathname)) > 0 &&
- num_input_files > 1) {
- objdir_pathname[i] = '/';
- objdir_pathname[i+1] = '\0';
- }
-
- /* Create other output directories if necessary */
- if (listdir_pathname && (i = yasm__createpath(listdir_pathname)) > 0 &&
- num_input_files > 1) {
- listdir_pathname[i] = '/';
- listdir_pathname[i+1] = '\0';
- }
- if (mapdir_pathname && (i = yasm__createpath(mapdir_pathname)) > 0 &&
- num_input_files > 1) {
- mapdir_pathname[i] = '/';
- mapdir_pathname[i+1] = '\0';
- }
-
- /* If not already specified, set file extensions */
- if (!objext && cur_objfmt_module->extension)
- objext = yasm__xstrdup(cur_objfmt_module->extension);
- if (!listext)
- listext = yasm__xstrdup("lst");
- if (!mapext)
- mapext = yasm__xstrdup("map");
-
- /* Assemble each input file. Terminate on first error. */
- STAILQ_FOREACH(infile, &input_files, link)
- {
- if (do_assemble(infile->param) == EXIT_FAILURE) {
- cleanup();
- return EXIT_FAILURE;
- }
- }
- cleanup();
- return EXIT_SUCCESS;
-}
-/*@=globstate =unrecog@*/
-
-/* Open the object file. Returns 0 on failure. */
-static FILE *
-open_file(const char *filename, const char *mode)
-{
- FILE *f;
-
- f = fopen(filename, mode);
- if (!f)
- print_error(_("could not open file `%s'"), filename);
- return f;
-}
-
-static int
-check_errors(yasm_errwarns *errwarns, yasm_object *object,
- yasm_linemap *linemap, yasm_preproc *preproc, yasm_arch *arch)
-{
- if (yasm_errwarns_num_errors(errwarns, warning_error) > 0) {
- yasm_errwarns_output_all(errwarns, linemap, warning_error,
- print_yasm_error, print_yasm_warning);
- yasm_preproc_destroy(preproc);
- yasm_object_destroy(object);
- yasm_linemap_destroy(linemap);
- yasm_errwarns_destroy(errwarns);
- return EXIT_FAILURE;
- }
- return EXIT_SUCCESS;
-}
-
-/* Define DO_FREE to 1 to enable deallocation of all data structures.
- * Useful for detecting memory leaks, but slows down execution unnecessarily
- * (as the OS will free everything we miss here).
- */
-#define DO_FREE 1
-
-/* Cleans up all allocated structures. */
-static void
-cleanup(void)
-{
- if (DO_FREE) {
- yasm_floatnum_cleanup();
- yasm_intnum_cleanup();
-
- yasm_errwarn_cleanup();
-
- BitVector_Shutdown();
- }
-
- if (DO_FREE) {
- free_input_filenames();
- if (objdir_pathname)
- yasm_xfree(objdir_pathname);
- if (listdir_pathname)
- yasm_xfree(listdir_pathname);
- if (mapdir_pathname)
- yasm_xfree(mapdir_pathname);
- if (objext)
- yasm_xfree(objext);
- if (listext)
- yasm_xfree(listext);
- if (mapext)
- yasm_xfree(mapext);
- if (machine_name)
- yasm_xfree(machine_name);
- if (objfmt_keyword)
- yasm_xfree(objfmt_keyword);
- free_preproc_saved_options();
- }
-
- if (errfile != stderr && errfile != stdout)
- fclose(errfile);
-#if defined(CMAKE_BUILD) && defined(BUILD_SHARED_LIBS)
- unload_plugins();
-#endif
-}
-
-static void
-free_input_filenames(void)
-{
- constcharparam *cp, *cpnext;
- cp = STAILQ_FIRST(&input_files);
- while (cp != NULL) {
- cpnext = STAILQ_NEXT(cp, link);
- yasm_xfree(cp);
- cp = cpnext;
- }
- STAILQ_INIT(&input_files);
-}
-
-/*
- * Command line options handlers
- */
-int
-not_an_option_handler(char *param)
-{
- constcharparam *cp;
- cp = yasm_xmalloc(sizeof(constcharparam));
- cp->param = param;
- cp->id = 0;
- STAILQ_INSERT_TAIL(&input_files, cp, link);
- ++num_input_files;
- return 0;
-}
-
-int
-other_option_handler(char *option)
-{
- /* Accept, but ignore, -O and -Onnn, for compatibility with NASM. */
- if (option[0] == '-' && option[1] == 'O') {
- int n = 2;
- for (;;) {
- if (option[n] == '\0')
- return 0;
- if (!isdigit(option[n]))
- return 1;
- n++;
- }
- }
- return 1;
-}
-
-static int
-opt_special_handler(/*@unused@*/ char *cmd, /*@unused@*/ char *param, int extra)
-{
- if (special_options == 0)
- special_options = extra;
- return 0;
-}
-
-static int
-opt_arch_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
-{
- assert(param != NULL);
- cur_arch_module = yasm_load_arch(param);
- if (!cur_arch_module) {
- if (!strcmp("help", param)) {
- printf(_("Available yasm %s:\n"), _("architectures"));
- yasm_list_arch(print_list_keyword_desc);
- special_options = SPECIAL_LISTED;
- return 0;
- }
- print_error(_("%s: unrecognized %s `%s'"), _("FATAL"),
- _("architecture"), param);
- exit(EXIT_FAILURE);
- }
- return 0;
-}
-
-static int
-opt_parser_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
-{
- assert(param != NULL);
- cur_parser_module = yasm_load_parser(param);
- if (!cur_parser_module) {
- if (!strcmp("help", param)) {
- printf(_("Available yasm %s:\n"), _("parsers"));
- yasm_list_parser(print_list_keyword_desc);
- special_options = SPECIAL_LISTED;
- return 0;
- }
- print_error(_("%s: unrecognized %s `%s'"), _("FATAL"), _("parser"),
- param);
- exit(EXIT_FAILURE);
- }
- return 0;
-}
-
-static int
-opt_preproc_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
-{
- assert(param != NULL);
- cur_preproc_module = yasm_load_preproc(param);
- if (!cur_preproc_module) {
- if (!strcmp("help", param)) {
- printf(_("Available yasm %s:\n"), _("preprocessors"));
- yasm_list_preproc(print_list_keyword_desc);
- special_options = SPECIAL_LISTED;
- return 0;
- }
- print_error(_("%s: unrecognized %s `%s'"), _("FATAL"),
- _("preprocessor"), param);
- exit(EXIT_FAILURE);
- }
- return 0;
-}
-
-static int
-opt_objfmt_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
-{
- size_t i;
- assert(param != NULL);
- cur_objfmt_module = yasm_load_objfmt(param);
- if (!cur_objfmt_module) {
- if (!strcmp("help", param)) {
- printf(_("Available yasm %s:\n"), _("object formats"));
- yasm_list_objfmt(print_list_keyword_desc);
- special_options = SPECIAL_LISTED;
- return 0;
- }
- print_error(_("%s: unrecognized %s `%s'"), _("FATAL"),
- _("object format"), param);
- exit(EXIT_FAILURE);
- }
- if (objfmt_keyword)
- yasm_xfree(objfmt_keyword);
- objfmt_keyword = yasm__xstrdup(param);
- for (i=0; i<strlen(objfmt_keyword); i++)
- objfmt_keyword[i] = tolower(objfmt_keyword[i]);
- return 0;
-}
-
-static int
-opt_dbgfmt_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
-{
- assert(param != NULL);
- cur_dbgfmt_module = yasm_load_dbgfmt(param);
- if (!cur_dbgfmt_module) {
- if (!strcmp("help", param)) {
- printf(_("Available yasm %s:\n"), _("debug formats"));
- yasm_list_dbgfmt(print_list_keyword_desc);
- special_options = SPECIAL_LISTED;
- return 0;
- }
- print_error(_("%s: unrecognized %s `%s'"), _("FATAL"),
- _("debug format"), param);
- exit(EXIT_FAILURE);
- }
- return 0;
-}
-
-static int
-opt_listfmt_handler(/*@unused@*/ char *cmd, char *param,
- /*@unused@*/ int extra)
-{
- assert(param != NULL);
- cur_listfmt_module = yasm_load_listfmt(param);
- if (!cur_listfmt_module) {
- if (!strcmp("help", param)) {
- printf(_("Available yasm %s:\n"), _("list formats"));
- yasm_list_listfmt(print_list_keyword_desc);
- special_options = SPECIAL_LISTED;
- return 0;
- }
- print_error(_("%s: unrecognized %s `%s'"), _("FATAL"),
- _("list format"), param);
- exit(EXIT_FAILURE);
- }
- return 0;
-}
-
-static int
-opt_listdir_handler(/*@unused@*/ char *cmd, char *param,
- /*@unused@*/ int extra)
-{
- if (listdir_pathname) {
- print_error(
- _("warning: can output to only one list dir, last specified used"));
- yasm_xfree(listdir_pathname);
- }
-
- assert(param != NULL);
- listdir_pathname = yasm_xmalloc(strlen(param)+2);
- strcpy(listdir_pathname, param);
-
- return 0;
-}
-
-static int
-opt_objdir_handler(/*@unused@*/ char *cmd, char *param,
- /*@unused@*/ int extra)
-{
- if (objdir_pathname) {
- print_error(
- _("warning: can output to only one object dir, last specified used"));
- yasm_xfree(objdir_pathname);
- }
-
- assert(param != NULL);
- objdir_pathname = yasm_xmalloc(strlen(param)+2);
- strcpy(objdir_pathname, param);
-
- return 0;
-}
-
-static int
-opt_mapdir_handler(/*@unused@*/ char *cmd, char *param,
- /*@unused@*/ int extra)
-{
- if (mapdir_pathname) {
- print_error(
- _("warning: can output to only one map file, last specified used"));
- yasm_xfree(mapdir_pathname);
- }
-
- assert(param != NULL);
- mapdir_pathname = yasm_xmalloc(strlen(param)+2);
- strcpy(mapdir_pathname, param);
-
- return 0;
-}
-
-static int
-opt_listext_handler(/*@unused@*/ char *cmd, char *param,
- /*@unused@*/ int extra)
-{
- if (listext) {
- print_error(
- _("warning: can set only one list extension, last specified used"));
- yasm_xfree(listext);
- }
- assert(param != NULL);
- listext = yasm__xstrdup(param);
- return 0;
-}
-
-static int
-opt_objext_handler(/*@unused@*/ char *cmd, char *param,
- /*@unused@*/ int extra)
-{
- if (objext) {
- print_error(
- _("warning: can set only one object extension, last specified used"));
- yasm_xfree(objext);
- }
- assert(param != NULL);
- objext = yasm__xstrdup(param);
- return 0;
-}
-
-static int
-opt_mapext_handler(/*@unused@*/ char *cmd, char *param,
- /*@unused@*/ int extra)
-{
- if (mapext) {
- print_error(
- _("warning: can set only one map extension, last specified used"));
- yasm_xfree(mapext);
- }
- assert(param != NULL);
- mapext = yasm__xstrdup(param);
- return 0;
-}
-
-static int
-opt_machine_handler(/*@unused@*/ char *cmd, char *param,
- /*@unused@*/ int extra)
-{
- if (machine_name)
- yasm_xfree(machine_name);
-
- assert(param != NULL);
- machine_name = yasm__xstrdup(param);
-
- return 0;
-}
-
-static int
-opt_strict_handler(/*@unused@*/ char *cmd,
- /*@unused@*/ /*@null@*/ char *param,
- /*@unused@*/ int extra)
-{
- force_strict = 1;
- return 0;
-}
-
-static int
-opt_warning_handler(char *cmd, /*@unused@*/ char *param, int extra)
-{
- /* is it disabling the warning instead of enabling? */
- void (*action)(yasm_warn_class wclass) = yasm_warn_enable;
-
- if (extra == 1) {
- /* -w, disable warnings */
- yasm_warn_disable_all();
- return 0;
- }
-
- /* skip past 'W' */
- cmd++;
-
- /* detect no- prefix to disable the warning */
- if (cmd[0] == 'n' && cmd[1] == 'o' && cmd[2] == '-') {
- action = yasm_warn_disable;
- cmd += 3; /* skip past it to get to the warning name */
- }
-
- if (cmd[0] == '\0')
- /* just -W or -Wno-, so definitely not valid */
- return 1;
- else if (strcmp(cmd, "error") == 0)
- warning_error = (action == yasm_warn_enable);
- else if (strcmp(cmd, "unrecognized-char") == 0)
- action(YASM_WARN_UNREC_CHAR);
- else if (strcmp(cmd, "orphan-labels") == 0)
- action(YASM_WARN_ORPHAN_LABEL);
- else if (strcmp(cmd, "uninit-contents") == 0)
- action(YASM_WARN_UNINIT_CONTENTS);
- else if (strcmp(cmd, "size-override") == 0)
- action(YASM_WARN_SIZE_OVERRIDE);
- else
- return 1;
-
- return 0;
-}
-
-static int
-opt_error_file(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
-{
- if (error_filename) {
- print_error(
- _("warning: can output to only one error file, last specified used"));
- yasm_xfree(error_filename);
- }
-
- assert(param != NULL);
- error_filename = yasm__xstrdup(param);
-
- return 0;
-}
-
-static int
-opt_error_stdout(/*@unused@*/ char *cmd, /*@unused@*/ char *param,
- /*@unused@*/ int extra)
-{
- /* Clear any specified error filename */
- if (error_filename) {
- yasm_xfree(error_filename);
- error_filename = NULL;
- }
- errfile = stdout;
- return 0;
-}
-
-static int
-opt_include_option(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
-{
- yasm_add_include_path(param);
- return 0;
-}
-
-static int
-opt_preproc_option(/*@unused@*/ char *cmd, char *param, int extra)
-{
- constcharparam *cp;
- cp = yasm_xmalloc(sizeof(constcharparam));
- cp->param = param;
- cp->id = extra;
- STAILQ_INSERT_TAIL(&preproc_options, cp, link);
- return 0;
-}
-
-static int
-opt_ewmsg_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
-{
- if (yasm__strcasecmp(param, "gnu") == 0 ||
- yasm__strcasecmp(param, "gcc") == 0) {
- ewmsg_style = EWSTYLE_GNU;
- } else if (yasm__strcasecmp(param, "vc") == 0) {
- ewmsg_style = EWSTYLE_VC;
- } else
- print_error(_("warning: unrecognized message style `%s'"), param);
-
- return 0;
-}
-
-static int
-opt_prefix_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
-{
- if (global_prefix)
- yasm_xfree(global_prefix);
-
- assert(param != NULL);
- global_prefix = yasm__xstrdup(param);
-
- return 0;
-}
-
-static int
-opt_suffix_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
-{
- if (global_suffix)
- yasm_xfree(global_suffix);
-
- assert(param != NULL);
- global_suffix = yasm__xstrdup(param);
-
- return 0;
-}
-
-#if defined(CMAKE_BUILD) && defined(BUILD_SHARED_LIBS)
-static int
-opt_plugin_handler(/*@unused@*/ char *cmd, char *param,
- /*@unused@*/ int extra)
-{
- if (!load_plugin(param))
- print_error(_("warning: could not load plugin `%s'"), param);
- return 0;
-}
-#endif
-
-static void
-apply_preproc_builtins(yasm_preproc *preproc)
-{
- char *predef;
-
- /* Define standard YASM assembly-time macro constants */
- predef = yasm_xmalloc(strlen("__YASM_OBJFMT__=")
- + strlen(objfmt_keyword) + 1);
- strcpy(predef, "__YASM_OBJFMT__=");
- strcat(predef, objfmt_keyword);
- yasm_preproc_define_builtin(preproc, predef);
- yasm_xfree(predef);
-}
-
-static void
-apply_preproc_standard_macros(yasm_preproc *preproc, const yasm_stdmac *stdmacs)
-{
- int i, matched;
-
- if (!stdmacs)
- return;
-
- matched = -1;
- for (i=0; stdmacs[i].parser; i++)
- if (yasm__strcasecmp(stdmacs[i].parser,
- cur_parser_module->keyword) == 0 &&
- yasm__strcasecmp(stdmacs[i].preproc,
- cur_preproc_module->keyword) == 0)
- matched = i;
- if (matched >= 0 && stdmacs[matched].macros)
- yasm_preproc_add_standard(preproc, stdmacs[matched].macros);
-}
-
-static void
-apply_preproc_saved_options(yasm_preproc *preproc)
-{
- constcharparam *cp;
-
- void (*funcs[3])(yasm_preproc *, const char *);
- funcs[0] = cur_preproc_module->add_include_file;
- funcs[1] = cur_preproc_module->predefine_macro;
- funcs[2] = cur_preproc_module->undefine_macro;
-
- STAILQ_FOREACH(cp, &preproc_options, link) {
- if (0 <= cp->id && cp->id < 3 && funcs[cp->id])
- funcs[cp->id](preproc, cp->param);
- }
-}
-
-static void
-free_preproc_saved_options(void)
-{
- constcharparam *cp, *cpnext;
- cp = STAILQ_FIRST(&preproc_options);
- while (cp != NULL) {
- cpnext = STAILQ_NEXT(cp, link);
- yasm_xfree(cp);
- cp = cpnext;
- }
- STAILQ_INIT(&preproc_options);
-}
-
-/* Replace extension on a filename (or append one if none is present).
- * If output filename would be identical to input (same extension out as in),
- * returns NULL.
- * A NULL ext means the trailing '.' should NOT be included, whereas a "" ext
- * means the trailing '.' should be included.
- */
-static char *
-replace_extension(const char *orig, /*@null@*/ const char *ext)
-{
- char *out, *outext;
- size_t outlen;
-
- /* allocate enough space for full existing name + extension */
- outlen = strlen(orig) + 2;
- if (ext)
- outlen += strlen(ext) + 1;
- out = yasm_xmalloc(outlen);
-
- strcpy(out, orig);
- outext = strrchr(out, '.');
- if (outext) {
- /* Existing extension: make sure it's not the same as the replacement
- * (as we don't want to overwrite the source file).
- */
- outext++; /* advance past '.' */
- if (ext && strcmp(outext, ext) == 0) {
- outext = NULL; /* indicate default should be used */
- print_error(_("file name already ends in `.%s'"), ext);
- }
- } else {
- /* No extension: make sure the output extension is not empty
- * (again, we don't want to overwrite the source file).
- */
- if (!ext) {
- outext = NULL;
- print_error(_("file name already has no extension"));
- } else {
- outext = strrchr(out, '\0'); /* point to end of the string */
- *outext++ = '.'; /* append '.' */
- }
- }
-
- /* replace extension or use default name */
- if (outext) {
- if (!ext) {
- /* Back up and replace '.' with string terminator */
- outext--;
- *outext = '\0';
- } else
- strcpy(outext, ext);
- } else
- return NULL;
-
- return out;
-}
-
-void
-print_list_keyword_desc(const char *name, const char *keyword)
-{
- printf("%4s%-12s%s\n", "", keyword, name);
-}
-
-static void
-print_error(const char *fmt, ...)
-{
- va_list va;
- fprintf(errfile, "vsyasm: ");
- va_start(va, fmt);
- vfprintf(errfile, fmt, va);
- va_end(va);
- fputc('\n', errfile);
-}
-
-static /*@exits@*/ void
-handle_yasm_int_error(const char *file, unsigned int line, const char *message)
-{
- fprintf(stderr, _("INTERNAL ERROR at %s, line %u: %s\n"), file, line,
- gettext(message));
-#ifdef HAVE_ABORT
- abort();
-#else
- exit(EXIT_FAILURE);
-#endif
-}
-
-static /*@exits@*/ void
-handle_yasm_fatal(const char *fmt, va_list va)
-{
- fprintf(errfile, "vsyasm: %s: ", _("FATAL"));
- vfprintf(errfile, gettext(fmt), va);
- fputc('\n', errfile);
- exit(EXIT_FAILURE);
-}
-
-static const char *
-handle_yasm_gettext(const char *msgid)
-{
- return gettext(msgid);
-}
-
-static const char *fmt[2] = {
- "%s:%lu: %s%s\n", /* GNU */
- "%s(%lu) : %s%s\n" /* VC */
-};
-
-static const char *fmt_noline[2] = {
- "%s: %s%s\n", /* GNU */
- "%s : %s%s\n" /* VC */
-};
-
-static void
-print_yasm_error(const char *filename, unsigned long line, const char *msg,
- const char *xref_fn, unsigned long xref_line,
- const char *xref_msg)
-{
- if (line)
- fprintf(errfile, fmt[ewmsg_style], filename, line, _("error: "), msg);
- else
- fprintf(errfile, fmt_noline[ewmsg_style], filename, _("error: "), msg);
-
- if (xref_fn && xref_msg) {
- if (xref_line)
- fprintf(errfile, fmt[ewmsg_style], xref_fn, xref_line, _("error: "),
- xref_msg);
- else
- fprintf(errfile, fmt_noline[ewmsg_style], xref_fn, _("error: "),
- xref_msg);
- }
-}
-
-static void
-print_yasm_warning(const char *filename, unsigned long line, const char *msg)
-{
- if (line)
- fprintf(errfile, fmt[ewmsg_style], filename, line, _("warning: "),
- msg);
- else
- fprintf(errfile, fmt_noline[ewmsg_style], filename, _("warning: "),
- msg);
-}
+/*
+ * Program entry point, command line parsing
+ *
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <ctype.h>
+#include <libyasm/compat-queue.h>
+#include <libyasm/bitvect.h>
+#include <libyasm.h>
+
+#ifdef HAVE_LIBGEN_H
+#include <libgen.h>
+#endif
+
+#include "frontends/yasm/yasm-options.h"
+
+#if defined(CMAKE_BUILD) && defined(BUILD_SHARED_LIBS)
+#include "frontends/yasm/yasm-plugin.h"
+#endif
+
+#include "license.c"
+
+#if defined(CMAKE_BUILD) && !defined(BUILD_SHARED_LIBS)
+void yasm_init_plugin(void);
+#endif
+
+/*@null@*/ /*@only@*/ static char *objdir_pathname = NULL;
+/*@null@*/ /*@only@*/ static char *global_prefix = NULL, *global_suffix = NULL;
+/*@null@*/ /*@only@*/ static char *listdir_pathname = NULL;
+/*@null@*/ /*@only@*/ static char *mapdir_pathname = NULL;
+/*@null@*/ /*@only@*/ static char *objext = NULL;
+/*@null@*/ /*@only@*/ static char *listext = NULL, *mapext = NULL;
+/*@null@*/ /*@only@*/ static char *machine_name = NULL;
+static int special_options = 0;
+/*@null@*/ /*@dependent@*/ static const yasm_arch_module *
+ cur_arch_module = NULL;
+/*@null@*/ /*@dependent@*/ static const yasm_parser_module *
+ cur_parser_module = NULL;
+/*@null@*/ /*@dependent@*/ static const yasm_preproc_module *
+ cur_preproc_module = NULL;
+/*@null@*/ static char *objfmt_keyword = NULL;
+/*@null@*/ /*@dependent@*/ static const yasm_objfmt_module *
+ cur_objfmt_module = NULL;
+/*@null@*/ /*@dependent@*/ static const yasm_dbgfmt_module *
+ cur_dbgfmt_module = NULL;
+/*@null@*/ /*@dependent@*/ static const yasm_listfmt_module *
+ cur_listfmt_module = NULL;
+static unsigned int force_strict = 0;
+static int warning_error = 0; /* warnings being treated as errors */
+static FILE *errfile;
+/*@null@*/ /*@only@*/ static char *error_filename = NULL;
+static enum {
+ EWSTYLE_GNU = 0,
+ EWSTYLE_VC
+} ewmsg_style = EWSTYLE_GNU;
+
+/*@null@*/ /*@dependent@*/ static FILE *open_file(const char *filename,
+ const char *mode);
+static int check_errors(/*@only@*/ yasm_errwarns *errwarns,
+ /*@only@*/ yasm_object *object,
+ /*@only@*/ yasm_linemap *linemap,
+ /*@only@*/ yasm_preproc *preproc,
+ /*@only@*/ yasm_arch *arch);
+static void cleanup(void);
+static void free_input_filenames(void);
+
+/* Forward declarations: cmd line parser handlers */
+static int opt_special_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_arch_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_parser_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_preproc_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_objfmt_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_dbgfmt_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_listfmt_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_listdir_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_objdir_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_mapdir_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_listext_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_objext_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_mapext_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_machine_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_strict_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_warning_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_error_file(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_error_stdout(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_include_option(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_preproc_option(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_ewmsg_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_prefix_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_suffix_handler(char *cmd, /*@null@*/ char *param, int extra);
+#if defined(CMAKE_BUILD) && defined(BUILD_SHARED_LIBS)
+static int opt_plugin_handler(char *cmd, /*@null@*/ char *param, int extra);
+#endif
+
+static /*@only@*/ char *replace_extension(const char *orig, /*@null@*/
+ const char *ext);
+static void print_error(const char *fmt, ...);
+
+static /*@exits@*/ void handle_yasm_int_error(const char *file,
+ unsigned int line,
+ const char *message);
+static /*@exits@*/ void handle_yasm_fatal(const char *message, va_list va);
+static const char *handle_yasm_gettext(const char *msgid);
+static void print_yasm_error(const char *filename, unsigned long line,
+ const char *msg, /*@null@*/ const char *xref_fn,
+ unsigned long xref_line,
+ /*@null@*/ const char *xref_msg);
+static void print_yasm_warning(const char *filename, unsigned long line,
+ const char *msg);
+
+static void apply_preproc_builtins(yasm_preproc *preproc);
+static void apply_preproc_standard_macros(yasm_preproc *preproc,
+ const yasm_stdmac *stdmacs);
+static void apply_preproc_saved_options(yasm_preproc *preproc);
+static void free_preproc_saved_options(void);
+static void print_list_keyword_desc(const char *name, const char *keyword);
+
+/* values for special_options */
+#define SPECIAL_SHOW_HELP 0x01
+#define SPECIAL_SHOW_VERSION 0x02
+#define SPECIAL_SHOW_LICENSE 0x04
+#define SPECIAL_LISTED 0x08
+
+/* command line options */
+static opt_option options[] =
+{
+ { 0, "version", 0, opt_special_handler, SPECIAL_SHOW_VERSION,
+ N_("show version text"), NULL },
+ { 0, "license", 0, opt_special_handler, SPECIAL_SHOW_LICENSE,
+ N_("show license text"), NULL },
+ { 'h', "help", 0, opt_special_handler, SPECIAL_SHOW_HELP,
+ N_("show help text"), NULL },
+ { 'a', "arch", 1, opt_arch_handler, 0,
+ N_("select architecture (list with -a help)"), N_("arch") },
+ { 'p', "parser", 1, opt_parser_handler, 0,
+ N_("select parser (list with -p help)"), N_("parser") },
+ { 'r', "preproc", 1, opt_preproc_handler, 0,
+ N_("select preprocessor (list with -r help)"), N_("preproc") },
+ { 'f', "oformat", 1, opt_objfmt_handler, 0,
+ N_("select object format (list with -f help)"), N_("format") },
+ { 'g', "dformat", 1, opt_dbgfmt_handler, 0,
+ N_("select debugging format (list with -g help)"), N_("debug") },
+ { 'L', "lformat", 1, opt_listfmt_handler, 0,
+ N_("select list format (list with -L help)"), N_("list") },
+ { 'l', "list", 1, opt_listdir_handler, 0,
+ N_("name of list-file output directory"), N_("pathname") },
+ { 'o', "objdir", 1, opt_objdir_handler, 0,
+ N_("name of object-file output directory"), N_("pathname") },
+ { 0, "mapdir", 1, opt_mapdir_handler, 0,
+ N_("name of map-file output directory"), N_("pathname") },
+ { 0, "listext", 1, opt_listext_handler, 0,
+ N_("list-file extension (default `lst')"), N_("ext") },
+ { 0, "objext", 1, opt_objext_handler, 0,
+ N_("object-file extension (default is by object format)"), N_("ext") },
+ { 0, "mapext", 1, opt_mapext_handler, 0,
+ N_("map-file extension (default `map')"), N_("ext") },
+ { 'm', "machine", 1, opt_machine_handler, 0,
+ N_("select machine (list with -m help)"), N_("machine") },
+ { 0, "force-strict", 0, opt_strict_handler, 0,
+ N_("treat all sized operands as if `strict' was used"), NULL },
+ { 'w', NULL, 0, opt_warning_handler, 1,
+ N_("inhibits warning messages"), NULL },
+ { 'W', NULL, 0, opt_warning_handler, 0,
+ N_("enables/disables warning"), NULL },
+ { 'E', NULL, 1, opt_error_file, 0,
+ N_("redirect error messages to file"), N_("file") },
+ { 's', NULL, 0, opt_error_stdout, 0,
+ N_("redirect error messages to stdout"), NULL },
+ { 'i', NULL, 1, opt_include_option, 0,
+ N_("add include path"), N_("path") },
+ { 'I', NULL, 1, opt_include_option, 0,
+ N_("add include path"), N_("path") },
+ { 'P', NULL, 1, opt_preproc_option, 0,
+ N_("pre-include file"), N_("filename") },
+ { 'd', NULL, 1, opt_preproc_option, 1,
+ N_("pre-define a macro, optionally to value"), N_("macro[=value]") },
+ { 'D', NULL, 1, opt_preproc_option, 1,
+ N_("pre-define a macro, optionally to value"), N_("macro[=value]") },
+ { 'u', NULL, 1, opt_preproc_option, 2,
+ N_("undefine a macro"), N_("macro") },
+ { 'U', NULL, 1, opt_preproc_option, 2,
+ N_("undefine a macro"), N_("macro") },
+ { 'X', NULL, 1, opt_ewmsg_handler, 0,
+ N_("select error/warning message style (`gnu' or `vc')"), N_("style") },
+ { 0, "prefix", 1, opt_prefix_handler, 0,
+ N_("prepend argument to name of all external symbols"), N_("prefix") },
+ { 0, "suffix", 1, opt_suffix_handler, 0,
+ N_("append argument to name of all external symbols"), N_("suffix") },
+ { 0, "postfix", 1, opt_suffix_handler, 0,
+ N_("append argument to name of all external symbols"), N_("suffix") },
+#if defined(CMAKE_BUILD) && defined(BUILD_SHARED_LIBS)
+ { 'N', "plugin", 1, opt_plugin_handler, 0,
+ N_("load plugin module"), N_("plugin") },
+#endif
+};
+
+/* version message */
+/*@observer@*/ static const char *version_msg[] = {
+ PACKAGE_STRING,
+ "Compiled on " __DATE__ ".",
+ "Copyright (c) 2001-2010 Peter Johnson and other Yasm developers.",
+ "Run yasm --license for licensing overview and summary."
+};
+
+/* help messages */
+/*@observer@*/ static const char *help_head = N_(
+ "usage: vsyasm [option]* file...\n"
+ "Options:\n");
+/*@observer@*/ static const char *help_tail = N_(
+ "\n"
+ "Files are asm sources to be assembled.\n"
+ "\n"
+ "Sample invocation:\n"
+ " vsyasm -f win64 -o objdir source1.asm source2.asm\n"
+ "\n"
+ "All options apply to all files.\n"
+ "\n"
+ "Report bugs to bug-yasm@tortall.net\n");
+
+/* parsed command line storage until appropriate modules have been loaded */
+typedef STAILQ_HEAD(constcharparam_head, constcharparam) constcharparam_head;
+
+typedef struct constcharparam {
+ STAILQ_ENTRY(constcharparam) link;
+ const char *param;
+ int id;
+} constcharparam;
+
+static constcharparam_head preproc_options;
+static constcharparam_head input_files;
+static int num_input_files = 0;
+
+static int
+do_assemble(const char *in_filename)
+{
+ yasm_object *object;
+ const char *base_filename;
+ char *fn = NULL;
+ char *obj_filename, *list_filename = NULL, *map_filename = NULL;
+ /*@null@*/ FILE *obj = NULL;
+ yasm_arch_create_error arch_error;
+ yasm_linemap *linemap;
+ yasm_arch *arch = NULL;
+ yasm_preproc *preproc = NULL;
+ yasm_errwarns *errwarns = yasm_errwarns_create();
+ int i, matched;
+
+ /* Initialize line map */
+ linemap = yasm_linemap_create();
+ yasm_linemap_set(linemap, in_filename, 0, 1, 1);
+
+ /* determine the output filenames */
+ /* replace (or add) extension to base filename */
+ yasm__splitpath(in_filename, &base_filename);
+ if (base_filename[0] != '\0')
+ fn = replace_extension(base_filename, objext);
+ if (!fn)
+ {
+ print_error(_("could not determine output filename for `%s'"),
+ in_filename);
+ return EXIT_FAILURE;
+ }
+ obj_filename = yasm__combpath(objdir_pathname, fn);
+ yasm_xfree(fn);
+
+ if (listdir_pathname) {
+ fn = replace_extension(base_filename, listext);
+ if (!fn)
+ {
+ print_error(_("could not determine list filename for `%s'"),
+ in_filename);
+ return EXIT_FAILURE;
+ }
+ list_filename = yasm__combpath(listdir_pathname, fn);
+ yasm_xfree(fn);
+ }
+
+ if (mapdir_pathname) {
+ fn = replace_extension(base_filename, mapext);
+ if (!fn)
+ {
+ print_error(_("could not determine map filename for `%s'"),
+ in_filename);
+ return EXIT_FAILURE;
+ }
+ map_filename = yasm__combpath(mapdir_pathname, fn);
+ yasm_xfree(fn);
+ }
+
+ /* Set up architecture using machine and parser. */
+ if (!machine_name) {
+ /* If we're using x86 and the default objfmt bits is 64, default the
+ * machine to amd64. When we get more arches with multiple machines,
+ * we should do this in a more modular fashion.
+ */
+ if (strcmp(cur_arch_module->keyword, "x86") == 0 &&
+ cur_objfmt_module->default_x86_mode_bits == 64)
+ machine_name = yasm__xstrdup("amd64");
+ else
+ machine_name =
+ yasm__xstrdup(cur_arch_module->default_machine_keyword);
+ }
+
+ arch = yasm_arch_create(cur_arch_module, machine_name,
+ cur_parser_module->keyword, &arch_error);
+ if (!arch) {
+ switch (arch_error) {
+ case YASM_ARCH_CREATE_BAD_MACHINE:
+ print_error(_("%s: `%s' is not a valid %s for %s `%s'"),
+ _("FATAL"), machine_name, _("machine"),
+ _("architecture"), cur_arch_module->keyword);
+ break;
+ case YASM_ARCH_CREATE_BAD_PARSER:
+ print_error(_("%s: `%s' is not a valid %s for %s `%s'"),
+ _("FATAL"), cur_parser_module->keyword,
+ _("parser"), _("architecture"),
+ cur_arch_module->keyword);
+ break;
+ default:
+ print_error(_("%s: unknown architecture error"), _("FATAL"));
+ }
+
+ return EXIT_FAILURE;
+ }
+
+ /* Create object */
+ object = yasm_object_create(in_filename, obj_filename, arch,
+ cur_objfmt_module, cur_dbgfmt_module);
+ if (!object) {
+ yasm_error_class eclass;
+ unsigned long xrefline;
+ /*@only@*/ /*@null@*/ char *estr, *xrefstr;
+
+ yasm_error_fetch(&eclass, &estr, &xrefline, &xrefstr);
+ print_error("%s: %s", _("FATAL"), estr);
+ yasm_xfree(estr);
+ yasm_xfree(xrefstr);
+ return EXIT_FAILURE;
+ }
+
+ /* Get a fresh copy of objfmt_module as it may have changed. */
+ cur_objfmt_module = ((yasm_objfmt_base *)object->objfmt)->module;
+
+ /* Check to see if the requested preprocessor is in the allowed list
+ * for the active parser.
+ */
+ matched = 0;
+ for (i=0; cur_parser_module->preproc_keywords[i]; i++)
+ if (yasm__strcasecmp(cur_parser_module->preproc_keywords[i],
+ cur_preproc_module->keyword) == 0)
+ matched = 1;
+ if (!matched) {
+ print_error(_("%s: `%s' is not a valid %s for %s `%s'"), _("FATAL"),
+ cur_preproc_module->keyword, _("preprocessor"),
+ _("parser"), cur_parser_module->keyword);
+ yasm_object_destroy(object);
+ return EXIT_FAILURE;
+ }
+
+ if (global_prefix)
+ yasm_object_set_global_prefix(object, global_prefix);
+ if (global_suffix)
+ yasm_object_set_global_suffix(object, global_suffix);
+
+ preproc = yasm_preproc_create(cur_preproc_module, in_filename,
+ object->symtab, linemap, errwarns);
+
+ apply_preproc_builtins(preproc);
+ apply_preproc_standard_macros(preproc, cur_parser_module->stdmacs);
+ apply_preproc_standard_macros(preproc, cur_objfmt_module->stdmacs);
+ apply_preproc_saved_options(preproc);
+
+ /* Get initial x86 BITS setting from object format */
+ if (strcmp(cur_arch_module->keyword, "x86") == 0) {
+ yasm_arch_set_var(arch, "mode_bits",
+ cur_objfmt_module->default_x86_mode_bits);
+ }
+
+ yasm_arch_set_var(arch, "force_strict", force_strict);
+
+ /* Try to enable the map file via a map NASM directive. This is
+ * somewhat of a hack.
+ */
+ if (map_filename) {
+ const yasm_directive *dir = &cur_objfmt_module->directives[0];
+ matched = 0;
+ for (; dir && dir->name; dir++) {
+ if (yasm__strcasecmp(dir->name, "map") == 0 &&
+ yasm__strcasecmp(dir->parser, "nasm") == 0) {
+ yasm_valparamhead vps;
+ yasm_valparam *vp;
+ matched = 1;
+ yasm_vps_initialize(&vps);
+ vp = yasm_vp_create_string(NULL, yasm__xstrdup(map_filename));
+ yasm_vps_append(&vps, vp);
+ dir->handler(object, &vps, NULL, 0);
+ yasm_vps_delete(&vps);
+ }
+ }
+ if (!matched) {
+ print_error(
+ _("warning: object format `%s' does not support map files"),
+ cur_objfmt_module->keyword);
+ }
+ }
+
+ /* Parse! */
+ cur_parser_module->do_parse(object, preproc, list_filename != NULL,
+ linemap, errwarns);
+
+ if (check_errors(errwarns, object, linemap, preproc, arch) == EXIT_FAILURE)
+ return EXIT_FAILURE;
+
+ /* Finalize parse */
+ yasm_object_finalize(object, errwarns);
+ if (check_errors(errwarns, object, linemap, preproc, arch) == EXIT_FAILURE)
+ return EXIT_FAILURE;
+
+ /* Optimize */
+ yasm_object_optimize(object, errwarns);
+ if (check_errors(errwarns, object, linemap, preproc, arch) == EXIT_FAILURE)
+ return EXIT_FAILURE;
+
+ /* generate any debugging information */
+ yasm_dbgfmt_generate(object, linemap, errwarns);
+ if (check_errors(errwarns, object, linemap, preproc, arch) == EXIT_FAILURE)
+ return EXIT_FAILURE;
+
+ /* open the object file for output (if not already opened by dbg objfmt) */
+ if (!obj && strcmp(cur_objfmt_module->keyword, "dbg") != 0) {
+ obj = open_file(obj_filename, "wb");
+ if (!obj) {
+ yasm_preproc_destroy(preproc);
+ yasm_object_destroy(object);
+ yasm_linemap_destroy(linemap);
+ yasm_errwarns_destroy(errwarns);
+ return EXIT_FAILURE;
+ }
+ }
+
+ /* Write the object file */
+ yasm_objfmt_output(object, obj?obj:stderr,
+ strcmp(cur_dbgfmt_module->keyword, "null"), errwarns);
+
+ /* Close object file */
+ if (obj)
+ fclose(obj);
+
+ /* If we had an error at this point, we also need to delete the output
+ * object file (to make sure it's not left newer than the source).
+ */
+ if (yasm_errwarns_num_errors(errwarns, warning_error) > 0)
+ remove(obj_filename);
+ if (check_errors(errwarns, object, linemap, preproc, arch) == EXIT_FAILURE)
+ return EXIT_FAILURE;
+
+ /* Open and write the list file */
+ if (list_filename) {
+ yasm_listfmt *cur_listfmt;
+ FILE *list = open_file(list_filename, "wt");
+ if (!list) {
+ yasm_preproc_destroy(preproc);
+ yasm_object_destroy(object);
+ yasm_linemap_destroy(linemap);
+ yasm_errwarns_destroy(errwarns);
+ return EXIT_FAILURE;
+ }
+ /* Initialize the list format */
+ cur_listfmt = yasm_listfmt_create(cur_listfmt_module, in_filename,
+ obj_filename);
+ yasm_listfmt_output(cur_listfmt, list, linemap, arch);
+ yasm_listfmt_destroy(cur_listfmt);
+ fclose(list);
+ }
+
+ yasm_errwarns_output_all(errwarns, linemap, warning_error,
+ print_yasm_error, print_yasm_warning);
+
+ yasm_preproc_destroy(preproc);
+ yasm_object_destroy(object);
+ yasm_linemap_destroy(linemap);
+ yasm_errwarns_destroy(errwarns);
+
+ yasm_xfree(obj_filename);
+ yasm_xfree(map_filename);
+ yasm_xfree(list_filename);
+ return EXIT_SUCCESS;
+}
+
+/* main function */
+/*@-globstate -unrecog@*/
+int
+main(int argc, char *argv[])
+{
+ size_t i;
+ constcharparam *infile;
+
+ errfile = stderr;
+
+#if defined(HAVE_SETLOCALE) && defined(HAVE_LC_MESSAGES)
+ setlocale(LC_MESSAGES, "");
+#endif
+#if defined(LOCALEDIR)
+ bindtextdomain(PACKAGE, LOCALEDIR);
+#endif
+ textdomain(PACKAGE);
+
+ /* Initialize errwarn handling */
+ yasm_internal_error_ = handle_yasm_int_error;
+ yasm_fatal = handle_yasm_fatal;
+ yasm_gettext_hook = handle_yasm_gettext;
+ yasm_errwarn_initialize();
+
+ /* Initialize BitVector (needed for intnum/floatnum). */
+ if (BitVector_Boot() != ErrCode_Ok) {
+ print_error(_("%s: could not initialize BitVector"), _("FATAL"));
+ return EXIT_FAILURE;
+ }
+
+ /* Initialize intnum and floatnum */
+ yasm_intnum_initialize();
+ yasm_floatnum_initialize();
+
+#ifdef CMAKE_BUILD
+ /* Load standard modules */
+#ifdef BUILD_SHARED_LIBS
+ if (!load_plugin("yasmstd")) {
+ print_error(_("%s: could not load standard modules"), _("FATAL"));
+ return EXIT_FAILURE;
+ }
+#else
+ yasm_init_plugin();
+#endif
+#endif
+
+ /* Initialize parameter storage */
+ STAILQ_INIT(&preproc_options);
+ STAILQ_INIT(&input_files);
+
+ if (parse_cmdline(argc, argv, options, NELEMS(options), print_error))
+ return EXIT_FAILURE;
+
+ switch (special_options) {
+ case SPECIAL_SHOW_HELP:
+ /* Does gettext calls internally */
+ help_msg(help_head, help_tail, options, NELEMS(options));
+ return EXIT_SUCCESS;
+ case SPECIAL_SHOW_VERSION:
+ for (i=0; i<NELEMS(version_msg); i++)
+ printf("%s\n", version_msg[i]);
+ return EXIT_SUCCESS;
+ case SPECIAL_SHOW_LICENSE:
+ for (i=0; i<NELEMS(license_msg); i++)
+ printf("%s\n", license_msg[i]);
+ return EXIT_SUCCESS;
+ case SPECIAL_LISTED:
+ /* Printed out earlier */
+ return EXIT_SUCCESS;
+ }
+
+ /* Open error file if specified. */
+ if (error_filename) {
+ int j;
+ errfile = open_file(error_filename, "wt");
+ if (!errfile)
+ return EXIT_FAILURE;
+
+ /* Print command line as first line in error file. */
+ for (j=0; j<argc; j++)
+ fprintf(errfile, "%s%c", argv[j], (j==argc-1) ? '\n' : ' ');
+ }
+
+ /* If not already specified, default to win32 as the object format. */
+ if (!cur_objfmt_module) {
+ if (!objfmt_keyword)
+ objfmt_keyword = yasm__xstrdup("win32");
+ cur_objfmt_module = yasm_load_objfmt(objfmt_keyword);
+ if (!cur_objfmt_module) {
+ print_error(_("%s: could not load default %s"), _("FATAL"),
+ _("object format"));
+ return EXIT_FAILURE;
+ }
+ }
+
+ /* Default to x86 as the architecture */
+ if (!cur_arch_module) {
+ cur_arch_module = yasm_load_arch("x86");
+ if (!cur_arch_module) {
+ print_error(_("%s: could not load default %s"), _("FATAL"),
+ _("architecture"));
+ return EXIT_FAILURE;
+ }
+ }
+
+ /* Check for arch help */
+ if (machine_name && strcmp(machine_name, "help") == 0) {
+ const yasm_arch_machine *m = cur_arch_module->machines;
+ printf(_("Available %s for %s `%s':\n"), _("machines"),
+ _("architecture"), cur_arch_module->keyword);
+ while (m->keyword && m->name) {
+ print_list_keyword_desc(m->name, m->keyword);
+ m++;
+ }
+ return EXIT_SUCCESS;
+ }
+
+ /* Default to NASM as the parser */
+ if (!cur_parser_module) {
+ cur_parser_module = yasm_load_parser("nasm");
+ if (!cur_parser_module) {
+ print_error(_("%s: could not load default %s"), _("FATAL"),
+ _("parser"));
+ cleanup();
+ return EXIT_FAILURE;
+ }
+ }
+
+ /* If not already specified, default to the parser's default preproc. */
+ if (!cur_preproc_module) {
+ cur_preproc_module =
+ yasm_load_preproc(cur_parser_module->default_preproc_keyword);
+ if (!cur_preproc_module) {
+ print_error(_("%s: could not load default %s"), _("FATAL"),
+ _("preprocessor"));
+ cleanup();
+ return EXIT_FAILURE;
+ }
+ }
+
+ /* Determine input filenames. */
+ if (STAILQ_EMPTY(&input_files)) {
+ print_error(_("No input files specified"));
+ return EXIT_FAILURE;
+ }
+
+ /* If list file enabled, make sure we have a list format loaded. */
+ if (listdir_pathname) {
+ /* If not already specified, default to nasm as the list format. */
+ if (!cur_listfmt_module) {
+ cur_listfmt_module = yasm_load_listfmt("nasm");
+ if (!cur_listfmt_module) {
+ print_error(_("%s: could not load default %s"), _("FATAL"),
+ _("list format"));
+ return EXIT_FAILURE;
+ }
+ }
+ }
+
+ /* If not already specified, default to null as the debug format. */
+ if (!cur_dbgfmt_module) {
+ cur_dbgfmt_module = yasm_load_dbgfmt("null");
+ if (!cur_dbgfmt_module) {
+ print_error(_("%s: could not load default %s"), _("FATAL"),
+ _("debug format"));
+ return EXIT_FAILURE;
+ }
+ }
+
+ /* If not already specified, output to the current directory. */
+ if (!objdir_pathname)
+ objdir_pathname = yasm__xstrdup("./");
+ else if ((i = yasm__createpath(objdir_pathname)) > 0 &&
+ num_input_files > 1) {
+ objdir_pathname[i] = '/';
+ objdir_pathname[i+1] = '\0';
+ }
+
+ /* Create other output directories if necessary */
+ if (listdir_pathname && (i = yasm__createpath(listdir_pathname)) > 0 &&
+ num_input_files > 1) {
+ listdir_pathname[i] = '/';
+ listdir_pathname[i+1] = '\0';
+ }
+ if (mapdir_pathname && (i = yasm__createpath(mapdir_pathname)) > 0 &&
+ num_input_files > 1) {
+ mapdir_pathname[i] = '/';
+ mapdir_pathname[i+1] = '\0';
+ }
+
+ /* If not already specified, set file extensions */
+ if (!objext && cur_objfmt_module->extension)
+ objext = yasm__xstrdup(cur_objfmt_module->extension);
+ if (!listext)
+ listext = yasm__xstrdup("lst");
+ if (!mapext)
+ mapext = yasm__xstrdup("map");
+
+ /* Assemble each input file. Terminate on first error. */
+ STAILQ_FOREACH(infile, &input_files, link)
+ {
+ if (do_assemble(infile->param) == EXIT_FAILURE) {
+ cleanup();
+ return EXIT_FAILURE;
+ }
+ }
+ cleanup();
+ return EXIT_SUCCESS;
+}
+/*@=globstate =unrecog@*/
+
+/* Open the object file. Returns 0 on failure. */
+static FILE *
+open_file(const char *filename, const char *mode)
+{
+ FILE *f;
+
+ f = fopen(filename, mode);
+ if (!f)
+ print_error(_("could not open file `%s'"), filename);
+ return f;
+}
+
+static int
+check_errors(yasm_errwarns *errwarns, yasm_object *object,
+ yasm_linemap *linemap, yasm_preproc *preproc, yasm_arch *arch)
+{
+ if (yasm_errwarns_num_errors(errwarns, warning_error) > 0) {
+ yasm_errwarns_output_all(errwarns, linemap, warning_error,
+ print_yasm_error, print_yasm_warning);
+ yasm_preproc_destroy(preproc);
+ yasm_object_destroy(object);
+ yasm_linemap_destroy(linemap);
+ yasm_errwarns_destroy(errwarns);
+ return EXIT_FAILURE;
+ }
+ return EXIT_SUCCESS;
+}
+
+/* Define DO_FREE to 1 to enable deallocation of all data structures.
+ * Useful for detecting memory leaks, but slows down execution unnecessarily
+ * (as the OS will free everything we miss here).
+ */
+#define DO_FREE 1
+
+/* Cleans up all allocated structures. */
+static void
+cleanup(void)
+{
+ if (DO_FREE) {
+ yasm_floatnum_cleanup();
+ yasm_intnum_cleanup();
+
+ yasm_errwarn_cleanup();
+
+ BitVector_Shutdown();
+ }
+
+ if (DO_FREE) {
+ free_input_filenames();
+ if (objdir_pathname)
+ yasm_xfree(objdir_pathname);
+ if (listdir_pathname)
+ yasm_xfree(listdir_pathname);
+ if (mapdir_pathname)
+ yasm_xfree(mapdir_pathname);
+ if (objext)
+ yasm_xfree(objext);
+ if (listext)
+ yasm_xfree(listext);
+ if (mapext)
+ yasm_xfree(mapext);
+ if (machine_name)
+ yasm_xfree(machine_name);
+ if (objfmt_keyword)
+ yasm_xfree(objfmt_keyword);
+ free_preproc_saved_options();
+ }
+
+ if (errfile != stderr && errfile != stdout)
+ fclose(errfile);
+#if defined(CMAKE_BUILD) && defined(BUILD_SHARED_LIBS)
+ unload_plugins();
+#endif
+}
+
+static void
+free_input_filenames(void)
+{
+ constcharparam *cp, *cpnext;
+ cp = STAILQ_FIRST(&input_files);
+ while (cp != NULL) {
+ cpnext = STAILQ_NEXT(cp, link);
+ yasm_xfree(cp);
+ cp = cpnext;
+ }
+ STAILQ_INIT(&input_files);
+}
+
+/*
+ * Command line options handlers
+ */
+int
+not_an_option_handler(char *param)
+{
+ constcharparam *cp;
+ cp = yasm_xmalloc(sizeof(constcharparam));
+ cp->param = param;
+ cp->id = 0;
+ STAILQ_INSERT_TAIL(&input_files, cp, link);
+ ++num_input_files;
+ return 0;
+}
+
+int
+other_option_handler(char *option)
+{
+ /* Accept, but ignore, -O and -Onnn, for compatibility with NASM. */
+ if (option[0] == '-' && option[1] == 'O') {
+ int n = 2;
+ for (;;) {
+ if (option[n] == '\0')
+ return 0;
+ if (!isdigit(option[n]))
+ return 1;
+ n++;
+ }
+ }
+ return 1;
+}
+
+static int
+opt_special_handler(/*@unused@*/ char *cmd, /*@unused@*/ char *param, int extra)
+{
+ if (special_options == 0)
+ special_options = extra;
+ return 0;
+}
+
+static int
+opt_arch_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
+{
+ assert(param != NULL);
+ cur_arch_module = yasm_load_arch(param);
+ if (!cur_arch_module) {
+ if (!strcmp("help", param)) {
+ printf(_("Available yasm %s:\n"), _("architectures"));
+ yasm_list_arch(print_list_keyword_desc);
+ special_options = SPECIAL_LISTED;
+ return 0;
+ }
+ print_error(_("%s: unrecognized %s `%s'"), _("FATAL"),
+ _("architecture"), param);
+ exit(EXIT_FAILURE);
+ }
+ return 0;
+}
+
+static int
+opt_parser_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
+{
+ assert(param != NULL);
+ cur_parser_module = yasm_load_parser(param);
+ if (!cur_parser_module) {
+ if (!strcmp("help", param)) {
+ printf(_("Available yasm %s:\n"), _("parsers"));
+ yasm_list_parser(print_list_keyword_desc);
+ special_options = SPECIAL_LISTED;
+ return 0;
+ }
+ print_error(_("%s: unrecognized %s `%s'"), _("FATAL"), _("parser"),
+ param);
+ exit(EXIT_FAILURE);
+ }
+ return 0;
+}
+
+static int
+opt_preproc_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
+{
+ assert(param != NULL);
+ cur_preproc_module = yasm_load_preproc(param);
+ if (!cur_preproc_module) {
+ if (!strcmp("help", param)) {
+ printf(_("Available yasm %s:\n"), _("preprocessors"));
+ yasm_list_preproc(print_list_keyword_desc);
+ special_options = SPECIAL_LISTED;
+ return 0;
+ }
+ print_error(_("%s: unrecognized %s `%s'"), _("FATAL"),
+ _("preprocessor"), param);
+ exit(EXIT_FAILURE);
+ }
+ return 0;
+}
+
+static int
+opt_objfmt_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
+{
+ size_t i;
+ assert(param != NULL);
+ cur_objfmt_module = yasm_load_objfmt(param);
+ if (!cur_objfmt_module) {
+ if (!strcmp("help", param)) {
+ printf(_("Available yasm %s:\n"), _("object formats"));
+ yasm_list_objfmt(print_list_keyword_desc);
+ special_options = SPECIAL_LISTED;
+ return 0;
+ }
+ print_error(_("%s: unrecognized %s `%s'"), _("FATAL"),
+ _("object format"), param);
+ exit(EXIT_FAILURE);
+ }
+ if (objfmt_keyword)
+ yasm_xfree(objfmt_keyword);
+ objfmt_keyword = yasm__xstrdup(param);
+ for (i=0; i<strlen(objfmt_keyword); i++)
+ objfmt_keyword[i] = tolower(objfmt_keyword[i]);
+ return 0;
+}
+
+static int
+opt_dbgfmt_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
+{
+ assert(param != NULL);
+ cur_dbgfmt_module = yasm_load_dbgfmt(param);
+ if (!cur_dbgfmt_module) {
+ if (!strcmp("help", param)) {
+ printf(_("Available yasm %s:\n"), _("debug formats"));
+ yasm_list_dbgfmt(print_list_keyword_desc);
+ special_options = SPECIAL_LISTED;
+ return 0;
+ }
+ print_error(_("%s: unrecognized %s `%s'"), _("FATAL"),
+ _("debug format"), param);
+ exit(EXIT_FAILURE);
+ }
+ return 0;
+}
+
+static int
+opt_listfmt_handler(/*@unused@*/ char *cmd, char *param,
+ /*@unused@*/ int extra)
+{
+ assert(param != NULL);
+ cur_listfmt_module = yasm_load_listfmt(param);
+ if (!cur_listfmt_module) {
+ if (!strcmp("help", param)) {
+ printf(_("Available yasm %s:\n"), _("list formats"));
+ yasm_list_listfmt(print_list_keyword_desc);
+ special_options = SPECIAL_LISTED;
+ return 0;
+ }
+ print_error(_("%s: unrecognized %s `%s'"), _("FATAL"),
+ _("list format"), param);
+ exit(EXIT_FAILURE);
+ }
+ return 0;
+}
+
+static int
+opt_listdir_handler(/*@unused@*/ char *cmd, char *param,
+ /*@unused@*/ int extra)
+{
+ if (listdir_pathname) {
+ print_error(
+ _("warning: can output to only one list dir, last specified used"));
+ yasm_xfree(listdir_pathname);
+ }
+
+ assert(param != NULL);
+ listdir_pathname = yasm_xmalloc(strlen(param)+2);
+ strcpy(listdir_pathname, param);
+
+ return 0;
+}
+
+static int
+opt_objdir_handler(/*@unused@*/ char *cmd, char *param,
+ /*@unused@*/ int extra)
+{
+ if (objdir_pathname) {
+ print_error(
+ _("warning: can output to only one object dir, last specified used"));
+ yasm_xfree(objdir_pathname);
+ }
+
+ assert(param != NULL);
+ objdir_pathname = yasm_xmalloc(strlen(param)+2);
+ strcpy(objdir_pathname, param);
+
+ return 0;
+}
+
+static int
+opt_mapdir_handler(/*@unused@*/ char *cmd, char *param,
+ /*@unused@*/ int extra)
+{
+ if (mapdir_pathname) {
+ print_error(
+ _("warning: can output to only one map file, last specified used"));
+ yasm_xfree(mapdir_pathname);
+ }
+
+ assert(param != NULL);
+ mapdir_pathname = yasm_xmalloc(strlen(param)+2);
+ strcpy(mapdir_pathname, param);
+
+ return 0;
+}
+
+static int
+opt_listext_handler(/*@unused@*/ char *cmd, char *param,
+ /*@unused@*/ int extra)
+{
+ if (listext) {
+ print_error(
+ _("warning: can set only one list extension, last specified used"));
+ yasm_xfree(listext);
+ }
+ assert(param != NULL);
+ listext = yasm__xstrdup(param);
+ return 0;
+}
+
+static int
+opt_objext_handler(/*@unused@*/ char *cmd, char *param,
+ /*@unused@*/ int extra)
+{
+ if (objext) {
+ print_error(
+ _("warning: can set only one object extension, last specified used"));
+ yasm_xfree(objext);
+ }
+ assert(param != NULL);
+ objext = yasm__xstrdup(param);
+ return 0;
+}
+
+static int
+opt_mapext_handler(/*@unused@*/ char *cmd, char *param,
+ /*@unused@*/ int extra)
+{
+ if (mapext) {
+ print_error(
+ _("warning: can set only one map extension, last specified used"));
+ yasm_xfree(mapext);
+ }
+ assert(param != NULL);
+ mapext = yasm__xstrdup(param);
+ return 0;
+}
+
+static int
+opt_machine_handler(/*@unused@*/ char *cmd, char *param,
+ /*@unused@*/ int extra)
+{
+ if (machine_name)
+ yasm_xfree(machine_name);
+
+ assert(param != NULL);
+ machine_name = yasm__xstrdup(param);
+
+ return 0;
+}
+
+static int
+opt_strict_handler(/*@unused@*/ char *cmd,
+ /*@unused@*/ /*@null@*/ char *param,
+ /*@unused@*/ int extra)
+{
+ force_strict = 1;
+ return 0;
+}
+
+static int
+opt_warning_handler(char *cmd, /*@unused@*/ char *param, int extra)
+{
+ /* is it disabling the warning instead of enabling? */
+ void (*action)(yasm_warn_class wclass) = yasm_warn_enable;
+
+ if (extra == 1) {
+ /* -w, disable warnings */
+ yasm_warn_disable_all();
+ return 0;
+ }
+
+ /* skip past 'W' */
+ cmd++;
+
+ /* detect no- prefix to disable the warning */
+ if (cmd[0] == 'n' && cmd[1] == 'o' && cmd[2] == '-') {
+ action = yasm_warn_disable;
+ cmd += 3; /* skip past it to get to the warning name */
+ }
+
+ if (cmd[0] == '\0')
+ /* just -W or -Wno-, so definitely not valid */
+ return 1;
+ else if (strcmp(cmd, "error") == 0)
+ warning_error = (action == yasm_warn_enable);
+ else if (strcmp(cmd, "unrecognized-char") == 0)
+ action(YASM_WARN_UNREC_CHAR);
+ else if (strcmp(cmd, "orphan-labels") == 0)
+ action(YASM_WARN_ORPHAN_LABEL);
+ else if (strcmp(cmd, "uninit-contents") == 0)
+ action(YASM_WARN_UNINIT_CONTENTS);
+ else if (strcmp(cmd, "size-override") == 0)
+ action(YASM_WARN_SIZE_OVERRIDE);
+ else
+ return 1;
+
+ return 0;
+}
+
+static int
+opt_error_file(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
+{
+ if (error_filename) {
+ print_error(
+ _("warning: can output to only one error file, last specified used"));
+ yasm_xfree(error_filename);
+ }
+
+ assert(param != NULL);
+ error_filename = yasm__xstrdup(param);
+
+ return 0;
+}
+
+static int
+opt_error_stdout(/*@unused@*/ char *cmd, /*@unused@*/ char *param,
+ /*@unused@*/ int extra)
+{
+ /* Clear any specified error filename */
+ if (error_filename) {
+ yasm_xfree(error_filename);
+ error_filename = NULL;
+ }
+ errfile = stdout;
+ return 0;
+}
+
+static int
+opt_include_option(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
+{
+ yasm_add_include_path(param);
+ return 0;
+}
+
+static int
+opt_preproc_option(/*@unused@*/ char *cmd, char *param, int extra)
+{
+ constcharparam *cp;
+ cp = yasm_xmalloc(sizeof(constcharparam));
+ cp->param = param;
+ cp->id = extra;
+ STAILQ_INSERT_TAIL(&preproc_options, cp, link);
+ return 0;
+}
+
+static int
+opt_ewmsg_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
+{
+ if (yasm__strcasecmp(param, "gnu") == 0 ||
+ yasm__strcasecmp(param, "gcc") == 0) {
+ ewmsg_style = EWSTYLE_GNU;
+ } else if (yasm__strcasecmp(param, "vc") == 0) {
+ ewmsg_style = EWSTYLE_VC;
+ } else
+ print_error(_("warning: unrecognized message style `%s'"), param);
+
+ return 0;
+}
+
+static int
+opt_prefix_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
+{
+ if (global_prefix)
+ yasm_xfree(global_prefix);
+
+ assert(param != NULL);
+ global_prefix = yasm__xstrdup(param);
+
+ return 0;
+}
+
+static int
+opt_suffix_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
+{
+ if (global_suffix)
+ yasm_xfree(global_suffix);
+
+ assert(param != NULL);
+ global_suffix = yasm__xstrdup(param);
+
+ return 0;
+}
+
+#if defined(CMAKE_BUILD) && defined(BUILD_SHARED_LIBS)
+static int
+opt_plugin_handler(/*@unused@*/ char *cmd, char *param,
+ /*@unused@*/ int extra)
+{
+ if (!load_plugin(param))
+ print_error(_("warning: could not load plugin `%s'"), param);
+ return 0;
+}
+#endif
+
+static void
+apply_preproc_builtins(yasm_preproc *preproc)
+{
+ char *predef;
+
+ /* Define standard YASM assembly-time macro constants */
+ predef = yasm_xmalloc(strlen("__YASM_OBJFMT__=")
+ + strlen(objfmt_keyword) + 1);
+ strcpy(predef, "__YASM_OBJFMT__=");
+ strcat(predef, objfmt_keyword);
+ yasm_preproc_define_builtin(preproc, predef);
+ yasm_xfree(predef);
+}
+
+static void
+apply_preproc_standard_macros(yasm_preproc *preproc, const yasm_stdmac *stdmacs)
+{
+ int i, matched;
+
+ if (!stdmacs)
+ return;
+
+ matched = -1;
+ for (i=0; stdmacs[i].parser; i++)
+ if (yasm__strcasecmp(stdmacs[i].parser,
+ cur_parser_module->keyword) == 0 &&
+ yasm__strcasecmp(stdmacs[i].preproc,
+ cur_preproc_module->keyword) == 0)
+ matched = i;
+ if (matched >= 0 && stdmacs[matched].macros)
+ yasm_preproc_add_standard(preproc, stdmacs[matched].macros);
+}
+
+static void
+apply_preproc_saved_options(yasm_preproc *preproc)
+{
+ constcharparam *cp;
+
+ void (*funcs[3])(yasm_preproc *, const char *);
+ funcs[0] = cur_preproc_module->add_include_file;
+ funcs[1] = cur_preproc_module->predefine_macro;
+ funcs[2] = cur_preproc_module->undefine_macro;
+
+ STAILQ_FOREACH(cp, &preproc_options, link) {
+ if (0 <= cp->id && cp->id < 3 && funcs[cp->id])
+ funcs[cp->id](preproc, cp->param);
+ }
+}
+
+static void
+free_preproc_saved_options(void)
+{
+ constcharparam *cp, *cpnext;
+ cp = STAILQ_FIRST(&preproc_options);
+ while (cp != NULL) {
+ cpnext = STAILQ_NEXT(cp, link);
+ yasm_xfree(cp);
+ cp = cpnext;
+ }
+ STAILQ_INIT(&preproc_options);
+}
+
+/* Replace extension on a filename (or append one if none is present).
+ * If output filename would be identical to input (same extension out as in),
+ * returns NULL.
+ * A NULL ext means the trailing '.' should NOT be included, whereas a "" ext
+ * means the trailing '.' should be included.
+ */
+static char *
+replace_extension(const char *orig, /*@null@*/ const char *ext)
+{
+ char *out, *outext;
+ size_t outlen;
+
+ /* allocate enough space for full existing name + extension */
+ outlen = strlen(orig) + 2;
+ if (ext)
+ outlen += strlen(ext) + 1;
+ out = yasm_xmalloc(outlen);
+
+ strcpy(out, orig);
+ outext = strrchr(out, '.');
+ if (outext) {
+ /* Existing extension: make sure it's not the same as the replacement
+ * (as we don't want to overwrite the source file).
+ */
+ outext++; /* advance past '.' */
+ if (ext && strcmp(outext, ext) == 0) {
+ outext = NULL; /* indicate default should be used */
+ print_error(_("file name already ends in `.%s'"), ext);
+ }
+ } else {
+ /* No extension: make sure the output extension is not empty
+ * (again, we don't want to overwrite the source file).
+ */
+ if (!ext) {
+ outext = NULL;
+ print_error(_("file name already has no extension"));
+ } else {
+ outext = strrchr(out, '\0'); /* point to end of the string */
+ *outext++ = '.'; /* append '.' */
+ }
+ }
+
+ /* replace extension or use default name */
+ if (outext) {
+ if (!ext) {
+ /* Back up and replace '.' with string terminator */
+ outext--;
+ *outext = '\0';
+ } else
+ strcpy(outext, ext);
+ } else
+ return NULL;
+
+ return out;
+}
+
+void
+print_list_keyword_desc(const char *name, const char *keyword)
+{
+ printf("%4s%-12s%s\n", "", keyword, name);
+}
+
+static void
+print_error(const char *fmt, ...)
+{
+ va_list va;
+ fprintf(errfile, "vsyasm: ");
+ va_start(va, fmt);
+ vfprintf(errfile, fmt, va);
+ va_end(va);
+ fputc('\n', errfile);
+}
+
+static /*@exits@*/ void
+handle_yasm_int_error(const char *file, unsigned int line, const char *message)
+{
+ fprintf(stderr, _("INTERNAL ERROR at %s, line %u: %s\n"), file, line,
+ gettext(message));
+#ifdef HAVE_ABORT
+ abort();
+#else
+ exit(EXIT_FAILURE);
+#endif
+}
+
+static /*@exits@*/ void
+handle_yasm_fatal(const char *fmt, va_list va)
+{
+ fprintf(errfile, "vsyasm: %s: ", _("FATAL"));
+ vfprintf(errfile, gettext(fmt), va);
+ fputc('\n', errfile);
+ exit(EXIT_FAILURE);
+}
+
+static const char *
+handle_yasm_gettext(const char *msgid)
+{
+ return gettext(msgid);
+}
+
+static const char *fmt[2] = {
+ "%s:%lu: %s%s\n", /* GNU */
+ "%s(%lu) : %s%s\n" /* VC */
+};
+
+static const char *fmt_noline[2] = {
+ "%s: %s%s\n", /* GNU */
+ "%s : %s%s\n" /* VC */
+};
+
+static void
+print_yasm_error(const char *filename, unsigned long line, const char *msg,
+ const char *xref_fn, unsigned long xref_line,
+ const char *xref_msg)
+{
+ if (line)
+ fprintf(errfile, fmt[ewmsg_style], filename, line, _("error: "), msg);
+ else
+ fprintf(errfile, fmt_noline[ewmsg_style], filename, _("error: "), msg);
+
+ if (xref_fn && xref_msg) {
+ if (xref_line)
+ fprintf(errfile, fmt[ewmsg_style], xref_fn, xref_line, _("error: "),
+ xref_msg);
+ else
+ fprintf(errfile, fmt_noline[ewmsg_style], xref_fn, _("error: "),
+ xref_msg);
+ }
+}
+
+static void
+print_yasm_warning(const char *filename, unsigned long line, const char *msg)
+{
+ if (line)
+ fprintf(errfile, fmt[ewmsg_style], filename, line, _("warning: "),
+ msg);
+ else
+ fprintf(errfile, fmt_noline[ewmsg_style], filename, _("warning: "),
+ msg);
+}
diff --git a/contrib/tools/yasm/frontends/yasm/license.c b/contrib/tools/yasm/frontends/yasm/license.c
index 1259971244..35c5a04137 100644
--- a/contrib/tools/yasm/frontends/yasm/license.c
+++ b/contrib/tools/yasm/frontends/yasm/license.c
@@ -1,65 +1,65 @@
-/* This file auto-generated from COPYING by genstring.py - don't edit it */
-
-static const char* license_msg[] = {
- "Yasm is Copyright (c) 2001-2014 Peter Johnson and other Yasm developers.",
- "",
- "Yasm developers and/or contributors include:",
- "Peter Johnson",
- "Michael Urman",
- "Brian Gladman (Visual Studio build files, other fixes)",
- "Stanislav Karchebny (options parser)",
- "Mathieu Monnier (SSE4 instruction patches, NASM preprocessor additions)",
- "Anonymous \"NASM64\" developer (NASM preprocessor fixes)",
- "Stephen Polkowski (x86 instruction patches)",
- "Henryk Richter (Mach-O object format)",
- "Ben Skeggs (patches, bug reports)",
- "Alexei Svitkine (GAS preprocessor)",
- "Samuel Thibault (TASM parser and frontend)",
- "",
- "-----------------------------------",
- "Yasm licensing overview and summary",
- "-----------------------------------",
- "",
- "Note: This document does not provide legal advice nor is it the actual",
- "license of any part of Yasm. See the individual licenses for complete",
- "details. Consult a lawyer for legal advice.",
- "",
- "The primary license of Yasm is the 2-clause BSD license. Please use this",
- "license if you plan on submitting code to the project.",
- "",
- "Yasm has absolutely no warranty; not even for merchantibility or fitness",
- "for a particular purpose.",
- "",
- "-------",
- "Libyasm",
- "-------",
- "Libyasm is 2-clause or 3-clause BSD licensed, with the exception of",
- "bitvect, which is triple-licensed under the Artistic license, GPL, and",
- "LGPL. Libyasm is thus GPL and LGPL compatible. In addition, this also",
- "means that libyasm is free for binary-only distribution as long as the",
- "terms of the 3-clause BSD license and Artistic license (as it applies to",
- "bitvect) are fulfilled.",
- "",
- "-------",
- "Modules",
- "-------",
- "The modules are 2-clause or 3-clause BSD licensed.",
- "",
- "---------",
- "Frontends",
- "---------",
- "The frontends are 2-clause BSD licensed.",
- "",
- "-------------",
- "License Texts",
- "-------------",
- "The full text of all licenses are provided in separate files in the source",
- "distribution. Each source file may include the entire license (in the case",
- "of the BSD and Artistic licenses), or may reference the GPL or LGPL license",
- "file.",
- "",
- "BSD.txt - 2-clause and 3-clause BSD licenses",
- "Artistic.txt - Artistic license",
- "GNU_GPL-2.0 - GNU General Public License",
- "GNU_LGPL-2.0 - GNU Library General Public License",
-};
+/* This file auto-generated from COPYING by genstring.py - don't edit it */
+
+static const char* license_msg[] = {
+ "Yasm is Copyright (c) 2001-2014 Peter Johnson and other Yasm developers.",
+ "",
+ "Yasm developers and/or contributors include:",
+ "Peter Johnson",
+ "Michael Urman",
+ "Brian Gladman (Visual Studio build files, other fixes)",
+ "Stanislav Karchebny (options parser)",
+ "Mathieu Monnier (SSE4 instruction patches, NASM preprocessor additions)",
+ "Anonymous \"NASM64\" developer (NASM preprocessor fixes)",
+ "Stephen Polkowski (x86 instruction patches)",
+ "Henryk Richter (Mach-O object format)",
+ "Ben Skeggs (patches, bug reports)",
+ "Alexei Svitkine (GAS preprocessor)",
+ "Samuel Thibault (TASM parser and frontend)",
+ "",
+ "-----------------------------------",
+ "Yasm licensing overview and summary",
+ "-----------------------------------",
+ "",
+ "Note: This document does not provide legal advice nor is it the actual",
+ "license of any part of Yasm. See the individual licenses for complete",
+ "details. Consult a lawyer for legal advice.",
+ "",
+ "The primary license of Yasm is the 2-clause BSD license. Please use this",
+ "license if you plan on submitting code to the project.",
+ "",
+ "Yasm has absolutely no warranty; not even for merchantibility or fitness",
+ "for a particular purpose.",
+ "",
+ "-------",
+ "Libyasm",
+ "-------",
+ "Libyasm is 2-clause or 3-clause BSD licensed, with the exception of",
+ "bitvect, which is triple-licensed under the Artistic license, GPL, and",
+ "LGPL. Libyasm is thus GPL and LGPL compatible. In addition, this also",
+ "means that libyasm is free for binary-only distribution as long as the",
+ "terms of the 3-clause BSD license and Artistic license (as it applies to",
+ "bitvect) are fulfilled.",
+ "",
+ "-------",
+ "Modules",
+ "-------",
+ "The modules are 2-clause or 3-clause BSD licensed.",
+ "",
+ "---------",
+ "Frontends",
+ "---------",
+ "The frontends are 2-clause BSD licensed.",
+ "",
+ "-------------",
+ "License Texts",
+ "-------------",
+ "The full text of all licenses are provided in separate files in the source",
+ "distribution. Each source file may include the entire license (in the case",
+ "of the BSD and Artistic licenses), or may reference the GPL or LGPL license",
+ "file.",
+ "",
+ "BSD.txt - 2-clause and 3-clause BSD licenses",
+ "Artistic.txt - Artistic license",
+ "GNU_GPL-2.0 - GNU General Public License",
+ "GNU_LGPL-2.0 - GNU Library General Public License",
+};
diff --git a/contrib/tools/yasm/frontends/yasm/yasm-options.c b/contrib/tools/yasm/frontends/yasm/yasm-options.c
index 627ccf7033..eff6ba9a00 100644
--- a/contrib/tools/yasm/frontends/yasm/yasm-options.c
+++ b/contrib/tools/yasm/frontends/yasm/yasm-options.c
@@ -1,216 +1,216 @@
-/*
- * Generic Options Support Header File
- *
- * Copyright (c) 2001 Stanislav Karchebny <berk@madfire.net>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the author nor the names of other contributors
- * may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-#include <ctype.h>
-
-#include "yasm-options.h"
-
-
-#ifdef __DEBUG__
-#define DEBUG(x) fprintf ## x ;
-#else
-#define DEBUG(x)
-#endif
-
-
-/* Options Parser */
-int
-parse_cmdline(int argc, char **argv, opt_option *options, size_t nopts,
- void (*print_error) (const char *fmt, ...))
-{
- int errors = 0, warnings = 0;
- size_t i;
- int got_it;
-
- DEBUG((stderr, "parse_cmdline: entered\n"));
-
- fail:
- while (--argc) {
- argv++;
-
- if (argv[0][0] == '-') { /* opt */
- got_it = 0;
- if (argv[0][1] == '-') { /* lopt */
- if (argv[0][2] == '\0') { /* --, end of options */
- /* Handle rest of args as non-options */
- while (--argc) {
- argv++;
- if (not_an_option_handler(argv[0]))
- errors++;
- }
- return errors;
- }
-
- for (i = 0; i < nopts; i++) {
- size_t optlen;
- if (options[i].lopt &&
- strncmp(&argv[0][2], options[i].lopt,
- (optlen = strlen(options[i].lopt))) == 0) {
- char *param;
- char c = argv[0][2 + optlen];
-
- if (c != '\0' && c != '=' && !isspace(c))
- continue;
-
- if (options[i].takes_param) {
- param = strchr(&argv[0][2], '=');
- if (!param) {
- print_error(
- _("option `--%s' needs an argument!"),
- options[i].lopt);
- errors++;
- goto fail;
- } else {
- *param = '\0';
- param++;
- }
- } else
- param = NULL;
-
- if (!options[i].
- handler(&argv[0][2], param, options[i].extra))
- got_it = 1;
- break;
- }
- }
- if (!got_it && !other_option_handler(argv[0]))
- got_it = 1;
- if (!got_it) {
- print_error(_("warning: unrecognized option `%s'"),
- argv[0]);
- warnings++;
- }
- } else if (argv[0][1] == '\0') { /* just -, is non-option */
- if (not_an_option_handler(argv[0]))
- errors++;
- } else { /* sopt */
- for (i = 0; i < nopts; i++) {
- if (argv[0][1] == options[i].sopt) {
- char *cmd = &argv[0][1];
- char *param;
-
- if (options[i].takes_param) {
- param = argv[1];
- if (argv[0][2] != '\0')
- param = &argv[0][2];
- else if (param == NULL || *param == '-') {
- print_error(
- _("option `-%c' needs an argument!"),
- options[i].sopt);
- errors++;
- goto fail;
- } else {
- argc--;
- argv++;
- }
- } else
- param = NULL;
-
- if (!options[i].handler(cmd, param, options[i].extra))
- got_it = 1;
- break;
- }
- }
- if (!got_it && !other_option_handler(argv[0]))
- got_it = 1;
- if (!got_it) {
- print_error(_("warning: unrecognized option `%s'"),
- argv[0]);
- warnings++;
- }
- }
- } else { /* not an option, then it should be a file or something */
-
- if (not_an_option_handler(argv[0]))
- errors++;
- }
- }
-
- DEBUG((stderr, "parse_cmdline: finished\n"));
- return errors;
-}
-
-void
-help_msg(const char *msg, const char *tail, opt_option *options, size_t nopts)
-{
- char optbuf[100], optopt[100];
- size_t i;
-
- printf("%s", gettext(msg));
-
- for (i = 0; i < nopts; i++) {
- size_t shortopt_len = 0;
- size_t longopt_len = 0;
-
- optbuf[0] = 0;
- optopt[0] = 0;
-
- if (options[i].takes_param) {
- if (options[i].sopt) {
- sprintf(optbuf, "-%c <%s>", options[i].sopt,
- options[i].param_desc ? options[i].
- param_desc : _("param"));
- shortopt_len = strlen(optbuf);
- }
- if (options[i].sopt && options[i].lopt)
- strcat(optbuf, ", ");
- if (options[i].lopt) {
- sprintf(optopt, "--%s=<%s>", options[i].lopt,
- options[i].param_desc ? options[i].
- param_desc : _("param"));
- strcat(optbuf, optopt);
- longopt_len = strlen(optbuf);
- }
- } else {
- if (options[i].sopt) {
- sprintf(optbuf, "-%c", options[i].sopt);
- shortopt_len = strlen(optbuf);
- }
- if (options[i].sopt && options[i].lopt)
- strcat(optbuf, ", ");
- if (options[i].lopt) {
- sprintf(optopt, "--%s", options[i].lopt);
- strcat(optbuf, optopt);
- longopt_len = strlen(optbuf);
- }
- }
-
- /* split [-s <desc>], [--long <desc>] if it destroys columns */
- if (shortopt_len && longopt_len && longopt_len > 22) {
- optbuf[shortopt_len] = '\0';
- printf(" %-22s %s\n", optopt, gettext(options[i].description));
- printf(" %s\n", optbuf);
- }
- else
- printf(" %-22s %s\n", optbuf, gettext(options[i].description));
- }
-
- printf("%s", gettext(tail));
-}
+/*
+ * Generic Options Support Header File
+ *
+ * Copyright (c) 2001 Stanislav Karchebny <berk@madfire.net>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the author nor the names of other contributors
+ * may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+#include <ctype.h>
+
+#include "yasm-options.h"
+
+
+#ifdef __DEBUG__
+#define DEBUG(x) fprintf ## x ;
+#else
+#define DEBUG(x)
+#endif
+
+
+/* Options Parser */
+int
+parse_cmdline(int argc, char **argv, opt_option *options, size_t nopts,
+ void (*print_error) (const char *fmt, ...))
+{
+ int errors = 0, warnings = 0;
+ size_t i;
+ int got_it;
+
+ DEBUG((stderr, "parse_cmdline: entered\n"));
+
+ fail:
+ while (--argc) {
+ argv++;
+
+ if (argv[0][0] == '-') { /* opt */
+ got_it = 0;
+ if (argv[0][1] == '-') { /* lopt */
+ if (argv[0][2] == '\0') { /* --, end of options */
+ /* Handle rest of args as non-options */
+ while (--argc) {
+ argv++;
+ if (not_an_option_handler(argv[0]))
+ errors++;
+ }
+ return errors;
+ }
+
+ for (i = 0; i < nopts; i++) {
+ size_t optlen;
+ if (options[i].lopt &&
+ strncmp(&argv[0][2], options[i].lopt,
+ (optlen = strlen(options[i].lopt))) == 0) {
+ char *param;
+ char c = argv[0][2 + optlen];
+
+ if (c != '\0' && c != '=' && !isspace(c))
+ continue;
+
+ if (options[i].takes_param) {
+ param = strchr(&argv[0][2], '=');
+ if (!param) {
+ print_error(
+ _("option `--%s' needs an argument!"),
+ options[i].lopt);
+ errors++;
+ goto fail;
+ } else {
+ *param = '\0';
+ param++;
+ }
+ } else
+ param = NULL;
+
+ if (!options[i].
+ handler(&argv[0][2], param, options[i].extra))
+ got_it = 1;
+ break;
+ }
+ }
+ if (!got_it && !other_option_handler(argv[0]))
+ got_it = 1;
+ if (!got_it) {
+ print_error(_("warning: unrecognized option `%s'"),
+ argv[0]);
+ warnings++;
+ }
+ } else if (argv[0][1] == '\0') { /* just -, is non-option */
+ if (not_an_option_handler(argv[0]))
+ errors++;
+ } else { /* sopt */
+ for (i = 0; i < nopts; i++) {
+ if (argv[0][1] == options[i].sopt) {
+ char *cmd = &argv[0][1];
+ char *param;
+
+ if (options[i].takes_param) {
+ param = argv[1];
+ if (argv[0][2] != '\0')
+ param = &argv[0][2];
+ else if (param == NULL || *param == '-') {
+ print_error(
+ _("option `-%c' needs an argument!"),
+ options[i].sopt);
+ errors++;
+ goto fail;
+ } else {
+ argc--;
+ argv++;
+ }
+ } else
+ param = NULL;
+
+ if (!options[i].handler(cmd, param, options[i].extra))
+ got_it = 1;
+ break;
+ }
+ }
+ if (!got_it && !other_option_handler(argv[0]))
+ got_it = 1;
+ if (!got_it) {
+ print_error(_("warning: unrecognized option `%s'"),
+ argv[0]);
+ warnings++;
+ }
+ }
+ } else { /* not an option, then it should be a file or something */
+
+ if (not_an_option_handler(argv[0]))
+ errors++;
+ }
+ }
+
+ DEBUG((stderr, "parse_cmdline: finished\n"));
+ return errors;
+}
+
+void
+help_msg(const char *msg, const char *tail, opt_option *options, size_t nopts)
+{
+ char optbuf[100], optopt[100];
+ size_t i;
+
+ printf("%s", gettext(msg));
+
+ for (i = 0; i < nopts; i++) {
+ size_t shortopt_len = 0;
+ size_t longopt_len = 0;
+
+ optbuf[0] = 0;
+ optopt[0] = 0;
+
+ if (options[i].takes_param) {
+ if (options[i].sopt) {
+ sprintf(optbuf, "-%c <%s>", options[i].sopt,
+ options[i].param_desc ? options[i].
+ param_desc : _("param"));
+ shortopt_len = strlen(optbuf);
+ }
+ if (options[i].sopt && options[i].lopt)
+ strcat(optbuf, ", ");
+ if (options[i].lopt) {
+ sprintf(optopt, "--%s=<%s>", options[i].lopt,
+ options[i].param_desc ? options[i].
+ param_desc : _("param"));
+ strcat(optbuf, optopt);
+ longopt_len = strlen(optbuf);
+ }
+ } else {
+ if (options[i].sopt) {
+ sprintf(optbuf, "-%c", options[i].sopt);
+ shortopt_len = strlen(optbuf);
+ }
+ if (options[i].sopt && options[i].lopt)
+ strcat(optbuf, ", ");
+ if (options[i].lopt) {
+ sprintf(optopt, "--%s", options[i].lopt);
+ strcat(optbuf, optopt);
+ longopt_len = strlen(optbuf);
+ }
+ }
+
+ /* split [-s <desc>], [--long <desc>] if it destroys columns */
+ if (shortopt_len && longopt_len && longopt_len > 22) {
+ optbuf[shortopt_len] = '\0';
+ printf(" %-22s %s\n", optopt, gettext(options[i].description));
+ printf(" %s\n", optbuf);
+ }
+ else
+ printf(" %-22s %s\n", optbuf, gettext(options[i].description));
+ }
+
+ printf("%s", gettext(tail));
+}
diff --git a/contrib/tools/yasm/frontends/yasm/yasm-options.h b/contrib/tools/yasm/frontends/yasm/yasm-options.h
index e03be71d93..63c4fbeae1 100644
--- a/contrib/tools/yasm/frontends/yasm/yasm-options.h
+++ b/contrib/tools/yasm/frontends/yasm/yasm-options.h
@@ -1,75 +1,75 @@
-/*
- * Generic Options Support Header File
- *
- * Copyright (c) 2001 Stanislav Karchebny <berk@madfire.net>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef YASM_OPTIONS_H
-#define YASM_OPTIONS_H
-
-/* an option structure
- * operate on either -sopt, --lopt, -sopt <val> or --lopt=<val>
- */
-typedef struct opt_option_s
-{
- /* short option letter if present, 0 otherwise */
- char sopt;
-
- /* long option name if present, NULL otherwise */
- /*@null@*/ const char *lopt;
-
- /* !=0 if option requires parameter, 0 if not */
- int takes_param;
-
- int (*handler) (char *cmd, /*@null@*/ char *param, int extra);
- int extra; /* extra value for handler */
-
- /* description to use in help_msg() */
- /*@observer@*/ const char *description;
-
- /* optional description for the param taken (NULL if not present) */
- /* (short - will be printed after option sopt/lopt) */
- /*@observer@*/ /*@null@*/ const char *param_desc;
-} opt_option;
-
-/* handle everything that is not an option */
-int not_an_option_handler(char *param);
-
-/* handle possibly other special-case options; no parameters allowed */
-int other_option_handler(char *option);
-
-/* parse command line calling handlers when appropriate
- * argc, argv - pass directly from main(argc,argv)
- * options - array of options
- * nopts - options count
- */
-int parse_cmdline(int argc, char **argv, opt_option *options, size_t nopts,
- void (*print_error) (const char *fmt, ...));
-
-/* display help message msg followed by list of options in options and followed
- * by tail
- */
-void help_msg(const char *msg, const char *tail, opt_option *options,
- size_t nopts);
-
-#endif
+/*
+ * Generic Options Support Header File
+ *
+ * Copyright (c) 2001 Stanislav Karchebny <berk@madfire.net>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef YASM_OPTIONS_H
+#define YASM_OPTIONS_H
+
+/* an option structure
+ * operate on either -sopt, --lopt, -sopt <val> or --lopt=<val>
+ */
+typedef struct opt_option_s
+{
+ /* short option letter if present, 0 otherwise */
+ char sopt;
+
+ /* long option name if present, NULL otherwise */
+ /*@null@*/ const char *lopt;
+
+ /* !=0 if option requires parameter, 0 if not */
+ int takes_param;
+
+ int (*handler) (char *cmd, /*@null@*/ char *param, int extra);
+ int extra; /* extra value for handler */
+
+ /* description to use in help_msg() */
+ /*@observer@*/ const char *description;
+
+ /* optional description for the param taken (NULL if not present) */
+ /* (short - will be printed after option sopt/lopt) */
+ /*@observer@*/ /*@null@*/ const char *param_desc;
+} opt_option;
+
+/* handle everything that is not an option */
+int not_an_option_handler(char *param);
+
+/* handle possibly other special-case options; no parameters allowed */
+int other_option_handler(char *option);
+
+/* parse command line calling handlers when appropriate
+ * argc, argv - pass directly from main(argc,argv)
+ * options - array of options
+ * nopts - options count
+ */
+int parse_cmdline(int argc, char **argv, opt_option *options, size_t nopts,
+ void (*print_error) (const char *fmt, ...));
+
+/* display help message msg followed by list of options in options and followed
+ * by tail
+ */
+void help_msg(const char *msg, const char *tail, opt_option *options,
+ size_t nopts);
+
+#endif
diff --git a/contrib/tools/yasm/frontends/yasm/yasm-plugin.c b/contrib/tools/yasm/frontends/yasm/yasm-plugin.c
index 9ef579106f..c64edc32f0 100644
--- a/contrib/tools/yasm/frontends/yasm/yasm-plugin.c
+++ b/contrib/tools/yasm/frontends/yasm/yasm-plugin.c
@@ -1,126 +1,126 @@
-/*
- * Semi-portable (Windows and Unix) plugin loading
- *
- * Copyright (C) 2008 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <string.h>
-
-#include "libyasm-stdint.h"
-#include "yasm-plugin.h"
-
-#if defined(_MSC_VER)
-#include <windows.h>
-#elif defined(__GNUC__)
-#include <dlfcn.h>
-#endif
-
-static void **loaded_plugins = NULL;
-static int num_loaded_plugins = 0;
-
-static void *
-load_dll(const char *name)
-{
-#if defined(_MSC_VER)
- return LoadLibrary(name);
-#elif defined(__GNUC__)
- return dlopen(name, RTLD_NOW);
-#else
- return NULL;
-#endif
-}
-
-int
-load_plugin(const char *name)
-{
- char *path;
- void *lib = NULL;
- void (*init_plugin) (void) = NULL;
-
- /* Load library */
-
- path = yasm_xmalloc(strlen(name)+10);
-#if defined(_MSC_VER)
- strcpy(path, name);
- strcat(path, ".dll");
- lib = load_dll(path);
-#elif defined(__GNUC__)
- strcpy(path, "lib");
- strcat(path, name);
- strcat(path, ".so");
- lib = load_dll(path);
- if (!lib) {
- strcpy(path, name);
- strcat(path, ".so");
- lib = load_dll(path);
- }
-#endif
- yasm_xfree(path);
- if (!lib)
- lib = load_dll(name);
-
- if (!lib)
- return 0; /* Didn't load successfully */
-
- /* Add to array of loaded plugins */
- loaded_plugins =
- yasm_xrealloc(loaded_plugins, (num_loaded_plugins+1)*sizeof(void *));
- loaded_plugins[num_loaded_plugins] = lib;
- num_loaded_plugins++;
-
- /* Get yasm_init_plugin() function and run it */
-
-#if defined(_MSC_VER)
- init_plugin =
- (void (*)(void))GetProcAddress((HINSTANCE)lib, "yasm_init_plugin");
-#elif defined(__GNUC__)
- init_plugin = (void (*)(void))(uintptr_t)dlsym(lib, "yasm_init_plugin");
-#endif
-
- if (!init_plugin)
- return 0; /* Didn't load successfully */
-
- init_plugin();
- return 1;
-}
-
-void
-unload_plugins(void)
-{
- int i;
-
- if (!loaded_plugins)
- return;
-
- for (i = 0; i < num_loaded_plugins; i++) {
-#if defined(_MSC_VER)
- FreeLibrary((HINSTANCE)loaded_plugins[i]);
-#elif defined(__GNUC__)
- dlclose(loaded_plugins[i]);
-#endif
- }
- yasm_xfree(loaded_plugins);
- num_loaded_plugins = 0;
-}
+/*
+ * Semi-portable (Windows and Unix) plugin loading
+ *
+ * Copyright (C) 2008 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <string.h>
+
+#include "libyasm-stdint.h"
+#include "yasm-plugin.h"
+
+#if defined(_MSC_VER)
+#include <windows.h>
+#elif defined(__GNUC__)
+#include <dlfcn.h>
+#endif
+
+static void **loaded_plugins = NULL;
+static int num_loaded_plugins = 0;
+
+static void *
+load_dll(const char *name)
+{
+#if defined(_MSC_VER)
+ return LoadLibrary(name);
+#elif defined(__GNUC__)
+ return dlopen(name, RTLD_NOW);
+#else
+ return NULL;
+#endif
+}
+
+int
+load_plugin(const char *name)
+{
+ char *path;
+ void *lib = NULL;
+ void (*init_plugin) (void) = NULL;
+
+ /* Load library */
+
+ path = yasm_xmalloc(strlen(name)+10);
+#if defined(_MSC_VER)
+ strcpy(path, name);
+ strcat(path, ".dll");
+ lib = load_dll(path);
+#elif defined(__GNUC__)
+ strcpy(path, "lib");
+ strcat(path, name);
+ strcat(path, ".so");
+ lib = load_dll(path);
+ if (!lib) {
+ strcpy(path, name);
+ strcat(path, ".so");
+ lib = load_dll(path);
+ }
+#endif
+ yasm_xfree(path);
+ if (!lib)
+ lib = load_dll(name);
+
+ if (!lib)
+ return 0; /* Didn't load successfully */
+
+ /* Add to array of loaded plugins */
+ loaded_plugins =
+ yasm_xrealloc(loaded_plugins, (num_loaded_plugins+1)*sizeof(void *));
+ loaded_plugins[num_loaded_plugins] = lib;
+ num_loaded_plugins++;
+
+ /* Get yasm_init_plugin() function and run it */
+
+#if defined(_MSC_VER)
+ init_plugin =
+ (void (*)(void))GetProcAddress((HINSTANCE)lib, "yasm_init_plugin");
+#elif defined(__GNUC__)
+ init_plugin = (void (*)(void))(uintptr_t)dlsym(lib, "yasm_init_plugin");
+#endif
+
+ if (!init_plugin)
+ return 0; /* Didn't load successfully */
+
+ init_plugin();
+ return 1;
+}
+
+void
+unload_plugins(void)
+{
+ int i;
+
+ if (!loaded_plugins)
+ return;
+
+ for (i = 0; i < num_loaded_plugins; i++) {
+#if defined(_MSC_VER)
+ FreeLibrary((HINSTANCE)loaded_plugins[i]);
+#elif defined(__GNUC__)
+ dlclose(loaded_plugins[i]);
+#endif
+ }
+ yasm_xfree(loaded_plugins);
+ num_loaded_plugins = 0;
+}
diff --git a/contrib/tools/yasm/frontends/yasm/yasm-plugin.h b/contrib/tools/yasm/frontends/yasm/yasm-plugin.h
index b92154d3e4..efb1bf513a 100644
--- a/contrib/tools/yasm/frontends/yasm/yasm-plugin.h
+++ b/contrib/tools/yasm/frontends/yasm/yasm-plugin.h
@@ -1,34 +1,34 @@
-/*
- * Semi-portable (Windows and Unix) plugin loading
- *
- * Copyright (C) 2008 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef YASM_PLUGIN_H
-#define YASM_PLUGIN_H
-
-/* Load a plugin. Returns 0 on failure. */
-int load_plugin(const char *name);
-void unload_plugins(void);
-
-#endif
+/*
+ * Semi-portable (Windows and Unix) plugin loading
+ *
+ * Copyright (C) 2008 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef YASM_PLUGIN_H
+#define YASM_PLUGIN_H
+
+/* Load a plugin. Returns 0 on failure. */
+int load_plugin(const char *name);
+void unload_plugins(void);
+
+#endif
diff --git a/contrib/tools/yasm/frontends/yasm/yasm.c b/contrib/tools/yasm/frontends/yasm/yasm.c
index 3fd1595083..2bd08890df 100644
--- a/contrib/tools/yasm/frontends/yasm/yasm.c
+++ b/contrib/tools/yasm/frontends/yasm/yasm.c
@@ -1,1204 +1,1204 @@
-/*
- * Program entry point, command line parsing
- *
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <ctype.h>
-#include <libyasm/compat-queue.h>
-#include <libyasm/bitvect.h>
-#include <libyasm.h>
-
-#ifdef HAVE_LIBGEN_H
-#include <libgen.h>
-#endif
-
-#include "yasm-options.h"
-
-#if defined(CMAKE_BUILD) && defined(BUILD_SHARED_LIBS)
-#include "yasm-plugin.h"
-#endif
-
-#include "license.c"
-
-/* Preprocess-only buffer size */
-#define PREPROC_BUF_SIZE 16384
-
-/*@null@*/ /*@only@*/ static char *obj_filename = NULL, *in_filename = NULL;
-/*@null@*/ /*@only@*/ static char *global_prefix = NULL, *global_suffix = NULL;
-/*@null@*/ /*@only@*/ static char *list_filename = NULL, *map_filename = NULL;
-/*@null@*/ /*@only@*/ static char *machine_name = NULL;
+/*
+ * Program entry point, command line parsing
+ *
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <ctype.h>
+#include <libyasm/compat-queue.h>
+#include <libyasm/bitvect.h>
+#include <libyasm.h>
+
+#ifdef HAVE_LIBGEN_H
+#include <libgen.h>
+#endif
+
+#include "yasm-options.h"
+
+#if defined(CMAKE_BUILD) && defined(BUILD_SHARED_LIBS)
+#include "yasm-plugin.h"
+#endif
+
+#include "license.c"
+
+/* Preprocess-only buffer size */
+#define PREPROC_BUF_SIZE 16384
+
+/*@null@*/ /*@only@*/ static char *obj_filename = NULL, *in_filename = NULL;
+/*@null@*/ /*@only@*/ static char *global_prefix = NULL, *global_suffix = NULL;
+/*@null@*/ /*@only@*/ static char *list_filename = NULL, *map_filename = NULL;
+/*@null@*/ /*@only@*/ static char *machine_name = NULL;
static char **replace_params;
static int replace_size = 0;
static int replace_capacity = 0;
-static int special_options = 0;
-/*@null@*/ /*@dependent@*/ static yasm_arch *cur_arch = NULL;
-/*@null@*/ /*@dependent@*/ static const yasm_arch_module *
- cur_arch_module = NULL;
-/*@null@*/ /*@dependent@*/ static const yasm_parser_module *
- cur_parser_module = NULL;
-/*@null@*/ /*@dependent@*/ static yasm_preproc *cur_preproc = NULL;
-/*@null@*/ /*@dependent@*/ static const yasm_preproc_module *
- cur_preproc_module = NULL;
-/*@null@*/ static char *objfmt_keyword = NULL;
-/*@null@*/ /*@dependent@*/ static const yasm_objfmt_module *
- cur_objfmt_module = NULL;
-/*@null@*/ /*@dependent@*/ static const yasm_dbgfmt_module *
- cur_dbgfmt_module = NULL;
-/*@null@*/ /*@dependent@*/ static yasm_listfmt *cur_listfmt = NULL;
-/*@null@*/ /*@dependent@*/ static const yasm_listfmt_module *
- cur_listfmt_module = NULL;
-static int preproc_only = 0;
-static unsigned int force_strict = 0;
-static int generate_make_dependencies = 0;
-static int warning_error = 0; /* warnings being treated as errors */
-static FILE *errfile;
-/*@null@*/ /*@only@*/ static char *error_filename = NULL;
-static enum {
- EWSTYLE_GNU = 0,
- EWSTYLE_VC
-} ewmsg_style = EWSTYLE_GNU;
-
-/*@null@*/ /*@dependent@*/ static FILE *open_file(const char *filename,
- const char *mode);
-static void check_errors(/*@only@*/ yasm_errwarns *errwarns,
- /*@only@*/ yasm_object *object,
- /*@only@*/ yasm_linemap *linemap);
-static void cleanup(/*@null@*/ /*@only@*/ yasm_object *object);
-
-/* Forward declarations: cmd line parser handlers */
-static int opt_special_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_arch_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_parser_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_preproc_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_objfmt_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_dbgfmt_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_listfmt_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_listfile_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_objfile_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_mapfile_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_machine_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_strict_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_warning_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_error_file(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_error_stdout(char *cmd, /*@null@*/ char *param, int extra);
-static int preproc_only_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_include_option(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_preproc_option(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_ewmsg_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_makedep_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_prefix_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int special_options = 0;
+/*@null@*/ /*@dependent@*/ static yasm_arch *cur_arch = NULL;
+/*@null@*/ /*@dependent@*/ static const yasm_arch_module *
+ cur_arch_module = NULL;
+/*@null@*/ /*@dependent@*/ static const yasm_parser_module *
+ cur_parser_module = NULL;
+/*@null@*/ /*@dependent@*/ static yasm_preproc *cur_preproc = NULL;
+/*@null@*/ /*@dependent@*/ static const yasm_preproc_module *
+ cur_preproc_module = NULL;
+/*@null@*/ static char *objfmt_keyword = NULL;
+/*@null@*/ /*@dependent@*/ static const yasm_objfmt_module *
+ cur_objfmt_module = NULL;
+/*@null@*/ /*@dependent@*/ static const yasm_dbgfmt_module *
+ cur_dbgfmt_module = NULL;
+/*@null@*/ /*@dependent@*/ static yasm_listfmt *cur_listfmt = NULL;
+/*@null@*/ /*@dependent@*/ static const yasm_listfmt_module *
+ cur_listfmt_module = NULL;
+static int preproc_only = 0;
+static unsigned int force_strict = 0;
+static int generate_make_dependencies = 0;
+static int warning_error = 0; /* warnings being treated as errors */
+static FILE *errfile;
+/*@null@*/ /*@only@*/ static char *error_filename = NULL;
+static enum {
+ EWSTYLE_GNU = 0,
+ EWSTYLE_VC
+} ewmsg_style = EWSTYLE_GNU;
+
+/*@null@*/ /*@dependent@*/ static FILE *open_file(const char *filename,
+ const char *mode);
+static void check_errors(/*@only@*/ yasm_errwarns *errwarns,
+ /*@only@*/ yasm_object *object,
+ /*@only@*/ yasm_linemap *linemap);
+static void cleanup(/*@null@*/ /*@only@*/ yasm_object *object);
+
+/* Forward declarations: cmd line parser handlers */
+static int opt_special_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_arch_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_parser_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_preproc_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_objfmt_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_dbgfmt_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_listfmt_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_listfile_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_objfile_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_mapfile_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_machine_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_strict_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_warning_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_error_file(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_error_stdout(char *cmd, /*@null@*/ char *param, int extra);
+static int preproc_only_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_include_option(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_preproc_option(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_ewmsg_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_makedep_handler(char *cmd, /*@null@*/ char *param, int extra);
+static int opt_prefix_handler(char *cmd, /*@null@*/ char *param, int extra);
static int opt_replace_handler(char *cmd, /*@null@*/ char *param, int extra);
-static int opt_suffix_handler(char *cmd, /*@null@*/ char *param, int extra);
-#if defined(CMAKE_BUILD) && defined(BUILD_SHARED_LIBS)
-static int opt_plugin_handler(char *cmd, /*@null@*/ char *param, int extra);
-#endif
-
-#if defined(CMAKE_BUILD) && !defined(BUILD_SHARED_LIBS)
-void yasm_init_plugin(void);
+static int opt_suffix_handler(char *cmd, /*@null@*/ char *param, int extra);
+#if defined(CMAKE_BUILD) && defined(BUILD_SHARED_LIBS)
+static int opt_plugin_handler(char *cmd, /*@null@*/ char *param, int extra);
+#endif
+
+#if defined(CMAKE_BUILD) && !defined(BUILD_SHARED_LIBS)
+void yasm_init_plugin(void);
void yasm_plugin_set_replace(const char* replace[], int size);
-#endif
-
-static /*@only@*/ char *replace_extension(const char *orig, /*@null@*/
- const char *ext, const char *def);
-static void print_error(const char *fmt, ...);
-
-static /*@exits@*/ void handle_yasm_int_error(const char *file,
- unsigned int line,
- const char *message);
-static /*@exits@*/ void handle_yasm_fatal(const char *message, va_list va);
-static const char *handle_yasm_gettext(const char *msgid);
-static void print_yasm_error(const char *filename, unsigned long line,
- const char *msg, /*@null@*/ const char *xref_fn,
- unsigned long xref_line,
- /*@null@*/ const char *xref_msg);
-static void print_yasm_warning(const char *filename, unsigned long line,
- const char *msg);
-
-static void apply_preproc_builtins(void);
-static void apply_preproc_standard_macros(const yasm_stdmac *stdmacs);
-static void apply_preproc_saved_options(void);
-static void print_list_keyword_desc(const char *name, const char *keyword);
-
-/* values for special_options */
-#define SPECIAL_SHOW_HELP 0x01
-#define SPECIAL_SHOW_VERSION 0x02
-#define SPECIAL_SHOW_LICENSE 0x04
-#define SPECIAL_LISTED 0x08
-
-/* command line options */
-static opt_option options[] =
-{
- { 0, "version", 0, opt_special_handler, SPECIAL_SHOW_VERSION,
- N_("show version text"), NULL },
- { 0, "license", 0, opt_special_handler, SPECIAL_SHOW_LICENSE,
- N_("show license text"), NULL },
- { 'h', "help", 0, opt_special_handler, SPECIAL_SHOW_HELP,
- N_("show help text"), NULL },
- { 'a', "arch", 1, opt_arch_handler, 0,
- N_("select architecture (list with -a help)"), N_("arch") },
- { 'p', "parser", 1, opt_parser_handler, 0,
- N_("select parser (list with -p help)"), N_("parser") },
- { 'r', "preproc", 1, opt_preproc_handler, 0,
- N_("select preprocessor (list with -r help)"), N_("preproc") },
- { 'f', "oformat", 1, opt_objfmt_handler, 0,
- N_("select object format (list with -f help)"), N_("format") },
- { 'g', "dformat", 1, opt_dbgfmt_handler, 0,
- N_("select debugging format (list with -g help)"), N_("debug") },
- { 'L', "lformat", 1, opt_listfmt_handler, 0,
- N_("select list format (list with -L help)"), N_("list") },
- { 'l', "list", 1, opt_listfile_handler, 0,
- N_("name of list-file output"), N_("listfile") },
- { 'o', "objfile", 1, opt_objfile_handler, 0,
- N_("name of object-file output"), N_("filename") },
- { 0, "mapfile", 1, opt_mapfile_handler, 0,
- N_("name of map-file output"), N_("filename") },
- { 'm', "machine", 1, opt_machine_handler, 0,
- N_("select machine (list with -m help)"), N_("machine") },
- { 0, "force-strict", 0, opt_strict_handler, 0,
- N_("treat all sized operands as if `strict' was used"), NULL },
- { 'w', NULL, 0, opt_warning_handler, 1,
- N_("inhibits warning messages"), NULL },
- { 'W', NULL, 0, opt_warning_handler, 0,
- N_("enables/disables warning"), NULL },
- { 'M', NULL, 0, opt_makedep_handler, 0,
- N_("generate Makefile dependencies on stdout"), NULL },
- { 'E', NULL, 1, opt_error_file, 0,
- N_("redirect error messages to file"), N_("file") },
- { 's', NULL, 0, opt_error_stdout, 0,
- N_("redirect error messages to stdout"), NULL },
- { 'e', "preproc-only", 0, preproc_only_handler, 0,
- N_("preprocess only (writes output to stdout by default)"), NULL },
- { 'i', NULL, 1, opt_include_option, 0,
- N_("add include path"), N_("path") },
- { 'I', NULL, 1, opt_include_option, 0,
- N_("add include path"), N_("path") },
- { 'P', NULL, 1, opt_preproc_option, 0,
- N_("pre-include file"), N_("filename") },
- { 'd', NULL, 1, opt_preproc_option, 1,
- N_("pre-define a macro, optionally to value"), N_("macro[=value]") },
- { 'D', NULL, 1, opt_preproc_option, 1,
- N_("pre-define a macro, optionally to value"), N_("macro[=value]") },
- { 'u', NULL, 1, opt_preproc_option, 2,
- N_("undefine a macro"), N_("macro") },
- { 'U', NULL, 1, opt_preproc_option, 2,
- N_("undefine a macro"), N_("macro") },
- { 'X', NULL, 1, opt_ewmsg_handler, 0,
- N_("select error/warning message style (`gnu' or `vc')"), N_("style") },
- { 0, "prefix", 1, opt_prefix_handler, 0,
- N_("prepend argument to name of all external symbols"), N_("prefix") },
- { 0, "suffix", 1, opt_suffix_handler, 0,
- N_("append argument to name of all external symbols"), N_("suffix") },
- { 0, "postfix", 1, opt_suffix_handler, 0,
- N_("append argument to name of all external symbols"), N_("suffix") },
-#if defined(CMAKE_BUILD) && defined(BUILD_SHARED_LIBS)
- { 'N', "plugin", 1, opt_plugin_handler, 0,
- N_("load plugin module"), N_("plugin") },
-#endif
+#endif
+
+static /*@only@*/ char *replace_extension(const char *orig, /*@null@*/
+ const char *ext, const char *def);
+static void print_error(const char *fmt, ...);
+
+static /*@exits@*/ void handle_yasm_int_error(const char *file,
+ unsigned int line,
+ const char *message);
+static /*@exits@*/ void handle_yasm_fatal(const char *message, va_list va);
+static const char *handle_yasm_gettext(const char *msgid);
+static void print_yasm_error(const char *filename, unsigned long line,
+ const char *msg, /*@null@*/ const char *xref_fn,
+ unsigned long xref_line,
+ /*@null@*/ const char *xref_msg);
+static void print_yasm_warning(const char *filename, unsigned long line,
+ const char *msg);
+
+static void apply_preproc_builtins(void);
+static void apply_preproc_standard_macros(const yasm_stdmac *stdmacs);
+static void apply_preproc_saved_options(void);
+static void print_list_keyword_desc(const char *name, const char *keyword);
+
+/* values for special_options */
+#define SPECIAL_SHOW_HELP 0x01
+#define SPECIAL_SHOW_VERSION 0x02
+#define SPECIAL_SHOW_LICENSE 0x04
+#define SPECIAL_LISTED 0x08
+
+/* command line options */
+static opt_option options[] =
+{
+ { 0, "version", 0, opt_special_handler, SPECIAL_SHOW_VERSION,
+ N_("show version text"), NULL },
+ { 0, "license", 0, opt_special_handler, SPECIAL_SHOW_LICENSE,
+ N_("show license text"), NULL },
+ { 'h', "help", 0, opt_special_handler, SPECIAL_SHOW_HELP,
+ N_("show help text"), NULL },
+ { 'a', "arch", 1, opt_arch_handler, 0,
+ N_("select architecture (list with -a help)"), N_("arch") },
+ { 'p', "parser", 1, opt_parser_handler, 0,
+ N_("select parser (list with -p help)"), N_("parser") },
+ { 'r', "preproc", 1, opt_preproc_handler, 0,
+ N_("select preprocessor (list with -r help)"), N_("preproc") },
+ { 'f', "oformat", 1, opt_objfmt_handler, 0,
+ N_("select object format (list with -f help)"), N_("format") },
+ { 'g', "dformat", 1, opt_dbgfmt_handler, 0,
+ N_("select debugging format (list with -g help)"), N_("debug") },
+ { 'L', "lformat", 1, opt_listfmt_handler, 0,
+ N_("select list format (list with -L help)"), N_("list") },
+ { 'l', "list", 1, opt_listfile_handler, 0,
+ N_("name of list-file output"), N_("listfile") },
+ { 'o', "objfile", 1, opt_objfile_handler, 0,
+ N_("name of object-file output"), N_("filename") },
+ { 0, "mapfile", 1, opt_mapfile_handler, 0,
+ N_("name of map-file output"), N_("filename") },
+ { 'm', "machine", 1, opt_machine_handler, 0,
+ N_("select machine (list with -m help)"), N_("machine") },
+ { 0, "force-strict", 0, opt_strict_handler, 0,
+ N_("treat all sized operands as if `strict' was used"), NULL },
+ { 'w', NULL, 0, opt_warning_handler, 1,
+ N_("inhibits warning messages"), NULL },
+ { 'W', NULL, 0, opt_warning_handler, 0,
+ N_("enables/disables warning"), NULL },
+ { 'M', NULL, 0, opt_makedep_handler, 0,
+ N_("generate Makefile dependencies on stdout"), NULL },
+ { 'E', NULL, 1, opt_error_file, 0,
+ N_("redirect error messages to file"), N_("file") },
+ { 's', NULL, 0, opt_error_stdout, 0,
+ N_("redirect error messages to stdout"), NULL },
+ { 'e', "preproc-only", 0, preproc_only_handler, 0,
+ N_("preprocess only (writes output to stdout by default)"), NULL },
+ { 'i', NULL, 1, opt_include_option, 0,
+ N_("add include path"), N_("path") },
+ { 'I', NULL, 1, opt_include_option, 0,
+ N_("add include path"), N_("path") },
+ { 'P', NULL, 1, opt_preproc_option, 0,
+ N_("pre-include file"), N_("filename") },
+ { 'd', NULL, 1, opt_preproc_option, 1,
+ N_("pre-define a macro, optionally to value"), N_("macro[=value]") },
+ { 'D', NULL, 1, opt_preproc_option, 1,
+ N_("pre-define a macro, optionally to value"), N_("macro[=value]") },
+ { 'u', NULL, 1, opt_preproc_option, 2,
+ N_("undefine a macro"), N_("macro") },
+ { 'U', NULL, 1, opt_preproc_option, 2,
+ N_("undefine a macro"), N_("macro") },
+ { 'X', NULL, 1, opt_ewmsg_handler, 0,
+ N_("select error/warning message style (`gnu' or `vc')"), N_("style") },
+ { 0, "prefix", 1, opt_prefix_handler, 0,
+ N_("prepend argument to name of all external symbols"), N_("prefix") },
+ { 0, "suffix", 1, opt_suffix_handler, 0,
+ N_("append argument to name of all external symbols"), N_("suffix") },
+ { 0, "postfix", 1, opt_suffix_handler, 0,
+ N_("append argument to name of all external symbols"), N_("suffix") },
+#if defined(CMAKE_BUILD) && defined(BUILD_SHARED_LIBS)
+ { 'N', "plugin", 1, opt_plugin_handler, 0,
+ N_("load plugin module"), N_("plugin") },
+#endif
{ 0, "replace", 1, opt_replace_handler, 0,
N_("replace names"), N_("replace") },
-};
-
-/* version message */
-/*@observer@*/ static const char *version_msg[] = {
- PACKAGE_STRING,
- "Compiled on " __DATE__ ".",
- "Copyright (c) 2001-2014 Peter Johnson and other Yasm developers.",
- "Run yasm --license for licensing overview and summary."
-};
-
-/* help messages */
-/*@observer@*/ static const char *help_head = N_(
- "usage: yasm [option]* file\n"
- "Options:\n");
-/*@observer@*/ static const char *help_tail = N_(
- "\n"
- "Files are asm sources to be assembled.\n"
- "\n"
- "Sample invocation:\n"
- " yasm -f elf -o object.o source.asm\n"
- "\n"
- "Report bugs to bug-yasm@tortall.net\n");
-
-/* parsed command line storage until appropriate modules have been loaded */
-typedef STAILQ_HEAD(constcharparam_head, constcharparam) constcharparam_head;
-
-typedef struct constcharparam {
- STAILQ_ENTRY(constcharparam) link;
- const char *param;
- int id;
-} constcharparam;
-
-static constcharparam_head preproc_options;
-
-static int
-do_preproc_only(void)
-{
- yasm_linemap *linemap;
- char *preproc_buf;
- size_t got;
- const char *base_filename;
- FILE *out = NULL;
- yasm_errwarns *errwarns = yasm_errwarns_create();
-
- /* Initialize line map */
- linemap = yasm_linemap_create();
- yasm_linemap_set(linemap, in_filename, 0, 1, 1);
-
- /* Default output to stdout if not specified or generating dependency
- makefiles */
- if (!obj_filename || generate_make_dependencies) {
- out = stdout;
-
- /* determine the object filename if not specified, but we need a
- file name for the makefile rule */
- if (generate_make_dependencies && !obj_filename) {
- if (in_filename == NULL)
- /* Default to yasm.out if no obj filename specified */
- obj_filename = yasm__xstrdup("yasm.out");
- else {
- /* replace (or add) extension to base filename */
- yasm__splitpath(in_filename, &base_filename);
- if (base_filename[0] == '\0')
- obj_filename = yasm__xstrdup("yasm.out");
- else
- obj_filename = replace_extension(base_filename,
- cur_objfmt_module->extension, "yasm.out");
- }
- }
- } else {
- /* Open output (object) file */
- out = open_file(obj_filename, "wt");
- if (!out)
- return EXIT_FAILURE;
- }
-
- /* Create preprocessor */
- cur_preproc = yasm_preproc_create(cur_preproc_module, in_filename, NULL,
- linemap, errwarns);
-
- /* Apply macros */
- apply_preproc_builtins();
- apply_preproc_standard_macros(cur_parser_module->stdmacs);
- apply_preproc_standard_macros(cur_objfmt_module->stdmacs);
- apply_preproc_saved_options();
-
- /* Pre-process until done */
- if (generate_make_dependencies) {
- size_t totlen;
-
- preproc_buf = yasm_xmalloc(PREPROC_BUF_SIZE);
-
- fprintf(stdout, "%s: %s", obj_filename, in_filename);
- totlen = strlen(obj_filename)+2+strlen(in_filename);
-
- while ((got = yasm_preproc_get_included_file(cur_preproc, preproc_buf,
- PREPROC_BUF_SIZE)) != 0) {
- totlen += got;
- if (totlen > 72) {
- fputs(" \\\n ", stdout);
- totlen = 2;
- }
- fputc(' ', stdout);
- fwrite(preproc_buf, got, 1, stdout);
- }
- fputc('\n', stdout);
- yasm_xfree(preproc_buf);
- } else {
- while ((preproc_buf = yasm_preproc_get_line(cur_preproc)) != NULL) {
- fputs(preproc_buf, out);
- fputc('\n', out);
- yasm_xfree(preproc_buf);
- }
- }
-
- if (out != stdout)
- fclose(out);
-
- if (yasm_errwarns_num_errors(errwarns, warning_error) > 0) {
- yasm_errwarns_output_all(errwarns, linemap, warning_error,
- print_yasm_error, print_yasm_warning);
- if (out != stdout)
- remove(obj_filename);
- yasm_linemap_destroy(linemap);
- yasm_errwarns_destroy(errwarns);
- cleanup(NULL);
- return EXIT_FAILURE;
- }
-
- yasm_errwarns_output_all(errwarns, linemap, warning_error,
- print_yasm_error, print_yasm_warning);
- yasm_linemap_destroy(linemap);
- yasm_errwarns_destroy(errwarns);
- cleanup(NULL);
- return EXIT_SUCCESS;
-}
-
-static int
-do_assemble(void)
-{
- yasm_object *object;
- const char *base_filename;
- /*@null@*/ FILE *obj = NULL;
- yasm_arch_create_error arch_error;
- yasm_linemap *linemap;
- yasm_errwarns *errwarns = yasm_errwarns_create();
- int i, matched;
- const char *machine;
-
- /* Initialize line map */
- linemap = yasm_linemap_create();
- yasm_linemap_set(linemap, in_filename, 0, 1, 1);
-
- /* determine the object filename if not specified */
- if (!obj_filename) {
- if (in_filename == NULL)
- /* Default to yasm.out if no obj filename specified */
- obj_filename = yasm__xstrdup("yasm.out");
- else {
- /* replace (or add) extension to base filename */
- yasm__splitpath(in_filename, &base_filename);
- if (base_filename[0] == '\0')
- obj_filename = yasm__xstrdup("yasm.out");
- else
- obj_filename = replace_extension(base_filename,
- cur_objfmt_module->extension,
- "yasm.out");
- }
- }
-
- /* Set up architecture using machine and parser. */
- if (!machine_name) {
- /* If we're using x86 and the default objfmt bits is 64, default the
- * machine to amd64. When we get more arches with multiple machines,
- * we should do this in a more modular fashion.
- */
- if (strcmp(cur_arch_module->keyword, "x86") == 0 &&
- cur_objfmt_module->default_x86_mode_bits == 64)
- machine_name = yasm__xstrdup("amd64");
- else
- machine_name =
- yasm__xstrdup(cur_arch_module->default_machine_keyword);
- }
-
- /* If we're using amd64 and the default objfmt is elfx32, change the
- * machine to "x32".
- */
- if (strcmp(machine_name, "amd64") == 0 &&
- strcmp(cur_objfmt_module->keyword, "elfx32") == 0)
- machine = "x32";
- else
- machine = machine_name;
-
- cur_arch = yasm_arch_create(cur_arch_module, machine,
- cur_parser_module->keyword, &arch_error);
- if (!cur_arch) {
- switch (arch_error) {
- case YASM_ARCH_CREATE_BAD_MACHINE:
- print_error(_("%s: `%s' is not a valid %s for %s `%s'"),
- _("FATAL"), machine_name, _("machine"),
- _("architecture"), cur_arch_module->keyword);
- break;
- case YASM_ARCH_CREATE_BAD_PARSER:
- print_error(_("%s: `%s' is not a valid %s for %s `%s'"),
- _("FATAL"), cur_parser_module->keyword,
- _("parser"), _("architecture"),
- cur_arch_module->keyword);
- break;
- default:
- print_error(_("%s: unknown architecture error"), _("FATAL"));
- }
-
- return EXIT_FAILURE;
- }
-
- /* Create object */
- object = yasm_object_create(in_filename, obj_filename, cur_arch,
- cur_objfmt_module, cur_dbgfmt_module);
- if (!object) {
- yasm_error_class eclass;
- unsigned long xrefline;
- /*@only@*/ /*@null@*/ char *estr, *xrefstr;
-
- yasm_error_fetch(&eclass, &estr, &xrefline, &xrefstr);
- print_error("%s: %s", _("FATAL"), estr);
- yasm_xfree(estr);
- yasm_xfree(xrefstr);
-
- cleanup(object);
- return EXIT_FAILURE;
- }
-
- /* Get a fresh copy of objfmt_module as it may have changed. */
- cur_objfmt_module = ((yasm_objfmt_base *)object->objfmt)->module;
-
- /* Check to see if the requested preprocessor is in the allowed list
- * for the active parser.
- */
- matched = 0;
- for (i=0; cur_parser_module->preproc_keywords[i]; i++)
- {
- if (yasm__strcasecmp(cur_parser_module->preproc_keywords[i],
- cur_preproc_module->keyword) == 0) {
- matched = 1;
- break;
- }
- }
-
- if (!matched) {
- print_error(_("%s: `%s' is not a valid %s for %s `%s'"), _("FATAL"),
- cur_preproc_module->keyword, _("preprocessor"),
- _("parser"), cur_parser_module->keyword);
- cleanup(object);
- return EXIT_FAILURE;
- }
-
- if (global_prefix)
- yasm_object_set_global_prefix(object, global_prefix);
- if (global_suffix)
- yasm_object_set_global_suffix(object, global_suffix);
-
- cur_preproc = yasm_preproc_create(cur_preproc_module, in_filename,
- object->symtab, linemap, errwarns);
-
- apply_preproc_builtins();
- apply_preproc_standard_macros(cur_parser_module->stdmacs);
- apply_preproc_standard_macros(cur_objfmt_module->stdmacs);
- apply_preproc_saved_options();
-
- /* Get initial x86 BITS setting from object format */
- if (strcmp(cur_arch_module->keyword, "x86") == 0) {
- yasm_arch_set_var(cur_arch, "mode_bits",
- cur_objfmt_module->default_x86_mode_bits);
- }
-
- yasm_arch_set_var(cur_arch, "force_strict", force_strict);
-
- /* Try to enable the map file via a map NASM directive. This is
- * somewhat of a hack.
- */
- if (map_filename) {
- const yasm_directive *dir = &cur_objfmt_module->directives[0];
- matched = 0;
- for (; dir && dir->name; dir++) {
- if (yasm__strcasecmp(dir->name, "map") == 0 &&
- yasm__strcasecmp(dir->parser, "nasm") == 0) {
- yasm_valparamhead vps;
- yasm_valparam *vp;
- matched = 1;
- yasm_vps_initialize(&vps);
- vp = yasm_vp_create_string(NULL, yasm__xstrdup(map_filename));
- yasm_vps_append(&vps, vp);
- dir->handler(object, &vps, NULL, 0);
- yasm_vps_delete(&vps);
- }
- }
- if (!matched) {
- print_error(
- _("warning: object format `%s' does not support map files"),
- cur_objfmt_module->keyword);
- }
- }
-
- /* Parse! */
- cur_parser_module->do_parse(object, cur_preproc, list_filename != NULL,
- linemap, errwarns);
-
- check_errors(errwarns, object, linemap);
-
- /* Finalize parse */
- yasm_object_finalize(object, errwarns);
- check_errors(errwarns, object, linemap);
-
- /* Optimize */
- yasm_object_optimize(object, errwarns);
- check_errors(errwarns, object, linemap);
-
- /* generate any debugging information */
- yasm_dbgfmt_generate(object, linemap, errwarns);
- check_errors(errwarns, object, linemap);
-
- /* open the object file for output (if not already opened by dbg objfmt) */
- if (!obj && strcmp(cur_objfmt_module->keyword, "dbg") != 0) {
- obj = open_file(obj_filename, "wb");
- if (!obj) {
- cleanup(object);
- return EXIT_FAILURE;
- }
- }
-
- /* Write the object file */
- yasm_objfmt_output(object, obj?obj:stderr,
- strcmp(cur_dbgfmt_module->keyword, "null"), errwarns);
-
- /* Close object file */
- if (obj)
- fclose(obj);
-
- /* If we had an error at this point, we also need to delete the output
- * object file (to make sure it's not left newer than the source).
- */
- if (yasm_errwarns_num_errors(errwarns, warning_error) > 0)
- remove(obj_filename);
- check_errors(errwarns, object, linemap);
-
- /* Open and write the list file */
- if (list_filename) {
- FILE *list = open_file(list_filename, "wt");
- if (!list) {
- cleanup(object);
- return EXIT_FAILURE;
- }
- /* Initialize the list format */
- cur_listfmt = yasm_listfmt_create(cur_listfmt_module, in_filename,
- obj_filename);
- yasm_listfmt_output(cur_listfmt, list, linemap, cur_arch);
- fclose(list);
- }
-
- yasm_errwarns_output_all(errwarns, linemap, warning_error,
- print_yasm_error, print_yasm_warning);
-
- yasm_linemap_destroy(linemap);
- yasm_errwarns_destroy(errwarns);
- cleanup(object);
- return EXIT_SUCCESS;
-}
-
-/* main function */
-/*@-globstate -unrecog@*/
-int
-main(int argc, char *argv[])
-{
- size_t i;
-
- errfile = stderr;
-
-#if defined(HAVE_SETLOCALE) && defined(HAVE_LC_MESSAGES)
- setlocale(LC_MESSAGES, "");
-#endif
-#if defined(LOCALEDIR)
- bindtextdomain(PACKAGE, LOCALEDIR);
-#endif
- textdomain(PACKAGE);
-
- /* Initialize errwarn handling */
- yasm_internal_error_ = handle_yasm_int_error;
- yasm_fatal = handle_yasm_fatal;
- yasm_gettext_hook = handle_yasm_gettext;
- yasm_errwarn_initialize();
-
- /* Initialize BitVector (needed for intnum/floatnum). */
- if (BitVector_Boot() != ErrCode_Ok) {
- print_error(_("%s: could not initialize BitVector"), _("FATAL"));
- return EXIT_FAILURE;
- }
-
- /* Initialize intnum and floatnum */
- yasm_intnum_initialize();
- yasm_floatnum_initialize();
-
-#ifdef CMAKE_BUILD
- /* Load standard modules */
-#ifdef BUILD_SHARED_LIBS
- if (!load_plugin("yasmstd")) {
- print_error(_("%s: could not load standard modules"), _("FATAL"));
- return EXIT_FAILURE;
- }
-#else
- yasm_init_plugin();
-#endif
-#endif
-
- /* Initialize parameter storage */
- STAILQ_INIT(&preproc_options);
-
- if (parse_cmdline(argc, argv, options, NELEMS(options), print_error))
- return EXIT_FAILURE;
-
- switch (special_options) {
- case SPECIAL_SHOW_HELP:
- /* Does gettext calls internally */
- help_msg(help_head, help_tail, options, NELEMS(options));
- return EXIT_SUCCESS;
- case SPECIAL_SHOW_VERSION:
- for (i=0; i<NELEMS(version_msg); i++)
- printf("%s\n", version_msg[i]);
- return EXIT_SUCCESS;
- case SPECIAL_SHOW_LICENSE:
- for (i=0; i<NELEMS(license_msg); i++)
- printf("%s\n", license_msg[i]);
- return EXIT_SUCCESS;
- case SPECIAL_LISTED:
- /* Printed out earlier */
- return EXIT_SUCCESS;
- }
-
- /* Open error file if specified. */
- if (error_filename) {
- errfile = open_file(error_filename, "wt");
- if (!errfile)
- return EXIT_FAILURE;
- }
-
+};
+
+/* version message */
+/*@observer@*/ static const char *version_msg[] = {
+ PACKAGE_STRING,
+ "Compiled on " __DATE__ ".",
+ "Copyright (c) 2001-2014 Peter Johnson and other Yasm developers.",
+ "Run yasm --license for licensing overview and summary."
+};
+
+/* help messages */
+/*@observer@*/ static const char *help_head = N_(
+ "usage: yasm [option]* file\n"
+ "Options:\n");
+/*@observer@*/ static const char *help_tail = N_(
+ "\n"
+ "Files are asm sources to be assembled.\n"
+ "\n"
+ "Sample invocation:\n"
+ " yasm -f elf -o object.o source.asm\n"
+ "\n"
+ "Report bugs to bug-yasm@tortall.net\n");
+
+/* parsed command line storage until appropriate modules have been loaded */
+typedef STAILQ_HEAD(constcharparam_head, constcharparam) constcharparam_head;
+
+typedef struct constcharparam {
+ STAILQ_ENTRY(constcharparam) link;
+ const char *param;
+ int id;
+} constcharparam;
+
+static constcharparam_head preproc_options;
+
+static int
+do_preproc_only(void)
+{
+ yasm_linemap *linemap;
+ char *preproc_buf;
+ size_t got;
+ const char *base_filename;
+ FILE *out = NULL;
+ yasm_errwarns *errwarns = yasm_errwarns_create();
+
+ /* Initialize line map */
+ linemap = yasm_linemap_create();
+ yasm_linemap_set(linemap, in_filename, 0, 1, 1);
+
+ /* Default output to stdout if not specified or generating dependency
+ makefiles */
+ if (!obj_filename || generate_make_dependencies) {
+ out = stdout;
+
+ /* determine the object filename if not specified, but we need a
+ file name for the makefile rule */
+ if (generate_make_dependencies && !obj_filename) {
+ if (in_filename == NULL)
+ /* Default to yasm.out if no obj filename specified */
+ obj_filename = yasm__xstrdup("yasm.out");
+ else {
+ /* replace (or add) extension to base filename */
+ yasm__splitpath(in_filename, &base_filename);
+ if (base_filename[0] == '\0')
+ obj_filename = yasm__xstrdup("yasm.out");
+ else
+ obj_filename = replace_extension(base_filename,
+ cur_objfmt_module->extension, "yasm.out");
+ }
+ }
+ } else {
+ /* Open output (object) file */
+ out = open_file(obj_filename, "wt");
+ if (!out)
+ return EXIT_FAILURE;
+ }
+
+ /* Create preprocessor */
+ cur_preproc = yasm_preproc_create(cur_preproc_module, in_filename, NULL,
+ linemap, errwarns);
+
+ /* Apply macros */
+ apply_preproc_builtins();
+ apply_preproc_standard_macros(cur_parser_module->stdmacs);
+ apply_preproc_standard_macros(cur_objfmt_module->stdmacs);
+ apply_preproc_saved_options();
+
+ /* Pre-process until done */
+ if (generate_make_dependencies) {
+ size_t totlen;
+
+ preproc_buf = yasm_xmalloc(PREPROC_BUF_SIZE);
+
+ fprintf(stdout, "%s: %s", obj_filename, in_filename);
+ totlen = strlen(obj_filename)+2+strlen(in_filename);
+
+ while ((got = yasm_preproc_get_included_file(cur_preproc, preproc_buf,
+ PREPROC_BUF_SIZE)) != 0) {
+ totlen += got;
+ if (totlen > 72) {
+ fputs(" \\\n ", stdout);
+ totlen = 2;
+ }
+ fputc(' ', stdout);
+ fwrite(preproc_buf, got, 1, stdout);
+ }
+ fputc('\n', stdout);
+ yasm_xfree(preproc_buf);
+ } else {
+ while ((preproc_buf = yasm_preproc_get_line(cur_preproc)) != NULL) {
+ fputs(preproc_buf, out);
+ fputc('\n', out);
+ yasm_xfree(preproc_buf);
+ }
+ }
+
+ if (out != stdout)
+ fclose(out);
+
+ if (yasm_errwarns_num_errors(errwarns, warning_error) > 0) {
+ yasm_errwarns_output_all(errwarns, linemap, warning_error,
+ print_yasm_error, print_yasm_warning);
+ if (out != stdout)
+ remove(obj_filename);
+ yasm_linemap_destroy(linemap);
+ yasm_errwarns_destroy(errwarns);
+ cleanup(NULL);
+ return EXIT_FAILURE;
+ }
+
+ yasm_errwarns_output_all(errwarns, linemap, warning_error,
+ print_yasm_error, print_yasm_warning);
+ yasm_linemap_destroy(linemap);
+ yasm_errwarns_destroy(errwarns);
+ cleanup(NULL);
+ return EXIT_SUCCESS;
+}
+
+static int
+do_assemble(void)
+{
+ yasm_object *object;
+ const char *base_filename;
+ /*@null@*/ FILE *obj = NULL;
+ yasm_arch_create_error arch_error;
+ yasm_linemap *linemap;
+ yasm_errwarns *errwarns = yasm_errwarns_create();
+ int i, matched;
+ const char *machine;
+
+ /* Initialize line map */
+ linemap = yasm_linemap_create();
+ yasm_linemap_set(linemap, in_filename, 0, 1, 1);
+
+ /* determine the object filename if not specified */
+ if (!obj_filename) {
+ if (in_filename == NULL)
+ /* Default to yasm.out if no obj filename specified */
+ obj_filename = yasm__xstrdup("yasm.out");
+ else {
+ /* replace (or add) extension to base filename */
+ yasm__splitpath(in_filename, &base_filename);
+ if (base_filename[0] == '\0')
+ obj_filename = yasm__xstrdup("yasm.out");
+ else
+ obj_filename = replace_extension(base_filename,
+ cur_objfmt_module->extension,
+ "yasm.out");
+ }
+ }
+
+ /* Set up architecture using machine and parser. */
+ if (!machine_name) {
+ /* If we're using x86 and the default objfmt bits is 64, default the
+ * machine to amd64. When we get more arches with multiple machines,
+ * we should do this in a more modular fashion.
+ */
+ if (strcmp(cur_arch_module->keyword, "x86") == 0 &&
+ cur_objfmt_module->default_x86_mode_bits == 64)
+ machine_name = yasm__xstrdup("amd64");
+ else
+ machine_name =
+ yasm__xstrdup(cur_arch_module->default_machine_keyword);
+ }
+
+ /* If we're using amd64 and the default objfmt is elfx32, change the
+ * machine to "x32".
+ */
+ if (strcmp(machine_name, "amd64") == 0 &&
+ strcmp(cur_objfmt_module->keyword, "elfx32") == 0)
+ machine = "x32";
+ else
+ machine = machine_name;
+
+ cur_arch = yasm_arch_create(cur_arch_module, machine,
+ cur_parser_module->keyword, &arch_error);
+ if (!cur_arch) {
+ switch (arch_error) {
+ case YASM_ARCH_CREATE_BAD_MACHINE:
+ print_error(_("%s: `%s' is not a valid %s for %s `%s'"),
+ _("FATAL"), machine_name, _("machine"),
+ _("architecture"), cur_arch_module->keyword);
+ break;
+ case YASM_ARCH_CREATE_BAD_PARSER:
+ print_error(_("%s: `%s' is not a valid %s for %s `%s'"),
+ _("FATAL"), cur_parser_module->keyword,
+ _("parser"), _("architecture"),
+ cur_arch_module->keyword);
+ break;
+ default:
+ print_error(_("%s: unknown architecture error"), _("FATAL"));
+ }
+
+ return EXIT_FAILURE;
+ }
+
+ /* Create object */
+ object = yasm_object_create(in_filename, obj_filename, cur_arch,
+ cur_objfmt_module, cur_dbgfmt_module);
+ if (!object) {
+ yasm_error_class eclass;
+ unsigned long xrefline;
+ /*@only@*/ /*@null@*/ char *estr, *xrefstr;
+
+ yasm_error_fetch(&eclass, &estr, &xrefline, &xrefstr);
+ print_error("%s: %s", _("FATAL"), estr);
+ yasm_xfree(estr);
+ yasm_xfree(xrefstr);
+
+ cleanup(object);
+ return EXIT_FAILURE;
+ }
+
+ /* Get a fresh copy of objfmt_module as it may have changed. */
+ cur_objfmt_module = ((yasm_objfmt_base *)object->objfmt)->module;
+
+ /* Check to see if the requested preprocessor is in the allowed list
+ * for the active parser.
+ */
+ matched = 0;
+ for (i=0; cur_parser_module->preproc_keywords[i]; i++)
+ {
+ if (yasm__strcasecmp(cur_parser_module->preproc_keywords[i],
+ cur_preproc_module->keyword) == 0) {
+ matched = 1;
+ break;
+ }
+ }
+
+ if (!matched) {
+ print_error(_("%s: `%s' is not a valid %s for %s `%s'"), _("FATAL"),
+ cur_preproc_module->keyword, _("preprocessor"),
+ _("parser"), cur_parser_module->keyword);
+ cleanup(object);
+ return EXIT_FAILURE;
+ }
+
+ if (global_prefix)
+ yasm_object_set_global_prefix(object, global_prefix);
+ if (global_suffix)
+ yasm_object_set_global_suffix(object, global_suffix);
+
+ cur_preproc = yasm_preproc_create(cur_preproc_module, in_filename,
+ object->symtab, linemap, errwarns);
+
+ apply_preproc_builtins();
+ apply_preproc_standard_macros(cur_parser_module->stdmacs);
+ apply_preproc_standard_macros(cur_objfmt_module->stdmacs);
+ apply_preproc_saved_options();
+
+ /* Get initial x86 BITS setting from object format */
+ if (strcmp(cur_arch_module->keyword, "x86") == 0) {
+ yasm_arch_set_var(cur_arch, "mode_bits",
+ cur_objfmt_module->default_x86_mode_bits);
+ }
+
+ yasm_arch_set_var(cur_arch, "force_strict", force_strict);
+
+ /* Try to enable the map file via a map NASM directive. This is
+ * somewhat of a hack.
+ */
+ if (map_filename) {
+ const yasm_directive *dir = &cur_objfmt_module->directives[0];
+ matched = 0;
+ for (; dir && dir->name; dir++) {
+ if (yasm__strcasecmp(dir->name, "map") == 0 &&
+ yasm__strcasecmp(dir->parser, "nasm") == 0) {
+ yasm_valparamhead vps;
+ yasm_valparam *vp;
+ matched = 1;
+ yasm_vps_initialize(&vps);
+ vp = yasm_vp_create_string(NULL, yasm__xstrdup(map_filename));
+ yasm_vps_append(&vps, vp);
+ dir->handler(object, &vps, NULL, 0);
+ yasm_vps_delete(&vps);
+ }
+ }
+ if (!matched) {
+ print_error(
+ _("warning: object format `%s' does not support map files"),
+ cur_objfmt_module->keyword);
+ }
+ }
+
+ /* Parse! */
+ cur_parser_module->do_parse(object, cur_preproc, list_filename != NULL,
+ linemap, errwarns);
+
+ check_errors(errwarns, object, linemap);
+
+ /* Finalize parse */
+ yasm_object_finalize(object, errwarns);
+ check_errors(errwarns, object, linemap);
+
+ /* Optimize */
+ yasm_object_optimize(object, errwarns);
+ check_errors(errwarns, object, linemap);
+
+ /* generate any debugging information */
+ yasm_dbgfmt_generate(object, linemap, errwarns);
+ check_errors(errwarns, object, linemap);
+
+ /* open the object file for output (if not already opened by dbg objfmt) */
+ if (!obj && strcmp(cur_objfmt_module->keyword, "dbg") != 0) {
+ obj = open_file(obj_filename, "wb");
+ if (!obj) {
+ cleanup(object);
+ return EXIT_FAILURE;
+ }
+ }
+
+ /* Write the object file */
+ yasm_objfmt_output(object, obj?obj:stderr,
+ strcmp(cur_dbgfmt_module->keyword, "null"), errwarns);
+
+ /* Close object file */
+ if (obj)
+ fclose(obj);
+
+ /* If we had an error at this point, we also need to delete the output
+ * object file (to make sure it's not left newer than the source).
+ */
+ if (yasm_errwarns_num_errors(errwarns, warning_error) > 0)
+ remove(obj_filename);
+ check_errors(errwarns, object, linemap);
+
+ /* Open and write the list file */
+ if (list_filename) {
+ FILE *list = open_file(list_filename, "wt");
+ if (!list) {
+ cleanup(object);
+ return EXIT_FAILURE;
+ }
+ /* Initialize the list format */
+ cur_listfmt = yasm_listfmt_create(cur_listfmt_module, in_filename,
+ obj_filename);
+ yasm_listfmt_output(cur_listfmt, list, linemap, cur_arch);
+ fclose(list);
+ }
+
+ yasm_errwarns_output_all(errwarns, linemap, warning_error,
+ print_yasm_error, print_yasm_warning);
+
+ yasm_linemap_destroy(linemap);
+ yasm_errwarns_destroy(errwarns);
+ cleanup(object);
+ return EXIT_SUCCESS;
+}
+
+/* main function */
+/*@-globstate -unrecog@*/
+int
+main(int argc, char *argv[])
+{
+ size_t i;
+
+ errfile = stderr;
+
+#if defined(HAVE_SETLOCALE) && defined(HAVE_LC_MESSAGES)
+ setlocale(LC_MESSAGES, "");
+#endif
+#if defined(LOCALEDIR)
+ bindtextdomain(PACKAGE, LOCALEDIR);
+#endif
+ textdomain(PACKAGE);
+
+ /* Initialize errwarn handling */
+ yasm_internal_error_ = handle_yasm_int_error;
+ yasm_fatal = handle_yasm_fatal;
+ yasm_gettext_hook = handle_yasm_gettext;
+ yasm_errwarn_initialize();
+
+ /* Initialize BitVector (needed for intnum/floatnum). */
+ if (BitVector_Boot() != ErrCode_Ok) {
+ print_error(_("%s: could not initialize BitVector"), _("FATAL"));
+ return EXIT_FAILURE;
+ }
+
+ /* Initialize intnum and floatnum */
+ yasm_intnum_initialize();
+ yasm_floatnum_initialize();
+
+#ifdef CMAKE_BUILD
+ /* Load standard modules */
+#ifdef BUILD_SHARED_LIBS
+ if (!load_plugin("yasmstd")) {
+ print_error(_("%s: could not load standard modules"), _("FATAL"));
+ return EXIT_FAILURE;
+ }
+#else
+ yasm_init_plugin();
+#endif
+#endif
+
+ /* Initialize parameter storage */
+ STAILQ_INIT(&preproc_options);
+
+ if (parse_cmdline(argc, argv, options, NELEMS(options), print_error))
+ return EXIT_FAILURE;
+
+ switch (special_options) {
+ case SPECIAL_SHOW_HELP:
+ /* Does gettext calls internally */
+ help_msg(help_head, help_tail, options, NELEMS(options));
+ return EXIT_SUCCESS;
+ case SPECIAL_SHOW_VERSION:
+ for (i=0; i<NELEMS(version_msg); i++)
+ printf("%s\n", version_msg[i]);
+ return EXIT_SUCCESS;
+ case SPECIAL_SHOW_LICENSE:
+ for (i=0; i<NELEMS(license_msg); i++)
+ printf("%s\n", license_msg[i]);
+ return EXIT_SUCCESS;
+ case SPECIAL_LISTED:
+ /* Printed out earlier */
+ return EXIT_SUCCESS;
+ }
+
+ /* Open error file if specified. */
+ if (error_filename) {
+ errfile = open_file(error_filename, "wt");
+ if (!errfile)
+ return EXIT_FAILURE;
+ }
+
#if defined(CMAKE_BUILD) && !defined(BUILD_SHARED_LIBS)
yasm_plugin_set_replace(replace_params, replace_size);
#endif
- /* If not already specified, default to bin as the object format. */
- if (!cur_objfmt_module) {
- if (!objfmt_keyword)
- objfmt_keyword = yasm__xstrdup("bin");
- cur_objfmt_module = yasm_load_objfmt(objfmt_keyword);
- if (!cur_objfmt_module) {
- print_error(_("%s: could not load default %s"), _("FATAL"),
- _("object format"));
- return EXIT_FAILURE;
- }
- }
-
- /* Default to x86 as the architecture */
- if (!cur_arch_module) {
- cur_arch_module = yasm_load_arch("x86");
- if (!cur_arch_module) {
- print_error(_("%s: could not load default %s"), _("FATAL"),
- _("architecture"));
- return EXIT_FAILURE;
- }
- }
-
- /* Check for arch help */
- if (machine_name && strcmp(machine_name, "help") == 0) {
- const yasm_arch_machine *m = cur_arch_module->machines;
- printf(_("Available %s for %s `%s':\n"), _("machines"),
- _("architecture"), cur_arch_module->keyword);
- while (m->keyword && m->name) {
- print_list_keyword_desc(m->name, m->keyword);
- m++;
- }
- return EXIT_SUCCESS;
- }
-
- /* Default to NASM as the parser */
- if (!cur_parser_module) {
- cur_parser_module = yasm_load_parser("nasm");
- if (!cur_parser_module) {
- print_error(_("%s: could not load default %s"), _("FATAL"),
- _("parser"));
- cleanup(NULL);
- return EXIT_FAILURE;
- }
- }
-
- /* If not already specified, default to the parser's default preproc. */
- if (!cur_preproc_module) {
- cur_preproc_module =
- yasm_load_preproc(cur_parser_module->default_preproc_keyword);
- if (!cur_preproc_module) {
- print_error(_("%s: could not load default %s"), _("FATAL"),
- _("preprocessor"));
- cleanup(NULL);
- return EXIT_FAILURE;
- }
- }
-
- /* Determine input filename and open input file. */
- if (!in_filename) {
- print_error(_("No input files specified"));
- return EXIT_FAILURE;
- }
-
- /* handle preproc-only case here */
- if (preproc_only)
- return do_preproc_only();
-
- /* If list file enabled, make sure we have a list format loaded. */
- if (list_filename) {
- /* If not already specified, default to nasm as the list format. */
- if (!cur_listfmt_module) {
- cur_listfmt_module = yasm_load_listfmt("nasm");
- if (!cur_listfmt_module) {
- print_error(_("%s: could not load default %s"), _("FATAL"),
- _("list format"));
- return EXIT_FAILURE;
- }
- }
- }
-
- /* If not already specified, default to null as the debug format. */
- if (!cur_dbgfmt_module) {
- cur_dbgfmt_module = yasm_load_dbgfmt("null");
- if (!cur_dbgfmt_module) {
- print_error(_("%s: could not load default %s"), _("FATAL"),
- _("debug format"));
- return EXIT_FAILURE;
- }
- }
-
- return do_assemble();
-}
-/*@=globstate =unrecog@*/
-
-/* Open the object file. Returns 0 on failure. */
-static FILE *
-open_file(const char *filename, const char *mode)
-{
- FILE *f;
-
- f = fopen(filename, mode);
- if (!f)
- print_error(_("could not open file `%s'"), filename);
- return f;
-}
-
-static void
-check_errors(yasm_errwarns *errwarns, yasm_object *object,
- yasm_linemap *linemap)
-{
- if (yasm_errwarns_num_errors(errwarns, warning_error) > 0) {
- yasm_errwarns_output_all(errwarns, linemap, warning_error,
- print_yasm_error, print_yasm_warning);
- yasm_linemap_destroy(linemap);
- yasm_errwarns_destroy(errwarns);
- cleanup(object);
- exit(EXIT_FAILURE);
- }
-}
-
-/* Define DO_FREE to 1 to enable deallocation of all data structures.
- * Useful for detecting memory leaks, but slows down execution unnecessarily
- * (as the OS will free everything we miss here).
- */
-#define DO_FREE 1
-
-/* Cleans up all allocated structures. */
-static void
-cleanup(yasm_object *object)
-{
- if (DO_FREE) {
- if (cur_listfmt)
- yasm_listfmt_destroy(cur_listfmt);
- if (cur_preproc)
- yasm_preproc_destroy(cur_preproc);
- if (object)
- yasm_object_destroy(object);
-
- yasm_floatnum_cleanup();
- yasm_intnum_cleanup();
-
- yasm_errwarn_cleanup();
-
- BitVector_Shutdown();
- }
-
- if (DO_FREE) {
- if (in_filename)
- yasm_xfree(in_filename);
- if (obj_filename)
- yasm_xfree(obj_filename);
- if (list_filename)
- yasm_xfree(list_filename);
- if (map_filename)
- yasm_xfree(map_filename);
- if (machine_name)
- yasm_xfree(machine_name);
- if (objfmt_keyword)
- yasm_xfree(objfmt_keyword);
- }
-
- if (errfile != stderr && errfile != stdout)
- fclose(errfile);
-#if defined(CMAKE_BUILD) && defined(BUILD_SHARED_LIBS)
- unload_plugins();
-#endif
-}
-
-/*
- * Command line options handlers
- */
-int
-not_an_option_handler(char *param)
-{
- if (in_filename) {
- print_error(
- _("warning: can open only one input file, only the last file will be processed"));
- yasm_xfree(in_filename);
- }
-
- in_filename = yasm__xstrdup(param);
-
- return 0;
-}
-
-int
-other_option_handler(char *option)
-{
- /* Accept, but ignore, -O and -Onnn, for compatibility with NASM. */
- if (option[0] == '-' && option[1] == 'O') {
- int n = 2;
- for (;;) {
- if (option[n] == '\0')
- return 0;
- if (!isdigit(option[n]))
- return 1;
- n++;
- }
- }
- return 1;
-}
-
-static int
-opt_special_handler(/*@unused@*/ char *cmd, /*@unused@*/ char *param, int extra)
-{
- if (special_options == 0)
- special_options = extra;
- return 0;
-}
-
-static int
-opt_arch_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
-{
- assert(param != NULL);
- cur_arch_module = yasm_load_arch(param);
- if (!cur_arch_module) {
- if (!strcmp("help", param)) {
- printf(_("Available yasm %s:\n"), _("architectures"));
- yasm_list_arch(print_list_keyword_desc);
- special_options = SPECIAL_LISTED;
- return 0;
- }
- print_error(_("%s: unrecognized %s `%s'"), _("FATAL"),
- _("architecture"), param);
- exit(EXIT_FAILURE);
- }
- return 0;
-}
-
-static int
-opt_parser_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
-{
- assert(param != NULL);
- cur_parser_module = yasm_load_parser(param);
- if (!cur_parser_module) {
- if (!strcmp("help", param)) {
- printf(_("Available yasm %s:\n"), _("parsers"));
- yasm_list_parser(print_list_keyword_desc);
- special_options = SPECIAL_LISTED;
- return 0;
- }
- print_error(_("%s: unrecognized %s `%s'"), _("FATAL"), _("parser"),
- param);
- exit(EXIT_FAILURE);
- }
- return 0;
-}
-
-static int
-opt_preproc_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
-{
- assert(param != NULL);
- cur_preproc_module = yasm_load_preproc(param);
- if (!cur_preproc_module) {
- if (!strcmp("help", param)) {
- printf(_("Available yasm %s:\n"), _("preprocessors"));
- yasm_list_preproc(print_list_keyword_desc);
- special_options = SPECIAL_LISTED;
- return 0;
- }
- print_error(_("%s: unrecognized %s `%s'"), _("FATAL"),
- _("preprocessor"), param);
- exit(EXIT_FAILURE);
- }
- return 0;
-}
-
-static int
-opt_objfmt_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
-{
- size_t i;
- assert(param != NULL);
- cur_objfmt_module = yasm_load_objfmt(param);
- if (!cur_objfmt_module) {
- if (!strcmp("help", param)) {
- printf(_("Available yasm %s:\n"), _("object formats"));
- yasm_list_objfmt(print_list_keyword_desc);
- special_options = SPECIAL_LISTED;
- return 0;
- }
- print_error(_("%s: unrecognized %s `%s'"), _("FATAL"),
- _("object format"), param);
- exit(EXIT_FAILURE);
- }
- if (objfmt_keyword)
- yasm_xfree(objfmt_keyword);
- objfmt_keyword = yasm__xstrdup(param);
- for (i=0; i<strlen(objfmt_keyword); i++)
- objfmt_keyword[i] = tolower(objfmt_keyword[i]);
- return 0;
-}
-
-static int
-opt_dbgfmt_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
-{
- assert(param != NULL);
- cur_dbgfmt_module = yasm_load_dbgfmt(param);
- if (!cur_dbgfmt_module) {
- if (!strcmp("help", param)) {
- printf(_("Available yasm %s:\n"), _("debug formats"));
- yasm_list_dbgfmt(print_list_keyword_desc);
- special_options = SPECIAL_LISTED;
- return 0;
- }
- print_error(_("%s: unrecognized %s `%s'"), _("FATAL"),
- _("debug format"), param);
- exit(EXIT_FAILURE);
- }
- return 0;
-}
-
-static int
-opt_listfmt_handler(/*@unused@*/ char *cmd, char *param,
- /*@unused@*/ int extra)
-{
- assert(param != NULL);
- cur_listfmt_module = yasm_load_listfmt(param);
- if (!cur_listfmt_module) {
- if (!strcmp("help", param)) {
- printf(_("Available yasm %s:\n"), _("list formats"));
- yasm_list_listfmt(print_list_keyword_desc);
- special_options = SPECIAL_LISTED;
- return 0;
- }
- print_error(_("%s: unrecognized %s `%s'"), _("FATAL"),
- _("list format"), param);
- exit(EXIT_FAILURE);
- }
- return 0;
-}
-
-static int
-opt_listfile_handler(/*@unused@*/ char *cmd, char *param,
- /*@unused@*/ int extra)
-{
- if (list_filename) {
- print_error(
- _("warning: can output to only one list file, last specified used"));
- yasm_xfree(list_filename);
- }
-
- assert(param != NULL);
- list_filename = yasm__xstrdup(param);
-
- return 0;
-}
-
-static int
-opt_objfile_handler(/*@unused@*/ char *cmd, char *param,
- /*@unused@*/ int extra)
-{
- if (obj_filename) {
- print_error(
- _("warning: can output to only one object file, last specified used"));
- yasm_xfree(obj_filename);
- }
-
- assert(param != NULL);
- obj_filename = yasm__xstrdup(param);
-
- return 0;
-}
-
-static int
-opt_mapfile_handler(/*@unused@*/ char *cmd, char *param,
- /*@unused@*/ int extra)
-{
- if (map_filename) {
- print_error(
- _("warning: can output to only one map file, last specified used"));
- yasm_xfree(map_filename);
- }
-
- assert(param != NULL);
- map_filename = yasm__xstrdup(param);
-
- return 0;
-}
-
-static int
-opt_machine_handler(/*@unused@*/ char *cmd, char *param,
- /*@unused@*/ int extra)
-{
- if (machine_name)
- yasm_xfree(machine_name);
-
- assert(param != NULL);
- machine_name = yasm__xstrdup(param);
-
- return 0;
-}
-
-static int
-opt_strict_handler(/*@unused@*/ char *cmd,
- /*@unused@*/ /*@null@*/ char *param,
- /*@unused@*/ int extra)
-{
- force_strict = 1;
- return 0;
-}
-
-static int
-opt_warning_handler(char *cmd, /*@unused@*/ char *param, int extra)
-{
- /* is it disabling the warning instead of enabling? */
- void (*action)(yasm_warn_class wclass) = yasm_warn_enable;
-
- if (extra == 1) {
- /* -w, disable warnings */
- yasm_warn_disable_all();
- return 0;
- }
-
- /* skip past 'W' */
- cmd++;
-
- /* detect no- prefix to disable the warning */
- if (cmd[0] == 'n' && cmd[1] == 'o' && cmd[2] == '-') {
- action = yasm_warn_disable;
- cmd += 3; /* skip past it to get to the warning name */
- }
-
- if (cmd[0] == '\0')
- /* just -W or -Wno-, so definitely not valid */
- return 1;
- else if (strcmp(cmd, "error") == 0)
- warning_error = (action == yasm_warn_enable);
- else if (strcmp(cmd, "unrecognized-char") == 0)
- action(YASM_WARN_UNREC_CHAR);
- else if (strcmp(cmd, "orphan-labels") == 0)
- action(YASM_WARN_ORPHAN_LABEL);
- else if (strcmp(cmd, "uninit-contents") == 0)
- action(YASM_WARN_UNINIT_CONTENTS);
- else if (strcmp(cmd, "size-override") == 0)
- action(YASM_WARN_SIZE_OVERRIDE);
- else
- return 1;
-
- return 0;
-}
-
-static int
-opt_error_file(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
-{
- if (error_filename) {
- print_error(
- _("warning: can output to only one error file, last specified used"));
- yasm_xfree(error_filename);
- }
-
- assert(param != NULL);
- error_filename = yasm__xstrdup(param);
-
- return 0;
-}
-
-static int
-opt_error_stdout(/*@unused@*/ char *cmd, /*@unused@*/ char *param,
- /*@unused@*/ int extra)
-{
- /* Clear any specified error filename */
- if (error_filename) {
- yasm_xfree(error_filename);
- error_filename = NULL;
- }
- errfile = stdout;
- return 0;
-}
-
-static int
-preproc_only_handler(/*@unused@*/ char *cmd, /*@unused@*/ char *param,
- /*@unused@*/ int extra)
-{
- preproc_only = 1;
- return 0;
-}
-
-static int
-opt_include_option(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
-{
- yasm_add_include_path(param);
- return 0;
-}
-
-static int
-opt_preproc_option(/*@unused@*/ char *cmd, char *param, int extra)
-{
- constcharparam *cp;
- cp = yasm_xmalloc(sizeof(constcharparam));
- cp->param = param;
- cp->id = extra;
- STAILQ_INSERT_TAIL(&preproc_options, cp, link);
- return 0;
-}
-
-static int
-opt_ewmsg_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
-{
- if (yasm__strcasecmp(param, "gnu") == 0 ||
- yasm__strcasecmp(param, "gcc") == 0) {
- ewmsg_style = EWSTYLE_GNU;
- } else if (yasm__strcasecmp(param, "vc") == 0) {
- ewmsg_style = EWSTYLE_VC;
- } else
- print_error(_("warning: unrecognized message style `%s'"), param);
-
- return 0;
-}
-
-static int
-opt_makedep_handler(/*@unused@*/ char *cmd, /*@unused@*/ char *param,
- /*@unused@*/ int extra)
-{
- /* Also set preproc_only to 1, we don't want to generate code */
- preproc_only = 1;
- generate_make_dependencies = 1;
-
- return 0;
-}
-
-static int
-opt_prefix_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
-{
- if (global_prefix)
- yasm_xfree(global_prefix);
-
- assert(param != NULL);
- global_prefix = yasm__xstrdup(param);
-
- return 0;
-}
-
+ /* If not already specified, default to bin as the object format. */
+ if (!cur_objfmt_module) {
+ if (!objfmt_keyword)
+ objfmt_keyword = yasm__xstrdup("bin");
+ cur_objfmt_module = yasm_load_objfmt(objfmt_keyword);
+ if (!cur_objfmt_module) {
+ print_error(_("%s: could not load default %s"), _("FATAL"),
+ _("object format"));
+ return EXIT_FAILURE;
+ }
+ }
+
+ /* Default to x86 as the architecture */
+ if (!cur_arch_module) {
+ cur_arch_module = yasm_load_arch("x86");
+ if (!cur_arch_module) {
+ print_error(_("%s: could not load default %s"), _("FATAL"),
+ _("architecture"));
+ return EXIT_FAILURE;
+ }
+ }
+
+ /* Check for arch help */
+ if (machine_name && strcmp(machine_name, "help") == 0) {
+ const yasm_arch_machine *m = cur_arch_module->machines;
+ printf(_("Available %s for %s `%s':\n"), _("machines"),
+ _("architecture"), cur_arch_module->keyword);
+ while (m->keyword && m->name) {
+ print_list_keyword_desc(m->name, m->keyword);
+ m++;
+ }
+ return EXIT_SUCCESS;
+ }
+
+ /* Default to NASM as the parser */
+ if (!cur_parser_module) {
+ cur_parser_module = yasm_load_parser("nasm");
+ if (!cur_parser_module) {
+ print_error(_("%s: could not load default %s"), _("FATAL"),
+ _("parser"));
+ cleanup(NULL);
+ return EXIT_FAILURE;
+ }
+ }
+
+ /* If not already specified, default to the parser's default preproc. */
+ if (!cur_preproc_module) {
+ cur_preproc_module =
+ yasm_load_preproc(cur_parser_module->default_preproc_keyword);
+ if (!cur_preproc_module) {
+ print_error(_("%s: could not load default %s"), _("FATAL"),
+ _("preprocessor"));
+ cleanup(NULL);
+ return EXIT_FAILURE;
+ }
+ }
+
+ /* Determine input filename and open input file. */
+ if (!in_filename) {
+ print_error(_("No input files specified"));
+ return EXIT_FAILURE;
+ }
+
+ /* handle preproc-only case here */
+ if (preproc_only)
+ return do_preproc_only();
+
+ /* If list file enabled, make sure we have a list format loaded. */
+ if (list_filename) {
+ /* If not already specified, default to nasm as the list format. */
+ if (!cur_listfmt_module) {
+ cur_listfmt_module = yasm_load_listfmt("nasm");
+ if (!cur_listfmt_module) {
+ print_error(_("%s: could not load default %s"), _("FATAL"),
+ _("list format"));
+ return EXIT_FAILURE;
+ }
+ }
+ }
+
+ /* If not already specified, default to null as the debug format. */
+ if (!cur_dbgfmt_module) {
+ cur_dbgfmt_module = yasm_load_dbgfmt("null");
+ if (!cur_dbgfmt_module) {
+ print_error(_("%s: could not load default %s"), _("FATAL"),
+ _("debug format"));
+ return EXIT_FAILURE;
+ }
+ }
+
+ return do_assemble();
+}
+/*@=globstate =unrecog@*/
+
+/* Open the object file. Returns 0 on failure. */
+static FILE *
+open_file(const char *filename, const char *mode)
+{
+ FILE *f;
+
+ f = fopen(filename, mode);
+ if (!f)
+ print_error(_("could not open file `%s'"), filename);
+ return f;
+}
+
+static void
+check_errors(yasm_errwarns *errwarns, yasm_object *object,
+ yasm_linemap *linemap)
+{
+ if (yasm_errwarns_num_errors(errwarns, warning_error) > 0) {
+ yasm_errwarns_output_all(errwarns, linemap, warning_error,
+ print_yasm_error, print_yasm_warning);
+ yasm_linemap_destroy(linemap);
+ yasm_errwarns_destroy(errwarns);
+ cleanup(object);
+ exit(EXIT_FAILURE);
+ }
+}
+
+/* Define DO_FREE to 1 to enable deallocation of all data structures.
+ * Useful for detecting memory leaks, but slows down execution unnecessarily
+ * (as the OS will free everything we miss here).
+ */
+#define DO_FREE 1
+
+/* Cleans up all allocated structures. */
+static void
+cleanup(yasm_object *object)
+{
+ if (DO_FREE) {
+ if (cur_listfmt)
+ yasm_listfmt_destroy(cur_listfmt);
+ if (cur_preproc)
+ yasm_preproc_destroy(cur_preproc);
+ if (object)
+ yasm_object_destroy(object);
+
+ yasm_floatnum_cleanup();
+ yasm_intnum_cleanup();
+
+ yasm_errwarn_cleanup();
+
+ BitVector_Shutdown();
+ }
+
+ if (DO_FREE) {
+ if (in_filename)
+ yasm_xfree(in_filename);
+ if (obj_filename)
+ yasm_xfree(obj_filename);
+ if (list_filename)
+ yasm_xfree(list_filename);
+ if (map_filename)
+ yasm_xfree(map_filename);
+ if (machine_name)
+ yasm_xfree(machine_name);
+ if (objfmt_keyword)
+ yasm_xfree(objfmt_keyword);
+ }
+
+ if (errfile != stderr && errfile != stdout)
+ fclose(errfile);
+#if defined(CMAKE_BUILD) && defined(BUILD_SHARED_LIBS)
+ unload_plugins();
+#endif
+}
+
+/*
+ * Command line options handlers
+ */
+int
+not_an_option_handler(char *param)
+{
+ if (in_filename) {
+ print_error(
+ _("warning: can open only one input file, only the last file will be processed"));
+ yasm_xfree(in_filename);
+ }
+
+ in_filename = yasm__xstrdup(param);
+
+ return 0;
+}
+
+int
+other_option_handler(char *option)
+{
+ /* Accept, but ignore, -O and -Onnn, for compatibility with NASM. */
+ if (option[0] == '-' && option[1] == 'O') {
+ int n = 2;
+ for (;;) {
+ if (option[n] == '\0')
+ return 0;
+ if (!isdigit(option[n]))
+ return 1;
+ n++;
+ }
+ }
+ return 1;
+}
+
+static int
+opt_special_handler(/*@unused@*/ char *cmd, /*@unused@*/ char *param, int extra)
+{
+ if (special_options == 0)
+ special_options = extra;
+ return 0;
+}
+
+static int
+opt_arch_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
+{
+ assert(param != NULL);
+ cur_arch_module = yasm_load_arch(param);
+ if (!cur_arch_module) {
+ if (!strcmp("help", param)) {
+ printf(_("Available yasm %s:\n"), _("architectures"));
+ yasm_list_arch(print_list_keyword_desc);
+ special_options = SPECIAL_LISTED;
+ return 0;
+ }
+ print_error(_("%s: unrecognized %s `%s'"), _("FATAL"),
+ _("architecture"), param);
+ exit(EXIT_FAILURE);
+ }
+ return 0;
+}
+
+static int
+opt_parser_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
+{
+ assert(param != NULL);
+ cur_parser_module = yasm_load_parser(param);
+ if (!cur_parser_module) {
+ if (!strcmp("help", param)) {
+ printf(_("Available yasm %s:\n"), _("parsers"));
+ yasm_list_parser(print_list_keyword_desc);
+ special_options = SPECIAL_LISTED;
+ return 0;
+ }
+ print_error(_("%s: unrecognized %s `%s'"), _("FATAL"), _("parser"),
+ param);
+ exit(EXIT_FAILURE);
+ }
+ return 0;
+}
+
+static int
+opt_preproc_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
+{
+ assert(param != NULL);
+ cur_preproc_module = yasm_load_preproc(param);
+ if (!cur_preproc_module) {
+ if (!strcmp("help", param)) {
+ printf(_("Available yasm %s:\n"), _("preprocessors"));
+ yasm_list_preproc(print_list_keyword_desc);
+ special_options = SPECIAL_LISTED;
+ return 0;
+ }
+ print_error(_("%s: unrecognized %s `%s'"), _("FATAL"),
+ _("preprocessor"), param);
+ exit(EXIT_FAILURE);
+ }
+ return 0;
+}
+
+static int
+opt_objfmt_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
+{
+ size_t i;
+ assert(param != NULL);
+ cur_objfmt_module = yasm_load_objfmt(param);
+ if (!cur_objfmt_module) {
+ if (!strcmp("help", param)) {
+ printf(_("Available yasm %s:\n"), _("object formats"));
+ yasm_list_objfmt(print_list_keyword_desc);
+ special_options = SPECIAL_LISTED;
+ return 0;
+ }
+ print_error(_("%s: unrecognized %s `%s'"), _("FATAL"),
+ _("object format"), param);
+ exit(EXIT_FAILURE);
+ }
+ if (objfmt_keyword)
+ yasm_xfree(objfmt_keyword);
+ objfmt_keyword = yasm__xstrdup(param);
+ for (i=0; i<strlen(objfmt_keyword); i++)
+ objfmt_keyword[i] = tolower(objfmt_keyword[i]);
+ return 0;
+}
+
+static int
+opt_dbgfmt_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
+{
+ assert(param != NULL);
+ cur_dbgfmt_module = yasm_load_dbgfmt(param);
+ if (!cur_dbgfmt_module) {
+ if (!strcmp("help", param)) {
+ printf(_("Available yasm %s:\n"), _("debug formats"));
+ yasm_list_dbgfmt(print_list_keyword_desc);
+ special_options = SPECIAL_LISTED;
+ return 0;
+ }
+ print_error(_("%s: unrecognized %s `%s'"), _("FATAL"),
+ _("debug format"), param);
+ exit(EXIT_FAILURE);
+ }
+ return 0;
+}
+
+static int
+opt_listfmt_handler(/*@unused@*/ char *cmd, char *param,
+ /*@unused@*/ int extra)
+{
+ assert(param != NULL);
+ cur_listfmt_module = yasm_load_listfmt(param);
+ if (!cur_listfmt_module) {
+ if (!strcmp("help", param)) {
+ printf(_("Available yasm %s:\n"), _("list formats"));
+ yasm_list_listfmt(print_list_keyword_desc);
+ special_options = SPECIAL_LISTED;
+ return 0;
+ }
+ print_error(_("%s: unrecognized %s `%s'"), _("FATAL"),
+ _("list format"), param);
+ exit(EXIT_FAILURE);
+ }
+ return 0;
+}
+
+static int
+opt_listfile_handler(/*@unused@*/ char *cmd, char *param,
+ /*@unused@*/ int extra)
+{
+ if (list_filename) {
+ print_error(
+ _("warning: can output to only one list file, last specified used"));
+ yasm_xfree(list_filename);
+ }
+
+ assert(param != NULL);
+ list_filename = yasm__xstrdup(param);
+
+ return 0;
+}
+
+static int
+opt_objfile_handler(/*@unused@*/ char *cmd, char *param,
+ /*@unused@*/ int extra)
+{
+ if (obj_filename) {
+ print_error(
+ _("warning: can output to only one object file, last specified used"));
+ yasm_xfree(obj_filename);
+ }
+
+ assert(param != NULL);
+ obj_filename = yasm__xstrdup(param);
+
+ return 0;
+}
+
+static int
+opt_mapfile_handler(/*@unused@*/ char *cmd, char *param,
+ /*@unused@*/ int extra)
+{
+ if (map_filename) {
+ print_error(
+ _("warning: can output to only one map file, last specified used"));
+ yasm_xfree(map_filename);
+ }
+
+ assert(param != NULL);
+ map_filename = yasm__xstrdup(param);
+
+ return 0;
+}
+
+static int
+opt_machine_handler(/*@unused@*/ char *cmd, char *param,
+ /*@unused@*/ int extra)
+{
+ if (machine_name)
+ yasm_xfree(machine_name);
+
+ assert(param != NULL);
+ machine_name = yasm__xstrdup(param);
+
+ return 0;
+}
+
+static int
+opt_strict_handler(/*@unused@*/ char *cmd,
+ /*@unused@*/ /*@null@*/ char *param,
+ /*@unused@*/ int extra)
+{
+ force_strict = 1;
+ return 0;
+}
+
+static int
+opt_warning_handler(char *cmd, /*@unused@*/ char *param, int extra)
+{
+ /* is it disabling the warning instead of enabling? */
+ void (*action)(yasm_warn_class wclass) = yasm_warn_enable;
+
+ if (extra == 1) {
+ /* -w, disable warnings */
+ yasm_warn_disable_all();
+ return 0;
+ }
+
+ /* skip past 'W' */
+ cmd++;
+
+ /* detect no- prefix to disable the warning */
+ if (cmd[0] == 'n' && cmd[1] == 'o' && cmd[2] == '-') {
+ action = yasm_warn_disable;
+ cmd += 3; /* skip past it to get to the warning name */
+ }
+
+ if (cmd[0] == '\0')
+ /* just -W or -Wno-, so definitely not valid */
+ return 1;
+ else if (strcmp(cmd, "error") == 0)
+ warning_error = (action == yasm_warn_enable);
+ else if (strcmp(cmd, "unrecognized-char") == 0)
+ action(YASM_WARN_UNREC_CHAR);
+ else if (strcmp(cmd, "orphan-labels") == 0)
+ action(YASM_WARN_ORPHAN_LABEL);
+ else if (strcmp(cmd, "uninit-contents") == 0)
+ action(YASM_WARN_UNINIT_CONTENTS);
+ else if (strcmp(cmd, "size-override") == 0)
+ action(YASM_WARN_SIZE_OVERRIDE);
+ else
+ return 1;
+
+ return 0;
+}
+
+static int
+opt_error_file(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
+{
+ if (error_filename) {
+ print_error(
+ _("warning: can output to only one error file, last specified used"));
+ yasm_xfree(error_filename);
+ }
+
+ assert(param != NULL);
+ error_filename = yasm__xstrdup(param);
+
+ return 0;
+}
+
+static int
+opt_error_stdout(/*@unused@*/ char *cmd, /*@unused@*/ char *param,
+ /*@unused@*/ int extra)
+{
+ /* Clear any specified error filename */
+ if (error_filename) {
+ yasm_xfree(error_filename);
+ error_filename = NULL;
+ }
+ errfile = stdout;
+ return 0;
+}
+
+static int
+preproc_only_handler(/*@unused@*/ char *cmd, /*@unused@*/ char *param,
+ /*@unused@*/ int extra)
+{
+ preproc_only = 1;
+ return 0;
+}
+
+static int
+opt_include_option(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
+{
+ yasm_add_include_path(param);
+ return 0;
+}
+
+static int
+opt_preproc_option(/*@unused@*/ char *cmd, char *param, int extra)
+{
+ constcharparam *cp;
+ cp = yasm_xmalloc(sizeof(constcharparam));
+ cp->param = param;
+ cp->id = extra;
+ STAILQ_INSERT_TAIL(&preproc_options, cp, link);
+ return 0;
+}
+
+static int
+opt_ewmsg_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
+{
+ if (yasm__strcasecmp(param, "gnu") == 0 ||
+ yasm__strcasecmp(param, "gcc") == 0) {
+ ewmsg_style = EWSTYLE_GNU;
+ } else if (yasm__strcasecmp(param, "vc") == 0) {
+ ewmsg_style = EWSTYLE_VC;
+ } else
+ print_error(_("warning: unrecognized message style `%s'"), param);
+
+ return 0;
+}
+
+static int
+opt_makedep_handler(/*@unused@*/ char *cmd, /*@unused@*/ char *param,
+ /*@unused@*/ int extra)
+{
+ /* Also set preproc_only to 1, we don't want to generate code */
+ preproc_only = 1;
+ generate_make_dependencies = 1;
+
+ return 0;
+}
+
+static int
+opt_prefix_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
+{
+ if (global_prefix)
+ yasm_xfree(global_prefix);
+
+ assert(param != NULL);
+ global_prefix = yasm__xstrdup(param);
+
+ return 0;
+}
+
static void
opt_free_replace(void)
{
@@ -1207,7 +1207,7 @@ opt_free_replace(void)
replace_size = 0;
}
-static int
+static int
opt_replace_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
{
if (replace_capacity == 0) {
@@ -1226,229 +1226,229 @@ opt_replace_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
}
static int
-opt_suffix_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
-{
- if (global_suffix)
- yasm_xfree(global_suffix);
-
- assert(param != NULL);
- global_suffix = yasm__xstrdup(param);
-
- return 0;
-}
-
-#if defined(CMAKE_BUILD) && defined(BUILD_SHARED_LIBS)
-static int
-opt_plugin_handler(/*@unused@*/ char *cmd, char *param,
- /*@unused@*/ int extra)
-{
- if (!load_plugin(param))
- print_error(_("warning: could not load plugin `%s'"), param);
- return 0;
-}
-#endif
-
-static void
-apply_preproc_builtins()
-{
- char *predef;
-
- /* Define standard YASM assembly-time macro constants */
- predef = yasm_xmalloc(strlen("__YASM_OBJFMT__=")
- + strlen(objfmt_keyword) + 1);
- strcpy(predef, "__YASM_OBJFMT__=");
- strcat(predef, objfmt_keyword);
- yasm_preproc_define_builtin(cur_preproc, predef);
- yasm_xfree(predef);
-}
-
-static void
-apply_preproc_standard_macros(const yasm_stdmac *stdmacs)
-{
- int i, matched;
-
- if (!stdmacs)
- return;
-
- matched = -1;
- for (i=0; stdmacs[i].parser; i++)
- if (yasm__strcasecmp(stdmacs[i].parser,
- cur_parser_module->keyword) == 0 &&
- yasm__strcasecmp(stdmacs[i].preproc,
- cur_preproc_module->keyword) == 0)
- matched = i;
- if (matched >= 0 && stdmacs[matched].macros)
- yasm_preproc_add_standard(cur_preproc, stdmacs[matched].macros);
-}
-
-static void
-apply_preproc_saved_options()
-{
- constcharparam *cp, *cpnext;
-
- void (*funcs[3])(yasm_preproc *, const char *);
- funcs[0] = cur_preproc_module->add_include_file;
- funcs[1] = cur_preproc_module->predefine_macro;
- funcs[2] = cur_preproc_module->undefine_macro;
-
- STAILQ_FOREACH(cp, &preproc_options, link) {
- if (0 <= cp->id && cp->id < 3 && funcs[cp->id])
- funcs[cp->id](cur_preproc, cp->param);
- }
-
- cp = STAILQ_FIRST(&preproc_options);
- while (cp != NULL) {
- cpnext = STAILQ_NEXT(cp, link);
- yasm_xfree(cp);
- cp = cpnext;
- }
- STAILQ_INIT(&preproc_options);
-}
-
-/* Replace extension on a filename (or append one if none is present).
- * If output filename would be identical to input (same extension out as in),
- * returns (copy of) def.
- * A NULL ext means the trailing '.' should NOT be included, whereas a "" ext
- * means the trailing '.' should be included.
- */
-static char *
-replace_extension(const char *orig, /*@null@*/ const char *ext,
- const char *def)
-{
- char *out, *outext;
- size_t deflen, outlen;
-
- /* allocate enough space for full existing name + extension */
- outlen = strlen(orig) + 2;
- if (ext)
- outlen += strlen(ext) + 1;
- deflen = strlen(def) + 1;
- if (outlen < deflen)
- outlen = deflen;
- out = yasm_xmalloc(outlen);
-
- strcpy(out, orig);
- outext = strrchr(out, '.');
- if (outext) {
- /* Existing extension: make sure it's not the same as the replacement
- * (as we don't want to overwrite the source file).
- */
- outext++; /* advance past '.' */
- if (ext && strcmp(outext, ext) == 0) {
- outext = NULL; /* indicate default should be used */
- print_error(
- _("file name already ends in `.%s': output will be in `%s'"),
- ext, def);
- }
- } else {
- /* No extension: make sure the output extension is not empty
- * (again, we don't want to overwrite the source file).
- */
- if (!ext)
- print_error(
- _("file name already has no extension: output will be in `%s'"),
- def);
- else {
- outext = strrchr(out, '\0'); /* point to end of the string */
- *outext++ = '.'; /* append '.' */
- }
- }
-
- /* replace extension or use default name */
- if (outext) {
- if (!ext) {
- /* Back up and replace '.' with string terminator */
- outext--;
- *outext = '\0';
- } else
- strcpy(outext, ext);
- } else
- strcpy(out, def);
-
- return out;
-}
-
-void
-print_list_keyword_desc(const char *name, const char *keyword)
-{
- printf("%4s%-12s%s\n", "", keyword, name);
-}
-
-static void
-print_error(const char *fmt, ...)
-{
- va_list va;
- fprintf(errfile, "yasm: ");
- va_start(va, fmt);
- vfprintf(errfile, fmt, va);
- va_end(va);
- fputc('\n', errfile);
-}
-
-static /*@exits@*/ void
-handle_yasm_int_error(const char *file, unsigned int line, const char *message)
-{
- fprintf(stderr, _("INTERNAL ERROR at %s, line %u: %s\n"), file, line,
- gettext(message));
-#ifdef HAVE_ABORT
- abort();
-#else
- exit(EXIT_FAILURE);
-#endif
-}
-
-static /*@exits@*/ void
-handle_yasm_fatal(const char *fmt, va_list va)
-{
- fprintf(errfile, "yasm: %s: ", _("FATAL"));
- vfprintf(errfile, gettext(fmt), va);
- fputc('\n', errfile);
- exit(EXIT_FAILURE);
-}
-
-static const char *
-handle_yasm_gettext(const char *msgid)
-{
- return gettext(msgid);
-}
-
-static const char *fmt[2] = {
- "%s:%lu: %s%s\n", /* GNU */
- "%s(%lu) : %s%s\n" /* VC */
-};
-
-static const char *fmt_noline[2] = {
- "%s: %s%s\n", /* GNU */
- "%s : %s%s\n" /* VC */
-};
-
-static void
-print_yasm_error(const char *filename, unsigned long line, const char *msg,
- const char *xref_fn, unsigned long xref_line,
- const char *xref_msg)
-{
- if (line)
- fprintf(errfile, fmt[ewmsg_style], filename, line, _("error: "), msg);
- else
- fprintf(errfile, fmt_noline[ewmsg_style], filename, _("error: "), msg);
-
- if (xref_fn && xref_msg) {
- if (xref_line)
- fprintf(errfile, fmt[ewmsg_style], xref_fn, xref_line, _("error: "),
- xref_msg);
- else
- fprintf(errfile, fmt_noline[ewmsg_style], xref_fn, _("error: "),
- xref_msg);
- }
-}
-
-static void
-print_yasm_warning(const char *filename, unsigned long line, const char *msg)
-{
- if (line)
- fprintf(errfile, fmt[ewmsg_style], filename, line, _("warning: "),
- msg);
- else
- fprintf(errfile, fmt_noline[ewmsg_style], filename, _("warning: "),
- msg);
-}
+opt_suffix_handler(/*@unused@*/ char *cmd, char *param, /*@unused@*/ int extra)
+{
+ if (global_suffix)
+ yasm_xfree(global_suffix);
+
+ assert(param != NULL);
+ global_suffix = yasm__xstrdup(param);
+
+ return 0;
+}
+
+#if defined(CMAKE_BUILD) && defined(BUILD_SHARED_LIBS)
+static int
+opt_plugin_handler(/*@unused@*/ char *cmd, char *param,
+ /*@unused@*/ int extra)
+{
+ if (!load_plugin(param))
+ print_error(_("warning: could not load plugin `%s'"), param);
+ return 0;
+}
+#endif
+
+static void
+apply_preproc_builtins()
+{
+ char *predef;
+
+ /* Define standard YASM assembly-time macro constants */
+ predef = yasm_xmalloc(strlen("__YASM_OBJFMT__=")
+ + strlen(objfmt_keyword) + 1);
+ strcpy(predef, "__YASM_OBJFMT__=");
+ strcat(predef, objfmt_keyword);
+ yasm_preproc_define_builtin(cur_preproc, predef);
+ yasm_xfree(predef);
+}
+
+static void
+apply_preproc_standard_macros(const yasm_stdmac *stdmacs)
+{
+ int i, matched;
+
+ if (!stdmacs)
+ return;
+
+ matched = -1;
+ for (i=0; stdmacs[i].parser; i++)
+ if (yasm__strcasecmp(stdmacs[i].parser,
+ cur_parser_module->keyword) == 0 &&
+ yasm__strcasecmp(stdmacs[i].preproc,
+ cur_preproc_module->keyword) == 0)
+ matched = i;
+ if (matched >= 0 && stdmacs[matched].macros)
+ yasm_preproc_add_standard(cur_preproc, stdmacs[matched].macros);
+}
+
+static void
+apply_preproc_saved_options()
+{
+ constcharparam *cp, *cpnext;
+
+ void (*funcs[3])(yasm_preproc *, const char *);
+ funcs[0] = cur_preproc_module->add_include_file;
+ funcs[1] = cur_preproc_module->predefine_macro;
+ funcs[2] = cur_preproc_module->undefine_macro;
+
+ STAILQ_FOREACH(cp, &preproc_options, link) {
+ if (0 <= cp->id && cp->id < 3 && funcs[cp->id])
+ funcs[cp->id](cur_preproc, cp->param);
+ }
+
+ cp = STAILQ_FIRST(&preproc_options);
+ while (cp != NULL) {
+ cpnext = STAILQ_NEXT(cp, link);
+ yasm_xfree(cp);
+ cp = cpnext;
+ }
+ STAILQ_INIT(&preproc_options);
+}
+
+/* Replace extension on a filename (or append one if none is present).
+ * If output filename would be identical to input (same extension out as in),
+ * returns (copy of) def.
+ * A NULL ext means the trailing '.' should NOT be included, whereas a "" ext
+ * means the trailing '.' should be included.
+ */
+static char *
+replace_extension(const char *orig, /*@null@*/ const char *ext,
+ const char *def)
+{
+ char *out, *outext;
+ size_t deflen, outlen;
+
+ /* allocate enough space for full existing name + extension */
+ outlen = strlen(orig) + 2;
+ if (ext)
+ outlen += strlen(ext) + 1;
+ deflen = strlen(def) + 1;
+ if (outlen < deflen)
+ outlen = deflen;
+ out = yasm_xmalloc(outlen);
+
+ strcpy(out, orig);
+ outext = strrchr(out, '.');
+ if (outext) {
+ /* Existing extension: make sure it's not the same as the replacement
+ * (as we don't want to overwrite the source file).
+ */
+ outext++; /* advance past '.' */
+ if (ext && strcmp(outext, ext) == 0) {
+ outext = NULL; /* indicate default should be used */
+ print_error(
+ _("file name already ends in `.%s': output will be in `%s'"),
+ ext, def);
+ }
+ } else {
+ /* No extension: make sure the output extension is not empty
+ * (again, we don't want to overwrite the source file).
+ */
+ if (!ext)
+ print_error(
+ _("file name already has no extension: output will be in `%s'"),
+ def);
+ else {
+ outext = strrchr(out, '\0'); /* point to end of the string */
+ *outext++ = '.'; /* append '.' */
+ }
+ }
+
+ /* replace extension or use default name */
+ if (outext) {
+ if (!ext) {
+ /* Back up and replace '.' with string terminator */
+ outext--;
+ *outext = '\0';
+ } else
+ strcpy(outext, ext);
+ } else
+ strcpy(out, def);
+
+ return out;
+}
+
+void
+print_list_keyword_desc(const char *name, const char *keyword)
+{
+ printf("%4s%-12s%s\n", "", keyword, name);
+}
+
+static void
+print_error(const char *fmt, ...)
+{
+ va_list va;
+ fprintf(errfile, "yasm: ");
+ va_start(va, fmt);
+ vfprintf(errfile, fmt, va);
+ va_end(va);
+ fputc('\n', errfile);
+}
+
+static /*@exits@*/ void
+handle_yasm_int_error(const char *file, unsigned int line, const char *message)
+{
+ fprintf(stderr, _("INTERNAL ERROR at %s, line %u: %s\n"), file, line,
+ gettext(message));
+#ifdef HAVE_ABORT
+ abort();
+#else
+ exit(EXIT_FAILURE);
+#endif
+}
+
+static /*@exits@*/ void
+handle_yasm_fatal(const char *fmt, va_list va)
+{
+ fprintf(errfile, "yasm: %s: ", _("FATAL"));
+ vfprintf(errfile, gettext(fmt), va);
+ fputc('\n', errfile);
+ exit(EXIT_FAILURE);
+}
+
+static const char *
+handle_yasm_gettext(const char *msgid)
+{
+ return gettext(msgid);
+}
+
+static const char *fmt[2] = {
+ "%s:%lu: %s%s\n", /* GNU */
+ "%s(%lu) : %s%s\n" /* VC */
+};
+
+static const char *fmt_noline[2] = {
+ "%s: %s%s\n", /* GNU */
+ "%s : %s%s\n" /* VC */
+};
+
+static void
+print_yasm_error(const char *filename, unsigned long line, const char *msg,
+ const char *xref_fn, unsigned long xref_line,
+ const char *xref_msg)
+{
+ if (line)
+ fprintf(errfile, fmt[ewmsg_style], filename, line, _("error: "), msg);
+ else
+ fprintf(errfile, fmt_noline[ewmsg_style], filename, _("error: "), msg);
+
+ if (xref_fn && xref_msg) {
+ if (xref_line)
+ fprintf(errfile, fmt[ewmsg_style], xref_fn, xref_line, _("error: "),
+ xref_msg);
+ else
+ fprintf(errfile, fmt_noline[ewmsg_style], xref_fn, _("error: "),
+ xref_msg);
+ }
+}
+
+static void
+print_yasm_warning(const char *filename, unsigned long line, const char *msg)
+{
+ if (line)
+ fprintf(errfile, fmt[ewmsg_style], filename, line, _("warning: "),
+ msg);
+ else
+ fprintf(errfile, fmt_noline[ewmsg_style], filename, _("warning: "),
+ msg);
+}
diff --git a/contrib/tools/yasm/libyasm-stdint.h b/contrib/tools/yasm/libyasm-stdint.h
index 2ad5dcfed4..a2a08a9417 100644
--- a/contrib/tools/yasm/libyasm-stdint.h
+++ b/contrib/tools/yasm/libyasm-stdint.h
@@ -1,46 +1,46 @@
-#ifndef YASM_STDINT_H
-#define YASM_STDINT_H
-
-#define HAVE_STDINT_H
-
-#ifdef HAVE_STDINT_H
-#include <stdint.h>
-#elif defined(_MSC_VER)
-
-#ifndef _UINTPTR_T_DEFINED
-#ifdef _WIN64
-#include <vadefs.h>
-#else
-typedef unsigned long uintptr_t;
-#endif
-#define _UINTPTR_T_DEFINED
-#endif
-
-#else
-typedef unsigned long uintptr_t;
-#endif
-
-#ifndef BUILD_SHARED_LIBS
-/* #undef BUILD_SHARED_LIBS */
-#define BUILD_SHARED_LIBS_UNDEF
-#endif
-
-#ifndef YASM_LIB_DECL
-# if defined(BUILD_SHARED_LIBS) && defined(_MSC_VER)
-# ifdef YASM_LIB_SOURCE
-# define YASM_LIB_DECL __declspec(dllexport)
-# else
-# define YASM_LIB_DECL __declspec(dllimport)
-# endif
-# else
-# define YASM_LIB_DECL
-# endif
-#endif
-
-#undef HAVE_STDINT_H
-#ifdef BUILD_SHARED_LIBS_UNDEF
-#undef BUILD_SHARED_LIBS
-#undef BUILD_SHARED_LIBS_UNDEF
-#endif
-
-#endif
+#ifndef YASM_STDINT_H
+#define YASM_STDINT_H
+
+#define HAVE_STDINT_H
+
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#elif defined(_MSC_VER)
+
+#ifndef _UINTPTR_T_DEFINED
+#ifdef _WIN64
+#include <vadefs.h>
+#else
+typedef unsigned long uintptr_t;
+#endif
+#define _UINTPTR_T_DEFINED
+#endif
+
+#else
+typedef unsigned long uintptr_t;
+#endif
+
+#ifndef BUILD_SHARED_LIBS
+/* #undef BUILD_SHARED_LIBS */
+#define BUILD_SHARED_LIBS_UNDEF
+#endif
+
+#ifndef YASM_LIB_DECL
+# if defined(BUILD_SHARED_LIBS) && defined(_MSC_VER)
+# ifdef YASM_LIB_SOURCE
+# define YASM_LIB_DECL __declspec(dllexport)
+# else
+# define YASM_LIB_DECL __declspec(dllimport)
+# endif
+# else
+# define YASM_LIB_DECL
+# endif
+#endif
+
+#undef HAVE_STDINT_H
+#ifdef BUILD_SHARED_LIBS_UNDEF
+#undef BUILD_SHARED_LIBS
+#undef BUILD_SHARED_LIBS_UNDEF
+#endif
+
+#endif
diff --git a/contrib/tools/yasm/libyasm.h b/contrib/tools/yasm/libyasm.h
index 5b47026d63..f52c133b39 100644
--- a/contrib/tools/yasm/libyasm.h
+++ b/contrib/tools/yasm/libyasm.h
@@ -1,75 +1,75 @@
-/**
- * \file libyasm.h
- * \brief YASM library primary header file.
- *
- * \license
- * Copyright (C) 2003-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- * \endlicense
- */
-#ifndef YASM_LIB_H
-#define YASM_LIB_H
-
-#ifdef YASM_PYXELATOR
-typedef struct __FILE FILE;
-typedef struct __va_list va_list;
-typedef unsigned long size_t;
-typedef unsigned long uintptr_t;
-#else
-#include <stdio.h>
-#include <stdarg.h>
-#include <libyasm-stdint.h>
-#endif
-
-#include <libyasm/compat-queue.h>
-
-#include <libyasm/coretype.h>
-#include <libyasm/valparam.h>
-
-#include <libyasm/linemap.h>
-
-#include <libyasm/errwarn.h>
-#include <libyasm/intnum.h>
-#include <libyasm/floatnum.h>
-#include <libyasm/expr.h>
-#include <libyasm/value.h>
-#include <libyasm/symrec.h>
-
-#include <libyasm/bytecode.h>
-#include <libyasm/section.h>
-#include <libyasm/insn.h>
-
-#include <libyasm/arch.h>
-#include <libyasm/dbgfmt.h>
-#include <libyasm/objfmt.h>
-#include <libyasm/listfmt.h>
-#include <libyasm/parser.h>
-#include <libyasm/preproc.h>
-
-#include <libyasm/file.h>
-#include <libyasm/module.h>
-
-#include <libyasm/hamt.h>
-#include <libyasm/md5.h>
-
-#endif
+/**
+ * \file libyasm.h
+ * \brief YASM library primary header file.
+ *
+ * \license
+ * Copyright (C) 2003-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * - Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ * \endlicense
+ */
+#ifndef YASM_LIB_H
+#define YASM_LIB_H
+
+#ifdef YASM_PYXELATOR
+typedef struct __FILE FILE;
+typedef struct __va_list va_list;
+typedef unsigned long size_t;
+typedef unsigned long uintptr_t;
+#else
+#include <stdio.h>
+#include <stdarg.h>
+#include <libyasm-stdint.h>
+#endif
+
+#include <libyasm/compat-queue.h>
+
+#include <libyasm/coretype.h>
+#include <libyasm/valparam.h>
+
+#include <libyasm/linemap.h>
+
+#include <libyasm/errwarn.h>
+#include <libyasm/intnum.h>
+#include <libyasm/floatnum.h>
+#include <libyasm/expr.h>
+#include <libyasm/value.h>
+#include <libyasm/symrec.h>
+
+#include <libyasm/bytecode.h>
+#include <libyasm/section.h>
+#include <libyasm/insn.h>
+
+#include <libyasm/arch.h>
+#include <libyasm/dbgfmt.h>
+#include <libyasm/objfmt.h>
+#include <libyasm/listfmt.h>
+#include <libyasm/parser.h>
+#include <libyasm/preproc.h>
+
+#include <libyasm/file.h>
+#include <libyasm/module.h>
+
+#include <libyasm/hamt.h>
+#include <libyasm/md5.h>
+
+#endif
diff --git a/contrib/tools/yasm/libyasm/arch.h b/contrib/tools/yasm/libyasm/arch.h
index 1e7ee0c8ba..3da9f9fca3 100644
--- a/contrib/tools/yasm/libyasm/arch.h
+++ b/contrib/tools/yasm/libyasm/arch.h
@@ -1,495 +1,495 @@
-/**
- * \file libyasm/arch.h
- * \brief YASM architecture interface.
- *
- * \license
- * Copyright (C) 2002-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- * \endlicense
- */
-#ifndef YASM_ARCH_H
-#define YASM_ARCH_H
-
-/** Errors that may be returned by yasm_arch_module::create(). */
-typedef enum yasm_arch_create_error {
- YASM_ARCH_CREATE_OK = 0, /**< No error. */
- YASM_ARCH_CREATE_BAD_MACHINE, /**< Unrecognized machine name. */
- YASM_ARCH_CREATE_BAD_PARSER /**< Unrecognized parser name. */
-} yasm_arch_create_error;
-
-/** Return values for yasm_arch_module::parse_check_insnprefix(). */
-typedef enum yasm_arch_insnprefix {
- YASM_ARCH_NOTINSNPREFIX = 0, /**< Unrecognized */
- YASM_ARCH_INSN, /**< An instruction */
- YASM_ARCH_PREFIX /**< An instruction prefix */
-} yasm_arch_insnprefix;
-
-/** Types of registers / target modifiers that may be returned by
- * yasm_arch_module::parse_check_regtmod().
- */
-typedef enum yasm_arch_regtmod {
- YASM_ARCH_NOTREGTMOD = 0, /**< Unrecognized */
- YASM_ARCH_REG, /**< A "normal" register */
- YASM_ARCH_REGGROUP, /**< A group of indexable registers */
- YASM_ARCH_SEGREG, /**< A segment register */
- YASM_ARCH_TARGETMOD /**< A target modifier (for jumps) */
-} yasm_arch_regtmod;
-
-#ifndef YASM_DOXYGEN
-/** Base #yasm_arch structure. Must be present as the first element in any
- * #yasm_arch implementation.
- */
-typedef struct yasm_arch_base {
- /** #yasm_arch_module implementation for this architecture. */
- const struct yasm_arch_module *module;
-} yasm_arch_base;
-#endif
-
-/** YASM machine subtype. A number of different machine types may be
- * associated with a single architecture. These may be specific CPU's, but
- * the ABI used to interface with the architecture should be the primary
- * differentiator between machines. Some object formats (ELF) use the machine
- * to determine parameters within the generated output.
- */
-typedef struct yasm_arch_machine {
- /** One-line description of the machine. */
- const char *name;
-
- /** Keyword used to select machine. */
- const char *keyword;
-} yasm_arch_machine;
-
-/** YASM architecture module interface.
- * \note All "data" in parser-related functions (yasm_arch_parse_*) needs to
- * start the parse initialized to 0 to make it okay for a parser-related
- * function to use/check previously stored data to see if it's been
- * called before on the same piece of data.
- */
-typedef struct yasm_arch_module {
- /** One-line description of the architecture.
- * Call yasm_arch_name() to get the name of a particular #yasm_arch.
- */
- const char *name;
-
- /** Keyword used to select architecture.
- * Call yasm_arch_keyword() to get the keyword of a particular #yasm_arch.
- */
- const char *keyword;
-
- /** NULL-terminated list of directives. NULL if none. */
- /*@null@*/ const yasm_directive *directives;
-
- /** Create architecture.
- * Module-level implementation of yasm_arch_create().
- * Call yasm_arch_create() instead of calling this function.
- */
- /*@only@*/ yasm_arch * (*create) (const char *machine, const char *parser,
- /*@out@*/ yasm_arch_create_error *error);
-
- /** Module-level implementation of yasm_arch_destroy().
- * Call yasm_arch_destroy() instead of calling this function.
- */
- void (*destroy) (/*@only@*/ yasm_arch *arch);
-
- /** Module-level implementation of yasm_arch_get_machine().
- * Call yasm_arch_get_machine() instead of calling this function.
- */
- const char * (*get_machine) (const yasm_arch *arch);
-
- /** Module-level implementation of yasm_arch_get_address_size().
- * Call yasm_arch_get_address_size() instead of calling this function.
- */
- unsigned int (*get_address_size) (const yasm_arch *arch);
-
- /** Module-level implementation of yasm_arch_set_var().
- * Call yasm_arch_set_var() instead of calling this function.
- */
- int (*set_var) (yasm_arch *arch, const char *var, unsigned long val);
-
- /** Module-level implementation of yasm_arch_parse_check_insnprefix().
- * Call yasm_arch_parse_check_insnprefix() instead of calling this function.
- */
- yasm_arch_insnprefix (*parse_check_insnprefix)
- (yasm_arch *arch, const char *id, size_t id_len, unsigned long line,
- /*@out@*/ /*@only@*/ yasm_bytecode **bc, /*@out@*/ uintptr_t *prefix);
-
- /** Module-level implementation of yasm_arch_parse_check_regtmod().
- * Call yasm_arch_parse_check_regtmod() instead of calling this function.
- */
- yasm_arch_regtmod (*parse_check_regtmod)
- (yasm_arch *arch, const char *id, size_t id_len,
- /*@out@*/ uintptr_t *data);
-
- /** Module-level implementation of yasm_arch_get_fill().
- * Call yasm_arch_get_fill() instead of calling this function.
- */
- const unsigned char ** (*get_fill) (const yasm_arch *arch);
-
- /** Module-level implementation of yasm_arch_floatnum_tobytes().
- * Call yasm_arch_floatnum_tobytes() instead of calling this function.
- */
- int (*floatnum_tobytes) (yasm_arch *arch, const yasm_floatnum *flt,
- unsigned char *buf, size_t destsize,
- size_t valsize, size_t shift, int warn);
-
- /** Module-level implementation of yasm_arch_intnum_tobytes().
- * Call yasm_arch_intnum_tobytes() instead of calling this function.
- */
- int (*intnum_tobytes) (yasm_arch *arch, const yasm_intnum *intn,
- unsigned char *buf, size_t destsize, size_t valsize,
- int shift, const yasm_bytecode *bc,
- int warn);
-
- /** Module-level implementation of yasm_arch_get_reg_size().
- * Call yasm_arch_get_reg_size() instead of calling this function.
- */
- unsigned int (*get_reg_size) (yasm_arch *arch, uintptr_t reg);
-
- /** Module-level implementation of yasm_arch_reggroup_get_reg().
- * Call yasm_arch_reggroup_get_reg() instead of calling this function.
- */
- uintptr_t (*reggroup_get_reg) (yasm_arch *arch, uintptr_t reggroup,
- unsigned long regindex);
-
- /** Module-level implementation of yasm_arch_reg_print().
- * Call yasm_arch_reg_print() instead of calling this function.
- */
- void (*reg_print) (yasm_arch *arch, uintptr_t reg, FILE *f);
-
- /** Module-level implementation of yasm_arch_segreg_print().
- * Call yasm_arch_segreg_print() instead of calling this function.
- */
- void (*segreg_print) (yasm_arch *arch, uintptr_t segreg, FILE *f);
-
- /** Module-level implementation of yasm_arch_ea_create().
- * Call yasm_arch_ea_create() instead of calling this function.
- */
- yasm_effaddr * (*ea_create) (yasm_arch *arch, /*@keep@*/ yasm_expr *e);
-
- /** Module-level implementation of yasm_arch_ea_destroy().
- * Call yasm_arch_ea_destroy() instead of calling this function.
- */
- void (*ea_destroy) (/*@only@*/ yasm_effaddr *ea);
-
- /** Module-level implementation of yasm_arch_ea_print().
- * Call yasm_arch_ea_print() instead of calling this function.
- */
- void (*ea_print) (const yasm_effaddr *ea, FILE *f, int indent_level);
-
- /** Module-level implementation of yasm_arch_create_empty_insn().
- * Call yasm_arch_create_empty_insn() instead of calling this function.
- */
- /*@only@*/ yasm_bytecode * (*create_empty_insn) (yasm_arch *arch,
- unsigned long line);
-
- /** NULL-terminated list of machines for this architecture.
- * Call yasm_arch_get_machine() to get the active machine of a particular
- * #yasm_arch.
- */
- const yasm_arch_machine *machines;
-
- /** Default machine keyword.
- * Call yasm_arch_get_machine() to get the active machine of a particular
- * #yasm_arch.
- */
- const char *default_machine_keyword;
-
- /** Canonical "word" size in bits.
- * Call yasm_arch_wordsize() to get the word size of a particular
- * #yasm_arch.
- */
- unsigned int wordsize;
-
- /** Worst case minimum instruction length in bytes.
- * Call yasm_arch_min_insn_len() to get the minimum instruction length of
- * a particular #yasm_arch.
- */
- unsigned int min_insn_len;
-} yasm_arch_module;
-
-/** Get the one-line description of an architecture.
- * \param arch architecture
- * \return One-line description of architecture.
- */
-const char *yasm_arch_name(const yasm_arch *arch);
-
-/** Get the keyword used to select an architecture.
- * \param arch architecture
- * \return Architecture keyword.
- */
-const char *yasm_arch_keyword(const yasm_arch *arch);
-
-/** Get the word size of an architecture.
- * \param arch architecture
- * \return Word size (in bits).
- */
-unsigned int yasm_arch_wordsize(const yasm_arch *arch);
-
-/** Get the minimum instruction length of an architecture.
- * \param arch architecture
- * \return Minimum instruction length (in bytes).
- */
-unsigned int yasm_arch_min_insn_len(const yasm_arch *arch);
-
-/** Create architecture.
- * \param module architecture module
- * \param machine keyword of machine in use (must be one listed in
- * #yasm_arch_module.machines)
- * \param parser keyword of parser in use
- * \param error error return value
- * \return NULL on error (error returned in error parameter), otherwise new
- * architecture.
- */
-/*@only@*/ yasm_arch *yasm_arch_create(const yasm_arch_module *module,
- const char *machine, const char *parser,
- /*@out@*/ yasm_arch_create_error *error);
-
-/** Clean up, free any architecture-allocated memory.
- * \param arch architecture
- */
-void yasm_arch_destroy(/*@only@*/ yasm_arch *arch);
-
-/** Get architecture's active machine name.
- * \param arch architecture
- * \return Active machine name.
- */
-const char *yasm_arch_get_machine(const yasm_arch *arch);
-
-/** Get architecture's active address size, in bits.
- * \param arch architecture
- * \return Active address size (in bits).
- */
-unsigned int yasm_arch_get_address_size(const yasm_arch *arch);
-
-/** Set any arch-specific variables. For example, "mode_bits" in x86.
- * \param arch architecture
- * \param var variable name
- * \param val value to set
- * \return Zero on success, non-zero on failure (variable does not exist).
- */
-int yasm_arch_set_var(yasm_arch *arch, const char *var, unsigned long val);
-
-/** Check an generic identifier to see if it matches architecture specific
- * names for instructions or instruction prefixes. Unrecognized identifiers
- * should return #YASM_ARCH_NOTINSNPREFIX so they can be treated as normal
- * symbols. Any additional data beyond just the type (almost always necessary)
- * should be returned into the space provided by the data parameter.
- * \param arch architecture
- * \param id identifier as in the input file
- * \param id_len length of id string
- * \param line virtual line
- * \param bc for instructions, yasm_insn-based bytecode is returned
- * (and NULL otherwise)
- * \param prefix for prefixes, yasm_arch-specific value is returned
- * (and 0 otherwise)
- * \return Identifier type (#YASM_ARCH_NOTINSNPREFIX if unrecognized)
- */
-yasm_arch_insnprefix yasm_arch_parse_check_insnprefix
- (yasm_arch *arch, const char *id, size_t id_len, unsigned long line,
- /*@out@*/ /*@only@*/ yasm_bytecode **bc, /*@out@*/ uintptr_t *prefix);
-
-/** Check an generic identifier to see if it matches architecture specific
- * names for registers or target modifiers. Unrecognized identifiers should
- * return #YASM_ARCH_NOTREGTMOD. Any additional data beyond just the type
- * (almost always necessary) should be returned into the space provided by the
- * data parameter.
- * \param arch architecture
- * \param id identifier as in the input file
- * \param id_len length of id string
- * \param data extra identification information (yasm_arch-specific)
- * [output]
- * \return Identifier type (#YASM_ARCH_NOTREGTMOD if unrecognized)
- */
-yasm_arch_regtmod yasm_arch_parse_check_regtmod
- (yasm_arch *arch, const char *id, size_t id_len,
- /*@out@*/ uintptr_t *data);
-
-/** Get NOP fill patterns for 1-15 bytes of fill.
- * \param arch architecture
- * \return 16-entry array of arrays; [0] is unused, [1] - [15] point to arrays
- * of 1-15 bytes (respectively) in length.
- */
-const unsigned char **yasm_arch_get_fill(const yasm_arch *arch);
-
-/** Output #yasm_floatnum to buffer. Puts the value into the least
- * significant bits of the destination, or may be shifted into more
- * significant bits by the shift parameter. The destination bits are
- * cleared before being set.
- * Architecture-specific because of endianness.
- * \param arch architecture
- * \param flt floating point value
- * \param buf buffer to write into
- * \param destsize destination size (in bytes)
- * \param valsize size (in bits)
- * \param shift left shift (in bits)
- * \param warn enables standard overflow/underflow warnings
- * \return Nonzero on error.
- */
-int yasm_arch_floatnum_tobytes(yasm_arch *arch, const yasm_floatnum *flt,
- unsigned char *buf, size_t destsize,
- size_t valsize, size_t shift, int warn);
-
-/** Output #yasm_intnum to buffer. Puts the value into the least
- * significant bits of the destination, or may be shifted into more
- * significant bits by the shift parameter. The destination bits are
- * cleared before being set.
- * \param arch architecture
- * \param intn integer value
- * \param buf buffer to write into
- * \param destsize destination size (in bytes)
- * \param valsize size (in bits)
- * \param shift left shift (in bits); may be negative to specify right
- * shift (standard warnings include truncation to boundary)
- * \param bc bytecode being output ("parent" of value)
- * \param warn enables standard warnings (value doesn't fit into
- * valsize bits)
- * \return Nonzero on error.
- */
-int yasm_arch_intnum_tobytes(yasm_arch *arch, const yasm_intnum *intn,
- unsigned char *buf, size_t destsize,
- size_t valsize, int shift,
- const yasm_bytecode *bc, int warn);
-
-/** Get the equivalent size of a register in bits.
- * \param arch architecture
- * \param reg register
- * \return 0 if there is no suitable equivalent size, otherwise the size.
- */
-unsigned int yasm_arch_get_reg_size(yasm_arch *arch, uintptr_t reg);
-
-/** Get a specific register of a register group, based on the register
- * group and the index within the group.
- * \param arch architecture
- * \param reggroup register group
- * \param regindex register index
- * \return 0 if regindex is not valid for that register group, otherwise the
- * specific register value.
- */
-uintptr_t yasm_arch_reggroup_get_reg(yasm_arch *arch, uintptr_t reggroup,
- unsigned long regindex);
-
-/** Print a register. For debugging purposes.
- * \param arch architecture
- * \param reg register
- * \param f file
- */
-void yasm_arch_reg_print(yasm_arch *arch, uintptr_t reg, FILE *f);
-
-/** Print a segment register. For debugging purposes.
- * \param arch architecture
- * \param segreg segment register
- * \param f file
- */
-void yasm_arch_segreg_print(yasm_arch *arch, uintptr_t segreg, FILE *f);
-
-/** Create an effective address from an expression.
- * \param arch architecture
- * \param e expression (kept, do not delete)
- * \return Newly allocated effective address.
- */
-yasm_effaddr *yasm_arch_ea_create(yasm_arch *arch, /*@keep@*/ yasm_expr *e);
-
-/** Delete (free allocated memory for) an effective address.
- * \param arch architecture
- * \param ea effective address (only pointer to it).
- */
-void yasm_arch_ea_destroy(yasm_arch *arch, /*@only@*/ yasm_effaddr *ea);
-
-/** Print an effective address. For debugging purposes.
- * \param arch architecture
- * \param ea effective address
- * \param f file
- * \param indent_level indentation level
- */
-void yasm_arch_ea_print(const yasm_arch *arch, const yasm_effaddr *ea,
- FILE *f, int indent_level);
-
-/** Create a bytecode that represents a single empty (0 length) instruction.
- * This is used for handling solitary prefixes.
- * \param arch architecture
- * \param line virtual line (from yasm_linemap)
- * \return Newly allocated bytecode.
- */
-/*@only@*/ yasm_bytecode *yasm_arch_create_empty_insn(yasm_arch *arch,
- unsigned long line);
-
-#ifndef YASM_DOXYGEN
-
-/* Inline macro implementations for arch functions */
-
-#define yasm_arch_name(arch) \
- (((yasm_arch_base *)arch)->module->name)
-#define yasm_arch_keyword(arch) \
- (((yasm_arch_base *)arch)->module->keyword)
-#define yasm_arch_wordsize(arch) \
- (((yasm_arch_base *)arch)->module->wordsize)
-#define yasm_arch_min_insn_len(arch) \
- (((yasm_arch_base *)arch)->module->min_insn_len)
-
-#define yasm_arch_create(module, machine, parser, error) \
- module->create(machine, parser, error)
-
-#define yasm_arch_destroy(arch) \
- ((yasm_arch_base *)arch)->module->destroy(arch)
-#define yasm_arch_get_machine(arch) \
- ((yasm_arch_base *)arch)->module->get_machine(arch)
-#define yasm_arch_get_address_size(arch) \
- ((yasm_arch_base *)arch)->module->get_address_size(arch)
-#define yasm_arch_set_var(arch, var, val) \
- ((yasm_arch_base *)arch)->module->set_var(arch, var, val)
-#define yasm_arch_parse_check_insnprefix(arch, id, id_len, line, bc, prefix) \
- ((yasm_arch_base *)arch)->module->parse_check_insnprefix \
- (arch, id, id_len, line, bc, prefix)
-#define yasm_arch_parse_check_regtmod(arch, id, id_len, data) \
- ((yasm_arch_base *)arch)->module->parse_check_regtmod \
- (arch, id, id_len, data)
-#define yasm_arch_get_fill(arch) \
- ((yasm_arch_base *)arch)->module->get_fill(arch)
-#define yasm_arch_floatnum_tobytes(arch, flt, buf, destsize, valsize, shift, \
- warn) \
- ((yasm_arch_base *)arch)->module->floatnum_tobytes \
- (arch, flt, buf, destsize, valsize, shift, warn)
-#define yasm_arch_intnum_tobytes(arch, intn, buf, destsize, valsize, shift, \
- bc, warn) \
- ((yasm_arch_base *)arch)->module->intnum_tobytes \
- (arch, intn, buf, destsize, valsize, shift, bc, warn)
-#define yasm_arch_get_reg_size(arch, reg) \
- ((yasm_arch_base *)arch)->module->get_reg_size(arch, reg)
-#define yasm_arch_reggroup_get_reg(arch, regg, regi) \
- ((yasm_arch_base *)arch)->module->reggroup_get_reg(arch, regg, regi)
-#define yasm_arch_reg_print(arch, reg, f) \
- ((yasm_arch_base *)arch)->module->reg_print(arch, reg, f)
-#define yasm_arch_segreg_print(arch, segreg, f) \
- ((yasm_arch_base *)arch)->module->segreg_print(arch, segreg, f)
-#define yasm_arch_ea_create(arch, e) \
- ((yasm_arch_base *)arch)->module->ea_create(arch, e)
-#define yasm_arch_ea_destroy(arch, ea) \
- ((yasm_arch_base *)arch)->module->ea_destroy(ea)
-#define yasm_arch_ea_print(arch, ea, f, i) \
- ((yasm_arch_base *)arch)->module->ea_print(ea, f, i)
-#define yasm_arch_create_empty_insn(arch, line) \
- ((yasm_arch_base *)arch)->module->create_empty_insn(arch, line)
-
-#endif
-
-#endif
+/**
+ * \file libyasm/arch.h
+ * \brief YASM architecture interface.
+ *
+ * \license
+ * Copyright (C) 2002-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * - Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ * \endlicense
+ */
+#ifndef YASM_ARCH_H
+#define YASM_ARCH_H
+
+/** Errors that may be returned by yasm_arch_module::create(). */
+typedef enum yasm_arch_create_error {
+ YASM_ARCH_CREATE_OK = 0, /**< No error. */
+ YASM_ARCH_CREATE_BAD_MACHINE, /**< Unrecognized machine name. */
+ YASM_ARCH_CREATE_BAD_PARSER /**< Unrecognized parser name. */
+} yasm_arch_create_error;
+
+/** Return values for yasm_arch_module::parse_check_insnprefix(). */
+typedef enum yasm_arch_insnprefix {
+ YASM_ARCH_NOTINSNPREFIX = 0, /**< Unrecognized */
+ YASM_ARCH_INSN, /**< An instruction */
+ YASM_ARCH_PREFIX /**< An instruction prefix */
+} yasm_arch_insnprefix;
+
+/** Types of registers / target modifiers that may be returned by
+ * yasm_arch_module::parse_check_regtmod().
+ */
+typedef enum yasm_arch_regtmod {
+ YASM_ARCH_NOTREGTMOD = 0, /**< Unrecognized */
+ YASM_ARCH_REG, /**< A "normal" register */
+ YASM_ARCH_REGGROUP, /**< A group of indexable registers */
+ YASM_ARCH_SEGREG, /**< A segment register */
+ YASM_ARCH_TARGETMOD /**< A target modifier (for jumps) */
+} yasm_arch_regtmod;
+
+#ifndef YASM_DOXYGEN
+/** Base #yasm_arch structure. Must be present as the first element in any
+ * #yasm_arch implementation.
+ */
+typedef struct yasm_arch_base {
+ /** #yasm_arch_module implementation for this architecture. */
+ const struct yasm_arch_module *module;
+} yasm_arch_base;
+#endif
+
+/** YASM machine subtype. A number of different machine types may be
+ * associated with a single architecture. These may be specific CPU's, but
+ * the ABI used to interface with the architecture should be the primary
+ * differentiator between machines. Some object formats (ELF) use the machine
+ * to determine parameters within the generated output.
+ */
+typedef struct yasm_arch_machine {
+ /** One-line description of the machine. */
+ const char *name;
+
+ /** Keyword used to select machine. */
+ const char *keyword;
+} yasm_arch_machine;
+
+/** YASM architecture module interface.
+ * \note All "data" in parser-related functions (yasm_arch_parse_*) needs to
+ * start the parse initialized to 0 to make it okay for a parser-related
+ * function to use/check previously stored data to see if it's been
+ * called before on the same piece of data.
+ */
+typedef struct yasm_arch_module {
+ /** One-line description of the architecture.
+ * Call yasm_arch_name() to get the name of a particular #yasm_arch.
+ */
+ const char *name;
+
+ /** Keyword used to select architecture.
+ * Call yasm_arch_keyword() to get the keyword of a particular #yasm_arch.
+ */
+ const char *keyword;
+
+ /** NULL-terminated list of directives. NULL if none. */
+ /*@null@*/ const yasm_directive *directives;
+
+ /** Create architecture.
+ * Module-level implementation of yasm_arch_create().
+ * Call yasm_arch_create() instead of calling this function.
+ */
+ /*@only@*/ yasm_arch * (*create) (const char *machine, const char *parser,
+ /*@out@*/ yasm_arch_create_error *error);
+
+ /** Module-level implementation of yasm_arch_destroy().
+ * Call yasm_arch_destroy() instead of calling this function.
+ */
+ void (*destroy) (/*@only@*/ yasm_arch *arch);
+
+ /** Module-level implementation of yasm_arch_get_machine().
+ * Call yasm_arch_get_machine() instead of calling this function.
+ */
+ const char * (*get_machine) (const yasm_arch *arch);
+
+ /** Module-level implementation of yasm_arch_get_address_size().
+ * Call yasm_arch_get_address_size() instead of calling this function.
+ */
+ unsigned int (*get_address_size) (const yasm_arch *arch);
+
+ /** Module-level implementation of yasm_arch_set_var().
+ * Call yasm_arch_set_var() instead of calling this function.
+ */
+ int (*set_var) (yasm_arch *arch, const char *var, unsigned long val);
+
+ /** Module-level implementation of yasm_arch_parse_check_insnprefix().
+ * Call yasm_arch_parse_check_insnprefix() instead of calling this function.
+ */
+ yasm_arch_insnprefix (*parse_check_insnprefix)
+ (yasm_arch *arch, const char *id, size_t id_len, unsigned long line,
+ /*@out@*/ /*@only@*/ yasm_bytecode **bc, /*@out@*/ uintptr_t *prefix);
+
+ /** Module-level implementation of yasm_arch_parse_check_regtmod().
+ * Call yasm_arch_parse_check_regtmod() instead of calling this function.
+ */
+ yasm_arch_regtmod (*parse_check_regtmod)
+ (yasm_arch *arch, const char *id, size_t id_len,
+ /*@out@*/ uintptr_t *data);
+
+ /** Module-level implementation of yasm_arch_get_fill().
+ * Call yasm_arch_get_fill() instead of calling this function.
+ */
+ const unsigned char ** (*get_fill) (const yasm_arch *arch);
+
+ /** Module-level implementation of yasm_arch_floatnum_tobytes().
+ * Call yasm_arch_floatnum_tobytes() instead of calling this function.
+ */
+ int (*floatnum_tobytes) (yasm_arch *arch, const yasm_floatnum *flt,
+ unsigned char *buf, size_t destsize,
+ size_t valsize, size_t shift, int warn);
+
+ /** Module-level implementation of yasm_arch_intnum_tobytes().
+ * Call yasm_arch_intnum_tobytes() instead of calling this function.
+ */
+ int (*intnum_tobytes) (yasm_arch *arch, const yasm_intnum *intn,
+ unsigned char *buf, size_t destsize, size_t valsize,
+ int shift, const yasm_bytecode *bc,
+ int warn);
+
+ /** Module-level implementation of yasm_arch_get_reg_size().
+ * Call yasm_arch_get_reg_size() instead of calling this function.
+ */
+ unsigned int (*get_reg_size) (yasm_arch *arch, uintptr_t reg);
+
+ /** Module-level implementation of yasm_arch_reggroup_get_reg().
+ * Call yasm_arch_reggroup_get_reg() instead of calling this function.
+ */
+ uintptr_t (*reggroup_get_reg) (yasm_arch *arch, uintptr_t reggroup,
+ unsigned long regindex);
+
+ /** Module-level implementation of yasm_arch_reg_print().
+ * Call yasm_arch_reg_print() instead of calling this function.
+ */
+ void (*reg_print) (yasm_arch *arch, uintptr_t reg, FILE *f);
+
+ /** Module-level implementation of yasm_arch_segreg_print().
+ * Call yasm_arch_segreg_print() instead of calling this function.
+ */
+ void (*segreg_print) (yasm_arch *arch, uintptr_t segreg, FILE *f);
+
+ /** Module-level implementation of yasm_arch_ea_create().
+ * Call yasm_arch_ea_create() instead of calling this function.
+ */
+ yasm_effaddr * (*ea_create) (yasm_arch *arch, /*@keep@*/ yasm_expr *e);
+
+ /** Module-level implementation of yasm_arch_ea_destroy().
+ * Call yasm_arch_ea_destroy() instead of calling this function.
+ */
+ void (*ea_destroy) (/*@only@*/ yasm_effaddr *ea);
+
+ /** Module-level implementation of yasm_arch_ea_print().
+ * Call yasm_arch_ea_print() instead of calling this function.
+ */
+ void (*ea_print) (const yasm_effaddr *ea, FILE *f, int indent_level);
+
+ /** Module-level implementation of yasm_arch_create_empty_insn().
+ * Call yasm_arch_create_empty_insn() instead of calling this function.
+ */
+ /*@only@*/ yasm_bytecode * (*create_empty_insn) (yasm_arch *arch,
+ unsigned long line);
+
+ /** NULL-terminated list of machines for this architecture.
+ * Call yasm_arch_get_machine() to get the active machine of a particular
+ * #yasm_arch.
+ */
+ const yasm_arch_machine *machines;
+
+ /** Default machine keyword.
+ * Call yasm_arch_get_machine() to get the active machine of a particular
+ * #yasm_arch.
+ */
+ const char *default_machine_keyword;
+
+ /** Canonical "word" size in bits.
+ * Call yasm_arch_wordsize() to get the word size of a particular
+ * #yasm_arch.
+ */
+ unsigned int wordsize;
+
+ /** Worst case minimum instruction length in bytes.
+ * Call yasm_arch_min_insn_len() to get the minimum instruction length of
+ * a particular #yasm_arch.
+ */
+ unsigned int min_insn_len;
+} yasm_arch_module;
+
+/** Get the one-line description of an architecture.
+ * \param arch architecture
+ * \return One-line description of architecture.
+ */
+const char *yasm_arch_name(const yasm_arch *arch);
+
+/** Get the keyword used to select an architecture.
+ * \param arch architecture
+ * \return Architecture keyword.
+ */
+const char *yasm_arch_keyword(const yasm_arch *arch);
+
+/** Get the word size of an architecture.
+ * \param arch architecture
+ * \return Word size (in bits).
+ */
+unsigned int yasm_arch_wordsize(const yasm_arch *arch);
+
+/** Get the minimum instruction length of an architecture.
+ * \param arch architecture
+ * \return Minimum instruction length (in bytes).
+ */
+unsigned int yasm_arch_min_insn_len(const yasm_arch *arch);
+
+/** Create architecture.
+ * \param module architecture module
+ * \param machine keyword of machine in use (must be one listed in
+ * #yasm_arch_module.machines)
+ * \param parser keyword of parser in use
+ * \param error error return value
+ * \return NULL on error (error returned in error parameter), otherwise new
+ * architecture.
+ */
+/*@only@*/ yasm_arch *yasm_arch_create(const yasm_arch_module *module,
+ const char *machine, const char *parser,
+ /*@out@*/ yasm_arch_create_error *error);
+
+/** Clean up, free any architecture-allocated memory.
+ * \param arch architecture
+ */
+void yasm_arch_destroy(/*@only@*/ yasm_arch *arch);
+
+/** Get architecture's active machine name.
+ * \param arch architecture
+ * \return Active machine name.
+ */
+const char *yasm_arch_get_machine(const yasm_arch *arch);
+
+/** Get architecture's active address size, in bits.
+ * \param arch architecture
+ * \return Active address size (in bits).
+ */
+unsigned int yasm_arch_get_address_size(const yasm_arch *arch);
+
+/** Set any arch-specific variables. For example, "mode_bits" in x86.
+ * \param arch architecture
+ * \param var variable name
+ * \param val value to set
+ * \return Zero on success, non-zero on failure (variable does not exist).
+ */
+int yasm_arch_set_var(yasm_arch *arch, const char *var, unsigned long val);
+
+/** Check an generic identifier to see if it matches architecture specific
+ * names for instructions or instruction prefixes. Unrecognized identifiers
+ * should return #YASM_ARCH_NOTINSNPREFIX so they can be treated as normal
+ * symbols. Any additional data beyond just the type (almost always necessary)
+ * should be returned into the space provided by the data parameter.
+ * \param arch architecture
+ * \param id identifier as in the input file
+ * \param id_len length of id string
+ * \param line virtual line
+ * \param bc for instructions, yasm_insn-based bytecode is returned
+ * (and NULL otherwise)
+ * \param prefix for prefixes, yasm_arch-specific value is returned
+ * (and 0 otherwise)
+ * \return Identifier type (#YASM_ARCH_NOTINSNPREFIX if unrecognized)
+ */
+yasm_arch_insnprefix yasm_arch_parse_check_insnprefix
+ (yasm_arch *arch, const char *id, size_t id_len, unsigned long line,
+ /*@out@*/ /*@only@*/ yasm_bytecode **bc, /*@out@*/ uintptr_t *prefix);
+
+/** Check an generic identifier to see if it matches architecture specific
+ * names for registers or target modifiers. Unrecognized identifiers should
+ * return #YASM_ARCH_NOTREGTMOD. Any additional data beyond just the type
+ * (almost always necessary) should be returned into the space provided by the
+ * data parameter.
+ * \param arch architecture
+ * \param id identifier as in the input file
+ * \param id_len length of id string
+ * \param data extra identification information (yasm_arch-specific)
+ * [output]
+ * \return Identifier type (#YASM_ARCH_NOTREGTMOD if unrecognized)
+ */
+yasm_arch_regtmod yasm_arch_parse_check_regtmod
+ (yasm_arch *arch, const char *id, size_t id_len,
+ /*@out@*/ uintptr_t *data);
+
+/** Get NOP fill patterns for 1-15 bytes of fill.
+ * \param arch architecture
+ * \return 16-entry array of arrays; [0] is unused, [1] - [15] point to arrays
+ * of 1-15 bytes (respectively) in length.
+ */
+const unsigned char **yasm_arch_get_fill(const yasm_arch *arch);
+
+/** Output #yasm_floatnum to buffer. Puts the value into the least
+ * significant bits of the destination, or may be shifted into more
+ * significant bits by the shift parameter. The destination bits are
+ * cleared before being set.
+ * Architecture-specific because of endianness.
+ * \param arch architecture
+ * \param flt floating point value
+ * \param buf buffer to write into
+ * \param destsize destination size (in bytes)
+ * \param valsize size (in bits)
+ * \param shift left shift (in bits)
+ * \param warn enables standard overflow/underflow warnings
+ * \return Nonzero on error.
+ */
+int yasm_arch_floatnum_tobytes(yasm_arch *arch, const yasm_floatnum *flt,
+ unsigned char *buf, size_t destsize,
+ size_t valsize, size_t shift, int warn);
+
+/** Output #yasm_intnum to buffer. Puts the value into the least
+ * significant bits of the destination, or may be shifted into more
+ * significant bits by the shift parameter. The destination bits are
+ * cleared before being set.
+ * \param arch architecture
+ * \param intn integer value
+ * \param buf buffer to write into
+ * \param destsize destination size (in bytes)
+ * \param valsize size (in bits)
+ * \param shift left shift (in bits); may be negative to specify right
+ * shift (standard warnings include truncation to boundary)
+ * \param bc bytecode being output ("parent" of value)
+ * \param warn enables standard warnings (value doesn't fit into
+ * valsize bits)
+ * \return Nonzero on error.
+ */
+int yasm_arch_intnum_tobytes(yasm_arch *arch, const yasm_intnum *intn,
+ unsigned char *buf, size_t destsize,
+ size_t valsize, int shift,
+ const yasm_bytecode *bc, int warn);
+
+/** Get the equivalent size of a register in bits.
+ * \param arch architecture
+ * \param reg register
+ * \return 0 if there is no suitable equivalent size, otherwise the size.
+ */
+unsigned int yasm_arch_get_reg_size(yasm_arch *arch, uintptr_t reg);
+
+/** Get a specific register of a register group, based on the register
+ * group and the index within the group.
+ * \param arch architecture
+ * \param reggroup register group
+ * \param regindex register index
+ * \return 0 if regindex is not valid for that register group, otherwise the
+ * specific register value.
+ */
+uintptr_t yasm_arch_reggroup_get_reg(yasm_arch *arch, uintptr_t reggroup,
+ unsigned long regindex);
+
+/** Print a register. For debugging purposes.
+ * \param arch architecture
+ * \param reg register
+ * \param f file
+ */
+void yasm_arch_reg_print(yasm_arch *arch, uintptr_t reg, FILE *f);
+
+/** Print a segment register. For debugging purposes.
+ * \param arch architecture
+ * \param segreg segment register
+ * \param f file
+ */
+void yasm_arch_segreg_print(yasm_arch *arch, uintptr_t segreg, FILE *f);
+
+/** Create an effective address from an expression.
+ * \param arch architecture
+ * \param e expression (kept, do not delete)
+ * \return Newly allocated effective address.
+ */
+yasm_effaddr *yasm_arch_ea_create(yasm_arch *arch, /*@keep@*/ yasm_expr *e);
+
+/** Delete (free allocated memory for) an effective address.
+ * \param arch architecture
+ * \param ea effective address (only pointer to it).
+ */
+void yasm_arch_ea_destroy(yasm_arch *arch, /*@only@*/ yasm_effaddr *ea);
+
+/** Print an effective address. For debugging purposes.
+ * \param arch architecture
+ * \param ea effective address
+ * \param f file
+ * \param indent_level indentation level
+ */
+void yasm_arch_ea_print(const yasm_arch *arch, const yasm_effaddr *ea,
+ FILE *f, int indent_level);
+
+/** Create a bytecode that represents a single empty (0 length) instruction.
+ * This is used for handling solitary prefixes.
+ * \param arch architecture
+ * \param line virtual line (from yasm_linemap)
+ * \return Newly allocated bytecode.
+ */
+/*@only@*/ yasm_bytecode *yasm_arch_create_empty_insn(yasm_arch *arch,
+ unsigned long line);
+
+#ifndef YASM_DOXYGEN
+
+/* Inline macro implementations for arch functions */
+
+#define yasm_arch_name(arch) \
+ (((yasm_arch_base *)arch)->module->name)
+#define yasm_arch_keyword(arch) \
+ (((yasm_arch_base *)arch)->module->keyword)
+#define yasm_arch_wordsize(arch) \
+ (((yasm_arch_base *)arch)->module->wordsize)
+#define yasm_arch_min_insn_len(arch) \
+ (((yasm_arch_base *)arch)->module->min_insn_len)
+
+#define yasm_arch_create(module, machine, parser, error) \
+ module->create(machine, parser, error)
+
+#define yasm_arch_destroy(arch) \
+ ((yasm_arch_base *)arch)->module->destroy(arch)
+#define yasm_arch_get_machine(arch) \
+ ((yasm_arch_base *)arch)->module->get_machine(arch)
+#define yasm_arch_get_address_size(arch) \
+ ((yasm_arch_base *)arch)->module->get_address_size(arch)
+#define yasm_arch_set_var(arch, var, val) \
+ ((yasm_arch_base *)arch)->module->set_var(arch, var, val)
+#define yasm_arch_parse_check_insnprefix(arch, id, id_len, line, bc, prefix) \
+ ((yasm_arch_base *)arch)->module->parse_check_insnprefix \
+ (arch, id, id_len, line, bc, prefix)
+#define yasm_arch_parse_check_regtmod(arch, id, id_len, data) \
+ ((yasm_arch_base *)arch)->module->parse_check_regtmod \
+ (arch, id, id_len, data)
+#define yasm_arch_get_fill(arch) \
+ ((yasm_arch_base *)arch)->module->get_fill(arch)
+#define yasm_arch_floatnum_tobytes(arch, flt, buf, destsize, valsize, shift, \
+ warn) \
+ ((yasm_arch_base *)arch)->module->floatnum_tobytes \
+ (arch, flt, buf, destsize, valsize, shift, warn)
+#define yasm_arch_intnum_tobytes(arch, intn, buf, destsize, valsize, shift, \
+ bc, warn) \
+ ((yasm_arch_base *)arch)->module->intnum_tobytes \
+ (arch, intn, buf, destsize, valsize, shift, bc, warn)
+#define yasm_arch_get_reg_size(arch, reg) \
+ ((yasm_arch_base *)arch)->module->get_reg_size(arch, reg)
+#define yasm_arch_reggroup_get_reg(arch, regg, regi) \
+ ((yasm_arch_base *)arch)->module->reggroup_get_reg(arch, regg, regi)
+#define yasm_arch_reg_print(arch, reg, f) \
+ ((yasm_arch_base *)arch)->module->reg_print(arch, reg, f)
+#define yasm_arch_segreg_print(arch, segreg, f) \
+ ((yasm_arch_base *)arch)->module->segreg_print(arch, segreg, f)
+#define yasm_arch_ea_create(arch, e) \
+ ((yasm_arch_base *)arch)->module->ea_create(arch, e)
+#define yasm_arch_ea_destroy(arch, ea) \
+ ((yasm_arch_base *)arch)->module->ea_destroy(ea)
+#define yasm_arch_ea_print(arch, ea, f, i) \
+ ((yasm_arch_base *)arch)->module->ea_print(ea, f, i)
+#define yasm_arch_create_empty_insn(arch, line) \
+ ((yasm_arch_base *)arch)->module->create_empty_insn(arch, line)
+
+#endif
+
+#endif
diff --git a/contrib/tools/yasm/libyasm/assocdat.c b/contrib/tools/yasm/libyasm/assocdat.c
index 527c678fc1..560093685e 100644
--- a/contrib/tools/yasm/libyasm/assocdat.c
+++ b/contrib/tools/yasm/libyasm/assocdat.c
@@ -1,138 +1,138 @@
-/*
- * YASM associated data storage (libyasm internal use)
- *
- * Copyright (C) 2003-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include "util.h"
-
-#include "coretype.h"
-#include "assocdat.h"
-
-
-typedef struct assoc_data_item {
- const yasm_assoc_data_callback *callback;
- void *data;
-} assoc_data_item;
-
-struct yasm__assoc_data {
- assoc_data_item *vector;
- size_t size;
- size_t alloc;
-};
-
-
-yasm__assoc_data *
-yasm__assoc_data_create(void)
-{
- yasm__assoc_data *assoc_data = yasm_xmalloc(sizeof(yasm__assoc_data));
-
- assoc_data->size = 0;
- assoc_data->alloc = 2;
- assoc_data->vector = yasm_xmalloc(assoc_data->alloc *
- sizeof(assoc_data_item));
-
- return assoc_data;
-}
-
-void *
-yasm__assoc_data_get(yasm__assoc_data *assoc_data,
- const yasm_assoc_data_callback *callback)
-{
- size_t i;
-
- if (!assoc_data)
- return NULL;
-
- for (i=0; i<assoc_data->size; i++) {
- if (assoc_data->vector[i].callback == callback)
- return assoc_data->vector[i].data;
- }
- return NULL;
-}
-
-yasm__assoc_data *
-yasm__assoc_data_add(yasm__assoc_data *assoc_data_arg,
- const yasm_assoc_data_callback *callback, void *data)
-{
- yasm__assoc_data *assoc_data;
- assoc_data_item *item = NULL;
- size_t i;
-
- /* Create a new assoc_data if necessary */
- if (assoc_data_arg)
- assoc_data = assoc_data_arg;
- else
- assoc_data = yasm__assoc_data_create();
-
- /* See if there's already assocated data for this callback */
- for (i=0; i<assoc_data->size; i++) {
- if (assoc_data->vector[i].callback == callback) {
- item = &assoc_data->vector[i];
- break;
- }
- }
-
- /* No? Then append a new one */
- if (!item) {
- assoc_data->size++;
- if (assoc_data->size > assoc_data->alloc) {
- assoc_data->alloc *= 2;
- assoc_data->vector =
- yasm_xrealloc(assoc_data->vector,
- assoc_data->alloc * sizeof(assoc_data_item));
- }
- item = &assoc_data->vector[assoc_data->size-1];
- item->callback = callback;
- item->data = NULL;
- }
-
- /* Delete existing data (if any) */
- if (item->data && item->data != data)
- item->callback->destroy(item->data);
-
- item->data = data;
-
- return assoc_data;
-}
-
-void
-yasm__assoc_data_destroy(yasm__assoc_data *assoc_data)
-{
- size_t i;
-
- if (!assoc_data)
- return;
-
- for (i=0; i<assoc_data->size; i++)
- assoc_data->vector[i].callback->destroy(assoc_data->vector[i].data);
- yasm_xfree(assoc_data->vector);
- yasm_xfree(assoc_data);
-}
-
-void
-yasm__assoc_data_print(const yasm__assoc_data *assoc_data, FILE *f,
- int indent_level)
-{
- /*TODO*/
-}
+/*
+ * YASM associated data storage (libyasm internal use)
+ *
+ * Copyright (C) 2003-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "util.h"
+
+#include "coretype.h"
+#include "assocdat.h"
+
+
+typedef struct assoc_data_item {
+ const yasm_assoc_data_callback *callback;
+ void *data;
+} assoc_data_item;
+
+struct yasm__assoc_data {
+ assoc_data_item *vector;
+ size_t size;
+ size_t alloc;
+};
+
+
+yasm__assoc_data *
+yasm__assoc_data_create(void)
+{
+ yasm__assoc_data *assoc_data = yasm_xmalloc(sizeof(yasm__assoc_data));
+
+ assoc_data->size = 0;
+ assoc_data->alloc = 2;
+ assoc_data->vector = yasm_xmalloc(assoc_data->alloc *
+ sizeof(assoc_data_item));
+
+ return assoc_data;
+}
+
+void *
+yasm__assoc_data_get(yasm__assoc_data *assoc_data,
+ const yasm_assoc_data_callback *callback)
+{
+ size_t i;
+
+ if (!assoc_data)
+ return NULL;
+
+ for (i=0; i<assoc_data->size; i++) {
+ if (assoc_data->vector[i].callback == callback)
+ return assoc_data->vector[i].data;
+ }
+ return NULL;
+}
+
+yasm__assoc_data *
+yasm__assoc_data_add(yasm__assoc_data *assoc_data_arg,
+ const yasm_assoc_data_callback *callback, void *data)
+{
+ yasm__assoc_data *assoc_data;
+ assoc_data_item *item = NULL;
+ size_t i;
+
+ /* Create a new assoc_data if necessary */
+ if (assoc_data_arg)
+ assoc_data = assoc_data_arg;
+ else
+ assoc_data = yasm__assoc_data_create();
+
+ /* See if there's already assocated data for this callback */
+ for (i=0; i<assoc_data->size; i++) {
+ if (assoc_data->vector[i].callback == callback) {
+ item = &assoc_data->vector[i];
+ break;
+ }
+ }
+
+ /* No? Then append a new one */
+ if (!item) {
+ assoc_data->size++;
+ if (assoc_data->size > assoc_data->alloc) {
+ assoc_data->alloc *= 2;
+ assoc_data->vector =
+ yasm_xrealloc(assoc_data->vector,
+ assoc_data->alloc * sizeof(assoc_data_item));
+ }
+ item = &assoc_data->vector[assoc_data->size-1];
+ item->callback = callback;
+ item->data = NULL;
+ }
+
+ /* Delete existing data (if any) */
+ if (item->data && item->data != data)
+ item->callback->destroy(item->data);
+
+ item->data = data;
+
+ return assoc_data;
+}
+
+void
+yasm__assoc_data_destroy(yasm__assoc_data *assoc_data)
+{
+ size_t i;
+
+ if (!assoc_data)
+ return;
+
+ for (i=0; i<assoc_data->size; i++)
+ assoc_data->vector[i].callback->destroy(assoc_data->vector[i].data);
+ yasm_xfree(assoc_data->vector);
+ yasm_xfree(assoc_data);
+}
+
+void
+yasm__assoc_data_print(const yasm__assoc_data *assoc_data, FILE *f,
+ int indent_level)
+{
+ /*TODO*/
+}
diff --git a/contrib/tools/yasm/libyasm/assocdat.h b/contrib/tools/yasm/libyasm/assocdat.h
index 79876335d2..cf42386775 100644
--- a/contrib/tools/yasm/libyasm/assocdat.h
+++ b/contrib/tools/yasm/libyasm/assocdat.h
@@ -1,76 +1,76 @@
-/**
- * \file assocdat.h
- * \brief YASM associated data storage (libyasm internal use)
- *
- * \license
- * Copyright (C) 2003-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- * \endlicense
- */
-#ifndef YASM_ASSOCDAT_H
-#define YASM_ASSOCDAT_H
-
-#ifndef YASM_LIB_DECL
-#define YASM_LIB_DECL
-#endif
-
-/** Associated data container. */
-typedef struct yasm__assoc_data yasm__assoc_data;
-
-/** Create an associated data container. */
-YASM_LIB_DECL
-/*@only@*/ yasm__assoc_data *yasm__assoc_data_create(void);
-
-/** Get associated data for a data callback.
- * \param assoc_data container of associated data
- * \param callback callback used when adding data
- * \return Associated data (NULL if none).
- */
-YASM_LIB_DECL
-/*@dependent@*/ /*@null@*/ void *yasm__assoc_data_get
- (/*@null@*/ yasm__assoc_data *assoc_data,
- const yasm_assoc_data_callback *callback);
-
-/** Add associated data to a associated data container.
- * \attention Deletes any existing associated data for that data callback.
- * \param assoc_data container of associated data
- * \param callback callback
- * \param data data to associate
- */
-YASM_LIB_DECL
-/*@only@*/ yasm__assoc_data *yasm__assoc_data_add
- (/*@null@*/ /*@only@*/ yasm__assoc_data *assoc_data,
- const yasm_assoc_data_callback *callback,
- /*@only@*/ /*@null@*/ void *data);
-
-/** Destroy all associated data in a container. */
-YASM_LIB_DECL
-void yasm__assoc_data_destroy
- (/*@null@*/ /*@only@*/ yasm__assoc_data *assoc_data);
-
-/** Print all associated data in a container. */
-YASM_LIB_DECL
-void yasm__assoc_data_print(const yasm__assoc_data *assoc_data, FILE *f,
- int indent_level);
-
-#endif
+/**
+ * \file assocdat.h
+ * \brief YASM associated data storage (libyasm internal use)
+ *
+ * \license
+ * Copyright (C) 2003-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * - Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ * \endlicense
+ */
+#ifndef YASM_ASSOCDAT_H
+#define YASM_ASSOCDAT_H
+
+#ifndef YASM_LIB_DECL
+#define YASM_LIB_DECL
+#endif
+
+/** Associated data container. */
+typedef struct yasm__assoc_data yasm__assoc_data;
+
+/** Create an associated data container. */
+YASM_LIB_DECL
+/*@only@*/ yasm__assoc_data *yasm__assoc_data_create(void);
+
+/** Get associated data for a data callback.
+ * \param assoc_data container of associated data
+ * \param callback callback used when adding data
+ * \return Associated data (NULL if none).
+ */
+YASM_LIB_DECL
+/*@dependent@*/ /*@null@*/ void *yasm__assoc_data_get
+ (/*@null@*/ yasm__assoc_data *assoc_data,
+ const yasm_assoc_data_callback *callback);
+
+/** Add associated data to a associated data container.
+ * \attention Deletes any existing associated data for that data callback.
+ * \param assoc_data container of associated data
+ * \param callback callback
+ * \param data data to associate
+ */
+YASM_LIB_DECL
+/*@only@*/ yasm__assoc_data *yasm__assoc_data_add
+ (/*@null@*/ /*@only@*/ yasm__assoc_data *assoc_data,
+ const yasm_assoc_data_callback *callback,
+ /*@only@*/ /*@null@*/ void *data);
+
+/** Destroy all associated data in a container. */
+YASM_LIB_DECL
+void yasm__assoc_data_destroy
+ (/*@null@*/ /*@only@*/ yasm__assoc_data *assoc_data);
+
+/** Print all associated data in a container. */
+YASM_LIB_DECL
+void yasm__assoc_data_print(const yasm__assoc_data *assoc_data, FILE *f,
+ int indent_level);
+
+#endif
diff --git a/contrib/tools/yasm/libyasm/bc-align.c b/contrib/tools/yasm/libyasm/bc-align.c
index 42a9cc4671..2a47882ef0 100644
--- a/contrib/tools/yasm/libyasm/bc-align.c
+++ b/contrib/tools/yasm/libyasm/bc-align.c
@@ -1,245 +1,245 @@
-/*
- * Align bytecode
- *
- * Copyright (C) 2005-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include "util.h"
-
-#include "libyasm-stdint.h"
-#include "coretype.h"
-
-#include "errwarn.h"
-#include "intnum.h"
-#include "expr.h"
-
-#include "bytecode.h"
-
-
-typedef struct bytecode_align {
- /*@only@*/ yasm_expr *boundary; /* alignment boundary */
-
- /* What to fill intervening locations with, NULL if using code_fill */
- /*@only@*/ /*@null@*/ yasm_expr *fill;
-
- /* Maximum number of bytes to skip, NULL if no maximum. */
- /*@only@*/ /*@null@*/ yasm_expr *maxskip;
-
- /* Code fill, NULL if using 0 fill */
- /*@null@*/ const unsigned char **code_fill;
-} bytecode_align;
-
-static void bc_align_destroy(void *contents);
-static void bc_align_print(const void *contents, FILE *f, int indent_level);
-static void bc_align_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc);
-static int bc_align_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
- void *add_span_data);
-static int bc_align_expand(yasm_bytecode *bc, int span, long old_val,
- long new_val, /*@out@*/ long *neg_thres,
- /*@out@*/ long *pos_thres);
-static int bc_align_tobytes(yasm_bytecode *bc, unsigned char **bufp,
- unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- /*@null@*/ yasm_output_reloc_func output_reloc);
-
-static const yasm_bytecode_callback bc_align_callback = {
- bc_align_destroy,
- bc_align_print,
- bc_align_finalize,
- NULL,
- bc_align_calc_len,
- bc_align_expand,
- bc_align_tobytes,
- YASM_BC_SPECIAL_OFFSET
-};
-
-
-static void
-bc_align_destroy(void *contents)
-{
- bytecode_align *align = (bytecode_align *)contents;
- if (align->boundary)
- yasm_expr_destroy(align->boundary);
- if (align->fill)
- yasm_expr_destroy(align->fill);
- if (align->maxskip)
- yasm_expr_destroy(align->maxskip);
- yasm_xfree(contents);
-}
-
-static void
-bc_align_print(const void *contents, FILE *f, int indent_level)
-{
- const bytecode_align *align = (const bytecode_align *)contents;
- fprintf(f, "%*s_Align_\n", indent_level, "");
- fprintf(f, "%*sBoundary=", indent_level, "");
- yasm_expr_print(align->boundary, f);
- fprintf(f, "\n%*sFill=", indent_level, "");
- yasm_expr_print(align->fill, f);
- fprintf(f, "\n%*sMax Skip=", indent_level, "");
- yasm_expr_print(align->maxskip, f);
- fprintf(f, "\n");
-}
-
-static void
-bc_align_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc)
-{
- bytecode_align *align = (bytecode_align *)bc->contents;
- if (!yasm_expr_get_intnum(&align->boundary, 0))
- yasm_error_set(YASM_ERROR_NOT_CONSTANT,
- N_("align boundary must be a constant"));
- if (align->fill && !yasm_expr_get_intnum(&align->fill, 0))
- yasm_error_set(YASM_ERROR_NOT_CONSTANT,
- N_("align fill must be a constant"));
- if (align->maxskip && !yasm_expr_get_intnum(&align->maxskip, 0))
- yasm_error_set(YASM_ERROR_NOT_CONSTANT,
- N_("align maximum skip must be a constant"));
-}
-
-static int
-bc_align_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
- void *add_span_data)
-{
- long neg_thres = 0;
- long pos_thres = 0;
-
- if (bc_align_expand(bc, 0, 0, (long)bc->offset, &neg_thres,
- &pos_thres) < 0)
- return -1;
-
- return 0;
-}
-
-static int
-bc_align_expand(yasm_bytecode *bc, int span, long old_val, long new_val,
- /*@out@*/ long *neg_thres, /*@out@*/ long *pos_thres)
-{
- bytecode_align *align = (bytecode_align *)bc->contents;
- unsigned long end;
- unsigned long boundary =
- yasm_intnum_get_uint(yasm_expr_get_intnum(&align->boundary, 0));
-
- if (boundary == 0) {
- bc->len = 0;
- *pos_thres = new_val;
- return 0;
- }
-
- end = (unsigned long)new_val;
- if ((unsigned long)new_val & (boundary-1))
- end = ((unsigned long)new_val & ~(boundary-1)) + boundary;
-
- *pos_thres = (long)end;
- bc->len = end - (unsigned long)new_val;
-
- if (align->maxskip) {
- unsigned long maxskip =
- yasm_intnum_get_uint(yasm_expr_get_intnum(&align->maxskip, 0));
- if (bc->len > maxskip) {
- *pos_thres = (long)end-maxskip-1;
- bc->len = 0;
- }
- }
- return 1;
-}
-
-static int
-bc_align_tobytes(yasm_bytecode *bc, unsigned char **bufp,
- unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- /*@unused@*/ yasm_output_reloc_func output_reloc)
-{
- bytecode_align *align = (bytecode_align *)bc->contents;
- unsigned long len;
- unsigned long boundary =
- yasm_intnum_get_uint(yasm_expr_get_intnum(&align->boundary, 0));
-
- if (boundary == 0)
- return 0;
- else {
- unsigned long end = bc->offset;
- if (bc->offset & (boundary-1))
- end = (bc->offset & ~(boundary-1)) + boundary;
- len = end - bc->offset;
- if (len == 0)
- return 0;
- if (align->maxskip) {
- unsigned long maxskip =
- yasm_intnum_get_uint(yasm_expr_get_intnum(&align->maxskip, 0));
- if (len > maxskip)
- return 0;
- }
- }
-
- if (align->fill) {
- unsigned long v;
- v = yasm_intnum_get_uint(yasm_expr_get_intnum(&align->fill, 0));
- memset(*bufp, (int)v, len);
- *bufp += len;
- } else if (align->code_fill) {
- unsigned long maxlen = 15;
- while (!align->code_fill[maxlen] && maxlen>0)
- maxlen--;
- if (maxlen == 0) {
- yasm_error_set(YASM_ERROR_GENERAL,
- N_("could not find any code alignment size"));
- return 1;
- }
-
- /* Fill with maximum code fill as much as possible */
- while (len > maxlen) {
- memcpy(*bufp, align->code_fill[maxlen], maxlen);
- *bufp += maxlen;
- len -= maxlen;
- }
-
- if (!align->code_fill[len]) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("invalid alignment size %d"), len);
- return 1;
- }
- /* Handle rest of code fill */
- memcpy(*bufp, align->code_fill[len], len);
- *bufp += len;
- } else {
- /* Just fill with 0 */
- memset(*bufp, 0, len);
- *bufp += len;
- }
- return 0;
-}
-
-yasm_bytecode *
-yasm_bc_create_align(yasm_expr *boundary, yasm_expr *fill,
- yasm_expr *maxskip, const unsigned char **code_fill,
- unsigned long line)
-{
- bytecode_align *align = yasm_xmalloc(sizeof(bytecode_align));
-
- align->boundary = boundary;
- align->fill = fill;
- align->maxskip = maxskip;
- align->code_fill = code_fill;
-
- return yasm_bc_create_common(&bc_align_callback, align, line);
-}
+/*
+ * Align bytecode
+ *
+ * Copyright (C) 2005-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "util.h"
+
+#include "libyasm-stdint.h"
+#include "coretype.h"
+
+#include "errwarn.h"
+#include "intnum.h"
+#include "expr.h"
+
+#include "bytecode.h"
+
+
+typedef struct bytecode_align {
+ /*@only@*/ yasm_expr *boundary; /* alignment boundary */
+
+ /* What to fill intervening locations with, NULL if using code_fill */
+ /*@only@*/ /*@null@*/ yasm_expr *fill;
+
+ /* Maximum number of bytes to skip, NULL if no maximum. */
+ /*@only@*/ /*@null@*/ yasm_expr *maxskip;
+
+ /* Code fill, NULL if using 0 fill */
+ /*@null@*/ const unsigned char **code_fill;
+} bytecode_align;
+
+static void bc_align_destroy(void *contents);
+static void bc_align_print(const void *contents, FILE *f, int indent_level);
+static void bc_align_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc);
+static int bc_align_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
+ void *add_span_data);
+static int bc_align_expand(yasm_bytecode *bc, int span, long old_val,
+ long new_val, /*@out@*/ long *neg_thres,
+ /*@out@*/ long *pos_thres);
+static int bc_align_tobytes(yasm_bytecode *bc, unsigned char **bufp,
+ unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ /*@null@*/ yasm_output_reloc_func output_reloc);
+
+static const yasm_bytecode_callback bc_align_callback = {
+ bc_align_destroy,
+ bc_align_print,
+ bc_align_finalize,
+ NULL,
+ bc_align_calc_len,
+ bc_align_expand,
+ bc_align_tobytes,
+ YASM_BC_SPECIAL_OFFSET
+};
+
+
+static void
+bc_align_destroy(void *contents)
+{
+ bytecode_align *align = (bytecode_align *)contents;
+ if (align->boundary)
+ yasm_expr_destroy(align->boundary);
+ if (align->fill)
+ yasm_expr_destroy(align->fill);
+ if (align->maxskip)
+ yasm_expr_destroy(align->maxskip);
+ yasm_xfree(contents);
+}
+
+static void
+bc_align_print(const void *contents, FILE *f, int indent_level)
+{
+ const bytecode_align *align = (const bytecode_align *)contents;
+ fprintf(f, "%*s_Align_\n", indent_level, "");
+ fprintf(f, "%*sBoundary=", indent_level, "");
+ yasm_expr_print(align->boundary, f);
+ fprintf(f, "\n%*sFill=", indent_level, "");
+ yasm_expr_print(align->fill, f);
+ fprintf(f, "\n%*sMax Skip=", indent_level, "");
+ yasm_expr_print(align->maxskip, f);
+ fprintf(f, "\n");
+}
+
+static void
+bc_align_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc)
+{
+ bytecode_align *align = (bytecode_align *)bc->contents;
+ if (!yasm_expr_get_intnum(&align->boundary, 0))
+ yasm_error_set(YASM_ERROR_NOT_CONSTANT,
+ N_("align boundary must be a constant"));
+ if (align->fill && !yasm_expr_get_intnum(&align->fill, 0))
+ yasm_error_set(YASM_ERROR_NOT_CONSTANT,
+ N_("align fill must be a constant"));
+ if (align->maxskip && !yasm_expr_get_intnum(&align->maxskip, 0))
+ yasm_error_set(YASM_ERROR_NOT_CONSTANT,
+ N_("align maximum skip must be a constant"));
+}
+
+static int
+bc_align_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
+ void *add_span_data)
+{
+ long neg_thres = 0;
+ long pos_thres = 0;
+
+ if (bc_align_expand(bc, 0, 0, (long)bc->offset, &neg_thres,
+ &pos_thres) < 0)
+ return -1;
+
+ return 0;
+}
+
+static int
+bc_align_expand(yasm_bytecode *bc, int span, long old_val, long new_val,
+ /*@out@*/ long *neg_thres, /*@out@*/ long *pos_thres)
+{
+ bytecode_align *align = (bytecode_align *)bc->contents;
+ unsigned long end;
+ unsigned long boundary =
+ yasm_intnum_get_uint(yasm_expr_get_intnum(&align->boundary, 0));
+
+ if (boundary == 0) {
+ bc->len = 0;
+ *pos_thres = new_val;
+ return 0;
+ }
+
+ end = (unsigned long)new_val;
+ if ((unsigned long)new_val & (boundary-1))
+ end = ((unsigned long)new_val & ~(boundary-1)) + boundary;
+
+ *pos_thres = (long)end;
+ bc->len = end - (unsigned long)new_val;
+
+ if (align->maxskip) {
+ unsigned long maxskip =
+ yasm_intnum_get_uint(yasm_expr_get_intnum(&align->maxskip, 0));
+ if (bc->len > maxskip) {
+ *pos_thres = (long)end-maxskip-1;
+ bc->len = 0;
+ }
+ }
+ return 1;
+}
+
+static int
+bc_align_tobytes(yasm_bytecode *bc, unsigned char **bufp,
+ unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ /*@unused@*/ yasm_output_reloc_func output_reloc)
+{
+ bytecode_align *align = (bytecode_align *)bc->contents;
+ unsigned long len;
+ unsigned long boundary =
+ yasm_intnum_get_uint(yasm_expr_get_intnum(&align->boundary, 0));
+
+ if (boundary == 0)
+ return 0;
+ else {
+ unsigned long end = bc->offset;
+ if (bc->offset & (boundary-1))
+ end = (bc->offset & ~(boundary-1)) + boundary;
+ len = end - bc->offset;
+ if (len == 0)
+ return 0;
+ if (align->maxskip) {
+ unsigned long maxskip =
+ yasm_intnum_get_uint(yasm_expr_get_intnum(&align->maxskip, 0));
+ if (len > maxskip)
+ return 0;
+ }
+ }
+
+ if (align->fill) {
+ unsigned long v;
+ v = yasm_intnum_get_uint(yasm_expr_get_intnum(&align->fill, 0));
+ memset(*bufp, (int)v, len);
+ *bufp += len;
+ } else if (align->code_fill) {
+ unsigned long maxlen = 15;
+ while (!align->code_fill[maxlen] && maxlen>0)
+ maxlen--;
+ if (maxlen == 0) {
+ yasm_error_set(YASM_ERROR_GENERAL,
+ N_("could not find any code alignment size"));
+ return 1;
+ }
+
+ /* Fill with maximum code fill as much as possible */
+ while (len > maxlen) {
+ memcpy(*bufp, align->code_fill[maxlen], maxlen);
+ *bufp += maxlen;
+ len -= maxlen;
+ }
+
+ if (!align->code_fill[len]) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("invalid alignment size %d"), len);
+ return 1;
+ }
+ /* Handle rest of code fill */
+ memcpy(*bufp, align->code_fill[len], len);
+ *bufp += len;
+ } else {
+ /* Just fill with 0 */
+ memset(*bufp, 0, len);
+ *bufp += len;
+ }
+ return 0;
+}
+
+yasm_bytecode *
+yasm_bc_create_align(yasm_expr *boundary, yasm_expr *fill,
+ yasm_expr *maxskip, const unsigned char **code_fill,
+ unsigned long line)
+{
+ bytecode_align *align = yasm_xmalloc(sizeof(bytecode_align));
+
+ align->boundary = boundary;
+ align->fill = fill;
+ align->maxskip = maxskip;
+ align->code_fill = code_fill;
+
+ return yasm_bc_create_common(&bc_align_callback, align, line);
+}
diff --git a/contrib/tools/yasm/libyasm/bc-data.c b/contrib/tools/yasm/libyasm/bc-data.c
index 7c115a8b50..ebbdd6f97d 100644
--- a/contrib/tools/yasm/libyasm/bc-data.c
+++ b/contrib/tools/yasm/libyasm/bc-data.c
@@ -1,600 +1,600 @@
-/*
- * Data (and LEB128) bytecode
- *
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include "util.h"
-
-#include "libyasm-stdint.h"
-#include "coretype.h"
-
-#include "errwarn.h"
-#include "intnum.h"
-#include "expr.h"
-#include "value.h"
-
-#include "bytecode.h"
-#include "arch.h"
-
-
-struct yasm_dataval {
- /*@reldef@*/ STAILQ_ENTRY(yasm_dataval) link;
-
- enum { DV_EMPTY, DV_VALUE, DV_RAW, DV_ULEB128, DV_SLEB128, DV_RESERVE }
- type;
-
- union {
- yasm_value val;
- struct {
- /*@only@*/ unsigned char *contents;
- unsigned long len;
- } raw;
- } data;
-
- /* number of times data is repeated, NULL=1. */
- /*@only@*/ /*@null@*/ yasm_expr *multiple;
-};
-
-typedef struct bytecode_data {
- /* converted data (linked list) */
- yasm_datavalhead datahead;
-
- int item_size;
-} bytecode_data;
-
-static void bc_data_destroy(void *contents);
-static void bc_data_print(const void *contents, FILE *f, int indent_level);
-static void bc_data_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc);
-static int bc_data_item_size(yasm_bytecode *bc);
-static int bc_data_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
- void *add_span_data);
-static int bc_data_tobytes(yasm_bytecode *bc, unsigned char **bufp,
- unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- /*@null@*/ yasm_output_reloc_func output_reloc);
-
-static const yasm_bytecode_callback bc_data_callback = {
- bc_data_destroy,
- bc_data_print,
- bc_data_finalize,
- bc_data_item_size,
- bc_data_calc_len,
- yasm_bc_expand_common,
- bc_data_tobytes,
- 0
-};
-
-
-static void
-bc_data_destroy(void *contents)
-{
- bytecode_data *bc_data = (bytecode_data *)contents;
- yasm_dvs_delete(&bc_data->datahead);
- yasm_xfree(contents);
-}
-
-static void
-bc_data_print(const void *contents, FILE *f, int indent_level)
-{
- const bytecode_data *bc_data = (const bytecode_data *)contents;
- fprintf(f, "%*s_Data_\n", indent_level, "");
- fprintf(f, "%*sElements:\n", indent_level+1, "");
- yasm_dvs_print(&bc_data->datahead, f, indent_level+2);
-}
-
-static void
-bc_data_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc)
-{
- bytecode_data *bc_data = (bytecode_data *)bc->contents;
- yasm_dataval *dv;
- yasm_intnum *intn;
-
- /* Convert values from simple expr to value. */
- STAILQ_FOREACH(dv, &bc_data->datahead, link) {
- switch (dv->type) {
- case DV_VALUE:
- if (yasm_value_finalize(&dv->data.val, prev_bc)) {
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("data expression too complex"));
- return;
- }
- break;
- case DV_ULEB128:
- case DV_SLEB128:
- intn = yasm_expr_get_intnum(&dv->data.val.abs, 0);
- if (!intn) {
- yasm_error_set(YASM_ERROR_NOT_CONSTANT,
- N_("LEB128 requires constant values"));
- return;
- }
- /* Warn for negative values in unsigned environment.
- * This could be an error instead: the likelihood this is
- * desired is very low!
- */
- if (yasm_intnum_sign(intn) == -1 && dv->type == DV_ULEB128)
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("negative value in unsigned LEB128"));
- break;
- default:
- break;
- }
- if (dv->multiple) {
- yasm_value val;
- if (yasm_value_finalize_expr(&val, dv->multiple, prev_bc, 0))
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("multiple expression too complex"));
- else if (val.rel)
- yasm_error_set(YASM_ERROR_NOT_ABSOLUTE,
- N_("multiple expression not absolute"));
- dv->multiple = val.abs;
- }
- }
-}
-
-static int
-bc_data_item_size(yasm_bytecode *bc)
-{
- bytecode_data *bc_data = (bytecode_data *)bc->contents;
- return bc_data->item_size;
-}
-
-static int
-bc_data_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
- void *add_span_data)
-{
- bytecode_data *bc_data = (bytecode_data *)bc->contents;
- yasm_dataval *dv;
- yasm_intnum *intn;
- unsigned long len = 0;
- unsigned long multiple;
-
- /* Count up element sizes, rounding up string length. */
- STAILQ_FOREACH(dv, &bc_data->datahead, link) {
- switch (dv->type) {
- case DV_EMPTY:
- len = 0;
- break;
- case DV_VALUE:
- len = dv->data.val.size/8;
- break;
- case DV_RAW:
- len = dv->data.raw.len;
- break;
- case DV_ULEB128:
- case DV_SLEB128:
- intn = yasm_expr_get_intnum(&dv->data.val.abs, 0);
- if (!intn)
- yasm_internal_error(N_("non-constant in data_tobytes"));
- len = yasm_intnum_size_leb128(intn, dv->type == DV_SLEB128);
- break;
- case DV_RESERVE:
- len = dv->data.val.size/8;
- break;
- }
-
- if (!yasm_dv_get_multiple(dv, &multiple))
- len *= multiple;
-
- bc->len += len;
- }
-
- return 0;
-}
-
-static int
-bc_data_tobytes(yasm_bytecode *bc, unsigned char **bufp,
- unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- /*@unused@*/ yasm_output_reloc_func output_reloc)
-{
- bytecode_data *bc_data = (bytecode_data *)bc->contents;
- yasm_dataval *dv;
- yasm_intnum *intn;
- unsigned int val_len;
- unsigned long multiple, i;
-
- STAILQ_FOREACH(dv, &bc_data->datahead, link) {
- if (yasm_dv_get_multiple(dv, &multiple) || multiple == 0)
- continue;
- switch (dv->type) {
- case DV_EMPTY:
- break;
- case DV_VALUE:
- val_len = dv->data.val.size/8;
- for (i=0; i<multiple; i++) {
- if (output_value(&dv->data.val, *bufp, val_len,
- (unsigned long)(*bufp-bufstart), bc, 1,
- d))
- return 1;
- *bufp += val_len;
- }
- break;
- case DV_RAW:
- for (i=0; i<multiple; i++) {
- memcpy(*bufp, dv->data.raw.contents, dv->data.raw.len);
- *bufp += dv->data.raw.len;
- }
- break;
- case DV_ULEB128:
- case DV_SLEB128:
- intn = yasm_expr_get_intnum(&dv->data.val.abs, 234);
- if (!intn)
- yasm_internal_error(N_("non-constant in data_tobytes"));
- for (i=0; i<multiple; i++) {
- *bufp +=
- yasm_intnum_get_leb128(intn, *bufp,
- dv->type == DV_SLEB128);
- }
- case DV_RESERVE:
- val_len = dv->data.val.size/8;
- for (i=0; i<multiple; i++) {
- memset(*bufp, 0, val_len);
- *bufp += val_len;
- }
- break;
- }
- }
-
- return 0;
-}
-
-yasm_bytecode *
-yasm_bc_create_data(yasm_datavalhead *datahead, unsigned int size,
- int append_zero, yasm_arch *arch, unsigned long line)
-{
- bytecode_data *data = yasm_xmalloc(sizeof(bytecode_data));
- yasm_bytecode *bc = yasm_bc_create_common(&bc_data_callback, data, line);
- yasm_dataval *dv, *dv2, *dvo;
- yasm_intnum *intn;
- unsigned long len = 0, rlen, i;
-
-
- yasm_dvs_initialize(&data->datahead);
- data->item_size = size;
-
- /* Prescan input data for length, etc. Careful: this needs to be
- * precisely paired with the second loop.
- */
- STAILQ_FOREACH(dv, datahead, link) {
- if (dv->multiple && dv->type != DV_EMPTY && len > 0) {
- /* Flush previous data */
- dvo = yasm_dv_create_raw(yasm_xmalloc(len), len);
- STAILQ_INSERT_TAIL(&data->datahead, dvo, link);
- len = 0;
- }
- switch (dv->type) {
- case DV_EMPTY:
- break;
- case DV_VALUE:
- case DV_ULEB128:
- case DV_SLEB128:
- intn = yasm_expr_get_intnum(&dv->data.val.abs, 0);
- if (intn && dv->type == DV_VALUE && (arch || size == 1))
- len += size;
- else if (intn && dv->type == DV_ULEB128)
- len += yasm_intnum_size_leb128(intn, 0);
- else if (intn && dv->type == DV_SLEB128)
- len += yasm_intnum_size_leb128(intn, 1);
- else {
- if (len > 0) {
- /* Create bytecode for all previous len */
- dvo = yasm_dv_create_raw(yasm_xmalloc(len), len);
- STAILQ_INSERT_TAIL(&data->datahead, dvo, link);
- len = 0;
- }
-
- /* Create bytecode for this value */
- dvo = yasm_xmalloc(sizeof(yasm_dataval));
- STAILQ_INSERT_TAIL(&data->datahead, dvo, link);
- dvo->multiple = dv->multiple;
- }
- break;
- case DV_RAW:
- rlen = dv->data.raw.len;
- /* find count, rounding up to nearest multiple of size */
- rlen = (rlen + size - 1) / size;
- len += rlen*size;
- break;
- case DV_RESERVE:
- len += size;
- break;
- }
-
- if (dv->multiple && dv->type != DV_EMPTY && len > 0) {
- /* Flush this data */
- dvo = yasm_dv_create_raw(yasm_xmalloc(len), len);
- STAILQ_INSERT_TAIL(&data->datahead, dvo, link);
- dvo->multiple = dv->multiple;
- len = 0;
- }
-
- if (append_zero)
- len++;
- }
-
- /* Create final dataval for any trailing length */
- if (len > 0) {
- dvo = yasm_dv_create_raw(yasm_xmalloc(len), len);
- STAILQ_INSERT_TAIL(&data->datahead, dvo, link);
- }
-
- /* Second iteration: copy data and delete input datavals. */
- dv = STAILQ_FIRST(datahead);
- dvo = STAILQ_FIRST(&data->datahead);
- len = 0;
- while (dv && dvo) {
- if (dv->multiple && dv->type != DV_EMPTY && len > 0) {
- dvo = STAILQ_NEXT(dvo, link);
- len = 0;
- }
- switch (dv->type) {
- case DV_EMPTY:
- break;
- case DV_VALUE:
- case DV_ULEB128:
- case DV_SLEB128:
- intn = yasm_expr_get_intnum(&dv->data.val.abs, 0);
- if (intn && dv->type == DV_VALUE && (arch || size == 1)) {
- if (size == 1)
- yasm_intnum_get_sized(intn,
- &dvo->data.raw.contents[len],
- 1, 8, 0, 0, 1);
- else
- yasm_arch_intnum_tobytes(arch, intn,
- &dvo->data.raw.contents[len],
- size, size*8, 0, bc, 1);
- yasm_value_delete(&dv->data.val);
- len += size;
- } else if (intn && dv->type == DV_ULEB128) {
- len += yasm_intnum_get_leb128(intn,
- &dvo->data.raw.contents[len],
- 0);
- yasm_value_delete(&dv->data.val);
- } else if (intn && dv->type == DV_SLEB128) {
- len += yasm_intnum_get_leb128(intn,
- &dvo->data.raw.contents[len],
- 1);
- yasm_value_delete(&dv->data.val);
- } else {
- if (len > 0)
- dvo = STAILQ_NEXT(dvo, link);
- dvo->type = dv->type;
- dvo->data.val = dv->data.val; /* structure copy */
- dvo->data.val.size = size*8; /* remember size */
- dvo = STAILQ_NEXT(dvo, link);
- len = 0;
- }
- break;
- case DV_RAW:
- rlen = dv->data.raw.len;
- memcpy(&dvo->data.raw.contents[len], dv->data.raw.contents,
- rlen);
- yasm_xfree(dv->data.raw.contents);
- len += rlen;
- /* pad with 0's to nearest multiple of size */
- rlen %= size;
- if (rlen > 0) {
- rlen = size-rlen;
- for (i=0; i<rlen; i++)
- dvo->data.raw.contents[len++] = 0;
- }
- break;
- case DV_RESERVE:
- memset(&dvo->data.raw.contents[len], 0, size);
- len += size;
- break;
- }
-
- if (dv->multiple && dv->type != DV_EMPTY && len > 0) {
- dvo = STAILQ_NEXT(dvo, link);
- len = 0;
- }
-
- if (append_zero)
- dvo->data.raw.contents[len++] = 0;
- dv2 = STAILQ_NEXT(dv, link);
- yasm_xfree(dv);
- dv = dv2;
- }
-
- return bc;
-}
-
-yasm_bytecode *
-yasm_bc_create_leb128(yasm_datavalhead *datahead, int sign, unsigned long line)
-{
- yasm_dataval *dv;
-
- /* Convert all values into LEB type, error on strings/raws */
- STAILQ_FOREACH(dv, datahead, link) {
- switch (dv->type) {
- case DV_VALUE:
- dv->type = sign ? DV_SLEB128 : DV_ULEB128;
- break;
- case DV_RAW:
- yasm_error_set(YASM_ERROR_VALUE,
- N_("LEB128 does not allow string constants"));
- break;
- default:
- break;
- }
- }
-
- return yasm_bc_create_data(datahead, 0, 0, 0, line);
-}
-
-yasm_dataval *
-yasm_dv_create_expr(yasm_expr *e)
-{
- yasm_dataval *retval = yasm_xmalloc(sizeof(yasm_dataval));
-
- retval->type = DV_VALUE;
- yasm_value_initialize(&retval->data.val, e, 0);
- retval->multiple = NULL;
-
- return retval;
-}
-
-yasm_dataval *
-yasm_dv_create_raw(unsigned char *contents, unsigned long len)
-{
- yasm_dataval *retval = yasm_xmalloc(sizeof(yasm_dataval));
-
- retval->type = DV_RAW;
- retval->data.raw.contents = contents;
- retval->data.raw.len = len;
- retval->multiple = NULL;
-
- return retval;
-}
-
-yasm_dataval *
-yasm_dv_create_reserve(void)
-{
- yasm_dataval *retval = yasm_xmalloc(sizeof(yasm_dataval));
-
- retval->type = DV_RESERVE;
- retval->multiple = NULL;
-
- return retval;
-}
-
-yasm_value *
-yasm_dv_get_value(yasm_dataval *dv)
-{
- if (dv->type != DV_VALUE)
- return NULL;
- return &dv->data.val;
-}
-
-void
-yasm_dv_set_multiple(yasm_dataval *dv, yasm_expr *e)
-{
- if (dv->multiple)
- dv->multiple = yasm_expr_create_tree( dv->multiple, YASM_EXPR_MUL, e,
- e->line);
- else
- dv->multiple = e;
-}
-
-int
-yasm_dv_get_multiple(yasm_dataval *dv, unsigned long *multiple)
-{
- /*@dependent@*/ /*@null@*/ const yasm_intnum *num;
-
- *multiple = 1;
- if (dv->multiple) {
- num = yasm_expr_get_intnum(&dv->multiple, 0);
- if (!num) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("could not determine multiple"));
- return 1;
- }
- if (yasm_intnum_sign(num) < 0) {
- yasm_error_set(YASM_ERROR_VALUE, N_("multiple is negative"));
- return 1;
- }
- *multiple = yasm_intnum_get_uint(num);
- }
- return 0;
-}
-
-void
-yasm_dvs_delete(yasm_datavalhead *headp)
-{
- yasm_dataval *cur, *next;
-
- cur = STAILQ_FIRST(headp);
- while (cur) {
- next = STAILQ_NEXT(cur, link);
- switch (cur->type) {
- case DV_VALUE:
- yasm_value_delete(&cur->data.val);
- break;
- case DV_RAW:
- yasm_xfree(cur->data.raw.contents);
- break;
- default:
- break;
- }
- if (cur->multiple)
- yasm_expr_destroy(cur->multiple);
- yasm_xfree(cur);
- cur = next;
- }
- STAILQ_INIT(headp);
-}
-
-yasm_dataval *
-yasm_dvs_append(yasm_datavalhead *headp, yasm_dataval *dv)
-{
- if (dv) {
- STAILQ_INSERT_TAIL(headp, dv, link);
- return dv;
- }
- return (yasm_dataval *)NULL;
-}
-
-void
-yasm_dvs_print(const yasm_datavalhead *head, FILE *f, int indent_level)
-{
- yasm_dataval *cur;
- unsigned long i;
-
- STAILQ_FOREACH(cur, head, link) {
- fprintf(f, "%*sMultiple=", indent_level, "");
- if (!cur->multiple)
- fprintf(f, "nil (1)");
- else
- yasm_expr_print(cur->multiple, f);
- switch (cur->type) {
- case DV_EMPTY:
- fprintf(f, "%*sEmpty\n", indent_level, "");
- break;
- case DV_VALUE:
- fprintf(f, "%*sValue:\n", indent_level, "");
- yasm_value_print(&cur->data.val, f, indent_level+1);
- break;
- case DV_RAW:
- fprintf(f, "%*sLength=%lu\n", indent_level, "",
- cur->data.raw.len);
- fprintf(f, "%*sBytes=[", indent_level, "");
- for (i=0; i<cur->data.raw.len; i++)
- fprintf(f, "0x%02x, ", cur->data.raw.contents[i]);
- fprintf(f, "]\n");
- break;
- case DV_ULEB128:
- fprintf(f, "%*sULEB128 value:\n", indent_level, "");
- yasm_value_print(&cur->data.val, f, indent_level+1);
- break;
- case DV_SLEB128:
- fprintf(f, "%*sSLEB128 value:\n", indent_level, "");
- yasm_value_print(&cur->data.val, f, indent_level+1);
- break;
- case DV_RESERVE:
- fprintf(f, "%*sReserved\n", indent_level, "");
- break;
- }
- }
-}
+/*
+ * Data (and LEB128) bytecode
+ *
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "util.h"
+
+#include "libyasm-stdint.h"
+#include "coretype.h"
+
+#include "errwarn.h"
+#include "intnum.h"
+#include "expr.h"
+#include "value.h"
+
+#include "bytecode.h"
+#include "arch.h"
+
+
+struct yasm_dataval {
+ /*@reldef@*/ STAILQ_ENTRY(yasm_dataval) link;
+
+ enum { DV_EMPTY, DV_VALUE, DV_RAW, DV_ULEB128, DV_SLEB128, DV_RESERVE }
+ type;
+
+ union {
+ yasm_value val;
+ struct {
+ /*@only@*/ unsigned char *contents;
+ unsigned long len;
+ } raw;
+ } data;
+
+ /* number of times data is repeated, NULL=1. */
+ /*@only@*/ /*@null@*/ yasm_expr *multiple;
+};
+
+typedef struct bytecode_data {
+ /* converted data (linked list) */
+ yasm_datavalhead datahead;
+
+ int item_size;
+} bytecode_data;
+
+static void bc_data_destroy(void *contents);
+static void bc_data_print(const void *contents, FILE *f, int indent_level);
+static void bc_data_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc);
+static int bc_data_item_size(yasm_bytecode *bc);
+static int bc_data_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
+ void *add_span_data);
+static int bc_data_tobytes(yasm_bytecode *bc, unsigned char **bufp,
+ unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ /*@null@*/ yasm_output_reloc_func output_reloc);
+
+static const yasm_bytecode_callback bc_data_callback = {
+ bc_data_destroy,
+ bc_data_print,
+ bc_data_finalize,
+ bc_data_item_size,
+ bc_data_calc_len,
+ yasm_bc_expand_common,
+ bc_data_tobytes,
+ 0
+};
+
+
+static void
+bc_data_destroy(void *contents)
+{
+ bytecode_data *bc_data = (bytecode_data *)contents;
+ yasm_dvs_delete(&bc_data->datahead);
+ yasm_xfree(contents);
+}
+
+static void
+bc_data_print(const void *contents, FILE *f, int indent_level)
+{
+ const bytecode_data *bc_data = (const bytecode_data *)contents;
+ fprintf(f, "%*s_Data_\n", indent_level, "");
+ fprintf(f, "%*sElements:\n", indent_level+1, "");
+ yasm_dvs_print(&bc_data->datahead, f, indent_level+2);
+}
+
+static void
+bc_data_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc)
+{
+ bytecode_data *bc_data = (bytecode_data *)bc->contents;
+ yasm_dataval *dv;
+ yasm_intnum *intn;
+
+ /* Convert values from simple expr to value. */
+ STAILQ_FOREACH(dv, &bc_data->datahead, link) {
+ switch (dv->type) {
+ case DV_VALUE:
+ if (yasm_value_finalize(&dv->data.val, prev_bc)) {
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("data expression too complex"));
+ return;
+ }
+ break;
+ case DV_ULEB128:
+ case DV_SLEB128:
+ intn = yasm_expr_get_intnum(&dv->data.val.abs, 0);
+ if (!intn) {
+ yasm_error_set(YASM_ERROR_NOT_CONSTANT,
+ N_("LEB128 requires constant values"));
+ return;
+ }
+ /* Warn for negative values in unsigned environment.
+ * This could be an error instead: the likelihood this is
+ * desired is very low!
+ */
+ if (yasm_intnum_sign(intn) == -1 && dv->type == DV_ULEB128)
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("negative value in unsigned LEB128"));
+ break;
+ default:
+ break;
+ }
+ if (dv->multiple) {
+ yasm_value val;
+ if (yasm_value_finalize_expr(&val, dv->multiple, prev_bc, 0))
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("multiple expression too complex"));
+ else if (val.rel)
+ yasm_error_set(YASM_ERROR_NOT_ABSOLUTE,
+ N_("multiple expression not absolute"));
+ dv->multiple = val.abs;
+ }
+ }
+}
+
+static int
+bc_data_item_size(yasm_bytecode *bc)
+{
+ bytecode_data *bc_data = (bytecode_data *)bc->contents;
+ return bc_data->item_size;
+}
+
+static int
+bc_data_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
+ void *add_span_data)
+{
+ bytecode_data *bc_data = (bytecode_data *)bc->contents;
+ yasm_dataval *dv;
+ yasm_intnum *intn;
+ unsigned long len = 0;
+ unsigned long multiple;
+
+ /* Count up element sizes, rounding up string length. */
+ STAILQ_FOREACH(dv, &bc_data->datahead, link) {
+ switch (dv->type) {
+ case DV_EMPTY:
+ len = 0;
+ break;
+ case DV_VALUE:
+ len = dv->data.val.size/8;
+ break;
+ case DV_RAW:
+ len = dv->data.raw.len;
+ break;
+ case DV_ULEB128:
+ case DV_SLEB128:
+ intn = yasm_expr_get_intnum(&dv->data.val.abs, 0);
+ if (!intn)
+ yasm_internal_error(N_("non-constant in data_tobytes"));
+ len = yasm_intnum_size_leb128(intn, dv->type == DV_SLEB128);
+ break;
+ case DV_RESERVE:
+ len = dv->data.val.size/8;
+ break;
+ }
+
+ if (!yasm_dv_get_multiple(dv, &multiple))
+ len *= multiple;
+
+ bc->len += len;
+ }
+
+ return 0;
+}
+
+static int
+bc_data_tobytes(yasm_bytecode *bc, unsigned char **bufp,
+ unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ /*@unused@*/ yasm_output_reloc_func output_reloc)
+{
+ bytecode_data *bc_data = (bytecode_data *)bc->contents;
+ yasm_dataval *dv;
+ yasm_intnum *intn;
+ unsigned int val_len;
+ unsigned long multiple, i;
+
+ STAILQ_FOREACH(dv, &bc_data->datahead, link) {
+ if (yasm_dv_get_multiple(dv, &multiple) || multiple == 0)
+ continue;
+ switch (dv->type) {
+ case DV_EMPTY:
+ break;
+ case DV_VALUE:
+ val_len = dv->data.val.size/8;
+ for (i=0; i<multiple; i++) {
+ if (output_value(&dv->data.val, *bufp, val_len,
+ (unsigned long)(*bufp-bufstart), bc, 1,
+ d))
+ return 1;
+ *bufp += val_len;
+ }
+ break;
+ case DV_RAW:
+ for (i=0; i<multiple; i++) {
+ memcpy(*bufp, dv->data.raw.contents, dv->data.raw.len);
+ *bufp += dv->data.raw.len;
+ }
+ break;
+ case DV_ULEB128:
+ case DV_SLEB128:
+ intn = yasm_expr_get_intnum(&dv->data.val.abs, 234);
+ if (!intn)
+ yasm_internal_error(N_("non-constant in data_tobytes"));
+ for (i=0; i<multiple; i++) {
+ *bufp +=
+ yasm_intnum_get_leb128(intn, *bufp,
+ dv->type == DV_SLEB128);
+ }
+ case DV_RESERVE:
+ val_len = dv->data.val.size/8;
+ for (i=0; i<multiple; i++) {
+ memset(*bufp, 0, val_len);
+ *bufp += val_len;
+ }
+ break;
+ }
+ }
+
+ return 0;
+}
+
+yasm_bytecode *
+yasm_bc_create_data(yasm_datavalhead *datahead, unsigned int size,
+ int append_zero, yasm_arch *arch, unsigned long line)
+{
+ bytecode_data *data = yasm_xmalloc(sizeof(bytecode_data));
+ yasm_bytecode *bc = yasm_bc_create_common(&bc_data_callback, data, line);
+ yasm_dataval *dv, *dv2, *dvo;
+ yasm_intnum *intn;
+ unsigned long len = 0, rlen, i;
+
+
+ yasm_dvs_initialize(&data->datahead);
+ data->item_size = size;
+
+ /* Prescan input data for length, etc. Careful: this needs to be
+ * precisely paired with the second loop.
+ */
+ STAILQ_FOREACH(dv, datahead, link) {
+ if (dv->multiple && dv->type != DV_EMPTY && len > 0) {
+ /* Flush previous data */
+ dvo = yasm_dv_create_raw(yasm_xmalloc(len), len);
+ STAILQ_INSERT_TAIL(&data->datahead, dvo, link);
+ len = 0;
+ }
+ switch (dv->type) {
+ case DV_EMPTY:
+ break;
+ case DV_VALUE:
+ case DV_ULEB128:
+ case DV_SLEB128:
+ intn = yasm_expr_get_intnum(&dv->data.val.abs, 0);
+ if (intn && dv->type == DV_VALUE && (arch || size == 1))
+ len += size;
+ else if (intn && dv->type == DV_ULEB128)
+ len += yasm_intnum_size_leb128(intn, 0);
+ else if (intn && dv->type == DV_SLEB128)
+ len += yasm_intnum_size_leb128(intn, 1);
+ else {
+ if (len > 0) {
+ /* Create bytecode for all previous len */
+ dvo = yasm_dv_create_raw(yasm_xmalloc(len), len);
+ STAILQ_INSERT_TAIL(&data->datahead, dvo, link);
+ len = 0;
+ }
+
+ /* Create bytecode for this value */
+ dvo = yasm_xmalloc(sizeof(yasm_dataval));
+ STAILQ_INSERT_TAIL(&data->datahead, dvo, link);
+ dvo->multiple = dv->multiple;
+ }
+ break;
+ case DV_RAW:
+ rlen = dv->data.raw.len;
+ /* find count, rounding up to nearest multiple of size */
+ rlen = (rlen + size - 1) / size;
+ len += rlen*size;
+ break;
+ case DV_RESERVE:
+ len += size;
+ break;
+ }
+
+ if (dv->multiple && dv->type != DV_EMPTY && len > 0) {
+ /* Flush this data */
+ dvo = yasm_dv_create_raw(yasm_xmalloc(len), len);
+ STAILQ_INSERT_TAIL(&data->datahead, dvo, link);
+ dvo->multiple = dv->multiple;
+ len = 0;
+ }
+
+ if (append_zero)
+ len++;
+ }
+
+ /* Create final dataval for any trailing length */
+ if (len > 0) {
+ dvo = yasm_dv_create_raw(yasm_xmalloc(len), len);
+ STAILQ_INSERT_TAIL(&data->datahead, dvo, link);
+ }
+
+ /* Second iteration: copy data and delete input datavals. */
+ dv = STAILQ_FIRST(datahead);
+ dvo = STAILQ_FIRST(&data->datahead);
+ len = 0;
+ while (dv && dvo) {
+ if (dv->multiple && dv->type != DV_EMPTY && len > 0) {
+ dvo = STAILQ_NEXT(dvo, link);
+ len = 0;
+ }
+ switch (dv->type) {
+ case DV_EMPTY:
+ break;
+ case DV_VALUE:
+ case DV_ULEB128:
+ case DV_SLEB128:
+ intn = yasm_expr_get_intnum(&dv->data.val.abs, 0);
+ if (intn && dv->type == DV_VALUE && (arch || size == 1)) {
+ if (size == 1)
+ yasm_intnum_get_sized(intn,
+ &dvo->data.raw.contents[len],
+ 1, 8, 0, 0, 1);
+ else
+ yasm_arch_intnum_tobytes(arch, intn,
+ &dvo->data.raw.contents[len],
+ size, size*8, 0, bc, 1);
+ yasm_value_delete(&dv->data.val);
+ len += size;
+ } else if (intn && dv->type == DV_ULEB128) {
+ len += yasm_intnum_get_leb128(intn,
+ &dvo->data.raw.contents[len],
+ 0);
+ yasm_value_delete(&dv->data.val);
+ } else if (intn && dv->type == DV_SLEB128) {
+ len += yasm_intnum_get_leb128(intn,
+ &dvo->data.raw.contents[len],
+ 1);
+ yasm_value_delete(&dv->data.val);
+ } else {
+ if (len > 0)
+ dvo = STAILQ_NEXT(dvo, link);
+ dvo->type = dv->type;
+ dvo->data.val = dv->data.val; /* structure copy */
+ dvo->data.val.size = size*8; /* remember size */
+ dvo = STAILQ_NEXT(dvo, link);
+ len = 0;
+ }
+ break;
+ case DV_RAW:
+ rlen = dv->data.raw.len;
+ memcpy(&dvo->data.raw.contents[len], dv->data.raw.contents,
+ rlen);
+ yasm_xfree(dv->data.raw.contents);
+ len += rlen;
+ /* pad with 0's to nearest multiple of size */
+ rlen %= size;
+ if (rlen > 0) {
+ rlen = size-rlen;
+ for (i=0; i<rlen; i++)
+ dvo->data.raw.contents[len++] = 0;
+ }
+ break;
+ case DV_RESERVE:
+ memset(&dvo->data.raw.contents[len], 0, size);
+ len += size;
+ break;
+ }
+
+ if (dv->multiple && dv->type != DV_EMPTY && len > 0) {
+ dvo = STAILQ_NEXT(dvo, link);
+ len = 0;
+ }
+
+ if (append_zero)
+ dvo->data.raw.contents[len++] = 0;
+ dv2 = STAILQ_NEXT(dv, link);
+ yasm_xfree(dv);
+ dv = dv2;
+ }
+
+ return bc;
+}
+
+yasm_bytecode *
+yasm_bc_create_leb128(yasm_datavalhead *datahead, int sign, unsigned long line)
+{
+ yasm_dataval *dv;
+
+ /* Convert all values into LEB type, error on strings/raws */
+ STAILQ_FOREACH(dv, datahead, link) {
+ switch (dv->type) {
+ case DV_VALUE:
+ dv->type = sign ? DV_SLEB128 : DV_ULEB128;
+ break;
+ case DV_RAW:
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("LEB128 does not allow string constants"));
+ break;
+ default:
+ break;
+ }
+ }
+
+ return yasm_bc_create_data(datahead, 0, 0, 0, line);
+}
+
+yasm_dataval *
+yasm_dv_create_expr(yasm_expr *e)
+{
+ yasm_dataval *retval = yasm_xmalloc(sizeof(yasm_dataval));
+
+ retval->type = DV_VALUE;
+ yasm_value_initialize(&retval->data.val, e, 0);
+ retval->multiple = NULL;
+
+ return retval;
+}
+
+yasm_dataval *
+yasm_dv_create_raw(unsigned char *contents, unsigned long len)
+{
+ yasm_dataval *retval = yasm_xmalloc(sizeof(yasm_dataval));
+
+ retval->type = DV_RAW;
+ retval->data.raw.contents = contents;
+ retval->data.raw.len = len;
+ retval->multiple = NULL;
+
+ return retval;
+}
+
+yasm_dataval *
+yasm_dv_create_reserve(void)
+{
+ yasm_dataval *retval = yasm_xmalloc(sizeof(yasm_dataval));
+
+ retval->type = DV_RESERVE;
+ retval->multiple = NULL;
+
+ return retval;
+}
+
+yasm_value *
+yasm_dv_get_value(yasm_dataval *dv)
+{
+ if (dv->type != DV_VALUE)
+ return NULL;
+ return &dv->data.val;
+}
+
+void
+yasm_dv_set_multiple(yasm_dataval *dv, yasm_expr *e)
+{
+ if (dv->multiple)
+ dv->multiple = yasm_expr_create_tree( dv->multiple, YASM_EXPR_MUL, e,
+ e->line);
+ else
+ dv->multiple = e;
+}
+
+int
+yasm_dv_get_multiple(yasm_dataval *dv, unsigned long *multiple)
+{
+ /*@dependent@*/ /*@null@*/ const yasm_intnum *num;
+
+ *multiple = 1;
+ if (dv->multiple) {
+ num = yasm_expr_get_intnum(&dv->multiple, 0);
+ if (!num) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("could not determine multiple"));
+ return 1;
+ }
+ if (yasm_intnum_sign(num) < 0) {
+ yasm_error_set(YASM_ERROR_VALUE, N_("multiple is negative"));
+ return 1;
+ }
+ *multiple = yasm_intnum_get_uint(num);
+ }
+ return 0;
+}
+
+void
+yasm_dvs_delete(yasm_datavalhead *headp)
+{
+ yasm_dataval *cur, *next;
+
+ cur = STAILQ_FIRST(headp);
+ while (cur) {
+ next = STAILQ_NEXT(cur, link);
+ switch (cur->type) {
+ case DV_VALUE:
+ yasm_value_delete(&cur->data.val);
+ break;
+ case DV_RAW:
+ yasm_xfree(cur->data.raw.contents);
+ break;
+ default:
+ break;
+ }
+ if (cur->multiple)
+ yasm_expr_destroy(cur->multiple);
+ yasm_xfree(cur);
+ cur = next;
+ }
+ STAILQ_INIT(headp);
+}
+
+yasm_dataval *
+yasm_dvs_append(yasm_datavalhead *headp, yasm_dataval *dv)
+{
+ if (dv) {
+ STAILQ_INSERT_TAIL(headp, dv, link);
+ return dv;
+ }
+ return (yasm_dataval *)NULL;
+}
+
+void
+yasm_dvs_print(const yasm_datavalhead *head, FILE *f, int indent_level)
+{
+ yasm_dataval *cur;
+ unsigned long i;
+
+ STAILQ_FOREACH(cur, head, link) {
+ fprintf(f, "%*sMultiple=", indent_level, "");
+ if (!cur->multiple)
+ fprintf(f, "nil (1)");
+ else
+ yasm_expr_print(cur->multiple, f);
+ switch (cur->type) {
+ case DV_EMPTY:
+ fprintf(f, "%*sEmpty\n", indent_level, "");
+ break;
+ case DV_VALUE:
+ fprintf(f, "%*sValue:\n", indent_level, "");
+ yasm_value_print(&cur->data.val, f, indent_level+1);
+ break;
+ case DV_RAW:
+ fprintf(f, "%*sLength=%lu\n", indent_level, "",
+ cur->data.raw.len);
+ fprintf(f, "%*sBytes=[", indent_level, "");
+ for (i=0; i<cur->data.raw.len; i++)
+ fprintf(f, "0x%02x, ", cur->data.raw.contents[i]);
+ fprintf(f, "]\n");
+ break;
+ case DV_ULEB128:
+ fprintf(f, "%*sULEB128 value:\n", indent_level, "");
+ yasm_value_print(&cur->data.val, f, indent_level+1);
+ break;
+ case DV_SLEB128:
+ fprintf(f, "%*sSLEB128 value:\n", indent_level, "");
+ yasm_value_print(&cur->data.val, f, indent_level+1);
+ break;
+ case DV_RESERVE:
+ fprintf(f, "%*sReserved\n", indent_level, "");
+ break;
+ }
+ }
+}
diff --git a/contrib/tools/yasm/libyasm/bc-incbin.c b/contrib/tools/yasm/libyasm/bc-incbin.c
index efa098dad7..a8fec7d6ce 100644
--- a/contrib/tools/yasm/libyasm/bc-incbin.c
+++ b/contrib/tools/yasm/libyasm/bc-incbin.c
@@ -1,265 +1,265 @@
-/*
- * Incbin bytecode
- *
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include "util.h"
-
-#include "libyasm-stdint.h"
-#include "coretype.h"
-
-#include "linemap.h"
-
-#include "errwarn.h"
-#include "intnum.h"
-#include "expr.h"
-#include "value.h"
-
-#include "bytecode.h"
-
-#include "file.h"
-
-
-typedef struct bytecode_incbin {
- /*@only@*/ char *filename; /* file to include data from */
- const char *from; /* filename of what contained incbin */
-
- /* starting offset to read from (NULL=0) */
- /*@only@*/ /*@null@*/ yasm_expr *start;
-
- /* maximum number of bytes to read (NULL=no limit) */
- /*@only@*/ /*@null@*/ yasm_expr *maxlen;
-} bytecode_incbin;
-
-static void bc_incbin_destroy(void *contents);
-static void bc_incbin_print(const void *contents, FILE *f, int indent_level);
-static void bc_incbin_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc);
-static int bc_incbin_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
- void *add_span_data);
-static int bc_incbin_tobytes(yasm_bytecode *bc, unsigned char **bufp,
- unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- /*@null@*/ yasm_output_reloc_func output_reloc);
-
-static const yasm_bytecode_callback bc_incbin_callback = {
- bc_incbin_destroy,
- bc_incbin_print,
- bc_incbin_finalize,
- NULL,
- bc_incbin_calc_len,
- yasm_bc_expand_common,
- bc_incbin_tobytes,
- 0
-};
-
-
-static void
-bc_incbin_destroy(void *contents)
-{
- bytecode_incbin *incbin = (bytecode_incbin *)contents;
- yasm_xfree(incbin->filename);
- yasm_expr_destroy(incbin->start);
- yasm_expr_destroy(incbin->maxlen);
- yasm_xfree(contents);
-}
-
-static void
-bc_incbin_print(const void *contents, FILE *f, int indent_level)
-{
- const bytecode_incbin *incbin = (const bytecode_incbin *)contents;
- fprintf(f, "%*s_IncBin_\n", indent_level, "");
- fprintf(f, "%*sFilename=`%s'\n", indent_level, "",
- incbin->filename);
- fprintf(f, "%*sStart=", indent_level, "");
- if (!incbin->start)
- fprintf(f, "nil (0)");
- else
- yasm_expr_print(incbin->start, f);
- fprintf(f, "%*sMax Len=", indent_level, "");
- if (!incbin->maxlen)
- fprintf(f, "nil (unlimited)");
- else
- yasm_expr_print(incbin->maxlen, f);
- fprintf(f, "\n");
-}
-
-static void
-bc_incbin_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc)
-{
- bytecode_incbin *incbin = (bytecode_incbin *)bc->contents;
- yasm_value val;
-
- if (yasm_value_finalize_expr(&val, incbin->start, prev_bc, 0))
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("start expression too complex"));
- else if (val.rel)
- yasm_error_set(YASM_ERROR_NOT_ABSOLUTE,
- N_("start expression not absolute"));
- incbin->start = val.abs;
-
- if (yasm_value_finalize_expr(&val, incbin->maxlen, prev_bc, 0))
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("maximum length expression too complex"));
- else if (val.rel)
- yasm_error_set(YASM_ERROR_NOT_ABSOLUTE,
- N_("maximum length expression not absolute"));
- incbin->maxlen = val.abs;
-}
-
-static int
-bc_incbin_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
- void *add_span_data)
-{
- bytecode_incbin *incbin = (bytecode_incbin *)bc->contents;
- FILE *f;
- /*@dependent@*/ /*@null@*/ const yasm_intnum *num;
- unsigned long start = 0, maxlen = 0xFFFFFFFFUL, flen;
-
- /* Try to convert start to integer value */
- if (incbin->start) {
- num = yasm_expr_get_intnum(&incbin->start, 0);
- if (num)
- start = yasm_intnum_get_uint(num);
- if (!num) {
- /* FIXME */
- yasm_error_set(YASM_ERROR_NOT_IMPLEMENTED,
- N_("incbin does not yet understand non-constant"));
- return -1;
- }
- }
-
- /* Try to convert maxlen to integer value */
- if (incbin->maxlen) {
- num = yasm_expr_get_intnum(&incbin->maxlen, 0);
- if (num)
- maxlen = yasm_intnum_get_uint(num);
- if (!num) {
- /* FIXME */
- yasm_error_set(YASM_ERROR_NOT_IMPLEMENTED,
- N_("incbin does not yet understand non-constant"));
- return -1;
- }
- }
-
- /* Open file and determine its length */
- f = yasm_fopen_include(incbin->filename, incbin->from, "rb", NULL);
- if (!f) {
- yasm_error_set(YASM_ERROR_IO,
- N_("`incbin': unable to open file `%s'"),
- incbin->filename);
- return -1;
- }
- if (fseek(f, 0L, SEEK_END) < 0) {
- yasm_error_set(YASM_ERROR_IO,
- N_("`incbin': unable to seek on file `%s'"),
- incbin->filename);
- return -1;
- }
- flen = (unsigned long)ftell(f);
- fclose(f);
-
- /* Compute length of incbin from start, maxlen, and len */
- if (start > flen) {
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("`incbin': start past end of file `%s'"),
- incbin->filename);
- start = flen;
- }
- flen -= start;
- if (incbin->maxlen)
- if (maxlen < flen)
- flen = maxlen;
- bc->len += flen;
- return 0;
-}
-
-static int
-bc_incbin_tobytes(yasm_bytecode *bc, unsigned char **bufp,
- unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- /*@unused@*/ yasm_output_reloc_func output_reloc)
-{
- bytecode_incbin *incbin = (bytecode_incbin *)bc->contents;
- FILE *f;
- /*@dependent@*/ /*@null@*/ const yasm_intnum *num;
- unsigned long start = 0;
-
- /* Convert start to integer value */
- if (incbin->start) {
- num = yasm_expr_get_intnum(&incbin->start, 0);
- if (!num)
- yasm_internal_error(
- N_("could not determine start in bc_tobytes_incbin"));
- start = yasm_intnum_get_uint(num);
- }
-
- /* Open file */
- f = yasm_fopen_include(incbin->filename, incbin->from, "rb", NULL);
- if (!f) {
- yasm_error_set(YASM_ERROR_IO, N_("`incbin': unable to open file `%s'"),
- incbin->filename);
- return 1;
- }
-
- /* Seek to start of data */
- if (fseek(f, (long)start, SEEK_SET) < 0) {
- yasm_error_set(YASM_ERROR_IO,
- N_("`incbin': unable to seek on file `%s'"),
- incbin->filename);
- fclose(f);
- return 1;
- }
-
- /* Read len bytes */
- if (fread(*bufp, 1, (size_t)bc->len, f) < (size_t)bc->len) {
- yasm_error_set(YASM_ERROR_IO,
- N_("`incbin': unable to read %lu bytes from file `%s'"),
- bc->len, incbin->filename);
- fclose(f);
- return 1;
- }
-
- *bufp += bc->len;
- fclose(f);
- return 0;
-}
-
-yasm_bytecode *
-yasm_bc_create_incbin(char *filename, yasm_expr *start, yasm_expr *maxlen,
- yasm_linemap *linemap, unsigned long line)
-{
- bytecode_incbin *incbin = yasm_xmalloc(sizeof(bytecode_incbin));
- unsigned long xline;
-
- /* Find from filename based on line number */
- yasm_linemap_lookup(linemap, line, &incbin->from, &xline);
-
- /*@-mustfree@*/
- incbin->filename = filename;
- incbin->start = start;
- incbin->maxlen = maxlen;
- /*@=mustfree@*/
-
- return yasm_bc_create_common(&bc_incbin_callback, incbin, line);
-}
+/*
+ * Incbin bytecode
+ *
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "util.h"
+
+#include "libyasm-stdint.h"
+#include "coretype.h"
+
+#include "linemap.h"
+
+#include "errwarn.h"
+#include "intnum.h"
+#include "expr.h"
+#include "value.h"
+
+#include "bytecode.h"
+
+#include "file.h"
+
+
+typedef struct bytecode_incbin {
+ /*@only@*/ char *filename; /* file to include data from */
+ const char *from; /* filename of what contained incbin */
+
+ /* starting offset to read from (NULL=0) */
+ /*@only@*/ /*@null@*/ yasm_expr *start;
+
+ /* maximum number of bytes to read (NULL=no limit) */
+ /*@only@*/ /*@null@*/ yasm_expr *maxlen;
+} bytecode_incbin;
+
+static void bc_incbin_destroy(void *contents);
+static void bc_incbin_print(const void *contents, FILE *f, int indent_level);
+static void bc_incbin_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc);
+static int bc_incbin_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
+ void *add_span_data);
+static int bc_incbin_tobytes(yasm_bytecode *bc, unsigned char **bufp,
+ unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ /*@null@*/ yasm_output_reloc_func output_reloc);
+
+static const yasm_bytecode_callback bc_incbin_callback = {
+ bc_incbin_destroy,
+ bc_incbin_print,
+ bc_incbin_finalize,
+ NULL,
+ bc_incbin_calc_len,
+ yasm_bc_expand_common,
+ bc_incbin_tobytes,
+ 0
+};
+
+
+static void
+bc_incbin_destroy(void *contents)
+{
+ bytecode_incbin *incbin = (bytecode_incbin *)contents;
+ yasm_xfree(incbin->filename);
+ yasm_expr_destroy(incbin->start);
+ yasm_expr_destroy(incbin->maxlen);
+ yasm_xfree(contents);
+}
+
+static void
+bc_incbin_print(const void *contents, FILE *f, int indent_level)
+{
+ const bytecode_incbin *incbin = (const bytecode_incbin *)contents;
+ fprintf(f, "%*s_IncBin_\n", indent_level, "");
+ fprintf(f, "%*sFilename=`%s'\n", indent_level, "",
+ incbin->filename);
+ fprintf(f, "%*sStart=", indent_level, "");
+ if (!incbin->start)
+ fprintf(f, "nil (0)");
+ else
+ yasm_expr_print(incbin->start, f);
+ fprintf(f, "%*sMax Len=", indent_level, "");
+ if (!incbin->maxlen)
+ fprintf(f, "nil (unlimited)");
+ else
+ yasm_expr_print(incbin->maxlen, f);
+ fprintf(f, "\n");
+}
+
+static void
+bc_incbin_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc)
+{
+ bytecode_incbin *incbin = (bytecode_incbin *)bc->contents;
+ yasm_value val;
+
+ if (yasm_value_finalize_expr(&val, incbin->start, prev_bc, 0))
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("start expression too complex"));
+ else if (val.rel)
+ yasm_error_set(YASM_ERROR_NOT_ABSOLUTE,
+ N_("start expression not absolute"));
+ incbin->start = val.abs;
+
+ if (yasm_value_finalize_expr(&val, incbin->maxlen, prev_bc, 0))
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("maximum length expression too complex"));
+ else if (val.rel)
+ yasm_error_set(YASM_ERROR_NOT_ABSOLUTE,
+ N_("maximum length expression not absolute"));
+ incbin->maxlen = val.abs;
+}
+
+static int
+bc_incbin_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
+ void *add_span_data)
+{
+ bytecode_incbin *incbin = (bytecode_incbin *)bc->contents;
+ FILE *f;
+ /*@dependent@*/ /*@null@*/ const yasm_intnum *num;
+ unsigned long start = 0, maxlen = 0xFFFFFFFFUL, flen;
+
+ /* Try to convert start to integer value */
+ if (incbin->start) {
+ num = yasm_expr_get_intnum(&incbin->start, 0);
+ if (num)
+ start = yasm_intnum_get_uint(num);
+ if (!num) {
+ /* FIXME */
+ yasm_error_set(YASM_ERROR_NOT_IMPLEMENTED,
+ N_("incbin does not yet understand non-constant"));
+ return -1;
+ }
+ }
+
+ /* Try to convert maxlen to integer value */
+ if (incbin->maxlen) {
+ num = yasm_expr_get_intnum(&incbin->maxlen, 0);
+ if (num)
+ maxlen = yasm_intnum_get_uint(num);
+ if (!num) {
+ /* FIXME */
+ yasm_error_set(YASM_ERROR_NOT_IMPLEMENTED,
+ N_("incbin does not yet understand non-constant"));
+ return -1;
+ }
+ }
+
+ /* Open file and determine its length */
+ f = yasm_fopen_include(incbin->filename, incbin->from, "rb", NULL);
+ if (!f) {
+ yasm_error_set(YASM_ERROR_IO,
+ N_("`incbin': unable to open file `%s'"),
+ incbin->filename);
+ return -1;
+ }
+ if (fseek(f, 0L, SEEK_END) < 0) {
+ yasm_error_set(YASM_ERROR_IO,
+ N_("`incbin': unable to seek on file `%s'"),
+ incbin->filename);
+ return -1;
+ }
+ flen = (unsigned long)ftell(f);
+ fclose(f);
+
+ /* Compute length of incbin from start, maxlen, and len */
+ if (start > flen) {
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("`incbin': start past end of file `%s'"),
+ incbin->filename);
+ start = flen;
+ }
+ flen -= start;
+ if (incbin->maxlen)
+ if (maxlen < flen)
+ flen = maxlen;
+ bc->len += flen;
+ return 0;
+}
+
+static int
+bc_incbin_tobytes(yasm_bytecode *bc, unsigned char **bufp,
+ unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ /*@unused@*/ yasm_output_reloc_func output_reloc)
+{
+ bytecode_incbin *incbin = (bytecode_incbin *)bc->contents;
+ FILE *f;
+ /*@dependent@*/ /*@null@*/ const yasm_intnum *num;
+ unsigned long start = 0;
+
+ /* Convert start to integer value */
+ if (incbin->start) {
+ num = yasm_expr_get_intnum(&incbin->start, 0);
+ if (!num)
+ yasm_internal_error(
+ N_("could not determine start in bc_tobytes_incbin"));
+ start = yasm_intnum_get_uint(num);
+ }
+
+ /* Open file */
+ f = yasm_fopen_include(incbin->filename, incbin->from, "rb", NULL);
+ if (!f) {
+ yasm_error_set(YASM_ERROR_IO, N_("`incbin': unable to open file `%s'"),
+ incbin->filename);
+ return 1;
+ }
+
+ /* Seek to start of data */
+ if (fseek(f, (long)start, SEEK_SET) < 0) {
+ yasm_error_set(YASM_ERROR_IO,
+ N_("`incbin': unable to seek on file `%s'"),
+ incbin->filename);
+ fclose(f);
+ return 1;
+ }
+
+ /* Read len bytes */
+ if (fread(*bufp, 1, (size_t)bc->len, f) < (size_t)bc->len) {
+ yasm_error_set(YASM_ERROR_IO,
+ N_("`incbin': unable to read %lu bytes from file `%s'"),
+ bc->len, incbin->filename);
+ fclose(f);
+ return 1;
+ }
+
+ *bufp += bc->len;
+ fclose(f);
+ return 0;
+}
+
+yasm_bytecode *
+yasm_bc_create_incbin(char *filename, yasm_expr *start, yasm_expr *maxlen,
+ yasm_linemap *linemap, unsigned long line)
+{
+ bytecode_incbin *incbin = yasm_xmalloc(sizeof(bytecode_incbin));
+ unsigned long xline;
+
+ /* Find from filename based on line number */
+ yasm_linemap_lookup(linemap, line, &incbin->from, &xline);
+
+ /*@-mustfree@*/
+ incbin->filename = filename;
+ incbin->start = start;
+ incbin->maxlen = maxlen;
+ /*@=mustfree@*/
+
+ return yasm_bc_create_common(&bc_incbin_callback, incbin, line);
+}
diff --git a/contrib/tools/yasm/libyasm/bc-org.c b/contrib/tools/yasm/libyasm/bc-org.c
index 36dc255343..7ef96c8412 100644
--- a/contrib/tools/yasm/libyasm/bc-org.c
+++ b/contrib/tools/yasm/libyasm/bc-org.c
@@ -1,152 +1,152 @@
-/*
- * ORG bytecode
- *
- * Copyright (C) 2005-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include "util.h"
-
-#include "libyasm-stdint.h"
-#include "coretype.h"
-#include "file.h"
-
-#include "errwarn.h"
-#include "intnum.h"
-#include "expr.h"
-#include "value.h"
-
-#include "bytecode.h"
-
-
-typedef struct bytecode_org {
- unsigned long start; /* target starting offset within section */
- unsigned long fill; /* fill value */
-} bytecode_org;
-
-static void bc_org_destroy(void *contents);
-static void bc_org_print(const void *contents, FILE *f, int indent_level);
-static void bc_org_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc);
-static int bc_org_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
- void *add_span_data);
-static int bc_org_expand(yasm_bytecode *bc, int span, long old_val,
- long new_val, /*@out@*/ long *neg_thres,
- /*@out@*/ long *pos_thres);
-static int bc_org_tobytes(yasm_bytecode *bc, unsigned char **bufp,
- unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- /*@null@*/ yasm_output_reloc_func output_reloc);
-
-static const yasm_bytecode_callback bc_org_callback = {
- bc_org_destroy,
- bc_org_print,
- bc_org_finalize,
- NULL,
- bc_org_calc_len,
- bc_org_expand,
- bc_org_tobytes,
- YASM_BC_SPECIAL_OFFSET
-};
-
-
-static void
-bc_org_destroy(void *contents)
-{
- yasm_xfree(contents);
-}
-
-static void
-bc_org_print(const void *contents, FILE *f, int indent_level)
-{
- const bytecode_org *org = (const bytecode_org *)contents;
- fprintf(f, "%*s_Org_\n", indent_level, "");
- fprintf(f, "%*sStart=%lu\n", indent_level, "", org->start);
-}
-
-static void
-bc_org_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc)
-{
-}
-
-static int
-bc_org_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
- void *add_span_data)
-{
- bytecode_org *org = (bytecode_org *)bc->contents;
- long neg_thres = 0;
- long pos_thres = org->start;
-
- if (bc_org_expand(bc, 0, 0, (long)bc->offset, &neg_thres, &pos_thres) < 0)
- return -1;
-
- return 0;
-}
-
-static int
-bc_org_expand(yasm_bytecode *bc, int span, long old_val, long new_val,
- /*@out@*/ long *neg_thres, /*@out@*/ long *pos_thres)
-{
- bytecode_org *org = (bytecode_org *)bc->contents;
-
- /* Check for overrun */
- if ((unsigned long)new_val > org->start) {
- yasm_error_set(YASM_ERROR_GENERAL,
- N_("ORG overlap with already existing data"));
- return -1;
- }
-
- /* Generate space to start offset */
- bc->len = org->start - new_val;
- return 1;
-}
-
-static int
-bc_org_tobytes(yasm_bytecode *bc, unsigned char **bufp,
- unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- /*@unused@*/ yasm_output_reloc_func output_reloc)
-{
- bytecode_org *org = (bytecode_org *)bc->contents;
- unsigned long len, i;
-
- /* Sanity check for overrun */
- if (bc->offset > org->start) {
- yasm_error_set(YASM_ERROR_GENERAL,
- N_("ORG overlap with already existing data"));
- return 1;
- }
- len = org->start - bc->offset;
- for (i=0; i<len; i++)
- YASM_WRITE_8(*bufp, org->fill); /* XXX: handle more than 8 bit? */
- return 0;
-}
-
-yasm_bytecode *
-yasm_bc_create_org(unsigned long start, unsigned long fill, unsigned long line)
-{
- bytecode_org *org = yasm_xmalloc(sizeof(bytecode_org));
-
- org->start = start;
- org->fill = fill;
-
- return yasm_bc_create_common(&bc_org_callback, org, line);
-}
+/*
+ * ORG bytecode
+ *
+ * Copyright (C) 2005-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "util.h"
+
+#include "libyasm-stdint.h"
+#include "coretype.h"
+#include "file.h"
+
+#include "errwarn.h"
+#include "intnum.h"
+#include "expr.h"
+#include "value.h"
+
+#include "bytecode.h"
+
+
+typedef struct bytecode_org {
+ unsigned long start; /* target starting offset within section */
+ unsigned long fill; /* fill value */
+} bytecode_org;
+
+static void bc_org_destroy(void *contents);
+static void bc_org_print(const void *contents, FILE *f, int indent_level);
+static void bc_org_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc);
+static int bc_org_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
+ void *add_span_data);
+static int bc_org_expand(yasm_bytecode *bc, int span, long old_val,
+ long new_val, /*@out@*/ long *neg_thres,
+ /*@out@*/ long *pos_thres);
+static int bc_org_tobytes(yasm_bytecode *bc, unsigned char **bufp,
+ unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ /*@null@*/ yasm_output_reloc_func output_reloc);
+
+static const yasm_bytecode_callback bc_org_callback = {
+ bc_org_destroy,
+ bc_org_print,
+ bc_org_finalize,
+ NULL,
+ bc_org_calc_len,
+ bc_org_expand,
+ bc_org_tobytes,
+ YASM_BC_SPECIAL_OFFSET
+};
+
+
+static void
+bc_org_destroy(void *contents)
+{
+ yasm_xfree(contents);
+}
+
+static void
+bc_org_print(const void *contents, FILE *f, int indent_level)
+{
+ const bytecode_org *org = (const bytecode_org *)contents;
+ fprintf(f, "%*s_Org_\n", indent_level, "");
+ fprintf(f, "%*sStart=%lu\n", indent_level, "", org->start);
+}
+
+static void
+bc_org_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc)
+{
+}
+
+static int
+bc_org_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
+ void *add_span_data)
+{
+ bytecode_org *org = (bytecode_org *)bc->contents;
+ long neg_thres = 0;
+ long pos_thres = org->start;
+
+ if (bc_org_expand(bc, 0, 0, (long)bc->offset, &neg_thres, &pos_thres) < 0)
+ return -1;
+
+ return 0;
+}
+
+static int
+bc_org_expand(yasm_bytecode *bc, int span, long old_val, long new_val,
+ /*@out@*/ long *neg_thres, /*@out@*/ long *pos_thres)
+{
+ bytecode_org *org = (bytecode_org *)bc->contents;
+
+ /* Check for overrun */
+ if ((unsigned long)new_val > org->start) {
+ yasm_error_set(YASM_ERROR_GENERAL,
+ N_("ORG overlap with already existing data"));
+ return -1;
+ }
+
+ /* Generate space to start offset */
+ bc->len = org->start - new_val;
+ return 1;
+}
+
+static int
+bc_org_tobytes(yasm_bytecode *bc, unsigned char **bufp,
+ unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ /*@unused@*/ yasm_output_reloc_func output_reloc)
+{
+ bytecode_org *org = (bytecode_org *)bc->contents;
+ unsigned long len, i;
+
+ /* Sanity check for overrun */
+ if (bc->offset > org->start) {
+ yasm_error_set(YASM_ERROR_GENERAL,
+ N_("ORG overlap with already existing data"));
+ return 1;
+ }
+ len = org->start - bc->offset;
+ for (i=0; i<len; i++)
+ YASM_WRITE_8(*bufp, org->fill); /* XXX: handle more than 8 bit? */
+ return 0;
+}
+
+yasm_bytecode *
+yasm_bc_create_org(unsigned long start, unsigned long fill, unsigned long line)
+{
+ bytecode_org *org = yasm_xmalloc(sizeof(bytecode_org));
+
+ org->start = start;
+ org->fill = fill;
+
+ return yasm_bc_create_common(&bc_org_callback, org, line);
+}
diff --git a/contrib/tools/yasm/libyasm/bc-reserve.c b/contrib/tools/yasm/libyasm/bc-reserve.c
index f687f1410f..197175b4e5 100644
--- a/contrib/tools/yasm/libyasm/bc-reserve.c
+++ b/contrib/tools/yasm/libyasm/bc-reserve.c
@@ -1,152 +1,152 @@
-/*
- * Bytecode utility functions
- *
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include "util.h"
-
-#include "libyasm-stdint.h"
-#include "coretype.h"
-
-#include "errwarn.h"
-#include "intnum.h"
-#include "expr.h"
-#include "value.h"
-
-#include "bytecode.h"
-
-
-typedef struct bytecode_reserve {
- /*@only@*/ /*@null@*/ yasm_expr *numitems; /* number of items to reserve */
- unsigned int itemsize; /* size of each item (in bytes) */
-} bytecode_reserve;
-
-static void bc_reserve_destroy(void *contents);
-static void bc_reserve_print(const void *contents, FILE *f, int indent_level);
-static void bc_reserve_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc);
-static int bc_reserve_elem_size(yasm_bytecode *bc);
-static int bc_reserve_calc_len(yasm_bytecode *bc,
- yasm_bc_add_span_func add_span,
- void *add_span_data);
-static int bc_reserve_tobytes(yasm_bytecode *bc, unsigned char **bufp,
- unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- /*@null@*/ yasm_output_reloc_func output_reloc);
-
-static const yasm_bytecode_callback bc_reserve_callback = {
- bc_reserve_destroy,
- bc_reserve_print,
- bc_reserve_finalize,
- bc_reserve_elem_size,
- bc_reserve_calc_len,
- yasm_bc_expand_common,
- bc_reserve_tobytes,
- YASM_BC_SPECIAL_RESERVE
-};
-
-
-static void
-bc_reserve_destroy(void *contents)
-{
- bytecode_reserve *reserve = (bytecode_reserve *)contents;
- yasm_expr_destroy(reserve->numitems);
- yasm_xfree(contents);
-}
-
-static void
-bc_reserve_print(const void *contents, FILE *f, int indent_level)
-{
- const bytecode_reserve *reserve = (const bytecode_reserve *)contents;
- fprintf(f, "%*s_Reserve_\n", indent_level, "");
- fprintf(f, "%*sNum Items=", indent_level, "");
- yasm_expr_print(reserve->numitems, f);
- fprintf(f, "\n%*sItem Size=%u\n", indent_level, "", reserve->itemsize);
-}
-
-static void
-bc_reserve_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc)
-{
- bytecode_reserve *reserve = (bytecode_reserve *)bc->contents;
- /* multiply reserve expression into multiple */
- if (!bc->multiple)
- bc->multiple = reserve->numitems;
- else
- bc->multiple = yasm_expr_create_tree(bc->multiple, YASM_EXPR_MUL,
- reserve->numitems, bc->line);
- reserve->numitems = NULL;
-}
-
-static int
-bc_reserve_elem_size(yasm_bytecode *bc)
-{
- bytecode_reserve *reserve = (bytecode_reserve *)bc->contents;
- return reserve->itemsize;
-}
-
-static int
-bc_reserve_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
- void *add_span_data)
-{
- bytecode_reserve *reserve = (bytecode_reserve *)bc->contents;
- bc->len += reserve->itemsize;
- return 0;
-}
-
-static int
-bc_reserve_tobytes(yasm_bytecode *bc, unsigned char **bufp,
- unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- /*@unused@*/ yasm_output_reloc_func output_reloc)
-{
- yasm_internal_error(N_("bc_reserve_tobytes called"));
- /*@notreached@*/
- return 1;
-}
-
-yasm_bytecode *
-yasm_bc_create_reserve(yasm_expr *numitems, unsigned int itemsize,
- unsigned long line)
-{
- bytecode_reserve *reserve = yasm_xmalloc(sizeof(bytecode_reserve));
-
- /*@-mustfree@*/
- reserve->numitems = numitems;
- /*@=mustfree@*/
- reserve->itemsize = itemsize;
-
- return yasm_bc_create_common(&bc_reserve_callback, reserve, line);
-}
-
-const yasm_expr *
-yasm_bc_reserve_numitems(yasm_bytecode *bc, unsigned int *itemsize)
-{
- bytecode_reserve *reserve;
-
- if (bc->callback != &bc_reserve_callback)
- return NULL;
-
- reserve = (bytecode_reserve *)bc->contents;
- *itemsize = reserve->itemsize;
- return reserve->numitems;
-}
+/*
+ * Bytecode utility functions
+ *
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "util.h"
+
+#include "libyasm-stdint.h"
+#include "coretype.h"
+
+#include "errwarn.h"
+#include "intnum.h"
+#include "expr.h"
+#include "value.h"
+
+#include "bytecode.h"
+
+
+typedef struct bytecode_reserve {
+ /*@only@*/ /*@null@*/ yasm_expr *numitems; /* number of items to reserve */
+ unsigned int itemsize; /* size of each item (in bytes) */
+} bytecode_reserve;
+
+static void bc_reserve_destroy(void *contents);
+static void bc_reserve_print(const void *contents, FILE *f, int indent_level);
+static void bc_reserve_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc);
+static int bc_reserve_elem_size(yasm_bytecode *bc);
+static int bc_reserve_calc_len(yasm_bytecode *bc,
+ yasm_bc_add_span_func add_span,
+ void *add_span_data);
+static int bc_reserve_tobytes(yasm_bytecode *bc, unsigned char **bufp,
+ unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ /*@null@*/ yasm_output_reloc_func output_reloc);
+
+static const yasm_bytecode_callback bc_reserve_callback = {
+ bc_reserve_destroy,
+ bc_reserve_print,
+ bc_reserve_finalize,
+ bc_reserve_elem_size,
+ bc_reserve_calc_len,
+ yasm_bc_expand_common,
+ bc_reserve_tobytes,
+ YASM_BC_SPECIAL_RESERVE
+};
+
+
+static void
+bc_reserve_destroy(void *contents)
+{
+ bytecode_reserve *reserve = (bytecode_reserve *)contents;
+ yasm_expr_destroy(reserve->numitems);
+ yasm_xfree(contents);
+}
+
+static void
+bc_reserve_print(const void *contents, FILE *f, int indent_level)
+{
+ const bytecode_reserve *reserve = (const bytecode_reserve *)contents;
+ fprintf(f, "%*s_Reserve_\n", indent_level, "");
+ fprintf(f, "%*sNum Items=", indent_level, "");
+ yasm_expr_print(reserve->numitems, f);
+ fprintf(f, "\n%*sItem Size=%u\n", indent_level, "", reserve->itemsize);
+}
+
+static void
+bc_reserve_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc)
+{
+ bytecode_reserve *reserve = (bytecode_reserve *)bc->contents;
+ /* multiply reserve expression into multiple */
+ if (!bc->multiple)
+ bc->multiple = reserve->numitems;
+ else
+ bc->multiple = yasm_expr_create_tree(bc->multiple, YASM_EXPR_MUL,
+ reserve->numitems, bc->line);
+ reserve->numitems = NULL;
+}
+
+static int
+bc_reserve_elem_size(yasm_bytecode *bc)
+{
+ bytecode_reserve *reserve = (bytecode_reserve *)bc->contents;
+ return reserve->itemsize;
+}
+
+static int
+bc_reserve_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
+ void *add_span_data)
+{
+ bytecode_reserve *reserve = (bytecode_reserve *)bc->contents;
+ bc->len += reserve->itemsize;
+ return 0;
+}
+
+static int
+bc_reserve_tobytes(yasm_bytecode *bc, unsigned char **bufp,
+ unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ /*@unused@*/ yasm_output_reloc_func output_reloc)
+{
+ yasm_internal_error(N_("bc_reserve_tobytes called"));
+ /*@notreached@*/
+ return 1;
+}
+
+yasm_bytecode *
+yasm_bc_create_reserve(yasm_expr *numitems, unsigned int itemsize,
+ unsigned long line)
+{
+ bytecode_reserve *reserve = yasm_xmalloc(sizeof(bytecode_reserve));
+
+ /*@-mustfree@*/
+ reserve->numitems = numitems;
+ /*@=mustfree@*/
+ reserve->itemsize = itemsize;
+
+ return yasm_bc_create_common(&bc_reserve_callback, reserve, line);
+}
+
+const yasm_expr *
+yasm_bc_reserve_numitems(yasm_bytecode *bc, unsigned int *itemsize)
+{
+ bytecode_reserve *reserve;
+
+ if (bc->callback != &bc_reserve_callback)
+ return NULL;
+
+ reserve = (bytecode_reserve *)bc->contents;
+ *itemsize = reserve->itemsize;
+ return reserve->numitems;
+}
diff --git a/contrib/tools/yasm/libyasm/bitvect.c b/contrib/tools/yasm/libyasm/bitvect.c
index b1d5bdae11..dfb08252b0 100644
--- a/contrib/tools/yasm/libyasm/bitvect.c
+++ b/contrib/tools/yasm/libyasm/bitvect.c
@@ -1,4045 +1,4045 @@
-#include "util.h"
-
-#include "coretype.h"
-
-/*****************************************************************************/
-/* MODULE NAME: BitVector.c MODULE TYPE: (adt) */
-/*****************************************************************************/
-/* MODULE IMPORTS: */
-/*****************************************************************************/
-#include <ctype.h> /* MODULE TYPE: (sys) */
-#include <limits.h> /* MODULE TYPE: (sys) */
-#include <string.h> /* MODULE TYPE: (sys) */
-/*****************************************************************************/
-/* MODULE INTERFACE: */
-/*****************************************************************************/
-#include "bitvect.h"
-
-/* ToolBox.h */
-#define and && /* logical (boolean) operators: lower case */
-#define or ||
-#define not !
-
-#define AND & /* binary (bitwise) operators: UPPER CASE */
-#define OR |
-#define XOR ^
-#define NOT ~
-#define SHL <<
-#define SHR >>
-
-#ifdef ENABLE_MODULO
-#define mod % /* arithmetic operators */
-#endif
-
-#define blockdef(name,size) unsigned char name[size]
-#define blocktypedef(name,size) typedef unsigned char name[size]
-
-/*****************************************************************************/
-/* MODULE RESOURCES: */
-/*****************************************************************************/
-
-#define bits_(BitVector) *(BitVector-3)
-#define size_(BitVector) *(BitVector-2)
-#define mask_(BitVector) *(BitVector-1)
-
-#define ERRCODE_TYPE "sizeof(word) > sizeof(size_t)"
-#define ERRCODE_BITS "bits(word) != sizeof(word)*8"
-#define ERRCODE_WORD "bits(word) < 16"
-#define ERRCODE_LONG "bits(word) > bits(long)"
-#define ERRCODE_POWR "bits(word) != 2^x"
-#define ERRCODE_LOGA "bits(word) != 2^ld(bits(word))"
-#define ERRCODE_NULL "unable to allocate memory"
-#define ERRCODE_INDX "index out of range"
-#define ERRCODE_ORDR "minimum > maximum index"
-#define ERRCODE_SIZE "bit vector size mismatch"
-#define ERRCODE_PARS "input string syntax error"
-#define ERRCODE_OVFL "numeric overflow error"
-#define ERRCODE_SAME "result vector(s) must be distinct"
-#define ERRCODE_EXPO "exponent must be positive"
-#define ERRCODE_ZERO "division by zero error"
-#define ERRCODE_OOPS "unexpected internal error - please contact author"
-
-const N_int BitVector_BYTENORM[256] =
-{
- 0x00, 0x01, 0x01, 0x02, 0x01, 0x02, 0x02, 0x03,
- 0x01, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04, /* 0x00 */
- 0x01, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04,
- 0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05, /* 0x10 */
- 0x01, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04,
- 0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05, /* 0x20 */
- 0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05,
- 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, /* 0x30 */
- 0x01, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04,
- 0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05, /* 0x40 */
- 0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05,
- 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, /* 0x50 */
- 0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05,
- 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, /* 0x60 */
- 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06,
- 0x04, 0x05, 0x05, 0x06, 0x05, 0x06, 0x06, 0x07, /* 0x70 */
- 0x01, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04,
- 0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05, /* 0x80 */
- 0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05,
- 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, /* 0x90 */
- 0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05,
- 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, /* 0xA0 */
- 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06,
- 0x04, 0x05, 0x05, 0x06, 0x05, 0x06, 0x06, 0x07, /* 0xB0 */
- 0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05,
- 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, /* 0xC0 */
- 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06,
- 0x04, 0x05, 0x05, 0x06, 0x05, 0x06, 0x06, 0x07, /* 0xD0 */
- 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06,
- 0x04, 0x05, 0x05, 0x06, 0x05, 0x06, 0x06, 0x07, /* 0xE0 */
- 0x04, 0x05, 0x05, 0x06, 0x05, 0x06, 0x06, 0x07,
- 0x05, 0x06, 0x06, 0x07, 0x06, 0x07, 0x07, 0x08 /* 0xF0 */
-};
-
-/*****************************************************************************/
-/* MODULE IMPLEMENTATION: */
-/*****************************************************************************/
-
- /**********************************************/
- /* global implementation-intrinsic constants: */
- /**********************************************/
-
-#define BIT_VECTOR_HIDDEN_WORDS 3
-
- /*****************************************************************/
- /* global machine-dependent constants (set by "BitVector_Boot"): */
- /*****************************************************************/
-
-static N_word BITS; /* = # of bits in machine word (must be power of 2) */
-static N_word MODMASK; /* = BITS - 1 (mask for calculating modulo BITS) */
-static N_word LOGBITS; /* = ld(BITS) (logarithmus dualis) */
-static N_word FACTOR; /* = ld(BITS / 8) (ld of # of bytes) */
-
-static N_word LSB = 1; /* = mask for least significant bit */
-static N_word MSB; /* = mask for most significant bit */
-
-static N_word LONGBITS; /* = # of bits in unsigned long */
-
-static N_word LOG10; /* = logarithm to base 10 of BITS - 1 */
-static N_word EXP10; /* = largest possible power of 10 in signed int */
-
- /********************************************************************/
- /* global bit mask table for fast access (set by "BitVector_Boot"): */
- /********************************************************************/
-
-static wordptr BITMASKTAB;
-
- /*****************************/
- /* global macro definitions: */
- /*****************************/
-
-#define BIT_VECTOR_ZERO_WORDS(target,count) \
- while (count-- > 0) *target++ = 0;
-
-#define BIT_VECTOR_FILL_WORDS(target,fill,count) \
- while (count-- > 0) *target++ = fill;
-
-#define BIT_VECTOR_FLIP_WORDS(target,flip,count) \
- while (count-- > 0) *target++ ^= flip;
-
-#define BIT_VECTOR_COPY_WORDS(target,source,count) \
- while (count-- > 0) *target++ = *source++;
-
-#define BIT_VECTOR_BACK_WORDS(target,source,count) \
- { target += count; source += count; while (count-- > 0) *--target = *--source; }
-
-#define BIT_VECTOR_CLR_BIT(address,index) \
- *(address+(index>>LOGBITS)) &= NOT BITMASKTAB[index AND MODMASK];
-
-#define BIT_VECTOR_SET_BIT(address,index) \
- *(address+(index>>LOGBITS)) |= BITMASKTAB[index AND MODMASK];
-
-#define BIT_VECTOR_TST_BIT(address,index) \
- ((*(address+(index>>LOGBITS)) AND BITMASKTAB[index AND MODMASK]) != 0)
-
-#define BIT_VECTOR_FLP_BIT(address,index,mask) \
- (mask = BITMASKTAB[index AND MODMASK]), \
- (((*(addr+(index>>LOGBITS)) ^= mask) AND mask) != 0)
-
-#define BIT_VECTOR_DIGITIZE(type,value,digit) \
- value = (type) ((digit = value) / 10); \
- digit -= value * 10; \
- digit += (type) '0';
-
- /*********************************************************/
- /* private low-level functions (potentially dangerous!): */
- /*********************************************************/
-
-static N_word power10(N_word x)
-{
- N_word y = 1;
-
- while (x-- > 0) y *= 10;
- return(y);
-}
-
-static void BIT_VECTOR_zro_words(wordptr addr, N_word count)
-{
- BIT_VECTOR_ZERO_WORDS(addr,count)
-}
-
-static void BIT_VECTOR_cpy_words(wordptr target, wordptr source, N_word count)
-{
- BIT_VECTOR_COPY_WORDS(target,source,count)
-}
-
-static void BIT_VECTOR_mov_words(wordptr target, wordptr source, N_word count)
-{
- if (target != source)
- {
- if (target < source) BIT_VECTOR_COPY_WORDS(target,source,count)
- else BIT_VECTOR_BACK_WORDS(target,source,count)
- }
-}
-
-static void BIT_VECTOR_ins_words(wordptr addr, N_word total, N_word count,
- boolean clear)
-{
- N_word length;
-
- if ((total > 0) and (count > 0))
- {
- if (count > total) count = total;
- length = total - count;
- if (length > 0) BIT_VECTOR_mov_words(addr+count,addr,length);
- if (clear) BIT_VECTOR_zro_words(addr,count);
- }
-}
-
-static void BIT_VECTOR_del_words(wordptr addr, N_word total, N_word count,
- boolean clear)
-{
- N_word length;
-
- if ((total > 0) and (count > 0))
- {
- if (count > total) count = total;
- length = total - count;
- if (length > 0) BIT_VECTOR_mov_words(addr,addr+count,length);
- if (clear) BIT_VECTOR_zro_words(addr+length,count);
- }
-}
-
-static void BIT_VECTOR_reverse(charptr string, N_word length)
-{
- charptr last;
- N_char temp;
-
- if (length > 1)
- {
- last = string + length - 1;
- while (string < last)
- {
- temp = *string;
- *string = *last;
- *last = temp;
- string++;
- last--;
- }
- }
-}
-
-static N_word BIT_VECTOR_int2str(charptr string, N_word value)
-{
- N_word length;
- N_word digit;
- charptr work;
-
- work = string;
- if (value > 0)
- {
- length = 0;
- while (value > 0)
- {
- BIT_VECTOR_DIGITIZE(N_word,value,digit)
- *work++ = (N_char) digit;
- length++;
- }
- BIT_VECTOR_reverse(string,length);
- }
- else
- {
- length = 1;
- *work++ = (N_char) '0';
- }
- return(length);
-}
-
-static N_word BIT_VECTOR_str2int(charptr string, N_word *value)
-{
- N_word length;
- N_word digit;
-
- *value = 0;
- length = 0;
- digit = (N_word) *string++;
- /* separate because isdigit() is likely a macro! */
- while (isdigit((int)digit) != 0)
- {
- length++;
- digit -= (N_word) '0';
- if (*value) *value *= 10;
- *value += digit;
- digit = (N_word) *string++;
- }
- return(length);
-}
-
- /********************************************/
- /* routine to convert error code to string: */
- /********************************************/
-
-const char * BitVector_Error(ErrCode error)
-{
- switch (error)
- {
- case ErrCode_Ok: return( NULL ); break;
- case ErrCode_Type: return( ERRCODE_TYPE ); break;
- case ErrCode_Bits: return( ERRCODE_BITS ); break;
- case ErrCode_Word: return( ERRCODE_WORD ); break;
- case ErrCode_Long: return( ERRCODE_LONG ); break;
- case ErrCode_Powr: return( ERRCODE_POWR ); break;
- case ErrCode_Loga: return( ERRCODE_LOGA ); break;
- case ErrCode_Null: return( ERRCODE_NULL ); break;
- case ErrCode_Indx: return( ERRCODE_INDX ); break;
- case ErrCode_Ordr: return( ERRCODE_ORDR ); break;
- case ErrCode_Size: return( ERRCODE_SIZE ); break;
- case ErrCode_Pars: return( ERRCODE_PARS ); break;
- case ErrCode_Ovfl: return( ERRCODE_OVFL ); break;
- case ErrCode_Same: return( ERRCODE_SAME ); break;
- case ErrCode_Expo: return( ERRCODE_EXPO ); break;
- case ErrCode_Zero: return( ERRCODE_ZERO ); break;
- default: return( ERRCODE_OOPS ); break;
- }
-}
-
- /*****************************************/
- /* automatic self-configuration routine: */
- /*****************************************/
-
- /*******************************************************/
- /* */
- /* MUST be called once prior to any other function */
- /* to initialize the machine dependent constants */
- /* of this package! (But call only ONCE, or you */
- /* will suffer memory leaks!) */
- /* */
- /*******************************************************/
-
-ErrCode BitVector_Boot(void)
-{
- N_long longsample = 1L;
- N_word sample = LSB;
- N_word lsb;
-
- if (sizeof(N_word) > sizeof(size_t)) return(ErrCode_Type);
-
- BITS = 1;
- while (sample <<= 1) BITS++; /* determine # of bits in a machine word */
-
- if (BITS != (sizeof(N_word) << 3)) return(ErrCode_Bits);
-
- if (BITS < 16) return(ErrCode_Word);
-
- LONGBITS = 1;
- while (longsample <<= 1) LONGBITS++; /* = # of bits in an unsigned long */
-
- if (BITS > LONGBITS) return(ErrCode_Long);
-
- LOGBITS = 0;
- sample = BITS;
- lsb = (sample AND LSB);
- while ((sample >>= 1) and (not lsb))
- {
- LOGBITS++;
- lsb = (sample AND LSB);
- }
-
- if (sample) return(ErrCode_Powr); /* # of bits is not a power of 2! */
-
- if (BITS != (LSB << LOGBITS)) return(ErrCode_Loga);
-
- MODMASK = BITS - 1;
- FACTOR = LOGBITS - 3; /* ld(BITS / 8) = ld(BITS) - ld(8) = ld(BITS) - 3 */
- MSB = (LSB << MODMASK);
-
- BITMASKTAB = (wordptr) yasm_xmalloc((size_t) (BITS << FACTOR));
-
- if (BITMASKTAB == NULL) return(ErrCode_Null);
-
- for ( sample = 0; sample < BITS; sample++ )
- {
- BITMASKTAB[sample] = (LSB << sample);
- }
-
- LOG10 = (N_word) (MODMASK * 0.30103); /* = (BITS - 1) * ( ln 2 / ln 10 ) */
- EXP10 = power10(LOG10);
-
- return(ErrCode_Ok);
-}
-
-void BitVector_Shutdown(void)
-{
- if (BITMASKTAB) yasm_xfree(BITMASKTAB);
-}
-
-N_word BitVector_Size(N_int bits) /* bit vector size (# of words) */
-{
- N_word size;
-
- size = bits >> LOGBITS;
- if (bits AND MODMASK) size++;
- return(size);
-}
-
-N_word BitVector_Mask(N_int bits) /* bit vector mask (unused bits) */
-{
- N_word mask;
-
- mask = bits AND MODMASK;
- if (mask) mask = (N_word) ~(~0L << mask); else mask = (N_word) ~0L;
- return(mask);
-}
-
-const char * BitVector_Version(void)
-{
- return("6.4");
-}
-
-N_int BitVector_Word_Bits(void)
-{
- return(BITS);
-}
-
-N_int BitVector_Long_Bits(void)
-{
- return(LONGBITS);
-}
-
-/********************************************************************/
-/* */
-/* WARNING: Do not "free()" constant character strings, i.e., */
-/* don't call "BitVector_Dispose()" for strings returned */
-/* by "BitVector_Error()" or "BitVector_Version()"! */
-/* */
-/* ONLY call this function for strings allocated with "malloc()", */
-/* i.e., the strings returned by the functions "BitVector_to_*()" */
-/* and "BitVector_Block_Read()"! */
-/* */
-/********************************************************************/
-
-void BitVector_Dispose(charptr string) /* free string */
-{
- if (string != NULL) yasm_xfree((voidptr) string);
-}
-
-void BitVector_Destroy(wordptr addr) /* free bitvec */
-{
- if (addr != NULL)
- {
- addr -= BIT_VECTOR_HIDDEN_WORDS;
- yasm_xfree((voidptr) addr);
- }
-}
-
-void BitVector_Destroy_List(listptr list, N_int count) /* free list */
-{
- listptr slot;
-
- if (list != NULL)
- {
- slot = list;
- while (count-- > 0)
- {
- BitVector_Destroy(*slot++);
- }
- free((voidptr) list);
- }
-}
-
-wordptr BitVector_Create(N_int bits, boolean clear) /* malloc */
-{
- N_word size;
- N_word mask;
- N_word bytes;
- wordptr addr;
- wordptr zero;
-
- size = BitVector_Size(bits);
- mask = BitVector_Mask(bits);
- bytes = (size + BIT_VECTOR_HIDDEN_WORDS) << FACTOR;
- addr = (wordptr) yasm_xmalloc((size_t) bytes);
- if (addr != NULL)
- {
- *addr++ = bits;
- *addr++ = size;
- *addr++ = mask;
- if (clear)
- {
- zero = addr;
- BIT_VECTOR_ZERO_WORDS(zero,size)
- }
- }
- return(addr);
-}
-
-listptr BitVector_Create_List(N_int bits, boolean clear, N_int count)
-{
- listptr list = NULL;
- listptr slot;
- wordptr addr;
- N_int i;
-
- if (count > 0)
- {
- list = (listptr) malloc(sizeof(wordptr) * count);
- if (list != NULL)
- {
- slot = list;
- for ( i = 0; i < count; i++ )
- {
- addr = BitVector_Create(bits,clear);
- if (addr == NULL)
- {
- BitVector_Destroy_List(list,i);
- return(NULL);
- }
- *slot++ = addr;
- }
- }
- }
- return(list);
-}
-
-wordptr BitVector_Resize(wordptr oldaddr, N_int bits) /* realloc */
-{
- N_word bytes;
- N_word oldsize;
- N_word oldmask;
- N_word newsize;
- N_word newmask;
- wordptr newaddr;
- wordptr source;
- wordptr target;
-
- oldsize = size_(oldaddr);
- oldmask = mask_(oldaddr);
- newsize = BitVector_Size(bits);
- newmask = BitVector_Mask(bits);
- if (oldsize > 0) *(oldaddr+oldsize-1) &= oldmask;
- if (newsize <= oldsize)
- {
- newaddr = oldaddr;
- bits_(newaddr) = bits;
- size_(newaddr) = newsize;
- mask_(newaddr) = newmask;
- if (newsize > 0) *(newaddr+newsize-1) &= newmask;
- }
- else
- {
- bytes = (newsize + BIT_VECTOR_HIDDEN_WORDS) << FACTOR;
- newaddr = (wordptr) yasm_xmalloc((size_t) bytes);
- if (newaddr != NULL)
- {
- *newaddr++ = bits;
- *newaddr++ = newsize;
- *newaddr++ = newmask;
- target = newaddr;
- source = oldaddr;
- newsize -= oldsize;
- BIT_VECTOR_COPY_WORDS(target,source,oldsize)
- BIT_VECTOR_ZERO_WORDS(target,newsize)
- }
- BitVector_Destroy(oldaddr);
- }
- return(newaddr);
-}
-
-wordptr BitVector_Shadow(wordptr addr) /* makes new, same size but empty */
-{
- return( BitVector_Create(bits_(addr),true) );
-}
-
-wordptr BitVector_Clone(wordptr addr) /* makes exact duplicate */
-{
- N_word bits;
- wordptr twin;
-
- bits = bits_(addr);
- twin = BitVector_Create(bits,false);
- if ((twin != NULL) and (bits > 0))
- BIT_VECTOR_cpy_words(twin,addr,size_(addr));
- return(twin);
-}
-
-wordptr BitVector_Concat(wordptr X, wordptr Y) /* returns concatenation */
-{
- /* BEWARE that X = most significant part, Y = least significant part! */
-
- N_word bitsX;
- N_word bitsY;
- N_word bitsZ;
- wordptr Z;
-
- bitsX = bits_(X);
- bitsY = bits_(Y);
- bitsZ = bitsX + bitsY;
- Z = BitVector_Create(bitsZ,false);
- if ((Z != NULL) and (bitsZ > 0))
- {
- BIT_VECTOR_cpy_words(Z,Y,size_(Y));
- BitVector_Interval_Copy(Z,X,bitsY,0,bitsX);
- *(Z+size_(Z)-1) &= mask_(Z);
- }
- return(Z);
-}
-
-void BitVector_Copy(wordptr X, wordptr Y) /* X = Y */
-{
- N_word sizeX = size_(X);
- N_word sizeY = size_(Y);
- N_word maskX = mask_(X);
- N_word maskY = mask_(Y);
- N_word fill = 0;
- wordptr lastX;
- wordptr lastY;
-
- if ((X != Y) and (sizeX > 0))
- {
- lastX = X + sizeX - 1;
- if (sizeY > 0)
- {
- lastY = Y + sizeY - 1;
- if ( (*lastY AND (maskY AND NOT (maskY >> 1))) == 0 ) *lastY &= maskY;
- else
- {
- fill = (N_word) ~0L;
- *lastY |= NOT maskY;
- }
- while ((sizeX > 0) and (sizeY > 0))
- {
- *X++ = *Y++;
- sizeX--;
- sizeY--;
- }
- *lastY &= maskY;
- }
- while (sizeX-- > 0) *X++ = fill;
- *lastX &= maskX;
- }
-}
-
-void BitVector_Empty(wordptr addr) /* X = {} clr all */
-{
- N_word size = size_(addr);
-
- BIT_VECTOR_ZERO_WORDS(addr,size)
-}
-
-void BitVector_Fill(wordptr addr) /* X = ~{} set all */
-{
- N_word size = size_(addr);
- N_word mask = mask_(addr);
- N_word fill = (N_word) ~0L;
-
- if (size > 0)
- {
- BIT_VECTOR_FILL_WORDS(addr,fill,size)
- *(--addr) &= mask;
- }
-}
-
-void BitVector_Flip(wordptr addr) /* X = ~X flip all */
-{
- N_word size = size_(addr);
- N_word mask = mask_(addr);
- N_word flip = (N_word) ~0L;
-
- if (size > 0)
- {
- BIT_VECTOR_FLIP_WORDS(addr,flip,size)
- *(--addr) &= mask;
- }
-}
-
-void BitVector_Primes(wordptr addr)
-{
- N_word bits = bits_(addr);
- N_word size = size_(addr);
- wordptr work;
- N_word temp;
- N_word i,j;
-
- if (size > 0)
- {
- temp = 0xAAAA;
- i = BITS >> 4;
- while (--i > 0)
- {
- temp <<= 16;
- temp |= 0xAAAA;
- }
- i = size;
- work = addr;
- *work++ = temp XOR 0x0006;
- while (--i > 0) *work++ = temp;
- for ( i = 3; (j = i * i) < bits; i += 2 )
- {
- for ( ; j < bits; j += i ) BIT_VECTOR_CLR_BIT(addr,j)
- }
- *(addr+size-1) &= mask_(addr);
- }
-}
-
-void BitVector_Reverse(wordptr X, wordptr Y)
-{
- N_word bits = bits_(X);
- N_word mask;
- N_word bit;
- N_word value;
-
- if (bits > 0)
- {
- if (X == Y) BitVector_Interval_Reverse(X,0,bits-1);
- else if (bits == bits_(Y))
- {
-/* mask = mask_(Y); */
-/* mask &= NOT (mask >> 1); */
- mask = BITMASKTAB[(bits-1) AND MODMASK];
- Y += size_(Y) - 1;
- value = 0;
- bit = LSB;
- while (bits-- > 0)
- {
- if ((*Y AND mask) != 0)
- {
- value |= bit;
- }
- if (not (mask >>= 1))
- {
- Y--;
- mask = MSB;
- }
- if (not (bit <<= 1))
- {
- *X++ = value;
- value = 0;
- bit = LSB;
- }
- }
- if (bit > LSB) *X = value;
- }
- }
-}
-
-void BitVector_Interval_Empty(wordptr addr, N_int lower, N_int upper)
-{ /* X = X \ [lower..upper] */
- N_word bits = bits_(addr);
- N_word size = size_(addr);
- wordptr loaddr;
- wordptr hiaddr;
- N_word lobase;
- N_word hibase;
- N_word lomask;
- N_word himask;
- N_word diff;
-
- if ((size > 0) and (lower < bits) and (upper < bits) and (lower <= upper))
- {
- lobase = lower >> LOGBITS;
- hibase = upper >> LOGBITS;
- diff = hibase - lobase;
- loaddr = addr + lobase;
- hiaddr = addr + hibase;
-
- lomask = (N_word) (~0L << (lower AND MODMASK));
- himask = (N_word) ~((~0L << (upper AND MODMASK)) << 1);
-
- if (diff == 0)
- {
- *loaddr &= NOT (lomask AND himask);
- }
- else
- {
- *loaddr++ &= NOT lomask;
- while (--diff > 0)
- {
- *loaddr++ = 0;
- }
- *hiaddr &= NOT himask;
- }
- }
-}
-
-void BitVector_Interval_Fill(wordptr addr, N_int lower, N_int upper)
-{ /* X = X + [lower..upper] */
- N_word bits = bits_(addr);
- N_word size = size_(addr);
- N_word fill = (N_word) ~0L;
- wordptr loaddr;
- wordptr hiaddr;
- N_word lobase;
- N_word hibase;
- N_word lomask;
- N_word himask;
- N_word diff;
-
- if ((size > 0) and (lower < bits) and (upper < bits) and (lower <= upper))
- {
- lobase = lower >> LOGBITS;
- hibase = upper >> LOGBITS;
- diff = hibase - lobase;
- loaddr = addr + lobase;
- hiaddr = addr + hibase;
-
- lomask = (N_word) (~0L << (lower AND MODMASK));
- himask = (N_word) ~((~0L << (upper AND MODMASK)) << 1);
-
- if (diff == 0)
- {
- *loaddr |= (lomask AND himask);
- }
- else
- {
- *loaddr++ |= lomask;
- while (--diff > 0)
- {
- *loaddr++ = fill;
- }
- *hiaddr |= himask;
- }
- *(addr+size-1) &= mask_(addr);
- }
-}
-
-void BitVector_Interval_Flip(wordptr addr, N_int lower, N_int upper)
-{ /* X = X ^ [lower..upper] */
- N_word bits = bits_(addr);
- N_word size = size_(addr);
- N_word flip = (N_word) ~0L;
- wordptr loaddr;
- wordptr hiaddr;
- N_word lobase;
- N_word hibase;
- N_word lomask;
- N_word himask;
- N_word diff;
-
- if ((size > 0) and (lower < bits) and (upper < bits) and (lower <= upper))
- {
- lobase = lower >> LOGBITS;
- hibase = upper >> LOGBITS;
- diff = hibase - lobase;
- loaddr = addr + lobase;
- hiaddr = addr + hibase;
-
- lomask = (N_word) (~0L << (lower AND MODMASK));
- himask = (N_word) ~((~0L << (upper AND MODMASK)) << 1);
-
- if (diff == 0)
- {
- *loaddr ^= (lomask AND himask);
- }
- else
- {
- *loaddr++ ^= lomask;
- while (--diff > 0)
- {
- *loaddr++ ^= flip;
- }
- *hiaddr ^= himask;
- }
- *(addr+size-1) &= mask_(addr);
- }
-}
-
-void BitVector_Interval_Reverse(wordptr addr, N_int lower, N_int upper)
-{
- N_word bits = bits_(addr);
- wordptr loaddr;
- wordptr hiaddr;
- N_word lomask;
- N_word himask;
-
- if ((bits > 0) and (lower < bits) and (upper < bits) and (lower < upper))
- {
- loaddr = addr + (lower >> LOGBITS);
- hiaddr = addr + (upper >> LOGBITS);
- lomask = BITMASKTAB[lower AND MODMASK];
- himask = BITMASKTAB[upper AND MODMASK];
- for ( bits = upper - lower + 1; bits > 1; bits -= 2 )
- {
- if (((*loaddr AND lomask) != 0) XOR ((*hiaddr AND himask) != 0))
- {
- *loaddr ^= lomask; /* swap bits only if they differ! */
- *hiaddr ^= himask;
- }
- if (not (lomask <<= 1))
- {
- lomask = LSB;
- loaddr++;
- }
- if (not (himask >>= 1))
- {
- himask = MSB;
- hiaddr--;
- }
- }
- }
-}
-
-boolean BitVector_interval_scan_inc(wordptr addr, N_int start,
- N_intptr min, N_intptr max)
-{
- N_word size = size_(addr);
- N_word mask = mask_(addr);
- N_word offset;
- N_word bitmask;
- N_word value;
- boolean empty;
-
- if ((size == 0) or (start >= bits_(addr))) return(FALSE);
-
- *min = start;
- *max = start;
-
- offset = start >> LOGBITS;
-
- *(addr+size-1) &= mask;
-
- addr += offset;
- size -= offset;
-
- bitmask = BITMASKTAB[start AND MODMASK];
- mask = NOT (bitmask OR (bitmask - 1));
-
- value = *addr++;
- if ((value AND bitmask) == 0)
- {
- value &= mask;
- if (value == 0)
- {
- offset++;
- empty = TRUE;
- while (empty and (--size > 0))
- {
- if ((value = *addr++)) empty = false; else offset++;
- }
- if (empty) return(FALSE);
- }
- start = offset << LOGBITS;
- bitmask = LSB;
- mask = value;
- while (not (mask AND LSB))
- {
- bitmask <<= 1;
- mask >>= 1;
- start++;
- }
- mask = NOT (bitmask OR (bitmask - 1));
- *min = start;
- *max = start;
- }
- value = NOT value;
- value &= mask;
- if (value == 0)
- {
- offset++;
- empty = TRUE;
- while (empty and (--size > 0))
- {
- if ((value = NOT *addr++)) empty = false; else offset++;
- }
- if (empty) value = LSB;
- }
- start = offset << LOGBITS;
- while (not (value AND LSB))
- {
- value >>= 1;
- start++;
- }
- *max = --start;
- return(TRUE);
-}
-
-boolean BitVector_interval_scan_dec(wordptr addr, N_int start,
- N_intptr min, N_intptr max)
-{
- N_word size = size_(addr);
- N_word mask = mask_(addr);
- N_word offset;
- N_word bitmask;
- N_word value;
- boolean empty;
-
- if ((size == 0) or (start >= bits_(addr))) return(FALSE);
-
- *min = start;
- *max = start;
-
- offset = start >> LOGBITS;
-
- if (offset >= size) return(FALSE);
-
- *(addr+size-1) &= mask;
-
- addr += offset;
- size = ++offset;
-
- bitmask = BITMASKTAB[start AND MODMASK];
- mask = (bitmask - 1);
-
- value = *addr--;
- if ((value AND bitmask) == 0)
- {
- value &= mask;
- if (value == 0)
- {
- offset--;
- empty = TRUE;
- while (empty and (--size > 0))
- {
- if ((value = *addr--)) empty = false; else offset--;
- }
- if (empty) return(FALSE);
- }
- start = offset << LOGBITS;
- bitmask = MSB;
- mask = value;
- while (not (mask AND MSB))
- {
- bitmask >>= 1;
- mask <<= 1;
- start--;
- }
- mask = (bitmask - 1);
- *max = --start;
- *min = start;
- }
- value = NOT value;
- value &= mask;
- if (value == 0)
- {
- offset--;
- empty = TRUE;
- while (empty and (--size > 0))
- {
- if ((value = NOT *addr--)) empty = false; else offset--;
- }
- if (empty) value = MSB;
- }
- start = offset << LOGBITS;
- while (not (value AND MSB))
- {
- value <<= 1;
- start--;
- }
- *min = start;
- return(TRUE);
-}
-
-void BitVector_Interval_Copy(wordptr X, wordptr Y, N_int Xoffset,
- N_int Yoffset, N_int length)
-{
- N_word bitsX = bits_(X);
- N_word bitsY = bits_(Y);
- N_word source = 0; /* silence compiler warning */
- N_word target = 0; /* silence compiler warning */
- N_word s_lo_base;
- N_word s_hi_base;
- N_word s_lo_bit;
- N_word s_hi_bit;
- N_word s_base;
- N_word s_lower = 0; /* silence compiler warning */
- N_word s_upper = 0; /* silence compiler warning */
- N_word s_bits;
- N_word s_min;
- N_word s_max;
- N_word t_lo_base;
- N_word t_hi_base;
- N_word t_lo_bit;
- N_word t_hi_bit;
- N_word t_base;
- N_word t_lower = 0; /* silence compiler warning */
- N_word t_upper = 0; /* silence compiler warning */
- N_word t_bits;
- N_word t_min;
- N_word mask;
- N_word bits;
- N_word sel;
- boolean ascending;
- boolean notfirst;
- wordptr Z = X;
-
- if ((length > 0) and (Xoffset < bitsX) and (Yoffset < bitsY))
- {
- if ((Xoffset + length) > bitsX) length = bitsX - Xoffset;
- if ((Yoffset + length) > bitsY) length = bitsY - Yoffset;
-
- ascending = (Xoffset <= Yoffset);
-
- s_lo_base = Yoffset >> LOGBITS;
- s_lo_bit = Yoffset AND MODMASK;
- Yoffset += --length;
- s_hi_base = Yoffset >> LOGBITS;
- s_hi_bit = Yoffset AND MODMASK;
-
- t_lo_base = Xoffset >> LOGBITS;
- t_lo_bit = Xoffset AND MODMASK;
- Xoffset += length;
- t_hi_base = Xoffset >> LOGBITS;
- t_hi_bit = Xoffset AND MODMASK;
-
- if (ascending)
- {
- s_base = s_lo_base;
- t_base = t_lo_base;
- }
- else
- {
- s_base = s_hi_base;
- t_base = t_hi_base;
- }
- s_bits = 0;
- t_bits = 0;
- Y += s_base;
- X += t_base;
- notfirst = FALSE;
- while (TRUE)
- {
- if (t_bits == 0)
- {
- if (notfirst)
- {
- *X = target;
- if (ascending)
- {
- if (t_base == t_hi_base) break;
- t_base++;
- X++;
- }
- else
- {
- if (t_base == t_lo_base) break;
- t_base--;
- X--;
- }
- }
- sel = ((t_base == t_hi_base) << 1) OR (t_base == t_lo_base);
- switch (sel)
- {
- case 0:
- t_lower = 0;
- t_upper = BITS - 1;
- t_bits = BITS;
- target = 0;
- break;
- case 1:
- t_lower = t_lo_bit;
- t_upper = BITS - 1;
- t_bits = BITS - t_lo_bit;
- mask = (N_word) (~0L << t_lower);
- target = *X AND NOT mask;
- break;
- case 2:
- t_lower = 0;
- t_upper = t_hi_bit;
- t_bits = t_hi_bit + 1;
- mask = (N_word) ((~0L << t_upper) << 1);
- target = *X AND mask;
- break;
- case 3:
- t_lower = t_lo_bit;
- t_upper = t_hi_bit;
- t_bits = t_hi_bit - t_lo_bit + 1;
- mask = (N_word) (~0L << t_lower);
- mask &= (N_word) ~((~0L << t_upper) << 1);
- target = *X AND NOT mask;
- break;
- }
- }
- if (s_bits == 0)
- {
- if (notfirst)
- {
- if (ascending)
- {
- if (s_base == s_hi_base) break;
- s_base++;
- Y++;
- }
- else
- {
- if (s_base == s_lo_base) break;
- s_base--;
- Y--;
- }
- }
- source = *Y;
- sel = ((s_base == s_hi_base) << 1) OR (s_base == s_lo_base);
- switch (sel)
- {
- case 0:
- s_lower = 0;
- s_upper = BITS - 1;
- s_bits = BITS;
- break;
- case 1:
- s_lower = s_lo_bit;
- s_upper = BITS - 1;
- s_bits = BITS - s_lo_bit;
- break;
- case 2:
- s_lower = 0;
- s_upper = s_hi_bit;
- s_bits = s_hi_bit + 1;
- break;
- case 3:
- s_lower = s_lo_bit;
- s_upper = s_hi_bit;
- s_bits = s_hi_bit - s_lo_bit + 1;
- break;
- }
- }
- notfirst = TRUE;
- if (s_bits > t_bits)
- {
- bits = t_bits - 1;
- if (ascending)
- {
- s_min = s_lower;
- s_max = s_lower + bits;
- }
- else
- {
- s_max = s_upper;
- s_min = s_upper - bits;
- }
- t_min = t_lower;
- }
- else
- {
- bits = s_bits - 1;
- if (ascending) t_min = t_lower;
- else t_min = t_upper - bits;
- s_min = s_lower;
- s_max = s_upper;
- }
- bits++;
- mask = (N_word) (~0L << s_min);
- mask &= (N_word) ~((~0L << s_max) << 1);
- if (s_min == t_min) target |= (source AND mask);
- else
- {
- if (s_min < t_min) target |= (source AND mask) << (t_min-s_min);
- else target |= (source AND mask) >> (s_min-t_min);
- }
- if (ascending)
- {
- s_lower += bits;
- t_lower += bits;
- }
- else
- {
- s_upper -= bits;
- t_upper -= bits;
- }
- s_bits -= bits;
- t_bits -= bits;
- }
- *(Z+size_(Z)-1) &= mask_(Z);
- }
-}
-
-
-wordptr BitVector_Interval_Substitute(wordptr X, wordptr Y,
- N_int Xoffset, N_int Xlength,
- N_int Yoffset, N_int Ylength)
-{
- N_word Xbits = bits_(X);
- N_word Ybits = bits_(Y);
- N_word limit;
- N_word diff;
-
- if ((Xoffset <= Xbits) and (Yoffset <= Ybits))
- {
- limit = Xoffset + Xlength;
- if (limit > Xbits)
- {
- limit = Xbits;
- Xlength = Xbits - Xoffset;
- }
- if ((Yoffset + Ylength) > Ybits)
- {
- Ylength = Ybits - Yoffset;
- }
- if (Xlength == Ylength)
- {
- if ((Ylength > 0) and ((X != Y) or (Xoffset != Yoffset)))
- {
- BitVector_Interval_Copy(X,Y,Xoffset,Yoffset,Ylength);
- }
- }
- else /* Xlength != Ylength */
- {
- if (Xlength > Ylength)
- {
- diff = Xlength - Ylength;
- if (Ylength > 0) BitVector_Interval_Copy(X,Y,Xoffset,Yoffset,Ylength);
- if (limit < Xbits) BitVector_Delete(X,Xoffset+Ylength,diff,FALSE);
- if ((X = BitVector_Resize(X,Xbits-diff)) == NULL) return(NULL);
- }
- else /* Ylength > Xlength ==> Ylength > 0 */
- {
- diff = Ylength - Xlength;
- if (X != Y)
- {
- if ((X = BitVector_Resize(X,Xbits+diff)) == NULL) return(NULL);
- if (limit < Xbits) BitVector_Insert(X,limit,diff,FALSE);
- BitVector_Interval_Copy(X,Y,Xoffset,Yoffset,Ylength);
- }
- else /* in-place */
- {
- if ((Y = X = BitVector_Resize(X,Xbits+diff)) == NULL) return(NULL);
- if (limit >= Xbits)
- {
- BitVector_Interval_Copy(X,Y,Xoffset,Yoffset,Ylength);
- }
- else /* limit < Xbits */
- {
- BitVector_Insert(X,limit,diff,FALSE);
- if ((Yoffset+Ylength) <= limit)
- {
- BitVector_Interval_Copy(X,Y,Xoffset,Yoffset,Ylength);
- }
- else /* overlaps or lies above critical area */
- {
- if (limit <= Yoffset)
- {
- Yoffset += diff;
- BitVector_Interval_Copy(X,Y,Xoffset,Yoffset,Ylength);
- }
- else /* Yoffset < limit */
- {
- Xlength = limit - Yoffset;
- BitVector_Interval_Copy(X,Y,Xoffset,Yoffset,Xlength);
- Yoffset = Xoffset + Ylength; /* = limit + diff */
- Xoffset += Xlength;
- Ylength -= Xlength;
- BitVector_Interval_Copy(X,Y,Xoffset,Yoffset,Ylength);
- }
- }
- }
- }
- }
- }
- }
- return(X);
-}
-
-boolean BitVector_is_empty(wordptr addr) /* X == {} ? */
-{
- N_word size = size_(addr);
- boolean r = TRUE;
-
- if (size > 0)
- {
- *(addr+size-1) &= mask_(addr);
- while (r and (size-- > 0)) r = ( *addr++ == 0 );
- }
- return(r);
-}
-
-boolean BitVector_is_full(wordptr addr) /* X == ~{} ? */
-{
- N_word size = size_(addr);
- N_word mask = mask_(addr);
- boolean r = FALSE;
- wordptr last;
-
- if (size > 0)
- {
- r = TRUE;
- last = addr + size - 1;
- *last |= NOT mask;
- while (r and (size-- > 0)) r = ( NOT *addr++ == 0 );
- *last &= mask;
- }
- return(r);
-}
-
-boolean BitVector_equal(wordptr X, wordptr Y) /* X == Y ? */
-{
- N_word size = size_(X);
- N_word mask = mask_(X);
- boolean r = FALSE;
-
- if (bits_(X) == bits_(Y))
- {
- r = TRUE;
- if (size > 0)
- {
- *(X+size-1) &= mask;
- *(Y+size-1) &= mask;
- while (r and (size-- > 0)) r = (*X++ == *Y++);
- }
- }
- return(r);
-}
-
-Z_int BitVector_Lexicompare(wordptr X, wordptr Y) /* X <,=,> Y ? */
-{ /* unsigned */
- N_word bitsX = bits_(X);
- N_word bitsY = bits_(Y);
- N_word size = size_(X);
- boolean r = TRUE;
-
- if (bitsX == bitsY)
- {
- if (size > 0)
- {
- X += size;
- Y += size;
- while (r and (size-- > 0)) r = (*(--X) == *(--Y));
- }
- if (r) return((Z_int) 0);
- else
- {
- if (*X < *Y) return((Z_int) -1); else return((Z_int) 1);
- }
- }
- else
- {
- if (bitsX < bitsY) return((Z_int) -1); else return((Z_int) 1);
- }
-}
-
-Z_int BitVector_Compare(wordptr X, wordptr Y) /* X <,=,> Y ? */
-{ /* signed */
- N_word bitsX = bits_(X);
- N_word bitsY = bits_(Y);
- N_word size = size_(X);
- N_word mask = mask_(X);
- N_word sign;
- boolean r = TRUE;
-
- if (bitsX == bitsY)
- {
- if (size > 0)
- {
- X += size;
- Y += size;
- mask &= NOT (mask >> 1);
- if ((sign = (*(X-1) AND mask)) != (*(Y-1) AND mask))
- {
- if (sign) return((Z_int) -1); else return((Z_int) 1);
- }
- while (r and (size-- > 0)) r = (*(--X) == *(--Y));
- }
- if (r) return((Z_int) 0);
- else
- {
- if (*X < *Y) return((Z_int) -1); else return((Z_int) 1);
- }
- }
- else
- {
- if (bitsX < bitsY) return((Z_int) -1); else return((Z_int) 1);
- }
-}
-
-charptr BitVector_to_Hex(wordptr addr)
-{
- N_word bits = bits_(addr);
- N_word size = size_(addr);
- N_word value;
- N_word count;
- N_word digit;
- N_word length;
- charptr string;
-
- length = bits >> 2;
- if (bits AND 0x0003) length++;
- string = (charptr) yasm_xmalloc((size_t) (length+1));
- if (string == NULL) return(NULL);
- string += length;
- *string = (N_char) '\0';
- if (size > 0)
- {
- *(addr+size-1) &= mask_(addr);
- while ((size-- > 0) and (length > 0))
- {
- value = *addr++;
- count = BITS >> 2;
- while ((count-- > 0) and (length > 0))
- {
- digit = value AND 0x000F;
- if (digit > 9) digit += (N_word) 'A' - 10;
- else digit += (N_word) '0';
- *(--string) = (N_char) digit; length--;
- if ((count > 0) and (length > 0)) value >>= 4;
- }
- }
- }
- return(string);
-}
-
-ErrCode BitVector_from_Hex(wordptr addr, charptr string)
-{
- N_word size = size_(addr);
- N_word mask = mask_(addr);
- boolean ok = TRUE;
- size_t length;
- N_word value;
- N_word count;
- int digit;
-
- if (size > 0)
- {
- length = strlen((char *) string);
- string += length;
- while (size-- > 0)
- {
- value = 0;
- for ( count = 0; (ok and (length > 0) and (count < BITS)); count += 4 )
- {
- digit = (int) *(--string); length--;
- /* separate because toupper() is likely a macro! */
- digit = toupper(digit);
- if (digit == '_')
- count -= 4;
- else if ((ok = (isxdigit(digit) != 0)))
- {
- if (digit >= (int) 'A') digit -= (int) 'A' - 10;
- else digit -= (int) '0';
- value |= (((N_word) digit) << count);
- }
- }
- *addr++ = value;
- }
- *(--addr) &= mask;
- }
- if (ok) return(ErrCode_Ok);
- else return(ErrCode_Pars);
-}
-
-ErrCode BitVector_from_Oct(wordptr addr, charptr string)
-{
- N_word size = size_(addr);
- N_word mask = mask_(addr);
- boolean ok = TRUE;
- size_t length;
- N_word value;
- N_word value_fill = 0;
- N_word count;
- Z_word count_fill = 0;
- int digit = 0;
-
- if (size > 0)
- {
- length = strlen((char *) string);
- string += length;
- while (size-- > 0)
- {
- value = value_fill;
- for ( count = count_fill; (ok and (length > 0) and (count < BITS)); count += 3 )
- {
- digit = (int) *(--string); length--;
- if (digit == '_')
- count -= 3;
- else if ((ok = (isdigit(digit) && digit != '8' && digit != '9')) != 0)
- {
- digit -= (int) '0';
- value |= (((N_word) digit) << count);
- }
- }
- count_fill = (Z_word)count-(Z_word)BITS;
- if (count_fill > 0)
- value_fill = (((N_word) digit) >> (3-count_fill));
- else
- value_fill = 0;
- *addr++ = value;
- }
- *(--addr) &= mask;
- }
- if (ok) return(ErrCode_Ok);
- else return(ErrCode_Pars);
-}
-
-charptr BitVector_to_Bin(wordptr addr)
-{
- N_word size = size_(addr);
- N_word value;
- N_word count;
- N_word digit;
- N_word length;
- charptr string;
-
- length = bits_(addr);
- string = (charptr) yasm_xmalloc((size_t) (length+1));
- if (string == NULL) return(NULL);
- string += length;
- *string = (N_char) '\0';
- if (size > 0)
- {
- *(addr+size-1) &= mask_(addr);
- while (size-- > 0)
- {
- value = *addr++;
- count = BITS;
- if (count > length) count = length;
- while (count-- > 0)
- {
- digit = value AND 0x0001;
- digit += (N_word) '0';
- *(--string) = (N_char) digit; length--;
- if (count > 0) value >>= 1;
- }
- }
- }
- return(string);
-}
-
-ErrCode BitVector_from_Bin(wordptr addr, charptr string)
-{
- N_word size = size_(addr);
- N_word mask = mask_(addr);
- boolean ok = TRUE;
- size_t length;
- N_word value;
- N_word count;
- int digit;
-
- if (size > 0)
- {
- length = strlen((char *) string);
- string += length;
- while (size-- > 0)
- {
- value = 0;
- for ( count = 0; (ok and (length > 0) and (count < BITS)); count++ )
- {
- digit = (int) *(--string); length--;
- switch (digit)
- {
- case (int) '0':
- break;
- case (int) '1':
- value |= BITMASKTAB[count];
- break;
- case (int) '_':
- count--;
- break;
- default:
- ok = FALSE;
- break;
- }
- }
- *addr++ = value;
- }
- *(--addr) &= mask;
- }
- if (ok) return(ErrCode_Ok);
- else return(ErrCode_Pars);
-}
-
-charptr BitVector_to_Dec(wordptr addr)
-{
- N_word bits = bits_(addr);
- N_word length;
- N_word digits;
- N_word count;
- N_word q;
- N_word r;
- boolean loop;
- charptr result;
- charptr string;
- wordptr quot;
- wordptr rest;
- wordptr temp;
- wordptr base;
- Z_int sign;
-
- length = (N_word) (bits / 3.3); /* digits = bits * ln(2) / ln(10) */
- length += 2; /* compensate for truncating & provide space for minus sign */
- result = (charptr) yasm_xmalloc((size_t) (length+1)); /* remember the '\0'! */
- if (result == NULL) return(NULL);
- string = result;
- sign = BitVector_Sign(addr);
- if ((bits < 4) or (sign == 0))
- {
- if (bits > 0) digits = *addr; else digits = (N_word) 0;
- if (sign < 0) digits = ((N_word)(-((Z_word)digits))) AND mask_(addr);
- *string++ = (N_char) digits + (N_char) '0';
- digits = 1;
- }
- else
- {
- quot = BitVector_Create(bits,FALSE);
- if (quot == NULL)
- {
- BitVector_Dispose(result);
- return(NULL);
- }
- rest = BitVector_Create(bits,FALSE);
- if (rest == NULL)
- {
- BitVector_Dispose(result);
- BitVector_Destroy(quot);
- return(NULL);
- }
- temp = BitVector_Create(bits,FALSE);
- if (temp == NULL)
- {
- BitVector_Dispose(result);
- BitVector_Destroy(quot);
- BitVector_Destroy(rest);
- return(NULL);
- }
- base = BitVector_Create(bits,TRUE);
- if (base == NULL)
- {
- BitVector_Dispose(result);
- BitVector_Destroy(quot);
- BitVector_Destroy(rest);
- BitVector_Destroy(temp);
- return(NULL);
- }
- if (sign < 0) BitVector_Negate(quot,addr);
- else BitVector_Copy(quot,addr);
- digits = 0;
- *base = EXP10;
- loop = (bits >= BITS);
- do
- {
- if (loop)
- {
- BitVector_Copy(temp,quot);
- if (BitVector_Div_Pos(quot,temp,base,rest))
- {
- BitVector_Dispose(result); /* emergency exit */
- BitVector_Destroy(quot);
- BitVector_Destroy(rest); /* should never occur */
- BitVector_Destroy(temp); /* under normal operation */
- BitVector_Destroy(base);
- return(NULL);
- }
- loop = not BitVector_is_empty(quot);
- q = *rest;
- }
- else q = *quot;
- count = LOG10;
- while (((loop and (count-- > 0)) or ((not loop) and (q != 0))) and
- (digits < length))
- {
- if (q != 0)
- {
- BIT_VECTOR_DIGITIZE(N_word,q,r)
- }
- else r = (N_word) '0';
- *string++ = (N_char) r;
- digits++;
- }
- }
- while (loop and (digits < length));
- BitVector_Destroy(quot);
- BitVector_Destroy(rest);
- BitVector_Destroy(temp);
- BitVector_Destroy(base);
- }
- if ((sign < 0) and (digits < length))
- {
- *string++ = (N_char) '-';
- digits++;
- }
- *string = (N_char) '\0';
- BIT_VECTOR_reverse(result,digits);
- return(result);
-}
-
-struct BitVector_from_Dec_static_data {
- wordptr term;
- wordptr base;
- wordptr prod;
- wordptr rank;
- wordptr temp;
-};
-
-BitVector_from_Dec_static_data *BitVector_from_Dec_static_Boot(N_word bits)
-{
- BitVector_from_Dec_static_data *data;
-
- data = yasm_xmalloc(sizeof(BitVector_from_Dec_static_data));
-
- if (bits > 0)
- {
- data->term = BitVector_Create(BITS,FALSE);
- data->base = BitVector_Create(BITS,FALSE);
- data->prod = BitVector_Create(bits,FALSE);
- data->rank = BitVector_Create(bits,FALSE);
- data->temp = BitVector_Create(bits,FALSE);
- } else {
- data->term = NULL;
- data->base = NULL;
- data->prod = NULL;
- data->rank = NULL;
- data->temp = NULL;
- }
- return data;
-}
-
-void BitVector_from_Dec_static_Shutdown(BitVector_from_Dec_static_data *data)
-{
- if (data) {
- BitVector_Destroy(data->term);
- BitVector_Destroy(data->base);
- BitVector_Destroy(data->prod);
- BitVector_Destroy(data->rank);
- BitVector_Destroy(data->temp);
- }
- yasm_xfree(data);
-}
-
-ErrCode BitVector_from_Dec_static(BitVector_from_Dec_static_data *data,
- wordptr addr, charptr string)
-{
- ErrCode error = ErrCode_Ok;
- N_word bits = bits_(addr);
- N_word mask = mask_(addr);
- boolean init = (bits > BITS);
- boolean minus;
- boolean shift;
- boolean carry;
- wordptr term;
- wordptr base;
- wordptr prod;
- wordptr rank;
- wordptr temp;
- N_word accu;
- N_word powr;
- N_word count;
- size_t length;
- int digit;
-
- if (bits > 0)
- {
- term = data->term;
- base = data->base;
- prod = data->prod;
- rank = data->rank;
- temp = data->temp;
-
- length = strlen((char *) string);
- if (length == 0) return(ErrCode_Pars);
- digit = (int) *string;
- if ((minus = (digit == (int) '-')) or
- (digit == (int) '+'))
- {
- string++;
- if (--length == 0) return(ErrCode_Pars);
- }
- string += length;
- if (init)
- {
- BitVector_Empty(prod);
- BitVector_Empty(rank);
- }
- BitVector_Empty(addr);
- *base = EXP10;
- shift = FALSE;
- while ((not error) and (length > 0))
- {
- accu = 0;
- powr = 1;
- count = LOG10;
- while ((not error) and (length > 0) and (count-- > 0))
- {
- digit = (int) *(--string); length--;
- /* separate because isdigit() is likely a macro! */
- if (isdigit(digit) != 0)
- {
- accu += ((N_word) digit - (N_word) '0') * powr;
- powr *= 10;
- }
- else error = ErrCode_Pars;
- }
- if (not error)
- {
- if (shift)
- {
- *term = accu;
- BitVector_Copy(temp,rank);
- error = BitVector_Mul_Pos(prod,temp,term,FALSE);
- }
- else
- {
- *prod = accu;
- if ((not init) and ((accu AND NOT mask) != 0)) error = ErrCode_Ovfl;
- }
- if (not error)
- {
- carry = FALSE;
- BitVector_compute(addr,addr,prod,FALSE,&carry);
- /* ignores sign change (= overflow) but not */
- /* numbers too large (= carry) for resulting bit vector */
- if (carry) error = ErrCode_Ovfl;
- else
- {
- if (length > 0)
- {
- if (shift)
- {
- BitVector_Copy(temp,rank);
- error = BitVector_Mul_Pos(rank,temp,base,FALSE);
- }
- else
- {
- *rank = *base;
- shift = TRUE;
- }
- }
- }
- }
- }
- }
- if (not error and minus)
- {
- BitVector_Negate(addr,addr);
- if ((*(addr + size_(addr) - 1) AND mask AND NOT (mask >> 1)) == 0)
- error = ErrCode_Ovfl;
- }
- }
- return(error);
-}
-
-ErrCode BitVector_from_Dec(wordptr addr, charptr string)
-{
- ErrCode error = ErrCode_Ok;
- N_word bits = bits_(addr);
- N_word mask = mask_(addr);
- boolean init = (bits > BITS);
- boolean minus;
- boolean shift;
- boolean carry;
- wordptr term;
- wordptr base;
- wordptr prod;
- wordptr rank;
- wordptr temp;
- N_word accu;
- N_word powr;
- N_word count;
- size_t length;
- int digit;
-
- if (bits > 0)
- {
- length = strlen((char *) string);
- if (length == 0) return(ErrCode_Pars);
- digit = (int) *string;
- if ((minus = (digit == (int) '-')) or
- (digit == (int) '+'))
- {
- string++;
- if (--length == 0) return(ErrCode_Pars);
- }
- string += length;
- term = BitVector_Create(BITS,FALSE);
- if (term == NULL)
- {
- return(ErrCode_Null);
- }
- base = BitVector_Create(BITS,FALSE);
- if (base == NULL)
- {
- BitVector_Destroy(term);
- return(ErrCode_Null);
- }
- prod = BitVector_Create(bits,init);
- if (prod == NULL)
- {
- BitVector_Destroy(term);
- BitVector_Destroy(base);
- return(ErrCode_Null);
- }
- rank = BitVector_Create(bits,init);
- if (rank == NULL)
- {
- BitVector_Destroy(term);
- BitVector_Destroy(base);
- BitVector_Destroy(prod);
- return(ErrCode_Null);
- }
- temp = BitVector_Create(bits,FALSE);
- if (temp == NULL)
- {
- BitVector_Destroy(term);
- BitVector_Destroy(base);
- BitVector_Destroy(prod);
- BitVector_Destroy(rank);
- return(ErrCode_Null);
- }
- BitVector_Empty(addr);
- *base = EXP10;
- shift = FALSE;
- while ((not error) and (length > 0))
- {
- accu = 0;
- powr = 1;
- count = LOG10;
- while ((not error) and (length > 0) and (count-- > 0))
- {
- digit = (int) *(--string); length--;
- /* separate because isdigit() is likely a macro! */
- if (isdigit(digit) != 0)
- {
- accu += ((N_word) digit - (N_word) '0') * powr;
- powr *= 10;
- }
- else error = ErrCode_Pars;
- }
- if (not error)
- {
- if (shift)
- {
- *term = accu;
- BitVector_Copy(temp,rank);
- error = BitVector_Mul_Pos(prod,temp,term,FALSE);
- }
- else
- {
- *prod = accu;
- if ((not init) and ((accu AND NOT mask) != 0)) error = ErrCode_Ovfl;
- }
- if (not error)
- {
- carry = FALSE;
- BitVector_compute(addr,addr,prod,FALSE,&carry);
- /* ignores sign change (= overflow) but not */
- /* numbers too large (= carry) for resulting bit vector */
- if (carry) error = ErrCode_Ovfl;
- else
- {
- if (length > 0)
- {
- if (shift)
- {
- BitVector_Copy(temp,rank);
- error = BitVector_Mul_Pos(rank,temp,base,FALSE);
- }
- else
- {
- *rank = *base;
- shift = TRUE;
- }
- }
- }
- }
- }
- }
- BitVector_Destroy(term);
- BitVector_Destroy(base);
- BitVector_Destroy(prod);
- BitVector_Destroy(rank);
- BitVector_Destroy(temp);
- if (not error and minus)
- {
- BitVector_Negate(addr,addr);
- if ((*(addr + size_(addr) - 1) AND mask AND NOT (mask >> 1)) == 0)
- error = ErrCode_Ovfl;
- }
- }
- return(error);
-}
-
-charptr BitVector_to_Enum(wordptr addr)
-{
- N_word bits = bits_(addr);
- N_word sample;
- N_word length;
- N_word digits;
- N_word factor;
- N_word power;
- N_word start;
- N_word min;
- N_word max;
- charptr string;
- charptr target;
- boolean comma;
-
- if (bits > 0)
- {
- sample = bits - 1; /* greatest possible index */
- length = 2; /* account for index 0 and terminating '\0' */
- digits = 1; /* account for intervening dashes and commas */
- factor = 1;
- power = 10;
- while (sample >= (power-1))
- {
- length += ++digits * factor * 6; /* 9,90,900,9000,... (9*2/3 = 6) */
- factor = power;
- power *= 10;
- }
- if (sample > --factor)
- {
- sample -= factor;
- factor = (N_word) ( sample / 3 );
- factor = (factor << 1) + (sample - (factor * 3));
- length += ++digits * factor;
- }
- }
- else length = 1;
- string = (charptr) yasm_xmalloc((size_t) length);
- if (string == NULL) return(NULL);
- start = 0;
- comma = FALSE;
- target = string;
- while ((start < bits) and BitVector_interval_scan_inc(addr,start,&min,&max))
- {
- start = max + 2;
- if (comma) *target++ = (N_char) ',';
- if (min == max)
- {
- target += BIT_VECTOR_int2str(target,min);
- }
- else
- {
- if (min+1 == max)
- {
- target += BIT_VECTOR_int2str(target,min);
- *target++ = (N_char) ',';
- target += BIT_VECTOR_int2str(target,max);
- }
- else
- {
- target += BIT_VECTOR_int2str(target,min);
- *target++ = (N_char) '-';
- target += BIT_VECTOR_int2str(target,max);
- }
- }
- comma = TRUE;
- }
- *target = (N_char) '\0';
- return(string);
-}
-
-ErrCode BitVector_from_Enum(wordptr addr, charptr string)
-{
- ErrCode error = ErrCode_Ok;
- N_word bits = bits_(addr);
- N_word state = 1;
- N_word token;
- N_word indx = 0; /* silence compiler warning */
- N_word start = 0; /* silence compiler warning */
-
- if (bits > 0)
- {
- BitVector_Empty(addr);
- while ((not error) and (state != 0))
- {
- token = (N_word) *string;
- /* separate because isdigit() is likely a macro! */
- if (isdigit((int)token) != 0)
- {
- string += BIT_VECTOR_str2int(string,&indx);
- if (indx < bits) token = (N_word) '0';
- else error = ErrCode_Indx;
- }
- else string++;
- if (not error)
- switch (state)
- {
- case 1:
- switch (token)
- {
- case (N_word) '0':
- state = 2;
- break;
- case (N_word) '\0':
- state = 0;
- break;
- default:
- error = ErrCode_Pars;
- break;
- }
- break;
- case 2:
- switch (token)
- {
- case (N_word) '-':
- start = indx;
- state = 3;
- break;
- case (N_word) ',':
- BIT_VECTOR_SET_BIT(addr,indx)
- state = 5;
- break;
- case (N_word) '\0':
- BIT_VECTOR_SET_BIT(addr,indx)
- state = 0;
- break;
- default:
- error = ErrCode_Pars;
- break;
- }
- break;
- case 3:
- switch (token)
- {
- case (N_word) '0':
- if (start < indx)
- BitVector_Interval_Fill(addr,start,indx);
- else if (start == indx)
- BIT_VECTOR_SET_BIT(addr,indx)
- else error = ErrCode_Ordr;
- state = 4;
- break;
- default:
- error = ErrCode_Pars;
- break;
- }
- break;
- case 4:
- switch (token)
- {
- case (N_word) ',':
- state = 5;
- break;
- case (N_word) '\0':
- state = 0;
- break;
- default:
- error = ErrCode_Pars;
- break;
- }
- break;
- case 5:
- switch (token)
- {
- case (N_word) '0':
- state = 2;
- break;
- default:
- error = ErrCode_Pars;
- break;
- }
- break;
- }
- }
- }
- return(error);
-}
-
-void BitVector_Bit_Off(wordptr addr, N_int indx) /* X = X \ {x} */
-{
- if (indx < bits_(addr)) BIT_VECTOR_CLR_BIT(addr,indx)
-}
-
-void BitVector_Bit_On(wordptr addr, N_int indx) /* X = X + {x} */
-{
- if (indx < bits_(addr)) BIT_VECTOR_SET_BIT(addr,indx)
-}
-
-boolean BitVector_bit_flip(wordptr addr, N_int indx) /* X=(X+{x})\(X*{x}) */
-{
- N_word mask;
-
- if (indx < bits_(addr)) return( BIT_VECTOR_FLP_BIT(addr,indx,mask) );
- else return( FALSE );
-}
-
-boolean BitVector_bit_test(wordptr addr, N_int indx) /* {x} in X ? */
-{
- if (indx < bits_(addr)) return( BIT_VECTOR_TST_BIT(addr,indx) );
- else return( FALSE );
-}
-
-void BitVector_Bit_Copy(wordptr addr, N_int indx, boolean bit)
-{
- if (indx < bits_(addr))
- {
- if (bit) BIT_VECTOR_SET_BIT(addr,indx)
- else BIT_VECTOR_CLR_BIT(addr,indx)
- }
-}
-
-void BitVector_LSB(wordptr addr, boolean bit)
-{
- if (bits_(addr) > 0)
- {
- if (bit) *addr |= LSB;
- else *addr &= NOT LSB;
- }
-}
-
-void BitVector_MSB(wordptr addr, boolean bit)
-{
- N_word size = size_(addr);
- N_word mask = mask_(addr);
-
- if (size-- > 0)
- {
- if (bit) *(addr+size) |= mask AND NOT (mask >> 1);
- else *(addr+size) &= NOT mask OR (mask >> 1);
- }
-}
-
-boolean BitVector_lsb_(wordptr addr)
-{
- if (size_(addr) > 0) return( (*addr AND LSB) != 0 );
- else return( FALSE );
-}
-
-boolean BitVector_msb_(wordptr addr)
-{
- N_word size = size_(addr);
- N_word mask = mask_(addr);
-
- if (size-- > 0)
- return( (*(addr+size) AND (mask AND NOT (mask >> 1))) != 0 );
- else
- return( FALSE );
-}
-
-boolean BitVector_rotate_left(wordptr addr)
-{
- N_word size = size_(addr);
- N_word mask = mask_(addr);
- N_word msb;
- boolean carry_in;
- boolean carry_out = FALSE;
-
- if (size > 0)
- {
- msb = mask AND NOT (mask >> 1);
- carry_in = ((*(addr+size-1) AND msb) != 0);
- while (size-- > 1)
- {
- carry_out = ((*addr AND MSB) != 0);
- *addr <<= 1;
- if (carry_in) *addr |= LSB;
- carry_in = carry_out;
- addr++;
- }
- carry_out = ((*addr AND msb) != 0);
- *addr <<= 1;
- if (carry_in) *addr |= LSB;
- *addr &= mask;
- }
- return(carry_out);
-}
-
-boolean BitVector_rotate_right(wordptr addr)
-{
- N_word size = size_(addr);
- N_word mask = mask_(addr);
- N_word msb;
- boolean carry_in;
- boolean carry_out = FALSE;
-
- if (size > 0)
- {
- msb = mask AND NOT (mask >> 1);
- carry_in = ((*addr AND LSB) != 0);
- addr += size-1;
- *addr &= mask;
- carry_out = ((*addr AND LSB) != 0);
- *addr >>= 1;
- if (carry_in) *addr |= msb;
- carry_in = carry_out;
- addr--;
- size--;
- while (size-- > 0)
- {
- carry_out = ((*addr AND LSB) != 0);
- *addr >>= 1;
- if (carry_in) *addr |= MSB;
- carry_in = carry_out;
- addr--;
- }
- }
- return(carry_out);
-}
-
-boolean BitVector_shift_left(wordptr addr, boolean carry_in)
-{
- N_word size = size_(addr);
- N_word mask = mask_(addr);
- N_word msb;
- boolean carry_out = carry_in;
-
- if (size > 0)
- {
- msb = mask AND NOT (mask >> 1);
- while (size-- > 1)
- {
- carry_out = ((*addr AND MSB) != 0);
- *addr <<= 1;
- if (carry_in) *addr |= LSB;
- carry_in = carry_out;
- addr++;
- }
- carry_out = ((*addr AND msb) != 0);
- *addr <<= 1;
- if (carry_in) *addr |= LSB;
- *addr &= mask;
- }
- return(carry_out);
-}
-
-boolean BitVector_shift_right(wordptr addr, boolean carry_in)
-{
- N_word size = size_(addr);
- N_word mask = mask_(addr);
- N_word msb;
- boolean carry_out = carry_in;
-
- if (size > 0)
- {
- msb = mask AND NOT (mask >> 1);
- addr += size-1;
- *addr &= mask;
- carry_out = ((*addr AND LSB) != 0);
- *addr >>= 1;
- if (carry_in) *addr |= msb;
- carry_in = carry_out;
- addr--;
- size--;
- while (size-- > 0)
- {
- carry_out = ((*addr AND LSB) != 0);
- *addr >>= 1;
- if (carry_in) *addr |= MSB;
- carry_in = carry_out;
- addr--;
- }
- }
- return(carry_out);
-}
-
-void BitVector_Move_Left(wordptr addr, N_int bits)
-{
- N_word count;
- N_word words;
-
- if (bits > 0)
- {
- count = bits AND MODMASK;
- words = bits >> LOGBITS;
- if (bits >= bits_(addr)) BitVector_Empty(addr);
- else
- {
- while (count-- > 0) BitVector_shift_left(addr,0);
- BitVector_Word_Insert(addr,0,words,TRUE);
- }
- }
-}
-
-void BitVector_Move_Right(wordptr addr, N_int bits)
-{
- N_word count;
- N_word words;
-
- if (bits > 0)
- {
- count = bits AND MODMASK;
- words = bits >> LOGBITS;
- if (bits >= bits_(addr)) BitVector_Empty(addr);
- else
- {
- while (count-- > 0) BitVector_shift_right(addr,0);
- BitVector_Word_Delete(addr,0,words,TRUE);
- }
- }
-}
-
-void BitVector_Insert(wordptr addr, N_int offset, N_int count, boolean clear)
-{
- N_word bits = bits_(addr);
- N_word last;
-
- if ((count > 0) and (offset < bits))
- {
- last = offset + count;
- if (last < bits)
- {
- BitVector_Interval_Copy(addr,addr,last,offset,(bits-last));
- }
- else last = bits;
- if (clear) BitVector_Interval_Empty(addr,offset,(last-1));
- }
-}
-
-void BitVector_Delete(wordptr addr, N_int offset, N_int count, boolean clear)
-{
- N_word bits = bits_(addr);
- N_word last;
-
- if ((count > 0) and (offset < bits))
- {
- last = offset + count;
- if (last < bits)
- {
- BitVector_Interval_Copy(addr,addr,offset,last,(bits-last));
- }
- else count = bits - offset;
- if (clear) BitVector_Interval_Empty(addr,(bits-count),(bits-1));
- }
-}
-
-boolean BitVector_increment(wordptr addr) /* X++ */
-{
- N_word size = size_(addr);
- N_word mask = mask_(addr);
- wordptr last = addr + size - 1;
- boolean carry = TRUE;
-
- if (size > 0)
- {
- *last |= NOT mask;
- while (carry and (size-- > 0))
- {
- carry = (++(*addr++) == 0);
- }
- *last &= mask;
- }
- return(carry);
-}
-
-boolean BitVector_decrement(wordptr addr) /* X-- */
-{
- N_word size = size_(addr);
- N_word mask = mask_(addr);
- wordptr last = addr + size - 1;
- boolean carry = TRUE;
-
- if (size > 0)
- {
- *last &= mask;
- while (carry and (size-- > 0))
- {
- carry = (*addr == 0);
- --(*addr++);
- }
- *last &= mask;
- }
- return(carry);
-}
-
-boolean BitVector_compute(wordptr X, wordptr Y, wordptr Z, boolean minus, boolean *carry)
-{
- N_word size = size_(X);
- N_word mask = mask_(X);
- N_word vv = 0;
- N_word cc;
- N_word mm;
- N_word yy;
- N_word zz;
- N_word lo;
- N_word hi;
-
- if (size > 0)
- {
- if (minus) cc = (*carry == 0);
- else cc = (*carry != 0);
- /* deal with (size-1) least significant full words first: */
- while (--size > 0)
- {
- yy = *Y++;
- if (minus) zz = (N_word) NOT ( Z ? *Z++ : 0 );
- else zz = (N_word) ( Z ? *Z++ : 0 );
- lo = (yy AND LSB) + (zz AND LSB) + cc;
- hi = (yy >> 1) + (zz >> 1) + (lo >> 1);
- cc = ((hi AND MSB) != 0);
- *X++ = (hi << 1) OR (lo AND LSB);
- }
- /* deal with most significant word (may be used only partially): */
- yy = *Y AND mask;
- if (minus) zz = (N_word) NOT ( Z ? *Z : 0 );
- else zz = (N_word) ( Z ? *Z : 0 );
- zz &= mask;
- if (mask == LSB) /* special case, only one bit used */
- {
- vv = cc;
- lo = yy + zz + cc;
- cc = (lo >> 1);
- vv ^= cc;
- *X = lo AND LSB;
- }
- else
- {
- if (NOT mask) /* not all bits are used, but more than one */
- {
- mm = (mask >> 1);
- vv = (yy AND mm) + (zz AND mm) + cc;
- mm = mask AND NOT mm;
- lo = yy + zz + cc;
- cc = (lo >> 1);
- vv ^= cc;
- vv &= mm;
- cc &= mm;
- *X = lo AND mask;
- }
- else /* other special case, all bits are used */
- {
- mm = NOT MSB;
- lo = (yy AND mm) + (zz AND mm) + cc;
- vv = lo AND MSB;
- hi = ((yy AND MSB) >> 1) + ((zz AND MSB) >> 1) + (vv >> 1);
- cc = hi AND MSB;
- vv ^= cc;
- *X = (hi << 1) OR (lo AND mm);
- }
- }
- if (minus) *carry = (cc == 0);
- else *carry = (cc != 0);
- }
- return(vv != 0);
-}
-
-boolean BitVector_add(wordptr X, wordptr Y, wordptr Z, boolean *carry)
-{
- return(BitVector_compute(X,Y,Z,FALSE,carry));
-}
-
-boolean BitVector_sub(wordptr X, wordptr Y, wordptr Z, boolean *carry)
-{
- return(BitVector_compute(X,Y,Z,TRUE,carry));
-}
-
-boolean BitVector_inc(wordptr X, wordptr Y)
-{
- boolean carry = TRUE;
-
- return(BitVector_compute(X,Y,NULL,FALSE,&carry));
-}
-
-boolean BitVector_dec(wordptr X, wordptr Y)
-{
- boolean carry = TRUE;
-
- return(BitVector_compute(X,Y,NULL,TRUE,&carry));
-}
-
-void BitVector_Negate(wordptr X, wordptr Y)
-{
- N_word size = size_(X);
- N_word mask = mask_(X);
- boolean carry = TRUE;
-
- if (size > 0)
- {
- while (size-- > 0)
- {
- *X = NOT *Y++;
- if (carry)
- {
- carry = (++(*X) == 0);
- }
- X++;
- }
- *(--X) &= mask;
- }
-}
-
-void BitVector_Absolute(wordptr X, wordptr Y)
-{
- N_word size = size_(Y);
- N_word mask = mask_(Y);
-
- if (size > 0)
- {
- if (*(Y+size-1) AND (mask AND NOT (mask >> 1))) BitVector_Negate(X,Y);
- else BitVector_Copy(X,Y);
- }
-}
-
-Z_int BitVector_Sign(wordptr addr)
-{
- N_word size = size_(addr);
- N_word mask = mask_(addr);
- wordptr last = addr + size - 1;
- boolean r = TRUE;
-
- if (size > 0)
- {
- *last &= mask;
- while (r and (size-- > 0)) r = ( *addr++ == 0 );
- }
- if (r) return((Z_int) 0);
- else
- {
- if (*last AND (mask AND NOT (mask >> 1))) return((Z_int) -1);
- else return((Z_int) 1);
- }
-}
-
-ErrCode BitVector_Mul_Pos(wordptr X, wordptr Y, wordptr Z, boolean strict)
-{
- N_word mask;
- N_word limit;
- N_word count;
- Z_long last;
- wordptr sign;
- boolean carry;
- boolean overflow;
- boolean ok = TRUE;
-
- /*
- Requirements:
- - X, Y and Z must be distinct
- - X and Y must have equal sizes (whereas Z may be any size!)
- - Z should always contain the SMALLER of the two factors Y and Z
- Constraints:
- - The contents of Y (and of X, of course) are destroyed
- (only Z is preserved!)
- */
-
- if ((X == Y) or (X == Z) or (Y == Z)) return(ErrCode_Same);
- if (bits_(X) != bits_(Y)) return(ErrCode_Size);
- BitVector_Empty(X);
- if (BitVector_is_empty(Y)) return(ErrCode_Ok); /* exit also taken if bits_(Y)==0 */
- if ((last = Set_Max(Z)) < 0L) return(ErrCode_Ok);
- limit = (N_word) last;
- sign = Y + size_(Y) - 1;
- mask = mask_(Y);
- *sign &= mask;
- mask &= NOT (mask >> 1);
- for ( count = 0; (ok and (count <= limit)); count++ )
- {
- if ( BIT_VECTOR_TST_BIT(Z,count) )
- {
- carry = false;
- overflow = BitVector_compute(X,X,Y,false,&carry);
- if (strict) ok = not (carry or overflow);
- else ok = not carry;
- }
- if (ok and (count < limit))
- {
- carry = BitVector_shift_left(Y,0);
- if (strict)
- {
- overflow = ((*sign AND mask) != 0);
- ok = not (carry or overflow);
- }
- else ok = not carry;
- }
- }
- if (ok) return(ErrCode_Ok); else return(ErrCode_Ovfl);
-}
-
-ErrCode BitVector_Multiply(wordptr X, wordptr Y, wordptr Z)
-{
- ErrCode error = ErrCode_Ok;
- N_word bit_x = bits_(X);
- N_word bit_y = bits_(Y);
- N_word bit_z = bits_(Z);
- N_word size;
- N_word mask;
- N_word msb;
- wordptr ptr_y;
- wordptr ptr_z;
- boolean sgn_x;
- boolean sgn_y;
- boolean sgn_z;
- boolean zero;
- wordptr A;
- wordptr B;
-
- /*
- Requirements:
- - Y and Z must have equal sizes
- - X must have at least the same size as Y and Z but may be larger (!)
- Features:
- - The contents of Y and Z are preserved
- - X may be identical with Y or Z (or both!)
- (in-place multiplication is possible!)
- */
-
- if ((bit_y != bit_z) or (bit_x < bit_y)) return(ErrCode_Size);
- if (BitVector_is_empty(Y) or BitVector_is_empty(Z))
- {
- BitVector_Empty(X);
- }
- else
- {
- A = BitVector_Create(bit_y,FALSE);
- if (A == NULL) return(ErrCode_Null);
- B = BitVector_Create(bit_z,FALSE);
- if (B == NULL) { BitVector_Destroy(A); return(ErrCode_Null); }
- size = size_(Y);
- mask = mask_(Y);
- msb = (mask AND NOT (mask >> 1));
- sgn_y = (((*(Y+size-1) &= mask) AND msb) != 0);
- sgn_z = (((*(Z+size-1) &= mask) AND msb) != 0);
- sgn_x = sgn_y XOR sgn_z;
- if (sgn_y) BitVector_Negate(A,Y); else BitVector_Copy(A,Y);
- if (sgn_z) BitVector_Negate(B,Z); else BitVector_Copy(B,Z);
- ptr_y = A + size;
- ptr_z = B + size;
- zero = TRUE;
- while (zero and (size-- > 0))
- {
- zero &= (*(--ptr_y) == 0);
- zero &= (*(--ptr_z) == 0);
- }
- if (*ptr_y > *ptr_z)
- {
- if (bit_x > bit_y)
- {
- A = BitVector_Resize(A,bit_x);
- if (A == NULL) { BitVector_Destroy(B); return(ErrCode_Null); }
- }
- error = BitVector_Mul_Pos(X,A,B,TRUE);
- }
- else
- {
- if (bit_x > bit_z)
- {
- B = BitVector_Resize(B,bit_x);
- if (B == NULL) { BitVector_Destroy(A); return(ErrCode_Null); }
- }
- error = BitVector_Mul_Pos(X,B,A,TRUE);
- }
- if ((not error) and sgn_x) BitVector_Negate(X,X);
- BitVector_Destroy(A);
- BitVector_Destroy(B);
- }
- return(error);
-}
-
-ErrCode BitVector_Div_Pos(wordptr Q, wordptr X, wordptr Y, wordptr R)
-{
- N_word bits = bits_(Q);
- N_word mask;
- wordptr addr;
- Z_long last;
- boolean flag;
- boolean copy = FALSE; /* flags whether valid rest is in R (0) or X (1) */
-
- /*
- Requirements:
- - All bit vectors must have equal sizes
- - Q, X, Y and R must all be distinct bit vectors
- - Y must be non-zero (of course!)
- Constraints:
- - The contents of X (and Q and R, of course) are destroyed
- (only Y is preserved!)
- */
-
- if ((bits != bits_(X)) or (bits != bits_(Y)) or (bits != bits_(R)))
- return(ErrCode_Size);
- if ((Q == X) or (Q == Y) or (Q == R) or (X == Y) or (X == R) or (Y == R))
- return(ErrCode_Same);
- if (BitVector_is_empty(Y))
- return(ErrCode_Zero);
-
- BitVector_Empty(R);
- BitVector_Copy(Q,X);
- if ((last = Set_Max(Q)) < 0L) return(ErrCode_Ok);
- bits = (N_word) ++last;
- while (bits-- > 0)
- {
- addr = Q + (bits >> LOGBITS);
- mask = BITMASKTAB[bits AND MODMASK];
- flag = ((*addr AND mask) != 0);
- if (copy)
- {
- BitVector_shift_left(X,flag);
- flag = FALSE;
- BitVector_compute(R,X,Y,TRUE,&flag);
- }
- else
- {
- BitVector_shift_left(R,flag);
- flag = FALSE;
- BitVector_compute(X,R,Y,TRUE,&flag);
- }
- if (flag) *addr &= NOT mask;
- else
- {
- *addr |= mask;
- copy = not copy;
- }
- }
- if (copy) BitVector_Copy(R,X);
- return(ErrCode_Ok);
-}
-
-ErrCode BitVector_Divide(wordptr Q, wordptr X, wordptr Y, wordptr R)
-{
- ErrCode error = ErrCode_Ok;
- N_word bits = bits_(Q);
- N_word size = size_(Q);
- N_word mask = mask_(Q);
- N_word msb = (mask AND NOT (mask >> 1));
- boolean sgn_q;
- boolean sgn_x;
- boolean sgn_y;
- wordptr A;
- wordptr B;
-
- /*
- Requirements:
- - All bit vectors must have equal sizes
- - Q and R must be two distinct bit vectors
- - Y must be non-zero (of course!)
- Features:
- - The contents of X and Y are preserved
- - Q may be identical with X or Y (or both)
- (in-place division is possible!)
- - R may be identical with X or Y (or both)
- (but not identical with Q!)
- */
-
- if ((bits != bits_(X)) or (bits != bits_(Y)) or (bits != bits_(R)))
- return(ErrCode_Size);
- if (Q == R)
- return(ErrCode_Same);
- if (BitVector_is_empty(Y))
- return(ErrCode_Zero);
-
- if (BitVector_is_empty(X))
- {
- BitVector_Empty(Q);
- BitVector_Empty(R);
- }
- else
- {
- A = BitVector_Create(bits,FALSE);
- if (A == NULL) return(ErrCode_Null);
- B = BitVector_Create(bits,FALSE);
- if (B == NULL) { BitVector_Destroy(A); return(ErrCode_Null); }
- size--;
- sgn_x = (((*(X+size) &= mask) AND msb) != 0);
- sgn_y = (((*(Y+size) &= mask) AND msb) != 0);
- sgn_q = sgn_x XOR sgn_y;
- if (sgn_x) BitVector_Negate(A,X); else BitVector_Copy(A,X);
- if (sgn_y) BitVector_Negate(B,Y); else BitVector_Copy(B,Y);
- if (not (error = BitVector_Div_Pos(Q,A,B,R)))
- {
- if (sgn_q) BitVector_Negate(Q,Q);
- if (sgn_x) BitVector_Negate(R,R);
- }
- BitVector_Destroy(A);
- BitVector_Destroy(B);
- }
- return(error);
-}
-
-ErrCode BitVector_GCD(wordptr X, wordptr Y, wordptr Z)
-{
- ErrCode error = ErrCode_Ok;
- N_word bits = bits_(X);
- N_word size = size_(X);
- N_word mask = mask_(X);
- N_word msb = (mask AND NOT (mask >> 1));
- boolean sgn_a;
- boolean sgn_b;
- boolean sgn_r;
- wordptr Q;
- wordptr R;
- wordptr A;
- wordptr B;
- wordptr T;
-
- /*
- Requirements:
- - All bit vectors must have equal sizes
- Features:
- - The contents of Y and Z are preserved
- - X may be identical with Y or Z (or both)
- (in-place is possible!)
- - GCD(0,z) == GCD(z,0) == z
- - negative values are handled correctly
- */
-
- if ((bits != bits_(Y)) or (bits != bits_(Z))) return(ErrCode_Size);
- if (BitVector_is_empty(Y))
- {
- if (X != Z) BitVector_Copy(X,Z);
- return(ErrCode_Ok);
- }
- if (BitVector_is_empty(Z))
- {
- if (X != Y) BitVector_Copy(X,Y);
- return(ErrCode_Ok);
- }
- Q = BitVector_Create(bits,false);
- if (Q == NULL)
- {
- return(ErrCode_Null);
- }
- R = BitVector_Create(bits,FALSE);
- if (R == NULL)
- {
- BitVector_Destroy(Q);
- return(ErrCode_Null);
- }
- A = BitVector_Create(bits,FALSE);
- if (A == NULL)
- {
- BitVector_Destroy(Q);
- BitVector_Destroy(R);
- return(ErrCode_Null);
- }
- B = BitVector_Create(bits,FALSE);
- if (B == NULL)
- {
- BitVector_Destroy(Q);
- BitVector_Destroy(R);
- BitVector_Destroy(A);
- return(ErrCode_Null);
- }
- size--;
- sgn_a = (((*(Y+size) &= mask) AND msb) != 0);
- sgn_b = (((*(Z+size) &= mask) AND msb) != 0);
- if (sgn_a) BitVector_Negate(A,Y); else BitVector_Copy(A,Y);
- if (sgn_b) BitVector_Negate(B,Z); else BitVector_Copy(B,Z);
- while (not error)
- {
- if (not (error = BitVector_Div_Pos(Q,A,B,R)))
- {
- if (BitVector_is_empty(R)) break;
- T = A; sgn_r = sgn_a;
- A = B; sgn_a = sgn_b;
- B = R; sgn_b = sgn_r;
- R = T;
- }
- }
- if (not error)
- {
- if (sgn_b) BitVector_Negate(X,B); else BitVector_Copy(X,B);
- }
- BitVector_Destroy(Q);
- BitVector_Destroy(R);
- BitVector_Destroy(A);
- BitVector_Destroy(B);
- return(error);
-}
-
-ErrCode BitVector_GCD2(wordptr U, wordptr V, wordptr W, wordptr X, wordptr Y)
-{
- ErrCode error = ErrCode_Ok;
- N_word bits = bits_(U);
- N_word size = size_(U);
- N_word mask = mask_(U);
- N_word msb = (mask AND NOT (mask >> 1));
- boolean minus;
- boolean carry;
- boolean sgn_q;
- boolean sgn_r;
- boolean sgn_a;
- boolean sgn_b;
- boolean sgn_x;
- boolean sgn_y;
- listptr L;
- wordptr Q;
- wordptr R;
- wordptr A;
- wordptr B;
- wordptr T;
- wordptr X1;
- wordptr X2;
- wordptr X3;
- wordptr Y1;
- wordptr Y2;
- wordptr Y3;
- wordptr Z;
-
- /*
- Requirements:
- - All bit vectors must have equal sizes
- - U, V, and W must all be distinct bit vectors
- Features:
- - The contents of X and Y are preserved
- - U, V and W may be identical with X or Y (or both,
- provided that U, V and W are mutually distinct)
- (i.e., in-place is possible!)
- - GCD(0,z) == GCD(z,0) == z
- - negative values are handled correctly
- */
-
- if ((bits != bits_(V)) or
- (bits != bits_(W)) or
- (bits != bits_(X)) or
- (bits != bits_(Y)))
- {
- return(ErrCode_Size);
- }
- if ((U == V) or (U == W) or (V == W))
- {
- return(ErrCode_Same);
- }
- if (BitVector_is_empty(X))
- {
- if (U != Y) BitVector_Copy(U,Y);
- BitVector_Empty(V);
- BitVector_Empty(W);
- *W = 1;
- return(ErrCode_Ok);
- }
- if (BitVector_is_empty(Y))
- {
- if (U != X) BitVector_Copy(U,X);
- BitVector_Empty(V);
- BitVector_Empty(W);
- *V = 1;
- return(ErrCode_Ok);
- }
- if ((L = BitVector_Create_List(bits,false,11)) == NULL)
- {
- return(ErrCode_Null);
- }
- Q = L[0];
- R = L[1];
- A = L[2];
- B = L[3];
- X1 = L[4];
- X2 = L[5];
- X3 = L[6];
- Y1 = L[7];
- Y2 = L[8];
- Y3 = L[9];
- Z = L[10];
- size--;
- sgn_a = (((*(X+size) &= mask) AND msb) != 0);
- sgn_b = (((*(Y+size) &= mask) AND msb) != 0);
- if (sgn_a) BitVector_Negate(A,X); else BitVector_Copy(A,X);
- if (sgn_b) BitVector_Negate(B,Y); else BitVector_Copy(B,Y);
- BitVector_Empty(X1);
- BitVector_Empty(X2);
- *X1 = 1;
- BitVector_Empty(Y1);
- BitVector_Empty(Y2);
- *Y2 = 1;
- sgn_x = false;
- sgn_y = false;
- while (not error)
- {
- if ((error = BitVector_Div_Pos(Q,A,B,R)))
- {
- break;
- }
- if (BitVector_is_empty(R))
- {
- break;
- }
- sgn_q = sgn_a XOR sgn_b;
-
- if (sgn_x) BitVector_Negate(Z,X2); else BitVector_Copy(Z,X2);
- if ((error = BitVector_Mul_Pos(X3,Z,Q,true)))
- {
- break;
- }
- minus = not (sgn_x XOR sgn_q);
- carry = 0;
- if (BitVector_compute(X3,X1,X3,minus,&carry))
- {
- error = ErrCode_Ovfl;
- break;
- }
- sgn_x = (((*(X3+size) &= mask) AND msb) != 0);
-
- if (sgn_y) BitVector_Negate(Z,Y2); else BitVector_Copy(Z,Y2);
- if ((error = BitVector_Mul_Pos(Y3,Z,Q,true)))
- {
- break;
- }
- minus = not (sgn_y XOR sgn_q);
- carry = 0;
- if (BitVector_compute(Y3,Y1,Y3,minus,&carry))
- {
- error = ErrCode_Ovfl;
- break;
- }
- sgn_y = (((*(Y3+size) &= mask) AND msb) != 0);
-
- T = A; sgn_r = sgn_a;
- A = B; sgn_a = sgn_b;
- B = R; sgn_b = sgn_r;
- R = T;
-
- T = X1;
- X1 = X2;
- X2 = X3;
- X3 = T;
-
- T = Y1;
- Y1 = Y2;
- Y2 = Y3;
- Y3 = T;
- }
- if (not error)
- {
- if (sgn_b) BitVector_Negate(U,B); else BitVector_Copy(U,B);
- BitVector_Copy(V,X2);
- BitVector_Copy(W,Y2);
- }
- BitVector_Destroy_List(L,11);
- return(error);
-}
-
-ErrCode BitVector_Power(wordptr X, wordptr Y, wordptr Z)
-{
- ErrCode error = ErrCode_Ok;
- N_word bits = bits_(X);
- boolean first = TRUE;
- Z_long last;
- N_word limit;
- N_word count;
- wordptr T;
-
- /*
- Requirements:
- - X must have at least the same size as Y but may be larger (!)
- - X may not be identical with Z
- - Z must be positive
- Features:
- - The contents of Y and Z are preserved
- */
-
- if (X == Z) return(ErrCode_Same);
- if (bits < bits_(Y)) return(ErrCode_Size);
- if (BitVector_msb_(Z)) return(ErrCode_Expo);
- if ((last = Set_Max(Z)) < 0L)
- {
- if (bits < 2) return(ErrCode_Ovfl);
- BitVector_Empty(X);
- *X |= LSB;
- return(ErrCode_Ok); /* anything ^ 0 == 1 */
- }
- if (BitVector_is_empty(Y))
- {
- if (X != Y) BitVector_Empty(X);
- return(ErrCode_Ok); /* 0 ^ anything not zero == 0 */
- }
- T = BitVector_Create(bits,FALSE);
- if (T == NULL) return(ErrCode_Null);
- limit = (N_word) last;
- for ( count = 0; ((!error) and (count <= limit)); count++ )
- {
- if ( BIT_VECTOR_TST_BIT(Z,count) )
- {
- if (first)
- {
- first = FALSE;
- if (count) { BitVector_Copy(X,T); }
- else { if (X != Y) BitVector_Copy(X,Y); }
- }
- else error = BitVector_Multiply(X,T,X); /* order important because T > X */
- }
- if ((!error) and (count < limit))
- {
- if (count) error = BitVector_Multiply(T,T,T);
- else error = BitVector_Multiply(T,Y,Y);
- }
- }
- BitVector_Destroy(T);
- return(error);
-}
-
-void BitVector_Block_Store(wordptr addr, charptr buffer, N_int length)
-{
- N_word size = size_(addr);
- N_word mask = mask_(addr);
- N_word value;
- N_word count;
-
- /* provide translation for independence of endian-ness: */
- if (size > 0)
- {
- while (size-- > 0)
- {
- value = 0;
- for ( count = 0; (length > 0) and (count < BITS); count += 8 )
- {
- value |= (((N_word) *buffer++) << count); length--;
- }
- *addr++ = value;
- }
- *(--addr) &= mask;
- }
-}
-
-charptr BitVector_Block_Read(wordptr addr, N_intptr length)
-{
- N_word size = size_(addr);
- N_word value;
- N_word count;
- charptr buffer;
- charptr target;
-
- /* provide translation for independence of endian-ness: */
- *length = size << FACTOR;
- buffer = (charptr) yasm_xmalloc((size_t) ((*length)+1));
- if (buffer == NULL) return(NULL);
- target = buffer;
- if (size > 0)
- {
- *(addr+size-1) &= mask_(addr);
- while (size-- > 0)
- {
- value = *addr++;
- count = BITS >> 3;
- while (count-- > 0)
- {
- *target++ = (N_char) (value AND 0x00FF);
- if (count > 0) value >>= 8;
- }
- }
- }
- *target = (N_char) '\0';
- return(buffer);
-}
-
-void BitVector_Word_Store(wordptr addr, N_int offset, N_int value)
-{
- N_word size = size_(addr);
-
- if (size > 0)
- {
- if (offset < size) *(addr+offset) = value;
- *(addr+size-1) &= mask_(addr);
- }
-}
-
-N_int BitVector_Word_Read(wordptr addr, N_int offset)
-{
- N_word size = size_(addr);
-
- if (size > 0)
- {
- *(addr+size-1) &= mask_(addr);
- if (offset < size) return( *(addr+offset) );
- }
- return( (N_int) 0 );
-}
-
-void BitVector_Word_Insert(wordptr addr, N_int offset, N_int count,
- boolean clear)
-{
- N_word size = size_(addr);
- N_word mask = mask_(addr);
- wordptr last = addr+size-1;
-
- if (size > 0)
- {
- *last &= mask;
- if (offset > size) offset = size;
- BIT_VECTOR_ins_words(addr+offset,size-offset,count,clear);
- *last &= mask;
- }
-}
-
-void BitVector_Word_Delete(wordptr addr, N_int offset, N_int count,
- boolean clear)
-{
- N_word size = size_(addr);
- N_word mask = mask_(addr);
- wordptr last = addr+size-1;
-
- if (size > 0)
- {
- *last &= mask;
- if (offset > size) offset = size;
- BIT_VECTOR_del_words(addr+offset,size-offset,count,clear);
- *last &= mask;
- }
-}
-
-void BitVector_Chunk_Store(wordptr addr, N_int chunksize, N_int offset,
- N_long value)
-{
- N_word bits = bits_(addr);
- N_word mask;
- N_word temp;
-
- if ((chunksize > 0) and (offset < bits))
- {
- if (chunksize > LONGBITS) chunksize = LONGBITS;
- if ((offset + chunksize) > bits) chunksize = bits - offset;
- addr += offset >> LOGBITS;
- offset &= MODMASK;
- while (chunksize > 0)
- {
- mask = (N_word) (~0L << offset);
- bits = offset + chunksize;
- if (bits < BITS)
- {
- mask &= (N_word) ~(~0L << bits);
- bits = chunksize;
- }
- else bits = BITS - offset;
- temp = (N_word) (value << offset);
- temp &= mask;
- *addr &= NOT mask;
- *addr++ |= temp;
- value >>= bits;
- chunksize -= bits;
- offset = 0;
- }
- }
-}
-
-N_long BitVector_Chunk_Read(wordptr addr, N_int chunksize, N_int offset)
-{
- N_word bits = bits_(addr);
- N_word chunkbits = 0;
- N_long value = 0L;
- N_long temp;
- N_word mask;
-
- if ((chunksize > 0) and (offset < bits))
- {
- if (chunksize > LONGBITS) chunksize = LONGBITS;
- if ((offset + chunksize) > bits) chunksize = bits - offset;
- addr += offset >> LOGBITS;
- offset &= MODMASK;
- while (chunksize > 0)
- {
- bits = offset + chunksize;
- if (bits < BITS)
- {
- mask = (N_word) ~(~0L << bits);
- bits = chunksize;
- }
- else
- {
- mask = (N_word) ~0L;
- bits = BITS - offset;
- }
- temp = (N_long) ((*addr++ AND mask) >> offset);
- value |= temp << chunkbits;
- chunkbits += bits;
- chunksize -= bits;
- offset = 0;
- }
- }
- return(value);
-}
-
- /*******************/
- /* set operations: */
- /*******************/
-
-void Set_Union(wordptr X, wordptr Y, wordptr Z) /* X = Y + Z */
-{
- N_word bits = bits_(X);
- N_word size = size_(X);
- N_word mask = mask_(X);
-
- if ((size > 0) and (bits == bits_(Y)) and (bits == bits_(Z)))
- {
- while (size-- > 0) *X++ = *Y++ OR *Z++;
- *(--X) &= mask;
- }
-}
-
-void Set_Intersection(wordptr X, wordptr Y, wordptr Z) /* X = Y * Z */
-{
- N_word bits = bits_(X);
- N_word size = size_(X);
- N_word mask = mask_(X);
-
- if ((size > 0) and (bits == bits_(Y)) and (bits == bits_(Z)))
- {
- while (size-- > 0) *X++ = *Y++ AND *Z++;
- *(--X) &= mask;
- }
-}
-
-void Set_Difference(wordptr X, wordptr Y, wordptr Z) /* X = Y \ Z */
-{
- N_word bits = bits_(X);
- N_word size = size_(X);
- N_word mask = mask_(X);
-
- if ((size > 0) and (bits == bits_(Y)) and (bits == bits_(Z)))
- {
- while (size-- > 0) *X++ = *Y++ AND NOT *Z++;
- *(--X) &= mask;
- }
-}
-
-void Set_ExclusiveOr(wordptr X, wordptr Y, wordptr Z) /* X=(Y+Z)\(Y*Z) */
-{
- N_word bits = bits_(X);
- N_word size = size_(X);
- N_word mask = mask_(X);
-
- if ((size > 0) and (bits == bits_(Y)) and (bits == bits_(Z)))
- {
- while (size-- > 0) *X++ = *Y++ XOR *Z++;
- *(--X) &= mask;
- }
-}
-
-void Set_Complement(wordptr X, wordptr Y) /* X = ~Y */
-{
- N_word size = size_(X);
- N_word mask = mask_(X);
-
- if ((size > 0) and (bits_(X) == bits_(Y)))
- {
- while (size-- > 0) *X++ = NOT *Y++;
- *(--X) &= mask;
- }
-}
-
- /******************/
- /* set functions: */
- /******************/
-
-boolean Set_subset(wordptr X, wordptr Y) /* X subset Y ? */
-{
- N_word size = size_(X);
- boolean r = FALSE;
-
- if ((size > 0) and (bits_(X) == bits_(Y)))
- {
- r = TRUE;
- while (r and (size-- > 0)) r = ((*X++ AND NOT *Y++) == 0);
- }
- return(r);
-}
-
-N_int Set_Norm(wordptr addr) /* = | X | */
-{
- byteptr byte;
- N_word bytes;
- N_int n;
-
- byte = (byteptr) addr;
- bytes = size_(addr) << FACTOR;
- n = 0;
- while (bytes-- > 0)
- {
- n += BitVector_BYTENORM[*byte++];
- }
- return(n);
-}
-
-N_int Set_Norm2(wordptr addr) /* = | X | */
-{
- N_word size = size_(addr);
- N_word w0,w1;
- N_int n,k;
-
- n = 0;
- while (size-- > 0)
- {
- k = 0;
- w1 = NOT (w0 = *addr++);
- while (w0 and w1)
- {
- w0 &= w0 - 1;
- w1 &= w1 - 1;
- k++;
- }
- if (w0 == 0) n += k;
- else n += BITS - k;
- }
- return(n);
-}
-
-N_int Set_Norm3(wordptr addr) /* = | X | */
-{
- N_word size = size_(addr);
- N_int count = 0;
- N_word c;
-
- while (size-- > 0)
- {
- c = *addr++;
- while (c)
- {
- c &= c - 1;
- count++;
- }
- }
- return(count);
-}
-
-Z_long Set_Min(wordptr addr) /* = min(X) */
-{
- boolean empty = TRUE;
- N_word size = size_(addr);
- N_word i = 0;
- N_word c = 0; /* silence compiler warning */
-
- while (empty and (size-- > 0))
- {
- if ((c = *addr++)) empty = false; else i++;
- }
- if (empty) return((Z_long) LONG_MAX); /* plus infinity */
- i <<= LOGBITS;
- while (not (c AND LSB))
- {
- c >>= 1;
- i++;
- }
- return((Z_long) i);
-}
-
-Z_long Set_Max(wordptr addr) /* = max(X) */
-{
- boolean empty = TRUE;
- N_word size = size_(addr);
- N_word i = size;
- N_word c = 0; /* silence compiler warning */
-
- addr += size-1;
- while (empty and (size-- > 0))
- {
- if ((c = *addr--)) empty = false; else i--;
- }
- if (empty) return((Z_long) LONG_MIN); /* minus infinity */
- i <<= LOGBITS;
- while (not (c AND MSB))
- {
- c <<= 1;
- i--;
- }
- return((Z_long) --i);
-}
-
- /**********************************/
- /* matrix-of-booleans operations: */
- /**********************************/
-
-void Matrix_Multiplication(wordptr X, N_int rowsX, N_int colsX,
- wordptr Y, N_int rowsY, N_int colsY,
- wordptr Z, N_int rowsZ, N_int colsZ)
-{
- N_word i;
- N_word j;
- N_word k;
- N_word indxX;
- N_word indxY;
- N_word indxZ;
- N_word termX;
- N_word termY;
- N_word sum;
-
- if ((colsY == rowsZ) and (rowsX == rowsY) and (colsX == colsZ) and
- (bits_(X) == rowsX*colsX) and
- (bits_(Y) == rowsY*colsY) and
- (bits_(Z) == rowsZ*colsZ))
- {
- for ( i = 0; i < rowsY; i++ )
- {
- termX = i * colsX;
- termY = i * colsY;
- for ( j = 0; j < colsZ; j++ )
- {
- indxX = termX + j;
- sum = 0;
- for ( k = 0; k < colsY; k++ )
- {
- indxY = termY + k;
- indxZ = k * colsZ + j;
- if ( BIT_VECTOR_TST_BIT(Y,indxY) &&
- BIT_VECTOR_TST_BIT(Z,indxZ) ) sum ^= 1;
- }
- if (sum) BIT_VECTOR_SET_BIT(X,indxX)
- else BIT_VECTOR_CLR_BIT(X,indxX)
- }
- }
- }
-}
-
-void Matrix_Product(wordptr X, N_int rowsX, N_int colsX,
- wordptr Y, N_int rowsY, N_int colsY,
- wordptr Z, N_int rowsZ, N_int colsZ)
-{
- N_word i;
- N_word j;
- N_word k;
- N_word indxX;
- N_word indxY;
- N_word indxZ;
- N_word termX;
- N_word termY;
- N_word sum;
-
- if ((colsY == rowsZ) and (rowsX == rowsY) and (colsX == colsZ) and
- (bits_(X) == rowsX*colsX) and
- (bits_(Y) == rowsY*colsY) and
- (bits_(Z) == rowsZ*colsZ))
- {
- for ( i = 0; i < rowsY; i++ )
- {
- termX = i * colsX;
- termY = i * colsY;
- for ( j = 0; j < colsZ; j++ )
- {
- indxX = termX + j;
- sum = 0;
- for ( k = 0; k < colsY; k++ )
- {
- indxY = termY + k;
- indxZ = k * colsZ + j;
- if ( BIT_VECTOR_TST_BIT(Y,indxY) &&
- BIT_VECTOR_TST_BIT(Z,indxZ) ) sum |= 1;
- }
- if (sum) BIT_VECTOR_SET_BIT(X,indxX)
- else BIT_VECTOR_CLR_BIT(X,indxX)
- }
- }
- }
-}
-
-void Matrix_Closure(wordptr addr, N_int rows, N_int cols)
-{
- N_word i;
- N_word j;
- N_word k;
- N_word ii;
- N_word ij;
- N_word ik;
- N_word kj;
- N_word termi;
- N_word termk;
-
- if ((rows == cols) and (bits_(addr) == rows*cols))
- {
- for ( i = 0; i < rows; i++ )
- {
- ii = i * cols + i;
- BIT_VECTOR_SET_BIT(addr,ii)
- }
- for ( k = 0; k < rows; k++ )
- {
- termk = k * cols;
- for ( i = 0; i < rows; i++ )
- {
- termi = i * cols;
- ik = termi + k;
- for ( j = 0; j < rows; j++ )
- {
- ij = termi + j;
- kj = termk + j;
- if ( BIT_VECTOR_TST_BIT(addr,ik) &&
- BIT_VECTOR_TST_BIT(addr,kj) )
- BIT_VECTOR_SET_BIT(addr,ij)
- }
- }
- }
- }
-}
-
-void Matrix_Transpose(wordptr X, N_int rowsX, N_int colsX,
- wordptr Y, N_int rowsY, N_int colsY)
-{
- N_word i;
- N_word j;
- N_word ii;
- N_word ij;
- N_word ji;
- N_word addii;
- N_word addij;
- N_word addji;
- N_word bitii;
- N_word bitij;
- N_word bitji;
- N_word termi;
- N_word termj;
- boolean swap;
-
- /* BEWARE that "in-place" is ONLY possible if the matrix is quadratic!! */
-
- if ((rowsX == colsY) and (colsX == rowsY) and
- (bits_(X) == rowsX*colsX) and
- (bits_(Y) == rowsY*colsY))
- {
- if (rowsY == colsY) /* in-place is possible! */
- {
- for ( i = 0; i < rowsY; i++ )
- {
- termi = i * colsY;
- for ( j = 0; j < i; j++ )
- {
- termj = j * colsX;
- ij = termi + j;
- ji = termj + i;
- addij = ij >> LOGBITS;
- addji = ji >> LOGBITS;
- bitij = BITMASKTAB[ij AND MODMASK];
- bitji = BITMASKTAB[ji AND MODMASK];
- swap = ((*(Y+addij) AND bitij) != 0);
- if ((*(Y+addji) AND bitji) != 0)
- *(X+addij) |= bitij;
- else
- *(X+addij) &= NOT bitij;
- if (swap)
- *(X+addji) |= bitji;
- else
- *(X+addji) &= NOT bitji;
- }
- ii = termi + i;
- addii = ii >> LOGBITS;
- bitii = BITMASKTAB[ii AND MODMASK];
- if ((*(Y+addii) AND bitii) != 0)
- *(X+addii) |= bitii;
- else
- *(X+addii) &= NOT bitii;
- }
- }
- else /* rowsX != colsX, in-place is NOT possible! */
- {
- for ( i = 0; i < rowsY; i++ )
- {
- termi = i * colsY;
- for ( j = 0; j < colsY; j++ )
- {
- termj = j * colsX;
- ij = termi + j;
- ji = termj + i;
- addij = ij >> LOGBITS;
- addji = ji >> LOGBITS;
- bitij = BITMASKTAB[ij AND MODMASK];
- bitji = BITMASKTAB[ji AND MODMASK];
- if ((*(Y+addij) AND bitij) != 0)
- *(X+addji) |= bitji;
- else
- *(X+addji) &= NOT bitji;
- }
- }
- }
- }
-}
-
-/*****************************************************************************/
-/* VERSION: 6.4 */
-/*****************************************************************************/
-/* VERSION HISTORY: */
-/*****************************************************************************/
-/* */
-/* Version 6.4 03.10.04 Added C++ comp. directives. Improved "Norm()". */
-/* Version 6.3 28.09.02 Added "Create_List()" and "GCD2()". */
-/* Version 6.2 15.09.02 Overhauled error handling. Fixed "GCD()". */
-/* Version 6.1 08.10.01 Make VMS linker happy: _lsb,_msb => _lsb_,_msb_ */
-/* Version 6.0 08.10.00 Corrected overflow handling. */
-/* Version 5.8 14.07.00 Added "Power()". Changed "Copy()". */
-/* Version 5.7 19.05.99 Quickened "Div_Pos()". Added "Product()". */
-/* Version 5.6 02.11.98 Leading zeros eliminated in "to_Hex()". */
-/* Version 5.5 21.09.98 Fixed bug of uninitialized "error" in Multiply. */
-/* Version 5.4 07.09.98 Fixed bug of uninitialized "error" in Divide. */
-/* Version 5.3 12.05.98 Improved Norm. Completed history. */
-/* Version 5.2 31.03.98 Improved Norm. */
-/* Version 5.1 09.03.98 No changes. */
-/* Version 5.0 01.03.98 Major additions and rewrite. */
-/* Version 4.2 16.07.97 Added is_empty, is_full. */
-/* Version 4.1 30.06.97 Added word-ins/del, move-left/right, inc/dec. */
-/* Version 4.0 23.04.97 Rewrite. Added bit shift and bool. matrix ops. */
-/* Version 3.2 04.02.97 Added interval methods. */
-/* Version 3.1 21.01.97 Fixed bug on 64 bit machines. */
-/* Version 3.0 12.01.97 Added flip. */
-/* Version 2.0 14.12.96 Efficiency and consistency improvements. */
-/* Version 1.1 08.01.96 Added Resize and ExclusiveOr. */
-/* Version 1.0 14.12.95 First version under UNIX (with Perl module). */
-/* Version 0.9 01.11.93 First version of C library under MS-DOS. */
-/* Version 0.1 ??.??.89 First version in Turbo Pascal under CP/M. */
-/* */
-/*****************************************************************************/
-/* AUTHOR: */
-/*****************************************************************************/
-/* */
-/* Steffen Beyer */
-/* mailto:sb@engelschall.com */
-/* http://www.engelschall.com/u/sb/download/ */
-/* */
-/*****************************************************************************/
-/* COPYRIGHT: */
-/*****************************************************************************/
-/* */
-/* Copyright (c) 1995 - 2004 by Steffen Beyer. */
-/* All rights reserved. */
-/* */
-/*****************************************************************************/
-/* LICENSE: */
-/*****************************************************************************/
-/* This package is free software; you can use, modify and redistribute */
-/* it under the same terms as Perl itself, i.e., under the terms of */
-/* the "Artistic License" or the "GNU General Public License". */
-/* */
-/* The C library at the core of this Perl module can additionally */
-/* be used, modified and redistributed under the terms of the */
-/* "GNU Library General Public License". */
-/* */
-/*****************************************************************************/
-/* ARTISTIC LICENSE: */
-/*****************************************************************************/
-/*
- The "Artistic License"
-
- Preamble
-
-The intent of this document is to state the conditions under which a
-Package may be copied, such that the Copyright Holder maintains some
-semblance of artistic control over the development of the package,
-while giving the users of the package the right to use and distribute
-the Package in a more-or-less customary fashion, plus the right to make
-reasonable modifications.
-
-Definitions:
-
- "Package" refers to the collection of files distributed by the
- Copyright Holder, and derivatives of that collection of files
- created through textual modification.
-
- "Standard Version" refers to such a Package if it has not been
- modified, or has been modified in accordance with the wishes
- of the Copyright Holder as specified below.
-
- "Copyright Holder" is whoever is named in the copyright or
- copyrights for the package.
-
- "You" is you, if you're thinking about copying or distributing
- this Package.
-
- "Reasonable copying fee" is whatever you can justify on the
- basis of media cost, duplication charges, time of people involved,
- and so on. (You will not be required to justify it to the
- Copyright Holder, but only to the computing community at large
- as a market that must bear the fee.)
-
- "Freely Available" means that no fee is charged for the item
- itself, though there may be fees involved in handling the item.
- It also means that recipients of the item may redistribute it
- under the same conditions they received it.
-
-1. You may make and give away verbatim copies of the source form of the
-Standard Version of this Package without restriction, provided that you
-duplicate all of the original copyright notices and associated disclaimers.
-
-2. You may apply bug fixes, portability fixes and other modifications
-derived from the Public Domain or from the Copyright Holder. A Package
-modified in such a way shall still be considered the Standard Version.
-
-3. You may otherwise modify your copy of this Package in any way, provided
-that you insert a prominent notice in each changed file stating how and
-when you changed that file, and provided that you do at least ONE of the
-following:
-
- a) place your modifications in the Public Domain or otherwise make them
- Freely Available, such as by posting said modifications to Usenet or
- an equivalent medium, or placing the modifications on a major archive
- site such as uunet.uu.net, or by allowing the Copyright Holder to include
- your modifications in the Standard Version of the Package.
-
- b) use the modified Package only within your corporation or organization.
-
- c) rename any non-standard executables so the names do not conflict
- with standard executables, which must also be provided, and provide
- a separate manual page for each non-standard executable that clearly
- documents how it differs from the Standard Version.
-
- d) make other distribution arrangements with the Copyright Holder.
-
-4. You may distribute the programs of this Package in object code or
-executable form, provided that you do at least ONE of the following:
-
- a) distribute a Standard Version of the executables and library files,
- together with instructions (in the manual page or equivalent) on where
- to get the Standard Version.
-
- b) accompany the distribution with the machine-readable source of
- the Package with your modifications.
-
- c) give non-standard executables non-standard names, and clearly
- document the differences in manual pages (or equivalent), together
- with instructions on where to get the Standard Version.
-
- d) make other distribution arrangements with the Copyright Holder.
-
-5. You may charge a reasonable copying fee for any distribution of this
-Package. You may charge any fee you choose for support of this
-Package. You may not charge a fee for this Package itself. However,
-you may distribute this Package in aggregate with other (possibly
-commercial) programs as part of a larger (possibly commercial) software
-distribution provided that you do not advertise this Package as a
-product of your own. You may embed this Package's interpreter within
-an executable of yours (by linking); this shall be construed as a mere
-form of aggregation, provided that the complete Standard Version of the
-interpreter is so embedded.
-
-6. The scripts and library files supplied as input to or produced as
-output from the programs of this Package do not automatically fall
-under the copyright of this Package, but belong to whoever generated
-them, and may be sold commercially, and may be aggregated with this
-Package. If such scripts or library files are aggregated with this
-Package via the so-called "undump" or "unexec" methods of producing a
-binary executable image, then distribution of such an image shall
-neither be construed as a distribution of this Package nor shall it
-fall under the restrictions of Paragraphs 3 and 4, provided that you do
-not represent such an executable image as a Standard Version of this
-Package.
-
-7. C subroutines (or comparably compiled subroutines in other
-languages) supplied by you and linked into this Package in order to
-emulate subroutines and variables of the language defined by this
-Package shall not be considered part of this Package, but are the
-equivalent of input as in Paragraph 6, provided these subroutines do
-not change the language in any way that would cause it to fail the
-regression tests for the language.
-
-8. Aggregation of this Package with a commercial distribution is always
-permitted provided that the use of this Package is embedded; that is,
-when no overt attempt is made to make this Package's interfaces visible
-to the end user of the commercial distribution. Such use shall not be
-construed as a distribution of this Package.
-
-9. The name of the Copyright Holder may not be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-
- The End
-*/
-/*****************************************************************************/
-/* GNU GENERAL PUBLIC LICENSE: */
-/*****************************************************************************/
-/* 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 2 */
-/* 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, write to the */
-/* Free Software Foundation, Inc., */
-/* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-/* */
-/*****************************************************************************/
-/* GNU LIBRARY GENERAL PUBLIC LICENSE: */
-/*****************************************************************************/
-/* This library is free software; you can redistribute it and/or */
-/* modify it under the terms of the GNU Library General Public */
-/* License as published by the Free Software Foundation; either */
-/* version 2 of the License, or (at your option) any later version. */
-/* */
-/* This library 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 */
-/* Library General Public License for more details. */
-/* */
-/* You should have received a copy of the GNU Library General Public */
-/* License along with this library; if not, write to the */
-/* Free Software Foundation, Inc., */
-/* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
-/* */
-/* or download a copy from ftp://ftp.gnu.org/pub/gnu/COPYING.LIB-2.0 */
-/* */
-/*****************************************************************************/
+#include "util.h"
+
+#include "coretype.h"
+
+/*****************************************************************************/
+/* MODULE NAME: BitVector.c MODULE TYPE: (adt) */
+/*****************************************************************************/
+/* MODULE IMPORTS: */
+/*****************************************************************************/
+#include <ctype.h> /* MODULE TYPE: (sys) */
+#include <limits.h> /* MODULE TYPE: (sys) */
+#include <string.h> /* MODULE TYPE: (sys) */
+/*****************************************************************************/
+/* MODULE INTERFACE: */
+/*****************************************************************************/
+#include "bitvect.h"
+
+/* ToolBox.h */
+#define and && /* logical (boolean) operators: lower case */
+#define or ||
+#define not !
+
+#define AND & /* binary (bitwise) operators: UPPER CASE */
+#define OR |
+#define XOR ^
+#define NOT ~
+#define SHL <<
+#define SHR >>
+
+#ifdef ENABLE_MODULO
+#define mod % /* arithmetic operators */
+#endif
+
+#define blockdef(name,size) unsigned char name[size]
+#define blocktypedef(name,size) typedef unsigned char name[size]
+
+/*****************************************************************************/
+/* MODULE RESOURCES: */
+/*****************************************************************************/
+
+#define bits_(BitVector) *(BitVector-3)
+#define size_(BitVector) *(BitVector-2)
+#define mask_(BitVector) *(BitVector-1)
+
+#define ERRCODE_TYPE "sizeof(word) > sizeof(size_t)"
+#define ERRCODE_BITS "bits(word) != sizeof(word)*8"
+#define ERRCODE_WORD "bits(word) < 16"
+#define ERRCODE_LONG "bits(word) > bits(long)"
+#define ERRCODE_POWR "bits(word) != 2^x"
+#define ERRCODE_LOGA "bits(word) != 2^ld(bits(word))"
+#define ERRCODE_NULL "unable to allocate memory"
+#define ERRCODE_INDX "index out of range"
+#define ERRCODE_ORDR "minimum > maximum index"
+#define ERRCODE_SIZE "bit vector size mismatch"
+#define ERRCODE_PARS "input string syntax error"
+#define ERRCODE_OVFL "numeric overflow error"
+#define ERRCODE_SAME "result vector(s) must be distinct"
+#define ERRCODE_EXPO "exponent must be positive"
+#define ERRCODE_ZERO "division by zero error"
+#define ERRCODE_OOPS "unexpected internal error - please contact author"
+
+const N_int BitVector_BYTENORM[256] =
+{
+ 0x00, 0x01, 0x01, 0x02, 0x01, 0x02, 0x02, 0x03,
+ 0x01, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04, /* 0x00 */
+ 0x01, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04,
+ 0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05, /* 0x10 */
+ 0x01, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04,
+ 0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05, /* 0x20 */
+ 0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05,
+ 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, /* 0x30 */
+ 0x01, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04,
+ 0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05, /* 0x40 */
+ 0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05,
+ 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, /* 0x50 */
+ 0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05,
+ 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, /* 0x60 */
+ 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06,
+ 0x04, 0x05, 0x05, 0x06, 0x05, 0x06, 0x06, 0x07, /* 0x70 */
+ 0x01, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04,
+ 0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05, /* 0x80 */
+ 0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05,
+ 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, /* 0x90 */
+ 0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05,
+ 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, /* 0xA0 */
+ 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06,
+ 0x04, 0x05, 0x05, 0x06, 0x05, 0x06, 0x06, 0x07, /* 0xB0 */
+ 0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05,
+ 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, /* 0xC0 */
+ 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06,
+ 0x04, 0x05, 0x05, 0x06, 0x05, 0x06, 0x06, 0x07, /* 0xD0 */
+ 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06,
+ 0x04, 0x05, 0x05, 0x06, 0x05, 0x06, 0x06, 0x07, /* 0xE0 */
+ 0x04, 0x05, 0x05, 0x06, 0x05, 0x06, 0x06, 0x07,
+ 0x05, 0x06, 0x06, 0x07, 0x06, 0x07, 0x07, 0x08 /* 0xF0 */
+};
+
+/*****************************************************************************/
+/* MODULE IMPLEMENTATION: */
+/*****************************************************************************/
+
+ /**********************************************/
+ /* global implementation-intrinsic constants: */
+ /**********************************************/
+
+#define BIT_VECTOR_HIDDEN_WORDS 3
+
+ /*****************************************************************/
+ /* global machine-dependent constants (set by "BitVector_Boot"): */
+ /*****************************************************************/
+
+static N_word BITS; /* = # of bits in machine word (must be power of 2) */
+static N_word MODMASK; /* = BITS - 1 (mask for calculating modulo BITS) */
+static N_word LOGBITS; /* = ld(BITS) (logarithmus dualis) */
+static N_word FACTOR; /* = ld(BITS / 8) (ld of # of bytes) */
+
+static N_word LSB = 1; /* = mask for least significant bit */
+static N_word MSB; /* = mask for most significant bit */
+
+static N_word LONGBITS; /* = # of bits in unsigned long */
+
+static N_word LOG10; /* = logarithm to base 10 of BITS - 1 */
+static N_word EXP10; /* = largest possible power of 10 in signed int */
+
+ /********************************************************************/
+ /* global bit mask table for fast access (set by "BitVector_Boot"): */
+ /********************************************************************/
+
+static wordptr BITMASKTAB;
+
+ /*****************************/
+ /* global macro definitions: */
+ /*****************************/
+
+#define BIT_VECTOR_ZERO_WORDS(target,count) \
+ while (count-- > 0) *target++ = 0;
+
+#define BIT_VECTOR_FILL_WORDS(target,fill,count) \
+ while (count-- > 0) *target++ = fill;
+
+#define BIT_VECTOR_FLIP_WORDS(target,flip,count) \
+ while (count-- > 0) *target++ ^= flip;
+
+#define BIT_VECTOR_COPY_WORDS(target,source,count) \
+ while (count-- > 0) *target++ = *source++;
+
+#define BIT_VECTOR_BACK_WORDS(target,source,count) \
+ { target += count; source += count; while (count-- > 0) *--target = *--source; }
+
+#define BIT_VECTOR_CLR_BIT(address,index) \
+ *(address+(index>>LOGBITS)) &= NOT BITMASKTAB[index AND MODMASK];
+
+#define BIT_VECTOR_SET_BIT(address,index) \
+ *(address+(index>>LOGBITS)) |= BITMASKTAB[index AND MODMASK];
+
+#define BIT_VECTOR_TST_BIT(address,index) \
+ ((*(address+(index>>LOGBITS)) AND BITMASKTAB[index AND MODMASK]) != 0)
+
+#define BIT_VECTOR_FLP_BIT(address,index,mask) \
+ (mask = BITMASKTAB[index AND MODMASK]), \
+ (((*(addr+(index>>LOGBITS)) ^= mask) AND mask) != 0)
+
+#define BIT_VECTOR_DIGITIZE(type,value,digit) \
+ value = (type) ((digit = value) / 10); \
+ digit -= value * 10; \
+ digit += (type) '0';
+
+ /*********************************************************/
+ /* private low-level functions (potentially dangerous!): */
+ /*********************************************************/
+
+static N_word power10(N_word x)
+{
+ N_word y = 1;
+
+ while (x-- > 0) y *= 10;
+ return(y);
+}
+
+static void BIT_VECTOR_zro_words(wordptr addr, N_word count)
+{
+ BIT_VECTOR_ZERO_WORDS(addr,count)
+}
+
+static void BIT_VECTOR_cpy_words(wordptr target, wordptr source, N_word count)
+{
+ BIT_VECTOR_COPY_WORDS(target,source,count)
+}
+
+static void BIT_VECTOR_mov_words(wordptr target, wordptr source, N_word count)
+{
+ if (target != source)
+ {
+ if (target < source) BIT_VECTOR_COPY_WORDS(target,source,count)
+ else BIT_VECTOR_BACK_WORDS(target,source,count)
+ }
+}
+
+static void BIT_VECTOR_ins_words(wordptr addr, N_word total, N_word count,
+ boolean clear)
+{
+ N_word length;
+
+ if ((total > 0) and (count > 0))
+ {
+ if (count > total) count = total;
+ length = total - count;
+ if (length > 0) BIT_VECTOR_mov_words(addr+count,addr,length);
+ if (clear) BIT_VECTOR_zro_words(addr,count);
+ }
+}
+
+static void BIT_VECTOR_del_words(wordptr addr, N_word total, N_word count,
+ boolean clear)
+{
+ N_word length;
+
+ if ((total > 0) and (count > 0))
+ {
+ if (count > total) count = total;
+ length = total - count;
+ if (length > 0) BIT_VECTOR_mov_words(addr,addr+count,length);
+ if (clear) BIT_VECTOR_zro_words(addr+length,count);
+ }
+}
+
+static void BIT_VECTOR_reverse(charptr string, N_word length)
+{
+ charptr last;
+ N_char temp;
+
+ if (length > 1)
+ {
+ last = string + length - 1;
+ while (string < last)
+ {
+ temp = *string;
+ *string = *last;
+ *last = temp;
+ string++;
+ last--;
+ }
+ }
+}
+
+static N_word BIT_VECTOR_int2str(charptr string, N_word value)
+{
+ N_word length;
+ N_word digit;
+ charptr work;
+
+ work = string;
+ if (value > 0)
+ {
+ length = 0;
+ while (value > 0)
+ {
+ BIT_VECTOR_DIGITIZE(N_word,value,digit)
+ *work++ = (N_char) digit;
+ length++;
+ }
+ BIT_VECTOR_reverse(string,length);
+ }
+ else
+ {
+ length = 1;
+ *work++ = (N_char) '0';
+ }
+ return(length);
+}
+
+static N_word BIT_VECTOR_str2int(charptr string, N_word *value)
+{
+ N_word length;
+ N_word digit;
+
+ *value = 0;
+ length = 0;
+ digit = (N_word) *string++;
+ /* separate because isdigit() is likely a macro! */
+ while (isdigit((int)digit) != 0)
+ {
+ length++;
+ digit -= (N_word) '0';
+ if (*value) *value *= 10;
+ *value += digit;
+ digit = (N_word) *string++;
+ }
+ return(length);
+}
+
+ /********************************************/
+ /* routine to convert error code to string: */
+ /********************************************/
+
+const char * BitVector_Error(ErrCode error)
+{
+ switch (error)
+ {
+ case ErrCode_Ok: return( NULL ); break;
+ case ErrCode_Type: return( ERRCODE_TYPE ); break;
+ case ErrCode_Bits: return( ERRCODE_BITS ); break;
+ case ErrCode_Word: return( ERRCODE_WORD ); break;
+ case ErrCode_Long: return( ERRCODE_LONG ); break;
+ case ErrCode_Powr: return( ERRCODE_POWR ); break;
+ case ErrCode_Loga: return( ERRCODE_LOGA ); break;
+ case ErrCode_Null: return( ERRCODE_NULL ); break;
+ case ErrCode_Indx: return( ERRCODE_INDX ); break;
+ case ErrCode_Ordr: return( ERRCODE_ORDR ); break;
+ case ErrCode_Size: return( ERRCODE_SIZE ); break;
+ case ErrCode_Pars: return( ERRCODE_PARS ); break;
+ case ErrCode_Ovfl: return( ERRCODE_OVFL ); break;
+ case ErrCode_Same: return( ERRCODE_SAME ); break;
+ case ErrCode_Expo: return( ERRCODE_EXPO ); break;
+ case ErrCode_Zero: return( ERRCODE_ZERO ); break;
+ default: return( ERRCODE_OOPS ); break;
+ }
+}
+
+ /*****************************************/
+ /* automatic self-configuration routine: */
+ /*****************************************/
+
+ /*******************************************************/
+ /* */
+ /* MUST be called once prior to any other function */
+ /* to initialize the machine dependent constants */
+ /* of this package! (But call only ONCE, or you */
+ /* will suffer memory leaks!) */
+ /* */
+ /*******************************************************/
+
+ErrCode BitVector_Boot(void)
+{
+ N_long longsample = 1L;
+ N_word sample = LSB;
+ N_word lsb;
+
+ if (sizeof(N_word) > sizeof(size_t)) return(ErrCode_Type);
+
+ BITS = 1;
+ while (sample <<= 1) BITS++; /* determine # of bits in a machine word */
+
+ if (BITS != (sizeof(N_word) << 3)) return(ErrCode_Bits);
+
+ if (BITS < 16) return(ErrCode_Word);
+
+ LONGBITS = 1;
+ while (longsample <<= 1) LONGBITS++; /* = # of bits in an unsigned long */
+
+ if (BITS > LONGBITS) return(ErrCode_Long);
+
+ LOGBITS = 0;
+ sample = BITS;
+ lsb = (sample AND LSB);
+ while ((sample >>= 1) and (not lsb))
+ {
+ LOGBITS++;
+ lsb = (sample AND LSB);
+ }
+
+ if (sample) return(ErrCode_Powr); /* # of bits is not a power of 2! */
+
+ if (BITS != (LSB << LOGBITS)) return(ErrCode_Loga);
+
+ MODMASK = BITS - 1;
+ FACTOR = LOGBITS - 3; /* ld(BITS / 8) = ld(BITS) - ld(8) = ld(BITS) - 3 */
+ MSB = (LSB << MODMASK);
+
+ BITMASKTAB = (wordptr) yasm_xmalloc((size_t) (BITS << FACTOR));
+
+ if (BITMASKTAB == NULL) return(ErrCode_Null);
+
+ for ( sample = 0; sample < BITS; sample++ )
+ {
+ BITMASKTAB[sample] = (LSB << sample);
+ }
+
+ LOG10 = (N_word) (MODMASK * 0.30103); /* = (BITS - 1) * ( ln 2 / ln 10 ) */
+ EXP10 = power10(LOG10);
+
+ return(ErrCode_Ok);
+}
+
+void BitVector_Shutdown(void)
+{
+ if (BITMASKTAB) yasm_xfree(BITMASKTAB);
+}
+
+N_word BitVector_Size(N_int bits) /* bit vector size (# of words) */
+{
+ N_word size;
+
+ size = bits >> LOGBITS;
+ if (bits AND MODMASK) size++;
+ return(size);
+}
+
+N_word BitVector_Mask(N_int bits) /* bit vector mask (unused bits) */
+{
+ N_word mask;
+
+ mask = bits AND MODMASK;
+ if (mask) mask = (N_word) ~(~0L << mask); else mask = (N_word) ~0L;
+ return(mask);
+}
+
+const char * BitVector_Version(void)
+{
+ return("6.4");
+}
+
+N_int BitVector_Word_Bits(void)
+{
+ return(BITS);
+}
+
+N_int BitVector_Long_Bits(void)
+{
+ return(LONGBITS);
+}
+
+/********************************************************************/
+/* */
+/* WARNING: Do not "free()" constant character strings, i.e., */
+/* don't call "BitVector_Dispose()" for strings returned */
+/* by "BitVector_Error()" or "BitVector_Version()"! */
+/* */
+/* ONLY call this function for strings allocated with "malloc()", */
+/* i.e., the strings returned by the functions "BitVector_to_*()" */
+/* and "BitVector_Block_Read()"! */
+/* */
+/********************************************************************/
+
+void BitVector_Dispose(charptr string) /* free string */
+{
+ if (string != NULL) yasm_xfree((voidptr) string);
+}
+
+void BitVector_Destroy(wordptr addr) /* free bitvec */
+{
+ if (addr != NULL)
+ {
+ addr -= BIT_VECTOR_HIDDEN_WORDS;
+ yasm_xfree((voidptr) addr);
+ }
+}
+
+void BitVector_Destroy_List(listptr list, N_int count) /* free list */
+{
+ listptr slot;
+
+ if (list != NULL)
+ {
+ slot = list;
+ while (count-- > 0)
+ {
+ BitVector_Destroy(*slot++);
+ }
+ free((voidptr) list);
+ }
+}
+
+wordptr BitVector_Create(N_int bits, boolean clear) /* malloc */
+{
+ N_word size;
+ N_word mask;
+ N_word bytes;
+ wordptr addr;
+ wordptr zero;
+
+ size = BitVector_Size(bits);
+ mask = BitVector_Mask(bits);
+ bytes = (size + BIT_VECTOR_HIDDEN_WORDS) << FACTOR;
+ addr = (wordptr) yasm_xmalloc((size_t) bytes);
+ if (addr != NULL)
+ {
+ *addr++ = bits;
+ *addr++ = size;
+ *addr++ = mask;
+ if (clear)
+ {
+ zero = addr;
+ BIT_VECTOR_ZERO_WORDS(zero,size)
+ }
+ }
+ return(addr);
+}
+
+listptr BitVector_Create_List(N_int bits, boolean clear, N_int count)
+{
+ listptr list = NULL;
+ listptr slot;
+ wordptr addr;
+ N_int i;
+
+ if (count > 0)
+ {
+ list = (listptr) malloc(sizeof(wordptr) * count);
+ if (list != NULL)
+ {
+ slot = list;
+ for ( i = 0; i < count; i++ )
+ {
+ addr = BitVector_Create(bits,clear);
+ if (addr == NULL)
+ {
+ BitVector_Destroy_List(list,i);
+ return(NULL);
+ }
+ *slot++ = addr;
+ }
+ }
+ }
+ return(list);
+}
+
+wordptr BitVector_Resize(wordptr oldaddr, N_int bits) /* realloc */
+{
+ N_word bytes;
+ N_word oldsize;
+ N_word oldmask;
+ N_word newsize;
+ N_word newmask;
+ wordptr newaddr;
+ wordptr source;
+ wordptr target;
+
+ oldsize = size_(oldaddr);
+ oldmask = mask_(oldaddr);
+ newsize = BitVector_Size(bits);
+ newmask = BitVector_Mask(bits);
+ if (oldsize > 0) *(oldaddr+oldsize-1) &= oldmask;
+ if (newsize <= oldsize)
+ {
+ newaddr = oldaddr;
+ bits_(newaddr) = bits;
+ size_(newaddr) = newsize;
+ mask_(newaddr) = newmask;
+ if (newsize > 0) *(newaddr+newsize-1) &= newmask;
+ }
+ else
+ {
+ bytes = (newsize + BIT_VECTOR_HIDDEN_WORDS) << FACTOR;
+ newaddr = (wordptr) yasm_xmalloc((size_t) bytes);
+ if (newaddr != NULL)
+ {
+ *newaddr++ = bits;
+ *newaddr++ = newsize;
+ *newaddr++ = newmask;
+ target = newaddr;
+ source = oldaddr;
+ newsize -= oldsize;
+ BIT_VECTOR_COPY_WORDS(target,source,oldsize)
+ BIT_VECTOR_ZERO_WORDS(target,newsize)
+ }
+ BitVector_Destroy(oldaddr);
+ }
+ return(newaddr);
+}
+
+wordptr BitVector_Shadow(wordptr addr) /* makes new, same size but empty */
+{
+ return( BitVector_Create(bits_(addr),true) );
+}
+
+wordptr BitVector_Clone(wordptr addr) /* makes exact duplicate */
+{
+ N_word bits;
+ wordptr twin;
+
+ bits = bits_(addr);
+ twin = BitVector_Create(bits,false);
+ if ((twin != NULL) and (bits > 0))
+ BIT_VECTOR_cpy_words(twin,addr,size_(addr));
+ return(twin);
+}
+
+wordptr BitVector_Concat(wordptr X, wordptr Y) /* returns concatenation */
+{
+ /* BEWARE that X = most significant part, Y = least significant part! */
+
+ N_word bitsX;
+ N_word bitsY;
+ N_word bitsZ;
+ wordptr Z;
+
+ bitsX = bits_(X);
+ bitsY = bits_(Y);
+ bitsZ = bitsX + bitsY;
+ Z = BitVector_Create(bitsZ,false);
+ if ((Z != NULL) and (bitsZ > 0))
+ {
+ BIT_VECTOR_cpy_words(Z,Y,size_(Y));
+ BitVector_Interval_Copy(Z,X,bitsY,0,bitsX);
+ *(Z+size_(Z)-1) &= mask_(Z);
+ }
+ return(Z);
+}
+
+void BitVector_Copy(wordptr X, wordptr Y) /* X = Y */
+{
+ N_word sizeX = size_(X);
+ N_word sizeY = size_(Y);
+ N_word maskX = mask_(X);
+ N_word maskY = mask_(Y);
+ N_word fill = 0;
+ wordptr lastX;
+ wordptr lastY;
+
+ if ((X != Y) and (sizeX > 0))
+ {
+ lastX = X + sizeX - 1;
+ if (sizeY > 0)
+ {
+ lastY = Y + sizeY - 1;
+ if ( (*lastY AND (maskY AND NOT (maskY >> 1))) == 0 ) *lastY &= maskY;
+ else
+ {
+ fill = (N_word) ~0L;
+ *lastY |= NOT maskY;
+ }
+ while ((sizeX > 0) and (sizeY > 0))
+ {
+ *X++ = *Y++;
+ sizeX--;
+ sizeY--;
+ }
+ *lastY &= maskY;
+ }
+ while (sizeX-- > 0) *X++ = fill;
+ *lastX &= maskX;
+ }
+}
+
+void BitVector_Empty(wordptr addr) /* X = {} clr all */
+{
+ N_word size = size_(addr);
+
+ BIT_VECTOR_ZERO_WORDS(addr,size)
+}
+
+void BitVector_Fill(wordptr addr) /* X = ~{} set all */
+{
+ N_word size = size_(addr);
+ N_word mask = mask_(addr);
+ N_word fill = (N_word) ~0L;
+
+ if (size > 0)
+ {
+ BIT_VECTOR_FILL_WORDS(addr,fill,size)
+ *(--addr) &= mask;
+ }
+}
+
+void BitVector_Flip(wordptr addr) /* X = ~X flip all */
+{
+ N_word size = size_(addr);
+ N_word mask = mask_(addr);
+ N_word flip = (N_word) ~0L;
+
+ if (size > 0)
+ {
+ BIT_VECTOR_FLIP_WORDS(addr,flip,size)
+ *(--addr) &= mask;
+ }
+}
+
+void BitVector_Primes(wordptr addr)
+{
+ N_word bits = bits_(addr);
+ N_word size = size_(addr);
+ wordptr work;
+ N_word temp;
+ N_word i,j;
+
+ if (size > 0)
+ {
+ temp = 0xAAAA;
+ i = BITS >> 4;
+ while (--i > 0)
+ {
+ temp <<= 16;
+ temp |= 0xAAAA;
+ }
+ i = size;
+ work = addr;
+ *work++ = temp XOR 0x0006;
+ while (--i > 0) *work++ = temp;
+ for ( i = 3; (j = i * i) < bits; i += 2 )
+ {
+ for ( ; j < bits; j += i ) BIT_VECTOR_CLR_BIT(addr,j)
+ }
+ *(addr+size-1) &= mask_(addr);
+ }
+}
+
+void BitVector_Reverse(wordptr X, wordptr Y)
+{
+ N_word bits = bits_(X);
+ N_word mask;
+ N_word bit;
+ N_word value;
+
+ if (bits > 0)
+ {
+ if (X == Y) BitVector_Interval_Reverse(X,0,bits-1);
+ else if (bits == bits_(Y))
+ {
+/* mask = mask_(Y); */
+/* mask &= NOT (mask >> 1); */
+ mask = BITMASKTAB[(bits-1) AND MODMASK];
+ Y += size_(Y) - 1;
+ value = 0;
+ bit = LSB;
+ while (bits-- > 0)
+ {
+ if ((*Y AND mask) != 0)
+ {
+ value |= bit;
+ }
+ if (not (mask >>= 1))
+ {
+ Y--;
+ mask = MSB;
+ }
+ if (not (bit <<= 1))
+ {
+ *X++ = value;
+ value = 0;
+ bit = LSB;
+ }
+ }
+ if (bit > LSB) *X = value;
+ }
+ }
+}
+
+void BitVector_Interval_Empty(wordptr addr, N_int lower, N_int upper)
+{ /* X = X \ [lower..upper] */
+ N_word bits = bits_(addr);
+ N_word size = size_(addr);
+ wordptr loaddr;
+ wordptr hiaddr;
+ N_word lobase;
+ N_word hibase;
+ N_word lomask;
+ N_word himask;
+ N_word diff;
+
+ if ((size > 0) and (lower < bits) and (upper < bits) and (lower <= upper))
+ {
+ lobase = lower >> LOGBITS;
+ hibase = upper >> LOGBITS;
+ diff = hibase - lobase;
+ loaddr = addr + lobase;
+ hiaddr = addr + hibase;
+
+ lomask = (N_word) (~0L << (lower AND MODMASK));
+ himask = (N_word) ~((~0L << (upper AND MODMASK)) << 1);
+
+ if (diff == 0)
+ {
+ *loaddr &= NOT (lomask AND himask);
+ }
+ else
+ {
+ *loaddr++ &= NOT lomask;
+ while (--diff > 0)
+ {
+ *loaddr++ = 0;
+ }
+ *hiaddr &= NOT himask;
+ }
+ }
+}
+
+void BitVector_Interval_Fill(wordptr addr, N_int lower, N_int upper)
+{ /* X = X + [lower..upper] */
+ N_word bits = bits_(addr);
+ N_word size = size_(addr);
+ N_word fill = (N_word) ~0L;
+ wordptr loaddr;
+ wordptr hiaddr;
+ N_word lobase;
+ N_word hibase;
+ N_word lomask;
+ N_word himask;
+ N_word diff;
+
+ if ((size > 0) and (lower < bits) and (upper < bits) and (lower <= upper))
+ {
+ lobase = lower >> LOGBITS;
+ hibase = upper >> LOGBITS;
+ diff = hibase - lobase;
+ loaddr = addr + lobase;
+ hiaddr = addr + hibase;
+
+ lomask = (N_word) (~0L << (lower AND MODMASK));
+ himask = (N_word) ~((~0L << (upper AND MODMASK)) << 1);
+
+ if (diff == 0)
+ {
+ *loaddr |= (lomask AND himask);
+ }
+ else
+ {
+ *loaddr++ |= lomask;
+ while (--diff > 0)
+ {
+ *loaddr++ = fill;
+ }
+ *hiaddr |= himask;
+ }
+ *(addr+size-1) &= mask_(addr);
+ }
+}
+
+void BitVector_Interval_Flip(wordptr addr, N_int lower, N_int upper)
+{ /* X = X ^ [lower..upper] */
+ N_word bits = bits_(addr);
+ N_word size = size_(addr);
+ N_word flip = (N_word) ~0L;
+ wordptr loaddr;
+ wordptr hiaddr;
+ N_word lobase;
+ N_word hibase;
+ N_word lomask;
+ N_word himask;
+ N_word diff;
+
+ if ((size > 0) and (lower < bits) and (upper < bits) and (lower <= upper))
+ {
+ lobase = lower >> LOGBITS;
+ hibase = upper >> LOGBITS;
+ diff = hibase - lobase;
+ loaddr = addr + lobase;
+ hiaddr = addr + hibase;
+
+ lomask = (N_word) (~0L << (lower AND MODMASK));
+ himask = (N_word) ~((~0L << (upper AND MODMASK)) << 1);
+
+ if (diff == 0)
+ {
+ *loaddr ^= (lomask AND himask);
+ }
+ else
+ {
+ *loaddr++ ^= lomask;
+ while (--diff > 0)
+ {
+ *loaddr++ ^= flip;
+ }
+ *hiaddr ^= himask;
+ }
+ *(addr+size-1) &= mask_(addr);
+ }
+}
+
+void BitVector_Interval_Reverse(wordptr addr, N_int lower, N_int upper)
+{
+ N_word bits = bits_(addr);
+ wordptr loaddr;
+ wordptr hiaddr;
+ N_word lomask;
+ N_word himask;
+
+ if ((bits > 0) and (lower < bits) and (upper < bits) and (lower < upper))
+ {
+ loaddr = addr + (lower >> LOGBITS);
+ hiaddr = addr + (upper >> LOGBITS);
+ lomask = BITMASKTAB[lower AND MODMASK];
+ himask = BITMASKTAB[upper AND MODMASK];
+ for ( bits = upper - lower + 1; bits > 1; bits -= 2 )
+ {
+ if (((*loaddr AND lomask) != 0) XOR ((*hiaddr AND himask) != 0))
+ {
+ *loaddr ^= lomask; /* swap bits only if they differ! */
+ *hiaddr ^= himask;
+ }
+ if (not (lomask <<= 1))
+ {
+ lomask = LSB;
+ loaddr++;
+ }
+ if (not (himask >>= 1))
+ {
+ himask = MSB;
+ hiaddr--;
+ }
+ }
+ }
+}
+
+boolean BitVector_interval_scan_inc(wordptr addr, N_int start,
+ N_intptr min, N_intptr max)
+{
+ N_word size = size_(addr);
+ N_word mask = mask_(addr);
+ N_word offset;
+ N_word bitmask;
+ N_word value;
+ boolean empty;
+
+ if ((size == 0) or (start >= bits_(addr))) return(FALSE);
+
+ *min = start;
+ *max = start;
+
+ offset = start >> LOGBITS;
+
+ *(addr+size-1) &= mask;
+
+ addr += offset;
+ size -= offset;
+
+ bitmask = BITMASKTAB[start AND MODMASK];
+ mask = NOT (bitmask OR (bitmask - 1));
+
+ value = *addr++;
+ if ((value AND bitmask) == 0)
+ {
+ value &= mask;
+ if (value == 0)
+ {
+ offset++;
+ empty = TRUE;
+ while (empty and (--size > 0))
+ {
+ if ((value = *addr++)) empty = false; else offset++;
+ }
+ if (empty) return(FALSE);
+ }
+ start = offset << LOGBITS;
+ bitmask = LSB;
+ mask = value;
+ while (not (mask AND LSB))
+ {
+ bitmask <<= 1;
+ mask >>= 1;
+ start++;
+ }
+ mask = NOT (bitmask OR (bitmask - 1));
+ *min = start;
+ *max = start;
+ }
+ value = NOT value;
+ value &= mask;
+ if (value == 0)
+ {
+ offset++;
+ empty = TRUE;
+ while (empty and (--size > 0))
+ {
+ if ((value = NOT *addr++)) empty = false; else offset++;
+ }
+ if (empty) value = LSB;
+ }
+ start = offset << LOGBITS;
+ while (not (value AND LSB))
+ {
+ value >>= 1;
+ start++;
+ }
+ *max = --start;
+ return(TRUE);
+}
+
+boolean BitVector_interval_scan_dec(wordptr addr, N_int start,
+ N_intptr min, N_intptr max)
+{
+ N_word size = size_(addr);
+ N_word mask = mask_(addr);
+ N_word offset;
+ N_word bitmask;
+ N_word value;
+ boolean empty;
+
+ if ((size == 0) or (start >= bits_(addr))) return(FALSE);
+
+ *min = start;
+ *max = start;
+
+ offset = start >> LOGBITS;
+
+ if (offset >= size) return(FALSE);
+
+ *(addr+size-1) &= mask;
+
+ addr += offset;
+ size = ++offset;
+
+ bitmask = BITMASKTAB[start AND MODMASK];
+ mask = (bitmask - 1);
+
+ value = *addr--;
+ if ((value AND bitmask) == 0)
+ {
+ value &= mask;
+ if (value == 0)
+ {
+ offset--;
+ empty = TRUE;
+ while (empty and (--size > 0))
+ {
+ if ((value = *addr--)) empty = false; else offset--;
+ }
+ if (empty) return(FALSE);
+ }
+ start = offset << LOGBITS;
+ bitmask = MSB;
+ mask = value;
+ while (not (mask AND MSB))
+ {
+ bitmask >>= 1;
+ mask <<= 1;
+ start--;
+ }
+ mask = (bitmask - 1);
+ *max = --start;
+ *min = start;
+ }
+ value = NOT value;
+ value &= mask;
+ if (value == 0)
+ {
+ offset--;
+ empty = TRUE;
+ while (empty and (--size > 0))
+ {
+ if ((value = NOT *addr--)) empty = false; else offset--;
+ }
+ if (empty) value = MSB;
+ }
+ start = offset << LOGBITS;
+ while (not (value AND MSB))
+ {
+ value <<= 1;
+ start--;
+ }
+ *min = start;
+ return(TRUE);
+}
+
+void BitVector_Interval_Copy(wordptr X, wordptr Y, N_int Xoffset,
+ N_int Yoffset, N_int length)
+{
+ N_word bitsX = bits_(X);
+ N_word bitsY = bits_(Y);
+ N_word source = 0; /* silence compiler warning */
+ N_word target = 0; /* silence compiler warning */
+ N_word s_lo_base;
+ N_word s_hi_base;
+ N_word s_lo_bit;
+ N_word s_hi_bit;
+ N_word s_base;
+ N_word s_lower = 0; /* silence compiler warning */
+ N_word s_upper = 0; /* silence compiler warning */
+ N_word s_bits;
+ N_word s_min;
+ N_word s_max;
+ N_word t_lo_base;
+ N_word t_hi_base;
+ N_word t_lo_bit;
+ N_word t_hi_bit;
+ N_word t_base;
+ N_word t_lower = 0; /* silence compiler warning */
+ N_word t_upper = 0; /* silence compiler warning */
+ N_word t_bits;
+ N_word t_min;
+ N_word mask;
+ N_word bits;
+ N_word sel;
+ boolean ascending;
+ boolean notfirst;
+ wordptr Z = X;
+
+ if ((length > 0) and (Xoffset < bitsX) and (Yoffset < bitsY))
+ {
+ if ((Xoffset + length) > bitsX) length = bitsX - Xoffset;
+ if ((Yoffset + length) > bitsY) length = bitsY - Yoffset;
+
+ ascending = (Xoffset <= Yoffset);
+
+ s_lo_base = Yoffset >> LOGBITS;
+ s_lo_bit = Yoffset AND MODMASK;
+ Yoffset += --length;
+ s_hi_base = Yoffset >> LOGBITS;
+ s_hi_bit = Yoffset AND MODMASK;
+
+ t_lo_base = Xoffset >> LOGBITS;
+ t_lo_bit = Xoffset AND MODMASK;
+ Xoffset += length;
+ t_hi_base = Xoffset >> LOGBITS;
+ t_hi_bit = Xoffset AND MODMASK;
+
+ if (ascending)
+ {
+ s_base = s_lo_base;
+ t_base = t_lo_base;
+ }
+ else
+ {
+ s_base = s_hi_base;
+ t_base = t_hi_base;
+ }
+ s_bits = 0;
+ t_bits = 0;
+ Y += s_base;
+ X += t_base;
+ notfirst = FALSE;
+ while (TRUE)
+ {
+ if (t_bits == 0)
+ {
+ if (notfirst)
+ {
+ *X = target;
+ if (ascending)
+ {
+ if (t_base == t_hi_base) break;
+ t_base++;
+ X++;
+ }
+ else
+ {
+ if (t_base == t_lo_base) break;
+ t_base--;
+ X--;
+ }
+ }
+ sel = ((t_base == t_hi_base) << 1) OR (t_base == t_lo_base);
+ switch (sel)
+ {
+ case 0:
+ t_lower = 0;
+ t_upper = BITS - 1;
+ t_bits = BITS;
+ target = 0;
+ break;
+ case 1:
+ t_lower = t_lo_bit;
+ t_upper = BITS - 1;
+ t_bits = BITS - t_lo_bit;
+ mask = (N_word) (~0L << t_lower);
+ target = *X AND NOT mask;
+ break;
+ case 2:
+ t_lower = 0;
+ t_upper = t_hi_bit;
+ t_bits = t_hi_bit + 1;
+ mask = (N_word) ((~0L << t_upper) << 1);
+ target = *X AND mask;
+ break;
+ case 3:
+ t_lower = t_lo_bit;
+ t_upper = t_hi_bit;
+ t_bits = t_hi_bit - t_lo_bit + 1;
+ mask = (N_word) (~0L << t_lower);
+ mask &= (N_word) ~((~0L << t_upper) << 1);
+ target = *X AND NOT mask;
+ break;
+ }
+ }
+ if (s_bits == 0)
+ {
+ if (notfirst)
+ {
+ if (ascending)
+ {
+ if (s_base == s_hi_base) break;
+ s_base++;
+ Y++;
+ }
+ else
+ {
+ if (s_base == s_lo_base) break;
+ s_base--;
+ Y--;
+ }
+ }
+ source = *Y;
+ sel = ((s_base == s_hi_base) << 1) OR (s_base == s_lo_base);
+ switch (sel)
+ {
+ case 0:
+ s_lower = 0;
+ s_upper = BITS - 1;
+ s_bits = BITS;
+ break;
+ case 1:
+ s_lower = s_lo_bit;
+ s_upper = BITS - 1;
+ s_bits = BITS - s_lo_bit;
+ break;
+ case 2:
+ s_lower = 0;
+ s_upper = s_hi_bit;
+ s_bits = s_hi_bit + 1;
+ break;
+ case 3:
+ s_lower = s_lo_bit;
+ s_upper = s_hi_bit;
+ s_bits = s_hi_bit - s_lo_bit + 1;
+ break;
+ }
+ }
+ notfirst = TRUE;
+ if (s_bits > t_bits)
+ {
+ bits = t_bits - 1;
+ if (ascending)
+ {
+ s_min = s_lower;
+ s_max = s_lower + bits;
+ }
+ else
+ {
+ s_max = s_upper;
+ s_min = s_upper - bits;
+ }
+ t_min = t_lower;
+ }
+ else
+ {
+ bits = s_bits - 1;
+ if (ascending) t_min = t_lower;
+ else t_min = t_upper - bits;
+ s_min = s_lower;
+ s_max = s_upper;
+ }
+ bits++;
+ mask = (N_word) (~0L << s_min);
+ mask &= (N_word) ~((~0L << s_max) << 1);
+ if (s_min == t_min) target |= (source AND mask);
+ else
+ {
+ if (s_min < t_min) target |= (source AND mask) << (t_min-s_min);
+ else target |= (source AND mask) >> (s_min-t_min);
+ }
+ if (ascending)
+ {
+ s_lower += bits;
+ t_lower += bits;
+ }
+ else
+ {
+ s_upper -= bits;
+ t_upper -= bits;
+ }
+ s_bits -= bits;
+ t_bits -= bits;
+ }
+ *(Z+size_(Z)-1) &= mask_(Z);
+ }
+}
+
+
+wordptr BitVector_Interval_Substitute(wordptr X, wordptr Y,
+ N_int Xoffset, N_int Xlength,
+ N_int Yoffset, N_int Ylength)
+{
+ N_word Xbits = bits_(X);
+ N_word Ybits = bits_(Y);
+ N_word limit;
+ N_word diff;
+
+ if ((Xoffset <= Xbits) and (Yoffset <= Ybits))
+ {
+ limit = Xoffset + Xlength;
+ if (limit > Xbits)
+ {
+ limit = Xbits;
+ Xlength = Xbits - Xoffset;
+ }
+ if ((Yoffset + Ylength) > Ybits)
+ {
+ Ylength = Ybits - Yoffset;
+ }
+ if (Xlength == Ylength)
+ {
+ if ((Ylength > 0) and ((X != Y) or (Xoffset != Yoffset)))
+ {
+ BitVector_Interval_Copy(X,Y,Xoffset,Yoffset,Ylength);
+ }
+ }
+ else /* Xlength != Ylength */
+ {
+ if (Xlength > Ylength)
+ {
+ diff = Xlength - Ylength;
+ if (Ylength > 0) BitVector_Interval_Copy(X,Y,Xoffset,Yoffset,Ylength);
+ if (limit < Xbits) BitVector_Delete(X,Xoffset+Ylength,diff,FALSE);
+ if ((X = BitVector_Resize(X,Xbits-diff)) == NULL) return(NULL);
+ }
+ else /* Ylength > Xlength ==> Ylength > 0 */
+ {
+ diff = Ylength - Xlength;
+ if (X != Y)
+ {
+ if ((X = BitVector_Resize(X,Xbits+diff)) == NULL) return(NULL);
+ if (limit < Xbits) BitVector_Insert(X,limit,diff,FALSE);
+ BitVector_Interval_Copy(X,Y,Xoffset,Yoffset,Ylength);
+ }
+ else /* in-place */
+ {
+ if ((Y = X = BitVector_Resize(X,Xbits+diff)) == NULL) return(NULL);
+ if (limit >= Xbits)
+ {
+ BitVector_Interval_Copy(X,Y,Xoffset,Yoffset,Ylength);
+ }
+ else /* limit < Xbits */
+ {
+ BitVector_Insert(X,limit,diff,FALSE);
+ if ((Yoffset+Ylength) <= limit)
+ {
+ BitVector_Interval_Copy(X,Y,Xoffset,Yoffset,Ylength);
+ }
+ else /* overlaps or lies above critical area */
+ {
+ if (limit <= Yoffset)
+ {
+ Yoffset += diff;
+ BitVector_Interval_Copy(X,Y,Xoffset,Yoffset,Ylength);
+ }
+ else /* Yoffset < limit */
+ {
+ Xlength = limit - Yoffset;
+ BitVector_Interval_Copy(X,Y,Xoffset,Yoffset,Xlength);
+ Yoffset = Xoffset + Ylength; /* = limit + diff */
+ Xoffset += Xlength;
+ Ylength -= Xlength;
+ BitVector_Interval_Copy(X,Y,Xoffset,Yoffset,Ylength);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return(X);
+}
+
+boolean BitVector_is_empty(wordptr addr) /* X == {} ? */
+{
+ N_word size = size_(addr);
+ boolean r = TRUE;
+
+ if (size > 0)
+ {
+ *(addr+size-1) &= mask_(addr);
+ while (r and (size-- > 0)) r = ( *addr++ == 0 );
+ }
+ return(r);
+}
+
+boolean BitVector_is_full(wordptr addr) /* X == ~{} ? */
+{
+ N_word size = size_(addr);
+ N_word mask = mask_(addr);
+ boolean r = FALSE;
+ wordptr last;
+
+ if (size > 0)
+ {
+ r = TRUE;
+ last = addr + size - 1;
+ *last |= NOT mask;
+ while (r and (size-- > 0)) r = ( NOT *addr++ == 0 );
+ *last &= mask;
+ }
+ return(r);
+}
+
+boolean BitVector_equal(wordptr X, wordptr Y) /* X == Y ? */
+{
+ N_word size = size_(X);
+ N_word mask = mask_(X);
+ boolean r = FALSE;
+
+ if (bits_(X) == bits_(Y))
+ {
+ r = TRUE;
+ if (size > 0)
+ {
+ *(X+size-1) &= mask;
+ *(Y+size-1) &= mask;
+ while (r and (size-- > 0)) r = (*X++ == *Y++);
+ }
+ }
+ return(r);
+}
+
+Z_int BitVector_Lexicompare(wordptr X, wordptr Y) /* X <,=,> Y ? */
+{ /* unsigned */
+ N_word bitsX = bits_(X);
+ N_word bitsY = bits_(Y);
+ N_word size = size_(X);
+ boolean r = TRUE;
+
+ if (bitsX == bitsY)
+ {
+ if (size > 0)
+ {
+ X += size;
+ Y += size;
+ while (r and (size-- > 0)) r = (*(--X) == *(--Y));
+ }
+ if (r) return((Z_int) 0);
+ else
+ {
+ if (*X < *Y) return((Z_int) -1); else return((Z_int) 1);
+ }
+ }
+ else
+ {
+ if (bitsX < bitsY) return((Z_int) -1); else return((Z_int) 1);
+ }
+}
+
+Z_int BitVector_Compare(wordptr X, wordptr Y) /* X <,=,> Y ? */
+{ /* signed */
+ N_word bitsX = bits_(X);
+ N_word bitsY = bits_(Y);
+ N_word size = size_(X);
+ N_word mask = mask_(X);
+ N_word sign;
+ boolean r = TRUE;
+
+ if (bitsX == bitsY)
+ {
+ if (size > 0)
+ {
+ X += size;
+ Y += size;
+ mask &= NOT (mask >> 1);
+ if ((sign = (*(X-1) AND mask)) != (*(Y-1) AND mask))
+ {
+ if (sign) return((Z_int) -1); else return((Z_int) 1);
+ }
+ while (r and (size-- > 0)) r = (*(--X) == *(--Y));
+ }
+ if (r) return((Z_int) 0);
+ else
+ {
+ if (*X < *Y) return((Z_int) -1); else return((Z_int) 1);
+ }
+ }
+ else
+ {
+ if (bitsX < bitsY) return((Z_int) -1); else return((Z_int) 1);
+ }
+}
+
+charptr BitVector_to_Hex(wordptr addr)
+{
+ N_word bits = bits_(addr);
+ N_word size = size_(addr);
+ N_word value;
+ N_word count;
+ N_word digit;
+ N_word length;
+ charptr string;
+
+ length = bits >> 2;
+ if (bits AND 0x0003) length++;
+ string = (charptr) yasm_xmalloc((size_t) (length+1));
+ if (string == NULL) return(NULL);
+ string += length;
+ *string = (N_char) '\0';
+ if (size > 0)
+ {
+ *(addr+size-1) &= mask_(addr);
+ while ((size-- > 0) and (length > 0))
+ {
+ value = *addr++;
+ count = BITS >> 2;
+ while ((count-- > 0) and (length > 0))
+ {
+ digit = value AND 0x000F;
+ if (digit > 9) digit += (N_word) 'A' - 10;
+ else digit += (N_word) '0';
+ *(--string) = (N_char) digit; length--;
+ if ((count > 0) and (length > 0)) value >>= 4;
+ }
+ }
+ }
+ return(string);
+}
+
+ErrCode BitVector_from_Hex(wordptr addr, charptr string)
+{
+ N_word size = size_(addr);
+ N_word mask = mask_(addr);
+ boolean ok = TRUE;
+ size_t length;
+ N_word value;
+ N_word count;
+ int digit;
+
+ if (size > 0)
+ {
+ length = strlen((char *) string);
+ string += length;
+ while (size-- > 0)
+ {
+ value = 0;
+ for ( count = 0; (ok and (length > 0) and (count < BITS)); count += 4 )
+ {
+ digit = (int) *(--string); length--;
+ /* separate because toupper() is likely a macro! */
+ digit = toupper(digit);
+ if (digit == '_')
+ count -= 4;
+ else if ((ok = (isxdigit(digit) != 0)))
+ {
+ if (digit >= (int) 'A') digit -= (int) 'A' - 10;
+ else digit -= (int) '0';
+ value |= (((N_word) digit) << count);
+ }
+ }
+ *addr++ = value;
+ }
+ *(--addr) &= mask;
+ }
+ if (ok) return(ErrCode_Ok);
+ else return(ErrCode_Pars);
+}
+
+ErrCode BitVector_from_Oct(wordptr addr, charptr string)
+{
+ N_word size = size_(addr);
+ N_word mask = mask_(addr);
+ boolean ok = TRUE;
+ size_t length;
+ N_word value;
+ N_word value_fill = 0;
+ N_word count;
+ Z_word count_fill = 0;
+ int digit = 0;
+
+ if (size > 0)
+ {
+ length = strlen((char *) string);
+ string += length;
+ while (size-- > 0)
+ {
+ value = value_fill;
+ for ( count = count_fill; (ok and (length > 0) and (count < BITS)); count += 3 )
+ {
+ digit = (int) *(--string); length--;
+ if (digit == '_')
+ count -= 3;
+ else if ((ok = (isdigit(digit) && digit != '8' && digit != '9')) != 0)
+ {
+ digit -= (int) '0';
+ value |= (((N_word) digit) << count);
+ }
+ }
+ count_fill = (Z_word)count-(Z_word)BITS;
+ if (count_fill > 0)
+ value_fill = (((N_word) digit) >> (3-count_fill));
+ else
+ value_fill = 0;
+ *addr++ = value;
+ }
+ *(--addr) &= mask;
+ }
+ if (ok) return(ErrCode_Ok);
+ else return(ErrCode_Pars);
+}
+
+charptr BitVector_to_Bin(wordptr addr)
+{
+ N_word size = size_(addr);
+ N_word value;
+ N_word count;
+ N_word digit;
+ N_word length;
+ charptr string;
+
+ length = bits_(addr);
+ string = (charptr) yasm_xmalloc((size_t) (length+1));
+ if (string == NULL) return(NULL);
+ string += length;
+ *string = (N_char) '\0';
+ if (size > 0)
+ {
+ *(addr+size-1) &= mask_(addr);
+ while (size-- > 0)
+ {
+ value = *addr++;
+ count = BITS;
+ if (count > length) count = length;
+ while (count-- > 0)
+ {
+ digit = value AND 0x0001;
+ digit += (N_word) '0';
+ *(--string) = (N_char) digit; length--;
+ if (count > 0) value >>= 1;
+ }
+ }
+ }
+ return(string);
+}
+
+ErrCode BitVector_from_Bin(wordptr addr, charptr string)
+{
+ N_word size = size_(addr);
+ N_word mask = mask_(addr);
+ boolean ok = TRUE;
+ size_t length;
+ N_word value;
+ N_word count;
+ int digit;
+
+ if (size > 0)
+ {
+ length = strlen((char *) string);
+ string += length;
+ while (size-- > 0)
+ {
+ value = 0;
+ for ( count = 0; (ok and (length > 0) and (count < BITS)); count++ )
+ {
+ digit = (int) *(--string); length--;
+ switch (digit)
+ {
+ case (int) '0':
+ break;
+ case (int) '1':
+ value |= BITMASKTAB[count];
+ break;
+ case (int) '_':
+ count--;
+ break;
+ default:
+ ok = FALSE;
+ break;
+ }
+ }
+ *addr++ = value;
+ }
+ *(--addr) &= mask;
+ }
+ if (ok) return(ErrCode_Ok);
+ else return(ErrCode_Pars);
+}
+
+charptr BitVector_to_Dec(wordptr addr)
+{
+ N_word bits = bits_(addr);
+ N_word length;
+ N_word digits;
+ N_word count;
+ N_word q;
+ N_word r;
+ boolean loop;
+ charptr result;
+ charptr string;
+ wordptr quot;
+ wordptr rest;
+ wordptr temp;
+ wordptr base;
+ Z_int sign;
+
+ length = (N_word) (bits / 3.3); /* digits = bits * ln(2) / ln(10) */
+ length += 2; /* compensate for truncating & provide space for minus sign */
+ result = (charptr) yasm_xmalloc((size_t) (length+1)); /* remember the '\0'! */
+ if (result == NULL) return(NULL);
+ string = result;
+ sign = BitVector_Sign(addr);
+ if ((bits < 4) or (sign == 0))
+ {
+ if (bits > 0) digits = *addr; else digits = (N_word) 0;
+ if (sign < 0) digits = ((N_word)(-((Z_word)digits))) AND mask_(addr);
+ *string++ = (N_char) digits + (N_char) '0';
+ digits = 1;
+ }
+ else
+ {
+ quot = BitVector_Create(bits,FALSE);
+ if (quot == NULL)
+ {
+ BitVector_Dispose(result);
+ return(NULL);
+ }
+ rest = BitVector_Create(bits,FALSE);
+ if (rest == NULL)
+ {
+ BitVector_Dispose(result);
+ BitVector_Destroy(quot);
+ return(NULL);
+ }
+ temp = BitVector_Create(bits,FALSE);
+ if (temp == NULL)
+ {
+ BitVector_Dispose(result);
+ BitVector_Destroy(quot);
+ BitVector_Destroy(rest);
+ return(NULL);
+ }
+ base = BitVector_Create(bits,TRUE);
+ if (base == NULL)
+ {
+ BitVector_Dispose(result);
+ BitVector_Destroy(quot);
+ BitVector_Destroy(rest);
+ BitVector_Destroy(temp);
+ return(NULL);
+ }
+ if (sign < 0) BitVector_Negate(quot,addr);
+ else BitVector_Copy(quot,addr);
+ digits = 0;
+ *base = EXP10;
+ loop = (bits >= BITS);
+ do
+ {
+ if (loop)
+ {
+ BitVector_Copy(temp,quot);
+ if (BitVector_Div_Pos(quot,temp,base,rest))
+ {
+ BitVector_Dispose(result); /* emergency exit */
+ BitVector_Destroy(quot);
+ BitVector_Destroy(rest); /* should never occur */
+ BitVector_Destroy(temp); /* under normal operation */
+ BitVector_Destroy(base);
+ return(NULL);
+ }
+ loop = not BitVector_is_empty(quot);
+ q = *rest;
+ }
+ else q = *quot;
+ count = LOG10;
+ while (((loop and (count-- > 0)) or ((not loop) and (q != 0))) and
+ (digits < length))
+ {
+ if (q != 0)
+ {
+ BIT_VECTOR_DIGITIZE(N_word,q,r)
+ }
+ else r = (N_word) '0';
+ *string++ = (N_char) r;
+ digits++;
+ }
+ }
+ while (loop and (digits < length));
+ BitVector_Destroy(quot);
+ BitVector_Destroy(rest);
+ BitVector_Destroy(temp);
+ BitVector_Destroy(base);
+ }
+ if ((sign < 0) and (digits < length))
+ {
+ *string++ = (N_char) '-';
+ digits++;
+ }
+ *string = (N_char) '\0';
+ BIT_VECTOR_reverse(result,digits);
+ return(result);
+}
+
+struct BitVector_from_Dec_static_data {
+ wordptr term;
+ wordptr base;
+ wordptr prod;
+ wordptr rank;
+ wordptr temp;
+};
+
+BitVector_from_Dec_static_data *BitVector_from_Dec_static_Boot(N_word bits)
+{
+ BitVector_from_Dec_static_data *data;
+
+ data = yasm_xmalloc(sizeof(BitVector_from_Dec_static_data));
+
+ if (bits > 0)
+ {
+ data->term = BitVector_Create(BITS,FALSE);
+ data->base = BitVector_Create(BITS,FALSE);
+ data->prod = BitVector_Create(bits,FALSE);
+ data->rank = BitVector_Create(bits,FALSE);
+ data->temp = BitVector_Create(bits,FALSE);
+ } else {
+ data->term = NULL;
+ data->base = NULL;
+ data->prod = NULL;
+ data->rank = NULL;
+ data->temp = NULL;
+ }
+ return data;
+}
+
+void BitVector_from_Dec_static_Shutdown(BitVector_from_Dec_static_data *data)
+{
+ if (data) {
+ BitVector_Destroy(data->term);
+ BitVector_Destroy(data->base);
+ BitVector_Destroy(data->prod);
+ BitVector_Destroy(data->rank);
+ BitVector_Destroy(data->temp);
+ }
+ yasm_xfree(data);
+}
+
+ErrCode BitVector_from_Dec_static(BitVector_from_Dec_static_data *data,
+ wordptr addr, charptr string)
+{
+ ErrCode error = ErrCode_Ok;
+ N_word bits = bits_(addr);
+ N_word mask = mask_(addr);
+ boolean init = (bits > BITS);
+ boolean minus;
+ boolean shift;
+ boolean carry;
+ wordptr term;
+ wordptr base;
+ wordptr prod;
+ wordptr rank;
+ wordptr temp;
+ N_word accu;
+ N_word powr;
+ N_word count;
+ size_t length;
+ int digit;
+
+ if (bits > 0)
+ {
+ term = data->term;
+ base = data->base;
+ prod = data->prod;
+ rank = data->rank;
+ temp = data->temp;
+
+ length = strlen((char *) string);
+ if (length == 0) return(ErrCode_Pars);
+ digit = (int) *string;
+ if ((minus = (digit == (int) '-')) or
+ (digit == (int) '+'))
+ {
+ string++;
+ if (--length == 0) return(ErrCode_Pars);
+ }
+ string += length;
+ if (init)
+ {
+ BitVector_Empty(prod);
+ BitVector_Empty(rank);
+ }
+ BitVector_Empty(addr);
+ *base = EXP10;
+ shift = FALSE;
+ while ((not error) and (length > 0))
+ {
+ accu = 0;
+ powr = 1;
+ count = LOG10;
+ while ((not error) and (length > 0) and (count-- > 0))
+ {
+ digit = (int) *(--string); length--;
+ /* separate because isdigit() is likely a macro! */
+ if (isdigit(digit) != 0)
+ {
+ accu += ((N_word) digit - (N_word) '0') * powr;
+ powr *= 10;
+ }
+ else error = ErrCode_Pars;
+ }
+ if (not error)
+ {
+ if (shift)
+ {
+ *term = accu;
+ BitVector_Copy(temp,rank);
+ error = BitVector_Mul_Pos(prod,temp,term,FALSE);
+ }
+ else
+ {
+ *prod = accu;
+ if ((not init) and ((accu AND NOT mask) != 0)) error = ErrCode_Ovfl;
+ }
+ if (not error)
+ {
+ carry = FALSE;
+ BitVector_compute(addr,addr,prod,FALSE,&carry);
+ /* ignores sign change (= overflow) but not */
+ /* numbers too large (= carry) for resulting bit vector */
+ if (carry) error = ErrCode_Ovfl;
+ else
+ {
+ if (length > 0)
+ {
+ if (shift)
+ {
+ BitVector_Copy(temp,rank);
+ error = BitVector_Mul_Pos(rank,temp,base,FALSE);
+ }
+ else
+ {
+ *rank = *base;
+ shift = TRUE;
+ }
+ }
+ }
+ }
+ }
+ }
+ if (not error and minus)
+ {
+ BitVector_Negate(addr,addr);
+ if ((*(addr + size_(addr) - 1) AND mask AND NOT (mask >> 1)) == 0)
+ error = ErrCode_Ovfl;
+ }
+ }
+ return(error);
+}
+
+ErrCode BitVector_from_Dec(wordptr addr, charptr string)
+{
+ ErrCode error = ErrCode_Ok;
+ N_word bits = bits_(addr);
+ N_word mask = mask_(addr);
+ boolean init = (bits > BITS);
+ boolean minus;
+ boolean shift;
+ boolean carry;
+ wordptr term;
+ wordptr base;
+ wordptr prod;
+ wordptr rank;
+ wordptr temp;
+ N_word accu;
+ N_word powr;
+ N_word count;
+ size_t length;
+ int digit;
+
+ if (bits > 0)
+ {
+ length = strlen((char *) string);
+ if (length == 0) return(ErrCode_Pars);
+ digit = (int) *string;
+ if ((minus = (digit == (int) '-')) or
+ (digit == (int) '+'))
+ {
+ string++;
+ if (--length == 0) return(ErrCode_Pars);
+ }
+ string += length;
+ term = BitVector_Create(BITS,FALSE);
+ if (term == NULL)
+ {
+ return(ErrCode_Null);
+ }
+ base = BitVector_Create(BITS,FALSE);
+ if (base == NULL)
+ {
+ BitVector_Destroy(term);
+ return(ErrCode_Null);
+ }
+ prod = BitVector_Create(bits,init);
+ if (prod == NULL)
+ {
+ BitVector_Destroy(term);
+ BitVector_Destroy(base);
+ return(ErrCode_Null);
+ }
+ rank = BitVector_Create(bits,init);
+ if (rank == NULL)
+ {
+ BitVector_Destroy(term);
+ BitVector_Destroy(base);
+ BitVector_Destroy(prod);
+ return(ErrCode_Null);
+ }
+ temp = BitVector_Create(bits,FALSE);
+ if (temp == NULL)
+ {
+ BitVector_Destroy(term);
+ BitVector_Destroy(base);
+ BitVector_Destroy(prod);
+ BitVector_Destroy(rank);
+ return(ErrCode_Null);
+ }
+ BitVector_Empty(addr);
+ *base = EXP10;
+ shift = FALSE;
+ while ((not error) and (length > 0))
+ {
+ accu = 0;
+ powr = 1;
+ count = LOG10;
+ while ((not error) and (length > 0) and (count-- > 0))
+ {
+ digit = (int) *(--string); length--;
+ /* separate because isdigit() is likely a macro! */
+ if (isdigit(digit) != 0)
+ {
+ accu += ((N_word) digit - (N_word) '0') * powr;
+ powr *= 10;
+ }
+ else error = ErrCode_Pars;
+ }
+ if (not error)
+ {
+ if (shift)
+ {
+ *term = accu;
+ BitVector_Copy(temp,rank);
+ error = BitVector_Mul_Pos(prod,temp,term,FALSE);
+ }
+ else
+ {
+ *prod = accu;
+ if ((not init) and ((accu AND NOT mask) != 0)) error = ErrCode_Ovfl;
+ }
+ if (not error)
+ {
+ carry = FALSE;
+ BitVector_compute(addr,addr,prod,FALSE,&carry);
+ /* ignores sign change (= overflow) but not */
+ /* numbers too large (= carry) for resulting bit vector */
+ if (carry) error = ErrCode_Ovfl;
+ else
+ {
+ if (length > 0)
+ {
+ if (shift)
+ {
+ BitVector_Copy(temp,rank);
+ error = BitVector_Mul_Pos(rank,temp,base,FALSE);
+ }
+ else
+ {
+ *rank = *base;
+ shift = TRUE;
+ }
+ }
+ }
+ }
+ }
+ }
+ BitVector_Destroy(term);
+ BitVector_Destroy(base);
+ BitVector_Destroy(prod);
+ BitVector_Destroy(rank);
+ BitVector_Destroy(temp);
+ if (not error and minus)
+ {
+ BitVector_Negate(addr,addr);
+ if ((*(addr + size_(addr) - 1) AND mask AND NOT (mask >> 1)) == 0)
+ error = ErrCode_Ovfl;
+ }
+ }
+ return(error);
+}
+
+charptr BitVector_to_Enum(wordptr addr)
+{
+ N_word bits = bits_(addr);
+ N_word sample;
+ N_word length;
+ N_word digits;
+ N_word factor;
+ N_word power;
+ N_word start;
+ N_word min;
+ N_word max;
+ charptr string;
+ charptr target;
+ boolean comma;
+
+ if (bits > 0)
+ {
+ sample = bits - 1; /* greatest possible index */
+ length = 2; /* account for index 0 and terminating '\0' */
+ digits = 1; /* account for intervening dashes and commas */
+ factor = 1;
+ power = 10;
+ while (sample >= (power-1))
+ {
+ length += ++digits * factor * 6; /* 9,90,900,9000,... (9*2/3 = 6) */
+ factor = power;
+ power *= 10;
+ }
+ if (sample > --factor)
+ {
+ sample -= factor;
+ factor = (N_word) ( sample / 3 );
+ factor = (factor << 1) + (sample - (factor * 3));
+ length += ++digits * factor;
+ }
+ }
+ else length = 1;
+ string = (charptr) yasm_xmalloc((size_t) length);
+ if (string == NULL) return(NULL);
+ start = 0;
+ comma = FALSE;
+ target = string;
+ while ((start < bits) and BitVector_interval_scan_inc(addr,start,&min,&max))
+ {
+ start = max + 2;
+ if (comma) *target++ = (N_char) ',';
+ if (min == max)
+ {
+ target += BIT_VECTOR_int2str(target,min);
+ }
+ else
+ {
+ if (min+1 == max)
+ {
+ target += BIT_VECTOR_int2str(target,min);
+ *target++ = (N_char) ',';
+ target += BIT_VECTOR_int2str(target,max);
+ }
+ else
+ {
+ target += BIT_VECTOR_int2str(target,min);
+ *target++ = (N_char) '-';
+ target += BIT_VECTOR_int2str(target,max);
+ }
+ }
+ comma = TRUE;
+ }
+ *target = (N_char) '\0';
+ return(string);
+}
+
+ErrCode BitVector_from_Enum(wordptr addr, charptr string)
+{
+ ErrCode error = ErrCode_Ok;
+ N_word bits = bits_(addr);
+ N_word state = 1;
+ N_word token;
+ N_word indx = 0; /* silence compiler warning */
+ N_word start = 0; /* silence compiler warning */
+
+ if (bits > 0)
+ {
+ BitVector_Empty(addr);
+ while ((not error) and (state != 0))
+ {
+ token = (N_word) *string;
+ /* separate because isdigit() is likely a macro! */
+ if (isdigit((int)token) != 0)
+ {
+ string += BIT_VECTOR_str2int(string,&indx);
+ if (indx < bits) token = (N_word) '0';
+ else error = ErrCode_Indx;
+ }
+ else string++;
+ if (not error)
+ switch (state)
+ {
+ case 1:
+ switch (token)
+ {
+ case (N_word) '0':
+ state = 2;
+ break;
+ case (N_word) '\0':
+ state = 0;
+ break;
+ default:
+ error = ErrCode_Pars;
+ break;
+ }
+ break;
+ case 2:
+ switch (token)
+ {
+ case (N_word) '-':
+ start = indx;
+ state = 3;
+ break;
+ case (N_word) ',':
+ BIT_VECTOR_SET_BIT(addr,indx)
+ state = 5;
+ break;
+ case (N_word) '\0':
+ BIT_VECTOR_SET_BIT(addr,indx)
+ state = 0;
+ break;
+ default:
+ error = ErrCode_Pars;
+ break;
+ }
+ break;
+ case 3:
+ switch (token)
+ {
+ case (N_word) '0':
+ if (start < indx)
+ BitVector_Interval_Fill(addr,start,indx);
+ else if (start == indx)
+ BIT_VECTOR_SET_BIT(addr,indx)
+ else error = ErrCode_Ordr;
+ state = 4;
+ break;
+ default:
+ error = ErrCode_Pars;
+ break;
+ }
+ break;
+ case 4:
+ switch (token)
+ {
+ case (N_word) ',':
+ state = 5;
+ break;
+ case (N_word) '\0':
+ state = 0;
+ break;
+ default:
+ error = ErrCode_Pars;
+ break;
+ }
+ break;
+ case 5:
+ switch (token)
+ {
+ case (N_word) '0':
+ state = 2;
+ break;
+ default:
+ error = ErrCode_Pars;
+ break;
+ }
+ break;
+ }
+ }
+ }
+ return(error);
+}
+
+void BitVector_Bit_Off(wordptr addr, N_int indx) /* X = X \ {x} */
+{
+ if (indx < bits_(addr)) BIT_VECTOR_CLR_BIT(addr,indx)
+}
+
+void BitVector_Bit_On(wordptr addr, N_int indx) /* X = X + {x} */
+{
+ if (indx < bits_(addr)) BIT_VECTOR_SET_BIT(addr,indx)
+}
+
+boolean BitVector_bit_flip(wordptr addr, N_int indx) /* X=(X+{x})\(X*{x}) */
+{
+ N_word mask;
+
+ if (indx < bits_(addr)) return( BIT_VECTOR_FLP_BIT(addr,indx,mask) );
+ else return( FALSE );
+}
+
+boolean BitVector_bit_test(wordptr addr, N_int indx) /* {x} in X ? */
+{
+ if (indx < bits_(addr)) return( BIT_VECTOR_TST_BIT(addr,indx) );
+ else return( FALSE );
+}
+
+void BitVector_Bit_Copy(wordptr addr, N_int indx, boolean bit)
+{
+ if (indx < bits_(addr))
+ {
+ if (bit) BIT_VECTOR_SET_BIT(addr,indx)
+ else BIT_VECTOR_CLR_BIT(addr,indx)
+ }
+}
+
+void BitVector_LSB(wordptr addr, boolean bit)
+{
+ if (bits_(addr) > 0)
+ {
+ if (bit) *addr |= LSB;
+ else *addr &= NOT LSB;
+ }
+}
+
+void BitVector_MSB(wordptr addr, boolean bit)
+{
+ N_word size = size_(addr);
+ N_word mask = mask_(addr);
+
+ if (size-- > 0)
+ {
+ if (bit) *(addr+size) |= mask AND NOT (mask >> 1);
+ else *(addr+size) &= NOT mask OR (mask >> 1);
+ }
+}
+
+boolean BitVector_lsb_(wordptr addr)
+{
+ if (size_(addr) > 0) return( (*addr AND LSB) != 0 );
+ else return( FALSE );
+}
+
+boolean BitVector_msb_(wordptr addr)
+{
+ N_word size = size_(addr);
+ N_word mask = mask_(addr);
+
+ if (size-- > 0)
+ return( (*(addr+size) AND (mask AND NOT (mask >> 1))) != 0 );
+ else
+ return( FALSE );
+}
+
+boolean BitVector_rotate_left(wordptr addr)
+{
+ N_word size = size_(addr);
+ N_word mask = mask_(addr);
+ N_word msb;
+ boolean carry_in;
+ boolean carry_out = FALSE;
+
+ if (size > 0)
+ {
+ msb = mask AND NOT (mask >> 1);
+ carry_in = ((*(addr+size-1) AND msb) != 0);
+ while (size-- > 1)
+ {
+ carry_out = ((*addr AND MSB) != 0);
+ *addr <<= 1;
+ if (carry_in) *addr |= LSB;
+ carry_in = carry_out;
+ addr++;
+ }
+ carry_out = ((*addr AND msb) != 0);
+ *addr <<= 1;
+ if (carry_in) *addr |= LSB;
+ *addr &= mask;
+ }
+ return(carry_out);
+}
+
+boolean BitVector_rotate_right(wordptr addr)
+{
+ N_word size = size_(addr);
+ N_word mask = mask_(addr);
+ N_word msb;
+ boolean carry_in;
+ boolean carry_out = FALSE;
+
+ if (size > 0)
+ {
+ msb = mask AND NOT (mask >> 1);
+ carry_in = ((*addr AND LSB) != 0);
+ addr += size-1;
+ *addr &= mask;
+ carry_out = ((*addr AND LSB) != 0);
+ *addr >>= 1;
+ if (carry_in) *addr |= msb;
+ carry_in = carry_out;
+ addr--;
+ size--;
+ while (size-- > 0)
+ {
+ carry_out = ((*addr AND LSB) != 0);
+ *addr >>= 1;
+ if (carry_in) *addr |= MSB;
+ carry_in = carry_out;
+ addr--;
+ }
+ }
+ return(carry_out);
+}
+
+boolean BitVector_shift_left(wordptr addr, boolean carry_in)
+{
+ N_word size = size_(addr);
+ N_word mask = mask_(addr);
+ N_word msb;
+ boolean carry_out = carry_in;
+
+ if (size > 0)
+ {
+ msb = mask AND NOT (mask >> 1);
+ while (size-- > 1)
+ {
+ carry_out = ((*addr AND MSB) != 0);
+ *addr <<= 1;
+ if (carry_in) *addr |= LSB;
+ carry_in = carry_out;
+ addr++;
+ }
+ carry_out = ((*addr AND msb) != 0);
+ *addr <<= 1;
+ if (carry_in) *addr |= LSB;
+ *addr &= mask;
+ }
+ return(carry_out);
+}
+
+boolean BitVector_shift_right(wordptr addr, boolean carry_in)
+{
+ N_word size = size_(addr);
+ N_word mask = mask_(addr);
+ N_word msb;
+ boolean carry_out = carry_in;
+
+ if (size > 0)
+ {
+ msb = mask AND NOT (mask >> 1);
+ addr += size-1;
+ *addr &= mask;
+ carry_out = ((*addr AND LSB) != 0);
+ *addr >>= 1;
+ if (carry_in) *addr |= msb;
+ carry_in = carry_out;
+ addr--;
+ size--;
+ while (size-- > 0)
+ {
+ carry_out = ((*addr AND LSB) != 0);
+ *addr >>= 1;
+ if (carry_in) *addr |= MSB;
+ carry_in = carry_out;
+ addr--;
+ }
+ }
+ return(carry_out);
+}
+
+void BitVector_Move_Left(wordptr addr, N_int bits)
+{
+ N_word count;
+ N_word words;
+
+ if (bits > 0)
+ {
+ count = bits AND MODMASK;
+ words = bits >> LOGBITS;
+ if (bits >= bits_(addr)) BitVector_Empty(addr);
+ else
+ {
+ while (count-- > 0) BitVector_shift_left(addr,0);
+ BitVector_Word_Insert(addr,0,words,TRUE);
+ }
+ }
+}
+
+void BitVector_Move_Right(wordptr addr, N_int bits)
+{
+ N_word count;
+ N_word words;
+
+ if (bits > 0)
+ {
+ count = bits AND MODMASK;
+ words = bits >> LOGBITS;
+ if (bits >= bits_(addr)) BitVector_Empty(addr);
+ else
+ {
+ while (count-- > 0) BitVector_shift_right(addr,0);
+ BitVector_Word_Delete(addr,0,words,TRUE);
+ }
+ }
+}
+
+void BitVector_Insert(wordptr addr, N_int offset, N_int count, boolean clear)
+{
+ N_word bits = bits_(addr);
+ N_word last;
+
+ if ((count > 0) and (offset < bits))
+ {
+ last = offset + count;
+ if (last < bits)
+ {
+ BitVector_Interval_Copy(addr,addr,last,offset,(bits-last));
+ }
+ else last = bits;
+ if (clear) BitVector_Interval_Empty(addr,offset,(last-1));
+ }
+}
+
+void BitVector_Delete(wordptr addr, N_int offset, N_int count, boolean clear)
+{
+ N_word bits = bits_(addr);
+ N_word last;
+
+ if ((count > 0) and (offset < bits))
+ {
+ last = offset + count;
+ if (last < bits)
+ {
+ BitVector_Interval_Copy(addr,addr,offset,last,(bits-last));
+ }
+ else count = bits - offset;
+ if (clear) BitVector_Interval_Empty(addr,(bits-count),(bits-1));
+ }
+}
+
+boolean BitVector_increment(wordptr addr) /* X++ */
+{
+ N_word size = size_(addr);
+ N_word mask = mask_(addr);
+ wordptr last = addr + size - 1;
+ boolean carry = TRUE;
+
+ if (size > 0)
+ {
+ *last |= NOT mask;
+ while (carry and (size-- > 0))
+ {
+ carry = (++(*addr++) == 0);
+ }
+ *last &= mask;
+ }
+ return(carry);
+}
+
+boolean BitVector_decrement(wordptr addr) /* X-- */
+{
+ N_word size = size_(addr);
+ N_word mask = mask_(addr);
+ wordptr last = addr + size - 1;
+ boolean carry = TRUE;
+
+ if (size > 0)
+ {
+ *last &= mask;
+ while (carry and (size-- > 0))
+ {
+ carry = (*addr == 0);
+ --(*addr++);
+ }
+ *last &= mask;
+ }
+ return(carry);
+}
+
+boolean BitVector_compute(wordptr X, wordptr Y, wordptr Z, boolean minus, boolean *carry)
+{
+ N_word size = size_(X);
+ N_word mask = mask_(X);
+ N_word vv = 0;
+ N_word cc;
+ N_word mm;
+ N_word yy;
+ N_word zz;
+ N_word lo;
+ N_word hi;
+
+ if (size > 0)
+ {
+ if (minus) cc = (*carry == 0);
+ else cc = (*carry != 0);
+ /* deal with (size-1) least significant full words first: */
+ while (--size > 0)
+ {
+ yy = *Y++;
+ if (minus) zz = (N_word) NOT ( Z ? *Z++ : 0 );
+ else zz = (N_word) ( Z ? *Z++ : 0 );
+ lo = (yy AND LSB) + (zz AND LSB) + cc;
+ hi = (yy >> 1) + (zz >> 1) + (lo >> 1);
+ cc = ((hi AND MSB) != 0);
+ *X++ = (hi << 1) OR (lo AND LSB);
+ }
+ /* deal with most significant word (may be used only partially): */
+ yy = *Y AND mask;
+ if (minus) zz = (N_word) NOT ( Z ? *Z : 0 );
+ else zz = (N_word) ( Z ? *Z : 0 );
+ zz &= mask;
+ if (mask == LSB) /* special case, only one bit used */
+ {
+ vv = cc;
+ lo = yy + zz + cc;
+ cc = (lo >> 1);
+ vv ^= cc;
+ *X = lo AND LSB;
+ }
+ else
+ {
+ if (NOT mask) /* not all bits are used, but more than one */
+ {
+ mm = (mask >> 1);
+ vv = (yy AND mm) + (zz AND mm) + cc;
+ mm = mask AND NOT mm;
+ lo = yy + zz + cc;
+ cc = (lo >> 1);
+ vv ^= cc;
+ vv &= mm;
+ cc &= mm;
+ *X = lo AND mask;
+ }
+ else /* other special case, all bits are used */
+ {
+ mm = NOT MSB;
+ lo = (yy AND mm) + (zz AND mm) + cc;
+ vv = lo AND MSB;
+ hi = ((yy AND MSB) >> 1) + ((zz AND MSB) >> 1) + (vv >> 1);
+ cc = hi AND MSB;
+ vv ^= cc;
+ *X = (hi << 1) OR (lo AND mm);
+ }
+ }
+ if (minus) *carry = (cc == 0);
+ else *carry = (cc != 0);
+ }
+ return(vv != 0);
+}
+
+boolean BitVector_add(wordptr X, wordptr Y, wordptr Z, boolean *carry)
+{
+ return(BitVector_compute(X,Y,Z,FALSE,carry));
+}
+
+boolean BitVector_sub(wordptr X, wordptr Y, wordptr Z, boolean *carry)
+{
+ return(BitVector_compute(X,Y,Z,TRUE,carry));
+}
+
+boolean BitVector_inc(wordptr X, wordptr Y)
+{
+ boolean carry = TRUE;
+
+ return(BitVector_compute(X,Y,NULL,FALSE,&carry));
+}
+
+boolean BitVector_dec(wordptr X, wordptr Y)
+{
+ boolean carry = TRUE;
+
+ return(BitVector_compute(X,Y,NULL,TRUE,&carry));
+}
+
+void BitVector_Negate(wordptr X, wordptr Y)
+{
+ N_word size = size_(X);
+ N_word mask = mask_(X);
+ boolean carry = TRUE;
+
+ if (size > 0)
+ {
+ while (size-- > 0)
+ {
+ *X = NOT *Y++;
+ if (carry)
+ {
+ carry = (++(*X) == 0);
+ }
+ X++;
+ }
+ *(--X) &= mask;
+ }
+}
+
+void BitVector_Absolute(wordptr X, wordptr Y)
+{
+ N_word size = size_(Y);
+ N_word mask = mask_(Y);
+
+ if (size > 0)
+ {
+ if (*(Y+size-1) AND (mask AND NOT (mask >> 1))) BitVector_Negate(X,Y);
+ else BitVector_Copy(X,Y);
+ }
+}
+
+Z_int BitVector_Sign(wordptr addr)
+{
+ N_word size = size_(addr);
+ N_word mask = mask_(addr);
+ wordptr last = addr + size - 1;
+ boolean r = TRUE;
+
+ if (size > 0)
+ {
+ *last &= mask;
+ while (r and (size-- > 0)) r = ( *addr++ == 0 );
+ }
+ if (r) return((Z_int) 0);
+ else
+ {
+ if (*last AND (mask AND NOT (mask >> 1))) return((Z_int) -1);
+ else return((Z_int) 1);
+ }
+}
+
+ErrCode BitVector_Mul_Pos(wordptr X, wordptr Y, wordptr Z, boolean strict)
+{
+ N_word mask;
+ N_word limit;
+ N_word count;
+ Z_long last;
+ wordptr sign;
+ boolean carry;
+ boolean overflow;
+ boolean ok = TRUE;
+
+ /*
+ Requirements:
+ - X, Y and Z must be distinct
+ - X and Y must have equal sizes (whereas Z may be any size!)
+ - Z should always contain the SMALLER of the two factors Y and Z
+ Constraints:
+ - The contents of Y (and of X, of course) are destroyed
+ (only Z is preserved!)
+ */
+
+ if ((X == Y) or (X == Z) or (Y == Z)) return(ErrCode_Same);
+ if (bits_(X) != bits_(Y)) return(ErrCode_Size);
+ BitVector_Empty(X);
+ if (BitVector_is_empty(Y)) return(ErrCode_Ok); /* exit also taken if bits_(Y)==0 */
+ if ((last = Set_Max(Z)) < 0L) return(ErrCode_Ok);
+ limit = (N_word) last;
+ sign = Y + size_(Y) - 1;
+ mask = mask_(Y);
+ *sign &= mask;
+ mask &= NOT (mask >> 1);
+ for ( count = 0; (ok and (count <= limit)); count++ )
+ {
+ if ( BIT_VECTOR_TST_BIT(Z,count) )
+ {
+ carry = false;
+ overflow = BitVector_compute(X,X,Y,false,&carry);
+ if (strict) ok = not (carry or overflow);
+ else ok = not carry;
+ }
+ if (ok and (count < limit))
+ {
+ carry = BitVector_shift_left(Y,0);
+ if (strict)
+ {
+ overflow = ((*sign AND mask) != 0);
+ ok = not (carry or overflow);
+ }
+ else ok = not carry;
+ }
+ }
+ if (ok) return(ErrCode_Ok); else return(ErrCode_Ovfl);
+}
+
+ErrCode BitVector_Multiply(wordptr X, wordptr Y, wordptr Z)
+{
+ ErrCode error = ErrCode_Ok;
+ N_word bit_x = bits_(X);
+ N_word bit_y = bits_(Y);
+ N_word bit_z = bits_(Z);
+ N_word size;
+ N_word mask;
+ N_word msb;
+ wordptr ptr_y;
+ wordptr ptr_z;
+ boolean sgn_x;
+ boolean sgn_y;
+ boolean sgn_z;
+ boolean zero;
+ wordptr A;
+ wordptr B;
+
+ /*
+ Requirements:
+ - Y and Z must have equal sizes
+ - X must have at least the same size as Y and Z but may be larger (!)
+ Features:
+ - The contents of Y and Z are preserved
+ - X may be identical with Y or Z (or both!)
+ (in-place multiplication is possible!)
+ */
+
+ if ((bit_y != bit_z) or (bit_x < bit_y)) return(ErrCode_Size);
+ if (BitVector_is_empty(Y) or BitVector_is_empty(Z))
+ {
+ BitVector_Empty(X);
+ }
+ else
+ {
+ A = BitVector_Create(bit_y,FALSE);
+ if (A == NULL) return(ErrCode_Null);
+ B = BitVector_Create(bit_z,FALSE);
+ if (B == NULL) { BitVector_Destroy(A); return(ErrCode_Null); }
+ size = size_(Y);
+ mask = mask_(Y);
+ msb = (mask AND NOT (mask >> 1));
+ sgn_y = (((*(Y+size-1) &= mask) AND msb) != 0);
+ sgn_z = (((*(Z+size-1) &= mask) AND msb) != 0);
+ sgn_x = sgn_y XOR sgn_z;
+ if (sgn_y) BitVector_Negate(A,Y); else BitVector_Copy(A,Y);
+ if (sgn_z) BitVector_Negate(B,Z); else BitVector_Copy(B,Z);
+ ptr_y = A + size;
+ ptr_z = B + size;
+ zero = TRUE;
+ while (zero and (size-- > 0))
+ {
+ zero &= (*(--ptr_y) == 0);
+ zero &= (*(--ptr_z) == 0);
+ }
+ if (*ptr_y > *ptr_z)
+ {
+ if (bit_x > bit_y)
+ {
+ A = BitVector_Resize(A,bit_x);
+ if (A == NULL) { BitVector_Destroy(B); return(ErrCode_Null); }
+ }
+ error = BitVector_Mul_Pos(X,A,B,TRUE);
+ }
+ else
+ {
+ if (bit_x > bit_z)
+ {
+ B = BitVector_Resize(B,bit_x);
+ if (B == NULL) { BitVector_Destroy(A); return(ErrCode_Null); }
+ }
+ error = BitVector_Mul_Pos(X,B,A,TRUE);
+ }
+ if ((not error) and sgn_x) BitVector_Negate(X,X);
+ BitVector_Destroy(A);
+ BitVector_Destroy(B);
+ }
+ return(error);
+}
+
+ErrCode BitVector_Div_Pos(wordptr Q, wordptr X, wordptr Y, wordptr R)
+{
+ N_word bits = bits_(Q);
+ N_word mask;
+ wordptr addr;
+ Z_long last;
+ boolean flag;
+ boolean copy = FALSE; /* flags whether valid rest is in R (0) or X (1) */
+
+ /*
+ Requirements:
+ - All bit vectors must have equal sizes
+ - Q, X, Y and R must all be distinct bit vectors
+ - Y must be non-zero (of course!)
+ Constraints:
+ - The contents of X (and Q and R, of course) are destroyed
+ (only Y is preserved!)
+ */
+
+ if ((bits != bits_(X)) or (bits != bits_(Y)) or (bits != bits_(R)))
+ return(ErrCode_Size);
+ if ((Q == X) or (Q == Y) or (Q == R) or (X == Y) or (X == R) or (Y == R))
+ return(ErrCode_Same);
+ if (BitVector_is_empty(Y))
+ return(ErrCode_Zero);
+
+ BitVector_Empty(R);
+ BitVector_Copy(Q,X);
+ if ((last = Set_Max(Q)) < 0L) return(ErrCode_Ok);
+ bits = (N_word) ++last;
+ while (bits-- > 0)
+ {
+ addr = Q + (bits >> LOGBITS);
+ mask = BITMASKTAB[bits AND MODMASK];
+ flag = ((*addr AND mask) != 0);
+ if (copy)
+ {
+ BitVector_shift_left(X,flag);
+ flag = FALSE;
+ BitVector_compute(R,X,Y,TRUE,&flag);
+ }
+ else
+ {
+ BitVector_shift_left(R,flag);
+ flag = FALSE;
+ BitVector_compute(X,R,Y,TRUE,&flag);
+ }
+ if (flag) *addr &= NOT mask;
+ else
+ {
+ *addr |= mask;
+ copy = not copy;
+ }
+ }
+ if (copy) BitVector_Copy(R,X);
+ return(ErrCode_Ok);
+}
+
+ErrCode BitVector_Divide(wordptr Q, wordptr X, wordptr Y, wordptr R)
+{
+ ErrCode error = ErrCode_Ok;
+ N_word bits = bits_(Q);
+ N_word size = size_(Q);
+ N_word mask = mask_(Q);
+ N_word msb = (mask AND NOT (mask >> 1));
+ boolean sgn_q;
+ boolean sgn_x;
+ boolean sgn_y;
+ wordptr A;
+ wordptr B;
+
+ /*
+ Requirements:
+ - All bit vectors must have equal sizes
+ - Q and R must be two distinct bit vectors
+ - Y must be non-zero (of course!)
+ Features:
+ - The contents of X and Y are preserved
+ - Q may be identical with X or Y (or both)
+ (in-place division is possible!)
+ - R may be identical with X or Y (or both)
+ (but not identical with Q!)
+ */
+
+ if ((bits != bits_(X)) or (bits != bits_(Y)) or (bits != bits_(R)))
+ return(ErrCode_Size);
+ if (Q == R)
+ return(ErrCode_Same);
+ if (BitVector_is_empty(Y))
+ return(ErrCode_Zero);
+
+ if (BitVector_is_empty(X))
+ {
+ BitVector_Empty(Q);
+ BitVector_Empty(R);
+ }
+ else
+ {
+ A = BitVector_Create(bits,FALSE);
+ if (A == NULL) return(ErrCode_Null);
+ B = BitVector_Create(bits,FALSE);
+ if (B == NULL) { BitVector_Destroy(A); return(ErrCode_Null); }
+ size--;
+ sgn_x = (((*(X+size) &= mask) AND msb) != 0);
+ sgn_y = (((*(Y+size) &= mask) AND msb) != 0);
+ sgn_q = sgn_x XOR sgn_y;
+ if (sgn_x) BitVector_Negate(A,X); else BitVector_Copy(A,X);
+ if (sgn_y) BitVector_Negate(B,Y); else BitVector_Copy(B,Y);
+ if (not (error = BitVector_Div_Pos(Q,A,B,R)))
+ {
+ if (sgn_q) BitVector_Negate(Q,Q);
+ if (sgn_x) BitVector_Negate(R,R);
+ }
+ BitVector_Destroy(A);
+ BitVector_Destroy(B);
+ }
+ return(error);
+}
+
+ErrCode BitVector_GCD(wordptr X, wordptr Y, wordptr Z)
+{
+ ErrCode error = ErrCode_Ok;
+ N_word bits = bits_(X);
+ N_word size = size_(X);
+ N_word mask = mask_(X);
+ N_word msb = (mask AND NOT (mask >> 1));
+ boolean sgn_a;
+ boolean sgn_b;
+ boolean sgn_r;
+ wordptr Q;
+ wordptr R;
+ wordptr A;
+ wordptr B;
+ wordptr T;
+
+ /*
+ Requirements:
+ - All bit vectors must have equal sizes
+ Features:
+ - The contents of Y and Z are preserved
+ - X may be identical with Y or Z (or both)
+ (in-place is possible!)
+ - GCD(0,z) == GCD(z,0) == z
+ - negative values are handled correctly
+ */
+
+ if ((bits != bits_(Y)) or (bits != bits_(Z))) return(ErrCode_Size);
+ if (BitVector_is_empty(Y))
+ {
+ if (X != Z) BitVector_Copy(X,Z);
+ return(ErrCode_Ok);
+ }
+ if (BitVector_is_empty(Z))
+ {
+ if (X != Y) BitVector_Copy(X,Y);
+ return(ErrCode_Ok);
+ }
+ Q = BitVector_Create(bits,false);
+ if (Q == NULL)
+ {
+ return(ErrCode_Null);
+ }
+ R = BitVector_Create(bits,FALSE);
+ if (R == NULL)
+ {
+ BitVector_Destroy(Q);
+ return(ErrCode_Null);
+ }
+ A = BitVector_Create(bits,FALSE);
+ if (A == NULL)
+ {
+ BitVector_Destroy(Q);
+ BitVector_Destroy(R);
+ return(ErrCode_Null);
+ }
+ B = BitVector_Create(bits,FALSE);
+ if (B == NULL)
+ {
+ BitVector_Destroy(Q);
+ BitVector_Destroy(R);
+ BitVector_Destroy(A);
+ return(ErrCode_Null);
+ }
+ size--;
+ sgn_a = (((*(Y+size) &= mask) AND msb) != 0);
+ sgn_b = (((*(Z+size) &= mask) AND msb) != 0);
+ if (sgn_a) BitVector_Negate(A,Y); else BitVector_Copy(A,Y);
+ if (sgn_b) BitVector_Negate(B,Z); else BitVector_Copy(B,Z);
+ while (not error)
+ {
+ if (not (error = BitVector_Div_Pos(Q,A,B,R)))
+ {
+ if (BitVector_is_empty(R)) break;
+ T = A; sgn_r = sgn_a;
+ A = B; sgn_a = sgn_b;
+ B = R; sgn_b = sgn_r;
+ R = T;
+ }
+ }
+ if (not error)
+ {
+ if (sgn_b) BitVector_Negate(X,B); else BitVector_Copy(X,B);
+ }
+ BitVector_Destroy(Q);
+ BitVector_Destroy(R);
+ BitVector_Destroy(A);
+ BitVector_Destroy(B);
+ return(error);
+}
+
+ErrCode BitVector_GCD2(wordptr U, wordptr V, wordptr W, wordptr X, wordptr Y)
+{
+ ErrCode error = ErrCode_Ok;
+ N_word bits = bits_(U);
+ N_word size = size_(U);
+ N_word mask = mask_(U);
+ N_word msb = (mask AND NOT (mask >> 1));
+ boolean minus;
+ boolean carry;
+ boolean sgn_q;
+ boolean sgn_r;
+ boolean sgn_a;
+ boolean sgn_b;
+ boolean sgn_x;
+ boolean sgn_y;
+ listptr L;
+ wordptr Q;
+ wordptr R;
+ wordptr A;
+ wordptr B;
+ wordptr T;
+ wordptr X1;
+ wordptr X2;
+ wordptr X3;
+ wordptr Y1;
+ wordptr Y2;
+ wordptr Y3;
+ wordptr Z;
+
+ /*
+ Requirements:
+ - All bit vectors must have equal sizes
+ - U, V, and W must all be distinct bit vectors
+ Features:
+ - The contents of X and Y are preserved
+ - U, V and W may be identical with X or Y (or both,
+ provided that U, V and W are mutually distinct)
+ (i.e., in-place is possible!)
+ - GCD(0,z) == GCD(z,0) == z
+ - negative values are handled correctly
+ */
+
+ if ((bits != bits_(V)) or
+ (bits != bits_(W)) or
+ (bits != bits_(X)) or
+ (bits != bits_(Y)))
+ {
+ return(ErrCode_Size);
+ }
+ if ((U == V) or (U == W) or (V == W))
+ {
+ return(ErrCode_Same);
+ }
+ if (BitVector_is_empty(X))
+ {
+ if (U != Y) BitVector_Copy(U,Y);
+ BitVector_Empty(V);
+ BitVector_Empty(W);
+ *W = 1;
+ return(ErrCode_Ok);
+ }
+ if (BitVector_is_empty(Y))
+ {
+ if (U != X) BitVector_Copy(U,X);
+ BitVector_Empty(V);
+ BitVector_Empty(W);
+ *V = 1;
+ return(ErrCode_Ok);
+ }
+ if ((L = BitVector_Create_List(bits,false,11)) == NULL)
+ {
+ return(ErrCode_Null);
+ }
+ Q = L[0];
+ R = L[1];
+ A = L[2];
+ B = L[3];
+ X1 = L[4];
+ X2 = L[5];
+ X3 = L[6];
+ Y1 = L[7];
+ Y2 = L[8];
+ Y3 = L[9];
+ Z = L[10];
+ size--;
+ sgn_a = (((*(X+size) &= mask) AND msb) != 0);
+ sgn_b = (((*(Y+size) &= mask) AND msb) != 0);
+ if (sgn_a) BitVector_Negate(A,X); else BitVector_Copy(A,X);
+ if (sgn_b) BitVector_Negate(B,Y); else BitVector_Copy(B,Y);
+ BitVector_Empty(X1);
+ BitVector_Empty(X2);
+ *X1 = 1;
+ BitVector_Empty(Y1);
+ BitVector_Empty(Y2);
+ *Y2 = 1;
+ sgn_x = false;
+ sgn_y = false;
+ while (not error)
+ {
+ if ((error = BitVector_Div_Pos(Q,A,B,R)))
+ {
+ break;
+ }
+ if (BitVector_is_empty(R))
+ {
+ break;
+ }
+ sgn_q = sgn_a XOR sgn_b;
+
+ if (sgn_x) BitVector_Negate(Z,X2); else BitVector_Copy(Z,X2);
+ if ((error = BitVector_Mul_Pos(X3,Z,Q,true)))
+ {
+ break;
+ }
+ minus = not (sgn_x XOR sgn_q);
+ carry = 0;
+ if (BitVector_compute(X3,X1,X3,minus,&carry))
+ {
+ error = ErrCode_Ovfl;
+ break;
+ }
+ sgn_x = (((*(X3+size) &= mask) AND msb) != 0);
+
+ if (sgn_y) BitVector_Negate(Z,Y2); else BitVector_Copy(Z,Y2);
+ if ((error = BitVector_Mul_Pos(Y3,Z,Q,true)))
+ {
+ break;
+ }
+ minus = not (sgn_y XOR sgn_q);
+ carry = 0;
+ if (BitVector_compute(Y3,Y1,Y3,minus,&carry))
+ {
+ error = ErrCode_Ovfl;
+ break;
+ }
+ sgn_y = (((*(Y3+size) &= mask) AND msb) != 0);
+
+ T = A; sgn_r = sgn_a;
+ A = B; sgn_a = sgn_b;
+ B = R; sgn_b = sgn_r;
+ R = T;
+
+ T = X1;
+ X1 = X2;
+ X2 = X3;
+ X3 = T;
+
+ T = Y1;
+ Y1 = Y2;
+ Y2 = Y3;
+ Y3 = T;
+ }
+ if (not error)
+ {
+ if (sgn_b) BitVector_Negate(U,B); else BitVector_Copy(U,B);
+ BitVector_Copy(V,X2);
+ BitVector_Copy(W,Y2);
+ }
+ BitVector_Destroy_List(L,11);
+ return(error);
+}
+
+ErrCode BitVector_Power(wordptr X, wordptr Y, wordptr Z)
+{
+ ErrCode error = ErrCode_Ok;
+ N_word bits = bits_(X);
+ boolean first = TRUE;
+ Z_long last;
+ N_word limit;
+ N_word count;
+ wordptr T;
+
+ /*
+ Requirements:
+ - X must have at least the same size as Y but may be larger (!)
+ - X may not be identical with Z
+ - Z must be positive
+ Features:
+ - The contents of Y and Z are preserved
+ */
+
+ if (X == Z) return(ErrCode_Same);
+ if (bits < bits_(Y)) return(ErrCode_Size);
+ if (BitVector_msb_(Z)) return(ErrCode_Expo);
+ if ((last = Set_Max(Z)) < 0L)
+ {
+ if (bits < 2) return(ErrCode_Ovfl);
+ BitVector_Empty(X);
+ *X |= LSB;
+ return(ErrCode_Ok); /* anything ^ 0 == 1 */
+ }
+ if (BitVector_is_empty(Y))
+ {
+ if (X != Y) BitVector_Empty(X);
+ return(ErrCode_Ok); /* 0 ^ anything not zero == 0 */
+ }
+ T = BitVector_Create(bits,FALSE);
+ if (T == NULL) return(ErrCode_Null);
+ limit = (N_word) last;
+ for ( count = 0; ((!error) and (count <= limit)); count++ )
+ {
+ if ( BIT_VECTOR_TST_BIT(Z,count) )
+ {
+ if (first)
+ {
+ first = FALSE;
+ if (count) { BitVector_Copy(X,T); }
+ else { if (X != Y) BitVector_Copy(X,Y); }
+ }
+ else error = BitVector_Multiply(X,T,X); /* order important because T > X */
+ }
+ if ((!error) and (count < limit))
+ {
+ if (count) error = BitVector_Multiply(T,T,T);
+ else error = BitVector_Multiply(T,Y,Y);
+ }
+ }
+ BitVector_Destroy(T);
+ return(error);
+}
+
+void BitVector_Block_Store(wordptr addr, charptr buffer, N_int length)
+{
+ N_word size = size_(addr);
+ N_word mask = mask_(addr);
+ N_word value;
+ N_word count;
+
+ /* provide translation for independence of endian-ness: */
+ if (size > 0)
+ {
+ while (size-- > 0)
+ {
+ value = 0;
+ for ( count = 0; (length > 0) and (count < BITS); count += 8 )
+ {
+ value |= (((N_word) *buffer++) << count); length--;
+ }
+ *addr++ = value;
+ }
+ *(--addr) &= mask;
+ }
+}
+
+charptr BitVector_Block_Read(wordptr addr, N_intptr length)
+{
+ N_word size = size_(addr);
+ N_word value;
+ N_word count;
+ charptr buffer;
+ charptr target;
+
+ /* provide translation for independence of endian-ness: */
+ *length = size << FACTOR;
+ buffer = (charptr) yasm_xmalloc((size_t) ((*length)+1));
+ if (buffer == NULL) return(NULL);
+ target = buffer;
+ if (size > 0)
+ {
+ *(addr+size-1) &= mask_(addr);
+ while (size-- > 0)
+ {
+ value = *addr++;
+ count = BITS >> 3;
+ while (count-- > 0)
+ {
+ *target++ = (N_char) (value AND 0x00FF);
+ if (count > 0) value >>= 8;
+ }
+ }
+ }
+ *target = (N_char) '\0';
+ return(buffer);
+}
+
+void BitVector_Word_Store(wordptr addr, N_int offset, N_int value)
+{
+ N_word size = size_(addr);
+
+ if (size > 0)
+ {
+ if (offset < size) *(addr+offset) = value;
+ *(addr+size-1) &= mask_(addr);
+ }
+}
+
+N_int BitVector_Word_Read(wordptr addr, N_int offset)
+{
+ N_word size = size_(addr);
+
+ if (size > 0)
+ {
+ *(addr+size-1) &= mask_(addr);
+ if (offset < size) return( *(addr+offset) );
+ }
+ return( (N_int) 0 );
+}
+
+void BitVector_Word_Insert(wordptr addr, N_int offset, N_int count,
+ boolean clear)
+{
+ N_word size = size_(addr);
+ N_word mask = mask_(addr);
+ wordptr last = addr+size-1;
+
+ if (size > 0)
+ {
+ *last &= mask;
+ if (offset > size) offset = size;
+ BIT_VECTOR_ins_words(addr+offset,size-offset,count,clear);
+ *last &= mask;
+ }
+}
+
+void BitVector_Word_Delete(wordptr addr, N_int offset, N_int count,
+ boolean clear)
+{
+ N_word size = size_(addr);
+ N_word mask = mask_(addr);
+ wordptr last = addr+size-1;
+
+ if (size > 0)
+ {
+ *last &= mask;
+ if (offset > size) offset = size;
+ BIT_VECTOR_del_words(addr+offset,size-offset,count,clear);
+ *last &= mask;
+ }
+}
+
+void BitVector_Chunk_Store(wordptr addr, N_int chunksize, N_int offset,
+ N_long value)
+{
+ N_word bits = bits_(addr);
+ N_word mask;
+ N_word temp;
+
+ if ((chunksize > 0) and (offset < bits))
+ {
+ if (chunksize > LONGBITS) chunksize = LONGBITS;
+ if ((offset + chunksize) > bits) chunksize = bits - offset;
+ addr += offset >> LOGBITS;
+ offset &= MODMASK;
+ while (chunksize > 0)
+ {
+ mask = (N_word) (~0L << offset);
+ bits = offset + chunksize;
+ if (bits < BITS)
+ {
+ mask &= (N_word) ~(~0L << bits);
+ bits = chunksize;
+ }
+ else bits = BITS - offset;
+ temp = (N_word) (value << offset);
+ temp &= mask;
+ *addr &= NOT mask;
+ *addr++ |= temp;
+ value >>= bits;
+ chunksize -= bits;
+ offset = 0;
+ }
+ }
+}
+
+N_long BitVector_Chunk_Read(wordptr addr, N_int chunksize, N_int offset)
+{
+ N_word bits = bits_(addr);
+ N_word chunkbits = 0;
+ N_long value = 0L;
+ N_long temp;
+ N_word mask;
+
+ if ((chunksize > 0) and (offset < bits))
+ {
+ if (chunksize > LONGBITS) chunksize = LONGBITS;
+ if ((offset + chunksize) > bits) chunksize = bits - offset;
+ addr += offset >> LOGBITS;
+ offset &= MODMASK;
+ while (chunksize > 0)
+ {
+ bits = offset + chunksize;
+ if (bits < BITS)
+ {
+ mask = (N_word) ~(~0L << bits);
+ bits = chunksize;
+ }
+ else
+ {
+ mask = (N_word) ~0L;
+ bits = BITS - offset;
+ }
+ temp = (N_long) ((*addr++ AND mask) >> offset);
+ value |= temp << chunkbits;
+ chunkbits += bits;
+ chunksize -= bits;
+ offset = 0;
+ }
+ }
+ return(value);
+}
+
+ /*******************/
+ /* set operations: */
+ /*******************/
+
+void Set_Union(wordptr X, wordptr Y, wordptr Z) /* X = Y + Z */
+{
+ N_word bits = bits_(X);
+ N_word size = size_(X);
+ N_word mask = mask_(X);
+
+ if ((size > 0) and (bits == bits_(Y)) and (bits == bits_(Z)))
+ {
+ while (size-- > 0) *X++ = *Y++ OR *Z++;
+ *(--X) &= mask;
+ }
+}
+
+void Set_Intersection(wordptr X, wordptr Y, wordptr Z) /* X = Y * Z */
+{
+ N_word bits = bits_(X);
+ N_word size = size_(X);
+ N_word mask = mask_(X);
+
+ if ((size > 0) and (bits == bits_(Y)) and (bits == bits_(Z)))
+ {
+ while (size-- > 0) *X++ = *Y++ AND *Z++;
+ *(--X) &= mask;
+ }
+}
+
+void Set_Difference(wordptr X, wordptr Y, wordptr Z) /* X = Y \ Z */
+{
+ N_word bits = bits_(X);
+ N_word size = size_(X);
+ N_word mask = mask_(X);
+
+ if ((size > 0) and (bits == bits_(Y)) and (bits == bits_(Z)))
+ {
+ while (size-- > 0) *X++ = *Y++ AND NOT *Z++;
+ *(--X) &= mask;
+ }
+}
+
+void Set_ExclusiveOr(wordptr X, wordptr Y, wordptr Z) /* X=(Y+Z)\(Y*Z) */
+{
+ N_word bits = bits_(X);
+ N_word size = size_(X);
+ N_word mask = mask_(X);
+
+ if ((size > 0) and (bits == bits_(Y)) and (bits == bits_(Z)))
+ {
+ while (size-- > 0) *X++ = *Y++ XOR *Z++;
+ *(--X) &= mask;
+ }
+}
+
+void Set_Complement(wordptr X, wordptr Y) /* X = ~Y */
+{
+ N_word size = size_(X);
+ N_word mask = mask_(X);
+
+ if ((size > 0) and (bits_(X) == bits_(Y)))
+ {
+ while (size-- > 0) *X++ = NOT *Y++;
+ *(--X) &= mask;
+ }
+}
+
+ /******************/
+ /* set functions: */
+ /******************/
+
+boolean Set_subset(wordptr X, wordptr Y) /* X subset Y ? */
+{
+ N_word size = size_(X);
+ boolean r = FALSE;
+
+ if ((size > 0) and (bits_(X) == bits_(Y)))
+ {
+ r = TRUE;
+ while (r and (size-- > 0)) r = ((*X++ AND NOT *Y++) == 0);
+ }
+ return(r);
+}
+
+N_int Set_Norm(wordptr addr) /* = | X | */
+{
+ byteptr byte;
+ N_word bytes;
+ N_int n;
+
+ byte = (byteptr) addr;
+ bytes = size_(addr) << FACTOR;
+ n = 0;
+ while (bytes-- > 0)
+ {
+ n += BitVector_BYTENORM[*byte++];
+ }
+ return(n);
+}
+
+N_int Set_Norm2(wordptr addr) /* = | X | */
+{
+ N_word size = size_(addr);
+ N_word w0,w1;
+ N_int n,k;
+
+ n = 0;
+ while (size-- > 0)
+ {
+ k = 0;
+ w1 = NOT (w0 = *addr++);
+ while (w0 and w1)
+ {
+ w0 &= w0 - 1;
+ w1 &= w1 - 1;
+ k++;
+ }
+ if (w0 == 0) n += k;
+ else n += BITS - k;
+ }
+ return(n);
+}
+
+N_int Set_Norm3(wordptr addr) /* = | X | */
+{
+ N_word size = size_(addr);
+ N_int count = 0;
+ N_word c;
+
+ while (size-- > 0)
+ {
+ c = *addr++;
+ while (c)
+ {
+ c &= c - 1;
+ count++;
+ }
+ }
+ return(count);
+}
+
+Z_long Set_Min(wordptr addr) /* = min(X) */
+{
+ boolean empty = TRUE;
+ N_word size = size_(addr);
+ N_word i = 0;
+ N_word c = 0; /* silence compiler warning */
+
+ while (empty and (size-- > 0))
+ {
+ if ((c = *addr++)) empty = false; else i++;
+ }
+ if (empty) return((Z_long) LONG_MAX); /* plus infinity */
+ i <<= LOGBITS;
+ while (not (c AND LSB))
+ {
+ c >>= 1;
+ i++;
+ }
+ return((Z_long) i);
+}
+
+Z_long Set_Max(wordptr addr) /* = max(X) */
+{
+ boolean empty = TRUE;
+ N_word size = size_(addr);
+ N_word i = size;
+ N_word c = 0; /* silence compiler warning */
+
+ addr += size-1;
+ while (empty and (size-- > 0))
+ {
+ if ((c = *addr--)) empty = false; else i--;
+ }
+ if (empty) return((Z_long) LONG_MIN); /* minus infinity */
+ i <<= LOGBITS;
+ while (not (c AND MSB))
+ {
+ c <<= 1;
+ i--;
+ }
+ return((Z_long) --i);
+}
+
+ /**********************************/
+ /* matrix-of-booleans operations: */
+ /**********************************/
+
+void Matrix_Multiplication(wordptr X, N_int rowsX, N_int colsX,
+ wordptr Y, N_int rowsY, N_int colsY,
+ wordptr Z, N_int rowsZ, N_int colsZ)
+{
+ N_word i;
+ N_word j;
+ N_word k;
+ N_word indxX;
+ N_word indxY;
+ N_word indxZ;
+ N_word termX;
+ N_word termY;
+ N_word sum;
+
+ if ((colsY == rowsZ) and (rowsX == rowsY) and (colsX == colsZ) and
+ (bits_(X) == rowsX*colsX) and
+ (bits_(Y) == rowsY*colsY) and
+ (bits_(Z) == rowsZ*colsZ))
+ {
+ for ( i = 0; i < rowsY; i++ )
+ {
+ termX = i * colsX;
+ termY = i * colsY;
+ for ( j = 0; j < colsZ; j++ )
+ {
+ indxX = termX + j;
+ sum = 0;
+ for ( k = 0; k < colsY; k++ )
+ {
+ indxY = termY + k;
+ indxZ = k * colsZ + j;
+ if ( BIT_VECTOR_TST_BIT(Y,indxY) &&
+ BIT_VECTOR_TST_BIT(Z,indxZ) ) sum ^= 1;
+ }
+ if (sum) BIT_VECTOR_SET_BIT(X,indxX)
+ else BIT_VECTOR_CLR_BIT(X,indxX)
+ }
+ }
+ }
+}
+
+void Matrix_Product(wordptr X, N_int rowsX, N_int colsX,
+ wordptr Y, N_int rowsY, N_int colsY,
+ wordptr Z, N_int rowsZ, N_int colsZ)
+{
+ N_word i;
+ N_word j;
+ N_word k;
+ N_word indxX;
+ N_word indxY;
+ N_word indxZ;
+ N_word termX;
+ N_word termY;
+ N_word sum;
+
+ if ((colsY == rowsZ) and (rowsX == rowsY) and (colsX == colsZ) and
+ (bits_(X) == rowsX*colsX) and
+ (bits_(Y) == rowsY*colsY) and
+ (bits_(Z) == rowsZ*colsZ))
+ {
+ for ( i = 0; i < rowsY; i++ )
+ {
+ termX = i * colsX;
+ termY = i * colsY;
+ for ( j = 0; j < colsZ; j++ )
+ {
+ indxX = termX + j;
+ sum = 0;
+ for ( k = 0; k < colsY; k++ )
+ {
+ indxY = termY + k;
+ indxZ = k * colsZ + j;
+ if ( BIT_VECTOR_TST_BIT(Y,indxY) &&
+ BIT_VECTOR_TST_BIT(Z,indxZ) ) sum |= 1;
+ }
+ if (sum) BIT_VECTOR_SET_BIT(X,indxX)
+ else BIT_VECTOR_CLR_BIT(X,indxX)
+ }
+ }
+ }
+}
+
+void Matrix_Closure(wordptr addr, N_int rows, N_int cols)
+{
+ N_word i;
+ N_word j;
+ N_word k;
+ N_word ii;
+ N_word ij;
+ N_word ik;
+ N_word kj;
+ N_word termi;
+ N_word termk;
+
+ if ((rows == cols) and (bits_(addr) == rows*cols))
+ {
+ for ( i = 0; i < rows; i++ )
+ {
+ ii = i * cols + i;
+ BIT_VECTOR_SET_BIT(addr,ii)
+ }
+ for ( k = 0; k < rows; k++ )
+ {
+ termk = k * cols;
+ for ( i = 0; i < rows; i++ )
+ {
+ termi = i * cols;
+ ik = termi + k;
+ for ( j = 0; j < rows; j++ )
+ {
+ ij = termi + j;
+ kj = termk + j;
+ if ( BIT_VECTOR_TST_BIT(addr,ik) &&
+ BIT_VECTOR_TST_BIT(addr,kj) )
+ BIT_VECTOR_SET_BIT(addr,ij)
+ }
+ }
+ }
+ }
+}
+
+void Matrix_Transpose(wordptr X, N_int rowsX, N_int colsX,
+ wordptr Y, N_int rowsY, N_int colsY)
+{
+ N_word i;
+ N_word j;
+ N_word ii;
+ N_word ij;
+ N_word ji;
+ N_word addii;
+ N_word addij;
+ N_word addji;
+ N_word bitii;
+ N_word bitij;
+ N_word bitji;
+ N_word termi;
+ N_word termj;
+ boolean swap;
+
+ /* BEWARE that "in-place" is ONLY possible if the matrix is quadratic!! */
+
+ if ((rowsX == colsY) and (colsX == rowsY) and
+ (bits_(X) == rowsX*colsX) and
+ (bits_(Y) == rowsY*colsY))
+ {
+ if (rowsY == colsY) /* in-place is possible! */
+ {
+ for ( i = 0; i < rowsY; i++ )
+ {
+ termi = i * colsY;
+ for ( j = 0; j < i; j++ )
+ {
+ termj = j * colsX;
+ ij = termi + j;
+ ji = termj + i;
+ addij = ij >> LOGBITS;
+ addji = ji >> LOGBITS;
+ bitij = BITMASKTAB[ij AND MODMASK];
+ bitji = BITMASKTAB[ji AND MODMASK];
+ swap = ((*(Y+addij) AND bitij) != 0);
+ if ((*(Y+addji) AND bitji) != 0)
+ *(X+addij) |= bitij;
+ else
+ *(X+addij) &= NOT bitij;
+ if (swap)
+ *(X+addji) |= bitji;
+ else
+ *(X+addji) &= NOT bitji;
+ }
+ ii = termi + i;
+ addii = ii >> LOGBITS;
+ bitii = BITMASKTAB[ii AND MODMASK];
+ if ((*(Y+addii) AND bitii) != 0)
+ *(X+addii) |= bitii;
+ else
+ *(X+addii) &= NOT bitii;
+ }
+ }
+ else /* rowsX != colsX, in-place is NOT possible! */
+ {
+ for ( i = 0; i < rowsY; i++ )
+ {
+ termi = i * colsY;
+ for ( j = 0; j < colsY; j++ )
+ {
+ termj = j * colsX;
+ ij = termi + j;
+ ji = termj + i;
+ addij = ij >> LOGBITS;
+ addji = ji >> LOGBITS;
+ bitij = BITMASKTAB[ij AND MODMASK];
+ bitji = BITMASKTAB[ji AND MODMASK];
+ if ((*(Y+addij) AND bitij) != 0)
+ *(X+addji) |= bitji;
+ else
+ *(X+addji) &= NOT bitji;
+ }
+ }
+ }
+ }
+}
+
+/*****************************************************************************/
+/* VERSION: 6.4 */
+/*****************************************************************************/
+/* VERSION HISTORY: */
+/*****************************************************************************/
+/* */
+/* Version 6.4 03.10.04 Added C++ comp. directives. Improved "Norm()". */
+/* Version 6.3 28.09.02 Added "Create_List()" and "GCD2()". */
+/* Version 6.2 15.09.02 Overhauled error handling. Fixed "GCD()". */
+/* Version 6.1 08.10.01 Make VMS linker happy: _lsb,_msb => _lsb_,_msb_ */
+/* Version 6.0 08.10.00 Corrected overflow handling. */
+/* Version 5.8 14.07.00 Added "Power()". Changed "Copy()". */
+/* Version 5.7 19.05.99 Quickened "Div_Pos()". Added "Product()". */
+/* Version 5.6 02.11.98 Leading zeros eliminated in "to_Hex()". */
+/* Version 5.5 21.09.98 Fixed bug of uninitialized "error" in Multiply. */
+/* Version 5.4 07.09.98 Fixed bug of uninitialized "error" in Divide. */
+/* Version 5.3 12.05.98 Improved Norm. Completed history. */
+/* Version 5.2 31.03.98 Improved Norm. */
+/* Version 5.1 09.03.98 No changes. */
+/* Version 5.0 01.03.98 Major additions and rewrite. */
+/* Version 4.2 16.07.97 Added is_empty, is_full. */
+/* Version 4.1 30.06.97 Added word-ins/del, move-left/right, inc/dec. */
+/* Version 4.0 23.04.97 Rewrite. Added bit shift and bool. matrix ops. */
+/* Version 3.2 04.02.97 Added interval methods. */
+/* Version 3.1 21.01.97 Fixed bug on 64 bit machines. */
+/* Version 3.0 12.01.97 Added flip. */
+/* Version 2.0 14.12.96 Efficiency and consistency improvements. */
+/* Version 1.1 08.01.96 Added Resize and ExclusiveOr. */
+/* Version 1.0 14.12.95 First version under UNIX (with Perl module). */
+/* Version 0.9 01.11.93 First version of C library under MS-DOS. */
+/* Version 0.1 ??.??.89 First version in Turbo Pascal under CP/M. */
+/* */
+/*****************************************************************************/
+/* AUTHOR: */
+/*****************************************************************************/
+/* */
+/* Steffen Beyer */
+/* mailto:sb@engelschall.com */
+/* http://www.engelschall.com/u/sb/download/ */
+/* */
+/*****************************************************************************/
+/* COPYRIGHT: */
+/*****************************************************************************/
+/* */
+/* Copyright (c) 1995 - 2004 by Steffen Beyer. */
+/* All rights reserved. */
+/* */
+/*****************************************************************************/
+/* LICENSE: */
+/*****************************************************************************/
+/* This package is free software; you can use, modify and redistribute */
+/* it under the same terms as Perl itself, i.e., under the terms of */
+/* the "Artistic License" or the "GNU General Public License". */
+/* */
+/* The C library at the core of this Perl module can additionally */
+/* be used, modified and redistributed under the terms of the */
+/* "GNU Library General Public License". */
+/* */
+/*****************************************************************************/
+/* ARTISTIC LICENSE: */
+/*****************************************************************************/
+/*
+ The "Artistic License"
+
+ Preamble
+
+The intent of this document is to state the conditions under which a
+Package may be copied, such that the Copyright Holder maintains some
+semblance of artistic control over the development of the package,
+while giving the users of the package the right to use and distribute
+the Package in a more-or-less customary fashion, plus the right to make
+reasonable modifications.
+
+Definitions:
+
+ "Package" refers to the collection of files distributed by the
+ Copyright Holder, and derivatives of that collection of files
+ created through textual modification.
+
+ "Standard Version" refers to such a Package if it has not been
+ modified, or has been modified in accordance with the wishes
+ of the Copyright Holder as specified below.
+
+ "Copyright Holder" is whoever is named in the copyright or
+ copyrights for the package.
+
+ "You" is you, if you're thinking about copying or distributing
+ this Package.
+
+ "Reasonable copying fee" is whatever you can justify on the
+ basis of media cost, duplication charges, time of people involved,
+ and so on. (You will not be required to justify it to the
+ Copyright Holder, but only to the computing community at large
+ as a market that must bear the fee.)
+
+ "Freely Available" means that no fee is charged for the item
+ itself, though there may be fees involved in handling the item.
+ It also means that recipients of the item may redistribute it
+ under the same conditions they received it.
+
+1. You may make and give away verbatim copies of the source form of the
+Standard Version of this Package without restriction, provided that you
+duplicate all of the original copyright notices and associated disclaimers.
+
+2. You may apply bug fixes, portability fixes and other modifications
+derived from the Public Domain or from the Copyright Holder. A Package
+modified in such a way shall still be considered the Standard Version.
+
+3. You may otherwise modify your copy of this Package in any way, provided
+that you insert a prominent notice in each changed file stating how and
+when you changed that file, and provided that you do at least ONE of the
+following:
+
+ a) place your modifications in the Public Domain or otherwise make them
+ Freely Available, such as by posting said modifications to Usenet or
+ an equivalent medium, or placing the modifications on a major archive
+ site such as uunet.uu.net, or by allowing the Copyright Holder to include
+ your modifications in the Standard Version of the Package.
+
+ b) use the modified Package only within your corporation or organization.
+
+ c) rename any non-standard executables so the names do not conflict
+ with standard executables, which must also be provided, and provide
+ a separate manual page for each non-standard executable that clearly
+ documents how it differs from the Standard Version.
+
+ d) make other distribution arrangements with the Copyright Holder.
+
+4. You may distribute the programs of this Package in object code or
+executable form, provided that you do at least ONE of the following:
+
+ a) distribute a Standard Version of the executables and library files,
+ together with instructions (in the manual page or equivalent) on where
+ to get the Standard Version.
+
+ b) accompany the distribution with the machine-readable source of
+ the Package with your modifications.
+
+ c) give non-standard executables non-standard names, and clearly
+ document the differences in manual pages (or equivalent), together
+ with instructions on where to get the Standard Version.
+
+ d) make other distribution arrangements with the Copyright Holder.
+
+5. You may charge a reasonable copying fee for any distribution of this
+Package. You may charge any fee you choose for support of this
+Package. You may not charge a fee for this Package itself. However,
+you may distribute this Package in aggregate with other (possibly
+commercial) programs as part of a larger (possibly commercial) software
+distribution provided that you do not advertise this Package as a
+product of your own. You may embed this Package's interpreter within
+an executable of yours (by linking); this shall be construed as a mere
+form of aggregation, provided that the complete Standard Version of the
+interpreter is so embedded.
+
+6. The scripts and library files supplied as input to or produced as
+output from the programs of this Package do not automatically fall
+under the copyright of this Package, but belong to whoever generated
+them, and may be sold commercially, and may be aggregated with this
+Package. If such scripts or library files are aggregated with this
+Package via the so-called "undump" or "unexec" methods of producing a
+binary executable image, then distribution of such an image shall
+neither be construed as a distribution of this Package nor shall it
+fall under the restrictions of Paragraphs 3 and 4, provided that you do
+not represent such an executable image as a Standard Version of this
+Package.
+
+7. C subroutines (or comparably compiled subroutines in other
+languages) supplied by you and linked into this Package in order to
+emulate subroutines and variables of the language defined by this
+Package shall not be considered part of this Package, but are the
+equivalent of input as in Paragraph 6, provided these subroutines do
+not change the language in any way that would cause it to fail the
+regression tests for the language.
+
+8. Aggregation of this Package with a commercial distribution is always
+permitted provided that the use of this Package is embedded; that is,
+when no overt attempt is made to make this Package's interfaces visible
+to the end user of the commercial distribution. Such use shall not be
+construed as a distribution of this Package.
+
+9. The name of the Copyright Holder may not be used to endorse or promote
+products derived from this software without specific prior written permission.
+
+10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+ The End
+*/
+/*****************************************************************************/
+/* GNU GENERAL PUBLIC LICENSE: */
+/*****************************************************************************/
+/* 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 2 */
+/* 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, write to the */
+/* Free Software Foundation, Inc., */
+/* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+/* */
+/*****************************************************************************/
+/* GNU LIBRARY GENERAL PUBLIC LICENSE: */
+/*****************************************************************************/
+/* This library is free software; you can redistribute it and/or */
+/* modify it under the terms of the GNU Library General Public */
+/* License as published by the Free Software Foundation; either */
+/* version 2 of the License, or (at your option) any later version. */
+/* */
+/* This library 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 */
+/* Library General Public License for more details. */
+/* */
+/* You should have received a copy of the GNU Library General Public */
+/* License along with this library; if not, write to the */
+/* Free Software Foundation, Inc., */
+/* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
+/* */
+/* or download a copy from ftp://ftp.gnu.org/pub/gnu/COPYING.LIB-2.0 */
+/* */
+/*****************************************************************************/
diff --git a/contrib/tools/yasm/libyasm/bitvect.h b/contrib/tools/yasm/libyasm/bitvect.h
index df4914adf4..3aee3a5319 100644
--- a/contrib/tools/yasm/libyasm/bitvect.h
+++ b/contrib/tools/yasm/libyasm/bitvect.h
@@ -1,666 +1,666 @@
-#ifndef YASM_BITVECT_H
-#define YASM_BITVECT_H
-/*****************************************************************************/
-/* MODULE NAME: BitVector.h MODULE TYPE: (adt) */
-/*****************************************************************************/
-/* MODULE IMPORTS: */
-/*****************************************************************************/
-
-/* ToolBox.h */
-/*****************************************************************************/
-/* NOTE: The type names that have been chosen here are somewhat weird on */
-/* purpose, in order to avoid name clashes with system header files */
-/* and your own application(s) which might - directly or indirectly - */
-/* include this definitions file. */
-/*****************************************************************************/
-#ifndef YASM_LIB_DECL
-#define YASM_LIB_DECL
-#endif
-
-typedef unsigned char N_char;
-typedef unsigned char N_byte;
-typedef unsigned short N_short;
-typedef unsigned short N_shortword;
-typedef unsigned int N_int;
-typedef unsigned int N_word;
-typedef unsigned long N_long;
-typedef unsigned long N_longword;
-
-/* Mnemonic 1: The natural numbers, N = { 0, 1, 2, 3, ... } */
-/* Mnemonic 2: Nnnn = u_N_signed, _N_ot signed */
-
-typedef signed char Z_char;
-typedef signed char Z_byte;
-typedef signed short Z_short;
-typedef signed short Z_shortword;
-typedef signed int Z_int;
-typedef signed int Z_word;
-typedef signed long Z_long;
-typedef signed long Z_longword;
-
-/* Mnemonic 1: The whole numbers, Z = { 0, -1, 1, -2, 2, -3, 3, ... } */
-/* Mnemonic 2: Zzzz = Ssss_igned */
-
-typedef void *voidptr;
-typedef N_char *charptr;
-typedef N_byte *byteptr;
-typedef N_short *shortptr;
-typedef N_shortword *shortwordptr;
-typedef N_int *intptr;
-typedef N_word *wordptr;
-typedef N_long *longptr;
-typedef N_longword *longwordptr;
-
-typedef N_char *N_charptr;
-typedef N_byte *N_byteptr;
-typedef N_short *N_shortptr;
-typedef N_shortword *N_shortwordptr;
-typedef N_int *N_intptr;
-typedef N_word *N_wordptr;
-typedef N_long *N_longptr;
-typedef N_longword *N_longwordptr;
-
-typedef Z_char *Z_charptr;
-typedef Z_byte *Z_byteptr;
-typedef Z_short *Z_shortptr;
-typedef Z_shortword *Z_shortwordptr;
-typedef Z_int *Z_intptr;
-typedef Z_word *Z_wordptr;
-typedef Z_long *Z_longptr;
-typedef Z_longword *Z_longwordptr;
-
-#ifndef FALSE
-#define FALSE (0!=0)
-#endif
-
-#ifndef TRUE
-#define TRUE (0==0)
-#endif
-
-#ifdef __cplusplus
- typedef bool boolean;
-#else
- #ifdef MACOS_TRADITIONAL
- #define boolean Boolean
- #else
- typedef enum boolean { false = FALSE, true = TRUE } boolean;
- #endif
-#endif
-
-/*****************************************************************************/
-/* MODULE INTERFACE: */
-/*****************************************************************************/
-
-typedef enum ErrCode
- {
- ErrCode_Ok = 0, /* everything went allright */
-
- ErrCode_Type, /* types word and size_t have incompatible sizes */
- ErrCode_Bits, /* bits of word and sizeof(word) are inconsistent */
- ErrCode_Word, /* size of word is less than 16 bits */
- ErrCode_Long, /* size of word is greater than size of long */
- ErrCode_Powr, /* number of bits of word is not a power of two */
- ErrCode_Loga, /* error in calculation of logarithm */
-
- ErrCode_Null, /* unable to allocate memory */
-
- ErrCode_Indx, /* index out of range */
- ErrCode_Ordr, /* minimum > maximum index */
- ErrCode_Size, /* bit vector size mismatch */
- ErrCode_Pars, /* input string syntax error */
- ErrCode_Ovfl, /* numeric overflow error */
- ErrCode_Same, /* operands must be distinct */
- ErrCode_Expo, /* exponent must be positive */
- ErrCode_Zero /* division by zero error */
- } ErrCode;
-
-typedef wordptr *listptr;
-
-/* ===> MISCELLANEOUS BASIC FUNCTIONS: <=== */
-
-YASM_LIB_DECL
-const char * BitVector_Error (ErrCode error); /* return string for err code */
-
-YASM_LIB_DECL
-ErrCode BitVector_Boot (void); /* 0 = ok, 1..7 = error */
-YASM_LIB_DECL
-void BitVector_Shutdown (void); /* undo Boot */
-
-YASM_LIB_DECL
-N_word BitVector_Size (N_int bits); /* bit vector size (# of words) */
-YASM_LIB_DECL
-N_word BitVector_Mask (N_int bits); /* bit vector mask (unused bits) */
-
-/* ===> CLASS METHODS: <=== */
-
-YASM_LIB_DECL
-const char * BitVector_Version (void); /* returns version string */
-
-YASM_LIB_DECL
-N_int BitVector_Word_Bits (void); /* return # of bits in machine word */
-YASM_LIB_DECL
-N_int BitVector_Long_Bits (void); /* return # of bits in unsigned long */
-
-/* ===> CONSTRUCTOR METHODS: <=== */
-
-YASM_LIB_DECL
-/*@only@*/ wordptr BitVector_Create (N_int bits, boolean clear); /* malloc */
-YASM_LIB_DECL
-listptr BitVector_Create_List(N_int bits, boolean clear, N_int count);
-
-YASM_LIB_DECL
-wordptr BitVector_Resize (wordptr oldaddr, N_int bits); /* realloc */
-
-YASM_LIB_DECL
-wordptr BitVector_Shadow (wordptr addr); /* make new same size but empty */
-YASM_LIB_DECL
-wordptr BitVector_Clone (wordptr addr); /* make exact duplicate */
-
-YASM_LIB_DECL
-wordptr BitVector_Concat (wordptr X, wordptr Y); /* return concatenation */
-
-/* ===> DESTRUCTOR METHODS: <=== */
-
-YASM_LIB_DECL
-void BitVector_Dispose (/*@only@*/ /*@out@*/ charptr string); /* string */
-YASM_LIB_DECL
-void BitVector_Destroy (/*@only@*/ wordptr addr); /* bitvec */
-YASM_LIB_DECL
-void BitVector_Destroy_List (listptr list, N_int count); /* list */
-
-/* ===> OBJECT METHODS: <=== */
-
-/* ===> bit vector copy function: */
-
-YASM_LIB_DECL
-void BitVector_Copy (wordptr X, wordptr Y); /* X = Y */
-
-/* ===> bit vector initialization: */
-
-YASM_LIB_DECL
-void BitVector_Empty (wordptr addr); /* X = {} */
-YASM_LIB_DECL
-void BitVector_Fill (wordptr addr); /* X = ~{} */
-YASM_LIB_DECL
-void BitVector_Flip (wordptr addr); /* X = ~X */
-
-YASM_LIB_DECL
-void BitVector_Primes (wordptr addr);
-
-/* ===> miscellaneous functions: */
-
-YASM_LIB_DECL
-void BitVector_Reverse (wordptr X, wordptr Y);
-
-/* ===> bit vector interval operations and functions: */
-
-YASM_LIB_DECL
-void BitVector_Interval_Empty (/*@out@*/ wordptr addr, N_int lower, N_int upper);
-YASM_LIB_DECL
-void BitVector_Interval_Fill (/*@out@*/ wordptr addr, N_int lower, N_int upper);
-YASM_LIB_DECL
-void BitVector_Interval_Flip (/*@out@*/ wordptr addr, N_int lower, N_int upper);
-YASM_LIB_DECL
-void BitVector_Interval_Reverse (/*@out@*/ wordptr addr, N_int lower, N_int upper);
-
-YASM_LIB_DECL
-boolean BitVector_interval_scan_inc (wordptr addr, N_int start,
- N_intptr min, N_intptr max);
-YASM_LIB_DECL
-boolean BitVector_interval_scan_dec (wordptr addr, N_int start,
- N_intptr min, N_intptr max);
-
-YASM_LIB_DECL
-void BitVector_Interval_Copy (/*@out@*/ wordptr X, wordptr Y, N_int Xoffset,
- N_int Yoffset, N_int length);
-
-YASM_LIB_DECL
-wordptr BitVector_Interval_Substitute(/*@out@*/ wordptr X, wordptr Y,
- N_int Xoffset, N_int Xlength,
- N_int Yoffset, N_int Ylength);
-
-/* ===> bit vector test functions: */
-
-YASM_LIB_DECL
-boolean BitVector_is_empty (wordptr addr); /* X == {} ? */
-YASM_LIB_DECL
-boolean BitVector_is_full (wordptr addr); /* X == ~{} ? */
-
-YASM_LIB_DECL
-boolean BitVector_equal (wordptr X, wordptr Y); /* X == Y ? */
-YASM_LIB_DECL
-Z_int BitVector_Lexicompare(wordptr X, wordptr Y); /* X <,=,> Y ? */
-YASM_LIB_DECL
-Z_int BitVector_Compare (wordptr X, wordptr Y); /* X <,=,> Y ? */
-
-/* ===> bit vector string conversion functions: */
-
-YASM_LIB_DECL
-/*@only@*/ charptr BitVector_to_Hex (wordptr addr);
-YASM_LIB_DECL
-ErrCode BitVector_from_Hex (/*@out@*/wordptr addr, charptr string);
-
-YASM_LIB_DECL
-ErrCode BitVector_from_Oct(/*@out@*/ wordptr addr, charptr string);
-
-YASM_LIB_DECL
-/*@only@*/ charptr BitVector_to_Bin (wordptr addr);
-YASM_LIB_DECL
-ErrCode BitVector_from_Bin (/*@out@*/ wordptr addr, charptr string);
-
-YASM_LIB_DECL
-/*@only@*/ charptr BitVector_to_Dec (wordptr addr);
-YASM_LIB_DECL
-ErrCode BitVector_from_Dec (/*@out@*/ wordptr addr, charptr string);
-
-typedef struct BitVector_from_Dec_static_data BitVector_from_Dec_static_data;
-YASM_LIB_DECL
-BitVector_from_Dec_static_data *BitVector_from_Dec_static_Boot(N_word bits);
-YASM_LIB_DECL
-void BitVector_from_Dec_static_Shutdown(/*@null@*/ BitVector_from_Dec_static_data *data);
-YASM_LIB_DECL
-ErrCode BitVector_from_Dec_static(BitVector_from_Dec_static_data *data,
- /*@out@*/ wordptr addr, charptr string);
-
-YASM_LIB_DECL
-/*@only@*/ charptr BitVector_to_Enum (wordptr addr);
-YASM_LIB_DECL
-ErrCode BitVector_from_Enum (/*@out@*/ wordptr addr, charptr string);
-
-/* ===> bit vector bit operations, functions & tests: */
-
-YASM_LIB_DECL
-void BitVector_Bit_Off (/*@out@*/ wordptr addr, N_int indx); /* X = X \ {x} */
-YASM_LIB_DECL
-void BitVector_Bit_On (/*@out@*/ wordptr addr, N_int indx); /* X = X + {x} */
-YASM_LIB_DECL
-boolean BitVector_bit_flip (/*@out@*/ wordptr addr, N_int indx); /* (X+{x})\(X*{x}) */
-
-YASM_LIB_DECL
-boolean BitVector_bit_test (wordptr addr, N_int indx); /* {x} in X ? */
-
-YASM_LIB_DECL
-void BitVector_Bit_Copy (/*@out@*/ wordptr addr, N_int indx, boolean bit);
-
-/* ===> bit vector bit shift & rotate functions: */
-
-YASM_LIB_DECL
-void BitVector_LSB (/*@out@*/ wordptr addr, boolean bit);
-YASM_LIB_DECL
-void BitVector_MSB (/*@out@*/ wordptr addr, boolean bit);
-YASM_LIB_DECL
-boolean BitVector_lsb_ (wordptr addr);
-YASM_LIB_DECL
-boolean BitVector_msb_ (wordptr addr);
-YASM_LIB_DECL
-boolean /*@alt void@*/ BitVector_rotate_left (wordptr addr);
-YASM_LIB_DECL
-boolean /*@alt void@*/ BitVector_rotate_right (wordptr addr);
-YASM_LIB_DECL
-boolean /*@alt void@*/ BitVector_shift_left (wordptr addr, boolean carry_in);
-YASM_LIB_DECL
-boolean /*@alt void@*/ BitVector_shift_right (wordptr addr, boolean carry_in);
-YASM_LIB_DECL
-void BitVector_Move_Left (wordptr addr, N_int bits);
-YASM_LIB_DECL
-void BitVector_Move_Right (wordptr addr, N_int bits);
-
-/* ===> bit vector insert/delete bits: */
-
-YASM_LIB_DECL
-void BitVector_Insert (wordptr addr, N_int offset, N_int count,
- boolean clear);
-YASM_LIB_DECL
-void BitVector_Delete (wordptr addr, N_int offset, N_int count,
- boolean clear);
-
-/* ===> bit vector arithmetic: */
-
-YASM_LIB_DECL
-boolean /*@alt void@*/ BitVector_increment (wordptr addr); /* X++ */
-YASM_LIB_DECL
-boolean /*@alt void@*/ BitVector_decrement (wordptr addr); /* X-- */
-
-YASM_LIB_DECL
-boolean /*@alt void@*/ BitVector_compute (wordptr X, wordptr Y, wordptr Z, boolean minus,
- boolean *carry);
-YASM_LIB_DECL
-boolean /*@alt void@*/ BitVector_add (wordptr X, wordptr Y, wordptr Z, boolean *carry);
-YASM_LIB_DECL
-boolean /*@alt void@*/ BitVector_sub (wordptr X, wordptr Y, wordptr Z, boolean *carry);
-YASM_LIB_DECL
-boolean /*@alt void@*/ BitVector_inc (wordptr X, wordptr Y);
-YASM_LIB_DECL
-boolean /*@alt void@*/ BitVector_dec (wordptr X, wordptr Y);
-
-YASM_LIB_DECL
-void BitVector_Negate (wordptr X, wordptr Y);
-YASM_LIB_DECL
-void BitVector_Absolute (wordptr X, wordptr Y);
-YASM_LIB_DECL
-Z_int BitVector_Sign (wordptr addr);
-YASM_LIB_DECL
-ErrCode BitVector_Mul_Pos (wordptr X, wordptr Y, wordptr Z, boolean strict);
-YASM_LIB_DECL
-ErrCode BitVector_Multiply (wordptr X, wordptr Y, wordptr Z);
-YASM_LIB_DECL
-ErrCode BitVector_Div_Pos (wordptr Q, wordptr X, wordptr Y, wordptr R);
-YASM_LIB_DECL
-ErrCode BitVector_Divide (wordptr Q, wordptr X, wordptr Y, wordptr R);
-YASM_LIB_DECL
-ErrCode BitVector_GCD (wordptr X, wordptr Y, wordptr Z);
-YASM_LIB_DECL
-ErrCode BitVector_GCD2 (wordptr U, wordptr V, wordptr W, /* O */
- wordptr X, wordptr Y); /* I */
-YASM_LIB_DECL
-ErrCode BitVector_Power (wordptr X, wordptr Y, wordptr Z);
-
-/* ===> direct memory access functions: */
-
-YASM_LIB_DECL
-void BitVector_Block_Store(wordptr addr, charptr buffer, N_int length);
-YASM_LIB_DECL
-charptr BitVector_Block_Read (wordptr addr, /*@out@*/ N_intptr length);
-
-/* ===> word array functions: */
-
-YASM_LIB_DECL
-void BitVector_Word_Store (wordptr addr, N_int offset, N_int value);
-YASM_LIB_DECL
-N_int BitVector_Word_Read (wordptr addr, N_int offset);
-
-YASM_LIB_DECL
-void BitVector_Word_Insert(wordptr addr, N_int offset, N_int count,
- boolean clear);
-YASM_LIB_DECL
-void BitVector_Word_Delete(wordptr addr, N_int offset, N_int count,
- boolean clear);
-
-/* ===> arbitrary size chunk functions: */
-
-YASM_LIB_DECL
-void BitVector_Chunk_Store(wordptr addr, N_int chunksize,
- N_int offset, N_long value);
-YASM_LIB_DECL
-N_long BitVector_Chunk_Read (wordptr addr, N_int chunksize,
- N_int offset);
-
-/* ===> set operations: */
-
-YASM_LIB_DECL
-void Set_Union (wordptr X, wordptr Y, wordptr Z); /* X = Y + Z */
-YASM_LIB_DECL
-void Set_Intersection (wordptr X, wordptr Y, wordptr Z); /* X = Y * Z */
-YASM_LIB_DECL
-void Set_Difference (wordptr X, wordptr Y, wordptr Z); /* X = Y \ Z */
-YASM_LIB_DECL
-void Set_ExclusiveOr (wordptr X, wordptr Y, wordptr Z); /*(Y+Z)\(Y*Z)*/
-YASM_LIB_DECL
-void Set_Complement (wordptr X, wordptr Y); /* X = ~Y */
-
-/* ===> set functions: */
-
-YASM_LIB_DECL
-boolean Set_subset (wordptr X, wordptr Y); /* X in Y ? */
-
-YASM_LIB_DECL
-N_int Set_Norm (wordptr addr); /* = | X | */
-YASM_LIB_DECL
-N_int Set_Norm2 (wordptr addr); /* = | X | */
-YASM_LIB_DECL
-N_int Set_Norm3 (wordptr addr); /* = | X | */
-YASM_LIB_DECL
-Z_long Set_Min (wordptr addr); /* = min(X) */
-YASM_LIB_DECL
-Z_long Set_Max (wordptr addr); /* = max(X) */
-
-/* ===> matrix-of-booleans operations: */
-
-YASM_LIB_DECL
-void Matrix_Multiplication(wordptr X, N_int rowsX, N_int colsX,
- wordptr Y, N_int rowsY, N_int colsY,
- wordptr Z, N_int rowsZ, N_int colsZ);
-
-YASM_LIB_DECL
-void Matrix_Product (wordptr X, N_int rowsX, N_int colsX,
- wordptr Y, N_int rowsY, N_int colsY,
- wordptr Z, N_int rowsZ, N_int colsZ);
-
-YASM_LIB_DECL
-void Matrix_Closure (wordptr addr, N_int rows, N_int cols);
-
-YASM_LIB_DECL
-void Matrix_Transpose (wordptr X, N_int rowsX, N_int colsX,
- wordptr Y, N_int rowsY, N_int colsY);
-
-/*****************************************************************************/
-/* VERSION: 6.4 */
-/*****************************************************************************/
-/* VERSION HISTORY: */
-/*****************************************************************************/
-/* */
-/* Version 6.4 03.10.04 Added C++ comp. directives. Improved "Norm()". */
-/* Version 6.3 28.09.02 Added "Create_List()" and "GCD2()". */
-/* Version 6.2 15.09.02 Overhauled error handling. Fixed "GCD()". */
-/* Version 6.1 08.10.01 Make VMS linker happy: _lsb,_msb => _lsb_,_msb_ */
-/* Version 6.0 08.10.00 Corrected overflow handling. */
-/* Version 5.8 14.07.00 Added "Power()". Changed "Copy()". */
-/* Version 5.7 19.05.99 Quickened "Div_Pos()". Added "Product()". */
-/* Version 5.6 02.11.98 Leading zeros eliminated in "to_Hex()". */
-/* Version 5.5 21.09.98 Fixed bug of uninitialized "error" in Multiply. */
-/* Version 5.4 07.09.98 Fixed bug of uninitialized "error" in Divide. */
-/* Version 5.3 12.05.98 Improved Norm. Completed history. */
-/* Version 5.2 31.03.98 Improved Norm. */
-/* Version 5.1 09.03.98 No changes. */
-/* Version 5.0 01.03.98 Major additions and rewrite. */
-/* Version 4.2 16.07.97 Added is_empty, is_full. */
-/* Version 4.1 30.06.97 Added word-ins/del, move-left/right, inc/dec. */
-/* Version 4.0 23.04.97 Rewrite. Added bit shift and bool. matrix ops. */
-/* Version 3.2 04.02.97 Added interval methods. */
-/* Version 3.1 21.01.97 Fixed bug on 64 bit machines. */
-/* Version 3.0 12.01.97 Added flip. */
-/* Version 2.0 14.12.96 Efficiency and consistency improvements. */
-/* Version 1.1 08.01.96 Added Resize and ExclusiveOr. */
-/* Version 1.0 14.12.95 First version under UNIX (with Perl module). */
-/* Version 0.9 01.11.93 First version of C library under MS-DOS. */
-/* Version 0.1 ??.??.89 First version in Turbo Pascal under CP/M. */
-/* */
-/*****************************************************************************/
-/* AUTHOR: */
-/*****************************************************************************/
-/* */
-/* Steffen Beyer */
-/* mailto:sb@engelschall.com */
-/* http://www.engelschall.com/u/sb/download/ */
-/* */
-/*****************************************************************************/
-/* COPYRIGHT: */
-/*****************************************************************************/
-/* */
-/* Copyright (c) 1995 - 2004 by Steffen Beyer. */
-/* All rights reserved. */
-/* */
-/*****************************************************************************/
-/* LICENSE: */
-/*****************************************************************************/
-/* This package is free software; you can use, modify and redistribute */
-/* it under the same terms as Perl itself, i.e., under the terms of */
-/* the "Artistic License" or the "GNU General Public License". */
-/* */
-/* The C library at the core of this Perl module can additionally */
-/* be used, modified and redistributed under the terms of the */
-/* "GNU Library General Public License". */
-/* */
-/*****************************************************************************/
-/* ARTISTIC LICENSE: */
-/*****************************************************************************/
-/*
- The "Artistic License"
-
- Preamble
-
-The intent of this document is to state the conditions under which a
-Package may be copied, such that the Copyright Holder maintains some
-semblance of artistic control over the development of the package,
-while giving the users of the package the right to use and distribute
-the Package in a more-or-less customary fashion, plus the right to make
-reasonable modifications.
-
-Definitions:
-
- "Package" refers to the collection of files distributed by the
- Copyright Holder, and derivatives of that collection of files
- created through textual modification.
-
- "Standard Version" refers to such a Package if it has not been
- modified, or has been modified in accordance with the wishes
- of the Copyright Holder as specified below.
-
- "Copyright Holder" is whoever is named in the copyright or
- copyrights for the package.
-
- "You" is you, if you're thinking about copying or distributing
- this Package.
-
- "Reasonable copying fee" is whatever you can justify on the
- basis of media cost, duplication charges, time of people involved,
- and so on. (You will not be required to justify it to the
- Copyright Holder, but only to the computing community at large
- as a market that must bear the fee.)
-
- "Freely Available" means that no fee is charged for the item
- itself, though there may be fees involved in handling the item.
- It also means that recipients of the item may redistribute it
- under the same conditions they received it.
-
-1. You may make and give away verbatim copies of the source form of the
-Standard Version of this Package without restriction, provided that you
-duplicate all of the original copyright notices and associated disclaimers.
-
-2. You may apply bug fixes, portability fixes and other modifications
-derived from the Public Domain or from the Copyright Holder. A Package
-modified in such a way shall still be considered the Standard Version.
-
-3. You may otherwise modify your copy of this Package in any way, provided
-that you insert a prominent notice in each changed file stating how and
-when you changed that file, and provided that you do at least ONE of the
-following:
-
- a) place your modifications in the Public Domain or otherwise make them
- Freely Available, such as by posting said modifications to Usenet or
- an equivalent medium, or placing the modifications on a major archive
- site such as uunet.uu.net, or by allowing the Copyright Holder to include
- your modifications in the Standard Version of the Package.
-
- b) use the modified Package only within your corporation or organization.
-
- c) rename any non-standard executables so the names do not conflict
- with standard executables, which must also be provided, and provide
- a separate manual page for each non-standard executable that clearly
- documents how it differs from the Standard Version.
-
- d) make other distribution arrangements with the Copyright Holder.
-
-4. You may distribute the programs of this Package in object code or
-executable form, provided that you do at least ONE of the following:
-
- a) distribute a Standard Version of the executables and library files,
- together with instructions (in the manual page or equivalent) on where
- to get the Standard Version.
-
- b) accompany the distribution with the machine-readable source of
- the Package with your modifications.
-
- c) give non-standard executables non-standard names, and clearly
- document the differences in manual pages (or equivalent), together
- with instructions on where to get the Standard Version.
-
- d) make other distribution arrangements with the Copyright Holder.
-
-5. You may charge a reasonable copying fee for any distribution of this
-Package. You may charge any fee you choose for support of this
-Package. You may not charge a fee for this Package itself. However,
-you may distribute this Package in aggregate with other (possibly
-commercial) programs as part of a larger (possibly commercial) software
-distribution provided that you do not advertise this Package as a
-product of your own. You may embed this Package's interpreter within
-an executable of yours (by linking); this shall be construed as a mere
-form of aggregation, provided that the complete Standard Version of the
-interpreter is so embedded.
-
-6. The scripts and library files supplied as input to or produced as
-output from the programs of this Package do not automatically fall
-under the copyright of this Package, but belong to whoever generated
-them, and may be sold commercially, and may be aggregated with this
-Package. If such scripts or library files are aggregated with this
-Package via the so-called "undump" or "unexec" methods of producing a
-binary executable image, then distribution of such an image shall
-neither be construed as a distribution of this Package nor shall it
-fall under the restrictions of Paragraphs 3 and 4, provided that you do
-not represent such an executable image as a Standard Version of this
-Package.
-
-7. C subroutines (or comparably compiled subroutines in other
-languages) supplied by you and linked into this Package in order to
-emulate subroutines and variables of the language defined by this
-Package shall not be considered part of this Package, but are the
-equivalent of input as in Paragraph 6, provided these subroutines do
-not change the language in any way that would cause it to fail the
-regression tests for the language.
-
-8. Aggregation of this Package with a commercial distribution is always
-permitted provided that the use of this Package is embedded; that is,
-when no overt attempt is made to make this Package's interfaces visible
-to the end user of the commercial distribution. Such use shall not be
-construed as a distribution of this Package.
-
-9. The name of the Copyright Holder may not be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-
- The End
-*/
-/*****************************************************************************/
-/* GNU GENERAL PUBLIC LICENSE: */
-/*****************************************************************************/
-/* 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 2 */
-/* 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, write to the */
-/* Free Software Foundation, Inc., */
-/* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-/* */
-/*****************************************************************************/
-/* GNU LIBRARY GENERAL PUBLIC LICENSE: */
-/*****************************************************************************/
-/* */
-/* This library is free software; you can redistribute it and/or */
-/* modify it under the terms of the GNU Library General Public */
-/* License as published by the Free Software Foundation; either */
-/* version 2 of the License, or (at your option) any later version. */
-/* */
-/* This library 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 */
-/* Library General Public License for more details. */
-/* */
-/* You should have received a copy of the GNU Library General Public */
-/* License along with this library; if not, write to the */
-/* Free Software Foundation, Inc., */
-/* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
-/* */
-/* or download a copy from ftp://ftp.gnu.org/pub/gnu/COPYING.LIB-2.0 */
-/* */
-/*****************************************************************************/
-#endif
+#ifndef YASM_BITVECT_H
+#define YASM_BITVECT_H
+/*****************************************************************************/
+/* MODULE NAME: BitVector.h MODULE TYPE: (adt) */
+/*****************************************************************************/
+/* MODULE IMPORTS: */
+/*****************************************************************************/
+
+/* ToolBox.h */
+/*****************************************************************************/
+/* NOTE: The type names that have been chosen here are somewhat weird on */
+/* purpose, in order to avoid name clashes with system header files */
+/* and your own application(s) which might - directly or indirectly - */
+/* include this definitions file. */
+/*****************************************************************************/
+#ifndef YASM_LIB_DECL
+#define YASM_LIB_DECL
+#endif
+
+typedef unsigned char N_char;
+typedef unsigned char N_byte;
+typedef unsigned short N_short;
+typedef unsigned short N_shortword;
+typedef unsigned int N_int;
+typedef unsigned int N_word;
+typedef unsigned long N_long;
+typedef unsigned long N_longword;
+
+/* Mnemonic 1: The natural numbers, N = { 0, 1, 2, 3, ... } */
+/* Mnemonic 2: Nnnn = u_N_signed, _N_ot signed */
+
+typedef signed char Z_char;
+typedef signed char Z_byte;
+typedef signed short Z_short;
+typedef signed short Z_shortword;
+typedef signed int Z_int;
+typedef signed int Z_word;
+typedef signed long Z_long;
+typedef signed long Z_longword;
+
+/* Mnemonic 1: The whole numbers, Z = { 0, -1, 1, -2, 2, -3, 3, ... } */
+/* Mnemonic 2: Zzzz = Ssss_igned */
+
+typedef void *voidptr;
+typedef N_char *charptr;
+typedef N_byte *byteptr;
+typedef N_short *shortptr;
+typedef N_shortword *shortwordptr;
+typedef N_int *intptr;
+typedef N_word *wordptr;
+typedef N_long *longptr;
+typedef N_longword *longwordptr;
+
+typedef N_char *N_charptr;
+typedef N_byte *N_byteptr;
+typedef N_short *N_shortptr;
+typedef N_shortword *N_shortwordptr;
+typedef N_int *N_intptr;
+typedef N_word *N_wordptr;
+typedef N_long *N_longptr;
+typedef N_longword *N_longwordptr;
+
+typedef Z_char *Z_charptr;
+typedef Z_byte *Z_byteptr;
+typedef Z_short *Z_shortptr;
+typedef Z_shortword *Z_shortwordptr;
+typedef Z_int *Z_intptr;
+typedef Z_word *Z_wordptr;
+typedef Z_long *Z_longptr;
+typedef Z_longword *Z_longwordptr;
+
+#ifndef FALSE
+#define FALSE (0!=0)
+#endif
+
+#ifndef TRUE
+#define TRUE (0==0)
+#endif
+
+#ifdef __cplusplus
+ typedef bool boolean;
+#else
+ #ifdef MACOS_TRADITIONAL
+ #define boolean Boolean
+ #else
+ typedef enum boolean { false = FALSE, true = TRUE } boolean;
+ #endif
+#endif
+
+/*****************************************************************************/
+/* MODULE INTERFACE: */
+/*****************************************************************************/
+
+typedef enum ErrCode
+ {
+ ErrCode_Ok = 0, /* everything went allright */
+
+ ErrCode_Type, /* types word and size_t have incompatible sizes */
+ ErrCode_Bits, /* bits of word and sizeof(word) are inconsistent */
+ ErrCode_Word, /* size of word is less than 16 bits */
+ ErrCode_Long, /* size of word is greater than size of long */
+ ErrCode_Powr, /* number of bits of word is not a power of two */
+ ErrCode_Loga, /* error in calculation of logarithm */
+
+ ErrCode_Null, /* unable to allocate memory */
+
+ ErrCode_Indx, /* index out of range */
+ ErrCode_Ordr, /* minimum > maximum index */
+ ErrCode_Size, /* bit vector size mismatch */
+ ErrCode_Pars, /* input string syntax error */
+ ErrCode_Ovfl, /* numeric overflow error */
+ ErrCode_Same, /* operands must be distinct */
+ ErrCode_Expo, /* exponent must be positive */
+ ErrCode_Zero /* division by zero error */
+ } ErrCode;
+
+typedef wordptr *listptr;
+
+/* ===> MISCELLANEOUS BASIC FUNCTIONS: <=== */
+
+YASM_LIB_DECL
+const char * BitVector_Error (ErrCode error); /* return string for err code */
+
+YASM_LIB_DECL
+ErrCode BitVector_Boot (void); /* 0 = ok, 1..7 = error */
+YASM_LIB_DECL
+void BitVector_Shutdown (void); /* undo Boot */
+
+YASM_LIB_DECL
+N_word BitVector_Size (N_int bits); /* bit vector size (# of words) */
+YASM_LIB_DECL
+N_word BitVector_Mask (N_int bits); /* bit vector mask (unused bits) */
+
+/* ===> CLASS METHODS: <=== */
+
+YASM_LIB_DECL
+const char * BitVector_Version (void); /* returns version string */
+
+YASM_LIB_DECL
+N_int BitVector_Word_Bits (void); /* return # of bits in machine word */
+YASM_LIB_DECL
+N_int BitVector_Long_Bits (void); /* return # of bits in unsigned long */
+
+/* ===> CONSTRUCTOR METHODS: <=== */
+
+YASM_LIB_DECL
+/*@only@*/ wordptr BitVector_Create (N_int bits, boolean clear); /* malloc */
+YASM_LIB_DECL
+listptr BitVector_Create_List(N_int bits, boolean clear, N_int count);
+
+YASM_LIB_DECL
+wordptr BitVector_Resize (wordptr oldaddr, N_int bits); /* realloc */
+
+YASM_LIB_DECL
+wordptr BitVector_Shadow (wordptr addr); /* make new same size but empty */
+YASM_LIB_DECL
+wordptr BitVector_Clone (wordptr addr); /* make exact duplicate */
+
+YASM_LIB_DECL
+wordptr BitVector_Concat (wordptr X, wordptr Y); /* return concatenation */
+
+/* ===> DESTRUCTOR METHODS: <=== */
+
+YASM_LIB_DECL
+void BitVector_Dispose (/*@only@*/ /*@out@*/ charptr string); /* string */
+YASM_LIB_DECL
+void BitVector_Destroy (/*@only@*/ wordptr addr); /* bitvec */
+YASM_LIB_DECL
+void BitVector_Destroy_List (listptr list, N_int count); /* list */
+
+/* ===> OBJECT METHODS: <=== */
+
+/* ===> bit vector copy function: */
+
+YASM_LIB_DECL
+void BitVector_Copy (wordptr X, wordptr Y); /* X = Y */
+
+/* ===> bit vector initialization: */
+
+YASM_LIB_DECL
+void BitVector_Empty (wordptr addr); /* X = {} */
+YASM_LIB_DECL
+void BitVector_Fill (wordptr addr); /* X = ~{} */
+YASM_LIB_DECL
+void BitVector_Flip (wordptr addr); /* X = ~X */
+
+YASM_LIB_DECL
+void BitVector_Primes (wordptr addr);
+
+/* ===> miscellaneous functions: */
+
+YASM_LIB_DECL
+void BitVector_Reverse (wordptr X, wordptr Y);
+
+/* ===> bit vector interval operations and functions: */
+
+YASM_LIB_DECL
+void BitVector_Interval_Empty (/*@out@*/ wordptr addr, N_int lower, N_int upper);
+YASM_LIB_DECL
+void BitVector_Interval_Fill (/*@out@*/ wordptr addr, N_int lower, N_int upper);
+YASM_LIB_DECL
+void BitVector_Interval_Flip (/*@out@*/ wordptr addr, N_int lower, N_int upper);
+YASM_LIB_DECL
+void BitVector_Interval_Reverse (/*@out@*/ wordptr addr, N_int lower, N_int upper);
+
+YASM_LIB_DECL
+boolean BitVector_interval_scan_inc (wordptr addr, N_int start,
+ N_intptr min, N_intptr max);
+YASM_LIB_DECL
+boolean BitVector_interval_scan_dec (wordptr addr, N_int start,
+ N_intptr min, N_intptr max);
+
+YASM_LIB_DECL
+void BitVector_Interval_Copy (/*@out@*/ wordptr X, wordptr Y, N_int Xoffset,
+ N_int Yoffset, N_int length);
+
+YASM_LIB_DECL
+wordptr BitVector_Interval_Substitute(/*@out@*/ wordptr X, wordptr Y,
+ N_int Xoffset, N_int Xlength,
+ N_int Yoffset, N_int Ylength);
+
+/* ===> bit vector test functions: */
+
+YASM_LIB_DECL
+boolean BitVector_is_empty (wordptr addr); /* X == {} ? */
+YASM_LIB_DECL
+boolean BitVector_is_full (wordptr addr); /* X == ~{} ? */
+
+YASM_LIB_DECL
+boolean BitVector_equal (wordptr X, wordptr Y); /* X == Y ? */
+YASM_LIB_DECL
+Z_int BitVector_Lexicompare(wordptr X, wordptr Y); /* X <,=,> Y ? */
+YASM_LIB_DECL
+Z_int BitVector_Compare (wordptr X, wordptr Y); /* X <,=,> Y ? */
+
+/* ===> bit vector string conversion functions: */
+
+YASM_LIB_DECL
+/*@only@*/ charptr BitVector_to_Hex (wordptr addr);
+YASM_LIB_DECL
+ErrCode BitVector_from_Hex (/*@out@*/wordptr addr, charptr string);
+
+YASM_LIB_DECL
+ErrCode BitVector_from_Oct(/*@out@*/ wordptr addr, charptr string);
+
+YASM_LIB_DECL
+/*@only@*/ charptr BitVector_to_Bin (wordptr addr);
+YASM_LIB_DECL
+ErrCode BitVector_from_Bin (/*@out@*/ wordptr addr, charptr string);
+
+YASM_LIB_DECL
+/*@only@*/ charptr BitVector_to_Dec (wordptr addr);
+YASM_LIB_DECL
+ErrCode BitVector_from_Dec (/*@out@*/ wordptr addr, charptr string);
+
+typedef struct BitVector_from_Dec_static_data BitVector_from_Dec_static_data;
+YASM_LIB_DECL
+BitVector_from_Dec_static_data *BitVector_from_Dec_static_Boot(N_word bits);
+YASM_LIB_DECL
+void BitVector_from_Dec_static_Shutdown(/*@null@*/ BitVector_from_Dec_static_data *data);
+YASM_LIB_DECL
+ErrCode BitVector_from_Dec_static(BitVector_from_Dec_static_data *data,
+ /*@out@*/ wordptr addr, charptr string);
+
+YASM_LIB_DECL
+/*@only@*/ charptr BitVector_to_Enum (wordptr addr);
+YASM_LIB_DECL
+ErrCode BitVector_from_Enum (/*@out@*/ wordptr addr, charptr string);
+
+/* ===> bit vector bit operations, functions & tests: */
+
+YASM_LIB_DECL
+void BitVector_Bit_Off (/*@out@*/ wordptr addr, N_int indx); /* X = X \ {x} */
+YASM_LIB_DECL
+void BitVector_Bit_On (/*@out@*/ wordptr addr, N_int indx); /* X = X + {x} */
+YASM_LIB_DECL
+boolean BitVector_bit_flip (/*@out@*/ wordptr addr, N_int indx); /* (X+{x})\(X*{x}) */
+
+YASM_LIB_DECL
+boolean BitVector_bit_test (wordptr addr, N_int indx); /* {x} in X ? */
+
+YASM_LIB_DECL
+void BitVector_Bit_Copy (/*@out@*/ wordptr addr, N_int indx, boolean bit);
+
+/* ===> bit vector bit shift & rotate functions: */
+
+YASM_LIB_DECL
+void BitVector_LSB (/*@out@*/ wordptr addr, boolean bit);
+YASM_LIB_DECL
+void BitVector_MSB (/*@out@*/ wordptr addr, boolean bit);
+YASM_LIB_DECL
+boolean BitVector_lsb_ (wordptr addr);
+YASM_LIB_DECL
+boolean BitVector_msb_ (wordptr addr);
+YASM_LIB_DECL
+boolean /*@alt void@*/ BitVector_rotate_left (wordptr addr);
+YASM_LIB_DECL
+boolean /*@alt void@*/ BitVector_rotate_right (wordptr addr);
+YASM_LIB_DECL
+boolean /*@alt void@*/ BitVector_shift_left (wordptr addr, boolean carry_in);
+YASM_LIB_DECL
+boolean /*@alt void@*/ BitVector_shift_right (wordptr addr, boolean carry_in);
+YASM_LIB_DECL
+void BitVector_Move_Left (wordptr addr, N_int bits);
+YASM_LIB_DECL
+void BitVector_Move_Right (wordptr addr, N_int bits);
+
+/* ===> bit vector insert/delete bits: */
+
+YASM_LIB_DECL
+void BitVector_Insert (wordptr addr, N_int offset, N_int count,
+ boolean clear);
+YASM_LIB_DECL
+void BitVector_Delete (wordptr addr, N_int offset, N_int count,
+ boolean clear);
+
+/* ===> bit vector arithmetic: */
+
+YASM_LIB_DECL
+boolean /*@alt void@*/ BitVector_increment (wordptr addr); /* X++ */
+YASM_LIB_DECL
+boolean /*@alt void@*/ BitVector_decrement (wordptr addr); /* X-- */
+
+YASM_LIB_DECL
+boolean /*@alt void@*/ BitVector_compute (wordptr X, wordptr Y, wordptr Z, boolean minus,
+ boolean *carry);
+YASM_LIB_DECL
+boolean /*@alt void@*/ BitVector_add (wordptr X, wordptr Y, wordptr Z, boolean *carry);
+YASM_LIB_DECL
+boolean /*@alt void@*/ BitVector_sub (wordptr X, wordptr Y, wordptr Z, boolean *carry);
+YASM_LIB_DECL
+boolean /*@alt void@*/ BitVector_inc (wordptr X, wordptr Y);
+YASM_LIB_DECL
+boolean /*@alt void@*/ BitVector_dec (wordptr X, wordptr Y);
+
+YASM_LIB_DECL
+void BitVector_Negate (wordptr X, wordptr Y);
+YASM_LIB_DECL
+void BitVector_Absolute (wordptr X, wordptr Y);
+YASM_LIB_DECL
+Z_int BitVector_Sign (wordptr addr);
+YASM_LIB_DECL
+ErrCode BitVector_Mul_Pos (wordptr X, wordptr Y, wordptr Z, boolean strict);
+YASM_LIB_DECL
+ErrCode BitVector_Multiply (wordptr X, wordptr Y, wordptr Z);
+YASM_LIB_DECL
+ErrCode BitVector_Div_Pos (wordptr Q, wordptr X, wordptr Y, wordptr R);
+YASM_LIB_DECL
+ErrCode BitVector_Divide (wordptr Q, wordptr X, wordptr Y, wordptr R);
+YASM_LIB_DECL
+ErrCode BitVector_GCD (wordptr X, wordptr Y, wordptr Z);
+YASM_LIB_DECL
+ErrCode BitVector_GCD2 (wordptr U, wordptr V, wordptr W, /* O */
+ wordptr X, wordptr Y); /* I */
+YASM_LIB_DECL
+ErrCode BitVector_Power (wordptr X, wordptr Y, wordptr Z);
+
+/* ===> direct memory access functions: */
+
+YASM_LIB_DECL
+void BitVector_Block_Store(wordptr addr, charptr buffer, N_int length);
+YASM_LIB_DECL
+charptr BitVector_Block_Read (wordptr addr, /*@out@*/ N_intptr length);
+
+/* ===> word array functions: */
+
+YASM_LIB_DECL
+void BitVector_Word_Store (wordptr addr, N_int offset, N_int value);
+YASM_LIB_DECL
+N_int BitVector_Word_Read (wordptr addr, N_int offset);
+
+YASM_LIB_DECL
+void BitVector_Word_Insert(wordptr addr, N_int offset, N_int count,
+ boolean clear);
+YASM_LIB_DECL
+void BitVector_Word_Delete(wordptr addr, N_int offset, N_int count,
+ boolean clear);
+
+/* ===> arbitrary size chunk functions: */
+
+YASM_LIB_DECL
+void BitVector_Chunk_Store(wordptr addr, N_int chunksize,
+ N_int offset, N_long value);
+YASM_LIB_DECL
+N_long BitVector_Chunk_Read (wordptr addr, N_int chunksize,
+ N_int offset);
+
+/* ===> set operations: */
+
+YASM_LIB_DECL
+void Set_Union (wordptr X, wordptr Y, wordptr Z); /* X = Y + Z */
+YASM_LIB_DECL
+void Set_Intersection (wordptr X, wordptr Y, wordptr Z); /* X = Y * Z */
+YASM_LIB_DECL
+void Set_Difference (wordptr X, wordptr Y, wordptr Z); /* X = Y \ Z */
+YASM_LIB_DECL
+void Set_ExclusiveOr (wordptr X, wordptr Y, wordptr Z); /*(Y+Z)\(Y*Z)*/
+YASM_LIB_DECL
+void Set_Complement (wordptr X, wordptr Y); /* X = ~Y */
+
+/* ===> set functions: */
+
+YASM_LIB_DECL
+boolean Set_subset (wordptr X, wordptr Y); /* X in Y ? */
+
+YASM_LIB_DECL
+N_int Set_Norm (wordptr addr); /* = | X | */
+YASM_LIB_DECL
+N_int Set_Norm2 (wordptr addr); /* = | X | */
+YASM_LIB_DECL
+N_int Set_Norm3 (wordptr addr); /* = | X | */
+YASM_LIB_DECL
+Z_long Set_Min (wordptr addr); /* = min(X) */
+YASM_LIB_DECL
+Z_long Set_Max (wordptr addr); /* = max(X) */
+
+/* ===> matrix-of-booleans operations: */
+
+YASM_LIB_DECL
+void Matrix_Multiplication(wordptr X, N_int rowsX, N_int colsX,
+ wordptr Y, N_int rowsY, N_int colsY,
+ wordptr Z, N_int rowsZ, N_int colsZ);
+
+YASM_LIB_DECL
+void Matrix_Product (wordptr X, N_int rowsX, N_int colsX,
+ wordptr Y, N_int rowsY, N_int colsY,
+ wordptr Z, N_int rowsZ, N_int colsZ);
+
+YASM_LIB_DECL
+void Matrix_Closure (wordptr addr, N_int rows, N_int cols);
+
+YASM_LIB_DECL
+void Matrix_Transpose (wordptr X, N_int rowsX, N_int colsX,
+ wordptr Y, N_int rowsY, N_int colsY);
+
+/*****************************************************************************/
+/* VERSION: 6.4 */
+/*****************************************************************************/
+/* VERSION HISTORY: */
+/*****************************************************************************/
+/* */
+/* Version 6.4 03.10.04 Added C++ comp. directives. Improved "Norm()". */
+/* Version 6.3 28.09.02 Added "Create_List()" and "GCD2()". */
+/* Version 6.2 15.09.02 Overhauled error handling. Fixed "GCD()". */
+/* Version 6.1 08.10.01 Make VMS linker happy: _lsb,_msb => _lsb_,_msb_ */
+/* Version 6.0 08.10.00 Corrected overflow handling. */
+/* Version 5.8 14.07.00 Added "Power()". Changed "Copy()". */
+/* Version 5.7 19.05.99 Quickened "Div_Pos()". Added "Product()". */
+/* Version 5.6 02.11.98 Leading zeros eliminated in "to_Hex()". */
+/* Version 5.5 21.09.98 Fixed bug of uninitialized "error" in Multiply. */
+/* Version 5.4 07.09.98 Fixed bug of uninitialized "error" in Divide. */
+/* Version 5.3 12.05.98 Improved Norm. Completed history. */
+/* Version 5.2 31.03.98 Improved Norm. */
+/* Version 5.1 09.03.98 No changes. */
+/* Version 5.0 01.03.98 Major additions and rewrite. */
+/* Version 4.2 16.07.97 Added is_empty, is_full. */
+/* Version 4.1 30.06.97 Added word-ins/del, move-left/right, inc/dec. */
+/* Version 4.0 23.04.97 Rewrite. Added bit shift and bool. matrix ops. */
+/* Version 3.2 04.02.97 Added interval methods. */
+/* Version 3.1 21.01.97 Fixed bug on 64 bit machines. */
+/* Version 3.0 12.01.97 Added flip. */
+/* Version 2.0 14.12.96 Efficiency and consistency improvements. */
+/* Version 1.1 08.01.96 Added Resize and ExclusiveOr. */
+/* Version 1.0 14.12.95 First version under UNIX (with Perl module). */
+/* Version 0.9 01.11.93 First version of C library under MS-DOS. */
+/* Version 0.1 ??.??.89 First version in Turbo Pascal under CP/M. */
+/* */
+/*****************************************************************************/
+/* AUTHOR: */
+/*****************************************************************************/
+/* */
+/* Steffen Beyer */
+/* mailto:sb@engelschall.com */
+/* http://www.engelschall.com/u/sb/download/ */
+/* */
+/*****************************************************************************/
+/* COPYRIGHT: */
+/*****************************************************************************/
+/* */
+/* Copyright (c) 1995 - 2004 by Steffen Beyer. */
+/* All rights reserved. */
+/* */
+/*****************************************************************************/
+/* LICENSE: */
+/*****************************************************************************/
+/* This package is free software; you can use, modify and redistribute */
+/* it under the same terms as Perl itself, i.e., under the terms of */
+/* the "Artistic License" or the "GNU General Public License". */
+/* */
+/* The C library at the core of this Perl module can additionally */
+/* be used, modified and redistributed under the terms of the */
+/* "GNU Library General Public License". */
+/* */
+/*****************************************************************************/
+/* ARTISTIC LICENSE: */
+/*****************************************************************************/
+/*
+ The "Artistic License"
+
+ Preamble
+
+The intent of this document is to state the conditions under which a
+Package may be copied, such that the Copyright Holder maintains some
+semblance of artistic control over the development of the package,
+while giving the users of the package the right to use and distribute
+the Package in a more-or-less customary fashion, plus the right to make
+reasonable modifications.
+
+Definitions:
+
+ "Package" refers to the collection of files distributed by the
+ Copyright Holder, and derivatives of that collection of files
+ created through textual modification.
+
+ "Standard Version" refers to such a Package if it has not been
+ modified, or has been modified in accordance with the wishes
+ of the Copyright Holder as specified below.
+
+ "Copyright Holder" is whoever is named in the copyright or
+ copyrights for the package.
+
+ "You" is you, if you're thinking about copying or distributing
+ this Package.
+
+ "Reasonable copying fee" is whatever you can justify on the
+ basis of media cost, duplication charges, time of people involved,
+ and so on. (You will not be required to justify it to the
+ Copyright Holder, but only to the computing community at large
+ as a market that must bear the fee.)
+
+ "Freely Available" means that no fee is charged for the item
+ itself, though there may be fees involved in handling the item.
+ It also means that recipients of the item may redistribute it
+ under the same conditions they received it.
+
+1. You may make and give away verbatim copies of the source form of the
+Standard Version of this Package without restriction, provided that you
+duplicate all of the original copyright notices and associated disclaimers.
+
+2. You may apply bug fixes, portability fixes and other modifications
+derived from the Public Domain or from the Copyright Holder. A Package
+modified in such a way shall still be considered the Standard Version.
+
+3. You may otherwise modify your copy of this Package in any way, provided
+that you insert a prominent notice in each changed file stating how and
+when you changed that file, and provided that you do at least ONE of the
+following:
+
+ a) place your modifications in the Public Domain or otherwise make them
+ Freely Available, such as by posting said modifications to Usenet or
+ an equivalent medium, or placing the modifications on a major archive
+ site such as uunet.uu.net, or by allowing the Copyright Holder to include
+ your modifications in the Standard Version of the Package.
+
+ b) use the modified Package only within your corporation or organization.
+
+ c) rename any non-standard executables so the names do not conflict
+ with standard executables, which must also be provided, and provide
+ a separate manual page for each non-standard executable that clearly
+ documents how it differs from the Standard Version.
+
+ d) make other distribution arrangements with the Copyright Holder.
+
+4. You may distribute the programs of this Package in object code or
+executable form, provided that you do at least ONE of the following:
+
+ a) distribute a Standard Version of the executables and library files,
+ together with instructions (in the manual page or equivalent) on where
+ to get the Standard Version.
+
+ b) accompany the distribution with the machine-readable source of
+ the Package with your modifications.
+
+ c) give non-standard executables non-standard names, and clearly
+ document the differences in manual pages (or equivalent), together
+ with instructions on where to get the Standard Version.
+
+ d) make other distribution arrangements with the Copyright Holder.
+
+5. You may charge a reasonable copying fee for any distribution of this
+Package. You may charge any fee you choose for support of this
+Package. You may not charge a fee for this Package itself. However,
+you may distribute this Package in aggregate with other (possibly
+commercial) programs as part of a larger (possibly commercial) software
+distribution provided that you do not advertise this Package as a
+product of your own. You may embed this Package's interpreter within
+an executable of yours (by linking); this shall be construed as a mere
+form of aggregation, provided that the complete Standard Version of the
+interpreter is so embedded.
+
+6. The scripts and library files supplied as input to or produced as
+output from the programs of this Package do not automatically fall
+under the copyright of this Package, but belong to whoever generated
+them, and may be sold commercially, and may be aggregated with this
+Package. If such scripts or library files are aggregated with this
+Package via the so-called "undump" or "unexec" methods of producing a
+binary executable image, then distribution of such an image shall
+neither be construed as a distribution of this Package nor shall it
+fall under the restrictions of Paragraphs 3 and 4, provided that you do
+not represent such an executable image as a Standard Version of this
+Package.
+
+7. C subroutines (or comparably compiled subroutines in other
+languages) supplied by you and linked into this Package in order to
+emulate subroutines and variables of the language defined by this
+Package shall not be considered part of this Package, but are the
+equivalent of input as in Paragraph 6, provided these subroutines do
+not change the language in any way that would cause it to fail the
+regression tests for the language.
+
+8. Aggregation of this Package with a commercial distribution is always
+permitted provided that the use of this Package is embedded; that is,
+when no overt attempt is made to make this Package's interfaces visible
+to the end user of the commercial distribution. Such use shall not be
+construed as a distribution of this Package.
+
+9. The name of the Copyright Holder may not be used to endorse or promote
+products derived from this software without specific prior written permission.
+
+10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+ The End
+*/
+/*****************************************************************************/
+/* GNU GENERAL PUBLIC LICENSE: */
+/*****************************************************************************/
+/* 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 2 */
+/* 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, write to the */
+/* Free Software Foundation, Inc., */
+/* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+/* */
+/*****************************************************************************/
+/* GNU LIBRARY GENERAL PUBLIC LICENSE: */
+/*****************************************************************************/
+/* */
+/* This library is free software; you can redistribute it and/or */
+/* modify it under the terms of the GNU Library General Public */
+/* License as published by the Free Software Foundation; either */
+/* version 2 of the License, or (at your option) any later version. */
+/* */
+/* This library 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 */
+/* Library General Public License for more details. */
+/* */
+/* You should have received a copy of the GNU Library General Public */
+/* License along with this library; if not, write to the */
+/* Free Software Foundation, Inc., */
+/* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
+/* */
+/* or download a copy from ftp://ftp.gnu.org/pub/gnu/COPYING.LIB-2.0 */
+/* */
+/*****************************************************************************/
+#endif
diff --git a/contrib/tools/yasm/libyasm/bytecode.c b/contrib/tools/yasm/libyasm/bytecode.c
index ee28c2b0d9..f864bae0aa 100644
--- a/contrib/tools/yasm/libyasm/bytecode.c
+++ b/contrib/tools/yasm/libyasm/bytecode.c
@@ -1,386 +1,386 @@
-/*
- * Bytecode utility functions
- *
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include "util.h"
-
-#include "libyasm-stdint.h"
-#include "coretype.h"
-
-#include "errwarn.h"
-#include "intnum.h"
-#include "expr.h"
-#include "value.h"
-#include "symrec.h"
-
-#include "bytecode.h"
-
-
-void
-yasm_bc_set_multiple(yasm_bytecode *bc, yasm_expr *e)
-{
- if (bc->multiple)
- bc->multiple = yasm_expr_create_tree(bc->multiple, YASM_EXPR_MUL, e,
- e->line);
- else
- bc->multiple = e;
-}
-
-void
-yasm_bc_finalize_common(yasm_bytecode *bc, yasm_bytecode *prev_bc)
-{
-}
-
-int
-yasm_bc_calc_len_common(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
- void *add_span_data)
-{
- yasm_internal_error(N_("bytecode length cannot be calculated"));
- /*@unreached@*/
- return 0;
-}
-
-int
-yasm_bc_expand_common(yasm_bytecode *bc, int span, long old_val, long new_val,
- /*@out@*/ long *neg_thres, /*@out@*/ long *pos_thres)
-{
- yasm_internal_error(N_("bytecode does not have any dependent spans"));
- /*@unreached@*/
- return 0;
-}
-
-int
-yasm_bc_tobytes_common(yasm_bytecode *bc, unsigned char **buf,
- unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- /*@null@*/ yasm_output_reloc_func output_reloc)
-{
- yasm_internal_error(N_("bytecode cannot be converted to bytes"));
- /*@unreached@*/
- return 0;
-}
-
-void
-yasm_bc_transform(yasm_bytecode *bc, const yasm_bytecode_callback *callback,
- void *contents)
-{
- if (bc->callback)
- bc->callback->destroy(bc->contents);
- bc->callback = callback;
- bc->contents = contents;
-}
-
-yasm_bytecode *
-yasm_bc_create_common(const yasm_bytecode_callback *callback, void *contents,
- unsigned long line)
-{
- yasm_bytecode *bc = yasm_xmalloc(sizeof(yasm_bytecode));
-
- bc->callback = callback;
- bc->section = NULL;
- bc->multiple = (yasm_expr *)NULL;
- bc->len = 0;
- bc->mult_int = 1;
- bc->line = line;
- bc->offset = ~0UL; /* obviously incorrect / uninitialized value */
- bc->symrecs = NULL;
- bc->contents = contents;
-
- return bc;
-}
-
-yasm_section *
-yasm_bc_get_section(yasm_bytecode *bc)
-{
- return bc->section;
-}
-
-void
-yasm_bc__add_symrec(yasm_bytecode *bc, yasm_symrec *sym)
-{
- if (!bc->symrecs) {
- bc->symrecs = yasm_xmalloc(2*sizeof(yasm_symrec *));
- bc->symrecs[0] = sym;
- bc->symrecs[1] = NULL;
- } else {
- /* Very inefficient implementation for large numbers of symbols. But
- * that would be very unusual, so use the simple algorithm instead.
- */
- size_t count = 1;
- while (bc->symrecs[count])
- count++;
- bc->symrecs = yasm_xrealloc(bc->symrecs,
- (count+2)*sizeof(yasm_symrec *));
- bc->symrecs[count] = sym;
- bc->symrecs[count+1] = NULL;
- }
-}
-
-void
-yasm_bc_destroy(yasm_bytecode *bc)
-{
- if (!bc)
- return;
-
- if (bc->callback)
- bc->callback->destroy(bc->contents);
- yasm_expr_destroy(bc->multiple);
- if (bc->symrecs)
- yasm_xfree(bc->symrecs);
- yasm_xfree(bc);
-}
-
-void
-yasm_bc_print(const yasm_bytecode *bc, FILE *f, int indent_level)
-{
- if (!bc->callback)
- fprintf(f, "%*s_Empty_\n", indent_level, "");
- else
- bc->callback->print(bc->contents, f, indent_level);
- fprintf(f, "%*sMultiple=", indent_level, "");
- if (!bc->multiple)
- fprintf(f, "nil (1)");
- else
- yasm_expr_print(bc->multiple, f);
- fprintf(f, "\n%*sLength=%lu\n", indent_level, "", bc->len);
- fprintf(f, "%*sLine Index=%lu\n", indent_level, "", bc->line);
- fprintf(f, "%*sOffset=%lx\n", indent_level, "", bc->offset);
-}
-
-void
-yasm_bc_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc)
-{
- if (bc->callback)
- bc->callback->finalize(bc, prev_bc);
- if (bc->multiple) {
- yasm_value val;
-
- if (yasm_value_finalize_expr(&val, bc->multiple, prev_bc, 0))
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("multiple expression too complex"));
- else if (val.rel)
- yasm_error_set(YASM_ERROR_NOT_ABSOLUTE,
- N_("multiple expression not absolute"));
- /* Finalize creates NULL output if value=0, but bc->multiple is NULL
- * if value=1 (this difference is to make the common case small).
- * However, this means we need to set bc->multiple explicitly to 0
- * here if val.abs is NULL.
- */
- if (val.abs)
- bc->multiple = val.abs;
- else
- bc->multiple = yasm_expr_create_ident(
- yasm_expr_int(yasm_intnum_create_uint(0)), bc->line);
- }
-}
-
-/*@null@*/ yasm_intnum *
-yasm_calc_bc_dist(yasm_bytecode *precbc1, yasm_bytecode *precbc2)
-{
- unsigned long dist2, dist1;
- yasm_intnum *intn;
-
- if (precbc1->section != precbc2->section)
- return NULL;
-
- dist1 = yasm_bc_next_offset(precbc1);
- dist2 = yasm_bc_next_offset(precbc2);
- if (dist2 < dist1) {
- intn = yasm_intnum_create_uint(dist1 - dist2);
- yasm_intnum_calc(intn, YASM_EXPR_NEG, NULL);
- return intn;
- }
- dist2 -= dist1;
- return yasm_intnum_create_uint(dist2);
-}
-
-unsigned long
-yasm_bc_next_offset(yasm_bytecode *precbc)
-{
- return precbc->offset + precbc->len*precbc->mult_int;
-}
-
-int
-yasm_bc_elem_size(yasm_bytecode *bc)
-{
- if (!bc->callback) {
- yasm_internal_error(N_("got empty bytecode in yasm_bc_elem_size"));
- return 0;
- } else if (!bc->callback->elem_size)
- return 0;
- else
- return bc->callback->elem_size(bc);
-}
-
-int
-yasm_bc_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
- void *add_span_data)
-{
- int retval = 0;
-
- bc->len = 0;
-
- if (!bc->callback)
- yasm_internal_error(N_("got empty bytecode in yasm_bc_calc_len"));
- else
- retval = bc->callback->calc_len(bc, add_span, add_span_data);
-
- /* Check for multiples */
- bc->mult_int = 1;
- if (bc->multiple) {
- /*@dependent@*/ /*@null@*/ const yasm_intnum *num;
-
- num = yasm_expr_get_intnum(&bc->multiple, 0);
- if (num) {
- if (yasm_intnum_sign(num) < 0) {
- yasm_error_set(YASM_ERROR_VALUE, N_("multiple is negative"));
- retval = -1;
- } else
- bc->mult_int = yasm_intnum_get_int(num);
- } else {
- if (yasm_expr__contains(bc->multiple, YASM_EXPR_FLOAT)) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("expression must not contain floating point value"));
- retval = -1;
- } else {
- yasm_value value;
- yasm_value_initialize(&value, bc->multiple, 0);
- add_span(add_span_data, bc, 0, &value, 0, 0);
- bc->mult_int = 0; /* assume 0 to start */
- }
- }
- }
-
- /* If we got an error somewhere along the line, clear out any calc len */
- if (retval < 0)
- bc->len = 0;
-
- return retval;
-}
-
-int
-yasm_bc_expand(yasm_bytecode *bc, int span, long old_val, long new_val,
- /*@out@*/ long *neg_thres, /*@out@*/ long *pos_thres)
-{
- if (span == 0) {
- bc->mult_int = new_val;
- return 1;
- }
- if (!bc->callback) {
- yasm_internal_error(N_("got empty bytecode in yasm_bc_expand"));
- /*@unreached@*/
- return -1;
- } else
- return bc->callback->expand(bc, span, old_val, new_val, neg_thres,
- pos_thres);
-}
-
-/*@null@*/ /*@only@*/ unsigned char *
-yasm_bc_tobytes(yasm_bytecode *bc, unsigned char *buf, unsigned long *bufsize,
- /*@out@*/ int *gap, void *d,
- yasm_output_value_func output_value,
- /*@null@*/ yasm_output_reloc_func output_reloc)
- /*@sets *buf@*/
-{
- /*@only@*/ /*@null@*/ unsigned char *mybuf = NULL;
- unsigned char *bufstart;
- unsigned char *origbuf, *destbuf;
- long i;
- int error = 0;
-
- long mult;
- if (yasm_bc_get_multiple(bc, &mult, 1) || mult == 0) {
- *bufsize = 0;
- return NULL;
- }
- bc->mult_int = mult;
-
- /* special case for reserve bytecodes */
- if (bc->callback->special == YASM_BC_SPECIAL_RESERVE) {
- *bufsize = bc->len*bc->mult_int;
- *gap = 1;
- return NULL; /* we didn't allocate a buffer */
- }
- *gap = 0;
-
- if (*bufsize < bc->len*bc->mult_int) {
- mybuf = yasm_xmalloc(bc->len*bc->mult_int);
- destbuf = mybuf;
- } else
- destbuf = buf;
- bufstart = destbuf;
-
- *bufsize = bc->len*bc->mult_int;
-
- if (!bc->callback)
- yasm_internal_error(N_("got empty bytecode in bc_tobytes"));
- else for (i=0; i<bc->mult_int; i++) {
- origbuf = destbuf;
- error = bc->callback->tobytes(bc, &destbuf, bufstart, d, output_value,
- output_reloc);
-
- if (!error && ((unsigned long)(destbuf - origbuf) != bc->len))
- yasm_internal_error(
- N_("written length does not match optimized length"));
- }
-
- return mybuf;
-}
-
-int
-yasm_bc_get_multiple(yasm_bytecode *bc, long *multiple, int calc_bc_dist)
-{
- /*@dependent@*/ /*@null@*/ const yasm_intnum *num;
-
- *multiple = 1;
- if (bc->multiple) {
- num = yasm_expr_get_intnum(&bc->multiple, calc_bc_dist);
- if (!num) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("could not determine multiple"));
- return 1;
- }
- if (yasm_intnum_sign(num) < 0) {
- yasm_error_set(YASM_ERROR_VALUE, N_("multiple is negative"));
- return 1;
- }
- *multiple = yasm_intnum_get_int(num);
- }
- return 0;
-}
-
-const yasm_expr *
-yasm_bc_get_multiple_expr(const yasm_bytecode *bc)
-{
- return bc->multiple;
-}
-
-yasm_insn *
-yasm_bc_get_insn(yasm_bytecode *bc)
-{
- if (bc->callback->special != YASM_BC_SPECIAL_INSN)
- return NULL;
- return (yasm_insn *)bc->contents;
-}
+/*
+ * Bytecode utility functions
+ *
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "util.h"
+
+#include "libyasm-stdint.h"
+#include "coretype.h"
+
+#include "errwarn.h"
+#include "intnum.h"
+#include "expr.h"
+#include "value.h"
+#include "symrec.h"
+
+#include "bytecode.h"
+
+
+void
+yasm_bc_set_multiple(yasm_bytecode *bc, yasm_expr *e)
+{
+ if (bc->multiple)
+ bc->multiple = yasm_expr_create_tree(bc->multiple, YASM_EXPR_MUL, e,
+ e->line);
+ else
+ bc->multiple = e;
+}
+
+void
+yasm_bc_finalize_common(yasm_bytecode *bc, yasm_bytecode *prev_bc)
+{
+}
+
+int
+yasm_bc_calc_len_common(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
+ void *add_span_data)
+{
+ yasm_internal_error(N_("bytecode length cannot be calculated"));
+ /*@unreached@*/
+ return 0;
+}
+
+int
+yasm_bc_expand_common(yasm_bytecode *bc, int span, long old_val, long new_val,
+ /*@out@*/ long *neg_thres, /*@out@*/ long *pos_thres)
+{
+ yasm_internal_error(N_("bytecode does not have any dependent spans"));
+ /*@unreached@*/
+ return 0;
+}
+
+int
+yasm_bc_tobytes_common(yasm_bytecode *bc, unsigned char **buf,
+ unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ /*@null@*/ yasm_output_reloc_func output_reloc)
+{
+ yasm_internal_error(N_("bytecode cannot be converted to bytes"));
+ /*@unreached@*/
+ return 0;
+}
+
+void
+yasm_bc_transform(yasm_bytecode *bc, const yasm_bytecode_callback *callback,
+ void *contents)
+{
+ if (bc->callback)
+ bc->callback->destroy(bc->contents);
+ bc->callback = callback;
+ bc->contents = contents;
+}
+
+yasm_bytecode *
+yasm_bc_create_common(const yasm_bytecode_callback *callback, void *contents,
+ unsigned long line)
+{
+ yasm_bytecode *bc = yasm_xmalloc(sizeof(yasm_bytecode));
+
+ bc->callback = callback;
+ bc->section = NULL;
+ bc->multiple = (yasm_expr *)NULL;
+ bc->len = 0;
+ bc->mult_int = 1;
+ bc->line = line;
+ bc->offset = ~0UL; /* obviously incorrect / uninitialized value */
+ bc->symrecs = NULL;
+ bc->contents = contents;
+
+ return bc;
+}
+
+yasm_section *
+yasm_bc_get_section(yasm_bytecode *bc)
+{
+ return bc->section;
+}
+
+void
+yasm_bc__add_symrec(yasm_bytecode *bc, yasm_symrec *sym)
+{
+ if (!bc->symrecs) {
+ bc->symrecs = yasm_xmalloc(2*sizeof(yasm_symrec *));
+ bc->symrecs[0] = sym;
+ bc->symrecs[1] = NULL;
+ } else {
+ /* Very inefficient implementation for large numbers of symbols. But
+ * that would be very unusual, so use the simple algorithm instead.
+ */
+ size_t count = 1;
+ while (bc->symrecs[count])
+ count++;
+ bc->symrecs = yasm_xrealloc(bc->symrecs,
+ (count+2)*sizeof(yasm_symrec *));
+ bc->symrecs[count] = sym;
+ bc->symrecs[count+1] = NULL;
+ }
+}
+
+void
+yasm_bc_destroy(yasm_bytecode *bc)
+{
+ if (!bc)
+ return;
+
+ if (bc->callback)
+ bc->callback->destroy(bc->contents);
+ yasm_expr_destroy(bc->multiple);
+ if (bc->symrecs)
+ yasm_xfree(bc->symrecs);
+ yasm_xfree(bc);
+}
+
+void
+yasm_bc_print(const yasm_bytecode *bc, FILE *f, int indent_level)
+{
+ if (!bc->callback)
+ fprintf(f, "%*s_Empty_\n", indent_level, "");
+ else
+ bc->callback->print(bc->contents, f, indent_level);
+ fprintf(f, "%*sMultiple=", indent_level, "");
+ if (!bc->multiple)
+ fprintf(f, "nil (1)");
+ else
+ yasm_expr_print(bc->multiple, f);
+ fprintf(f, "\n%*sLength=%lu\n", indent_level, "", bc->len);
+ fprintf(f, "%*sLine Index=%lu\n", indent_level, "", bc->line);
+ fprintf(f, "%*sOffset=%lx\n", indent_level, "", bc->offset);
+}
+
+void
+yasm_bc_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc)
+{
+ if (bc->callback)
+ bc->callback->finalize(bc, prev_bc);
+ if (bc->multiple) {
+ yasm_value val;
+
+ if (yasm_value_finalize_expr(&val, bc->multiple, prev_bc, 0))
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("multiple expression too complex"));
+ else if (val.rel)
+ yasm_error_set(YASM_ERROR_NOT_ABSOLUTE,
+ N_("multiple expression not absolute"));
+ /* Finalize creates NULL output if value=0, but bc->multiple is NULL
+ * if value=1 (this difference is to make the common case small).
+ * However, this means we need to set bc->multiple explicitly to 0
+ * here if val.abs is NULL.
+ */
+ if (val.abs)
+ bc->multiple = val.abs;
+ else
+ bc->multiple = yasm_expr_create_ident(
+ yasm_expr_int(yasm_intnum_create_uint(0)), bc->line);
+ }
+}
+
+/*@null@*/ yasm_intnum *
+yasm_calc_bc_dist(yasm_bytecode *precbc1, yasm_bytecode *precbc2)
+{
+ unsigned long dist2, dist1;
+ yasm_intnum *intn;
+
+ if (precbc1->section != precbc2->section)
+ return NULL;
+
+ dist1 = yasm_bc_next_offset(precbc1);
+ dist2 = yasm_bc_next_offset(precbc2);
+ if (dist2 < dist1) {
+ intn = yasm_intnum_create_uint(dist1 - dist2);
+ yasm_intnum_calc(intn, YASM_EXPR_NEG, NULL);
+ return intn;
+ }
+ dist2 -= dist1;
+ return yasm_intnum_create_uint(dist2);
+}
+
+unsigned long
+yasm_bc_next_offset(yasm_bytecode *precbc)
+{
+ return precbc->offset + precbc->len*precbc->mult_int;
+}
+
+int
+yasm_bc_elem_size(yasm_bytecode *bc)
+{
+ if (!bc->callback) {
+ yasm_internal_error(N_("got empty bytecode in yasm_bc_elem_size"));
+ return 0;
+ } else if (!bc->callback->elem_size)
+ return 0;
+ else
+ return bc->callback->elem_size(bc);
+}
+
+int
+yasm_bc_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
+ void *add_span_data)
+{
+ int retval = 0;
+
+ bc->len = 0;
+
+ if (!bc->callback)
+ yasm_internal_error(N_("got empty bytecode in yasm_bc_calc_len"));
+ else
+ retval = bc->callback->calc_len(bc, add_span, add_span_data);
+
+ /* Check for multiples */
+ bc->mult_int = 1;
+ if (bc->multiple) {
+ /*@dependent@*/ /*@null@*/ const yasm_intnum *num;
+
+ num = yasm_expr_get_intnum(&bc->multiple, 0);
+ if (num) {
+ if (yasm_intnum_sign(num) < 0) {
+ yasm_error_set(YASM_ERROR_VALUE, N_("multiple is negative"));
+ retval = -1;
+ } else
+ bc->mult_int = yasm_intnum_get_int(num);
+ } else {
+ if (yasm_expr__contains(bc->multiple, YASM_EXPR_FLOAT)) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("expression must not contain floating point value"));
+ retval = -1;
+ } else {
+ yasm_value value;
+ yasm_value_initialize(&value, bc->multiple, 0);
+ add_span(add_span_data, bc, 0, &value, 0, 0);
+ bc->mult_int = 0; /* assume 0 to start */
+ }
+ }
+ }
+
+ /* If we got an error somewhere along the line, clear out any calc len */
+ if (retval < 0)
+ bc->len = 0;
+
+ return retval;
+}
+
+int
+yasm_bc_expand(yasm_bytecode *bc, int span, long old_val, long new_val,
+ /*@out@*/ long *neg_thres, /*@out@*/ long *pos_thres)
+{
+ if (span == 0) {
+ bc->mult_int = new_val;
+ return 1;
+ }
+ if (!bc->callback) {
+ yasm_internal_error(N_("got empty bytecode in yasm_bc_expand"));
+ /*@unreached@*/
+ return -1;
+ } else
+ return bc->callback->expand(bc, span, old_val, new_val, neg_thres,
+ pos_thres);
+}
+
+/*@null@*/ /*@only@*/ unsigned char *
+yasm_bc_tobytes(yasm_bytecode *bc, unsigned char *buf, unsigned long *bufsize,
+ /*@out@*/ int *gap, void *d,
+ yasm_output_value_func output_value,
+ /*@null@*/ yasm_output_reloc_func output_reloc)
+ /*@sets *buf@*/
+{
+ /*@only@*/ /*@null@*/ unsigned char *mybuf = NULL;
+ unsigned char *bufstart;
+ unsigned char *origbuf, *destbuf;
+ long i;
+ int error = 0;
+
+ long mult;
+ if (yasm_bc_get_multiple(bc, &mult, 1) || mult == 0) {
+ *bufsize = 0;
+ return NULL;
+ }
+ bc->mult_int = mult;
+
+ /* special case for reserve bytecodes */
+ if (bc->callback->special == YASM_BC_SPECIAL_RESERVE) {
+ *bufsize = bc->len*bc->mult_int;
+ *gap = 1;
+ return NULL; /* we didn't allocate a buffer */
+ }
+ *gap = 0;
+
+ if (*bufsize < bc->len*bc->mult_int) {
+ mybuf = yasm_xmalloc(bc->len*bc->mult_int);
+ destbuf = mybuf;
+ } else
+ destbuf = buf;
+ bufstart = destbuf;
+
+ *bufsize = bc->len*bc->mult_int;
+
+ if (!bc->callback)
+ yasm_internal_error(N_("got empty bytecode in bc_tobytes"));
+ else for (i=0; i<bc->mult_int; i++) {
+ origbuf = destbuf;
+ error = bc->callback->tobytes(bc, &destbuf, bufstart, d, output_value,
+ output_reloc);
+
+ if (!error && ((unsigned long)(destbuf - origbuf) != bc->len))
+ yasm_internal_error(
+ N_("written length does not match optimized length"));
+ }
+
+ return mybuf;
+}
+
+int
+yasm_bc_get_multiple(yasm_bytecode *bc, long *multiple, int calc_bc_dist)
+{
+ /*@dependent@*/ /*@null@*/ const yasm_intnum *num;
+
+ *multiple = 1;
+ if (bc->multiple) {
+ num = yasm_expr_get_intnum(&bc->multiple, calc_bc_dist);
+ if (!num) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("could not determine multiple"));
+ return 1;
+ }
+ if (yasm_intnum_sign(num) < 0) {
+ yasm_error_set(YASM_ERROR_VALUE, N_("multiple is negative"));
+ return 1;
+ }
+ *multiple = yasm_intnum_get_int(num);
+ }
+ return 0;
+}
+
+const yasm_expr *
+yasm_bc_get_multiple_expr(const yasm_bytecode *bc)
+{
+ return bc->multiple;
+}
+
+yasm_insn *
+yasm_bc_get_insn(yasm_bytecode *bc)
+{
+ if (bc->callback->special != YASM_BC_SPECIAL_INSN)
+ return NULL;
+ return (yasm_insn *)bc->contents;
+}
diff --git a/contrib/tools/yasm/libyasm/bytecode.h b/contrib/tools/yasm/libyasm/bytecode.h
index fc75e57d0e..47cd26244b 100644
--- a/contrib/tools/yasm/libyasm/bytecode.h
+++ b/contrib/tools/yasm/libyasm/bytecode.h
@@ -1,638 +1,638 @@
-/**
- * \file libyasm/bytecode.h
- * \brief YASM bytecode interface.
- *
- * \license
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- * \endlicense
- */
-#ifndef YASM_BYTECODE_H
-#define YASM_BYTECODE_H
-
-#ifndef YASM_LIB_DECL
-#define YASM_LIB_DECL
-#endif
-
-/** A data value (opaque type). */
-typedef struct yasm_dataval yasm_dataval;
-/** A list of data values. */
-typedef struct yasm_datavalhead yasm_datavalhead;
-
-/** Linked list of data values. */
-/*@reldef@*/ STAILQ_HEAD(yasm_datavalhead, yasm_dataval);
-
-/** Add a dependent span for a bytecode.
- * \param add_span_data add_span_data passed into bc_calc_len()
- * \param bc bytecode containing span
- * \param id non-zero identifier for span; may be any non-zero value
- * if <0, expand is called for any change;
- * if >0, expand is only called when exceeds threshold
- * \param value dependent value for bytecode expansion
- * \param neg_thres negative threshold for long/short decision
- * \param pos_thres positive threshold for long/short decision
- */
-typedef void (*yasm_bc_add_span_func)
- (void *add_span_data, yasm_bytecode *bc, int id, const yasm_value *value,
- long neg_thres, long pos_thres);
-
-/** Bytecode callback structure. Any implementation of a specific bytecode
- * must implement these functions and this callback structure. The bytecode
- * implementation-specific data is stored in #yasm_bytecode.contents.
- */
-typedef struct yasm_bytecode_callback {
- /** Destroys the implementation-specific data.
- * Called from yasm_bc_destroy().
- * \param contents #yasm_bytecode.contents
- */
- void (*destroy) (/*@only@*/ void *contents);
-
- /** Prints the implementation-specific data (for debugging purposes).
- * Called from yasm_bc_print().
- * \param contents #yasm_bytecode.contents
- * \param f file
- * \param indent_level indentation level
- */
- void (*print) (const void *contents, FILE *f, int indent_level);
-
- /** Finalizes the bytecode after parsing. Called from yasm_bc_finalize().
- * A generic fill-in for this is yasm_bc_finalize_common().
- * \param bc bytecode
- * \param prev_bc bytecode directly preceding bc
- */
- void (*finalize) (yasm_bytecode *bc, yasm_bytecode *prev_bc);
-
- /** Return elements size of a data bytecode.
- * This function should return the size of each elements of a data
- * bytecode, for proper dereference of symbols attached to it.
- * \param bc bytecode
- * \return 0 if element size is unknown.
- */
- int (*elem_size) (yasm_bytecode *bc);
-
- /** Calculates the minimum size of a bytecode.
- * Called from yasm_bc_calc_len().
- * A generic fill-in for this is yasm_bc_calc_len_common(), but as this
- * function internal errors when called, be very careful when using it!
- * This function should simply add to bc->len and not set it directly
- * (it's initialized by yasm_bc_calc_len() prior to passing control to
- * this function).
- *
- * \param bc bytecode
- * \param add_span function to call to add a span
- * \param add_span_data extra data to be passed to add_span function
- * \return 0 if no error occurred, nonzero if there was an error
- * recognized (and output) during execution.
- * \note May store to bytecode updated expressions.
- */
- int (*calc_len) (yasm_bytecode *bc, yasm_bc_add_span_func add_span,
- void *add_span_data);
-
- /** Recalculates the bytecode's length based on an expanded span length.
- * Called from yasm_bc_expand().
- * A generic fill-in for this is yasm_bc_expand_common(), but as this
- * function internal errors when called, if used, ensure that calc_len()
- * never adds a span.
- * This function should simply add to bc->len to increase the length by
- * a delta amount.
- * \param bc bytecode
- * \param span span ID (as given to add_span in calc_len)
- * \param old_val previous span value
- * \param new_val new span value
- * \param neg_thres negative threshold for long/short decision
- * (returned)
- * \param pos_thres positive threshold for long/short decision
- * (returned)
- * \return 0 if bc no longer dependent on this span's length, negative if
- * there was an error recognized (and output) during execution,
- * and positive if bc size may increase for this span further
- * based on the new negative and positive thresholds returned.
- * \note May store to bytecode updated expressions.
- */
- int (*expand) (yasm_bytecode *bc, int span, long old_val, long new_val,
- /*@out@*/ long *neg_thres, /*@out@*/ long *pos_thres);
-
- /** Convert a bytecode into its byte representation.
- * Called from yasm_bc_tobytes().
- * A generic fill-in for this is yasm_bc_tobytes_common(), but as this
- * function internal errors when called, be very careful when using it!
- * \param bc bytecode
- * \param bufp byte representation destination buffer;
- * should be incremented as it's written to,
- * so that on return its delta from the
- * passed-in buf matches the bytecode length
- * (it's okay not to do this if an error
- * indication is returned)
- * \param bufstart For calculating the correct offset parameter for
- * the \a output_value calls: *bufp - bufstart.
- * \param d data to pass to each call to
- * output_value/output_reloc
- * \param output_value function to call to convert values into their byte
- * representation
- * \param output_reloc function to call to output relocation entries
- * for a single sym
- * \return Nonzero on error, 0 on success.
- * \note May result in non-reversible changes to the bytecode, but it's
- * preferable if calling this function twice would result in the
- * same output.
- */
- int (*tobytes) (yasm_bytecode *bc, unsigned char **bufp,
- unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- /*@null@*/ yasm_output_reloc_func output_reloc);
-
- /** Special bytecode classifications. Most bytecode types should use
- * #YASM_BC_SPECIAL_NONE. Others cause special handling to kick in
- * in various parts of yasm.
- */
- enum yasm_bytecode_special_type {
- YASM_BC_SPECIAL_NONE = 0,
-
- /** Bytecode reserves space instead of outputting data. */
- YASM_BC_SPECIAL_RESERVE,
-
- /** Adjusts offset instead of calculating len. */
- YASM_BC_SPECIAL_OFFSET,
-
- /** Instruction bytecode. */
- YASM_BC_SPECIAL_INSN
- } special;
-} yasm_bytecode_callback;
-
-/** A bytecode. */
-struct yasm_bytecode {
- /** Bytecodes are stored as a singly linked list, with tail insertion.
- * \see section.h (#yasm_section).
- */
- /*@reldef@*/ STAILQ_ENTRY(yasm_bytecode) link;
-
- /** The bytecode callback structure for this bytecode. May be NULL
- * during partial initialization.
- */
- /*@null@*/ const yasm_bytecode_callback *callback;
-
- /** Pointer to section containing bytecode; NULL if not part of a
- * section.
- */
- /*@dependent@*/ /*@null@*/ yasm_section *section;
-
- /** Number of times bytecode is repeated.
- * NULL=1 (to save space in the common case).
- */
- /*@only@*/ /*@null@*/ yasm_expr *multiple;
-
- /** Total length of entire bytecode (not including multiple copies). */
- unsigned long len;
-
- /** Number of copies, integer version. */
- long mult_int;
-
- /** Line number where bytecode was defined. */
- unsigned long line;
-
- /** Offset of bytecode from beginning of its section.
- * 0-based, ~0UL (e.g. all 1 bits) if unknown.
- */
- unsigned long offset;
-
- /** Unique integer index of bytecode. Used during optimization. */
- unsigned long bc_index;
-
- /** NULL-terminated array of labels that point to this bytecode (as the
- * bytecode previous to the label). NULL if no labels point here.
- */
- /*@null@*/ yasm_symrec **symrecs;
-
- /** Implementation-specific data (type identified by callback). */
- void *contents;
-};
-
-/** Create a bytecode of any specified type.
- * \param callback bytecode callback functions, if NULL, creates empty
- * bytecode (may not be resolved or output)
- * \param contents type-specific data
- * \param line virtual line (from yasm_linemap)
- * \return Newly allocated bytecode of the specified type.
- */
-YASM_LIB_DECL
-/*@only@*/ yasm_bytecode *yasm_bc_create_common
- (/*@null@*/ const yasm_bytecode_callback *callback,
- /*@only@*/ /*@null@*/ void *contents, unsigned long line);
-
-/** Transform a bytecode of any type into a different type.
- * \param bc bytecode to transform
- * \param callback new bytecode callback function
- * \param contents new type-specific data
- */
-YASM_LIB_DECL
-void yasm_bc_transform(yasm_bytecode *bc,
- const yasm_bytecode_callback *callback,
- void *contents);
-
-/** Common bytecode callback finalize function, for where no finalization
- * is ever required for this type of bytecode.
- */
-YASM_LIB_DECL
-void yasm_bc_finalize_common(yasm_bytecode *bc, yasm_bytecode *prev_bc);
-
-/** Common bytecode callback calc_len function, for where the bytecode has
- * no calculatable length. Causes an internal error if called.
- */
-YASM_LIB_DECL
-int yasm_bc_calc_len_common(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
- void *add_span_data);
-
-/** Common bytecode callback expand function, for where the bytecode is
- * always short (calc_len never calls add_span). Causes an internal
- * error if called.
- */
-YASM_LIB_DECL
-int yasm_bc_expand_common
- (yasm_bytecode *bc, int span, long old_val, long new_val,
- /*@out@*/ long *neg_thres, /*@out@*/ long *pos_thres);
-
-/** Common bytecode callback tobytes function, for where the bytecode
- * cannot be converted to bytes. Causes an internal error if called.
- */
-YASM_LIB_DECL
-int yasm_bc_tobytes_common
- (yasm_bytecode *bc, unsigned char **bufp, unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- /*@null@*/ yasm_output_reloc_func output_reloc);
-
-/** Get the next bytecode in a linked list of bytecodes.
- * \param bc bytecode
- * \return Next bytecode.
- */
-#define yasm_bc__next(bc) STAILQ_NEXT(bc, link)
-
-/** Set multiple field of a bytecode.
- * A bytecode can be repeated a number of times when output. This function
- * sets that multiple.
- * \param bc bytecode
- * \param e multiple (kept, do not free)
- */
-YASM_LIB_DECL
-void yasm_bc_set_multiple(yasm_bytecode *bc, /*@keep@*/ yasm_expr *e);
-
-/** Create a bytecode containing data value(s).
- * \param datahead list of data values (kept, do not free)
- * \param size storage size (in bytes) for each data value
- * \param append_zero append a single zero byte after each data value
- * (if non-zero)
- * \param arch architecture (optional); if provided, data items
- * are directly simplified to bytes if possible
- * \param line virtual line (from yasm_linemap)
- * \return Newly allocated bytecode.
- */
-YASM_LIB_DECL
-/*@only@*/ yasm_bytecode *yasm_bc_create_data
- (yasm_datavalhead *datahead, unsigned int size, int append_zero,
- /*@null@*/ yasm_arch *arch, unsigned long line);
-
-/** Create a bytecode containing LEB128-encoded data value(s).
- * \param datahead list of data values (kept, do not free)
- * \param sign signedness (1=signed, 0=unsigned) of each data value
- * \param line virtual line (from yasm_linemap)
- * \return Newly allocated bytecode.
- */
-YASM_LIB_DECL
-/*@only@*/ yasm_bytecode *yasm_bc_create_leb128
- (yasm_datavalhead *datahead, int sign, unsigned long line);
-
-/** Create a bytecode reserving space.
- * \param numitems number of reserve "items" (kept, do not free)
- * \param itemsize reserved size (in bytes) for each item
- * \param line virtual line (from yasm_linemap)
- * \return Newly allocated bytecode.
- */
-YASM_LIB_DECL
-/*@only@*/ yasm_bytecode *yasm_bc_create_reserve
- (/*@only@*/ yasm_expr *numitems, unsigned int itemsize,
- unsigned long line);
-
-/** Get the number of items and itemsize for a reserve bytecode. If bc
- * is not a reserve bytecode, returns NULL.
- * \param bc bytecode
- * \param itemsize reserved size (in bytes) for each item (returned)
- * \return NULL if bc is not a reserve bytecode, otherwise an expression
- * for the number of items to reserve.
- */
-YASM_LIB_DECL
-/*@null@*/ const yasm_expr *yasm_bc_reserve_numitems
- (yasm_bytecode *bc, /*@out@*/ unsigned int *itemsize);
-
-/** Create a bytecode that includes a binary file verbatim.
- * \param filename path to binary file (kept, do not free)
- * \param start starting location in file (in bytes) to read data from
- * (kept, do not free); may be NULL to indicate 0
- * \param maxlen maximum number of bytes to read from the file (kept, do
- * do not free); may be NULL to indicate no maximum
- * \param linemap line mapping repository
- * \param line virtual line (from yasm_linemap) for the bytecode
- * \return Newly allocated bytecode.
- */
-YASM_LIB_DECL
-/*@only@*/ yasm_bytecode *yasm_bc_create_incbin
- (/*@only@*/ char *filename, /*@only@*/ /*@null@*/ yasm_expr *start,
- /*@only@*/ /*@null@*/ yasm_expr *maxlen, yasm_linemap *linemap,
- unsigned long line);
-
-/** Create a bytecode that aligns the following bytecode to a boundary.
- * \param boundary byte alignment (must be a power of two)
- * \param fill fill data (if NULL, code_fill or 0 is used)
- * \param maxskip maximum number of bytes to skip
- * \param code_fill code fill data (if NULL, 0 is used)
- * \param line virtual line (from yasm_linemap)
- * \return Newly allocated bytecode.
- * \note The precedence on generated fill is as follows:
- * - from fill parameter (if not NULL)
- * - from code_fill parameter (if not NULL)
- * - 0
- */
-YASM_LIB_DECL
-/*@only@*/ yasm_bytecode *yasm_bc_create_align
- (/*@keep@*/ yasm_expr *boundary, /*@keep@*/ /*@null@*/ yasm_expr *fill,
- /*@keep@*/ /*@null@*/ yasm_expr *maxskip,
- /*@null@*/ const unsigned char **code_fill, unsigned long line);
-
-/** Create a bytecode that puts the following bytecode at a fixed section
- * offset.
- * \param start section offset of following bytecode
- * \param fill fill value
- * \param line virtual line (from yasm_linemap)
- * \return Newly allocated bytecode.
- */
-YASM_LIB_DECL
-/*@only@*/ yasm_bytecode *yasm_bc_create_org
- (unsigned long start, unsigned long fill, unsigned long line);
-
-/** Get the section that contains a particular bytecode.
- * \param bc bytecode
- * \return Section containing bc (can be NULL if bytecode is not part of a
- * section).
- */
-YASM_LIB_DECL
-/*@dependent@*/ /*@null@*/ yasm_section *yasm_bc_get_section
- (yasm_bytecode *bc);
-
-/** Add to the list of symrecs that reference a bytecode. For symrec use
- * only.
- * \param bc bytecode
- * \param sym symbol
- */
-YASM_LIB_DECL
-void yasm_bc__add_symrec(yasm_bytecode *bc, /*@dependent@*/ yasm_symrec *sym);
-
-/** Delete (free allocated memory for) a bytecode.
- * \param bc bytecode (only pointer to it); may be NULL
- */
-YASM_LIB_DECL
-void yasm_bc_destroy(/*@only@*/ /*@null@*/ yasm_bytecode *bc);
-
-/** Print a bytecode. For debugging purposes.
- * \param f file
- * \param indent_level indentation level
- * \param bc bytecode
- */
-YASM_LIB_DECL
-void yasm_bc_print(const yasm_bytecode *bc, FILE *f, int indent_level);
-
-/** Finalize a bytecode after parsing.
- * \param bc bytecode
- * \param prev_bc bytecode directly preceding bc in a list of bytecodes
- */
-YASM_LIB_DECL
-void yasm_bc_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc);
-
-/** Determine the distance between the starting offsets of two bytecodes.
- * \param precbc1 preceding bytecode to the first bytecode
- * \param precbc2 preceding bytecode to the second bytecode
- * \return Distance in bytes between the two bytecodes (bc2-bc1), or NULL if
- * the distance was indeterminate.
- * \warning Only valid /after/ optimization.
- */
-YASM_LIB_DECL
-/*@null@*/ /*@only@*/ yasm_intnum *yasm_calc_bc_dist
- (yasm_bytecode *precbc1, yasm_bytecode *precbc2);
-
-/** Get the offset of the next bytecode (the next bytecode doesn't have to
- * actually exist).
- * \param precbc preceding bytecode
- * \return Offset of the next bytecode in bytes.
- * \warning Only valid /after/ optimization.
- */
-YASM_LIB_DECL
-unsigned long yasm_bc_next_offset(yasm_bytecode *precbc);
-
-/** Return elemens size of a data bytecode.
- * Returns the size of each elements of a data bytecode, for proper dereference
- * of symbols attached to it.
- * \param bc bytecode
- * \return 0 if element size is unknown
- */
-YASM_LIB_DECL
-int yasm_bc_elem_size(yasm_bytecode *bc);
-
-/** Resolve EQUs in a bytecode and calculate its minimum size.
- * Generates dependent bytecode spans for cases where, if the length spanned
- * increases, it could cause the bytecode size to increase.
- * Any bytecode multiple is NOT included in the length or spans generation;
- * this must be handled at a higher level.
- * \param bc bytecode
- * \param add_span function to call to add a span
- * \param add_span_data extra data to be passed to add_span function
- * \return 0 if no error occurred, nonzero if there was an error recognized
- * (and output) during execution.
- * \note May store to bytecode updated expressions and the short length.
- */
-YASM_LIB_DECL
-int yasm_bc_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
- void *add_span_data);
-
-/** Recalculate a bytecode's length based on an expanded span length.
- * \param bc bytecode
- * \param span span ID (as given to yasm_bc_add_span_func in
- * yasm_bc_calc_len)
- * \param old_val previous span value
- * \param new_val new span value
- * \param neg_thres negative threshold for long/short decision (returned)
- * \param pos_thres positive threshold for long/short decision (returned)
- * \return 0 if bc no longer dependent on this span's length, negative if
- * there was an error recognized (and output) during execution, and
- * positive if bc size may increase for this span further based on the
- * new negative and positive thresholds returned.
- * \note May store to bytecode updated expressions and the updated length.
- */
-YASM_LIB_DECL
-int yasm_bc_expand(yasm_bytecode *bc, int span, long old_val, long new_val,
- /*@out@*/ long *neg_thres, /*@out@*/ long *pos_thres);
-
-/** Convert a bytecode into its byte representation.
- * \param bc bytecode
- * \param buf byte representation destination buffer
- * \param bufsize size of buf (in bytes) prior to call; size of the
- * generated data after call
- * \param gap if nonzero, indicates the data does not really need to
- * exist in the object file; if nonzero, contents of buf
- * are undefined [output]
- * \param d data to pass to each call to output_value/output_reloc
- * \param output_value function to call to convert values into their byte
- * representation
- * \param output_reloc function to call to output relocation entries
- * for a single sym
- * \return Newly allocated buffer that should be used instead of buf for
- * reading the byte representation, or NULL if buf was big enough to
- * hold the entire byte representation.
- * \note Calling twice on the same bytecode may \em not produce the same
- * results on the second call, as calling this function may result in
- * non-reversible changes to the bytecode.
- */
-YASM_LIB_DECL
-/*@null@*/ /*@only@*/ unsigned char *yasm_bc_tobytes
- (yasm_bytecode *bc, unsigned char *buf, unsigned long *bufsize,
- /*@out@*/ int *gap, void *d, yasm_output_value_func output_value,
- /*@null@*/ yasm_output_reloc_func output_reloc)
- /*@sets *buf@*/;
-
-/** Get the bytecode multiple value as an integer.
- * \param bc bytecode
- * \param multiple multiple value (output)
- * \param calc_bc_dist nonzero if distances between bytecodes should be
- * calculated, 0 if error should be returned in this case
- * \return 1 on error (set with yasm_error_set), 0 on success.
- */
-YASM_LIB_DECL
-int yasm_bc_get_multiple(yasm_bytecode *bc, /*@out@*/ long *multiple,
- int calc_bc_dist);
-
-/** Get the bytecode multiple value as an expression.
- * \param bc bytecode
- * \return Bytecode multiple, NULL if =1.
- */
-YASM_LIB_DECL
-const yasm_expr *yasm_bc_get_multiple_expr(const yasm_bytecode *bc);
-
-/** Get a #yasm_insn structure from an instruction bytecode (if possible).
- * \param bc bytecode
- * \return Instruction details if bytecode is an instruction bytecode,
- * otherwise NULL.
- */
-YASM_LIB_DECL
-/*@dependent@*/ /*@null@*/ yasm_insn *yasm_bc_get_insn(yasm_bytecode *bc);
-
-/** Create a new data value from an expression.
- * \param expn expression
- * \return Newly allocated data value.
- */
-YASM_LIB_DECL
-yasm_dataval *yasm_dv_create_expr(/*@keep@*/ yasm_expr *expn);
-
-/** Create a new data value from a string.
- * \param contents string (may contain NULs)
- * \param len length of string
- * \return Newly allocated data value.
- */
-YASM_LIB_DECL
-yasm_dataval *yasm_dv_create_string(/*@keep@*/ char *contents, size_t len);
-
-/** Create a new data value from raw bytes data.
- * \param contents raw data (may contain NULs)
- * \param len length
- * \return Newly allocated data value.
- */
-YASM_LIB_DECL
-yasm_dataval *yasm_dv_create_raw(/*@keep@*/ unsigned char *contents,
- unsigned long len);
-
-/** Create a new uninitialized data value.
- * \return Newly allocated data value.
- */
-YASM_LIB_DECL
-yasm_dataval *yasm_dv_create_reserve(void);
-
-#ifndef YASM_DOXYGEN
-#define yasm_dv_create_string(s, l) yasm_dv_create_raw((unsigned char *)(s), \
- (unsigned long)(l))
-#endif
-
-/** Get the underlying value of a data value.
- * \param dv data value
- * \return Value, or null if non-value (e.g. string or raw).
- */
-YASM_LIB_DECL
-yasm_value *yasm_dv_get_value(yasm_dataval *dv);
-
-/** Set multiple field of a data value.
- * A data value can be repeated a number of times when output. This function
- * sets that multiple.
- * \param dv data value
- * \param e multiple (kept, do not free)
- */
-YASM_LIB_DECL
-void yasm_dv_set_multiple(yasm_dataval *dv, /*@keep@*/ yasm_expr *e);
-
-/** Get the data value multiple value as an unsigned long integer.
- * \param dv data value
- * \param multiple multiple value (output)
- * \return 1 on error (set with yasm_error_set), 0 on success.
- */
-YASM_LIB_DECL
-int yasm_dv_get_multiple(yasm_dataval *dv, /*@out@*/ unsigned long *multiple);
-
-/** Initialize a list of data values.
- * \param headp list of data values
- */
-void yasm_dvs_initialize(yasm_datavalhead *headp);
-#ifndef YASM_DOXYGEN
-#define yasm_dvs_initialize(headp) STAILQ_INIT(headp)
-#endif
-
-/** Delete (free allocated memory for) a list of data values.
- * \param headp list of data values
- */
-YASM_LIB_DECL
-void yasm_dvs_delete(yasm_datavalhead *headp);
-
-/** Add data value to the end of a list of data values.
- * \note Does not make a copy of the data value; so don't pass this function
- * static or local variables, and discard the dv pointer after calling
- * this function.
- * \param headp data value list
- * \param dv data value (may be NULL)
- * \return If data value was actually appended (it wasn't NULL), the data
- * value; otherwise NULL.
- */
-YASM_LIB_DECL
-/*@null@*/ yasm_dataval *yasm_dvs_append
- (yasm_datavalhead *headp, /*@returned@*/ /*@null@*/ yasm_dataval *dv);
-
-/** Print a data value list. For debugging purposes.
- * \param f file
- * \param indent_level indentation level
- * \param headp data value list
- */
-YASM_LIB_DECL
-void yasm_dvs_print(const yasm_datavalhead *headp, FILE *f, int indent_level);
-
-#endif
+/**
+ * \file libyasm/bytecode.h
+ * \brief YASM bytecode interface.
+ *
+ * \license
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * - Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ * \endlicense
+ */
+#ifndef YASM_BYTECODE_H
+#define YASM_BYTECODE_H
+
+#ifndef YASM_LIB_DECL
+#define YASM_LIB_DECL
+#endif
+
+/** A data value (opaque type). */
+typedef struct yasm_dataval yasm_dataval;
+/** A list of data values. */
+typedef struct yasm_datavalhead yasm_datavalhead;
+
+/** Linked list of data values. */
+/*@reldef@*/ STAILQ_HEAD(yasm_datavalhead, yasm_dataval);
+
+/** Add a dependent span for a bytecode.
+ * \param add_span_data add_span_data passed into bc_calc_len()
+ * \param bc bytecode containing span
+ * \param id non-zero identifier for span; may be any non-zero value
+ * if <0, expand is called for any change;
+ * if >0, expand is only called when exceeds threshold
+ * \param value dependent value for bytecode expansion
+ * \param neg_thres negative threshold for long/short decision
+ * \param pos_thres positive threshold for long/short decision
+ */
+typedef void (*yasm_bc_add_span_func)
+ (void *add_span_data, yasm_bytecode *bc, int id, const yasm_value *value,
+ long neg_thres, long pos_thres);
+
+/** Bytecode callback structure. Any implementation of a specific bytecode
+ * must implement these functions and this callback structure. The bytecode
+ * implementation-specific data is stored in #yasm_bytecode.contents.
+ */
+typedef struct yasm_bytecode_callback {
+ /** Destroys the implementation-specific data.
+ * Called from yasm_bc_destroy().
+ * \param contents #yasm_bytecode.contents
+ */
+ void (*destroy) (/*@only@*/ void *contents);
+
+ /** Prints the implementation-specific data (for debugging purposes).
+ * Called from yasm_bc_print().
+ * \param contents #yasm_bytecode.contents
+ * \param f file
+ * \param indent_level indentation level
+ */
+ void (*print) (const void *contents, FILE *f, int indent_level);
+
+ /** Finalizes the bytecode after parsing. Called from yasm_bc_finalize().
+ * A generic fill-in for this is yasm_bc_finalize_common().
+ * \param bc bytecode
+ * \param prev_bc bytecode directly preceding bc
+ */
+ void (*finalize) (yasm_bytecode *bc, yasm_bytecode *prev_bc);
+
+ /** Return elements size of a data bytecode.
+ * This function should return the size of each elements of a data
+ * bytecode, for proper dereference of symbols attached to it.
+ * \param bc bytecode
+ * \return 0 if element size is unknown.
+ */
+ int (*elem_size) (yasm_bytecode *bc);
+
+ /** Calculates the minimum size of a bytecode.
+ * Called from yasm_bc_calc_len().
+ * A generic fill-in for this is yasm_bc_calc_len_common(), but as this
+ * function internal errors when called, be very careful when using it!
+ * This function should simply add to bc->len and not set it directly
+ * (it's initialized by yasm_bc_calc_len() prior to passing control to
+ * this function).
+ *
+ * \param bc bytecode
+ * \param add_span function to call to add a span
+ * \param add_span_data extra data to be passed to add_span function
+ * \return 0 if no error occurred, nonzero if there was an error
+ * recognized (and output) during execution.
+ * \note May store to bytecode updated expressions.
+ */
+ int (*calc_len) (yasm_bytecode *bc, yasm_bc_add_span_func add_span,
+ void *add_span_data);
+
+ /** Recalculates the bytecode's length based on an expanded span length.
+ * Called from yasm_bc_expand().
+ * A generic fill-in for this is yasm_bc_expand_common(), but as this
+ * function internal errors when called, if used, ensure that calc_len()
+ * never adds a span.
+ * This function should simply add to bc->len to increase the length by
+ * a delta amount.
+ * \param bc bytecode
+ * \param span span ID (as given to add_span in calc_len)
+ * \param old_val previous span value
+ * \param new_val new span value
+ * \param neg_thres negative threshold for long/short decision
+ * (returned)
+ * \param pos_thres positive threshold for long/short decision
+ * (returned)
+ * \return 0 if bc no longer dependent on this span's length, negative if
+ * there was an error recognized (and output) during execution,
+ * and positive if bc size may increase for this span further
+ * based on the new negative and positive thresholds returned.
+ * \note May store to bytecode updated expressions.
+ */
+ int (*expand) (yasm_bytecode *bc, int span, long old_val, long new_val,
+ /*@out@*/ long *neg_thres, /*@out@*/ long *pos_thres);
+
+ /** Convert a bytecode into its byte representation.
+ * Called from yasm_bc_tobytes().
+ * A generic fill-in for this is yasm_bc_tobytes_common(), but as this
+ * function internal errors when called, be very careful when using it!
+ * \param bc bytecode
+ * \param bufp byte representation destination buffer;
+ * should be incremented as it's written to,
+ * so that on return its delta from the
+ * passed-in buf matches the bytecode length
+ * (it's okay not to do this if an error
+ * indication is returned)
+ * \param bufstart For calculating the correct offset parameter for
+ * the \a output_value calls: *bufp - bufstart.
+ * \param d data to pass to each call to
+ * output_value/output_reloc
+ * \param output_value function to call to convert values into their byte
+ * representation
+ * \param output_reloc function to call to output relocation entries
+ * for a single sym
+ * \return Nonzero on error, 0 on success.
+ * \note May result in non-reversible changes to the bytecode, but it's
+ * preferable if calling this function twice would result in the
+ * same output.
+ */
+ int (*tobytes) (yasm_bytecode *bc, unsigned char **bufp,
+ unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ /*@null@*/ yasm_output_reloc_func output_reloc);
+
+ /** Special bytecode classifications. Most bytecode types should use
+ * #YASM_BC_SPECIAL_NONE. Others cause special handling to kick in
+ * in various parts of yasm.
+ */
+ enum yasm_bytecode_special_type {
+ YASM_BC_SPECIAL_NONE = 0,
+
+ /** Bytecode reserves space instead of outputting data. */
+ YASM_BC_SPECIAL_RESERVE,
+
+ /** Adjusts offset instead of calculating len. */
+ YASM_BC_SPECIAL_OFFSET,
+
+ /** Instruction bytecode. */
+ YASM_BC_SPECIAL_INSN
+ } special;
+} yasm_bytecode_callback;
+
+/** A bytecode. */
+struct yasm_bytecode {
+ /** Bytecodes are stored as a singly linked list, with tail insertion.
+ * \see section.h (#yasm_section).
+ */
+ /*@reldef@*/ STAILQ_ENTRY(yasm_bytecode) link;
+
+ /** The bytecode callback structure for this bytecode. May be NULL
+ * during partial initialization.
+ */
+ /*@null@*/ const yasm_bytecode_callback *callback;
+
+ /** Pointer to section containing bytecode; NULL if not part of a
+ * section.
+ */
+ /*@dependent@*/ /*@null@*/ yasm_section *section;
+
+ /** Number of times bytecode is repeated.
+ * NULL=1 (to save space in the common case).
+ */
+ /*@only@*/ /*@null@*/ yasm_expr *multiple;
+
+ /** Total length of entire bytecode (not including multiple copies). */
+ unsigned long len;
+
+ /** Number of copies, integer version. */
+ long mult_int;
+
+ /** Line number where bytecode was defined. */
+ unsigned long line;
+
+ /** Offset of bytecode from beginning of its section.
+ * 0-based, ~0UL (e.g. all 1 bits) if unknown.
+ */
+ unsigned long offset;
+
+ /** Unique integer index of bytecode. Used during optimization. */
+ unsigned long bc_index;
+
+ /** NULL-terminated array of labels that point to this bytecode (as the
+ * bytecode previous to the label). NULL if no labels point here.
+ */
+ /*@null@*/ yasm_symrec **symrecs;
+
+ /** Implementation-specific data (type identified by callback). */
+ void *contents;
+};
+
+/** Create a bytecode of any specified type.
+ * \param callback bytecode callback functions, if NULL, creates empty
+ * bytecode (may not be resolved or output)
+ * \param contents type-specific data
+ * \param line virtual line (from yasm_linemap)
+ * \return Newly allocated bytecode of the specified type.
+ */
+YASM_LIB_DECL
+/*@only@*/ yasm_bytecode *yasm_bc_create_common
+ (/*@null@*/ const yasm_bytecode_callback *callback,
+ /*@only@*/ /*@null@*/ void *contents, unsigned long line);
+
+/** Transform a bytecode of any type into a different type.
+ * \param bc bytecode to transform
+ * \param callback new bytecode callback function
+ * \param contents new type-specific data
+ */
+YASM_LIB_DECL
+void yasm_bc_transform(yasm_bytecode *bc,
+ const yasm_bytecode_callback *callback,
+ void *contents);
+
+/** Common bytecode callback finalize function, for where no finalization
+ * is ever required for this type of bytecode.
+ */
+YASM_LIB_DECL
+void yasm_bc_finalize_common(yasm_bytecode *bc, yasm_bytecode *prev_bc);
+
+/** Common bytecode callback calc_len function, for where the bytecode has
+ * no calculatable length. Causes an internal error if called.
+ */
+YASM_LIB_DECL
+int yasm_bc_calc_len_common(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
+ void *add_span_data);
+
+/** Common bytecode callback expand function, for where the bytecode is
+ * always short (calc_len never calls add_span). Causes an internal
+ * error if called.
+ */
+YASM_LIB_DECL
+int yasm_bc_expand_common
+ (yasm_bytecode *bc, int span, long old_val, long new_val,
+ /*@out@*/ long *neg_thres, /*@out@*/ long *pos_thres);
+
+/** Common bytecode callback tobytes function, for where the bytecode
+ * cannot be converted to bytes. Causes an internal error if called.
+ */
+YASM_LIB_DECL
+int yasm_bc_tobytes_common
+ (yasm_bytecode *bc, unsigned char **bufp, unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ /*@null@*/ yasm_output_reloc_func output_reloc);
+
+/** Get the next bytecode in a linked list of bytecodes.
+ * \param bc bytecode
+ * \return Next bytecode.
+ */
+#define yasm_bc__next(bc) STAILQ_NEXT(bc, link)
+
+/** Set multiple field of a bytecode.
+ * A bytecode can be repeated a number of times when output. This function
+ * sets that multiple.
+ * \param bc bytecode
+ * \param e multiple (kept, do not free)
+ */
+YASM_LIB_DECL
+void yasm_bc_set_multiple(yasm_bytecode *bc, /*@keep@*/ yasm_expr *e);
+
+/** Create a bytecode containing data value(s).
+ * \param datahead list of data values (kept, do not free)
+ * \param size storage size (in bytes) for each data value
+ * \param append_zero append a single zero byte after each data value
+ * (if non-zero)
+ * \param arch architecture (optional); if provided, data items
+ * are directly simplified to bytes if possible
+ * \param line virtual line (from yasm_linemap)
+ * \return Newly allocated bytecode.
+ */
+YASM_LIB_DECL
+/*@only@*/ yasm_bytecode *yasm_bc_create_data
+ (yasm_datavalhead *datahead, unsigned int size, int append_zero,
+ /*@null@*/ yasm_arch *arch, unsigned long line);
+
+/** Create a bytecode containing LEB128-encoded data value(s).
+ * \param datahead list of data values (kept, do not free)
+ * \param sign signedness (1=signed, 0=unsigned) of each data value
+ * \param line virtual line (from yasm_linemap)
+ * \return Newly allocated bytecode.
+ */
+YASM_LIB_DECL
+/*@only@*/ yasm_bytecode *yasm_bc_create_leb128
+ (yasm_datavalhead *datahead, int sign, unsigned long line);
+
+/** Create a bytecode reserving space.
+ * \param numitems number of reserve "items" (kept, do not free)
+ * \param itemsize reserved size (in bytes) for each item
+ * \param line virtual line (from yasm_linemap)
+ * \return Newly allocated bytecode.
+ */
+YASM_LIB_DECL
+/*@only@*/ yasm_bytecode *yasm_bc_create_reserve
+ (/*@only@*/ yasm_expr *numitems, unsigned int itemsize,
+ unsigned long line);
+
+/** Get the number of items and itemsize for a reserve bytecode. If bc
+ * is not a reserve bytecode, returns NULL.
+ * \param bc bytecode
+ * \param itemsize reserved size (in bytes) for each item (returned)
+ * \return NULL if bc is not a reserve bytecode, otherwise an expression
+ * for the number of items to reserve.
+ */
+YASM_LIB_DECL
+/*@null@*/ const yasm_expr *yasm_bc_reserve_numitems
+ (yasm_bytecode *bc, /*@out@*/ unsigned int *itemsize);
+
+/** Create a bytecode that includes a binary file verbatim.
+ * \param filename path to binary file (kept, do not free)
+ * \param start starting location in file (in bytes) to read data from
+ * (kept, do not free); may be NULL to indicate 0
+ * \param maxlen maximum number of bytes to read from the file (kept, do
+ * do not free); may be NULL to indicate no maximum
+ * \param linemap line mapping repository
+ * \param line virtual line (from yasm_linemap) for the bytecode
+ * \return Newly allocated bytecode.
+ */
+YASM_LIB_DECL
+/*@only@*/ yasm_bytecode *yasm_bc_create_incbin
+ (/*@only@*/ char *filename, /*@only@*/ /*@null@*/ yasm_expr *start,
+ /*@only@*/ /*@null@*/ yasm_expr *maxlen, yasm_linemap *linemap,
+ unsigned long line);
+
+/** Create a bytecode that aligns the following bytecode to a boundary.
+ * \param boundary byte alignment (must be a power of two)
+ * \param fill fill data (if NULL, code_fill or 0 is used)
+ * \param maxskip maximum number of bytes to skip
+ * \param code_fill code fill data (if NULL, 0 is used)
+ * \param line virtual line (from yasm_linemap)
+ * \return Newly allocated bytecode.
+ * \note The precedence on generated fill is as follows:
+ * - from fill parameter (if not NULL)
+ * - from code_fill parameter (if not NULL)
+ * - 0
+ */
+YASM_LIB_DECL
+/*@only@*/ yasm_bytecode *yasm_bc_create_align
+ (/*@keep@*/ yasm_expr *boundary, /*@keep@*/ /*@null@*/ yasm_expr *fill,
+ /*@keep@*/ /*@null@*/ yasm_expr *maxskip,
+ /*@null@*/ const unsigned char **code_fill, unsigned long line);
+
+/** Create a bytecode that puts the following bytecode at a fixed section
+ * offset.
+ * \param start section offset of following bytecode
+ * \param fill fill value
+ * \param line virtual line (from yasm_linemap)
+ * \return Newly allocated bytecode.
+ */
+YASM_LIB_DECL
+/*@only@*/ yasm_bytecode *yasm_bc_create_org
+ (unsigned long start, unsigned long fill, unsigned long line);
+
+/** Get the section that contains a particular bytecode.
+ * \param bc bytecode
+ * \return Section containing bc (can be NULL if bytecode is not part of a
+ * section).
+ */
+YASM_LIB_DECL
+/*@dependent@*/ /*@null@*/ yasm_section *yasm_bc_get_section
+ (yasm_bytecode *bc);
+
+/** Add to the list of symrecs that reference a bytecode. For symrec use
+ * only.
+ * \param bc bytecode
+ * \param sym symbol
+ */
+YASM_LIB_DECL
+void yasm_bc__add_symrec(yasm_bytecode *bc, /*@dependent@*/ yasm_symrec *sym);
+
+/** Delete (free allocated memory for) a bytecode.
+ * \param bc bytecode (only pointer to it); may be NULL
+ */
+YASM_LIB_DECL
+void yasm_bc_destroy(/*@only@*/ /*@null@*/ yasm_bytecode *bc);
+
+/** Print a bytecode. For debugging purposes.
+ * \param f file
+ * \param indent_level indentation level
+ * \param bc bytecode
+ */
+YASM_LIB_DECL
+void yasm_bc_print(const yasm_bytecode *bc, FILE *f, int indent_level);
+
+/** Finalize a bytecode after parsing.
+ * \param bc bytecode
+ * \param prev_bc bytecode directly preceding bc in a list of bytecodes
+ */
+YASM_LIB_DECL
+void yasm_bc_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc);
+
+/** Determine the distance between the starting offsets of two bytecodes.
+ * \param precbc1 preceding bytecode to the first bytecode
+ * \param precbc2 preceding bytecode to the second bytecode
+ * \return Distance in bytes between the two bytecodes (bc2-bc1), or NULL if
+ * the distance was indeterminate.
+ * \warning Only valid /after/ optimization.
+ */
+YASM_LIB_DECL
+/*@null@*/ /*@only@*/ yasm_intnum *yasm_calc_bc_dist
+ (yasm_bytecode *precbc1, yasm_bytecode *precbc2);
+
+/** Get the offset of the next bytecode (the next bytecode doesn't have to
+ * actually exist).
+ * \param precbc preceding bytecode
+ * \return Offset of the next bytecode in bytes.
+ * \warning Only valid /after/ optimization.
+ */
+YASM_LIB_DECL
+unsigned long yasm_bc_next_offset(yasm_bytecode *precbc);
+
+/** Return elemens size of a data bytecode.
+ * Returns the size of each elements of a data bytecode, for proper dereference
+ * of symbols attached to it.
+ * \param bc bytecode
+ * \return 0 if element size is unknown
+ */
+YASM_LIB_DECL
+int yasm_bc_elem_size(yasm_bytecode *bc);
+
+/** Resolve EQUs in a bytecode and calculate its minimum size.
+ * Generates dependent bytecode spans for cases where, if the length spanned
+ * increases, it could cause the bytecode size to increase.
+ * Any bytecode multiple is NOT included in the length or spans generation;
+ * this must be handled at a higher level.
+ * \param bc bytecode
+ * \param add_span function to call to add a span
+ * \param add_span_data extra data to be passed to add_span function
+ * \return 0 if no error occurred, nonzero if there was an error recognized
+ * (and output) during execution.
+ * \note May store to bytecode updated expressions and the short length.
+ */
+YASM_LIB_DECL
+int yasm_bc_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
+ void *add_span_data);
+
+/** Recalculate a bytecode's length based on an expanded span length.
+ * \param bc bytecode
+ * \param span span ID (as given to yasm_bc_add_span_func in
+ * yasm_bc_calc_len)
+ * \param old_val previous span value
+ * \param new_val new span value
+ * \param neg_thres negative threshold for long/short decision (returned)
+ * \param pos_thres positive threshold for long/short decision (returned)
+ * \return 0 if bc no longer dependent on this span's length, negative if
+ * there was an error recognized (and output) during execution, and
+ * positive if bc size may increase for this span further based on the
+ * new negative and positive thresholds returned.
+ * \note May store to bytecode updated expressions and the updated length.
+ */
+YASM_LIB_DECL
+int yasm_bc_expand(yasm_bytecode *bc, int span, long old_val, long new_val,
+ /*@out@*/ long *neg_thres, /*@out@*/ long *pos_thres);
+
+/** Convert a bytecode into its byte representation.
+ * \param bc bytecode
+ * \param buf byte representation destination buffer
+ * \param bufsize size of buf (in bytes) prior to call; size of the
+ * generated data after call
+ * \param gap if nonzero, indicates the data does not really need to
+ * exist in the object file; if nonzero, contents of buf
+ * are undefined [output]
+ * \param d data to pass to each call to output_value/output_reloc
+ * \param output_value function to call to convert values into their byte
+ * representation
+ * \param output_reloc function to call to output relocation entries
+ * for a single sym
+ * \return Newly allocated buffer that should be used instead of buf for
+ * reading the byte representation, or NULL if buf was big enough to
+ * hold the entire byte representation.
+ * \note Calling twice on the same bytecode may \em not produce the same
+ * results on the second call, as calling this function may result in
+ * non-reversible changes to the bytecode.
+ */
+YASM_LIB_DECL
+/*@null@*/ /*@only@*/ unsigned char *yasm_bc_tobytes
+ (yasm_bytecode *bc, unsigned char *buf, unsigned long *bufsize,
+ /*@out@*/ int *gap, void *d, yasm_output_value_func output_value,
+ /*@null@*/ yasm_output_reloc_func output_reloc)
+ /*@sets *buf@*/;
+
+/** Get the bytecode multiple value as an integer.
+ * \param bc bytecode
+ * \param multiple multiple value (output)
+ * \param calc_bc_dist nonzero if distances between bytecodes should be
+ * calculated, 0 if error should be returned in this case
+ * \return 1 on error (set with yasm_error_set), 0 on success.
+ */
+YASM_LIB_DECL
+int yasm_bc_get_multiple(yasm_bytecode *bc, /*@out@*/ long *multiple,
+ int calc_bc_dist);
+
+/** Get the bytecode multiple value as an expression.
+ * \param bc bytecode
+ * \return Bytecode multiple, NULL if =1.
+ */
+YASM_LIB_DECL
+const yasm_expr *yasm_bc_get_multiple_expr(const yasm_bytecode *bc);
+
+/** Get a #yasm_insn structure from an instruction bytecode (if possible).
+ * \param bc bytecode
+ * \return Instruction details if bytecode is an instruction bytecode,
+ * otherwise NULL.
+ */
+YASM_LIB_DECL
+/*@dependent@*/ /*@null@*/ yasm_insn *yasm_bc_get_insn(yasm_bytecode *bc);
+
+/** Create a new data value from an expression.
+ * \param expn expression
+ * \return Newly allocated data value.
+ */
+YASM_LIB_DECL
+yasm_dataval *yasm_dv_create_expr(/*@keep@*/ yasm_expr *expn);
+
+/** Create a new data value from a string.
+ * \param contents string (may contain NULs)
+ * \param len length of string
+ * \return Newly allocated data value.
+ */
+YASM_LIB_DECL
+yasm_dataval *yasm_dv_create_string(/*@keep@*/ char *contents, size_t len);
+
+/** Create a new data value from raw bytes data.
+ * \param contents raw data (may contain NULs)
+ * \param len length
+ * \return Newly allocated data value.
+ */
+YASM_LIB_DECL
+yasm_dataval *yasm_dv_create_raw(/*@keep@*/ unsigned char *contents,
+ unsigned long len);
+
+/** Create a new uninitialized data value.
+ * \return Newly allocated data value.
+ */
+YASM_LIB_DECL
+yasm_dataval *yasm_dv_create_reserve(void);
+
+#ifndef YASM_DOXYGEN
+#define yasm_dv_create_string(s, l) yasm_dv_create_raw((unsigned char *)(s), \
+ (unsigned long)(l))
+#endif
+
+/** Get the underlying value of a data value.
+ * \param dv data value
+ * \return Value, or null if non-value (e.g. string or raw).
+ */
+YASM_LIB_DECL
+yasm_value *yasm_dv_get_value(yasm_dataval *dv);
+
+/** Set multiple field of a data value.
+ * A data value can be repeated a number of times when output. This function
+ * sets that multiple.
+ * \param dv data value
+ * \param e multiple (kept, do not free)
+ */
+YASM_LIB_DECL
+void yasm_dv_set_multiple(yasm_dataval *dv, /*@keep@*/ yasm_expr *e);
+
+/** Get the data value multiple value as an unsigned long integer.
+ * \param dv data value
+ * \param multiple multiple value (output)
+ * \return 1 on error (set with yasm_error_set), 0 on success.
+ */
+YASM_LIB_DECL
+int yasm_dv_get_multiple(yasm_dataval *dv, /*@out@*/ unsigned long *multiple);
+
+/** Initialize a list of data values.
+ * \param headp list of data values
+ */
+void yasm_dvs_initialize(yasm_datavalhead *headp);
+#ifndef YASM_DOXYGEN
+#define yasm_dvs_initialize(headp) STAILQ_INIT(headp)
+#endif
+
+/** Delete (free allocated memory for) a list of data values.
+ * \param headp list of data values
+ */
+YASM_LIB_DECL
+void yasm_dvs_delete(yasm_datavalhead *headp);
+
+/** Add data value to the end of a list of data values.
+ * \note Does not make a copy of the data value; so don't pass this function
+ * static or local variables, and discard the dv pointer after calling
+ * this function.
+ * \param headp data value list
+ * \param dv data value (may be NULL)
+ * \return If data value was actually appended (it wasn't NULL), the data
+ * value; otherwise NULL.
+ */
+YASM_LIB_DECL
+/*@null@*/ yasm_dataval *yasm_dvs_append
+ (yasm_datavalhead *headp, /*@returned@*/ /*@null@*/ yasm_dataval *dv);
+
+/** Print a data value list. For debugging purposes.
+ * \param f file
+ * \param indent_level indentation level
+ * \param headp data value list
+ */
+YASM_LIB_DECL
+void yasm_dvs_print(const yasm_datavalhead *headp, FILE *f, int indent_level);
+
+#endif
diff --git a/contrib/tools/yasm/libyasm/cmake-module.c b/contrib/tools/yasm/libyasm/cmake-module.c
index 6ddf9e317f..2ee39ca88f 100644
--- a/contrib/tools/yasm/libyasm/cmake-module.c
+++ b/contrib/tools/yasm/libyasm/cmake-module.c
@@ -1,126 +1,126 @@
-/*
- * YASM module loader
- *
- * Copyright (C) 2004-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <libyasm.h>
-
-
-typedef struct loaded_module {
- const char *keyword; /* module keyword */
- void *data; /* associated data */
-} loaded_module;
-
-static HAMT *loaded_modules[] = {NULL, NULL, NULL, NULL, NULL, NULL};
-
-static void
-load_module_destroy(/*@only@*/ void *data)
-{
- /* do nothing */
-}
-
-void *
-yasm_load_module(yasm_module_type type, const char *keyword)
-{
- if (!loaded_modules[type])
- return NULL;
- return HAMT_search(loaded_modules[type], keyword);
-}
-
-void
-yasm_register_module(yasm_module_type type, const char *keyword, void *data)
-{
- int replace = 1;
-
- assert(type < sizeof(loaded_modules));
-
- if (!loaded_modules[type])
- loaded_modules[type] = HAMT_create(0, yasm_internal_error_);
-
- HAMT_insert(loaded_modules[type], keyword, data, &replace,
- load_module_destroy);
-}
-
-typedef struct {
- yasm_module_type type;
- void (*printfunc) (const char *name, const char *keyword);
-} list_one_data;
-
-static int
-yasm_list_one_module(void *node, void *d)
-{
- list_one_data *data = (list_one_data *)d;
- yasm_arch_module *arch;
- yasm_dbgfmt_module *dbgfmt;
- yasm_objfmt_module *objfmt;
- yasm_listfmt_module *listfmt;
- yasm_parser_module *parser;
- yasm_preproc_module *preproc;
-
- switch (data->type) {
- case YASM_MODULE_ARCH:
- arch = node;
- data->printfunc(arch->name, arch->keyword);
- break;
- case YASM_MODULE_DBGFMT:
- dbgfmt = node;
- data->printfunc(dbgfmt->name, dbgfmt->keyword);
- break;
- case YASM_MODULE_OBJFMT:
- objfmt = node;
- data->printfunc(objfmt->name, objfmt->keyword);
- break;
- case YASM_MODULE_LISTFMT:
- listfmt = node;
- data->printfunc(listfmt->name, listfmt->keyword);
- break;
- case YASM_MODULE_PARSER:
- parser = node;
- data->printfunc(parser->name, parser->keyword);
- break;
- case YASM_MODULE_PREPROC:
- preproc = node;
- data->printfunc(preproc->name, preproc->keyword);
- break;
- }
- return 0;
-}
-
-void
-yasm_list_modules(yasm_module_type type,
- void (*printfunc) (const char *name, const char *keyword))
-{
- list_one_data data;
-
- /* Go through available list, and try to load each one */
- if (!loaded_modules[type])
- return;
-
- data.type = type;
- data.printfunc = printfunc;
-
- HAMT_traverse(loaded_modules[type], &data, yasm_list_one_module);
-}
+/*
+ * YASM module loader
+ *
+ * Copyright (C) 2004-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <libyasm.h>
+
+
+typedef struct loaded_module {
+ const char *keyword; /* module keyword */
+ void *data; /* associated data */
+} loaded_module;
+
+static HAMT *loaded_modules[] = {NULL, NULL, NULL, NULL, NULL, NULL};
+
+static void
+load_module_destroy(/*@only@*/ void *data)
+{
+ /* do nothing */
+}
+
+void *
+yasm_load_module(yasm_module_type type, const char *keyword)
+{
+ if (!loaded_modules[type])
+ return NULL;
+ return HAMT_search(loaded_modules[type], keyword);
+}
+
+void
+yasm_register_module(yasm_module_type type, const char *keyword, void *data)
+{
+ int replace = 1;
+
+ assert(type < sizeof(loaded_modules));
+
+ if (!loaded_modules[type])
+ loaded_modules[type] = HAMT_create(0, yasm_internal_error_);
+
+ HAMT_insert(loaded_modules[type], keyword, data, &replace,
+ load_module_destroy);
+}
+
+typedef struct {
+ yasm_module_type type;
+ void (*printfunc) (const char *name, const char *keyword);
+} list_one_data;
+
+static int
+yasm_list_one_module(void *node, void *d)
+{
+ list_one_data *data = (list_one_data *)d;
+ yasm_arch_module *arch;
+ yasm_dbgfmt_module *dbgfmt;
+ yasm_objfmt_module *objfmt;
+ yasm_listfmt_module *listfmt;
+ yasm_parser_module *parser;
+ yasm_preproc_module *preproc;
+
+ switch (data->type) {
+ case YASM_MODULE_ARCH:
+ arch = node;
+ data->printfunc(arch->name, arch->keyword);
+ break;
+ case YASM_MODULE_DBGFMT:
+ dbgfmt = node;
+ data->printfunc(dbgfmt->name, dbgfmt->keyword);
+ break;
+ case YASM_MODULE_OBJFMT:
+ objfmt = node;
+ data->printfunc(objfmt->name, objfmt->keyword);
+ break;
+ case YASM_MODULE_LISTFMT:
+ listfmt = node;
+ data->printfunc(listfmt->name, listfmt->keyword);
+ break;
+ case YASM_MODULE_PARSER:
+ parser = node;
+ data->printfunc(parser->name, parser->keyword);
+ break;
+ case YASM_MODULE_PREPROC:
+ preproc = node;
+ data->printfunc(preproc->name, preproc->keyword);
+ break;
+ }
+ return 0;
+}
+
+void
+yasm_list_modules(yasm_module_type type,
+ void (*printfunc) (const char *name, const char *keyword))
+{
+ list_one_data data;
+
+ /* Go through available list, and try to load each one */
+ if (!loaded_modules[type])
+ return;
+
+ data.type = type;
+ data.printfunc = printfunc;
+
+ HAMT_traverse(loaded_modules[type], &data, yasm_list_one_module);
+}
diff --git a/contrib/tools/yasm/libyasm/compat-queue.h b/contrib/tools/yasm/libyasm/compat-queue.h
index bd0c930f69..da9eff4694 100644
--- a/contrib/tools/yasm/libyasm/compat-queue.h
+++ b/contrib/tools/yasm/libyasm/compat-queue.h
@@ -1,456 +1,456 @@
-/*
- * <sys/queue.h> implementation for systems that don't have it.
- *
- * Copyright (c) 1991, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)queue.h 8.5 (Berkeley) 8/20/94
- * $FreeBSD: src/sys/sys/queue.h,v 1.32.2.4 2001/03/31 03:33:39 hsu Exp $
- */
-
-#ifndef SYS_QUEUE_H
-#define SYS_QUEUE_H
-
-/*
- * This file defines four types of data structures: singly-linked lists,
- * singly-linked tail queues, lists and tail queues.
- *
- * A singly-linked list is headed by a single forward pointer. The elements
- * are singly linked for minimum space and pointer manipulation overhead at
- * the expense of O(n) removal for arbitrary elements. New elements can be
- * added to the list after an existing element or at the head of the list.
- * Elements being removed from the head of the list should use the explicit
- * macro for this purpose for optimum efficiency. A singly-linked list may
- * only be traversed in the forward direction. Singly-linked lists are ideal
- * for applications with large datasets and few or no removals or for
- * implementing a LIFO queue.
- *
- * A singly-linked tail queue is headed by a pair of pointers, one to the
- * head of the list and the other to the tail of the list. The elements are
- * singly linked for minimum space and pointer manipulation overhead at the
- * expense of O(n) removal for arbitrary elements. New elements can be added
- * to the list after an existing element, at the head of the list, or at the
- * end of the list. Elements being removed from the head of the tail queue
- * should use the explicit macro for this purpose for optimum efficiency.
- * A singly-linked tail queue may only be traversed in the forward direction.
- * Singly-linked tail queues are ideal for applications with large datasets
- * and few or no removals or for implementing a FIFO queue.
- *
- * A list is headed by a single forward pointer (or an array of forward
- * pointers for a hash table header). The elements are doubly linked
- * so that an arbitrary element can be removed without a need to
- * traverse the list. New elements can be added to the list before
- * or after an existing element or at the head of the list. A list
- * may only be traversed in the forward direction.
- *
- * A tail queue is headed by a pair of pointers, one to the head of the
- * list and the other to the tail of the list. The elements are doubly
- * linked so that an arbitrary element can be removed without a need to
- * traverse the list. New elements can be added to the list before or
- * after an existing element, at the head of the list, or at the end of
- * the list. A tail queue may be traversed in either direction.
- *
- * For details on the use of these macros, see the queue(3) manual page.
- *
- *
- * SLIST LIST STAILQ TAILQ
- * _HEAD + + + +
- * _HEAD_INITIALIZER + + + +
- * _ENTRY + + + +
- * _INIT + + + +
- * _EMPTY + + + +
- * _FIRST + + + +
- * _NEXT + + + +
- * _PREV - - - +
- * _LAST - - + +
- * _FOREACH + + + +
- * _FOREACH_SAFE + + + +
- * _FOREACH_REVERSE - - - +
- * _FOREACH_REVERSE_SAFE - - - +
- * _INSERT_HEAD + + + +
- * _INSERT_BEFORE - + - +
- * _INSERT_AFTER + + + +
- * _INSERT_TAIL - - + +
- * _CONCAT - - + +
- * _REMOVE_HEAD + - + -
- * _REMOVE + + + +
- *
- */
-
-/*
- * Singly-linked List declarations.
- */
-#define SLIST_HEAD(name, type) \
-struct name { \
- struct type *slh_first; /* first element */ \
-}
-
-#define SLIST_HEAD_INITIALIZER(head) \
- { NULL }
-
-#define SLIST_ENTRY(type) \
-struct { \
- struct type *sle_next; /* next element */ \
-}
-
-/*
- * Singly-linked List functions.
- */
-#define SLIST_EMPTY(head) ((head)->slh_first == NULL)
-
-#define SLIST_FIRST(head) ((head)->slh_first)
-
-#define SLIST_FOREACH(var, head, field) \
- for ((var) = SLIST_FIRST((head)); \
- (var); \
- (var) = SLIST_NEXT((var), field))
-
-#define SLIST_FOREACH_SAFE(var, head, field, tvar) \
- for ((var) = SLIST_FIRST((head)); \
- (var) && ((tvar) = SLIST_NEXT((var), field), 1); \
- (var) = (tvar))
-
-#define SLIST_FOREACH_PREVPTR(var, varp, head, field) \
- for ((varp) = &SLIST_FIRST((head)); \
- ((var) = *(varp)) != NULL; \
- (varp) = &SLIST_NEXT((var), field))
-
-#define SLIST_INIT(head) do { \
- SLIST_FIRST((head)) = NULL; \
-} while (0)
-
-#define SLIST_INSERT_AFTER(slistelm, elm, field) do { \
- SLIST_NEXT((elm), field) = SLIST_NEXT((slistelm), field); \
- SLIST_NEXT((slistelm), field) = (elm); \
-} while (0)
-
-#define SLIST_INSERT_HEAD(head, elm, field) do { \
- SLIST_NEXT((elm), field) = SLIST_FIRST((head)); \
- SLIST_FIRST((head)) = (elm); \
-} while (0)
-
-#define SLIST_NEXT(elm, field) ((elm)->field.sle_next)
-
-#define SLIST_REMOVE(head, elm, type, field) do { \
- if (SLIST_FIRST((head)) == (elm)) { \
- SLIST_REMOVE_HEAD((head), field); \
- } \
- else { \
- struct type *curelm = SLIST_FIRST((head)); \
- while (SLIST_NEXT(curelm, field) != (elm)) \
- curelm = SLIST_NEXT(curelm, field); \
- SLIST_NEXT(curelm, field) = \
- SLIST_NEXT(SLIST_NEXT(curelm, field), field); \
- } \
-} while (0)
-
-#define SLIST_REMOVE_HEAD(head, field) do { \
- SLIST_FIRST((head)) = SLIST_NEXT(SLIST_FIRST((head)), field); \
-} while (0)
-
-/*
- * Singly-linked Tail queue declarations.
- */
-#define STAILQ_HEAD(name, type) \
-struct name { \
- struct type *stqh_first;/* first element */ \
- struct type **stqh_last;/* addr of last next element */ \
-}
-
-#define STAILQ_HEAD_INITIALIZER(head) \
- { NULL, &(head).stqh_first }
-
-#define STAILQ_ENTRY(type) \
-struct { \
- struct type *stqe_next; /* next element */ \
-}
-
-/*
- * Singly-linked Tail queue functions.
- */
-#define STAILQ_CONCAT(head1, head2) do { \
- if (!STAILQ_EMPTY((head2))) { \
- *(head1)->stqh_last = (head2)->stqh_first; \
- (head1)->stqh_last = (head2)->stqh_last; \
- STAILQ_INIT((head2)); \
- } \
-} while (0)
-
-#define STAILQ_EMPTY(head) ((head)->stqh_first == NULL)
-
-#define STAILQ_FIRST(head) ((head)->stqh_first)
-
-#define STAILQ_FOREACH(var, head, field) \
- for((var) = STAILQ_FIRST((head)); \
- (var); \
- (var) = STAILQ_NEXT((var), field))
-
-
-#define STAILQ_FOREACH_SAFE(var, head, field, tvar) \
- for ((var) = STAILQ_FIRST((head)); \
- (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \
- (var) = (tvar))
-
-#define STAILQ_INIT(head) do { \
- STAILQ_FIRST((head)) = NULL; \
- (head)->stqh_last = &STAILQ_FIRST((head)); \
-} while (0)
-
-#define STAILQ_INSERT_AFTER(head, tqelm, elm, field) do { \
- if ((STAILQ_NEXT((elm), field) = STAILQ_NEXT((tqelm), field)) == NULL)\
- (head)->stqh_last = &STAILQ_NEXT((elm), field); \
- STAILQ_NEXT((tqelm), field) = (elm); \
-} while (0)
-
-#define STAILQ_INSERT_HEAD(head, elm, field) do { \
- if ((STAILQ_NEXT((elm), field) = STAILQ_FIRST((head))) == NULL) \
- (head)->stqh_last = &STAILQ_NEXT((elm), field); \
- STAILQ_FIRST((head)) = (elm); \
-} while (0)
-
-#define STAILQ_INSERT_TAIL(head, elm, field) do { \
- STAILQ_NEXT((elm), field) = NULL; \
- *(head)->stqh_last = (elm); \
- (head)->stqh_last = &STAILQ_NEXT((elm), field); \
-} while (0)
-
-#define STAILQ_LAST(head, type, field) \
- (STAILQ_EMPTY((head)) ? \
- NULL : \
- ((struct type *) \
- ((char *)((head)->stqh_last) - offsetof(struct type, field))))
-
-#define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next)
-
-#define STAILQ_REMOVE(head, elm, type, field) do { \
- if (STAILQ_FIRST((head)) == (elm)) { \
- STAILQ_REMOVE_HEAD((head), field); \
- } \
- else { \
- struct type *curelm = STAILQ_FIRST((head)); \
- while (STAILQ_NEXT(curelm, field) != (elm)) \
- curelm = STAILQ_NEXT(curelm, field); \
- if ((STAILQ_NEXT(curelm, field) = \
- STAILQ_NEXT(STAILQ_NEXT(curelm, field), field)) == NULL)\
- (head)->stqh_last = &STAILQ_NEXT((curelm), field);\
- } \
-} while (0)
-
-#define STAILQ_REMOVE_HEAD(head, field) do { \
- if ((STAILQ_FIRST((head)) = \
- STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL) \
- (head)->stqh_last = &STAILQ_FIRST((head)); \
-} while (0)
-
-#define STAILQ_REMOVE_HEAD_UNTIL(head, elm, field) do { \
- if ((STAILQ_FIRST((head)) = STAILQ_NEXT((elm), field)) == NULL) \
- (head)->stqh_last = &STAILQ_FIRST((head)); \
-} while (0)
-
-/*
- * List declarations.
- */
-#define LIST_HEAD(name, type) \
-struct name { \
- struct type *lh_first; /* first element */ \
-}
-
-#define LIST_HEAD_INITIALIZER(head) \
- { NULL }
-
-#define LIST_ENTRY(type) \
-struct { \
- struct type *le_next; /* next element */ \
- struct type **le_prev; /* address of previous next element */ \
-}
-
-/*
- * List functions.
- */
-
-#define LIST_EMPTY(head) ((head)->lh_first == NULL)
-
-#define LIST_FIRST(head) ((head)->lh_first)
-
-#define LIST_FOREACH(var, head, field) \
- for ((var) = LIST_FIRST((head)); \
- (var); \
- (var) = LIST_NEXT((var), field))
-
-#define LIST_FOREACH_SAFE(var, head, field, tvar) \
- for ((var) = LIST_FIRST((head)); \
- (var) && ((tvar) = LIST_NEXT((var), field), 1); \
- (var) = (tvar))
-
-#define LIST_INIT(head) do { \
- LIST_FIRST((head)) = NULL; \
-} while (0)
-
-#define LIST_INSERT_AFTER(listelm, elm, field) do { \
- if ((LIST_NEXT((elm), field) = LIST_NEXT((listelm), field)) != NULL)\
- LIST_NEXT((listelm), field)->field.le_prev = \
- &LIST_NEXT((elm), field); \
- LIST_NEXT((listelm), field) = (elm); \
- (elm)->field.le_prev = &LIST_NEXT((listelm), field); \
-} while (0)
-
-#define LIST_INSERT_BEFORE(listelm, elm, field) do { \
- (elm)->field.le_prev = (listelm)->field.le_prev; \
- LIST_NEXT((elm), field) = (listelm); \
- *(listelm)->field.le_prev = (elm); \
- (listelm)->field.le_prev = &LIST_NEXT((elm), field); \
-} while (0)
-
-#define LIST_INSERT_HEAD(head, elm, field) do { \
- if ((LIST_NEXT((elm), field) = LIST_FIRST((head))) != NULL) \
- LIST_FIRST((head))->field.le_prev = &LIST_NEXT((elm), field);\
- LIST_FIRST((head)) = (elm); \
- (elm)->field.le_prev = &LIST_FIRST((head)); \
-} while (0)
-
-#define LIST_NEXT(elm, field) ((elm)->field.le_next)
-
-#define LIST_REMOVE(elm, field) do { \
- if (LIST_NEXT((elm), field) != NULL) \
- LIST_NEXT((elm), field)->field.le_prev = \
- (elm)->field.le_prev; \
- *(elm)->field.le_prev = LIST_NEXT((elm), field); \
-} while (0)
-
-/*
- * Tail queue declarations.
- */
-#define TAILQ_HEAD(name, type) \
-struct name { \
- struct type *tqh_first; /* first element */ \
- struct type **tqh_last; /* addr of last next element */ \
-}
-
-#define TAILQ_HEAD_INITIALIZER(head) \
- { NULL, &(head).tqh_first }
-
-#define TAILQ_ENTRY(type) \
-struct { \
- struct type *tqe_next; /* next element */ \
- struct type **tqe_prev; /* address of previous next element */ \
-}
-
-/*
- * Tail queue functions.
- */
-#define TAILQ_CONCAT(head1, head2, field) do { \
- if (!TAILQ_EMPTY(head2)) { \
- *(head1)->tqh_last = (head2)->tqh_first; \
- (head2)->tqh_first->field.tqe_prev = (head1)->tqh_last; \
- (head1)->tqh_last = (head2)->tqh_last; \
- TAILQ_INIT((head2)); \
- } \
-} while (0)
-
-#define TAILQ_EMPTY(head) ((head)->tqh_first == NULL)
-
-#define TAILQ_FIRST(head) ((head)->tqh_first)
-
-#define TAILQ_FOREACH(var, head, field) \
- for ((var) = TAILQ_FIRST((head)); \
- (var); \
- (var) = TAILQ_NEXT((var), field))
-
-#define TAILQ_FOREACH_SAFE(var, head, field, tvar) \
- for ((var) = TAILQ_FIRST((head)); \
- (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \
- (var) = (tvar))
-
-#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \
- for ((var) = TAILQ_LAST((head), headname); \
- (var); \
- (var) = TAILQ_PREV((var), headname, field))
-
-#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \
- for ((var) = TAILQ_LAST((head), headname); \
- (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \
- (var) = (tvar))
-
-#define TAILQ_INIT(head) do { \
- TAILQ_FIRST((head)) = NULL; \
- (head)->tqh_last = &TAILQ_FIRST((head)); \
-} while (0)
-
-#define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \
- if ((TAILQ_NEXT((elm), field) = TAILQ_NEXT((listelm), field)) != NULL)\
- TAILQ_NEXT((elm), field)->field.tqe_prev = \
- &TAILQ_NEXT((elm), field); \
- else { \
- (head)->tqh_last = &TAILQ_NEXT((elm), field); \
- } \
- TAILQ_NEXT((listelm), field) = (elm); \
- (elm)->field.tqe_prev = &TAILQ_NEXT((listelm), field); \
-} while (0)
-
-#define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \
- (elm)->field.tqe_prev = (listelm)->field.tqe_prev; \
- TAILQ_NEXT((elm), field) = (listelm); \
- *(listelm)->field.tqe_prev = (elm); \
- (listelm)->field.tqe_prev = &TAILQ_NEXT((elm), field); \
-} while (0)
-
-#define TAILQ_INSERT_HEAD(head, elm, field) do { \
- if ((TAILQ_NEXT((elm), field) = TAILQ_FIRST((head))) != NULL) \
- TAILQ_FIRST((head))->field.tqe_prev = \
- &TAILQ_NEXT((elm), field); \
- else \
- (head)->tqh_last = &TAILQ_NEXT((elm), field); \
- TAILQ_FIRST((head)) = (elm); \
- (elm)->field.tqe_prev = &TAILQ_FIRST((head)); \
-} while (0)
-
-#define TAILQ_INSERT_TAIL(head, elm, field) do { \
- TAILQ_NEXT((elm), field) = NULL; \
- (elm)->field.tqe_prev = (head)->tqh_last; \
- *(head)->tqh_last = (elm); \
- (head)->tqh_last = &TAILQ_NEXT((elm), field); \
-} while (0)
-
-#define TAILQ_LAST(head, headname) \
- (*(((struct headname *)((head)->tqh_last))->tqh_last))
-
-#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next)
-
-#define TAILQ_PREV(elm, headname, field) \
- (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last))
-
-#define TAILQ_REMOVE(head, elm, field) do { \
- if ((TAILQ_NEXT((elm), field)) != NULL) \
- TAILQ_NEXT((elm), field)->field.tqe_prev = \
- (elm)->field.tqe_prev; \
- else { \
- (head)->tqh_last = (elm)->field.tqe_prev; \
- } \
- *(elm)->field.tqe_prev = TAILQ_NEXT((elm), field); \
-} while (0)
-
-#endif /* !SYS_QUEUE_H */
+/*
+ * <sys/queue.h> implementation for systems that don't have it.
+ *
+ * Copyright (c) 1991, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)queue.h 8.5 (Berkeley) 8/20/94
+ * $FreeBSD: src/sys/sys/queue.h,v 1.32.2.4 2001/03/31 03:33:39 hsu Exp $
+ */
+
+#ifndef SYS_QUEUE_H
+#define SYS_QUEUE_H
+
+/*
+ * This file defines four types of data structures: singly-linked lists,
+ * singly-linked tail queues, lists and tail queues.
+ *
+ * A singly-linked list is headed by a single forward pointer. The elements
+ * are singly linked for minimum space and pointer manipulation overhead at
+ * the expense of O(n) removal for arbitrary elements. New elements can be
+ * added to the list after an existing element or at the head of the list.
+ * Elements being removed from the head of the list should use the explicit
+ * macro for this purpose for optimum efficiency. A singly-linked list may
+ * only be traversed in the forward direction. Singly-linked lists are ideal
+ * for applications with large datasets and few or no removals or for
+ * implementing a LIFO queue.
+ *
+ * A singly-linked tail queue is headed by a pair of pointers, one to the
+ * head of the list and the other to the tail of the list. The elements are
+ * singly linked for minimum space and pointer manipulation overhead at the
+ * expense of O(n) removal for arbitrary elements. New elements can be added
+ * to the list after an existing element, at the head of the list, or at the
+ * end of the list. Elements being removed from the head of the tail queue
+ * should use the explicit macro for this purpose for optimum efficiency.
+ * A singly-linked tail queue may only be traversed in the forward direction.
+ * Singly-linked tail queues are ideal for applications with large datasets
+ * and few or no removals or for implementing a FIFO queue.
+ *
+ * A list is headed by a single forward pointer (or an array of forward
+ * pointers for a hash table header). The elements are doubly linked
+ * so that an arbitrary element can be removed without a need to
+ * traverse the list. New elements can be added to the list before
+ * or after an existing element or at the head of the list. A list
+ * may only be traversed in the forward direction.
+ *
+ * A tail queue is headed by a pair of pointers, one to the head of the
+ * list and the other to the tail of the list. The elements are doubly
+ * linked so that an arbitrary element can be removed without a need to
+ * traverse the list. New elements can be added to the list before or
+ * after an existing element, at the head of the list, or at the end of
+ * the list. A tail queue may be traversed in either direction.
+ *
+ * For details on the use of these macros, see the queue(3) manual page.
+ *
+ *
+ * SLIST LIST STAILQ TAILQ
+ * _HEAD + + + +
+ * _HEAD_INITIALIZER + + + +
+ * _ENTRY + + + +
+ * _INIT + + + +
+ * _EMPTY + + + +
+ * _FIRST + + + +
+ * _NEXT + + + +
+ * _PREV - - - +
+ * _LAST - - + +
+ * _FOREACH + + + +
+ * _FOREACH_SAFE + + + +
+ * _FOREACH_REVERSE - - - +
+ * _FOREACH_REVERSE_SAFE - - - +
+ * _INSERT_HEAD + + + +
+ * _INSERT_BEFORE - + - +
+ * _INSERT_AFTER + + + +
+ * _INSERT_TAIL - - + +
+ * _CONCAT - - + +
+ * _REMOVE_HEAD + - + -
+ * _REMOVE + + + +
+ *
+ */
+
+/*
+ * Singly-linked List declarations.
+ */
+#define SLIST_HEAD(name, type) \
+struct name { \
+ struct type *slh_first; /* first element */ \
+}
+
+#define SLIST_HEAD_INITIALIZER(head) \
+ { NULL }
+
+#define SLIST_ENTRY(type) \
+struct { \
+ struct type *sle_next; /* next element */ \
+}
+
+/*
+ * Singly-linked List functions.
+ */
+#define SLIST_EMPTY(head) ((head)->slh_first == NULL)
+
+#define SLIST_FIRST(head) ((head)->slh_first)
+
+#define SLIST_FOREACH(var, head, field) \
+ for ((var) = SLIST_FIRST((head)); \
+ (var); \
+ (var) = SLIST_NEXT((var), field))
+
+#define SLIST_FOREACH_SAFE(var, head, field, tvar) \
+ for ((var) = SLIST_FIRST((head)); \
+ (var) && ((tvar) = SLIST_NEXT((var), field), 1); \
+ (var) = (tvar))
+
+#define SLIST_FOREACH_PREVPTR(var, varp, head, field) \
+ for ((varp) = &SLIST_FIRST((head)); \
+ ((var) = *(varp)) != NULL; \
+ (varp) = &SLIST_NEXT((var), field))
+
+#define SLIST_INIT(head) do { \
+ SLIST_FIRST((head)) = NULL; \
+} while (0)
+
+#define SLIST_INSERT_AFTER(slistelm, elm, field) do { \
+ SLIST_NEXT((elm), field) = SLIST_NEXT((slistelm), field); \
+ SLIST_NEXT((slistelm), field) = (elm); \
+} while (0)
+
+#define SLIST_INSERT_HEAD(head, elm, field) do { \
+ SLIST_NEXT((elm), field) = SLIST_FIRST((head)); \
+ SLIST_FIRST((head)) = (elm); \
+} while (0)
+
+#define SLIST_NEXT(elm, field) ((elm)->field.sle_next)
+
+#define SLIST_REMOVE(head, elm, type, field) do { \
+ if (SLIST_FIRST((head)) == (elm)) { \
+ SLIST_REMOVE_HEAD((head), field); \
+ } \
+ else { \
+ struct type *curelm = SLIST_FIRST((head)); \
+ while (SLIST_NEXT(curelm, field) != (elm)) \
+ curelm = SLIST_NEXT(curelm, field); \
+ SLIST_NEXT(curelm, field) = \
+ SLIST_NEXT(SLIST_NEXT(curelm, field), field); \
+ } \
+} while (0)
+
+#define SLIST_REMOVE_HEAD(head, field) do { \
+ SLIST_FIRST((head)) = SLIST_NEXT(SLIST_FIRST((head)), field); \
+} while (0)
+
+/*
+ * Singly-linked Tail queue declarations.
+ */
+#define STAILQ_HEAD(name, type) \
+struct name { \
+ struct type *stqh_first;/* first element */ \
+ struct type **stqh_last;/* addr of last next element */ \
+}
+
+#define STAILQ_HEAD_INITIALIZER(head) \
+ { NULL, &(head).stqh_first }
+
+#define STAILQ_ENTRY(type) \
+struct { \
+ struct type *stqe_next; /* next element */ \
+}
+
+/*
+ * Singly-linked Tail queue functions.
+ */
+#define STAILQ_CONCAT(head1, head2) do { \
+ if (!STAILQ_EMPTY((head2))) { \
+ *(head1)->stqh_last = (head2)->stqh_first; \
+ (head1)->stqh_last = (head2)->stqh_last; \
+ STAILQ_INIT((head2)); \
+ } \
+} while (0)
+
+#define STAILQ_EMPTY(head) ((head)->stqh_first == NULL)
+
+#define STAILQ_FIRST(head) ((head)->stqh_first)
+
+#define STAILQ_FOREACH(var, head, field) \
+ for((var) = STAILQ_FIRST((head)); \
+ (var); \
+ (var) = STAILQ_NEXT((var), field))
+
+
+#define STAILQ_FOREACH_SAFE(var, head, field, tvar) \
+ for ((var) = STAILQ_FIRST((head)); \
+ (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \
+ (var) = (tvar))
+
+#define STAILQ_INIT(head) do { \
+ STAILQ_FIRST((head)) = NULL; \
+ (head)->stqh_last = &STAILQ_FIRST((head)); \
+} while (0)
+
+#define STAILQ_INSERT_AFTER(head, tqelm, elm, field) do { \
+ if ((STAILQ_NEXT((elm), field) = STAILQ_NEXT((tqelm), field)) == NULL)\
+ (head)->stqh_last = &STAILQ_NEXT((elm), field); \
+ STAILQ_NEXT((tqelm), field) = (elm); \
+} while (0)
+
+#define STAILQ_INSERT_HEAD(head, elm, field) do { \
+ if ((STAILQ_NEXT((elm), field) = STAILQ_FIRST((head))) == NULL) \
+ (head)->stqh_last = &STAILQ_NEXT((elm), field); \
+ STAILQ_FIRST((head)) = (elm); \
+} while (0)
+
+#define STAILQ_INSERT_TAIL(head, elm, field) do { \
+ STAILQ_NEXT((elm), field) = NULL; \
+ *(head)->stqh_last = (elm); \
+ (head)->stqh_last = &STAILQ_NEXT((elm), field); \
+} while (0)
+
+#define STAILQ_LAST(head, type, field) \
+ (STAILQ_EMPTY((head)) ? \
+ NULL : \
+ ((struct type *) \
+ ((char *)((head)->stqh_last) - offsetof(struct type, field))))
+
+#define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next)
+
+#define STAILQ_REMOVE(head, elm, type, field) do { \
+ if (STAILQ_FIRST((head)) == (elm)) { \
+ STAILQ_REMOVE_HEAD((head), field); \
+ } \
+ else { \
+ struct type *curelm = STAILQ_FIRST((head)); \
+ while (STAILQ_NEXT(curelm, field) != (elm)) \
+ curelm = STAILQ_NEXT(curelm, field); \
+ if ((STAILQ_NEXT(curelm, field) = \
+ STAILQ_NEXT(STAILQ_NEXT(curelm, field), field)) == NULL)\
+ (head)->stqh_last = &STAILQ_NEXT((curelm), field);\
+ } \
+} while (0)
+
+#define STAILQ_REMOVE_HEAD(head, field) do { \
+ if ((STAILQ_FIRST((head)) = \
+ STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL) \
+ (head)->stqh_last = &STAILQ_FIRST((head)); \
+} while (0)
+
+#define STAILQ_REMOVE_HEAD_UNTIL(head, elm, field) do { \
+ if ((STAILQ_FIRST((head)) = STAILQ_NEXT((elm), field)) == NULL) \
+ (head)->stqh_last = &STAILQ_FIRST((head)); \
+} while (0)
+
+/*
+ * List declarations.
+ */
+#define LIST_HEAD(name, type) \
+struct name { \
+ struct type *lh_first; /* first element */ \
+}
+
+#define LIST_HEAD_INITIALIZER(head) \
+ { NULL }
+
+#define LIST_ENTRY(type) \
+struct { \
+ struct type *le_next; /* next element */ \
+ struct type **le_prev; /* address of previous next element */ \
+}
+
+/*
+ * List functions.
+ */
+
+#define LIST_EMPTY(head) ((head)->lh_first == NULL)
+
+#define LIST_FIRST(head) ((head)->lh_first)
+
+#define LIST_FOREACH(var, head, field) \
+ for ((var) = LIST_FIRST((head)); \
+ (var); \
+ (var) = LIST_NEXT((var), field))
+
+#define LIST_FOREACH_SAFE(var, head, field, tvar) \
+ for ((var) = LIST_FIRST((head)); \
+ (var) && ((tvar) = LIST_NEXT((var), field), 1); \
+ (var) = (tvar))
+
+#define LIST_INIT(head) do { \
+ LIST_FIRST((head)) = NULL; \
+} while (0)
+
+#define LIST_INSERT_AFTER(listelm, elm, field) do { \
+ if ((LIST_NEXT((elm), field) = LIST_NEXT((listelm), field)) != NULL)\
+ LIST_NEXT((listelm), field)->field.le_prev = \
+ &LIST_NEXT((elm), field); \
+ LIST_NEXT((listelm), field) = (elm); \
+ (elm)->field.le_prev = &LIST_NEXT((listelm), field); \
+} while (0)
+
+#define LIST_INSERT_BEFORE(listelm, elm, field) do { \
+ (elm)->field.le_prev = (listelm)->field.le_prev; \
+ LIST_NEXT((elm), field) = (listelm); \
+ *(listelm)->field.le_prev = (elm); \
+ (listelm)->field.le_prev = &LIST_NEXT((elm), field); \
+} while (0)
+
+#define LIST_INSERT_HEAD(head, elm, field) do { \
+ if ((LIST_NEXT((elm), field) = LIST_FIRST((head))) != NULL) \
+ LIST_FIRST((head))->field.le_prev = &LIST_NEXT((elm), field);\
+ LIST_FIRST((head)) = (elm); \
+ (elm)->field.le_prev = &LIST_FIRST((head)); \
+} while (0)
+
+#define LIST_NEXT(elm, field) ((elm)->field.le_next)
+
+#define LIST_REMOVE(elm, field) do { \
+ if (LIST_NEXT((elm), field) != NULL) \
+ LIST_NEXT((elm), field)->field.le_prev = \
+ (elm)->field.le_prev; \
+ *(elm)->field.le_prev = LIST_NEXT((elm), field); \
+} while (0)
+
+/*
+ * Tail queue declarations.
+ */
+#define TAILQ_HEAD(name, type) \
+struct name { \
+ struct type *tqh_first; /* first element */ \
+ struct type **tqh_last; /* addr of last next element */ \
+}
+
+#define TAILQ_HEAD_INITIALIZER(head) \
+ { NULL, &(head).tqh_first }
+
+#define TAILQ_ENTRY(type) \
+struct { \
+ struct type *tqe_next; /* next element */ \
+ struct type **tqe_prev; /* address of previous next element */ \
+}
+
+/*
+ * Tail queue functions.
+ */
+#define TAILQ_CONCAT(head1, head2, field) do { \
+ if (!TAILQ_EMPTY(head2)) { \
+ *(head1)->tqh_last = (head2)->tqh_first; \
+ (head2)->tqh_first->field.tqe_prev = (head1)->tqh_last; \
+ (head1)->tqh_last = (head2)->tqh_last; \
+ TAILQ_INIT((head2)); \
+ } \
+} while (0)
+
+#define TAILQ_EMPTY(head) ((head)->tqh_first == NULL)
+
+#define TAILQ_FIRST(head) ((head)->tqh_first)
+
+#define TAILQ_FOREACH(var, head, field) \
+ for ((var) = TAILQ_FIRST((head)); \
+ (var); \
+ (var) = TAILQ_NEXT((var), field))
+
+#define TAILQ_FOREACH_SAFE(var, head, field, tvar) \
+ for ((var) = TAILQ_FIRST((head)); \
+ (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \
+ (var) = (tvar))
+
+#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \
+ for ((var) = TAILQ_LAST((head), headname); \
+ (var); \
+ (var) = TAILQ_PREV((var), headname, field))
+
+#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \
+ for ((var) = TAILQ_LAST((head), headname); \
+ (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \
+ (var) = (tvar))
+
+#define TAILQ_INIT(head) do { \
+ TAILQ_FIRST((head)) = NULL; \
+ (head)->tqh_last = &TAILQ_FIRST((head)); \
+} while (0)
+
+#define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \
+ if ((TAILQ_NEXT((elm), field) = TAILQ_NEXT((listelm), field)) != NULL)\
+ TAILQ_NEXT((elm), field)->field.tqe_prev = \
+ &TAILQ_NEXT((elm), field); \
+ else { \
+ (head)->tqh_last = &TAILQ_NEXT((elm), field); \
+ } \
+ TAILQ_NEXT((listelm), field) = (elm); \
+ (elm)->field.tqe_prev = &TAILQ_NEXT((listelm), field); \
+} while (0)
+
+#define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \
+ (elm)->field.tqe_prev = (listelm)->field.tqe_prev; \
+ TAILQ_NEXT((elm), field) = (listelm); \
+ *(listelm)->field.tqe_prev = (elm); \
+ (listelm)->field.tqe_prev = &TAILQ_NEXT((elm), field); \
+} while (0)
+
+#define TAILQ_INSERT_HEAD(head, elm, field) do { \
+ if ((TAILQ_NEXT((elm), field) = TAILQ_FIRST((head))) != NULL) \
+ TAILQ_FIRST((head))->field.tqe_prev = \
+ &TAILQ_NEXT((elm), field); \
+ else \
+ (head)->tqh_last = &TAILQ_NEXT((elm), field); \
+ TAILQ_FIRST((head)) = (elm); \
+ (elm)->field.tqe_prev = &TAILQ_FIRST((head)); \
+} while (0)
+
+#define TAILQ_INSERT_TAIL(head, elm, field) do { \
+ TAILQ_NEXT((elm), field) = NULL; \
+ (elm)->field.tqe_prev = (head)->tqh_last; \
+ *(head)->tqh_last = (elm); \
+ (head)->tqh_last = &TAILQ_NEXT((elm), field); \
+} while (0)
+
+#define TAILQ_LAST(head, headname) \
+ (*(((struct headname *)((head)->tqh_last))->tqh_last))
+
+#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next)
+
+#define TAILQ_PREV(elm, headname, field) \
+ (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last))
+
+#define TAILQ_REMOVE(head, elm, field) do { \
+ if ((TAILQ_NEXT((elm), field)) != NULL) \
+ TAILQ_NEXT((elm), field)->field.tqe_prev = \
+ (elm)->field.tqe_prev; \
+ else { \
+ (head)->tqh_last = (elm)->field.tqe_prev; \
+ } \
+ *(elm)->field.tqe_prev = TAILQ_NEXT((elm), field); \
+} while (0)
+
+#endif /* !SYS_QUEUE_H */
diff --git a/contrib/tools/yasm/libyasm/coretype.h b/contrib/tools/yasm/libyasm/coretype.h
index ead8f1d480..624e3c445c 100644
--- a/contrib/tools/yasm/libyasm/coretype.h
+++ b/contrib/tools/yasm/libyasm/coretype.h
@@ -1,393 +1,393 @@
-/**
- * \file libyasm/coretype.h
- * \brief YASM core types and utility functions.
- *
- * \license
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- * \endlicense
- */
-#ifndef YASM_CORETYPE_H
-#define YASM_CORETYPE_H
-
-#ifndef YASM_LIB_DECL
-#define YASM_LIB_DECL
-#endif
-
-/** Architecture instance (mostly opaque type). \see arch.h for details. */
-typedef struct yasm_arch yasm_arch;
-/** Preprocessor interface. \see preproc.h for details. */
-typedef struct yasm_preproc yasm_preproc;
-/** Parser instance (mostly opaque type). \see parser.h for details. */
-typedef struct yasm_parser yasm_parser;
-/** Object format interface. \see objfmt.h for details. */
-typedef struct yasm_objfmt yasm_objfmt;
-/** Debug format interface. \see dbgfmt.h for details. */
-typedef struct yasm_dbgfmt yasm_dbgfmt;
-/** List format interface. \see listfmt.h for details. */
-typedef struct yasm_listfmt yasm_listfmt;
-
-/** Object format module interface. \see objfmt.h for details. */
-typedef struct yasm_objfmt_module yasm_objfmt_module;
-/** Debug format module interface. \see dbgfmt.h for details. */
-typedef struct yasm_dbgfmt_module yasm_dbgfmt_module;
-
-/** Standard macro structure for modules that allows association of a set of
- * standard macros with a parser/preprocessor combination.
- * A NULL-terminated array of these structures is used in a number of module
- * interfaces.
- */
-typedef struct yasm_stdmac {
- const char *parser; /**< Parser keyword */
- const char *preproc; /**< Preprocessor keyword */
-
- /** NULL-terminated array of standard macros. May be NULL if no standard
- * macros should be added for this preprocessor.
- */
- const char **macros;
-} yasm_stdmac;
-
-/** YASM associated data callback structure. Many data structures can have
- * arbitrary data associated with them.
- */
-typedef struct yasm_assoc_data_callback {
- /** Free memory allocated for associated data.
- * \param data associated data
- */
- void (*destroy) (/*@only@*/ void *data);
-
- /** Print a description of allocated data. For debugging purposes.
- * \param data associated data
- * \param f output file
- * \param indent_level indentation level
- */
- void (*print) (void *data, FILE *f, int indent_level);
-} yasm_assoc_data_callback;
-
-/** Set of collected error/warnings (opaque type).
- * \see errwarn.h for details.
- */
-typedef struct yasm_errwarns yasm_errwarns;
-
-/** Bytecode. \see bytecode.h for details and related functions. */
-typedef struct yasm_bytecode yasm_bytecode;
-
-/** Object. \see section.h for details and related functions. */
-typedef struct yasm_object yasm_object;
-
-/** Section (opaque type). \see section.h for related functions. */
-typedef struct yasm_section yasm_section;
-
-/** Symbol table (opaque type). \see symrec.h for related functions. */
-typedef struct yasm_symtab yasm_symtab;
-
-/** Symbol record (opaque type). \see symrec.h for related functions. */
-typedef struct yasm_symrec yasm_symrec;
-
-/** Expression. \see expr.h for details and related functions. */
-typedef struct yasm_expr yasm_expr;
-/** Integer value (opaque type). \see intnum.h for related functions. */
-typedef struct yasm_intnum yasm_intnum;
-/** Floating point value (opaque type).
- * \see floatnum.h for related functions.
- */
-typedef struct yasm_floatnum yasm_floatnum;
-
-/** A value. May be absolute or relative. Outside the parser, yasm_expr
- * should only be used for absolute exprs. Anything that could contain
- * a relocatable value should use this structure instead.
- * \see value.h for related functions.
- */
-typedef struct yasm_value {
- /** The absolute portion of the value. May contain *differences* between
- * symrecs but not standalone symrecs. May be NULL if there is no
- * absolute portion (e.g. the absolute portion is 0).
- */
- /*@null@*/ /*@only@*/ yasm_expr *abs;
-
- /** The relative portion of the value. This is the portion that may
- * need to generate a relocation. May be NULL if no relative portion.
- */
- /*@null@*/ /*@dependent@*/ yasm_symrec *rel;
-
- /** What the relative portion is in reference to. NULL if the default. */
- /*@null@*/ /*@dependent@*/ yasm_symrec *wrt;
-
- /** If the segment of the relative portion should be used, not the
- * relative portion itself. Boolean.
- */
- unsigned int seg_of : 1;
-
- /** If the relative portion of the value should be shifted right
- * (supported only by a few object formats). If just the absolute portion
- * should be shifted, that must be in the abs expr, not here!
- */
- unsigned int rshift : 7;
-
- /** Indicates the relative portion of the value should be relocated
- * relative to the current assembly position rather than relative to the
- * section start. "Current assembly position" here refers to the starting
- * address of the bytecode containing this value. Boolean.
- */
- unsigned int curpos_rel : 1;
-
- /** Indicates that curpos_rel was set due to IP-relative relocation;
- * in some objfmt/arch combinations (e.g. win64/x86-amd64) this info
- * is needed to generate special relocations.
- */
- unsigned int ip_rel : 1;
-
- /** Indicates the value is a jump target address (rather than a simple
- * data address). In some objfmt/arch combinations (e.g. macho/amd64)
- * this info is needed to generate special relocations.
- */
- unsigned int jump_target : 1;
-
- /** Indicates the relative portion of the value should be relocated
- * relative to its own section start rather than relative to the
- * section start of the bytecode containing this value. E.g. the value
- * resulting from the relative portion should be the offset from its
- * section start. Boolean.
- */
- unsigned int section_rel : 1;
-
- /** Indicates overflow warnings have been disabled for this value. */
- unsigned int no_warn : 1;
-
- /** Sign of the value. Nonzero if the final value should be treated as
- * signed, 0 if it should be treated as signed.
- */
- unsigned int sign : 1;
-
- /** Size of the value, in bits. */
- unsigned int size : 8;
-} yasm_value;
-
-/** Maximum value of #yasm_value.rshift */
-#define YASM_VALUE_RSHIFT_MAX 127
-
-/** Line number mapping repository (opaque type). \see linemap.h for related
- * functions.
- */
-typedef struct yasm_linemap yasm_linemap;
-
-/** Value/parameter pair (opaque type).
- * \see valparam.h for related functions.
- */
-typedef struct yasm_valparam yasm_valparam;
-/** List of value/parameters (opaque type).
- * \see valparam.h for related functions.
- */
-typedef struct yasm_valparamhead yasm_valparamhead;
-/** Directive list entry.
- * \see valparam.h for details and related functions.
- */
-typedef struct yasm_directive yasm_directive;
-
-/** An effective address.
- * \see insn.h for related functions.
- */
-typedef struct yasm_effaddr yasm_effaddr;
-
-/** An instruction.
- * \see insn.h for related functions.
- */
-typedef struct yasm_insn yasm_insn;
-
-/** Expression operators usable in #yasm_expr expressions. */
-typedef enum yasm_expr_op {
- YASM_EXPR_IDENT, /**< No operation, just a value. */
- YASM_EXPR_ADD, /**< Arithmetic addition (+). */
- YASM_EXPR_SUB, /**< Arithmetic subtraction (-). */
- YASM_EXPR_MUL, /**< Arithmetic multiplication (*). */
- YASM_EXPR_DIV, /**< Arithmetic unsigned division. */
- YASM_EXPR_SIGNDIV, /**< Arithmetic signed division. */
- YASM_EXPR_MOD, /**< Arithmetic unsigned modulus. */
- YASM_EXPR_SIGNMOD, /**< Arithmetic signed modulus. */
- YASM_EXPR_NEG, /**< Arithmetic negation (-). */
- YASM_EXPR_NOT, /**< Bitwise negation. */
- YASM_EXPR_OR, /**< Bitwise OR. */
- YASM_EXPR_AND, /**< Bitwise AND. */
- YASM_EXPR_XOR, /**< Bitwise XOR. */
- YASM_EXPR_XNOR, /**< Bitwise XNOR. */
- YASM_EXPR_NOR, /**< Bitwise NOR. */
- YASM_EXPR_SHL, /**< Shift left (logical). */
- YASM_EXPR_SHR, /**< Shift right (logical). */
- YASM_EXPR_LOR, /**< Logical OR. */
- YASM_EXPR_LAND, /**< Logical AND. */
- YASM_EXPR_LNOT, /**< Logical negation. */
- YASM_EXPR_LXOR, /**< Logical XOR. */
- YASM_EXPR_LXNOR, /**< Logical XNOR. */
- YASM_EXPR_LNOR, /**< Logical NOR. */
- YASM_EXPR_LT, /**< Less than comparison. */
- YASM_EXPR_GT, /**< Greater than comparison. */
- YASM_EXPR_EQ, /**< Equality comparison. */
- YASM_EXPR_LE, /**< Less than or equal to comparison. */
- YASM_EXPR_GE, /**< Greater than or equal to comparison. */
- YASM_EXPR_NE, /**< Not equal comparison. */
- YASM_EXPR_NONNUM, /**< Start of non-numeric operations (not an op). */
- YASM_EXPR_SEG, /**< SEG operator (gets segment portion of address). */
- YASM_EXPR_WRT, /**< WRT operator (gets offset of address relative to
- * some other segment). */
- YASM_EXPR_SEGOFF /**< The ':' in segment:offset. */
-} yasm_expr_op;
-
-/** Convert yasm_value to its byte representation. Usually implemented by
- * object formats to keep track of relocations and verify legal expressions.
- * Must put the value into the least significant bits of the destination,
- * unless shifted into more significant bits by the shift parameter. The
- * destination bits must be cleared before being set.
- * \param value value
- * \param buf buffer for byte representation
- * \param destsize destination size (in bytes)
- * \param offset offset (in bytes) of the expr contents from the start
- * of the bytecode (needed for relative)
- * \param bc current bytecode (usually passed into higher-level
- * calling function)
- * \param warn enables standard warnings: zero for none;
- * nonzero for overflow/underflow floating point warnings
- * \param d objfmt-specific data (passed into higher-level calling
- * function)
- * \return Nonzero if an error occurred, 0 otherwise.
- */
-typedef int (*yasm_output_value_func)
- (yasm_value *value, /*@out@*/ unsigned char *buf, unsigned int destsize,
- unsigned long offset, yasm_bytecode *bc, int warn, /*@null@*/ void *d);
-
-/** Convert a symbol reference to its byte representation. Usually implemented
- * by object formats and debug formats to keep track of relocations generated
- * by themselves.
- * \param sym symbol
- * \param bc current bytecode (usually passed into higher-level
- * calling function)
- * \param buf buffer for byte representation
- * \param destsize destination size (in bytes)
- * \param valsize size (in bits)
- * \param warn enables standard warnings: zero for none;
- * nonzero for overflow/underflow floating point warnings;
- * negative for signed integer warnings,
- * positive for unsigned integer warnings
- * \param d objfmt-specific data (passed into higher-level calling
- * function)
- * \return Nonzero if an error occurred, 0 otherwise.
- */
-typedef int (*yasm_output_reloc_func)
- (yasm_symrec *sym, yasm_bytecode *bc, unsigned char *buf,
- unsigned int destsize, unsigned int valsize, int warn, void *d);
-
-/** Sort an array using merge sort algorithm.
- * \internal
- * \param base base of array
- * \param nmemb number of elements in array
- * \param size size of each array element
- * \param compar element comparison function
- */
-YASM_LIB_DECL
-int yasm__mergesort(void *base, size_t nmemb, size_t size,
- int (*compar)(const void *, const void *));
-
-/** Separate string by delimiters.
- * \internal
- * \param stringp string
- * \param delim set of 1 or more delimiters
- * \return First/next substring.
- */
-YASM_LIB_DECL
-/*@null@*/ char *yasm__strsep(char **stringp, const char *delim);
-
-/** Compare two strings, ignoring case differences.
- * \internal
- * \param s1 string 1
- * \param s2 string 2
- * \return 0 if strings are equal, -1 if s1<s2, 1 if s1>s2.
- */
-YASM_LIB_DECL
-int yasm__strcasecmp(const char *s1, const char *s2);
-
-/** Compare portion of two strings, ignoring case differences.
- * \internal
- * \param s1 string 1
- * \param s2 string 2
- * \param n maximum number of characters to compare
- * \return 0 if strings are equal, -1 if s1<s2, 1 if s1>s2.
- */
-YASM_LIB_DECL
-int yasm__strncasecmp(const char *s1, const char *s2, size_t n);
-
-/** strdup() implementation using yasm_xmalloc().
- * \internal
- * \param str string
- * \return Newly allocated duplicate string.
- */
-YASM_LIB_DECL
-/*@only@*/ char *yasm__xstrdup(const char *str);
-
-/** strndup() implementation using yasm_xmalloc().
- * \internal
- * \param str string
- * \param max maximum number of characters to copy
- * \return Newly allocated duplicate string.
- */
-YASM_LIB_DECL
-/*@only@*/ char *yasm__xstrndup(const char *str, size_t max);
-
-/** Error-checking memory allocation. A default implementation is provided
- * that calls yasm_fatal() on allocation errors.
- * A replacement should \em never return NULL.
- * \param size number of bytes to allocate
- * \return Allocated memory block.
- */
-YASM_LIB_DECL
-extern /*@only@*/ /*@out@*/ void * (*yasm_xmalloc) (size_t size);
-
-/** Error-checking memory allocation (with clear-to-0). A default
- * implementation is provided that calls yasm_fatal() on allocation errors.
- * A replacement should \em never return NULL.
- * \param size number of elements to allocate
- * \param elsize size (in bytes) of each element
- * \return Allocated and cleared memory block.
- */
-YASM_LIB_DECL
-extern /*@only@*/ void * (*yasm_xcalloc) (size_t nelem, size_t elsize);
-
-/** Error-checking memory reallocation. A default implementation is provided
- * that calls yasm_fatal() on allocation errors. A replacement should
- * \em never return NULL.
- * \param oldmem memory block to resize
- * \param elsize new size, in bytes
- * \return Re-allocated memory block.
- */
-YASM_LIB_DECL
-extern /*@only@*/ void * (*yasm_xrealloc)
- (/*@only@*/ /*@out@*/ /*@returned@*/ /*@null@*/ void *oldmem, size_t size)
- /*@modifies oldmem@*/;
-
-/** Error-checking memory deallocation. A default implementation is provided
- * that calls yasm_fatal() on allocation errors.
- * \param p memory block to free
- */
-YASM_LIB_DECL
-extern void (*yasm_xfree) (/*@only@*/ /*@out@*/ /*@null@*/ void *p)
- /*@modifies p@*/;
-
-#endif
+/**
+ * \file libyasm/coretype.h
+ * \brief YASM core types and utility functions.
+ *
+ * \license
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * - Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ * \endlicense
+ */
+#ifndef YASM_CORETYPE_H
+#define YASM_CORETYPE_H
+
+#ifndef YASM_LIB_DECL
+#define YASM_LIB_DECL
+#endif
+
+/** Architecture instance (mostly opaque type). \see arch.h for details. */
+typedef struct yasm_arch yasm_arch;
+/** Preprocessor interface. \see preproc.h for details. */
+typedef struct yasm_preproc yasm_preproc;
+/** Parser instance (mostly opaque type). \see parser.h for details. */
+typedef struct yasm_parser yasm_parser;
+/** Object format interface. \see objfmt.h for details. */
+typedef struct yasm_objfmt yasm_objfmt;
+/** Debug format interface. \see dbgfmt.h for details. */
+typedef struct yasm_dbgfmt yasm_dbgfmt;
+/** List format interface. \see listfmt.h for details. */
+typedef struct yasm_listfmt yasm_listfmt;
+
+/** Object format module interface. \see objfmt.h for details. */
+typedef struct yasm_objfmt_module yasm_objfmt_module;
+/** Debug format module interface. \see dbgfmt.h for details. */
+typedef struct yasm_dbgfmt_module yasm_dbgfmt_module;
+
+/** Standard macro structure for modules that allows association of a set of
+ * standard macros with a parser/preprocessor combination.
+ * A NULL-terminated array of these structures is used in a number of module
+ * interfaces.
+ */
+typedef struct yasm_stdmac {
+ const char *parser; /**< Parser keyword */
+ const char *preproc; /**< Preprocessor keyword */
+
+ /** NULL-terminated array of standard macros. May be NULL if no standard
+ * macros should be added for this preprocessor.
+ */
+ const char **macros;
+} yasm_stdmac;
+
+/** YASM associated data callback structure. Many data structures can have
+ * arbitrary data associated with them.
+ */
+typedef struct yasm_assoc_data_callback {
+ /** Free memory allocated for associated data.
+ * \param data associated data
+ */
+ void (*destroy) (/*@only@*/ void *data);
+
+ /** Print a description of allocated data. For debugging purposes.
+ * \param data associated data
+ * \param f output file
+ * \param indent_level indentation level
+ */
+ void (*print) (void *data, FILE *f, int indent_level);
+} yasm_assoc_data_callback;
+
+/** Set of collected error/warnings (opaque type).
+ * \see errwarn.h for details.
+ */
+typedef struct yasm_errwarns yasm_errwarns;
+
+/** Bytecode. \see bytecode.h for details and related functions. */
+typedef struct yasm_bytecode yasm_bytecode;
+
+/** Object. \see section.h for details and related functions. */
+typedef struct yasm_object yasm_object;
+
+/** Section (opaque type). \see section.h for related functions. */
+typedef struct yasm_section yasm_section;
+
+/** Symbol table (opaque type). \see symrec.h for related functions. */
+typedef struct yasm_symtab yasm_symtab;
+
+/** Symbol record (opaque type). \see symrec.h for related functions. */
+typedef struct yasm_symrec yasm_symrec;
+
+/** Expression. \see expr.h for details and related functions. */
+typedef struct yasm_expr yasm_expr;
+/** Integer value (opaque type). \see intnum.h for related functions. */
+typedef struct yasm_intnum yasm_intnum;
+/** Floating point value (opaque type).
+ * \see floatnum.h for related functions.
+ */
+typedef struct yasm_floatnum yasm_floatnum;
+
+/** A value. May be absolute or relative. Outside the parser, yasm_expr
+ * should only be used for absolute exprs. Anything that could contain
+ * a relocatable value should use this structure instead.
+ * \see value.h for related functions.
+ */
+typedef struct yasm_value {
+ /** The absolute portion of the value. May contain *differences* between
+ * symrecs but not standalone symrecs. May be NULL if there is no
+ * absolute portion (e.g. the absolute portion is 0).
+ */
+ /*@null@*/ /*@only@*/ yasm_expr *abs;
+
+ /** The relative portion of the value. This is the portion that may
+ * need to generate a relocation. May be NULL if no relative portion.
+ */
+ /*@null@*/ /*@dependent@*/ yasm_symrec *rel;
+
+ /** What the relative portion is in reference to. NULL if the default. */
+ /*@null@*/ /*@dependent@*/ yasm_symrec *wrt;
+
+ /** If the segment of the relative portion should be used, not the
+ * relative portion itself. Boolean.
+ */
+ unsigned int seg_of : 1;
+
+ /** If the relative portion of the value should be shifted right
+ * (supported only by a few object formats). If just the absolute portion
+ * should be shifted, that must be in the abs expr, not here!
+ */
+ unsigned int rshift : 7;
+
+ /** Indicates the relative portion of the value should be relocated
+ * relative to the current assembly position rather than relative to the
+ * section start. "Current assembly position" here refers to the starting
+ * address of the bytecode containing this value. Boolean.
+ */
+ unsigned int curpos_rel : 1;
+
+ /** Indicates that curpos_rel was set due to IP-relative relocation;
+ * in some objfmt/arch combinations (e.g. win64/x86-amd64) this info
+ * is needed to generate special relocations.
+ */
+ unsigned int ip_rel : 1;
+
+ /** Indicates the value is a jump target address (rather than a simple
+ * data address). In some objfmt/arch combinations (e.g. macho/amd64)
+ * this info is needed to generate special relocations.
+ */
+ unsigned int jump_target : 1;
+
+ /** Indicates the relative portion of the value should be relocated
+ * relative to its own section start rather than relative to the
+ * section start of the bytecode containing this value. E.g. the value
+ * resulting from the relative portion should be the offset from its
+ * section start. Boolean.
+ */
+ unsigned int section_rel : 1;
+
+ /** Indicates overflow warnings have been disabled for this value. */
+ unsigned int no_warn : 1;
+
+ /** Sign of the value. Nonzero if the final value should be treated as
+ * signed, 0 if it should be treated as signed.
+ */
+ unsigned int sign : 1;
+
+ /** Size of the value, in bits. */
+ unsigned int size : 8;
+} yasm_value;
+
+/** Maximum value of #yasm_value.rshift */
+#define YASM_VALUE_RSHIFT_MAX 127
+
+/** Line number mapping repository (opaque type). \see linemap.h for related
+ * functions.
+ */
+typedef struct yasm_linemap yasm_linemap;
+
+/** Value/parameter pair (opaque type).
+ * \see valparam.h for related functions.
+ */
+typedef struct yasm_valparam yasm_valparam;
+/** List of value/parameters (opaque type).
+ * \see valparam.h for related functions.
+ */
+typedef struct yasm_valparamhead yasm_valparamhead;
+/** Directive list entry.
+ * \see valparam.h for details and related functions.
+ */
+typedef struct yasm_directive yasm_directive;
+
+/** An effective address.
+ * \see insn.h for related functions.
+ */
+typedef struct yasm_effaddr yasm_effaddr;
+
+/** An instruction.
+ * \see insn.h for related functions.
+ */
+typedef struct yasm_insn yasm_insn;
+
+/** Expression operators usable in #yasm_expr expressions. */
+typedef enum yasm_expr_op {
+ YASM_EXPR_IDENT, /**< No operation, just a value. */
+ YASM_EXPR_ADD, /**< Arithmetic addition (+). */
+ YASM_EXPR_SUB, /**< Arithmetic subtraction (-). */
+ YASM_EXPR_MUL, /**< Arithmetic multiplication (*). */
+ YASM_EXPR_DIV, /**< Arithmetic unsigned division. */
+ YASM_EXPR_SIGNDIV, /**< Arithmetic signed division. */
+ YASM_EXPR_MOD, /**< Arithmetic unsigned modulus. */
+ YASM_EXPR_SIGNMOD, /**< Arithmetic signed modulus. */
+ YASM_EXPR_NEG, /**< Arithmetic negation (-). */
+ YASM_EXPR_NOT, /**< Bitwise negation. */
+ YASM_EXPR_OR, /**< Bitwise OR. */
+ YASM_EXPR_AND, /**< Bitwise AND. */
+ YASM_EXPR_XOR, /**< Bitwise XOR. */
+ YASM_EXPR_XNOR, /**< Bitwise XNOR. */
+ YASM_EXPR_NOR, /**< Bitwise NOR. */
+ YASM_EXPR_SHL, /**< Shift left (logical). */
+ YASM_EXPR_SHR, /**< Shift right (logical). */
+ YASM_EXPR_LOR, /**< Logical OR. */
+ YASM_EXPR_LAND, /**< Logical AND. */
+ YASM_EXPR_LNOT, /**< Logical negation. */
+ YASM_EXPR_LXOR, /**< Logical XOR. */
+ YASM_EXPR_LXNOR, /**< Logical XNOR. */
+ YASM_EXPR_LNOR, /**< Logical NOR. */
+ YASM_EXPR_LT, /**< Less than comparison. */
+ YASM_EXPR_GT, /**< Greater than comparison. */
+ YASM_EXPR_EQ, /**< Equality comparison. */
+ YASM_EXPR_LE, /**< Less than or equal to comparison. */
+ YASM_EXPR_GE, /**< Greater than or equal to comparison. */
+ YASM_EXPR_NE, /**< Not equal comparison. */
+ YASM_EXPR_NONNUM, /**< Start of non-numeric operations (not an op). */
+ YASM_EXPR_SEG, /**< SEG operator (gets segment portion of address). */
+ YASM_EXPR_WRT, /**< WRT operator (gets offset of address relative to
+ * some other segment). */
+ YASM_EXPR_SEGOFF /**< The ':' in segment:offset. */
+} yasm_expr_op;
+
+/** Convert yasm_value to its byte representation. Usually implemented by
+ * object formats to keep track of relocations and verify legal expressions.
+ * Must put the value into the least significant bits of the destination,
+ * unless shifted into more significant bits by the shift parameter. The
+ * destination bits must be cleared before being set.
+ * \param value value
+ * \param buf buffer for byte representation
+ * \param destsize destination size (in bytes)
+ * \param offset offset (in bytes) of the expr contents from the start
+ * of the bytecode (needed for relative)
+ * \param bc current bytecode (usually passed into higher-level
+ * calling function)
+ * \param warn enables standard warnings: zero for none;
+ * nonzero for overflow/underflow floating point warnings
+ * \param d objfmt-specific data (passed into higher-level calling
+ * function)
+ * \return Nonzero if an error occurred, 0 otherwise.
+ */
+typedef int (*yasm_output_value_func)
+ (yasm_value *value, /*@out@*/ unsigned char *buf, unsigned int destsize,
+ unsigned long offset, yasm_bytecode *bc, int warn, /*@null@*/ void *d);
+
+/** Convert a symbol reference to its byte representation. Usually implemented
+ * by object formats and debug formats to keep track of relocations generated
+ * by themselves.
+ * \param sym symbol
+ * \param bc current bytecode (usually passed into higher-level
+ * calling function)
+ * \param buf buffer for byte representation
+ * \param destsize destination size (in bytes)
+ * \param valsize size (in bits)
+ * \param warn enables standard warnings: zero for none;
+ * nonzero for overflow/underflow floating point warnings;
+ * negative for signed integer warnings,
+ * positive for unsigned integer warnings
+ * \param d objfmt-specific data (passed into higher-level calling
+ * function)
+ * \return Nonzero if an error occurred, 0 otherwise.
+ */
+typedef int (*yasm_output_reloc_func)
+ (yasm_symrec *sym, yasm_bytecode *bc, unsigned char *buf,
+ unsigned int destsize, unsigned int valsize, int warn, void *d);
+
+/** Sort an array using merge sort algorithm.
+ * \internal
+ * \param base base of array
+ * \param nmemb number of elements in array
+ * \param size size of each array element
+ * \param compar element comparison function
+ */
+YASM_LIB_DECL
+int yasm__mergesort(void *base, size_t nmemb, size_t size,
+ int (*compar)(const void *, const void *));
+
+/** Separate string by delimiters.
+ * \internal
+ * \param stringp string
+ * \param delim set of 1 or more delimiters
+ * \return First/next substring.
+ */
+YASM_LIB_DECL
+/*@null@*/ char *yasm__strsep(char **stringp, const char *delim);
+
+/** Compare two strings, ignoring case differences.
+ * \internal
+ * \param s1 string 1
+ * \param s2 string 2
+ * \return 0 if strings are equal, -1 if s1<s2, 1 if s1>s2.
+ */
+YASM_LIB_DECL
+int yasm__strcasecmp(const char *s1, const char *s2);
+
+/** Compare portion of two strings, ignoring case differences.
+ * \internal
+ * \param s1 string 1
+ * \param s2 string 2
+ * \param n maximum number of characters to compare
+ * \return 0 if strings are equal, -1 if s1<s2, 1 if s1>s2.
+ */
+YASM_LIB_DECL
+int yasm__strncasecmp(const char *s1, const char *s2, size_t n);
+
+/** strdup() implementation using yasm_xmalloc().
+ * \internal
+ * \param str string
+ * \return Newly allocated duplicate string.
+ */
+YASM_LIB_DECL
+/*@only@*/ char *yasm__xstrdup(const char *str);
+
+/** strndup() implementation using yasm_xmalloc().
+ * \internal
+ * \param str string
+ * \param max maximum number of characters to copy
+ * \return Newly allocated duplicate string.
+ */
+YASM_LIB_DECL
+/*@only@*/ char *yasm__xstrndup(const char *str, size_t max);
+
+/** Error-checking memory allocation. A default implementation is provided
+ * that calls yasm_fatal() on allocation errors.
+ * A replacement should \em never return NULL.
+ * \param size number of bytes to allocate
+ * \return Allocated memory block.
+ */
+YASM_LIB_DECL
+extern /*@only@*/ /*@out@*/ void * (*yasm_xmalloc) (size_t size);
+
+/** Error-checking memory allocation (with clear-to-0). A default
+ * implementation is provided that calls yasm_fatal() on allocation errors.
+ * A replacement should \em never return NULL.
+ * \param size number of elements to allocate
+ * \param elsize size (in bytes) of each element
+ * \return Allocated and cleared memory block.
+ */
+YASM_LIB_DECL
+extern /*@only@*/ void * (*yasm_xcalloc) (size_t nelem, size_t elsize);
+
+/** Error-checking memory reallocation. A default implementation is provided
+ * that calls yasm_fatal() on allocation errors. A replacement should
+ * \em never return NULL.
+ * \param oldmem memory block to resize
+ * \param elsize new size, in bytes
+ * \return Re-allocated memory block.
+ */
+YASM_LIB_DECL
+extern /*@only@*/ void * (*yasm_xrealloc)
+ (/*@only@*/ /*@out@*/ /*@returned@*/ /*@null@*/ void *oldmem, size_t size)
+ /*@modifies oldmem@*/;
+
+/** Error-checking memory deallocation. A default implementation is provided
+ * that calls yasm_fatal() on allocation errors.
+ * \param p memory block to free
+ */
+YASM_LIB_DECL
+extern void (*yasm_xfree) (/*@only@*/ /*@out@*/ /*@null@*/ void *p)
+ /*@modifies p@*/;
+
+#endif
diff --git a/contrib/tools/yasm/libyasm/dbgfmt.h b/contrib/tools/yasm/libyasm/dbgfmt.h
index 97e3470d20..2e5ea867ee 100644
--- a/contrib/tools/yasm/libyasm/dbgfmt.h
+++ b/contrib/tools/yasm/libyasm/dbgfmt.h
@@ -1,74 +1,74 @@
-/**
- * \file libyasm/dbgfmt.h
- * \brief YASM debug format interface.
- *
- * \license
- * Copyright (C) 2002-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- * \endlicense
- */
-#ifndef YASM_DBGFMT_H
-#define YASM_DBGFMT_H
-
-#ifndef YASM_DOXYGEN
-/** Base #yasm_dbgfmt structure. Must be present as the first element in any
- * #yasm_dbgfmt implementation.
- */
-typedef struct yasm_dbgfmt_base {
- /** #yasm_dbgfmt_module implementation for this debug format. */
- const struct yasm_dbgfmt_module *module;
-} yasm_dbgfmt_base;
-#endif
-
-/** Debug format module interface. */
-struct yasm_dbgfmt_module {
- /** One-line description of the debug format. */
- const char *name;
-
- /** Keyword used to select debug format. */
- const char *keyword;
-
- /** NULL-terminated list of directives. NULL if none. */
- /*@null@*/ const yasm_directive *directives;
-
- /** Create debug format.
- * Module-level implementation of yasm_dbgfmt_create().
- * The filenames are provided solely for informational purposes.
- * \param object object
- * \return NULL if object format does not provide needed support.
- */
- /*@null@*/ /*@only@*/ yasm_dbgfmt * (*create) (yasm_object *object);
-
- /** Module-level implementation of yasm_dbgfmt_destroy().
- * Call yasm_dbgfmt_destroy() instead of calling this function.
- */
- void (*destroy) (/*@only@*/ yasm_dbgfmt *dbgfmt);
-
- /** Module-level implementation of yasm_dbgfmt_generate().
- * Call yasm_dbgfmt_generate() instead of calling this function.
- */
- void (*generate) (yasm_object *object, yasm_linemap *linemap,
- yasm_errwarns *errwarns);
+/**
+ * \file libyasm/dbgfmt.h
+ * \brief YASM debug format interface.
+ *
+ * \license
+ * Copyright (C) 2002-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * - Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ * \endlicense
+ */
+#ifndef YASM_DBGFMT_H
+#define YASM_DBGFMT_H
+
+#ifndef YASM_DOXYGEN
+/** Base #yasm_dbgfmt structure. Must be present as the first element in any
+ * #yasm_dbgfmt implementation.
+ */
+typedef struct yasm_dbgfmt_base {
+ /** #yasm_dbgfmt_module implementation for this debug format. */
+ const struct yasm_dbgfmt_module *module;
+} yasm_dbgfmt_base;
+#endif
+
+/** Debug format module interface. */
+struct yasm_dbgfmt_module {
+ /** One-line description of the debug format. */
+ const char *name;
+
+ /** Keyword used to select debug format. */
+ const char *keyword;
+
+ /** NULL-terminated list of directives. NULL if none. */
+ /*@null@*/ const yasm_directive *directives;
+
+ /** Create debug format.
+ * Module-level implementation of yasm_dbgfmt_create().
+ * The filenames are provided solely for informational purposes.
+ * \param object object
+ * \return NULL if object format does not provide needed support.
+ */
+ /*@null@*/ /*@only@*/ yasm_dbgfmt * (*create) (yasm_object *object);
+
+ /** Module-level implementation of yasm_dbgfmt_destroy().
+ * Call yasm_dbgfmt_destroy() instead of calling this function.
+ */
+ void (*destroy) (/*@only@*/ yasm_dbgfmt *dbgfmt);
+
+ /** Module-level implementation of yasm_dbgfmt_generate().
+ * Call yasm_dbgfmt_generate() instead of calling this function.
+ */
+ void (*generate) (yasm_object *object, yasm_linemap *linemap,
+ yasm_errwarns *errwarns);
/**
* --replace params
@@ -78,54 +78,54 @@ struct yasm_dbgfmt_module {
* Number of elements in replace_map
*/
int replace_map_size;
-};
-
-/** Get the keyword used to select a debug format.
- * \param dbgfmt debug format
- * \return keyword
- */
-const char *yasm_dbgfmt_keyword(const yasm_dbgfmt *dbgfmt);
-
-/** Initialize debug output for use. Must call before any other debug
- * format functions. The filenames are provided solely for informational
- * purposes.
- * \param module debug format module
- * \param object object to generate debugging information for
- * \return NULL if object format does not provide needed support.
- */
-/*@null@*/ /*@only@*/ yasm_dbgfmt *yasm_dbgfmt_create
- (const yasm_dbgfmt_module *module, yasm_object *object);
-
-/** Cleans up any allocated debug format memory.
- * \param dbgfmt debug format
- */
-void yasm_dbgfmt_destroy(/*@only@*/ yasm_dbgfmt *dbgfmt);
-
-/** Generate debugging information bytecodes.
- * \param object object
- * \param linemap virtual/physical line mapping
- * \param errwarns error/warning set
- * \note Errors and warnings are stored into errwarns.
- */
-void yasm_dbgfmt_generate(yasm_object *object, yasm_linemap *linemap,
- yasm_errwarns *errwarns);
-
-#ifndef YASM_DOXYGEN
-
-/* Inline macro implementations for dbgfmt functions */
-
-#define yasm_dbgfmt_keyword(dbgfmt) \
- (((yasm_dbgfmt_base *)dbgfmt)->module->keyword)
-
-#define yasm_dbgfmt_create(module, object) \
- module->create(object)
-
-#define yasm_dbgfmt_destroy(dbgfmt) \
- ((yasm_dbgfmt_base *)dbgfmt)->module->destroy(dbgfmt)
-#define yasm_dbgfmt_generate(object, linemap, ews) \
- ((yasm_dbgfmt_base *)((object)->dbgfmt))->module->generate \
- (object, linemap, ews)
-
-#endif
-
-#endif
+};
+
+/** Get the keyword used to select a debug format.
+ * \param dbgfmt debug format
+ * \return keyword
+ */
+const char *yasm_dbgfmt_keyword(const yasm_dbgfmt *dbgfmt);
+
+/** Initialize debug output for use. Must call before any other debug
+ * format functions. The filenames are provided solely for informational
+ * purposes.
+ * \param module debug format module
+ * \param object object to generate debugging information for
+ * \return NULL if object format does not provide needed support.
+ */
+/*@null@*/ /*@only@*/ yasm_dbgfmt *yasm_dbgfmt_create
+ (const yasm_dbgfmt_module *module, yasm_object *object);
+
+/** Cleans up any allocated debug format memory.
+ * \param dbgfmt debug format
+ */
+void yasm_dbgfmt_destroy(/*@only@*/ yasm_dbgfmt *dbgfmt);
+
+/** Generate debugging information bytecodes.
+ * \param object object
+ * \param linemap virtual/physical line mapping
+ * \param errwarns error/warning set
+ * \note Errors and warnings are stored into errwarns.
+ */
+void yasm_dbgfmt_generate(yasm_object *object, yasm_linemap *linemap,
+ yasm_errwarns *errwarns);
+
+#ifndef YASM_DOXYGEN
+
+/* Inline macro implementations for dbgfmt functions */
+
+#define yasm_dbgfmt_keyword(dbgfmt) \
+ (((yasm_dbgfmt_base *)dbgfmt)->module->keyword)
+
+#define yasm_dbgfmt_create(module, object) \
+ module->create(object)
+
+#define yasm_dbgfmt_destroy(dbgfmt) \
+ ((yasm_dbgfmt_base *)dbgfmt)->module->destroy(dbgfmt)
+#define yasm_dbgfmt_generate(object, linemap, ews) \
+ ((yasm_dbgfmt_base *)((object)->dbgfmt))->module->generate \
+ (object, linemap, ews)
+
+#endif
+
+#endif
diff --git a/contrib/tools/yasm/libyasm/errwarn.c b/contrib/tools/yasm/libyasm/errwarn.c
index 4266253bbc..f759cf8f71 100644
--- a/contrib/tools/yasm/libyasm/errwarn.c
+++ b/contrib/tools/yasm/libyasm/errwarn.c
@@ -1,533 +1,533 @@
-/*
- * Error and warning reporting and related functions.
- *
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include "util.h"
-
-#include <ctype.h>
+/*
+ * Error and warning reporting and related functions.
+ *
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "util.h"
+
+#include <ctype.h>
#include <errno.h>
-#include <stdarg.h>
-
-#include "coretype.h"
-
-#include "linemap.h"
-#include "errwarn.h"
-
-
-#define MSG_MAXSIZE 1024
-
-#if !defined(HAVE_TOASCII) || defined(lint)
-# define toascii(c) ((c) & 0x7F)
-#endif
-
-/* Default handlers for replacable functions */
-static /*@exits@*/ void def_internal_error_
- (const char *file, unsigned int line, const char *message);
-static /*@exits@*/ void def_fatal(const char *message, va_list va);
-static const char *def_gettext_hook(const char *msgid);
-
-/* Storage for errwarn's "extern" functions */
-/*@exits@*/ void (*yasm_internal_error_)
- (const char *file, unsigned int line, const char *message)
- = def_internal_error_;
-/*@exits@*/ void (*yasm_fatal) (const char *message, va_list va) = def_fatal;
-const char * (*yasm_gettext_hook) (const char *msgid) = def_gettext_hook;
-
-/* Error indicator */
-/* yasm_eclass is not static so that yasm_error_occurred macro can access it */
-yasm_error_class yasm_eclass;
-static /*@only@*/ /*@null@*/ char *yasm_estr;
-static unsigned long yasm_exrefline;
-static /*@only@*/ /*@null@*/ char *yasm_exrefstr;
-
-/* Warning indicator */
-typedef struct warn {
- /*@reldef@*/ STAILQ_ENTRY(warn) link;
-
- yasm_warn_class wclass;
- /*@owned@*/ /*@null@*/ char *wstr;
-} warn;
-static STAILQ_HEAD(warn_head, warn) yasm_warns;
-
-/* Enabled warnings. See errwarn.h for a list. */
-static unsigned long warn_class_enabled;
-
-typedef struct errwarn_data {
- /*@reldef@*/ SLIST_ENTRY(errwarn_data) link;
-
- enum { WE_UNKNOWN, WE_ERROR, WE_WARNING, WE_PARSERERROR } type;
-
- unsigned long line;
- unsigned long xrefline;
- /*@owned@*/ char *msg;
- /*@owned@*/ char *xrefmsg;
-} errwarn_data;
-
-struct yasm_errwarns {
- /*@reldef@*/ SLIST_HEAD(errwarn_head, errwarn_data) errwarns;
-
- /* Total error count */
- unsigned int ecount;
-
- /* Total warning count */
- unsigned int wcount;
-
- /* Last inserted error/warning. Used to speed up insertions. */
- /*@null@*/ errwarn_data *previous_we;
-};
-
-/* Static buffer for use by conv_unprint(). */
-static char unprint[5];
-
-
-static const char *
-def_gettext_hook(const char *msgid)
-{
- return msgid;
-}
-
-void
-yasm_errwarn_initialize(void)
-{
- /* Default enabled warnings. See errwarn.h for a list. */
- warn_class_enabled =
- (1UL<<YASM_WARN_GENERAL) | (1UL<<YASM_WARN_UNREC_CHAR) |
- (1UL<<YASM_WARN_PREPROC) | (0UL<<YASM_WARN_ORPHAN_LABEL) |
- (1UL<<YASM_WARN_UNINIT_CONTENTS) | (0UL<<YASM_WARN_SIZE_OVERRIDE) |
- (1UL<<YASM_WARN_IMPLICIT_SIZE_OVERRIDE);
-
- yasm_eclass = YASM_ERROR_NONE;
- yasm_estr = NULL;
- yasm_exrefline = 0;
- yasm_exrefstr = NULL;
-
- STAILQ_INIT(&yasm_warns);
-}
-
-void
-yasm_errwarn_cleanup(void)
-{
- yasm_error_clear();
- yasm_warn_clear();
-}
-
-/* Convert a possibly unprintable character into a printable string, using
- * standard cat(1) convention for unprintable characters.
- */
-char *
-yasm__conv_unprint(int ch)
-{
- int pos = 0;
-
- if (((ch & ~0x7F) != 0) /*!isascii(ch)*/ && !isprint(ch)) {
- unprint[pos++] = 'M';
- unprint[pos++] = '-';
- ch &= toascii(ch);
- }
- if (iscntrl(ch)) {
- unprint[pos++] = '^';
- unprint[pos++] = (ch == '\177') ? '?' : ch | 0100;
- } else
- unprint[pos++] = ch;
- unprint[pos] = '\0';
-
- return unprint;
-}
-
-/* Report an internal error. Essentially a fatal error with trace info.
- * Exit immediately because it's essentially an assert() trap.
- */
-static void
-def_internal_error_(const char *file, unsigned int line, const char *message)
-{
- fprintf(stderr,
- yasm_gettext_hook(N_("INTERNAL ERROR at %s, line %u: %s\n")),
- file, line, yasm_gettext_hook(message));
-#ifdef HAVE_ABORT
- abort();
-#else
- exit(EXIT_FAILURE);
-#endif
-}
-
-/* Report a fatal error. These are unrecoverable (such as running out of
- * memory), so just exit immediately.
- */
-static void
-def_fatal(const char *fmt, va_list va)
-{
- fprintf(stderr, "%s: ", yasm_gettext_hook(N_("FATAL")));
- vfprintf(stderr, yasm_gettext_hook(fmt), va);
- fputc('\n', stderr);
- exit(EXIT_FAILURE);
-}
-
-/* Create an errwarn structure in the correct linked list location.
- * If replace_parser_error is nonzero, overwrites the last error if its
- * type is WE_PARSERERROR.
- */
-static errwarn_data *
-errwarn_data_new(yasm_errwarns *errwarns, unsigned long line,
- int replace_parser_error)
-{
- errwarn_data *first, *next, *ins_we, *we;
- enum { INS_NONE, INS_HEAD, INS_AFTER } action = INS_NONE;
-
- /* Find the entry with either line=line or the last one with line<line.
- * Start with the last entry added to speed the search.
- */
- ins_we = errwarns->previous_we;
- first = SLIST_FIRST(&errwarns->errwarns);
- if (!ins_we || !first)
- action = INS_HEAD;
- while (action == INS_NONE) {
- next = SLIST_NEXT(ins_we, link);
- if (line < ins_we->line) {
- if (ins_we == first)
- action = INS_HEAD;
- else
- ins_we = first;
- } else if (!next)
- action = INS_AFTER;
- else if (line >= ins_we->line && line < next->line)
- action = INS_AFTER;
- else
- ins_we = next;
- }
-
- if (replace_parser_error && ins_we && ins_we->type == WE_PARSERERROR) {
- /* overwrite last error */
- we = ins_we;
- } else {
- /* add a new error */
- we = yasm_xmalloc(sizeof(errwarn_data));
-
- we->type = WE_UNKNOWN;
- we->line = line;
- we->xrefline = 0;
- we->msg = NULL;
- we->xrefmsg = NULL;
-
- if (action == INS_HEAD)
- SLIST_INSERT_HEAD(&errwarns->errwarns, we, link);
- else if (action == INS_AFTER) {
- assert(ins_we != NULL);
- SLIST_INSERT_AFTER(ins_we, we, link);
- } else
- yasm_internal_error(N_("Unexpected errwarn insert action"));
- }
-
- /* Remember previous err/warn */
- errwarns->previous_we = we;
-
- return we;
-}
-
-void
-yasm_error_clear(void)
-{
- if (yasm_estr)
- yasm_xfree(yasm_estr);
- if (yasm_exrefstr)
- yasm_xfree(yasm_exrefstr);
- yasm_eclass = YASM_ERROR_NONE;
- yasm_estr = NULL;
- yasm_exrefline = 0;
- yasm_exrefstr = NULL;
-}
-
-int
-yasm_error_matches(yasm_error_class eclass)
-{
- if (yasm_eclass == YASM_ERROR_NONE)
- return eclass == YASM_ERROR_NONE;
- if (yasm_eclass == YASM_ERROR_GENERAL)
- return eclass == YASM_ERROR_GENERAL;
- return (yasm_eclass & eclass) == eclass;
-}
-
-void
-yasm_error_set_va(yasm_error_class eclass, const char *format, va_list va)
-{
- if (yasm_eclass != YASM_ERROR_NONE)
- return;
-
- yasm_eclass = eclass;
- yasm_estr = yasm_xmalloc(MSG_MAXSIZE+1);
-#ifdef HAVE_VSNPRINTF
- vsnprintf(yasm_estr, MSG_MAXSIZE, yasm_gettext_hook(format), va);
-#else
- vsprintf(yasm_estr, yasm_gettext_hook(format), va);
-#endif
-}
-
-void
-yasm_error_set(yasm_error_class eclass, const char *format, ...)
-{
- va_list va;
- va_start(va, format);
- yasm_error_set_va(eclass, format, va);
- va_end(va);
-}
-
-void
-yasm_error_set_xref_va(unsigned long xrefline, const char *format, va_list va)
-{
- if (yasm_eclass != YASM_ERROR_NONE)
- return;
-
- yasm_exrefline = xrefline;
-
- yasm_exrefstr = yasm_xmalloc(MSG_MAXSIZE+1);
-#ifdef HAVE_VSNPRINTF
- vsnprintf(yasm_exrefstr, MSG_MAXSIZE, yasm_gettext_hook(format), va);
-#else
- vsprintf(yasm_exrefstr, yasm_gettext_hook(format), va);
-#endif
-}
-
-void
-yasm_error_set_xref(unsigned long xrefline, const char *format, ...)
-{
- va_list va;
- va_start(va, format);
- yasm_error_set_xref_va(xrefline, format, va);
- va_end(va);
-}
-
-void
-yasm_error_fetch(yasm_error_class *eclass, char **str, unsigned long *xrefline,
- char **xrefstr)
-{
- *eclass = yasm_eclass;
- *str = yasm_estr;
- *xrefline = yasm_exrefline;
- *xrefstr = yasm_exrefstr;
- yasm_eclass = YASM_ERROR_NONE;
- yasm_estr = NULL;
- yasm_exrefline = 0;
- yasm_exrefstr = NULL;
-}
-
-void yasm_warn_clear(void)
-{
- /* Delete all error/warnings */
- while (!STAILQ_EMPTY(&yasm_warns)) {
- warn *w = STAILQ_FIRST(&yasm_warns);
-
- if (w->wstr)
- yasm_xfree(w->wstr);
-
- STAILQ_REMOVE_HEAD(&yasm_warns, link);
- yasm_xfree(w);
- }
-}
-
-yasm_warn_class
-yasm_warn_occurred(void)
-{
- if (STAILQ_EMPTY(&yasm_warns))
- return YASM_WARN_NONE;
- return STAILQ_FIRST(&yasm_warns)->wclass;
-}
-
-void
-yasm_warn_set_va(yasm_warn_class wclass, const char *format, va_list va)
-{
- warn *w;
-
- if (!(warn_class_enabled & (1UL<<wclass)))
- return; /* warning is part of disabled class */
-
- w = yasm_xmalloc(sizeof(warn));
- w->wclass = wclass;
- w->wstr = yasm_xmalloc(MSG_MAXSIZE+1);
-#ifdef HAVE_VSNPRINTF
- vsnprintf(w->wstr, MSG_MAXSIZE, yasm_gettext_hook(format), va);
-#else
- vsprintf(w->wstr, yasm_gettext_hook(format), va);
-#endif
- STAILQ_INSERT_TAIL(&yasm_warns, w, link);
-}
-
-void
-yasm_warn_set(yasm_warn_class wclass, const char *format, ...)
-{
- va_list va;
- va_start(va, format);
- yasm_warn_set_va(wclass, format, va);
- va_end(va);
-}
-
-void
-yasm_warn_fetch(yasm_warn_class *wclass, char **str)
-{
- warn *w = STAILQ_FIRST(&yasm_warns);
-
- if (!w) {
- *wclass = YASM_WARN_NONE;
- *str = NULL;
- return;
- }
-
- *wclass = w->wclass;
- *str = w->wstr;
-
- STAILQ_REMOVE_HEAD(&yasm_warns, link);
- yasm_xfree(w);
-}
-
-void
-yasm_warn_enable(yasm_warn_class num)
-{
- warn_class_enabled |= (1UL<<num);
-}
-
-void
-yasm_warn_disable(yasm_warn_class num)
-{
- warn_class_enabled &= ~(1UL<<num);
-}
-
-void
-yasm_warn_disable_all(void)
-{
- warn_class_enabled = 0;
-}
-
-yasm_errwarns *
-yasm_errwarns_create(void)
-{
- yasm_errwarns *errwarns = yasm_xmalloc(sizeof(yasm_errwarns));
- SLIST_INIT(&errwarns->errwarns);
- errwarns->ecount = 0;
- errwarns->wcount = 0;
- errwarns->previous_we = NULL;
- return errwarns;
-}
-
-void
-yasm_errwarns_destroy(yasm_errwarns *errwarns)
-{
- errwarn_data *we;
-
- /* Delete all error/warnings */
- while (!SLIST_EMPTY(&errwarns->errwarns)) {
- we = SLIST_FIRST(&errwarns->errwarns);
- if (we->msg)
- yasm_xfree(we->msg);
- if (we->xrefmsg)
- yasm_xfree(we->xrefmsg);
-
- SLIST_REMOVE_HEAD(&errwarns->errwarns, link);
- yasm_xfree(we);
- }
-
- yasm_xfree(errwarns);
-}
-
-void
-yasm_errwarn_propagate(yasm_errwarns *errwarns, unsigned long line)
-{
- if (yasm_eclass != YASM_ERROR_NONE) {
- errwarn_data *we = errwarn_data_new(errwarns, line, 1);
- yasm_error_class eclass;
-
- yasm_error_fetch(&eclass, &we->msg, &we->xrefline, &we->xrefmsg);
- if (eclass != YASM_ERROR_GENERAL
- && (eclass & YASM_ERROR_PARSE) == YASM_ERROR_PARSE)
- we->type = WE_PARSERERROR;
- else
- we->type = WE_ERROR;
- errwarns->ecount++;
- }
-
- while (!STAILQ_EMPTY(&yasm_warns)) {
- errwarn_data *we = errwarn_data_new(errwarns, line, 0);
- yasm_warn_class wclass;
-
- yasm_warn_fetch(&wclass, &we->msg);
- we->type = WE_WARNING;
- errwarns->wcount++;
- }
-}
-
-unsigned int
-yasm_errwarns_num_errors(yasm_errwarns *errwarns, int warning_as_error)
-{
- if (warning_as_error)
- return errwarns->ecount+errwarns->wcount;
- else
- return errwarns->ecount;
-}
-
-void
-yasm_errwarns_output_all(yasm_errwarns *errwarns, yasm_linemap *lm,
- int warning_as_error,
- yasm_print_error_func print_error,
- yasm_print_warning_func print_warning)
-{
- errwarn_data *we;
- const char *filename, *xref_filename;
- unsigned long line, xref_line;
-
- /* If we're treating warnings as errors, tell the user about it. */
- if (warning_as_error && warning_as_error != 2) {
- print_error("", 0,
- yasm_gettext_hook(N_("warnings being treated as errors")),
- NULL, 0, NULL);
- warning_as_error = 2;
- }
-
- /* Output error/warnings. */
- SLIST_FOREACH(we, &errwarns->errwarns, link) {
- /* Output error/warning */
- yasm_linemap_lookup(lm, we->line, &filename, &line);
- if (we->xrefline)
- yasm_linemap_lookup(lm, we->xrefline, &xref_filename, &xref_line);
- else {
- xref_filename = NULL;
- xref_line = 0;
- }
- if (we->type == WE_ERROR || we->type == WE_PARSERERROR)
- print_error(filename, line, we->msg, xref_filename, xref_line,
- we->xrefmsg);
- else
- print_warning(filename, line, we->msg);
- }
-}
-
-void
-yasm__fatal(const char *message, ...)
-{
- va_list va;
- va_start(va, message);
- yasm_fatal(message, va);
- /*@notreached@*/
- va_end(va);
-}
+#include <stdarg.h>
+
+#include "coretype.h"
+
+#include "linemap.h"
+#include "errwarn.h"
+
+
+#define MSG_MAXSIZE 1024
+
+#if !defined(HAVE_TOASCII) || defined(lint)
+# define toascii(c) ((c) & 0x7F)
+#endif
+
+/* Default handlers for replacable functions */
+static /*@exits@*/ void def_internal_error_
+ (const char *file, unsigned int line, const char *message);
+static /*@exits@*/ void def_fatal(const char *message, va_list va);
+static const char *def_gettext_hook(const char *msgid);
+
+/* Storage for errwarn's "extern" functions */
+/*@exits@*/ void (*yasm_internal_error_)
+ (const char *file, unsigned int line, const char *message)
+ = def_internal_error_;
+/*@exits@*/ void (*yasm_fatal) (const char *message, va_list va) = def_fatal;
+const char * (*yasm_gettext_hook) (const char *msgid) = def_gettext_hook;
+
+/* Error indicator */
+/* yasm_eclass is not static so that yasm_error_occurred macro can access it */
+yasm_error_class yasm_eclass;
+static /*@only@*/ /*@null@*/ char *yasm_estr;
+static unsigned long yasm_exrefline;
+static /*@only@*/ /*@null@*/ char *yasm_exrefstr;
+
+/* Warning indicator */
+typedef struct warn {
+ /*@reldef@*/ STAILQ_ENTRY(warn) link;
+
+ yasm_warn_class wclass;
+ /*@owned@*/ /*@null@*/ char *wstr;
+} warn;
+static STAILQ_HEAD(warn_head, warn) yasm_warns;
+
+/* Enabled warnings. See errwarn.h for a list. */
+static unsigned long warn_class_enabled;
+
+typedef struct errwarn_data {
+ /*@reldef@*/ SLIST_ENTRY(errwarn_data) link;
+
+ enum { WE_UNKNOWN, WE_ERROR, WE_WARNING, WE_PARSERERROR } type;
+
+ unsigned long line;
+ unsigned long xrefline;
+ /*@owned@*/ char *msg;
+ /*@owned@*/ char *xrefmsg;
+} errwarn_data;
+
+struct yasm_errwarns {
+ /*@reldef@*/ SLIST_HEAD(errwarn_head, errwarn_data) errwarns;
+
+ /* Total error count */
+ unsigned int ecount;
+
+ /* Total warning count */
+ unsigned int wcount;
+
+ /* Last inserted error/warning. Used to speed up insertions. */
+ /*@null@*/ errwarn_data *previous_we;
+};
+
+/* Static buffer for use by conv_unprint(). */
+static char unprint[5];
+
+
+static const char *
+def_gettext_hook(const char *msgid)
+{
+ return msgid;
+}
+
+void
+yasm_errwarn_initialize(void)
+{
+ /* Default enabled warnings. See errwarn.h for a list. */
+ warn_class_enabled =
+ (1UL<<YASM_WARN_GENERAL) | (1UL<<YASM_WARN_UNREC_CHAR) |
+ (1UL<<YASM_WARN_PREPROC) | (0UL<<YASM_WARN_ORPHAN_LABEL) |
+ (1UL<<YASM_WARN_UNINIT_CONTENTS) | (0UL<<YASM_WARN_SIZE_OVERRIDE) |
+ (1UL<<YASM_WARN_IMPLICIT_SIZE_OVERRIDE);
+
+ yasm_eclass = YASM_ERROR_NONE;
+ yasm_estr = NULL;
+ yasm_exrefline = 0;
+ yasm_exrefstr = NULL;
+
+ STAILQ_INIT(&yasm_warns);
+}
+
+void
+yasm_errwarn_cleanup(void)
+{
+ yasm_error_clear();
+ yasm_warn_clear();
+}
+
+/* Convert a possibly unprintable character into a printable string, using
+ * standard cat(1) convention for unprintable characters.
+ */
+char *
+yasm__conv_unprint(int ch)
+{
+ int pos = 0;
+
+ if (((ch & ~0x7F) != 0) /*!isascii(ch)*/ && !isprint(ch)) {
+ unprint[pos++] = 'M';
+ unprint[pos++] = '-';
+ ch &= toascii(ch);
+ }
+ if (iscntrl(ch)) {
+ unprint[pos++] = '^';
+ unprint[pos++] = (ch == '\177') ? '?' : ch | 0100;
+ } else
+ unprint[pos++] = ch;
+ unprint[pos] = '\0';
+
+ return unprint;
+}
+
+/* Report an internal error. Essentially a fatal error with trace info.
+ * Exit immediately because it's essentially an assert() trap.
+ */
+static void
+def_internal_error_(const char *file, unsigned int line, const char *message)
+{
+ fprintf(stderr,
+ yasm_gettext_hook(N_("INTERNAL ERROR at %s, line %u: %s\n")),
+ file, line, yasm_gettext_hook(message));
+#ifdef HAVE_ABORT
+ abort();
+#else
+ exit(EXIT_FAILURE);
+#endif
+}
+
+/* Report a fatal error. These are unrecoverable (such as running out of
+ * memory), so just exit immediately.
+ */
+static void
+def_fatal(const char *fmt, va_list va)
+{
+ fprintf(stderr, "%s: ", yasm_gettext_hook(N_("FATAL")));
+ vfprintf(stderr, yasm_gettext_hook(fmt), va);
+ fputc('\n', stderr);
+ exit(EXIT_FAILURE);
+}
+
+/* Create an errwarn structure in the correct linked list location.
+ * If replace_parser_error is nonzero, overwrites the last error if its
+ * type is WE_PARSERERROR.
+ */
+static errwarn_data *
+errwarn_data_new(yasm_errwarns *errwarns, unsigned long line,
+ int replace_parser_error)
+{
+ errwarn_data *first, *next, *ins_we, *we;
+ enum { INS_NONE, INS_HEAD, INS_AFTER } action = INS_NONE;
+
+ /* Find the entry with either line=line or the last one with line<line.
+ * Start with the last entry added to speed the search.
+ */
+ ins_we = errwarns->previous_we;
+ first = SLIST_FIRST(&errwarns->errwarns);
+ if (!ins_we || !first)
+ action = INS_HEAD;
+ while (action == INS_NONE) {
+ next = SLIST_NEXT(ins_we, link);
+ if (line < ins_we->line) {
+ if (ins_we == first)
+ action = INS_HEAD;
+ else
+ ins_we = first;
+ } else if (!next)
+ action = INS_AFTER;
+ else if (line >= ins_we->line && line < next->line)
+ action = INS_AFTER;
+ else
+ ins_we = next;
+ }
+
+ if (replace_parser_error && ins_we && ins_we->type == WE_PARSERERROR) {
+ /* overwrite last error */
+ we = ins_we;
+ } else {
+ /* add a new error */
+ we = yasm_xmalloc(sizeof(errwarn_data));
+
+ we->type = WE_UNKNOWN;
+ we->line = line;
+ we->xrefline = 0;
+ we->msg = NULL;
+ we->xrefmsg = NULL;
+
+ if (action == INS_HEAD)
+ SLIST_INSERT_HEAD(&errwarns->errwarns, we, link);
+ else if (action == INS_AFTER) {
+ assert(ins_we != NULL);
+ SLIST_INSERT_AFTER(ins_we, we, link);
+ } else
+ yasm_internal_error(N_("Unexpected errwarn insert action"));
+ }
+
+ /* Remember previous err/warn */
+ errwarns->previous_we = we;
+
+ return we;
+}
+
+void
+yasm_error_clear(void)
+{
+ if (yasm_estr)
+ yasm_xfree(yasm_estr);
+ if (yasm_exrefstr)
+ yasm_xfree(yasm_exrefstr);
+ yasm_eclass = YASM_ERROR_NONE;
+ yasm_estr = NULL;
+ yasm_exrefline = 0;
+ yasm_exrefstr = NULL;
+}
+
+int
+yasm_error_matches(yasm_error_class eclass)
+{
+ if (yasm_eclass == YASM_ERROR_NONE)
+ return eclass == YASM_ERROR_NONE;
+ if (yasm_eclass == YASM_ERROR_GENERAL)
+ return eclass == YASM_ERROR_GENERAL;
+ return (yasm_eclass & eclass) == eclass;
+}
+
+void
+yasm_error_set_va(yasm_error_class eclass, const char *format, va_list va)
+{
+ if (yasm_eclass != YASM_ERROR_NONE)
+ return;
+
+ yasm_eclass = eclass;
+ yasm_estr = yasm_xmalloc(MSG_MAXSIZE+1);
+#ifdef HAVE_VSNPRINTF
+ vsnprintf(yasm_estr, MSG_MAXSIZE, yasm_gettext_hook(format), va);
+#else
+ vsprintf(yasm_estr, yasm_gettext_hook(format), va);
+#endif
+}
+
+void
+yasm_error_set(yasm_error_class eclass, const char *format, ...)
+{
+ va_list va;
+ va_start(va, format);
+ yasm_error_set_va(eclass, format, va);
+ va_end(va);
+}
+
+void
+yasm_error_set_xref_va(unsigned long xrefline, const char *format, va_list va)
+{
+ if (yasm_eclass != YASM_ERROR_NONE)
+ return;
+
+ yasm_exrefline = xrefline;
+
+ yasm_exrefstr = yasm_xmalloc(MSG_MAXSIZE+1);
+#ifdef HAVE_VSNPRINTF
+ vsnprintf(yasm_exrefstr, MSG_MAXSIZE, yasm_gettext_hook(format), va);
+#else
+ vsprintf(yasm_exrefstr, yasm_gettext_hook(format), va);
+#endif
+}
+
+void
+yasm_error_set_xref(unsigned long xrefline, const char *format, ...)
+{
+ va_list va;
+ va_start(va, format);
+ yasm_error_set_xref_va(xrefline, format, va);
+ va_end(va);
+}
+
+void
+yasm_error_fetch(yasm_error_class *eclass, char **str, unsigned long *xrefline,
+ char **xrefstr)
+{
+ *eclass = yasm_eclass;
+ *str = yasm_estr;
+ *xrefline = yasm_exrefline;
+ *xrefstr = yasm_exrefstr;
+ yasm_eclass = YASM_ERROR_NONE;
+ yasm_estr = NULL;
+ yasm_exrefline = 0;
+ yasm_exrefstr = NULL;
+}
+
+void yasm_warn_clear(void)
+{
+ /* Delete all error/warnings */
+ while (!STAILQ_EMPTY(&yasm_warns)) {
+ warn *w = STAILQ_FIRST(&yasm_warns);
+
+ if (w->wstr)
+ yasm_xfree(w->wstr);
+
+ STAILQ_REMOVE_HEAD(&yasm_warns, link);
+ yasm_xfree(w);
+ }
+}
+
+yasm_warn_class
+yasm_warn_occurred(void)
+{
+ if (STAILQ_EMPTY(&yasm_warns))
+ return YASM_WARN_NONE;
+ return STAILQ_FIRST(&yasm_warns)->wclass;
+}
+
+void
+yasm_warn_set_va(yasm_warn_class wclass, const char *format, va_list va)
+{
+ warn *w;
+
+ if (!(warn_class_enabled & (1UL<<wclass)))
+ return; /* warning is part of disabled class */
+
+ w = yasm_xmalloc(sizeof(warn));
+ w->wclass = wclass;
+ w->wstr = yasm_xmalloc(MSG_MAXSIZE+1);
+#ifdef HAVE_VSNPRINTF
+ vsnprintf(w->wstr, MSG_MAXSIZE, yasm_gettext_hook(format), va);
+#else
+ vsprintf(w->wstr, yasm_gettext_hook(format), va);
+#endif
+ STAILQ_INSERT_TAIL(&yasm_warns, w, link);
+}
+
+void
+yasm_warn_set(yasm_warn_class wclass, const char *format, ...)
+{
+ va_list va;
+ va_start(va, format);
+ yasm_warn_set_va(wclass, format, va);
+ va_end(va);
+}
+
+void
+yasm_warn_fetch(yasm_warn_class *wclass, char **str)
+{
+ warn *w = STAILQ_FIRST(&yasm_warns);
+
+ if (!w) {
+ *wclass = YASM_WARN_NONE;
+ *str = NULL;
+ return;
+ }
+
+ *wclass = w->wclass;
+ *str = w->wstr;
+
+ STAILQ_REMOVE_HEAD(&yasm_warns, link);
+ yasm_xfree(w);
+}
+
+void
+yasm_warn_enable(yasm_warn_class num)
+{
+ warn_class_enabled |= (1UL<<num);
+}
+
+void
+yasm_warn_disable(yasm_warn_class num)
+{
+ warn_class_enabled &= ~(1UL<<num);
+}
+
+void
+yasm_warn_disable_all(void)
+{
+ warn_class_enabled = 0;
+}
+
+yasm_errwarns *
+yasm_errwarns_create(void)
+{
+ yasm_errwarns *errwarns = yasm_xmalloc(sizeof(yasm_errwarns));
+ SLIST_INIT(&errwarns->errwarns);
+ errwarns->ecount = 0;
+ errwarns->wcount = 0;
+ errwarns->previous_we = NULL;
+ return errwarns;
+}
+
+void
+yasm_errwarns_destroy(yasm_errwarns *errwarns)
+{
+ errwarn_data *we;
+
+ /* Delete all error/warnings */
+ while (!SLIST_EMPTY(&errwarns->errwarns)) {
+ we = SLIST_FIRST(&errwarns->errwarns);
+ if (we->msg)
+ yasm_xfree(we->msg);
+ if (we->xrefmsg)
+ yasm_xfree(we->xrefmsg);
+
+ SLIST_REMOVE_HEAD(&errwarns->errwarns, link);
+ yasm_xfree(we);
+ }
+
+ yasm_xfree(errwarns);
+}
+
+void
+yasm_errwarn_propagate(yasm_errwarns *errwarns, unsigned long line)
+{
+ if (yasm_eclass != YASM_ERROR_NONE) {
+ errwarn_data *we = errwarn_data_new(errwarns, line, 1);
+ yasm_error_class eclass;
+
+ yasm_error_fetch(&eclass, &we->msg, &we->xrefline, &we->xrefmsg);
+ if (eclass != YASM_ERROR_GENERAL
+ && (eclass & YASM_ERROR_PARSE) == YASM_ERROR_PARSE)
+ we->type = WE_PARSERERROR;
+ else
+ we->type = WE_ERROR;
+ errwarns->ecount++;
+ }
+
+ while (!STAILQ_EMPTY(&yasm_warns)) {
+ errwarn_data *we = errwarn_data_new(errwarns, line, 0);
+ yasm_warn_class wclass;
+
+ yasm_warn_fetch(&wclass, &we->msg);
+ we->type = WE_WARNING;
+ errwarns->wcount++;
+ }
+}
+
+unsigned int
+yasm_errwarns_num_errors(yasm_errwarns *errwarns, int warning_as_error)
+{
+ if (warning_as_error)
+ return errwarns->ecount+errwarns->wcount;
+ else
+ return errwarns->ecount;
+}
+
+void
+yasm_errwarns_output_all(yasm_errwarns *errwarns, yasm_linemap *lm,
+ int warning_as_error,
+ yasm_print_error_func print_error,
+ yasm_print_warning_func print_warning)
+{
+ errwarn_data *we;
+ const char *filename, *xref_filename;
+ unsigned long line, xref_line;
+
+ /* If we're treating warnings as errors, tell the user about it. */
+ if (warning_as_error && warning_as_error != 2) {
+ print_error("", 0,
+ yasm_gettext_hook(N_("warnings being treated as errors")),
+ NULL, 0, NULL);
+ warning_as_error = 2;
+ }
+
+ /* Output error/warnings. */
+ SLIST_FOREACH(we, &errwarns->errwarns, link) {
+ /* Output error/warning */
+ yasm_linemap_lookup(lm, we->line, &filename, &line);
+ if (we->xrefline)
+ yasm_linemap_lookup(lm, we->xrefline, &xref_filename, &xref_line);
+ else {
+ xref_filename = NULL;
+ xref_line = 0;
+ }
+ if (we->type == WE_ERROR || we->type == WE_PARSERERROR)
+ print_error(filename, line, we->msg, xref_filename, xref_line,
+ we->xrefmsg);
+ else
+ print_warning(filename, line, we->msg);
+ }
+}
+
+void
+yasm__fatal(const char *message, ...)
+{
+ va_list va;
+ va_start(va, message);
+ yasm_fatal(message, va);
+ /*@notreached@*/
+ va_end(va);
+}
void
yasm__fatal_missing_input_file(const char *message, const char *filename)
diff --git a/contrib/tools/yasm/libyasm/errwarn.h b/contrib/tools/yasm/libyasm/errwarn.h
index 4333528ce8..f8e4f10ec3 100644
--- a/contrib/tools/yasm/libyasm/errwarn.h
+++ b/contrib/tools/yasm/libyasm/errwarn.h
@@ -1,351 +1,351 @@
-/**
- * \file libyasm/errwarn.h
- * \brief YASM error and warning reporting interface.
- *
- * \license
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- * \endlicense
- */
-#ifndef YASM_ERRWARN_H
-#define YASM_ERRWARN_H
-
-#ifndef YASM_LIB_DECL
-#define YASM_LIB_DECL
-#endif
-
-/** Warning classes (that may be enabled/disabled). */
-typedef enum yasm_warn_class {
- YASM_WARN_NONE = 0, /**< No warning */
- YASM_WARN_GENERAL, /**< Non-specific warnings */
- YASM_WARN_UNREC_CHAR, /**< Unrecognized characters (while tokenizing) */
- YASM_WARN_PREPROC, /**< Preprocessor warnings */
- YASM_WARN_ORPHAN_LABEL, /**< Label alone on a line without a colon */
- YASM_WARN_UNINIT_CONTENTS, /**< Uninitialized space in code/data section */
- YASM_WARN_SIZE_OVERRIDE,/**< Double size override */
- YASM_WARN_IMPLICIT_SIZE_OVERRIDE /**< Implicit size override */
-} yasm_warn_class;
-
-/** Error classes. Bitmask-based to support limited subclassing. */
-typedef enum yasm_error_class {
- YASM_ERROR_NONE = 0x0000, /**< No error */
- YASM_ERROR_GENERAL = 0xFFFF, /**< Non-specific */
- YASM_ERROR_ARITHMETIC = 0x0001, /**< Arithmetic error (general) */
- YASM_ERROR_OVERFLOW = 0x8001, /**< Arithmetic overflow */
- YASM_ERROR_FLOATING_POINT = 0x4001, /**< Floating point error */
- YASM_ERROR_ZERO_DIVISION = 0x2001, /**< Divide-by-zero */
- YASM_ERROR_ASSERTION = 0x0002, /**< Assertion error */
- YASM_ERROR_VALUE = 0x0004, /**< Value inappropriate
- * (e.g. not in range) */
- YASM_ERROR_NOT_ABSOLUTE = 0x8004, /**< Absolute expression required */
- YASM_ERROR_TOO_COMPLEX = 0x4004, /**< Expression too complex */
- YASM_ERROR_NOT_CONSTANT = 0x2004, /**< Constant expression required */
- YASM_ERROR_IO = 0x0008, /**< I/O error */
- YASM_ERROR_NOT_IMPLEMENTED = 0x0010, /**< Not implemented error */
- YASM_ERROR_TYPE = 0x0020, /**< Type error */
- YASM_ERROR_SYNTAX = 0x0040, /**< Syntax error */
- YASM_ERROR_PARSE = 0x8040 /**< Parser error */
-} yasm_error_class;
-
-/** Initialize any internal data structures. */
-YASM_LIB_DECL
-void yasm_errwarn_initialize(void);
-
-/** Clean up any memory allocated by yasm_errwarn_initialize() or other
- * functions.
- */
-YASM_LIB_DECL
-void yasm_errwarn_cleanup(void);
-
-/** Reporting point of internal errors. These are usually due to sanity
- * check failures in the code.
- * \warning This function must NOT return to calling code; exit or longjmp
- * instead.
- * \param file source file (ala __FILE__)
- * \param line source line (ala __LINE__)
- * \param message internal error message
- */
-YASM_LIB_DECL
-extern /*@exits@*/ void (*yasm_internal_error_)
- (const char *file, unsigned int line, const char *message);
-
-/** Easily-callable version of yasm_internal_error_(). Automatically uses
- * __FILE__ and __LINE__ as the file and line.
- * \param message internal error message
- */
-#define yasm_internal_error(message) \
- yasm_internal_error_(__FILE__, __LINE__, message)
-
-/** Reporting point of fatal errors.
- * \warning This function must NOT return to calling code; exit or longjmp
- * instead.
- * \param message fatal error message
- * \param va va_list argument list for message
- */
-YASM_LIB_DECL
-extern /*@exits@*/ void (*yasm_fatal) (const char *message, va_list va);
-
-/** Reporting point of fatal errors, with variable arguments (internal only).
- * \warning This function calls #yasm_fatal, and thus does not return to the
- * calling code.
- * \param message fatal error message
- * \param ... argument list for message
- */
-YASM_LIB_DECL
-/*@exits@*/ void yasm__fatal(const char *message, ...);
-
+/**
+ * \file libyasm/errwarn.h
+ * \brief YASM error and warning reporting interface.
+ *
+ * \license
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * - Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ * \endlicense
+ */
+#ifndef YASM_ERRWARN_H
+#define YASM_ERRWARN_H
+
+#ifndef YASM_LIB_DECL
+#define YASM_LIB_DECL
+#endif
+
+/** Warning classes (that may be enabled/disabled). */
+typedef enum yasm_warn_class {
+ YASM_WARN_NONE = 0, /**< No warning */
+ YASM_WARN_GENERAL, /**< Non-specific warnings */
+ YASM_WARN_UNREC_CHAR, /**< Unrecognized characters (while tokenizing) */
+ YASM_WARN_PREPROC, /**< Preprocessor warnings */
+ YASM_WARN_ORPHAN_LABEL, /**< Label alone on a line without a colon */
+ YASM_WARN_UNINIT_CONTENTS, /**< Uninitialized space in code/data section */
+ YASM_WARN_SIZE_OVERRIDE,/**< Double size override */
+ YASM_WARN_IMPLICIT_SIZE_OVERRIDE /**< Implicit size override */
+} yasm_warn_class;
+
+/** Error classes. Bitmask-based to support limited subclassing. */
+typedef enum yasm_error_class {
+ YASM_ERROR_NONE = 0x0000, /**< No error */
+ YASM_ERROR_GENERAL = 0xFFFF, /**< Non-specific */
+ YASM_ERROR_ARITHMETIC = 0x0001, /**< Arithmetic error (general) */
+ YASM_ERROR_OVERFLOW = 0x8001, /**< Arithmetic overflow */
+ YASM_ERROR_FLOATING_POINT = 0x4001, /**< Floating point error */
+ YASM_ERROR_ZERO_DIVISION = 0x2001, /**< Divide-by-zero */
+ YASM_ERROR_ASSERTION = 0x0002, /**< Assertion error */
+ YASM_ERROR_VALUE = 0x0004, /**< Value inappropriate
+ * (e.g. not in range) */
+ YASM_ERROR_NOT_ABSOLUTE = 0x8004, /**< Absolute expression required */
+ YASM_ERROR_TOO_COMPLEX = 0x4004, /**< Expression too complex */
+ YASM_ERROR_NOT_CONSTANT = 0x2004, /**< Constant expression required */
+ YASM_ERROR_IO = 0x0008, /**< I/O error */
+ YASM_ERROR_NOT_IMPLEMENTED = 0x0010, /**< Not implemented error */
+ YASM_ERROR_TYPE = 0x0020, /**< Type error */
+ YASM_ERROR_SYNTAX = 0x0040, /**< Syntax error */
+ YASM_ERROR_PARSE = 0x8040 /**< Parser error */
+} yasm_error_class;
+
+/** Initialize any internal data structures. */
+YASM_LIB_DECL
+void yasm_errwarn_initialize(void);
+
+/** Clean up any memory allocated by yasm_errwarn_initialize() or other
+ * functions.
+ */
+YASM_LIB_DECL
+void yasm_errwarn_cleanup(void);
+
+/** Reporting point of internal errors. These are usually due to sanity
+ * check failures in the code.
+ * \warning This function must NOT return to calling code; exit or longjmp
+ * instead.
+ * \param file source file (ala __FILE__)
+ * \param line source line (ala __LINE__)
+ * \param message internal error message
+ */
+YASM_LIB_DECL
+extern /*@exits@*/ void (*yasm_internal_error_)
+ (const char *file, unsigned int line, const char *message);
+
+/** Easily-callable version of yasm_internal_error_(). Automatically uses
+ * __FILE__ and __LINE__ as the file and line.
+ * \param message internal error message
+ */
+#define yasm_internal_error(message) \
+ yasm_internal_error_(__FILE__, __LINE__, message)
+
+/** Reporting point of fatal errors.
+ * \warning This function must NOT return to calling code; exit or longjmp
+ * instead.
+ * \param message fatal error message
+ * \param va va_list argument list for message
+ */
+YASM_LIB_DECL
+extern /*@exits@*/ void (*yasm_fatal) (const char *message, va_list va);
+
+/** Reporting point of fatal errors, with variable arguments (internal only).
+ * \warning This function calls #yasm_fatal, and thus does not return to the
+ * calling code.
+ * \param message fatal error message
+ * \param ... argument list for message
+ */
+YASM_LIB_DECL
+/*@exits@*/ void yasm__fatal(const char *message, ...);
+
YASM_LIB_DECL
/*@exits@*/ void yasm__fatal_missing_input_file(const char *message, const char *filename);
-/** Unconditionally clear the error indicator, freeing any associated data.
- * Has no effect if the error indicator is not set.
- */
-YASM_LIB_DECL
-void yasm_error_clear(void);
-
-/** Get the error indicator. YASM_ERROR_NONE is returned if no error has
- * been set. Note that as YASM_ERROR_NONE is 0, the return value can also
- * be treated as a boolean value.
- * \return Current error indicator.
- */
-yasm_error_class yasm_error_occurred(void);
-
-/** Check the error indicator against an error class. To check if any error
- * has been set, check against the YASM_ERROR_GENERAL class. This function
- * properly checks error subclasses.
- * \param eclass base error class to check against
- * \return Nonzero if error indicator is set and a subclass of eclass, 0
- * otherwise.
- */
-YASM_LIB_DECL
-int yasm_error_matches(yasm_error_class eclass);
-
-#ifndef YASM_DOXYGEN
-YASM_LIB_DECL
-extern yasm_error_class yasm_eclass;
-#define yasm_error_occurred() yasm_eclass
-#endif
-
-/** Set the error indicator (va_list version). Has no effect if the error
- * indicator is already set.
- * \param eclass error class
- * \param format printf format string
- * \param va argument list for format
- */
-YASM_LIB_DECL
-void yasm_error_set_va(yasm_error_class eclass, const char *format, va_list va);
-
-/** Set the error indicator. Has no effect if the error indicator is already
- * set.
- * \param eclass error class
- * \param format printf format string
- * \param ... argument list for format
- */
-YASM_LIB_DECL
-void yasm_error_set(yasm_error_class eclass, const char *format, ...)
- /*@printflike@*/;
-
-/** Set a cross-reference for a new error (va_list version). Has no effect
- * if the error indicator is already set (e.g. with yasm_error_set()). This
- * function must be called prior to its corresponding yasm_error_set() call.
- * \param xrefline virtual line to cross-reference to (should not be 0)
- * \param format printf format string
- * \param va argument list for format
- */
-YASM_LIB_DECL
-void yasm_error_set_xref_va(unsigned long xrefline, const char *format,
- va_list va);
-
-/** Set a cross-reference for a new error. Has no effect if the error
- * indicator is already set (e.g. with yasm_error_set()). This function
- * must be called prior to its corresponding yasm_error_set() call.
- * \param xrefline virtual line to cross-reference to (should not be 0)
- * \param format printf format string
- * \param ... argument list for format
- */
-YASM_LIB_DECL
-void yasm_error_set_xref(unsigned long xrefline, const char *format, ...)
- /*@printflike@*/;
-
-/** Fetch the error indicator and all associated data. If the error
- * indicator is set, the output pointers are set to the current error
- * indicator values, and the error indicator is cleared.
- * The code using this function is then responsible for yasm_xfree()'ing
- * str and xrefstr (if non-NULL). If the error indicator is not set,
- * all output values are set to 0 (including eclass, which is set to
- * YASM_ERROR_NONE).
- * \param eclass error class (output)
- * \param str error message
- * \param xrefline virtual line used for cross-referencing (0 if no xref)
- * \param xrefstr cross-reference error message (NULL if no xref)
- */
-YASM_LIB_DECL
-void yasm_error_fetch(/*@out@*/ yasm_error_class *eclass,
- /*@out@*/ /*@only@*/ /*@null@*/ char **str,
- /*@out@*/ unsigned long *xrefline,
- /*@out@*/ /*@only@*/ /*@null@*/ char **xrefstr);
-
-/** Unconditionally clear all warning indicators, freeing any associated data.
- * Has no effect if no warning indicators have been set.
- */
-YASM_LIB_DECL
-void yasm_warn_clear(void);
-
-/** Get the first warning indicator. YASM_WARN_NONE is returned if no warning
- * has been set. Note that as YASM_WARN_NONE is 0, the return value can also
- * be treated as a boolean value.
- * \return First warning indicator.
- */
-YASM_LIB_DECL
-yasm_warn_class yasm_warn_occurred(void);
-
-/** Add a warning indicator (va_list version).
- * \param wclass warning class
- * \param format printf format string
- * \param va argument list for format
- */
-YASM_LIB_DECL
-void yasm_warn_set_va(yasm_warn_class wclass, const char *format, va_list va);
-
-/** Add a warning indicator.
- * \param wclass warning class
- * \param format printf format string
- * \param ... argument list for format
- */
-YASM_LIB_DECL
-void yasm_warn_set(yasm_warn_class wclass, const char *format, ...)
- /*@printflike@*/;
-
-/** Fetch the first warning indicator and all associated data. If there
- * is at least one warning indicator, the output pointers are set to the
- * first warning indicator values, and first warning indicator is removed.
- * The code using this function is then responsible for yasm_xfree()'ing
- * str and xrefstr (if non-NULL). If there is no warning indicator set,
- * all output values are set to 0 (including wclass, which is set to
- * YASM_WARN_NONE).
- * \param wclass warning class (output)
- * \param str warning message
- */
-YASM_LIB_DECL
-void yasm_warn_fetch(/*@out@*/ yasm_warn_class *wclass,
- /*@out@*/ /*@only@*/ char **str);
-
-/** Enable a class of warnings.
- * \param wclass warning class
- */
-YASM_LIB_DECL
-void yasm_warn_enable(yasm_warn_class wclass);
-
-/** Disable a class of warnings.
- * \param wclass warning class
- */
-YASM_LIB_DECL
-void yasm_warn_disable(yasm_warn_class wclass);
-
-/** Disable all classes of warnings. */
-YASM_LIB_DECL
-void yasm_warn_disable_all(void);
-
-/** Create an error/warning set for collection of multiple error/warnings.
- * \return Newly allocated set.
- */
-YASM_LIB_DECL
-/*@only@*/ yasm_errwarns *yasm_errwarns_create(void);
-
-/** Destroy an error/warning set.
- * \param errwarns error/warning set
- */
-YASM_LIB_DECL
-void yasm_errwarns_destroy(/*@only@*/ yasm_errwarns *errwarns);
-
-/** Propagate error indicator and warning indicator(s) to an error/warning set.
- * Has no effect if the error indicator and warning indicator are not set.
- * Does not print immediately; yasm_errwarn_output_all() outputs
- * accumulated errors and warnings.
- * Generally multiple errors on the same line will be reported, but errors
- * of class YASM_ERROR_PARSE will get overwritten by any other class on the
- * same line.
- * \param errwarns error/warning set
- * \param line virtual line
- */
-YASM_LIB_DECL
-void yasm_errwarn_propagate(yasm_errwarns *errwarns, unsigned long line);
-
-/** Get total number of errors logged.
- * \param errwarns error/warning set
- * \param warning_as_error if nonzero, warnings are treated as errors.
- * \return Number of errors.
- */
-YASM_LIB_DECL
-unsigned int yasm_errwarns_num_errors(yasm_errwarns *errwarns,
- int warning_as_error);
-
-/** Print out an error.
- * \param fn filename of source file
- * \param line line number
- * \param msg error message
- * \param xref_fn cross-referenced source filename
- * \param xref_line cross-referenced line number
- * \param xref_msg cross-referenced error message
- */
-typedef void (*yasm_print_error_func)
- (const char *fn, unsigned long line, const char *msg,
- /*@null@*/ const char *xref_fn, unsigned long xref_line,
- /*@null@*/ const char *xref_msg);
-
-/** Print out a warning.
- * \param fn filename of source file
- * \param line line number
- * \param msg warning message
- */
-typedef void (*yasm_print_warning_func)
- (const char *fn, unsigned long line, const char *msg);
-
-/** Outputs error/warning set in sorted order (sorted by virtual line number).
- * \param errwarns error/warning set
- * \param lm line map (to convert virtual lines into filename/line pairs)
- * \param warning_as_error if nonzero, treat warnings as errors.
- * \param print_error function called to print out errors
- * \param print_warning function called to print out warnings
- */
-YASM_LIB_DECL
-void yasm_errwarns_output_all
- (yasm_errwarns *errwarns, yasm_linemap *lm, int warning_as_error,
- yasm_print_error_func print_error, yasm_print_warning_func print_warning);
-
-/** Convert a possibly unprintable character into a printable string.
- * \internal
- * \param ch possibly unprintable character
- * \return Printable string representation (static buffer).
- */
-YASM_LIB_DECL
-char *yasm__conv_unprint(int ch);
-
-/** Hook for library users to map to gettext() if GNU gettext is being used.
- * \param msgid message catalog identifier
- * \return Translated message.
- */
-YASM_LIB_DECL
-extern const char * (*yasm_gettext_hook) (const char *msgid);
-
-#endif
+/** Unconditionally clear the error indicator, freeing any associated data.
+ * Has no effect if the error indicator is not set.
+ */
+YASM_LIB_DECL
+void yasm_error_clear(void);
+
+/** Get the error indicator. YASM_ERROR_NONE is returned if no error has
+ * been set. Note that as YASM_ERROR_NONE is 0, the return value can also
+ * be treated as a boolean value.
+ * \return Current error indicator.
+ */
+yasm_error_class yasm_error_occurred(void);
+
+/** Check the error indicator against an error class. To check if any error
+ * has been set, check against the YASM_ERROR_GENERAL class. This function
+ * properly checks error subclasses.
+ * \param eclass base error class to check against
+ * \return Nonzero if error indicator is set and a subclass of eclass, 0
+ * otherwise.
+ */
+YASM_LIB_DECL
+int yasm_error_matches(yasm_error_class eclass);
+
+#ifndef YASM_DOXYGEN
+YASM_LIB_DECL
+extern yasm_error_class yasm_eclass;
+#define yasm_error_occurred() yasm_eclass
+#endif
+
+/** Set the error indicator (va_list version). Has no effect if the error
+ * indicator is already set.
+ * \param eclass error class
+ * \param format printf format string
+ * \param va argument list for format
+ */
+YASM_LIB_DECL
+void yasm_error_set_va(yasm_error_class eclass, const char *format, va_list va);
+
+/** Set the error indicator. Has no effect if the error indicator is already
+ * set.
+ * \param eclass error class
+ * \param format printf format string
+ * \param ... argument list for format
+ */
+YASM_LIB_DECL
+void yasm_error_set(yasm_error_class eclass, const char *format, ...)
+ /*@printflike@*/;
+
+/** Set a cross-reference for a new error (va_list version). Has no effect
+ * if the error indicator is already set (e.g. with yasm_error_set()). This
+ * function must be called prior to its corresponding yasm_error_set() call.
+ * \param xrefline virtual line to cross-reference to (should not be 0)
+ * \param format printf format string
+ * \param va argument list for format
+ */
+YASM_LIB_DECL
+void yasm_error_set_xref_va(unsigned long xrefline, const char *format,
+ va_list va);
+
+/** Set a cross-reference for a new error. Has no effect if the error
+ * indicator is already set (e.g. with yasm_error_set()). This function
+ * must be called prior to its corresponding yasm_error_set() call.
+ * \param xrefline virtual line to cross-reference to (should not be 0)
+ * \param format printf format string
+ * \param ... argument list for format
+ */
+YASM_LIB_DECL
+void yasm_error_set_xref(unsigned long xrefline, const char *format, ...)
+ /*@printflike@*/;
+
+/** Fetch the error indicator and all associated data. If the error
+ * indicator is set, the output pointers are set to the current error
+ * indicator values, and the error indicator is cleared.
+ * The code using this function is then responsible for yasm_xfree()'ing
+ * str and xrefstr (if non-NULL). If the error indicator is not set,
+ * all output values are set to 0 (including eclass, which is set to
+ * YASM_ERROR_NONE).
+ * \param eclass error class (output)
+ * \param str error message
+ * \param xrefline virtual line used for cross-referencing (0 if no xref)
+ * \param xrefstr cross-reference error message (NULL if no xref)
+ */
+YASM_LIB_DECL
+void yasm_error_fetch(/*@out@*/ yasm_error_class *eclass,
+ /*@out@*/ /*@only@*/ /*@null@*/ char **str,
+ /*@out@*/ unsigned long *xrefline,
+ /*@out@*/ /*@only@*/ /*@null@*/ char **xrefstr);
+
+/** Unconditionally clear all warning indicators, freeing any associated data.
+ * Has no effect if no warning indicators have been set.
+ */
+YASM_LIB_DECL
+void yasm_warn_clear(void);
+
+/** Get the first warning indicator. YASM_WARN_NONE is returned if no warning
+ * has been set. Note that as YASM_WARN_NONE is 0, the return value can also
+ * be treated as a boolean value.
+ * \return First warning indicator.
+ */
+YASM_LIB_DECL
+yasm_warn_class yasm_warn_occurred(void);
+
+/** Add a warning indicator (va_list version).
+ * \param wclass warning class
+ * \param format printf format string
+ * \param va argument list for format
+ */
+YASM_LIB_DECL
+void yasm_warn_set_va(yasm_warn_class wclass, const char *format, va_list va);
+
+/** Add a warning indicator.
+ * \param wclass warning class
+ * \param format printf format string
+ * \param ... argument list for format
+ */
+YASM_LIB_DECL
+void yasm_warn_set(yasm_warn_class wclass, const char *format, ...)
+ /*@printflike@*/;
+
+/** Fetch the first warning indicator and all associated data. If there
+ * is at least one warning indicator, the output pointers are set to the
+ * first warning indicator values, and first warning indicator is removed.
+ * The code using this function is then responsible for yasm_xfree()'ing
+ * str and xrefstr (if non-NULL). If there is no warning indicator set,
+ * all output values are set to 0 (including wclass, which is set to
+ * YASM_WARN_NONE).
+ * \param wclass warning class (output)
+ * \param str warning message
+ */
+YASM_LIB_DECL
+void yasm_warn_fetch(/*@out@*/ yasm_warn_class *wclass,
+ /*@out@*/ /*@only@*/ char **str);
+
+/** Enable a class of warnings.
+ * \param wclass warning class
+ */
+YASM_LIB_DECL
+void yasm_warn_enable(yasm_warn_class wclass);
+
+/** Disable a class of warnings.
+ * \param wclass warning class
+ */
+YASM_LIB_DECL
+void yasm_warn_disable(yasm_warn_class wclass);
+
+/** Disable all classes of warnings. */
+YASM_LIB_DECL
+void yasm_warn_disable_all(void);
+
+/** Create an error/warning set for collection of multiple error/warnings.
+ * \return Newly allocated set.
+ */
+YASM_LIB_DECL
+/*@only@*/ yasm_errwarns *yasm_errwarns_create(void);
+
+/** Destroy an error/warning set.
+ * \param errwarns error/warning set
+ */
+YASM_LIB_DECL
+void yasm_errwarns_destroy(/*@only@*/ yasm_errwarns *errwarns);
+
+/** Propagate error indicator and warning indicator(s) to an error/warning set.
+ * Has no effect if the error indicator and warning indicator are not set.
+ * Does not print immediately; yasm_errwarn_output_all() outputs
+ * accumulated errors and warnings.
+ * Generally multiple errors on the same line will be reported, but errors
+ * of class YASM_ERROR_PARSE will get overwritten by any other class on the
+ * same line.
+ * \param errwarns error/warning set
+ * \param line virtual line
+ */
+YASM_LIB_DECL
+void yasm_errwarn_propagate(yasm_errwarns *errwarns, unsigned long line);
+
+/** Get total number of errors logged.
+ * \param errwarns error/warning set
+ * \param warning_as_error if nonzero, warnings are treated as errors.
+ * \return Number of errors.
+ */
+YASM_LIB_DECL
+unsigned int yasm_errwarns_num_errors(yasm_errwarns *errwarns,
+ int warning_as_error);
+
+/** Print out an error.
+ * \param fn filename of source file
+ * \param line line number
+ * \param msg error message
+ * \param xref_fn cross-referenced source filename
+ * \param xref_line cross-referenced line number
+ * \param xref_msg cross-referenced error message
+ */
+typedef void (*yasm_print_error_func)
+ (const char *fn, unsigned long line, const char *msg,
+ /*@null@*/ const char *xref_fn, unsigned long xref_line,
+ /*@null@*/ const char *xref_msg);
+
+/** Print out a warning.
+ * \param fn filename of source file
+ * \param line line number
+ * \param msg warning message
+ */
+typedef void (*yasm_print_warning_func)
+ (const char *fn, unsigned long line, const char *msg);
+
+/** Outputs error/warning set in sorted order (sorted by virtual line number).
+ * \param errwarns error/warning set
+ * \param lm line map (to convert virtual lines into filename/line pairs)
+ * \param warning_as_error if nonzero, treat warnings as errors.
+ * \param print_error function called to print out errors
+ * \param print_warning function called to print out warnings
+ */
+YASM_LIB_DECL
+void yasm_errwarns_output_all
+ (yasm_errwarns *errwarns, yasm_linemap *lm, int warning_as_error,
+ yasm_print_error_func print_error, yasm_print_warning_func print_warning);
+
+/** Convert a possibly unprintable character into a printable string.
+ * \internal
+ * \param ch possibly unprintable character
+ * \return Printable string representation (static buffer).
+ */
+YASM_LIB_DECL
+char *yasm__conv_unprint(int ch);
+
+/** Hook for library users to map to gettext() if GNU gettext is being used.
+ * \param msgid message catalog identifier
+ * \return Translated message.
+ */
+YASM_LIB_DECL
+extern const char * (*yasm_gettext_hook) (const char *msgid);
+
+#endif
diff --git a/contrib/tools/yasm/libyasm/expr.c b/contrib/tools/yasm/libyasm/expr.c
index 4c9958449d..c2c868ede2 100644
--- a/contrib/tools/yasm/libyasm/expr.c
+++ b/contrib/tools/yasm/libyasm/expr.c
@@ -1,1516 +1,1516 @@
-/*
- * Expression handling
- *
- * Copyright (C) 2001-2007 Michael Urman, Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include "util.h"
-
-#include "libyasm-stdint.h"
-#include "coretype.h"
-#include "bitvect.h"
-
-#include "errwarn.h"
-#include "intnum.h"
-#include "floatnum.h"
-#include "expr.h"
-#include "symrec.h"
-
-#include "bytecode.h"
-#include "section.h"
-
-#include "arch.h"
-
-
-static /*@only@*/ yasm_expr *expr_level_op
- (/*@returned@*/ /*@only@*/ yasm_expr *e, int fold_const,
- int simplify_ident, int simplify_reg_mul);
-static int expr_traverse_nodes_post(/*@null@*/ yasm_expr *e,
- /*@null@*/ void *d,
- int (*func) (/*@null@*/ yasm_expr *e,
- /*@null@*/ void *d));
-static void expr_delete_term(yasm_expr__item *term, int recurse);
-
-/* Bitmap of used items. We should really never need more than 2 at a time,
- * so 31 is pretty much overkill.
- */
-static unsigned long itempool_used = 0;
-static yasm_expr__item itempool[31];
-
-/* allocate a new expression node, with children as defined.
- * If it's a unary operator, put the element in left and set right=NULL. */
-/*@-compmempass@*/
-yasm_expr *
-yasm_expr_create(yasm_expr_op op, yasm_expr__item *left,
- yasm_expr__item *right, unsigned long line)
-{
- yasm_expr *ptr, *sube;
- unsigned long z;
- ptr = yasm_xmalloc(sizeof(yasm_expr));
-
- ptr->op = op;
- ptr->numterms = 0;
- ptr->terms[0].type = YASM_EXPR_NONE;
- ptr->terms[1].type = YASM_EXPR_NONE;
- if (left) {
- ptr->terms[0] = *left; /* structure copy */
- z = (unsigned long)(left-itempool);
- if (z>=31)
- yasm_internal_error(N_("could not find expritem in pool"));
- itempool_used &= ~(1<<z);
- ptr->numterms++;
-
- /* Search downward until we find something *other* than an
- * IDENT, then bring it up to the current level.
- */
- while (ptr->terms[0].type == YASM_EXPR_EXPR &&
- ptr->terms[0].data.expn->op == YASM_EXPR_IDENT) {
- sube = ptr->terms[0].data.expn;
- ptr->terms[0] = sube->terms[0]; /* structure copy */
- /*@-usereleased@*/
- yasm_xfree(sube);
- /*@=usereleased@*/
- }
- } else {
- yasm_internal_error(N_("Right side of expression must exist"));
- }
-
- if (right) {
- ptr->terms[1] = *right; /* structure copy */
- z = (unsigned long)(right-itempool);
- if (z>=31)
- yasm_internal_error(N_("could not find expritem in pool"));
- itempool_used &= ~(1<<z);
- ptr->numterms++;
-
- /* Search downward until we find something *other* than an
- * IDENT, then bring it up to the current level.
- */
- while (ptr->terms[1].type == YASM_EXPR_EXPR &&
- ptr->terms[1].data.expn->op == YASM_EXPR_IDENT) {
- sube = ptr->terms[1].data.expn;
- ptr->terms[1] = sube->terms[0]; /* structure copy */
- /*@-usereleased@*/
- yasm_xfree(sube);
- /*@=usereleased@*/
- }
- }
-
- ptr->line = line;
-
- return expr_level_op(ptr, 1, 1, 0);
-}
-/*@=compmempass@*/
-
-/* helpers */
-static yasm_expr__item *
-expr_get_item(void)
-{
- int z = 0;
- unsigned long v = itempool_used & 0x7fffffff;
-
- while (v & 1) {
- v >>= 1;
- z++;
- }
- if (z>=31)
- yasm_internal_error(N_("too many expritems"));
- itempool_used |= 1<<z;
- return &itempool[z];
-}
-
-yasm_expr__item *
-yasm_expr_precbc(yasm_bytecode *precbc)
-{
- yasm_expr__item *e = expr_get_item();
- e->type = YASM_EXPR_PRECBC;
- e->data.precbc = precbc;
- return e;
-}
-
-yasm_expr__item *
-yasm_expr_sym(yasm_symrec *s)
-{
- yasm_expr__item *e = expr_get_item();
- e->type = YASM_EXPR_SYM;
- e->data.sym = s;
- return e;
-}
-
-yasm_expr__item *
-yasm_expr_expr(yasm_expr *x)
-{
- yasm_expr__item *e = expr_get_item();
- e->type = YASM_EXPR_EXPR;
- e->data.expn = x;
- return e;
-}
-
-yasm_expr__item *
-yasm_expr_int(yasm_intnum *i)
-{
- yasm_expr__item *e = expr_get_item();
- e->type = YASM_EXPR_INT;
- e->data.intn = i;
- return e;
-}
-
-yasm_expr__item *
-yasm_expr_float(yasm_floatnum *f)
-{
- yasm_expr__item *e = expr_get_item();
- e->type = YASM_EXPR_FLOAT;
- e->data.flt = f;
- return e;
-}
-
-yasm_expr__item *
-yasm_expr_reg(uintptr_t reg)
-{
- yasm_expr__item *e = expr_get_item();
- e->type = YASM_EXPR_REG;
- e->data.reg = reg;
- return e;
-}
-
-/* Transforms instances of symrec-symrec [symrec+(-1*symrec)] into single
- * expritems if possible. Uses a simple n^2 algorithm because n is usually
- * quite small. Also works for precbc-precbc (or symrec-precbc,
- * precbc-symrec).
- */
-static /*@only@*/ yasm_expr *
-expr_xform_bc_dist_base(/*@returned@*/ /*@only@*/ yasm_expr *e,
- /*@null@*/ void *cbd,
- int (*callback) (yasm_expr__item *ei,
- yasm_bytecode *precbc,
- yasm_bytecode *precbc2,
- void *cbd))
-{
- int i;
- /*@dependent@*/ yasm_section *sect;
- /*@dependent@*/ /*@null@*/ yasm_bytecode *precbc;
- int numterms;
-
- /* Handle symrec-symrec in ADD exprs by looking for (-1*symrec) and
- * symrec term pairs (where both symrecs are in the same segment).
- */
- if (e->op != YASM_EXPR_ADD)
- return e;
-
- for (i=0; i<e->numterms; i++) {
- int j;
- yasm_expr *sube;
- yasm_intnum *intn;
- yasm_symrec *sym = NULL;
- /*@dependent@*/ yasm_section *sect2;
- /*@dependent@*/ /*@null@*/ yasm_bytecode *precbc2;
-
- /* First look for an (-1*symrec) term */
- if (e->terms[i].type != YASM_EXPR_EXPR)
- continue;
- sube = e->terms[i].data.expn;
- if (sube->op != YASM_EXPR_MUL || sube->numterms != 2)
- continue;
-
- if (sube->terms[0].type == YASM_EXPR_INT &&
- (sube->terms[1].type == YASM_EXPR_SYM ||
- sube->terms[1].type == YASM_EXPR_PRECBC)) {
- intn = sube->terms[0].data.intn;
- if (sube->terms[1].type == YASM_EXPR_PRECBC)
- precbc = sube->terms[1].data.precbc;
- else
- sym = sube->terms[1].data.sym;
- } else if ((sube->terms[0].type == YASM_EXPR_SYM ||
- sube->terms[0].type == YASM_EXPR_PRECBC) &&
- sube->terms[1].type == YASM_EXPR_INT) {
- if (sube->terms[0].type == YASM_EXPR_PRECBC)
- precbc = sube->terms[0].data.precbc;
- else
- sym = sube->terms[0].data.sym;
- intn = sube->terms[1].data.intn;
- } else
- continue;
-
- if (!yasm_intnum_is_neg1(intn))
- continue;
-
- if (sym && !yasm_symrec_get_label(sym, &precbc))
- continue;
- sect2 = yasm_bc_get_section(precbc);
-
- /* Now look for a symrec term in the same segment */
- for (j=0; j<e->numterms; j++) {
- if (((e->terms[j].type == YASM_EXPR_SYM &&
- yasm_symrec_get_label(e->terms[j].data.sym, &precbc2)) ||
- (e->terms[j].type == YASM_EXPR_PRECBC &&
- (precbc2 = e->terms[j].data.precbc))) &&
- (sect = yasm_bc_get_section(precbc2)) &&
- sect == sect2 &&
- callback(&e->terms[j], precbc, precbc2, cbd)) {
- /* Delete the matching (-1*symrec) term */
- yasm_expr_destroy(sube);
- e->terms[i].type = YASM_EXPR_NONE;
- break; /* stop looking for matching symrec term */
- }
- }
- }
-
- /* Clean up any deleted (EXPR_NONE) terms */
- numterms = 0;
- for (i=0; i<e->numterms; i++) {
- if (e->terms[i].type != YASM_EXPR_NONE)
- e->terms[numterms++] = e->terms[i]; /* structure copy */
- }
- if (e->numterms != numterms) {
- e->numterms = numterms;
- e = yasm_xrealloc(e, sizeof(yasm_expr)+((numterms<2) ? 0 :
- sizeof(yasm_expr__item)*(numterms-2)));
- if (numterms == 1)
- e->op = YASM_EXPR_IDENT;
- }
-
- return e;
-}
-
-static int
-expr_xform_bc_dist_cb(yasm_expr__item *ei, yasm_bytecode *precbc,
- yasm_bytecode *precbc2, /*@null@*/ void *d)
-{
- yasm_intnum *dist = yasm_calc_bc_dist(precbc, precbc2);
- if (!dist)
- return 0;
- /* Change the term to an integer */
- ei->type = YASM_EXPR_INT;
- ei->data.intn = dist;
- return 1;
-}
-
-/* Transforms instances of symrec-symrec [symrec+(-1*symrec)] into integers if
- * possible.
- */
-static /*@only@*/ yasm_expr *
-expr_xform_bc_dist(/*@returned@*/ /*@only@*/ yasm_expr *e)
-{
- return expr_xform_bc_dist_base(e, NULL, expr_xform_bc_dist_cb);
-}
-
-typedef struct bc_dist_subst_cbd {
- void (*callback) (unsigned int subst, yasm_bytecode *precbc,
- yasm_bytecode *precbc2, void *cbd);
- void *cbd;
- unsigned int subst;
-} bc_dist_subst_cbd;
-
-static int
-expr_bc_dist_subst_cb(yasm_expr__item *ei, yasm_bytecode *precbc,
- yasm_bytecode *precbc2, /*@null@*/ void *d)
-{
- bc_dist_subst_cbd *my_cbd = d;
- assert(my_cbd != NULL);
- /* Call higher-level callback */
- my_cbd->callback(my_cbd->subst, precbc, precbc2, my_cbd->cbd);
- /* Change the term to an subst */
- ei->type = YASM_EXPR_SUBST;
- ei->data.subst = my_cbd->subst;
- my_cbd->subst++;
- return 1;
-}
-
-static yasm_expr *
-expr_xform_bc_dist_subst(yasm_expr *e, void *d)
-{
- return expr_xform_bc_dist_base(e, d, expr_bc_dist_subst_cb);
-}
-
-int
-yasm_expr__bc_dist_subst(yasm_expr **ep, void *cbd,
- void (*callback) (unsigned int subst,
- yasm_bytecode *precbc,
- yasm_bytecode *precbc2,
- void *cbd))
-{
- bc_dist_subst_cbd my_cbd; /* callback info for low-level callback */
- my_cbd.callback = callback;
- my_cbd.cbd = cbd;
- my_cbd.subst = 0;
- *ep = yasm_expr__level_tree(*ep, 1, 1, 1, 0, &expr_xform_bc_dist_subst,
- &my_cbd);
- return my_cbd.subst;
-}
-
-/* Negate just a single ExprItem by building a -1*ei subexpression */
-static void
-expr_xform_neg_item(yasm_expr *e, yasm_expr__item *ei)
-{
- yasm_expr *sube = yasm_xmalloc(sizeof(yasm_expr));
-
- /* Build -1*ei subexpression */
- sube->op = YASM_EXPR_MUL;
- sube->line = e->line;
- sube->numterms = 2;
- sube->terms[0].type = YASM_EXPR_INT;
- sube->terms[0].data.intn = yasm_intnum_create_int(-1);
- sube->terms[1] = *ei; /* structure copy */
-
- /* Replace original ExprItem with subexp */
- ei->type = YASM_EXPR_EXPR;
- ei->data.expn = sube;
-}
-
-/* Negates e by multiplying by -1, with distribution over lower-precedence
- * operators (eg ADD) and special handling to simplify result w/ADD, NEG, and
- * others.
- *
- * Returns a possibly reallocated e.
- */
-static /*@only@*/ yasm_expr *
-expr_xform_neg_helper(/*@returned@*/ /*@only@*/ yasm_expr *e)
-{
- yasm_expr *ne;
- int i;
-
- switch (e->op) {
- case YASM_EXPR_ADD:
- /* distribute (recursively if expr) over terms */
- for (i=0; i<e->numterms; i++) {
- if (e->terms[i].type == YASM_EXPR_EXPR)
- e->terms[i].data.expn =
- expr_xform_neg_helper(e->terms[i].data.expn);
- else
- expr_xform_neg_item(e, &e->terms[i]);
- }
- break;
- case YASM_EXPR_SUB:
- /* change op to ADD, and recursively negate left side (if expr) */
- e->op = YASM_EXPR_ADD;
- if (e->terms[0].type == YASM_EXPR_EXPR)
- e->terms[0].data.expn =
- expr_xform_neg_helper(e->terms[0].data.expn);
- else
- expr_xform_neg_item(e, &e->terms[0]);
- break;
- case YASM_EXPR_NEG:
- /* Negating a negated value? Make it an IDENT. */
- e->op = YASM_EXPR_IDENT;
- break;
- case YASM_EXPR_IDENT:
- /* Negating an ident? Change it into a MUL w/ -1 if there's no
- * floatnums present below; if there ARE floatnums, recurse.
- */
- if (e->terms[0].type == YASM_EXPR_FLOAT)
- yasm_floatnum_calc(e->terms[0].data.flt, YASM_EXPR_NEG, NULL);
- else if (e->terms[0].type == YASM_EXPR_INT)
- yasm_intnum_calc(e->terms[0].data.intn, YASM_EXPR_NEG, NULL);
- else if (e->terms[0].type == YASM_EXPR_EXPR &&
- yasm_expr__contains(e->terms[0].data.expn, YASM_EXPR_FLOAT))
- expr_xform_neg_helper(e->terms[0].data.expn);
- else {
- e->op = YASM_EXPR_MUL;
- e->numterms = 2;
- e->terms[1].type = YASM_EXPR_INT;
- e->terms[1].data.intn = yasm_intnum_create_int(-1);
- }
- break;
- default:
- /* Everything else. MUL will be combined when it's leveled.
- * Make a new expr (to replace e) with -1*e.
- */
- ne = yasm_xmalloc(sizeof(yasm_expr));
- ne->op = YASM_EXPR_MUL;
- ne->line = e->line;
- ne->numterms = 2;
- ne->terms[0].type = YASM_EXPR_INT;
- ne->terms[0].data.intn = yasm_intnum_create_int(-1);
- ne->terms[1].type = YASM_EXPR_EXPR;
- ne->terms[1].data.expn = e;
- return ne;
- }
- return e;
-}
-
-/* Transforms negatives into expressions that are easier to combine:
- * -x -> -1*x
- * a-b -> a+(-1*b)
- *
- * Call post-order on an expression tree to transform the entire tree.
- *
- * Returns a possibly reallocated e.
- */
-static /*@only@*/ yasm_expr *
-expr_xform_neg(/*@returned@*/ /*@only@*/ yasm_expr *e)
-{
- switch (e->op) {
- case YASM_EXPR_NEG:
- /* Turn -x into -1*x */
- e->op = YASM_EXPR_IDENT;
- return expr_xform_neg_helper(e);
- case YASM_EXPR_SUB:
- /* Turn a-b into a+(-1*b) */
-
- /* change op to ADD, and recursively negate right side (if expr) */
- e->op = YASM_EXPR_ADD;
- if (e->terms[1].type == YASM_EXPR_EXPR)
- e->terms[1].data.expn =
- expr_xform_neg_helper(e->terms[1].data.expn);
- else
- expr_xform_neg_item(e, &e->terms[1]);
- break;
- default:
- break;
- }
-
- return e;
-}
-
-/* Look for simple identities that make the entire result constant:
- * 0*&x, -1|x, etc.
- */
-static int
-expr_is_constant(yasm_expr_op op, yasm_intnum *intn)
-{
- int iszero = yasm_intnum_is_zero(intn);
- return ((iszero && op == YASM_EXPR_MUL) ||
- (iszero && op == YASM_EXPR_AND) ||
- (iszero && op == YASM_EXPR_LAND) ||
- (yasm_intnum_is_neg1(intn) && op == YASM_EXPR_OR));
-}
-
-/* Look for simple "left" identities like 0+x, 1*x, etc. */
-static int
-expr_can_destroy_int_left(yasm_expr_op op, yasm_intnum *intn)
-{
- int iszero = yasm_intnum_is_zero(intn);
- return ((yasm_intnum_is_pos1(intn) && op == YASM_EXPR_MUL) ||
- (iszero && op == YASM_EXPR_ADD) ||
- (yasm_intnum_is_neg1(intn) && op == YASM_EXPR_AND) ||
- (!iszero && op == YASM_EXPR_LAND) ||
- (iszero && op == YASM_EXPR_OR) ||
- (iszero && op == YASM_EXPR_LOR));
-}
-
-/* Look for simple "right" identities like x+|-0, x*&/1 */
-static int
-expr_can_destroy_int_right(yasm_expr_op op, yasm_intnum *intn)
-{
- int iszero = yasm_intnum_is_zero(intn);
- int ispos1 = yasm_intnum_is_pos1(intn);
- return ((ispos1 && op == YASM_EXPR_MUL) ||
- (ispos1 && op == YASM_EXPR_DIV) ||
- (iszero && op == YASM_EXPR_ADD) ||
- (iszero && op == YASM_EXPR_SUB) ||
- (yasm_intnum_is_neg1(intn) && op == YASM_EXPR_AND) ||
- (!iszero && op == YASM_EXPR_LAND) ||
- (iszero && op == YASM_EXPR_OR) ||
- (iszero && op == YASM_EXPR_LOR) ||
- (iszero && op == YASM_EXPR_SHL) ||
- (iszero && op == YASM_EXPR_SHR));
-}
-
-/* Check for and simplify identities. Returns new number of expr terms.
- * Sets e->op = EXPR_IDENT if numterms ends up being 1.
- * Uses numterms parameter instead of e->numterms for basis of "new" number
- * of terms.
- * Assumes int_term is *only* integer term in e.
- * NOTE: Really designed to only be used by expr_level_op().
- */
-static int
-expr_simplify_identity(yasm_expr *e, int numterms, int *int_term,
- int simplify_reg_mul)
-{
- int i;
- int save_numterms;
-
- /* Don't do this step if it's 1*REG. Save and restore numterms so
- * yasm_expr__contains() works correctly.
- */
- save_numterms = e->numterms;
- e->numterms = numterms;
- if (simplify_reg_mul || e->op != YASM_EXPR_MUL
- || !yasm_intnum_is_pos1(e->terms[*int_term].data.intn)
- || !yasm_expr__contains(e, YASM_EXPR_REG)) {
- /* Check for simple identities that delete the intnum.
- * Don't delete if the intnum is the only thing in the expn.
- */
- if ((*int_term == 0 && numterms > 1 &&
- expr_can_destroy_int_left(e->op, e->terms[0].data.intn)) ||
- (*int_term > 0 &&
- expr_can_destroy_int_right(e->op,
- e->terms[*int_term].data.intn))) {
- /* Delete the intnum */
- yasm_intnum_destroy(e->terms[*int_term].data.intn);
-
- /* Slide everything to its right over by 1 */
- if (*int_term != numterms-1) /* if it wasn't last.. */
- memmove(&e->terms[*int_term], &e->terms[*int_term+1],
- (numterms-1-*int_term)*sizeof(yasm_expr__item));
-
- /* Update numterms */
- numterms--;
- *int_term = -1; /* no longer an int term */
- }
- }
- e->numterms = save_numterms;
-
- /* Check for simple identites that delete everything BUT the intnum.
- * Don't bother if the intnum is the only thing in the expn.
- */
- if (numterms > 1 && *int_term != -1 &&
- expr_is_constant(e->op, e->terms[*int_term].data.intn)) {
- /* Loop through, deleting everything but the integer term */
- for (i=0; i<e->numterms; i++)
- if (i != *int_term)
- expr_delete_term(&e->terms[i], 1);
-
- /* Move integer term to the first term (if not already there) */
- if (*int_term != 0)
- e->terms[0] = e->terms[*int_term]; /* structure copy */
-
- /* Set numterms to 1 */
- numterms = 1;
- }
-
- /* Compute NOT, NEG, and LNOT on single intnum. */
- if (numterms == 1 && *int_term == 0 &&
- (e->op == YASM_EXPR_NOT || e->op == YASM_EXPR_NEG ||
- e->op == YASM_EXPR_LNOT))
- yasm_intnum_calc(e->terms[0].data.intn, e->op, NULL);
-
- /* Change expression to IDENT if possible. */
- if (numterms == 1)
- e->op = YASM_EXPR_IDENT;
-
- /* Return the updated numterms */
- return numterms;
-}
-
-/* Levels the expression tree starting at e. Eg:
- * a+(b+c) -> a+b+c
- * (a+b)+(c+d) -> a+b+c+d
- * Naturally, only levels operators that allow more than two operand terms.
- * NOTE: only does *one* level of leveling (no recursion). Should be called
- * post-order on a tree to combine deeper levels.
- * Also brings up any IDENT values into the current level (for ALL operators).
- * Folds (combines by evaluation) *integer* constant values if fold_const != 0.
- *
- * Returns a possibly reallocated e.
- */
-/*@-mustfree@*/
-static /*@only@*/ yasm_expr *
-expr_level_op(/*@returned@*/ /*@only@*/ yasm_expr *e, int fold_const,
- int simplify_ident, int simplify_reg_mul)
-{
- int i, j, o, fold_numterms, level_numterms, level_fold_numterms;
- int first_int_term = -1;
-
- /* Determine how many operands will need to be brought up (for leveling).
- * Go ahead and bring up any IDENT'ed values.
- */
- while (e->op == YASM_EXPR_IDENT && e->terms[0].type == YASM_EXPR_EXPR) {
- yasm_expr *sube = e->terms[0].data.expn;
- yasm_xfree(e);
- e = sube;
- }
-
- /* If non-numeric expression, don't fold constants. */
- if (e->op > YASM_EXPR_NONNUM)
- fold_const = 0;
-
- level_numterms = e->numterms;
- level_fold_numterms = 0;
- for (i=0; i<e->numterms; i++) {
- /* Search downward until we find something *other* than an
- * IDENT, then bring it up to the current level.
- */
- while (e->terms[i].type == YASM_EXPR_EXPR &&
- e->terms[i].data.expn->op == YASM_EXPR_IDENT) {
- yasm_expr *sube = e->terms[i].data.expn;
- e->terms[i] = sube->terms[0];
- yasm_xfree(sube);
- }
-
- if (e->terms[i].type == YASM_EXPR_EXPR &&
- e->terms[i].data.expn->op == e->op) {
- /* It's an expression w/the same operator, add in its numterms.
- * But don't forget to subtract one for the expr itself!
- */
- level_numterms += e->terms[i].data.expn->numterms - 1;
-
- /* If we're folding constants, count up the number of constants
- * that will be merged in.
- */
- if (fold_const)
- for (j=0; j<e->terms[i].data.expn->numterms; j++)
- if (e->terms[i].data.expn->terms[j].type ==
- YASM_EXPR_INT)
- level_fold_numterms++;
- }
-
- /* Find the first integer term (if one is present) if we're folding
- * constants.
- */
- if (fold_const && first_int_term == -1 &&
- e->terms[i].type == YASM_EXPR_INT)
- first_int_term = i;
- }
-
- /* Look for other integer terms if there's one and combine.
- * Also eliminate empty spaces when combining and adjust numterms
- * variables.
- */
- fold_numterms = e->numterms;
- if (first_int_term != -1) {
- for (i=first_int_term+1, o=first_int_term+1; i<e->numterms; i++) {
- if (e->terms[i].type == YASM_EXPR_INT) {
- yasm_intnum_calc(e->terms[first_int_term].data.intn, e->op,
- e->terms[i].data.intn);
- fold_numterms--;
- level_numterms--;
- /* make sure to delete folded intnum */
- yasm_intnum_destroy(e->terms[i].data.intn);
- } else if (o != i) {
- /* copy term if it changed places */
- e->terms[o++] = e->terms[i];
- } else
- o++;
- }
-
- if (simplify_ident) {
- int new_fold_numterms;
- /* Simplify identities and make IDENT if possible. */
- new_fold_numterms =
- expr_simplify_identity(e, fold_numterms, &first_int_term,
- simplify_reg_mul);
- level_numterms -= fold_numterms-new_fold_numterms;
- fold_numterms = new_fold_numterms;
- }
- if (fold_numterms == 1)
- e->op = YASM_EXPR_IDENT;
- }
-
- /* Only level operators that allow more than two operand terms.
- * Also don't bother leveling if it's not necessary to bring up any terms.
- */
- if ((e->op != YASM_EXPR_ADD && e->op != YASM_EXPR_MUL &&
- e->op != YASM_EXPR_OR && e->op != YASM_EXPR_AND &&
- e->op != YASM_EXPR_LOR && e->op != YASM_EXPR_LAND &&
- e->op != YASM_EXPR_LXOR && e->op != YASM_EXPR_XOR) ||
- level_numterms <= fold_numterms) {
- /* Downsize e if necessary */
- if (fold_numterms < e->numterms && e->numterms > 2)
- e = yasm_xrealloc(e, sizeof(yasm_expr)+((fold_numterms<2) ? 0 :
- sizeof(yasm_expr__item)*(fold_numterms-2)));
- /* Update numterms */
- e->numterms = fold_numterms;
- return e;
- }
-
- /* Adjust numterms for constant folding from terms being "pulled up".
- * Careful: if there's no integer term in e, then save space for it.
- */
- if (fold_const) {
- level_numterms -= level_fold_numterms;
- if (first_int_term == -1 && level_fold_numterms != 0)
- level_numterms++;
- }
-
- /* Alloc more (or conceivably less, but not usually) space for e */
- e = yasm_xrealloc(e, sizeof(yasm_expr)+((level_numterms<2) ? 0 :
- sizeof(yasm_expr__item)*(level_numterms-2)));
-
- /* Copy up ExprItem's. Iterate from right to left to keep the same
- * ordering as was present originally.
- * Combine integer terms as necessary.
- */
- for (i=fold_numterms-1, o=level_numterms-1; i>=0; i--) {
- if (e->terms[i].type == YASM_EXPR_EXPR &&
- e->terms[i].data.expn->op == e->op) {
- /* bring up subexpression */
- yasm_expr *sube = e->terms[i].data.expn;
-
- /* copy terms right to left */
- for (j=sube->numterms-1; j>=0; j--) {
- if (fold_const && sube->terms[j].type == YASM_EXPR_INT) {
- /* Need to fold it in.. but if there's no int term already,
- * just copy into a new one.
- */
- if (first_int_term == -1) {
- first_int_term = o--;
- e->terms[first_int_term] = sube->terms[j]; /* struc */
- } else {
- yasm_intnum_calc(e->terms[first_int_term].data.intn,
- e->op, sube->terms[j].data.intn);
- /* make sure to delete folded intnum */
- yasm_intnum_destroy(sube->terms[j].data.intn);
- }
- } else {
- if (o == first_int_term)
- o--;
- e->terms[o--] = sube->terms[j]; /* structure copy */
- }
- }
-
- /* delete subexpression, but *don't delete nodes* (as we've just
- * copied them!)
- */
- yasm_xfree(sube);
- } else if (o != i) {
- /* copy operand if it changed places */
- if (o == first_int_term)
- o--;
- e->terms[o] = e->terms[i];
- /* If we moved the first_int_term, change first_int_num too */
- if (i == first_int_term)
- first_int_term = o;
- o--;
- } else
- o--;
- }
-
- /* Simplify identities, make IDENT if possible, and save to e->numterms. */
- if (simplify_ident && first_int_term != -1) {
- e->numterms = expr_simplify_identity(e, level_numterms,
- &first_int_term, simplify_reg_mul);
- } else {
- e->numterms = level_numterms;
- if (level_numterms == 1)
- e->op = YASM_EXPR_IDENT;
- }
-
- return e;
-}
-/*@=mustfree@*/
-
-typedef SLIST_HEAD(yasm__exprhead, yasm__exprentry) yasm__exprhead;
-typedef struct yasm__exprentry {
- /*@reldef@*/ SLIST_ENTRY(yasm__exprentry) next;
- /*@null@*/ const yasm_expr *e;
-} yasm__exprentry;
-
-static yasm_expr *
-expr_expand_equ(yasm_expr *e, yasm__exprhead *eh)
-{
- int i;
- yasm__exprentry ee;
-
- /* traverse terms */
- for (i=0; i<e->numterms; i++) {
- const yasm_expr *equ_expr;
-
- /* Expand equ's. */
- if (e->terms[i].type == YASM_EXPR_SYM &&
- (equ_expr = yasm_symrec_get_equ(e->terms[i].data.sym))) {
- yasm__exprentry *np;
-
- /* Check for circular reference */
- SLIST_FOREACH(np, eh, next) {
- if (np->e == equ_expr) {
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("circular reference detected"));
- return e;
- }
- }
-
- e->terms[i].type = YASM_EXPR_EXPR;
- e->terms[i].data.expn = yasm_expr_copy(equ_expr);
-
- /* Remember we saw this equ and recurse */
- ee.e = equ_expr;
- SLIST_INSERT_HEAD(eh, &ee, next);
- e->terms[i].data.expn = expr_expand_equ(e->terms[i].data.expn, eh);
- SLIST_REMOVE_HEAD(eh, next);
- } else if (e->terms[i].type == YASM_EXPR_EXPR)
- /* Recurse */
- e->terms[i].data.expn = expr_expand_equ(e->terms[i].data.expn, eh);
- }
-
- return e;
-}
-
-static yasm_expr *
-expr_level_tree(yasm_expr *e, int fold_const, int simplify_ident,
- int simplify_reg_mul, int calc_bc_dist,
- yasm_expr_xform_func expr_xform_extra,
- void *expr_xform_extra_data)
-{
- int i;
-
- e = expr_xform_neg(e);
-
- /* traverse terms */
- for (i=0; i<e->numterms; i++) {
- /* Recurse */
- if (e->terms[i].type == YASM_EXPR_EXPR)
- e->terms[i].data.expn =
- expr_level_tree(e->terms[i].data.expn, fold_const,
- simplify_ident, simplify_reg_mul, calc_bc_dist,
- expr_xform_extra, expr_xform_extra_data);
- }
-
- /* Check for SEG of SEG:OFF, if we match, simplify to just the segment */
- if (e->op == YASM_EXPR_SEG && e->terms[0].type == YASM_EXPR_EXPR &&
- e->terms[0].data.expn->op == YASM_EXPR_SEGOFF) {
- e->op = YASM_EXPR_IDENT;
- e->terms[0].data.expn->op = YASM_EXPR_IDENT;
- /* Destroy the second (offset) term */
- e->terms[0].data.expn->numterms = 1;
- expr_delete_term(&e->terms[0].data.expn->terms[1], 1);
- }
-
- /* do callback */
- e = expr_level_op(e, fold_const, simplify_ident, simplify_reg_mul);
- if (calc_bc_dist || expr_xform_extra) {
- if (calc_bc_dist)
- e = expr_xform_bc_dist(e);
- if (expr_xform_extra)
- e = expr_xform_extra(e, expr_xform_extra_data);
- e = expr_level_tree(e, fold_const, simplify_ident, simplify_reg_mul,
- 0, NULL, NULL);
- }
- return e;
-}
-
-/* Level an entire expn tree, expanding equ's as we go */
-yasm_expr *
-yasm_expr__level_tree(yasm_expr *e, int fold_const, int simplify_ident,
- int simplify_reg_mul, int calc_bc_dist,
- yasm_expr_xform_func expr_xform_extra,
- void *expr_xform_extra_data)
-{
- yasm__exprhead eh;
- SLIST_INIT(&eh);
-
- if (!e)
- return 0;
-
- e = expr_expand_equ(e, &eh);
- e = expr_level_tree(e, fold_const, simplify_ident, simplify_reg_mul,
- calc_bc_dist, expr_xform_extra, expr_xform_extra_data);
-
- return e;
-}
-
-/* Comparison function for expr_order_terms().
- * Assumes ExprType enum is in canonical order.
- */
-static int
-expr_order_terms_compare(const void *va, const void *vb)
-{
- const yasm_expr__item *a = va, *b = vb;
- return (a->type - b->type);
-}
-
-/* Reorder terms of e into canonical order. Only reorders if reordering
- * doesn't change meaning of expression. (eg, doesn't reorder SUB).
- * Canonical order: REG, INT, FLOAT, SYM, EXPR.
- * Multiple terms of a single type are kept in the same order as in
- * the original expression.
- * NOTE: Only performs reordering on *one* level (no recursion).
- */
-void
-yasm_expr__order_terms(yasm_expr *e)
-{
- /* don't bother reordering if only one element */
- if (e->numterms == 1)
- return;
-
- /* only reorder some types of operations */
- switch (e->op) {
- case YASM_EXPR_ADD:
- case YASM_EXPR_MUL:
- case YASM_EXPR_OR:
- case YASM_EXPR_AND:
- case YASM_EXPR_XOR:
- case YASM_EXPR_LOR:
- case YASM_EXPR_LAND:
- case YASM_EXPR_LXOR:
- /* Use mergesort to sort. It's fast on already sorted values and a
- * stable sort (multiple terms of same type are kept in the same
- * order).
- */
- yasm__mergesort(e->terms, (size_t)e->numterms,
- sizeof(yasm_expr__item), expr_order_terms_compare);
- break;
- default:
- break;
- }
-}
-
-static void
-expr_item_copy(yasm_expr__item *dest, const yasm_expr__item *src)
-{
- dest->type = src->type;
- switch (src->type) {
- case YASM_EXPR_SYM:
- /* Symbols don't need to be copied */
- dest->data.sym = src->data.sym;
- break;
- case YASM_EXPR_PRECBC:
- /* Nor do direct bytecode references */
- dest->data.precbc = src->data.precbc;
- break;
- case YASM_EXPR_EXPR:
- dest->data.expn = yasm_expr__copy_except(src->data.expn, -1);
- break;
- case YASM_EXPR_INT:
- dest->data.intn = yasm_intnum_copy(src->data.intn);
- break;
- case YASM_EXPR_FLOAT:
- dest->data.flt = yasm_floatnum_copy(src->data.flt);
- break;
- case YASM_EXPR_REG:
- dest->data.reg = src->data.reg;
- break;
- case YASM_EXPR_SUBST:
- dest->data.subst = src->data.subst;
- break;
- default:
- break;
- }
-}
-
-/* Copy entire expression EXCEPT for index "except" at *top level only*. */
-yasm_expr *
-yasm_expr__copy_except(const yasm_expr *e, int except)
-{
- yasm_expr *n;
- int i;
-
- n = yasm_xmalloc(sizeof(yasm_expr) +
- sizeof(yasm_expr__item)*(e->numterms<2?0:e->numterms-2));
-
- n->op = e->op;
- n->line = e->line;
- n->numterms = e->numterms;
- for (i=0; i<e->numterms; i++) {
- if (i != except)
- expr_item_copy(&n->terms[i], &e->terms[i]);
- }
-
- return n;
-}
-
-static void
-expr_delete_term(yasm_expr__item *term, int recurse)
-{
- switch (term->type) {
- case YASM_EXPR_INT:
- yasm_intnum_destroy(term->data.intn);
- break;
- case YASM_EXPR_FLOAT:
- yasm_floatnum_destroy(term->data.flt);
- break;
- case YASM_EXPR_EXPR:
- if (recurse)
- yasm_expr_destroy(term->data.expn);
- break;
- default:
- break;
- }
-}
-
-static int
-expr_destroy_each(/*@only@*/ yasm_expr *e, /*@unused@*/ void *d)
-{
- int i;
- for (i=0; i<e->numterms; i++)
- expr_delete_term(&e->terms[i], 0);
- yasm_xfree(e); /* free ourselves */
- return 0; /* don't stop recursion */
-}
-
-/*@-mustfree@*/
-void
-yasm_expr_destroy(yasm_expr *e)
-{
- expr_traverse_nodes_post(e, NULL, expr_destroy_each);
-}
-/*@=mustfree@*/
-
-int
-yasm_expr_is_op(const yasm_expr *e, yasm_expr_op op)
-{
- return (e->op == op);
-}
-
-static int
-expr_contains_callback(const yasm_expr__item *ei, void *d)
-{
- yasm_expr__type *t = d;
- return (ei->type & *t);
-}
-
-int
-yasm_expr__contains(const yasm_expr *e, yasm_expr__type t)
-{
- return yasm_expr__traverse_leaves_in_const(e, &t, expr_contains_callback);
-}
-
-typedef struct subst_cbd {
- unsigned int num_items;
- const yasm_expr__item *items;
-} subst_cbd;
-
-static int
-expr_subst_callback(yasm_expr__item *ei, void *d)
-{
- subst_cbd *cbd = d;
- if (ei->type != YASM_EXPR_SUBST)
- return 0;
- if (ei->data.subst >= cbd->num_items)
- return 1; /* error */
- expr_item_copy(ei, &cbd->items[ei->data.subst]);
- return 0;
-}
-
-int
-yasm_expr__subst(yasm_expr *e, unsigned int num_items,
- const yasm_expr__item *items)
-{
- subst_cbd cbd;
- cbd.num_items = num_items;
- cbd.items = items;
- return yasm_expr__traverse_leaves_in(e, &cbd, expr_subst_callback);
-}
-
-/* Traverse over expression tree, calling func for each operation AFTER the
- * branches (if expressions) have been traversed (eg, postorder
- * traversal). The data pointer d is passed to each func call.
- *
- * Stops early (and returns 1) if func returns 1. Otherwise returns 0.
- */
-static int
-expr_traverse_nodes_post(yasm_expr *e, void *d,
- int (*func) (/*@null@*/ yasm_expr *e,
- /*@null@*/ void *d))
-{
- int i;
-
- if (!e)
- return 0;
-
- /* traverse terms */
- for (i=0; i<e->numterms; i++) {
- if (e->terms[i].type == YASM_EXPR_EXPR &&
- expr_traverse_nodes_post(e->terms[i].data.expn, d, func))
- return 1;
- }
-
- /* do callback */
- return func(e, d);
-}
-
-/* Traverse over expression tree in order, calling func for each leaf
- * (non-operation). The data pointer d is passed to each func call.
- *
- * Stops early (and returns 1) if func returns 1. Otherwise returns 0.
- */
-int
-yasm_expr__traverse_leaves_in_const(const yasm_expr *e, void *d,
- int (*func) (/*@null@*/ const yasm_expr__item *ei, /*@null@*/ void *d))
-{
- int i;
-
- if (!e)
- return 0;
-
- for (i=0; i<e->numterms; i++) {
- if (e->terms[i].type == YASM_EXPR_EXPR) {
- if (yasm_expr__traverse_leaves_in_const(e->terms[i].data.expn, d,
- func))
- return 1;
- } else {
- if (func(&e->terms[i], d))
- return 1;
- }
- }
- return 0;
-}
-
-/* Traverse over expression tree in order, calling func for each leaf
- * (non-operation). The data pointer d is passed to each func call.
- *
- * Stops early (and returns 1) if func returns 1. Otherwise returns 0.
- */
-int
-yasm_expr__traverse_leaves_in(yasm_expr *e, void *d,
- int (*func) (/*@null@*/ yasm_expr__item *ei, /*@null@*/ void *d))
-{
- int i;
-
- if (!e)
- return 0;
-
- for (i=0; i<e->numterms; i++) {
- if (e->terms[i].type == YASM_EXPR_EXPR) {
- if (yasm_expr__traverse_leaves_in(e->terms[i].data.expn, d, func))
- return 1;
- } else {
- if (func(&e->terms[i], d))
- return 1;
- }
- }
- return 0;
-}
-
-yasm_expr *
-yasm_expr_extract_deep_segoff(yasm_expr **ep)
-{
- yasm_expr *retval;
- yasm_expr *e = *ep;
- int i;
-
- /* Try to extract at this level */
- retval = yasm_expr_extract_segoff(ep);
- if (retval)
- return retval;
-
- /* Not at this level? Search any expr children. */
- for (i=0; i<e->numterms; i++) {
- if (e->terms[i].type == YASM_EXPR_EXPR) {
- retval = yasm_expr_extract_deep_segoff(&e->terms[i].data.expn);
- if (retval)
- return retval;
- }
- }
-
- /* Didn't find one */
- return NULL;
-}
-
-yasm_expr *
-yasm_expr_extract_segoff(yasm_expr **ep)
-{
- yasm_expr *retval;
- yasm_expr *e = *ep;
-
- /* If not SEG:OFF, we can't do this transformation */
- if (e->op != YASM_EXPR_SEGOFF)
- return NULL;
-
- /* Extract the SEG portion out to its own expression */
- if (e->terms[0].type == YASM_EXPR_EXPR)
- retval = e->terms[0].data.expn;
- else {
- /* Need to build IDENT expression to hold non-expression contents */
- retval = yasm_xmalloc(sizeof(yasm_expr));
- retval->op = YASM_EXPR_IDENT;
- retval->numterms = 1;
- retval->terms[0] = e->terms[0]; /* structure copy */
- }
-
- /* Delete the SEG: portion by changing the expression into an IDENT */
- e->op = YASM_EXPR_IDENT;
- e->numterms = 1;
- e->terms[0] = e->terms[1]; /* structure copy */
-
- return retval;
-}
-
-yasm_expr *
-yasm_expr_extract_wrt(yasm_expr **ep)
-{
- yasm_expr *retval;
- yasm_expr *e = *ep;
-
- /* If not WRT, we can't do this transformation */
- if (e->op != YASM_EXPR_WRT)
- return NULL;
-
- /* Extract the right side portion out to its own expression */
- if (e->terms[1].type == YASM_EXPR_EXPR)
- retval = e->terms[1].data.expn;
- else {
- /* Need to build IDENT expression to hold non-expression contents */
- retval = yasm_xmalloc(sizeof(yasm_expr));
- retval->op = YASM_EXPR_IDENT;
- retval->numterms = 1;
- retval->terms[0] = e->terms[1]; /* structure copy */
- }
-
- /* Delete the right side portion by changing the expr into an IDENT */
- e->op = YASM_EXPR_IDENT;
- e->numterms = 1;
-
- return retval;
-}
-
-/*@-unqualifiedtrans -nullderef -nullstate -onlytrans@*/
-yasm_intnum *
-yasm_expr_get_intnum(yasm_expr **ep, int calc_bc_dist)
-{
- *ep = yasm_expr_simplify(*ep, calc_bc_dist);
-
- if ((*ep)->op == YASM_EXPR_IDENT && (*ep)->terms[0].type == YASM_EXPR_INT)
- return (*ep)->terms[0].data.intn;
- else
- return (yasm_intnum *)NULL;
-}
-/*@=unqualifiedtrans =nullderef -nullstate -onlytrans@*/
-
-/*@-unqualifiedtrans -nullderef -nullstate -onlytrans@*/
-const yasm_symrec *
-yasm_expr_get_symrec(yasm_expr **ep, int simplify)
-{
- if (simplify)
- *ep = yasm_expr_simplify(*ep, 0);
-
- if ((*ep)->op == YASM_EXPR_IDENT && (*ep)->terms[0].type == YASM_EXPR_SYM)
- return (*ep)->terms[0].data.sym;
- else
- return (yasm_symrec *)NULL;
-}
-/*@=unqualifiedtrans =nullderef -nullstate -onlytrans@*/
-
-/*@-unqualifiedtrans -nullderef -nullstate -onlytrans@*/
-const uintptr_t *
-yasm_expr_get_reg(yasm_expr **ep, int simplify)
-{
- if (simplify)
- *ep = yasm_expr_simplify(*ep, 0);
-
- if ((*ep)->op == YASM_EXPR_IDENT && (*ep)->terms[0].type == YASM_EXPR_REG)
- return &((*ep)->terms[0].data.reg);
- else
- return NULL;
-}
-/*@=unqualifiedtrans =nullderef -nullstate -onlytrans@*/
-
-void
-yasm_expr_print(const yasm_expr *e, FILE *f)
-{
- char opstr[8];
- int i;
-
- if (!e) {
- fprintf(f, "(nil)");
- return;
- }
-
- switch (e->op) {
- case YASM_EXPR_ADD:
- strcpy(opstr, "+");
- break;
- case YASM_EXPR_SUB:
- strcpy(opstr, "-");
- break;
- case YASM_EXPR_MUL:
- strcpy(opstr, "*");
- break;
- case YASM_EXPR_DIV:
- strcpy(opstr, "/");
- break;
- case YASM_EXPR_SIGNDIV:
- strcpy(opstr, "//");
- break;
- case YASM_EXPR_MOD:
- strcpy(opstr, "%");
- break;
- case YASM_EXPR_SIGNMOD:
- strcpy(opstr, "%%");
- break;
- case YASM_EXPR_NEG:
- fprintf(f, "-");
- opstr[0] = 0;
- break;
- case YASM_EXPR_NOT:
- fprintf(f, "~");
- opstr[0] = 0;
- break;
- case YASM_EXPR_OR:
- strcpy(opstr, "|");
- break;
- case YASM_EXPR_AND:
- strcpy(opstr, "&");
- break;
- case YASM_EXPR_XOR:
- strcpy(opstr, "^");
- break;
- case YASM_EXPR_XNOR:
- strcpy(opstr, "XNOR");
- break;
- case YASM_EXPR_NOR:
- strcpy(opstr, "NOR");
- break;
- case YASM_EXPR_SHL:
- strcpy(opstr, "<<");
- break;
- case YASM_EXPR_SHR:
- strcpy(opstr, ">>");
- break;
- case YASM_EXPR_LOR:
- strcpy(opstr, "||");
- break;
- case YASM_EXPR_LAND:
- strcpy(opstr, "&&");
- break;
- case YASM_EXPR_LNOT:
- strcpy(opstr, "!");
- break;
- case YASM_EXPR_LXOR:
- strcpy(opstr, "^^");
- break;
- case YASM_EXPR_LXNOR:
- strcpy(opstr, "LXNOR");
- break;
- case YASM_EXPR_LNOR:
- strcpy(opstr, "LNOR");
- break;
- case YASM_EXPR_LT:
- strcpy(opstr, "<");
- break;
- case YASM_EXPR_GT:
- strcpy(opstr, ">");
- break;
- case YASM_EXPR_LE:
- strcpy(opstr, "<=");
- break;
- case YASM_EXPR_GE:
- strcpy(opstr, ">=");
- break;
- case YASM_EXPR_NE:
- strcpy(opstr, "!=");
- break;
- case YASM_EXPR_EQ:
- strcpy(opstr, "==");
- break;
- case YASM_EXPR_SEG:
- fprintf(f, "SEG ");
- opstr[0] = 0;
- break;
- case YASM_EXPR_WRT:
- strcpy(opstr, " WRT ");
- break;
- case YASM_EXPR_SEGOFF:
- strcpy(opstr, ":");
- break;
- case YASM_EXPR_IDENT:
- opstr[0] = 0;
- break;
- default:
- strcpy(opstr, " !UNK! ");
- break;
- }
- for (i=0; i<e->numterms; i++) {
- switch (e->terms[i].type) {
- case YASM_EXPR_PRECBC:
- fprintf(f, "{%lx}",
- yasm_bc_next_offset(e->terms[i].data.precbc));
- break;
- case YASM_EXPR_SYM:
- fprintf(f, "%s", yasm_symrec_get_name(e->terms[i].data.sym));
- break;
- case YASM_EXPR_EXPR:
- fprintf(f, "(");
- yasm_expr_print(e->terms[i].data.expn, f);
- fprintf(f, ")");
- break;
- case YASM_EXPR_INT:
- yasm_intnum_print(e->terms[i].data.intn, f);
- break;
- case YASM_EXPR_FLOAT:
- yasm_floatnum_print(e->terms[i].data.flt, f);
- break;
- case YASM_EXPR_REG:
- /* FIXME */
- /*yasm_arch_reg_print(arch, e->terms[i].data.reg, f);*/
- break;
- case YASM_EXPR_SUBST:
- fprintf(f, "[%u]", e->terms[i].data.subst);
- break;
- case YASM_EXPR_NONE:
- break;
- }
- if (i < e->numterms-1)
- fprintf(f, "%s", opstr);
- }
-}
-
-unsigned int
-yasm_expr_size(const yasm_expr *e)
-{
- int i;
- int seen = 0;
- unsigned int size = 0, newsize;
-
- if (e->op == YASM_EXPR_IDENT) {
- if (e->terms[0].type == YASM_EXPR_SYM)
- return yasm_symrec_get_size(e->terms[0].data.sym);
- return 0;
- }
- if (e->op != YASM_EXPR_ADD && e->op != YASM_EXPR_SUB)
- return 0;
-
- for (i=0; i<e->numterms; i++) {
- newsize = 0;
- switch (e->terms[i].type) {
- case YASM_EXPR_EXPR:
- newsize = yasm_expr_size(e->terms[i].data.expn);
- break;
- case YASM_EXPR_SYM:
- newsize = yasm_symrec_get_size(e->terms[i].data.sym);
- break;
- default:
- break;
- }
- if (newsize) {
- size = newsize;
- if (seen)
- /* either sum of idents (?!) or substract of idents */
- return 0;
- seen = 1;
- }
- }
- /* exactly one offset */
- return size;
-}
-
-const char *
-yasm_expr_segment(const yasm_expr *e)
-{
- int i;
- int seen = 0;
- const char *segment = NULL;
-
- if (e->op == YASM_EXPR_IDENT) {
- if (e->terms[0].type == YASM_EXPR_SYM)
- return yasm_symrec_get_segment(e->terms[0].data.sym);
- return NULL;
- }
- if (e->op != YASM_EXPR_ADD && e->op != YASM_EXPR_SUB)
- return NULL;
-
- for (i=0; i<e->numterms; i++) {
- if ((e->op == YASM_EXPR_ADD || !i) &&
- e->terms[i].type == YASM_EXPR_EXPR) {
- if ((segment = yasm_expr_segment(e->terms[i].data.expn))) {
- if (seen) {
- /* either sum of idents (?!) or substract of idents */
- return NULL;
- }
- seen = 1;
- }
- }
- }
- /* exactly one offset */
- return segment;
-}
+/*
+ * Expression handling
+ *
+ * Copyright (C) 2001-2007 Michael Urman, Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "util.h"
+
+#include "libyasm-stdint.h"
+#include "coretype.h"
+#include "bitvect.h"
+
+#include "errwarn.h"
+#include "intnum.h"
+#include "floatnum.h"
+#include "expr.h"
+#include "symrec.h"
+
+#include "bytecode.h"
+#include "section.h"
+
+#include "arch.h"
+
+
+static /*@only@*/ yasm_expr *expr_level_op
+ (/*@returned@*/ /*@only@*/ yasm_expr *e, int fold_const,
+ int simplify_ident, int simplify_reg_mul);
+static int expr_traverse_nodes_post(/*@null@*/ yasm_expr *e,
+ /*@null@*/ void *d,
+ int (*func) (/*@null@*/ yasm_expr *e,
+ /*@null@*/ void *d));
+static void expr_delete_term(yasm_expr__item *term, int recurse);
+
+/* Bitmap of used items. We should really never need more than 2 at a time,
+ * so 31 is pretty much overkill.
+ */
+static unsigned long itempool_used = 0;
+static yasm_expr__item itempool[31];
+
+/* allocate a new expression node, with children as defined.
+ * If it's a unary operator, put the element in left and set right=NULL. */
+/*@-compmempass@*/
+yasm_expr *
+yasm_expr_create(yasm_expr_op op, yasm_expr__item *left,
+ yasm_expr__item *right, unsigned long line)
+{
+ yasm_expr *ptr, *sube;
+ unsigned long z;
+ ptr = yasm_xmalloc(sizeof(yasm_expr));
+
+ ptr->op = op;
+ ptr->numterms = 0;
+ ptr->terms[0].type = YASM_EXPR_NONE;
+ ptr->terms[1].type = YASM_EXPR_NONE;
+ if (left) {
+ ptr->terms[0] = *left; /* structure copy */
+ z = (unsigned long)(left-itempool);
+ if (z>=31)
+ yasm_internal_error(N_("could not find expritem in pool"));
+ itempool_used &= ~(1<<z);
+ ptr->numterms++;
+
+ /* Search downward until we find something *other* than an
+ * IDENT, then bring it up to the current level.
+ */
+ while (ptr->terms[0].type == YASM_EXPR_EXPR &&
+ ptr->terms[0].data.expn->op == YASM_EXPR_IDENT) {
+ sube = ptr->terms[0].data.expn;
+ ptr->terms[0] = sube->terms[0]; /* structure copy */
+ /*@-usereleased@*/
+ yasm_xfree(sube);
+ /*@=usereleased@*/
+ }
+ } else {
+ yasm_internal_error(N_("Right side of expression must exist"));
+ }
+
+ if (right) {
+ ptr->terms[1] = *right; /* structure copy */
+ z = (unsigned long)(right-itempool);
+ if (z>=31)
+ yasm_internal_error(N_("could not find expritem in pool"));
+ itempool_used &= ~(1<<z);
+ ptr->numterms++;
+
+ /* Search downward until we find something *other* than an
+ * IDENT, then bring it up to the current level.
+ */
+ while (ptr->terms[1].type == YASM_EXPR_EXPR &&
+ ptr->terms[1].data.expn->op == YASM_EXPR_IDENT) {
+ sube = ptr->terms[1].data.expn;
+ ptr->terms[1] = sube->terms[0]; /* structure copy */
+ /*@-usereleased@*/
+ yasm_xfree(sube);
+ /*@=usereleased@*/
+ }
+ }
+
+ ptr->line = line;
+
+ return expr_level_op(ptr, 1, 1, 0);
+}
+/*@=compmempass@*/
+
+/* helpers */
+static yasm_expr__item *
+expr_get_item(void)
+{
+ int z = 0;
+ unsigned long v = itempool_used & 0x7fffffff;
+
+ while (v & 1) {
+ v >>= 1;
+ z++;
+ }
+ if (z>=31)
+ yasm_internal_error(N_("too many expritems"));
+ itempool_used |= 1<<z;
+ return &itempool[z];
+}
+
+yasm_expr__item *
+yasm_expr_precbc(yasm_bytecode *precbc)
+{
+ yasm_expr__item *e = expr_get_item();
+ e->type = YASM_EXPR_PRECBC;
+ e->data.precbc = precbc;
+ return e;
+}
+
+yasm_expr__item *
+yasm_expr_sym(yasm_symrec *s)
+{
+ yasm_expr__item *e = expr_get_item();
+ e->type = YASM_EXPR_SYM;
+ e->data.sym = s;
+ return e;
+}
+
+yasm_expr__item *
+yasm_expr_expr(yasm_expr *x)
+{
+ yasm_expr__item *e = expr_get_item();
+ e->type = YASM_EXPR_EXPR;
+ e->data.expn = x;
+ return e;
+}
+
+yasm_expr__item *
+yasm_expr_int(yasm_intnum *i)
+{
+ yasm_expr__item *e = expr_get_item();
+ e->type = YASM_EXPR_INT;
+ e->data.intn = i;
+ return e;
+}
+
+yasm_expr__item *
+yasm_expr_float(yasm_floatnum *f)
+{
+ yasm_expr__item *e = expr_get_item();
+ e->type = YASM_EXPR_FLOAT;
+ e->data.flt = f;
+ return e;
+}
+
+yasm_expr__item *
+yasm_expr_reg(uintptr_t reg)
+{
+ yasm_expr__item *e = expr_get_item();
+ e->type = YASM_EXPR_REG;
+ e->data.reg = reg;
+ return e;
+}
+
+/* Transforms instances of symrec-symrec [symrec+(-1*symrec)] into single
+ * expritems if possible. Uses a simple n^2 algorithm because n is usually
+ * quite small. Also works for precbc-precbc (or symrec-precbc,
+ * precbc-symrec).
+ */
+static /*@only@*/ yasm_expr *
+expr_xform_bc_dist_base(/*@returned@*/ /*@only@*/ yasm_expr *e,
+ /*@null@*/ void *cbd,
+ int (*callback) (yasm_expr__item *ei,
+ yasm_bytecode *precbc,
+ yasm_bytecode *precbc2,
+ void *cbd))
+{
+ int i;
+ /*@dependent@*/ yasm_section *sect;
+ /*@dependent@*/ /*@null@*/ yasm_bytecode *precbc;
+ int numterms;
+
+ /* Handle symrec-symrec in ADD exprs by looking for (-1*symrec) and
+ * symrec term pairs (where both symrecs are in the same segment).
+ */
+ if (e->op != YASM_EXPR_ADD)
+ return e;
+
+ for (i=0; i<e->numterms; i++) {
+ int j;
+ yasm_expr *sube;
+ yasm_intnum *intn;
+ yasm_symrec *sym = NULL;
+ /*@dependent@*/ yasm_section *sect2;
+ /*@dependent@*/ /*@null@*/ yasm_bytecode *precbc2;
+
+ /* First look for an (-1*symrec) term */
+ if (e->terms[i].type != YASM_EXPR_EXPR)
+ continue;
+ sube = e->terms[i].data.expn;
+ if (sube->op != YASM_EXPR_MUL || sube->numterms != 2)
+ continue;
+
+ if (sube->terms[0].type == YASM_EXPR_INT &&
+ (sube->terms[1].type == YASM_EXPR_SYM ||
+ sube->terms[1].type == YASM_EXPR_PRECBC)) {
+ intn = sube->terms[0].data.intn;
+ if (sube->terms[1].type == YASM_EXPR_PRECBC)
+ precbc = sube->terms[1].data.precbc;
+ else
+ sym = sube->terms[1].data.sym;
+ } else if ((sube->terms[0].type == YASM_EXPR_SYM ||
+ sube->terms[0].type == YASM_EXPR_PRECBC) &&
+ sube->terms[1].type == YASM_EXPR_INT) {
+ if (sube->terms[0].type == YASM_EXPR_PRECBC)
+ precbc = sube->terms[0].data.precbc;
+ else
+ sym = sube->terms[0].data.sym;
+ intn = sube->terms[1].data.intn;
+ } else
+ continue;
+
+ if (!yasm_intnum_is_neg1(intn))
+ continue;
+
+ if (sym && !yasm_symrec_get_label(sym, &precbc))
+ continue;
+ sect2 = yasm_bc_get_section(precbc);
+
+ /* Now look for a symrec term in the same segment */
+ for (j=0; j<e->numterms; j++) {
+ if (((e->terms[j].type == YASM_EXPR_SYM &&
+ yasm_symrec_get_label(e->terms[j].data.sym, &precbc2)) ||
+ (e->terms[j].type == YASM_EXPR_PRECBC &&
+ (precbc2 = e->terms[j].data.precbc))) &&
+ (sect = yasm_bc_get_section(precbc2)) &&
+ sect == sect2 &&
+ callback(&e->terms[j], precbc, precbc2, cbd)) {
+ /* Delete the matching (-1*symrec) term */
+ yasm_expr_destroy(sube);
+ e->terms[i].type = YASM_EXPR_NONE;
+ break; /* stop looking for matching symrec term */
+ }
+ }
+ }
+
+ /* Clean up any deleted (EXPR_NONE) terms */
+ numterms = 0;
+ for (i=0; i<e->numterms; i++) {
+ if (e->terms[i].type != YASM_EXPR_NONE)
+ e->terms[numterms++] = e->terms[i]; /* structure copy */
+ }
+ if (e->numterms != numterms) {
+ e->numterms = numterms;
+ e = yasm_xrealloc(e, sizeof(yasm_expr)+((numterms<2) ? 0 :
+ sizeof(yasm_expr__item)*(numterms-2)));
+ if (numterms == 1)
+ e->op = YASM_EXPR_IDENT;
+ }
+
+ return e;
+}
+
+static int
+expr_xform_bc_dist_cb(yasm_expr__item *ei, yasm_bytecode *precbc,
+ yasm_bytecode *precbc2, /*@null@*/ void *d)
+{
+ yasm_intnum *dist = yasm_calc_bc_dist(precbc, precbc2);
+ if (!dist)
+ return 0;
+ /* Change the term to an integer */
+ ei->type = YASM_EXPR_INT;
+ ei->data.intn = dist;
+ return 1;
+}
+
+/* Transforms instances of symrec-symrec [symrec+(-1*symrec)] into integers if
+ * possible.
+ */
+static /*@only@*/ yasm_expr *
+expr_xform_bc_dist(/*@returned@*/ /*@only@*/ yasm_expr *e)
+{
+ return expr_xform_bc_dist_base(e, NULL, expr_xform_bc_dist_cb);
+}
+
+typedef struct bc_dist_subst_cbd {
+ void (*callback) (unsigned int subst, yasm_bytecode *precbc,
+ yasm_bytecode *precbc2, void *cbd);
+ void *cbd;
+ unsigned int subst;
+} bc_dist_subst_cbd;
+
+static int
+expr_bc_dist_subst_cb(yasm_expr__item *ei, yasm_bytecode *precbc,
+ yasm_bytecode *precbc2, /*@null@*/ void *d)
+{
+ bc_dist_subst_cbd *my_cbd = d;
+ assert(my_cbd != NULL);
+ /* Call higher-level callback */
+ my_cbd->callback(my_cbd->subst, precbc, precbc2, my_cbd->cbd);
+ /* Change the term to an subst */
+ ei->type = YASM_EXPR_SUBST;
+ ei->data.subst = my_cbd->subst;
+ my_cbd->subst++;
+ return 1;
+}
+
+static yasm_expr *
+expr_xform_bc_dist_subst(yasm_expr *e, void *d)
+{
+ return expr_xform_bc_dist_base(e, d, expr_bc_dist_subst_cb);
+}
+
+int
+yasm_expr__bc_dist_subst(yasm_expr **ep, void *cbd,
+ void (*callback) (unsigned int subst,
+ yasm_bytecode *precbc,
+ yasm_bytecode *precbc2,
+ void *cbd))
+{
+ bc_dist_subst_cbd my_cbd; /* callback info for low-level callback */
+ my_cbd.callback = callback;
+ my_cbd.cbd = cbd;
+ my_cbd.subst = 0;
+ *ep = yasm_expr__level_tree(*ep, 1, 1, 1, 0, &expr_xform_bc_dist_subst,
+ &my_cbd);
+ return my_cbd.subst;
+}
+
+/* Negate just a single ExprItem by building a -1*ei subexpression */
+static void
+expr_xform_neg_item(yasm_expr *e, yasm_expr__item *ei)
+{
+ yasm_expr *sube = yasm_xmalloc(sizeof(yasm_expr));
+
+ /* Build -1*ei subexpression */
+ sube->op = YASM_EXPR_MUL;
+ sube->line = e->line;
+ sube->numterms = 2;
+ sube->terms[0].type = YASM_EXPR_INT;
+ sube->terms[0].data.intn = yasm_intnum_create_int(-1);
+ sube->terms[1] = *ei; /* structure copy */
+
+ /* Replace original ExprItem with subexp */
+ ei->type = YASM_EXPR_EXPR;
+ ei->data.expn = sube;
+}
+
+/* Negates e by multiplying by -1, with distribution over lower-precedence
+ * operators (eg ADD) and special handling to simplify result w/ADD, NEG, and
+ * others.
+ *
+ * Returns a possibly reallocated e.
+ */
+static /*@only@*/ yasm_expr *
+expr_xform_neg_helper(/*@returned@*/ /*@only@*/ yasm_expr *e)
+{
+ yasm_expr *ne;
+ int i;
+
+ switch (e->op) {
+ case YASM_EXPR_ADD:
+ /* distribute (recursively if expr) over terms */
+ for (i=0; i<e->numterms; i++) {
+ if (e->terms[i].type == YASM_EXPR_EXPR)
+ e->terms[i].data.expn =
+ expr_xform_neg_helper(e->terms[i].data.expn);
+ else
+ expr_xform_neg_item(e, &e->terms[i]);
+ }
+ break;
+ case YASM_EXPR_SUB:
+ /* change op to ADD, and recursively negate left side (if expr) */
+ e->op = YASM_EXPR_ADD;
+ if (e->terms[0].type == YASM_EXPR_EXPR)
+ e->terms[0].data.expn =
+ expr_xform_neg_helper(e->terms[0].data.expn);
+ else
+ expr_xform_neg_item(e, &e->terms[0]);
+ break;
+ case YASM_EXPR_NEG:
+ /* Negating a negated value? Make it an IDENT. */
+ e->op = YASM_EXPR_IDENT;
+ break;
+ case YASM_EXPR_IDENT:
+ /* Negating an ident? Change it into a MUL w/ -1 if there's no
+ * floatnums present below; if there ARE floatnums, recurse.
+ */
+ if (e->terms[0].type == YASM_EXPR_FLOAT)
+ yasm_floatnum_calc(e->terms[0].data.flt, YASM_EXPR_NEG, NULL);
+ else if (e->terms[0].type == YASM_EXPR_INT)
+ yasm_intnum_calc(e->terms[0].data.intn, YASM_EXPR_NEG, NULL);
+ else if (e->terms[0].type == YASM_EXPR_EXPR &&
+ yasm_expr__contains(e->terms[0].data.expn, YASM_EXPR_FLOAT))
+ expr_xform_neg_helper(e->terms[0].data.expn);
+ else {
+ e->op = YASM_EXPR_MUL;
+ e->numterms = 2;
+ e->terms[1].type = YASM_EXPR_INT;
+ e->terms[1].data.intn = yasm_intnum_create_int(-1);
+ }
+ break;
+ default:
+ /* Everything else. MUL will be combined when it's leveled.
+ * Make a new expr (to replace e) with -1*e.
+ */
+ ne = yasm_xmalloc(sizeof(yasm_expr));
+ ne->op = YASM_EXPR_MUL;
+ ne->line = e->line;
+ ne->numterms = 2;
+ ne->terms[0].type = YASM_EXPR_INT;
+ ne->terms[0].data.intn = yasm_intnum_create_int(-1);
+ ne->terms[1].type = YASM_EXPR_EXPR;
+ ne->terms[1].data.expn = e;
+ return ne;
+ }
+ return e;
+}
+
+/* Transforms negatives into expressions that are easier to combine:
+ * -x -> -1*x
+ * a-b -> a+(-1*b)
+ *
+ * Call post-order on an expression tree to transform the entire tree.
+ *
+ * Returns a possibly reallocated e.
+ */
+static /*@only@*/ yasm_expr *
+expr_xform_neg(/*@returned@*/ /*@only@*/ yasm_expr *e)
+{
+ switch (e->op) {
+ case YASM_EXPR_NEG:
+ /* Turn -x into -1*x */
+ e->op = YASM_EXPR_IDENT;
+ return expr_xform_neg_helper(e);
+ case YASM_EXPR_SUB:
+ /* Turn a-b into a+(-1*b) */
+
+ /* change op to ADD, and recursively negate right side (if expr) */
+ e->op = YASM_EXPR_ADD;
+ if (e->terms[1].type == YASM_EXPR_EXPR)
+ e->terms[1].data.expn =
+ expr_xform_neg_helper(e->terms[1].data.expn);
+ else
+ expr_xform_neg_item(e, &e->terms[1]);
+ break;
+ default:
+ break;
+ }
+
+ return e;
+}
+
+/* Look for simple identities that make the entire result constant:
+ * 0*&x, -1|x, etc.
+ */
+static int
+expr_is_constant(yasm_expr_op op, yasm_intnum *intn)
+{
+ int iszero = yasm_intnum_is_zero(intn);
+ return ((iszero && op == YASM_EXPR_MUL) ||
+ (iszero && op == YASM_EXPR_AND) ||
+ (iszero && op == YASM_EXPR_LAND) ||
+ (yasm_intnum_is_neg1(intn) && op == YASM_EXPR_OR));
+}
+
+/* Look for simple "left" identities like 0+x, 1*x, etc. */
+static int
+expr_can_destroy_int_left(yasm_expr_op op, yasm_intnum *intn)
+{
+ int iszero = yasm_intnum_is_zero(intn);
+ return ((yasm_intnum_is_pos1(intn) && op == YASM_EXPR_MUL) ||
+ (iszero && op == YASM_EXPR_ADD) ||
+ (yasm_intnum_is_neg1(intn) && op == YASM_EXPR_AND) ||
+ (!iszero && op == YASM_EXPR_LAND) ||
+ (iszero && op == YASM_EXPR_OR) ||
+ (iszero && op == YASM_EXPR_LOR));
+}
+
+/* Look for simple "right" identities like x+|-0, x*&/1 */
+static int
+expr_can_destroy_int_right(yasm_expr_op op, yasm_intnum *intn)
+{
+ int iszero = yasm_intnum_is_zero(intn);
+ int ispos1 = yasm_intnum_is_pos1(intn);
+ return ((ispos1 && op == YASM_EXPR_MUL) ||
+ (ispos1 && op == YASM_EXPR_DIV) ||
+ (iszero && op == YASM_EXPR_ADD) ||
+ (iszero && op == YASM_EXPR_SUB) ||
+ (yasm_intnum_is_neg1(intn) && op == YASM_EXPR_AND) ||
+ (!iszero && op == YASM_EXPR_LAND) ||
+ (iszero && op == YASM_EXPR_OR) ||
+ (iszero && op == YASM_EXPR_LOR) ||
+ (iszero && op == YASM_EXPR_SHL) ||
+ (iszero && op == YASM_EXPR_SHR));
+}
+
+/* Check for and simplify identities. Returns new number of expr terms.
+ * Sets e->op = EXPR_IDENT if numterms ends up being 1.
+ * Uses numterms parameter instead of e->numterms for basis of "new" number
+ * of terms.
+ * Assumes int_term is *only* integer term in e.
+ * NOTE: Really designed to only be used by expr_level_op().
+ */
+static int
+expr_simplify_identity(yasm_expr *e, int numterms, int *int_term,
+ int simplify_reg_mul)
+{
+ int i;
+ int save_numterms;
+
+ /* Don't do this step if it's 1*REG. Save and restore numterms so
+ * yasm_expr__contains() works correctly.
+ */
+ save_numterms = e->numterms;
+ e->numterms = numterms;
+ if (simplify_reg_mul || e->op != YASM_EXPR_MUL
+ || !yasm_intnum_is_pos1(e->terms[*int_term].data.intn)
+ || !yasm_expr__contains(e, YASM_EXPR_REG)) {
+ /* Check for simple identities that delete the intnum.
+ * Don't delete if the intnum is the only thing in the expn.
+ */
+ if ((*int_term == 0 && numterms > 1 &&
+ expr_can_destroy_int_left(e->op, e->terms[0].data.intn)) ||
+ (*int_term > 0 &&
+ expr_can_destroy_int_right(e->op,
+ e->terms[*int_term].data.intn))) {
+ /* Delete the intnum */
+ yasm_intnum_destroy(e->terms[*int_term].data.intn);
+
+ /* Slide everything to its right over by 1 */
+ if (*int_term != numterms-1) /* if it wasn't last.. */
+ memmove(&e->terms[*int_term], &e->terms[*int_term+1],
+ (numterms-1-*int_term)*sizeof(yasm_expr__item));
+
+ /* Update numterms */
+ numterms--;
+ *int_term = -1; /* no longer an int term */
+ }
+ }
+ e->numterms = save_numterms;
+
+ /* Check for simple identites that delete everything BUT the intnum.
+ * Don't bother if the intnum is the only thing in the expn.
+ */
+ if (numterms > 1 && *int_term != -1 &&
+ expr_is_constant(e->op, e->terms[*int_term].data.intn)) {
+ /* Loop through, deleting everything but the integer term */
+ for (i=0; i<e->numterms; i++)
+ if (i != *int_term)
+ expr_delete_term(&e->terms[i], 1);
+
+ /* Move integer term to the first term (if not already there) */
+ if (*int_term != 0)
+ e->terms[0] = e->terms[*int_term]; /* structure copy */
+
+ /* Set numterms to 1 */
+ numterms = 1;
+ }
+
+ /* Compute NOT, NEG, and LNOT on single intnum. */
+ if (numterms == 1 && *int_term == 0 &&
+ (e->op == YASM_EXPR_NOT || e->op == YASM_EXPR_NEG ||
+ e->op == YASM_EXPR_LNOT))
+ yasm_intnum_calc(e->terms[0].data.intn, e->op, NULL);
+
+ /* Change expression to IDENT if possible. */
+ if (numterms == 1)
+ e->op = YASM_EXPR_IDENT;
+
+ /* Return the updated numterms */
+ return numterms;
+}
+
+/* Levels the expression tree starting at e. Eg:
+ * a+(b+c) -> a+b+c
+ * (a+b)+(c+d) -> a+b+c+d
+ * Naturally, only levels operators that allow more than two operand terms.
+ * NOTE: only does *one* level of leveling (no recursion). Should be called
+ * post-order on a tree to combine deeper levels.
+ * Also brings up any IDENT values into the current level (for ALL operators).
+ * Folds (combines by evaluation) *integer* constant values if fold_const != 0.
+ *
+ * Returns a possibly reallocated e.
+ */
+/*@-mustfree@*/
+static /*@only@*/ yasm_expr *
+expr_level_op(/*@returned@*/ /*@only@*/ yasm_expr *e, int fold_const,
+ int simplify_ident, int simplify_reg_mul)
+{
+ int i, j, o, fold_numterms, level_numterms, level_fold_numterms;
+ int first_int_term = -1;
+
+ /* Determine how many operands will need to be brought up (for leveling).
+ * Go ahead and bring up any IDENT'ed values.
+ */
+ while (e->op == YASM_EXPR_IDENT && e->terms[0].type == YASM_EXPR_EXPR) {
+ yasm_expr *sube = e->terms[0].data.expn;
+ yasm_xfree(e);
+ e = sube;
+ }
+
+ /* If non-numeric expression, don't fold constants. */
+ if (e->op > YASM_EXPR_NONNUM)
+ fold_const = 0;
+
+ level_numterms = e->numterms;
+ level_fold_numterms = 0;
+ for (i=0; i<e->numterms; i++) {
+ /* Search downward until we find something *other* than an
+ * IDENT, then bring it up to the current level.
+ */
+ while (e->terms[i].type == YASM_EXPR_EXPR &&
+ e->terms[i].data.expn->op == YASM_EXPR_IDENT) {
+ yasm_expr *sube = e->terms[i].data.expn;
+ e->terms[i] = sube->terms[0];
+ yasm_xfree(sube);
+ }
+
+ if (e->terms[i].type == YASM_EXPR_EXPR &&
+ e->terms[i].data.expn->op == e->op) {
+ /* It's an expression w/the same operator, add in its numterms.
+ * But don't forget to subtract one for the expr itself!
+ */
+ level_numterms += e->terms[i].data.expn->numterms - 1;
+
+ /* If we're folding constants, count up the number of constants
+ * that will be merged in.
+ */
+ if (fold_const)
+ for (j=0; j<e->terms[i].data.expn->numterms; j++)
+ if (e->terms[i].data.expn->terms[j].type ==
+ YASM_EXPR_INT)
+ level_fold_numterms++;
+ }
+
+ /* Find the first integer term (if one is present) if we're folding
+ * constants.
+ */
+ if (fold_const && first_int_term == -1 &&
+ e->terms[i].type == YASM_EXPR_INT)
+ first_int_term = i;
+ }
+
+ /* Look for other integer terms if there's one and combine.
+ * Also eliminate empty spaces when combining and adjust numterms
+ * variables.
+ */
+ fold_numterms = e->numterms;
+ if (first_int_term != -1) {
+ for (i=first_int_term+1, o=first_int_term+1; i<e->numterms; i++) {
+ if (e->terms[i].type == YASM_EXPR_INT) {
+ yasm_intnum_calc(e->terms[first_int_term].data.intn, e->op,
+ e->terms[i].data.intn);
+ fold_numterms--;
+ level_numterms--;
+ /* make sure to delete folded intnum */
+ yasm_intnum_destroy(e->terms[i].data.intn);
+ } else if (o != i) {
+ /* copy term if it changed places */
+ e->terms[o++] = e->terms[i];
+ } else
+ o++;
+ }
+
+ if (simplify_ident) {
+ int new_fold_numterms;
+ /* Simplify identities and make IDENT if possible. */
+ new_fold_numterms =
+ expr_simplify_identity(e, fold_numterms, &first_int_term,
+ simplify_reg_mul);
+ level_numterms -= fold_numterms-new_fold_numterms;
+ fold_numterms = new_fold_numterms;
+ }
+ if (fold_numterms == 1)
+ e->op = YASM_EXPR_IDENT;
+ }
+
+ /* Only level operators that allow more than two operand terms.
+ * Also don't bother leveling if it's not necessary to bring up any terms.
+ */
+ if ((e->op != YASM_EXPR_ADD && e->op != YASM_EXPR_MUL &&
+ e->op != YASM_EXPR_OR && e->op != YASM_EXPR_AND &&
+ e->op != YASM_EXPR_LOR && e->op != YASM_EXPR_LAND &&
+ e->op != YASM_EXPR_LXOR && e->op != YASM_EXPR_XOR) ||
+ level_numterms <= fold_numterms) {
+ /* Downsize e if necessary */
+ if (fold_numterms < e->numterms && e->numterms > 2)
+ e = yasm_xrealloc(e, sizeof(yasm_expr)+((fold_numterms<2) ? 0 :
+ sizeof(yasm_expr__item)*(fold_numterms-2)));
+ /* Update numterms */
+ e->numterms = fold_numterms;
+ return e;
+ }
+
+ /* Adjust numterms for constant folding from terms being "pulled up".
+ * Careful: if there's no integer term in e, then save space for it.
+ */
+ if (fold_const) {
+ level_numterms -= level_fold_numterms;
+ if (first_int_term == -1 && level_fold_numterms != 0)
+ level_numterms++;
+ }
+
+ /* Alloc more (or conceivably less, but not usually) space for e */
+ e = yasm_xrealloc(e, sizeof(yasm_expr)+((level_numterms<2) ? 0 :
+ sizeof(yasm_expr__item)*(level_numterms-2)));
+
+ /* Copy up ExprItem's. Iterate from right to left to keep the same
+ * ordering as was present originally.
+ * Combine integer terms as necessary.
+ */
+ for (i=fold_numterms-1, o=level_numterms-1; i>=0; i--) {
+ if (e->terms[i].type == YASM_EXPR_EXPR &&
+ e->terms[i].data.expn->op == e->op) {
+ /* bring up subexpression */
+ yasm_expr *sube = e->terms[i].data.expn;
+
+ /* copy terms right to left */
+ for (j=sube->numterms-1; j>=0; j--) {
+ if (fold_const && sube->terms[j].type == YASM_EXPR_INT) {
+ /* Need to fold it in.. but if there's no int term already,
+ * just copy into a new one.
+ */
+ if (first_int_term == -1) {
+ first_int_term = o--;
+ e->terms[first_int_term] = sube->terms[j]; /* struc */
+ } else {
+ yasm_intnum_calc(e->terms[first_int_term].data.intn,
+ e->op, sube->terms[j].data.intn);
+ /* make sure to delete folded intnum */
+ yasm_intnum_destroy(sube->terms[j].data.intn);
+ }
+ } else {
+ if (o == first_int_term)
+ o--;
+ e->terms[o--] = sube->terms[j]; /* structure copy */
+ }
+ }
+
+ /* delete subexpression, but *don't delete nodes* (as we've just
+ * copied them!)
+ */
+ yasm_xfree(sube);
+ } else if (o != i) {
+ /* copy operand if it changed places */
+ if (o == first_int_term)
+ o--;
+ e->terms[o] = e->terms[i];
+ /* If we moved the first_int_term, change first_int_num too */
+ if (i == first_int_term)
+ first_int_term = o;
+ o--;
+ } else
+ o--;
+ }
+
+ /* Simplify identities, make IDENT if possible, and save to e->numterms. */
+ if (simplify_ident && first_int_term != -1) {
+ e->numterms = expr_simplify_identity(e, level_numterms,
+ &first_int_term, simplify_reg_mul);
+ } else {
+ e->numterms = level_numterms;
+ if (level_numterms == 1)
+ e->op = YASM_EXPR_IDENT;
+ }
+
+ return e;
+}
+/*@=mustfree@*/
+
+typedef SLIST_HEAD(yasm__exprhead, yasm__exprentry) yasm__exprhead;
+typedef struct yasm__exprentry {
+ /*@reldef@*/ SLIST_ENTRY(yasm__exprentry) next;
+ /*@null@*/ const yasm_expr *e;
+} yasm__exprentry;
+
+static yasm_expr *
+expr_expand_equ(yasm_expr *e, yasm__exprhead *eh)
+{
+ int i;
+ yasm__exprentry ee;
+
+ /* traverse terms */
+ for (i=0; i<e->numterms; i++) {
+ const yasm_expr *equ_expr;
+
+ /* Expand equ's. */
+ if (e->terms[i].type == YASM_EXPR_SYM &&
+ (equ_expr = yasm_symrec_get_equ(e->terms[i].data.sym))) {
+ yasm__exprentry *np;
+
+ /* Check for circular reference */
+ SLIST_FOREACH(np, eh, next) {
+ if (np->e == equ_expr) {
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("circular reference detected"));
+ return e;
+ }
+ }
+
+ e->terms[i].type = YASM_EXPR_EXPR;
+ e->terms[i].data.expn = yasm_expr_copy(equ_expr);
+
+ /* Remember we saw this equ and recurse */
+ ee.e = equ_expr;
+ SLIST_INSERT_HEAD(eh, &ee, next);
+ e->terms[i].data.expn = expr_expand_equ(e->terms[i].data.expn, eh);
+ SLIST_REMOVE_HEAD(eh, next);
+ } else if (e->terms[i].type == YASM_EXPR_EXPR)
+ /* Recurse */
+ e->terms[i].data.expn = expr_expand_equ(e->terms[i].data.expn, eh);
+ }
+
+ return e;
+}
+
+static yasm_expr *
+expr_level_tree(yasm_expr *e, int fold_const, int simplify_ident,
+ int simplify_reg_mul, int calc_bc_dist,
+ yasm_expr_xform_func expr_xform_extra,
+ void *expr_xform_extra_data)
+{
+ int i;
+
+ e = expr_xform_neg(e);
+
+ /* traverse terms */
+ for (i=0; i<e->numterms; i++) {
+ /* Recurse */
+ if (e->terms[i].type == YASM_EXPR_EXPR)
+ e->terms[i].data.expn =
+ expr_level_tree(e->terms[i].data.expn, fold_const,
+ simplify_ident, simplify_reg_mul, calc_bc_dist,
+ expr_xform_extra, expr_xform_extra_data);
+ }
+
+ /* Check for SEG of SEG:OFF, if we match, simplify to just the segment */
+ if (e->op == YASM_EXPR_SEG && e->terms[0].type == YASM_EXPR_EXPR &&
+ e->terms[0].data.expn->op == YASM_EXPR_SEGOFF) {
+ e->op = YASM_EXPR_IDENT;
+ e->terms[0].data.expn->op = YASM_EXPR_IDENT;
+ /* Destroy the second (offset) term */
+ e->terms[0].data.expn->numterms = 1;
+ expr_delete_term(&e->terms[0].data.expn->terms[1], 1);
+ }
+
+ /* do callback */
+ e = expr_level_op(e, fold_const, simplify_ident, simplify_reg_mul);
+ if (calc_bc_dist || expr_xform_extra) {
+ if (calc_bc_dist)
+ e = expr_xform_bc_dist(e);
+ if (expr_xform_extra)
+ e = expr_xform_extra(e, expr_xform_extra_data);
+ e = expr_level_tree(e, fold_const, simplify_ident, simplify_reg_mul,
+ 0, NULL, NULL);
+ }
+ return e;
+}
+
+/* Level an entire expn tree, expanding equ's as we go */
+yasm_expr *
+yasm_expr__level_tree(yasm_expr *e, int fold_const, int simplify_ident,
+ int simplify_reg_mul, int calc_bc_dist,
+ yasm_expr_xform_func expr_xform_extra,
+ void *expr_xform_extra_data)
+{
+ yasm__exprhead eh;
+ SLIST_INIT(&eh);
+
+ if (!e)
+ return 0;
+
+ e = expr_expand_equ(e, &eh);
+ e = expr_level_tree(e, fold_const, simplify_ident, simplify_reg_mul,
+ calc_bc_dist, expr_xform_extra, expr_xform_extra_data);
+
+ return e;
+}
+
+/* Comparison function for expr_order_terms().
+ * Assumes ExprType enum is in canonical order.
+ */
+static int
+expr_order_terms_compare(const void *va, const void *vb)
+{
+ const yasm_expr__item *a = va, *b = vb;
+ return (a->type - b->type);
+}
+
+/* Reorder terms of e into canonical order. Only reorders if reordering
+ * doesn't change meaning of expression. (eg, doesn't reorder SUB).
+ * Canonical order: REG, INT, FLOAT, SYM, EXPR.
+ * Multiple terms of a single type are kept in the same order as in
+ * the original expression.
+ * NOTE: Only performs reordering on *one* level (no recursion).
+ */
+void
+yasm_expr__order_terms(yasm_expr *e)
+{
+ /* don't bother reordering if only one element */
+ if (e->numterms == 1)
+ return;
+
+ /* only reorder some types of operations */
+ switch (e->op) {
+ case YASM_EXPR_ADD:
+ case YASM_EXPR_MUL:
+ case YASM_EXPR_OR:
+ case YASM_EXPR_AND:
+ case YASM_EXPR_XOR:
+ case YASM_EXPR_LOR:
+ case YASM_EXPR_LAND:
+ case YASM_EXPR_LXOR:
+ /* Use mergesort to sort. It's fast on already sorted values and a
+ * stable sort (multiple terms of same type are kept in the same
+ * order).
+ */
+ yasm__mergesort(e->terms, (size_t)e->numterms,
+ sizeof(yasm_expr__item), expr_order_terms_compare);
+ break;
+ default:
+ break;
+ }
+}
+
+static void
+expr_item_copy(yasm_expr__item *dest, const yasm_expr__item *src)
+{
+ dest->type = src->type;
+ switch (src->type) {
+ case YASM_EXPR_SYM:
+ /* Symbols don't need to be copied */
+ dest->data.sym = src->data.sym;
+ break;
+ case YASM_EXPR_PRECBC:
+ /* Nor do direct bytecode references */
+ dest->data.precbc = src->data.precbc;
+ break;
+ case YASM_EXPR_EXPR:
+ dest->data.expn = yasm_expr__copy_except(src->data.expn, -1);
+ break;
+ case YASM_EXPR_INT:
+ dest->data.intn = yasm_intnum_copy(src->data.intn);
+ break;
+ case YASM_EXPR_FLOAT:
+ dest->data.flt = yasm_floatnum_copy(src->data.flt);
+ break;
+ case YASM_EXPR_REG:
+ dest->data.reg = src->data.reg;
+ break;
+ case YASM_EXPR_SUBST:
+ dest->data.subst = src->data.subst;
+ break;
+ default:
+ break;
+ }
+}
+
+/* Copy entire expression EXCEPT for index "except" at *top level only*. */
+yasm_expr *
+yasm_expr__copy_except(const yasm_expr *e, int except)
+{
+ yasm_expr *n;
+ int i;
+
+ n = yasm_xmalloc(sizeof(yasm_expr) +
+ sizeof(yasm_expr__item)*(e->numterms<2?0:e->numterms-2));
+
+ n->op = e->op;
+ n->line = e->line;
+ n->numterms = e->numterms;
+ for (i=0; i<e->numterms; i++) {
+ if (i != except)
+ expr_item_copy(&n->terms[i], &e->terms[i]);
+ }
+
+ return n;
+}
+
+static void
+expr_delete_term(yasm_expr__item *term, int recurse)
+{
+ switch (term->type) {
+ case YASM_EXPR_INT:
+ yasm_intnum_destroy(term->data.intn);
+ break;
+ case YASM_EXPR_FLOAT:
+ yasm_floatnum_destroy(term->data.flt);
+ break;
+ case YASM_EXPR_EXPR:
+ if (recurse)
+ yasm_expr_destroy(term->data.expn);
+ break;
+ default:
+ break;
+ }
+}
+
+static int
+expr_destroy_each(/*@only@*/ yasm_expr *e, /*@unused@*/ void *d)
+{
+ int i;
+ for (i=0; i<e->numterms; i++)
+ expr_delete_term(&e->terms[i], 0);
+ yasm_xfree(e); /* free ourselves */
+ return 0; /* don't stop recursion */
+}
+
+/*@-mustfree@*/
+void
+yasm_expr_destroy(yasm_expr *e)
+{
+ expr_traverse_nodes_post(e, NULL, expr_destroy_each);
+}
+/*@=mustfree@*/
+
+int
+yasm_expr_is_op(const yasm_expr *e, yasm_expr_op op)
+{
+ return (e->op == op);
+}
+
+static int
+expr_contains_callback(const yasm_expr__item *ei, void *d)
+{
+ yasm_expr__type *t = d;
+ return (ei->type & *t);
+}
+
+int
+yasm_expr__contains(const yasm_expr *e, yasm_expr__type t)
+{
+ return yasm_expr__traverse_leaves_in_const(e, &t, expr_contains_callback);
+}
+
+typedef struct subst_cbd {
+ unsigned int num_items;
+ const yasm_expr__item *items;
+} subst_cbd;
+
+static int
+expr_subst_callback(yasm_expr__item *ei, void *d)
+{
+ subst_cbd *cbd = d;
+ if (ei->type != YASM_EXPR_SUBST)
+ return 0;
+ if (ei->data.subst >= cbd->num_items)
+ return 1; /* error */
+ expr_item_copy(ei, &cbd->items[ei->data.subst]);
+ return 0;
+}
+
+int
+yasm_expr__subst(yasm_expr *e, unsigned int num_items,
+ const yasm_expr__item *items)
+{
+ subst_cbd cbd;
+ cbd.num_items = num_items;
+ cbd.items = items;
+ return yasm_expr__traverse_leaves_in(e, &cbd, expr_subst_callback);
+}
+
+/* Traverse over expression tree, calling func for each operation AFTER the
+ * branches (if expressions) have been traversed (eg, postorder
+ * traversal). The data pointer d is passed to each func call.
+ *
+ * Stops early (and returns 1) if func returns 1. Otherwise returns 0.
+ */
+static int
+expr_traverse_nodes_post(yasm_expr *e, void *d,
+ int (*func) (/*@null@*/ yasm_expr *e,
+ /*@null@*/ void *d))
+{
+ int i;
+
+ if (!e)
+ return 0;
+
+ /* traverse terms */
+ for (i=0; i<e->numterms; i++) {
+ if (e->terms[i].type == YASM_EXPR_EXPR &&
+ expr_traverse_nodes_post(e->terms[i].data.expn, d, func))
+ return 1;
+ }
+
+ /* do callback */
+ return func(e, d);
+}
+
+/* Traverse over expression tree in order, calling func for each leaf
+ * (non-operation). The data pointer d is passed to each func call.
+ *
+ * Stops early (and returns 1) if func returns 1. Otherwise returns 0.
+ */
+int
+yasm_expr__traverse_leaves_in_const(const yasm_expr *e, void *d,
+ int (*func) (/*@null@*/ const yasm_expr__item *ei, /*@null@*/ void *d))
+{
+ int i;
+
+ if (!e)
+ return 0;
+
+ for (i=0; i<e->numterms; i++) {
+ if (e->terms[i].type == YASM_EXPR_EXPR) {
+ if (yasm_expr__traverse_leaves_in_const(e->terms[i].data.expn, d,
+ func))
+ return 1;
+ } else {
+ if (func(&e->terms[i], d))
+ return 1;
+ }
+ }
+ return 0;
+}
+
+/* Traverse over expression tree in order, calling func for each leaf
+ * (non-operation). The data pointer d is passed to each func call.
+ *
+ * Stops early (and returns 1) if func returns 1. Otherwise returns 0.
+ */
+int
+yasm_expr__traverse_leaves_in(yasm_expr *e, void *d,
+ int (*func) (/*@null@*/ yasm_expr__item *ei, /*@null@*/ void *d))
+{
+ int i;
+
+ if (!e)
+ return 0;
+
+ for (i=0; i<e->numterms; i++) {
+ if (e->terms[i].type == YASM_EXPR_EXPR) {
+ if (yasm_expr__traverse_leaves_in(e->terms[i].data.expn, d, func))
+ return 1;
+ } else {
+ if (func(&e->terms[i], d))
+ return 1;
+ }
+ }
+ return 0;
+}
+
+yasm_expr *
+yasm_expr_extract_deep_segoff(yasm_expr **ep)
+{
+ yasm_expr *retval;
+ yasm_expr *e = *ep;
+ int i;
+
+ /* Try to extract at this level */
+ retval = yasm_expr_extract_segoff(ep);
+ if (retval)
+ return retval;
+
+ /* Not at this level? Search any expr children. */
+ for (i=0; i<e->numterms; i++) {
+ if (e->terms[i].type == YASM_EXPR_EXPR) {
+ retval = yasm_expr_extract_deep_segoff(&e->terms[i].data.expn);
+ if (retval)
+ return retval;
+ }
+ }
+
+ /* Didn't find one */
+ return NULL;
+}
+
+yasm_expr *
+yasm_expr_extract_segoff(yasm_expr **ep)
+{
+ yasm_expr *retval;
+ yasm_expr *e = *ep;
+
+ /* If not SEG:OFF, we can't do this transformation */
+ if (e->op != YASM_EXPR_SEGOFF)
+ return NULL;
+
+ /* Extract the SEG portion out to its own expression */
+ if (e->terms[0].type == YASM_EXPR_EXPR)
+ retval = e->terms[0].data.expn;
+ else {
+ /* Need to build IDENT expression to hold non-expression contents */
+ retval = yasm_xmalloc(sizeof(yasm_expr));
+ retval->op = YASM_EXPR_IDENT;
+ retval->numterms = 1;
+ retval->terms[0] = e->terms[0]; /* structure copy */
+ }
+
+ /* Delete the SEG: portion by changing the expression into an IDENT */
+ e->op = YASM_EXPR_IDENT;
+ e->numterms = 1;
+ e->terms[0] = e->terms[1]; /* structure copy */
+
+ return retval;
+}
+
+yasm_expr *
+yasm_expr_extract_wrt(yasm_expr **ep)
+{
+ yasm_expr *retval;
+ yasm_expr *e = *ep;
+
+ /* If not WRT, we can't do this transformation */
+ if (e->op != YASM_EXPR_WRT)
+ return NULL;
+
+ /* Extract the right side portion out to its own expression */
+ if (e->terms[1].type == YASM_EXPR_EXPR)
+ retval = e->terms[1].data.expn;
+ else {
+ /* Need to build IDENT expression to hold non-expression contents */
+ retval = yasm_xmalloc(sizeof(yasm_expr));
+ retval->op = YASM_EXPR_IDENT;
+ retval->numterms = 1;
+ retval->terms[0] = e->terms[1]; /* structure copy */
+ }
+
+ /* Delete the right side portion by changing the expr into an IDENT */
+ e->op = YASM_EXPR_IDENT;
+ e->numterms = 1;
+
+ return retval;
+}
+
+/*@-unqualifiedtrans -nullderef -nullstate -onlytrans@*/
+yasm_intnum *
+yasm_expr_get_intnum(yasm_expr **ep, int calc_bc_dist)
+{
+ *ep = yasm_expr_simplify(*ep, calc_bc_dist);
+
+ if ((*ep)->op == YASM_EXPR_IDENT && (*ep)->terms[0].type == YASM_EXPR_INT)
+ return (*ep)->terms[0].data.intn;
+ else
+ return (yasm_intnum *)NULL;
+}
+/*@=unqualifiedtrans =nullderef -nullstate -onlytrans@*/
+
+/*@-unqualifiedtrans -nullderef -nullstate -onlytrans@*/
+const yasm_symrec *
+yasm_expr_get_symrec(yasm_expr **ep, int simplify)
+{
+ if (simplify)
+ *ep = yasm_expr_simplify(*ep, 0);
+
+ if ((*ep)->op == YASM_EXPR_IDENT && (*ep)->terms[0].type == YASM_EXPR_SYM)
+ return (*ep)->terms[0].data.sym;
+ else
+ return (yasm_symrec *)NULL;
+}
+/*@=unqualifiedtrans =nullderef -nullstate -onlytrans@*/
+
+/*@-unqualifiedtrans -nullderef -nullstate -onlytrans@*/
+const uintptr_t *
+yasm_expr_get_reg(yasm_expr **ep, int simplify)
+{
+ if (simplify)
+ *ep = yasm_expr_simplify(*ep, 0);
+
+ if ((*ep)->op == YASM_EXPR_IDENT && (*ep)->terms[0].type == YASM_EXPR_REG)
+ return &((*ep)->terms[0].data.reg);
+ else
+ return NULL;
+}
+/*@=unqualifiedtrans =nullderef -nullstate -onlytrans@*/
+
+void
+yasm_expr_print(const yasm_expr *e, FILE *f)
+{
+ char opstr[8];
+ int i;
+
+ if (!e) {
+ fprintf(f, "(nil)");
+ return;
+ }
+
+ switch (e->op) {
+ case YASM_EXPR_ADD:
+ strcpy(opstr, "+");
+ break;
+ case YASM_EXPR_SUB:
+ strcpy(opstr, "-");
+ break;
+ case YASM_EXPR_MUL:
+ strcpy(opstr, "*");
+ break;
+ case YASM_EXPR_DIV:
+ strcpy(opstr, "/");
+ break;
+ case YASM_EXPR_SIGNDIV:
+ strcpy(opstr, "//");
+ break;
+ case YASM_EXPR_MOD:
+ strcpy(opstr, "%");
+ break;
+ case YASM_EXPR_SIGNMOD:
+ strcpy(opstr, "%%");
+ break;
+ case YASM_EXPR_NEG:
+ fprintf(f, "-");
+ opstr[0] = 0;
+ break;
+ case YASM_EXPR_NOT:
+ fprintf(f, "~");
+ opstr[0] = 0;
+ break;
+ case YASM_EXPR_OR:
+ strcpy(opstr, "|");
+ break;
+ case YASM_EXPR_AND:
+ strcpy(opstr, "&");
+ break;
+ case YASM_EXPR_XOR:
+ strcpy(opstr, "^");
+ break;
+ case YASM_EXPR_XNOR:
+ strcpy(opstr, "XNOR");
+ break;
+ case YASM_EXPR_NOR:
+ strcpy(opstr, "NOR");
+ break;
+ case YASM_EXPR_SHL:
+ strcpy(opstr, "<<");
+ break;
+ case YASM_EXPR_SHR:
+ strcpy(opstr, ">>");
+ break;
+ case YASM_EXPR_LOR:
+ strcpy(opstr, "||");
+ break;
+ case YASM_EXPR_LAND:
+ strcpy(opstr, "&&");
+ break;
+ case YASM_EXPR_LNOT:
+ strcpy(opstr, "!");
+ break;
+ case YASM_EXPR_LXOR:
+ strcpy(opstr, "^^");
+ break;
+ case YASM_EXPR_LXNOR:
+ strcpy(opstr, "LXNOR");
+ break;
+ case YASM_EXPR_LNOR:
+ strcpy(opstr, "LNOR");
+ break;
+ case YASM_EXPR_LT:
+ strcpy(opstr, "<");
+ break;
+ case YASM_EXPR_GT:
+ strcpy(opstr, ">");
+ break;
+ case YASM_EXPR_LE:
+ strcpy(opstr, "<=");
+ break;
+ case YASM_EXPR_GE:
+ strcpy(opstr, ">=");
+ break;
+ case YASM_EXPR_NE:
+ strcpy(opstr, "!=");
+ break;
+ case YASM_EXPR_EQ:
+ strcpy(opstr, "==");
+ break;
+ case YASM_EXPR_SEG:
+ fprintf(f, "SEG ");
+ opstr[0] = 0;
+ break;
+ case YASM_EXPR_WRT:
+ strcpy(opstr, " WRT ");
+ break;
+ case YASM_EXPR_SEGOFF:
+ strcpy(opstr, ":");
+ break;
+ case YASM_EXPR_IDENT:
+ opstr[0] = 0;
+ break;
+ default:
+ strcpy(opstr, " !UNK! ");
+ break;
+ }
+ for (i=0; i<e->numterms; i++) {
+ switch (e->terms[i].type) {
+ case YASM_EXPR_PRECBC:
+ fprintf(f, "{%lx}",
+ yasm_bc_next_offset(e->terms[i].data.precbc));
+ break;
+ case YASM_EXPR_SYM:
+ fprintf(f, "%s", yasm_symrec_get_name(e->terms[i].data.sym));
+ break;
+ case YASM_EXPR_EXPR:
+ fprintf(f, "(");
+ yasm_expr_print(e->terms[i].data.expn, f);
+ fprintf(f, ")");
+ break;
+ case YASM_EXPR_INT:
+ yasm_intnum_print(e->terms[i].data.intn, f);
+ break;
+ case YASM_EXPR_FLOAT:
+ yasm_floatnum_print(e->terms[i].data.flt, f);
+ break;
+ case YASM_EXPR_REG:
+ /* FIXME */
+ /*yasm_arch_reg_print(arch, e->terms[i].data.reg, f);*/
+ break;
+ case YASM_EXPR_SUBST:
+ fprintf(f, "[%u]", e->terms[i].data.subst);
+ break;
+ case YASM_EXPR_NONE:
+ break;
+ }
+ if (i < e->numterms-1)
+ fprintf(f, "%s", opstr);
+ }
+}
+
+unsigned int
+yasm_expr_size(const yasm_expr *e)
+{
+ int i;
+ int seen = 0;
+ unsigned int size = 0, newsize;
+
+ if (e->op == YASM_EXPR_IDENT) {
+ if (e->terms[0].type == YASM_EXPR_SYM)
+ return yasm_symrec_get_size(e->terms[0].data.sym);
+ return 0;
+ }
+ if (e->op != YASM_EXPR_ADD && e->op != YASM_EXPR_SUB)
+ return 0;
+
+ for (i=0; i<e->numterms; i++) {
+ newsize = 0;
+ switch (e->terms[i].type) {
+ case YASM_EXPR_EXPR:
+ newsize = yasm_expr_size(e->terms[i].data.expn);
+ break;
+ case YASM_EXPR_SYM:
+ newsize = yasm_symrec_get_size(e->terms[i].data.sym);
+ break;
+ default:
+ break;
+ }
+ if (newsize) {
+ size = newsize;
+ if (seen)
+ /* either sum of idents (?!) or substract of idents */
+ return 0;
+ seen = 1;
+ }
+ }
+ /* exactly one offset */
+ return size;
+}
+
+const char *
+yasm_expr_segment(const yasm_expr *e)
+{
+ int i;
+ int seen = 0;
+ const char *segment = NULL;
+
+ if (e->op == YASM_EXPR_IDENT) {
+ if (e->terms[0].type == YASM_EXPR_SYM)
+ return yasm_symrec_get_segment(e->terms[0].data.sym);
+ return NULL;
+ }
+ if (e->op != YASM_EXPR_ADD && e->op != YASM_EXPR_SUB)
+ return NULL;
+
+ for (i=0; i<e->numterms; i++) {
+ if ((e->op == YASM_EXPR_ADD || !i) &&
+ e->terms[i].type == YASM_EXPR_EXPR) {
+ if ((segment = yasm_expr_segment(e->terms[i].data.expn))) {
+ if (seen) {
+ /* either sum of idents (?!) or substract of idents */
+ return NULL;
+ }
+ seen = 1;
+ }
+ }
+ }
+ /* exactly one offset */
+ return segment;
+}
diff --git a/contrib/tools/yasm/libyasm/expr.h b/contrib/tools/yasm/libyasm/expr.h
index b68bff0c81..0de62dfed7 100644
--- a/contrib/tools/yasm/libyasm/expr.h
+++ b/contrib/tools/yasm/libyasm/expr.h
@@ -1,388 +1,388 @@
-/**
- * \file libyasm/expr.h
- * \brief YASM expression interface.
- *
- * \license
- * Copyright (C) 2001-2007 Michael Urman, Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- * \endlicense
- */
-#ifndef YASM_EXPR_H
-#define YASM_EXPR_H
-
-#ifndef YASM_LIB_DECL
-#define YASM_LIB_DECL
-#endif
-
-/** Type of an expression item. Types are listed in canonical sorting order.
- * See expr_order_terms().
- * Note #YASM_EXPR_PRECBC must be used carefully (in a-b pairs), as only
- * symrecs can become the relative term in a #yasm_value.
- */
-typedef enum yasm_expr__type {
- YASM_EXPR_NONE = 0, /**< Nothing */
- YASM_EXPR_REG = 1<<0, /**< Register */
- YASM_EXPR_INT = 1<<1, /**< Integer value */
- YASM_EXPR_SUBST = 1<<2, /**< Substitution placeholder */
- YASM_EXPR_FLOAT = 1<<3, /**< Floating point value */
- YASM_EXPR_SYM = 1<<4, /**< Symbol */
- YASM_EXPR_PRECBC = 1<<5,/**< Direct bytecode ref (rather than via sym) */
- YASM_EXPR_EXPR = 1<<6 /**< Subexpression */
-} yasm_expr__type;
-
-/** Expression item. */
-typedef struct yasm_expr__item {
- yasm_expr__type type; /**< Type */
-
- /** Expression item data. Correct value depends on type. */
- union {
- yasm_bytecode *precbc; /**< Direct bytecode ref (YASM_EXPR_PRECBC) */
- yasm_symrec *sym; /**< Symbol (YASM_EXPR_SYM) */
- yasm_expr *expn; /**< Subexpression (YASM_EXPR_EXPR) */
- yasm_intnum *intn; /**< Integer value (YASM_EXPR_INT) */
- yasm_floatnum *flt; /**< Floating point value (YASM_EXPR_FLOAT) */
- uintptr_t reg; /**< Register (YASM_EXPR_REG) */
- unsigned int subst; /**< Subst placeholder (YASM_EXPR_SUBST) */
- } data;
-} yasm_expr__item;
-
-/** Expression. */
-struct yasm_expr {
- yasm_expr_op op; /**< Operation. */
- unsigned long line; /**< Line number where expression was defined. */
- int numterms; /**< Number of terms in the expression. */
-
- /** Terms of the expression. Structure may be extended to include more
- * terms, as some operations may allow more than two operand terms
- * (ADD, MUL, OR, AND, XOR).
- */
- yasm_expr__item terms[2];
-};
-
-/** Create a new expression e=a op b.
- * \param op operation
- * \param a expression item a
- * \param b expression item b (optional depending on op)
- * \param line virtual line (where expression defined)
- * \return Newly allocated expression.
- */
-YASM_LIB_DECL
-/*@only@*/ yasm_expr *yasm_expr_create
- (yasm_expr_op op, /*@only@*/ yasm_expr__item *a,
- /*@only@*/ /*@null@*/ yasm_expr__item *b, unsigned long line);
-
-/** Create a new preceding-bytecode expression item.
- * \param precbc preceding bytecode
- * \return Newly allocated expression item.
- */
-YASM_LIB_DECL
-/*@only@*/ yasm_expr__item *yasm_expr_precbc(/*@keep@*/ yasm_bytecode *precbc);
-
-/** Create a new symbol expression item.
- * \param sym symbol
- * \return Newly allocated expression item.
- */
-YASM_LIB_DECL
-/*@only@*/ yasm_expr__item *yasm_expr_sym(/*@keep@*/ yasm_symrec *sym);
-
-/** Create a new expression expression item.
- * \param e expression
- * \return Newly allocated expression item.
- */
-YASM_LIB_DECL
-/*@only@*/ yasm_expr__item *yasm_expr_expr(/*@keep@*/ yasm_expr *e);
-
-/** Create a new intnum expression item.
- * \param intn intnum
- * \return Newly allocated expression item.
- */
-YASM_LIB_DECL
-/*@only@*/ yasm_expr__item *yasm_expr_int(/*@keep@*/ yasm_intnum *intn);
-
-/** Create a new floatnum expression item.
- * \param flt floatnum
- * \return Newly allocated expression item.
- */
-YASM_LIB_DECL
-/*@only@*/ yasm_expr__item *yasm_expr_float(/*@keep@*/ yasm_floatnum *flt);
-
-/** Create a new register expression item.
- * \param reg register
- * \return Newly allocated expression item.
- */
-YASM_LIB_DECL
-/*@only@*/ yasm_expr__item *yasm_expr_reg(uintptr_t reg);
-
-/** Create a new expression tree e=l op r.
- * \param l expression for left side of new expression
- * \param o operation
- * \param r expression for right side of new expression
- * \param i line index
- * \return Newly allocated expression.
- */
-#define yasm_expr_create_tree(l,o,r,i) \
- yasm_expr_create ((o), yasm_expr_expr(l), yasm_expr_expr(r), i)
-
-/** Create a new expression branch e=op r.
- * \param o operation
- * \param r expression for right side of new expression
- * \param i line index
- * \return Newly allocated expression.
- */
-#define yasm_expr_create_branch(o,r,i) \
- yasm_expr_create ((o), yasm_expr_expr(r), (yasm_expr__item *)NULL, i)
-
-/** Create a new expression identity e=r.
- * \param r expression for identity within new expression
- * \param i line index
- * \return Newly allocated expression.
- */
-#define yasm_expr_create_ident(r,i) \
- yasm_expr_create (YASM_EXPR_IDENT, (r), (yasm_expr__item *)NULL, i)
-
-/** Duplicate an expression.
- * \param e expression
- * \return Newly allocated expression identical to e.
- */
-yasm_expr *yasm_expr_copy(const yasm_expr *e);
-#ifndef YASM_DOXYGEN
-#define yasm_expr_copy(e) yasm_expr__copy_except(e, -1)
-#endif
-
-/** Destroy (free allocated memory for) an expression.
- * \param e expression
- */
-YASM_LIB_DECL
-void yasm_expr_destroy(/*@only@*/ /*@null@*/ yasm_expr *e);
-
-/** Determine if an expression is a specified operation (at the top level).
- * \param e expression
- * \param op operator
- * \return Nonzero if the expression was the specified operation at the top
- * level, zero otherwise.
- */
-YASM_LIB_DECL
-int yasm_expr_is_op(const yasm_expr *e, yasm_expr_op op);
-
-/** Extra transformation function for yasm_expr__level_tree().
- * \param e expression being simplified
- * \param d data provided as expr_xform_extra_data to
- * yasm_expr__level_tree()
- * \return Transformed e.
- */
-typedef /*@only@*/ yasm_expr * (*yasm_expr_xform_func)
- (/*@returned@*/ /*@only@*/ yasm_expr *e, /*@null@*/ void *d);
-
-/** Level an entire expression tree.
- * \internal
- * \param e expression
- * \param fold_const enable constant folding if nonzero
- * \param simplify_ident simplify identities
- * \param simplify_reg_mul simplify REG*1 identities
- * \param calc_bc_dist nonzero if distances between bytecodes should be
- * calculated, 0 if they should be left intact
- * \param expr_xform_extra extra transformation function
- * \param expr_xform_extra_data data to pass to expr_xform_extra
- * \return Leveled expression.
- */
-YASM_LIB_DECL
-/*@only@*/ /*@null@*/ yasm_expr *yasm_expr__level_tree
- (/*@returned@*/ /*@only@*/ /*@null@*/ yasm_expr *e, int fold_const,
- int simplify_ident, int simplify_reg_mul, int calc_bc_dist,
- /*@null@*/ yasm_expr_xform_func expr_xform_extra,
- /*@null@*/ void *expr_xform_extra_data);
-
-/** Simplify an expression as much as possible. Eliminates extraneous
- * branches and simplifies integer-only subexpressions. Simplified version
- * of yasm_expr__level_tree().
- * \param e expression
- * \param cbd if distance between bytecodes should be calculated
- * \return Simplified expression.
- */
-#define yasm_expr_simplify(e, cbd) \
- yasm_expr__level_tree(e, 1, 1, 1, cbd, NULL, NULL)
-
-/** Extract the segment portion of an expression containing SEG:OFF, leaving
- * the offset.
- * \param ep expression (pointer to)
- * \return NULL if unable to extract a segment (expr does not contain a
- * YASM_EXPR_SEGOFF operator), otherwise the segment expression.
- * The input expression is modified such that on return, it's the
- * offset expression.
- */
-YASM_LIB_DECL
-/*@only@*/ /*@null@*/ yasm_expr *yasm_expr_extract_deep_segoff(yasm_expr **ep);
-
-/** Extract the segment portion of a SEG:OFF expression, leaving the offset.
- * \param ep expression (pointer to)
- * \return NULL if unable to extract a segment (YASM_EXPR_SEGOFF not the
- * top-level operator), otherwise the segment expression. The input
- * expression is modified such that on return, it's the offset
- * expression.
- */
-YASM_LIB_DECL
-/*@only@*/ /*@null@*/ yasm_expr *yasm_expr_extract_segoff(yasm_expr **ep);
-
-/** Extract the right portion (y) of a x WRT y expression, leaving the left
- * portion (x).
- * \param ep expression (pointer to)
- * \return NULL if unable to extract (YASM_EXPR_WRT not the top-level
- * operator), otherwise the right side of the WRT expression. The
- * input expression is modified such that on return, it's the left side
- * of the WRT expression.
- */
-YASM_LIB_DECL
-/*@only@*/ /*@null@*/ yasm_expr *yasm_expr_extract_wrt(yasm_expr **ep);
-
-/** Get the integer value of an expression if it's just an integer.
- * \param ep expression (pointer to)
- * \param calc_bc_dist nonzero if distances between bytecodes should be
- * calculated, 0 if NULL should be returned in this case
- * \return NULL if the expression is too complex (contains anything other than
- * integers, ie floats, non-valued labels, registers); otherwise the
- * intnum value of the expression.
- */
-YASM_LIB_DECL
-/*@dependent@*/ /*@null@*/ yasm_intnum *yasm_expr_get_intnum
- (yasm_expr **ep, int calc_bc_dist);
-
-/** Get the symbol value of an expression if it's just a symbol.
- * \param ep expression (pointer to)
- * \param simplify if nonzero, simplify the expression first
- * \return NULL if the expression is too complex; otherwise the symbol value of
- * the expression.
- */
-YASM_LIB_DECL
-/*@dependent@*/ /*@null@*/ const yasm_symrec *yasm_expr_get_symrec
- (yasm_expr **ep, int simplify);
-
-/** Get the register value of an expression if it's just a register.
- * \param ep expression (pointer to)
- * \param simplify if nonzero, simplify the expression first
- * \return NULL if the expression is too complex; otherwise the register value
- * of the expression.
- */
-YASM_LIB_DECL
-/*@dependent@*/ /*@null@*/ const uintptr_t *yasm_expr_get_reg
- (yasm_expr **ep, int simplify);
-
-/** Print an expression. For debugging purposes.
- * \param e expression
- * \param f file
- */
-YASM_LIB_DECL
-void yasm_expr_print(/*@null@*/ const yasm_expr *e, FILE *f);
-
-/** Return the size of an expression, if the user provided it
- * \param e expression
- */
-YASM_LIB_DECL
-unsigned int yasm_expr_size(const yasm_expr *e);
-
-/** Return the segment of an expression, if the user provided it
- * \param e expression
- */
-YASM_LIB_DECL
-const char *yasm_expr_segment(const yasm_expr *e);
-
-/** Traverse over expression tree in order (const version).
- * Calls func for each leaf (non-operation).
- * \param e expression
- * \param d data passed to each call to func
- * \param func callback function
- * \return Stops early (and returns 1) if func returns 1.
- * Otherwise returns 0.
- */
-YASM_LIB_DECL
-int yasm_expr__traverse_leaves_in_const
- (const yasm_expr *e, /*@null@*/ void *d,
- int (*func) (/*@null@*/ const yasm_expr__item *ei, /*@null@*/ void *d));
-
-/** Traverse over expression tree in order.
- * Calls func for each leaf (non-operation).
- * \param e expression
- * \param d data passed to each call to func
- * \param func callback function
- * \return Stops early (and returns 1) if func returns 1.
- * Otherwise returns 0.
- */
-YASM_LIB_DECL
-int yasm_expr__traverse_leaves_in
- (yasm_expr *e, /*@null@*/ void *d,
- int (*func) (/*@null@*/ yasm_expr__item *ei, /*@null@*/ void *d));
-
-/** Reorder terms of e into canonical order. Only reorders if reordering
- * doesn't change meaning of expression. (eg, doesn't reorder SUB).
- * Canonical order: REG, INT, FLOAT, SYM, EXPR.
- * Multiple terms of a single type are kept in the same order as in
- * the original expression.
- * \param e expression
- * \note Only performs reordering on *one* level (no recursion).
- */
-YASM_LIB_DECL
-void yasm_expr__order_terms(yasm_expr *e);
-
-/** Copy entire expression EXCEPT for index "except" at *top level only*.
- * \param e expression
- * \param except term index not to copy; -1 to copy all terms
- * \return Newly allocated copy of expression.
- */
-YASM_LIB_DECL
-yasm_expr *yasm_expr__copy_except(const yasm_expr *e, int except);
-
-/** Test if expression contains an item. Searches recursively into
- * subexpressions.
- * \param e expression
- * \param t type of item to look for
- * \return Nonzero if expression contains an item of type t, zero if not.
- */
-YASM_LIB_DECL
-int yasm_expr__contains(const yasm_expr *e, yasm_expr__type t);
-
-/** Transform symrec-symrec terms in expression into #YASM_EXPR_SUBST items.
- * Calls the callback function for each symrec-symrec term.
- * \param ep expression (pointer to)
- * \param cbd callback data passed to callback function
- * \param callback callback function: given subst index for bytecode
- * pair, bytecode pair (bc2-bc1), and cbd (callback data)
- * \return Number of transformations made.
- */
-YASM_LIB_DECL
-int yasm_expr__bc_dist_subst(yasm_expr **ep, void *cbd,
- void (*callback) (unsigned int subst,
- yasm_bytecode *precbc,
- yasm_bytecode *precbc2,
- void *cbd));
-
-/** Substitute items into expr YASM_EXPR_SUBST items (by index). Items are
- * copied, so caller is responsible for freeing array of items.
- * \param e expression
- * \param num_items number of items in items array
- * \param items items array
- * \return 1 on error (index out of range).
- */
-YASM_LIB_DECL
-int yasm_expr__subst(yasm_expr *e, unsigned int num_items,
- const yasm_expr__item *items);
-
-#endif
+/**
+ * \file libyasm/expr.h
+ * \brief YASM expression interface.
+ *
+ * \license
+ * Copyright (C) 2001-2007 Michael Urman, Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * - Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ * \endlicense
+ */
+#ifndef YASM_EXPR_H
+#define YASM_EXPR_H
+
+#ifndef YASM_LIB_DECL
+#define YASM_LIB_DECL
+#endif
+
+/** Type of an expression item. Types are listed in canonical sorting order.
+ * See expr_order_terms().
+ * Note #YASM_EXPR_PRECBC must be used carefully (in a-b pairs), as only
+ * symrecs can become the relative term in a #yasm_value.
+ */
+typedef enum yasm_expr__type {
+ YASM_EXPR_NONE = 0, /**< Nothing */
+ YASM_EXPR_REG = 1<<0, /**< Register */
+ YASM_EXPR_INT = 1<<1, /**< Integer value */
+ YASM_EXPR_SUBST = 1<<2, /**< Substitution placeholder */
+ YASM_EXPR_FLOAT = 1<<3, /**< Floating point value */
+ YASM_EXPR_SYM = 1<<4, /**< Symbol */
+ YASM_EXPR_PRECBC = 1<<5,/**< Direct bytecode ref (rather than via sym) */
+ YASM_EXPR_EXPR = 1<<6 /**< Subexpression */
+} yasm_expr__type;
+
+/** Expression item. */
+typedef struct yasm_expr__item {
+ yasm_expr__type type; /**< Type */
+
+ /** Expression item data. Correct value depends on type. */
+ union {
+ yasm_bytecode *precbc; /**< Direct bytecode ref (YASM_EXPR_PRECBC) */
+ yasm_symrec *sym; /**< Symbol (YASM_EXPR_SYM) */
+ yasm_expr *expn; /**< Subexpression (YASM_EXPR_EXPR) */
+ yasm_intnum *intn; /**< Integer value (YASM_EXPR_INT) */
+ yasm_floatnum *flt; /**< Floating point value (YASM_EXPR_FLOAT) */
+ uintptr_t reg; /**< Register (YASM_EXPR_REG) */
+ unsigned int subst; /**< Subst placeholder (YASM_EXPR_SUBST) */
+ } data;
+} yasm_expr__item;
+
+/** Expression. */
+struct yasm_expr {
+ yasm_expr_op op; /**< Operation. */
+ unsigned long line; /**< Line number where expression was defined. */
+ int numterms; /**< Number of terms in the expression. */
+
+ /** Terms of the expression. Structure may be extended to include more
+ * terms, as some operations may allow more than two operand terms
+ * (ADD, MUL, OR, AND, XOR).
+ */
+ yasm_expr__item terms[2];
+};
+
+/** Create a new expression e=a op b.
+ * \param op operation
+ * \param a expression item a
+ * \param b expression item b (optional depending on op)
+ * \param line virtual line (where expression defined)
+ * \return Newly allocated expression.
+ */
+YASM_LIB_DECL
+/*@only@*/ yasm_expr *yasm_expr_create
+ (yasm_expr_op op, /*@only@*/ yasm_expr__item *a,
+ /*@only@*/ /*@null@*/ yasm_expr__item *b, unsigned long line);
+
+/** Create a new preceding-bytecode expression item.
+ * \param precbc preceding bytecode
+ * \return Newly allocated expression item.
+ */
+YASM_LIB_DECL
+/*@only@*/ yasm_expr__item *yasm_expr_precbc(/*@keep@*/ yasm_bytecode *precbc);
+
+/** Create a new symbol expression item.
+ * \param sym symbol
+ * \return Newly allocated expression item.
+ */
+YASM_LIB_DECL
+/*@only@*/ yasm_expr__item *yasm_expr_sym(/*@keep@*/ yasm_symrec *sym);
+
+/** Create a new expression expression item.
+ * \param e expression
+ * \return Newly allocated expression item.
+ */
+YASM_LIB_DECL
+/*@only@*/ yasm_expr__item *yasm_expr_expr(/*@keep@*/ yasm_expr *e);
+
+/** Create a new intnum expression item.
+ * \param intn intnum
+ * \return Newly allocated expression item.
+ */
+YASM_LIB_DECL
+/*@only@*/ yasm_expr__item *yasm_expr_int(/*@keep@*/ yasm_intnum *intn);
+
+/** Create a new floatnum expression item.
+ * \param flt floatnum
+ * \return Newly allocated expression item.
+ */
+YASM_LIB_DECL
+/*@only@*/ yasm_expr__item *yasm_expr_float(/*@keep@*/ yasm_floatnum *flt);
+
+/** Create a new register expression item.
+ * \param reg register
+ * \return Newly allocated expression item.
+ */
+YASM_LIB_DECL
+/*@only@*/ yasm_expr__item *yasm_expr_reg(uintptr_t reg);
+
+/** Create a new expression tree e=l op r.
+ * \param l expression for left side of new expression
+ * \param o operation
+ * \param r expression for right side of new expression
+ * \param i line index
+ * \return Newly allocated expression.
+ */
+#define yasm_expr_create_tree(l,o,r,i) \
+ yasm_expr_create ((o), yasm_expr_expr(l), yasm_expr_expr(r), i)
+
+/** Create a new expression branch e=op r.
+ * \param o operation
+ * \param r expression for right side of new expression
+ * \param i line index
+ * \return Newly allocated expression.
+ */
+#define yasm_expr_create_branch(o,r,i) \
+ yasm_expr_create ((o), yasm_expr_expr(r), (yasm_expr__item *)NULL, i)
+
+/** Create a new expression identity e=r.
+ * \param r expression for identity within new expression
+ * \param i line index
+ * \return Newly allocated expression.
+ */
+#define yasm_expr_create_ident(r,i) \
+ yasm_expr_create (YASM_EXPR_IDENT, (r), (yasm_expr__item *)NULL, i)
+
+/** Duplicate an expression.
+ * \param e expression
+ * \return Newly allocated expression identical to e.
+ */
+yasm_expr *yasm_expr_copy(const yasm_expr *e);
+#ifndef YASM_DOXYGEN
+#define yasm_expr_copy(e) yasm_expr__copy_except(e, -1)
+#endif
+
+/** Destroy (free allocated memory for) an expression.
+ * \param e expression
+ */
+YASM_LIB_DECL
+void yasm_expr_destroy(/*@only@*/ /*@null@*/ yasm_expr *e);
+
+/** Determine if an expression is a specified operation (at the top level).
+ * \param e expression
+ * \param op operator
+ * \return Nonzero if the expression was the specified operation at the top
+ * level, zero otherwise.
+ */
+YASM_LIB_DECL
+int yasm_expr_is_op(const yasm_expr *e, yasm_expr_op op);
+
+/** Extra transformation function for yasm_expr__level_tree().
+ * \param e expression being simplified
+ * \param d data provided as expr_xform_extra_data to
+ * yasm_expr__level_tree()
+ * \return Transformed e.
+ */
+typedef /*@only@*/ yasm_expr * (*yasm_expr_xform_func)
+ (/*@returned@*/ /*@only@*/ yasm_expr *e, /*@null@*/ void *d);
+
+/** Level an entire expression tree.
+ * \internal
+ * \param e expression
+ * \param fold_const enable constant folding if nonzero
+ * \param simplify_ident simplify identities
+ * \param simplify_reg_mul simplify REG*1 identities
+ * \param calc_bc_dist nonzero if distances between bytecodes should be
+ * calculated, 0 if they should be left intact
+ * \param expr_xform_extra extra transformation function
+ * \param expr_xform_extra_data data to pass to expr_xform_extra
+ * \return Leveled expression.
+ */
+YASM_LIB_DECL
+/*@only@*/ /*@null@*/ yasm_expr *yasm_expr__level_tree
+ (/*@returned@*/ /*@only@*/ /*@null@*/ yasm_expr *e, int fold_const,
+ int simplify_ident, int simplify_reg_mul, int calc_bc_dist,
+ /*@null@*/ yasm_expr_xform_func expr_xform_extra,
+ /*@null@*/ void *expr_xform_extra_data);
+
+/** Simplify an expression as much as possible. Eliminates extraneous
+ * branches and simplifies integer-only subexpressions. Simplified version
+ * of yasm_expr__level_tree().
+ * \param e expression
+ * \param cbd if distance between bytecodes should be calculated
+ * \return Simplified expression.
+ */
+#define yasm_expr_simplify(e, cbd) \
+ yasm_expr__level_tree(e, 1, 1, 1, cbd, NULL, NULL)
+
+/** Extract the segment portion of an expression containing SEG:OFF, leaving
+ * the offset.
+ * \param ep expression (pointer to)
+ * \return NULL if unable to extract a segment (expr does not contain a
+ * YASM_EXPR_SEGOFF operator), otherwise the segment expression.
+ * The input expression is modified such that on return, it's the
+ * offset expression.
+ */
+YASM_LIB_DECL
+/*@only@*/ /*@null@*/ yasm_expr *yasm_expr_extract_deep_segoff(yasm_expr **ep);
+
+/** Extract the segment portion of a SEG:OFF expression, leaving the offset.
+ * \param ep expression (pointer to)
+ * \return NULL if unable to extract a segment (YASM_EXPR_SEGOFF not the
+ * top-level operator), otherwise the segment expression. The input
+ * expression is modified such that on return, it's the offset
+ * expression.
+ */
+YASM_LIB_DECL
+/*@only@*/ /*@null@*/ yasm_expr *yasm_expr_extract_segoff(yasm_expr **ep);
+
+/** Extract the right portion (y) of a x WRT y expression, leaving the left
+ * portion (x).
+ * \param ep expression (pointer to)
+ * \return NULL if unable to extract (YASM_EXPR_WRT not the top-level
+ * operator), otherwise the right side of the WRT expression. The
+ * input expression is modified such that on return, it's the left side
+ * of the WRT expression.
+ */
+YASM_LIB_DECL
+/*@only@*/ /*@null@*/ yasm_expr *yasm_expr_extract_wrt(yasm_expr **ep);
+
+/** Get the integer value of an expression if it's just an integer.
+ * \param ep expression (pointer to)
+ * \param calc_bc_dist nonzero if distances between bytecodes should be
+ * calculated, 0 if NULL should be returned in this case
+ * \return NULL if the expression is too complex (contains anything other than
+ * integers, ie floats, non-valued labels, registers); otherwise the
+ * intnum value of the expression.
+ */
+YASM_LIB_DECL
+/*@dependent@*/ /*@null@*/ yasm_intnum *yasm_expr_get_intnum
+ (yasm_expr **ep, int calc_bc_dist);
+
+/** Get the symbol value of an expression if it's just a symbol.
+ * \param ep expression (pointer to)
+ * \param simplify if nonzero, simplify the expression first
+ * \return NULL if the expression is too complex; otherwise the symbol value of
+ * the expression.
+ */
+YASM_LIB_DECL
+/*@dependent@*/ /*@null@*/ const yasm_symrec *yasm_expr_get_symrec
+ (yasm_expr **ep, int simplify);
+
+/** Get the register value of an expression if it's just a register.
+ * \param ep expression (pointer to)
+ * \param simplify if nonzero, simplify the expression first
+ * \return NULL if the expression is too complex; otherwise the register value
+ * of the expression.
+ */
+YASM_LIB_DECL
+/*@dependent@*/ /*@null@*/ const uintptr_t *yasm_expr_get_reg
+ (yasm_expr **ep, int simplify);
+
+/** Print an expression. For debugging purposes.
+ * \param e expression
+ * \param f file
+ */
+YASM_LIB_DECL
+void yasm_expr_print(/*@null@*/ const yasm_expr *e, FILE *f);
+
+/** Return the size of an expression, if the user provided it
+ * \param e expression
+ */
+YASM_LIB_DECL
+unsigned int yasm_expr_size(const yasm_expr *e);
+
+/** Return the segment of an expression, if the user provided it
+ * \param e expression
+ */
+YASM_LIB_DECL
+const char *yasm_expr_segment(const yasm_expr *e);
+
+/** Traverse over expression tree in order (const version).
+ * Calls func for each leaf (non-operation).
+ * \param e expression
+ * \param d data passed to each call to func
+ * \param func callback function
+ * \return Stops early (and returns 1) if func returns 1.
+ * Otherwise returns 0.
+ */
+YASM_LIB_DECL
+int yasm_expr__traverse_leaves_in_const
+ (const yasm_expr *e, /*@null@*/ void *d,
+ int (*func) (/*@null@*/ const yasm_expr__item *ei, /*@null@*/ void *d));
+
+/** Traverse over expression tree in order.
+ * Calls func for each leaf (non-operation).
+ * \param e expression
+ * \param d data passed to each call to func
+ * \param func callback function
+ * \return Stops early (and returns 1) if func returns 1.
+ * Otherwise returns 0.
+ */
+YASM_LIB_DECL
+int yasm_expr__traverse_leaves_in
+ (yasm_expr *e, /*@null@*/ void *d,
+ int (*func) (/*@null@*/ yasm_expr__item *ei, /*@null@*/ void *d));
+
+/** Reorder terms of e into canonical order. Only reorders if reordering
+ * doesn't change meaning of expression. (eg, doesn't reorder SUB).
+ * Canonical order: REG, INT, FLOAT, SYM, EXPR.
+ * Multiple terms of a single type are kept in the same order as in
+ * the original expression.
+ * \param e expression
+ * \note Only performs reordering on *one* level (no recursion).
+ */
+YASM_LIB_DECL
+void yasm_expr__order_terms(yasm_expr *e);
+
+/** Copy entire expression EXCEPT for index "except" at *top level only*.
+ * \param e expression
+ * \param except term index not to copy; -1 to copy all terms
+ * \return Newly allocated copy of expression.
+ */
+YASM_LIB_DECL
+yasm_expr *yasm_expr__copy_except(const yasm_expr *e, int except);
+
+/** Test if expression contains an item. Searches recursively into
+ * subexpressions.
+ * \param e expression
+ * \param t type of item to look for
+ * \return Nonzero if expression contains an item of type t, zero if not.
+ */
+YASM_LIB_DECL
+int yasm_expr__contains(const yasm_expr *e, yasm_expr__type t);
+
+/** Transform symrec-symrec terms in expression into #YASM_EXPR_SUBST items.
+ * Calls the callback function for each symrec-symrec term.
+ * \param ep expression (pointer to)
+ * \param cbd callback data passed to callback function
+ * \param callback callback function: given subst index for bytecode
+ * pair, bytecode pair (bc2-bc1), and cbd (callback data)
+ * \return Number of transformations made.
+ */
+YASM_LIB_DECL
+int yasm_expr__bc_dist_subst(yasm_expr **ep, void *cbd,
+ void (*callback) (unsigned int subst,
+ yasm_bytecode *precbc,
+ yasm_bytecode *precbc2,
+ void *cbd));
+
+/** Substitute items into expr YASM_EXPR_SUBST items (by index). Items are
+ * copied, so caller is responsible for freeing array of items.
+ * \param e expression
+ * \param num_items number of items in items array
+ * \param items items array
+ * \return 1 on error (index out of range).
+ */
+YASM_LIB_DECL
+int yasm_expr__subst(yasm_expr *e, unsigned int num_items,
+ const yasm_expr__item *items);
+
+#endif
diff --git a/contrib/tools/yasm/libyasm/file.c b/contrib/tools/yasm/libyasm/file.c
index c4adde0a3a..fc7dab6c17 100644
--- a/contrib/tools/yasm/libyasm/file.c
+++ b/contrib/tools/yasm/libyasm/file.c
@@ -1,672 +1,672 @@
-/*
- * File helper functions.
- *
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-/* Need either unistd.h or direct.h to prototype getcwd() and mkdir() */
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-#ifdef HAVE_DIRECT_H
-#include <direct.h>
-#endif
-
-#ifdef _WIN32
-#include <io.h>
-#endif
-
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-
-#include <ctype.h>
-#include <errno.h>
-
-#include "errwarn.h"
-#include "file.h"
-
-#define BSIZE 8192 /* Fill block size */
-
-
-void
-yasm_scanner_initialize(yasm_scanner *s)
-{
- s->bot = NULL;
- s->tok = NULL;
- s->ptr = NULL;
- s->cur = NULL;
- s->lim = NULL;
- s->top = NULL;
- s->eof = NULL;
-}
-
-void
-yasm_scanner_delete(yasm_scanner *s)
-{
- if (s->bot) {
- yasm_xfree(s->bot);
- s->bot = NULL;
- }
-}
-
-int
-yasm_fill_helper(yasm_scanner *s, unsigned char **cursor,
- size_t (*input_func) (void *d, unsigned char *buf,
- size_t max),
- void *input_func_data)
-{
- size_t cnt;
- int first = 0;
-
- if (s->eof)
- return 0;
-
- cnt = s->tok - s->bot;
- if (cnt > 0) {
- memmove(s->bot, s->tok, (size_t)(s->lim - s->tok));
- s->tok = s->bot;
- s->ptr -= cnt;
- *cursor -= cnt;
- s->lim -= cnt;
- }
- if (!s->bot)
- first = 1;
- if ((s->top - s->lim) < BSIZE) {
- unsigned char *buf = yasm_xmalloc((size_t)(s->lim - s->bot) + BSIZE);
- memcpy(buf, s->tok, (size_t)(s->lim - s->tok));
- s->tok = buf;
- s->ptr = &buf[s->ptr - s->bot];
- *cursor = &buf[*cursor - s->bot];
- s->lim = &buf[s->lim - s->bot];
- s->top = &s->lim[BSIZE];
- if (s->bot)
- yasm_xfree(s->bot);
- s->bot = buf;
- }
- if ((cnt = input_func(input_func_data, s->lim, BSIZE)) == 0) {
- s->eof = &s->lim[cnt];
- *s->eof++ = '\n';
- }
- s->lim += cnt;
- return first;
-}
-
-void
-yasm_unescape_cstring(unsigned char *str, size_t *len)
-{
- unsigned char *s = str;
- unsigned char *o = str;
- unsigned char t[4];
-
- while ((size_t)(s-str)<*len) {
- if (*s == '\\' && (size_t)(&s[1]-str)<*len) {
- s++;
- switch (*s) {
- case 'b': *o = '\b'; s++; break;
- case 'f': *o = '\f'; s++; break;
- case 'n': *o = '\n'; s++; break;
- case 'r': *o = '\r'; s++; break;
- case 't': *o = '\t'; s++; break;
- case 'x':
- /* hex escape; grab last two digits */
- s++;
- while ((size_t)(&s[2]-str)<*len && isxdigit(s[0])
- && isxdigit(s[1]) && isxdigit(s[2]))
- s++;
- if ((size_t)(s-str)<*len && isxdigit(*s)) {
- t[0] = *s++;
- t[1] = '\0';
- t[2] = '\0';
- if ((size_t)(s-str)<*len && isxdigit(*s))
- t[1] = *s++;
- *o = (unsigned char)strtoul((char *)t, NULL, 16);
- } else
- *o = '\0';
- break;
- default:
- if (isdigit(*s)) {
- int warn = 0;
- /* octal escape */
- if (*s > '7')
- warn = 1;
- *o = *s++ - '0';
- if ((size_t)(s-str)<*len && isdigit(*s)) {
- if (*s > '7')
- warn = 1;
- *o <<= 3;
- *o += *s++ - '0';
- if ((size_t)(s-str)<*len && isdigit(*s)) {
- if (*s > '7')
- warn = 1;
- *o <<= 3;
- *o += *s++ - '0';
- }
- }
- if (warn)
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("octal value out of range"));
- } else
- *o = *s++;
- break;
- }
- o++;
- } else
- *o++ = *s++;
- }
- *len = o-str;
-}
-
-size_t
-yasm__splitpath_unix(const char *path, /*@out@*/ const char **tail)
-{
- const char *s;
- s = strrchr(path, '/');
- if (!s) {
- /* No head */
- *tail = path;
- return 0;
- }
- *tail = s+1;
- /* Strip trailing ./ on path */
- while ((s-1)>=path && *(s-1) == '.' && *s == '/'
- && !((s-2)>=path && *(s-2) == '.'))
- s -= 2;
- /* Strip trailing slashes on path (except leading) */
- while (s>path && *s == '/')
- s--;
- /* Return length of head */
- return s-path+1;
-}
-
-size_t
-yasm__splitpath_win(const char *path, /*@out@*/ const char **tail)
-{
- const char *basepath = path;
- const char *s;
-
- /* split off drive letter first, if any */
- if (isalpha(path[0]) && path[1] == ':')
- basepath += 2;
-
- s = basepath;
- while (*s != '\0')
- s++;
- while (s >= basepath && *s != '\\' && *s != '/')
- s--;
- if (s < basepath) {
- *tail = basepath;
- if (path == basepath)
- return 0; /* No head */
- else
- return 2; /* Drive letter is head */
- }
- *tail = s+1;
- /* Strip trailing .\ or ./ on path */
- while ((s-1)>=basepath && *(s-1) == '.' && (*s == '/' || *s == '\\')
- && !((s-2)>=basepath && *(s-2) == '.'))
- s -= 2;
- /* Strip trailing slashes on path (except leading) */
- while (s>basepath && (*s == '/' || *s == '\\'))
- s--;
- /* Return length of head */
- return s-path+1;
-}
-
-char *
-yasm__getcwd(void)
-{
- char *buf;
- size_t size;
-
- size = 1024;
- buf = yasm_xmalloc(size);
-
- if (getenv("YASM_TEST_SUITE")) {
- strcpy(buf, "./");
- return buf;
- }
-
- while (getcwd(buf, size-1) == NULL) {
- if (errno != ERANGE) {
- yasm__fatal(N_("could not determine current working directory"));
- yasm_xfree(buf);
- return NULL;
- }
- size *= 2;
- buf = yasm_xrealloc(buf, size);
- }
-
- /* append a '/' if not already present */
- size = strlen(buf);
- if (buf[size-1] != '\\' && buf[size-1] != '/') {
- buf[size] = '/';
- buf[size+1] = '\0';
- }
- return buf;
-}
-
-char *
-yasm__abspath(const char *path)
-{
- char *curdir, *abspath;
-
- curdir = yasm__getcwd();
- abspath = yasm__combpath(curdir, path);
- yasm_xfree(curdir);
-
- return abspath;
-}
-
-char *
-yasm__combpath_unix(const char *from, const char *to)
-{
- const char *tail;
- size_t pathlen, i, j;
- char *out;
-
- if (to[0] == '/') {
- /* absolute "to" */
- out = yasm_xmalloc(strlen(to)+1);
- /* Combine any double slashes when copying */
- for (j=0; *to; to++) {
- if (*to == '/' && *(to+1) == '/')
- continue;
- out[j++] = *to;
- }
- out[j++] = '\0';
- return out;
- }
-
- /* Get path component; note this strips trailing slash */
- pathlen = yasm__splitpath_unix(from, &tail);
-
- out = yasm_xmalloc(pathlen+strlen(to)+2); /* worst case maximum len */
-
- /* Combine any double slashes when copying */
- for (i=0, j=0; i<pathlen; i++) {
- if (i<pathlen-1 && from[i] == '/' && from[i+1] == '/')
- continue;
- out[j++] = from[i];
- }
- pathlen = j;
-
- /* Add trailing slash back in */
- if (pathlen > 0 && out[pathlen-1] != '/')
- out[pathlen++] = '/';
-
- /* Now scan from left to right through "to", stripping off "." and "..";
- * if we see "..", back up one directory in out unless last directory in
- * out is also "..".
- *
- * Note this does NOT back through ..'s in the "from" path; this is just
- * as well as that could skip symlinks (e.g. "foo/bar/.." might not be
- * the same as "foo").
- */
- for (;;) {
- if (to[0] == '.' && to[1] == '/') {
- to += 2; /* current directory */
- while (*to == '/')
- to++; /* strip off any additional slashes */
- } else if (pathlen == 0)
- break; /* no more "from" path left, we're done */
- else if (to[0] == '.' && to[1] == '.' && to[2] == '/') {
- if (pathlen >= 3 && out[pathlen-1] == '/' && out[pathlen-2] == '.'
- && out[pathlen-3] == '.') {
- /* can't ".." against a "..", so we're done. */
- break;
- }
-
- to += 3; /* throw away "../" */
- while (*to == '/')
- to++; /* strip off any additional slashes */
-
- /* and back out last directory in "out" if not already at root */
- if (pathlen > 1) {
- pathlen--; /* strip off trailing '/' */
- while (pathlen > 0 && out[pathlen-1] != '/')
- pathlen--;
- }
- } else
- break;
- }
-
- /* Copy "to" to tail of output, and we're done */
- /* Combine any double slashes when copying */
- for (j=pathlen; *to; to++) {
- if (*to == '/' && *(to+1) == '/')
- continue;
- out[j++] = *to;
- }
- out[j++] = '\0';
-
- return out;
-}
-
-char *
-yasm__combpath_win(const char *from, const char *to)
-{
- const char *tail;
- size_t pathlen, i, j;
- char *out;
-
- if ((isalpha(to[0]) && to[1] == ':') || (to[0] == '/' || to[0] == '\\')) {
- /* absolute or drive letter "to" */
- out = yasm_xmalloc(strlen(to)+1);
- /* Combine any double slashes when copying */
- for (j=0; *to; to++) {
- if ((*to == '/' || *to == '\\')
- && (*(to+1) == '/' || *(to+1) == '\\'))
- continue;
- if (*to == '/')
- out[j++] = '\\';
- else
- out[j++] = *to;
- }
- out[j++] = '\0';
- return out;
- }
-
- /* Get path component; note this strips trailing slash */
- pathlen = yasm__splitpath_win(from, &tail);
-
- out = yasm_xmalloc(pathlen+strlen(to)+2); /* worst case maximum len */
-
- /* Combine any double slashes when copying */
- for (i=0, j=0; i<pathlen; i++) {
- if (i<pathlen-1 && (from[i] == '/' || from[i] == '\\')
- && (from[i+1] == '/' || from[i+1] == '\\'))
- continue;
- if (from[i] == '/')
- out[j++] = '\\';
- else
- out[j++] = from[i];
- }
- pathlen = j;
-
- /* Add trailing slash back in, unless it's only a raw drive letter */
- if (pathlen > 0 && out[pathlen-1] != '\\'
- && !(pathlen == 2 && isalpha(out[0]) && out[1] == ':'))
- out[pathlen++] = '\\';
-
- /* Now scan from left to right through "to", stripping off "." and "..";
- * if we see "..", back up one directory in out unless last directory in
- * out is also "..".
- *
- * Note this does NOT back through ..'s in the "from" path; this is just
- * as well as that could skip symlinks (e.g. "foo/bar/.." might not be
- * the same as "foo").
- */
- for (;;) {
- if (to[0] == '.' && (to[1] == '/' || to[1] == '\\')) {
- to += 2; /* current directory */
- while (*to == '/' || *to == '\\')
- to++; /* strip off any additional slashes */
- } else if (pathlen == 0
- || (pathlen == 2 && isalpha(out[0]) && out[1] == ':'))
- break; /* no more "from" path left, we're done */
- else if (to[0] == '.' && to[1] == '.'
- && (to[2] == '/' || to[2] == '\\')) {
- if (pathlen >= 3 && out[pathlen-1] == '\\'
- && out[pathlen-2] == '.' && out[pathlen-3] == '.') {
- /* can't ".." against a "..", so we're done. */
- break;
- }
-
- to += 3; /* throw away "../" (or "..\") */
- while (*to == '/' || *to == '\\')
- to++; /* strip off any additional slashes */
-
- /* and back out last directory in "out" if not already at root */
- if (pathlen > 1) {
- pathlen--; /* strip off trailing '/' */
- while (pathlen > 0 && out[pathlen-1] != '\\')
- pathlen--;
- }
- } else
- break;
- }
-
- /* Copy "to" to tail of output, and we're done */
- /* Combine any double slashes when copying */
- for (j=pathlen; *to; to++) {
- if ((*to == '/' || *to == '\\') && (*(to+1) == '/' || *(to+1) == '\\'))
- continue;
- if (*to == '/')
- out[j++] = '\\';
- else
- out[j++] = *to;
- }
- out[j++] = '\0';
-
- return out;
-}
-
-size_t
-yasm__createpath_common(const char *path, int win)
-{
- const char *pp = path, *pe;
- char *ts, *tp;
- size_t len, lth;
-
- lth = len = strlen(path);
- ts = tp = (char *) malloc(len + 1);
- pe = pp + len;
- while (pe > pp) {
- if ((win && *pe == '\\') || *pe == '/')
- break;
- --pe;
- --lth;
- }
-
- while (pp <= pe) {
- if (pp == pe || (win && *pp == '\\') || *pp == '/') {
-#ifdef _WIN32
- struct _finddata_t fi;
- intptr_t h;
-#elif defined(HAVE_SYS_STAT_H)
- struct stat fi;
-#endif
- *tp = '\0';
-
-#ifdef _WIN32
- h = _findfirst(ts, &fi);
- if (h != -1) {
- if (fi.attrib != _A_SUBDIR) {
- _findclose(h);
- break;
- }
- } else if (errno == ENOENT) {
- if (_mkdir(ts) == -1) {
- _findclose(h);
- lth = -1;
- break;
- }
- }
- _findclose(h);
+/*
+ * File helper functions.
+ *
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+/* Need either unistd.h or direct.h to prototype getcwd() and mkdir() */
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#ifdef HAVE_DIRECT_H
+#include <direct.h>
+#endif
+
+#ifdef _WIN32
+#include <io.h>
+#endif
+
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+
+#include <ctype.h>
+#include <errno.h>
+
+#include "errwarn.h"
+#include "file.h"
+
+#define BSIZE 8192 /* Fill block size */
+
+
+void
+yasm_scanner_initialize(yasm_scanner *s)
+{
+ s->bot = NULL;
+ s->tok = NULL;
+ s->ptr = NULL;
+ s->cur = NULL;
+ s->lim = NULL;
+ s->top = NULL;
+ s->eof = NULL;
+}
+
+void
+yasm_scanner_delete(yasm_scanner *s)
+{
+ if (s->bot) {
+ yasm_xfree(s->bot);
+ s->bot = NULL;
+ }
+}
+
+int
+yasm_fill_helper(yasm_scanner *s, unsigned char **cursor,
+ size_t (*input_func) (void *d, unsigned char *buf,
+ size_t max),
+ void *input_func_data)
+{
+ size_t cnt;
+ int first = 0;
+
+ if (s->eof)
+ return 0;
+
+ cnt = s->tok - s->bot;
+ if (cnt > 0) {
+ memmove(s->bot, s->tok, (size_t)(s->lim - s->tok));
+ s->tok = s->bot;
+ s->ptr -= cnt;
+ *cursor -= cnt;
+ s->lim -= cnt;
+ }
+ if (!s->bot)
+ first = 1;
+ if ((s->top - s->lim) < BSIZE) {
+ unsigned char *buf = yasm_xmalloc((size_t)(s->lim - s->bot) + BSIZE);
+ memcpy(buf, s->tok, (size_t)(s->lim - s->tok));
+ s->tok = buf;
+ s->ptr = &buf[s->ptr - s->bot];
+ *cursor = &buf[*cursor - s->bot];
+ s->lim = &buf[s->lim - s->bot];
+ s->top = &s->lim[BSIZE];
+ if (s->bot)
+ yasm_xfree(s->bot);
+ s->bot = buf;
+ }
+ if ((cnt = input_func(input_func_data, s->lim, BSIZE)) == 0) {
+ s->eof = &s->lim[cnt];
+ *s->eof++ = '\n';
+ }
+ s->lim += cnt;
+ return first;
+}
+
+void
+yasm_unescape_cstring(unsigned char *str, size_t *len)
+{
+ unsigned char *s = str;
+ unsigned char *o = str;
+ unsigned char t[4];
+
+ while ((size_t)(s-str)<*len) {
+ if (*s == '\\' && (size_t)(&s[1]-str)<*len) {
+ s++;
+ switch (*s) {
+ case 'b': *o = '\b'; s++; break;
+ case 'f': *o = '\f'; s++; break;
+ case 'n': *o = '\n'; s++; break;
+ case 'r': *o = '\r'; s++; break;
+ case 't': *o = '\t'; s++; break;
+ case 'x':
+ /* hex escape; grab last two digits */
+ s++;
+ while ((size_t)(&s[2]-str)<*len && isxdigit(s[0])
+ && isxdigit(s[1]) && isxdigit(s[2]))
+ s++;
+ if ((size_t)(s-str)<*len && isxdigit(*s)) {
+ t[0] = *s++;
+ t[1] = '\0';
+ t[2] = '\0';
+ if ((size_t)(s-str)<*len && isxdigit(*s))
+ t[1] = *s++;
+ *o = (unsigned char)strtoul((char *)t, NULL, 16);
+ } else
+ *o = '\0';
+ break;
+ default:
+ if (isdigit(*s)) {
+ int warn = 0;
+ /* octal escape */
+ if (*s > '7')
+ warn = 1;
+ *o = *s++ - '0';
+ if ((size_t)(s-str)<*len && isdigit(*s)) {
+ if (*s > '7')
+ warn = 1;
+ *o <<= 3;
+ *o += *s++ - '0';
+ if ((size_t)(s-str)<*len && isdigit(*s)) {
+ if (*s > '7')
+ warn = 1;
+ *o <<= 3;
+ *o += *s++ - '0';
+ }
+ }
+ if (warn)
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("octal value out of range"));
+ } else
+ *o = *s++;
+ break;
+ }
+ o++;
+ } else
+ *o++ = *s++;
+ }
+ *len = o-str;
+}
+
+size_t
+yasm__splitpath_unix(const char *path, /*@out@*/ const char **tail)
+{
+ const char *s;
+ s = strrchr(path, '/');
+ if (!s) {
+ /* No head */
+ *tail = path;
+ return 0;
+ }
+ *tail = s+1;
+ /* Strip trailing ./ on path */
+ while ((s-1)>=path && *(s-1) == '.' && *s == '/'
+ && !((s-2)>=path && *(s-2) == '.'))
+ s -= 2;
+ /* Strip trailing slashes on path (except leading) */
+ while (s>path && *s == '/')
+ s--;
+ /* Return length of head */
+ return s-path+1;
+}
+
+size_t
+yasm__splitpath_win(const char *path, /*@out@*/ const char **tail)
+{
+ const char *basepath = path;
+ const char *s;
+
+ /* split off drive letter first, if any */
+ if (isalpha(path[0]) && path[1] == ':')
+ basepath += 2;
+
+ s = basepath;
+ while (*s != '\0')
+ s++;
+ while (s >= basepath && *s != '\\' && *s != '/')
+ s--;
+ if (s < basepath) {
+ *tail = basepath;
+ if (path == basepath)
+ return 0; /* No head */
+ else
+ return 2; /* Drive letter is head */
+ }
+ *tail = s+1;
+ /* Strip trailing .\ or ./ on path */
+ while ((s-1)>=basepath && *(s-1) == '.' && (*s == '/' || *s == '\\')
+ && !((s-2)>=basepath && *(s-2) == '.'))
+ s -= 2;
+ /* Strip trailing slashes on path (except leading) */
+ while (s>basepath && (*s == '/' || *s == '\\'))
+ s--;
+ /* Return length of head */
+ return s-path+1;
+}
+
+char *
+yasm__getcwd(void)
+{
+ char *buf;
+ size_t size;
+
+ size = 1024;
+ buf = yasm_xmalloc(size);
+
+ if (getenv("YASM_TEST_SUITE")) {
+ strcpy(buf, "./");
+ return buf;
+ }
+
+ while (getcwd(buf, size-1) == NULL) {
+ if (errno != ERANGE) {
+ yasm__fatal(N_("could not determine current working directory"));
+ yasm_xfree(buf);
+ return NULL;
+ }
+ size *= 2;
+ buf = yasm_xrealloc(buf, size);
+ }
+
+ /* append a '/' if not already present */
+ size = strlen(buf);
+ if (buf[size-1] != '\\' && buf[size-1] != '/') {
+ buf[size] = '/';
+ buf[size+1] = '\0';
+ }
+ return buf;
+}
+
+char *
+yasm__abspath(const char *path)
+{
+ char *curdir, *abspath;
+
+ curdir = yasm__getcwd();
+ abspath = yasm__combpath(curdir, path);
+ yasm_xfree(curdir);
+
+ return abspath;
+}
+
+char *
+yasm__combpath_unix(const char *from, const char *to)
+{
+ const char *tail;
+ size_t pathlen, i, j;
+ char *out;
+
+ if (to[0] == '/') {
+ /* absolute "to" */
+ out = yasm_xmalloc(strlen(to)+1);
+ /* Combine any double slashes when copying */
+ for (j=0; *to; to++) {
+ if (*to == '/' && *(to+1) == '/')
+ continue;
+ out[j++] = *to;
+ }
+ out[j++] = '\0';
+ return out;
+ }
+
+ /* Get path component; note this strips trailing slash */
+ pathlen = yasm__splitpath_unix(from, &tail);
+
+ out = yasm_xmalloc(pathlen+strlen(to)+2); /* worst case maximum len */
+
+ /* Combine any double slashes when copying */
+ for (i=0, j=0; i<pathlen; i++) {
+ if (i<pathlen-1 && from[i] == '/' && from[i+1] == '/')
+ continue;
+ out[j++] = from[i];
+ }
+ pathlen = j;
+
+ /* Add trailing slash back in */
+ if (pathlen > 0 && out[pathlen-1] != '/')
+ out[pathlen++] = '/';
+
+ /* Now scan from left to right through "to", stripping off "." and "..";
+ * if we see "..", back up one directory in out unless last directory in
+ * out is also "..".
+ *
+ * Note this does NOT back through ..'s in the "from" path; this is just
+ * as well as that could skip symlinks (e.g. "foo/bar/.." might not be
+ * the same as "foo").
+ */
+ for (;;) {
+ if (to[0] == '.' && to[1] == '/') {
+ to += 2; /* current directory */
+ while (*to == '/')
+ to++; /* strip off any additional slashes */
+ } else if (pathlen == 0)
+ break; /* no more "from" path left, we're done */
+ else if (to[0] == '.' && to[1] == '.' && to[2] == '/') {
+ if (pathlen >= 3 && out[pathlen-1] == '/' && out[pathlen-2] == '.'
+ && out[pathlen-3] == '.') {
+ /* can't ".." against a "..", so we're done. */
+ break;
+ }
+
+ to += 3; /* throw away "../" */
+ while (*to == '/')
+ to++; /* strip off any additional slashes */
+
+ /* and back out last directory in "out" if not already at root */
+ if (pathlen > 1) {
+ pathlen--; /* strip off trailing '/' */
+ while (pathlen > 0 && out[pathlen-1] != '/')
+ pathlen--;
+ }
+ } else
+ break;
+ }
+
+ /* Copy "to" to tail of output, and we're done */
+ /* Combine any double slashes when copying */
+ for (j=pathlen; *to; to++) {
+ if (*to == '/' && *(to+1) == '/')
+ continue;
+ out[j++] = *to;
+ }
+ out[j++] = '\0';
+
+ return out;
+}
+
+char *
+yasm__combpath_win(const char *from, const char *to)
+{
+ const char *tail;
+ size_t pathlen, i, j;
+ char *out;
+
+ if ((isalpha(to[0]) && to[1] == ':') || (to[0] == '/' || to[0] == '\\')) {
+ /* absolute or drive letter "to" */
+ out = yasm_xmalloc(strlen(to)+1);
+ /* Combine any double slashes when copying */
+ for (j=0; *to; to++) {
+ if ((*to == '/' || *to == '\\')
+ && (*(to+1) == '/' || *(to+1) == '\\'))
+ continue;
+ if (*to == '/')
+ out[j++] = '\\';
+ else
+ out[j++] = *to;
+ }
+ out[j++] = '\0';
+ return out;
+ }
+
+ /* Get path component; note this strips trailing slash */
+ pathlen = yasm__splitpath_win(from, &tail);
+
+ out = yasm_xmalloc(pathlen+strlen(to)+2); /* worst case maximum len */
+
+ /* Combine any double slashes when copying */
+ for (i=0, j=0; i<pathlen; i++) {
+ if (i<pathlen-1 && (from[i] == '/' || from[i] == '\\')
+ && (from[i+1] == '/' || from[i+1] == '\\'))
+ continue;
+ if (from[i] == '/')
+ out[j++] = '\\';
+ else
+ out[j++] = from[i];
+ }
+ pathlen = j;
+
+ /* Add trailing slash back in, unless it's only a raw drive letter */
+ if (pathlen > 0 && out[pathlen-1] != '\\'
+ && !(pathlen == 2 && isalpha(out[0]) && out[1] == ':'))
+ out[pathlen++] = '\\';
+
+ /* Now scan from left to right through "to", stripping off "." and "..";
+ * if we see "..", back up one directory in out unless last directory in
+ * out is also "..".
+ *
+ * Note this does NOT back through ..'s in the "from" path; this is just
+ * as well as that could skip symlinks (e.g. "foo/bar/.." might not be
+ * the same as "foo").
+ */
+ for (;;) {
+ if (to[0] == '.' && (to[1] == '/' || to[1] == '\\')) {
+ to += 2; /* current directory */
+ while (*to == '/' || *to == '\\')
+ to++; /* strip off any additional slashes */
+ } else if (pathlen == 0
+ || (pathlen == 2 && isalpha(out[0]) && out[1] == ':'))
+ break; /* no more "from" path left, we're done */
+ else if (to[0] == '.' && to[1] == '.'
+ && (to[2] == '/' || to[2] == '\\')) {
+ if (pathlen >= 3 && out[pathlen-1] == '\\'
+ && out[pathlen-2] == '.' && out[pathlen-3] == '.') {
+ /* can't ".." against a "..", so we're done. */
+ break;
+ }
+
+ to += 3; /* throw away "../" (or "..\") */
+ while (*to == '/' || *to == '\\')
+ to++; /* strip off any additional slashes */
+
+ /* and back out last directory in "out" if not already at root */
+ if (pathlen > 1) {
+ pathlen--; /* strip off trailing '/' */
+ while (pathlen > 0 && out[pathlen-1] != '\\')
+ pathlen--;
+ }
+ } else
+ break;
+ }
+
+ /* Copy "to" to tail of output, and we're done */
+ /* Combine any double slashes when copying */
+ for (j=pathlen; *to; to++) {
+ if ((*to == '/' || *to == '\\') && (*(to+1) == '/' || *(to+1) == '\\'))
+ continue;
+ if (*to == '/')
+ out[j++] = '\\';
+ else
+ out[j++] = *to;
+ }
+ out[j++] = '\0';
+
+ return out;
+}
+
+size_t
+yasm__createpath_common(const char *path, int win)
+{
+ const char *pp = path, *pe;
+ char *ts, *tp;
+ size_t len, lth;
+
+ lth = len = strlen(path);
+ ts = tp = (char *) malloc(len + 1);
+ pe = pp + len;
+ while (pe > pp) {
+ if ((win && *pe == '\\') || *pe == '/')
+ break;
+ --pe;
+ --lth;
+ }
+
+ while (pp <= pe) {
+ if (pp == pe || (win && *pp == '\\') || *pp == '/') {
+#ifdef _WIN32
+ struct _finddata_t fi;
+ intptr_t h;
#elif defined(HAVE_SYS_STAT_H)
- if (stat(ts, &fi) != -1) {
- if (!S_ISDIR(fi.st_mode))
- break;
- } else if (errno == ENOENT) {
- if (mkdir(ts, 0755) == -1) {
- lth = 0;
- break;
- }
- }
-#else
- break;
-#endif
- }
- *tp++ = *pp++;
- }
- free(ts);
- return lth;
-}
-
-typedef struct incpath {
- STAILQ_ENTRY(incpath) link;
- /*@owned@*/ char *path;
-} incpath;
-
-STAILQ_HEAD(incpath_head, incpath) incpaths = STAILQ_HEAD_INITIALIZER(incpaths);
-
-FILE *
-yasm_fopen_include(const char *iname, const char *from, const char *mode,
- char **oname)
-{
- FILE *f;
- char *combine;
- incpath *np;
-
- /* Try directly relative to from first, then each of the include paths */
- if (from) {
- combine = yasm__combpath(from, iname);
- f = fopen(combine, mode);
- if (f) {
- if (oname)
- *oname = combine;
- else
- yasm_xfree(combine);
- return f;
- }
- yasm_xfree(combine);
- }
-
- STAILQ_FOREACH(np, &incpaths, link) {
- combine = yasm__combpath(np->path, iname);
- f = fopen(combine, mode);
- if (f) {
- if (oname)
- *oname = combine;
- else
- yasm_xfree(combine);
- return f;
- }
- yasm_xfree(combine);
- }
-
- if (oname)
- *oname = NULL;
- return NULL;
-}
-
-void
-yasm_delete_include_paths(void)
-{
- incpath *n1, *n2;
-
- n1 = STAILQ_FIRST(&incpaths);
- while (n1) {
- n2 = STAILQ_NEXT(n1, link);
- yasm_xfree(n1->path);
- yasm_xfree(n1);
- n1 = n2;
- }
- STAILQ_INIT(&incpaths);
-}
-
-const char *
-yasm_get_include_dir(void **iter)
-{
- incpath *p = (incpath *)*iter;
-
- if (!p)
- p = STAILQ_FIRST(&incpaths);
- else
- p = STAILQ_NEXT(p, link);
-
- *iter = p;
- if (p)
- return p->path;
- else
- return NULL;
-}
-
-void
-yasm_add_include_path(const char *path)
-{
- incpath *np = yasm_xmalloc(sizeof(incpath));
- size_t len = strlen(path);
-
- np->path = yasm_xmalloc(len+2);
- memcpy(np->path, path, len+1);
- /* Add trailing slash if it is missing */
- if (path[len-1] != '\\' && path[len-1] != '/') {
- np->path[len] = '/';
- np->path[len+1] = '\0';
- }
-
- STAILQ_INSERT_TAIL(&incpaths, np, link);
-}
-
-size_t
-yasm_fwrite_16_l(unsigned short val, FILE *f)
-{
- if (fputc(val & 0xFF, f) == EOF)
- return 0;
- if (fputc((val >> 8) & 0xFF, f) == EOF)
- return 0;
- return 1;
-}
-
-size_t
-yasm_fwrite_32_l(unsigned long val, FILE *f)
-{
- if (fputc((int)(val & 0xFF), f) == EOF)
- return 0;
- if (fputc((int)((val >> 8) & 0xFF), f) == EOF)
- return 0;
- if (fputc((int)((val >> 16) & 0xFF), f) == EOF)
- return 0;
- if (fputc((int)((val >> 24) & 0xFF), f) == EOF)
- return 0;
- return 1;
-}
-
-size_t
-yasm_fwrite_16_b(unsigned short val, FILE *f)
-{
- if (fputc((val >> 8) & 0xFF, f) == EOF)
- return 0;
- if (fputc(val & 0xFF, f) == EOF)
- return 0;
- return 1;
-}
-
-size_t
-yasm_fwrite_32_b(unsigned long val, FILE *f)
-{
- if (fputc((int)((val >> 24) & 0xFF), f) == EOF)
- return 0;
- if (fputc((int)((val >> 16) & 0xFF), f) == EOF)
- return 0;
- if (fputc((int)((val >> 8) & 0xFF), f) == EOF)
- return 0;
- if (fputc((int)(val & 0xFF), f) == EOF)
- return 0;
- return 1;
-}
+ struct stat fi;
+#endif
+ *tp = '\0';
+
+#ifdef _WIN32
+ h = _findfirst(ts, &fi);
+ if (h != -1) {
+ if (fi.attrib != _A_SUBDIR) {
+ _findclose(h);
+ break;
+ }
+ } else if (errno == ENOENT) {
+ if (_mkdir(ts) == -1) {
+ _findclose(h);
+ lth = -1;
+ break;
+ }
+ }
+ _findclose(h);
+#elif defined(HAVE_SYS_STAT_H)
+ if (stat(ts, &fi) != -1) {
+ if (!S_ISDIR(fi.st_mode))
+ break;
+ } else if (errno == ENOENT) {
+ if (mkdir(ts, 0755) == -1) {
+ lth = 0;
+ break;
+ }
+ }
+#else
+ break;
+#endif
+ }
+ *tp++ = *pp++;
+ }
+ free(ts);
+ return lth;
+}
+
+typedef struct incpath {
+ STAILQ_ENTRY(incpath) link;
+ /*@owned@*/ char *path;
+} incpath;
+
+STAILQ_HEAD(incpath_head, incpath) incpaths = STAILQ_HEAD_INITIALIZER(incpaths);
+
+FILE *
+yasm_fopen_include(const char *iname, const char *from, const char *mode,
+ char **oname)
+{
+ FILE *f;
+ char *combine;
+ incpath *np;
+
+ /* Try directly relative to from first, then each of the include paths */
+ if (from) {
+ combine = yasm__combpath(from, iname);
+ f = fopen(combine, mode);
+ if (f) {
+ if (oname)
+ *oname = combine;
+ else
+ yasm_xfree(combine);
+ return f;
+ }
+ yasm_xfree(combine);
+ }
+
+ STAILQ_FOREACH(np, &incpaths, link) {
+ combine = yasm__combpath(np->path, iname);
+ f = fopen(combine, mode);
+ if (f) {
+ if (oname)
+ *oname = combine;
+ else
+ yasm_xfree(combine);
+ return f;
+ }
+ yasm_xfree(combine);
+ }
+
+ if (oname)
+ *oname = NULL;
+ return NULL;
+}
+
+void
+yasm_delete_include_paths(void)
+{
+ incpath *n1, *n2;
+
+ n1 = STAILQ_FIRST(&incpaths);
+ while (n1) {
+ n2 = STAILQ_NEXT(n1, link);
+ yasm_xfree(n1->path);
+ yasm_xfree(n1);
+ n1 = n2;
+ }
+ STAILQ_INIT(&incpaths);
+}
+
+const char *
+yasm_get_include_dir(void **iter)
+{
+ incpath *p = (incpath *)*iter;
+
+ if (!p)
+ p = STAILQ_FIRST(&incpaths);
+ else
+ p = STAILQ_NEXT(p, link);
+
+ *iter = p;
+ if (p)
+ return p->path;
+ else
+ return NULL;
+}
+
+void
+yasm_add_include_path(const char *path)
+{
+ incpath *np = yasm_xmalloc(sizeof(incpath));
+ size_t len = strlen(path);
+
+ np->path = yasm_xmalloc(len+2);
+ memcpy(np->path, path, len+1);
+ /* Add trailing slash if it is missing */
+ if (path[len-1] != '\\' && path[len-1] != '/') {
+ np->path[len] = '/';
+ np->path[len+1] = '\0';
+ }
+
+ STAILQ_INSERT_TAIL(&incpaths, np, link);
+}
+
+size_t
+yasm_fwrite_16_l(unsigned short val, FILE *f)
+{
+ if (fputc(val & 0xFF, f) == EOF)
+ return 0;
+ if (fputc((val >> 8) & 0xFF, f) == EOF)
+ return 0;
+ return 1;
+}
+
+size_t
+yasm_fwrite_32_l(unsigned long val, FILE *f)
+{
+ if (fputc((int)(val & 0xFF), f) == EOF)
+ return 0;
+ if (fputc((int)((val >> 8) & 0xFF), f) == EOF)
+ return 0;
+ if (fputc((int)((val >> 16) & 0xFF), f) == EOF)
+ return 0;
+ if (fputc((int)((val >> 24) & 0xFF), f) == EOF)
+ return 0;
+ return 1;
+}
+
+size_t
+yasm_fwrite_16_b(unsigned short val, FILE *f)
+{
+ if (fputc((val >> 8) & 0xFF, f) == EOF)
+ return 0;
+ if (fputc(val & 0xFF, f) == EOF)
+ return 0;
+ return 1;
+}
+
+size_t
+yasm_fwrite_32_b(unsigned long val, FILE *f)
+{
+ if (fputc((int)((val >> 24) & 0xFF), f) == EOF)
+ return 0;
+ if (fputc((int)((val >> 16) & 0xFF), f) == EOF)
+ return 0;
+ if (fputc((int)((val >> 8) & 0xFF), f) == EOF)
+ return 0;
+ if (fputc((int)(val & 0xFF), f) == EOF)
+ return 0;
+ return 1;
+}
diff --git a/contrib/tools/yasm/libyasm/file.h b/contrib/tools/yasm/libyasm/file.h
index 01bca80cdc..1e9b87b0d5 100644
--- a/contrib/tools/yasm/libyasm/file.h
+++ b/contrib/tools/yasm/libyasm/file.h
@@ -1,525 +1,525 @@
-/**
- * \file libyasm/file.h
- * \brief YASM file helpers.
- *
- * \license
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- * \endlicense
- */
-#ifndef YASM_FILE_H
-#define YASM_FILE_H
-
-#ifndef YASM_LIB_DECL
-#define YASM_LIB_DECL
-#endif
-
-/** Re2c scanner state. */
-typedef struct yasm_scanner {
- unsigned char *bot; /**< Bottom of scan buffer */
- unsigned char *tok; /**< Start of token */
- unsigned char *ptr; /**< Scan marker */
- unsigned char *cur; /**< Cursor (1 past end of token) */
- unsigned char *lim; /**< Limit of good data */
- unsigned char *top; /**< Top of scan buffer */
- unsigned char *eof; /**< End of file */
-} yasm_scanner;
-
-/** Initialize scanner state.
- * \param scanner Re2c scanner state
- */
-YASM_LIB_DECL
-void yasm_scanner_initialize(yasm_scanner *scanner);
-
-/** Frees any memory used by scanner state; does not free state itself.
- * \param scanner Re2c scanner state
- */
-YASM_LIB_DECL
-void yasm_scanner_delete(yasm_scanner *scanner);
-
-/** Fill a scanner state structure with data coming from an input function.
- * \param scanner Re2c scanner state
- * \param cursor Re2c scan cursor
- * \param input_func Input function to read data; takes buffer and maximum
- * number of bytes, returns number of bytes read.
- * \param input_func_data Data to pass as the first parameter to input_func
- * \return 1 if this was the first time this function was called on this
- * scanner state, 0 otherwise.
- */
-YASM_LIB_DECL
-int yasm_fill_helper
- (yasm_scanner *scanner, unsigned char **cursor,
- size_t (*input_func) (void *d, unsigned char *buf, size_t max),
- void *input_func_data);
-
-/** Unescape a string with C-style escapes. Handles b, f, n, r, t, and hex
- * and octal escapes. String is updated in-place.
- * Edge cases:
- * - hex escapes: reads as many hex digits as possible, takes last 2 as value.
- * - oct escapes: takes up to 3 digits 0-9 and scales appropriately, with
- * warning.
- * \param str C-style string (updated in place)
- * \param len length of string (updated with new length)
- */
-YASM_LIB_DECL
-void yasm_unescape_cstring(unsigned char *str, size_t *len);
-
-/** Split a UNIX pathname into head (directory) and tail (base filename)
- * portions.
- * \internal
- * \param path pathname
- * \param tail (returned) base filename
- * \return Length of head (directory).
- */
-YASM_LIB_DECL
-size_t yasm__splitpath_unix(const char *path, /*@out@*/ const char **tail);
-
-/** Split a Windows pathname into head (directory) and tail (base filename)
- * portions.
- * \internal
- * \param path pathname
- * \param tail (returned) base filename
- * \return Length of head (directory).
- */
-YASM_LIB_DECL
-size_t yasm__splitpath_win(const char *path, /*@out@*/ const char **tail);
-
-/** Split a pathname into head (directory) and tail (base filename) portions.
- * Unless otherwise defined, defaults to yasm__splitpath_unix().
- * \internal
- * \param path pathname
- * \param tail (returned) base filename
- * \return Length of head (directory).
- */
-#ifndef yasm__splitpath
-# if defined (_WIN32) || defined (WIN32) || defined (__MSDOS__) || \
- defined (__DJGPP__) || defined (__OS2__)
-# define yasm__splitpath(path, tail) yasm__splitpath_win(path, tail)
-# else
-# define yasm__splitpath(path, tail) yasm__splitpath_unix(path, tail)
-# endif
-#endif
-
-/** Get the current working directory.
- * \internal
- * \return Current working directory pathname (newly allocated).
- */
-YASM_LIB_DECL
-/*@only@*/ char *yasm__getcwd(void);
-
-/** Convert a relative or absolute pathname into an absolute pathname.
- * \internal
- * \param path pathname
- * \return Absolute version of path (newly allocated).
- */
-YASM_LIB_DECL
-/*@only@*/ char *yasm__abspath(const char *path);
-
-/** Build a UNIX pathname that is equivalent to accessing the "to" pathname
- * when you're in the directory containing "from". Result is relative if both
- * from and to are relative.
- * \internal
- * \param from from pathname
- * \param to to pathname
- * \return Combined path (newly allocated).
- */
-YASM_LIB_DECL
-char *yasm__combpath_unix(const char *from, const char *to);
-
-/** Build a Windows pathname that is equivalent to accessing the "to" pathname
- * when you're in the directory containing "from". Result is relative if both
- * from and to are relative.
- * \internal
- * \param from from pathname
- * \param to to pathname
- * \return Combined path (newly allocated).
- */
-YASM_LIB_DECL
-char *yasm__combpath_win(const char *from, const char *to);
-
-/** Build a pathname that is equivalent to accessing the "to" pathname
- * when you're in the directory containing "from". Result is relative if both
- * from and to are relative.
- * Unless otherwise defined, defaults to yasm__combpath_unix().
- * \internal
- * \param from from pathname
- * \param to to pathname
- * \return Combined path (newly allocated).
- */
-#ifndef yasm__combpath
-# if defined (_WIN32) || defined (WIN32) || defined (__MSDOS__) || \
- defined (__DJGPP__) || defined (__OS2__)
-# define yasm__combpath(from, to) yasm__combpath_win(from, to)
-# else
-# define yasm__combpath(from, to) yasm__combpath_unix(from, to)
-# endif
-#endif
-
-/** Recursively create tree of directories needed for pathname.
- * \internal
- * \param path pathname
- * \param win handle windows paths
- * \return Length of directory portion of pathname.
- */
-YASM_LIB_DECL
-size_t yasm__createpath_common(const char *path, int win);
-
-/** Recursively create tree of directories needed for pathname.
- * Unless otherwise defined, defaults to yasm__createpath_unix().
- * \internal
- * \param path pathname
- * \return Length of directory portion of pathname.
- */
-#ifndef yasm__createpath
-# if defined (_WIN32) || defined (WIN32) || defined (__MSDOS__) || \
- defined (__DJGPP__) || defined (__OS2__)
-# define yasm__createpath(path) yasm__createpath_common(path, 1)
-# else
-# define yasm__createpath(path) yasm__createpath_common(path, 0)
-# endif
-#endif
-
-/** Try to find and open an include file, searching through include paths.
- * First iname is looked for relative to the directory containing "from", then
- * it's looked for relative to each of the include paths.
- *
- * All pathnames may be either absolute or relative; from, oname, and
- * include paths, if relative, are relative from the current working directory.
- *
- * First match wins; the full pathname (newly allocated) to the opened file
- * is saved into oname, and the fopen'ed FILE * is returned. If not found,
- * NULL is returned.
- *
- * \param iname file to include
- * \param from file doing the including
- * \param mode fopen mode string
- * \param oname full pathname of included file (may be relative). NULL
- * may be passed if this is unwanted.
- * \return fopen'ed include file, or NULL if not found.
- */
-YASM_LIB_DECL
-/*@null@*/ FILE *yasm_fopen_include
- (const char *iname, const char *from, const char *mode,
- /*@null@*/ /*@out@*/ /*@only@*/ char **oname);
-
-/** Delete any stored include paths added by yasm_add_include_path().
- */
-YASM_LIB_DECL
-void yasm_delete_include_paths(void);
-
-/** Iterate through include paths.
-*/
-YASM_LIB_DECL
-const char * yasm_get_include_dir(void **iter);
-
-/** Add an include path for use by yasm_fopen_include().
- * If path is relative, it is treated by yasm_fopen_include() as relative to
- * the current working directory.
- *
- * \param path path to add
- */
-YASM_LIB_DECL
-void yasm_add_include_path(const char *path);
-
-/** Write an 8-bit value to a buffer, incrementing buffer pointer.
- * \note Only works properly if ptr is an (unsigned char *).
- * \param ptr buffer
- * \param val 8-bit value
- */
-#define YASM_WRITE_8(ptr, val) \
- *((ptr)++) = (unsigned char)((val) & 0xFF)
-
-/** Write a 16-bit value to a buffer in little endian, incrementing buffer
- * pointer.
- * \note Only works properly if ptr is an (unsigned char *).
- * \param ptr buffer
- * \param val 16-bit value
- */
-#define YASM_WRITE_16_L(ptr, val) \
- do { \
- *((ptr)++) = (unsigned char)((val) & 0xFF); \
- *((ptr)++) = (unsigned char)(((val) >> 8) & 0xFF); \
- } while (0)
-
-/** Write a 32-bit value to a buffer in little endian, incrementing buffer
- * pointer.
- * \note Only works properly if ptr is an (unsigned char *).
- * \param ptr buffer
- * \param val 32-bit value
- */
-#define YASM_WRITE_32_L(ptr, val) \
- do { \
- *((ptr)++) = (unsigned char)((val) & 0xFF); \
- *((ptr)++) = (unsigned char)(((val) >> 8) & 0xFF); \
- *((ptr)++) = (unsigned char)(((val) >> 16) & 0xFF); \
- *((ptr)++) = (unsigned char)(((val) >> 24) & 0xFF); \
- } while (0)
-
-/** Write a 16-bit value to a buffer in big endian, incrementing buffer
- * pointer.
- * \note Only works properly if ptr is an (unsigned char *).
- * \param ptr buffer
- * \param val 16-bit value
- */
-#define YASM_WRITE_16_B(ptr, val) \
- do { \
- *((ptr)++) = (unsigned char)(((val) >> 8) & 0xFF); \
- *((ptr)++) = (unsigned char)((val) & 0xFF); \
- } while (0)
-
-/** Write a 32-bit value to a buffer in big endian, incrementing buffer
- * pointer.
- * \note Only works properly if ptr is an (unsigned char *).
- * \param ptr buffer
- * \param val 32-bit value
- */
-#define YASM_WRITE_32_B(ptr, val) \
- do { \
- *((ptr)++) = (unsigned char)(((val) >> 24) & 0xFF); \
- *((ptr)++) = (unsigned char)(((val) >> 16) & 0xFF); \
- *((ptr)++) = (unsigned char)(((val) >> 8) & 0xFF); \
- *((ptr)++) = (unsigned char)((val) & 0xFF); \
- } while (0)
-
-
-/** Write an 8-bit value to a buffer. Does not increment buffer pointer.
- * \note Only works properly if ptr is an (unsigned char *).
- * \param ptr buffer
- * \param val 8-bit value
- */
-#define YASM_SAVE_8(ptr, val) \
- *(ptr) = (unsigned char)((val) & 0xFF)
-
-/** Write a 16-bit value to a buffer in little endian. Does not increment
- * buffer pointer.
- * \note Only works properly if ptr is an (unsigned char *).
- * \param ptr buffer
- * \param val 16-bit value
- */
-#define YASM_SAVE_16_L(ptr, val) \
- do { \
- *(ptr) = (unsigned char)((val) & 0xFF); \
- *((ptr)+1) = (unsigned char)(((val) >> 8) & 0xFF); \
- } while (0)
-
-/** Write a 32-bit value to a buffer in little endian. Does not increment
- * buffer pointer.
- * \note Only works properly if ptr is an (unsigned char *).
- * \param ptr buffer
- * \param val 32-bit value
- */
-#define YASM_SAVE_32_L(ptr, val) \
- do { \
- *(ptr) = (unsigned char)((val) & 0xFF); \
- *((ptr)+1) = (unsigned char)(((val) >> 8) & 0xFF); \
- *((ptr)+2) = (unsigned char)(((val) >> 16) & 0xFF); \
- *((ptr)+3) = (unsigned char)(((val) >> 24) & 0xFF); \
- } while (0)
-
-/** Write a 16-bit value to a buffer in big endian. Does not increment buffer
- * pointer.
- * \note Only works properly if ptr is an (unsigned char *).
- * \param ptr buffer
- * \param val 16-bit value
- */
-#define YASM_SAVE_16_B(ptr, val) \
- do { \
- *(ptr) = (unsigned char)(((val) >> 8) & 0xFF); \
- *((ptr)+1) = (unsigned char)((val) & 0xFF); \
- } while (0)
-
-/** Write a 32-bit value to a buffer in big endian. Does not increment buffer
- * pointer.
- * \note Only works properly if ptr is an (unsigned char *).
- * \param ptr buffer
- * \param val 32-bit value
- */
-#define YASM_SAVE_32_B(ptr, val) \
- do { \
- *(ptr) = (unsigned char)(((val) >> 24) & 0xFF); \
- *((ptr)+1) = (unsigned char)(((val) >> 16) & 0xFF); \
- *((ptr)+2) = (unsigned char)(((val) >> 8) & 0xFF); \
- *((ptr)+3) = (unsigned char)((val) & 0xFF); \
- } while (0)
-
-/** Direct-to-file version of YASM_SAVE_16_L().
- * \note Using the macro multiple times with a single fwrite() call will
- * probably be faster than calling this function many times.
- * \param val 16-bit value
- * \param f file
- * \return 1 if the write was successful, 0 if not (just like fwrite()).
- */
-YASM_LIB_DECL
-size_t yasm_fwrite_16_l(unsigned short val, FILE *f);
-
-/** Direct-to-file version of YASM_SAVE_32_L().
- * \note Using the macro multiple times with a single fwrite() call will
- * probably be faster than calling this function many times.
- * \param val 32-bit value
- * \param f file
- * \return 1 if the write was successful, 0 if not (just like fwrite()).
- */
-YASM_LIB_DECL
-size_t yasm_fwrite_32_l(unsigned long val, FILE *f);
-
-/** Direct-to-file version of YASM_SAVE_16_B().
- * \note Using the macro multiple times with a single fwrite() call will
- * probably be faster than calling this function many times.
- * \param val 16-bit value
- * \param f file
- * \return 1 if the write was successful, 0 if not (just like fwrite()).
- */
-YASM_LIB_DECL
-size_t yasm_fwrite_16_b(unsigned short val, FILE *f);
-
-/** Direct-to-file version of YASM_SAVE_32_B().
- * \note Using the macro multiple times with a single fwrite() call will
- * probably be faster than calling this function many times.
- * \param val 32-bit value
- * \param f file
- * \return 1 if the write was successful, 0 if not (just like fwrite()).
- */
-YASM_LIB_DECL
-size_t yasm_fwrite_32_b(unsigned long val, FILE *f);
-
-/** Read an 8-bit value from a buffer, incrementing buffer pointer.
- * \note Only works properly if ptr is an (unsigned char *).
- * \param ptr buffer
- * \param val 8-bit value
- */
-#define YASM_READ_8(val, ptr) \
- (val) = *((ptr)++) & 0xFF
-
-/** Read a 16-bit value from a buffer in little endian, incrementing buffer
- * pointer.
- * \note Only works properly if ptr is an (unsigned char *).
- * \param ptr buffer
- * \param val 16-bit value
- */
-#define YASM_READ_16_L(val, ptr) \
- do { \
- (val) = *((ptr)++) & 0xFF; \
- (val) |= (*((ptr)++) & 0xFF) << 8; \
- } while (0)
-
-/** Read a 32-bit value from a buffer in little endian, incrementing buffer
- * pointer.
- * \note Only works properly if ptr is an (unsigned char *).
- * \param ptr buffer
- * \param val 32-bit value
- */
-#define YASM_READ_32_L(val, ptr) \
- do { \
- (val) = *((ptr)++) & 0xFF; \
- (val) |= (*((ptr)++) & 0xFF) << 8; \
- (val) |= (*((ptr)++) & 0xFF) << 16; \
- (val) |= (*((ptr)++) & 0xFF) << 24; \
- } while (0)
-
-/** Read a 16-bit value from a buffer in big endian, incrementing buffer
- * pointer.
- * \note Only works properly if ptr is an (unsigned char *).
- * \param ptr buffer
- * \param val 16-bit value
- */
-#define YASM_READ_16_B(val, ptr) \
- do { \
- (val) = (*((ptr)++) & 0xFF) << 8; \
- (val) |= *((ptr)++) & 0xFF; \
- } while (0)
-
-/** Read a 32-bit value from a buffer in big endian, incrementing buffer
- * pointer.
- * \note Only works properly if ptr is an (unsigned char *).
- * \param ptr buffer
- * \param val 32-bit value
- */
-#define YASM_READ_32_B(val, ptr) \
- do { \
- (val) = (*((ptr)++) & 0xFF) << 24; \
- (val) |= (*((ptr)++) & 0xFF) << 16; \
- (val) |= (*((ptr)++) & 0xFF) << 8; \
- (val) |= *((ptr)++) & 0xFF; \
- } while (0)
-
-/** Read an 8-bit value from a buffer. Does not increment buffer pointer.
- * \note Only works properly if ptr is an (unsigned char *).
- * \param ptr buffer
- * \param val 8-bit value
- */
-#define YASM_LOAD_8(val, ptr) \
- (val) = *(ptr) & 0xFF
-
-/** Read a 16-bit value from a buffer in little endian. Does not increment
- * buffer pointer.
- * \note Only works properly if ptr is an (unsigned char *).
- * \param ptr buffer
- * \param val 16-bit value
- */
-#define YASM_LOAD_16_L(val, ptr) \
- do { \
- (val) = *(ptr) & 0xFF; \
- (val) |= (*((ptr)+1) & 0xFF) << 8; \
- } while (0)
-
-/** Read a 32-bit value from a buffer in little endian. Does not increment
- * buffer pointer.
- * \note Only works properly if ptr is an (unsigned char *).
- * \param ptr buffer
- * \param val 32-bit value
- */
-#define YASM_LOAD_32_L(val, ptr) \
- do { \
- (val) = (unsigned long)(*(ptr) & 0xFF); \
- (val) |= (unsigned long)((*((ptr)+1) & 0xFF) << 8); \
- (val) |= (unsigned long)((*((ptr)+2) & 0xFF) << 16); \
- (val) |= (unsigned long)((*((ptr)+3) & 0xFF) << 24); \
- } while (0)
-
-/** Read a 16-bit value from a buffer in big endian. Does not increment buffer
- * pointer.
- * \note Only works properly if ptr is an (unsigned char *).
- * \param ptr buffer
- * \param val 16-bit value
- */
-#define YASM_LOAD_16_B(val, ptr) \
- do { \
- (val) = (*(ptr) & 0xFF) << 8; \
- (val) |= *((ptr)+1) & 0xFF; \
- } while (0)
-
-/** Read a 32-bit value from a buffer in big endian. Does not increment buffer
- * pointer.
- * \note Only works properly if ptr is an (unsigned char *).
- * \param ptr buffer
- * \param val 32-bit value
- */
-#define YASM_LOAD_32_B(val, ptr) \
- do { \
- (val) = (unsigned long)((*(ptr) & 0xFF) << 24); \
- (val) |= (unsigned long)((*((ptr)+1) & 0xFF) << 16); \
- (val) |= (unsigned long)((*((ptr)+2) & 0xFF) << 8); \
- (val) |= (unsigned long)(*((ptr)+3) & 0xFF); \
- } while (0)
-
-#endif
+/**
+ * \file libyasm/file.h
+ * \brief YASM file helpers.
+ *
+ * \license
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * - Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ * \endlicense
+ */
+#ifndef YASM_FILE_H
+#define YASM_FILE_H
+
+#ifndef YASM_LIB_DECL
+#define YASM_LIB_DECL
+#endif
+
+/** Re2c scanner state. */
+typedef struct yasm_scanner {
+ unsigned char *bot; /**< Bottom of scan buffer */
+ unsigned char *tok; /**< Start of token */
+ unsigned char *ptr; /**< Scan marker */
+ unsigned char *cur; /**< Cursor (1 past end of token) */
+ unsigned char *lim; /**< Limit of good data */
+ unsigned char *top; /**< Top of scan buffer */
+ unsigned char *eof; /**< End of file */
+} yasm_scanner;
+
+/** Initialize scanner state.
+ * \param scanner Re2c scanner state
+ */
+YASM_LIB_DECL
+void yasm_scanner_initialize(yasm_scanner *scanner);
+
+/** Frees any memory used by scanner state; does not free state itself.
+ * \param scanner Re2c scanner state
+ */
+YASM_LIB_DECL
+void yasm_scanner_delete(yasm_scanner *scanner);
+
+/** Fill a scanner state structure with data coming from an input function.
+ * \param scanner Re2c scanner state
+ * \param cursor Re2c scan cursor
+ * \param input_func Input function to read data; takes buffer and maximum
+ * number of bytes, returns number of bytes read.
+ * \param input_func_data Data to pass as the first parameter to input_func
+ * \return 1 if this was the first time this function was called on this
+ * scanner state, 0 otherwise.
+ */
+YASM_LIB_DECL
+int yasm_fill_helper
+ (yasm_scanner *scanner, unsigned char **cursor,
+ size_t (*input_func) (void *d, unsigned char *buf, size_t max),
+ void *input_func_data);
+
+/** Unescape a string with C-style escapes. Handles b, f, n, r, t, and hex
+ * and octal escapes. String is updated in-place.
+ * Edge cases:
+ * - hex escapes: reads as many hex digits as possible, takes last 2 as value.
+ * - oct escapes: takes up to 3 digits 0-9 and scales appropriately, with
+ * warning.
+ * \param str C-style string (updated in place)
+ * \param len length of string (updated with new length)
+ */
+YASM_LIB_DECL
+void yasm_unescape_cstring(unsigned char *str, size_t *len);
+
+/** Split a UNIX pathname into head (directory) and tail (base filename)
+ * portions.
+ * \internal
+ * \param path pathname
+ * \param tail (returned) base filename
+ * \return Length of head (directory).
+ */
+YASM_LIB_DECL
+size_t yasm__splitpath_unix(const char *path, /*@out@*/ const char **tail);
+
+/** Split a Windows pathname into head (directory) and tail (base filename)
+ * portions.
+ * \internal
+ * \param path pathname
+ * \param tail (returned) base filename
+ * \return Length of head (directory).
+ */
+YASM_LIB_DECL
+size_t yasm__splitpath_win(const char *path, /*@out@*/ const char **tail);
+
+/** Split a pathname into head (directory) and tail (base filename) portions.
+ * Unless otherwise defined, defaults to yasm__splitpath_unix().
+ * \internal
+ * \param path pathname
+ * \param tail (returned) base filename
+ * \return Length of head (directory).
+ */
+#ifndef yasm__splitpath
+# if defined (_WIN32) || defined (WIN32) || defined (__MSDOS__) || \
+ defined (__DJGPP__) || defined (__OS2__)
+# define yasm__splitpath(path, tail) yasm__splitpath_win(path, tail)
+# else
+# define yasm__splitpath(path, tail) yasm__splitpath_unix(path, tail)
+# endif
+#endif
+
+/** Get the current working directory.
+ * \internal
+ * \return Current working directory pathname (newly allocated).
+ */
+YASM_LIB_DECL
+/*@only@*/ char *yasm__getcwd(void);
+
+/** Convert a relative or absolute pathname into an absolute pathname.
+ * \internal
+ * \param path pathname
+ * \return Absolute version of path (newly allocated).
+ */
+YASM_LIB_DECL
+/*@only@*/ char *yasm__abspath(const char *path);
+
+/** Build a UNIX pathname that is equivalent to accessing the "to" pathname
+ * when you're in the directory containing "from". Result is relative if both
+ * from and to are relative.
+ * \internal
+ * \param from from pathname
+ * \param to to pathname
+ * \return Combined path (newly allocated).
+ */
+YASM_LIB_DECL
+char *yasm__combpath_unix(const char *from, const char *to);
+
+/** Build a Windows pathname that is equivalent to accessing the "to" pathname
+ * when you're in the directory containing "from". Result is relative if both
+ * from and to are relative.
+ * \internal
+ * \param from from pathname
+ * \param to to pathname
+ * \return Combined path (newly allocated).
+ */
+YASM_LIB_DECL
+char *yasm__combpath_win(const char *from, const char *to);
+
+/** Build a pathname that is equivalent to accessing the "to" pathname
+ * when you're in the directory containing "from". Result is relative if both
+ * from and to are relative.
+ * Unless otherwise defined, defaults to yasm__combpath_unix().
+ * \internal
+ * \param from from pathname
+ * \param to to pathname
+ * \return Combined path (newly allocated).
+ */
+#ifndef yasm__combpath
+# if defined (_WIN32) || defined (WIN32) || defined (__MSDOS__) || \
+ defined (__DJGPP__) || defined (__OS2__)
+# define yasm__combpath(from, to) yasm__combpath_win(from, to)
+# else
+# define yasm__combpath(from, to) yasm__combpath_unix(from, to)
+# endif
+#endif
+
+/** Recursively create tree of directories needed for pathname.
+ * \internal
+ * \param path pathname
+ * \param win handle windows paths
+ * \return Length of directory portion of pathname.
+ */
+YASM_LIB_DECL
+size_t yasm__createpath_common(const char *path, int win);
+
+/** Recursively create tree of directories needed for pathname.
+ * Unless otherwise defined, defaults to yasm__createpath_unix().
+ * \internal
+ * \param path pathname
+ * \return Length of directory portion of pathname.
+ */
+#ifndef yasm__createpath
+# if defined (_WIN32) || defined (WIN32) || defined (__MSDOS__) || \
+ defined (__DJGPP__) || defined (__OS2__)
+# define yasm__createpath(path) yasm__createpath_common(path, 1)
+# else
+# define yasm__createpath(path) yasm__createpath_common(path, 0)
+# endif
+#endif
+
+/** Try to find and open an include file, searching through include paths.
+ * First iname is looked for relative to the directory containing "from", then
+ * it's looked for relative to each of the include paths.
+ *
+ * All pathnames may be either absolute or relative; from, oname, and
+ * include paths, if relative, are relative from the current working directory.
+ *
+ * First match wins; the full pathname (newly allocated) to the opened file
+ * is saved into oname, and the fopen'ed FILE * is returned. If not found,
+ * NULL is returned.
+ *
+ * \param iname file to include
+ * \param from file doing the including
+ * \param mode fopen mode string
+ * \param oname full pathname of included file (may be relative). NULL
+ * may be passed if this is unwanted.
+ * \return fopen'ed include file, or NULL if not found.
+ */
+YASM_LIB_DECL
+/*@null@*/ FILE *yasm_fopen_include
+ (const char *iname, const char *from, const char *mode,
+ /*@null@*/ /*@out@*/ /*@only@*/ char **oname);
+
+/** Delete any stored include paths added by yasm_add_include_path().
+ */
+YASM_LIB_DECL
+void yasm_delete_include_paths(void);
+
+/** Iterate through include paths.
+*/
+YASM_LIB_DECL
+const char * yasm_get_include_dir(void **iter);
+
+/** Add an include path for use by yasm_fopen_include().
+ * If path is relative, it is treated by yasm_fopen_include() as relative to
+ * the current working directory.
+ *
+ * \param path path to add
+ */
+YASM_LIB_DECL
+void yasm_add_include_path(const char *path);
+
+/** Write an 8-bit value to a buffer, incrementing buffer pointer.
+ * \note Only works properly if ptr is an (unsigned char *).
+ * \param ptr buffer
+ * \param val 8-bit value
+ */
+#define YASM_WRITE_8(ptr, val) \
+ *((ptr)++) = (unsigned char)((val) & 0xFF)
+
+/** Write a 16-bit value to a buffer in little endian, incrementing buffer
+ * pointer.
+ * \note Only works properly if ptr is an (unsigned char *).
+ * \param ptr buffer
+ * \param val 16-bit value
+ */
+#define YASM_WRITE_16_L(ptr, val) \
+ do { \
+ *((ptr)++) = (unsigned char)((val) & 0xFF); \
+ *((ptr)++) = (unsigned char)(((val) >> 8) & 0xFF); \
+ } while (0)
+
+/** Write a 32-bit value to a buffer in little endian, incrementing buffer
+ * pointer.
+ * \note Only works properly if ptr is an (unsigned char *).
+ * \param ptr buffer
+ * \param val 32-bit value
+ */
+#define YASM_WRITE_32_L(ptr, val) \
+ do { \
+ *((ptr)++) = (unsigned char)((val) & 0xFF); \
+ *((ptr)++) = (unsigned char)(((val) >> 8) & 0xFF); \
+ *((ptr)++) = (unsigned char)(((val) >> 16) & 0xFF); \
+ *((ptr)++) = (unsigned char)(((val) >> 24) & 0xFF); \
+ } while (0)
+
+/** Write a 16-bit value to a buffer in big endian, incrementing buffer
+ * pointer.
+ * \note Only works properly if ptr is an (unsigned char *).
+ * \param ptr buffer
+ * \param val 16-bit value
+ */
+#define YASM_WRITE_16_B(ptr, val) \
+ do { \
+ *((ptr)++) = (unsigned char)(((val) >> 8) & 0xFF); \
+ *((ptr)++) = (unsigned char)((val) & 0xFF); \
+ } while (0)
+
+/** Write a 32-bit value to a buffer in big endian, incrementing buffer
+ * pointer.
+ * \note Only works properly if ptr is an (unsigned char *).
+ * \param ptr buffer
+ * \param val 32-bit value
+ */
+#define YASM_WRITE_32_B(ptr, val) \
+ do { \
+ *((ptr)++) = (unsigned char)(((val) >> 24) & 0xFF); \
+ *((ptr)++) = (unsigned char)(((val) >> 16) & 0xFF); \
+ *((ptr)++) = (unsigned char)(((val) >> 8) & 0xFF); \
+ *((ptr)++) = (unsigned char)((val) & 0xFF); \
+ } while (0)
+
+
+/** Write an 8-bit value to a buffer. Does not increment buffer pointer.
+ * \note Only works properly if ptr is an (unsigned char *).
+ * \param ptr buffer
+ * \param val 8-bit value
+ */
+#define YASM_SAVE_8(ptr, val) \
+ *(ptr) = (unsigned char)((val) & 0xFF)
+
+/** Write a 16-bit value to a buffer in little endian. Does not increment
+ * buffer pointer.
+ * \note Only works properly if ptr is an (unsigned char *).
+ * \param ptr buffer
+ * \param val 16-bit value
+ */
+#define YASM_SAVE_16_L(ptr, val) \
+ do { \
+ *(ptr) = (unsigned char)((val) & 0xFF); \
+ *((ptr)+1) = (unsigned char)(((val) >> 8) & 0xFF); \
+ } while (0)
+
+/** Write a 32-bit value to a buffer in little endian. Does not increment
+ * buffer pointer.
+ * \note Only works properly if ptr is an (unsigned char *).
+ * \param ptr buffer
+ * \param val 32-bit value
+ */
+#define YASM_SAVE_32_L(ptr, val) \
+ do { \
+ *(ptr) = (unsigned char)((val) & 0xFF); \
+ *((ptr)+1) = (unsigned char)(((val) >> 8) & 0xFF); \
+ *((ptr)+2) = (unsigned char)(((val) >> 16) & 0xFF); \
+ *((ptr)+3) = (unsigned char)(((val) >> 24) & 0xFF); \
+ } while (0)
+
+/** Write a 16-bit value to a buffer in big endian. Does not increment buffer
+ * pointer.
+ * \note Only works properly if ptr is an (unsigned char *).
+ * \param ptr buffer
+ * \param val 16-bit value
+ */
+#define YASM_SAVE_16_B(ptr, val) \
+ do { \
+ *(ptr) = (unsigned char)(((val) >> 8) & 0xFF); \
+ *((ptr)+1) = (unsigned char)((val) & 0xFF); \
+ } while (0)
+
+/** Write a 32-bit value to a buffer in big endian. Does not increment buffer
+ * pointer.
+ * \note Only works properly if ptr is an (unsigned char *).
+ * \param ptr buffer
+ * \param val 32-bit value
+ */
+#define YASM_SAVE_32_B(ptr, val) \
+ do { \
+ *(ptr) = (unsigned char)(((val) >> 24) & 0xFF); \
+ *((ptr)+1) = (unsigned char)(((val) >> 16) & 0xFF); \
+ *((ptr)+2) = (unsigned char)(((val) >> 8) & 0xFF); \
+ *((ptr)+3) = (unsigned char)((val) & 0xFF); \
+ } while (0)
+
+/** Direct-to-file version of YASM_SAVE_16_L().
+ * \note Using the macro multiple times with a single fwrite() call will
+ * probably be faster than calling this function many times.
+ * \param val 16-bit value
+ * \param f file
+ * \return 1 if the write was successful, 0 if not (just like fwrite()).
+ */
+YASM_LIB_DECL
+size_t yasm_fwrite_16_l(unsigned short val, FILE *f);
+
+/** Direct-to-file version of YASM_SAVE_32_L().
+ * \note Using the macro multiple times with a single fwrite() call will
+ * probably be faster than calling this function many times.
+ * \param val 32-bit value
+ * \param f file
+ * \return 1 if the write was successful, 0 if not (just like fwrite()).
+ */
+YASM_LIB_DECL
+size_t yasm_fwrite_32_l(unsigned long val, FILE *f);
+
+/** Direct-to-file version of YASM_SAVE_16_B().
+ * \note Using the macro multiple times with a single fwrite() call will
+ * probably be faster than calling this function many times.
+ * \param val 16-bit value
+ * \param f file
+ * \return 1 if the write was successful, 0 if not (just like fwrite()).
+ */
+YASM_LIB_DECL
+size_t yasm_fwrite_16_b(unsigned short val, FILE *f);
+
+/** Direct-to-file version of YASM_SAVE_32_B().
+ * \note Using the macro multiple times with a single fwrite() call will
+ * probably be faster than calling this function many times.
+ * \param val 32-bit value
+ * \param f file
+ * \return 1 if the write was successful, 0 if not (just like fwrite()).
+ */
+YASM_LIB_DECL
+size_t yasm_fwrite_32_b(unsigned long val, FILE *f);
+
+/** Read an 8-bit value from a buffer, incrementing buffer pointer.
+ * \note Only works properly if ptr is an (unsigned char *).
+ * \param ptr buffer
+ * \param val 8-bit value
+ */
+#define YASM_READ_8(val, ptr) \
+ (val) = *((ptr)++) & 0xFF
+
+/** Read a 16-bit value from a buffer in little endian, incrementing buffer
+ * pointer.
+ * \note Only works properly if ptr is an (unsigned char *).
+ * \param ptr buffer
+ * \param val 16-bit value
+ */
+#define YASM_READ_16_L(val, ptr) \
+ do { \
+ (val) = *((ptr)++) & 0xFF; \
+ (val) |= (*((ptr)++) & 0xFF) << 8; \
+ } while (0)
+
+/** Read a 32-bit value from a buffer in little endian, incrementing buffer
+ * pointer.
+ * \note Only works properly if ptr is an (unsigned char *).
+ * \param ptr buffer
+ * \param val 32-bit value
+ */
+#define YASM_READ_32_L(val, ptr) \
+ do { \
+ (val) = *((ptr)++) & 0xFF; \
+ (val) |= (*((ptr)++) & 0xFF) << 8; \
+ (val) |= (*((ptr)++) & 0xFF) << 16; \
+ (val) |= (*((ptr)++) & 0xFF) << 24; \
+ } while (0)
+
+/** Read a 16-bit value from a buffer in big endian, incrementing buffer
+ * pointer.
+ * \note Only works properly if ptr is an (unsigned char *).
+ * \param ptr buffer
+ * \param val 16-bit value
+ */
+#define YASM_READ_16_B(val, ptr) \
+ do { \
+ (val) = (*((ptr)++) & 0xFF) << 8; \
+ (val) |= *((ptr)++) & 0xFF; \
+ } while (0)
+
+/** Read a 32-bit value from a buffer in big endian, incrementing buffer
+ * pointer.
+ * \note Only works properly if ptr is an (unsigned char *).
+ * \param ptr buffer
+ * \param val 32-bit value
+ */
+#define YASM_READ_32_B(val, ptr) \
+ do { \
+ (val) = (*((ptr)++) & 0xFF) << 24; \
+ (val) |= (*((ptr)++) & 0xFF) << 16; \
+ (val) |= (*((ptr)++) & 0xFF) << 8; \
+ (val) |= *((ptr)++) & 0xFF; \
+ } while (0)
+
+/** Read an 8-bit value from a buffer. Does not increment buffer pointer.
+ * \note Only works properly if ptr is an (unsigned char *).
+ * \param ptr buffer
+ * \param val 8-bit value
+ */
+#define YASM_LOAD_8(val, ptr) \
+ (val) = *(ptr) & 0xFF
+
+/** Read a 16-bit value from a buffer in little endian. Does not increment
+ * buffer pointer.
+ * \note Only works properly if ptr is an (unsigned char *).
+ * \param ptr buffer
+ * \param val 16-bit value
+ */
+#define YASM_LOAD_16_L(val, ptr) \
+ do { \
+ (val) = *(ptr) & 0xFF; \
+ (val) |= (*((ptr)+1) & 0xFF) << 8; \
+ } while (0)
+
+/** Read a 32-bit value from a buffer in little endian. Does not increment
+ * buffer pointer.
+ * \note Only works properly if ptr is an (unsigned char *).
+ * \param ptr buffer
+ * \param val 32-bit value
+ */
+#define YASM_LOAD_32_L(val, ptr) \
+ do { \
+ (val) = (unsigned long)(*(ptr) & 0xFF); \
+ (val) |= (unsigned long)((*((ptr)+1) & 0xFF) << 8); \
+ (val) |= (unsigned long)((*((ptr)+2) & 0xFF) << 16); \
+ (val) |= (unsigned long)((*((ptr)+3) & 0xFF) << 24); \
+ } while (0)
+
+/** Read a 16-bit value from a buffer in big endian. Does not increment buffer
+ * pointer.
+ * \note Only works properly if ptr is an (unsigned char *).
+ * \param ptr buffer
+ * \param val 16-bit value
+ */
+#define YASM_LOAD_16_B(val, ptr) \
+ do { \
+ (val) = (*(ptr) & 0xFF) << 8; \
+ (val) |= *((ptr)+1) & 0xFF; \
+ } while (0)
+
+/** Read a 32-bit value from a buffer in big endian. Does not increment buffer
+ * pointer.
+ * \note Only works properly if ptr is an (unsigned char *).
+ * \param ptr buffer
+ * \param val 32-bit value
+ */
+#define YASM_LOAD_32_B(val, ptr) \
+ do { \
+ (val) = (unsigned long)((*(ptr) & 0xFF) << 24); \
+ (val) |= (unsigned long)((*((ptr)+1) & 0xFF) << 16); \
+ (val) |= (unsigned long)((*((ptr)+2) & 0xFF) << 8); \
+ (val) |= (unsigned long)(*((ptr)+3) & 0xFF); \
+ } while (0)
+
+#endif
diff --git a/contrib/tools/yasm/libyasm/floatnum.c b/contrib/tools/yasm/libyasm/floatnum.c
index 98eabeebcf..ab67c2b2e4 100644
--- a/contrib/tools/yasm/libyasm/floatnum.c
+++ b/contrib/tools/yasm/libyasm/floatnum.c
@@ -1,760 +1,760 @@
-/*
- * Floating point number functions.
- *
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Based on public-domain x86 assembly code by Randall Hyde (8/28/91).
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include "util.h"
-
-#include <ctype.h>
-
-#include "coretype.h"
-#include "bitvect.h"
-#include "file.h"
-
-#include "errwarn.h"
-#include "floatnum.h"
-
-
-/* 97-bit internal floating point format:
- * 0000000s eeeeeeee eeeeeeee m.....................................m
- * Sign exponent mantissa (80 bits)
- * 79 0
- *
- * Only L.O. bit of Sign byte is significant. The rest is zero.
- * Exponent is bias 32767.
- * Mantissa does NOT have an implied one bit (it's explicit).
- */
-struct yasm_floatnum {
- /*@only@*/ wordptr mantissa; /* Allocated to MANT_BITS bits */
- unsigned short exponent;
- unsigned char sign;
- unsigned char flags;
-};
-
-/* constants describing parameters of internal floating point format */
-#define MANT_BITS 80
-#define MANT_BYTES 10
-#define MANT_SIGDIGITS 24
-#define EXP_BIAS 0x7FFF
-#define EXP_INF 0xFFFF
-#define EXP_MAX 0xFFFE
-#define EXP_MIN 1
-#define EXP_ZERO 0
-
-/* Flag settings for flags field */
-#define FLAG_ISZERO 1<<0
-
-/* Note this structure integrates the floatnum structure */
-typedef struct POT_Entry_s {
- yasm_floatnum f;
- int dec_exponent;
-} POT_Entry;
-
-/* "Source" for POT_Entry. */
-typedef struct POT_Entry_Source_s {
- unsigned char mantissa[MANT_BYTES]; /* little endian mantissa */
- unsigned short exponent; /* Bias 32767 exponent */
-} POT_Entry_Source;
-
-/* Power of ten tables used by the floating point I/O routines.
- * The POT_Table? arrays are built from the POT_Table?_Source arrays at
- * runtime by POT_Table_Init().
- */
-
-/* This table contains the powers of ten raised to negative powers of two:
- *
- * entry[12-n] = 10 ** (-2 ** n) for 0 <= n <= 12.
- * entry[13] = 1.0
- */
-static /*@only@*/ POT_Entry *POT_TableN;
-static POT_Entry_Source POT_TableN_Source[] = {
- {{0xe3,0x2d,0xde,0x9f,0xce,0xd2,0xc8,0x04,0xdd,0xa6},0x4ad8}, /* 1e-4096 */
- {{0x25,0x49,0xe4,0x2d,0x36,0x34,0x4f,0x53,0xae,0xce},0x656b}, /* 1e-2048 */
- {{0xa6,0x87,0xbd,0xc0,0x57,0xda,0xa5,0x82,0xa6,0xa2},0x72b5}, /* 1e-1024 */
- {{0x33,0x71,0x1c,0xd2,0x23,0xdb,0x32,0xee,0x49,0x90},0x795a}, /* 1e-512 */
- {{0x91,0xfa,0x39,0x19,0x7a,0x63,0x25,0x43,0x31,0xc0},0x7cac}, /* 1e-256 */
- {{0x7d,0xac,0xa0,0xe4,0xbc,0x64,0x7c,0x46,0xd0,0xdd},0x7e55}, /* 1e-128 */
- {{0x24,0x3f,0xa5,0xe9,0x39,0xa5,0x27,0xea,0x7f,0xa8},0x7f2a}, /* 1e-64 */
- {{0xde,0x67,0xba,0x94,0x39,0x45,0xad,0x1e,0xb1,0xcf},0x7f94}, /* 1e-32 */
- {{0x2f,0x4c,0x5b,0xe1,0x4d,0xc4,0xbe,0x94,0x95,0xe6},0x7fc9}, /* 1e-16 */
- {{0xc2,0xfd,0xfc,0xce,0x61,0x84,0x11,0x77,0xcc,0xab},0x7fe4}, /* 1e-8 */
- {{0xc3,0xd3,0x2b,0x65,0x19,0xe2,0x58,0x17,0xb7,0xd1},0x7ff1}, /* 1e-4 */
- {{0x71,0x3d,0x0a,0xd7,0xa3,0x70,0x3d,0x0a,0xd7,0xa3},0x7ff8}, /* 1e-2 */
- {{0xcd,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc},0x7ffb}, /* 1e-1 */
- {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80},0x7fff}, /* 1e-0 */
-};
-
-/* This table contains the powers of ten raised to positive powers of two:
- *
- * entry[12-n] = 10 ** (2 ** n) for 0 <= n <= 12.
- * entry[13] = 1.0
- * entry[-1] = entry[0];
- *
- * There is a -1 entry since it is possible for the algorithm to back up
- * before the table. This -1 entry is created at runtime by duplicating the
- * 0 entry.
- */
-static /*@only@*/ POT_Entry *POT_TableP;
-static POT_Entry_Source POT_TableP_Source[] = {
- {{0x4c,0xc9,0x9a,0x97,0x20,0x8a,0x02,0x52,0x60,0xc4},0xb525}, /* 1e+4096 */
- {{0x4d,0xa7,0xe4,0x5d,0x3d,0xc5,0x5d,0x3b,0x8b,0x9e},0x9a92}, /* 1e+2048 */
- {{0x0d,0x65,0x17,0x0c,0x75,0x81,0x86,0x75,0x76,0xc9},0x8d48}, /* 1e+1024 */
- {{0x65,0xcc,0xc6,0x91,0x0e,0xa6,0xae,0xa0,0x19,0xe3},0x86a3}, /* 1e+512 */
- {{0xbc,0xdd,0x8d,0xde,0xf9,0x9d,0xfb,0xeb,0x7e,0xaa},0x8351}, /* 1e+256 */
- {{0x6f,0xc6,0xdf,0x8c,0xe9,0x80,0xc9,0x47,0xba,0x93},0x81a8}, /* 1e+128 */
- {{0xbf,0x3c,0xd5,0xa6,0xcf,0xff,0x49,0x1f,0x78,0xc2},0x80d3}, /* 1e+64 */
- {{0x20,0xf0,0x9d,0xb5,0x70,0x2b,0xa8,0xad,0xc5,0x9d},0x8069}, /* 1e+32 */
- {{0x00,0x00,0x00,0x00,0x00,0x04,0xbf,0xc9,0x1b,0x8e},0x8034}, /* 1e+16 */
- {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xbc,0xbe},0x8019}, /* 1e+8 */
- {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x9c},0x800c}, /* 1e+4 */
- {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc8},0x8005}, /* 1e+2 */
- {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0},0x8002}, /* 1e+1 */
- {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80},0x7fff}, /* 1e+0 */
-};
-
-
-static void
-POT_Table_Init_Entry(/*@out@*/ POT_Entry *e, POT_Entry_Source *s, int dec_exp)
-{
- /* Save decimal exponent */
- e->dec_exponent = dec_exp;
-
- /* Initialize mantissa */
- e->f.mantissa = BitVector_Create(MANT_BITS, FALSE);
- BitVector_Block_Store(e->f.mantissa, s->mantissa, MANT_BYTES);
-
- /* Initialize exponent */
- e->f.exponent = s->exponent;
-
- /* Set sign to 0 (positive) */
- e->f.sign = 0;
-
- /* Clear flags */
- e->f.flags = 0;
-}
-
-/*@-compdef@*/
-void
-yasm_floatnum_initialize(void)
-/*@globals undef POT_TableN, undef POT_TableP, POT_TableP_Source,
- POT_TableN_Source @*/
-{
- int dec_exp = 1;
- int i;
-
- /* Allocate space for two POT tables */
- POT_TableN = yasm_xmalloc(14*sizeof(POT_Entry));
- POT_TableP = yasm_xmalloc(15*sizeof(POT_Entry)); /* note 1 extra for -1 */
-
- /* Initialize entry[0..12] */
- for (i=12; i>=0; i--) {
- POT_Table_Init_Entry(&POT_TableN[i], &POT_TableN_Source[i], 0-dec_exp);
- POT_Table_Init_Entry(&POT_TableP[i+1], &POT_TableP_Source[i], dec_exp);
- dec_exp *= 2; /* Update decimal exponent */
- }
-
- /* Initialize entry[13] */
- POT_Table_Init_Entry(&POT_TableN[13], &POT_TableN_Source[13], 0);
- POT_Table_Init_Entry(&POT_TableP[14], &POT_TableP_Source[13], 0);
-
- /* Initialize entry[-1] for POT_TableP */
- POT_Table_Init_Entry(&POT_TableP[0], &POT_TableP_Source[0], 4096);
-
- /* Offset POT_TableP so that [0] becomes [-1] */
- POT_TableP++;
-}
-/*@=compdef@*/
-
-/*@-globstate@*/
-void
-yasm_floatnum_cleanup(void)
-{
- int i;
-
- /* Un-offset POT_TableP */
- POT_TableP--;
-
- for (i=0; i<14; i++) {
- BitVector_Destroy(POT_TableN[i].f.mantissa);
- BitVector_Destroy(POT_TableP[i].f.mantissa);
- }
- BitVector_Destroy(POT_TableP[14].f.mantissa);
-
- yasm_xfree(POT_TableN);
- yasm_xfree(POT_TableP);
-}
-/*@=globstate@*/
-
-static void
-floatnum_normalize(yasm_floatnum *flt)
-{
- long norm_amt;
-
- if (BitVector_is_empty(flt->mantissa)) {
- flt->exponent = 0;
- return;
- }
-
- /* Look for the highest set bit, shift to make it the MSB, and adjust
- * exponent. Don't let exponent go negative. */
- norm_amt = (MANT_BITS-1)-Set_Max(flt->mantissa);
- if (norm_amt > (long)flt->exponent)
- norm_amt = (long)flt->exponent;
- BitVector_Move_Left(flt->mantissa, (N_int)norm_amt);
- flt->exponent -= (unsigned short)norm_amt;
-}
-
-/* acc *= op */
-static void
-floatnum_mul(yasm_floatnum *acc, const yasm_floatnum *op)
-{
- long expon;
- wordptr product, op1, op2;
- long norm_amt;
-
- /* Compute the new sign */
- acc->sign ^= op->sign;
-
- /* Check for multiply by 0 */
- if (BitVector_is_empty(acc->mantissa) || BitVector_is_empty(op->mantissa)) {
- BitVector_Empty(acc->mantissa);
- acc->exponent = EXP_ZERO;
- return;
- }
-
- /* Add exponents, checking for overflow/underflow. */
- expon = (((int)acc->exponent)-EXP_BIAS) + (((int)op->exponent)-EXP_BIAS);
- expon += EXP_BIAS;
- if (expon > EXP_MAX) {
- /* Overflow; return infinity. */
- BitVector_Empty(acc->mantissa);
- acc->exponent = EXP_INF;
- return;
- } else if (expon < EXP_MIN) {
- /* Underflow; return zero. */
- BitVector_Empty(acc->mantissa);
- acc->exponent = EXP_ZERO;
- return;
- }
-
- /* Add one to the final exponent, as the multiply shifts one extra time. */
- acc->exponent = (unsigned short)(expon+1);
-
- /* Allocate space for the multiply result */
- product = BitVector_Create((N_int)((MANT_BITS+1)*2), FALSE);
-
- /* Allocate 1-bit-longer fields to force the operands to be unsigned */
- op1 = BitVector_Create((N_int)(MANT_BITS+1), FALSE);
- op2 = BitVector_Create((N_int)(MANT_BITS+1), FALSE);
-
- /* Make the operands unsigned after copying from original operands */
- BitVector_Copy(op1, acc->mantissa);
- BitVector_MSB(op1, 0);
- BitVector_Copy(op2, op->mantissa);
- BitVector_MSB(op2, 0);
-
- /* Compute the product of the mantissas */
- BitVector_Multiply(product, op1, op2);
-
- /* Normalize the product. Note: we know the product is non-zero because
- * both of the original operands were non-zero.
- *
- * Look for the highest set bit, shift to make it the MSB, and adjust
- * exponent. Don't let exponent go negative.
- */
- norm_amt = (MANT_BITS*2-1)-Set_Max(product);
- if (norm_amt > (long)acc->exponent)
- norm_amt = (long)acc->exponent;
- BitVector_Move_Left(product, (N_int)norm_amt);
- acc->exponent -= (unsigned short)norm_amt;
-
- /* Store the highest bits of the result */
- BitVector_Interval_Copy(acc->mantissa, product, 0, MANT_BITS, MANT_BITS);
-
- /* Free allocated variables */
- BitVector_Destroy(product);
- BitVector_Destroy(op1);
- BitVector_Destroy(op2);
-}
-
-yasm_floatnum *
-yasm_floatnum_create(const char *str)
-{
- yasm_floatnum *flt;
- int dec_exponent, dec_exp_add; /* decimal (powers of 10) exponent */
- int POT_index;
- wordptr operand[2];
- int sig_digits;
- int decimal_pt;
- boolean carry;
-
- flt = yasm_xmalloc(sizeof(yasm_floatnum));
-
- flt->mantissa = BitVector_Create(MANT_BITS, TRUE);
-
- /* allocate and initialize calculation variables */
- operand[0] = BitVector_Create(MANT_BITS, TRUE);
- operand[1] = BitVector_Create(MANT_BITS, TRUE);
- dec_exponent = 0;
- sig_digits = 0;
- decimal_pt = 1;
-
- /* set initial flags to 0 */
- flt->flags = 0;
-
- /* check for + or - character and skip */
- if (*str == '-') {
- flt->sign = 1;
- str++;
- } else if (*str == '+') {
- flt->sign = 0;
- str++;
- } else
- flt->sign = 0;
-
- /* eliminate any leading zeros (which do not count as significant digits) */
- while (*str == '0')
- str++;
-
- /* When we reach the end of the leading zeros, first check for a decimal
- * point. If the number is of the form "0---0.0000" we need to get rid
- * of the zeros after the decimal point and not count them as significant
- * digits.
- */
- if (*str == '.') {
- str++;
- while (*str == '0') {
- str++;
- dec_exponent--;
- }
- } else {
- /* The number is of the form "yyy.xxxx" (where y <> 0). */
- while (isdigit(*str)) {
- /* See if we've processed more than the max significant digits: */
- if (sig_digits < MANT_SIGDIGITS) {
- /* Multiply mantissa by 10 [x = (x<<1)+(x<<3)] */
- BitVector_shift_left(flt->mantissa, 0);
- BitVector_Copy(operand[0], flt->mantissa);
- BitVector_Move_Left(flt->mantissa, 2);
- carry = 0;
- BitVector_add(operand[1], operand[0], flt->mantissa, &carry);
-
- /* Add in current digit */
- BitVector_Empty(operand[0]);
- BitVector_Chunk_Store(operand[0], 4, 0, (N_long)(*str-'0'));
- carry = 0;
- BitVector_add(flt->mantissa, operand[1], operand[0], &carry);
- } else {
- /* Can't integrate more digits with mantissa, so instead just
- * raise by a power of ten.
- */
- dec_exponent++;
- }
- sig_digits++;
- str++;
- }
-
- if (*str == '.')
- str++;
- else
- decimal_pt = 0;
- }
-
- if (decimal_pt) {
- /* Process the digits to the right of the decimal point. */
- while (isdigit(*str)) {
- /* See if we've processed more than 19 significant digits: */
- if (sig_digits < 19) {
- /* Raise by a power of ten */
- dec_exponent--;
-
- /* Multiply mantissa by 10 [x = (x<<1)+(x<<3)] */
- BitVector_shift_left(flt->mantissa, 0);
- BitVector_Copy(operand[0], flt->mantissa);
- BitVector_Move_Left(flt->mantissa, 2);
- carry = 0;
- BitVector_add(operand[1], operand[0], flt->mantissa, &carry);
-
- /* Add in current digit */
- BitVector_Empty(operand[0]);
- BitVector_Chunk_Store(operand[0], 4, 0, (N_long)(*str-'0'));
- carry = 0;
- BitVector_add(flt->mantissa, operand[1], operand[0], &carry);
- }
- sig_digits++;
- str++;
- }
- }
-
- if (*str == 'e' || *str == 'E') {
- str++;
- /* We just saw the "E" character, now read in the exponent value and
- * add it into dec_exponent.
- */
- dec_exp_add = 0;
- sscanf(str, "%d", &dec_exp_add);
- dec_exponent += dec_exp_add;
- }
-
- /* Free calculation variables. */
- BitVector_Destroy(operand[1]);
- BitVector_Destroy(operand[0]);
-
- /* Normalize the number, checking for 0 first. */
- if (BitVector_is_empty(flt->mantissa)) {
- /* Mantissa is 0, zero exponent too. */
- flt->exponent = 0;
- /* Set zero flag so output functions don't see 0 value as underflow. */
- flt->flags |= FLAG_ISZERO;
- /* Return 0 value. */
- return flt;
- }
- /* Exponent if already norm. */
- flt->exponent = (unsigned short)(0x7FFF+(MANT_BITS-1));
- floatnum_normalize(flt);
-
- /* The number is normalized. Now multiply by 10 the number of times
- * specified in DecExponent. This uses the power of ten tables to speed
- * up this operation (and make it more accurate).
- */
- if (dec_exponent > 0) {
- POT_index = 0;
- /* Until we hit 1.0 or finish exponent or overflow */
- while ((POT_index < 14) && (dec_exponent != 0) &&
- (flt->exponent != EXP_INF)) {
- /* Find the first power of ten in the table which is just less than
- * the exponent.
- */
- while (dec_exponent < POT_TableP[POT_index].dec_exponent)
- POT_index++;
-
- if (POT_index < 14) {
- /* Subtract out what we're multiplying in from exponent */
- dec_exponent -= POT_TableP[POT_index].dec_exponent;
-
- /* Multiply by current power of 10 */
- floatnum_mul(flt, &POT_TableP[POT_index].f);
- }
- }
- } else if (dec_exponent < 0) {
- POT_index = 0;
- /* Until we hit 1.0 or finish exponent or underflow */
- while ((POT_index < 14) && (dec_exponent != 0) &&
- (flt->exponent != EXP_ZERO)) {
- /* Find the first power of ten in the table which is just less than
- * the exponent.
- */
- while (dec_exponent > POT_TableN[POT_index].dec_exponent)
- POT_index++;
-
- if (POT_index < 14) {
- /* Subtract out what we're multiplying in from exponent */
- dec_exponent -= POT_TableN[POT_index].dec_exponent;
-
- /* Multiply by current power of 10 */
- floatnum_mul(flt, &POT_TableN[POT_index].f);
- }
- }
- }
-
- /* Round the result. (Don't round underflow or overflow). Also don't
- * increment if this would cause the mantissa to wrap.
- */
- if ((flt->exponent != EXP_INF) && (flt->exponent != EXP_ZERO) &&
- !BitVector_is_full(flt->mantissa))
- BitVector_increment(flt->mantissa);
-
- return flt;
-}
-
-yasm_floatnum *
-yasm_floatnum_copy(const yasm_floatnum *flt)
-{
- yasm_floatnum *f = yasm_xmalloc(sizeof(yasm_floatnum));
-
- f->mantissa = BitVector_Clone(flt->mantissa);
- f->exponent = flt->exponent;
- f->sign = flt->sign;
- f->flags = flt->flags;
-
- return f;
-}
-
-void
-yasm_floatnum_destroy(yasm_floatnum *flt)
-{
- BitVector_Destroy(flt->mantissa);
- yasm_xfree(flt);
-}
-
-int
-yasm_floatnum_calc(yasm_floatnum *acc, yasm_expr_op op,
- /*@unused@*/ yasm_floatnum *operand)
-{
- if (op != YASM_EXPR_NEG) {
- yasm_error_set(YASM_ERROR_FLOATING_POINT,
- N_("Unsupported floating-point arithmetic operation"));
- return 1;
- }
- acc->sign ^= 1;
- return 0;
-}
-
-int
-yasm_floatnum_get_int(const yasm_floatnum *flt, unsigned long *ret_val)
-{
- unsigned char t[4];
-
- if (yasm_floatnum_get_sized(flt, t, 4, 32, 0, 0, 0)) {
- *ret_val = 0xDEADBEEFUL; /* Obviously incorrect return value */
- return 1;
- }
-
- YASM_LOAD_32_L(*ret_val, &t[0]);
- return 0;
-}
-
-/* Function used by conversion routines to actually perform the conversion.
- *
- * ptr -> the array to return the little-endian floating point value into.
- * flt -> the floating point value to convert.
- * byte_size -> the size in bytes of the output format.
- * mant_bits -> the size in bits of the output mantissa.
- * implicit1 -> does the output format have an implicit 1? 1=yes, 0=no.
- * exp_bits -> the size in bits of the output exponent.
- *
- * Returns 0 on success, 1 if overflow, -1 if underflow.
- */
-static int
-floatnum_get_common(const yasm_floatnum *flt, /*@out@*/ unsigned char *ptr,
- N_int byte_size, N_int mant_bits, int implicit1,
- N_int exp_bits)
-{
- long exponent = (long)flt->exponent;
- wordptr output;
- charptr buf;
- unsigned int len;
- unsigned int overflow = 0, underflow = 0;
- int retval = 0;
- long exp_bias = (1<<(exp_bits-1))-1;
- long exp_inf = (1<<exp_bits)-1;
-
- output = BitVector_Create(byte_size*8, TRUE);
-
- /* copy mantissa */
- BitVector_Interval_Copy(output, flt->mantissa, 0,
- (N_int)((MANT_BITS-implicit1)-mant_bits),
- mant_bits);
-
- /* round mantissa */
- if (BitVector_bit_test(flt->mantissa, (MANT_BITS-implicit1)-(mant_bits+1)))
- BitVector_increment(output);
-
- if (BitVector_bit_test(output, mant_bits)) {
- /* overflowed, so zero mantissa (and set explicit bit if necessary) */
- BitVector_Empty(output);
- BitVector_Bit_Copy(output, mant_bits-1, !implicit1);
- /* and up the exponent (checking for overflow) */
- if (exponent+1 >= EXP_INF)
- overflow = 1;
- else
- exponent++;
- }
-
- /* adjust the exponent to the output bias, checking for overflow */
- exponent -= EXP_BIAS-exp_bias;
- if (exponent >= exp_inf)
- overflow = 1;
- else if (exponent <= 0)
- underflow = 1;
-
- /* underflow and overflow both set!? */
- if (underflow && overflow)
- yasm_internal_error(N_("Both underflow and overflow set"));
-
- /* check for underflow or overflow and set up appropriate output */
- if (underflow) {
- BitVector_Empty(output);
- exponent = 0;
- if (!(flt->flags & FLAG_ISZERO))
- retval = -1;
- } else if (overflow) {
- BitVector_Empty(output);
- exponent = exp_inf;
- retval = 1;
- }
-
- /* move exponent into place */
- BitVector_Chunk_Store(output, exp_bits, mant_bits, (N_long)exponent);
-
- /* merge in sign bit */
- BitVector_Bit_Copy(output, byte_size*8-1, flt->sign);
-
- /* get little-endian bytes */
- buf = BitVector_Block_Read(output, &len);
- if (len < byte_size)
- yasm_internal_error(
- N_("Byte length of BitVector does not match bit length"));
-
- /* copy to output */
- memcpy(ptr, buf, byte_size*sizeof(unsigned char));
-
- /* free allocated resources */
- yasm_xfree(buf);
-
- BitVector_Destroy(output);
-
- return retval;
-}
-
-/* IEEE-754r "half precision" format:
- * 16 bits:
- * 15 9 Bit 0
- * | | |
- * seee eemm mmmm mmmm
- *
- * e = bias 15 exponent
- * s = sign bit
- * m = mantissa bits, bit 10 is an implied one bit.
- *
- * IEEE-754 (Intel) "single precision" format:
- * 32 bits:
- * Bit 31 Bit 22 Bit 0
- * | | |
- * seeeeeee emmmmmmm mmmmmmmm mmmmmmmm
- *
- * e = bias 127 exponent
- * s = sign bit
- * m = mantissa bits, bit 23 is an implied one bit.
- *
- * IEEE-754 (Intel) "double precision" format:
- * 64 bits:
- * bit 63 bit 51 bit 0
- * | | |
- * seeeeeee eeeemmmm mmmmmmmm mmmmmmmm mmmmmmmm mmmmmmmm mmmmmmmm mmmmmmmm
- *
- * e = bias 1023 exponent.
- * s = sign bit.
- * m = mantissa bits. Bit 52 is an implied one bit.
- *
- * IEEE-754 (Intel) "extended precision" format:
- * 80 bits:
- * bit 79 bit 63 bit 0
- * | | |
- * seeeeeee eeeeeeee mmmmmmmm m...m m...m m...m m...m m...m
- *
- * e = bias 16383 exponent
- * m = 64 bit mantissa with NO implied bit!
- * s = sign (for mantissa)
- */
-int
-yasm_floatnum_get_sized(const yasm_floatnum *flt, unsigned char *ptr,
- size_t destsize, size_t valsize, size_t shift,
- int bigendian, int warn)
-{
- int retval;
- if (destsize*8 != valsize || shift>0 || bigendian) {
- /* TODO */
- yasm_internal_error(N_("unsupported floatnum functionality"));
- }
- switch (destsize) {
- case 2:
- retval = floatnum_get_common(flt, ptr, 2, 10, 1, 5);
- break;
- case 4:
- retval = floatnum_get_common(flt, ptr, 4, 23, 1, 8);
- break;
- case 8:
- retval = floatnum_get_common(flt, ptr, 8, 52, 1, 11);
- break;
- case 10:
- retval = floatnum_get_common(flt, ptr, 10, 64, 0, 15);
- break;
- default:
- yasm_internal_error(N_("Invalid float conversion size"));
- /*@notreached@*/
- return 1;
- }
- if (warn) {
- if (retval < 0)
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("underflow in floating point expression"));
- else if (retval > 0)
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("overflow in floating point expression"));
- }
- return retval;
-}
-
-/* 1 if the size is valid, 0 if it isn't */
-int
-yasm_floatnum_check_size(/*@unused@*/ const yasm_floatnum *flt, size_t size)
-{
- switch (size) {
- case 16:
- case 32:
- case 64:
- case 80:
- return 1;
- default:
- return 0;
- }
-}
-
-void
-yasm_floatnum_print(const yasm_floatnum *flt, FILE *f)
-{
- unsigned char out[10];
- unsigned char *str;
- int i;
-
- /* Internal format */
- str = BitVector_to_Hex(flt->mantissa);
- fprintf(f, "%c %s *2^%04x\n", flt->sign?'-':'+', (char *)str,
- flt->exponent);
- yasm_xfree(str);
-
- /* 32-bit (single precision) format */
- fprintf(f, "32-bit: %d: ",
- yasm_floatnum_get_sized(flt, out, 4, 32, 0, 0, 0));
- for (i=0; i<4; i++)
- fprintf(f, "%02x ", out[i]);
- fprintf(f, "\n");
-
- /* 64-bit (double precision) format */
- fprintf(f, "64-bit: %d: ",
- yasm_floatnum_get_sized(flt, out, 8, 64, 0, 0, 0));
- for (i=0; i<8; i++)
- fprintf(f, "%02x ", out[i]);
- fprintf(f, "\n");
-
- /* 80-bit (extended precision) format */
- fprintf(f, "80-bit: %d: ",
- yasm_floatnum_get_sized(flt, out, 10, 80, 0, 0, 0));
- for (i=0; i<10; i++)
- fprintf(f, "%02x ", out[i]);
- fprintf(f, "\n");
-}
+/*
+ * Floating point number functions.
+ *
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Based on public-domain x86 assembly code by Randall Hyde (8/28/91).
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "util.h"
+
+#include <ctype.h>
+
+#include "coretype.h"
+#include "bitvect.h"
+#include "file.h"
+
+#include "errwarn.h"
+#include "floatnum.h"
+
+
+/* 97-bit internal floating point format:
+ * 0000000s eeeeeeee eeeeeeee m.....................................m
+ * Sign exponent mantissa (80 bits)
+ * 79 0
+ *
+ * Only L.O. bit of Sign byte is significant. The rest is zero.
+ * Exponent is bias 32767.
+ * Mantissa does NOT have an implied one bit (it's explicit).
+ */
+struct yasm_floatnum {
+ /*@only@*/ wordptr mantissa; /* Allocated to MANT_BITS bits */
+ unsigned short exponent;
+ unsigned char sign;
+ unsigned char flags;
+};
+
+/* constants describing parameters of internal floating point format */
+#define MANT_BITS 80
+#define MANT_BYTES 10
+#define MANT_SIGDIGITS 24
+#define EXP_BIAS 0x7FFF
+#define EXP_INF 0xFFFF
+#define EXP_MAX 0xFFFE
+#define EXP_MIN 1
+#define EXP_ZERO 0
+
+/* Flag settings for flags field */
+#define FLAG_ISZERO 1<<0
+
+/* Note this structure integrates the floatnum structure */
+typedef struct POT_Entry_s {
+ yasm_floatnum f;
+ int dec_exponent;
+} POT_Entry;
+
+/* "Source" for POT_Entry. */
+typedef struct POT_Entry_Source_s {
+ unsigned char mantissa[MANT_BYTES]; /* little endian mantissa */
+ unsigned short exponent; /* Bias 32767 exponent */
+} POT_Entry_Source;
+
+/* Power of ten tables used by the floating point I/O routines.
+ * The POT_Table? arrays are built from the POT_Table?_Source arrays at
+ * runtime by POT_Table_Init().
+ */
+
+/* This table contains the powers of ten raised to negative powers of two:
+ *
+ * entry[12-n] = 10 ** (-2 ** n) for 0 <= n <= 12.
+ * entry[13] = 1.0
+ */
+static /*@only@*/ POT_Entry *POT_TableN;
+static POT_Entry_Source POT_TableN_Source[] = {
+ {{0xe3,0x2d,0xde,0x9f,0xce,0xd2,0xc8,0x04,0xdd,0xa6},0x4ad8}, /* 1e-4096 */
+ {{0x25,0x49,0xe4,0x2d,0x36,0x34,0x4f,0x53,0xae,0xce},0x656b}, /* 1e-2048 */
+ {{0xa6,0x87,0xbd,0xc0,0x57,0xda,0xa5,0x82,0xa6,0xa2},0x72b5}, /* 1e-1024 */
+ {{0x33,0x71,0x1c,0xd2,0x23,0xdb,0x32,0xee,0x49,0x90},0x795a}, /* 1e-512 */
+ {{0x91,0xfa,0x39,0x19,0x7a,0x63,0x25,0x43,0x31,0xc0},0x7cac}, /* 1e-256 */
+ {{0x7d,0xac,0xa0,0xe4,0xbc,0x64,0x7c,0x46,0xd0,0xdd},0x7e55}, /* 1e-128 */
+ {{0x24,0x3f,0xa5,0xe9,0x39,0xa5,0x27,0xea,0x7f,0xa8},0x7f2a}, /* 1e-64 */
+ {{0xde,0x67,0xba,0x94,0x39,0x45,0xad,0x1e,0xb1,0xcf},0x7f94}, /* 1e-32 */
+ {{0x2f,0x4c,0x5b,0xe1,0x4d,0xc4,0xbe,0x94,0x95,0xe6},0x7fc9}, /* 1e-16 */
+ {{0xc2,0xfd,0xfc,0xce,0x61,0x84,0x11,0x77,0xcc,0xab},0x7fe4}, /* 1e-8 */
+ {{0xc3,0xd3,0x2b,0x65,0x19,0xe2,0x58,0x17,0xb7,0xd1},0x7ff1}, /* 1e-4 */
+ {{0x71,0x3d,0x0a,0xd7,0xa3,0x70,0x3d,0x0a,0xd7,0xa3},0x7ff8}, /* 1e-2 */
+ {{0xcd,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc},0x7ffb}, /* 1e-1 */
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80},0x7fff}, /* 1e-0 */
+};
+
+/* This table contains the powers of ten raised to positive powers of two:
+ *
+ * entry[12-n] = 10 ** (2 ** n) for 0 <= n <= 12.
+ * entry[13] = 1.0
+ * entry[-1] = entry[0];
+ *
+ * There is a -1 entry since it is possible for the algorithm to back up
+ * before the table. This -1 entry is created at runtime by duplicating the
+ * 0 entry.
+ */
+static /*@only@*/ POT_Entry *POT_TableP;
+static POT_Entry_Source POT_TableP_Source[] = {
+ {{0x4c,0xc9,0x9a,0x97,0x20,0x8a,0x02,0x52,0x60,0xc4},0xb525}, /* 1e+4096 */
+ {{0x4d,0xa7,0xe4,0x5d,0x3d,0xc5,0x5d,0x3b,0x8b,0x9e},0x9a92}, /* 1e+2048 */
+ {{0x0d,0x65,0x17,0x0c,0x75,0x81,0x86,0x75,0x76,0xc9},0x8d48}, /* 1e+1024 */
+ {{0x65,0xcc,0xc6,0x91,0x0e,0xa6,0xae,0xa0,0x19,0xe3},0x86a3}, /* 1e+512 */
+ {{0xbc,0xdd,0x8d,0xde,0xf9,0x9d,0xfb,0xeb,0x7e,0xaa},0x8351}, /* 1e+256 */
+ {{0x6f,0xc6,0xdf,0x8c,0xe9,0x80,0xc9,0x47,0xba,0x93},0x81a8}, /* 1e+128 */
+ {{0xbf,0x3c,0xd5,0xa6,0xcf,0xff,0x49,0x1f,0x78,0xc2},0x80d3}, /* 1e+64 */
+ {{0x20,0xf0,0x9d,0xb5,0x70,0x2b,0xa8,0xad,0xc5,0x9d},0x8069}, /* 1e+32 */
+ {{0x00,0x00,0x00,0x00,0x00,0x04,0xbf,0xc9,0x1b,0x8e},0x8034}, /* 1e+16 */
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xbc,0xbe},0x8019}, /* 1e+8 */
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x9c},0x800c}, /* 1e+4 */
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc8},0x8005}, /* 1e+2 */
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0},0x8002}, /* 1e+1 */
+ {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80},0x7fff}, /* 1e+0 */
+};
+
+
+static void
+POT_Table_Init_Entry(/*@out@*/ POT_Entry *e, POT_Entry_Source *s, int dec_exp)
+{
+ /* Save decimal exponent */
+ e->dec_exponent = dec_exp;
+
+ /* Initialize mantissa */
+ e->f.mantissa = BitVector_Create(MANT_BITS, FALSE);
+ BitVector_Block_Store(e->f.mantissa, s->mantissa, MANT_BYTES);
+
+ /* Initialize exponent */
+ e->f.exponent = s->exponent;
+
+ /* Set sign to 0 (positive) */
+ e->f.sign = 0;
+
+ /* Clear flags */
+ e->f.flags = 0;
+}
+
+/*@-compdef@*/
+void
+yasm_floatnum_initialize(void)
+/*@globals undef POT_TableN, undef POT_TableP, POT_TableP_Source,
+ POT_TableN_Source @*/
+{
+ int dec_exp = 1;
+ int i;
+
+ /* Allocate space for two POT tables */
+ POT_TableN = yasm_xmalloc(14*sizeof(POT_Entry));
+ POT_TableP = yasm_xmalloc(15*sizeof(POT_Entry)); /* note 1 extra for -1 */
+
+ /* Initialize entry[0..12] */
+ for (i=12; i>=0; i--) {
+ POT_Table_Init_Entry(&POT_TableN[i], &POT_TableN_Source[i], 0-dec_exp);
+ POT_Table_Init_Entry(&POT_TableP[i+1], &POT_TableP_Source[i], dec_exp);
+ dec_exp *= 2; /* Update decimal exponent */
+ }
+
+ /* Initialize entry[13] */
+ POT_Table_Init_Entry(&POT_TableN[13], &POT_TableN_Source[13], 0);
+ POT_Table_Init_Entry(&POT_TableP[14], &POT_TableP_Source[13], 0);
+
+ /* Initialize entry[-1] for POT_TableP */
+ POT_Table_Init_Entry(&POT_TableP[0], &POT_TableP_Source[0], 4096);
+
+ /* Offset POT_TableP so that [0] becomes [-1] */
+ POT_TableP++;
+}
+/*@=compdef@*/
+
+/*@-globstate@*/
+void
+yasm_floatnum_cleanup(void)
+{
+ int i;
+
+ /* Un-offset POT_TableP */
+ POT_TableP--;
+
+ for (i=0; i<14; i++) {
+ BitVector_Destroy(POT_TableN[i].f.mantissa);
+ BitVector_Destroy(POT_TableP[i].f.mantissa);
+ }
+ BitVector_Destroy(POT_TableP[14].f.mantissa);
+
+ yasm_xfree(POT_TableN);
+ yasm_xfree(POT_TableP);
+}
+/*@=globstate@*/
+
+static void
+floatnum_normalize(yasm_floatnum *flt)
+{
+ long norm_amt;
+
+ if (BitVector_is_empty(flt->mantissa)) {
+ flt->exponent = 0;
+ return;
+ }
+
+ /* Look for the highest set bit, shift to make it the MSB, and adjust
+ * exponent. Don't let exponent go negative. */
+ norm_amt = (MANT_BITS-1)-Set_Max(flt->mantissa);
+ if (norm_amt > (long)flt->exponent)
+ norm_amt = (long)flt->exponent;
+ BitVector_Move_Left(flt->mantissa, (N_int)norm_amt);
+ flt->exponent -= (unsigned short)norm_amt;
+}
+
+/* acc *= op */
+static void
+floatnum_mul(yasm_floatnum *acc, const yasm_floatnum *op)
+{
+ long expon;
+ wordptr product, op1, op2;
+ long norm_amt;
+
+ /* Compute the new sign */
+ acc->sign ^= op->sign;
+
+ /* Check for multiply by 0 */
+ if (BitVector_is_empty(acc->mantissa) || BitVector_is_empty(op->mantissa)) {
+ BitVector_Empty(acc->mantissa);
+ acc->exponent = EXP_ZERO;
+ return;
+ }
+
+ /* Add exponents, checking for overflow/underflow. */
+ expon = (((int)acc->exponent)-EXP_BIAS) + (((int)op->exponent)-EXP_BIAS);
+ expon += EXP_BIAS;
+ if (expon > EXP_MAX) {
+ /* Overflow; return infinity. */
+ BitVector_Empty(acc->mantissa);
+ acc->exponent = EXP_INF;
+ return;
+ } else if (expon < EXP_MIN) {
+ /* Underflow; return zero. */
+ BitVector_Empty(acc->mantissa);
+ acc->exponent = EXP_ZERO;
+ return;
+ }
+
+ /* Add one to the final exponent, as the multiply shifts one extra time. */
+ acc->exponent = (unsigned short)(expon+1);
+
+ /* Allocate space for the multiply result */
+ product = BitVector_Create((N_int)((MANT_BITS+1)*2), FALSE);
+
+ /* Allocate 1-bit-longer fields to force the operands to be unsigned */
+ op1 = BitVector_Create((N_int)(MANT_BITS+1), FALSE);
+ op2 = BitVector_Create((N_int)(MANT_BITS+1), FALSE);
+
+ /* Make the operands unsigned after copying from original operands */
+ BitVector_Copy(op1, acc->mantissa);
+ BitVector_MSB(op1, 0);
+ BitVector_Copy(op2, op->mantissa);
+ BitVector_MSB(op2, 0);
+
+ /* Compute the product of the mantissas */
+ BitVector_Multiply(product, op1, op2);
+
+ /* Normalize the product. Note: we know the product is non-zero because
+ * both of the original operands were non-zero.
+ *
+ * Look for the highest set bit, shift to make it the MSB, and adjust
+ * exponent. Don't let exponent go negative.
+ */
+ norm_amt = (MANT_BITS*2-1)-Set_Max(product);
+ if (norm_amt > (long)acc->exponent)
+ norm_amt = (long)acc->exponent;
+ BitVector_Move_Left(product, (N_int)norm_amt);
+ acc->exponent -= (unsigned short)norm_amt;
+
+ /* Store the highest bits of the result */
+ BitVector_Interval_Copy(acc->mantissa, product, 0, MANT_BITS, MANT_BITS);
+
+ /* Free allocated variables */
+ BitVector_Destroy(product);
+ BitVector_Destroy(op1);
+ BitVector_Destroy(op2);
+}
+
+yasm_floatnum *
+yasm_floatnum_create(const char *str)
+{
+ yasm_floatnum *flt;
+ int dec_exponent, dec_exp_add; /* decimal (powers of 10) exponent */
+ int POT_index;
+ wordptr operand[2];
+ int sig_digits;
+ int decimal_pt;
+ boolean carry;
+
+ flt = yasm_xmalloc(sizeof(yasm_floatnum));
+
+ flt->mantissa = BitVector_Create(MANT_BITS, TRUE);
+
+ /* allocate and initialize calculation variables */
+ operand[0] = BitVector_Create(MANT_BITS, TRUE);
+ operand[1] = BitVector_Create(MANT_BITS, TRUE);
+ dec_exponent = 0;
+ sig_digits = 0;
+ decimal_pt = 1;
+
+ /* set initial flags to 0 */
+ flt->flags = 0;
+
+ /* check for + or - character and skip */
+ if (*str == '-') {
+ flt->sign = 1;
+ str++;
+ } else if (*str == '+') {
+ flt->sign = 0;
+ str++;
+ } else
+ flt->sign = 0;
+
+ /* eliminate any leading zeros (which do not count as significant digits) */
+ while (*str == '0')
+ str++;
+
+ /* When we reach the end of the leading zeros, first check for a decimal
+ * point. If the number is of the form "0---0.0000" we need to get rid
+ * of the zeros after the decimal point and not count them as significant
+ * digits.
+ */
+ if (*str == '.') {
+ str++;
+ while (*str == '0') {
+ str++;
+ dec_exponent--;
+ }
+ } else {
+ /* The number is of the form "yyy.xxxx" (where y <> 0). */
+ while (isdigit(*str)) {
+ /* See if we've processed more than the max significant digits: */
+ if (sig_digits < MANT_SIGDIGITS) {
+ /* Multiply mantissa by 10 [x = (x<<1)+(x<<3)] */
+ BitVector_shift_left(flt->mantissa, 0);
+ BitVector_Copy(operand[0], flt->mantissa);
+ BitVector_Move_Left(flt->mantissa, 2);
+ carry = 0;
+ BitVector_add(operand[1], operand[0], flt->mantissa, &carry);
+
+ /* Add in current digit */
+ BitVector_Empty(operand[0]);
+ BitVector_Chunk_Store(operand[0], 4, 0, (N_long)(*str-'0'));
+ carry = 0;
+ BitVector_add(flt->mantissa, operand[1], operand[0], &carry);
+ } else {
+ /* Can't integrate more digits with mantissa, so instead just
+ * raise by a power of ten.
+ */
+ dec_exponent++;
+ }
+ sig_digits++;
+ str++;
+ }
+
+ if (*str == '.')
+ str++;
+ else
+ decimal_pt = 0;
+ }
+
+ if (decimal_pt) {
+ /* Process the digits to the right of the decimal point. */
+ while (isdigit(*str)) {
+ /* See if we've processed more than 19 significant digits: */
+ if (sig_digits < 19) {
+ /* Raise by a power of ten */
+ dec_exponent--;
+
+ /* Multiply mantissa by 10 [x = (x<<1)+(x<<3)] */
+ BitVector_shift_left(flt->mantissa, 0);
+ BitVector_Copy(operand[0], flt->mantissa);
+ BitVector_Move_Left(flt->mantissa, 2);
+ carry = 0;
+ BitVector_add(operand[1], operand[0], flt->mantissa, &carry);
+
+ /* Add in current digit */
+ BitVector_Empty(operand[0]);
+ BitVector_Chunk_Store(operand[0], 4, 0, (N_long)(*str-'0'));
+ carry = 0;
+ BitVector_add(flt->mantissa, operand[1], operand[0], &carry);
+ }
+ sig_digits++;
+ str++;
+ }
+ }
+
+ if (*str == 'e' || *str == 'E') {
+ str++;
+ /* We just saw the "E" character, now read in the exponent value and
+ * add it into dec_exponent.
+ */
+ dec_exp_add = 0;
+ sscanf(str, "%d", &dec_exp_add);
+ dec_exponent += dec_exp_add;
+ }
+
+ /* Free calculation variables. */
+ BitVector_Destroy(operand[1]);
+ BitVector_Destroy(operand[0]);
+
+ /* Normalize the number, checking for 0 first. */
+ if (BitVector_is_empty(flt->mantissa)) {
+ /* Mantissa is 0, zero exponent too. */
+ flt->exponent = 0;
+ /* Set zero flag so output functions don't see 0 value as underflow. */
+ flt->flags |= FLAG_ISZERO;
+ /* Return 0 value. */
+ return flt;
+ }
+ /* Exponent if already norm. */
+ flt->exponent = (unsigned short)(0x7FFF+(MANT_BITS-1));
+ floatnum_normalize(flt);
+
+ /* The number is normalized. Now multiply by 10 the number of times
+ * specified in DecExponent. This uses the power of ten tables to speed
+ * up this operation (and make it more accurate).
+ */
+ if (dec_exponent > 0) {
+ POT_index = 0;
+ /* Until we hit 1.0 or finish exponent or overflow */
+ while ((POT_index < 14) && (dec_exponent != 0) &&
+ (flt->exponent != EXP_INF)) {
+ /* Find the first power of ten in the table which is just less than
+ * the exponent.
+ */
+ while (dec_exponent < POT_TableP[POT_index].dec_exponent)
+ POT_index++;
+
+ if (POT_index < 14) {
+ /* Subtract out what we're multiplying in from exponent */
+ dec_exponent -= POT_TableP[POT_index].dec_exponent;
+
+ /* Multiply by current power of 10 */
+ floatnum_mul(flt, &POT_TableP[POT_index].f);
+ }
+ }
+ } else if (dec_exponent < 0) {
+ POT_index = 0;
+ /* Until we hit 1.0 or finish exponent or underflow */
+ while ((POT_index < 14) && (dec_exponent != 0) &&
+ (flt->exponent != EXP_ZERO)) {
+ /* Find the first power of ten in the table which is just less than
+ * the exponent.
+ */
+ while (dec_exponent > POT_TableN[POT_index].dec_exponent)
+ POT_index++;
+
+ if (POT_index < 14) {
+ /* Subtract out what we're multiplying in from exponent */
+ dec_exponent -= POT_TableN[POT_index].dec_exponent;
+
+ /* Multiply by current power of 10 */
+ floatnum_mul(flt, &POT_TableN[POT_index].f);
+ }
+ }
+ }
+
+ /* Round the result. (Don't round underflow or overflow). Also don't
+ * increment if this would cause the mantissa to wrap.
+ */
+ if ((flt->exponent != EXP_INF) && (flt->exponent != EXP_ZERO) &&
+ !BitVector_is_full(flt->mantissa))
+ BitVector_increment(flt->mantissa);
+
+ return flt;
+}
+
+yasm_floatnum *
+yasm_floatnum_copy(const yasm_floatnum *flt)
+{
+ yasm_floatnum *f = yasm_xmalloc(sizeof(yasm_floatnum));
+
+ f->mantissa = BitVector_Clone(flt->mantissa);
+ f->exponent = flt->exponent;
+ f->sign = flt->sign;
+ f->flags = flt->flags;
+
+ return f;
+}
+
+void
+yasm_floatnum_destroy(yasm_floatnum *flt)
+{
+ BitVector_Destroy(flt->mantissa);
+ yasm_xfree(flt);
+}
+
+int
+yasm_floatnum_calc(yasm_floatnum *acc, yasm_expr_op op,
+ /*@unused@*/ yasm_floatnum *operand)
+{
+ if (op != YASM_EXPR_NEG) {
+ yasm_error_set(YASM_ERROR_FLOATING_POINT,
+ N_("Unsupported floating-point arithmetic operation"));
+ return 1;
+ }
+ acc->sign ^= 1;
+ return 0;
+}
+
+int
+yasm_floatnum_get_int(const yasm_floatnum *flt, unsigned long *ret_val)
+{
+ unsigned char t[4];
+
+ if (yasm_floatnum_get_sized(flt, t, 4, 32, 0, 0, 0)) {
+ *ret_val = 0xDEADBEEFUL; /* Obviously incorrect return value */
+ return 1;
+ }
+
+ YASM_LOAD_32_L(*ret_val, &t[0]);
+ return 0;
+}
+
+/* Function used by conversion routines to actually perform the conversion.
+ *
+ * ptr -> the array to return the little-endian floating point value into.
+ * flt -> the floating point value to convert.
+ * byte_size -> the size in bytes of the output format.
+ * mant_bits -> the size in bits of the output mantissa.
+ * implicit1 -> does the output format have an implicit 1? 1=yes, 0=no.
+ * exp_bits -> the size in bits of the output exponent.
+ *
+ * Returns 0 on success, 1 if overflow, -1 if underflow.
+ */
+static int
+floatnum_get_common(const yasm_floatnum *flt, /*@out@*/ unsigned char *ptr,
+ N_int byte_size, N_int mant_bits, int implicit1,
+ N_int exp_bits)
+{
+ long exponent = (long)flt->exponent;
+ wordptr output;
+ charptr buf;
+ unsigned int len;
+ unsigned int overflow = 0, underflow = 0;
+ int retval = 0;
+ long exp_bias = (1<<(exp_bits-1))-1;
+ long exp_inf = (1<<exp_bits)-1;
+
+ output = BitVector_Create(byte_size*8, TRUE);
+
+ /* copy mantissa */
+ BitVector_Interval_Copy(output, flt->mantissa, 0,
+ (N_int)((MANT_BITS-implicit1)-mant_bits),
+ mant_bits);
+
+ /* round mantissa */
+ if (BitVector_bit_test(flt->mantissa, (MANT_BITS-implicit1)-(mant_bits+1)))
+ BitVector_increment(output);
+
+ if (BitVector_bit_test(output, mant_bits)) {
+ /* overflowed, so zero mantissa (and set explicit bit if necessary) */
+ BitVector_Empty(output);
+ BitVector_Bit_Copy(output, mant_bits-1, !implicit1);
+ /* and up the exponent (checking for overflow) */
+ if (exponent+1 >= EXP_INF)
+ overflow = 1;
+ else
+ exponent++;
+ }
+
+ /* adjust the exponent to the output bias, checking for overflow */
+ exponent -= EXP_BIAS-exp_bias;
+ if (exponent >= exp_inf)
+ overflow = 1;
+ else if (exponent <= 0)
+ underflow = 1;
+
+ /* underflow and overflow both set!? */
+ if (underflow && overflow)
+ yasm_internal_error(N_("Both underflow and overflow set"));
+
+ /* check for underflow or overflow and set up appropriate output */
+ if (underflow) {
+ BitVector_Empty(output);
+ exponent = 0;
+ if (!(flt->flags & FLAG_ISZERO))
+ retval = -1;
+ } else if (overflow) {
+ BitVector_Empty(output);
+ exponent = exp_inf;
+ retval = 1;
+ }
+
+ /* move exponent into place */
+ BitVector_Chunk_Store(output, exp_bits, mant_bits, (N_long)exponent);
+
+ /* merge in sign bit */
+ BitVector_Bit_Copy(output, byte_size*8-1, flt->sign);
+
+ /* get little-endian bytes */
+ buf = BitVector_Block_Read(output, &len);
+ if (len < byte_size)
+ yasm_internal_error(
+ N_("Byte length of BitVector does not match bit length"));
+
+ /* copy to output */
+ memcpy(ptr, buf, byte_size*sizeof(unsigned char));
+
+ /* free allocated resources */
+ yasm_xfree(buf);
+
+ BitVector_Destroy(output);
+
+ return retval;
+}
+
+/* IEEE-754r "half precision" format:
+ * 16 bits:
+ * 15 9 Bit 0
+ * | | |
+ * seee eemm mmmm mmmm
+ *
+ * e = bias 15 exponent
+ * s = sign bit
+ * m = mantissa bits, bit 10 is an implied one bit.
+ *
+ * IEEE-754 (Intel) "single precision" format:
+ * 32 bits:
+ * Bit 31 Bit 22 Bit 0
+ * | | |
+ * seeeeeee emmmmmmm mmmmmmmm mmmmmmmm
+ *
+ * e = bias 127 exponent
+ * s = sign bit
+ * m = mantissa bits, bit 23 is an implied one bit.
+ *
+ * IEEE-754 (Intel) "double precision" format:
+ * 64 bits:
+ * bit 63 bit 51 bit 0
+ * | | |
+ * seeeeeee eeeemmmm mmmmmmmm mmmmmmmm mmmmmmmm mmmmmmmm mmmmmmmm mmmmmmmm
+ *
+ * e = bias 1023 exponent.
+ * s = sign bit.
+ * m = mantissa bits. Bit 52 is an implied one bit.
+ *
+ * IEEE-754 (Intel) "extended precision" format:
+ * 80 bits:
+ * bit 79 bit 63 bit 0
+ * | | |
+ * seeeeeee eeeeeeee mmmmmmmm m...m m...m m...m m...m m...m
+ *
+ * e = bias 16383 exponent
+ * m = 64 bit mantissa with NO implied bit!
+ * s = sign (for mantissa)
+ */
+int
+yasm_floatnum_get_sized(const yasm_floatnum *flt, unsigned char *ptr,
+ size_t destsize, size_t valsize, size_t shift,
+ int bigendian, int warn)
+{
+ int retval;
+ if (destsize*8 != valsize || shift>0 || bigendian) {
+ /* TODO */
+ yasm_internal_error(N_("unsupported floatnum functionality"));
+ }
+ switch (destsize) {
+ case 2:
+ retval = floatnum_get_common(flt, ptr, 2, 10, 1, 5);
+ break;
+ case 4:
+ retval = floatnum_get_common(flt, ptr, 4, 23, 1, 8);
+ break;
+ case 8:
+ retval = floatnum_get_common(flt, ptr, 8, 52, 1, 11);
+ break;
+ case 10:
+ retval = floatnum_get_common(flt, ptr, 10, 64, 0, 15);
+ break;
+ default:
+ yasm_internal_error(N_("Invalid float conversion size"));
+ /*@notreached@*/
+ return 1;
+ }
+ if (warn) {
+ if (retval < 0)
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("underflow in floating point expression"));
+ else if (retval > 0)
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("overflow in floating point expression"));
+ }
+ return retval;
+}
+
+/* 1 if the size is valid, 0 if it isn't */
+int
+yasm_floatnum_check_size(/*@unused@*/ const yasm_floatnum *flt, size_t size)
+{
+ switch (size) {
+ case 16:
+ case 32:
+ case 64:
+ case 80:
+ return 1;
+ default:
+ return 0;
+ }
+}
+
+void
+yasm_floatnum_print(const yasm_floatnum *flt, FILE *f)
+{
+ unsigned char out[10];
+ unsigned char *str;
+ int i;
+
+ /* Internal format */
+ str = BitVector_to_Hex(flt->mantissa);
+ fprintf(f, "%c %s *2^%04x\n", flt->sign?'-':'+', (char *)str,
+ flt->exponent);
+ yasm_xfree(str);
+
+ /* 32-bit (single precision) format */
+ fprintf(f, "32-bit: %d: ",
+ yasm_floatnum_get_sized(flt, out, 4, 32, 0, 0, 0));
+ for (i=0; i<4; i++)
+ fprintf(f, "%02x ", out[i]);
+ fprintf(f, "\n");
+
+ /* 64-bit (double precision) format */
+ fprintf(f, "64-bit: %d: ",
+ yasm_floatnum_get_sized(flt, out, 8, 64, 0, 0, 0));
+ for (i=0; i<8; i++)
+ fprintf(f, "%02x ", out[i]);
+ fprintf(f, "\n");
+
+ /* 80-bit (extended precision) format */
+ fprintf(f, "80-bit: %d: ",
+ yasm_floatnum_get_sized(flt, out, 10, 80, 0, 0, 0));
+ for (i=0; i<10; i++)
+ fprintf(f, "%02x ", out[i]);
+ fprintf(f, "\n");
+}
diff --git a/contrib/tools/yasm/libyasm/floatnum.h b/contrib/tools/yasm/libyasm/floatnum.h
index 78739519c4..d2c7042097 100644
--- a/contrib/tools/yasm/libyasm/floatnum.h
+++ b/contrib/tools/yasm/libyasm/floatnum.h
@@ -1,131 +1,131 @@
-/**
- * \file libyasm/floatnum.h
- * \brief YASM floating point (IEEE) interface.
- *
- * \license
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Based on public-domain x86 assembly code by Randall Hyde (8/28/91).
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- * \endlicense
- */
-#ifndef YASM_FLOATNUM_H
-#define YASM_FLOATNUM_H
-
-#ifndef YASM_LIB_DECL
-#define YASM_LIB_DECL
-#endif
-
-/** Initialize floatnum internal data structures. */
-YASM_LIB_DECL
-void yasm_floatnum_initialize(void);
-
-/** Clean up internal floatnum allocations. */
-YASM_LIB_DECL
-void yasm_floatnum_cleanup(void);
-
-/** Create a new floatnum from a decimal string. The input string must be in
- * standard C representation ([+-]123.456e[-+]789).
- * \param str floating point decimal string
- * \return Newly allocated floatnum.
- */
-YASM_LIB_DECL
-/*@only@*/ yasm_floatnum *yasm_floatnum_create(const char *str);
-
-/** Duplicate a floatnum.
- * \param flt floatnum
- * \return Newly allocated floatnum with the same value as flt.
- */
-YASM_LIB_DECL
-/*@only@*/ yasm_floatnum *yasm_floatnum_copy(const yasm_floatnum *flt);
-
-/** Destroy (free allocated memory for) a floatnum.
- * \param flt floatnum
- */
-YASM_LIB_DECL
-void yasm_floatnum_destroy(/*@only@*/ yasm_floatnum *flt);
-
-/** Floating point calculation function: acc = acc op operand.
- * \note Not all operations in yasm_expr_op may be supported; unsupported
- * operations will result in an error.
- * \param acc floatnum accumulator
- * \param op operation
- * \param operand floatnum operand
- * \return Nonzero on error.
- */
-YASM_LIB_DECL
-int yasm_floatnum_calc(yasm_floatnum *acc, yasm_expr_op op,
- yasm_floatnum *operand);
-
-/** Convert a floatnum to single-precision and return as 32-bit value.
- * The 32-bit value is a "standard" C value (eg, of unknown endian).
- * \param flt floatnum
- * \param ret_val pointer to storage for 32-bit output
- * \return Nonzero if flt can't fit into single precision: -1 if underflow
- * occurred, 1 if overflow occurred.
- */
-YASM_LIB_DECL
-int yasm_floatnum_get_int(const yasm_floatnum *flt,
- /*@out@*/ unsigned long *ret_val);
-
-/** Output a #yasm_floatnum to buffer in little-endian or big-endian. Puts the
- * value into the least significant bits of the destination, or may be shifted
- * into more significant bits by the shift parameter. The destination bits are
- * cleared before being set. [0] should be the first byte output to the file.
- * \note Not all sizes are valid. Currently, only 32 (single-precision), 64
- * (double-precision), and 80 (extended-precision) are valid sizes.
- * Use yasm_floatnum_check_size() to check for supported sizes.
- * \param flt floatnum
- * \param ptr pointer to storage for size bytes of output
- * \param destsize destination size (in bytes)
- * \param valsize size (in bits)
- * \param shift left shift (in bits)
- * \param bigendian endianness (nonzero=big, zero=little)
- * \param warn enables standard overflow/underflow warnings
- * \return Nonzero if flt can't fit into the specified precision: -1 if
- * underflow occurred, 1 if overflow occurred.
- */
-YASM_LIB_DECL
-int yasm_floatnum_get_sized(const yasm_floatnum *flt, unsigned char *ptr,
- size_t destsize, size_t valsize, size_t shift,
- int bigendian, int warn);
-
-/** Basic check to see if size is valid for flt conversion (using
- * yasm_floatnum_get_sized()). Doesn't actually check for underflow/overflow
- * but rather checks for size=32,64,80
- * (at present).
- * \param flt floatnum
- * \param size number of bits of output space
- * \return 1 if valid size, 0 if invalid size.
- */
-YASM_LIB_DECL
-int yasm_floatnum_check_size(const yasm_floatnum *flt, size_t size);
-
-/** Print various representations of a floatnum. For debugging purposes only.
- * \param f file
- * \param flt floatnum
- */
-YASM_LIB_DECL
-void yasm_floatnum_print(const yasm_floatnum *flt, FILE *f);
-
-#endif
+/**
+ * \file libyasm/floatnum.h
+ * \brief YASM floating point (IEEE) interface.
+ *
+ * \license
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Based on public-domain x86 assembly code by Randall Hyde (8/28/91).
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * - Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ * \endlicense
+ */
+#ifndef YASM_FLOATNUM_H
+#define YASM_FLOATNUM_H
+
+#ifndef YASM_LIB_DECL
+#define YASM_LIB_DECL
+#endif
+
+/** Initialize floatnum internal data structures. */
+YASM_LIB_DECL
+void yasm_floatnum_initialize(void);
+
+/** Clean up internal floatnum allocations. */
+YASM_LIB_DECL
+void yasm_floatnum_cleanup(void);
+
+/** Create a new floatnum from a decimal string. The input string must be in
+ * standard C representation ([+-]123.456e[-+]789).
+ * \param str floating point decimal string
+ * \return Newly allocated floatnum.
+ */
+YASM_LIB_DECL
+/*@only@*/ yasm_floatnum *yasm_floatnum_create(const char *str);
+
+/** Duplicate a floatnum.
+ * \param flt floatnum
+ * \return Newly allocated floatnum with the same value as flt.
+ */
+YASM_LIB_DECL
+/*@only@*/ yasm_floatnum *yasm_floatnum_copy(const yasm_floatnum *flt);
+
+/** Destroy (free allocated memory for) a floatnum.
+ * \param flt floatnum
+ */
+YASM_LIB_DECL
+void yasm_floatnum_destroy(/*@only@*/ yasm_floatnum *flt);
+
+/** Floating point calculation function: acc = acc op operand.
+ * \note Not all operations in yasm_expr_op may be supported; unsupported
+ * operations will result in an error.
+ * \param acc floatnum accumulator
+ * \param op operation
+ * \param operand floatnum operand
+ * \return Nonzero on error.
+ */
+YASM_LIB_DECL
+int yasm_floatnum_calc(yasm_floatnum *acc, yasm_expr_op op,
+ yasm_floatnum *operand);
+
+/** Convert a floatnum to single-precision and return as 32-bit value.
+ * The 32-bit value is a "standard" C value (eg, of unknown endian).
+ * \param flt floatnum
+ * \param ret_val pointer to storage for 32-bit output
+ * \return Nonzero if flt can't fit into single precision: -1 if underflow
+ * occurred, 1 if overflow occurred.
+ */
+YASM_LIB_DECL
+int yasm_floatnum_get_int(const yasm_floatnum *flt,
+ /*@out@*/ unsigned long *ret_val);
+
+/** Output a #yasm_floatnum to buffer in little-endian or big-endian. Puts the
+ * value into the least significant bits of the destination, or may be shifted
+ * into more significant bits by the shift parameter. The destination bits are
+ * cleared before being set. [0] should be the first byte output to the file.
+ * \note Not all sizes are valid. Currently, only 32 (single-precision), 64
+ * (double-precision), and 80 (extended-precision) are valid sizes.
+ * Use yasm_floatnum_check_size() to check for supported sizes.
+ * \param flt floatnum
+ * \param ptr pointer to storage for size bytes of output
+ * \param destsize destination size (in bytes)
+ * \param valsize size (in bits)
+ * \param shift left shift (in bits)
+ * \param bigendian endianness (nonzero=big, zero=little)
+ * \param warn enables standard overflow/underflow warnings
+ * \return Nonzero if flt can't fit into the specified precision: -1 if
+ * underflow occurred, 1 if overflow occurred.
+ */
+YASM_LIB_DECL
+int yasm_floatnum_get_sized(const yasm_floatnum *flt, unsigned char *ptr,
+ size_t destsize, size_t valsize, size_t shift,
+ int bigendian, int warn);
+
+/** Basic check to see if size is valid for flt conversion (using
+ * yasm_floatnum_get_sized()). Doesn't actually check for underflow/overflow
+ * but rather checks for size=32,64,80
+ * (at present).
+ * \param flt floatnum
+ * \param size number of bits of output space
+ * \return 1 if valid size, 0 if invalid size.
+ */
+YASM_LIB_DECL
+int yasm_floatnum_check_size(const yasm_floatnum *flt, size_t size);
+
+/** Print various representations of a floatnum. For debugging purposes only.
+ * \param f file
+ * \param flt floatnum
+ */
+YASM_LIB_DECL
+void yasm_floatnum_print(const yasm_floatnum *flt, FILE *f);
+
+#endif
diff --git a/contrib/tools/yasm/libyasm/genmodule.c b/contrib/tools/yasm/libyasm/genmodule.c
index 7ada3504c6..867d93a5b2 100644
--- a/contrib/tools/yasm/libyasm/genmodule.c
+++ b/contrib/tools/yasm/libyasm/genmodule.c
@@ -1,228 +1,228 @@
-/*
- *
- * Generate module.c from module.in and Makefile.am or Makefile.
- *
- * Copyright (C) 2004-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-
-#include "compat-queue.h"
-
-#define OUTPUT "module.c"
-#define MAXNAME 128
-#define MAXLINE 1024
-#define MAXMODULES 128
-#define MAXINCLUDES 256
-
-typedef struct include {
- STAILQ_ENTRY(include) link;
- char *filename;
-} include;
-
-int
-main(int argc, char *argv[])
-{
- FILE *in, *out;
- char *str;
- int i;
- size_t len;
- char *strp;
- char *modules[MAXMODULES];
- int num_modules = 0;
- STAILQ_HEAD(includehead, include) includes =
- STAILQ_HEAD_INITIALIZER(includes);
- include *inc;
- int isam = 0;
- int linecont = 0;
-
- if (argc != 3) {
- fprintf(stderr, "Usage: %s <module.in> <Makefile[.am]>\n", argv[0]);
- return EXIT_FAILURE;
- }
-
- str = malloc(MAXLINE);
-
- /* Starting with initial input Makefile, look for include <file> or
- * YASM_MODULES += <module>. Note this currently doesn't handle
- * a relative starting path.
- */
- len = strlen(argv[2]);
- inc = malloc(sizeof(include));
- inc->filename = malloc(len+1);
- strcpy(inc->filename, argv[2]);
- STAILQ_INSERT_TAIL(&includes, inc, link);
-
- isam = argv[2][len-2] == 'a' && argv[2][len-1] == 'm';
-
- while (!STAILQ_EMPTY(&includes)) {
- inc = STAILQ_FIRST(&includes);
- STAILQ_REMOVE_HEAD(&includes, link);
- in = fopen(inc->filename, "rt");
- if (!in) {
- fprintf(stderr, "Could not open `%s'.\n", inc->filename);
- return EXIT_FAILURE;
- }
- free(inc->filename);
- free(inc);
-
- while (fgets(str, MAXLINE, in)) {
- /* Strip off any trailing whitespace */
- len = strlen(str);
- if (len > 0) {
- strp = &str[len-1];
- while (len > 0 && isspace(*strp)) {
- *strp-- = '\0';
- len--;
- }
- }
-
- strp = str;
-
- /* Skip whitespace */
- while (isspace(*strp))
- strp++;
-
- /* Skip comments */
- if (*strp == '#')
- continue;
-
- /* If line continuation, skip to continue copy */
- if (linecont)
- goto keepgoing;
-
- /* Check for include if original input is .am file */
- if (isam && strncmp(strp, "include", 7) == 0 && isspace(strp[7])) {
- strp += 7;
- while (isspace(*strp))
- strp++;
- /* Build new include and add to end of list */
- inc = malloc(sizeof(include));
- inc->filename = malloc(strlen(strp)+1);
- strcpy(inc->filename, strp);
- STAILQ_INSERT_TAIL(&includes, inc, link);
- continue;
- }
-
- /* Check for YASM_MODULES = or += */
- if (strncmp(strp, "YASM_MODULES", 12) != 0)
- continue;
- strp += 12;
- while (isspace(*strp))
- strp++;
- if (strncmp(strp, "+=", 2) != 0 && *strp != '=')
- continue;
- if (*strp == '+')
- strp++;
- strp++;
- while (isspace(*strp))
- strp++;
-
-keepgoing:
- /* Check for continuation */
- if (len > 0 && str[len-1] == '\\') {
- str[len-1] = '\0';
- while (isspace(*strp))
- *strp-- = '\0';
- linecont = 1;
- } else
- linecont = 0;
-
- while (*strp != '\0') {
- /* Copy module name */
- modules[num_modules] = malloc(MAXNAME);
- len = 0;
- while (*strp != '\0' && !isspace(*strp))
- modules[num_modules][len++] = *strp++;
- modules[num_modules][len] = '\0';
- num_modules++;
-
- while (isspace(*strp))
- strp++;
- }
- }
- fclose(in);
- }
-
- out = fopen(OUTPUT, "wt");
-
- if (!out) {
- fprintf(stderr, "Could not open `%s'.\n", OUTPUT);
- return EXIT_FAILURE;
- }
-
- fprintf(out, "/* This file auto-generated by genmodule.c"
- " - don't edit it */\n\n");
-
- in = fopen(argv[1], "rt");
- if (!in) {
- fprintf(stderr, "Could not open `%s'.\n", argv[1]);
- fclose(out);
- remove(OUTPUT);
- return EXIT_FAILURE;
- }
-
- len = 0;
- while (fgets(str, MAXLINE, in)) {
- if (strncmp(str, "MODULES_", 8) == 0) {
- len = 0;
- strp = str+8;
- while (*strp != '\0' && *strp != '_') {
- len++;
- strp++;
- }
- *strp = '\0';
-
- for (i=0; i<num_modules; i++) {
- if (strncmp(modules[i], str+8, len) == 0) {
- fprintf(out, " {\"%s\", &yasm_%s_LTX_%s},\n",
- modules[i]+len+1, modules[i]+len+1, str+8);
- }
- }
- } else if (strncmp(str, "EXTERN_LIST", 11) == 0) {
- for (i=0; i<num_modules; i++) {
- strcpy(str, modules[i]);
- strp = str;
- while (*strp != '\0' && *strp != '_')
- strp++;
- *strp++ = '\0';
-
- fprintf(out, "extern yasm_%s_module yasm_%s_LTX_%s;\n",
- str, strp, str);
- }
- } else
- fputs(str, out);
- }
-
- fclose(in);
- fclose(out);
-
- for (i=0; i<num_modules; i++)
- free(modules[i]);
- free(str);
-
- return EXIT_SUCCESS;
-}
+/*
+ *
+ * Generate module.c from module.in and Makefile.am or Makefile.
+ *
+ * Copyright (C) 2004-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+
+#include "compat-queue.h"
+
+#define OUTPUT "module.c"
+#define MAXNAME 128
+#define MAXLINE 1024
+#define MAXMODULES 128
+#define MAXINCLUDES 256
+
+typedef struct include {
+ STAILQ_ENTRY(include) link;
+ char *filename;
+} include;
+
+int
+main(int argc, char *argv[])
+{
+ FILE *in, *out;
+ char *str;
+ int i;
+ size_t len;
+ char *strp;
+ char *modules[MAXMODULES];
+ int num_modules = 0;
+ STAILQ_HEAD(includehead, include) includes =
+ STAILQ_HEAD_INITIALIZER(includes);
+ include *inc;
+ int isam = 0;
+ int linecont = 0;
+
+ if (argc != 3) {
+ fprintf(stderr, "Usage: %s <module.in> <Makefile[.am]>\n", argv[0]);
+ return EXIT_FAILURE;
+ }
+
+ str = malloc(MAXLINE);
+
+ /* Starting with initial input Makefile, look for include <file> or
+ * YASM_MODULES += <module>. Note this currently doesn't handle
+ * a relative starting path.
+ */
+ len = strlen(argv[2]);
+ inc = malloc(sizeof(include));
+ inc->filename = malloc(len+1);
+ strcpy(inc->filename, argv[2]);
+ STAILQ_INSERT_TAIL(&includes, inc, link);
+
+ isam = argv[2][len-2] == 'a' && argv[2][len-1] == 'm';
+
+ while (!STAILQ_EMPTY(&includes)) {
+ inc = STAILQ_FIRST(&includes);
+ STAILQ_REMOVE_HEAD(&includes, link);
+ in = fopen(inc->filename, "rt");
+ if (!in) {
+ fprintf(stderr, "Could not open `%s'.\n", inc->filename);
+ return EXIT_FAILURE;
+ }
+ free(inc->filename);
+ free(inc);
+
+ while (fgets(str, MAXLINE, in)) {
+ /* Strip off any trailing whitespace */
+ len = strlen(str);
+ if (len > 0) {
+ strp = &str[len-1];
+ while (len > 0 && isspace(*strp)) {
+ *strp-- = '\0';
+ len--;
+ }
+ }
+
+ strp = str;
+
+ /* Skip whitespace */
+ while (isspace(*strp))
+ strp++;
+
+ /* Skip comments */
+ if (*strp == '#')
+ continue;
+
+ /* If line continuation, skip to continue copy */
+ if (linecont)
+ goto keepgoing;
+
+ /* Check for include if original input is .am file */
+ if (isam && strncmp(strp, "include", 7) == 0 && isspace(strp[7])) {
+ strp += 7;
+ while (isspace(*strp))
+ strp++;
+ /* Build new include and add to end of list */
+ inc = malloc(sizeof(include));
+ inc->filename = malloc(strlen(strp)+1);
+ strcpy(inc->filename, strp);
+ STAILQ_INSERT_TAIL(&includes, inc, link);
+ continue;
+ }
+
+ /* Check for YASM_MODULES = or += */
+ if (strncmp(strp, "YASM_MODULES", 12) != 0)
+ continue;
+ strp += 12;
+ while (isspace(*strp))
+ strp++;
+ if (strncmp(strp, "+=", 2) != 0 && *strp != '=')
+ continue;
+ if (*strp == '+')
+ strp++;
+ strp++;
+ while (isspace(*strp))
+ strp++;
+
+keepgoing:
+ /* Check for continuation */
+ if (len > 0 && str[len-1] == '\\') {
+ str[len-1] = '\0';
+ while (isspace(*strp))
+ *strp-- = '\0';
+ linecont = 1;
+ } else
+ linecont = 0;
+
+ while (*strp != '\0') {
+ /* Copy module name */
+ modules[num_modules] = malloc(MAXNAME);
+ len = 0;
+ while (*strp != '\0' && !isspace(*strp))
+ modules[num_modules][len++] = *strp++;
+ modules[num_modules][len] = '\0';
+ num_modules++;
+
+ while (isspace(*strp))
+ strp++;
+ }
+ }
+ fclose(in);
+ }
+
+ out = fopen(OUTPUT, "wt");
+
+ if (!out) {
+ fprintf(stderr, "Could not open `%s'.\n", OUTPUT);
+ return EXIT_FAILURE;
+ }
+
+ fprintf(out, "/* This file auto-generated by genmodule.c"
+ " - don't edit it */\n\n");
+
+ in = fopen(argv[1], "rt");
+ if (!in) {
+ fprintf(stderr, "Could not open `%s'.\n", argv[1]);
+ fclose(out);
+ remove(OUTPUT);
+ return EXIT_FAILURE;
+ }
+
+ len = 0;
+ while (fgets(str, MAXLINE, in)) {
+ if (strncmp(str, "MODULES_", 8) == 0) {
+ len = 0;
+ strp = str+8;
+ while (*strp != '\0' && *strp != '_') {
+ len++;
+ strp++;
+ }
+ *strp = '\0';
+
+ for (i=0; i<num_modules; i++) {
+ if (strncmp(modules[i], str+8, len) == 0) {
+ fprintf(out, " {\"%s\", &yasm_%s_LTX_%s},\n",
+ modules[i]+len+1, modules[i]+len+1, str+8);
+ }
+ }
+ } else if (strncmp(str, "EXTERN_LIST", 11) == 0) {
+ for (i=0; i<num_modules; i++) {
+ strcpy(str, modules[i]);
+ strp = str;
+ while (*strp != '\0' && *strp != '_')
+ strp++;
+ *strp++ = '\0';
+
+ fprintf(out, "extern yasm_%s_module yasm_%s_LTX_%s;\n",
+ str, strp, str);
+ }
+ } else
+ fputs(str, out);
+ }
+
+ fclose(in);
+ fclose(out);
+
+ for (i=0; i<num_modules; i++)
+ free(modules[i]);
+ free(str);
+
+ return EXIT_SUCCESS;
+}
diff --git a/contrib/tools/yasm/libyasm/hamt.c b/contrib/tools/yasm/libyasm/hamt.c
index d5f3f05f2b..59b7592109 100644
--- a/contrib/tools/yasm/libyasm/hamt.c
+++ b/contrib/tools/yasm/libyasm/hamt.c
@@ -1,421 +1,421 @@
-/*
- * Hash Array Mapped Trie (HAMT) implementation
- *
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Based on the paper "Ideal Hash Tries" by Phil Bagwell [2000].
- * One algorithmic change from that described in the paper: we use the LSB's
- * of the key to index the root table and move upward in the key rather than
- * use the MSBs as described in the paper. The LSBs have more entropy.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include "util.h"
-
-#include <ctype.h>
-
-#include "libyasm-stdint.h"
-#include "coretype.h"
-#include "hamt.h"
-
-struct HAMTEntry {
- STAILQ_ENTRY(HAMTEntry) next; /* next hash table entry */
- /*@dependent@*/ const char *str; /* string being hashed */
- /*@owned@*/ void *data; /* data pointer being stored */
-};
-
-typedef struct HAMTNode {
- unsigned long BitMapKey; /* 32 bits, bitmap or hash key */
- uintptr_t BaseValue; /* Base of HAMTNode list or value */
-} HAMTNode;
-
-struct HAMT {
- STAILQ_HEAD(HAMTEntryHead, HAMTEntry) entries;
- HAMTNode *root;
- /*@exits@*/ void (*error_func) (const char *file, unsigned int line,
- const char *message);
- unsigned long (*HashKey) (const char *key);
- unsigned long (*ReHashKey) (const char *key, int Level);
- int (*CmpKey) (const char *s1, const char *s2);
-};
-
-/* XXX make a portable version of this. This depends on the pointer being
- * 4 or 2-byte aligned (as it uses the LSB of the pointer variable to store
- * the subtrie flag!
- */
-#define IsSubTrie(n) ((n)->BaseValue & 1)
-#define SetSubTrie(h, n, v) do { \
- if ((uintptr_t)(v) & 1) \
- h->error_func(__FILE__, __LINE__, \
- N_("Subtrie is seen as subtrie before flag is set (misaligned?)")); \
- (n)->BaseValue = (uintptr_t)(v) | 1; \
- } while (0)
-#define SetValue(h, n, v) do { \
- if ((uintptr_t)(v) & 1) \
- h->error_func(__FILE__, __LINE__, \
- N_("Value is seen as subtrie (misaligned?)")); \
- (n)->BaseValue = (uintptr_t)(v); \
- } while (0)
-#define GetSubTrie(n) (HAMTNode *)(((n)->BaseValue | 1) ^ 1)
-
-static unsigned long
-HashKey(const char *key)
-{
- unsigned long a=31415, b=27183, vHash;
- for (vHash=0; *key; key++, a*=b)
- vHash = a*vHash + *key;
- return vHash;
-}
-
-static unsigned long
-ReHashKey(const char *key, int Level)
-{
- unsigned long a=31415, b=27183, vHash;
- for (vHash=0; *key; key++, a*=b)
- vHash = a*vHash*(unsigned long)Level + *key;
- return vHash;
-}
-
-static unsigned long
-HashKey_nocase(const char *key)
-{
- unsigned long a=31415, b=27183, vHash;
- for (vHash=0; *key; key++, a*=b)
- vHash = a*vHash + tolower(*key);
- return vHash;
-}
-
-static unsigned long
-ReHashKey_nocase(const char *key, int Level)
-{
- unsigned long a=31415, b=27183, vHash;
- for (vHash=0; *key; key++, a*=b)
- vHash = a*vHash*(unsigned long)Level + tolower(*key);
- return vHash;
-}
-
-HAMT *
-HAMT_create(int nocase, /*@exits@*/ void (*error_func)
- (const char *file, unsigned int line, const char *message))
-{
- /*@out@*/ HAMT *hamt = yasm_xmalloc(sizeof(HAMT));
- int i;
-
- STAILQ_INIT(&hamt->entries);
- hamt->root = yasm_xmalloc(32*sizeof(HAMTNode));
-
- for (i=0; i<32; i++) {
- hamt->root[i].BitMapKey = 0;
- hamt->root[i].BaseValue = 0;
- }
-
- hamt->error_func = error_func;
- if (nocase) {
- hamt->HashKey = HashKey_nocase;
- hamt->ReHashKey = ReHashKey_nocase;
- hamt->CmpKey = yasm__strcasecmp;
- } else {
- hamt->HashKey = HashKey;
- hamt->ReHashKey = ReHashKey;
- hamt->CmpKey = strcmp;
- }
-
- return hamt;
-}
-
-static void
-HAMT_delete_trie(HAMTNode *node)
-{
- if (IsSubTrie(node)) {
- unsigned long i, Size;
-
- /* Count total number of bits in bitmap to determine size */
- BitCount(Size, node->BitMapKey);
- Size &= 0x1F;
- if (Size == 0)
- Size = 32;
-
- for (i=0; i<Size; i++)
- HAMT_delete_trie(&(GetSubTrie(node))[i]);
- yasm_xfree(GetSubTrie(node));
- }
-}
-
-void
-HAMT_destroy(HAMT *hamt, void (*deletefunc) (/*@only@*/ void *data))
-{
- int i;
-
- /* delete entries */
- while (!STAILQ_EMPTY(&hamt->entries)) {
- HAMTEntry *entry;
- entry = STAILQ_FIRST(&hamt->entries);
- STAILQ_REMOVE_HEAD(&hamt->entries, next);
- deletefunc(entry->data);
- yasm_xfree(entry);
- }
-
- /* delete trie */
- for (i=0; i<32; i++)
- HAMT_delete_trie(&hamt->root[i]);
-
- yasm_xfree(hamt->root);
- yasm_xfree(hamt);
-}
-
-int
-HAMT_traverse(HAMT *hamt, void *d,
- int (*func) (/*@dependent@*/ /*@null@*/ void *node,
- /*@null@*/ void *d))
-{
- HAMTEntry *entry;
- STAILQ_FOREACH(entry, &hamt->entries, next) {
- int retval = func(entry->data, d);
- if (retval != 0)
- return retval;
- }
- return 0;
-}
-
-const HAMTEntry *
-HAMT_first(const HAMT *hamt)
-{
- return STAILQ_FIRST(&hamt->entries);
-}
-
-const HAMTEntry *
-HAMT_next(const HAMTEntry *prev)
-{
- return STAILQ_NEXT(prev, next);
-}
-
-void *
-HAMTEntry_get_data(const HAMTEntry *entry)
-{
- return entry->data;
-}
-
-/*@-temptrans -kepttrans -mustfree@*/
-void *
-HAMT_insert(HAMT *hamt, const char *str, void *data, int *replace,
- void (*deletefunc) (/*@only@*/ void *data))
-{
- HAMTNode *node, *newnodes;
- HAMTEntry *entry;
- unsigned long key, keypart, Map;
- int keypartbits = 0;
- int level = 0;
-
- key = hamt->HashKey(str);
- keypart = key & 0x1F;
- node = &hamt->root[keypart];
-
- if (!node->BaseValue) {
- node->BitMapKey = key;
- entry = yasm_xmalloc(sizeof(HAMTEntry));
- entry->str = str;
- entry->data = data;
- STAILQ_INSERT_TAIL(&hamt->entries, entry, next);
- SetValue(hamt, node, entry);
- if (IsSubTrie(node))
- hamt->error_func(__FILE__, __LINE__,
- N_("Data is seen as subtrie (misaligned?)"));
- *replace = 1;
- return data;
- }
-
- for (;;) {
- if (!(IsSubTrie(node))) {
- if (node->BitMapKey == key
- && hamt->CmpKey(((HAMTEntry *)(node->BaseValue))->str,
- str) == 0) {
- /*@-branchstate@*/
- if (*replace) {
- deletefunc(((HAMTEntry *)(node->BaseValue))->data);
- ((HAMTEntry *)(node->BaseValue))->str = str;
- ((HAMTEntry *)(node->BaseValue))->data = data;
- } else
- deletefunc(data);
- /*@=branchstate@*/
- return ((HAMTEntry *)(node->BaseValue))->data;
- } else {
- unsigned long key2 = node->BitMapKey;
- /* build tree downward until keys differ */
- for (;;) {
- unsigned long keypart2;
-
- /* replace node with subtrie */
- keypartbits += 5;
- if (keypartbits > 30) {
- /* Exceeded 32 bits: rehash */
- key = hamt->ReHashKey(str, level);
- key2 = hamt->ReHashKey(
- ((HAMTEntry *)(node->BaseValue))->str, level);
- keypartbits = 0;
- }
- keypart = (key >> keypartbits) & 0x1F;
- keypart2 = (key2 >> keypartbits) & 0x1F;
-
- if (keypart == keypart2) {
- /* Still equal, build one-node subtrie and continue
- * downward.
- */
- newnodes = yasm_xmalloc(sizeof(HAMTNode));
- newnodes[0].BitMapKey = key2;
- newnodes[0].BaseValue = node->BaseValue;
- node->BitMapKey = 1<<keypart;
- SetSubTrie(hamt, node, newnodes);
- node = &newnodes[0];
- level++;
- } else {
- /* partitioned: allocate two-node subtrie */
- newnodes = yasm_xmalloc(2*sizeof(HAMTNode));
-
- entry = yasm_xmalloc(sizeof(HAMTEntry));
- entry->str = str;
- entry->data = data;
- STAILQ_INSERT_TAIL(&hamt->entries, entry, next);
-
- /* Copy nodes into subtrie based on order */
- if (keypart2 < keypart) {
- newnodes[0].BitMapKey = key2;
- newnodes[0].BaseValue = node->BaseValue;
- newnodes[1].BitMapKey = key;
- SetValue(hamt, &newnodes[1], entry);
- } else {
- newnodes[0].BitMapKey = key;
- SetValue(hamt, &newnodes[0], entry);
- newnodes[1].BitMapKey = key2;
- newnodes[1].BaseValue = node->BaseValue;
- }
-
- /* Set bits in bitmap corresponding to keys */
- node->BitMapKey = (1UL<<keypart) | (1UL<<keypart2);
- SetSubTrie(hamt, node, newnodes);
- *replace = 1;
- return data;
- }
- }
- }
- }
-
- /* Subtrie: look up in bitmap */
- keypartbits += 5;
- if (keypartbits > 30) {
- /* Exceeded 32 bits of current key: rehash */
- key = hamt->ReHashKey(str, level);
- keypartbits = 0;
- }
- keypart = (key >> keypartbits) & 0x1F;
- if (!(node->BitMapKey & (1<<keypart))) {
- /* bit is 0 in bitmap -> add node to table */
- unsigned long Size;
-
- /* set bit to 1 */
- node->BitMapKey |= 1<<keypart;
-
- /* Count total number of bits in bitmap to determine new size */
- BitCount(Size, node->BitMapKey);
- Size &= 0x1F;
- if (Size == 0)
- Size = 32;
- newnodes = yasm_xmalloc(Size*sizeof(HAMTNode));
-
- /* Count bits below to find where to insert new node at */
- BitCount(Map, node->BitMapKey & ~((~0UL)<<keypart));
- Map &= 0x1F; /* Clamp to <32 */
- /* Copy existing nodes leaving gap for new node */
- memcpy(newnodes, GetSubTrie(node), Map*sizeof(HAMTNode));
- memcpy(&newnodes[Map+1], &(GetSubTrie(node))[Map],
- (Size-Map-1)*sizeof(HAMTNode));
- /* Delete old subtrie */
- yasm_xfree(GetSubTrie(node));
- /* Set up new node */
- newnodes[Map].BitMapKey = key;
- entry = yasm_xmalloc(sizeof(HAMTEntry));
- entry->str = str;
- entry->data = data;
- STAILQ_INSERT_TAIL(&hamt->entries, entry, next);
- SetValue(hamt, &newnodes[Map], entry);
- SetSubTrie(hamt, node, newnodes);
-
- *replace = 1;
- return data;
- }
-
- /* Count bits below */
- BitCount(Map, node->BitMapKey & ~((~0UL)<<keypart));
- Map &= 0x1F; /* Clamp to <32 */
-
- /* Go down a level */
- level++;
- node = &(GetSubTrie(node))[Map];
- }
-}
-/*@=temptrans =kepttrans =mustfree@*/
-
-void *
-HAMT_search(HAMT *hamt, const char *str)
-{
- HAMTNode *node;
- unsigned long key, keypart, Map;
- int keypartbits = 0;
- int level = 0;
-
- key = hamt->HashKey(str);
- keypart = key & 0x1F;
- node = &hamt->root[keypart];
-
- if (!node->BaseValue)
- return NULL;
-
- for (;;) {
- if (!(IsSubTrie(node))) {
- if (node->BitMapKey == key
- && hamt->CmpKey(((HAMTEntry *)(node->BaseValue))->str,
- str) == 0)
- return ((HAMTEntry *)(node->BaseValue))->data;
- else
- return NULL;
- }
-
- /* Subtree: look up in bitmap */
- keypartbits += 5;
- if (keypartbits > 30) {
- /* Exceeded 32 bits of current key: rehash */
- key = hamt->ReHashKey(str, level);
- keypartbits = 0;
- }
- keypart = (key >> keypartbits) & 0x1F;
- if (!(node->BitMapKey & (1<<keypart)))
- return NULL; /* bit is 0 in bitmap -> no match */
-
- /* Count bits below */
- BitCount(Map, node->BitMapKey & ~((~0UL)<<keypart));
- Map &= 0x1F; /* Clamp to <32 */
-
- /* Go down a level */
- level++;
- node = &(GetSubTrie(node))[Map];
- }
-}
-
+/*
+ * Hash Array Mapped Trie (HAMT) implementation
+ *
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Based on the paper "Ideal Hash Tries" by Phil Bagwell [2000].
+ * One algorithmic change from that described in the paper: we use the LSB's
+ * of the key to index the root table and move upward in the key rather than
+ * use the MSBs as described in the paper. The LSBs have more entropy.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "util.h"
+
+#include <ctype.h>
+
+#include "libyasm-stdint.h"
+#include "coretype.h"
+#include "hamt.h"
+
+struct HAMTEntry {
+ STAILQ_ENTRY(HAMTEntry) next; /* next hash table entry */
+ /*@dependent@*/ const char *str; /* string being hashed */
+ /*@owned@*/ void *data; /* data pointer being stored */
+};
+
+typedef struct HAMTNode {
+ unsigned long BitMapKey; /* 32 bits, bitmap or hash key */
+ uintptr_t BaseValue; /* Base of HAMTNode list or value */
+} HAMTNode;
+
+struct HAMT {
+ STAILQ_HEAD(HAMTEntryHead, HAMTEntry) entries;
+ HAMTNode *root;
+ /*@exits@*/ void (*error_func) (const char *file, unsigned int line,
+ const char *message);
+ unsigned long (*HashKey) (const char *key);
+ unsigned long (*ReHashKey) (const char *key, int Level);
+ int (*CmpKey) (const char *s1, const char *s2);
+};
+
+/* XXX make a portable version of this. This depends on the pointer being
+ * 4 or 2-byte aligned (as it uses the LSB of the pointer variable to store
+ * the subtrie flag!
+ */
+#define IsSubTrie(n) ((n)->BaseValue & 1)
+#define SetSubTrie(h, n, v) do { \
+ if ((uintptr_t)(v) & 1) \
+ h->error_func(__FILE__, __LINE__, \
+ N_("Subtrie is seen as subtrie before flag is set (misaligned?)")); \
+ (n)->BaseValue = (uintptr_t)(v) | 1; \
+ } while (0)
+#define SetValue(h, n, v) do { \
+ if ((uintptr_t)(v) & 1) \
+ h->error_func(__FILE__, __LINE__, \
+ N_("Value is seen as subtrie (misaligned?)")); \
+ (n)->BaseValue = (uintptr_t)(v); \
+ } while (0)
+#define GetSubTrie(n) (HAMTNode *)(((n)->BaseValue | 1) ^ 1)
+
+static unsigned long
+HashKey(const char *key)
+{
+ unsigned long a=31415, b=27183, vHash;
+ for (vHash=0; *key; key++, a*=b)
+ vHash = a*vHash + *key;
+ return vHash;
+}
+
+static unsigned long
+ReHashKey(const char *key, int Level)
+{
+ unsigned long a=31415, b=27183, vHash;
+ for (vHash=0; *key; key++, a*=b)
+ vHash = a*vHash*(unsigned long)Level + *key;
+ return vHash;
+}
+
+static unsigned long
+HashKey_nocase(const char *key)
+{
+ unsigned long a=31415, b=27183, vHash;
+ for (vHash=0; *key; key++, a*=b)
+ vHash = a*vHash + tolower(*key);
+ return vHash;
+}
+
+static unsigned long
+ReHashKey_nocase(const char *key, int Level)
+{
+ unsigned long a=31415, b=27183, vHash;
+ for (vHash=0; *key; key++, a*=b)
+ vHash = a*vHash*(unsigned long)Level + tolower(*key);
+ return vHash;
+}
+
+HAMT *
+HAMT_create(int nocase, /*@exits@*/ void (*error_func)
+ (const char *file, unsigned int line, const char *message))
+{
+ /*@out@*/ HAMT *hamt = yasm_xmalloc(sizeof(HAMT));
+ int i;
+
+ STAILQ_INIT(&hamt->entries);
+ hamt->root = yasm_xmalloc(32*sizeof(HAMTNode));
+
+ for (i=0; i<32; i++) {
+ hamt->root[i].BitMapKey = 0;
+ hamt->root[i].BaseValue = 0;
+ }
+
+ hamt->error_func = error_func;
+ if (nocase) {
+ hamt->HashKey = HashKey_nocase;
+ hamt->ReHashKey = ReHashKey_nocase;
+ hamt->CmpKey = yasm__strcasecmp;
+ } else {
+ hamt->HashKey = HashKey;
+ hamt->ReHashKey = ReHashKey;
+ hamt->CmpKey = strcmp;
+ }
+
+ return hamt;
+}
+
+static void
+HAMT_delete_trie(HAMTNode *node)
+{
+ if (IsSubTrie(node)) {
+ unsigned long i, Size;
+
+ /* Count total number of bits in bitmap to determine size */
+ BitCount(Size, node->BitMapKey);
+ Size &= 0x1F;
+ if (Size == 0)
+ Size = 32;
+
+ for (i=0; i<Size; i++)
+ HAMT_delete_trie(&(GetSubTrie(node))[i]);
+ yasm_xfree(GetSubTrie(node));
+ }
+}
+
+void
+HAMT_destroy(HAMT *hamt, void (*deletefunc) (/*@only@*/ void *data))
+{
+ int i;
+
+ /* delete entries */
+ while (!STAILQ_EMPTY(&hamt->entries)) {
+ HAMTEntry *entry;
+ entry = STAILQ_FIRST(&hamt->entries);
+ STAILQ_REMOVE_HEAD(&hamt->entries, next);
+ deletefunc(entry->data);
+ yasm_xfree(entry);
+ }
+
+ /* delete trie */
+ for (i=0; i<32; i++)
+ HAMT_delete_trie(&hamt->root[i]);
+
+ yasm_xfree(hamt->root);
+ yasm_xfree(hamt);
+}
+
+int
+HAMT_traverse(HAMT *hamt, void *d,
+ int (*func) (/*@dependent@*/ /*@null@*/ void *node,
+ /*@null@*/ void *d))
+{
+ HAMTEntry *entry;
+ STAILQ_FOREACH(entry, &hamt->entries, next) {
+ int retval = func(entry->data, d);
+ if (retval != 0)
+ return retval;
+ }
+ return 0;
+}
+
+const HAMTEntry *
+HAMT_first(const HAMT *hamt)
+{
+ return STAILQ_FIRST(&hamt->entries);
+}
+
+const HAMTEntry *
+HAMT_next(const HAMTEntry *prev)
+{
+ return STAILQ_NEXT(prev, next);
+}
+
+void *
+HAMTEntry_get_data(const HAMTEntry *entry)
+{
+ return entry->data;
+}
+
+/*@-temptrans -kepttrans -mustfree@*/
+void *
+HAMT_insert(HAMT *hamt, const char *str, void *data, int *replace,
+ void (*deletefunc) (/*@only@*/ void *data))
+{
+ HAMTNode *node, *newnodes;
+ HAMTEntry *entry;
+ unsigned long key, keypart, Map;
+ int keypartbits = 0;
+ int level = 0;
+
+ key = hamt->HashKey(str);
+ keypart = key & 0x1F;
+ node = &hamt->root[keypart];
+
+ if (!node->BaseValue) {
+ node->BitMapKey = key;
+ entry = yasm_xmalloc(sizeof(HAMTEntry));
+ entry->str = str;
+ entry->data = data;
+ STAILQ_INSERT_TAIL(&hamt->entries, entry, next);
+ SetValue(hamt, node, entry);
+ if (IsSubTrie(node))
+ hamt->error_func(__FILE__, __LINE__,
+ N_("Data is seen as subtrie (misaligned?)"));
+ *replace = 1;
+ return data;
+ }
+
+ for (;;) {
+ if (!(IsSubTrie(node))) {
+ if (node->BitMapKey == key
+ && hamt->CmpKey(((HAMTEntry *)(node->BaseValue))->str,
+ str) == 0) {
+ /*@-branchstate@*/
+ if (*replace) {
+ deletefunc(((HAMTEntry *)(node->BaseValue))->data);
+ ((HAMTEntry *)(node->BaseValue))->str = str;
+ ((HAMTEntry *)(node->BaseValue))->data = data;
+ } else
+ deletefunc(data);
+ /*@=branchstate@*/
+ return ((HAMTEntry *)(node->BaseValue))->data;
+ } else {
+ unsigned long key2 = node->BitMapKey;
+ /* build tree downward until keys differ */
+ for (;;) {
+ unsigned long keypart2;
+
+ /* replace node with subtrie */
+ keypartbits += 5;
+ if (keypartbits > 30) {
+ /* Exceeded 32 bits: rehash */
+ key = hamt->ReHashKey(str, level);
+ key2 = hamt->ReHashKey(
+ ((HAMTEntry *)(node->BaseValue))->str, level);
+ keypartbits = 0;
+ }
+ keypart = (key >> keypartbits) & 0x1F;
+ keypart2 = (key2 >> keypartbits) & 0x1F;
+
+ if (keypart == keypart2) {
+ /* Still equal, build one-node subtrie and continue
+ * downward.
+ */
+ newnodes = yasm_xmalloc(sizeof(HAMTNode));
+ newnodes[0].BitMapKey = key2;
+ newnodes[0].BaseValue = node->BaseValue;
+ node->BitMapKey = 1<<keypart;
+ SetSubTrie(hamt, node, newnodes);
+ node = &newnodes[0];
+ level++;
+ } else {
+ /* partitioned: allocate two-node subtrie */
+ newnodes = yasm_xmalloc(2*sizeof(HAMTNode));
+
+ entry = yasm_xmalloc(sizeof(HAMTEntry));
+ entry->str = str;
+ entry->data = data;
+ STAILQ_INSERT_TAIL(&hamt->entries, entry, next);
+
+ /* Copy nodes into subtrie based on order */
+ if (keypart2 < keypart) {
+ newnodes[0].BitMapKey = key2;
+ newnodes[0].BaseValue = node->BaseValue;
+ newnodes[1].BitMapKey = key;
+ SetValue(hamt, &newnodes[1], entry);
+ } else {
+ newnodes[0].BitMapKey = key;
+ SetValue(hamt, &newnodes[0], entry);
+ newnodes[1].BitMapKey = key2;
+ newnodes[1].BaseValue = node->BaseValue;
+ }
+
+ /* Set bits in bitmap corresponding to keys */
+ node->BitMapKey = (1UL<<keypart) | (1UL<<keypart2);
+ SetSubTrie(hamt, node, newnodes);
+ *replace = 1;
+ return data;
+ }
+ }
+ }
+ }
+
+ /* Subtrie: look up in bitmap */
+ keypartbits += 5;
+ if (keypartbits > 30) {
+ /* Exceeded 32 bits of current key: rehash */
+ key = hamt->ReHashKey(str, level);
+ keypartbits = 0;
+ }
+ keypart = (key >> keypartbits) & 0x1F;
+ if (!(node->BitMapKey & (1<<keypart))) {
+ /* bit is 0 in bitmap -> add node to table */
+ unsigned long Size;
+
+ /* set bit to 1 */
+ node->BitMapKey |= 1<<keypart;
+
+ /* Count total number of bits in bitmap to determine new size */
+ BitCount(Size, node->BitMapKey);
+ Size &= 0x1F;
+ if (Size == 0)
+ Size = 32;
+ newnodes = yasm_xmalloc(Size*sizeof(HAMTNode));
+
+ /* Count bits below to find where to insert new node at */
+ BitCount(Map, node->BitMapKey & ~((~0UL)<<keypart));
+ Map &= 0x1F; /* Clamp to <32 */
+ /* Copy existing nodes leaving gap for new node */
+ memcpy(newnodes, GetSubTrie(node), Map*sizeof(HAMTNode));
+ memcpy(&newnodes[Map+1], &(GetSubTrie(node))[Map],
+ (Size-Map-1)*sizeof(HAMTNode));
+ /* Delete old subtrie */
+ yasm_xfree(GetSubTrie(node));
+ /* Set up new node */
+ newnodes[Map].BitMapKey = key;
+ entry = yasm_xmalloc(sizeof(HAMTEntry));
+ entry->str = str;
+ entry->data = data;
+ STAILQ_INSERT_TAIL(&hamt->entries, entry, next);
+ SetValue(hamt, &newnodes[Map], entry);
+ SetSubTrie(hamt, node, newnodes);
+
+ *replace = 1;
+ return data;
+ }
+
+ /* Count bits below */
+ BitCount(Map, node->BitMapKey & ~((~0UL)<<keypart));
+ Map &= 0x1F; /* Clamp to <32 */
+
+ /* Go down a level */
+ level++;
+ node = &(GetSubTrie(node))[Map];
+ }
+}
+/*@=temptrans =kepttrans =mustfree@*/
+
+void *
+HAMT_search(HAMT *hamt, const char *str)
+{
+ HAMTNode *node;
+ unsigned long key, keypart, Map;
+ int keypartbits = 0;
+ int level = 0;
+
+ key = hamt->HashKey(str);
+ keypart = key & 0x1F;
+ node = &hamt->root[keypart];
+
+ if (!node->BaseValue)
+ return NULL;
+
+ for (;;) {
+ if (!(IsSubTrie(node))) {
+ if (node->BitMapKey == key
+ && hamt->CmpKey(((HAMTEntry *)(node->BaseValue))->str,
+ str) == 0)
+ return ((HAMTEntry *)(node->BaseValue))->data;
+ else
+ return NULL;
+ }
+
+ /* Subtree: look up in bitmap */
+ keypartbits += 5;
+ if (keypartbits > 30) {
+ /* Exceeded 32 bits of current key: rehash */
+ key = hamt->ReHashKey(str, level);
+ keypartbits = 0;
+ }
+ keypart = (key >> keypartbits) & 0x1F;
+ if (!(node->BitMapKey & (1<<keypart)))
+ return NULL; /* bit is 0 in bitmap -> no match */
+
+ /* Count bits below */
+ BitCount(Map, node->BitMapKey & ~((~0UL)<<keypart));
+ Map &= 0x1F; /* Clamp to <32 */
+
+ /* Go down a level */
+ level++;
+ node = &(GetSubTrie(node))[Map];
+ }
+}
+
diff --git a/contrib/tools/yasm/libyasm/hamt.h b/contrib/tools/yasm/libyasm/hamt.h
index 0964f83350..1ce9b77536 100644
--- a/contrib/tools/yasm/libyasm/hamt.h
+++ b/contrib/tools/yasm/libyasm/hamt.h
@@ -1,123 +1,123 @@
-/**
- * \file libyasm/hamt.h
- * \brief Hash Array Mapped Trie (HAMT) functions.
- *
- * \license
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- * \endlicense
- */
-#ifndef YASM_HAMT_H
-#define YASM_HAMT_H
-
-#ifndef YASM_LIB_DECL
-#define YASM_LIB_DECL
-#endif
-
-/** Hash array mapped trie data structure (opaque type). */
-typedef struct HAMT HAMT;
-/** Hash array mapped trie entry (opaque type). */
-typedef struct HAMTEntry HAMTEntry;
-
-/** Create new, empty, HAMT. error_func() is called when an internal error is
- * encountered--it should NOT return to the calling function.
- * \param nocase nonzero if HAMT should be case-insensitive
- * \param error_func function called on internal error
- * \return New, empty, hash array mapped trie.
- */
-YASM_LIB_DECL
-HAMT *HAMT_create(int nocase, /*@exits@*/ void (*error_func)
- (const char *file, unsigned int line, const char *message));
-
-/** Delete HAMT and all data associated with it. Uses deletefunc() to delete
- * each data item.
- * \param hamt Hash array mapped trie
- * \param deletefunc Data deletion function
- */
-YASM_LIB_DECL
-void HAMT_destroy(/*@only@*/ HAMT *hamt,
- void (*deletefunc) (/*@only@*/ void *data));
-
-/** Insert key into HAMT, associating it with data.
- * If the key is not present in the HAMT, inserts it, sets *replace to 1, and
- * returns the data passed in.
- * If the key is already present and *replace is 0, deletes the data passed
- * in using deletefunc() and returns the data currently associated with the
- * key.
- * If the key is already present and *replace is 1, deletes the data currently
- * associated with the key using deletefunc() and replaces it with the data
- * passed in.
- * \param hamt Hash array mapped trie
- * \param str Key
- * \param data Data to associate with key
- * \param replace See above description
- * \param deletefunc Data deletion function if data is replaced
- * \return Data now associated with key.
- */
-YASM_LIB_DECL
-/*@dependent@*/ void *HAMT_insert(HAMT *hamt, /*@dependent@*/ const char *str,
- /*@only@*/ void *data, int *replace,
- void (*deletefunc) (/*@only@*/ void *data));
-
-/** Search for the data associated with a key in the HAMT.
- * \param hamt Hash array mapped trie
- * \param str Key
- * \return NULL if key/data not present in HAMT, otherwise associated data.
- */
-YASM_LIB_DECL
-/*@dependent@*/ /*@null@*/ void *HAMT_search(HAMT *hamt, const char *str);
-
-/** Traverse over all keys in HAMT, calling function on each data item.
- * \param hamt Hash array mapped trie
- * \param d Data to pass to each call to func.
- * \param func Function to call
- * \return Stops early (and returns func's return value) if func returns a
- * nonzero value; otherwise 0.
- */
-YASM_LIB_DECL
-int HAMT_traverse(HAMT *hamt, /*@null@*/ void *d,
- int (*func) (/*@dependent@*/ /*@null@*/ void *node,
- /*@null@*/ void *d));
-
-/** Get the first entry in a HAMT.
- * \param hamt Hash array mapped trie
- * \return First entry in HAMT, or NULL if HAMT is empty.
- */
-YASM_LIB_DECL
-const HAMTEntry *HAMT_first(const HAMT *hamt);
-
-/** Get the next entry in a HAMT.
- * \param prev Previous entry in HAMT
- * \return Next entry in HAMT, or NULL if no more entries.
- */
-YASM_LIB_DECL
-/*@null@*/ const HAMTEntry *HAMT_next(const HAMTEntry *prev);
-
-/** Get the corresponding data for a HAMT entry.
- * \param entry HAMT entry (as returned by HAMT_first() and HAMT_next())
- * \return Corresponding data item.
- */
-YASM_LIB_DECL
-void *HAMTEntry_get_data(const HAMTEntry *entry);
-
-#endif
+/**
+ * \file libyasm/hamt.h
+ * \brief Hash Array Mapped Trie (HAMT) functions.
+ *
+ * \license
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ * \endlicense
+ */
+#ifndef YASM_HAMT_H
+#define YASM_HAMT_H
+
+#ifndef YASM_LIB_DECL
+#define YASM_LIB_DECL
+#endif
+
+/** Hash array mapped trie data structure (opaque type). */
+typedef struct HAMT HAMT;
+/** Hash array mapped trie entry (opaque type). */
+typedef struct HAMTEntry HAMTEntry;
+
+/** Create new, empty, HAMT. error_func() is called when an internal error is
+ * encountered--it should NOT return to the calling function.
+ * \param nocase nonzero if HAMT should be case-insensitive
+ * \param error_func function called on internal error
+ * \return New, empty, hash array mapped trie.
+ */
+YASM_LIB_DECL
+HAMT *HAMT_create(int nocase, /*@exits@*/ void (*error_func)
+ (const char *file, unsigned int line, const char *message));
+
+/** Delete HAMT and all data associated with it. Uses deletefunc() to delete
+ * each data item.
+ * \param hamt Hash array mapped trie
+ * \param deletefunc Data deletion function
+ */
+YASM_LIB_DECL
+void HAMT_destroy(/*@only@*/ HAMT *hamt,
+ void (*deletefunc) (/*@only@*/ void *data));
+
+/** Insert key into HAMT, associating it with data.
+ * If the key is not present in the HAMT, inserts it, sets *replace to 1, and
+ * returns the data passed in.
+ * If the key is already present and *replace is 0, deletes the data passed
+ * in using deletefunc() and returns the data currently associated with the
+ * key.
+ * If the key is already present and *replace is 1, deletes the data currently
+ * associated with the key using deletefunc() and replaces it with the data
+ * passed in.
+ * \param hamt Hash array mapped trie
+ * \param str Key
+ * \param data Data to associate with key
+ * \param replace See above description
+ * \param deletefunc Data deletion function if data is replaced
+ * \return Data now associated with key.
+ */
+YASM_LIB_DECL
+/*@dependent@*/ void *HAMT_insert(HAMT *hamt, /*@dependent@*/ const char *str,
+ /*@only@*/ void *data, int *replace,
+ void (*deletefunc) (/*@only@*/ void *data));
+
+/** Search for the data associated with a key in the HAMT.
+ * \param hamt Hash array mapped trie
+ * \param str Key
+ * \return NULL if key/data not present in HAMT, otherwise associated data.
+ */
+YASM_LIB_DECL
+/*@dependent@*/ /*@null@*/ void *HAMT_search(HAMT *hamt, const char *str);
+
+/** Traverse over all keys in HAMT, calling function on each data item.
+ * \param hamt Hash array mapped trie
+ * \param d Data to pass to each call to func.
+ * \param func Function to call
+ * \return Stops early (and returns func's return value) if func returns a
+ * nonzero value; otherwise 0.
+ */
+YASM_LIB_DECL
+int HAMT_traverse(HAMT *hamt, /*@null@*/ void *d,
+ int (*func) (/*@dependent@*/ /*@null@*/ void *node,
+ /*@null@*/ void *d));
+
+/** Get the first entry in a HAMT.
+ * \param hamt Hash array mapped trie
+ * \return First entry in HAMT, or NULL if HAMT is empty.
+ */
+YASM_LIB_DECL
+const HAMTEntry *HAMT_first(const HAMT *hamt);
+
+/** Get the next entry in a HAMT.
+ * \param prev Previous entry in HAMT
+ * \return Next entry in HAMT, or NULL if no more entries.
+ */
+YASM_LIB_DECL
+/*@null@*/ const HAMTEntry *HAMT_next(const HAMTEntry *prev);
+
+/** Get the corresponding data for a HAMT entry.
+ * \param entry HAMT entry (as returned by HAMT_first() and HAMT_next())
+ * \return Corresponding data item.
+ */
+YASM_LIB_DECL
+void *HAMTEntry_get_data(const HAMTEntry *entry);
+
+#endif
diff --git a/contrib/tools/yasm/libyasm/insn.c b/contrib/tools/yasm/libyasm/insn.c
index a1ebbfc568..8f7a4c1978 100644
--- a/contrib/tools/yasm/libyasm/insn.c
+++ b/contrib/tools/yasm/libyasm/insn.c
@@ -1,295 +1,295 @@
-/*
- * Mnemonic instruction bytecode
- *
- * Copyright (C) 2005-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include "util.h"
-
-#include "libyasm-stdint.h"
-#include "coretype.h"
-
-#include "errwarn.h"
-#include "expr.h"
-#include "value.h"
-
-#include "bytecode.h"
-#include "insn.h"
-#include "arch.h"
-
-
-void
-yasm_ea_set_segreg(yasm_effaddr *ea, uintptr_t segreg)
-{
- if (!ea)
- return;
-
- if (segreg != 0 && ea->segreg != 0)
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("multiple segment overrides, using leftmost"));
-
- ea->segreg = segreg;
-}
-
-yasm_insn_operand *
-yasm_operand_create_reg(uintptr_t reg)
-{
- yasm_insn_operand *retval = yasm_xmalloc(sizeof(yasm_insn_operand));
-
- retval->type = YASM_INSN__OPERAND_REG;
- retval->data.reg = reg;
- retval->seg = 0;
- retval->targetmod = 0;
- retval->size = 0;
- retval->deref = 0;
- retval->strict = 0;
-
- return retval;
-}
-
-yasm_insn_operand *
-yasm_operand_create_segreg(uintptr_t segreg)
-{
- yasm_insn_operand *retval = yasm_xmalloc(sizeof(yasm_insn_operand));
-
- retval->type = YASM_INSN__OPERAND_SEGREG;
- retval->data.reg = segreg;
- retval->seg = 0;
- retval->targetmod = 0;
- retval->size = 0;
- retval->deref = 0;
- retval->strict = 0;
-
- return retval;
-}
-
-yasm_insn_operand *
-yasm_operand_create_mem(/*@only@*/ yasm_effaddr *ea)
-{
- yasm_insn_operand *retval = yasm_xmalloc(sizeof(yasm_insn_operand));
-
- retval->type = YASM_INSN__OPERAND_MEMORY;
- retval->data.ea = ea;
- retval->seg = 0;
- retval->targetmod = 0;
- retval->size = 0;
- retval->deref = 0;
- retval->strict = 0;
- retval->size = ea->data_len * 8;
-
- return retval;
-}
-
-yasm_insn_operand *
-yasm_operand_create_imm(/*@only@*/ yasm_expr *val)
-{
- yasm_insn_operand *retval;
- const uintptr_t *reg;
-
- reg = yasm_expr_get_reg(&val, 0);
- if (reg) {
- retval = yasm_operand_create_reg(*reg);
- yasm_expr_destroy(val);
- } else {
- retval = yasm_xmalloc(sizeof(yasm_insn_operand));
- retval->type = YASM_INSN__OPERAND_IMM;
- retval->data.val = val;
- retval->seg = 0;
- retval->targetmod = 0;
- retval->size = 0;
- retval->deref = 0;
- retval->strict = 0;
- }
-
- return retval;
-}
-
-yasm_insn_operand *
-yasm_insn_ops_append(yasm_insn *insn, yasm_insn_operand *op)
-{
- if (op) {
- insn->num_operands++;
- STAILQ_INSERT_TAIL(&insn->operands, op, link);
- return op;
- }
- return (yasm_insn_operand *)NULL;
-}
-
-void
-yasm_insn_add_prefix(yasm_insn *insn, uintptr_t prefix)
-{
- insn->prefixes =
- yasm_xrealloc(insn->prefixes,
- (insn->num_prefixes+1)*sizeof(uintptr_t));
- insn->prefixes[insn->num_prefixes] = prefix;
- insn->num_prefixes++;
-}
-
-void
-yasm_insn_add_seg_prefix(yasm_insn *insn, uintptr_t segreg)
-{
- insn->segregs =
- yasm_xrealloc(insn->segregs, (insn->num_segregs+1)*sizeof(uintptr_t));
- insn->segregs[insn->num_segregs] = segreg;
- insn->num_segregs++;
-}
-
-void
-yasm_insn_initialize(yasm_insn *insn)
-{
- STAILQ_INIT(&insn->operands);
-
- insn->prefixes = NULL;
- insn->segregs = NULL;
-
- insn->num_operands = 0;
- insn->num_prefixes = 0;
- insn->num_segregs = 0;
-}
-
-void
-yasm_insn_delete(yasm_insn *insn,
- void (*ea_destroy) (/*@only@*/ yasm_effaddr *))
-{
- if (insn->num_operands > 0) {
- yasm_insn_operand *cur, *next;
-
- cur = STAILQ_FIRST(&insn->operands);
- while (cur) {
- next = STAILQ_NEXT(cur, link);
- switch (cur->type) {
- case YASM_INSN__OPERAND_MEMORY:
- ea_destroy(cur->data.ea);
- break;
- case YASM_INSN__OPERAND_IMM:
- yasm_expr_destroy(cur->data.val);
- break;
- default:
- break;
- }
- yasm_xfree(cur);
- cur = next;
- }
- }
- if (insn->num_prefixes > 0)
- yasm_xfree(insn->prefixes);
- if (insn->num_segregs > 0)
- yasm_xfree(insn->segregs);
-}
-
-void
-yasm_insn_print(const yasm_insn *insn, FILE *f, int indent_level)
-{
- const yasm_insn_operand *op;
-
- STAILQ_FOREACH (op, &insn->operands, link) {
- switch (op->type) {
- case YASM_INSN__OPERAND_REG:
- fprintf(f, "%*sReg=", indent_level, "");
- /*yasm_arch_reg_print(arch, op->data.reg, f);*/
- fprintf(f, "\n");
- break;
- case YASM_INSN__OPERAND_SEGREG:
- fprintf(f, "%*sSegReg=", indent_level, "");
- /*yasm_arch_segreg_print(arch, op->data.reg, f);*/
- fprintf(f, "\n");
- break;
- case YASM_INSN__OPERAND_MEMORY:
- fprintf(f, "%*sMemory=\n", indent_level, "");
- /*yasm_arch_ea_print(arch, op->data.ea, f, indent_level);*/
- break;
- case YASM_INSN__OPERAND_IMM:
- fprintf(f, "%*sImm=", indent_level, "");
- yasm_expr_print(op->data.val, f);
- fprintf(f, "\n");
- break;
- }
- fprintf(f, "%*sTargetMod=%lx\n", indent_level+1, "",
- (unsigned long)op->targetmod);
- fprintf(f, "%*sSize=%u\n", indent_level+1, "", op->size);
- fprintf(f, "%*sDeref=%d, Strict=%d\n", indent_level+1, "",
- (int)op->deref, (int)op->strict);
- }
-}
-
-void
-yasm_insn_finalize(yasm_insn *insn)
-{
- unsigned int i;
- yasm_insn_operand *op;
- yasm_error_class eclass;
- char *str, *xrefstr;
- unsigned long xrefline;
-
- /* Simplify the operands' expressions first. */
- for (i = 0, op = yasm_insn_ops_first(insn);
- op && i<insn->num_operands; op = yasm_insn_op_next(op), i++) {
- /* Check operand type */
- switch (op->type) {
- case YASM_INSN__OPERAND_MEMORY:
- /* Don't get over-ambitious here; some archs' memory expr
- * parser are sensitive to the presence of *1, etc, so don't
- * simplify reg*1 identities.
- */
- if (op->data.ea)
- op->data.ea->disp.abs =
- yasm_expr__level_tree(op->data.ea->disp.abs, 1, 1, 0,
- 0, NULL, NULL);
- if (yasm_error_occurred()) {
- /* Add a pointer to where it was used to the error */
- yasm_error_fetch(&eclass, &str, &xrefline, &xrefstr);
- if (xrefstr) {
- yasm_error_set_xref(xrefline, "%s", xrefstr);
- yasm_xfree(xrefstr);
- }
- if (str) {
- yasm_error_set(eclass, "%s in memory expression", str);
- yasm_xfree(str);
- }
- return;
- }
- break;
- case YASM_INSN__OPERAND_IMM:
- op->data.val =
- yasm_expr__level_tree(op->data.val, 1, 1, 1, 0, NULL,
- NULL);
- if (yasm_error_occurred()) {
- /* Add a pointer to where it was used to the error */
- yasm_error_fetch(&eclass, &str, &xrefline, &xrefstr);
- if (xrefstr) {
- yasm_error_set_xref(xrefline, "%s", xrefstr);
- yasm_xfree(xrefstr);
- }
- if (str) {
- yasm_error_set(eclass, "%s in immediate expression",
- str);
- yasm_xfree(str);
- }
- return;
- }
- break;
- default:
- break;
- }
- }
-}
+/*
+ * Mnemonic instruction bytecode
+ *
+ * Copyright (C) 2005-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "util.h"
+
+#include "libyasm-stdint.h"
+#include "coretype.h"
+
+#include "errwarn.h"
+#include "expr.h"
+#include "value.h"
+
+#include "bytecode.h"
+#include "insn.h"
+#include "arch.h"
+
+
+void
+yasm_ea_set_segreg(yasm_effaddr *ea, uintptr_t segreg)
+{
+ if (!ea)
+ return;
+
+ if (segreg != 0 && ea->segreg != 0)
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("multiple segment overrides, using leftmost"));
+
+ ea->segreg = segreg;
+}
+
+yasm_insn_operand *
+yasm_operand_create_reg(uintptr_t reg)
+{
+ yasm_insn_operand *retval = yasm_xmalloc(sizeof(yasm_insn_operand));
+
+ retval->type = YASM_INSN__OPERAND_REG;
+ retval->data.reg = reg;
+ retval->seg = 0;
+ retval->targetmod = 0;
+ retval->size = 0;
+ retval->deref = 0;
+ retval->strict = 0;
+
+ return retval;
+}
+
+yasm_insn_operand *
+yasm_operand_create_segreg(uintptr_t segreg)
+{
+ yasm_insn_operand *retval = yasm_xmalloc(sizeof(yasm_insn_operand));
+
+ retval->type = YASM_INSN__OPERAND_SEGREG;
+ retval->data.reg = segreg;
+ retval->seg = 0;
+ retval->targetmod = 0;
+ retval->size = 0;
+ retval->deref = 0;
+ retval->strict = 0;
+
+ return retval;
+}
+
+yasm_insn_operand *
+yasm_operand_create_mem(/*@only@*/ yasm_effaddr *ea)
+{
+ yasm_insn_operand *retval = yasm_xmalloc(sizeof(yasm_insn_operand));
+
+ retval->type = YASM_INSN__OPERAND_MEMORY;
+ retval->data.ea = ea;
+ retval->seg = 0;
+ retval->targetmod = 0;
+ retval->size = 0;
+ retval->deref = 0;
+ retval->strict = 0;
+ retval->size = ea->data_len * 8;
+
+ return retval;
+}
+
+yasm_insn_operand *
+yasm_operand_create_imm(/*@only@*/ yasm_expr *val)
+{
+ yasm_insn_operand *retval;
+ const uintptr_t *reg;
+
+ reg = yasm_expr_get_reg(&val, 0);
+ if (reg) {
+ retval = yasm_operand_create_reg(*reg);
+ yasm_expr_destroy(val);
+ } else {
+ retval = yasm_xmalloc(sizeof(yasm_insn_operand));
+ retval->type = YASM_INSN__OPERAND_IMM;
+ retval->data.val = val;
+ retval->seg = 0;
+ retval->targetmod = 0;
+ retval->size = 0;
+ retval->deref = 0;
+ retval->strict = 0;
+ }
+
+ return retval;
+}
+
+yasm_insn_operand *
+yasm_insn_ops_append(yasm_insn *insn, yasm_insn_operand *op)
+{
+ if (op) {
+ insn->num_operands++;
+ STAILQ_INSERT_TAIL(&insn->operands, op, link);
+ return op;
+ }
+ return (yasm_insn_operand *)NULL;
+}
+
+void
+yasm_insn_add_prefix(yasm_insn *insn, uintptr_t prefix)
+{
+ insn->prefixes =
+ yasm_xrealloc(insn->prefixes,
+ (insn->num_prefixes+1)*sizeof(uintptr_t));
+ insn->prefixes[insn->num_prefixes] = prefix;
+ insn->num_prefixes++;
+}
+
+void
+yasm_insn_add_seg_prefix(yasm_insn *insn, uintptr_t segreg)
+{
+ insn->segregs =
+ yasm_xrealloc(insn->segregs, (insn->num_segregs+1)*sizeof(uintptr_t));
+ insn->segregs[insn->num_segregs] = segreg;
+ insn->num_segregs++;
+}
+
+void
+yasm_insn_initialize(yasm_insn *insn)
+{
+ STAILQ_INIT(&insn->operands);
+
+ insn->prefixes = NULL;
+ insn->segregs = NULL;
+
+ insn->num_operands = 0;
+ insn->num_prefixes = 0;
+ insn->num_segregs = 0;
+}
+
+void
+yasm_insn_delete(yasm_insn *insn,
+ void (*ea_destroy) (/*@only@*/ yasm_effaddr *))
+{
+ if (insn->num_operands > 0) {
+ yasm_insn_operand *cur, *next;
+
+ cur = STAILQ_FIRST(&insn->operands);
+ while (cur) {
+ next = STAILQ_NEXT(cur, link);
+ switch (cur->type) {
+ case YASM_INSN__OPERAND_MEMORY:
+ ea_destroy(cur->data.ea);
+ break;
+ case YASM_INSN__OPERAND_IMM:
+ yasm_expr_destroy(cur->data.val);
+ break;
+ default:
+ break;
+ }
+ yasm_xfree(cur);
+ cur = next;
+ }
+ }
+ if (insn->num_prefixes > 0)
+ yasm_xfree(insn->prefixes);
+ if (insn->num_segregs > 0)
+ yasm_xfree(insn->segregs);
+}
+
+void
+yasm_insn_print(const yasm_insn *insn, FILE *f, int indent_level)
+{
+ const yasm_insn_operand *op;
+
+ STAILQ_FOREACH (op, &insn->operands, link) {
+ switch (op->type) {
+ case YASM_INSN__OPERAND_REG:
+ fprintf(f, "%*sReg=", indent_level, "");
+ /*yasm_arch_reg_print(arch, op->data.reg, f);*/
+ fprintf(f, "\n");
+ break;
+ case YASM_INSN__OPERAND_SEGREG:
+ fprintf(f, "%*sSegReg=", indent_level, "");
+ /*yasm_arch_segreg_print(arch, op->data.reg, f);*/
+ fprintf(f, "\n");
+ break;
+ case YASM_INSN__OPERAND_MEMORY:
+ fprintf(f, "%*sMemory=\n", indent_level, "");
+ /*yasm_arch_ea_print(arch, op->data.ea, f, indent_level);*/
+ break;
+ case YASM_INSN__OPERAND_IMM:
+ fprintf(f, "%*sImm=", indent_level, "");
+ yasm_expr_print(op->data.val, f);
+ fprintf(f, "\n");
+ break;
+ }
+ fprintf(f, "%*sTargetMod=%lx\n", indent_level+1, "",
+ (unsigned long)op->targetmod);
+ fprintf(f, "%*sSize=%u\n", indent_level+1, "", op->size);
+ fprintf(f, "%*sDeref=%d, Strict=%d\n", indent_level+1, "",
+ (int)op->deref, (int)op->strict);
+ }
+}
+
+void
+yasm_insn_finalize(yasm_insn *insn)
+{
+ unsigned int i;
+ yasm_insn_operand *op;
+ yasm_error_class eclass;
+ char *str, *xrefstr;
+ unsigned long xrefline;
+
+ /* Simplify the operands' expressions first. */
+ for (i = 0, op = yasm_insn_ops_first(insn);
+ op && i<insn->num_operands; op = yasm_insn_op_next(op), i++) {
+ /* Check operand type */
+ switch (op->type) {
+ case YASM_INSN__OPERAND_MEMORY:
+ /* Don't get over-ambitious here; some archs' memory expr
+ * parser are sensitive to the presence of *1, etc, so don't
+ * simplify reg*1 identities.
+ */
+ if (op->data.ea)
+ op->data.ea->disp.abs =
+ yasm_expr__level_tree(op->data.ea->disp.abs, 1, 1, 0,
+ 0, NULL, NULL);
+ if (yasm_error_occurred()) {
+ /* Add a pointer to where it was used to the error */
+ yasm_error_fetch(&eclass, &str, &xrefline, &xrefstr);
+ if (xrefstr) {
+ yasm_error_set_xref(xrefline, "%s", xrefstr);
+ yasm_xfree(xrefstr);
+ }
+ if (str) {
+ yasm_error_set(eclass, "%s in memory expression", str);
+ yasm_xfree(str);
+ }
+ return;
+ }
+ break;
+ case YASM_INSN__OPERAND_IMM:
+ op->data.val =
+ yasm_expr__level_tree(op->data.val, 1, 1, 1, 0, NULL,
+ NULL);
+ if (yasm_error_occurred()) {
+ /* Add a pointer to where it was used to the error */
+ yasm_error_fetch(&eclass, &str, &xrefline, &xrefstr);
+ if (xrefstr) {
+ yasm_error_set_xref(xrefline, "%s", xrefstr);
+ yasm_xfree(xrefstr);
+ }
+ if (str) {
+ yasm_error_set(eclass, "%s in immediate expression",
+ str);
+ yasm_xfree(str);
+ }
+ return;
+ }
+ break;
+ default:
+ break;
+ }
+ }
+}
diff --git a/contrib/tools/yasm/libyasm/insn.h b/contrib/tools/yasm/libyasm/insn.h
index 7400afbc88..d2d175d039 100644
--- a/contrib/tools/yasm/libyasm/insn.h
+++ b/contrib/tools/yasm/libyasm/insn.h
@@ -1,269 +1,269 @@
-/**
- * \file libyasm/insn.h
- * \brief YASM mnenomic instruction.
- *
- * \license
- * Copyright (C) 2002-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- * \endlicense
- */
-#ifndef YASM_INSN_H
-#define YASM_INSN_H
-
-#ifndef YASM_LIB_DECL
-#define YASM_LIB_DECL
-#endif
-
-/** Base structure for an effective address. As with all base
- * structures, must be present as the first element in any
- * #yasm_arch implementation of an effective address.
- */
-struct yasm_effaddr {
- yasm_value disp; /**< address displacement */
-
- /** Segment register override (0 if none). */
- uintptr_t segreg;
-
- /** 1 if length of disp must be >0. */
- unsigned int need_nonzero_len:1;
-
- /** 1 if a displacement should be present in the output. */
- unsigned int need_disp:1;
-
- /** 1 if reg*2 should not be split into reg+reg. (0 if not).
- * This flag indicates (for architectures that support complex effective
- * addresses such as x86) if various types of complex effective addresses
- * can be split into different forms in order to minimize instruction
- * length.
- */
- unsigned int nosplit:1;
-
- /** 1 if effective address is /definitely/ an effective address.
- * This is used in e.g. the GAS parser to differentiate
- * between "expr" (which might or might not be an effective address) and
- * "expr(,1)" (which is definitely an effective address).
- */
- unsigned int strong:1;
-
- /** 1 if effective address is forced PC-relative. */
- unsigned int pc_rel:1;
-
- /** 1 if effective address is forced non-PC-relative. */
- unsigned int not_pc_rel:1;
-
- /** length of pointed data (in bytes), 0 if unknown. */
- unsigned int data_len;
-};
-
-/** An instruction operand (opaque type). */
-typedef struct yasm_insn_operand yasm_insn_operand;
-
-/** The type of an instruction operand. */
-typedef enum yasm_insn_operand_type {
- YASM_INSN__OPERAND_REG = 1, /**< A register. */
- YASM_INSN__OPERAND_SEGREG, /**< A segment register. */
- YASM_INSN__OPERAND_MEMORY, /**< An effective address
- * (memory reference). */
- YASM_INSN__OPERAND_IMM /**< An immediate or jump target. */
-} yasm_insn_operand_type;
-
-/** An instruction operand. */
-struct yasm_insn_operand {
- /** Link for building linked list of operands. \internal */
- /*@reldef@*/ STAILQ_ENTRY(yasm_insn_operand) link;
-
- /** Operand data. */
- union {
- uintptr_t reg; /**< Arch data for reg/segreg. */
- yasm_effaddr *ea; /**< Effective address for memory references. */
- yasm_expr *val; /**< Value of immediate or jump target. */
- } data;
-
- yasm_expr *seg; /**< Segment expression */
-
- uintptr_t targetmod; /**< Arch target modifier, 0 if none. */
-
- /** Specified size of the operand, in bits. 0 if not user-specified. */
- unsigned int size:16;
-
- /** Nonzero if dereference. Used for "*foo" in GAS.
- * The reason for this is that by default in GAS, an unprefixed value
- * is a memory address, except for jumps/calls, in which case it needs a
- * "*" prefix to become a memory address (otherwise it's an immediate).
- * This isn't knowable in the parser stage, so the parser sets this flag
- * to indicate the "*" prefix has been used, and the arch needs to adjust
- * the operand type appropriately depending on the instruction type.
- */
- unsigned int deref:1;
-
- /** Nonzero if strict. Used for "strict foo" in NASM.
- * This is used to inhibit optimization on otherwise "sized" values.
- * For example, the user may just want to be explicit with the size on
- * "push dword 4", but not actually want to force the immediate size to
- * 4 bytes (rather wanting the optimizer to optimize it down to 1 byte as
- * though "dword" was not specified). To indicate the immediate should
- * actually be forced to 4 bytes, the user needs to write
- * "push strict dword 4", which sets this flag.
- */
- unsigned int strict:1;
-
- /** Operand type. */
- unsigned int type:4;
-};
-
-/** Base structure for "instruction" bytecodes. These are the mnenomic
- * (rather than raw) representation of instructions. As with all base
- * structures, must be present as the first element in any
- * #yasm_arch implementation of mnenomic instruction bytecodes.
- */
-struct yasm_insn {
- /** Linked list of operands. */
- /*@reldef@*/ STAILQ_HEAD(yasm_insn_operands, yasm_insn_operand) operands;
-
- /** Array of prefixes. */
- /*@null@*/ uintptr_t *prefixes;
-
- /** Array of segment prefixes. */
- /*@null@*/ uintptr_t *segregs;
-
- unsigned int num_operands; /**< Number of operands. */
- unsigned int num_prefixes; /**< Number of prefixes. */
- unsigned int num_segregs; /**< Number of segment prefixes. */
-};
-
-/** Set segment override for an effective address.
- * Some architectures (such as x86) support segment overrides on effective
- * addresses. A override of an override will result in a warning.
- * \param ea effective address
- * \param segreg segment register (0 if none)
- */
-YASM_LIB_DECL
-void yasm_ea_set_segreg(yasm_effaddr *ea, uintptr_t segreg);
-
-/** Create an instruction operand from a register.
- * \param reg register
- * \return Newly allocated operand.
- */
-YASM_LIB_DECL
-yasm_insn_operand *yasm_operand_create_reg(uintptr_t reg);
-
-/** Create an instruction operand from a segment register.
- * \param segreg segment register
- * \return Newly allocated operand.
- */
-YASM_LIB_DECL
-yasm_insn_operand *yasm_operand_create_segreg(uintptr_t segreg);
-
-/** Create an instruction operand from an effective address.
- * \param ea effective address
- * \return Newly allocated operand.
- */
-YASM_LIB_DECL
-yasm_insn_operand *yasm_operand_create_mem(/*@only@*/ yasm_effaddr *ea);
-
-/** Create an instruction operand from an immediate expression.
- * Looks for cases of a single register and creates a register variant of
- * #yasm_insn_operand.
- * \param val immediate expression
- * \return Newly allocated operand.
- */
-YASM_LIB_DECL
-yasm_insn_operand *yasm_operand_create_imm(/*@only@*/ yasm_expr *val);
-
-/** Get the first operand in an instruction.
- * \param insn instruction
- * \return First operand (NULL if no operands).
- */
-yasm_insn_operand *yasm_insn_ops_first(yasm_insn *insn);
-#define yasm_insn_ops_first(insn) STAILQ_FIRST(&((insn)->operands))
-
-/** Get the next operand in an instruction.
- * \param op previous operand
- * \return Next operand (NULL if op was the last operand).
- */
-yasm_insn_operand *yasm_insn_op_next(yasm_insn_operand *op);
-#define yasm_insn_op_next(cur) STAILQ_NEXT(cur, link)
-
-/** Add operand to the end of an instruction.
- * \note Does not make a copy of the operand; so don't pass this function
- * static or local variables, and discard the op pointer after calling
- * this function.
- * \param insn instruction
- * \param op operand (may be NULL)
- * \return If operand was actually appended (it wasn't NULL), the operand;
- * otherwise NULL.
- */
-YASM_LIB_DECL
-/*@null@*/ yasm_insn_operand *yasm_insn_ops_append
- (yasm_insn *insn,
- /*@returned@*/ /*@null@*/ yasm_insn_operand *op);
-
-/** Associate a prefix with an instruction.
- * \param insn instruction
- * \param prefix data that identifies the prefix
- */
-YASM_LIB_DECL
-void yasm_insn_add_prefix(yasm_insn *insn, uintptr_t prefix);
-
-/** Associate a segment prefix with an instruction.
- * \param insn instruction
- * \param segreg data that identifies the segment register
- */
-YASM_LIB_DECL
-void yasm_insn_add_seg_prefix(yasm_insn *insn, uintptr_t segreg);
-
-/** Initialize the common parts of an instruction.
- * \internal For use by yasm_arch implementations only.
- * \param insn instruction
- */
-YASM_LIB_DECL
-void yasm_insn_initialize(/*@out@*/ yasm_insn *insn);
-
-/** Delete the common parts of an instruction.
- * \internal For use by yasm_arch implementations only.
- * \param insn instruction
- * \param content if nonzero, deletes content of each operand
- * \param arch architecture
- */
-YASM_LIB_DECL
-void yasm_insn_delete(yasm_insn *insn,
- void (*ea_destroy) (/*@only@*/ yasm_effaddr *));
-
-/** Print a list of instruction operands. For debugging purposes.
- * \internal For use by yasm_arch implementations only.
- * \param insn instruction
- * \param f file
- * \param indent_level indentation level
- * \param arch architecture
- */
-YASM_LIB_DECL
-void yasm_insn_print(const yasm_insn *insn, FILE *f, int indent_level);
-
-/** Finalize the common parts of an instruction.
- * \internal For use by yasm_arch implementations only.
- * \param insn instruction
- */
-YASM_LIB_DECL
-void yasm_insn_finalize(yasm_insn *insn);
-
-#endif
+/**
+ * \file libyasm/insn.h
+ * \brief YASM mnenomic instruction.
+ *
+ * \license
+ * Copyright (C) 2002-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * - Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ * \endlicense
+ */
+#ifndef YASM_INSN_H
+#define YASM_INSN_H
+
+#ifndef YASM_LIB_DECL
+#define YASM_LIB_DECL
+#endif
+
+/** Base structure for an effective address. As with all base
+ * structures, must be present as the first element in any
+ * #yasm_arch implementation of an effective address.
+ */
+struct yasm_effaddr {
+ yasm_value disp; /**< address displacement */
+
+ /** Segment register override (0 if none). */
+ uintptr_t segreg;
+
+ /** 1 if length of disp must be >0. */
+ unsigned int need_nonzero_len:1;
+
+ /** 1 if a displacement should be present in the output. */
+ unsigned int need_disp:1;
+
+ /** 1 if reg*2 should not be split into reg+reg. (0 if not).
+ * This flag indicates (for architectures that support complex effective
+ * addresses such as x86) if various types of complex effective addresses
+ * can be split into different forms in order to minimize instruction
+ * length.
+ */
+ unsigned int nosplit:1;
+
+ /** 1 if effective address is /definitely/ an effective address.
+ * This is used in e.g. the GAS parser to differentiate
+ * between "expr" (which might or might not be an effective address) and
+ * "expr(,1)" (which is definitely an effective address).
+ */
+ unsigned int strong:1;
+
+ /** 1 if effective address is forced PC-relative. */
+ unsigned int pc_rel:1;
+
+ /** 1 if effective address is forced non-PC-relative. */
+ unsigned int not_pc_rel:1;
+
+ /** length of pointed data (in bytes), 0 if unknown. */
+ unsigned int data_len;
+};
+
+/** An instruction operand (opaque type). */
+typedef struct yasm_insn_operand yasm_insn_operand;
+
+/** The type of an instruction operand. */
+typedef enum yasm_insn_operand_type {
+ YASM_INSN__OPERAND_REG = 1, /**< A register. */
+ YASM_INSN__OPERAND_SEGREG, /**< A segment register. */
+ YASM_INSN__OPERAND_MEMORY, /**< An effective address
+ * (memory reference). */
+ YASM_INSN__OPERAND_IMM /**< An immediate or jump target. */
+} yasm_insn_operand_type;
+
+/** An instruction operand. */
+struct yasm_insn_operand {
+ /** Link for building linked list of operands. \internal */
+ /*@reldef@*/ STAILQ_ENTRY(yasm_insn_operand) link;
+
+ /** Operand data. */
+ union {
+ uintptr_t reg; /**< Arch data for reg/segreg. */
+ yasm_effaddr *ea; /**< Effective address for memory references. */
+ yasm_expr *val; /**< Value of immediate or jump target. */
+ } data;
+
+ yasm_expr *seg; /**< Segment expression */
+
+ uintptr_t targetmod; /**< Arch target modifier, 0 if none. */
+
+ /** Specified size of the operand, in bits. 0 if not user-specified. */
+ unsigned int size:16;
+
+ /** Nonzero if dereference. Used for "*foo" in GAS.
+ * The reason for this is that by default in GAS, an unprefixed value
+ * is a memory address, except for jumps/calls, in which case it needs a
+ * "*" prefix to become a memory address (otherwise it's an immediate).
+ * This isn't knowable in the parser stage, so the parser sets this flag
+ * to indicate the "*" prefix has been used, and the arch needs to adjust
+ * the operand type appropriately depending on the instruction type.
+ */
+ unsigned int deref:1;
+
+ /** Nonzero if strict. Used for "strict foo" in NASM.
+ * This is used to inhibit optimization on otherwise "sized" values.
+ * For example, the user may just want to be explicit with the size on
+ * "push dword 4", but not actually want to force the immediate size to
+ * 4 bytes (rather wanting the optimizer to optimize it down to 1 byte as
+ * though "dword" was not specified). To indicate the immediate should
+ * actually be forced to 4 bytes, the user needs to write
+ * "push strict dword 4", which sets this flag.
+ */
+ unsigned int strict:1;
+
+ /** Operand type. */
+ unsigned int type:4;
+};
+
+/** Base structure for "instruction" bytecodes. These are the mnenomic
+ * (rather than raw) representation of instructions. As with all base
+ * structures, must be present as the first element in any
+ * #yasm_arch implementation of mnenomic instruction bytecodes.
+ */
+struct yasm_insn {
+ /** Linked list of operands. */
+ /*@reldef@*/ STAILQ_HEAD(yasm_insn_operands, yasm_insn_operand) operands;
+
+ /** Array of prefixes. */
+ /*@null@*/ uintptr_t *prefixes;
+
+ /** Array of segment prefixes. */
+ /*@null@*/ uintptr_t *segregs;
+
+ unsigned int num_operands; /**< Number of operands. */
+ unsigned int num_prefixes; /**< Number of prefixes. */
+ unsigned int num_segregs; /**< Number of segment prefixes. */
+};
+
+/** Set segment override for an effective address.
+ * Some architectures (such as x86) support segment overrides on effective
+ * addresses. A override of an override will result in a warning.
+ * \param ea effective address
+ * \param segreg segment register (0 if none)
+ */
+YASM_LIB_DECL
+void yasm_ea_set_segreg(yasm_effaddr *ea, uintptr_t segreg);
+
+/** Create an instruction operand from a register.
+ * \param reg register
+ * \return Newly allocated operand.
+ */
+YASM_LIB_DECL
+yasm_insn_operand *yasm_operand_create_reg(uintptr_t reg);
+
+/** Create an instruction operand from a segment register.
+ * \param segreg segment register
+ * \return Newly allocated operand.
+ */
+YASM_LIB_DECL
+yasm_insn_operand *yasm_operand_create_segreg(uintptr_t segreg);
+
+/** Create an instruction operand from an effective address.
+ * \param ea effective address
+ * \return Newly allocated operand.
+ */
+YASM_LIB_DECL
+yasm_insn_operand *yasm_operand_create_mem(/*@only@*/ yasm_effaddr *ea);
+
+/** Create an instruction operand from an immediate expression.
+ * Looks for cases of a single register and creates a register variant of
+ * #yasm_insn_operand.
+ * \param val immediate expression
+ * \return Newly allocated operand.
+ */
+YASM_LIB_DECL
+yasm_insn_operand *yasm_operand_create_imm(/*@only@*/ yasm_expr *val);
+
+/** Get the first operand in an instruction.
+ * \param insn instruction
+ * \return First operand (NULL if no operands).
+ */
+yasm_insn_operand *yasm_insn_ops_first(yasm_insn *insn);
+#define yasm_insn_ops_first(insn) STAILQ_FIRST(&((insn)->operands))
+
+/** Get the next operand in an instruction.
+ * \param op previous operand
+ * \return Next operand (NULL if op was the last operand).
+ */
+yasm_insn_operand *yasm_insn_op_next(yasm_insn_operand *op);
+#define yasm_insn_op_next(cur) STAILQ_NEXT(cur, link)
+
+/** Add operand to the end of an instruction.
+ * \note Does not make a copy of the operand; so don't pass this function
+ * static or local variables, and discard the op pointer after calling
+ * this function.
+ * \param insn instruction
+ * \param op operand (may be NULL)
+ * \return If operand was actually appended (it wasn't NULL), the operand;
+ * otherwise NULL.
+ */
+YASM_LIB_DECL
+/*@null@*/ yasm_insn_operand *yasm_insn_ops_append
+ (yasm_insn *insn,
+ /*@returned@*/ /*@null@*/ yasm_insn_operand *op);
+
+/** Associate a prefix with an instruction.
+ * \param insn instruction
+ * \param prefix data that identifies the prefix
+ */
+YASM_LIB_DECL
+void yasm_insn_add_prefix(yasm_insn *insn, uintptr_t prefix);
+
+/** Associate a segment prefix with an instruction.
+ * \param insn instruction
+ * \param segreg data that identifies the segment register
+ */
+YASM_LIB_DECL
+void yasm_insn_add_seg_prefix(yasm_insn *insn, uintptr_t segreg);
+
+/** Initialize the common parts of an instruction.
+ * \internal For use by yasm_arch implementations only.
+ * \param insn instruction
+ */
+YASM_LIB_DECL
+void yasm_insn_initialize(/*@out@*/ yasm_insn *insn);
+
+/** Delete the common parts of an instruction.
+ * \internal For use by yasm_arch implementations only.
+ * \param insn instruction
+ * \param content if nonzero, deletes content of each operand
+ * \param arch architecture
+ */
+YASM_LIB_DECL
+void yasm_insn_delete(yasm_insn *insn,
+ void (*ea_destroy) (/*@only@*/ yasm_effaddr *));
+
+/** Print a list of instruction operands. For debugging purposes.
+ * \internal For use by yasm_arch implementations only.
+ * \param insn instruction
+ * \param f file
+ * \param indent_level indentation level
+ * \param arch architecture
+ */
+YASM_LIB_DECL
+void yasm_insn_print(const yasm_insn *insn, FILE *f, int indent_level);
+
+/** Finalize the common parts of an instruction.
+ * \internal For use by yasm_arch implementations only.
+ * \param insn instruction
+ */
+YASM_LIB_DECL
+void yasm_insn_finalize(yasm_insn *insn);
+
+#endif
diff --git a/contrib/tools/yasm/libyasm/intnum.c b/contrib/tools/yasm/libyasm/intnum.c
index 961bf31394..6feba33481 100644
--- a/contrib/tools/yasm/libyasm/intnum.c
+++ b/contrib/tools/yasm/libyasm/intnum.c
@@ -1,1096 +1,1096 @@
-/*
- * Integer number functions.
- *
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include "util.h"
-
-#include <ctype.h>
-#include <limits.h>
-
-#include "coretype.h"
-#include "bitvect.h"
-#include "file.h"
-
-#include "errwarn.h"
-#include "intnum.h"
-
-
-/* "Native" "word" size for intnum calculations. */
-#define BITVECT_NATIVE_SIZE 256
-
-struct yasm_intnum {
- union val {
- long l; /* integer value (for integers <32 bits) */
- wordptr bv; /* bit vector (for integers >=32 bits) */
- } val;
- enum { INTNUM_L, INTNUM_BV } type;
-};
-
-/* static bitvect used for conversions */
-static /*@only@*/ wordptr conv_bv;
-
-/* static bitvects used for computation */
-static /*@only@*/ wordptr result, spare, op1static, op2static;
-
-static /*@only@*/ BitVector_from_Dec_static_data *from_dec_data;
-
-
-void
-yasm_intnum_initialize(void)
-{
- conv_bv = BitVector_Create(BITVECT_NATIVE_SIZE, FALSE);
- result = BitVector_Create(BITVECT_NATIVE_SIZE, FALSE);
- spare = BitVector_Create(BITVECT_NATIVE_SIZE, FALSE);
- op1static = BitVector_Create(BITVECT_NATIVE_SIZE, FALSE);
- op2static = BitVector_Create(BITVECT_NATIVE_SIZE, FALSE);
- from_dec_data = BitVector_from_Dec_static_Boot(BITVECT_NATIVE_SIZE);
-}
-
-void
-yasm_intnum_cleanup(void)
-{
- BitVector_from_Dec_static_Shutdown(from_dec_data);
- BitVector_Destroy(op2static);
- BitVector_Destroy(op1static);
- BitVector_Destroy(spare);
- BitVector_Destroy(result);
- BitVector_Destroy(conv_bv);
-}
-
-/* Compress a bitvector into intnum storage.
- * If saved as a bitvector, clones the passed bitvector.
- * Can modify the passed bitvector.
- */
-static void
-intnum_frombv(/*@out@*/ yasm_intnum *intn, wordptr bv)
-{
- if (Set_Max(bv) < 31) {
- intn->type = INTNUM_L;
- intn->val.l = (long)BitVector_Chunk_Read(bv, 31, 0);
- } else if (BitVector_msb_(bv)) {
- /* Negative, negate and see if we'll fit into a long. */
- unsigned long ul;
- BitVector_Negate(bv, bv);
- if (Set_Max(bv) >= 32 ||
- ((ul = BitVector_Chunk_Read(bv, 32, 0)) & 0x80000000)) {
- /* too negative */
- BitVector_Negate(bv, bv);
- intn->type = INTNUM_BV;
- intn->val.bv = BitVector_Clone(bv);
- } else {
- intn->type = INTNUM_L;
- intn->val.l = -((long)ul);
- }
- } else {
- intn->type = INTNUM_BV;
- intn->val.bv = BitVector_Clone(bv);
- }
-}
-
-/* If intnum is a BV, returns its bitvector directly.
- * If not, converts into passed bv and returns that instead.
- */
-static wordptr
-intnum_tobv(/*@returned@*/ wordptr bv, const yasm_intnum *intn)
-{
- if (intn->type == INTNUM_BV)
- return intn->val.bv;
-
- BitVector_Empty(bv);
- if (intn->val.l >= 0)
- BitVector_Chunk_Store(bv, 32, 0, (unsigned long)intn->val.l);
- else {
- BitVector_Chunk_Store(bv, 32, 0, (unsigned long)-intn->val.l);
- BitVector_Negate(bv, bv);
- }
- return bv;
-}
-
-yasm_intnum *
-yasm_intnum_create_dec(char *str)
-{
- yasm_intnum *intn = yasm_xmalloc(sizeof(yasm_intnum));
-
- switch (BitVector_from_Dec_static(from_dec_data, conv_bv,
- (unsigned char *)str)) {
- case ErrCode_Pars:
- yasm_error_set(YASM_ERROR_VALUE, N_("invalid decimal literal"));
- break;
- case ErrCode_Ovfl:
- yasm_error_set(YASM_ERROR_OVERFLOW,
- N_("Numeric constant too large for internal format"));
- break;
- default:
- break;
- }
- intnum_frombv(intn, conv_bv);
- return intn;
-}
-
-yasm_intnum *
-yasm_intnum_create_bin(char *str)
-{
- yasm_intnum *intn = yasm_xmalloc(sizeof(yasm_intnum));
-
- switch (BitVector_from_Bin(conv_bv, (unsigned char *)str)) {
- case ErrCode_Pars:
- yasm_error_set(YASM_ERROR_VALUE, N_("invalid binary literal"));
- break;
- case ErrCode_Ovfl:
- yasm_error_set(YASM_ERROR_OVERFLOW,
- N_("Numeric constant too large for internal format"));
- break;
- default:
- break;
- }
- intnum_frombv(intn, conv_bv);
- return intn;
-}
-
-yasm_intnum *
-yasm_intnum_create_oct(char *str)
-{
- yasm_intnum *intn = yasm_xmalloc(sizeof(yasm_intnum));
-
- switch (BitVector_from_Oct(conv_bv, (unsigned char *)str)) {
- case ErrCode_Pars:
- yasm_error_set(YASM_ERROR_VALUE, N_("invalid octal literal"));
- break;
- case ErrCode_Ovfl:
- yasm_error_set(YASM_ERROR_OVERFLOW,
- N_("Numeric constant too large for internal format"));
- break;
- default:
- break;
- }
- intnum_frombv(intn, conv_bv);
- return intn;
-}
-
-yasm_intnum *
-yasm_intnum_create_hex(char *str)
-{
- yasm_intnum *intn = yasm_xmalloc(sizeof(yasm_intnum));
-
- switch (BitVector_from_Hex(conv_bv, (unsigned char *)str)) {
- case ErrCode_Pars:
- yasm_error_set(YASM_ERROR_VALUE, N_("invalid hex literal"));
- break;
- case ErrCode_Ovfl:
- yasm_error_set(YASM_ERROR_OVERFLOW,
- N_("Numeric constant too large for internal format"));
- break;
- default:
- break;
- }
- intnum_frombv(intn, conv_bv);
- return intn;
-}
-
-/*@-usedef -compdef -uniondef@*/
-yasm_intnum *
-yasm_intnum_create_charconst_nasm(const char *str)
-{
- yasm_intnum *intn = yasm_xmalloc(sizeof(yasm_intnum));
- size_t len = strlen(str);
-
- if(len*8 > BITVECT_NATIVE_SIZE)
- yasm_error_set(YASM_ERROR_OVERFLOW,
- N_("Character constant too large for internal format"));
-
- /* be conservative in choosing bitvect in case MSB is set */
- if (len > 3) {
- BitVector_Empty(conv_bv);
- intn->type = INTNUM_BV;
- } else {
- intn->val.l = 0;
- intn->type = INTNUM_L;
- }
-
- switch (len) {
- case 3:
- intn->val.l |= ((unsigned long)str[2]) & 0xff;
- intn->val.l <<= 8;
- /*@fallthrough@*/
- case 2:
- intn->val.l |= ((unsigned long)str[1]) & 0xff;
- intn->val.l <<= 8;
- /*@fallthrough@*/
- case 1:
- intn->val.l |= ((unsigned long)str[0]) & 0xff;
- case 0:
- break;
- default:
- /* >=32 bit conversion */
- while (len) {
- BitVector_Move_Left(conv_bv, 8);
- BitVector_Chunk_Store(conv_bv, 8, 0,
- ((unsigned long)str[--len]) & 0xff);
- }
- intn->val.bv = BitVector_Clone(conv_bv);
- }
-
- return intn;
-}
-
-yasm_intnum *
-yasm_intnum_create_charconst_tasm(const char *str)
-{
- yasm_intnum *intn = yasm_xmalloc(sizeof(yasm_intnum));
- size_t len = strlen(str);
- size_t i;
-
- if(len*8 > BITVECT_NATIVE_SIZE)
- yasm_error_set(YASM_ERROR_OVERFLOW,
- N_("Character constant too large for internal format"));
-
- /* be conservative in choosing bitvect in case MSB is set */
- if (len > 3) {
- BitVector_Empty(conv_bv);
- intn->type = INTNUM_BV;
- } else {
- intn->val.l = 0;
- intn->type = INTNUM_L;
- }
-
- /* tasm uses big endian notation */
- i = 0;
- switch (len) {
- case 3:
- intn->val.l |= ((unsigned long)str[i++]) & 0xff;
- intn->val.l <<= 8;
- /*@fallthrough@*/
- case 2:
- intn->val.l |= ((unsigned long)str[i++]) & 0xff;
- intn->val.l <<= 8;
- /*@fallthrough@*/
- case 1:
- intn->val.l |= ((unsigned long)str[i++]) & 0xff;
- case 0:
- break;
- default:
- /* >=32 bit conversion */
- while (i < len) {
- BitVector_Chunk_Store(conv_bv, 8, (len-i-1)*8,
- ((unsigned long)str[i]) & 0xff);
- i++;
- }
- intn->val.bv = BitVector_Clone(conv_bv);
- }
-
- return intn;
-}
-/*@=usedef =compdef =uniondef@*/
-
-yasm_intnum *
-yasm_intnum_create_uint(unsigned long i)
-{
- yasm_intnum *intn = yasm_xmalloc(sizeof(yasm_intnum));
-
- if (i > LONG_MAX) {
- /* Too big, store as bitvector */
- intn->val.bv = BitVector_Create(BITVECT_NATIVE_SIZE, TRUE);
- intn->type = INTNUM_BV;
- BitVector_Chunk_Store(intn->val.bv, 32, 0, i);
- } else {
- intn->val.l = (long)i;
- intn->type = INTNUM_L;
- }
-
- return intn;
-}
-
-yasm_intnum *
-yasm_intnum_create_int(long i)
-{
- yasm_intnum *intn = yasm_xmalloc(sizeof(yasm_intnum));
-
- intn->val.l = i;
- intn->type = INTNUM_L;
-
- return intn;
-}
-
-yasm_intnum *
-yasm_intnum_create_leb128(const unsigned char *ptr, int sign,
- unsigned long *size)
-{
- yasm_intnum *intn = yasm_xmalloc(sizeof(yasm_intnum));
- const unsigned char *ptr_orig = ptr;
- unsigned long i = 0;
-
- BitVector_Empty(conv_bv);
- for (;;) {
- BitVector_Chunk_Store(conv_bv, 7, i, *ptr);
- i += 7;
- if ((*ptr & 0x80) != 0x80)
- break;
- ptr++;
- }
-
- *size = (unsigned long)(ptr-ptr_orig)+1;
-
- if(i > BITVECT_NATIVE_SIZE)
- yasm_error_set(YASM_ERROR_OVERFLOW,
- N_("Numeric constant too large for internal format"));
- else if (sign && (*ptr & 0x40) == 0x40)
- BitVector_Interval_Fill(conv_bv, i, BITVECT_NATIVE_SIZE-1);
-
- intnum_frombv(intn, conv_bv);
- return intn;
-}
-
-yasm_intnum *
-yasm_intnum_create_sized(unsigned char *ptr, int sign, size_t srcsize,
- int bigendian)
-{
- yasm_intnum *intn = yasm_xmalloc(sizeof(yasm_intnum));
- unsigned long i = 0;
-
- if (srcsize*8 > BITVECT_NATIVE_SIZE)
- yasm_error_set(YASM_ERROR_OVERFLOW,
- N_("Numeric constant too large for internal format"));
-
- /* Read the buffer into a bitvect */
- BitVector_Empty(conv_bv);
- if (bigendian) {
- /* TODO */
- yasm_internal_error(N_("big endian not implemented"));
- } else {
- for (i = 0; i < srcsize; i++)
- BitVector_Chunk_Store(conv_bv, 8, i*8, ptr[i]);
- }
-
- /* Sign extend if needed */
- if (srcsize*8 < BITVECT_NATIVE_SIZE && sign && (ptr[i-1] & 0x80) == 0x80)
- BitVector_Interval_Fill(conv_bv, i*8, BITVECT_NATIVE_SIZE-1);
-
- intnum_frombv(intn, conv_bv);
- return intn;
-}
-
-yasm_intnum *
-yasm_intnum_copy(const yasm_intnum *intn)
-{
- yasm_intnum *n = yasm_xmalloc(sizeof(yasm_intnum));
-
- switch (intn->type) {
- case INTNUM_L:
- n->val.l = intn->val.l;
- break;
- case INTNUM_BV:
- n->val.bv = BitVector_Clone(intn->val.bv);
- break;
- }
- n->type = intn->type;
-
- return n;
-}
-
-void
-yasm_intnum_destroy(yasm_intnum *intn)
-{
- if (intn->type == INTNUM_BV)
- BitVector_Destroy(intn->val.bv);
- yasm_xfree(intn);
-}
-
-/*@-nullderef -nullpass -branchstate@*/
-int
-yasm_intnum_calc(yasm_intnum *acc, yasm_expr_op op, yasm_intnum *operand)
-{
- boolean carry = 0;
- wordptr op1, op2 = NULL;
- N_int count;
-
- /* Always do computations with in full bit vector.
- * Bit vector results must be calculated through intermediate storage.
- */
- op1 = intnum_tobv(op1static, acc);
- if (operand)
- op2 = intnum_tobv(op2static, operand);
-
- if (!operand && op != YASM_EXPR_NEG && op != YASM_EXPR_NOT &&
- op != YASM_EXPR_LNOT) {
- yasm_error_set(YASM_ERROR_ARITHMETIC,
- N_("operation needs an operand"));
- BitVector_Empty(result);
- return 1;
- }
-
- /* A operation does a bitvector computation if result is allocated. */
- switch (op) {
- case YASM_EXPR_ADD:
- BitVector_add(result, op1, op2, &carry);
- break;
- case YASM_EXPR_SUB:
- BitVector_sub(result, op1, op2, &carry);
- break;
- case YASM_EXPR_MUL:
- BitVector_Multiply(result, op1, op2);
- break;
- case YASM_EXPR_DIV:
- /* TODO: make sure op1 and op2 are unsigned */
- if (BitVector_is_empty(op2)) {
- yasm_error_set(YASM_ERROR_ZERO_DIVISION, N_("divide by zero"));
- BitVector_Empty(result);
- return 1;
- } else
- BitVector_Divide(result, op1, op2, spare);
- break;
- case YASM_EXPR_SIGNDIV:
- if (BitVector_is_empty(op2)) {
- yasm_error_set(YASM_ERROR_ZERO_DIVISION, N_("divide by zero"));
- BitVector_Empty(result);
- return 1;
- } else
- BitVector_Divide(result, op1, op2, spare);
- break;
- case YASM_EXPR_MOD:
- /* TODO: make sure op1 and op2 are unsigned */
- if (BitVector_is_empty(op2)) {
- yasm_error_set(YASM_ERROR_ZERO_DIVISION, N_("divide by zero"));
- BitVector_Empty(result);
- return 1;
- } else
- BitVector_Divide(spare, op1, op2, result);
- break;
- case YASM_EXPR_SIGNMOD:
- if (BitVector_is_empty(op2)) {
- yasm_error_set(YASM_ERROR_ZERO_DIVISION, N_("divide by zero"));
- BitVector_Empty(result);
- return 1;
- } else
- BitVector_Divide(spare, op1, op2, result);
- break;
- case YASM_EXPR_NEG:
- BitVector_Negate(result, op1);
- break;
- case YASM_EXPR_NOT:
- Set_Complement(result, op1);
- break;
- case YASM_EXPR_OR:
- Set_Union(result, op1, op2);
- break;
- case YASM_EXPR_AND:
- Set_Intersection(result, op1, op2);
- break;
- case YASM_EXPR_XOR:
- Set_ExclusiveOr(result, op1, op2);
- break;
- case YASM_EXPR_XNOR:
- Set_ExclusiveOr(result, op1, op2);
- Set_Complement(result, result);
- break;
- case YASM_EXPR_NOR:
- Set_Union(result, op1, op2);
- Set_Complement(result, result);
- break;
- case YASM_EXPR_SHL:
- if (operand->type == INTNUM_L && operand->val.l >= 0) {
- BitVector_Copy(result, op1);
- BitVector_Move_Left(result, (N_int)operand->val.l);
- } else /* don't even bother, just zero result */
- BitVector_Empty(result);
- break;
- case YASM_EXPR_SHR:
- if (operand->type == INTNUM_L && operand->val.l >= 0) {
- BitVector_Copy(result, op1);
- carry = BitVector_msb_(op1);
- count = (N_int)operand->val.l;
- while (count-- > 0)
- BitVector_shift_right(result, carry);
- } else /* don't even bother, just zero result */
- BitVector_Empty(result);
- break;
- case YASM_EXPR_LOR:
- BitVector_Empty(result);
- BitVector_LSB(result, !BitVector_is_empty(op1) ||
- !BitVector_is_empty(op2));
- break;
- case YASM_EXPR_LAND:
- BitVector_Empty(result);
- BitVector_LSB(result, !BitVector_is_empty(op1) &&
- !BitVector_is_empty(op2));
- break;
- case YASM_EXPR_LNOT:
- BitVector_Empty(result);
- BitVector_LSB(result, BitVector_is_empty(op1));
- break;
- case YASM_EXPR_LXOR:
- BitVector_Empty(result);
- BitVector_LSB(result, !BitVector_is_empty(op1) ^
- !BitVector_is_empty(op2));
- break;
- case YASM_EXPR_LXNOR:
- BitVector_Empty(result);
- BitVector_LSB(result, !(!BitVector_is_empty(op1) ^
- !BitVector_is_empty(op2)));
- break;
- case YASM_EXPR_LNOR:
- BitVector_Empty(result);
- BitVector_LSB(result, !(!BitVector_is_empty(op1) ||
- !BitVector_is_empty(op2)));
- break;
- case YASM_EXPR_EQ:
- BitVector_Empty(result);
- BitVector_LSB(result, BitVector_equal(op1, op2));
- break;
- case YASM_EXPR_LT:
- BitVector_Empty(result);
- BitVector_LSB(result, BitVector_Compare(op1, op2) < 0);
- break;
- case YASM_EXPR_GT:
- BitVector_Empty(result);
- BitVector_LSB(result, BitVector_Compare(op1, op2) > 0);
- break;
- case YASM_EXPR_LE:
- BitVector_Empty(result);
- BitVector_LSB(result, BitVector_Compare(op1, op2) <= 0);
- break;
- case YASM_EXPR_GE:
- BitVector_Empty(result);
- BitVector_LSB(result, BitVector_Compare(op1, op2) >= 0);
- break;
- case YASM_EXPR_NE:
- BitVector_Empty(result);
- BitVector_LSB(result, !BitVector_equal(op1, op2));
- break;
- case YASM_EXPR_SEG:
- yasm_error_set(YASM_ERROR_ARITHMETIC, N_("invalid use of '%s'"),
- "SEG");
- break;
- case YASM_EXPR_WRT:
- yasm_error_set(YASM_ERROR_ARITHMETIC, N_("invalid use of '%s'"),
- "WRT");
- break;
- case YASM_EXPR_SEGOFF:
- yasm_error_set(YASM_ERROR_ARITHMETIC, N_("invalid use of '%s'"),
- ":");
- break;
- case YASM_EXPR_IDENT:
- if (result)
- BitVector_Copy(result, op1);
- break;
- default:
- yasm_error_set(YASM_ERROR_ARITHMETIC,
- N_("invalid operation in intnum calculation"));
- BitVector_Empty(result);
- return 1;
- }
-
- /* Try to fit the result into 32 bits if possible */
- if (acc->type == INTNUM_BV)
- BitVector_Destroy(acc->val.bv);
- intnum_frombv(acc, result);
- return 0;
-}
-/*@=nullderef =nullpass =branchstate@*/
-
-int
-yasm_intnum_compare(const yasm_intnum *intn1, const yasm_intnum *intn2)
-{
- wordptr op1, op2;
-
- if (intn1->type == INTNUM_L && intn2->type == INTNUM_L) {
- if (intn1->val.l < intn2->val.l)
- return -1;
- if (intn1->val.l > intn2->val.l)
- return 1;
- return 0;
- }
-
- op1 = intnum_tobv(op1static, intn1);
- op2 = intnum_tobv(op2static, intn2);
- return BitVector_Compare(op1, op2);
-}
-
-void
-yasm_intnum_zero(yasm_intnum *intn)
-{
- yasm_intnum_set_int(intn, 0);
-}
-
-void
-yasm_intnum_set(yasm_intnum *intn, const yasm_intnum *val)
-{
- if (intn->type == val->type) {
- switch (val->type) {
- case INTNUM_L:
- intn->val.l = val->val.l;
- break;
- case INTNUM_BV:
- BitVector_Copy(intn->val.bv, val->val.bv);
- break;
- }
- } else {
- switch (val->type) {
- case INTNUM_L:
- BitVector_Destroy(intn->val.bv);
- intn->val.l = val->val.l;
- break;
- case INTNUM_BV:
- intn->val.bv = BitVector_Clone(val->val.bv);
- break;
- }
- intn->type = val->type;
- }
-}
-
-void
-yasm_intnum_set_uint(yasm_intnum *intn, unsigned long val)
-{
- if (val > LONG_MAX) {
- if (intn->type != INTNUM_BV) {
- intn->val.bv = BitVector_Create(BITVECT_NATIVE_SIZE, TRUE);
- intn->type = INTNUM_BV;
- }
- BitVector_Chunk_Store(intn->val.bv, 32, 0, val);
- } else {
- if (intn->type == INTNUM_BV) {
- BitVector_Destroy(intn->val.bv);
- intn->type = INTNUM_L;
- }
- intn->val.l = (long)val;
- }
-}
-
-void
-yasm_intnum_set_int(yasm_intnum *intn, long val)
-{
- if (intn->type == INTNUM_BV)
- BitVector_Destroy(intn->val.bv);
- intn->type = INTNUM_L;
- intn->val.l = val;
-}
-
-int
-yasm_intnum_is_zero(const yasm_intnum *intn)
-{
- return (intn->type == INTNUM_L && intn->val.l == 0);
-}
-
-int
-yasm_intnum_is_pos1(const yasm_intnum *intn)
-{
- return (intn->type == INTNUM_L && intn->val.l == 1);
-}
-
-int
-yasm_intnum_is_neg1(const yasm_intnum *intn)
-{
- return (intn->type == INTNUM_L && intn->val.l == -1);
-}
-
-int
-yasm_intnum_sign(const yasm_intnum *intn)
-{
- if (intn->type == INTNUM_L) {
- if (intn->val.l == 0)
- return 0;
- else if (intn->val.l < 0)
- return -1;
- else
- return 1;
- } else
- return BitVector_Sign(intn->val.bv);
-}
-
-unsigned long
-yasm_intnum_get_uint(const yasm_intnum *intn)
-{
- switch (intn->type) {
- case INTNUM_L:
- if (intn->val.l < 0)
- return 0;
- return (unsigned long)intn->val.l;
- case INTNUM_BV:
- if (BitVector_msb_(intn->val.bv))
- return 0;
- if (Set_Max(intn->val.bv) > 32)
- return ULONG_MAX;
- return BitVector_Chunk_Read(intn->val.bv, 32, 0);
- default:
- yasm_internal_error(N_("unknown intnum type"));
- /*@notreached@*/
- return 0;
- }
-}
-
-long
-yasm_intnum_get_int(const yasm_intnum *intn)
-{
- switch (intn->type) {
- case INTNUM_L:
- return intn->val.l;
- case INTNUM_BV:
- if (BitVector_msb_(intn->val.bv)) {
- /* it's negative: negate the bitvector to get a positive
- * number, then negate the positive number.
- */
- unsigned long ul;
-
- BitVector_Negate(conv_bv, intn->val.bv);
- if (Set_Max(conv_bv) >= 32) {
- /* too negative */
- return LONG_MIN;
- }
- ul = BitVector_Chunk_Read(conv_bv, 32, 0);
- /* check for too negative */
- return (ul & 0x80000000) ? LONG_MIN : -((long)ul);
- }
-
- /* it's positive, and since it's a BV, it must be >0x7FFFFFFF */
- return LONG_MAX;
- default:
- yasm_internal_error(N_("unknown intnum type"));
- /*@notreached@*/
- return 0;
- }
-}
-
-void
-yasm_intnum_get_sized(const yasm_intnum *intn, unsigned char *ptr,
- size_t destsize, size_t valsize, int shift,
- int bigendian, int warn)
-{
- wordptr op1 = op1static, op2;
- unsigned char *buf;
- unsigned int len;
- size_t rshift = shift < 0 ? (size_t)(-shift) : 0;
- int carry_in;
-
- /* Currently don't support destinations larger than our native size */
- if (destsize*8 > BITVECT_NATIVE_SIZE)
- yasm_internal_error(N_("destination too large"));
-
- /* General size warnings */
- if (warn<0 && !yasm_intnum_check_size(intn, valsize, rshift, 1))
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("value does not fit in signed %d bit field"),
- valsize);
- if (warn>0 && !yasm_intnum_check_size(intn, valsize, rshift, 2))
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("value does not fit in %d bit field"), valsize);
-
- /* Read the original data into a bitvect */
- if (bigendian) {
- /* TODO */
- yasm_internal_error(N_("big endian not implemented"));
- } else
- BitVector_Block_Store(op1, ptr, (N_int)destsize);
-
- /* If not already a bitvect, convert value to be written to a bitvect */
- op2 = intnum_tobv(op2static, intn);
-
- /* Check low bits if right shifting and warnings enabled */
- if (warn && rshift > 0) {
- BitVector_Copy(conv_bv, op2);
- BitVector_Move_Left(conv_bv, (N_int)(BITVECT_NATIVE_SIZE-rshift));
- if (!BitVector_is_empty(conv_bv))
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("misaligned value, truncating to boundary"));
- }
-
- /* Shift right if needed */
- if (rshift > 0) {
- carry_in = BitVector_msb_(op2);
- while (rshift-- > 0)
- BitVector_shift_right(op2, carry_in);
- shift = 0;
- }
-
- /* Write the new value into the destination bitvect */
- BitVector_Interval_Copy(op1, op2, (unsigned int)shift, 0, (N_int)valsize);
-
- /* Write out the new data */
- buf = BitVector_Block_Read(op1, &len);
- if (bigendian) {
- /* TODO */
- yasm_internal_error(N_("big endian not implemented"));
- } else
- memcpy(ptr, buf, destsize);
- yasm_xfree(buf);
-}
-
-/* Return 1 if okay size, 0 if not */
-int
-yasm_intnum_check_size(const yasm_intnum *intn, size_t size, size_t rshift,
- int rangetype)
-{
- wordptr val;
-
- /* If not already a bitvect, convert value to a bitvect */
- if (intn->type == INTNUM_BV) {
- if (rshift > 0) {
- val = conv_bv;
- BitVector_Copy(val, intn->val.bv);
- } else
- val = intn->val.bv;
- } else
- val = intnum_tobv(conv_bv, intn);
-
- if (size >= BITVECT_NATIVE_SIZE)
- return 1;
-
- if (rshift > 0) {
- int carry_in = BitVector_msb_(val);
- while (rshift-- > 0)
- BitVector_shift_right(val, carry_in);
- }
-
- if (rangetype > 0) {
- if (BitVector_msb_(val)) {
- /* it's negative */
- int retval;
-
- BitVector_Negate(conv_bv, val);
- BitVector_dec(conv_bv, conv_bv);
- retval = Set_Max(conv_bv) < (long)size-1;
-
- return retval;
- }
-
- if (rangetype == 1)
- size--;
- }
- return (Set_Max(val) < (long)size);
-}
-
-int
-yasm_intnum_in_range(const yasm_intnum *intn, long low, long high)
-{
- wordptr val = intnum_tobv(result, intn);
- wordptr lval = op1static;
- wordptr hval = op2static;
-
- /* Convert high and low to bitvects */
- BitVector_Empty(lval);
- if (low >= 0)
- BitVector_Chunk_Store(lval, 32, 0, (unsigned long)low);
- else {
- BitVector_Chunk_Store(lval, 32, 0, (unsigned long)(-low));
- BitVector_Negate(lval, lval);
- }
-
- BitVector_Empty(hval);
- if (high >= 0)
- BitVector_Chunk_Store(hval, 32, 0, (unsigned long)high);
- else {
- BitVector_Chunk_Store(hval, 32, 0, (unsigned long)(-high));
- BitVector_Negate(hval, hval);
- }
-
- /* Compare! */
- return (BitVector_Compare(val, lval) >= 0
- && BitVector_Compare(val, hval) <= 0);
-}
-
-static unsigned long
-get_leb128(wordptr val, unsigned char *ptr, int sign)
-{
- unsigned long i, size;
- unsigned char *ptr_orig = ptr;
-
- if (sign) {
- /* Signed mode */
- if (BitVector_msb_(val)) {
- /* Negative */
- BitVector_Negate(conv_bv, val);
- size = Set_Max(conv_bv)+2;
- } else {
- /* Positive */
- size = Set_Max(val)+2;
- }
- } else {
- /* Unsigned mode */
- size = Set_Max(val)+1;
- }
-
- /* Positive/Unsigned write */
- for (i=0; i<size; i += 7) {
- *ptr = (unsigned char)BitVector_Chunk_Read(val, 7, i);
- *ptr |= 0x80;
- ptr++;
- }
- *(ptr-1) &= 0x7F; /* Clear MSB of last byte */
- return (unsigned long)(ptr-ptr_orig);
-}
-
-static unsigned long
-size_leb128(wordptr val, int sign)
-{
- if (sign) {
- /* Signed mode */
- if (BitVector_msb_(val)) {
- /* Negative */
- BitVector_Negate(conv_bv, val);
- return (Set_Max(conv_bv)+8)/7;
- } else {
- /* Positive */
- return (Set_Max(val)+8)/7;
- }
- } else {
- /* Unsigned mode */
- return (Set_Max(val)+7)/7;
- }
-}
-
-unsigned long
-yasm_intnum_get_leb128(const yasm_intnum *intn, unsigned char *ptr, int sign)
-{
- wordptr val;
-
- /* Shortcut 0 */
- if (intn->type == INTNUM_L && intn->val.l == 0) {
- *ptr = 0;
- return 1;
- }
-
- /* If not already a bitvect, convert value to be written to a bitvect */
- val = intnum_tobv(op1static, intn);
-
- return get_leb128(val, ptr, sign);
-}
-
-unsigned long
-yasm_intnum_size_leb128(const yasm_intnum *intn, int sign)
-{
- wordptr val;
-
- /* Shortcut 0 */
- if (intn->type == INTNUM_L && intn->val.l == 0) {
- return 1;
- }
-
- /* If not already a bitvect, convert value to a bitvect */
- val = intnum_tobv(op1static, intn);
-
- return size_leb128(val, sign);
-}
-
-unsigned long
-yasm_get_sleb128(long v, unsigned char *ptr)
-{
- wordptr val = op1static;
-
- /* Shortcut 0 */
- if (v == 0) {
- *ptr = 0;
- return 1;
- }
-
- BitVector_Empty(val);
- if (v >= 0)
- BitVector_Chunk_Store(val, 32, 0, (unsigned long)v);
- else {
- BitVector_Chunk_Store(val, 32, 0, (unsigned long)(-v));
- BitVector_Negate(val, val);
- }
- return get_leb128(val, ptr, 1);
-}
-
-unsigned long
-yasm_size_sleb128(long v)
-{
- wordptr val = op1static;
-
- if (v == 0)
- return 1;
-
- BitVector_Empty(val);
- if (v >= 0)
- BitVector_Chunk_Store(val, 32, 0, (unsigned long)v);
- else {
- BitVector_Chunk_Store(val, 32, 0, (unsigned long)(-v));
- BitVector_Negate(val, val);
- }
- return size_leb128(val, 1);
-}
-
-unsigned long
-yasm_get_uleb128(unsigned long v, unsigned char *ptr)
-{
- wordptr val = op1static;
-
- /* Shortcut 0 */
- if (v == 0) {
- *ptr = 0;
- return 1;
- }
-
- BitVector_Empty(val);
- BitVector_Chunk_Store(val, 32, 0, v);
- return get_leb128(val, ptr, 0);
-}
-
-unsigned long
-yasm_size_uleb128(unsigned long v)
-{
- wordptr val = op1static;
-
- if (v == 0)
- return 1;
-
- BitVector_Empty(val);
- BitVector_Chunk_Store(val, 32, 0, v);
- return size_leb128(val, 0);
-}
-
-char *
-yasm_intnum_get_str(const yasm_intnum *intn)
-{
- unsigned char *s;
-
- switch (intn->type) {
- case INTNUM_L:
- s = yasm_xmalloc(16);
- sprintf((char *)s, "%ld", intn->val.l);
- return (char *)s;
- break;
- case INTNUM_BV:
- return (char *)BitVector_to_Dec(intn->val.bv);
- break;
- }
- /*@notreached@*/
- return NULL;
-}
-
-void
-yasm_intnum_print(const yasm_intnum *intn, FILE *f)
-{
- unsigned char *s;
-
- switch (intn->type) {
- case INTNUM_L:
- fprintf(f, "0x%lx", intn->val.l);
- break;
- case INTNUM_BV:
- s = BitVector_to_Hex(intn->val.bv);
- fprintf(f, "0x%s", (char *)s);
- yasm_xfree(s);
- break;
- }
-}
+/*
+ * Integer number functions.
+ *
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "util.h"
+
+#include <ctype.h>
+#include <limits.h>
+
+#include "coretype.h"
+#include "bitvect.h"
+#include "file.h"
+
+#include "errwarn.h"
+#include "intnum.h"
+
+
+/* "Native" "word" size for intnum calculations. */
+#define BITVECT_NATIVE_SIZE 256
+
+struct yasm_intnum {
+ union val {
+ long l; /* integer value (for integers <32 bits) */
+ wordptr bv; /* bit vector (for integers >=32 bits) */
+ } val;
+ enum { INTNUM_L, INTNUM_BV } type;
+};
+
+/* static bitvect used for conversions */
+static /*@only@*/ wordptr conv_bv;
+
+/* static bitvects used for computation */
+static /*@only@*/ wordptr result, spare, op1static, op2static;
+
+static /*@only@*/ BitVector_from_Dec_static_data *from_dec_data;
+
+
+void
+yasm_intnum_initialize(void)
+{
+ conv_bv = BitVector_Create(BITVECT_NATIVE_SIZE, FALSE);
+ result = BitVector_Create(BITVECT_NATIVE_SIZE, FALSE);
+ spare = BitVector_Create(BITVECT_NATIVE_SIZE, FALSE);
+ op1static = BitVector_Create(BITVECT_NATIVE_SIZE, FALSE);
+ op2static = BitVector_Create(BITVECT_NATIVE_SIZE, FALSE);
+ from_dec_data = BitVector_from_Dec_static_Boot(BITVECT_NATIVE_SIZE);
+}
+
+void
+yasm_intnum_cleanup(void)
+{
+ BitVector_from_Dec_static_Shutdown(from_dec_data);
+ BitVector_Destroy(op2static);
+ BitVector_Destroy(op1static);
+ BitVector_Destroy(spare);
+ BitVector_Destroy(result);
+ BitVector_Destroy(conv_bv);
+}
+
+/* Compress a bitvector into intnum storage.
+ * If saved as a bitvector, clones the passed bitvector.
+ * Can modify the passed bitvector.
+ */
+static void
+intnum_frombv(/*@out@*/ yasm_intnum *intn, wordptr bv)
+{
+ if (Set_Max(bv) < 31) {
+ intn->type = INTNUM_L;
+ intn->val.l = (long)BitVector_Chunk_Read(bv, 31, 0);
+ } else if (BitVector_msb_(bv)) {
+ /* Negative, negate and see if we'll fit into a long. */
+ unsigned long ul;
+ BitVector_Negate(bv, bv);
+ if (Set_Max(bv) >= 32 ||
+ ((ul = BitVector_Chunk_Read(bv, 32, 0)) & 0x80000000)) {
+ /* too negative */
+ BitVector_Negate(bv, bv);
+ intn->type = INTNUM_BV;
+ intn->val.bv = BitVector_Clone(bv);
+ } else {
+ intn->type = INTNUM_L;
+ intn->val.l = -((long)ul);
+ }
+ } else {
+ intn->type = INTNUM_BV;
+ intn->val.bv = BitVector_Clone(bv);
+ }
+}
+
+/* If intnum is a BV, returns its bitvector directly.
+ * If not, converts into passed bv and returns that instead.
+ */
+static wordptr
+intnum_tobv(/*@returned@*/ wordptr bv, const yasm_intnum *intn)
+{
+ if (intn->type == INTNUM_BV)
+ return intn->val.bv;
+
+ BitVector_Empty(bv);
+ if (intn->val.l >= 0)
+ BitVector_Chunk_Store(bv, 32, 0, (unsigned long)intn->val.l);
+ else {
+ BitVector_Chunk_Store(bv, 32, 0, (unsigned long)-intn->val.l);
+ BitVector_Negate(bv, bv);
+ }
+ return bv;
+}
+
+yasm_intnum *
+yasm_intnum_create_dec(char *str)
+{
+ yasm_intnum *intn = yasm_xmalloc(sizeof(yasm_intnum));
+
+ switch (BitVector_from_Dec_static(from_dec_data, conv_bv,
+ (unsigned char *)str)) {
+ case ErrCode_Pars:
+ yasm_error_set(YASM_ERROR_VALUE, N_("invalid decimal literal"));
+ break;
+ case ErrCode_Ovfl:
+ yasm_error_set(YASM_ERROR_OVERFLOW,
+ N_("Numeric constant too large for internal format"));
+ break;
+ default:
+ break;
+ }
+ intnum_frombv(intn, conv_bv);
+ return intn;
+}
+
+yasm_intnum *
+yasm_intnum_create_bin(char *str)
+{
+ yasm_intnum *intn = yasm_xmalloc(sizeof(yasm_intnum));
+
+ switch (BitVector_from_Bin(conv_bv, (unsigned char *)str)) {
+ case ErrCode_Pars:
+ yasm_error_set(YASM_ERROR_VALUE, N_("invalid binary literal"));
+ break;
+ case ErrCode_Ovfl:
+ yasm_error_set(YASM_ERROR_OVERFLOW,
+ N_("Numeric constant too large for internal format"));
+ break;
+ default:
+ break;
+ }
+ intnum_frombv(intn, conv_bv);
+ return intn;
+}
+
+yasm_intnum *
+yasm_intnum_create_oct(char *str)
+{
+ yasm_intnum *intn = yasm_xmalloc(sizeof(yasm_intnum));
+
+ switch (BitVector_from_Oct(conv_bv, (unsigned char *)str)) {
+ case ErrCode_Pars:
+ yasm_error_set(YASM_ERROR_VALUE, N_("invalid octal literal"));
+ break;
+ case ErrCode_Ovfl:
+ yasm_error_set(YASM_ERROR_OVERFLOW,
+ N_("Numeric constant too large for internal format"));
+ break;
+ default:
+ break;
+ }
+ intnum_frombv(intn, conv_bv);
+ return intn;
+}
+
+yasm_intnum *
+yasm_intnum_create_hex(char *str)
+{
+ yasm_intnum *intn = yasm_xmalloc(sizeof(yasm_intnum));
+
+ switch (BitVector_from_Hex(conv_bv, (unsigned char *)str)) {
+ case ErrCode_Pars:
+ yasm_error_set(YASM_ERROR_VALUE, N_("invalid hex literal"));
+ break;
+ case ErrCode_Ovfl:
+ yasm_error_set(YASM_ERROR_OVERFLOW,
+ N_("Numeric constant too large for internal format"));
+ break;
+ default:
+ break;
+ }
+ intnum_frombv(intn, conv_bv);
+ return intn;
+}
+
+/*@-usedef -compdef -uniondef@*/
+yasm_intnum *
+yasm_intnum_create_charconst_nasm(const char *str)
+{
+ yasm_intnum *intn = yasm_xmalloc(sizeof(yasm_intnum));
+ size_t len = strlen(str);
+
+ if(len*8 > BITVECT_NATIVE_SIZE)
+ yasm_error_set(YASM_ERROR_OVERFLOW,
+ N_("Character constant too large for internal format"));
+
+ /* be conservative in choosing bitvect in case MSB is set */
+ if (len > 3) {
+ BitVector_Empty(conv_bv);
+ intn->type = INTNUM_BV;
+ } else {
+ intn->val.l = 0;
+ intn->type = INTNUM_L;
+ }
+
+ switch (len) {
+ case 3:
+ intn->val.l |= ((unsigned long)str[2]) & 0xff;
+ intn->val.l <<= 8;
+ /*@fallthrough@*/
+ case 2:
+ intn->val.l |= ((unsigned long)str[1]) & 0xff;
+ intn->val.l <<= 8;
+ /*@fallthrough@*/
+ case 1:
+ intn->val.l |= ((unsigned long)str[0]) & 0xff;
+ case 0:
+ break;
+ default:
+ /* >=32 bit conversion */
+ while (len) {
+ BitVector_Move_Left(conv_bv, 8);
+ BitVector_Chunk_Store(conv_bv, 8, 0,
+ ((unsigned long)str[--len]) & 0xff);
+ }
+ intn->val.bv = BitVector_Clone(conv_bv);
+ }
+
+ return intn;
+}
+
+yasm_intnum *
+yasm_intnum_create_charconst_tasm(const char *str)
+{
+ yasm_intnum *intn = yasm_xmalloc(sizeof(yasm_intnum));
+ size_t len = strlen(str);
+ size_t i;
+
+ if(len*8 > BITVECT_NATIVE_SIZE)
+ yasm_error_set(YASM_ERROR_OVERFLOW,
+ N_("Character constant too large for internal format"));
+
+ /* be conservative in choosing bitvect in case MSB is set */
+ if (len > 3) {
+ BitVector_Empty(conv_bv);
+ intn->type = INTNUM_BV;
+ } else {
+ intn->val.l = 0;
+ intn->type = INTNUM_L;
+ }
+
+ /* tasm uses big endian notation */
+ i = 0;
+ switch (len) {
+ case 3:
+ intn->val.l |= ((unsigned long)str[i++]) & 0xff;
+ intn->val.l <<= 8;
+ /*@fallthrough@*/
+ case 2:
+ intn->val.l |= ((unsigned long)str[i++]) & 0xff;
+ intn->val.l <<= 8;
+ /*@fallthrough@*/
+ case 1:
+ intn->val.l |= ((unsigned long)str[i++]) & 0xff;
+ case 0:
+ break;
+ default:
+ /* >=32 bit conversion */
+ while (i < len) {
+ BitVector_Chunk_Store(conv_bv, 8, (len-i-1)*8,
+ ((unsigned long)str[i]) & 0xff);
+ i++;
+ }
+ intn->val.bv = BitVector_Clone(conv_bv);
+ }
+
+ return intn;
+}
+/*@=usedef =compdef =uniondef@*/
+
+yasm_intnum *
+yasm_intnum_create_uint(unsigned long i)
+{
+ yasm_intnum *intn = yasm_xmalloc(sizeof(yasm_intnum));
+
+ if (i > LONG_MAX) {
+ /* Too big, store as bitvector */
+ intn->val.bv = BitVector_Create(BITVECT_NATIVE_SIZE, TRUE);
+ intn->type = INTNUM_BV;
+ BitVector_Chunk_Store(intn->val.bv, 32, 0, i);
+ } else {
+ intn->val.l = (long)i;
+ intn->type = INTNUM_L;
+ }
+
+ return intn;
+}
+
+yasm_intnum *
+yasm_intnum_create_int(long i)
+{
+ yasm_intnum *intn = yasm_xmalloc(sizeof(yasm_intnum));
+
+ intn->val.l = i;
+ intn->type = INTNUM_L;
+
+ return intn;
+}
+
+yasm_intnum *
+yasm_intnum_create_leb128(const unsigned char *ptr, int sign,
+ unsigned long *size)
+{
+ yasm_intnum *intn = yasm_xmalloc(sizeof(yasm_intnum));
+ const unsigned char *ptr_orig = ptr;
+ unsigned long i = 0;
+
+ BitVector_Empty(conv_bv);
+ for (;;) {
+ BitVector_Chunk_Store(conv_bv, 7, i, *ptr);
+ i += 7;
+ if ((*ptr & 0x80) != 0x80)
+ break;
+ ptr++;
+ }
+
+ *size = (unsigned long)(ptr-ptr_orig)+1;
+
+ if(i > BITVECT_NATIVE_SIZE)
+ yasm_error_set(YASM_ERROR_OVERFLOW,
+ N_("Numeric constant too large for internal format"));
+ else if (sign && (*ptr & 0x40) == 0x40)
+ BitVector_Interval_Fill(conv_bv, i, BITVECT_NATIVE_SIZE-1);
+
+ intnum_frombv(intn, conv_bv);
+ return intn;
+}
+
+yasm_intnum *
+yasm_intnum_create_sized(unsigned char *ptr, int sign, size_t srcsize,
+ int bigendian)
+{
+ yasm_intnum *intn = yasm_xmalloc(sizeof(yasm_intnum));
+ unsigned long i = 0;
+
+ if (srcsize*8 > BITVECT_NATIVE_SIZE)
+ yasm_error_set(YASM_ERROR_OVERFLOW,
+ N_("Numeric constant too large for internal format"));
+
+ /* Read the buffer into a bitvect */
+ BitVector_Empty(conv_bv);
+ if (bigendian) {
+ /* TODO */
+ yasm_internal_error(N_("big endian not implemented"));
+ } else {
+ for (i = 0; i < srcsize; i++)
+ BitVector_Chunk_Store(conv_bv, 8, i*8, ptr[i]);
+ }
+
+ /* Sign extend if needed */
+ if (srcsize*8 < BITVECT_NATIVE_SIZE && sign && (ptr[i-1] & 0x80) == 0x80)
+ BitVector_Interval_Fill(conv_bv, i*8, BITVECT_NATIVE_SIZE-1);
+
+ intnum_frombv(intn, conv_bv);
+ return intn;
+}
+
+yasm_intnum *
+yasm_intnum_copy(const yasm_intnum *intn)
+{
+ yasm_intnum *n = yasm_xmalloc(sizeof(yasm_intnum));
+
+ switch (intn->type) {
+ case INTNUM_L:
+ n->val.l = intn->val.l;
+ break;
+ case INTNUM_BV:
+ n->val.bv = BitVector_Clone(intn->val.bv);
+ break;
+ }
+ n->type = intn->type;
+
+ return n;
+}
+
+void
+yasm_intnum_destroy(yasm_intnum *intn)
+{
+ if (intn->type == INTNUM_BV)
+ BitVector_Destroy(intn->val.bv);
+ yasm_xfree(intn);
+}
+
+/*@-nullderef -nullpass -branchstate@*/
+int
+yasm_intnum_calc(yasm_intnum *acc, yasm_expr_op op, yasm_intnum *operand)
+{
+ boolean carry = 0;
+ wordptr op1, op2 = NULL;
+ N_int count;
+
+ /* Always do computations with in full bit vector.
+ * Bit vector results must be calculated through intermediate storage.
+ */
+ op1 = intnum_tobv(op1static, acc);
+ if (operand)
+ op2 = intnum_tobv(op2static, operand);
+
+ if (!operand && op != YASM_EXPR_NEG && op != YASM_EXPR_NOT &&
+ op != YASM_EXPR_LNOT) {
+ yasm_error_set(YASM_ERROR_ARITHMETIC,
+ N_("operation needs an operand"));
+ BitVector_Empty(result);
+ return 1;
+ }
+
+ /* A operation does a bitvector computation if result is allocated. */
+ switch (op) {
+ case YASM_EXPR_ADD:
+ BitVector_add(result, op1, op2, &carry);
+ break;
+ case YASM_EXPR_SUB:
+ BitVector_sub(result, op1, op2, &carry);
+ break;
+ case YASM_EXPR_MUL:
+ BitVector_Multiply(result, op1, op2);
+ break;
+ case YASM_EXPR_DIV:
+ /* TODO: make sure op1 and op2 are unsigned */
+ if (BitVector_is_empty(op2)) {
+ yasm_error_set(YASM_ERROR_ZERO_DIVISION, N_("divide by zero"));
+ BitVector_Empty(result);
+ return 1;
+ } else
+ BitVector_Divide(result, op1, op2, spare);
+ break;
+ case YASM_EXPR_SIGNDIV:
+ if (BitVector_is_empty(op2)) {
+ yasm_error_set(YASM_ERROR_ZERO_DIVISION, N_("divide by zero"));
+ BitVector_Empty(result);
+ return 1;
+ } else
+ BitVector_Divide(result, op1, op2, spare);
+ break;
+ case YASM_EXPR_MOD:
+ /* TODO: make sure op1 and op2 are unsigned */
+ if (BitVector_is_empty(op2)) {
+ yasm_error_set(YASM_ERROR_ZERO_DIVISION, N_("divide by zero"));
+ BitVector_Empty(result);
+ return 1;
+ } else
+ BitVector_Divide(spare, op1, op2, result);
+ break;
+ case YASM_EXPR_SIGNMOD:
+ if (BitVector_is_empty(op2)) {
+ yasm_error_set(YASM_ERROR_ZERO_DIVISION, N_("divide by zero"));
+ BitVector_Empty(result);
+ return 1;
+ } else
+ BitVector_Divide(spare, op1, op2, result);
+ break;
+ case YASM_EXPR_NEG:
+ BitVector_Negate(result, op1);
+ break;
+ case YASM_EXPR_NOT:
+ Set_Complement(result, op1);
+ break;
+ case YASM_EXPR_OR:
+ Set_Union(result, op1, op2);
+ break;
+ case YASM_EXPR_AND:
+ Set_Intersection(result, op1, op2);
+ break;
+ case YASM_EXPR_XOR:
+ Set_ExclusiveOr(result, op1, op2);
+ break;
+ case YASM_EXPR_XNOR:
+ Set_ExclusiveOr(result, op1, op2);
+ Set_Complement(result, result);
+ break;
+ case YASM_EXPR_NOR:
+ Set_Union(result, op1, op2);
+ Set_Complement(result, result);
+ break;
+ case YASM_EXPR_SHL:
+ if (operand->type == INTNUM_L && operand->val.l >= 0) {
+ BitVector_Copy(result, op1);
+ BitVector_Move_Left(result, (N_int)operand->val.l);
+ } else /* don't even bother, just zero result */
+ BitVector_Empty(result);
+ break;
+ case YASM_EXPR_SHR:
+ if (operand->type == INTNUM_L && operand->val.l >= 0) {
+ BitVector_Copy(result, op1);
+ carry = BitVector_msb_(op1);
+ count = (N_int)operand->val.l;
+ while (count-- > 0)
+ BitVector_shift_right(result, carry);
+ } else /* don't even bother, just zero result */
+ BitVector_Empty(result);
+ break;
+ case YASM_EXPR_LOR:
+ BitVector_Empty(result);
+ BitVector_LSB(result, !BitVector_is_empty(op1) ||
+ !BitVector_is_empty(op2));
+ break;
+ case YASM_EXPR_LAND:
+ BitVector_Empty(result);
+ BitVector_LSB(result, !BitVector_is_empty(op1) &&
+ !BitVector_is_empty(op2));
+ break;
+ case YASM_EXPR_LNOT:
+ BitVector_Empty(result);
+ BitVector_LSB(result, BitVector_is_empty(op1));
+ break;
+ case YASM_EXPR_LXOR:
+ BitVector_Empty(result);
+ BitVector_LSB(result, !BitVector_is_empty(op1) ^
+ !BitVector_is_empty(op2));
+ break;
+ case YASM_EXPR_LXNOR:
+ BitVector_Empty(result);
+ BitVector_LSB(result, !(!BitVector_is_empty(op1) ^
+ !BitVector_is_empty(op2)));
+ break;
+ case YASM_EXPR_LNOR:
+ BitVector_Empty(result);
+ BitVector_LSB(result, !(!BitVector_is_empty(op1) ||
+ !BitVector_is_empty(op2)));
+ break;
+ case YASM_EXPR_EQ:
+ BitVector_Empty(result);
+ BitVector_LSB(result, BitVector_equal(op1, op2));
+ break;
+ case YASM_EXPR_LT:
+ BitVector_Empty(result);
+ BitVector_LSB(result, BitVector_Compare(op1, op2) < 0);
+ break;
+ case YASM_EXPR_GT:
+ BitVector_Empty(result);
+ BitVector_LSB(result, BitVector_Compare(op1, op2) > 0);
+ break;
+ case YASM_EXPR_LE:
+ BitVector_Empty(result);
+ BitVector_LSB(result, BitVector_Compare(op1, op2) <= 0);
+ break;
+ case YASM_EXPR_GE:
+ BitVector_Empty(result);
+ BitVector_LSB(result, BitVector_Compare(op1, op2) >= 0);
+ break;
+ case YASM_EXPR_NE:
+ BitVector_Empty(result);
+ BitVector_LSB(result, !BitVector_equal(op1, op2));
+ break;
+ case YASM_EXPR_SEG:
+ yasm_error_set(YASM_ERROR_ARITHMETIC, N_("invalid use of '%s'"),
+ "SEG");
+ break;
+ case YASM_EXPR_WRT:
+ yasm_error_set(YASM_ERROR_ARITHMETIC, N_("invalid use of '%s'"),
+ "WRT");
+ break;
+ case YASM_EXPR_SEGOFF:
+ yasm_error_set(YASM_ERROR_ARITHMETIC, N_("invalid use of '%s'"),
+ ":");
+ break;
+ case YASM_EXPR_IDENT:
+ if (result)
+ BitVector_Copy(result, op1);
+ break;
+ default:
+ yasm_error_set(YASM_ERROR_ARITHMETIC,
+ N_("invalid operation in intnum calculation"));
+ BitVector_Empty(result);
+ return 1;
+ }
+
+ /* Try to fit the result into 32 bits if possible */
+ if (acc->type == INTNUM_BV)
+ BitVector_Destroy(acc->val.bv);
+ intnum_frombv(acc, result);
+ return 0;
+}
+/*@=nullderef =nullpass =branchstate@*/
+
+int
+yasm_intnum_compare(const yasm_intnum *intn1, const yasm_intnum *intn2)
+{
+ wordptr op1, op2;
+
+ if (intn1->type == INTNUM_L && intn2->type == INTNUM_L) {
+ if (intn1->val.l < intn2->val.l)
+ return -1;
+ if (intn1->val.l > intn2->val.l)
+ return 1;
+ return 0;
+ }
+
+ op1 = intnum_tobv(op1static, intn1);
+ op2 = intnum_tobv(op2static, intn2);
+ return BitVector_Compare(op1, op2);
+}
+
+void
+yasm_intnum_zero(yasm_intnum *intn)
+{
+ yasm_intnum_set_int(intn, 0);
+}
+
+void
+yasm_intnum_set(yasm_intnum *intn, const yasm_intnum *val)
+{
+ if (intn->type == val->type) {
+ switch (val->type) {
+ case INTNUM_L:
+ intn->val.l = val->val.l;
+ break;
+ case INTNUM_BV:
+ BitVector_Copy(intn->val.bv, val->val.bv);
+ break;
+ }
+ } else {
+ switch (val->type) {
+ case INTNUM_L:
+ BitVector_Destroy(intn->val.bv);
+ intn->val.l = val->val.l;
+ break;
+ case INTNUM_BV:
+ intn->val.bv = BitVector_Clone(val->val.bv);
+ break;
+ }
+ intn->type = val->type;
+ }
+}
+
+void
+yasm_intnum_set_uint(yasm_intnum *intn, unsigned long val)
+{
+ if (val > LONG_MAX) {
+ if (intn->type != INTNUM_BV) {
+ intn->val.bv = BitVector_Create(BITVECT_NATIVE_SIZE, TRUE);
+ intn->type = INTNUM_BV;
+ }
+ BitVector_Chunk_Store(intn->val.bv, 32, 0, val);
+ } else {
+ if (intn->type == INTNUM_BV) {
+ BitVector_Destroy(intn->val.bv);
+ intn->type = INTNUM_L;
+ }
+ intn->val.l = (long)val;
+ }
+}
+
+void
+yasm_intnum_set_int(yasm_intnum *intn, long val)
+{
+ if (intn->type == INTNUM_BV)
+ BitVector_Destroy(intn->val.bv);
+ intn->type = INTNUM_L;
+ intn->val.l = val;
+}
+
+int
+yasm_intnum_is_zero(const yasm_intnum *intn)
+{
+ return (intn->type == INTNUM_L && intn->val.l == 0);
+}
+
+int
+yasm_intnum_is_pos1(const yasm_intnum *intn)
+{
+ return (intn->type == INTNUM_L && intn->val.l == 1);
+}
+
+int
+yasm_intnum_is_neg1(const yasm_intnum *intn)
+{
+ return (intn->type == INTNUM_L && intn->val.l == -1);
+}
+
+int
+yasm_intnum_sign(const yasm_intnum *intn)
+{
+ if (intn->type == INTNUM_L) {
+ if (intn->val.l == 0)
+ return 0;
+ else if (intn->val.l < 0)
+ return -1;
+ else
+ return 1;
+ } else
+ return BitVector_Sign(intn->val.bv);
+}
+
+unsigned long
+yasm_intnum_get_uint(const yasm_intnum *intn)
+{
+ switch (intn->type) {
+ case INTNUM_L:
+ if (intn->val.l < 0)
+ return 0;
+ return (unsigned long)intn->val.l;
+ case INTNUM_BV:
+ if (BitVector_msb_(intn->val.bv))
+ return 0;
+ if (Set_Max(intn->val.bv) > 32)
+ return ULONG_MAX;
+ return BitVector_Chunk_Read(intn->val.bv, 32, 0);
+ default:
+ yasm_internal_error(N_("unknown intnum type"));
+ /*@notreached@*/
+ return 0;
+ }
+}
+
+long
+yasm_intnum_get_int(const yasm_intnum *intn)
+{
+ switch (intn->type) {
+ case INTNUM_L:
+ return intn->val.l;
+ case INTNUM_BV:
+ if (BitVector_msb_(intn->val.bv)) {
+ /* it's negative: negate the bitvector to get a positive
+ * number, then negate the positive number.
+ */
+ unsigned long ul;
+
+ BitVector_Negate(conv_bv, intn->val.bv);
+ if (Set_Max(conv_bv) >= 32) {
+ /* too negative */
+ return LONG_MIN;
+ }
+ ul = BitVector_Chunk_Read(conv_bv, 32, 0);
+ /* check for too negative */
+ return (ul & 0x80000000) ? LONG_MIN : -((long)ul);
+ }
+
+ /* it's positive, and since it's a BV, it must be >0x7FFFFFFF */
+ return LONG_MAX;
+ default:
+ yasm_internal_error(N_("unknown intnum type"));
+ /*@notreached@*/
+ return 0;
+ }
+}
+
+void
+yasm_intnum_get_sized(const yasm_intnum *intn, unsigned char *ptr,
+ size_t destsize, size_t valsize, int shift,
+ int bigendian, int warn)
+{
+ wordptr op1 = op1static, op2;
+ unsigned char *buf;
+ unsigned int len;
+ size_t rshift = shift < 0 ? (size_t)(-shift) : 0;
+ int carry_in;
+
+ /* Currently don't support destinations larger than our native size */
+ if (destsize*8 > BITVECT_NATIVE_SIZE)
+ yasm_internal_error(N_("destination too large"));
+
+ /* General size warnings */
+ if (warn<0 && !yasm_intnum_check_size(intn, valsize, rshift, 1))
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("value does not fit in signed %d bit field"),
+ valsize);
+ if (warn>0 && !yasm_intnum_check_size(intn, valsize, rshift, 2))
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("value does not fit in %d bit field"), valsize);
+
+ /* Read the original data into a bitvect */
+ if (bigendian) {
+ /* TODO */
+ yasm_internal_error(N_("big endian not implemented"));
+ } else
+ BitVector_Block_Store(op1, ptr, (N_int)destsize);
+
+ /* If not already a bitvect, convert value to be written to a bitvect */
+ op2 = intnum_tobv(op2static, intn);
+
+ /* Check low bits if right shifting and warnings enabled */
+ if (warn && rshift > 0) {
+ BitVector_Copy(conv_bv, op2);
+ BitVector_Move_Left(conv_bv, (N_int)(BITVECT_NATIVE_SIZE-rshift));
+ if (!BitVector_is_empty(conv_bv))
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("misaligned value, truncating to boundary"));
+ }
+
+ /* Shift right if needed */
+ if (rshift > 0) {
+ carry_in = BitVector_msb_(op2);
+ while (rshift-- > 0)
+ BitVector_shift_right(op2, carry_in);
+ shift = 0;
+ }
+
+ /* Write the new value into the destination bitvect */
+ BitVector_Interval_Copy(op1, op2, (unsigned int)shift, 0, (N_int)valsize);
+
+ /* Write out the new data */
+ buf = BitVector_Block_Read(op1, &len);
+ if (bigendian) {
+ /* TODO */
+ yasm_internal_error(N_("big endian not implemented"));
+ } else
+ memcpy(ptr, buf, destsize);
+ yasm_xfree(buf);
+}
+
+/* Return 1 if okay size, 0 if not */
+int
+yasm_intnum_check_size(const yasm_intnum *intn, size_t size, size_t rshift,
+ int rangetype)
+{
+ wordptr val;
+
+ /* If not already a bitvect, convert value to a bitvect */
+ if (intn->type == INTNUM_BV) {
+ if (rshift > 0) {
+ val = conv_bv;
+ BitVector_Copy(val, intn->val.bv);
+ } else
+ val = intn->val.bv;
+ } else
+ val = intnum_tobv(conv_bv, intn);
+
+ if (size >= BITVECT_NATIVE_SIZE)
+ return 1;
+
+ if (rshift > 0) {
+ int carry_in = BitVector_msb_(val);
+ while (rshift-- > 0)
+ BitVector_shift_right(val, carry_in);
+ }
+
+ if (rangetype > 0) {
+ if (BitVector_msb_(val)) {
+ /* it's negative */
+ int retval;
+
+ BitVector_Negate(conv_bv, val);
+ BitVector_dec(conv_bv, conv_bv);
+ retval = Set_Max(conv_bv) < (long)size-1;
+
+ return retval;
+ }
+
+ if (rangetype == 1)
+ size--;
+ }
+ return (Set_Max(val) < (long)size);
+}
+
+int
+yasm_intnum_in_range(const yasm_intnum *intn, long low, long high)
+{
+ wordptr val = intnum_tobv(result, intn);
+ wordptr lval = op1static;
+ wordptr hval = op2static;
+
+ /* Convert high and low to bitvects */
+ BitVector_Empty(lval);
+ if (low >= 0)
+ BitVector_Chunk_Store(lval, 32, 0, (unsigned long)low);
+ else {
+ BitVector_Chunk_Store(lval, 32, 0, (unsigned long)(-low));
+ BitVector_Negate(lval, lval);
+ }
+
+ BitVector_Empty(hval);
+ if (high >= 0)
+ BitVector_Chunk_Store(hval, 32, 0, (unsigned long)high);
+ else {
+ BitVector_Chunk_Store(hval, 32, 0, (unsigned long)(-high));
+ BitVector_Negate(hval, hval);
+ }
+
+ /* Compare! */
+ return (BitVector_Compare(val, lval) >= 0
+ && BitVector_Compare(val, hval) <= 0);
+}
+
+static unsigned long
+get_leb128(wordptr val, unsigned char *ptr, int sign)
+{
+ unsigned long i, size;
+ unsigned char *ptr_orig = ptr;
+
+ if (sign) {
+ /* Signed mode */
+ if (BitVector_msb_(val)) {
+ /* Negative */
+ BitVector_Negate(conv_bv, val);
+ size = Set_Max(conv_bv)+2;
+ } else {
+ /* Positive */
+ size = Set_Max(val)+2;
+ }
+ } else {
+ /* Unsigned mode */
+ size = Set_Max(val)+1;
+ }
+
+ /* Positive/Unsigned write */
+ for (i=0; i<size; i += 7) {
+ *ptr = (unsigned char)BitVector_Chunk_Read(val, 7, i);
+ *ptr |= 0x80;
+ ptr++;
+ }
+ *(ptr-1) &= 0x7F; /* Clear MSB of last byte */
+ return (unsigned long)(ptr-ptr_orig);
+}
+
+static unsigned long
+size_leb128(wordptr val, int sign)
+{
+ if (sign) {
+ /* Signed mode */
+ if (BitVector_msb_(val)) {
+ /* Negative */
+ BitVector_Negate(conv_bv, val);
+ return (Set_Max(conv_bv)+8)/7;
+ } else {
+ /* Positive */
+ return (Set_Max(val)+8)/7;
+ }
+ } else {
+ /* Unsigned mode */
+ return (Set_Max(val)+7)/7;
+ }
+}
+
+unsigned long
+yasm_intnum_get_leb128(const yasm_intnum *intn, unsigned char *ptr, int sign)
+{
+ wordptr val;
+
+ /* Shortcut 0 */
+ if (intn->type == INTNUM_L && intn->val.l == 0) {
+ *ptr = 0;
+ return 1;
+ }
+
+ /* If not already a bitvect, convert value to be written to a bitvect */
+ val = intnum_tobv(op1static, intn);
+
+ return get_leb128(val, ptr, sign);
+}
+
+unsigned long
+yasm_intnum_size_leb128(const yasm_intnum *intn, int sign)
+{
+ wordptr val;
+
+ /* Shortcut 0 */
+ if (intn->type == INTNUM_L && intn->val.l == 0) {
+ return 1;
+ }
+
+ /* If not already a bitvect, convert value to a bitvect */
+ val = intnum_tobv(op1static, intn);
+
+ return size_leb128(val, sign);
+}
+
+unsigned long
+yasm_get_sleb128(long v, unsigned char *ptr)
+{
+ wordptr val = op1static;
+
+ /* Shortcut 0 */
+ if (v == 0) {
+ *ptr = 0;
+ return 1;
+ }
+
+ BitVector_Empty(val);
+ if (v >= 0)
+ BitVector_Chunk_Store(val, 32, 0, (unsigned long)v);
+ else {
+ BitVector_Chunk_Store(val, 32, 0, (unsigned long)(-v));
+ BitVector_Negate(val, val);
+ }
+ return get_leb128(val, ptr, 1);
+}
+
+unsigned long
+yasm_size_sleb128(long v)
+{
+ wordptr val = op1static;
+
+ if (v == 0)
+ return 1;
+
+ BitVector_Empty(val);
+ if (v >= 0)
+ BitVector_Chunk_Store(val, 32, 0, (unsigned long)v);
+ else {
+ BitVector_Chunk_Store(val, 32, 0, (unsigned long)(-v));
+ BitVector_Negate(val, val);
+ }
+ return size_leb128(val, 1);
+}
+
+unsigned long
+yasm_get_uleb128(unsigned long v, unsigned char *ptr)
+{
+ wordptr val = op1static;
+
+ /* Shortcut 0 */
+ if (v == 0) {
+ *ptr = 0;
+ return 1;
+ }
+
+ BitVector_Empty(val);
+ BitVector_Chunk_Store(val, 32, 0, v);
+ return get_leb128(val, ptr, 0);
+}
+
+unsigned long
+yasm_size_uleb128(unsigned long v)
+{
+ wordptr val = op1static;
+
+ if (v == 0)
+ return 1;
+
+ BitVector_Empty(val);
+ BitVector_Chunk_Store(val, 32, 0, v);
+ return size_leb128(val, 0);
+}
+
+char *
+yasm_intnum_get_str(const yasm_intnum *intn)
+{
+ unsigned char *s;
+
+ switch (intn->type) {
+ case INTNUM_L:
+ s = yasm_xmalloc(16);
+ sprintf((char *)s, "%ld", intn->val.l);
+ return (char *)s;
+ break;
+ case INTNUM_BV:
+ return (char *)BitVector_to_Dec(intn->val.bv);
+ break;
+ }
+ /*@notreached@*/
+ return NULL;
+}
+
+void
+yasm_intnum_print(const yasm_intnum *intn, FILE *f)
+{
+ unsigned char *s;
+
+ switch (intn->type) {
+ case INTNUM_L:
+ fprintf(f, "0x%lx", intn->val.l);
+ break;
+ case INTNUM_BV:
+ s = BitVector_to_Hex(intn->val.bv);
+ fprintf(f, "0x%s", (char *)s);
+ yasm_xfree(s);
+ break;
+ }
+}
diff --git a/contrib/tools/yasm/libyasm/intnum.h b/contrib/tools/yasm/libyasm/intnum.h
index b035fc451b..bec832cf31 100644
--- a/contrib/tools/yasm/libyasm/intnum.h
+++ b/contrib/tools/yasm/libyasm/intnum.h
@@ -1,340 +1,340 @@
-/**
- * \file libyasm/intnum.h
- * \brief YASM integer number interface.
- *
- * \license
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- * \endlicense
- */
-#ifndef YASM_INTNUM_H
-#define YASM_INTNUM_H
-
-#ifndef YASM_LIB_DECL
-#define YASM_LIB_DECL
-#endif
-
-/** Initialize intnum internal data structures. */
-YASM_LIB_DECL
-void yasm_intnum_initialize(void);
-
-/** Clean up internal intnum allocations. */
-YASM_LIB_DECL
-void yasm_intnum_cleanup(void);
-
-/** Create a new intnum from a decimal string.
- * \param str decimal string
- * \return Newly allocated intnum.
- */
-YASM_LIB_DECL
-/*@only@*/ yasm_intnum *yasm_intnum_create_dec(char *str);
-
-/** Create a new intnum from a binary string.
- * \param str binary string
- * \return Newly allocated intnum.
- */
-YASM_LIB_DECL
-/*@only@*/ yasm_intnum *yasm_intnum_create_bin(char *str);
-
-/** Create a new intnum from an octal string.
- * \param str octal string
- * \return Newly allocated intnum.
- */
-YASM_LIB_DECL
-/*@only@*/ yasm_intnum *yasm_intnum_create_oct(char *str);
-
-/** Create a new intnum from a hexidecimal string.
- * \param str hexidecimal string
- * \return Newly allocated intnum.
- */
-YASM_LIB_DECL
-/*@only@*/ yasm_intnum *yasm_intnum_create_hex(char *str);
-
-/** Convert character constant to integer value, using NASM rules. NASM syntax
- * supports automatic conversion from strings such as 'abcd' to a 32-bit
- * integer value (little endian order). This function performs those conversions.
- * \param str character constant string
- * \return Newly allocated intnum.
- */
-YASM_LIB_DECL
-/*@only@*/ yasm_intnum *yasm_intnum_create_charconst_nasm(const char *str);
-
-/** Convert character constant to integer value, using TASM rules. TASM syntax
- * supports automatic conversion from strings such as 'abcd' to a 32-bit
- * integer value (big endian order). This function performs those conversions.
- * \param str character constant string
- * \return Newly allocated intnum.
- */
-YASM_LIB_DECL
-/*@only@*/ yasm_intnum *yasm_intnum_create_charconst_tasm(const char *str);
-
-/** Create a new intnum from an unsigned integer value.
- * \param i unsigned integer value
- * \return Newly allocated intnum.
- */
-YASM_LIB_DECL
-/*@only@*/ yasm_intnum *yasm_intnum_create_uint(unsigned long i);
-
-/** Create a new intnum from an signed integer value.
- * \param i signed integer value
- * \return Newly allocated intnum.
- */
-YASM_LIB_DECL
-/*@only@*/ yasm_intnum *yasm_intnum_create_int(long i);
-
-/** Create a new intnum from LEB128-encoded form.
- * \param ptr pointer to start of LEB128 encoded form
- * \param sign signed (1) or unsigned (0) LEB128 format
- * \param size number of bytes read from ptr (output)
- * \return Newly allocated intnum. Number of bytes read returned into
- * bytes_read parameter.
- */
-YASM_LIB_DECL
-/*@only@*/ yasm_intnum *yasm_intnum_create_leb128
- (const unsigned char *ptr, int sign, /*@out@*/ unsigned long *size);
-
-/** Create a new intnum from a little-endian or big-endian buffer.
- * In little endian, the LSB is in ptr[0].
- * \param ptr pointer to start of buffer
- * \param sign signed (1) or unsigned (0) source
- * \param srcsize source buffer size (in bytes)
- * \param bigendian endianness (nonzero=big, zero=little)
- */
-YASM_LIB_DECL
-/*@only@*/ yasm_intnum *yasm_intnum_create_sized
- (unsigned char *ptr, int sign, size_t srcsize, int bigendian);
-
-/** Duplicate an intnum.
- * \param intn intnum
- * \return Newly allocated intnum with the same value as intn.
- */
-YASM_LIB_DECL
-/*@only@*/ yasm_intnum *yasm_intnum_copy(const yasm_intnum *intn);
-
-/** Destroy (free allocated memory for) an intnum.
- * \param intn intnum
- */
-YASM_LIB_DECL
-void yasm_intnum_destroy(/*@only@*/ yasm_intnum *intn);
-
-/** Floating point calculation function: acc = acc op operand.
- * \note Not all operations in yasm_expr_op may be supported; unsupported
- * operations will result in an error.
- * \param acc intnum accumulator
- * \param op operation
- * \param operand intnum operand
- * \return Nonzero if error occurred.
- */
-YASM_LIB_DECL
-int yasm_intnum_calc(yasm_intnum *acc, yasm_expr_op op, yasm_intnum *operand);
-
-/** Compare two intnums.
- * \param intn1 first intnum
- * \param intn2 second intnum
- * \return -1 if intn1 < intn2, 0 if intn1 == intn2, 1 if intn1 > intn2.
- */
-YASM_LIB_DECL
-int yasm_intnum_compare(const yasm_intnum *intn1, const yasm_intnum *intn2);
-
-/** Zero an intnum.
- * \param intn intnum
- */
-YASM_LIB_DECL
-void yasm_intnum_zero(yasm_intnum *intn);
-
-/** Set an intnum to the value of another intnum.
- * \param intn intnum
- * \param val intnum to get value from
- */
-YASM_LIB_DECL
-void yasm_intnum_set(yasm_intnum *intn, const yasm_intnum *val);
-
-/** Set an intnum to an unsigned integer.
- * \param intn intnum
- * \param val integer value
- */
-YASM_LIB_DECL
-void yasm_intnum_set_uint(yasm_intnum *intn, unsigned long val);
-
-/** Set an intnum to an signed integer.
- * \param intn intnum
- * \param val integer value
- */
-YASM_LIB_DECL
-void yasm_intnum_set_int(yasm_intnum *intn, long val);
-
-/** Simple value check for 0.
- * \param acc intnum
- * \return Nonzero if acc==0.
- */
-YASM_LIB_DECL
-int yasm_intnum_is_zero(const yasm_intnum *acc);
-
-/** Simple value check for 1.
- * \param acc intnum
- * \return Nonzero if acc==1.
- */
-YASM_LIB_DECL
-int yasm_intnum_is_pos1(const yasm_intnum *acc);
-
-/** Simple value check for -1.
- * \param acc intnum
- * \return Nonzero if acc==-1.
- */
-YASM_LIB_DECL
-int yasm_intnum_is_neg1(const yasm_intnum *acc);
-
-/** Simple sign check.
- * \param acc intnum
- * \return -1 if negative, 0 if zero, +1 if positive
- */
-YASM_LIB_DECL
-int yasm_intnum_sign(const yasm_intnum *acc);
-
-/** Convert an intnum to an unsigned 32-bit value. The value is in "standard"
- * C format (eg, of unknown endian).
- * \note Parameter intnum is truncated to fit into 32 bits. Use
- * intnum_check_size() to check for overflow.
- * \param intn intnum
- * \return Unsigned 32-bit value of intn.
- */
-YASM_LIB_DECL
-unsigned long yasm_intnum_get_uint(const yasm_intnum *intn);
-
-/** Convert an intnum to a signed 32-bit value. The value is in "standard" C
- * format (eg, of unknown endian).
- * \note Parameter intnum is truncated to fit into 32 bits. Use
- * intnum_check_size() to check for overflow.
- * \param intn intnum
- * \return Signed 32-bit value of intn.
- */
-YASM_LIB_DECL
-long yasm_intnum_get_int(const yasm_intnum *intn);
-
-/** Output #yasm_intnum to buffer in little-endian or big-endian. Puts the
- * value into the least significant bits of the destination, or may be shifted
- * into more significant bits by the shift parameter. The destination bits are
- * cleared before being set. [0] should be the first byte output to the file.
- * \param intn intnum
- * \param ptr pointer to storage for size bytes of output
- * \param destsize destination size (in bytes)
- * \param valsize size (in bits)
- * \param shift left shift (in bits); may be negative to specify right
- * shift (standard warnings include truncation to boundary)
- * \param bigendian endianness (nonzero=big, zero=little)
- * \param warn enables standard warnings (value doesn't fit into valsize
- * bits): <0=signed warnings, >0=unsigned warnings, 0=no warn
- */
-YASM_LIB_DECL
-void yasm_intnum_get_sized(const yasm_intnum *intn, unsigned char *ptr,
- size_t destsize, size_t valsize, int shift,
- int bigendian, int warn);
-
-/** Check to see if intnum will fit without overflow into size bits.
- * \param intn intnum
- * \param size number of bits of output space
- * \param rshift right shift
- * \param rangetype signed/unsigned range selection:
- * 0 => (0, unsigned max);
- * 1 => (signed min, signed max);
- * 2 => (signed min, unsigned max)
- * \return Nonzero if intnum will fit.
- */
-YASM_LIB_DECL
-int yasm_intnum_check_size(const yasm_intnum *intn, size_t size,
- size_t rshift, int rangetype);
-
-/** Check to see if intnum will fit into a particular numeric range.
- * \param intn intnum
- * \param low low end of range (inclusive)
- * \param high high end of range (inclusive)
- * \return Nonzero if intnum is within range.
- */
-YASM_LIB_DECL
-int yasm_intnum_in_range(const yasm_intnum *intn, long low, long high);
-
-/** Output #yasm_intnum to buffer in LEB128-encoded form.
- * \param intn intnum
- * \param ptr pointer to storage for output bytes
- * \param sign signedness of LEB128 encoding (0=unsigned, 1=signed)
- * \return Number of bytes generated.
- */
-YASM_LIB_DECL
-unsigned long yasm_intnum_get_leb128(const yasm_intnum *intn,
- unsigned char *ptr, int sign);
-
-/** Calculate number of bytes LEB128-encoded form of #yasm_intnum will take.
- * \param intn intnum
- * \param sign signedness of LEB128 encoding (0=unsigned, 1=signed)
- * \return Number of bytes.
- */
-YASM_LIB_DECL
-unsigned long yasm_intnum_size_leb128(const yasm_intnum *intn, int sign);
-
-/** Output integer to buffer in signed LEB128-encoded form.
- * \param v integer
- * \param ptr pointer to storage for output bytes
- * \return Number of bytes generated.
- */
-YASM_LIB_DECL
-unsigned long yasm_get_sleb128(long v, unsigned char *ptr);
-
-/** Calculate number of bytes signed LEB128-encoded form of integer will take.
- * \param v integer
- * \return Number of bytes.
- */
-YASM_LIB_DECL
-unsigned long yasm_size_sleb128(long v);
-
-/** Output integer to buffer in unsigned LEB128-encoded form.
- * \param v integer
- * \param ptr pointer to storage for output bytes
- * \return Number of bytes generated.
- */
-YASM_LIB_DECL
-unsigned long yasm_get_uleb128(unsigned long v, unsigned char *ptr);
-
-/** Calculate number of bytes unsigned LEB128-encoded form of integer will take.
- * \param v integer
- * \return Number of bytes.
- */
-YASM_LIB_DECL
-unsigned long yasm_size_uleb128(unsigned long v);
-
-/** Get an intnum as a signed decimal string. The returned string will
- * contain a leading '-' if the intnum is negative.
- * \param intn intnum
- * \return Newly allocated string containing the decimal representation of
- * the intnum.
- */
-YASM_LIB_DECL
-/*@only@*/ char *yasm_intnum_get_str(const yasm_intnum *intn);
-
-/** Print an intnum. For debugging purposes.
- * \param f file
- * \param intn intnum
- */
-YASM_LIB_DECL
-void yasm_intnum_print(const yasm_intnum *intn, FILE *f);
-
-#endif
+/**
+ * \file libyasm/intnum.h
+ * \brief YASM integer number interface.
+ *
+ * \license
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * - Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ * \endlicense
+ */
+#ifndef YASM_INTNUM_H
+#define YASM_INTNUM_H
+
+#ifndef YASM_LIB_DECL
+#define YASM_LIB_DECL
+#endif
+
+/** Initialize intnum internal data structures. */
+YASM_LIB_DECL
+void yasm_intnum_initialize(void);
+
+/** Clean up internal intnum allocations. */
+YASM_LIB_DECL
+void yasm_intnum_cleanup(void);
+
+/** Create a new intnum from a decimal string.
+ * \param str decimal string
+ * \return Newly allocated intnum.
+ */
+YASM_LIB_DECL
+/*@only@*/ yasm_intnum *yasm_intnum_create_dec(char *str);
+
+/** Create a new intnum from a binary string.
+ * \param str binary string
+ * \return Newly allocated intnum.
+ */
+YASM_LIB_DECL
+/*@only@*/ yasm_intnum *yasm_intnum_create_bin(char *str);
+
+/** Create a new intnum from an octal string.
+ * \param str octal string
+ * \return Newly allocated intnum.
+ */
+YASM_LIB_DECL
+/*@only@*/ yasm_intnum *yasm_intnum_create_oct(char *str);
+
+/** Create a new intnum from a hexidecimal string.
+ * \param str hexidecimal string
+ * \return Newly allocated intnum.
+ */
+YASM_LIB_DECL
+/*@only@*/ yasm_intnum *yasm_intnum_create_hex(char *str);
+
+/** Convert character constant to integer value, using NASM rules. NASM syntax
+ * supports automatic conversion from strings such as 'abcd' to a 32-bit
+ * integer value (little endian order). This function performs those conversions.
+ * \param str character constant string
+ * \return Newly allocated intnum.
+ */
+YASM_LIB_DECL
+/*@only@*/ yasm_intnum *yasm_intnum_create_charconst_nasm(const char *str);
+
+/** Convert character constant to integer value, using TASM rules. TASM syntax
+ * supports automatic conversion from strings such as 'abcd' to a 32-bit
+ * integer value (big endian order). This function performs those conversions.
+ * \param str character constant string
+ * \return Newly allocated intnum.
+ */
+YASM_LIB_DECL
+/*@only@*/ yasm_intnum *yasm_intnum_create_charconst_tasm(const char *str);
+
+/** Create a new intnum from an unsigned integer value.
+ * \param i unsigned integer value
+ * \return Newly allocated intnum.
+ */
+YASM_LIB_DECL
+/*@only@*/ yasm_intnum *yasm_intnum_create_uint(unsigned long i);
+
+/** Create a new intnum from an signed integer value.
+ * \param i signed integer value
+ * \return Newly allocated intnum.
+ */
+YASM_LIB_DECL
+/*@only@*/ yasm_intnum *yasm_intnum_create_int(long i);
+
+/** Create a new intnum from LEB128-encoded form.
+ * \param ptr pointer to start of LEB128 encoded form
+ * \param sign signed (1) or unsigned (0) LEB128 format
+ * \param size number of bytes read from ptr (output)
+ * \return Newly allocated intnum. Number of bytes read returned into
+ * bytes_read parameter.
+ */
+YASM_LIB_DECL
+/*@only@*/ yasm_intnum *yasm_intnum_create_leb128
+ (const unsigned char *ptr, int sign, /*@out@*/ unsigned long *size);
+
+/** Create a new intnum from a little-endian or big-endian buffer.
+ * In little endian, the LSB is in ptr[0].
+ * \param ptr pointer to start of buffer
+ * \param sign signed (1) or unsigned (0) source
+ * \param srcsize source buffer size (in bytes)
+ * \param bigendian endianness (nonzero=big, zero=little)
+ */
+YASM_LIB_DECL
+/*@only@*/ yasm_intnum *yasm_intnum_create_sized
+ (unsigned char *ptr, int sign, size_t srcsize, int bigendian);
+
+/** Duplicate an intnum.
+ * \param intn intnum
+ * \return Newly allocated intnum with the same value as intn.
+ */
+YASM_LIB_DECL
+/*@only@*/ yasm_intnum *yasm_intnum_copy(const yasm_intnum *intn);
+
+/** Destroy (free allocated memory for) an intnum.
+ * \param intn intnum
+ */
+YASM_LIB_DECL
+void yasm_intnum_destroy(/*@only@*/ yasm_intnum *intn);
+
+/** Floating point calculation function: acc = acc op operand.
+ * \note Not all operations in yasm_expr_op may be supported; unsupported
+ * operations will result in an error.
+ * \param acc intnum accumulator
+ * \param op operation
+ * \param operand intnum operand
+ * \return Nonzero if error occurred.
+ */
+YASM_LIB_DECL
+int yasm_intnum_calc(yasm_intnum *acc, yasm_expr_op op, yasm_intnum *operand);
+
+/** Compare two intnums.
+ * \param intn1 first intnum
+ * \param intn2 second intnum
+ * \return -1 if intn1 < intn2, 0 if intn1 == intn2, 1 if intn1 > intn2.
+ */
+YASM_LIB_DECL
+int yasm_intnum_compare(const yasm_intnum *intn1, const yasm_intnum *intn2);
+
+/** Zero an intnum.
+ * \param intn intnum
+ */
+YASM_LIB_DECL
+void yasm_intnum_zero(yasm_intnum *intn);
+
+/** Set an intnum to the value of another intnum.
+ * \param intn intnum
+ * \param val intnum to get value from
+ */
+YASM_LIB_DECL
+void yasm_intnum_set(yasm_intnum *intn, const yasm_intnum *val);
+
+/** Set an intnum to an unsigned integer.
+ * \param intn intnum
+ * \param val integer value
+ */
+YASM_LIB_DECL
+void yasm_intnum_set_uint(yasm_intnum *intn, unsigned long val);
+
+/** Set an intnum to an signed integer.
+ * \param intn intnum
+ * \param val integer value
+ */
+YASM_LIB_DECL
+void yasm_intnum_set_int(yasm_intnum *intn, long val);
+
+/** Simple value check for 0.
+ * \param acc intnum
+ * \return Nonzero if acc==0.
+ */
+YASM_LIB_DECL
+int yasm_intnum_is_zero(const yasm_intnum *acc);
+
+/** Simple value check for 1.
+ * \param acc intnum
+ * \return Nonzero if acc==1.
+ */
+YASM_LIB_DECL
+int yasm_intnum_is_pos1(const yasm_intnum *acc);
+
+/** Simple value check for -1.
+ * \param acc intnum
+ * \return Nonzero if acc==-1.
+ */
+YASM_LIB_DECL
+int yasm_intnum_is_neg1(const yasm_intnum *acc);
+
+/** Simple sign check.
+ * \param acc intnum
+ * \return -1 if negative, 0 if zero, +1 if positive
+ */
+YASM_LIB_DECL
+int yasm_intnum_sign(const yasm_intnum *acc);
+
+/** Convert an intnum to an unsigned 32-bit value. The value is in "standard"
+ * C format (eg, of unknown endian).
+ * \note Parameter intnum is truncated to fit into 32 bits. Use
+ * intnum_check_size() to check for overflow.
+ * \param intn intnum
+ * \return Unsigned 32-bit value of intn.
+ */
+YASM_LIB_DECL
+unsigned long yasm_intnum_get_uint(const yasm_intnum *intn);
+
+/** Convert an intnum to a signed 32-bit value. The value is in "standard" C
+ * format (eg, of unknown endian).
+ * \note Parameter intnum is truncated to fit into 32 bits. Use
+ * intnum_check_size() to check for overflow.
+ * \param intn intnum
+ * \return Signed 32-bit value of intn.
+ */
+YASM_LIB_DECL
+long yasm_intnum_get_int(const yasm_intnum *intn);
+
+/** Output #yasm_intnum to buffer in little-endian or big-endian. Puts the
+ * value into the least significant bits of the destination, or may be shifted
+ * into more significant bits by the shift parameter. The destination bits are
+ * cleared before being set. [0] should be the first byte output to the file.
+ * \param intn intnum
+ * \param ptr pointer to storage for size bytes of output
+ * \param destsize destination size (in bytes)
+ * \param valsize size (in bits)
+ * \param shift left shift (in bits); may be negative to specify right
+ * shift (standard warnings include truncation to boundary)
+ * \param bigendian endianness (nonzero=big, zero=little)
+ * \param warn enables standard warnings (value doesn't fit into valsize
+ * bits): <0=signed warnings, >0=unsigned warnings, 0=no warn
+ */
+YASM_LIB_DECL
+void yasm_intnum_get_sized(const yasm_intnum *intn, unsigned char *ptr,
+ size_t destsize, size_t valsize, int shift,
+ int bigendian, int warn);
+
+/** Check to see if intnum will fit without overflow into size bits.
+ * \param intn intnum
+ * \param size number of bits of output space
+ * \param rshift right shift
+ * \param rangetype signed/unsigned range selection:
+ * 0 => (0, unsigned max);
+ * 1 => (signed min, signed max);
+ * 2 => (signed min, unsigned max)
+ * \return Nonzero if intnum will fit.
+ */
+YASM_LIB_DECL
+int yasm_intnum_check_size(const yasm_intnum *intn, size_t size,
+ size_t rshift, int rangetype);
+
+/** Check to see if intnum will fit into a particular numeric range.
+ * \param intn intnum
+ * \param low low end of range (inclusive)
+ * \param high high end of range (inclusive)
+ * \return Nonzero if intnum is within range.
+ */
+YASM_LIB_DECL
+int yasm_intnum_in_range(const yasm_intnum *intn, long low, long high);
+
+/** Output #yasm_intnum to buffer in LEB128-encoded form.
+ * \param intn intnum
+ * \param ptr pointer to storage for output bytes
+ * \param sign signedness of LEB128 encoding (0=unsigned, 1=signed)
+ * \return Number of bytes generated.
+ */
+YASM_LIB_DECL
+unsigned long yasm_intnum_get_leb128(const yasm_intnum *intn,
+ unsigned char *ptr, int sign);
+
+/** Calculate number of bytes LEB128-encoded form of #yasm_intnum will take.
+ * \param intn intnum
+ * \param sign signedness of LEB128 encoding (0=unsigned, 1=signed)
+ * \return Number of bytes.
+ */
+YASM_LIB_DECL
+unsigned long yasm_intnum_size_leb128(const yasm_intnum *intn, int sign);
+
+/** Output integer to buffer in signed LEB128-encoded form.
+ * \param v integer
+ * \param ptr pointer to storage for output bytes
+ * \return Number of bytes generated.
+ */
+YASM_LIB_DECL
+unsigned long yasm_get_sleb128(long v, unsigned char *ptr);
+
+/** Calculate number of bytes signed LEB128-encoded form of integer will take.
+ * \param v integer
+ * \return Number of bytes.
+ */
+YASM_LIB_DECL
+unsigned long yasm_size_sleb128(long v);
+
+/** Output integer to buffer in unsigned LEB128-encoded form.
+ * \param v integer
+ * \param ptr pointer to storage for output bytes
+ * \return Number of bytes generated.
+ */
+YASM_LIB_DECL
+unsigned long yasm_get_uleb128(unsigned long v, unsigned char *ptr);
+
+/** Calculate number of bytes unsigned LEB128-encoded form of integer will take.
+ * \param v integer
+ * \return Number of bytes.
+ */
+YASM_LIB_DECL
+unsigned long yasm_size_uleb128(unsigned long v);
+
+/** Get an intnum as a signed decimal string. The returned string will
+ * contain a leading '-' if the intnum is negative.
+ * \param intn intnum
+ * \return Newly allocated string containing the decimal representation of
+ * the intnum.
+ */
+YASM_LIB_DECL
+/*@only@*/ char *yasm_intnum_get_str(const yasm_intnum *intn);
+
+/** Print an intnum. For debugging purposes.
+ * \param f file
+ * \param intn intnum
+ */
+YASM_LIB_DECL
+void yasm_intnum_print(const yasm_intnum *intn, FILE *f);
+
+#endif
diff --git a/contrib/tools/yasm/libyasm/inttree.c b/contrib/tools/yasm/libyasm/inttree.c
index 1c21b3ce02..2ae10e9b9c 100644
--- a/contrib/tools/yasm/libyasm/inttree.c
+++ b/contrib/tools/yasm/libyasm/inttree.c
@@ -1,891 +1,891 @@
-#include "util.h"
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <limits.h>
-#include <math.h>
-#include "coretype.h"
-#include "inttree.h"
-
-#define VERIFY(condition) \
-if (!(condition)) { \
-fprintf(stderr, "Assumption \"%s\"\nFailed in file %s: at line:%i\n", \
-#condition,__FILE__,__LINE__); \
-abort();}
-
-/*#define DEBUG_ASSERT 1*/
-
-#ifdef DEBUG_ASSERT
-static void Assert(int assertion, const char *error)
-{
- if (!assertion) {
- fprintf(stderr, "Assertion Failed: %s\n", error);
- abort();
- }
-}
-#endif
-
-/* If the symbol CHECK_INTERVAL_TREE_ASSUMPTIONS is defined then the
- * code does a lot of extra checking to make sure certain assumptions
- * are satisfied. This only needs to be done if you suspect bugs are
- * present or if you make significant changes and want to make sure
- * your changes didn't mess anything up.
- */
-/*#define CHECK_INTERVAL_TREE_ASSUMPTIONS 1*/
-
-static IntervalTreeNode *ITN_create(long low, long high, void *data);
-
-static void LeftRotate(IntervalTree *, IntervalTreeNode *);
-static void RightRotate(IntervalTree *, IntervalTreeNode *);
-static void TreeInsertHelp(IntervalTree *, IntervalTreeNode *);
-static void TreePrintHelper(const IntervalTree *, IntervalTreeNode *);
-static void FixUpMaxHigh(IntervalTree *, IntervalTreeNode *);
-static void DeleteFixUp(IntervalTree *, IntervalTreeNode *);
-#ifdef CHECK_INTERVAL_TREE_ASSUMPTIONS
-static void CheckMaxHighFields(const IntervalTree *, IntervalTreeNode *);
-static int CheckMaxHighFieldsHelper(const IntervalTree *, IntervalTreeNode *y,
- const int currentHigh, int match);
-static void IT_CheckAssumptions(const IntervalTree *);
-#endif
-
-/* define a function to find the maximum of two objects. */
-#define ITMax(a, b) ( (a > b) ? a : b )
-
-IntervalTreeNode *
-ITN_create(long low, long high, void *data)
-{
- IntervalTreeNode *itn = yasm_xmalloc(sizeof(IntervalTreeNode));
- itn->data = data;
- if (low < high) {
- itn->low = low;
- itn->high = high;
- } else {
- itn->low = high;
- itn->high = low;
- }
- itn->maxHigh = high;
- return itn;
-}
-
-IntervalTree *
-IT_create(void)
-{
- IntervalTree *it = yasm_xmalloc(sizeof(IntervalTree));
-
- it->nil = ITN_create(LONG_MIN, LONG_MIN, NULL);
- it->nil->left = it->nil;
- it->nil->right = it->nil;
- it->nil->parent = it->nil;
- it->nil->red = 0;
-
- it->root = ITN_create(LONG_MAX, LONG_MAX, NULL);
- it->root->left = it->nil;
- it->root->right = it->nil;
- it->root->parent = it->nil;
- it->root->red = 0;
-
- /* the following are used for the Enumerate function */
- it->recursionNodeStackSize = 128;
- it->recursionNodeStack = (it_recursion_node *)
- yasm_xmalloc(it->recursionNodeStackSize*sizeof(it_recursion_node));
- it->recursionNodeStackTop = 1;
- it->recursionNodeStack[0].start_node = NULL;
-
- return it;
-}
-
-/***********************************************************************/
-/* FUNCTION: LeftRotate */
-/**/
-/* INPUTS: the node to rotate on */
-/**/
-/* OUTPUT: None */
-/**/
-/* Modifies Input: this, x */
-/**/
-/* EFFECTS: Rotates as described in _Introduction_To_Algorithms by */
-/* Cormen, Leiserson, Rivest (Chapter 14). Basically this */
-/* makes the parent of x be to the left of x, x the parent of */
-/* its parent before the rotation and fixes other pointers */
-/* accordingly. Also updates the maxHigh fields of x and y */
-/* after rotation. */
-/***********************************************************************/
-
-static void
-LeftRotate(IntervalTree *it, IntervalTreeNode *x)
-{
- IntervalTreeNode *y;
+#include "util.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <limits.h>
+#include <math.h>
+#include "coretype.h"
+#include "inttree.h"
+
+#define VERIFY(condition) \
+if (!(condition)) { \
+fprintf(stderr, "Assumption \"%s\"\nFailed in file %s: at line:%i\n", \
+#condition,__FILE__,__LINE__); \
+abort();}
+
+/*#define DEBUG_ASSERT 1*/
+
+#ifdef DEBUG_ASSERT
+static void Assert(int assertion, const char *error)
+{
+ if (!assertion) {
+ fprintf(stderr, "Assertion Failed: %s\n", error);
+ abort();
+ }
+}
+#endif
+
+/* If the symbol CHECK_INTERVAL_TREE_ASSUMPTIONS is defined then the
+ * code does a lot of extra checking to make sure certain assumptions
+ * are satisfied. This only needs to be done if you suspect bugs are
+ * present or if you make significant changes and want to make sure
+ * your changes didn't mess anything up.
+ */
+/*#define CHECK_INTERVAL_TREE_ASSUMPTIONS 1*/
+
+static IntervalTreeNode *ITN_create(long low, long high, void *data);
+
+static void LeftRotate(IntervalTree *, IntervalTreeNode *);
+static void RightRotate(IntervalTree *, IntervalTreeNode *);
+static void TreeInsertHelp(IntervalTree *, IntervalTreeNode *);
+static void TreePrintHelper(const IntervalTree *, IntervalTreeNode *);
+static void FixUpMaxHigh(IntervalTree *, IntervalTreeNode *);
+static void DeleteFixUp(IntervalTree *, IntervalTreeNode *);
+#ifdef CHECK_INTERVAL_TREE_ASSUMPTIONS
+static void CheckMaxHighFields(const IntervalTree *, IntervalTreeNode *);
+static int CheckMaxHighFieldsHelper(const IntervalTree *, IntervalTreeNode *y,
+ const int currentHigh, int match);
+static void IT_CheckAssumptions(const IntervalTree *);
+#endif
+
+/* define a function to find the maximum of two objects. */
+#define ITMax(a, b) ( (a > b) ? a : b )
+
+IntervalTreeNode *
+ITN_create(long low, long high, void *data)
+{
+ IntervalTreeNode *itn = yasm_xmalloc(sizeof(IntervalTreeNode));
+ itn->data = data;
+ if (low < high) {
+ itn->low = low;
+ itn->high = high;
+ } else {
+ itn->low = high;
+ itn->high = low;
+ }
+ itn->maxHigh = high;
+ return itn;
+}
+
+IntervalTree *
+IT_create(void)
+{
+ IntervalTree *it = yasm_xmalloc(sizeof(IntervalTree));
+
+ it->nil = ITN_create(LONG_MIN, LONG_MIN, NULL);
+ it->nil->left = it->nil;
+ it->nil->right = it->nil;
+ it->nil->parent = it->nil;
+ it->nil->red = 0;
- /* I originally wrote this function to use the sentinel for
- * nil to avoid checking for nil. However this introduces a
- * very subtle bug because sometimes this function modifies
- * the parent pointer of nil. This can be a problem if a
- * function which calls LeftRotate also uses the nil sentinel
- * and expects the nil sentinel's parent pointer to be unchanged
- * after calling this function. For example, when DeleteFixUP
- * calls LeftRotate it expects the parent pointer of nil to be
- * unchanged.
- */
-
- y=x->right;
- x->right=y->left;
-
- if (y->left != it->nil)
- y->left->parent=x; /* used to use sentinel here */
- /* and do an unconditional assignment instead of testing for nil */
-
- y->parent=x->parent;
-
- /* Instead of checking if x->parent is the root as in the book, we
- * count on the root sentinel to implicitly take care of this case
- */
- if (x == x->parent->left)
- x->parent->left=y;
- else
- x->parent->right=y;
- y->left=x;
- x->parent=y;
-
- x->maxHigh=ITMax(x->left->maxHigh,ITMax(x->right->maxHigh,x->high));
- y->maxHigh=ITMax(x->maxHigh,ITMax(y->right->maxHigh,y->high));
-#ifdef CHECK_INTERVAL_TREE_ASSUMPTIONS
- IT_CheckAssumptions(it);
-#elif defined(DEBUG_ASSERT)
- Assert(!it->nil->red,"nil not red in ITLeftRotate");
- Assert((it->nil->maxHigh=LONG_MIN),
- "nil->maxHigh != LONG_MIN in ITLeftRotate");
-#endif
-}
-
-
-/***********************************************************************/
-/* FUNCTION: RightRotate */
-/**/
-/* INPUTS: node to rotate on */
-/**/
-/* OUTPUT: None */
-/**/
-/* Modifies Input?: this, y */
-/**/
-/* EFFECTS: Rotates as described in _Introduction_To_Algorithms by */
-/* Cormen, Leiserson, Rivest (Chapter 14). Basically this */
-/* makes the parent of x be to the left of x, x the parent of */
-/* its parent before the rotation and fixes other pointers */
-/* accordingly. Also updates the maxHigh fields of x and y */
-/* after rotation. */
-/***********************************************************************/
-
-
-static void
-RightRotate(IntervalTree *it, IntervalTreeNode *y)
-{
- IntervalTreeNode *x;
-
- /* I originally wrote this function to use the sentinel for
- * nil to avoid checking for nil. However this introduces a
- * very subtle bug because sometimes this function modifies
- * the parent pointer of nil. This can be a problem if a
- * function which calls LeftRotate also uses the nil sentinel
- * and expects the nil sentinel's parent pointer to be unchanged
- * after calling this function. For example, when DeleteFixUP
- * calls LeftRotate it expects the parent pointer of nil to be
- * unchanged.
- */
-
- x=y->left;
- y->left=x->right;
-
- if (it->nil != x->right)
- x->right->parent=y; /*used to use sentinel here */
- /* and do an unconditional assignment instead of testing for nil */
-
- /* Instead of checking if x->parent is the root as in the book, we
- * count on the root sentinel to implicitly take care of this case
- */
- x->parent=y->parent;
- if (y == y->parent->left)
- y->parent->left=x;
- else
- y->parent->right=x;
- x->right=y;
- y->parent=x;
-
- y->maxHigh=ITMax(y->left->maxHigh,ITMax(y->right->maxHigh,y->high));
- x->maxHigh=ITMax(x->left->maxHigh,ITMax(y->maxHigh,x->high));
-#ifdef CHECK_INTERVAL_TREE_ASSUMPTIONS
- IT_CheckAssumptions(it);
-#elif defined(DEBUG_ASSERT)
- Assert(!it->nil->red,"nil not red in ITRightRotate");
- Assert((it->nil->maxHigh=LONG_MIN),
- "nil->maxHigh != LONG_MIN in ITRightRotate");
-#endif
-}
-
-/***********************************************************************/
-/* FUNCTION: TreeInsertHelp */
-/**/
-/* INPUTS: z is the node to insert */
-/**/
-/* OUTPUT: none */
-/**/
-/* Modifies Input: this, z */
-/**/
-/* EFFECTS: Inserts z into the tree as if it were a regular binary tree */
-/* using the algorithm described in _Introduction_To_Algorithms_ */
-/* by Cormen et al. This funciton is only intended to be called */
-/* by the InsertTree function and not by the user */
-/***********************************************************************/
-
-static void
-TreeInsertHelp(IntervalTree *it, IntervalTreeNode *z)
-{
- /* This function should only be called by InsertITTree (see above) */
- IntervalTreeNode* x;
- IntervalTreeNode* y;
-
- z->left=z->right=it->nil;
- y=it->root;
- x=it->root->left;
- while( x != it->nil) {
- y=x;
- if (x->low > z->low)
- x=x->left;
- else /* x->low <= z->low */
- x=x->right;
- }
- z->parent=y;
- if ((y == it->root) || (y->low > z->low))
- y->left=z;
- else
- y->right=z;
-
-#if defined(DEBUG_ASSERT)
- Assert(!it->nil->red,"nil not red in ITTreeInsertHelp");
- Assert((it->nil->maxHigh=INT_MIN),
- "nil->maxHigh != INT_MIN in ITTreeInsertHelp");
-#endif
-}
-
-
-/***********************************************************************/
-/* FUNCTION: FixUpMaxHigh */
-/**/
-/* INPUTS: x is the node to start from*/
-/**/
-/* OUTPUT: none */
-/**/
-/* Modifies Input: this */
-/**/
-/* EFFECTS: Travels up to the root fixing the maxHigh fields after */
-/* an insertion or deletion */
-/***********************************************************************/
-
-static void
-FixUpMaxHigh(IntervalTree *it, IntervalTreeNode *x)
-{
- while(x != it->root) {
- x->maxHigh=ITMax(x->high,ITMax(x->left->maxHigh,x->right->maxHigh));
- x=x->parent;
- }
-#ifdef CHECK_INTERVAL_TREE_ASSUMPTIONS
- IT_CheckAssumptions(it);
-#endif
-}
-
-/* Before calling InsertNode the node x should have its key set */
-
-/***********************************************************************/
-/* FUNCTION: InsertNode */
-/**/
-/* INPUTS: newInterval is the interval to insert*/
-/**/
-/* OUTPUT: This function returns a pointer to the newly inserted node */
-/* which is guarunteed to be valid until this node is deleted. */
-/* What this means is if another data structure stores this */
-/* pointer then the tree does not need to be searched when this */
-/* is to be deleted. */
-/**/
-/* Modifies Input: tree */
-/**/
-/* EFFECTS: Creates a node node which contains the appropriate key and */
-/* info pointers and inserts it into the tree. */
-/***********************************************************************/
-
-IntervalTreeNode *
-IT_insert(IntervalTree *it, long low, long high, void *data)
-{
- IntervalTreeNode *x, *y, *newNode;
-
- x = ITN_create(low, high, data);
- TreeInsertHelp(it, x);
- FixUpMaxHigh(it, x->parent);
- newNode = x;
- x->red=1;
- while(x->parent->red) { /* use sentinel instead of checking for root */
- if (x->parent == x->parent->parent->left) {
- y=x->parent->parent->right;
- if (y->red) {
- x->parent->red=0;
- y->red=0;
- x->parent->parent->red=1;
- x=x->parent->parent;
- } else {
- if (x == x->parent->right) {
- x=x->parent;
- LeftRotate(it, x);
- }
- x->parent->red=0;
- x->parent->parent->red=1;
- RightRotate(it, x->parent->parent);
- }
- } else { /* case for x->parent == x->parent->parent->right */
- /* this part is just like the section above with */
- /* left and right interchanged */
- y=x->parent->parent->left;
- if (y->red) {
- x->parent->red=0;
- y->red=0;
- x->parent->parent->red=1;
- x=x->parent->parent;
- } else {
- if (x == x->parent->left) {
- x=x->parent;
- RightRotate(it, x);
- }
- x->parent->red=0;
- x->parent->parent->red=1;
- LeftRotate(it, x->parent->parent);
- }
- }
- }
- it->root->left->red=0;
-
-#ifdef CHECK_INTERVAL_TREE_ASSUMPTIONS
- IT_CheckAssumptions(it);
-#elif defined(DEBUG_ASSERT)
- Assert(!it->nil->red,"nil not red in ITTreeInsert");
- Assert(!it->root->red,"root not red in ITTreeInsert");
- Assert((it->nil->maxHigh=LONG_MIN),
- "nil->maxHigh != LONG_MIN in ITTreeInsert");
-#endif
- return newNode;
-}
-
-/***********************************************************************/
-/* FUNCTION: GetSuccessorOf */
-/**/
-/* INPUTS: x is the node we want the succesor of */
-/**/
-/* OUTPUT: This function returns the successor of x or NULL if no */
-/* successor exists. */
-/**/
-/* Modifies Input: none */
-/**/
-/* Note: uses the algorithm in _Introduction_To_Algorithms_ */
-/***********************************************************************/
-
-IntervalTreeNode *
-IT_get_successor(const IntervalTree *it, IntervalTreeNode *x)
-{
- IntervalTreeNode *y;
-
- if (it->nil != (y = x->right)) { /* assignment to y is intentional */
- while(y->left != it->nil) /* returns the minium of the right subtree of x */
- y=y->left;
- return y;
- } else {
- y=x->parent;
- while(x == y->right) { /* sentinel used instead of checking for nil */
- x=y;
- y=y->parent;
- }
- if (y == it->root)
- return(it->nil);
- return y;
- }
-}
-
-/***********************************************************************/
-/* FUNCTION: GetPredecessorOf */
-/**/
-/* INPUTS: x is the node to get predecessor of */
-/**/
-/* OUTPUT: This function returns the predecessor of x or NULL if no */
-/* predecessor exists. */
-/**/
-/* Modifies Input: none */
-/**/
-/* Note: uses the algorithm in _Introduction_To_Algorithms_ */
-/***********************************************************************/
-
-IntervalTreeNode *
-IT_get_predecessor(const IntervalTree *it, IntervalTreeNode *x)
-{
- IntervalTreeNode *y;
-
- if (it->nil != (y = x->left)) { /* assignment to y is intentional */
- while(y->right != it->nil) /* returns the maximum of the left subtree of x */
- y=y->right;
- return y;
- } else {
- y=x->parent;
- while(x == y->left) {
- if (y == it->root)
- return(it->nil);
- x=y;
- y=y->parent;
- }
- return y;
- }
-}
-
-/***********************************************************************/
-/* FUNCTION: Print */
-/**/
-/* INPUTS: none */
-/**/
-/* OUTPUT: none */
-/**/
-/* EFFECTS: This function recursively prints the nodes of the tree */
-/* inorder. */
-/**/
-/* Modifies Input: none */
-/**/
-/* Note: This function should only be called from ITTreePrint */
-/***********************************************************************/
-
-static void
-ITN_print(const IntervalTreeNode *itn, IntervalTreeNode *nil,
- IntervalTreeNode *root)
-{
- printf(", l=%li, h=%li, mH=%li", itn->low, itn->high, itn->maxHigh);
- printf(" l->low=");
- if (itn->left == nil)
- printf("NULL");
- else
- printf("%li", itn->left->low);
- printf(" r->low=");
- if (itn->right == nil)
- printf("NULL");
- else
- printf("%li", itn->right->low);
- printf(" p->low=");
- if (itn->parent == root)
- printf("NULL");
- else
- printf("%li", itn->parent->low);
- printf(" red=%i\n", itn->red);
-}
-
-static void
-TreePrintHelper(const IntervalTree *it, IntervalTreeNode *x)
-{
- if (x != it->nil) {
- TreePrintHelper(it, x->left);
- ITN_print(x, it->nil, it->root);
- TreePrintHelper(it, x->right);
- }
-}
-
-void
-IT_destroy(IntervalTree *it)
-{
- IntervalTreeNode *x = it->root->left;
- SLIST_HEAD(node_head, nodeent)
- stuffToFree = SLIST_HEAD_INITIALIZER(stuffToFree);
- struct nodeent {
- SLIST_ENTRY(nodeent) link;
- struct IntervalTreeNode *node;
- } *np;
-
- if (x != it->nil) {
- if (x->left != it->nil) {
- np = yasm_xmalloc(sizeof(struct nodeent));
- np->node = x->left;
- SLIST_INSERT_HEAD(&stuffToFree, np, link);
- }
- if (x->right != it->nil) {
- np = yasm_xmalloc(sizeof(struct nodeent));
- np->node = x->right;
- SLIST_INSERT_HEAD(&stuffToFree, np, link);
- }
- yasm_xfree(x);
- while (!SLIST_EMPTY(&stuffToFree)) {
- np = SLIST_FIRST(&stuffToFree);
- x = np->node;
- SLIST_REMOVE_HEAD(&stuffToFree, link);
- yasm_xfree(np);
-
- if (x->left != it->nil) {
- np = yasm_xmalloc(sizeof(struct nodeent));
- np->node = x->left;
- SLIST_INSERT_HEAD(&stuffToFree, np, link);
- }
- if (x->right != it->nil) {
- np = yasm_xmalloc(sizeof(struct nodeent));
- np->node = x->right;
- SLIST_INSERT_HEAD(&stuffToFree, np, link);
- }
- yasm_xfree(x);
- }
- }
-
- yasm_xfree(it->nil);
- yasm_xfree(it->root);
- yasm_xfree(it->recursionNodeStack);
- yasm_xfree(it);
-}
-
-
-/***********************************************************************/
-/* FUNCTION: Print */
-/**/
-/* INPUTS: none */
-/**/
-/* OUTPUT: none */
-/**/
-/* EFFECT: This function recursively prints the nodes of the tree */
-/* inorder. */
-/**/
-/* Modifies Input: none */
-/**/
-/***********************************************************************/
-
-void
-IT_print(const IntervalTree *it)
-{
- TreePrintHelper(it, it->root->left);
-}
-
-/***********************************************************************/
-/* FUNCTION: DeleteFixUp */
-/**/
-/* INPUTS: x is the child of the spliced */
-/* out node in DeleteNode. */
-/**/
-/* OUTPUT: none */
-/**/
-/* EFFECT: Performs rotations and changes colors to restore red-black */
-/* properties after a node is deleted */
-/**/
-/* Modifies Input: this, x */
-/**/
-/* The algorithm from this function is from _Introduction_To_Algorithms_ */
-/***********************************************************************/
-
-static void
-DeleteFixUp(IntervalTree *it, IntervalTreeNode *x)
-{
- IntervalTreeNode *w;
- IntervalTreeNode *rootLeft = it->root->left;
-
- while ((!x->red) && (rootLeft != x)) {
- if (x == x->parent->left) {
- w=x->parent->right;
- if (w->red) {
- w->red=0;
- x->parent->red=1;
- LeftRotate(it, x->parent);
- w=x->parent->right;
- }
- if ( (!w->right->red) && (!w->left->red) ) {
- w->red=1;
- x=x->parent;
- } else {
- if (!w->right->red) {
- w->left->red=0;
- w->red=1;
- RightRotate(it, w);
- w=x->parent->right;
- }
- w->red=x->parent->red;
- x->parent->red=0;
- w->right->red=0;
- LeftRotate(it, x->parent);
- x=rootLeft; /* this is to exit while loop */
- }
- } else { /* the code below is has left and right switched from above */
- w=x->parent->left;
- if (w->red) {
- w->red=0;
- x->parent->red=1;
- RightRotate(it, x->parent);
- w=x->parent->left;
+ it->root = ITN_create(LONG_MAX, LONG_MAX, NULL);
+ it->root->left = it->nil;
+ it->root->right = it->nil;
+ it->root->parent = it->nil;
+ it->root->red = 0;
+
+ /* the following are used for the Enumerate function */
+ it->recursionNodeStackSize = 128;
+ it->recursionNodeStack = (it_recursion_node *)
+ yasm_xmalloc(it->recursionNodeStackSize*sizeof(it_recursion_node));
+ it->recursionNodeStackTop = 1;
+ it->recursionNodeStack[0].start_node = NULL;
+
+ return it;
+}
+
+/***********************************************************************/
+/* FUNCTION: LeftRotate */
+/**/
+/* INPUTS: the node to rotate on */
+/**/
+/* OUTPUT: None */
+/**/
+/* Modifies Input: this, x */
+/**/
+/* EFFECTS: Rotates as described in _Introduction_To_Algorithms by */
+/* Cormen, Leiserson, Rivest (Chapter 14). Basically this */
+/* makes the parent of x be to the left of x, x the parent of */
+/* its parent before the rotation and fixes other pointers */
+/* accordingly. Also updates the maxHigh fields of x and y */
+/* after rotation. */
+/***********************************************************************/
+
+static void
+LeftRotate(IntervalTree *it, IntervalTreeNode *x)
+{
+ IntervalTreeNode *y;
+
+ /* I originally wrote this function to use the sentinel for
+ * nil to avoid checking for nil. However this introduces a
+ * very subtle bug because sometimes this function modifies
+ * the parent pointer of nil. This can be a problem if a
+ * function which calls LeftRotate also uses the nil sentinel
+ * and expects the nil sentinel's parent pointer to be unchanged
+ * after calling this function. For example, when DeleteFixUP
+ * calls LeftRotate it expects the parent pointer of nil to be
+ * unchanged.
+ */
+
+ y=x->right;
+ x->right=y->left;
+
+ if (y->left != it->nil)
+ y->left->parent=x; /* used to use sentinel here */
+ /* and do an unconditional assignment instead of testing for nil */
+
+ y->parent=x->parent;
+
+ /* Instead of checking if x->parent is the root as in the book, we
+ * count on the root sentinel to implicitly take care of this case
+ */
+ if (x == x->parent->left)
+ x->parent->left=y;
+ else
+ x->parent->right=y;
+ y->left=x;
+ x->parent=y;
+
+ x->maxHigh=ITMax(x->left->maxHigh,ITMax(x->right->maxHigh,x->high));
+ y->maxHigh=ITMax(x->maxHigh,ITMax(y->right->maxHigh,y->high));
+#ifdef CHECK_INTERVAL_TREE_ASSUMPTIONS
+ IT_CheckAssumptions(it);
+#elif defined(DEBUG_ASSERT)
+ Assert(!it->nil->red,"nil not red in ITLeftRotate");
+ Assert((it->nil->maxHigh=LONG_MIN),
+ "nil->maxHigh != LONG_MIN in ITLeftRotate");
+#endif
+}
+
+
+/***********************************************************************/
+/* FUNCTION: RightRotate */
+/**/
+/* INPUTS: node to rotate on */
+/**/
+/* OUTPUT: None */
+/**/
+/* Modifies Input?: this, y */
+/**/
+/* EFFECTS: Rotates as described in _Introduction_To_Algorithms by */
+/* Cormen, Leiserson, Rivest (Chapter 14). Basically this */
+/* makes the parent of x be to the left of x, x the parent of */
+/* its parent before the rotation and fixes other pointers */
+/* accordingly. Also updates the maxHigh fields of x and y */
+/* after rotation. */
+/***********************************************************************/
+
+
+static void
+RightRotate(IntervalTree *it, IntervalTreeNode *y)
+{
+ IntervalTreeNode *x;
+
+ /* I originally wrote this function to use the sentinel for
+ * nil to avoid checking for nil. However this introduces a
+ * very subtle bug because sometimes this function modifies
+ * the parent pointer of nil. This can be a problem if a
+ * function which calls LeftRotate also uses the nil sentinel
+ * and expects the nil sentinel's parent pointer to be unchanged
+ * after calling this function. For example, when DeleteFixUP
+ * calls LeftRotate it expects the parent pointer of nil to be
+ * unchanged.
+ */
+
+ x=y->left;
+ y->left=x->right;
+
+ if (it->nil != x->right)
+ x->right->parent=y; /*used to use sentinel here */
+ /* and do an unconditional assignment instead of testing for nil */
+
+ /* Instead of checking if x->parent is the root as in the book, we
+ * count on the root sentinel to implicitly take care of this case
+ */
+ x->parent=y->parent;
+ if (y == y->parent->left)
+ y->parent->left=x;
+ else
+ y->parent->right=x;
+ x->right=y;
+ y->parent=x;
+
+ y->maxHigh=ITMax(y->left->maxHigh,ITMax(y->right->maxHigh,y->high));
+ x->maxHigh=ITMax(x->left->maxHigh,ITMax(y->maxHigh,x->high));
+#ifdef CHECK_INTERVAL_TREE_ASSUMPTIONS
+ IT_CheckAssumptions(it);
+#elif defined(DEBUG_ASSERT)
+ Assert(!it->nil->red,"nil not red in ITRightRotate");
+ Assert((it->nil->maxHigh=LONG_MIN),
+ "nil->maxHigh != LONG_MIN in ITRightRotate");
+#endif
+}
+
+/***********************************************************************/
+/* FUNCTION: TreeInsertHelp */
+/**/
+/* INPUTS: z is the node to insert */
+/**/
+/* OUTPUT: none */
+/**/
+/* Modifies Input: this, z */
+/**/
+/* EFFECTS: Inserts z into the tree as if it were a regular binary tree */
+/* using the algorithm described in _Introduction_To_Algorithms_ */
+/* by Cormen et al. This funciton is only intended to be called */
+/* by the InsertTree function and not by the user */
+/***********************************************************************/
+
+static void
+TreeInsertHelp(IntervalTree *it, IntervalTreeNode *z)
+{
+ /* This function should only be called by InsertITTree (see above) */
+ IntervalTreeNode* x;
+ IntervalTreeNode* y;
+
+ z->left=z->right=it->nil;
+ y=it->root;
+ x=it->root->left;
+ while( x != it->nil) {
+ y=x;
+ if (x->low > z->low)
+ x=x->left;
+ else /* x->low <= z->low */
+ x=x->right;
+ }
+ z->parent=y;
+ if ((y == it->root) || (y->low > z->low))
+ y->left=z;
+ else
+ y->right=z;
+
+#if defined(DEBUG_ASSERT)
+ Assert(!it->nil->red,"nil not red in ITTreeInsertHelp");
+ Assert((it->nil->maxHigh=INT_MIN),
+ "nil->maxHigh != INT_MIN in ITTreeInsertHelp");
+#endif
+}
+
+
+/***********************************************************************/
+/* FUNCTION: FixUpMaxHigh */
+/**/
+/* INPUTS: x is the node to start from*/
+/**/
+/* OUTPUT: none */
+/**/
+/* Modifies Input: this */
+/**/
+/* EFFECTS: Travels up to the root fixing the maxHigh fields after */
+/* an insertion or deletion */
+/***********************************************************************/
+
+static void
+FixUpMaxHigh(IntervalTree *it, IntervalTreeNode *x)
+{
+ while(x != it->root) {
+ x->maxHigh=ITMax(x->high,ITMax(x->left->maxHigh,x->right->maxHigh));
+ x=x->parent;
+ }
+#ifdef CHECK_INTERVAL_TREE_ASSUMPTIONS
+ IT_CheckAssumptions(it);
+#endif
+}
+
+/* Before calling InsertNode the node x should have its key set */
+
+/***********************************************************************/
+/* FUNCTION: InsertNode */
+/**/
+/* INPUTS: newInterval is the interval to insert*/
+/**/
+/* OUTPUT: This function returns a pointer to the newly inserted node */
+/* which is guarunteed to be valid until this node is deleted. */
+/* What this means is if another data structure stores this */
+/* pointer then the tree does not need to be searched when this */
+/* is to be deleted. */
+/**/
+/* Modifies Input: tree */
+/**/
+/* EFFECTS: Creates a node node which contains the appropriate key and */
+/* info pointers and inserts it into the tree. */
+/***********************************************************************/
+
+IntervalTreeNode *
+IT_insert(IntervalTree *it, long low, long high, void *data)
+{
+ IntervalTreeNode *x, *y, *newNode;
+
+ x = ITN_create(low, high, data);
+ TreeInsertHelp(it, x);
+ FixUpMaxHigh(it, x->parent);
+ newNode = x;
+ x->red=1;
+ while(x->parent->red) { /* use sentinel instead of checking for root */
+ if (x->parent == x->parent->parent->left) {
+ y=x->parent->parent->right;
+ if (y->red) {
+ x->parent->red=0;
+ y->red=0;
+ x->parent->parent->red=1;
+ x=x->parent->parent;
+ } else {
+ if (x == x->parent->right) {
+ x=x->parent;
+ LeftRotate(it, x);
+ }
+ x->parent->red=0;
+ x->parent->parent->red=1;
+ RightRotate(it, x->parent->parent);
}
- if ((!w->right->red) && (!w->left->red)) {
- w->red=1;
- x=x->parent;
- } else {
- if (!w->left->red) {
- w->right->red=0;
- w->red=1;
- LeftRotate(it, w);
- w=x->parent->left;
- }
- w->red=x->parent->red;
- x->parent->red=0;
- w->left->red=0;
- RightRotate(it, x->parent);
- x=rootLeft; /* this is to exit while loop */
+ } else { /* case for x->parent == x->parent->parent->right */
+ /* this part is just like the section above with */
+ /* left and right interchanged */
+ y=x->parent->parent->left;
+ if (y->red) {
+ x->parent->red=0;
+ y->red=0;
+ x->parent->parent->red=1;
+ x=x->parent->parent;
+ } else {
+ if (x == x->parent->left) {
+ x=x->parent;
+ RightRotate(it, x);
+ }
+ x->parent->red=0;
+ x->parent->parent->red=1;
+ LeftRotate(it, x->parent->parent);
}
- }
- }
- x->red=0;
-
-#ifdef CHECK_INTERVAL_TREE_ASSUMPTIONS
- IT_CheckAssumptions(it);
-#elif defined(DEBUG_ASSERT)
- Assert(!it->nil->red,"nil not black in ITDeleteFixUp");
- Assert((it->nil->maxHigh=LONG_MIN),
- "nil->maxHigh != LONG_MIN in ITDeleteFixUp");
-#endif
-}
-
-
-/***********************************************************************/
-/* FUNCTION: DeleteNode */
-/**/
-/* INPUTS: tree is the tree to delete node z from */
-/**/
-/* OUTPUT: returns the Interval stored at deleted node */
-/**/
-/* EFFECT: Deletes z from tree and but don't call destructor */
-/* Then calls FixUpMaxHigh to fix maxHigh fields then calls */
-/* ITDeleteFixUp to restore red-black properties */
-/**/
-/* Modifies Input: z */
-/**/
-/* The algorithm from this function is from _Introduction_To_Algorithms_ */
-/***********************************************************************/
-
-void *
-IT_delete_node(IntervalTree *it, IntervalTreeNode *z, long *low, long *high)
+ }
+ }
+ it->root->left->red=0;
+
+#ifdef CHECK_INTERVAL_TREE_ASSUMPTIONS
+ IT_CheckAssumptions(it);
+#elif defined(DEBUG_ASSERT)
+ Assert(!it->nil->red,"nil not red in ITTreeInsert");
+ Assert(!it->root->red,"root not red in ITTreeInsert");
+ Assert((it->nil->maxHigh=LONG_MIN),
+ "nil->maxHigh != LONG_MIN in ITTreeInsert");
+#endif
+ return newNode;
+}
+
+/***********************************************************************/
+/* FUNCTION: GetSuccessorOf */
+/**/
+/* INPUTS: x is the node we want the succesor of */
+/**/
+/* OUTPUT: This function returns the successor of x or NULL if no */
+/* successor exists. */
+/**/
+/* Modifies Input: none */
+/**/
+/* Note: uses the algorithm in _Introduction_To_Algorithms_ */
+/***********************************************************************/
+
+IntervalTreeNode *
+IT_get_successor(const IntervalTree *it, IntervalTreeNode *x)
{
- IntervalTreeNode *x, *y;
- void *returnValue = z->data;
- if (low)
- *low = z->low;
- if (high)
- *high = z->high;
-
- y= ((z->left == it->nil) || (z->right == it->nil)) ?
- z : IT_get_successor(it, z);
- x= (y->left == it->nil) ? y->right : y->left;
- if (it->root == (x->parent = y->parent))
- /* assignment of y->p to x->p is intentional */
- it->root->left=x;
- else {
- if (y == y->parent->left)
- y->parent->left=x;
- else
- y->parent->right=x;
- }
- if (y != z) { /* y should not be nil in this case */
-
-#ifdef DEBUG_ASSERT
- Assert( (y!=it->nil),"y is nil in DeleteNode \n");
-#endif
- /* y is the node to splice out and x is its child */
-
- y->maxHigh = INT_MIN;
- y->left=z->left;
- y->right=z->right;
- y->parent=z->parent;
- z->left->parent=z->right->parent=y;
- if (z == z->parent->left)
- z->parent->left=y;
- else
- z->parent->right=y;
- FixUpMaxHigh(it, x->parent);
- if (!(y->red)) {
- y->red = z->red;
- DeleteFixUp(it, x);
- } else
- y->red = z->red;
- yasm_xfree(z);
-#ifdef CHECK_INTERVAL_TREE_ASSUMPTIONS
- IT_CheckAssumptions(it);
-#elif defined(DEBUG_ASSERT)
- Assert(!it->nil->red,"nil not black in ITDelete");
- Assert((it->nil->maxHigh=LONG_MIN),"nil->maxHigh != LONG_MIN in ITDelete");
-#endif
- } else {
+ IntervalTreeNode *y;
+
+ if (it->nil != (y = x->right)) { /* assignment to y is intentional */
+ while(y->left != it->nil) /* returns the minium of the right subtree of x */
+ y=y->left;
+ return y;
+ } else {
+ y=x->parent;
+ while(x == y->right) { /* sentinel used instead of checking for nil */
+ x=y;
+ y=y->parent;
+ }
+ if (y == it->root)
+ return(it->nil);
+ return y;
+ }
+}
+
+/***********************************************************************/
+/* FUNCTION: GetPredecessorOf */
+/**/
+/* INPUTS: x is the node to get predecessor of */
+/**/
+/* OUTPUT: This function returns the predecessor of x or NULL if no */
+/* predecessor exists. */
+/**/
+/* Modifies Input: none */
+/**/
+/* Note: uses the algorithm in _Introduction_To_Algorithms_ */
+/***********************************************************************/
+
+IntervalTreeNode *
+IT_get_predecessor(const IntervalTree *it, IntervalTreeNode *x)
+{
+ IntervalTreeNode *y;
+
+ if (it->nil != (y = x->left)) { /* assignment to y is intentional */
+ while(y->right != it->nil) /* returns the maximum of the left subtree of x */
+ y=y->right;
+ return y;
+ } else {
+ y=x->parent;
+ while(x == y->left) {
+ if (y == it->root)
+ return(it->nil);
+ x=y;
+ y=y->parent;
+ }
+ return y;
+ }
+}
+
+/***********************************************************************/
+/* FUNCTION: Print */
+/**/
+/* INPUTS: none */
+/**/
+/* OUTPUT: none */
+/**/
+/* EFFECTS: This function recursively prints the nodes of the tree */
+/* inorder. */
+/**/
+/* Modifies Input: none */
+/**/
+/* Note: This function should only be called from ITTreePrint */
+/***********************************************************************/
+
+static void
+ITN_print(const IntervalTreeNode *itn, IntervalTreeNode *nil,
+ IntervalTreeNode *root)
+{
+ printf(", l=%li, h=%li, mH=%li", itn->low, itn->high, itn->maxHigh);
+ printf(" l->low=");
+ if (itn->left == nil)
+ printf("NULL");
+ else
+ printf("%li", itn->left->low);
+ printf(" r->low=");
+ if (itn->right == nil)
+ printf("NULL");
+ else
+ printf("%li", itn->right->low);
+ printf(" p->low=");
+ if (itn->parent == root)
+ printf("NULL");
+ else
+ printf("%li", itn->parent->low);
+ printf(" red=%i\n", itn->red);
+}
+
+static void
+TreePrintHelper(const IntervalTree *it, IntervalTreeNode *x)
+{
+ if (x != it->nil) {
+ TreePrintHelper(it, x->left);
+ ITN_print(x, it->nil, it->root);
+ TreePrintHelper(it, x->right);
+ }
+}
+
+void
+IT_destroy(IntervalTree *it)
+{
+ IntervalTreeNode *x = it->root->left;
+ SLIST_HEAD(node_head, nodeent)
+ stuffToFree = SLIST_HEAD_INITIALIZER(stuffToFree);
+ struct nodeent {
+ SLIST_ENTRY(nodeent) link;
+ struct IntervalTreeNode *node;
+ } *np;
+
+ if (x != it->nil) {
+ if (x->left != it->nil) {
+ np = yasm_xmalloc(sizeof(struct nodeent));
+ np->node = x->left;
+ SLIST_INSERT_HEAD(&stuffToFree, np, link);
+ }
+ if (x->right != it->nil) {
+ np = yasm_xmalloc(sizeof(struct nodeent));
+ np->node = x->right;
+ SLIST_INSERT_HEAD(&stuffToFree, np, link);
+ }
+ yasm_xfree(x);
+ while (!SLIST_EMPTY(&stuffToFree)) {
+ np = SLIST_FIRST(&stuffToFree);
+ x = np->node;
+ SLIST_REMOVE_HEAD(&stuffToFree, link);
+ yasm_xfree(np);
+
+ if (x->left != it->nil) {
+ np = yasm_xmalloc(sizeof(struct nodeent));
+ np->node = x->left;
+ SLIST_INSERT_HEAD(&stuffToFree, np, link);
+ }
+ if (x->right != it->nil) {
+ np = yasm_xmalloc(sizeof(struct nodeent));
+ np->node = x->right;
+ SLIST_INSERT_HEAD(&stuffToFree, np, link);
+ }
+ yasm_xfree(x);
+ }
+ }
+
+ yasm_xfree(it->nil);
+ yasm_xfree(it->root);
+ yasm_xfree(it->recursionNodeStack);
+ yasm_xfree(it);
+}
+
+
+/***********************************************************************/
+/* FUNCTION: Print */
+/**/
+/* INPUTS: none */
+/**/
+/* OUTPUT: none */
+/**/
+/* EFFECT: This function recursively prints the nodes of the tree */
+/* inorder. */
+/**/
+/* Modifies Input: none */
+/**/
+/***********************************************************************/
+
+void
+IT_print(const IntervalTree *it)
+{
+ TreePrintHelper(it, it->root->left);
+}
+
+/***********************************************************************/
+/* FUNCTION: DeleteFixUp */
+/**/
+/* INPUTS: x is the child of the spliced */
+/* out node in DeleteNode. */
+/**/
+/* OUTPUT: none */
+/**/
+/* EFFECT: Performs rotations and changes colors to restore red-black */
+/* properties after a node is deleted */
+/**/
+/* Modifies Input: this, x */
+/**/
+/* The algorithm from this function is from _Introduction_To_Algorithms_ */
+/***********************************************************************/
+
+static void
+DeleteFixUp(IntervalTree *it, IntervalTreeNode *x)
+{
+ IntervalTreeNode *w;
+ IntervalTreeNode *rootLeft = it->root->left;
+
+ while ((!x->red) && (rootLeft != x)) {
+ if (x == x->parent->left) {
+ w=x->parent->right;
+ if (w->red) {
+ w->red=0;
+ x->parent->red=1;
+ LeftRotate(it, x->parent);
+ w=x->parent->right;
+ }
+ if ( (!w->right->red) && (!w->left->red) ) {
+ w->red=1;
+ x=x->parent;
+ } else {
+ if (!w->right->red) {
+ w->left->red=0;
+ w->red=1;
+ RightRotate(it, w);
+ w=x->parent->right;
+ }
+ w->red=x->parent->red;
+ x->parent->red=0;
+ w->right->red=0;
+ LeftRotate(it, x->parent);
+ x=rootLeft; /* this is to exit while loop */
+ }
+ } else { /* the code below is has left and right switched from above */
+ w=x->parent->left;
+ if (w->red) {
+ w->red=0;
+ x->parent->red=1;
+ RightRotate(it, x->parent);
+ w=x->parent->left;
+ }
+ if ((!w->right->red) && (!w->left->red)) {
+ w->red=1;
+ x=x->parent;
+ } else {
+ if (!w->left->red) {
+ w->right->red=0;
+ w->red=1;
+ LeftRotate(it, w);
+ w=x->parent->left;
+ }
+ w->red=x->parent->red;
+ x->parent->red=0;
+ w->left->red=0;
+ RightRotate(it, x->parent);
+ x=rootLeft; /* this is to exit while loop */
+ }
+ }
+ }
+ x->red=0;
+
+#ifdef CHECK_INTERVAL_TREE_ASSUMPTIONS
+ IT_CheckAssumptions(it);
+#elif defined(DEBUG_ASSERT)
+ Assert(!it->nil->red,"nil not black in ITDeleteFixUp");
+ Assert((it->nil->maxHigh=LONG_MIN),
+ "nil->maxHigh != LONG_MIN in ITDeleteFixUp");
+#endif
+}
+
+
+/***********************************************************************/
+/* FUNCTION: DeleteNode */
+/**/
+/* INPUTS: tree is the tree to delete node z from */
+/**/
+/* OUTPUT: returns the Interval stored at deleted node */
+/**/
+/* EFFECT: Deletes z from tree and but don't call destructor */
+/* Then calls FixUpMaxHigh to fix maxHigh fields then calls */
+/* ITDeleteFixUp to restore red-black properties */
+/**/
+/* Modifies Input: z */
+/**/
+/* The algorithm from this function is from _Introduction_To_Algorithms_ */
+/***********************************************************************/
+
+void *
+IT_delete_node(IntervalTree *it, IntervalTreeNode *z, long *low, long *high)
+{
+ IntervalTreeNode *x, *y;
+ void *returnValue = z->data;
+ if (low)
+ *low = z->low;
+ if (high)
+ *high = z->high;
+
+ y= ((z->left == it->nil) || (z->right == it->nil)) ?
+ z : IT_get_successor(it, z);
+ x= (y->left == it->nil) ? y->right : y->left;
+ if (it->root == (x->parent = y->parent))
+ /* assignment of y->p to x->p is intentional */
+ it->root->left=x;
+ else {
+ if (y == y->parent->left)
+ y->parent->left=x;
+ else
+ y->parent->right=x;
+ }
+ if (y != z) { /* y should not be nil in this case */
+
+#ifdef DEBUG_ASSERT
+ Assert( (y!=it->nil),"y is nil in DeleteNode \n");
+#endif
+ /* y is the node to splice out and x is its child */
+
+ y->maxHigh = INT_MIN;
+ y->left=z->left;
+ y->right=z->right;
+ y->parent=z->parent;
+ z->left->parent=z->right->parent=y;
+ if (z == z->parent->left)
+ z->parent->left=y;
+ else
+ z->parent->right=y;
FixUpMaxHigh(it, x->parent);
- if (!(y->red))
- DeleteFixUp(it, x);
- yasm_xfree(y);
-#ifdef CHECK_INTERVAL_TREE_ASSUMPTIONS
- IT_CheckAssumptions(it);
-#elif defined(DEBUG_ASSERT)
- Assert(!it->nil->red,"nil not black in ITDelete");
- Assert((it->nil->maxHigh=LONG_MIN),"nil->maxHigh != LONG_MIN in ITDelete");
-#endif
- }
- return returnValue;
-}
-
-
-/***********************************************************************/
-/* FUNCTION: Overlap */
-/**/
-/* INPUTS: [a1,a2] and [b1,b2] are the low and high endpoints of two */
-/* closed intervals. */
-/**/
-/* OUTPUT: stack containing pointers to the nodes between [low,high] */
-/**/
-/* Modifies Input: none */
-/**/
-/* EFFECT: returns 1 if the intervals overlap, and 0 otherwise */
-/***********************************************************************/
-
-static int
-Overlap(int a1, int a2, int b1, int b2)
-{
- if (a1 <= b1)
- return (b1 <= a2);
- else
- return (a1 <= b2);
-}
-
-
-/***********************************************************************/
-/* FUNCTION: Enumerate */
-/**/
-/* INPUTS: tree is the tree to look for intervals overlapping the */
-/* closed interval [low,high] */
-/**/
-/* OUTPUT: stack containing pointers to the nodes overlapping */
-/* [low,high] */
-/**/
-/* Modifies Input: none */
-/**/
-/* EFFECT: Returns a stack containing pointers to nodes containing */
-/* intervals which overlap [low,high] in O(max(N,k*log(N))) */
-/* where N is the number of intervals in the tree and k is */
-/* the number of overlapping intervals */
-/**/
-/* Note: This basic idea for this function comes from the */
-/* _Introduction_To_Algorithms_ book by Cormen et al, but */
-/* modifications were made to return all overlapping intervals */
-/* instead of just the first overlapping interval as in the */
-/* book. The natural way to do this would require recursive */
-/* calls of a basic search function. I translated the */
-/* recursive version into an interative version with a stack */
-/* as described below. */
-/***********************************************************************/
-
-
-
-/* The basic idea for the function below is to take the IntervalSearch
- * function from the book and modify to find all overlapping intervals
- * instead of just one. This means that any time we take the left
- * branch down the tree we must also check the right branch if and only if
- * we find an overlapping interval in that left branch. Note this is a
- * recursive condition because if we go left at the root then go left
- * again at the first left child and find an overlap in the left subtree
- * of the left child of root we must recursively check the right subtree
- * of the left child of root as well as the right child of root.
- */
-void
-IT_enumerate(IntervalTree *it, long low, long high, void *cbd,
- void (*callback) (IntervalTreeNode *node, void *cbd))
-{
- IntervalTreeNode *x=it->root->left;
- int stuffToDo = (x != it->nil);
-
- /* Possible speed up: add min field to prune right searches */
-
-#ifdef DEBUG_ASSERT
- Assert((it->recursionNodeStackTop == 1),
- "recursionStack not empty when entering IntervalTree::Enumerate");
-#endif
- it->currentParent = 0;
-
- while (stuffToDo) {
- if (Overlap(low,high,x->low,x->high) ) {
- callback(x, cbd);
- it->recursionNodeStack[it->currentParent].tryRightBranch=1;
- }
- if(x->left->maxHigh >= low) { /* implies x != nil */
- if (it->recursionNodeStackTop == it->recursionNodeStackSize) {
- it->recursionNodeStackSize *= 2;
- it->recursionNodeStack = (it_recursion_node *)
- yasm_xrealloc(it->recursionNodeStack,
- it->recursionNodeStackSize * sizeof(it_recursion_node));
- }
- it->recursionNodeStack[it->recursionNodeStackTop].start_node = x;
- it->recursionNodeStack[it->recursionNodeStackTop].tryRightBranch = 0;
- it->recursionNodeStack[it->recursionNodeStackTop].parentIndex = it->currentParent;
- it->currentParent = it->recursionNodeStackTop++;
- x = x->left;
- } else {
- x = x->right;
- }
- stuffToDo = (x != it->nil);
- while (!stuffToDo && (it->recursionNodeStackTop > 1)) {
- if (it->recursionNodeStack[--it->recursionNodeStackTop].tryRightBranch) {
- x=it->recursionNodeStack[it->recursionNodeStackTop].start_node->right;
- it->currentParent=it->recursionNodeStack[it->recursionNodeStackTop].parentIndex;
- it->recursionNodeStack[it->currentParent].tryRightBranch=1;
- stuffToDo = (x != it->nil);
- }
- }
- }
-#ifdef DEBUG_ASSERT
- Assert((it->recursionNodeStackTop == 1),
- "recursionStack not empty when exiting IntervalTree::Enumerate");
-#endif
-}
-
-#ifdef CHECK_INTERVAL_TREE_ASSUMPTIONS
-
-static int
-CheckMaxHighFieldsHelper(const IntervalTree *it, IntervalTreeNode *y,
- int currentHigh, int match)
-{
- if (y != it->nil) {
- match = CheckMaxHighFieldsHelper(it, y->left, currentHigh, match) ?
- 1 : match;
- VERIFY(y->high <= currentHigh);
- if (y->high == currentHigh)
- match = 1;
- match = CheckMaxHighFieldsHelper(it, y->right, currentHigh, match) ?
- 1 : match;
- }
- return match;
-}
-
-
-
-/* Make sure the maxHigh fields for everything makes sense. *
- * If something is wrong, print a warning and exit */
-static void
-CheckMaxHighFields(const IntervalTree *it, IntervalTreeNode *x)
-{
- if (x != it->nil) {
- CheckMaxHighFields(it, x->left);
- if(!(CheckMaxHighFieldsHelper(it, x, x->maxHigh, 0) > 0)) {
- fprintf(stderr, "error found in CheckMaxHighFields.\n");
- abort();
- }
- CheckMaxHighFields(it, x->right);
- }
-}
-
-static void
-IT_CheckAssumptions(const IntervalTree *it)
-{
- VERIFY(it->nil->low == INT_MIN);
- VERIFY(it->nil->high == INT_MIN);
- VERIFY(it->nil->maxHigh == INT_MIN);
- VERIFY(it->root->low == INT_MAX);
- VERIFY(it->root->high == INT_MAX);
- VERIFY(it->root->maxHigh == INT_MAX);
- VERIFY(it->nil->data == NULL);
- VERIFY(it->root->data == NULL);
- VERIFY(it->nil->red == 0);
- VERIFY(it->root->red == 0);
- CheckMaxHighFields(it, it->root->left);
-}
-#endif
-
+ if (!(y->red)) {
+ y->red = z->red;
+ DeleteFixUp(it, x);
+ } else
+ y->red = z->red;
+ yasm_xfree(z);
+#ifdef CHECK_INTERVAL_TREE_ASSUMPTIONS
+ IT_CheckAssumptions(it);
+#elif defined(DEBUG_ASSERT)
+ Assert(!it->nil->red,"nil not black in ITDelete");
+ Assert((it->nil->maxHigh=LONG_MIN),"nil->maxHigh != LONG_MIN in ITDelete");
+#endif
+ } else {
+ FixUpMaxHigh(it, x->parent);
+ if (!(y->red))
+ DeleteFixUp(it, x);
+ yasm_xfree(y);
+#ifdef CHECK_INTERVAL_TREE_ASSUMPTIONS
+ IT_CheckAssumptions(it);
+#elif defined(DEBUG_ASSERT)
+ Assert(!it->nil->red,"nil not black in ITDelete");
+ Assert((it->nil->maxHigh=LONG_MIN),"nil->maxHigh != LONG_MIN in ITDelete");
+#endif
+ }
+ return returnValue;
+}
+
+
+/***********************************************************************/
+/* FUNCTION: Overlap */
+/**/
+/* INPUTS: [a1,a2] and [b1,b2] are the low and high endpoints of two */
+/* closed intervals. */
+/**/
+/* OUTPUT: stack containing pointers to the nodes between [low,high] */
+/**/
+/* Modifies Input: none */
+/**/
+/* EFFECT: returns 1 if the intervals overlap, and 0 otherwise */
+/***********************************************************************/
+
+static int
+Overlap(int a1, int a2, int b1, int b2)
+{
+ if (a1 <= b1)
+ return (b1 <= a2);
+ else
+ return (a1 <= b2);
+}
+
+
+/***********************************************************************/
+/* FUNCTION: Enumerate */
+/**/
+/* INPUTS: tree is the tree to look for intervals overlapping the */
+/* closed interval [low,high] */
+/**/
+/* OUTPUT: stack containing pointers to the nodes overlapping */
+/* [low,high] */
+/**/
+/* Modifies Input: none */
+/**/
+/* EFFECT: Returns a stack containing pointers to nodes containing */
+/* intervals which overlap [low,high] in O(max(N,k*log(N))) */
+/* where N is the number of intervals in the tree and k is */
+/* the number of overlapping intervals */
+/**/
+/* Note: This basic idea for this function comes from the */
+/* _Introduction_To_Algorithms_ book by Cormen et al, but */
+/* modifications were made to return all overlapping intervals */
+/* instead of just the first overlapping interval as in the */
+/* book. The natural way to do this would require recursive */
+/* calls of a basic search function. I translated the */
+/* recursive version into an interative version with a stack */
+/* as described below. */
+/***********************************************************************/
+
+
+
+/* The basic idea for the function below is to take the IntervalSearch
+ * function from the book and modify to find all overlapping intervals
+ * instead of just one. This means that any time we take the left
+ * branch down the tree we must also check the right branch if and only if
+ * we find an overlapping interval in that left branch. Note this is a
+ * recursive condition because if we go left at the root then go left
+ * again at the first left child and find an overlap in the left subtree
+ * of the left child of root we must recursively check the right subtree
+ * of the left child of root as well as the right child of root.
+ */
+void
+IT_enumerate(IntervalTree *it, long low, long high, void *cbd,
+ void (*callback) (IntervalTreeNode *node, void *cbd))
+{
+ IntervalTreeNode *x=it->root->left;
+ int stuffToDo = (x != it->nil);
+
+ /* Possible speed up: add min field to prune right searches */
+
+#ifdef DEBUG_ASSERT
+ Assert((it->recursionNodeStackTop == 1),
+ "recursionStack not empty when entering IntervalTree::Enumerate");
+#endif
+ it->currentParent = 0;
+
+ while (stuffToDo) {
+ if (Overlap(low,high,x->low,x->high) ) {
+ callback(x, cbd);
+ it->recursionNodeStack[it->currentParent].tryRightBranch=1;
+ }
+ if(x->left->maxHigh >= low) { /* implies x != nil */
+ if (it->recursionNodeStackTop == it->recursionNodeStackSize) {
+ it->recursionNodeStackSize *= 2;
+ it->recursionNodeStack = (it_recursion_node *)
+ yasm_xrealloc(it->recursionNodeStack,
+ it->recursionNodeStackSize * sizeof(it_recursion_node));
+ }
+ it->recursionNodeStack[it->recursionNodeStackTop].start_node = x;
+ it->recursionNodeStack[it->recursionNodeStackTop].tryRightBranch = 0;
+ it->recursionNodeStack[it->recursionNodeStackTop].parentIndex = it->currentParent;
+ it->currentParent = it->recursionNodeStackTop++;
+ x = x->left;
+ } else {
+ x = x->right;
+ }
+ stuffToDo = (x != it->nil);
+ while (!stuffToDo && (it->recursionNodeStackTop > 1)) {
+ if (it->recursionNodeStack[--it->recursionNodeStackTop].tryRightBranch) {
+ x=it->recursionNodeStack[it->recursionNodeStackTop].start_node->right;
+ it->currentParent=it->recursionNodeStack[it->recursionNodeStackTop].parentIndex;
+ it->recursionNodeStack[it->currentParent].tryRightBranch=1;
+ stuffToDo = (x != it->nil);
+ }
+ }
+ }
+#ifdef DEBUG_ASSERT
+ Assert((it->recursionNodeStackTop == 1),
+ "recursionStack not empty when exiting IntervalTree::Enumerate");
+#endif
+}
+
+#ifdef CHECK_INTERVAL_TREE_ASSUMPTIONS
+
+static int
+CheckMaxHighFieldsHelper(const IntervalTree *it, IntervalTreeNode *y,
+ int currentHigh, int match)
+{
+ if (y != it->nil) {
+ match = CheckMaxHighFieldsHelper(it, y->left, currentHigh, match) ?
+ 1 : match;
+ VERIFY(y->high <= currentHigh);
+ if (y->high == currentHigh)
+ match = 1;
+ match = CheckMaxHighFieldsHelper(it, y->right, currentHigh, match) ?
+ 1 : match;
+ }
+ return match;
+}
+
+
+
+/* Make sure the maxHigh fields for everything makes sense. *
+ * If something is wrong, print a warning and exit */
+static void
+CheckMaxHighFields(const IntervalTree *it, IntervalTreeNode *x)
+{
+ if (x != it->nil) {
+ CheckMaxHighFields(it, x->left);
+ if(!(CheckMaxHighFieldsHelper(it, x, x->maxHigh, 0) > 0)) {
+ fprintf(stderr, "error found in CheckMaxHighFields.\n");
+ abort();
+ }
+ CheckMaxHighFields(it, x->right);
+ }
+}
+
+static void
+IT_CheckAssumptions(const IntervalTree *it)
+{
+ VERIFY(it->nil->low == INT_MIN);
+ VERIFY(it->nil->high == INT_MIN);
+ VERIFY(it->nil->maxHigh == INT_MIN);
+ VERIFY(it->root->low == INT_MAX);
+ VERIFY(it->root->high == INT_MAX);
+ VERIFY(it->root->maxHigh == INT_MAX);
+ VERIFY(it->nil->data == NULL);
+ VERIFY(it->root->data == NULL);
+ VERIFY(it->nil->red == 0);
+ VERIFY(it->root->red == 0);
+ CheckMaxHighFields(it, it->root->left);
+}
+#endif
+
diff --git a/contrib/tools/yasm/libyasm/inttree.h b/contrib/tools/yasm/libyasm/inttree.h
index 44d45527ec..f7a7651512 100644
--- a/contrib/tools/yasm/libyasm/inttree.h
+++ b/contrib/tools/yasm/libyasm/inttree.h
@@ -1,70 +1,70 @@
-#ifndef YASM_INTTREE_H
-#define YASM_INTTREE_H
-
-#ifndef YASM_LIB_DECL
-#define YASM_LIB_DECL
-#endif
-
-/* The interval_tree.h and interval_tree.cc files contain code for
- * interval trees implemented using red-black-trees as described in
- * the book _Introduction_To_Algorithms_ by Cormen, Leisserson,
- * and Rivest.
- */
-
-typedef struct IntervalTreeNode {
- struct IntervalTreeNode *left, *right, *parent;
- void *data;
- long low;
- long high;
- long maxHigh;
- int red; /* if red=0 then the node is black */
-} IntervalTreeNode;
-
-typedef struct it_recursion_node {
- /* This structure stores the information needed when we take the
- * right branch in searching for intervals but possibly come back
- * and check the left branch as well.
- */
- IntervalTreeNode *start_node;
- unsigned int parentIndex;
- int tryRightBranch;
-} it_recursion_node;
-
-typedef struct IntervalTree {
- /* A sentinel is used for root and for nil. These sentinels are
- * created when ITTreeCreate is called. root->left should always
- * point to the node which is the root of the tree. nil points to a
- * node which should always be black but has aribtrary children and
- * parent and no key or info. The point of using these sentinels is so
- * that the root and nil nodes do not require special cases in the code
- */
- IntervalTreeNode *root;
- IntervalTreeNode *nil;
-
-/*private:*/
- unsigned int recursionNodeStackSize;
- it_recursion_node * recursionNodeStack;
- unsigned int currentParent;
- unsigned int recursionNodeStackTop;
-} IntervalTree;
-
-YASM_LIB_DECL
-IntervalTree *IT_create(void);
-YASM_LIB_DECL
-void IT_destroy(IntervalTree *);
-YASM_LIB_DECL
-void IT_print(const IntervalTree *);
-YASM_LIB_DECL
-void *IT_delete_node(IntervalTree *, IntervalTreeNode *, long *low,
- long *high);
-YASM_LIB_DECL
-IntervalTreeNode *IT_insert(IntervalTree *, long low, long high, void *data);
-YASM_LIB_DECL
-IntervalTreeNode *IT_get_predecessor(const IntervalTree *, IntervalTreeNode *);
-YASM_LIB_DECL
-IntervalTreeNode *IT_get_successor(const IntervalTree *, IntervalTreeNode *);
-YASM_LIB_DECL
-void IT_enumerate(IntervalTree *, long low, long high, void *cbd,
- void (*callback) (IntervalTreeNode *node, void *cbd));
-
-#endif
+#ifndef YASM_INTTREE_H
+#define YASM_INTTREE_H
+
+#ifndef YASM_LIB_DECL
+#define YASM_LIB_DECL
+#endif
+
+/* The interval_tree.h and interval_tree.cc files contain code for
+ * interval trees implemented using red-black-trees as described in
+ * the book _Introduction_To_Algorithms_ by Cormen, Leisserson,
+ * and Rivest.
+ */
+
+typedef struct IntervalTreeNode {
+ struct IntervalTreeNode *left, *right, *parent;
+ void *data;
+ long low;
+ long high;
+ long maxHigh;
+ int red; /* if red=0 then the node is black */
+} IntervalTreeNode;
+
+typedef struct it_recursion_node {
+ /* This structure stores the information needed when we take the
+ * right branch in searching for intervals but possibly come back
+ * and check the left branch as well.
+ */
+ IntervalTreeNode *start_node;
+ unsigned int parentIndex;
+ int tryRightBranch;
+} it_recursion_node;
+
+typedef struct IntervalTree {
+ /* A sentinel is used for root and for nil. These sentinels are
+ * created when ITTreeCreate is called. root->left should always
+ * point to the node which is the root of the tree. nil points to a
+ * node which should always be black but has aribtrary children and
+ * parent and no key or info. The point of using these sentinels is so
+ * that the root and nil nodes do not require special cases in the code
+ */
+ IntervalTreeNode *root;
+ IntervalTreeNode *nil;
+
+/*private:*/
+ unsigned int recursionNodeStackSize;
+ it_recursion_node * recursionNodeStack;
+ unsigned int currentParent;
+ unsigned int recursionNodeStackTop;
+} IntervalTree;
+
+YASM_LIB_DECL
+IntervalTree *IT_create(void);
+YASM_LIB_DECL
+void IT_destroy(IntervalTree *);
+YASM_LIB_DECL
+void IT_print(const IntervalTree *);
+YASM_LIB_DECL
+void *IT_delete_node(IntervalTree *, IntervalTreeNode *, long *low,
+ long *high);
+YASM_LIB_DECL
+IntervalTreeNode *IT_insert(IntervalTree *, long low, long high, void *data);
+YASM_LIB_DECL
+IntervalTreeNode *IT_get_predecessor(const IntervalTree *, IntervalTreeNode *);
+YASM_LIB_DECL
+IntervalTreeNode *IT_get_successor(const IntervalTree *, IntervalTreeNode *);
+YASM_LIB_DECL
+void IT_enumerate(IntervalTree *, long low, long high, void *cbd,
+ void (*callback) (IntervalTreeNode *node, void *cbd));
+
+#endif
diff --git a/contrib/tools/yasm/libyasm/linemap.c b/contrib/tools/yasm/libyasm/linemap.c
index 859407ba5e..42201d3c07 100644
--- a/contrib/tools/yasm/libyasm/linemap.c
+++ b/contrib/tools/yasm/libyasm/linemap.c
@@ -1,293 +1,293 @@
-/*
- * YASM assembler virtual line mapping handling (for parse stage)
- *
- * Copyright (C) 2002-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include "util.h"
-
-#include "coretype.h"
-#include "hamt.h"
-
-#include "errwarn.h"
-#include "linemap.h"
-
-
-typedef struct line_mapping {
- /* monotonically increasing virtual line */
- unsigned long line;
-
- /* related info */
- /* "original" source filename */
- /*@null@*/ /*@dependent@*/ const char *filename;
- /* "original" source base line number */
- unsigned long file_line;
- /* "original" source line number increment (for following lines) */
- unsigned long line_inc;
-} line_mapping;
-
-typedef struct line_source_info {
- /* first bytecode on line; NULL if no bytecodes on line */
- /*@null@*/ /*@dependent@*/ yasm_bytecode *bc;
-
- /* source code line */
- /*@owned@*/ char *source;
-} line_source_info;
-
-struct yasm_linemap {
- /* Shared storage for filenames */
- /*@only@*/ /*@null@*/ HAMT *filenames;
-
- /* Current virtual line number. */
- unsigned long current;
-
- /* Mappings from virtual to physical line numbers */
- struct line_mapping *map_vector;
- unsigned long map_size;
- unsigned long map_allocated;
-
- /* Bytecode and source line information */
- /*@only@*/ line_source_info *source_info;
- size_t source_info_size;
-};
-
-static void
-filename_delete_one(/*@only@*/ void *d)
-{
- yasm_xfree(d);
-}
-
-void
-yasm_linemap_set(yasm_linemap *linemap, const char *filename,
- unsigned long virtual_line, unsigned long file_line,
- unsigned long line_inc)
-{
- char *copy;
- unsigned long i;
- int replace = 0;
- line_mapping *mapping = NULL;
-
- if (virtual_line == 0) {
- virtual_line = linemap->current;
- }
-
- /* Replace all existing mappings that have line numbers >= this one. */
- for (i = linemap->map_size; i > 0; i--) {
- if (linemap->map_vector[i-1].line < virtual_line) {
- if (i < linemap->map_size) {
- mapping = &linemap->map_vector[i];
- linemap->map_size = i + 1;
- }
- break;
- }
- }
-
- if (mapping == NULL) {
- /* Create a new mapping in the map */
- if (linemap->map_size >= linemap->map_allocated) {
- /* allocate another size bins when full for 2x space */
- linemap->map_vector = yasm_xrealloc(linemap->map_vector,
- 2*linemap->map_allocated*sizeof(line_mapping));
- linemap->map_allocated *= 2;
- }
- mapping = &linemap->map_vector[linemap->map_size];
- linemap->map_size++;
- }
-
- /* Fill it */
-
- if (!filename) {
- if (linemap->map_size >= 2)
- mapping->filename =
- linemap->map_vector[linemap->map_size-2].filename;
- else
- filename = "unknown";
- }
- if (filename) {
- /* Copy the filename (via shared storage) */
- copy = yasm__xstrdup(filename);
- /*@-aliasunique@*/
- mapping->filename = HAMT_insert(linemap->filenames, copy, copy,
- &replace, filename_delete_one);
- /*@=aliasunique@*/
- }
-
- mapping->line = virtual_line;
- mapping->file_line = file_line;
- mapping->line_inc = line_inc;
-}
-
-unsigned long
-yasm_linemap_poke(yasm_linemap *linemap, const char *filename,
- unsigned long file_line)
-{
- unsigned long line;
- line_mapping *mapping;
-
- linemap->current++;
- yasm_linemap_set(linemap, filename, 0, file_line, 0);
-
- mapping = &linemap->map_vector[linemap->map_size-1];
-
- line = linemap->current;
-
- linemap->current++;
- yasm_linemap_set(linemap, mapping->filename, 0,
- mapping->file_line +
- mapping->line_inc*(linemap->current-2-mapping->line),
- mapping->line_inc);
-
- return line;
-}
-
-yasm_linemap *
-yasm_linemap_create(void)
-{
- size_t i;
- yasm_linemap *linemap = yasm_xmalloc(sizeof(yasm_linemap));
-
- linemap->filenames = HAMT_create(0, yasm_internal_error_);
-
- linemap->current = 1;
-
- /* initialize mapping vector */
- linemap->map_vector = yasm_xmalloc(8*sizeof(line_mapping));
- linemap->map_size = 0;
- linemap->map_allocated = 8;
-
- /* initialize source line information array */
- linemap->source_info_size = 2;
- linemap->source_info = yasm_xmalloc(linemap->source_info_size *
- sizeof(line_source_info));
- for (i=0; i<linemap->source_info_size; i++) {
- linemap->source_info[i].bc = NULL;
- linemap->source_info[i].source = NULL;
- }
-
- return linemap;
-}
-
-void
-yasm_linemap_destroy(yasm_linemap *linemap)
-{
- size_t i;
- for (i=0; i<linemap->source_info_size; i++) {
- if (linemap->source_info[i].source)
- yasm_xfree(linemap->source_info[i].source);
- }
- yasm_xfree(linemap->source_info);
-
- yasm_xfree(linemap->map_vector);
-
- if (linemap->filenames)
- HAMT_destroy(linemap->filenames, filename_delete_one);
-
- yasm_xfree(linemap);
-}
-
-unsigned long
-yasm_linemap_get_current(yasm_linemap *linemap)
-{
- return linemap->current;
-}
-
-void
-yasm_linemap_add_source(yasm_linemap *linemap, yasm_bytecode *bc,
- const char *source)
-{
- size_t i;
-
- while (linemap->current > linemap->source_info_size) {
- /* allocate another size bins when full for 2x space */
- linemap->source_info = yasm_xrealloc(linemap->source_info,
- 2*linemap->source_info_size*sizeof(line_source_info));
- for (i=linemap->source_info_size; i<linemap->source_info_size*2; i++) {
- linemap->source_info[i].bc = NULL;
- linemap->source_info[i].source = NULL;
- }
- linemap->source_info_size *= 2;
- }
-
- /* Delete existing info for that line (if any) */
- if (linemap->source_info[linemap->current-1].source)
- yasm_xfree(linemap->source_info[linemap->current-1].source);
-
- linemap->source_info[linemap->current-1].bc = bc;
- linemap->source_info[linemap->current-1].source = yasm__xstrdup(source);
-}
-
-unsigned long
-yasm_linemap_goto_next(yasm_linemap *linemap)
-{
- return ++(linemap->current);
-}
-
-void
-yasm_linemap_lookup(yasm_linemap *linemap, unsigned long line,
- const char **filename, unsigned long *file_line)
-{
- line_mapping *mapping;
- unsigned long vindex, step;
-
- assert(line <= linemap->current);
-
- /* Binary search through map to find highest line_index <= index */
- vindex = 0;
- /* start step as the greatest power of 2 <= size */
- step = 1;
- while (step*2<=linemap->map_size)
- step*=2;
- while (step>0) {
- if (vindex+step < linemap->map_size
- && linemap->map_vector[vindex+step].line <= line)
- vindex += step;
- step /= 2;
- }
- mapping = &linemap->map_vector[vindex];
-
- *filename = mapping->filename;
- *file_line = (line ? mapping->file_line + mapping->line_inc*(line-mapping->line) : 0);
-}
-
-int
-yasm_linemap_traverse_filenames(yasm_linemap *linemap, /*@null@*/ void *d,
- int (*func) (const char *filename, void *d))
-{
- return HAMT_traverse(linemap->filenames, d, (int (*) (void *, void *))func);
-}
-
-int
-yasm_linemap_get_source(yasm_linemap *linemap, unsigned long line,
- yasm_bytecode **bcp, const char **sourcep)
-{
- if (line > linemap->source_info_size) {
- *bcp = NULL;
- *sourcep = NULL;
- return 1;
- }
-
- *bcp = linemap->source_info[line-1].bc;
- *sourcep = linemap->source_info[line-1].source;
-
- return (!(*sourcep));
-}
+/*
+ * YASM assembler virtual line mapping handling (for parse stage)
+ *
+ * Copyright (C) 2002-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "util.h"
+
+#include "coretype.h"
+#include "hamt.h"
+
+#include "errwarn.h"
+#include "linemap.h"
+
+
+typedef struct line_mapping {
+ /* monotonically increasing virtual line */
+ unsigned long line;
+
+ /* related info */
+ /* "original" source filename */
+ /*@null@*/ /*@dependent@*/ const char *filename;
+ /* "original" source base line number */
+ unsigned long file_line;
+ /* "original" source line number increment (for following lines) */
+ unsigned long line_inc;
+} line_mapping;
+
+typedef struct line_source_info {
+ /* first bytecode on line; NULL if no bytecodes on line */
+ /*@null@*/ /*@dependent@*/ yasm_bytecode *bc;
+
+ /* source code line */
+ /*@owned@*/ char *source;
+} line_source_info;
+
+struct yasm_linemap {
+ /* Shared storage for filenames */
+ /*@only@*/ /*@null@*/ HAMT *filenames;
+
+ /* Current virtual line number. */
+ unsigned long current;
+
+ /* Mappings from virtual to physical line numbers */
+ struct line_mapping *map_vector;
+ unsigned long map_size;
+ unsigned long map_allocated;
+
+ /* Bytecode and source line information */
+ /*@only@*/ line_source_info *source_info;
+ size_t source_info_size;
+};
+
+static void
+filename_delete_one(/*@only@*/ void *d)
+{
+ yasm_xfree(d);
+}
+
+void
+yasm_linemap_set(yasm_linemap *linemap, const char *filename,
+ unsigned long virtual_line, unsigned long file_line,
+ unsigned long line_inc)
+{
+ char *copy;
+ unsigned long i;
+ int replace = 0;
+ line_mapping *mapping = NULL;
+
+ if (virtual_line == 0) {
+ virtual_line = linemap->current;
+ }
+
+ /* Replace all existing mappings that have line numbers >= this one. */
+ for (i = linemap->map_size; i > 0; i--) {
+ if (linemap->map_vector[i-1].line < virtual_line) {
+ if (i < linemap->map_size) {
+ mapping = &linemap->map_vector[i];
+ linemap->map_size = i + 1;
+ }
+ break;
+ }
+ }
+
+ if (mapping == NULL) {
+ /* Create a new mapping in the map */
+ if (linemap->map_size >= linemap->map_allocated) {
+ /* allocate another size bins when full for 2x space */
+ linemap->map_vector = yasm_xrealloc(linemap->map_vector,
+ 2*linemap->map_allocated*sizeof(line_mapping));
+ linemap->map_allocated *= 2;
+ }
+ mapping = &linemap->map_vector[linemap->map_size];
+ linemap->map_size++;
+ }
+
+ /* Fill it */
+
+ if (!filename) {
+ if (linemap->map_size >= 2)
+ mapping->filename =
+ linemap->map_vector[linemap->map_size-2].filename;
+ else
+ filename = "unknown";
+ }
+ if (filename) {
+ /* Copy the filename (via shared storage) */
+ copy = yasm__xstrdup(filename);
+ /*@-aliasunique@*/
+ mapping->filename = HAMT_insert(linemap->filenames, copy, copy,
+ &replace, filename_delete_one);
+ /*@=aliasunique@*/
+ }
+
+ mapping->line = virtual_line;
+ mapping->file_line = file_line;
+ mapping->line_inc = line_inc;
+}
+
+unsigned long
+yasm_linemap_poke(yasm_linemap *linemap, const char *filename,
+ unsigned long file_line)
+{
+ unsigned long line;
+ line_mapping *mapping;
+
+ linemap->current++;
+ yasm_linemap_set(linemap, filename, 0, file_line, 0);
+
+ mapping = &linemap->map_vector[linemap->map_size-1];
+
+ line = linemap->current;
+
+ linemap->current++;
+ yasm_linemap_set(linemap, mapping->filename, 0,
+ mapping->file_line +
+ mapping->line_inc*(linemap->current-2-mapping->line),
+ mapping->line_inc);
+
+ return line;
+}
+
+yasm_linemap *
+yasm_linemap_create(void)
+{
+ size_t i;
+ yasm_linemap *linemap = yasm_xmalloc(sizeof(yasm_linemap));
+
+ linemap->filenames = HAMT_create(0, yasm_internal_error_);
+
+ linemap->current = 1;
+
+ /* initialize mapping vector */
+ linemap->map_vector = yasm_xmalloc(8*sizeof(line_mapping));
+ linemap->map_size = 0;
+ linemap->map_allocated = 8;
+
+ /* initialize source line information array */
+ linemap->source_info_size = 2;
+ linemap->source_info = yasm_xmalloc(linemap->source_info_size *
+ sizeof(line_source_info));
+ for (i=0; i<linemap->source_info_size; i++) {
+ linemap->source_info[i].bc = NULL;
+ linemap->source_info[i].source = NULL;
+ }
+
+ return linemap;
+}
+
+void
+yasm_linemap_destroy(yasm_linemap *linemap)
+{
+ size_t i;
+ for (i=0; i<linemap->source_info_size; i++) {
+ if (linemap->source_info[i].source)
+ yasm_xfree(linemap->source_info[i].source);
+ }
+ yasm_xfree(linemap->source_info);
+
+ yasm_xfree(linemap->map_vector);
+
+ if (linemap->filenames)
+ HAMT_destroy(linemap->filenames, filename_delete_one);
+
+ yasm_xfree(linemap);
+}
+
+unsigned long
+yasm_linemap_get_current(yasm_linemap *linemap)
+{
+ return linemap->current;
+}
+
+void
+yasm_linemap_add_source(yasm_linemap *linemap, yasm_bytecode *bc,
+ const char *source)
+{
+ size_t i;
+
+ while (linemap->current > linemap->source_info_size) {
+ /* allocate another size bins when full for 2x space */
+ linemap->source_info = yasm_xrealloc(linemap->source_info,
+ 2*linemap->source_info_size*sizeof(line_source_info));
+ for (i=linemap->source_info_size; i<linemap->source_info_size*2; i++) {
+ linemap->source_info[i].bc = NULL;
+ linemap->source_info[i].source = NULL;
+ }
+ linemap->source_info_size *= 2;
+ }
+
+ /* Delete existing info for that line (if any) */
+ if (linemap->source_info[linemap->current-1].source)
+ yasm_xfree(linemap->source_info[linemap->current-1].source);
+
+ linemap->source_info[linemap->current-1].bc = bc;
+ linemap->source_info[linemap->current-1].source = yasm__xstrdup(source);
+}
+
+unsigned long
+yasm_linemap_goto_next(yasm_linemap *linemap)
+{
+ return ++(linemap->current);
+}
+
+void
+yasm_linemap_lookup(yasm_linemap *linemap, unsigned long line,
+ const char **filename, unsigned long *file_line)
+{
+ line_mapping *mapping;
+ unsigned long vindex, step;
+
+ assert(line <= linemap->current);
+
+ /* Binary search through map to find highest line_index <= index */
+ vindex = 0;
+ /* start step as the greatest power of 2 <= size */
+ step = 1;
+ while (step*2<=linemap->map_size)
+ step*=2;
+ while (step>0) {
+ if (vindex+step < linemap->map_size
+ && linemap->map_vector[vindex+step].line <= line)
+ vindex += step;
+ step /= 2;
+ }
+ mapping = &linemap->map_vector[vindex];
+
+ *filename = mapping->filename;
+ *file_line = (line ? mapping->file_line + mapping->line_inc*(line-mapping->line) : 0);
+}
+
+int
+yasm_linemap_traverse_filenames(yasm_linemap *linemap, /*@null@*/ void *d,
+ int (*func) (const char *filename, void *d))
+{
+ return HAMT_traverse(linemap->filenames, d, (int (*) (void *, void *))func);
+}
+
+int
+yasm_linemap_get_source(yasm_linemap *linemap, unsigned long line,
+ yasm_bytecode **bcp, const char **sourcep)
+{
+ if (line > linemap->source_info_size) {
+ *bcp = NULL;
+ *sourcep = NULL;
+ return 1;
+ }
+
+ *bcp = linemap->source_info[line-1].bc;
+ *sourcep = linemap->source_info[line-1].source;
+
+ return (!(*sourcep));
+}
diff --git a/contrib/tools/yasm/libyasm/linemap.h b/contrib/tools/yasm/libyasm/linemap.h
index 2a9b140e42..1c5aa4626a 100644
--- a/contrib/tools/yasm/libyasm/linemap.h
+++ b/contrib/tools/yasm/libyasm/linemap.h
@@ -1,141 +1,141 @@
-/**
- * \file libyasm/linemap.h
- * \brief YASM virtual line mapping interface.
- *
- * \license
- * Copyright (C) 2002-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- * \endlicense
- */
-#ifndef YASM_LINEMAP_H
-#define YASM_LINEMAP_H
-
-#ifndef YASM_LIB_DECL
-#define YASM_LIB_DECL
-#endif
-
-/** Create a new line mapping repository.
- * \return New repository.
- */
-YASM_LIB_DECL
-yasm_linemap *yasm_linemap_create(void);
-
-/** Clean up any memory allocated for a repository.
- * \param linemap line mapping repository
- */
-YASM_LIB_DECL
-void yasm_linemap_destroy(yasm_linemap *linemap);
-
-/** Get the current line position in a repository.
- * \param linemap line mapping repository
- * \return Current virtual line.
- */
-YASM_LIB_DECL
-unsigned long yasm_linemap_get_current(yasm_linemap *linemap);
-
-/** Get bytecode and source line information, if any, for a virtual line.
- * \param linemap line mapping repository
- * \param line virtual line
- * \param bcp pointer to return bytecode into
- * \param sourcep pointer to return source code line pointer into
- * \return Zero if source line information available for line, nonzero if not.
- * \note If source line information is not available, bcp and sourcep targets
- * are set to NULL.
- */
-YASM_LIB_DECL
-int yasm_linemap_get_source(yasm_linemap *linemap, unsigned long line,
- /*@null@*/ yasm_bytecode **bcp,
- const char **sourcep);
-
-/** Add bytecode and source line information to the current virtual line.
- * \attention Deletes any existing bytecode and source line information for
- * the current virtual line.
- * \param linemap line mapping repository
- * \param bc bytecode (if any)
- * \param source source code line
- * \note The source code line pointer is NOT kept, it is strdup'ed.
- */
-YASM_LIB_DECL
-void yasm_linemap_add_source(yasm_linemap *linemap,
- /*@null@*/ yasm_bytecode *bc,
- const char *source);
-
-/** Go to the next line (increments the current virtual line).
- * \param linemap line mapping repository
- * \return The current (new) virtual line.
- */
-YASM_LIB_DECL
-unsigned long yasm_linemap_goto_next(yasm_linemap *linemap);
-
-/** Set a new file/line physical association starting point at the specified
- * virtual line. line_inc indicates how much the "real" line is incremented
- * by for each virtual line increment (0 is perfectly legal).
- * \param linemap line mapping repository
- * \param filename physical file name (if NULL, not changed)
- * \param virtual_line virtual line number (if 0, linemap->current is used)
- * \param file_line physical line number
- * \param line_inc line increment
- */
-YASM_LIB_DECL
-void yasm_linemap_set(yasm_linemap *linemap, /*@null@*/ const char *filename,
- unsigned long virtual_line, unsigned long file_line,
- unsigned long line_inc);
-
-/** Poke a single file/line association, restoring the original physical
- * association starting point. Caution: increments the current virtual line
- * twice.
- * \param linemap line mapping repository
- * \param filename physical file name (if NULL, not changed)
- * \param file_line physical line number
- * \return The virtual line number of the poked association.
- */
-YASM_LIB_DECL
-unsigned long yasm_linemap_poke(yasm_linemap *linemap,
- /*@null@*/ const char *filename,
- unsigned long file_line);
-
-/** Look up the associated physical file and line for a virtual line.
- * \param linemap line mapping repository
- * \param line virtual line
- * \param filename physical file name (output)
- * \param file_line physical line number (output)
- */
-YASM_LIB_DECL
-void yasm_linemap_lookup(yasm_linemap *linemap, unsigned long line,
- /*@out@*/ const char **filename,
- /*@out@*/ unsigned long *file_line);
-
-/** Traverses all filenames used in a linemap, calling a function on each
- * filename.
- * \param linemap line mapping repository
- * \param d data pointer passed to func on each call
- * \param func function
- * \return Stops early (and returns func's return value) if func returns a
- * nonzero value; otherwise 0.
- */
-YASM_LIB_DECL
-int yasm_linemap_traverse_filenames
- (yasm_linemap *linemap, /*@null@*/ void *d,
- int (*func) (const char *filename, void *d));
-
-#endif
+/**
+ * \file libyasm/linemap.h
+ * \brief YASM virtual line mapping interface.
+ *
+ * \license
+ * Copyright (C) 2002-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ * \endlicense
+ */
+#ifndef YASM_LINEMAP_H
+#define YASM_LINEMAP_H
+
+#ifndef YASM_LIB_DECL
+#define YASM_LIB_DECL
+#endif
+
+/** Create a new line mapping repository.
+ * \return New repository.
+ */
+YASM_LIB_DECL
+yasm_linemap *yasm_linemap_create(void);
+
+/** Clean up any memory allocated for a repository.
+ * \param linemap line mapping repository
+ */
+YASM_LIB_DECL
+void yasm_linemap_destroy(yasm_linemap *linemap);
+
+/** Get the current line position in a repository.
+ * \param linemap line mapping repository
+ * \return Current virtual line.
+ */
+YASM_LIB_DECL
+unsigned long yasm_linemap_get_current(yasm_linemap *linemap);
+
+/** Get bytecode and source line information, if any, for a virtual line.
+ * \param linemap line mapping repository
+ * \param line virtual line
+ * \param bcp pointer to return bytecode into
+ * \param sourcep pointer to return source code line pointer into
+ * \return Zero if source line information available for line, nonzero if not.
+ * \note If source line information is not available, bcp and sourcep targets
+ * are set to NULL.
+ */
+YASM_LIB_DECL
+int yasm_linemap_get_source(yasm_linemap *linemap, unsigned long line,
+ /*@null@*/ yasm_bytecode **bcp,
+ const char **sourcep);
+
+/** Add bytecode and source line information to the current virtual line.
+ * \attention Deletes any existing bytecode and source line information for
+ * the current virtual line.
+ * \param linemap line mapping repository
+ * \param bc bytecode (if any)
+ * \param source source code line
+ * \note The source code line pointer is NOT kept, it is strdup'ed.
+ */
+YASM_LIB_DECL
+void yasm_linemap_add_source(yasm_linemap *linemap,
+ /*@null@*/ yasm_bytecode *bc,
+ const char *source);
+
+/** Go to the next line (increments the current virtual line).
+ * \param linemap line mapping repository
+ * \return The current (new) virtual line.
+ */
+YASM_LIB_DECL
+unsigned long yasm_linemap_goto_next(yasm_linemap *linemap);
+
+/** Set a new file/line physical association starting point at the specified
+ * virtual line. line_inc indicates how much the "real" line is incremented
+ * by for each virtual line increment (0 is perfectly legal).
+ * \param linemap line mapping repository
+ * \param filename physical file name (if NULL, not changed)
+ * \param virtual_line virtual line number (if 0, linemap->current is used)
+ * \param file_line physical line number
+ * \param line_inc line increment
+ */
+YASM_LIB_DECL
+void yasm_linemap_set(yasm_linemap *linemap, /*@null@*/ const char *filename,
+ unsigned long virtual_line, unsigned long file_line,
+ unsigned long line_inc);
+
+/** Poke a single file/line association, restoring the original physical
+ * association starting point. Caution: increments the current virtual line
+ * twice.
+ * \param linemap line mapping repository
+ * \param filename physical file name (if NULL, not changed)
+ * \param file_line physical line number
+ * \return The virtual line number of the poked association.
+ */
+YASM_LIB_DECL
+unsigned long yasm_linemap_poke(yasm_linemap *linemap,
+ /*@null@*/ const char *filename,
+ unsigned long file_line);
+
+/** Look up the associated physical file and line for a virtual line.
+ * \param linemap line mapping repository
+ * \param line virtual line
+ * \param filename physical file name (output)
+ * \param file_line physical line number (output)
+ */
+YASM_LIB_DECL
+void yasm_linemap_lookup(yasm_linemap *linemap, unsigned long line,
+ /*@out@*/ const char **filename,
+ /*@out@*/ unsigned long *file_line);
+
+/** Traverses all filenames used in a linemap, calling a function on each
+ * filename.
+ * \param linemap line mapping repository
+ * \param d data pointer passed to func on each call
+ * \param func function
+ * \return Stops early (and returns func's return value) if func returns a
+ * nonzero value; otherwise 0.
+ */
+YASM_LIB_DECL
+int yasm_linemap_traverse_filenames
+ (yasm_linemap *linemap, /*@null@*/ void *d,
+ int (*func) (const char *filename, void *d));
+
+#endif
diff --git a/contrib/tools/yasm/libyasm/listfmt.h b/contrib/tools/yasm/libyasm/listfmt.h
index c428de3628..945f28e58b 100644
--- a/contrib/tools/yasm/libyasm/listfmt.h
+++ b/contrib/tools/yasm/libyasm/listfmt.h
@@ -1,124 +1,124 @@
-/**
- * \file libyasm/listfmt.h
- * \brief YASM list format interface.
- *
- * \license
- * Copyright (C) 2004-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- * \endlicense
- */
-#ifndef YASM_LISTFMT_H
-#define YASM_LISTFMT_H
-
-#ifndef YASM_DOXYGEN
-/** Base #yasm_listfmt structure. Must be present as the first element in any
- * #yasm_listfmt implementation.
- */
-typedef struct yasm_listfmt_base {
- /** #yasm_listfmt_module implementation for this list format. */
- const struct yasm_listfmt_module *module;
-} yasm_listfmt_base;
-#endif
-
-/** YASM list format module interface. */
-typedef struct yasm_listfmt_module {
- /** One-line description of the list format. */
- const char *name;
-
- /** Keyword used to select list format. */
- const char *keyword;
-
- /** Create list format.
- * Module-level implementation of yasm_listfmt_create().
- * The filenames are provided solely for informational purposes.
- * \param in_filename primary input filename
- * \param obj_filename object filename
- * \return NULL if unable to initialize.
- */
- /*@null@*/ /*@only@*/ yasm_listfmt * (*create)
- (const char *in_filename, const char *obj_filename);
-
- /** Module-level implementation of yasm_listfmt_destroy().
- * Call yasm_listfmt_destroy() instead of calling this function.
- */
- void (*destroy) (/*@only@*/ yasm_listfmt *listfmt);
-
- /** Module-level implementation of yasm_listfmt_output().
- * Call yasm_listfmt_output() instead of calling this function.
- */
- void (*output) (yasm_listfmt *listfmt, FILE *f, yasm_linemap *linemap,
- yasm_arch *arch);
-} yasm_listfmt_module;
-
-/** Get the keyword used to select a list format.
- * \param listfmt list format
- * \return keyword
- */
-const char *yasm_listfmt_keyword(const yasm_listfmt *listfmt);
-
-/** Initialize list format for use. Must call before any other list
- * format functions. The filenames are provided solely for informational
- * purposes.
- * \param module list format module
- * \param in_filename primary input filename
- * \param obj_filename object filename
- * \return NULL if object format does not provide needed support.
- */
-/*@null@*/ /*@only@*/ yasm_listfmt *yasm_listfmt_create
- (const yasm_listfmt_module *module, const char *in_filename,
- const char *obj_filename);
-
-/** Cleans up any allocated list format memory.
- * \param listfmt list format
- */
-void yasm_listfmt_destroy(/*@only@*/ yasm_listfmt *listfmt);
-
-/** Write out list to the list file.
- * This function may call all read-only yasm_* functions as necessary.
- * \param listfmt list format
- * \param f output list file
- * \param linemap line mapping repository
- * \param arch architecture
- */
-void yasm_listfmt_output(yasm_listfmt *listfmt, FILE *f,
- yasm_linemap *linemap, yasm_arch *arch);
-
-#ifndef YASM_DOXYGEN
-
-/* Inline macro implementations for listfmt functions */
-
-#define yasm_listfmt_keyword(listfmt) \
- (((yasm_listfmt_base *)listfmt)->module->keyword)
-
-#define yasm_listfmt_create(module, in_filename, obj_filename) \
- module->create(in_filename, obj_filename)
-
-#define yasm_listfmt_destroy(listfmt) \
- ((yasm_listfmt_base *)listfmt)->module->destroy(listfmt)
-
-#define yasm_listfmt_output(listfmt, f, linemap, a) \
- ((yasm_listfmt_base *)listfmt)->module->output(listfmt, f, linemap, a)
-
-#endif
-
-#endif
+/**
+ * \file libyasm/listfmt.h
+ * \brief YASM list format interface.
+ *
+ * \license
+ * Copyright (C) 2004-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * - Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ * \endlicense
+ */
+#ifndef YASM_LISTFMT_H
+#define YASM_LISTFMT_H
+
+#ifndef YASM_DOXYGEN
+/** Base #yasm_listfmt structure. Must be present as the first element in any
+ * #yasm_listfmt implementation.
+ */
+typedef struct yasm_listfmt_base {
+ /** #yasm_listfmt_module implementation for this list format. */
+ const struct yasm_listfmt_module *module;
+} yasm_listfmt_base;
+#endif
+
+/** YASM list format module interface. */
+typedef struct yasm_listfmt_module {
+ /** One-line description of the list format. */
+ const char *name;
+
+ /** Keyword used to select list format. */
+ const char *keyword;
+
+ /** Create list format.
+ * Module-level implementation of yasm_listfmt_create().
+ * The filenames are provided solely for informational purposes.
+ * \param in_filename primary input filename
+ * \param obj_filename object filename
+ * \return NULL if unable to initialize.
+ */
+ /*@null@*/ /*@only@*/ yasm_listfmt * (*create)
+ (const char *in_filename, const char *obj_filename);
+
+ /** Module-level implementation of yasm_listfmt_destroy().
+ * Call yasm_listfmt_destroy() instead of calling this function.
+ */
+ void (*destroy) (/*@only@*/ yasm_listfmt *listfmt);
+
+ /** Module-level implementation of yasm_listfmt_output().
+ * Call yasm_listfmt_output() instead of calling this function.
+ */
+ void (*output) (yasm_listfmt *listfmt, FILE *f, yasm_linemap *linemap,
+ yasm_arch *arch);
+} yasm_listfmt_module;
+
+/** Get the keyword used to select a list format.
+ * \param listfmt list format
+ * \return keyword
+ */
+const char *yasm_listfmt_keyword(const yasm_listfmt *listfmt);
+
+/** Initialize list format for use. Must call before any other list
+ * format functions. The filenames are provided solely for informational
+ * purposes.
+ * \param module list format module
+ * \param in_filename primary input filename
+ * \param obj_filename object filename
+ * \return NULL if object format does not provide needed support.
+ */
+/*@null@*/ /*@only@*/ yasm_listfmt *yasm_listfmt_create
+ (const yasm_listfmt_module *module, const char *in_filename,
+ const char *obj_filename);
+
+/** Cleans up any allocated list format memory.
+ * \param listfmt list format
+ */
+void yasm_listfmt_destroy(/*@only@*/ yasm_listfmt *listfmt);
+
+/** Write out list to the list file.
+ * This function may call all read-only yasm_* functions as necessary.
+ * \param listfmt list format
+ * \param f output list file
+ * \param linemap line mapping repository
+ * \param arch architecture
+ */
+void yasm_listfmt_output(yasm_listfmt *listfmt, FILE *f,
+ yasm_linemap *linemap, yasm_arch *arch);
+
+#ifndef YASM_DOXYGEN
+
+/* Inline macro implementations for listfmt functions */
+
+#define yasm_listfmt_keyword(listfmt) \
+ (((yasm_listfmt_base *)listfmt)->module->keyword)
+
+#define yasm_listfmt_create(module, in_filename, obj_filename) \
+ module->create(in_filename, obj_filename)
+
+#define yasm_listfmt_destroy(listfmt) \
+ ((yasm_listfmt_base *)listfmt)->module->destroy(listfmt)
+
+#define yasm_listfmt_output(listfmt, f, linemap, a) \
+ ((yasm_listfmt_base *)listfmt)->module->output(listfmt, f, linemap, a)
+
+#endif
+
+#endif
diff --git a/contrib/tools/yasm/libyasm/md5.c b/contrib/tools/yasm/libyasm/md5.c
index c188c453e7..b009842f5c 100644
--- a/contrib/tools/yasm/libyasm/md5.c
+++ b/contrib/tools/yasm/libyasm/md5.c
@@ -1,309 +1,309 @@
-/*
- * This code implements the MD5 message-digest algorithm.
- * The algorithm is due to Ron Rivest. This code was
- * written by Colin Plumb in 1993, no copyright is claimed.
- * This code is in the public domain; do with it what you wish.
- *
- * Equivalent code is available from RSA Data Security, Inc.
- * This code has been tested against that, and is equivalent,
- * except that you don't need to include two pages of legalese
- * with every copy.
- *
- * To compute the message digest of a chunk of bytes, declare an
- * MD5Context structure, pass it to MD5Init, call MD5Update as
- * needed on buffers full of bytes, and then call MD5Final, which
- * will fill a supplied 16-byte array with the digest.
- */
-
-/* This code was modified in 1997 by Jim Kingdon of Cyclic Software to
- not require an integer type which is exactly 32 bits. This work
- draws on the changes for the same purpose by Tatu Ylonen
- <ylo@cs.hut.fi> as part of SSH, but since I didn't actually use
- that code, there is no copyright issue. I hereby disclaim
- copyright in any changes I have made; this code remains in the
- public domain. */
-
-/* Note regarding cvs_* namespace: this avoids potential conflicts
- with libraries such as some versions of Kerberos. No particular
- need to worry about whether the system supplies an MD5 library, as
- this file is only about 3k of object code. */
-
-#include <util.h>
-
-#include "md5.h"
-
-/* Little-endian byte-swapping routines. Note that these do not
- depend on the size of datatypes such as cvs_uint32, nor do they require
- us to detect the endianness of the machine we are running on. It
- is possible they should be macros for speed, but I would be
- surprised if they were a performance bottleneck for MD5. */
-
-static unsigned long
-getu32(const unsigned char *addr)
-{
- return (((((unsigned long)addr[3] << 8) | addr[2]) << 8)
- | addr[1]) << 8 | addr[0];
-}
-
-static void
-putu32(unsigned long data, unsigned char *addr)
-{
- addr[0] = (unsigned char)data;
- addr[1] = (unsigned char)(data >> 8);
- addr[2] = (unsigned char)(data >> 16);
- addr[3] = (unsigned char)(data >> 24);
-}
-
-/*
- * Start MD5 accumulation. Set bit count to 0 and buffer to mysterious
- * initialization constants.
- */
-void
-yasm_md5_init(yasm_md5_context *ctx)
-{
- ctx->buf[0] = 0x67452301;
- ctx->buf[1] = 0xefcdab89;
- ctx->buf[2] = 0x98badcfe;
- ctx->buf[3] = 0x10325476;
-
- ctx->bits[0] = 0;
- ctx->bits[1] = 0;
-}
-
-/*
- * Update context to reflect the concatenation of another buffer full
- * of bytes.
- */
-void
-yasm_md5_update(yasm_md5_context *ctx, unsigned char const *buf,
- unsigned long len)
-{
- unsigned long t;
-
- /* Update bitcount */
-
- t = ctx->bits[0];
- if ((ctx->bits[0] = (t + ((unsigned long)len << 3)) & 0xffffffff) < t)
- ctx->bits[1]++; /* Carry from low to high */
- ctx->bits[1] += len >> 29;
-
- t = (t >> 3) & 0x3f; /* Bytes already in shsInfo->data */
-
- /* Handle any leading odd-sized chunks */
-
- if ( t ) {
- unsigned char *p = ctx->in + t;
-
- t = 64-t;
- if (len < t) {
- memcpy(p, buf, len);
- return;
- }
- memcpy(p, buf, t);
- yasm_md5_transform (ctx->buf, ctx->in);
- buf += t;
- len -= t;
- }
-
- /* Process data in 64-byte chunks */
-
- while (len >= 64) {
- memcpy(ctx->in, buf, 64);
- yasm_md5_transform (ctx->buf, ctx->in);
- buf += 64;
- len -= 64;
- }
-
- /* Handle any remaining bytes of data. */
-
- memcpy(ctx->in, buf, len);
-}
-
-/*
- * Final wrapup - pad to 64-byte boundary with the bit pattern
- * 1 0* (64-bit count of bits processed, MSB-first)
- */
-void
-yasm_md5_final(unsigned char digest[16], yasm_md5_context *ctx)
-{
- unsigned count;
- unsigned char *p;
-
- /* Compute number of bytes mod 64 */
- count = (ctx->bits[0] >> 3) & 0x3F;
-
- /* Set the first char of padding to 0x80. This is safe since there is
- always at least one byte free */
- p = ctx->in + count;
- *p++ = 0x80;
-
- /* Bytes of padding needed to make 64 bytes */
- count = 64 - 1 - count;
-
- /* Pad out to 56 mod 64 */
- if (count < 8) {
- /* Two lots of padding: Pad the first block to 64 bytes */
- memset(p, 0, count);
- yasm_md5_transform (ctx->buf, ctx->in);
-
- /* Now fill the next block with 56 bytes */
- memset(ctx->in, 0, 56);
- } else {
- /* Pad block to 56 bytes */
- memset(p, 0, count-8);
- }
-
- /* Append length in bits and transform */
- putu32(ctx->bits[0], ctx->in + 56);
- putu32(ctx->bits[1], ctx->in + 60);
-
- yasm_md5_transform (ctx->buf, ctx->in);
- putu32(ctx->buf[0], digest);
- putu32(ctx->buf[1], digest + 4);
- putu32(ctx->buf[2], digest + 8);
- putu32(ctx->buf[3], digest + 12);
- memset(ctx, 0, sizeof(*ctx)); /* In case it's sensitive */
-}
-
-#ifndef ASM_MD5
-
-/* The four core functions - F1 is optimized somewhat */
-
-/* #define F1(x, y, z) (x & y | ~x & z) */
-#define F1(x, y, z) (z ^ (x & (y ^ z)))
-#define F2(x, y, z) F1(z, x, y)
-#define F3(x, y, z) (x ^ y ^ z)
-#define F4(x, y, z) (y ^ (x | ~z))
-
-/* This is the central step in the MD5 algorithm. */
-#define MD5STEP(f, w, x, y, z, data, s) \
- ( w += f(x, y, z) + data, w &= 0xffffffff, w = w<<s | w>>(32-s), w += x )
-
-/*
- * The core of the MD5 algorithm, this alters an existing MD5 hash to
- * reflect the addition of 16 longwords of new data. MD5Update blocks
- * the data and converts bytes into longwords for this routine.
- */
-void
-yasm_md5_transform(unsigned long buf[4], const unsigned char inraw[64])
-{
+/*
+ * This code implements the MD5 message-digest algorithm.
+ * The algorithm is due to Ron Rivest. This code was
+ * written by Colin Plumb in 1993, no copyright is claimed.
+ * This code is in the public domain; do with it what you wish.
+ *
+ * Equivalent code is available from RSA Data Security, Inc.
+ * This code has been tested against that, and is equivalent,
+ * except that you don't need to include two pages of legalese
+ * with every copy.
+ *
+ * To compute the message digest of a chunk of bytes, declare an
+ * MD5Context structure, pass it to MD5Init, call MD5Update as
+ * needed on buffers full of bytes, and then call MD5Final, which
+ * will fill a supplied 16-byte array with the digest.
+ */
+
+/* This code was modified in 1997 by Jim Kingdon of Cyclic Software to
+ not require an integer type which is exactly 32 bits. This work
+ draws on the changes for the same purpose by Tatu Ylonen
+ <ylo@cs.hut.fi> as part of SSH, but since I didn't actually use
+ that code, there is no copyright issue. I hereby disclaim
+ copyright in any changes I have made; this code remains in the
+ public domain. */
+
+/* Note regarding cvs_* namespace: this avoids potential conflicts
+ with libraries such as some versions of Kerberos. No particular
+ need to worry about whether the system supplies an MD5 library, as
+ this file is only about 3k of object code. */
+
+#include <util.h>
+
+#include "md5.h"
+
+/* Little-endian byte-swapping routines. Note that these do not
+ depend on the size of datatypes such as cvs_uint32, nor do they require
+ us to detect the endianness of the machine we are running on. It
+ is possible they should be macros for speed, but I would be
+ surprised if they were a performance bottleneck for MD5. */
+
+static unsigned long
+getu32(const unsigned char *addr)
+{
+ return (((((unsigned long)addr[3] << 8) | addr[2]) << 8)
+ | addr[1]) << 8 | addr[0];
+}
+
+static void
+putu32(unsigned long data, unsigned char *addr)
+{
+ addr[0] = (unsigned char)data;
+ addr[1] = (unsigned char)(data >> 8);
+ addr[2] = (unsigned char)(data >> 16);
+ addr[3] = (unsigned char)(data >> 24);
+}
+
+/*
+ * Start MD5 accumulation. Set bit count to 0 and buffer to mysterious
+ * initialization constants.
+ */
+void
+yasm_md5_init(yasm_md5_context *ctx)
+{
+ ctx->buf[0] = 0x67452301;
+ ctx->buf[1] = 0xefcdab89;
+ ctx->buf[2] = 0x98badcfe;
+ ctx->buf[3] = 0x10325476;
+
+ ctx->bits[0] = 0;
+ ctx->bits[1] = 0;
+}
+
+/*
+ * Update context to reflect the concatenation of another buffer full
+ * of bytes.
+ */
+void
+yasm_md5_update(yasm_md5_context *ctx, unsigned char const *buf,
+ unsigned long len)
+{
+ unsigned long t;
+
+ /* Update bitcount */
+
+ t = ctx->bits[0];
+ if ((ctx->bits[0] = (t + ((unsigned long)len << 3)) & 0xffffffff) < t)
+ ctx->bits[1]++; /* Carry from low to high */
+ ctx->bits[1] += len >> 29;
+
+ t = (t >> 3) & 0x3f; /* Bytes already in shsInfo->data */
+
+ /* Handle any leading odd-sized chunks */
+
+ if ( t ) {
+ unsigned char *p = ctx->in + t;
+
+ t = 64-t;
+ if (len < t) {
+ memcpy(p, buf, len);
+ return;
+ }
+ memcpy(p, buf, t);
+ yasm_md5_transform (ctx->buf, ctx->in);
+ buf += t;
+ len -= t;
+ }
+
+ /* Process data in 64-byte chunks */
+
+ while (len >= 64) {
+ memcpy(ctx->in, buf, 64);
+ yasm_md5_transform (ctx->buf, ctx->in);
+ buf += 64;
+ len -= 64;
+ }
+
+ /* Handle any remaining bytes of data. */
+
+ memcpy(ctx->in, buf, len);
+}
+
+/*
+ * Final wrapup - pad to 64-byte boundary with the bit pattern
+ * 1 0* (64-bit count of bits processed, MSB-first)
+ */
+void
+yasm_md5_final(unsigned char digest[16], yasm_md5_context *ctx)
+{
+ unsigned count;
+ unsigned char *p;
+
+ /* Compute number of bytes mod 64 */
+ count = (ctx->bits[0] >> 3) & 0x3F;
+
+ /* Set the first char of padding to 0x80. This is safe since there is
+ always at least one byte free */
+ p = ctx->in + count;
+ *p++ = 0x80;
+
+ /* Bytes of padding needed to make 64 bytes */
+ count = 64 - 1 - count;
+
+ /* Pad out to 56 mod 64 */
+ if (count < 8) {
+ /* Two lots of padding: Pad the first block to 64 bytes */
+ memset(p, 0, count);
+ yasm_md5_transform (ctx->buf, ctx->in);
+
+ /* Now fill the next block with 56 bytes */
+ memset(ctx->in, 0, 56);
+ } else {
+ /* Pad block to 56 bytes */
+ memset(p, 0, count-8);
+ }
+
+ /* Append length in bits and transform */
+ putu32(ctx->bits[0], ctx->in + 56);
+ putu32(ctx->bits[1], ctx->in + 60);
+
+ yasm_md5_transform (ctx->buf, ctx->in);
+ putu32(ctx->buf[0], digest);
+ putu32(ctx->buf[1], digest + 4);
+ putu32(ctx->buf[2], digest + 8);
+ putu32(ctx->buf[3], digest + 12);
+ memset(ctx, 0, sizeof(*ctx)); /* In case it's sensitive */
+}
+
+#ifndef ASM_MD5
+
+/* The four core functions - F1 is optimized somewhat */
+
+/* #define F1(x, y, z) (x & y | ~x & z) */
+#define F1(x, y, z) (z ^ (x & (y ^ z)))
+#define F2(x, y, z) F1(z, x, y)
+#define F3(x, y, z) (x ^ y ^ z)
+#define F4(x, y, z) (y ^ (x | ~z))
+
+/* This is the central step in the MD5 algorithm. */
+#define MD5STEP(f, w, x, y, z, data, s) \
+ ( w += f(x, y, z) + data, w &= 0xffffffff, w = w<<s | w>>(32-s), w += x )
+
+/*
+ * The core of the MD5 algorithm, this alters an existing MD5 hash to
+ * reflect the addition of 16 longwords of new data. MD5Update blocks
+ * the data and converts bytes into longwords for this routine.
+ */
+void
+yasm_md5_transform(unsigned long buf[4], const unsigned char inraw[64])
+{
unsigned long a, b, c, d;
- unsigned long in[16];
- int i;
-
- for (i = 0; i < 16; ++i)
- in[i] = getu32 (inraw + 4 * i);
-
- a = buf[0];
- b = buf[1];
- c = buf[2];
- d = buf[3];
-
- MD5STEP(F1, a, b, c, d, in[ 0]+0xd76aa478, 7);
- MD5STEP(F1, d, a, b, c, in[ 1]+0xe8c7b756, 12);
- MD5STEP(F1, c, d, a, b, in[ 2]+0x242070db, 17);
- MD5STEP(F1, b, c, d, a, in[ 3]+0xc1bdceee, 22);
- MD5STEP(F1, a, b, c, d, in[ 4]+0xf57c0faf, 7);
- MD5STEP(F1, d, a, b, c, in[ 5]+0x4787c62a, 12);
- MD5STEP(F1, c, d, a, b, in[ 6]+0xa8304613, 17);
- MD5STEP(F1, b, c, d, a, in[ 7]+0xfd469501, 22);
- MD5STEP(F1, a, b, c, d, in[ 8]+0x698098d8, 7);
- MD5STEP(F1, d, a, b, c, in[ 9]+0x8b44f7af, 12);
- MD5STEP(F1, c, d, a, b, in[10]+0xffff5bb1, 17);
- MD5STEP(F1, b, c, d, a, in[11]+0x895cd7be, 22);
- MD5STEP(F1, a, b, c, d, in[12]+0x6b901122, 7);
- MD5STEP(F1, d, a, b, c, in[13]+0xfd987193, 12);
- MD5STEP(F1, c, d, a, b, in[14]+0xa679438e, 17);
- MD5STEP(F1, b, c, d, a, in[15]+0x49b40821, 22);
-
- MD5STEP(F2, a, b, c, d, in[ 1]+0xf61e2562, 5);
- MD5STEP(F2, d, a, b, c, in[ 6]+0xc040b340, 9);
- MD5STEP(F2, c, d, a, b, in[11]+0x265e5a51, 14);
- MD5STEP(F2, b, c, d, a, in[ 0]+0xe9b6c7aa, 20);
- MD5STEP(F2, a, b, c, d, in[ 5]+0xd62f105d, 5);
- MD5STEP(F2, d, a, b, c, in[10]+0x02441453, 9);
- MD5STEP(F2, c, d, a, b, in[15]+0xd8a1e681, 14);
- MD5STEP(F2, b, c, d, a, in[ 4]+0xe7d3fbc8, 20);
- MD5STEP(F2, a, b, c, d, in[ 9]+0x21e1cde6, 5);
- MD5STEP(F2, d, a, b, c, in[14]+0xc33707d6, 9);
- MD5STEP(F2, c, d, a, b, in[ 3]+0xf4d50d87, 14);
- MD5STEP(F2, b, c, d, a, in[ 8]+0x455a14ed, 20);
- MD5STEP(F2, a, b, c, d, in[13]+0xa9e3e905, 5);
- MD5STEP(F2, d, a, b, c, in[ 2]+0xfcefa3f8, 9);
- MD5STEP(F2, c, d, a, b, in[ 7]+0x676f02d9, 14);
- MD5STEP(F2, b, c, d, a, in[12]+0x8d2a4c8a, 20);
-
- MD5STEP(F3, a, b, c, d, in[ 5]+0xfffa3942, 4);
- MD5STEP(F3, d, a, b, c, in[ 8]+0x8771f681, 11);
- MD5STEP(F3, c, d, a, b, in[11]+0x6d9d6122, 16);
- MD5STEP(F3, b, c, d, a, in[14]+0xfde5380c, 23);
- MD5STEP(F3, a, b, c, d, in[ 1]+0xa4beea44, 4);
- MD5STEP(F3, d, a, b, c, in[ 4]+0x4bdecfa9, 11);
- MD5STEP(F3, c, d, a, b, in[ 7]+0xf6bb4b60, 16);
- MD5STEP(F3, b, c, d, a, in[10]+0xbebfbc70, 23);
- MD5STEP(F3, a, b, c, d, in[13]+0x289b7ec6, 4);
- MD5STEP(F3, d, a, b, c, in[ 0]+0xeaa127fa, 11);
- MD5STEP(F3, c, d, a, b, in[ 3]+0xd4ef3085, 16);
- MD5STEP(F3, b, c, d, a, in[ 6]+0x04881d05, 23);
- MD5STEP(F3, a, b, c, d, in[ 9]+0xd9d4d039, 4);
- MD5STEP(F3, d, a, b, c, in[12]+0xe6db99e5, 11);
- MD5STEP(F3, c, d, a, b, in[15]+0x1fa27cf8, 16);
- MD5STEP(F3, b, c, d, a, in[ 2]+0xc4ac5665, 23);
-
- MD5STEP(F4, a, b, c, d, in[ 0]+0xf4292244, 6);
- MD5STEP(F4, d, a, b, c, in[ 7]+0x432aff97, 10);
- MD5STEP(F4, c, d, a, b, in[14]+0xab9423a7, 15);
- MD5STEP(F4, b, c, d, a, in[ 5]+0xfc93a039, 21);
- MD5STEP(F4, a, b, c, d, in[12]+0x655b59c3, 6);
- MD5STEP(F4, d, a, b, c, in[ 3]+0x8f0ccc92, 10);
- MD5STEP(F4, c, d, a, b, in[10]+0xffeff47d, 15);
- MD5STEP(F4, b, c, d, a, in[ 1]+0x85845dd1, 21);
- MD5STEP(F4, a, b, c, d, in[ 8]+0x6fa87e4f, 6);
- MD5STEP(F4, d, a, b, c, in[15]+0xfe2ce6e0, 10);
- MD5STEP(F4, c, d, a, b, in[ 6]+0xa3014314, 15);
- MD5STEP(F4, b, c, d, a, in[13]+0x4e0811a1, 21);
- MD5STEP(F4, a, b, c, d, in[ 4]+0xf7537e82, 6);
- MD5STEP(F4, d, a, b, c, in[11]+0xbd3af235, 10);
- MD5STEP(F4, c, d, a, b, in[ 2]+0x2ad7d2bb, 15);
- MD5STEP(F4, b, c, d, a, in[ 9]+0xeb86d391, 21);
-
- buf[0] += a;
- buf[1] += b;
- buf[2] += c;
- buf[3] += d;
-}
-#endif
-
-#ifdef TEST
-/* Simple test program. Can use it to manually run the tests from
- RFC1321 for example. */
-#include <stdio.h>
-
-int
-main (int argc, char **argv)
-{
- yasm_md5_context context;
- unsigned char checksum[16];
- int i;
- int j;
-
- if (argc < 2)
- {
- fprintf (stderr, "usage: %s string-to-hash\n", argv[0]);
- exit (1);
- }
- for (j = 1; j < argc; ++j)
- {
- printf ("MD5 (\"%s\") = ", argv[j]);
- yasm_md5_init (&context);
- yasm_md5_update (&context, argv[j], strlen (argv[j]));
- yasm_md5_final (checksum, &context);
- for (i = 0; i < 16; i++)
- {
- printf ("%02x", (unsigned int) checksum[i]);
- }
- printf ("\n");
- }
- return 0;
-}
-#endif /* TEST */
+ unsigned long in[16];
+ int i;
+
+ for (i = 0; i < 16; ++i)
+ in[i] = getu32 (inraw + 4 * i);
+
+ a = buf[0];
+ b = buf[1];
+ c = buf[2];
+ d = buf[3];
+
+ MD5STEP(F1, a, b, c, d, in[ 0]+0xd76aa478, 7);
+ MD5STEP(F1, d, a, b, c, in[ 1]+0xe8c7b756, 12);
+ MD5STEP(F1, c, d, a, b, in[ 2]+0x242070db, 17);
+ MD5STEP(F1, b, c, d, a, in[ 3]+0xc1bdceee, 22);
+ MD5STEP(F1, a, b, c, d, in[ 4]+0xf57c0faf, 7);
+ MD5STEP(F1, d, a, b, c, in[ 5]+0x4787c62a, 12);
+ MD5STEP(F1, c, d, a, b, in[ 6]+0xa8304613, 17);
+ MD5STEP(F1, b, c, d, a, in[ 7]+0xfd469501, 22);
+ MD5STEP(F1, a, b, c, d, in[ 8]+0x698098d8, 7);
+ MD5STEP(F1, d, a, b, c, in[ 9]+0x8b44f7af, 12);
+ MD5STEP(F1, c, d, a, b, in[10]+0xffff5bb1, 17);
+ MD5STEP(F1, b, c, d, a, in[11]+0x895cd7be, 22);
+ MD5STEP(F1, a, b, c, d, in[12]+0x6b901122, 7);
+ MD5STEP(F1, d, a, b, c, in[13]+0xfd987193, 12);
+ MD5STEP(F1, c, d, a, b, in[14]+0xa679438e, 17);
+ MD5STEP(F1, b, c, d, a, in[15]+0x49b40821, 22);
+
+ MD5STEP(F2, a, b, c, d, in[ 1]+0xf61e2562, 5);
+ MD5STEP(F2, d, a, b, c, in[ 6]+0xc040b340, 9);
+ MD5STEP(F2, c, d, a, b, in[11]+0x265e5a51, 14);
+ MD5STEP(F2, b, c, d, a, in[ 0]+0xe9b6c7aa, 20);
+ MD5STEP(F2, a, b, c, d, in[ 5]+0xd62f105d, 5);
+ MD5STEP(F2, d, a, b, c, in[10]+0x02441453, 9);
+ MD5STEP(F2, c, d, a, b, in[15]+0xd8a1e681, 14);
+ MD5STEP(F2, b, c, d, a, in[ 4]+0xe7d3fbc8, 20);
+ MD5STEP(F2, a, b, c, d, in[ 9]+0x21e1cde6, 5);
+ MD5STEP(F2, d, a, b, c, in[14]+0xc33707d6, 9);
+ MD5STEP(F2, c, d, a, b, in[ 3]+0xf4d50d87, 14);
+ MD5STEP(F2, b, c, d, a, in[ 8]+0x455a14ed, 20);
+ MD5STEP(F2, a, b, c, d, in[13]+0xa9e3e905, 5);
+ MD5STEP(F2, d, a, b, c, in[ 2]+0xfcefa3f8, 9);
+ MD5STEP(F2, c, d, a, b, in[ 7]+0x676f02d9, 14);
+ MD5STEP(F2, b, c, d, a, in[12]+0x8d2a4c8a, 20);
+
+ MD5STEP(F3, a, b, c, d, in[ 5]+0xfffa3942, 4);
+ MD5STEP(F3, d, a, b, c, in[ 8]+0x8771f681, 11);
+ MD5STEP(F3, c, d, a, b, in[11]+0x6d9d6122, 16);
+ MD5STEP(F3, b, c, d, a, in[14]+0xfde5380c, 23);
+ MD5STEP(F3, a, b, c, d, in[ 1]+0xa4beea44, 4);
+ MD5STEP(F3, d, a, b, c, in[ 4]+0x4bdecfa9, 11);
+ MD5STEP(F3, c, d, a, b, in[ 7]+0xf6bb4b60, 16);
+ MD5STEP(F3, b, c, d, a, in[10]+0xbebfbc70, 23);
+ MD5STEP(F3, a, b, c, d, in[13]+0x289b7ec6, 4);
+ MD5STEP(F3, d, a, b, c, in[ 0]+0xeaa127fa, 11);
+ MD5STEP(F3, c, d, a, b, in[ 3]+0xd4ef3085, 16);
+ MD5STEP(F3, b, c, d, a, in[ 6]+0x04881d05, 23);
+ MD5STEP(F3, a, b, c, d, in[ 9]+0xd9d4d039, 4);
+ MD5STEP(F3, d, a, b, c, in[12]+0xe6db99e5, 11);
+ MD5STEP(F3, c, d, a, b, in[15]+0x1fa27cf8, 16);
+ MD5STEP(F3, b, c, d, a, in[ 2]+0xc4ac5665, 23);
+
+ MD5STEP(F4, a, b, c, d, in[ 0]+0xf4292244, 6);
+ MD5STEP(F4, d, a, b, c, in[ 7]+0x432aff97, 10);
+ MD5STEP(F4, c, d, a, b, in[14]+0xab9423a7, 15);
+ MD5STEP(F4, b, c, d, a, in[ 5]+0xfc93a039, 21);
+ MD5STEP(F4, a, b, c, d, in[12]+0x655b59c3, 6);
+ MD5STEP(F4, d, a, b, c, in[ 3]+0x8f0ccc92, 10);
+ MD5STEP(F4, c, d, a, b, in[10]+0xffeff47d, 15);
+ MD5STEP(F4, b, c, d, a, in[ 1]+0x85845dd1, 21);
+ MD5STEP(F4, a, b, c, d, in[ 8]+0x6fa87e4f, 6);
+ MD5STEP(F4, d, a, b, c, in[15]+0xfe2ce6e0, 10);
+ MD5STEP(F4, c, d, a, b, in[ 6]+0xa3014314, 15);
+ MD5STEP(F4, b, c, d, a, in[13]+0x4e0811a1, 21);
+ MD5STEP(F4, a, b, c, d, in[ 4]+0xf7537e82, 6);
+ MD5STEP(F4, d, a, b, c, in[11]+0xbd3af235, 10);
+ MD5STEP(F4, c, d, a, b, in[ 2]+0x2ad7d2bb, 15);
+ MD5STEP(F4, b, c, d, a, in[ 9]+0xeb86d391, 21);
+
+ buf[0] += a;
+ buf[1] += b;
+ buf[2] += c;
+ buf[3] += d;
+}
+#endif
+
+#ifdef TEST
+/* Simple test program. Can use it to manually run the tests from
+ RFC1321 for example. */
+#include <stdio.h>
+
+int
+main (int argc, char **argv)
+{
+ yasm_md5_context context;
+ unsigned char checksum[16];
+ int i;
+ int j;
+
+ if (argc < 2)
+ {
+ fprintf (stderr, "usage: %s string-to-hash\n", argv[0]);
+ exit (1);
+ }
+ for (j = 1; j < argc; ++j)
+ {
+ printf ("MD5 (\"%s\") = ", argv[j]);
+ yasm_md5_init (&context);
+ yasm_md5_update (&context, argv[j], strlen (argv[j]));
+ yasm_md5_final (checksum, &context);
+ for (i = 0; i < 16; i++)
+ {
+ printf ("%02x", (unsigned int) checksum[i]);
+ }
+ printf ("\n");
+ }
+ return 0;
+}
+#endif /* TEST */
diff --git a/contrib/tools/yasm/libyasm/md5.h b/contrib/tools/yasm/libyasm/md5.h
index 20b4de5e7a..7872fda7a1 100644
--- a/contrib/tools/yasm/libyasm/md5.h
+++ b/contrib/tools/yasm/libyasm/md5.h
@@ -1,32 +1,32 @@
-/* See md5.c for explanation and copyright information. */
-
-#ifndef YASM_MD5_H
-#define YASM_MD5_H
-
-#ifndef YASM_LIB_DECL
-#define YASM_LIB_DECL
-#endif
-
-/* Unlike previous versions of this code, uint32 need not be exactly
- 32 bits, merely 32 bits or more. Choosing a data type which is 32
- bits instead of 64 is not important; speed is considerably more
- important. ANSI guarantees that "unsigned long" will be big enough,
- and always using it seems to have few disadvantages. */
-
-typedef struct yasm_md5_context {
- unsigned long buf[4];
- unsigned long bits[2];
- unsigned char in[64];
-} yasm_md5_context;
-
-YASM_LIB_DECL
-void yasm_md5_init(yasm_md5_context *context);
-YASM_LIB_DECL
-void yasm_md5_update(yasm_md5_context *context, unsigned char const *buf,
- unsigned long len);
-YASM_LIB_DECL
-void yasm_md5_final(unsigned char digest[16], yasm_md5_context *context);
-YASM_LIB_DECL
-void yasm_md5_transform(unsigned long buf[4], const unsigned char in[64]);
-
-#endif /* !YASM_MD5_H */
+/* See md5.c for explanation and copyright information. */
+
+#ifndef YASM_MD5_H
+#define YASM_MD5_H
+
+#ifndef YASM_LIB_DECL
+#define YASM_LIB_DECL
+#endif
+
+/* Unlike previous versions of this code, uint32 need not be exactly
+ 32 bits, merely 32 bits or more. Choosing a data type which is 32
+ bits instead of 64 is not important; speed is considerably more
+ important. ANSI guarantees that "unsigned long" will be big enough,
+ and always using it seems to have few disadvantages. */
+
+typedef struct yasm_md5_context {
+ unsigned long buf[4];
+ unsigned long bits[2];
+ unsigned char in[64];
+} yasm_md5_context;
+
+YASM_LIB_DECL
+void yasm_md5_init(yasm_md5_context *context);
+YASM_LIB_DECL
+void yasm_md5_update(yasm_md5_context *context, unsigned char const *buf,
+ unsigned long len);
+YASM_LIB_DECL
+void yasm_md5_final(unsigned char digest[16], yasm_md5_context *context);
+YASM_LIB_DECL
+void yasm_md5_transform(unsigned long buf[4], const unsigned char in[64]);
+
+#endif /* !YASM_MD5_H */
diff --git a/contrib/tools/yasm/libyasm/mergesort.c b/contrib/tools/yasm/libyasm/mergesort.c
index 8b4a7d250d..3eeaa8273b 100644
--- a/contrib/tools/yasm/libyasm/mergesort.c
+++ b/contrib/tools/yasm/libyasm/mergesort.c
@@ -1,361 +1,361 @@
-/*
- * mergesort() implementation for systems that don't have it.
- *
- * Copyright (c) 1992, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Peter McIlroy.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-#include "util.h"
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "@(#)merge.c 8.2 (Berkeley) 2/14/94";
-#endif /* LIBC_SCCS and not lint */
-
-#ifdef HAVE_MERGESORT
-#undef yasm__mergesort
-#endif
-
-#ifndef HAVE_MERGESORT
-/*
- * Hybrid exponential search/linear search merge sort with hybrid
- * natural/pairwise first pass. Requires about .3% more comparisons
- * for random data than LSMS with pairwise first pass alone.
- * It works for objects as small as two bytes.
- */
-
-#define NATURAL
-#define THRESHOLD 16 /* Best choice for natural merge cut-off. */
-
-/* #define NATURAL to get hybrid natural merge.
- * (The default is pairwise merging.)
- */
-
-#include <errno.h>
-#include <string.h>
-
-static void setup(unsigned char *, unsigned char *, size_t, size_t,
- int (*)(const void *, const void *));
-static void insertionsort(unsigned char *, size_t, size_t,
- int (*)(const void *, const void *));
-
-#define ISIZE sizeof(int)
-#define PSIZE sizeof(unsigned char *)
-#define ICOPY_LIST(src, dst, last) \
- do \
- *(int*)dst = *(int*)src, src += ISIZE, dst += ISIZE; \
- while(src < last)
-#define ICOPY_ELT(src, dst, i) \
- do \
- *(int*) dst = *(int*) src, src += ISIZE, dst += ISIZE; \
- while (i -= ISIZE)
-
-#define CCOPY_LIST(src, dst, last) \
- do \
- *dst++ = *src++; \
- while (src < last)
-#define CCOPY_ELT(src, dst, i) \
- do \
- *dst++ = *src++; \
- while (i -= 1)
-
-/*
- * Find the next possible pointer head. (Trickery for forcing an array
- * to do double duty as a linked list when objects do not align with word
- * boundaries.
- */
-/* Assumption: PSIZE is a power of 2. */
-#define EVAL(p) (unsigned char **) \
- ((unsigned char *)0 + \
- (((unsigned char *)p + PSIZE - 1 - (unsigned char *) 0) & ~(PSIZE - 1)))
-#endif /*HAVE_MERGESORT*/
-
-/*
- * Arguments are as for qsort.
- */
-int
-yasm__mergesort(void *base, size_t nmemb, size_t size,
- int (*cmp)(const void *, const void *))
-{
-#ifdef HAVE_MERGESORT
- return mergesort(base, nmemb, size, cmp);
-#else
- size_t i;
- int sense;
- int big, iflag;
- unsigned char *f1, *f2, *t, *b, *tp2, *q, *l1, *l2;
- unsigned char *list2, *list1, *p2, *p, *last, **p1;
-
- if (size < PSIZE / 2) { /* Pointers must fit into 2 * size. */
-#ifdef EINVAL
- errno = EINVAL;
-#endif
- return (-1);
- }
-
- if (nmemb == 0)
- return (0);
-
- /*
- * XXX
- * Stupid subtraction for the Cray.
- */
- iflag = 0;
- if (!(size % ISIZE) && !(((char *)base - (char *)0) % ISIZE))
- iflag = 1;
-
- if ((list2 = yasm_xmalloc(nmemb * size + PSIZE)) == NULL)
- return (-1);
-
- list1 = base;
- setup(list1, list2, nmemb, size, cmp);
- last = list2 + nmemb * size;
- i = 0;
- big = 0;
- while (*EVAL(list2) != last) {
- l2 = list1;
- p1 = EVAL(list1);
- for (tp2 = p2 = list2; p2 != last; p1 = EVAL(l2)) {
- p2 = *EVAL(p2);
- f1 = l2;
- f2 = l1 = list1 + (p2 - list2);
- if (p2 != last)
- p2 = *EVAL(p2);
- l2 = list1 + (p2 - list2);
- while (f1 < l1 && f2 < l2) {
- if ((*cmp)(f1, f2) <= 0) {
- q = f2;
- b = f1, t = l1;
- sense = -1;
- } else {
- q = f1;
- b = f2, t = l2;
- sense = 0;
- }
- if (!big) { /* here i = 0 */
- while ((b += size) < t && cmp(q, b) >sense)
- if (++i == 6) {
- big = 1;
- goto EXPONENTIAL;
- }
- } else {
-EXPONENTIAL: for (i = size; ; i <<= 1)
- if ((p = (b + i)) >= t) {
- if ((p = t - size) > b &&
- (*cmp)(q, p) <= sense)
- t = p;
- else
- b = p;
- break;
- } else if ((*cmp)(q, p) <= sense) {
- t = p;
- if (i == size)
- big = 0;
- goto FASTCASE;
- } else
- b = p;
- while (t > b+size) {
- i = (((t - b) / size) >> 1) * size;
- if ((*cmp)(q, p = b + i) <= sense)
- t = p;
- else
- b = p;
- }
- goto COPY;
-FASTCASE: while (i > size)
- if ((*cmp)(q,
- p = b + (i >>= 1)) <= sense)
- t = p;
- else
- b = p;
-COPY: b = t;
- }
- i = size;
- if (q == f1) {
- if (iflag) {
- ICOPY_LIST(f2, tp2, b);
- ICOPY_ELT(f1, tp2, i);
- } else {
- CCOPY_LIST(f2, tp2, b);
- CCOPY_ELT(f1, tp2, i);
- }
- } else {
- if (iflag) {
- ICOPY_LIST(f1, tp2, b);
- ICOPY_ELT(f2, tp2, i);
- } else {
- CCOPY_LIST(f1, tp2, b);
- CCOPY_ELT(f2, tp2, i);
- }
- }
- }
- if (f2 < l2) {
- if (iflag)
- ICOPY_LIST(f2, tp2, l2);
- else
- CCOPY_LIST(f2, tp2, l2);
- } else if (f1 < l1) {
- if (iflag)
- ICOPY_LIST(f1, tp2, l1);
- else
- CCOPY_LIST(f1, tp2, l1);
- }
- *p1 = l2;
- }
- tp2 = list1; /* swap list1, list2 */
- list1 = list2;
- list2 = tp2;
- last = list2 + nmemb*size;
- }
- if (base == list2) {
- memmove(list2, list1, nmemb*size);
- list2 = list1;
- }
- yasm_xfree(list2);
- return (0);
-#endif /*HAVE_MERGESORT*/
-}
-
-#ifndef HAVE_MERGESORT
-
-#define swap(a, b) { \
- s = b; \
- i = size; \
- do { \
- tmp = *a; *a++ = *s; *s++ = tmp; \
- } while (--i); \
- a -= size; \
- }
-#define reverse(bot, top) { \
- s = top; \
- do { \
- i = size; \
- do { \
- tmp = *bot; *bot++ = *s; *s++ = tmp; \
- } while (--i); \
- s -= size2; \
- } while(bot < s); \
-}
-
-/*
- * Optional hybrid natural/pairwise first pass. Eats up list1 in runs of
- * increasing order, list2 in a corresponding linked list. Checks for runs
- * when THRESHOLD/2 pairs compare with same sense. (Only used when NATURAL
- * is defined. Otherwise simple pairwise merging is used.)
- */
-void
-setup(unsigned char *list1, unsigned char *list2, size_t n, size_t size,
- int (*cmp)(const void *, const void *))
-{
- size_t i;
- unsigned int tmp;
- int length, sense;
- size_t size2;
- unsigned char *f1, *f2, *s, *l2, *last, *p2;
-
- size2 = size*2;
- if (n <= 5) {
- insertionsort(list1, n, size, cmp);
- *EVAL(list2) = (unsigned char*) list2 + n*size;
- return;
- }
- /*
- * Avoid running pointers out of bounds; limit n to evens
- * for simplicity.
- */
- i = 4 + (n & 1);
- insertionsort(list1 + (n - i) * size, i, size, cmp);
- last = list1 + size * (n - i);
- *EVAL(list2 + (last - list1)) = list2 + n * size;
-
-#ifdef NATURAL
- p2 = list2;
- f1 = list1;
- sense = (cmp(f1, f1 + size) > 0);
- for (; f1 < last; sense = !sense) {
- length = 2;
- /* Find pairs with same sense. */
- for (f2 = f1 + size2; f2 < last; f2 += size2) {
- if ((cmp(f2, f2+ size) > 0) != sense)
- break;
- length += 2;
- }
- if (length < THRESHOLD) { /* Pairwise merge */
- do {
- p2 = *EVAL(p2) = f1 + size2 - list1 + list2;
- if (sense > 0)
- swap (f1, f1 + size);
- } while ((f1 += size2) < f2);
- } else { /* Natural merge */
- l2 = f2;
- for (f2 = f1 + size2; f2 < l2; f2 += size2) {
- if ((cmp(f2-size, f2) > 0) != sense) {
- p2 = *EVAL(p2) = f2 - list1 + list2;
- if (sense > 0)
- reverse(f1, f2-size);
- f1 = f2;
- }
- }
- if (sense > 0)
- reverse (f1, f2-size);
- f1 = f2;
- if (f2 < last || cmp(f2 - size, f2) > 0)
- p2 = *EVAL(p2) = f2 - list1 + list2;
- else
- p2 = *EVAL(p2) = list2 + n*size;
- }
- }
-#else /* pairwise merge only. */
- for (f1 = list1, p2 = list2; f1 < last; f1 += size2) {
- p2 = *EVAL(p2) = p2 + size2;
- if (cmp (f1, f1 + size) > 0)
- swap(f1, f1 + size);
- }
-#endif /* NATURAL */
-}
-
-/*
- * This is to avoid out-of-bounds addresses in sorting the
- * last 4 elements.
- */
-static void
-insertionsort(unsigned char *a, size_t n, size_t size,
- int (*cmp)(const void *, const void *))
-{
- unsigned char *ai, *s, *t, *u, tmp;
- size_t i;
-
- for (ai = a+size; --n >= 1; ai += size)
- for (t = ai; t > a; t -= size) {
- u = t - size;
- if (cmp(u, t) <= 0)
- break;
- swap(u, t);
- }
-}
-#endif /*HAVE_MERGESORT*/
+/*
+ * mergesort() implementation for systems that don't have it.
+ *
+ * Copyright (c) 1992, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Peter McIlroy.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#include "util.h"
+
+#if defined(LIBC_SCCS) && !defined(lint)
+static char sccsid[] = "@(#)merge.c 8.2 (Berkeley) 2/14/94";
+#endif /* LIBC_SCCS and not lint */
+
+#ifdef HAVE_MERGESORT
+#undef yasm__mergesort
+#endif
+
+#ifndef HAVE_MERGESORT
+/*
+ * Hybrid exponential search/linear search merge sort with hybrid
+ * natural/pairwise first pass. Requires about .3% more comparisons
+ * for random data than LSMS with pairwise first pass alone.
+ * It works for objects as small as two bytes.
+ */
+
+#define NATURAL
+#define THRESHOLD 16 /* Best choice for natural merge cut-off. */
+
+/* #define NATURAL to get hybrid natural merge.
+ * (The default is pairwise merging.)
+ */
+
+#include <errno.h>
+#include <string.h>
+
+static void setup(unsigned char *, unsigned char *, size_t, size_t,
+ int (*)(const void *, const void *));
+static void insertionsort(unsigned char *, size_t, size_t,
+ int (*)(const void *, const void *));
+
+#define ISIZE sizeof(int)
+#define PSIZE sizeof(unsigned char *)
+#define ICOPY_LIST(src, dst, last) \
+ do \
+ *(int*)dst = *(int*)src, src += ISIZE, dst += ISIZE; \
+ while(src < last)
+#define ICOPY_ELT(src, dst, i) \
+ do \
+ *(int*) dst = *(int*) src, src += ISIZE, dst += ISIZE; \
+ while (i -= ISIZE)
+
+#define CCOPY_LIST(src, dst, last) \
+ do \
+ *dst++ = *src++; \
+ while (src < last)
+#define CCOPY_ELT(src, dst, i) \
+ do \
+ *dst++ = *src++; \
+ while (i -= 1)
+
+/*
+ * Find the next possible pointer head. (Trickery for forcing an array
+ * to do double duty as a linked list when objects do not align with word
+ * boundaries.
+ */
+/* Assumption: PSIZE is a power of 2. */
+#define EVAL(p) (unsigned char **) \
+ ((unsigned char *)0 + \
+ (((unsigned char *)p + PSIZE - 1 - (unsigned char *) 0) & ~(PSIZE - 1)))
+#endif /*HAVE_MERGESORT*/
+
+/*
+ * Arguments are as for qsort.
+ */
+int
+yasm__mergesort(void *base, size_t nmemb, size_t size,
+ int (*cmp)(const void *, const void *))
+{
+#ifdef HAVE_MERGESORT
+ return mergesort(base, nmemb, size, cmp);
+#else
+ size_t i;
+ int sense;
+ int big, iflag;
+ unsigned char *f1, *f2, *t, *b, *tp2, *q, *l1, *l2;
+ unsigned char *list2, *list1, *p2, *p, *last, **p1;
+
+ if (size < PSIZE / 2) { /* Pointers must fit into 2 * size. */
+#ifdef EINVAL
+ errno = EINVAL;
+#endif
+ return (-1);
+ }
+
+ if (nmemb == 0)
+ return (0);
+
+ /*
+ * XXX
+ * Stupid subtraction for the Cray.
+ */
+ iflag = 0;
+ if (!(size % ISIZE) && !(((char *)base - (char *)0) % ISIZE))
+ iflag = 1;
+
+ if ((list2 = yasm_xmalloc(nmemb * size + PSIZE)) == NULL)
+ return (-1);
+
+ list1 = base;
+ setup(list1, list2, nmemb, size, cmp);
+ last = list2 + nmemb * size;
+ i = 0;
+ big = 0;
+ while (*EVAL(list2) != last) {
+ l2 = list1;
+ p1 = EVAL(list1);
+ for (tp2 = p2 = list2; p2 != last; p1 = EVAL(l2)) {
+ p2 = *EVAL(p2);
+ f1 = l2;
+ f2 = l1 = list1 + (p2 - list2);
+ if (p2 != last)
+ p2 = *EVAL(p2);
+ l2 = list1 + (p2 - list2);
+ while (f1 < l1 && f2 < l2) {
+ if ((*cmp)(f1, f2) <= 0) {
+ q = f2;
+ b = f1, t = l1;
+ sense = -1;
+ } else {
+ q = f1;
+ b = f2, t = l2;
+ sense = 0;
+ }
+ if (!big) { /* here i = 0 */
+ while ((b += size) < t && cmp(q, b) >sense)
+ if (++i == 6) {
+ big = 1;
+ goto EXPONENTIAL;
+ }
+ } else {
+EXPONENTIAL: for (i = size; ; i <<= 1)
+ if ((p = (b + i)) >= t) {
+ if ((p = t - size) > b &&
+ (*cmp)(q, p) <= sense)
+ t = p;
+ else
+ b = p;
+ break;
+ } else if ((*cmp)(q, p) <= sense) {
+ t = p;
+ if (i == size)
+ big = 0;
+ goto FASTCASE;
+ } else
+ b = p;
+ while (t > b+size) {
+ i = (((t - b) / size) >> 1) * size;
+ if ((*cmp)(q, p = b + i) <= sense)
+ t = p;
+ else
+ b = p;
+ }
+ goto COPY;
+FASTCASE: while (i > size)
+ if ((*cmp)(q,
+ p = b + (i >>= 1)) <= sense)
+ t = p;
+ else
+ b = p;
+COPY: b = t;
+ }
+ i = size;
+ if (q == f1) {
+ if (iflag) {
+ ICOPY_LIST(f2, tp2, b);
+ ICOPY_ELT(f1, tp2, i);
+ } else {
+ CCOPY_LIST(f2, tp2, b);
+ CCOPY_ELT(f1, tp2, i);
+ }
+ } else {
+ if (iflag) {
+ ICOPY_LIST(f1, tp2, b);
+ ICOPY_ELT(f2, tp2, i);
+ } else {
+ CCOPY_LIST(f1, tp2, b);
+ CCOPY_ELT(f2, tp2, i);
+ }
+ }
+ }
+ if (f2 < l2) {
+ if (iflag)
+ ICOPY_LIST(f2, tp2, l2);
+ else
+ CCOPY_LIST(f2, tp2, l2);
+ } else if (f1 < l1) {
+ if (iflag)
+ ICOPY_LIST(f1, tp2, l1);
+ else
+ CCOPY_LIST(f1, tp2, l1);
+ }
+ *p1 = l2;
+ }
+ tp2 = list1; /* swap list1, list2 */
+ list1 = list2;
+ list2 = tp2;
+ last = list2 + nmemb*size;
+ }
+ if (base == list2) {
+ memmove(list2, list1, nmemb*size);
+ list2 = list1;
+ }
+ yasm_xfree(list2);
+ return (0);
+#endif /*HAVE_MERGESORT*/
+}
+
+#ifndef HAVE_MERGESORT
+
+#define swap(a, b) { \
+ s = b; \
+ i = size; \
+ do { \
+ tmp = *a; *a++ = *s; *s++ = tmp; \
+ } while (--i); \
+ a -= size; \
+ }
+#define reverse(bot, top) { \
+ s = top; \
+ do { \
+ i = size; \
+ do { \
+ tmp = *bot; *bot++ = *s; *s++ = tmp; \
+ } while (--i); \
+ s -= size2; \
+ } while(bot < s); \
+}
+
+/*
+ * Optional hybrid natural/pairwise first pass. Eats up list1 in runs of
+ * increasing order, list2 in a corresponding linked list. Checks for runs
+ * when THRESHOLD/2 pairs compare with same sense. (Only used when NATURAL
+ * is defined. Otherwise simple pairwise merging is used.)
+ */
+void
+setup(unsigned char *list1, unsigned char *list2, size_t n, size_t size,
+ int (*cmp)(const void *, const void *))
+{
+ size_t i;
+ unsigned int tmp;
+ int length, sense;
+ size_t size2;
+ unsigned char *f1, *f2, *s, *l2, *last, *p2;
+
+ size2 = size*2;
+ if (n <= 5) {
+ insertionsort(list1, n, size, cmp);
+ *EVAL(list2) = (unsigned char*) list2 + n*size;
+ return;
+ }
+ /*
+ * Avoid running pointers out of bounds; limit n to evens
+ * for simplicity.
+ */
+ i = 4 + (n & 1);
+ insertionsort(list1 + (n - i) * size, i, size, cmp);
+ last = list1 + size * (n - i);
+ *EVAL(list2 + (last - list1)) = list2 + n * size;
+
+#ifdef NATURAL
+ p2 = list2;
+ f1 = list1;
+ sense = (cmp(f1, f1 + size) > 0);
+ for (; f1 < last; sense = !sense) {
+ length = 2;
+ /* Find pairs with same sense. */
+ for (f2 = f1 + size2; f2 < last; f2 += size2) {
+ if ((cmp(f2, f2+ size) > 0) != sense)
+ break;
+ length += 2;
+ }
+ if (length < THRESHOLD) { /* Pairwise merge */
+ do {
+ p2 = *EVAL(p2) = f1 + size2 - list1 + list2;
+ if (sense > 0)
+ swap (f1, f1 + size);
+ } while ((f1 += size2) < f2);
+ } else { /* Natural merge */
+ l2 = f2;
+ for (f2 = f1 + size2; f2 < l2; f2 += size2) {
+ if ((cmp(f2-size, f2) > 0) != sense) {
+ p2 = *EVAL(p2) = f2 - list1 + list2;
+ if (sense > 0)
+ reverse(f1, f2-size);
+ f1 = f2;
+ }
+ }
+ if (sense > 0)
+ reverse (f1, f2-size);
+ f1 = f2;
+ if (f2 < last || cmp(f2 - size, f2) > 0)
+ p2 = *EVAL(p2) = f2 - list1 + list2;
+ else
+ p2 = *EVAL(p2) = list2 + n*size;
+ }
+ }
+#else /* pairwise merge only. */
+ for (f1 = list1, p2 = list2; f1 < last; f1 += size2) {
+ p2 = *EVAL(p2) = p2 + size2;
+ if (cmp (f1, f1 + size) > 0)
+ swap(f1, f1 + size);
+ }
+#endif /* NATURAL */
+}
+
+/*
+ * This is to avoid out-of-bounds addresses in sorting the
+ * last 4 elements.
+ */
+static void
+insertionsort(unsigned char *a, size_t n, size_t size,
+ int (*cmp)(const void *, const void *))
+{
+ unsigned char *ai, *s, *t, *u, tmp;
+ size_t i;
+
+ for (ai = a+size; --n >= 1; ai += size)
+ for (t = ai; t > a; t -= size) {
+ u = t - size;
+ if (cmp(u, t) <= 0)
+ break;
+ swap(u, t);
+ }
+}
+#endif /*HAVE_MERGESORT*/
diff --git a/contrib/tools/yasm/libyasm/module.h b/contrib/tools/yasm/libyasm/module.h
index 5e19e26ab1..220017deec 100644
--- a/contrib/tools/yasm/libyasm/module.h
+++ b/contrib/tools/yasm/libyasm/module.h
@@ -1,82 +1,82 @@
-/*
- * YASM module loader header file
- *
- * Copyright (C) 2002-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef YASM_MODULE_H
-#define YASM_MODULE_H
-
-#ifndef YASM_LIB_DECL
-#define YASM_LIB_DECL
-#endif
-
-typedef enum yasm_module_type {
- YASM_MODULE_ARCH = 0,
- YASM_MODULE_DBGFMT,
- YASM_MODULE_OBJFMT,
- YASM_MODULE_LISTFMT,
- YASM_MODULE_PARSER,
- YASM_MODULE_PREPROC
-} yasm_module_type;
-
-YASM_LIB_DECL
-/*@dependent@*/ /*@null@*/ void *yasm_load_module
- (yasm_module_type type, const char *keyword);
-
-#define yasm_load_arch(keyword) \
- yasm_load_module(YASM_MODULE_ARCH, keyword)
-#define yasm_load_dbgfmt(keyword) \
- yasm_load_module(YASM_MODULE_DBGFMT, keyword)
-#define yasm_load_objfmt(keyword) \
- yasm_load_module(YASM_MODULE_OBJFMT, keyword)
-#define yasm_load_listfmt(keyword) \
- yasm_load_module(YASM_MODULE_LISTFMT, keyword)
-#define yasm_load_parser(keyword) \
- yasm_load_module(YASM_MODULE_PARSER, keyword)
-#define yasm_load_preproc(keyword) \
- yasm_load_module(YASM_MODULE_PREPROC, keyword)
-
-YASM_LIB_DECL
-void yasm_list_modules
- (yasm_module_type type,
- void (*printfunc) (const char *name, const char *keyword));
-
-#define yasm_list_arch(func) \
- yasm_list_modules(YASM_MODULE_ARCH, func)
-#define yasm_list_dbgfmt(func) \
- yasm_list_modules(YASM_MODULE_DBGFMT, func)
-#define yasm_list_objfmt(func) \
- yasm_list_modules(YASM_MODULE_OBJFMT, func)
-#define yasm_list_listfmt(func) \
- yasm_list_modules(YASM_MODULE_LISTFMT, func)
-#define yasm_list_parser(func) \
- yasm_list_modules(YASM_MODULE_PARSER, func)
-#define yasm_list_preproc(func) \
- yasm_list_modules(YASM_MODULE_PREPROC, func)
-
-YASM_LIB_DECL
-void yasm_register_module(yasm_module_type type, const char *keyword,
- void *data);
-
-#endif
+/*
+ * YASM module loader header file
+ *
+ * Copyright (C) 2002-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef YASM_MODULE_H
+#define YASM_MODULE_H
+
+#ifndef YASM_LIB_DECL
+#define YASM_LIB_DECL
+#endif
+
+typedef enum yasm_module_type {
+ YASM_MODULE_ARCH = 0,
+ YASM_MODULE_DBGFMT,
+ YASM_MODULE_OBJFMT,
+ YASM_MODULE_LISTFMT,
+ YASM_MODULE_PARSER,
+ YASM_MODULE_PREPROC
+} yasm_module_type;
+
+YASM_LIB_DECL
+/*@dependent@*/ /*@null@*/ void *yasm_load_module
+ (yasm_module_type type, const char *keyword);
+
+#define yasm_load_arch(keyword) \
+ yasm_load_module(YASM_MODULE_ARCH, keyword)
+#define yasm_load_dbgfmt(keyword) \
+ yasm_load_module(YASM_MODULE_DBGFMT, keyword)
+#define yasm_load_objfmt(keyword) \
+ yasm_load_module(YASM_MODULE_OBJFMT, keyword)
+#define yasm_load_listfmt(keyword) \
+ yasm_load_module(YASM_MODULE_LISTFMT, keyword)
+#define yasm_load_parser(keyword) \
+ yasm_load_module(YASM_MODULE_PARSER, keyword)
+#define yasm_load_preproc(keyword) \
+ yasm_load_module(YASM_MODULE_PREPROC, keyword)
+
+YASM_LIB_DECL
+void yasm_list_modules
+ (yasm_module_type type,
+ void (*printfunc) (const char *name, const char *keyword));
+
+#define yasm_list_arch(func) \
+ yasm_list_modules(YASM_MODULE_ARCH, func)
+#define yasm_list_dbgfmt(func) \
+ yasm_list_modules(YASM_MODULE_DBGFMT, func)
+#define yasm_list_objfmt(func) \
+ yasm_list_modules(YASM_MODULE_OBJFMT, func)
+#define yasm_list_listfmt(func) \
+ yasm_list_modules(YASM_MODULE_LISTFMT, func)
+#define yasm_list_parser(func) \
+ yasm_list_modules(YASM_MODULE_PARSER, func)
+#define yasm_list_preproc(func) \
+ yasm_list_modules(YASM_MODULE_PREPROC, func)
+
+YASM_LIB_DECL
+void yasm_register_module(yasm_module_type type, const char *keyword,
+ void *data);
+
+#endif
diff --git a/contrib/tools/yasm/libyasm/objfmt.h b/contrib/tools/yasm/libyasm/objfmt.h
index 624d698a99..a8b5f8a161 100644
--- a/contrib/tools/yasm/libyasm/objfmt.h
+++ b/contrib/tools/yasm/libyasm/objfmt.h
@@ -1,128 +1,128 @@
-/**
- * \file libyasm/objfmt.h
- * \brief YASM object format module interface.
- *
- * \license
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- * \endlicense
- */
-#ifndef YASM_OBJFMT_H
-#define YASM_OBJFMT_H
-
-#ifndef YASM_DOXYGEN
-/** Base #yasm_objfmt structure. Must be present as the first element in any
- * #yasm_objfmt implementation.
- */
-typedef struct yasm_objfmt_base {
- /** #yasm_objfmt_module implementation for this object format. */
- const struct yasm_objfmt_module *module;
-} yasm_objfmt_base;
-#endif
-
-/** Object format module interface. */
-struct yasm_objfmt_module {
- /** One-line description of the object format. */
- const char *name;
-
- /** Keyword used to select object format. */
- const char *keyword;
-
- /** Default output file extension (without the '.').
- * NULL means no extension, with no '.', while "" includes the '.'.
- */
- /*@null@*/ const char *extension;
-
- /** Default (starting) x86 BITS setting. This only appies to the x86
- * architecture; other architectures ignore this setting.
- */
- const unsigned char default_x86_mode_bits;
-
- /** If @ signs should be legal in identifiers. */
- const unsigned char id_at_ok;
-
- /** NULL-terminated list of debug format (yasm_dbgfmt) keywords that are
- * valid to use with this object format. The null debug format
- * (null_dbgfmt, "null") should always be in this list so it's possible to
- * have no debug output.
- */
- const char **dbgfmt_keywords;
-
- /** Default debug format keyword (set even if there's only one available to
- * use).
- */
- const char *default_dbgfmt_keyword;
-
- /** NULL-terminated list of directives. NULL if none. */
- /*@null@*/ const yasm_directive *directives;
-
- /** NULL-terminated list of standard macro lookups. NULL if none. */
- const yasm_stdmac *stdmacs;
-
- /** Create object format.
- * Module-level implementation of yasm_objfmt_create().
- * Call yasm_objfmt_create() instead of calling this function.
- * \param object object
- * \param a architecture in use
- * \return NULL if architecture/machine combination not supported.
- */
- /*@null@*/ /*@only@*/ yasm_objfmt * (*create) (yasm_object *object);
-
- /** Module-level implementation of yasm_objfmt_output().
- * Call yasm_objfmt_output() instead of calling this function.
- */
- void (*output) (yasm_object *o, FILE *f, int all_syms,
- yasm_errwarns *errwarns);
-
- /** Module-level implementation of yasm_objfmt_destroy().
- * Call yasm_objfmt_destroy() instead of calling this function.
- */
- void (*destroy) (/*@only@*/ yasm_objfmt *objfmt);
-
- /** Module-level implementation of yasm_objfmt_add_default_section().
- * Call yasm_objfmt_add_default_section() instead of calling this function.
- */
- yasm_section * (*add_default_section) (yasm_object *object);
-
- /** Module-level implementation of yasm_objfmt_init_new_section().
- * Call yasm_objfmt_init_new_section() instead of calling this function.
- */
- void (*init_new_section) (yasm_section *section, unsigned long line);
-
- /** Module-level implementation of yasm_objfmt_section_switch().
- * Call yasm_objfmt_section_switch() instead of calling this function.
- */
- /*@observer@*/ /*@null@*/ yasm_section *
- (*section_switch)(yasm_object *object, yasm_valparamhead *valparams,
- /*@null@*/ yasm_valparamhead *objext_valparams,
- unsigned long line);
-
- /** Module-level implementation of yasm_objfmt_get_special_sym().
- * Call yasm_objfmt_get_special_sym() instead of calling this function.
- */
- /*@observer@*/ /*@null@*/ yasm_symrec *
- (*get_special_sym)(yasm_object *object, const char *name,
- const char *parser);
+/**
+ * \file libyasm/objfmt.h
+ * \brief YASM object format module interface.
+ *
+ * \license
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * - Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ * \endlicense
+ */
+#ifndef YASM_OBJFMT_H
+#define YASM_OBJFMT_H
+
+#ifndef YASM_DOXYGEN
+/** Base #yasm_objfmt structure. Must be present as the first element in any
+ * #yasm_objfmt implementation.
+ */
+typedef struct yasm_objfmt_base {
+ /** #yasm_objfmt_module implementation for this object format. */
+ const struct yasm_objfmt_module *module;
+} yasm_objfmt_base;
+#endif
+
+/** Object format module interface. */
+struct yasm_objfmt_module {
+ /** One-line description of the object format. */
+ const char *name;
+
+ /** Keyword used to select object format. */
+ const char *keyword;
+
+ /** Default output file extension (without the '.').
+ * NULL means no extension, with no '.', while "" includes the '.'.
+ */
+ /*@null@*/ const char *extension;
+
+ /** Default (starting) x86 BITS setting. This only appies to the x86
+ * architecture; other architectures ignore this setting.
+ */
+ const unsigned char default_x86_mode_bits;
+
+ /** If @ signs should be legal in identifiers. */
+ const unsigned char id_at_ok;
+
+ /** NULL-terminated list of debug format (yasm_dbgfmt) keywords that are
+ * valid to use with this object format. The null debug format
+ * (null_dbgfmt, "null") should always be in this list so it's possible to
+ * have no debug output.
+ */
+ const char **dbgfmt_keywords;
+
+ /** Default debug format keyword (set even if there's only one available to
+ * use).
+ */
+ const char *default_dbgfmt_keyword;
+
+ /** NULL-terminated list of directives. NULL if none. */
+ /*@null@*/ const yasm_directive *directives;
+
+ /** NULL-terminated list of standard macro lookups. NULL if none. */
+ const yasm_stdmac *stdmacs;
+
+ /** Create object format.
+ * Module-level implementation of yasm_objfmt_create().
+ * Call yasm_objfmt_create() instead of calling this function.
+ * \param object object
+ * \param a architecture in use
+ * \return NULL if architecture/machine combination not supported.
+ */
+ /*@null@*/ /*@only@*/ yasm_objfmt * (*create) (yasm_object *object);
+
+ /** Module-level implementation of yasm_objfmt_output().
+ * Call yasm_objfmt_output() instead of calling this function.
+ */
+ void (*output) (yasm_object *o, FILE *f, int all_syms,
+ yasm_errwarns *errwarns);
+
+ /** Module-level implementation of yasm_objfmt_destroy().
+ * Call yasm_objfmt_destroy() instead of calling this function.
+ */
+ void (*destroy) (/*@only@*/ yasm_objfmt *objfmt);
+
+ /** Module-level implementation of yasm_objfmt_add_default_section().
+ * Call yasm_objfmt_add_default_section() instead of calling this function.
+ */
+ yasm_section * (*add_default_section) (yasm_object *object);
+
+ /** Module-level implementation of yasm_objfmt_init_new_section().
+ * Call yasm_objfmt_init_new_section() instead of calling this function.
+ */
+ void (*init_new_section) (yasm_section *section, unsigned long line);
+
+ /** Module-level implementation of yasm_objfmt_section_switch().
+ * Call yasm_objfmt_section_switch() instead of calling this function.
+ */
+ /*@observer@*/ /*@null@*/ yasm_section *
+ (*section_switch)(yasm_object *object, yasm_valparamhead *valparams,
+ /*@null@*/ yasm_valparamhead *objext_valparams,
+ unsigned long line);
+
+ /** Module-level implementation of yasm_objfmt_get_special_sym().
+ * Call yasm_objfmt_get_special_sym() instead of calling this function.
+ */
+ /*@observer@*/ /*@null@*/ yasm_symrec *
+ (*get_special_sym)(yasm_object *object, const char *name,
+ const char *parser);
/**
* --replace params
@@ -132,94 +132,94 @@ struct yasm_objfmt_module {
* Number of elements in replace_map
*/
int replace_map_size;
-};
-
-/** Create object format.
- * \param module object format module
- * \param object object
- * \return NULL if architecture/machine combination not supported.
- */
-/*@null@*/ /*@only@*/ yasm_objfmt *yasm_objfmt_create
- (const yasm_objfmt_module *module, yasm_object *object);
-
-/** Write out (post-optimized) sections to the object file.
- * This function may call yasm_symrec_* functions as necessary (including
- * yasm_symrec_traverse()) to retrieve symbolic information.
- * \param object object
- * \param f output object file
- * \param all_syms if nonzero, all symbols should be included in
- * the object file
- * \param errwarns error/warning set
- * \note Errors and warnings are stored into errwarns.
- */
-void yasm_objfmt_output(yasm_object *object, FILE *f, int all_syms,
- yasm_errwarns *errwarns);
-
-/** Cleans up any allocated object format memory.
- * \param objfmt object format
- */
-void yasm_objfmt_destroy(/*@only@*/ yasm_objfmt *objfmt);
-
-/** Add a default section to an object.
- * \param object object
- * \return Default section.
- */
-yasm_section *yasm_objfmt_add_default_section(yasm_object *object);
-
-/** Initialize the object-format specific portion of a section. Called
- * by yasm_object_get_general(); in general should not be directly called.
- * \param section section
- * \param line virtual line (from yasm_linemap)
- */
-void yasm_objfmt_init_new_section(yasm_object *object, unsigned long line);
-
-/** Switch object file sections. The first val of the valparams should
- * be the section name. Calls yasm_object_get_general() to actually get
- * the section.
- * \param object object
- * \param valparams value/parameters
- * \param objext_valparams object format-specific value/parameters
- * \param line virtual line (from yasm_linemap)
- * \return NULL on error, otherwise new section.
- */
-/*@observer@*/ /*@null@*/ yasm_section *yasm_objfmt_section_switch
- (yasm_object *object, yasm_valparamhead *valparams,
- /*@null@*/ yasm_valparamhead *objext_valparams, unsigned long line);
-
-/** Get a special symbol. Special symbols are generally used to generate
- * special relocation types via the WRT mechanism.
- * \param object object
- * \param name symbol name (not including any parser-specific prefix)
- * \param parser parser keyword
- * \return NULL if unrecognized, otherwise special symbol.
- */
-/*@observer@*/ /*@null@*/ yasm_symrec *yasm_objfmt_get_special_sym
- (yasm_object *object, const char *name, const char *parser);
-
-#ifndef YASM_DOXYGEN
-
-/* Inline macro implementations for objfmt functions */
-
-#define yasm_objfmt_create(module, object) module->create(object)
-
-#define yasm_objfmt_output(object, f, all_syms, ews) \
- ((yasm_objfmt_base *)((object)->objfmt))->module->output \
- (object, f, all_syms, ews)
-#define yasm_objfmt_destroy(objfmt) \
- ((yasm_objfmt_base *)objfmt)->module->destroy(objfmt)
-#define yasm_objfmt_section_switch(object, vpms, oe_vpms, line) \
- ((yasm_objfmt_base *)((object)->objfmt))->module->section_switch \
- (object, vpms, oe_vpms, line)
-#define yasm_objfmt_add_default_section(object) \
- ((yasm_objfmt_base *)((object)->objfmt))->module->add_default_section \
- (object)
-#define yasm_objfmt_init_new_section(section, line) \
- ((yasm_objfmt_base *)((object)->objfmt))->module->init_new_section \
- (section, line)
-#define yasm_objfmt_get_special_sym(object, name, parser) \
- ((yasm_objfmt_base *)((object)->objfmt))->module->get_special_sym \
- (object, name, parser)
-
-#endif
-
-#endif
+};
+
+/** Create object format.
+ * \param module object format module
+ * \param object object
+ * \return NULL if architecture/machine combination not supported.
+ */
+/*@null@*/ /*@only@*/ yasm_objfmt *yasm_objfmt_create
+ (const yasm_objfmt_module *module, yasm_object *object);
+
+/** Write out (post-optimized) sections to the object file.
+ * This function may call yasm_symrec_* functions as necessary (including
+ * yasm_symrec_traverse()) to retrieve symbolic information.
+ * \param object object
+ * \param f output object file
+ * \param all_syms if nonzero, all symbols should be included in
+ * the object file
+ * \param errwarns error/warning set
+ * \note Errors and warnings are stored into errwarns.
+ */
+void yasm_objfmt_output(yasm_object *object, FILE *f, int all_syms,
+ yasm_errwarns *errwarns);
+
+/** Cleans up any allocated object format memory.
+ * \param objfmt object format
+ */
+void yasm_objfmt_destroy(/*@only@*/ yasm_objfmt *objfmt);
+
+/** Add a default section to an object.
+ * \param object object
+ * \return Default section.
+ */
+yasm_section *yasm_objfmt_add_default_section(yasm_object *object);
+
+/** Initialize the object-format specific portion of a section. Called
+ * by yasm_object_get_general(); in general should not be directly called.
+ * \param section section
+ * \param line virtual line (from yasm_linemap)
+ */
+void yasm_objfmt_init_new_section(yasm_object *object, unsigned long line);
+
+/** Switch object file sections. The first val of the valparams should
+ * be the section name. Calls yasm_object_get_general() to actually get
+ * the section.
+ * \param object object
+ * \param valparams value/parameters
+ * \param objext_valparams object format-specific value/parameters
+ * \param line virtual line (from yasm_linemap)
+ * \return NULL on error, otherwise new section.
+ */
+/*@observer@*/ /*@null@*/ yasm_section *yasm_objfmt_section_switch
+ (yasm_object *object, yasm_valparamhead *valparams,
+ /*@null@*/ yasm_valparamhead *objext_valparams, unsigned long line);
+
+/** Get a special symbol. Special symbols are generally used to generate
+ * special relocation types via the WRT mechanism.
+ * \param object object
+ * \param name symbol name (not including any parser-specific prefix)
+ * \param parser parser keyword
+ * \return NULL if unrecognized, otherwise special symbol.
+ */
+/*@observer@*/ /*@null@*/ yasm_symrec *yasm_objfmt_get_special_sym
+ (yasm_object *object, const char *name, const char *parser);
+
+#ifndef YASM_DOXYGEN
+
+/* Inline macro implementations for objfmt functions */
+
+#define yasm_objfmt_create(module, object) module->create(object)
+
+#define yasm_objfmt_output(object, f, all_syms, ews) \
+ ((yasm_objfmt_base *)((object)->objfmt))->module->output \
+ (object, f, all_syms, ews)
+#define yasm_objfmt_destroy(objfmt) \
+ ((yasm_objfmt_base *)objfmt)->module->destroy(objfmt)
+#define yasm_objfmt_section_switch(object, vpms, oe_vpms, line) \
+ ((yasm_objfmt_base *)((object)->objfmt))->module->section_switch \
+ (object, vpms, oe_vpms, line)
+#define yasm_objfmt_add_default_section(object) \
+ ((yasm_objfmt_base *)((object)->objfmt))->module->add_default_section \
+ (object)
+#define yasm_objfmt_init_new_section(section, line) \
+ ((yasm_objfmt_base *)((object)->objfmt))->module->init_new_section \
+ (section, line)
+#define yasm_objfmt_get_special_sym(object, name, parser) \
+ ((yasm_objfmt_base *)((object)->objfmt))->module->get_special_sym \
+ (object, name, parser)
+
+#endif
+
+#endif
diff --git a/contrib/tools/yasm/libyasm/parser.h b/contrib/tools/yasm/libyasm/parser.h
index 568560f671..93d4d33232 100644
--- a/contrib/tools/yasm/libyasm/parser.h
+++ b/contrib/tools/yasm/libyasm/parser.h
@@ -1,67 +1,67 @@
-/**
- * \file libyasm/parser.h
- * \brief YASM parser module interface.
- *
- * \license
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- * \endlicense
- */
-#ifndef YASM_PARSER_H
-#define YASM_PARSER_H
-
-/** YASM parser module interface. The "front end" of the assembler. */
-typedef struct yasm_parser_module {
- /** One-line description of the parser */
- const char *name;
-
- /** Keyword used to select parser on the command line */
- const char *keyword;
-
- /** NULL-terminated list of preprocessors that are valid to use with this
- * parser. The raw preprocessor (raw_preproc) should always be in this
- * list so it's always possible to have no preprocessing done.
- */
- const char **preproc_keywords;
-
- /** Default preprocessor. */
- const char *default_preproc_keyword;
-
- /** NULL-terminated list of standard macro lookups. NULL if none. */
- const yasm_stdmac *stdmacs;
-
- /** Parse a source file into an object.
- * \param object object to parse into (already created)
- * \param pp preprocessor
- * \param save_input nonzero if the parser should save the original
- * lines of source into the object's linemap (via
- * yasm_linemap_add_data()).
- * \param errwarns error/warning set
- * \note Parse errors and warnings are stored into errwarns.
- */
- void (*do_parse)
- (yasm_object *object, yasm_preproc *pp, int save_input,
- yasm_linemap *linemap, yasm_errwarns *errwarns);
-} yasm_parser_module;
-
-#endif
+/**
+ * \file libyasm/parser.h
+ * \brief YASM parser module interface.
+ *
+ * \license
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ * \endlicense
+ */
+#ifndef YASM_PARSER_H
+#define YASM_PARSER_H
+
+/** YASM parser module interface. The "front end" of the assembler. */
+typedef struct yasm_parser_module {
+ /** One-line description of the parser */
+ const char *name;
+
+ /** Keyword used to select parser on the command line */
+ const char *keyword;
+
+ /** NULL-terminated list of preprocessors that are valid to use with this
+ * parser. The raw preprocessor (raw_preproc) should always be in this
+ * list so it's always possible to have no preprocessing done.
+ */
+ const char **preproc_keywords;
+
+ /** Default preprocessor. */
+ const char *default_preproc_keyword;
+
+ /** NULL-terminated list of standard macro lookups. NULL if none. */
+ const yasm_stdmac *stdmacs;
+
+ /** Parse a source file into an object.
+ * \param object object to parse into (already created)
+ * \param pp preprocessor
+ * \param save_input nonzero if the parser should save the original
+ * lines of source into the object's linemap (via
+ * yasm_linemap_add_data()).
+ * \param errwarns error/warning set
+ * \note Parse errors and warnings are stored into errwarns.
+ */
+ void (*do_parse)
+ (yasm_object *object, yasm_preproc *pp, int save_input,
+ yasm_linemap *linemap, yasm_errwarns *errwarns);
+} yasm_parser_module;
+
+#endif
diff --git a/contrib/tools/yasm/libyasm/phash.c b/contrib/tools/yasm/libyasm/phash.c
index 518d5d38cc..29e073aae1 100644
--- a/contrib/tools/yasm/libyasm/phash.c
+++ b/contrib/tools/yasm/libyasm/phash.c
@@ -1,268 +1,268 @@
-/* Modified for use with yasm by Peter Johnson. */
-#include "util.h"
-
-/*
---------------------------------------------------------------------
-lookupa.c, by Bob Jenkins, December 1996. Same as lookup2.c
-Use this code however you wish. Public Domain. No warranty.
-Source is http://burtleburtle.net/bob/c/lookupa.c
---------------------------------------------------------------------
-*/
-#include "phash.h"
-
-#define ub4 unsigned long
-
-#define hashsize(n) ((ub4)1<<(n))
-#define hashmask(n) (hashsize(n)-1)
-
-/*
---------------------------------------------------------------------
-mix -- mix 3 32-bit values reversibly.
-For every delta with one or two bit set, and the deltas of all three
- high bits or all three low bits, whether the original value of a,b,c
- is almost all zero or is uniformly distributed,
-* If mix() is run forward or backward, at least 32 bits in a,b,c
- have at least 1/4 probability of changing.
-* If mix() is run forward, every bit of c will change between 1/3 and
- 2/3 of the time. (Well, 22/100 and 78/100 for some 2-bit deltas.)
-mix() was built out of 36 single-cycle latency instructions in a
- structure that could supported 2x parallelism, like so:
- a -= b;
- a -= c; x = (c>>13);
- b -= c; a ^= x;
- b -= a; x = (a<<8);
- c -= a; b ^= x;
- c -= b; x = (b>>13);
- ...
- Unfortunately, superscalar Pentiums and Sparcs can't take advantage
- of that parallelism. They've also turned some of those single-cycle
- latency instructions into multi-cycle latency instructions. Still,
- this is the fastest good hash I could find. There were about 2^^68
- to choose from. I only looked at a billion or so.
---------------------------------------------------------------------
-*/
-#define mix(a,b,c) \
-{ \
- a -= b; a -= c; a ^= (c>>13); \
- a &= 0xffffffff; \
- b -= c; b -= a; b ^= (a<<8); \
- b &= 0xffffffff; \
- c -= a; c -= b; c ^= (b>>13); \
- c &= 0xffffffff; \
- a -= b; a -= c; a ^= (c>>12); \
- a &= 0xffffffff; \
- b -= c; b -= a; b ^= (a<<16); \
- b &= 0xffffffff; \
- c -= a; c -= b; c ^= (b>>5); \
- c &= 0xffffffff; \
- a -= b; a -= c; a ^= (c>>3); \
- a &= 0xffffffff; \
- b -= c; b -= a; b ^= (a<<10); \
- b &= 0xffffffff; \
- c -= a; c -= b; c ^= (b>>15); \
- c &= 0xffffffff; \
-}
-
-/*
---------------------------------------------------------------------
-lookup() -- hash a variable-length key into a 32-bit value
- k : the key (the unaligned variable-length array of bytes)
- len : the length of the key, counting by bytes
- level : can be any 4-byte value
-Returns a 32-bit value. Every bit of the key affects every bit of
-the return value. Every 1-bit and 2-bit delta achieves avalanche.
-About 6len+35 instructions.
-
-The best hash table sizes are powers of 2. There is no need to do
-mod a prime (mod is sooo slow!). If you need less than 32 bits,
-use a bitmask. For example, if you need only 10 bits, do
- h = (h & hashmask(10));
-In which case, the hash table should have hashsize(10) elements.
-
-If you are hashing n strings (ub1 **)k, do it like this:
- for (i=0, h=0; i<n; ++i) h = lookup( k[i], len[i], h);
-
-By Bob Jenkins, 1996. bob_jenkins@burtleburtle.net. You may use this
-code any way you wish, private, educational, or commercial.
-
-See http://burtleburtle.net/bob/hash/evahash.html
-Use for hash table lookup, or anything where one collision in 2^32 is
-acceptable. Do NOT use for cryptographic purposes.
---------------------------------------------------------------------
-*/
-
-unsigned long
-phash_lookup(
- register const char *sk, /* the key */
- register size_t length, /* the length of the key */
- register unsigned long level) /* the previous hash, or an arbitrary value */
-{
+/* Modified for use with yasm by Peter Johnson. */
+#include "util.h"
+
+/*
+--------------------------------------------------------------------
+lookupa.c, by Bob Jenkins, December 1996. Same as lookup2.c
+Use this code however you wish. Public Domain. No warranty.
+Source is http://burtleburtle.net/bob/c/lookupa.c
+--------------------------------------------------------------------
+*/
+#include "phash.h"
+
+#define ub4 unsigned long
+
+#define hashsize(n) ((ub4)1<<(n))
+#define hashmask(n) (hashsize(n)-1)
+
+/*
+--------------------------------------------------------------------
+mix -- mix 3 32-bit values reversibly.
+For every delta with one or two bit set, and the deltas of all three
+ high bits or all three low bits, whether the original value of a,b,c
+ is almost all zero or is uniformly distributed,
+* If mix() is run forward or backward, at least 32 bits in a,b,c
+ have at least 1/4 probability of changing.
+* If mix() is run forward, every bit of c will change between 1/3 and
+ 2/3 of the time. (Well, 22/100 and 78/100 for some 2-bit deltas.)
+mix() was built out of 36 single-cycle latency instructions in a
+ structure that could supported 2x parallelism, like so:
+ a -= b;
+ a -= c; x = (c>>13);
+ b -= c; a ^= x;
+ b -= a; x = (a<<8);
+ c -= a; b ^= x;
+ c -= b; x = (b>>13);
+ ...
+ Unfortunately, superscalar Pentiums and Sparcs can't take advantage
+ of that parallelism. They've also turned some of those single-cycle
+ latency instructions into multi-cycle latency instructions. Still,
+ this is the fastest good hash I could find. There were about 2^^68
+ to choose from. I only looked at a billion or so.
+--------------------------------------------------------------------
+*/
+#define mix(a,b,c) \
+{ \
+ a -= b; a -= c; a ^= (c>>13); \
+ a &= 0xffffffff; \
+ b -= c; b -= a; b ^= (a<<8); \
+ b &= 0xffffffff; \
+ c -= a; c -= b; c ^= (b>>13); \
+ c &= 0xffffffff; \
+ a -= b; a -= c; a ^= (c>>12); \
+ a &= 0xffffffff; \
+ b -= c; b -= a; b ^= (a<<16); \
+ b &= 0xffffffff; \
+ c -= a; c -= b; c ^= (b>>5); \
+ c &= 0xffffffff; \
+ a -= b; a -= c; a ^= (c>>3); \
+ a &= 0xffffffff; \
+ b -= c; b -= a; b ^= (a<<10); \
+ b &= 0xffffffff; \
+ c -= a; c -= b; c ^= (b>>15); \
+ c &= 0xffffffff; \
+}
+
+/*
+--------------------------------------------------------------------
+lookup() -- hash a variable-length key into a 32-bit value
+ k : the key (the unaligned variable-length array of bytes)
+ len : the length of the key, counting by bytes
+ level : can be any 4-byte value
+Returns a 32-bit value. Every bit of the key affects every bit of
+the return value. Every 1-bit and 2-bit delta achieves avalanche.
+About 6len+35 instructions.
+
+The best hash table sizes are powers of 2. There is no need to do
+mod a prime (mod is sooo slow!). If you need less than 32 bits,
+use a bitmask. For example, if you need only 10 bits, do
+ h = (h & hashmask(10));
+In which case, the hash table should have hashsize(10) elements.
+
+If you are hashing n strings (ub1 **)k, do it like this:
+ for (i=0, h=0; i<n; ++i) h = lookup( k[i], len[i], h);
+
+By Bob Jenkins, 1996. bob_jenkins@burtleburtle.net. You may use this
+code any way you wish, private, educational, or commercial.
+
+See http://burtleburtle.net/bob/hash/evahash.html
+Use for hash table lookup, or anything where one collision in 2^32 is
+acceptable. Do NOT use for cryptographic purposes.
+--------------------------------------------------------------------
+*/
+
+unsigned long
+phash_lookup(
+ register const char *sk, /* the key */
+ register size_t length, /* the length of the key */
+ register unsigned long level) /* the previous hash, or an arbitrary value */
+{
unsigned long a,b,c;
size_t len;
const unsigned char *k = (const unsigned char *)sk;
-
- /* Set up the internal state */
- len = length;
- a = b = 0x9e3779b9; /* the golden ratio; an arbitrary value */
- c = level; /* the previous hash value */
-
- /*---------------------------------------- handle most of the key */
- while (len >= 12)
- {
- a += (k[0] +((ub4)k[1]<<8) +((ub4)k[2]<<16) +((ub4)k[3]<<24));
- a &= 0xffffffff;
- b += (k[4] +((ub4)k[5]<<8) +((ub4)k[6]<<16) +((ub4)k[7]<<24));
- b &= 0xffffffff;
- c += (k[8] +((ub4)k[9]<<8) +((ub4)k[10]<<16)+((ub4)k[11]<<24));
- c &= 0xffffffff;
- mix(a,b,c);
- k += 12; len -= 12;
- }
-
- /*------------------------------------- handle the last 11 bytes */
- c += (ub4)length;
- switch(len) /* all the case statements fall through */
- {
- case 11: c+=((ub4)k[10]<<24);
- case 10: c+=((ub4)k[9]<<16);
- case 9 : c+=((ub4)k[8]<<8);
- c &= 0xffffffff;
- /* the first byte of c is reserved for the length */
- case 8 : b+=((ub4)k[7]<<24);
- case 7 : b+=((ub4)k[6]<<16);
- case 6 : b+=((ub4)k[5]<<8);
- case 5 : b+=k[4];
- b &= 0xffffffff;
- case 4 : a+=((ub4)k[3]<<24);
- case 3 : a+=((ub4)k[2]<<16);
- case 2 : a+=((ub4)k[1]<<8);
- case 1 : a+=k[0];
- a &= 0xffffffff;
- /* case 0: nothing left to add */
- }
- mix(a,b,c);
- /*-------------------------------------------- report the result */
- return c;
-}
-
-
-/*
---------------------------------------------------------------------
-mixc -- mixc 8 4-bit values as quickly and thoroughly as possible.
-Repeating mix() three times achieves avalanche.
-Repeating mix() four times eliminates all funnels and all
- characteristics stronger than 2^{-11}.
---------------------------------------------------------------------
-*/
-#define mixc(a,b,c,d,e,f,g,h) \
-{ \
- a^=b<<11; d+=a; b+=c; \
- b^=c>>2; e+=b; c+=d; \
- c^=d<<8; f+=c; d+=e; \
- d^=e>>16; g+=d; e+=f; \
- e^=f<<10; h+=e; f+=g; \
- f^=g>>4; a+=f; g+=h; \
- g^=h<<8; b+=g; h+=a; \
- h^=a>>9; c+=h; a+=b; \
-}
-
-/*
---------------------------------------------------------------------
-checksum() -- hash a variable-length key into a 256-bit value
- k : the key (the unaligned variable-length array of bytes)
- len : the length of the key, counting by bytes
- state : an array of CHECKSTATE 4-byte values (256 bits)
-The state is the checksum. Every bit of the key affects every bit of
-the state. There are no funnels. About 112+6.875len instructions.
-
-If you are hashing n strings (ub1 **)k, do it like this:
- for (i=0; i<8; ++i) state[i] = 0x9e3779b9;
- for (i=0, h=0; i<n; ++i) checksum( k[i], len[i], state);
-
-(c) Bob Jenkins, 1996. bob_jenkins@burtleburtle.net. You may use this
-code any way you wish, private, educational, or commercial, as long
-as this whole comment accompanies it.
-
-See http://burtleburtle.net/bob/hash/evahash.html
-Use to detect changes between revisions of documents, assuming nobody
-is trying to cause collisions. Do NOT use for cryptography.
---------------------------------------------------------------------
-*/
-void
-phash_checksum(
- register const char *sk,
- register size_t len,
- register unsigned long *state)
-{
+
+ /* Set up the internal state */
+ len = length;
+ a = b = 0x9e3779b9; /* the golden ratio; an arbitrary value */
+ c = level; /* the previous hash value */
+
+ /*---------------------------------------- handle most of the key */
+ while (len >= 12)
+ {
+ a += (k[0] +((ub4)k[1]<<8) +((ub4)k[2]<<16) +((ub4)k[3]<<24));
+ a &= 0xffffffff;
+ b += (k[4] +((ub4)k[5]<<8) +((ub4)k[6]<<16) +((ub4)k[7]<<24));
+ b &= 0xffffffff;
+ c += (k[8] +((ub4)k[9]<<8) +((ub4)k[10]<<16)+((ub4)k[11]<<24));
+ c &= 0xffffffff;
+ mix(a,b,c);
+ k += 12; len -= 12;
+ }
+
+ /*------------------------------------- handle the last 11 bytes */
+ c += (ub4)length;
+ switch(len) /* all the case statements fall through */
+ {
+ case 11: c+=((ub4)k[10]<<24);
+ case 10: c+=((ub4)k[9]<<16);
+ case 9 : c+=((ub4)k[8]<<8);
+ c &= 0xffffffff;
+ /* the first byte of c is reserved for the length */
+ case 8 : b+=((ub4)k[7]<<24);
+ case 7 : b+=((ub4)k[6]<<16);
+ case 6 : b+=((ub4)k[5]<<8);
+ case 5 : b+=k[4];
+ b &= 0xffffffff;
+ case 4 : a+=((ub4)k[3]<<24);
+ case 3 : a+=((ub4)k[2]<<16);
+ case 2 : a+=((ub4)k[1]<<8);
+ case 1 : a+=k[0];
+ a &= 0xffffffff;
+ /* case 0: nothing left to add */
+ }
+ mix(a,b,c);
+ /*-------------------------------------------- report the result */
+ return c;
+}
+
+
+/*
+--------------------------------------------------------------------
+mixc -- mixc 8 4-bit values as quickly and thoroughly as possible.
+Repeating mix() three times achieves avalanche.
+Repeating mix() four times eliminates all funnels and all
+ characteristics stronger than 2^{-11}.
+--------------------------------------------------------------------
+*/
+#define mixc(a,b,c,d,e,f,g,h) \
+{ \
+ a^=b<<11; d+=a; b+=c; \
+ b^=c>>2; e+=b; c+=d; \
+ c^=d<<8; f+=c; d+=e; \
+ d^=e>>16; g+=d; e+=f; \
+ e^=f<<10; h+=e; f+=g; \
+ f^=g>>4; a+=f; g+=h; \
+ g^=h<<8; b+=g; h+=a; \
+ h^=a>>9; c+=h; a+=b; \
+}
+
+/*
+--------------------------------------------------------------------
+checksum() -- hash a variable-length key into a 256-bit value
+ k : the key (the unaligned variable-length array of bytes)
+ len : the length of the key, counting by bytes
+ state : an array of CHECKSTATE 4-byte values (256 bits)
+The state is the checksum. Every bit of the key affects every bit of
+the state. There are no funnels. About 112+6.875len instructions.
+
+If you are hashing n strings (ub1 **)k, do it like this:
+ for (i=0; i<8; ++i) state[i] = 0x9e3779b9;
+ for (i=0, h=0; i<n; ++i) checksum( k[i], len[i], state);
+
+(c) Bob Jenkins, 1996. bob_jenkins@burtleburtle.net. You may use this
+code any way you wish, private, educational, or commercial, as long
+as this whole comment accompanies it.
+
+See http://burtleburtle.net/bob/hash/evahash.html
+Use to detect changes between revisions of documents, assuming nobody
+is trying to cause collisions. Do NOT use for cryptography.
+--------------------------------------------------------------------
+*/
+void
+phash_checksum(
+ register const char *sk,
+ register size_t len,
+ register unsigned long *state)
+{
unsigned long a,b,c,d,e,f,g,h;
size_t length;
const unsigned char *k = (const unsigned char *)sk;
-
- /* Use the length and level; add in the golden ratio. */
- length = len;
- a=state[0]; b=state[1]; c=state[2]; d=state[3];
- e=state[4]; f=state[5]; g=state[6]; h=state[7];
-
- /*---------------------------------------- handle most of the key */
- while (len >= 32)
- {
- a += (k[0] +(k[1]<<8) +(k[2]<<16) +(k[3]<<24));
- b += (k[4] +(k[5]<<8) +(k[6]<<16) +(k[7]<<24));
- c += (k[8] +(k[9]<<8) +(k[10]<<16)+(k[11]<<24));
- d += (k[12]+(k[13]<<8)+(k[14]<<16)+(k[15]<<24));
- e += (k[16]+(k[17]<<8)+(k[18]<<16)+(k[19]<<24));
- f += (k[20]+(k[21]<<8)+(k[22]<<16)+(k[23]<<24));
- g += (k[24]+(k[25]<<8)+(k[26]<<16)+(k[27]<<24));
- h += (k[28]+(k[29]<<8)+(k[30]<<16)+(k[31]<<24));
- mixc(a,b,c,d,e,f,g,h);
- mixc(a,b,c,d,e,f,g,h);
- mixc(a,b,c,d,e,f,g,h);
- mixc(a,b,c,d,e,f,g,h);
- k += 32; len -= 32;
- }
-
- /*------------------------------------- handle the last 31 bytes */
- h += (ub4)length;
- switch(len)
- {
- case 31: h+=(k[30]<<24);
- case 30: h+=(k[29]<<16);
- case 29: h+=(k[28]<<8);
- case 28: g+=(k[27]<<24);
- case 27: g+=(k[26]<<16);
- case 26: g+=(k[25]<<8);
- case 25: g+=k[24];
- case 24: f+=(k[23]<<24);
- case 23: f+=(k[22]<<16);
- case 22: f+=(k[21]<<8);
- case 21: f+=k[20];
- case 20: e+=(k[19]<<24);
- case 19: e+=(k[18]<<16);
- case 18: e+=(k[17]<<8);
- case 17: e+=k[16];
- case 16: d+=(k[15]<<24);
- case 15: d+=(k[14]<<16);
- case 14: d+=(k[13]<<8);
- case 13: d+=k[12];
- case 12: c+=(k[11]<<24);
- case 11: c+=(k[10]<<16);
- case 10: c+=(k[9]<<8);
- case 9 : c+=k[8];
- case 8 : b+=(k[7]<<24);
- case 7 : b+=(k[6]<<16);
- case 6 : b+=(k[5]<<8);
- case 5 : b+=k[4];
- case 4 : a+=(k[3]<<24);
- case 3 : a+=(k[2]<<16);
- case 2 : a+=(k[1]<<8);
- case 1 : a+=k[0];
- }
- mixc(a,b,c,d,e,f,g,h);
- mixc(a,b,c,d,e,f,g,h);
- mixc(a,b,c,d,e,f,g,h);
- mixc(a,b,c,d,e,f,g,h);
-
- /*-------------------------------------------- report the result */
- state[0]=a; state[1]=b; state[2]=c; state[3]=d;
- state[4]=e; state[5]=f; state[6]=g; state[7]=h;
-}
+
+ /* Use the length and level; add in the golden ratio. */
+ length = len;
+ a=state[0]; b=state[1]; c=state[2]; d=state[3];
+ e=state[4]; f=state[5]; g=state[6]; h=state[7];
+
+ /*---------------------------------------- handle most of the key */
+ while (len >= 32)
+ {
+ a += (k[0] +(k[1]<<8) +(k[2]<<16) +(k[3]<<24));
+ b += (k[4] +(k[5]<<8) +(k[6]<<16) +(k[7]<<24));
+ c += (k[8] +(k[9]<<8) +(k[10]<<16)+(k[11]<<24));
+ d += (k[12]+(k[13]<<8)+(k[14]<<16)+(k[15]<<24));
+ e += (k[16]+(k[17]<<8)+(k[18]<<16)+(k[19]<<24));
+ f += (k[20]+(k[21]<<8)+(k[22]<<16)+(k[23]<<24));
+ g += (k[24]+(k[25]<<8)+(k[26]<<16)+(k[27]<<24));
+ h += (k[28]+(k[29]<<8)+(k[30]<<16)+(k[31]<<24));
+ mixc(a,b,c,d,e,f,g,h);
+ mixc(a,b,c,d,e,f,g,h);
+ mixc(a,b,c,d,e,f,g,h);
+ mixc(a,b,c,d,e,f,g,h);
+ k += 32; len -= 32;
+ }
+
+ /*------------------------------------- handle the last 31 bytes */
+ h += (ub4)length;
+ switch(len)
+ {
+ case 31: h+=(k[30]<<24);
+ case 30: h+=(k[29]<<16);
+ case 29: h+=(k[28]<<8);
+ case 28: g+=(k[27]<<24);
+ case 27: g+=(k[26]<<16);
+ case 26: g+=(k[25]<<8);
+ case 25: g+=k[24];
+ case 24: f+=(k[23]<<24);
+ case 23: f+=(k[22]<<16);
+ case 22: f+=(k[21]<<8);
+ case 21: f+=k[20];
+ case 20: e+=(k[19]<<24);
+ case 19: e+=(k[18]<<16);
+ case 18: e+=(k[17]<<8);
+ case 17: e+=k[16];
+ case 16: d+=(k[15]<<24);
+ case 15: d+=(k[14]<<16);
+ case 14: d+=(k[13]<<8);
+ case 13: d+=k[12];
+ case 12: c+=(k[11]<<24);
+ case 11: c+=(k[10]<<16);
+ case 10: c+=(k[9]<<8);
+ case 9 : c+=k[8];
+ case 8 : b+=(k[7]<<24);
+ case 7 : b+=(k[6]<<16);
+ case 6 : b+=(k[5]<<8);
+ case 5 : b+=k[4];
+ case 4 : a+=(k[3]<<24);
+ case 3 : a+=(k[2]<<16);
+ case 2 : a+=(k[1]<<8);
+ case 1 : a+=k[0];
+ }
+ mixc(a,b,c,d,e,f,g,h);
+ mixc(a,b,c,d,e,f,g,h);
+ mixc(a,b,c,d,e,f,g,h);
+ mixc(a,b,c,d,e,f,g,h);
+
+ /*-------------------------------------------- report the result */
+ state[0]=a; state[1]=b; state[2]=c; state[3]=d;
+ state[4]=e; state[5]=f; state[6]=g; state[7]=h;
+}
diff --git a/contrib/tools/yasm/libyasm/phash.h b/contrib/tools/yasm/libyasm/phash.h
index 5bf105f0dd..2273a5df20 100644
--- a/contrib/tools/yasm/libyasm/phash.h
+++ b/contrib/tools/yasm/libyasm/phash.h
@@ -1,19 +1,19 @@
-/* Modified for use with yasm by Peter Johnson. */
-/*
-------------------------------------------------------------------------------
-By Bob Jenkins, September 1996.
-lookupa.h, a hash function for table lookup, same function as lookup.c.
-Use this code in any way you wish. Public Domain. It has no warranty.
-Source is http://burtleburtle.net/bob/c/lookupa.h
-------------------------------------------------------------------------------
-*/
-
-#ifndef YASM_LIB_DECL
-#define YASM_LIB_DECL
-#endif
-
-YASM_LIB_DECL
-unsigned long phash_lookup(const char *k, size_t length,
- unsigned long level);
-YASM_LIB_DECL
-void phash_checksum(const char *k, size_t length, unsigned long *state);
+/* Modified for use with yasm by Peter Johnson. */
+/*
+------------------------------------------------------------------------------
+By Bob Jenkins, September 1996.
+lookupa.h, a hash function for table lookup, same function as lookup.c.
+Use this code in any way you wish. Public Domain. It has no warranty.
+Source is http://burtleburtle.net/bob/c/lookupa.h
+------------------------------------------------------------------------------
+*/
+
+#ifndef YASM_LIB_DECL
+#define YASM_LIB_DECL
+#endif
+
+YASM_LIB_DECL
+unsigned long phash_lookup(const char *k, size_t length,
+ unsigned long level);
+YASM_LIB_DECL
+void phash_checksum(const char *k, size_t length, unsigned long *state);
diff --git a/contrib/tools/yasm/libyasm/preproc.h b/contrib/tools/yasm/libyasm/preproc.h
index 7c0845c431..751b19e4b0 100644
--- a/contrib/tools/yasm/libyasm/preproc.h
+++ b/contrib/tools/yasm/libyasm/preproc.h
@@ -1,210 +1,210 @@
-/**
- * \file libyasm/preproc.h
- * \brief YASM preprocessor module interface.
- *
- * \license
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- * \endlicense
- */
-#ifndef YASM_PREPROC_H
-#define YASM_PREPROC_H
-
-#ifndef YASM_DOXYGEN
-/** Base #yasm_preproc structure. Must be present as the first element in any
- * #yasm_preproc implementation.
- */
-typedef struct yasm_preproc_base {
- /** #yasm_preproc_module implementation for this preprocessor. */
- const struct yasm_preproc_module *module;
-} yasm_preproc_base;
-#endif
-
-/** YASM preprocesor module interface. */
-typedef struct yasm_preproc_module {
- /** One-line description of the preprocessor. */
- const char *name;
-
- /** Keyword used to select preprocessor on the command line. */
- const char *keyword;
-
- /** Create preprocessor.
- * Module-level implementation of yasm_preproc_create().
- * Call yasm_preproc_create() instead of calling this function.
- *
- * \param in_filename initial starting filename, or "-" to read from
- * stdin
- * \param symtab symbol table (may be NULL if none)
- * \param lm line mapping repository
- * \param errwarns error/warnning set.
- * \return New preprocessor.
- *
- * \note Any preprocessor errors and warnings are stored into errwarns.
- */
- /*@only@*/ yasm_preproc * (*create) (const char *in_filename,
- yasm_symtab *symtab,
- yasm_linemap *lm,
- yasm_errwarns *errwarns);
-
- /** Module-level implementation of yasm_preproc_destroy().
- * Call yasm_preproc_destroy() instead of calling this function.
- */
- void (*destroy) (/*@only@*/ yasm_preproc *preproc);
-
- /** Module-level implementation of yasm_preproc_get_line().
- * Call yasm_preproc_get_line() instead of calling this function.
- */
- char * (*get_line) (yasm_preproc *preproc);
-
- /** Module-level implementation of yasm_preproc_get_included_file().
- * Call yasm_preproc_get_included_file() instead of calling this function.
- */
- size_t (*get_included_file) (yasm_preproc *preproc, /*@out@*/ char *buf,
- size_t max_size);
-
- /** Module-level implementation of yasm_preproc_add_include_file().
- * Call yasm_preproc_add_include_file() instead of calling this function.
- */
- void (*add_include_file) (yasm_preproc *preproc, const char *filename);
-
- /** Module-level implementation of yasm_preproc_predefine_macro().
- * Call yasm_preproc_predefine_macro() instead of calling this function.
- */
- void (*predefine_macro) (yasm_preproc *preproc, const char *macronameval);
-
- /** Module-level implementation of yasm_preproc_undefine_macro().
- * Call yasm_preproc_undefine_macro() instead of calling this function.
- */
- void (*undefine_macro) (yasm_preproc *preproc, const char *macroname);
-
- /** Module-level implementation of yasm_preproc_builtin_define().
- * Call yasm_preproc_builtin_define() instead of calling this function.
- */
- void (*define_builtin) (yasm_preproc *preproc, const char *macronameval);
-
- /** Module-level implementation of yasm_preproc_add_standard().
- * Call yasm_preproc_add_standard() instead of calling this function.
- */
- void (*add_standard) (yasm_preproc *preproc, const char **macros);
-} yasm_preproc_module;
-
-/** Initialize preprocessor.
- * The preprocessor needs access to the object format module to find out
- * any output format specific macros.
- * \param module preprocessor module
- * \param in_filename initial starting filename, or "-" to read from stdin
- * \param symtab symbol table (may be NULL if none)
- * \param lm line mapping repository
- * \param errwarns error/warning set
- * \return New preprocessor.
- * \note Errors/warnings are stored into errwarns.
- */
-/*@only@*/ yasm_preproc *yasm_preproc_create
- (yasm_preproc_module *module, const char *in_filename,
- yasm_symtab *symtab, yasm_linemap *lm, yasm_errwarns *errwarns);
-
-/** Cleans up any allocated preproc memory.
- * \param preproc preprocessor
- */
-void yasm_preproc_destroy(/*@only@*/ yasm_preproc *preproc);
-
-/** Gets a single line of preprocessed source code.
- * \param preproc preprocessor
- * \return Allocated line of code, without the trailing \n.
- */
-char *yasm_preproc_get_line(yasm_preproc *preproc);
-
-/** Get the next filename included by the source code.
- * \param preproc preprocessor
- * \param buf destination buffer for filename
- * \param max_size maximum number of bytes that can be returned in buf
- * \return Actual number of bytes returned in buf.
- */
-size_t yasm_preproc_get_included_file(yasm_preproc *preproc,
- /*@out@*/ char *buf, size_t max_size);
-
-/** Pre-include a file.
- * \param preproc preprocessor
- * \param filename filename
- */
-void yasm_preproc_add_include_file(yasm_preproc *preproc,
- const char *filename);
-
-/** Pre-define a macro.
- * \param preproc preprocessor
- * \param macronameval "name=value" string
- */
-void yasm_preproc_predefine_macro(yasm_preproc *preproc,
- const char *macronameval);
-
-/** Un-define a macro.
- * \param preproc preprocessor
- * \param macroname macro name
- */
-void yasm_preproc_undefine_macro(yasm_preproc *preproc, const char *macroname);
-
-/** Define a builtin macro, preprocessed before the "standard" macros.
- * \param preproc preprocessor
- * \param macronameval "name=value" string
- */
-void yasm_preproc_define_builtin(yasm_preproc *preproc,
- const char *macronameval);
-
-/** Define additional standard macros, preprocessed after the builtins but
- * prior to any user-defined macros.
- * \param preproc preprocessor
- * \param macros NULL-terminated array of macro strings
- */
-void yasm_preproc_add_standard(yasm_preproc *preproc,
- const char **macros);
-
-#ifndef YASM_DOXYGEN
-
-/* Inline macro implementations for preproc functions */
-
-#define yasm_preproc_create(module, in_filename, symtab, lm, ews) \
- module->create(in_filename, symtab, lm, ews)
-
-#define yasm_preproc_destroy(preproc) \
- ((yasm_preproc_base *)preproc)->module->destroy(preproc)
-#define yasm_preproc_get_line(preproc) \
- ((yasm_preproc_base *)preproc)->module->get_line(preproc)
-#define yasm_preproc_get_included_file(preproc, buf, max_size) \
- ((yasm_preproc_base *)preproc)->module->get_included_file(preproc, buf, max_size)
-#define yasm_preproc_add_include_file(preproc, filename) \
- ((yasm_preproc_base *)preproc)->module->add_include_file(preproc, filename)
-#define yasm_preproc_predefine_macro(preproc, macronameval) \
- ((yasm_preproc_base *)preproc)->module->predefine_macro(preproc, \
- macronameval)
-#define yasm_preproc_undefine_macro(preproc, macroname) \
- ((yasm_preproc_base *)preproc)->module->undefine_macro(preproc, macroname)
-#define yasm_preproc_define_builtin(preproc, macronameval) \
- ((yasm_preproc_base *)preproc)->module->define_builtin(preproc, \
- macronameval)
-#define yasm_preproc_add_standard(preproc, macros) \
- ((yasm_preproc_base *)preproc)->module->add_standard(preproc, \
- macros)
-
-#endif
-
-#endif
+/**
+ * \file libyasm/preproc.h
+ * \brief YASM preprocessor module interface.
+ *
+ * \license
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ * \endlicense
+ */
+#ifndef YASM_PREPROC_H
+#define YASM_PREPROC_H
+
+#ifndef YASM_DOXYGEN
+/** Base #yasm_preproc structure. Must be present as the first element in any
+ * #yasm_preproc implementation.
+ */
+typedef struct yasm_preproc_base {
+ /** #yasm_preproc_module implementation for this preprocessor. */
+ const struct yasm_preproc_module *module;
+} yasm_preproc_base;
+#endif
+
+/** YASM preprocesor module interface. */
+typedef struct yasm_preproc_module {
+ /** One-line description of the preprocessor. */
+ const char *name;
+
+ /** Keyword used to select preprocessor on the command line. */
+ const char *keyword;
+
+ /** Create preprocessor.
+ * Module-level implementation of yasm_preproc_create().
+ * Call yasm_preproc_create() instead of calling this function.
+ *
+ * \param in_filename initial starting filename, or "-" to read from
+ * stdin
+ * \param symtab symbol table (may be NULL if none)
+ * \param lm line mapping repository
+ * \param errwarns error/warnning set.
+ * \return New preprocessor.
+ *
+ * \note Any preprocessor errors and warnings are stored into errwarns.
+ */
+ /*@only@*/ yasm_preproc * (*create) (const char *in_filename,
+ yasm_symtab *symtab,
+ yasm_linemap *lm,
+ yasm_errwarns *errwarns);
+
+ /** Module-level implementation of yasm_preproc_destroy().
+ * Call yasm_preproc_destroy() instead of calling this function.
+ */
+ void (*destroy) (/*@only@*/ yasm_preproc *preproc);
+
+ /** Module-level implementation of yasm_preproc_get_line().
+ * Call yasm_preproc_get_line() instead of calling this function.
+ */
+ char * (*get_line) (yasm_preproc *preproc);
+
+ /** Module-level implementation of yasm_preproc_get_included_file().
+ * Call yasm_preproc_get_included_file() instead of calling this function.
+ */
+ size_t (*get_included_file) (yasm_preproc *preproc, /*@out@*/ char *buf,
+ size_t max_size);
+
+ /** Module-level implementation of yasm_preproc_add_include_file().
+ * Call yasm_preproc_add_include_file() instead of calling this function.
+ */
+ void (*add_include_file) (yasm_preproc *preproc, const char *filename);
+
+ /** Module-level implementation of yasm_preproc_predefine_macro().
+ * Call yasm_preproc_predefine_macro() instead of calling this function.
+ */
+ void (*predefine_macro) (yasm_preproc *preproc, const char *macronameval);
+
+ /** Module-level implementation of yasm_preproc_undefine_macro().
+ * Call yasm_preproc_undefine_macro() instead of calling this function.
+ */
+ void (*undefine_macro) (yasm_preproc *preproc, const char *macroname);
+
+ /** Module-level implementation of yasm_preproc_builtin_define().
+ * Call yasm_preproc_builtin_define() instead of calling this function.
+ */
+ void (*define_builtin) (yasm_preproc *preproc, const char *macronameval);
+
+ /** Module-level implementation of yasm_preproc_add_standard().
+ * Call yasm_preproc_add_standard() instead of calling this function.
+ */
+ void (*add_standard) (yasm_preproc *preproc, const char **macros);
+} yasm_preproc_module;
+
+/** Initialize preprocessor.
+ * The preprocessor needs access to the object format module to find out
+ * any output format specific macros.
+ * \param module preprocessor module
+ * \param in_filename initial starting filename, or "-" to read from stdin
+ * \param symtab symbol table (may be NULL if none)
+ * \param lm line mapping repository
+ * \param errwarns error/warning set
+ * \return New preprocessor.
+ * \note Errors/warnings are stored into errwarns.
+ */
+/*@only@*/ yasm_preproc *yasm_preproc_create
+ (yasm_preproc_module *module, const char *in_filename,
+ yasm_symtab *symtab, yasm_linemap *lm, yasm_errwarns *errwarns);
+
+/** Cleans up any allocated preproc memory.
+ * \param preproc preprocessor
+ */
+void yasm_preproc_destroy(/*@only@*/ yasm_preproc *preproc);
+
+/** Gets a single line of preprocessed source code.
+ * \param preproc preprocessor
+ * \return Allocated line of code, without the trailing \n.
+ */
+char *yasm_preproc_get_line(yasm_preproc *preproc);
+
+/** Get the next filename included by the source code.
+ * \param preproc preprocessor
+ * \param buf destination buffer for filename
+ * \param max_size maximum number of bytes that can be returned in buf
+ * \return Actual number of bytes returned in buf.
+ */
+size_t yasm_preproc_get_included_file(yasm_preproc *preproc,
+ /*@out@*/ char *buf, size_t max_size);
+
+/** Pre-include a file.
+ * \param preproc preprocessor
+ * \param filename filename
+ */
+void yasm_preproc_add_include_file(yasm_preproc *preproc,
+ const char *filename);
+
+/** Pre-define a macro.
+ * \param preproc preprocessor
+ * \param macronameval "name=value" string
+ */
+void yasm_preproc_predefine_macro(yasm_preproc *preproc,
+ const char *macronameval);
+
+/** Un-define a macro.
+ * \param preproc preprocessor
+ * \param macroname macro name
+ */
+void yasm_preproc_undefine_macro(yasm_preproc *preproc, const char *macroname);
+
+/** Define a builtin macro, preprocessed before the "standard" macros.
+ * \param preproc preprocessor
+ * \param macronameval "name=value" string
+ */
+void yasm_preproc_define_builtin(yasm_preproc *preproc,
+ const char *macronameval);
+
+/** Define additional standard macros, preprocessed after the builtins but
+ * prior to any user-defined macros.
+ * \param preproc preprocessor
+ * \param macros NULL-terminated array of macro strings
+ */
+void yasm_preproc_add_standard(yasm_preproc *preproc,
+ const char **macros);
+
+#ifndef YASM_DOXYGEN
+
+/* Inline macro implementations for preproc functions */
+
+#define yasm_preproc_create(module, in_filename, symtab, lm, ews) \
+ module->create(in_filename, symtab, lm, ews)
+
+#define yasm_preproc_destroy(preproc) \
+ ((yasm_preproc_base *)preproc)->module->destroy(preproc)
+#define yasm_preproc_get_line(preproc) \
+ ((yasm_preproc_base *)preproc)->module->get_line(preproc)
+#define yasm_preproc_get_included_file(preproc, buf, max_size) \
+ ((yasm_preproc_base *)preproc)->module->get_included_file(preproc, buf, max_size)
+#define yasm_preproc_add_include_file(preproc, filename) \
+ ((yasm_preproc_base *)preproc)->module->add_include_file(preproc, filename)
+#define yasm_preproc_predefine_macro(preproc, macronameval) \
+ ((yasm_preproc_base *)preproc)->module->predefine_macro(preproc, \
+ macronameval)
+#define yasm_preproc_undefine_macro(preproc, macroname) \
+ ((yasm_preproc_base *)preproc)->module->undefine_macro(preproc, macroname)
+#define yasm_preproc_define_builtin(preproc, macronameval) \
+ ((yasm_preproc_base *)preproc)->module->define_builtin(preproc, \
+ macronameval)
+#define yasm_preproc_add_standard(preproc, macros) \
+ ((yasm_preproc_base *)preproc)->module->add_standard(preproc, \
+ macros)
+
+#endif
+
+#endif
diff --git a/contrib/tools/yasm/libyasm/section.c b/contrib/tools/yasm/libyasm/section.c
index e43a5395f6..729d7770a4 100644
--- a/contrib/tools/yasm/libyasm/section.c
+++ b/contrib/tools/yasm/libyasm/section.c
@@ -1,1585 +1,1585 @@
-/*
- * Section utility functions
- *
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include "util.h"
-
-#include <limits.h>
-
-#include "libyasm-stdint.h"
-#include "coretype.h"
-#include "hamt.h"
-#include "valparam.h"
-#include "assocdat.h"
-
-#include "linemap.h"
-#include "errwarn.h"
-#include "intnum.h"
-#include "expr.h"
-#include "value.h"
-#include "symrec.h"
-
-#include "bytecode.h"
-#include "arch.h"
-#include "section.h"
-
-#include "dbgfmt.h"
-#include "objfmt.h"
-
-#include "inttree.h"
-
-
-struct yasm_section {
- /*@reldef@*/ STAILQ_ENTRY(yasm_section) link;
-
- /*@dependent@*/ yasm_object *object; /* Pointer to parent object */
-
- /*@owned@*/ char *name; /* strdup()'ed name (given by user) */
-
- /* associated data; NULL if none */
- /*@null@*/ /*@only@*/ yasm__assoc_data *assoc_data;
-
- unsigned long align; /* Section alignment */
-
- unsigned long opt_flags; /* storage for optimizer flags */
-
- int code; /* section contains code (instructions) */
- int res_only; /* allow only resb family of bytecodes? */
- int def; /* "default" section, e.g. not specified by
- using section directive */
-
- /* the bytecodes for the section's contents */
- /*@reldef@*/ STAILQ_HEAD(yasm_bytecodehead, yasm_bytecode) bcs;
-
- /* the relocations for the section */
- /*@reldef@*/ STAILQ_HEAD(yasm_relochead, yasm_reloc) relocs;
-
- void (*destroy_reloc) (/*@only@*/ void *reloc);
-};
-
-static void yasm_section_destroy(/*@only@*/ yasm_section *sect);
-
-/* Wrapper around directive for HAMT insertion */
-typedef struct yasm_directive_wrap {
- const yasm_directive *directive;
-} yasm_directive_wrap;
-
-/*
- * Standard "builtin" object directives.
- */
-
-static void
-dir_extern(yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_valparam *vp = yasm_vps_first(valparams);
- yasm_symrec *sym;
- sym = yasm_symtab_declare(object->symtab, yasm_vp_id(vp), YASM_SYM_EXTERN,
- line);
- if (objext_valparams) {
- yasm_valparamhead *vps = yasm_vps_create();
- *vps = *objext_valparams; /* structure copy */
- yasm_vps_initialize(objext_valparams); /* don't double-free */
- yasm_symrec_set_objext_valparams(sym, vps);
- }
-}
-
-static void
-dir_global(yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_valparam *vp = yasm_vps_first(valparams);
- yasm_symrec *sym;
- sym = yasm_symtab_declare(object->symtab, yasm_vp_id(vp), YASM_SYM_GLOBAL,
- line);
- if (objext_valparams) {
- yasm_valparamhead *vps = yasm_vps_create();
- *vps = *objext_valparams; /* structure copy */
- yasm_vps_initialize(objext_valparams); /* don't double-free */
- yasm_symrec_set_objext_valparams(sym, vps);
- }
-}
-
-static void
-dir_common(yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_valparam *vp = yasm_vps_first(valparams);
- yasm_valparam *vp2 = yasm_vps_next(vp);
- yasm_expr *size = yasm_vp_expr(vp2, object->symtab, line);
- yasm_symrec *sym;
-
- if (!size) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("no size specified in %s declaration"), "COMMON");
- return;
- }
- sym = yasm_symtab_declare(object->symtab, yasm_vp_id(vp), YASM_SYM_COMMON,
- line);
- yasm_symrec_set_common_size(sym, size);
- if (objext_valparams) {
- yasm_valparamhead *vps = yasm_vps_create();
- *vps = *objext_valparams; /* structure copy */
- yasm_vps_initialize(objext_valparams); /* don't double-free */
- yasm_symrec_set_objext_valparams(sym, vps);
- }
-}
-
-static void
-dir_section(yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_section *new_section =
- yasm_objfmt_section_switch(object, valparams, objext_valparams, line);
- if (new_section)
- object->cur_section = new_section;
- else
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("invalid argument to directive `%s'"), "SECTION");
-}
-
-static const yasm_directive object_directives[] = {
- { ".extern", "gas", dir_extern, YASM_DIR_ID_REQUIRED },
- { ".global", "gas", dir_global, YASM_DIR_ID_REQUIRED },
- { ".globl", "gas", dir_global, YASM_DIR_ID_REQUIRED },
- { "extern", "nasm", dir_extern, YASM_DIR_ID_REQUIRED },
- { "global", "nasm", dir_global, YASM_DIR_ID_REQUIRED },
- { "common", "nasm", dir_common, YASM_DIR_ID_REQUIRED },
- { "section", "nasm", dir_section, YASM_DIR_ARG_REQUIRED },
- { "segment", "nasm", dir_section, YASM_DIR_ARG_REQUIRED },
- { NULL, NULL, NULL, 0 }
-};
-
-static void
-directive_level2_delete(/*@only@*/ void *data)
-{
- yasm_xfree(data);
-}
-
-static void
-directive_level1_delete(/*@only@*/ void *data)
-{
- HAMT_destroy(data, directive_level2_delete);
-}
-
-static void
-directives_add(yasm_object *object, /*@null@*/ const yasm_directive *dir)
-{
- if (!dir)
- return;
-
- while (dir->name) {
- HAMT *level2 = HAMT_search(object->directives, dir->parser);
- int replace;
- yasm_directive_wrap *wrap = yasm_xmalloc(sizeof(yasm_directive_wrap));
-
- if (!level2) {
- replace = 0;
- level2 = HAMT_insert(object->directives, dir->parser,
- HAMT_create(1, yasm_internal_error_),
- &replace, directive_level1_delete);
- }
- replace = 0;
- wrap->directive = dir;
- HAMT_insert(level2, dir->name, wrap, &replace,
- directive_level2_delete);
- dir++;
- }
-}
-
-/*@-compdestroy@*/
-yasm_object *
-yasm_object_create(const char *src_filename, const char *obj_filename,
- /*@kept@*/ yasm_arch *arch,
- const yasm_objfmt_module *objfmt_module,
- const yasm_dbgfmt_module *dbgfmt_module)
-{
- yasm_object *object = yasm_xmalloc(sizeof(yasm_object));
- int matched, i;
-
- object->src_filename = yasm__xstrdup(src_filename);
+/*
+ * Section utility functions
+ *
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "util.h"
+
+#include <limits.h>
+
+#include "libyasm-stdint.h"
+#include "coretype.h"
+#include "hamt.h"
+#include "valparam.h"
+#include "assocdat.h"
+
+#include "linemap.h"
+#include "errwarn.h"
+#include "intnum.h"
+#include "expr.h"
+#include "value.h"
+#include "symrec.h"
+
+#include "bytecode.h"
+#include "arch.h"
+#include "section.h"
+
+#include "dbgfmt.h"
+#include "objfmt.h"
+
+#include "inttree.h"
+
+
+struct yasm_section {
+ /*@reldef@*/ STAILQ_ENTRY(yasm_section) link;
+
+ /*@dependent@*/ yasm_object *object; /* Pointer to parent object */
+
+ /*@owned@*/ char *name; /* strdup()'ed name (given by user) */
+
+ /* associated data; NULL if none */
+ /*@null@*/ /*@only@*/ yasm__assoc_data *assoc_data;
+
+ unsigned long align; /* Section alignment */
+
+ unsigned long opt_flags; /* storage for optimizer flags */
+
+ int code; /* section contains code (instructions) */
+ int res_only; /* allow only resb family of bytecodes? */
+ int def; /* "default" section, e.g. not specified by
+ using section directive */
+
+ /* the bytecodes for the section's contents */
+ /*@reldef@*/ STAILQ_HEAD(yasm_bytecodehead, yasm_bytecode) bcs;
+
+ /* the relocations for the section */
+ /*@reldef@*/ STAILQ_HEAD(yasm_relochead, yasm_reloc) relocs;
+
+ void (*destroy_reloc) (/*@only@*/ void *reloc);
+};
+
+static void yasm_section_destroy(/*@only@*/ yasm_section *sect);
+
+/* Wrapper around directive for HAMT insertion */
+typedef struct yasm_directive_wrap {
+ const yasm_directive *directive;
+} yasm_directive_wrap;
+
+/*
+ * Standard "builtin" object directives.
+ */
+
+static void
+dir_extern(yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_valparam *vp = yasm_vps_first(valparams);
+ yasm_symrec *sym;
+ sym = yasm_symtab_declare(object->symtab, yasm_vp_id(vp), YASM_SYM_EXTERN,
+ line);
+ if (objext_valparams) {
+ yasm_valparamhead *vps = yasm_vps_create();
+ *vps = *objext_valparams; /* structure copy */
+ yasm_vps_initialize(objext_valparams); /* don't double-free */
+ yasm_symrec_set_objext_valparams(sym, vps);
+ }
+}
+
+static void
+dir_global(yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_valparam *vp = yasm_vps_first(valparams);
+ yasm_symrec *sym;
+ sym = yasm_symtab_declare(object->symtab, yasm_vp_id(vp), YASM_SYM_GLOBAL,
+ line);
+ if (objext_valparams) {
+ yasm_valparamhead *vps = yasm_vps_create();
+ *vps = *objext_valparams; /* structure copy */
+ yasm_vps_initialize(objext_valparams); /* don't double-free */
+ yasm_symrec_set_objext_valparams(sym, vps);
+ }
+}
+
+static void
+dir_common(yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_valparam *vp = yasm_vps_first(valparams);
+ yasm_valparam *vp2 = yasm_vps_next(vp);
+ yasm_expr *size = yasm_vp_expr(vp2, object->symtab, line);
+ yasm_symrec *sym;
+
+ if (!size) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("no size specified in %s declaration"), "COMMON");
+ return;
+ }
+ sym = yasm_symtab_declare(object->symtab, yasm_vp_id(vp), YASM_SYM_COMMON,
+ line);
+ yasm_symrec_set_common_size(sym, size);
+ if (objext_valparams) {
+ yasm_valparamhead *vps = yasm_vps_create();
+ *vps = *objext_valparams; /* structure copy */
+ yasm_vps_initialize(objext_valparams); /* don't double-free */
+ yasm_symrec_set_objext_valparams(sym, vps);
+ }
+}
+
+static void
+dir_section(yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_section *new_section =
+ yasm_objfmt_section_switch(object, valparams, objext_valparams, line);
+ if (new_section)
+ object->cur_section = new_section;
+ else
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("invalid argument to directive `%s'"), "SECTION");
+}
+
+static const yasm_directive object_directives[] = {
+ { ".extern", "gas", dir_extern, YASM_DIR_ID_REQUIRED },
+ { ".global", "gas", dir_global, YASM_DIR_ID_REQUIRED },
+ { ".globl", "gas", dir_global, YASM_DIR_ID_REQUIRED },
+ { "extern", "nasm", dir_extern, YASM_DIR_ID_REQUIRED },
+ { "global", "nasm", dir_global, YASM_DIR_ID_REQUIRED },
+ { "common", "nasm", dir_common, YASM_DIR_ID_REQUIRED },
+ { "section", "nasm", dir_section, YASM_DIR_ARG_REQUIRED },
+ { "segment", "nasm", dir_section, YASM_DIR_ARG_REQUIRED },
+ { NULL, NULL, NULL, 0 }
+};
+
+static void
+directive_level2_delete(/*@only@*/ void *data)
+{
+ yasm_xfree(data);
+}
+
+static void
+directive_level1_delete(/*@only@*/ void *data)
+{
+ HAMT_destroy(data, directive_level2_delete);
+}
+
+static void
+directives_add(yasm_object *object, /*@null@*/ const yasm_directive *dir)
+{
+ if (!dir)
+ return;
+
+ while (dir->name) {
+ HAMT *level2 = HAMT_search(object->directives, dir->parser);
+ int replace;
+ yasm_directive_wrap *wrap = yasm_xmalloc(sizeof(yasm_directive_wrap));
+
+ if (!level2) {
+ replace = 0;
+ level2 = HAMT_insert(object->directives, dir->parser,
+ HAMT_create(1, yasm_internal_error_),
+ &replace, directive_level1_delete);
+ }
+ replace = 0;
+ wrap->directive = dir;
+ HAMT_insert(level2, dir->name, wrap, &replace,
+ directive_level2_delete);
+ dir++;
+ }
+}
+
+/*@-compdestroy@*/
+yasm_object *
+yasm_object_create(const char *src_filename, const char *obj_filename,
+ /*@kept@*/ yasm_arch *arch,
+ const yasm_objfmt_module *objfmt_module,
+ const yasm_dbgfmt_module *dbgfmt_module)
+{
+ yasm_object *object = yasm_xmalloc(sizeof(yasm_object));
+ int matched, i;
+
+ object->src_filename = yasm__xstrdup(src_filename);
object->deb_filename = NULL;
- object->obj_filename = yasm__xstrdup(obj_filename);
-
- /* No prefix/suffix */
- object->global_prefix = yasm__xstrdup("");
- object->global_suffix = yasm__xstrdup("");
-
- /* Create empty symbol table */
- object->symtab = yasm_symtab_create();
-
- /* Initialize sections linked list */
- STAILQ_INIT(&object->sections);
-
- /* Create directives HAMT */
- object->directives = HAMT_create(1, yasm_internal_error_);
-
- /* Initialize the target architecture */
- object->arch = arch;
-
- /* Initialize things to NULL in case of error */
- object->dbgfmt = NULL;
-
- /* Initialize the object format */
- object->objfmt = yasm_objfmt_create(objfmt_module, object);
- if (!object->objfmt) {
- yasm_error_set(YASM_ERROR_GENERAL,
- N_("object format `%s' does not support architecture `%s' machine `%s'"),
- objfmt_module->keyword, ((yasm_arch_base *)arch)->module->keyword,
- yasm_arch_get_machine(arch));
- goto error;
- }
-
- /* Get a fresh copy of objfmt_module as it may have changed. */
- objfmt_module = ((yasm_objfmt_base *)object->objfmt)->module;
-
- /* Add an initial "default" section to object */
- object->cur_section = yasm_objfmt_add_default_section(object);
-
- /* Check to see if the requested debug format is in the allowed list
- * for the active object format.
- */
- matched = 0;
- for (i=0; objfmt_module->dbgfmt_keywords[i]; i++) {
- if (yasm__strcasecmp(objfmt_module->dbgfmt_keywords[i],
- dbgfmt_module->keyword) == 0) {
- matched = 1;
- break;
- }
- }
-
- if (!matched) {
- yasm_error_set(YASM_ERROR_GENERAL,
- N_("`%s' is not a valid debug format for object format `%s'"),
- dbgfmt_module->keyword, objfmt_module->keyword);
- goto error;
- }
-
- /* Initialize the debug format */
- object->dbgfmt = yasm_dbgfmt_create(dbgfmt_module, object);
- if (!object->dbgfmt) {
- yasm_error_set(YASM_ERROR_GENERAL,
- N_("debug format `%s' does not work with object format `%s'"),
- dbgfmt_module->keyword, objfmt_module->keyword);
- goto error;
- }
-
- /* Add directives to HAMT. Note ordering here determines priority. */
- directives_add(object,
- ((yasm_objfmt_base *)object->objfmt)->module->directives);
- directives_add(object,
- ((yasm_dbgfmt_base *)object->dbgfmt)->module->directives);
- directives_add(object,
- ((yasm_arch_base *)object->arch)->module->directives);
- directives_add(object, object_directives);
-
- return object;
-
-error:
- yasm_object_destroy(object);
- return NULL;
-}
-/*@=compdestroy@*/
-
-/*@-onlytrans@*/
-yasm_section *
-yasm_object_get_general(yasm_object *object, const char *name,
- unsigned long align, int code, int res_only,
- int *isnew, unsigned long line)
-{
- yasm_section *s;
- yasm_bytecode *bc;
-
- /* Search through current sections to see if we already have one with
- * that name.
- */
- STAILQ_FOREACH(s, &object->sections, link) {
- if (strcmp(s->name, name) == 0) {
- *isnew = 0;
- return s;
- }
- }
-
- /* No: we have to allocate and create a new one. */
-
- /* Okay, the name is valid; now allocate and initialize */
- s = yasm_xcalloc(1, sizeof(yasm_section));
- STAILQ_INSERT_TAIL(&object->sections, s, link);
-
- s->object = object;
- s->name = yasm__xstrdup(name);
- s->assoc_data = NULL;
- s->align = align;
-
- /* Initialize bytecodes with one empty bytecode (acts as "prior" for first
- * real bytecode in section.
- */
- STAILQ_INIT(&s->bcs);
- bc = yasm_bc_create_common(NULL, NULL, 0);
- bc->section = s;
- bc->offset = 0;
- STAILQ_INSERT_TAIL(&s->bcs, bc, link);
-
- /* Initialize relocs */
- STAILQ_INIT(&s->relocs);
- s->destroy_reloc = NULL;
-
- s->code = code;
- s->res_only = res_only;
- s->def = 0;
-
- /* Initialize object format specific data */
- yasm_objfmt_init_new_section(s, line);
-
- *isnew = 1;
- return s;
-}
-/*@=onlytrans@*/
-
-int
-yasm_object_directive(yasm_object *object, const char *name,
- const char *parser, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams,
- unsigned long line)
-{
- HAMT *level2;
- yasm_directive_wrap *wrap;
-
- level2 = HAMT_search(object->directives, parser);
- if (!level2)
- return 1;
-
- wrap = HAMT_search(level2, name);
- if (!wrap)
- return 1;
-
- yasm_call_directive(wrap->directive, object, valparams, objext_valparams,
- line);
- return 0;
-}
-
-void
-yasm_object_set_source_fn(yasm_object *object, const char *src_filename)
-{
- yasm_xfree(object->src_filename);
- object->src_filename = yasm__xstrdup(src_filename);
+ object->obj_filename = yasm__xstrdup(obj_filename);
+
+ /* No prefix/suffix */
+ object->global_prefix = yasm__xstrdup("");
+ object->global_suffix = yasm__xstrdup("");
+
+ /* Create empty symbol table */
+ object->symtab = yasm_symtab_create();
+
+ /* Initialize sections linked list */
+ STAILQ_INIT(&object->sections);
+
+ /* Create directives HAMT */
+ object->directives = HAMT_create(1, yasm_internal_error_);
+
+ /* Initialize the target architecture */
+ object->arch = arch;
+
+ /* Initialize things to NULL in case of error */
+ object->dbgfmt = NULL;
+
+ /* Initialize the object format */
+ object->objfmt = yasm_objfmt_create(objfmt_module, object);
+ if (!object->objfmt) {
+ yasm_error_set(YASM_ERROR_GENERAL,
+ N_("object format `%s' does not support architecture `%s' machine `%s'"),
+ objfmt_module->keyword, ((yasm_arch_base *)arch)->module->keyword,
+ yasm_arch_get_machine(arch));
+ goto error;
+ }
+
+ /* Get a fresh copy of objfmt_module as it may have changed. */
+ objfmt_module = ((yasm_objfmt_base *)object->objfmt)->module;
+
+ /* Add an initial "default" section to object */
+ object->cur_section = yasm_objfmt_add_default_section(object);
+
+ /* Check to see if the requested debug format is in the allowed list
+ * for the active object format.
+ */
+ matched = 0;
+ for (i=0; objfmt_module->dbgfmt_keywords[i]; i++) {
+ if (yasm__strcasecmp(objfmt_module->dbgfmt_keywords[i],
+ dbgfmt_module->keyword) == 0) {
+ matched = 1;
+ break;
+ }
+ }
+
+ if (!matched) {
+ yasm_error_set(YASM_ERROR_GENERAL,
+ N_("`%s' is not a valid debug format for object format `%s'"),
+ dbgfmt_module->keyword, objfmt_module->keyword);
+ goto error;
+ }
+
+ /* Initialize the debug format */
+ object->dbgfmt = yasm_dbgfmt_create(dbgfmt_module, object);
+ if (!object->dbgfmt) {
+ yasm_error_set(YASM_ERROR_GENERAL,
+ N_("debug format `%s' does not work with object format `%s'"),
+ dbgfmt_module->keyword, objfmt_module->keyword);
+ goto error;
+ }
+
+ /* Add directives to HAMT. Note ordering here determines priority. */
+ directives_add(object,
+ ((yasm_objfmt_base *)object->objfmt)->module->directives);
+ directives_add(object,
+ ((yasm_dbgfmt_base *)object->dbgfmt)->module->directives);
+ directives_add(object,
+ ((yasm_arch_base *)object->arch)->module->directives);
+ directives_add(object, object_directives);
+
+ return object;
+
+error:
+ yasm_object_destroy(object);
+ return NULL;
+}
+/*@=compdestroy@*/
+
+/*@-onlytrans@*/
+yasm_section *
+yasm_object_get_general(yasm_object *object, const char *name,
+ unsigned long align, int code, int res_only,
+ int *isnew, unsigned long line)
+{
+ yasm_section *s;
+ yasm_bytecode *bc;
+
+ /* Search through current sections to see if we already have one with
+ * that name.
+ */
+ STAILQ_FOREACH(s, &object->sections, link) {
+ if (strcmp(s->name, name) == 0) {
+ *isnew = 0;
+ return s;
+ }
+ }
+
+ /* No: we have to allocate and create a new one. */
+
+ /* Okay, the name is valid; now allocate and initialize */
+ s = yasm_xcalloc(1, sizeof(yasm_section));
+ STAILQ_INSERT_TAIL(&object->sections, s, link);
+
+ s->object = object;
+ s->name = yasm__xstrdup(name);
+ s->assoc_data = NULL;
+ s->align = align;
+
+ /* Initialize bytecodes with one empty bytecode (acts as "prior" for first
+ * real bytecode in section.
+ */
+ STAILQ_INIT(&s->bcs);
+ bc = yasm_bc_create_common(NULL, NULL, 0);
+ bc->section = s;
+ bc->offset = 0;
+ STAILQ_INSERT_TAIL(&s->bcs, bc, link);
+
+ /* Initialize relocs */
+ STAILQ_INIT(&s->relocs);
+ s->destroy_reloc = NULL;
+
+ s->code = code;
+ s->res_only = res_only;
+ s->def = 0;
+
+ /* Initialize object format specific data */
+ yasm_objfmt_init_new_section(s, line);
+
+ *isnew = 1;
+ return s;
+}
+/*@=onlytrans@*/
+
+int
+yasm_object_directive(yasm_object *object, const char *name,
+ const char *parser, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams,
+ unsigned long line)
+{
+ HAMT *level2;
+ yasm_directive_wrap *wrap;
+
+ level2 = HAMT_search(object->directives, parser);
+ if (!level2)
+ return 1;
+
+ wrap = HAMT_search(level2, name);
+ if (!wrap)
+ return 1;
+
+ yasm_call_directive(wrap->directive, object, valparams, objext_valparams,
+ line);
+ return 0;
+}
+
+void
+yasm_object_set_source_fn(yasm_object *object, const char *src_filename)
+{
+ yasm_xfree(object->src_filename);
+ object->src_filename = yasm__xstrdup(src_filename);
yasm_xfree(object->deb_filename);
object->deb_filename = NULL;
-}
-
-void
-yasm_object_set_global_prefix(yasm_object *object, const char *prefix)
-{
- yasm_xfree(object->global_prefix);
- object->global_prefix = yasm__xstrdup(prefix);
-}
-
-void
-yasm_object_set_global_suffix(yasm_object *object, const char *suffix)
-{
- yasm_xfree(object->global_suffix);
- object->global_suffix = yasm__xstrdup(suffix);
-}
-
-int
-yasm_section_is_code(yasm_section *sect)
-{
- return sect->code;
-}
-
-unsigned long
-yasm_section_get_opt_flags(const yasm_section *sect)
-{
- return sect->opt_flags;
-}
-
-void
-yasm_section_set_opt_flags(yasm_section *sect, unsigned long opt_flags)
-{
- sect->opt_flags = opt_flags;
-}
-
-int
-yasm_section_is_default(const yasm_section *sect)
-{
- return sect->def;
-}
-
-void
-yasm_section_set_default(yasm_section *sect, int def)
-{
- sect->def = def;
-}
-
-yasm_object *
-yasm_section_get_object(const yasm_section *sect)
-{
- return sect->object;
-}
-
-void *
-yasm_section_get_data(yasm_section *sect,
- const yasm_assoc_data_callback *callback)
-{
- return yasm__assoc_data_get(sect->assoc_data, callback);
-}
-
-void
-yasm_section_add_data(yasm_section *sect,
- const yasm_assoc_data_callback *callback, void *data)
-{
- sect->assoc_data = yasm__assoc_data_add(sect->assoc_data, callback, data);
-}
-
-void
-yasm_object_destroy(yasm_object *object)
-{
- yasm_section *cur, *next;
-
- /* Delete object format, debug format, and arch. This can be called
- * due to an error in yasm_object_create(), so look out for NULLs.
- */
- if (object->objfmt)
- yasm_objfmt_destroy(object->objfmt);
- if (object->dbgfmt)
- yasm_dbgfmt_destroy(object->dbgfmt);
-
- /* Delete sections */
- cur = STAILQ_FIRST(&object->sections);
- while (cur) {
- next = STAILQ_NEXT(cur, link);
- yasm_section_destroy(cur);
- cur = next;
- }
-
- /* Delete directives HAMT */
- HAMT_destroy(object->directives, directive_level1_delete);
-
- /* Delete prefix/suffix */
- yasm_xfree(object->global_prefix);
- yasm_xfree(object->global_suffix);
-
- /* Delete associated filenames */
- yasm_xfree(object->src_filename);
+}
+
+void
+yasm_object_set_global_prefix(yasm_object *object, const char *prefix)
+{
+ yasm_xfree(object->global_prefix);
+ object->global_prefix = yasm__xstrdup(prefix);
+}
+
+void
+yasm_object_set_global_suffix(yasm_object *object, const char *suffix)
+{
+ yasm_xfree(object->global_suffix);
+ object->global_suffix = yasm__xstrdup(suffix);
+}
+
+int
+yasm_section_is_code(yasm_section *sect)
+{
+ return sect->code;
+}
+
+unsigned long
+yasm_section_get_opt_flags(const yasm_section *sect)
+{
+ return sect->opt_flags;
+}
+
+void
+yasm_section_set_opt_flags(yasm_section *sect, unsigned long opt_flags)
+{
+ sect->opt_flags = opt_flags;
+}
+
+int
+yasm_section_is_default(const yasm_section *sect)
+{
+ return sect->def;
+}
+
+void
+yasm_section_set_default(yasm_section *sect, int def)
+{
+ sect->def = def;
+}
+
+yasm_object *
+yasm_section_get_object(const yasm_section *sect)
+{
+ return sect->object;
+}
+
+void *
+yasm_section_get_data(yasm_section *sect,
+ const yasm_assoc_data_callback *callback)
+{
+ return yasm__assoc_data_get(sect->assoc_data, callback);
+}
+
+void
+yasm_section_add_data(yasm_section *sect,
+ const yasm_assoc_data_callback *callback, void *data)
+{
+ sect->assoc_data = yasm__assoc_data_add(sect->assoc_data, callback, data);
+}
+
+void
+yasm_object_destroy(yasm_object *object)
+{
+ yasm_section *cur, *next;
+
+ /* Delete object format, debug format, and arch. This can be called
+ * due to an error in yasm_object_create(), so look out for NULLs.
+ */
+ if (object->objfmt)
+ yasm_objfmt_destroy(object->objfmt);
+ if (object->dbgfmt)
+ yasm_dbgfmt_destroy(object->dbgfmt);
+
+ /* Delete sections */
+ cur = STAILQ_FIRST(&object->sections);
+ while (cur) {
+ next = STAILQ_NEXT(cur, link);
+ yasm_section_destroy(cur);
+ cur = next;
+ }
+
+ /* Delete directives HAMT */
+ HAMT_destroy(object->directives, directive_level1_delete);
+
+ /* Delete prefix/suffix */
+ yasm_xfree(object->global_prefix);
+ yasm_xfree(object->global_suffix);
+
+ /* Delete associated filenames */
+ yasm_xfree(object->src_filename);
yasm_xfree(object->deb_filename);
- yasm_xfree(object->obj_filename);
-
- /* Delete symbol table */
- yasm_symtab_destroy(object->symtab);
-
- /* Delete architecture */
- if (object->arch)
- yasm_arch_destroy(object->arch);
-
- yasm_xfree(object);
-}
-
-void
-yasm_object_print(const yasm_object *object, FILE *f, int indent_level)
-{
- yasm_section *cur;
-
- /* Print symbol table */
- fprintf(f, "%*sSymbol Table:\n", indent_level, "");
- yasm_symtab_print(object->symtab, f, indent_level+1);
-
- /* Print sections and bytecodes */
- STAILQ_FOREACH(cur, &object->sections, link) {
- fprintf(f, "%*sSection:\n", indent_level, "");
- yasm_section_print(cur, f, indent_level+1, 1);
- }
-}
-
-void
-yasm_object_finalize(yasm_object *object, yasm_errwarns *errwarns)
-{
- yasm_section *sect;
-
- /* Iterate through sections */
- STAILQ_FOREACH(sect, &object->sections, link) {
- yasm_bytecode *cur = STAILQ_FIRST(&sect->bcs);
- yasm_bytecode *prev;
-
- /* Skip our locally created empty bytecode first. */
- prev = cur;
- cur = STAILQ_NEXT(cur, link);
-
- /* Iterate through the remainder, if any. */
- while (cur) {
- /* Finalize */
- yasm_bc_finalize(cur, prev);
- yasm_errwarn_propagate(errwarns, cur->line);
- prev = cur;
- cur = STAILQ_NEXT(cur, link);
- }
- }
-}
-
-int
-yasm_object_sections_traverse(yasm_object *object, /*@null@*/ void *d,
- int (*func) (yasm_section *sect,
- /*@null@*/ void *d))
-{
- yasm_section *cur;
-
- STAILQ_FOREACH(cur, &object->sections, link) {
- int retval = func(cur, d);
- if (retval != 0)
- return retval;
- }
- return 0;
-}
-
-/*@-onlytrans@*/
-yasm_section *
-yasm_object_find_general(yasm_object *object, const char *name)
-{
- yasm_section *cur;
-
- STAILQ_FOREACH(cur, &object->sections, link) {
- if (strcmp(cur->name, name) == 0)
- return cur;
- }
- return NULL;
-}
-/*@=onlytrans@*/
-
-void
-yasm_section_add_reloc(yasm_section *sect, yasm_reloc *reloc,
- void (*destroy_func) (/*@only@*/ void *reloc))
-{
- STAILQ_INSERT_TAIL(&sect->relocs, reloc, link);
- if (!destroy_func)
- yasm_internal_error(N_("NULL destroy function given to add_reloc"));
- else if (sect->destroy_reloc && destroy_func != sect->destroy_reloc)
- yasm_internal_error(N_("different destroy function given to add_reloc"));
- sect->destroy_reloc = destroy_func;
-}
-
-/*@null@*/ yasm_reloc *
-yasm_section_relocs_first(yasm_section *sect)
-{
- return STAILQ_FIRST(&sect->relocs);
-}
-
-#undef yasm_section_reloc_next
-/*@null@*/ yasm_reloc *
-yasm_section_reloc_next(yasm_reloc *reloc)
-{
- return STAILQ_NEXT(reloc, link);
-}
-
-void
-yasm_reloc_get(yasm_reloc *reloc, yasm_intnum **addrp, yasm_symrec **symp)
-{
- *addrp = reloc->addr;
- *symp = reloc->sym;
-}
-
-
-yasm_bytecode *
-yasm_section_bcs_first(yasm_section *sect)
-{
- return STAILQ_FIRST(&sect->bcs);
-}
-
-yasm_bytecode *
-yasm_section_bcs_last(yasm_section *sect)
-{
- return STAILQ_LAST(&sect->bcs, yasm_bytecode, link);
-}
-
-yasm_bytecode *
-yasm_section_bcs_append(yasm_section *sect, yasm_bytecode *bc)
-{
- if (bc) {
- if (bc->callback) {
- bc->section = sect; /* record parent section */
- STAILQ_INSERT_TAIL(&sect->bcs, bc, link);
- return bc;
- } else
- yasm_xfree(bc);
- }
- return (yasm_bytecode *)NULL;
-}
-
-int
-yasm_section_bcs_traverse(yasm_section *sect,
- /*@null@*/ yasm_errwarns *errwarns,
- /*@null@*/ void *d,
- int (*func) (yasm_bytecode *bc, /*@null@*/ void *d))
-{
- yasm_bytecode *cur = STAILQ_FIRST(&sect->bcs);
-
- /* Skip our locally created empty bytecode first. */
- cur = STAILQ_NEXT(cur, link);
-
- /* Iterate through the remainder, if any. */
- while (cur) {
- int retval = func(cur, d);
- if (errwarns)
- yasm_errwarn_propagate(errwarns, cur->line);
- if (retval != 0)
- return retval;
- cur = STAILQ_NEXT(cur, link);
- }
- return 0;
-}
-
-const char *
-yasm_section_get_name(const yasm_section *sect)
-{
- return sect->name;
-}
-
-void
-yasm_section_set_align(yasm_section *sect, unsigned long align,
- unsigned long line)
-{
- sect->align = align;
-}
-
-unsigned long
-yasm_section_get_align(const yasm_section *sect)
-{
- return sect->align;
-}
-
-static void
-yasm_section_destroy(yasm_section *sect)
-{
- yasm_bytecode *cur, *next;
- yasm_reloc *r_cur, *r_next;
-
- if (!sect)
- return;
-
- yasm_xfree(sect->name);
- yasm__assoc_data_destroy(sect->assoc_data);
-
- /* Delete bytecodes */
- cur = STAILQ_FIRST(&sect->bcs);
- while (cur) {
- next = STAILQ_NEXT(cur, link);
- yasm_bc_destroy(cur);
- cur = next;
- }
-
- /* Delete relocations */
- r_cur = STAILQ_FIRST(&sect->relocs);
- while (r_cur) {
- r_next = STAILQ_NEXT(r_cur, link);
- yasm_intnum_destroy(r_cur->addr);
- sect->destroy_reloc(r_cur);
- r_cur = r_next;
- }
-
- yasm_xfree(sect);
-}
-
-void
-yasm_section_print(const yasm_section *sect, FILE *f, int indent_level,
- int print_bcs)
-{
- if (!sect) {
- fprintf(f, "%*s(none)\n", indent_level, "");
- return;
- }
-
- fprintf(f, "%*sname=%s\n", indent_level, "", sect->name);
-
- if (sect->assoc_data) {
- fprintf(f, "%*sAssociated data:\n", indent_level, "");
- yasm__assoc_data_print(sect->assoc_data, f, indent_level+1);
- }
-
- if (print_bcs) {
- yasm_bytecode *cur;
-
- fprintf(f, "%*sBytecodes:\n", indent_level, "");
-
- STAILQ_FOREACH(cur, &sect->bcs, link) {
- fprintf(f, "%*sNext Bytecode:\n", indent_level+1, "");
- yasm_bc_print(cur, f, indent_level+2);
- }
- }
-}
-
-/*
- * Robertson (1977) optimizer
- * Based (somewhat loosely) on the algorithm given in:
- * MRC Technical Summary Report # 1779
- * CODE GENERATION FOR SHORT/LONG ADDRESS MACHINES
- * Edward L. Robertson
- * Mathematics Research Center
- * University of Wisconsin-Madison
- * 610 Walnut Street
- * Madison, Wisconsin 53706
- * August 1977
- *
- * Key components of algorithm:
- * - start assuming all short forms
- * - build spans for short->long transition dependencies
- * - if a long form is needed, walk the dependencies and update
- * Major differences from Robertson's algorithm:
- * - detection of cycles
- * - any difference of two locations is allowed
- * - handling of alignment/org gaps (offset setting)
- * - handling of multiples
- *
- * Data structures:
- * - Interval tree to store spans and associated data
- * - Queues QA and QB
- *
- * Each span keeps track of:
- * - Associated bytecode (bytecode that depends on the span length)
- * - Active/inactive state (starts out active)
- * - Sign (negative/positive; negative being "backwards" in address)
- * - Current length in bytes
- * - New length in bytes
- * - Negative/Positive thresholds
- * - Span ID (unique within each bytecode)
- *
- * How org and align and any other offset-based bytecodes are handled:
- *
- * Some portions are critical values that must not depend on any bytecode
- * offset (either relative or absolute).
- *
- * All offset-setters (ORG and ALIGN) are put into a linked list in section
- * order (e.g. increasing offset order). Each span keeps track of the next
- * offset-setter following the span's associated bytecode.
- *
- * When a bytecode is expanded, the next offset-setter is examined. The
- * offset-setter may be able to absorb the expansion (e.g. any offset
- * following it would not change), or it may have to move forward (in the
- * case of align) or error (in the case of org). If it has to move forward,
- * following offset-setters must also be examined for absorption or moving
- * forward. In either case, the ongoing offset is updated as well as the
- * lengths of any spans dependent on the offset-setter.
- *
- * Alignment/ORG value is critical value.
- * Cannot be combined with TIMES.
- *
- * How times is handled:
- *
- * TIMES: Handled separately from bytecode "raw" size. If not span-dependent,
- * trivial (just multiplied in at any bytecode size increase). Span
- * dependent times update on any change (span ID 0). If the resultant
- * next bytecode offset would be less than the old next bytecode offset,
- * error. Otherwise increase offset and update dependent spans.
- *
- * To reduce interval tree size, a first expansion pass is performed
- * before the spans are added to the tree.
- *
- * Basic algorithm outline:
- *
- * 1. Initialization:
- * a. Number bytecodes sequentially (via bc_index) and calculate offsets
- * of all bytecodes assuming minimum length, building a list of all
- * dependent spans as we go.
- * "minimum" here means absolute minimum:
- * - align/org (offset-based) bumps offset as normal
- * - times values (with span-dependent values) assumed to be 0
- * b. Iterate over spans. Set span length based on bytecode offsets
- * determined in 1a. If span is "certainly" long because the span
- * is an absolute reference to another section (or external) or the
- * distance calculated based on the minimum length is greater than the
- * span's threshold, expand the span's bytecode, and if no further
- * expansion can result, mark span as inactive.
- * c. Iterate over bytecodes to update all bytecode offsets based on new
- * (expanded) lengths calculated in 1b.
- * d. Iterate over active spans. Add span to interval tree. Update span's
- * length based on new bytecode offsets determined in 1c. If span's
- * length exceeds long threshold, add that span to Q.
- * 2. Main loop:
- * While Q not empty:
- * Expand BC dependent on span at head of Q (and remove span from Q).
- * Update span:
- * If BC no longer dependent on span, mark span as inactive.
- * If BC has new thresholds for span, update span.
- * If BC increased in size, for each active span that contains BC:
- * Increase span length by difference between short and long BC length.
- * If span exceeds long threshold (or is flagged to recalculate on any
- * change), add it to tail of Q.
- * 3. Final pass over bytecodes to generate final offsets.
- */
-
-typedef struct yasm_span yasm_span;
-
-typedef struct yasm_offset_setter {
- /* Linked list in section order (e.g. offset order) */
- /*@reldef@*/ STAILQ_ENTRY(yasm_offset_setter) link;
-
- /*@dependent@*/ yasm_bytecode *bc;
-
- unsigned long cur_val, new_val;
- unsigned long thres;
-} yasm_offset_setter;
-
-typedef struct yasm_span_term {
- yasm_bytecode *precbc, *precbc2;
- yasm_span *span; /* span this term is a member of */
- long cur_val, new_val;
- unsigned int subst;
-} yasm_span_term;
-
-struct yasm_span {
- /*@reldef@*/ TAILQ_ENTRY(yasm_span) link; /* for allocation tracking */
- /*@reldef@*/ STAILQ_ENTRY(yasm_span) linkq; /* for Q */
-
- /*@dependent@*/ yasm_bytecode *bc;
-
- yasm_value depval;
-
- /* span term for relative portion of value */
- yasm_span_term *rel_term;
- /* span terms in absolute portion of value */
- yasm_span_term *terms;
- yasm_expr__item *items;
- unsigned int num_terms;
-
- long cur_val;
- long new_val;
-
- long neg_thres;
- long pos_thres;
-
- int id;
-
- int active;
-
- /* NULL-terminated array of spans that led to this span. Used only for
- * checking for circular references (cycles) with id=0 spans.
- */
- yasm_span **backtrace;
- int backtrace_size;
-
- /* First offset setter following this span's bytecode */
- yasm_offset_setter *os;
-};
-
-typedef struct optimize_data {
- /*@reldef@*/ TAILQ_HEAD(yasm_span_head, yasm_span) spans;
- /*@reldef@*/ STAILQ_HEAD(yasm_span_shead, yasm_span) QA, QB;
- /*@only@*/ IntervalTree *itree;
- /*@reldef@*/ STAILQ_HEAD(offset_setters_head, yasm_offset_setter)
- offset_setters;
- long len_diff; /* used only for optimize_term_expand */
- yasm_span *span; /* used only for check_cycle */
- yasm_offset_setter *os;
-} optimize_data;
-
-static yasm_span *
-create_span(yasm_bytecode *bc, int id, /*@null@*/ const yasm_value *value,
- long neg_thres, long pos_thres, yasm_offset_setter *os)
-{
- yasm_span *span = yasm_xmalloc(sizeof(yasm_span));
-
- span->bc = bc;
- if (value)
- yasm_value_init_copy(&span->depval, value);
- else
- yasm_value_initialize(&span->depval, NULL, 0);
- span->rel_term = NULL;
- span->terms = NULL;
- span->items = NULL;
- span->num_terms = 0;
- span->cur_val = 0;
- span->new_val = 0;
- span->neg_thres = neg_thres;
- span->pos_thres = pos_thres;
- span->id = id;
- span->active = 1;
- span->backtrace = NULL;
- span->backtrace_size = 0;
- span->os = os;
-
- return span;
-}
-
-static void
-optimize_add_span(void *add_span_data, yasm_bytecode *bc, int id,
- const yasm_value *value, long neg_thres, long pos_thres)
-{
- optimize_data *optd = (optimize_data *)add_span_data;
- yasm_span *span;
- span = create_span(bc, id, value, neg_thres, pos_thres, optd->os);
- TAILQ_INSERT_TAIL(&optd->spans, span, link);
-}
-
-static void
-add_span_term(unsigned int subst, yasm_bytecode *precbc,
- yasm_bytecode *precbc2, void *d)
-{
- yasm_span *span = d;
- yasm_intnum *intn;
-
- if (subst >= span->num_terms) {
- /* Linear expansion since total number is essentially always small */
- span->num_terms = subst+1;
- span->terms = yasm_xrealloc(span->terms,
- span->num_terms*sizeof(yasm_span_term));
- }
- span->terms[subst].precbc = precbc;
- span->terms[subst].precbc2 = precbc2;
- span->terms[subst].span = span;
- span->terms[subst].subst = subst;
-
- intn = yasm_calc_bc_dist(precbc, precbc2);
- if (!intn)
- yasm_internal_error(N_("could not calculate bc distance"));
- span->terms[subst].cur_val = 0;
- span->terms[subst].new_val = yasm_intnum_get_int(intn);
- yasm_intnum_destroy(intn);
-}
-
-static void
-span_create_terms(yasm_span *span)
-{
- unsigned int i;
-
- /* Split out sym-sym terms in absolute portion of dependent value */
- if (span->depval.abs) {
- span->num_terms = yasm_expr__bc_dist_subst(&span->depval.abs, span,
- add_span_term);
- if (span->num_terms > 0) {
- span->items = yasm_xmalloc(span->num_terms*sizeof(yasm_expr__item));
- for (i=0; i<span->num_terms; i++) {
- /* Create items with dummy value */
- span->items[i].type = YASM_EXPR_INT;
- span->items[i].data.intn = yasm_intnum_create_int(0);
-
- /* Check for circular references */
- if (span->id <= 0 &&
- ((span->bc->bc_index > span->terms[i].precbc->bc_index &&
- span->bc->bc_index <= span->terms[i].precbc2->bc_index) ||
- (span->bc->bc_index > span->terms[i].precbc2->bc_index &&
- span->bc->bc_index <= span->terms[i].precbc->bc_index)))
- yasm_error_set(YASM_ERROR_VALUE,
- N_("circular reference detected"));
- }
- }
- }
-
- /* Create term for relative portion of dependent value */
- if (span->depval.rel) {
- yasm_bytecode *rel_precbc;
- int sym_local;
-
- sym_local = yasm_symrec_get_label(span->depval.rel, &rel_precbc);
- if (span->depval.wrt || span->depval.seg_of || span->depval.section_rel
- || !sym_local)
- return; /* we can't handle SEG, WRT, or external symbols */
- if (rel_precbc->section != span->bc->section)
- return; /* not in this section */
- if (!span->depval.curpos_rel)
- return; /* not PC-relative */
-
- span->rel_term = yasm_xmalloc(sizeof(yasm_span_term));
- span->rel_term->precbc = NULL;
- span->rel_term->precbc2 = rel_precbc;
- span->rel_term->span = span;
- span->rel_term->subst = ~0U;
-
- span->rel_term->cur_val = 0;
- span->rel_term->new_val = yasm_bc_next_offset(rel_precbc) -
- span->bc->offset;
- }
-}
-
-/* Recalculate span value based on current span replacement values.
- * Returns 1 if span needs expansion (e.g. exceeded thresholds).
- */
-static int
-recalc_normal_span(yasm_span *span)
-{
- span->new_val = 0;
-
- if (span->depval.abs) {
- yasm_expr *abs_copy = yasm_expr_copy(span->depval.abs);
- /*@null@*/ /*@dependent@*/ yasm_intnum *num;
-
- /* Update sym-sym terms and substitute back into expr */
- unsigned int i;
- for (i=0; i<span->num_terms; i++)
- yasm_intnum_set_int(span->items[i].data.intn,
- span->terms[i].new_val);
- yasm_expr__subst(abs_copy, span->num_terms, span->items);
- num = yasm_expr_get_intnum(&abs_copy, 0);
- if (num)
- span->new_val = yasm_intnum_get_int(num);
- else
- span->new_val = LONG_MAX; /* too complex; force to longest form */
- yasm_expr_destroy(abs_copy);
- }
-
- if (span->rel_term) {
- if (span->new_val != LONG_MAX && span->rel_term->new_val != LONG_MAX)
- span->new_val += span->rel_term->new_val >> span->depval.rshift;
- else
- span->new_val = LONG_MAX; /* too complex; force to longest form */
- } else if (span->depval.rel)
- span->new_val = LONG_MAX; /* too complex; force to longest form */
-
- if (span->new_val == LONG_MAX)
- span->active = 0;
-
- /* If id<=0, flag update on any change */
- if (span->id <= 0)
- return (span->new_val != span->cur_val);
-
- return (span->new_val < span->neg_thres
- || span->new_val > span->pos_thres);
-}
-
-/* Updates all bytecode offsets. For offset-based bytecodes, calls expand
- * to determine new length.
- */
-static int
-update_all_bc_offsets(yasm_object *object, yasm_errwarns *errwarns)
-{
- yasm_section *sect;
- int saw_error = 0;
-
- STAILQ_FOREACH(sect, &object->sections, link) {
- unsigned long offset = 0;
-
- yasm_bytecode *bc = STAILQ_FIRST(&sect->bcs);
- yasm_bytecode *prevbc;
-
- /* Skip our locally created empty bytecode first. */
- prevbc = bc;
- bc = STAILQ_NEXT(bc, link);
-
- /* Iterate through the remainder, if any. */
- while (bc) {
- if (bc->callback->special == YASM_BC_SPECIAL_OFFSET) {
- /* Recalculate/adjust len of offset-based bytecodes here */
- long neg_thres = 0;
- long pos_thres = (long)yasm_bc_next_offset(bc);
- int retval = yasm_bc_expand(bc, 1, 0,
- (long)yasm_bc_next_offset(prevbc),
- &neg_thres, &pos_thres);
- yasm_errwarn_propagate(errwarns, bc->line);
- if (retval < 0)
- saw_error = 1;
- }
- bc->offset = offset;
- offset += bc->len*bc->mult_int;
- prevbc = bc;
- bc = STAILQ_NEXT(bc, link);
- }
- }
- return saw_error;
-}
-
-static void
-span_destroy(/*@only@*/ yasm_span *span)
-{
- unsigned int i;
-
- yasm_value_delete(&span->depval);
- if (span->rel_term)
- yasm_xfree(span->rel_term);
- if (span->terms)
- yasm_xfree(span->terms);
- if (span->items) {
- for (i=0; i<span->num_terms; i++)
- yasm_intnum_destroy(span->items[i].data.intn);
- yasm_xfree(span->items);
- }
- if (span->backtrace)
- yasm_xfree(span->backtrace);
- yasm_xfree(span);
-}
-
-static void
-optimize_cleanup(optimize_data *optd)
-{
- yasm_span *s1, *s2;
- yasm_offset_setter *os1, *os2;
-
- IT_destroy(optd->itree);
-
- s1 = TAILQ_FIRST(&optd->spans);
- while (s1) {
- s2 = TAILQ_NEXT(s1, link);
- span_destroy(s1);
- s1 = s2;
- }
-
- os1 = STAILQ_FIRST(&optd->offset_setters);
- while (os1) {
- os2 = STAILQ_NEXT(os1, link);
- yasm_xfree(os1);
- os1 = os2;
- }
-}
-
-static void
-optimize_itree_add(IntervalTree *itree, yasm_span *span, yasm_span_term *term)
-{
- long precbc_index, precbc2_index;
- unsigned long low, high;
-
- /* Update term length */
- if (term->precbc)
- precbc_index = term->precbc->bc_index;
- else
- precbc_index = span->bc->bc_index-1;
-
- if (term->precbc2)
- precbc2_index = term->precbc2->bc_index;
- else
- precbc2_index = span->bc->bc_index-1;
-
- if (precbc_index < precbc2_index) {
- low = precbc_index+1;
- high = precbc2_index;
- } else if (precbc_index > precbc2_index) {
- low = precbc2_index+1;
- high = precbc_index;
- } else
- return; /* difference is same bc - always 0! */
-
- IT_insert(itree, (long)low, (long)high, term);
-}
-
-static void
-check_cycle(IntervalTreeNode *node, void *d)
-{
- optimize_data *optd = d;
- yasm_span_term *term = node->data;
- yasm_span *depspan = term->span;
- int i;
- int depspan_bt_alloc;
-
- /* Only check for cycles in id=0 spans */
- if (depspan->id > 0)
- return;
-
- /* Check for a circular reference by looking to see if this dependent
- * span is in our backtrace.
- */
- if (optd->span->backtrace) {
- for (i=0; i<optd->span->backtrace_size; i++) {
- if (optd->span->backtrace[i] == depspan)
- yasm_error_set(YASM_ERROR_VALUE,
- N_("circular reference detected"));
- }
- }
-
- /* Add our complete backtrace and ourselves to backtrace of dependent
- * span.
- */
- if (!depspan->backtrace) {
- depspan->backtrace = yasm_xmalloc((optd->span->backtrace_size+1)*
- sizeof(yasm_span *));
- if (optd->span->backtrace_size > 0)
- memcpy(depspan->backtrace, optd->span->backtrace,
- optd->span->backtrace_size*sizeof(yasm_span *));
- depspan->backtrace[optd->span->backtrace_size] = optd->span;
- depspan->backtrace_size = optd->span->backtrace_size+1;
- return;
- }
-
- /* Add our complete backtrace, checking for duplicates */
- depspan_bt_alloc = depspan->backtrace_size;
- for (i=0; i<optd->span->backtrace_size; i++) {
- int present = 0;
- int j;
- for (j=0; j<depspan->backtrace_size; j++) {
- if (optd->span->backtrace[i] == optd->span->backtrace[j]) {
- present = 1;
- break;
- }
- }
- if (present)
- continue;
- /* Not already in array; add it. */
- if (depspan->backtrace_size >= depspan_bt_alloc)
- {
- depspan_bt_alloc *= 2;
- depspan->backtrace =
- yasm_xrealloc(depspan->backtrace,
- depspan_bt_alloc*sizeof(yasm_span *));
- }
- depspan->backtrace[depspan->backtrace_size] = optd->span->backtrace[i];
- depspan->backtrace_size++;
- }
-
- /* Add ourselves. */
- if (depspan->backtrace_size >= depspan_bt_alloc)
- {
- depspan_bt_alloc++;
- depspan->backtrace =
- yasm_xrealloc(depspan->backtrace,
- depspan_bt_alloc*sizeof(yasm_span *));
- }
- depspan->backtrace[depspan->backtrace_size] = optd->span;
- depspan->backtrace_size++;
-}
-
-static void
-optimize_term_expand(IntervalTreeNode *node, void *d)
-{
- optimize_data *optd = d;
- yasm_span_term *term = node->data;
- yasm_span *span = term->span;
- long len_diff = optd->len_diff;
- long precbc_index, precbc2_index;
-
- /* Don't expand inactive spans */
- if (!span->active)
- return;
-
- /* Update term length */
- if (term->precbc)
- precbc_index = term->precbc->bc_index;
- else
- precbc_index = span->bc->bc_index-1;
-
- if (term->precbc2)
- precbc2_index = term->precbc2->bc_index;
- else
- precbc2_index = span->bc->bc_index-1;
-
- if (precbc_index < precbc2_index)
- term->new_val += len_diff;
- else
- term->new_val -= len_diff;
-
- /* If already on Q, don't re-add */
- if (span->active == 2)
- return;
-
- /* Update term and check against thresholds */
- if (!recalc_normal_span(span))
- return; /* didn't exceed thresholds, we're done */
-
- /* Exceeded thresholds, need to add to Q for expansion */
- if (span->id <= 0)
- STAILQ_INSERT_TAIL(&optd->QA, span, linkq);
- else
- STAILQ_INSERT_TAIL(&optd->QB, span, linkq);
- span->active = 2; /* Mark as being in Q */
-}
-
-void
-yasm_object_optimize(yasm_object *object, yasm_errwarns *errwarns)
-{
- yasm_section *sect;
- unsigned long bc_index = 0;
- int saw_error = 0;
- optimize_data optd;
- yasm_span *span, *span_temp;
- yasm_offset_setter *os;
- int retval;
- unsigned int i;
-
- TAILQ_INIT(&optd.spans);
- STAILQ_INIT(&optd.offset_setters);
- optd.itree = IT_create();
-
- /* Create an placeholder offset setter for spans to point to; this will
- * get updated if/when we actually run into one.
- */
- os = yasm_xmalloc(sizeof(yasm_offset_setter));
- os->bc = NULL;
- os->cur_val = 0;
- os->new_val = 0;
- os->thres = 0;
- STAILQ_INSERT_TAIL(&optd.offset_setters, os, link);
- optd.os = os;
-
- /* Step 1a */
- STAILQ_FOREACH(sect, &object->sections, link) {
- unsigned long offset = 0;
-
- yasm_bytecode *bc = STAILQ_FIRST(&sect->bcs);
-
- bc->bc_index = bc_index++;
-
- /* Skip our locally created empty bytecode first. */
- bc = STAILQ_NEXT(bc, link);
-
- /* Iterate through the remainder, if any. */
- while (bc) {
- bc->bc_index = bc_index++;
- bc->offset = offset;
-
- retval = yasm_bc_calc_len(bc, optimize_add_span, &optd);
- yasm_errwarn_propagate(errwarns, bc->line);
- if (retval)
- saw_error = 1;
- else {
- if (bc->callback->special == YASM_BC_SPECIAL_OFFSET) {
- /* Remember it as offset setter */
- os->bc = bc;
- os->thres = yasm_bc_next_offset(bc);
-
- /* Create new placeholder */
- os = yasm_xmalloc(sizeof(yasm_offset_setter));
- os->bc = NULL;
- os->cur_val = 0;
- os->new_val = 0;
- os->thres = 0;
- STAILQ_INSERT_TAIL(&optd.offset_setters, os, link);
- optd.os = os;
-
- if (bc->multiple) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("cannot combine multiples and setting assembly position"));
- yasm_errwarn_propagate(errwarns, bc->line);
- saw_error = 1;
- }
- }
-
- offset += bc->len*bc->mult_int;
- }
-
- bc = STAILQ_NEXT(bc, link);
- }
- }
-
- if (saw_error) {
- optimize_cleanup(&optd);
- return;
- }
-
- /* Step 1b */
- TAILQ_FOREACH_SAFE(span, &optd.spans, link, span_temp) {
- span_create_terms(span);
- if (yasm_error_occurred()) {
- yasm_errwarn_propagate(errwarns, span->bc->line);
- saw_error = 1;
- } else if (recalc_normal_span(span)) {
- retval = yasm_bc_expand(span->bc, span->id, span->cur_val,
- span->new_val, &span->neg_thres,
- &span->pos_thres);
- yasm_errwarn_propagate(errwarns, span->bc->line);
- if (retval < 0)
- saw_error = 1;
- else if (retval > 0) {
- if (!span->active) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("secondary expansion of an external/complex value"));
- yasm_errwarn_propagate(errwarns, span->bc->line);
- saw_error = 1;
- }
- } else {
- TAILQ_REMOVE(&optd.spans, span, link);
- span_destroy(span);
- continue;
- }
- }
- span->cur_val = span->new_val;
- }
-
- if (saw_error) {
- optimize_cleanup(&optd);
- return;
- }
-
- /* Step 1c */
- if (update_all_bc_offsets(object, errwarns)) {
- optimize_cleanup(&optd);
- return;
- }
-
- /* Step 1d */
- STAILQ_INIT(&optd.QB);
- TAILQ_FOREACH(span, &optd.spans, link) {
- yasm_intnum *intn;
-
- /* Update span terms based on new bc offsets */
- for (i=0; i<span->num_terms; i++) {
- intn = yasm_calc_bc_dist(span->terms[i].precbc,
- span->terms[i].precbc2);
- if (!intn)
- yasm_internal_error(N_("could not calculate bc distance"));
- span->terms[i].cur_val = span->terms[i].new_val;
- span->terms[i].new_val = yasm_intnum_get_int(intn);
- yasm_intnum_destroy(intn);
- }
- if (span->rel_term) {
- span->rel_term->cur_val = span->rel_term->new_val;
- if (span->rel_term->precbc2)
- span->rel_term->new_val =
- yasm_bc_next_offset(span->rel_term->precbc2) -
- span->bc->offset;
- else
- span->rel_term->new_val = span->bc->offset -
- yasm_bc_next_offset(span->rel_term->precbc);
- }
-
- if (recalc_normal_span(span)) {
- /* Exceeded threshold, add span to QB */
- STAILQ_INSERT_TAIL(&optd.QB, span, linkq);
- span->active = 2;
- }
- }
-
- /* Do we need step 2? If not, go ahead and exit. */
- if (STAILQ_EMPTY(&optd.QB)) {
- optimize_cleanup(&optd);
- return;
- }
-
- /* Update offset-setters values */
- STAILQ_FOREACH(os, &optd.offset_setters, link) {
- if (!os->bc)
- continue;
- os->thres = yasm_bc_next_offset(os->bc);
- os->new_val = os->bc->offset;
- os->cur_val = os->new_val;
- }
-
- /* Build up interval tree */
- TAILQ_FOREACH(span, &optd.spans, link) {
- for (i=0; i<span->num_terms; i++)
- optimize_itree_add(optd.itree, span, &span->terms[i]);
- if (span->rel_term)
- optimize_itree_add(optd.itree, span, span->rel_term);
- }
-
- /* Look for cycles in times expansion (span.id==0) */
- TAILQ_FOREACH(span, &optd.spans, link) {
- if (span->id > 0)
- continue;
- optd.span = span;
- IT_enumerate(optd.itree, (long)span->bc->bc_index,
- (long)span->bc->bc_index, &optd, check_cycle);
- if (yasm_error_occurred()) {
- yasm_errwarn_propagate(errwarns, span->bc->line);
- saw_error = 1;
- }
- }
-
- if (saw_error) {
- optimize_cleanup(&optd);
- return;
- }
-
- /* Step 2 */
- STAILQ_INIT(&optd.QA);
- while (!STAILQ_EMPTY(&optd.QA) || !(STAILQ_EMPTY(&optd.QB))) {
- unsigned long orig_len;
- long offset_diff;
-
- /* QA is for TIMES, update those first, then update non-TIMES.
- * This is so that TIMES can absorb increases before we look at
- * expanding non-TIMES BCs.
- */
- if (!STAILQ_EMPTY(&optd.QA)) {
- span = STAILQ_FIRST(&optd.QA);
- STAILQ_REMOVE_HEAD(&optd.QA, linkq);
- } else {
- span = STAILQ_FIRST(&optd.QB);
- STAILQ_REMOVE_HEAD(&optd.QB, linkq);
- }
-
- if (!span->active)
- continue;
- span->active = 1; /* no longer in Q */
-
- /* Make sure we ended up ultimately exceeding thresholds; due to
- * offset BCs we may have been placed on Q and then reduced in size
- * again.
- */
- if (!recalc_normal_span(span))
- continue;
-
- orig_len = span->bc->len * span->bc->mult_int;
-
- retval = yasm_bc_expand(span->bc, span->id, span->cur_val,
- span->new_val, &span->neg_thres,
- &span->pos_thres);
- yasm_errwarn_propagate(errwarns, span->bc->line);
-
- if (retval < 0) {
- /* error */
- saw_error = 1;
- continue;
- } else if (retval > 0) {
- /* another threshold, keep active */
- for (i=0; i<span->num_terms; i++)
- span->terms[i].cur_val = span->terms[i].new_val;
- if (span->rel_term)
- span->rel_term->cur_val = span->rel_term->new_val;
- span->cur_val = span->new_val;
- } else
- span->active = 0; /* we're done with this span */
-
- optd.len_diff = span->bc->len * span->bc->mult_int - orig_len;
- if (optd.len_diff == 0)
- continue; /* didn't increase in size */
-
- /* Iterate over all spans dependent across the bc just expanded */
- IT_enumerate(optd.itree, (long)span->bc->bc_index,
- (long)span->bc->bc_index, &optd, optimize_term_expand);
-
- /* Iterate over offset-setters that follow the bc just expanded.
- * Stop iteration if:
- * - no more offset-setters in this section
- * - offset-setter didn't move its following offset
- */
- os = span->os;
- offset_diff = optd.len_diff;
- while (os->bc && os->bc->section == span->bc->section
- && offset_diff != 0) {
- unsigned long old_next_offset = os->cur_val + os->bc->len;
- long neg_thres_temp;
-
- if (offset_diff < 0 && (unsigned long)(-offset_diff) > os->new_val)
- yasm_internal_error(N_("org/align went to negative offset"));
- os->new_val += offset_diff;
-
- orig_len = os->bc->len;
- retval = yasm_bc_expand(os->bc, 1, (long)os->cur_val,
- (long)os->new_val, &neg_thres_temp,
- (long *)&os->thres);
- yasm_errwarn_propagate(errwarns, os->bc->line);
-
- offset_diff = os->new_val + os->bc->len - old_next_offset;
- optd.len_diff = os->bc->len - orig_len;
- if (optd.len_diff != 0)
- IT_enumerate(optd.itree, (long)os->bc->bc_index,
- (long)os->bc->bc_index, &optd, optimize_term_expand);
-
- os->cur_val = os->new_val;
- os = STAILQ_NEXT(os, link);
- }
- }
-
- if (saw_error) {
- optimize_cleanup(&optd);
- return;
- }
-
- /* Step 3 */
- update_all_bc_offsets(object, errwarns);
- optimize_cleanup(&optd);
-}
+ yasm_xfree(object->obj_filename);
+
+ /* Delete symbol table */
+ yasm_symtab_destroy(object->symtab);
+
+ /* Delete architecture */
+ if (object->arch)
+ yasm_arch_destroy(object->arch);
+
+ yasm_xfree(object);
+}
+
+void
+yasm_object_print(const yasm_object *object, FILE *f, int indent_level)
+{
+ yasm_section *cur;
+
+ /* Print symbol table */
+ fprintf(f, "%*sSymbol Table:\n", indent_level, "");
+ yasm_symtab_print(object->symtab, f, indent_level+1);
+
+ /* Print sections and bytecodes */
+ STAILQ_FOREACH(cur, &object->sections, link) {
+ fprintf(f, "%*sSection:\n", indent_level, "");
+ yasm_section_print(cur, f, indent_level+1, 1);
+ }
+}
+
+void
+yasm_object_finalize(yasm_object *object, yasm_errwarns *errwarns)
+{
+ yasm_section *sect;
+
+ /* Iterate through sections */
+ STAILQ_FOREACH(sect, &object->sections, link) {
+ yasm_bytecode *cur = STAILQ_FIRST(&sect->bcs);
+ yasm_bytecode *prev;
+
+ /* Skip our locally created empty bytecode first. */
+ prev = cur;
+ cur = STAILQ_NEXT(cur, link);
+
+ /* Iterate through the remainder, if any. */
+ while (cur) {
+ /* Finalize */
+ yasm_bc_finalize(cur, prev);
+ yasm_errwarn_propagate(errwarns, cur->line);
+ prev = cur;
+ cur = STAILQ_NEXT(cur, link);
+ }
+ }
+}
+
+int
+yasm_object_sections_traverse(yasm_object *object, /*@null@*/ void *d,
+ int (*func) (yasm_section *sect,
+ /*@null@*/ void *d))
+{
+ yasm_section *cur;
+
+ STAILQ_FOREACH(cur, &object->sections, link) {
+ int retval = func(cur, d);
+ if (retval != 0)
+ return retval;
+ }
+ return 0;
+}
+
+/*@-onlytrans@*/
+yasm_section *
+yasm_object_find_general(yasm_object *object, const char *name)
+{
+ yasm_section *cur;
+
+ STAILQ_FOREACH(cur, &object->sections, link) {
+ if (strcmp(cur->name, name) == 0)
+ return cur;
+ }
+ return NULL;
+}
+/*@=onlytrans@*/
+
+void
+yasm_section_add_reloc(yasm_section *sect, yasm_reloc *reloc,
+ void (*destroy_func) (/*@only@*/ void *reloc))
+{
+ STAILQ_INSERT_TAIL(&sect->relocs, reloc, link);
+ if (!destroy_func)
+ yasm_internal_error(N_("NULL destroy function given to add_reloc"));
+ else if (sect->destroy_reloc && destroy_func != sect->destroy_reloc)
+ yasm_internal_error(N_("different destroy function given to add_reloc"));
+ sect->destroy_reloc = destroy_func;
+}
+
+/*@null@*/ yasm_reloc *
+yasm_section_relocs_first(yasm_section *sect)
+{
+ return STAILQ_FIRST(&sect->relocs);
+}
+
+#undef yasm_section_reloc_next
+/*@null@*/ yasm_reloc *
+yasm_section_reloc_next(yasm_reloc *reloc)
+{
+ return STAILQ_NEXT(reloc, link);
+}
+
+void
+yasm_reloc_get(yasm_reloc *reloc, yasm_intnum **addrp, yasm_symrec **symp)
+{
+ *addrp = reloc->addr;
+ *symp = reloc->sym;
+}
+
+
+yasm_bytecode *
+yasm_section_bcs_first(yasm_section *sect)
+{
+ return STAILQ_FIRST(&sect->bcs);
+}
+
+yasm_bytecode *
+yasm_section_bcs_last(yasm_section *sect)
+{
+ return STAILQ_LAST(&sect->bcs, yasm_bytecode, link);
+}
+
+yasm_bytecode *
+yasm_section_bcs_append(yasm_section *sect, yasm_bytecode *bc)
+{
+ if (bc) {
+ if (bc->callback) {
+ bc->section = sect; /* record parent section */
+ STAILQ_INSERT_TAIL(&sect->bcs, bc, link);
+ return bc;
+ } else
+ yasm_xfree(bc);
+ }
+ return (yasm_bytecode *)NULL;
+}
+
+int
+yasm_section_bcs_traverse(yasm_section *sect,
+ /*@null@*/ yasm_errwarns *errwarns,
+ /*@null@*/ void *d,
+ int (*func) (yasm_bytecode *bc, /*@null@*/ void *d))
+{
+ yasm_bytecode *cur = STAILQ_FIRST(&sect->bcs);
+
+ /* Skip our locally created empty bytecode first. */
+ cur = STAILQ_NEXT(cur, link);
+
+ /* Iterate through the remainder, if any. */
+ while (cur) {
+ int retval = func(cur, d);
+ if (errwarns)
+ yasm_errwarn_propagate(errwarns, cur->line);
+ if (retval != 0)
+ return retval;
+ cur = STAILQ_NEXT(cur, link);
+ }
+ return 0;
+}
+
+const char *
+yasm_section_get_name(const yasm_section *sect)
+{
+ return sect->name;
+}
+
+void
+yasm_section_set_align(yasm_section *sect, unsigned long align,
+ unsigned long line)
+{
+ sect->align = align;
+}
+
+unsigned long
+yasm_section_get_align(const yasm_section *sect)
+{
+ return sect->align;
+}
+
+static void
+yasm_section_destroy(yasm_section *sect)
+{
+ yasm_bytecode *cur, *next;
+ yasm_reloc *r_cur, *r_next;
+
+ if (!sect)
+ return;
+
+ yasm_xfree(sect->name);
+ yasm__assoc_data_destroy(sect->assoc_data);
+
+ /* Delete bytecodes */
+ cur = STAILQ_FIRST(&sect->bcs);
+ while (cur) {
+ next = STAILQ_NEXT(cur, link);
+ yasm_bc_destroy(cur);
+ cur = next;
+ }
+
+ /* Delete relocations */
+ r_cur = STAILQ_FIRST(&sect->relocs);
+ while (r_cur) {
+ r_next = STAILQ_NEXT(r_cur, link);
+ yasm_intnum_destroy(r_cur->addr);
+ sect->destroy_reloc(r_cur);
+ r_cur = r_next;
+ }
+
+ yasm_xfree(sect);
+}
+
+void
+yasm_section_print(const yasm_section *sect, FILE *f, int indent_level,
+ int print_bcs)
+{
+ if (!sect) {
+ fprintf(f, "%*s(none)\n", indent_level, "");
+ return;
+ }
+
+ fprintf(f, "%*sname=%s\n", indent_level, "", sect->name);
+
+ if (sect->assoc_data) {
+ fprintf(f, "%*sAssociated data:\n", indent_level, "");
+ yasm__assoc_data_print(sect->assoc_data, f, indent_level+1);
+ }
+
+ if (print_bcs) {
+ yasm_bytecode *cur;
+
+ fprintf(f, "%*sBytecodes:\n", indent_level, "");
+
+ STAILQ_FOREACH(cur, &sect->bcs, link) {
+ fprintf(f, "%*sNext Bytecode:\n", indent_level+1, "");
+ yasm_bc_print(cur, f, indent_level+2);
+ }
+ }
+}
+
+/*
+ * Robertson (1977) optimizer
+ * Based (somewhat loosely) on the algorithm given in:
+ * MRC Technical Summary Report # 1779
+ * CODE GENERATION FOR SHORT/LONG ADDRESS MACHINES
+ * Edward L. Robertson
+ * Mathematics Research Center
+ * University of Wisconsin-Madison
+ * 610 Walnut Street
+ * Madison, Wisconsin 53706
+ * August 1977
+ *
+ * Key components of algorithm:
+ * - start assuming all short forms
+ * - build spans for short->long transition dependencies
+ * - if a long form is needed, walk the dependencies and update
+ * Major differences from Robertson's algorithm:
+ * - detection of cycles
+ * - any difference of two locations is allowed
+ * - handling of alignment/org gaps (offset setting)
+ * - handling of multiples
+ *
+ * Data structures:
+ * - Interval tree to store spans and associated data
+ * - Queues QA and QB
+ *
+ * Each span keeps track of:
+ * - Associated bytecode (bytecode that depends on the span length)
+ * - Active/inactive state (starts out active)
+ * - Sign (negative/positive; negative being "backwards" in address)
+ * - Current length in bytes
+ * - New length in bytes
+ * - Negative/Positive thresholds
+ * - Span ID (unique within each bytecode)
+ *
+ * How org and align and any other offset-based bytecodes are handled:
+ *
+ * Some portions are critical values that must not depend on any bytecode
+ * offset (either relative or absolute).
+ *
+ * All offset-setters (ORG and ALIGN) are put into a linked list in section
+ * order (e.g. increasing offset order). Each span keeps track of the next
+ * offset-setter following the span's associated bytecode.
+ *
+ * When a bytecode is expanded, the next offset-setter is examined. The
+ * offset-setter may be able to absorb the expansion (e.g. any offset
+ * following it would not change), or it may have to move forward (in the
+ * case of align) or error (in the case of org). If it has to move forward,
+ * following offset-setters must also be examined for absorption or moving
+ * forward. In either case, the ongoing offset is updated as well as the
+ * lengths of any spans dependent on the offset-setter.
+ *
+ * Alignment/ORG value is critical value.
+ * Cannot be combined with TIMES.
+ *
+ * How times is handled:
+ *
+ * TIMES: Handled separately from bytecode "raw" size. If not span-dependent,
+ * trivial (just multiplied in at any bytecode size increase). Span
+ * dependent times update on any change (span ID 0). If the resultant
+ * next bytecode offset would be less than the old next bytecode offset,
+ * error. Otherwise increase offset and update dependent spans.
+ *
+ * To reduce interval tree size, a first expansion pass is performed
+ * before the spans are added to the tree.
+ *
+ * Basic algorithm outline:
+ *
+ * 1. Initialization:
+ * a. Number bytecodes sequentially (via bc_index) and calculate offsets
+ * of all bytecodes assuming minimum length, building a list of all
+ * dependent spans as we go.
+ * "minimum" here means absolute minimum:
+ * - align/org (offset-based) bumps offset as normal
+ * - times values (with span-dependent values) assumed to be 0
+ * b. Iterate over spans. Set span length based on bytecode offsets
+ * determined in 1a. If span is "certainly" long because the span
+ * is an absolute reference to another section (or external) or the
+ * distance calculated based on the minimum length is greater than the
+ * span's threshold, expand the span's bytecode, and if no further
+ * expansion can result, mark span as inactive.
+ * c. Iterate over bytecodes to update all bytecode offsets based on new
+ * (expanded) lengths calculated in 1b.
+ * d. Iterate over active spans. Add span to interval tree. Update span's
+ * length based on new bytecode offsets determined in 1c. If span's
+ * length exceeds long threshold, add that span to Q.
+ * 2. Main loop:
+ * While Q not empty:
+ * Expand BC dependent on span at head of Q (and remove span from Q).
+ * Update span:
+ * If BC no longer dependent on span, mark span as inactive.
+ * If BC has new thresholds for span, update span.
+ * If BC increased in size, for each active span that contains BC:
+ * Increase span length by difference between short and long BC length.
+ * If span exceeds long threshold (or is flagged to recalculate on any
+ * change), add it to tail of Q.
+ * 3. Final pass over bytecodes to generate final offsets.
+ */
+
+typedef struct yasm_span yasm_span;
+
+typedef struct yasm_offset_setter {
+ /* Linked list in section order (e.g. offset order) */
+ /*@reldef@*/ STAILQ_ENTRY(yasm_offset_setter) link;
+
+ /*@dependent@*/ yasm_bytecode *bc;
+
+ unsigned long cur_val, new_val;
+ unsigned long thres;
+} yasm_offset_setter;
+
+typedef struct yasm_span_term {
+ yasm_bytecode *precbc, *precbc2;
+ yasm_span *span; /* span this term is a member of */
+ long cur_val, new_val;
+ unsigned int subst;
+} yasm_span_term;
+
+struct yasm_span {
+ /*@reldef@*/ TAILQ_ENTRY(yasm_span) link; /* for allocation tracking */
+ /*@reldef@*/ STAILQ_ENTRY(yasm_span) linkq; /* for Q */
+
+ /*@dependent@*/ yasm_bytecode *bc;
+
+ yasm_value depval;
+
+ /* span term for relative portion of value */
+ yasm_span_term *rel_term;
+ /* span terms in absolute portion of value */
+ yasm_span_term *terms;
+ yasm_expr__item *items;
+ unsigned int num_terms;
+
+ long cur_val;
+ long new_val;
+
+ long neg_thres;
+ long pos_thres;
+
+ int id;
+
+ int active;
+
+ /* NULL-terminated array of spans that led to this span. Used only for
+ * checking for circular references (cycles) with id=0 spans.
+ */
+ yasm_span **backtrace;
+ int backtrace_size;
+
+ /* First offset setter following this span's bytecode */
+ yasm_offset_setter *os;
+};
+
+typedef struct optimize_data {
+ /*@reldef@*/ TAILQ_HEAD(yasm_span_head, yasm_span) spans;
+ /*@reldef@*/ STAILQ_HEAD(yasm_span_shead, yasm_span) QA, QB;
+ /*@only@*/ IntervalTree *itree;
+ /*@reldef@*/ STAILQ_HEAD(offset_setters_head, yasm_offset_setter)
+ offset_setters;
+ long len_diff; /* used only for optimize_term_expand */
+ yasm_span *span; /* used only for check_cycle */
+ yasm_offset_setter *os;
+} optimize_data;
+
+static yasm_span *
+create_span(yasm_bytecode *bc, int id, /*@null@*/ const yasm_value *value,
+ long neg_thres, long pos_thres, yasm_offset_setter *os)
+{
+ yasm_span *span = yasm_xmalloc(sizeof(yasm_span));
+
+ span->bc = bc;
+ if (value)
+ yasm_value_init_copy(&span->depval, value);
+ else
+ yasm_value_initialize(&span->depval, NULL, 0);
+ span->rel_term = NULL;
+ span->terms = NULL;
+ span->items = NULL;
+ span->num_terms = 0;
+ span->cur_val = 0;
+ span->new_val = 0;
+ span->neg_thres = neg_thres;
+ span->pos_thres = pos_thres;
+ span->id = id;
+ span->active = 1;
+ span->backtrace = NULL;
+ span->backtrace_size = 0;
+ span->os = os;
+
+ return span;
+}
+
+static void
+optimize_add_span(void *add_span_data, yasm_bytecode *bc, int id,
+ const yasm_value *value, long neg_thres, long pos_thres)
+{
+ optimize_data *optd = (optimize_data *)add_span_data;
+ yasm_span *span;
+ span = create_span(bc, id, value, neg_thres, pos_thres, optd->os);
+ TAILQ_INSERT_TAIL(&optd->spans, span, link);
+}
+
+static void
+add_span_term(unsigned int subst, yasm_bytecode *precbc,
+ yasm_bytecode *precbc2, void *d)
+{
+ yasm_span *span = d;
+ yasm_intnum *intn;
+
+ if (subst >= span->num_terms) {
+ /* Linear expansion since total number is essentially always small */
+ span->num_terms = subst+1;
+ span->terms = yasm_xrealloc(span->terms,
+ span->num_terms*sizeof(yasm_span_term));
+ }
+ span->terms[subst].precbc = precbc;
+ span->terms[subst].precbc2 = precbc2;
+ span->terms[subst].span = span;
+ span->terms[subst].subst = subst;
+
+ intn = yasm_calc_bc_dist(precbc, precbc2);
+ if (!intn)
+ yasm_internal_error(N_("could not calculate bc distance"));
+ span->terms[subst].cur_val = 0;
+ span->terms[subst].new_val = yasm_intnum_get_int(intn);
+ yasm_intnum_destroy(intn);
+}
+
+static void
+span_create_terms(yasm_span *span)
+{
+ unsigned int i;
+
+ /* Split out sym-sym terms in absolute portion of dependent value */
+ if (span->depval.abs) {
+ span->num_terms = yasm_expr__bc_dist_subst(&span->depval.abs, span,
+ add_span_term);
+ if (span->num_terms > 0) {
+ span->items = yasm_xmalloc(span->num_terms*sizeof(yasm_expr__item));
+ for (i=0; i<span->num_terms; i++) {
+ /* Create items with dummy value */
+ span->items[i].type = YASM_EXPR_INT;
+ span->items[i].data.intn = yasm_intnum_create_int(0);
+
+ /* Check for circular references */
+ if (span->id <= 0 &&
+ ((span->bc->bc_index > span->terms[i].precbc->bc_index &&
+ span->bc->bc_index <= span->terms[i].precbc2->bc_index) ||
+ (span->bc->bc_index > span->terms[i].precbc2->bc_index &&
+ span->bc->bc_index <= span->terms[i].precbc->bc_index)))
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("circular reference detected"));
+ }
+ }
+ }
+
+ /* Create term for relative portion of dependent value */
+ if (span->depval.rel) {
+ yasm_bytecode *rel_precbc;
+ int sym_local;
+
+ sym_local = yasm_symrec_get_label(span->depval.rel, &rel_precbc);
+ if (span->depval.wrt || span->depval.seg_of || span->depval.section_rel
+ || !sym_local)
+ return; /* we can't handle SEG, WRT, or external symbols */
+ if (rel_precbc->section != span->bc->section)
+ return; /* not in this section */
+ if (!span->depval.curpos_rel)
+ return; /* not PC-relative */
+
+ span->rel_term = yasm_xmalloc(sizeof(yasm_span_term));
+ span->rel_term->precbc = NULL;
+ span->rel_term->precbc2 = rel_precbc;
+ span->rel_term->span = span;
+ span->rel_term->subst = ~0U;
+
+ span->rel_term->cur_val = 0;
+ span->rel_term->new_val = yasm_bc_next_offset(rel_precbc) -
+ span->bc->offset;
+ }
+}
+
+/* Recalculate span value based on current span replacement values.
+ * Returns 1 if span needs expansion (e.g. exceeded thresholds).
+ */
+static int
+recalc_normal_span(yasm_span *span)
+{
+ span->new_val = 0;
+
+ if (span->depval.abs) {
+ yasm_expr *abs_copy = yasm_expr_copy(span->depval.abs);
+ /*@null@*/ /*@dependent@*/ yasm_intnum *num;
+
+ /* Update sym-sym terms and substitute back into expr */
+ unsigned int i;
+ for (i=0; i<span->num_terms; i++)
+ yasm_intnum_set_int(span->items[i].data.intn,
+ span->terms[i].new_val);
+ yasm_expr__subst(abs_copy, span->num_terms, span->items);
+ num = yasm_expr_get_intnum(&abs_copy, 0);
+ if (num)
+ span->new_val = yasm_intnum_get_int(num);
+ else
+ span->new_val = LONG_MAX; /* too complex; force to longest form */
+ yasm_expr_destroy(abs_copy);
+ }
+
+ if (span->rel_term) {
+ if (span->new_val != LONG_MAX && span->rel_term->new_val != LONG_MAX)
+ span->new_val += span->rel_term->new_val >> span->depval.rshift;
+ else
+ span->new_val = LONG_MAX; /* too complex; force to longest form */
+ } else if (span->depval.rel)
+ span->new_val = LONG_MAX; /* too complex; force to longest form */
+
+ if (span->new_val == LONG_MAX)
+ span->active = 0;
+
+ /* If id<=0, flag update on any change */
+ if (span->id <= 0)
+ return (span->new_val != span->cur_val);
+
+ return (span->new_val < span->neg_thres
+ || span->new_val > span->pos_thres);
+}
+
+/* Updates all bytecode offsets. For offset-based bytecodes, calls expand
+ * to determine new length.
+ */
+static int
+update_all_bc_offsets(yasm_object *object, yasm_errwarns *errwarns)
+{
+ yasm_section *sect;
+ int saw_error = 0;
+
+ STAILQ_FOREACH(sect, &object->sections, link) {
+ unsigned long offset = 0;
+
+ yasm_bytecode *bc = STAILQ_FIRST(&sect->bcs);
+ yasm_bytecode *prevbc;
+
+ /* Skip our locally created empty bytecode first. */
+ prevbc = bc;
+ bc = STAILQ_NEXT(bc, link);
+
+ /* Iterate through the remainder, if any. */
+ while (bc) {
+ if (bc->callback->special == YASM_BC_SPECIAL_OFFSET) {
+ /* Recalculate/adjust len of offset-based bytecodes here */
+ long neg_thres = 0;
+ long pos_thres = (long)yasm_bc_next_offset(bc);
+ int retval = yasm_bc_expand(bc, 1, 0,
+ (long)yasm_bc_next_offset(prevbc),
+ &neg_thres, &pos_thres);
+ yasm_errwarn_propagate(errwarns, bc->line);
+ if (retval < 0)
+ saw_error = 1;
+ }
+ bc->offset = offset;
+ offset += bc->len*bc->mult_int;
+ prevbc = bc;
+ bc = STAILQ_NEXT(bc, link);
+ }
+ }
+ return saw_error;
+}
+
+static void
+span_destroy(/*@only@*/ yasm_span *span)
+{
+ unsigned int i;
+
+ yasm_value_delete(&span->depval);
+ if (span->rel_term)
+ yasm_xfree(span->rel_term);
+ if (span->terms)
+ yasm_xfree(span->terms);
+ if (span->items) {
+ for (i=0; i<span->num_terms; i++)
+ yasm_intnum_destroy(span->items[i].data.intn);
+ yasm_xfree(span->items);
+ }
+ if (span->backtrace)
+ yasm_xfree(span->backtrace);
+ yasm_xfree(span);
+}
+
+static void
+optimize_cleanup(optimize_data *optd)
+{
+ yasm_span *s1, *s2;
+ yasm_offset_setter *os1, *os2;
+
+ IT_destroy(optd->itree);
+
+ s1 = TAILQ_FIRST(&optd->spans);
+ while (s1) {
+ s2 = TAILQ_NEXT(s1, link);
+ span_destroy(s1);
+ s1 = s2;
+ }
+
+ os1 = STAILQ_FIRST(&optd->offset_setters);
+ while (os1) {
+ os2 = STAILQ_NEXT(os1, link);
+ yasm_xfree(os1);
+ os1 = os2;
+ }
+}
+
+static void
+optimize_itree_add(IntervalTree *itree, yasm_span *span, yasm_span_term *term)
+{
+ long precbc_index, precbc2_index;
+ unsigned long low, high;
+
+ /* Update term length */
+ if (term->precbc)
+ precbc_index = term->precbc->bc_index;
+ else
+ precbc_index = span->bc->bc_index-1;
+
+ if (term->precbc2)
+ precbc2_index = term->precbc2->bc_index;
+ else
+ precbc2_index = span->bc->bc_index-1;
+
+ if (precbc_index < precbc2_index) {
+ low = precbc_index+1;
+ high = precbc2_index;
+ } else if (precbc_index > precbc2_index) {
+ low = precbc2_index+1;
+ high = precbc_index;
+ } else
+ return; /* difference is same bc - always 0! */
+
+ IT_insert(itree, (long)low, (long)high, term);
+}
+
+static void
+check_cycle(IntervalTreeNode *node, void *d)
+{
+ optimize_data *optd = d;
+ yasm_span_term *term = node->data;
+ yasm_span *depspan = term->span;
+ int i;
+ int depspan_bt_alloc;
+
+ /* Only check for cycles in id=0 spans */
+ if (depspan->id > 0)
+ return;
+
+ /* Check for a circular reference by looking to see if this dependent
+ * span is in our backtrace.
+ */
+ if (optd->span->backtrace) {
+ for (i=0; i<optd->span->backtrace_size; i++) {
+ if (optd->span->backtrace[i] == depspan)
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("circular reference detected"));
+ }
+ }
+
+ /* Add our complete backtrace and ourselves to backtrace of dependent
+ * span.
+ */
+ if (!depspan->backtrace) {
+ depspan->backtrace = yasm_xmalloc((optd->span->backtrace_size+1)*
+ sizeof(yasm_span *));
+ if (optd->span->backtrace_size > 0)
+ memcpy(depspan->backtrace, optd->span->backtrace,
+ optd->span->backtrace_size*sizeof(yasm_span *));
+ depspan->backtrace[optd->span->backtrace_size] = optd->span;
+ depspan->backtrace_size = optd->span->backtrace_size+1;
+ return;
+ }
+
+ /* Add our complete backtrace, checking for duplicates */
+ depspan_bt_alloc = depspan->backtrace_size;
+ for (i=0; i<optd->span->backtrace_size; i++) {
+ int present = 0;
+ int j;
+ for (j=0; j<depspan->backtrace_size; j++) {
+ if (optd->span->backtrace[i] == optd->span->backtrace[j]) {
+ present = 1;
+ break;
+ }
+ }
+ if (present)
+ continue;
+ /* Not already in array; add it. */
+ if (depspan->backtrace_size >= depspan_bt_alloc)
+ {
+ depspan_bt_alloc *= 2;
+ depspan->backtrace =
+ yasm_xrealloc(depspan->backtrace,
+ depspan_bt_alloc*sizeof(yasm_span *));
+ }
+ depspan->backtrace[depspan->backtrace_size] = optd->span->backtrace[i];
+ depspan->backtrace_size++;
+ }
+
+ /* Add ourselves. */
+ if (depspan->backtrace_size >= depspan_bt_alloc)
+ {
+ depspan_bt_alloc++;
+ depspan->backtrace =
+ yasm_xrealloc(depspan->backtrace,
+ depspan_bt_alloc*sizeof(yasm_span *));
+ }
+ depspan->backtrace[depspan->backtrace_size] = optd->span;
+ depspan->backtrace_size++;
+}
+
+static void
+optimize_term_expand(IntervalTreeNode *node, void *d)
+{
+ optimize_data *optd = d;
+ yasm_span_term *term = node->data;
+ yasm_span *span = term->span;
+ long len_diff = optd->len_diff;
+ long precbc_index, precbc2_index;
+
+ /* Don't expand inactive spans */
+ if (!span->active)
+ return;
+
+ /* Update term length */
+ if (term->precbc)
+ precbc_index = term->precbc->bc_index;
+ else
+ precbc_index = span->bc->bc_index-1;
+
+ if (term->precbc2)
+ precbc2_index = term->precbc2->bc_index;
+ else
+ precbc2_index = span->bc->bc_index-1;
+
+ if (precbc_index < precbc2_index)
+ term->new_val += len_diff;
+ else
+ term->new_val -= len_diff;
+
+ /* If already on Q, don't re-add */
+ if (span->active == 2)
+ return;
+
+ /* Update term and check against thresholds */
+ if (!recalc_normal_span(span))
+ return; /* didn't exceed thresholds, we're done */
+
+ /* Exceeded thresholds, need to add to Q for expansion */
+ if (span->id <= 0)
+ STAILQ_INSERT_TAIL(&optd->QA, span, linkq);
+ else
+ STAILQ_INSERT_TAIL(&optd->QB, span, linkq);
+ span->active = 2; /* Mark as being in Q */
+}
+
+void
+yasm_object_optimize(yasm_object *object, yasm_errwarns *errwarns)
+{
+ yasm_section *sect;
+ unsigned long bc_index = 0;
+ int saw_error = 0;
+ optimize_data optd;
+ yasm_span *span, *span_temp;
+ yasm_offset_setter *os;
+ int retval;
+ unsigned int i;
+
+ TAILQ_INIT(&optd.spans);
+ STAILQ_INIT(&optd.offset_setters);
+ optd.itree = IT_create();
+
+ /* Create an placeholder offset setter for spans to point to; this will
+ * get updated if/when we actually run into one.
+ */
+ os = yasm_xmalloc(sizeof(yasm_offset_setter));
+ os->bc = NULL;
+ os->cur_val = 0;
+ os->new_val = 0;
+ os->thres = 0;
+ STAILQ_INSERT_TAIL(&optd.offset_setters, os, link);
+ optd.os = os;
+
+ /* Step 1a */
+ STAILQ_FOREACH(sect, &object->sections, link) {
+ unsigned long offset = 0;
+
+ yasm_bytecode *bc = STAILQ_FIRST(&sect->bcs);
+
+ bc->bc_index = bc_index++;
+
+ /* Skip our locally created empty bytecode first. */
+ bc = STAILQ_NEXT(bc, link);
+
+ /* Iterate through the remainder, if any. */
+ while (bc) {
+ bc->bc_index = bc_index++;
+ bc->offset = offset;
+
+ retval = yasm_bc_calc_len(bc, optimize_add_span, &optd);
+ yasm_errwarn_propagate(errwarns, bc->line);
+ if (retval)
+ saw_error = 1;
+ else {
+ if (bc->callback->special == YASM_BC_SPECIAL_OFFSET) {
+ /* Remember it as offset setter */
+ os->bc = bc;
+ os->thres = yasm_bc_next_offset(bc);
+
+ /* Create new placeholder */
+ os = yasm_xmalloc(sizeof(yasm_offset_setter));
+ os->bc = NULL;
+ os->cur_val = 0;
+ os->new_val = 0;
+ os->thres = 0;
+ STAILQ_INSERT_TAIL(&optd.offset_setters, os, link);
+ optd.os = os;
+
+ if (bc->multiple) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("cannot combine multiples and setting assembly position"));
+ yasm_errwarn_propagate(errwarns, bc->line);
+ saw_error = 1;
+ }
+ }
+
+ offset += bc->len*bc->mult_int;
+ }
+
+ bc = STAILQ_NEXT(bc, link);
+ }
+ }
+
+ if (saw_error) {
+ optimize_cleanup(&optd);
+ return;
+ }
+
+ /* Step 1b */
+ TAILQ_FOREACH_SAFE(span, &optd.spans, link, span_temp) {
+ span_create_terms(span);
+ if (yasm_error_occurred()) {
+ yasm_errwarn_propagate(errwarns, span->bc->line);
+ saw_error = 1;
+ } else if (recalc_normal_span(span)) {
+ retval = yasm_bc_expand(span->bc, span->id, span->cur_val,
+ span->new_val, &span->neg_thres,
+ &span->pos_thres);
+ yasm_errwarn_propagate(errwarns, span->bc->line);
+ if (retval < 0)
+ saw_error = 1;
+ else if (retval > 0) {
+ if (!span->active) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("secondary expansion of an external/complex value"));
+ yasm_errwarn_propagate(errwarns, span->bc->line);
+ saw_error = 1;
+ }
+ } else {
+ TAILQ_REMOVE(&optd.spans, span, link);
+ span_destroy(span);
+ continue;
+ }
+ }
+ span->cur_val = span->new_val;
+ }
+
+ if (saw_error) {
+ optimize_cleanup(&optd);
+ return;
+ }
+
+ /* Step 1c */
+ if (update_all_bc_offsets(object, errwarns)) {
+ optimize_cleanup(&optd);
+ return;
+ }
+
+ /* Step 1d */
+ STAILQ_INIT(&optd.QB);
+ TAILQ_FOREACH(span, &optd.spans, link) {
+ yasm_intnum *intn;
+
+ /* Update span terms based on new bc offsets */
+ for (i=0; i<span->num_terms; i++) {
+ intn = yasm_calc_bc_dist(span->terms[i].precbc,
+ span->terms[i].precbc2);
+ if (!intn)
+ yasm_internal_error(N_("could not calculate bc distance"));
+ span->terms[i].cur_val = span->terms[i].new_val;
+ span->terms[i].new_val = yasm_intnum_get_int(intn);
+ yasm_intnum_destroy(intn);
+ }
+ if (span->rel_term) {
+ span->rel_term->cur_val = span->rel_term->new_val;
+ if (span->rel_term->precbc2)
+ span->rel_term->new_val =
+ yasm_bc_next_offset(span->rel_term->precbc2) -
+ span->bc->offset;
+ else
+ span->rel_term->new_val = span->bc->offset -
+ yasm_bc_next_offset(span->rel_term->precbc);
+ }
+
+ if (recalc_normal_span(span)) {
+ /* Exceeded threshold, add span to QB */
+ STAILQ_INSERT_TAIL(&optd.QB, span, linkq);
+ span->active = 2;
+ }
+ }
+
+ /* Do we need step 2? If not, go ahead and exit. */
+ if (STAILQ_EMPTY(&optd.QB)) {
+ optimize_cleanup(&optd);
+ return;
+ }
+
+ /* Update offset-setters values */
+ STAILQ_FOREACH(os, &optd.offset_setters, link) {
+ if (!os->bc)
+ continue;
+ os->thres = yasm_bc_next_offset(os->bc);
+ os->new_val = os->bc->offset;
+ os->cur_val = os->new_val;
+ }
+
+ /* Build up interval tree */
+ TAILQ_FOREACH(span, &optd.spans, link) {
+ for (i=0; i<span->num_terms; i++)
+ optimize_itree_add(optd.itree, span, &span->terms[i]);
+ if (span->rel_term)
+ optimize_itree_add(optd.itree, span, span->rel_term);
+ }
+
+ /* Look for cycles in times expansion (span.id==0) */
+ TAILQ_FOREACH(span, &optd.spans, link) {
+ if (span->id > 0)
+ continue;
+ optd.span = span;
+ IT_enumerate(optd.itree, (long)span->bc->bc_index,
+ (long)span->bc->bc_index, &optd, check_cycle);
+ if (yasm_error_occurred()) {
+ yasm_errwarn_propagate(errwarns, span->bc->line);
+ saw_error = 1;
+ }
+ }
+
+ if (saw_error) {
+ optimize_cleanup(&optd);
+ return;
+ }
+
+ /* Step 2 */
+ STAILQ_INIT(&optd.QA);
+ while (!STAILQ_EMPTY(&optd.QA) || !(STAILQ_EMPTY(&optd.QB))) {
+ unsigned long orig_len;
+ long offset_diff;
+
+ /* QA is for TIMES, update those first, then update non-TIMES.
+ * This is so that TIMES can absorb increases before we look at
+ * expanding non-TIMES BCs.
+ */
+ if (!STAILQ_EMPTY(&optd.QA)) {
+ span = STAILQ_FIRST(&optd.QA);
+ STAILQ_REMOVE_HEAD(&optd.QA, linkq);
+ } else {
+ span = STAILQ_FIRST(&optd.QB);
+ STAILQ_REMOVE_HEAD(&optd.QB, linkq);
+ }
+
+ if (!span->active)
+ continue;
+ span->active = 1; /* no longer in Q */
+
+ /* Make sure we ended up ultimately exceeding thresholds; due to
+ * offset BCs we may have been placed on Q and then reduced in size
+ * again.
+ */
+ if (!recalc_normal_span(span))
+ continue;
+
+ orig_len = span->bc->len * span->bc->mult_int;
+
+ retval = yasm_bc_expand(span->bc, span->id, span->cur_val,
+ span->new_val, &span->neg_thres,
+ &span->pos_thres);
+ yasm_errwarn_propagate(errwarns, span->bc->line);
+
+ if (retval < 0) {
+ /* error */
+ saw_error = 1;
+ continue;
+ } else if (retval > 0) {
+ /* another threshold, keep active */
+ for (i=0; i<span->num_terms; i++)
+ span->terms[i].cur_val = span->terms[i].new_val;
+ if (span->rel_term)
+ span->rel_term->cur_val = span->rel_term->new_val;
+ span->cur_val = span->new_val;
+ } else
+ span->active = 0; /* we're done with this span */
+
+ optd.len_diff = span->bc->len * span->bc->mult_int - orig_len;
+ if (optd.len_diff == 0)
+ continue; /* didn't increase in size */
+
+ /* Iterate over all spans dependent across the bc just expanded */
+ IT_enumerate(optd.itree, (long)span->bc->bc_index,
+ (long)span->bc->bc_index, &optd, optimize_term_expand);
+
+ /* Iterate over offset-setters that follow the bc just expanded.
+ * Stop iteration if:
+ * - no more offset-setters in this section
+ * - offset-setter didn't move its following offset
+ */
+ os = span->os;
+ offset_diff = optd.len_diff;
+ while (os->bc && os->bc->section == span->bc->section
+ && offset_diff != 0) {
+ unsigned long old_next_offset = os->cur_val + os->bc->len;
+ long neg_thres_temp;
+
+ if (offset_diff < 0 && (unsigned long)(-offset_diff) > os->new_val)
+ yasm_internal_error(N_("org/align went to negative offset"));
+ os->new_val += offset_diff;
+
+ orig_len = os->bc->len;
+ retval = yasm_bc_expand(os->bc, 1, (long)os->cur_val,
+ (long)os->new_val, &neg_thres_temp,
+ (long *)&os->thres);
+ yasm_errwarn_propagate(errwarns, os->bc->line);
+
+ offset_diff = os->new_val + os->bc->len - old_next_offset;
+ optd.len_diff = os->bc->len - orig_len;
+ if (optd.len_diff != 0)
+ IT_enumerate(optd.itree, (long)os->bc->bc_index,
+ (long)os->bc->bc_index, &optd, optimize_term_expand);
+
+ os->cur_val = os->new_val;
+ os = STAILQ_NEXT(os, link);
+ }
+ }
+
+ if (saw_error) {
+ optimize_cleanup(&optd);
+ return;
+ }
+
+ /* Step 3 */
+ update_all_bc_offsets(object, errwarns);
+ optimize_cleanup(&optd);
+}
diff --git a/contrib/tools/yasm/libyasm/section.h b/contrib/tools/yasm/libyasm/section.h
index dd88117348..521031f3a5 100644
--- a/contrib/tools/yasm/libyasm/section.h
+++ b/contrib/tools/yasm/libyasm/section.h
@@ -1,384 +1,384 @@
-/**
- * \file libyasm/section.h
- * \brief YASM section interface.
- *
- * \license
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- * \endlicense
- */
-#ifndef YASM_SECTION_H
-#define YASM_SECTION_H
-
-#ifndef YASM_LIB_DECL
-#define YASM_LIB_DECL
-#endif
-
-/** Basic YASM relocation. Object formats will need to extend this
- * structure with additional fields for relocation type, etc.
- */
-typedef struct yasm_reloc yasm_reloc;
-
-struct yasm_reloc {
- /*@reldef@*/ STAILQ_ENTRY(yasm_reloc) link; /**< Link to next reloc */
- yasm_intnum *addr; /**< Offset (address) within section */
- /*@dependent@*/ yasm_symrec *sym; /**< Relocated symbol */
-};
-
-/** An object. This is the internal representation of an object file. */
-struct yasm_object {
- /*@owned@*/ char *src_filename; /**< Source filename */
+/**
+ * \file libyasm/section.h
+ * \brief YASM section interface.
+ *
+ * \license
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * - Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ * \endlicense
+ */
+#ifndef YASM_SECTION_H
+#define YASM_SECTION_H
+
+#ifndef YASM_LIB_DECL
+#define YASM_LIB_DECL
+#endif
+
+/** Basic YASM relocation. Object formats will need to extend this
+ * structure with additional fields for relocation type, etc.
+ */
+typedef struct yasm_reloc yasm_reloc;
+
+struct yasm_reloc {
+ /*@reldef@*/ STAILQ_ENTRY(yasm_reloc) link; /**< Link to next reloc */
+ yasm_intnum *addr; /**< Offset (address) within section */
+ /*@dependent@*/ yasm_symrec *sym; /**< Relocated symbol */
+};
+
+/** An object. This is the internal representation of an object file. */
+struct yasm_object {
+ /*@owned@*/ char *src_filename; /**< Source filename */
/*@owned@*/ char *deb_filename; /**< Debug filename */
- /*@owned@*/ char *obj_filename; /**< Object filename */
-
- /*@owned@*/ yasm_symtab *symtab; /**< Symbol table */
- /*@owned@*/ yasm_arch *arch; /**< Target architecture */
- /*@owned@*/ yasm_objfmt *objfmt; /**< Object format */
- /*@owned@*/ yasm_dbgfmt *dbgfmt; /**< Debug format */
-
- /** Currently active section. Used by some directives. NULL if no
- * section active.
- */
- /*@dependent@*/ /*@null@*/ yasm_section *cur_section;
-
- /** Linked list of sections. */
- /*@reldef@*/ STAILQ_HEAD(yasm_sectionhead, yasm_section) sections;
-
- /** Directives, organized as two level HAMT; first level is parser,
- * second level is directive name.
- */
- /*@owned@*/ struct HAMT *directives;
-
- /** Prefix prepended to externally-visible symbols (empty string if none) */
- /*@owned@*/ char *global_prefix;
-
- /** Suffix appended to externally-visible symbols (empty string if none) */
- /*@owned@*/ char *global_suffix;
-};
-
-/** Create a new object. A default section is created as the first section.
- * An empty symbol table (yasm_symtab) and line mapping (yasm_linemap) are
- * automatically created.
- * \param src_filename source filename (e.g. "file.asm")
- * \param obj_filename object filename (e.g. "file.o")
- * \param arch architecture
- * \param objfmt_module object format module
- * \param dbgfmt_module debug format module
- * \return Newly allocated object, or NULL on error.
- */
-YASM_LIB_DECL
-/*@null@*/ /*@only@*/ yasm_object *yasm_object_create
- (const char *src_filename, const char *obj_filename,
- /*@kept@*/ yasm_arch *arch,
- const yasm_objfmt_module *objfmt_module,
- const yasm_dbgfmt_module *dbgfmt_module);
-
-/** Create a new, or continue an existing, general section. The section is
- * added to the object if there's not already a section by that name.
- * \param object object
- * \param name section name
- * \param align alignment in bytes (0 if none)
- * \param code if nonzero, section is intended to contain code
- * (e.g. alignment should be made with NOP instructions, not 0)
- * \param res_only if nonzero, only space-reserving bytecodes are allowed in
- * the section (ignored if section already exists)
- * \param isnew output; set to nonzero if section did not already exist
- * \param line virtual line of section declaration (ignored if section
- * already exists)
- * \return New section.
- */
-YASM_LIB_DECL
-/*@dependent@*/ yasm_section *yasm_object_get_general
- (yasm_object *object, const char *name, unsigned long align, int code,
- int res_only, /*@out@*/ int *isnew, unsigned long line);
-
-/** Handle a directive. Passed down to object format, debug format, or
- * architecture as appropriate.
- * \param object object
- * \param name directive name
- * \param parser parser keyword
- * \param valparams value/parameters
- * \param objext_valparams "object format-specific" value/parameters
- * \param line virtual line (from yasm_linemap)
- * \return 0 if directive recognized, nonzero if unrecognized.
- */
-YASM_LIB_DECL
-int yasm_object_directive(yasm_object *object, const char *name,
- const char *parser, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams,
- unsigned long line);
-
-/** Delete (free allocated memory for) an object. All sections in the
- * object and all bytecodes within those sections are also deleted.
- * \param object object
- */
-YASM_LIB_DECL
-void yasm_object_destroy(/*@only@*/ yasm_object *object);
-
-/** Print an object. For debugging purposes.
- * \param object object
- * \param f file
- * \param indent_level indentation level
- */
-YASM_LIB_DECL
-void yasm_object_print(const yasm_object *object, FILE *f, int indent_level);
-
-/** Finalize an object after parsing.
- * \param object object
- * \param errwarns error/warning set
- * \note Errors/warnings are stored into errwarns.
- */
-YASM_LIB_DECL
-void yasm_object_finalize(yasm_object *object, yasm_errwarns *errwarns);
-
-/** Traverses all sections in an object, calling a function on each section.
- * \param object object
- * \param d data pointer passed to func on each call
- * \param func function
- * \return Stops early (and returns func's return value) if func returns a
- * nonzero value; otherwise 0.
- */
-YASM_LIB_DECL
-int yasm_object_sections_traverse
- (yasm_object *object, /*@null@*/ void *d,
- int (*func) (yasm_section *sect, /*@null@*/ void *d));
-
-/** Find a general section in an object, based on its name.
- * \param object object
- * \param name section name
- * \return Section matching name, or NULL if no match found.
- */
-YASM_LIB_DECL
-/*@dependent@*/ /*@null@*/ yasm_section *yasm_object_find_general
- (yasm_object *object, const char *name);
-
-/** Change the source filename for an object.
- * \param object object
- * \param src_filename new source filename (e.g. "file.asm")
- */
-YASM_LIB_DECL
-void yasm_object_set_source_fn(yasm_object *object, const char *src_filename);
-
-/** Change the prefix used for externally-visible symbols.
- * \param object object
- * \param prefix new prefix
- */
-YASM_LIB_DECL
-void yasm_object_set_global_prefix(yasm_object *object, const char *prefix);
-
-/** Change the suffix used for externally-visible symbols.
- * \param object object
- * \param suffix new suffix
- */
-YASM_LIB_DECL
-void yasm_object_set_global_suffix(yasm_object *object, const char *suffix);
-
-/** Optimize an object. Takes the unoptimized object and optimizes it.
- * If successful, the object is ready for output to an object file.
- * \param object object
- * \param errwarns error/warning set
- * \note Optimization failures are stored into errwarns.
- */
-YASM_LIB_DECL
-void yasm_object_optimize(yasm_object *object, yasm_errwarns *errwarns);
-
-/** Determine if a section is flagged to contain code.
- * \param sect section
- * \return Nonzero if section is flagged to contain code.
- */
-YASM_LIB_DECL
-int yasm_section_is_code(yasm_section *sect);
-
-/** Get yasm_optimizer-specific flags. For yasm_optimizer use only.
- * \param sect section
- * \return Optimizer-specific flags.
- */
-YASM_LIB_DECL
-unsigned long yasm_section_get_opt_flags(const yasm_section *sect);
-
-/** Set yasm_optimizer-specific flags. For yasm_optimizer use only.
- * \param sect section
- * \param opt_flags optimizer-specific flags.
- */
-YASM_LIB_DECL
-void yasm_section_set_opt_flags(yasm_section *sect, unsigned long opt_flags);
-
-/** Determine if a section was declared as the "default" section (e.g. not
- * created through a section directive).
- * \param sect section
- * \return Nonzero if section was declared as default.
- */
-YASM_LIB_DECL
-int yasm_section_is_default(const yasm_section *sect);
-
-/** Set section "default" flag to a new value.
- * \param sect section
- * \param def new value of default flag
- */
-YASM_LIB_DECL
-void yasm_section_set_default(yasm_section *sect, int def);
-
-/** Get object owner of a section.
- * \param sect section
- * \return Object this section is a part of.
- */
-YASM_LIB_DECL
-yasm_object *yasm_section_get_object(const yasm_section *sect);
-
-/** Get assocated data for a section and data callback.
- * \param sect section
- * \param callback callback used when adding data
- * \return Associated data (NULL if none).
- */
-YASM_LIB_DECL
-/*@dependent@*/ /*@null@*/ void *yasm_section_get_data
- (yasm_section *sect, const yasm_assoc_data_callback *callback);
-
-/** Add associated data to a section.
- * \attention Deletes any existing associated data for that data callback.
- * \param sect section
- * \param callback callback
- * \param data data to associate
- */
-YASM_LIB_DECL
-void yasm_section_add_data(yasm_section *sect,
- const yasm_assoc_data_callback *callback,
- /*@null@*/ /*@only@*/ void *data);
-
-/** Add a relocation to a section.
- * \param sect section
- * \param reloc relocation
- * \param destroy_func function that can destroy the relocation
- * \note Does not make a copy of reloc. The same destroy_func must be
- * used for all relocations in a section or an internal error will occur.
- * The section will destroy the relocation address; it is the caller's
- * responsibility to destroy any other allocated data.
- */
-YASM_LIB_DECL
-void yasm_section_add_reloc(yasm_section *sect, yasm_reloc *reloc,
- void (*destroy_func) (/*@only@*/ void *reloc));
-
-/** Get the first relocation for a section.
- * \param sect section
- * \return First relocation for section. NULL if no relocations.
- */
-YASM_LIB_DECL
-/*@null@*/ yasm_reloc *yasm_section_relocs_first(yasm_section *sect);
-
-/** Get the next relocation for a section.
- * \param reloc previous relocation
- * \return Next relocation for section. NULL if no more relocations.
- */
-/*@null@*/ yasm_reloc *yasm_section_reloc_next(yasm_reloc *reloc);
-#ifndef YASM_DOXYGEN
-#define yasm_section_reloc_next(x) STAILQ_NEXT((x), link)
-#endif
-
-/** Get the basic relocation information for a relocation.
- * \param reloc relocation
- * \param addrp address of relocation within section (returned)
- * \param symp relocated symbol (returned)
- */
-YASM_LIB_DECL
-void yasm_reloc_get(yasm_reloc *reloc, yasm_intnum **addrp,
- /*@dependent@*/ yasm_symrec **symp);
-
-/** Get the first bytecode in a section.
- * \param sect section
- * \return First bytecode in section (at least one empty bytecode is always
- * present).
- */
-YASM_LIB_DECL
-yasm_bytecode *yasm_section_bcs_first(yasm_section *sect);
-
-/** Get the last bytecode in a section.
- * \param sect section
- * \return Last bytecode in section (at least one empty bytecode is always
- * present).
- */
-YASM_LIB_DECL
-yasm_bytecode *yasm_section_bcs_last(yasm_section *sect);
-
-/** Add bytecode to the end of a section.
- * \note Does not make a copy of bc; so don't pass this function static or
- * local variables, and discard the bc pointer after calling this
- * function.
- * \param sect section
- * \param bc bytecode (may be NULL)
- * \return If bytecode was actually appended (it wasn't NULL or empty), the
- * bytecode; otherwise NULL.
- */
-YASM_LIB_DECL
-/*@only@*/ /*@null@*/ yasm_bytecode *yasm_section_bcs_append
- (yasm_section *sect,
- /*@returned@*/ /*@only@*/ /*@null@*/ yasm_bytecode *bc);
-
-/** Traverses all bytecodes in a section, calling a function on each bytecode.
- * \param sect section
- * \param errwarns error/warning set (may be NULL)
- * \param d data pointer passed to func on each call (may be NULL)
- * \param func function
- * \return Stops early (and returns func's return value) if func returns a
- * nonzero value; otherwise 0.
- * \note If errwarns is non-NULL, yasm_errwarn_propagate() is called after
- * each call to func (with the bytecode's line number).
- */
-YASM_LIB_DECL
-int yasm_section_bcs_traverse
- (yasm_section *sect, /*@null@*/ yasm_errwarns *errwarns,
- /*@null@*/ void *d, int (*func) (yasm_bytecode *bc, /*@null@*/ void *d));
-
-/** Get name of a section.
- * \param sect section
- * \return Section name.
- */
-YASM_LIB_DECL
-/*@observer@*/ const char *yasm_section_get_name(const yasm_section *sect);
-
-/** Change alignment of a section.
- * \param sect section
- * \param align alignment in bytes
- * \param line virtual line
- */
-YASM_LIB_DECL
-void yasm_section_set_align(yasm_section *sect, unsigned long align,
- unsigned long line);
-
-/** Get alignment of a section.
- * \param sect section
- * \return Alignment in bytes (0 if none).
- */
-YASM_LIB_DECL
-unsigned long yasm_section_get_align(const yasm_section *sect);
-
-/** Print a section. For debugging purposes.
- * \param f file
- * \param indent_level indentation level
- * \param sect section
- * \param print_bcs if nonzero, print bytecodes within section
- */
-YASM_LIB_DECL
-void yasm_section_print(/*@null@*/ const yasm_section *sect, FILE *f,
- int indent_level, int print_bcs);
-
-#endif
+ /*@owned@*/ char *obj_filename; /**< Object filename */
+
+ /*@owned@*/ yasm_symtab *symtab; /**< Symbol table */
+ /*@owned@*/ yasm_arch *arch; /**< Target architecture */
+ /*@owned@*/ yasm_objfmt *objfmt; /**< Object format */
+ /*@owned@*/ yasm_dbgfmt *dbgfmt; /**< Debug format */
+
+ /** Currently active section. Used by some directives. NULL if no
+ * section active.
+ */
+ /*@dependent@*/ /*@null@*/ yasm_section *cur_section;
+
+ /** Linked list of sections. */
+ /*@reldef@*/ STAILQ_HEAD(yasm_sectionhead, yasm_section) sections;
+
+ /** Directives, organized as two level HAMT; first level is parser,
+ * second level is directive name.
+ */
+ /*@owned@*/ struct HAMT *directives;
+
+ /** Prefix prepended to externally-visible symbols (empty string if none) */
+ /*@owned@*/ char *global_prefix;
+
+ /** Suffix appended to externally-visible symbols (empty string if none) */
+ /*@owned@*/ char *global_suffix;
+};
+
+/** Create a new object. A default section is created as the first section.
+ * An empty symbol table (yasm_symtab) and line mapping (yasm_linemap) are
+ * automatically created.
+ * \param src_filename source filename (e.g. "file.asm")
+ * \param obj_filename object filename (e.g. "file.o")
+ * \param arch architecture
+ * \param objfmt_module object format module
+ * \param dbgfmt_module debug format module
+ * \return Newly allocated object, or NULL on error.
+ */
+YASM_LIB_DECL
+/*@null@*/ /*@only@*/ yasm_object *yasm_object_create
+ (const char *src_filename, const char *obj_filename,
+ /*@kept@*/ yasm_arch *arch,
+ const yasm_objfmt_module *objfmt_module,
+ const yasm_dbgfmt_module *dbgfmt_module);
+
+/** Create a new, or continue an existing, general section. The section is
+ * added to the object if there's not already a section by that name.
+ * \param object object
+ * \param name section name
+ * \param align alignment in bytes (0 if none)
+ * \param code if nonzero, section is intended to contain code
+ * (e.g. alignment should be made with NOP instructions, not 0)
+ * \param res_only if nonzero, only space-reserving bytecodes are allowed in
+ * the section (ignored if section already exists)
+ * \param isnew output; set to nonzero if section did not already exist
+ * \param line virtual line of section declaration (ignored if section
+ * already exists)
+ * \return New section.
+ */
+YASM_LIB_DECL
+/*@dependent@*/ yasm_section *yasm_object_get_general
+ (yasm_object *object, const char *name, unsigned long align, int code,
+ int res_only, /*@out@*/ int *isnew, unsigned long line);
+
+/** Handle a directive. Passed down to object format, debug format, or
+ * architecture as appropriate.
+ * \param object object
+ * \param name directive name
+ * \param parser parser keyword
+ * \param valparams value/parameters
+ * \param objext_valparams "object format-specific" value/parameters
+ * \param line virtual line (from yasm_linemap)
+ * \return 0 if directive recognized, nonzero if unrecognized.
+ */
+YASM_LIB_DECL
+int yasm_object_directive(yasm_object *object, const char *name,
+ const char *parser, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams,
+ unsigned long line);
+
+/** Delete (free allocated memory for) an object. All sections in the
+ * object and all bytecodes within those sections are also deleted.
+ * \param object object
+ */
+YASM_LIB_DECL
+void yasm_object_destroy(/*@only@*/ yasm_object *object);
+
+/** Print an object. For debugging purposes.
+ * \param object object
+ * \param f file
+ * \param indent_level indentation level
+ */
+YASM_LIB_DECL
+void yasm_object_print(const yasm_object *object, FILE *f, int indent_level);
+
+/** Finalize an object after parsing.
+ * \param object object
+ * \param errwarns error/warning set
+ * \note Errors/warnings are stored into errwarns.
+ */
+YASM_LIB_DECL
+void yasm_object_finalize(yasm_object *object, yasm_errwarns *errwarns);
+
+/** Traverses all sections in an object, calling a function on each section.
+ * \param object object
+ * \param d data pointer passed to func on each call
+ * \param func function
+ * \return Stops early (and returns func's return value) if func returns a
+ * nonzero value; otherwise 0.
+ */
+YASM_LIB_DECL
+int yasm_object_sections_traverse
+ (yasm_object *object, /*@null@*/ void *d,
+ int (*func) (yasm_section *sect, /*@null@*/ void *d));
+
+/** Find a general section in an object, based on its name.
+ * \param object object
+ * \param name section name
+ * \return Section matching name, or NULL if no match found.
+ */
+YASM_LIB_DECL
+/*@dependent@*/ /*@null@*/ yasm_section *yasm_object_find_general
+ (yasm_object *object, const char *name);
+
+/** Change the source filename for an object.
+ * \param object object
+ * \param src_filename new source filename (e.g. "file.asm")
+ */
+YASM_LIB_DECL
+void yasm_object_set_source_fn(yasm_object *object, const char *src_filename);
+
+/** Change the prefix used for externally-visible symbols.
+ * \param object object
+ * \param prefix new prefix
+ */
+YASM_LIB_DECL
+void yasm_object_set_global_prefix(yasm_object *object, const char *prefix);
+
+/** Change the suffix used for externally-visible symbols.
+ * \param object object
+ * \param suffix new suffix
+ */
+YASM_LIB_DECL
+void yasm_object_set_global_suffix(yasm_object *object, const char *suffix);
+
+/** Optimize an object. Takes the unoptimized object and optimizes it.
+ * If successful, the object is ready for output to an object file.
+ * \param object object
+ * \param errwarns error/warning set
+ * \note Optimization failures are stored into errwarns.
+ */
+YASM_LIB_DECL
+void yasm_object_optimize(yasm_object *object, yasm_errwarns *errwarns);
+
+/** Determine if a section is flagged to contain code.
+ * \param sect section
+ * \return Nonzero if section is flagged to contain code.
+ */
+YASM_LIB_DECL
+int yasm_section_is_code(yasm_section *sect);
+
+/** Get yasm_optimizer-specific flags. For yasm_optimizer use only.
+ * \param sect section
+ * \return Optimizer-specific flags.
+ */
+YASM_LIB_DECL
+unsigned long yasm_section_get_opt_flags(const yasm_section *sect);
+
+/** Set yasm_optimizer-specific flags. For yasm_optimizer use only.
+ * \param sect section
+ * \param opt_flags optimizer-specific flags.
+ */
+YASM_LIB_DECL
+void yasm_section_set_opt_flags(yasm_section *sect, unsigned long opt_flags);
+
+/** Determine if a section was declared as the "default" section (e.g. not
+ * created through a section directive).
+ * \param sect section
+ * \return Nonzero if section was declared as default.
+ */
+YASM_LIB_DECL
+int yasm_section_is_default(const yasm_section *sect);
+
+/** Set section "default" flag to a new value.
+ * \param sect section
+ * \param def new value of default flag
+ */
+YASM_LIB_DECL
+void yasm_section_set_default(yasm_section *sect, int def);
+
+/** Get object owner of a section.
+ * \param sect section
+ * \return Object this section is a part of.
+ */
+YASM_LIB_DECL
+yasm_object *yasm_section_get_object(const yasm_section *sect);
+
+/** Get assocated data for a section and data callback.
+ * \param sect section
+ * \param callback callback used when adding data
+ * \return Associated data (NULL if none).
+ */
+YASM_LIB_DECL
+/*@dependent@*/ /*@null@*/ void *yasm_section_get_data
+ (yasm_section *sect, const yasm_assoc_data_callback *callback);
+
+/** Add associated data to a section.
+ * \attention Deletes any existing associated data for that data callback.
+ * \param sect section
+ * \param callback callback
+ * \param data data to associate
+ */
+YASM_LIB_DECL
+void yasm_section_add_data(yasm_section *sect,
+ const yasm_assoc_data_callback *callback,
+ /*@null@*/ /*@only@*/ void *data);
+
+/** Add a relocation to a section.
+ * \param sect section
+ * \param reloc relocation
+ * \param destroy_func function that can destroy the relocation
+ * \note Does not make a copy of reloc. The same destroy_func must be
+ * used for all relocations in a section or an internal error will occur.
+ * The section will destroy the relocation address; it is the caller's
+ * responsibility to destroy any other allocated data.
+ */
+YASM_LIB_DECL
+void yasm_section_add_reloc(yasm_section *sect, yasm_reloc *reloc,
+ void (*destroy_func) (/*@only@*/ void *reloc));
+
+/** Get the first relocation for a section.
+ * \param sect section
+ * \return First relocation for section. NULL if no relocations.
+ */
+YASM_LIB_DECL
+/*@null@*/ yasm_reloc *yasm_section_relocs_first(yasm_section *sect);
+
+/** Get the next relocation for a section.
+ * \param reloc previous relocation
+ * \return Next relocation for section. NULL if no more relocations.
+ */
+/*@null@*/ yasm_reloc *yasm_section_reloc_next(yasm_reloc *reloc);
+#ifndef YASM_DOXYGEN
+#define yasm_section_reloc_next(x) STAILQ_NEXT((x), link)
+#endif
+
+/** Get the basic relocation information for a relocation.
+ * \param reloc relocation
+ * \param addrp address of relocation within section (returned)
+ * \param symp relocated symbol (returned)
+ */
+YASM_LIB_DECL
+void yasm_reloc_get(yasm_reloc *reloc, yasm_intnum **addrp,
+ /*@dependent@*/ yasm_symrec **symp);
+
+/** Get the first bytecode in a section.
+ * \param sect section
+ * \return First bytecode in section (at least one empty bytecode is always
+ * present).
+ */
+YASM_LIB_DECL
+yasm_bytecode *yasm_section_bcs_first(yasm_section *sect);
+
+/** Get the last bytecode in a section.
+ * \param sect section
+ * \return Last bytecode in section (at least one empty bytecode is always
+ * present).
+ */
+YASM_LIB_DECL
+yasm_bytecode *yasm_section_bcs_last(yasm_section *sect);
+
+/** Add bytecode to the end of a section.
+ * \note Does not make a copy of bc; so don't pass this function static or
+ * local variables, and discard the bc pointer after calling this
+ * function.
+ * \param sect section
+ * \param bc bytecode (may be NULL)
+ * \return If bytecode was actually appended (it wasn't NULL or empty), the
+ * bytecode; otherwise NULL.
+ */
+YASM_LIB_DECL
+/*@only@*/ /*@null@*/ yasm_bytecode *yasm_section_bcs_append
+ (yasm_section *sect,
+ /*@returned@*/ /*@only@*/ /*@null@*/ yasm_bytecode *bc);
+
+/** Traverses all bytecodes in a section, calling a function on each bytecode.
+ * \param sect section
+ * \param errwarns error/warning set (may be NULL)
+ * \param d data pointer passed to func on each call (may be NULL)
+ * \param func function
+ * \return Stops early (and returns func's return value) if func returns a
+ * nonzero value; otherwise 0.
+ * \note If errwarns is non-NULL, yasm_errwarn_propagate() is called after
+ * each call to func (with the bytecode's line number).
+ */
+YASM_LIB_DECL
+int yasm_section_bcs_traverse
+ (yasm_section *sect, /*@null@*/ yasm_errwarns *errwarns,
+ /*@null@*/ void *d, int (*func) (yasm_bytecode *bc, /*@null@*/ void *d));
+
+/** Get name of a section.
+ * \param sect section
+ * \return Section name.
+ */
+YASM_LIB_DECL
+/*@observer@*/ const char *yasm_section_get_name(const yasm_section *sect);
+
+/** Change alignment of a section.
+ * \param sect section
+ * \param align alignment in bytes
+ * \param line virtual line
+ */
+YASM_LIB_DECL
+void yasm_section_set_align(yasm_section *sect, unsigned long align,
+ unsigned long line);
+
+/** Get alignment of a section.
+ * \param sect section
+ * \return Alignment in bytes (0 if none).
+ */
+YASM_LIB_DECL
+unsigned long yasm_section_get_align(const yasm_section *sect);
+
+/** Print a section. For debugging purposes.
+ * \param f file
+ * \param indent_level indentation level
+ * \param sect section
+ * \param print_bcs if nonzero, print bytecodes within section
+ */
+YASM_LIB_DECL
+void yasm_section_print(/*@null@*/ const yasm_section *sect, FILE *f,
+ int indent_level, int print_bcs);
+
+#endif
diff --git a/contrib/tools/yasm/libyasm/strcasecmp.c b/contrib/tools/yasm/libyasm/strcasecmp.c
index a905ec7724..a87bd88bc9 100644
--- a/contrib/tools/yasm/libyasm/strcasecmp.c
+++ b/contrib/tools/yasm/libyasm/strcasecmp.c
@@ -1,94 +1,94 @@
-/*
- * strcasecmp() implementation for systems that don't have it or stricmp()
- * or strcmpi().
- *
- * Copyright (c) 1987, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-#include "util.h"
-
-#ifndef USE_OUR_OWN_STRCASECMP
-#undef yasm__strcasecmp
-#undef yasm__strncasecmp
-#endif
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "@(#)strcasecmp.c 8.1 (Berkeley) 6/4/93";
-#endif /* LIBC_SCCS and not lint */
-
-#include <ctype.h>
-
-int
-yasm__strcasecmp(const char *s1, const char *s2)
-{
-#ifdef HAVE_STRCASECMP
- return strcasecmp(s1, s2);
-#elif HAVE_STRICMP
- return stricmp(s1, s2);
-#elif HAVE__STRICMP
- return _stricmp(s1, s2);
-#elif HAVE_STRCMPI
- return strcmpi(s1, s2);
-#else
- const unsigned char
- *us1 = (const unsigned char *)s1,
- *us2 = (const unsigned char *)s2;
-
- while (tolower(*us1) == tolower(*us2++))
- if (*us1++ == '\0')
- return (0);
- return (tolower(*us1) - tolower(*--us2));
-#endif
-}
-
-int
-yasm__strncasecmp(const char *s1, const char *s2, size_t n)
-{
-#ifdef HAVE_STRCASECMP
- return strncasecmp(s1, s2, n);
-#elif HAVE_STRICMP
- return strnicmp(s1, s2, n);
-#elif HAVE__STRNICMP
- return _strnicmp(s1, s2, n);
-#elif HAVE_STRCMPI
- return strncmpi(s1, s2, n);
-#else
- const unsigned char
- *us1 = (const unsigned char *)s1,
- *us2 = (const unsigned char *)s2;
-
- if (n != 0) {
- do {
- if (tolower(*us1) != tolower(*us2++))
- return (tolower(*us1) - tolower(*--us2));
- if (*us1++ == '\0')
- break;
- } while (--n != 0);
- }
- return (0);
-#endif
-}
+/*
+ * strcasecmp() implementation for systems that don't have it or stricmp()
+ * or strcmpi().
+ *
+ * Copyright (c) 1987, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#include "util.h"
+
+#ifndef USE_OUR_OWN_STRCASECMP
+#undef yasm__strcasecmp
+#undef yasm__strncasecmp
+#endif
+
+#if defined(LIBC_SCCS) && !defined(lint)
+static char sccsid[] = "@(#)strcasecmp.c 8.1 (Berkeley) 6/4/93";
+#endif /* LIBC_SCCS and not lint */
+
+#include <ctype.h>
+
+int
+yasm__strcasecmp(const char *s1, const char *s2)
+{
+#ifdef HAVE_STRCASECMP
+ return strcasecmp(s1, s2);
+#elif HAVE_STRICMP
+ return stricmp(s1, s2);
+#elif HAVE__STRICMP
+ return _stricmp(s1, s2);
+#elif HAVE_STRCMPI
+ return strcmpi(s1, s2);
+#else
+ const unsigned char
+ *us1 = (const unsigned char *)s1,
+ *us2 = (const unsigned char *)s2;
+
+ while (tolower(*us1) == tolower(*us2++))
+ if (*us1++ == '\0')
+ return (0);
+ return (tolower(*us1) - tolower(*--us2));
+#endif
+}
+
+int
+yasm__strncasecmp(const char *s1, const char *s2, size_t n)
+{
+#ifdef HAVE_STRCASECMP
+ return strncasecmp(s1, s2, n);
+#elif HAVE_STRICMP
+ return strnicmp(s1, s2, n);
+#elif HAVE__STRNICMP
+ return _strnicmp(s1, s2, n);
+#elif HAVE_STRCMPI
+ return strncmpi(s1, s2, n);
+#else
+ const unsigned char
+ *us1 = (const unsigned char *)s1,
+ *us2 = (const unsigned char *)s2;
+
+ if (n != 0) {
+ do {
+ if (tolower(*us1) != tolower(*us2++))
+ return (tolower(*us1) - tolower(*--us2));
+ if (*us1++ == '\0')
+ break;
+ } while (--n != 0);
+ }
+ return (0);
+#endif
+}
diff --git a/contrib/tools/yasm/libyasm/strsep.c b/contrib/tools/yasm/libyasm/strsep.c
index 8320acf056..5688a60879 100644
--- a/contrib/tools/yasm/libyasm/strsep.c
+++ b/contrib/tools/yasm/libyasm/strsep.c
@@ -1,85 +1,85 @@
-/*
- * strsep() implementation for systems that don't have it.
- *
- * Copyright (c) 1990, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-#define NO_STRING_INLINES
-#include "util.h"
-
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "@(#)strsep.c 8.1 (Berkeley) 6/4/93";
-#endif /* LIBC_SCCS and not lint */
-
-#ifdef HAVE_STRSEP
-#undef yasm__strsep
-#endif
-
-/*
- * Get next token from string *stringp, where tokens are possibly-empty
- * strings separated by characters from delim.
- *
- * Writes NULs into the string at *stringp to end tokens.
- * delim need not remain constant from call to call.
- * On return, *stringp points past the last NUL written (if there might
- * be further tokens), or is NULL (if there are definitely no more tokens).
- *
- * If *stringp is NULL, strsep returns NULL.
- */
-/*@-nullstate@*/
-char *
-yasm__strsep(char **stringp, const char *delim)
-{
-#ifdef HAVE_STRSEP
- return strsep(stringp, delim);
-#else
+/*
+ * strsep() implementation for systems that don't have it.
+ *
+ * Copyright (c) 1990, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#define NO_STRING_INLINES
+#include "util.h"
+
+
+#if defined(LIBC_SCCS) && !defined(lint)
+static char sccsid[] = "@(#)strsep.c 8.1 (Berkeley) 6/4/93";
+#endif /* LIBC_SCCS and not lint */
+
+#ifdef HAVE_STRSEP
+#undef yasm__strsep
+#endif
+
+/*
+ * Get next token from string *stringp, where tokens are possibly-empty
+ * strings separated by characters from delim.
+ *
+ * Writes NULs into the string at *stringp to end tokens.
+ * delim need not remain constant from call to call.
+ * On return, *stringp points past the last NUL written (if there might
+ * be further tokens), or is NULL (if there are definitely no more tokens).
+ *
+ * If *stringp is NULL, strsep returns NULL.
+ */
+/*@-nullstate@*/
+char *
+yasm__strsep(char **stringp, const char *delim)
+{
+#ifdef HAVE_STRSEP
+ return strsep(stringp, delim);
+#else
char *s;
const char *spanp;
int c, sc;
- char *tok;
-
- if ((s = *stringp) == NULL)
- return (NULL);
- for (tok = s;;) {
- c = *s++;
- spanp = delim;
- do {
- if ((sc = *spanp++) == c) {
- if (c == 0)
- s = NULL;
- else
- s[-1] = 0;
- *stringp = s;
- return (tok);
- }
- } while (sc != 0);
- }
- /* NOTREACHED */
-#endif
-}
-/*@=nullstate@*/
+ char *tok;
+
+ if ((s = *stringp) == NULL)
+ return (NULL);
+ for (tok = s;;) {
+ c = *s++;
+ spanp = delim;
+ do {
+ if ((sc = *spanp++) == c) {
+ if (c == 0)
+ s = NULL;
+ else
+ s[-1] = 0;
+ *stringp = s;
+ return (tok);
+ }
+ } while (sc != 0);
+ }
+ /* NOTREACHED */
+#endif
+}
+/*@=nullstate@*/
diff --git a/contrib/tools/yasm/libyasm/symrec.c b/contrib/tools/yasm/libyasm/symrec.c
index 1c188c99d8..694f0c6768 100644
--- a/contrib/tools/yasm/libyasm/symrec.c
+++ b/contrib/tools/yasm/libyasm/symrec.c
@@ -1,714 +1,714 @@
-/*
- * Symbol table handling
- *
- * Copyright (C) 2001-2007 Michael Urman, Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include "util.h"
-
-#include <limits.h>
-#include <ctype.h>
-
-#include "libyasm-stdint.h"
-#include "coretype.h"
-#include "valparam.h"
-#include "hamt.h"
-#include "assocdat.h"
-
-#include "errwarn.h"
-#include "intnum.h"
-#include "floatnum.h"
-#include "expr.h"
-#include "symrec.h"
-
-#include "bytecode.h"
-#include "section.h"
-#include "objfmt.h"
-
-
-typedef enum {
- SYM_UNKNOWN, /* for unknown type (COMMON/EXTERN) */
- SYM_EQU, /* for EQU defined symbols (expressions) */
- SYM_LABEL, /* for labels */
- SYM_CURPOS, /* for labels representing the current
- assembly position */
- SYM_SPECIAL /* for special symbols that need to be in
- the symbol table but otherwise have no
- purpose */
-} sym_type;
-
-struct yasm_symrec {
- char *name;
- sym_type type;
- yasm_sym_status status;
- yasm_sym_vis visibility;
- unsigned long def_line; /* line where symbol was first defined */
- unsigned long decl_line; /* line where symbol was first declared */
- unsigned long use_line; /* line where symbol was first used */
- union {
- yasm_expr *expn; /* equ value */
-
- /* bytecode immediately preceding a label */
- /*@dependent@*/ yasm_bytecode *precbc;
- } value;
- unsigned int size; /* 0 if not user-defined */
- const char *segment; /* for segmented systems like DOS */
-
- /* associated data; NULL if none */
- /*@null@*/ /*@only@*/ yasm__assoc_data *assoc_data;
-};
-
-/* Linked list of symbols not in the symbol table. */
-typedef struct non_table_symrec_s {
- /*@reldef@*/ SLIST_ENTRY(non_table_symrec_s) link;
- /*@owned@*/ yasm_symrec *rec;
-} non_table_symrec;
-
-struct yasm_symtab {
- /* The symbol table: a hash array mapped trie (HAMT). */
- /*@only@*/ HAMT *sym_table;
- /* Symbols not in the table */
- SLIST_HEAD(nontablesymhead_s, non_table_symrec_s) non_table_syms;
-
- int case_sensitive;
-};
-
-static void
-objext_valparams_destroy(void *data)
-{
- yasm_vps_destroy((yasm_valparamhead *)data);
-}
-
-static void
-objext_valparams_print(void *data, FILE *f, int indent_level)
-{
- yasm_vps_print((yasm_valparamhead *)data, f);
-}
-
-static yasm_assoc_data_callback objext_valparams_cb = {
- objext_valparams_destroy,
- objext_valparams_print
-};
-
-static void
-common_size_destroy(void *data)
-{
- yasm_expr **e = (yasm_expr **)data;
- yasm_expr_destroy(*e);
- yasm_xfree(data);
-}
-
-static void
-common_size_print(void *data, FILE *f, int indent_level)
-{
- yasm_expr **e = (yasm_expr **)data;
- yasm_expr_print(*e, f);
-}
-
-static yasm_assoc_data_callback common_size_cb = {
- common_size_destroy,
- common_size_print
-};
-
-yasm_symtab *
-yasm_symtab_create(void)
-{
- yasm_symtab *symtab = yasm_xmalloc(sizeof(yasm_symtab));
- symtab->sym_table = HAMT_create(0, yasm_internal_error_);
- SLIST_INIT(&symtab->non_table_syms);
- symtab->case_sensitive = 1;
- return symtab;
-}
-
-void
-yasm_symtab_set_case_sensitive(yasm_symtab *symtab, int sensitive)
-{
- symtab->case_sensitive = sensitive;
-}
-
-static void
-symrec_destroy_one(/*@only@*/ void *d)
-{
- yasm_symrec *sym = d;
- yasm_xfree(sym->name);
- if (sym->type == SYM_EQU && (sym->status & YASM_SYM_VALUED))
- yasm_expr_destroy(sym->value.expn);
- yasm__assoc_data_destroy(sym->assoc_data);
- yasm_xfree(sym);
-}
-
-static /*@partial@*/ yasm_symrec *
-symrec_new_common(/*@keep@*/ char *name, int case_sensitive)
-{
- yasm_symrec *rec = yasm_xmalloc(sizeof(yasm_symrec));
-
- if (!case_sensitive) {
- char *c;
- for (c=name; *c; c++)
- *c = tolower(*c);
- }
-
- rec->name = name;
- rec->type = SYM_UNKNOWN;
- rec->def_line = 0;
- rec->decl_line = 0;
- rec->use_line = 0;
- rec->visibility = YASM_SYM_LOCAL;
- rec->size = 0;
- rec->segment = NULL;
- rec->assoc_data = NULL;
- return rec;
-}
-
-static /*@partial@*/ /*@dependent@*/ yasm_symrec *
-symtab_get_or_new_in_table(yasm_symtab *symtab, /*@only@*/ char *name)
-{
- yasm_symrec *rec = symrec_new_common(name, symtab->case_sensitive);
- int replace = 0;
-
- rec->status = YASM_SYM_NOSTATUS;
-
- if (!symtab->case_sensitive) {
- char *c;
- for (c=name; *c; c++)
- *c = tolower(*c);
- }
-
- return HAMT_insert(symtab->sym_table, name, rec, &replace,
- symrec_destroy_one);
-}
-
-static /*@partial@*/ /*@dependent@*/ yasm_symrec *
-symtab_get_or_new_not_in_table(yasm_symtab *symtab, /*@only@*/ char *name)
-{
- non_table_symrec *sym = yasm_xmalloc(sizeof(non_table_symrec));
- sym->rec = symrec_new_common(name, symtab->case_sensitive);
-
- sym->rec->status = YASM_SYM_NOTINTABLE;
-
- SLIST_INSERT_HEAD(&symtab->non_table_syms, sym, link);
-
- return sym->rec;
-}
-
-/* create a new symrec */
-/*@-freshtrans -mustfree@*/
-static /*@partial@*/ /*@dependent@*/ yasm_symrec *
-symtab_get_or_new(yasm_symtab *symtab, const char *name, int in_table)
-{
- char *symname = yasm__xstrdup(name);
-
- if (in_table)
- return symtab_get_or_new_in_table(symtab, symname);
- else
- return symtab_get_or_new_not_in_table(symtab, symname);
-}
-/*@=freshtrans =mustfree@*/
-
-int
-yasm_symtab_traverse(yasm_symtab *symtab, void *d,
- int (*func) (yasm_symrec *sym, void *d))
-{
- return HAMT_traverse(symtab->sym_table, d, (int (*) (void *, void *))func);
-}
-
-const yasm_symtab_iter *
-yasm_symtab_first(const yasm_symtab *symtab)
-{
- return (const yasm_symtab_iter *)HAMT_first(symtab->sym_table);
-}
-
-/*@null@*/ const yasm_symtab_iter *
-yasm_symtab_next(const yasm_symtab_iter *prev)
-{
- return (const yasm_symtab_iter *)HAMT_next((const HAMTEntry *)prev);
-}
-
-yasm_symrec *
-yasm_symtab_iter_value(const yasm_symtab_iter *cur)
-{
- return (yasm_symrec *)HAMTEntry_get_data((const HAMTEntry *)cur);
-}
-
-yasm_symrec *
-yasm_symtab_abs_sym(yasm_symtab *symtab)
-{
- yasm_symrec *rec = symtab_get_or_new(symtab, "", 1);
- rec->def_line = 0;
- rec->decl_line = 0;
- rec->use_line = 0;
- rec->type = SYM_EQU;
- rec->value.expn =
- yasm_expr_create_ident(yasm_expr_int(yasm_intnum_create_uint(0)), 0);
- rec->status |= YASM_SYM_DEFINED|YASM_SYM_VALUED|YASM_SYM_USED;
- return rec;
-}
-
-yasm_symrec *
-yasm_symtab_use(yasm_symtab *symtab, const char *name, unsigned long line)
-{
- yasm_symrec *rec = symtab_get_or_new(symtab, name, 1);
- if (rec->use_line == 0)
- rec->use_line = line; /* set line number of first use */
- rec->status |= YASM_SYM_USED;
- return rec;
-}
-
-yasm_symrec *
-yasm_symtab_get(yasm_symtab *symtab, const char *name)
-{
- if (!symtab->case_sensitive) {
- char *_name = yasm__xstrdup(name);
- char *c;
- yasm_symrec *ret;
- for (c=_name; *c; c++)
- *c = tolower(*c);
- ret = HAMT_search(symtab->sym_table, _name);
- yasm_xfree(_name);
- return ret;
- } else
- return HAMT_search(symtab->sym_table, name);
-}
-
-static /*@dependent@*/ yasm_symrec *
-symtab_define(yasm_symtab *symtab, const char *name, sym_type type,
- int in_table, unsigned long line)
-{
- yasm_symrec *rec = symtab_get_or_new(symtab, name, in_table);
-
- /* Has it been defined before (either by DEFINED or COMMON/EXTERN)? */
- if (rec->status & YASM_SYM_DEFINED) {
- yasm_error_set_xref(rec->def_line!=0 ? rec->def_line : rec->decl_line,
- N_("`%s' previously defined here"), name);
- yasm_error_set(YASM_ERROR_GENERAL, N_("redefinition of `%s'"),
- name);
- } else {
- if (rec->visibility & YASM_SYM_EXTERN)
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("`%s' both defined and declared extern"), name);
- rec->def_line = line; /* set line number of definition */
- rec->type = type;
- rec->status |= YASM_SYM_DEFINED;
- rec->size = 0;
- rec->segment = NULL;
- }
- return rec;
-}
-
-yasm_symrec *
-yasm_symtab_define_equ(yasm_symtab *symtab, const char *name, yasm_expr *e,
- unsigned long line)
-{
- yasm_symrec *rec = symtab_define(symtab, name, SYM_EQU, 1, line);
- if (yasm_error_occurred())
- return rec;
- rec->value.expn = e;
- rec->status |= YASM_SYM_VALUED;
- return rec;
-}
-
-yasm_symrec *
-yasm_symtab_define_label(yasm_symtab *symtab, const char *name,
- yasm_bytecode *precbc, int in_table,
- unsigned long line)
-{
- yasm_symrec *rec = symtab_define(symtab, name, SYM_LABEL, in_table, line);
- if (yasm_error_occurred())
- return rec;
- rec->value.precbc = precbc;
- if (in_table && precbc)
- yasm_bc__add_symrec(precbc, rec);
- return rec;
-}
-
-yasm_symrec *
-yasm_symtab_define_curpos(yasm_symtab *symtab, const char *name,
- yasm_bytecode *precbc, unsigned long line)
-{
- yasm_symrec *rec = symtab_define(symtab, name, SYM_CURPOS, 0, line);
- if (yasm_error_occurred())
- return rec;
- rec->value.precbc = precbc;
- return rec;
-}
-
-yasm_symrec *
-yasm_symtab_define_special(yasm_symtab *symtab, const char *name,
- yasm_sym_vis vis)
-{
- yasm_symrec *rec = symtab_define(symtab, name, SYM_SPECIAL, 1, 0);
- if (yasm_error_occurred())
- return rec;
- rec->status |= YASM_SYM_VALUED;
- rec->visibility = vis;
- return rec;
-}
-
-yasm_symrec *
-yasm_symtab_declare(yasm_symtab *symtab, const char *name, yasm_sym_vis vis,
- unsigned long line)
-{
- yasm_symrec *rec = symtab_get_or_new(symtab, name, 1);
- yasm_symrec_declare(rec, vis, line);
- return rec;
-}
-
-void
-yasm_symrec_declare(yasm_symrec *rec, yasm_sym_vis vis, unsigned long line)
-{
- /* Allowable combinations:
- * Existing State-------------- vis New State-------------------
- * DEFINED GLOBAL COMMON EXTERN GCE DEFINED GLOBAL COMMON EXTERN
- * 0 - 0 0 GCE 0 G C E
- * 0 - 0 1 GE 0 G 0 E
- * 0 - 1 0 GC 0 G C 0
- * X 0 - 1 1
- * 1 - 0 0 G 1 G 0 0
- * X 1 - - 1
- * X 1 - 1 -
- */
- if ((vis == YASM_SYM_GLOBAL) ||
- (!(rec->status & YASM_SYM_DEFINED) &&
- (!(rec->visibility & (YASM_SYM_COMMON | YASM_SYM_EXTERN)) ||
- ((rec->visibility & YASM_SYM_COMMON) && (vis == YASM_SYM_COMMON)) ||
- ((rec->visibility & YASM_SYM_EXTERN) && (vis == YASM_SYM_EXTERN))))) {
- rec->decl_line = line;
- rec->visibility |= vis;
- } else
- yasm_error_set(YASM_ERROR_GENERAL,
- N_("duplicate definition of `%s'; first defined on line %lu"),
- rec->name, rec->def_line!=0 ? rec->def_line : rec->decl_line);
-}
-
-typedef struct symtab_finalize_info {
- unsigned long firstundef_line;
- int undef_extern;
- yasm_errwarns *errwarns;
-} symtab_finalize_info;
-
-static int
-symtab_parser_finalize_checksym(yasm_symrec *sym, /*@null@*/ void *d)
-{
- symtab_finalize_info *info = (symtab_finalize_info *)d;
-
- /* error if a symbol is used but never defined or extern/common declared */
- if ((sym->status & YASM_SYM_USED) && !(sym->status & YASM_SYM_DEFINED) &&
- !(sym->visibility & (YASM_SYM_EXTERN | YASM_SYM_COMMON))) {
- if (info->undef_extern)
- sym->visibility |= YASM_SYM_EXTERN;
- else {
- yasm_error_set(YASM_ERROR_GENERAL,
- N_("undefined symbol `%s' (first use)"), sym->name);
- yasm_errwarn_propagate(info->errwarns, sym->use_line);
- if (sym->use_line < info->firstundef_line)
- info->firstundef_line = sym->use_line;
- }
- }
-
- return 0;
-}
-
-void
-yasm_symtab_parser_finalize(yasm_symtab *symtab, int undef_extern,
- yasm_errwarns *errwarns)
-{
- symtab_finalize_info info;
- info.firstundef_line = ULONG_MAX;
- info.undef_extern = undef_extern;
- info.errwarns = errwarns;
- yasm_symtab_traverse(symtab, &info, symtab_parser_finalize_checksym);
- if (info.firstundef_line < ULONG_MAX) {
- yasm_error_set(YASM_ERROR_GENERAL,
- N_(" (Each undefined symbol is reported only once.)"));
- yasm_errwarn_propagate(errwarns, info.firstundef_line);
- }
-}
-
-void
-yasm_symtab_destroy(yasm_symtab *symtab)
-{
- HAMT_destroy(symtab->sym_table, symrec_destroy_one);
-
- while (!SLIST_EMPTY(&symtab->non_table_syms)) {
- non_table_symrec *sym = SLIST_FIRST(&symtab->non_table_syms);
- SLIST_REMOVE_HEAD(&symtab->non_table_syms, link);
- symrec_destroy_one(sym->rec);
- yasm_xfree(sym);
- }
-
- yasm_xfree(symtab);
-}
-
-typedef struct symrec_print_data {
- FILE *f;
- int indent_level;
-} symrec_print_data;
-
-/*@+voidabstract@*/
-static int
-symrec_print_wrapper(yasm_symrec *sym, /*@null@*/ void *d)
-{
- symrec_print_data *data = (symrec_print_data *)d;
- assert(data != NULL);
- fprintf(data->f, "%*sSymbol `%s'\n", data->indent_level, "", sym->name);
- yasm_symrec_print(sym, data->f, data->indent_level+1);
- return 0;
-}
-
-void
-yasm_symtab_print(yasm_symtab *symtab, FILE *f, int indent_level)
-{
- symrec_print_data data;
- data.f = f;
- data.indent_level = indent_level;
- yasm_symtab_traverse(symtab, &data, symrec_print_wrapper);
-}
-/*@=voidabstract@*/
-
-const char *
-yasm_symrec_get_name(const yasm_symrec *sym)
-{
- return sym->name;
-}
-
-char *
-yasm_symrec_get_global_name(const yasm_symrec *sym, const yasm_object *object)
-{
- if (sym->visibility & (YASM_SYM_GLOBAL|YASM_SYM_COMMON|YASM_SYM_EXTERN)) {
- char *name = yasm_xmalloc(strlen(object->global_prefix) +
- strlen(sym->name) +
- strlen(object->global_suffix) + 1);
- strcpy(name, object->global_prefix);
- strcat(name, sym->name);
- strcat(name, object->global_suffix);
- return name;
- }
- return yasm__xstrdup(sym->name);
-}
-
-yasm_sym_vis
-yasm_symrec_get_visibility(const yasm_symrec *sym)
-{
- return sym->visibility;
-}
-
-yasm_sym_status
-yasm_symrec_get_status(const yasm_symrec *sym)
-{
- return sym->status;
-}
-
-unsigned long
-yasm_symrec_get_def_line(const yasm_symrec *sym)
-{
- return sym->def_line;
-}
-
-unsigned long
-yasm_symrec_get_decl_line(const yasm_symrec *sym)
-{
- return sym->decl_line;
-}
-
-unsigned long
-yasm_symrec_get_use_line(const yasm_symrec *sym)
-{
- return sym->use_line;
-}
-
-const yasm_expr *
-yasm_symrec_get_equ(const yasm_symrec *sym)
-{
- if (sym->type == SYM_EQU && (sym->status & YASM_SYM_VALUED))
- return sym->value.expn;
- return (const yasm_expr *)NULL;
-}
-
-int
-yasm_symrec_get_label(const yasm_symrec *sym,
- yasm_symrec_get_label_bytecodep *precbc)
-{
- if (!(sym->type == SYM_LABEL || sym->type == SYM_CURPOS)
- || !sym->value.precbc) {
- *precbc = (yasm_symrec_get_label_bytecodep)0xDEADBEEF;
- return 0;
- }
- *precbc = sym->value.precbc;
- return 1;
-}
-
-void
-yasm_symrec_set_size(yasm_symrec *sym, int size)
-{
- sym->size = size;
-}
-
-int
-yasm_symrec_get_size(const yasm_symrec *sym)
-{
- return sym->size;
-}
-
-void
-yasm_symrec_set_segment(yasm_symrec *sym, const char *segment)
-{
- sym->segment = segment;
-}
-
-const char *
-yasm_symrec_get_segment(const yasm_symrec *sym)
-{
- return sym->segment;
-}
-
-int
-yasm_symrec_is_abs(const yasm_symrec *sym)
-{
- return (sym->def_line == 0 && sym->type == SYM_EQU &&
- sym->name[0] == '\0');
-}
-
-int
-yasm_symrec_is_special(const yasm_symrec *sym)
-{
- return (sym->type == SYM_SPECIAL);
-}
-
-int
-yasm_symrec_is_curpos(const yasm_symrec *sym)
-{
- return (sym->type == SYM_CURPOS);
-}
-
-void
-yasm_symrec_set_objext_valparams(yasm_symrec *sym,
- /*@only@*/ yasm_valparamhead *objext_valparams)
-{
- yasm_symrec_add_data(sym, &objext_valparams_cb, objext_valparams);
-}
-
-yasm_valparamhead *
-yasm_symrec_get_objext_valparams(yasm_symrec *sym)
-{
- return yasm_symrec_get_data(sym, &objext_valparams_cb);
-}
-
-void
-yasm_symrec_set_common_size(yasm_symrec *sym,
- /*@only@*/ yasm_expr *common_size)
-{
- yasm_expr **ep = yasm_xmalloc(sizeof(yasm_expr *));
- *ep = common_size;
- yasm_symrec_add_data(sym, &common_size_cb, ep);
-}
-
-yasm_expr **
-yasm_symrec_get_common_size(yasm_symrec *sym)
-{
- return (yasm_expr **)yasm_symrec_get_data(sym, &common_size_cb);
-}
-
-void *
-yasm_symrec_get_data(yasm_symrec *sym,
- const yasm_assoc_data_callback *callback)
-{
- return yasm__assoc_data_get(sym->assoc_data, callback);
-}
-
-void
-yasm_symrec_add_data(yasm_symrec *sym,
- const yasm_assoc_data_callback *callback, void *data)
-{
- sym->assoc_data = yasm__assoc_data_add(sym->assoc_data, callback, data);
-}
-
-void
-yasm_symrec_print(const yasm_symrec *sym, FILE *f, int indent_level)
-{
- switch (sym->type) {
- case SYM_UNKNOWN:
- fprintf(f, "%*s-Unknown (Common/Extern)-\n", indent_level, "");
- break;
- case SYM_EQU:
- fprintf(f, "%*s_EQU_\n", indent_level, "");
- fprintf(f, "%*sExpn=", indent_level, "");
- if (sym->status & YASM_SYM_VALUED)
- yasm_expr_print(sym->value.expn, f);
- else
- fprintf(f, "***UNVALUED***");
- fprintf(f, "\n");
- break;
- case SYM_LABEL:
- case SYM_CURPOS:
- fprintf(f, "%*s_%s_\n%*sSection:\n", indent_level, "",
- sym->type == SYM_LABEL ? "Label" : "CurPos",
- indent_level, "");
- yasm_section_print(yasm_bc_get_section(sym->value.precbc), f,
- indent_level+1, 0);
- fprintf(f, "%*sPreceding bytecode:\n", indent_level, "");
- yasm_bc_print(sym->value.precbc, f, indent_level+1);
- break;
- case SYM_SPECIAL:
- fprintf(f, "%*s-Special-\n", indent_level, "");
- break;
- }
-
- fprintf(f, "%*sStatus=", indent_level, "");
- if (sym->status == YASM_SYM_NOSTATUS)
- fprintf(f, "None\n");
- else {
- if (sym->status & YASM_SYM_USED)
- fprintf(f, "Used,");
- if (sym->status & YASM_SYM_DEFINED)
- fprintf(f, "Defined,");
- if (sym->status & YASM_SYM_VALUED)
- fprintf(f, "Valued,");
- if (sym->status & YASM_SYM_NOTINTABLE)
- fprintf(f, "Not in Table,");
- fprintf(f, "\n");
- }
-
- fprintf(f, "%*sVisibility=", indent_level, "");
- if (sym->visibility == YASM_SYM_LOCAL)
- fprintf(f, "Local\n");
- else {
- if (sym->visibility & YASM_SYM_GLOBAL)
- fprintf(f, "Global,");
- if (sym->visibility & YASM_SYM_COMMON)
- fprintf(f, "Common,");
- if (sym->visibility & YASM_SYM_EXTERN)
- fprintf(f, "Extern,");
- fprintf(f, "\n");
- }
-
- if (sym->assoc_data) {
- fprintf(f, "%*sAssociated data:\n", indent_level, "");
- yasm__assoc_data_print(sym->assoc_data, f, indent_level+1);
- }
-
- fprintf(f, "%*sLine Index (Defined)=%lu\n", indent_level, "",
- sym->def_line);
- fprintf(f, "%*sLine Index (Declared)=%lu\n", indent_level, "",
- sym->decl_line);
- fprintf(f, "%*sLine Index (Used)=%lu\n", indent_level, "", sym->use_line);
-}
+/*
+ * Symbol table handling
+ *
+ * Copyright (C) 2001-2007 Michael Urman, Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "util.h"
+
+#include <limits.h>
+#include <ctype.h>
+
+#include "libyasm-stdint.h"
+#include "coretype.h"
+#include "valparam.h"
+#include "hamt.h"
+#include "assocdat.h"
+
+#include "errwarn.h"
+#include "intnum.h"
+#include "floatnum.h"
+#include "expr.h"
+#include "symrec.h"
+
+#include "bytecode.h"
+#include "section.h"
+#include "objfmt.h"
+
+
+typedef enum {
+ SYM_UNKNOWN, /* for unknown type (COMMON/EXTERN) */
+ SYM_EQU, /* for EQU defined symbols (expressions) */
+ SYM_LABEL, /* for labels */
+ SYM_CURPOS, /* for labels representing the current
+ assembly position */
+ SYM_SPECIAL /* for special symbols that need to be in
+ the symbol table but otherwise have no
+ purpose */
+} sym_type;
+
+struct yasm_symrec {
+ char *name;
+ sym_type type;
+ yasm_sym_status status;
+ yasm_sym_vis visibility;
+ unsigned long def_line; /* line where symbol was first defined */
+ unsigned long decl_line; /* line where symbol was first declared */
+ unsigned long use_line; /* line where symbol was first used */
+ union {
+ yasm_expr *expn; /* equ value */
+
+ /* bytecode immediately preceding a label */
+ /*@dependent@*/ yasm_bytecode *precbc;
+ } value;
+ unsigned int size; /* 0 if not user-defined */
+ const char *segment; /* for segmented systems like DOS */
+
+ /* associated data; NULL if none */
+ /*@null@*/ /*@only@*/ yasm__assoc_data *assoc_data;
+};
+
+/* Linked list of symbols not in the symbol table. */
+typedef struct non_table_symrec_s {
+ /*@reldef@*/ SLIST_ENTRY(non_table_symrec_s) link;
+ /*@owned@*/ yasm_symrec *rec;
+} non_table_symrec;
+
+struct yasm_symtab {
+ /* The symbol table: a hash array mapped trie (HAMT). */
+ /*@only@*/ HAMT *sym_table;
+ /* Symbols not in the table */
+ SLIST_HEAD(nontablesymhead_s, non_table_symrec_s) non_table_syms;
+
+ int case_sensitive;
+};
+
+static void
+objext_valparams_destroy(void *data)
+{
+ yasm_vps_destroy((yasm_valparamhead *)data);
+}
+
+static void
+objext_valparams_print(void *data, FILE *f, int indent_level)
+{
+ yasm_vps_print((yasm_valparamhead *)data, f);
+}
+
+static yasm_assoc_data_callback objext_valparams_cb = {
+ objext_valparams_destroy,
+ objext_valparams_print
+};
+
+static void
+common_size_destroy(void *data)
+{
+ yasm_expr **e = (yasm_expr **)data;
+ yasm_expr_destroy(*e);
+ yasm_xfree(data);
+}
+
+static void
+common_size_print(void *data, FILE *f, int indent_level)
+{
+ yasm_expr **e = (yasm_expr **)data;
+ yasm_expr_print(*e, f);
+}
+
+static yasm_assoc_data_callback common_size_cb = {
+ common_size_destroy,
+ common_size_print
+};
+
+yasm_symtab *
+yasm_symtab_create(void)
+{
+ yasm_symtab *symtab = yasm_xmalloc(sizeof(yasm_symtab));
+ symtab->sym_table = HAMT_create(0, yasm_internal_error_);
+ SLIST_INIT(&symtab->non_table_syms);
+ symtab->case_sensitive = 1;
+ return symtab;
+}
+
+void
+yasm_symtab_set_case_sensitive(yasm_symtab *symtab, int sensitive)
+{
+ symtab->case_sensitive = sensitive;
+}
+
+static void
+symrec_destroy_one(/*@only@*/ void *d)
+{
+ yasm_symrec *sym = d;
+ yasm_xfree(sym->name);
+ if (sym->type == SYM_EQU && (sym->status & YASM_SYM_VALUED))
+ yasm_expr_destroy(sym->value.expn);
+ yasm__assoc_data_destroy(sym->assoc_data);
+ yasm_xfree(sym);
+}
+
+static /*@partial@*/ yasm_symrec *
+symrec_new_common(/*@keep@*/ char *name, int case_sensitive)
+{
+ yasm_symrec *rec = yasm_xmalloc(sizeof(yasm_symrec));
+
+ if (!case_sensitive) {
+ char *c;
+ for (c=name; *c; c++)
+ *c = tolower(*c);
+ }
+
+ rec->name = name;
+ rec->type = SYM_UNKNOWN;
+ rec->def_line = 0;
+ rec->decl_line = 0;
+ rec->use_line = 0;
+ rec->visibility = YASM_SYM_LOCAL;
+ rec->size = 0;
+ rec->segment = NULL;
+ rec->assoc_data = NULL;
+ return rec;
+}
+
+static /*@partial@*/ /*@dependent@*/ yasm_symrec *
+symtab_get_or_new_in_table(yasm_symtab *symtab, /*@only@*/ char *name)
+{
+ yasm_symrec *rec = symrec_new_common(name, symtab->case_sensitive);
+ int replace = 0;
+
+ rec->status = YASM_SYM_NOSTATUS;
+
+ if (!symtab->case_sensitive) {
+ char *c;
+ for (c=name; *c; c++)
+ *c = tolower(*c);
+ }
+
+ return HAMT_insert(symtab->sym_table, name, rec, &replace,
+ symrec_destroy_one);
+}
+
+static /*@partial@*/ /*@dependent@*/ yasm_symrec *
+symtab_get_or_new_not_in_table(yasm_symtab *symtab, /*@only@*/ char *name)
+{
+ non_table_symrec *sym = yasm_xmalloc(sizeof(non_table_symrec));
+ sym->rec = symrec_new_common(name, symtab->case_sensitive);
+
+ sym->rec->status = YASM_SYM_NOTINTABLE;
+
+ SLIST_INSERT_HEAD(&symtab->non_table_syms, sym, link);
+
+ return sym->rec;
+}
+
+/* create a new symrec */
+/*@-freshtrans -mustfree@*/
+static /*@partial@*/ /*@dependent@*/ yasm_symrec *
+symtab_get_or_new(yasm_symtab *symtab, const char *name, int in_table)
+{
+ char *symname = yasm__xstrdup(name);
+
+ if (in_table)
+ return symtab_get_or_new_in_table(symtab, symname);
+ else
+ return symtab_get_or_new_not_in_table(symtab, symname);
+}
+/*@=freshtrans =mustfree@*/
+
+int
+yasm_symtab_traverse(yasm_symtab *symtab, void *d,
+ int (*func) (yasm_symrec *sym, void *d))
+{
+ return HAMT_traverse(symtab->sym_table, d, (int (*) (void *, void *))func);
+}
+
+const yasm_symtab_iter *
+yasm_symtab_first(const yasm_symtab *symtab)
+{
+ return (const yasm_symtab_iter *)HAMT_first(symtab->sym_table);
+}
+
+/*@null@*/ const yasm_symtab_iter *
+yasm_symtab_next(const yasm_symtab_iter *prev)
+{
+ return (const yasm_symtab_iter *)HAMT_next((const HAMTEntry *)prev);
+}
+
+yasm_symrec *
+yasm_symtab_iter_value(const yasm_symtab_iter *cur)
+{
+ return (yasm_symrec *)HAMTEntry_get_data((const HAMTEntry *)cur);
+}
+
+yasm_symrec *
+yasm_symtab_abs_sym(yasm_symtab *symtab)
+{
+ yasm_symrec *rec = symtab_get_or_new(symtab, "", 1);
+ rec->def_line = 0;
+ rec->decl_line = 0;
+ rec->use_line = 0;
+ rec->type = SYM_EQU;
+ rec->value.expn =
+ yasm_expr_create_ident(yasm_expr_int(yasm_intnum_create_uint(0)), 0);
+ rec->status |= YASM_SYM_DEFINED|YASM_SYM_VALUED|YASM_SYM_USED;
+ return rec;
+}
+
+yasm_symrec *
+yasm_symtab_use(yasm_symtab *symtab, const char *name, unsigned long line)
+{
+ yasm_symrec *rec = symtab_get_or_new(symtab, name, 1);
+ if (rec->use_line == 0)
+ rec->use_line = line; /* set line number of first use */
+ rec->status |= YASM_SYM_USED;
+ return rec;
+}
+
+yasm_symrec *
+yasm_symtab_get(yasm_symtab *symtab, const char *name)
+{
+ if (!symtab->case_sensitive) {
+ char *_name = yasm__xstrdup(name);
+ char *c;
+ yasm_symrec *ret;
+ for (c=_name; *c; c++)
+ *c = tolower(*c);
+ ret = HAMT_search(symtab->sym_table, _name);
+ yasm_xfree(_name);
+ return ret;
+ } else
+ return HAMT_search(symtab->sym_table, name);
+}
+
+static /*@dependent@*/ yasm_symrec *
+symtab_define(yasm_symtab *symtab, const char *name, sym_type type,
+ int in_table, unsigned long line)
+{
+ yasm_symrec *rec = symtab_get_or_new(symtab, name, in_table);
+
+ /* Has it been defined before (either by DEFINED or COMMON/EXTERN)? */
+ if (rec->status & YASM_SYM_DEFINED) {
+ yasm_error_set_xref(rec->def_line!=0 ? rec->def_line : rec->decl_line,
+ N_("`%s' previously defined here"), name);
+ yasm_error_set(YASM_ERROR_GENERAL, N_("redefinition of `%s'"),
+ name);
+ } else {
+ if (rec->visibility & YASM_SYM_EXTERN)
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("`%s' both defined and declared extern"), name);
+ rec->def_line = line; /* set line number of definition */
+ rec->type = type;
+ rec->status |= YASM_SYM_DEFINED;
+ rec->size = 0;
+ rec->segment = NULL;
+ }
+ return rec;
+}
+
+yasm_symrec *
+yasm_symtab_define_equ(yasm_symtab *symtab, const char *name, yasm_expr *e,
+ unsigned long line)
+{
+ yasm_symrec *rec = symtab_define(symtab, name, SYM_EQU, 1, line);
+ if (yasm_error_occurred())
+ return rec;
+ rec->value.expn = e;
+ rec->status |= YASM_SYM_VALUED;
+ return rec;
+}
+
+yasm_symrec *
+yasm_symtab_define_label(yasm_symtab *symtab, const char *name,
+ yasm_bytecode *precbc, int in_table,
+ unsigned long line)
+{
+ yasm_symrec *rec = symtab_define(symtab, name, SYM_LABEL, in_table, line);
+ if (yasm_error_occurred())
+ return rec;
+ rec->value.precbc = precbc;
+ if (in_table && precbc)
+ yasm_bc__add_symrec(precbc, rec);
+ return rec;
+}
+
+yasm_symrec *
+yasm_symtab_define_curpos(yasm_symtab *symtab, const char *name,
+ yasm_bytecode *precbc, unsigned long line)
+{
+ yasm_symrec *rec = symtab_define(symtab, name, SYM_CURPOS, 0, line);
+ if (yasm_error_occurred())
+ return rec;
+ rec->value.precbc = precbc;
+ return rec;
+}
+
+yasm_symrec *
+yasm_symtab_define_special(yasm_symtab *symtab, const char *name,
+ yasm_sym_vis vis)
+{
+ yasm_symrec *rec = symtab_define(symtab, name, SYM_SPECIAL, 1, 0);
+ if (yasm_error_occurred())
+ return rec;
+ rec->status |= YASM_SYM_VALUED;
+ rec->visibility = vis;
+ return rec;
+}
+
+yasm_symrec *
+yasm_symtab_declare(yasm_symtab *symtab, const char *name, yasm_sym_vis vis,
+ unsigned long line)
+{
+ yasm_symrec *rec = symtab_get_or_new(symtab, name, 1);
+ yasm_symrec_declare(rec, vis, line);
+ return rec;
+}
+
+void
+yasm_symrec_declare(yasm_symrec *rec, yasm_sym_vis vis, unsigned long line)
+{
+ /* Allowable combinations:
+ * Existing State-------------- vis New State-------------------
+ * DEFINED GLOBAL COMMON EXTERN GCE DEFINED GLOBAL COMMON EXTERN
+ * 0 - 0 0 GCE 0 G C E
+ * 0 - 0 1 GE 0 G 0 E
+ * 0 - 1 0 GC 0 G C 0
+ * X 0 - 1 1
+ * 1 - 0 0 G 1 G 0 0
+ * X 1 - - 1
+ * X 1 - 1 -
+ */
+ if ((vis == YASM_SYM_GLOBAL) ||
+ (!(rec->status & YASM_SYM_DEFINED) &&
+ (!(rec->visibility & (YASM_SYM_COMMON | YASM_SYM_EXTERN)) ||
+ ((rec->visibility & YASM_SYM_COMMON) && (vis == YASM_SYM_COMMON)) ||
+ ((rec->visibility & YASM_SYM_EXTERN) && (vis == YASM_SYM_EXTERN))))) {
+ rec->decl_line = line;
+ rec->visibility |= vis;
+ } else
+ yasm_error_set(YASM_ERROR_GENERAL,
+ N_("duplicate definition of `%s'; first defined on line %lu"),
+ rec->name, rec->def_line!=0 ? rec->def_line : rec->decl_line);
+}
+
+typedef struct symtab_finalize_info {
+ unsigned long firstundef_line;
+ int undef_extern;
+ yasm_errwarns *errwarns;
+} symtab_finalize_info;
+
+static int
+symtab_parser_finalize_checksym(yasm_symrec *sym, /*@null@*/ void *d)
+{
+ symtab_finalize_info *info = (symtab_finalize_info *)d;
+
+ /* error if a symbol is used but never defined or extern/common declared */
+ if ((sym->status & YASM_SYM_USED) && !(sym->status & YASM_SYM_DEFINED) &&
+ !(sym->visibility & (YASM_SYM_EXTERN | YASM_SYM_COMMON))) {
+ if (info->undef_extern)
+ sym->visibility |= YASM_SYM_EXTERN;
+ else {
+ yasm_error_set(YASM_ERROR_GENERAL,
+ N_("undefined symbol `%s' (first use)"), sym->name);
+ yasm_errwarn_propagate(info->errwarns, sym->use_line);
+ if (sym->use_line < info->firstundef_line)
+ info->firstundef_line = sym->use_line;
+ }
+ }
+
+ return 0;
+}
+
+void
+yasm_symtab_parser_finalize(yasm_symtab *symtab, int undef_extern,
+ yasm_errwarns *errwarns)
+{
+ symtab_finalize_info info;
+ info.firstundef_line = ULONG_MAX;
+ info.undef_extern = undef_extern;
+ info.errwarns = errwarns;
+ yasm_symtab_traverse(symtab, &info, symtab_parser_finalize_checksym);
+ if (info.firstundef_line < ULONG_MAX) {
+ yasm_error_set(YASM_ERROR_GENERAL,
+ N_(" (Each undefined symbol is reported only once.)"));
+ yasm_errwarn_propagate(errwarns, info.firstundef_line);
+ }
+}
+
+void
+yasm_symtab_destroy(yasm_symtab *symtab)
+{
+ HAMT_destroy(symtab->sym_table, symrec_destroy_one);
+
+ while (!SLIST_EMPTY(&symtab->non_table_syms)) {
+ non_table_symrec *sym = SLIST_FIRST(&symtab->non_table_syms);
+ SLIST_REMOVE_HEAD(&symtab->non_table_syms, link);
+ symrec_destroy_one(sym->rec);
+ yasm_xfree(sym);
+ }
+
+ yasm_xfree(symtab);
+}
+
+typedef struct symrec_print_data {
+ FILE *f;
+ int indent_level;
+} symrec_print_data;
+
+/*@+voidabstract@*/
+static int
+symrec_print_wrapper(yasm_symrec *sym, /*@null@*/ void *d)
+{
+ symrec_print_data *data = (symrec_print_data *)d;
+ assert(data != NULL);
+ fprintf(data->f, "%*sSymbol `%s'\n", data->indent_level, "", sym->name);
+ yasm_symrec_print(sym, data->f, data->indent_level+1);
+ return 0;
+}
+
+void
+yasm_symtab_print(yasm_symtab *symtab, FILE *f, int indent_level)
+{
+ symrec_print_data data;
+ data.f = f;
+ data.indent_level = indent_level;
+ yasm_symtab_traverse(symtab, &data, symrec_print_wrapper);
+}
+/*@=voidabstract@*/
+
+const char *
+yasm_symrec_get_name(const yasm_symrec *sym)
+{
+ return sym->name;
+}
+
+char *
+yasm_symrec_get_global_name(const yasm_symrec *sym, const yasm_object *object)
+{
+ if (sym->visibility & (YASM_SYM_GLOBAL|YASM_SYM_COMMON|YASM_SYM_EXTERN)) {
+ char *name = yasm_xmalloc(strlen(object->global_prefix) +
+ strlen(sym->name) +
+ strlen(object->global_suffix) + 1);
+ strcpy(name, object->global_prefix);
+ strcat(name, sym->name);
+ strcat(name, object->global_suffix);
+ return name;
+ }
+ return yasm__xstrdup(sym->name);
+}
+
+yasm_sym_vis
+yasm_symrec_get_visibility(const yasm_symrec *sym)
+{
+ return sym->visibility;
+}
+
+yasm_sym_status
+yasm_symrec_get_status(const yasm_symrec *sym)
+{
+ return sym->status;
+}
+
+unsigned long
+yasm_symrec_get_def_line(const yasm_symrec *sym)
+{
+ return sym->def_line;
+}
+
+unsigned long
+yasm_symrec_get_decl_line(const yasm_symrec *sym)
+{
+ return sym->decl_line;
+}
+
+unsigned long
+yasm_symrec_get_use_line(const yasm_symrec *sym)
+{
+ return sym->use_line;
+}
+
+const yasm_expr *
+yasm_symrec_get_equ(const yasm_symrec *sym)
+{
+ if (sym->type == SYM_EQU && (sym->status & YASM_SYM_VALUED))
+ return sym->value.expn;
+ return (const yasm_expr *)NULL;
+}
+
+int
+yasm_symrec_get_label(const yasm_symrec *sym,
+ yasm_symrec_get_label_bytecodep *precbc)
+{
+ if (!(sym->type == SYM_LABEL || sym->type == SYM_CURPOS)
+ || !sym->value.precbc) {
+ *precbc = (yasm_symrec_get_label_bytecodep)0xDEADBEEF;
+ return 0;
+ }
+ *precbc = sym->value.precbc;
+ return 1;
+}
+
+void
+yasm_symrec_set_size(yasm_symrec *sym, int size)
+{
+ sym->size = size;
+}
+
+int
+yasm_symrec_get_size(const yasm_symrec *sym)
+{
+ return sym->size;
+}
+
+void
+yasm_symrec_set_segment(yasm_symrec *sym, const char *segment)
+{
+ sym->segment = segment;
+}
+
+const char *
+yasm_symrec_get_segment(const yasm_symrec *sym)
+{
+ return sym->segment;
+}
+
+int
+yasm_symrec_is_abs(const yasm_symrec *sym)
+{
+ return (sym->def_line == 0 && sym->type == SYM_EQU &&
+ sym->name[0] == '\0');
+}
+
+int
+yasm_symrec_is_special(const yasm_symrec *sym)
+{
+ return (sym->type == SYM_SPECIAL);
+}
+
+int
+yasm_symrec_is_curpos(const yasm_symrec *sym)
+{
+ return (sym->type == SYM_CURPOS);
+}
+
+void
+yasm_symrec_set_objext_valparams(yasm_symrec *sym,
+ /*@only@*/ yasm_valparamhead *objext_valparams)
+{
+ yasm_symrec_add_data(sym, &objext_valparams_cb, objext_valparams);
+}
+
+yasm_valparamhead *
+yasm_symrec_get_objext_valparams(yasm_symrec *sym)
+{
+ return yasm_symrec_get_data(sym, &objext_valparams_cb);
+}
+
+void
+yasm_symrec_set_common_size(yasm_symrec *sym,
+ /*@only@*/ yasm_expr *common_size)
+{
+ yasm_expr **ep = yasm_xmalloc(sizeof(yasm_expr *));
+ *ep = common_size;
+ yasm_symrec_add_data(sym, &common_size_cb, ep);
+}
+
+yasm_expr **
+yasm_symrec_get_common_size(yasm_symrec *sym)
+{
+ return (yasm_expr **)yasm_symrec_get_data(sym, &common_size_cb);
+}
+
+void *
+yasm_symrec_get_data(yasm_symrec *sym,
+ const yasm_assoc_data_callback *callback)
+{
+ return yasm__assoc_data_get(sym->assoc_data, callback);
+}
+
+void
+yasm_symrec_add_data(yasm_symrec *sym,
+ const yasm_assoc_data_callback *callback, void *data)
+{
+ sym->assoc_data = yasm__assoc_data_add(sym->assoc_data, callback, data);
+}
+
+void
+yasm_symrec_print(const yasm_symrec *sym, FILE *f, int indent_level)
+{
+ switch (sym->type) {
+ case SYM_UNKNOWN:
+ fprintf(f, "%*s-Unknown (Common/Extern)-\n", indent_level, "");
+ break;
+ case SYM_EQU:
+ fprintf(f, "%*s_EQU_\n", indent_level, "");
+ fprintf(f, "%*sExpn=", indent_level, "");
+ if (sym->status & YASM_SYM_VALUED)
+ yasm_expr_print(sym->value.expn, f);
+ else
+ fprintf(f, "***UNVALUED***");
+ fprintf(f, "\n");
+ break;
+ case SYM_LABEL:
+ case SYM_CURPOS:
+ fprintf(f, "%*s_%s_\n%*sSection:\n", indent_level, "",
+ sym->type == SYM_LABEL ? "Label" : "CurPos",
+ indent_level, "");
+ yasm_section_print(yasm_bc_get_section(sym->value.precbc), f,
+ indent_level+1, 0);
+ fprintf(f, "%*sPreceding bytecode:\n", indent_level, "");
+ yasm_bc_print(sym->value.precbc, f, indent_level+1);
+ break;
+ case SYM_SPECIAL:
+ fprintf(f, "%*s-Special-\n", indent_level, "");
+ break;
+ }
+
+ fprintf(f, "%*sStatus=", indent_level, "");
+ if (sym->status == YASM_SYM_NOSTATUS)
+ fprintf(f, "None\n");
+ else {
+ if (sym->status & YASM_SYM_USED)
+ fprintf(f, "Used,");
+ if (sym->status & YASM_SYM_DEFINED)
+ fprintf(f, "Defined,");
+ if (sym->status & YASM_SYM_VALUED)
+ fprintf(f, "Valued,");
+ if (sym->status & YASM_SYM_NOTINTABLE)
+ fprintf(f, "Not in Table,");
+ fprintf(f, "\n");
+ }
+
+ fprintf(f, "%*sVisibility=", indent_level, "");
+ if (sym->visibility == YASM_SYM_LOCAL)
+ fprintf(f, "Local\n");
+ else {
+ if (sym->visibility & YASM_SYM_GLOBAL)
+ fprintf(f, "Global,");
+ if (sym->visibility & YASM_SYM_COMMON)
+ fprintf(f, "Common,");
+ if (sym->visibility & YASM_SYM_EXTERN)
+ fprintf(f, "Extern,");
+ fprintf(f, "\n");
+ }
+
+ if (sym->assoc_data) {
+ fprintf(f, "%*sAssociated data:\n", indent_level, "");
+ yasm__assoc_data_print(sym->assoc_data, f, indent_level+1);
+ }
+
+ fprintf(f, "%*sLine Index (Defined)=%lu\n", indent_level, "",
+ sym->def_line);
+ fprintf(f, "%*sLine Index (Declared)=%lu\n", indent_level, "",
+ sym->decl_line);
+ fprintf(f, "%*sLine Index (Used)=%lu\n", indent_level, "", sym->use_line);
+}
diff --git a/contrib/tools/yasm/libyasm/symrec.h b/contrib/tools/yasm/libyasm/symrec.h
index 3ff464e688..b1f797c647 100644
--- a/contrib/tools/yasm/libyasm/symrec.h
+++ b/contrib/tools/yasm/libyasm/symrec.h
@@ -1,437 +1,437 @@
-/**
- * \file libyasm/symrec.h
- * \brief YASM symbol table interface.
- *
- * \license
- * Copyright (C) 2001-2007 Michael Urman, Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- * \endlicense
- */
-#ifndef YASM_SYMREC_H
-#define YASM_SYMREC_H
-
-#ifndef YASM_LIB_DECL
-#define YASM_LIB_DECL
-#endif
-
-/** Symbol status. YASM_SYM_DEFINED is set by yasm_symtab_define_label(),
- * yasm_symtab_define_equ(), or yasm_symtab_declare()/yasm_symrec_declare()
- * with a visibility of #YASM_SYM_EXTERN or #YASM_SYM_COMMON.
- */
-typedef enum yasm_sym_status {
- YASM_SYM_NOSTATUS = 0, /**< no status */
- YASM_SYM_USED = 1 << 0, /**< for use before definition */
- YASM_SYM_DEFINED = 1 << 1, /**< once it's been defined in the file */
- YASM_SYM_VALUED = 1 << 2, /**< once its value has been determined */
- YASM_SYM_NOTINTABLE = 1 << 3 /**< if it's not in sym_table (ex. '$') */
-} yasm_sym_status;
-
-/** Symbol record visibility.
- * \note YASM_SYM_EXTERN and YASM_SYM_COMMON are mutually exclusive.
- */
-typedef enum yasm_sym_vis {
- YASM_SYM_LOCAL = 0, /**< Default, local only */
- YASM_SYM_GLOBAL = 1 << 0, /**< If symbol is declared GLOBAL */
- YASM_SYM_COMMON = 1 << 1, /**< If symbol is declared COMMON */
- YASM_SYM_EXTERN = 1 << 2, /**< If symbol is declared EXTERN */
- YASM_SYM_DLOCAL = 1 << 3 /**< If symbol is explicitly declared LOCAL */
-} yasm_sym_vis;
-
-/** Create a new symbol table. */
-YASM_LIB_DECL
-yasm_symtab *yasm_symtab_create(void);
-
-/** Destroy a symbol table and all internal symbols.
- * \param symtab symbol table
- * \warning All yasm_symrec *'s into this symbol table become invalid after
- * this is called!
- */
-YASM_LIB_DECL
-void yasm_symtab_destroy(/*@only@*/ yasm_symtab *symtab);
-
-/** Set the symbol table to be case sensitive or not.
- * Should be called before adding any symbol.
- * \param symtab symbol table
- * \param sensitive whether the symbol table should be case sensitive.
- */
-YASM_LIB_DECL
-void yasm_symtab_set_case_sensitive(yasm_symtab *symtab, int sensitive);
-
-/** Get a reference to the symbol table's "absolute" symbol. This is
- * essentially an EQU with no name and value 0, and is used for relocating
- * absolute current-position-relative values.
- * \see yasm_value_set_curpos_rel().
- * \param symtab symbol table
- * \return Absolute symbol (dependent pointer, do not free).
- */
-YASM_LIB_DECL
-/*@dependent@*/ yasm_symrec *yasm_symtab_abs_sym(yasm_symtab *symtab);
-
-/** Get a reference to (use) a symbol. The symbol does not necessarily need to
- * be defined before it is used.
- * \param symtab symbol table
- * \param name symbol name
- * \param line virtual line where referenced
- * \return Symbol (dependent pointer, do not free).
- */
-YASM_LIB_DECL
-/*@dependent@*/ yasm_symrec *yasm_symtab_use
- (yasm_symtab *symtab, const char *name, unsigned long line);
-
-/** Get a reference to a symbol, without "using" it. Should be used for cases
- * when an internal assembler usage of a symbol shouldn't be treated like a
- * normal user symbol usage.
- * \param symtab symbol table
- * \param name symbol name
- * \return Symbol (dependent pointer, do not free). May be NULL if symbol
- * doesn't exist.
- */
-YASM_LIB_DECL
-/*@null@*/ /*@dependent@*/ yasm_symrec *yasm_symtab_get
- (yasm_symtab *symtab, const char *name);
-
-/** Define a symbol as an EQU value.
- * \param symtab symbol table
- * \param name symbol (EQU) name
- * \param e EQU value (expression)
- * \param line virtual line of EQU
- * \return Symbol (dependent pointer, do not free).
- */
-YASM_LIB_DECL
-/*@dependent@*/ yasm_symrec *yasm_symtab_define_equ
- (yasm_symtab *symtab, const char *name, /*@keep@*/ yasm_expr *e,
- unsigned long line);
-
-/** Define a symbol as a label.
- * \param symtab symbol table
- * \param name symbol (label) name
- * \param precbc bytecode preceding label
- * \param in_table nonzero if the label should be inserted into the symbol
- * table (some specially-generated ones should not be)
- * \param line virtual line of label
- * \return Symbol (dependent pointer, do not free).
- */
-YASM_LIB_DECL
-/*@dependent@*/ yasm_symrec *yasm_symtab_define_label
- (yasm_symtab *symtab, const char *name,
- /*@dependent@*/ yasm_bytecode *precbc, int in_table, unsigned long line);
-
-/** Define a symbol as a label representing the current assembly position.
- * This should be used for this purpose instead of yasm_symtab_define_label()
- * as value_finalize_scan() looks for usage of this symbol type for special
- * handling. The symbol created is not inserted into the symbol table.
- * \param symtab symbol table
- * \param name symbol (label) name
- * \param precbc bytecode preceding label
- * \param line virtual line of label
- * \return Symbol (dependent pointer, do not free).
- */
-YASM_LIB_DECL
-/*@dependent@*/ yasm_symrec *yasm_symtab_define_curpos
- (yasm_symtab *symtab, const char *name,
- /*@dependent@*/ yasm_bytecode *precbc, unsigned long line);
-
-/** Define a special symbol that will appear in the symbol table and have a
- * defined name, but have no other data associated with it within the
- * standard symrec.
- * \param symtab symbol table
- * \param name symbol name
- * \param vis symbol visibility
- * \return Symbol (dependent pointer, do not free).
- */
-YASM_LIB_DECL
-/*@dependent@*/ yasm_symrec *yasm_symtab_define_special
- (yasm_symtab *symtab, const char *name, yasm_sym_vis vis);
-
-/** Declare external visibility of a symbol.
- * \note Not all visibility combinations are allowed.
- * \param symtab symbol table
- * \param name symbol name
- * \param vis visibility
- * \param line virtual line of visibility-setting
- * \return Symbol (dependent pointer, do not free).
- */
-YASM_LIB_DECL
-/*@dependent@*/ yasm_symrec *yasm_symtab_declare
- (yasm_symtab *symtab, const char *name, yasm_sym_vis vis,
- unsigned long line);
-
-/** Declare external visibility of a symbol.
- * \note Not all visibility combinations are allowed.
- * \param symrec symbol
- * \param vis visibility
- * \param line virtual line of visibility-setting
- */
-YASM_LIB_DECL
-void yasm_symrec_declare(yasm_symrec *symrec, yasm_sym_vis vis,
- unsigned long line);
-
-/** Callback function for yasm_symrec_traverse().
- * \param sym symbol
- * \param d data passed into yasm_symrec_traverse()
- * \return Nonzero to stop symbol traversal.
- */
-typedef int (*yasm_symtab_traverse_callback)
- (yasm_symrec *sym, /*@null@*/ void *d);
-
-/** Traverse all symbols in the symbol table.
- * \param symtab symbol table
- * \param d data to pass to each call of callback function
- * \param func callback function called on each symbol
- * \return Nonzero value returned by callback function if it ever returned
- * nonzero.
- */
-YASM_LIB_DECL
-int /*@alt void@*/ yasm_symtab_traverse
- (yasm_symtab *symtab, /*@null@*/ void *d,
- yasm_symtab_traverse_callback func);
-
-/** Symbol table iterator (opaque type). */
-typedef struct yasm_symtab_iter yasm_symtab_iter;
-
-/** Get an iterator pointing to the first symbol in the symbol table.
- * \param symtab symbol table
- * \return Iterator for the symbol table.
- */
-YASM_LIB_DECL
-const yasm_symtab_iter *yasm_symtab_first(const yasm_symtab *symtab);
-
-/** Move a symbol table iterator to the next symbol in the symbol table.
- * \param prev Previous iterator value
- * \return Next iterator value, or NULL if no more symbols in the table.
- */
-YASM_LIB_DECL
-/*@null@*/ const yasm_symtab_iter *yasm_symtab_next
- (const yasm_symtab_iter *prev);
-
-/** Get the symbol corresponding to the current symbol table iterator value.
- * \param cur iterator value
- * \return Corresponding symbol.
- */
-YASM_LIB_DECL
-yasm_symrec *yasm_symtab_iter_value(const yasm_symtab_iter *cur);
-
-/** Finalize symbol table after parsing stage. Checks for symbols that are
- * used but never defined or declared #YASM_SYM_EXTERN or #YASM_SYM_COMMON.
- * \param symtab symbol table
- * \param undef_extern if nonzero, all undef syms should be declared extern
- * \param errwarns error/warning set
- * \note Errors/warnings are stored into errwarns.
- */
-YASM_LIB_DECL
-void yasm_symtab_parser_finalize(yasm_symtab *symtab, int undef_extern,
- yasm_errwarns *errwarns);
-
-/** Print the symbol table. For debugging purposes.
- * \param symtab symbol table
- * \param f file
- * \param indent_level indentation level
- */
-YASM_LIB_DECL
-void yasm_symtab_print(yasm_symtab *symtab, FILE *f, int indent_level);
-
-/** Get the name of a symbol.
- * \param sym symbol
- * \return Symbol name.
- */
-YASM_LIB_DECL
-/*@observer@*/ const char *yasm_symrec_get_name(const yasm_symrec *sym);
-
-/** Get the externally-visible (global) name of a symbol.
- * \param sym symbol
- * \param object object
- * \return Externally-visible symbol name (allocated, caller must free).
- */
-YASM_LIB_DECL
-/*@only@*/ char *yasm_symrec_get_global_name(const yasm_symrec *sym,
- const yasm_object *object);
-
-/** Get the visibility of a symbol.
- * \param sym symbol
- * \return Symbol visibility.
- */
-YASM_LIB_DECL
-yasm_sym_vis yasm_symrec_get_visibility(const yasm_symrec *sym);
-
-/** Get the status of a symbol.
- * \param sym symbol
- * \return Symbol status.
- */
-YASM_LIB_DECL
-yasm_sym_status yasm_symrec_get_status(const yasm_symrec *sym);
-
-/** Get the virtual line of where a symbol was first defined.
- * \param sym symbol
- * \return line virtual line
- */
-YASM_LIB_DECL
-unsigned long yasm_symrec_get_def_line(const yasm_symrec *sym);
-
-/** Get the virtual line of where a symbol was first declared.
- * \param sym symbol
- * \return line virtual line
- */
-YASM_LIB_DECL
-unsigned long yasm_symrec_get_decl_line(const yasm_symrec *sym);
-
-/** Get the virtual line of where a symbol was first used.
- * \param sym symbol
- * \return line virtual line
- */
-YASM_LIB_DECL
-unsigned long yasm_symrec_get_use_line(const yasm_symrec *sym);
-
-/** Get EQU value of a symbol.
- * \param sym symbol
- * \return EQU value, or NULL if symbol is not an EQU or is not defined.
- */
-YASM_LIB_DECL
-/*@observer@*/ /*@null@*/ const yasm_expr *yasm_symrec_get_equ
- (const yasm_symrec *sym);
-
-/** Dependent pointer to a bytecode. */
-typedef /*@dependent@*/ yasm_bytecode *yasm_symrec_get_label_bytecodep;
-
-/** Get the label location of a symbol.
- * \param sym symbol
- * \param precbc bytecode preceding label (output)
- * \return 0 if not symbol is not a label or if the symbol's visibility is
- * #YASM_SYM_EXTERN or #YASM_SYM_COMMON (not defined in the file).
- */
-YASM_LIB_DECL
-int yasm_symrec_get_label(const yasm_symrec *sym,
- /*@out@*/ yasm_symrec_get_label_bytecodep *precbc);
-
-/** Set the size of a symbol.
- * \param sym symbol
- * \param size size to be set
- */
-YASM_LIB_DECL
-void yasm_symrec_set_size(yasm_symrec *sym, int size);
-
-/** Get the size of a symbol.
- * \param sym symbol
- * \return size of the symbol, 0 if none specified by the user.
- */
-YASM_LIB_DECL
-int yasm_symrec_get_size(const yasm_symrec *sym);
-
-/** Set the segment of a symbol.
- * \param sym symbol
- * \param segment segment to be set
- */
-YASM_LIB_DECL
-void yasm_symrec_set_segment(yasm_symrec *sym, const char *segment);
-
-/** Get the segment of a symbol.
- * \param sym symbol
- * \return segment of the symbol, NULL if none specified by the user.
- */
-YASM_LIB_DECL
-const char *yasm_symrec_get_segment(const yasm_symrec *sym);
-
-/** Determine if symbol is the "absolute" symbol created by
- * yasm_symtab_abs_sym().
- * \param sym symbol
- * \return 0 if symbol is not the "absolute" symbol, nonzero otherwise.
- */
-YASM_LIB_DECL
-int yasm_symrec_is_abs(const yasm_symrec *sym);
-
-/** Determine if symbol is a special symbol.
- * \param sym symbol
- * \return 0 if symbol is not a special symbol, nonzero otherwise.
- */
-YASM_LIB_DECL
-int yasm_symrec_is_special(const yasm_symrec *sym);
-
-/** Determine if symbol is a label representing the current assembly position.
- * \param sym symbol
- * \return 0 if symbol is not a current position label, nonzero otherwise.
- */
-YASM_LIB_DECL
-int yasm_symrec_is_curpos(const yasm_symrec *sym);
-
-/** Set object-extended valparams.
- * \param sym symbol
- * \param objext_valparams object-extended valparams
- */
-YASM_LIB_DECL
-void yasm_symrec_set_objext_valparams
- (yasm_symrec *sym, /*@only@*/ yasm_valparamhead *objext_valparams);
-
-/** Get object-extended valparams, if any, associated with symbol's
- * declaration.
- * \param sym symbol
- * \return Object-extended valparams (NULL if none).
- */
-YASM_LIB_DECL
-/*@null@*/ /*@dependent@*/ yasm_valparamhead *yasm_symrec_get_objext_valparams
- (yasm_symrec *sym);
-
-/** Set common size of symbol.
- * \param sym symbol
- * \param common_size common size expression
- */
-YASM_LIB_DECL
-void yasm_symrec_set_common_size
- (yasm_symrec *sym, /*@only@*/ yasm_expr *common_size);
-
-/** Get common size of symbol, if symbol is declared COMMON and a size was set
- * for it.
- * \param sym symbol
- * \return Common size (NULL if none).
- */
-YASM_LIB_DECL
-/*@dependent@*/ /*@null@*/ yasm_expr **yasm_symrec_get_common_size
- (yasm_symrec *sym);
-
-/** Get associated data for a symbol and data callback.
- * \param sym symbol
- * \param callback callback used when adding data
- * \return Associated data (NULL if none).
- */
-YASM_LIB_DECL
-/*@dependent@*/ /*@null@*/ void *yasm_symrec_get_data
- (yasm_symrec *sym, const yasm_assoc_data_callback *callback);
-
-/** Add associated data to a symbol.
- * \attention Deletes any existing associated data for that data callback.
- * \param sym symbol
- * \param callback callback
- * \param data data to associate
- */
-YASM_LIB_DECL
-void yasm_symrec_add_data(yasm_symrec *sym,
- const yasm_assoc_data_callback *callback,
- /*@only@*/ /*@null@*/ void *data);
-
-/** Print a symbol. For debugging purposes.
- * \param f file
- * \param indent_level indentation level
- * \param sym symbol
- */
-YASM_LIB_DECL
-void yasm_symrec_print(const yasm_symrec *sym, FILE *f, int indent_level);
-
-#endif
+/**
+ * \file libyasm/symrec.h
+ * \brief YASM symbol table interface.
+ *
+ * \license
+ * Copyright (C) 2001-2007 Michael Urman, Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * - Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ * \endlicense
+ */
+#ifndef YASM_SYMREC_H
+#define YASM_SYMREC_H
+
+#ifndef YASM_LIB_DECL
+#define YASM_LIB_DECL
+#endif
+
+/** Symbol status. YASM_SYM_DEFINED is set by yasm_symtab_define_label(),
+ * yasm_symtab_define_equ(), or yasm_symtab_declare()/yasm_symrec_declare()
+ * with a visibility of #YASM_SYM_EXTERN or #YASM_SYM_COMMON.
+ */
+typedef enum yasm_sym_status {
+ YASM_SYM_NOSTATUS = 0, /**< no status */
+ YASM_SYM_USED = 1 << 0, /**< for use before definition */
+ YASM_SYM_DEFINED = 1 << 1, /**< once it's been defined in the file */
+ YASM_SYM_VALUED = 1 << 2, /**< once its value has been determined */
+ YASM_SYM_NOTINTABLE = 1 << 3 /**< if it's not in sym_table (ex. '$') */
+} yasm_sym_status;
+
+/** Symbol record visibility.
+ * \note YASM_SYM_EXTERN and YASM_SYM_COMMON are mutually exclusive.
+ */
+typedef enum yasm_sym_vis {
+ YASM_SYM_LOCAL = 0, /**< Default, local only */
+ YASM_SYM_GLOBAL = 1 << 0, /**< If symbol is declared GLOBAL */
+ YASM_SYM_COMMON = 1 << 1, /**< If symbol is declared COMMON */
+ YASM_SYM_EXTERN = 1 << 2, /**< If symbol is declared EXTERN */
+ YASM_SYM_DLOCAL = 1 << 3 /**< If symbol is explicitly declared LOCAL */
+} yasm_sym_vis;
+
+/** Create a new symbol table. */
+YASM_LIB_DECL
+yasm_symtab *yasm_symtab_create(void);
+
+/** Destroy a symbol table and all internal symbols.
+ * \param symtab symbol table
+ * \warning All yasm_symrec *'s into this symbol table become invalid after
+ * this is called!
+ */
+YASM_LIB_DECL
+void yasm_symtab_destroy(/*@only@*/ yasm_symtab *symtab);
+
+/** Set the symbol table to be case sensitive or not.
+ * Should be called before adding any symbol.
+ * \param symtab symbol table
+ * \param sensitive whether the symbol table should be case sensitive.
+ */
+YASM_LIB_DECL
+void yasm_symtab_set_case_sensitive(yasm_symtab *symtab, int sensitive);
+
+/** Get a reference to the symbol table's "absolute" symbol. This is
+ * essentially an EQU with no name and value 0, and is used for relocating
+ * absolute current-position-relative values.
+ * \see yasm_value_set_curpos_rel().
+ * \param symtab symbol table
+ * \return Absolute symbol (dependent pointer, do not free).
+ */
+YASM_LIB_DECL
+/*@dependent@*/ yasm_symrec *yasm_symtab_abs_sym(yasm_symtab *symtab);
+
+/** Get a reference to (use) a symbol. The symbol does not necessarily need to
+ * be defined before it is used.
+ * \param symtab symbol table
+ * \param name symbol name
+ * \param line virtual line where referenced
+ * \return Symbol (dependent pointer, do not free).
+ */
+YASM_LIB_DECL
+/*@dependent@*/ yasm_symrec *yasm_symtab_use
+ (yasm_symtab *symtab, const char *name, unsigned long line);
+
+/** Get a reference to a symbol, without "using" it. Should be used for cases
+ * when an internal assembler usage of a symbol shouldn't be treated like a
+ * normal user symbol usage.
+ * \param symtab symbol table
+ * \param name symbol name
+ * \return Symbol (dependent pointer, do not free). May be NULL if symbol
+ * doesn't exist.
+ */
+YASM_LIB_DECL
+/*@null@*/ /*@dependent@*/ yasm_symrec *yasm_symtab_get
+ (yasm_symtab *symtab, const char *name);
+
+/** Define a symbol as an EQU value.
+ * \param symtab symbol table
+ * \param name symbol (EQU) name
+ * \param e EQU value (expression)
+ * \param line virtual line of EQU
+ * \return Symbol (dependent pointer, do not free).
+ */
+YASM_LIB_DECL
+/*@dependent@*/ yasm_symrec *yasm_symtab_define_equ
+ (yasm_symtab *symtab, const char *name, /*@keep@*/ yasm_expr *e,
+ unsigned long line);
+
+/** Define a symbol as a label.
+ * \param symtab symbol table
+ * \param name symbol (label) name
+ * \param precbc bytecode preceding label
+ * \param in_table nonzero if the label should be inserted into the symbol
+ * table (some specially-generated ones should not be)
+ * \param line virtual line of label
+ * \return Symbol (dependent pointer, do not free).
+ */
+YASM_LIB_DECL
+/*@dependent@*/ yasm_symrec *yasm_symtab_define_label
+ (yasm_symtab *symtab, const char *name,
+ /*@dependent@*/ yasm_bytecode *precbc, int in_table, unsigned long line);
+
+/** Define a symbol as a label representing the current assembly position.
+ * This should be used for this purpose instead of yasm_symtab_define_label()
+ * as value_finalize_scan() looks for usage of this symbol type for special
+ * handling. The symbol created is not inserted into the symbol table.
+ * \param symtab symbol table
+ * \param name symbol (label) name
+ * \param precbc bytecode preceding label
+ * \param line virtual line of label
+ * \return Symbol (dependent pointer, do not free).
+ */
+YASM_LIB_DECL
+/*@dependent@*/ yasm_symrec *yasm_symtab_define_curpos
+ (yasm_symtab *symtab, const char *name,
+ /*@dependent@*/ yasm_bytecode *precbc, unsigned long line);
+
+/** Define a special symbol that will appear in the symbol table and have a
+ * defined name, but have no other data associated with it within the
+ * standard symrec.
+ * \param symtab symbol table
+ * \param name symbol name
+ * \param vis symbol visibility
+ * \return Symbol (dependent pointer, do not free).
+ */
+YASM_LIB_DECL
+/*@dependent@*/ yasm_symrec *yasm_symtab_define_special
+ (yasm_symtab *symtab, const char *name, yasm_sym_vis vis);
+
+/** Declare external visibility of a symbol.
+ * \note Not all visibility combinations are allowed.
+ * \param symtab symbol table
+ * \param name symbol name
+ * \param vis visibility
+ * \param line virtual line of visibility-setting
+ * \return Symbol (dependent pointer, do not free).
+ */
+YASM_LIB_DECL
+/*@dependent@*/ yasm_symrec *yasm_symtab_declare
+ (yasm_symtab *symtab, const char *name, yasm_sym_vis vis,
+ unsigned long line);
+
+/** Declare external visibility of a symbol.
+ * \note Not all visibility combinations are allowed.
+ * \param symrec symbol
+ * \param vis visibility
+ * \param line virtual line of visibility-setting
+ */
+YASM_LIB_DECL
+void yasm_symrec_declare(yasm_symrec *symrec, yasm_sym_vis vis,
+ unsigned long line);
+
+/** Callback function for yasm_symrec_traverse().
+ * \param sym symbol
+ * \param d data passed into yasm_symrec_traverse()
+ * \return Nonzero to stop symbol traversal.
+ */
+typedef int (*yasm_symtab_traverse_callback)
+ (yasm_symrec *sym, /*@null@*/ void *d);
+
+/** Traverse all symbols in the symbol table.
+ * \param symtab symbol table
+ * \param d data to pass to each call of callback function
+ * \param func callback function called on each symbol
+ * \return Nonzero value returned by callback function if it ever returned
+ * nonzero.
+ */
+YASM_LIB_DECL
+int /*@alt void@*/ yasm_symtab_traverse
+ (yasm_symtab *symtab, /*@null@*/ void *d,
+ yasm_symtab_traverse_callback func);
+
+/** Symbol table iterator (opaque type). */
+typedef struct yasm_symtab_iter yasm_symtab_iter;
+
+/** Get an iterator pointing to the first symbol in the symbol table.
+ * \param symtab symbol table
+ * \return Iterator for the symbol table.
+ */
+YASM_LIB_DECL
+const yasm_symtab_iter *yasm_symtab_first(const yasm_symtab *symtab);
+
+/** Move a symbol table iterator to the next symbol in the symbol table.
+ * \param prev Previous iterator value
+ * \return Next iterator value, or NULL if no more symbols in the table.
+ */
+YASM_LIB_DECL
+/*@null@*/ const yasm_symtab_iter *yasm_symtab_next
+ (const yasm_symtab_iter *prev);
+
+/** Get the symbol corresponding to the current symbol table iterator value.
+ * \param cur iterator value
+ * \return Corresponding symbol.
+ */
+YASM_LIB_DECL
+yasm_symrec *yasm_symtab_iter_value(const yasm_symtab_iter *cur);
+
+/** Finalize symbol table after parsing stage. Checks for symbols that are
+ * used but never defined or declared #YASM_SYM_EXTERN or #YASM_SYM_COMMON.
+ * \param symtab symbol table
+ * \param undef_extern if nonzero, all undef syms should be declared extern
+ * \param errwarns error/warning set
+ * \note Errors/warnings are stored into errwarns.
+ */
+YASM_LIB_DECL
+void yasm_symtab_parser_finalize(yasm_symtab *symtab, int undef_extern,
+ yasm_errwarns *errwarns);
+
+/** Print the symbol table. For debugging purposes.
+ * \param symtab symbol table
+ * \param f file
+ * \param indent_level indentation level
+ */
+YASM_LIB_DECL
+void yasm_symtab_print(yasm_symtab *symtab, FILE *f, int indent_level);
+
+/** Get the name of a symbol.
+ * \param sym symbol
+ * \return Symbol name.
+ */
+YASM_LIB_DECL
+/*@observer@*/ const char *yasm_symrec_get_name(const yasm_symrec *sym);
+
+/** Get the externally-visible (global) name of a symbol.
+ * \param sym symbol
+ * \param object object
+ * \return Externally-visible symbol name (allocated, caller must free).
+ */
+YASM_LIB_DECL
+/*@only@*/ char *yasm_symrec_get_global_name(const yasm_symrec *sym,
+ const yasm_object *object);
+
+/** Get the visibility of a symbol.
+ * \param sym symbol
+ * \return Symbol visibility.
+ */
+YASM_LIB_DECL
+yasm_sym_vis yasm_symrec_get_visibility(const yasm_symrec *sym);
+
+/** Get the status of a symbol.
+ * \param sym symbol
+ * \return Symbol status.
+ */
+YASM_LIB_DECL
+yasm_sym_status yasm_symrec_get_status(const yasm_symrec *sym);
+
+/** Get the virtual line of where a symbol was first defined.
+ * \param sym symbol
+ * \return line virtual line
+ */
+YASM_LIB_DECL
+unsigned long yasm_symrec_get_def_line(const yasm_symrec *sym);
+
+/** Get the virtual line of where a symbol was first declared.
+ * \param sym symbol
+ * \return line virtual line
+ */
+YASM_LIB_DECL
+unsigned long yasm_symrec_get_decl_line(const yasm_symrec *sym);
+
+/** Get the virtual line of where a symbol was first used.
+ * \param sym symbol
+ * \return line virtual line
+ */
+YASM_LIB_DECL
+unsigned long yasm_symrec_get_use_line(const yasm_symrec *sym);
+
+/** Get EQU value of a symbol.
+ * \param sym symbol
+ * \return EQU value, or NULL if symbol is not an EQU or is not defined.
+ */
+YASM_LIB_DECL
+/*@observer@*/ /*@null@*/ const yasm_expr *yasm_symrec_get_equ
+ (const yasm_symrec *sym);
+
+/** Dependent pointer to a bytecode. */
+typedef /*@dependent@*/ yasm_bytecode *yasm_symrec_get_label_bytecodep;
+
+/** Get the label location of a symbol.
+ * \param sym symbol
+ * \param precbc bytecode preceding label (output)
+ * \return 0 if not symbol is not a label or if the symbol's visibility is
+ * #YASM_SYM_EXTERN or #YASM_SYM_COMMON (not defined in the file).
+ */
+YASM_LIB_DECL
+int yasm_symrec_get_label(const yasm_symrec *sym,
+ /*@out@*/ yasm_symrec_get_label_bytecodep *precbc);
+
+/** Set the size of a symbol.
+ * \param sym symbol
+ * \param size size to be set
+ */
+YASM_LIB_DECL
+void yasm_symrec_set_size(yasm_symrec *sym, int size);
+
+/** Get the size of a symbol.
+ * \param sym symbol
+ * \return size of the symbol, 0 if none specified by the user.
+ */
+YASM_LIB_DECL
+int yasm_symrec_get_size(const yasm_symrec *sym);
+
+/** Set the segment of a symbol.
+ * \param sym symbol
+ * \param segment segment to be set
+ */
+YASM_LIB_DECL
+void yasm_symrec_set_segment(yasm_symrec *sym, const char *segment);
+
+/** Get the segment of a symbol.
+ * \param sym symbol
+ * \return segment of the symbol, NULL if none specified by the user.
+ */
+YASM_LIB_DECL
+const char *yasm_symrec_get_segment(const yasm_symrec *sym);
+
+/** Determine if symbol is the "absolute" symbol created by
+ * yasm_symtab_abs_sym().
+ * \param sym symbol
+ * \return 0 if symbol is not the "absolute" symbol, nonzero otherwise.
+ */
+YASM_LIB_DECL
+int yasm_symrec_is_abs(const yasm_symrec *sym);
+
+/** Determine if symbol is a special symbol.
+ * \param sym symbol
+ * \return 0 if symbol is not a special symbol, nonzero otherwise.
+ */
+YASM_LIB_DECL
+int yasm_symrec_is_special(const yasm_symrec *sym);
+
+/** Determine if symbol is a label representing the current assembly position.
+ * \param sym symbol
+ * \return 0 if symbol is not a current position label, nonzero otherwise.
+ */
+YASM_LIB_DECL
+int yasm_symrec_is_curpos(const yasm_symrec *sym);
+
+/** Set object-extended valparams.
+ * \param sym symbol
+ * \param objext_valparams object-extended valparams
+ */
+YASM_LIB_DECL
+void yasm_symrec_set_objext_valparams
+ (yasm_symrec *sym, /*@only@*/ yasm_valparamhead *objext_valparams);
+
+/** Get object-extended valparams, if any, associated with symbol's
+ * declaration.
+ * \param sym symbol
+ * \return Object-extended valparams (NULL if none).
+ */
+YASM_LIB_DECL
+/*@null@*/ /*@dependent@*/ yasm_valparamhead *yasm_symrec_get_objext_valparams
+ (yasm_symrec *sym);
+
+/** Set common size of symbol.
+ * \param sym symbol
+ * \param common_size common size expression
+ */
+YASM_LIB_DECL
+void yasm_symrec_set_common_size
+ (yasm_symrec *sym, /*@only@*/ yasm_expr *common_size);
+
+/** Get common size of symbol, if symbol is declared COMMON and a size was set
+ * for it.
+ * \param sym symbol
+ * \return Common size (NULL if none).
+ */
+YASM_LIB_DECL
+/*@dependent@*/ /*@null@*/ yasm_expr **yasm_symrec_get_common_size
+ (yasm_symrec *sym);
+
+/** Get associated data for a symbol and data callback.
+ * \param sym symbol
+ * \param callback callback used when adding data
+ * \return Associated data (NULL if none).
+ */
+YASM_LIB_DECL
+/*@dependent@*/ /*@null@*/ void *yasm_symrec_get_data
+ (yasm_symrec *sym, const yasm_assoc_data_callback *callback);
+
+/** Add associated data to a symbol.
+ * \attention Deletes any existing associated data for that data callback.
+ * \param sym symbol
+ * \param callback callback
+ * \param data data to associate
+ */
+YASM_LIB_DECL
+void yasm_symrec_add_data(yasm_symrec *sym,
+ const yasm_assoc_data_callback *callback,
+ /*@only@*/ /*@null@*/ void *data);
+
+/** Print a symbol. For debugging purposes.
+ * \param f file
+ * \param indent_level indentation level
+ * \param sym symbol
+ */
+YASM_LIB_DECL
+void yasm_symrec_print(const yasm_symrec *sym, FILE *f, int indent_level);
+
+#endif
diff --git a/contrib/tools/yasm/libyasm/valparam.c b/contrib/tools/yasm/libyasm/valparam.c
index a1e2acdd1a..88e41a7c5d 100644
--- a/contrib/tools/yasm/libyasm/valparam.c
+++ b/contrib/tools/yasm/libyasm/valparam.c
@@ -1,385 +1,385 @@
-/*
- * Value/Parameter type functions
- *
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include "util.h"
-
-#include "libyasm-stdint.h"
-#include "coretype.h"
-#include "valparam.h"
-
-#include "errwarn.h"
-#include "intnum.h"
-#include "expr.h"
-#include "symrec.h"
-
-#include "section.h"
-
-void
-yasm_call_directive(const yasm_directive *directive, yasm_object *object,
- yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_valparam *vp;
-
- if ((directive->flags & (YASM_DIR_ARG_REQUIRED|YASM_DIR_ID_REQUIRED)) &&
- (!valparams || !yasm_vps_first(valparams))) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("directive `%s' requires an argument"),
- directive->name);
- return;
- }
- if (valparams) {
- vp = yasm_vps_first(valparams);
- if ((directive->flags & YASM_DIR_ID_REQUIRED) &&
- vp->type != YASM_PARAM_ID) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("directive `%s' requires an identifier parameter"),
- directive->name);
- return;
- }
- }
- directive->handler(object, valparams, objext_valparams, line);
-}
-
-yasm_valparam *
-yasm_vp_create_id(/*@keep@*/ char *v, /*@keep@*/ char *p, int id_prefix)
-{
- yasm_valparam *r = yasm_xmalloc(sizeof(yasm_valparam));
- r->val = v;
- r->type = YASM_PARAM_ID;
- r->param.id = p;
- r->id_prefix = (char)id_prefix;
- return r;
-}
-
-yasm_valparam *
-yasm_vp_create_string(/*@keep@*/ char *v, /*@keep@*/ char *p)
-{
- yasm_valparam *r = yasm_xmalloc(sizeof(yasm_valparam));
- r->val = v;
- r->type = YASM_PARAM_STRING;
- r->param.str = p;
- r->id_prefix = '\0';
- return r;
-}
-
-yasm_valparam *
-yasm_vp_create_expr(/*@keep@*/ char *v, /*@keep@*/ yasm_expr *p)
-{
- yasm_valparam *r = yasm_xmalloc(sizeof(yasm_valparam));
- r->val = v;
- r->type = YASM_PARAM_EXPR;
- r->param.e = p;
- r->id_prefix = '\0';
- return r;
-}
-
-/*@null@*/ /*@only@*/ yasm_expr *
-yasm_vp_expr(const yasm_valparam *vp, yasm_symtab *symtab, unsigned long line)
-{
- if (!vp)
- return NULL;
- switch (vp->type) {
- case YASM_PARAM_ID:
- return yasm_expr_create_ident(yasm_expr_sym(
- yasm_symtab_use(symtab, yasm_vp_id(vp), line)), line);
- case YASM_PARAM_EXPR:
- return yasm_expr_copy(vp->param.e);
- default:
- return NULL;
- }
-}
-
-/*@null@*/ /*@dependent@*/ const char *
-yasm_vp_string(const yasm_valparam *vp)
-{
- if (!vp)
- return NULL;
- switch (vp->type) {
- case YASM_PARAM_ID:
- return vp->param.id;
- case YASM_PARAM_STRING:
- return vp->param.str;
- default:
- return NULL;
- }
-}
-
-/*@null@*/ /*@dependent@*/ const char *
-yasm_vp_id(const yasm_valparam *vp)
-{
- if (!vp)
- return NULL;
- if (vp->type == YASM_PARAM_ID) {
- if (vp->param.id[0] == vp->id_prefix)
- return &vp->param.id[1];
- else
- return vp->param.id;
- }
- return NULL;
-}
-
-void
-yasm_vps_delete(yasm_valparamhead *headp)
-{
- yasm_valparam *cur, *next;
-
- cur = STAILQ_FIRST(headp);
- while (cur) {
- next = STAILQ_NEXT(cur, link);
- if (cur->val)
- yasm_xfree(cur->val);
- switch (cur->type) {
- case YASM_PARAM_ID:
- yasm_xfree(cur->param.id);
- break;
- case YASM_PARAM_STRING:
- yasm_xfree(cur->param.str);
- break;
- case YASM_PARAM_EXPR:
- yasm_expr_destroy(cur->param.e);
- break;
- }
- yasm_xfree(cur);
- cur = next;
- }
- STAILQ_INIT(headp);
-}
-
-void
-yasm_vps_print(const yasm_valparamhead *headp, FILE *f)
-{
- const yasm_valparam *vp;
-
- if(!headp) {
- fprintf(f, "(none)");
- return;
- }
-
- yasm_vps_foreach(vp, headp) {
- if (vp->val)
- fprintf(f, "(\"%s\",", vp->val);
- else
- fprintf(f, "((nil),");
- switch (vp->type) {
- case YASM_PARAM_ID:
- fprintf(f, "%s", vp->param.id);
- break;
- case YASM_PARAM_STRING:
- fprintf(f, "\"%s\"", vp->param.str);
- break;
- case YASM_PARAM_EXPR:
- yasm_expr_print(vp->param.e, f);
- break;
- }
- fprintf(f, ")");
- if (yasm_vps_next(vp))
- fprintf(f, ",");
- }
-}
-
-yasm_valparamhead *
-yasm_vps_create(void)
-{
- yasm_valparamhead *headp = yasm_xmalloc(sizeof(yasm_valparamhead));
- yasm_vps_initialize(headp);
- return headp;
-}
-
-void
-yasm_vps_destroy(yasm_valparamhead *headp)
-{
- yasm_vps_delete(headp);
- yasm_xfree(headp);
-}
-
-int
-yasm_dir_helper(void *obj, yasm_valparam *vp_first, unsigned long line,
- const yasm_dir_help *help, size_t nhelp, void *data,
- int (*helper_valparam) (void *obj, yasm_valparam *vp,
- unsigned long line, void *data))
-{
- yasm_valparam *vp = vp_first;
- int anymatched = 0;
- int matched;
-
- if (!vp)
- return 0;
-
- do {
- const char *s;
- size_t i;
-
- matched = 0;
- if (!vp->val && (s = yasm_vp_id(vp))) {
- for (i=0; i<nhelp; i++) {
- if (help[i].needsparam == 0 &&
- yasm__strcasecmp(s, help[i].name) == 0) {
- if (help[i].helper(obj, vp, line,
- ((char *)data)+help[i].off,
- help[i].arg) != 0)
- return -1;
- matched = 1;
- anymatched = 1;
- break;
- }
- }
- } else if (vp->val) {
- for (i=0; i<nhelp; i++) {
- if (help[i].needsparam == 1 &&
- yasm__strcasecmp(vp->val, help[i].name) == 0) {
- if (help[i].helper(obj, vp, line,
- ((char *)data)+help[i].off,
- help[i].arg) != 0)
- return -1;
- matched = 1;
- anymatched = 1;
- break;
- }
- }
- }
-
- if (!matched) {
- int final = helper_valparam(obj, vp, line, data);
- if (final < 0)
- return -1;
- if (final > 0)
- anymatched = 1;
- }
- } while((vp = yasm_vps_next(vp)));
-
- return anymatched;
-}
-
-int
-yasm_dir_helper_flag_or(void *obj, yasm_valparam *vp, unsigned long line,
- void *d, uintptr_t flag)
-{
- unsigned long *flags = (unsigned long *)d;
- *flags |= flag;
- return 0;
-}
-
-int
-yasm_dir_helper_flag_and(void *obj, yasm_valparam *vp, unsigned long line,
- void *d, uintptr_t flag)
-{
- unsigned long *flags = (unsigned long *)d;
- *flags &= ~flag;
- return 0;
-}
-
-int
-yasm_dir_helper_flag_set(void *obj, yasm_valparam *vp, unsigned long line,
- void *d, uintptr_t flag)
-{
- unsigned long *flags = (unsigned long *)d;
- *flags = flag;
- return 0;
-}
-
-int
-yasm_dir_helper_expr(void *obj, yasm_valparam *vp, unsigned long line,
- void *data, uintptr_t arg)
-{
- yasm_object *object = (yasm_object *)obj;
- yasm_expr **expr = (yasm_expr **)data;
-
- if (*expr)
- yasm_expr_destroy(*expr);
- if (!(*expr = yasm_vp_expr(vp, object->symtab, line))) {
- yasm_error_set(YASM_ERROR_VALUE, N_("argument to `%s' is not an expression"),
- vp->val);
- return -1;
- }
- return 0;
-}
-
-int
-yasm_dir_helper_intn(void *obj, yasm_valparam *vp, unsigned long line,
- void *data, uintptr_t arg)
-{
- yasm_object *object = (yasm_object *)obj;
- /*@only@*/ /*@null@*/ yasm_expr *e;
- /*@dependent@*/ /*@null@*/ yasm_intnum *local;
- yasm_intnum **intn = (yasm_intnum **)data;
-
- if (*intn)
- yasm_intnum_destroy(*intn);
- if (!(e = yasm_vp_expr(vp, object->symtab, line)) ||
- !(local = yasm_expr_get_intnum(&e, 0))) {
- yasm_error_set(YASM_ERROR_NOT_CONSTANT,
- N_("argument to `%s' is not an integer"),
- vp->val);
- if (e)
- yasm_expr_destroy(e);
- return -1;
- }
- *intn = yasm_intnum_copy(local);
- yasm_expr_destroy(e);
- return 0;
-}
-
-int
-yasm_dir_helper_string(void *obj, yasm_valparam *vp, unsigned long line,
- void *data, uintptr_t arg)
-{
- /*@dependent@*/ /*@null@*/ const char *local;
- char **s = (char **)data;
-
- if (*s)
- yasm_xfree(*s);
- if (!(local = yasm_vp_string(vp))) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("argument to `%s' is not a string or identifier"),
- vp->val);
- return -1;
- }
- *s = yasm__xstrdup(local);
- return 0;
-}
-
-int
-yasm_dir_helper_valparam_warn(void *obj, yasm_valparam *vp,
- unsigned long line, void *data)
-{
- const char *s;
-
- if (vp->val) {
- yasm_warn_set(YASM_WARN_GENERAL, N_("Unrecognized qualifier `%s'"),
- vp->val);
- return 0;
- }
-
- if ((s = yasm_vp_id(vp)))
- yasm_warn_set(YASM_WARN_GENERAL, N_("Unrecognized qualifier `%s'"), s);
- else if (vp->type == YASM_PARAM_STRING)
- yasm_warn_set(YASM_WARN_GENERAL, N_("Unrecognized string qualifier"));
- else
- yasm_warn_set(YASM_WARN_GENERAL, N_("Unrecognized numeric qualifier"));
-
- return 0;
-}
+/*
+ * Value/Parameter type functions
+ *
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "util.h"
+
+#include "libyasm-stdint.h"
+#include "coretype.h"
+#include "valparam.h"
+
+#include "errwarn.h"
+#include "intnum.h"
+#include "expr.h"
+#include "symrec.h"
+
+#include "section.h"
+
+void
+yasm_call_directive(const yasm_directive *directive, yasm_object *object,
+ yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_valparam *vp;
+
+ if ((directive->flags & (YASM_DIR_ARG_REQUIRED|YASM_DIR_ID_REQUIRED)) &&
+ (!valparams || !yasm_vps_first(valparams))) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("directive `%s' requires an argument"),
+ directive->name);
+ return;
+ }
+ if (valparams) {
+ vp = yasm_vps_first(valparams);
+ if ((directive->flags & YASM_DIR_ID_REQUIRED) &&
+ vp->type != YASM_PARAM_ID) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("directive `%s' requires an identifier parameter"),
+ directive->name);
+ return;
+ }
+ }
+ directive->handler(object, valparams, objext_valparams, line);
+}
+
+yasm_valparam *
+yasm_vp_create_id(/*@keep@*/ char *v, /*@keep@*/ char *p, int id_prefix)
+{
+ yasm_valparam *r = yasm_xmalloc(sizeof(yasm_valparam));
+ r->val = v;
+ r->type = YASM_PARAM_ID;
+ r->param.id = p;
+ r->id_prefix = (char)id_prefix;
+ return r;
+}
+
+yasm_valparam *
+yasm_vp_create_string(/*@keep@*/ char *v, /*@keep@*/ char *p)
+{
+ yasm_valparam *r = yasm_xmalloc(sizeof(yasm_valparam));
+ r->val = v;
+ r->type = YASM_PARAM_STRING;
+ r->param.str = p;
+ r->id_prefix = '\0';
+ return r;
+}
+
+yasm_valparam *
+yasm_vp_create_expr(/*@keep@*/ char *v, /*@keep@*/ yasm_expr *p)
+{
+ yasm_valparam *r = yasm_xmalloc(sizeof(yasm_valparam));
+ r->val = v;
+ r->type = YASM_PARAM_EXPR;
+ r->param.e = p;
+ r->id_prefix = '\0';
+ return r;
+}
+
+/*@null@*/ /*@only@*/ yasm_expr *
+yasm_vp_expr(const yasm_valparam *vp, yasm_symtab *symtab, unsigned long line)
+{
+ if (!vp)
+ return NULL;
+ switch (vp->type) {
+ case YASM_PARAM_ID:
+ return yasm_expr_create_ident(yasm_expr_sym(
+ yasm_symtab_use(symtab, yasm_vp_id(vp), line)), line);
+ case YASM_PARAM_EXPR:
+ return yasm_expr_copy(vp->param.e);
+ default:
+ return NULL;
+ }
+}
+
+/*@null@*/ /*@dependent@*/ const char *
+yasm_vp_string(const yasm_valparam *vp)
+{
+ if (!vp)
+ return NULL;
+ switch (vp->type) {
+ case YASM_PARAM_ID:
+ return vp->param.id;
+ case YASM_PARAM_STRING:
+ return vp->param.str;
+ default:
+ return NULL;
+ }
+}
+
+/*@null@*/ /*@dependent@*/ const char *
+yasm_vp_id(const yasm_valparam *vp)
+{
+ if (!vp)
+ return NULL;
+ if (vp->type == YASM_PARAM_ID) {
+ if (vp->param.id[0] == vp->id_prefix)
+ return &vp->param.id[1];
+ else
+ return vp->param.id;
+ }
+ return NULL;
+}
+
+void
+yasm_vps_delete(yasm_valparamhead *headp)
+{
+ yasm_valparam *cur, *next;
+
+ cur = STAILQ_FIRST(headp);
+ while (cur) {
+ next = STAILQ_NEXT(cur, link);
+ if (cur->val)
+ yasm_xfree(cur->val);
+ switch (cur->type) {
+ case YASM_PARAM_ID:
+ yasm_xfree(cur->param.id);
+ break;
+ case YASM_PARAM_STRING:
+ yasm_xfree(cur->param.str);
+ break;
+ case YASM_PARAM_EXPR:
+ yasm_expr_destroy(cur->param.e);
+ break;
+ }
+ yasm_xfree(cur);
+ cur = next;
+ }
+ STAILQ_INIT(headp);
+}
+
+void
+yasm_vps_print(const yasm_valparamhead *headp, FILE *f)
+{
+ const yasm_valparam *vp;
+
+ if(!headp) {
+ fprintf(f, "(none)");
+ return;
+ }
+
+ yasm_vps_foreach(vp, headp) {
+ if (vp->val)
+ fprintf(f, "(\"%s\",", vp->val);
+ else
+ fprintf(f, "((nil),");
+ switch (vp->type) {
+ case YASM_PARAM_ID:
+ fprintf(f, "%s", vp->param.id);
+ break;
+ case YASM_PARAM_STRING:
+ fprintf(f, "\"%s\"", vp->param.str);
+ break;
+ case YASM_PARAM_EXPR:
+ yasm_expr_print(vp->param.e, f);
+ break;
+ }
+ fprintf(f, ")");
+ if (yasm_vps_next(vp))
+ fprintf(f, ",");
+ }
+}
+
+yasm_valparamhead *
+yasm_vps_create(void)
+{
+ yasm_valparamhead *headp = yasm_xmalloc(sizeof(yasm_valparamhead));
+ yasm_vps_initialize(headp);
+ return headp;
+}
+
+void
+yasm_vps_destroy(yasm_valparamhead *headp)
+{
+ yasm_vps_delete(headp);
+ yasm_xfree(headp);
+}
+
+int
+yasm_dir_helper(void *obj, yasm_valparam *vp_first, unsigned long line,
+ const yasm_dir_help *help, size_t nhelp, void *data,
+ int (*helper_valparam) (void *obj, yasm_valparam *vp,
+ unsigned long line, void *data))
+{
+ yasm_valparam *vp = vp_first;
+ int anymatched = 0;
+ int matched;
+
+ if (!vp)
+ return 0;
+
+ do {
+ const char *s;
+ size_t i;
+
+ matched = 0;
+ if (!vp->val && (s = yasm_vp_id(vp))) {
+ for (i=0; i<nhelp; i++) {
+ if (help[i].needsparam == 0 &&
+ yasm__strcasecmp(s, help[i].name) == 0) {
+ if (help[i].helper(obj, vp, line,
+ ((char *)data)+help[i].off,
+ help[i].arg) != 0)
+ return -1;
+ matched = 1;
+ anymatched = 1;
+ break;
+ }
+ }
+ } else if (vp->val) {
+ for (i=0; i<nhelp; i++) {
+ if (help[i].needsparam == 1 &&
+ yasm__strcasecmp(vp->val, help[i].name) == 0) {
+ if (help[i].helper(obj, vp, line,
+ ((char *)data)+help[i].off,
+ help[i].arg) != 0)
+ return -1;
+ matched = 1;
+ anymatched = 1;
+ break;
+ }
+ }
+ }
+
+ if (!matched) {
+ int final = helper_valparam(obj, vp, line, data);
+ if (final < 0)
+ return -1;
+ if (final > 0)
+ anymatched = 1;
+ }
+ } while((vp = yasm_vps_next(vp)));
+
+ return anymatched;
+}
+
+int
+yasm_dir_helper_flag_or(void *obj, yasm_valparam *vp, unsigned long line,
+ void *d, uintptr_t flag)
+{
+ unsigned long *flags = (unsigned long *)d;
+ *flags |= flag;
+ return 0;
+}
+
+int
+yasm_dir_helper_flag_and(void *obj, yasm_valparam *vp, unsigned long line,
+ void *d, uintptr_t flag)
+{
+ unsigned long *flags = (unsigned long *)d;
+ *flags &= ~flag;
+ return 0;
+}
+
+int
+yasm_dir_helper_flag_set(void *obj, yasm_valparam *vp, unsigned long line,
+ void *d, uintptr_t flag)
+{
+ unsigned long *flags = (unsigned long *)d;
+ *flags = flag;
+ return 0;
+}
+
+int
+yasm_dir_helper_expr(void *obj, yasm_valparam *vp, unsigned long line,
+ void *data, uintptr_t arg)
+{
+ yasm_object *object = (yasm_object *)obj;
+ yasm_expr **expr = (yasm_expr **)data;
+
+ if (*expr)
+ yasm_expr_destroy(*expr);
+ if (!(*expr = yasm_vp_expr(vp, object->symtab, line))) {
+ yasm_error_set(YASM_ERROR_VALUE, N_("argument to `%s' is not an expression"),
+ vp->val);
+ return -1;
+ }
+ return 0;
+}
+
+int
+yasm_dir_helper_intn(void *obj, yasm_valparam *vp, unsigned long line,
+ void *data, uintptr_t arg)
+{
+ yasm_object *object = (yasm_object *)obj;
+ /*@only@*/ /*@null@*/ yasm_expr *e;
+ /*@dependent@*/ /*@null@*/ yasm_intnum *local;
+ yasm_intnum **intn = (yasm_intnum **)data;
+
+ if (*intn)
+ yasm_intnum_destroy(*intn);
+ if (!(e = yasm_vp_expr(vp, object->symtab, line)) ||
+ !(local = yasm_expr_get_intnum(&e, 0))) {
+ yasm_error_set(YASM_ERROR_NOT_CONSTANT,
+ N_("argument to `%s' is not an integer"),
+ vp->val);
+ if (e)
+ yasm_expr_destroy(e);
+ return -1;
+ }
+ *intn = yasm_intnum_copy(local);
+ yasm_expr_destroy(e);
+ return 0;
+}
+
+int
+yasm_dir_helper_string(void *obj, yasm_valparam *vp, unsigned long line,
+ void *data, uintptr_t arg)
+{
+ /*@dependent@*/ /*@null@*/ const char *local;
+ char **s = (char **)data;
+
+ if (*s)
+ yasm_xfree(*s);
+ if (!(local = yasm_vp_string(vp))) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("argument to `%s' is not a string or identifier"),
+ vp->val);
+ return -1;
+ }
+ *s = yasm__xstrdup(local);
+ return 0;
+}
+
+int
+yasm_dir_helper_valparam_warn(void *obj, yasm_valparam *vp,
+ unsigned long line, void *data)
+{
+ const char *s;
+
+ if (vp->val) {
+ yasm_warn_set(YASM_WARN_GENERAL, N_("Unrecognized qualifier `%s'"),
+ vp->val);
+ return 0;
+ }
+
+ if ((s = yasm_vp_id(vp)))
+ yasm_warn_set(YASM_WARN_GENERAL, N_("Unrecognized qualifier `%s'"), s);
+ else if (vp->type == YASM_PARAM_STRING)
+ yasm_warn_set(YASM_WARN_GENERAL, N_("Unrecognized string qualifier"));
+ else
+ yasm_warn_set(YASM_WARN_GENERAL, N_("Unrecognized numeric qualifier"));
+
+ return 0;
+}
diff --git a/contrib/tools/yasm/libyasm/valparam.h b/contrib/tools/yasm/libyasm/valparam.h
index 0167558540..d7343d4955 100644
--- a/contrib/tools/yasm/libyasm/valparam.h
+++ b/contrib/tools/yasm/libyasm/valparam.h
@@ -1,408 +1,408 @@
-/**
- * \file libyasm/valparam.h
- * \brief YASM value/parameter interface.
- *
- * \license
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- * \endlicense
- */
-#ifndef YASM_VALPARAM_H
-#define YASM_VALPARAM_H
-
-#ifndef YASM_LIB_DECL
-#define YASM_LIB_DECL
-#endif
-
-/** Value/parameter pair. \internal */
-struct yasm_valparam {
- /*@reldef@*/ STAILQ_ENTRY(yasm_valparam) link; /**< Next pair in list */
- /*@owned@*/ /*@null@*/ char *val; /**< Value */
-
- /** Parameter type. */
- enum yasm_param_type {
- YASM_PARAM_ID, /**< Identifier */
- YASM_PARAM_STRING, /**< String */
- YASM_PARAM_EXPR /**< Expression */
- } type; /**< Parameter type */
-
- /** Parameter value. */
- union yasm_param {
- /*@owned@*/ char *id; /**< Identifier */
- /*@owned@*/ char *str; /**< String */
- /*@owned@*/ yasm_expr *e; /**< Expression */
- } param; /**< Parameter */
-
- /** Prefix character that indicates a raw identifier. When
- * yasm_vp_string() is called on a #YASM_PARAM_ID, all characters are
- * returned. When yasm_vp_id() is called on a #YASM_PARAM_ID, if the
- * identifier begins with this character, this character is stripped
- * from the returned value.
- */
- char id_prefix;
-};
-
-/** Linked list of value/parameter pairs. \internal */
-/*@reldef@*/ STAILQ_HEAD(yasm_valparamhead, yasm_valparam);
-
-/** Directive list entry structure. */
-struct yasm_directive {
- /** Directive name. GAS directives should include the ".", NASM
- * directives should just be the raw name (not including the []).
- * NULL entry required to terminate list of directives.
- */
- /*@null@*/ const char *name;
-
- const char *parser; /**< Parser keyword */
-
- /** Handler callback function for the directive.
- * \param object object
- * \param valparams value/parameters
- * \param objext_valparams object format-specific value/parameters
- * \param line virtual line (from yasm_linemap)
- */
- void (*handler) (yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line);
-
- /** Flags for pre-handler parameter checking. */
- enum yasm_directive_flags {
- YASM_DIR_ANY = 0, /**< Any valparams accepted */
- YASM_DIR_ARG_REQUIRED = 1, /**< Require at least 1 valparam */
- YASM_DIR_ID_REQUIRED = 2 /**< First valparam must be ID */
- } flags;
-};
-
-/** Call a directive. Performs any valparam checks asked for by the
- * directive prior to call. Note that for a variety of reasons, a directive
- * can generate an error.
- * \param directive directive
- * \param object object
- * \param valparams value/parameters
- * \param objext_valparams object format-specific value/parameters
- * \param line virtual line (from yasm_linemap)
- */
-YASM_LIB_DECL
-void yasm_call_directive(const yasm_directive *directive, yasm_object *object,
- yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams,
- unsigned long line);
-
-/** Create a new valparam with identifier parameter.
- * \param v value
- * \param p parameter
- * \param id_prefix identifier prefix for raw identifiers
- * \return Newly allocated valparam.
- */
-YASM_LIB_DECL
-yasm_valparam *yasm_vp_create_id(/*@keep@*/ char *v, /*@keep@*/ char *p,
- int id_prefix);
-
-/** Create a new valparam with string parameter.
- * \param v value
- * \param p parameter
- * \return Newly allocated valparam.
- */
-YASM_LIB_DECL
-yasm_valparam *yasm_vp_create_string(/*@keep@*/ char *v, /*@keep@*/ char *p);
-
-/** Create a new valparam with expression parameter.
- * \param v value
- * \param p parameter
- * \return Newly allocated valparam.
- */
-YASM_LIB_DECL
-yasm_valparam *yasm_vp_create_expr(/*@keep@*/ char *v,
- /*@keep@*/ yasm_expr *p);
-
-/** Get a valparam parameter as an expr. If the parameter is an identifier,
- * it's treated as a symbol (yasm_symtab_use() is called to convert it).
- * \param vp valparam
- * \param symtab symbol table
- * \param line virtual line
- * \return Expression, or NULL if vp is NULL or the parameter cannot be
- * converted to an expression.
- */
-YASM_LIB_DECL
-/*@null@*/ /*@only@*/ yasm_expr *yasm_vp_expr
- (const yasm_valparam *vp, yasm_symtab *symtab, unsigned long line);
-
-/** Get a valparam parameter as a string. If the parameter is an identifier,
- * it's treated as a string.
- * \param vp valparam
- * \return String, or NULL if vp is NULL or the parameter cannot be realized
- * as a string.
- */
-YASM_LIB_DECL
-/*@null@*/ /*@dependent@*/ const char *yasm_vp_string(const yasm_valparam *vp);
-
-/** Get a valparam parameter as an identifier.
- * \param vp valparam
- * \return Identifier (string), or NULL if vp is NULL or the parameter is not
- * an identifier.
- */
-YASM_LIB_DECL
-/*@null@*/ /*@dependent@*/ const char *yasm_vp_id(const yasm_valparam *vp);
-
-/** Create a new linked list of valparams.
- * \return Newly allocated valparam list.
- */
-YASM_LIB_DECL
-yasm_valparamhead *yasm_vps_create(void);
-
-/** Destroy a list of valparams (created with yasm_vps_create).
- * \param headp list of valparams
- */
-YASM_LIB_DECL
-void yasm_vps_destroy(yasm_valparamhead *headp);
-
-/** Initialize linked list of valparams.
- * \param headp linked list
- */
-void yasm_vps_initialize(/*@out@*/ yasm_valparamhead *headp);
-#ifndef YASM_DOXYGEN
-#define yasm_vps_initialize(headp) STAILQ_INIT(headp)
-#endif
-
-/** Destroy (free allocated memory for) linked list of valparams (created with
- * yasm_vps_initialize).
- * \warning Deletes val/params.
- * \param headp linked list
- */
-YASM_LIB_DECL
-void yasm_vps_delete(yasm_valparamhead *headp);
-
-/** Append valparam to tail of linked list.
- * \param headp linked list
- * \param vp valparam
- */
-void yasm_vps_append(yasm_valparamhead *headp, /*@keep@*/ yasm_valparam *vp);
-#ifndef YASM_DOXYGEN
-#define yasm_vps_append(headp, vp) do { \
- if (vp) \
- STAILQ_INSERT_TAIL(headp, vp, link); \
- } while(0)
-#endif
-
-/** Get first valparam in linked list.
- * \param headp linked list
- * \return First valparam in linked list.
- */
-/*@null@*/ /*@dependent@*/ yasm_valparam *yasm_vps_first
- (yasm_valparamhead *headp);
-#ifndef YASM_DOXYGEN
-#define yasm_vps_first(headp) STAILQ_FIRST(headp)
-#endif
-
-/** Get next valparam in linked list.
- * \param cur previous valparam in linked list
- * \return Next valparam in linked list.
- */
-/*@null@*/ /*@dependent@*/ yasm_valparam *yasm_vps_next(yasm_valparam *cur);
-#ifndef YASM_DOXYGEN
-#define yasm_vps_next(cur) STAILQ_NEXT(cur, link)
-#endif
-
-/** Iterate through linked list of valparams.
- * \internal
- * \param iter iterator variable
- * \param headp linked list
- */
-#ifndef YASM_DOXYGEN
-#define yasm_vps_foreach(iter, headp) STAILQ_FOREACH(iter, headp, link)
-#endif
-
-/** Print linked list of valparams. For debugging purposes.
- * \param f file
- * \param headp linked list
- */
-YASM_LIB_DECL
-void yasm_vps_print(/*@null@*/ const yasm_valparamhead *headp, FILE *f);
-
-/** Directive valparam parse helper structure. */
-typedef struct yasm_dir_help {
- /** Value portion of val=param (if needsparam=1), or standalone identifier
- * (if needsparam=0).
- */
- const char *name;
-
- /** 1 if value requires parameter, 0 if it must not have a parameter. */
- int needsparam;
-
- /** Helper callback function if name and parameter existence match.
- * \param obj obj passed into yasm_dir_helper()
- * \param vp value/parameter
- * \param line line passed into yasm_dir_helper()
- * \param data data passed into yasm_dir_helper() plus
- #yasm_dir_help.off offset
- * \param arg #yasm_dir_help.arg argument
- * \return -1 on error, 0 otherwise.
- */
- int (*helper) (void *obj, yasm_valparam *vp, unsigned long line,
- void *data, uintptr_t arg);
-
- /** Offset added to data pointer passed into yasm_dir_helper() before
- * data pointer is given to #yasm_dir_help.helper(). This is so that
- * a structure can be passed into yasm_dir_helper() and this can be an
- * offsetof() to point the helper function to a specific structure
- * member.
- */
- size_t off;
-
- /** Argument to pass in as the arg parameter to #yasm_dir_help.helper().
- */
- uintptr_t arg;
-} yasm_dir_help;
-
-/** Help parse a list of directive value/parameters. Takes an array of
- * #yasm_dir_help structures and tries to match val=param (or just val)
- * against the passed value/parameters. When no match is found in the
- * array of help structures, calls helper_valparam.
- * \param obj object to be passed to yasm_dir_help.helper() or
- * helper_valparam() callback
- * \param vp_first first value/parameter to examine
- * \param line virtual line number; passed down to helper callback
- * \param help array of #yasm_dir_help structures
- * \param nhelp number of array elements
- * \param data base data pointer; if a match is found,
- * the respective #yasm_dir_help.off is added to this
- * prior to it being passed to the helper callback
- * \param helper_valparam catch-all callback; should return -1 on error,
- * 0 if not matched, 1 if matched.
- * \return -1 on error, 1 if any arguments matched (including via
- * catch-all callback), 0 if no match.
- */
-YASM_LIB_DECL
-int yasm_dir_helper(void *obj, yasm_valparam *vp_first, unsigned long line,
- const yasm_dir_help *help, size_t nhelp, void *data,
- int (*helper_valparam) (void *object,
- yasm_valparam *vp,
- unsigned long line,
- void *data));
-
-/** Standard helper for yasm_dir_helper() that simply sets a flag when called.
- * It does not look at the vp; rather, it uses the value of the arg parameter,
- * and stores an unsigned long value to data.
- * \param obj unused
- * \param vp unused
- * \param line unused
- * \param data pointer to an unsigned long
- * \param arg flag to set
- * \return 0
- */
-YASM_LIB_DECL
-int yasm_dir_helper_flag_set(void *obj, yasm_valparam *vp, unsigned long line,
- void *data, uintptr_t arg);
-
-/** Standard helper for yasm_dir_helper() that simply ORs a flag when called.
- * It does not look at the vp; rather, it uses the value of the arg parameter,
- * and ORs it with the unsigned long value in data.
- * \param obj unused
- * \param vp unused
- * \param line unused
- * \param data pointer to an unsigned long
- * \param arg flag to OR
- * \return 0
- */
-YASM_LIB_DECL
-int yasm_dir_helper_flag_or(void *obj, yasm_valparam *vp, unsigned long line,
- void *data, uintptr_t arg);
-
-/** Standard helper for yasm_dir_helper() that simply ANDs a flag when called.
- * It does not look at the vp; rather, it uses the value of the arg parameter,
- * and ANDs its inverse (~) with the unsigned long value in data.
- * \param obj unused
- * \param vp unused
- * \param line unused
- * \param data pointer to an unsigned long
- * \param arg flag to AND
- * \return 0
- */
-YASM_LIB_DECL
-int yasm_dir_helper_flag_and(void *obj, yasm_valparam *vp, unsigned long line,
- void *data, uintptr_t arg);
-
-/** Standard helper for yasm_dir_helper() that parses an expr parameter.
- * The #yasm_dir_help structure that uses this function should have
- * needsparam=1. The obj parameter to yasm_dir_helper() when this helper
- * is used MUST point to a #yasm_object. In addition, the data parameter
- * that is ultimately passed to this function (e.g. yasm_dir_helper() data
- * parameter plus #yasm_dir_help.off) must point to a #yasm_expr *
- * initialized to NULL.
- * \param obj object; must be #yasm_object
- * \param vp valparam
- * \param line virtual line number
- * \param data pointer to #yasm_expr *
- * \param arg unused argument
- * \return -1 on error, 0 otherwise.
- */
-YASM_LIB_DECL
-int yasm_dir_helper_expr(void *obj, yasm_valparam *vp, unsigned long line,
- void *data, uintptr_t arg);
-
-/** Standard helper for yasm_dir_helper() that parses an intnum parameter.
- * The #yasm_dir_help structure that uses this function should have
- * needsparam=1. The obj parameter to yasm_dir_helper() when this helper
- * is used MUST point to a #yasm_object. In addition, the data parameter
- * that is ultimately passed to this function (e.g. yasm_dir_helper() data
- * parameter plus #yasm_dir_help.off) must point to a #yasm_intnum *
- * initialized to NULL.
- * \param obj object; must be #yasm_object
- * \param vp valparam
- * \param line virtual line number
- * \param data pointer to #yasm_intnum *
- * \param arg unused argument
- * \return -1 on error, 0 otherwise.
- */
-YASM_LIB_DECL
-int yasm_dir_helper_intn(void *obj, yasm_valparam *vp, unsigned long line,
- void *data, uintptr_t arg);
-
-/** Standard helper for yasm_dir_helper() that parses an string (or
- * standalone identifier) parameter.
- * The #yasm_dir_help structure that uses this function should have
- * needsparam=1. The data parameter that is ultimately passed to this
- * function (e.g. yasm_dir_helper() data parameter plus #yasm_dir_help.off)
- * must point to a char * initialized to NULL.
- * \param obj unused
- * \param vp valparam
- * \param line unused
- * \param data pointer to char *
- * \param arg unused
- * \return -1 on error, 0 otherwise.
- */
-YASM_LIB_DECL
-int yasm_dir_helper_string(void *obj, yasm_valparam *vp, unsigned long line,
- void *data, uintptr_t arg);
-
-/** Standard catch-all callback fro yasm_dir_helper(). Generates standard
- * warning for all valparams.
- * \param obj unused
- * \param vp valparam
- * \param line unused
- * \param data unused
- * \return 0
- */
-YASM_LIB_DECL
-int yasm_dir_helper_valparam_warn(void *obj, yasm_valparam *vp,
- unsigned long line, void *data);
-#endif
+/**
+ * \file libyasm/valparam.h
+ * \brief YASM value/parameter interface.
+ *
+ * \license
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * - Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ * \endlicense
+ */
+#ifndef YASM_VALPARAM_H
+#define YASM_VALPARAM_H
+
+#ifndef YASM_LIB_DECL
+#define YASM_LIB_DECL
+#endif
+
+/** Value/parameter pair. \internal */
+struct yasm_valparam {
+ /*@reldef@*/ STAILQ_ENTRY(yasm_valparam) link; /**< Next pair in list */
+ /*@owned@*/ /*@null@*/ char *val; /**< Value */
+
+ /** Parameter type. */
+ enum yasm_param_type {
+ YASM_PARAM_ID, /**< Identifier */
+ YASM_PARAM_STRING, /**< String */
+ YASM_PARAM_EXPR /**< Expression */
+ } type; /**< Parameter type */
+
+ /** Parameter value. */
+ union yasm_param {
+ /*@owned@*/ char *id; /**< Identifier */
+ /*@owned@*/ char *str; /**< String */
+ /*@owned@*/ yasm_expr *e; /**< Expression */
+ } param; /**< Parameter */
+
+ /** Prefix character that indicates a raw identifier. When
+ * yasm_vp_string() is called on a #YASM_PARAM_ID, all characters are
+ * returned. When yasm_vp_id() is called on a #YASM_PARAM_ID, if the
+ * identifier begins with this character, this character is stripped
+ * from the returned value.
+ */
+ char id_prefix;
+};
+
+/** Linked list of value/parameter pairs. \internal */
+/*@reldef@*/ STAILQ_HEAD(yasm_valparamhead, yasm_valparam);
+
+/** Directive list entry structure. */
+struct yasm_directive {
+ /** Directive name. GAS directives should include the ".", NASM
+ * directives should just be the raw name (not including the []).
+ * NULL entry required to terminate list of directives.
+ */
+ /*@null@*/ const char *name;
+
+ const char *parser; /**< Parser keyword */
+
+ /** Handler callback function for the directive.
+ * \param object object
+ * \param valparams value/parameters
+ * \param objext_valparams object format-specific value/parameters
+ * \param line virtual line (from yasm_linemap)
+ */
+ void (*handler) (yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line);
+
+ /** Flags for pre-handler parameter checking. */
+ enum yasm_directive_flags {
+ YASM_DIR_ANY = 0, /**< Any valparams accepted */
+ YASM_DIR_ARG_REQUIRED = 1, /**< Require at least 1 valparam */
+ YASM_DIR_ID_REQUIRED = 2 /**< First valparam must be ID */
+ } flags;
+};
+
+/** Call a directive. Performs any valparam checks asked for by the
+ * directive prior to call. Note that for a variety of reasons, a directive
+ * can generate an error.
+ * \param directive directive
+ * \param object object
+ * \param valparams value/parameters
+ * \param objext_valparams object format-specific value/parameters
+ * \param line virtual line (from yasm_linemap)
+ */
+YASM_LIB_DECL
+void yasm_call_directive(const yasm_directive *directive, yasm_object *object,
+ yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams,
+ unsigned long line);
+
+/** Create a new valparam with identifier parameter.
+ * \param v value
+ * \param p parameter
+ * \param id_prefix identifier prefix for raw identifiers
+ * \return Newly allocated valparam.
+ */
+YASM_LIB_DECL
+yasm_valparam *yasm_vp_create_id(/*@keep@*/ char *v, /*@keep@*/ char *p,
+ int id_prefix);
+
+/** Create a new valparam with string parameter.
+ * \param v value
+ * \param p parameter
+ * \return Newly allocated valparam.
+ */
+YASM_LIB_DECL
+yasm_valparam *yasm_vp_create_string(/*@keep@*/ char *v, /*@keep@*/ char *p);
+
+/** Create a new valparam with expression parameter.
+ * \param v value
+ * \param p parameter
+ * \return Newly allocated valparam.
+ */
+YASM_LIB_DECL
+yasm_valparam *yasm_vp_create_expr(/*@keep@*/ char *v,
+ /*@keep@*/ yasm_expr *p);
+
+/** Get a valparam parameter as an expr. If the parameter is an identifier,
+ * it's treated as a symbol (yasm_symtab_use() is called to convert it).
+ * \param vp valparam
+ * \param symtab symbol table
+ * \param line virtual line
+ * \return Expression, or NULL if vp is NULL or the parameter cannot be
+ * converted to an expression.
+ */
+YASM_LIB_DECL
+/*@null@*/ /*@only@*/ yasm_expr *yasm_vp_expr
+ (const yasm_valparam *vp, yasm_symtab *symtab, unsigned long line);
+
+/** Get a valparam parameter as a string. If the parameter is an identifier,
+ * it's treated as a string.
+ * \param vp valparam
+ * \return String, or NULL if vp is NULL or the parameter cannot be realized
+ * as a string.
+ */
+YASM_LIB_DECL
+/*@null@*/ /*@dependent@*/ const char *yasm_vp_string(const yasm_valparam *vp);
+
+/** Get a valparam parameter as an identifier.
+ * \param vp valparam
+ * \return Identifier (string), or NULL if vp is NULL or the parameter is not
+ * an identifier.
+ */
+YASM_LIB_DECL
+/*@null@*/ /*@dependent@*/ const char *yasm_vp_id(const yasm_valparam *vp);
+
+/** Create a new linked list of valparams.
+ * \return Newly allocated valparam list.
+ */
+YASM_LIB_DECL
+yasm_valparamhead *yasm_vps_create(void);
+
+/** Destroy a list of valparams (created with yasm_vps_create).
+ * \param headp list of valparams
+ */
+YASM_LIB_DECL
+void yasm_vps_destroy(yasm_valparamhead *headp);
+
+/** Initialize linked list of valparams.
+ * \param headp linked list
+ */
+void yasm_vps_initialize(/*@out@*/ yasm_valparamhead *headp);
+#ifndef YASM_DOXYGEN
+#define yasm_vps_initialize(headp) STAILQ_INIT(headp)
+#endif
+
+/** Destroy (free allocated memory for) linked list of valparams (created with
+ * yasm_vps_initialize).
+ * \warning Deletes val/params.
+ * \param headp linked list
+ */
+YASM_LIB_DECL
+void yasm_vps_delete(yasm_valparamhead *headp);
+
+/** Append valparam to tail of linked list.
+ * \param headp linked list
+ * \param vp valparam
+ */
+void yasm_vps_append(yasm_valparamhead *headp, /*@keep@*/ yasm_valparam *vp);
+#ifndef YASM_DOXYGEN
+#define yasm_vps_append(headp, vp) do { \
+ if (vp) \
+ STAILQ_INSERT_TAIL(headp, vp, link); \
+ } while(0)
+#endif
+
+/** Get first valparam in linked list.
+ * \param headp linked list
+ * \return First valparam in linked list.
+ */
+/*@null@*/ /*@dependent@*/ yasm_valparam *yasm_vps_first
+ (yasm_valparamhead *headp);
+#ifndef YASM_DOXYGEN
+#define yasm_vps_first(headp) STAILQ_FIRST(headp)
+#endif
+
+/** Get next valparam in linked list.
+ * \param cur previous valparam in linked list
+ * \return Next valparam in linked list.
+ */
+/*@null@*/ /*@dependent@*/ yasm_valparam *yasm_vps_next(yasm_valparam *cur);
+#ifndef YASM_DOXYGEN
+#define yasm_vps_next(cur) STAILQ_NEXT(cur, link)
+#endif
+
+/** Iterate through linked list of valparams.
+ * \internal
+ * \param iter iterator variable
+ * \param headp linked list
+ */
+#ifndef YASM_DOXYGEN
+#define yasm_vps_foreach(iter, headp) STAILQ_FOREACH(iter, headp, link)
+#endif
+
+/** Print linked list of valparams. For debugging purposes.
+ * \param f file
+ * \param headp linked list
+ */
+YASM_LIB_DECL
+void yasm_vps_print(/*@null@*/ const yasm_valparamhead *headp, FILE *f);
+
+/** Directive valparam parse helper structure. */
+typedef struct yasm_dir_help {
+ /** Value portion of val=param (if needsparam=1), or standalone identifier
+ * (if needsparam=0).
+ */
+ const char *name;
+
+ /** 1 if value requires parameter, 0 if it must not have a parameter. */
+ int needsparam;
+
+ /** Helper callback function if name and parameter existence match.
+ * \param obj obj passed into yasm_dir_helper()
+ * \param vp value/parameter
+ * \param line line passed into yasm_dir_helper()
+ * \param data data passed into yasm_dir_helper() plus
+ #yasm_dir_help.off offset
+ * \param arg #yasm_dir_help.arg argument
+ * \return -1 on error, 0 otherwise.
+ */
+ int (*helper) (void *obj, yasm_valparam *vp, unsigned long line,
+ void *data, uintptr_t arg);
+
+ /** Offset added to data pointer passed into yasm_dir_helper() before
+ * data pointer is given to #yasm_dir_help.helper(). This is so that
+ * a structure can be passed into yasm_dir_helper() and this can be an
+ * offsetof() to point the helper function to a specific structure
+ * member.
+ */
+ size_t off;
+
+ /** Argument to pass in as the arg parameter to #yasm_dir_help.helper().
+ */
+ uintptr_t arg;
+} yasm_dir_help;
+
+/** Help parse a list of directive value/parameters. Takes an array of
+ * #yasm_dir_help structures and tries to match val=param (or just val)
+ * against the passed value/parameters. When no match is found in the
+ * array of help structures, calls helper_valparam.
+ * \param obj object to be passed to yasm_dir_help.helper() or
+ * helper_valparam() callback
+ * \param vp_first first value/parameter to examine
+ * \param line virtual line number; passed down to helper callback
+ * \param help array of #yasm_dir_help structures
+ * \param nhelp number of array elements
+ * \param data base data pointer; if a match is found,
+ * the respective #yasm_dir_help.off is added to this
+ * prior to it being passed to the helper callback
+ * \param helper_valparam catch-all callback; should return -1 on error,
+ * 0 if not matched, 1 if matched.
+ * \return -1 on error, 1 if any arguments matched (including via
+ * catch-all callback), 0 if no match.
+ */
+YASM_LIB_DECL
+int yasm_dir_helper(void *obj, yasm_valparam *vp_first, unsigned long line,
+ const yasm_dir_help *help, size_t nhelp, void *data,
+ int (*helper_valparam) (void *object,
+ yasm_valparam *vp,
+ unsigned long line,
+ void *data));
+
+/** Standard helper for yasm_dir_helper() that simply sets a flag when called.
+ * It does not look at the vp; rather, it uses the value of the arg parameter,
+ * and stores an unsigned long value to data.
+ * \param obj unused
+ * \param vp unused
+ * \param line unused
+ * \param data pointer to an unsigned long
+ * \param arg flag to set
+ * \return 0
+ */
+YASM_LIB_DECL
+int yasm_dir_helper_flag_set(void *obj, yasm_valparam *vp, unsigned long line,
+ void *data, uintptr_t arg);
+
+/** Standard helper for yasm_dir_helper() that simply ORs a flag when called.
+ * It does not look at the vp; rather, it uses the value of the arg parameter,
+ * and ORs it with the unsigned long value in data.
+ * \param obj unused
+ * \param vp unused
+ * \param line unused
+ * \param data pointer to an unsigned long
+ * \param arg flag to OR
+ * \return 0
+ */
+YASM_LIB_DECL
+int yasm_dir_helper_flag_or(void *obj, yasm_valparam *vp, unsigned long line,
+ void *data, uintptr_t arg);
+
+/** Standard helper for yasm_dir_helper() that simply ANDs a flag when called.
+ * It does not look at the vp; rather, it uses the value of the arg parameter,
+ * and ANDs its inverse (~) with the unsigned long value in data.
+ * \param obj unused
+ * \param vp unused
+ * \param line unused
+ * \param data pointer to an unsigned long
+ * \param arg flag to AND
+ * \return 0
+ */
+YASM_LIB_DECL
+int yasm_dir_helper_flag_and(void *obj, yasm_valparam *vp, unsigned long line,
+ void *data, uintptr_t arg);
+
+/** Standard helper for yasm_dir_helper() that parses an expr parameter.
+ * The #yasm_dir_help structure that uses this function should have
+ * needsparam=1. The obj parameter to yasm_dir_helper() when this helper
+ * is used MUST point to a #yasm_object. In addition, the data parameter
+ * that is ultimately passed to this function (e.g. yasm_dir_helper() data
+ * parameter plus #yasm_dir_help.off) must point to a #yasm_expr *
+ * initialized to NULL.
+ * \param obj object; must be #yasm_object
+ * \param vp valparam
+ * \param line virtual line number
+ * \param data pointer to #yasm_expr *
+ * \param arg unused argument
+ * \return -1 on error, 0 otherwise.
+ */
+YASM_LIB_DECL
+int yasm_dir_helper_expr(void *obj, yasm_valparam *vp, unsigned long line,
+ void *data, uintptr_t arg);
+
+/** Standard helper for yasm_dir_helper() that parses an intnum parameter.
+ * The #yasm_dir_help structure that uses this function should have
+ * needsparam=1. The obj parameter to yasm_dir_helper() when this helper
+ * is used MUST point to a #yasm_object. In addition, the data parameter
+ * that is ultimately passed to this function (e.g. yasm_dir_helper() data
+ * parameter plus #yasm_dir_help.off) must point to a #yasm_intnum *
+ * initialized to NULL.
+ * \param obj object; must be #yasm_object
+ * \param vp valparam
+ * \param line virtual line number
+ * \param data pointer to #yasm_intnum *
+ * \param arg unused argument
+ * \return -1 on error, 0 otherwise.
+ */
+YASM_LIB_DECL
+int yasm_dir_helper_intn(void *obj, yasm_valparam *vp, unsigned long line,
+ void *data, uintptr_t arg);
+
+/** Standard helper for yasm_dir_helper() that parses an string (or
+ * standalone identifier) parameter.
+ * The #yasm_dir_help structure that uses this function should have
+ * needsparam=1. The data parameter that is ultimately passed to this
+ * function (e.g. yasm_dir_helper() data parameter plus #yasm_dir_help.off)
+ * must point to a char * initialized to NULL.
+ * \param obj unused
+ * \param vp valparam
+ * \param line unused
+ * \param data pointer to char *
+ * \param arg unused
+ * \return -1 on error, 0 otherwise.
+ */
+YASM_LIB_DECL
+int yasm_dir_helper_string(void *obj, yasm_valparam *vp, unsigned long line,
+ void *data, uintptr_t arg);
+
+/** Standard catch-all callback fro yasm_dir_helper(). Generates standard
+ * warning for all valparams.
+ * \param obj unused
+ * \param vp valparam
+ * \param line unused
+ * \param data unused
+ * \return 0
+ */
+YASM_LIB_DECL
+int yasm_dir_helper_valparam_warn(void *obj, yasm_valparam *vp,
+ unsigned long line, void *data);
+#endif
diff --git a/contrib/tools/yasm/libyasm/value.c b/contrib/tools/yasm/libyasm/value.c
index 714b80f0c4..3ab73c1cec 100644
--- a/contrib/tools/yasm/libyasm/value.c
+++ b/contrib/tools/yasm/libyasm/value.c
@@ -1,771 +1,771 @@
-/*
- * Value handling
- *
- * Copyright (C) 2006-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include "util.h"
-
-#include "libyasm-stdint.h"
-#include "coretype.h"
-#include "bitvect.h"
-
-#include "errwarn.h"
-#include "intnum.h"
-#include "floatnum.h"
-#include "expr.h"
-#include "value.h"
-#include "symrec.h"
-
-#include "bytecode.h"
-#include "section.h"
-
-#include "arch.h"
-
-
-void
-yasm_value_initialize(/*@out@*/ yasm_value *value,
- /*@null@*/ /*@kept@*/ yasm_expr *e, unsigned int size)
-{
- value->abs = e;
- value->rel = NULL;
- value->wrt = NULL;
- value->seg_of = 0;
- value->rshift = 0;
- value->curpos_rel = 0;
- value->ip_rel = 0;
- value->jump_target = 0;
- value->section_rel = 0;
- value->no_warn = 0;
- value->sign = 0;
- value->size = size;
-}
-
-void
-yasm_value_init_sym(/*@out@*/ yasm_value *value, /*@null@*/ yasm_symrec *sym,
- unsigned int size)
-{
- value->abs = NULL;
- value->rel = sym;
- value->wrt = NULL;
- value->seg_of = 0;
- value->rshift = 0;
- value->curpos_rel = 0;
- value->ip_rel = 0;
- value->jump_target = 0;
- value->section_rel = 0;
- value->no_warn = 0;
- value->sign = 0;
- value->size = size;
-}
-
-void
-yasm_value_init_copy(yasm_value *value, const yasm_value *orig)
-{
- value->abs = orig->abs ? yasm_expr_copy(orig->abs) : NULL;
- value->rel = orig->rel;
- value->wrt = orig->wrt;
- value->seg_of = orig->seg_of;
- value->rshift = orig->rshift;
- value->curpos_rel = orig->curpos_rel;
- value->ip_rel = orig->ip_rel;
- value->jump_target = orig->jump_target;
- value->section_rel = orig->section_rel;
- value->no_warn = orig->no_warn;
- value->sign = orig->sign;
- value->size = orig->size;
-}
-
-void
-yasm_value_delete(yasm_value *value)
-{
- if (value->abs)
- yasm_expr_destroy(value->abs);
- value->abs = NULL;
- value->rel = NULL;
-}
-
-void
-yasm_value_set_curpos_rel(yasm_value *value, yasm_bytecode *bc,
- unsigned int ip_rel)
-{
- value->curpos_rel = 1;
- value->ip_rel = ip_rel;
- /* In order for us to correctly output curpos-relative values, we must
- * have a relative portion of the value. If one doesn't exist, point
- * to a custom absolute symbol.
- */
- if (!value->rel) {
- yasm_object *object = yasm_section_get_object(yasm_bc_get_section(bc));
- value->rel = yasm_symtab_abs_sym(object->symtab);
- }
-}
-
-static int
-value_finalize_scan(yasm_value *value, yasm_expr *e,
- /*@null@*/ yasm_bytecode *expr_precbc, int ssym_not_ok)
-{
- int i;
- /*@dependent@*/ yasm_section *sect;
- /*@dependent@*/ /*@null@*/ yasm_bytecode *precbc;
-
- unsigned long shamt; /* for SHR */
-
- /* Yes, this has a maximum upper bound on 32 terms, based on an
- * "insane number of terms" (and ease of implementation) WAG.
- * The right way to do this would be a stack-based alloca, but that's
- * not ISO C. We really don't want to malloc here as this function is
- * hit a lot!
- *
- * This is a bitmask to keep things small, as this is a recursive
- * routine and we don't want to eat up stack space.
- */
- unsigned long used; /* for ADD */
-
- /* Thanks to this running after a simplify, we don't need to iterate
- * down through IDENTs or handle SUB.
- *
- * We scan for a single symrec, gathering info along the way. After
- * we've found the symrec, we keep scanning but error if we find
- * another one. We pull out the single symrec and any legal operations
- * performed on it.
- *
- * Also, if we find a float anywhere, we don't allow mixing of a single
- * symrec with it.
- */
- switch (e->op) {
- case YASM_EXPR_ADD:
- /* Okay for single symrec anywhere in expr.
- * Check for single symrec anywhere.
- * Handle symrec-symrec by checking for (-1*symrec)
- * and symrec term pairs (where both symrecs are in the same
- * segment).
- */
- if (e->numterms > 32)
- yasm__fatal(N_("expression on line %d has too many add terms;"
- " internal limit of 32"), e->line);
-
- used = 0;
-
- for (i=0; i<e->numterms; i++) {
- int j;
- yasm_expr *sube;
- yasm_intnum *intn;
- yasm_symrec *sym;
- /*@dependent@*/ yasm_section *sect2;
- /*@dependent@*/ /*@null@*/ yasm_bytecode *precbc2;
-
- /* First look for an (-1*symrec) term */
- if (e->terms[i].type != YASM_EXPR_EXPR)
- continue;
- sube = e->terms[i].data.expn;
-
- if (sube->op != YASM_EXPR_MUL || sube->numterms != 2) {
- /* recurse instead */
- if (value_finalize_scan(value, sube, expr_precbc,
- ssym_not_ok))
- return 1;
- continue;
- }
-
- if (sube->terms[0].type == YASM_EXPR_INT &&
- sube->terms[1].type == YASM_EXPR_SYM) {
- intn = sube->terms[0].data.intn;
- sym = sube->terms[1].data.sym;
- } else if (sube->terms[0].type == YASM_EXPR_SYM &&
- sube->terms[1].type == YASM_EXPR_INT) {
- sym = sube->terms[0].data.sym;
- intn = sube->terms[1].data.intn;
- } else {
- if (value_finalize_scan(value, sube, expr_precbc,
- ssym_not_ok))
- return 1;
- continue;
- }
-
- if (!yasm_intnum_is_neg1(intn)) {
- if (value_finalize_scan(value, sube, expr_precbc,
- ssym_not_ok))
- return 1;
- continue;
- }
-
- /* Look for the same symrec term; even if both are external,
- * they should cancel out.
- */
- for (j=0; j<e->numterms; j++) {
- if (e->terms[j].type == YASM_EXPR_SYM
- && e->terms[j].data.sym == sym
- && (used & (1<<j)) == 0) {
- /* Mark as used */
- used |= 1<<j;
-
- /* Replace both symrec portions with 0 */
- yasm_expr_destroy(sube);
- e->terms[i].type = YASM_EXPR_INT;
- e->terms[i].data.intn = yasm_intnum_create_uint(0);
- e->terms[j].type = YASM_EXPR_INT;
- e->terms[j].data.intn = yasm_intnum_create_uint(0);
-
- break; /* stop looking */
- }
- }
- if (j != e->numterms)
- continue;
-
- if (!yasm_symrec_get_label(sym, &precbc)) {
- if (value_finalize_scan(value, sube, expr_precbc,
- ssym_not_ok))
- return 1;
- continue;
- }
- sect2 = yasm_bc_get_section(precbc);
-
- /* Now look for a unused symrec term in the same segment */
- for (j=0; j<e->numterms; j++) {
- if (e->terms[j].type == YASM_EXPR_SYM
- && yasm_symrec_get_label(e->terms[j].data.sym,
- &precbc2)
- && (sect = yasm_bc_get_section(precbc2))
- && sect == sect2
- && (used & (1<<j)) == 0) {
- /* Mark as used */
- used |= 1<<j;
- break; /* stop looking */
- }
- }
-
- /* We didn't match in the same segment. If the
- * -1*symrec is actually -1*curpos, we can match
- * unused symrec terms in other segments and generate
- * a curpos-relative reloc.
- *
- * Similarly, handle -1*symrec in other segment via the
- * following transformation:
- * other-this = (other-.)+(.-this)
- * We can only do this transformation if "this" is in
- * this expr's segment.
- *
- * Don't do this if we've already become curpos-relative.
- * The unmatched symrec will be caught below.
- */
- if (j == e->numterms && !value->curpos_rel
- && (yasm_symrec_is_curpos(sym)
- || (expr_precbc
- && sect2 == yasm_bc_get_section(expr_precbc)))) {
- for (j=0; j<e->numterms; j++) {
- if (e->terms[j].type == YASM_EXPR_SYM
- && !yasm_symrec_get_equ(e->terms[j].data.sym)
- && !yasm_symrec_is_special(e->terms[j].data.sym)
- && (used & (1<<j)) == 0) {
- /* Mark as used */
- used |= 1<<j;
- /* Mark value as curpos-relative */
- if (value->rel || ssym_not_ok)
- return 1;
- value->rel = e->terms[j].data.sym;
- value->curpos_rel = 1;
- if (yasm_symrec_is_curpos(sym)) {
- /* Replace both symrec portions with 0 */
- yasm_expr_destroy(sube);
- e->terms[i].type = YASM_EXPR_INT;
- e->terms[i].data.intn =
- yasm_intnum_create_uint(0);
- e->terms[j].type = YASM_EXPR_INT;
- e->terms[j].data.intn =
- yasm_intnum_create_uint(0);
- } else {
- /* Replace positive portion with curpos */
- yasm_object *object =
- yasm_section_get_object(sect2);
- yasm_symtab *symtab = object->symtab;
- e->terms[j].data.sym =
- yasm_symtab_define_curpos
- (symtab, ".", expr_precbc, e->line);
- }
- break; /* stop looking */
- }
- }
- }
-
-
- if (j == e->numterms)
- return 1; /* We didn't find a match! */
- }
-
- /* Look for unmatched symrecs. If we've already found one or
- * we don't WANT to find one, error out.
- */
- for (i=0; i<e->numterms; i++) {
- if (e->terms[i].type == YASM_EXPR_SYM
- && (used & (1<<i)) == 0) {
- if (value->rel || ssym_not_ok)
- return 1;
- value->rel = e->terms[i].data.sym;
- /* and replace with 0 */
- e->terms[i].type = YASM_EXPR_INT;
- e->terms[i].data.intn = yasm_intnum_create_uint(0);
- }
- }
- break;
- case YASM_EXPR_SHR:
- /* Okay for single symrec in LHS and constant on RHS.
- * Single symrecs are not okay on RHS.
- * If RHS is non-constant, don't allow single symrec on LHS.
- * XXX: should rshift be an expr instead??
- */
-
- /* Check for single sym on LHS */
- if (e->terms[0].type != YASM_EXPR_SYM)
- break;
-
- /* If we already have a sym, we can't take another one */
- if (value->rel || ssym_not_ok)
- return 1;
-
- /* RHS must be a positive integer */
- if (e->terms[1].type != YASM_EXPR_INT)
- return 1; /* can't shift sym by non-constant integer */
- shamt = yasm_intnum_get_uint(e->terms[1].data.intn);
- if ((shamt + value->rshift) > YASM_VALUE_RSHIFT_MAX)
- return 1; /* total shift would be too large */
-
- /* Update value */
- value->rshift += shamt;
- value->rel = e->terms[0].data.sym;
-
- /* Replace symbol with 0 */
- e->terms[0].type = YASM_EXPR_INT;
- e->terms[0].data.intn = yasm_intnum_create_uint(0);
-
- /* Just leave SHR in place */
- break;
- case YASM_EXPR_SEG:
- /* Okay for single symrec (can only be done once).
- * Not okay for anything BUT a single symrec as an immediate
- * child.
- */
- if (e->terms[0].type != YASM_EXPR_SYM)
- return 1;
-
- if (value->seg_of)
- return 1; /* multiple SEG not legal */
- value->seg_of = 1;
-
- if (value->rel || ssym_not_ok)
- return 1; /* got a relative portion somewhere else? */
- value->rel = e->terms[0].data.sym;
-
- /* replace with ident'ed 0 */
- e->op = YASM_EXPR_IDENT;
- e->terms[0].type = YASM_EXPR_INT;
- e->terms[0].data.intn = yasm_intnum_create_uint(0);
- break;
- case YASM_EXPR_WRT:
- /* Okay for single symrec in LHS and either a register or single
- * symrec (as an immediate child) on RHS.
- * If a single symrec on RHS, can only be done once.
- * WRT reg is left in expr for arch to look at.
- */
-
- /* Handle RHS */
- switch (e->terms[1].type) {
- case YASM_EXPR_SYM:
- if (value->wrt)
- return 1;
- value->wrt = e->terms[1].data.sym;
- /* and drop the WRT portion */
- e->op = YASM_EXPR_IDENT;
- e->numterms = 1;
- break;
- case YASM_EXPR_REG:
- break; /* ignore */
- default:
- return 1;
- }
-
- /* Handle LHS */
- switch (e->terms[0].type) {
- case YASM_EXPR_SYM:
- if (value->rel || ssym_not_ok)
- return 1;
- value->rel = e->terms[0].data.sym;
- /* and replace with 0 */
- e->terms[0].type = YASM_EXPR_INT;
- e->terms[0].data.intn = yasm_intnum_create_uint(0);
- break;
- case YASM_EXPR_EXPR:
- /* recurse */
- return value_finalize_scan(value, e->terms[0].data.expn,
- expr_precbc, ssym_not_ok);
- default:
- break; /* ignore */
- }
-
- break;
- default:
- /* Single symrec not allowed anywhere */
- for (i=0; i<e->numterms; i++) {
- switch (e->terms[i].type) {
- case YASM_EXPR_SYM:
- return 1;
- case YASM_EXPR_EXPR:
- /* recurse */
- return value_finalize_scan(value,
- e->terms[i].data.expn,
- expr_precbc, 1);
- default:
- break;
- }
- }
- break;
- }
-
- return 0;
-}
-
-int
-yasm_value_finalize_expr(yasm_value *value, yasm_expr *e,
- yasm_bytecode *precbc, unsigned int size)
-{
- if (!e) {
- yasm_value_initialize(value, NULL, size);
- return 0;
- }
- yasm_value_initialize(value, e, size);
- return yasm_value_finalize(value, precbc);
-}
-
-int
-yasm_value_finalize(yasm_value *value, yasm_bytecode *precbc)
-{
- if (!value->abs)
- return 0;
-
- value->abs = yasm_expr__level_tree(value->abs, 1, 1, 0, 0, NULL, NULL);
-
- /* quit early if there was an issue in simplify() */
- if (yasm_error_occurred())
- return 1;
-
- /* Strip top-level AND masking to an all-1s mask the same size
- * of the value size. This allows forced avoidance of overflow warnings.
- */
- if (value->abs->op == YASM_EXPR_AND) {
- int term;
-
- /* Calculate 1<<size - 1 value */
- yasm_intnum *mask = yasm_intnum_create_uint(1);
- yasm_intnum *mask_tmp = yasm_intnum_create_uint(value->size);
- yasm_intnum_calc(mask, YASM_EXPR_SHL, mask_tmp);
- yasm_intnum_set_uint(mask_tmp, 1);
- yasm_intnum_calc(mask, YASM_EXPR_SUB, mask_tmp);
- yasm_intnum_destroy(mask_tmp);
-
- /* Walk terms and delete matching masks */
- for (term=value->abs->numterms-1; term>=0; term--) {
- if (value->abs->terms[term].type == YASM_EXPR_INT &&
- yasm_intnum_compare(value->abs->terms[term].data.intn,
- mask) == 0) {
- /* Delete the intnum */
- yasm_intnum_destroy(value->abs->terms[term].data.intn);
-
- /* Slide everything to its right over by 1 */
- if (term != value->abs->numterms-1) /* if it wasn't last.. */
- memmove(&value->abs->terms[term],
- &value->abs->terms[term+1],
- (value->abs->numterms-1-term)*
- sizeof(yasm_expr__item));
-
- /* Update numterms */
- value->abs->numterms--;
-
- /* Indicate warnings have been disabled */
- value->no_warn = 1;
- }
- }
- if (value->abs->numterms == 1)
- value->abs->op = YASM_EXPR_IDENT;
- yasm_intnum_destroy(mask);
- }
-
- /* Handle trivial (IDENT) cases immediately */
- if (value->abs->op == YASM_EXPR_IDENT) {
- switch (value->abs->terms[0].type) {
- case YASM_EXPR_INT:
- if (yasm_intnum_is_zero(value->abs->terms[0].data.intn)) {
- yasm_expr_destroy(value->abs);
- value->abs = NULL;
- }
- return 0;
- case YASM_EXPR_REG:
- case YASM_EXPR_FLOAT:
- return 0;
- case YASM_EXPR_SYM:
- value->rel = value->abs->terms[0].data.sym;
- yasm_expr_destroy(value->abs);
- value->abs = NULL;
- return 0;
- case YASM_EXPR_EXPR:
- /* Bring up lower values. */
- while (value->abs->op == YASM_EXPR_IDENT
- && value->abs->terms[0].type == YASM_EXPR_EXPR) {
- yasm_expr *sube = value->abs->terms[0].data.expn;
- yasm_xfree(value->abs);
- value->abs = sube;
- }
- break;
- default:
- yasm_internal_error(N_("unexpected expr term type"));
- }
- }
-
- if (value_finalize_scan(value, value->abs, precbc, 0))
- return 1;
-
- value->abs = yasm_expr__level_tree(value->abs, 1, 1, 0, 0, NULL, NULL);
-
- /* Simplify 0 in abs to NULL */
- if (value->abs->op == YASM_EXPR_IDENT
- && value->abs->terms[0].type == YASM_EXPR_INT
- && yasm_intnum_is_zero(value->abs->terms[0].data.intn)) {
- yasm_expr_destroy(value->abs);
- value->abs = NULL;
- }
- return 0;
-}
-
-yasm_intnum *
-yasm_value_get_intnum(yasm_value *value, yasm_bytecode *bc, int calc_bc_dist)
-{
- /*@dependent@*/ /*@null@*/ yasm_intnum *intn = NULL;
- /*@only@*/ yasm_intnum *outval;
- int sym_local;
-
- if (value->abs) {
- /* Handle integer expressions, if non-integer or too complex, return
- * NULL.
- */
- intn = yasm_expr_get_intnum(&value->abs, calc_bc_dist);
- if (!intn)
- return NULL;
- }
-
- if (value->rel) {
- /* If relative portion is not in bc section, return NULL.
- * Otherwise get the relative portion's offset.
- */
- /*@dependent@*/ yasm_bytecode *rel_prevbc;
- unsigned long dist;
-
- if (!bc)
- return NULL; /* Can't calculate relative value */
-
- sym_local = yasm_symrec_get_label(value->rel, &rel_prevbc);
- if (value->wrt || value->seg_of || value->section_rel || !sym_local)
- return NULL; /* we can't handle SEG, WRT, or external symbols */
- if (rel_prevbc->section != bc->section)
- return NULL; /* not in this section */
- if (!value->curpos_rel)
- return NULL; /* not PC-relative */
-
- /* Calculate value relative to current assembly position */
- dist = yasm_bc_next_offset(rel_prevbc);
- if (dist < bc->offset) {
- outval = yasm_intnum_create_uint(bc->offset - dist);
- yasm_intnum_calc(outval, YASM_EXPR_NEG, NULL);
- } else {
- dist -= bc->offset;
- outval = yasm_intnum_create_uint(dist);
- }
-
- if (value->rshift > 0) {
- /*@only@*/ yasm_intnum *shamt =
- yasm_intnum_create_uint((unsigned long)value->rshift);
- yasm_intnum_calc(outval, YASM_EXPR_SHR, shamt);
- yasm_intnum_destroy(shamt);
- }
- /* Add in absolute portion */
- if (intn)
- yasm_intnum_calc(outval, YASM_EXPR_ADD, intn);
- return outval;
- }
-
- if (intn)
- return yasm_intnum_copy(intn);
-
- /* No absolute or relative portions: output 0 */
- return yasm_intnum_create_uint(0);
-}
-
-int
-yasm_value_output_basic(yasm_value *value, /*@out@*/ unsigned char *buf,
- size_t destsize, yasm_bytecode *bc, int warn,
- yasm_arch *arch)
-{
- /*@dependent@*/ /*@null@*/ yasm_intnum *intn = NULL;
- /*@only@*/ yasm_intnum *outval;
- int sym_local;
- int retval = 1;
- unsigned int valsize = value->size;
-
- if (value->no_warn)
- warn = 0;
-
- if (value->abs) {
- /* Handle floating point expressions */
- if (!value->rel && value->abs->op == YASM_EXPR_IDENT
- && value->abs->terms[0].type == YASM_EXPR_FLOAT) {
- if (yasm_arch_floatnum_tobytes(arch, value->abs->terms[0].data.flt,
- buf, destsize, valsize, 0, warn))
- return -1;
- else
- return 1;
- }
-
- /* Check for complex float expressions */
- if (yasm_expr__contains(value->abs, YASM_EXPR_FLOAT)) {
- yasm_error_set(YASM_ERROR_FLOATING_POINT,
- N_("floating point expression too complex"));
- return -1;
- }
-
- /* Handle normal integer expressions */
- intn = yasm_expr_get_intnum(&value->abs, 1);
-
- if (!intn) {
- /* Second try before erroring: yasm_expr_get_intnum doesn't handle
- * SEG:OFF, so try simplifying out any to just the OFF portion,
- * then getting the intnum again.
- */
- yasm_expr *seg = yasm_expr_extract_deep_segoff(&value->abs);
- if (seg)
- yasm_expr_destroy(seg);
- intn = yasm_expr_get_intnum(&value->abs, 1);
- }
-
- if (!intn) {
- /* Still don't have an integer! */
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("expression too complex"));
- return -1;
- }
- }
-
- /* Adjust warn for signed/unsigned integer warnings */
- if (warn != 0)
- warn = value->sign ? -1 : 1;
-
- if (value->rel) {
- /* If relative portion is not in bc section, don't try to handle it
- * here. Otherwise get the relative portion's offset.
- */
- /*@dependent@*/ yasm_bytecode *rel_prevbc;
- unsigned long dist;
-
- sym_local = yasm_symrec_get_label(value->rel, &rel_prevbc);
- if (value->wrt || value->seg_of || value->section_rel || !sym_local)
- return 0; /* we can't handle SEG, WRT, or external symbols */
- if (rel_prevbc->section != bc->section)
- return 0; /* not in this section */
- if (!value->curpos_rel)
- return 0; /* not PC-relative */
-
- /* Calculate value relative to current assembly position */
- dist = yasm_bc_next_offset(rel_prevbc);
- if (dist < bc->offset) {
- outval = yasm_intnum_create_uint(bc->offset - dist);
- yasm_intnum_calc(outval, YASM_EXPR_NEG, NULL);
- } else {
- dist -= bc->offset;
- outval = yasm_intnum_create_uint(dist);
- }
-
- if (value->rshift > 0) {
- /*@only@*/ yasm_intnum *shamt =
- yasm_intnum_create_uint((unsigned long)value->rshift);
- yasm_intnum_calc(outval, YASM_EXPR_SHR, shamt);
- yasm_intnum_destroy(shamt);
- }
- /* Add in absolute portion */
- if (intn)
- yasm_intnum_calc(outval, YASM_EXPR_ADD, intn);
- /* Output! */
- if (yasm_arch_intnum_tobytes(arch, outval, buf, destsize, valsize, 0,
- bc, warn))
- retval = -1;
- yasm_intnum_destroy(outval);
- return retval;
- }
-
- if (value->seg_of || value->rshift || value->curpos_rel || value->ip_rel
- || value->section_rel)
- return 0; /* We can't handle this with just an absolute */
-
- if (intn) {
- /* Output just absolute portion */
- if (yasm_arch_intnum_tobytes(arch, intn, buf, destsize, valsize, 0, bc,
- warn))
- retval = -1;
- } else {
- /* No absolute or relative portions: output 0 */
- outval = yasm_intnum_create_uint(0);
- if (yasm_arch_intnum_tobytes(arch, outval, buf, destsize, valsize, 0,
- bc, warn))
- retval = -1;
- yasm_intnum_destroy(outval);
- }
- return retval;
-}
-
-void
-yasm_value_print(const yasm_value *value, FILE *f, int indent_level)
-{
- fprintf(f, "%*s%u-bit, %ssigned", indent_level, "", value->size,
- value->sign ? "" : "un");
- fprintf(f, "%*sAbsolute portion=", indent_level, "");
- yasm_expr_print(value->abs, f);
- fprintf(f, "\n");
- if (value->rel) {
- fprintf(f, "%*sRelative to=%s%s\n", indent_level, "",
- value->seg_of ? "SEG " : "",
- yasm_symrec_get_name(value->rel));
- if (value->wrt)
- fprintf(f, "%*s(With respect to=%s)\n", indent_level, "",
- yasm_symrec_get_name(value->wrt));
- if (value->rshift > 0)
- fprintf(f, "%*s(Right shifted by=%u)\n", indent_level, "",
- value->rshift);
- if (value->curpos_rel)
- fprintf(f, "%*s(Relative to current position)\n", indent_level,
- "");
- if (value->ip_rel)
- fprintf(f, "%*s(IP-relative)\n", indent_level, "");
- if (value->jump_target)
- fprintf(f, "%*s(Jump target)\n", indent_level, "");
- if (value->section_rel)
- fprintf(f, "%*s(Section-relative)\n", indent_level, "");
- if (value->no_warn)
- fprintf(f, "%*s(Overflow warnings disabled)\n", indent_level, "");
- }
-}
+/*
+ * Value handling
+ *
+ * Copyright (C) 2006-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "util.h"
+
+#include "libyasm-stdint.h"
+#include "coretype.h"
+#include "bitvect.h"
+
+#include "errwarn.h"
+#include "intnum.h"
+#include "floatnum.h"
+#include "expr.h"
+#include "value.h"
+#include "symrec.h"
+
+#include "bytecode.h"
+#include "section.h"
+
+#include "arch.h"
+
+
+void
+yasm_value_initialize(/*@out@*/ yasm_value *value,
+ /*@null@*/ /*@kept@*/ yasm_expr *e, unsigned int size)
+{
+ value->abs = e;
+ value->rel = NULL;
+ value->wrt = NULL;
+ value->seg_of = 0;
+ value->rshift = 0;
+ value->curpos_rel = 0;
+ value->ip_rel = 0;
+ value->jump_target = 0;
+ value->section_rel = 0;
+ value->no_warn = 0;
+ value->sign = 0;
+ value->size = size;
+}
+
+void
+yasm_value_init_sym(/*@out@*/ yasm_value *value, /*@null@*/ yasm_symrec *sym,
+ unsigned int size)
+{
+ value->abs = NULL;
+ value->rel = sym;
+ value->wrt = NULL;
+ value->seg_of = 0;
+ value->rshift = 0;
+ value->curpos_rel = 0;
+ value->ip_rel = 0;
+ value->jump_target = 0;
+ value->section_rel = 0;
+ value->no_warn = 0;
+ value->sign = 0;
+ value->size = size;
+}
+
+void
+yasm_value_init_copy(yasm_value *value, const yasm_value *orig)
+{
+ value->abs = orig->abs ? yasm_expr_copy(orig->abs) : NULL;
+ value->rel = orig->rel;
+ value->wrt = orig->wrt;
+ value->seg_of = orig->seg_of;
+ value->rshift = orig->rshift;
+ value->curpos_rel = orig->curpos_rel;
+ value->ip_rel = orig->ip_rel;
+ value->jump_target = orig->jump_target;
+ value->section_rel = orig->section_rel;
+ value->no_warn = orig->no_warn;
+ value->sign = orig->sign;
+ value->size = orig->size;
+}
+
+void
+yasm_value_delete(yasm_value *value)
+{
+ if (value->abs)
+ yasm_expr_destroy(value->abs);
+ value->abs = NULL;
+ value->rel = NULL;
+}
+
+void
+yasm_value_set_curpos_rel(yasm_value *value, yasm_bytecode *bc,
+ unsigned int ip_rel)
+{
+ value->curpos_rel = 1;
+ value->ip_rel = ip_rel;
+ /* In order for us to correctly output curpos-relative values, we must
+ * have a relative portion of the value. If one doesn't exist, point
+ * to a custom absolute symbol.
+ */
+ if (!value->rel) {
+ yasm_object *object = yasm_section_get_object(yasm_bc_get_section(bc));
+ value->rel = yasm_symtab_abs_sym(object->symtab);
+ }
+}
+
+static int
+value_finalize_scan(yasm_value *value, yasm_expr *e,
+ /*@null@*/ yasm_bytecode *expr_precbc, int ssym_not_ok)
+{
+ int i;
+ /*@dependent@*/ yasm_section *sect;
+ /*@dependent@*/ /*@null@*/ yasm_bytecode *precbc;
+
+ unsigned long shamt; /* for SHR */
+
+ /* Yes, this has a maximum upper bound on 32 terms, based on an
+ * "insane number of terms" (and ease of implementation) WAG.
+ * The right way to do this would be a stack-based alloca, but that's
+ * not ISO C. We really don't want to malloc here as this function is
+ * hit a lot!
+ *
+ * This is a bitmask to keep things small, as this is a recursive
+ * routine and we don't want to eat up stack space.
+ */
+ unsigned long used; /* for ADD */
+
+ /* Thanks to this running after a simplify, we don't need to iterate
+ * down through IDENTs or handle SUB.
+ *
+ * We scan for a single symrec, gathering info along the way. After
+ * we've found the symrec, we keep scanning but error if we find
+ * another one. We pull out the single symrec and any legal operations
+ * performed on it.
+ *
+ * Also, if we find a float anywhere, we don't allow mixing of a single
+ * symrec with it.
+ */
+ switch (e->op) {
+ case YASM_EXPR_ADD:
+ /* Okay for single symrec anywhere in expr.
+ * Check for single symrec anywhere.
+ * Handle symrec-symrec by checking for (-1*symrec)
+ * and symrec term pairs (where both symrecs are in the same
+ * segment).
+ */
+ if (e->numterms > 32)
+ yasm__fatal(N_("expression on line %d has too many add terms;"
+ " internal limit of 32"), e->line);
+
+ used = 0;
+
+ for (i=0; i<e->numterms; i++) {
+ int j;
+ yasm_expr *sube;
+ yasm_intnum *intn;
+ yasm_symrec *sym;
+ /*@dependent@*/ yasm_section *sect2;
+ /*@dependent@*/ /*@null@*/ yasm_bytecode *precbc2;
+
+ /* First look for an (-1*symrec) term */
+ if (e->terms[i].type != YASM_EXPR_EXPR)
+ continue;
+ sube = e->terms[i].data.expn;
+
+ if (sube->op != YASM_EXPR_MUL || sube->numterms != 2) {
+ /* recurse instead */
+ if (value_finalize_scan(value, sube, expr_precbc,
+ ssym_not_ok))
+ return 1;
+ continue;
+ }
+
+ if (sube->terms[0].type == YASM_EXPR_INT &&
+ sube->terms[1].type == YASM_EXPR_SYM) {
+ intn = sube->terms[0].data.intn;
+ sym = sube->terms[1].data.sym;
+ } else if (sube->terms[0].type == YASM_EXPR_SYM &&
+ sube->terms[1].type == YASM_EXPR_INT) {
+ sym = sube->terms[0].data.sym;
+ intn = sube->terms[1].data.intn;
+ } else {
+ if (value_finalize_scan(value, sube, expr_precbc,
+ ssym_not_ok))
+ return 1;
+ continue;
+ }
+
+ if (!yasm_intnum_is_neg1(intn)) {
+ if (value_finalize_scan(value, sube, expr_precbc,
+ ssym_not_ok))
+ return 1;
+ continue;
+ }
+
+ /* Look for the same symrec term; even if both are external,
+ * they should cancel out.
+ */
+ for (j=0; j<e->numterms; j++) {
+ if (e->terms[j].type == YASM_EXPR_SYM
+ && e->terms[j].data.sym == sym
+ && (used & (1<<j)) == 0) {
+ /* Mark as used */
+ used |= 1<<j;
+
+ /* Replace both symrec portions with 0 */
+ yasm_expr_destroy(sube);
+ e->terms[i].type = YASM_EXPR_INT;
+ e->terms[i].data.intn = yasm_intnum_create_uint(0);
+ e->terms[j].type = YASM_EXPR_INT;
+ e->terms[j].data.intn = yasm_intnum_create_uint(0);
+
+ break; /* stop looking */
+ }
+ }
+ if (j != e->numterms)
+ continue;
+
+ if (!yasm_symrec_get_label(sym, &precbc)) {
+ if (value_finalize_scan(value, sube, expr_precbc,
+ ssym_not_ok))
+ return 1;
+ continue;
+ }
+ sect2 = yasm_bc_get_section(precbc);
+
+ /* Now look for a unused symrec term in the same segment */
+ for (j=0; j<e->numterms; j++) {
+ if (e->terms[j].type == YASM_EXPR_SYM
+ && yasm_symrec_get_label(e->terms[j].data.sym,
+ &precbc2)
+ && (sect = yasm_bc_get_section(precbc2))
+ && sect == sect2
+ && (used & (1<<j)) == 0) {
+ /* Mark as used */
+ used |= 1<<j;
+ break; /* stop looking */
+ }
+ }
+
+ /* We didn't match in the same segment. If the
+ * -1*symrec is actually -1*curpos, we can match
+ * unused symrec terms in other segments and generate
+ * a curpos-relative reloc.
+ *
+ * Similarly, handle -1*symrec in other segment via the
+ * following transformation:
+ * other-this = (other-.)+(.-this)
+ * We can only do this transformation if "this" is in
+ * this expr's segment.
+ *
+ * Don't do this if we've already become curpos-relative.
+ * The unmatched symrec will be caught below.
+ */
+ if (j == e->numterms && !value->curpos_rel
+ && (yasm_symrec_is_curpos(sym)
+ || (expr_precbc
+ && sect2 == yasm_bc_get_section(expr_precbc)))) {
+ for (j=0; j<e->numterms; j++) {
+ if (e->terms[j].type == YASM_EXPR_SYM
+ && !yasm_symrec_get_equ(e->terms[j].data.sym)
+ && !yasm_symrec_is_special(e->terms[j].data.sym)
+ && (used & (1<<j)) == 0) {
+ /* Mark as used */
+ used |= 1<<j;
+ /* Mark value as curpos-relative */
+ if (value->rel || ssym_not_ok)
+ return 1;
+ value->rel = e->terms[j].data.sym;
+ value->curpos_rel = 1;
+ if (yasm_symrec_is_curpos(sym)) {
+ /* Replace both symrec portions with 0 */
+ yasm_expr_destroy(sube);
+ e->terms[i].type = YASM_EXPR_INT;
+ e->terms[i].data.intn =
+ yasm_intnum_create_uint(0);
+ e->terms[j].type = YASM_EXPR_INT;
+ e->terms[j].data.intn =
+ yasm_intnum_create_uint(0);
+ } else {
+ /* Replace positive portion with curpos */
+ yasm_object *object =
+ yasm_section_get_object(sect2);
+ yasm_symtab *symtab = object->symtab;
+ e->terms[j].data.sym =
+ yasm_symtab_define_curpos
+ (symtab, ".", expr_precbc, e->line);
+ }
+ break; /* stop looking */
+ }
+ }
+ }
+
+
+ if (j == e->numterms)
+ return 1; /* We didn't find a match! */
+ }
+
+ /* Look for unmatched symrecs. If we've already found one or
+ * we don't WANT to find one, error out.
+ */
+ for (i=0; i<e->numterms; i++) {
+ if (e->terms[i].type == YASM_EXPR_SYM
+ && (used & (1<<i)) == 0) {
+ if (value->rel || ssym_not_ok)
+ return 1;
+ value->rel = e->terms[i].data.sym;
+ /* and replace with 0 */
+ e->terms[i].type = YASM_EXPR_INT;
+ e->terms[i].data.intn = yasm_intnum_create_uint(0);
+ }
+ }
+ break;
+ case YASM_EXPR_SHR:
+ /* Okay for single symrec in LHS and constant on RHS.
+ * Single symrecs are not okay on RHS.
+ * If RHS is non-constant, don't allow single symrec on LHS.
+ * XXX: should rshift be an expr instead??
+ */
+
+ /* Check for single sym on LHS */
+ if (e->terms[0].type != YASM_EXPR_SYM)
+ break;
+
+ /* If we already have a sym, we can't take another one */
+ if (value->rel || ssym_not_ok)
+ return 1;
+
+ /* RHS must be a positive integer */
+ if (e->terms[1].type != YASM_EXPR_INT)
+ return 1; /* can't shift sym by non-constant integer */
+ shamt = yasm_intnum_get_uint(e->terms[1].data.intn);
+ if ((shamt + value->rshift) > YASM_VALUE_RSHIFT_MAX)
+ return 1; /* total shift would be too large */
+
+ /* Update value */
+ value->rshift += shamt;
+ value->rel = e->terms[0].data.sym;
+
+ /* Replace symbol with 0 */
+ e->terms[0].type = YASM_EXPR_INT;
+ e->terms[0].data.intn = yasm_intnum_create_uint(0);
+
+ /* Just leave SHR in place */
+ break;
+ case YASM_EXPR_SEG:
+ /* Okay for single symrec (can only be done once).
+ * Not okay for anything BUT a single symrec as an immediate
+ * child.
+ */
+ if (e->terms[0].type != YASM_EXPR_SYM)
+ return 1;
+
+ if (value->seg_of)
+ return 1; /* multiple SEG not legal */
+ value->seg_of = 1;
+
+ if (value->rel || ssym_not_ok)
+ return 1; /* got a relative portion somewhere else? */
+ value->rel = e->terms[0].data.sym;
+
+ /* replace with ident'ed 0 */
+ e->op = YASM_EXPR_IDENT;
+ e->terms[0].type = YASM_EXPR_INT;
+ e->terms[0].data.intn = yasm_intnum_create_uint(0);
+ break;
+ case YASM_EXPR_WRT:
+ /* Okay for single symrec in LHS and either a register or single
+ * symrec (as an immediate child) on RHS.
+ * If a single symrec on RHS, can only be done once.
+ * WRT reg is left in expr for arch to look at.
+ */
+
+ /* Handle RHS */
+ switch (e->terms[1].type) {
+ case YASM_EXPR_SYM:
+ if (value->wrt)
+ return 1;
+ value->wrt = e->terms[1].data.sym;
+ /* and drop the WRT portion */
+ e->op = YASM_EXPR_IDENT;
+ e->numterms = 1;
+ break;
+ case YASM_EXPR_REG:
+ break; /* ignore */
+ default:
+ return 1;
+ }
+
+ /* Handle LHS */
+ switch (e->terms[0].type) {
+ case YASM_EXPR_SYM:
+ if (value->rel || ssym_not_ok)
+ return 1;
+ value->rel = e->terms[0].data.sym;
+ /* and replace with 0 */
+ e->terms[0].type = YASM_EXPR_INT;
+ e->terms[0].data.intn = yasm_intnum_create_uint(0);
+ break;
+ case YASM_EXPR_EXPR:
+ /* recurse */
+ return value_finalize_scan(value, e->terms[0].data.expn,
+ expr_precbc, ssym_not_ok);
+ default:
+ break; /* ignore */
+ }
+
+ break;
+ default:
+ /* Single symrec not allowed anywhere */
+ for (i=0; i<e->numterms; i++) {
+ switch (e->terms[i].type) {
+ case YASM_EXPR_SYM:
+ return 1;
+ case YASM_EXPR_EXPR:
+ /* recurse */
+ return value_finalize_scan(value,
+ e->terms[i].data.expn,
+ expr_precbc, 1);
+ default:
+ break;
+ }
+ }
+ break;
+ }
+
+ return 0;
+}
+
+int
+yasm_value_finalize_expr(yasm_value *value, yasm_expr *e,
+ yasm_bytecode *precbc, unsigned int size)
+{
+ if (!e) {
+ yasm_value_initialize(value, NULL, size);
+ return 0;
+ }
+ yasm_value_initialize(value, e, size);
+ return yasm_value_finalize(value, precbc);
+}
+
+int
+yasm_value_finalize(yasm_value *value, yasm_bytecode *precbc)
+{
+ if (!value->abs)
+ return 0;
+
+ value->abs = yasm_expr__level_tree(value->abs, 1, 1, 0, 0, NULL, NULL);
+
+ /* quit early if there was an issue in simplify() */
+ if (yasm_error_occurred())
+ return 1;
+
+ /* Strip top-level AND masking to an all-1s mask the same size
+ * of the value size. This allows forced avoidance of overflow warnings.
+ */
+ if (value->abs->op == YASM_EXPR_AND) {
+ int term;
+
+ /* Calculate 1<<size - 1 value */
+ yasm_intnum *mask = yasm_intnum_create_uint(1);
+ yasm_intnum *mask_tmp = yasm_intnum_create_uint(value->size);
+ yasm_intnum_calc(mask, YASM_EXPR_SHL, mask_tmp);
+ yasm_intnum_set_uint(mask_tmp, 1);
+ yasm_intnum_calc(mask, YASM_EXPR_SUB, mask_tmp);
+ yasm_intnum_destroy(mask_tmp);
+
+ /* Walk terms and delete matching masks */
+ for (term=value->abs->numterms-1; term>=0; term--) {
+ if (value->abs->terms[term].type == YASM_EXPR_INT &&
+ yasm_intnum_compare(value->abs->terms[term].data.intn,
+ mask) == 0) {
+ /* Delete the intnum */
+ yasm_intnum_destroy(value->abs->terms[term].data.intn);
+
+ /* Slide everything to its right over by 1 */
+ if (term != value->abs->numterms-1) /* if it wasn't last.. */
+ memmove(&value->abs->terms[term],
+ &value->abs->terms[term+1],
+ (value->abs->numterms-1-term)*
+ sizeof(yasm_expr__item));
+
+ /* Update numterms */
+ value->abs->numterms--;
+
+ /* Indicate warnings have been disabled */
+ value->no_warn = 1;
+ }
+ }
+ if (value->abs->numterms == 1)
+ value->abs->op = YASM_EXPR_IDENT;
+ yasm_intnum_destroy(mask);
+ }
+
+ /* Handle trivial (IDENT) cases immediately */
+ if (value->abs->op == YASM_EXPR_IDENT) {
+ switch (value->abs->terms[0].type) {
+ case YASM_EXPR_INT:
+ if (yasm_intnum_is_zero(value->abs->terms[0].data.intn)) {
+ yasm_expr_destroy(value->abs);
+ value->abs = NULL;
+ }
+ return 0;
+ case YASM_EXPR_REG:
+ case YASM_EXPR_FLOAT:
+ return 0;
+ case YASM_EXPR_SYM:
+ value->rel = value->abs->terms[0].data.sym;
+ yasm_expr_destroy(value->abs);
+ value->abs = NULL;
+ return 0;
+ case YASM_EXPR_EXPR:
+ /* Bring up lower values. */
+ while (value->abs->op == YASM_EXPR_IDENT
+ && value->abs->terms[0].type == YASM_EXPR_EXPR) {
+ yasm_expr *sube = value->abs->terms[0].data.expn;
+ yasm_xfree(value->abs);
+ value->abs = sube;
+ }
+ break;
+ default:
+ yasm_internal_error(N_("unexpected expr term type"));
+ }
+ }
+
+ if (value_finalize_scan(value, value->abs, precbc, 0))
+ return 1;
+
+ value->abs = yasm_expr__level_tree(value->abs, 1, 1, 0, 0, NULL, NULL);
+
+ /* Simplify 0 in abs to NULL */
+ if (value->abs->op == YASM_EXPR_IDENT
+ && value->abs->terms[0].type == YASM_EXPR_INT
+ && yasm_intnum_is_zero(value->abs->terms[0].data.intn)) {
+ yasm_expr_destroy(value->abs);
+ value->abs = NULL;
+ }
+ return 0;
+}
+
+yasm_intnum *
+yasm_value_get_intnum(yasm_value *value, yasm_bytecode *bc, int calc_bc_dist)
+{
+ /*@dependent@*/ /*@null@*/ yasm_intnum *intn = NULL;
+ /*@only@*/ yasm_intnum *outval;
+ int sym_local;
+
+ if (value->abs) {
+ /* Handle integer expressions, if non-integer or too complex, return
+ * NULL.
+ */
+ intn = yasm_expr_get_intnum(&value->abs, calc_bc_dist);
+ if (!intn)
+ return NULL;
+ }
+
+ if (value->rel) {
+ /* If relative portion is not in bc section, return NULL.
+ * Otherwise get the relative portion's offset.
+ */
+ /*@dependent@*/ yasm_bytecode *rel_prevbc;
+ unsigned long dist;
+
+ if (!bc)
+ return NULL; /* Can't calculate relative value */
+
+ sym_local = yasm_symrec_get_label(value->rel, &rel_prevbc);
+ if (value->wrt || value->seg_of || value->section_rel || !sym_local)
+ return NULL; /* we can't handle SEG, WRT, or external symbols */
+ if (rel_prevbc->section != bc->section)
+ return NULL; /* not in this section */
+ if (!value->curpos_rel)
+ return NULL; /* not PC-relative */
+
+ /* Calculate value relative to current assembly position */
+ dist = yasm_bc_next_offset(rel_prevbc);
+ if (dist < bc->offset) {
+ outval = yasm_intnum_create_uint(bc->offset - dist);
+ yasm_intnum_calc(outval, YASM_EXPR_NEG, NULL);
+ } else {
+ dist -= bc->offset;
+ outval = yasm_intnum_create_uint(dist);
+ }
+
+ if (value->rshift > 0) {
+ /*@only@*/ yasm_intnum *shamt =
+ yasm_intnum_create_uint((unsigned long)value->rshift);
+ yasm_intnum_calc(outval, YASM_EXPR_SHR, shamt);
+ yasm_intnum_destroy(shamt);
+ }
+ /* Add in absolute portion */
+ if (intn)
+ yasm_intnum_calc(outval, YASM_EXPR_ADD, intn);
+ return outval;
+ }
+
+ if (intn)
+ return yasm_intnum_copy(intn);
+
+ /* No absolute or relative portions: output 0 */
+ return yasm_intnum_create_uint(0);
+}
+
+int
+yasm_value_output_basic(yasm_value *value, /*@out@*/ unsigned char *buf,
+ size_t destsize, yasm_bytecode *bc, int warn,
+ yasm_arch *arch)
+{
+ /*@dependent@*/ /*@null@*/ yasm_intnum *intn = NULL;
+ /*@only@*/ yasm_intnum *outval;
+ int sym_local;
+ int retval = 1;
+ unsigned int valsize = value->size;
+
+ if (value->no_warn)
+ warn = 0;
+
+ if (value->abs) {
+ /* Handle floating point expressions */
+ if (!value->rel && value->abs->op == YASM_EXPR_IDENT
+ && value->abs->terms[0].type == YASM_EXPR_FLOAT) {
+ if (yasm_arch_floatnum_tobytes(arch, value->abs->terms[0].data.flt,
+ buf, destsize, valsize, 0, warn))
+ return -1;
+ else
+ return 1;
+ }
+
+ /* Check for complex float expressions */
+ if (yasm_expr__contains(value->abs, YASM_EXPR_FLOAT)) {
+ yasm_error_set(YASM_ERROR_FLOATING_POINT,
+ N_("floating point expression too complex"));
+ return -1;
+ }
+
+ /* Handle normal integer expressions */
+ intn = yasm_expr_get_intnum(&value->abs, 1);
+
+ if (!intn) {
+ /* Second try before erroring: yasm_expr_get_intnum doesn't handle
+ * SEG:OFF, so try simplifying out any to just the OFF portion,
+ * then getting the intnum again.
+ */
+ yasm_expr *seg = yasm_expr_extract_deep_segoff(&value->abs);
+ if (seg)
+ yasm_expr_destroy(seg);
+ intn = yasm_expr_get_intnum(&value->abs, 1);
+ }
+
+ if (!intn) {
+ /* Still don't have an integer! */
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("expression too complex"));
+ return -1;
+ }
+ }
+
+ /* Adjust warn for signed/unsigned integer warnings */
+ if (warn != 0)
+ warn = value->sign ? -1 : 1;
+
+ if (value->rel) {
+ /* If relative portion is not in bc section, don't try to handle it
+ * here. Otherwise get the relative portion's offset.
+ */
+ /*@dependent@*/ yasm_bytecode *rel_prevbc;
+ unsigned long dist;
+
+ sym_local = yasm_symrec_get_label(value->rel, &rel_prevbc);
+ if (value->wrt || value->seg_of || value->section_rel || !sym_local)
+ return 0; /* we can't handle SEG, WRT, or external symbols */
+ if (rel_prevbc->section != bc->section)
+ return 0; /* not in this section */
+ if (!value->curpos_rel)
+ return 0; /* not PC-relative */
+
+ /* Calculate value relative to current assembly position */
+ dist = yasm_bc_next_offset(rel_prevbc);
+ if (dist < bc->offset) {
+ outval = yasm_intnum_create_uint(bc->offset - dist);
+ yasm_intnum_calc(outval, YASM_EXPR_NEG, NULL);
+ } else {
+ dist -= bc->offset;
+ outval = yasm_intnum_create_uint(dist);
+ }
+
+ if (value->rshift > 0) {
+ /*@only@*/ yasm_intnum *shamt =
+ yasm_intnum_create_uint((unsigned long)value->rshift);
+ yasm_intnum_calc(outval, YASM_EXPR_SHR, shamt);
+ yasm_intnum_destroy(shamt);
+ }
+ /* Add in absolute portion */
+ if (intn)
+ yasm_intnum_calc(outval, YASM_EXPR_ADD, intn);
+ /* Output! */
+ if (yasm_arch_intnum_tobytes(arch, outval, buf, destsize, valsize, 0,
+ bc, warn))
+ retval = -1;
+ yasm_intnum_destroy(outval);
+ return retval;
+ }
+
+ if (value->seg_of || value->rshift || value->curpos_rel || value->ip_rel
+ || value->section_rel)
+ return 0; /* We can't handle this with just an absolute */
+
+ if (intn) {
+ /* Output just absolute portion */
+ if (yasm_arch_intnum_tobytes(arch, intn, buf, destsize, valsize, 0, bc,
+ warn))
+ retval = -1;
+ } else {
+ /* No absolute or relative portions: output 0 */
+ outval = yasm_intnum_create_uint(0);
+ if (yasm_arch_intnum_tobytes(arch, outval, buf, destsize, valsize, 0,
+ bc, warn))
+ retval = -1;
+ yasm_intnum_destroy(outval);
+ }
+ return retval;
+}
+
+void
+yasm_value_print(const yasm_value *value, FILE *f, int indent_level)
+{
+ fprintf(f, "%*s%u-bit, %ssigned", indent_level, "", value->size,
+ value->sign ? "" : "un");
+ fprintf(f, "%*sAbsolute portion=", indent_level, "");
+ yasm_expr_print(value->abs, f);
+ fprintf(f, "\n");
+ if (value->rel) {
+ fprintf(f, "%*sRelative to=%s%s\n", indent_level, "",
+ value->seg_of ? "SEG " : "",
+ yasm_symrec_get_name(value->rel));
+ if (value->wrt)
+ fprintf(f, "%*s(With respect to=%s)\n", indent_level, "",
+ yasm_symrec_get_name(value->wrt));
+ if (value->rshift > 0)
+ fprintf(f, "%*s(Right shifted by=%u)\n", indent_level, "",
+ value->rshift);
+ if (value->curpos_rel)
+ fprintf(f, "%*s(Relative to current position)\n", indent_level,
+ "");
+ if (value->ip_rel)
+ fprintf(f, "%*s(IP-relative)\n", indent_level, "");
+ if (value->jump_target)
+ fprintf(f, "%*s(Jump target)\n", indent_level, "");
+ if (value->section_rel)
+ fprintf(f, "%*s(Section-relative)\n", indent_level, "");
+ if (value->no_warn)
+ fprintf(f, "%*s(Overflow warnings disabled)\n", indent_level, "");
+ }
+}
diff --git a/contrib/tools/yasm/libyasm/value.h b/contrib/tools/yasm/libyasm/value.h
index 8582bf1add..4dc294bcc3 100644
--- a/contrib/tools/yasm/libyasm/value.h
+++ b/contrib/tools/yasm/libyasm/value.h
@@ -1,172 +1,172 @@
-/**
- * \file libyasm/value.h
- * \brief YASM value interface.
- *
- * \license
- * Copyright (C) 2006-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- * \endlicense
- */
-#ifndef YASM_VALUE_H
-#define YASM_VALUE_H
-
-#ifndef YASM_LIB_DECL
-#define YASM_LIB_DECL
-#endif
-
-/** Initialize a #yasm_value with just an expression. No processing is
- * performed, the expression is simply stuck into value.abs and the other
- * fields are initialized. Use yasm_expr_extract_value() to perform "smart"
- * processing into a #yasm_value. This function is intended for use during
- * parsing simply to ensure all fields of the value are initialized; after
- * the parse is complete, yasm_value_extract() should be called to finalize
- * the value. The value defaults to unsigned.
- * \param value value to be initialized
- * \param e expression (kept)
- * \param size value size (in bits)
- */
-YASM_LIB_DECL
-void yasm_value_initialize(/*@out@*/ yasm_value *value,
- /*@null@*/ /*@kept@*/ yasm_expr *e,
- unsigned int size);
-
-/** Initialize a #yasm_value with just a symrec. No processing is performed,
- * the symrec is simply stuck into value.rel and the other fields are
- * initialized.
- * \param value value to be initialized
- * \param sym symrec
- * \param size value size (in bits)
- */
-YASM_LIB_DECL
-void yasm_value_init_sym(/*@out@*/ yasm_value *value,
- /*@null@*/ yasm_symrec *sym, unsigned int size);
-
-/** Initialize a #yasm_value as a copy of another yasm_value. Any expressions
- * within orig are copied, so it's safe to delete the copy.
- * \param value value (copy to create)
- * \param orig original value
- */
-YASM_LIB_DECL
-void yasm_value_init_copy(yasm_value *value, const yasm_value *orig);
-
-/** Frees any memory inside value; does not free value itself.
- * \param value value
- */
-YASM_LIB_DECL
-void yasm_value_delete(yasm_value *value);
-
-/** Set a value to be relative to the current assembly position rather than
- * relative to the section start.
- * \param value value
- * \param bc bytecode containing value
- * \param ip_rel if nonzero, indicates IP-relative data relocation,
- * sometimes used to generate special relocations
- * \note If value is just an absolute value, will get an absolute symrec to
- * reference to (via bc's symbol table).
- */
-YASM_LIB_DECL
-void yasm_value_set_curpos_rel(yasm_value *value, yasm_bytecode *bc,
- unsigned int ip_rel);
-
-/** Perform yasm_value_finalize_expr() on a value that already exists from
- * being initialized with yasm_value_initialize().
- * \param value value
- * \param precbc previous bytecode to bytecode containing value
- * \return Nonzero if value could not be split.
- */
-YASM_LIB_DECL
-int yasm_value_finalize(yasm_value *value, /*@null@*/ yasm_bytecode *precbc);
-
-/** Break a #yasm_expr into a #yasm_value constituent parts. Extracts
- * the relative portion of the value, SEG and WRT portions, and top-level
- * right shift, if any. Places the remaining expr into the absolute
- * portion of the value. Essentially a combination of yasm_value_initialize()
- * and yasm_value_finalize(). First expands references to symrecs in
- * absolute sections by expanding with the absolute section start plus the
- * symrec offset within the absolute section.
- * \param value value to store split portions into
- * \param e expression input
- * \param precbc previous bytecode to bytecode containing expression
- * \param size value size (in bits)
- * \return Nonzero if the expr could not be split into a value for some
- * reason (e.g. the relative portion was not added, but multiplied,
- * etc).
- * \warning Do not use e after this call. Even if an error is returned, e
- * is stored into value.
- * \note This should only be called after the parse is complete. Calling
- * before the parse is complete will usually result in an error return.
- */
-YASM_LIB_DECL
-int yasm_value_finalize_expr(/*@out@*/ yasm_value *value,
- /*@null@*/ /*@kept@*/ yasm_expr *e,
- /*@null@*/ yasm_bytecode *precbc,
- unsigned int size);
-
-/** Get value if absolute or PC-relative section-local relative. Returns NULL
- * otherwise.
- * \param value value
- * \param bc current bytecode (for PC-relative calculation); if
- * NULL, NULL is returned for PC-relative values.
- * \param calc_bc_dist if nonzero, calculates bytecode distances in absolute
- * portion of value
- * \note Adds in value.rel (correctly) if PC-relative and in the same section
- * as bc (and there is no WRT or SEG).
- * \return Intnum if can be resolved to integer value, otherwise NULL.
- */
-YASM_LIB_DECL
-/*@null@*/ /*@only@*/ yasm_intnum *yasm_value_get_intnum
- (yasm_value *value, /*@null@*/ yasm_bytecode *bc, int calc_bc_dist);
-
-/** Output value if constant or PC-relative section-local. This should be
- * used from objfmt yasm_output_value_func() functions.
- * functions.
- * \param value value
- * \param buf buffer for byte representation
- * \param destsize destination size (in bytes)
- * \param bc current bytecode (usually passed into higher-level
- * calling function)
- * \param warn enables standard warnings: zero for none;
- * nonzero for overflow/underflow floating point and
- * integer warnings
- * \param arch architecture
- * \note Adds in value.rel (correctly) if PC-relative and in the same section
- * as bc (and there is no WRT or SEG); if this is not the desired
- * behavior, e.g. a reloc is needed in this case, don't use this
- * function!
- * \return 0 if no value output due to value needing relocation;
- * 1 if value output; -1 if error.
- */
-YASM_LIB_DECL
-int yasm_value_output_basic
- (yasm_value *value, /*@out@*/ unsigned char *buf, size_t destsize,
- yasm_bytecode *bc, int warn, yasm_arch *arch);
-
-/** Print a value. For debugging purposes.
- * \param value value
- * \param indent_level indentation level
- * \param f file
- */
-YASM_LIB_DECL
-void yasm_value_print(const yasm_value *value, FILE *f, int indent_level);
-
-#endif
+/**
+ * \file libyasm/value.h
+ * \brief YASM value interface.
+ *
+ * \license
+ * Copyright (C) 2006-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * - Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ * \endlicense
+ */
+#ifndef YASM_VALUE_H
+#define YASM_VALUE_H
+
+#ifndef YASM_LIB_DECL
+#define YASM_LIB_DECL
+#endif
+
+/** Initialize a #yasm_value with just an expression. No processing is
+ * performed, the expression is simply stuck into value.abs and the other
+ * fields are initialized. Use yasm_expr_extract_value() to perform "smart"
+ * processing into a #yasm_value. This function is intended for use during
+ * parsing simply to ensure all fields of the value are initialized; after
+ * the parse is complete, yasm_value_extract() should be called to finalize
+ * the value. The value defaults to unsigned.
+ * \param value value to be initialized
+ * \param e expression (kept)
+ * \param size value size (in bits)
+ */
+YASM_LIB_DECL
+void yasm_value_initialize(/*@out@*/ yasm_value *value,
+ /*@null@*/ /*@kept@*/ yasm_expr *e,
+ unsigned int size);
+
+/** Initialize a #yasm_value with just a symrec. No processing is performed,
+ * the symrec is simply stuck into value.rel and the other fields are
+ * initialized.
+ * \param value value to be initialized
+ * \param sym symrec
+ * \param size value size (in bits)
+ */
+YASM_LIB_DECL
+void yasm_value_init_sym(/*@out@*/ yasm_value *value,
+ /*@null@*/ yasm_symrec *sym, unsigned int size);
+
+/** Initialize a #yasm_value as a copy of another yasm_value. Any expressions
+ * within orig are copied, so it's safe to delete the copy.
+ * \param value value (copy to create)
+ * \param orig original value
+ */
+YASM_LIB_DECL
+void yasm_value_init_copy(yasm_value *value, const yasm_value *orig);
+
+/** Frees any memory inside value; does not free value itself.
+ * \param value value
+ */
+YASM_LIB_DECL
+void yasm_value_delete(yasm_value *value);
+
+/** Set a value to be relative to the current assembly position rather than
+ * relative to the section start.
+ * \param value value
+ * \param bc bytecode containing value
+ * \param ip_rel if nonzero, indicates IP-relative data relocation,
+ * sometimes used to generate special relocations
+ * \note If value is just an absolute value, will get an absolute symrec to
+ * reference to (via bc's symbol table).
+ */
+YASM_LIB_DECL
+void yasm_value_set_curpos_rel(yasm_value *value, yasm_bytecode *bc,
+ unsigned int ip_rel);
+
+/** Perform yasm_value_finalize_expr() on a value that already exists from
+ * being initialized with yasm_value_initialize().
+ * \param value value
+ * \param precbc previous bytecode to bytecode containing value
+ * \return Nonzero if value could not be split.
+ */
+YASM_LIB_DECL
+int yasm_value_finalize(yasm_value *value, /*@null@*/ yasm_bytecode *precbc);
+
+/** Break a #yasm_expr into a #yasm_value constituent parts. Extracts
+ * the relative portion of the value, SEG and WRT portions, and top-level
+ * right shift, if any. Places the remaining expr into the absolute
+ * portion of the value. Essentially a combination of yasm_value_initialize()
+ * and yasm_value_finalize(). First expands references to symrecs in
+ * absolute sections by expanding with the absolute section start plus the
+ * symrec offset within the absolute section.
+ * \param value value to store split portions into
+ * \param e expression input
+ * \param precbc previous bytecode to bytecode containing expression
+ * \param size value size (in bits)
+ * \return Nonzero if the expr could not be split into a value for some
+ * reason (e.g. the relative portion was not added, but multiplied,
+ * etc).
+ * \warning Do not use e after this call. Even if an error is returned, e
+ * is stored into value.
+ * \note This should only be called after the parse is complete. Calling
+ * before the parse is complete will usually result in an error return.
+ */
+YASM_LIB_DECL
+int yasm_value_finalize_expr(/*@out@*/ yasm_value *value,
+ /*@null@*/ /*@kept@*/ yasm_expr *e,
+ /*@null@*/ yasm_bytecode *precbc,
+ unsigned int size);
+
+/** Get value if absolute or PC-relative section-local relative. Returns NULL
+ * otherwise.
+ * \param value value
+ * \param bc current bytecode (for PC-relative calculation); if
+ * NULL, NULL is returned for PC-relative values.
+ * \param calc_bc_dist if nonzero, calculates bytecode distances in absolute
+ * portion of value
+ * \note Adds in value.rel (correctly) if PC-relative and in the same section
+ * as bc (and there is no WRT or SEG).
+ * \return Intnum if can be resolved to integer value, otherwise NULL.
+ */
+YASM_LIB_DECL
+/*@null@*/ /*@only@*/ yasm_intnum *yasm_value_get_intnum
+ (yasm_value *value, /*@null@*/ yasm_bytecode *bc, int calc_bc_dist);
+
+/** Output value if constant or PC-relative section-local. This should be
+ * used from objfmt yasm_output_value_func() functions.
+ * functions.
+ * \param value value
+ * \param buf buffer for byte representation
+ * \param destsize destination size (in bytes)
+ * \param bc current bytecode (usually passed into higher-level
+ * calling function)
+ * \param warn enables standard warnings: zero for none;
+ * nonzero for overflow/underflow floating point and
+ * integer warnings
+ * \param arch architecture
+ * \note Adds in value.rel (correctly) if PC-relative and in the same section
+ * as bc (and there is no WRT or SEG); if this is not the desired
+ * behavior, e.g. a reloc is needed in this case, don't use this
+ * function!
+ * \return 0 if no value output due to value needing relocation;
+ * 1 if value output; -1 if error.
+ */
+YASM_LIB_DECL
+int yasm_value_output_basic
+ (yasm_value *value, /*@out@*/ unsigned char *buf, size_t destsize,
+ yasm_bytecode *bc, int warn, yasm_arch *arch);
+
+/** Print a value. For debugging purposes.
+ * \param value value
+ * \param indent_level indentation level
+ * \param f file
+ */
+YASM_LIB_DECL
+void yasm_value_print(const yasm_value *value, FILE *f, int indent_level);
+
+#endif
diff --git a/contrib/tools/yasm/libyasm/xmalloc.c b/contrib/tools/yasm/libyasm/xmalloc.c
index 8931a42b30..81b608c078 100644
--- a/contrib/tools/yasm/libyasm/xmalloc.c
+++ b/contrib/tools/yasm/libyasm/xmalloc.c
@@ -1,114 +1,114 @@
-/*
- * Memory allocation routines with error checking. Idea from GNU libiberty.
- *
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include "util.h"
-
-#include "coretype.h"
-#include "errwarn.h"
-
-
-#ifdef WITH_DMALLOC
-#undef yasm_xmalloc
-#undef yasm_xcalloc
-#undef yasm_xrealloc
-#undef yasm_xfree
-#endif
-
-static /*@only@*/ /*@out@*/ void *def_xmalloc(size_t size);
-static /*@only@*/ void *def_xcalloc(size_t nelem, size_t elsize);
-static /*@only@*/ void *def_xrealloc
- (/*@only@*/ /*@out@*/ /*@returned@*/ /*@null@*/ void *oldmem, size_t size)
- /*@modifies oldmem@*/;
-static void def_xfree(/*@only@*/ /*@out@*/ /*@null@*/ void *p)
- /*@modifies p@*/;
-
-/* storage for global function pointers */
-YASM_LIB_DECL
-/*@only@*/ /*@out@*/ void * (*yasm_xmalloc) (size_t size) = def_xmalloc;
-YASM_LIB_DECL
-/*@only@*/ void * (*yasm_xcalloc) (size_t nelem, size_t elsize) = def_xcalloc;
-YASM_LIB_DECL
-/*@only@*/ void * (*yasm_xrealloc)
- (/*@only@*/ /*@out@*/ /*@returned@*/ /*@null@*/ void *oldmem, size_t size)
- /*@modifies oldmem@*/ = def_xrealloc;
-YASM_LIB_DECL
-void (*yasm_xfree) (/*@only@*/ /*@out@*/ /*@null@*/ void *p)
- /*@modifies p@*/ = def_xfree;
-
-
-static void *
-def_xmalloc(size_t size)
-{
- void *newmem;
-
- if (size == 0)
- size = 1;
- newmem = malloc(size);
- if (!newmem)
- yasm__fatal(N_("out of memory"));
-
- return newmem;
-}
-
-static void *
-def_xcalloc(size_t nelem, size_t elsize)
-{
- void *newmem;
-
- if (nelem == 0 || elsize == 0)
- nelem = elsize = 1;
-
- newmem = calloc(nelem, elsize);
- if (!newmem)
- yasm__fatal(N_("out of memory"));
-
- return newmem;
-}
-
-static void *
-def_xrealloc(void *oldmem, size_t size)
-{
- void *newmem;
-
- if (size == 0)
- size = 1;
- if (!oldmem)
- newmem = malloc(size);
- else
- newmem = realloc(oldmem, size);
- if (!newmem)
- yasm__fatal(N_("out of memory"));
-
- return newmem;
-}
-
-static void
-def_xfree(void *p)
-{
- if (!p)
- return;
- free(p);
-}
+/*
+ * Memory allocation routines with error checking. Idea from GNU libiberty.
+ *
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "util.h"
+
+#include "coretype.h"
+#include "errwarn.h"
+
+
+#ifdef WITH_DMALLOC
+#undef yasm_xmalloc
+#undef yasm_xcalloc
+#undef yasm_xrealloc
+#undef yasm_xfree
+#endif
+
+static /*@only@*/ /*@out@*/ void *def_xmalloc(size_t size);
+static /*@only@*/ void *def_xcalloc(size_t nelem, size_t elsize);
+static /*@only@*/ void *def_xrealloc
+ (/*@only@*/ /*@out@*/ /*@returned@*/ /*@null@*/ void *oldmem, size_t size)
+ /*@modifies oldmem@*/;
+static void def_xfree(/*@only@*/ /*@out@*/ /*@null@*/ void *p)
+ /*@modifies p@*/;
+
+/* storage for global function pointers */
+YASM_LIB_DECL
+/*@only@*/ /*@out@*/ void * (*yasm_xmalloc) (size_t size) = def_xmalloc;
+YASM_LIB_DECL
+/*@only@*/ void * (*yasm_xcalloc) (size_t nelem, size_t elsize) = def_xcalloc;
+YASM_LIB_DECL
+/*@only@*/ void * (*yasm_xrealloc)
+ (/*@only@*/ /*@out@*/ /*@returned@*/ /*@null@*/ void *oldmem, size_t size)
+ /*@modifies oldmem@*/ = def_xrealloc;
+YASM_LIB_DECL
+void (*yasm_xfree) (/*@only@*/ /*@out@*/ /*@null@*/ void *p)
+ /*@modifies p@*/ = def_xfree;
+
+
+static void *
+def_xmalloc(size_t size)
+{
+ void *newmem;
+
+ if (size == 0)
+ size = 1;
+ newmem = malloc(size);
+ if (!newmem)
+ yasm__fatal(N_("out of memory"));
+
+ return newmem;
+}
+
+static void *
+def_xcalloc(size_t nelem, size_t elsize)
+{
+ void *newmem;
+
+ if (nelem == 0 || elsize == 0)
+ nelem = elsize = 1;
+
+ newmem = calloc(nelem, elsize);
+ if (!newmem)
+ yasm__fatal(N_("out of memory"));
+
+ return newmem;
+}
+
+static void *
+def_xrealloc(void *oldmem, size_t size)
+{
+ void *newmem;
+
+ if (size == 0)
+ size = 1;
+ if (!oldmem)
+ newmem = malloc(size);
+ else
+ newmem = realloc(oldmem, size);
+ if (!newmem)
+ yasm__fatal(N_("out of memory"));
+
+ return newmem;
+}
+
+static void
+def_xfree(void *p)
+{
+ if (!p)
+ return;
+ free(p);
+}
diff --git a/contrib/tools/yasm/libyasm/xstrdup.c b/contrib/tools/yasm/libyasm/xstrdup.c
index 5932efcbdf..b187704f0e 100644
--- a/contrib/tools/yasm/libyasm/xstrdup.c
+++ b/contrib/tools/yasm/libyasm/xstrdup.c
@@ -1,68 +1,68 @@
-/*
- * strdup() implementation with error checking (using xmalloc).
- *
- * Copyright (c) 1988, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-#include "util.h"
-
-#include "coretype.h"
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "@(#)strdup.c 8.1 (Berkeley) 6/4/93";
-#endif /* LIBC_SCCS and not lint */
-
-
-#ifdef WITH_DMALLOC
-#undef yasm__xstrdup
-#endif
-
-char *
-yasm__xstrdup(const char *str)
-{
- size_t len;
- char *copy;
-
- len = strlen(str) + 1;
- copy = yasm_xmalloc(len);
- memcpy(copy, str, len);
- return (copy);
-}
-
-char *
-yasm__xstrndup(const char *str, size_t max)
-{
- size_t len = 0;
- char *copy;
-
- while (len < max && str[len] != '\0')
- len++;
- copy = yasm_xmalloc(len+1);
- memcpy(copy, str, len);
- copy[len] = '\0';
- return (copy);
-}
+/*
+ * strdup() implementation with error checking (using xmalloc).
+ *
+ * Copyright (c) 1988, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#include "util.h"
+
+#include "coretype.h"
+
+#if defined(LIBC_SCCS) && !defined(lint)
+static char sccsid[] = "@(#)strdup.c 8.1 (Berkeley) 6/4/93";
+#endif /* LIBC_SCCS and not lint */
+
+
+#ifdef WITH_DMALLOC
+#undef yasm__xstrdup
+#endif
+
+char *
+yasm__xstrdup(const char *str)
+{
+ size_t len;
+ char *copy;
+
+ len = strlen(str) + 1;
+ copy = yasm_xmalloc(len);
+ memcpy(copy, str, len);
+ return (copy);
+}
+
+char *
+yasm__xstrndup(const char *str, size_t max)
+{
+ size_t len = 0;
+ char *copy;
+
+ while (len < max && str[len] != '\0')
+ len++;
+ copy = yasm_xmalloc(len+1);
+ memcpy(copy, str, len);
+ copy[len] = '\0';
+ return (copy);
+}
diff --git a/contrib/tools/yasm/modules/arch/lc3b/lc3barch.c b/contrib/tools/yasm/modules/arch/lc3b/lc3barch.c
index e9b1ce9dde..051452862f 100644
--- a/contrib/tools/yasm/modules/arch/lc3b/lc3barch.c
+++ b/contrib/tools/yasm/modules/arch/lc3b/lc3barch.c
@@ -1,212 +1,212 @@
-/*
- * LC-3b architecture description
- *
- * Copyright (C) 2003-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <libyasm.h>
-
-#include "lc3barch.h"
-
-
-yasm_arch_module yasm_lc3b_LTX_arch;
-
-
-static /*@only@*/ yasm_arch *
-lc3b_create(const char *machine, const char *parser,
- /*@out@*/ yasm_arch_create_error *error)
-{
- yasm_arch_base *arch;
-
- *error = YASM_ARCH_CREATE_OK;
-
- if (yasm__strcasecmp(machine, "lc3b") != 0) {
- *error = YASM_ARCH_CREATE_BAD_MACHINE;
- return NULL;
- }
-
- if (yasm__strcasecmp(parser, "nasm") != 0) {
- *error = YASM_ARCH_CREATE_BAD_PARSER;
- return NULL;
- }
-
- arch = yasm_xmalloc(sizeof(yasm_arch_base));
- arch->module = &yasm_lc3b_LTX_arch;
- return (yasm_arch *)arch;
-}
-
-static void
-lc3b_destroy(/*@only@*/ yasm_arch *arch)
-{
- yasm_xfree(arch);
-}
-
-static const char *
-lc3b_get_machine(/*@unused@*/ const yasm_arch *arch)
-{
- return "lc3b";
-}
-
-static unsigned int
-lc3b_get_address_size(/*@unused@*/ const yasm_arch *arch)
-{
- return 16;
-}
-
-static int
-lc3b_set_var(yasm_arch *arch, const char *var, unsigned long val)
-{
- return 1;
-}
-
-static const unsigned char **
-lc3b_get_fill(const yasm_arch *arch)
-{
- /* NOP pattern is all 0's per LC-3b Assembler 3.50 output */
- static const unsigned char *fill[16] = {
- NULL, /* unused */
- NULL, /* 1 - illegal; all opcodes are 2 bytes long */
- (const unsigned char *)
- "\x00\x00", /* 4 */
- NULL, /* 3 - illegal */
- (const unsigned char *)
- "\x00\x00\x00\x00", /* 4 */
- NULL, /* 5 - illegal */
- (const unsigned char *)
- "\x00\x00\x00\x00\x00\x00", /* 6 */
- NULL, /* 7 - illegal */
- (const unsigned char *)
- "\x00\x00\x00\x00\x00\x00" /* 8 */
- "\x00\x00",
- NULL, /* 9 - illegal */
- (const unsigned char *)
- "\x00\x00\x00\x00\x00\x00" /* 10 */
- "\x00\x00\x00\x00",
- NULL, /* 11 - illegal */
- (const unsigned char *)
- "\x00\x00\x00\x00\x00\x00" /* 12 */
- "\x00\x00\x00\x00\x00\x00",
- NULL, /* 13 - illegal */
- (const unsigned char *)
- "\x00\x00\x00\x00\x00\x00" /* 14 */
- "\x00\x00\x00\x00\x00\x00\x00\x00",
- NULL /* 15 - illegal */
- };
- return fill;
-}
-
-static unsigned int
-lc3b_get_reg_size(/*@unused@*/ yasm_arch *arch, /*@unused@*/ uintptr_t reg)
-{
- return 16;
-}
-
-static uintptr_t
-lc3b_reggroup_get_reg(/*@unused@*/ yasm_arch *arch,
- /*@unused@*/ uintptr_t reggroup,
- /*@unused@*/ unsigned long regindex)
-{
- return 0;
-}
-
-static void
-lc3b_reg_print(/*@unused@*/ yasm_arch *arch, uintptr_t reg, FILE *f)
-{
- fprintf(f, "r%u", (unsigned int)(reg&7));
-}
-
-static int
-lc3b_floatnum_tobytes(yasm_arch *arch, const yasm_floatnum *flt,
- unsigned char *buf, size_t destsize, size_t valsize,
- size_t shift, int warn)
-{
- yasm_error_set(YASM_ERROR_FLOATING_POINT,
- N_("LC-3b does not support floating point"));
- return 1;
-}
-
-static yasm_effaddr *
-lc3b_ea_create_expr(yasm_arch *arch, yasm_expr *e)
-{
- yasm_effaddr *ea = yasm_xmalloc(sizeof(yasm_effaddr));
- yasm_value_initialize(&ea->disp, e, 0);
- ea->need_nonzero_len = 0;
- ea->need_disp = 1;
- ea->nosplit = 0;
- ea->strong = 0;
- ea->segreg = 0;
- ea->pc_rel = 0;
- ea->not_pc_rel = 0;
- return ea;
-}
-
-void
-yasm_lc3b__ea_destroy(/*@only@*/ yasm_effaddr *ea)
-{
- yasm_value_delete(&ea->disp);
- yasm_xfree(ea);
-}
-
-static void
-lc3b_ea_print(const yasm_effaddr *ea, FILE *f, int indent_level)
-{
- fprintf(f, "%*sDisp:\n", indent_level, "");
- yasm_value_print(&ea->disp, f, indent_level+1);
-}
-
-/* Define lc3b machines -- see arch.h for details */
-static yasm_arch_machine lc3b_machines[] = {
- { "LC-3b", "lc3b" },
- { NULL, NULL }
-};
-
-/* Define arch structure -- see arch.h for details */
-yasm_arch_module yasm_lc3b_LTX_arch = {
- "LC-3b",
- "lc3b",
- NULL,
- lc3b_create,
- lc3b_destroy,
- lc3b_get_machine,
- lc3b_get_address_size,
- lc3b_set_var,
- yasm_lc3b__parse_check_insnprefix,
- yasm_lc3b__parse_check_regtmod,
- lc3b_get_fill,
- lc3b_floatnum_tobytes,
- yasm_lc3b__intnum_tobytes,
- lc3b_get_reg_size,
- lc3b_reggroup_get_reg,
- lc3b_reg_print,
- NULL, /*yasm_lc3b__segreg_print*/
- lc3b_ea_create_expr,
- yasm_lc3b__ea_destroy,
- lc3b_ea_print,
- yasm_lc3b__create_empty_insn,
- lc3b_machines,
- "lc3b",
- 16,
- 2
-};
+/*
+ * LC-3b architecture description
+ *
+ * Copyright (C) 2003-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <libyasm.h>
+
+#include "lc3barch.h"
+
+
+yasm_arch_module yasm_lc3b_LTX_arch;
+
+
+static /*@only@*/ yasm_arch *
+lc3b_create(const char *machine, const char *parser,
+ /*@out@*/ yasm_arch_create_error *error)
+{
+ yasm_arch_base *arch;
+
+ *error = YASM_ARCH_CREATE_OK;
+
+ if (yasm__strcasecmp(machine, "lc3b") != 0) {
+ *error = YASM_ARCH_CREATE_BAD_MACHINE;
+ return NULL;
+ }
+
+ if (yasm__strcasecmp(parser, "nasm") != 0) {
+ *error = YASM_ARCH_CREATE_BAD_PARSER;
+ return NULL;
+ }
+
+ arch = yasm_xmalloc(sizeof(yasm_arch_base));
+ arch->module = &yasm_lc3b_LTX_arch;
+ return (yasm_arch *)arch;
+}
+
+static void
+lc3b_destroy(/*@only@*/ yasm_arch *arch)
+{
+ yasm_xfree(arch);
+}
+
+static const char *
+lc3b_get_machine(/*@unused@*/ const yasm_arch *arch)
+{
+ return "lc3b";
+}
+
+static unsigned int
+lc3b_get_address_size(/*@unused@*/ const yasm_arch *arch)
+{
+ return 16;
+}
+
+static int
+lc3b_set_var(yasm_arch *arch, const char *var, unsigned long val)
+{
+ return 1;
+}
+
+static const unsigned char **
+lc3b_get_fill(const yasm_arch *arch)
+{
+ /* NOP pattern is all 0's per LC-3b Assembler 3.50 output */
+ static const unsigned char *fill[16] = {
+ NULL, /* unused */
+ NULL, /* 1 - illegal; all opcodes are 2 bytes long */
+ (const unsigned char *)
+ "\x00\x00", /* 4 */
+ NULL, /* 3 - illegal */
+ (const unsigned char *)
+ "\x00\x00\x00\x00", /* 4 */
+ NULL, /* 5 - illegal */
+ (const unsigned char *)
+ "\x00\x00\x00\x00\x00\x00", /* 6 */
+ NULL, /* 7 - illegal */
+ (const unsigned char *)
+ "\x00\x00\x00\x00\x00\x00" /* 8 */
+ "\x00\x00",
+ NULL, /* 9 - illegal */
+ (const unsigned char *)
+ "\x00\x00\x00\x00\x00\x00" /* 10 */
+ "\x00\x00\x00\x00",
+ NULL, /* 11 - illegal */
+ (const unsigned char *)
+ "\x00\x00\x00\x00\x00\x00" /* 12 */
+ "\x00\x00\x00\x00\x00\x00",
+ NULL, /* 13 - illegal */
+ (const unsigned char *)
+ "\x00\x00\x00\x00\x00\x00" /* 14 */
+ "\x00\x00\x00\x00\x00\x00\x00\x00",
+ NULL /* 15 - illegal */
+ };
+ return fill;
+}
+
+static unsigned int
+lc3b_get_reg_size(/*@unused@*/ yasm_arch *arch, /*@unused@*/ uintptr_t reg)
+{
+ return 16;
+}
+
+static uintptr_t
+lc3b_reggroup_get_reg(/*@unused@*/ yasm_arch *arch,
+ /*@unused@*/ uintptr_t reggroup,
+ /*@unused@*/ unsigned long regindex)
+{
+ return 0;
+}
+
+static void
+lc3b_reg_print(/*@unused@*/ yasm_arch *arch, uintptr_t reg, FILE *f)
+{
+ fprintf(f, "r%u", (unsigned int)(reg&7));
+}
+
+static int
+lc3b_floatnum_tobytes(yasm_arch *arch, const yasm_floatnum *flt,
+ unsigned char *buf, size_t destsize, size_t valsize,
+ size_t shift, int warn)
+{
+ yasm_error_set(YASM_ERROR_FLOATING_POINT,
+ N_("LC-3b does not support floating point"));
+ return 1;
+}
+
+static yasm_effaddr *
+lc3b_ea_create_expr(yasm_arch *arch, yasm_expr *e)
+{
+ yasm_effaddr *ea = yasm_xmalloc(sizeof(yasm_effaddr));
+ yasm_value_initialize(&ea->disp, e, 0);
+ ea->need_nonzero_len = 0;
+ ea->need_disp = 1;
+ ea->nosplit = 0;
+ ea->strong = 0;
+ ea->segreg = 0;
+ ea->pc_rel = 0;
+ ea->not_pc_rel = 0;
+ return ea;
+}
+
+void
+yasm_lc3b__ea_destroy(/*@only@*/ yasm_effaddr *ea)
+{
+ yasm_value_delete(&ea->disp);
+ yasm_xfree(ea);
+}
+
+static void
+lc3b_ea_print(const yasm_effaddr *ea, FILE *f, int indent_level)
+{
+ fprintf(f, "%*sDisp:\n", indent_level, "");
+ yasm_value_print(&ea->disp, f, indent_level+1);
+}
+
+/* Define lc3b machines -- see arch.h for details */
+static yasm_arch_machine lc3b_machines[] = {
+ { "LC-3b", "lc3b" },
+ { NULL, NULL }
+};
+
+/* Define arch structure -- see arch.h for details */
+yasm_arch_module yasm_lc3b_LTX_arch = {
+ "LC-3b",
+ "lc3b",
+ NULL,
+ lc3b_create,
+ lc3b_destroy,
+ lc3b_get_machine,
+ lc3b_get_address_size,
+ lc3b_set_var,
+ yasm_lc3b__parse_check_insnprefix,
+ yasm_lc3b__parse_check_regtmod,
+ lc3b_get_fill,
+ lc3b_floatnum_tobytes,
+ yasm_lc3b__intnum_tobytes,
+ lc3b_get_reg_size,
+ lc3b_reggroup_get_reg,
+ lc3b_reg_print,
+ NULL, /*yasm_lc3b__segreg_print*/
+ lc3b_ea_create_expr,
+ yasm_lc3b__ea_destroy,
+ lc3b_ea_print,
+ yasm_lc3b__create_empty_insn,
+ lc3b_machines,
+ "lc3b",
+ 16,
+ 2
+};
diff --git a/contrib/tools/yasm/modules/arch/lc3b/lc3barch.h b/contrib/tools/yasm/modules/arch/lc3b/lc3barch.h
index 745dffc335..9ded8cbef7 100644
--- a/contrib/tools/yasm/modules/arch/lc3b/lc3barch.h
+++ b/contrib/tools/yasm/modules/arch/lc3b/lc3barch.h
@@ -1,70 +1,70 @@
-/*
- * LC-3b Architecture header file
- *
- * Copyright (C) 2003-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef YASM_LC3BARCH_H
-#define YASM_LC3BARCH_H
-
-/* Types of immediate. All immediates are stored in the LSBs of the insn. */
-typedef enum lc3b_imm_type {
- LC3B_IMM_NONE = 0, /* no immediate */
- LC3B_IMM_4, /* 4-bit */
- LC3B_IMM_5, /* 5-bit */
- LC3B_IMM_6_WORD, /* 6-bit, word-multiple (byte>>1) */
- LC3B_IMM_6_BYTE, /* 6-bit, byte-multiple */
- LC3B_IMM_8, /* 8-bit, word-multiple (byte>>1) */
- LC3B_IMM_9, /* 9-bit, signed, word-multiple (byte>>1) */
- LC3B_IMM_9_PC /* 9-bit, signed, word-multiple, PC relative */
-} lc3b_imm_type;
-
-/* Bytecode types */
-
-typedef struct lc3b_insn {
- yasm_value imm; /* immediate or relative value */
- lc3b_imm_type imm_type; /* size of the immediate */
-
- unsigned int opcode; /* opcode */
-} lc3b_insn;
-
-void yasm_lc3b__bc_transform_insn(yasm_bytecode *bc, lc3b_insn *insn);
-
-yasm_arch_insnprefix yasm_lc3b__parse_check_insnprefix
- (yasm_arch *arch, const char *id, size_t id_len, unsigned long line,
- /*@out@*/ /*@only@*/ yasm_bytecode **bc, /*@out@*/ uintptr_t *prefix);
-yasm_arch_regtmod yasm_lc3b__parse_check_regtmod
- (yasm_arch *arch, const char *id, size_t id_len,
- /*@out@*/ uintptr_t *data);
-
-int yasm_lc3b__intnum_tobytes
- (yasm_arch *arch, const yasm_intnum *intn, unsigned char *buf,
- size_t destsize, size_t valsize, int shift, const yasm_bytecode *bc,
- int warn);
-
-/*@only@*/ yasm_bytecode *yasm_lc3b__create_empty_insn(yasm_arch *arch,
- unsigned long line);
-
-void yasm_lc3b__ea_destroy(/*@only@*/ yasm_effaddr *ea);
-
-#endif
+/*
+ * LC-3b Architecture header file
+ *
+ * Copyright (C) 2003-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef YASM_LC3BARCH_H
+#define YASM_LC3BARCH_H
+
+/* Types of immediate. All immediates are stored in the LSBs of the insn. */
+typedef enum lc3b_imm_type {
+ LC3B_IMM_NONE = 0, /* no immediate */
+ LC3B_IMM_4, /* 4-bit */
+ LC3B_IMM_5, /* 5-bit */
+ LC3B_IMM_6_WORD, /* 6-bit, word-multiple (byte>>1) */
+ LC3B_IMM_6_BYTE, /* 6-bit, byte-multiple */
+ LC3B_IMM_8, /* 8-bit, word-multiple (byte>>1) */
+ LC3B_IMM_9, /* 9-bit, signed, word-multiple (byte>>1) */
+ LC3B_IMM_9_PC /* 9-bit, signed, word-multiple, PC relative */
+} lc3b_imm_type;
+
+/* Bytecode types */
+
+typedef struct lc3b_insn {
+ yasm_value imm; /* immediate or relative value */
+ lc3b_imm_type imm_type; /* size of the immediate */
+
+ unsigned int opcode; /* opcode */
+} lc3b_insn;
+
+void yasm_lc3b__bc_transform_insn(yasm_bytecode *bc, lc3b_insn *insn);
+
+yasm_arch_insnprefix yasm_lc3b__parse_check_insnprefix
+ (yasm_arch *arch, const char *id, size_t id_len, unsigned long line,
+ /*@out@*/ /*@only@*/ yasm_bytecode **bc, /*@out@*/ uintptr_t *prefix);
+yasm_arch_regtmod yasm_lc3b__parse_check_regtmod
+ (yasm_arch *arch, const char *id, size_t id_len,
+ /*@out@*/ uintptr_t *data);
+
+int yasm_lc3b__intnum_tobytes
+ (yasm_arch *arch, const yasm_intnum *intn, unsigned char *buf,
+ size_t destsize, size_t valsize, int shift, const yasm_bytecode *bc,
+ int warn);
+
+/*@only@*/ yasm_bytecode *yasm_lc3b__create_empty_insn(yasm_arch *arch,
+ unsigned long line);
+
+void yasm_lc3b__ea_destroy(/*@only@*/ yasm_effaddr *ea);
+
+#endif
diff --git a/contrib/tools/yasm/modules/arch/lc3b/lc3bbc.c b/contrib/tools/yasm/modules/arch/lc3b/lc3bbc.c
index fb8a46d100..d077c7c5fb 100644
--- a/contrib/tools/yasm/modules/arch/lc3b/lc3bbc.c
+++ b/contrib/tools/yasm/modules/arch/lc3b/lc3bbc.c
@@ -1,249 +1,249 @@
-/*
- * LC-3b bytecode utility functions
- *
- * Copyright (C) 2003-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <libyasm.h>
-
-#include "lc3barch.h"
-
-
-/* Bytecode callback function prototypes */
-
-static void lc3b_bc_insn_destroy(void *contents);
-static void lc3b_bc_insn_print(const void *contents, FILE *f,
- int indent_level);
-static int lc3b_bc_insn_calc_len(yasm_bytecode *bc,
- yasm_bc_add_span_func add_span,
- void *add_span_data);
-static int lc3b_bc_insn_expand(yasm_bytecode *bc, int span, long old_val,
- long new_val, /*@out@*/ long *neg_thres,
- /*@out@*/ long *pos_thres);
-static int lc3b_bc_insn_tobytes(yasm_bytecode *bc, unsigned char **bufp,
- unsigned char *bufstart,
- void *d, yasm_output_value_func output_value,
- /*@null@*/ yasm_output_reloc_func output_reloc);
-
-/* Bytecode callback structures */
-
-static const yasm_bytecode_callback lc3b_bc_callback_insn = {
- lc3b_bc_insn_destroy,
- lc3b_bc_insn_print,
- yasm_bc_finalize_common,
- NULL,
- lc3b_bc_insn_calc_len,
- lc3b_bc_insn_expand,
- lc3b_bc_insn_tobytes,
- 0
-};
-
-
-void
-yasm_lc3b__bc_transform_insn(yasm_bytecode *bc, lc3b_insn *insn)
-{
- yasm_bc_transform(bc, &lc3b_bc_callback_insn, insn);
-}
-
-static void
-lc3b_bc_insn_destroy(void *contents)
-{
- lc3b_insn *insn = (lc3b_insn *)contents;
- yasm_value_delete(&insn->imm);
- yasm_xfree(contents);
-}
-
-static void
-lc3b_bc_insn_print(const void *contents, FILE *f, int indent_level)
-{
- const lc3b_insn *insn = (const lc3b_insn *)contents;
-
- fprintf(f, "%*s_Instruction_\n", indent_level, "");
- fprintf(f, "%*sImmediate Value:", indent_level, "");
- if (!insn->imm.abs)
- fprintf(f, " (nil)\n");
- else {
- indent_level++;
- fprintf(f, "\n");
- yasm_value_print(&insn->imm, f, indent_level);
- fprintf(f, "%*sType=", indent_level, "");
- switch (insn->imm_type) {
- case LC3B_IMM_NONE:
- fprintf(f, "NONE-SHOULDN'T HAPPEN");
- break;
- case LC3B_IMM_4:
- fprintf(f, "4-bit");
- break;
- case LC3B_IMM_5:
- fprintf(f, "5-bit");
- break;
- case LC3B_IMM_6_WORD:
- fprintf(f, "6-bit, word-multiple");
- break;
- case LC3B_IMM_6_BYTE:
- fprintf(f, "6-bit, byte-multiple");
- break;
- case LC3B_IMM_8:
- fprintf(f, "8-bit, word-multiple");
- break;
- case LC3B_IMM_9:
- fprintf(f, "9-bit, signed, word-multiple");
- break;
- case LC3B_IMM_9_PC:
- fprintf(f, "9-bit, signed, word-multiple, PC-relative");
- break;
- }
- indent_level--;
- }
- /* FIXME
- fprintf(f, "\n%*sOrigin=", indent_level, "");
- if (insn->origin) {
- fprintf(f, "\n");
- yasm_symrec_print(insn->origin, f, indent_level+1);
- } else
- fprintf(f, "(nil)\n");
- */
- fprintf(f, "%*sOpcode: %04x\n", indent_level, "",
- (unsigned int)insn->opcode);
-}
-
-static int
-lc3b_bc_insn_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
- void *add_span_data)
-{
- lc3b_insn *insn = (lc3b_insn *)bc->contents;
- yasm_bytecode *target_prevbc;
-
- /* Fixed size instruction length */
- bc->len += 2;
-
- /* Only need to worry about out-of-range to PC-relative */
- if (insn->imm_type != LC3B_IMM_9_PC)
- return 0;
-
- if (insn->imm.rel
- && (!yasm_symrec_get_label(insn->imm.rel, &target_prevbc)
- || target_prevbc->section != bc->section)) {
- /* External or out of segment, so we can't check distance. */
- return 0;
- }
-
- /* 9-bit signed, word-multiple displacement */
- add_span(add_span_data, bc, 1, &insn->imm, -512+(long)bc->len,
- 511+(long)bc->len);
- return 0;
-}
-
-static int
-lc3b_bc_insn_expand(yasm_bytecode *bc, int span, long old_val, long new_val,
- /*@out@*/ long *neg_thres, /*@out@*/ long *pos_thres)
-{
- yasm_error_set(YASM_ERROR_VALUE, N_("jump target out of range"));
- return -1;
-}
-
-static int
-lc3b_bc_insn_tobytes(yasm_bytecode *bc, unsigned char **bufp,
- unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- /*@unused@*/ yasm_output_reloc_func output_reloc)
-{
- lc3b_insn *insn = (lc3b_insn *)bc->contents;
- /*@only@*/ yasm_intnum *delta;
- unsigned long buf_off = (unsigned long)(*bufp - bufstart);
-
- /* Output opcode */
- YASM_SAVE_16_L(*bufp, insn->opcode);
-
- /* Insert immediate into opcode. */
- switch (insn->imm_type) {
- case LC3B_IMM_NONE:
- break;
- case LC3B_IMM_4:
- insn->imm.size = 4;
- if (output_value(&insn->imm, *bufp, 2, buf_off, bc, 1, d))
- return 1;
- break;
- case LC3B_IMM_5:
- insn->imm.size = 5;
- insn->imm.sign = 1;
- if (output_value(&insn->imm, *bufp, 2, buf_off, bc, 1, d))
- return 1;
- break;
- case LC3B_IMM_6_WORD:
- insn->imm.size = 6;
- if (output_value(&insn->imm, *bufp, 2, buf_off, bc, 1, d))
- return 1;
- break;
- case LC3B_IMM_6_BYTE:
- insn->imm.size = 6;
- insn->imm.sign = 1;
- if (output_value(&insn->imm, *bufp, 2, buf_off, bc, 1, d))
- return 1;
- break;
- case LC3B_IMM_8:
- insn->imm.size = 8;
- if (output_value(&insn->imm, *bufp, 2, buf_off, bc, 1, d))
- return 1;
- break;
- case LC3B_IMM_9_PC:
- /* Adjust relative displacement to end of bytecode */
- delta = yasm_intnum_create_int(-1);
- if (!insn->imm.abs)
- insn->imm.abs = yasm_expr_create_ident(yasm_expr_int(delta),
- bc->line);
- else
- insn->imm.abs =
- yasm_expr_create(YASM_EXPR_ADD,
- yasm_expr_expr(insn->imm.abs),
- yasm_expr_int(delta), bc->line);
-
- insn->imm.size = 9;
- insn->imm.sign = 1;
- if (output_value(&insn->imm, *bufp, 2, buf_off, bc, 1, d))
- return 1;
- break;
- case LC3B_IMM_9:
- insn->imm.size = 9;
- if (output_value(&insn->imm, *bufp, 2, buf_off, bc, 1, d))
- return 1;
- break;
- default:
- yasm_internal_error(N_("Unrecognized immediate type"));
- }
-
- *bufp += 2; /* all instructions are 2 bytes in size */
- return 0;
-}
-
-int
-yasm_lc3b__intnum_tobytes(yasm_arch *arch, const yasm_intnum *intn,
- unsigned char *buf, size_t destsize, size_t valsize,
- int shift, const yasm_bytecode *bc, int warn)
-{
- /* Write value out. */
- yasm_intnum_get_sized(intn, buf, destsize, valsize, shift, 0, warn);
- return 0;
-}
+/*
+ * LC-3b bytecode utility functions
+ *
+ * Copyright (C) 2003-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <libyasm.h>
+
+#include "lc3barch.h"
+
+
+/* Bytecode callback function prototypes */
+
+static void lc3b_bc_insn_destroy(void *contents);
+static void lc3b_bc_insn_print(const void *contents, FILE *f,
+ int indent_level);
+static int lc3b_bc_insn_calc_len(yasm_bytecode *bc,
+ yasm_bc_add_span_func add_span,
+ void *add_span_data);
+static int lc3b_bc_insn_expand(yasm_bytecode *bc, int span, long old_val,
+ long new_val, /*@out@*/ long *neg_thres,
+ /*@out@*/ long *pos_thres);
+static int lc3b_bc_insn_tobytes(yasm_bytecode *bc, unsigned char **bufp,
+ unsigned char *bufstart,
+ void *d, yasm_output_value_func output_value,
+ /*@null@*/ yasm_output_reloc_func output_reloc);
+
+/* Bytecode callback structures */
+
+static const yasm_bytecode_callback lc3b_bc_callback_insn = {
+ lc3b_bc_insn_destroy,
+ lc3b_bc_insn_print,
+ yasm_bc_finalize_common,
+ NULL,
+ lc3b_bc_insn_calc_len,
+ lc3b_bc_insn_expand,
+ lc3b_bc_insn_tobytes,
+ 0
+};
+
+
+void
+yasm_lc3b__bc_transform_insn(yasm_bytecode *bc, lc3b_insn *insn)
+{
+ yasm_bc_transform(bc, &lc3b_bc_callback_insn, insn);
+}
+
+static void
+lc3b_bc_insn_destroy(void *contents)
+{
+ lc3b_insn *insn = (lc3b_insn *)contents;
+ yasm_value_delete(&insn->imm);
+ yasm_xfree(contents);
+}
+
+static void
+lc3b_bc_insn_print(const void *contents, FILE *f, int indent_level)
+{
+ const lc3b_insn *insn = (const lc3b_insn *)contents;
+
+ fprintf(f, "%*s_Instruction_\n", indent_level, "");
+ fprintf(f, "%*sImmediate Value:", indent_level, "");
+ if (!insn->imm.abs)
+ fprintf(f, " (nil)\n");
+ else {
+ indent_level++;
+ fprintf(f, "\n");
+ yasm_value_print(&insn->imm, f, indent_level);
+ fprintf(f, "%*sType=", indent_level, "");
+ switch (insn->imm_type) {
+ case LC3B_IMM_NONE:
+ fprintf(f, "NONE-SHOULDN'T HAPPEN");
+ break;
+ case LC3B_IMM_4:
+ fprintf(f, "4-bit");
+ break;
+ case LC3B_IMM_5:
+ fprintf(f, "5-bit");
+ break;
+ case LC3B_IMM_6_WORD:
+ fprintf(f, "6-bit, word-multiple");
+ break;
+ case LC3B_IMM_6_BYTE:
+ fprintf(f, "6-bit, byte-multiple");
+ break;
+ case LC3B_IMM_8:
+ fprintf(f, "8-bit, word-multiple");
+ break;
+ case LC3B_IMM_9:
+ fprintf(f, "9-bit, signed, word-multiple");
+ break;
+ case LC3B_IMM_9_PC:
+ fprintf(f, "9-bit, signed, word-multiple, PC-relative");
+ break;
+ }
+ indent_level--;
+ }
+ /* FIXME
+ fprintf(f, "\n%*sOrigin=", indent_level, "");
+ if (insn->origin) {
+ fprintf(f, "\n");
+ yasm_symrec_print(insn->origin, f, indent_level+1);
+ } else
+ fprintf(f, "(nil)\n");
+ */
+ fprintf(f, "%*sOpcode: %04x\n", indent_level, "",
+ (unsigned int)insn->opcode);
+}
+
+static int
+lc3b_bc_insn_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
+ void *add_span_data)
+{
+ lc3b_insn *insn = (lc3b_insn *)bc->contents;
+ yasm_bytecode *target_prevbc;
+
+ /* Fixed size instruction length */
+ bc->len += 2;
+
+ /* Only need to worry about out-of-range to PC-relative */
+ if (insn->imm_type != LC3B_IMM_9_PC)
+ return 0;
+
+ if (insn->imm.rel
+ && (!yasm_symrec_get_label(insn->imm.rel, &target_prevbc)
+ || target_prevbc->section != bc->section)) {
+ /* External or out of segment, so we can't check distance. */
+ return 0;
+ }
+
+ /* 9-bit signed, word-multiple displacement */
+ add_span(add_span_data, bc, 1, &insn->imm, -512+(long)bc->len,
+ 511+(long)bc->len);
+ return 0;
+}
+
+static int
+lc3b_bc_insn_expand(yasm_bytecode *bc, int span, long old_val, long new_val,
+ /*@out@*/ long *neg_thres, /*@out@*/ long *pos_thres)
+{
+ yasm_error_set(YASM_ERROR_VALUE, N_("jump target out of range"));
+ return -1;
+}
+
+static int
+lc3b_bc_insn_tobytes(yasm_bytecode *bc, unsigned char **bufp,
+ unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ /*@unused@*/ yasm_output_reloc_func output_reloc)
+{
+ lc3b_insn *insn = (lc3b_insn *)bc->contents;
+ /*@only@*/ yasm_intnum *delta;
+ unsigned long buf_off = (unsigned long)(*bufp - bufstart);
+
+ /* Output opcode */
+ YASM_SAVE_16_L(*bufp, insn->opcode);
+
+ /* Insert immediate into opcode. */
+ switch (insn->imm_type) {
+ case LC3B_IMM_NONE:
+ break;
+ case LC3B_IMM_4:
+ insn->imm.size = 4;
+ if (output_value(&insn->imm, *bufp, 2, buf_off, bc, 1, d))
+ return 1;
+ break;
+ case LC3B_IMM_5:
+ insn->imm.size = 5;
+ insn->imm.sign = 1;
+ if (output_value(&insn->imm, *bufp, 2, buf_off, bc, 1, d))
+ return 1;
+ break;
+ case LC3B_IMM_6_WORD:
+ insn->imm.size = 6;
+ if (output_value(&insn->imm, *bufp, 2, buf_off, bc, 1, d))
+ return 1;
+ break;
+ case LC3B_IMM_6_BYTE:
+ insn->imm.size = 6;
+ insn->imm.sign = 1;
+ if (output_value(&insn->imm, *bufp, 2, buf_off, bc, 1, d))
+ return 1;
+ break;
+ case LC3B_IMM_8:
+ insn->imm.size = 8;
+ if (output_value(&insn->imm, *bufp, 2, buf_off, bc, 1, d))
+ return 1;
+ break;
+ case LC3B_IMM_9_PC:
+ /* Adjust relative displacement to end of bytecode */
+ delta = yasm_intnum_create_int(-1);
+ if (!insn->imm.abs)
+ insn->imm.abs = yasm_expr_create_ident(yasm_expr_int(delta),
+ bc->line);
+ else
+ insn->imm.abs =
+ yasm_expr_create(YASM_EXPR_ADD,
+ yasm_expr_expr(insn->imm.abs),
+ yasm_expr_int(delta), bc->line);
+
+ insn->imm.size = 9;
+ insn->imm.sign = 1;
+ if (output_value(&insn->imm, *bufp, 2, buf_off, bc, 1, d))
+ return 1;
+ break;
+ case LC3B_IMM_9:
+ insn->imm.size = 9;
+ if (output_value(&insn->imm, *bufp, 2, buf_off, bc, 1, d))
+ return 1;
+ break;
+ default:
+ yasm_internal_error(N_("Unrecognized immediate type"));
+ }
+
+ *bufp += 2; /* all instructions are 2 bytes in size */
+ return 0;
+}
+
+int
+yasm_lc3b__intnum_tobytes(yasm_arch *arch, const yasm_intnum *intn,
+ unsigned char *buf, size_t destsize, size_t valsize,
+ int shift, const yasm_bytecode *bc, int warn)
+{
+ /* Write value out. */
+ yasm_intnum_get_sized(intn, buf, destsize, valsize, shift, 0, warn);
+ return 0;
+}
diff --git a/contrib/tools/yasm/modules/arch/x86/x86arch.c b/contrib/tools/yasm/modules/arch/x86/x86arch.c
index c48eeba388..bac11774ea 100644
--- a/contrib/tools/yasm/modules/arch/x86/x86arch.c
+++ b/contrib/tools/yasm/modules/arch/x86/x86arch.c
@@ -1,633 +1,633 @@
-/*
- * x86 architecture description
- *
- * Copyright (C) 2002-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <libyasm.h>
-
-#include "x86arch.h"
-
-
-yasm_arch_module yasm_x86_LTX_arch;
-
-
-static /*@only@*/ yasm_arch *
-x86_create(const char *machine, const char *parser,
- /*@out@*/ yasm_arch_create_error *error)
-{
- yasm_arch_x86 *arch_x86;
- unsigned int amd64_machine, address_size;
-
- *error = YASM_ARCH_CREATE_OK;
-
- if (yasm__strcasecmp(machine, "x86") == 0) {
- amd64_machine = 0;
- address_size = 32;
- } else if (yasm__strcasecmp(machine, "amd64") == 0) {
- amd64_machine = 1;
- address_size = 64;
- } else if (yasm__strcasecmp(machine, "x32") == 0) {
- amd64_machine = 1;
- address_size = 32;
- }
- else {
- *error = YASM_ARCH_CREATE_BAD_MACHINE;
- return NULL;
- }
-
- arch_x86 = yasm_xmalloc(sizeof(yasm_arch_x86));
-
- arch_x86->arch.module = &yasm_x86_LTX_arch;
-
- /* default to all instructions/features enabled */
- arch_x86->active_cpu = 0;
- arch_x86->cpu_enables_size = 1;
- arch_x86->cpu_enables = yasm_xmalloc(sizeof(wordptr));
- arch_x86->cpu_enables[0] = BitVector_Create(64, FALSE);
- BitVector_Fill(arch_x86->cpu_enables[0]);
-
- arch_x86->amd64_machine = amd64_machine;
- arch_x86->mode_bits = 0;
- arch_x86->address_size = address_size;
- arch_x86->force_strict = 0;
- arch_x86->default_rel = 0;
- arch_x86->gas_intel_mode = 0;
- arch_x86->nop = X86_NOP_BASIC;
-
- if (yasm__strcasecmp(parser, "nasm") == 0)
- arch_x86->parser = X86_PARSER_NASM;
- else if (yasm__strcasecmp(parser, "tasm") == 0)
- arch_x86->parser = X86_PARSER_TASM;
- else if (yasm__strcasecmp(parser, "gas") == 0
- || yasm__strcasecmp(parser, "gnu") == 0)
- arch_x86->parser = X86_PARSER_GAS;
- else {
- yasm_xfree(arch_x86);
- *error = YASM_ARCH_CREATE_BAD_PARSER;
- return NULL;
- }
-
- return (yasm_arch *)arch_x86;
-}
-
-static void
-x86_destroy(/*@only@*/ yasm_arch *arch)
-{
- yasm_arch_x86 *arch_x86 = (yasm_arch_x86 *)arch;
- unsigned int i;
- for (i=0; i<arch_x86->cpu_enables_size; i++)
- BitVector_Destroy(arch_x86->cpu_enables[i]);
- yasm_xfree(arch_x86->cpu_enables);
- yasm_xfree(arch);
-}
-
-static const char *
-x86_get_machine(const yasm_arch *arch)
-{
- const yasm_arch_x86 *arch_x86 = (const yasm_arch_x86 *)arch;
- if (arch_x86->amd64_machine) {
- if (arch_x86->address_size == 32)
- return "x32";
- else
- return "amd64";
- } else
- return "x86";
-}
-
-static unsigned int
-x86_get_address_size(const yasm_arch *arch)
-{
- const yasm_arch_x86 *arch_x86 = (const yasm_arch_x86 *)arch;
- if (arch_x86->mode_bits != 0)
- return arch_x86->mode_bits;
- return arch_x86->address_size;
-}
-
-static int
-x86_set_var(yasm_arch *arch, const char *var, unsigned long val)
-{
- yasm_arch_x86 *arch_x86 = (yasm_arch_x86 *)arch;
- if (yasm__strcasecmp(var, "mode_bits") == 0)
- arch_x86->mode_bits = (unsigned int)val;
- else if (yasm__strcasecmp(var, "force_strict") == 0)
- arch_x86->force_strict = (unsigned int)val;
- else if (yasm__strcasecmp(var, "default_rel") == 0) {
- if (arch_x86->mode_bits != 64)
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("ignoring default rel in non-64-bit mode"));
- else
- arch_x86->default_rel = (unsigned int)val;
- } else if (yasm__strcasecmp(var, "gas_intel_mode") == 0) {
- arch_x86->gas_intel_mode = (unsigned int)val;
- } else
- return 1;
- return 0;
-}
-
-static void
-x86_dir_cpu(yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_arch_x86 *arch_x86 = (yasm_arch_x86 *)object->arch;
-
- yasm_valparam *vp;
- yasm_vps_foreach(vp, valparams) {
- /*@null@*/ /*@dependent@*/ const char *s = yasm_vp_string(vp);
- if (s)
- yasm_x86__parse_cpu(arch_x86, s, strlen(s));
- else if (vp->type == YASM_PARAM_EXPR) {
- const yasm_intnum *intcpu;
- intcpu = yasm_expr_get_intnum(&vp->param.e, 0);
- if (!intcpu)
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("invalid argument to [%s]"), "CPU");
- else {
- char strcpu[16];
- sprintf(strcpu, "%lu", yasm_intnum_get_uint(intcpu));
- yasm_x86__parse_cpu(arch_x86, strcpu, strlen(strcpu));
- }
- } else
- yasm_error_set(YASM_ERROR_SYNTAX, N_("invalid argument to [%s]"),
- "CPU");
- }
-}
-
-static void
-x86_dir_bits(yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_arch_x86 *arch_x86 = (yasm_arch_x86 *)object->arch;
- yasm_valparam *vp;
- /*@only@*/ /*@null@*/ yasm_expr *e = NULL;
- const yasm_intnum *intn;
- long lval;
-
- if ((vp = yasm_vps_first(valparams)) && !vp->val &&
- (e = yasm_vp_expr(vp, object->symtab, line)) != NULL &&
- (intn = yasm_expr_get_intnum(&e, 0)) != NULL &&
- (lval = yasm_intnum_get_int(intn)) &&
- (lval == 16 || lval == 32 || lval == 64))
- arch_x86->mode_bits = (unsigned char)lval;
- else
- yasm_error_set(YASM_ERROR_VALUE, N_("invalid argument to [%s]"),
- "BITS");
- if (e)
- yasm_expr_destroy(e);
-}
-
-static void
-x86_dir_code16(yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_arch_x86 *arch_x86 = (yasm_arch_x86 *)object->arch;
- arch_x86->mode_bits = 16;
-}
-
-static void
-x86_dir_code32(yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_arch_x86 *arch_x86 = (yasm_arch_x86 *)object->arch;
- arch_x86->mode_bits = 32;
-}
-
-static void
-x86_dir_code64(yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_arch_x86 *arch_x86 = (yasm_arch_x86 *)object->arch;
- arch_x86->mode_bits = 64;
-}
-
-static const unsigned char **
-x86_get_fill(const yasm_arch *arch)
-{
- const yasm_arch_x86 *arch_x86 = (const yasm_arch_x86 *)arch;
-
- /* Fill patterns that GAS uses. */
- static const unsigned char fill16_1[1] =
- {0x90}; /* 1 - nop */
- static const unsigned char fill16_2[2] =
- {0x89, 0xf6}; /* 2 - mov si, si */
- static const unsigned char fill16_3[3] =
- {0x8d, 0x74, 0x00}; /* 3 - lea si, [si+byte 0] */
- static const unsigned char fill16_4[4] =
- {0x8d, 0xb4, 0x00, 0x00}; /* 4 - lea si, [si+word 0] */
- static const unsigned char fill16_5[5] =
- {0x90, /* 5 - nop */
- 0x8d, 0xb4, 0x00, 0x00}; /* lea si, [si+word 0] */
- static const unsigned char fill16_6[6] =
- {0x89, 0xf6, /* 6 - mov si, si */
- 0x8d, 0xbd, 0x00, 0x00}; /* lea di, [di+word 0] */
- static const unsigned char fill16_7[7] =
- {0x8d, 0x74, 0x00, /* 7 - lea si, [si+byte 0] */
- 0x8d, 0xbd, 0x00, 0x00}; /* lea di, [di+word 0] */
- static const unsigned char fill16_8[8] =
- {0x8d, 0xb4, 0x00, 0x00, /* 8 - lea si, [si+word 0] */
- 0x8d, 0xbd, 0x00, 0x00}; /* lea di, [di+word 0] */
- static const unsigned char fill16_9[9] =
- {0xeb, 0x07, 0x90, 0x90, 0x90, 0x90, /* 9 - jmp $+9; nop fill */
- 0x90, 0x90, 0x90};
- static const unsigned char fill16_10[10] =
- {0xeb, 0x08, 0x90, 0x90, 0x90, 0x90, /* 10 - jmp $+10; nop fill */
- 0x90, 0x90, 0x90, 0x90};
- static const unsigned char fill16_11[11] =
- {0xeb, 0x09, 0x90, 0x90, 0x90, 0x90, /* 11 - jmp $+11; nop fill */
- 0x90, 0x90, 0x90, 0x90, 0x90};
- static const unsigned char fill16_12[12] =
- {0xeb, 0x0a, 0x90, 0x90, 0x90, 0x90, /* 12 - jmp $+12; nop fill */
- 0x90, 0x90, 0x90, 0x90, 0x90, 0x90};
- static const unsigned char fill16_13[13] =
- {0xeb, 0x0b, 0x90, 0x90, 0x90, 0x90, /* 13 - jmp $+13; nop fill */
- 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90};
- static const unsigned char fill16_14[14] =
- {0xeb, 0x0c, 0x90, 0x90, 0x90, 0x90, /* 14 - jmp $+14; nop fill */
- 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90};
- static const unsigned char fill16_15[15] =
- {0xeb, 0x0d, 0x90, 0x90, 0x90, 0x90, /* 15 - jmp $+15; nop fill */
- 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90};
- static const unsigned char *fill16[16] =
- {
- NULL, fill16_1, fill16_2, fill16_3,
- fill16_4, fill16_5, fill16_6, fill16_7,
- fill16_8, fill16_9, fill16_10, fill16_11,
- fill16_12, fill16_13, fill16_14, fill16_15
- };
-
- static const unsigned char fill32_1[1] =
- {0x90}; /* 1 - nop */
- static const unsigned char fill32_2[2] =
- {0x66, 0x90}; /* 2 - xchg ax, ax (o16 nop) */
- static const unsigned char fill32_3[3] =
- {0x8d, 0x76, 0x00}; /* 3 - lea esi, [esi+byte 0] */
- static const unsigned char fill32_4[4] =
- {0x8d, 0x74, 0x26, 0x00}; /* 4 - lea esi, [esi*1+byte 0] */
- static const unsigned char fill32_5[5] =
- {0x90, /* 5 - nop */
- 0x8d, 0x74, 0x26, 0x00}; /* lea esi, [esi*1+byte 0] */
- static const unsigned char fill32_6[6] =
- {0x8d, 0xb6, 0x00, 0x00, 0x00, 0x00};/* 6 - lea esi, [esi+dword 0] */
- static const unsigned char fill32_7[7] =
- {0x8d, 0xb4, 0x26, 0x00, 0x00, 0x00, /* 7 - lea esi, [esi*1+dword 0] */
- 0x00};
- static const unsigned char fill32_8[8] =
- {0x90, /* 8 - nop */
- 0x8d, 0xb4, 0x26, 0x00, 0x00, 0x00, /* lea esi, [esi*1+dword 0] */
- 0x00};
-#if 0
- /* GAS uses these */
- static const unsigned char fill32_9[9] =
- {0x89, 0xf6, /* 9 - mov esi, esi */
- 0x8d, 0xbc, 0x27, 0x00, 0x00, 0x00, /* lea edi, [edi*1+dword 0] */
- 0x00};
- static const unsigned char fill32_10[10] =
- {0x8d, 0x76, 0x00, /* 10 - lea esi, [esi+byte 0] */
- 0x8d, 0xbc, 0x27, 0x00, 0x00, 0x00, /* lea edi, [edi+dword 0] */
- 0x00};
- static const unsigned char fill32_11[11] =
- {0x8d, 0x74, 0x26, 0x00, /* 11 - lea esi, [esi*1+byte 0] */
- 0x8d, 0xbc, 0x27, 0x00, 0x00, 0x00, /* lea edi, [edi*1+dword 0] */
- 0x00};
- static const unsigned char fill32_12[12] =
- {0x8d, 0xb6, 0x00, 0x00, 0x00, 0x00, /* 12 - lea esi, [esi+dword 0] */
- 0x8d, 0xbf, 0x00, 0x00, 0x00, 0x00};/* lea edi, [edi+dword 0] */
- static const unsigned char fill32_13[13] =
- {0x8d, 0xb6, 0x00, 0x00, 0x00, 0x00, /* 13 - lea esi, [esi+dword 0] */
- 0x8d, 0xbc, 0x27, 0x00, 0x00, 0x00, /* lea edi, [edi*1+dword 0] */
- 0x00};
- static const unsigned char fill32_14[14] =
- {0x8d, 0xb4, 0x26, 0x00, 0x00, 0x00, /* 14 - lea esi, [esi*1+dword 0] */
- 0x00,
- 0x8d, 0xbc, 0x27, 0x00, 0x00, 0x00, /* lea edi, [edi*1+dword 0] */
- 0x00};
-#else
- /* But on newer processors, these are recommended */
- static const unsigned char fill32_9[9] =
- {0xeb, 0x07, 0x90, 0x90, 0x90, 0x90, /* 9 - jmp $+9; nop fill */
- 0x90, 0x90, 0x90};
- static const unsigned char fill32_10[10] =
- {0xeb, 0x08, 0x90, 0x90, 0x90, 0x90, /* 10 - jmp $+10; nop fill */
- 0x90, 0x90, 0x90, 0x90};
- static const unsigned char fill32_11[11] =
- {0xeb, 0x09, 0x90, 0x90, 0x90, 0x90, /* 11 - jmp $+11; nop fill */
- 0x90, 0x90, 0x90, 0x90, 0x90};
- static const unsigned char fill32_12[12] =
- {0xeb, 0x0a, 0x90, 0x90, 0x90, 0x90, /* 12 - jmp $+12; nop fill */
- 0x90, 0x90, 0x90, 0x90, 0x90, 0x90};
- static const unsigned char fill32_13[13] =
- {0xeb, 0x0b, 0x90, 0x90, 0x90, 0x90, /* 13 - jmp $+13; nop fill */
- 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90};
- static const unsigned char fill32_14[14] =
- {0xeb, 0x0c, 0x90, 0x90, 0x90, 0x90, /* 14 - jmp $+14; nop fill */
- 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90};
-#endif
- static const unsigned char fill32_15[15] =
- {0xeb, 0x0d, 0x90, 0x90, 0x90, 0x90, /* 15 - jmp $+15; nop fill */
- 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90};
- static const unsigned char *fill32[16] =
- {
- NULL, fill32_1, fill32_2, fill32_3,
- fill32_4, fill32_5, fill32_6, fill32_7,
- fill32_8, fill32_9, fill32_10, fill32_11,
- fill32_12, fill32_13, fill32_14, fill32_15
- };
-
- /* Long form nops available on more recent Intel and AMD processors */
- static const unsigned char fill32new_3[3] =
- {0x0f, 0x1f, 0x00}; /* 3 - nop(3) */
- static const unsigned char fill32new_4[4] =
- {0x0f, 0x1f, 0x40, 0x00}; /* 4 - nop(4) */
- static const unsigned char fill32new_5[5] =
- {0x0f, 0x1f, 0x44, 0x00, 0x00}; /* 5 - nop(5) */
- static const unsigned char fill32new_6[6] =
- {0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00}; /* 6 - nop(6) */
- static const unsigned char fill32new_7[7] =
- {0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00}; /* 7 - nop(7) */
- static const unsigned char fill32new_8[8] =
- {0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, /* 8 - nop(8) */
- 0x00};
- static const unsigned char fill32new_9[9] =
- {0x66, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, /* 9 - nop(9) */
- 0x00, 0x00};
-
- /* Longer forms preferred by Intel use repeated o16 prefixes */
- static const unsigned char fill32intel_10[10] =
- {0x66, 0x2e, 0x0f, 0x1f, 0x84, 0x00, 0x00, /* 10 - o16; cs; nop */
- 0x00, 0x00, 0x00};
- static const unsigned char fill32intel_11[11] =
- {0x66, 0x66, 0x2e, 0x0f, 0x1f, 0x84, 0x00, /* 11 - 2x o16; cs; nop */
- 0x00, 0x00, 0x00, 0x00};
- static const unsigned char fill32intel_12[12] =
- {0x66, 0x66, 0x66, 0x2e, 0x0f, 0x1f, 0x84, /* 12 - 3x o16; cs; nop */
- 0x00, 0x00, 0x00, 0x00, 0x00};
- static const unsigned char fill32intel_13[13] =
- {0x66, 0x66, 0x66, 0x66, 0x2e, 0x0f, 0x1f, /* 13 - 4x o16; cs; nop */
- 0x84, 0x00, 0x00, 0x00, 0x00, 0x00};
- static const unsigned char fill32intel_14[14] =
- {0x66, 0x66, 0x66, 0x66, 0x66, 0x2e, 0x0f, /* 14 - 5x o16; cs; nop */
- 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00};
- static const unsigned char fill32intel_15[15] =
- {0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x2e, /* 15 - 6x o16; cs; nop */
- 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00};
-
- /* Longer forms preferred by AMD use fewer o16 prefixes and no CS prefix;
- * Source: Software Optimisation Guide for AMD Family 10h
- * Processors 40546 revision 3.10 February 2009
- */
- static const unsigned char fill32amd_10[10] =
- {0x66, 0x66, 0x0f, 0x1f, 0x84, 0x00, 0x00, /* 10 - nop(10) */
- 0x00, 0x00, 0x00};
- static const unsigned char fill32amd_11[11] =
- {0x0f, 0x1f, 0x44, 0x00, 0x00, /* 11 - nop(5) */
- 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00}; /* nop(6) */
- static const unsigned char fill32amd_12[12] =
- {0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00, /* 12 - nop(6) */
- 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00}; /* nop(6) */
- static const unsigned char fill32amd_13[13] =
- {0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00, /* 13 - nop(6) */
- 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00}; /* nop(7) */
- static const unsigned char fill32amd_14[14] =
- {0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00, /* 14 - nop(7) */
- 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00}; /* nop(7) */
- static const unsigned char fill32amd_15[15] =
- {0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00, /* 15 - nop(7) */
- 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00}; /* nop(8) */
-
- static const unsigned char *fill32_intel[16] =
- {
- NULL, fill32_1, fill32_2, fill32new_3,
- fill32new_4, fill32new_5, fill32new_6, fill32new_7,
- fill32new_8, fill32new_9, fill32intel_10, fill32intel_11,
- fill32intel_12, fill32intel_13, fill32intel_14, fill32intel_15
- };
- static const unsigned char *fill32_amd[16] =
- {
- NULL, fill32_1, fill32_2, fill32new_3,
- fill32new_4, fill32new_5, fill32new_6, fill32new_7,
- fill32new_8, fill32new_9, fill32amd_10, fill32amd_11,
- fill32amd_12, fill32amd_13, fill32amd_14, fill32amd_15
- };
-
- switch (arch_x86->mode_bits) {
- case 16:
- return fill16;
- case 32:
- if (arch_x86->nop == X86_NOP_INTEL)
- return fill32_intel;
- else if (arch_x86->nop == X86_NOP_AMD)
- return fill32_amd;
- else
- return fill32;
- case 64:
- /* We know long nops are available in 64-bit mode; default to Intel
- * ones if unspecified (to match GAS behavior).
- */
- if (arch_x86->nop == X86_NOP_AMD)
- return fill32_amd;
- else
- return fill32_intel;
- default:
- yasm_error_set(YASM_ERROR_VALUE,
- N_("Invalid mode_bits in x86_get_fill"));
- return NULL;
- }
-}
-
-unsigned int
-yasm_x86__get_reg_size(uintptr_t reg)
-{
- switch ((x86_expritem_reg_size)(reg & ~0xFUL)) {
- case X86_REG8:
- case X86_REG8X:
- return 8;
- case X86_REG16:
- return 16;
- case X86_REG32:
- case X86_CRREG:
- case X86_DRREG:
- case X86_TRREG:
- return 32;
- case X86_REG64:
- case X86_MMXREG:
- return 64;
- case X86_XMMREG:
- return 128;
- case X86_YMMREG:
- return 256;
- case X86_FPUREG:
- return 80;
- default:
- yasm_error_set(YASM_ERROR_VALUE, N_("unknown register size"));
- }
- return 0;
-}
-
-static unsigned int
-x86_get_reg_size(yasm_arch *arch, uintptr_t reg)
-{
- return yasm_x86__get_reg_size(reg);
-}
-
-static uintptr_t
-x86_reggroup_get_reg(yasm_arch *arch, uintptr_t reggroup,
- unsigned long regindex)
-{
- yasm_arch_x86 *arch_x86 = (yasm_arch_x86 *)arch;
- switch ((x86_expritem_reg_size)(reggroup & ~0xFUL)) {
- case X86_XMMREG:
- case X86_YMMREG:
- if (arch_x86->mode_bits == 64) {
- if (regindex > 15)
- return 0;
- return reggroup | (regindex & 15);
- }
- /*@fallthrough@*/
- case X86_MMXREG:
- case X86_FPUREG:
- if (regindex > 7)
- return 0;
- return reggroup | (regindex & 7);
- default:
- yasm_error_set(YASM_ERROR_VALUE, N_("bad register group"));
- }
- return 0;
-}
-
-static void
-x86_reg_print(yasm_arch *arch, uintptr_t reg, FILE *f)
-{
- static const char *name8[] = {"al","cl","dl","bl","ah","ch","dh","bh"};
- static const char *name8x[] = {
- "al", "cl", "dl", "bl", "spl", "bpl", "sil", "dil",
- "r8b", "r9b", "r10b", "r11b", "r12b", "r13b", "r14b", "r15b"
- };
- static const char *name16[] = {
- "ax", "cx", "dx", "bx", "sp", "bp", "si", "di",
- "r8w", "r9w", "r10w", "r11w", "r12w", "r13w", "r14w", "r15w"
- };
- static const char *name32[] = {
- "eax", "ecx", "edx", "ebx", "esp", "ebp", "esi", "edi",
- "r8d", "r9d", "r10d", "r11d", "r12d", "r13d", "r14d", "r15d"
- };
- static const char *name64[] = {
- "rax", "rcx", "rdx", "rbx", "rsp", "rbp", "rsi", "rdi",
- "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15"
- };
-
- switch ((x86_expritem_reg_size)(reg & ~0xFUL)) {
- case X86_REG8:
- fprintf(f, "%s", name8[reg&0xF]);
- break;
- case X86_REG8X:
- fprintf(f, "%s", name8x[reg&0xF]);
- break;
- case X86_REG16:
- fprintf(f, "%s", name16[reg&0xF]);
- break;
- case X86_REG32:
- fprintf(f, "%s", name32[reg&0xF]);
- break;
- case X86_REG64:
- fprintf(f, "%s", name64[reg&0xF]);
- break;
- case X86_MMXREG:
- fprintf(f, "mm%d", (int)(reg&0xF));
- break;
- case X86_XMMREG:
- fprintf(f, "xmm%d", (int)(reg&0xF));
- break;
- case X86_YMMREG:
- fprintf(f, "ymm%d", (int)(reg&0xF));
- break;
- case X86_CRREG:
- fprintf(f, "cr%d", (int)(reg&0xF));
- break;
- case X86_DRREG:
- fprintf(f, "dr%d", (int)(reg&0xF));
- break;
- case X86_TRREG:
- fprintf(f, "tr%d", (int)(reg&0xF));
- break;
- case X86_FPUREG:
- fprintf(f, "st%d", (int)(reg&0xF));
- break;
- default:
- yasm_error_set(YASM_ERROR_VALUE, N_("unknown register size"));
- }
-}
-
-static void
-x86_segreg_print(yasm_arch *arch, uintptr_t segreg, FILE *f)
-{
- static const char *name[] = {"es","cs","ss","ds","fs","gs"};
- fprintf(f, "%s", name[segreg&7]);
-}
-
-/* Define x86 machines -- see arch.h for details */
-static const yasm_arch_machine x86_machines[] = {
- { "IA-32 and derivatives", "x86" },
- { "AMD64", "amd64" },
- { "X32", "x32" },
- { NULL, NULL }
-};
-
-static const yasm_directive x86_directives[] = {
- { "cpu", "nasm", x86_dir_cpu, YASM_DIR_ARG_REQUIRED },
- { "bits", "nasm", x86_dir_bits, YASM_DIR_ARG_REQUIRED },
- { ".code16", "gas", x86_dir_code16, YASM_DIR_ANY },
- { ".code32", "gas", x86_dir_code32, YASM_DIR_ANY },
- { ".code64", "gas", x86_dir_code64, YASM_DIR_ANY },
- { NULL, NULL, NULL, 0 }
-};
-
-/* Define arch structure -- see arch.h for details */
-yasm_arch_module yasm_x86_LTX_arch = {
- "x86 (IA-32 and derivatives), AMD64",
- "x86",
- x86_directives,
- x86_create,
- x86_destroy,
- x86_get_machine,
- x86_get_address_size,
- x86_set_var,
- yasm_x86__parse_check_insnprefix,
- yasm_x86__parse_check_regtmod,
- x86_get_fill,
- yasm_x86__floatnum_tobytes,
- yasm_x86__intnum_tobytes,
- x86_get_reg_size,
- x86_reggroup_get_reg,
- x86_reg_print,
- x86_segreg_print,
- yasm_x86__ea_create_expr,
- yasm_x86__ea_destroy,
- yasm_x86__ea_print,
- yasm_x86__create_empty_insn,
- x86_machines,
- "x86",
- 16,
- 1
-};
+/*
+ * x86 architecture description
+ *
+ * Copyright (C) 2002-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <libyasm.h>
+
+#include "x86arch.h"
+
+
+yasm_arch_module yasm_x86_LTX_arch;
+
+
+static /*@only@*/ yasm_arch *
+x86_create(const char *machine, const char *parser,
+ /*@out@*/ yasm_arch_create_error *error)
+{
+ yasm_arch_x86 *arch_x86;
+ unsigned int amd64_machine, address_size;
+
+ *error = YASM_ARCH_CREATE_OK;
+
+ if (yasm__strcasecmp(machine, "x86") == 0) {
+ amd64_machine = 0;
+ address_size = 32;
+ } else if (yasm__strcasecmp(machine, "amd64") == 0) {
+ amd64_machine = 1;
+ address_size = 64;
+ } else if (yasm__strcasecmp(machine, "x32") == 0) {
+ amd64_machine = 1;
+ address_size = 32;
+ }
+ else {
+ *error = YASM_ARCH_CREATE_BAD_MACHINE;
+ return NULL;
+ }
+
+ arch_x86 = yasm_xmalloc(sizeof(yasm_arch_x86));
+
+ arch_x86->arch.module = &yasm_x86_LTX_arch;
+
+ /* default to all instructions/features enabled */
+ arch_x86->active_cpu = 0;
+ arch_x86->cpu_enables_size = 1;
+ arch_x86->cpu_enables = yasm_xmalloc(sizeof(wordptr));
+ arch_x86->cpu_enables[0] = BitVector_Create(64, FALSE);
+ BitVector_Fill(arch_x86->cpu_enables[0]);
+
+ arch_x86->amd64_machine = amd64_machine;
+ arch_x86->mode_bits = 0;
+ arch_x86->address_size = address_size;
+ arch_x86->force_strict = 0;
+ arch_x86->default_rel = 0;
+ arch_x86->gas_intel_mode = 0;
+ arch_x86->nop = X86_NOP_BASIC;
+
+ if (yasm__strcasecmp(parser, "nasm") == 0)
+ arch_x86->parser = X86_PARSER_NASM;
+ else if (yasm__strcasecmp(parser, "tasm") == 0)
+ arch_x86->parser = X86_PARSER_TASM;
+ else if (yasm__strcasecmp(parser, "gas") == 0
+ || yasm__strcasecmp(parser, "gnu") == 0)
+ arch_x86->parser = X86_PARSER_GAS;
+ else {
+ yasm_xfree(arch_x86);
+ *error = YASM_ARCH_CREATE_BAD_PARSER;
+ return NULL;
+ }
+
+ return (yasm_arch *)arch_x86;
+}
+
+static void
+x86_destroy(/*@only@*/ yasm_arch *arch)
+{
+ yasm_arch_x86 *arch_x86 = (yasm_arch_x86 *)arch;
+ unsigned int i;
+ for (i=0; i<arch_x86->cpu_enables_size; i++)
+ BitVector_Destroy(arch_x86->cpu_enables[i]);
+ yasm_xfree(arch_x86->cpu_enables);
+ yasm_xfree(arch);
+}
+
+static const char *
+x86_get_machine(const yasm_arch *arch)
+{
+ const yasm_arch_x86 *arch_x86 = (const yasm_arch_x86 *)arch;
+ if (arch_x86->amd64_machine) {
+ if (arch_x86->address_size == 32)
+ return "x32";
+ else
+ return "amd64";
+ } else
+ return "x86";
+}
+
+static unsigned int
+x86_get_address_size(const yasm_arch *arch)
+{
+ const yasm_arch_x86 *arch_x86 = (const yasm_arch_x86 *)arch;
+ if (arch_x86->mode_bits != 0)
+ return arch_x86->mode_bits;
+ return arch_x86->address_size;
+}
+
+static int
+x86_set_var(yasm_arch *arch, const char *var, unsigned long val)
+{
+ yasm_arch_x86 *arch_x86 = (yasm_arch_x86 *)arch;
+ if (yasm__strcasecmp(var, "mode_bits") == 0)
+ arch_x86->mode_bits = (unsigned int)val;
+ else if (yasm__strcasecmp(var, "force_strict") == 0)
+ arch_x86->force_strict = (unsigned int)val;
+ else if (yasm__strcasecmp(var, "default_rel") == 0) {
+ if (arch_x86->mode_bits != 64)
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("ignoring default rel in non-64-bit mode"));
+ else
+ arch_x86->default_rel = (unsigned int)val;
+ } else if (yasm__strcasecmp(var, "gas_intel_mode") == 0) {
+ arch_x86->gas_intel_mode = (unsigned int)val;
+ } else
+ return 1;
+ return 0;
+}
+
+static void
+x86_dir_cpu(yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_arch_x86 *arch_x86 = (yasm_arch_x86 *)object->arch;
+
+ yasm_valparam *vp;
+ yasm_vps_foreach(vp, valparams) {
+ /*@null@*/ /*@dependent@*/ const char *s = yasm_vp_string(vp);
+ if (s)
+ yasm_x86__parse_cpu(arch_x86, s, strlen(s));
+ else if (vp->type == YASM_PARAM_EXPR) {
+ const yasm_intnum *intcpu;
+ intcpu = yasm_expr_get_intnum(&vp->param.e, 0);
+ if (!intcpu)
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("invalid argument to [%s]"), "CPU");
+ else {
+ char strcpu[16];
+ sprintf(strcpu, "%lu", yasm_intnum_get_uint(intcpu));
+ yasm_x86__parse_cpu(arch_x86, strcpu, strlen(strcpu));
+ }
+ } else
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("invalid argument to [%s]"),
+ "CPU");
+ }
+}
+
+static void
+x86_dir_bits(yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_arch_x86 *arch_x86 = (yasm_arch_x86 *)object->arch;
+ yasm_valparam *vp;
+ /*@only@*/ /*@null@*/ yasm_expr *e = NULL;
+ const yasm_intnum *intn;
+ long lval;
+
+ if ((vp = yasm_vps_first(valparams)) && !vp->val &&
+ (e = yasm_vp_expr(vp, object->symtab, line)) != NULL &&
+ (intn = yasm_expr_get_intnum(&e, 0)) != NULL &&
+ (lval = yasm_intnum_get_int(intn)) &&
+ (lval == 16 || lval == 32 || lval == 64))
+ arch_x86->mode_bits = (unsigned char)lval;
+ else
+ yasm_error_set(YASM_ERROR_VALUE, N_("invalid argument to [%s]"),
+ "BITS");
+ if (e)
+ yasm_expr_destroy(e);
+}
+
+static void
+x86_dir_code16(yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_arch_x86 *arch_x86 = (yasm_arch_x86 *)object->arch;
+ arch_x86->mode_bits = 16;
+}
+
+static void
+x86_dir_code32(yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_arch_x86 *arch_x86 = (yasm_arch_x86 *)object->arch;
+ arch_x86->mode_bits = 32;
+}
+
+static void
+x86_dir_code64(yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_arch_x86 *arch_x86 = (yasm_arch_x86 *)object->arch;
+ arch_x86->mode_bits = 64;
+}
+
+static const unsigned char **
+x86_get_fill(const yasm_arch *arch)
+{
+ const yasm_arch_x86 *arch_x86 = (const yasm_arch_x86 *)arch;
+
+ /* Fill patterns that GAS uses. */
+ static const unsigned char fill16_1[1] =
+ {0x90}; /* 1 - nop */
+ static const unsigned char fill16_2[2] =
+ {0x89, 0xf6}; /* 2 - mov si, si */
+ static const unsigned char fill16_3[3] =
+ {0x8d, 0x74, 0x00}; /* 3 - lea si, [si+byte 0] */
+ static const unsigned char fill16_4[4] =
+ {0x8d, 0xb4, 0x00, 0x00}; /* 4 - lea si, [si+word 0] */
+ static const unsigned char fill16_5[5] =
+ {0x90, /* 5 - nop */
+ 0x8d, 0xb4, 0x00, 0x00}; /* lea si, [si+word 0] */
+ static const unsigned char fill16_6[6] =
+ {0x89, 0xf6, /* 6 - mov si, si */
+ 0x8d, 0xbd, 0x00, 0x00}; /* lea di, [di+word 0] */
+ static const unsigned char fill16_7[7] =
+ {0x8d, 0x74, 0x00, /* 7 - lea si, [si+byte 0] */
+ 0x8d, 0xbd, 0x00, 0x00}; /* lea di, [di+word 0] */
+ static const unsigned char fill16_8[8] =
+ {0x8d, 0xb4, 0x00, 0x00, /* 8 - lea si, [si+word 0] */
+ 0x8d, 0xbd, 0x00, 0x00}; /* lea di, [di+word 0] */
+ static const unsigned char fill16_9[9] =
+ {0xeb, 0x07, 0x90, 0x90, 0x90, 0x90, /* 9 - jmp $+9; nop fill */
+ 0x90, 0x90, 0x90};
+ static const unsigned char fill16_10[10] =
+ {0xeb, 0x08, 0x90, 0x90, 0x90, 0x90, /* 10 - jmp $+10; nop fill */
+ 0x90, 0x90, 0x90, 0x90};
+ static const unsigned char fill16_11[11] =
+ {0xeb, 0x09, 0x90, 0x90, 0x90, 0x90, /* 11 - jmp $+11; nop fill */
+ 0x90, 0x90, 0x90, 0x90, 0x90};
+ static const unsigned char fill16_12[12] =
+ {0xeb, 0x0a, 0x90, 0x90, 0x90, 0x90, /* 12 - jmp $+12; nop fill */
+ 0x90, 0x90, 0x90, 0x90, 0x90, 0x90};
+ static const unsigned char fill16_13[13] =
+ {0xeb, 0x0b, 0x90, 0x90, 0x90, 0x90, /* 13 - jmp $+13; nop fill */
+ 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90};
+ static const unsigned char fill16_14[14] =
+ {0xeb, 0x0c, 0x90, 0x90, 0x90, 0x90, /* 14 - jmp $+14; nop fill */
+ 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90};
+ static const unsigned char fill16_15[15] =
+ {0xeb, 0x0d, 0x90, 0x90, 0x90, 0x90, /* 15 - jmp $+15; nop fill */
+ 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90};
+ static const unsigned char *fill16[16] =
+ {
+ NULL, fill16_1, fill16_2, fill16_3,
+ fill16_4, fill16_5, fill16_6, fill16_7,
+ fill16_8, fill16_9, fill16_10, fill16_11,
+ fill16_12, fill16_13, fill16_14, fill16_15
+ };
+
+ static const unsigned char fill32_1[1] =
+ {0x90}; /* 1 - nop */
+ static const unsigned char fill32_2[2] =
+ {0x66, 0x90}; /* 2 - xchg ax, ax (o16 nop) */
+ static const unsigned char fill32_3[3] =
+ {0x8d, 0x76, 0x00}; /* 3 - lea esi, [esi+byte 0] */
+ static const unsigned char fill32_4[4] =
+ {0x8d, 0x74, 0x26, 0x00}; /* 4 - lea esi, [esi*1+byte 0] */
+ static const unsigned char fill32_5[5] =
+ {0x90, /* 5 - nop */
+ 0x8d, 0x74, 0x26, 0x00}; /* lea esi, [esi*1+byte 0] */
+ static const unsigned char fill32_6[6] =
+ {0x8d, 0xb6, 0x00, 0x00, 0x00, 0x00};/* 6 - lea esi, [esi+dword 0] */
+ static const unsigned char fill32_7[7] =
+ {0x8d, 0xb4, 0x26, 0x00, 0x00, 0x00, /* 7 - lea esi, [esi*1+dword 0] */
+ 0x00};
+ static const unsigned char fill32_8[8] =
+ {0x90, /* 8 - nop */
+ 0x8d, 0xb4, 0x26, 0x00, 0x00, 0x00, /* lea esi, [esi*1+dword 0] */
+ 0x00};
+#if 0
+ /* GAS uses these */
+ static const unsigned char fill32_9[9] =
+ {0x89, 0xf6, /* 9 - mov esi, esi */
+ 0x8d, 0xbc, 0x27, 0x00, 0x00, 0x00, /* lea edi, [edi*1+dword 0] */
+ 0x00};
+ static const unsigned char fill32_10[10] =
+ {0x8d, 0x76, 0x00, /* 10 - lea esi, [esi+byte 0] */
+ 0x8d, 0xbc, 0x27, 0x00, 0x00, 0x00, /* lea edi, [edi+dword 0] */
+ 0x00};
+ static const unsigned char fill32_11[11] =
+ {0x8d, 0x74, 0x26, 0x00, /* 11 - lea esi, [esi*1+byte 0] */
+ 0x8d, 0xbc, 0x27, 0x00, 0x00, 0x00, /* lea edi, [edi*1+dword 0] */
+ 0x00};
+ static const unsigned char fill32_12[12] =
+ {0x8d, 0xb6, 0x00, 0x00, 0x00, 0x00, /* 12 - lea esi, [esi+dword 0] */
+ 0x8d, 0xbf, 0x00, 0x00, 0x00, 0x00};/* lea edi, [edi+dword 0] */
+ static const unsigned char fill32_13[13] =
+ {0x8d, 0xb6, 0x00, 0x00, 0x00, 0x00, /* 13 - lea esi, [esi+dword 0] */
+ 0x8d, 0xbc, 0x27, 0x00, 0x00, 0x00, /* lea edi, [edi*1+dword 0] */
+ 0x00};
+ static const unsigned char fill32_14[14] =
+ {0x8d, 0xb4, 0x26, 0x00, 0x00, 0x00, /* 14 - lea esi, [esi*1+dword 0] */
+ 0x00,
+ 0x8d, 0xbc, 0x27, 0x00, 0x00, 0x00, /* lea edi, [edi*1+dword 0] */
+ 0x00};
+#else
+ /* But on newer processors, these are recommended */
+ static const unsigned char fill32_9[9] =
+ {0xeb, 0x07, 0x90, 0x90, 0x90, 0x90, /* 9 - jmp $+9; nop fill */
+ 0x90, 0x90, 0x90};
+ static const unsigned char fill32_10[10] =
+ {0xeb, 0x08, 0x90, 0x90, 0x90, 0x90, /* 10 - jmp $+10; nop fill */
+ 0x90, 0x90, 0x90, 0x90};
+ static const unsigned char fill32_11[11] =
+ {0xeb, 0x09, 0x90, 0x90, 0x90, 0x90, /* 11 - jmp $+11; nop fill */
+ 0x90, 0x90, 0x90, 0x90, 0x90};
+ static const unsigned char fill32_12[12] =
+ {0xeb, 0x0a, 0x90, 0x90, 0x90, 0x90, /* 12 - jmp $+12; nop fill */
+ 0x90, 0x90, 0x90, 0x90, 0x90, 0x90};
+ static const unsigned char fill32_13[13] =
+ {0xeb, 0x0b, 0x90, 0x90, 0x90, 0x90, /* 13 - jmp $+13; nop fill */
+ 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90};
+ static const unsigned char fill32_14[14] =
+ {0xeb, 0x0c, 0x90, 0x90, 0x90, 0x90, /* 14 - jmp $+14; nop fill */
+ 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90};
+#endif
+ static const unsigned char fill32_15[15] =
+ {0xeb, 0x0d, 0x90, 0x90, 0x90, 0x90, /* 15 - jmp $+15; nop fill */
+ 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90};
+ static const unsigned char *fill32[16] =
+ {
+ NULL, fill32_1, fill32_2, fill32_3,
+ fill32_4, fill32_5, fill32_6, fill32_7,
+ fill32_8, fill32_9, fill32_10, fill32_11,
+ fill32_12, fill32_13, fill32_14, fill32_15
+ };
+
+ /* Long form nops available on more recent Intel and AMD processors */
+ static const unsigned char fill32new_3[3] =
+ {0x0f, 0x1f, 0x00}; /* 3 - nop(3) */
+ static const unsigned char fill32new_4[4] =
+ {0x0f, 0x1f, 0x40, 0x00}; /* 4 - nop(4) */
+ static const unsigned char fill32new_5[5] =
+ {0x0f, 0x1f, 0x44, 0x00, 0x00}; /* 5 - nop(5) */
+ static const unsigned char fill32new_6[6] =
+ {0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00}; /* 6 - nop(6) */
+ static const unsigned char fill32new_7[7] =
+ {0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00}; /* 7 - nop(7) */
+ static const unsigned char fill32new_8[8] =
+ {0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, /* 8 - nop(8) */
+ 0x00};
+ static const unsigned char fill32new_9[9] =
+ {0x66, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, /* 9 - nop(9) */
+ 0x00, 0x00};
+
+ /* Longer forms preferred by Intel use repeated o16 prefixes */
+ static const unsigned char fill32intel_10[10] =
+ {0x66, 0x2e, 0x0f, 0x1f, 0x84, 0x00, 0x00, /* 10 - o16; cs; nop */
+ 0x00, 0x00, 0x00};
+ static const unsigned char fill32intel_11[11] =
+ {0x66, 0x66, 0x2e, 0x0f, 0x1f, 0x84, 0x00, /* 11 - 2x o16; cs; nop */
+ 0x00, 0x00, 0x00, 0x00};
+ static const unsigned char fill32intel_12[12] =
+ {0x66, 0x66, 0x66, 0x2e, 0x0f, 0x1f, 0x84, /* 12 - 3x o16; cs; nop */
+ 0x00, 0x00, 0x00, 0x00, 0x00};
+ static const unsigned char fill32intel_13[13] =
+ {0x66, 0x66, 0x66, 0x66, 0x2e, 0x0f, 0x1f, /* 13 - 4x o16; cs; nop */
+ 0x84, 0x00, 0x00, 0x00, 0x00, 0x00};
+ static const unsigned char fill32intel_14[14] =
+ {0x66, 0x66, 0x66, 0x66, 0x66, 0x2e, 0x0f, /* 14 - 5x o16; cs; nop */
+ 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00};
+ static const unsigned char fill32intel_15[15] =
+ {0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x2e, /* 15 - 6x o16; cs; nop */
+ 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+ /* Longer forms preferred by AMD use fewer o16 prefixes and no CS prefix;
+ * Source: Software Optimisation Guide for AMD Family 10h
+ * Processors 40546 revision 3.10 February 2009
+ */
+ static const unsigned char fill32amd_10[10] =
+ {0x66, 0x66, 0x0f, 0x1f, 0x84, 0x00, 0x00, /* 10 - nop(10) */
+ 0x00, 0x00, 0x00};
+ static const unsigned char fill32amd_11[11] =
+ {0x0f, 0x1f, 0x44, 0x00, 0x00, /* 11 - nop(5) */
+ 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00}; /* nop(6) */
+ static const unsigned char fill32amd_12[12] =
+ {0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00, /* 12 - nop(6) */
+ 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00}; /* nop(6) */
+ static const unsigned char fill32amd_13[13] =
+ {0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00, /* 13 - nop(6) */
+ 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00}; /* nop(7) */
+ static const unsigned char fill32amd_14[14] =
+ {0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00, /* 14 - nop(7) */
+ 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00}; /* nop(7) */
+ static const unsigned char fill32amd_15[15] =
+ {0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00, /* 15 - nop(7) */
+ 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00}; /* nop(8) */
+
+ static const unsigned char *fill32_intel[16] =
+ {
+ NULL, fill32_1, fill32_2, fill32new_3,
+ fill32new_4, fill32new_5, fill32new_6, fill32new_7,
+ fill32new_8, fill32new_9, fill32intel_10, fill32intel_11,
+ fill32intel_12, fill32intel_13, fill32intel_14, fill32intel_15
+ };
+ static const unsigned char *fill32_amd[16] =
+ {
+ NULL, fill32_1, fill32_2, fill32new_3,
+ fill32new_4, fill32new_5, fill32new_6, fill32new_7,
+ fill32new_8, fill32new_9, fill32amd_10, fill32amd_11,
+ fill32amd_12, fill32amd_13, fill32amd_14, fill32amd_15
+ };
+
+ switch (arch_x86->mode_bits) {
+ case 16:
+ return fill16;
+ case 32:
+ if (arch_x86->nop == X86_NOP_INTEL)
+ return fill32_intel;
+ else if (arch_x86->nop == X86_NOP_AMD)
+ return fill32_amd;
+ else
+ return fill32;
+ case 64:
+ /* We know long nops are available in 64-bit mode; default to Intel
+ * ones if unspecified (to match GAS behavior).
+ */
+ if (arch_x86->nop == X86_NOP_AMD)
+ return fill32_amd;
+ else
+ return fill32_intel;
+ default:
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("Invalid mode_bits in x86_get_fill"));
+ return NULL;
+ }
+}
+
+unsigned int
+yasm_x86__get_reg_size(uintptr_t reg)
+{
+ switch ((x86_expritem_reg_size)(reg & ~0xFUL)) {
+ case X86_REG8:
+ case X86_REG8X:
+ return 8;
+ case X86_REG16:
+ return 16;
+ case X86_REG32:
+ case X86_CRREG:
+ case X86_DRREG:
+ case X86_TRREG:
+ return 32;
+ case X86_REG64:
+ case X86_MMXREG:
+ return 64;
+ case X86_XMMREG:
+ return 128;
+ case X86_YMMREG:
+ return 256;
+ case X86_FPUREG:
+ return 80;
+ default:
+ yasm_error_set(YASM_ERROR_VALUE, N_("unknown register size"));
+ }
+ return 0;
+}
+
+static unsigned int
+x86_get_reg_size(yasm_arch *arch, uintptr_t reg)
+{
+ return yasm_x86__get_reg_size(reg);
+}
+
+static uintptr_t
+x86_reggroup_get_reg(yasm_arch *arch, uintptr_t reggroup,
+ unsigned long regindex)
+{
+ yasm_arch_x86 *arch_x86 = (yasm_arch_x86 *)arch;
+ switch ((x86_expritem_reg_size)(reggroup & ~0xFUL)) {
+ case X86_XMMREG:
+ case X86_YMMREG:
+ if (arch_x86->mode_bits == 64) {
+ if (regindex > 15)
+ return 0;
+ return reggroup | (regindex & 15);
+ }
+ /*@fallthrough@*/
+ case X86_MMXREG:
+ case X86_FPUREG:
+ if (regindex > 7)
+ return 0;
+ return reggroup | (regindex & 7);
+ default:
+ yasm_error_set(YASM_ERROR_VALUE, N_("bad register group"));
+ }
+ return 0;
+}
+
+static void
+x86_reg_print(yasm_arch *arch, uintptr_t reg, FILE *f)
+{
+ static const char *name8[] = {"al","cl","dl","bl","ah","ch","dh","bh"};
+ static const char *name8x[] = {
+ "al", "cl", "dl", "bl", "spl", "bpl", "sil", "dil",
+ "r8b", "r9b", "r10b", "r11b", "r12b", "r13b", "r14b", "r15b"
+ };
+ static const char *name16[] = {
+ "ax", "cx", "dx", "bx", "sp", "bp", "si", "di",
+ "r8w", "r9w", "r10w", "r11w", "r12w", "r13w", "r14w", "r15w"
+ };
+ static const char *name32[] = {
+ "eax", "ecx", "edx", "ebx", "esp", "ebp", "esi", "edi",
+ "r8d", "r9d", "r10d", "r11d", "r12d", "r13d", "r14d", "r15d"
+ };
+ static const char *name64[] = {
+ "rax", "rcx", "rdx", "rbx", "rsp", "rbp", "rsi", "rdi",
+ "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15"
+ };
+
+ switch ((x86_expritem_reg_size)(reg & ~0xFUL)) {
+ case X86_REG8:
+ fprintf(f, "%s", name8[reg&0xF]);
+ break;
+ case X86_REG8X:
+ fprintf(f, "%s", name8x[reg&0xF]);
+ break;
+ case X86_REG16:
+ fprintf(f, "%s", name16[reg&0xF]);
+ break;
+ case X86_REG32:
+ fprintf(f, "%s", name32[reg&0xF]);
+ break;
+ case X86_REG64:
+ fprintf(f, "%s", name64[reg&0xF]);
+ break;
+ case X86_MMXREG:
+ fprintf(f, "mm%d", (int)(reg&0xF));
+ break;
+ case X86_XMMREG:
+ fprintf(f, "xmm%d", (int)(reg&0xF));
+ break;
+ case X86_YMMREG:
+ fprintf(f, "ymm%d", (int)(reg&0xF));
+ break;
+ case X86_CRREG:
+ fprintf(f, "cr%d", (int)(reg&0xF));
+ break;
+ case X86_DRREG:
+ fprintf(f, "dr%d", (int)(reg&0xF));
+ break;
+ case X86_TRREG:
+ fprintf(f, "tr%d", (int)(reg&0xF));
+ break;
+ case X86_FPUREG:
+ fprintf(f, "st%d", (int)(reg&0xF));
+ break;
+ default:
+ yasm_error_set(YASM_ERROR_VALUE, N_("unknown register size"));
+ }
+}
+
+static void
+x86_segreg_print(yasm_arch *arch, uintptr_t segreg, FILE *f)
+{
+ static const char *name[] = {"es","cs","ss","ds","fs","gs"};
+ fprintf(f, "%s", name[segreg&7]);
+}
+
+/* Define x86 machines -- see arch.h for details */
+static const yasm_arch_machine x86_machines[] = {
+ { "IA-32 and derivatives", "x86" },
+ { "AMD64", "amd64" },
+ { "X32", "x32" },
+ { NULL, NULL }
+};
+
+static const yasm_directive x86_directives[] = {
+ { "cpu", "nasm", x86_dir_cpu, YASM_DIR_ARG_REQUIRED },
+ { "bits", "nasm", x86_dir_bits, YASM_DIR_ARG_REQUIRED },
+ { ".code16", "gas", x86_dir_code16, YASM_DIR_ANY },
+ { ".code32", "gas", x86_dir_code32, YASM_DIR_ANY },
+ { ".code64", "gas", x86_dir_code64, YASM_DIR_ANY },
+ { NULL, NULL, NULL, 0 }
+};
+
+/* Define arch structure -- see arch.h for details */
+yasm_arch_module yasm_x86_LTX_arch = {
+ "x86 (IA-32 and derivatives), AMD64",
+ "x86",
+ x86_directives,
+ x86_create,
+ x86_destroy,
+ x86_get_machine,
+ x86_get_address_size,
+ x86_set_var,
+ yasm_x86__parse_check_insnprefix,
+ yasm_x86__parse_check_regtmod,
+ x86_get_fill,
+ yasm_x86__floatnum_tobytes,
+ yasm_x86__intnum_tobytes,
+ x86_get_reg_size,
+ x86_reggroup_get_reg,
+ x86_reg_print,
+ x86_segreg_print,
+ yasm_x86__ea_create_expr,
+ yasm_x86__ea_destroy,
+ yasm_x86__ea_print,
+ yasm_x86__create_empty_insn,
+ x86_machines,
+ "x86",
+ 16,
+ 1
+};
diff --git a/contrib/tools/yasm/modules/arch/x86/x86arch.h b/contrib/tools/yasm/modules/arch/x86/x86arch.h
index 48ad5ad5e7..78c3d73920 100644
--- a/contrib/tools/yasm/modules/arch/x86/x86arch.h
+++ b/contrib/tools/yasm/modules/arch/x86/x86arch.h
@@ -1,336 +1,336 @@
-/*
- * x86 Architecture header file
- *
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef YASM_X86ARCH_H
-#define YASM_X86ARCH_H
-
-#include <libyasm/bitvect.h>
-
-/* Available CPU feature flags */
-#define CPU_Any 0 /* Any old cpu will do */
-#define CPU_086 CPU_Any
-#define CPU_186 1 /* i186 or better required */
-#define CPU_286 2 /* i286 or better required */
-#define CPU_386 3 /* i386 or better required */
-#define CPU_486 4 /* i486 or better required */
-#define CPU_586 5 /* i585 or better required */
-#define CPU_686 6 /* i686 or better required */
-#define CPU_P3 7 /* Pentium3 or better required */
-#define CPU_P4 8 /* Pentium4 or better required */
-#define CPU_IA64 9 /* IA-64 or better required */
-#define CPU_K6 10 /* AMD K6 or better required */
-#define CPU_Athlon 11 /* AMD Athlon or better required */
-#define CPU_Hammer 12 /* AMD Sledgehammer or better required */
-#define CPU_FPU 13 /* FPU support required */
-#define CPU_MMX 14 /* MMX support required */
-#define CPU_SSE 15 /* Streaming SIMD extensions required */
-#define CPU_SSE2 16 /* Streaming SIMD extensions 2 required */
-#define CPU_SSE3 17 /* Streaming SIMD extensions 3 required */
-#define CPU_3DNow 18 /* 3DNow! support required */
-#define CPU_Cyrix 19 /* Cyrix-specific instruction */
-#define CPU_AMD 20 /* AMD-specific inst. (older than K6) */
-#define CPU_SMM 21 /* System Management Mode instruction */
-#define CPU_Prot 22 /* Protected mode only instruction */
-#define CPU_Undoc 23 /* Undocumented instruction */
-#define CPU_Obs 24 /* Obsolete instruction */
-#define CPU_Priv 25 /* Priveleged instruction */
-#define CPU_SVM 26 /* Secure Virtual Machine instruction */
-#define CPU_PadLock 27 /* VIA PadLock instruction */
-#define CPU_EM64T 28 /* Intel EM64T or better */
-#define CPU_SSSE3 29 /* Streaming SIMD extensions 3 required */
-#define CPU_SSE41 30 /* Streaming SIMD extensions 4.1 required */
-#define CPU_SSE42 31 /* Streaming SIMD extensions 4.2 required */
-#define CPU_SSE4a 32 /* AMD Streaming SIMD extensions 4a required */
-#define CPU_XSAVE 33 /* Intel XSAVE instructions */
-#define CPU_AVX 34 /* Intel Advanced Vector Extensions */
-#define CPU_FMA 35 /* Intel Fused-Multiply-Add Extensions */
-#define CPU_AES 36 /* AES instruction */
-#define CPU_CLMUL 37 /* PCLMULQDQ instruction */
-#define CPU_MOVBE 38 /* MOVBE instruction */
-#define CPU_XOP 39 /* AMD XOP extensions */
-#define CPU_FMA4 40 /* AMD Fused-Multiply-Add extensions */
-#define CPU_F16C 41 /* Intel float-16 instructions */
-#define CPU_FSGSBASE 42 /* Intel FSGSBASE instructions */
-#define CPU_RDRAND 43 /* Intel RDRAND instruction */
-#define CPU_XSAVEOPT 44 /* Intel XSAVEOPT instruction */
-#define CPU_EPTVPID 45 /* Intel INVEPT, INVVPID instructions */
-#define CPU_SMX 46 /* Intel SMX instruction (GETSEC) */
-#define CPU_AVX2 47 /* Intel AVX2 instructions */
-#define CPU_BMI1 48 /* Intel BMI1 instructions */
-#define CPU_BMI2 49 /* Intel BMI2 instructions */
-#define CPU_INVPCID 50 /* Intel INVPCID instruction */
-#define CPU_LZCNT 51 /* Intel LZCNT instruction */
-#define CPU_TBM 52 /* AMD TBM instruction */
-#define CPU_TSX 53 /* Intel TSX instructions */
-#define CPU_SHA 54 /* Intel SHA instructions */
-#define CPU_SMAP 55 /* Intel SMAP instructions */
-#define CPU_RDSEED 56 /* Intel RDSEED instruction */
-#define CPU_ADX 57 /* Intel ADCX and ADOX instructions */
-#define CPU_PRFCHW 58 /* Intel/AMD PREFETCHW instruction */
-
-enum x86_parser_type {
- X86_PARSER_NASM = 0,
- X86_PARSER_TASM = 1,
- X86_PARSER_GAS = 2
-};
-
-#define PARSER(arch) (((arch)->parser == X86_PARSER_GAS && (arch)->gas_intel_mode) ? X86_PARSER_NASM : (arch)->parser)
-
-typedef struct yasm_arch_x86 {
- yasm_arch_base arch; /* base structure */
-
- /* What instructions/features are enabled? */
- unsigned int active_cpu; /* active index into cpu_enables table */
- unsigned int cpu_enables_size; /* size of cpu_enables table */
- wordptr *cpu_enables;
-
- unsigned int amd64_machine;
- enum x86_parser_type parser;
- unsigned int mode_bits;
- unsigned int address_size;
- unsigned int force_strict;
- unsigned int default_rel;
- unsigned int gas_intel_mode;
-
- enum {
- X86_NOP_BASIC = 0,
- X86_NOP_INTEL = 1,
- X86_NOP_AMD = 2
- } nop;
-} yasm_arch_x86;
-
-/* 0-15 (low 4 bits) used for register number, stored in same data area.
- * Note 8-15 are only valid for some registers, and only in 64-bit mode.
- */
-typedef enum {
- X86_REG8 = 0x1<<4,
- X86_REG8X = 0x2<<4, /* 64-bit mode only, REX prefix version of REG8 */
- X86_REG16 = 0x3<<4,
- X86_REG32 = 0x4<<4,
- X86_REG64 = 0x5<<4, /* 64-bit mode only */
- X86_FPUREG = 0x6<<4,
- X86_MMXREG = 0x7<<4,
- X86_XMMREG = 0x8<<4,
- X86_YMMREG = 0x9<<4,
- X86_CRREG = 0xA<<4,
- X86_DRREG = 0xB<<4,
- X86_TRREG = 0xC<<4,
- X86_RIP = 0xD<<4 /* 64-bit mode only, always RIP (regnum ignored) */
-} x86_expritem_reg_size;
-
-/* Low 8 bits are used for the prefix value, stored in same data area. */
-typedef enum {
- X86_LOCKREP = 1<<8,
- X86_ADDRSIZE = 2<<8,
- X86_OPERSIZE = 3<<8,
- X86_SEGREG = 4<<8,
- X86_REX = 5<<8,
- X86_ACQREL = 6<<8 /*TSX hint prefixes*/
-} x86_parse_insn_prefix;
-
-typedef enum {
- X86_NEAR = 1,
- X86_SHORT,
- X86_FAR,
- X86_TO
-} x86_parse_targetmod;
-
-typedef enum {
- JMP_NONE,
- JMP_SHORT,
- JMP_NEAR,
- JMP_SHORT_FORCED,
- JMP_NEAR_FORCED
-} x86_jmp_opcode_sel;
-
-typedef enum {
- X86_REX_W = 3,
- X86_REX_R = 2,
- X86_REX_X = 1,
- X86_REX_B = 0
-} x86_rex_bit_pos;
-
-/* Sets REX (4th bit) and 3 LS bits from register size/number. Returns 1 if
- * impossible to fit reg into REX, otherwise returns 0. Input parameter rexbit
- * indicates bit of REX to use if REX is needed. Will not modify REX if not
- * in 64-bit mode or if it wasn't needed to express reg.
- */
-int yasm_x86__set_rex_from_reg(unsigned char *rex, unsigned char *low3,
- uintptr_t reg, unsigned int bits,
- x86_rex_bit_pos rexbit);
-
-/* Effective address type */
-typedef struct x86_effaddr {
- yasm_effaddr ea; /* base structure */
-
- /* VSIB uses the normal SIB byte, but this flag enables it. */
- unsigned char vsib_mode; /* 0 if not, 1 if XMM, 2 if YMM */
-
- /* How the spare (register) bits in Mod/RM are handled:
- * Even if valid_modrm=0, the spare bits are still valid (don't overwrite!)
- * They're set in bytecode_create_insn().
- */
- unsigned char modrm;
- unsigned char valid_modrm; /* 1 if Mod/RM byte currently valid, 0 if not */
- unsigned char need_modrm; /* 1 if Mod/RM byte needed, 0 if not */
-
- unsigned char sib;
- unsigned char valid_sib; /* 1 if SIB byte currently valid, 0 if not */
- unsigned char need_sib; /* 1 if SIB byte needed, 0 if not,
- 0xff if unknown */
-} x86_effaddr;
-
-void yasm_x86__ea_init(x86_effaddr *x86_ea, unsigned int spare,
- yasm_bytecode *precbc);
-
-void yasm_x86__ea_set_disponly(x86_effaddr *x86_ea);
-x86_effaddr *yasm_x86__ea_create_reg(x86_effaddr *x86_ea, unsigned long reg,
- unsigned char *rex, unsigned int bits);
-x86_effaddr *yasm_x86__ea_create_imm
- (x86_effaddr *x86_ea, /*@keep@*/ yasm_expr *imm, unsigned int im_len);
-yasm_effaddr *yasm_x86__ea_create_expr(yasm_arch *arch,
- /*@keep@*/ yasm_expr *e);
-void yasm_x86__ea_destroy(yasm_effaddr *ea);
-void yasm_x86__ea_print(const yasm_effaddr *ea, FILE *f, int indent_level);
-
-void yasm_x86__bc_insn_opersize_override(yasm_bytecode *bc,
- unsigned int opersize);
-void yasm_x86__bc_insn_addrsize_override(yasm_bytecode *bc,
- unsigned int addrsize);
-void yasm_x86__bc_insn_set_lockrep_prefix(yasm_bytecode *bc,
- unsigned int prefix);
-
-/* Bytecode types */
-typedef struct x86_common {
- unsigned char addrsize; /* 0 or =mode_bits => no override */
- unsigned char opersize; /* 0 or =mode_bits => no override */
- unsigned char lockrep_pre; /* 0 indicates no prefix */
- unsigned char acqrel_pre; /* 0 indicates no prefix. We need this because
- xqcuire/xrelease might require F0 prefix */
-
- unsigned char mode_bits;
-} x86_common;
-
-typedef struct x86_opcode {
- unsigned char opcode[3]; /* opcode */
- unsigned char len;
-} x86_opcode;
-
-typedef struct x86_insn {
- x86_common common; /* common x86 information */
- x86_opcode opcode;
-
- /*@null@*/ x86_effaddr *x86_ea; /* effective address */
-
- /*@null@*/ yasm_value *imm; /* immediate or relative value */
-
- unsigned char def_opersize_64; /* default operand size in 64-bit mode */
- unsigned char special_prefix; /* "special" prefix (0=none) */
-
- unsigned char rex; /* REX AMD64 extension, 0 if none,
- 0xff if not allowed (high 8 bit reg used) */
-
- /* Postponed (from parsing to later binding) action options. */
- enum {
- /* None */
- X86_POSTOP_NONE = 0,
-
- /* Instructions that take a sign-extended imm8 as well as imm values
- * (eg, the arith instructions and a subset of the imul instructions)
- * should set this and put the imm8 form as the "normal" opcode (in
- * the first one or two bytes) and non-imm8 form in the second or
- * third byte of the opcode.
- */
- X86_POSTOP_SIGNEXT_IMM8,
-
- /* Override any attempt at address-size override to 16 bits, and never
- * generate a prefix. This is used for the ENTER opcode.
- */
- X86_POSTOP_ADDRESS16
- } postop;
-} x86_insn;
-
-typedef struct x86_jmp {
- x86_common common; /* common x86 information */
- x86_opcode shortop, nearop;
-
- yasm_value target; /* jump target */
-
- /* which opcode are we using? */
- /* The *FORCED forms are specified in the source as such */
- x86_jmp_opcode_sel op_sel;
-} x86_jmp;
-
-/* Direct (immediate) FAR jumps ONLY; indirect FAR jumps get turned into
- * x86_insn bytecodes; relative jumps turn into x86_jmp bytecodes.
- * This bytecode is not legal in 64-bit mode.
- */
-typedef struct x86_jmpfar {
- x86_common common; /* common x86 information */
- x86_opcode opcode;
-
- yasm_value segment; /* target segment */
- yasm_value offset; /* target offset */
-} x86_jmpfar;
-
-void yasm_x86__bc_transform_insn(yasm_bytecode *bc, x86_insn *insn);
-void yasm_x86__bc_transform_jmp(yasm_bytecode *bc, x86_jmp *jmp);
-void yasm_x86__bc_transform_jmpfar(yasm_bytecode *bc, x86_jmpfar *jmpfar);
-
-void yasm_x86__bc_apply_prefixes
- (x86_common *common, unsigned char *rex, unsigned int def_opersize_64,
- unsigned int num_prefixes, uintptr_t *prefixes);
-
-/* Check an effective address. Returns 0 if EA was successfully determined,
- * 1 if invalid EA, or 2 if indeterminate EA.
- */
-int yasm_x86__expr_checkea
- (x86_effaddr *x86_ea, unsigned char *addrsize, unsigned int bits,
- int address16_op, unsigned char *rex, yasm_bytecode *bc);
-
-void yasm_x86__parse_cpu(yasm_arch_x86 *arch_x86, const char *cpuid,
- size_t cpuid_len);
-
-yasm_arch_insnprefix yasm_x86__parse_check_insnprefix
- (yasm_arch *arch, const char *id, size_t id_len, unsigned long line,
- /*@out@*/ yasm_bytecode **bc, /*@out@*/ uintptr_t *prefix);
-yasm_arch_regtmod yasm_x86__parse_check_regtmod
- (yasm_arch *arch, const char *id, size_t id_len,
- /*@out@*/ uintptr_t *data);
-
-int yasm_x86__floatnum_tobytes
- (yasm_arch *arch, const yasm_floatnum *flt, unsigned char *buf,
- size_t destsize, size_t valsize, size_t shift, int warn);
-int yasm_x86__intnum_tobytes
- (yasm_arch *arch, const yasm_intnum *intn, unsigned char *buf,
- size_t destsize, size_t valsize, int shift, const yasm_bytecode *bc,
- int warn);
-
-unsigned int yasm_x86__get_reg_size(uintptr_t reg);
-
-/*@only@*/ yasm_bytecode *yasm_x86__create_empty_insn(yasm_arch *arch,
- unsigned long line);
-#endif
+/*
+ * x86 Architecture header file
+ *
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef YASM_X86ARCH_H
+#define YASM_X86ARCH_H
+
+#include <libyasm/bitvect.h>
+
+/* Available CPU feature flags */
+#define CPU_Any 0 /* Any old cpu will do */
+#define CPU_086 CPU_Any
+#define CPU_186 1 /* i186 or better required */
+#define CPU_286 2 /* i286 or better required */
+#define CPU_386 3 /* i386 or better required */
+#define CPU_486 4 /* i486 or better required */
+#define CPU_586 5 /* i585 or better required */
+#define CPU_686 6 /* i686 or better required */
+#define CPU_P3 7 /* Pentium3 or better required */
+#define CPU_P4 8 /* Pentium4 or better required */
+#define CPU_IA64 9 /* IA-64 or better required */
+#define CPU_K6 10 /* AMD K6 or better required */
+#define CPU_Athlon 11 /* AMD Athlon or better required */
+#define CPU_Hammer 12 /* AMD Sledgehammer or better required */
+#define CPU_FPU 13 /* FPU support required */
+#define CPU_MMX 14 /* MMX support required */
+#define CPU_SSE 15 /* Streaming SIMD extensions required */
+#define CPU_SSE2 16 /* Streaming SIMD extensions 2 required */
+#define CPU_SSE3 17 /* Streaming SIMD extensions 3 required */
+#define CPU_3DNow 18 /* 3DNow! support required */
+#define CPU_Cyrix 19 /* Cyrix-specific instruction */
+#define CPU_AMD 20 /* AMD-specific inst. (older than K6) */
+#define CPU_SMM 21 /* System Management Mode instruction */
+#define CPU_Prot 22 /* Protected mode only instruction */
+#define CPU_Undoc 23 /* Undocumented instruction */
+#define CPU_Obs 24 /* Obsolete instruction */
+#define CPU_Priv 25 /* Priveleged instruction */
+#define CPU_SVM 26 /* Secure Virtual Machine instruction */
+#define CPU_PadLock 27 /* VIA PadLock instruction */
+#define CPU_EM64T 28 /* Intel EM64T or better */
+#define CPU_SSSE3 29 /* Streaming SIMD extensions 3 required */
+#define CPU_SSE41 30 /* Streaming SIMD extensions 4.1 required */
+#define CPU_SSE42 31 /* Streaming SIMD extensions 4.2 required */
+#define CPU_SSE4a 32 /* AMD Streaming SIMD extensions 4a required */
+#define CPU_XSAVE 33 /* Intel XSAVE instructions */
+#define CPU_AVX 34 /* Intel Advanced Vector Extensions */
+#define CPU_FMA 35 /* Intel Fused-Multiply-Add Extensions */
+#define CPU_AES 36 /* AES instruction */
+#define CPU_CLMUL 37 /* PCLMULQDQ instruction */
+#define CPU_MOVBE 38 /* MOVBE instruction */
+#define CPU_XOP 39 /* AMD XOP extensions */
+#define CPU_FMA4 40 /* AMD Fused-Multiply-Add extensions */
+#define CPU_F16C 41 /* Intel float-16 instructions */
+#define CPU_FSGSBASE 42 /* Intel FSGSBASE instructions */
+#define CPU_RDRAND 43 /* Intel RDRAND instruction */
+#define CPU_XSAVEOPT 44 /* Intel XSAVEOPT instruction */
+#define CPU_EPTVPID 45 /* Intel INVEPT, INVVPID instructions */
+#define CPU_SMX 46 /* Intel SMX instruction (GETSEC) */
+#define CPU_AVX2 47 /* Intel AVX2 instructions */
+#define CPU_BMI1 48 /* Intel BMI1 instructions */
+#define CPU_BMI2 49 /* Intel BMI2 instructions */
+#define CPU_INVPCID 50 /* Intel INVPCID instruction */
+#define CPU_LZCNT 51 /* Intel LZCNT instruction */
+#define CPU_TBM 52 /* AMD TBM instruction */
+#define CPU_TSX 53 /* Intel TSX instructions */
+#define CPU_SHA 54 /* Intel SHA instructions */
+#define CPU_SMAP 55 /* Intel SMAP instructions */
+#define CPU_RDSEED 56 /* Intel RDSEED instruction */
+#define CPU_ADX 57 /* Intel ADCX and ADOX instructions */
+#define CPU_PRFCHW 58 /* Intel/AMD PREFETCHW instruction */
+
+enum x86_parser_type {
+ X86_PARSER_NASM = 0,
+ X86_PARSER_TASM = 1,
+ X86_PARSER_GAS = 2
+};
+
+#define PARSER(arch) (((arch)->parser == X86_PARSER_GAS && (arch)->gas_intel_mode) ? X86_PARSER_NASM : (arch)->parser)
+
+typedef struct yasm_arch_x86 {
+ yasm_arch_base arch; /* base structure */
+
+ /* What instructions/features are enabled? */
+ unsigned int active_cpu; /* active index into cpu_enables table */
+ unsigned int cpu_enables_size; /* size of cpu_enables table */
+ wordptr *cpu_enables;
+
+ unsigned int amd64_machine;
+ enum x86_parser_type parser;
+ unsigned int mode_bits;
+ unsigned int address_size;
+ unsigned int force_strict;
+ unsigned int default_rel;
+ unsigned int gas_intel_mode;
+
+ enum {
+ X86_NOP_BASIC = 0,
+ X86_NOP_INTEL = 1,
+ X86_NOP_AMD = 2
+ } nop;
+} yasm_arch_x86;
+
+/* 0-15 (low 4 bits) used for register number, stored in same data area.
+ * Note 8-15 are only valid for some registers, and only in 64-bit mode.
+ */
+typedef enum {
+ X86_REG8 = 0x1<<4,
+ X86_REG8X = 0x2<<4, /* 64-bit mode only, REX prefix version of REG8 */
+ X86_REG16 = 0x3<<4,
+ X86_REG32 = 0x4<<4,
+ X86_REG64 = 0x5<<4, /* 64-bit mode only */
+ X86_FPUREG = 0x6<<4,
+ X86_MMXREG = 0x7<<4,
+ X86_XMMREG = 0x8<<4,
+ X86_YMMREG = 0x9<<4,
+ X86_CRREG = 0xA<<4,
+ X86_DRREG = 0xB<<4,
+ X86_TRREG = 0xC<<4,
+ X86_RIP = 0xD<<4 /* 64-bit mode only, always RIP (regnum ignored) */
+} x86_expritem_reg_size;
+
+/* Low 8 bits are used for the prefix value, stored in same data area. */
+typedef enum {
+ X86_LOCKREP = 1<<8,
+ X86_ADDRSIZE = 2<<8,
+ X86_OPERSIZE = 3<<8,
+ X86_SEGREG = 4<<8,
+ X86_REX = 5<<8,
+ X86_ACQREL = 6<<8 /*TSX hint prefixes*/
+} x86_parse_insn_prefix;
+
+typedef enum {
+ X86_NEAR = 1,
+ X86_SHORT,
+ X86_FAR,
+ X86_TO
+} x86_parse_targetmod;
+
+typedef enum {
+ JMP_NONE,
+ JMP_SHORT,
+ JMP_NEAR,
+ JMP_SHORT_FORCED,
+ JMP_NEAR_FORCED
+} x86_jmp_opcode_sel;
+
+typedef enum {
+ X86_REX_W = 3,
+ X86_REX_R = 2,
+ X86_REX_X = 1,
+ X86_REX_B = 0
+} x86_rex_bit_pos;
+
+/* Sets REX (4th bit) and 3 LS bits from register size/number. Returns 1 if
+ * impossible to fit reg into REX, otherwise returns 0. Input parameter rexbit
+ * indicates bit of REX to use if REX is needed. Will not modify REX if not
+ * in 64-bit mode or if it wasn't needed to express reg.
+ */
+int yasm_x86__set_rex_from_reg(unsigned char *rex, unsigned char *low3,
+ uintptr_t reg, unsigned int bits,
+ x86_rex_bit_pos rexbit);
+
+/* Effective address type */
+typedef struct x86_effaddr {
+ yasm_effaddr ea; /* base structure */
+
+ /* VSIB uses the normal SIB byte, but this flag enables it. */
+ unsigned char vsib_mode; /* 0 if not, 1 if XMM, 2 if YMM */
+
+ /* How the spare (register) bits in Mod/RM are handled:
+ * Even if valid_modrm=0, the spare bits are still valid (don't overwrite!)
+ * They're set in bytecode_create_insn().
+ */
+ unsigned char modrm;
+ unsigned char valid_modrm; /* 1 if Mod/RM byte currently valid, 0 if not */
+ unsigned char need_modrm; /* 1 if Mod/RM byte needed, 0 if not */
+
+ unsigned char sib;
+ unsigned char valid_sib; /* 1 if SIB byte currently valid, 0 if not */
+ unsigned char need_sib; /* 1 if SIB byte needed, 0 if not,
+ 0xff if unknown */
+} x86_effaddr;
+
+void yasm_x86__ea_init(x86_effaddr *x86_ea, unsigned int spare,
+ yasm_bytecode *precbc);
+
+void yasm_x86__ea_set_disponly(x86_effaddr *x86_ea);
+x86_effaddr *yasm_x86__ea_create_reg(x86_effaddr *x86_ea, unsigned long reg,
+ unsigned char *rex, unsigned int bits);
+x86_effaddr *yasm_x86__ea_create_imm
+ (x86_effaddr *x86_ea, /*@keep@*/ yasm_expr *imm, unsigned int im_len);
+yasm_effaddr *yasm_x86__ea_create_expr(yasm_arch *arch,
+ /*@keep@*/ yasm_expr *e);
+void yasm_x86__ea_destroy(yasm_effaddr *ea);
+void yasm_x86__ea_print(const yasm_effaddr *ea, FILE *f, int indent_level);
+
+void yasm_x86__bc_insn_opersize_override(yasm_bytecode *bc,
+ unsigned int opersize);
+void yasm_x86__bc_insn_addrsize_override(yasm_bytecode *bc,
+ unsigned int addrsize);
+void yasm_x86__bc_insn_set_lockrep_prefix(yasm_bytecode *bc,
+ unsigned int prefix);
+
+/* Bytecode types */
+typedef struct x86_common {
+ unsigned char addrsize; /* 0 or =mode_bits => no override */
+ unsigned char opersize; /* 0 or =mode_bits => no override */
+ unsigned char lockrep_pre; /* 0 indicates no prefix */
+ unsigned char acqrel_pre; /* 0 indicates no prefix. We need this because
+ xqcuire/xrelease might require F0 prefix */
+
+ unsigned char mode_bits;
+} x86_common;
+
+typedef struct x86_opcode {
+ unsigned char opcode[3]; /* opcode */
+ unsigned char len;
+} x86_opcode;
+
+typedef struct x86_insn {
+ x86_common common; /* common x86 information */
+ x86_opcode opcode;
+
+ /*@null@*/ x86_effaddr *x86_ea; /* effective address */
+
+ /*@null@*/ yasm_value *imm; /* immediate or relative value */
+
+ unsigned char def_opersize_64; /* default operand size in 64-bit mode */
+ unsigned char special_prefix; /* "special" prefix (0=none) */
+
+ unsigned char rex; /* REX AMD64 extension, 0 if none,
+ 0xff if not allowed (high 8 bit reg used) */
+
+ /* Postponed (from parsing to later binding) action options. */
+ enum {
+ /* None */
+ X86_POSTOP_NONE = 0,
+
+ /* Instructions that take a sign-extended imm8 as well as imm values
+ * (eg, the arith instructions and a subset of the imul instructions)
+ * should set this and put the imm8 form as the "normal" opcode (in
+ * the first one or two bytes) and non-imm8 form in the second or
+ * third byte of the opcode.
+ */
+ X86_POSTOP_SIGNEXT_IMM8,
+
+ /* Override any attempt at address-size override to 16 bits, and never
+ * generate a prefix. This is used for the ENTER opcode.
+ */
+ X86_POSTOP_ADDRESS16
+ } postop;
+} x86_insn;
+
+typedef struct x86_jmp {
+ x86_common common; /* common x86 information */
+ x86_opcode shortop, nearop;
+
+ yasm_value target; /* jump target */
+
+ /* which opcode are we using? */
+ /* The *FORCED forms are specified in the source as such */
+ x86_jmp_opcode_sel op_sel;
+} x86_jmp;
+
+/* Direct (immediate) FAR jumps ONLY; indirect FAR jumps get turned into
+ * x86_insn bytecodes; relative jumps turn into x86_jmp bytecodes.
+ * This bytecode is not legal in 64-bit mode.
+ */
+typedef struct x86_jmpfar {
+ x86_common common; /* common x86 information */
+ x86_opcode opcode;
+
+ yasm_value segment; /* target segment */
+ yasm_value offset; /* target offset */
+} x86_jmpfar;
+
+void yasm_x86__bc_transform_insn(yasm_bytecode *bc, x86_insn *insn);
+void yasm_x86__bc_transform_jmp(yasm_bytecode *bc, x86_jmp *jmp);
+void yasm_x86__bc_transform_jmpfar(yasm_bytecode *bc, x86_jmpfar *jmpfar);
+
+void yasm_x86__bc_apply_prefixes
+ (x86_common *common, unsigned char *rex, unsigned int def_opersize_64,
+ unsigned int num_prefixes, uintptr_t *prefixes);
+
+/* Check an effective address. Returns 0 if EA was successfully determined,
+ * 1 if invalid EA, or 2 if indeterminate EA.
+ */
+int yasm_x86__expr_checkea
+ (x86_effaddr *x86_ea, unsigned char *addrsize, unsigned int bits,
+ int address16_op, unsigned char *rex, yasm_bytecode *bc);
+
+void yasm_x86__parse_cpu(yasm_arch_x86 *arch_x86, const char *cpuid,
+ size_t cpuid_len);
+
+yasm_arch_insnprefix yasm_x86__parse_check_insnprefix
+ (yasm_arch *arch, const char *id, size_t id_len, unsigned long line,
+ /*@out@*/ yasm_bytecode **bc, /*@out@*/ uintptr_t *prefix);
+yasm_arch_regtmod yasm_x86__parse_check_regtmod
+ (yasm_arch *arch, const char *id, size_t id_len,
+ /*@out@*/ uintptr_t *data);
+
+int yasm_x86__floatnum_tobytes
+ (yasm_arch *arch, const yasm_floatnum *flt, unsigned char *buf,
+ size_t destsize, size_t valsize, size_t shift, int warn);
+int yasm_x86__intnum_tobytes
+ (yasm_arch *arch, const yasm_intnum *intn, unsigned char *buf,
+ size_t destsize, size_t valsize, int shift, const yasm_bytecode *bc,
+ int warn);
+
+unsigned int yasm_x86__get_reg_size(uintptr_t reg);
+
+/*@only@*/ yasm_bytecode *yasm_x86__create_empty_insn(yasm_arch *arch,
+ unsigned long line);
+#endif
diff --git a/contrib/tools/yasm/modules/arch/x86/x86bc.c b/contrib/tools/yasm/modules/arch/x86/x86bc.c
index 2c51169b21..a6681552dd 100644
--- a/contrib/tools/yasm/modules/arch/x86/x86bc.c
+++ b/contrib/tools/yasm/modules/arch/x86/x86bc.c
@@ -1,1062 +1,1062 @@
-/*
- * x86 bytecode utility functions
- *
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <libyasm.h>
-
-#include "x86arch.h"
-
-
-/* Bytecode callback function prototypes */
-
-static void x86_bc_insn_destroy(void *contents);
-static void x86_bc_insn_print(const void *contents, FILE *f,
- int indent_level);
-static int x86_bc_insn_calc_len(yasm_bytecode *bc,
- yasm_bc_add_span_func add_span,
- void *add_span_data);
-static int x86_bc_insn_expand(yasm_bytecode *bc, int span, long old_val,
- long new_val, /*@out@*/ long *neg_thres,
- /*@out@*/ long *pos_thres);
-static int x86_bc_insn_tobytes(yasm_bytecode *bc, unsigned char **bufp,
- unsigned char *bufstart,
- void *d, yasm_output_value_func output_value,
- /*@null@*/ yasm_output_reloc_func output_reloc);
-
-static void x86_bc_jmp_destroy(void *contents);
-static void x86_bc_jmp_print(const void *contents, FILE *f, int indent_level);
-static int x86_bc_jmp_calc_len(yasm_bytecode *bc,
- yasm_bc_add_span_func add_span,
- void *add_span_data);
-static int x86_bc_jmp_expand(yasm_bytecode *bc, int span, long old_val,
- long new_val, /*@out@*/ long *neg_thres,
- /*@out@*/ long *pos_thres);
-static int x86_bc_jmp_tobytes(yasm_bytecode *bc, unsigned char **bufp,
- unsigned char *bufstart,
- void *d, yasm_output_value_func output_value,
- /*@null@*/ yasm_output_reloc_func output_reloc);
-
-static void x86_bc_jmpfar_destroy(void *contents);
-static void x86_bc_jmpfar_print(const void *contents, FILE *f,
- int indent_level);
-static int x86_bc_jmpfar_calc_len(yasm_bytecode *bc,
- yasm_bc_add_span_func add_span,
- void *add_span_data);
-static int x86_bc_jmpfar_tobytes
- (yasm_bytecode *bc, unsigned char **bufp, unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- /*@null@*/ yasm_output_reloc_func output_reloc);
-
-/* Bytecode callback structures */
-
-static const yasm_bytecode_callback x86_bc_callback_insn = {
- x86_bc_insn_destroy,
- x86_bc_insn_print,
- yasm_bc_finalize_common,
- NULL,
- x86_bc_insn_calc_len,
- x86_bc_insn_expand,
- x86_bc_insn_tobytes,
- 0
-};
-
-static const yasm_bytecode_callback x86_bc_callback_jmp = {
- x86_bc_jmp_destroy,
- x86_bc_jmp_print,
- yasm_bc_finalize_common,
- NULL,
- x86_bc_jmp_calc_len,
- x86_bc_jmp_expand,
- x86_bc_jmp_tobytes,
- 0
-};
-
-static const yasm_bytecode_callback x86_bc_callback_jmpfar = {
- x86_bc_jmpfar_destroy,
- x86_bc_jmpfar_print,
- yasm_bc_finalize_common,
- NULL,
- x86_bc_jmpfar_calc_len,
- yasm_bc_expand_common,
- x86_bc_jmpfar_tobytes,
- 0
-};
-
-int
-yasm_x86__set_rex_from_reg(unsigned char *rex, unsigned char *low3,
- uintptr_t reg, unsigned int bits,
- x86_rex_bit_pos rexbit)
-{
- *low3 = (unsigned char)(reg&7);
-
- if (bits == 64) {
- x86_expritem_reg_size size = (x86_expritem_reg_size)(reg & ~0xFUL);
-
- if (size == X86_REG8X || (reg & 0xF) >= 8) {
- /* Check to make sure we can set it */
- if (*rex == 0xff) {
- yasm_error_set(YASM_ERROR_TYPE,
- N_("cannot use A/B/C/DH with instruction needing REX"));
- return 1;
- }
- *rex |= 0x40 | (((reg & 8) >> 3) << rexbit);
- } else if (size == X86_REG8 && (reg & 7) >= 4) {
- /* AH/BH/CH/DH, so no REX allowed */
- if (*rex != 0 && *rex != 0xff) {
- yasm_error_set(YASM_ERROR_TYPE,
- N_("cannot use A/B/C/DH with instruction needing REX"));
- return 1;
- }
- *rex = 0xff; /* Flag so we can NEVER set it (see above) */
- }
- }
-
- return 0;
-}
-
-void
-yasm_x86__bc_transform_insn(yasm_bytecode *bc, x86_insn *insn)
-{
- yasm_bc_transform(bc, &x86_bc_callback_insn, insn);
-}
-
-void
-yasm_x86__bc_transform_jmp(yasm_bytecode *bc, x86_jmp *jmp)
-{
- yasm_bc_transform(bc, &x86_bc_callback_jmp, jmp);
-}
-
-void
-yasm_x86__bc_transform_jmpfar(yasm_bytecode *bc, x86_jmpfar *jmpfar)
-{
- yasm_bc_transform(bc, &x86_bc_callback_jmpfar, jmpfar);
-}
-
-void
-yasm_x86__ea_init(x86_effaddr *x86_ea, unsigned int spare,
- yasm_bytecode *precbc)
-{
- if (yasm_value_finalize(&x86_ea->ea.disp, precbc))
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("effective address too complex"));
- x86_ea->modrm &= 0xC7; /* zero spare/reg bits */
- x86_ea->modrm |= (spare << 3) & 0x38; /* plug in provided bits */
-}
-
-void
-yasm_x86__ea_set_disponly(x86_effaddr *x86_ea)
-{
- x86_ea->valid_modrm = 0;
- x86_ea->need_modrm = 0;
- x86_ea->valid_sib = 0;
- x86_ea->need_sib = 0;
-}
-
-static x86_effaddr *
-ea_create(void)
-{
- x86_effaddr *x86_ea = yasm_xmalloc(sizeof(x86_effaddr));
-
- yasm_value_initialize(&x86_ea->ea.disp, NULL, 0);
- x86_ea->ea.need_nonzero_len = 0;
- x86_ea->ea.need_disp = 0;
- x86_ea->ea.nosplit = 0;
- x86_ea->ea.strong = 0;
- x86_ea->ea.segreg = 0;
- x86_ea->ea.pc_rel = 0;
- x86_ea->ea.not_pc_rel = 0;
- x86_ea->ea.data_len = 0;
- x86_ea->vsib_mode = 0;
- x86_ea->modrm = 0;
- x86_ea->valid_modrm = 0;
- x86_ea->need_modrm = 0;
- x86_ea->sib = 0;
- x86_ea->valid_sib = 0;
- x86_ea->need_sib = 0;
-
- return x86_ea;
-}
-
-x86_effaddr *
-yasm_x86__ea_create_reg(x86_effaddr *x86_ea, unsigned long reg,
- unsigned char *rex, unsigned int bits)
-{
- unsigned char rm;
-
- if (yasm_x86__set_rex_from_reg(rex, &rm, reg, bits, X86_REX_B))
- return NULL;
-
- if (!x86_ea)
- x86_ea = ea_create();
- x86_ea->modrm = 0xC0 | rm; /* Mod=11, R/M=Reg, Reg=0 */
- x86_ea->valid_modrm = 1;
- x86_ea->need_modrm = 1;
-
- return x86_ea;
-}
-
-yasm_effaddr *
-yasm_x86__ea_create_expr(yasm_arch *arch, yasm_expr *e)
-{
- yasm_arch_x86 *arch_x86 = (yasm_arch_x86 *)arch;
- x86_effaddr *x86_ea;
-
- x86_ea = ea_create();
-
- if (arch_x86->parser == X86_PARSER_GAS) {
- /* Need to change foo+rip into foo wrt rip (even in .intel_syntax mode).
- * Note this assumes a particular ordering coming from the parser
- * to work (it's not very smart)!
- */
- if (e->op == YASM_EXPR_ADD && e->terms[0].type == YASM_EXPR_REG
- && e->terms[0].data.reg == X86_RIP) {
- /* replace register with 0 */
- e->terms[0].type = YASM_EXPR_INT;
- e->terms[0].data.intn = yasm_intnum_create_uint(0);
- /* build new wrt expression */
- e = yasm_expr_create(YASM_EXPR_WRT, yasm_expr_expr(e),
- yasm_expr_reg(X86_RIP), e->line);
- }
- }
- yasm_value_initialize(&x86_ea->ea.disp, e, 0);
- x86_ea->ea.need_disp = 1;
- x86_ea->need_modrm = 1;
- /* We won't know whether we need an SIB until we know more about expr and
- * the BITS/address override setting.
- */
- x86_ea->need_sib = 0xff;
-
- x86_ea->ea.data_len = 0;
-
- return (yasm_effaddr *)x86_ea;
-}
-
-/*@-compmempass@*/
-x86_effaddr *
-yasm_x86__ea_create_imm(x86_effaddr *x86_ea, yasm_expr *imm,
- unsigned int im_len)
-{
- if (!x86_ea)
- x86_ea = ea_create();
- yasm_value_initialize(&x86_ea->ea.disp, imm, im_len);
- x86_ea->ea.need_disp = 1;
-
- return x86_ea;
-}
-/*@=compmempass@*/
-
-void
-yasm_x86__bc_apply_prefixes(x86_common *common, unsigned char *rex,
- unsigned int def_opersize_64,
- unsigned int num_prefixes, uintptr_t *prefixes)
-{
- unsigned int i;
- int first = 1;
-
- for (i=0; i<num_prefixes; i++) {
- switch ((x86_parse_insn_prefix)(prefixes[i] & 0xff00)) {
- /*To be accurate, we should enforce that TSX hints come only with a
- predefined set of instructions, and in most cases only with F0
- prefix. Otherwise they will have completely different semantics.
- But F0 prefix can come only with a predefined set of instructions
- too. And if it comes with other instructions, CPU will #UD.
- Hence, F0-applicability should be enforced too. But it's not
- currently. Maybe it is the decision made, that user should know
- himself what he is doing with LOCK prefix. In this case, we should
- not enforce TSX hints applicability too. And let user take care of
- correct usage of TSX hints.
- That is what we are going to do.*/
- case X86_ACQREL:
- if (common->acqrel_pre != 0)
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("multiple XACQUIRE/XRELEASE prefixes, "
- "using leftmost"));
- common->acqrel_pre = (unsigned char)prefixes[i] & 0xff;
- break;
- case X86_LOCKREP:
- if (common->lockrep_pre != 0)
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("multiple LOCK or REP prefixes, using leftmost"));
- common->lockrep_pre = (unsigned char)prefixes[i] & 0xff;
- break;
- case X86_ADDRSIZE:
- common->addrsize = (unsigned char)prefixes[i] & 0xff;
- break;
- case X86_OPERSIZE:
- common->opersize = (unsigned char)prefixes[i] & 0xff;
- if (common->mode_bits == 64 && common->opersize == 64 &&
- def_opersize_64 != 64) {
- if (!rex)
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("ignoring REX prefix on jump"));
- else if (*rex == 0xff)
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("REX prefix not allowed on this instruction, ignoring"));
- else
- *rex = 0x48;
- }
- break;
- case X86_SEGREG:
- /* This is a hack.. we should really be putting this in the
- * the effective address!
- */
- common->lockrep_pre = (unsigned char)prefixes[i] & 0xff;
- break;
- case X86_REX:
- if (!rex)
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("ignoring REX prefix on jump"));
- else if (*rex == 0xff)
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("REX prefix not allowed on this instruction, ignoring"));
- else {
- if (*rex != 0) {
- if (first)
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("overriding generated REX prefix"));
- else
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("multiple REX prefixes, using leftmost"));
- }
- /* Here we assume that we can't get this prefix in non
- * 64 bit mode due to checks in parse_check_prefix().
- */
- common->mode_bits = 64;
- *rex = (unsigned char)prefixes[i] & 0xff;
- }
- first = 0;
- break;
- }
- }
-}
-
-static void
-x86_bc_insn_destroy(void *contents)
-{
- x86_insn *insn = (x86_insn *)contents;
- if (insn->x86_ea)
- yasm_x86__ea_destroy((yasm_effaddr *)insn->x86_ea);
- if (insn->imm) {
- yasm_value_delete(insn->imm);
- yasm_xfree(insn->imm);
- }
- yasm_xfree(contents);
-}
-
-static void
-x86_bc_jmp_destroy(void *contents)
-{
- x86_jmp *jmp = (x86_jmp *)contents;
- yasm_value_delete(&jmp->target);
- yasm_xfree(contents);
-}
-
-static void
-x86_bc_jmpfar_destroy(void *contents)
-{
- x86_jmpfar *jmpfar = (x86_jmpfar *)contents;
- yasm_value_delete(&jmpfar->segment);
- yasm_value_delete(&jmpfar->offset);
- yasm_xfree(contents);
-}
-
-void
-yasm_x86__ea_destroy(yasm_effaddr *ea)
-{
- yasm_value_delete(&ea->disp);
- yasm_xfree(ea);
-}
-
-void
-yasm_x86__ea_print(const yasm_effaddr *ea, FILE *f, int indent_level)
-{
- const x86_effaddr *x86_ea = (const x86_effaddr *)ea;
- fprintf(f, "%*sDisp:\n", indent_level, "");
- yasm_value_print(&ea->disp, f, indent_level+1);
- fprintf(f, "%*sNoSplit=%u\n", indent_level, "", (unsigned int)ea->nosplit);
- fprintf(f, "%*sSegmentOv=%02x\n", indent_level, "",
- (unsigned int)x86_ea->ea.segreg);
- fprintf(f, "%*sVSIBMode=%u\n", indent_level, "",
- (unsigned int)x86_ea->vsib_mode);
- fprintf(f, "%*sModRM=%03o ValidRM=%u NeedRM=%u\n", indent_level, "",
- (unsigned int)x86_ea->modrm, (unsigned int)x86_ea->valid_modrm,
- (unsigned int)x86_ea->need_modrm);
- fprintf(f, "%*sSIB=%03o ValidSIB=%u NeedSIB=%u\n", indent_level, "",
- (unsigned int)x86_ea->sib, (unsigned int)x86_ea->valid_sib,
- (unsigned int)x86_ea->need_sib);
-}
-
-static void
-x86_common_print(const x86_common *common, FILE *f, int indent_level)
-{
- fprintf(f, "%*sAddrSize=%u OperSize=%u LockRepPre=%02x "
- "ACQREL_Pre=%02x BITS=%u\n",
- indent_level, "",
- (unsigned int)common->addrsize,
- (unsigned int)common->opersize,
- (unsigned int)common->lockrep_pre,
- (unsigned int)common->acqrel_pre,
- (unsigned int)common->mode_bits);
-}
-
-static void
-x86_opcode_print(const x86_opcode *opcode, FILE *f, int indent_level)
-{
- fprintf(f, "%*sOpcode: %02x %02x %02x OpLen=%u\n", indent_level, "",
- (unsigned int)opcode->opcode[0],
- (unsigned int)opcode->opcode[1],
- (unsigned int)opcode->opcode[2],
- (unsigned int)opcode->len);
-}
-
-static void
-x86_bc_insn_print(const void *contents, FILE *f, int indent_level)
-{
- const x86_insn *insn = (const x86_insn *)contents;
-
- fprintf(f, "%*s_Instruction_\n", indent_level, "");
- fprintf(f, "%*sEffective Address:", indent_level, "");
- if (insn->x86_ea) {
- fprintf(f, "\n");
- yasm_x86__ea_print((yasm_effaddr *)insn->x86_ea, f, indent_level+1);
- } else
- fprintf(f, " (nil)\n");
- fprintf(f, "%*sImmediate Value:", indent_level, "");
- if (!insn->imm)
- fprintf(f, " (nil)\n");
- else {
- indent_level++;
- fprintf(f, "\n");
- yasm_value_print(insn->imm, f, indent_level);
- indent_level--;
- }
- x86_opcode_print(&insn->opcode, f, indent_level);
- x86_common_print(&insn->common, f, indent_level);
- fprintf(f, "%*sSpPre=%02x REX=%03o PostOp=%u\n", indent_level, "",
- (unsigned int)insn->special_prefix,
- (unsigned int)insn->rex,
- (unsigned int)insn->postop);
-}
-
-static void
-x86_bc_jmp_print(const void *contents, FILE *f, int indent_level)
-{
- const x86_jmp *jmp = (const x86_jmp *)contents;
-
- fprintf(f, "%*s_Jump_\n", indent_level, "");
- fprintf(f, "%*sTarget:\n", indent_level, "");
- yasm_value_print(&jmp->target, f, indent_level+1);
- /* FIXME
- fprintf(f, "%*sOrigin=\n", indent_level, "");
- yasm_symrec_print(jmp->origin, f, indent_level+1);
- */
- fprintf(f, "\n%*sShort Form:\n", indent_level, "");
- if (jmp->shortop.len == 0)
- fprintf(f, "%*sNone\n", indent_level+1, "");
- else
- x86_opcode_print(&jmp->shortop, f, indent_level+1);
- fprintf(f, "%*sNear Form:\n", indent_level, "");
- if (jmp->nearop.len == 0)
- fprintf(f, "%*sNone\n", indent_level+1, "");
- else
- x86_opcode_print(&jmp->nearop, f, indent_level+1);
- fprintf(f, "%*sOpSel=", indent_level, "");
- switch (jmp->op_sel) {
- case JMP_NONE:
- fprintf(f, "None");
- break;
- case JMP_SHORT:
- fprintf(f, "Short");
- break;
- case JMP_NEAR:
- fprintf(f, "Near");
- break;
- case JMP_SHORT_FORCED:
- fprintf(f, "Forced Short");
- break;
- case JMP_NEAR_FORCED:
- fprintf(f, "Forced Near");
- break;
- default:
- fprintf(f, "UNKNOWN!!");
- break;
- }
- x86_common_print(&jmp->common, f, indent_level);
-}
-
-static void
-x86_bc_jmpfar_print(const void *contents, FILE *f, int indent_level)
-{
- const x86_jmpfar *jmpfar = (const x86_jmpfar *)contents;
-
- fprintf(f, "%*s_Far_Jump_\n", indent_level, "");
- fprintf(f, "%*sSegment:\n", indent_level, "");
- yasm_value_print(&jmpfar->segment, f, indent_level+1);
- fprintf(f, "%*sOffset:\n", indent_level, "");
- yasm_value_print(&jmpfar->offset, f, indent_level+1);
- x86_opcode_print(&jmpfar->opcode, f, indent_level);
- x86_common_print(&jmpfar->common, f, indent_level);
-}
-
-static unsigned int
-x86_common_calc_len(const x86_common *common)
-{
- unsigned int len = 0;
-
- if (common->addrsize != 0 && common->addrsize != common->mode_bits)
- len++;
- if (common->opersize != 0 &&
- ((common->mode_bits != 64 && common->opersize != common->mode_bits) ||
- (common->mode_bits == 64 && common->opersize == 16)))
- len++;
- if (common->lockrep_pre != 0)
- len++;
- if (common->acqrel_pre != 0)
- len++;
-
-
- return len;
-}
-
-static int
-x86_bc_insn_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
- void *add_span_data)
-{
- x86_insn *insn = (x86_insn *)bc->contents;
- x86_effaddr *x86_ea = insn->x86_ea;
- yasm_value *imm = insn->imm;
-
- if (x86_ea) {
- /* Check validity of effective address and calc R/M bits of
- * Mod/RM byte and SIB byte. We won't know the Mod field
- * of the Mod/RM byte until we know more about the
- * displacement.
- */
- if (yasm_x86__expr_checkea(x86_ea, &insn->common.addrsize,
- insn->common.mode_bits, insn->postop == X86_POSTOP_ADDRESS16,
- &insn->rex, bc))
- /* failed, don't bother checking rest of insn */
- return -1;
-
- if (x86_ea->ea.disp.size == 0 && x86_ea->ea.need_nonzero_len) {
- /* Handle unknown case, default to byte-sized and set as
- * critical expression.
- */
- x86_ea->ea.disp.size = 8;
- add_span(add_span_data, bc, 1, &x86_ea->ea.disp, -128, 127);
- }
- bc->len += x86_ea->ea.disp.size/8;
-
- /* Handle address16 postop case */
- if (insn->postop == X86_POSTOP_ADDRESS16)
- insn->common.addrsize = 0;
-
- /* Compute length of ea and add to total */
- bc->len += x86_ea->need_modrm + (x86_ea->need_sib ? 1:0);
- bc->len += (x86_ea->ea.segreg != 0) ? 1 : 0;
- }
-
- if (imm) {
- unsigned int immlen = imm->size;
-
- /* TODO: check imm->len vs. sized len from expr? */
-
- /* Handle signext_imm8 postop special-casing */
- if (insn->postop == X86_POSTOP_SIGNEXT_IMM8) {
- /*@null@*/ /*@only@*/ yasm_intnum *num;
- num = yasm_value_get_intnum(imm, NULL, 0);
-
- if (!num) {
- /* Unknown; default to byte form and set as critical
- * expression.
- */
- immlen = 8;
- add_span(add_span_data, bc, 2, imm, -128, 127);
- } else {
- if (yasm_intnum_in_range(num, -128, 127)) {
- /* We can use the sign-extended byte form: shorten
- * the immediate length to 1 and make the byte form
- * permanent.
- */
- imm->size = 8;
- imm->sign = 1;
- immlen = 8;
- } else {
- /* We can't. Copy over the word-sized opcode. */
- insn->opcode.opcode[0] =
- insn->opcode.opcode[insn->opcode.len];
- insn->opcode.len = 1;
- }
- insn->postop = X86_POSTOP_NONE;
- yasm_intnum_destroy(num);
- }
- }
-
- bc->len += immlen/8;
- }
-
- /* VEX and XOP prefixes never have REX (it's embedded in the opcode).
- * For VEX, we can come into this function with the three byte form,
- * so we need to see if we can optimize to the two byte form.
- * We can't do it earlier, as we don't know all of the REX byte until now.
- */
- if (insn->special_prefix == 0xC4) {
- /* See if we can shorten the VEX prefix to its two byte form.
- * In order to do this, REX.X, REX.B, and REX.W/VEX.W must all be 0,
- * and the VEX mmmmm field must be 1.
- */
- if ((insn->opcode.opcode[0] & 0x1F) == 1 &&
- (insn->opcode.opcode[1] & 0x80) == 0 &&
- (insn->rex == 0xff || (insn->rex & 0x0B) == 0)) {
- insn->opcode.opcode[0] = insn->opcode.opcode[1];
- insn->opcode.opcode[1] = insn->opcode.opcode[2];
- insn->opcode.opcode[2] = 0; /* sanity */
- insn->opcode.len = 2;
- insn->special_prefix = 0xC5; /* mark as two-byte VEX */
- }
- } else if (insn->rex != 0xff && insn->rex != 0 &&
- insn->special_prefix != 0xC5 && insn->special_prefix != 0x8F)
- bc->len++;
-
- bc->len += insn->opcode.len;
- bc->len += x86_common_calc_len(&insn->common);
- bc->len += (insn->special_prefix != 0) ? 1:0;
- return 0;
-}
-
-static int
-x86_bc_insn_expand(yasm_bytecode *bc, int span, long old_val, long new_val,
- /*@out@*/ long *neg_thres, /*@out@*/ long *pos_thres)
-{
- x86_insn *insn = (x86_insn *)bc->contents;
- x86_effaddr *x86_ea = insn->x86_ea;
- yasm_effaddr *ea = &x86_ea->ea;
- yasm_value *imm = insn->imm;
-
- if (ea && span == 1) {
- /* Change displacement length into word-sized */
- if (ea->disp.size == 8) {
- ea->disp.size = (insn->common.addrsize == 16) ? 16 : 32;
- x86_ea->modrm &= ~0300;
- x86_ea->modrm |= 0200;
- bc->len--;
- bc->len += ea->disp.size/8;
- }
- }
-
- if (imm && span == 2) {
- if (insn->postop == X86_POSTOP_SIGNEXT_IMM8) {
- /* Update bc->len for new opcode and immediate size */
- bc->len -= insn->opcode.len;
- bc->len += imm->size/8;
-
- /* Change to the word-sized opcode */
- insn->opcode.opcode[0] = insn->opcode.opcode[insn->opcode.len];
- insn->opcode.len = 1;
- insn->postop = X86_POSTOP_NONE;
- }
- }
-
- return 0;
-}
-
-static int
-x86_bc_jmp_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
- void *add_span_data)
-{
- x86_jmp *jmp = (x86_jmp *)bc->contents;
- yasm_bytecode *target_prevbc;
- unsigned char opersize;
-
- /* As opersize may be 0, figure out its "real" value. */
- opersize = (jmp->common.opersize == 0) ?
- jmp->common.mode_bits : jmp->common.opersize;
-
- bc->len += x86_common_calc_len(&jmp->common);
-
- if (jmp->op_sel == JMP_NEAR_FORCED || jmp->shortop.len == 0) {
- if (jmp->nearop.len == 0) {
- yasm_error_set(YASM_ERROR_TYPE, N_("near jump does not exist"));
- return -1;
- }
-
- /* Near jump, no spans needed */
- if (jmp->shortop.len == 0)
- jmp->op_sel = JMP_NEAR;
- bc->len += jmp->nearop.len;
- bc->len += (opersize == 16) ? 2 : 4;
- return 0;
- }
-
- if (jmp->op_sel == JMP_SHORT_FORCED || jmp->nearop.len == 0) {
- if (jmp->shortop.len == 0) {
- yasm_error_set(YASM_ERROR_TYPE, N_("short jump does not exist"));
- return -1;
- }
-
- /* We want to be sure to error if we exceed short length, so
- * put it in as a dependent expression (falling through).
- */
- }
-
- if (jmp->target.rel
- && (!yasm_symrec_get_label(jmp->target.rel, &target_prevbc)
- || target_prevbc->section != bc->section)) {
- /* External or out of segment, so we can't check distance.
- * Allowing short jumps depends on the objfmt supporting
- * 8-bit relocs. While most don't, some might, so allow it here.
- * Otherwise default to word-sized.
- * The objfmt will error if not supported.
- */
- if (jmp->op_sel == JMP_SHORT_FORCED || jmp->nearop.len == 0) {
- if (jmp->op_sel == JMP_NONE)
- jmp->op_sel = JMP_SHORT;
- bc->len += jmp->shortop.len + 1;
- } else {
- jmp->op_sel = JMP_NEAR;
- bc->len += jmp->nearop.len;
- bc->len += (opersize == 16) ? 2 : 4;
- }
- return 0;
- }
-
- /* Default to short jump and generate span */
- if (jmp->op_sel == JMP_NONE)
- jmp->op_sel = JMP_SHORT;
- bc->len += jmp->shortop.len + 1;
- add_span(add_span_data, bc, 1, &jmp->target, -128+(long)bc->len,
- 127+(long)bc->len);
- return 0;
-}
-
-static int
-x86_bc_jmp_expand(yasm_bytecode *bc, int span, long old_val, long new_val,
- /*@out@*/ long *neg_thres, /*@out@*/ long *pos_thres)
-{
- x86_jmp *jmp = (x86_jmp *)bc->contents;
- unsigned char opersize;
-
- if (span != 1)
- yasm_internal_error(N_("unrecognized span id"));
-
- /* As opersize may be 0, figure out its "real" value. */
- opersize = (jmp->common.opersize == 0) ?
- jmp->common.mode_bits : jmp->common.opersize;
-
- if (jmp->op_sel == JMP_SHORT_FORCED || jmp->nearop.len == 0) {
- yasm_error_set(YASM_ERROR_VALUE, N_("short jump out of range"));
- return -1;
- }
-
- if (jmp->op_sel == JMP_NEAR)
- yasm_internal_error(N_("trying to expand an already-near jump"));
-
- /* Upgrade to a near jump */
- jmp->op_sel = JMP_NEAR;
- bc->len -= jmp->shortop.len + 1;
- bc->len += jmp->nearop.len;
- bc->len += (opersize == 16) ? 2 : 4;
-
- return 0;
-}
-
-static int
-x86_bc_jmpfar_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
- void *add_span_data)
-{
- x86_jmpfar *jmpfar = (x86_jmpfar *)bc->contents;
- unsigned char opersize;
-
- opersize = (jmpfar->common.opersize == 0) ?
- jmpfar->common.mode_bits : jmpfar->common.opersize;
-
- bc->len += jmpfar->opcode.len;
- bc->len += 2; /* segment */
- bc->len += (opersize == 16) ? 2 : 4;
- bc->len += x86_common_calc_len(&jmpfar->common);
-
- return 0;
-}
-
-static void
-x86_common_tobytes(const x86_common *common, unsigned char **bufp,
- unsigned int segreg)
-{
- if (segreg != 0)
- YASM_WRITE_8(*bufp, (unsigned char)segreg);
- if (common->addrsize != 0 && common->addrsize != common->mode_bits)
- YASM_WRITE_8(*bufp, 0x67);
- if (common->opersize != 0 &&
- ((common->mode_bits != 64 && common->opersize != common->mode_bits) ||
- (common->mode_bits == 64 && common->opersize == 16)))
- YASM_WRITE_8(*bufp, 0x66);
- /*TSX hints come before lock prefix*/
- if (common->acqrel_pre != 0)
- YASM_WRITE_8(*bufp, common->acqrel_pre);
- if (common->lockrep_pre != 0)
- YASM_WRITE_8(*bufp, common->lockrep_pre);
-}
-
-static void
-x86_opcode_tobytes(const x86_opcode *opcode, unsigned char **bufp)
-{
- unsigned int i;
- for (i=0; i<opcode->len; i++)
- YASM_WRITE_8(*bufp, opcode->opcode[i]);
-}
-
-static int
-x86_bc_insn_tobytes(yasm_bytecode *bc, unsigned char **bufp,
- unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- /*@unused@*/ yasm_output_reloc_func output_reloc)
-{
- x86_insn *insn = (x86_insn *)bc->contents;
- /*@null@*/ x86_effaddr *x86_ea = (x86_effaddr *)insn->x86_ea;
- yasm_value *imm = insn->imm;
-
- /* Prefixes */
- x86_common_tobytes(&insn->common, bufp,
- x86_ea ? (unsigned int)(x86_ea->ea.segreg>>8) : 0);
- if (insn->special_prefix != 0)
- YASM_WRITE_8(*bufp, insn->special_prefix);
- if (insn->special_prefix == 0xC4 || insn->special_prefix == 0x8F) {
- /* 3-byte VEX/XOP; merge in 1s complement of REX.R, REX.X, REX.B */
- insn->opcode.opcode[0] &= 0x1F;
- if (insn->rex != 0xff)
- insn->opcode.opcode[0] |= ((~insn->rex) & 0x07) << 5;
- /* merge REX.W via ORing; there should never be a case in which REX.W
- * is important when VEX.W is already set by the instruction.
- */
- if (insn->rex != 0xff && (insn->rex & 0x8) != 0)
- insn->opcode.opcode[1] |= 0x80;
- } else if (insn->special_prefix == 0xC5) {
- /* 2-byte VEX; merge in 1s complement of REX.R */
- insn->opcode.opcode[0] &= 0x7F;
- if (insn->rex != 0xff && (insn->rex & 0x4) == 0)
- insn->opcode.opcode[0] |= 0x80;
- /* No other REX bits should be set */
- if (insn->rex != 0xff && (insn->rex & 0xB) != 0)
- yasm_internal_error(N_("x86: REX.WXB set, but 2-byte VEX"));
- } else if (insn->rex != 0xff && insn->rex != 0) {
- if (insn->common.mode_bits != 64)
- yasm_internal_error(N_("x86: got a REX prefix in non-64-bit mode"));
- YASM_WRITE_8(*bufp, insn->rex);
- }
-
- /* Opcode */
- x86_opcode_tobytes(&insn->opcode, bufp);
-
- /* Effective address: ModR/M (if required), SIB (if required), and
- * displacement (if required).
- */
- if (x86_ea) {
- if (x86_ea->need_modrm) {
- if (!x86_ea->valid_modrm)
- yasm_internal_error(N_("invalid Mod/RM in x86 tobytes_insn"));
- YASM_WRITE_8(*bufp, x86_ea->modrm);
- }
-
- if (x86_ea->need_sib) {
- if (!x86_ea->valid_sib)
- yasm_internal_error(N_("invalid SIB in x86 tobytes_insn"));
- YASM_WRITE_8(*bufp, x86_ea->sib);
- }
-
- if (x86_ea->ea.need_disp) {
- unsigned int disp_len = x86_ea->ea.disp.size/8;
-
- if (x86_ea->ea.disp.ip_rel) {
- /* Adjust relative displacement to end of bytecode */
- /*@only@*/ yasm_intnum *delta;
- delta = yasm_intnum_create_int(-(long)bc->len);
- if (!x86_ea->ea.disp.abs)
- x86_ea->ea.disp.abs =
- yasm_expr_create_ident(yasm_expr_int(delta), bc->line);
- else
- x86_ea->ea.disp.abs =
- yasm_expr_create(YASM_EXPR_ADD,
- yasm_expr_expr(x86_ea->ea.disp.abs),
- yasm_expr_int(delta), bc->line);
- }
- if (output_value(&x86_ea->ea.disp, *bufp, disp_len,
- (unsigned long)(*bufp-bufstart), bc, 1, d))
- return 1;
- *bufp += disp_len;
- }
- }
-
- /* Immediate (if required) */
- if (imm) {
- unsigned int imm_len;
- if (insn->postop == X86_POSTOP_SIGNEXT_IMM8) {
- /* If we got here with this postop still set, we need to force
- * imm size to 8 here.
- */
- imm->size = 8;
- imm->sign = 1;
- imm_len = 1;
- } else
- imm_len = imm->size/8;
- if (output_value(imm, *bufp, imm_len, (unsigned long)(*bufp-bufstart),
- bc, 1, d))
- return 1;
- *bufp += imm_len;
- }
-
- return 0;
-}
-
-static int
-x86_bc_jmp_tobytes(yasm_bytecode *bc, unsigned char **bufp,
- unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- /*@unused@*/ yasm_output_reloc_func output_reloc)
-{
- x86_jmp *jmp = (x86_jmp *)bc->contents;
- unsigned char opersize;
- unsigned int i;
- /*@only@*/ yasm_intnum *delta;
-
- /* Prefixes */
- x86_common_tobytes(&jmp->common, bufp, 0);
-
- /* As opersize may be 0, figure out its "real" value. */
- opersize = (jmp->common.opersize == 0) ?
- jmp->common.mode_bits : jmp->common.opersize;
-
- /* Check here again to see if forms are actually legal. */
- switch (jmp->op_sel) {
- case JMP_SHORT_FORCED:
- case JMP_SHORT:
- /* 1 byte relative displacement */
- if (jmp->shortop.len == 0)
- yasm_internal_error(N_("short jump does not exist"));
-
- /* Opcode */
- x86_opcode_tobytes(&jmp->shortop, bufp);
-
- /* Adjust relative displacement to end of bytecode */
- delta = yasm_intnum_create_int(-(long)bc->len);
- if (!jmp->target.abs)
- jmp->target.abs = yasm_expr_create_ident(yasm_expr_int(delta),
- bc->line);
- else
- jmp->target.abs =
- yasm_expr_create(YASM_EXPR_ADD,
- yasm_expr_expr(jmp->target.abs),
- yasm_expr_int(delta), bc->line);
-
- jmp->target.size = 8;
- jmp->target.sign = 1;
- if (output_value(&jmp->target, *bufp, 1,
- (unsigned long)(*bufp-bufstart), bc, 1, d))
- return 1;
- *bufp += 1;
- break;
- case JMP_NEAR_FORCED:
- case JMP_NEAR:
- /* 2/4 byte relative displacement (depending on operand size) */
- if (jmp->nearop.len == 0) {
- yasm_error_set(YASM_ERROR_TYPE,
- N_("near jump does not exist"));
- return 1;
- }
-
- /* Opcode */
- x86_opcode_tobytes(&jmp->nearop, bufp);
-
- i = (opersize == 16) ? 2 : 4;
-
- /* Adjust relative displacement to end of bytecode */
- delta = yasm_intnum_create_int(-(long)bc->len);
- if (!jmp->target.abs)
- jmp->target.abs = yasm_expr_create_ident(yasm_expr_int(delta),
- bc->line);
- else
- jmp->target.abs =
- yasm_expr_create(YASM_EXPR_ADD,
- yasm_expr_expr(jmp->target.abs),
- yasm_expr_int(delta), bc->line);
-
- jmp->target.size = i*8;
- jmp->target.sign = 1;
- if (output_value(&jmp->target, *bufp, i,
- (unsigned long)(*bufp-bufstart), bc, 1, d))
- return 1;
- *bufp += i;
- break;
- case JMP_NONE:
- yasm_internal_error(N_("jump op_sel cannot be JMP_NONE in tobytes"));
- default:
- yasm_internal_error(N_("unrecognized relative jump op_sel"));
- }
- return 0;
-}
-
-static int
-x86_bc_jmpfar_tobytes(yasm_bytecode *bc, unsigned char **bufp,
- unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- /*@unused@*/ yasm_output_reloc_func output_reloc)
-{
- x86_jmpfar *jmpfar = (x86_jmpfar *)bc->contents;
- unsigned int i;
- unsigned char opersize;
-
- x86_common_tobytes(&jmpfar->common, bufp, 0);
- x86_opcode_tobytes(&jmpfar->opcode, bufp);
-
- /* As opersize may be 0, figure out its "real" value. */
- opersize = (jmpfar->common.opersize == 0) ?
- jmpfar->common.mode_bits : jmpfar->common.opersize;
-
- /* Absolute displacement: segment and offset */
- i = (opersize == 16) ? 2 : 4;
- jmpfar->offset.size = i*8;
- if (output_value(&jmpfar->offset, *bufp, i,
- (unsigned long)(*bufp-bufstart), bc, 1, d))
- return 1;
- *bufp += i;
- jmpfar->segment.size = 16;
- if (output_value(&jmpfar->segment, *bufp, 2,
- (unsigned long)(*bufp-bufstart), bc, 1, d))
- return 1;
- *bufp += 2;
-
- return 0;
-}
-
-int
-yasm_x86__intnum_tobytes(yasm_arch *arch, const yasm_intnum *intn,
- unsigned char *buf, size_t destsize, size_t valsize,
- int shift, const yasm_bytecode *bc, int warn)
-{
- /* Write value out. */
- yasm_intnum_get_sized(intn, buf, destsize, valsize, shift, 0, warn);
- return 0;
-}
+/*
+ * x86 bytecode utility functions
+ *
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <libyasm.h>
+
+#include "x86arch.h"
+
+
+/* Bytecode callback function prototypes */
+
+static void x86_bc_insn_destroy(void *contents);
+static void x86_bc_insn_print(const void *contents, FILE *f,
+ int indent_level);
+static int x86_bc_insn_calc_len(yasm_bytecode *bc,
+ yasm_bc_add_span_func add_span,
+ void *add_span_data);
+static int x86_bc_insn_expand(yasm_bytecode *bc, int span, long old_val,
+ long new_val, /*@out@*/ long *neg_thres,
+ /*@out@*/ long *pos_thres);
+static int x86_bc_insn_tobytes(yasm_bytecode *bc, unsigned char **bufp,
+ unsigned char *bufstart,
+ void *d, yasm_output_value_func output_value,
+ /*@null@*/ yasm_output_reloc_func output_reloc);
+
+static void x86_bc_jmp_destroy(void *contents);
+static void x86_bc_jmp_print(const void *contents, FILE *f, int indent_level);
+static int x86_bc_jmp_calc_len(yasm_bytecode *bc,
+ yasm_bc_add_span_func add_span,
+ void *add_span_data);
+static int x86_bc_jmp_expand(yasm_bytecode *bc, int span, long old_val,
+ long new_val, /*@out@*/ long *neg_thres,
+ /*@out@*/ long *pos_thres);
+static int x86_bc_jmp_tobytes(yasm_bytecode *bc, unsigned char **bufp,
+ unsigned char *bufstart,
+ void *d, yasm_output_value_func output_value,
+ /*@null@*/ yasm_output_reloc_func output_reloc);
+
+static void x86_bc_jmpfar_destroy(void *contents);
+static void x86_bc_jmpfar_print(const void *contents, FILE *f,
+ int indent_level);
+static int x86_bc_jmpfar_calc_len(yasm_bytecode *bc,
+ yasm_bc_add_span_func add_span,
+ void *add_span_data);
+static int x86_bc_jmpfar_tobytes
+ (yasm_bytecode *bc, unsigned char **bufp, unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ /*@null@*/ yasm_output_reloc_func output_reloc);
+
+/* Bytecode callback structures */
+
+static const yasm_bytecode_callback x86_bc_callback_insn = {
+ x86_bc_insn_destroy,
+ x86_bc_insn_print,
+ yasm_bc_finalize_common,
+ NULL,
+ x86_bc_insn_calc_len,
+ x86_bc_insn_expand,
+ x86_bc_insn_tobytes,
+ 0
+};
+
+static const yasm_bytecode_callback x86_bc_callback_jmp = {
+ x86_bc_jmp_destroy,
+ x86_bc_jmp_print,
+ yasm_bc_finalize_common,
+ NULL,
+ x86_bc_jmp_calc_len,
+ x86_bc_jmp_expand,
+ x86_bc_jmp_tobytes,
+ 0
+};
+
+static const yasm_bytecode_callback x86_bc_callback_jmpfar = {
+ x86_bc_jmpfar_destroy,
+ x86_bc_jmpfar_print,
+ yasm_bc_finalize_common,
+ NULL,
+ x86_bc_jmpfar_calc_len,
+ yasm_bc_expand_common,
+ x86_bc_jmpfar_tobytes,
+ 0
+};
+
+int
+yasm_x86__set_rex_from_reg(unsigned char *rex, unsigned char *low3,
+ uintptr_t reg, unsigned int bits,
+ x86_rex_bit_pos rexbit)
+{
+ *low3 = (unsigned char)(reg&7);
+
+ if (bits == 64) {
+ x86_expritem_reg_size size = (x86_expritem_reg_size)(reg & ~0xFUL);
+
+ if (size == X86_REG8X || (reg & 0xF) >= 8) {
+ /* Check to make sure we can set it */
+ if (*rex == 0xff) {
+ yasm_error_set(YASM_ERROR_TYPE,
+ N_("cannot use A/B/C/DH with instruction needing REX"));
+ return 1;
+ }
+ *rex |= 0x40 | (((reg & 8) >> 3) << rexbit);
+ } else if (size == X86_REG8 && (reg & 7) >= 4) {
+ /* AH/BH/CH/DH, so no REX allowed */
+ if (*rex != 0 && *rex != 0xff) {
+ yasm_error_set(YASM_ERROR_TYPE,
+ N_("cannot use A/B/C/DH with instruction needing REX"));
+ return 1;
+ }
+ *rex = 0xff; /* Flag so we can NEVER set it (see above) */
+ }
+ }
+
+ return 0;
+}
+
+void
+yasm_x86__bc_transform_insn(yasm_bytecode *bc, x86_insn *insn)
+{
+ yasm_bc_transform(bc, &x86_bc_callback_insn, insn);
+}
+
+void
+yasm_x86__bc_transform_jmp(yasm_bytecode *bc, x86_jmp *jmp)
+{
+ yasm_bc_transform(bc, &x86_bc_callback_jmp, jmp);
+}
+
+void
+yasm_x86__bc_transform_jmpfar(yasm_bytecode *bc, x86_jmpfar *jmpfar)
+{
+ yasm_bc_transform(bc, &x86_bc_callback_jmpfar, jmpfar);
+}
+
+void
+yasm_x86__ea_init(x86_effaddr *x86_ea, unsigned int spare,
+ yasm_bytecode *precbc)
+{
+ if (yasm_value_finalize(&x86_ea->ea.disp, precbc))
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("effective address too complex"));
+ x86_ea->modrm &= 0xC7; /* zero spare/reg bits */
+ x86_ea->modrm |= (spare << 3) & 0x38; /* plug in provided bits */
+}
+
+void
+yasm_x86__ea_set_disponly(x86_effaddr *x86_ea)
+{
+ x86_ea->valid_modrm = 0;
+ x86_ea->need_modrm = 0;
+ x86_ea->valid_sib = 0;
+ x86_ea->need_sib = 0;
+}
+
+static x86_effaddr *
+ea_create(void)
+{
+ x86_effaddr *x86_ea = yasm_xmalloc(sizeof(x86_effaddr));
+
+ yasm_value_initialize(&x86_ea->ea.disp, NULL, 0);
+ x86_ea->ea.need_nonzero_len = 0;
+ x86_ea->ea.need_disp = 0;
+ x86_ea->ea.nosplit = 0;
+ x86_ea->ea.strong = 0;
+ x86_ea->ea.segreg = 0;
+ x86_ea->ea.pc_rel = 0;
+ x86_ea->ea.not_pc_rel = 0;
+ x86_ea->ea.data_len = 0;
+ x86_ea->vsib_mode = 0;
+ x86_ea->modrm = 0;
+ x86_ea->valid_modrm = 0;
+ x86_ea->need_modrm = 0;
+ x86_ea->sib = 0;
+ x86_ea->valid_sib = 0;
+ x86_ea->need_sib = 0;
+
+ return x86_ea;
+}
+
+x86_effaddr *
+yasm_x86__ea_create_reg(x86_effaddr *x86_ea, unsigned long reg,
+ unsigned char *rex, unsigned int bits)
+{
+ unsigned char rm;
+
+ if (yasm_x86__set_rex_from_reg(rex, &rm, reg, bits, X86_REX_B))
+ return NULL;
+
+ if (!x86_ea)
+ x86_ea = ea_create();
+ x86_ea->modrm = 0xC0 | rm; /* Mod=11, R/M=Reg, Reg=0 */
+ x86_ea->valid_modrm = 1;
+ x86_ea->need_modrm = 1;
+
+ return x86_ea;
+}
+
+yasm_effaddr *
+yasm_x86__ea_create_expr(yasm_arch *arch, yasm_expr *e)
+{
+ yasm_arch_x86 *arch_x86 = (yasm_arch_x86 *)arch;
+ x86_effaddr *x86_ea;
+
+ x86_ea = ea_create();
+
+ if (arch_x86->parser == X86_PARSER_GAS) {
+ /* Need to change foo+rip into foo wrt rip (even in .intel_syntax mode).
+ * Note this assumes a particular ordering coming from the parser
+ * to work (it's not very smart)!
+ */
+ if (e->op == YASM_EXPR_ADD && e->terms[0].type == YASM_EXPR_REG
+ && e->terms[0].data.reg == X86_RIP) {
+ /* replace register with 0 */
+ e->terms[0].type = YASM_EXPR_INT;
+ e->terms[0].data.intn = yasm_intnum_create_uint(0);
+ /* build new wrt expression */
+ e = yasm_expr_create(YASM_EXPR_WRT, yasm_expr_expr(e),
+ yasm_expr_reg(X86_RIP), e->line);
+ }
+ }
+ yasm_value_initialize(&x86_ea->ea.disp, e, 0);
+ x86_ea->ea.need_disp = 1;
+ x86_ea->need_modrm = 1;
+ /* We won't know whether we need an SIB until we know more about expr and
+ * the BITS/address override setting.
+ */
+ x86_ea->need_sib = 0xff;
+
+ x86_ea->ea.data_len = 0;
+
+ return (yasm_effaddr *)x86_ea;
+}
+
+/*@-compmempass@*/
+x86_effaddr *
+yasm_x86__ea_create_imm(x86_effaddr *x86_ea, yasm_expr *imm,
+ unsigned int im_len)
+{
+ if (!x86_ea)
+ x86_ea = ea_create();
+ yasm_value_initialize(&x86_ea->ea.disp, imm, im_len);
+ x86_ea->ea.need_disp = 1;
+
+ return x86_ea;
+}
+/*@=compmempass@*/
+
+void
+yasm_x86__bc_apply_prefixes(x86_common *common, unsigned char *rex,
+ unsigned int def_opersize_64,
+ unsigned int num_prefixes, uintptr_t *prefixes)
+{
+ unsigned int i;
+ int first = 1;
+
+ for (i=0; i<num_prefixes; i++) {
+ switch ((x86_parse_insn_prefix)(prefixes[i] & 0xff00)) {
+ /*To be accurate, we should enforce that TSX hints come only with a
+ predefined set of instructions, and in most cases only with F0
+ prefix. Otherwise they will have completely different semantics.
+ But F0 prefix can come only with a predefined set of instructions
+ too. And if it comes with other instructions, CPU will #UD.
+ Hence, F0-applicability should be enforced too. But it's not
+ currently. Maybe it is the decision made, that user should know
+ himself what he is doing with LOCK prefix. In this case, we should
+ not enforce TSX hints applicability too. And let user take care of
+ correct usage of TSX hints.
+ That is what we are going to do.*/
+ case X86_ACQREL:
+ if (common->acqrel_pre != 0)
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("multiple XACQUIRE/XRELEASE prefixes, "
+ "using leftmost"));
+ common->acqrel_pre = (unsigned char)prefixes[i] & 0xff;
+ break;
+ case X86_LOCKREP:
+ if (common->lockrep_pre != 0)
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("multiple LOCK or REP prefixes, using leftmost"));
+ common->lockrep_pre = (unsigned char)prefixes[i] & 0xff;
+ break;
+ case X86_ADDRSIZE:
+ common->addrsize = (unsigned char)prefixes[i] & 0xff;
+ break;
+ case X86_OPERSIZE:
+ common->opersize = (unsigned char)prefixes[i] & 0xff;
+ if (common->mode_bits == 64 && common->opersize == 64 &&
+ def_opersize_64 != 64) {
+ if (!rex)
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("ignoring REX prefix on jump"));
+ else if (*rex == 0xff)
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("REX prefix not allowed on this instruction, ignoring"));
+ else
+ *rex = 0x48;
+ }
+ break;
+ case X86_SEGREG:
+ /* This is a hack.. we should really be putting this in the
+ * the effective address!
+ */
+ common->lockrep_pre = (unsigned char)prefixes[i] & 0xff;
+ break;
+ case X86_REX:
+ if (!rex)
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("ignoring REX prefix on jump"));
+ else if (*rex == 0xff)
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("REX prefix not allowed on this instruction, ignoring"));
+ else {
+ if (*rex != 0) {
+ if (first)
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("overriding generated REX prefix"));
+ else
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("multiple REX prefixes, using leftmost"));
+ }
+ /* Here we assume that we can't get this prefix in non
+ * 64 bit mode due to checks in parse_check_prefix().
+ */
+ common->mode_bits = 64;
+ *rex = (unsigned char)prefixes[i] & 0xff;
+ }
+ first = 0;
+ break;
+ }
+ }
+}
+
+static void
+x86_bc_insn_destroy(void *contents)
+{
+ x86_insn *insn = (x86_insn *)contents;
+ if (insn->x86_ea)
+ yasm_x86__ea_destroy((yasm_effaddr *)insn->x86_ea);
+ if (insn->imm) {
+ yasm_value_delete(insn->imm);
+ yasm_xfree(insn->imm);
+ }
+ yasm_xfree(contents);
+}
+
+static void
+x86_bc_jmp_destroy(void *contents)
+{
+ x86_jmp *jmp = (x86_jmp *)contents;
+ yasm_value_delete(&jmp->target);
+ yasm_xfree(contents);
+}
+
+static void
+x86_bc_jmpfar_destroy(void *contents)
+{
+ x86_jmpfar *jmpfar = (x86_jmpfar *)contents;
+ yasm_value_delete(&jmpfar->segment);
+ yasm_value_delete(&jmpfar->offset);
+ yasm_xfree(contents);
+}
+
+void
+yasm_x86__ea_destroy(yasm_effaddr *ea)
+{
+ yasm_value_delete(&ea->disp);
+ yasm_xfree(ea);
+}
+
+void
+yasm_x86__ea_print(const yasm_effaddr *ea, FILE *f, int indent_level)
+{
+ const x86_effaddr *x86_ea = (const x86_effaddr *)ea;
+ fprintf(f, "%*sDisp:\n", indent_level, "");
+ yasm_value_print(&ea->disp, f, indent_level+1);
+ fprintf(f, "%*sNoSplit=%u\n", indent_level, "", (unsigned int)ea->nosplit);
+ fprintf(f, "%*sSegmentOv=%02x\n", indent_level, "",
+ (unsigned int)x86_ea->ea.segreg);
+ fprintf(f, "%*sVSIBMode=%u\n", indent_level, "",
+ (unsigned int)x86_ea->vsib_mode);
+ fprintf(f, "%*sModRM=%03o ValidRM=%u NeedRM=%u\n", indent_level, "",
+ (unsigned int)x86_ea->modrm, (unsigned int)x86_ea->valid_modrm,
+ (unsigned int)x86_ea->need_modrm);
+ fprintf(f, "%*sSIB=%03o ValidSIB=%u NeedSIB=%u\n", indent_level, "",
+ (unsigned int)x86_ea->sib, (unsigned int)x86_ea->valid_sib,
+ (unsigned int)x86_ea->need_sib);
+}
+
+static void
+x86_common_print(const x86_common *common, FILE *f, int indent_level)
+{
+ fprintf(f, "%*sAddrSize=%u OperSize=%u LockRepPre=%02x "
+ "ACQREL_Pre=%02x BITS=%u\n",
+ indent_level, "",
+ (unsigned int)common->addrsize,
+ (unsigned int)common->opersize,
+ (unsigned int)common->lockrep_pre,
+ (unsigned int)common->acqrel_pre,
+ (unsigned int)common->mode_bits);
+}
+
+static void
+x86_opcode_print(const x86_opcode *opcode, FILE *f, int indent_level)
+{
+ fprintf(f, "%*sOpcode: %02x %02x %02x OpLen=%u\n", indent_level, "",
+ (unsigned int)opcode->opcode[0],
+ (unsigned int)opcode->opcode[1],
+ (unsigned int)opcode->opcode[2],
+ (unsigned int)opcode->len);
+}
+
+static void
+x86_bc_insn_print(const void *contents, FILE *f, int indent_level)
+{
+ const x86_insn *insn = (const x86_insn *)contents;
+
+ fprintf(f, "%*s_Instruction_\n", indent_level, "");
+ fprintf(f, "%*sEffective Address:", indent_level, "");
+ if (insn->x86_ea) {
+ fprintf(f, "\n");
+ yasm_x86__ea_print((yasm_effaddr *)insn->x86_ea, f, indent_level+1);
+ } else
+ fprintf(f, " (nil)\n");
+ fprintf(f, "%*sImmediate Value:", indent_level, "");
+ if (!insn->imm)
+ fprintf(f, " (nil)\n");
+ else {
+ indent_level++;
+ fprintf(f, "\n");
+ yasm_value_print(insn->imm, f, indent_level);
+ indent_level--;
+ }
+ x86_opcode_print(&insn->opcode, f, indent_level);
+ x86_common_print(&insn->common, f, indent_level);
+ fprintf(f, "%*sSpPre=%02x REX=%03o PostOp=%u\n", indent_level, "",
+ (unsigned int)insn->special_prefix,
+ (unsigned int)insn->rex,
+ (unsigned int)insn->postop);
+}
+
+static void
+x86_bc_jmp_print(const void *contents, FILE *f, int indent_level)
+{
+ const x86_jmp *jmp = (const x86_jmp *)contents;
+
+ fprintf(f, "%*s_Jump_\n", indent_level, "");
+ fprintf(f, "%*sTarget:\n", indent_level, "");
+ yasm_value_print(&jmp->target, f, indent_level+1);
+ /* FIXME
+ fprintf(f, "%*sOrigin=\n", indent_level, "");
+ yasm_symrec_print(jmp->origin, f, indent_level+1);
+ */
+ fprintf(f, "\n%*sShort Form:\n", indent_level, "");
+ if (jmp->shortop.len == 0)
+ fprintf(f, "%*sNone\n", indent_level+1, "");
+ else
+ x86_opcode_print(&jmp->shortop, f, indent_level+1);
+ fprintf(f, "%*sNear Form:\n", indent_level, "");
+ if (jmp->nearop.len == 0)
+ fprintf(f, "%*sNone\n", indent_level+1, "");
+ else
+ x86_opcode_print(&jmp->nearop, f, indent_level+1);
+ fprintf(f, "%*sOpSel=", indent_level, "");
+ switch (jmp->op_sel) {
+ case JMP_NONE:
+ fprintf(f, "None");
+ break;
+ case JMP_SHORT:
+ fprintf(f, "Short");
+ break;
+ case JMP_NEAR:
+ fprintf(f, "Near");
+ break;
+ case JMP_SHORT_FORCED:
+ fprintf(f, "Forced Short");
+ break;
+ case JMP_NEAR_FORCED:
+ fprintf(f, "Forced Near");
+ break;
+ default:
+ fprintf(f, "UNKNOWN!!");
+ break;
+ }
+ x86_common_print(&jmp->common, f, indent_level);
+}
+
+static void
+x86_bc_jmpfar_print(const void *contents, FILE *f, int indent_level)
+{
+ const x86_jmpfar *jmpfar = (const x86_jmpfar *)contents;
+
+ fprintf(f, "%*s_Far_Jump_\n", indent_level, "");
+ fprintf(f, "%*sSegment:\n", indent_level, "");
+ yasm_value_print(&jmpfar->segment, f, indent_level+1);
+ fprintf(f, "%*sOffset:\n", indent_level, "");
+ yasm_value_print(&jmpfar->offset, f, indent_level+1);
+ x86_opcode_print(&jmpfar->opcode, f, indent_level);
+ x86_common_print(&jmpfar->common, f, indent_level);
+}
+
+static unsigned int
+x86_common_calc_len(const x86_common *common)
+{
+ unsigned int len = 0;
+
+ if (common->addrsize != 0 && common->addrsize != common->mode_bits)
+ len++;
+ if (common->opersize != 0 &&
+ ((common->mode_bits != 64 && common->opersize != common->mode_bits) ||
+ (common->mode_bits == 64 && common->opersize == 16)))
+ len++;
+ if (common->lockrep_pre != 0)
+ len++;
+ if (common->acqrel_pre != 0)
+ len++;
+
+
+ return len;
+}
+
+static int
+x86_bc_insn_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
+ void *add_span_data)
+{
+ x86_insn *insn = (x86_insn *)bc->contents;
+ x86_effaddr *x86_ea = insn->x86_ea;
+ yasm_value *imm = insn->imm;
+
+ if (x86_ea) {
+ /* Check validity of effective address and calc R/M bits of
+ * Mod/RM byte and SIB byte. We won't know the Mod field
+ * of the Mod/RM byte until we know more about the
+ * displacement.
+ */
+ if (yasm_x86__expr_checkea(x86_ea, &insn->common.addrsize,
+ insn->common.mode_bits, insn->postop == X86_POSTOP_ADDRESS16,
+ &insn->rex, bc))
+ /* failed, don't bother checking rest of insn */
+ return -1;
+
+ if (x86_ea->ea.disp.size == 0 && x86_ea->ea.need_nonzero_len) {
+ /* Handle unknown case, default to byte-sized and set as
+ * critical expression.
+ */
+ x86_ea->ea.disp.size = 8;
+ add_span(add_span_data, bc, 1, &x86_ea->ea.disp, -128, 127);
+ }
+ bc->len += x86_ea->ea.disp.size/8;
+
+ /* Handle address16 postop case */
+ if (insn->postop == X86_POSTOP_ADDRESS16)
+ insn->common.addrsize = 0;
+
+ /* Compute length of ea and add to total */
+ bc->len += x86_ea->need_modrm + (x86_ea->need_sib ? 1:0);
+ bc->len += (x86_ea->ea.segreg != 0) ? 1 : 0;
+ }
+
+ if (imm) {
+ unsigned int immlen = imm->size;
+
+ /* TODO: check imm->len vs. sized len from expr? */
+
+ /* Handle signext_imm8 postop special-casing */
+ if (insn->postop == X86_POSTOP_SIGNEXT_IMM8) {
+ /*@null@*/ /*@only@*/ yasm_intnum *num;
+ num = yasm_value_get_intnum(imm, NULL, 0);
+
+ if (!num) {
+ /* Unknown; default to byte form and set as critical
+ * expression.
+ */
+ immlen = 8;
+ add_span(add_span_data, bc, 2, imm, -128, 127);
+ } else {
+ if (yasm_intnum_in_range(num, -128, 127)) {
+ /* We can use the sign-extended byte form: shorten
+ * the immediate length to 1 and make the byte form
+ * permanent.
+ */
+ imm->size = 8;
+ imm->sign = 1;
+ immlen = 8;
+ } else {
+ /* We can't. Copy over the word-sized opcode. */
+ insn->opcode.opcode[0] =
+ insn->opcode.opcode[insn->opcode.len];
+ insn->opcode.len = 1;
+ }
+ insn->postop = X86_POSTOP_NONE;
+ yasm_intnum_destroy(num);
+ }
+ }
+
+ bc->len += immlen/8;
+ }
+
+ /* VEX and XOP prefixes never have REX (it's embedded in the opcode).
+ * For VEX, we can come into this function with the three byte form,
+ * so we need to see if we can optimize to the two byte form.
+ * We can't do it earlier, as we don't know all of the REX byte until now.
+ */
+ if (insn->special_prefix == 0xC4) {
+ /* See if we can shorten the VEX prefix to its two byte form.
+ * In order to do this, REX.X, REX.B, and REX.W/VEX.W must all be 0,
+ * and the VEX mmmmm field must be 1.
+ */
+ if ((insn->opcode.opcode[0] & 0x1F) == 1 &&
+ (insn->opcode.opcode[1] & 0x80) == 0 &&
+ (insn->rex == 0xff || (insn->rex & 0x0B) == 0)) {
+ insn->opcode.opcode[0] = insn->opcode.opcode[1];
+ insn->opcode.opcode[1] = insn->opcode.opcode[2];
+ insn->opcode.opcode[2] = 0; /* sanity */
+ insn->opcode.len = 2;
+ insn->special_prefix = 0xC5; /* mark as two-byte VEX */
+ }
+ } else if (insn->rex != 0xff && insn->rex != 0 &&
+ insn->special_prefix != 0xC5 && insn->special_prefix != 0x8F)
+ bc->len++;
+
+ bc->len += insn->opcode.len;
+ bc->len += x86_common_calc_len(&insn->common);
+ bc->len += (insn->special_prefix != 0) ? 1:0;
+ return 0;
+}
+
+static int
+x86_bc_insn_expand(yasm_bytecode *bc, int span, long old_val, long new_val,
+ /*@out@*/ long *neg_thres, /*@out@*/ long *pos_thres)
+{
+ x86_insn *insn = (x86_insn *)bc->contents;
+ x86_effaddr *x86_ea = insn->x86_ea;
+ yasm_effaddr *ea = &x86_ea->ea;
+ yasm_value *imm = insn->imm;
+
+ if (ea && span == 1) {
+ /* Change displacement length into word-sized */
+ if (ea->disp.size == 8) {
+ ea->disp.size = (insn->common.addrsize == 16) ? 16 : 32;
+ x86_ea->modrm &= ~0300;
+ x86_ea->modrm |= 0200;
+ bc->len--;
+ bc->len += ea->disp.size/8;
+ }
+ }
+
+ if (imm && span == 2) {
+ if (insn->postop == X86_POSTOP_SIGNEXT_IMM8) {
+ /* Update bc->len for new opcode and immediate size */
+ bc->len -= insn->opcode.len;
+ bc->len += imm->size/8;
+
+ /* Change to the word-sized opcode */
+ insn->opcode.opcode[0] = insn->opcode.opcode[insn->opcode.len];
+ insn->opcode.len = 1;
+ insn->postop = X86_POSTOP_NONE;
+ }
+ }
+
+ return 0;
+}
+
+static int
+x86_bc_jmp_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
+ void *add_span_data)
+{
+ x86_jmp *jmp = (x86_jmp *)bc->contents;
+ yasm_bytecode *target_prevbc;
+ unsigned char opersize;
+
+ /* As opersize may be 0, figure out its "real" value. */
+ opersize = (jmp->common.opersize == 0) ?
+ jmp->common.mode_bits : jmp->common.opersize;
+
+ bc->len += x86_common_calc_len(&jmp->common);
+
+ if (jmp->op_sel == JMP_NEAR_FORCED || jmp->shortop.len == 0) {
+ if (jmp->nearop.len == 0) {
+ yasm_error_set(YASM_ERROR_TYPE, N_("near jump does not exist"));
+ return -1;
+ }
+
+ /* Near jump, no spans needed */
+ if (jmp->shortop.len == 0)
+ jmp->op_sel = JMP_NEAR;
+ bc->len += jmp->nearop.len;
+ bc->len += (opersize == 16) ? 2 : 4;
+ return 0;
+ }
+
+ if (jmp->op_sel == JMP_SHORT_FORCED || jmp->nearop.len == 0) {
+ if (jmp->shortop.len == 0) {
+ yasm_error_set(YASM_ERROR_TYPE, N_("short jump does not exist"));
+ return -1;
+ }
+
+ /* We want to be sure to error if we exceed short length, so
+ * put it in as a dependent expression (falling through).
+ */
+ }
+
+ if (jmp->target.rel
+ && (!yasm_symrec_get_label(jmp->target.rel, &target_prevbc)
+ || target_prevbc->section != bc->section)) {
+ /* External or out of segment, so we can't check distance.
+ * Allowing short jumps depends on the objfmt supporting
+ * 8-bit relocs. While most don't, some might, so allow it here.
+ * Otherwise default to word-sized.
+ * The objfmt will error if not supported.
+ */
+ if (jmp->op_sel == JMP_SHORT_FORCED || jmp->nearop.len == 0) {
+ if (jmp->op_sel == JMP_NONE)
+ jmp->op_sel = JMP_SHORT;
+ bc->len += jmp->shortop.len + 1;
+ } else {
+ jmp->op_sel = JMP_NEAR;
+ bc->len += jmp->nearop.len;
+ bc->len += (opersize == 16) ? 2 : 4;
+ }
+ return 0;
+ }
+
+ /* Default to short jump and generate span */
+ if (jmp->op_sel == JMP_NONE)
+ jmp->op_sel = JMP_SHORT;
+ bc->len += jmp->shortop.len + 1;
+ add_span(add_span_data, bc, 1, &jmp->target, -128+(long)bc->len,
+ 127+(long)bc->len);
+ return 0;
+}
+
+static int
+x86_bc_jmp_expand(yasm_bytecode *bc, int span, long old_val, long new_val,
+ /*@out@*/ long *neg_thres, /*@out@*/ long *pos_thres)
+{
+ x86_jmp *jmp = (x86_jmp *)bc->contents;
+ unsigned char opersize;
+
+ if (span != 1)
+ yasm_internal_error(N_("unrecognized span id"));
+
+ /* As opersize may be 0, figure out its "real" value. */
+ opersize = (jmp->common.opersize == 0) ?
+ jmp->common.mode_bits : jmp->common.opersize;
+
+ if (jmp->op_sel == JMP_SHORT_FORCED || jmp->nearop.len == 0) {
+ yasm_error_set(YASM_ERROR_VALUE, N_("short jump out of range"));
+ return -1;
+ }
+
+ if (jmp->op_sel == JMP_NEAR)
+ yasm_internal_error(N_("trying to expand an already-near jump"));
+
+ /* Upgrade to a near jump */
+ jmp->op_sel = JMP_NEAR;
+ bc->len -= jmp->shortop.len + 1;
+ bc->len += jmp->nearop.len;
+ bc->len += (opersize == 16) ? 2 : 4;
+
+ return 0;
+}
+
+static int
+x86_bc_jmpfar_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
+ void *add_span_data)
+{
+ x86_jmpfar *jmpfar = (x86_jmpfar *)bc->contents;
+ unsigned char opersize;
+
+ opersize = (jmpfar->common.opersize == 0) ?
+ jmpfar->common.mode_bits : jmpfar->common.opersize;
+
+ bc->len += jmpfar->opcode.len;
+ bc->len += 2; /* segment */
+ bc->len += (opersize == 16) ? 2 : 4;
+ bc->len += x86_common_calc_len(&jmpfar->common);
+
+ return 0;
+}
+
+static void
+x86_common_tobytes(const x86_common *common, unsigned char **bufp,
+ unsigned int segreg)
+{
+ if (segreg != 0)
+ YASM_WRITE_8(*bufp, (unsigned char)segreg);
+ if (common->addrsize != 0 && common->addrsize != common->mode_bits)
+ YASM_WRITE_8(*bufp, 0x67);
+ if (common->opersize != 0 &&
+ ((common->mode_bits != 64 && common->opersize != common->mode_bits) ||
+ (common->mode_bits == 64 && common->opersize == 16)))
+ YASM_WRITE_8(*bufp, 0x66);
+ /*TSX hints come before lock prefix*/
+ if (common->acqrel_pre != 0)
+ YASM_WRITE_8(*bufp, common->acqrel_pre);
+ if (common->lockrep_pre != 0)
+ YASM_WRITE_8(*bufp, common->lockrep_pre);
+}
+
+static void
+x86_opcode_tobytes(const x86_opcode *opcode, unsigned char **bufp)
+{
+ unsigned int i;
+ for (i=0; i<opcode->len; i++)
+ YASM_WRITE_8(*bufp, opcode->opcode[i]);
+}
+
+static int
+x86_bc_insn_tobytes(yasm_bytecode *bc, unsigned char **bufp,
+ unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ /*@unused@*/ yasm_output_reloc_func output_reloc)
+{
+ x86_insn *insn = (x86_insn *)bc->contents;
+ /*@null@*/ x86_effaddr *x86_ea = (x86_effaddr *)insn->x86_ea;
+ yasm_value *imm = insn->imm;
+
+ /* Prefixes */
+ x86_common_tobytes(&insn->common, bufp,
+ x86_ea ? (unsigned int)(x86_ea->ea.segreg>>8) : 0);
+ if (insn->special_prefix != 0)
+ YASM_WRITE_8(*bufp, insn->special_prefix);
+ if (insn->special_prefix == 0xC4 || insn->special_prefix == 0x8F) {
+ /* 3-byte VEX/XOP; merge in 1s complement of REX.R, REX.X, REX.B */
+ insn->opcode.opcode[0] &= 0x1F;
+ if (insn->rex != 0xff)
+ insn->opcode.opcode[0] |= ((~insn->rex) & 0x07) << 5;
+ /* merge REX.W via ORing; there should never be a case in which REX.W
+ * is important when VEX.W is already set by the instruction.
+ */
+ if (insn->rex != 0xff && (insn->rex & 0x8) != 0)
+ insn->opcode.opcode[1] |= 0x80;
+ } else if (insn->special_prefix == 0xC5) {
+ /* 2-byte VEX; merge in 1s complement of REX.R */
+ insn->opcode.opcode[0] &= 0x7F;
+ if (insn->rex != 0xff && (insn->rex & 0x4) == 0)
+ insn->opcode.opcode[0] |= 0x80;
+ /* No other REX bits should be set */
+ if (insn->rex != 0xff && (insn->rex & 0xB) != 0)
+ yasm_internal_error(N_("x86: REX.WXB set, but 2-byte VEX"));
+ } else if (insn->rex != 0xff && insn->rex != 0) {
+ if (insn->common.mode_bits != 64)
+ yasm_internal_error(N_("x86: got a REX prefix in non-64-bit mode"));
+ YASM_WRITE_8(*bufp, insn->rex);
+ }
+
+ /* Opcode */
+ x86_opcode_tobytes(&insn->opcode, bufp);
+
+ /* Effective address: ModR/M (if required), SIB (if required), and
+ * displacement (if required).
+ */
+ if (x86_ea) {
+ if (x86_ea->need_modrm) {
+ if (!x86_ea->valid_modrm)
+ yasm_internal_error(N_("invalid Mod/RM in x86 tobytes_insn"));
+ YASM_WRITE_8(*bufp, x86_ea->modrm);
+ }
+
+ if (x86_ea->need_sib) {
+ if (!x86_ea->valid_sib)
+ yasm_internal_error(N_("invalid SIB in x86 tobytes_insn"));
+ YASM_WRITE_8(*bufp, x86_ea->sib);
+ }
+
+ if (x86_ea->ea.need_disp) {
+ unsigned int disp_len = x86_ea->ea.disp.size/8;
+
+ if (x86_ea->ea.disp.ip_rel) {
+ /* Adjust relative displacement to end of bytecode */
+ /*@only@*/ yasm_intnum *delta;
+ delta = yasm_intnum_create_int(-(long)bc->len);
+ if (!x86_ea->ea.disp.abs)
+ x86_ea->ea.disp.abs =
+ yasm_expr_create_ident(yasm_expr_int(delta), bc->line);
+ else
+ x86_ea->ea.disp.abs =
+ yasm_expr_create(YASM_EXPR_ADD,
+ yasm_expr_expr(x86_ea->ea.disp.abs),
+ yasm_expr_int(delta), bc->line);
+ }
+ if (output_value(&x86_ea->ea.disp, *bufp, disp_len,
+ (unsigned long)(*bufp-bufstart), bc, 1, d))
+ return 1;
+ *bufp += disp_len;
+ }
+ }
+
+ /* Immediate (if required) */
+ if (imm) {
+ unsigned int imm_len;
+ if (insn->postop == X86_POSTOP_SIGNEXT_IMM8) {
+ /* If we got here with this postop still set, we need to force
+ * imm size to 8 here.
+ */
+ imm->size = 8;
+ imm->sign = 1;
+ imm_len = 1;
+ } else
+ imm_len = imm->size/8;
+ if (output_value(imm, *bufp, imm_len, (unsigned long)(*bufp-bufstart),
+ bc, 1, d))
+ return 1;
+ *bufp += imm_len;
+ }
+
+ return 0;
+}
+
+static int
+x86_bc_jmp_tobytes(yasm_bytecode *bc, unsigned char **bufp,
+ unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ /*@unused@*/ yasm_output_reloc_func output_reloc)
+{
+ x86_jmp *jmp = (x86_jmp *)bc->contents;
+ unsigned char opersize;
+ unsigned int i;
+ /*@only@*/ yasm_intnum *delta;
+
+ /* Prefixes */
+ x86_common_tobytes(&jmp->common, bufp, 0);
+
+ /* As opersize may be 0, figure out its "real" value. */
+ opersize = (jmp->common.opersize == 0) ?
+ jmp->common.mode_bits : jmp->common.opersize;
+
+ /* Check here again to see if forms are actually legal. */
+ switch (jmp->op_sel) {
+ case JMP_SHORT_FORCED:
+ case JMP_SHORT:
+ /* 1 byte relative displacement */
+ if (jmp->shortop.len == 0)
+ yasm_internal_error(N_("short jump does not exist"));
+
+ /* Opcode */
+ x86_opcode_tobytes(&jmp->shortop, bufp);
+
+ /* Adjust relative displacement to end of bytecode */
+ delta = yasm_intnum_create_int(-(long)bc->len);
+ if (!jmp->target.abs)
+ jmp->target.abs = yasm_expr_create_ident(yasm_expr_int(delta),
+ bc->line);
+ else
+ jmp->target.abs =
+ yasm_expr_create(YASM_EXPR_ADD,
+ yasm_expr_expr(jmp->target.abs),
+ yasm_expr_int(delta), bc->line);
+
+ jmp->target.size = 8;
+ jmp->target.sign = 1;
+ if (output_value(&jmp->target, *bufp, 1,
+ (unsigned long)(*bufp-bufstart), bc, 1, d))
+ return 1;
+ *bufp += 1;
+ break;
+ case JMP_NEAR_FORCED:
+ case JMP_NEAR:
+ /* 2/4 byte relative displacement (depending on operand size) */
+ if (jmp->nearop.len == 0) {
+ yasm_error_set(YASM_ERROR_TYPE,
+ N_("near jump does not exist"));
+ return 1;
+ }
+
+ /* Opcode */
+ x86_opcode_tobytes(&jmp->nearop, bufp);
+
+ i = (opersize == 16) ? 2 : 4;
+
+ /* Adjust relative displacement to end of bytecode */
+ delta = yasm_intnum_create_int(-(long)bc->len);
+ if (!jmp->target.abs)
+ jmp->target.abs = yasm_expr_create_ident(yasm_expr_int(delta),
+ bc->line);
+ else
+ jmp->target.abs =
+ yasm_expr_create(YASM_EXPR_ADD,
+ yasm_expr_expr(jmp->target.abs),
+ yasm_expr_int(delta), bc->line);
+
+ jmp->target.size = i*8;
+ jmp->target.sign = 1;
+ if (output_value(&jmp->target, *bufp, i,
+ (unsigned long)(*bufp-bufstart), bc, 1, d))
+ return 1;
+ *bufp += i;
+ break;
+ case JMP_NONE:
+ yasm_internal_error(N_("jump op_sel cannot be JMP_NONE in tobytes"));
+ default:
+ yasm_internal_error(N_("unrecognized relative jump op_sel"));
+ }
+ return 0;
+}
+
+static int
+x86_bc_jmpfar_tobytes(yasm_bytecode *bc, unsigned char **bufp,
+ unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ /*@unused@*/ yasm_output_reloc_func output_reloc)
+{
+ x86_jmpfar *jmpfar = (x86_jmpfar *)bc->contents;
+ unsigned int i;
+ unsigned char opersize;
+
+ x86_common_tobytes(&jmpfar->common, bufp, 0);
+ x86_opcode_tobytes(&jmpfar->opcode, bufp);
+
+ /* As opersize may be 0, figure out its "real" value. */
+ opersize = (jmpfar->common.opersize == 0) ?
+ jmpfar->common.mode_bits : jmpfar->common.opersize;
+
+ /* Absolute displacement: segment and offset */
+ i = (opersize == 16) ? 2 : 4;
+ jmpfar->offset.size = i*8;
+ if (output_value(&jmpfar->offset, *bufp, i,
+ (unsigned long)(*bufp-bufstart), bc, 1, d))
+ return 1;
+ *bufp += i;
+ jmpfar->segment.size = 16;
+ if (output_value(&jmpfar->segment, *bufp, 2,
+ (unsigned long)(*bufp-bufstart), bc, 1, d))
+ return 1;
+ *bufp += 2;
+
+ return 0;
+}
+
+int
+yasm_x86__intnum_tobytes(yasm_arch *arch, const yasm_intnum *intn,
+ unsigned char *buf, size_t destsize, size_t valsize,
+ int shift, const yasm_bytecode *bc, int warn)
+{
+ /* Write value out. */
+ yasm_intnum_get_sized(intn, buf, destsize, valsize, shift, 0, warn);
+ return 0;
+}
diff --git a/contrib/tools/yasm/modules/arch/x86/x86expr.c b/contrib/tools/yasm/modules/arch/x86/x86expr.c
index 141cdec2bf..e9ddcce57e 100644
--- a/contrib/tools/yasm/modules/arch/x86/x86expr.c
+++ b/contrib/tools/yasm/modules/arch/x86/x86expr.c
@@ -1,1061 +1,1061 @@
-/*
- * x86 expression handling
- *
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <libyasm.h>
-
-#include "x86arch.h"
-
-
-typedef struct x86_checkea_reg3264_data {
- int *regs; /* total multiplier for each reg */
- unsigned char vsib_mode;
- unsigned char bits;
- unsigned char addrsize;
-} x86_checkea_reg3264_data;
-
-/* Only works if ei->type == EXPR_REG (doesn't check).
- * Overwrites ei with intnum of 0 (to eliminate regs from the final expr).
- */
-static /*@null@*/ /*@dependent@*/ int *
-x86_expr_checkea_get_reg3264(yasm_expr__item *ei, int *regnum,
- /*returned*/ void *d)
-{
- x86_checkea_reg3264_data *data = d;
-
- switch ((x86_expritem_reg_size)(ei->data.reg & ~0xFUL)) {
- case X86_REG32:
- if (data->addrsize != 32)
- return 0;
- *regnum = (unsigned int)(ei->data.reg & 0xF);
- break;
- case X86_REG64:
- if (data->addrsize != 64)
- return 0;
- *regnum = (unsigned int)(ei->data.reg & 0xF);
- break;
- case X86_XMMREG:
- if (data->vsib_mode != 1)
- return 0;
- if (data->bits != 64 && (ei->data.reg & 0x8) == 0x8)
- return 0;
- *regnum = 17+(unsigned int)(ei->data.reg & 0xF);
- break;
- case X86_YMMREG:
- if (data->vsib_mode != 2)
- return 0;
- if (data->bits != 64 && (ei->data.reg & 0x8) == 0x8)
- return 0;
- *regnum = 17+(unsigned int)(ei->data.reg & 0xF);
- break;
- case X86_RIP:
- if (data->bits != 64)
- return 0;
- *regnum = 16;
- break;
- default:
- return 0;
- }
-
- /* overwrite with 0 to eliminate register from displacement expr */
- ei->type = YASM_EXPR_INT;
- ei->data.intn = yasm_intnum_create_uint(0);
-
- /* we're okay */
- return &data->regs[*regnum];
-}
-
-typedef struct x86_checkea_reg16_data {
- int bx, si, di, bp; /* total multiplier for each reg */
-} x86_checkea_reg16_data;
-
-/* Only works if ei->type == EXPR_REG (doesn't check).
- * Overwrites ei with intnum of 0 (to eliminate regs from the final expr).
- */
-static /*@null@*/ int *
-x86_expr_checkea_get_reg16(yasm_expr__item *ei, int *regnum, void *d)
-{
- x86_checkea_reg16_data *data = d;
- /* in order: ax,cx,dx,bx,sp,bp,si,di */
- /*@-nullassign@*/
- static int *reg16[8] = {0,0,0,0,0,0,0,0};
- /*@=nullassign@*/
-
- reg16[3] = &data->bx;
- reg16[5] = &data->bp;
- reg16[6] = &data->si;
- reg16[7] = &data->di;
-
- /* don't allow 32-bit registers */
- if ((ei->data.reg & ~0xFUL) != X86_REG16)
- return 0;
-
- /* & 7 for sanity check */
- *regnum = (unsigned int)(ei->data.reg & 0x7);
-
- /* only allow BX, SI, DI, BP */
- if (!reg16[*regnum])
- return 0;
-
- /* overwrite with 0 to eliminate register from displacement expr */
- ei->type = YASM_EXPR_INT;
- ei->data.intn = yasm_intnum_create_uint(0);
-
- /* we're okay */
- return reg16[*regnum];
-}
-
-/* Distribute over registers to help bring them to the topmost level of e.
- * Also check for illegal operations against registers.
- * Returns 0 if something was illegal, 1 if legal and nothing in e changed,
- * and 2 if legal and e needs to be simplified.
- *
- * Only half joking: Someday make this/checkea able to accept crazy things
- * like: (bx+di)*(bx+di)-bx*bx-2*bx*di-di*di+di? Probably not: NASM never
- * accepted such things, and it's doubtful such an expn is valid anyway
- * (even though the above one is). But even macros would be hard-pressed
- * to generate something like this.
- *
- * e must already have been simplified for this function to work properly
- * (as it doesn't think things like SUB are valid).
- *
- * IMPLEMENTATION NOTE: About the only thing this function really needs to
- * "distribute" is: (non-float-expn or intnum) * (sum expn of registers).
- *
- * TODO: Clean up this code, make it easier to understand.
- */
-static int
-x86_expr_checkea_distcheck_reg(yasm_expr **ep, unsigned int bits)
-{
- yasm_expr *e = *ep;
- int i;
- int havereg = -1, havereg_expr = -1;
- int retval = 1; /* default to legal, no changes */
-
- for (i=0; i<e->numterms; i++) {
- switch (e->terms[i].type) {
- case YASM_EXPR_REG:
- /* Check op to make sure it's valid to use w/register. */
- switch (e->op) {
- case YASM_EXPR_MUL:
- /* Check for reg*reg */
- if (havereg != -1)
- return 0;
- break;
- case YASM_EXPR_ADD:
- case YASM_EXPR_IDENT:
- break;
- default:
- return 0;
- }
- havereg = i;
- break;
- case YASM_EXPR_FLOAT:
- /* Floats not allowed. */
- return 0;
- case YASM_EXPR_EXPR:
- if (yasm_expr__contains(e->terms[i].data.expn,
- YASM_EXPR_REG)) {
- int ret2;
-
- /* Check op to make sure it's valid to use w/register. */
- if (e->op != YASM_EXPR_ADD && e->op != YASM_EXPR_MUL)
- return 0;
- /* Check for reg*reg */
- if (e->op == YASM_EXPR_MUL && havereg != -1)
- return 0;
- havereg = i;
- havereg_expr = i;
- /* Recurse to check lower levels */
- ret2 =
- x86_expr_checkea_distcheck_reg(&e->terms[i].data.expn,
- bits);
- if (ret2 == 0)
- return 0;
- if (ret2 == 2)
- retval = 2;
- } else if (yasm_expr__contains(e->terms[i].data.expn,
- YASM_EXPR_FLOAT))
- return 0; /* Disallow floats */
- break;
- default:
- break;
- }
- }
-
- /* just exit if no registers were used */
- if (havereg == -1)
- return retval;
-
- /* Distribute */
- if (e->op == YASM_EXPR_MUL && havereg_expr != -1) {
- yasm_expr *ne;
-
- retval = 2; /* we're going to change it */
-
- /* The reg expn *must* be EXPR_ADD at this point. Sanity check. */
- if (e->terms[havereg_expr].type != YASM_EXPR_EXPR ||
- e->terms[havereg_expr].data.expn->op != YASM_EXPR_ADD)
- yasm_internal_error(N_("Register expression not ADD or EXPN"));
-
- /* Iterate over each term in reg expn */
- for (i=0; i<e->terms[havereg_expr].data.expn->numterms; i++) {
- /* Copy everything EXCEPT havereg_expr term into new expression */
- ne = yasm_expr__copy_except(e, havereg_expr);
- assert(ne != NULL);
- /* Copy reg expr term into uncopied (empty) term in new expn */
- ne->terms[havereg_expr] =
- e->terms[havereg_expr].data.expn->terms[i]; /* struct copy */
- /* Overwrite old reg expr term with new expn */
- e->terms[havereg_expr].data.expn->terms[i].type = YASM_EXPR_EXPR;
- e->terms[havereg_expr].data.expn->terms[i].data.expn = ne;
- }
-
- /* Replace e with expanded reg expn */
- ne = e->terms[havereg_expr].data.expn;
- e->terms[havereg_expr].type = YASM_EXPR_NONE; /* don't delete it! */
- yasm_expr_destroy(e); /* but everything else */
- e = ne;
- /*@-onlytrans@*/
- *ep = ne;
- /*@=onlytrans@*/
- }
-
- return retval;
-}
-
-/* Simplify and determine if expression is superficially valid:
- * Valid expr should be [(int-equiv expn)]+[reg*(int-equiv expn)+...]
- * where the [...] parts are optional.
- *
- * Don't simplify out constant identities if we're looking for an indexreg: we
- * may need the multiplier for determining what the indexreg is!
- *
- * Returns 1 if invalid register usage, 2 if unable to determine all values,
- * and 0 if all values successfully determined and saved in data.
- */
-static int
-x86_expr_checkea_getregusage(yasm_expr **ep, /*@null@*/ int *indexreg,
- int *pcrel, unsigned int bits, void *data,
- int *(*get_reg)(yasm_expr__item *ei, int *regnum, void *d))
-{
- int i;
- int *reg;
- int regnum;
- int indexval = 0;
- int indexmult = 0;
- yasm_expr *e, *wrt;
-
- /*@-unqualifiedtrans@*/
- *ep = yasm_expr__level_tree(*ep, 1, 1, indexreg == 0, 0, NULL, NULL);
-
- /* Check for WRT rip first */
- wrt = yasm_expr_extract_wrt(ep);
- if (wrt && wrt->op == YASM_EXPR_IDENT &&
- wrt->terms[0].type == YASM_EXPR_REG) {
- if (bits != 64) { /* only valid in 64-bit mode */
- yasm_expr_destroy(wrt);
- return 1;
- }
- reg = get_reg(&wrt->terms[0], &regnum, data);
- if (!reg || regnum != 16) { /* only accept rip */
- yasm_expr_destroy(wrt);
- return 1;
- }
- (*reg)++;
-
- /* Delete WRT. Set pcrel to 1 to indicate to x86
- * bytecode code to do PC-relative displacement transform.
- */
- *pcrel = 1;
- yasm_expr_destroy(wrt);
- } else if (wrt) {
- yasm_expr_destroy(wrt);
- return 1;
- }
-
- /*@=unqualifiedtrans@*/
- assert(*ep != NULL);
- e = *ep;
- switch (x86_expr_checkea_distcheck_reg(ep, bits)) {
- case 0:
- return 1;
- case 2:
- /* Need to simplify again */
- *ep = yasm_expr__level_tree(*ep, 1, 1, indexreg == 0, 0, NULL,
- NULL);
- e = *ep;
- break;
- default:
- break;
- }
-
- switch (e->op) {
- case YASM_EXPR_ADD:
- /* Prescan for non-int multipliers against a reg.
- * This is invalid due to the optimizer structure.
- */
- for (i=0; i<e->numterms; i++)
- if (e->terms[i].type == YASM_EXPR_EXPR) {
- yasm_expr__order_terms(e->terms[i].data.expn);
- if (e->terms[i].data.expn->terms[0].type ==
- YASM_EXPR_REG) {
- if (e->terms[i].data.expn->numterms > 2)
- return 1;
- if (e->terms[i].data.expn->terms[1].type !=
- YASM_EXPR_INT)
- return 1;
- }
- }
-
- /*@fallthrough@*/
- case YASM_EXPR_IDENT:
- /* Check each term for register (and possible multiplier). */
- for (i=0; i<e->numterms; i++) {
- if (e->terms[i].type == YASM_EXPR_REG) {
- reg = get_reg(&e->terms[i], &regnum, data);
- if (!reg)
- return 1;
- (*reg)++;
- /* Let last, largest multipler win indexreg */
- if (indexreg && *reg > 0 && indexval <= *reg &&
- !indexmult) {
- *indexreg = regnum;
- indexval = *reg;
- }
- } else if (e->terms[i].type == YASM_EXPR_EXPR) {
- /* Already ordered from ADD above, just grab the value.
- * Sanity check for EXPR_INT.
- */
- if (e->terms[i].data.expn->terms[0].type ==
- YASM_EXPR_REG) {
- long delta;
- if (e->terms[i].data.expn->terms[1].type !=
- YASM_EXPR_INT)
- yasm_internal_error(
- N_("Non-integer value in reg expn"));
- reg = get_reg(&e->terms[i].data.expn->terms[0],
- &regnum, data);
- if (!reg)
- return 1;
- delta = yasm_intnum_get_int(
- e->terms[i].data.expn->terms[1].data.intn);
- (*reg) += delta;
- /* Let last, largest multipler win indexreg */
- if (indexreg && delta > 0 && indexval <= *reg) {
- *indexreg = regnum;
- indexval = *reg;
- indexmult = 1;
- } else if (indexreg && *indexreg == regnum &&
- delta < 0 && *reg <= 1) {
- *indexreg = -1;
- indexval = 0;
- indexmult = 0;
- }
- }
- }
- }
- break;
- case YASM_EXPR_MUL:
- /* Here, too, check for non-int multipliers against a reg. */
- yasm_expr__order_terms(e);
- if (e->terms[0].type == YASM_EXPR_REG) {
- long delta;
- if (e->numterms > 2)
- return 1;
- if (e->terms[1].type != YASM_EXPR_INT)
- return 1;
- reg = get_reg(&e->terms[0], &regnum, data);
- if (!reg)
- return 1;
- delta = yasm_intnum_get_int(e->terms[1].data.intn);
- (*reg) += delta;
- if (indexreg)
- {
- if (delta < 0 && *reg <= 1)
- {
- *indexreg = -1;
- indexval = 0;
- indexmult = 0;
- }
- else
- *indexreg = regnum;
- }
- }
- break;
- case YASM_EXPR_SEGOFF:
- /* No registers are allowed on either side. */
- if (yasm_expr__contains(e, YASM_EXPR_REG))
- return 1;
- break;
- default:
- /* Should never get here! */
- yasm_internal_error(N_("unexpected expr op"));
- }
-
- /* Simplify expr, which is now really just the displacement. This
- * should get rid of the 0's we put in for registers in the callback.
- */
- *ep = yasm_expr_simplify(*ep, 0);
- /* e = *ep; */
-
- return 0;
-}
-
-/* Calculate the displacement length, if possible.
- * Takes several extra inputs so it can be used by both 32-bit and 16-bit
- * expressions:
- * wordsize=16 for 16-bit, =32 for 32-bit.
- * noreg=1 if the *ModRM byte* has no registers used.
- * dispreq=1 if a displacement value is *required* (even if =0).
- * Returns 0 if successfully calculated, 1 if not.
- */
-/*@-nullstate@*/
-static int
-x86_checkea_calc_displen(x86_effaddr *x86_ea, unsigned int wordsize, int noreg,
- int dispreq)
-{
- /*@null@*/ /*@only@*/ yasm_intnum *num;
-
- x86_ea->valid_modrm = 0; /* default to not yet valid */
-
- switch (x86_ea->ea.disp.size) {
- case 0:
- break;
- /* If not 0, the displacement length was forced; set the Mod bits
- * appropriately and we're done with the ModRM byte.
- */
- case 8:
- /* Byte is only a valid override if there are registers in the
- * EA. With no registers, we must have a 16/32 value.
- */
- if (noreg) {
- yasm_warn_set(YASM_WARN_IMPLICIT_SIZE_OVERRIDE,
- N_("invalid displacement size; fixed"));
- x86_ea->ea.disp.size = wordsize;
- } else
- x86_ea->modrm |= 0100;
- x86_ea->valid_modrm = 1;
- return 0;
- case 16:
- case 32:
- /* Don't allow changing displacement different from BITS setting
- * directly; require an address-size override to change it.
- */
- if (wordsize != x86_ea->ea.disp.size) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("invalid effective address (displacement size)"));
- return 1;
- }
- if (!noreg)
- x86_ea->modrm |= 0200;
- x86_ea->valid_modrm = 1;
- return 0;
- default:
- /* we shouldn't ever get any other size! */
- yasm_internal_error(N_("strange EA displacement size"));
- }
-
- /* The displacement length hasn't been forced (or the forcing wasn't
- * valid), try to determine what it is.
- */
- if (noreg) {
- /* No register in ModRM expression, so it must be disp16/32,
- * and as the Mod bits are set to 0 by the caller, we're done
- * with the ModRM byte.
- */
- x86_ea->ea.disp.size = wordsize;
- x86_ea->valid_modrm = 1;
- return 0;
- }
-
- if (dispreq) {
- /* for BP/EBP, there *must* be a displacement value, but we
- * may not know the size (8 or 16/32) for sure right now.
- */
- x86_ea->ea.need_nonzero_len = 1;
- }
-
- if (x86_ea->ea.disp.rel) {
- /* Relative displacement; basically all object formats need non-byte
- * for relocation here, so just do that. (TODO: handle this
- * differently?)
- */
- x86_ea->ea.disp.size = wordsize;
- x86_ea->modrm |= 0200;
- x86_ea->valid_modrm = 1;
- return 0;
- }
-
- /* At this point there's 3 possibilities for the displacement:
- * - None (if =0)
- * - signed 8 bit (if in -128 to 127 range)
- * - 16/32 bit (word size)
- * For now, check intnum value right now; if it's not 0,
- * assume 8 bit and set up for allowing 16 bit later.
- * FIXME: The complex expression equaling zero is probably a rare case,
- * so we ignore it for now.
- */
- num = yasm_value_get_intnum(&x86_ea->ea.disp, NULL, 0);
- if (!num) {
- /* Still has unknown values. */
- x86_ea->ea.need_nonzero_len = 1;
- x86_ea->modrm |= 0100;
- x86_ea->valid_modrm = 1;
- return 0;
- }
-
- /* Figure out what size displacement we will have. */
- if (yasm_intnum_is_zero(num) && !x86_ea->ea.need_nonzero_len) {
- /* If we know that the displacement is 0 right now,
- * go ahead and delete the expr and make it so no
- * displacement value is included in the output.
- * The Mod bits of ModRM are set to 0 above, and
- * we're done with the ModRM byte!
- */
- yasm_value_delete(&x86_ea->ea.disp);
- x86_ea->ea.need_disp = 0;
- } else if (yasm_intnum_in_range(num, -128, 127)) {
- /* It fits into a signed byte */
- x86_ea->ea.disp.size = 8;
- x86_ea->modrm |= 0100;
- } else {
- /* It's a 16/32-bit displacement */
- x86_ea->ea.disp.size = wordsize;
- x86_ea->modrm |= 0200;
- }
- x86_ea->valid_modrm = 1; /* We're done with ModRM */
-
- yasm_intnum_destroy(num);
- return 0;
-}
-/*@=nullstate@*/
-
-static int
-x86_expr_checkea_getregsize_callback(yasm_expr__item *ei, void *d)
-{
- unsigned char *addrsize = (unsigned char *)d;
-
- if (ei->type == YASM_EXPR_REG) {
- switch ((x86_expritem_reg_size)(ei->data.reg & ~0xFUL)) {
- case X86_REG16:
- *addrsize = 16;
- break;
- case X86_REG32:
- *addrsize = 32;
- break;
- case X86_REG64:
- case X86_RIP:
- *addrsize = 64;
- break;
- default:
- return 0;
- }
- return 1;
- } else
- return 0;
-}
-
-int
-yasm_x86__expr_checkea(x86_effaddr *x86_ea, unsigned char *addrsize,
- unsigned int bits, int address16_op, unsigned char *rex,
- yasm_bytecode *bc)
-{
- int retval;
-
- if (*addrsize == 0) {
- /* we need to figure out the address size from what we know about:
- * - the displacement length
- * - what registers are used in the expression
- * - the bits setting
- */
- switch (x86_ea->ea.disp.size) {
- case 16:
- /* must be 16-bit */
- *addrsize = 16;
- break;
- case 64:
- /* We have to support this for the MemOffs case, but it's
- * otherwise illegal. It's also illegal in non-64-bit mode.
- */
- if (x86_ea->need_modrm || x86_ea->need_sib) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("invalid effective address (displacement size)"));
- return 1;
- }
- *addrsize = 64;
- break;
- case 32:
- /* Must be 32-bit in 16-bit or 32-bit modes. In 64-bit mode,
- * we don't know unless we look at the registers, except in the
- * MemOffs case (see the end of this function).
- */
- if (bits != 64 || (!x86_ea->need_modrm && !x86_ea->need_sib)) {
- *addrsize = 32;
- break;
- }
- /*@fallthrough@*/
- default:
- /* If SIB is required, but we're in 16-bit mode, set to 32. */
- if (bits == 16 && x86_ea->need_sib == 1) {
- *addrsize = 32;
- break;
- }
- /* check for use of 16 or 32-bit registers; if none are used
- * default to bits setting.
- */
- if (!x86_ea->ea.disp.abs ||
- !yasm_expr__traverse_leaves_in(x86_ea->ea.disp.abs,
- addrsize, x86_expr_checkea_getregsize_callback))
- *addrsize = bits;
- /* TODO: Add optional warning here if switched address size
- * from bits setting just by register use.. eg [ax] in
- * 32-bit mode would generate a warning.
- */
- }
- }
-
- if ((*addrsize == 32 || *addrsize == 64) &&
- ((x86_ea->need_modrm && !x86_ea->valid_modrm) ||
- (x86_ea->need_sib && !x86_ea->valid_sib))) {
- int i;
- unsigned char low3;
- enum {
- REG3264_NONE = -1,
- REG3264_EAX = 0,
- REG3264_ECX,
- REG3264_EDX,
- REG3264_EBX,
- REG3264_ESP,
- REG3264_EBP,
- REG3264_ESI,
- REG3264_EDI,
- REG64_R8,
- REG64_R9,
- REG64_R10,
- REG64_R11,
- REG64_R12,
- REG64_R13,
- REG64_R14,
- REG64_R15,
- REG64_RIP,
- SIMDREGS
- };
- int reg3264mult[33] =
- {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
- x86_checkea_reg3264_data reg3264_data;
- int basereg = REG3264_NONE; /* "base" register (for SIB) */
- int indexreg = REG3264_NONE; /* "index" register (for SIB) */
- int regcount = 17; /* normally don't check SIMD regs */
-
- if (x86_ea->vsib_mode != 0)
- regcount = 33;
-
- /* We can only do 64-bit addresses in 64-bit mode. */
- if (*addrsize == 64 && bits != 64) {
- yasm_error_set(YASM_ERROR_TYPE,
- N_("invalid effective address (64-bit in non-64-bit mode)"));
- return 1;
- }
-
- if (x86_ea->ea.pc_rel && bits != 64) {
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("RIP-relative directive ignored in non-64-bit mode"));
- x86_ea->ea.pc_rel = 0;
- }
-
- reg3264_data.regs = reg3264mult;
- reg3264_data.vsib_mode = x86_ea->vsib_mode;
- reg3264_data.bits = bits;
- reg3264_data.addrsize = *addrsize;
- if (x86_ea->ea.disp.abs) {
- int pcrel = 0;
- switch (x86_expr_checkea_getregusage
- (&x86_ea->ea.disp.abs, &indexreg, &pcrel, bits,
- &reg3264_data, x86_expr_checkea_get_reg3264)) {
- case 1:
- yasm_error_set(YASM_ERROR_VALUE,
- N_("invalid effective address"));
- return 1;
- case 2:
- if (pcrel)
- yasm_value_set_curpos_rel(&x86_ea->ea.disp, bc, 1);
- return 2;
- default:
- if (pcrel)
- yasm_value_set_curpos_rel(&x86_ea->ea.disp, bc, 1);
- break;
- }
- }
-
- /* If indexreg mult is 0, discard it.
- * This is possible because of the way indexreg is found in
- * expr_checkea_getregusage().
- */
- if (indexreg != REG3264_NONE && reg3264mult[indexreg] == 0)
- indexreg = REG3264_NONE;
-
- /* Find a basereg (*1, but not indexreg), if there is one.
- * Also, if an indexreg hasn't been assigned, try to find one.
- * Meanwhile, check to make sure there's no negative register mults.
- */
- for (i=0; i<regcount; i++) {
- if (reg3264mult[i] < 0) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("invalid effective address"));
- return 1;
- }
- if (i != indexreg && reg3264mult[i] == 1 &&
- basereg == REG3264_NONE)
- basereg = i;
- else if (indexreg == REG3264_NONE && reg3264mult[i] > 0)
- indexreg = i;
- }
-
- if (x86_ea->vsib_mode != 0) {
- /* For VSIB, the SIMD register needs to go into the indexreg.
- * Also check basereg (must be a GPR if present) and indexreg
- * (must be a SIMD register).
- */
- if (basereg >= SIMDREGS &&
- (indexreg == REG3264_NONE || reg3264mult[indexreg] == 1)) {
- int temp = basereg;
- basereg = indexreg;
- indexreg = temp;
- }
- if (basereg >= REG64_RIP || indexreg < SIMDREGS) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("invalid effective address"));
- return 1;
- }
- } else if (indexreg != REG3264_NONE && basereg == REG3264_NONE)
- /* Handle certain special cases of indexreg mults when basereg is
- * empty.
- */
- switch (reg3264mult[indexreg]) {
- case 1:
- /* Only optimize this way if nosplit wasn't specified */
- if (!x86_ea->ea.nosplit) {
- basereg = indexreg;
- indexreg = -1;
- }
- break;
- case 2:
- /* Only split if nosplit wasn't specified */
- if (!x86_ea->ea.nosplit) {
- basereg = indexreg;
- reg3264mult[indexreg] = 1;
- }
- break;
- case 3:
- case 5:
- case 9:
- basereg = indexreg;
- reg3264mult[indexreg]--;
- break;
- }
-
- /* Make sure there's no other registers than the basereg and indexreg
- * we just found.
- */
- for (i=0; i<regcount; i++)
- if (i != basereg && i != indexreg && reg3264mult[i] != 0) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("invalid effective address"));
- return 1;
- }
-
- /* Check the index multiplier value for validity if present. */
- if (indexreg != REG3264_NONE && reg3264mult[indexreg] != 1 &&
- reg3264mult[indexreg] != 2 && reg3264mult[indexreg] != 4 &&
- reg3264mult[indexreg] != 8) {
- yasm_error_set(YASM_ERROR_VALUE, N_("invalid effective address"));
- return 1;
- }
-
- /* ESP is not a legal indexreg. */
- if (indexreg == REG3264_ESP) {
- /* If mult>1 or basereg is ESP also, there's no way to make it
- * legal.
- */
- if (reg3264mult[REG3264_ESP] > 1 || basereg == REG3264_ESP) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("invalid effective address"));
- return 1;
- }
- /* If mult==1 and basereg is not ESP, swap indexreg w/basereg. */
- indexreg = basereg;
- basereg = REG3264_ESP;
- }
-
- /* RIP is only legal if it's the ONLY register used. */
- if (indexreg == REG64_RIP ||
- (basereg == REG64_RIP && indexreg != REG3264_NONE)) {
- yasm_error_set(YASM_ERROR_VALUE, N_("invalid effective address"));
- return 1;
- }
-
- /* At this point, we know the base and index registers and that the
- * memory expression is (essentially) valid. Now build the ModRM and
- * (optional) SIB bytes.
- */
-
- /* If we're supposed to be RIP-relative and there's no register
- * usage, change to RIP-relative.
- */
- if (basereg == REG3264_NONE && indexreg == REG3264_NONE &&
- x86_ea->ea.pc_rel) {
- basereg = REG64_RIP;
- yasm_value_set_curpos_rel(&x86_ea->ea.disp, bc, 1);
- }
-
- /* First determine R/M (Mod is later determined from disp size) */
- x86_ea->need_modrm = 1; /* we always need ModRM */
- if (basereg == REG3264_NONE && indexreg == REG3264_NONE) {
- /* Just a disp32: in 64-bit mode the RM encoding is used for RIP
- * offset addressing, so we need to use the SIB form instead.
- */
- if (bits == 64) {
- x86_ea->modrm |= 4;
- x86_ea->need_sib = 1;
- } else {
- x86_ea->modrm |= 5;
- x86_ea->sib = 0;
- x86_ea->valid_sib = 0;
- x86_ea->need_sib = 0;
- }
- } else if (basereg == REG64_RIP) {
- x86_ea->modrm |= 5;
- x86_ea->sib = 0;
- x86_ea->valid_sib = 0;
- x86_ea->need_sib = 0;
- /* RIP always requires a 32-bit displacement */
- x86_ea->valid_modrm = 1;
- x86_ea->ea.disp.size = 32;
- return 0;
- } else if (indexreg == REG3264_NONE) {
- /* basereg only */
- /* Don't need to go to the full effort of determining what type
- * of register basereg is, as x86_set_rex_from_reg doesn't pay
- * much attention.
- */
- if (yasm_x86__set_rex_from_reg(rex, &low3,
- (unsigned int)(X86_REG64 | basereg),
- bits, X86_REX_B))
- return 1;
- x86_ea->modrm |= low3;
- /* we don't need an SIB *unless* basereg is ESP or R12 */
- if (basereg == REG3264_ESP || basereg == REG64_R12)
- x86_ea->need_sib = 1;
- else {
- x86_ea->sib = 0;
- x86_ea->valid_sib = 0;
- x86_ea->need_sib = 0;
- }
- } else {
- /* index or both base and index */
- x86_ea->modrm |= 4;
- x86_ea->need_sib = 1;
- }
-
- /* Determine SIB if needed */
- if (x86_ea->need_sib == 1) {
- x86_ea->sib = 0; /* start with 0 */
-
- /* Special case: no basereg */
- if (basereg == REG3264_NONE)
- x86_ea->sib |= 5;
- else {
- if (yasm_x86__set_rex_from_reg(rex, &low3, (unsigned int)
- (X86_REG64 | basereg), bits,
- X86_REX_B))
- return 1;
- x86_ea->sib |= low3;
- }
-
- /* Put in indexreg, checking for none case */
- if (indexreg == REG3264_NONE)
- x86_ea->sib |= 040;
- /* Any scale field is valid, just leave at 0. */
- else {
- if (indexreg >= SIMDREGS) {
- if (yasm_x86__set_rex_from_reg(rex, &low3,
- (unsigned int)(X86_XMMREG | (indexreg-SIMDREGS)),
- bits, X86_REX_X))
- return 1;
- } else {
- if (yasm_x86__set_rex_from_reg(rex, &low3,
- (unsigned int)(X86_REG64 | indexreg),
- bits, X86_REX_X))
- return 1;
- }
- x86_ea->sib |= low3 << 3;
- /* Set scale field, 1 case -> 0, so don't bother. */
- switch (reg3264mult[indexreg]) {
- case 2:
- x86_ea->sib |= 0100;
- break;
- case 4:
- x86_ea->sib |= 0200;
- break;
- case 8:
- x86_ea->sib |= 0300;
- break;
- }
- }
-
- x86_ea->valid_sib = 1; /* Done with SIB */
- }
-
- /* Calculate displacement length (if possible) */
- retval = x86_checkea_calc_displen
- (x86_ea, 32, basereg == REG3264_NONE,
- basereg == REG3264_EBP || basereg == REG64_R13);
- return retval;
- } else if (*addrsize == 16 && x86_ea->need_modrm && !x86_ea->valid_modrm) {
- static const unsigned char modrm16[16] = {
- 0006 /* disp16 */, 0007 /* [BX] */, 0004 /* [SI] */,
- 0000 /* [BX+SI] */, 0005 /* [DI] */, 0001 /* [BX+DI] */,
- 0377 /* invalid */, 0377 /* invalid */, 0006 /* [BP]+d */,
- 0377 /* invalid */, 0002 /* [BP+SI] */, 0377 /* invalid */,
- 0003 /* [BP+DI] */, 0377 /* invalid */, 0377 /* invalid */,
- 0377 /* invalid */
- };
- x86_checkea_reg16_data reg16mult = {0, 0, 0, 0};
- enum {
- HAVE_NONE = 0,
- HAVE_BX = 1<<0,
- HAVE_SI = 1<<1,
- HAVE_DI = 1<<2,
- HAVE_BP = 1<<3
- } havereg = HAVE_NONE;
-
- /* 64-bit mode does not allow 16-bit addresses */
- if (bits == 64 && !address16_op) {
- yasm_error_set(YASM_ERROR_TYPE,
- N_("16-bit addresses not supported in 64-bit mode"));
- return 1;
- }
-
- /* 16-bit cannot have SIB */
- x86_ea->sib = 0;
- x86_ea->valid_sib = 0;
- x86_ea->need_sib = 0;
-
- if (x86_ea->ea.disp.abs) {
- int pcrel = 0;
- switch (x86_expr_checkea_getregusage
- (&x86_ea->ea.disp.abs, (int *)NULL, &pcrel, bits,
- &reg16mult, x86_expr_checkea_get_reg16)) {
- case 1:
- yasm_error_set(YASM_ERROR_VALUE,
- N_("invalid effective address"));
- return 1;
- case 2:
- if (pcrel)
- yasm_value_set_curpos_rel(&x86_ea->ea.disp, bc, 1);
- return 2;
- default:
- if (pcrel)
- yasm_value_set_curpos_rel(&x86_ea->ea.disp, bc, 1);
- break;
- }
- }
-
- /* reg multipliers not 0 or 1 are illegal. */
- if (reg16mult.bx & ~1 || reg16mult.si & ~1 || reg16mult.di & ~1 ||
- reg16mult.bp & ~1) {
- yasm_error_set(YASM_ERROR_VALUE, N_("invalid effective address"));
- return 1;
- }
-
- /* Set havereg appropriately */
- if (reg16mult.bx > 0)
- havereg |= HAVE_BX;
- if (reg16mult.si > 0)
- havereg |= HAVE_SI;
- if (reg16mult.di > 0)
- havereg |= HAVE_DI;
- if (reg16mult.bp > 0)
- havereg |= HAVE_BP;
-
- /* Check the modrm value for invalid combinations. */
- if (modrm16[havereg] & 0070) {
- yasm_error_set(YASM_ERROR_VALUE, N_("invalid effective address"));
- return 1;
- }
-
- /* Set ModRM byte for registers */
- x86_ea->modrm |= modrm16[havereg];
-
- /* Calculate displacement length (if possible) */
- retval = x86_checkea_calc_displen
- (x86_ea, 16, havereg == HAVE_NONE, havereg == HAVE_BP);
- return retval;
- } else if (!x86_ea->need_modrm && !x86_ea->need_sib) {
- /* Special case for MOV MemOffs opcode: displacement but no modrm. */
- switch (*addrsize) {
- case 64:
- if (bits != 64) {
- yasm_error_set(YASM_ERROR_TYPE,
- N_("invalid effective address (64-bit in non-64-bit mode)"));
- return 1;
- }
- x86_ea->ea.disp.size = 64;
- break;
- case 32:
- x86_ea->ea.disp.size = 32;
- break;
- case 16:
- /* 64-bit mode does not allow 16-bit addresses */
- if (bits == 64 && !address16_op) {
- yasm_error_set(YASM_ERROR_TYPE,
- N_("16-bit addresses not supported in 64-bit mode"));
- return 1;
- }
- x86_ea->ea.disp.size = 16;
- break;
- }
- }
- return 0;
-}
-
-int
-yasm_x86__floatnum_tobytes(yasm_arch *arch, const yasm_floatnum *flt,
- unsigned char *buf, size_t destsize, size_t valsize,
- size_t shift, int warn)
-{
- if (!yasm_floatnum_check_size(flt, valsize)) {
- yasm_error_set(YASM_ERROR_FLOATING_POINT,
- N_("invalid floating point constant size"));
- return 1;
- }
-
- yasm_floatnum_get_sized(flt, buf, destsize, valsize, shift, 0, warn);
- return 0;
-}
+/*
+ * x86 expression handling
+ *
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <libyasm.h>
+
+#include "x86arch.h"
+
+
+typedef struct x86_checkea_reg3264_data {
+ int *regs; /* total multiplier for each reg */
+ unsigned char vsib_mode;
+ unsigned char bits;
+ unsigned char addrsize;
+} x86_checkea_reg3264_data;
+
+/* Only works if ei->type == EXPR_REG (doesn't check).
+ * Overwrites ei with intnum of 0 (to eliminate regs from the final expr).
+ */
+static /*@null@*/ /*@dependent@*/ int *
+x86_expr_checkea_get_reg3264(yasm_expr__item *ei, int *regnum,
+ /*returned*/ void *d)
+{
+ x86_checkea_reg3264_data *data = d;
+
+ switch ((x86_expritem_reg_size)(ei->data.reg & ~0xFUL)) {
+ case X86_REG32:
+ if (data->addrsize != 32)
+ return 0;
+ *regnum = (unsigned int)(ei->data.reg & 0xF);
+ break;
+ case X86_REG64:
+ if (data->addrsize != 64)
+ return 0;
+ *regnum = (unsigned int)(ei->data.reg & 0xF);
+ break;
+ case X86_XMMREG:
+ if (data->vsib_mode != 1)
+ return 0;
+ if (data->bits != 64 && (ei->data.reg & 0x8) == 0x8)
+ return 0;
+ *regnum = 17+(unsigned int)(ei->data.reg & 0xF);
+ break;
+ case X86_YMMREG:
+ if (data->vsib_mode != 2)
+ return 0;
+ if (data->bits != 64 && (ei->data.reg & 0x8) == 0x8)
+ return 0;
+ *regnum = 17+(unsigned int)(ei->data.reg & 0xF);
+ break;
+ case X86_RIP:
+ if (data->bits != 64)
+ return 0;
+ *regnum = 16;
+ break;
+ default:
+ return 0;
+ }
+
+ /* overwrite with 0 to eliminate register from displacement expr */
+ ei->type = YASM_EXPR_INT;
+ ei->data.intn = yasm_intnum_create_uint(0);
+
+ /* we're okay */
+ return &data->regs[*regnum];
+}
+
+typedef struct x86_checkea_reg16_data {
+ int bx, si, di, bp; /* total multiplier for each reg */
+} x86_checkea_reg16_data;
+
+/* Only works if ei->type == EXPR_REG (doesn't check).
+ * Overwrites ei with intnum of 0 (to eliminate regs from the final expr).
+ */
+static /*@null@*/ int *
+x86_expr_checkea_get_reg16(yasm_expr__item *ei, int *regnum, void *d)
+{
+ x86_checkea_reg16_data *data = d;
+ /* in order: ax,cx,dx,bx,sp,bp,si,di */
+ /*@-nullassign@*/
+ static int *reg16[8] = {0,0,0,0,0,0,0,0};
+ /*@=nullassign@*/
+
+ reg16[3] = &data->bx;
+ reg16[5] = &data->bp;
+ reg16[6] = &data->si;
+ reg16[7] = &data->di;
+
+ /* don't allow 32-bit registers */
+ if ((ei->data.reg & ~0xFUL) != X86_REG16)
+ return 0;
+
+ /* & 7 for sanity check */
+ *regnum = (unsigned int)(ei->data.reg & 0x7);
+
+ /* only allow BX, SI, DI, BP */
+ if (!reg16[*regnum])
+ return 0;
+
+ /* overwrite with 0 to eliminate register from displacement expr */
+ ei->type = YASM_EXPR_INT;
+ ei->data.intn = yasm_intnum_create_uint(0);
+
+ /* we're okay */
+ return reg16[*regnum];
+}
+
+/* Distribute over registers to help bring them to the topmost level of e.
+ * Also check for illegal operations against registers.
+ * Returns 0 if something was illegal, 1 if legal and nothing in e changed,
+ * and 2 if legal and e needs to be simplified.
+ *
+ * Only half joking: Someday make this/checkea able to accept crazy things
+ * like: (bx+di)*(bx+di)-bx*bx-2*bx*di-di*di+di? Probably not: NASM never
+ * accepted such things, and it's doubtful such an expn is valid anyway
+ * (even though the above one is). But even macros would be hard-pressed
+ * to generate something like this.
+ *
+ * e must already have been simplified for this function to work properly
+ * (as it doesn't think things like SUB are valid).
+ *
+ * IMPLEMENTATION NOTE: About the only thing this function really needs to
+ * "distribute" is: (non-float-expn or intnum) * (sum expn of registers).
+ *
+ * TODO: Clean up this code, make it easier to understand.
+ */
+static int
+x86_expr_checkea_distcheck_reg(yasm_expr **ep, unsigned int bits)
+{
+ yasm_expr *e = *ep;
+ int i;
+ int havereg = -1, havereg_expr = -1;
+ int retval = 1; /* default to legal, no changes */
+
+ for (i=0; i<e->numterms; i++) {
+ switch (e->terms[i].type) {
+ case YASM_EXPR_REG:
+ /* Check op to make sure it's valid to use w/register. */
+ switch (e->op) {
+ case YASM_EXPR_MUL:
+ /* Check for reg*reg */
+ if (havereg != -1)
+ return 0;
+ break;
+ case YASM_EXPR_ADD:
+ case YASM_EXPR_IDENT:
+ break;
+ default:
+ return 0;
+ }
+ havereg = i;
+ break;
+ case YASM_EXPR_FLOAT:
+ /* Floats not allowed. */
+ return 0;
+ case YASM_EXPR_EXPR:
+ if (yasm_expr__contains(e->terms[i].data.expn,
+ YASM_EXPR_REG)) {
+ int ret2;
+
+ /* Check op to make sure it's valid to use w/register. */
+ if (e->op != YASM_EXPR_ADD && e->op != YASM_EXPR_MUL)
+ return 0;
+ /* Check for reg*reg */
+ if (e->op == YASM_EXPR_MUL && havereg != -1)
+ return 0;
+ havereg = i;
+ havereg_expr = i;
+ /* Recurse to check lower levels */
+ ret2 =
+ x86_expr_checkea_distcheck_reg(&e->terms[i].data.expn,
+ bits);
+ if (ret2 == 0)
+ return 0;
+ if (ret2 == 2)
+ retval = 2;
+ } else if (yasm_expr__contains(e->terms[i].data.expn,
+ YASM_EXPR_FLOAT))
+ return 0; /* Disallow floats */
+ break;
+ default:
+ break;
+ }
+ }
+
+ /* just exit if no registers were used */
+ if (havereg == -1)
+ return retval;
+
+ /* Distribute */
+ if (e->op == YASM_EXPR_MUL && havereg_expr != -1) {
+ yasm_expr *ne;
+
+ retval = 2; /* we're going to change it */
+
+ /* The reg expn *must* be EXPR_ADD at this point. Sanity check. */
+ if (e->terms[havereg_expr].type != YASM_EXPR_EXPR ||
+ e->terms[havereg_expr].data.expn->op != YASM_EXPR_ADD)
+ yasm_internal_error(N_("Register expression not ADD or EXPN"));
+
+ /* Iterate over each term in reg expn */
+ for (i=0; i<e->terms[havereg_expr].data.expn->numterms; i++) {
+ /* Copy everything EXCEPT havereg_expr term into new expression */
+ ne = yasm_expr__copy_except(e, havereg_expr);
+ assert(ne != NULL);
+ /* Copy reg expr term into uncopied (empty) term in new expn */
+ ne->terms[havereg_expr] =
+ e->terms[havereg_expr].data.expn->terms[i]; /* struct copy */
+ /* Overwrite old reg expr term with new expn */
+ e->terms[havereg_expr].data.expn->terms[i].type = YASM_EXPR_EXPR;
+ e->terms[havereg_expr].data.expn->terms[i].data.expn = ne;
+ }
+
+ /* Replace e with expanded reg expn */
+ ne = e->terms[havereg_expr].data.expn;
+ e->terms[havereg_expr].type = YASM_EXPR_NONE; /* don't delete it! */
+ yasm_expr_destroy(e); /* but everything else */
+ e = ne;
+ /*@-onlytrans@*/
+ *ep = ne;
+ /*@=onlytrans@*/
+ }
+
+ return retval;
+}
+
+/* Simplify and determine if expression is superficially valid:
+ * Valid expr should be [(int-equiv expn)]+[reg*(int-equiv expn)+...]
+ * where the [...] parts are optional.
+ *
+ * Don't simplify out constant identities if we're looking for an indexreg: we
+ * may need the multiplier for determining what the indexreg is!
+ *
+ * Returns 1 if invalid register usage, 2 if unable to determine all values,
+ * and 0 if all values successfully determined and saved in data.
+ */
+static int
+x86_expr_checkea_getregusage(yasm_expr **ep, /*@null@*/ int *indexreg,
+ int *pcrel, unsigned int bits, void *data,
+ int *(*get_reg)(yasm_expr__item *ei, int *regnum, void *d))
+{
+ int i;
+ int *reg;
+ int regnum;
+ int indexval = 0;
+ int indexmult = 0;
+ yasm_expr *e, *wrt;
+
+ /*@-unqualifiedtrans@*/
+ *ep = yasm_expr__level_tree(*ep, 1, 1, indexreg == 0, 0, NULL, NULL);
+
+ /* Check for WRT rip first */
+ wrt = yasm_expr_extract_wrt(ep);
+ if (wrt && wrt->op == YASM_EXPR_IDENT &&
+ wrt->terms[0].type == YASM_EXPR_REG) {
+ if (bits != 64) { /* only valid in 64-bit mode */
+ yasm_expr_destroy(wrt);
+ return 1;
+ }
+ reg = get_reg(&wrt->terms[0], &regnum, data);
+ if (!reg || regnum != 16) { /* only accept rip */
+ yasm_expr_destroy(wrt);
+ return 1;
+ }
+ (*reg)++;
+
+ /* Delete WRT. Set pcrel to 1 to indicate to x86
+ * bytecode code to do PC-relative displacement transform.
+ */
+ *pcrel = 1;
+ yasm_expr_destroy(wrt);
+ } else if (wrt) {
+ yasm_expr_destroy(wrt);
+ return 1;
+ }
+
+ /*@=unqualifiedtrans@*/
+ assert(*ep != NULL);
+ e = *ep;
+ switch (x86_expr_checkea_distcheck_reg(ep, bits)) {
+ case 0:
+ return 1;
+ case 2:
+ /* Need to simplify again */
+ *ep = yasm_expr__level_tree(*ep, 1, 1, indexreg == 0, 0, NULL,
+ NULL);
+ e = *ep;
+ break;
+ default:
+ break;
+ }
+
+ switch (e->op) {
+ case YASM_EXPR_ADD:
+ /* Prescan for non-int multipliers against a reg.
+ * This is invalid due to the optimizer structure.
+ */
+ for (i=0; i<e->numterms; i++)
+ if (e->terms[i].type == YASM_EXPR_EXPR) {
+ yasm_expr__order_terms(e->terms[i].data.expn);
+ if (e->terms[i].data.expn->terms[0].type ==
+ YASM_EXPR_REG) {
+ if (e->terms[i].data.expn->numterms > 2)
+ return 1;
+ if (e->terms[i].data.expn->terms[1].type !=
+ YASM_EXPR_INT)
+ return 1;
+ }
+ }
+
+ /*@fallthrough@*/
+ case YASM_EXPR_IDENT:
+ /* Check each term for register (and possible multiplier). */
+ for (i=0; i<e->numterms; i++) {
+ if (e->terms[i].type == YASM_EXPR_REG) {
+ reg = get_reg(&e->terms[i], &regnum, data);
+ if (!reg)
+ return 1;
+ (*reg)++;
+ /* Let last, largest multipler win indexreg */
+ if (indexreg && *reg > 0 && indexval <= *reg &&
+ !indexmult) {
+ *indexreg = regnum;
+ indexval = *reg;
+ }
+ } else if (e->terms[i].type == YASM_EXPR_EXPR) {
+ /* Already ordered from ADD above, just grab the value.
+ * Sanity check for EXPR_INT.
+ */
+ if (e->terms[i].data.expn->terms[0].type ==
+ YASM_EXPR_REG) {
+ long delta;
+ if (e->terms[i].data.expn->terms[1].type !=
+ YASM_EXPR_INT)
+ yasm_internal_error(
+ N_("Non-integer value in reg expn"));
+ reg = get_reg(&e->terms[i].data.expn->terms[0],
+ &regnum, data);
+ if (!reg)
+ return 1;
+ delta = yasm_intnum_get_int(
+ e->terms[i].data.expn->terms[1].data.intn);
+ (*reg) += delta;
+ /* Let last, largest multipler win indexreg */
+ if (indexreg && delta > 0 && indexval <= *reg) {
+ *indexreg = regnum;
+ indexval = *reg;
+ indexmult = 1;
+ } else if (indexreg && *indexreg == regnum &&
+ delta < 0 && *reg <= 1) {
+ *indexreg = -1;
+ indexval = 0;
+ indexmult = 0;
+ }
+ }
+ }
+ }
+ break;
+ case YASM_EXPR_MUL:
+ /* Here, too, check for non-int multipliers against a reg. */
+ yasm_expr__order_terms(e);
+ if (e->terms[0].type == YASM_EXPR_REG) {
+ long delta;
+ if (e->numterms > 2)
+ return 1;
+ if (e->terms[1].type != YASM_EXPR_INT)
+ return 1;
+ reg = get_reg(&e->terms[0], &regnum, data);
+ if (!reg)
+ return 1;
+ delta = yasm_intnum_get_int(e->terms[1].data.intn);
+ (*reg) += delta;
+ if (indexreg)
+ {
+ if (delta < 0 && *reg <= 1)
+ {
+ *indexreg = -1;
+ indexval = 0;
+ indexmult = 0;
+ }
+ else
+ *indexreg = regnum;
+ }
+ }
+ break;
+ case YASM_EXPR_SEGOFF:
+ /* No registers are allowed on either side. */
+ if (yasm_expr__contains(e, YASM_EXPR_REG))
+ return 1;
+ break;
+ default:
+ /* Should never get here! */
+ yasm_internal_error(N_("unexpected expr op"));
+ }
+
+ /* Simplify expr, which is now really just the displacement. This
+ * should get rid of the 0's we put in for registers in the callback.
+ */
+ *ep = yasm_expr_simplify(*ep, 0);
+ /* e = *ep; */
+
+ return 0;
+}
+
+/* Calculate the displacement length, if possible.
+ * Takes several extra inputs so it can be used by both 32-bit and 16-bit
+ * expressions:
+ * wordsize=16 for 16-bit, =32 for 32-bit.
+ * noreg=1 if the *ModRM byte* has no registers used.
+ * dispreq=1 if a displacement value is *required* (even if =0).
+ * Returns 0 if successfully calculated, 1 if not.
+ */
+/*@-nullstate@*/
+static int
+x86_checkea_calc_displen(x86_effaddr *x86_ea, unsigned int wordsize, int noreg,
+ int dispreq)
+{
+ /*@null@*/ /*@only@*/ yasm_intnum *num;
+
+ x86_ea->valid_modrm = 0; /* default to not yet valid */
+
+ switch (x86_ea->ea.disp.size) {
+ case 0:
+ break;
+ /* If not 0, the displacement length was forced; set the Mod bits
+ * appropriately and we're done with the ModRM byte.
+ */
+ case 8:
+ /* Byte is only a valid override if there are registers in the
+ * EA. With no registers, we must have a 16/32 value.
+ */
+ if (noreg) {
+ yasm_warn_set(YASM_WARN_IMPLICIT_SIZE_OVERRIDE,
+ N_("invalid displacement size; fixed"));
+ x86_ea->ea.disp.size = wordsize;
+ } else
+ x86_ea->modrm |= 0100;
+ x86_ea->valid_modrm = 1;
+ return 0;
+ case 16:
+ case 32:
+ /* Don't allow changing displacement different from BITS setting
+ * directly; require an address-size override to change it.
+ */
+ if (wordsize != x86_ea->ea.disp.size) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("invalid effective address (displacement size)"));
+ return 1;
+ }
+ if (!noreg)
+ x86_ea->modrm |= 0200;
+ x86_ea->valid_modrm = 1;
+ return 0;
+ default:
+ /* we shouldn't ever get any other size! */
+ yasm_internal_error(N_("strange EA displacement size"));
+ }
+
+ /* The displacement length hasn't been forced (or the forcing wasn't
+ * valid), try to determine what it is.
+ */
+ if (noreg) {
+ /* No register in ModRM expression, so it must be disp16/32,
+ * and as the Mod bits are set to 0 by the caller, we're done
+ * with the ModRM byte.
+ */
+ x86_ea->ea.disp.size = wordsize;
+ x86_ea->valid_modrm = 1;
+ return 0;
+ }
+
+ if (dispreq) {
+ /* for BP/EBP, there *must* be a displacement value, but we
+ * may not know the size (8 or 16/32) for sure right now.
+ */
+ x86_ea->ea.need_nonzero_len = 1;
+ }
+
+ if (x86_ea->ea.disp.rel) {
+ /* Relative displacement; basically all object formats need non-byte
+ * for relocation here, so just do that. (TODO: handle this
+ * differently?)
+ */
+ x86_ea->ea.disp.size = wordsize;
+ x86_ea->modrm |= 0200;
+ x86_ea->valid_modrm = 1;
+ return 0;
+ }
+
+ /* At this point there's 3 possibilities for the displacement:
+ * - None (if =0)
+ * - signed 8 bit (if in -128 to 127 range)
+ * - 16/32 bit (word size)
+ * For now, check intnum value right now; if it's not 0,
+ * assume 8 bit and set up for allowing 16 bit later.
+ * FIXME: The complex expression equaling zero is probably a rare case,
+ * so we ignore it for now.
+ */
+ num = yasm_value_get_intnum(&x86_ea->ea.disp, NULL, 0);
+ if (!num) {
+ /* Still has unknown values. */
+ x86_ea->ea.need_nonzero_len = 1;
+ x86_ea->modrm |= 0100;
+ x86_ea->valid_modrm = 1;
+ return 0;
+ }
+
+ /* Figure out what size displacement we will have. */
+ if (yasm_intnum_is_zero(num) && !x86_ea->ea.need_nonzero_len) {
+ /* If we know that the displacement is 0 right now,
+ * go ahead and delete the expr and make it so no
+ * displacement value is included in the output.
+ * The Mod bits of ModRM are set to 0 above, and
+ * we're done with the ModRM byte!
+ */
+ yasm_value_delete(&x86_ea->ea.disp);
+ x86_ea->ea.need_disp = 0;
+ } else if (yasm_intnum_in_range(num, -128, 127)) {
+ /* It fits into a signed byte */
+ x86_ea->ea.disp.size = 8;
+ x86_ea->modrm |= 0100;
+ } else {
+ /* It's a 16/32-bit displacement */
+ x86_ea->ea.disp.size = wordsize;
+ x86_ea->modrm |= 0200;
+ }
+ x86_ea->valid_modrm = 1; /* We're done with ModRM */
+
+ yasm_intnum_destroy(num);
+ return 0;
+}
+/*@=nullstate@*/
+
+static int
+x86_expr_checkea_getregsize_callback(yasm_expr__item *ei, void *d)
+{
+ unsigned char *addrsize = (unsigned char *)d;
+
+ if (ei->type == YASM_EXPR_REG) {
+ switch ((x86_expritem_reg_size)(ei->data.reg & ~0xFUL)) {
+ case X86_REG16:
+ *addrsize = 16;
+ break;
+ case X86_REG32:
+ *addrsize = 32;
+ break;
+ case X86_REG64:
+ case X86_RIP:
+ *addrsize = 64;
+ break;
+ default:
+ return 0;
+ }
+ return 1;
+ } else
+ return 0;
+}
+
+int
+yasm_x86__expr_checkea(x86_effaddr *x86_ea, unsigned char *addrsize,
+ unsigned int bits, int address16_op, unsigned char *rex,
+ yasm_bytecode *bc)
+{
+ int retval;
+
+ if (*addrsize == 0) {
+ /* we need to figure out the address size from what we know about:
+ * - the displacement length
+ * - what registers are used in the expression
+ * - the bits setting
+ */
+ switch (x86_ea->ea.disp.size) {
+ case 16:
+ /* must be 16-bit */
+ *addrsize = 16;
+ break;
+ case 64:
+ /* We have to support this for the MemOffs case, but it's
+ * otherwise illegal. It's also illegal in non-64-bit mode.
+ */
+ if (x86_ea->need_modrm || x86_ea->need_sib) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("invalid effective address (displacement size)"));
+ return 1;
+ }
+ *addrsize = 64;
+ break;
+ case 32:
+ /* Must be 32-bit in 16-bit or 32-bit modes. In 64-bit mode,
+ * we don't know unless we look at the registers, except in the
+ * MemOffs case (see the end of this function).
+ */
+ if (bits != 64 || (!x86_ea->need_modrm && !x86_ea->need_sib)) {
+ *addrsize = 32;
+ break;
+ }
+ /*@fallthrough@*/
+ default:
+ /* If SIB is required, but we're in 16-bit mode, set to 32. */
+ if (bits == 16 && x86_ea->need_sib == 1) {
+ *addrsize = 32;
+ break;
+ }
+ /* check for use of 16 or 32-bit registers; if none are used
+ * default to bits setting.
+ */
+ if (!x86_ea->ea.disp.abs ||
+ !yasm_expr__traverse_leaves_in(x86_ea->ea.disp.abs,
+ addrsize, x86_expr_checkea_getregsize_callback))
+ *addrsize = bits;
+ /* TODO: Add optional warning here if switched address size
+ * from bits setting just by register use.. eg [ax] in
+ * 32-bit mode would generate a warning.
+ */
+ }
+ }
+
+ if ((*addrsize == 32 || *addrsize == 64) &&
+ ((x86_ea->need_modrm && !x86_ea->valid_modrm) ||
+ (x86_ea->need_sib && !x86_ea->valid_sib))) {
+ int i;
+ unsigned char low3;
+ enum {
+ REG3264_NONE = -1,
+ REG3264_EAX = 0,
+ REG3264_ECX,
+ REG3264_EDX,
+ REG3264_EBX,
+ REG3264_ESP,
+ REG3264_EBP,
+ REG3264_ESI,
+ REG3264_EDI,
+ REG64_R8,
+ REG64_R9,
+ REG64_R10,
+ REG64_R11,
+ REG64_R12,
+ REG64_R13,
+ REG64_R14,
+ REG64_R15,
+ REG64_RIP,
+ SIMDREGS
+ };
+ int reg3264mult[33] =
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+ x86_checkea_reg3264_data reg3264_data;
+ int basereg = REG3264_NONE; /* "base" register (for SIB) */
+ int indexreg = REG3264_NONE; /* "index" register (for SIB) */
+ int regcount = 17; /* normally don't check SIMD regs */
+
+ if (x86_ea->vsib_mode != 0)
+ regcount = 33;
+
+ /* We can only do 64-bit addresses in 64-bit mode. */
+ if (*addrsize == 64 && bits != 64) {
+ yasm_error_set(YASM_ERROR_TYPE,
+ N_("invalid effective address (64-bit in non-64-bit mode)"));
+ return 1;
+ }
+
+ if (x86_ea->ea.pc_rel && bits != 64) {
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("RIP-relative directive ignored in non-64-bit mode"));
+ x86_ea->ea.pc_rel = 0;
+ }
+
+ reg3264_data.regs = reg3264mult;
+ reg3264_data.vsib_mode = x86_ea->vsib_mode;
+ reg3264_data.bits = bits;
+ reg3264_data.addrsize = *addrsize;
+ if (x86_ea->ea.disp.abs) {
+ int pcrel = 0;
+ switch (x86_expr_checkea_getregusage
+ (&x86_ea->ea.disp.abs, &indexreg, &pcrel, bits,
+ &reg3264_data, x86_expr_checkea_get_reg3264)) {
+ case 1:
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("invalid effective address"));
+ return 1;
+ case 2:
+ if (pcrel)
+ yasm_value_set_curpos_rel(&x86_ea->ea.disp, bc, 1);
+ return 2;
+ default:
+ if (pcrel)
+ yasm_value_set_curpos_rel(&x86_ea->ea.disp, bc, 1);
+ break;
+ }
+ }
+
+ /* If indexreg mult is 0, discard it.
+ * This is possible because of the way indexreg is found in
+ * expr_checkea_getregusage().
+ */
+ if (indexreg != REG3264_NONE && reg3264mult[indexreg] == 0)
+ indexreg = REG3264_NONE;
+
+ /* Find a basereg (*1, but not indexreg), if there is one.
+ * Also, if an indexreg hasn't been assigned, try to find one.
+ * Meanwhile, check to make sure there's no negative register mults.
+ */
+ for (i=0; i<regcount; i++) {
+ if (reg3264mult[i] < 0) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("invalid effective address"));
+ return 1;
+ }
+ if (i != indexreg && reg3264mult[i] == 1 &&
+ basereg == REG3264_NONE)
+ basereg = i;
+ else if (indexreg == REG3264_NONE && reg3264mult[i] > 0)
+ indexreg = i;
+ }
+
+ if (x86_ea->vsib_mode != 0) {
+ /* For VSIB, the SIMD register needs to go into the indexreg.
+ * Also check basereg (must be a GPR if present) and indexreg
+ * (must be a SIMD register).
+ */
+ if (basereg >= SIMDREGS &&
+ (indexreg == REG3264_NONE || reg3264mult[indexreg] == 1)) {
+ int temp = basereg;
+ basereg = indexreg;
+ indexreg = temp;
+ }
+ if (basereg >= REG64_RIP || indexreg < SIMDREGS) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("invalid effective address"));
+ return 1;
+ }
+ } else if (indexreg != REG3264_NONE && basereg == REG3264_NONE)
+ /* Handle certain special cases of indexreg mults when basereg is
+ * empty.
+ */
+ switch (reg3264mult[indexreg]) {
+ case 1:
+ /* Only optimize this way if nosplit wasn't specified */
+ if (!x86_ea->ea.nosplit) {
+ basereg = indexreg;
+ indexreg = -1;
+ }
+ break;
+ case 2:
+ /* Only split if nosplit wasn't specified */
+ if (!x86_ea->ea.nosplit) {
+ basereg = indexreg;
+ reg3264mult[indexreg] = 1;
+ }
+ break;
+ case 3:
+ case 5:
+ case 9:
+ basereg = indexreg;
+ reg3264mult[indexreg]--;
+ break;
+ }
+
+ /* Make sure there's no other registers than the basereg and indexreg
+ * we just found.
+ */
+ for (i=0; i<regcount; i++)
+ if (i != basereg && i != indexreg && reg3264mult[i] != 0) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("invalid effective address"));
+ return 1;
+ }
+
+ /* Check the index multiplier value for validity if present. */
+ if (indexreg != REG3264_NONE && reg3264mult[indexreg] != 1 &&
+ reg3264mult[indexreg] != 2 && reg3264mult[indexreg] != 4 &&
+ reg3264mult[indexreg] != 8) {
+ yasm_error_set(YASM_ERROR_VALUE, N_("invalid effective address"));
+ return 1;
+ }
+
+ /* ESP is not a legal indexreg. */
+ if (indexreg == REG3264_ESP) {
+ /* If mult>1 or basereg is ESP also, there's no way to make it
+ * legal.
+ */
+ if (reg3264mult[REG3264_ESP] > 1 || basereg == REG3264_ESP) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("invalid effective address"));
+ return 1;
+ }
+ /* If mult==1 and basereg is not ESP, swap indexreg w/basereg. */
+ indexreg = basereg;
+ basereg = REG3264_ESP;
+ }
+
+ /* RIP is only legal if it's the ONLY register used. */
+ if (indexreg == REG64_RIP ||
+ (basereg == REG64_RIP && indexreg != REG3264_NONE)) {
+ yasm_error_set(YASM_ERROR_VALUE, N_("invalid effective address"));
+ return 1;
+ }
+
+ /* At this point, we know the base and index registers and that the
+ * memory expression is (essentially) valid. Now build the ModRM and
+ * (optional) SIB bytes.
+ */
+
+ /* If we're supposed to be RIP-relative and there's no register
+ * usage, change to RIP-relative.
+ */
+ if (basereg == REG3264_NONE && indexreg == REG3264_NONE &&
+ x86_ea->ea.pc_rel) {
+ basereg = REG64_RIP;
+ yasm_value_set_curpos_rel(&x86_ea->ea.disp, bc, 1);
+ }
+
+ /* First determine R/M (Mod is later determined from disp size) */
+ x86_ea->need_modrm = 1; /* we always need ModRM */
+ if (basereg == REG3264_NONE && indexreg == REG3264_NONE) {
+ /* Just a disp32: in 64-bit mode the RM encoding is used for RIP
+ * offset addressing, so we need to use the SIB form instead.
+ */
+ if (bits == 64) {
+ x86_ea->modrm |= 4;
+ x86_ea->need_sib = 1;
+ } else {
+ x86_ea->modrm |= 5;
+ x86_ea->sib = 0;
+ x86_ea->valid_sib = 0;
+ x86_ea->need_sib = 0;
+ }
+ } else if (basereg == REG64_RIP) {
+ x86_ea->modrm |= 5;
+ x86_ea->sib = 0;
+ x86_ea->valid_sib = 0;
+ x86_ea->need_sib = 0;
+ /* RIP always requires a 32-bit displacement */
+ x86_ea->valid_modrm = 1;
+ x86_ea->ea.disp.size = 32;
+ return 0;
+ } else if (indexreg == REG3264_NONE) {
+ /* basereg only */
+ /* Don't need to go to the full effort of determining what type
+ * of register basereg is, as x86_set_rex_from_reg doesn't pay
+ * much attention.
+ */
+ if (yasm_x86__set_rex_from_reg(rex, &low3,
+ (unsigned int)(X86_REG64 | basereg),
+ bits, X86_REX_B))
+ return 1;
+ x86_ea->modrm |= low3;
+ /* we don't need an SIB *unless* basereg is ESP or R12 */
+ if (basereg == REG3264_ESP || basereg == REG64_R12)
+ x86_ea->need_sib = 1;
+ else {
+ x86_ea->sib = 0;
+ x86_ea->valid_sib = 0;
+ x86_ea->need_sib = 0;
+ }
+ } else {
+ /* index or both base and index */
+ x86_ea->modrm |= 4;
+ x86_ea->need_sib = 1;
+ }
+
+ /* Determine SIB if needed */
+ if (x86_ea->need_sib == 1) {
+ x86_ea->sib = 0; /* start with 0 */
+
+ /* Special case: no basereg */
+ if (basereg == REG3264_NONE)
+ x86_ea->sib |= 5;
+ else {
+ if (yasm_x86__set_rex_from_reg(rex, &low3, (unsigned int)
+ (X86_REG64 | basereg), bits,
+ X86_REX_B))
+ return 1;
+ x86_ea->sib |= low3;
+ }
+
+ /* Put in indexreg, checking for none case */
+ if (indexreg == REG3264_NONE)
+ x86_ea->sib |= 040;
+ /* Any scale field is valid, just leave at 0. */
+ else {
+ if (indexreg >= SIMDREGS) {
+ if (yasm_x86__set_rex_from_reg(rex, &low3,
+ (unsigned int)(X86_XMMREG | (indexreg-SIMDREGS)),
+ bits, X86_REX_X))
+ return 1;
+ } else {
+ if (yasm_x86__set_rex_from_reg(rex, &low3,
+ (unsigned int)(X86_REG64 | indexreg),
+ bits, X86_REX_X))
+ return 1;
+ }
+ x86_ea->sib |= low3 << 3;
+ /* Set scale field, 1 case -> 0, so don't bother. */
+ switch (reg3264mult[indexreg]) {
+ case 2:
+ x86_ea->sib |= 0100;
+ break;
+ case 4:
+ x86_ea->sib |= 0200;
+ break;
+ case 8:
+ x86_ea->sib |= 0300;
+ break;
+ }
+ }
+
+ x86_ea->valid_sib = 1; /* Done with SIB */
+ }
+
+ /* Calculate displacement length (if possible) */
+ retval = x86_checkea_calc_displen
+ (x86_ea, 32, basereg == REG3264_NONE,
+ basereg == REG3264_EBP || basereg == REG64_R13);
+ return retval;
+ } else if (*addrsize == 16 && x86_ea->need_modrm && !x86_ea->valid_modrm) {
+ static const unsigned char modrm16[16] = {
+ 0006 /* disp16 */, 0007 /* [BX] */, 0004 /* [SI] */,
+ 0000 /* [BX+SI] */, 0005 /* [DI] */, 0001 /* [BX+DI] */,
+ 0377 /* invalid */, 0377 /* invalid */, 0006 /* [BP]+d */,
+ 0377 /* invalid */, 0002 /* [BP+SI] */, 0377 /* invalid */,
+ 0003 /* [BP+DI] */, 0377 /* invalid */, 0377 /* invalid */,
+ 0377 /* invalid */
+ };
+ x86_checkea_reg16_data reg16mult = {0, 0, 0, 0};
+ enum {
+ HAVE_NONE = 0,
+ HAVE_BX = 1<<0,
+ HAVE_SI = 1<<1,
+ HAVE_DI = 1<<2,
+ HAVE_BP = 1<<3
+ } havereg = HAVE_NONE;
+
+ /* 64-bit mode does not allow 16-bit addresses */
+ if (bits == 64 && !address16_op) {
+ yasm_error_set(YASM_ERROR_TYPE,
+ N_("16-bit addresses not supported in 64-bit mode"));
+ return 1;
+ }
+
+ /* 16-bit cannot have SIB */
+ x86_ea->sib = 0;
+ x86_ea->valid_sib = 0;
+ x86_ea->need_sib = 0;
+
+ if (x86_ea->ea.disp.abs) {
+ int pcrel = 0;
+ switch (x86_expr_checkea_getregusage
+ (&x86_ea->ea.disp.abs, (int *)NULL, &pcrel, bits,
+ &reg16mult, x86_expr_checkea_get_reg16)) {
+ case 1:
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("invalid effective address"));
+ return 1;
+ case 2:
+ if (pcrel)
+ yasm_value_set_curpos_rel(&x86_ea->ea.disp, bc, 1);
+ return 2;
+ default:
+ if (pcrel)
+ yasm_value_set_curpos_rel(&x86_ea->ea.disp, bc, 1);
+ break;
+ }
+ }
+
+ /* reg multipliers not 0 or 1 are illegal. */
+ if (reg16mult.bx & ~1 || reg16mult.si & ~1 || reg16mult.di & ~1 ||
+ reg16mult.bp & ~1) {
+ yasm_error_set(YASM_ERROR_VALUE, N_("invalid effective address"));
+ return 1;
+ }
+
+ /* Set havereg appropriately */
+ if (reg16mult.bx > 0)
+ havereg |= HAVE_BX;
+ if (reg16mult.si > 0)
+ havereg |= HAVE_SI;
+ if (reg16mult.di > 0)
+ havereg |= HAVE_DI;
+ if (reg16mult.bp > 0)
+ havereg |= HAVE_BP;
+
+ /* Check the modrm value for invalid combinations. */
+ if (modrm16[havereg] & 0070) {
+ yasm_error_set(YASM_ERROR_VALUE, N_("invalid effective address"));
+ return 1;
+ }
+
+ /* Set ModRM byte for registers */
+ x86_ea->modrm |= modrm16[havereg];
+
+ /* Calculate displacement length (if possible) */
+ retval = x86_checkea_calc_displen
+ (x86_ea, 16, havereg == HAVE_NONE, havereg == HAVE_BP);
+ return retval;
+ } else if (!x86_ea->need_modrm && !x86_ea->need_sib) {
+ /* Special case for MOV MemOffs opcode: displacement but no modrm. */
+ switch (*addrsize) {
+ case 64:
+ if (bits != 64) {
+ yasm_error_set(YASM_ERROR_TYPE,
+ N_("invalid effective address (64-bit in non-64-bit mode)"));
+ return 1;
+ }
+ x86_ea->ea.disp.size = 64;
+ break;
+ case 32:
+ x86_ea->ea.disp.size = 32;
+ break;
+ case 16:
+ /* 64-bit mode does not allow 16-bit addresses */
+ if (bits == 64 && !address16_op) {
+ yasm_error_set(YASM_ERROR_TYPE,
+ N_("16-bit addresses not supported in 64-bit mode"));
+ return 1;
+ }
+ x86_ea->ea.disp.size = 16;
+ break;
+ }
+ }
+ return 0;
+}
+
+int
+yasm_x86__floatnum_tobytes(yasm_arch *arch, const yasm_floatnum *flt,
+ unsigned char *buf, size_t destsize, size_t valsize,
+ size_t shift, int warn)
+{
+ if (!yasm_floatnum_check_size(flt, valsize)) {
+ yasm_error_set(YASM_ERROR_FLOATING_POINT,
+ N_("invalid floating point constant size"));
+ return 1;
+ }
+
+ yasm_floatnum_get_sized(flt, buf, destsize, valsize, shift, 0, warn);
+ return 0;
+}
diff --git a/contrib/tools/yasm/modules/arch/x86/x86id.c b/contrib/tools/yasm/modules/arch/x86/x86id.c
index c937b5d637..6207c2062c 100644
--- a/contrib/tools/yasm/modules/arch/x86/x86id.c
+++ b/contrib/tools/yasm/modules/arch/x86/x86id.c
@@ -1,1951 +1,1951 @@
-/*
- * x86 identifier recognition and instruction handling
- *
- * Copyright (C) 2002-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <ctype.h>
-#include <util.h>
-
-#include <libyasm.h>
-#include <libyasm/phash.h>
-
-#include "modules/arch/x86/x86arch.h"
-
-
-static const char *cpu_find_reverse(unsigned int cpu0, unsigned int cpu1,
- unsigned int cpu2);
-
-/* Opcode modifiers. */
-#define MOD_Gap 0 /* Eats a parameter / does nothing */
-#define MOD_PreAdd 1 /* Parameter adds to "special" prefix */
-#define MOD_Op0Add 2 /* Parameter adds to opcode byte 0 */
-#define MOD_Op1Add 3 /* Parameter adds to opcode byte 1 */
-#define MOD_Op2Add 4 /* Parameter adds to opcode byte 2 */
-#define MOD_SpAdd 5 /* Parameter adds to "spare" value */
-#define MOD_OpSizeR 6 /* Parameter replaces opersize */
-#define MOD_Imm8 7 /* Parameter is included as immediate byte */
-#define MOD_AdSizeR 8 /* Parameter replaces addrsize (jmp only) */
-#define MOD_DOpS64R 9 /* Parameter replaces default 64-bit opersize */
-#define MOD_Op1AddSp 10 /* Parameter is added as "spare" to opcode byte 2 */
-#define MOD_SetVEX 11 /* Parameter replaces internal VEX prefix value */
-
-/* GAS suffix flags for instructions */
-enum x86_gas_suffix_flags {
- SUF_Z = 1<<0, /* no suffix */
- SUF_B = 1<<1,
- SUF_W = 1<<2,
- SUF_L = 1<<3,
- SUF_Q = 1<<4,
- SUF_S = 1<<5,
- SUF_MASK = SUF_Z|SUF_B|SUF_W|SUF_L|SUF_Q|SUF_S,
-
- /* Flags only used in x86_insn_info */
- GAS_ONLY = 1<<6, /* Only available in GAS mode */
- GAS_ILLEGAL = 1<<7, /* Illegal in GAS mode */
- GAS_NO_REV = 1<<8 /* Don't reverse operands in GAS mode */
-};
-
-/* Miscellaneous flag tests for instructions */
-enum x86_misc_flags {
- /* These are tested against BITS==64. */
- ONLY_64 = 1<<0, /* Only available in 64-bit mode */
- NOT_64 = 1<<1, /* Not available (invalid) in 64-bit mode */
- /* These are tested against whether the base instruction is an AVX one. */
- ONLY_AVX = 1<<2, /* Only available in AVX instruction */
- NOT_AVX = 1<<3 /* Not available (invalid) in AVX instruction */
-};
-
-enum x86_operand_type {
- OPT_Imm = 0, /* immediate */
- OPT_Reg = 1, /* any general purpose or FPU register */
- OPT_Mem = 2, /* memory */
- OPT_RM = 3, /* any general purpose or FPU register OR memory */
- OPT_SIMDReg = 4, /* any MMX or XMM register */
- OPT_SIMDRM = 5, /* any MMX or XMM register OR memory */
- OPT_SegReg = 6, /* any segment register */
- OPT_CRReg = 7, /* any CR register */
- OPT_DRReg = 8, /* any DR register */
- OPT_TRReg = 9, /* any TR register */
- OPT_ST0 = 10, /* ST0 */
- OPT_Areg = 11, /* AL/AX/EAX/RAX (depending on size) */
- OPT_Creg = 12, /* CL/CX/ECX/RCX (depending on size) */
- OPT_Dreg = 13, /* DL/DX/EDX/RDX (depending on size) */
- OPT_CS = 14, /* CS */
- OPT_DS = 15, /* DS */
- OPT_ES = 16, /* ES */
- OPT_FS = 17, /* FS */
- OPT_GS = 18, /* GS */
- OPT_SS = 19, /* SS */
- OPT_CR4 = 20, /* CR4 */
- /* memory offset (an EA, but with no registers allowed)
- * [special case for MOV opcode]
- */
- OPT_MemOffs = 21,
- OPT_Imm1 = 22, /* immediate, value=1 (for special-case shift) */
- /* immediate, does not contain SEG:OFF (for jmp/call) */
- OPT_ImmNotSegOff = 23,
- OPT_XMM0 = 24, /* XMM0 */
- /* AX/EAX/RAX memory operand only (EA) [special case for SVM opcodes]
- */
- OPT_MemrAX = 25,
- /* EAX memory operand only (EA) [special case for SVM skinit opcode] */
- OPT_MemEAX = 26,
- /* XMM VSIB memory operand */
- OPT_MemXMMIndex = 27,
- /* YMM VSIB memory operand */
- OPT_MemYMMIndex = 28
-};
-
-enum x86_operand_size {
- /* any size acceptable/no size spec acceptable (dep. on strict) */
- OPS_Any = 0,
- /* 8/16/32/64/80/128/256 bits (from user or reg size) */
- OPS_8 = 1,
- OPS_16 = 2,
- OPS_32 = 3,
- OPS_64 = 4,
- OPS_80 = 5,
- OPS_128 = 6,
- OPS_256 = 7,
- /* current BITS setting; when this is used the size matched
- * gets stored into the opersize as well.
- */
- OPS_BITS = 8
-};
-
-enum x86_operand_targetmod {
- OPTM_None = 0, /* no target mod acceptable */
- OPTM_Near = 1, /* NEAR */
- OPTM_Short = 2, /* SHORT */
- OPTM_Far = 3, /* FAR (or SEG:OFF immediate) */
- OPTM_To = 4 /* TO */
-};
-
-enum x86_operand_action {
- OPA_None = 0, /* does nothing (operand data is discarded) */
- OPA_EA = 1, /* operand data goes into ea field */
- OPA_Imm = 2, /* operand data goes into imm field */
- OPA_SImm = 3, /* operand data goes into sign-extended imm field */
- OPA_Spare = 4, /* operand data goes into "spare" field */
- OPA_Op0Add = 5, /* operand data is added to opcode byte 0 */
- OPA_Op1Add = 6, /* operand data is added to opcode byte 1 */
- /* operand data goes into BOTH ea and spare
- * (special case for imul opcode)
- */
- OPA_SpareEA = 7,
- /* relative jump (outputs a jmp instead of normal insn) */
- OPA_JmpRel = 8,
- /* operand size goes into address size (jmp only) */
- OPA_AdSizeR = 9,
- /* far jump (outputs a farjmp instead of normal insn) */
- OPA_JmpFar = 10,
- /* ea operand only sets address size (no actual ea field) */
- OPA_AdSizeEA = 11,
- OPA_VEX = 12, /* operand data goes into VEX/XOP "vvvv" field */
- /* operand data goes into BOTH VEX/XOP "vvvv" field and ea field */
- OPA_EAVEX = 13,
- /* operand data goes into BOTH VEX/XOP "vvvv" field and spare field */
- OPA_SpareVEX = 14,
- /* operand data goes into upper 4 bits of immediate byte (VEX is4 field) */
- OPA_VEXImmSrc = 15,
- /* operand data goes into bottom 4 bits of immediate byte
- * (currently only VEX imz2 field)
- */
- OPA_VEXImm = 16
-};
-
-enum x86_operand_post_action {
- OPAP_None = 0,
- /* sign-extended imm8 that could expand to a large imm16/32 */
- OPAP_SImm8 = 1,
- /* could become a short opcode mov with bits=64 and a32 prefix */
- OPAP_ShortMov = 2,
- /* forced 16-bit address size (override ignored, no prefix) */
- OPAP_A16 = 3,
- /* large imm64 that can become a sign-extended imm32 */
- OPAP_SImm32Avail = 4
-};
-
-typedef struct x86_info_operand {
- /* Operand types. These are more detailed than the "general" types for all
- * architectures, as they include the size, for instance.
- */
-
- /* general type (must be exact match, except for RM types): */
- unsigned int type:5;
-
- /* size (user-specified, or from register size) */
- unsigned int size:4;
-
- /* size implicit or explicit ("strictness" of size matching on
- * non-registers -- registers are always strictly matched):
- * 0 = user size must exactly match size above.
- * 1 = user size either unspecified or exactly match size above.
- */
- unsigned int relaxed:1;
-
- /* effective address size
- * 0 = any address size allowed except for 64-bit
- * 1 = only 64-bit address size allowed
- */
- unsigned int eas64:1;
-
- /* target modification */
- unsigned int targetmod:3;
-
- /* Actions: what to do with the operand if the instruction matches.
- * Essentially describes what part of the output bytecode gets the
- * operand. This may require conversion (e.g. a register going into
- * an ea field). Naturally, only one of each of these may be contained
- * in the operands of a single insn_info structure.
- */
- unsigned int action:5;
-
- /* Postponed actions: actions which can't be completed at
- * parse-time due to possibly dependent expressions. For these, some
- * additional data (stored in the second byte of the opcode with a
- * one-byte opcode) is passed to later stages of the assembler with
- * flags set to indicate postponed actions.
- */
- unsigned int post_action:3;
-} x86_info_operand;
-
-typedef struct x86_insn_info {
- /* GAS suffix flags */
- unsigned int gas_flags:9; /* Enabled for these GAS suffixes */
-
- /* Tests against BITS==64, AVX, and XOP */
- unsigned int misc_flags:5;
-
- /* The CPU feature flags needed to execute this instruction. This is OR'ed
- * with arch-specific data[2]. This combined value is compared with
- * cpu_enabled to see if all bits set here are set in cpu_enabled--if so,
- * the instruction is available on this CPU.
- */
- unsigned int cpu0:6;
- unsigned int cpu1:6;
- unsigned int cpu2:6;
-
- /* Opcode modifiers for variations of instruction. As each modifier reads
- * its parameter in LSB->MSB order from the arch-specific data[1] from the
- * lexer data, and the LSB of the arch-specific data[1] is reserved for the
- * count of insn_info structures in the instruction grouping, there can
- * only be a maximum of 3 modifiers.
- */
- unsigned char modifiers[3];
-
- /* Operand Size */
- unsigned char opersize;
-
- /* Default operand size in 64-bit mode (0 = 32-bit for readability). */
- unsigned char def_opersize_64;
-
- /* A special instruction prefix, used for some of the Intel SSE and SSE2
- * instructions. Intel calls these 3-byte opcodes, but in AMD64's 64-bit
- * mode, they're treated like normal prefixes (e.g. the REX prefix needs
- * to be *after* the F2/F3/66 "prefix").
- * (0=no special prefix)
- * 0xC0 - 0xCF indicate a VEX prefix, with the four LSBs holding "WLpp":
- * W: VEX.W field (meaning depends on opcode)
- * L: 0=128-bit, 1=256-bit
- * pp: SIMD prefix designation:
- * 00: None
- * 01: 66
- * 10: F3
- * 11: F2
- * 0x80 - 0x8F indicate a XOP prefix, with the four LSBs holding "WLpp":
- * same meanings as VEX prefix.
- */
- unsigned char special_prefix;
-
- /* The length of the basic opcode */
- unsigned char opcode_len;
-
- /* The basic 1-3 byte opcode (not including the special instruction
- * prefix).
- */
- unsigned char opcode[3];
-
- /* The 3-bit "spare" value (extended opcode) for the R/M byte field */
- unsigned char spare;
-
- /* The number of operands this form of the instruction takes */
- unsigned int num_operands:4;
-
- /* The index into the insn_operands array which contains the type of each
- * operand, see above
- */
- unsigned int operands_index:12;
-} x86_insn_info;
-
-typedef struct x86_id_insn {
- yasm_insn insn; /* base structure */
-
- /* instruction parse group - NULL if empty instruction (just prefixes) */
- /*@null@*/ const x86_insn_info *group;
-
- /* CPU feature flags enabled at the time of parsing the instruction */
- wordptr cpu_enabled;
-
- /* Modifier data */
- unsigned char mod_data[3];
-
- /* Number of elements in the instruction parse group */
- unsigned int num_info:8;
-
- /* BITS setting active at the time of parsing the instruction */
- unsigned int mode_bits:8;
-
- /* Suffix flags */
- unsigned int suffix:9;
-
- /* Tests against BITS==64 and AVX */
- unsigned int misc_flags:5;
-
- /* Parser enabled at the time of parsing the instruction */
- unsigned int parser:2;
-
- /* Strict forced setting at the time of parsing the instruction */
- unsigned int force_strict:1;
-
- /* Default rel setting at the time of parsing the instruction */
- unsigned int default_rel:1;
-} x86_id_insn;
-
-static void x86_id_insn_destroy(void *contents);
-static void x86_id_insn_print(const void *contents, FILE *f, int indent_level);
-static void x86_id_insn_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc);
-
-static const yasm_bytecode_callback x86_id_insn_callback = {
- x86_id_insn_destroy,
- x86_id_insn_print,
- x86_id_insn_finalize,
- NULL,
- yasm_bc_calc_len_common,
- yasm_bc_expand_common,
- yasm_bc_tobytes_common,
- YASM_BC_SPECIAL_INSN
-};
-
-#include "x86insns.c"
-
-/* Looks for the first SIMD register match for the purposes of VSIB matching.
- * Full legality checking is performed in EA code.
- */
-static int
-x86_expr_contains_simd_cb(const yasm_expr__item *ei, void *d)
-{
- int ymm = *((int *)d);
- if (ei->type != YASM_EXPR_REG)
- return 0;
- switch ((x86_expritem_reg_size)(ei->data.reg & ~0xFUL)) {
- case X86_XMMREG:
- if (!ymm)
- return 1;
- break;
- case X86_YMMREG:
- if (ymm)
- return 1;
- break;
- default:
- break;
- }
- return 0;
-}
-
-static int
-x86_expr_contains_simd(const yasm_expr *e, int ymm)
-{
- return yasm_expr__traverse_leaves_in_const(e, &ymm,
- x86_expr_contains_simd_cb);
-}
-
-static void
-x86_finalize_common(x86_common *common, const x86_insn_info *info,
- unsigned int mode_bits)
-{
- common->addrsize = 0;
- common->opersize = info->opersize;
- common->lockrep_pre = 0;
- common->acqrel_pre = 0;
- common->mode_bits = (unsigned char)mode_bits;
-}
-
-static void
-x86_finalize_opcode(x86_opcode *opcode, const x86_insn_info *info)
-{
- opcode->len = info->opcode_len;
- opcode->opcode[0] = info->opcode[0];
- opcode->opcode[1] = info->opcode[1];
- opcode->opcode[2] = info->opcode[2];
-}
-
-/* Clear operands so they don't get destroyed after we've copied references. */
-static void
-x86_id_insn_clear_operands(x86_id_insn *id_insn)
-{
- yasm_insn_operand *op = yasm_insn_ops_first(&id_insn->insn);
- while (op) {
- op->type = YASM_INSN__OPERAND_REG;
- op = yasm_insn_op_next(op);
- }
-}
-
-static void
-x86_finalize_jmpfar(yasm_bytecode *bc, yasm_bytecode *prev_bc,
- const x86_insn_info *info)
-{
- x86_id_insn *id_insn = (x86_id_insn *)bc->contents;
- unsigned char *mod_data = id_insn->mod_data;
- unsigned int mode_bits = id_insn->mode_bits;
- x86_jmpfar *jmpfar;
- yasm_insn_operand *op;
- unsigned int i;
-
- jmpfar = yasm_xmalloc(sizeof(x86_jmpfar));
- x86_finalize_common(&jmpfar->common, info, mode_bits);
- x86_finalize_opcode(&jmpfar->opcode, info);
-
- op = yasm_insn_ops_first(&id_insn->insn);
-
- if (op->type == YASM_INSN__OPERAND_IMM && op->seg) {
- /* SEG:OFF */
- if (yasm_value_finalize_expr(&jmpfar->segment, op->seg, prev_bc, 16))
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("jump target segment too complex"));
- if (yasm_value_finalize_expr(&jmpfar->offset, op->data.val, prev_bc,
- 0))
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("jump target offset too complex"));
- } else if (op->targetmod == X86_FAR) {
- /* "FAR imm" target needs to become "seg imm:imm". */
- yasm_expr *e = yasm_expr_create_branch(YASM_EXPR_SEG,
- yasm_expr_copy(op->data.val),
- op->data.val->line);
- if (yasm_value_finalize_expr(&jmpfar->offset, op->data.val, prev_bc, 0)
- || yasm_value_finalize_expr(&jmpfar->segment, e, prev_bc, 16))
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("jump target expression too complex"));
- } else if (yasm_insn_op_next(op)) {
- /* Two operand form (gas) */
- yasm_insn_operand *op2 = yasm_insn_op_next(op);
- if (yasm_value_finalize_expr(&jmpfar->segment, op->data.val, prev_bc,
- 16))
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("jump target segment too complex"));
- if (yasm_value_finalize_expr(&jmpfar->offset, op2->data.val, prev_bc,
- 0))
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("jump target offset too complex"));
- if (op2->size == OPS_BITS)
- jmpfar->common.opersize = (unsigned char)mode_bits;
- } else
- yasm_internal_error(N_("didn't get FAR expression in jmpfar"));
-
- /* Apply modifiers */
- for (i=0; i<NELEMS(info->modifiers); i++) {
- switch (info->modifiers[i]) {
- case MOD_Gap:
- break;
- case MOD_Op0Add:
- jmpfar->opcode.opcode[0] += mod_data[i];
- break;
- case MOD_Op1Add:
- jmpfar->opcode.opcode[1] += mod_data[i];
- break;
- case MOD_Op2Add:
- jmpfar->opcode.opcode[2] += mod_data[i];
- break;
- case MOD_Op1AddSp:
- jmpfar->opcode.opcode[1] += mod_data[i]<<3;
- break;
- default:
- break;
- }
- }
-
- yasm_x86__bc_apply_prefixes((x86_common *)jmpfar, NULL,
- info->def_opersize_64,
- id_insn->insn.num_prefixes,
- id_insn->insn.prefixes);
-
- x86_id_insn_clear_operands(id_insn);
-
- /* Transform the bytecode */
- yasm_x86__bc_transform_jmpfar(bc, jmpfar);
-}
-
-static void
-x86_finalize_jmp(yasm_bytecode *bc, yasm_bytecode *prev_bc,
- const x86_insn_info *jinfo)
-{
- x86_id_insn *id_insn = (x86_id_insn *)bc->contents;
- x86_jmp *jmp;
- int num_info = id_insn->num_info;
- const x86_insn_info *info = id_insn->group;
- unsigned char *mod_data = id_insn->mod_data;
- unsigned int mode_bits = id_insn->mode_bits;
- /*unsigned char suffix = id_insn->suffix;*/
- yasm_insn_operand *op;
- static const unsigned char size_lookup[] =
- {0, 8, 16, 32, 64, 80, 128, 0, 0}; /* 256 not needed */
- unsigned int i;
-
- /* We know the target is in operand 0, but sanity check for Imm. */
- op = yasm_insn_ops_first(&id_insn->insn);
- if (op->type != YASM_INSN__OPERAND_IMM)
- yasm_internal_error(N_("invalid operand conversion"));
-
- jmp = yasm_xmalloc(sizeof(x86_jmp));
- x86_finalize_common(&jmp->common, jinfo, mode_bits);
- if (yasm_value_finalize_expr(&jmp->target, op->data.val, prev_bc, 0))
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("jump target expression too complex"));
- if (jmp->target.seg_of || jmp->target.rshift || jmp->target.curpos_rel)
- yasm_error_set(YASM_ERROR_VALUE, N_("invalid jump target"));
- yasm_value_set_curpos_rel(&jmp->target, bc, 0);
- jmp->target.jump_target = 1;
-
- /* See if the user explicitly specified short/near/far. */
- switch (insn_operands[jinfo->operands_index+0].targetmod) {
- case OPTM_Short:
- jmp->op_sel = JMP_SHORT_FORCED;
- break;
- case OPTM_Near:
- jmp->op_sel = JMP_NEAR_FORCED;
- break;
- default:
- jmp->op_sel = JMP_NONE;
- }
-
- /* Check for address size setting in second operand, if present */
- if (jinfo->num_operands > 1 &&
- insn_operands[jinfo->operands_index+1].action == OPA_AdSizeR)
- jmp->common.addrsize = (unsigned char)
- size_lookup[insn_operands[jinfo->operands_index+1].size];
-
- /* Check for address size override */
- for (i=0; i<NELEMS(jinfo->modifiers); i++) {
- if (jinfo->modifiers[i] == MOD_AdSizeR)
- jmp->common.addrsize = mod_data[i];
- }
-
- /* Scan through other infos for this insn looking for short/near versions.
- * Needs to match opersize and number of operands, also be within CPU.
- */
- jmp->shortop.len = 0;
- jmp->nearop.len = 0;
- for (; num_info>0 && (jmp->shortop.len == 0 || jmp->nearop.len == 0);
- num_info--, info++) {
- /* Match CPU */
- if (mode_bits != 64 && (info->misc_flags & ONLY_64))
- continue;
- if (mode_bits == 64 && (info->misc_flags & NOT_64))
- continue;
-
- if (!BitVector_bit_test(id_insn->cpu_enabled, info->cpu0) ||
- !BitVector_bit_test(id_insn->cpu_enabled, info->cpu1) ||
- !BitVector_bit_test(id_insn->cpu_enabled, info->cpu2))
- continue;
-
- if (info->num_operands == 0)
- continue;
-
- if (insn_operands[info->operands_index+0].action != OPA_JmpRel)
- continue;
-
- if (info->opersize != jmp->common.opersize)
- continue;
-
- switch (insn_operands[info->operands_index+0].targetmod) {
- case OPTM_Short:
- x86_finalize_opcode(&jmp->shortop, info);
- for (i=0; i<NELEMS(info->modifiers); i++) {
- if (info->modifiers[i] == MOD_Op0Add)
- jmp->shortop.opcode[0] += mod_data[i];
- }
- break;
- case OPTM_Near:
- x86_finalize_opcode(&jmp->nearop, info);
- for (i=0; i<NELEMS(info->modifiers); i++) {
- if (info->modifiers[i] == MOD_Op1Add)
- jmp->nearop.opcode[1] += mod_data[i];
- }
- break;
- }
- }
-
- if ((jmp->op_sel == JMP_SHORT_FORCED) && (jmp->shortop.len == 0))
- yasm_error_set(YASM_ERROR_TYPE,
- N_("no SHORT form of that jump instruction exists"));
- if ((jmp->op_sel == JMP_NEAR_FORCED) && (jmp->nearop.len == 0))
- yasm_error_set(YASM_ERROR_TYPE,
- N_("no NEAR form of that jump instruction exists"));
-
- if (jmp->op_sel == JMP_NONE) {
- if (jmp->nearop.len == 0)
- jmp->op_sel = JMP_SHORT_FORCED;
- if (jmp->shortop.len == 0)
- jmp->op_sel = JMP_NEAR_FORCED;
- }
-
- yasm_x86__bc_apply_prefixes((x86_common *)jmp, NULL,
- jinfo->def_opersize_64,
- id_insn->insn.num_prefixes,
- id_insn->insn.prefixes);
-
- x86_id_insn_clear_operands(id_insn);
-
- /* Transform the bytecode */
- yasm_x86__bc_transform_jmp(bc, jmp);
-}
-
-static const x86_insn_info *
-x86_find_match(x86_id_insn *id_insn, yasm_insn_operand **ops,
- yasm_insn_operand **rev_ops, const unsigned int *size_lookup,
- int bypass)
-{
- const x86_insn_info *info = id_insn->group;
- unsigned int num_info = id_insn->num_info;
- unsigned int suffix = id_insn->suffix;
- unsigned int mode_bits = id_insn->mode_bits;
- int found = 0;
-
- /* Just do a simple linear search through the info array for a match.
- * First match wins.
- */
- for (; num_info>0 && !found; num_info--, info++) {
- yasm_insn_operand *op, **use_ops;
- const x86_info_operand *info_ops =
- &insn_operands[info->operands_index];
- unsigned int gas_flags = info->gas_flags;
- unsigned int misc_flags = info->misc_flags;
- unsigned int size;
- int mismatch = 0;
- unsigned int i;
-
- /* Match CPU */
- if (mode_bits != 64 && (misc_flags & ONLY_64))
- continue;
- if (mode_bits == 64 && (misc_flags & NOT_64))
- continue;
-
- if (bypass != 8 &&
- (!BitVector_bit_test(id_insn->cpu_enabled, info->cpu0) ||
- !BitVector_bit_test(id_insn->cpu_enabled, info->cpu1) ||
- !BitVector_bit_test(id_insn->cpu_enabled, info->cpu2)))
- continue;
-
- /* Match # of operands */
- if (id_insn->insn.num_operands != info->num_operands)
- continue;
-
- /* Match AVX */
- if (!(id_insn->misc_flags & ONLY_AVX) && (misc_flags & ONLY_AVX))
- continue;
- if ((id_insn->misc_flags & ONLY_AVX) && (misc_flags & NOT_AVX))
- continue;
-
- /* Match parser mode */
- if ((gas_flags & GAS_ONLY) && id_insn->parser != X86_PARSER_GAS)
- continue;
- if ((gas_flags & GAS_ILLEGAL) && id_insn->parser == X86_PARSER_GAS)
- continue;
-
- /* Match suffix (if required) */
- if (id_insn->parser == X86_PARSER_GAS
- && ((suffix & SUF_MASK) & (gas_flags & SUF_MASK)) == 0)
- continue;
-
- /* Use reversed operands in GAS mode if not otherwise specified */
- use_ops = ops;
- if (id_insn->parser == X86_PARSER_GAS && !(gas_flags & GAS_NO_REV))
- use_ops = rev_ops;
-
- if (id_insn->insn.num_operands == 0) {
- found = 1; /* no operands -> must have a match here. */
- break;
- }
-
- /* Match each operand type and size */
- for (i = 0, op = use_ops[0]; op && i<info->num_operands && !mismatch;
- op = use_ops[++i]) {
- /* Check operand type */
- switch (info_ops[i].type) {
- case OPT_Imm:
- if (op->type != YASM_INSN__OPERAND_IMM)
- mismatch = 1;
- break;
- case OPT_RM:
- if (op->type == YASM_INSN__OPERAND_MEMORY)
- break;
- /*@fallthrough@*/
- case OPT_Reg:
- if (op->type != YASM_INSN__OPERAND_REG)
- mismatch = 1;
- else {
- switch ((x86_expritem_reg_size)(op->data.reg&~0xFUL)) {
- case X86_REG8:
- case X86_REG8X:
- case X86_REG16:
- case X86_REG32:
- case X86_REG64:
- case X86_FPUREG:
- break;
- default:
- mismatch = 1;
- break;
- }
- }
- break;
- case OPT_Mem:
- if (op->type != YASM_INSN__OPERAND_MEMORY)
- mismatch = 1;
- break;
- case OPT_SIMDRM:
- if (op->type == YASM_INSN__OPERAND_MEMORY)
- break;
- /*@fallthrough@*/
- case OPT_SIMDReg:
- if (op->type != YASM_INSN__OPERAND_REG)
- mismatch = 1;
- else {
- switch ((x86_expritem_reg_size)(op->data.reg&~0xFUL)) {
- case X86_MMXREG:
- case X86_XMMREG:
- case X86_YMMREG:
- break;
- default:
- mismatch = 1;
- break;
- }
- }
- break;
- case OPT_SegReg:
- if (op->type != YASM_INSN__OPERAND_SEGREG)
- mismatch = 1;
- break;
- case OPT_CRReg:
- if (op->type != YASM_INSN__OPERAND_REG ||
- (op->data.reg & ~0xFUL) != X86_CRREG)
- mismatch = 1;
- break;
- case OPT_DRReg:
- if (op->type != YASM_INSN__OPERAND_REG ||
- (op->data.reg & ~0xFUL) != X86_DRREG)
- mismatch = 1;
- break;
- case OPT_TRReg:
- if (op->type != YASM_INSN__OPERAND_REG ||
- (op->data.reg & ~0xFUL) != X86_TRREG)
- mismatch = 1;
- break;
- case OPT_ST0:
- if (op->type != YASM_INSN__OPERAND_REG ||
- op->data.reg != X86_FPUREG)
- mismatch = 1;
- break;
- case OPT_Areg:
- if (op->type != YASM_INSN__OPERAND_REG ||
- (info_ops[i].size == OPS_8 &&
- op->data.reg != (X86_REG8 | 0) &&
- op->data.reg != (X86_REG8X | 0)) ||
- (info_ops[i].size == OPS_16 &&
- op->data.reg != (X86_REG16 | 0)) ||
- (info_ops[i].size == OPS_32 &&
- op->data.reg != (X86_REG32 | 0)) ||
- (info_ops[i].size == OPS_64 &&
- op->data.reg != (X86_REG64 | 0)))
- mismatch = 1;
- break;
- case OPT_Creg:
- if (op->type != YASM_INSN__OPERAND_REG ||
- (info_ops[i].size == OPS_8 &&
- op->data.reg != (X86_REG8 | 1) &&
- op->data.reg != (X86_REG8X | 1)) ||
- (info_ops[i].size == OPS_16 &&
- op->data.reg != (X86_REG16 | 1)) ||
- (info_ops[i].size == OPS_32 &&
- op->data.reg != (X86_REG32 | 1)) ||
- (info_ops[i].size == OPS_64 &&
- op->data.reg != (X86_REG64 | 1)))
- mismatch = 1;
- break;
- case OPT_Dreg:
- if (op->type != YASM_INSN__OPERAND_REG ||
- (info_ops[i].size == OPS_8 &&
- op->data.reg != (X86_REG8 | 2) &&
- op->data.reg != (X86_REG8X | 2)) ||
- (info_ops[i].size == OPS_16 &&
- op->data.reg != (X86_REG16 | 2)) ||
- (info_ops[i].size == OPS_32 &&
- op->data.reg != (X86_REG32 | 2)) ||
- (info_ops[i].size == OPS_64 &&
- op->data.reg != (X86_REG64 | 2)))
- mismatch = 1;
- break;
- case OPT_CS:
- if (op->type != YASM_INSN__OPERAND_SEGREG ||
- (op->data.reg & 0xF) != 1)
- mismatch = 1;
- break;
- case OPT_DS:
- if (op->type != YASM_INSN__OPERAND_SEGREG ||
- (op->data.reg & 0xF) != 3)
- mismatch = 1;
- break;
- case OPT_ES:
- if (op->type != YASM_INSN__OPERAND_SEGREG ||
- (op->data.reg & 0xF) != 0)
- mismatch = 1;
- break;
- case OPT_FS:
- if (op->type != YASM_INSN__OPERAND_SEGREG ||
- (op->data.reg & 0xF) != 4)
- mismatch = 1;
- break;
- case OPT_GS:
- if (op->type != YASM_INSN__OPERAND_SEGREG ||
- (op->data.reg & 0xF) != 5)
- mismatch = 1;
- break;
- case OPT_SS:
- if (op->type != YASM_INSN__OPERAND_SEGREG ||
- (op->data.reg & 0xF) != 2)
- mismatch = 1;
- break;
- case OPT_CR4:
- if (op->type != YASM_INSN__OPERAND_REG ||
- op->data.reg != (X86_CRREG | 4))
- mismatch = 1;
- break;
- case OPT_MemOffs:
- if (op->type != YASM_INSN__OPERAND_MEMORY ||
- yasm_expr__contains(op->data.ea->disp.abs,
- YASM_EXPR_REG) ||
- op->data.ea->pc_rel ||
- (!op->data.ea->not_pc_rel && id_insn->default_rel &&
- op->data.ea->disp.size != 64))
- mismatch = 1;
- break;
- case OPT_Imm1:
- if (op->type == YASM_INSN__OPERAND_IMM) {
- const yasm_intnum *num;
- num = yasm_expr_get_intnum(&op->data.val, 0);
- if (!num || !yasm_intnum_is_pos1(num))
- mismatch = 1;
- } else
- mismatch = 1;
- break;
- case OPT_ImmNotSegOff:
- if (op->type != YASM_INSN__OPERAND_IMM ||
- op->targetmod != 0 || op->seg)
- mismatch = 1;
- break;
- case OPT_XMM0:
- if (op->type != YASM_INSN__OPERAND_REG ||
- op->data.reg != X86_XMMREG)
- mismatch = 1;
- break;
- case OPT_MemrAX: {
- const uintptr_t *regp;
- if (op->type != YASM_INSN__OPERAND_MEMORY ||
- !(regp = yasm_expr_get_reg(&op->data.ea->disp.abs, 0)) ||
- (*regp != (X86_REG16 | 0) &&
- *regp != (X86_REG32 | 0) &&
- *regp != (X86_REG64 | 0)))
- mismatch = 1;
- break;
- }
- case OPT_MemEAX: {
- const uintptr_t *regp;
- if (op->type != YASM_INSN__OPERAND_MEMORY ||
- !(regp = yasm_expr_get_reg(&op->data.ea->disp.abs, 0)) ||
- *regp != (X86_REG32 | 0))
- mismatch = 1;
- break;
- }
- case OPT_MemXMMIndex:
- if (op->type != YASM_INSN__OPERAND_MEMORY ||
- !x86_expr_contains_simd(op->data.ea->disp.abs, 0))
- mismatch = 1;
- break;
- case OPT_MemYMMIndex:
- if (op->type != YASM_INSN__OPERAND_MEMORY ||
- !x86_expr_contains_simd(op->data.ea->disp.abs, 1))
- mismatch = 1;
- break;
- default:
- yasm_internal_error(N_("invalid operand type"));
- }
-
- if (mismatch)
- break;
-
- /* Check operand size */
- size = size_lookup[info_ops[i].size];
- if (id_insn->parser == X86_PARSER_GAS) {
- /* Require relaxed operands for GAS mode (don't allow
- * per-operand sizing).
- */
- if (op->type == YASM_INSN__OPERAND_REG && op->size == 0) {
- /* Register size must exactly match */
- if (yasm_x86__get_reg_size(op->data.reg) != size)
- mismatch = 1;
- } else if ((info_ops[i].type == OPT_Imm
- || info_ops[i].type == OPT_ImmNotSegOff
- || info_ops[i].type == OPT_Imm1)
- && !info_ops[i].relaxed
- && info_ops[i].action != OPA_JmpRel)
- mismatch = 1;
- } else {
- if (op->type == YASM_INSN__OPERAND_REG && op->size == 0) {
- /* Register size must exactly match */
- if ((bypass == 4 && i == 0) || (bypass == 5 && i == 1)
- || (bypass == 6 && i == 2))
- ;
- else if (yasm_x86__get_reg_size(op->data.reg) != size)
- mismatch = 1;
- } else {
- if ((bypass == 1 && i == 0) || (bypass == 2 && i == 1)
- || (bypass == 3 && i == 2))
- ;
- else if (info_ops[i].relaxed) {
- /* Relaxed checking */
- if (size != 0 && op->size != size && op->size != 0)
- mismatch = 1;
- } else {
- /* Strict checking */
- if (op->size != size)
- mismatch = 1;
- }
- }
- }
-
- if (mismatch)
- break;
-
- /* Check for 64-bit effective address size in NASM mode */
- if (id_insn->parser != X86_PARSER_GAS &&
- op->type == YASM_INSN__OPERAND_MEMORY) {
- if (info_ops[i].eas64) {
- if (op->data.ea->disp.size != 64)
- mismatch = 1;
- } else if (op->data.ea->disp.size == 64)
- mismatch = 1;
- }
-
- if (mismatch)
- break;
-
- /* Check target modifier */
- switch (info_ops[i].targetmod) {
- case OPTM_None:
- if (op->targetmod != 0)
- mismatch = 1;
- break;
- case OPTM_Near:
- if (op->targetmod != X86_NEAR)
- mismatch = 1;
- break;
- case OPTM_Short:
- if (op->targetmod != X86_SHORT)
- mismatch = 1;
- break;
- case OPTM_Far:
- if (op->targetmod != X86_FAR)
- mismatch = 1;
- break;
- case OPTM_To:
- if (op->targetmod != X86_TO)
- mismatch = 1;
- break;
- default:
- yasm_internal_error(N_("invalid target modifier type"));
- }
- }
-
- if (!mismatch) {
- found = 1;
- break;
- }
- }
-
- if (!found)
- return NULL;
- return info;
-}
-
-static void
-x86_match_error(x86_id_insn *id_insn, yasm_insn_operand **ops,
- yasm_insn_operand **rev_ops, const unsigned int *size_lookup)
-{
- const x86_insn_info *i;
- int ni;
- int found;
- int bypass;
-
- /* Check for matching # of operands */
- found = 0;
- for (ni=id_insn->num_info, i=id_insn->group; ni>0; ni--, i++) {
- if (id_insn->insn.num_operands == i->num_operands) {
- found = 1;
- break;
- }
- }
- if (!found) {
- yasm_error_set(YASM_ERROR_TYPE, N_("invalid number of operands"));
- return;
- }
-
- for (bypass=1; bypass<9; bypass++) {
- i = x86_find_match(id_insn, ops, rev_ops, size_lookup, bypass);
- if (i)
- break;
- }
-
- switch (bypass) {
- case 1:
- case 4:
- yasm_error_set(YASM_ERROR_TYPE,
- N_("invalid size for operand %d"), 1);
- break;
- case 2:
- case 5:
- yasm_error_set(YASM_ERROR_TYPE,
- N_("invalid size for operand %d"), 2);
- break;
- case 3:
- case 6:
- yasm_error_set(YASM_ERROR_TYPE,
- N_("invalid size for operand %d"), 3);
- break;
- case 7:
- yasm_error_set(YASM_ERROR_TYPE,
- N_("one of source operand 1 or 3 must match dest operand"));
- break;
- case 8:
- {
- unsigned int cpu0 = i->cpu0, cpu1 = i->cpu1, cpu2 = i->cpu2;
- yasm_error_set(YASM_ERROR_TYPE,
- N_("requires CPU%s"),
- cpu_find_reverse(cpu0, cpu1, cpu2));
- break;
- }
- default:
- yasm_error_set(YASM_ERROR_TYPE,
- N_("invalid combination of opcode and operands"));
- }
-}
-
-static void
-x86_id_insn_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc)
-{
- x86_id_insn *id_insn = (x86_id_insn *)bc->contents;
- x86_insn *insn;
- const x86_insn_info *info = id_insn->group;
- unsigned int mode_bits = id_insn->mode_bits;
- unsigned char *mod_data = id_insn->mod_data;
- yasm_insn_operand *op, *ops[5], *rev_ops[5];
- /*@null@*/ yasm_expr *imm;
- unsigned char im_len;
- unsigned char im_sign;
- unsigned char spare;
- unsigned char vexdata, vexreg;
- unsigned int i;
- unsigned int size_lookup[] = {0, 8, 16, 32, 64, 80, 128, 256, 0};
- unsigned long do_postop = 0;
-
- size_lookup[OPS_BITS] = mode_bits;
-
- yasm_insn_finalize(&id_insn->insn);
-
- /* Build local array of operands from list, since we know we have a max
- * of 5 operands.
- */
- if (id_insn->insn.num_operands > 5) {
- yasm_error_set(YASM_ERROR_TYPE, N_("too many operands"));
- return;
- }
- ops[0] = ops[1] = ops[2] = ops[3] = ops[4] = NULL;
- for (i = 0, op = yasm_insn_ops_first(&id_insn->insn);
- op && i < id_insn->insn.num_operands;
- op = yasm_insn_op_next(op), i++)
- ops[i] = op;
-
- /* If we're running in GAS mode, build a reverse array of the operands
- * as most GAS instructions have reversed operands from Intel style.
- */
- if (id_insn->parser == X86_PARSER_GAS) {
- rev_ops[0] = rev_ops[1] = rev_ops[2] = rev_ops[3] = rev_ops[4] = NULL;
- for (i = id_insn->insn.num_operands-1,
- op = yasm_insn_ops_first(&id_insn->insn);
- op; op = yasm_insn_op_next(op), i--)
- rev_ops[i] = op;
- }
-
- /* If we're running in GAS mode, look at the first insn_info to see
- * if this is a relative jump (OPA_JmpRel). If so, run through the
- * operands and adjust for dereferences / lack thereof.
- */
- if (id_insn->parser == X86_PARSER_GAS
- && insn_operands[info->operands_index+0].action == OPA_JmpRel) {
- for (i = 0, op = ops[0]; op; op = ops[++i]) {
- if (!op->deref && (op->type == YASM_INSN__OPERAND_REG
- || (op->type == YASM_INSN__OPERAND_MEMORY
- && op->data.ea->strong)))
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("indirect call without `*'"));
- if (!op->deref && op->type == YASM_INSN__OPERAND_MEMORY
- && !op->data.ea->strong) {
- /* Memory that is not dereferenced, and not strong, is
- * actually an immediate for the purposes of relative jumps.
- */
- if (op->data.ea->segreg != 0)
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("skipping prefixes on this instruction"));
- imm = op->data.ea->disp.abs;
- op->data.ea->disp.abs = NULL;
- yasm_x86__ea_destroy(op->data.ea);
- op->type = YASM_INSN__OPERAND_IMM;
- op->data.val = imm;
- }
- }
- }
-
- info = x86_find_match(id_insn, ops, rev_ops, size_lookup, 0);
-
- if (!info) {
- /* Didn't find a match */
- x86_match_error(id_insn, ops, rev_ops, size_lookup);
- return;
- }
-
- if (id_insn->insn.num_operands > 0) {
- switch (insn_operands[info->operands_index+0].action) {
- case OPA_JmpRel:
- /* Shortcut to JmpRel */
- x86_finalize_jmp(bc, prev_bc, info);
- return;
- case OPA_JmpFar:
- /* Shortcut to JmpFar */
- x86_finalize_jmpfar(bc, prev_bc, info);
- return;
- }
- }
-
- /* Copy what we can from info */
- insn = yasm_xmalloc(sizeof(x86_insn));
- x86_finalize_common(&insn->common, info, mode_bits);
- x86_finalize_opcode(&insn->opcode, info);
- insn->x86_ea = NULL;
- imm = NULL;
- insn->def_opersize_64 = info->def_opersize_64;
- insn->special_prefix = info->special_prefix;
- spare = info->spare;
- vexdata = 0;
- vexreg = 0;
- im_len = 0;
- im_sign = 0;
- insn->postop = X86_POSTOP_NONE;
- insn->rex = 0;
-
- /* Move VEX/XOP data (stored in special prefix) to separate location to
- * allow overriding of special prefix by modifiers.
- */
- if ((insn->special_prefix & 0xF0) == 0xC0 ||
- (insn->special_prefix & 0xF0) == 0x80) {
- vexdata = insn->special_prefix;
- insn->special_prefix = 0;
- }
-
- /* Apply modifiers */
- for (i=0; i<NELEMS(info->modifiers); i++) {
- switch (info->modifiers[i]) {
- case MOD_Gap:
- break;
- case MOD_PreAdd:
- insn->special_prefix += mod_data[i];
- break;
- case MOD_Op0Add:
- insn->opcode.opcode[0] += mod_data[i];
- break;
- case MOD_Op1Add:
- insn->opcode.opcode[1] += mod_data[i];
- break;
- case MOD_Op2Add:
- insn->opcode.opcode[2] += mod_data[i];
- break;
- case MOD_SpAdd:
- spare += mod_data[i];
- break;
- case MOD_OpSizeR:
- insn->common.opersize = mod_data[i];
- break;
- case MOD_Imm8:
- imm = yasm_expr_create_ident(yasm_expr_int(
- yasm_intnum_create_uint(mod_data[i])), bc->line);
- im_len = 8;
- break;
- case MOD_DOpS64R:
- insn->def_opersize_64 = mod_data[i];
- break;
- case MOD_Op1AddSp:
- insn->opcode.opcode[1] += mod_data[i]<<3;
- break;
- case MOD_SetVEX:
- vexdata = mod_data[i];
- break;
- default:
- break;
- }
- }
-
- /* In 64-bit mode, if opersize is 64 and default is not 64,
- * force REX byte.
- */
- if (mode_bits == 64 && insn->common.opersize == 64 &&
- insn->def_opersize_64 != 64)
- insn->rex = 0x48;
-
- /* Go through operands and assign */
- if (id_insn->insn.num_operands > 0) {
- yasm_insn_operand **use_ops = ops;
- const x86_info_operand *info_ops =
- &insn_operands[info->operands_index];
-
- /* Use reversed operands in GAS mode if not otherwise specified */
- if (id_insn->parser == X86_PARSER_GAS
- && !(info->gas_flags & GAS_NO_REV))
- use_ops = rev_ops;
-
- for (i = 0, op = use_ops[0]; op && i<info->num_operands;
- op = use_ops[++i]) {
- switch (info_ops[i].action) {
- case OPA_None:
- /* Throw away the operand contents */
- switch (op->type) {
- case YASM_INSN__OPERAND_REG:
- case YASM_INSN__OPERAND_SEGREG:
- break;
- case YASM_INSN__OPERAND_MEMORY:
- yasm_x86__ea_destroy(op->data.ea);
- break;
- case YASM_INSN__OPERAND_IMM:
- yasm_expr_destroy(op->data.val);
- break;
- }
- break;
- case OPA_EA:
- switch (op->type) {
- case YASM_INSN__OPERAND_REG:
- insn->x86_ea =
- yasm_x86__ea_create_reg(insn->x86_ea,
- (unsigned long)op->data.reg, &insn->rex,
- mode_bits);
- break;
- case YASM_INSN__OPERAND_SEGREG:
- yasm_internal_error(
- N_("invalid operand conversion"));
- case YASM_INSN__OPERAND_MEMORY:
- if (op->seg)
- yasm_error_set(YASM_ERROR_VALUE,
- N_("invalid segment in effective address"));
- insn->x86_ea = (x86_effaddr *)op->data.ea;
- if (info_ops[i].type == OPT_MemOffs)
- /* Special-case for MOV MemOffs instruction */
- yasm_x86__ea_set_disponly(insn->x86_ea);
- else if (info_ops[i].type == OPT_MemXMMIndex) {
- /* Remember VSIB mode */
- insn->x86_ea->vsib_mode = 1;
- insn->x86_ea->need_sib = 1;
- } else if (info_ops[i].type == OPT_MemYMMIndex) {
- /* Remember VSIB mode */
- insn->x86_ea->vsib_mode = 2;
- insn->x86_ea->need_sib = 1;
- } else if (id_insn->default_rel &&
- !op->data.ea->not_pc_rel &&
- op->data.ea->segreg != 0x6404 &&
- op->data.ea->segreg != 0x6505 &&
- !yasm_expr__contains(
- op->data.ea->disp.abs, YASM_EXPR_REG))
- /* Enable default PC-rel if no regs and segreg
- * is not FS or GS.
- */
- insn->x86_ea->ea.pc_rel = 1;
- break;
- case YASM_INSN__OPERAND_IMM:
- insn->x86_ea =
- yasm_x86__ea_create_imm(insn->x86_ea,
- op->data.val,
- size_lookup[info_ops[i].size]);
- break;
- }
- break;
- case OPA_EAVEX:
- if (op->type != YASM_INSN__OPERAND_REG)
- yasm_internal_error(N_("invalid operand conversion"));
- insn->x86_ea =
- yasm_x86__ea_create_reg(insn->x86_ea,
- (unsigned long)op->data.reg, &insn->rex, mode_bits);
- vexreg = op->data.reg & 0xF;
- break;
- case OPA_Imm:
- if (op->seg)
- yasm_error_set(YASM_ERROR_VALUE,
- N_("immediate does not support segment"));
- if (op->type == YASM_INSN__OPERAND_IMM) {
- imm = op->data.val;
- im_len = size_lookup[info_ops[i].size];
- } else
- yasm_internal_error(N_("invalid operand conversion"));
- break;
- case OPA_SImm:
- if (op->seg)
- yasm_error_set(YASM_ERROR_VALUE,
- N_("immediate does not support segment"));
- if (op->type == YASM_INSN__OPERAND_IMM) {
- imm = op->data.val;
- im_len = size_lookup[info_ops[i].size];
- im_sign = 1;
- } else
- yasm_internal_error(N_("invalid operand conversion"));
- break;
- case OPA_Spare:
- if (op->type == YASM_INSN__OPERAND_SEGREG)
- spare = (unsigned char)(op->data.reg&7);
- else if (op->type == YASM_INSN__OPERAND_REG) {
- if (yasm_x86__set_rex_from_reg(&insn->rex, &spare,
- op->data.reg, mode_bits, X86_REX_R))
- return;
- } else
- yasm_internal_error(N_("invalid operand conversion"));
- break;
- case OPA_SpareVEX:
- if (op->type != YASM_INSN__OPERAND_REG)
- yasm_internal_error(N_("invalid operand conversion"));
- if (yasm_x86__set_rex_from_reg(&insn->rex, &spare,
- op->data.reg, mode_bits, X86_REX_R))
- return;
- vexreg = op->data.reg & 0xF;
- break;
- case OPA_Op0Add:
- if (op->type == YASM_INSN__OPERAND_REG) {
- unsigned char opadd;
- if (yasm_x86__set_rex_from_reg(&insn->rex, &opadd,
- op->data.reg, mode_bits, X86_REX_B))
- return;
- insn->opcode.opcode[0] += opadd;
- } else
- yasm_internal_error(N_("invalid operand conversion"));
- break;
- case OPA_Op1Add:
- if (op->type == YASM_INSN__OPERAND_REG) {
- unsigned char opadd;
- if (yasm_x86__set_rex_from_reg(&insn->rex, &opadd,
- op->data.reg, mode_bits, X86_REX_B))
- return;
- insn->opcode.opcode[1] += opadd;
- } else
- yasm_internal_error(N_("invalid operand conversion"));
- break;
- case OPA_SpareEA:
- if (op->type == YASM_INSN__OPERAND_REG) {
- insn->x86_ea =
- yasm_x86__ea_create_reg(insn->x86_ea,
- (unsigned long)op->data.reg, &insn->rex,
- mode_bits);
- if (!insn->x86_ea ||
- yasm_x86__set_rex_from_reg(&insn->rex, &spare,
- op->data.reg, mode_bits, X86_REX_R)) {
- if (insn->x86_ea)
- yasm_xfree(insn->x86_ea);
- yasm_xfree(insn);
- return;
- }
- } else
- yasm_internal_error(N_("invalid operand conversion"));
- break;
- case OPA_AdSizeEA: {
- const uintptr_t *regp = NULL;
- /* Only implement this for OPT_MemrAX and OPT_MemEAX
- * for now.
- */
- if (op->type != YASM_INSN__OPERAND_MEMORY ||
- !(regp = yasm_expr_get_reg(&op->data.ea->disp.abs, 0)))
- yasm_internal_error(N_("invalid operand conversion"));
- /* 64-bit mode does not allow 16-bit addresses */
- if (mode_bits == 64 && *regp == (X86_REG16 | 0))
- yasm_error_set(YASM_ERROR_TYPE,
- N_("16-bit addresses not supported in 64-bit mode"));
- else if (*regp == (X86_REG16 | 0))
- insn->common.addrsize = 16;
- else if (*regp == (X86_REG32 | 0))
- insn->common.addrsize = 32;
- else if (mode_bits == 64 && *regp == (X86_REG64 | 0))
- insn->common.addrsize = 64;
- else
- yasm_error_set(YASM_ERROR_TYPE,
- N_("unsupported address size"));
- yasm_x86__ea_destroy(op->data.ea);
- break;
- }
- case OPA_VEX:
- if (op->type != YASM_INSN__OPERAND_REG)
- yasm_internal_error(N_("invalid operand conversion"));
- vexreg = op->data.reg & 0xF;
- break;
- case OPA_VEXImmSrc:
- if (op->type != YASM_INSN__OPERAND_REG)
- yasm_internal_error(N_("invalid operand conversion"));
-
- if (!imm) {
- imm = yasm_expr_create_ident(
- yasm_expr_int(
- yasm_intnum_create_uint((op->data.reg << 4)
- & 0xF0)),
- bc->line);
- } else {
- imm = yasm_expr_create(
- YASM_EXPR_OR,
- yasm_expr_expr(yasm_expr_create(
- YASM_EXPR_AND,
- yasm_expr_expr(imm),
- yasm_expr_int(yasm_intnum_create_uint(0x0F)),
- bc->line)),
- yasm_expr_int(
- yasm_intnum_create_uint((op->data.reg << 4)
- & 0xF0)),
- bc->line);
- }
- im_len = 8;
- break;
- case OPA_VEXImm:
- if (op->type != YASM_INSN__OPERAND_IMM)
- yasm_internal_error(N_("invalid operand conversion"));
-
- if (!imm)
- imm = op->data.val;
- else {
- imm = yasm_expr_create(
- YASM_EXPR_OR,
- yasm_expr_expr(yasm_expr_create(
- YASM_EXPR_AND,
- yasm_expr_expr(op->data.val),
- yasm_expr_int(yasm_intnum_create_uint(0x0F)),
- bc->line)),
- yasm_expr_expr(yasm_expr_create(
- YASM_EXPR_AND,
- yasm_expr_expr(imm),
- yasm_expr_int(yasm_intnum_create_uint(0xF0)),
- bc->line)),
- bc->line);
- }
- im_len = 8;
- break;
- default:
- yasm_internal_error(N_("unknown operand action"));
- }
-
- if (info_ops[i].size == OPS_BITS)
- insn->common.opersize = (unsigned char)mode_bits;
-
- switch (info_ops[i].post_action) {
- case OPAP_None:
- break;
- case OPAP_SImm8:
- /* Check operand strictness; if strict and non-8-bit,
- * pre-emptively expand to full size.
- * For unspecified size case, still optimize.
- */
- if (!(id_insn->force_strict || op->strict)
- || op->size == 0)
- insn->postop = X86_POSTOP_SIGNEXT_IMM8;
- else if (op->size != 8) {
- insn->opcode.opcode[0] =
- insn->opcode.opcode[insn->opcode.len];
- insn->opcode.len = 1;
- }
- break;
- case OPAP_ShortMov:
- do_postop = OPAP_ShortMov;
- break;
- case OPAP_A16:
- insn->postop = X86_POSTOP_ADDRESS16;
- break;
- case OPAP_SImm32Avail:
- do_postop = OPAP_SImm32Avail;
- break;
- default:
- yasm_internal_error(
- N_("unknown operand postponed action"));
- }
- }
- }
-
- if (insn->x86_ea) {
- yasm_x86__ea_init(insn->x86_ea, spare, prev_bc);
- for (i=0; i<id_insn->insn.num_segregs; i++)
- yasm_ea_set_segreg(&insn->x86_ea->ea, id_insn->insn.segregs[i]);
- } else if (id_insn->insn.num_segregs > 0 && insn->special_prefix == 0) {
- if (id_insn->insn.num_segregs > 1)
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("multiple segment overrides, using leftmost"));
- insn->special_prefix = (unsigned char)
- (id_insn->insn.segregs[id_insn->insn.num_segregs-1]>>8);
- } else if (id_insn->insn.num_segregs > 0)
- yasm_internal_error(N_("unhandled segment prefix"));
-
- if (imm) {
- insn->imm = yasm_xmalloc(sizeof(yasm_value));
- if (yasm_value_finalize_expr(insn->imm, imm, prev_bc, im_len))
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("immediate expression too complex"));
- insn->imm->sign = im_sign;
- } else
- insn->imm = NULL;
-
- yasm_x86__bc_apply_prefixes((x86_common *)insn, &insn->rex,
- insn->def_opersize_64,
- id_insn->insn.num_prefixes,
- id_insn->insn.prefixes);
-
- if (insn->postop == X86_POSTOP_ADDRESS16 && insn->common.addrsize) {
- yasm_warn_set(YASM_WARN_GENERAL, N_("address size override ignored"));
- insn->common.addrsize = 0;
- }
-
- /* Handle non-span-dependent post-ops here */
- switch (do_postop) {
- case OPAP_ShortMov:
- /* Long (modrm+sib) mov instructions in amd64 can be optimized into
- * short mov instructions if a 32-bit address override is applied in
- * 64-bit mode to an EA of just an offset (no registers) and the
- * target register is al/ax/eax/rax.
- *
- * We don't want to do this if we're in default rel mode.
- */
- if (!id_insn->default_rel &&
- insn->common.mode_bits == 64 &&
- insn->common.addrsize == 32 &&
- (!insn->x86_ea->ea.disp.abs ||
- !yasm_expr__contains(insn->x86_ea->ea.disp.abs,
- YASM_EXPR_REG))) {
- yasm_x86__ea_set_disponly(insn->x86_ea);
- /* Make the short form permanent. */
- insn->opcode.opcode[0] = insn->opcode.opcode[1];
- }
- insn->opcode.opcode[1] = 0; /* avoid possible confusion */
- break;
- case OPAP_SImm32Avail:
- /* Used for 64-bit mov immediate, which can take a sign-extended
- * imm32 as well as imm64 values. The imm32 form is put in the
- * second byte of the opcode and its ModRM byte is put in the third
- * byte of the opcode.
- */
- if (!insn->imm->abs ||
- (yasm_expr_get_intnum(&insn->imm->abs, 0) &&
- yasm_intnum_check_size(
- yasm_expr_get_intnum(&insn->imm->abs, 0), 32, 0, 1))) {
- /* Throwaway REX byte */
- unsigned char rex_temp = 0;
-
- /* Build ModRM EA - CAUTION: this depends on
- * opcode 0 being a mov instruction!
- */
- insn->x86_ea = yasm_x86__ea_create_reg(insn->x86_ea,
- (unsigned long)insn->opcode.opcode[0]-0xB8, &rex_temp, 64);
-
- /* Make the imm32s form permanent. */
- insn->opcode.opcode[0] = insn->opcode.opcode[1];
- insn->imm->size = 32;
- }
- insn->opcode.opcode[1] = 0; /* avoid possible confusion */
- break;
- default:
- break;
- }
-
- /* Convert to VEX/XOP prefixes if requested.
- * To save space in the insn structure, the VEX/XOP prefix is written into
- * special_prefix and the first 2 bytes of the instruction are set to
- * the second two VEX/XOP bytes. During calc_len() it may be shortened to
- * one VEX byte (this can only be done after knowledge of REX value); this
- * further optimization is not possible for XOP.
- */
- if (vexdata) {
- int xop = ((vexdata & 0xF0) == 0x80);
- unsigned char vex1 = 0xE0; /* R=X=B=1, mmmmm=0 */
- unsigned char vex2;
-
- if (xop) {
- /* Look at the first bytes of the opcode for the XOP mmmmm field.
- * Leave R=X=B=1 for now.
- */
- if (insn->opcode.opcode[0] != 0x08 &&
- insn->opcode.opcode[0] != 0x09 &&
- insn->opcode.opcode[0] != 0x0A)
- yasm_internal_error(N_("first opcode byte of XOP must be 0x08, 0x09, or 0x0A"));
- vex1 |= insn->opcode.opcode[0];
- /* Move opcode byte back one byte to make room for XOP prefix. */
- insn->opcode.opcode[2] = insn->opcode.opcode[1];
- } else {
- /* Look at the first bytes of the opcode to see what leading bytes
- * to encode in the VEX mmmmm field. Leave R=X=B=1 for now.
- */
- if (insn->opcode.opcode[0] != 0x0F)
- yasm_internal_error(N_("first opcode byte of VEX must be 0x0F"));
-
- if (insn->opcode.opcode[1] == 0x38)
- vex1 |= 0x02; /* implied 0x0F 0x38 */
- else if (insn->opcode.opcode[1] == 0x3A)
- vex1 |= 0x03; /* implied 0x0F 0x3A */
- else {
- /* Originally a 0F-only opcode; move opcode byte back one
- * position to make room for VEX prefix.
- */
- insn->opcode.opcode[2] = insn->opcode.opcode[1];
- vex1 |= 0x01; /* implied 0x0F */
- }
- }
-
- /* Check for update of special prefix by modifiers */
- if (insn->special_prefix != 0) {
- vexdata &= ~0x03;
- switch (insn->special_prefix) {
- case 0x66:
- vexdata |= 0x01;
- break;
- case 0xF3:
- vexdata |= 0x02;
- break;
- case 0xF2:
- vexdata |= 0x03;
- break;
- default:
- yasm_internal_error(N_("unrecognized special prefix"));
- }
- }
-
- /* 2nd VEX byte is WvvvvLpp.
- * W, L, pp come from vexdata
- * vvvv comes from 1s complement of vexreg
- */
- vex2 = (((vexdata & 0x8) << 4) | /* W */
- ((15 - (vexreg & 0xF)) << 3) | /* vvvv */
- (vexdata & 0x7)); /* Lpp */
-
- /* Save to special_prefix and opcode */
- insn->special_prefix = xop ? 0x8F : 0xC4; /* VEX/XOP prefix */
- insn->opcode.opcode[0] = vex1;
- insn->opcode.opcode[1] = vex2;
- insn->opcode.len = 3; /* two prefix bytes and 1 opcode byte */
- }
-
- x86_id_insn_clear_operands(id_insn);
-
- /* Transform the bytecode */
- yasm_x86__bc_transform_insn(bc, insn);
-}
-
-/* Static parse data structure for instructions */
-typedef struct insnprefix_parse_data {
- const char *name;
-
- /* instruction parse group - NULL if prefix */
- /*@null@*/ const x86_insn_info *group;
-
- /* For instruction, number of elements in group.
- * For prefix, prefix type shifted right by 8.
- */
- unsigned int num_info:8;
-
- /* For instruction, GAS suffix flags.
- * For prefix, prefix value.
- */
- unsigned int flags:8;
-
- /* Instruction modifier data. */
- unsigned int mod_data0:8;
- unsigned int mod_data1:8;
- unsigned int mod_data2:8;
-
- /* Tests against BITS==64 and AVX */
- unsigned int misc_flags:6;
-
- /* CPU flags */
- unsigned int cpu0:6;
- unsigned int cpu1:6;
- unsigned int cpu2:6;
-} insnprefix_parse_data;
-
-/* Pull in all parse data */
-#include "x86insn_nasm.c"
-#include "x86insn_gas.c"
-
-static const char *
-cpu_find_reverse(unsigned int cpu0, unsigned int cpu1, unsigned int cpu2)
-{
- static char cpuname[200];
- wordptr cpu = BitVector_Create(128, TRUE);
-
- if (cpu0 != CPU_Any)
- BitVector_Bit_On(cpu, cpu0);
- if (cpu1 != CPU_Any)
- BitVector_Bit_On(cpu, cpu1);
- if (cpu2 != CPU_Any)
- BitVector_Bit_On(cpu, cpu2);
-
- cpuname[0] = '\0';
-
- if (BitVector_bit_test(cpu, CPU_Prot))
- strcat(cpuname, " Protected");
- if (BitVector_bit_test(cpu, CPU_Undoc))
- strcat(cpuname, " Undocumented");
- if (BitVector_bit_test(cpu, CPU_Obs))
- strcat(cpuname, " Obsolete");
- if (BitVector_bit_test(cpu, CPU_Priv))
- strcat(cpuname, " Privileged");
-
- if (BitVector_bit_test(cpu, CPU_FPU))
- strcat(cpuname, " FPU");
- if (BitVector_bit_test(cpu, CPU_MMX))
- strcat(cpuname, " MMX");
- if (BitVector_bit_test(cpu, CPU_SSE))
- strcat(cpuname, " SSE");
- if (BitVector_bit_test(cpu, CPU_SSE2))
- strcat(cpuname, " SSE2");
- if (BitVector_bit_test(cpu, CPU_SSE3))
- strcat(cpuname, " SSE3");
- if (BitVector_bit_test(cpu, CPU_3DNow))
- strcat(cpuname, " 3DNow");
- if (BitVector_bit_test(cpu, CPU_Cyrix))
- strcat(cpuname, " Cyrix");
- if (BitVector_bit_test(cpu, CPU_AMD))
- strcat(cpuname, " AMD");
- if (BitVector_bit_test(cpu, CPU_SMM))
- strcat(cpuname, " SMM");
- if (BitVector_bit_test(cpu, CPU_SVM))
- strcat(cpuname, " SVM");
- if (BitVector_bit_test(cpu, CPU_PadLock))
- strcat(cpuname, " PadLock");
- if (BitVector_bit_test(cpu, CPU_EM64T))
- strcat(cpuname, " EM64T");
- if (BitVector_bit_test(cpu, CPU_SSSE3))
- strcat(cpuname, " SSSE3");
- if (BitVector_bit_test(cpu, CPU_SSE41))
- strcat(cpuname, " SSE4.1");
- if (BitVector_bit_test(cpu, CPU_SSE42))
- strcat(cpuname, " SSE4.2");
-
- if (BitVector_bit_test(cpu, CPU_186))
- strcat(cpuname, " 186");
- if (BitVector_bit_test(cpu, CPU_286))
- strcat(cpuname, " 286");
- if (BitVector_bit_test(cpu, CPU_386))
- strcat(cpuname, " 386");
- if (BitVector_bit_test(cpu, CPU_486))
- strcat(cpuname, " 486");
- if (BitVector_bit_test(cpu, CPU_586))
- strcat(cpuname, " 586");
- if (BitVector_bit_test(cpu, CPU_686))
- strcat(cpuname, " 686");
- if (BitVector_bit_test(cpu, CPU_P3))
- strcat(cpuname, " P3");
- if (BitVector_bit_test(cpu, CPU_P4))
- strcat(cpuname, " P4");
- if (BitVector_bit_test(cpu, CPU_IA64))
- strcat(cpuname, " IA64");
- if (BitVector_bit_test(cpu, CPU_K6))
- strcat(cpuname, " K6");
- if (BitVector_bit_test(cpu, CPU_Athlon))
- strcat(cpuname, " Athlon");
- if (BitVector_bit_test(cpu, CPU_Hammer))
- strcat(cpuname, " Hammer");
-
- BitVector_Destroy(cpu);
- return cpuname;
-}
-
-yasm_arch_insnprefix
-yasm_x86__parse_check_insnprefix(yasm_arch *arch, const char *id,
- size_t id_len, unsigned long line,
- yasm_bytecode **bc, uintptr_t *prefix)
-{
- yasm_arch_x86 *arch_x86 = (yasm_arch_x86 *)arch;
- /*@null@*/ const insnprefix_parse_data *pdata;
- size_t i;
- static char lcaseid[17];
-
- *bc = (yasm_bytecode *)NULL;
- *prefix = 0;
-
- if (id_len > 16)
- return YASM_ARCH_NOTINSNPREFIX;
- for (i=0; i<id_len; i++)
- lcaseid[i] = tolower(id[i]);
- lcaseid[id_len] = '\0';
-
- switch (PARSER(arch_x86)) {
- case X86_PARSER_NASM:
- pdata = insnprefix_nasm_find(lcaseid, id_len);
- break;
- case X86_PARSER_TASM:
- pdata = insnprefix_nasm_find(lcaseid, id_len);
- break;
- case X86_PARSER_GAS:
- pdata = insnprefix_gas_find(lcaseid, id_len);
- break;
- default:
- pdata = NULL;
- }
- if (!pdata)
- return YASM_ARCH_NOTINSNPREFIX;
-
- if (pdata->group) {
- x86_id_insn *id_insn;
- wordptr cpu_enabled = arch_x86->cpu_enables[arch_x86->active_cpu];
- unsigned int cpu0, cpu1, cpu2;
-
- if (arch_x86->mode_bits != 64 && (pdata->misc_flags & ONLY_64)) {
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("`%s' is an instruction in 64-bit mode"), id);
- return YASM_ARCH_NOTINSNPREFIX;
- }
- if (arch_x86->mode_bits == 64 && (pdata->misc_flags & NOT_64)) {
- yasm_error_set(YASM_ERROR_GENERAL,
- N_("`%s' invalid in 64-bit mode"), id);
- id_insn = yasm_xmalloc(sizeof(x86_id_insn));
- yasm_insn_initialize(&id_insn->insn);
- id_insn->group = not64_insn;
- id_insn->cpu_enabled = cpu_enabled;
- id_insn->mod_data[0] = 0;
- id_insn->mod_data[1] = 0;
- id_insn->mod_data[2] = 0;
- id_insn->num_info = NELEMS(not64_insn);
- id_insn->mode_bits = arch_x86->mode_bits;
- id_insn->suffix = 0;
- id_insn->misc_flags = 0;
- id_insn->parser = PARSER(arch_x86);
-
- id_insn->force_strict = arch_x86->force_strict != 0;
- id_insn->default_rel = arch_x86->default_rel != 0;
- *bc = yasm_bc_create_common(&x86_id_insn_callback, id_insn, line);
- return YASM_ARCH_INSN;
- }
-
- cpu0 = pdata->cpu0;
- cpu1 = pdata->cpu1;
- cpu2 = pdata->cpu2;
-
- if (!BitVector_bit_test(cpu_enabled, cpu0) ||
- !BitVector_bit_test(cpu_enabled, cpu1) ||
- !BitVector_bit_test(cpu_enabled, cpu2)) {
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("`%s' is an instruction in CPU%s"), id,
- cpu_find_reverse(cpu0, cpu1, cpu2));
- return YASM_ARCH_NOTINSNPREFIX;
- }
-
- id_insn = yasm_xmalloc(sizeof(x86_id_insn));
- yasm_insn_initialize(&id_insn->insn);
- id_insn->group = pdata->group;
- id_insn->cpu_enabled = cpu_enabled;
- id_insn->mod_data[0] = pdata->mod_data0;
- id_insn->mod_data[1] = pdata->mod_data1;
- id_insn->mod_data[2] = pdata->mod_data2;
- id_insn->num_info = pdata->num_info;
- id_insn->mode_bits = arch_x86->mode_bits;
- id_insn->suffix = pdata->flags;
- id_insn->misc_flags = pdata->misc_flags;
- id_insn->parser = PARSER(arch_x86);
- id_insn->force_strict = arch_x86->force_strict != 0;
- id_insn->default_rel = arch_x86->default_rel != 0;
- *bc = yasm_bc_create_common(&x86_id_insn_callback, id_insn, line);
- return YASM_ARCH_INSN;
- } else {
- unsigned long type = pdata->num_info<<8;
- unsigned long value = pdata->flags;
-
- if (arch_x86->mode_bits == 64 && type == X86_OPERSIZE && value == 32) {
- yasm_error_set(YASM_ERROR_GENERAL,
- N_("Cannot override data size to 32 bits in 64-bit mode"));
- return YASM_ARCH_NOTINSNPREFIX;
- }
-
- if (arch_x86->mode_bits == 64 && type == X86_ADDRSIZE && value == 16) {
- yasm_error_set(YASM_ERROR_GENERAL,
- N_("Cannot override address size to 16 bits in 64-bit mode"));
- return YASM_ARCH_NOTINSNPREFIX;
- }
-
- if (arch_x86->mode_bits != 64 && (pdata->misc_flags & ONLY_64)) {
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("`%s' is a prefix in 64-bit mode"), id);
- return YASM_ARCH_NOTINSNPREFIX;
- }
- *prefix = type|value;
- return YASM_ARCH_PREFIX;
- }
-}
-
-static void
-x86_id_insn_destroy(void *contents)
-{
- x86_id_insn *id_insn = (x86_id_insn *)contents;
- yasm_insn_delete(&id_insn->insn, yasm_x86__ea_destroy);
- yasm_xfree(contents);
-}
-
-static void
-x86_id_insn_print(const void *contents, FILE *f, int indent_level)
-{
- const x86_id_insn *id_insn = (const x86_id_insn *)contents;
- yasm_insn_print(&id_insn->insn, f, indent_level);
- /*TODO*/
-}
-
-/*@only@*/ yasm_bytecode *
-yasm_x86__create_empty_insn(yasm_arch *arch, unsigned long line)
-{
- yasm_arch_x86 *arch_x86 = (yasm_arch_x86 *)arch;
- x86_id_insn *id_insn = yasm_xmalloc(sizeof(x86_id_insn));
-
- yasm_insn_initialize(&id_insn->insn);
- id_insn->group = empty_insn;
- id_insn->cpu_enabled = arch_x86->cpu_enables[arch_x86->active_cpu];
- id_insn->mod_data[0] = 0;
- id_insn->mod_data[1] = 0;
- id_insn->mod_data[2] = 0;
- id_insn->num_info = NELEMS(empty_insn);
- id_insn->mode_bits = arch_x86->mode_bits;
- id_insn->suffix = (PARSER(arch_x86) == X86_PARSER_GAS) ? SUF_Z : 0;
- id_insn->misc_flags = 0;
- id_insn->parser = PARSER(arch_x86);
- id_insn->force_strict = arch_x86->force_strict != 0;
- id_insn->default_rel = arch_x86->default_rel != 0;
-
- return yasm_bc_create_common(&x86_id_insn_callback, id_insn, line);
-}
-
+/*
+ * x86 identifier recognition and instruction handling
+ *
+ * Copyright (C) 2002-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <ctype.h>
+#include <util.h>
+
+#include <libyasm.h>
+#include <libyasm/phash.h>
+
+#include "modules/arch/x86/x86arch.h"
+
+
+static const char *cpu_find_reverse(unsigned int cpu0, unsigned int cpu1,
+ unsigned int cpu2);
+
+/* Opcode modifiers. */
+#define MOD_Gap 0 /* Eats a parameter / does nothing */
+#define MOD_PreAdd 1 /* Parameter adds to "special" prefix */
+#define MOD_Op0Add 2 /* Parameter adds to opcode byte 0 */
+#define MOD_Op1Add 3 /* Parameter adds to opcode byte 1 */
+#define MOD_Op2Add 4 /* Parameter adds to opcode byte 2 */
+#define MOD_SpAdd 5 /* Parameter adds to "spare" value */
+#define MOD_OpSizeR 6 /* Parameter replaces opersize */
+#define MOD_Imm8 7 /* Parameter is included as immediate byte */
+#define MOD_AdSizeR 8 /* Parameter replaces addrsize (jmp only) */
+#define MOD_DOpS64R 9 /* Parameter replaces default 64-bit opersize */
+#define MOD_Op1AddSp 10 /* Parameter is added as "spare" to opcode byte 2 */
+#define MOD_SetVEX 11 /* Parameter replaces internal VEX prefix value */
+
+/* GAS suffix flags for instructions */
+enum x86_gas_suffix_flags {
+ SUF_Z = 1<<0, /* no suffix */
+ SUF_B = 1<<1,
+ SUF_W = 1<<2,
+ SUF_L = 1<<3,
+ SUF_Q = 1<<4,
+ SUF_S = 1<<5,
+ SUF_MASK = SUF_Z|SUF_B|SUF_W|SUF_L|SUF_Q|SUF_S,
+
+ /* Flags only used in x86_insn_info */
+ GAS_ONLY = 1<<6, /* Only available in GAS mode */
+ GAS_ILLEGAL = 1<<7, /* Illegal in GAS mode */
+ GAS_NO_REV = 1<<8 /* Don't reverse operands in GAS mode */
+};
+
+/* Miscellaneous flag tests for instructions */
+enum x86_misc_flags {
+ /* These are tested against BITS==64. */
+ ONLY_64 = 1<<0, /* Only available in 64-bit mode */
+ NOT_64 = 1<<1, /* Not available (invalid) in 64-bit mode */
+ /* These are tested against whether the base instruction is an AVX one. */
+ ONLY_AVX = 1<<2, /* Only available in AVX instruction */
+ NOT_AVX = 1<<3 /* Not available (invalid) in AVX instruction */
+};
+
+enum x86_operand_type {
+ OPT_Imm = 0, /* immediate */
+ OPT_Reg = 1, /* any general purpose or FPU register */
+ OPT_Mem = 2, /* memory */
+ OPT_RM = 3, /* any general purpose or FPU register OR memory */
+ OPT_SIMDReg = 4, /* any MMX or XMM register */
+ OPT_SIMDRM = 5, /* any MMX or XMM register OR memory */
+ OPT_SegReg = 6, /* any segment register */
+ OPT_CRReg = 7, /* any CR register */
+ OPT_DRReg = 8, /* any DR register */
+ OPT_TRReg = 9, /* any TR register */
+ OPT_ST0 = 10, /* ST0 */
+ OPT_Areg = 11, /* AL/AX/EAX/RAX (depending on size) */
+ OPT_Creg = 12, /* CL/CX/ECX/RCX (depending on size) */
+ OPT_Dreg = 13, /* DL/DX/EDX/RDX (depending on size) */
+ OPT_CS = 14, /* CS */
+ OPT_DS = 15, /* DS */
+ OPT_ES = 16, /* ES */
+ OPT_FS = 17, /* FS */
+ OPT_GS = 18, /* GS */
+ OPT_SS = 19, /* SS */
+ OPT_CR4 = 20, /* CR4 */
+ /* memory offset (an EA, but with no registers allowed)
+ * [special case for MOV opcode]
+ */
+ OPT_MemOffs = 21,
+ OPT_Imm1 = 22, /* immediate, value=1 (for special-case shift) */
+ /* immediate, does not contain SEG:OFF (for jmp/call) */
+ OPT_ImmNotSegOff = 23,
+ OPT_XMM0 = 24, /* XMM0 */
+ /* AX/EAX/RAX memory operand only (EA) [special case for SVM opcodes]
+ */
+ OPT_MemrAX = 25,
+ /* EAX memory operand only (EA) [special case for SVM skinit opcode] */
+ OPT_MemEAX = 26,
+ /* XMM VSIB memory operand */
+ OPT_MemXMMIndex = 27,
+ /* YMM VSIB memory operand */
+ OPT_MemYMMIndex = 28
+};
+
+enum x86_operand_size {
+ /* any size acceptable/no size spec acceptable (dep. on strict) */
+ OPS_Any = 0,
+ /* 8/16/32/64/80/128/256 bits (from user or reg size) */
+ OPS_8 = 1,
+ OPS_16 = 2,
+ OPS_32 = 3,
+ OPS_64 = 4,
+ OPS_80 = 5,
+ OPS_128 = 6,
+ OPS_256 = 7,
+ /* current BITS setting; when this is used the size matched
+ * gets stored into the opersize as well.
+ */
+ OPS_BITS = 8
+};
+
+enum x86_operand_targetmod {
+ OPTM_None = 0, /* no target mod acceptable */
+ OPTM_Near = 1, /* NEAR */
+ OPTM_Short = 2, /* SHORT */
+ OPTM_Far = 3, /* FAR (or SEG:OFF immediate) */
+ OPTM_To = 4 /* TO */
+};
+
+enum x86_operand_action {
+ OPA_None = 0, /* does nothing (operand data is discarded) */
+ OPA_EA = 1, /* operand data goes into ea field */
+ OPA_Imm = 2, /* operand data goes into imm field */
+ OPA_SImm = 3, /* operand data goes into sign-extended imm field */
+ OPA_Spare = 4, /* operand data goes into "spare" field */
+ OPA_Op0Add = 5, /* operand data is added to opcode byte 0 */
+ OPA_Op1Add = 6, /* operand data is added to opcode byte 1 */
+ /* operand data goes into BOTH ea and spare
+ * (special case for imul opcode)
+ */
+ OPA_SpareEA = 7,
+ /* relative jump (outputs a jmp instead of normal insn) */
+ OPA_JmpRel = 8,
+ /* operand size goes into address size (jmp only) */
+ OPA_AdSizeR = 9,
+ /* far jump (outputs a farjmp instead of normal insn) */
+ OPA_JmpFar = 10,
+ /* ea operand only sets address size (no actual ea field) */
+ OPA_AdSizeEA = 11,
+ OPA_VEX = 12, /* operand data goes into VEX/XOP "vvvv" field */
+ /* operand data goes into BOTH VEX/XOP "vvvv" field and ea field */
+ OPA_EAVEX = 13,
+ /* operand data goes into BOTH VEX/XOP "vvvv" field and spare field */
+ OPA_SpareVEX = 14,
+ /* operand data goes into upper 4 bits of immediate byte (VEX is4 field) */
+ OPA_VEXImmSrc = 15,
+ /* operand data goes into bottom 4 bits of immediate byte
+ * (currently only VEX imz2 field)
+ */
+ OPA_VEXImm = 16
+};
+
+enum x86_operand_post_action {
+ OPAP_None = 0,
+ /* sign-extended imm8 that could expand to a large imm16/32 */
+ OPAP_SImm8 = 1,
+ /* could become a short opcode mov with bits=64 and a32 prefix */
+ OPAP_ShortMov = 2,
+ /* forced 16-bit address size (override ignored, no prefix) */
+ OPAP_A16 = 3,
+ /* large imm64 that can become a sign-extended imm32 */
+ OPAP_SImm32Avail = 4
+};
+
+typedef struct x86_info_operand {
+ /* Operand types. These are more detailed than the "general" types for all
+ * architectures, as they include the size, for instance.
+ */
+
+ /* general type (must be exact match, except for RM types): */
+ unsigned int type:5;
+
+ /* size (user-specified, or from register size) */
+ unsigned int size:4;
+
+ /* size implicit or explicit ("strictness" of size matching on
+ * non-registers -- registers are always strictly matched):
+ * 0 = user size must exactly match size above.
+ * 1 = user size either unspecified or exactly match size above.
+ */
+ unsigned int relaxed:1;
+
+ /* effective address size
+ * 0 = any address size allowed except for 64-bit
+ * 1 = only 64-bit address size allowed
+ */
+ unsigned int eas64:1;
+
+ /* target modification */
+ unsigned int targetmod:3;
+
+ /* Actions: what to do with the operand if the instruction matches.
+ * Essentially describes what part of the output bytecode gets the
+ * operand. This may require conversion (e.g. a register going into
+ * an ea field). Naturally, only one of each of these may be contained
+ * in the operands of a single insn_info structure.
+ */
+ unsigned int action:5;
+
+ /* Postponed actions: actions which can't be completed at
+ * parse-time due to possibly dependent expressions. For these, some
+ * additional data (stored in the second byte of the opcode with a
+ * one-byte opcode) is passed to later stages of the assembler with
+ * flags set to indicate postponed actions.
+ */
+ unsigned int post_action:3;
+} x86_info_operand;
+
+typedef struct x86_insn_info {
+ /* GAS suffix flags */
+ unsigned int gas_flags:9; /* Enabled for these GAS suffixes */
+
+ /* Tests against BITS==64, AVX, and XOP */
+ unsigned int misc_flags:5;
+
+ /* The CPU feature flags needed to execute this instruction. This is OR'ed
+ * with arch-specific data[2]. This combined value is compared with
+ * cpu_enabled to see if all bits set here are set in cpu_enabled--if so,
+ * the instruction is available on this CPU.
+ */
+ unsigned int cpu0:6;
+ unsigned int cpu1:6;
+ unsigned int cpu2:6;
+
+ /* Opcode modifiers for variations of instruction. As each modifier reads
+ * its parameter in LSB->MSB order from the arch-specific data[1] from the
+ * lexer data, and the LSB of the arch-specific data[1] is reserved for the
+ * count of insn_info structures in the instruction grouping, there can
+ * only be a maximum of 3 modifiers.
+ */
+ unsigned char modifiers[3];
+
+ /* Operand Size */
+ unsigned char opersize;
+
+ /* Default operand size in 64-bit mode (0 = 32-bit for readability). */
+ unsigned char def_opersize_64;
+
+ /* A special instruction prefix, used for some of the Intel SSE and SSE2
+ * instructions. Intel calls these 3-byte opcodes, but in AMD64's 64-bit
+ * mode, they're treated like normal prefixes (e.g. the REX prefix needs
+ * to be *after* the F2/F3/66 "prefix").
+ * (0=no special prefix)
+ * 0xC0 - 0xCF indicate a VEX prefix, with the four LSBs holding "WLpp":
+ * W: VEX.W field (meaning depends on opcode)
+ * L: 0=128-bit, 1=256-bit
+ * pp: SIMD prefix designation:
+ * 00: None
+ * 01: 66
+ * 10: F3
+ * 11: F2
+ * 0x80 - 0x8F indicate a XOP prefix, with the four LSBs holding "WLpp":
+ * same meanings as VEX prefix.
+ */
+ unsigned char special_prefix;
+
+ /* The length of the basic opcode */
+ unsigned char opcode_len;
+
+ /* The basic 1-3 byte opcode (not including the special instruction
+ * prefix).
+ */
+ unsigned char opcode[3];
+
+ /* The 3-bit "spare" value (extended opcode) for the R/M byte field */
+ unsigned char spare;
+
+ /* The number of operands this form of the instruction takes */
+ unsigned int num_operands:4;
+
+ /* The index into the insn_operands array which contains the type of each
+ * operand, see above
+ */
+ unsigned int operands_index:12;
+} x86_insn_info;
+
+typedef struct x86_id_insn {
+ yasm_insn insn; /* base structure */
+
+ /* instruction parse group - NULL if empty instruction (just prefixes) */
+ /*@null@*/ const x86_insn_info *group;
+
+ /* CPU feature flags enabled at the time of parsing the instruction */
+ wordptr cpu_enabled;
+
+ /* Modifier data */
+ unsigned char mod_data[3];
+
+ /* Number of elements in the instruction parse group */
+ unsigned int num_info:8;
+
+ /* BITS setting active at the time of parsing the instruction */
+ unsigned int mode_bits:8;
+
+ /* Suffix flags */
+ unsigned int suffix:9;
+
+ /* Tests against BITS==64 and AVX */
+ unsigned int misc_flags:5;
+
+ /* Parser enabled at the time of parsing the instruction */
+ unsigned int parser:2;
+
+ /* Strict forced setting at the time of parsing the instruction */
+ unsigned int force_strict:1;
+
+ /* Default rel setting at the time of parsing the instruction */
+ unsigned int default_rel:1;
+} x86_id_insn;
+
+static void x86_id_insn_destroy(void *contents);
+static void x86_id_insn_print(const void *contents, FILE *f, int indent_level);
+static void x86_id_insn_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc);
+
+static const yasm_bytecode_callback x86_id_insn_callback = {
+ x86_id_insn_destroy,
+ x86_id_insn_print,
+ x86_id_insn_finalize,
+ NULL,
+ yasm_bc_calc_len_common,
+ yasm_bc_expand_common,
+ yasm_bc_tobytes_common,
+ YASM_BC_SPECIAL_INSN
+};
+
+#include "x86insns.c"
+
+/* Looks for the first SIMD register match for the purposes of VSIB matching.
+ * Full legality checking is performed in EA code.
+ */
+static int
+x86_expr_contains_simd_cb(const yasm_expr__item *ei, void *d)
+{
+ int ymm = *((int *)d);
+ if (ei->type != YASM_EXPR_REG)
+ return 0;
+ switch ((x86_expritem_reg_size)(ei->data.reg & ~0xFUL)) {
+ case X86_XMMREG:
+ if (!ymm)
+ return 1;
+ break;
+ case X86_YMMREG:
+ if (ymm)
+ return 1;
+ break;
+ default:
+ break;
+ }
+ return 0;
+}
+
+static int
+x86_expr_contains_simd(const yasm_expr *e, int ymm)
+{
+ return yasm_expr__traverse_leaves_in_const(e, &ymm,
+ x86_expr_contains_simd_cb);
+}
+
+static void
+x86_finalize_common(x86_common *common, const x86_insn_info *info,
+ unsigned int mode_bits)
+{
+ common->addrsize = 0;
+ common->opersize = info->opersize;
+ common->lockrep_pre = 0;
+ common->acqrel_pre = 0;
+ common->mode_bits = (unsigned char)mode_bits;
+}
+
+static void
+x86_finalize_opcode(x86_opcode *opcode, const x86_insn_info *info)
+{
+ opcode->len = info->opcode_len;
+ opcode->opcode[0] = info->opcode[0];
+ opcode->opcode[1] = info->opcode[1];
+ opcode->opcode[2] = info->opcode[2];
+}
+
+/* Clear operands so they don't get destroyed after we've copied references. */
+static void
+x86_id_insn_clear_operands(x86_id_insn *id_insn)
+{
+ yasm_insn_operand *op = yasm_insn_ops_first(&id_insn->insn);
+ while (op) {
+ op->type = YASM_INSN__OPERAND_REG;
+ op = yasm_insn_op_next(op);
+ }
+}
+
+static void
+x86_finalize_jmpfar(yasm_bytecode *bc, yasm_bytecode *prev_bc,
+ const x86_insn_info *info)
+{
+ x86_id_insn *id_insn = (x86_id_insn *)bc->contents;
+ unsigned char *mod_data = id_insn->mod_data;
+ unsigned int mode_bits = id_insn->mode_bits;
+ x86_jmpfar *jmpfar;
+ yasm_insn_operand *op;
+ unsigned int i;
+
+ jmpfar = yasm_xmalloc(sizeof(x86_jmpfar));
+ x86_finalize_common(&jmpfar->common, info, mode_bits);
+ x86_finalize_opcode(&jmpfar->opcode, info);
+
+ op = yasm_insn_ops_first(&id_insn->insn);
+
+ if (op->type == YASM_INSN__OPERAND_IMM && op->seg) {
+ /* SEG:OFF */
+ if (yasm_value_finalize_expr(&jmpfar->segment, op->seg, prev_bc, 16))
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("jump target segment too complex"));
+ if (yasm_value_finalize_expr(&jmpfar->offset, op->data.val, prev_bc,
+ 0))
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("jump target offset too complex"));
+ } else if (op->targetmod == X86_FAR) {
+ /* "FAR imm" target needs to become "seg imm:imm". */
+ yasm_expr *e = yasm_expr_create_branch(YASM_EXPR_SEG,
+ yasm_expr_copy(op->data.val),
+ op->data.val->line);
+ if (yasm_value_finalize_expr(&jmpfar->offset, op->data.val, prev_bc, 0)
+ || yasm_value_finalize_expr(&jmpfar->segment, e, prev_bc, 16))
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("jump target expression too complex"));
+ } else if (yasm_insn_op_next(op)) {
+ /* Two operand form (gas) */
+ yasm_insn_operand *op2 = yasm_insn_op_next(op);
+ if (yasm_value_finalize_expr(&jmpfar->segment, op->data.val, prev_bc,
+ 16))
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("jump target segment too complex"));
+ if (yasm_value_finalize_expr(&jmpfar->offset, op2->data.val, prev_bc,
+ 0))
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("jump target offset too complex"));
+ if (op2->size == OPS_BITS)
+ jmpfar->common.opersize = (unsigned char)mode_bits;
+ } else
+ yasm_internal_error(N_("didn't get FAR expression in jmpfar"));
+
+ /* Apply modifiers */
+ for (i=0; i<NELEMS(info->modifiers); i++) {
+ switch (info->modifiers[i]) {
+ case MOD_Gap:
+ break;
+ case MOD_Op0Add:
+ jmpfar->opcode.opcode[0] += mod_data[i];
+ break;
+ case MOD_Op1Add:
+ jmpfar->opcode.opcode[1] += mod_data[i];
+ break;
+ case MOD_Op2Add:
+ jmpfar->opcode.opcode[2] += mod_data[i];
+ break;
+ case MOD_Op1AddSp:
+ jmpfar->opcode.opcode[1] += mod_data[i]<<3;
+ break;
+ default:
+ break;
+ }
+ }
+
+ yasm_x86__bc_apply_prefixes((x86_common *)jmpfar, NULL,
+ info->def_opersize_64,
+ id_insn->insn.num_prefixes,
+ id_insn->insn.prefixes);
+
+ x86_id_insn_clear_operands(id_insn);
+
+ /* Transform the bytecode */
+ yasm_x86__bc_transform_jmpfar(bc, jmpfar);
+}
+
+static void
+x86_finalize_jmp(yasm_bytecode *bc, yasm_bytecode *prev_bc,
+ const x86_insn_info *jinfo)
+{
+ x86_id_insn *id_insn = (x86_id_insn *)bc->contents;
+ x86_jmp *jmp;
+ int num_info = id_insn->num_info;
+ const x86_insn_info *info = id_insn->group;
+ unsigned char *mod_data = id_insn->mod_data;
+ unsigned int mode_bits = id_insn->mode_bits;
+ /*unsigned char suffix = id_insn->suffix;*/
+ yasm_insn_operand *op;
+ static const unsigned char size_lookup[] =
+ {0, 8, 16, 32, 64, 80, 128, 0, 0}; /* 256 not needed */
+ unsigned int i;
+
+ /* We know the target is in operand 0, but sanity check for Imm. */
+ op = yasm_insn_ops_first(&id_insn->insn);
+ if (op->type != YASM_INSN__OPERAND_IMM)
+ yasm_internal_error(N_("invalid operand conversion"));
+
+ jmp = yasm_xmalloc(sizeof(x86_jmp));
+ x86_finalize_common(&jmp->common, jinfo, mode_bits);
+ if (yasm_value_finalize_expr(&jmp->target, op->data.val, prev_bc, 0))
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("jump target expression too complex"));
+ if (jmp->target.seg_of || jmp->target.rshift || jmp->target.curpos_rel)
+ yasm_error_set(YASM_ERROR_VALUE, N_("invalid jump target"));
+ yasm_value_set_curpos_rel(&jmp->target, bc, 0);
+ jmp->target.jump_target = 1;
+
+ /* See if the user explicitly specified short/near/far. */
+ switch (insn_operands[jinfo->operands_index+0].targetmod) {
+ case OPTM_Short:
+ jmp->op_sel = JMP_SHORT_FORCED;
+ break;
+ case OPTM_Near:
+ jmp->op_sel = JMP_NEAR_FORCED;
+ break;
+ default:
+ jmp->op_sel = JMP_NONE;
+ }
+
+ /* Check for address size setting in second operand, if present */
+ if (jinfo->num_operands > 1 &&
+ insn_operands[jinfo->operands_index+1].action == OPA_AdSizeR)
+ jmp->common.addrsize = (unsigned char)
+ size_lookup[insn_operands[jinfo->operands_index+1].size];
+
+ /* Check for address size override */
+ for (i=0; i<NELEMS(jinfo->modifiers); i++) {
+ if (jinfo->modifiers[i] == MOD_AdSizeR)
+ jmp->common.addrsize = mod_data[i];
+ }
+
+ /* Scan through other infos for this insn looking for short/near versions.
+ * Needs to match opersize and number of operands, also be within CPU.
+ */
+ jmp->shortop.len = 0;
+ jmp->nearop.len = 0;
+ for (; num_info>0 && (jmp->shortop.len == 0 || jmp->nearop.len == 0);
+ num_info--, info++) {
+ /* Match CPU */
+ if (mode_bits != 64 && (info->misc_flags & ONLY_64))
+ continue;
+ if (mode_bits == 64 && (info->misc_flags & NOT_64))
+ continue;
+
+ if (!BitVector_bit_test(id_insn->cpu_enabled, info->cpu0) ||
+ !BitVector_bit_test(id_insn->cpu_enabled, info->cpu1) ||
+ !BitVector_bit_test(id_insn->cpu_enabled, info->cpu2))
+ continue;
+
+ if (info->num_operands == 0)
+ continue;
+
+ if (insn_operands[info->operands_index+0].action != OPA_JmpRel)
+ continue;
+
+ if (info->opersize != jmp->common.opersize)
+ continue;
+
+ switch (insn_operands[info->operands_index+0].targetmod) {
+ case OPTM_Short:
+ x86_finalize_opcode(&jmp->shortop, info);
+ for (i=0; i<NELEMS(info->modifiers); i++) {
+ if (info->modifiers[i] == MOD_Op0Add)
+ jmp->shortop.opcode[0] += mod_data[i];
+ }
+ break;
+ case OPTM_Near:
+ x86_finalize_opcode(&jmp->nearop, info);
+ for (i=0; i<NELEMS(info->modifiers); i++) {
+ if (info->modifiers[i] == MOD_Op1Add)
+ jmp->nearop.opcode[1] += mod_data[i];
+ }
+ break;
+ }
+ }
+
+ if ((jmp->op_sel == JMP_SHORT_FORCED) && (jmp->shortop.len == 0))
+ yasm_error_set(YASM_ERROR_TYPE,
+ N_("no SHORT form of that jump instruction exists"));
+ if ((jmp->op_sel == JMP_NEAR_FORCED) && (jmp->nearop.len == 0))
+ yasm_error_set(YASM_ERROR_TYPE,
+ N_("no NEAR form of that jump instruction exists"));
+
+ if (jmp->op_sel == JMP_NONE) {
+ if (jmp->nearop.len == 0)
+ jmp->op_sel = JMP_SHORT_FORCED;
+ if (jmp->shortop.len == 0)
+ jmp->op_sel = JMP_NEAR_FORCED;
+ }
+
+ yasm_x86__bc_apply_prefixes((x86_common *)jmp, NULL,
+ jinfo->def_opersize_64,
+ id_insn->insn.num_prefixes,
+ id_insn->insn.prefixes);
+
+ x86_id_insn_clear_operands(id_insn);
+
+ /* Transform the bytecode */
+ yasm_x86__bc_transform_jmp(bc, jmp);
+}
+
+static const x86_insn_info *
+x86_find_match(x86_id_insn *id_insn, yasm_insn_operand **ops,
+ yasm_insn_operand **rev_ops, const unsigned int *size_lookup,
+ int bypass)
+{
+ const x86_insn_info *info = id_insn->group;
+ unsigned int num_info = id_insn->num_info;
+ unsigned int suffix = id_insn->suffix;
+ unsigned int mode_bits = id_insn->mode_bits;
+ int found = 0;
+
+ /* Just do a simple linear search through the info array for a match.
+ * First match wins.
+ */
+ for (; num_info>0 && !found; num_info--, info++) {
+ yasm_insn_operand *op, **use_ops;
+ const x86_info_operand *info_ops =
+ &insn_operands[info->operands_index];
+ unsigned int gas_flags = info->gas_flags;
+ unsigned int misc_flags = info->misc_flags;
+ unsigned int size;
+ int mismatch = 0;
+ unsigned int i;
+
+ /* Match CPU */
+ if (mode_bits != 64 && (misc_flags & ONLY_64))
+ continue;
+ if (mode_bits == 64 && (misc_flags & NOT_64))
+ continue;
+
+ if (bypass != 8 &&
+ (!BitVector_bit_test(id_insn->cpu_enabled, info->cpu0) ||
+ !BitVector_bit_test(id_insn->cpu_enabled, info->cpu1) ||
+ !BitVector_bit_test(id_insn->cpu_enabled, info->cpu2)))
+ continue;
+
+ /* Match # of operands */
+ if (id_insn->insn.num_operands != info->num_operands)
+ continue;
+
+ /* Match AVX */
+ if (!(id_insn->misc_flags & ONLY_AVX) && (misc_flags & ONLY_AVX))
+ continue;
+ if ((id_insn->misc_flags & ONLY_AVX) && (misc_flags & NOT_AVX))
+ continue;
+
+ /* Match parser mode */
+ if ((gas_flags & GAS_ONLY) && id_insn->parser != X86_PARSER_GAS)
+ continue;
+ if ((gas_flags & GAS_ILLEGAL) && id_insn->parser == X86_PARSER_GAS)
+ continue;
+
+ /* Match suffix (if required) */
+ if (id_insn->parser == X86_PARSER_GAS
+ && ((suffix & SUF_MASK) & (gas_flags & SUF_MASK)) == 0)
+ continue;
+
+ /* Use reversed operands in GAS mode if not otherwise specified */
+ use_ops = ops;
+ if (id_insn->parser == X86_PARSER_GAS && !(gas_flags & GAS_NO_REV))
+ use_ops = rev_ops;
+
+ if (id_insn->insn.num_operands == 0) {
+ found = 1; /* no operands -> must have a match here. */
+ break;
+ }
+
+ /* Match each operand type and size */
+ for (i = 0, op = use_ops[0]; op && i<info->num_operands && !mismatch;
+ op = use_ops[++i]) {
+ /* Check operand type */
+ switch (info_ops[i].type) {
+ case OPT_Imm:
+ if (op->type != YASM_INSN__OPERAND_IMM)
+ mismatch = 1;
+ break;
+ case OPT_RM:
+ if (op->type == YASM_INSN__OPERAND_MEMORY)
+ break;
+ /*@fallthrough@*/
+ case OPT_Reg:
+ if (op->type != YASM_INSN__OPERAND_REG)
+ mismatch = 1;
+ else {
+ switch ((x86_expritem_reg_size)(op->data.reg&~0xFUL)) {
+ case X86_REG8:
+ case X86_REG8X:
+ case X86_REG16:
+ case X86_REG32:
+ case X86_REG64:
+ case X86_FPUREG:
+ break;
+ default:
+ mismatch = 1;
+ break;
+ }
+ }
+ break;
+ case OPT_Mem:
+ if (op->type != YASM_INSN__OPERAND_MEMORY)
+ mismatch = 1;
+ break;
+ case OPT_SIMDRM:
+ if (op->type == YASM_INSN__OPERAND_MEMORY)
+ break;
+ /*@fallthrough@*/
+ case OPT_SIMDReg:
+ if (op->type != YASM_INSN__OPERAND_REG)
+ mismatch = 1;
+ else {
+ switch ((x86_expritem_reg_size)(op->data.reg&~0xFUL)) {
+ case X86_MMXREG:
+ case X86_XMMREG:
+ case X86_YMMREG:
+ break;
+ default:
+ mismatch = 1;
+ break;
+ }
+ }
+ break;
+ case OPT_SegReg:
+ if (op->type != YASM_INSN__OPERAND_SEGREG)
+ mismatch = 1;
+ break;
+ case OPT_CRReg:
+ if (op->type != YASM_INSN__OPERAND_REG ||
+ (op->data.reg & ~0xFUL) != X86_CRREG)
+ mismatch = 1;
+ break;
+ case OPT_DRReg:
+ if (op->type != YASM_INSN__OPERAND_REG ||
+ (op->data.reg & ~0xFUL) != X86_DRREG)
+ mismatch = 1;
+ break;
+ case OPT_TRReg:
+ if (op->type != YASM_INSN__OPERAND_REG ||
+ (op->data.reg & ~0xFUL) != X86_TRREG)
+ mismatch = 1;
+ break;
+ case OPT_ST0:
+ if (op->type != YASM_INSN__OPERAND_REG ||
+ op->data.reg != X86_FPUREG)
+ mismatch = 1;
+ break;
+ case OPT_Areg:
+ if (op->type != YASM_INSN__OPERAND_REG ||
+ (info_ops[i].size == OPS_8 &&
+ op->data.reg != (X86_REG8 | 0) &&
+ op->data.reg != (X86_REG8X | 0)) ||
+ (info_ops[i].size == OPS_16 &&
+ op->data.reg != (X86_REG16 | 0)) ||
+ (info_ops[i].size == OPS_32 &&
+ op->data.reg != (X86_REG32 | 0)) ||
+ (info_ops[i].size == OPS_64 &&
+ op->data.reg != (X86_REG64 | 0)))
+ mismatch = 1;
+ break;
+ case OPT_Creg:
+ if (op->type != YASM_INSN__OPERAND_REG ||
+ (info_ops[i].size == OPS_8 &&
+ op->data.reg != (X86_REG8 | 1) &&
+ op->data.reg != (X86_REG8X | 1)) ||
+ (info_ops[i].size == OPS_16 &&
+ op->data.reg != (X86_REG16 | 1)) ||
+ (info_ops[i].size == OPS_32 &&
+ op->data.reg != (X86_REG32 | 1)) ||
+ (info_ops[i].size == OPS_64 &&
+ op->data.reg != (X86_REG64 | 1)))
+ mismatch = 1;
+ break;
+ case OPT_Dreg:
+ if (op->type != YASM_INSN__OPERAND_REG ||
+ (info_ops[i].size == OPS_8 &&
+ op->data.reg != (X86_REG8 | 2) &&
+ op->data.reg != (X86_REG8X | 2)) ||
+ (info_ops[i].size == OPS_16 &&
+ op->data.reg != (X86_REG16 | 2)) ||
+ (info_ops[i].size == OPS_32 &&
+ op->data.reg != (X86_REG32 | 2)) ||
+ (info_ops[i].size == OPS_64 &&
+ op->data.reg != (X86_REG64 | 2)))
+ mismatch = 1;
+ break;
+ case OPT_CS:
+ if (op->type != YASM_INSN__OPERAND_SEGREG ||
+ (op->data.reg & 0xF) != 1)
+ mismatch = 1;
+ break;
+ case OPT_DS:
+ if (op->type != YASM_INSN__OPERAND_SEGREG ||
+ (op->data.reg & 0xF) != 3)
+ mismatch = 1;
+ break;
+ case OPT_ES:
+ if (op->type != YASM_INSN__OPERAND_SEGREG ||
+ (op->data.reg & 0xF) != 0)
+ mismatch = 1;
+ break;
+ case OPT_FS:
+ if (op->type != YASM_INSN__OPERAND_SEGREG ||
+ (op->data.reg & 0xF) != 4)
+ mismatch = 1;
+ break;
+ case OPT_GS:
+ if (op->type != YASM_INSN__OPERAND_SEGREG ||
+ (op->data.reg & 0xF) != 5)
+ mismatch = 1;
+ break;
+ case OPT_SS:
+ if (op->type != YASM_INSN__OPERAND_SEGREG ||
+ (op->data.reg & 0xF) != 2)
+ mismatch = 1;
+ break;
+ case OPT_CR4:
+ if (op->type != YASM_INSN__OPERAND_REG ||
+ op->data.reg != (X86_CRREG | 4))
+ mismatch = 1;
+ break;
+ case OPT_MemOffs:
+ if (op->type != YASM_INSN__OPERAND_MEMORY ||
+ yasm_expr__contains(op->data.ea->disp.abs,
+ YASM_EXPR_REG) ||
+ op->data.ea->pc_rel ||
+ (!op->data.ea->not_pc_rel && id_insn->default_rel &&
+ op->data.ea->disp.size != 64))
+ mismatch = 1;
+ break;
+ case OPT_Imm1:
+ if (op->type == YASM_INSN__OPERAND_IMM) {
+ const yasm_intnum *num;
+ num = yasm_expr_get_intnum(&op->data.val, 0);
+ if (!num || !yasm_intnum_is_pos1(num))
+ mismatch = 1;
+ } else
+ mismatch = 1;
+ break;
+ case OPT_ImmNotSegOff:
+ if (op->type != YASM_INSN__OPERAND_IMM ||
+ op->targetmod != 0 || op->seg)
+ mismatch = 1;
+ break;
+ case OPT_XMM0:
+ if (op->type != YASM_INSN__OPERAND_REG ||
+ op->data.reg != X86_XMMREG)
+ mismatch = 1;
+ break;
+ case OPT_MemrAX: {
+ const uintptr_t *regp;
+ if (op->type != YASM_INSN__OPERAND_MEMORY ||
+ !(regp = yasm_expr_get_reg(&op->data.ea->disp.abs, 0)) ||
+ (*regp != (X86_REG16 | 0) &&
+ *regp != (X86_REG32 | 0) &&
+ *regp != (X86_REG64 | 0)))
+ mismatch = 1;
+ break;
+ }
+ case OPT_MemEAX: {
+ const uintptr_t *regp;
+ if (op->type != YASM_INSN__OPERAND_MEMORY ||
+ !(regp = yasm_expr_get_reg(&op->data.ea->disp.abs, 0)) ||
+ *regp != (X86_REG32 | 0))
+ mismatch = 1;
+ break;
+ }
+ case OPT_MemXMMIndex:
+ if (op->type != YASM_INSN__OPERAND_MEMORY ||
+ !x86_expr_contains_simd(op->data.ea->disp.abs, 0))
+ mismatch = 1;
+ break;
+ case OPT_MemYMMIndex:
+ if (op->type != YASM_INSN__OPERAND_MEMORY ||
+ !x86_expr_contains_simd(op->data.ea->disp.abs, 1))
+ mismatch = 1;
+ break;
+ default:
+ yasm_internal_error(N_("invalid operand type"));
+ }
+
+ if (mismatch)
+ break;
+
+ /* Check operand size */
+ size = size_lookup[info_ops[i].size];
+ if (id_insn->parser == X86_PARSER_GAS) {
+ /* Require relaxed operands for GAS mode (don't allow
+ * per-operand sizing).
+ */
+ if (op->type == YASM_INSN__OPERAND_REG && op->size == 0) {
+ /* Register size must exactly match */
+ if (yasm_x86__get_reg_size(op->data.reg) != size)
+ mismatch = 1;
+ } else if ((info_ops[i].type == OPT_Imm
+ || info_ops[i].type == OPT_ImmNotSegOff
+ || info_ops[i].type == OPT_Imm1)
+ && !info_ops[i].relaxed
+ && info_ops[i].action != OPA_JmpRel)
+ mismatch = 1;
+ } else {
+ if (op->type == YASM_INSN__OPERAND_REG && op->size == 0) {
+ /* Register size must exactly match */
+ if ((bypass == 4 && i == 0) || (bypass == 5 && i == 1)
+ || (bypass == 6 && i == 2))
+ ;
+ else if (yasm_x86__get_reg_size(op->data.reg) != size)
+ mismatch = 1;
+ } else {
+ if ((bypass == 1 && i == 0) || (bypass == 2 && i == 1)
+ || (bypass == 3 && i == 2))
+ ;
+ else if (info_ops[i].relaxed) {
+ /* Relaxed checking */
+ if (size != 0 && op->size != size && op->size != 0)
+ mismatch = 1;
+ } else {
+ /* Strict checking */
+ if (op->size != size)
+ mismatch = 1;
+ }
+ }
+ }
+
+ if (mismatch)
+ break;
+
+ /* Check for 64-bit effective address size in NASM mode */
+ if (id_insn->parser != X86_PARSER_GAS &&
+ op->type == YASM_INSN__OPERAND_MEMORY) {
+ if (info_ops[i].eas64) {
+ if (op->data.ea->disp.size != 64)
+ mismatch = 1;
+ } else if (op->data.ea->disp.size == 64)
+ mismatch = 1;
+ }
+
+ if (mismatch)
+ break;
+
+ /* Check target modifier */
+ switch (info_ops[i].targetmod) {
+ case OPTM_None:
+ if (op->targetmod != 0)
+ mismatch = 1;
+ break;
+ case OPTM_Near:
+ if (op->targetmod != X86_NEAR)
+ mismatch = 1;
+ break;
+ case OPTM_Short:
+ if (op->targetmod != X86_SHORT)
+ mismatch = 1;
+ break;
+ case OPTM_Far:
+ if (op->targetmod != X86_FAR)
+ mismatch = 1;
+ break;
+ case OPTM_To:
+ if (op->targetmod != X86_TO)
+ mismatch = 1;
+ break;
+ default:
+ yasm_internal_error(N_("invalid target modifier type"));
+ }
+ }
+
+ if (!mismatch) {
+ found = 1;
+ break;
+ }
+ }
+
+ if (!found)
+ return NULL;
+ return info;
+}
+
+static void
+x86_match_error(x86_id_insn *id_insn, yasm_insn_operand **ops,
+ yasm_insn_operand **rev_ops, const unsigned int *size_lookup)
+{
+ const x86_insn_info *i;
+ int ni;
+ int found;
+ int bypass;
+
+ /* Check for matching # of operands */
+ found = 0;
+ for (ni=id_insn->num_info, i=id_insn->group; ni>0; ni--, i++) {
+ if (id_insn->insn.num_operands == i->num_operands) {
+ found = 1;
+ break;
+ }
+ }
+ if (!found) {
+ yasm_error_set(YASM_ERROR_TYPE, N_("invalid number of operands"));
+ return;
+ }
+
+ for (bypass=1; bypass<9; bypass++) {
+ i = x86_find_match(id_insn, ops, rev_ops, size_lookup, bypass);
+ if (i)
+ break;
+ }
+
+ switch (bypass) {
+ case 1:
+ case 4:
+ yasm_error_set(YASM_ERROR_TYPE,
+ N_("invalid size for operand %d"), 1);
+ break;
+ case 2:
+ case 5:
+ yasm_error_set(YASM_ERROR_TYPE,
+ N_("invalid size for operand %d"), 2);
+ break;
+ case 3:
+ case 6:
+ yasm_error_set(YASM_ERROR_TYPE,
+ N_("invalid size for operand %d"), 3);
+ break;
+ case 7:
+ yasm_error_set(YASM_ERROR_TYPE,
+ N_("one of source operand 1 or 3 must match dest operand"));
+ break;
+ case 8:
+ {
+ unsigned int cpu0 = i->cpu0, cpu1 = i->cpu1, cpu2 = i->cpu2;
+ yasm_error_set(YASM_ERROR_TYPE,
+ N_("requires CPU%s"),
+ cpu_find_reverse(cpu0, cpu1, cpu2));
+ break;
+ }
+ default:
+ yasm_error_set(YASM_ERROR_TYPE,
+ N_("invalid combination of opcode and operands"));
+ }
+}
+
+static void
+x86_id_insn_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc)
+{
+ x86_id_insn *id_insn = (x86_id_insn *)bc->contents;
+ x86_insn *insn;
+ const x86_insn_info *info = id_insn->group;
+ unsigned int mode_bits = id_insn->mode_bits;
+ unsigned char *mod_data = id_insn->mod_data;
+ yasm_insn_operand *op, *ops[5], *rev_ops[5];
+ /*@null@*/ yasm_expr *imm;
+ unsigned char im_len;
+ unsigned char im_sign;
+ unsigned char spare;
+ unsigned char vexdata, vexreg;
+ unsigned int i;
+ unsigned int size_lookup[] = {0, 8, 16, 32, 64, 80, 128, 256, 0};
+ unsigned long do_postop = 0;
+
+ size_lookup[OPS_BITS] = mode_bits;
+
+ yasm_insn_finalize(&id_insn->insn);
+
+ /* Build local array of operands from list, since we know we have a max
+ * of 5 operands.
+ */
+ if (id_insn->insn.num_operands > 5) {
+ yasm_error_set(YASM_ERROR_TYPE, N_("too many operands"));
+ return;
+ }
+ ops[0] = ops[1] = ops[2] = ops[3] = ops[4] = NULL;
+ for (i = 0, op = yasm_insn_ops_first(&id_insn->insn);
+ op && i < id_insn->insn.num_operands;
+ op = yasm_insn_op_next(op), i++)
+ ops[i] = op;
+
+ /* If we're running in GAS mode, build a reverse array of the operands
+ * as most GAS instructions have reversed operands from Intel style.
+ */
+ if (id_insn->parser == X86_PARSER_GAS) {
+ rev_ops[0] = rev_ops[1] = rev_ops[2] = rev_ops[3] = rev_ops[4] = NULL;
+ for (i = id_insn->insn.num_operands-1,
+ op = yasm_insn_ops_first(&id_insn->insn);
+ op; op = yasm_insn_op_next(op), i--)
+ rev_ops[i] = op;
+ }
+
+ /* If we're running in GAS mode, look at the first insn_info to see
+ * if this is a relative jump (OPA_JmpRel). If so, run through the
+ * operands and adjust for dereferences / lack thereof.
+ */
+ if (id_insn->parser == X86_PARSER_GAS
+ && insn_operands[info->operands_index+0].action == OPA_JmpRel) {
+ for (i = 0, op = ops[0]; op; op = ops[++i]) {
+ if (!op->deref && (op->type == YASM_INSN__OPERAND_REG
+ || (op->type == YASM_INSN__OPERAND_MEMORY
+ && op->data.ea->strong)))
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("indirect call without `*'"));
+ if (!op->deref && op->type == YASM_INSN__OPERAND_MEMORY
+ && !op->data.ea->strong) {
+ /* Memory that is not dereferenced, and not strong, is
+ * actually an immediate for the purposes of relative jumps.
+ */
+ if (op->data.ea->segreg != 0)
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("skipping prefixes on this instruction"));
+ imm = op->data.ea->disp.abs;
+ op->data.ea->disp.abs = NULL;
+ yasm_x86__ea_destroy(op->data.ea);
+ op->type = YASM_INSN__OPERAND_IMM;
+ op->data.val = imm;
+ }
+ }
+ }
+
+ info = x86_find_match(id_insn, ops, rev_ops, size_lookup, 0);
+
+ if (!info) {
+ /* Didn't find a match */
+ x86_match_error(id_insn, ops, rev_ops, size_lookup);
+ return;
+ }
+
+ if (id_insn->insn.num_operands > 0) {
+ switch (insn_operands[info->operands_index+0].action) {
+ case OPA_JmpRel:
+ /* Shortcut to JmpRel */
+ x86_finalize_jmp(bc, prev_bc, info);
+ return;
+ case OPA_JmpFar:
+ /* Shortcut to JmpFar */
+ x86_finalize_jmpfar(bc, prev_bc, info);
+ return;
+ }
+ }
+
+ /* Copy what we can from info */
+ insn = yasm_xmalloc(sizeof(x86_insn));
+ x86_finalize_common(&insn->common, info, mode_bits);
+ x86_finalize_opcode(&insn->opcode, info);
+ insn->x86_ea = NULL;
+ imm = NULL;
+ insn->def_opersize_64 = info->def_opersize_64;
+ insn->special_prefix = info->special_prefix;
+ spare = info->spare;
+ vexdata = 0;
+ vexreg = 0;
+ im_len = 0;
+ im_sign = 0;
+ insn->postop = X86_POSTOP_NONE;
+ insn->rex = 0;
+
+ /* Move VEX/XOP data (stored in special prefix) to separate location to
+ * allow overriding of special prefix by modifiers.
+ */
+ if ((insn->special_prefix & 0xF0) == 0xC0 ||
+ (insn->special_prefix & 0xF0) == 0x80) {
+ vexdata = insn->special_prefix;
+ insn->special_prefix = 0;
+ }
+
+ /* Apply modifiers */
+ for (i=0; i<NELEMS(info->modifiers); i++) {
+ switch (info->modifiers[i]) {
+ case MOD_Gap:
+ break;
+ case MOD_PreAdd:
+ insn->special_prefix += mod_data[i];
+ break;
+ case MOD_Op0Add:
+ insn->opcode.opcode[0] += mod_data[i];
+ break;
+ case MOD_Op1Add:
+ insn->opcode.opcode[1] += mod_data[i];
+ break;
+ case MOD_Op2Add:
+ insn->opcode.opcode[2] += mod_data[i];
+ break;
+ case MOD_SpAdd:
+ spare += mod_data[i];
+ break;
+ case MOD_OpSizeR:
+ insn->common.opersize = mod_data[i];
+ break;
+ case MOD_Imm8:
+ imm = yasm_expr_create_ident(yasm_expr_int(
+ yasm_intnum_create_uint(mod_data[i])), bc->line);
+ im_len = 8;
+ break;
+ case MOD_DOpS64R:
+ insn->def_opersize_64 = mod_data[i];
+ break;
+ case MOD_Op1AddSp:
+ insn->opcode.opcode[1] += mod_data[i]<<3;
+ break;
+ case MOD_SetVEX:
+ vexdata = mod_data[i];
+ break;
+ default:
+ break;
+ }
+ }
+
+ /* In 64-bit mode, if opersize is 64 and default is not 64,
+ * force REX byte.
+ */
+ if (mode_bits == 64 && insn->common.opersize == 64 &&
+ insn->def_opersize_64 != 64)
+ insn->rex = 0x48;
+
+ /* Go through operands and assign */
+ if (id_insn->insn.num_operands > 0) {
+ yasm_insn_operand **use_ops = ops;
+ const x86_info_operand *info_ops =
+ &insn_operands[info->operands_index];
+
+ /* Use reversed operands in GAS mode if not otherwise specified */
+ if (id_insn->parser == X86_PARSER_GAS
+ && !(info->gas_flags & GAS_NO_REV))
+ use_ops = rev_ops;
+
+ for (i = 0, op = use_ops[0]; op && i<info->num_operands;
+ op = use_ops[++i]) {
+ switch (info_ops[i].action) {
+ case OPA_None:
+ /* Throw away the operand contents */
+ switch (op->type) {
+ case YASM_INSN__OPERAND_REG:
+ case YASM_INSN__OPERAND_SEGREG:
+ break;
+ case YASM_INSN__OPERAND_MEMORY:
+ yasm_x86__ea_destroy(op->data.ea);
+ break;
+ case YASM_INSN__OPERAND_IMM:
+ yasm_expr_destroy(op->data.val);
+ break;
+ }
+ break;
+ case OPA_EA:
+ switch (op->type) {
+ case YASM_INSN__OPERAND_REG:
+ insn->x86_ea =
+ yasm_x86__ea_create_reg(insn->x86_ea,
+ (unsigned long)op->data.reg, &insn->rex,
+ mode_bits);
+ break;
+ case YASM_INSN__OPERAND_SEGREG:
+ yasm_internal_error(
+ N_("invalid operand conversion"));
+ case YASM_INSN__OPERAND_MEMORY:
+ if (op->seg)
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("invalid segment in effective address"));
+ insn->x86_ea = (x86_effaddr *)op->data.ea;
+ if (info_ops[i].type == OPT_MemOffs)
+ /* Special-case for MOV MemOffs instruction */
+ yasm_x86__ea_set_disponly(insn->x86_ea);
+ else if (info_ops[i].type == OPT_MemXMMIndex) {
+ /* Remember VSIB mode */
+ insn->x86_ea->vsib_mode = 1;
+ insn->x86_ea->need_sib = 1;
+ } else if (info_ops[i].type == OPT_MemYMMIndex) {
+ /* Remember VSIB mode */
+ insn->x86_ea->vsib_mode = 2;
+ insn->x86_ea->need_sib = 1;
+ } else if (id_insn->default_rel &&
+ !op->data.ea->not_pc_rel &&
+ op->data.ea->segreg != 0x6404 &&
+ op->data.ea->segreg != 0x6505 &&
+ !yasm_expr__contains(
+ op->data.ea->disp.abs, YASM_EXPR_REG))
+ /* Enable default PC-rel if no regs and segreg
+ * is not FS or GS.
+ */
+ insn->x86_ea->ea.pc_rel = 1;
+ break;
+ case YASM_INSN__OPERAND_IMM:
+ insn->x86_ea =
+ yasm_x86__ea_create_imm(insn->x86_ea,
+ op->data.val,
+ size_lookup[info_ops[i].size]);
+ break;
+ }
+ break;
+ case OPA_EAVEX:
+ if (op->type != YASM_INSN__OPERAND_REG)
+ yasm_internal_error(N_("invalid operand conversion"));
+ insn->x86_ea =
+ yasm_x86__ea_create_reg(insn->x86_ea,
+ (unsigned long)op->data.reg, &insn->rex, mode_bits);
+ vexreg = op->data.reg & 0xF;
+ break;
+ case OPA_Imm:
+ if (op->seg)
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("immediate does not support segment"));
+ if (op->type == YASM_INSN__OPERAND_IMM) {
+ imm = op->data.val;
+ im_len = size_lookup[info_ops[i].size];
+ } else
+ yasm_internal_error(N_("invalid operand conversion"));
+ break;
+ case OPA_SImm:
+ if (op->seg)
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("immediate does not support segment"));
+ if (op->type == YASM_INSN__OPERAND_IMM) {
+ imm = op->data.val;
+ im_len = size_lookup[info_ops[i].size];
+ im_sign = 1;
+ } else
+ yasm_internal_error(N_("invalid operand conversion"));
+ break;
+ case OPA_Spare:
+ if (op->type == YASM_INSN__OPERAND_SEGREG)
+ spare = (unsigned char)(op->data.reg&7);
+ else if (op->type == YASM_INSN__OPERAND_REG) {
+ if (yasm_x86__set_rex_from_reg(&insn->rex, &spare,
+ op->data.reg, mode_bits, X86_REX_R))
+ return;
+ } else
+ yasm_internal_error(N_("invalid operand conversion"));
+ break;
+ case OPA_SpareVEX:
+ if (op->type != YASM_INSN__OPERAND_REG)
+ yasm_internal_error(N_("invalid operand conversion"));
+ if (yasm_x86__set_rex_from_reg(&insn->rex, &spare,
+ op->data.reg, mode_bits, X86_REX_R))
+ return;
+ vexreg = op->data.reg & 0xF;
+ break;
+ case OPA_Op0Add:
+ if (op->type == YASM_INSN__OPERAND_REG) {
+ unsigned char opadd;
+ if (yasm_x86__set_rex_from_reg(&insn->rex, &opadd,
+ op->data.reg, mode_bits, X86_REX_B))
+ return;
+ insn->opcode.opcode[0] += opadd;
+ } else
+ yasm_internal_error(N_("invalid operand conversion"));
+ break;
+ case OPA_Op1Add:
+ if (op->type == YASM_INSN__OPERAND_REG) {
+ unsigned char opadd;
+ if (yasm_x86__set_rex_from_reg(&insn->rex, &opadd,
+ op->data.reg, mode_bits, X86_REX_B))
+ return;
+ insn->opcode.opcode[1] += opadd;
+ } else
+ yasm_internal_error(N_("invalid operand conversion"));
+ break;
+ case OPA_SpareEA:
+ if (op->type == YASM_INSN__OPERAND_REG) {
+ insn->x86_ea =
+ yasm_x86__ea_create_reg(insn->x86_ea,
+ (unsigned long)op->data.reg, &insn->rex,
+ mode_bits);
+ if (!insn->x86_ea ||
+ yasm_x86__set_rex_from_reg(&insn->rex, &spare,
+ op->data.reg, mode_bits, X86_REX_R)) {
+ if (insn->x86_ea)
+ yasm_xfree(insn->x86_ea);
+ yasm_xfree(insn);
+ return;
+ }
+ } else
+ yasm_internal_error(N_("invalid operand conversion"));
+ break;
+ case OPA_AdSizeEA: {
+ const uintptr_t *regp = NULL;
+ /* Only implement this for OPT_MemrAX and OPT_MemEAX
+ * for now.
+ */
+ if (op->type != YASM_INSN__OPERAND_MEMORY ||
+ !(regp = yasm_expr_get_reg(&op->data.ea->disp.abs, 0)))
+ yasm_internal_error(N_("invalid operand conversion"));
+ /* 64-bit mode does not allow 16-bit addresses */
+ if (mode_bits == 64 && *regp == (X86_REG16 | 0))
+ yasm_error_set(YASM_ERROR_TYPE,
+ N_("16-bit addresses not supported in 64-bit mode"));
+ else if (*regp == (X86_REG16 | 0))
+ insn->common.addrsize = 16;
+ else if (*regp == (X86_REG32 | 0))
+ insn->common.addrsize = 32;
+ else if (mode_bits == 64 && *regp == (X86_REG64 | 0))
+ insn->common.addrsize = 64;
+ else
+ yasm_error_set(YASM_ERROR_TYPE,
+ N_("unsupported address size"));
+ yasm_x86__ea_destroy(op->data.ea);
+ break;
+ }
+ case OPA_VEX:
+ if (op->type != YASM_INSN__OPERAND_REG)
+ yasm_internal_error(N_("invalid operand conversion"));
+ vexreg = op->data.reg & 0xF;
+ break;
+ case OPA_VEXImmSrc:
+ if (op->type != YASM_INSN__OPERAND_REG)
+ yasm_internal_error(N_("invalid operand conversion"));
+
+ if (!imm) {
+ imm = yasm_expr_create_ident(
+ yasm_expr_int(
+ yasm_intnum_create_uint((op->data.reg << 4)
+ & 0xF0)),
+ bc->line);
+ } else {
+ imm = yasm_expr_create(
+ YASM_EXPR_OR,
+ yasm_expr_expr(yasm_expr_create(
+ YASM_EXPR_AND,
+ yasm_expr_expr(imm),
+ yasm_expr_int(yasm_intnum_create_uint(0x0F)),
+ bc->line)),
+ yasm_expr_int(
+ yasm_intnum_create_uint((op->data.reg << 4)
+ & 0xF0)),
+ bc->line);
+ }
+ im_len = 8;
+ break;
+ case OPA_VEXImm:
+ if (op->type != YASM_INSN__OPERAND_IMM)
+ yasm_internal_error(N_("invalid operand conversion"));
+
+ if (!imm)
+ imm = op->data.val;
+ else {
+ imm = yasm_expr_create(
+ YASM_EXPR_OR,
+ yasm_expr_expr(yasm_expr_create(
+ YASM_EXPR_AND,
+ yasm_expr_expr(op->data.val),
+ yasm_expr_int(yasm_intnum_create_uint(0x0F)),
+ bc->line)),
+ yasm_expr_expr(yasm_expr_create(
+ YASM_EXPR_AND,
+ yasm_expr_expr(imm),
+ yasm_expr_int(yasm_intnum_create_uint(0xF0)),
+ bc->line)),
+ bc->line);
+ }
+ im_len = 8;
+ break;
+ default:
+ yasm_internal_error(N_("unknown operand action"));
+ }
+
+ if (info_ops[i].size == OPS_BITS)
+ insn->common.opersize = (unsigned char)mode_bits;
+
+ switch (info_ops[i].post_action) {
+ case OPAP_None:
+ break;
+ case OPAP_SImm8:
+ /* Check operand strictness; if strict and non-8-bit,
+ * pre-emptively expand to full size.
+ * For unspecified size case, still optimize.
+ */
+ if (!(id_insn->force_strict || op->strict)
+ || op->size == 0)
+ insn->postop = X86_POSTOP_SIGNEXT_IMM8;
+ else if (op->size != 8) {
+ insn->opcode.opcode[0] =
+ insn->opcode.opcode[insn->opcode.len];
+ insn->opcode.len = 1;
+ }
+ break;
+ case OPAP_ShortMov:
+ do_postop = OPAP_ShortMov;
+ break;
+ case OPAP_A16:
+ insn->postop = X86_POSTOP_ADDRESS16;
+ break;
+ case OPAP_SImm32Avail:
+ do_postop = OPAP_SImm32Avail;
+ break;
+ default:
+ yasm_internal_error(
+ N_("unknown operand postponed action"));
+ }
+ }
+ }
+
+ if (insn->x86_ea) {
+ yasm_x86__ea_init(insn->x86_ea, spare, prev_bc);
+ for (i=0; i<id_insn->insn.num_segregs; i++)
+ yasm_ea_set_segreg(&insn->x86_ea->ea, id_insn->insn.segregs[i]);
+ } else if (id_insn->insn.num_segregs > 0 && insn->special_prefix == 0) {
+ if (id_insn->insn.num_segregs > 1)
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("multiple segment overrides, using leftmost"));
+ insn->special_prefix = (unsigned char)
+ (id_insn->insn.segregs[id_insn->insn.num_segregs-1]>>8);
+ } else if (id_insn->insn.num_segregs > 0)
+ yasm_internal_error(N_("unhandled segment prefix"));
+
+ if (imm) {
+ insn->imm = yasm_xmalloc(sizeof(yasm_value));
+ if (yasm_value_finalize_expr(insn->imm, imm, prev_bc, im_len))
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("immediate expression too complex"));
+ insn->imm->sign = im_sign;
+ } else
+ insn->imm = NULL;
+
+ yasm_x86__bc_apply_prefixes((x86_common *)insn, &insn->rex,
+ insn->def_opersize_64,
+ id_insn->insn.num_prefixes,
+ id_insn->insn.prefixes);
+
+ if (insn->postop == X86_POSTOP_ADDRESS16 && insn->common.addrsize) {
+ yasm_warn_set(YASM_WARN_GENERAL, N_("address size override ignored"));
+ insn->common.addrsize = 0;
+ }
+
+ /* Handle non-span-dependent post-ops here */
+ switch (do_postop) {
+ case OPAP_ShortMov:
+ /* Long (modrm+sib) mov instructions in amd64 can be optimized into
+ * short mov instructions if a 32-bit address override is applied in
+ * 64-bit mode to an EA of just an offset (no registers) and the
+ * target register is al/ax/eax/rax.
+ *
+ * We don't want to do this if we're in default rel mode.
+ */
+ if (!id_insn->default_rel &&
+ insn->common.mode_bits == 64 &&
+ insn->common.addrsize == 32 &&
+ (!insn->x86_ea->ea.disp.abs ||
+ !yasm_expr__contains(insn->x86_ea->ea.disp.abs,
+ YASM_EXPR_REG))) {
+ yasm_x86__ea_set_disponly(insn->x86_ea);
+ /* Make the short form permanent. */
+ insn->opcode.opcode[0] = insn->opcode.opcode[1];
+ }
+ insn->opcode.opcode[1] = 0; /* avoid possible confusion */
+ break;
+ case OPAP_SImm32Avail:
+ /* Used for 64-bit mov immediate, which can take a sign-extended
+ * imm32 as well as imm64 values. The imm32 form is put in the
+ * second byte of the opcode and its ModRM byte is put in the third
+ * byte of the opcode.
+ */
+ if (!insn->imm->abs ||
+ (yasm_expr_get_intnum(&insn->imm->abs, 0) &&
+ yasm_intnum_check_size(
+ yasm_expr_get_intnum(&insn->imm->abs, 0), 32, 0, 1))) {
+ /* Throwaway REX byte */
+ unsigned char rex_temp = 0;
+
+ /* Build ModRM EA - CAUTION: this depends on
+ * opcode 0 being a mov instruction!
+ */
+ insn->x86_ea = yasm_x86__ea_create_reg(insn->x86_ea,
+ (unsigned long)insn->opcode.opcode[0]-0xB8, &rex_temp, 64);
+
+ /* Make the imm32s form permanent. */
+ insn->opcode.opcode[0] = insn->opcode.opcode[1];
+ insn->imm->size = 32;
+ }
+ insn->opcode.opcode[1] = 0; /* avoid possible confusion */
+ break;
+ default:
+ break;
+ }
+
+ /* Convert to VEX/XOP prefixes if requested.
+ * To save space in the insn structure, the VEX/XOP prefix is written into
+ * special_prefix and the first 2 bytes of the instruction are set to
+ * the second two VEX/XOP bytes. During calc_len() it may be shortened to
+ * one VEX byte (this can only be done after knowledge of REX value); this
+ * further optimization is not possible for XOP.
+ */
+ if (vexdata) {
+ int xop = ((vexdata & 0xF0) == 0x80);
+ unsigned char vex1 = 0xE0; /* R=X=B=1, mmmmm=0 */
+ unsigned char vex2;
+
+ if (xop) {
+ /* Look at the first bytes of the opcode for the XOP mmmmm field.
+ * Leave R=X=B=1 for now.
+ */
+ if (insn->opcode.opcode[0] != 0x08 &&
+ insn->opcode.opcode[0] != 0x09 &&
+ insn->opcode.opcode[0] != 0x0A)
+ yasm_internal_error(N_("first opcode byte of XOP must be 0x08, 0x09, or 0x0A"));
+ vex1 |= insn->opcode.opcode[0];
+ /* Move opcode byte back one byte to make room for XOP prefix. */
+ insn->opcode.opcode[2] = insn->opcode.opcode[1];
+ } else {
+ /* Look at the first bytes of the opcode to see what leading bytes
+ * to encode in the VEX mmmmm field. Leave R=X=B=1 for now.
+ */
+ if (insn->opcode.opcode[0] != 0x0F)
+ yasm_internal_error(N_("first opcode byte of VEX must be 0x0F"));
+
+ if (insn->opcode.opcode[1] == 0x38)
+ vex1 |= 0x02; /* implied 0x0F 0x38 */
+ else if (insn->opcode.opcode[1] == 0x3A)
+ vex1 |= 0x03; /* implied 0x0F 0x3A */
+ else {
+ /* Originally a 0F-only opcode; move opcode byte back one
+ * position to make room for VEX prefix.
+ */
+ insn->opcode.opcode[2] = insn->opcode.opcode[1];
+ vex1 |= 0x01; /* implied 0x0F */
+ }
+ }
+
+ /* Check for update of special prefix by modifiers */
+ if (insn->special_prefix != 0) {
+ vexdata &= ~0x03;
+ switch (insn->special_prefix) {
+ case 0x66:
+ vexdata |= 0x01;
+ break;
+ case 0xF3:
+ vexdata |= 0x02;
+ break;
+ case 0xF2:
+ vexdata |= 0x03;
+ break;
+ default:
+ yasm_internal_error(N_("unrecognized special prefix"));
+ }
+ }
+
+ /* 2nd VEX byte is WvvvvLpp.
+ * W, L, pp come from vexdata
+ * vvvv comes from 1s complement of vexreg
+ */
+ vex2 = (((vexdata & 0x8) << 4) | /* W */
+ ((15 - (vexreg & 0xF)) << 3) | /* vvvv */
+ (vexdata & 0x7)); /* Lpp */
+
+ /* Save to special_prefix and opcode */
+ insn->special_prefix = xop ? 0x8F : 0xC4; /* VEX/XOP prefix */
+ insn->opcode.opcode[0] = vex1;
+ insn->opcode.opcode[1] = vex2;
+ insn->opcode.len = 3; /* two prefix bytes and 1 opcode byte */
+ }
+
+ x86_id_insn_clear_operands(id_insn);
+
+ /* Transform the bytecode */
+ yasm_x86__bc_transform_insn(bc, insn);
+}
+
+/* Static parse data structure for instructions */
+typedef struct insnprefix_parse_data {
+ const char *name;
+
+ /* instruction parse group - NULL if prefix */
+ /*@null@*/ const x86_insn_info *group;
+
+ /* For instruction, number of elements in group.
+ * For prefix, prefix type shifted right by 8.
+ */
+ unsigned int num_info:8;
+
+ /* For instruction, GAS suffix flags.
+ * For prefix, prefix value.
+ */
+ unsigned int flags:8;
+
+ /* Instruction modifier data. */
+ unsigned int mod_data0:8;
+ unsigned int mod_data1:8;
+ unsigned int mod_data2:8;
+
+ /* Tests against BITS==64 and AVX */
+ unsigned int misc_flags:6;
+
+ /* CPU flags */
+ unsigned int cpu0:6;
+ unsigned int cpu1:6;
+ unsigned int cpu2:6;
+} insnprefix_parse_data;
+
+/* Pull in all parse data */
+#include "x86insn_nasm.c"
+#include "x86insn_gas.c"
+
+static const char *
+cpu_find_reverse(unsigned int cpu0, unsigned int cpu1, unsigned int cpu2)
+{
+ static char cpuname[200];
+ wordptr cpu = BitVector_Create(128, TRUE);
+
+ if (cpu0 != CPU_Any)
+ BitVector_Bit_On(cpu, cpu0);
+ if (cpu1 != CPU_Any)
+ BitVector_Bit_On(cpu, cpu1);
+ if (cpu2 != CPU_Any)
+ BitVector_Bit_On(cpu, cpu2);
+
+ cpuname[0] = '\0';
+
+ if (BitVector_bit_test(cpu, CPU_Prot))
+ strcat(cpuname, " Protected");
+ if (BitVector_bit_test(cpu, CPU_Undoc))
+ strcat(cpuname, " Undocumented");
+ if (BitVector_bit_test(cpu, CPU_Obs))
+ strcat(cpuname, " Obsolete");
+ if (BitVector_bit_test(cpu, CPU_Priv))
+ strcat(cpuname, " Privileged");
+
+ if (BitVector_bit_test(cpu, CPU_FPU))
+ strcat(cpuname, " FPU");
+ if (BitVector_bit_test(cpu, CPU_MMX))
+ strcat(cpuname, " MMX");
+ if (BitVector_bit_test(cpu, CPU_SSE))
+ strcat(cpuname, " SSE");
+ if (BitVector_bit_test(cpu, CPU_SSE2))
+ strcat(cpuname, " SSE2");
+ if (BitVector_bit_test(cpu, CPU_SSE3))
+ strcat(cpuname, " SSE3");
+ if (BitVector_bit_test(cpu, CPU_3DNow))
+ strcat(cpuname, " 3DNow");
+ if (BitVector_bit_test(cpu, CPU_Cyrix))
+ strcat(cpuname, " Cyrix");
+ if (BitVector_bit_test(cpu, CPU_AMD))
+ strcat(cpuname, " AMD");
+ if (BitVector_bit_test(cpu, CPU_SMM))
+ strcat(cpuname, " SMM");
+ if (BitVector_bit_test(cpu, CPU_SVM))
+ strcat(cpuname, " SVM");
+ if (BitVector_bit_test(cpu, CPU_PadLock))
+ strcat(cpuname, " PadLock");
+ if (BitVector_bit_test(cpu, CPU_EM64T))
+ strcat(cpuname, " EM64T");
+ if (BitVector_bit_test(cpu, CPU_SSSE3))
+ strcat(cpuname, " SSSE3");
+ if (BitVector_bit_test(cpu, CPU_SSE41))
+ strcat(cpuname, " SSE4.1");
+ if (BitVector_bit_test(cpu, CPU_SSE42))
+ strcat(cpuname, " SSE4.2");
+
+ if (BitVector_bit_test(cpu, CPU_186))
+ strcat(cpuname, " 186");
+ if (BitVector_bit_test(cpu, CPU_286))
+ strcat(cpuname, " 286");
+ if (BitVector_bit_test(cpu, CPU_386))
+ strcat(cpuname, " 386");
+ if (BitVector_bit_test(cpu, CPU_486))
+ strcat(cpuname, " 486");
+ if (BitVector_bit_test(cpu, CPU_586))
+ strcat(cpuname, " 586");
+ if (BitVector_bit_test(cpu, CPU_686))
+ strcat(cpuname, " 686");
+ if (BitVector_bit_test(cpu, CPU_P3))
+ strcat(cpuname, " P3");
+ if (BitVector_bit_test(cpu, CPU_P4))
+ strcat(cpuname, " P4");
+ if (BitVector_bit_test(cpu, CPU_IA64))
+ strcat(cpuname, " IA64");
+ if (BitVector_bit_test(cpu, CPU_K6))
+ strcat(cpuname, " K6");
+ if (BitVector_bit_test(cpu, CPU_Athlon))
+ strcat(cpuname, " Athlon");
+ if (BitVector_bit_test(cpu, CPU_Hammer))
+ strcat(cpuname, " Hammer");
+
+ BitVector_Destroy(cpu);
+ return cpuname;
+}
+
+yasm_arch_insnprefix
+yasm_x86__parse_check_insnprefix(yasm_arch *arch, const char *id,
+ size_t id_len, unsigned long line,
+ yasm_bytecode **bc, uintptr_t *prefix)
+{
+ yasm_arch_x86 *arch_x86 = (yasm_arch_x86 *)arch;
+ /*@null@*/ const insnprefix_parse_data *pdata;
+ size_t i;
+ static char lcaseid[17];
+
+ *bc = (yasm_bytecode *)NULL;
+ *prefix = 0;
+
+ if (id_len > 16)
+ return YASM_ARCH_NOTINSNPREFIX;
+ for (i=0; i<id_len; i++)
+ lcaseid[i] = tolower(id[i]);
+ lcaseid[id_len] = '\0';
+
+ switch (PARSER(arch_x86)) {
+ case X86_PARSER_NASM:
+ pdata = insnprefix_nasm_find(lcaseid, id_len);
+ break;
+ case X86_PARSER_TASM:
+ pdata = insnprefix_nasm_find(lcaseid, id_len);
+ break;
+ case X86_PARSER_GAS:
+ pdata = insnprefix_gas_find(lcaseid, id_len);
+ break;
+ default:
+ pdata = NULL;
+ }
+ if (!pdata)
+ return YASM_ARCH_NOTINSNPREFIX;
+
+ if (pdata->group) {
+ x86_id_insn *id_insn;
+ wordptr cpu_enabled = arch_x86->cpu_enables[arch_x86->active_cpu];
+ unsigned int cpu0, cpu1, cpu2;
+
+ if (arch_x86->mode_bits != 64 && (pdata->misc_flags & ONLY_64)) {
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("`%s' is an instruction in 64-bit mode"), id);
+ return YASM_ARCH_NOTINSNPREFIX;
+ }
+ if (arch_x86->mode_bits == 64 && (pdata->misc_flags & NOT_64)) {
+ yasm_error_set(YASM_ERROR_GENERAL,
+ N_("`%s' invalid in 64-bit mode"), id);
+ id_insn = yasm_xmalloc(sizeof(x86_id_insn));
+ yasm_insn_initialize(&id_insn->insn);
+ id_insn->group = not64_insn;
+ id_insn->cpu_enabled = cpu_enabled;
+ id_insn->mod_data[0] = 0;
+ id_insn->mod_data[1] = 0;
+ id_insn->mod_data[2] = 0;
+ id_insn->num_info = NELEMS(not64_insn);
+ id_insn->mode_bits = arch_x86->mode_bits;
+ id_insn->suffix = 0;
+ id_insn->misc_flags = 0;
+ id_insn->parser = PARSER(arch_x86);
+
+ id_insn->force_strict = arch_x86->force_strict != 0;
+ id_insn->default_rel = arch_x86->default_rel != 0;
+ *bc = yasm_bc_create_common(&x86_id_insn_callback, id_insn, line);
+ return YASM_ARCH_INSN;
+ }
+
+ cpu0 = pdata->cpu0;
+ cpu1 = pdata->cpu1;
+ cpu2 = pdata->cpu2;
+
+ if (!BitVector_bit_test(cpu_enabled, cpu0) ||
+ !BitVector_bit_test(cpu_enabled, cpu1) ||
+ !BitVector_bit_test(cpu_enabled, cpu2)) {
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("`%s' is an instruction in CPU%s"), id,
+ cpu_find_reverse(cpu0, cpu1, cpu2));
+ return YASM_ARCH_NOTINSNPREFIX;
+ }
+
+ id_insn = yasm_xmalloc(sizeof(x86_id_insn));
+ yasm_insn_initialize(&id_insn->insn);
+ id_insn->group = pdata->group;
+ id_insn->cpu_enabled = cpu_enabled;
+ id_insn->mod_data[0] = pdata->mod_data0;
+ id_insn->mod_data[1] = pdata->mod_data1;
+ id_insn->mod_data[2] = pdata->mod_data2;
+ id_insn->num_info = pdata->num_info;
+ id_insn->mode_bits = arch_x86->mode_bits;
+ id_insn->suffix = pdata->flags;
+ id_insn->misc_flags = pdata->misc_flags;
+ id_insn->parser = PARSER(arch_x86);
+ id_insn->force_strict = arch_x86->force_strict != 0;
+ id_insn->default_rel = arch_x86->default_rel != 0;
+ *bc = yasm_bc_create_common(&x86_id_insn_callback, id_insn, line);
+ return YASM_ARCH_INSN;
+ } else {
+ unsigned long type = pdata->num_info<<8;
+ unsigned long value = pdata->flags;
+
+ if (arch_x86->mode_bits == 64 && type == X86_OPERSIZE && value == 32) {
+ yasm_error_set(YASM_ERROR_GENERAL,
+ N_("Cannot override data size to 32 bits in 64-bit mode"));
+ return YASM_ARCH_NOTINSNPREFIX;
+ }
+
+ if (arch_x86->mode_bits == 64 && type == X86_ADDRSIZE && value == 16) {
+ yasm_error_set(YASM_ERROR_GENERAL,
+ N_("Cannot override address size to 16 bits in 64-bit mode"));
+ return YASM_ARCH_NOTINSNPREFIX;
+ }
+
+ if (arch_x86->mode_bits != 64 && (pdata->misc_flags & ONLY_64)) {
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("`%s' is a prefix in 64-bit mode"), id);
+ return YASM_ARCH_NOTINSNPREFIX;
+ }
+ *prefix = type|value;
+ return YASM_ARCH_PREFIX;
+ }
+}
+
+static void
+x86_id_insn_destroy(void *contents)
+{
+ x86_id_insn *id_insn = (x86_id_insn *)contents;
+ yasm_insn_delete(&id_insn->insn, yasm_x86__ea_destroy);
+ yasm_xfree(contents);
+}
+
+static void
+x86_id_insn_print(const void *contents, FILE *f, int indent_level)
+{
+ const x86_id_insn *id_insn = (const x86_id_insn *)contents;
+ yasm_insn_print(&id_insn->insn, f, indent_level);
+ /*TODO*/
+}
+
+/*@only@*/ yasm_bytecode *
+yasm_x86__create_empty_insn(yasm_arch *arch, unsigned long line)
+{
+ yasm_arch_x86 *arch_x86 = (yasm_arch_x86 *)arch;
+ x86_id_insn *id_insn = yasm_xmalloc(sizeof(x86_id_insn));
+
+ yasm_insn_initialize(&id_insn->insn);
+ id_insn->group = empty_insn;
+ id_insn->cpu_enabled = arch_x86->cpu_enables[arch_x86->active_cpu];
+ id_insn->mod_data[0] = 0;
+ id_insn->mod_data[1] = 0;
+ id_insn->mod_data[2] = 0;
+ id_insn->num_info = NELEMS(empty_insn);
+ id_insn->mode_bits = arch_x86->mode_bits;
+ id_insn->suffix = (PARSER(arch_x86) == X86_PARSER_GAS) ? SUF_Z : 0;
+ id_insn->misc_flags = 0;
+ id_insn->parser = PARSER(arch_x86);
+ id_insn->force_strict = arch_x86->force_strict != 0;
+ id_insn->default_rel = arch_x86->default_rel != 0;
+
+ return yasm_bc_create_common(&x86_id_insn_callback, id_insn, line);
+}
+
diff --git a/contrib/tools/yasm/modules/dbgfmts/codeview/cv-dbgfmt.c b/contrib/tools/yasm/modules/dbgfmts/codeview/cv-dbgfmt.c
index 285478dbb6..9b06fe3495 100644
--- a/contrib/tools/yasm/modules/dbgfmts/codeview/cv-dbgfmt.c
+++ b/contrib/tools/yasm/modules/dbgfmts/codeview/cv-dbgfmt.c
@@ -1,107 +1,107 @@
-/*
- * CodeView debugging formats implementation for Yasm
- *
- * Copyright (C) 2006-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <libyasm.h>
-
-#include "cv-dbgfmt.h"
-
-yasm_dbgfmt_module yasm_cv8_LTX_dbgfmt;
-
-
-static /*@null@*/ /*@only@*/ yasm_dbgfmt *
-cv_dbgfmt_create(yasm_object *object, yasm_dbgfmt_module *module, int version)
-{
- yasm_dbgfmt_cv *dbgfmt_cv = yasm_xmalloc(sizeof(yasm_dbgfmt_cv));
- size_t i;
-
- dbgfmt_cv->dbgfmt.module = module;
-
- dbgfmt_cv->filenames_allocated = 32;
- dbgfmt_cv->filenames_size = 0;
- dbgfmt_cv->filenames =
- yasm_xmalloc(sizeof(cv_filename)*dbgfmt_cv->filenames_allocated);
- for (i=0; i<dbgfmt_cv->filenames_allocated; i++) {
- dbgfmt_cv->filenames[i].pathname = NULL;
- dbgfmt_cv->filenames[i].filename = NULL;
- dbgfmt_cv->filenames[i].str_off = 0;
- dbgfmt_cv->filenames[i].info_off = 0;
- }
-
- dbgfmt_cv->version = version;
-
- return (yasm_dbgfmt *)dbgfmt_cv;
-}
-
-static /*@null@*/ /*@only@*/ yasm_dbgfmt *
-cv8_dbgfmt_create(yasm_object *object)
-{
- return cv_dbgfmt_create(object, &yasm_cv8_LTX_dbgfmt, 8);
-}
-
-static void
-cv_dbgfmt_destroy(/*@only@*/ yasm_dbgfmt *dbgfmt)
-{
- yasm_dbgfmt_cv *dbgfmt_cv = (yasm_dbgfmt_cv *)dbgfmt;
- size_t i;
- for (i=0; i<dbgfmt_cv->filenames_size; i++) {
- if (dbgfmt_cv->filenames[i].pathname)
- yasm_xfree(dbgfmt_cv->filenames[i].pathname);
- }
- yasm_xfree(dbgfmt_cv->filenames);
- yasm_xfree(dbgfmt);
-}
-
-/* Add a bytecode to a section, updating offset on insertion;
- * no optimization necessary.
- */
-yasm_bytecode *
-yasm_cv__append_bc(yasm_section *sect, yasm_bytecode *bc)
-{
- yasm_bytecode *precbc = yasm_section_bcs_last(sect);
- bc->offset = yasm_bc_next_offset(precbc);
- yasm_section_bcs_append(sect, bc);
- return precbc;
-}
-
-static void
-cv_dbgfmt_generate(yasm_object *object, yasm_linemap *linemap,
- yasm_errwarns *errwarns)
-{
- yasm_cv__generate_symline(object, linemap, errwarns);
- yasm_cv__generate_type(object);
-}
-
-/* Define dbgfmt structure -- see dbgfmt.h for details */
-yasm_dbgfmt_module yasm_cv8_LTX_dbgfmt = {
- "CodeView debugging format for VC8",
- "cv8",
- NULL, /* no directives */
- cv8_dbgfmt_create,
- cv_dbgfmt_destroy,
- cv_dbgfmt_generate
-};
+/*
+ * CodeView debugging formats implementation for Yasm
+ *
+ * Copyright (C) 2006-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <libyasm.h>
+
+#include "cv-dbgfmt.h"
+
+yasm_dbgfmt_module yasm_cv8_LTX_dbgfmt;
+
+
+static /*@null@*/ /*@only@*/ yasm_dbgfmt *
+cv_dbgfmt_create(yasm_object *object, yasm_dbgfmt_module *module, int version)
+{
+ yasm_dbgfmt_cv *dbgfmt_cv = yasm_xmalloc(sizeof(yasm_dbgfmt_cv));
+ size_t i;
+
+ dbgfmt_cv->dbgfmt.module = module;
+
+ dbgfmt_cv->filenames_allocated = 32;
+ dbgfmt_cv->filenames_size = 0;
+ dbgfmt_cv->filenames =
+ yasm_xmalloc(sizeof(cv_filename)*dbgfmt_cv->filenames_allocated);
+ for (i=0; i<dbgfmt_cv->filenames_allocated; i++) {
+ dbgfmt_cv->filenames[i].pathname = NULL;
+ dbgfmt_cv->filenames[i].filename = NULL;
+ dbgfmt_cv->filenames[i].str_off = 0;
+ dbgfmt_cv->filenames[i].info_off = 0;
+ }
+
+ dbgfmt_cv->version = version;
+
+ return (yasm_dbgfmt *)dbgfmt_cv;
+}
+
+static /*@null@*/ /*@only@*/ yasm_dbgfmt *
+cv8_dbgfmt_create(yasm_object *object)
+{
+ return cv_dbgfmt_create(object, &yasm_cv8_LTX_dbgfmt, 8);
+}
+
+static void
+cv_dbgfmt_destroy(/*@only@*/ yasm_dbgfmt *dbgfmt)
+{
+ yasm_dbgfmt_cv *dbgfmt_cv = (yasm_dbgfmt_cv *)dbgfmt;
+ size_t i;
+ for (i=0; i<dbgfmt_cv->filenames_size; i++) {
+ if (dbgfmt_cv->filenames[i].pathname)
+ yasm_xfree(dbgfmt_cv->filenames[i].pathname);
+ }
+ yasm_xfree(dbgfmt_cv->filenames);
+ yasm_xfree(dbgfmt);
+}
+
+/* Add a bytecode to a section, updating offset on insertion;
+ * no optimization necessary.
+ */
+yasm_bytecode *
+yasm_cv__append_bc(yasm_section *sect, yasm_bytecode *bc)
+{
+ yasm_bytecode *precbc = yasm_section_bcs_last(sect);
+ bc->offset = yasm_bc_next_offset(precbc);
+ yasm_section_bcs_append(sect, bc);
+ return precbc;
+}
+
+static void
+cv_dbgfmt_generate(yasm_object *object, yasm_linemap *linemap,
+ yasm_errwarns *errwarns)
+{
+ yasm_cv__generate_symline(object, linemap, errwarns);
+ yasm_cv__generate_type(object);
+}
+
+/* Define dbgfmt structure -- see dbgfmt.h for details */
+yasm_dbgfmt_module yasm_cv8_LTX_dbgfmt = {
+ "CodeView debugging format for VC8",
+ "cv8",
+ NULL, /* no directives */
+ cv8_dbgfmt_create,
+ cv_dbgfmt_destroy,
+ cv_dbgfmt_generate
+};
diff --git a/contrib/tools/yasm/modules/dbgfmts/codeview/cv-dbgfmt.h b/contrib/tools/yasm/modules/dbgfmts/codeview/cv-dbgfmt.h
index d3bbb024e0..134b0b885b 100644
--- a/contrib/tools/yasm/modules/dbgfmts/codeview/cv-dbgfmt.h
+++ b/contrib/tools/yasm/modules/dbgfmts/codeview/cv-dbgfmt.h
@@ -1,58 +1,58 @@
-/*
- * CodeView debugging formats implementation for Yasm
- *
- * Copyright (C) 2006-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef YASM_CV_DBGFMT_H
-#define YASM_CV_DBGFMT_H
-
-typedef struct {
- char *pathname; /* full pathname (drive+basepath+filename) */
- char *filename; /* filename as yasm knows it internally */
- unsigned long str_off; /* offset into pathname string table */
- unsigned long info_off; /* offset into source info table */
- unsigned char digest[16]; /* MD5 digest of source file */
-} cv_filename;
-
-/* Global data */
-typedef struct yasm_dbgfmt_cv {
- yasm_dbgfmt_base dbgfmt; /* base structure */
-
- cv_filename *filenames;
- size_t filenames_size;
- size_t filenames_allocated;
-
- int version;
-} yasm_dbgfmt_cv;
-
-yasm_bytecode *yasm_cv__append_bc(yasm_section *sect, yasm_bytecode *bc);
-
-/* Symbol/Line number functions */
-yasm_section *yasm_cv__generate_symline
- (yasm_object *object, yasm_linemap *linemap, yasm_errwarns *errwarns);
-
-/* Type functions */
-yasm_section *yasm_cv__generate_type(yasm_object *object);
-
-#endif
+/*
+ * CodeView debugging formats implementation for Yasm
+ *
+ * Copyright (C) 2006-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef YASM_CV_DBGFMT_H
+#define YASM_CV_DBGFMT_H
+
+typedef struct {
+ char *pathname; /* full pathname (drive+basepath+filename) */
+ char *filename; /* filename as yasm knows it internally */
+ unsigned long str_off; /* offset into pathname string table */
+ unsigned long info_off; /* offset into source info table */
+ unsigned char digest[16]; /* MD5 digest of source file */
+} cv_filename;
+
+/* Global data */
+typedef struct yasm_dbgfmt_cv {
+ yasm_dbgfmt_base dbgfmt; /* base structure */
+
+ cv_filename *filenames;
+ size_t filenames_size;
+ size_t filenames_allocated;
+
+ int version;
+} yasm_dbgfmt_cv;
+
+yasm_bytecode *yasm_cv__append_bc(yasm_section *sect, yasm_bytecode *bc);
+
+/* Symbol/Line number functions */
+yasm_section *yasm_cv__generate_symline
+ (yasm_object *object, yasm_linemap *linemap, yasm_errwarns *errwarns);
+
+/* Type functions */
+yasm_section *yasm_cv__generate_type(yasm_object *object);
+
+#endif
diff --git a/contrib/tools/yasm/modules/dbgfmts/codeview/cv-symline.c b/contrib/tools/yasm/modules/dbgfmts/codeview/cv-symline.c
index 396def57e2..8d7030221f 100644
--- a/contrib/tools/yasm/modules/dbgfmts/codeview/cv-symline.c
+++ b/contrib/tools/yasm/modules/dbgfmts/codeview/cv-symline.c
@@ -1,1102 +1,1102 @@
-/*
- * CodeView debugging format - symbol and line information
- *
- * Copyright (C) 2006-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the author nor the names of other contributors
- * may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <libyasm.h>
-
-#include "cv-dbgfmt.h"
-
-enum cv8_symheadtype {
- CV8_DEBUG_SYMS = 0xF1, /* CV5 symbol information */
- CV8_LINE_NUMS = 0xF2, /* line numbers for a section */
- CV8_FILE_STRTAB = 0xF3, /* filename string table */
- CV8_FILE_INFO = 0xF4 /* source file info */
-};
-
-enum cv_symtype {
- /* Non-modal Symbols */
- CV_S_COMPILE = 0x0001, /* Compile Flag */
- CV_S_REGISTER = 0x0002, /* Register */
- CV_S_CONSTANT = 0x0003, /* Constant */
- CV_S_UDT = 0x0004, /* User-defined Type */
- CV_S_SSEARCH = 0x0005, /* Start Search */
- CV_S_END = 0x0006, /* End of Block */
- CV_S_SKIP = 0x0007, /* Skip Record */
- CV_S_OBJNAME = 0x0009, /* Object File Name */
- CV_S_ENDARG = 0x000a, /* End of Arguments */
- CV_S_COBOLUDT = 0x000b, /* COBOL User-defined Type */
- CV_S_MANYREG = 0x000c, /* Many Registers */
- CV_S_RETURN = 0x000d, /* Function Return */
- CV_S_ENTRYTHIS = 0x000e, /* "this" at Method Entry */
-
- /* Symbols for 16:16 Segmented Architectures */
- CV_S_BPREL16 = 0x0100, /* BP Relative 16:16 */
- CV_S_LDATA16 = 0x0101, /* Local Data 16:16 */
- CV_S_GDATA16 = 0x0102, /* Global Data Symbol 16:16 */
- CV_S_PUB16 = 0x0103, /* Public Symbol 16:16 */
- CV_S_LPROC16 = 0x0104, /* Local Start 16:16 */
- CV_S_GPROC16 = 0x0105, /* Global Start 16:16 */
- CV_S_THUNK16 = 0x0106, /* Thunk Start 16:16 */
- CV_S_BLOCK16 = 0x0107, /* Block Start 16:16 */
- CV_S_WITH16 = 0x0108, /* With Start 16:16 */
- CV_S_LABEL16 = 0x0109, /* Code Label 16:16 */
- CV_S_CEXMODEL16 = 0x0110, /* Change Execution Model 16:16 */
- CV_S_VFTPATH16 = 0x010b, /* Virtual Function Table Path 16:16 */
- CV_S_REGREL16 = 0x010c, /* Register Relative 16:16 */
-
- /* Symbols for 16:32 Segmented Architectures */
- CV_S_BPREL32 = 0x0200, /* BP Relative 16:32 */
- CV_S_LDATA32 = 0x0201, /* Local Data 16:32 */
- CV_S_GDATA32 = 0x0202, /* Global Data Symbol 16:32 */
- CV_S_PUB32 = 0x0203, /* Public Symbol 16:32 */
- CV_S_LPROC32 = 0x0204, /* Local Start 16:32 */
- CV_S_GPROC32 = 0x0205, /* Global Start 16:32 */
- CV_S_THUNK32 = 0x0206, /* Thunk Start 16:32 */
- CV_S_BLOCK32 = 0x0207, /* Block Start 16:32 */
- CV_S_WITH32 = 0x0208, /* With Start 16:32 */
- CV_S_LABEL32 = 0x0209, /* Code Label 16:32 */
- CV_S_CEXMODEL32 = 0x0210, /* Change Execution Model 16:32 */
- CV_S_VFTPATH32 = 0x020b, /* Virtual Function Table Path 16:32 */
- CV_S_REGREL32 = 0x020c, /* Register Relative 16:32 */
- CV_S_LTHREAD32 = 0x020d, /* Local Thread Storage 16:32 */
- CV_S_GTHREAD32 = 0x020e, /* Global Thread Storage 16:32 */
-
- /* Symbols for MIPS */
- CV_S_LPROCMIPS = 0x0300, /* Local procedure start MIPS */
- CV_S_GPROCMIPS = 0x0301, /* Global procedure start MIPS */
-
- /* Symbols for CV8 - strings are 0 terminated rather than length-prefix.
- * Incomplete and unofficial.
- */
- CV8_S_OBJNAME = 0x1101, /* Object File Name */
- CV8_S_LABEL32 = 0x1105, /* Code Label 16:32 */
- CV8_S_LDATA32 = 0x110c, /* Local Data 16:32 */
- CV8_S_GDATA32 = 0x110d, /* Global Data 16:32 */
- CV8_S_LPROC32 = 0x1110, /* Local Start 16:32 */
- CV8_S_COMPILE = 0x1116 /* Compile Flag */
-};
-
-typedef struct cv8_symhead {
- enum cv8_symheadtype type;
- yasm_bytecode *start_prevbc;
- yasm_bytecode *end_prevbc;
- int first; /* nonzero if first symhead in section */
-} cv8_symhead;
-
-typedef struct cv8_fileinfo {
- const cv_filename *fn;
-} cv8_fileinfo;
-
-/* Note: each line number group is associated with a file AND a section */
-typedef struct cv8_linepair {
- unsigned long offset;
- unsigned long line;
-} cv8_linepair;
-
-/* Decrease linked list overhead a bit doing it this way */
-typedef struct cv8_lineset {
- STAILQ_ENTRY(cv8_lineset) link;
- cv8_linepair pairs[126];
- size_t num_pairs;
-} cv8_lineset;
-
-/* Note: Due to line number sorting requirements (by section offset it seems)
- * one file may need more than one record per section. */
-typedef struct cv8_lineinfo {
- STAILQ_ENTRY(cv8_lineinfo) link;
- const cv_filename *fn; /* filename associated with line numbers */
- yasm_section *sect; /* section line numbers are for */
- yasm_symrec *sectsym; /* symbol for beginning of sect */
- unsigned long num_linenums;
- int first_in_sect; /* First lineinfo for this section. */
- STAILQ_HEAD(cv8_lineset_head, cv8_lineset) linesets;
-} cv8_lineinfo;
-
-/* Symbols use a bit of meta-programming to encode formats: each character
- * of format represents the output generated, as follows:
- * 'b' : 1 byte value (integer)
- * 'h' : 2 byte value (integer)
- * 'w' : 4 byte value (integer)
- * 'Y' : symrec SECREL+SECTION (pointer)
- * 'T' : type index (integer)
- * 'S' : length-prefixed string (pointer)
- * 'Z' : 0-terminated string (pointer)
- */
-typedef struct cv_sym {
- enum cv_symtype type;
- const char *format;
- union {
- unsigned long i;
- void *p;
- } args[10];
-} cv_sym;
-
-/* Bytecode callback function prototypes */
-static void cv8_symhead_bc_destroy(void *contents);
-static void cv8_symhead_bc_print(const void *contents, FILE *f,
- int indent_level);
-static int cv8_symhead_bc_calc_len
- (yasm_bytecode *bc, yasm_bc_add_span_func add_span, void *add_span_data);
-static int cv8_symhead_bc_tobytes
- (yasm_bytecode *bc, unsigned char **bufp, unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- /*@null@*/ yasm_output_reloc_func output_reloc);
-
-static void cv8_fileinfo_bc_destroy(void *contents);
-static void cv8_fileinfo_bc_print(const void *contents, FILE *f,
- int indent_level);
-static int cv8_fileinfo_bc_calc_len
- (yasm_bytecode *bc, yasm_bc_add_span_func add_span, void *add_span_data);
-static int cv8_fileinfo_bc_tobytes
- (yasm_bytecode *bc, unsigned char **bufp, unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- /*@null@*/ yasm_output_reloc_func output_reloc);
-
-static void cv8_lineinfo_bc_destroy(void *contents);
-static void cv8_lineinfo_bc_print(const void *contents, FILE *f,
- int indent_level);
-static int cv8_lineinfo_bc_calc_len
- (yasm_bytecode *bc, yasm_bc_add_span_func add_span, void *add_span_data);
-static int cv8_lineinfo_bc_tobytes
- (yasm_bytecode *bc, unsigned char **bufp, unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- /*@null@*/ yasm_output_reloc_func output_reloc);
-
-static void cv_sym_bc_destroy(void *contents);
-static void cv_sym_bc_print(const void *contents, FILE *f, int indent_level);
-static int cv_sym_bc_calc_len
- (yasm_bytecode *bc, yasm_bc_add_span_func add_span, void *add_span_data);
-static int cv_sym_bc_tobytes
- (yasm_bytecode *bc, unsigned char **bufp, unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- /*@null@*/ yasm_output_reloc_func output_reloc);
-
-/* Bytecode callback structures */
-static const yasm_bytecode_callback cv8_symhead_bc_callback = {
- cv8_symhead_bc_destroy,
- cv8_symhead_bc_print,
- yasm_bc_finalize_common,
- NULL,
- cv8_symhead_bc_calc_len,
- yasm_bc_expand_common,
- cv8_symhead_bc_tobytes,
- 0
-};
-
-static const yasm_bytecode_callback cv8_fileinfo_bc_callback = {
- cv8_fileinfo_bc_destroy,
- cv8_fileinfo_bc_print,
- yasm_bc_finalize_common,
- NULL,
- cv8_fileinfo_bc_calc_len,
- yasm_bc_expand_common,
- cv8_fileinfo_bc_tobytes,
- 0
-};
-
-static const yasm_bytecode_callback cv8_lineinfo_bc_callback = {
- cv8_lineinfo_bc_destroy,
- cv8_lineinfo_bc_print,
- yasm_bc_finalize_common,
- NULL,
- cv8_lineinfo_bc_calc_len,
- yasm_bc_expand_common,
- cv8_lineinfo_bc_tobytes,
- 0
-};
-
-static const yasm_bytecode_callback cv_sym_bc_callback = {
- cv_sym_bc_destroy,
- cv_sym_bc_print,
- yasm_bc_finalize_common,
- NULL,
- cv_sym_bc_calc_len,
- yasm_bc_expand_common,
- cv_sym_bc_tobytes,
- 0
-};
-
-static cv8_symhead *cv8_add_symhead(yasm_section *sect, unsigned long type,
- int first);
-static void cv8_set_symhead_end(cv8_symhead *head, yasm_bytecode *end_prevbc);
-
-static yasm_bytecode *cv8_add_fileinfo
- (yasm_section *sect, const cv_filename *fn);
-
-static unsigned long cv_sym_size(const cv_sym *cvs);
-
-
-static cv_sym *
-cv8_add_sym_objname(yasm_section *sect, /*@keep@*/ char *objname)
-{
- yasm_bytecode *bc;
- cv_sym *cvs = yasm_xmalloc(sizeof(cv_sym));
- cvs->type = CV8_S_OBJNAME;
- cvs->format = "wZ";
- cvs->args[0].i = 0; /* signature (0=asm) */
- cvs->args[1].p = objname; /* object filename */
-
- bc = yasm_bc_create_common(&cv_sym_bc_callback, cvs, 0);
- bc->len = cv_sym_size(cvs);
- yasm_cv__append_bc(sect, bc);
- return cvs;
-}
-
-static cv_sym *
-cv8_add_sym_compile(yasm_object *object, yasm_section *sect,
- /*@keep@*/ char *creator)
-{
- yasm_bytecode *bc;
- cv_sym *cvs = yasm_xmalloc(sizeof(cv_sym));
- cvs->type = CV8_S_COMPILE;
- cvs->format = "wwwwZh";
- cvs->args[0].i = 3; /* language (3=Masm) */
-
- /* target processor; 0xD0 = AMD64 */
- if (strcmp(yasm_arch_keyword(object->arch), "x86") == 0) {
- if (strcmp(yasm_arch_get_machine(object->arch), "amd64") == 0)
- cvs->args[1].i = 0xD0;
- else
- cvs->args[1].i = 0x6; /* 686, FIXME */
- } else
- cvs->args[1].i = 0; /* XXX: unknown */
-
- cvs->args[2].i = 0; /* flags (assume 0 for now) */
- cvs->args[3].i = 0; /* creator version number (assume 0 for now) */
- cvs->args[4].p = creator; /* creator string */
- cvs->args[5].i = 0; /* no pairs of key/value */
-
- bc = yasm_bc_create_common(&cv_sym_bc_callback, cvs, 0);
- bc->len = cv_sym_size(cvs);
- yasm_cv__append_bc(sect, bc);
- return cvs;
-}
-
-static cv_sym *
-cv8_add_sym_label(yasm_section *sect, yasm_symrec *sym)
-{
- yasm_bytecode *bc;
- cv_sym *cvs = yasm_xmalloc(sizeof(cv_sym));
- cvs->type = CV8_S_LABEL32;
- cvs->format = "YbZ";
- cvs->args[0].p = sym; /* symrec for label */
- cvs->args[1].i = 0; /* flags (assume 0 for now) */
- cvs->args[2].p = yasm__xstrdup(yasm_symrec_get_name(sym));
-
- bc = yasm_bc_create_common(&cv_sym_bc_callback, cvs, 0);
- bc->len = cv_sym_size(cvs);
- yasm_cv__append_bc(sect, bc);
- return cvs;
-}
-
-static cv_sym *
-cv8_add_sym_data(yasm_section *sect, unsigned long type, yasm_symrec *sym,
- int is_global)
-{
- yasm_bytecode *bc;
- cv_sym *cvs = yasm_xmalloc(sizeof(cv_sym));
- cvs->type = is_global ? CV8_S_GDATA32 : CV8_S_LDATA32;
- cvs->format = "wYZ";
- cvs->args[0].i = type; /* type index */
- cvs->args[1].p = sym; /* symrec for label */
- cvs->args[2].p = yasm__xstrdup(yasm_symrec_get_name(sym));
-
- bc = yasm_bc_create_common(&cv_sym_bc_callback, cvs, 0);
- bc->len = cv_sym_size(cvs);
- yasm_cv__append_bc(sect, bc);
- return cvs;
-}
-
-static size_t
-cv_dbgfmt_add_file(yasm_dbgfmt_cv *dbgfmt_cv, size_t filenum,
- const char *filename)
-{
- char *pathname;
- size_t i;
- yasm_md5_context context;
- FILE *f;
- unsigned char *buf;
- size_t len;
-
- /* Put the filename into the filename table */
- if (filenum == 0) {
- /* Look to see if we already have that filename in the table */
- for (; filenum<dbgfmt_cv->filenames_size; filenum++) {
- if (!dbgfmt_cv->filenames[filenum].filename ||
- strcmp(dbgfmt_cv->filenames[filenum].filename, filename) == 0)
- break;
- }
- } else
- filenum--; /* array index is 0-based */
-
- /* Realloc table if necessary */
- if (filenum >= dbgfmt_cv->filenames_allocated) {
- size_t old_allocated = dbgfmt_cv->filenames_allocated;
- dbgfmt_cv->filenames_allocated = filenum+32;
- dbgfmt_cv->filenames = yasm_xrealloc(dbgfmt_cv->filenames,
- sizeof(cv_filename)*dbgfmt_cv->filenames_allocated);
- for (i=old_allocated; i<dbgfmt_cv->filenames_allocated; i++) {
- dbgfmt_cv->filenames[i].pathname = NULL;
- dbgfmt_cv->filenames[i].filename = NULL;
- dbgfmt_cv->filenames[i].str_off = 0;
- dbgfmt_cv->filenames[i].info_off = 0;
- }
- }
-
- /* Calculate MD5 checksum of file */
- buf = yasm_xmalloc(1024);
- yasm_md5_init(&context);
- f = fopen(filename, "rb");
- if (!f)
- yasm__fatal(N_("codeview: could not open source file"));
- while ((len = fread(buf, 1, 1024, f)) > 0)
- yasm_md5_update(&context, buf, (unsigned long)len);
- yasm_md5_final(dbgfmt_cv->filenames[filenum].digest, &context);
- fclose(f);
- yasm_xfree(buf);
-
- /* Actually save in table */
- if (dbgfmt_cv->filenames[filenum].pathname)
- yasm_xfree(dbgfmt_cv->filenames[filenum].pathname);
- if (dbgfmt_cv->filenames[filenum].filename)
- yasm_xfree(dbgfmt_cv->filenames[filenum].filename);
-
- pathname = yasm__abspath(filename);
- dbgfmt_cv->filenames[filenum].pathname = pathname;
- dbgfmt_cv->filenames[filenum].filename = yasm__xstrdup(filename);
-
- /* Update table size */
- if (filenum >= dbgfmt_cv->filenames_size)
- dbgfmt_cv->filenames_size = filenum + 1;
-
- return filenum;
-}
-
-static yasm_bytecode *
-cv_append_str(yasm_section *sect, const char *str)
-{
- yasm_datavalhead dvs;
- yasm_bytecode *bc;
-
- yasm_dvs_initialize(&dvs);
- yasm_dvs_append(&dvs, yasm_dv_create_string(yasm__xstrdup(str),
- strlen(str)));
- bc = yasm_bc_create_data(&dvs, 1, 1, NULL, 0);
- yasm_bc_finalize(bc, yasm_cv__append_bc(sect, bc));
- yasm_bc_calc_len(bc, NULL, NULL);
- return bc;
-}
-
-typedef struct cv_line_info {
- yasm_section *debug_symline;
- yasm_object *object;
- yasm_dbgfmt_cv *dbgfmt_cv;
- yasm_linemap *linemap;
- yasm_errwarns *errwarns;
- unsigned int num_lineinfos;
- STAILQ_HEAD(cv8_lineinfo_head, cv8_lineinfo) cv8_lineinfos;
- /*@null@*/ cv8_lineinfo *cv8_cur_li;
- /*@null@*/ cv8_lineset *cv8_cur_ls;
-} cv_line_info;
-
-static int
-cv_generate_line_bc(yasm_bytecode *bc, /*@null@*/ void *d)
-{
- cv_line_info *info = (cv_line_info *)d;
- yasm_dbgfmt_cv *dbgfmt_cv = info->dbgfmt_cv;
- size_t i;
- const char *filename;
- unsigned long line;
- /*@null@*/ yasm_bytecode *nextbc = yasm_bc__next(bc);
- yasm_section *sect = yasm_bc_get_section(bc);
-
- if (nextbc && bc->offset == nextbc->offset)
- return 0;
-
- yasm_linemap_lookup(info->linemap, bc->line, &filename, &line);
-
- if (!info->cv8_cur_li
- || strcmp(filename, info->cv8_cur_li->fn->filename) != 0) {
- yasm_bytecode *sectbc;
- char symname[8];
- int first_in_sect = !info->cv8_cur_li;
-
- /* Find file */
- for (i=0; i<dbgfmt_cv->filenames_size; i++) {
- if (strcmp(filename, dbgfmt_cv->filenames[i].filename) == 0)
- break;
- }
- if (i >= dbgfmt_cv->filenames_size)
- yasm_internal_error(N_("could not find filename in table"));
-
- /* and create new lineinfo structure */
- info->cv8_cur_li = yasm_xmalloc(sizeof(cv8_lineinfo));
- info->cv8_cur_li->fn = &dbgfmt_cv->filenames[i];
- info->cv8_cur_li->sect = sect;
- info->cv8_cur_li->first_in_sect = first_in_sect;
- sectbc = yasm_section_bcs_first(sect);
- if (sectbc->symrecs && sectbc->symrecs[0])
- info->cv8_cur_li->sectsym = sectbc->symrecs[0];
- else {
- sprintf(symname, ".%06u", info->num_lineinfos++);
- info->cv8_cur_li->sectsym =
- yasm_symtab_define_label(info->object->symtab, symname, sectbc,
- 1, 0);
- }
- info->cv8_cur_li->num_linenums = 0;
- STAILQ_INIT(&info->cv8_cur_li->linesets);
- STAILQ_INSERT_TAIL(&info->cv8_lineinfos, info->cv8_cur_li, link);
- info->cv8_cur_ls = NULL;
- }
-
- /* build new lineset if necessary */
- if (!info->cv8_cur_ls || info->cv8_cur_ls->num_pairs >= 126) {
- info->cv8_cur_ls = yasm_xmalloc(sizeof(cv8_lineset));
- info->cv8_cur_ls->num_pairs = 0;
- STAILQ_INSERT_TAIL(&info->cv8_cur_li->linesets, info->cv8_cur_ls, link);
- }
-
- /* add linepair for this bytecode */
- info->cv8_cur_ls->pairs[info->cv8_cur_ls->num_pairs].offset = bc->offset;
- info->cv8_cur_ls->pairs[info->cv8_cur_ls->num_pairs].line =
- 0x80000000 | line;
- info->cv8_cur_ls->num_pairs++;
- info->cv8_cur_li->num_linenums++;
-
- return 0;
-}
-
-static int
-cv_generate_line_section(yasm_section *sect, /*@null@*/ void *d)
-{
- cv_line_info *info = (cv_line_info *)d;
-
- if (!yasm_section_is_code(sect))
- return 0; /* not code, so no line data for this section */
-
- info->cv8_cur_li = NULL;
- info->cv8_cur_ls = NULL;
-
- yasm_section_bcs_traverse(sect, info->errwarns, info, cv_generate_line_bc);
-
- return 0;
-}
-
-static int
-cv_generate_filename(const char *filename, void *d)
-{
- cv_dbgfmt_add_file((yasm_dbgfmt_cv *)d, 0, filename);
- return 0;
-}
-
-static int
-cv_generate_sym(yasm_symrec *sym, void *d)
-{
- cv_line_info *info = (cv_line_info *)d;
- yasm_bytecode *precbc;
- const char *name = yasm_symrec_get_name(sym);
-
- /* only care about labels (for now). Don't put in symbols starting with
- * ".", as these are typically internally generated ones (like section
- * symbols).
- */
- if (name[0] == '.' || !yasm_symrec_get_label(sym, &precbc))
- return 0;
-
- /* TODO: add data types; until then, just mark everything as UBYTE */
- if (yasm_section_is_code(yasm_bc_get_section(precbc)))
- cv8_add_sym_label(info->debug_symline, sym);
- else
- cv8_add_sym_data(info->debug_symline, 0x20, sym,
- yasm_symrec_get_visibility(sym) & YASM_SYM_GLOBAL?1:0);
- return 0;
-}
-
-yasm_section *
-yasm_cv__generate_symline(yasm_object *object, yasm_linemap *linemap,
- yasm_errwarns *errwarns)
-{
- yasm_dbgfmt_cv *dbgfmt_cv = (yasm_dbgfmt_cv *)object->dbgfmt;
- cv_line_info info;
- int new;
- size_t i;
- cv8_symhead *head;
- cv8_lineinfo *li;
- yasm_bytecode *bc;
- unsigned long off;
-
- /* Generate filenames based on linemap */
- yasm_linemap_traverse_filenames(linemap, dbgfmt_cv,
- cv_generate_filename);
-
- info.object = object;
- info.dbgfmt_cv = dbgfmt_cv;
- info.linemap = linemap;
- info.errwarns = errwarns;
- info.debug_symline =
- yasm_object_get_general(object, ".debug$S", 1, 0, 0, &new, 0);
- info.num_lineinfos = 0;
- STAILQ_INIT(&info.cv8_lineinfos);
- info.cv8_cur_li = NULL;
- info.cv8_cur_ls = NULL;
-
- /* source filenames string table */
- head = cv8_add_symhead(info.debug_symline, CV8_FILE_STRTAB, 1);
- cv_append_str(info.debug_symline, "");
- off = 1;
- for (i=0; i<dbgfmt_cv->filenames_size; i++) {
- if (!dbgfmt_cv->filenames[i].pathname) {
- yasm_error_set(YASM_ERROR_GENERAL,
- N_("codeview file number %d unassigned"), i+1);
- yasm_errwarn_propagate(errwarns, 0);
- continue;
- }
- bc = cv_append_str(info.debug_symline,
- dbgfmt_cv->filenames[i].pathname);
- dbgfmt_cv->filenames[i].str_off = off;
- off += bc->len;
- }
- cv8_set_symhead_end(head, yasm_section_bcs_last(info.debug_symline));
-
- /* Align 4 */
- bc = yasm_bc_create_align
- (yasm_expr_create_ident(yasm_expr_int(yasm_intnum_create_uint(4)), 0),
- NULL, NULL, NULL, 0);
- yasm_bc_finalize(bc, yasm_cv__append_bc(info.debug_symline, bc));
- yasm_bc_calc_len(bc, NULL, NULL);
-
- /* source file info table */
- head = cv8_add_symhead(info.debug_symline, CV8_FILE_INFO, 0);
- off = 0;
- for (i=0; i<dbgfmt_cv->filenames_size; i++) {
- if (!dbgfmt_cv->filenames[i].pathname)
- continue;
- bc = cv8_add_fileinfo(info.debug_symline, &dbgfmt_cv->filenames[i]);
- dbgfmt_cv->filenames[i].info_off = off;
- off += bc->len;
- }
- cv8_set_symhead_end(head, yasm_section_bcs_last(info.debug_symline));
-
- /* Already aligned 4 */
-
- /* Generate line numbers for sections */
- yasm_object_sections_traverse(object, (void *)&info,
- cv_generate_line_section);
-
- /* Output line numbers for sections */
- head = NULL;
- STAILQ_FOREACH(li, &info.cv8_lineinfos, link) {
- if (li->first_in_sect) {
- if (head)
- cv8_set_symhead_end(head, yasm_section_bcs_last(info.debug_symline));
- head = cv8_add_symhead(info.debug_symline, CV8_LINE_NUMS, 0);
- }
- bc = yasm_bc_create_common(&cv8_lineinfo_bc_callback, li, 0);
- bc->len = (li->first_in_sect ? 24 : 12) + li->num_linenums*8;
- yasm_cv__append_bc(info.debug_symline, bc);
- }
- if (head)
- cv8_set_symhead_end(head, yasm_section_bcs_last(info.debug_symline));
-
- /* Already aligned 4 */
-
- /* Output debugging symbols */
- head = cv8_add_symhead(info.debug_symline, CV8_DEBUG_SYMS, 0);
- /* add object and compile flag first */
- cv8_add_sym_objname(info.debug_symline,
- yasm__abspath(object->obj_filename));
- if (getenv("YASM_TEST_SUITE"))
- cv8_add_sym_compile(object, info.debug_symline,
- yasm__xstrdup("yasm HEAD"));
- else
- cv8_add_sym_compile(object, info.debug_symline,
- yasm__xstrdup(PACKAGE_STRING));
- /* then iterate through symbol table */
- yasm_symtab_traverse(object->symtab, &info, cv_generate_sym);
- cv8_set_symhead_end(head, yasm_section_bcs_last(info.debug_symline));
-
- /* Align 4 at end */
- bc = yasm_bc_create_align
- (yasm_expr_create_ident(yasm_expr_int(yasm_intnum_create_uint(4)), 0),
- NULL, NULL, NULL, 0);
- yasm_bc_finalize(bc, yasm_cv__append_bc(info.debug_symline, bc));
- yasm_bc_calc_len(bc, NULL, NULL);
-
- return info.debug_symline;
-}
-
-static void
-cv_out_sym(yasm_symrec *sym, unsigned long off, yasm_bytecode *bc,
- unsigned char **bufp, void *d, yasm_output_value_func output_value)
-{
- yasm_value val;
-
- /* sym in its section */
- yasm_value_init_sym(&val, sym, 32);
- val.section_rel = 1;
- output_value(&val, *bufp, 4, off, bc, 0, d);
- *bufp += 4;
-
- /* section index */
- yasm_value_init_sym(&val, sym, 16);
- val.seg_of = 1;
- output_value(&val, *bufp, 2, off+4, bc, 0, d);
- *bufp += 2;
-}
-
-static cv8_symhead *
-cv8_add_symhead(yasm_section *sect, unsigned long type, int first)
-{
- cv8_symhead *head;
- yasm_bytecode *bc;
-
- head = yasm_xmalloc(sizeof(cv8_symhead));
- head->type = type;
- head->first = first;
- head->start_prevbc = yasm_section_bcs_last(sect);
-
- bc = yasm_bc_create_common(&cv8_symhead_bc_callback, head, 0);
- if (first)
- bc->len = 12;
- else
- bc->len = 8;
-
- head->end_prevbc = bc;
- yasm_cv__append_bc(sect, bc);
- return head;
-}
-
-static void
-cv8_set_symhead_end(cv8_symhead *head, yasm_bytecode *end_prevbc)
-{
- head->end_prevbc = end_prevbc;
-}
-
-static void
-cv8_symhead_bc_destroy(void *contents)
-{
- yasm_xfree(contents);
-}
-
-static void
-cv8_symhead_bc_print(const void *contents, FILE *f, int indent_level)
-{
- /* TODO */
-}
-
-static int
-cv8_symhead_bc_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
- void *add_span_data)
-{
- yasm_internal_error(N_("tried to calc_len a codeview symhead bytecode"));
- /*@notreached@*/
- return 0;
-}
-
-static int
-cv8_symhead_bc_tobytes(yasm_bytecode *bc, unsigned char **bufp,
- unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- yasm_output_reloc_func output_reloc)
-{
- yasm_object *object = yasm_section_get_object(bc->section);
- cv8_symhead *head = (cv8_symhead *)bc->contents;
- unsigned char *buf = *bufp;
- yasm_intnum *intn, *cval;
-
- cval = yasm_intnum_create_uint(4);
- /* Output "version" if first */
- if (head->first) {
- yasm_arch_intnum_tobytes(object->arch, cval, buf, 4, 32, 0, bc, 0);
- buf += 4;
- }
-
- /* Type contained - 4 bytes */
- yasm_intnum_set_uint(cval, head->type);
- yasm_arch_intnum_tobytes(object->arch, cval, buf, 4, 32, 0, bc, 0);
- buf += 4;
-
- /* Total length of info (following this field) - 4 bytes */
- yasm_intnum_set_uint(cval, bc->len);
- intn = yasm_calc_bc_dist(head->start_prevbc, head->end_prevbc);
- yasm_intnum_calc(intn, YASM_EXPR_SUB, cval);
- yasm_arch_intnum_tobytes(object->arch, intn, buf, 4, 32, 0, bc, 0);
- buf += 4;
- yasm_intnum_destroy(intn);
-
- *bufp = buf;
-
- yasm_intnum_destroy(cval);
- return 0;
-}
-
-static yasm_bytecode *
-cv8_add_fileinfo(yasm_section *sect, const cv_filename *fn)
-{
- cv8_fileinfo *fi;
- yasm_bytecode *bc;
-
- fi = yasm_xmalloc(sizeof(cv8_fileinfo));
- fi->fn = fn;
-
- bc = yasm_bc_create_common(&cv8_fileinfo_bc_callback, fi, 0);
- bc->len = 24;
-
- yasm_cv__append_bc(sect, bc);
- return bc;
-}
-
-static void
-cv8_fileinfo_bc_destroy(void *contents)
-{
- yasm_xfree(contents);
-}
-
-static void
-cv8_fileinfo_bc_print(const void *contents, FILE *f, int indent_level)
-{
- /* TODO */
-}
-
-static int
-cv8_fileinfo_bc_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
- void *add_span_data)
-{
- yasm_internal_error(N_("tried to calc_len a codeview fileinfo bytecode"));
- /*@notreached@*/
- return 0;
-}
-
-static int
-cv8_fileinfo_bc_tobytes(yasm_bytecode *bc, unsigned char **bufp,
- unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- yasm_output_reloc_func output_reloc)
-{
- yasm_object *object = yasm_section_get_object(bc->section);
- cv8_fileinfo *fi = (cv8_fileinfo *)bc->contents;
- unsigned char *buf = *bufp;
- yasm_intnum *cval;
- int i;
-
- /* Offset in filename string table */
- cval = yasm_intnum_create_uint(fi->fn->str_off);
- yasm_arch_intnum_tobytes(object->arch, cval, buf, 4, 32, 0, bc, 0);
- buf += 4;
-
- /* Checksum type/length */
- yasm_intnum_set_uint(cval, 0x0110);
- yasm_arch_intnum_tobytes(object->arch, cval, buf, 2, 16, 0, bc, 0);
- buf += 2;
-
- /* Checksum */
- for (i=0; i<16; i++)
- YASM_WRITE_8(buf, fi->fn->digest[i]);
-
- /* Pad */
- YASM_WRITE_8(buf, 0);
- YASM_WRITE_8(buf, 0);
-
- *bufp = buf;
-
- yasm_intnum_destroy(cval);
- return 0;
-}
-
-static void
-cv8_lineinfo_bc_destroy(void *contents)
-{
- cv8_lineinfo *li = (cv8_lineinfo *)contents;
- cv8_lineset *ls1, *ls2;
-
- /* delete line sets */
- ls1 = STAILQ_FIRST(&li->linesets);
- while (ls1) {
- ls2 = STAILQ_NEXT(ls1, link);
- yasm_xfree(ls1);
- ls1 = ls2;
- }
-
- yasm_xfree(contents);
-}
-
-static void
-cv8_lineinfo_bc_print(const void *contents, FILE *f, int indent_level)
-{
- /* TODO */
-}
-
-static int
-cv8_lineinfo_bc_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
- void *add_span_data)
-{
- yasm_internal_error(N_("tried to calc_len a codeview linehead bytecode"));
- /*@notreached@*/
- return 0;
-}
-
-static int
-cv8_lineinfo_bc_tobytes(yasm_bytecode *bc, unsigned char **bufp,
- unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- yasm_output_reloc_func output_reloc)
-{
- yasm_object *object = yasm_section_get_object(bc->section);
- cv8_lineinfo *li = (cv8_lineinfo *)bc->contents;
- unsigned char *buf = *bufp;
- yasm_intnum *cval;
- unsigned long i;
- cv8_lineset *ls;
-
- if (li->first_in_sect) {
- /* start offset and section */
- cv_out_sym(li->sectsym, (unsigned long)(buf - bufstart), bc, &buf,
- d, output_value);
-
- /* Two bytes of pad/alignment */
- YASM_WRITE_8(buf, 0);
- YASM_WRITE_8(buf, 0);
-
- /* Section length covered by line number info */
- cval = yasm_calc_bc_dist(yasm_section_bcs_first(li->sect),
- yasm_section_bcs_last(li->sect));
- yasm_arch_intnum_tobytes(object->arch, cval, buf, 4, 32, 0, bc, 0);
- yasm_intnum_destroy(cval);
- buf += 4;
- }
-
- /* Offset of source file in info table */
- cval = yasm_intnum_create_uint(li->fn->info_off);
- yasm_arch_intnum_tobytes(object->arch, cval, buf, 4, 32, 0, bc, 0);
- buf += 4;
-
- /* Number of line number pairs */
- yasm_intnum_set_uint(cval, li->num_linenums);
- yasm_arch_intnum_tobytes(object->arch, cval, buf, 4, 32, 0, bc, 0);
- buf += 4;
-
- /* Number of bytes of line number pairs + 12 (no, I don't know why) */
- yasm_intnum_set_uint(cval, li->num_linenums*8+12);
- yasm_arch_intnum_tobytes(object->arch, cval, buf, 4, 32, 0, bc, 0);
- buf += 4;
-
- /* Offset / line number pairs */
- i = 0;
- STAILQ_FOREACH(ls, &li->linesets, link) {
- unsigned long j;
- for (j=0; i<li->num_linenums && j<126; i++, j++) {
- /* offset in section */
- yasm_intnum_set_uint(cval, ls->pairs[j].offset);
- yasm_arch_intnum_tobytes(object->arch, cval, buf, 4, 32, 0, bc, 0);
- buf += 4;
-
- /* line number in file */
- yasm_intnum_set_uint(cval, ls->pairs[j].line);
- yasm_arch_intnum_tobytes(object->arch, cval, buf, 4, 32, 0, bc, 0);
- buf += 4;
- }
- }
-
- *bufp = buf;
-
- yasm_intnum_destroy(cval);
- return 0;
-}
-
-static unsigned long
-cv_sym_size(const cv_sym *cvs)
-{
- const char *ch = cvs->format;
- unsigned long len = 4; /* sym length and type */
- unsigned long slen;
- int arg = 0;
-
- while (*ch) {
- switch (*ch) {
- case 'b':
- len++;
- arg++;
- break;
- case 'h':
- len += 2;
- arg++;
- break;
- case 'w':
- len += 4;
- arg++;
- break;
- case 'Y':
- len += 6; /* XXX: will be 4 in 16-bit version */
- arg++;
- break;
- case 'T':
- len += 4; /* XXX: will be 2 in CV4 */
- arg++;
- break;
- case 'S':
- len += 1; /* XXX: is this 1 or 2? */
- slen = (unsigned long)strlen((const char *)cvs->args[arg++].p);
- len += slen <= 0xff ? slen : 0xff;
- break;
- case 'Z':
- len +=
- (unsigned long)strlen((const char *)cvs->args[arg++].p) + 1;
- break;
- default:
- yasm_internal_error(N_("unknown sym format character"));
- }
- ch++;
- }
-
- return len;
-}
-
-static void
-cv_sym_bc_destroy(void *contents)
-{
- cv_sym *cvs = (cv_sym *)contents;
- const char *ch = cvs->format;
- int arg = 0;
-
- while (*ch) {
- switch (*ch) {
- case 'b':
- case 'h':
- case 'w':
- case 'Y':
- case 'T':
- arg++;
- break; /* nothing to destroy */
- case 'S':
- case 'Z':
- yasm_xfree(cvs->args[arg++].p);
- break;
- default:
- yasm_internal_error(N_("unknown sym format character"));
- }
- ch++;
- }
-
- yasm_xfree(contents);
-}
-
-static void
-cv_sym_bc_print(const void *contents, FILE *f, int indent_level)
-{
- /* TODO */
-}
-
-static int
-cv_sym_bc_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
- void *add_span_data)
-{
- yasm_internal_error(N_("tried to calc_len a codeview sym bytecode"));
- /*@notreached@*/
- return 0;
-}
-
-static int
-cv_sym_bc_tobytes(yasm_bytecode *bc, unsigned char **bufp,
- unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- yasm_output_reloc_func output_reloc)
-{
- yasm_object *object = yasm_section_get_object(bc->section);
- cv_sym *cvs = (cv_sym *)bc->contents;
- unsigned char *buf = *bufp;
- yasm_intnum *cval;
- const char *ch = cvs->format;
- size_t len;
- int arg = 0;
-
- /* Total length of record (following this field) - 2 bytes */
- cval = yasm_intnum_create_uint(bc->len-2);
- yasm_arch_intnum_tobytes(object->arch, cval, buf, 2, 16, 0, bc, 1);
- buf += 2;
-
- /* Type contained - 2 bytes */
- yasm_intnum_set_uint(cval, cvs->type);
- yasm_arch_intnum_tobytes(object->arch, cval, buf, 2, 16, 0, bc, 0);
- buf += 2;
-
- while (*ch) {
- switch (*ch) {
- case 'b':
- YASM_WRITE_8(buf, cvs->args[arg].i);
- arg++;
- break;
- case 'h':
- yasm_intnum_set_uint(cval, cvs->args[arg++].i);
- yasm_arch_intnum_tobytes(object->arch, cval, buf, 2, 16, 0,
- bc, 0);
- buf += 2;
- break;
- case 'w':
- yasm_intnum_set_uint(cval, cvs->args[arg++].i);
- yasm_arch_intnum_tobytes(object->arch, cval, buf, 4, 32, 0,
- bc, 0);
- buf += 4;
- break;
- case 'Y':
- cv_out_sym((yasm_symrec *)cvs->args[arg++].p,
- (unsigned long)(buf-bufstart), bc, &buf, d,
- output_value);
- break;
- case 'T':
- yasm_intnum_set_uint(cval, cvs->args[arg++].i);
- yasm_arch_intnum_tobytes(object->arch, cval, buf, 4, 32, 0,
- bc, 0);
- buf += 4; /* XXX: will be 2 in CV4 */
- break;
- case 'S':
- len = strlen((char *)cvs->args[arg].p);
- len = len <= 0xff ? len : 0xff;
- YASM_WRITE_8(buf, len);
- memcpy(buf, (char *)cvs->args[arg].p, len);
- buf += len;
- arg++;
- break;
- case 'Z':
- len = strlen((char *)cvs->args[arg].p)+1;
- memcpy(buf, (char *)cvs->args[arg].p, len);
- buf += len;
- arg++;
- break;
- default:
- yasm_internal_error(N_("unknown leaf format character"));
- }
- ch++;
- }
-
- *bufp = buf;
-
- yasm_intnum_destroy(cval);
- return 0;
-}
+/*
+ * CodeView debugging format - symbol and line information
+ *
+ * Copyright (C) 2006-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the author nor the names of other contributors
+ * may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <libyasm.h>
+
+#include "cv-dbgfmt.h"
+
+enum cv8_symheadtype {
+ CV8_DEBUG_SYMS = 0xF1, /* CV5 symbol information */
+ CV8_LINE_NUMS = 0xF2, /* line numbers for a section */
+ CV8_FILE_STRTAB = 0xF3, /* filename string table */
+ CV8_FILE_INFO = 0xF4 /* source file info */
+};
+
+enum cv_symtype {
+ /* Non-modal Symbols */
+ CV_S_COMPILE = 0x0001, /* Compile Flag */
+ CV_S_REGISTER = 0x0002, /* Register */
+ CV_S_CONSTANT = 0x0003, /* Constant */
+ CV_S_UDT = 0x0004, /* User-defined Type */
+ CV_S_SSEARCH = 0x0005, /* Start Search */
+ CV_S_END = 0x0006, /* End of Block */
+ CV_S_SKIP = 0x0007, /* Skip Record */
+ CV_S_OBJNAME = 0x0009, /* Object File Name */
+ CV_S_ENDARG = 0x000a, /* End of Arguments */
+ CV_S_COBOLUDT = 0x000b, /* COBOL User-defined Type */
+ CV_S_MANYREG = 0x000c, /* Many Registers */
+ CV_S_RETURN = 0x000d, /* Function Return */
+ CV_S_ENTRYTHIS = 0x000e, /* "this" at Method Entry */
+
+ /* Symbols for 16:16 Segmented Architectures */
+ CV_S_BPREL16 = 0x0100, /* BP Relative 16:16 */
+ CV_S_LDATA16 = 0x0101, /* Local Data 16:16 */
+ CV_S_GDATA16 = 0x0102, /* Global Data Symbol 16:16 */
+ CV_S_PUB16 = 0x0103, /* Public Symbol 16:16 */
+ CV_S_LPROC16 = 0x0104, /* Local Start 16:16 */
+ CV_S_GPROC16 = 0x0105, /* Global Start 16:16 */
+ CV_S_THUNK16 = 0x0106, /* Thunk Start 16:16 */
+ CV_S_BLOCK16 = 0x0107, /* Block Start 16:16 */
+ CV_S_WITH16 = 0x0108, /* With Start 16:16 */
+ CV_S_LABEL16 = 0x0109, /* Code Label 16:16 */
+ CV_S_CEXMODEL16 = 0x0110, /* Change Execution Model 16:16 */
+ CV_S_VFTPATH16 = 0x010b, /* Virtual Function Table Path 16:16 */
+ CV_S_REGREL16 = 0x010c, /* Register Relative 16:16 */
+
+ /* Symbols for 16:32 Segmented Architectures */
+ CV_S_BPREL32 = 0x0200, /* BP Relative 16:32 */
+ CV_S_LDATA32 = 0x0201, /* Local Data 16:32 */
+ CV_S_GDATA32 = 0x0202, /* Global Data Symbol 16:32 */
+ CV_S_PUB32 = 0x0203, /* Public Symbol 16:32 */
+ CV_S_LPROC32 = 0x0204, /* Local Start 16:32 */
+ CV_S_GPROC32 = 0x0205, /* Global Start 16:32 */
+ CV_S_THUNK32 = 0x0206, /* Thunk Start 16:32 */
+ CV_S_BLOCK32 = 0x0207, /* Block Start 16:32 */
+ CV_S_WITH32 = 0x0208, /* With Start 16:32 */
+ CV_S_LABEL32 = 0x0209, /* Code Label 16:32 */
+ CV_S_CEXMODEL32 = 0x0210, /* Change Execution Model 16:32 */
+ CV_S_VFTPATH32 = 0x020b, /* Virtual Function Table Path 16:32 */
+ CV_S_REGREL32 = 0x020c, /* Register Relative 16:32 */
+ CV_S_LTHREAD32 = 0x020d, /* Local Thread Storage 16:32 */
+ CV_S_GTHREAD32 = 0x020e, /* Global Thread Storage 16:32 */
+
+ /* Symbols for MIPS */
+ CV_S_LPROCMIPS = 0x0300, /* Local procedure start MIPS */
+ CV_S_GPROCMIPS = 0x0301, /* Global procedure start MIPS */
+
+ /* Symbols for CV8 - strings are 0 terminated rather than length-prefix.
+ * Incomplete and unofficial.
+ */
+ CV8_S_OBJNAME = 0x1101, /* Object File Name */
+ CV8_S_LABEL32 = 0x1105, /* Code Label 16:32 */
+ CV8_S_LDATA32 = 0x110c, /* Local Data 16:32 */
+ CV8_S_GDATA32 = 0x110d, /* Global Data 16:32 */
+ CV8_S_LPROC32 = 0x1110, /* Local Start 16:32 */
+ CV8_S_COMPILE = 0x1116 /* Compile Flag */
+};
+
+typedef struct cv8_symhead {
+ enum cv8_symheadtype type;
+ yasm_bytecode *start_prevbc;
+ yasm_bytecode *end_prevbc;
+ int first; /* nonzero if first symhead in section */
+} cv8_symhead;
+
+typedef struct cv8_fileinfo {
+ const cv_filename *fn;
+} cv8_fileinfo;
+
+/* Note: each line number group is associated with a file AND a section */
+typedef struct cv8_linepair {
+ unsigned long offset;
+ unsigned long line;
+} cv8_linepair;
+
+/* Decrease linked list overhead a bit doing it this way */
+typedef struct cv8_lineset {
+ STAILQ_ENTRY(cv8_lineset) link;
+ cv8_linepair pairs[126];
+ size_t num_pairs;
+} cv8_lineset;
+
+/* Note: Due to line number sorting requirements (by section offset it seems)
+ * one file may need more than one record per section. */
+typedef struct cv8_lineinfo {
+ STAILQ_ENTRY(cv8_lineinfo) link;
+ const cv_filename *fn; /* filename associated with line numbers */
+ yasm_section *sect; /* section line numbers are for */
+ yasm_symrec *sectsym; /* symbol for beginning of sect */
+ unsigned long num_linenums;
+ int first_in_sect; /* First lineinfo for this section. */
+ STAILQ_HEAD(cv8_lineset_head, cv8_lineset) linesets;
+} cv8_lineinfo;
+
+/* Symbols use a bit of meta-programming to encode formats: each character
+ * of format represents the output generated, as follows:
+ * 'b' : 1 byte value (integer)
+ * 'h' : 2 byte value (integer)
+ * 'w' : 4 byte value (integer)
+ * 'Y' : symrec SECREL+SECTION (pointer)
+ * 'T' : type index (integer)
+ * 'S' : length-prefixed string (pointer)
+ * 'Z' : 0-terminated string (pointer)
+ */
+typedef struct cv_sym {
+ enum cv_symtype type;
+ const char *format;
+ union {
+ unsigned long i;
+ void *p;
+ } args[10];
+} cv_sym;
+
+/* Bytecode callback function prototypes */
+static void cv8_symhead_bc_destroy(void *contents);
+static void cv8_symhead_bc_print(const void *contents, FILE *f,
+ int indent_level);
+static int cv8_symhead_bc_calc_len
+ (yasm_bytecode *bc, yasm_bc_add_span_func add_span, void *add_span_data);
+static int cv8_symhead_bc_tobytes
+ (yasm_bytecode *bc, unsigned char **bufp, unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ /*@null@*/ yasm_output_reloc_func output_reloc);
+
+static void cv8_fileinfo_bc_destroy(void *contents);
+static void cv8_fileinfo_bc_print(const void *contents, FILE *f,
+ int indent_level);
+static int cv8_fileinfo_bc_calc_len
+ (yasm_bytecode *bc, yasm_bc_add_span_func add_span, void *add_span_data);
+static int cv8_fileinfo_bc_tobytes
+ (yasm_bytecode *bc, unsigned char **bufp, unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ /*@null@*/ yasm_output_reloc_func output_reloc);
+
+static void cv8_lineinfo_bc_destroy(void *contents);
+static void cv8_lineinfo_bc_print(const void *contents, FILE *f,
+ int indent_level);
+static int cv8_lineinfo_bc_calc_len
+ (yasm_bytecode *bc, yasm_bc_add_span_func add_span, void *add_span_data);
+static int cv8_lineinfo_bc_tobytes
+ (yasm_bytecode *bc, unsigned char **bufp, unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ /*@null@*/ yasm_output_reloc_func output_reloc);
+
+static void cv_sym_bc_destroy(void *contents);
+static void cv_sym_bc_print(const void *contents, FILE *f, int indent_level);
+static int cv_sym_bc_calc_len
+ (yasm_bytecode *bc, yasm_bc_add_span_func add_span, void *add_span_data);
+static int cv_sym_bc_tobytes
+ (yasm_bytecode *bc, unsigned char **bufp, unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ /*@null@*/ yasm_output_reloc_func output_reloc);
+
+/* Bytecode callback structures */
+static const yasm_bytecode_callback cv8_symhead_bc_callback = {
+ cv8_symhead_bc_destroy,
+ cv8_symhead_bc_print,
+ yasm_bc_finalize_common,
+ NULL,
+ cv8_symhead_bc_calc_len,
+ yasm_bc_expand_common,
+ cv8_symhead_bc_tobytes,
+ 0
+};
+
+static const yasm_bytecode_callback cv8_fileinfo_bc_callback = {
+ cv8_fileinfo_bc_destroy,
+ cv8_fileinfo_bc_print,
+ yasm_bc_finalize_common,
+ NULL,
+ cv8_fileinfo_bc_calc_len,
+ yasm_bc_expand_common,
+ cv8_fileinfo_bc_tobytes,
+ 0
+};
+
+static const yasm_bytecode_callback cv8_lineinfo_bc_callback = {
+ cv8_lineinfo_bc_destroy,
+ cv8_lineinfo_bc_print,
+ yasm_bc_finalize_common,
+ NULL,
+ cv8_lineinfo_bc_calc_len,
+ yasm_bc_expand_common,
+ cv8_lineinfo_bc_tobytes,
+ 0
+};
+
+static const yasm_bytecode_callback cv_sym_bc_callback = {
+ cv_sym_bc_destroy,
+ cv_sym_bc_print,
+ yasm_bc_finalize_common,
+ NULL,
+ cv_sym_bc_calc_len,
+ yasm_bc_expand_common,
+ cv_sym_bc_tobytes,
+ 0
+};
+
+static cv8_symhead *cv8_add_symhead(yasm_section *sect, unsigned long type,
+ int first);
+static void cv8_set_symhead_end(cv8_symhead *head, yasm_bytecode *end_prevbc);
+
+static yasm_bytecode *cv8_add_fileinfo
+ (yasm_section *sect, const cv_filename *fn);
+
+static unsigned long cv_sym_size(const cv_sym *cvs);
+
+
+static cv_sym *
+cv8_add_sym_objname(yasm_section *sect, /*@keep@*/ char *objname)
+{
+ yasm_bytecode *bc;
+ cv_sym *cvs = yasm_xmalloc(sizeof(cv_sym));
+ cvs->type = CV8_S_OBJNAME;
+ cvs->format = "wZ";
+ cvs->args[0].i = 0; /* signature (0=asm) */
+ cvs->args[1].p = objname; /* object filename */
+
+ bc = yasm_bc_create_common(&cv_sym_bc_callback, cvs, 0);
+ bc->len = cv_sym_size(cvs);
+ yasm_cv__append_bc(sect, bc);
+ return cvs;
+}
+
+static cv_sym *
+cv8_add_sym_compile(yasm_object *object, yasm_section *sect,
+ /*@keep@*/ char *creator)
+{
+ yasm_bytecode *bc;
+ cv_sym *cvs = yasm_xmalloc(sizeof(cv_sym));
+ cvs->type = CV8_S_COMPILE;
+ cvs->format = "wwwwZh";
+ cvs->args[0].i = 3; /* language (3=Masm) */
+
+ /* target processor; 0xD0 = AMD64 */
+ if (strcmp(yasm_arch_keyword(object->arch), "x86") == 0) {
+ if (strcmp(yasm_arch_get_machine(object->arch), "amd64") == 0)
+ cvs->args[1].i = 0xD0;
+ else
+ cvs->args[1].i = 0x6; /* 686, FIXME */
+ } else
+ cvs->args[1].i = 0; /* XXX: unknown */
+
+ cvs->args[2].i = 0; /* flags (assume 0 for now) */
+ cvs->args[3].i = 0; /* creator version number (assume 0 for now) */
+ cvs->args[4].p = creator; /* creator string */
+ cvs->args[5].i = 0; /* no pairs of key/value */
+
+ bc = yasm_bc_create_common(&cv_sym_bc_callback, cvs, 0);
+ bc->len = cv_sym_size(cvs);
+ yasm_cv__append_bc(sect, bc);
+ return cvs;
+}
+
+static cv_sym *
+cv8_add_sym_label(yasm_section *sect, yasm_symrec *sym)
+{
+ yasm_bytecode *bc;
+ cv_sym *cvs = yasm_xmalloc(sizeof(cv_sym));
+ cvs->type = CV8_S_LABEL32;
+ cvs->format = "YbZ";
+ cvs->args[0].p = sym; /* symrec for label */
+ cvs->args[1].i = 0; /* flags (assume 0 for now) */
+ cvs->args[2].p = yasm__xstrdup(yasm_symrec_get_name(sym));
+
+ bc = yasm_bc_create_common(&cv_sym_bc_callback, cvs, 0);
+ bc->len = cv_sym_size(cvs);
+ yasm_cv__append_bc(sect, bc);
+ return cvs;
+}
+
+static cv_sym *
+cv8_add_sym_data(yasm_section *sect, unsigned long type, yasm_symrec *sym,
+ int is_global)
+{
+ yasm_bytecode *bc;
+ cv_sym *cvs = yasm_xmalloc(sizeof(cv_sym));
+ cvs->type = is_global ? CV8_S_GDATA32 : CV8_S_LDATA32;
+ cvs->format = "wYZ";
+ cvs->args[0].i = type; /* type index */
+ cvs->args[1].p = sym; /* symrec for label */
+ cvs->args[2].p = yasm__xstrdup(yasm_symrec_get_name(sym));
+
+ bc = yasm_bc_create_common(&cv_sym_bc_callback, cvs, 0);
+ bc->len = cv_sym_size(cvs);
+ yasm_cv__append_bc(sect, bc);
+ return cvs;
+}
+
+static size_t
+cv_dbgfmt_add_file(yasm_dbgfmt_cv *dbgfmt_cv, size_t filenum,
+ const char *filename)
+{
+ char *pathname;
+ size_t i;
+ yasm_md5_context context;
+ FILE *f;
+ unsigned char *buf;
+ size_t len;
+
+ /* Put the filename into the filename table */
+ if (filenum == 0) {
+ /* Look to see if we already have that filename in the table */
+ for (; filenum<dbgfmt_cv->filenames_size; filenum++) {
+ if (!dbgfmt_cv->filenames[filenum].filename ||
+ strcmp(dbgfmt_cv->filenames[filenum].filename, filename) == 0)
+ break;
+ }
+ } else
+ filenum--; /* array index is 0-based */
+
+ /* Realloc table if necessary */
+ if (filenum >= dbgfmt_cv->filenames_allocated) {
+ size_t old_allocated = dbgfmt_cv->filenames_allocated;
+ dbgfmt_cv->filenames_allocated = filenum+32;
+ dbgfmt_cv->filenames = yasm_xrealloc(dbgfmt_cv->filenames,
+ sizeof(cv_filename)*dbgfmt_cv->filenames_allocated);
+ for (i=old_allocated; i<dbgfmt_cv->filenames_allocated; i++) {
+ dbgfmt_cv->filenames[i].pathname = NULL;
+ dbgfmt_cv->filenames[i].filename = NULL;
+ dbgfmt_cv->filenames[i].str_off = 0;
+ dbgfmt_cv->filenames[i].info_off = 0;
+ }
+ }
+
+ /* Calculate MD5 checksum of file */
+ buf = yasm_xmalloc(1024);
+ yasm_md5_init(&context);
+ f = fopen(filename, "rb");
+ if (!f)
+ yasm__fatal(N_("codeview: could not open source file"));
+ while ((len = fread(buf, 1, 1024, f)) > 0)
+ yasm_md5_update(&context, buf, (unsigned long)len);
+ yasm_md5_final(dbgfmt_cv->filenames[filenum].digest, &context);
+ fclose(f);
+ yasm_xfree(buf);
+
+ /* Actually save in table */
+ if (dbgfmt_cv->filenames[filenum].pathname)
+ yasm_xfree(dbgfmt_cv->filenames[filenum].pathname);
+ if (dbgfmt_cv->filenames[filenum].filename)
+ yasm_xfree(dbgfmt_cv->filenames[filenum].filename);
+
+ pathname = yasm__abspath(filename);
+ dbgfmt_cv->filenames[filenum].pathname = pathname;
+ dbgfmt_cv->filenames[filenum].filename = yasm__xstrdup(filename);
+
+ /* Update table size */
+ if (filenum >= dbgfmt_cv->filenames_size)
+ dbgfmt_cv->filenames_size = filenum + 1;
+
+ return filenum;
+}
+
+static yasm_bytecode *
+cv_append_str(yasm_section *sect, const char *str)
+{
+ yasm_datavalhead dvs;
+ yasm_bytecode *bc;
+
+ yasm_dvs_initialize(&dvs);
+ yasm_dvs_append(&dvs, yasm_dv_create_string(yasm__xstrdup(str),
+ strlen(str)));
+ bc = yasm_bc_create_data(&dvs, 1, 1, NULL, 0);
+ yasm_bc_finalize(bc, yasm_cv__append_bc(sect, bc));
+ yasm_bc_calc_len(bc, NULL, NULL);
+ return bc;
+}
+
+typedef struct cv_line_info {
+ yasm_section *debug_symline;
+ yasm_object *object;
+ yasm_dbgfmt_cv *dbgfmt_cv;
+ yasm_linemap *linemap;
+ yasm_errwarns *errwarns;
+ unsigned int num_lineinfos;
+ STAILQ_HEAD(cv8_lineinfo_head, cv8_lineinfo) cv8_lineinfos;
+ /*@null@*/ cv8_lineinfo *cv8_cur_li;
+ /*@null@*/ cv8_lineset *cv8_cur_ls;
+} cv_line_info;
+
+static int
+cv_generate_line_bc(yasm_bytecode *bc, /*@null@*/ void *d)
+{
+ cv_line_info *info = (cv_line_info *)d;
+ yasm_dbgfmt_cv *dbgfmt_cv = info->dbgfmt_cv;
+ size_t i;
+ const char *filename;
+ unsigned long line;
+ /*@null@*/ yasm_bytecode *nextbc = yasm_bc__next(bc);
+ yasm_section *sect = yasm_bc_get_section(bc);
+
+ if (nextbc && bc->offset == nextbc->offset)
+ return 0;
+
+ yasm_linemap_lookup(info->linemap, bc->line, &filename, &line);
+
+ if (!info->cv8_cur_li
+ || strcmp(filename, info->cv8_cur_li->fn->filename) != 0) {
+ yasm_bytecode *sectbc;
+ char symname[8];
+ int first_in_sect = !info->cv8_cur_li;
+
+ /* Find file */
+ for (i=0; i<dbgfmt_cv->filenames_size; i++) {
+ if (strcmp(filename, dbgfmt_cv->filenames[i].filename) == 0)
+ break;
+ }
+ if (i >= dbgfmt_cv->filenames_size)
+ yasm_internal_error(N_("could not find filename in table"));
+
+ /* and create new lineinfo structure */
+ info->cv8_cur_li = yasm_xmalloc(sizeof(cv8_lineinfo));
+ info->cv8_cur_li->fn = &dbgfmt_cv->filenames[i];
+ info->cv8_cur_li->sect = sect;
+ info->cv8_cur_li->first_in_sect = first_in_sect;
+ sectbc = yasm_section_bcs_first(sect);
+ if (sectbc->symrecs && sectbc->symrecs[0])
+ info->cv8_cur_li->sectsym = sectbc->symrecs[0];
+ else {
+ sprintf(symname, ".%06u", info->num_lineinfos++);
+ info->cv8_cur_li->sectsym =
+ yasm_symtab_define_label(info->object->symtab, symname, sectbc,
+ 1, 0);
+ }
+ info->cv8_cur_li->num_linenums = 0;
+ STAILQ_INIT(&info->cv8_cur_li->linesets);
+ STAILQ_INSERT_TAIL(&info->cv8_lineinfos, info->cv8_cur_li, link);
+ info->cv8_cur_ls = NULL;
+ }
+
+ /* build new lineset if necessary */
+ if (!info->cv8_cur_ls || info->cv8_cur_ls->num_pairs >= 126) {
+ info->cv8_cur_ls = yasm_xmalloc(sizeof(cv8_lineset));
+ info->cv8_cur_ls->num_pairs = 0;
+ STAILQ_INSERT_TAIL(&info->cv8_cur_li->linesets, info->cv8_cur_ls, link);
+ }
+
+ /* add linepair for this bytecode */
+ info->cv8_cur_ls->pairs[info->cv8_cur_ls->num_pairs].offset = bc->offset;
+ info->cv8_cur_ls->pairs[info->cv8_cur_ls->num_pairs].line =
+ 0x80000000 | line;
+ info->cv8_cur_ls->num_pairs++;
+ info->cv8_cur_li->num_linenums++;
+
+ return 0;
+}
+
+static int
+cv_generate_line_section(yasm_section *sect, /*@null@*/ void *d)
+{
+ cv_line_info *info = (cv_line_info *)d;
+
+ if (!yasm_section_is_code(sect))
+ return 0; /* not code, so no line data for this section */
+
+ info->cv8_cur_li = NULL;
+ info->cv8_cur_ls = NULL;
+
+ yasm_section_bcs_traverse(sect, info->errwarns, info, cv_generate_line_bc);
+
+ return 0;
+}
+
+static int
+cv_generate_filename(const char *filename, void *d)
+{
+ cv_dbgfmt_add_file((yasm_dbgfmt_cv *)d, 0, filename);
+ return 0;
+}
+
+static int
+cv_generate_sym(yasm_symrec *sym, void *d)
+{
+ cv_line_info *info = (cv_line_info *)d;
+ yasm_bytecode *precbc;
+ const char *name = yasm_symrec_get_name(sym);
+
+ /* only care about labels (for now). Don't put in symbols starting with
+ * ".", as these are typically internally generated ones (like section
+ * symbols).
+ */
+ if (name[0] == '.' || !yasm_symrec_get_label(sym, &precbc))
+ return 0;
+
+ /* TODO: add data types; until then, just mark everything as UBYTE */
+ if (yasm_section_is_code(yasm_bc_get_section(precbc)))
+ cv8_add_sym_label(info->debug_symline, sym);
+ else
+ cv8_add_sym_data(info->debug_symline, 0x20, sym,
+ yasm_symrec_get_visibility(sym) & YASM_SYM_GLOBAL?1:0);
+ return 0;
+}
+
+yasm_section *
+yasm_cv__generate_symline(yasm_object *object, yasm_linemap *linemap,
+ yasm_errwarns *errwarns)
+{
+ yasm_dbgfmt_cv *dbgfmt_cv = (yasm_dbgfmt_cv *)object->dbgfmt;
+ cv_line_info info;
+ int new;
+ size_t i;
+ cv8_symhead *head;
+ cv8_lineinfo *li;
+ yasm_bytecode *bc;
+ unsigned long off;
+
+ /* Generate filenames based on linemap */
+ yasm_linemap_traverse_filenames(linemap, dbgfmt_cv,
+ cv_generate_filename);
+
+ info.object = object;
+ info.dbgfmt_cv = dbgfmt_cv;
+ info.linemap = linemap;
+ info.errwarns = errwarns;
+ info.debug_symline =
+ yasm_object_get_general(object, ".debug$S", 1, 0, 0, &new, 0);
+ info.num_lineinfos = 0;
+ STAILQ_INIT(&info.cv8_lineinfos);
+ info.cv8_cur_li = NULL;
+ info.cv8_cur_ls = NULL;
+
+ /* source filenames string table */
+ head = cv8_add_symhead(info.debug_symline, CV8_FILE_STRTAB, 1);
+ cv_append_str(info.debug_symline, "");
+ off = 1;
+ for (i=0; i<dbgfmt_cv->filenames_size; i++) {
+ if (!dbgfmt_cv->filenames[i].pathname) {
+ yasm_error_set(YASM_ERROR_GENERAL,
+ N_("codeview file number %d unassigned"), i+1);
+ yasm_errwarn_propagate(errwarns, 0);
+ continue;
+ }
+ bc = cv_append_str(info.debug_symline,
+ dbgfmt_cv->filenames[i].pathname);
+ dbgfmt_cv->filenames[i].str_off = off;
+ off += bc->len;
+ }
+ cv8_set_symhead_end(head, yasm_section_bcs_last(info.debug_symline));
+
+ /* Align 4 */
+ bc = yasm_bc_create_align
+ (yasm_expr_create_ident(yasm_expr_int(yasm_intnum_create_uint(4)), 0),
+ NULL, NULL, NULL, 0);
+ yasm_bc_finalize(bc, yasm_cv__append_bc(info.debug_symline, bc));
+ yasm_bc_calc_len(bc, NULL, NULL);
+
+ /* source file info table */
+ head = cv8_add_symhead(info.debug_symline, CV8_FILE_INFO, 0);
+ off = 0;
+ for (i=0; i<dbgfmt_cv->filenames_size; i++) {
+ if (!dbgfmt_cv->filenames[i].pathname)
+ continue;
+ bc = cv8_add_fileinfo(info.debug_symline, &dbgfmt_cv->filenames[i]);
+ dbgfmt_cv->filenames[i].info_off = off;
+ off += bc->len;
+ }
+ cv8_set_symhead_end(head, yasm_section_bcs_last(info.debug_symline));
+
+ /* Already aligned 4 */
+
+ /* Generate line numbers for sections */
+ yasm_object_sections_traverse(object, (void *)&info,
+ cv_generate_line_section);
+
+ /* Output line numbers for sections */
+ head = NULL;
+ STAILQ_FOREACH(li, &info.cv8_lineinfos, link) {
+ if (li->first_in_sect) {
+ if (head)
+ cv8_set_symhead_end(head, yasm_section_bcs_last(info.debug_symline));
+ head = cv8_add_symhead(info.debug_symline, CV8_LINE_NUMS, 0);
+ }
+ bc = yasm_bc_create_common(&cv8_lineinfo_bc_callback, li, 0);
+ bc->len = (li->first_in_sect ? 24 : 12) + li->num_linenums*8;
+ yasm_cv__append_bc(info.debug_symline, bc);
+ }
+ if (head)
+ cv8_set_symhead_end(head, yasm_section_bcs_last(info.debug_symline));
+
+ /* Already aligned 4 */
+
+ /* Output debugging symbols */
+ head = cv8_add_symhead(info.debug_symline, CV8_DEBUG_SYMS, 0);
+ /* add object and compile flag first */
+ cv8_add_sym_objname(info.debug_symline,
+ yasm__abspath(object->obj_filename));
+ if (getenv("YASM_TEST_SUITE"))
+ cv8_add_sym_compile(object, info.debug_symline,
+ yasm__xstrdup("yasm HEAD"));
+ else
+ cv8_add_sym_compile(object, info.debug_symline,
+ yasm__xstrdup(PACKAGE_STRING));
+ /* then iterate through symbol table */
+ yasm_symtab_traverse(object->symtab, &info, cv_generate_sym);
+ cv8_set_symhead_end(head, yasm_section_bcs_last(info.debug_symline));
+
+ /* Align 4 at end */
+ bc = yasm_bc_create_align
+ (yasm_expr_create_ident(yasm_expr_int(yasm_intnum_create_uint(4)), 0),
+ NULL, NULL, NULL, 0);
+ yasm_bc_finalize(bc, yasm_cv__append_bc(info.debug_symline, bc));
+ yasm_bc_calc_len(bc, NULL, NULL);
+
+ return info.debug_symline;
+}
+
+static void
+cv_out_sym(yasm_symrec *sym, unsigned long off, yasm_bytecode *bc,
+ unsigned char **bufp, void *d, yasm_output_value_func output_value)
+{
+ yasm_value val;
+
+ /* sym in its section */
+ yasm_value_init_sym(&val, sym, 32);
+ val.section_rel = 1;
+ output_value(&val, *bufp, 4, off, bc, 0, d);
+ *bufp += 4;
+
+ /* section index */
+ yasm_value_init_sym(&val, sym, 16);
+ val.seg_of = 1;
+ output_value(&val, *bufp, 2, off+4, bc, 0, d);
+ *bufp += 2;
+}
+
+static cv8_symhead *
+cv8_add_symhead(yasm_section *sect, unsigned long type, int first)
+{
+ cv8_symhead *head;
+ yasm_bytecode *bc;
+
+ head = yasm_xmalloc(sizeof(cv8_symhead));
+ head->type = type;
+ head->first = first;
+ head->start_prevbc = yasm_section_bcs_last(sect);
+
+ bc = yasm_bc_create_common(&cv8_symhead_bc_callback, head, 0);
+ if (first)
+ bc->len = 12;
+ else
+ bc->len = 8;
+
+ head->end_prevbc = bc;
+ yasm_cv__append_bc(sect, bc);
+ return head;
+}
+
+static void
+cv8_set_symhead_end(cv8_symhead *head, yasm_bytecode *end_prevbc)
+{
+ head->end_prevbc = end_prevbc;
+}
+
+static void
+cv8_symhead_bc_destroy(void *contents)
+{
+ yasm_xfree(contents);
+}
+
+static void
+cv8_symhead_bc_print(const void *contents, FILE *f, int indent_level)
+{
+ /* TODO */
+}
+
+static int
+cv8_symhead_bc_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
+ void *add_span_data)
+{
+ yasm_internal_error(N_("tried to calc_len a codeview symhead bytecode"));
+ /*@notreached@*/
+ return 0;
+}
+
+static int
+cv8_symhead_bc_tobytes(yasm_bytecode *bc, unsigned char **bufp,
+ unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ yasm_output_reloc_func output_reloc)
+{
+ yasm_object *object = yasm_section_get_object(bc->section);
+ cv8_symhead *head = (cv8_symhead *)bc->contents;
+ unsigned char *buf = *bufp;
+ yasm_intnum *intn, *cval;
+
+ cval = yasm_intnum_create_uint(4);
+ /* Output "version" if first */
+ if (head->first) {
+ yasm_arch_intnum_tobytes(object->arch, cval, buf, 4, 32, 0, bc, 0);
+ buf += 4;
+ }
+
+ /* Type contained - 4 bytes */
+ yasm_intnum_set_uint(cval, head->type);
+ yasm_arch_intnum_tobytes(object->arch, cval, buf, 4, 32, 0, bc, 0);
+ buf += 4;
+
+ /* Total length of info (following this field) - 4 bytes */
+ yasm_intnum_set_uint(cval, bc->len);
+ intn = yasm_calc_bc_dist(head->start_prevbc, head->end_prevbc);
+ yasm_intnum_calc(intn, YASM_EXPR_SUB, cval);
+ yasm_arch_intnum_tobytes(object->arch, intn, buf, 4, 32, 0, bc, 0);
+ buf += 4;
+ yasm_intnum_destroy(intn);
+
+ *bufp = buf;
+
+ yasm_intnum_destroy(cval);
+ return 0;
+}
+
+static yasm_bytecode *
+cv8_add_fileinfo(yasm_section *sect, const cv_filename *fn)
+{
+ cv8_fileinfo *fi;
+ yasm_bytecode *bc;
+
+ fi = yasm_xmalloc(sizeof(cv8_fileinfo));
+ fi->fn = fn;
+
+ bc = yasm_bc_create_common(&cv8_fileinfo_bc_callback, fi, 0);
+ bc->len = 24;
+
+ yasm_cv__append_bc(sect, bc);
+ return bc;
+}
+
+static void
+cv8_fileinfo_bc_destroy(void *contents)
+{
+ yasm_xfree(contents);
+}
+
+static void
+cv8_fileinfo_bc_print(const void *contents, FILE *f, int indent_level)
+{
+ /* TODO */
+}
+
+static int
+cv8_fileinfo_bc_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
+ void *add_span_data)
+{
+ yasm_internal_error(N_("tried to calc_len a codeview fileinfo bytecode"));
+ /*@notreached@*/
+ return 0;
+}
+
+static int
+cv8_fileinfo_bc_tobytes(yasm_bytecode *bc, unsigned char **bufp,
+ unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ yasm_output_reloc_func output_reloc)
+{
+ yasm_object *object = yasm_section_get_object(bc->section);
+ cv8_fileinfo *fi = (cv8_fileinfo *)bc->contents;
+ unsigned char *buf = *bufp;
+ yasm_intnum *cval;
+ int i;
+
+ /* Offset in filename string table */
+ cval = yasm_intnum_create_uint(fi->fn->str_off);
+ yasm_arch_intnum_tobytes(object->arch, cval, buf, 4, 32, 0, bc, 0);
+ buf += 4;
+
+ /* Checksum type/length */
+ yasm_intnum_set_uint(cval, 0x0110);
+ yasm_arch_intnum_tobytes(object->arch, cval, buf, 2, 16, 0, bc, 0);
+ buf += 2;
+
+ /* Checksum */
+ for (i=0; i<16; i++)
+ YASM_WRITE_8(buf, fi->fn->digest[i]);
+
+ /* Pad */
+ YASM_WRITE_8(buf, 0);
+ YASM_WRITE_8(buf, 0);
+
+ *bufp = buf;
+
+ yasm_intnum_destroy(cval);
+ return 0;
+}
+
+static void
+cv8_lineinfo_bc_destroy(void *contents)
+{
+ cv8_lineinfo *li = (cv8_lineinfo *)contents;
+ cv8_lineset *ls1, *ls2;
+
+ /* delete line sets */
+ ls1 = STAILQ_FIRST(&li->linesets);
+ while (ls1) {
+ ls2 = STAILQ_NEXT(ls1, link);
+ yasm_xfree(ls1);
+ ls1 = ls2;
+ }
+
+ yasm_xfree(contents);
+}
+
+static void
+cv8_lineinfo_bc_print(const void *contents, FILE *f, int indent_level)
+{
+ /* TODO */
+}
+
+static int
+cv8_lineinfo_bc_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
+ void *add_span_data)
+{
+ yasm_internal_error(N_("tried to calc_len a codeview linehead bytecode"));
+ /*@notreached@*/
+ return 0;
+}
+
+static int
+cv8_lineinfo_bc_tobytes(yasm_bytecode *bc, unsigned char **bufp,
+ unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ yasm_output_reloc_func output_reloc)
+{
+ yasm_object *object = yasm_section_get_object(bc->section);
+ cv8_lineinfo *li = (cv8_lineinfo *)bc->contents;
+ unsigned char *buf = *bufp;
+ yasm_intnum *cval;
+ unsigned long i;
+ cv8_lineset *ls;
+
+ if (li->first_in_sect) {
+ /* start offset and section */
+ cv_out_sym(li->sectsym, (unsigned long)(buf - bufstart), bc, &buf,
+ d, output_value);
+
+ /* Two bytes of pad/alignment */
+ YASM_WRITE_8(buf, 0);
+ YASM_WRITE_8(buf, 0);
+
+ /* Section length covered by line number info */
+ cval = yasm_calc_bc_dist(yasm_section_bcs_first(li->sect),
+ yasm_section_bcs_last(li->sect));
+ yasm_arch_intnum_tobytes(object->arch, cval, buf, 4, 32, 0, bc, 0);
+ yasm_intnum_destroy(cval);
+ buf += 4;
+ }
+
+ /* Offset of source file in info table */
+ cval = yasm_intnum_create_uint(li->fn->info_off);
+ yasm_arch_intnum_tobytes(object->arch, cval, buf, 4, 32, 0, bc, 0);
+ buf += 4;
+
+ /* Number of line number pairs */
+ yasm_intnum_set_uint(cval, li->num_linenums);
+ yasm_arch_intnum_tobytes(object->arch, cval, buf, 4, 32, 0, bc, 0);
+ buf += 4;
+
+ /* Number of bytes of line number pairs + 12 (no, I don't know why) */
+ yasm_intnum_set_uint(cval, li->num_linenums*8+12);
+ yasm_arch_intnum_tobytes(object->arch, cval, buf, 4, 32, 0, bc, 0);
+ buf += 4;
+
+ /* Offset / line number pairs */
+ i = 0;
+ STAILQ_FOREACH(ls, &li->linesets, link) {
+ unsigned long j;
+ for (j=0; i<li->num_linenums && j<126; i++, j++) {
+ /* offset in section */
+ yasm_intnum_set_uint(cval, ls->pairs[j].offset);
+ yasm_arch_intnum_tobytes(object->arch, cval, buf, 4, 32, 0, bc, 0);
+ buf += 4;
+
+ /* line number in file */
+ yasm_intnum_set_uint(cval, ls->pairs[j].line);
+ yasm_arch_intnum_tobytes(object->arch, cval, buf, 4, 32, 0, bc, 0);
+ buf += 4;
+ }
+ }
+
+ *bufp = buf;
+
+ yasm_intnum_destroy(cval);
+ return 0;
+}
+
+static unsigned long
+cv_sym_size(const cv_sym *cvs)
+{
+ const char *ch = cvs->format;
+ unsigned long len = 4; /* sym length and type */
+ unsigned long slen;
+ int arg = 0;
+
+ while (*ch) {
+ switch (*ch) {
+ case 'b':
+ len++;
+ arg++;
+ break;
+ case 'h':
+ len += 2;
+ arg++;
+ break;
+ case 'w':
+ len += 4;
+ arg++;
+ break;
+ case 'Y':
+ len += 6; /* XXX: will be 4 in 16-bit version */
+ arg++;
+ break;
+ case 'T':
+ len += 4; /* XXX: will be 2 in CV4 */
+ arg++;
+ break;
+ case 'S':
+ len += 1; /* XXX: is this 1 or 2? */
+ slen = (unsigned long)strlen((const char *)cvs->args[arg++].p);
+ len += slen <= 0xff ? slen : 0xff;
+ break;
+ case 'Z':
+ len +=
+ (unsigned long)strlen((const char *)cvs->args[arg++].p) + 1;
+ break;
+ default:
+ yasm_internal_error(N_("unknown sym format character"));
+ }
+ ch++;
+ }
+
+ return len;
+}
+
+static void
+cv_sym_bc_destroy(void *contents)
+{
+ cv_sym *cvs = (cv_sym *)contents;
+ const char *ch = cvs->format;
+ int arg = 0;
+
+ while (*ch) {
+ switch (*ch) {
+ case 'b':
+ case 'h':
+ case 'w':
+ case 'Y':
+ case 'T':
+ arg++;
+ break; /* nothing to destroy */
+ case 'S':
+ case 'Z':
+ yasm_xfree(cvs->args[arg++].p);
+ break;
+ default:
+ yasm_internal_error(N_("unknown sym format character"));
+ }
+ ch++;
+ }
+
+ yasm_xfree(contents);
+}
+
+static void
+cv_sym_bc_print(const void *contents, FILE *f, int indent_level)
+{
+ /* TODO */
+}
+
+static int
+cv_sym_bc_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
+ void *add_span_data)
+{
+ yasm_internal_error(N_("tried to calc_len a codeview sym bytecode"));
+ /*@notreached@*/
+ return 0;
+}
+
+static int
+cv_sym_bc_tobytes(yasm_bytecode *bc, unsigned char **bufp,
+ unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ yasm_output_reloc_func output_reloc)
+{
+ yasm_object *object = yasm_section_get_object(bc->section);
+ cv_sym *cvs = (cv_sym *)bc->contents;
+ unsigned char *buf = *bufp;
+ yasm_intnum *cval;
+ const char *ch = cvs->format;
+ size_t len;
+ int arg = 0;
+
+ /* Total length of record (following this field) - 2 bytes */
+ cval = yasm_intnum_create_uint(bc->len-2);
+ yasm_arch_intnum_tobytes(object->arch, cval, buf, 2, 16, 0, bc, 1);
+ buf += 2;
+
+ /* Type contained - 2 bytes */
+ yasm_intnum_set_uint(cval, cvs->type);
+ yasm_arch_intnum_tobytes(object->arch, cval, buf, 2, 16, 0, bc, 0);
+ buf += 2;
+
+ while (*ch) {
+ switch (*ch) {
+ case 'b':
+ YASM_WRITE_8(buf, cvs->args[arg].i);
+ arg++;
+ break;
+ case 'h':
+ yasm_intnum_set_uint(cval, cvs->args[arg++].i);
+ yasm_arch_intnum_tobytes(object->arch, cval, buf, 2, 16, 0,
+ bc, 0);
+ buf += 2;
+ break;
+ case 'w':
+ yasm_intnum_set_uint(cval, cvs->args[arg++].i);
+ yasm_arch_intnum_tobytes(object->arch, cval, buf, 4, 32, 0,
+ bc, 0);
+ buf += 4;
+ break;
+ case 'Y':
+ cv_out_sym((yasm_symrec *)cvs->args[arg++].p,
+ (unsigned long)(buf-bufstart), bc, &buf, d,
+ output_value);
+ break;
+ case 'T':
+ yasm_intnum_set_uint(cval, cvs->args[arg++].i);
+ yasm_arch_intnum_tobytes(object->arch, cval, buf, 4, 32, 0,
+ bc, 0);
+ buf += 4; /* XXX: will be 2 in CV4 */
+ break;
+ case 'S':
+ len = strlen((char *)cvs->args[arg].p);
+ len = len <= 0xff ? len : 0xff;
+ YASM_WRITE_8(buf, len);
+ memcpy(buf, (char *)cvs->args[arg].p, len);
+ buf += len;
+ arg++;
+ break;
+ case 'Z':
+ len = strlen((char *)cvs->args[arg].p)+1;
+ memcpy(buf, (char *)cvs->args[arg].p, len);
+ buf += len;
+ arg++;
+ break;
+ default:
+ yasm_internal_error(N_("unknown leaf format character"));
+ }
+ ch++;
+ }
+
+ *bufp = buf;
+
+ yasm_intnum_destroy(cval);
+ return 0;
+}
diff --git a/contrib/tools/yasm/modules/dbgfmts/codeview/cv-type.c b/contrib/tools/yasm/modules/dbgfmts/codeview/cv-type.c
index ebccbdeda9..2a52f18436 100644
--- a/contrib/tools/yasm/modules/dbgfmts/codeview/cv-type.c
+++ b/contrib/tools/yasm/modules/dbgfmts/codeview/cv-type.c
@@ -1,778 +1,778 @@
-/*
- * CodeView debugging format - type information
- *
- * Copyright (C) 2006-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the author nor the names of other contributors
- * may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <libyasm.h>
-
-#include "cv-dbgfmt.h"
-
-enum cv_reservedtype {
- /* Bitfields representation - type */
- CV_TYPE_SPECIAL = 0x00<<4, /* Special */
- CV_TYPE_SIGNED = 0x01<<4, /* Signed integral value */
- CV_TYPE_UNSIGNED = 0x02<<4, /* Unsigned integral value */
- CV_TYPE_BOOLEAN = 0x03<<4, /* Boolean */
- CV_TYPE_REAL = 0x04<<4, /* Real */
- CV_TYPE_COMPLEX = 0x05<<4, /* Complex */
- CV_TYPE_SPECIAL2 = 0x06<<4, /* Special2 */
- CV_TYPE_REALINT = 0x07<<4, /* Really int value */
-
- /* "size" of CV_TYPE_SPECIAL */
- CV_SPECIAL_NOTYPE = 0x00<<0, /* No type */
- CV_SPECIAL_ABS = 0x01<<0, /* Absolute symbol */
- CV_SPECIAL_SEG = 0x02<<0, /* Segment */
- CV_SPECIAL_VOID = 0x03<<0, /* Void */
- CV_SPECIAL_CURRENCY = 0x04<<0, /* Basic 8-byte currency value */
- CV_SPECIAL_NEARBSTR = 0x05<<0, /* Near Basic string */
- CV_SPECIAL_FARBSTR = 0x06<<0, /* Far Basic string */
-
- /* Size of CV_TYPE_SIGNED, CV_TYPE_UNSIGNED, and CV_TYPE_BOOLEAN */
- CV_INTEGER_1BYTE = 0x00<<0, /* 1 byte */
- CV_INTEGER_2BYTE = 0x01<<0, /* 2 byte */
- CV_INTEGER_4BYTE = 0x02<<0, /* 4 byte */
- CV_INTEGER_8BYTE = 0x03<<0, /* 8 byte */
-
- /* Size of CV_TYPE_REAL and CV_TYPE_COMPLEX */
- CV_REAL_32BIT = 0x00<<0, /* 32 bit */
- CV_REAL_64BIT = 0x01<<0, /* 64 bit */
- CV_REAL_80BIT = 0x02<<0, /* 80 bit */
- CV_REAL_128BIT = 0x03<<0, /* 128 bit */
- CV_REAL_48BIT = 0x04<<0, /* 48 bit */
-
- /* "size" of CV_TYPE_SPECIAL2 */
- CV_SPECIAL2_BIT = 0x00<<0, /* Bit */
- CV_SPECIAL2_PASCHAR = 0x01<<0, /* Pascal CHAR */
-
- /* Size of CV_TYPE_REALINT */
- CV_REALINT_CHAR = 0x00<<0, /* Char */
- CV_REALINT_WCHAR = 0x01<<0, /* Wide character */
- CV_REALINT_S2BYTE = 0x02<<0, /* 2-byte signed integer */
- CV_REALINT_U2BYTE = 0x03<<0, /* 2-byte unsigned integer */
- CV_REALINT_S4BYTE = 0x04<<0, /* 4-byte signed integer */
- CV_REALINT_U4BYTE = 0x05<<0, /* 4-byte unsigned integer */
- CV_REALINT_S8BYTE = 0x06<<0, /* 8-byte signed integer */
- CV_REALINT_U8BYTE = 0x07<<0, /* 8-byte unsigned integer */
-
- /* Mode */
- CV_MODE_DIRECT = 0x00<<8, /* Direct; not a pointer */
- CV_MODE_NEAR = 0x01<<8, /* Near pointer */
- CV_MODE_FAR = 0x02<<8, /* Far pointer */
- CV_MODE_HUGE = 0x03<<8, /* Huge pointer */
- CV_MODE_NEAR32 = 0x04<<8, /* 32-bit near pointer */
- CV_MODE_FAR32 = 0x05<<8, /* 32-bit far pointer */
- CV_MODE_NEAR64 = 0x06<<8, /* 64-bit near pointer */
-
- /* Pure primitive type listing - based on above bitfields */
-
- /* Special Types */
- CV_T_NOTYPE = 0x0000, /* Uncharacterized type (no type) */
- CV_T_ABS = 0x0001, /* Absolute symbol */
- CV_T_SEGMENT = 0x0002, /* Segment type */
- CV_T_VOID = 0x0003, /* Void */
- CV_T_PVOID = 0x0103, /* Near pointer to void */
- CV_T_PFVOID = 0x0203, /* Far pointer to void */
- CV_T_PHVOID = 0x0303, /* Huge pointer to void */
- CV_T_32PVOID = 0x0403, /* 32-bit near pointer to void */
- CV_T_32PFVOID = 0x0503, /* 32-bit far pointer to void */
- CV_T_CURRENCY = 0x0004, /* Basic 8-byte currency value */
- CV_T_NBASICSTR = 0x0005, /* Near Basic string */
- CV_T_FBASICSTR = 0x0006, /* Far Basic string */
- CV_T_BIT = 0x0060, /* Bit */
- CV_T_PASCHAR = 0x0061, /* Pascal CHAR */
- /* Character Types */
- CV_T_CHAR = 0x0010, /* 8-bit signed */
- CV_T_UCHAR = 0x0020, /* 8-bit unsigned */
- CV_T_PCHAR = 0x0110, /* Near pointer to 8-bit signed */
- CV_T_PUCHAR = 0x0120, /* Near pointer to 8-bit unsigned */
- CV_T_PFCHAR = 0x0210, /* Far pointer to 8-bit signed */
- CV_T_PFUCHAR = 0x0220, /* Far pointer to 8-bit unsigned */
- CV_T_PHCHAR = 0x0310, /* Huge pointer to 8-bit signed */
- CV_T_PHUCHAR = 0x0320, /* Huge pointer to 8-bit unsigned */
- CV_T_32PCHAR = 0x0410, /* 16:32 near pointer to 8-bit signed */
- CV_T_32PUCHAR = 0x0420, /* 16:32 near pointer to 8-bit unsigned */
- CV_T_32PFCHAR = 0x0510, /* 16:32 far pointer to 8-bit signed */
- CV_T_32PFUCHAR = 0x0520, /* 16:32 far pointer to 8-bit unsigned */
- /* Real Character Types */
- CV_T_RCHAR = 0x0070, /* Real char */
- CV_T_PRCHAR = 0x0170, /* Near pointer to a real char */
- CV_T_PFRCHAR = 0x0270, /* Far pointer to a real char */
- CV_T_PHRCHAR = 0x0370, /* Huge pointer to a real char */
- CV_T_32PRCHAR = 0x0470, /* 16:32 near pointer to a real char */
- CV_T_32PFRCHAR = 0x0570, /* 16:32 far pointer to a real char */
- /* Wide Character Types */
- CV_T_WCHAR = 0x0071, /* Wide char */
- CV_T_PWCHAR = 0x0171, /* Near pointer to a wide char */
- CV_T_PFWCHAR = 0x0271, /* Far pointer to a wide char */
- CV_T_PHWCHAR = 0x0371, /* Huge pointer to a wide char */
- CV_T_32PWCHAR = 0x0471, /* 16:32 near pointer to a wide char */
- CV_T_32PFWCHAR = 0x0571, /* 16:32 far pointer to a wide char */
- /* Real 16-bit Integer Types */
- CV_T_INT2 = 0x0072, /* Real 16-bit signed int */
- CV_T_UINT2 = 0x0073, /* Real 16-bit unsigned int */
- CV_T_PINT2 = 0x0172, /* Near pointer to 16-bit signed int */
- CV_T_PUINT2 = 0x0173, /* Near pointer to 16-bit unsigned int */
- CV_T_PFINT2 = 0x0272, /* Far pointer to 16-bit signed int */
- CV_T_PFUINT2 = 0x0273, /* Far pointer to 16-bit unsigned int */
- CV_T_PHINT2 = 0x0372, /* Huge pointer to 16-bit signed int */
- CV_T_PHUINT2 = 0x0373, /* Huge pointer to 16-bit unsigned int */
- CV_T_32PINT2 = 0x0472, /* 16:32 near pointer to 16-bit signed int */
- CV_T_32PUINT2 = 0x0473, /* 16:32 near pointer to 16-bit unsigned int */
- CV_T_32PFINT2 = 0x0572, /* 16:32 far pointer to 16-bit signed int */
- CV_T_32PFUINT2 = 0x0573, /* 16:32 far pointer to 16-bit unsigned int */
- /* 16-bit Short Types */
- CV_T_SHORT = 0x0011, /* 16-bit signed */
- CV_T_USHORT = 0x0021, /* 16-bit unsigned */
- CV_T_PSHORT = 0x0111, /* Near pointer to 16-bit signed */
- CV_T_PUSHORT = 0x0121, /* Near pointer to 16-bit unsigned */
- CV_T_PFSHORT = 0x0211, /* Far pointer to 16-bit signed */
- CV_T_PFUSHORT = 0x0221, /* Far pointer to 16-bit unsigned */
- CV_T_PHSHORT = 0x0311, /* Huge pointer to 16-bit signed */
- CV_T_PHUSHORT = 0x0321, /* Huge pointer to 16-bit unsigned */
- CV_T_32PSHORT = 0x0411, /* 16:32 near pointer to 16-bit signed */
- CV_T_32PUSHORT = 0x0421, /* 16:32 near pointer to 16-bit unsigned */
- CV_T_32PFSHORT = 0x0511, /* 16:32 far pointer to 16-bit signed */
- CV_T_32PFUSHORT = 0x0521, /* 16:32 far pointer to 16-bit unsigned */
- /* Real 32-bit Integer Types */
- CV_T_INT4 = 0x0074, /* Real 32-bit signed int */
- CV_T_UINT4 = 0x0075, /* Real 32-bit unsigned int */
- CV_T_PINT4 = 0x0174, /* Near pointer to 32-bit signed int */
- CV_T_PUINT4 = 0x0175, /* Near pointer to 32-bit unsigned int */
- CV_T_PFINT4 = 0x0274, /* Far pointer to 32-bit signed int */
- CV_T_PFUINT4 = 0x0275, /* Far pointer to 32-bit unsigned int */
- CV_T_PHINT4 = 0x0374, /* Huge pointer to 32-bit signed int */
- CV_T_PHUINT4 = 0x0375, /* Huge pointer to 32-bit unsigned int */
- CV_T_32PINT4 = 0x0474, /* 16:32 near pointer to 32-bit signed int */
- CV_T_32PUINT4 = 0x0475, /* 16:32 near pointer to 32-bit unsigned int */
- CV_T_32PFINT4 = 0x0574, /* 16:32 far pointer to 32-bit signed int */
- CV_T_32PFUINT4 = 0x0575, /* 16:32 far pointer to 32-bit unsigned int */
- /* 32-bit Long Types */
- CV_T_LONG = 0x0012, /* 32-bit signed */
- CV_T_ULONG = 0x0022, /* 32-bit unsigned */
- CV_T_PLONG = 0x0112, /* Near pointer to 32-bit signed */
- CV_T_PULONG = 0x0122, /* Near pointer to 32-bit unsigned */
- CV_T_PFLONG = 0x0212, /* Far pointer to 32-bit signed */
- CV_T_PFULONG = 0x0222, /* Far pointer to 32-bit unsigned */
- CV_T_PHLONG = 0x0312, /* Huge pointer to 32-bit signed */
- CV_T_PHULONG = 0x0322, /* Huge pointer to 32-bit unsigned */
- CV_T_32PLONG = 0x0412, /* 16:32 near pointer to 32-bit signed */
- CV_T_32PULONG = 0x0422, /* 16:32 near pointer to 32-bit unsigned */
- CV_T_32PFLONG = 0x0512, /* 16:32 far pointer to 32-bit signed */
- CV_T_32PFULONG = 0x0522, /* 16:32 far pointer to 32-bit unsigned */
- /* Real 64-bit int Types */
- CV_T_INT8 = 0x0076, /* 64-bit signed int */
- CV_T_UINT8 = 0x0077, /* 64-bit unsigned int */
- CV_T_PINT8 = 0x0176, /* Near pointer to 64-bit signed int */
- CV_T_PUINT8 = 0x0177, /* Near pointer to 64-bit unsigned int */
- CV_T_PFINT8 = 0x0276, /* Far pointer to 64-bit signed int */
- CV_T_PFUINT8 = 0x0277, /* Far pointer to 64-bit unsigned int */
- CV_T_PHINT8 = 0x0376, /* Huge pointer to 64-bit signed int */
- CV_T_PHUINT8 = 0x0377, /* Huge pointer to 64-bit unsigned int */
- CV_T_32PINT8 = 0x0476, /* 16:32 near pointer to 64-bit signed int */
- CV_T_32PUINT8 = 0x0477, /* 16:32 near pointer to 64-bit unsigned int */
- CV_T_32PFINT8 = 0x0576, /* 16:32 far pointer to 64-bit signed int */
- CV_T_32PFUINT8 = 0x0577, /* 16:32 far pointer to 64-bit unsigned int */
- /* 64-bit Integral Types */
- CV_T_QUAD = 0x0013, /* 64-bit signed */
- CV_T_UQUAD = 0x0023, /* 64-bit unsigned */
- CV_T_PQUAD = 0x0113, /* Near pointer to 64-bit signed */
- CV_T_PUQUAD = 0x0123, /* Near pointer to 64-bit unsigned */
- CV_T_PFQUAD = 0x0213, /* Far pointer to 64-bit signed */
- CV_T_PFUQUAD = 0x0223, /* Far pointer to 64-bit unsigned */
- CV_T_PHQUAD = 0x0313, /* Huge pointer to 64-bit signed */
- CV_T_PHUQUAD = 0x0323, /* Huge pointer to 64-bit unsigned */
- CV_T_32PQUAD = 0x0413, /* 16:32 near pointer to 64-bit signed */
- CV_T_32PUQUAD = 0x0423, /* 16:32 near pointer to 64-bit unsigned */
- CV_T_32PFQUAD = 0x0513, /* 16:32 far pointer to 64-bit signed */
- CV_T_32PFUQUAD = 0x0523, /* 16:32 far pointer to 64-bit unsigned */
- /* 32-bit Real Types */
- CV_T_REAL32 = 0x0040, /* 32-bit real */
- CV_T_PREAL32 = 0x0140, /* Near pointer to 32-bit real */
- CV_T_PFREAL32 = 0x0240, /* Far pointer to 32-bit real */
- CV_T_PHREAL32 = 0x0340, /* Huge pointer to 32-bit real */
- CV_T_32PREAL32 = 0x0440, /* 16:32 near pointer to 32-bit real */
- CV_T_32PFREAL32 = 0x0540, /* 16:32 far pointer to 32-bit real */
- /* 48-bit Real Types */
- CV_T_REAL48 = 0x0044, /* 48-bit real */
- CV_T_PREAL48 = 0x0144, /* Near pointer to 48-bit real */
- CV_T_PFREAL48 = 0x0244, /* Far pointer to 48-bit real */
- CV_T_PHREAL48 = 0x0344, /* Huge pointer to 48-bit real */
- CV_T_32PREAL48 = 0x0444, /* 16:32 near pointer to 48-bit real */
- CV_T_32PFREAL48 = 0x0544, /* 16:32 far pointer to 48-bit real */
- /* 64-bit Real Types */
- CV_T_REAL64 = 0x0041, /* 64-bit real */
- CV_T_PREAL64 = 0x0141, /* Near pointer to 64-bit real */
- CV_T_PFREAL64 = 0x0241, /* Far pointer to 64-bit real */
- CV_T_PHREAL64 = 0x0341, /* Huge pointer to 64-bit real */
- CV_T_32PREAL64 = 0x0441, /* 16:32 near pointer to 64-bit real */
- CV_T_32PFREAL64 = 0x0541, /* 16:32 far pointer to 64-bit real */
- /* 80-bit Real Types */
- CV_T_REAL80 = 0x0042, /* 80-bit real */
- CV_T_PREAL80 = 0x0142, /* Near pointer to 80-bit real */
- CV_T_PFREAL80 = 0x0242, /* Far pointer to 80-bit real */
- CV_T_PHREAL80 = 0x0342, /* Huge pointer to 80-bit real */
- CV_T_32PREAL80 = 0x0442, /* 16:32 near pointer to 80-bit real */
- CV_T_32PFREAL80 = 0x0542, /* 16:32 far pointer to 80-bit real */
- /* 128-bit Real Types */
- CV_T_REAL128 = 0x0043, /* 128-bit real */
- CV_T_PREAL128 = 0x0143, /* Near pointer to 128-bit real */
- CV_T_PFREAL128 = 0x0243, /* Far pointer to 128-bit real */
- CV_T_PHREAL128 = 0x0343, /* Huge pointer to 128-bit real */
- CV_T_32PREAL128 = 0x0443, /* 16:32 near pointer to 128-bit real */
- CV_T_32PFREAL128 = 0x0543, /* 16:32 far pointer to 128-bit real */
- /* 32-bit Complex Types */
- CV_T_CPLX32 = 0x0050, /* 32-bit complex */
- CV_T_PCPLX32 = 0x0150, /* Near pointer to 32-bit complex */
- CV_T_PFCPLX32 = 0x0250, /* Far pointer to 32-bit complex */
- CV_T_PHCPLX32 = 0x0350, /* Huge pointer to 32-bit complex */
- CV_T_32PCPLX32 = 0x0450, /* 16:32 near pointer to 32-bit complex */
- CV_T_32PFCPLX32 = 0x0550, /* 16:32 far pointer to 32-bit complex */
- /* 64-bit Complex Types */
- CV_T_CPLX64 = 0x0051, /* 64-bit complex */
- CV_T_PCPLX64 = 0x0151, /* Near pointer to 64-bit complex */
- CV_T_PFCPLX64 = 0x0251, /* Far pointer to 64-bit complex */
- CV_T_PHCPLX64 = 0x0351, /* Huge pointer to 64-bit complex */
- CV_T_32PCPLX64 = 0x0451, /* 16:32 near pointer to 64-bit complex */
- CV_T_32PFCPLX64 = 0x0551, /* 16:32 far pointer to 64-bit complex */
- /* 80-bit Complex Types */
- CV_T_CPLX80 = 0x0052, /* 80-bit complex */
- CV_T_PCPLX80 = 0x0152, /* Near pointer to 80-bit complex */
- CV_T_PFCPLX80 = 0x0252, /* Far pointer to 80-bit complex */
- CV_T_PHCPLX80 = 0x0352, /* Huge pointer to 80-bit complex */
- CV_T_32PCPLX80 = 0x0452, /* 16:32 near pointer to 80-bit complex */
- CV_T_32PFCPLX80 = 0x0552, /* 16:32 far pointer to 80-bit complex */
- /* 128-bit Complex Types */
- CV_T_CPLX128 = 0x0053, /* 128-bit complex */
- CV_T_PCPLX128 = 0x0153, /* Near pointer to 128-bit complex */
- CV_T_PFCPLX128 = 0x0253, /* Far pointer to 128-bit complex */
- CV_T_PHCPLX128 = 0x0353, /* Huge pointer to 128-bit real */
- CV_T_32PCPLX128 = 0x0453, /* 16:32 near pointer to 128-bit complex */
- CV_T_32PFCPLX128 = 0x0553, /* 16:32 far pointer to 128-bit complex */
- /* Boolean Types */
- CV_T_BOOL08 = 0x0030, /* 8-bit Boolean */
- CV_T_BOOL16 = 0x0031, /* 16-bit Boolean */
- CV_T_BOOL32 = 0x0032, /* 32-bit Boolean */
- CV_T_BOOL64 = 0x0033, /* 64-bit Boolean */
- CV_T_PBOOL08 = 0x0130, /* Near pointer to 8-bit Boolean */
- CV_T_PBOOL16 = 0x0131, /* Near pointer to 16-bit Boolean */
- CV_T_PBOOL32 = 0x0132, /* Near pointer to 32-bit Boolean */
- CV_T_PBOOL64 = 0x0133, /* Near pointer to 64-bit Boolean */
- CV_T_PFBOOL08 = 0x0230, /* Far pointer to 8-bit Boolean */
- CV_T_PFBOOL16 = 0x0231, /* Far pointer to 16-bit Boolean */
- CV_T_PFBOOL32 = 0x0232, /* Far pointer to 32-bit Boolean */
- CV_T_PFBOOL64 = 0x0233, /* Far pointer to 64-bit Boolean */
- CV_T_PHBOOL08 = 0x0330, /* Huge pointer to 8-bit Boolean */
- CV_T_PHBOOL16 = 0x0331, /* Huge pointer to 16-bit Boolean */
- CV_T_PHBOOL32 = 0x0332, /* Huge pointer to 32-bit Boolean */
- CV_T_PHBOOL64 = 0x0333, /* Huge pointer to 64-bit Boolean */
- CV_T_32PBOOL08 = 0x0430, /* 16:32 near pointer to 8-bit Boolean */
- CV_T_32PBOOL16 = 0x0431, /* 16:32 near pointer to 16-bit Boolean */
- CV_T_32PBOOL32 = 0x0432, /* 16:32 near pointer to 32-bit Boolean */
- CV_T_32PBOOL64 = 0x0433, /* 16:32 near pointer to 64-bit Boolean */
- CV_T_32PFBOOL08 = 0x0530, /* 16:32 far pointer to 8-bit Boolean */
- CV_T_32PFBOOL16 = 0x0531, /* 16:32 far pointer to 16-bit Boolean */
- CV_T_32PFBOOL32 = 0x0532, /* 16:32 far pointer to 32-bit Boolean */
- CV_T_32PFBOOL64 = 0x0533, /* 16:32 far pointer to 64-bit Boolean */
-
- /* Non-primitive types are stored in the TYPES section (generated in
- * cv-type.c) and start at this index (e.g. 0x1000 is the first type
- * in TYPES, 0x1001 the second, etc.
- */
- CV_FIRST_NONPRIM = 0x1000
-};
-
-enum cv_leaftype {
- /* Leaf indices for type records that can be referenced from symbols */
- CV4_LF_MODIFIER = 0x0001, /* Type Modifier */
- CV4_LF_POINTER = 0x0002, /* Pointer */
- CV4_LF_ARRAY = 0x0003, /* Simple Array */
- CV4_LF_CLASS = 0x0004, /* Classes */
- CV4_LF_STRUCTURE = 0x0005, /* Structures */
- CV4_LF_UNION = 0x0006, /* Unions */
- CV4_LF_ENUM = 0x0007, /* Enumeration */
- CV4_LF_PROCEDURE = 0x0008, /* Procedure */
- CV4_LF_MFUNCTION = 0x0009, /* Member Function */
- CV4_LF_VTSHAPE = 0x000a, /* Virtual Function Table Shape */
- CV4_LF_BARRAY = 0x000d, /* Basic Array */
- CV4_LF_LABEL = 0x000e, /* Label */
- CV4_LF_NULL = 0x000f, /* Null */
- CV4_LF_DIMARRAY = 0x0011, /* Multiply Dimensioned Array */
- CV4_LF_VFTPATH = 0x0012, /* Path to Virtual Function Table */
- CV4_LF_PRECOMP = 0x0013, /* Reference Precompiled Types */
- CV4_LF_ENDPRECOMP = 0x0014, /* End of Precompiled Types */
-
- /* CodeView 5.0 version */
- CV5_LF_MODIFIER = 0x1001, /* Type Modifier */
- CV5_LF_POINTER = 0x1002, /* Pointer */
- CV5_LF_ARRAY = 0x1003, /* Simple Array */
- CV5_LF_CLASS = 0x1004, /* Classes */
- CV5_LF_STRUCTURE = 0x1005, /* Structures */
- CV5_LF_UNION = 0x1006, /* Unions */
- CV5_LF_ENUM = 0x1007, /* Enumeration */
- CV5_LF_PROCEDURE = 0x1008, /* Procedure */
- CV5_LF_MFUNCTION = 0x1009, /* Member Function */
- CV5_LF_VTSHAPE = 0x000a, /* Virtual Function Table Shape */
- CV5_LF_BARRAY = 0x100d, /* Basic Array */
- CV5_LF_LABEL = 0x000e, /* Label */
- CV5_LF_NULL = 0x000f, /* Null */
- CV5_LF_DIMARRAY = 0x100c, /* Multiply Dimensioned Array */
- CV5_LF_VFTPATH = 0x100d, /* Path to Virtual Function Table */
- CV5_LF_PRECOMP = 0x100e, /* Reference Precompiled Types */
- CV5_LF_ENDPRECOMP = 0x0014, /* End of Precompiled Types */
- CV5_LF_TYPESERVER = 0x0016, /* Reference Typeserver */
-
- /* Leaf indices for type records that can be referenced from other type
- * records
- */
- CV4_LF_SKIP = 0x0200, /* Skip */
- CV4_LF_ARGLIST = 0x0201, /* Argument List */
- CV4_LF_DEFARG = 0x0202, /* Default Argument */
- CV4_LF_LIST = 0x0203, /* Arbitrary List */
- CV4_LF_FIELDLIST = 0x0204, /* Field List */
- CV4_LF_DERIVED = 0x0205, /* Derived Classes */
- CV4_LF_BITFIELD = 0x0206, /* Bit Fields */
- CV4_LF_METHODLIST = 0x0207, /* Method List */
- CV4_LF_DIMCONU = 0x0208, /* Dimensioned Array with Constant Upper Bound */
- CV4_LF_DIMCONLU = 0x0209, /* Dimensioned Array with Constant Lower and Upper Bounds */
- CV4_LF_DIMVARU = 0x020a, /* Dimensioned Array with Variable Upper Bound */
- CV4_LF_DIMVARLU = 0x020b, /* Dimensioned Array with Variable Lower and Upper Bounds */
- CV4_LF_REFSYM = 0x020c, /* Referenced Symbol */
-
- /* CodeView 5.0 version */
- CV5_LF_SKIP = 0x1200, /* Skip */
- CV5_LF_ARGLIST = 0x1201, /* Argument List */
- CV5_LF_DEFARG = 0x1202, /* Default Argument */
- CV5_LF_FIELDLIST = 0x1203, /* Field List */
- CV5_LF_DERIVED = 0x1204, /* Derived Classes */
- CV5_LF_BITFIELD = 0x1205, /* Bit Fields */
- CV5_LF_METHODLIST = 0x1206, /* Method List */
- CV5_LF_DIMCONU = 0x1207, /* Dimensioned Array with Constant Upper Bound */
- CV5_LF_DIMCONLU = 0x1208, /* Dimensioned Array with Constant Lower and Upper Bounds */
- CV5_LF_DIMVARU = 0x1209, /* Dimensioned Array with Variable Upper Bound */
- CV5_LF_DIMVARLU = 0x120a, /* Dimensioned Array with Variable Lower and Upper Bounds */
- CV5_LF_REFSYM = 0x020c, /* Referenced Symbol */
-
- /* Leaf indices for fields of complex lists */
- CV4_LF_BCLASS = 0x0400, /* Real Base Class */
- CV4_LF_VBCLASS = 0x0401, /* Direct Virtual Base Class */
- CV4_LF_IVBCLASS = 0x0402, /* Indirect Virtual Base Class */
- CV4_LF_ENUMERATE = 0x0403, /* Enumeration Name and Value */
- CV4_LF_FRIENDFCN = 0x0404, /* Friend Function */
- CV4_LF_INDEX = 0x0405, /* Index To Another Type Record */
- CV4_LF_MEMBER = 0x0406, /* Data Member */
- CV4_LF_STMEMBER = 0x0407, /* Static Data Member */
- CV4_LF_METHOD = 0x0408, /* Method */
- CV4_LF_NESTTYPE = 0x0409, /* Nested Type Definition */
- CV4_LF_VFUNCTAB = 0x040a, /* Virtual Function Table Pointer */
- CV4_LF_FRIENDCLS = 0x040b, /* Friend Class */
- CV4_LF_ONEMETHOD = 0x040c, /* One Method */
- CV4_LF_VFUNCOFF = 0x040d, /* Virtual Function Offset */
-
- /* CodeView 5.0 version */
- CV5_LF_BCLASS = 0x1400, /* Real Base Class */
- CV5_LF_VBCLASS = 0x1401, /* Direct Virtual Base Class */
- CV5_LF_IVBCLASS = 0x1402, /* Indirect Virtual Base Class */
- CV5_LF_ENUMERATE = 0x0403, /* Enumeration Name and Value */
- CV5_LF_FRIENDFCN = 0x1403, /* Friend Function */
- CV5_LF_INDEX = 0x1404, /* Index To Another Type Record */
- CV5_LF_MEMBER = 0x1405, /* Data Member */
- CV5_LF_STMEMBER = 0x1406, /* Static Data Member */
- CV5_LF_METHOD = 0x1407, /* Method */
- CV5_LF_NESTTYPE = 0x1408, /* Nested Type Definition */
- CV5_LF_VFUNCTAB = 0x1409, /* Virtual Function Table Pointer */
- CV5_LF_FRIENDCLS = 0x140a, /* Friend Class */
- CV5_LF_ONEMETHOD = 0x140b, /* One Method */
- CV5_LF_VFUNCOFF = 0x140c, /* Virtual Function Offset */
- CV5_LF_NESTTYPEEX = 0x140d, /* Nested Type Extended Definition */
- CV5_LF_MEMBERMODIFY = 0x140e, /* Member Modification */
- /* XXX: CodeView 5.0 spec also lists 0x040f as LF_MEMBERMODIFY? */
-
- /* Leaf indices for numeric fields of symbols and type records */
- CV_LF_NUMERIC = 0x8000,
- CV_LF_CHAR = 0x8000, /* Signed Char (8-bit) */
- CV_LF_SHORT = 0x8001, /* Signed Short (16-bit) */
- CV_LF_USHORT = 0x8002, /* Unsigned Short (16-bit) */
- CV_LF_LONG = 0x8003, /* Signed Long (32-bit) */
- CV_LF_ULONG = 0x8004, /* Unsigned Long (32-bit) */
- CV_LF_REAL32 = 0x8005, /* 32-bit Float */
- CV_LF_REAL64 = 0x8006, /* 64-bit Float */
- CV_LF_REAL80 = 0x8007, /* 80-bit Float */
- CV_LF_REAL128 = 0x8008, /* 128-bit Float */
- CV_LF_QUADWORD = 0x8009, /* Signed Quad Word (64-bit) */
- CV_LF_UQUADWORD = 0x800a, /* Unsigned Quad Word (64-bit) */
- CV_LF_REAL48 = 0x800b, /* 48-bit Float */
- CV_LF_COMPLEX32 = 0x800c, /* 32-bit Complex */
- CV_LF_COMPLEX64 = 0x800d, /* 64-bit Complex */
- CV_LF_COMPLEX80 = 0x800e, /* 80-bit Complex */
- CV_LF_COMPLEX128 = 0x800f, /* 128-bit Complex */
- CV_LF_VARSTRING = 0x8010, /* Variable-length String */
-
- /* Leaf padding bytes */
- CV_LF_PAD0 = 0xf0,
- CV_LF_PAD1 = 0xf1,
- CV_LF_PAD2 = 0xf2,
- CV_LF_PAD3 = 0xf3,
- CV_LF_PAD4 = 0xf4,
- CV_LF_PAD5 = 0xf5,
- CV_LF_PAD6 = 0xf6,
- CV_LF_PAD7 = 0xf7,
- CV_LF_PAD8 = 0xf8,
- CV_LF_PAD9 = 0xf9,
- CV_LF_PAD10 = 0xfa,
- CV_LF_PAD11 = 0xfb,
- CV_LF_PAD12 = 0xfc,
- CV_LF_PAD13 = 0xfc,
- CV_LF_PAD14 = 0xfe,
- CV_LF_PAD15 = 0xff
-};
-
-/* Leaves use a bit of meta-programming to encode formats: each character
- * of format represents the output generated, as follows:
- * 'b' : 1 byte value (integer)
- * 'h' : 2 byte value (integer)
- * 'w' : 4 byte value (integer)
- * 'L' : subleaf, recurses into cv_leaf (pointer)
- * 'T' : 4 byte type index, pulls cv_type.index from cv_type (pointer)
- * 'S' : length-prefixed string (pointer)
- */
-typedef struct cv_leaf {
- enum cv_leaftype type;
- const char *format; /* format of args */
- union {
- unsigned long i;
- void *p;
- } args[6];
-} cv_leaf;
-
-typedef struct cv_type {
- unsigned long indx; /* type # (must be same as output order) */
- size_t num_leaves;
- /*@null@*/ /*@only@*/ cv_leaf **leaves;
-} cv_type;
-
-/* Bytecode callback function prototypes */
-static void cv_type_bc_destroy(void *contents);
-static void cv_type_bc_print(const void *contents, FILE *f, int indent_level);
-static int cv_type_bc_calc_len
- (yasm_bytecode *bc, yasm_bc_add_span_func add_span, void *add_span_data);
-static int cv_type_bc_tobytes
- (yasm_bytecode *bc, unsigned char **bufp, unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- /*@null@*/ yasm_output_reloc_func output_reloc);
-
-/* Bytecode callback structures */
-static const yasm_bytecode_callback cv_type_bc_callback = {
- cv_type_bc_destroy,
- cv_type_bc_print,
- yasm_bc_finalize_common,
- NULL,
- cv_type_bc_calc_len,
- yasm_bc_expand_common,
- cv_type_bc_tobytes,
- 0
-};
-
-static cv_type *cv_type_create(unsigned long indx);
-static void cv_type_append_leaf(cv_type *type, /*@keep@*/ cv_leaf *leaf);
-
-
-static cv_leaf *
-cv_leaf_create_label(int is_far)
-{
- cv_leaf *leaf = yasm_xmalloc(sizeof(cv_leaf));
- leaf->type = CV5_LF_LABEL;
- leaf->format = "h";
- leaf->args[0].i = is_far ? 4 : 0;
- return leaf;
-}
-
-yasm_section *
-yasm_cv__generate_type(yasm_object *object)
-{
- int new;
- unsigned long indx = CV_FIRST_NONPRIM;
- yasm_section *debug_type;
- yasm_bytecode *bc;
- cv_type *type;
-
- debug_type =
- yasm_object_get_general(object, ".debug$T", 1, 0, 0, &new, 0);
-
- /* Add label type */
- type = cv_type_create(indx++);
- cv_type_append_leaf(type, cv_leaf_create_label(0));
- bc = yasm_bc_create_common(&cv_type_bc_callback, type, 0);
- yasm_bc_finalize(bc, yasm_cv__append_bc(debug_type, bc));
- yasm_bc_calc_len(bc, NULL, NULL);
-
- return debug_type;
-}
-
-static void
-cv_leaf_destroy(cv_leaf *leaf)
-{
- const char *ch = leaf->format;
- int arg = 0;
-
- while (*ch) {
- switch (*ch) {
- case 'b':
- case 'h':
- case 'w':
- arg++;
- break; /* nothing to destroy */
- case 'L':
- cv_leaf_destroy((cv_leaf *)leaf->args[arg++].p);
- break;
- case 'T':
- arg++; /* nothing to destroy */
- break;
- case 'S':
- yasm_xfree(leaf->args[arg++].p);
- break;
- default:
- yasm_internal_error(N_("unknown leaf format character"));
- }
- ch++;
- }
-}
-
-static unsigned long
-cv_leaf_size(const cv_leaf *leaf)
-{
- const char *ch = leaf->format;
- unsigned long len = 2; /* leaf type */
- unsigned long slen;
- int arg = 0;
-
- while (*ch) {
- switch (*ch) {
- case 'b':
- len++;
- arg++;
- break;
- case 'h':
- len += 2;
- arg++;
- break;
- case 'w':
- len += 4;
- arg++;
- break;
- case 'L':
- len += cv_leaf_size((const cv_leaf *)leaf->args[arg++].p);
- break;
- case 'T':
- len += 4; /* XXX: will be 2 in CV4 */
- arg++;
- break;
- case 'S':
- len += 1; /* XXX: is this 1 or 2? */
- slen = (unsigned long)strlen((const char *)leaf->args[arg++].p);
- len += slen <= 0xff ? slen : 0xff;
- break;
- default:
- yasm_internal_error(N_("unknown leaf format character"));
- }
- ch++;
- }
-
- return len;
-}
-
-static void
-cv_leaf_tobytes(const cv_leaf *leaf, yasm_bytecode *bc, yasm_arch *arch,
- unsigned char **bufp, yasm_intnum *cval)
-{
- unsigned char *buf = *bufp;
- const char *ch = leaf->format;
- size_t len;
- int arg = 0;
-
- /* leaf type */
- yasm_intnum_set_uint(cval, leaf->type);
- yasm_arch_intnum_tobytes(arch, cval, buf, 2, 16, 0, bc, 0);
- buf += 2;
-
- while (*ch) {
- switch (*ch) {
- case 'b':
- YASM_WRITE_8(buf, leaf->args[arg].i);
- arg++;
- break;
- case 'h':
- yasm_intnum_set_uint(cval, leaf->args[arg++].i);
- yasm_arch_intnum_tobytes(arch, cval, buf, 2, 16, 0, bc, 0);
- buf += 2;
- break;
- case 'w':
- yasm_intnum_set_uint(cval, leaf->args[arg++].i);
- yasm_arch_intnum_tobytes(arch, cval, buf, 4, 32, 0, bc, 0);
- buf += 4;
- break;
- case 'L':
- cv_leaf_tobytes((const cv_leaf *)leaf->args[arg++].p, bc, arch,
- &buf, cval);
- break;
- case 'T':
- yasm_intnum_set_uint(cval,
- ((const cv_type *)leaf->args[arg++].p)->indx);
- yasm_arch_intnum_tobytes(arch, cval, buf, 4, 32, 0, bc, 0);
- buf += 4; /* XXX: will be 2 in CV4 */
- break;
- case 'S':
- len = strlen((const char *)leaf->args[arg].p);
- len = len <= 0xff ? len : 0xff;
- YASM_WRITE_8(buf, len);
- memcpy(buf, (const char *)leaf->args[arg].p, len);
- buf += len;
- arg++;
- break;
- default:
- yasm_internal_error(N_("unknown leaf format character"));
- }
- ch++;
- }
-
- *bufp = buf;
-}
-
-static cv_type *
-cv_type_create(unsigned long indx)
-{
- cv_type *type = yasm_xmalloc(sizeof(cv_type));
-
- type->indx = indx;
- type->num_leaves = 0;
- type->leaves = NULL;
-
- return type;
-}
-
-static void
-cv_type_append_leaf(cv_type *type, /*@keep@*/ cv_leaf *leaf)
-{
- type->num_leaves++;
-
- /* This is inefficient for large numbers of leaves, but that won't happen
- * until we add structure support.
- */
- type->leaves = yasm_xrealloc(type->leaves,
- type->num_leaves*sizeof(cv_leaf *));
-
- type->leaves[type->num_leaves-1] = leaf;
-}
-
-static void
-cv_type_bc_destroy(void *contents)
-{
- cv_type *type = (cv_type *)contents;
- size_t i;
-
- for (i=0; i<type->num_leaves; i++)
- cv_leaf_destroy(type->leaves[i]);
- if (type->leaves)
- yasm_xfree(type->leaves);
- yasm_xfree(contents);
-}
-
-static void
-cv_type_bc_print(const void *contents, FILE *f, int indent_level)
-{
- /* TODO */
-}
-
-static int
-cv_type_bc_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
- void *add_span_data)
-{
- cv_type *type = (cv_type *)bc->contents;
- size_t i;
-
- if (type->indx == CV_FIRST_NONPRIM)
- bc->len = 4+2;
- else
- bc->len = 2;
-
- for (i=0; i<type->num_leaves; i++)
- bc->len += cv_leaf_size(type->leaves[i]);
-
- /* Pad to multiple of 4 */
- if (bc->len & 0x3)
- bc->len += 4-(bc->len & 0x3);
-
- return 0;
-}
-
-static int
-cv_type_bc_tobytes(yasm_bytecode *bc, unsigned char **bufp,
- unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- yasm_output_reloc_func output_reloc)
-{
- yasm_object *object = yasm_section_get_object(bc->section);
- cv_type *type = (cv_type *)bc->contents;
- unsigned char *buf = *bufp;
- yasm_intnum *cval;
- size_t i;
- unsigned long reclen = bc->len - 2;
-
- cval = yasm_intnum_create_uint(4); /* version */
- if (type->indx == CV_FIRST_NONPRIM) {
- yasm_arch_intnum_tobytes(object->arch, cval, buf, 4, 32, 0, bc, 1);
- buf += 4;
- reclen -= 4;
- }
-
- /* Total length of record (following this field) - 2 bytes */
- yasm_intnum_set_uint(cval, reclen);
- yasm_arch_intnum_tobytes(object->arch, cval, buf, 2, 16, 0, bc, 1);
- buf += 2;
-
- /* Leaves */
- for (i=0; i<type->num_leaves; i++)
- cv_leaf_tobytes(type->leaves[i], bc, object->arch, &buf, cval);
-
- /* Pad to multiple of 4 */
- switch ((buf-(*bufp)) & 0x3) {
- case 3:
- YASM_WRITE_8(buf, CV_LF_PAD3);
- case 2:
- YASM_WRITE_8(buf, CV_LF_PAD2);
- case 1:
- YASM_WRITE_8(buf, CV_LF_PAD1);
- case 0:
- break;
- }
-
- *bufp = buf;
-
- yasm_intnum_destroy(cval);
- return 0;
-}
+/*
+ * CodeView debugging format - type information
+ *
+ * Copyright (C) 2006-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the author nor the names of other contributors
+ * may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <libyasm.h>
+
+#include "cv-dbgfmt.h"
+
+enum cv_reservedtype {
+ /* Bitfields representation - type */
+ CV_TYPE_SPECIAL = 0x00<<4, /* Special */
+ CV_TYPE_SIGNED = 0x01<<4, /* Signed integral value */
+ CV_TYPE_UNSIGNED = 0x02<<4, /* Unsigned integral value */
+ CV_TYPE_BOOLEAN = 0x03<<4, /* Boolean */
+ CV_TYPE_REAL = 0x04<<4, /* Real */
+ CV_TYPE_COMPLEX = 0x05<<4, /* Complex */
+ CV_TYPE_SPECIAL2 = 0x06<<4, /* Special2 */
+ CV_TYPE_REALINT = 0x07<<4, /* Really int value */
+
+ /* "size" of CV_TYPE_SPECIAL */
+ CV_SPECIAL_NOTYPE = 0x00<<0, /* No type */
+ CV_SPECIAL_ABS = 0x01<<0, /* Absolute symbol */
+ CV_SPECIAL_SEG = 0x02<<0, /* Segment */
+ CV_SPECIAL_VOID = 0x03<<0, /* Void */
+ CV_SPECIAL_CURRENCY = 0x04<<0, /* Basic 8-byte currency value */
+ CV_SPECIAL_NEARBSTR = 0x05<<0, /* Near Basic string */
+ CV_SPECIAL_FARBSTR = 0x06<<0, /* Far Basic string */
+
+ /* Size of CV_TYPE_SIGNED, CV_TYPE_UNSIGNED, and CV_TYPE_BOOLEAN */
+ CV_INTEGER_1BYTE = 0x00<<0, /* 1 byte */
+ CV_INTEGER_2BYTE = 0x01<<0, /* 2 byte */
+ CV_INTEGER_4BYTE = 0x02<<0, /* 4 byte */
+ CV_INTEGER_8BYTE = 0x03<<0, /* 8 byte */
+
+ /* Size of CV_TYPE_REAL and CV_TYPE_COMPLEX */
+ CV_REAL_32BIT = 0x00<<0, /* 32 bit */
+ CV_REAL_64BIT = 0x01<<0, /* 64 bit */
+ CV_REAL_80BIT = 0x02<<0, /* 80 bit */
+ CV_REAL_128BIT = 0x03<<0, /* 128 bit */
+ CV_REAL_48BIT = 0x04<<0, /* 48 bit */
+
+ /* "size" of CV_TYPE_SPECIAL2 */
+ CV_SPECIAL2_BIT = 0x00<<0, /* Bit */
+ CV_SPECIAL2_PASCHAR = 0x01<<0, /* Pascal CHAR */
+
+ /* Size of CV_TYPE_REALINT */
+ CV_REALINT_CHAR = 0x00<<0, /* Char */
+ CV_REALINT_WCHAR = 0x01<<0, /* Wide character */
+ CV_REALINT_S2BYTE = 0x02<<0, /* 2-byte signed integer */
+ CV_REALINT_U2BYTE = 0x03<<0, /* 2-byte unsigned integer */
+ CV_REALINT_S4BYTE = 0x04<<0, /* 4-byte signed integer */
+ CV_REALINT_U4BYTE = 0x05<<0, /* 4-byte unsigned integer */
+ CV_REALINT_S8BYTE = 0x06<<0, /* 8-byte signed integer */
+ CV_REALINT_U8BYTE = 0x07<<0, /* 8-byte unsigned integer */
+
+ /* Mode */
+ CV_MODE_DIRECT = 0x00<<8, /* Direct; not a pointer */
+ CV_MODE_NEAR = 0x01<<8, /* Near pointer */
+ CV_MODE_FAR = 0x02<<8, /* Far pointer */
+ CV_MODE_HUGE = 0x03<<8, /* Huge pointer */
+ CV_MODE_NEAR32 = 0x04<<8, /* 32-bit near pointer */
+ CV_MODE_FAR32 = 0x05<<8, /* 32-bit far pointer */
+ CV_MODE_NEAR64 = 0x06<<8, /* 64-bit near pointer */
+
+ /* Pure primitive type listing - based on above bitfields */
+
+ /* Special Types */
+ CV_T_NOTYPE = 0x0000, /* Uncharacterized type (no type) */
+ CV_T_ABS = 0x0001, /* Absolute symbol */
+ CV_T_SEGMENT = 0x0002, /* Segment type */
+ CV_T_VOID = 0x0003, /* Void */
+ CV_T_PVOID = 0x0103, /* Near pointer to void */
+ CV_T_PFVOID = 0x0203, /* Far pointer to void */
+ CV_T_PHVOID = 0x0303, /* Huge pointer to void */
+ CV_T_32PVOID = 0x0403, /* 32-bit near pointer to void */
+ CV_T_32PFVOID = 0x0503, /* 32-bit far pointer to void */
+ CV_T_CURRENCY = 0x0004, /* Basic 8-byte currency value */
+ CV_T_NBASICSTR = 0x0005, /* Near Basic string */
+ CV_T_FBASICSTR = 0x0006, /* Far Basic string */
+ CV_T_BIT = 0x0060, /* Bit */
+ CV_T_PASCHAR = 0x0061, /* Pascal CHAR */
+ /* Character Types */
+ CV_T_CHAR = 0x0010, /* 8-bit signed */
+ CV_T_UCHAR = 0x0020, /* 8-bit unsigned */
+ CV_T_PCHAR = 0x0110, /* Near pointer to 8-bit signed */
+ CV_T_PUCHAR = 0x0120, /* Near pointer to 8-bit unsigned */
+ CV_T_PFCHAR = 0x0210, /* Far pointer to 8-bit signed */
+ CV_T_PFUCHAR = 0x0220, /* Far pointer to 8-bit unsigned */
+ CV_T_PHCHAR = 0x0310, /* Huge pointer to 8-bit signed */
+ CV_T_PHUCHAR = 0x0320, /* Huge pointer to 8-bit unsigned */
+ CV_T_32PCHAR = 0x0410, /* 16:32 near pointer to 8-bit signed */
+ CV_T_32PUCHAR = 0x0420, /* 16:32 near pointer to 8-bit unsigned */
+ CV_T_32PFCHAR = 0x0510, /* 16:32 far pointer to 8-bit signed */
+ CV_T_32PFUCHAR = 0x0520, /* 16:32 far pointer to 8-bit unsigned */
+ /* Real Character Types */
+ CV_T_RCHAR = 0x0070, /* Real char */
+ CV_T_PRCHAR = 0x0170, /* Near pointer to a real char */
+ CV_T_PFRCHAR = 0x0270, /* Far pointer to a real char */
+ CV_T_PHRCHAR = 0x0370, /* Huge pointer to a real char */
+ CV_T_32PRCHAR = 0x0470, /* 16:32 near pointer to a real char */
+ CV_T_32PFRCHAR = 0x0570, /* 16:32 far pointer to a real char */
+ /* Wide Character Types */
+ CV_T_WCHAR = 0x0071, /* Wide char */
+ CV_T_PWCHAR = 0x0171, /* Near pointer to a wide char */
+ CV_T_PFWCHAR = 0x0271, /* Far pointer to a wide char */
+ CV_T_PHWCHAR = 0x0371, /* Huge pointer to a wide char */
+ CV_T_32PWCHAR = 0x0471, /* 16:32 near pointer to a wide char */
+ CV_T_32PFWCHAR = 0x0571, /* 16:32 far pointer to a wide char */
+ /* Real 16-bit Integer Types */
+ CV_T_INT2 = 0x0072, /* Real 16-bit signed int */
+ CV_T_UINT2 = 0x0073, /* Real 16-bit unsigned int */
+ CV_T_PINT2 = 0x0172, /* Near pointer to 16-bit signed int */
+ CV_T_PUINT2 = 0x0173, /* Near pointer to 16-bit unsigned int */
+ CV_T_PFINT2 = 0x0272, /* Far pointer to 16-bit signed int */
+ CV_T_PFUINT2 = 0x0273, /* Far pointer to 16-bit unsigned int */
+ CV_T_PHINT2 = 0x0372, /* Huge pointer to 16-bit signed int */
+ CV_T_PHUINT2 = 0x0373, /* Huge pointer to 16-bit unsigned int */
+ CV_T_32PINT2 = 0x0472, /* 16:32 near pointer to 16-bit signed int */
+ CV_T_32PUINT2 = 0x0473, /* 16:32 near pointer to 16-bit unsigned int */
+ CV_T_32PFINT2 = 0x0572, /* 16:32 far pointer to 16-bit signed int */
+ CV_T_32PFUINT2 = 0x0573, /* 16:32 far pointer to 16-bit unsigned int */
+ /* 16-bit Short Types */
+ CV_T_SHORT = 0x0011, /* 16-bit signed */
+ CV_T_USHORT = 0x0021, /* 16-bit unsigned */
+ CV_T_PSHORT = 0x0111, /* Near pointer to 16-bit signed */
+ CV_T_PUSHORT = 0x0121, /* Near pointer to 16-bit unsigned */
+ CV_T_PFSHORT = 0x0211, /* Far pointer to 16-bit signed */
+ CV_T_PFUSHORT = 0x0221, /* Far pointer to 16-bit unsigned */
+ CV_T_PHSHORT = 0x0311, /* Huge pointer to 16-bit signed */
+ CV_T_PHUSHORT = 0x0321, /* Huge pointer to 16-bit unsigned */
+ CV_T_32PSHORT = 0x0411, /* 16:32 near pointer to 16-bit signed */
+ CV_T_32PUSHORT = 0x0421, /* 16:32 near pointer to 16-bit unsigned */
+ CV_T_32PFSHORT = 0x0511, /* 16:32 far pointer to 16-bit signed */
+ CV_T_32PFUSHORT = 0x0521, /* 16:32 far pointer to 16-bit unsigned */
+ /* Real 32-bit Integer Types */
+ CV_T_INT4 = 0x0074, /* Real 32-bit signed int */
+ CV_T_UINT4 = 0x0075, /* Real 32-bit unsigned int */
+ CV_T_PINT4 = 0x0174, /* Near pointer to 32-bit signed int */
+ CV_T_PUINT4 = 0x0175, /* Near pointer to 32-bit unsigned int */
+ CV_T_PFINT4 = 0x0274, /* Far pointer to 32-bit signed int */
+ CV_T_PFUINT4 = 0x0275, /* Far pointer to 32-bit unsigned int */
+ CV_T_PHINT4 = 0x0374, /* Huge pointer to 32-bit signed int */
+ CV_T_PHUINT4 = 0x0375, /* Huge pointer to 32-bit unsigned int */
+ CV_T_32PINT4 = 0x0474, /* 16:32 near pointer to 32-bit signed int */
+ CV_T_32PUINT4 = 0x0475, /* 16:32 near pointer to 32-bit unsigned int */
+ CV_T_32PFINT4 = 0x0574, /* 16:32 far pointer to 32-bit signed int */
+ CV_T_32PFUINT4 = 0x0575, /* 16:32 far pointer to 32-bit unsigned int */
+ /* 32-bit Long Types */
+ CV_T_LONG = 0x0012, /* 32-bit signed */
+ CV_T_ULONG = 0x0022, /* 32-bit unsigned */
+ CV_T_PLONG = 0x0112, /* Near pointer to 32-bit signed */
+ CV_T_PULONG = 0x0122, /* Near pointer to 32-bit unsigned */
+ CV_T_PFLONG = 0x0212, /* Far pointer to 32-bit signed */
+ CV_T_PFULONG = 0x0222, /* Far pointer to 32-bit unsigned */
+ CV_T_PHLONG = 0x0312, /* Huge pointer to 32-bit signed */
+ CV_T_PHULONG = 0x0322, /* Huge pointer to 32-bit unsigned */
+ CV_T_32PLONG = 0x0412, /* 16:32 near pointer to 32-bit signed */
+ CV_T_32PULONG = 0x0422, /* 16:32 near pointer to 32-bit unsigned */
+ CV_T_32PFLONG = 0x0512, /* 16:32 far pointer to 32-bit signed */
+ CV_T_32PFULONG = 0x0522, /* 16:32 far pointer to 32-bit unsigned */
+ /* Real 64-bit int Types */
+ CV_T_INT8 = 0x0076, /* 64-bit signed int */
+ CV_T_UINT8 = 0x0077, /* 64-bit unsigned int */
+ CV_T_PINT8 = 0x0176, /* Near pointer to 64-bit signed int */
+ CV_T_PUINT8 = 0x0177, /* Near pointer to 64-bit unsigned int */
+ CV_T_PFINT8 = 0x0276, /* Far pointer to 64-bit signed int */
+ CV_T_PFUINT8 = 0x0277, /* Far pointer to 64-bit unsigned int */
+ CV_T_PHINT8 = 0x0376, /* Huge pointer to 64-bit signed int */
+ CV_T_PHUINT8 = 0x0377, /* Huge pointer to 64-bit unsigned int */
+ CV_T_32PINT8 = 0x0476, /* 16:32 near pointer to 64-bit signed int */
+ CV_T_32PUINT8 = 0x0477, /* 16:32 near pointer to 64-bit unsigned int */
+ CV_T_32PFINT8 = 0x0576, /* 16:32 far pointer to 64-bit signed int */
+ CV_T_32PFUINT8 = 0x0577, /* 16:32 far pointer to 64-bit unsigned int */
+ /* 64-bit Integral Types */
+ CV_T_QUAD = 0x0013, /* 64-bit signed */
+ CV_T_UQUAD = 0x0023, /* 64-bit unsigned */
+ CV_T_PQUAD = 0x0113, /* Near pointer to 64-bit signed */
+ CV_T_PUQUAD = 0x0123, /* Near pointer to 64-bit unsigned */
+ CV_T_PFQUAD = 0x0213, /* Far pointer to 64-bit signed */
+ CV_T_PFUQUAD = 0x0223, /* Far pointer to 64-bit unsigned */
+ CV_T_PHQUAD = 0x0313, /* Huge pointer to 64-bit signed */
+ CV_T_PHUQUAD = 0x0323, /* Huge pointer to 64-bit unsigned */
+ CV_T_32PQUAD = 0x0413, /* 16:32 near pointer to 64-bit signed */
+ CV_T_32PUQUAD = 0x0423, /* 16:32 near pointer to 64-bit unsigned */
+ CV_T_32PFQUAD = 0x0513, /* 16:32 far pointer to 64-bit signed */
+ CV_T_32PFUQUAD = 0x0523, /* 16:32 far pointer to 64-bit unsigned */
+ /* 32-bit Real Types */
+ CV_T_REAL32 = 0x0040, /* 32-bit real */
+ CV_T_PREAL32 = 0x0140, /* Near pointer to 32-bit real */
+ CV_T_PFREAL32 = 0x0240, /* Far pointer to 32-bit real */
+ CV_T_PHREAL32 = 0x0340, /* Huge pointer to 32-bit real */
+ CV_T_32PREAL32 = 0x0440, /* 16:32 near pointer to 32-bit real */
+ CV_T_32PFREAL32 = 0x0540, /* 16:32 far pointer to 32-bit real */
+ /* 48-bit Real Types */
+ CV_T_REAL48 = 0x0044, /* 48-bit real */
+ CV_T_PREAL48 = 0x0144, /* Near pointer to 48-bit real */
+ CV_T_PFREAL48 = 0x0244, /* Far pointer to 48-bit real */
+ CV_T_PHREAL48 = 0x0344, /* Huge pointer to 48-bit real */
+ CV_T_32PREAL48 = 0x0444, /* 16:32 near pointer to 48-bit real */
+ CV_T_32PFREAL48 = 0x0544, /* 16:32 far pointer to 48-bit real */
+ /* 64-bit Real Types */
+ CV_T_REAL64 = 0x0041, /* 64-bit real */
+ CV_T_PREAL64 = 0x0141, /* Near pointer to 64-bit real */
+ CV_T_PFREAL64 = 0x0241, /* Far pointer to 64-bit real */
+ CV_T_PHREAL64 = 0x0341, /* Huge pointer to 64-bit real */
+ CV_T_32PREAL64 = 0x0441, /* 16:32 near pointer to 64-bit real */
+ CV_T_32PFREAL64 = 0x0541, /* 16:32 far pointer to 64-bit real */
+ /* 80-bit Real Types */
+ CV_T_REAL80 = 0x0042, /* 80-bit real */
+ CV_T_PREAL80 = 0x0142, /* Near pointer to 80-bit real */
+ CV_T_PFREAL80 = 0x0242, /* Far pointer to 80-bit real */
+ CV_T_PHREAL80 = 0x0342, /* Huge pointer to 80-bit real */
+ CV_T_32PREAL80 = 0x0442, /* 16:32 near pointer to 80-bit real */
+ CV_T_32PFREAL80 = 0x0542, /* 16:32 far pointer to 80-bit real */
+ /* 128-bit Real Types */
+ CV_T_REAL128 = 0x0043, /* 128-bit real */
+ CV_T_PREAL128 = 0x0143, /* Near pointer to 128-bit real */
+ CV_T_PFREAL128 = 0x0243, /* Far pointer to 128-bit real */
+ CV_T_PHREAL128 = 0x0343, /* Huge pointer to 128-bit real */
+ CV_T_32PREAL128 = 0x0443, /* 16:32 near pointer to 128-bit real */
+ CV_T_32PFREAL128 = 0x0543, /* 16:32 far pointer to 128-bit real */
+ /* 32-bit Complex Types */
+ CV_T_CPLX32 = 0x0050, /* 32-bit complex */
+ CV_T_PCPLX32 = 0x0150, /* Near pointer to 32-bit complex */
+ CV_T_PFCPLX32 = 0x0250, /* Far pointer to 32-bit complex */
+ CV_T_PHCPLX32 = 0x0350, /* Huge pointer to 32-bit complex */
+ CV_T_32PCPLX32 = 0x0450, /* 16:32 near pointer to 32-bit complex */
+ CV_T_32PFCPLX32 = 0x0550, /* 16:32 far pointer to 32-bit complex */
+ /* 64-bit Complex Types */
+ CV_T_CPLX64 = 0x0051, /* 64-bit complex */
+ CV_T_PCPLX64 = 0x0151, /* Near pointer to 64-bit complex */
+ CV_T_PFCPLX64 = 0x0251, /* Far pointer to 64-bit complex */
+ CV_T_PHCPLX64 = 0x0351, /* Huge pointer to 64-bit complex */
+ CV_T_32PCPLX64 = 0x0451, /* 16:32 near pointer to 64-bit complex */
+ CV_T_32PFCPLX64 = 0x0551, /* 16:32 far pointer to 64-bit complex */
+ /* 80-bit Complex Types */
+ CV_T_CPLX80 = 0x0052, /* 80-bit complex */
+ CV_T_PCPLX80 = 0x0152, /* Near pointer to 80-bit complex */
+ CV_T_PFCPLX80 = 0x0252, /* Far pointer to 80-bit complex */
+ CV_T_PHCPLX80 = 0x0352, /* Huge pointer to 80-bit complex */
+ CV_T_32PCPLX80 = 0x0452, /* 16:32 near pointer to 80-bit complex */
+ CV_T_32PFCPLX80 = 0x0552, /* 16:32 far pointer to 80-bit complex */
+ /* 128-bit Complex Types */
+ CV_T_CPLX128 = 0x0053, /* 128-bit complex */
+ CV_T_PCPLX128 = 0x0153, /* Near pointer to 128-bit complex */
+ CV_T_PFCPLX128 = 0x0253, /* Far pointer to 128-bit complex */
+ CV_T_PHCPLX128 = 0x0353, /* Huge pointer to 128-bit real */
+ CV_T_32PCPLX128 = 0x0453, /* 16:32 near pointer to 128-bit complex */
+ CV_T_32PFCPLX128 = 0x0553, /* 16:32 far pointer to 128-bit complex */
+ /* Boolean Types */
+ CV_T_BOOL08 = 0x0030, /* 8-bit Boolean */
+ CV_T_BOOL16 = 0x0031, /* 16-bit Boolean */
+ CV_T_BOOL32 = 0x0032, /* 32-bit Boolean */
+ CV_T_BOOL64 = 0x0033, /* 64-bit Boolean */
+ CV_T_PBOOL08 = 0x0130, /* Near pointer to 8-bit Boolean */
+ CV_T_PBOOL16 = 0x0131, /* Near pointer to 16-bit Boolean */
+ CV_T_PBOOL32 = 0x0132, /* Near pointer to 32-bit Boolean */
+ CV_T_PBOOL64 = 0x0133, /* Near pointer to 64-bit Boolean */
+ CV_T_PFBOOL08 = 0x0230, /* Far pointer to 8-bit Boolean */
+ CV_T_PFBOOL16 = 0x0231, /* Far pointer to 16-bit Boolean */
+ CV_T_PFBOOL32 = 0x0232, /* Far pointer to 32-bit Boolean */
+ CV_T_PFBOOL64 = 0x0233, /* Far pointer to 64-bit Boolean */
+ CV_T_PHBOOL08 = 0x0330, /* Huge pointer to 8-bit Boolean */
+ CV_T_PHBOOL16 = 0x0331, /* Huge pointer to 16-bit Boolean */
+ CV_T_PHBOOL32 = 0x0332, /* Huge pointer to 32-bit Boolean */
+ CV_T_PHBOOL64 = 0x0333, /* Huge pointer to 64-bit Boolean */
+ CV_T_32PBOOL08 = 0x0430, /* 16:32 near pointer to 8-bit Boolean */
+ CV_T_32PBOOL16 = 0x0431, /* 16:32 near pointer to 16-bit Boolean */
+ CV_T_32PBOOL32 = 0x0432, /* 16:32 near pointer to 32-bit Boolean */
+ CV_T_32PBOOL64 = 0x0433, /* 16:32 near pointer to 64-bit Boolean */
+ CV_T_32PFBOOL08 = 0x0530, /* 16:32 far pointer to 8-bit Boolean */
+ CV_T_32PFBOOL16 = 0x0531, /* 16:32 far pointer to 16-bit Boolean */
+ CV_T_32PFBOOL32 = 0x0532, /* 16:32 far pointer to 32-bit Boolean */
+ CV_T_32PFBOOL64 = 0x0533, /* 16:32 far pointer to 64-bit Boolean */
+
+ /* Non-primitive types are stored in the TYPES section (generated in
+ * cv-type.c) and start at this index (e.g. 0x1000 is the first type
+ * in TYPES, 0x1001 the second, etc.
+ */
+ CV_FIRST_NONPRIM = 0x1000
+};
+
+enum cv_leaftype {
+ /* Leaf indices for type records that can be referenced from symbols */
+ CV4_LF_MODIFIER = 0x0001, /* Type Modifier */
+ CV4_LF_POINTER = 0x0002, /* Pointer */
+ CV4_LF_ARRAY = 0x0003, /* Simple Array */
+ CV4_LF_CLASS = 0x0004, /* Classes */
+ CV4_LF_STRUCTURE = 0x0005, /* Structures */
+ CV4_LF_UNION = 0x0006, /* Unions */
+ CV4_LF_ENUM = 0x0007, /* Enumeration */
+ CV4_LF_PROCEDURE = 0x0008, /* Procedure */
+ CV4_LF_MFUNCTION = 0x0009, /* Member Function */
+ CV4_LF_VTSHAPE = 0x000a, /* Virtual Function Table Shape */
+ CV4_LF_BARRAY = 0x000d, /* Basic Array */
+ CV4_LF_LABEL = 0x000e, /* Label */
+ CV4_LF_NULL = 0x000f, /* Null */
+ CV4_LF_DIMARRAY = 0x0011, /* Multiply Dimensioned Array */
+ CV4_LF_VFTPATH = 0x0012, /* Path to Virtual Function Table */
+ CV4_LF_PRECOMP = 0x0013, /* Reference Precompiled Types */
+ CV4_LF_ENDPRECOMP = 0x0014, /* End of Precompiled Types */
+
+ /* CodeView 5.0 version */
+ CV5_LF_MODIFIER = 0x1001, /* Type Modifier */
+ CV5_LF_POINTER = 0x1002, /* Pointer */
+ CV5_LF_ARRAY = 0x1003, /* Simple Array */
+ CV5_LF_CLASS = 0x1004, /* Classes */
+ CV5_LF_STRUCTURE = 0x1005, /* Structures */
+ CV5_LF_UNION = 0x1006, /* Unions */
+ CV5_LF_ENUM = 0x1007, /* Enumeration */
+ CV5_LF_PROCEDURE = 0x1008, /* Procedure */
+ CV5_LF_MFUNCTION = 0x1009, /* Member Function */
+ CV5_LF_VTSHAPE = 0x000a, /* Virtual Function Table Shape */
+ CV5_LF_BARRAY = 0x100d, /* Basic Array */
+ CV5_LF_LABEL = 0x000e, /* Label */
+ CV5_LF_NULL = 0x000f, /* Null */
+ CV5_LF_DIMARRAY = 0x100c, /* Multiply Dimensioned Array */
+ CV5_LF_VFTPATH = 0x100d, /* Path to Virtual Function Table */
+ CV5_LF_PRECOMP = 0x100e, /* Reference Precompiled Types */
+ CV5_LF_ENDPRECOMP = 0x0014, /* End of Precompiled Types */
+ CV5_LF_TYPESERVER = 0x0016, /* Reference Typeserver */
+
+ /* Leaf indices for type records that can be referenced from other type
+ * records
+ */
+ CV4_LF_SKIP = 0x0200, /* Skip */
+ CV4_LF_ARGLIST = 0x0201, /* Argument List */
+ CV4_LF_DEFARG = 0x0202, /* Default Argument */
+ CV4_LF_LIST = 0x0203, /* Arbitrary List */
+ CV4_LF_FIELDLIST = 0x0204, /* Field List */
+ CV4_LF_DERIVED = 0x0205, /* Derived Classes */
+ CV4_LF_BITFIELD = 0x0206, /* Bit Fields */
+ CV4_LF_METHODLIST = 0x0207, /* Method List */
+ CV4_LF_DIMCONU = 0x0208, /* Dimensioned Array with Constant Upper Bound */
+ CV4_LF_DIMCONLU = 0x0209, /* Dimensioned Array with Constant Lower and Upper Bounds */
+ CV4_LF_DIMVARU = 0x020a, /* Dimensioned Array with Variable Upper Bound */
+ CV4_LF_DIMVARLU = 0x020b, /* Dimensioned Array with Variable Lower and Upper Bounds */
+ CV4_LF_REFSYM = 0x020c, /* Referenced Symbol */
+
+ /* CodeView 5.0 version */
+ CV5_LF_SKIP = 0x1200, /* Skip */
+ CV5_LF_ARGLIST = 0x1201, /* Argument List */
+ CV5_LF_DEFARG = 0x1202, /* Default Argument */
+ CV5_LF_FIELDLIST = 0x1203, /* Field List */
+ CV5_LF_DERIVED = 0x1204, /* Derived Classes */
+ CV5_LF_BITFIELD = 0x1205, /* Bit Fields */
+ CV5_LF_METHODLIST = 0x1206, /* Method List */
+ CV5_LF_DIMCONU = 0x1207, /* Dimensioned Array with Constant Upper Bound */
+ CV5_LF_DIMCONLU = 0x1208, /* Dimensioned Array with Constant Lower and Upper Bounds */
+ CV5_LF_DIMVARU = 0x1209, /* Dimensioned Array with Variable Upper Bound */
+ CV5_LF_DIMVARLU = 0x120a, /* Dimensioned Array with Variable Lower and Upper Bounds */
+ CV5_LF_REFSYM = 0x020c, /* Referenced Symbol */
+
+ /* Leaf indices for fields of complex lists */
+ CV4_LF_BCLASS = 0x0400, /* Real Base Class */
+ CV4_LF_VBCLASS = 0x0401, /* Direct Virtual Base Class */
+ CV4_LF_IVBCLASS = 0x0402, /* Indirect Virtual Base Class */
+ CV4_LF_ENUMERATE = 0x0403, /* Enumeration Name and Value */
+ CV4_LF_FRIENDFCN = 0x0404, /* Friend Function */
+ CV4_LF_INDEX = 0x0405, /* Index To Another Type Record */
+ CV4_LF_MEMBER = 0x0406, /* Data Member */
+ CV4_LF_STMEMBER = 0x0407, /* Static Data Member */
+ CV4_LF_METHOD = 0x0408, /* Method */
+ CV4_LF_NESTTYPE = 0x0409, /* Nested Type Definition */
+ CV4_LF_VFUNCTAB = 0x040a, /* Virtual Function Table Pointer */
+ CV4_LF_FRIENDCLS = 0x040b, /* Friend Class */
+ CV4_LF_ONEMETHOD = 0x040c, /* One Method */
+ CV4_LF_VFUNCOFF = 0x040d, /* Virtual Function Offset */
+
+ /* CodeView 5.0 version */
+ CV5_LF_BCLASS = 0x1400, /* Real Base Class */
+ CV5_LF_VBCLASS = 0x1401, /* Direct Virtual Base Class */
+ CV5_LF_IVBCLASS = 0x1402, /* Indirect Virtual Base Class */
+ CV5_LF_ENUMERATE = 0x0403, /* Enumeration Name and Value */
+ CV5_LF_FRIENDFCN = 0x1403, /* Friend Function */
+ CV5_LF_INDEX = 0x1404, /* Index To Another Type Record */
+ CV5_LF_MEMBER = 0x1405, /* Data Member */
+ CV5_LF_STMEMBER = 0x1406, /* Static Data Member */
+ CV5_LF_METHOD = 0x1407, /* Method */
+ CV5_LF_NESTTYPE = 0x1408, /* Nested Type Definition */
+ CV5_LF_VFUNCTAB = 0x1409, /* Virtual Function Table Pointer */
+ CV5_LF_FRIENDCLS = 0x140a, /* Friend Class */
+ CV5_LF_ONEMETHOD = 0x140b, /* One Method */
+ CV5_LF_VFUNCOFF = 0x140c, /* Virtual Function Offset */
+ CV5_LF_NESTTYPEEX = 0x140d, /* Nested Type Extended Definition */
+ CV5_LF_MEMBERMODIFY = 0x140e, /* Member Modification */
+ /* XXX: CodeView 5.0 spec also lists 0x040f as LF_MEMBERMODIFY? */
+
+ /* Leaf indices for numeric fields of symbols and type records */
+ CV_LF_NUMERIC = 0x8000,
+ CV_LF_CHAR = 0x8000, /* Signed Char (8-bit) */
+ CV_LF_SHORT = 0x8001, /* Signed Short (16-bit) */
+ CV_LF_USHORT = 0x8002, /* Unsigned Short (16-bit) */
+ CV_LF_LONG = 0x8003, /* Signed Long (32-bit) */
+ CV_LF_ULONG = 0x8004, /* Unsigned Long (32-bit) */
+ CV_LF_REAL32 = 0x8005, /* 32-bit Float */
+ CV_LF_REAL64 = 0x8006, /* 64-bit Float */
+ CV_LF_REAL80 = 0x8007, /* 80-bit Float */
+ CV_LF_REAL128 = 0x8008, /* 128-bit Float */
+ CV_LF_QUADWORD = 0x8009, /* Signed Quad Word (64-bit) */
+ CV_LF_UQUADWORD = 0x800a, /* Unsigned Quad Word (64-bit) */
+ CV_LF_REAL48 = 0x800b, /* 48-bit Float */
+ CV_LF_COMPLEX32 = 0x800c, /* 32-bit Complex */
+ CV_LF_COMPLEX64 = 0x800d, /* 64-bit Complex */
+ CV_LF_COMPLEX80 = 0x800e, /* 80-bit Complex */
+ CV_LF_COMPLEX128 = 0x800f, /* 128-bit Complex */
+ CV_LF_VARSTRING = 0x8010, /* Variable-length String */
+
+ /* Leaf padding bytes */
+ CV_LF_PAD0 = 0xf0,
+ CV_LF_PAD1 = 0xf1,
+ CV_LF_PAD2 = 0xf2,
+ CV_LF_PAD3 = 0xf3,
+ CV_LF_PAD4 = 0xf4,
+ CV_LF_PAD5 = 0xf5,
+ CV_LF_PAD6 = 0xf6,
+ CV_LF_PAD7 = 0xf7,
+ CV_LF_PAD8 = 0xf8,
+ CV_LF_PAD9 = 0xf9,
+ CV_LF_PAD10 = 0xfa,
+ CV_LF_PAD11 = 0xfb,
+ CV_LF_PAD12 = 0xfc,
+ CV_LF_PAD13 = 0xfc,
+ CV_LF_PAD14 = 0xfe,
+ CV_LF_PAD15 = 0xff
+};
+
+/* Leaves use a bit of meta-programming to encode formats: each character
+ * of format represents the output generated, as follows:
+ * 'b' : 1 byte value (integer)
+ * 'h' : 2 byte value (integer)
+ * 'w' : 4 byte value (integer)
+ * 'L' : subleaf, recurses into cv_leaf (pointer)
+ * 'T' : 4 byte type index, pulls cv_type.index from cv_type (pointer)
+ * 'S' : length-prefixed string (pointer)
+ */
+typedef struct cv_leaf {
+ enum cv_leaftype type;
+ const char *format; /* format of args */
+ union {
+ unsigned long i;
+ void *p;
+ } args[6];
+} cv_leaf;
+
+typedef struct cv_type {
+ unsigned long indx; /* type # (must be same as output order) */
+ size_t num_leaves;
+ /*@null@*/ /*@only@*/ cv_leaf **leaves;
+} cv_type;
+
+/* Bytecode callback function prototypes */
+static void cv_type_bc_destroy(void *contents);
+static void cv_type_bc_print(const void *contents, FILE *f, int indent_level);
+static int cv_type_bc_calc_len
+ (yasm_bytecode *bc, yasm_bc_add_span_func add_span, void *add_span_data);
+static int cv_type_bc_tobytes
+ (yasm_bytecode *bc, unsigned char **bufp, unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ /*@null@*/ yasm_output_reloc_func output_reloc);
+
+/* Bytecode callback structures */
+static const yasm_bytecode_callback cv_type_bc_callback = {
+ cv_type_bc_destroy,
+ cv_type_bc_print,
+ yasm_bc_finalize_common,
+ NULL,
+ cv_type_bc_calc_len,
+ yasm_bc_expand_common,
+ cv_type_bc_tobytes,
+ 0
+};
+
+static cv_type *cv_type_create(unsigned long indx);
+static void cv_type_append_leaf(cv_type *type, /*@keep@*/ cv_leaf *leaf);
+
+
+static cv_leaf *
+cv_leaf_create_label(int is_far)
+{
+ cv_leaf *leaf = yasm_xmalloc(sizeof(cv_leaf));
+ leaf->type = CV5_LF_LABEL;
+ leaf->format = "h";
+ leaf->args[0].i = is_far ? 4 : 0;
+ return leaf;
+}
+
+yasm_section *
+yasm_cv__generate_type(yasm_object *object)
+{
+ int new;
+ unsigned long indx = CV_FIRST_NONPRIM;
+ yasm_section *debug_type;
+ yasm_bytecode *bc;
+ cv_type *type;
+
+ debug_type =
+ yasm_object_get_general(object, ".debug$T", 1, 0, 0, &new, 0);
+
+ /* Add label type */
+ type = cv_type_create(indx++);
+ cv_type_append_leaf(type, cv_leaf_create_label(0));
+ bc = yasm_bc_create_common(&cv_type_bc_callback, type, 0);
+ yasm_bc_finalize(bc, yasm_cv__append_bc(debug_type, bc));
+ yasm_bc_calc_len(bc, NULL, NULL);
+
+ return debug_type;
+}
+
+static void
+cv_leaf_destroy(cv_leaf *leaf)
+{
+ const char *ch = leaf->format;
+ int arg = 0;
+
+ while (*ch) {
+ switch (*ch) {
+ case 'b':
+ case 'h':
+ case 'w':
+ arg++;
+ break; /* nothing to destroy */
+ case 'L':
+ cv_leaf_destroy((cv_leaf *)leaf->args[arg++].p);
+ break;
+ case 'T':
+ arg++; /* nothing to destroy */
+ break;
+ case 'S':
+ yasm_xfree(leaf->args[arg++].p);
+ break;
+ default:
+ yasm_internal_error(N_("unknown leaf format character"));
+ }
+ ch++;
+ }
+}
+
+static unsigned long
+cv_leaf_size(const cv_leaf *leaf)
+{
+ const char *ch = leaf->format;
+ unsigned long len = 2; /* leaf type */
+ unsigned long slen;
+ int arg = 0;
+
+ while (*ch) {
+ switch (*ch) {
+ case 'b':
+ len++;
+ arg++;
+ break;
+ case 'h':
+ len += 2;
+ arg++;
+ break;
+ case 'w':
+ len += 4;
+ arg++;
+ break;
+ case 'L':
+ len += cv_leaf_size((const cv_leaf *)leaf->args[arg++].p);
+ break;
+ case 'T':
+ len += 4; /* XXX: will be 2 in CV4 */
+ arg++;
+ break;
+ case 'S':
+ len += 1; /* XXX: is this 1 or 2? */
+ slen = (unsigned long)strlen((const char *)leaf->args[arg++].p);
+ len += slen <= 0xff ? slen : 0xff;
+ break;
+ default:
+ yasm_internal_error(N_("unknown leaf format character"));
+ }
+ ch++;
+ }
+
+ return len;
+}
+
+static void
+cv_leaf_tobytes(const cv_leaf *leaf, yasm_bytecode *bc, yasm_arch *arch,
+ unsigned char **bufp, yasm_intnum *cval)
+{
+ unsigned char *buf = *bufp;
+ const char *ch = leaf->format;
+ size_t len;
+ int arg = 0;
+
+ /* leaf type */
+ yasm_intnum_set_uint(cval, leaf->type);
+ yasm_arch_intnum_tobytes(arch, cval, buf, 2, 16, 0, bc, 0);
+ buf += 2;
+
+ while (*ch) {
+ switch (*ch) {
+ case 'b':
+ YASM_WRITE_8(buf, leaf->args[arg].i);
+ arg++;
+ break;
+ case 'h':
+ yasm_intnum_set_uint(cval, leaf->args[arg++].i);
+ yasm_arch_intnum_tobytes(arch, cval, buf, 2, 16, 0, bc, 0);
+ buf += 2;
+ break;
+ case 'w':
+ yasm_intnum_set_uint(cval, leaf->args[arg++].i);
+ yasm_arch_intnum_tobytes(arch, cval, buf, 4, 32, 0, bc, 0);
+ buf += 4;
+ break;
+ case 'L':
+ cv_leaf_tobytes((const cv_leaf *)leaf->args[arg++].p, bc, arch,
+ &buf, cval);
+ break;
+ case 'T':
+ yasm_intnum_set_uint(cval,
+ ((const cv_type *)leaf->args[arg++].p)->indx);
+ yasm_arch_intnum_tobytes(arch, cval, buf, 4, 32, 0, bc, 0);
+ buf += 4; /* XXX: will be 2 in CV4 */
+ break;
+ case 'S':
+ len = strlen((const char *)leaf->args[arg].p);
+ len = len <= 0xff ? len : 0xff;
+ YASM_WRITE_8(buf, len);
+ memcpy(buf, (const char *)leaf->args[arg].p, len);
+ buf += len;
+ arg++;
+ break;
+ default:
+ yasm_internal_error(N_("unknown leaf format character"));
+ }
+ ch++;
+ }
+
+ *bufp = buf;
+}
+
+static cv_type *
+cv_type_create(unsigned long indx)
+{
+ cv_type *type = yasm_xmalloc(sizeof(cv_type));
+
+ type->indx = indx;
+ type->num_leaves = 0;
+ type->leaves = NULL;
+
+ return type;
+}
+
+static void
+cv_type_append_leaf(cv_type *type, /*@keep@*/ cv_leaf *leaf)
+{
+ type->num_leaves++;
+
+ /* This is inefficient for large numbers of leaves, but that won't happen
+ * until we add structure support.
+ */
+ type->leaves = yasm_xrealloc(type->leaves,
+ type->num_leaves*sizeof(cv_leaf *));
+
+ type->leaves[type->num_leaves-1] = leaf;
+}
+
+static void
+cv_type_bc_destroy(void *contents)
+{
+ cv_type *type = (cv_type *)contents;
+ size_t i;
+
+ for (i=0; i<type->num_leaves; i++)
+ cv_leaf_destroy(type->leaves[i]);
+ if (type->leaves)
+ yasm_xfree(type->leaves);
+ yasm_xfree(contents);
+}
+
+static void
+cv_type_bc_print(const void *contents, FILE *f, int indent_level)
+{
+ /* TODO */
+}
+
+static int
+cv_type_bc_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
+ void *add_span_data)
+{
+ cv_type *type = (cv_type *)bc->contents;
+ size_t i;
+
+ if (type->indx == CV_FIRST_NONPRIM)
+ bc->len = 4+2;
+ else
+ bc->len = 2;
+
+ for (i=0; i<type->num_leaves; i++)
+ bc->len += cv_leaf_size(type->leaves[i]);
+
+ /* Pad to multiple of 4 */
+ if (bc->len & 0x3)
+ bc->len += 4-(bc->len & 0x3);
+
+ return 0;
+}
+
+static int
+cv_type_bc_tobytes(yasm_bytecode *bc, unsigned char **bufp,
+ unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ yasm_output_reloc_func output_reloc)
+{
+ yasm_object *object = yasm_section_get_object(bc->section);
+ cv_type *type = (cv_type *)bc->contents;
+ unsigned char *buf = *bufp;
+ yasm_intnum *cval;
+ size_t i;
+ unsigned long reclen = bc->len - 2;
+
+ cval = yasm_intnum_create_uint(4); /* version */
+ if (type->indx == CV_FIRST_NONPRIM) {
+ yasm_arch_intnum_tobytes(object->arch, cval, buf, 4, 32, 0, bc, 1);
+ buf += 4;
+ reclen -= 4;
+ }
+
+ /* Total length of record (following this field) - 2 bytes */
+ yasm_intnum_set_uint(cval, reclen);
+ yasm_arch_intnum_tobytes(object->arch, cval, buf, 2, 16, 0, bc, 1);
+ buf += 2;
+
+ /* Leaves */
+ for (i=0; i<type->num_leaves; i++)
+ cv_leaf_tobytes(type->leaves[i], bc, object->arch, &buf, cval);
+
+ /* Pad to multiple of 4 */
+ switch ((buf-(*bufp)) & 0x3) {
+ case 3:
+ YASM_WRITE_8(buf, CV_LF_PAD3);
+ case 2:
+ YASM_WRITE_8(buf, CV_LF_PAD2);
+ case 1:
+ YASM_WRITE_8(buf, CV_LF_PAD1);
+ case 0:
+ break;
+ }
+
+ *bufp = buf;
+
+ yasm_intnum_destroy(cval);
+ return 0;
+}
diff --git a/contrib/tools/yasm/modules/dbgfmts/dwarf2/dwarf2-aranges.c b/contrib/tools/yasm/modules/dbgfmts/dwarf2/dwarf2-aranges.c
index a184a01575..f398b7fa72 100644
--- a/contrib/tools/yasm/modules/dbgfmts/dwarf2/dwarf2-aranges.c
+++ b/contrib/tools/yasm/modules/dbgfmts/dwarf2/dwarf2-aranges.c
@@ -1,125 +1,125 @@
-/*
- * DWARF2 debugging format - address range table
- *
- * Copyright (C) 2006-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <libyasm.h>
-
-#include "dwarf2-dbgfmt.h"
-
-
-static void
-dwarf2_append_arange(yasm_section *debug_aranges, /*@only@*/ yasm_expr *start,
- /*@only@*/ yasm_expr *length, unsigned int sizeof_address)
-{
- yasm_datavalhead dvs;
- yasm_bytecode *bc;
-
- yasm_dvs_initialize(&dvs);
- yasm_dvs_append(&dvs, yasm_dv_create_expr(start));
- yasm_dvs_append(&dvs, yasm_dv_create_expr(length));
- bc = yasm_bc_create_data(&dvs, sizeof_address, 0, NULL, 0);
- yasm_bc_finalize(bc, yasm_dwarf2__append_bc(debug_aranges, bc));
- yasm_bc_calc_len(bc, NULL, NULL);
-}
-
-typedef struct dwarf2_aranges_info {
- yasm_section *debug_aranges; /* section to which address ranges go */
- yasm_object *object;
- yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2;
-} dwarf2_aranges_info;
-
-static int
-dwarf2_generate_aranges_section(yasm_section *sect, /*@null@*/ void *d)
-{
- dwarf2_aranges_info *info = (dwarf2_aranges_info *)d;
- yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2 = info->dbgfmt_dwarf2;
- /*@null@*/ dwarf2_section_data *dsd;
- /*@only@*/ yasm_expr *start, *length;
-
- dsd = yasm_section_get_data(sect, &yasm_dwarf2__section_data_cb);
- if (!dsd)
- return 0; /* no line data for this section */
-
- /* Create address range descriptor */
- start = yasm_expr_create_ident(
- yasm_expr_sym(yasm_dwarf2__bc_sym(info->object->symtab,
- yasm_section_bcs_first(sect))), 0);
- length = yasm_expr_create_ident(
- yasm_expr_int(yasm_calc_bc_dist(yasm_section_bcs_first(sect),
- yasm_section_bcs_last(sect))), 0);
- dwarf2_append_arange(info->debug_aranges, start, length,
- dbgfmt_dwarf2->sizeof_address);
-
- return 0;
-}
-
-yasm_section *
-yasm_dwarf2__generate_aranges(yasm_object *object, yasm_section *debug_info)
-{
- yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2 = (yasm_dbgfmt_dwarf2 *)object->dbgfmt;
- int new;
- yasm_section *debug_aranges;
- yasm_bytecode *bc;
- dwarf2_head *head;
- dwarf2_aranges_info info;
-
- debug_aranges =
- yasm_object_get_general(object, ".debug_aranges",
- 2*dbgfmt_dwarf2->sizeof_address, 0, 0, &new,
- 0);
-
- /* header */
- head = yasm_dwarf2__add_head(dbgfmt_dwarf2, debug_aranges, debug_info, 1,
- 1);
-
- /* align ranges to 2x address size (range size) */
- bc = yasm_bc_create_align(
- yasm_expr_create_ident(yasm_expr_int(
- yasm_intnum_create_uint(dbgfmt_dwarf2->sizeof_address*2)), 0),
- NULL, NULL, NULL, 0);
- yasm_bc_finalize(bc, yasm_dwarf2__append_bc(debug_aranges, bc));
- yasm_bc_calc_len(bc, NULL, NULL);
-
- info.debug_aranges = debug_aranges;
- info.object = object;
- info.dbgfmt_dwarf2 = dbgfmt_dwarf2;
-
- yasm_object_sections_traverse(object, (void *)&info,
- dwarf2_generate_aranges_section);
-
- /* Terminate with empty address range descriptor */
- dwarf2_append_arange(debug_aranges,
- yasm_expr_create_ident(yasm_expr_int(yasm_intnum_create_uint(0)), 0),
- yasm_expr_create_ident(yasm_expr_int(yasm_intnum_create_uint(0)), 0),
- dbgfmt_dwarf2->sizeof_address);
-
- /* mark end of aranges information */
- yasm_dwarf2__set_head_end(head, yasm_section_bcs_last(debug_aranges));
-
- return debug_aranges;
-}
-
+/*
+ * DWARF2 debugging format - address range table
+ *
+ * Copyright (C) 2006-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <libyasm.h>
+
+#include "dwarf2-dbgfmt.h"
+
+
+static void
+dwarf2_append_arange(yasm_section *debug_aranges, /*@only@*/ yasm_expr *start,
+ /*@only@*/ yasm_expr *length, unsigned int sizeof_address)
+{
+ yasm_datavalhead dvs;
+ yasm_bytecode *bc;
+
+ yasm_dvs_initialize(&dvs);
+ yasm_dvs_append(&dvs, yasm_dv_create_expr(start));
+ yasm_dvs_append(&dvs, yasm_dv_create_expr(length));
+ bc = yasm_bc_create_data(&dvs, sizeof_address, 0, NULL, 0);
+ yasm_bc_finalize(bc, yasm_dwarf2__append_bc(debug_aranges, bc));
+ yasm_bc_calc_len(bc, NULL, NULL);
+}
+
+typedef struct dwarf2_aranges_info {
+ yasm_section *debug_aranges; /* section to which address ranges go */
+ yasm_object *object;
+ yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2;
+} dwarf2_aranges_info;
+
+static int
+dwarf2_generate_aranges_section(yasm_section *sect, /*@null@*/ void *d)
+{
+ dwarf2_aranges_info *info = (dwarf2_aranges_info *)d;
+ yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2 = info->dbgfmt_dwarf2;
+ /*@null@*/ dwarf2_section_data *dsd;
+ /*@only@*/ yasm_expr *start, *length;
+
+ dsd = yasm_section_get_data(sect, &yasm_dwarf2__section_data_cb);
+ if (!dsd)
+ return 0; /* no line data for this section */
+
+ /* Create address range descriptor */
+ start = yasm_expr_create_ident(
+ yasm_expr_sym(yasm_dwarf2__bc_sym(info->object->symtab,
+ yasm_section_bcs_first(sect))), 0);
+ length = yasm_expr_create_ident(
+ yasm_expr_int(yasm_calc_bc_dist(yasm_section_bcs_first(sect),
+ yasm_section_bcs_last(sect))), 0);
+ dwarf2_append_arange(info->debug_aranges, start, length,
+ dbgfmt_dwarf2->sizeof_address);
+
+ return 0;
+}
+
+yasm_section *
+yasm_dwarf2__generate_aranges(yasm_object *object, yasm_section *debug_info)
+{
+ yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2 = (yasm_dbgfmt_dwarf2 *)object->dbgfmt;
+ int new;
+ yasm_section *debug_aranges;
+ yasm_bytecode *bc;
+ dwarf2_head *head;
+ dwarf2_aranges_info info;
+
+ debug_aranges =
+ yasm_object_get_general(object, ".debug_aranges",
+ 2*dbgfmt_dwarf2->sizeof_address, 0, 0, &new,
+ 0);
+
+ /* header */
+ head = yasm_dwarf2__add_head(dbgfmt_dwarf2, debug_aranges, debug_info, 1,
+ 1);
+
+ /* align ranges to 2x address size (range size) */
+ bc = yasm_bc_create_align(
+ yasm_expr_create_ident(yasm_expr_int(
+ yasm_intnum_create_uint(dbgfmt_dwarf2->sizeof_address*2)), 0),
+ NULL, NULL, NULL, 0);
+ yasm_bc_finalize(bc, yasm_dwarf2__append_bc(debug_aranges, bc));
+ yasm_bc_calc_len(bc, NULL, NULL);
+
+ info.debug_aranges = debug_aranges;
+ info.object = object;
+ info.dbgfmt_dwarf2 = dbgfmt_dwarf2;
+
+ yasm_object_sections_traverse(object, (void *)&info,
+ dwarf2_generate_aranges_section);
+
+ /* Terminate with empty address range descriptor */
+ dwarf2_append_arange(debug_aranges,
+ yasm_expr_create_ident(yasm_expr_int(yasm_intnum_create_uint(0)), 0),
+ yasm_expr_create_ident(yasm_expr_int(yasm_intnum_create_uint(0)), 0),
+ dbgfmt_dwarf2->sizeof_address);
+
+ /* mark end of aranges information */
+ yasm_dwarf2__set_head_end(head, yasm_section_bcs_last(debug_aranges));
+
+ return debug_aranges;
+}
+
diff --git a/contrib/tools/yasm/modules/dbgfmts/dwarf2/dwarf2-dbgfmt.c b/contrib/tools/yasm/modules/dbgfmts/dwarf2/dwarf2-dbgfmt.c
index a8c2a548c7..5b66f8a70f 100644
--- a/contrib/tools/yasm/modules/dbgfmts/dwarf2/dwarf2-dbgfmt.c
+++ b/contrib/tools/yasm/modules/dbgfmts/dwarf2/dwarf2-dbgfmt.c
@@ -1,348 +1,348 @@
-/*
- * DWARF2 debugging format
- *
- * Copyright (C) 2006-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <libyasm.h>
-
-#include "dwarf2-dbgfmt.h"
-
-struct dwarf2_head {
- yasm_bytecode *start_prevbc;
- yasm_bytecode *end_prevbc;
- /*@null@*/ yasm_section *debug_ptr;
- int with_address;
- int with_segment;
-};
-
-/* Bytecode callback function prototypes */
-static void dwarf2_head_bc_destroy(void *contents);
-static void dwarf2_head_bc_print(const void *contents, FILE *f,
- int indent_level);
-static int dwarf2_head_bc_calc_len
- (yasm_bytecode *bc, yasm_bc_add_span_func add_span, void *add_span_data);
-static int dwarf2_head_bc_tobytes
- (yasm_bytecode *bc, unsigned char **bufp, unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- /*@null@*/ yasm_output_reloc_func output_reloc);
-
-/* Bytecode callback structures */
-static const yasm_bytecode_callback dwarf2_head_bc_callback = {
- dwarf2_head_bc_destroy,
- dwarf2_head_bc_print,
- yasm_bc_finalize_common,
- NULL,
- dwarf2_head_bc_calc_len,
- yasm_bc_expand_common,
- dwarf2_head_bc_tobytes,
- 0
-};
-
-/* Section data callback function prototypes */
-static void dwarf2_section_data_destroy(void *data);
-static void dwarf2_section_data_print(void *data, FILE *f, int indent_level);
-
-/* Section data callback */
-const yasm_assoc_data_callback yasm_dwarf2__section_data_cb = {
- dwarf2_section_data_destroy,
- dwarf2_section_data_print
-};
-
-yasm_dbgfmt_module yasm_dwarf2_LTX_dbgfmt;
-
-
-static /*@null@*/ /*@only@*/ yasm_dbgfmt *
-dwarf2_dbgfmt_create(yasm_object *object)
-{
- yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2 =
- yasm_xmalloc(sizeof(yasm_dbgfmt_dwarf2));
- size_t i;
-
- dbgfmt_dwarf2->dbgfmt.module = &yasm_dwarf2_LTX_dbgfmt;
-
- dbgfmt_dwarf2->dirs_allocated = 32;
- dbgfmt_dwarf2->dirs_size = 0;
- dbgfmt_dwarf2->dirs =
- yasm_xmalloc(sizeof(char *)*dbgfmt_dwarf2->dirs_allocated);
-
- dbgfmt_dwarf2->filenames_allocated = 32;
- dbgfmt_dwarf2->filenames_size = 0;
- dbgfmt_dwarf2->filenames =
- yasm_xmalloc(sizeof(dwarf2_filename)*dbgfmt_dwarf2->filenames_allocated);
- for (i=0; i<dbgfmt_dwarf2->filenames_allocated; i++) {
- dbgfmt_dwarf2->filenames[i].pathname = NULL;
- dbgfmt_dwarf2->filenames[i].filename = NULL;
- dbgfmt_dwarf2->filenames[i].dir = 0;
- }
-
- dbgfmt_dwarf2->format = DWARF2_FORMAT_32BIT; /* TODO: flexible? */
-
- dbgfmt_dwarf2->sizeof_address = yasm_arch_get_address_size(object->arch)/8;
- switch (dbgfmt_dwarf2->format) {
- case DWARF2_FORMAT_32BIT:
- dbgfmt_dwarf2->sizeof_offset = 4;
- break;
- case DWARF2_FORMAT_64BIT:
- dbgfmt_dwarf2->sizeof_offset = 8;
- break;
- }
- dbgfmt_dwarf2->min_insn_len = yasm_arch_min_insn_len(object->arch);
-
- return (yasm_dbgfmt *)dbgfmt_dwarf2;
-}
-
-static void
-dwarf2_dbgfmt_destroy(/*@only@*/ yasm_dbgfmt *dbgfmt)
-{
- yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2 = (yasm_dbgfmt_dwarf2 *)dbgfmt;
- size_t i;
- for (i=0; i<dbgfmt_dwarf2->dirs_size; i++)
- if (dbgfmt_dwarf2->dirs[i])
- yasm_xfree(dbgfmt_dwarf2->dirs[i]);
- yasm_xfree(dbgfmt_dwarf2->dirs);
- for (i=0; i<dbgfmt_dwarf2->filenames_size; i++) {
- if (dbgfmt_dwarf2->filenames[i].pathname)
- yasm_xfree(dbgfmt_dwarf2->filenames[i].pathname);
- if (dbgfmt_dwarf2->filenames[i].filename)
- yasm_xfree(dbgfmt_dwarf2->filenames[i].filename);
- }
- yasm_xfree(dbgfmt_dwarf2->filenames);
- yasm_xfree(dbgfmt);
-}
-
-/* Add a bytecode to a section, updating offset on insertion;
- * no optimization necessary.
- */
-yasm_bytecode *
-yasm_dwarf2__append_bc(yasm_section *sect, yasm_bytecode *bc)
-{
- yasm_bytecode *precbc = yasm_section_bcs_last(sect);
- bc->offset = yasm_bc_next_offset(precbc);
- yasm_section_bcs_append(sect, bc);
- return precbc;
-}
-
-static void
-dwarf2_dbgfmt_generate(yasm_object *object, yasm_linemap *linemap,
- yasm_errwarns *errwarns)
-{
- yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2 = (yasm_dbgfmt_dwarf2 *)object->dbgfmt;
- size_t num_line_sections;
- /*@null@*/ yasm_section *debug_info, *debug_line, *main_code;
-
- /* If we don't have any .file directives, generate line information
- * based on the asm source.
- */
- debug_line = yasm_dwarf2__generate_line(object, linemap, errwarns,
- dbgfmt_dwarf2->filenames_size == 0,
- &main_code, &num_line_sections);
-
- /* If we don't have a .debug_info (or it's empty), generate the minimal
- * set of .debug_info, .debug_aranges, and .debug_abbrev so that the
- * .debug_line we're generating is actually useful.
- */
- debug_info = yasm_object_find_general(object, ".debug_info");
- if (num_line_sections > 0 &&
- (!debug_info || yasm_section_bcs_first(debug_info)
- == yasm_section_bcs_last(debug_info))) {
- debug_info = yasm_dwarf2__generate_info(object, debug_line, main_code);
- yasm_dwarf2__generate_aranges(object, debug_info);
- /*yasm_dwarf2__generate_pubnames(object, debug_info);*/
- }
-}
-
-yasm_symrec *
-yasm_dwarf2__bc_sym(yasm_symtab *symtab, yasm_bytecode *bc)
-{
- /*@dependent@*/ yasm_symrec *sym;
- if (bc->symrecs && bc->symrecs[0])
- sym = bc->symrecs[0];
- else
- sym = yasm_symtab_define_label(symtab, ".bcsym", bc, 0, 0);
- return sym;
-}
-
-dwarf2_head *
-yasm_dwarf2__add_head
- (yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2, yasm_section *sect,
- /*@null@*/ yasm_section *debug_ptr, int with_address, int with_segment)
-{
- dwarf2_head *head;
- yasm_bytecode *bc;
-
- head = yasm_xmalloc(sizeof(dwarf2_head));
- head->start_prevbc = yasm_section_bcs_last(sect);
-
- bc = yasm_bc_create_common(&dwarf2_head_bc_callback, head, 0);
- bc->len = dbgfmt_dwarf2->sizeof_offset + 2;
- if (dbgfmt_dwarf2->format == DWARF2_FORMAT_64BIT)
- bc->len += 4;
-
- if (debug_ptr) {
- head->debug_ptr = debug_ptr;
- bc->len += dbgfmt_dwarf2->sizeof_offset;
- } else
- head->debug_ptr = NULL;
-
- head->with_address = with_address;
- head->with_segment = with_segment;
- if (with_address)
- bc->len++;
- if (with_segment)
- bc->len++;
-
- head->end_prevbc = bc;
- yasm_dwarf2__append_bc(sect, bc);
- return head;
-}
-
-void
-yasm_dwarf2__set_head_end(dwarf2_head *head, yasm_bytecode *end_prevbc)
-{
- head->end_prevbc = end_prevbc;
-}
-
-static void
-dwarf2_head_bc_destroy(void *contents)
-{
- yasm_xfree(contents);
-}
-
-static void
-dwarf2_head_bc_print(const void *contents, FILE *f, int indent_level)
-{
- /* TODO */
-}
-
-static int
-dwarf2_head_bc_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
- void *add_span_data)
-{
- yasm_internal_error(N_("tried to calc_len a dwarf2 head bytecode"));
- /*@notreached@*/
- return 0;
-}
-
-static int
-dwarf2_head_bc_tobytes(yasm_bytecode *bc, unsigned char **bufp,
- unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- yasm_output_reloc_func output_reloc)
-{
- yasm_object *object = yasm_section_get_object(bc->section);
- yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2 = (yasm_dbgfmt_dwarf2 *)object->dbgfmt;
- dwarf2_head *head = (dwarf2_head *)bc->contents;
- unsigned char *buf = *bufp;
- yasm_intnum *intn, *cval;
-
- if (dbgfmt_dwarf2->format == DWARF2_FORMAT_64BIT) {
- YASM_WRITE_8(buf, 0xff);
- YASM_WRITE_8(buf, 0xff);
- YASM_WRITE_8(buf, 0xff);
- YASM_WRITE_8(buf, 0xff);
- }
-
- /* Total length of aranges info (following this field) */
- cval = yasm_intnum_create_uint(dbgfmt_dwarf2->sizeof_offset);
- intn = yasm_calc_bc_dist(head->start_prevbc, head->end_prevbc);
- yasm_intnum_calc(intn, YASM_EXPR_SUB, cval);
- yasm_arch_intnum_tobytes(object->arch, intn, buf,
- dbgfmt_dwarf2->sizeof_offset,
- dbgfmt_dwarf2->sizeof_offset*8, 0, bc, 0);
- buf += dbgfmt_dwarf2->sizeof_offset;
- yasm_intnum_destroy(intn);
-
- /* DWARF version */
- yasm_intnum_set_uint(cval, 2);
- yasm_arch_intnum_tobytes(object->arch, cval, buf, 2, 16, 0, bc, 0);
- buf += 2;
-
- /* Pointer to another debug section */
- if (head->debug_ptr) {
- yasm_value value;
- yasm_value_init_sym(&value,
- yasm_dwarf2__bc_sym(object->symtab,
- yasm_section_bcs_first(head->debug_ptr)),
- dbgfmt_dwarf2->sizeof_offset*8);
- output_value(&value, buf, dbgfmt_dwarf2->sizeof_offset,
- (unsigned long)(buf-bufstart), bc, 0, d);
- buf += dbgfmt_dwarf2->sizeof_offset;
- }
-
- /* Size of the offset portion of the address */
- if (head->with_address)
- YASM_WRITE_8(buf, dbgfmt_dwarf2->sizeof_address);
-
- /* Size of a segment descriptor. 0 = flat address space */
- if (head->with_segment)
- YASM_WRITE_8(buf, 0);
-
- *bufp = buf;
-
- yasm_intnum_destroy(cval);
- return 0;
-}
-
-static void
-dwarf2_section_data_destroy(void *data)
-{
- dwarf2_section_data *dsd = data;
- dwarf2_loc *n1, *n2;
-
- /* Delete locations */
- n1 = STAILQ_FIRST(&dsd->locs);
- while (n1) {
- n2 = STAILQ_NEXT(n1, link);
- yasm_xfree(n1);
- n1 = n2;
- }
-
- yasm_xfree(data);
-}
-
-static void
-dwarf2_section_data_print(void *data, FILE *f, int indent_level)
-{
- /* TODO */
-}
-
-static const yasm_directive dwarf2_directives[] = {
- { ".loc", "gas", yasm_dwarf2__dir_loc, YASM_DIR_ARG_REQUIRED },
- { ".file", "gas", yasm_dwarf2__dir_file, YASM_DIR_ARG_REQUIRED },
- { "loc", "nasm", yasm_dwarf2__dir_loc, YASM_DIR_ARG_REQUIRED },
- { "file", "nasm", yasm_dwarf2__dir_file, YASM_DIR_ARG_REQUIRED },
- { NULL, NULL, NULL, 0 }
-};
-
-/* Define dbgfmt structure -- see dbgfmt.h for details */
-yasm_dbgfmt_module yasm_dwarf2_LTX_dbgfmt = {
- "DWARF2 debugging format",
- "dwarf2",
- dwarf2_directives,
- dwarf2_dbgfmt_create,
- dwarf2_dbgfmt_destroy,
- dwarf2_dbgfmt_generate
-};
+/*
+ * DWARF2 debugging format
+ *
+ * Copyright (C) 2006-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <libyasm.h>
+
+#include "dwarf2-dbgfmt.h"
+
+struct dwarf2_head {
+ yasm_bytecode *start_prevbc;
+ yasm_bytecode *end_prevbc;
+ /*@null@*/ yasm_section *debug_ptr;
+ int with_address;
+ int with_segment;
+};
+
+/* Bytecode callback function prototypes */
+static void dwarf2_head_bc_destroy(void *contents);
+static void dwarf2_head_bc_print(const void *contents, FILE *f,
+ int indent_level);
+static int dwarf2_head_bc_calc_len
+ (yasm_bytecode *bc, yasm_bc_add_span_func add_span, void *add_span_data);
+static int dwarf2_head_bc_tobytes
+ (yasm_bytecode *bc, unsigned char **bufp, unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ /*@null@*/ yasm_output_reloc_func output_reloc);
+
+/* Bytecode callback structures */
+static const yasm_bytecode_callback dwarf2_head_bc_callback = {
+ dwarf2_head_bc_destroy,
+ dwarf2_head_bc_print,
+ yasm_bc_finalize_common,
+ NULL,
+ dwarf2_head_bc_calc_len,
+ yasm_bc_expand_common,
+ dwarf2_head_bc_tobytes,
+ 0
+};
+
+/* Section data callback function prototypes */
+static void dwarf2_section_data_destroy(void *data);
+static void dwarf2_section_data_print(void *data, FILE *f, int indent_level);
+
+/* Section data callback */
+const yasm_assoc_data_callback yasm_dwarf2__section_data_cb = {
+ dwarf2_section_data_destroy,
+ dwarf2_section_data_print
+};
+
+yasm_dbgfmt_module yasm_dwarf2_LTX_dbgfmt;
+
+
+static /*@null@*/ /*@only@*/ yasm_dbgfmt *
+dwarf2_dbgfmt_create(yasm_object *object)
+{
+ yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2 =
+ yasm_xmalloc(sizeof(yasm_dbgfmt_dwarf2));
+ size_t i;
+
+ dbgfmt_dwarf2->dbgfmt.module = &yasm_dwarf2_LTX_dbgfmt;
+
+ dbgfmt_dwarf2->dirs_allocated = 32;
+ dbgfmt_dwarf2->dirs_size = 0;
+ dbgfmt_dwarf2->dirs =
+ yasm_xmalloc(sizeof(char *)*dbgfmt_dwarf2->dirs_allocated);
+
+ dbgfmt_dwarf2->filenames_allocated = 32;
+ dbgfmt_dwarf2->filenames_size = 0;
+ dbgfmt_dwarf2->filenames =
+ yasm_xmalloc(sizeof(dwarf2_filename)*dbgfmt_dwarf2->filenames_allocated);
+ for (i=0; i<dbgfmt_dwarf2->filenames_allocated; i++) {
+ dbgfmt_dwarf2->filenames[i].pathname = NULL;
+ dbgfmt_dwarf2->filenames[i].filename = NULL;
+ dbgfmt_dwarf2->filenames[i].dir = 0;
+ }
+
+ dbgfmt_dwarf2->format = DWARF2_FORMAT_32BIT; /* TODO: flexible? */
+
+ dbgfmt_dwarf2->sizeof_address = yasm_arch_get_address_size(object->arch)/8;
+ switch (dbgfmt_dwarf2->format) {
+ case DWARF2_FORMAT_32BIT:
+ dbgfmt_dwarf2->sizeof_offset = 4;
+ break;
+ case DWARF2_FORMAT_64BIT:
+ dbgfmt_dwarf2->sizeof_offset = 8;
+ break;
+ }
+ dbgfmt_dwarf2->min_insn_len = yasm_arch_min_insn_len(object->arch);
+
+ return (yasm_dbgfmt *)dbgfmt_dwarf2;
+}
+
+static void
+dwarf2_dbgfmt_destroy(/*@only@*/ yasm_dbgfmt *dbgfmt)
+{
+ yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2 = (yasm_dbgfmt_dwarf2 *)dbgfmt;
+ size_t i;
+ for (i=0; i<dbgfmt_dwarf2->dirs_size; i++)
+ if (dbgfmt_dwarf2->dirs[i])
+ yasm_xfree(dbgfmt_dwarf2->dirs[i]);
+ yasm_xfree(dbgfmt_dwarf2->dirs);
+ for (i=0; i<dbgfmt_dwarf2->filenames_size; i++) {
+ if (dbgfmt_dwarf2->filenames[i].pathname)
+ yasm_xfree(dbgfmt_dwarf2->filenames[i].pathname);
+ if (dbgfmt_dwarf2->filenames[i].filename)
+ yasm_xfree(dbgfmt_dwarf2->filenames[i].filename);
+ }
+ yasm_xfree(dbgfmt_dwarf2->filenames);
+ yasm_xfree(dbgfmt);
+}
+
+/* Add a bytecode to a section, updating offset on insertion;
+ * no optimization necessary.
+ */
+yasm_bytecode *
+yasm_dwarf2__append_bc(yasm_section *sect, yasm_bytecode *bc)
+{
+ yasm_bytecode *precbc = yasm_section_bcs_last(sect);
+ bc->offset = yasm_bc_next_offset(precbc);
+ yasm_section_bcs_append(sect, bc);
+ return precbc;
+}
+
+static void
+dwarf2_dbgfmt_generate(yasm_object *object, yasm_linemap *linemap,
+ yasm_errwarns *errwarns)
+{
+ yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2 = (yasm_dbgfmt_dwarf2 *)object->dbgfmt;
+ size_t num_line_sections;
+ /*@null@*/ yasm_section *debug_info, *debug_line, *main_code;
+
+ /* If we don't have any .file directives, generate line information
+ * based on the asm source.
+ */
+ debug_line = yasm_dwarf2__generate_line(object, linemap, errwarns,
+ dbgfmt_dwarf2->filenames_size == 0,
+ &main_code, &num_line_sections);
+
+ /* If we don't have a .debug_info (or it's empty), generate the minimal
+ * set of .debug_info, .debug_aranges, and .debug_abbrev so that the
+ * .debug_line we're generating is actually useful.
+ */
+ debug_info = yasm_object_find_general(object, ".debug_info");
+ if (num_line_sections > 0 &&
+ (!debug_info || yasm_section_bcs_first(debug_info)
+ == yasm_section_bcs_last(debug_info))) {
+ debug_info = yasm_dwarf2__generate_info(object, debug_line, main_code);
+ yasm_dwarf2__generate_aranges(object, debug_info);
+ /*yasm_dwarf2__generate_pubnames(object, debug_info);*/
+ }
+}
+
+yasm_symrec *
+yasm_dwarf2__bc_sym(yasm_symtab *symtab, yasm_bytecode *bc)
+{
+ /*@dependent@*/ yasm_symrec *sym;
+ if (bc->symrecs && bc->symrecs[0])
+ sym = bc->symrecs[0];
+ else
+ sym = yasm_symtab_define_label(symtab, ".bcsym", bc, 0, 0);
+ return sym;
+}
+
+dwarf2_head *
+yasm_dwarf2__add_head
+ (yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2, yasm_section *sect,
+ /*@null@*/ yasm_section *debug_ptr, int with_address, int with_segment)
+{
+ dwarf2_head *head;
+ yasm_bytecode *bc;
+
+ head = yasm_xmalloc(sizeof(dwarf2_head));
+ head->start_prevbc = yasm_section_bcs_last(sect);
+
+ bc = yasm_bc_create_common(&dwarf2_head_bc_callback, head, 0);
+ bc->len = dbgfmt_dwarf2->sizeof_offset + 2;
+ if (dbgfmt_dwarf2->format == DWARF2_FORMAT_64BIT)
+ bc->len += 4;
+
+ if (debug_ptr) {
+ head->debug_ptr = debug_ptr;
+ bc->len += dbgfmt_dwarf2->sizeof_offset;
+ } else
+ head->debug_ptr = NULL;
+
+ head->with_address = with_address;
+ head->with_segment = with_segment;
+ if (with_address)
+ bc->len++;
+ if (with_segment)
+ bc->len++;
+
+ head->end_prevbc = bc;
+ yasm_dwarf2__append_bc(sect, bc);
+ return head;
+}
+
+void
+yasm_dwarf2__set_head_end(dwarf2_head *head, yasm_bytecode *end_prevbc)
+{
+ head->end_prevbc = end_prevbc;
+}
+
+static void
+dwarf2_head_bc_destroy(void *contents)
+{
+ yasm_xfree(contents);
+}
+
+static void
+dwarf2_head_bc_print(const void *contents, FILE *f, int indent_level)
+{
+ /* TODO */
+}
+
+static int
+dwarf2_head_bc_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
+ void *add_span_data)
+{
+ yasm_internal_error(N_("tried to calc_len a dwarf2 head bytecode"));
+ /*@notreached@*/
+ return 0;
+}
+
+static int
+dwarf2_head_bc_tobytes(yasm_bytecode *bc, unsigned char **bufp,
+ unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ yasm_output_reloc_func output_reloc)
+{
+ yasm_object *object = yasm_section_get_object(bc->section);
+ yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2 = (yasm_dbgfmt_dwarf2 *)object->dbgfmt;
+ dwarf2_head *head = (dwarf2_head *)bc->contents;
+ unsigned char *buf = *bufp;
+ yasm_intnum *intn, *cval;
+
+ if (dbgfmt_dwarf2->format == DWARF2_FORMAT_64BIT) {
+ YASM_WRITE_8(buf, 0xff);
+ YASM_WRITE_8(buf, 0xff);
+ YASM_WRITE_8(buf, 0xff);
+ YASM_WRITE_8(buf, 0xff);
+ }
+
+ /* Total length of aranges info (following this field) */
+ cval = yasm_intnum_create_uint(dbgfmt_dwarf2->sizeof_offset);
+ intn = yasm_calc_bc_dist(head->start_prevbc, head->end_prevbc);
+ yasm_intnum_calc(intn, YASM_EXPR_SUB, cval);
+ yasm_arch_intnum_tobytes(object->arch, intn, buf,
+ dbgfmt_dwarf2->sizeof_offset,
+ dbgfmt_dwarf2->sizeof_offset*8, 0, bc, 0);
+ buf += dbgfmt_dwarf2->sizeof_offset;
+ yasm_intnum_destroy(intn);
+
+ /* DWARF version */
+ yasm_intnum_set_uint(cval, 2);
+ yasm_arch_intnum_tobytes(object->arch, cval, buf, 2, 16, 0, bc, 0);
+ buf += 2;
+
+ /* Pointer to another debug section */
+ if (head->debug_ptr) {
+ yasm_value value;
+ yasm_value_init_sym(&value,
+ yasm_dwarf2__bc_sym(object->symtab,
+ yasm_section_bcs_first(head->debug_ptr)),
+ dbgfmt_dwarf2->sizeof_offset*8);
+ output_value(&value, buf, dbgfmt_dwarf2->sizeof_offset,
+ (unsigned long)(buf-bufstart), bc, 0, d);
+ buf += dbgfmt_dwarf2->sizeof_offset;
+ }
+
+ /* Size of the offset portion of the address */
+ if (head->with_address)
+ YASM_WRITE_8(buf, dbgfmt_dwarf2->sizeof_address);
+
+ /* Size of a segment descriptor. 0 = flat address space */
+ if (head->with_segment)
+ YASM_WRITE_8(buf, 0);
+
+ *bufp = buf;
+
+ yasm_intnum_destroy(cval);
+ return 0;
+}
+
+static void
+dwarf2_section_data_destroy(void *data)
+{
+ dwarf2_section_data *dsd = data;
+ dwarf2_loc *n1, *n2;
+
+ /* Delete locations */
+ n1 = STAILQ_FIRST(&dsd->locs);
+ while (n1) {
+ n2 = STAILQ_NEXT(n1, link);
+ yasm_xfree(n1);
+ n1 = n2;
+ }
+
+ yasm_xfree(data);
+}
+
+static void
+dwarf2_section_data_print(void *data, FILE *f, int indent_level)
+{
+ /* TODO */
+}
+
+static const yasm_directive dwarf2_directives[] = {
+ { ".loc", "gas", yasm_dwarf2__dir_loc, YASM_DIR_ARG_REQUIRED },
+ { ".file", "gas", yasm_dwarf2__dir_file, YASM_DIR_ARG_REQUIRED },
+ { "loc", "nasm", yasm_dwarf2__dir_loc, YASM_DIR_ARG_REQUIRED },
+ { "file", "nasm", yasm_dwarf2__dir_file, YASM_DIR_ARG_REQUIRED },
+ { NULL, NULL, NULL, 0 }
+};
+
+/* Define dbgfmt structure -- see dbgfmt.h for details */
+yasm_dbgfmt_module yasm_dwarf2_LTX_dbgfmt = {
+ "DWARF2 debugging format",
+ "dwarf2",
+ dwarf2_directives,
+ dwarf2_dbgfmt_create,
+ dwarf2_dbgfmt_destroy,
+ dwarf2_dbgfmt_generate
+};
diff --git a/contrib/tools/yasm/modules/dbgfmts/dwarf2/dwarf2-dbgfmt.h b/contrib/tools/yasm/modules/dbgfmts/dwarf2/dwarf2-dbgfmt.h
index 9f4b1e1d1c..03752345cd 100644
--- a/contrib/tools/yasm/modules/dbgfmts/dwarf2/dwarf2-dbgfmt.h
+++ b/contrib/tools/yasm/modules/dbgfmts/dwarf2/dwarf2-dbgfmt.h
@@ -1,131 +1,131 @@
-/*
- * DWARF2 debugging format
- *
- * Copyright (C) 2006-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef YASM_DWARF2_DBGFMT_H
-#define YASM_DWARF2_DBGFMT_H
-
-#define WITH_DWARF3 1
-
-typedef struct {
- char *pathname; /* full filename */
- char *filename; /* basename of full filename */
- unsigned long dir; /* index into directories array for relative path;
- * 0 for current directory. */
-} dwarf2_filename;
-
-/* Global data */
-typedef struct yasm_dbgfmt_dwarf2 {
- yasm_dbgfmt_base dbgfmt; /* base structure */
-
- char **dirs;
- unsigned long dirs_size;
- unsigned long dirs_allocated;
-
- dwarf2_filename *filenames;
- unsigned long filenames_size;
- unsigned long filenames_allocated;
-
- enum {
- DWARF2_FORMAT_32BIT,
- DWARF2_FORMAT_64BIT
- } format;
-
- unsigned int sizeof_address, sizeof_offset, min_insn_len;
-} yasm_dbgfmt_dwarf2;
-
-/* .loc directive data */
-typedef struct dwarf2_loc {
- /*@reldef@*/ STAILQ_ENTRY(dwarf2_loc) link;
-
- unsigned long vline; /* virtual line number of .loc directive */
-
- /* source information */
- unsigned long file; /* index into table of filenames */
- unsigned long line; /* source line number */
- unsigned long column; /* source column */
- unsigned long discriminator;
- int isa_change;
- unsigned long isa;
- enum {
- IS_STMT_NOCHANGE = 0,
- IS_STMT_SET,
- IS_STMT_CLEAR
- } is_stmt;
- int basic_block;
- int prologue_end;
- int epilogue_begin;
-
- yasm_bytecode *bc; /* first bytecode following */
- yasm_symrec *sym; /* last symbol preceding */
-} dwarf2_loc;
-
-/* Per-section data */
-typedef struct dwarf2_section_data {
- /* The locations set by the .loc directives in this section, in assembly
- * source order.
- */
- /*@reldef@*/ STAILQ_HEAD(dwarf2_lochead, dwarf2_loc) locs;
-} dwarf2_section_data;
-
-extern const yasm_assoc_data_callback yasm_dwarf2__section_data_cb;
-
-yasm_bytecode *yasm_dwarf2__append_bc(yasm_section *sect, yasm_bytecode *bc);
-
-/*@dependent@*/ yasm_symrec *yasm_dwarf2__bc_sym(yasm_symtab *symtab,
- yasm_bytecode *bc);
-
-typedef struct dwarf2_head dwarf2_head;
-dwarf2_head *yasm_dwarf2__add_head
- (yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2, yasm_section *sect,
- /*@null@*/ yasm_section *debug_ptr, int with_address, int with_segment);
-void yasm_dwarf2__set_head_end(dwarf2_head *head, yasm_bytecode *end_prevbc);
-
-/* Line number functions */
-yasm_section *yasm_dwarf2__generate_line
- (yasm_object *object, yasm_linemap *linemap, yasm_errwarns *errwarns,
- int asm_source, /*@out@*/ yasm_section **main_code,
- /*@out@*/ size_t *num_line_sections);
-void yasm_dwarf2__dir_loc(yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams,
- unsigned long line);
-void yasm_dwarf2__dir_file(yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams,
- unsigned long line);
-
-/* Address range table functions */
-yasm_section *yasm_dwarf2__generate_aranges(yasm_object *object,
- yasm_section *debug_info);
-
-/* Name lookup table functions */
-yasm_section *yasm_dwarf2__generate_pubnames(yasm_object *object,
- yasm_section *debug_info);
-
-/* Information functions */
-yasm_section *yasm_dwarf2__generate_info
- (yasm_object *object, yasm_section *debug_line,
- /*@null@*/ yasm_section *main_code);
-
-#endif
+/*
+ * DWARF2 debugging format
+ *
+ * Copyright (C) 2006-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef YASM_DWARF2_DBGFMT_H
+#define YASM_DWARF2_DBGFMT_H
+
+#define WITH_DWARF3 1
+
+typedef struct {
+ char *pathname; /* full filename */
+ char *filename; /* basename of full filename */
+ unsigned long dir; /* index into directories array for relative path;
+ * 0 for current directory. */
+} dwarf2_filename;
+
+/* Global data */
+typedef struct yasm_dbgfmt_dwarf2 {
+ yasm_dbgfmt_base dbgfmt; /* base structure */
+
+ char **dirs;
+ unsigned long dirs_size;
+ unsigned long dirs_allocated;
+
+ dwarf2_filename *filenames;
+ unsigned long filenames_size;
+ unsigned long filenames_allocated;
+
+ enum {
+ DWARF2_FORMAT_32BIT,
+ DWARF2_FORMAT_64BIT
+ } format;
+
+ unsigned int sizeof_address, sizeof_offset, min_insn_len;
+} yasm_dbgfmt_dwarf2;
+
+/* .loc directive data */
+typedef struct dwarf2_loc {
+ /*@reldef@*/ STAILQ_ENTRY(dwarf2_loc) link;
+
+ unsigned long vline; /* virtual line number of .loc directive */
+
+ /* source information */
+ unsigned long file; /* index into table of filenames */
+ unsigned long line; /* source line number */
+ unsigned long column; /* source column */
+ unsigned long discriminator;
+ int isa_change;
+ unsigned long isa;
+ enum {
+ IS_STMT_NOCHANGE = 0,
+ IS_STMT_SET,
+ IS_STMT_CLEAR
+ } is_stmt;
+ int basic_block;
+ int prologue_end;
+ int epilogue_begin;
+
+ yasm_bytecode *bc; /* first bytecode following */
+ yasm_symrec *sym; /* last symbol preceding */
+} dwarf2_loc;
+
+/* Per-section data */
+typedef struct dwarf2_section_data {
+ /* The locations set by the .loc directives in this section, in assembly
+ * source order.
+ */
+ /*@reldef@*/ STAILQ_HEAD(dwarf2_lochead, dwarf2_loc) locs;
+} dwarf2_section_data;
+
+extern const yasm_assoc_data_callback yasm_dwarf2__section_data_cb;
+
+yasm_bytecode *yasm_dwarf2__append_bc(yasm_section *sect, yasm_bytecode *bc);
+
+/*@dependent@*/ yasm_symrec *yasm_dwarf2__bc_sym(yasm_symtab *symtab,
+ yasm_bytecode *bc);
+
+typedef struct dwarf2_head dwarf2_head;
+dwarf2_head *yasm_dwarf2__add_head
+ (yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2, yasm_section *sect,
+ /*@null@*/ yasm_section *debug_ptr, int with_address, int with_segment);
+void yasm_dwarf2__set_head_end(dwarf2_head *head, yasm_bytecode *end_prevbc);
+
+/* Line number functions */
+yasm_section *yasm_dwarf2__generate_line
+ (yasm_object *object, yasm_linemap *linemap, yasm_errwarns *errwarns,
+ int asm_source, /*@out@*/ yasm_section **main_code,
+ /*@out@*/ size_t *num_line_sections);
+void yasm_dwarf2__dir_loc(yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams,
+ unsigned long line);
+void yasm_dwarf2__dir_file(yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams,
+ unsigned long line);
+
+/* Address range table functions */
+yasm_section *yasm_dwarf2__generate_aranges(yasm_object *object,
+ yasm_section *debug_info);
+
+/* Name lookup table functions */
+yasm_section *yasm_dwarf2__generate_pubnames(yasm_object *object,
+ yasm_section *debug_info);
+
+/* Information functions */
+yasm_section *yasm_dwarf2__generate_info
+ (yasm_object *object, yasm_section *debug_line,
+ /*@null@*/ yasm_section *main_code);
+
+#endif
diff --git a/contrib/tools/yasm/modules/dbgfmts/dwarf2/dwarf2-info.c b/contrib/tools/yasm/modules/dbgfmts/dwarf2/dwarf2-info.c
index fd8c406926..96d24db06a 100644
--- a/contrib/tools/yasm/modules/dbgfmts/dwarf2/dwarf2-info.c
+++ b/contrib/tools/yasm/modules/dbgfmts/dwarf2/dwarf2-info.c
@@ -1,438 +1,438 @@
-/*
- * DWARF2 debugging format - info and abbreviation tables
- *
- * Copyright (C) 2006-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <libyasm.h>
-
-#include "dwarf2-dbgfmt.h"
-
-#define DW_LANG_Mips_Assembler 0x8001
-
-/* Tag encodings */
-typedef enum {
- DW_TAG_padding = 0x00,
- DW_TAG_array_type = 0x01,
- DW_TAG_class_type = 0x02,
- DW_TAG_entry_point = 0x03,
- DW_TAG_enumeration_type = 0x04,
- DW_TAG_formal_parameter = 0x05,
- DW_TAG_imported_declaration = 0x08,
- DW_TAG_label = 0x0a,
- DW_TAG_lexical_block = 0x0b,
- DW_TAG_member = 0x0d,
- DW_TAG_pointer_type = 0x0f,
- DW_TAG_reference_type = 0x10,
- DW_TAG_compile_unit = 0x11,
- DW_TAG_string_type = 0x12,
- DW_TAG_structure_type = 0x13,
- DW_TAG_subroutine_type = 0x15,
- DW_TAG_typedef = 0x16,
- DW_TAG_union_type = 0x17,
- DW_TAG_unspecified_parameters = 0x18,
- DW_TAG_variant = 0x19,
- DW_TAG_common_block = 0x1a,
- DW_TAG_common_inclusion = 0x1b,
- DW_TAG_inheritance = 0x1c,
- DW_TAG_inlined_subroutine = 0x1d,
- DW_TAG_module = 0x1e,
- DW_TAG_ptr_to_member_type = 0x1f,
- DW_TAG_set_type = 0x20,
- DW_TAG_subrange_type = 0x21,
- DW_TAG_with_stmt = 0x22,
- DW_TAG_access_declaration = 0x23,
- DW_TAG_base_type = 0x24,
- DW_TAG_catch_block = 0x25,
- DW_TAG_const_type = 0x26,
- DW_TAG_constant = 0x27,
- DW_TAG_enumerator = 0x28,
- DW_TAG_file_type = 0x29,
- DW_TAG_friend = 0x2a,
- DW_TAG_namelist = 0x2b,
- DW_TAG_namelist_item = 0x2c,
- DW_TAG_packed_type = 0x2d,
- DW_TAG_subprogram = 0x2e,
- DW_TAG_template_type_param = 0x2f,
- DW_TAG_template_value_param = 0x30,
- DW_TAG_thrown_type = 0x31,
- DW_TAG_try_block = 0x32,
- DW_TAG_variant_part = 0x33,
- DW_TAG_variable = 0x34,
- DW_TAG_volatile_type = 0x35
-} dwarf_tag;
-
-/* Attribute form encodings */
-typedef enum {
- DW_FORM_addr = 0x01,
- DW_FORM_block2 = 0x03,
- DW_FORM_block4 = 0x04,
- DW_FORM_data2 = 0x05,
- DW_FORM_data4 = 0x06,
- DW_FORM_data8 = 0x07,
- DW_FORM_string = 0x08,
- DW_FORM_block = 0x09,
- DW_FORM_block1 = 0x0a,
- DW_FORM_data1 = 0x0b,
- DW_FORM_flag = 0x0c,
- DW_FORM_sdata = 0x0d,
- DW_FORM_strp = 0x0e,
- DW_FORM_udata = 0x0f,
- DW_FORM_ref_addr = 0x10,
- DW_FORM_ref1 = 0x11,
- DW_FORM_ref2 = 0x12,
- DW_FORM_ref4 = 0x13,
- DW_FORM_ref8 = 0x14,
- DW_FORM_ref_udata = 0x15,
- DW_FORM_indirect = 0x16
-} dwarf_form;
-
-/* Attribute encodings */
-typedef enum {
- DW_AT_sibling = 0x01,
- DW_AT_location = 0x02,
- DW_AT_name = 0x03,
- DW_AT_ordering = 0x09,
- DW_AT_subscr_data = 0x0a,
- DW_AT_byte_size = 0x0b,
- DW_AT_bit_offset = 0x0c,
- DW_AT_bit_size = 0x0d,
- DW_AT_element_list = 0x0f,
- DW_AT_stmt_list = 0x10,
- DW_AT_low_pc = 0x11,
- DW_AT_high_pc = 0x12,
- DW_AT_language = 0x13,
- DW_AT_member = 0x14,
- DW_AT_discr = 0x15,
- DW_AT_discr_value = 0x16,
- DW_AT_visibility = 0x17,
- DW_AT_import = 0x18,
- DW_AT_string_length = 0x19,
- DW_AT_common_reference = 0x1a,
- DW_AT_comp_dir = 0x1b,
- DW_AT_const_value = 0x1c,
- DW_AT_containing_type = 0x1d,
- DW_AT_default_value = 0x1e,
- DW_AT_inline = 0x20,
- DW_AT_is_optional = 0x21,
- DW_AT_lower_bound = 0x22,
- DW_AT_producer = 0x25,
- DW_AT_prototyped = 0x27,
- DW_AT_return_addr = 0x2a,
- DW_AT_start_scope = 0x2c,
- DW_AT_stride_size = 0x2e,
- DW_AT_upper_bound = 0x2f,
- DW_AT_abstract_origin = 0x31,
- DW_AT_accessibility = 0x32,
- DW_AT_address_class = 0x33,
- DW_AT_artificial = 0x34,
- DW_AT_base_types = 0x35,
- DW_AT_calling_convention = 0x36,
- DW_AT_count = 0x37,
- DW_AT_data_member_location = 0x38,
- DW_AT_decl_column = 0x39,
- DW_AT_decl_file = 0x3a,
- DW_AT_decl_line = 0x3b,
- DW_AT_declaration = 0x3c,
- DW_AT_discr_list = 0x3d,
- DW_AT_encoding = 0x3e,
- DW_AT_external = 0x3f,
- DW_AT_frame_base = 0x40,
- DW_AT_friend = 0x41,
- DW_AT_identifier_case = 0x42,
- DW_AT_macro_info = 0x43,
- DW_AT_namelist_items = 0x44,
- DW_AT_priority = 0x45,
- DW_AT_segment = 0x46,
- DW_AT_specification = 0x47,
- DW_AT_static_link = 0x48,
- DW_AT_type = 0x49,
- DW_AT_use_location = 0x4a,
- DW_AT_variable_parameter = 0x4b,
- DW_AT_virtuality = 0x4c,
- DW_AT_vtable_elem_location = 0x4d
-} dwarf_attribute;
-
-typedef struct dwarf2_abbrev_attr {
- STAILQ_ENTRY(dwarf2_abbrev_attr) link;
- dwarf_attribute name;
- dwarf_form form;
-} dwarf2_abbrev_attr;
-
-typedef struct dwarf2_abbrev {
- unsigned long id;
- dwarf_tag tag;
- int has_children;
- STAILQ_HEAD(dwarf2_abbrev_attrhead, dwarf2_abbrev_attr) attrs;
-} dwarf2_abbrev;
-
-/* Bytecode callback function prototypes */
-
-static void dwarf2_abbrev_bc_destroy(void *contents);
-static void dwarf2_abbrev_bc_print(const void *contents, FILE *f,
- int indent_level);
-static int dwarf2_abbrev_bc_calc_len
- (yasm_bytecode *bc, yasm_bc_add_span_func add_span, void *add_span_data);
-static int dwarf2_abbrev_bc_tobytes
- (yasm_bytecode *bc, unsigned char **bufp, unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- /*@null@*/ yasm_output_reloc_func output_reloc);
-
-/* Bytecode callback structures */
-
-static const yasm_bytecode_callback dwarf2_abbrev_bc_callback = {
- dwarf2_abbrev_bc_destroy,
- dwarf2_abbrev_bc_print,
- yasm_bc_finalize_common,
- NULL,
- dwarf2_abbrev_bc_calc_len,
- yasm_bc_expand_common,
- dwarf2_abbrev_bc_tobytes,
- 0
-};
-
-
-static unsigned long
-dwarf2_add_abbrev_attr(dwarf2_abbrev *abbrev, dwarf_attribute name,
- dwarf_form form)
-{
- dwarf2_abbrev_attr *attr = yasm_xmalloc(sizeof(dwarf2_abbrev_attr));
- attr->name = name;
- attr->form = form;
- STAILQ_INSERT_TAIL(&abbrev->attrs, attr, link);
- return yasm_size_uleb128(name) + yasm_size_uleb128(form);
-}
-
-static void
-dwarf2_append_expr(yasm_section *sect, /*@only@*/ yasm_expr *expr,
- unsigned int size, int leb)
-{
- yasm_datavalhead dvs;
- yasm_bytecode *bc;
-
- yasm_dvs_initialize(&dvs);
- yasm_dvs_append(&dvs, yasm_dv_create_expr(expr));
- if (leb == 0)
- bc = yasm_bc_create_data(&dvs, size, 0, NULL, 0);
- else
- bc = yasm_bc_create_leb128(&dvs, leb<0, 0);
- yasm_bc_finalize(bc, yasm_dwarf2__append_bc(sect, bc));
- yasm_bc_calc_len(bc, NULL, NULL);
-}
-
-static void
-dwarf2_append_str(yasm_section *sect, const char *str)
-{
- yasm_datavalhead dvs;
- yasm_bytecode *bc;
-
- yasm_dvs_initialize(&dvs);
- yasm_dvs_append(&dvs, yasm_dv_create_string(yasm__xstrdup(str),
- strlen(str)));
- bc = yasm_bc_create_data(&dvs, 1, 1, NULL, 0);
- yasm_bc_finalize(bc, yasm_dwarf2__append_bc(sect, bc));
- yasm_bc_calc_len(bc, NULL, NULL);
-}
-
-yasm_section *
-yasm_dwarf2__generate_info(yasm_object *object, yasm_section *debug_line,
- yasm_section *main_code)
-{
- yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2 = (yasm_dbgfmt_dwarf2 *)object->dbgfmt;
- int new;
- yasm_bytecode *abc;
- dwarf2_abbrev *abbrev;
- dwarf2_head *head;
- char *buf;
- yasm_section *debug_abbrev =
- yasm_object_get_general(object, ".debug_abbrev", 4, 0, 0, &new, 0);
- yasm_section *debug_info =
- yasm_object_get_general(object, ".debug_info", 4, 0, 0, &new, 0);
-
- yasm_section_set_align(debug_abbrev, 0, 0);
- yasm_section_set_align(debug_info, 0, 0);
-
- /* Create abbreviation table entry for compilation unit */
- abbrev = yasm_xmalloc(sizeof(dwarf2_abbrev));
- abc = yasm_bc_create_common(&dwarf2_abbrev_bc_callback, abbrev, 0);
- abbrev->id = 1;
- abbrev->tag = DW_TAG_compile_unit;
- abbrev->has_children = 0;
- abc->len = yasm_size_uleb128(abbrev->id) + yasm_size_uleb128(abbrev->tag)
- + 3;
- STAILQ_INIT(&abbrev->attrs);
- yasm_dwarf2__append_bc(debug_abbrev, abc);
-
- /* info header */
- head = yasm_dwarf2__add_head(dbgfmt_dwarf2, debug_info, debug_abbrev, 1, 0);
-
- /* Generate abbreviations at the same time as info (since they're linked
- * and we're only generating one piece of info).
- */
-
- /* generating info using abbrev 1 */
- dwarf2_append_expr(debug_info,
- yasm_expr_create_ident(yasm_expr_int(yasm_intnum_create_uint(1)), 0),
- 0, 1);
-
- /* statement list (line numbers) */
- abc->len += dwarf2_add_abbrev_attr(abbrev, DW_AT_stmt_list, DW_FORM_data4);
- dwarf2_append_expr(debug_info,
- yasm_expr_create_ident(yasm_expr_sym(
- yasm_dwarf2__bc_sym(object->symtab,
- yasm_section_bcs_first(debug_line))), 0),
- dbgfmt_dwarf2->sizeof_offset, 0);
-
- if (main_code) {
- yasm_symrec *first;
- first = yasm_dwarf2__bc_sym(object->symtab,
- yasm_section_bcs_first(main_code));
- /* All code is contiguous in one section */
- abc->len += dwarf2_add_abbrev_attr(abbrev, DW_AT_low_pc, DW_FORM_addr);
- dwarf2_append_expr(debug_info,
- yasm_expr_create_ident(yasm_expr_sym(first), 0),
- dbgfmt_dwarf2->sizeof_address, 0);
-
- abc->len += dwarf2_add_abbrev_attr(abbrev, DW_AT_high_pc, DW_FORM_addr);
- dwarf2_append_expr(debug_info,
- yasm_expr_create(YASM_EXPR_ADD, yasm_expr_sym(first),
- yasm_expr_int(yasm_calc_bc_dist(
- yasm_section_bcs_first(main_code),
- yasm_section_bcs_last(main_code))), 0),
- dbgfmt_dwarf2->sizeof_address, 0);
- }
-
- /* input filename */
- abc->len += dwarf2_add_abbrev_attr(abbrev, DW_AT_name, DW_FORM_string);
+/*
+ * DWARF2 debugging format - info and abbreviation tables
+ *
+ * Copyright (C) 2006-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <libyasm.h>
+
+#include "dwarf2-dbgfmt.h"
+
+#define DW_LANG_Mips_Assembler 0x8001
+
+/* Tag encodings */
+typedef enum {
+ DW_TAG_padding = 0x00,
+ DW_TAG_array_type = 0x01,
+ DW_TAG_class_type = 0x02,
+ DW_TAG_entry_point = 0x03,
+ DW_TAG_enumeration_type = 0x04,
+ DW_TAG_formal_parameter = 0x05,
+ DW_TAG_imported_declaration = 0x08,
+ DW_TAG_label = 0x0a,
+ DW_TAG_lexical_block = 0x0b,
+ DW_TAG_member = 0x0d,
+ DW_TAG_pointer_type = 0x0f,
+ DW_TAG_reference_type = 0x10,
+ DW_TAG_compile_unit = 0x11,
+ DW_TAG_string_type = 0x12,
+ DW_TAG_structure_type = 0x13,
+ DW_TAG_subroutine_type = 0x15,
+ DW_TAG_typedef = 0x16,
+ DW_TAG_union_type = 0x17,
+ DW_TAG_unspecified_parameters = 0x18,
+ DW_TAG_variant = 0x19,
+ DW_TAG_common_block = 0x1a,
+ DW_TAG_common_inclusion = 0x1b,
+ DW_TAG_inheritance = 0x1c,
+ DW_TAG_inlined_subroutine = 0x1d,
+ DW_TAG_module = 0x1e,
+ DW_TAG_ptr_to_member_type = 0x1f,
+ DW_TAG_set_type = 0x20,
+ DW_TAG_subrange_type = 0x21,
+ DW_TAG_with_stmt = 0x22,
+ DW_TAG_access_declaration = 0x23,
+ DW_TAG_base_type = 0x24,
+ DW_TAG_catch_block = 0x25,
+ DW_TAG_const_type = 0x26,
+ DW_TAG_constant = 0x27,
+ DW_TAG_enumerator = 0x28,
+ DW_TAG_file_type = 0x29,
+ DW_TAG_friend = 0x2a,
+ DW_TAG_namelist = 0x2b,
+ DW_TAG_namelist_item = 0x2c,
+ DW_TAG_packed_type = 0x2d,
+ DW_TAG_subprogram = 0x2e,
+ DW_TAG_template_type_param = 0x2f,
+ DW_TAG_template_value_param = 0x30,
+ DW_TAG_thrown_type = 0x31,
+ DW_TAG_try_block = 0x32,
+ DW_TAG_variant_part = 0x33,
+ DW_TAG_variable = 0x34,
+ DW_TAG_volatile_type = 0x35
+} dwarf_tag;
+
+/* Attribute form encodings */
+typedef enum {
+ DW_FORM_addr = 0x01,
+ DW_FORM_block2 = 0x03,
+ DW_FORM_block4 = 0x04,
+ DW_FORM_data2 = 0x05,
+ DW_FORM_data4 = 0x06,
+ DW_FORM_data8 = 0x07,
+ DW_FORM_string = 0x08,
+ DW_FORM_block = 0x09,
+ DW_FORM_block1 = 0x0a,
+ DW_FORM_data1 = 0x0b,
+ DW_FORM_flag = 0x0c,
+ DW_FORM_sdata = 0x0d,
+ DW_FORM_strp = 0x0e,
+ DW_FORM_udata = 0x0f,
+ DW_FORM_ref_addr = 0x10,
+ DW_FORM_ref1 = 0x11,
+ DW_FORM_ref2 = 0x12,
+ DW_FORM_ref4 = 0x13,
+ DW_FORM_ref8 = 0x14,
+ DW_FORM_ref_udata = 0x15,
+ DW_FORM_indirect = 0x16
+} dwarf_form;
+
+/* Attribute encodings */
+typedef enum {
+ DW_AT_sibling = 0x01,
+ DW_AT_location = 0x02,
+ DW_AT_name = 0x03,
+ DW_AT_ordering = 0x09,
+ DW_AT_subscr_data = 0x0a,
+ DW_AT_byte_size = 0x0b,
+ DW_AT_bit_offset = 0x0c,
+ DW_AT_bit_size = 0x0d,
+ DW_AT_element_list = 0x0f,
+ DW_AT_stmt_list = 0x10,
+ DW_AT_low_pc = 0x11,
+ DW_AT_high_pc = 0x12,
+ DW_AT_language = 0x13,
+ DW_AT_member = 0x14,
+ DW_AT_discr = 0x15,
+ DW_AT_discr_value = 0x16,
+ DW_AT_visibility = 0x17,
+ DW_AT_import = 0x18,
+ DW_AT_string_length = 0x19,
+ DW_AT_common_reference = 0x1a,
+ DW_AT_comp_dir = 0x1b,
+ DW_AT_const_value = 0x1c,
+ DW_AT_containing_type = 0x1d,
+ DW_AT_default_value = 0x1e,
+ DW_AT_inline = 0x20,
+ DW_AT_is_optional = 0x21,
+ DW_AT_lower_bound = 0x22,
+ DW_AT_producer = 0x25,
+ DW_AT_prototyped = 0x27,
+ DW_AT_return_addr = 0x2a,
+ DW_AT_start_scope = 0x2c,
+ DW_AT_stride_size = 0x2e,
+ DW_AT_upper_bound = 0x2f,
+ DW_AT_abstract_origin = 0x31,
+ DW_AT_accessibility = 0x32,
+ DW_AT_address_class = 0x33,
+ DW_AT_artificial = 0x34,
+ DW_AT_base_types = 0x35,
+ DW_AT_calling_convention = 0x36,
+ DW_AT_count = 0x37,
+ DW_AT_data_member_location = 0x38,
+ DW_AT_decl_column = 0x39,
+ DW_AT_decl_file = 0x3a,
+ DW_AT_decl_line = 0x3b,
+ DW_AT_declaration = 0x3c,
+ DW_AT_discr_list = 0x3d,
+ DW_AT_encoding = 0x3e,
+ DW_AT_external = 0x3f,
+ DW_AT_frame_base = 0x40,
+ DW_AT_friend = 0x41,
+ DW_AT_identifier_case = 0x42,
+ DW_AT_macro_info = 0x43,
+ DW_AT_namelist_items = 0x44,
+ DW_AT_priority = 0x45,
+ DW_AT_segment = 0x46,
+ DW_AT_specification = 0x47,
+ DW_AT_static_link = 0x48,
+ DW_AT_type = 0x49,
+ DW_AT_use_location = 0x4a,
+ DW_AT_variable_parameter = 0x4b,
+ DW_AT_virtuality = 0x4c,
+ DW_AT_vtable_elem_location = 0x4d
+} dwarf_attribute;
+
+typedef struct dwarf2_abbrev_attr {
+ STAILQ_ENTRY(dwarf2_abbrev_attr) link;
+ dwarf_attribute name;
+ dwarf_form form;
+} dwarf2_abbrev_attr;
+
+typedef struct dwarf2_abbrev {
+ unsigned long id;
+ dwarf_tag tag;
+ int has_children;
+ STAILQ_HEAD(dwarf2_abbrev_attrhead, dwarf2_abbrev_attr) attrs;
+} dwarf2_abbrev;
+
+/* Bytecode callback function prototypes */
+
+static void dwarf2_abbrev_bc_destroy(void *contents);
+static void dwarf2_abbrev_bc_print(const void *contents, FILE *f,
+ int indent_level);
+static int dwarf2_abbrev_bc_calc_len
+ (yasm_bytecode *bc, yasm_bc_add_span_func add_span, void *add_span_data);
+static int dwarf2_abbrev_bc_tobytes
+ (yasm_bytecode *bc, unsigned char **bufp, unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ /*@null@*/ yasm_output_reloc_func output_reloc);
+
+/* Bytecode callback structures */
+
+static const yasm_bytecode_callback dwarf2_abbrev_bc_callback = {
+ dwarf2_abbrev_bc_destroy,
+ dwarf2_abbrev_bc_print,
+ yasm_bc_finalize_common,
+ NULL,
+ dwarf2_abbrev_bc_calc_len,
+ yasm_bc_expand_common,
+ dwarf2_abbrev_bc_tobytes,
+ 0
+};
+
+
+static unsigned long
+dwarf2_add_abbrev_attr(dwarf2_abbrev *abbrev, dwarf_attribute name,
+ dwarf_form form)
+{
+ dwarf2_abbrev_attr *attr = yasm_xmalloc(sizeof(dwarf2_abbrev_attr));
+ attr->name = name;
+ attr->form = form;
+ STAILQ_INSERT_TAIL(&abbrev->attrs, attr, link);
+ return yasm_size_uleb128(name) + yasm_size_uleb128(form);
+}
+
+static void
+dwarf2_append_expr(yasm_section *sect, /*@only@*/ yasm_expr *expr,
+ unsigned int size, int leb)
+{
+ yasm_datavalhead dvs;
+ yasm_bytecode *bc;
+
+ yasm_dvs_initialize(&dvs);
+ yasm_dvs_append(&dvs, yasm_dv_create_expr(expr));
+ if (leb == 0)
+ bc = yasm_bc_create_data(&dvs, size, 0, NULL, 0);
+ else
+ bc = yasm_bc_create_leb128(&dvs, leb<0, 0);
+ yasm_bc_finalize(bc, yasm_dwarf2__append_bc(sect, bc));
+ yasm_bc_calc_len(bc, NULL, NULL);
+}
+
+static void
+dwarf2_append_str(yasm_section *sect, const char *str)
+{
+ yasm_datavalhead dvs;
+ yasm_bytecode *bc;
+
+ yasm_dvs_initialize(&dvs);
+ yasm_dvs_append(&dvs, yasm_dv_create_string(yasm__xstrdup(str),
+ strlen(str)));
+ bc = yasm_bc_create_data(&dvs, 1, 1, NULL, 0);
+ yasm_bc_finalize(bc, yasm_dwarf2__append_bc(sect, bc));
+ yasm_bc_calc_len(bc, NULL, NULL);
+}
+
+yasm_section *
+yasm_dwarf2__generate_info(yasm_object *object, yasm_section *debug_line,
+ yasm_section *main_code)
+{
+ yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2 = (yasm_dbgfmt_dwarf2 *)object->dbgfmt;
+ int new;
+ yasm_bytecode *abc;
+ dwarf2_abbrev *abbrev;
+ dwarf2_head *head;
+ char *buf;
+ yasm_section *debug_abbrev =
+ yasm_object_get_general(object, ".debug_abbrev", 4, 0, 0, &new, 0);
+ yasm_section *debug_info =
+ yasm_object_get_general(object, ".debug_info", 4, 0, 0, &new, 0);
+
+ yasm_section_set_align(debug_abbrev, 0, 0);
+ yasm_section_set_align(debug_info, 0, 0);
+
+ /* Create abbreviation table entry for compilation unit */
+ abbrev = yasm_xmalloc(sizeof(dwarf2_abbrev));
+ abc = yasm_bc_create_common(&dwarf2_abbrev_bc_callback, abbrev, 0);
+ abbrev->id = 1;
+ abbrev->tag = DW_TAG_compile_unit;
+ abbrev->has_children = 0;
+ abc->len = yasm_size_uleb128(abbrev->id) + yasm_size_uleb128(abbrev->tag)
+ + 3;
+ STAILQ_INIT(&abbrev->attrs);
+ yasm_dwarf2__append_bc(debug_abbrev, abc);
+
+ /* info header */
+ head = yasm_dwarf2__add_head(dbgfmt_dwarf2, debug_info, debug_abbrev, 1, 0);
+
+ /* Generate abbreviations at the same time as info (since they're linked
+ * and we're only generating one piece of info).
+ */
+
+ /* generating info using abbrev 1 */
+ dwarf2_append_expr(debug_info,
+ yasm_expr_create_ident(yasm_expr_int(yasm_intnum_create_uint(1)), 0),
+ 0, 1);
+
+ /* statement list (line numbers) */
+ abc->len += dwarf2_add_abbrev_attr(abbrev, DW_AT_stmt_list, DW_FORM_data4);
+ dwarf2_append_expr(debug_info,
+ yasm_expr_create_ident(yasm_expr_sym(
+ yasm_dwarf2__bc_sym(object->symtab,
+ yasm_section_bcs_first(debug_line))), 0),
+ dbgfmt_dwarf2->sizeof_offset, 0);
+
+ if (main_code) {
+ yasm_symrec *first;
+ first = yasm_dwarf2__bc_sym(object->symtab,
+ yasm_section_bcs_first(main_code));
+ /* All code is contiguous in one section */
+ abc->len += dwarf2_add_abbrev_attr(abbrev, DW_AT_low_pc, DW_FORM_addr);
+ dwarf2_append_expr(debug_info,
+ yasm_expr_create_ident(yasm_expr_sym(first), 0),
+ dbgfmt_dwarf2->sizeof_address, 0);
+
+ abc->len += dwarf2_add_abbrev_attr(abbrev, DW_AT_high_pc, DW_FORM_addr);
+ dwarf2_append_expr(debug_info,
+ yasm_expr_create(YASM_EXPR_ADD, yasm_expr_sym(first),
+ yasm_expr_int(yasm_calc_bc_dist(
+ yasm_section_bcs_first(main_code),
+ yasm_section_bcs_last(main_code))), 0),
+ dbgfmt_dwarf2->sizeof_address, 0);
+ }
+
+ /* input filename */
+ abc->len += dwarf2_add_abbrev_attr(abbrev, DW_AT_name, DW_FORM_string);
if (!object->deb_filename) {
object->deb_filename = yasm_replace_path(
dbgfmt_dwarf2->dbgfmt.module->replace_map, dbgfmt_dwarf2->dbgfmt.module->replace_map_size,
object->src_filename, strlen(object->src_filename));
}
dwarf2_append_str(debug_info, object->deb_filename);
-
- /* compile directory (current working directory) */
- abc->len += dwarf2_add_abbrev_attr(abbrev, DW_AT_comp_dir, DW_FORM_string);
- buf = yasm__getcwd();
+
+ /* compile directory (current working directory) */
+ abc->len += dwarf2_add_abbrev_attr(abbrev, DW_AT_comp_dir, DW_FORM_string);
+ buf = yasm__getcwd();
char * new_cwd_name = yasm_replace_path(
dbgfmt_dwarf2->dbgfmt.module->replace_map, dbgfmt_dwarf2->dbgfmt.module->replace_map_size,
buf, strlen(buf));
dwarf2_append_str(debug_info, new_cwd_name);
yasm_xfree(new_cwd_name);
- yasm_xfree(buf);
-
- /* producer - assembler name */
- abc->len += dwarf2_add_abbrev_attr(abbrev, DW_AT_producer, DW_FORM_string);
- if (getenv("YASM_TEST_SUITE"))
- dwarf2_append_str(debug_info, "yasm HEAD");
- else
- dwarf2_append_str(debug_info, PACKAGE_STRING);
-
- /* language - no standard code for assembler, use MIPS as a substitute */
- abc->len += dwarf2_add_abbrev_attr(abbrev, DW_AT_language, DW_FORM_data2);
- dwarf2_append_expr(debug_info,
- yasm_expr_create_ident(yasm_expr_int(
- yasm_intnum_create_uint(DW_LANG_Mips_Assembler)), 0), 2, 0);
-
- /* Terminate list of abbreviations */
- abbrev = yasm_xmalloc(sizeof(dwarf2_abbrev));
- abc = yasm_bc_create_common(&dwarf2_abbrev_bc_callback, abbrev, 0);
- abbrev->id = 0;
- abbrev->tag = 0;
- abbrev->has_children = 0;
- STAILQ_INIT(&abbrev->attrs);
- abc->len = 1;
- yasm_dwarf2__append_bc(debug_abbrev, abc);
-
- /* mark end of info */
- yasm_dwarf2__set_head_end(head, yasm_section_bcs_last(debug_info));
-
- return debug_info;
-}
-
-static void
-dwarf2_abbrev_bc_destroy(void *contents)
-{
- dwarf2_abbrev *abbrev = (dwarf2_abbrev *)contents;
- dwarf2_abbrev_attr *n1, *n2;
-
- /* Delete attributes */
- n1 = STAILQ_FIRST(&abbrev->attrs);
- while (n1) {
- n2 = STAILQ_NEXT(n1, link);
- yasm_xfree(n1);
- n1 = n2;
- }
-
- yasm_xfree(contents);
-}
-
-static void
-dwarf2_abbrev_bc_print(const void *contents, FILE *f, int indent_level)
-{
- /* TODO */
-}
-
-static int
-dwarf2_abbrev_bc_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
- void *add_span_data)
-{
- yasm_internal_error(N_("tried to calc_len a dwarf2 aranges head bytecode"));
- /*@notreached@*/
- return 0;
-}
-
-static int
-dwarf2_abbrev_bc_tobytes(yasm_bytecode *bc, unsigned char **bufp,
- unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- yasm_output_reloc_func output_reloc)
-{
- dwarf2_abbrev *abbrev = (dwarf2_abbrev *)bc->contents;
- unsigned char *buf = *bufp;
- dwarf2_abbrev_attr *attr;
-
- if (abbrev->id == 0) {
- YASM_WRITE_8(buf, 0);
- *bufp = buf;
- return 0;
- }
-
- buf += yasm_get_uleb128(abbrev->id, buf);
- buf += yasm_get_uleb128(abbrev->tag, buf);
- YASM_WRITE_8(buf, abbrev->has_children);
-
- STAILQ_FOREACH(attr, &abbrev->attrs, link) {
- buf += yasm_get_uleb128(attr->name, buf);
- buf += yasm_get_uleb128(attr->form, buf);
- }
-
- YASM_WRITE_8(buf, 0);
- YASM_WRITE_8(buf, 0);
-
- *bufp = buf;
- return 0;
-}
-
+ yasm_xfree(buf);
+
+ /* producer - assembler name */
+ abc->len += dwarf2_add_abbrev_attr(abbrev, DW_AT_producer, DW_FORM_string);
+ if (getenv("YASM_TEST_SUITE"))
+ dwarf2_append_str(debug_info, "yasm HEAD");
+ else
+ dwarf2_append_str(debug_info, PACKAGE_STRING);
+
+ /* language - no standard code for assembler, use MIPS as a substitute */
+ abc->len += dwarf2_add_abbrev_attr(abbrev, DW_AT_language, DW_FORM_data2);
+ dwarf2_append_expr(debug_info,
+ yasm_expr_create_ident(yasm_expr_int(
+ yasm_intnum_create_uint(DW_LANG_Mips_Assembler)), 0), 2, 0);
+
+ /* Terminate list of abbreviations */
+ abbrev = yasm_xmalloc(sizeof(dwarf2_abbrev));
+ abc = yasm_bc_create_common(&dwarf2_abbrev_bc_callback, abbrev, 0);
+ abbrev->id = 0;
+ abbrev->tag = 0;
+ abbrev->has_children = 0;
+ STAILQ_INIT(&abbrev->attrs);
+ abc->len = 1;
+ yasm_dwarf2__append_bc(debug_abbrev, abc);
+
+ /* mark end of info */
+ yasm_dwarf2__set_head_end(head, yasm_section_bcs_last(debug_info));
+
+ return debug_info;
+}
+
+static void
+dwarf2_abbrev_bc_destroy(void *contents)
+{
+ dwarf2_abbrev *abbrev = (dwarf2_abbrev *)contents;
+ dwarf2_abbrev_attr *n1, *n2;
+
+ /* Delete attributes */
+ n1 = STAILQ_FIRST(&abbrev->attrs);
+ while (n1) {
+ n2 = STAILQ_NEXT(n1, link);
+ yasm_xfree(n1);
+ n1 = n2;
+ }
+
+ yasm_xfree(contents);
+}
+
+static void
+dwarf2_abbrev_bc_print(const void *contents, FILE *f, int indent_level)
+{
+ /* TODO */
+}
+
+static int
+dwarf2_abbrev_bc_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
+ void *add_span_data)
+{
+ yasm_internal_error(N_("tried to calc_len a dwarf2 aranges head bytecode"));
+ /*@notreached@*/
+ return 0;
+}
+
+static int
+dwarf2_abbrev_bc_tobytes(yasm_bytecode *bc, unsigned char **bufp,
+ unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ yasm_output_reloc_func output_reloc)
+{
+ dwarf2_abbrev *abbrev = (dwarf2_abbrev *)bc->contents;
+ unsigned char *buf = *bufp;
+ dwarf2_abbrev_attr *attr;
+
+ if (abbrev->id == 0) {
+ YASM_WRITE_8(buf, 0);
+ *bufp = buf;
+ return 0;
+ }
+
+ buf += yasm_get_uleb128(abbrev->id, buf);
+ buf += yasm_get_uleb128(abbrev->tag, buf);
+ YASM_WRITE_8(buf, abbrev->has_children);
+
+ STAILQ_FOREACH(attr, &abbrev->attrs, link) {
+ buf += yasm_get_uleb128(attr->name, buf);
+ buf += yasm_get_uleb128(attr->form, buf);
+ }
+
+ YASM_WRITE_8(buf, 0);
+ YASM_WRITE_8(buf, 0);
+
+ *bufp = buf;
+ return 0;
+}
+
diff --git a/contrib/tools/yasm/modules/dbgfmts/dwarf2/dwarf2-line.c b/contrib/tools/yasm/modules/dbgfmts/dwarf2/dwarf2-line.c
index e9f346b1ce..14639ca429 100644
--- a/contrib/tools/yasm/modules/dbgfmts/dwarf2/dwarf2-line.c
+++ b/contrib/tools/yasm/modules/dbgfmts/dwarf2/dwarf2-line.c
@@ -1,1156 +1,1156 @@
-/*
- * DWARF2 debugging format - line information
- *
- * Copyright (C) 2006-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the author nor the names of other contributors
- * may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <libyasm.h>
-
-#include "dwarf2-dbgfmt.h"
-
-/* DWARF line number opcodes */
-typedef enum {
- DW_LNS_extended_op = 0,
- DW_LNS_copy,
- DW_LNS_advance_pc,
- DW_LNS_advance_line,
- DW_LNS_set_file,
- DW_LNS_set_column,
- DW_LNS_negate_stmt,
- DW_LNS_set_basic_block,
- DW_LNS_const_add_pc,
- DW_LNS_fixed_advance_pc,
-#ifdef WITH_DWARF3
- /* DWARF 3 extensions */
- DW_LNS_set_prologue_end,
- DW_LNS_set_epilogue_begin,
- DW_LNS_set_isa,
-#endif
- DWARF2_LINE_OPCODE_BASE
-} dwarf_line_number_op;
-
-/* # of LEB128 operands needed for each of the above opcodes */
-static unsigned char line_opcode_num_operands[DWARF2_LINE_OPCODE_BASE-1] = {
- 0, /* DW_LNS_copy */
- 1, /* DW_LNS_advance_pc */
- 1, /* DW_LNS_advance_line */
- 1, /* DW_LNS_set_file */
- 1, /* DW_LNS_set_column */
- 0, /* DW_LNS_negate_stmt */
- 0, /* DW_LNS_set_basic_block */
- 0, /* DW_LNS_const_add_pc */
- 1, /* DW_LNS_fixed_advance_pc */
-#ifdef WITH_DWARF3
- 0, /* DW_LNS_set_prologue_end */
- 0, /* DW_LNS_set_epilogue_begin */
- 1 /* DW_LNS_set_isa */
-#endif
-};
-
-/* Line number extended opcodes */
-typedef enum {
- DW_LNE_end_sequence = 1,
- DW_LNE_set_address,
- DW_LNE_define_file,
- DW_LNE_set_discriminator
-} dwarf_line_number_ext_op;
-
-/* Base and range for line offsets in special opcodes */
-#define DWARF2_LINE_BASE -5
-#define DWARF2_LINE_RANGE 14
-
-#define DWARF2_MAX_SPECIAL_ADDR_DELTA \
- (((255-DWARF2_LINE_OPCODE_BASE)/DWARF2_LINE_RANGE)*\
- dbgfmt_dwarf2->min_insn_len)
-
-/* Initial value of is_stmt register */
-#define DWARF2_LINE_DEFAULT_IS_STMT 1
-
-/* Line number state machine register state */
-typedef struct dwarf2_line_state {
- /* static configuration */
- yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2;
-
- /* DWARF2 state machine registers */
- unsigned long address;
- unsigned long file;
- unsigned long line;
- unsigned long column;
- unsigned long isa;
- int is_stmt;
-
- /* other state information */
- /*@null@*/ yasm_bytecode *precbc;
-} dwarf2_line_state;
-
-typedef struct dwarf2_spp {
- yasm_bytecode *line_start_prevbc;
- yasm_bytecode *line_end_prevbc;
-} dwarf2_spp;
-
-typedef struct dwarf2_line_op {
- dwarf_line_number_op opcode;
- /*@owned@*/ /*@null@*/ yasm_intnum *operand;
-
- /* extended opcode */
- dwarf_line_number_ext_op ext_opcode;
- /*@null@*/ /*@dependent@*/ yasm_symrec *ext_operand; /* unsigned */
- /*@null@*/ /*@dependent@*/ yasm_intnum *ext_operand_int; /* unsigned */
- unsigned long ext_operandsize;
-} dwarf2_line_op;
-
-/* Bytecode callback function prototypes */
-static void dwarf2_spp_bc_destroy(void *contents);
-static void dwarf2_spp_bc_print(const void *contents, FILE *f,
- int indent_level);
-static int dwarf2_spp_bc_calc_len
- (yasm_bytecode *bc, yasm_bc_add_span_func add_span, void *add_span_data);
-static int dwarf2_spp_bc_tobytes
- (yasm_bytecode *bc, unsigned char **bufp, unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- /*@null@*/ yasm_output_reloc_func output_reloc);
-
-static void dwarf2_line_op_bc_destroy(void *contents);
-static void dwarf2_line_op_bc_print(const void *contents, FILE *f,
- int indent_level);
-static int dwarf2_line_op_bc_calc_len
- (yasm_bytecode *bc, yasm_bc_add_span_func add_span, void *add_span_data);
-static int dwarf2_line_op_bc_tobytes
- (yasm_bytecode *bc, unsigned char **bufp, unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- /*@null@*/ yasm_output_reloc_func output_reloc);
-
-/* Bytecode callback structures */
-static const yasm_bytecode_callback dwarf2_spp_bc_callback = {
- dwarf2_spp_bc_destroy,
- dwarf2_spp_bc_print,
- yasm_bc_finalize_common,
- NULL,
- dwarf2_spp_bc_calc_len,
- yasm_bc_expand_common,
- dwarf2_spp_bc_tobytes,
- 0
-};
-
-static const yasm_bytecode_callback dwarf2_line_op_bc_callback = {
- dwarf2_line_op_bc_destroy,
- dwarf2_line_op_bc_print,
- yasm_bc_finalize_common,
- NULL,
- dwarf2_line_op_bc_calc_len,
- yasm_bc_expand_common,
- dwarf2_line_op_bc_tobytes,
- 0
-};
-
-
-static size_t
-dwarf2_dbgfmt_add_file(yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2, unsigned long filenum,
- const char *pathname)
-{
- size_t dirlen;
- const char *filename;
- unsigned long i, dir;
-
- /* Put the directory into the directory table */
- dir = 0;
- dirlen = yasm__splitpath(pathname, &filename);
- if (dirlen > 0) {
- /* Look to see if we already have that dir in the table */
- for (dir=1; dir<dbgfmt_dwarf2->dirs_size+1; dir++) {
- if (strncmp(dbgfmt_dwarf2->dirs[dir-1], pathname, dirlen) == 0
- && dbgfmt_dwarf2->dirs[dir-1][dirlen] == '\0')
- break;
- }
- if (dir >= dbgfmt_dwarf2->dirs_size+1) {
- /* Not found in table, add to end, reallocing if necessary */
- if (dir >= dbgfmt_dwarf2->dirs_allocated+1) {
- dbgfmt_dwarf2->dirs_allocated = dir+32;
- dbgfmt_dwarf2->dirs = yasm_xrealloc(dbgfmt_dwarf2->dirs,
- sizeof(char *)*dbgfmt_dwarf2->dirs_allocated);
- }
- dbgfmt_dwarf2->dirs[dir-1] = yasm__xstrndup(pathname, dirlen);
- dbgfmt_dwarf2->dirs_size = dir;
- }
- }
-
- /* Put the filename into the filename table */
- if (filenum == 0) {
- /* Look to see if we already have that filename in the table */
- for (; filenum<dbgfmt_dwarf2->filenames_size; filenum++) {
- if (!dbgfmt_dwarf2->filenames[filenum].filename ||
- (dbgfmt_dwarf2->filenames[filenum].dir == dir
- && strcmp(dbgfmt_dwarf2->filenames[filenum].filename,
- filename) == 0))
- break;
- }
- } else
- filenum--; /* array index is 0-based */
-
- /* Realloc table if necessary */
- if (filenum >= dbgfmt_dwarf2->filenames_allocated) {
- unsigned long old_allocated = dbgfmt_dwarf2->filenames_allocated;
- dbgfmt_dwarf2->filenames_allocated = filenum+32;
- dbgfmt_dwarf2->filenames = yasm_xrealloc(dbgfmt_dwarf2->filenames,
- sizeof(dwarf2_filename)*dbgfmt_dwarf2->filenames_allocated);
- for (i=old_allocated; i<dbgfmt_dwarf2->filenames_allocated; i++) {
- dbgfmt_dwarf2->filenames[i].pathname = NULL;
- dbgfmt_dwarf2->filenames[i].filename = NULL;
- dbgfmt_dwarf2->filenames[i].dir = 0;
- }
- }
-
- /* Actually save in table */
- if (dbgfmt_dwarf2->filenames[filenum].pathname)
- yasm_xfree(dbgfmt_dwarf2->filenames[filenum].pathname);
- if (dbgfmt_dwarf2->filenames[filenum].filename)
- yasm_xfree(dbgfmt_dwarf2->filenames[filenum].filename);
- dbgfmt_dwarf2->filenames[filenum].pathname = yasm__xstrdup(pathname);
- dbgfmt_dwarf2->filenames[filenum].filename = yasm__xstrdup(filename);
- dbgfmt_dwarf2->filenames[filenum].dir = dir;
-
- /* Update table size */
- if (filenum >= dbgfmt_dwarf2->filenames_size)
- dbgfmt_dwarf2->filenames_size = filenum + 1;
-
- return filenum;
-}
-
-/* Create and add a new line opcode to a section, updating offset on insertion;
- * no optimization necessary.
- */
-static yasm_bytecode *
-dwarf2_dbgfmt_append_line_op(yasm_section *sect, dwarf_line_number_op opcode,
- /*@only@*/ /*@null@*/ yasm_intnum *operand)
-{
- dwarf2_line_op *line_op = yasm_xmalloc(sizeof(dwarf2_line_op));
- yasm_bytecode *bc;
-
- line_op->opcode = opcode;
- line_op->operand = operand;
- line_op->ext_opcode = 0;
- line_op->ext_operand = NULL;
- line_op->ext_operand_int = NULL;
- line_op->ext_operandsize = 0;
-
- bc = yasm_bc_create_common(&dwarf2_line_op_bc_callback, line_op, 0);
- bc->len = 1;
- if (operand)
- bc->len += yasm_intnum_size_leb128(operand,
- opcode == DW_LNS_advance_line);
-
- yasm_dwarf2__append_bc(sect, bc);
- return bc;
-}
-
-/* Create and add a new extended line opcode to a section, updating offset on
- * insertion; no optimization necessary.
- */
-static yasm_bytecode *
-dwarf2_dbgfmt_append_line_ext_op(yasm_section *sect,
- dwarf_line_number_ext_op ext_opcode,
- unsigned long ext_operandsize,
- /*@null@*/ yasm_symrec *ext_operand)
-{
- dwarf2_line_op *line_op = yasm_xmalloc(sizeof(dwarf2_line_op));
- yasm_bytecode *bc;
-
- line_op->opcode = DW_LNS_extended_op;
- line_op->operand = yasm_intnum_create_uint(ext_operandsize+1);
- line_op->ext_opcode = ext_opcode;
- line_op->ext_operand = ext_operand;
- line_op->ext_operand_int = NULL;
- line_op->ext_operandsize = ext_operandsize;
-
- bc = yasm_bc_create_common(&dwarf2_line_op_bc_callback, line_op, 0);
- bc->len = 2 + yasm_intnum_size_leb128(line_op->operand, 0) +
- ext_operandsize;
-
- yasm_dwarf2__append_bc(sect, bc);
- return bc;
-}
-
-static yasm_bytecode *
-dwarf2_dbgfmt_append_line_ext_op_int(yasm_section *sect,
- dwarf_line_number_ext_op ext_opcode,
- /*@only@*/ yasm_intnum *ext_operand)
-{
- dwarf2_line_op *line_op = yasm_xmalloc(sizeof(dwarf2_line_op));
- unsigned long ext_operandsize = yasm_intnum_size_leb128(ext_operand, 0);
- yasm_bytecode *bc;
-
- line_op->opcode = DW_LNS_extended_op;
- line_op->operand = yasm_intnum_create_uint(ext_operandsize+1);
- line_op->ext_opcode = ext_opcode;
- line_op->ext_operand = NULL;
- line_op->ext_operand_int = ext_operand;
- line_op->ext_operandsize = ext_operandsize;
-
- bc = yasm_bc_create_common(&dwarf2_line_op_bc_callback, line_op, 0);
- bc->len = 2 + yasm_intnum_size_leb128(line_op->operand, 0) +
- ext_operandsize;
-
- yasm_dwarf2__append_bc(sect, bc);
- return bc;
-}
-
-static void
-dwarf2_dbgfmt_finalize_locs(yasm_section *sect, dwarf2_section_data *dsd)
-{
- /*@dependent@*/ yasm_symrec *lastsym = NULL;
- /*@null@*/ yasm_bytecode *bc;
- /*@null@*/ dwarf2_loc *loc;
-
- bc = yasm_section_bcs_first(sect);
- STAILQ_FOREACH(loc, &dsd->locs, link) {
- /* Find the first bytecode following this loc by looking at
- * the virtual line numbers. XXX: this assumes the source file
- * order will be the same as the actual section order. If we ever
- * implement subsegs this will NOT necessarily be true and this logic
- * will need to be fixed to handle it!
- *
- * Keep track of last symbol seen prior to the loc.
- */
- while (bc && bc->line <= loc->vline) {
- if (bc->symrecs) {
- int i = 0;
- while (bc->symrecs[i]) {
- lastsym = bc->symrecs[i];
- i++;
- }
- }
- bc = yasm_bc__next(bc);
- }
- loc->sym = lastsym;
- loc->bc = bc;
- }
-}
-
-static int
-dwarf2_dbgfmt_gen_line_op(yasm_section *debug_line, dwarf2_line_state *state,
- const dwarf2_loc *loc,
- /*@null@*/ const dwarf2_loc *nextloc)
-{
- unsigned long addr_delta;
- long line_delta;
- int opcode1, opcode2;
- yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2 = state->dbgfmt_dwarf2;
-
- if (state->file != loc->file) {
- state->file = loc->file;
- dwarf2_dbgfmt_append_line_op(debug_line, DW_LNS_set_file,
- yasm_intnum_create_uint(state->file));
- }
- if (state->column != loc->column) {
- state->column = loc->column;
- dwarf2_dbgfmt_append_line_op(debug_line, DW_LNS_set_column,
- yasm_intnum_create_uint(state->column));
- }
- if (loc->discriminator != 0) {
- dwarf2_dbgfmt_append_line_ext_op_int(debug_line,
- DW_LNE_set_discriminator,
- yasm_intnum_create_uint(loc->discriminator));
- }
-#ifdef WITH_DWARF3
- if (loc->isa_change) {
- state->isa = loc->isa;
- dwarf2_dbgfmt_append_line_op(debug_line, DW_LNS_set_isa,
- yasm_intnum_create_uint(state->isa));
- }
-#endif
- if (state->is_stmt == 0 && loc->is_stmt == IS_STMT_SET) {
- state->is_stmt = 1;
- dwarf2_dbgfmt_append_line_op(debug_line, DW_LNS_negate_stmt, NULL);
- } else if (state->is_stmt == 1 && loc->is_stmt == IS_STMT_CLEAR) {
- state->is_stmt = 0;
- dwarf2_dbgfmt_append_line_op(debug_line, DW_LNS_negate_stmt, NULL);
- }
- if (loc->basic_block) {
- dwarf2_dbgfmt_append_line_op(debug_line, DW_LNS_set_basic_block, NULL);
- }
-#ifdef WITH_DWARF3
- if (loc->prologue_end) {
- dwarf2_dbgfmt_append_line_op(debug_line, DW_LNS_set_prologue_end, NULL);
- }
- if (loc->epilogue_begin) {
- dwarf2_dbgfmt_append_line_op(debug_line, DW_LNS_set_epilogue_begin,
- NULL);
- }
-#endif
-
- /* If multiple loc for the same location, use last */
- if (nextloc && nextloc->bc->offset == loc->bc->offset)
- return 0;
-
- if (!state->precbc) {
- /* Set the starting address for the section */
- if (!loc->sym) {
- /* shouldn't happen! */
- yasm_error_set(YASM_ERROR_GENERAL,
- N_("could not find label prior to loc"));
- return 1;
- }
- dwarf2_dbgfmt_append_line_ext_op(debug_line, DW_LNE_set_address,
- dbgfmt_dwarf2->sizeof_address, loc->sym);
- addr_delta = 0;
- } else if (loc->bc) {
- if (state->precbc->offset > loc->bc->offset)
- yasm_internal_error(N_("dwarf2 address went backwards?"));
- addr_delta = loc->bc->offset - state->precbc->offset;
- } else
- return 0; /* ran out of bytecodes! XXX: do something? */
-
- /* Generate appropriate opcode(s). Address can only increment,
- * whereas line number can go backwards.
- */
- line_delta = loc->line - state->line;
- state->line = loc->line;
-
- /* First handle the line delta */
- if (line_delta < DWARF2_LINE_BASE
- || line_delta >= DWARF2_LINE_BASE+DWARF2_LINE_RANGE) {
- /* Won't fit in special opcode, use (signed) line advance */
- dwarf2_dbgfmt_append_line_op(debug_line, DW_LNS_advance_line,
- yasm_intnum_create_int(line_delta));
- line_delta = 0;
- }
-
- /* Next handle the address delta */
- opcode1 = DWARF2_LINE_OPCODE_BASE + line_delta - DWARF2_LINE_BASE +
- DWARF2_LINE_RANGE * (addr_delta / dbgfmt_dwarf2->min_insn_len);
- opcode2 = DWARF2_LINE_OPCODE_BASE + line_delta - DWARF2_LINE_BASE +
- DWARF2_LINE_RANGE * ((addr_delta - DWARF2_MAX_SPECIAL_ADDR_DELTA) /
- dbgfmt_dwarf2->min_insn_len);
- if (line_delta == 0 && addr_delta == 0) {
- /* Both line and addr deltas are 0: do DW_LNS_copy */
- dwarf2_dbgfmt_append_line_op(debug_line, DW_LNS_copy, NULL);
- } else if (addr_delta <= DWARF2_MAX_SPECIAL_ADDR_DELTA && opcode1 <= 255) {
- /* Addr delta in range of special opcode */
- dwarf2_dbgfmt_append_line_op(debug_line, opcode1, NULL);
- } else if (addr_delta <= 2*DWARF2_MAX_SPECIAL_ADDR_DELTA
- && opcode2 <= 255) {
- /* Addr delta in range of const_add_pc + special */
- dwarf2_dbgfmt_append_line_op(debug_line, DW_LNS_const_add_pc, NULL);
- dwarf2_dbgfmt_append_line_op(debug_line, opcode2, NULL);
- } else {
- /* Need advance_pc */
- dwarf2_dbgfmt_append_line_op(debug_line, DW_LNS_advance_pc,
- yasm_intnum_create_uint(addr_delta));
- /* Take care of any remaining line_delta and add entry to matrix */
- if (line_delta == 0)
- dwarf2_dbgfmt_append_line_op(debug_line, DW_LNS_copy, NULL);
- else {
- unsigned int opcode;
- opcode = DWARF2_LINE_OPCODE_BASE + line_delta - DWARF2_LINE_BASE;
- dwarf2_dbgfmt_append_line_op(debug_line, opcode, NULL);
- }
- }
- state->precbc = loc->bc;
- return 0;
-}
-
-typedef struct dwarf2_line_bc_info {
- yasm_section *debug_line;
- yasm_object *object;
- yasm_linemap *linemap;
- yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2;
- dwarf2_line_state *state;
- dwarf2_loc loc;
- unsigned long lastfile;
-} dwarf2_line_bc_info;
-
-static int
-dwarf2_filename_equals(const dwarf2_filename *fn,
- char **dirs,
- const char *pathname,
- unsigned long dirlen,
- const char *filename)
-{
- /* check directory */
- if (fn->dir == 0) {
- if (dirlen != 0)
- return 0;
- } else {
- if (strncmp(dirs[fn->dir-1], pathname, dirlen) != 0 ||
- dirs[fn->dir-1][dirlen] != '\0')
- return 0;
- }
-
- /* check filename */
- return strcmp(fn->filename, filename) == 0;
-}
-
-static int
-dwarf2_generate_line_bc(yasm_bytecode *bc, /*@null@*/ void *d)
-{
- dwarf2_line_bc_info *info = (dwarf2_line_bc_info *)d;
- yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2 = info->dbgfmt_dwarf2;
- unsigned long i;
- size_t dirlen;
- const char *pathname, *filename;
- /*@null@*/ yasm_bytecode *nextbc = yasm_bc__next(bc);
-
- if (nextbc && bc->offset == nextbc->offset)
- return 0;
-
- info->loc.vline = bc->line;
- info->loc.bc = bc;
-
- /* Keep track of last symbol seen */
- if (bc->symrecs) {
- i = 0;
- while (bc->symrecs[i]) {
- info->loc.sym = bc->symrecs[i];
- i++;
- }
- }
-
- yasm_linemap_lookup(info->linemap, bc->line, &pathname, &info->loc.line);
- dirlen = yasm__splitpath(pathname, &filename);
+/*
+ * DWARF2 debugging format - line information
+ *
+ * Copyright (C) 2006-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the author nor the names of other contributors
+ * may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <libyasm.h>
+
+#include "dwarf2-dbgfmt.h"
+
+/* DWARF line number opcodes */
+typedef enum {
+ DW_LNS_extended_op = 0,
+ DW_LNS_copy,
+ DW_LNS_advance_pc,
+ DW_LNS_advance_line,
+ DW_LNS_set_file,
+ DW_LNS_set_column,
+ DW_LNS_negate_stmt,
+ DW_LNS_set_basic_block,
+ DW_LNS_const_add_pc,
+ DW_LNS_fixed_advance_pc,
+#ifdef WITH_DWARF3
+ /* DWARF 3 extensions */
+ DW_LNS_set_prologue_end,
+ DW_LNS_set_epilogue_begin,
+ DW_LNS_set_isa,
+#endif
+ DWARF2_LINE_OPCODE_BASE
+} dwarf_line_number_op;
+
+/* # of LEB128 operands needed for each of the above opcodes */
+static unsigned char line_opcode_num_operands[DWARF2_LINE_OPCODE_BASE-1] = {
+ 0, /* DW_LNS_copy */
+ 1, /* DW_LNS_advance_pc */
+ 1, /* DW_LNS_advance_line */
+ 1, /* DW_LNS_set_file */
+ 1, /* DW_LNS_set_column */
+ 0, /* DW_LNS_negate_stmt */
+ 0, /* DW_LNS_set_basic_block */
+ 0, /* DW_LNS_const_add_pc */
+ 1, /* DW_LNS_fixed_advance_pc */
+#ifdef WITH_DWARF3
+ 0, /* DW_LNS_set_prologue_end */
+ 0, /* DW_LNS_set_epilogue_begin */
+ 1 /* DW_LNS_set_isa */
+#endif
+};
+
+/* Line number extended opcodes */
+typedef enum {
+ DW_LNE_end_sequence = 1,
+ DW_LNE_set_address,
+ DW_LNE_define_file,
+ DW_LNE_set_discriminator
+} dwarf_line_number_ext_op;
+
+/* Base and range for line offsets in special opcodes */
+#define DWARF2_LINE_BASE -5
+#define DWARF2_LINE_RANGE 14
+
+#define DWARF2_MAX_SPECIAL_ADDR_DELTA \
+ (((255-DWARF2_LINE_OPCODE_BASE)/DWARF2_LINE_RANGE)*\
+ dbgfmt_dwarf2->min_insn_len)
+
+/* Initial value of is_stmt register */
+#define DWARF2_LINE_DEFAULT_IS_STMT 1
+
+/* Line number state machine register state */
+typedef struct dwarf2_line_state {
+ /* static configuration */
+ yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2;
+
+ /* DWARF2 state machine registers */
+ unsigned long address;
+ unsigned long file;
+ unsigned long line;
+ unsigned long column;
+ unsigned long isa;
+ int is_stmt;
+
+ /* other state information */
+ /*@null@*/ yasm_bytecode *precbc;
+} dwarf2_line_state;
+
+typedef struct dwarf2_spp {
+ yasm_bytecode *line_start_prevbc;
+ yasm_bytecode *line_end_prevbc;
+} dwarf2_spp;
+
+typedef struct dwarf2_line_op {
+ dwarf_line_number_op opcode;
+ /*@owned@*/ /*@null@*/ yasm_intnum *operand;
+
+ /* extended opcode */
+ dwarf_line_number_ext_op ext_opcode;
+ /*@null@*/ /*@dependent@*/ yasm_symrec *ext_operand; /* unsigned */
+ /*@null@*/ /*@dependent@*/ yasm_intnum *ext_operand_int; /* unsigned */
+ unsigned long ext_operandsize;
+} dwarf2_line_op;
+
+/* Bytecode callback function prototypes */
+static void dwarf2_spp_bc_destroy(void *contents);
+static void dwarf2_spp_bc_print(const void *contents, FILE *f,
+ int indent_level);
+static int dwarf2_spp_bc_calc_len
+ (yasm_bytecode *bc, yasm_bc_add_span_func add_span, void *add_span_data);
+static int dwarf2_spp_bc_tobytes
+ (yasm_bytecode *bc, unsigned char **bufp, unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ /*@null@*/ yasm_output_reloc_func output_reloc);
+
+static void dwarf2_line_op_bc_destroy(void *contents);
+static void dwarf2_line_op_bc_print(const void *contents, FILE *f,
+ int indent_level);
+static int dwarf2_line_op_bc_calc_len
+ (yasm_bytecode *bc, yasm_bc_add_span_func add_span, void *add_span_data);
+static int dwarf2_line_op_bc_tobytes
+ (yasm_bytecode *bc, unsigned char **bufp, unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ /*@null@*/ yasm_output_reloc_func output_reloc);
+
+/* Bytecode callback structures */
+static const yasm_bytecode_callback dwarf2_spp_bc_callback = {
+ dwarf2_spp_bc_destroy,
+ dwarf2_spp_bc_print,
+ yasm_bc_finalize_common,
+ NULL,
+ dwarf2_spp_bc_calc_len,
+ yasm_bc_expand_common,
+ dwarf2_spp_bc_tobytes,
+ 0
+};
+
+static const yasm_bytecode_callback dwarf2_line_op_bc_callback = {
+ dwarf2_line_op_bc_destroy,
+ dwarf2_line_op_bc_print,
+ yasm_bc_finalize_common,
+ NULL,
+ dwarf2_line_op_bc_calc_len,
+ yasm_bc_expand_common,
+ dwarf2_line_op_bc_tobytes,
+ 0
+};
+
+
+static size_t
+dwarf2_dbgfmt_add_file(yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2, unsigned long filenum,
+ const char *pathname)
+{
+ size_t dirlen;
+ const char *filename;
+ unsigned long i, dir;
+
+ /* Put the directory into the directory table */
+ dir = 0;
+ dirlen = yasm__splitpath(pathname, &filename);
+ if (dirlen > 0) {
+ /* Look to see if we already have that dir in the table */
+ for (dir=1; dir<dbgfmt_dwarf2->dirs_size+1; dir++) {
+ if (strncmp(dbgfmt_dwarf2->dirs[dir-1], pathname, dirlen) == 0
+ && dbgfmt_dwarf2->dirs[dir-1][dirlen] == '\0')
+ break;
+ }
+ if (dir >= dbgfmt_dwarf2->dirs_size+1) {
+ /* Not found in table, add to end, reallocing if necessary */
+ if (dir >= dbgfmt_dwarf2->dirs_allocated+1) {
+ dbgfmt_dwarf2->dirs_allocated = dir+32;
+ dbgfmt_dwarf2->dirs = yasm_xrealloc(dbgfmt_dwarf2->dirs,
+ sizeof(char *)*dbgfmt_dwarf2->dirs_allocated);
+ }
+ dbgfmt_dwarf2->dirs[dir-1] = yasm__xstrndup(pathname, dirlen);
+ dbgfmt_dwarf2->dirs_size = dir;
+ }
+ }
+
+ /* Put the filename into the filename table */
+ if (filenum == 0) {
+ /* Look to see if we already have that filename in the table */
+ for (; filenum<dbgfmt_dwarf2->filenames_size; filenum++) {
+ if (!dbgfmt_dwarf2->filenames[filenum].filename ||
+ (dbgfmt_dwarf2->filenames[filenum].dir == dir
+ && strcmp(dbgfmt_dwarf2->filenames[filenum].filename,
+ filename) == 0))
+ break;
+ }
+ } else
+ filenum--; /* array index is 0-based */
+
+ /* Realloc table if necessary */
+ if (filenum >= dbgfmt_dwarf2->filenames_allocated) {
+ unsigned long old_allocated = dbgfmt_dwarf2->filenames_allocated;
+ dbgfmt_dwarf2->filenames_allocated = filenum+32;
+ dbgfmt_dwarf2->filenames = yasm_xrealloc(dbgfmt_dwarf2->filenames,
+ sizeof(dwarf2_filename)*dbgfmt_dwarf2->filenames_allocated);
+ for (i=old_allocated; i<dbgfmt_dwarf2->filenames_allocated; i++) {
+ dbgfmt_dwarf2->filenames[i].pathname = NULL;
+ dbgfmt_dwarf2->filenames[i].filename = NULL;
+ dbgfmt_dwarf2->filenames[i].dir = 0;
+ }
+ }
+
+ /* Actually save in table */
+ if (dbgfmt_dwarf2->filenames[filenum].pathname)
+ yasm_xfree(dbgfmt_dwarf2->filenames[filenum].pathname);
+ if (dbgfmt_dwarf2->filenames[filenum].filename)
+ yasm_xfree(dbgfmt_dwarf2->filenames[filenum].filename);
+ dbgfmt_dwarf2->filenames[filenum].pathname = yasm__xstrdup(pathname);
+ dbgfmt_dwarf2->filenames[filenum].filename = yasm__xstrdup(filename);
+ dbgfmt_dwarf2->filenames[filenum].dir = dir;
+
+ /* Update table size */
+ if (filenum >= dbgfmt_dwarf2->filenames_size)
+ dbgfmt_dwarf2->filenames_size = filenum + 1;
+
+ return filenum;
+}
+
+/* Create and add a new line opcode to a section, updating offset on insertion;
+ * no optimization necessary.
+ */
+static yasm_bytecode *
+dwarf2_dbgfmt_append_line_op(yasm_section *sect, dwarf_line_number_op opcode,
+ /*@only@*/ /*@null@*/ yasm_intnum *operand)
+{
+ dwarf2_line_op *line_op = yasm_xmalloc(sizeof(dwarf2_line_op));
+ yasm_bytecode *bc;
+
+ line_op->opcode = opcode;
+ line_op->operand = operand;
+ line_op->ext_opcode = 0;
+ line_op->ext_operand = NULL;
+ line_op->ext_operand_int = NULL;
+ line_op->ext_operandsize = 0;
+
+ bc = yasm_bc_create_common(&dwarf2_line_op_bc_callback, line_op, 0);
+ bc->len = 1;
+ if (operand)
+ bc->len += yasm_intnum_size_leb128(operand,
+ opcode == DW_LNS_advance_line);
+
+ yasm_dwarf2__append_bc(sect, bc);
+ return bc;
+}
+
+/* Create and add a new extended line opcode to a section, updating offset on
+ * insertion; no optimization necessary.
+ */
+static yasm_bytecode *
+dwarf2_dbgfmt_append_line_ext_op(yasm_section *sect,
+ dwarf_line_number_ext_op ext_opcode,
+ unsigned long ext_operandsize,
+ /*@null@*/ yasm_symrec *ext_operand)
+{
+ dwarf2_line_op *line_op = yasm_xmalloc(sizeof(dwarf2_line_op));
+ yasm_bytecode *bc;
+
+ line_op->opcode = DW_LNS_extended_op;
+ line_op->operand = yasm_intnum_create_uint(ext_operandsize+1);
+ line_op->ext_opcode = ext_opcode;
+ line_op->ext_operand = ext_operand;
+ line_op->ext_operand_int = NULL;
+ line_op->ext_operandsize = ext_operandsize;
+
+ bc = yasm_bc_create_common(&dwarf2_line_op_bc_callback, line_op, 0);
+ bc->len = 2 + yasm_intnum_size_leb128(line_op->operand, 0) +
+ ext_operandsize;
+
+ yasm_dwarf2__append_bc(sect, bc);
+ return bc;
+}
+
+static yasm_bytecode *
+dwarf2_dbgfmt_append_line_ext_op_int(yasm_section *sect,
+ dwarf_line_number_ext_op ext_opcode,
+ /*@only@*/ yasm_intnum *ext_operand)
+{
+ dwarf2_line_op *line_op = yasm_xmalloc(sizeof(dwarf2_line_op));
+ unsigned long ext_operandsize = yasm_intnum_size_leb128(ext_operand, 0);
+ yasm_bytecode *bc;
+
+ line_op->opcode = DW_LNS_extended_op;
+ line_op->operand = yasm_intnum_create_uint(ext_operandsize+1);
+ line_op->ext_opcode = ext_opcode;
+ line_op->ext_operand = NULL;
+ line_op->ext_operand_int = ext_operand;
+ line_op->ext_operandsize = ext_operandsize;
+
+ bc = yasm_bc_create_common(&dwarf2_line_op_bc_callback, line_op, 0);
+ bc->len = 2 + yasm_intnum_size_leb128(line_op->operand, 0) +
+ ext_operandsize;
+
+ yasm_dwarf2__append_bc(sect, bc);
+ return bc;
+}
+
+static void
+dwarf2_dbgfmt_finalize_locs(yasm_section *sect, dwarf2_section_data *dsd)
+{
+ /*@dependent@*/ yasm_symrec *lastsym = NULL;
+ /*@null@*/ yasm_bytecode *bc;
+ /*@null@*/ dwarf2_loc *loc;
+
+ bc = yasm_section_bcs_first(sect);
+ STAILQ_FOREACH(loc, &dsd->locs, link) {
+ /* Find the first bytecode following this loc by looking at
+ * the virtual line numbers. XXX: this assumes the source file
+ * order will be the same as the actual section order. If we ever
+ * implement subsegs this will NOT necessarily be true and this logic
+ * will need to be fixed to handle it!
+ *
+ * Keep track of last symbol seen prior to the loc.
+ */
+ while (bc && bc->line <= loc->vline) {
+ if (bc->symrecs) {
+ int i = 0;
+ while (bc->symrecs[i]) {
+ lastsym = bc->symrecs[i];
+ i++;
+ }
+ }
+ bc = yasm_bc__next(bc);
+ }
+ loc->sym = lastsym;
+ loc->bc = bc;
+ }
+}
+
+static int
+dwarf2_dbgfmt_gen_line_op(yasm_section *debug_line, dwarf2_line_state *state,
+ const dwarf2_loc *loc,
+ /*@null@*/ const dwarf2_loc *nextloc)
+{
+ unsigned long addr_delta;
+ long line_delta;
+ int opcode1, opcode2;
+ yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2 = state->dbgfmt_dwarf2;
+
+ if (state->file != loc->file) {
+ state->file = loc->file;
+ dwarf2_dbgfmt_append_line_op(debug_line, DW_LNS_set_file,
+ yasm_intnum_create_uint(state->file));
+ }
+ if (state->column != loc->column) {
+ state->column = loc->column;
+ dwarf2_dbgfmt_append_line_op(debug_line, DW_LNS_set_column,
+ yasm_intnum_create_uint(state->column));
+ }
+ if (loc->discriminator != 0) {
+ dwarf2_dbgfmt_append_line_ext_op_int(debug_line,
+ DW_LNE_set_discriminator,
+ yasm_intnum_create_uint(loc->discriminator));
+ }
+#ifdef WITH_DWARF3
+ if (loc->isa_change) {
+ state->isa = loc->isa;
+ dwarf2_dbgfmt_append_line_op(debug_line, DW_LNS_set_isa,
+ yasm_intnum_create_uint(state->isa));
+ }
+#endif
+ if (state->is_stmt == 0 && loc->is_stmt == IS_STMT_SET) {
+ state->is_stmt = 1;
+ dwarf2_dbgfmt_append_line_op(debug_line, DW_LNS_negate_stmt, NULL);
+ } else if (state->is_stmt == 1 && loc->is_stmt == IS_STMT_CLEAR) {
+ state->is_stmt = 0;
+ dwarf2_dbgfmt_append_line_op(debug_line, DW_LNS_negate_stmt, NULL);
+ }
+ if (loc->basic_block) {
+ dwarf2_dbgfmt_append_line_op(debug_line, DW_LNS_set_basic_block, NULL);
+ }
+#ifdef WITH_DWARF3
+ if (loc->prologue_end) {
+ dwarf2_dbgfmt_append_line_op(debug_line, DW_LNS_set_prologue_end, NULL);
+ }
+ if (loc->epilogue_begin) {
+ dwarf2_dbgfmt_append_line_op(debug_line, DW_LNS_set_epilogue_begin,
+ NULL);
+ }
+#endif
+
+ /* If multiple loc for the same location, use last */
+ if (nextloc && nextloc->bc->offset == loc->bc->offset)
+ return 0;
+
+ if (!state->precbc) {
+ /* Set the starting address for the section */
+ if (!loc->sym) {
+ /* shouldn't happen! */
+ yasm_error_set(YASM_ERROR_GENERAL,
+ N_("could not find label prior to loc"));
+ return 1;
+ }
+ dwarf2_dbgfmt_append_line_ext_op(debug_line, DW_LNE_set_address,
+ dbgfmt_dwarf2->sizeof_address, loc->sym);
+ addr_delta = 0;
+ } else if (loc->bc) {
+ if (state->precbc->offset > loc->bc->offset)
+ yasm_internal_error(N_("dwarf2 address went backwards?"));
+ addr_delta = loc->bc->offset - state->precbc->offset;
+ } else
+ return 0; /* ran out of bytecodes! XXX: do something? */
+
+ /* Generate appropriate opcode(s). Address can only increment,
+ * whereas line number can go backwards.
+ */
+ line_delta = loc->line - state->line;
+ state->line = loc->line;
+
+ /* First handle the line delta */
+ if (line_delta < DWARF2_LINE_BASE
+ || line_delta >= DWARF2_LINE_BASE+DWARF2_LINE_RANGE) {
+ /* Won't fit in special opcode, use (signed) line advance */
+ dwarf2_dbgfmt_append_line_op(debug_line, DW_LNS_advance_line,
+ yasm_intnum_create_int(line_delta));
+ line_delta = 0;
+ }
+
+ /* Next handle the address delta */
+ opcode1 = DWARF2_LINE_OPCODE_BASE + line_delta - DWARF2_LINE_BASE +
+ DWARF2_LINE_RANGE * (addr_delta / dbgfmt_dwarf2->min_insn_len);
+ opcode2 = DWARF2_LINE_OPCODE_BASE + line_delta - DWARF2_LINE_BASE +
+ DWARF2_LINE_RANGE * ((addr_delta - DWARF2_MAX_SPECIAL_ADDR_DELTA) /
+ dbgfmt_dwarf2->min_insn_len);
+ if (line_delta == 0 && addr_delta == 0) {
+ /* Both line and addr deltas are 0: do DW_LNS_copy */
+ dwarf2_dbgfmt_append_line_op(debug_line, DW_LNS_copy, NULL);
+ } else if (addr_delta <= DWARF2_MAX_SPECIAL_ADDR_DELTA && opcode1 <= 255) {
+ /* Addr delta in range of special opcode */
+ dwarf2_dbgfmt_append_line_op(debug_line, opcode1, NULL);
+ } else if (addr_delta <= 2*DWARF2_MAX_SPECIAL_ADDR_DELTA
+ && opcode2 <= 255) {
+ /* Addr delta in range of const_add_pc + special */
+ dwarf2_dbgfmt_append_line_op(debug_line, DW_LNS_const_add_pc, NULL);
+ dwarf2_dbgfmt_append_line_op(debug_line, opcode2, NULL);
+ } else {
+ /* Need advance_pc */
+ dwarf2_dbgfmt_append_line_op(debug_line, DW_LNS_advance_pc,
+ yasm_intnum_create_uint(addr_delta));
+ /* Take care of any remaining line_delta and add entry to matrix */
+ if (line_delta == 0)
+ dwarf2_dbgfmt_append_line_op(debug_line, DW_LNS_copy, NULL);
+ else {
+ unsigned int opcode;
+ opcode = DWARF2_LINE_OPCODE_BASE + line_delta - DWARF2_LINE_BASE;
+ dwarf2_dbgfmt_append_line_op(debug_line, opcode, NULL);
+ }
+ }
+ state->precbc = loc->bc;
+ return 0;
+}
+
+typedef struct dwarf2_line_bc_info {
+ yasm_section *debug_line;
+ yasm_object *object;
+ yasm_linemap *linemap;
+ yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2;
+ dwarf2_line_state *state;
+ dwarf2_loc loc;
+ unsigned long lastfile;
+} dwarf2_line_bc_info;
+
+static int
+dwarf2_filename_equals(const dwarf2_filename *fn,
+ char **dirs,
+ const char *pathname,
+ unsigned long dirlen,
+ const char *filename)
+{
+ /* check directory */
+ if (fn->dir == 0) {
+ if (dirlen != 0)
+ return 0;
+ } else {
+ if (strncmp(dirs[fn->dir-1], pathname, dirlen) != 0 ||
+ dirs[fn->dir-1][dirlen] != '\0')
+ return 0;
+ }
+
+ /* check filename */
+ return strcmp(fn->filename, filename) == 0;
+}
+
+static int
+dwarf2_generate_line_bc(yasm_bytecode *bc, /*@null@*/ void *d)
+{
+ dwarf2_line_bc_info *info = (dwarf2_line_bc_info *)d;
+ yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2 = info->dbgfmt_dwarf2;
+ unsigned long i;
+ size_t dirlen;
+ const char *pathname, *filename;
+ /*@null@*/ yasm_bytecode *nextbc = yasm_bc__next(bc);
+
+ if (nextbc && bc->offset == nextbc->offset)
+ return 0;
+
+ info->loc.vline = bc->line;
+ info->loc.bc = bc;
+
+ /* Keep track of last symbol seen */
+ if (bc->symrecs) {
+ i = 0;
+ while (bc->symrecs[i]) {
+ info->loc.sym = bc->symrecs[i];
+ i++;
+ }
+ }
+
+ yasm_linemap_lookup(info->linemap, bc->line, &pathname, &info->loc.line);
+ dirlen = yasm__splitpath(pathname, &filename);
char * new_dir_name = yasm_replace_path(
dbgfmt_dwarf2->dbgfmt.module->replace_map, dbgfmt_dwarf2->dbgfmt.module->replace_map_size,
pathname, dirlen);
dirlen = strlen(new_dir_name);
-
- /* Find file index; just linear search it unless it was the last used */
- if (info->lastfile > 0
- && dwarf2_filename_equals(&dbgfmt_dwarf2->filenames[info->lastfile-1],
+
+ /* Find file index; just linear search it unless it was the last used */
+ if (info->lastfile > 0
+ && dwarf2_filename_equals(&dbgfmt_dwarf2->filenames[info->lastfile-1],
dbgfmt_dwarf2->dirs, new_dir_name, dirlen,
- filename))
- info->loc.file = info->lastfile;
- else {
- for (i=0; i<dbgfmt_dwarf2->filenames_size; i++) {
- if (dwarf2_filename_equals(&dbgfmt_dwarf2->filenames[i],
+ filename))
+ info->loc.file = info->lastfile;
+ else {
+ for (i=0; i<dbgfmt_dwarf2->filenames_size; i++) {
+ if (dwarf2_filename_equals(&dbgfmt_dwarf2->filenames[i],
dbgfmt_dwarf2->dirs, new_dir_name, dirlen,
- filename))
- break;
- }
- if (i >= dbgfmt_dwarf2->filenames_size)
- yasm_internal_error(N_("could not find filename in table"));
- info->loc.file = i+1;
- info->lastfile = i+1;
- }
+ filename))
+ break;
+ }
+ if (i >= dbgfmt_dwarf2->filenames_size)
+ yasm_internal_error(N_("could not find filename in table"));
+ info->loc.file = i+1;
+ info->lastfile = i+1;
+ }
yasm_xfree(new_dir_name);
- if (dwarf2_dbgfmt_gen_line_op(info->debug_line, info->state, &info->loc,
- NULL))
- return 1;
- return 0;
-}
-
-typedef struct dwarf2_line_info {
- yasm_section *debug_line; /* section to which line number info goes */
- yasm_object *object;
- yasm_linemap *linemap;
- yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2;
- yasm_errwarns *errwarns;
-
- /* Generate based on bytecodes (1) or locs (0)? Use bytecodes if we're
- * generating line numbers for the actual assembly source file.
- */
- int asm_source;
-
- /* number of sections line number info generated for */
- size_t num_sections;
- /* last section line number info generated for */
- /*@null@*/ yasm_section *last_code;
-} dwarf2_line_info;
-
-static int
-dwarf2_generate_line_section(yasm_section *sect, /*@null@*/ void *d)
-{
- dwarf2_line_info *info = (dwarf2_line_info *)d;
- yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2 = info->dbgfmt_dwarf2;
- /*@null@*/ dwarf2_section_data *dsd;
- /*@null@*/ yasm_bytecode *bc;
- dwarf2_line_state state;
- unsigned long addr_delta;
-
- dsd = yasm_section_get_data(sect, &yasm_dwarf2__section_data_cb);
- if (!dsd) {
- if (info->asm_source && yasm_section_is_code(sect)) {
- /* Create line data for asm code sections */
- dsd = yasm_xmalloc(sizeof(dwarf2_section_data));
- STAILQ_INIT(&dsd->locs);
- yasm_section_add_data(sect, &yasm_dwarf2__section_data_cb, dsd);
- } else
- return 0; /* no line data for this section */
- }
-
- info->num_sections++;
- info->last_code = sect;
-
- /* initialize state machine registers for each sequence */
- state.dbgfmt_dwarf2 = dbgfmt_dwarf2;
- state.address = 0;
- state.file = 1;
- state.line = 1;
- state.column = 0;
- state.isa = 0;
- state.is_stmt = DWARF2_LINE_DEFAULT_IS_STMT;
- state.precbc = NULL;
-
- if (info->asm_source) {
- dwarf2_line_bc_info bcinfo;
-
- bcinfo.debug_line = info->debug_line;
- bcinfo.object = info->object;
- bcinfo.linemap = info->linemap;
- bcinfo.dbgfmt_dwarf2 = dbgfmt_dwarf2;
- bcinfo.state = &state;
- bcinfo.lastfile = 0;
- bcinfo.loc.isa_change = 0;
- bcinfo.loc.column = 0;
- bcinfo.loc.discriminator = 0;
- bcinfo.loc.is_stmt = IS_STMT_NOCHANGE;
- bcinfo.loc.basic_block = 0;
- bcinfo.loc.prologue_end = 0;
- bcinfo.loc.epilogue_begin = 0;
- bcinfo.loc.sym = NULL;
-
- /* bcs_traverse() skips first "dummy" bytecode, so look at it
- * separately to determine the initial symrec.
- */
- bc = yasm_section_bcs_first(sect);
- if (bc->symrecs) {
- size_t i = 0;
- while (bc->symrecs[i]) {
- bcinfo.loc.sym = bc->symrecs[i];
- i++;
- }
- }
-
- yasm_section_bcs_traverse(sect, info->errwarns, &bcinfo,
- dwarf2_generate_line_bc);
- } else {
- /*@null@*/ dwarf2_loc *loc;
-
- dwarf2_dbgfmt_finalize_locs(sect, dsd);
-
- STAILQ_FOREACH(loc, &dsd->locs, link) {
- if (dwarf2_dbgfmt_gen_line_op(info->debug_line, &state, loc,
- STAILQ_NEXT(loc, link)))
- return 1;
- }
- }
-
- /* End sequence: bring address to end of section, then output end
- * sequence opcode. Don't use a special opcode to do this as we don't
- * want an extra entry in the line matrix.
- */
- if (!state.precbc)
- state.precbc = yasm_section_bcs_first(sect);
- bc = yasm_section_bcs_last(sect);
- addr_delta = yasm_bc_next_offset(bc) - state.precbc->offset;
- if (addr_delta == DWARF2_MAX_SPECIAL_ADDR_DELTA)
- dwarf2_dbgfmt_append_line_op(info->debug_line, DW_LNS_const_add_pc,
- NULL);
- else if (addr_delta > 0)
- dwarf2_dbgfmt_append_line_op(info->debug_line, DW_LNS_advance_pc,
- yasm_intnum_create_uint(addr_delta));
- dwarf2_dbgfmt_append_line_ext_op(info->debug_line, DW_LNE_end_sequence, 0,
- NULL);
-
- return 0;
-}
-
-static int
-dwarf2_generate_filename(const char *filename, void *d)
-{
- yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2 = (yasm_dbgfmt_dwarf2 *)d;
+ if (dwarf2_dbgfmt_gen_line_op(info->debug_line, info->state, &info->loc,
+ NULL))
+ return 1;
+ return 0;
+}
+
+typedef struct dwarf2_line_info {
+ yasm_section *debug_line; /* section to which line number info goes */
+ yasm_object *object;
+ yasm_linemap *linemap;
+ yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2;
+ yasm_errwarns *errwarns;
+
+ /* Generate based on bytecodes (1) or locs (0)? Use bytecodes if we're
+ * generating line numbers for the actual assembly source file.
+ */
+ int asm_source;
+
+ /* number of sections line number info generated for */
+ size_t num_sections;
+ /* last section line number info generated for */
+ /*@null@*/ yasm_section *last_code;
+} dwarf2_line_info;
+
+static int
+dwarf2_generate_line_section(yasm_section *sect, /*@null@*/ void *d)
+{
+ dwarf2_line_info *info = (dwarf2_line_info *)d;
+ yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2 = info->dbgfmt_dwarf2;
+ /*@null@*/ dwarf2_section_data *dsd;
+ /*@null@*/ yasm_bytecode *bc;
+ dwarf2_line_state state;
+ unsigned long addr_delta;
+
+ dsd = yasm_section_get_data(sect, &yasm_dwarf2__section_data_cb);
+ if (!dsd) {
+ if (info->asm_source && yasm_section_is_code(sect)) {
+ /* Create line data for asm code sections */
+ dsd = yasm_xmalloc(sizeof(dwarf2_section_data));
+ STAILQ_INIT(&dsd->locs);
+ yasm_section_add_data(sect, &yasm_dwarf2__section_data_cb, dsd);
+ } else
+ return 0; /* no line data for this section */
+ }
+
+ info->num_sections++;
+ info->last_code = sect;
+
+ /* initialize state machine registers for each sequence */
+ state.dbgfmt_dwarf2 = dbgfmt_dwarf2;
+ state.address = 0;
+ state.file = 1;
+ state.line = 1;
+ state.column = 0;
+ state.isa = 0;
+ state.is_stmt = DWARF2_LINE_DEFAULT_IS_STMT;
+ state.precbc = NULL;
+
+ if (info->asm_source) {
+ dwarf2_line_bc_info bcinfo;
+
+ bcinfo.debug_line = info->debug_line;
+ bcinfo.object = info->object;
+ bcinfo.linemap = info->linemap;
+ bcinfo.dbgfmt_dwarf2 = dbgfmt_dwarf2;
+ bcinfo.state = &state;
+ bcinfo.lastfile = 0;
+ bcinfo.loc.isa_change = 0;
+ bcinfo.loc.column = 0;
+ bcinfo.loc.discriminator = 0;
+ bcinfo.loc.is_stmt = IS_STMT_NOCHANGE;
+ bcinfo.loc.basic_block = 0;
+ bcinfo.loc.prologue_end = 0;
+ bcinfo.loc.epilogue_begin = 0;
+ bcinfo.loc.sym = NULL;
+
+ /* bcs_traverse() skips first "dummy" bytecode, so look at it
+ * separately to determine the initial symrec.
+ */
+ bc = yasm_section_bcs_first(sect);
+ if (bc->symrecs) {
+ size_t i = 0;
+ while (bc->symrecs[i]) {
+ bcinfo.loc.sym = bc->symrecs[i];
+ i++;
+ }
+ }
+
+ yasm_section_bcs_traverse(sect, info->errwarns, &bcinfo,
+ dwarf2_generate_line_bc);
+ } else {
+ /*@null@*/ dwarf2_loc *loc;
+
+ dwarf2_dbgfmt_finalize_locs(sect, dsd);
+
+ STAILQ_FOREACH(loc, &dsd->locs, link) {
+ if (dwarf2_dbgfmt_gen_line_op(info->debug_line, &state, loc,
+ STAILQ_NEXT(loc, link)))
+ return 1;
+ }
+ }
+
+ /* End sequence: bring address to end of section, then output end
+ * sequence opcode. Don't use a special opcode to do this as we don't
+ * want an extra entry in the line matrix.
+ */
+ if (!state.precbc)
+ state.precbc = yasm_section_bcs_first(sect);
+ bc = yasm_section_bcs_last(sect);
+ addr_delta = yasm_bc_next_offset(bc) - state.precbc->offset;
+ if (addr_delta == DWARF2_MAX_SPECIAL_ADDR_DELTA)
+ dwarf2_dbgfmt_append_line_op(info->debug_line, DW_LNS_const_add_pc,
+ NULL);
+ else if (addr_delta > 0)
+ dwarf2_dbgfmt_append_line_op(info->debug_line, DW_LNS_advance_pc,
+ yasm_intnum_create_uint(addr_delta));
+ dwarf2_dbgfmt_append_line_ext_op(info->debug_line, DW_LNE_end_sequence, 0,
+ NULL);
+
+ return 0;
+}
+
+static int
+dwarf2_generate_filename(const char *filename, void *d)
+{
+ yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2 = (yasm_dbgfmt_dwarf2 *)d;
char *deb_name = yasm_replace_path(
dbgfmt_dwarf2->dbgfmt.module->replace_map, dbgfmt_dwarf2->dbgfmt.module->replace_map_size,
filename, strlen(filename));
dwarf2_dbgfmt_add_file(dbgfmt_dwarf2, 0, deb_name);
yasm_xfree(deb_name);
- return 0;
-}
-
-yasm_section *
-yasm_dwarf2__generate_line(yasm_object *object, yasm_linemap *linemap,
- yasm_errwarns *errwarns, int asm_source,
- /*@out@*/ yasm_section **main_code,
- /*@out@*/ size_t *num_line_sections)
-{
- yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2 = (yasm_dbgfmt_dwarf2 *)object->dbgfmt;
- dwarf2_line_info info;
- int new;
- size_t i;
- yasm_bytecode *sppbc;
- dwarf2_spp *spp;
- dwarf2_head *head;
-
- if (asm_source) {
- /* Generate dirs and filenames based on linemap */
- yasm_linemap_traverse_filenames(linemap, dbgfmt_dwarf2,
- dwarf2_generate_filename);
- }
-
- info.num_sections = 0;
- info.last_code = NULL;
- info.asm_source = asm_source;
- info.object = object;
- info.linemap = linemap;
- info.dbgfmt_dwarf2 = dbgfmt_dwarf2;
- info.debug_line = yasm_object_get_general(object, ".debug_line", 1, 0, 0,
- &new, 0);
-
- /* header */
- head = yasm_dwarf2__add_head(dbgfmt_dwarf2, info.debug_line, NULL, 0, 0);
-
- /* statement program prologue */
- spp = yasm_xmalloc(sizeof(dwarf2_spp));
- sppbc = yasm_bc_create_common(&dwarf2_spp_bc_callback, spp, 0);
- sppbc->len = dbgfmt_dwarf2->sizeof_offset + 5 +
- NELEMS(line_opcode_num_operands);
-
- /* directory list */
- for (i=0; i<dbgfmt_dwarf2->dirs_size; i++)
- sppbc->len += (unsigned long)strlen(dbgfmt_dwarf2->dirs[i])+1;
- sppbc->len++;
-
- /* filename list */
- for (i=0; i<dbgfmt_dwarf2->filenames_size; i++) {
- if (!dbgfmt_dwarf2->filenames[i].filename) {
- yasm_error_set(YASM_ERROR_GENERAL,
- N_("dwarf2 file number %d unassigned"), i+1);
- yasm_errwarn_propagate(errwarns, 0);
- continue;
- }
- sppbc->len +=
- (unsigned long)strlen(dbgfmt_dwarf2->filenames[i].filename) + 1 +
- yasm_size_uleb128(dbgfmt_dwarf2->filenames[i].dir) + 2;
- }
- sppbc->len++;
- yasm_dwarf2__append_bc(info.debug_line, sppbc);
-
- /* statement program */
- yasm_object_sections_traverse(object, (void *)&info,
- dwarf2_generate_line_section);
-
- /* mark end of line information */
- yasm_dwarf2__set_head_end(head, yasm_section_bcs_last(info.debug_line));
-
- *num_line_sections = info.num_sections;
- if (info.num_sections == 1)
- *main_code = info.last_code;
- else
- *main_code = NULL;
- return info.debug_line;
-}
-
-static void
-dwarf2_spp_bc_destroy(void *contents)
-{
- yasm_xfree(contents);
-}
-
-static void
-dwarf2_spp_bc_print(const void *contents, FILE *f, int indent_level)
-{
- /* TODO */
-}
-
-static int
-dwarf2_spp_bc_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
- void *add_span_data)
-{
- yasm_internal_error(N_("tried to calc_len a dwarf2 spp bytecode"));
- /*@notreached@*/
- return 0;
-}
-
-static int
-dwarf2_spp_bc_tobytes(yasm_bytecode *bc, unsigned char **bufp,
- unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- yasm_output_reloc_func output_reloc)
-{
- yasm_object *object = yasm_section_get_object(bc->section);
- yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2 = (yasm_dbgfmt_dwarf2 *)object->dbgfmt;
- unsigned char *buf = *bufp;
- yasm_intnum *cval;
- size_t i, len;
-
- /* Prologue length (following this field) */
- cval = yasm_intnum_create_uint(bc->len - (unsigned long)(buf-*bufp) -
- dbgfmt_dwarf2->sizeof_offset);
- yasm_arch_intnum_tobytes(object->arch, cval, buf,
- dbgfmt_dwarf2->sizeof_offset,
- dbgfmt_dwarf2->sizeof_offset*8, 0, bc, 0);
- buf += dbgfmt_dwarf2->sizeof_offset;
-
- YASM_WRITE_8(buf, dbgfmt_dwarf2->min_insn_len); /* minimum_instr_len */
- YASM_WRITE_8(buf, DWARF2_LINE_DEFAULT_IS_STMT); /* default_is_stmt */
- YASM_WRITE_8(buf, DWARF2_LINE_BASE); /* line_base */
- YASM_WRITE_8(buf, DWARF2_LINE_RANGE); /* line_range */
- YASM_WRITE_8(buf, DWARF2_LINE_OPCODE_BASE); /* opcode_base */
-
- /* Standard opcode # operands array */
- for (i=0; i<NELEMS(line_opcode_num_operands); i++)
- YASM_WRITE_8(buf, line_opcode_num_operands[i]);
-
- /* directory list */
- for (i=0; i<dbgfmt_dwarf2->dirs_size; i++) {
- len = strlen(dbgfmt_dwarf2->dirs[i])+1;
- memcpy(buf, dbgfmt_dwarf2->dirs[i], len);
- buf += len;
- }
- /* finish with single 0 byte */
- YASM_WRITE_8(buf, 0);
-
- /* filename list */
- for (i=0; i<dbgfmt_dwarf2->filenames_size; i++) {
- len = strlen(dbgfmt_dwarf2->filenames[i].filename)+1;
- memcpy(buf, dbgfmt_dwarf2->filenames[i].filename, len);
- buf += len;
-
- /* dir */
- buf += yasm_get_uleb128(dbgfmt_dwarf2->filenames[i].dir, buf);
- YASM_WRITE_8(buf, 0); /* time */
- YASM_WRITE_8(buf, 0); /* length */
- }
- /* finish with single 0 byte */
- YASM_WRITE_8(buf, 0);
-
- *bufp = buf;
-
- yasm_intnum_destroy(cval);
- return 0;
-}
-
-static void
-dwarf2_line_op_bc_destroy(void *contents)
-{
- dwarf2_line_op *line_op = (dwarf2_line_op *)contents;
- if (line_op->operand)
- yasm_intnum_destroy(line_op->operand);
- if (line_op->ext_operand_int)
- yasm_intnum_destroy(line_op->ext_operand_int);
- yasm_xfree(contents);
-}
-
-static void
-dwarf2_line_op_bc_print(const void *contents, FILE *f, int indent_level)
-{
- /* TODO */
-}
-
-static int
-dwarf2_line_op_bc_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
- void *add_span_data)
-{
- yasm_internal_error(N_("tried to calc_len a dwarf2 line_op bytecode"));
- /*@notreached@*/
- return 0;
-}
-
-static int
-dwarf2_line_op_bc_tobytes(yasm_bytecode *bc, unsigned char **bufp,
- unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- yasm_output_reloc_func output_reloc)
-{
- dwarf2_line_op *line_op = (dwarf2_line_op *)bc->contents;
- unsigned char *buf = *bufp;
-
- YASM_WRITE_8(buf, line_op->opcode);
- if (line_op->operand)
- buf += yasm_intnum_get_leb128(line_op->operand, buf,
- line_op->opcode == DW_LNS_advance_line);
- if (line_op->ext_opcode > 0) {
- YASM_WRITE_8(buf, line_op->ext_opcode);
- if (line_op->ext_operand) {
- yasm_value value;
- yasm_value_init_sym(&value, line_op->ext_operand,
- line_op->ext_operandsize*8);
- output_value(&value, buf, line_op->ext_operandsize,
- (unsigned long)(buf-bufstart), bc, 0, d);
- buf += line_op->ext_operandsize;
- }
- if (line_op->ext_operand_int) {
- buf += yasm_intnum_get_leb128(line_op->ext_operand_int, buf, 0);
- }
- }
-
- *bufp = buf;
- return 0;
-}
-
-void
-yasm_dwarf2__dir_loc(yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_valparam *vp;
- int in_is_stmt = 0, in_isa = 0, in_discriminator = 0;
-
- /*@dependent@*/ /*@null@*/ const yasm_intnum *intn;
- dwarf2_section_data *dsd;
- dwarf2_loc *loc = yasm_xmalloc(sizeof(dwarf2_loc));
-
- /* File number (required) */
- if (!valparams || !(vp = yasm_vps_first(valparams)) ||
- vp->val || vp->type != YASM_PARAM_EXPR) {
- yasm_error_set(YASM_ERROR_SYNTAX, N_("file number required"));
- yasm_xfree(loc);
- return;
- }
- intn = yasm_expr_get_intnum(&vp->param.e, 0);
- if (!intn) {
- yasm_error_set(YASM_ERROR_NOT_CONSTANT,
- N_("file number is not a constant"));
- yasm_xfree(loc);
- return;
- }
- if (yasm_intnum_sign(intn) != 1) {
- yasm_error_set(YASM_ERROR_VALUE, N_("file number less than one"));
- yasm_xfree(loc);
- return;
- }
- loc->file = yasm_intnum_get_uint(intn);
-
- /* Line number (required) */
- vp = yasm_vps_next(vp);
- if (!vp || vp->val || vp->type != YASM_PARAM_EXPR) {
- yasm_error_set(YASM_ERROR_SYNTAX, N_("line number required"));
- yasm_xfree(loc);
- return;
- }
- intn = yasm_expr_get_intnum(&vp->param.e, 0);
- if (!intn) {
- yasm_error_set(YASM_ERROR_NOT_CONSTANT,
- N_("line number is not a constant"));
- yasm_xfree(loc);
- return;
- }
- loc->line = yasm_intnum_get_uint(intn);
-
- /* Generate new section data if it doesn't already exist */
- if (!object->cur_section) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("[%s] can only be used inside of a section"), "loc");
- yasm_xfree(loc);
- return;
- }
- dsd = yasm_section_get_data(object->cur_section,
- &yasm_dwarf2__section_data_cb);
- if (!dsd) {
- dsd = yasm_xmalloc(sizeof(dwarf2_section_data));
- STAILQ_INIT(&dsd->locs);
- yasm_section_add_data(object->cur_section,
- &yasm_dwarf2__section_data_cb, dsd);
- }
-
- /* Defaults for optional settings */
- loc->column = 0;
- loc->discriminator = 0;
- loc->isa_change = 0;
- loc->isa = 0;
- loc->is_stmt = IS_STMT_NOCHANGE;
- loc->basic_block = 0;
- loc->prologue_end = 0;
- loc->epilogue_begin = 0;
-
- /* Optional column number */
- vp = yasm_vps_next(vp);
- if (vp && !vp->val && vp->type == YASM_PARAM_EXPR) {
- intn = yasm_expr_get_intnum(&vp->param.e, 0);
- if (!intn) {
- yasm_error_set(YASM_ERROR_NOT_CONSTANT,
- N_("column number is not a constant"));
- yasm_xfree(loc);
- return;
- }
- loc->column = yasm_intnum_get_uint(intn);
- vp = yasm_vps_next(vp);
- }
-
- /* Other options; note for GAS compatibility we need to support both:
- * is_stmt=1 (NASM) and
- * is_stmt 1 (GAS)
- */
- while (vp) {
- /*@null@*/ /*@dependent@*/ const char *s;
- /*@null@*/ /*@only@*/ yasm_expr *e;
-
-restart:
- if (in_is_stmt) {
- in_is_stmt = 0;
- if (!(e = yasm_vp_expr(vp, object->symtab, line)) ||
- !(intn = yasm_expr_get_intnum(&e, 0))) {
- yasm_error_set(YASM_ERROR_NOT_CONSTANT,
- N_("is_stmt value is not a constant"));
- yasm_xfree(loc);
- if (e)
- yasm_expr_destroy(e);
- return;
- }
- if (yasm_intnum_is_zero(intn))
- loc->is_stmt = IS_STMT_SET;
- else if (yasm_intnum_is_pos1(intn))
- loc->is_stmt = IS_STMT_CLEAR;
- else {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("is_stmt value not 0 or 1"));
- yasm_xfree(loc);
- yasm_expr_destroy(e);
- return;
- }
- yasm_expr_destroy(e);
- } else if (in_isa) {
- in_isa = 0;
- if (!(e = yasm_vp_expr(vp, object->symtab, line)) ||
- !(intn = yasm_expr_get_intnum(&e, 0))) {
- yasm_error_set(YASM_ERROR_NOT_CONSTANT,
- N_("isa value is not a constant"));
- yasm_xfree(loc);
- if (e)
- yasm_expr_destroy(e);
- return;
- }
- if (yasm_intnum_sign(intn) < 0) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("isa value less than zero"));
- yasm_xfree(loc);
- yasm_expr_destroy(e);
- return;
- }
- loc->isa_change = 1;
- loc->isa = yasm_intnum_get_uint(intn);
- yasm_expr_destroy(e);
- } else if (in_discriminator) {
- in_discriminator = 0;
- if (!(e = yasm_vp_expr(vp, object->symtab, line)) ||
- !(intn = yasm_expr_get_intnum(&e, 0))) {
- yasm_error_set(YASM_ERROR_NOT_CONSTANT,
- N_("discriminator value is not a constant"));
- yasm_xfree(loc);
- if (e)
- yasm_expr_destroy(e);
- return;
- }
- if (yasm_intnum_sign(intn) < 0) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("discriminator value less than zero"));
- yasm_xfree(loc);
- yasm_expr_destroy(e);
- return;
- }
- loc->discriminator = yasm_intnum_get_uint(intn);
- yasm_expr_destroy(e);
- } else if (!vp->val && (s = yasm_vp_id(vp))) {
- if (yasm__strcasecmp(s, "is_stmt") == 0)
- in_is_stmt = 1;
- else if (yasm__strcasecmp(s, "isa") == 0)
- in_isa = 1;
- else if (yasm__strcasecmp(s, "discriminator") == 0)
- in_discriminator = 1;
- else if (yasm__strcasecmp(s, "basic_block") == 0)
- loc->basic_block = 1;
- else if (yasm__strcasecmp(s, "prologue_end") == 0)
- loc->prologue_end = 1;
- else if (yasm__strcasecmp(s, "epilogue_begin") == 0)
- loc->epilogue_begin = 1;
- else
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("unrecognized loc option `%s'"), s);
- } else if (!vp->val) {
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("unrecognized numeric qualifier"));
- } else if (yasm__strcasecmp(vp->val, "is_stmt") == 0) {
- in_is_stmt = 1;
- goto restart; /* don't go to the next valparam */
- } else if (yasm__strcasecmp(vp->val, "isa") == 0) {
- in_isa = 1;
- goto restart; /* don't go to the next valparam */
- } else if (yasm__strcasecmp(vp->val, "discriminator") == 0) {
- in_discriminator = 1;
- goto restart; /* don't go to the next valparam */
- } else
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("unrecognized loc option `%s'"), vp->val);
- vp = yasm_vps_next(vp);
- }
-
- if (in_is_stmt || in_isa || in_discriminator) {
- yasm_error_set(YASM_ERROR_SYNTAX, N_("%s requires value"),
- in_is_stmt ? "is_stmt" :
- (in_isa ? "isa" : "discriminator"));
- yasm_xfree(loc);
- return;
- }
-
- /* Append new location */
- loc->vline = line;
- loc->bc = NULL;
- loc->sym = NULL;
- STAILQ_INSERT_TAIL(&dsd->locs, loc, link);
-}
-
-void
-yasm_dwarf2__dir_file(yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2 = (yasm_dbgfmt_dwarf2 *)object->dbgfmt;
- yasm_valparam *vp;
- /*@dependent@*/ /*@null@*/ const yasm_intnum *file_intn;
- unsigned long filenum;
-
- if (!valparams) {
- yasm_error_set(YASM_ERROR_SYNTAX, N_("[%s] requires an argument"),
- "FILE");
- return;
- }
-
- vp = yasm_vps_first(valparams);
- if (yasm_vp_string(vp)) {
- /* Just a bare filename */
- yasm_object_set_source_fn(object, yasm_vp_string(vp));
+ return 0;
+}
+
+yasm_section *
+yasm_dwarf2__generate_line(yasm_object *object, yasm_linemap *linemap,
+ yasm_errwarns *errwarns, int asm_source,
+ /*@out@*/ yasm_section **main_code,
+ /*@out@*/ size_t *num_line_sections)
+{
+ yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2 = (yasm_dbgfmt_dwarf2 *)object->dbgfmt;
+ dwarf2_line_info info;
+ int new;
+ size_t i;
+ yasm_bytecode *sppbc;
+ dwarf2_spp *spp;
+ dwarf2_head *head;
+
+ if (asm_source) {
+ /* Generate dirs and filenames based on linemap */
+ yasm_linemap_traverse_filenames(linemap, dbgfmt_dwarf2,
+ dwarf2_generate_filename);
+ }
+
+ info.num_sections = 0;
+ info.last_code = NULL;
+ info.asm_source = asm_source;
+ info.object = object;
+ info.linemap = linemap;
+ info.dbgfmt_dwarf2 = dbgfmt_dwarf2;
+ info.debug_line = yasm_object_get_general(object, ".debug_line", 1, 0, 0,
+ &new, 0);
+
+ /* header */
+ head = yasm_dwarf2__add_head(dbgfmt_dwarf2, info.debug_line, NULL, 0, 0);
+
+ /* statement program prologue */
+ spp = yasm_xmalloc(sizeof(dwarf2_spp));
+ sppbc = yasm_bc_create_common(&dwarf2_spp_bc_callback, spp, 0);
+ sppbc->len = dbgfmt_dwarf2->sizeof_offset + 5 +
+ NELEMS(line_opcode_num_operands);
+
+ /* directory list */
+ for (i=0; i<dbgfmt_dwarf2->dirs_size; i++)
+ sppbc->len += (unsigned long)strlen(dbgfmt_dwarf2->dirs[i])+1;
+ sppbc->len++;
+
+ /* filename list */
+ for (i=0; i<dbgfmt_dwarf2->filenames_size; i++) {
+ if (!dbgfmt_dwarf2->filenames[i].filename) {
+ yasm_error_set(YASM_ERROR_GENERAL,
+ N_("dwarf2 file number %d unassigned"), i+1);
+ yasm_errwarn_propagate(errwarns, 0);
+ continue;
+ }
+ sppbc->len +=
+ (unsigned long)strlen(dbgfmt_dwarf2->filenames[i].filename) + 1 +
+ yasm_size_uleb128(dbgfmt_dwarf2->filenames[i].dir) + 2;
+ }
+ sppbc->len++;
+ yasm_dwarf2__append_bc(info.debug_line, sppbc);
+
+ /* statement program */
+ yasm_object_sections_traverse(object, (void *)&info,
+ dwarf2_generate_line_section);
+
+ /* mark end of line information */
+ yasm_dwarf2__set_head_end(head, yasm_section_bcs_last(info.debug_line));
+
+ *num_line_sections = info.num_sections;
+ if (info.num_sections == 1)
+ *main_code = info.last_code;
+ else
+ *main_code = NULL;
+ return info.debug_line;
+}
+
+static void
+dwarf2_spp_bc_destroy(void *contents)
+{
+ yasm_xfree(contents);
+}
+
+static void
+dwarf2_spp_bc_print(const void *contents, FILE *f, int indent_level)
+{
+ /* TODO */
+}
+
+static int
+dwarf2_spp_bc_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
+ void *add_span_data)
+{
+ yasm_internal_error(N_("tried to calc_len a dwarf2 spp bytecode"));
+ /*@notreached@*/
+ return 0;
+}
+
+static int
+dwarf2_spp_bc_tobytes(yasm_bytecode *bc, unsigned char **bufp,
+ unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ yasm_output_reloc_func output_reloc)
+{
+ yasm_object *object = yasm_section_get_object(bc->section);
+ yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2 = (yasm_dbgfmt_dwarf2 *)object->dbgfmt;
+ unsigned char *buf = *bufp;
+ yasm_intnum *cval;
+ size_t i, len;
+
+ /* Prologue length (following this field) */
+ cval = yasm_intnum_create_uint(bc->len - (unsigned long)(buf-*bufp) -
+ dbgfmt_dwarf2->sizeof_offset);
+ yasm_arch_intnum_tobytes(object->arch, cval, buf,
+ dbgfmt_dwarf2->sizeof_offset,
+ dbgfmt_dwarf2->sizeof_offset*8, 0, bc, 0);
+ buf += dbgfmt_dwarf2->sizeof_offset;
+
+ YASM_WRITE_8(buf, dbgfmt_dwarf2->min_insn_len); /* minimum_instr_len */
+ YASM_WRITE_8(buf, DWARF2_LINE_DEFAULT_IS_STMT); /* default_is_stmt */
+ YASM_WRITE_8(buf, DWARF2_LINE_BASE); /* line_base */
+ YASM_WRITE_8(buf, DWARF2_LINE_RANGE); /* line_range */
+ YASM_WRITE_8(buf, DWARF2_LINE_OPCODE_BASE); /* opcode_base */
+
+ /* Standard opcode # operands array */
+ for (i=0; i<NELEMS(line_opcode_num_operands); i++)
+ YASM_WRITE_8(buf, line_opcode_num_operands[i]);
+
+ /* directory list */
+ for (i=0; i<dbgfmt_dwarf2->dirs_size; i++) {
+ len = strlen(dbgfmt_dwarf2->dirs[i])+1;
+ memcpy(buf, dbgfmt_dwarf2->dirs[i], len);
+ buf += len;
+ }
+ /* finish with single 0 byte */
+ YASM_WRITE_8(buf, 0);
+
+ /* filename list */
+ for (i=0; i<dbgfmt_dwarf2->filenames_size; i++) {
+ len = strlen(dbgfmt_dwarf2->filenames[i].filename)+1;
+ memcpy(buf, dbgfmt_dwarf2->filenames[i].filename, len);
+ buf += len;
+
+ /* dir */
+ buf += yasm_get_uleb128(dbgfmt_dwarf2->filenames[i].dir, buf);
+ YASM_WRITE_8(buf, 0); /* time */
+ YASM_WRITE_8(buf, 0); /* length */
+ }
+ /* finish with single 0 byte */
+ YASM_WRITE_8(buf, 0);
+
+ *bufp = buf;
+
+ yasm_intnum_destroy(cval);
+ return 0;
+}
+
+static void
+dwarf2_line_op_bc_destroy(void *contents)
+{
+ dwarf2_line_op *line_op = (dwarf2_line_op *)contents;
+ if (line_op->operand)
+ yasm_intnum_destroy(line_op->operand);
+ if (line_op->ext_operand_int)
+ yasm_intnum_destroy(line_op->ext_operand_int);
+ yasm_xfree(contents);
+}
+
+static void
+dwarf2_line_op_bc_print(const void *contents, FILE *f, int indent_level)
+{
+ /* TODO */
+}
+
+static int
+dwarf2_line_op_bc_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
+ void *add_span_data)
+{
+ yasm_internal_error(N_("tried to calc_len a dwarf2 line_op bytecode"));
+ /*@notreached@*/
+ return 0;
+}
+
+static int
+dwarf2_line_op_bc_tobytes(yasm_bytecode *bc, unsigned char **bufp,
+ unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ yasm_output_reloc_func output_reloc)
+{
+ dwarf2_line_op *line_op = (dwarf2_line_op *)bc->contents;
+ unsigned char *buf = *bufp;
+
+ YASM_WRITE_8(buf, line_op->opcode);
+ if (line_op->operand)
+ buf += yasm_intnum_get_leb128(line_op->operand, buf,
+ line_op->opcode == DW_LNS_advance_line);
+ if (line_op->ext_opcode > 0) {
+ YASM_WRITE_8(buf, line_op->ext_opcode);
+ if (line_op->ext_operand) {
+ yasm_value value;
+ yasm_value_init_sym(&value, line_op->ext_operand,
+ line_op->ext_operandsize*8);
+ output_value(&value, buf, line_op->ext_operandsize,
+ (unsigned long)(buf-bufstart), bc, 0, d);
+ buf += line_op->ext_operandsize;
+ }
+ if (line_op->ext_operand_int) {
+ buf += yasm_intnum_get_leb128(line_op->ext_operand_int, buf, 0);
+ }
+ }
+
+ *bufp = buf;
+ return 0;
+}
+
+void
+yasm_dwarf2__dir_loc(yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_valparam *vp;
+ int in_is_stmt = 0, in_isa = 0, in_discriminator = 0;
+
+ /*@dependent@*/ /*@null@*/ const yasm_intnum *intn;
+ dwarf2_section_data *dsd;
+ dwarf2_loc *loc = yasm_xmalloc(sizeof(dwarf2_loc));
+
+ /* File number (required) */
+ if (!valparams || !(vp = yasm_vps_first(valparams)) ||
+ vp->val || vp->type != YASM_PARAM_EXPR) {
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("file number required"));
+ yasm_xfree(loc);
+ return;
+ }
+ intn = yasm_expr_get_intnum(&vp->param.e, 0);
+ if (!intn) {
+ yasm_error_set(YASM_ERROR_NOT_CONSTANT,
+ N_("file number is not a constant"));
+ yasm_xfree(loc);
+ return;
+ }
+ if (yasm_intnum_sign(intn) != 1) {
+ yasm_error_set(YASM_ERROR_VALUE, N_("file number less than one"));
+ yasm_xfree(loc);
+ return;
+ }
+ loc->file = yasm_intnum_get_uint(intn);
+
+ /* Line number (required) */
+ vp = yasm_vps_next(vp);
+ if (!vp || vp->val || vp->type != YASM_PARAM_EXPR) {
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("line number required"));
+ yasm_xfree(loc);
+ return;
+ }
+ intn = yasm_expr_get_intnum(&vp->param.e, 0);
+ if (!intn) {
+ yasm_error_set(YASM_ERROR_NOT_CONSTANT,
+ N_("line number is not a constant"));
+ yasm_xfree(loc);
+ return;
+ }
+ loc->line = yasm_intnum_get_uint(intn);
+
+ /* Generate new section data if it doesn't already exist */
+ if (!object->cur_section) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("[%s] can only be used inside of a section"), "loc");
+ yasm_xfree(loc);
+ return;
+ }
+ dsd = yasm_section_get_data(object->cur_section,
+ &yasm_dwarf2__section_data_cb);
+ if (!dsd) {
+ dsd = yasm_xmalloc(sizeof(dwarf2_section_data));
+ STAILQ_INIT(&dsd->locs);
+ yasm_section_add_data(object->cur_section,
+ &yasm_dwarf2__section_data_cb, dsd);
+ }
+
+ /* Defaults for optional settings */
+ loc->column = 0;
+ loc->discriminator = 0;
+ loc->isa_change = 0;
+ loc->isa = 0;
+ loc->is_stmt = IS_STMT_NOCHANGE;
+ loc->basic_block = 0;
+ loc->prologue_end = 0;
+ loc->epilogue_begin = 0;
+
+ /* Optional column number */
+ vp = yasm_vps_next(vp);
+ if (vp && !vp->val && vp->type == YASM_PARAM_EXPR) {
+ intn = yasm_expr_get_intnum(&vp->param.e, 0);
+ if (!intn) {
+ yasm_error_set(YASM_ERROR_NOT_CONSTANT,
+ N_("column number is not a constant"));
+ yasm_xfree(loc);
+ return;
+ }
+ loc->column = yasm_intnum_get_uint(intn);
+ vp = yasm_vps_next(vp);
+ }
+
+ /* Other options; note for GAS compatibility we need to support both:
+ * is_stmt=1 (NASM) and
+ * is_stmt 1 (GAS)
+ */
+ while (vp) {
+ /*@null@*/ /*@dependent@*/ const char *s;
+ /*@null@*/ /*@only@*/ yasm_expr *e;
+
+restart:
+ if (in_is_stmt) {
+ in_is_stmt = 0;
+ if (!(e = yasm_vp_expr(vp, object->symtab, line)) ||
+ !(intn = yasm_expr_get_intnum(&e, 0))) {
+ yasm_error_set(YASM_ERROR_NOT_CONSTANT,
+ N_("is_stmt value is not a constant"));
+ yasm_xfree(loc);
+ if (e)
+ yasm_expr_destroy(e);
+ return;
+ }
+ if (yasm_intnum_is_zero(intn))
+ loc->is_stmt = IS_STMT_SET;
+ else if (yasm_intnum_is_pos1(intn))
+ loc->is_stmt = IS_STMT_CLEAR;
+ else {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("is_stmt value not 0 or 1"));
+ yasm_xfree(loc);
+ yasm_expr_destroy(e);
+ return;
+ }
+ yasm_expr_destroy(e);
+ } else if (in_isa) {
+ in_isa = 0;
+ if (!(e = yasm_vp_expr(vp, object->symtab, line)) ||
+ !(intn = yasm_expr_get_intnum(&e, 0))) {
+ yasm_error_set(YASM_ERROR_NOT_CONSTANT,
+ N_("isa value is not a constant"));
+ yasm_xfree(loc);
+ if (e)
+ yasm_expr_destroy(e);
+ return;
+ }
+ if (yasm_intnum_sign(intn) < 0) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("isa value less than zero"));
+ yasm_xfree(loc);
+ yasm_expr_destroy(e);
+ return;
+ }
+ loc->isa_change = 1;
+ loc->isa = yasm_intnum_get_uint(intn);
+ yasm_expr_destroy(e);
+ } else if (in_discriminator) {
+ in_discriminator = 0;
+ if (!(e = yasm_vp_expr(vp, object->symtab, line)) ||
+ !(intn = yasm_expr_get_intnum(&e, 0))) {
+ yasm_error_set(YASM_ERROR_NOT_CONSTANT,
+ N_("discriminator value is not a constant"));
+ yasm_xfree(loc);
+ if (e)
+ yasm_expr_destroy(e);
+ return;
+ }
+ if (yasm_intnum_sign(intn) < 0) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("discriminator value less than zero"));
+ yasm_xfree(loc);
+ yasm_expr_destroy(e);
+ return;
+ }
+ loc->discriminator = yasm_intnum_get_uint(intn);
+ yasm_expr_destroy(e);
+ } else if (!vp->val && (s = yasm_vp_id(vp))) {
+ if (yasm__strcasecmp(s, "is_stmt") == 0)
+ in_is_stmt = 1;
+ else if (yasm__strcasecmp(s, "isa") == 0)
+ in_isa = 1;
+ else if (yasm__strcasecmp(s, "discriminator") == 0)
+ in_discriminator = 1;
+ else if (yasm__strcasecmp(s, "basic_block") == 0)
+ loc->basic_block = 1;
+ else if (yasm__strcasecmp(s, "prologue_end") == 0)
+ loc->prologue_end = 1;
+ else if (yasm__strcasecmp(s, "epilogue_begin") == 0)
+ loc->epilogue_begin = 1;
+ else
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("unrecognized loc option `%s'"), s);
+ } else if (!vp->val) {
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("unrecognized numeric qualifier"));
+ } else if (yasm__strcasecmp(vp->val, "is_stmt") == 0) {
+ in_is_stmt = 1;
+ goto restart; /* don't go to the next valparam */
+ } else if (yasm__strcasecmp(vp->val, "isa") == 0) {
+ in_isa = 1;
+ goto restart; /* don't go to the next valparam */
+ } else if (yasm__strcasecmp(vp->val, "discriminator") == 0) {
+ in_discriminator = 1;
+ goto restart; /* don't go to the next valparam */
+ } else
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("unrecognized loc option `%s'"), vp->val);
+ vp = yasm_vps_next(vp);
+ }
+
+ if (in_is_stmt || in_isa || in_discriminator) {
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("%s requires value"),
+ in_is_stmt ? "is_stmt" :
+ (in_isa ? "isa" : "discriminator"));
+ yasm_xfree(loc);
+ return;
+ }
+
+ /* Append new location */
+ loc->vline = line;
+ loc->bc = NULL;
+ loc->sym = NULL;
+ STAILQ_INSERT_TAIL(&dsd->locs, loc, link);
+}
+
+void
+yasm_dwarf2__dir_file(yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2 = (yasm_dbgfmt_dwarf2 *)object->dbgfmt;
+ yasm_valparam *vp;
+ /*@dependent@*/ /*@null@*/ const yasm_intnum *file_intn;
+ unsigned long filenum;
+
+ if (!valparams) {
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("[%s] requires an argument"),
+ "FILE");
+ return;
+ }
+
+ vp = yasm_vps_first(valparams);
+ if (yasm_vp_string(vp)) {
+ /* Just a bare filename */
+ yasm_object_set_source_fn(object, yasm_vp_string(vp));
object->deb_filename = yasm_replace_path(
dbgfmt_dwarf2->dbgfmt.module->replace_map, dbgfmt_dwarf2->dbgfmt.module->replace_map_size,
yasm_vp_string(vp), strlen(yasm_vp_string(vp)));
- return;
- }
-
- /* Otherwise.. first vp is the file number */
- if (vp->type != YASM_PARAM_EXPR ||
- !(file_intn = yasm_expr_get_intnum(&vp->param.e, 0))) {
- yasm_error_set(YASM_ERROR_NOT_CONSTANT,
- N_("file number is not a constant"));
- return;
- }
- filenum = yasm_intnum_get_uint(file_intn);
-
- vp = yasm_vps_next(vp);
- if (!yasm_vp_string(vp)) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("file number given but no filename"));
- return;
- }
-
- dwarf2_dbgfmt_add_file(dbgfmt_dwarf2, filenum, yasm_vp_string(vp));
-}
+ return;
+ }
+
+ /* Otherwise.. first vp is the file number */
+ if (vp->type != YASM_PARAM_EXPR ||
+ !(file_intn = yasm_expr_get_intnum(&vp->param.e, 0))) {
+ yasm_error_set(YASM_ERROR_NOT_CONSTANT,
+ N_("file number is not a constant"));
+ return;
+ }
+ filenum = yasm_intnum_get_uint(file_intn);
+
+ vp = yasm_vps_next(vp);
+ if (!yasm_vp_string(vp)) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("file number given but no filename"));
+ return;
+ }
+
+ dwarf2_dbgfmt_add_file(dbgfmt_dwarf2, filenum, yasm_vp_string(vp));
+}
diff --git a/contrib/tools/yasm/modules/dbgfmts/null/null-dbgfmt.c b/contrib/tools/yasm/modules/dbgfmts/null/null-dbgfmt.c
index 3153a6a2d7..d2d1bed58e 100644
--- a/contrib/tools/yasm/modules/dbgfmts/null/null-dbgfmt.c
+++ b/contrib/tools/yasm/modules/dbgfmts/null/null-dbgfmt.c
@@ -1,64 +1,64 @@
-/*
- * Null debugging format (creates NO debugging information)
- *
- * Copyright (C) 2002-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <libyasm.h>
-
-
-yasm_dbgfmt_module yasm_null_LTX_dbgfmt;
-
-
-static /*@null@*/ /*@only@*/ yasm_dbgfmt *
-null_dbgfmt_create(yasm_object *object)
-{
- yasm_dbgfmt_base *dbgfmt = yasm_xmalloc(sizeof(yasm_dbgfmt_base));
- dbgfmt->module = &yasm_null_LTX_dbgfmt;
- return (yasm_dbgfmt *)dbgfmt;
-}
-
-static void
-null_dbgfmt_destroy(/*@only@*/ yasm_dbgfmt *dbgfmt)
-{
- yasm_xfree(dbgfmt);
-}
-
-static void
-null_dbgfmt_generate(yasm_object *object, yasm_linemap *linemap,
- yasm_errwarns *errwarns)
-{
-}
-
-
-/* Define dbgfmt structure -- see dbgfmt.h for details */
-yasm_dbgfmt_module yasm_null_LTX_dbgfmt = {
- "No debugging info",
- "null",
- NULL, /* no directives */
- null_dbgfmt_create,
- null_dbgfmt_destroy,
- null_dbgfmt_generate
-};
+/*
+ * Null debugging format (creates NO debugging information)
+ *
+ * Copyright (C) 2002-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <libyasm.h>
+
+
+yasm_dbgfmt_module yasm_null_LTX_dbgfmt;
+
+
+static /*@null@*/ /*@only@*/ yasm_dbgfmt *
+null_dbgfmt_create(yasm_object *object)
+{
+ yasm_dbgfmt_base *dbgfmt = yasm_xmalloc(sizeof(yasm_dbgfmt_base));
+ dbgfmt->module = &yasm_null_LTX_dbgfmt;
+ return (yasm_dbgfmt *)dbgfmt;
+}
+
+static void
+null_dbgfmt_destroy(/*@only@*/ yasm_dbgfmt *dbgfmt)
+{
+ yasm_xfree(dbgfmt);
+}
+
+static void
+null_dbgfmt_generate(yasm_object *object, yasm_linemap *linemap,
+ yasm_errwarns *errwarns)
+{
+}
+
+
+/* Define dbgfmt structure -- see dbgfmt.h for details */
+yasm_dbgfmt_module yasm_null_LTX_dbgfmt = {
+ "No debugging info",
+ "null",
+ NULL, /* no directives */
+ null_dbgfmt_create,
+ null_dbgfmt_destroy,
+ null_dbgfmt_generate
+};
diff --git a/contrib/tools/yasm/modules/dbgfmts/stabs/stabs-dbgfmt.c b/contrib/tools/yasm/modules/dbgfmts/stabs/stabs-dbgfmt.c
index a506d96605..5c0cba6aeb 100644
--- a/contrib/tools/yasm/modules/dbgfmts/stabs/stabs-dbgfmt.c
+++ b/contrib/tools/yasm/modules/dbgfmts/stabs/stabs-dbgfmt.c
@@ -1,511 +1,511 @@
-/*
- * Stabs debugging format
- *
- * Copyright (C) 2003-2007 Michael Urman
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <libyasm.h>
-
-typedef enum {
- N_UNDF = 0x00, /* Undefined */
- N_GSYM = 0x20, /* Global symbol */
- N_FNAME = 0x22, /* Function name (BSD Fortran) */
- N_FUN = 0x24, /* Function name or Text segment variable */
- N_STSYM = 0x26, /* Data segment file-scope variable */
- N_LCSYM = 0x28, /* BSS segment file-scope variable */
- N_MAIN = 0x2a, /* Name of main routine */
- N_ROSYM = 0x2c, /* Variable in .rodata section */
- N_PC = 0x30, /* Global symbol (Pascal) */
- N_SYMS = 0x32, /* Number of symbols (Ultrix V4.0) */
- N_NOMAP = 0x34, /* No DST map */
- N_OBJ = 0x38, /* Object file (Solaris2) */
- N_OPT = 0x3c, /* Debugger options (Solaris2) */
- N_RSYM = 0x40, /* Register variable */
- N_M2C = 0x42, /* Modula-2 compilation unit */
- N_SLINE = 0x44, /* Line numbers in .text segment */
- N_DSLINE = 0x46, /* Line numbers in .data segment */
- N_BSLINE = 0x48, /* Line numbers in .bss segment */
- N_BROWS = 0x48, /* Source code .cb file's path */
- N_DEFD = 0x4a, /* GNU Modula-2 definition module dependency */
- N_FLINE = 0x4c, /* Function start/body/end line numbers (Solaris2) */
- N_EHDECL = 0x50, /* GNU C++ exception variable */
- N_MOD2 = 0x50, /* Modula2 info for imc (Ultrix V4.0) */
- N_CATCH = 0x54, /* GNU C++ catch clause */
- N_SSYM = 0x60, /* Structure or union element */
- N_ENDM = 0x62, /* Last stab for module (Solaris2) */
- N_SO = 0x64, /* Path and name of source files */
- N_LSYM = 0x80, /* Stack variable */
- N_BINCL = 0x84, /* Beginning of include file */
- N_SOL = 0x84, /* Name of include file */
- N_PSYM = 0xa0, /* Parameter variable */
- N_EINCL = 0xa2, /* End of include file */
- N_ENTRY = 0xa4, /* Alternate entry point */
- N_LBRAC = 0xc0, /* Beginning of lexical block */
- N_EXCL = 0xc2, /* Placeholder for a deleted include file */
- N_SCOPE = 0xc4, /* Modula 2 scope info (Sun) */
- N_RBRAC = 0xe0, /* End of lexical block */
- N_BCOMM = 0xe2, /* Begin named common block */
- N_ECOMM = 0xe4, /* End named common block */
- N_ECOML = 0xe8, /* Member of common block */
- N_WITH = 0xea, /* Pascal with statement: type,,0,0,offset (Solaris2) */
- N_NBTEXT = 0xf0, /* Gould non-base registers */
- N_NBDATA = 0xf2, /* Gould non-base registers */
- N_NBBSS = 0xf4, /* Gould non-base registers */
- N_NBSTS = 0xf6, /* Gould non-base registers */
- N_NBLCS = 0xf8 /* Gould non-base registers */
-} stabs_stab_type;
-
-typedef struct yasm_dbgfmt_stabs {
- yasm_dbgfmt_base dbgfmt; /* base structure */
-} yasm_dbgfmt_stabs;
-
-typedef struct {
- unsigned long lastline; /* track line and file of bytecodes */
- unsigned long curline;
- const char *lastfile;
- const char *curfile;
-
- unsigned int stablen; /* size of a stab for current machine */
- unsigned long stabcount; /* count stored stabs; doesn't include first */
-
- yasm_section *stab; /* sections to which stabs, stabstrs appended */
- yasm_section *stabstr;
-
- yasm_bytecode *basebc; /* base bytecode from which to track SLINEs */
-
- yasm_object *object;
- yasm_linemap *linemap;
- yasm_errwarns *errwarns;
-} stabs_info;
-
-typedef struct {
- /*@null@*/ yasm_bytecode *bcstr; /* bytecode in stabstr for string */
- stabs_stab_type type; /* stab type: N_* */
- unsigned char other; /* unused, but stored here anyway */
- unsigned short desc; /* description element of a stab */
- /*@null@*/ yasm_symrec *symvalue; /* value element needing relocation */
- /*@null@*/yasm_bytecode *bcvalue; /* relocated stab's bytecode */
- unsigned long value; /* fallthrough value if above NULL */
-} stabs_stab;
-
-/* Bytecode callback function prototypes */
-
-static void stabs_bc_str_destroy(void *contents);
-static void stabs_bc_str_print(const void *contents, FILE *f, int
- indent_level);
-static int stabs_bc_str_calc_len
- (yasm_bytecode *bc, yasm_bc_add_span_func add_span, void *add_span_data);
-static int stabs_bc_str_tobytes
- (yasm_bytecode *bc, unsigned char **bufp, unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- /*@null@*/ yasm_output_reloc_func output_reloc);
-
-static void stabs_bc_stab_destroy(void *contents);
-static void stabs_bc_stab_print(const void *contents, FILE *f, int
- indent_level);
-static int stabs_bc_stab_calc_len
- (yasm_bytecode *bc, yasm_bc_add_span_func add_span, void *add_span_data);
-static int stabs_bc_stab_tobytes
- (yasm_bytecode *bc, unsigned char **bufp, unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- /*@null@*/ yasm_output_reloc_func output_reloc);
-
-/* Bytecode callback structures */
-
-static const yasm_bytecode_callback stabs_bc_str_callback = {
- stabs_bc_str_destroy,
- stabs_bc_str_print,
- yasm_bc_finalize_common,
- NULL,
- stabs_bc_str_calc_len,
- yasm_bc_expand_common,
- stabs_bc_str_tobytes,
- 0
-};
-
-static const yasm_bytecode_callback stabs_bc_stab_callback = {
- stabs_bc_stab_destroy,
- stabs_bc_stab_print,
- yasm_bc_finalize_common,
- NULL,
- stabs_bc_stab_calc_len,
- yasm_bc_expand_common,
- stabs_bc_stab_tobytes,
- 0
-};
-
-yasm_dbgfmt_module yasm_stabs_LTX_dbgfmt;
-
-
-static /*@null@*/ /*@only@*/ yasm_dbgfmt *
-stabs_dbgfmt_create(yasm_object *object)
-{
- yasm_dbgfmt_stabs *dbgfmt_stabs = yasm_xmalloc(sizeof(yasm_dbgfmt_stabs));
- dbgfmt_stabs->dbgfmt.module = &yasm_stabs_LTX_dbgfmt;
- return (yasm_dbgfmt *)dbgfmt_stabs;
-}
-
-static void
-stabs_dbgfmt_destroy(/*@only@*/ yasm_dbgfmt *dbgfmt)
-{
- yasm_xfree(dbgfmt);
-}
-
-/* Create and add a new strtab-style string bytecode to a section, updating
- * offset on insertion; no optimization necessary */
-/* Copies the string, so you must still free yours as normal */
-static yasm_bytecode *
-stabs_dbgfmt_append_bcstr(yasm_section *sect, const char *str)
-{
- yasm_bytecode *bc;
+/*
+ * Stabs debugging format
+ *
+ * Copyright (C) 2003-2007 Michael Urman
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <libyasm.h>
+
+typedef enum {
+ N_UNDF = 0x00, /* Undefined */
+ N_GSYM = 0x20, /* Global symbol */
+ N_FNAME = 0x22, /* Function name (BSD Fortran) */
+ N_FUN = 0x24, /* Function name or Text segment variable */
+ N_STSYM = 0x26, /* Data segment file-scope variable */
+ N_LCSYM = 0x28, /* BSS segment file-scope variable */
+ N_MAIN = 0x2a, /* Name of main routine */
+ N_ROSYM = 0x2c, /* Variable in .rodata section */
+ N_PC = 0x30, /* Global symbol (Pascal) */
+ N_SYMS = 0x32, /* Number of symbols (Ultrix V4.0) */
+ N_NOMAP = 0x34, /* No DST map */
+ N_OBJ = 0x38, /* Object file (Solaris2) */
+ N_OPT = 0x3c, /* Debugger options (Solaris2) */
+ N_RSYM = 0x40, /* Register variable */
+ N_M2C = 0x42, /* Modula-2 compilation unit */
+ N_SLINE = 0x44, /* Line numbers in .text segment */
+ N_DSLINE = 0x46, /* Line numbers in .data segment */
+ N_BSLINE = 0x48, /* Line numbers in .bss segment */
+ N_BROWS = 0x48, /* Source code .cb file's path */
+ N_DEFD = 0x4a, /* GNU Modula-2 definition module dependency */
+ N_FLINE = 0x4c, /* Function start/body/end line numbers (Solaris2) */
+ N_EHDECL = 0x50, /* GNU C++ exception variable */
+ N_MOD2 = 0x50, /* Modula2 info for imc (Ultrix V4.0) */
+ N_CATCH = 0x54, /* GNU C++ catch clause */
+ N_SSYM = 0x60, /* Structure or union element */
+ N_ENDM = 0x62, /* Last stab for module (Solaris2) */
+ N_SO = 0x64, /* Path and name of source files */
+ N_LSYM = 0x80, /* Stack variable */
+ N_BINCL = 0x84, /* Beginning of include file */
+ N_SOL = 0x84, /* Name of include file */
+ N_PSYM = 0xa0, /* Parameter variable */
+ N_EINCL = 0xa2, /* End of include file */
+ N_ENTRY = 0xa4, /* Alternate entry point */
+ N_LBRAC = 0xc0, /* Beginning of lexical block */
+ N_EXCL = 0xc2, /* Placeholder for a deleted include file */
+ N_SCOPE = 0xc4, /* Modula 2 scope info (Sun) */
+ N_RBRAC = 0xe0, /* End of lexical block */
+ N_BCOMM = 0xe2, /* Begin named common block */
+ N_ECOMM = 0xe4, /* End named common block */
+ N_ECOML = 0xe8, /* Member of common block */
+ N_WITH = 0xea, /* Pascal with statement: type,,0,0,offset (Solaris2) */
+ N_NBTEXT = 0xf0, /* Gould non-base registers */
+ N_NBDATA = 0xf2, /* Gould non-base registers */
+ N_NBBSS = 0xf4, /* Gould non-base registers */
+ N_NBSTS = 0xf6, /* Gould non-base registers */
+ N_NBLCS = 0xf8 /* Gould non-base registers */
+} stabs_stab_type;
+
+typedef struct yasm_dbgfmt_stabs {
+ yasm_dbgfmt_base dbgfmt; /* base structure */
+} yasm_dbgfmt_stabs;
+
+typedef struct {
+ unsigned long lastline; /* track line and file of bytecodes */
+ unsigned long curline;
+ const char *lastfile;
+ const char *curfile;
+
+ unsigned int stablen; /* size of a stab for current machine */
+ unsigned long stabcount; /* count stored stabs; doesn't include first */
+
+ yasm_section *stab; /* sections to which stabs, stabstrs appended */
+ yasm_section *stabstr;
+
+ yasm_bytecode *basebc; /* base bytecode from which to track SLINEs */
+
+ yasm_object *object;
+ yasm_linemap *linemap;
+ yasm_errwarns *errwarns;
+} stabs_info;
+
+typedef struct {
+ /*@null@*/ yasm_bytecode *bcstr; /* bytecode in stabstr for string */
+ stabs_stab_type type; /* stab type: N_* */
+ unsigned char other; /* unused, but stored here anyway */
+ unsigned short desc; /* description element of a stab */
+ /*@null@*/ yasm_symrec *symvalue; /* value element needing relocation */
+ /*@null@*/yasm_bytecode *bcvalue; /* relocated stab's bytecode */
+ unsigned long value; /* fallthrough value if above NULL */
+} stabs_stab;
+
+/* Bytecode callback function prototypes */
+
+static void stabs_bc_str_destroy(void *contents);
+static void stabs_bc_str_print(const void *contents, FILE *f, int
+ indent_level);
+static int stabs_bc_str_calc_len
+ (yasm_bytecode *bc, yasm_bc_add_span_func add_span, void *add_span_data);
+static int stabs_bc_str_tobytes
+ (yasm_bytecode *bc, unsigned char **bufp, unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ /*@null@*/ yasm_output_reloc_func output_reloc);
+
+static void stabs_bc_stab_destroy(void *contents);
+static void stabs_bc_stab_print(const void *contents, FILE *f, int
+ indent_level);
+static int stabs_bc_stab_calc_len
+ (yasm_bytecode *bc, yasm_bc_add_span_func add_span, void *add_span_data);
+static int stabs_bc_stab_tobytes
+ (yasm_bytecode *bc, unsigned char **bufp, unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ /*@null@*/ yasm_output_reloc_func output_reloc);
+
+/* Bytecode callback structures */
+
+static const yasm_bytecode_callback stabs_bc_str_callback = {
+ stabs_bc_str_destroy,
+ stabs_bc_str_print,
+ yasm_bc_finalize_common,
+ NULL,
+ stabs_bc_str_calc_len,
+ yasm_bc_expand_common,
+ stabs_bc_str_tobytes,
+ 0
+};
+
+static const yasm_bytecode_callback stabs_bc_stab_callback = {
+ stabs_bc_stab_destroy,
+ stabs_bc_stab_print,
+ yasm_bc_finalize_common,
+ NULL,
+ stabs_bc_stab_calc_len,
+ yasm_bc_expand_common,
+ stabs_bc_stab_tobytes,
+ 0
+};
+
+yasm_dbgfmt_module yasm_stabs_LTX_dbgfmt;
+
+
+static /*@null@*/ /*@only@*/ yasm_dbgfmt *
+stabs_dbgfmt_create(yasm_object *object)
+{
+ yasm_dbgfmt_stabs *dbgfmt_stabs = yasm_xmalloc(sizeof(yasm_dbgfmt_stabs));
+ dbgfmt_stabs->dbgfmt.module = &yasm_stabs_LTX_dbgfmt;
+ return (yasm_dbgfmt *)dbgfmt_stabs;
+}
+
+static void
+stabs_dbgfmt_destroy(/*@only@*/ yasm_dbgfmt *dbgfmt)
+{
+ yasm_xfree(dbgfmt);
+}
+
+/* Create and add a new strtab-style string bytecode to a section, updating
+ * offset on insertion; no optimization necessary */
+/* Copies the string, so you must still free yours as normal */
+static yasm_bytecode *
+stabs_dbgfmt_append_bcstr(yasm_section *sect, const char *str)
+{
+ yasm_bytecode *bc;
+
+ bc = yasm_bc_create_common(&stabs_bc_str_callback, yasm__xstrdup(str), 0);
+ bc->len = (unsigned long)(strlen(str)+1);
+ bc->offset = yasm_bc_next_offset(yasm_section_bcs_last(sect));
+
+ yasm_section_bcs_append(sect, bc);
+
+ return bc;
+}
+
+/* Create and add a new stab bytecode to a section, updating offset on
+ * insertion; no optimization necessary. */
+/* Requires a string bytecode, or NULL, for its string entry */
+static stabs_stab *
+stabs_dbgfmt_append_stab(stabs_info *info, yasm_section *sect,
+ /*@null@*/ yasm_bytecode *bcstr, stabs_stab_type type,
+ unsigned long desc, /*@null@*/ yasm_symrec *symvalue,
+ /*@null@*/ yasm_bytecode *bcvalue, unsigned long value)
+{
+ yasm_bytecode *bc;
+ stabs_stab *stab = yasm_xmalloc(sizeof(stabs_stab));
+
+ stab->other = 0;
+ stab->bcstr = bcstr;
+ stab->type = type;
+ stab->desc = (unsigned short)desc;
+ stab->symvalue = symvalue;
+ stab->bcvalue = bcvalue;
+ stab->value = value;
+
+ bc = yasm_bc_create_common(&stabs_bc_stab_callback, stab,
+ bcvalue ? bcvalue->line : 0);
+ bc->len = info->stablen;
+ bc->offset = yasm_bc_next_offset(yasm_section_bcs_last(sect));
+
+ yasm_section_bcs_append(sect, bc);
+
+ info->stabcount++;
+ return stab;
+}
+
+static void
+stabs_dbgfmt_generate_n_fun(stabs_info *info, yasm_bytecode *bc)
+{
+ /* check all syms at this bc for potential function syms */
+ int bcsym;
+ for (bcsym=0; bc->symrecs && bc->symrecs[bcsym]; bcsym++)
+ {
+ char *str;
+ yasm_symrec *sym = bc->symrecs[bcsym];
+ const char *name = yasm_symrec_get_name(sym);
+
+ /* best guess algorithm - ignore labels containing a . or $ */
+ if (strchr(name, '.') || strchr(name, '$'))
+ continue;
+
+ /* if a function, update basebc, and output a funcname:F1 stab */
+ info->basebc = bc;
+
+ str = yasm_xmalloc(strlen(name)+4);
+ strcpy(str, name);
+ strcat(str, ":F1");
+ stabs_dbgfmt_append_stab(info, info->stab,
+ stabs_dbgfmt_append_bcstr(info->stabstr, str),
+ N_FUN, 0, sym, info->basebc, 0);
+ yasm_xfree(str);
+ break;
+ }
+}
+
+static int
+stabs_dbgfmt_generate_bcs(yasm_bytecode *bc, void *d)
+{
+ stabs_info *info = (stabs_info *)d;
+ yasm_linemap_lookup(info->linemap, bc->line, &info->curfile,
+ &info->curline);
+
+ /* check for new function */
+ stabs_dbgfmt_generate_n_fun(info, bc);
+
+ if (info->lastfile != info->curfile) {
+ info->lastline = 0; /* new file, so line changes */
+ /*stabs_dbgfmt_append_stab(info, info->stab,
+ stabs_dbgfmt_append_bcstr(info->stabstr, info->curfile),
+ N_SOL, 0, NULL, bc, 0);*/
+ }
+
+ /* output new line stabs if there's a basebc (known function) */
+ if (info->basebc != NULL && info->curline != info->lastline) {
+ info->lastline = bc->line;
+ stabs_dbgfmt_append_stab(info, info->stab, NULL, N_SLINE,
+ info->curline, NULL, NULL,
+ bc->offset - info->basebc->offset);
+ }
+
+ info->lastline = info->curline;
+ info->lastfile = info->curfile;
+
+ return 0;
+}
+
+static int
+stabs_dbgfmt_generate_sections(yasm_section *sect, /*@null@*/ void *d)
+{
+ stabs_info *info = (stabs_info *)d;
+ const char *sectname=yasm_section_get_name(sect);
+
+ /* each section has a different base symbol */
+ info->basebc = NULL;
- bc = yasm_bc_create_common(&stabs_bc_str_callback, yasm__xstrdup(str), 0);
- bc->len = (unsigned long)(strlen(str)+1);
- bc->offset = yasm_bc_next_offset(yasm_section_bcs_last(sect));
-
- yasm_section_bcs_append(sect, bc);
-
- return bc;
-}
-
-/* Create and add a new stab bytecode to a section, updating offset on
- * insertion; no optimization necessary. */
-/* Requires a string bytecode, or NULL, for its string entry */
-static stabs_stab *
-stabs_dbgfmt_append_stab(stabs_info *info, yasm_section *sect,
- /*@null@*/ yasm_bytecode *bcstr, stabs_stab_type type,
- unsigned long desc, /*@null@*/ yasm_symrec *symvalue,
- /*@null@*/ yasm_bytecode *bcvalue, unsigned long value)
-{
- yasm_bytecode *bc;
- stabs_stab *stab = yasm_xmalloc(sizeof(stabs_stab));
-
- stab->other = 0;
- stab->bcstr = bcstr;
- stab->type = type;
- stab->desc = (unsigned short)desc;
- stab->symvalue = symvalue;
- stab->bcvalue = bcvalue;
- stab->value = value;
-
- bc = yasm_bc_create_common(&stabs_bc_stab_callback, stab,
- bcvalue ? bcvalue->line : 0);
- bc->len = info->stablen;
- bc->offset = yasm_bc_next_offset(yasm_section_bcs_last(sect));
-
- yasm_section_bcs_append(sect, bc);
-
- info->stabcount++;
- return stab;
-}
-
-static void
-stabs_dbgfmt_generate_n_fun(stabs_info *info, yasm_bytecode *bc)
-{
- /* check all syms at this bc for potential function syms */
- int bcsym;
- for (bcsym=0; bc->symrecs && bc->symrecs[bcsym]; bcsym++)
- {
- char *str;
- yasm_symrec *sym = bc->symrecs[bcsym];
- const char *name = yasm_symrec_get_name(sym);
-
- /* best guess algorithm - ignore labels containing a . or $ */
- if (strchr(name, '.') || strchr(name, '$'))
- continue;
-
- /* if a function, update basebc, and output a funcname:F1 stab */
- info->basebc = bc;
-
- str = yasm_xmalloc(strlen(name)+4);
- strcpy(str, name);
- strcat(str, ":F1");
- stabs_dbgfmt_append_stab(info, info->stab,
- stabs_dbgfmt_append_bcstr(info->stabstr, str),
- N_FUN, 0, sym, info->basebc, 0);
- yasm_xfree(str);
- break;
- }
-}
-
-static int
-stabs_dbgfmt_generate_bcs(yasm_bytecode *bc, void *d)
-{
- stabs_info *info = (stabs_info *)d;
- yasm_linemap_lookup(info->linemap, bc->line, &info->curfile,
- &info->curline);
-
- /* check for new function */
- stabs_dbgfmt_generate_n_fun(info, bc);
-
- if (info->lastfile != info->curfile) {
- info->lastline = 0; /* new file, so line changes */
- /*stabs_dbgfmt_append_stab(info, info->stab,
- stabs_dbgfmt_append_bcstr(info->stabstr, info->curfile),
- N_SOL, 0, NULL, bc, 0);*/
- }
-
- /* output new line stabs if there's a basebc (known function) */
- if (info->basebc != NULL && info->curline != info->lastline) {
- info->lastline = bc->line;
- stabs_dbgfmt_append_stab(info, info->stab, NULL, N_SLINE,
- info->curline, NULL, NULL,
- bc->offset - info->basebc->offset);
- }
-
- info->lastline = info->curline;
- info->lastfile = info->curfile;
-
- return 0;
-}
-
-static int
-stabs_dbgfmt_generate_sections(yasm_section *sect, /*@null@*/ void *d)
-{
- stabs_info *info = (stabs_info *)d;
- const char *sectname=yasm_section_get_name(sect);
-
- /* each section has a different base symbol */
- info->basebc = NULL;
-
- /* handle first (pseudo) bc separately */
- stabs_dbgfmt_generate_n_fun(d, yasm_section_bcs_first(sect));
-
- yasm_section_bcs_traverse(sect, info->errwarns, d,
- stabs_dbgfmt_generate_bcs);
-
- if (yasm__strcasecmp(sectname, ".text")==0) {
- /* Close out last function by appending a null SO stab after last bc */
- yasm_bytecode *bc = yasm_section_bcs_last(sect);
- yasm_symrec *sym =
- yasm_symtab_define_label(info->object->symtab, ".n_so", bc, 1,
- bc->line);
- stabs_dbgfmt_append_stab(info, info->stab, 0, N_SO, 0, sym, bc, 0);
- }
-
- return 1;
-}
-
-static void
-stabs_dbgfmt_generate(yasm_object *object, yasm_linemap *linemap,
- yasm_errwarns *errwarns)
-{
- stabs_info info;
- int new;
- yasm_bytecode *dbgbc;
- stabs_stab *stab;
- yasm_bytecode *filebc, *laststr, *firstbc;
- yasm_symrec *firstsym;
- yasm_section *stext;
-
- /* Stablen is determined by arch/machine */
- if (yasm__strcasecmp(yasm_arch_keyword(object->arch), "x86") == 0) {
- info.stablen = 12;
- }
- else /* unknown machine; generate nothing */
- return;
-
- info.object = object;
- info.linemap = linemap;
- info.errwarns = errwarns;
- info.lastline = 0;
- info.stabcount = 0;
- info.stab = yasm_object_get_general(object, ".stab", 4, 0, 0, &new, 0);
- if (!new) {
- yasm_bytecode *last = yasm_section_bcs_last(info.stab);
- if (last == NULL) {
- yasm_error_set(YASM_ERROR_GENERAL,
- N_("stabs debugging conflicts with user-defined section .stab"));
- yasm_errwarn_propagate(errwarns,
- yasm_section_bcs_first(info.stab)->line);
- } else {
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("stabs debugging overrides empty section .stab"));
- yasm_errwarn_propagate(errwarns, 0);
- }
- }
-
- info.stabstr =
- yasm_object_get_general(object, ".stabstr", 1, 0, 0, &new, 0);
- if (!new) {
- yasm_bytecode *last = yasm_section_bcs_last(info.stabstr);
- if (last == NULL) {
- yasm_error_set(YASM_ERROR_GENERAL,
- N_("stabs debugging conflicts with user-defined section .stabstr"));
- yasm_errwarn_propagate(errwarns,
- yasm_section_bcs_first(info.stab)->line);
- } else {
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("stabs debugging overrides empty section .stabstr"));
- yasm_errwarn_propagate(errwarns, 0);
- }
- }
-
- /* initial pseudo-stab */
- stab = yasm_xmalloc(sizeof(stabs_stab));
- dbgbc = yasm_bc_create_common(&stabs_bc_stab_callback, stab, 0);
- dbgbc->len = info.stablen;
- dbgbc->offset = 0;
- yasm_section_bcs_append(info.stab, dbgbc);
-
- /* initial strtab bytecodes */
- stabs_dbgfmt_append_bcstr(info.stabstr, "");
- filebc = stabs_dbgfmt_append_bcstr(info.stabstr, object->src_filename);
-
- stext = yasm_object_find_general(object, ".text");
- firstsym = yasm_symtab_use(object->symtab, ".text", 0);
- firstbc = yasm_section_bcs_first(stext);
- /* N_SO file stab */
- stabs_dbgfmt_append_stab(&info, info.stab, filebc, N_SO, 0,
- firstsym, firstbc, 0);
-
- yasm_object_sections_traverse(object, (void *)&info,
- stabs_dbgfmt_generate_sections);
-
- /* fill initial pseudo-stab's fields */
- laststr = yasm_section_bcs_last(info.stabstr);
- if (laststr == NULL)
- yasm_internal_error(".stabstr has no entries");
-
- stab->bcvalue = NULL;
- stab->symvalue = NULL;
- stab->value = yasm_bc_next_offset(laststr);
- stab->bcstr = filebc;
- stab->type = N_UNDF;
- stab->other = 0;
- if (info.stabcount > 0xffff) {
- yasm_warn_set(YASM_WARN_GENERAL, N_("over 65535 stabs"));
- yasm_errwarn_propagate(errwarns, 0);
- stab->desc = 0xffff;
- } else
- stab->desc = (unsigned short)info.stabcount;
-}
-
-static int
-stabs_bc_stab_tobytes(yasm_bytecode *bc, unsigned char **bufp,
- unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- yasm_output_reloc_func output_reloc)
-{
- /* This entire function, essentially the core of rendering stabs to a file,
- * needs to become endian aware. Size appears not to be an issue, as known
- * 64-bit systems use truncated values in 32-bit fields. */
-
- const stabs_stab *stab = (const stabs_stab *)bc->contents;
- unsigned char *buf = *bufp;
-
- YASM_WRITE_32_L(buf, stab->bcstr ? stab->bcstr->offset : 0);
- YASM_WRITE_8(buf, stab->type);
- YASM_WRITE_8(buf, stab->other);
- YASM_WRITE_16_L(buf, stab->desc);
-
- if (stab->symvalue != NULL) {
- bc->offset += 8;
- output_reloc(stab->symvalue, bc, buf, 4, 32, 0, d);
- bc->offset -= 8;
- buf += 4;
- }
- else if (stab->bcvalue != NULL) {
- YASM_WRITE_32_L(buf, stab->bcvalue->offset);
- }
- else {
- YASM_WRITE_32_L(buf, stab->value);
- }
-
- *bufp = buf;
- return 0;
-}
-
-static int
-stabs_bc_str_tobytes(yasm_bytecode *bc, unsigned char **bufp,
- unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- yasm_output_reloc_func output_reloc)
-{
- const char *str = (const char *)bc->contents;
- unsigned char *buf = *bufp;
-
- strcpy((char *)buf, str);
- buf += strlen(str)+1;
-
- *bufp = buf;
- return 0;
-}
-
-static void
-stabs_bc_stab_destroy(void *contents)
-{
- yasm_xfree(contents);
-}
-
-static void
-stabs_bc_str_destroy(void *contents)
-{
- yasm_xfree(contents);
-}
-
-static void
-stabs_bc_stab_print(const void *contents, FILE *f, int indent_level)
-{
- const stabs_stab *stab = (const stabs_stab *)contents;
- const char *str = "";
- fprintf(f, "%*s.stabs \"%s\", 0x%x, 0x%x, 0x%x, 0x%lx\n",
- indent_level, "", str, stab->type, stab->other, stab->desc,
- stab->bcvalue ? stab->bcvalue->offset : stab->value);
-}
-
-static void
-stabs_bc_str_print(const void *contents, FILE *f, int indent_level)
-{
- fprintf(f, "%*s\"%s\"\n", indent_level, "", (const char *)contents);
-}
-
-static int
-stabs_bc_stab_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
- void *add_span_data)
-{
- yasm_internal_error(N_("tried to resolve a stabs stab bytecode"));
- /*@notreached@*/
- return 0;
-}
-
-static int
-stabs_bc_str_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
- void *add_span_data)
-{
- yasm_internal_error(N_("tried to resolve a stabs str bytecode"));
- /*@notreached@*/
- return 0;
-}
-
-/* Define dbgfmt structure -- see dbgfmt.h for details */
-yasm_dbgfmt_module yasm_stabs_LTX_dbgfmt = {
- "Stabs debugging format",
- "stabs",
- NULL, /* no directives */
- stabs_dbgfmt_create,
- stabs_dbgfmt_destroy,
- stabs_dbgfmt_generate
-};
+ /* handle first (pseudo) bc separately */
+ stabs_dbgfmt_generate_n_fun(d, yasm_section_bcs_first(sect));
+
+ yasm_section_bcs_traverse(sect, info->errwarns, d,
+ stabs_dbgfmt_generate_bcs);
+
+ if (yasm__strcasecmp(sectname, ".text")==0) {
+ /* Close out last function by appending a null SO stab after last bc */
+ yasm_bytecode *bc = yasm_section_bcs_last(sect);
+ yasm_symrec *sym =
+ yasm_symtab_define_label(info->object->symtab, ".n_so", bc, 1,
+ bc->line);
+ stabs_dbgfmt_append_stab(info, info->stab, 0, N_SO, 0, sym, bc, 0);
+ }
+
+ return 1;
+}
+
+static void
+stabs_dbgfmt_generate(yasm_object *object, yasm_linemap *linemap,
+ yasm_errwarns *errwarns)
+{
+ stabs_info info;
+ int new;
+ yasm_bytecode *dbgbc;
+ stabs_stab *stab;
+ yasm_bytecode *filebc, *laststr, *firstbc;
+ yasm_symrec *firstsym;
+ yasm_section *stext;
+
+ /* Stablen is determined by arch/machine */
+ if (yasm__strcasecmp(yasm_arch_keyword(object->arch), "x86") == 0) {
+ info.stablen = 12;
+ }
+ else /* unknown machine; generate nothing */
+ return;
+
+ info.object = object;
+ info.linemap = linemap;
+ info.errwarns = errwarns;
+ info.lastline = 0;
+ info.stabcount = 0;
+ info.stab = yasm_object_get_general(object, ".stab", 4, 0, 0, &new, 0);
+ if (!new) {
+ yasm_bytecode *last = yasm_section_bcs_last(info.stab);
+ if (last == NULL) {
+ yasm_error_set(YASM_ERROR_GENERAL,
+ N_("stabs debugging conflicts with user-defined section .stab"));
+ yasm_errwarn_propagate(errwarns,
+ yasm_section_bcs_first(info.stab)->line);
+ } else {
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("stabs debugging overrides empty section .stab"));
+ yasm_errwarn_propagate(errwarns, 0);
+ }
+ }
+
+ info.stabstr =
+ yasm_object_get_general(object, ".stabstr", 1, 0, 0, &new, 0);
+ if (!new) {
+ yasm_bytecode *last = yasm_section_bcs_last(info.stabstr);
+ if (last == NULL) {
+ yasm_error_set(YASM_ERROR_GENERAL,
+ N_("stabs debugging conflicts with user-defined section .stabstr"));
+ yasm_errwarn_propagate(errwarns,
+ yasm_section_bcs_first(info.stab)->line);
+ } else {
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("stabs debugging overrides empty section .stabstr"));
+ yasm_errwarn_propagate(errwarns, 0);
+ }
+ }
+
+ /* initial pseudo-stab */
+ stab = yasm_xmalloc(sizeof(stabs_stab));
+ dbgbc = yasm_bc_create_common(&stabs_bc_stab_callback, stab, 0);
+ dbgbc->len = info.stablen;
+ dbgbc->offset = 0;
+ yasm_section_bcs_append(info.stab, dbgbc);
+
+ /* initial strtab bytecodes */
+ stabs_dbgfmt_append_bcstr(info.stabstr, "");
+ filebc = stabs_dbgfmt_append_bcstr(info.stabstr, object->src_filename);
+
+ stext = yasm_object_find_general(object, ".text");
+ firstsym = yasm_symtab_use(object->symtab, ".text", 0);
+ firstbc = yasm_section_bcs_first(stext);
+ /* N_SO file stab */
+ stabs_dbgfmt_append_stab(&info, info.stab, filebc, N_SO, 0,
+ firstsym, firstbc, 0);
+
+ yasm_object_sections_traverse(object, (void *)&info,
+ stabs_dbgfmt_generate_sections);
+
+ /* fill initial pseudo-stab's fields */
+ laststr = yasm_section_bcs_last(info.stabstr);
+ if (laststr == NULL)
+ yasm_internal_error(".stabstr has no entries");
+
+ stab->bcvalue = NULL;
+ stab->symvalue = NULL;
+ stab->value = yasm_bc_next_offset(laststr);
+ stab->bcstr = filebc;
+ stab->type = N_UNDF;
+ stab->other = 0;
+ if (info.stabcount > 0xffff) {
+ yasm_warn_set(YASM_WARN_GENERAL, N_("over 65535 stabs"));
+ yasm_errwarn_propagate(errwarns, 0);
+ stab->desc = 0xffff;
+ } else
+ stab->desc = (unsigned short)info.stabcount;
+}
+
+static int
+stabs_bc_stab_tobytes(yasm_bytecode *bc, unsigned char **bufp,
+ unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ yasm_output_reloc_func output_reloc)
+{
+ /* This entire function, essentially the core of rendering stabs to a file,
+ * needs to become endian aware. Size appears not to be an issue, as known
+ * 64-bit systems use truncated values in 32-bit fields. */
+
+ const stabs_stab *stab = (const stabs_stab *)bc->contents;
+ unsigned char *buf = *bufp;
+
+ YASM_WRITE_32_L(buf, stab->bcstr ? stab->bcstr->offset : 0);
+ YASM_WRITE_8(buf, stab->type);
+ YASM_WRITE_8(buf, stab->other);
+ YASM_WRITE_16_L(buf, stab->desc);
+
+ if (stab->symvalue != NULL) {
+ bc->offset += 8;
+ output_reloc(stab->symvalue, bc, buf, 4, 32, 0, d);
+ bc->offset -= 8;
+ buf += 4;
+ }
+ else if (stab->bcvalue != NULL) {
+ YASM_WRITE_32_L(buf, stab->bcvalue->offset);
+ }
+ else {
+ YASM_WRITE_32_L(buf, stab->value);
+ }
+
+ *bufp = buf;
+ return 0;
+}
+
+static int
+stabs_bc_str_tobytes(yasm_bytecode *bc, unsigned char **bufp,
+ unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ yasm_output_reloc_func output_reloc)
+{
+ const char *str = (const char *)bc->contents;
+ unsigned char *buf = *bufp;
+
+ strcpy((char *)buf, str);
+ buf += strlen(str)+1;
+
+ *bufp = buf;
+ return 0;
+}
+
+static void
+stabs_bc_stab_destroy(void *contents)
+{
+ yasm_xfree(contents);
+}
+
+static void
+stabs_bc_str_destroy(void *contents)
+{
+ yasm_xfree(contents);
+}
+
+static void
+stabs_bc_stab_print(const void *contents, FILE *f, int indent_level)
+{
+ const stabs_stab *stab = (const stabs_stab *)contents;
+ const char *str = "";
+ fprintf(f, "%*s.stabs \"%s\", 0x%x, 0x%x, 0x%x, 0x%lx\n",
+ indent_level, "", str, stab->type, stab->other, stab->desc,
+ stab->bcvalue ? stab->bcvalue->offset : stab->value);
+}
+
+static void
+stabs_bc_str_print(const void *contents, FILE *f, int indent_level)
+{
+ fprintf(f, "%*s\"%s\"\n", indent_level, "", (const char *)contents);
+}
+
+static int
+stabs_bc_stab_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
+ void *add_span_data)
+{
+ yasm_internal_error(N_("tried to resolve a stabs stab bytecode"));
+ /*@notreached@*/
+ return 0;
+}
+
+static int
+stabs_bc_str_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
+ void *add_span_data)
+{
+ yasm_internal_error(N_("tried to resolve a stabs str bytecode"));
+ /*@notreached@*/
+ return 0;
+}
+
+/* Define dbgfmt structure -- see dbgfmt.h for details */
+yasm_dbgfmt_module yasm_stabs_LTX_dbgfmt = {
+ "Stabs debugging format",
+ "stabs",
+ NULL, /* no directives */
+ stabs_dbgfmt_create,
+ stabs_dbgfmt_destroy,
+ stabs_dbgfmt_generate
+};
diff --git a/contrib/tools/yasm/modules/gas-token.c b/contrib/tools/yasm/modules/gas-token.c
index 66410edb64..454287b6d8 100644
--- a/contrib/tools/yasm/modules/gas-token.c
+++ b/contrib/tools/yasm/modules/gas-token.c
@@ -1,1407 +1,1407 @@
-/* Generated by re2c
- */
-/*
- * GAS-compatible re2c lexer
- *
- * Copyright (C) 2005-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the author nor the names of other contributors
- * may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <libyasm.h>
-
-#include "modules/parsers/gas/gas-parser.h"
-
-
-#define BSIZE 8192
-
-#define YYCURSOR cursor
-#define YYLIMIT (s->lim)
-#define YYMARKER (s->ptr)
-#define YYFILL(n) {cursor = fill(parser_gas, cursor);}
-
-#define RETURN(i) do {s->cur = cursor; parser_gas->tokch = s->tok[0]; \
- return i;} while (0)
-
-#define SCANINIT() {s->tok = cursor;}
-
-#define TOK ((char *)s->tok)
-#define TOKLEN (size_t)(cursor-s->tok)
-
-/* Bridge function to convert byte-oriented parser with line-oriented
- * preprocessor.
- */
-static size_t
-preproc_input(yasm_parser_gas *parser_gas, /*@out@*/ YYCTYPE *buf,
- size_t max_size)
-{
- size_t tot=0;
- while (max_size > 0) {
- size_t n;
-
- if (!parser_gas->line) {
- parser_gas->line = yasm_preproc_get_line(parser_gas->preproc);
- if (!parser_gas->line)
- return tot; /* EOF */
- parser_gas->linepos = parser_gas->line;
- parser_gas->lineleft = strlen(parser_gas->line) + 1;
- parser_gas->line[parser_gas->lineleft-1] = '\n';
- }
-
- n = parser_gas->lineleft<max_size ? parser_gas->lineleft : max_size;
- strncpy((char *)buf+tot, parser_gas->linepos, n);
-
- if (n == parser_gas->lineleft) {
- yasm_xfree(parser_gas->line);
- parser_gas->line = NULL;
- } else {
- parser_gas->lineleft -= n;
- parser_gas->linepos += n;
- }
-
- tot += n;
- max_size -= n;
- }
- return tot;
-}
-#if 0
-static size_t
-fill_input(void *d, unsigned char *buf, size_t max)
-{
- return yasm_preproc_input((yasm_preproc *)d, (char *)buf, max);
-}
-#endif
-static YYCTYPE *
-fill(yasm_parser_gas *parser_gas, YYCTYPE *cursor)
-{
- yasm_scanner *s = &parser_gas->s;
- int first = 0;
- if(!s->eof){
- size_t cnt = s->tok - s->bot;
- if(cnt){
- memmove(s->bot, s->tok, (size_t)(s->lim - s->tok));
- s->tok = s->bot;
- s->ptr -= cnt;
- cursor -= cnt;
- s->lim -= cnt;
- }
- if (!s->bot)
- first = 1;
- if((s->top - s->lim) < BSIZE){
- YYCTYPE *buf = yasm_xmalloc((size_t)(s->lim - s->bot) + BSIZE);
- memcpy(buf, s->tok, (size_t)(s->lim - s->tok));
- s->tok = buf;
- s->ptr = &buf[s->ptr - s->bot];
- cursor = &buf[cursor - s->bot];
- s->lim = &buf[s->lim - s->bot];
- s->top = &s->lim[BSIZE];
- if (s->bot)
- yasm_xfree(s->bot);
- s->bot = buf;
- }
- if((cnt = preproc_input(parser_gas, s->lim, BSIZE)) == 0) {
- s->eof = &s->lim[cnt]; *s->eof++ = '\n';
- }
- s->lim += cnt;
- if (first && parser_gas->save_input) {
- int i;
- YYCTYPE *saveline;
- parser_gas->save_last ^= 1;
- saveline = parser_gas->save_line[parser_gas->save_last];
- /* save next line into cur_line */
- for (i=0; i<79 && &s->tok[i] < s->lim && s->tok[i] != '\n'; i++)
- saveline[i] = s->tok[i];
- saveline[i] = '\0';
- }
- }
- return cursor;
-}
-
-static YYCTYPE *
-save_line(yasm_parser_gas *parser_gas, YYCTYPE *cursor)
-{
- yasm_scanner *s = &parser_gas->s;
- int i = 0;
- YYCTYPE *saveline;
-
- parser_gas->save_last ^= 1;
- saveline = parser_gas->save_line[parser_gas->save_last];
-
- /* save next line into cur_line */
- if ((YYLIMIT - YYCURSOR) < 80)
- YYFILL(80);
- for (i=0; i<79 && &cursor[i] < s->lim && cursor[i] != '\n'; i++)
- saveline[i] = cursor[i];
- saveline[i] = '\0';
- return cursor;
-}
-
-/* starting size of string buffer */
-#define STRBUF_ALLOC_SIZE 128
-
-/* string buffer used when parsing strings/character constants */
-static YYCTYPE *strbuf = NULL;
-
-/* length of strbuf (including terminating NULL character) */
-static size_t strbuf_size = 0;
-
-static void
-strbuf_append(size_t count, YYCTYPE *cursor, yasm_scanner *s, int ch)
-{
- if (count >= strbuf_size) {
- strbuf = yasm_xrealloc(strbuf, strbuf_size + STRBUF_ALLOC_SIZE);
- strbuf_size += STRBUF_ALLOC_SIZE;
- }
- strbuf[count] = ch;
-}
-
-
-
-
-int
-gas_parser_lex(YYSTYPE *lvalp, yasm_parser_gas *parser_gas)
-{
- yasm_scanner *s = &parser_gas->s;
- YYCTYPE *cursor = s->cur;
- size_t count;
- YYCTYPE savech;
-
- /* Handle one token of lookahead */
- if (parser_gas->peek_token != NONE) {
- int tok = parser_gas->peek_token;
- *lvalp = parser_gas->peek_tokval; /* structure copy */
- parser_gas->tokch = parser_gas->peek_tokch;
- parser_gas->peek_token = NONE;
- return tok;
- }
-
- /* Catch EOF */
- if (s->eof && cursor == s->eof)
- return 0;
-
- /* Jump to proper "exclusive" states */
- switch (parser_gas->state) {
- case COMMENT:
- goto comment;
- case SECTION_DIRECTIVE:
- goto section_directive;
- case NASM_FILENAME:
- goto nasm_filename;
- default:
- break;
- }
-
-scan:
- SCANINIT();
-
- {
- static unsigned char yybm[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 12, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 12, 0,
- 254, 254, 126, 126, 126, 126, 126, 126,
- 94, 94, 0, 0, 0, 0, 0, 0,
- 8, 78, 78, 78, 78, 78, 78, 14,
- 14, 14, 14, 14, 14, 14, 14, 14,
- 14, 14, 14, 14, 14, 14, 14, 14,
- 14, 14, 14, 0, 0, 0, 0, 12,
- 0, 78, 78, 78, 78, 78, 78, 14,
- 14, 14, 14, 14, 14, 14, 14, 14,
- 14, 14, 14, 14, 14, 14, 14, 14,
- 14, 14, 14, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- };
-
-{
- YYCTYPE yych;
- unsigned int yyaccept;
- goto yy0;
- ++YYCURSOR;
-yy0:
- if((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
- yych = *YYCURSOR;
- if(yych <= '/'){
- if(yych <= '#'){
- if(yych <= '\r'){
- if(yych <= '\t'){
- if(yych <= '\b') goto yy30;
- goto yy26;
- } else {
- if(yych <= '\n') goto yy28;
- if(yych <= '\f') goto yy30;
- goto yy26;
- }
- } else {
- if(yych <= ' '){
- if(yych <= '\037') goto yy30;
- goto yy26;
- } else {
- if(yych <= '!') goto yy17;
- if(yych <= '"') goto yy11;
- goto yy24;
- }
- }
- } else {
- if(yych <= '*'){
- if(yych <= '%'){
- if(yych <= '$') goto yy17;
- goto yy22;
- } else {
- if(yych == '\'') goto yy9;
- goto yy17;
- }
- } else {
- if(yych <= ','){
- if(yych <= '+') goto yy5;
- goto yy17;
- } else {
- if(yych <= '-') goto yy5;
- if(yych <= '.') goto yy7;
- goto yy18;
- }
- }
- }
- } else {
- if(yych <= 'Z'){
- if(yych <= '<'){
- if(yych <= '9'){
- if(yych >= '1') goto yy4;
- goto yy2;
- } else {
- if(yych <= ':') goto yy17;
- if(yych <= ';') goto yy19;
- goto yy13;
- }
- } else {
- if(yych <= '>'){
- if(yych <= '=') goto yy17;
- goto yy15;
- } else {
- if(yych <= '?') goto yy30;
- if(yych <= '@') goto yy17;
- goto yy21;
- }
- }
- } else {
- if(yych <= 'z'){
- if(yych <= '^'){
- if(yych <= ']') goto yy30;
- goto yy17;
- } else {
- if(yych == '`') goto yy30;
- goto yy21;
- }
- } else {
- if(yych <= '|'){
- if(yych <= '{') goto yy30;
- goto yy17;
- } else {
- if(yych == '~') goto yy17;
- goto yy30;
- }
- }
- }
- }
-yy2: yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'T'){
- if(yych <= 'A'){
- if(yych <= '/'){
- if(yych == '.') goto yy90;
- goto yy3;
- } else {
- if(yych <= '9') goto yy90;
- if(yych <= ':') goto yy81;
- goto yy3;
- }
- } else {
- if(yych <= 'E'){
- if(yych <= 'B') goto yy85;
- if(yych >= 'D') goto yy88;
- goto yy3;
- } else {
- if(yych <= 'F') goto yy86;
- if(yych >= 'T') goto yy88;
- goto yy3;
- }
- }
- } else {
- if(yych <= 'e'){
- if(yych <= 'a'){
- if(yych == 'X') goto yy92;
- goto yy3;
- } else {
- if(yych <= 'b') goto yy85;
- if(yych >= 'd') goto yy88;
- goto yy3;
- }
- } else {
- if(yych <= 't'){
- if(yych <= 'f') goto yy86;
- if(yych >= 't') goto yy88;
- goto yy3;
- } else {
- if(yych == 'x') goto yy92;
- goto yy3;
- }
- }
- }
-yy3:
-{
- savech = s->tok[TOKLEN];
- s->tok[TOKLEN] = '\0';
- lvalp->intn = yasm_intnum_create_dec(TOK);
- s->tok[TOKLEN] = savech;
- RETURN(INTNUM);
- }
-yy4: yych = *++YYCURSOR;
- if(yych <= 'E'){
- if(yych <= ':'){
- if(yych <= '9') goto yy84;
- goto yy81;
- } else {
- if(yych == 'B') goto yy77;
- goto yy84;
- }
- } else {
- if(yych <= 'b'){
- if(yych <= 'F') goto yy79;
- if(yych <= 'a') goto yy84;
- goto yy77;
- } else {
- if(yych == 'f') goto yy79;
- goto yy84;
- }
- }
-yy5: yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '.') goto yy61;
- if(yych <= '/') goto yy6;
- if(yych <= '9') goto yy59;
- goto yy6;
-yy6:
-{ RETURN(s->tok[0]); }
-yy7: yych = *++YYCURSOR;
- if(yybm[0+yych] & 16) {
- goto yy49;
- }
- goto yy37;
-yy8:
-{
- lvalp->str.contents = yasm__xstrndup(TOK, TOKLEN);
- lvalp->str.len = TOKLEN;
- RETURN(ID);
- }
-yy9: yych = *++YYCURSOR;
- goto yy10;
-yy10:
-{
- goto charconst;
- }
-yy11: yych = *++YYCURSOR;
- goto yy12;
-yy12:
-{
- goto stringconst;
- }
-yy13: yych = *++YYCURSOR;
- if(yych == '<') goto yy47;
- goto yy14;
-yy14:
-{ RETURN(LEFT_OP); }
-yy15: yych = *++YYCURSOR;
- if(yych == '>') goto yy45;
- goto yy16;
-yy16:
-{ RETURN(RIGHT_OP); }
-yy17: yych = *++YYCURSOR;
- goto yy6;
-yy18: yych = *++YYCURSOR;
- if(yych == '*') goto yy43;
- if(yych == '/') goto yy41;
- goto yy6;
-yy19: yych = *++YYCURSOR;
- goto yy20;
-yy20:
-{
- parser_gas->state = INITIAL;
- RETURN(s->tok[0]);
- }
-yy21: yych = *++YYCURSOR;
- goto yy37;
-yy22: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy33;
- }
- goto yy23;
-yy23:
-{
- yasm_warn_set(YASM_WARN_UNREC_CHAR,
- N_("ignoring unrecognized character `%s'"),
- yasm__conv_unprint(s->tok[0]));
- goto scan;
- }
-yy24: yych = *++YYCURSOR;
- goto yy25;
-yy25:
-{
- if (parser_gas->is_cpp_preproc)
- {
- RETURN(CPP_LINE_MARKER);
- } else
- goto line_comment;
- }
-yy26: yych = *++YYCURSOR;
- goto yy32;
-yy27:
-{ goto scan; }
-yy28: yych = *++YYCURSOR;
- goto yy29;
-yy29:
-{
- if (parser_gas->save_input)
- cursor = save_line(parser_gas, cursor);
- parser_gas->state = INITIAL;
- RETURN(s->tok[0]);
- }
-yy30: yych = *++YYCURSOR;
- goto yy23;
-yy31: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy32;
-yy32: if(yybm[0+yych] & 1) {
- goto yy31;
- }
- goto yy27;
-yy33: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy34;
-yy34: if(yybm[0+yych] & 2) {
- goto yy33;
- }
- goto yy35;
-yy35:
-{
- savech = s->tok[TOKLEN];
- s->tok[TOKLEN] = '\0';
- if (parser_gas->is_nasm_preproc && strcmp(TOK+1, "line") == 0) {
- s->tok[TOKLEN] = savech;
- RETURN(NASM_LINE_MARKER);
- }
-
- switch (yasm_arch_parse_check_regtmod
- (p_object->arch, TOK+1, TOKLEN-1, &lvalp->arch_data)) {
- case YASM_ARCH_REG:
- s->tok[TOKLEN] = savech;
- RETURN(REG);
- case YASM_ARCH_REGGROUP:
- s->tok[TOKLEN] = savech;
- RETURN(REGGROUP);
- case YASM_ARCH_SEGREG:
- s->tok[TOKLEN] = savech;
- RETURN(SEGREG);
- default:
- break;
- }
- yasm_error_set(YASM_ERROR_GENERAL,
- N_("Unrecognized register name `%s'"), s->tok);
- s->tok[TOKLEN] = savech;
- lvalp->arch_data = 0;
- RETURN(REG);
- }
-yy36: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy37;
-yy37: if(yybm[0+yych] & 4) {
- goto yy36;
- }
- if(yych != '@') goto yy8;
- goto yy38;
-yy38: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy39;
-yy39: if(yybm[0+yych] & 8) {
- goto yy38;
- }
- goto yy40;
-yy40:
-{
- /* if @ not part of ID, move the scanner cursor to the first @ */
- if (!((yasm_objfmt_base *)p_object->objfmt)->module->id_at_ok)
- cursor = (unsigned char *)strchr(TOK, '@');
- lvalp->str.contents = yasm__xstrndup(TOK, TOKLEN);
- lvalp->str.len = TOKLEN;
- RETURN(ID);
- }
-yy41: yych = *++YYCURSOR;
- goto yy42;
-yy42:
-{ goto line_comment; }
-yy43: yych = *++YYCURSOR;
- goto yy44;
-yy44:
-{ parser_gas->state = COMMENT; goto comment; }
-yy45: yych = *++YYCURSOR;
- goto yy46;
-yy46:
-{ RETURN(RIGHT_OP); }
-yy47: yych = *++YYCURSOR;
- goto yy48;
-yy48:
-{ RETURN(LEFT_OP); }
-yy49: ++YYCURSOR;
- if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
- yych = *YYCURSOR;
- goto yy50;
-yy50: if(yybm[0+yych] & 16) {
- goto yy49;
- }
- if(yych <= 'E'){
- if(yych <= '.'){
- if(yych == '$') goto yy36;
- if(yych >= '.') goto yy36;
- goto yy51;
- } else {
- if(yych <= '?') goto yy51;
- if(yych <= '@') goto yy38;
- if(yych <= 'D') goto yy36;
- goto yy52;
- }
- } else {
- if(yych <= '`'){
- if(yych <= 'Z') goto yy36;
- if(yych == '_') goto yy36;
- goto yy51;
- } else {
- if(yych == 'e') goto yy52;
- if(yych <= 'z') goto yy36;
- goto yy51;
- }
- }
-yy51:
-{
- savech = s->tok[TOKLEN];
- s->tok[TOKLEN] = '\0';
- lvalp->flt = yasm_floatnum_create(TOK);
- s->tok[TOKLEN] = savech;
- RETURN(FLTNUM);
- }
-yy52: yyaccept = 2;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= ','){
- if(yych == '+') goto yy55;
- goto yy37;
- } else {
- if(yych <= '-') goto yy55;
- if(yych <= '/') goto yy37;
- if(yych >= ':') goto yy37;
- goto yy53;
- }
-yy53: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy54;
-yy54: if(yych <= '?'){
- if(yych <= '-'){
- if(yych == '$') goto yy36;
- goto yy51;
- } else {
- if(yych <= '.') goto yy36;
- if(yych <= '/') goto yy51;
- if(yych <= '9') goto yy53;
- goto yy51;
- }
- } else {
- if(yych <= '^'){
- if(yych <= '@') goto yy38;
- if(yych <= 'Z') goto yy36;
- goto yy51;
- } else {
- if(yych == '`') goto yy51;
- if(yych <= 'z') goto yy36;
- goto yy51;
- }
- }
-yy55: yych = *++YYCURSOR;
- if(yych <= '/') goto yy56;
- if(yych <= '9') goto yy57;
- goto yy56;
-yy56: YYCURSOR = YYMARKER;
- switch(yyaccept){
- case 0: goto yy3;
- case 6: goto yy91;
- case 3: goto yy51;
- case 4: goto yy66;
- case 5: goto yy87;
- case 1: goto yy6;
- case 2: goto yy8;
- }
-yy57: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy58;
-yy58: if(yych <= '/') goto yy51;
- if(yych <= '9') goto yy57;
- goto yy51;
-yy59: ++YYCURSOR;
- if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
- yych = *YYCURSOR;
- goto yy60;
-yy60: if(yych == '.') goto yy65;
- if(yych <= '/') goto yy56;
- if(yych <= '9') goto yy59;
- goto yy56;
-yy61: yych = *++YYCURSOR;
- if(yych <= '/') goto yy56;
- if(yych >= ':') goto yy56;
- goto yy62;
-yy62: yyaccept = 3;
- YYMARKER = ++YYCURSOR;
- if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
- yych = *YYCURSOR;
- goto yy63;
-yy63: if(yych <= 'D'){
- if(yych <= '/') goto yy51;
- if(yych <= '9') goto yy62;
- goto yy51;
- } else {
- if(yych <= 'E') goto yy64;
- if(yych != 'e') goto yy51;
- goto yy64;
- }
-yy64: yych = *++YYCURSOR;
- if(yych <= ','){
- if(yych == '+') goto yy55;
- goto yy56;
- } else {
- if(yych <= '-') goto yy55;
- if(yych <= '/') goto yy56;
- if(yych <= '9') goto yy57;
- goto yy56;
- }
-yy65: yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'D'){
- if(yych <= '/') goto yy66;
- if(yych <= '9') goto yy67;
- goto yy66;
- } else {
- if(yych <= 'E') goto yy69;
- if(yych == 'e') goto yy69;
- goto yy66;
- }
-yy66:
-{
- savech = s->tok[TOKLEN];
- s->tok[TOKLEN] = '\0';
- lvalp->flt = yasm_floatnum_create(TOK);
- s->tok[TOKLEN] = savech;
- RETURN(FLTNUM);
- }
-yy67: yyaccept = 3;
- YYMARKER = ++YYCURSOR;
- if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
- yych = *YYCURSOR;
- goto yy68;
-yy68: if(yych <= 'D'){
- if(yych <= '/') goto yy51;
- if(yych <= '9') goto yy67;
- goto yy51;
- } else {
- if(yych <= 'E') goto yy73;
- if(yych == 'e') goto yy73;
- goto yy51;
- }
-yy69: yych = *++YYCURSOR;
- if(yych <= ','){
- if(yych != '+') goto yy56;
- goto yy70;
- } else {
- if(yych <= '-') goto yy70;
- if(yych <= '/') goto yy56;
- if(yych <= '9') goto yy71;
- goto yy56;
- }
-yy70: yych = *++YYCURSOR;
- if(yych <= '/') goto yy56;
- if(yych >= ':') goto yy56;
- goto yy71;
-yy71: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy72;
-yy72: if(yych <= '/') goto yy66;
- if(yych <= '9') goto yy71;
- goto yy66;
-yy73: yych = *++YYCURSOR;
- if(yych <= ','){
- if(yych != '+') goto yy56;
- goto yy74;
- } else {
- if(yych <= '-') goto yy74;
- if(yych <= '/') goto yy56;
- if(yych <= '9') goto yy75;
- goto yy56;
- }
-yy74: yych = *++YYCURSOR;
- if(yych <= '/') goto yy56;
- if(yych >= ':') goto yy56;
- goto yy75;
-yy75: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy76;
-yy76: if(yych <= '/') goto yy51;
- if(yych <= '9') goto yy75;
- goto yy51;
-yy77: yych = *++YYCURSOR;
- goto yy78;
-yy78:
-{
- /* build local label name */
- lvalp->str.contents = yasm_xmalloc(30);
- lvalp->str.len =
- sprintf(lvalp->str.contents, "L%c\001%lu", s->tok[0],
- parser_gas->local[s->tok[0]-'0']);
- RETURN(ID);
- }
-yy79: yych = *++YYCURSOR;
- goto yy80;
-yy80:
-{
- /* build local label name */
- lvalp->str.contents = yasm_xmalloc(30);
- lvalp->str.len =
- sprintf(lvalp->str.contents, "L%c\001%lu", s->tok[0],
- parser_gas->local[s->tok[0]-'0']+1);
- RETURN(ID);
- }
-yy81: yych = *++YYCURSOR;
- goto yy82;
-yy82:
-{
- /* increment label index */
- parser_gas->local[s->tok[0]-'0']++;
- /* build local label name */
- lvalp->str.contents = yasm_xmalloc(30);
- lvalp->str.len =
- sprintf(lvalp->str.contents, "L%c\001%lu", s->tok[0],
- parser_gas->local[s->tok[0]-'0']);
- RETURN(LABEL);
- }
-yy83: ++YYCURSOR;
- if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
- yych = *YYCURSOR;
- goto yy84;
-yy84: if(yych == '.') goto yy65;
- if(yych <= '/') goto yy3;
- if(yych <= '9') goto yy83;
- goto yy3;
-yy85: yych = *++YYCURSOR;
- if(yybm[0+yych] & 128) {
- goto yy104;
- }
- goto yy78;
-yy86: yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '+') goto yy96;
- if(yych == '-') goto yy96;
- goto yy97;
-yy87:
-{
- savech = s->tok[TOKLEN];
- s->tok[TOKLEN] = '\0';
- lvalp->flt = yasm_floatnum_create(TOK+2);
- s->tok[TOKLEN] = savech;
- RETURN(FLTNUM);
- }
-yy88: yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '+') goto yy96;
- if(yych == '-') goto yy96;
- goto yy97;
-yy89: yyaccept = 6;
- YYMARKER = ++YYCURSOR;
- if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
- yych = *YYCURSOR;
- goto yy90;
-yy90: if(yybm[0+yych] & 32) {
- goto yy89;
- }
- if(yych == '.') goto yy65;
- if(yych <= '/') goto yy91;
- if(yych <= '9') goto yy59;
- goto yy91;
-yy91:
-{
- savech = s->tok[TOKLEN];
- s->tok[TOKLEN] = '\0';
- lvalp->intn = yasm_intnum_create_oct(TOK);
- s->tok[TOKLEN] = savech;
- RETURN(INTNUM);
- }
-yy92: yych = *++YYCURSOR;
- if(yybm[0+yych] & 64) {
- goto yy93;
- }
- goto yy56;
-yy93: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy94;
-yy94: if(yybm[0+yych] & 64) {
- goto yy93;
- }
- goto yy95;
-yy95:
-{
- savech = s->tok[TOKLEN];
- s->tok[TOKLEN] = '\0';
- /* skip 0 and x */
- lvalp->intn = yasm_intnum_create_hex(TOK+2);
- s->tok[TOKLEN] = savech;
- RETURN(INTNUM);
- }
-yy96: yyaccept = 5;
- YYMARKER = ++YYCURSOR;
- if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
- yych = *YYCURSOR;
- goto yy97;
-yy97: if(yych <= '9'){
- if(yych == '.') goto yy98;
- if(yych <= '/') goto yy87;
- goto yy96;
- } else {
- if(yych <= 'E'){
- if(yych <= 'D') goto yy87;
- goto yy100;
- } else {
- if(yych == 'e') goto yy100;
- goto yy87;
- }
- }
-yy98: yyaccept = 5;
- YYMARKER = ++YYCURSOR;
- if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
- yych = *YYCURSOR;
- goto yy99;
-yy99: if(yych <= 'D'){
- if(yych <= '/') goto yy87;
- if(yych <= '9') goto yy98;
- goto yy87;
- } else {
- if(yych <= 'E') goto yy100;
- if(yych != 'e') goto yy87;
- goto yy100;
- }
-yy100: yych = *++YYCURSOR;
- if(yych <= ','){
- if(yych != '+') goto yy56;
- goto yy101;
- } else {
- if(yych <= '-') goto yy101;
- if(yych <= '/') goto yy56;
- if(yych <= '9') goto yy102;
- goto yy56;
- }
-yy101: yych = *++YYCURSOR;
- if(yych <= '/') goto yy56;
- if(yych >= ':') goto yy56;
- goto yy102;
-yy102: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy103;
-yy103: if(yych <= '/') goto yy87;
- if(yych <= '9') goto yy102;
- goto yy87;
-yy104: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy105;
-yy105: if(yybm[0+yych] & 128) {
- goto yy104;
- }
- goto yy106;
-yy106:
-{
- savech = s->tok[TOKLEN];
- s->tok[TOKLEN] = '\0';
- lvalp->intn = yasm_intnum_create_bin(TOK+2);
- s->tok[TOKLEN] = savech;
- RETURN(INTNUM);
- }
-}
-}
-
-
- /* C-style comment; nesting not supported */
-comment:
- SCANINIT();
-
- {
-
-{
- YYCTYPE yych;
- goto yy107;
- ++YYCURSOR;
-yy107:
- if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
- yych = *YYCURSOR;
- if(yych == '\n') goto yy111;
- if(yych != '*') goto yy113;
- goto yy109;
-yy109: yych = *++YYCURSOR;
- if(yych == '/') goto yy114;
- goto yy110;
-yy110:
-{
- if (cursor == s->eof)
- return 0;
- goto comment;
- }
-yy111: yych = *++YYCURSOR;
- goto yy112;
-yy112:
-{
- if (parser_gas->save_input)
- cursor = save_line(parser_gas, cursor);
- RETURN(s->tok[0]);
- }
-yy113: yych = *++YYCURSOR;
- goto yy110;
-yy114: yych = *++YYCURSOR;
- goto yy115;
-yy115:
-{ parser_gas->state = INITIAL; goto scan; }
-}
-}
-
-
- /* Single line comment. */
-line_comment:
- {
- static unsigned char yybm[] = {
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 0, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- };
-
-{
- YYCTYPE yych;
- goto yy116;
-yy117: ++YYCURSOR;
-yy116:
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy118;
-yy118: if(yybm[0+yych] & 128) {
- goto yy117;
- }
- goto yy119;
-yy119:
-{ goto scan; }
-}
-}
-
-
- /* .section directive (the section name portion thereof) */
-section_directive:
- SCANINIT();
-
- {
- static unsigned char yybm[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 64, 0, 0, 0, 64, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 64, 0, 0, 0, 128, 0, 0, 0,
- 0, 0, 0, 0, 0, 128, 128, 0,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 0, 0, 0, 0, 0, 0,
- 0, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 0, 0, 0, 0, 128,
- 0, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- };
-
-{
- YYCTYPE yych;
- goto yy120;
- ++YYCURSOR;
-yy120:
- if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
- yych = *YYCURSOR;
- if(yych <= '$'){
- if(yych <= '\r'){
- if(yych <= '\t'){
- if(yych <= '\b') goto yy132;
- goto yy126;
- } else {
- if(yych <= '\n') goto yy130;
- if(yych <= '\f') goto yy132;
- goto yy126;
- }
- } else {
- if(yych <= '!'){
- if(yych == ' ') goto yy126;
- goto yy132;
- } else {
- if(yych <= '"') goto yy124;
- if(yych <= '#') goto yy132;
- goto yy122;
- }
- }
- } else {
- if(yych <= '@'){
- if(yych <= '.'){
- if(yych <= '+') goto yy132;
- if(yych <= ',') goto yy128;
- goto yy122;
- } else {
- if(yych <= '/') goto yy132;
- if(yych >= ':') goto yy132;
- goto yy122;
- }
- } else {
- if(yych <= '_'){
- if(yych <= 'Z') goto yy122;
- if(yych <= '^') goto yy132;
- goto yy122;
- } else {
- if(yych <= '`') goto yy132;
- if(yych >= '{') goto yy132;
- goto yy122;
- }
- }
- }
-yy122: yych = *++YYCURSOR;
- goto yy137;
-yy123:
-{
- lvalp->str.contents = yasm__xstrndup(TOK, TOKLEN);
- lvalp->str.len = TOKLEN;
- parser_gas->state = INITIAL;
- RETURN(ID);
- }
-yy124: yych = *++YYCURSOR;
- goto yy125;
-yy125:
-{ goto stringconst; }
-yy126: yych = *++YYCURSOR;
- goto yy135;
-yy127:
-{ goto section_directive; }
-yy128: yych = *++YYCURSOR;
- goto yy129;
-yy129:
-{
- parser_gas->state = INITIAL;
- RETURN(s->tok[0]);
- }
-yy130: yych = *++YYCURSOR;
- goto yy131;
-yy131:
-{
- if (parser_gas->save_input)
- cursor = save_line(parser_gas, cursor);
- parser_gas->state = INITIAL;
- RETURN(s->tok[0]);
- }
-yy132: yych = *++YYCURSOR;
- goto yy133;
-yy133:
-{
- yasm_warn_set(YASM_WARN_UNREC_CHAR,
- N_("ignoring unrecognized character `%s'"),
- yasm__conv_unprint(s->tok[0]));
- goto section_directive;
- }
-yy134: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy135;
-yy135: if(yybm[0+yych] & 64) {
- goto yy134;
- }
- goto yy127;
-yy136: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy137;
-yy137: if(yybm[0+yych] & 128) {
- goto yy136;
- }
- goto yy123;
-}
-}
-
-
- /* filename portion of nasm preproc %line */
-nasm_filename:
- strbuf = yasm_xmalloc(STRBUF_ALLOC_SIZE);
- strbuf_size = STRBUF_ALLOC_SIZE;
- count = 0;
-
-nasm_filename_scan:
- SCANINIT();
-
- {
- static unsigned char yybm[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 128, 0, 0, 0, 128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 128, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- };
-
-{
- YYCTYPE yych;
- goto yy138;
- ++YYCURSOR;
-yy138:
- if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
- yych = *YYCURSOR;
- if(yych <= '\f'){
- if(yych <= '\b') goto yy144;
- if(yych <= '\t') goto yy142;
- if(yych >= '\v') goto yy144;
- goto yy140;
- } else {
- if(yych <= '\r') goto yy142;
- if(yych == ' ') goto yy142;
- goto yy144;
- }
-yy140: yych = *++YYCURSOR;
- goto yy141;
-yy141:
-{
- strbuf_append(count++, cursor, s, '\0');
- lvalp->str.contents = (char *)strbuf;
- lvalp->str.len = count;
- parser_gas->state = INITIAL;
- RETURN(STRING);
- }
-yy142: yych = *++YYCURSOR;
- goto yy147;
-yy143:
-{ goto nasm_filename_scan; }
-yy144: yych = *++YYCURSOR;
- goto yy145;
-yy145:
-{
- if (cursor == s->eof) {
- strbuf_append(count++, cursor, s, '\0');
- lvalp->str.contents = (char *)strbuf;
- lvalp->str.len = count;
- parser_gas->state = INITIAL;
- RETURN(STRING);
- }
- strbuf_append(count++, cursor, s, s->tok[0]);
- goto nasm_filename_scan;
- }
-yy146: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy147;
-yy147: if(yybm[0+yych] & 128) {
- goto yy146;
- }
- goto yy143;
-}
-}
-
-
- /* character constant values */
-charconst:
- /*TODO*/
-
- /* string constant values */
-stringconst:
- strbuf = yasm_xmalloc(STRBUF_ALLOC_SIZE);
- strbuf_size = STRBUF_ALLOC_SIZE;
- count = 0;
-
-stringconst_scan:
- SCANINIT();
-
- {
-
-{
- YYCTYPE yych;
- goto yy148;
- ++YYCURSOR;
-yy148:
- if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
- yych = *YYCURSOR;
- if(yych == '"') goto yy152;
- if(yych != '\\') goto yy154;
- goto yy150;
-yy150: yych = *++YYCURSOR;
- if(yych != '\n') goto yy155;
- goto yy151;
-yy151:
-{
- if (cursor == s->eof) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("unexpected end of file in string"));
- lvalp->str.contents = (char *)strbuf;
- lvalp->str.len = count;
- RETURN(STRING);
- }
- strbuf_append(count++, cursor, s, s->tok[0]);
- goto stringconst_scan;
- }
-yy152: yych = *++YYCURSOR;
- goto yy153;
-yy153:
-{
- strbuf_append(count, cursor, s, '\0');
- yasm_unescape_cstring(strbuf, &count);
- lvalp->str.contents = (char *)strbuf;
- lvalp->str.len = count;
- RETURN(STRING);
- }
-yy154: yych = *++YYCURSOR;
- goto yy151;
-yy155: yych = *++YYCURSOR;
- goto yy156;
-yy156:
-{
- if (cursor == s->eof) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("unexpected end of file in string"));
- lvalp->str.contents = (char *)strbuf;
- lvalp->str.len = count;
- RETURN(STRING);
- }
- strbuf_append(count++, cursor, s, '\\');
- strbuf_append(count++, cursor, s, s->tok[1]);
- goto stringconst_scan;
- }
-}
-}
-
-}
-
+/* Generated by re2c
+ */
+/*
+ * GAS-compatible re2c lexer
+ *
+ * Copyright (C) 2005-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the author nor the names of other contributors
+ * may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <libyasm.h>
+
+#include "modules/parsers/gas/gas-parser.h"
+
+
+#define BSIZE 8192
+
+#define YYCURSOR cursor
+#define YYLIMIT (s->lim)
+#define YYMARKER (s->ptr)
+#define YYFILL(n) {cursor = fill(parser_gas, cursor);}
+
+#define RETURN(i) do {s->cur = cursor; parser_gas->tokch = s->tok[0]; \
+ return i;} while (0)
+
+#define SCANINIT() {s->tok = cursor;}
+
+#define TOK ((char *)s->tok)
+#define TOKLEN (size_t)(cursor-s->tok)
+
+/* Bridge function to convert byte-oriented parser with line-oriented
+ * preprocessor.
+ */
+static size_t
+preproc_input(yasm_parser_gas *parser_gas, /*@out@*/ YYCTYPE *buf,
+ size_t max_size)
+{
+ size_t tot=0;
+ while (max_size > 0) {
+ size_t n;
+
+ if (!parser_gas->line) {
+ parser_gas->line = yasm_preproc_get_line(parser_gas->preproc);
+ if (!parser_gas->line)
+ return tot; /* EOF */
+ parser_gas->linepos = parser_gas->line;
+ parser_gas->lineleft = strlen(parser_gas->line) + 1;
+ parser_gas->line[parser_gas->lineleft-1] = '\n';
+ }
+
+ n = parser_gas->lineleft<max_size ? parser_gas->lineleft : max_size;
+ strncpy((char *)buf+tot, parser_gas->linepos, n);
+
+ if (n == parser_gas->lineleft) {
+ yasm_xfree(parser_gas->line);
+ parser_gas->line = NULL;
+ } else {
+ parser_gas->lineleft -= n;
+ parser_gas->linepos += n;
+ }
+
+ tot += n;
+ max_size -= n;
+ }
+ return tot;
+}
+#if 0
+static size_t
+fill_input(void *d, unsigned char *buf, size_t max)
+{
+ return yasm_preproc_input((yasm_preproc *)d, (char *)buf, max);
+}
+#endif
+static YYCTYPE *
+fill(yasm_parser_gas *parser_gas, YYCTYPE *cursor)
+{
+ yasm_scanner *s = &parser_gas->s;
+ int first = 0;
+ if(!s->eof){
+ size_t cnt = s->tok - s->bot;
+ if(cnt){
+ memmove(s->bot, s->tok, (size_t)(s->lim - s->tok));
+ s->tok = s->bot;
+ s->ptr -= cnt;
+ cursor -= cnt;
+ s->lim -= cnt;
+ }
+ if (!s->bot)
+ first = 1;
+ if((s->top - s->lim) < BSIZE){
+ YYCTYPE *buf = yasm_xmalloc((size_t)(s->lim - s->bot) + BSIZE);
+ memcpy(buf, s->tok, (size_t)(s->lim - s->tok));
+ s->tok = buf;
+ s->ptr = &buf[s->ptr - s->bot];
+ cursor = &buf[cursor - s->bot];
+ s->lim = &buf[s->lim - s->bot];
+ s->top = &s->lim[BSIZE];
+ if (s->bot)
+ yasm_xfree(s->bot);
+ s->bot = buf;
+ }
+ if((cnt = preproc_input(parser_gas, s->lim, BSIZE)) == 0) {
+ s->eof = &s->lim[cnt]; *s->eof++ = '\n';
+ }
+ s->lim += cnt;
+ if (first && parser_gas->save_input) {
+ int i;
+ YYCTYPE *saveline;
+ parser_gas->save_last ^= 1;
+ saveline = parser_gas->save_line[parser_gas->save_last];
+ /* save next line into cur_line */
+ for (i=0; i<79 && &s->tok[i] < s->lim && s->tok[i] != '\n'; i++)
+ saveline[i] = s->tok[i];
+ saveline[i] = '\0';
+ }
+ }
+ return cursor;
+}
+
+static YYCTYPE *
+save_line(yasm_parser_gas *parser_gas, YYCTYPE *cursor)
+{
+ yasm_scanner *s = &parser_gas->s;
+ int i = 0;
+ YYCTYPE *saveline;
+
+ parser_gas->save_last ^= 1;
+ saveline = parser_gas->save_line[parser_gas->save_last];
+
+ /* save next line into cur_line */
+ if ((YYLIMIT - YYCURSOR) < 80)
+ YYFILL(80);
+ for (i=0; i<79 && &cursor[i] < s->lim && cursor[i] != '\n'; i++)
+ saveline[i] = cursor[i];
+ saveline[i] = '\0';
+ return cursor;
+}
+
+/* starting size of string buffer */
+#define STRBUF_ALLOC_SIZE 128
+
+/* string buffer used when parsing strings/character constants */
+static YYCTYPE *strbuf = NULL;
+
+/* length of strbuf (including terminating NULL character) */
+static size_t strbuf_size = 0;
+
+static void
+strbuf_append(size_t count, YYCTYPE *cursor, yasm_scanner *s, int ch)
+{
+ if (count >= strbuf_size) {
+ strbuf = yasm_xrealloc(strbuf, strbuf_size + STRBUF_ALLOC_SIZE);
+ strbuf_size += STRBUF_ALLOC_SIZE;
+ }
+ strbuf[count] = ch;
+}
+
+
+
+
+int
+gas_parser_lex(YYSTYPE *lvalp, yasm_parser_gas *parser_gas)
+{
+ yasm_scanner *s = &parser_gas->s;
+ YYCTYPE *cursor = s->cur;
+ size_t count;
+ YYCTYPE savech;
+
+ /* Handle one token of lookahead */
+ if (parser_gas->peek_token != NONE) {
+ int tok = parser_gas->peek_token;
+ *lvalp = parser_gas->peek_tokval; /* structure copy */
+ parser_gas->tokch = parser_gas->peek_tokch;
+ parser_gas->peek_token = NONE;
+ return tok;
+ }
+
+ /* Catch EOF */
+ if (s->eof && cursor == s->eof)
+ return 0;
+
+ /* Jump to proper "exclusive" states */
+ switch (parser_gas->state) {
+ case COMMENT:
+ goto comment;
+ case SECTION_DIRECTIVE:
+ goto section_directive;
+ case NASM_FILENAME:
+ goto nasm_filename;
+ default:
+ break;
+ }
+
+scan:
+ SCANINIT();
+
+ {
+ static unsigned char yybm[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 12, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 12, 0,
+ 254, 254, 126, 126, 126, 126, 126, 126,
+ 94, 94, 0, 0, 0, 0, 0, 0,
+ 8, 78, 78, 78, 78, 78, 78, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 0, 0, 0, 0, 12,
+ 0, 78, 78, 78, 78, 78, 78, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ };
+
+{
+ YYCTYPE yych;
+ unsigned int yyaccept;
+ goto yy0;
+ ++YYCURSOR;
+yy0:
+ if((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
+ yych = *YYCURSOR;
+ if(yych <= '/'){
+ if(yych <= '#'){
+ if(yych <= '\r'){
+ if(yych <= '\t'){
+ if(yych <= '\b') goto yy30;
+ goto yy26;
+ } else {
+ if(yych <= '\n') goto yy28;
+ if(yych <= '\f') goto yy30;
+ goto yy26;
+ }
+ } else {
+ if(yych <= ' '){
+ if(yych <= '\037') goto yy30;
+ goto yy26;
+ } else {
+ if(yych <= '!') goto yy17;
+ if(yych <= '"') goto yy11;
+ goto yy24;
+ }
+ }
+ } else {
+ if(yych <= '*'){
+ if(yych <= '%'){
+ if(yych <= '$') goto yy17;
+ goto yy22;
+ } else {
+ if(yych == '\'') goto yy9;
+ goto yy17;
+ }
+ } else {
+ if(yych <= ','){
+ if(yych <= '+') goto yy5;
+ goto yy17;
+ } else {
+ if(yych <= '-') goto yy5;
+ if(yych <= '.') goto yy7;
+ goto yy18;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'Z'){
+ if(yych <= '<'){
+ if(yych <= '9'){
+ if(yych >= '1') goto yy4;
+ goto yy2;
+ } else {
+ if(yych <= ':') goto yy17;
+ if(yych <= ';') goto yy19;
+ goto yy13;
+ }
+ } else {
+ if(yych <= '>'){
+ if(yych <= '=') goto yy17;
+ goto yy15;
+ } else {
+ if(yych <= '?') goto yy30;
+ if(yych <= '@') goto yy17;
+ goto yy21;
+ }
+ }
+ } else {
+ if(yych <= 'z'){
+ if(yych <= '^'){
+ if(yych <= ']') goto yy30;
+ goto yy17;
+ } else {
+ if(yych == '`') goto yy30;
+ goto yy21;
+ }
+ } else {
+ if(yych <= '|'){
+ if(yych <= '{') goto yy30;
+ goto yy17;
+ } else {
+ if(yych == '~') goto yy17;
+ goto yy30;
+ }
+ }
+ }
+ }
+yy2: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'T'){
+ if(yych <= 'A'){
+ if(yych <= '/'){
+ if(yych == '.') goto yy90;
+ goto yy3;
+ } else {
+ if(yych <= '9') goto yy90;
+ if(yych <= ':') goto yy81;
+ goto yy3;
+ }
+ } else {
+ if(yych <= 'E'){
+ if(yych <= 'B') goto yy85;
+ if(yych >= 'D') goto yy88;
+ goto yy3;
+ } else {
+ if(yych <= 'F') goto yy86;
+ if(yych >= 'T') goto yy88;
+ goto yy3;
+ }
+ }
+ } else {
+ if(yych <= 'e'){
+ if(yych <= 'a'){
+ if(yych == 'X') goto yy92;
+ goto yy3;
+ } else {
+ if(yych <= 'b') goto yy85;
+ if(yych >= 'd') goto yy88;
+ goto yy3;
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych <= 'f') goto yy86;
+ if(yych >= 't') goto yy88;
+ goto yy3;
+ } else {
+ if(yych == 'x') goto yy92;
+ goto yy3;
+ }
+ }
+ }
+yy3:
+{
+ savech = s->tok[TOKLEN];
+ s->tok[TOKLEN] = '\0';
+ lvalp->intn = yasm_intnum_create_dec(TOK);
+ s->tok[TOKLEN] = savech;
+ RETURN(INTNUM);
+ }
+yy4: yych = *++YYCURSOR;
+ if(yych <= 'E'){
+ if(yych <= ':'){
+ if(yych <= '9') goto yy84;
+ goto yy81;
+ } else {
+ if(yych == 'B') goto yy77;
+ goto yy84;
+ }
+ } else {
+ if(yych <= 'b'){
+ if(yych <= 'F') goto yy79;
+ if(yych <= 'a') goto yy84;
+ goto yy77;
+ } else {
+ if(yych == 'f') goto yy79;
+ goto yy84;
+ }
+ }
+yy5: yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych == '.') goto yy61;
+ if(yych <= '/') goto yy6;
+ if(yych <= '9') goto yy59;
+ goto yy6;
+yy6:
+{ RETURN(s->tok[0]); }
+yy7: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 16) {
+ goto yy49;
+ }
+ goto yy37;
+yy8:
+{
+ lvalp->str.contents = yasm__xstrndup(TOK, TOKLEN);
+ lvalp->str.len = TOKLEN;
+ RETURN(ID);
+ }
+yy9: yych = *++YYCURSOR;
+ goto yy10;
+yy10:
+{
+ goto charconst;
+ }
+yy11: yych = *++YYCURSOR;
+ goto yy12;
+yy12:
+{
+ goto stringconst;
+ }
+yy13: yych = *++YYCURSOR;
+ if(yych == '<') goto yy47;
+ goto yy14;
+yy14:
+{ RETURN(LEFT_OP); }
+yy15: yych = *++YYCURSOR;
+ if(yych == '>') goto yy45;
+ goto yy16;
+yy16:
+{ RETURN(RIGHT_OP); }
+yy17: yych = *++YYCURSOR;
+ goto yy6;
+yy18: yych = *++YYCURSOR;
+ if(yych == '*') goto yy43;
+ if(yych == '/') goto yy41;
+ goto yy6;
+yy19: yych = *++YYCURSOR;
+ goto yy20;
+yy20:
+{
+ parser_gas->state = INITIAL;
+ RETURN(s->tok[0]);
+ }
+yy21: yych = *++YYCURSOR;
+ goto yy37;
+yy22: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy33;
+ }
+ goto yy23;
+yy23:
+{
+ yasm_warn_set(YASM_WARN_UNREC_CHAR,
+ N_("ignoring unrecognized character `%s'"),
+ yasm__conv_unprint(s->tok[0]));
+ goto scan;
+ }
+yy24: yych = *++YYCURSOR;
+ goto yy25;
+yy25:
+{
+ if (parser_gas->is_cpp_preproc)
+ {
+ RETURN(CPP_LINE_MARKER);
+ } else
+ goto line_comment;
+ }
+yy26: yych = *++YYCURSOR;
+ goto yy32;
+yy27:
+{ goto scan; }
+yy28: yych = *++YYCURSOR;
+ goto yy29;
+yy29:
+{
+ if (parser_gas->save_input)
+ cursor = save_line(parser_gas, cursor);
+ parser_gas->state = INITIAL;
+ RETURN(s->tok[0]);
+ }
+yy30: yych = *++YYCURSOR;
+ goto yy23;
+yy31: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy32;
+yy32: if(yybm[0+yych] & 1) {
+ goto yy31;
+ }
+ goto yy27;
+yy33: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy34;
+yy34: if(yybm[0+yych] & 2) {
+ goto yy33;
+ }
+ goto yy35;
+yy35:
+{
+ savech = s->tok[TOKLEN];
+ s->tok[TOKLEN] = '\0';
+ if (parser_gas->is_nasm_preproc && strcmp(TOK+1, "line") == 0) {
+ s->tok[TOKLEN] = savech;
+ RETURN(NASM_LINE_MARKER);
+ }
+
+ switch (yasm_arch_parse_check_regtmod
+ (p_object->arch, TOK+1, TOKLEN-1, &lvalp->arch_data)) {
+ case YASM_ARCH_REG:
+ s->tok[TOKLEN] = savech;
+ RETURN(REG);
+ case YASM_ARCH_REGGROUP:
+ s->tok[TOKLEN] = savech;
+ RETURN(REGGROUP);
+ case YASM_ARCH_SEGREG:
+ s->tok[TOKLEN] = savech;
+ RETURN(SEGREG);
+ default:
+ break;
+ }
+ yasm_error_set(YASM_ERROR_GENERAL,
+ N_("Unrecognized register name `%s'"), s->tok);
+ s->tok[TOKLEN] = savech;
+ lvalp->arch_data = 0;
+ RETURN(REG);
+ }
+yy36: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy37;
+yy37: if(yybm[0+yych] & 4) {
+ goto yy36;
+ }
+ if(yych != '@') goto yy8;
+ goto yy38;
+yy38: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy39;
+yy39: if(yybm[0+yych] & 8) {
+ goto yy38;
+ }
+ goto yy40;
+yy40:
+{
+ /* if @ not part of ID, move the scanner cursor to the first @ */
+ if (!((yasm_objfmt_base *)p_object->objfmt)->module->id_at_ok)
+ cursor = (unsigned char *)strchr(TOK, '@');
+ lvalp->str.contents = yasm__xstrndup(TOK, TOKLEN);
+ lvalp->str.len = TOKLEN;
+ RETURN(ID);
+ }
+yy41: yych = *++YYCURSOR;
+ goto yy42;
+yy42:
+{ goto line_comment; }
+yy43: yych = *++YYCURSOR;
+ goto yy44;
+yy44:
+{ parser_gas->state = COMMENT; goto comment; }
+yy45: yych = *++YYCURSOR;
+ goto yy46;
+yy46:
+{ RETURN(RIGHT_OP); }
+yy47: yych = *++YYCURSOR;
+ goto yy48;
+yy48:
+{ RETURN(LEFT_OP); }
+yy49: ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+ yych = *YYCURSOR;
+ goto yy50;
+yy50: if(yybm[0+yych] & 16) {
+ goto yy49;
+ }
+ if(yych <= 'E'){
+ if(yych <= '.'){
+ if(yych == '$') goto yy36;
+ if(yych >= '.') goto yy36;
+ goto yy51;
+ } else {
+ if(yych <= '?') goto yy51;
+ if(yych <= '@') goto yy38;
+ if(yych <= 'D') goto yy36;
+ goto yy52;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy36;
+ if(yych == '_') goto yy36;
+ goto yy51;
+ } else {
+ if(yych == 'e') goto yy52;
+ if(yych <= 'z') goto yy36;
+ goto yy51;
+ }
+ }
+yy51:
+{
+ savech = s->tok[TOKLEN];
+ s->tok[TOKLEN] = '\0';
+ lvalp->flt = yasm_floatnum_create(TOK);
+ s->tok[TOKLEN] = savech;
+ RETURN(FLTNUM);
+ }
+yy52: yyaccept = 2;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= ','){
+ if(yych == '+') goto yy55;
+ goto yy37;
+ } else {
+ if(yych <= '-') goto yy55;
+ if(yych <= '/') goto yy37;
+ if(yych >= ':') goto yy37;
+ goto yy53;
+ }
+yy53: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy54;
+yy54: if(yych <= '?'){
+ if(yych <= '-'){
+ if(yych == '$') goto yy36;
+ goto yy51;
+ } else {
+ if(yych <= '.') goto yy36;
+ if(yych <= '/') goto yy51;
+ if(yych <= '9') goto yy53;
+ goto yy51;
+ }
+ } else {
+ if(yych <= '^'){
+ if(yych <= '@') goto yy38;
+ if(yych <= 'Z') goto yy36;
+ goto yy51;
+ } else {
+ if(yych == '`') goto yy51;
+ if(yych <= 'z') goto yy36;
+ goto yy51;
+ }
+ }
+yy55: yych = *++YYCURSOR;
+ if(yych <= '/') goto yy56;
+ if(yych <= '9') goto yy57;
+ goto yy56;
+yy56: YYCURSOR = YYMARKER;
+ switch(yyaccept){
+ case 0: goto yy3;
+ case 6: goto yy91;
+ case 3: goto yy51;
+ case 4: goto yy66;
+ case 5: goto yy87;
+ case 1: goto yy6;
+ case 2: goto yy8;
+ }
+yy57: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy58;
+yy58: if(yych <= '/') goto yy51;
+ if(yych <= '9') goto yy57;
+ goto yy51;
+yy59: ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
+ yych = *YYCURSOR;
+ goto yy60;
+yy60: if(yych == '.') goto yy65;
+ if(yych <= '/') goto yy56;
+ if(yych <= '9') goto yy59;
+ goto yy56;
+yy61: yych = *++YYCURSOR;
+ if(yych <= '/') goto yy56;
+ if(yych >= ':') goto yy56;
+ goto yy62;
+yy62: yyaccept = 3;
+ YYMARKER = ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+ yych = *YYCURSOR;
+ goto yy63;
+yy63: if(yych <= 'D'){
+ if(yych <= '/') goto yy51;
+ if(yych <= '9') goto yy62;
+ goto yy51;
+ } else {
+ if(yych <= 'E') goto yy64;
+ if(yych != 'e') goto yy51;
+ goto yy64;
+ }
+yy64: yych = *++YYCURSOR;
+ if(yych <= ','){
+ if(yych == '+') goto yy55;
+ goto yy56;
+ } else {
+ if(yych <= '-') goto yy55;
+ if(yych <= '/') goto yy56;
+ if(yych <= '9') goto yy57;
+ goto yy56;
+ }
+yy65: yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'D'){
+ if(yych <= '/') goto yy66;
+ if(yych <= '9') goto yy67;
+ goto yy66;
+ } else {
+ if(yych <= 'E') goto yy69;
+ if(yych == 'e') goto yy69;
+ goto yy66;
+ }
+yy66:
+{
+ savech = s->tok[TOKLEN];
+ s->tok[TOKLEN] = '\0';
+ lvalp->flt = yasm_floatnum_create(TOK);
+ s->tok[TOKLEN] = savech;
+ RETURN(FLTNUM);
+ }
+yy67: yyaccept = 3;
+ YYMARKER = ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+ yych = *YYCURSOR;
+ goto yy68;
+yy68: if(yych <= 'D'){
+ if(yych <= '/') goto yy51;
+ if(yych <= '9') goto yy67;
+ goto yy51;
+ } else {
+ if(yych <= 'E') goto yy73;
+ if(yych == 'e') goto yy73;
+ goto yy51;
+ }
+yy69: yych = *++YYCURSOR;
+ if(yych <= ','){
+ if(yych != '+') goto yy56;
+ goto yy70;
+ } else {
+ if(yych <= '-') goto yy70;
+ if(yych <= '/') goto yy56;
+ if(yych <= '9') goto yy71;
+ goto yy56;
+ }
+yy70: yych = *++YYCURSOR;
+ if(yych <= '/') goto yy56;
+ if(yych >= ':') goto yy56;
+ goto yy71;
+yy71: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy72;
+yy72: if(yych <= '/') goto yy66;
+ if(yych <= '9') goto yy71;
+ goto yy66;
+yy73: yych = *++YYCURSOR;
+ if(yych <= ','){
+ if(yych != '+') goto yy56;
+ goto yy74;
+ } else {
+ if(yych <= '-') goto yy74;
+ if(yych <= '/') goto yy56;
+ if(yych <= '9') goto yy75;
+ goto yy56;
+ }
+yy74: yych = *++YYCURSOR;
+ if(yych <= '/') goto yy56;
+ if(yych >= ':') goto yy56;
+ goto yy75;
+yy75: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy76;
+yy76: if(yych <= '/') goto yy51;
+ if(yych <= '9') goto yy75;
+ goto yy51;
+yy77: yych = *++YYCURSOR;
+ goto yy78;
+yy78:
+{
+ /* build local label name */
+ lvalp->str.contents = yasm_xmalloc(30);
+ lvalp->str.len =
+ sprintf(lvalp->str.contents, "L%c\001%lu", s->tok[0],
+ parser_gas->local[s->tok[0]-'0']);
+ RETURN(ID);
+ }
+yy79: yych = *++YYCURSOR;
+ goto yy80;
+yy80:
+{
+ /* build local label name */
+ lvalp->str.contents = yasm_xmalloc(30);
+ lvalp->str.len =
+ sprintf(lvalp->str.contents, "L%c\001%lu", s->tok[0],
+ parser_gas->local[s->tok[0]-'0']+1);
+ RETURN(ID);
+ }
+yy81: yych = *++YYCURSOR;
+ goto yy82;
+yy82:
+{
+ /* increment label index */
+ parser_gas->local[s->tok[0]-'0']++;
+ /* build local label name */
+ lvalp->str.contents = yasm_xmalloc(30);
+ lvalp->str.len =
+ sprintf(lvalp->str.contents, "L%c\001%lu", s->tok[0],
+ parser_gas->local[s->tok[0]-'0']);
+ RETURN(LABEL);
+ }
+yy83: ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
+ yych = *YYCURSOR;
+ goto yy84;
+yy84: if(yych == '.') goto yy65;
+ if(yych <= '/') goto yy3;
+ if(yych <= '9') goto yy83;
+ goto yy3;
+yy85: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 128) {
+ goto yy104;
+ }
+ goto yy78;
+yy86: yyaccept = 5;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych == '+') goto yy96;
+ if(yych == '-') goto yy96;
+ goto yy97;
+yy87:
+{
+ savech = s->tok[TOKLEN];
+ s->tok[TOKLEN] = '\0';
+ lvalp->flt = yasm_floatnum_create(TOK+2);
+ s->tok[TOKLEN] = savech;
+ RETURN(FLTNUM);
+ }
+yy88: yyaccept = 5;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych == '+') goto yy96;
+ if(yych == '-') goto yy96;
+ goto yy97;
+yy89: yyaccept = 6;
+ YYMARKER = ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
+ yych = *YYCURSOR;
+ goto yy90;
+yy90: if(yybm[0+yych] & 32) {
+ goto yy89;
+ }
+ if(yych == '.') goto yy65;
+ if(yych <= '/') goto yy91;
+ if(yych <= '9') goto yy59;
+ goto yy91;
+yy91:
+{
+ savech = s->tok[TOKLEN];
+ s->tok[TOKLEN] = '\0';
+ lvalp->intn = yasm_intnum_create_oct(TOK);
+ s->tok[TOKLEN] = savech;
+ RETURN(INTNUM);
+ }
+yy92: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 64) {
+ goto yy93;
+ }
+ goto yy56;
+yy93: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy94;
+yy94: if(yybm[0+yych] & 64) {
+ goto yy93;
+ }
+ goto yy95;
+yy95:
+{
+ savech = s->tok[TOKLEN];
+ s->tok[TOKLEN] = '\0';
+ /* skip 0 and x */
+ lvalp->intn = yasm_intnum_create_hex(TOK+2);
+ s->tok[TOKLEN] = savech;
+ RETURN(INTNUM);
+ }
+yy96: yyaccept = 5;
+ YYMARKER = ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+ yych = *YYCURSOR;
+ goto yy97;
+yy97: if(yych <= '9'){
+ if(yych == '.') goto yy98;
+ if(yych <= '/') goto yy87;
+ goto yy96;
+ } else {
+ if(yych <= 'E'){
+ if(yych <= 'D') goto yy87;
+ goto yy100;
+ } else {
+ if(yych == 'e') goto yy100;
+ goto yy87;
+ }
+ }
+yy98: yyaccept = 5;
+ YYMARKER = ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+ yych = *YYCURSOR;
+ goto yy99;
+yy99: if(yych <= 'D'){
+ if(yych <= '/') goto yy87;
+ if(yych <= '9') goto yy98;
+ goto yy87;
+ } else {
+ if(yych <= 'E') goto yy100;
+ if(yych != 'e') goto yy87;
+ goto yy100;
+ }
+yy100: yych = *++YYCURSOR;
+ if(yych <= ','){
+ if(yych != '+') goto yy56;
+ goto yy101;
+ } else {
+ if(yych <= '-') goto yy101;
+ if(yych <= '/') goto yy56;
+ if(yych <= '9') goto yy102;
+ goto yy56;
+ }
+yy101: yych = *++YYCURSOR;
+ if(yych <= '/') goto yy56;
+ if(yych >= ':') goto yy56;
+ goto yy102;
+yy102: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy103;
+yy103: if(yych <= '/') goto yy87;
+ if(yych <= '9') goto yy102;
+ goto yy87;
+yy104: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy105;
+yy105: if(yybm[0+yych] & 128) {
+ goto yy104;
+ }
+ goto yy106;
+yy106:
+{
+ savech = s->tok[TOKLEN];
+ s->tok[TOKLEN] = '\0';
+ lvalp->intn = yasm_intnum_create_bin(TOK+2);
+ s->tok[TOKLEN] = savech;
+ RETURN(INTNUM);
+ }
+}
+}
+
+
+ /* C-style comment; nesting not supported */
+comment:
+ SCANINIT();
+
+ {
+
+{
+ YYCTYPE yych;
+ goto yy107;
+ ++YYCURSOR;
+yy107:
+ if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ yych = *YYCURSOR;
+ if(yych == '\n') goto yy111;
+ if(yych != '*') goto yy113;
+ goto yy109;
+yy109: yych = *++YYCURSOR;
+ if(yych == '/') goto yy114;
+ goto yy110;
+yy110:
+{
+ if (cursor == s->eof)
+ return 0;
+ goto comment;
+ }
+yy111: yych = *++YYCURSOR;
+ goto yy112;
+yy112:
+{
+ if (parser_gas->save_input)
+ cursor = save_line(parser_gas, cursor);
+ RETURN(s->tok[0]);
+ }
+yy113: yych = *++YYCURSOR;
+ goto yy110;
+yy114: yych = *++YYCURSOR;
+ goto yy115;
+yy115:
+{ parser_gas->state = INITIAL; goto scan; }
+}
+}
+
+
+ /* Single line comment. */
+line_comment:
+ {
+ static unsigned char yybm[] = {
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 0, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ };
+
+{
+ YYCTYPE yych;
+ goto yy116;
+yy117: ++YYCURSOR;
+yy116:
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy118;
+yy118: if(yybm[0+yych] & 128) {
+ goto yy117;
+ }
+ goto yy119;
+yy119:
+{ goto scan; }
+}
+}
+
+
+ /* .section directive (the section name portion thereof) */
+section_directive:
+ SCANINIT();
+
+ {
+ static unsigned char yybm[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 64, 0, 0, 0, 64, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 64, 0, 0, 0, 128, 0, 0, 0,
+ 0, 0, 0, 0, 0, 128, 128, 0,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 0, 0, 0, 0, 0, 0,
+ 0, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 0, 0, 0, 0, 128,
+ 0, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ };
+
+{
+ YYCTYPE yych;
+ goto yy120;
+ ++YYCURSOR;
+yy120:
+ if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ yych = *YYCURSOR;
+ if(yych <= '$'){
+ if(yych <= '\r'){
+ if(yych <= '\t'){
+ if(yych <= '\b') goto yy132;
+ goto yy126;
+ } else {
+ if(yych <= '\n') goto yy130;
+ if(yych <= '\f') goto yy132;
+ goto yy126;
+ }
+ } else {
+ if(yych <= '!'){
+ if(yych == ' ') goto yy126;
+ goto yy132;
+ } else {
+ if(yych <= '"') goto yy124;
+ if(yych <= '#') goto yy132;
+ goto yy122;
+ }
+ }
+ } else {
+ if(yych <= '@'){
+ if(yych <= '.'){
+ if(yych <= '+') goto yy132;
+ if(yych <= ',') goto yy128;
+ goto yy122;
+ } else {
+ if(yych <= '/') goto yy132;
+ if(yych >= ':') goto yy132;
+ goto yy122;
+ }
+ } else {
+ if(yych <= '_'){
+ if(yych <= 'Z') goto yy122;
+ if(yych <= '^') goto yy132;
+ goto yy122;
+ } else {
+ if(yych <= '`') goto yy132;
+ if(yych >= '{') goto yy132;
+ goto yy122;
+ }
+ }
+ }
+yy122: yych = *++YYCURSOR;
+ goto yy137;
+yy123:
+{
+ lvalp->str.contents = yasm__xstrndup(TOK, TOKLEN);
+ lvalp->str.len = TOKLEN;
+ parser_gas->state = INITIAL;
+ RETURN(ID);
+ }
+yy124: yych = *++YYCURSOR;
+ goto yy125;
+yy125:
+{ goto stringconst; }
+yy126: yych = *++YYCURSOR;
+ goto yy135;
+yy127:
+{ goto section_directive; }
+yy128: yych = *++YYCURSOR;
+ goto yy129;
+yy129:
+{
+ parser_gas->state = INITIAL;
+ RETURN(s->tok[0]);
+ }
+yy130: yych = *++YYCURSOR;
+ goto yy131;
+yy131:
+{
+ if (parser_gas->save_input)
+ cursor = save_line(parser_gas, cursor);
+ parser_gas->state = INITIAL;
+ RETURN(s->tok[0]);
+ }
+yy132: yych = *++YYCURSOR;
+ goto yy133;
+yy133:
+{
+ yasm_warn_set(YASM_WARN_UNREC_CHAR,
+ N_("ignoring unrecognized character `%s'"),
+ yasm__conv_unprint(s->tok[0]));
+ goto section_directive;
+ }
+yy134: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy135;
+yy135: if(yybm[0+yych] & 64) {
+ goto yy134;
+ }
+ goto yy127;
+yy136: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy137;
+yy137: if(yybm[0+yych] & 128) {
+ goto yy136;
+ }
+ goto yy123;
+}
+}
+
+
+ /* filename portion of nasm preproc %line */
+nasm_filename:
+ strbuf = yasm_xmalloc(STRBUF_ALLOC_SIZE);
+ strbuf_size = STRBUF_ALLOC_SIZE;
+ count = 0;
+
+nasm_filename_scan:
+ SCANINIT();
+
+ {
+ static unsigned char yybm[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 128, 0, 0, 0, 128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 128, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ };
+
+{
+ YYCTYPE yych;
+ goto yy138;
+ ++YYCURSOR;
+yy138:
+ if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ yych = *YYCURSOR;
+ if(yych <= '\f'){
+ if(yych <= '\b') goto yy144;
+ if(yych <= '\t') goto yy142;
+ if(yych >= '\v') goto yy144;
+ goto yy140;
+ } else {
+ if(yych <= '\r') goto yy142;
+ if(yych == ' ') goto yy142;
+ goto yy144;
+ }
+yy140: yych = *++YYCURSOR;
+ goto yy141;
+yy141:
+{
+ strbuf_append(count++, cursor, s, '\0');
+ lvalp->str.contents = (char *)strbuf;
+ lvalp->str.len = count;
+ parser_gas->state = INITIAL;
+ RETURN(STRING);
+ }
+yy142: yych = *++YYCURSOR;
+ goto yy147;
+yy143:
+{ goto nasm_filename_scan; }
+yy144: yych = *++YYCURSOR;
+ goto yy145;
+yy145:
+{
+ if (cursor == s->eof) {
+ strbuf_append(count++, cursor, s, '\0');
+ lvalp->str.contents = (char *)strbuf;
+ lvalp->str.len = count;
+ parser_gas->state = INITIAL;
+ RETURN(STRING);
+ }
+ strbuf_append(count++, cursor, s, s->tok[0]);
+ goto nasm_filename_scan;
+ }
+yy146: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy147;
+yy147: if(yybm[0+yych] & 128) {
+ goto yy146;
+ }
+ goto yy143;
+}
+}
+
+
+ /* character constant values */
+charconst:
+ /*TODO*/
+
+ /* string constant values */
+stringconst:
+ strbuf = yasm_xmalloc(STRBUF_ALLOC_SIZE);
+ strbuf_size = STRBUF_ALLOC_SIZE;
+ count = 0;
+
+stringconst_scan:
+ SCANINIT();
+
+ {
+
+{
+ YYCTYPE yych;
+ goto yy148;
+ ++YYCURSOR;
+yy148:
+ if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ yych = *YYCURSOR;
+ if(yych == '"') goto yy152;
+ if(yych != '\\') goto yy154;
+ goto yy150;
+yy150: yych = *++YYCURSOR;
+ if(yych != '\n') goto yy155;
+ goto yy151;
+yy151:
+{
+ if (cursor == s->eof) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("unexpected end of file in string"));
+ lvalp->str.contents = (char *)strbuf;
+ lvalp->str.len = count;
+ RETURN(STRING);
+ }
+ strbuf_append(count++, cursor, s, s->tok[0]);
+ goto stringconst_scan;
+ }
+yy152: yych = *++YYCURSOR;
+ goto yy153;
+yy153:
+{
+ strbuf_append(count, cursor, s, '\0');
+ yasm_unescape_cstring(strbuf, &count);
+ lvalp->str.contents = (char *)strbuf;
+ lvalp->str.len = count;
+ RETURN(STRING);
+ }
+yy154: yych = *++YYCURSOR;
+ goto yy151;
+yy155: yych = *++YYCURSOR;
+ goto yy156;
+yy156:
+{
+ if (cursor == s->eof) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("unexpected end of file in string"));
+ lvalp->str.contents = (char *)strbuf;
+ lvalp->str.len = count;
+ RETURN(STRING);
+ }
+ strbuf_append(count++, cursor, s, '\\');
+ strbuf_append(count++, cursor, s, s->tok[1]);
+ goto stringconst_scan;
+ }
+}
+}
+
+}
+
diff --git a/contrib/tools/yasm/modules/init_plugin.c b/contrib/tools/yasm/modules/init_plugin.c
index 5ea19f5aab..86ae4c53f9 100644
--- a/contrib/tools/yasm/modules/init_plugin.c
+++ b/contrib/tools/yasm/modules/init_plugin.c
@@ -1,69 +1,69 @@
-/* arch_lc3b arch_x86 listfmt_nasm parser_gas parser_nasm preproc_nasm preproc_raw preproc_cpp preproc_gas dbgfmt_cv8 dbgfmt_dwarf2 dbgfmt_null dbgfmt_stabs objfmt_dbg objfmt_bin objfmt_elf objfmt_elf32 objfmt_elf64 objfmt_elfx32 objfmt_coff objfmt_win32 objfmt_win64 objfmt_macho objfmt_macho32 objfmt_macho64 objfmt_rdf objfmt_xdf
- rev 1
- */
-
-#include <libyasm.h>
-#include <libyasm/module.h>
-
-extern yasm_arch_module yasm_lc3b_LTX_arch;
-extern yasm_arch_module yasm_x86_LTX_arch;
-extern yasm_listfmt_module yasm_nasm_LTX_listfmt;
-extern yasm_parser_module yasm_gas_LTX_parser;
-extern yasm_parser_module yasm_nasm_LTX_parser;
-extern yasm_preproc_module yasm_nasm_LTX_preproc;
-extern yasm_preproc_module yasm_raw_LTX_preproc;
-extern yasm_preproc_module yasm_cpp_LTX_preproc;
-extern yasm_preproc_module yasm_gas_LTX_preproc;
-extern yasm_dbgfmt_module yasm_cv8_LTX_dbgfmt;
-extern yasm_dbgfmt_module yasm_dwarf2_LTX_dbgfmt;
-extern yasm_dbgfmt_module yasm_null_LTX_dbgfmt;
-extern yasm_dbgfmt_module yasm_stabs_LTX_dbgfmt;
-extern yasm_objfmt_module yasm_dbg_LTX_objfmt;
-extern yasm_objfmt_module yasm_bin_LTX_objfmt;
-extern yasm_objfmt_module yasm_elf_LTX_objfmt;
-extern yasm_objfmt_module yasm_elf32_LTX_objfmt;
-extern yasm_objfmt_module yasm_elf64_LTX_objfmt;
-extern yasm_objfmt_module yasm_elfx32_LTX_objfmt;
-extern yasm_objfmt_module yasm_coff_LTX_objfmt;
-extern yasm_objfmt_module yasm_win32_LTX_objfmt;
-extern yasm_objfmt_module yasm_win64_LTX_objfmt;
-extern yasm_objfmt_module yasm_macho_LTX_objfmt;
-extern yasm_objfmt_module yasm_macho32_LTX_objfmt;
-extern yasm_objfmt_module yasm_macho64_LTX_objfmt;
-extern yasm_objfmt_module yasm_rdf_LTX_objfmt;
-extern yasm_objfmt_module yasm_xdf_LTX_objfmt;
-void
-yasm_init_plugin(void)
-{
- yasm_register_module(YASM_MODULE_ARCH, "lc3b", &yasm_lc3b_LTX_arch);
- yasm_register_module(YASM_MODULE_ARCH, "x86", &yasm_x86_LTX_arch);
- yasm_register_module(YASM_MODULE_LISTFMT, "nasm", &yasm_nasm_LTX_listfmt);
- yasm_register_module(YASM_MODULE_PARSER, "gas", &yasm_gas_LTX_parser);
- yasm_register_module(YASM_MODULE_PARSER, "nasm", &yasm_nasm_LTX_parser);
- yasm_register_module(YASM_MODULE_PREPROC, "nasm", &yasm_nasm_LTX_preproc);
- yasm_register_module(YASM_MODULE_PREPROC, "raw", &yasm_raw_LTX_preproc);
- yasm_register_module(YASM_MODULE_PREPROC, "cpp", &yasm_cpp_LTX_preproc);
- yasm_register_module(YASM_MODULE_PREPROC, "gas", &yasm_gas_LTX_preproc);
- yasm_register_module(YASM_MODULE_DBGFMT, "cv8", &yasm_cv8_LTX_dbgfmt);
- yasm_register_module(YASM_MODULE_DBGFMT, "dwarf2", &yasm_dwarf2_LTX_dbgfmt);
- yasm_register_module(YASM_MODULE_DBGFMT, "null", &yasm_null_LTX_dbgfmt);
- yasm_register_module(YASM_MODULE_DBGFMT, "stabs", &yasm_stabs_LTX_dbgfmt);
- yasm_register_module(YASM_MODULE_OBJFMT, "dbg", &yasm_dbg_LTX_objfmt);
- yasm_register_module(YASM_MODULE_OBJFMT, "bin", &yasm_bin_LTX_objfmt);
- yasm_register_module(YASM_MODULE_OBJFMT, "elf", &yasm_elf_LTX_objfmt);
- yasm_register_module(YASM_MODULE_OBJFMT, "elf32", &yasm_elf32_LTX_objfmt);
- yasm_register_module(YASM_MODULE_OBJFMT, "elf64", &yasm_elf64_LTX_objfmt);
- yasm_register_module(YASM_MODULE_OBJFMT, "elfx32", &yasm_elfx32_LTX_objfmt);
- yasm_register_module(YASM_MODULE_OBJFMT, "coff", &yasm_coff_LTX_objfmt);
- yasm_register_module(YASM_MODULE_OBJFMT, "win32", &yasm_win32_LTX_objfmt);
- yasm_register_module(YASM_MODULE_OBJFMT, "win64", &yasm_win64_LTX_objfmt);
- yasm_register_module(YASM_MODULE_OBJFMT, "macho", &yasm_macho_LTX_objfmt);
- yasm_register_module(YASM_MODULE_OBJFMT, "macho32", &yasm_macho32_LTX_objfmt);
- yasm_register_module(YASM_MODULE_OBJFMT, "macho64", &yasm_macho64_LTX_objfmt);
- yasm_register_module(YASM_MODULE_OBJFMT, "rdf", &yasm_rdf_LTX_objfmt);
- yasm_register_module(YASM_MODULE_OBJFMT, "xdf", &yasm_xdf_LTX_objfmt);
-}
-
+/* arch_lc3b arch_x86 listfmt_nasm parser_gas parser_nasm preproc_nasm preproc_raw preproc_cpp preproc_gas dbgfmt_cv8 dbgfmt_dwarf2 dbgfmt_null dbgfmt_stabs objfmt_dbg objfmt_bin objfmt_elf objfmt_elf32 objfmt_elf64 objfmt_elfx32 objfmt_coff objfmt_win32 objfmt_win64 objfmt_macho objfmt_macho32 objfmt_macho64 objfmt_rdf objfmt_xdf
+ rev 1
+ */
+
+#include <libyasm.h>
+#include <libyasm/module.h>
+
+extern yasm_arch_module yasm_lc3b_LTX_arch;
+extern yasm_arch_module yasm_x86_LTX_arch;
+extern yasm_listfmt_module yasm_nasm_LTX_listfmt;
+extern yasm_parser_module yasm_gas_LTX_parser;
+extern yasm_parser_module yasm_nasm_LTX_parser;
+extern yasm_preproc_module yasm_nasm_LTX_preproc;
+extern yasm_preproc_module yasm_raw_LTX_preproc;
+extern yasm_preproc_module yasm_cpp_LTX_preproc;
+extern yasm_preproc_module yasm_gas_LTX_preproc;
+extern yasm_dbgfmt_module yasm_cv8_LTX_dbgfmt;
+extern yasm_dbgfmt_module yasm_dwarf2_LTX_dbgfmt;
+extern yasm_dbgfmt_module yasm_null_LTX_dbgfmt;
+extern yasm_dbgfmt_module yasm_stabs_LTX_dbgfmt;
+extern yasm_objfmt_module yasm_dbg_LTX_objfmt;
+extern yasm_objfmt_module yasm_bin_LTX_objfmt;
+extern yasm_objfmt_module yasm_elf_LTX_objfmt;
+extern yasm_objfmt_module yasm_elf32_LTX_objfmt;
+extern yasm_objfmt_module yasm_elf64_LTX_objfmt;
+extern yasm_objfmt_module yasm_elfx32_LTX_objfmt;
+extern yasm_objfmt_module yasm_coff_LTX_objfmt;
+extern yasm_objfmt_module yasm_win32_LTX_objfmt;
+extern yasm_objfmt_module yasm_win64_LTX_objfmt;
+extern yasm_objfmt_module yasm_macho_LTX_objfmt;
+extern yasm_objfmt_module yasm_macho32_LTX_objfmt;
+extern yasm_objfmt_module yasm_macho64_LTX_objfmt;
+extern yasm_objfmt_module yasm_rdf_LTX_objfmt;
+extern yasm_objfmt_module yasm_xdf_LTX_objfmt;
+void
+yasm_init_plugin(void)
+{
+ yasm_register_module(YASM_MODULE_ARCH, "lc3b", &yasm_lc3b_LTX_arch);
+ yasm_register_module(YASM_MODULE_ARCH, "x86", &yasm_x86_LTX_arch);
+ yasm_register_module(YASM_MODULE_LISTFMT, "nasm", &yasm_nasm_LTX_listfmt);
+ yasm_register_module(YASM_MODULE_PARSER, "gas", &yasm_gas_LTX_parser);
+ yasm_register_module(YASM_MODULE_PARSER, "nasm", &yasm_nasm_LTX_parser);
+ yasm_register_module(YASM_MODULE_PREPROC, "nasm", &yasm_nasm_LTX_preproc);
+ yasm_register_module(YASM_MODULE_PREPROC, "raw", &yasm_raw_LTX_preproc);
+ yasm_register_module(YASM_MODULE_PREPROC, "cpp", &yasm_cpp_LTX_preproc);
+ yasm_register_module(YASM_MODULE_PREPROC, "gas", &yasm_gas_LTX_preproc);
+ yasm_register_module(YASM_MODULE_DBGFMT, "cv8", &yasm_cv8_LTX_dbgfmt);
+ yasm_register_module(YASM_MODULE_DBGFMT, "dwarf2", &yasm_dwarf2_LTX_dbgfmt);
+ yasm_register_module(YASM_MODULE_DBGFMT, "null", &yasm_null_LTX_dbgfmt);
+ yasm_register_module(YASM_MODULE_DBGFMT, "stabs", &yasm_stabs_LTX_dbgfmt);
+ yasm_register_module(YASM_MODULE_OBJFMT, "dbg", &yasm_dbg_LTX_objfmt);
+ yasm_register_module(YASM_MODULE_OBJFMT, "bin", &yasm_bin_LTX_objfmt);
+ yasm_register_module(YASM_MODULE_OBJFMT, "elf", &yasm_elf_LTX_objfmt);
+ yasm_register_module(YASM_MODULE_OBJFMT, "elf32", &yasm_elf32_LTX_objfmt);
+ yasm_register_module(YASM_MODULE_OBJFMT, "elf64", &yasm_elf64_LTX_objfmt);
+ yasm_register_module(YASM_MODULE_OBJFMT, "elfx32", &yasm_elfx32_LTX_objfmt);
+ yasm_register_module(YASM_MODULE_OBJFMT, "coff", &yasm_coff_LTX_objfmt);
+ yasm_register_module(YASM_MODULE_OBJFMT, "win32", &yasm_win32_LTX_objfmt);
+ yasm_register_module(YASM_MODULE_OBJFMT, "win64", &yasm_win64_LTX_objfmt);
+ yasm_register_module(YASM_MODULE_OBJFMT, "macho", &yasm_macho_LTX_objfmt);
+ yasm_register_module(YASM_MODULE_OBJFMT, "macho32", &yasm_macho32_LTX_objfmt);
+ yasm_register_module(YASM_MODULE_OBJFMT, "macho64", &yasm_macho64_LTX_objfmt);
+ yasm_register_module(YASM_MODULE_OBJFMT, "rdf", &yasm_rdf_LTX_objfmt);
+ yasm_register_module(YASM_MODULE_OBJFMT, "xdf", &yasm_xdf_LTX_objfmt);
+}
+
void
yasm_plugin_set_replace(const char* replace_params[], int size) {
yasm_dwarf2_LTX_dbgfmt.replace_map = replace_params;
diff --git a/contrib/tools/yasm/modules/lc3bid.c b/contrib/tools/yasm/modules/lc3bid.c
index 724fa9f166..89903bca51 100644
--- a/contrib/tools/yasm/modules/lc3bid.c
+++ b/contrib/tools/yasm/modules/lc3bid.c
@@ -1,915 +1,915 @@
-/* Generated by re2c
- */
-/*
- * LC-3b identifier recognition and instruction handling
- *
- * Copyright (C) 2003-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <libyasm.h>
-
-#include "modules/arch/lc3b/lc3barch.h"
-
-
-/* Opcode modifiers. The opcode bytes are in "reverse" order because the
- * parameters are read from the arch-specific data in LSB->MSB order.
- * (only for asthetic reasons in the lexer code below, no practical reason).
- */
-#define MOD_OpHAdd (1UL<<0) /* Parameter adds to upper 8 bits of insn */
-#define MOD_OpLAdd (1UL<<1) /* Parameter adds to lower 8 bits of insn */
-
-/* Operand types. These are more detailed than the "general" types for all
- * architectures, as they include the size, for instance.
- * Bit Breakdown (from LSB to MSB):
- * - 1 bit = general type (must be exact match, except for =3):
- * 0 = immediate
- * 1 = register
- *
- * MSBs than the above are actions: what to do with the operand if the
- * instruction matches. Essentially describes what part of the output bytecode
- * gets the operand. This may require conversion (e.g. a register going into
- * an ea field). Naturally, only one of each of these may be contained in the
- * operands of a single insn_info structure.
- * - 2 bits = action:
- * 0 = does nothing (operand data is discarded)
- * 1 = DR field
- * 2 = SR field
- * 3 = immediate
- *
- * Immediate operands can have different sizes.
- * - 3 bits = size:
- * 0 = no immediate
- * 1 = 4-bit immediate
- * 2 = 5-bit immediate
- * 3 = 6-bit index, word (16 bit)-multiple
- * 4 = 6-bit index, byte-multiple
- * 5 = 8-bit immediate, word-multiple
- * 6 = 9-bit signed immediate, word-multiple
- * 7 = 9-bit signed offset from next PC ($+2), word-multiple
- */
-#define OPT_Imm 0x0
-#define OPT_Reg 0x1
-#define OPT_MASK 0x1
-
-#define OPA_None (0<<1)
-#define OPA_DR (1<<1)
-#define OPA_SR (2<<1)
-#define OPA_Imm (3<<1)
-#define OPA_MASK (3<<1)
-
-#define OPI_None (LC3B_IMM_NONE<<3)
-#define OPI_4 (LC3B_IMM_4<<3)
-#define OPI_5 (LC3B_IMM_5<<3)
-#define OPI_6W (LC3B_IMM_6_WORD<<3)
-#define OPI_6B (LC3B_IMM_6_BYTE<<3)
-#define OPI_8 (LC3B_IMM_8<<3)
-#define OPI_9 (LC3B_IMM_9<<3)
-#define OPI_9PC (LC3B_IMM_9_PC<<3)
-#define OPI_MASK (7<<3)
-
-typedef struct lc3b_insn_info {
- /* Opcode modifiers for variations of instruction. As each modifier reads
- * its parameter in LSB->MSB order from the arch-specific data[1] from the
- * lexer data, and the LSB of the arch-specific data[1] is reserved for the
- * count of insn_info structures in the instruction grouping, there can
- * only be a maximum of 3 modifiers.
- */
- unsigned int modifiers;
-
- /* The basic 2 byte opcode */
- unsigned int opcode;
-
- /* The number of operands this form of the instruction takes */
- unsigned char num_operands;
-
- /* The types of each operand, see above */
- unsigned int operands[3];
-} lc3b_insn_info;
-
-typedef struct lc3b_id_insn {
- yasm_insn insn; /* base structure */
-
- /* instruction parse group - NULL if empty instruction (just prefixes) */
- /*@null@*/ const lc3b_insn_info *group;
-
- /* Modifier data */
- unsigned long mod_data;
-
- /* Number of elements in the instruction parse group */
- unsigned int num_info:8;
-} lc3b_id_insn;
-
-static void lc3b_id_insn_destroy(void *contents);
-static void lc3b_id_insn_print(const void *contents, FILE *f, int indent_level);
-static void lc3b_id_insn_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc);
-
-static const yasm_bytecode_callback lc3b_id_insn_callback = {
- lc3b_id_insn_destroy,
- lc3b_id_insn_print,
- lc3b_id_insn_finalize,
- NULL,
- yasm_bc_calc_len_common,
- yasm_bc_expand_common,
- yasm_bc_tobytes_common,
- YASM_BC_SPECIAL_INSN
-};
-
-/*
- * Instruction groupings
- */
-
-static const lc3b_insn_info empty_insn[] = {
- { 0, 0, 0, {0, 0, 0} }
-};
-
-static const lc3b_insn_info addand_insn[] = {
- { MOD_OpHAdd, 0x1000, 3,
- {OPT_Reg|OPA_DR, OPT_Reg|OPA_SR, OPT_Reg|OPA_Imm|OPI_5} },
- { MOD_OpHAdd, 0x1020, 3,
- {OPT_Reg|OPA_DR, OPT_Reg|OPA_SR, OPT_Imm|OPA_Imm|OPI_5} }
-};
-
-static const lc3b_insn_info br_insn[] = {
- { MOD_OpHAdd, 0x0000, 1, {OPT_Imm|OPA_Imm|OPI_9PC, 0, 0} }
-};
-
-static const lc3b_insn_info jmp_insn[] = {
- { 0, 0xC000, 2, {OPT_Reg|OPA_DR, OPT_Imm|OPA_Imm|OPI_9, 0} }
-};
-
-static const lc3b_insn_info lea_insn[] = {
- { 0, 0xE000, 2, {OPT_Reg|OPA_DR, OPT_Imm|OPA_Imm|OPI_9PC, 0} }
-};
-
-static const lc3b_insn_info ldst_insn[] = {
- { MOD_OpHAdd, 0x0000, 3,
- {OPT_Reg|OPA_DR, OPT_Reg|OPA_SR, OPT_Imm|OPA_Imm|OPI_6W} }
-};
-
-static const lc3b_insn_info ldstb_insn[] = {
- { MOD_OpHAdd, 0x0000, 3,
- {OPT_Reg|OPA_DR, OPT_Reg|OPA_SR, OPT_Imm|OPA_Imm|OPI_6B} }
-};
-
-static const lc3b_insn_info not_insn[] = {
- { 0, 0x903F, 2, {OPT_Reg|OPA_DR, OPT_Reg|OPA_SR, 0} }
-};
-
-static const lc3b_insn_info nooperand_insn[] = {
- { MOD_OpHAdd, 0x0000, 0, {0, 0, 0} }
-};
-
-static const lc3b_insn_info shift_insn[] = {
- { MOD_OpLAdd, 0xD000, 3,
- {OPT_Reg|OPA_DR, OPT_Reg|OPA_SR, OPT_Imm|OPA_Imm|OPI_4} }
-};
-
-static const lc3b_insn_info trap_insn[] = {
- { 0, 0xF000, 1, {OPT_Imm|OPA_Imm|OPI_8, 0, 0} }
-};
-
-static void
-lc3b_id_insn_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc)
-{
- lc3b_id_insn *id_insn = (lc3b_id_insn *)bc->contents;
- lc3b_insn *insn;
- int num_info = id_insn->num_info;
- const lc3b_insn_info *info = id_insn->group;
- unsigned long mod_data = id_insn->mod_data;
- int found = 0;
- yasm_insn_operand *op;
- int i;
-
- yasm_insn_finalize(&id_insn->insn);
-
- /* Just do a simple linear search through the info array for a match.
- * First match wins.
- */
- for (; num_info>0 && !found; num_info--, info++) {
- int mismatch = 0;
-
- /* Match # of operands */
- if (id_insn->insn.num_operands != info->num_operands)
- continue;
-
- if (id_insn->insn.num_operands == 0) {
- found = 1; /* no operands -> must have a match here. */
- break;
- }
-
- /* Match each operand type and size */
- for(i = 0, op = yasm_insn_ops_first(&id_insn->insn);
- op && i<info->num_operands && !mismatch;
- op = yasm_insn_op_next(op), i++) {
- /* Check operand type */
- switch ((int)(info->operands[i] & OPT_MASK)) {
- case OPT_Imm:
- if (op->type != YASM_INSN__OPERAND_IMM)
- mismatch = 1;
- break;
- case OPT_Reg:
- if (op->type != YASM_INSN__OPERAND_REG)
- mismatch = 1;
- break;
- default:
- yasm_internal_error(N_("invalid operand type"));
- }
-
- if (mismatch)
- break;
- }
-
- if (!mismatch) {
- found = 1;
- break;
- }
- }
-
- if (!found) {
- /* Didn't find a matching one */
- yasm_error_set(YASM_ERROR_TYPE,
- N_("invalid combination of opcode and operands"));
- return;
- }
-
- /* Copy what we can from info */
- insn = yasm_xmalloc(sizeof(lc3b_insn));
- yasm_value_initialize(&insn->imm, NULL, 0);
- insn->imm_type = LC3B_IMM_NONE;
- insn->opcode = info->opcode;
-
- /* Apply modifiers */
- if (info->modifiers & MOD_OpHAdd) {
- insn->opcode += ((unsigned int)(mod_data & 0xFF))<<8;
- mod_data >>= 8;
- }
- if (info->modifiers & MOD_OpLAdd) {
- insn->opcode += (unsigned int)(mod_data & 0xFF);
- /*mod_data >>= 8;*/
- }
-
- /* Go through operands and assign */
- if (id_insn->insn.num_operands > 0) {
- for(i = 0, op = yasm_insn_ops_first(&id_insn->insn);
- op && i<info->num_operands; op = yasm_insn_op_next(op), i++) {
-
- switch ((int)(info->operands[i] & OPA_MASK)) {
- case OPA_None:
- /* Throw away the operand contents */
- if (op->type == YASM_INSN__OPERAND_IMM)
- yasm_expr_destroy(op->data.val);
- break;
- case OPA_DR:
- if (op->type != YASM_INSN__OPERAND_REG)
- yasm_internal_error(N_("invalid operand conversion"));
- insn->opcode |= ((unsigned int)(op->data.reg & 0x7)) << 9;
- break;
- case OPA_SR:
- if (op->type != YASM_INSN__OPERAND_REG)
- yasm_internal_error(N_("invalid operand conversion"));
- insn->opcode |= ((unsigned int)(op->data.reg & 0x7)) << 6;
- break;
- case OPA_Imm:
- insn->imm_type = (info->operands[i] & OPI_MASK)>>3;
- switch (op->type) {
- case YASM_INSN__OPERAND_IMM:
- if (insn->imm_type == LC3B_IMM_6_WORD
- || insn->imm_type == LC3B_IMM_8
- || insn->imm_type == LC3B_IMM_9
- || insn->imm_type == LC3B_IMM_9_PC)
- op->data.val = yasm_expr_create(YASM_EXPR_SHR,
- yasm_expr_expr(op->data.val),
- yasm_expr_int(yasm_intnum_create_uint(1)),
- op->data.val->line);
- if (yasm_value_finalize_expr(&insn->imm,
- op->data.val,
- prev_bc, 0))
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("immediate expression too complex"));
- break;
- case YASM_INSN__OPERAND_REG:
- if (yasm_value_finalize_expr(&insn->imm,
- yasm_expr_create_ident(yasm_expr_int(
- yasm_intnum_create_uint(op->data.reg & 0x7)),
- bc->line), prev_bc, 0))
- yasm_internal_error(N_("reg expr too complex?"));
- break;
- default:
- yasm_internal_error(N_("invalid operand conversion"));
- }
- break;
- default:
- yasm_internal_error(N_("unknown operand action"));
- }
-
- /* Clear so it doesn't get destroyed */
- op->type = YASM_INSN__OPERAND_REG;
- }
-
- if (insn->imm_type == LC3B_IMM_9_PC) {
- if (insn->imm.seg_of || insn->imm.rshift > 1
- || insn->imm.curpos_rel)
- yasm_error_set(YASM_ERROR_VALUE, N_("invalid jump target"));
- insn->imm.curpos_rel = 1;
- }
- }
-
- /* Transform the bytecode */
- yasm_lc3b__bc_transform_insn(bc, insn);
-}
-
-
-#define YYCTYPE unsigned char
-#define YYCURSOR id
-#define YYLIMIT id
-#define YYMARKER marker
-#define YYFILL(n) (void)(n)
-
-yasm_arch_regtmod
-yasm_lc3b__parse_check_regtmod(yasm_arch *arch, const char *oid, size_t id_len,
- uintptr_t *data)
-{
- const YYCTYPE *id = (const YYCTYPE *)oid;
- /*const char *marker;*/
-
-{
- YYCTYPE yych;
- goto yy0;
- ++YYCURSOR;
-yy0:
- if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
- yych = *YYCURSOR;
- if(yych <= 'R'){
- if(yych <= '\000') goto yy6;
- if(yych <= 'Q') goto yy4;
- goto yy2;
- } else {
- if(yych != 'r') goto yy4;
- goto yy2;
- }
-yy2: yych = *++YYCURSOR;
- if(yych <= '/') goto yy5;
- if(yych <= '7') goto yy8;
- goto yy5;
-yy3:
-{
- return YASM_ARCH_NOTREGTMOD;
- }
-yy4: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy5;
-yy5: if(yych <= '\000') goto yy3;
- goto yy4;
-yy6: yych = *++YYCURSOR;
- goto yy7;
-yy7:
-{
- return YASM_ARCH_NOTREGTMOD;
- }
-yy8: yych = *++YYCURSOR;
- if(yych >= '\001') goto yy4;
- goto yy9;
-yy9:
-{
- *data = (oid[1]-'0');
- return YASM_ARCH_REG;
- }
-}
-
-}
-
-#define RET_INSN(g, m) \
- do { \
- group = g##_insn; \
- mod = m; \
- nelems = NELEMS(g##_insn); \
- goto done; \
- } while(0)
-
-yasm_arch_insnprefix
-yasm_lc3b__parse_check_insnprefix(yasm_arch *arch, const char *oid,
- size_t id_len, unsigned long line,
- yasm_bytecode **bc, uintptr_t *prefix)
-{
- const YYCTYPE *id = (const YYCTYPE *)oid;
- const lc3b_insn_info *group = empty_insn;
- unsigned long mod = 0;
- unsigned int nelems = NELEMS(empty_insn);
- lc3b_id_insn *id_insn;
-
- *bc = (yasm_bytecode *)NULL;
- *prefix = 0;
-
- /*const char *marker;*/
-
-{
- YYCTYPE yych;
- goto yy10;
- ++YYCURSOR;
-yy10:
- if((YYLIMIT - YYCURSOR) < 6) YYFILL(6);
- yych = *YYCURSOR;
- if(yych <= 'T'){
- if(yych <= 'K'){
- if(yych <= 'A'){
- if(yych <= '\000') goto yy23;
- if(yych <= '@') goto yy21;
- goto yy12;
- } else {
- if(yych <= 'B') goto yy14;
- if(yych == 'J') goto yy15;
- goto yy21;
- }
- } else {
- if(yych <= 'N'){
- if(yych <= 'L') goto yy16;
- if(yych <= 'M') goto yy21;
- goto yy18;
- } else {
- if(yych <= 'Q') goto yy21;
- if(yych <= 'R') goto yy19;
- if(yych <= 'S') goto yy17;
- goto yy20;
- }
- }
- } else {
- if(yych <= 'l'){
- if(yych <= 'b'){
- if(yych <= '`') goto yy21;
- if(yych >= 'b') goto yy14;
- goto yy12;
- } else {
- if(yych == 'j') goto yy15;
- if(yych <= 'k') goto yy21;
- goto yy16;
- }
- } else {
- if(yych <= 'q'){
- if(yych == 'n') goto yy18;
- goto yy21;
- } else {
- if(yych <= 'r') goto yy19;
- if(yych <= 's') goto yy17;
- if(yych <= 't') goto yy20;
- goto yy21;
- }
- }
- }
-yy12: yych = *++YYCURSOR;
- if(yych <= 'N'){
- if(yych == 'D') goto yy88;
- if(yych <= 'M') goto yy22;
- goto yy89;
- } else {
- if(yych <= 'd'){
- if(yych <= 'c') goto yy22;
- goto yy88;
- } else {
- if(yych == 'n') goto yy89;
- goto yy22;
- }
- }
-yy13:
-{
- return YASM_ARCH_NOTINSNPREFIX;
- }
-yy14: yych = *++YYCURSOR;
- if(yych == 'R') goto yy72;
- if(yych == 'r') goto yy72;
- goto yy22;
-yy15: yych = *++YYCURSOR;
- if(yych <= 'S'){
- if(yych == 'M') goto yy66;
- if(yych <= 'R') goto yy22;
- goto yy67;
- } else {
- if(yych <= 'm'){
- if(yych <= 'l') goto yy22;
- goto yy66;
- } else {
- if(yych == 's') goto yy67;
- goto yy22;
- }
- }
-yy16: yych = *++YYCURSOR;
- if(yych <= 'S'){
- if(yych <= 'D'){
- if(yych <= 'C') goto yy22;
- goto yy53;
- } else {
- if(yych <= 'E') goto yy55;
- if(yych <= 'R') goto yy22;
- goto yy56;
- }
- } else {
- if(yych <= 'e'){
- if(yych <= 'c') goto yy22;
- if(yych <= 'd') goto yy53;
- goto yy55;
- } else {
- if(yych == 's') goto yy56;
- goto yy22;
- }
- }
-yy17: yych = *++YYCURSOR;
- if(yych == 'T') goto yy47;
- if(yych == 't') goto yy47;
- goto yy22;
-yy18: yych = *++YYCURSOR;
- if(yych == 'O') goto yy42;
- if(yych == 'o') goto yy42;
- goto yy22;
-yy19: yych = *++YYCURSOR;
- if(yych <= 'T'){
- if(yych <= 'E'){
- if(yych <= 'D') goto yy22;
- goto yy29;
- } else {
- if(yych <= 'R') goto yy22;
- if(yych <= 'S') goto yy30;
- goto yy31;
- }
- } else {
- if(yych <= 'r'){
- if(yych == 'e') goto yy29;
- goto yy22;
- } else {
- if(yych <= 's') goto yy30;
- if(yych <= 't') goto yy31;
- goto yy22;
- }
- }
-yy20: yych = *++YYCURSOR;
- if(yych == 'R') goto yy25;
- if(yych == 'r') goto yy25;
- goto yy22;
-yy21: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy22;
-yy22: if(yych <= '\000') goto yy13;
- goto yy21;
-yy23: yych = *++YYCURSOR;
- goto yy24;
-yy24:
-{
- return YASM_ARCH_NOTINSNPREFIX;
- }
-yy25: yych = *++YYCURSOR;
- if(yych == 'A') goto yy26;
- if(yych != 'a') goto yy22;
- goto yy26;
-yy26: yych = *++YYCURSOR;
- if(yych == 'P') goto yy27;
- if(yych != 'p') goto yy22;
- goto yy27;
-yy27: yych = *++YYCURSOR;
- if(yych >= '\001') goto yy21;
- goto yy28;
-yy28:
-{ RET_INSN(trap, 0); }
-yy29: yych = *++YYCURSOR;
- if(yych == 'T') goto yy40;
- if(yych == 't') goto yy40;
- goto yy22;
-yy30: yych = *++YYCURSOR;
- if(yych == 'H') goto yy34;
- if(yych == 'h') goto yy34;
- goto yy22;
-yy31: yych = *++YYCURSOR;
- if(yych == 'I') goto yy32;
- if(yych != 'i') goto yy22;
- goto yy32;
-yy32: yych = *++YYCURSOR;
- if(yych >= '\001') goto yy21;
- goto yy33;
-yy33:
-{ RET_INSN(nooperand, 0x80); }
-yy34: yych = *++YYCURSOR;
- if(yych == 'F') goto yy35;
- if(yych != 'f') goto yy22;
- goto yy35;
-yy35: yych = *++YYCURSOR;
- if(yych <= 'L'){
- if(yych == 'A') goto yy38;
- if(yych <= 'K') goto yy22;
- goto yy36;
- } else {
- if(yych <= 'a'){
- if(yych <= '`') goto yy22;
- goto yy38;
- } else {
- if(yych != 'l') goto yy22;
- goto yy36;
- }
- }
-yy36: yych = *++YYCURSOR;
- if(yych >= '\001') goto yy21;
- goto yy37;
-yy37:
-{ RET_INSN(shift, 0x10); }
-yy38: yych = *++YYCURSOR;
- if(yych >= '\001') goto yy21;
- goto yy39;
-yy39:
-{ RET_INSN(shift, 0x30); }
-yy40: yych = *++YYCURSOR;
- if(yych >= '\001') goto yy21;
- goto yy41;
-yy41:
-{ RET_INSN(nooperand, 0xCE); }
-yy42: yych = *++YYCURSOR;
- if(yych <= 'T'){
- if(yych == 'P') goto yy45;
- if(yych <= 'S') goto yy22;
- goto yy43;
- } else {
- if(yych <= 'p'){
- if(yych <= 'o') goto yy22;
- goto yy45;
- } else {
- if(yych != 't') goto yy22;
- goto yy43;
- }
- }
-yy43: yych = *++YYCURSOR;
- if(yych >= '\001') goto yy21;
- goto yy44;
-yy44:
-{ RET_INSN(not, 0); }
-yy45: yych = *++YYCURSOR;
- if(yych >= '\001') goto yy21;
- goto yy46;
-yy46:
-{ RET_INSN(nooperand, 0); }
-yy47: yych = *++YYCURSOR;
- if(yych <= 'I'){
- if(yych <= 'A'){
- if(yych >= '\001') goto yy21;
- goto yy48;
- } else {
- if(yych <= 'B') goto yy51;
- if(yych <= 'H') goto yy21;
- goto yy49;
- }
- } else {
- if(yych <= 'b'){
- if(yych <= 'a') goto yy21;
- goto yy51;
- } else {
- if(yych == 'i') goto yy49;
- goto yy21;
- }
- }
-yy48:
-{ RET_INSN(ldst, 0x30); }
-yy49: yych = *++YYCURSOR;
- if(yych >= '\001') goto yy21;
- goto yy50;
-yy50:
-{ RET_INSN(ldst, 0xB0); }
-yy51: yych = *++YYCURSOR;
- if(yych >= '\001') goto yy21;
- goto yy52;
-yy52:
-{ RET_INSN(ldstb, 0x70); }
-yy53: yych = *++YYCURSOR;
- if(yych <= 'I'){
- if(yych <= 'A'){
- if(yych >= '\001') goto yy21;
- goto yy54;
- } else {
- if(yych <= 'B') goto yy64;
- if(yych <= 'H') goto yy21;
- goto yy62;
- }
- } else {
- if(yych <= 'b'){
- if(yych <= 'a') goto yy21;
- goto yy64;
- } else {
- if(yych == 'i') goto yy62;
- goto yy21;
- }
- }
-yy54:
-{ RET_INSN(ldst, 0x20); }
-yy55: yych = *++YYCURSOR;
- if(yych == 'A') goto yy60;
- if(yych == 'a') goto yy60;
- goto yy22;
-yy56: yych = *++YYCURSOR;
- if(yych == 'H') goto yy57;
- if(yych != 'h') goto yy22;
- goto yy57;
-yy57: yych = *++YYCURSOR;
- if(yych == 'F') goto yy58;
- if(yych != 'f') goto yy22;
- goto yy58;
-yy58: yych = *++YYCURSOR;
- if(yych >= '\001') goto yy21;
- goto yy59;
-yy59:
-{ RET_INSN(shift, 0x00); }
-yy60: yych = *++YYCURSOR;
- if(yych >= '\001') goto yy21;
- goto yy61;
-yy61:
-{ RET_INSN(lea, 0); }
-yy62: yych = *++YYCURSOR;
- if(yych >= '\001') goto yy21;
- goto yy63;
-yy63:
-{ RET_INSN(ldst, 0xA0); }
-yy64: yych = *++YYCURSOR;
- if(yych >= '\001') goto yy21;
- goto yy65;
-yy65:
-{ RET_INSN(ldstb, 0x60); }
-yy66: yych = *++YYCURSOR;
- if(yych == 'P') goto yy70;
- if(yych == 'p') goto yy70;
- goto yy22;
-yy67: yych = *++YYCURSOR;
- if(yych == 'R') goto yy68;
- if(yych != 'r') goto yy22;
- goto yy68;
-yy68: yych = *++YYCURSOR;
- if(yych >= '\001') goto yy21;
- goto yy69;
-yy69:
-{ RET_INSN(br, 0x40); }
-yy70: yych = *++YYCURSOR;
- if(yych >= '\001') goto yy21;
- goto yy71;
-yy71:
-{ RET_INSN(jmp, 0); }
-yy72: yych = *++YYCURSOR;
- if(yych <= 'Z'){
- if(yych <= 'N'){
- if(yych <= '\000') goto yy73;
- if(yych <= 'M') goto yy21;
- goto yy74;
- } else {
- if(yych == 'P') goto yy78;
- if(yych <= 'Y') goto yy21;
- goto yy76;
- }
- } else {
- if(yych <= 'o'){
- if(yych == 'n') goto yy74;
- goto yy21;
- } else {
- if(yych <= 'p') goto yy78;
- if(yych == 'z') goto yy76;
- goto yy21;
- }
- }
-yy73:
-{ RET_INSN(br, 0x00); }
-yy74: yych = *++YYCURSOR;
- if(yych <= 'Z'){
- if(yych <= 'O'){
- if(yych >= '\001') goto yy21;
- goto yy75;
- } else {
- if(yych <= 'P') goto yy82;
- if(yych <= 'Y') goto yy21;
- goto yy84;
- }
- } else {
- if(yych <= 'p'){
- if(yych <= 'o') goto yy21;
- goto yy82;
- } else {
- if(yych == 'z') goto yy84;
- goto yy21;
- }
- }
-yy75:
-{ RET_INSN(br, 0x08); }
-yy76: yych = *++YYCURSOR;
- if(yych <= 'P'){
- if(yych <= '\000') goto yy77;
- if(yych <= 'O') goto yy21;
- goto yy80;
- } else {
- if(yych == 'p') goto yy80;
- goto yy21;
- }
-yy77:
-{ RET_INSN(br, 0x04); }
-yy78: yych = *++YYCURSOR;
- if(yych >= '\001') goto yy21;
- goto yy79;
-yy79:
-{ RET_INSN(br, 0x02); }
-yy80: yych = *++YYCURSOR;
- if(yych >= '\001') goto yy21;
- goto yy81;
-yy81:
-{ RET_INSN(br, 0x06); }
-yy82: yych = *++YYCURSOR;
- if(yych >= '\001') goto yy21;
- goto yy83;
-yy83:
-{ RET_INSN(br, 0x0A); }
-yy84: yych = *++YYCURSOR;
- if(yych <= 'P'){
- if(yych <= '\000') goto yy85;
- if(yych <= 'O') goto yy21;
- goto yy86;
- } else {
- if(yych == 'p') goto yy86;
- goto yy21;
- }
-yy85:
-{ RET_INSN(br, 0x0C); }
-yy86: yych = *++YYCURSOR;
- if(yych >= '\001') goto yy21;
- goto yy87;
-yy87:
-{ RET_INSN(br, 0x0E); }
-yy88: yych = *++YYCURSOR;
- if(yych == 'D') goto yy92;
- if(yych == 'd') goto yy92;
- goto yy22;
-yy89: yych = *++YYCURSOR;
- if(yych == 'D') goto yy90;
- if(yych != 'd') goto yy22;
- goto yy90;
-yy90: yych = *++YYCURSOR;
- if(yych >= '\001') goto yy21;
- goto yy91;
-yy91:
-{ RET_INSN(addand, 0x40); }
-yy92: yych = *++YYCURSOR;
- if(yych >= '\001') goto yy21;
- goto yy93;
-yy93:
-{ RET_INSN(addand, 0x00); }
-}
-
-
-done:
- id_insn = yasm_xmalloc(sizeof(lc3b_id_insn));
- yasm_insn_initialize(&id_insn->insn);
- id_insn->group = group;
- id_insn->mod_data = mod;
- id_insn->num_info = nelems;
- *bc = yasm_bc_create_common(&lc3b_id_insn_callback, id_insn, line);
- return YASM_ARCH_INSN;
-}
-
-static void
-lc3b_id_insn_destroy(void *contents)
-{
- lc3b_id_insn *id_insn = (lc3b_id_insn *)contents;
- yasm_insn_delete(&id_insn->insn, yasm_lc3b__ea_destroy);
- yasm_xfree(contents);
-}
-
-static void
-lc3b_id_insn_print(const void *contents, FILE *f, int indent_level)
-{
- const lc3b_id_insn *id_insn = (const lc3b_id_insn *)contents;
- yasm_insn_print(&id_insn->insn, f, indent_level);
- /*TODO*/
-}
-
-/*@only@*/ yasm_bytecode *
-yasm_lc3b__create_empty_insn(yasm_arch *arch, unsigned long line)
-{
- lc3b_id_insn *id_insn = yasm_xmalloc(sizeof(lc3b_id_insn));
-
- yasm_insn_initialize(&id_insn->insn);
- id_insn->group = empty_insn;
- id_insn->mod_data = 0;
- id_insn->num_info = NELEMS(empty_insn);
-
- return yasm_bc_create_common(&lc3b_id_insn_callback, id_insn, line);
-}
-
+/* Generated by re2c
+ */
+/*
+ * LC-3b identifier recognition and instruction handling
+ *
+ * Copyright (C) 2003-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <libyasm.h>
+
+#include "modules/arch/lc3b/lc3barch.h"
+
+
+/* Opcode modifiers. The opcode bytes are in "reverse" order because the
+ * parameters are read from the arch-specific data in LSB->MSB order.
+ * (only for asthetic reasons in the lexer code below, no practical reason).
+ */
+#define MOD_OpHAdd (1UL<<0) /* Parameter adds to upper 8 bits of insn */
+#define MOD_OpLAdd (1UL<<1) /* Parameter adds to lower 8 bits of insn */
+
+/* Operand types. These are more detailed than the "general" types for all
+ * architectures, as they include the size, for instance.
+ * Bit Breakdown (from LSB to MSB):
+ * - 1 bit = general type (must be exact match, except for =3):
+ * 0 = immediate
+ * 1 = register
+ *
+ * MSBs than the above are actions: what to do with the operand if the
+ * instruction matches. Essentially describes what part of the output bytecode
+ * gets the operand. This may require conversion (e.g. a register going into
+ * an ea field). Naturally, only one of each of these may be contained in the
+ * operands of a single insn_info structure.
+ * - 2 bits = action:
+ * 0 = does nothing (operand data is discarded)
+ * 1 = DR field
+ * 2 = SR field
+ * 3 = immediate
+ *
+ * Immediate operands can have different sizes.
+ * - 3 bits = size:
+ * 0 = no immediate
+ * 1 = 4-bit immediate
+ * 2 = 5-bit immediate
+ * 3 = 6-bit index, word (16 bit)-multiple
+ * 4 = 6-bit index, byte-multiple
+ * 5 = 8-bit immediate, word-multiple
+ * 6 = 9-bit signed immediate, word-multiple
+ * 7 = 9-bit signed offset from next PC ($+2), word-multiple
+ */
+#define OPT_Imm 0x0
+#define OPT_Reg 0x1
+#define OPT_MASK 0x1
+
+#define OPA_None (0<<1)
+#define OPA_DR (1<<1)
+#define OPA_SR (2<<1)
+#define OPA_Imm (3<<1)
+#define OPA_MASK (3<<1)
+
+#define OPI_None (LC3B_IMM_NONE<<3)
+#define OPI_4 (LC3B_IMM_4<<3)
+#define OPI_5 (LC3B_IMM_5<<3)
+#define OPI_6W (LC3B_IMM_6_WORD<<3)
+#define OPI_6B (LC3B_IMM_6_BYTE<<3)
+#define OPI_8 (LC3B_IMM_8<<3)
+#define OPI_9 (LC3B_IMM_9<<3)
+#define OPI_9PC (LC3B_IMM_9_PC<<3)
+#define OPI_MASK (7<<3)
+
+typedef struct lc3b_insn_info {
+ /* Opcode modifiers for variations of instruction. As each modifier reads
+ * its parameter in LSB->MSB order from the arch-specific data[1] from the
+ * lexer data, and the LSB of the arch-specific data[1] is reserved for the
+ * count of insn_info structures in the instruction grouping, there can
+ * only be a maximum of 3 modifiers.
+ */
+ unsigned int modifiers;
+
+ /* The basic 2 byte opcode */
+ unsigned int opcode;
+
+ /* The number of operands this form of the instruction takes */
+ unsigned char num_operands;
+
+ /* The types of each operand, see above */
+ unsigned int operands[3];
+} lc3b_insn_info;
+
+typedef struct lc3b_id_insn {
+ yasm_insn insn; /* base structure */
+
+ /* instruction parse group - NULL if empty instruction (just prefixes) */
+ /*@null@*/ const lc3b_insn_info *group;
+
+ /* Modifier data */
+ unsigned long mod_data;
+
+ /* Number of elements in the instruction parse group */
+ unsigned int num_info:8;
+} lc3b_id_insn;
+
+static void lc3b_id_insn_destroy(void *contents);
+static void lc3b_id_insn_print(const void *contents, FILE *f, int indent_level);
+static void lc3b_id_insn_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc);
+
+static const yasm_bytecode_callback lc3b_id_insn_callback = {
+ lc3b_id_insn_destroy,
+ lc3b_id_insn_print,
+ lc3b_id_insn_finalize,
+ NULL,
+ yasm_bc_calc_len_common,
+ yasm_bc_expand_common,
+ yasm_bc_tobytes_common,
+ YASM_BC_SPECIAL_INSN
+};
+
+/*
+ * Instruction groupings
+ */
+
+static const lc3b_insn_info empty_insn[] = {
+ { 0, 0, 0, {0, 0, 0} }
+};
+
+static const lc3b_insn_info addand_insn[] = {
+ { MOD_OpHAdd, 0x1000, 3,
+ {OPT_Reg|OPA_DR, OPT_Reg|OPA_SR, OPT_Reg|OPA_Imm|OPI_5} },
+ { MOD_OpHAdd, 0x1020, 3,
+ {OPT_Reg|OPA_DR, OPT_Reg|OPA_SR, OPT_Imm|OPA_Imm|OPI_5} }
+};
+
+static const lc3b_insn_info br_insn[] = {
+ { MOD_OpHAdd, 0x0000, 1, {OPT_Imm|OPA_Imm|OPI_9PC, 0, 0} }
+};
+
+static const lc3b_insn_info jmp_insn[] = {
+ { 0, 0xC000, 2, {OPT_Reg|OPA_DR, OPT_Imm|OPA_Imm|OPI_9, 0} }
+};
+
+static const lc3b_insn_info lea_insn[] = {
+ { 0, 0xE000, 2, {OPT_Reg|OPA_DR, OPT_Imm|OPA_Imm|OPI_9PC, 0} }
+};
+
+static const lc3b_insn_info ldst_insn[] = {
+ { MOD_OpHAdd, 0x0000, 3,
+ {OPT_Reg|OPA_DR, OPT_Reg|OPA_SR, OPT_Imm|OPA_Imm|OPI_6W} }
+};
+
+static const lc3b_insn_info ldstb_insn[] = {
+ { MOD_OpHAdd, 0x0000, 3,
+ {OPT_Reg|OPA_DR, OPT_Reg|OPA_SR, OPT_Imm|OPA_Imm|OPI_6B} }
+};
+
+static const lc3b_insn_info not_insn[] = {
+ { 0, 0x903F, 2, {OPT_Reg|OPA_DR, OPT_Reg|OPA_SR, 0} }
+};
+
+static const lc3b_insn_info nooperand_insn[] = {
+ { MOD_OpHAdd, 0x0000, 0, {0, 0, 0} }
+};
+
+static const lc3b_insn_info shift_insn[] = {
+ { MOD_OpLAdd, 0xD000, 3,
+ {OPT_Reg|OPA_DR, OPT_Reg|OPA_SR, OPT_Imm|OPA_Imm|OPI_4} }
+};
+
+static const lc3b_insn_info trap_insn[] = {
+ { 0, 0xF000, 1, {OPT_Imm|OPA_Imm|OPI_8, 0, 0} }
+};
+
+static void
+lc3b_id_insn_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc)
+{
+ lc3b_id_insn *id_insn = (lc3b_id_insn *)bc->contents;
+ lc3b_insn *insn;
+ int num_info = id_insn->num_info;
+ const lc3b_insn_info *info = id_insn->group;
+ unsigned long mod_data = id_insn->mod_data;
+ int found = 0;
+ yasm_insn_operand *op;
+ int i;
+
+ yasm_insn_finalize(&id_insn->insn);
+
+ /* Just do a simple linear search through the info array for a match.
+ * First match wins.
+ */
+ for (; num_info>0 && !found; num_info--, info++) {
+ int mismatch = 0;
+
+ /* Match # of operands */
+ if (id_insn->insn.num_operands != info->num_operands)
+ continue;
+
+ if (id_insn->insn.num_operands == 0) {
+ found = 1; /* no operands -> must have a match here. */
+ break;
+ }
+
+ /* Match each operand type and size */
+ for(i = 0, op = yasm_insn_ops_first(&id_insn->insn);
+ op && i<info->num_operands && !mismatch;
+ op = yasm_insn_op_next(op), i++) {
+ /* Check operand type */
+ switch ((int)(info->operands[i] & OPT_MASK)) {
+ case OPT_Imm:
+ if (op->type != YASM_INSN__OPERAND_IMM)
+ mismatch = 1;
+ break;
+ case OPT_Reg:
+ if (op->type != YASM_INSN__OPERAND_REG)
+ mismatch = 1;
+ break;
+ default:
+ yasm_internal_error(N_("invalid operand type"));
+ }
+
+ if (mismatch)
+ break;
+ }
+
+ if (!mismatch) {
+ found = 1;
+ break;
+ }
+ }
+
+ if (!found) {
+ /* Didn't find a matching one */
+ yasm_error_set(YASM_ERROR_TYPE,
+ N_("invalid combination of opcode and operands"));
+ return;
+ }
+
+ /* Copy what we can from info */
+ insn = yasm_xmalloc(sizeof(lc3b_insn));
+ yasm_value_initialize(&insn->imm, NULL, 0);
+ insn->imm_type = LC3B_IMM_NONE;
+ insn->opcode = info->opcode;
+
+ /* Apply modifiers */
+ if (info->modifiers & MOD_OpHAdd) {
+ insn->opcode += ((unsigned int)(mod_data & 0xFF))<<8;
+ mod_data >>= 8;
+ }
+ if (info->modifiers & MOD_OpLAdd) {
+ insn->opcode += (unsigned int)(mod_data & 0xFF);
+ /*mod_data >>= 8;*/
+ }
+
+ /* Go through operands and assign */
+ if (id_insn->insn.num_operands > 0) {
+ for(i = 0, op = yasm_insn_ops_first(&id_insn->insn);
+ op && i<info->num_operands; op = yasm_insn_op_next(op), i++) {
+
+ switch ((int)(info->operands[i] & OPA_MASK)) {
+ case OPA_None:
+ /* Throw away the operand contents */
+ if (op->type == YASM_INSN__OPERAND_IMM)
+ yasm_expr_destroy(op->data.val);
+ break;
+ case OPA_DR:
+ if (op->type != YASM_INSN__OPERAND_REG)
+ yasm_internal_error(N_("invalid operand conversion"));
+ insn->opcode |= ((unsigned int)(op->data.reg & 0x7)) << 9;
+ break;
+ case OPA_SR:
+ if (op->type != YASM_INSN__OPERAND_REG)
+ yasm_internal_error(N_("invalid operand conversion"));
+ insn->opcode |= ((unsigned int)(op->data.reg & 0x7)) << 6;
+ break;
+ case OPA_Imm:
+ insn->imm_type = (info->operands[i] & OPI_MASK)>>3;
+ switch (op->type) {
+ case YASM_INSN__OPERAND_IMM:
+ if (insn->imm_type == LC3B_IMM_6_WORD
+ || insn->imm_type == LC3B_IMM_8
+ || insn->imm_type == LC3B_IMM_9
+ || insn->imm_type == LC3B_IMM_9_PC)
+ op->data.val = yasm_expr_create(YASM_EXPR_SHR,
+ yasm_expr_expr(op->data.val),
+ yasm_expr_int(yasm_intnum_create_uint(1)),
+ op->data.val->line);
+ if (yasm_value_finalize_expr(&insn->imm,
+ op->data.val,
+ prev_bc, 0))
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("immediate expression too complex"));
+ break;
+ case YASM_INSN__OPERAND_REG:
+ if (yasm_value_finalize_expr(&insn->imm,
+ yasm_expr_create_ident(yasm_expr_int(
+ yasm_intnum_create_uint(op->data.reg & 0x7)),
+ bc->line), prev_bc, 0))
+ yasm_internal_error(N_("reg expr too complex?"));
+ break;
+ default:
+ yasm_internal_error(N_("invalid operand conversion"));
+ }
+ break;
+ default:
+ yasm_internal_error(N_("unknown operand action"));
+ }
+
+ /* Clear so it doesn't get destroyed */
+ op->type = YASM_INSN__OPERAND_REG;
+ }
+
+ if (insn->imm_type == LC3B_IMM_9_PC) {
+ if (insn->imm.seg_of || insn->imm.rshift > 1
+ || insn->imm.curpos_rel)
+ yasm_error_set(YASM_ERROR_VALUE, N_("invalid jump target"));
+ insn->imm.curpos_rel = 1;
+ }
+ }
+
+ /* Transform the bytecode */
+ yasm_lc3b__bc_transform_insn(bc, insn);
+}
+
+
+#define YYCTYPE unsigned char
+#define YYCURSOR id
+#define YYLIMIT id
+#define YYMARKER marker
+#define YYFILL(n) (void)(n)
+
+yasm_arch_regtmod
+yasm_lc3b__parse_check_regtmod(yasm_arch *arch, const char *oid, size_t id_len,
+ uintptr_t *data)
+{
+ const YYCTYPE *id = (const YYCTYPE *)oid;
+ /*const char *marker;*/
+
+{
+ YYCTYPE yych;
+ goto yy0;
+ ++YYCURSOR;
+yy0:
+ if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+ yych = *YYCURSOR;
+ if(yych <= 'R'){
+ if(yych <= '\000') goto yy6;
+ if(yych <= 'Q') goto yy4;
+ goto yy2;
+ } else {
+ if(yych != 'r') goto yy4;
+ goto yy2;
+ }
+yy2: yych = *++YYCURSOR;
+ if(yych <= '/') goto yy5;
+ if(yych <= '7') goto yy8;
+ goto yy5;
+yy3:
+{
+ return YASM_ARCH_NOTREGTMOD;
+ }
+yy4: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy5;
+yy5: if(yych <= '\000') goto yy3;
+ goto yy4;
+yy6: yych = *++YYCURSOR;
+ goto yy7;
+yy7:
+{
+ return YASM_ARCH_NOTREGTMOD;
+ }
+yy8: yych = *++YYCURSOR;
+ if(yych >= '\001') goto yy4;
+ goto yy9;
+yy9:
+{
+ *data = (oid[1]-'0');
+ return YASM_ARCH_REG;
+ }
+}
+
+}
+
+#define RET_INSN(g, m) \
+ do { \
+ group = g##_insn; \
+ mod = m; \
+ nelems = NELEMS(g##_insn); \
+ goto done; \
+ } while(0)
+
+yasm_arch_insnprefix
+yasm_lc3b__parse_check_insnprefix(yasm_arch *arch, const char *oid,
+ size_t id_len, unsigned long line,
+ yasm_bytecode **bc, uintptr_t *prefix)
+{
+ const YYCTYPE *id = (const YYCTYPE *)oid;
+ const lc3b_insn_info *group = empty_insn;
+ unsigned long mod = 0;
+ unsigned int nelems = NELEMS(empty_insn);
+ lc3b_id_insn *id_insn;
+
+ *bc = (yasm_bytecode *)NULL;
+ *prefix = 0;
+
+ /*const char *marker;*/
+
+{
+ YYCTYPE yych;
+ goto yy10;
+ ++YYCURSOR;
+yy10:
+ if((YYLIMIT - YYCURSOR) < 6) YYFILL(6);
+ yych = *YYCURSOR;
+ if(yych <= 'T'){
+ if(yych <= 'K'){
+ if(yych <= 'A'){
+ if(yych <= '\000') goto yy23;
+ if(yych <= '@') goto yy21;
+ goto yy12;
+ } else {
+ if(yych <= 'B') goto yy14;
+ if(yych == 'J') goto yy15;
+ goto yy21;
+ }
+ } else {
+ if(yych <= 'N'){
+ if(yych <= 'L') goto yy16;
+ if(yych <= 'M') goto yy21;
+ goto yy18;
+ } else {
+ if(yych <= 'Q') goto yy21;
+ if(yych <= 'R') goto yy19;
+ if(yych <= 'S') goto yy17;
+ goto yy20;
+ }
+ }
+ } else {
+ if(yych <= 'l'){
+ if(yych <= 'b'){
+ if(yych <= '`') goto yy21;
+ if(yych >= 'b') goto yy14;
+ goto yy12;
+ } else {
+ if(yych == 'j') goto yy15;
+ if(yych <= 'k') goto yy21;
+ goto yy16;
+ }
+ } else {
+ if(yych <= 'q'){
+ if(yych == 'n') goto yy18;
+ goto yy21;
+ } else {
+ if(yych <= 'r') goto yy19;
+ if(yych <= 's') goto yy17;
+ if(yych <= 't') goto yy20;
+ goto yy21;
+ }
+ }
+ }
+yy12: yych = *++YYCURSOR;
+ if(yych <= 'N'){
+ if(yych == 'D') goto yy88;
+ if(yych <= 'M') goto yy22;
+ goto yy89;
+ } else {
+ if(yych <= 'd'){
+ if(yych <= 'c') goto yy22;
+ goto yy88;
+ } else {
+ if(yych == 'n') goto yy89;
+ goto yy22;
+ }
+ }
+yy13:
+{
+ return YASM_ARCH_NOTINSNPREFIX;
+ }
+yy14: yych = *++YYCURSOR;
+ if(yych == 'R') goto yy72;
+ if(yych == 'r') goto yy72;
+ goto yy22;
+yy15: yych = *++YYCURSOR;
+ if(yych <= 'S'){
+ if(yych == 'M') goto yy66;
+ if(yych <= 'R') goto yy22;
+ goto yy67;
+ } else {
+ if(yych <= 'm'){
+ if(yych <= 'l') goto yy22;
+ goto yy66;
+ } else {
+ if(yych == 's') goto yy67;
+ goto yy22;
+ }
+ }
+yy16: yych = *++YYCURSOR;
+ if(yych <= 'S'){
+ if(yych <= 'D'){
+ if(yych <= 'C') goto yy22;
+ goto yy53;
+ } else {
+ if(yych <= 'E') goto yy55;
+ if(yych <= 'R') goto yy22;
+ goto yy56;
+ }
+ } else {
+ if(yych <= 'e'){
+ if(yych <= 'c') goto yy22;
+ if(yych <= 'd') goto yy53;
+ goto yy55;
+ } else {
+ if(yych == 's') goto yy56;
+ goto yy22;
+ }
+ }
+yy17: yych = *++YYCURSOR;
+ if(yych == 'T') goto yy47;
+ if(yych == 't') goto yy47;
+ goto yy22;
+yy18: yych = *++YYCURSOR;
+ if(yych == 'O') goto yy42;
+ if(yych == 'o') goto yy42;
+ goto yy22;
+yy19: yych = *++YYCURSOR;
+ if(yych <= 'T'){
+ if(yych <= 'E'){
+ if(yych <= 'D') goto yy22;
+ goto yy29;
+ } else {
+ if(yych <= 'R') goto yy22;
+ if(yych <= 'S') goto yy30;
+ goto yy31;
+ }
+ } else {
+ if(yych <= 'r'){
+ if(yych == 'e') goto yy29;
+ goto yy22;
+ } else {
+ if(yych <= 's') goto yy30;
+ if(yych <= 't') goto yy31;
+ goto yy22;
+ }
+ }
+yy20: yych = *++YYCURSOR;
+ if(yych == 'R') goto yy25;
+ if(yych == 'r') goto yy25;
+ goto yy22;
+yy21: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy22;
+yy22: if(yych <= '\000') goto yy13;
+ goto yy21;
+yy23: yych = *++YYCURSOR;
+ goto yy24;
+yy24:
+{
+ return YASM_ARCH_NOTINSNPREFIX;
+ }
+yy25: yych = *++YYCURSOR;
+ if(yych == 'A') goto yy26;
+ if(yych != 'a') goto yy22;
+ goto yy26;
+yy26: yych = *++YYCURSOR;
+ if(yych == 'P') goto yy27;
+ if(yych != 'p') goto yy22;
+ goto yy27;
+yy27: yych = *++YYCURSOR;
+ if(yych >= '\001') goto yy21;
+ goto yy28;
+yy28:
+{ RET_INSN(trap, 0); }
+yy29: yych = *++YYCURSOR;
+ if(yych == 'T') goto yy40;
+ if(yych == 't') goto yy40;
+ goto yy22;
+yy30: yych = *++YYCURSOR;
+ if(yych == 'H') goto yy34;
+ if(yych == 'h') goto yy34;
+ goto yy22;
+yy31: yych = *++YYCURSOR;
+ if(yych == 'I') goto yy32;
+ if(yych != 'i') goto yy22;
+ goto yy32;
+yy32: yych = *++YYCURSOR;
+ if(yych >= '\001') goto yy21;
+ goto yy33;
+yy33:
+{ RET_INSN(nooperand, 0x80); }
+yy34: yych = *++YYCURSOR;
+ if(yych == 'F') goto yy35;
+ if(yych != 'f') goto yy22;
+ goto yy35;
+yy35: yych = *++YYCURSOR;
+ if(yych <= 'L'){
+ if(yych == 'A') goto yy38;
+ if(yych <= 'K') goto yy22;
+ goto yy36;
+ } else {
+ if(yych <= 'a'){
+ if(yych <= '`') goto yy22;
+ goto yy38;
+ } else {
+ if(yych != 'l') goto yy22;
+ goto yy36;
+ }
+ }
+yy36: yych = *++YYCURSOR;
+ if(yych >= '\001') goto yy21;
+ goto yy37;
+yy37:
+{ RET_INSN(shift, 0x10); }
+yy38: yych = *++YYCURSOR;
+ if(yych >= '\001') goto yy21;
+ goto yy39;
+yy39:
+{ RET_INSN(shift, 0x30); }
+yy40: yych = *++YYCURSOR;
+ if(yych >= '\001') goto yy21;
+ goto yy41;
+yy41:
+{ RET_INSN(nooperand, 0xCE); }
+yy42: yych = *++YYCURSOR;
+ if(yych <= 'T'){
+ if(yych == 'P') goto yy45;
+ if(yych <= 'S') goto yy22;
+ goto yy43;
+ } else {
+ if(yych <= 'p'){
+ if(yych <= 'o') goto yy22;
+ goto yy45;
+ } else {
+ if(yych != 't') goto yy22;
+ goto yy43;
+ }
+ }
+yy43: yych = *++YYCURSOR;
+ if(yych >= '\001') goto yy21;
+ goto yy44;
+yy44:
+{ RET_INSN(not, 0); }
+yy45: yych = *++YYCURSOR;
+ if(yych >= '\001') goto yy21;
+ goto yy46;
+yy46:
+{ RET_INSN(nooperand, 0); }
+yy47: yych = *++YYCURSOR;
+ if(yych <= 'I'){
+ if(yych <= 'A'){
+ if(yych >= '\001') goto yy21;
+ goto yy48;
+ } else {
+ if(yych <= 'B') goto yy51;
+ if(yych <= 'H') goto yy21;
+ goto yy49;
+ }
+ } else {
+ if(yych <= 'b'){
+ if(yych <= 'a') goto yy21;
+ goto yy51;
+ } else {
+ if(yych == 'i') goto yy49;
+ goto yy21;
+ }
+ }
+yy48:
+{ RET_INSN(ldst, 0x30); }
+yy49: yych = *++YYCURSOR;
+ if(yych >= '\001') goto yy21;
+ goto yy50;
+yy50:
+{ RET_INSN(ldst, 0xB0); }
+yy51: yych = *++YYCURSOR;
+ if(yych >= '\001') goto yy21;
+ goto yy52;
+yy52:
+{ RET_INSN(ldstb, 0x70); }
+yy53: yych = *++YYCURSOR;
+ if(yych <= 'I'){
+ if(yych <= 'A'){
+ if(yych >= '\001') goto yy21;
+ goto yy54;
+ } else {
+ if(yych <= 'B') goto yy64;
+ if(yych <= 'H') goto yy21;
+ goto yy62;
+ }
+ } else {
+ if(yych <= 'b'){
+ if(yych <= 'a') goto yy21;
+ goto yy64;
+ } else {
+ if(yych == 'i') goto yy62;
+ goto yy21;
+ }
+ }
+yy54:
+{ RET_INSN(ldst, 0x20); }
+yy55: yych = *++YYCURSOR;
+ if(yych == 'A') goto yy60;
+ if(yych == 'a') goto yy60;
+ goto yy22;
+yy56: yych = *++YYCURSOR;
+ if(yych == 'H') goto yy57;
+ if(yych != 'h') goto yy22;
+ goto yy57;
+yy57: yych = *++YYCURSOR;
+ if(yych == 'F') goto yy58;
+ if(yych != 'f') goto yy22;
+ goto yy58;
+yy58: yych = *++YYCURSOR;
+ if(yych >= '\001') goto yy21;
+ goto yy59;
+yy59:
+{ RET_INSN(shift, 0x00); }
+yy60: yych = *++YYCURSOR;
+ if(yych >= '\001') goto yy21;
+ goto yy61;
+yy61:
+{ RET_INSN(lea, 0); }
+yy62: yych = *++YYCURSOR;
+ if(yych >= '\001') goto yy21;
+ goto yy63;
+yy63:
+{ RET_INSN(ldst, 0xA0); }
+yy64: yych = *++YYCURSOR;
+ if(yych >= '\001') goto yy21;
+ goto yy65;
+yy65:
+{ RET_INSN(ldstb, 0x60); }
+yy66: yych = *++YYCURSOR;
+ if(yych == 'P') goto yy70;
+ if(yych == 'p') goto yy70;
+ goto yy22;
+yy67: yych = *++YYCURSOR;
+ if(yych == 'R') goto yy68;
+ if(yych != 'r') goto yy22;
+ goto yy68;
+yy68: yych = *++YYCURSOR;
+ if(yych >= '\001') goto yy21;
+ goto yy69;
+yy69:
+{ RET_INSN(br, 0x40); }
+yy70: yych = *++YYCURSOR;
+ if(yych >= '\001') goto yy21;
+ goto yy71;
+yy71:
+{ RET_INSN(jmp, 0); }
+yy72: yych = *++YYCURSOR;
+ if(yych <= 'Z'){
+ if(yych <= 'N'){
+ if(yych <= '\000') goto yy73;
+ if(yych <= 'M') goto yy21;
+ goto yy74;
+ } else {
+ if(yych == 'P') goto yy78;
+ if(yych <= 'Y') goto yy21;
+ goto yy76;
+ }
+ } else {
+ if(yych <= 'o'){
+ if(yych == 'n') goto yy74;
+ goto yy21;
+ } else {
+ if(yych <= 'p') goto yy78;
+ if(yych == 'z') goto yy76;
+ goto yy21;
+ }
+ }
+yy73:
+{ RET_INSN(br, 0x00); }
+yy74: yych = *++YYCURSOR;
+ if(yych <= 'Z'){
+ if(yych <= 'O'){
+ if(yych >= '\001') goto yy21;
+ goto yy75;
+ } else {
+ if(yych <= 'P') goto yy82;
+ if(yych <= 'Y') goto yy21;
+ goto yy84;
+ }
+ } else {
+ if(yych <= 'p'){
+ if(yych <= 'o') goto yy21;
+ goto yy82;
+ } else {
+ if(yych == 'z') goto yy84;
+ goto yy21;
+ }
+ }
+yy75:
+{ RET_INSN(br, 0x08); }
+yy76: yych = *++YYCURSOR;
+ if(yych <= 'P'){
+ if(yych <= '\000') goto yy77;
+ if(yych <= 'O') goto yy21;
+ goto yy80;
+ } else {
+ if(yych == 'p') goto yy80;
+ goto yy21;
+ }
+yy77:
+{ RET_INSN(br, 0x04); }
+yy78: yych = *++YYCURSOR;
+ if(yych >= '\001') goto yy21;
+ goto yy79;
+yy79:
+{ RET_INSN(br, 0x02); }
+yy80: yych = *++YYCURSOR;
+ if(yych >= '\001') goto yy21;
+ goto yy81;
+yy81:
+{ RET_INSN(br, 0x06); }
+yy82: yych = *++YYCURSOR;
+ if(yych >= '\001') goto yy21;
+ goto yy83;
+yy83:
+{ RET_INSN(br, 0x0A); }
+yy84: yych = *++YYCURSOR;
+ if(yych <= 'P'){
+ if(yych <= '\000') goto yy85;
+ if(yych <= 'O') goto yy21;
+ goto yy86;
+ } else {
+ if(yych == 'p') goto yy86;
+ goto yy21;
+ }
+yy85:
+{ RET_INSN(br, 0x0C); }
+yy86: yych = *++YYCURSOR;
+ if(yych >= '\001') goto yy21;
+ goto yy87;
+yy87:
+{ RET_INSN(br, 0x0E); }
+yy88: yych = *++YYCURSOR;
+ if(yych == 'D') goto yy92;
+ if(yych == 'd') goto yy92;
+ goto yy22;
+yy89: yych = *++YYCURSOR;
+ if(yych == 'D') goto yy90;
+ if(yych != 'd') goto yy22;
+ goto yy90;
+yy90: yych = *++YYCURSOR;
+ if(yych >= '\001') goto yy21;
+ goto yy91;
+yy91:
+{ RET_INSN(addand, 0x40); }
+yy92: yych = *++YYCURSOR;
+ if(yych >= '\001') goto yy21;
+ goto yy93;
+yy93:
+{ RET_INSN(addand, 0x00); }
+}
+
+
+done:
+ id_insn = yasm_xmalloc(sizeof(lc3b_id_insn));
+ yasm_insn_initialize(&id_insn->insn);
+ id_insn->group = group;
+ id_insn->mod_data = mod;
+ id_insn->num_info = nelems;
+ *bc = yasm_bc_create_common(&lc3b_id_insn_callback, id_insn, line);
+ return YASM_ARCH_INSN;
+}
+
+static void
+lc3b_id_insn_destroy(void *contents)
+{
+ lc3b_id_insn *id_insn = (lc3b_id_insn *)contents;
+ yasm_insn_delete(&id_insn->insn, yasm_lc3b__ea_destroy);
+ yasm_xfree(contents);
+}
+
+static void
+lc3b_id_insn_print(const void *contents, FILE *f, int indent_level)
+{
+ const lc3b_id_insn *id_insn = (const lc3b_id_insn *)contents;
+ yasm_insn_print(&id_insn->insn, f, indent_level);
+ /*TODO*/
+}
+
+/*@only@*/ yasm_bytecode *
+yasm_lc3b__create_empty_insn(yasm_arch *arch, unsigned long line)
+{
+ lc3b_id_insn *id_insn = yasm_xmalloc(sizeof(lc3b_id_insn));
+
+ yasm_insn_initialize(&id_insn->insn);
+ id_insn->group = empty_insn;
+ id_insn->mod_data = 0;
+ id_insn->num_info = NELEMS(empty_insn);
+
+ return yasm_bc_create_common(&lc3b_id_insn_callback, id_insn, line);
+}
+
diff --git a/contrib/tools/yasm/modules/listfmts/nasm/nasm-listfmt.c b/contrib/tools/yasm/modules/listfmts/nasm/nasm-listfmt.c
index 1b4808de0c..1dfc5b621c 100644
--- a/contrib/tools/yasm/modules/listfmts/nasm/nasm-listfmt.c
+++ b/contrib/tools/yasm/modules/listfmts/nasm/nasm-listfmt.c
@@ -1,301 +1,301 @@
-/*
- * NASM-style list format
- *
- * Copyright (C) 2004-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <libyasm.h>
-
-/* NOTE: For this code to generate relocation information, the relocations
- * have to be added by the object format to each section in program source
- * order.
- *
- * This should not be an issue, as program source order == section bytecode
- * order, so unless the object formats are very obtuse with their bytecode
- * iteration, this should just happen.
- */
-
-#define REGULAR_BUF_SIZE 1024
-
-yasm_listfmt_module yasm_nasm_LTX_listfmt;
-
-typedef struct sectreloc {
- /*@reldef@*/ SLIST_ENTRY(sectreloc) link;
- yasm_section *sect;
- /*@null@*/ yasm_reloc *next_reloc; /* next relocation in section */
- unsigned long next_reloc_addr;
-} sectreloc;
-
-typedef struct bcreloc {
- /*@reldef@*/ STAILQ_ENTRY(bcreloc) link;
- unsigned long offset; /* start of reloc from start of bytecode */
- size_t size; /* size of reloc in bytes */
- int rel; /* PC/IP-relative or "absolute" */
-} bcreloc;
-
-typedef struct nasm_listfmt_output_info {
- yasm_arch *arch;
- /*@reldef@*/ STAILQ_HEAD(bcrelochead, bcreloc) bcrelocs;
- /*@null@*/ yasm_reloc *next_reloc; /* next relocation in section */
- unsigned long next_reloc_addr;
-} nasm_listfmt_output_info;
-
-
-static /*@null@*/ /*@only@*/ yasm_listfmt *
-nasm_listfmt_create(const char *in_filename, const char *obj_filename)
-{
- yasm_listfmt_base *listfmt = yasm_xmalloc(sizeof(yasm_listfmt_base));
- listfmt->module = &yasm_nasm_LTX_listfmt;
- return (yasm_listfmt *)listfmt;
-}
-
-static void
-nasm_listfmt_destroy(/*@only@*/ yasm_listfmt *listfmt)
-{
- yasm_xfree(listfmt);
-}
-
-static int
-nasm_listfmt_output_value(yasm_value *value, unsigned char *buf,
- unsigned int destsize, unsigned long offset,
- yasm_bytecode *bc, int warn, /*@null@*/ void *d)
-{
- /*@null@*/ nasm_listfmt_output_info *info = (nasm_listfmt_output_info *)d;
- /*@dependent@*/ /*@null@*/ yasm_intnum *intn;
- unsigned int valsize = value->size;
-
- assert(info != NULL);
-
- /* Output */
- switch (yasm_value_output_basic(value, buf, destsize, bc, warn,
- info->arch)) {
- case -1:
- return 1;
- case 0:
- break;
- default:
- return 0;
- }
-
- /* Generate reloc if needed */
- if (info->next_reloc && info->next_reloc_addr == bc->offset+offset) {
- bcreloc *reloc = yasm_xmalloc(sizeof(bcreloc));
- reloc->offset = offset;
- reloc->size = destsize;
- reloc->rel = value->curpos_rel;
- STAILQ_INSERT_TAIL(&info->bcrelocs, reloc, link);
-
- /* Get next reloc's info */
- info->next_reloc = yasm_section_reloc_next(info->next_reloc);
- if (info->next_reloc) {
- yasm_intnum *addr;
- yasm_symrec *sym;
- yasm_reloc_get(info->next_reloc, &addr, &sym);
- info->next_reloc_addr = yasm_intnum_get_uint(addr);
- }
- }
-
- if (value->abs) {
- intn = yasm_expr_get_intnum(&value->abs, 0);
- if (intn)
- return yasm_arch_intnum_tobytes(info->arch, intn, buf, destsize,
- valsize, 0, bc, 0);
- else {
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("relocation too complex"));
- return 1;
- }
- } else {
- int retval;
- intn = yasm_intnum_create_uint(0);
- retval = yasm_arch_intnum_tobytes(info->arch, intn, buf, destsize,
- valsize, 0, bc, 0);
- yasm_intnum_destroy(intn);
- return retval;
- }
-
- return 0;
-}
-
-static void
-nasm_listfmt_output(yasm_listfmt *listfmt, FILE *f, yasm_linemap *linemap,
- yasm_arch *arch)
-{
- yasm_bytecode *bc;
- const char *source;
- unsigned long line = 1;
- unsigned long listline = 1;
- /*@only@*/ unsigned char *buf;
- nasm_listfmt_output_info info;
- /*@reldef@*/ SLIST_HEAD(sectrelochead, sectreloc) reloc_hist;
- /*@null@*/ sectreloc *last_hist = NULL;
- /*@null@*/ bcreloc *reloc = NULL;
- yasm_section *sect;
-
- SLIST_INIT(&reloc_hist);
-
- info.arch = arch;
-
- buf = yasm_xmalloc(REGULAR_BUF_SIZE);
-
- while (!yasm_linemap_get_source(linemap, line, &bc, &source)) {
- if (!bc) {
- fprintf(f, "%6lu %*s%s\n", listline++, 32, "", source);
- } else {
- /* get the next relocation for the bytecode's section */
- sect = yasm_bc_get_section(bc);
- if (!last_hist || last_hist->sect != sect) {
- int found = 0;
-
- /* look through reloc_hist for matching section */
- SLIST_FOREACH(last_hist, &reloc_hist, link) {
- if (last_hist->sect == sect) {
- found = 1;
- break;
- }
- }
-
- if (!found) {
- /* not found, add to list*/
- last_hist = yasm_xmalloc(sizeof(sectreloc));
- last_hist->sect = sect;
- last_hist->next_reloc = yasm_section_relocs_first(sect);
-
- if (last_hist->next_reloc) {
- yasm_intnum *addr;
- yasm_symrec *sym;
- yasm_reloc_get(last_hist->next_reloc, &addr, &sym);
- last_hist->next_reloc_addr =
- yasm_intnum_get_uint(addr);
- }
-
- SLIST_INSERT_HEAD(&reloc_hist, last_hist, link);
- }
- }
-
- info.next_reloc = last_hist->next_reloc;
- info.next_reloc_addr = last_hist->next_reloc_addr;
- STAILQ_INIT(&info.bcrelocs);
-
- /* loop over bytecodes on this line (usually only one) */
- while (bc && bc->line == line) {
- /*@null@*/ /*@only@*/ unsigned char *bigbuf;
- unsigned long size = REGULAR_BUF_SIZE;
- long multiple;
- unsigned long offset = bc->offset;
- unsigned char *origp, *p;
- int gap;
-
- /* convert bytecode into bytes, recording relocs along the
- * way
- */
- bigbuf = yasm_bc_tobytes(bc, buf, &size, &gap, &info,
- nasm_listfmt_output_value, NULL);
- yasm_bc_get_multiple(bc, &multiple, 1);
- if (multiple <= 0)
- size = 0;
- else
- size /= multiple;
-
- /* output bytes with reloc information */
- origp = bigbuf ? bigbuf : buf;
- p = origp;
- reloc = STAILQ_FIRST(&info.bcrelocs);
- if (gap) {
- fprintf(f, "%6lu %08lX <gap>%*s%s\n", listline++, offset,
- 18, "", source ? source : "");
- } else while (size > 0) {
- int i;
-
- fprintf(f, "%6lu %08lX ", listline++, offset);
- for (i=0; i<18 && size > 0; size--) {
- if (reloc && (unsigned long)(p-origp) ==
- reloc->offset) {
- fprintf(f, "%c", reloc->rel ? '(' : '[');
- i++;
- }
- fprintf(f, "%02X", *(p++));
- i+=2;
- if (reloc && (unsigned long)(p-origp) ==
- reloc->offset+reloc->size) {
- fprintf(f, "%c", reloc->rel ? ')' : ']');
- i++;
- reloc = STAILQ_NEXT(reloc, link);
- }
- }
- if (size > 0)
- fprintf(f, "-");
- else {
- if (multiple > 1) {
- fprintf(f, "<rept>");
- i += 6;
- }
- fprintf(f, "%*s", 18-i+1, "");
- }
- if (source) {
- fprintf(f, " %s", source);
- source = NULL;
- }
- fprintf(f, "\n");
- }
-
- if (bigbuf)
- yasm_xfree(bigbuf);
- bc = STAILQ_NEXT(bc, link);
- }
-
- /* delete bcrelocs (newly generated next bytecode if any) */
- reloc = STAILQ_FIRST(&info.bcrelocs);
- while (reloc) {
- bcreloc *reloc2 = STAILQ_NEXT(reloc, link);
- yasm_xfree(reloc);
- reloc = reloc2;
- }
-
- /* save reloc context */
- last_hist->next_reloc = info.next_reloc;
- last_hist->next_reloc_addr = info.next_reloc_addr;
- }
- line++;
- }
-
- /* delete reloc history */
- while (!SLIST_EMPTY(&reloc_hist)) {
- last_hist = SLIST_FIRST(&reloc_hist);
- SLIST_REMOVE_HEAD(&reloc_hist, link);
- yasm_xfree(last_hist);
- }
-
- yasm_xfree(buf);
-}
-
-/* Define listfmt structure -- see listfmt.h for details */
-yasm_listfmt_module yasm_nasm_LTX_listfmt = {
- "NASM-style list format",
- "nasm",
- nasm_listfmt_create,
- nasm_listfmt_destroy,
- nasm_listfmt_output
-};
+/*
+ * NASM-style list format
+ *
+ * Copyright (C) 2004-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <libyasm.h>
+
+/* NOTE: For this code to generate relocation information, the relocations
+ * have to be added by the object format to each section in program source
+ * order.
+ *
+ * This should not be an issue, as program source order == section bytecode
+ * order, so unless the object formats are very obtuse with their bytecode
+ * iteration, this should just happen.
+ */
+
+#define REGULAR_BUF_SIZE 1024
+
+yasm_listfmt_module yasm_nasm_LTX_listfmt;
+
+typedef struct sectreloc {
+ /*@reldef@*/ SLIST_ENTRY(sectreloc) link;
+ yasm_section *sect;
+ /*@null@*/ yasm_reloc *next_reloc; /* next relocation in section */
+ unsigned long next_reloc_addr;
+} sectreloc;
+
+typedef struct bcreloc {
+ /*@reldef@*/ STAILQ_ENTRY(bcreloc) link;
+ unsigned long offset; /* start of reloc from start of bytecode */
+ size_t size; /* size of reloc in bytes */
+ int rel; /* PC/IP-relative or "absolute" */
+} bcreloc;
+
+typedef struct nasm_listfmt_output_info {
+ yasm_arch *arch;
+ /*@reldef@*/ STAILQ_HEAD(bcrelochead, bcreloc) bcrelocs;
+ /*@null@*/ yasm_reloc *next_reloc; /* next relocation in section */
+ unsigned long next_reloc_addr;
+} nasm_listfmt_output_info;
+
+
+static /*@null@*/ /*@only@*/ yasm_listfmt *
+nasm_listfmt_create(const char *in_filename, const char *obj_filename)
+{
+ yasm_listfmt_base *listfmt = yasm_xmalloc(sizeof(yasm_listfmt_base));
+ listfmt->module = &yasm_nasm_LTX_listfmt;
+ return (yasm_listfmt *)listfmt;
+}
+
+static void
+nasm_listfmt_destroy(/*@only@*/ yasm_listfmt *listfmt)
+{
+ yasm_xfree(listfmt);
+}
+
+static int
+nasm_listfmt_output_value(yasm_value *value, unsigned char *buf,
+ unsigned int destsize, unsigned long offset,
+ yasm_bytecode *bc, int warn, /*@null@*/ void *d)
+{
+ /*@null@*/ nasm_listfmt_output_info *info = (nasm_listfmt_output_info *)d;
+ /*@dependent@*/ /*@null@*/ yasm_intnum *intn;
+ unsigned int valsize = value->size;
+
+ assert(info != NULL);
+
+ /* Output */
+ switch (yasm_value_output_basic(value, buf, destsize, bc, warn,
+ info->arch)) {
+ case -1:
+ return 1;
+ case 0:
+ break;
+ default:
+ return 0;
+ }
+
+ /* Generate reloc if needed */
+ if (info->next_reloc && info->next_reloc_addr == bc->offset+offset) {
+ bcreloc *reloc = yasm_xmalloc(sizeof(bcreloc));
+ reloc->offset = offset;
+ reloc->size = destsize;
+ reloc->rel = value->curpos_rel;
+ STAILQ_INSERT_TAIL(&info->bcrelocs, reloc, link);
+
+ /* Get next reloc's info */
+ info->next_reloc = yasm_section_reloc_next(info->next_reloc);
+ if (info->next_reloc) {
+ yasm_intnum *addr;
+ yasm_symrec *sym;
+ yasm_reloc_get(info->next_reloc, &addr, &sym);
+ info->next_reloc_addr = yasm_intnum_get_uint(addr);
+ }
+ }
+
+ if (value->abs) {
+ intn = yasm_expr_get_intnum(&value->abs, 0);
+ if (intn)
+ return yasm_arch_intnum_tobytes(info->arch, intn, buf, destsize,
+ valsize, 0, bc, 0);
+ else {
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("relocation too complex"));
+ return 1;
+ }
+ } else {
+ int retval;
+ intn = yasm_intnum_create_uint(0);
+ retval = yasm_arch_intnum_tobytes(info->arch, intn, buf, destsize,
+ valsize, 0, bc, 0);
+ yasm_intnum_destroy(intn);
+ return retval;
+ }
+
+ return 0;
+}
+
+static void
+nasm_listfmt_output(yasm_listfmt *listfmt, FILE *f, yasm_linemap *linemap,
+ yasm_arch *arch)
+{
+ yasm_bytecode *bc;
+ const char *source;
+ unsigned long line = 1;
+ unsigned long listline = 1;
+ /*@only@*/ unsigned char *buf;
+ nasm_listfmt_output_info info;
+ /*@reldef@*/ SLIST_HEAD(sectrelochead, sectreloc) reloc_hist;
+ /*@null@*/ sectreloc *last_hist = NULL;
+ /*@null@*/ bcreloc *reloc = NULL;
+ yasm_section *sect;
+
+ SLIST_INIT(&reloc_hist);
+
+ info.arch = arch;
+
+ buf = yasm_xmalloc(REGULAR_BUF_SIZE);
+
+ while (!yasm_linemap_get_source(linemap, line, &bc, &source)) {
+ if (!bc) {
+ fprintf(f, "%6lu %*s%s\n", listline++, 32, "", source);
+ } else {
+ /* get the next relocation for the bytecode's section */
+ sect = yasm_bc_get_section(bc);
+ if (!last_hist || last_hist->sect != sect) {
+ int found = 0;
+
+ /* look through reloc_hist for matching section */
+ SLIST_FOREACH(last_hist, &reloc_hist, link) {
+ if (last_hist->sect == sect) {
+ found = 1;
+ break;
+ }
+ }
+
+ if (!found) {
+ /* not found, add to list*/
+ last_hist = yasm_xmalloc(sizeof(sectreloc));
+ last_hist->sect = sect;
+ last_hist->next_reloc = yasm_section_relocs_first(sect);
+
+ if (last_hist->next_reloc) {
+ yasm_intnum *addr;
+ yasm_symrec *sym;
+ yasm_reloc_get(last_hist->next_reloc, &addr, &sym);
+ last_hist->next_reloc_addr =
+ yasm_intnum_get_uint(addr);
+ }
+
+ SLIST_INSERT_HEAD(&reloc_hist, last_hist, link);
+ }
+ }
+
+ info.next_reloc = last_hist->next_reloc;
+ info.next_reloc_addr = last_hist->next_reloc_addr;
+ STAILQ_INIT(&info.bcrelocs);
+
+ /* loop over bytecodes on this line (usually only one) */
+ while (bc && bc->line == line) {
+ /*@null@*/ /*@only@*/ unsigned char *bigbuf;
+ unsigned long size = REGULAR_BUF_SIZE;
+ long multiple;
+ unsigned long offset = bc->offset;
+ unsigned char *origp, *p;
+ int gap;
+
+ /* convert bytecode into bytes, recording relocs along the
+ * way
+ */
+ bigbuf = yasm_bc_tobytes(bc, buf, &size, &gap, &info,
+ nasm_listfmt_output_value, NULL);
+ yasm_bc_get_multiple(bc, &multiple, 1);
+ if (multiple <= 0)
+ size = 0;
+ else
+ size /= multiple;
+
+ /* output bytes with reloc information */
+ origp = bigbuf ? bigbuf : buf;
+ p = origp;
+ reloc = STAILQ_FIRST(&info.bcrelocs);
+ if (gap) {
+ fprintf(f, "%6lu %08lX <gap>%*s%s\n", listline++, offset,
+ 18, "", source ? source : "");
+ } else while (size > 0) {
+ int i;
+
+ fprintf(f, "%6lu %08lX ", listline++, offset);
+ for (i=0; i<18 && size > 0; size--) {
+ if (reloc && (unsigned long)(p-origp) ==
+ reloc->offset) {
+ fprintf(f, "%c", reloc->rel ? '(' : '[');
+ i++;
+ }
+ fprintf(f, "%02X", *(p++));
+ i+=2;
+ if (reloc && (unsigned long)(p-origp) ==
+ reloc->offset+reloc->size) {
+ fprintf(f, "%c", reloc->rel ? ')' : ']');
+ i++;
+ reloc = STAILQ_NEXT(reloc, link);
+ }
+ }
+ if (size > 0)
+ fprintf(f, "-");
+ else {
+ if (multiple > 1) {
+ fprintf(f, "<rept>");
+ i += 6;
+ }
+ fprintf(f, "%*s", 18-i+1, "");
+ }
+ if (source) {
+ fprintf(f, " %s", source);
+ source = NULL;
+ }
+ fprintf(f, "\n");
+ }
+
+ if (bigbuf)
+ yasm_xfree(bigbuf);
+ bc = STAILQ_NEXT(bc, link);
+ }
+
+ /* delete bcrelocs (newly generated next bytecode if any) */
+ reloc = STAILQ_FIRST(&info.bcrelocs);
+ while (reloc) {
+ bcreloc *reloc2 = STAILQ_NEXT(reloc, link);
+ yasm_xfree(reloc);
+ reloc = reloc2;
+ }
+
+ /* save reloc context */
+ last_hist->next_reloc = info.next_reloc;
+ last_hist->next_reloc_addr = info.next_reloc_addr;
+ }
+ line++;
+ }
+
+ /* delete reloc history */
+ while (!SLIST_EMPTY(&reloc_hist)) {
+ last_hist = SLIST_FIRST(&reloc_hist);
+ SLIST_REMOVE_HEAD(&reloc_hist, link);
+ yasm_xfree(last_hist);
+ }
+
+ yasm_xfree(buf);
+}
+
+/* Define listfmt structure -- see listfmt.h for details */
+yasm_listfmt_module yasm_nasm_LTX_listfmt = {
+ "NASM-style list format",
+ "nasm",
+ nasm_listfmt_create,
+ nasm_listfmt_destroy,
+ nasm_listfmt_output
+};
diff --git a/contrib/tools/yasm/modules/nasm-macros.c b/contrib/tools/yasm/modules/nasm-macros.c
index 30c9c67d02..aa6262a7a8 100644
--- a/contrib/tools/yasm/modules/nasm-macros.c
+++ b/contrib/tools/yasm/modules/nasm-macros.c
@@ -1,94 +1,94 @@
-/* This file auto-generated from standard.mac by genmacro.c - don't edit it */
-
-#include <stddef.h>
-
-static const char *nasm_standard_mac[] = {
- "%define __FILE__",
- "%define __LINE__",
- "%define __SECT__ [section .text]",
- "%imacro section 1+.nolist",
- "%define __SECT__ [section %1]",
- "__SECT__",
- "%endmacro",
- "%imacro segment 1+.nolist",
- "%define __SECT__ [segment %1]",
- "__SECT__",
- "%endmacro",
- "%imacro absolute 1+.nolist",
- "%define __SECT__ [absolute %1]",
- "__SECT__",
- "%endmacro",
- "%imacro struc 1-2.nolist 0",
- "%push struc",
- "%define %$strucname %1",
- "[absolute %2]",
- "%$strucname:",
- "%endmacro",
- "%imacro endstruc 0.nolist",
- "%{$strucname}_size EQU $ - %$strucname",
- "%pop",
- "__SECT__",
- "%endmacro",
- "%imacro istruc 1.nolist",
- "%push istruc",
- "%define %$strucname %1",
- "%$strucstart:",
- "%endmacro",
- "%imacro at 1-2+.nolist",
- "times %1-($-%$strucstart) db 0",
- "%2",
- "%endmacro",
- "%imacro iend 0.nolist",
- "times %{$strucname}_size-($-%$strucstart) db 0",
- "%pop",
- "%endmacro",
- "%imacro align 1-2+.nolist nop",
- "%ifidni %2,nop",
- "[align %1]",
- "%else",
- "times ($$-$) & ((%1)-1) %2",
- "%endif",
- "%endmacro",
- "%imacro alignb 1-2+.nolist resb 1",
- "times ($$-$) & ((%1)-1) %2",
- "%endmacro",
- "%imacro extern 1-*.nolist",
- "%rep %0",
- "[extern %1]",
- "%rotate 1",
- "%endrep",
- "%endmacro",
- "%imacro bits 1+.nolist",
- "[bits %1]",
- "%endmacro",
- "%imacro use16 0.nolist",
- "[bits 16]",
- "%endmacro",
- "%imacro use32 0.nolist",
- "[bits 32]",
- "%endmacro",
- "%imacro use64 0.nolist",
- "[bits 64]",
- "%endmacro",
- "%imacro global 1-*.nolist",
- "%rep %0",
- "[global %1]",
- "%rotate 1",
- "%endrep",
- "%endmacro",
- "%imacro common 1-*.nolist",
- "%rep %0",
- "[common %1]",
- "%rotate 1",
- "%endrep",
- "%endmacro",
- "%imacro cpu 1+.nolist",
- "[cpu %1]",
- "%endmacro",
- "%imacro default 1+.nolist",
- "[default %1]",
- "%endmacro",
- "%define __OUTPUT_FORMAT__ __YASM_OBJFMT__",
- NULL
-};
-
+/* This file auto-generated from standard.mac by genmacro.c - don't edit it */
+
+#include <stddef.h>
+
+static const char *nasm_standard_mac[] = {
+ "%define __FILE__",
+ "%define __LINE__",
+ "%define __SECT__ [section .text]",
+ "%imacro section 1+.nolist",
+ "%define __SECT__ [section %1]",
+ "__SECT__",
+ "%endmacro",
+ "%imacro segment 1+.nolist",
+ "%define __SECT__ [segment %1]",
+ "__SECT__",
+ "%endmacro",
+ "%imacro absolute 1+.nolist",
+ "%define __SECT__ [absolute %1]",
+ "__SECT__",
+ "%endmacro",
+ "%imacro struc 1-2.nolist 0",
+ "%push struc",
+ "%define %$strucname %1",
+ "[absolute %2]",
+ "%$strucname:",
+ "%endmacro",
+ "%imacro endstruc 0.nolist",
+ "%{$strucname}_size EQU $ - %$strucname",
+ "%pop",
+ "__SECT__",
+ "%endmacro",
+ "%imacro istruc 1.nolist",
+ "%push istruc",
+ "%define %$strucname %1",
+ "%$strucstart:",
+ "%endmacro",
+ "%imacro at 1-2+.nolist",
+ "times %1-($-%$strucstart) db 0",
+ "%2",
+ "%endmacro",
+ "%imacro iend 0.nolist",
+ "times %{$strucname}_size-($-%$strucstart) db 0",
+ "%pop",
+ "%endmacro",
+ "%imacro align 1-2+.nolist nop",
+ "%ifidni %2,nop",
+ "[align %1]",
+ "%else",
+ "times ($$-$) & ((%1)-1) %2",
+ "%endif",
+ "%endmacro",
+ "%imacro alignb 1-2+.nolist resb 1",
+ "times ($$-$) & ((%1)-1) %2",
+ "%endmacro",
+ "%imacro extern 1-*.nolist",
+ "%rep %0",
+ "[extern %1]",
+ "%rotate 1",
+ "%endrep",
+ "%endmacro",
+ "%imacro bits 1+.nolist",
+ "[bits %1]",
+ "%endmacro",
+ "%imacro use16 0.nolist",
+ "[bits 16]",
+ "%endmacro",
+ "%imacro use32 0.nolist",
+ "[bits 32]",
+ "%endmacro",
+ "%imacro use64 0.nolist",
+ "[bits 64]",
+ "%endmacro",
+ "%imacro global 1-*.nolist",
+ "%rep %0",
+ "[global %1]",
+ "%rotate 1",
+ "%endrep",
+ "%endmacro",
+ "%imacro common 1-*.nolist",
+ "%rep %0",
+ "[common %1]",
+ "%rotate 1",
+ "%endrep",
+ "%endmacro",
+ "%imacro cpu 1+.nolist",
+ "[cpu %1]",
+ "%endmacro",
+ "%imacro default 1+.nolist",
+ "[default %1]",
+ "%endmacro",
+ "%define __OUTPUT_FORMAT__ __YASM_OBJFMT__",
+ NULL
+};
+
diff --git a/contrib/tools/yasm/modules/nasm-token.c b/contrib/tools/yasm/modules/nasm-token.c
index 6bda2e7e44..93d91b9f7b 100644
--- a/contrib/tools/yasm/modules/nasm-token.c
+++ b/contrib/tools/yasm/modules/nasm-token.c
@@ -1,3217 +1,3217 @@
-/* Generated by re2c
- */
-/*
- * NASM-compatible re2c lexer
- *
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Portions based on re2c's example code.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <libyasm.h>
-
-#include "modules/parsers/nasm/nasm-parser.h"
-#include "modules/preprocs/nasm/nasm.h"
-
-
-#define YYCURSOR cursor
-#define YYLIMIT (s->lim)
-#define YYMARKER (s->ptr)
-#define YYFILL(n) {}
-
-#define RETURN(i) {s->cur = cursor; parser_nasm->tokch = s->tok[0]; \
- return i;}
-
-#define SCANINIT() {s->tok = cursor;}
-
-#define TOK ((char *)s->tok)
-#define TOKLEN (size_t)(cursor-s->tok)
-
-
-/* starting size of string buffer */
-#define STRBUF_ALLOC_SIZE 128
-
-/* string buffer used when parsing strings/character constants */
-static YYCTYPE *strbuf = NULL;
-
-/* length of strbuf (including terminating NULL character) */
-static size_t strbuf_size = 0;
-
-static int linechg_numcount;
-
-
-
-static int
-handle_dot_label(YYSTYPE *lvalp, char *tok, size_t toklen, size_t zeropos,
- yasm_parser_nasm *parser_nasm)
-{
- /* check for special non-local labels like ..start */
- if (tok[zeropos+1] == '.') {
- lvalp->str_val = yasm__xstrndup(tok+zeropos+(parser_nasm->tasm?2:0),
- toklen-zeropos-(parser_nasm->tasm?2:0));
- /* check for special non-local ..@label */
- if (lvalp->str_val[zeropos+2] == '@')
- return NONLOCAL_ID;
- return SPECIAL_ID;
- }
- if (parser_nasm->masm && tok[zeropos] == '.') {
- lvalp->str_val = yasm__xstrndup(tok + zeropos, toklen - zeropos);
- return SPECIAL_ID;
- }
- if (parser_nasm->tasm && (!tasm_locals ||
- (tok[zeropos] == '.' &&
- tok[zeropos+1] != '@' && tok[zeropos+2] != '@'))) {
- /* no locals on Tasm without the 'locals' directive */
- /* .foo is never local either, but .@@foo may be (local structure
- * members) */
- lvalp->str_val = yasm__xstrndup(tok + zeropos, toklen - zeropos);
- return SPECIAL_ID;
- }
- if (!parser_nasm->locallabel_base) {
- lvalp->str_val = yasm__xstrndup(tok+zeropos, toklen-zeropos);
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("no non-local label before `%s'"),
- lvalp->str_val);
- } else {
- size_t len = toklen - zeropos + parser_nasm->locallabel_base_len;
- lvalp->str_val = yasm_xmalloc(len + 1);
- strcpy(lvalp->str_val, parser_nasm->locallabel_base);
- strncat(lvalp->str_val, tok+zeropos, toklen-zeropos);
- lvalp->str_val[len] = '\0';
- }
-
- return LOCAL_ID;
-}
-
-int
-nasm_parser_lex(YYSTYPE *lvalp, yasm_parser_nasm *parser_nasm)
-{
- yasm_scanner *s = &parser_nasm->s;
- YYCTYPE *cursor = s->cur;
- YYCTYPE endch;
- size_t count;
- YYCTYPE savech;
-
- /* Handle one token of lookahead */
- if (parser_nasm->peek_token != NONE) {
- int tok = parser_nasm->peek_token;
- *lvalp = parser_nasm->peek_tokval; /* structure copy */
- parser_nasm->tokch = parser_nasm->peek_tokch;
- parser_nasm->peek_token = NONE;
- return tok;
- }
-
- /* Catch EOL (EOF from the scanner perspective) */
- if (s->eof && cursor == s->eof)
- return 0;
-
- /* Jump to proper "exclusive" states */
- switch (parser_nasm->state) {
- case DIRECTIVE:
- goto directive;
- case SECTION_DIRECTIVE:
- goto section_directive;
- case DIRECTIVE2:
- goto directive2;
- case LINECHG:
- goto linechg;
- case LINECHG2:
- goto linechg2;
- default:
- break;
- }
-
-scan:
- SCANINIT();
- if (*cursor == '\0')
- goto endofinput;
-
- {
- static unsigned char yybm[] = {
- 0, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 3, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 3, 1,
- 255, 255, 63, 63, 63, 63, 63, 63,
- 15, 15, 1, 1, 1, 1, 1, 3,
- 3, 7, 7, 7, 7, 7, 7, 3,
- 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 1, 1, 1, 1, 167,
- 1, 7, 7, 7, 7, 7, 7, 3,
- 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 1, 1, 1, 3, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 128, 0, 0, 0, 128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 128, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- };
-
-{
- YYCTYPE yych;
- unsigned int yyaccept;
- goto yy0;
- ++YYCURSOR;
-yy0:
- if((YYLIMIT - YYCURSOR) < 8) YYFILL(8);
- yych = *YYCURSOR;
- switch(yych){
- case '\000': goto yy43;
- case '\t': case '\r': case ' ': goto yy41;
- case '"': case '\'': goto yy9;
- case '$': goto yy7;
- case '%': goto yy11;
- case '&': case '(':
- case ')':
- case '*':
- case '+':
- case ',':
- case '-': case ':': case '=': case '[': case '^': case '|': case '~': goto yy32;
- case '.': goto yy36;
- case '/': goto yy31;
- case '0': goto yy2;
- case '1': goto yy4;
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7': goto yy5;
- case '8':
- case '9': goto yy6;
- case ';': goto yy39;
- case '<': goto yy28;
- case '>': goto yy30;
- case '?': goto yy33;
- case '@': goto yy37;
- case 'A': case 'a': goto yy26;
- case 'B': case 'b': goto yy12;
- case 'C': case 'F':
- case 'G': case 'J':
- case 'K': case 'M': case 'P': case 'U':
- case 'V': case 'X': case 'Z': case '_': case 'c': case 'f':
- case 'g': case 'j':
- case 'k': case 'm': case 'p': case 'u':
- case 'v': case 'x': case 'z': goto yy38;
- case 'D': case 'd': goto yy16;
- case 'E': case 'e': goto yy24;
- case 'H': case 'h': goto yy14;
- case 'I': case 'i': goto yy23;
- case 'L': case 'l': goto yy17;
- case 'N': case 'n': goto yy27;
- case 'O': case 'o': goto yy20;
- case 'Q': case 'q': goto yy18;
- case 'R': case 'r': goto yy22;
- case 'S': case 's': goto yy25;
- case 'T': case 't': goto yy19;
- case 'W': case 'w': goto yy15;
- case 'Y': case 'y': goto yy21;
- case ']': goto yy34;
- default: goto yy45;
- }
-yy2: yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yybm[0+yych] & 64) {
- goto yy222;
- }
- switch(yych){
- case '.': goto yy203;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7': goto yy216;
- case '8':
- case '9': goto yy206;
- case 'A': case 'C':
- case 'D':
- case 'E':
- case 'F': case 'a': case 'c':
- case 'd':
- case 'e':
- case 'f': goto yy208;
- case 'B': case 'b': goto yy224;
- case 'H': case 'h': goto yy210;
- case 'O': case 'Q': case 'o': case 'q': goto yy220;
- case 'X': case 'x': goto yy228;
- case '_': goto yy226;
- default: goto yy3;
- }
-yy3:
-{
- savech = s->tok[TOKLEN];
- s->tok[TOKLEN] = '\0';
- lvalp->intn = yasm_intnum_create_dec(TOK);
- s->tok[TOKLEN] = savech;
- RETURN(INTNUM);
- }
-yy4: yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yybm[0+yych] & 64) {
- goto yy222;
- }
- switch(yych){
- case '.': goto yy203;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7': goto yy216;
- case '8':
- case '9': goto yy206;
- case 'A': case 'C':
- case 'D':
- case 'E':
- case 'F': case 'a': case 'c':
- case 'd':
- case 'e':
- case 'f': goto yy208;
- case 'B': case 'b': goto yy224;
- case 'H': case 'h': goto yy210;
- case 'O': case 'Q': case 'o': case 'q': goto yy220;
- case '_': goto yy226;
- default: goto yy3;
- }
-yy5: yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yybm[0+yych] & 16) {
- goto yy216;
- }
- if(yych <= 'P'){
- if(yych <= '@'){
- if(yych <= '.'){
- if(yych <= '-') goto yy3;
- goto yy203;
- } else {
- if(yych <= '/') goto yy3;
- if(yych <= '9') goto yy206;
- goto yy3;
- }
- } else {
- if(yych <= 'H'){
- if(yych <= 'F') goto yy208;
- if(yych <= 'G') goto yy3;
- goto yy210;
- } else {
- if(yych == 'O') goto yy220;
- goto yy3;
- }
- }
- } else {
- if(yych <= 'g'){
- if(yych <= '_'){
- if(yych <= 'Q') goto yy220;
- if(yych <= '^') goto yy3;
- goto yy218;
- } else {
- if(yych <= '`') goto yy3;
- if(yych <= 'f') goto yy208;
- goto yy3;
- }
- } else {
- if(yych <= 'o'){
- if(yych <= 'h') goto yy210;
- if(yych <= 'n') goto yy3;
- goto yy220;
- } else {
- if(yych == 'q') goto yy220;
- goto yy3;
- }
- }
- }
-yy6: yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'G'){
- if(yych <= '/'){
- if(yych == '.') goto yy203;
- goto yy3;
- } else {
- if(yych <= '9') goto yy206;
- if(yych <= '@') goto yy3;
- if(yych <= 'F') goto yy208;
- goto yy3;
- }
- } else {
- if(yych <= '`'){
- if(yych <= 'H') goto yy210;
- if(yych == '_') goto yy208;
- goto yy3;
- } else {
- if(yych <= 'f') goto yy208;
- if(yych == 'h') goto yy210;
- goto yy3;
- }
- }
-yy7: yych = *++YYCURSOR;
- if(yych <= '>'){
- if(yych <= '-'){
- if(yych <= '"') goto yy8;
- if(yych <= '#') goto yy194;
- if(yych <= '$') goto yy197;
- goto yy8;
- } else {
- if(yych <= '.') goto yy194;
- if(yych <= '/') goto yy8;
- if(yych <= '9') goto yy199;
- goto yy8;
- }
- } else {
- if(yych <= '`'){
- if(yych <= 'Z') goto yy194;
- if(yych == '_') goto yy194;
- goto yy8;
- } else {
- if(yych <= 'z') goto yy194;
- if(yych == '~') goto yy194;
- goto yy8;
- }
- }
-yy8:
-{ RETURN(s->tok[0]); }
-yy9: yych = *++YYCURSOR;
- goto yy10;
-yy10:
-{
- endch = s->tok[0];
- goto stringconst;
- }
-yy11: yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '%') goto yy186;
- if(yych == 'l') goto yy188;
- goto yy8;
-yy12: yych = *++YYCURSOR;
- if(yych == 'Y') goto yy182;
- if(yych == 'y') goto yy182;
- goto yy51;
-yy13:
-{
- savech = s->tok[TOKLEN];
- s->tok[TOKLEN] = '\0';
- if (parser_nasm->state != INSTRUCTION) {
- uintptr_t prefix;
- switch (yasm_arch_parse_check_insnprefix
- (p_object->arch, TOK, TOKLEN, cur_line, &lvalp->bc,
- &prefix)) {
- case YASM_ARCH_INSN:
- parser_nasm->state = INSTRUCTION;
- s->tok[TOKLEN] = savech;
- RETURN(INSN);
- case YASM_ARCH_PREFIX:
- lvalp->arch_data = prefix;
- s->tok[TOKLEN] = savech;
- RETURN(PREFIX);
- default:
- break;
- }
- }
- switch (yasm_arch_parse_check_regtmod
- (p_object->arch, TOK, TOKLEN, &lvalp->arch_data)) {
- case YASM_ARCH_REG:
- s->tok[TOKLEN] = savech;
- RETURN(REG);
- case YASM_ARCH_SEGREG:
- s->tok[TOKLEN] = savech;
- RETURN(SEGREG);
- case YASM_ARCH_TARGETMOD:
- s->tok[TOKLEN] = savech;
- RETURN(TARGETMOD);
- case YASM_ARCH_REGGROUP:
- if (parser_nasm->masm) {
- s->tok[TOKLEN] = savech;
- RETURN(REGGROUP);
- }
- default:
- break;
- }
- if (parser_nasm->masm) {
- if (!yasm__strcasecmp(TOK, "offset")) {
- s->tok[TOKLEN] = savech;
- RETURN(OFFSET);
- }
- } else if (parser_nasm->tasm) {
- if (!yasm__strcasecmp(TOK, "shl")) {
- s->tok[TOKLEN] = savech;
- RETURN(LEFT_OP);
- }
- if (!yasm__strcasecmp(TOK, "shr")) {
- s->tok[TOKLEN] = savech;
- RETURN(RIGHT_OP);
- }
- if (!yasm__strcasecmp(TOK, "and")) {
- s->tok[TOKLEN] = savech;
- RETURN('&');
- }
- if (!yasm__strcasecmp(TOK, "or")) {
- s->tok[TOKLEN] = savech;
- RETURN('|');
- }
- if (!yasm__strcasecmp(TOK, "not")) {
- s->tok[TOKLEN] = savech;
- RETURN('~');
- }
- if (!yasm__strcasecmp(TOK, "low")) {
- s->tok[TOKLEN] = savech;
- RETURN(LOW);
- }
- if (!yasm__strcasecmp(TOK, "high")) {
- s->tok[TOKLEN] = savech;
- RETURN(HIGH);
- }
- if (!yasm__strcasecmp(TOK, "offset")) {
- s->tok[TOKLEN] = savech;
- RETURN(OFFSET);
- }
- if (!yasm__strcasecmp(TOK, "fword")) {
- s->tok[TOKLEN] = savech;
- lvalp->int_info = yasm_arch_wordsize(p_object->arch)*2;
- RETURN(SIZE_OVERRIDE);
- }
- if (!yasm__strcasecmp(TOK, "df")) {
- s->tok[TOKLEN] = savech;
- lvalp->int_info = yasm_arch_wordsize(p_object->arch)*3;
- parser_nasm->state = INSTRUCTION;
- RETURN(DECLARE_DATA);
- }
- if (!yasm__strcasecmp(TOK, "label")) {
- s->tok[TOKLEN] = savech;
- RETURN(LABEL);
- }
- if (!yasm__strcasecmp(TOK, "dup")) {
- s->tok[TOKLEN] = savech;
- RETURN(DUP);
- }
- }
- /* Propagate errors in case we got a warning from the arch */
- yasm_errwarn_propagate(parser_nasm->errwarns, cur_line);
- /* Just an identifier, return as such. */
- s->tok[TOKLEN] = savech;
- lvalp->str_val = yasm__xstrndup(TOK, TOKLEN);
- RETURN(ID);
- }
-yy14: yych = *++YYCURSOR;
- if(yych == 'W') goto yy177;
- if(yych == 'w') goto yy177;
- goto yy51;
-yy15: yych = *++YYCURSOR;
- if(yych <= 'R'){
- if(yych == 'O') goto yy170;
- if(yych <= 'Q') goto yy51;
- goto yy171;
- } else {
- if(yych <= 'o'){
- if(yych <= 'n') goto yy51;
- goto yy170;
- } else {
- if(yych == 'r') goto yy171;
- goto yy51;
- }
- }
-yy16: yych = *++YYCURSOR;
- switch(yych){
- case 'B': case 'b': goto yy144;
- case 'D': case 'd': goto yy146;
- case 'H': case 'h': goto yy148;
- case 'O': case 'o': goto yy149;
- case 'Q': case 'q': goto yy151;
- case 'T': case 't': goto yy153;
- case 'W': case 'w': goto yy155;
- case 'Y': case 'y': goto yy157;
- default: goto yy51;
- }
-yy17: yych = *++YYCURSOR;
- if(yych == 'O') goto yy140;
- if(yych == 'o') goto yy140;
- goto yy51;
-yy18: yych = *++YYCURSOR;
- if(yych == 'W') goto yy135;
- if(yych == 'w') goto yy135;
- goto yy51;
-yy19: yych = *++YYCURSOR;
- if(yych <= 'W'){
- if(yych == 'I') goto yy125;
- if(yych <= 'V') goto yy51;
- goto yy126;
- } else {
- if(yych <= 'i'){
- if(yych <= 'h') goto yy51;
- goto yy125;
- } else {
- if(yych == 'w') goto yy126;
- goto yy51;
- }
- }
-yy20: yych = *++YYCURSOR;
- if(yych == 'W') goto yy120;
- if(yych == 'w') goto yy120;
- goto yy51;
-yy21: yych = *++YYCURSOR;
- if(yych == 'W') goto yy115;
- if(yych == 'w') goto yy115;
- goto yy51;
-yy22: yych = *++YYCURSOR;
- if(yych == 'E') goto yy92;
- if(yych == 'e') goto yy92;
- goto yy51;
-yy23: yych = *++YYCURSOR;
- if(yych == 'N') goto yy86;
- if(yych == 'n') goto yy86;
- goto yy51;
-yy24: yych = *++YYCURSOR;
- if(yych == 'Q') goto yy83;
- if(yych == 'q') goto yy83;
- goto yy51;
-yy25: yych = *++YYCURSOR;
- if(yych <= 'T'){
- if(yych == 'E') goto yy74;
- if(yych <= 'S') goto yy51;
- goto yy75;
- } else {
- if(yych <= 'e'){
- if(yych <= 'd') goto yy51;
- goto yy74;
- } else {
- if(yych == 't') goto yy75;
- goto yy51;
- }
- }
-yy26: yych = *++YYCURSOR;
- if(yych == 'B') goto yy71;
- if(yych == 'b') goto yy71;
- goto yy51;
-yy27: yych = *++YYCURSOR;
- if(yych == 'O') goto yy64;
- if(yych == 'o') goto yy64;
- goto yy51;
-yy28: yych = *++YYCURSOR;
- if(yych == '<') goto yy62;
- goto yy29;
-yy29:
-{
- yasm_warn_set(YASM_WARN_UNREC_CHAR,
- N_("ignoring unrecognized character `%s'"),
- yasm__conv_unprint(s->tok[0]));
- goto scan;
- }
-yy30: yych = *++YYCURSOR;
- if(yych == '>') goto yy60;
- goto yy29;
-yy31: yych = *++YYCURSOR;
- if(yych == '/') goto yy58;
- goto yy8;
-yy32: yych = *++YYCURSOR;
- goto yy8;
-yy33: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy8;
-yy34: yych = *++YYCURSOR;
- goto yy35;
-yy35:
-{ RETURN(s->tok[0]); }
-yy36: yych = *++YYCURSOR;
- if(yych <= '>'){
- if(yych <= '-'){
- if(yych <= '"') goto yy29;
- if(yych <= '$') goto yy56;
- goto yy29;
- } else {
- if(yych == '/') goto yy29;
- if(yych <= '9') goto yy56;
- goto yy29;
- }
- } else {
- if(yych <= '`'){
- if(yych <= 'Z') goto yy56;
- if(yych == '_') goto yy56;
- goto yy29;
- } else {
- if(yych <= 'z') goto yy56;
- if(yych == '~') goto yy56;
- goto yy29;
- }
- }
-yy37: yych = *++YYCURSOR;
- if(yych == '@') goto yy52;
- goto yy51;
-yy38: yych = *++YYCURSOR;
- goto yy51;
-yy39: yych = *++YYCURSOR;
- goto yy49;
-yy40:
-{ goto scan; }
-yy41: yych = *++YYCURSOR;
- goto yy47;
-yy42:
-{ goto scan; }
-yy43: yych = *++YYCURSOR;
- goto yy44;
-yy44:
-{ goto endofinput; }
-yy45: yych = *++YYCURSOR;
- goto yy29;
-yy46: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy47;
-yy47: if(yybm[256+yych] & 128) {
- goto yy46;
- }
- goto yy42;
-yy48: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy49;
-yy49: if(yybm[0+yych] & 1) {
- goto yy48;
- }
- goto yy40;
-yy50: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy51;
-yy51: if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy13;
-yy52: yych = *++YYCURSOR;
- if(yych <= '>'){
- if(yych <= '-'){
- if(yych <= '"') goto yy13;
- if(yych >= '%') goto yy13;
- goto yy53;
- } else {
- if(yych == '/') goto yy13;
- if(yych >= ':') goto yy13;
- goto yy53;
- }
- } else {
- if(yych <= '`'){
- if(yych <= 'Z') goto yy53;
- if(yych != '_') goto yy13;
- goto yy53;
- } else {
- if(yych <= 'z') goto yy53;
- if(yych != '~') goto yy13;
- goto yy53;
- }
- }
-yy53: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy54;
-yy54: if(yych <= '>'){
- if(yych <= '-'){
- if(yych <= '"') goto yy55;
- if(yych <= '$') goto yy53;
- goto yy55;
- } else {
- if(yych == '/') goto yy55;
- if(yych <= '9') goto yy53;
- goto yy55;
- }
- } else {
- if(yych <= '`'){
- if(yych <= 'Z') goto yy53;
- if(yych == '_') goto yy53;
- goto yy55;
- } else {
- if(yych <= 'z') goto yy53;
- if(yych == '~') goto yy53;
- goto yy55;
- }
- }
-yy55:
-{
- RETURN(handle_dot_label(lvalp, TOK, TOKLEN, 0, parser_nasm));
- }
-yy56: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy57;
-yy57: if(yych <= '>'){
- if(yych <= '-'){
- if(yych <= '"') goto yy55;
- if(yych <= '$') goto yy56;
- goto yy55;
- } else {
- if(yych == '/') goto yy55;
- if(yych <= '9') goto yy56;
- goto yy55;
- }
- } else {
- if(yych <= '`'){
- if(yych <= 'Z') goto yy56;
- if(yych == '_') goto yy56;
- goto yy55;
- } else {
- if(yych <= 'z') goto yy56;
- if(yych == '~') goto yy56;
- goto yy55;
- }
- }
-yy58: yych = *++YYCURSOR;
- goto yy59;
-yy59:
-{ RETURN(SIGNDIV); }
-yy60: yych = *++YYCURSOR;
- goto yy61;
-yy61:
-{ RETURN(RIGHT_OP); }
-yy62: yych = *++YYCURSOR;
- goto yy63;
-yy63:
-{ RETURN(LEFT_OP); }
-yy64: yych = *++YYCURSOR;
- if(yych == 'S') goto yy65;
- if(yych != 's') goto yy51;
- goto yy65;
-yy65: yych = *++YYCURSOR;
- if(yych == 'P') goto yy66;
- if(yych != 'p') goto yy51;
- goto yy66;
-yy66: yych = *++YYCURSOR;
- if(yych == 'L') goto yy67;
- if(yych != 'l') goto yy51;
- goto yy67;
-yy67: yych = *++YYCURSOR;
- if(yych == 'I') goto yy68;
- if(yych != 'i') goto yy51;
- goto yy68;
-yy68: yych = *++YYCURSOR;
- if(yych == 'T') goto yy69;
- if(yych != 't') goto yy51;
- goto yy69;
-yy69: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy70;
-yy70:
-{ RETURN(NOSPLIT); }
-yy71: yych = *++YYCURSOR;
- if(yych == 'S') goto yy72;
- if(yych != 's') goto yy51;
- goto yy72;
-yy72: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy73;
-yy73:
-{ RETURN(ABS); }
-yy74: yych = *++YYCURSOR;
- if(yych == 'G') goto yy81;
- if(yych == 'g') goto yy81;
- goto yy51;
-yy75: yych = *++YYCURSOR;
- if(yych == 'R') goto yy76;
- if(yych != 'r') goto yy51;
- goto yy76;
-yy76: yych = *++YYCURSOR;
- if(yych == 'I') goto yy77;
- if(yych != 'i') goto yy51;
- goto yy77;
-yy77: yych = *++YYCURSOR;
- if(yych == 'C') goto yy78;
- if(yych != 'c') goto yy51;
- goto yy78;
-yy78: yych = *++YYCURSOR;
- if(yych == 'T') goto yy79;
- if(yych != 't') goto yy51;
- goto yy79;
-yy79: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy80;
-yy80:
-{ RETURN(STRICT); }
-yy81: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy82;
-yy82:
-{ RETURN(SEG); }
-yy83: yych = *++YYCURSOR;
- if(yych == 'U') goto yy84;
- if(yych != 'u') goto yy51;
- goto yy84;
-yy84: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy85;
-yy85:
-{ RETURN(EQU); }
-yy86: yych = *++YYCURSOR;
- if(yych == 'C') goto yy87;
- if(yych != 'c') goto yy51;
- goto yy87;
-yy87: yych = *++YYCURSOR;
- if(yych == 'B') goto yy88;
- if(yych != 'b') goto yy51;
- goto yy88;
-yy88: yych = *++YYCURSOR;
- if(yych == 'I') goto yy89;
- if(yych != 'i') goto yy51;
- goto yy89;
-yy89: yych = *++YYCURSOR;
- if(yych == 'N') goto yy90;
- if(yych != 'n') goto yy51;
- goto yy90;
-yy90: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy91;
-yy91:
-{ RETURN(INCBIN); }
-yy92: yych = *++YYCURSOR;
- if(yych <= 'S'){
- if(yych == 'L') goto yy94;
- if(yych <= 'R') goto yy51;
- goto yy93;
- } else {
- if(yych <= 'l'){
- if(yych <= 'k') goto yy51;
- goto yy94;
- } else {
- if(yych != 's') goto yy51;
- goto yy93;
- }
- }
-yy93: yych = *++YYCURSOR;
- switch(yych){
- case 'B': case 'b': goto yy96;
- case 'D': case 'd': goto yy98;
- case 'H': case 'h': goto yy100;
- case 'O': case 'o': goto yy101;
- case 'Q': case 'q': goto yy103;
- case 'T': case 't': goto yy105;
- case 'W': case 'w': goto yy107;
- case 'Y': case 'y': goto yy109;
- default: goto yy51;
- }
-yy94: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy95;
-yy95:
-{ RETURN(REL); }
-yy96: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy97;
-yy97:
-{
- lvalp->int_info = 8;
- parser_nasm->state = INSTRUCTION;
- RETURN(RESERVE_SPACE);
- }
-yy98: yych = *++YYCURSOR;
- if(yych <= 'Q'){
- if(yych <= '.'){
- if(yych <= '"') goto yy99;
- if(yych <= '$') goto yy50;
- if(yych >= '.') goto yy50;
- goto yy99;
- } else {
- if(yych <= '9'){
- if(yych >= '0') goto yy50;
- goto yy99;
- } else {
- if(yych <= '>') goto yy99;
- if(yych <= 'P') goto yy50;
- goto yy113;
- }
- }
- } else {
- if(yych <= 'p'){
- if(yych <= '^'){
- if(yych <= 'Z') goto yy50;
- goto yy99;
- } else {
- if(yych != '`') goto yy50;
- goto yy99;
- }
- } else {
- if(yych <= 'z'){
- if(yych <= 'q') goto yy113;
- goto yy50;
- } else {
- if(yych == '~') goto yy50;
- goto yy99;
- }
- }
- }
-yy99:
-{
- lvalp->int_info = yasm_arch_wordsize(p_object->arch)*2;
- parser_nasm->state = INSTRUCTION;
- RETURN(RESERVE_SPACE);
- }
-yy100: yych = *++YYCURSOR;
- if(yych == 'W') goto yy111;
- if(yych == 'w') goto yy111;
- goto yy51;
-yy101: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy102;
-yy102:
-{
- lvalp->int_info = yasm_arch_wordsize(p_object->arch)*8;
- parser_nasm->state = INSTRUCTION;
- RETURN(RESERVE_SPACE);
- }
-yy103: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy104;
-yy104:
-{
- lvalp->int_info = yasm_arch_wordsize(p_object->arch)*4;
- parser_nasm->state = INSTRUCTION;
- RETURN(RESERVE_SPACE);
- }
-yy105: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy106;
-yy106:
-{
- lvalp->int_info = 80;
- parser_nasm->state = INSTRUCTION;
- RETURN(RESERVE_SPACE);
- }
-yy107: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy108;
-yy108:
-{
- lvalp->int_info = yasm_arch_wordsize(p_object->arch);
- parser_nasm->state = INSTRUCTION;
- RETURN(RESERVE_SPACE);
- }
-yy109: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy110;
-yy110:
-{
- lvalp->int_info = 256;
- parser_nasm->state = INSTRUCTION;
- RETURN(RESERVE_SPACE);
- }
-yy111: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy112;
-yy112:
-{
- lvalp->int_info = yasm_arch_wordsize(p_object->arch)/2;
- parser_nasm->state = INSTRUCTION;
- RETURN(RESERVE_SPACE);
- }
-yy113: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy114;
-yy114:
-{
- lvalp->int_info = yasm_arch_wordsize(p_object->arch)*8;
- parser_nasm->state = INSTRUCTION;
- RETURN(RESERVE_SPACE);
- }
-yy115: yych = *++YYCURSOR;
- if(yych == 'O') goto yy116;
- if(yych != 'o') goto yy51;
- goto yy116;
-yy116: yych = *++YYCURSOR;
- if(yych == 'R') goto yy117;
- if(yych != 'r') goto yy51;
- goto yy117;
-yy117: yych = *++YYCURSOR;
- if(yych == 'D') goto yy118;
- if(yych != 'd') goto yy51;
- goto yy118;
-yy118: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy119;
-yy119:
-{
- lvalp->int_info = 256;
- RETURN(SIZE_OVERRIDE);
- }
-yy120: yych = *++YYCURSOR;
- if(yych == 'O') goto yy121;
- if(yych != 'o') goto yy51;
- goto yy121;
-yy121: yych = *++YYCURSOR;
- if(yych == 'R') goto yy122;
- if(yych != 'r') goto yy51;
- goto yy122;
-yy122: yych = *++YYCURSOR;
- if(yych == 'D') goto yy123;
- if(yych != 'd') goto yy51;
- goto yy123;
-yy123: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy124;
-yy124:
-{
- lvalp->int_info = yasm_arch_wordsize(p_object->arch)*8;
- RETURN(SIZE_OVERRIDE);
- }
-yy125: yych = *++YYCURSOR;
- if(yych == 'M') goto yy131;
- if(yych == 'm') goto yy131;
- goto yy51;
-yy126: yych = *++YYCURSOR;
- if(yych == 'O') goto yy127;
- if(yych != 'o') goto yy51;
- goto yy127;
-yy127: yych = *++YYCURSOR;
- if(yych == 'R') goto yy128;
- if(yych != 'r') goto yy51;
- goto yy128;
-yy128: yych = *++YYCURSOR;
- if(yych == 'D') goto yy129;
- if(yych != 'd') goto yy51;
- goto yy129;
-yy129: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy130;
-yy130:
-{ lvalp->int_info = 80; RETURN(SIZE_OVERRIDE); }
-yy131: yych = *++YYCURSOR;
- if(yych == 'E') goto yy132;
- if(yych != 'e') goto yy51;
- goto yy132;
-yy132: yych = *++YYCURSOR;
- if(yych == 'S') goto yy133;
- if(yych != 's') goto yy51;
- goto yy133;
-yy133: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy134;
-yy134:
-{ RETURN(TIMES); }
-yy135: yych = *++YYCURSOR;
- if(yych == 'O') goto yy136;
- if(yych != 'o') goto yy51;
- goto yy136;
-yy136: yych = *++YYCURSOR;
- if(yych == 'R') goto yy137;
- if(yych != 'r') goto yy51;
- goto yy137;
-yy137: yych = *++YYCURSOR;
- if(yych == 'D') goto yy138;
- if(yych != 'd') goto yy51;
- goto yy138;
-yy138: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy139;
-yy139:
-{
- lvalp->int_info = yasm_arch_wordsize(p_object->arch)*4;
- RETURN(SIZE_OVERRIDE);
- }
-yy140: yych = *++YYCURSOR;
- if(yych == 'N') goto yy141;
- if(yych != 'n') goto yy51;
- goto yy141;
-yy141: yych = *++YYCURSOR;
- if(yych == 'G') goto yy142;
- if(yych != 'g') goto yy51;
- goto yy142;
-yy142: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy143;
-yy143:
-{
- lvalp->int_info = yasm_arch_wordsize(p_object->arch)*2;
- RETURN(SIZE_OVERRIDE);
- }
-yy144: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy145;
-yy145:
-{
- lvalp->int_info = 8;
- parser_nasm->state = INSTRUCTION;
- RETURN(DECLARE_DATA);
- }
-yy146: yych = *++YYCURSOR;
- if(yych <= 'Q'){
- if(yych <= '.'){
- if(yych <= '"') goto yy147;
- if(yych <= '$') goto yy50;
- if(yych >= '.') goto yy50;
- goto yy147;
- } else {
- if(yych <= '9'){
- if(yych >= '0') goto yy50;
- goto yy147;
- } else {
- if(yych <= '>') goto yy147;
- if(yych <= 'P') goto yy50;
- goto yy168;
- }
- }
- } else {
- if(yych <= 'p'){
- if(yych <= '^'){
- if(yych <= 'Z') goto yy50;
- goto yy147;
- } else {
- if(yych != '`') goto yy50;
- goto yy147;
- }
- } else {
- if(yych <= 'z'){
- if(yych <= 'q') goto yy168;
- goto yy50;
- } else {
- if(yych == '~') goto yy50;
- goto yy147;
- }
- }
- }
-yy147:
-{
- lvalp->int_info = yasm_arch_wordsize(p_object->arch)*2;
- parser_nasm->state = INSTRUCTION;
- RETURN(DECLARE_DATA);
- }
-yy148: yych = *++YYCURSOR;
- if(yych == 'W') goto yy166;
- if(yych == 'w') goto yy166;
- goto yy51;
-yy149: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy150;
-yy150:
-{
- lvalp->int_info = yasm_arch_wordsize(p_object->arch)*8;
- parser_nasm->state = INSTRUCTION;
- RETURN(DECLARE_DATA);
- }
-yy151: yych = *++YYCURSOR;
- if(yych <= 'W'){
- if(yych <= '.'){
- if(yych <= '"') goto yy152;
- if(yych <= '$') goto yy50;
- if(yych >= '.') goto yy50;
- goto yy152;
- } else {
- if(yych <= '9'){
- if(yych >= '0') goto yy50;
- goto yy152;
- } else {
- if(yych <= '>') goto yy152;
- if(yych <= 'V') goto yy50;
- goto yy161;
- }
- }
- } else {
- if(yych <= 'v'){
- if(yych <= '^'){
- if(yych <= 'Z') goto yy50;
- goto yy152;
- } else {
- if(yych != '`') goto yy50;
- goto yy152;
- }
- } else {
- if(yych <= 'z'){
- if(yych <= 'w') goto yy161;
- goto yy50;
- } else {
- if(yych == '~') goto yy50;
- goto yy152;
- }
- }
- }
-yy152:
-{
- lvalp->int_info = yasm_arch_wordsize(p_object->arch)*4;
- parser_nasm->state = INSTRUCTION;
- RETURN(DECLARE_DATA);
- }
-yy153: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy154;
-yy154:
-{
- lvalp->int_info = 80;
- parser_nasm->state = INSTRUCTION;
- RETURN(DECLARE_DATA);
- }
-yy155: yych = *++YYCURSOR;
- if(yych <= 'O'){
- if(yych <= '.'){
- if(yych <= '"') goto yy156;
- if(yych <= '$') goto yy50;
- if(yych >= '.') goto yy50;
- goto yy156;
- } else {
- if(yych <= '9'){
- if(yych >= '0') goto yy50;
- goto yy156;
- } else {
- if(yych <= '>') goto yy156;
- if(yych <= 'N') goto yy50;
- goto yy159;
- }
- }
- } else {
- if(yych <= 'n'){
- if(yych <= '^'){
- if(yych <= 'Z') goto yy50;
- goto yy156;
- } else {
- if(yych != '`') goto yy50;
- goto yy156;
- }
- } else {
- if(yych <= 'z'){
- if(yych <= 'o') goto yy159;
- goto yy50;
- } else {
- if(yych == '~') goto yy50;
- goto yy156;
- }
- }
- }
-yy156:
-{
- lvalp->int_info = yasm_arch_wordsize(p_object->arch);
- parser_nasm->state = INSTRUCTION;
- RETURN(DECLARE_DATA);
- }
-yy157: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy158;
-yy158:
-{
- lvalp->int_info = 256;
- parser_nasm->state = INSTRUCTION;
- RETURN(DECLARE_DATA);
- }
-yy159: yych = *++YYCURSOR;
- if(yych == 'R') goto yy160;
- if(yych != 'r') goto yy51;
- goto yy160;
-yy160: yych = *++YYCURSOR;
- if(yych == 'D') goto yy142;
- if(yych == 'd') goto yy142;
- goto yy51;
-yy161: yych = *++YYCURSOR;
- if(yych == 'O') goto yy162;
- if(yych != 'o') goto yy51;
- goto yy162;
-yy162: yych = *++YYCURSOR;
- if(yych == 'R') goto yy163;
- if(yych != 'r') goto yy51;
- goto yy163;
-yy163: yych = *++YYCURSOR;
- if(yych == 'D') goto yy164;
- if(yych != 'd') goto yy51;
- goto yy164;
-yy164: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy165;
-yy165:
-{
- lvalp->int_info = yasm_arch_wordsize(p_object->arch)*8;
- RETURN(SIZE_OVERRIDE);
- }
-yy166: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy167;
-yy167:
-{
- lvalp->int_info = yasm_arch_wordsize(p_object->arch)/2;
- parser_nasm->state = INSTRUCTION;
- RETURN(DECLARE_DATA);
- }
-yy168: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy169;
-yy169:
-{
- lvalp->int_info = yasm_arch_wordsize(p_object->arch)*8;
- parser_nasm->state = INSTRUCTION;
- RETURN(DECLARE_DATA);
- }
-yy170: yych = *++YYCURSOR;
- if(yych == 'R') goto yy174;
- if(yych == 'r') goto yy174;
- goto yy51;
-yy171: yych = *++YYCURSOR;
- if(yych == 'T') goto yy172;
- if(yych != 't') goto yy51;
- goto yy172;
-yy172: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy173;
-yy173:
-{ RETURN(WRT); }
-yy174: yych = *++YYCURSOR;
- if(yych == 'D') goto yy175;
- if(yych != 'd') goto yy51;
- goto yy175;
-yy175: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy176;
-yy176:
-{
- lvalp->int_info = yasm_arch_wordsize(p_object->arch);
- RETURN(SIZE_OVERRIDE);
- }
-yy177: yych = *++YYCURSOR;
- if(yych == 'O') goto yy178;
- if(yych != 'o') goto yy51;
- goto yy178;
-yy178: yych = *++YYCURSOR;
- if(yych == 'R') goto yy179;
- if(yych != 'r') goto yy51;
- goto yy179;
-yy179: yych = *++YYCURSOR;
- if(yych == 'D') goto yy180;
- if(yych != 'd') goto yy51;
- goto yy180;
-yy180: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy181;
-yy181:
-{
- lvalp->int_info = yasm_arch_wordsize(p_object->arch)/2;
- RETURN(SIZE_OVERRIDE);
- }
-yy182: yych = *++YYCURSOR;
- if(yych == 'T') goto yy183;
- if(yych != 't') goto yy51;
- goto yy183;
-yy183: yych = *++YYCURSOR;
- if(yych == 'E') goto yy184;
- if(yych != 'e') goto yy51;
- goto yy184;
-yy184: yych = *++YYCURSOR;
- if(yybm[0+yych] & 2) {
- goto yy50;
- }
- goto yy185;
-yy185:
-{ lvalp->int_info = 8; RETURN(SIZE_OVERRIDE); }
-yy186: yych = *++YYCURSOR;
- goto yy187;
-yy187:
-{ RETURN(SIGNMOD); }
-yy188: yych = *++YYCURSOR;
- if(yych == 'i') goto yy190;
- goto yy189;
-yy189: YYCURSOR = YYMARKER;
- switch(yyaccept){
- case 0: goto yy3;
- case 3: goto yy225;
- case 2: goto yy205;
- case 1: goto yy8;
- }
-yy190: yych = *++YYCURSOR;
- if(yych != 'n') goto yy189;
- goto yy191;
-yy191: yych = *++YYCURSOR;
- if(yych != 'e') goto yy189;
- goto yy192;
-yy192: yych = *++YYCURSOR;
- goto yy193;
-yy193:
-{
- parser_nasm->state = LINECHG;
- linechg_numcount = 0;
- RETURN(LINE);
- }
-yy194: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy195;
-yy195: if(yych <= '>'){
- if(yych <= '-'){
- if(yych <= '"') goto yy196;
- if(yych <= '$') goto yy194;
- goto yy196;
- } else {
- if(yych == '/') goto yy196;
- if(yych <= '9') goto yy194;
- goto yy196;
- }
- } else {
- if(yych <= '`'){
- if(yych <= 'Z') goto yy194;
- if(yych == '_') goto yy194;
- goto yy196;
- } else {
- if(yych <= 'z') goto yy194;
- if(yych == '~') goto yy194;
- goto yy196;
- }
- }
-yy196:
-{
- if (TOK[1] == '.' ||
- (parser_nasm->tasm && TOK[1] == '@' && TOK[2] == '@')) {
- /* handle like .label */
- RETURN(handle_dot_label(lvalp, TOK, TOKLEN, 1, parser_nasm));
- }
- lvalp->str_val = yasm__xstrndup(TOK+1, TOKLEN-1);
- RETURN(ID);
- }
-yy197: yych = *++YYCURSOR;
- if(yych <= '>'){
- if(yych <= '-'){
- if(yych <= '"') goto yy198;
- if(yych <= '$') goto yy194;
- goto yy198;
- } else {
- if(yych == '/') goto yy198;
- if(yych <= '9') goto yy194;
- goto yy198;
- }
- } else {
- if(yych <= '`'){
- if(yych <= 'Z') goto yy194;
- if(yych == '_') goto yy194;
- goto yy198;
- } else {
- if(yych <= 'z') goto yy194;
- if(yych == '~') goto yy194;
- goto yy198;
- }
- }
-yy198:
-{ RETURN(START_SECTION_ID); }
-yy199: yych = *++YYCURSOR;
- if(yybm[0+yych] & 4) {
- goto yy200;
- }
- goto yy195;
-yy200: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy201;
-yy201: if(yybm[0+yych] & 4) {
- goto yy200;
- }
- if(yych <= '>'){
- if(yych <= '$'){
- if(yych >= '#') goto yy194;
- goto yy202;
- } else {
- if(yych == '.') goto yy194;
- goto yy202;
- }
- } else {
- if(yych <= 'z'){
- if(yych <= 'Z') goto yy194;
- if(yych >= 'g') goto yy194;
- goto yy202;
- } else {
- if(yych == '~') goto yy194;
- goto yy202;
- }
- }
-yy202:
-{
- savech = s->tok[TOKLEN];
- s->tok[TOKLEN] = '\0';
- if (s->tok[1] == 'x' || s->tok[1] == 'X')
- /* skip 0 and x */
- lvalp->intn = yasm_intnum_create_hex(TOK+2);
- else
- /* don't skip 0 */
- lvalp->intn = yasm_intnum_create_hex(TOK+1);
- s->tok[TOKLEN] = savech;
- RETURN(INTNUM);
- }
-yy203: yyaccept = 2;
- YYMARKER = ++YYCURSOR;
- if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
- yych = *YYCURSOR;
- goto yy204;
-yy204: if(yybm[0+yych] & 8) {
- goto yy203;
- }
- if(yych == 'E') goto yy212;
- if(yych == 'e') goto yy212;
- goto yy205;
-yy205:
-{
- savech = s->tok[TOKLEN];
- s->tok[TOKLEN] = '\0';
- lvalp->flt = yasm_floatnum_create(TOK);
- s->tok[TOKLEN] = savech;
- RETURN(FLTNUM);
- }
-yy206: yyaccept = 0;
- YYMARKER = ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy207;
-yy207: if(yych <= 'G'){
- if(yych <= '/'){
- if(yych == '.') goto yy203;
- goto yy3;
- } else {
- if(yych <= '9') goto yy206;
- if(yych <= '@') goto yy3;
- if(yych >= 'G') goto yy3;
- goto yy208;
- }
- } else {
- if(yych <= '`'){
- if(yych <= 'H') goto yy210;
- if(yych != '_') goto yy3;
- goto yy208;
- } else {
- if(yych <= 'f') goto yy208;
- if(yych == 'h') goto yy210;
- goto yy3;
- }
- }
-yy208: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy209;
-yy209: if(yych <= 'H'){
- if(yych <= '@'){
- if(yych <= '/') goto yy189;
- if(yych <= '9') goto yy208;
- goto yy189;
- } else {
- if(yych <= 'F') goto yy208;
- if(yych <= 'G') goto yy189;
- goto yy210;
- }
- } else {
- if(yych <= '`'){
- if(yych == '_') goto yy208;
- goto yy189;
- } else {
- if(yych <= 'f') goto yy208;
- if(yych != 'h') goto yy189;
- goto yy210;
- }
- }
-yy210: yych = *++YYCURSOR;
- goto yy211;
-yy211:
-{
- s->tok[TOKLEN-1] = '\0'; /* strip off 'h' */
- lvalp->intn = yasm_intnum_create_hex(TOK);
- RETURN(INTNUM);
- }
-yy212: yych = *++YYCURSOR;
- if(yych <= ','){
- if(yych != '+') goto yy189;
- goto yy213;
- } else {
- if(yych <= '-') goto yy213;
- if(yych <= '/') goto yy189;
- if(yych <= '9') goto yy214;
- goto yy189;
- }
-yy213: yych = *++YYCURSOR;
- if(yych <= '/') goto yy189;
- if(yych >= ':') goto yy189;
- goto yy214;
-yy214: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy215;
-yy215: if(yych <= '/') goto yy205;
- if(yych <= '9') goto yy214;
- goto yy205;
-yy216: yyaccept = 0;
- YYMARKER = ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy217;
-yy217: if(yybm[0+yych] & 16) {
- goto yy216;
- }
- if(yych <= 'P'){
- if(yych <= '@'){
- if(yych <= '.'){
- if(yych <= '-') goto yy3;
- goto yy203;
- } else {
- if(yych <= '/') goto yy3;
- if(yych <= '9') goto yy206;
- goto yy3;
- }
- } else {
- if(yych <= 'H'){
- if(yych <= 'F') goto yy208;
- if(yych <= 'G') goto yy3;
- goto yy210;
- } else {
- if(yych == 'O') goto yy220;
- goto yy3;
- }
- }
- } else {
- if(yych <= 'g'){
- if(yych <= '_'){
- if(yych <= 'Q') goto yy220;
- if(yych <= '^') goto yy3;
- goto yy218;
- } else {
- if(yych <= '`') goto yy3;
- if(yych <= 'f') goto yy208;
- goto yy3;
- }
- } else {
- if(yych <= 'o'){
- if(yych <= 'h') goto yy210;
- if(yych <= 'n') goto yy3;
- goto yy220;
- } else {
- if(yych == 'q') goto yy220;
- goto yy3;
- }
- }
- }
-yy218: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy219;
-yy219: if(yybm[0+yych] & 32) {
- goto yy218;
- }
- if(yych <= 'P'){
- if(yych <= 'F'){
- if(yych <= '7') goto yy189;
- if(yych <= '9') goto yy208;
- if(yych <= '@') goto yy189;
- goto yy208;
- } else {
- if(yych <= 'H'){
- if(yych <= 'G') goto yy189;
- goto yy210;
- } else {
- if(yych != 'O') goto yy189;
- goto yy220;
- }
- }
- } else {
- if(yych <= 'h'){
- if(yych <= '`'){
- if(yych >= 'R') goto yy189;
- goto yy220;
- } else {
- if(yych <= 'f') goto yy208;
- if(yych <= 'g') goto yy189;
- goto yy210;
- }
- } else {
- if(yych <= 'o'){
- if(yych <= 'n') goto yy189;
- goto yy220;
- } else {
- if(yych != 'q') goto yy189;
- goto yy220;
- }
- }
- }
-yy220: yych = *++YYCURSOR;
- goto yy221;
-yy221:
-{
- s->tok[TOKLEN-1] = '\0'; /* strip off 'q' or 'o' */
- lvalp->intn = yasm_intnum_create_oct(TOK);
- RETURN(INTNUM);
- }
-yy222: yyaccept = 0;
- YYMARKER = ++YYCURSOR;
- if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
- yych = *YYCURSOR;
- goto yy223;
-yy223: if(yybm[0+yych] & 64) {
- goto yy222;
- }
- switch(yych){
- case '.': goto yy203;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7': goto yy216;
- case '8':
- case '9': goto yy206;
- case 'A': case 'C':
- case 'D':
- case 'E':
- case 'F': case 'a': case 'c':
- case 'd':
- case 'e':
- case 'f': goto yy208;
- case 'B': case 'b': goto yy224;
- case 'H': case 'h': goto yy210;
- case 'O': case 'Q': case 'o': case 'q': goto yy220;
- case '_': goto yy226;
- default: goto yy3;
- }
-yy224: yyaccept = 3;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'H'){
- if(yych <= '@'){
- if(yych <= '/') goto yy225;
- if(yych <= '9') goto yy208;
- goto yy225;
- } else {
- if(yych <= 'F') goto yy208;
- if(yych >= 'H') goto yy210;
- goto yy225;
- }
- } else {
- if(yych <= '`'){
- if(yych == '_') goto yy208;
- goto yy225;
- } else {
- if(yych <= 'f') goto yy208;
- if(yych == 'h') goto yy210;
- goto yy225;
- }
- }
-yy225:
-{
- s->tok[TOKLEN-1] = '\0'; /* strip off 'b' */
- lvalp->intn = yasm_intnum_create_bin(TOK);
- RETURN(INTNUM);
- }
-yy226: ++YYCURSOR;
- if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
- yych = *YYCURSOR;
- goto yy227;
-yy227: if(yybm[0+yych] & 128) {
- goto yy226;
- }
- switch(yych){
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7': goto yy218;
- case '8':
- case '9': case 'A': case 'C':
- case 'D':
- case 'E':
- case 'F': case 'a': case 'c':
- case 'd':
- case 'e':
- case 'f': goto yy208;
- case 'B': case 'b': goto yy224;
- case 'H': case 'h': goto yy210;
- case 'O': case 'Q': case 'o': case 'q': goto yy220;
- default: goto yy189;
- }
-yy228: yych = *++YYCURSOR;
- if(yych <= 'F'){
- if(yych <= '/') goto yy189;
- if(yych <= '9') goto yy229;
- if(yych <= '@') goto yy189;
- goto yy229;
- } else {
- if(yych <= '_'){
- if(yych <= '^') goto yy189;
- goto yy229;
- } else {
- if(yych <= '`') goto yy189;
- if(yych >= 'g') goto yy189;
- goto yy229;
- }
- }
-yy229: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy230;
-yy230: if(yych <= 'F'){
- if(yych <= '/') goto yy202;
- if(yych <= '9') goto yy229;
- if(yych <= '@') goto yy202;
- goto yy229;
- } else {
- if(yych <= '_'){
- if(yych <= '^') goto yy202;
- goto yy229;
- } else {
- if(yych <= '`') goto yy202;
- if(yych <= 'f') goto yy229;
- goto yy202;
- }
- }
-}
-}
-
-
- /* %line linenum+lineinc filename */
-linechg:
- SCANINIT();
- if (*cursor == '\0')
- goto endofinput;
-
- {
- static unsigned char yybm[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 64, 0, 0, 0, 64, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 64, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- };
-
-{
- YYCTYPE yych;
- goto yy231;
- ++YYCURSOR;
-yy231:
- if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
- yych = *YYCURSOR;
- if(yych <= '\037'){
- if(yych <= '\t'){
- if(yych <= '\000') goto yy235;
- if(yych <= '\b') goto yy241;
- goto yy239;
- } else {
- if(yych == '\r') goto yy239;
- goto yy241;
- }
- } else {
- if(yych <= '+'){
- if(yych <= ' ') goto yy239;
- if(yych <= '*') goto yy241;
- goto yy237;
- } else {
- if(yych <= '/') goto yy241;
- if(yych >= ':') goto yy241;
- goto yy233;
- }
- }
-yy233: yych = *++YYCURSOR;
- goto yy246;
-yy234:
-{
- linechg_numcount++;
- savech = s->tok[TOKLEN];
- s->tok[TOKLEN] = '\0';
- lvalp->intn = yasm_intnum_create_dec(TOK);
- s->tok[TOKLEN] = savech;
- RETURN(INTNUM);
- }
-yy235: yych = *++YYCURSOR;
- goto yy236;
-yy236:
-{ goto endofinput; }
-yy237: yych = *++YYCURSOR;
- goto yy238;
-yy238:
-{
- RETURN(s->tok[0]);
- }
-yy239: yych = *++YYCURSOR;
- goto yy244;
-yy240:
-{
- if (linechg_numcount == 2) {
- parser_nasm->state = LINECHG2;
- goto linechg2;
- }
- goto linechg;
- }
-yy241: yych = *++YYCURSOR;
- goto yy242;
-yy242:
-{
- yasm_warn_set(YASM_WARN_UNREC_CHAR,
- N_("ignoring unrecognized character `%s'"),
- yasm__conv_unprint(s->tok[0]));
- goto linechg;
- }
-yy243: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy244;
-yy244: if(yybm[0+yych] & 64) {
- goto yy243;
- }
- goto yy240;
-yy245: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy246;
-yy246: if(yybm[0+yych] & 128) {
- goto yy245;
- }
- goto yy234;
-}
-}
-
-
-linechg2:
- SCANINIT();
- if (*cursor == '\0')
- goto endofinput;
-
- {
- static unsigned char yybm[] = {
- 0, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- };
-
-{
- YYCTYPE yych;
- goto yy247;
- ++YYCURSOR;
-yy247:
- if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
- yych = *YYCURSOR;
- if(yych <= '\000') goto yy249;
- if(yych == '\r') goto yy251;
- goto yy253;
-yy249: yych = *++YYCURSOR;
- goto yy250;
-yy250:
-{ goto endofinput; }
-yy251: yych = *++YYCURSOR;
- if(yybm[0+yych] & 128) {
- goto yy253;
- }
- goto yy252;
-yy252:
-{ goto linechg2; }
-yy253: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy254;
-yy254: if(yybm[0+yych] & 128) {
- goto yy253;
- }
- goto yy255;
-yy255:
-{
- parser_nasm->state = LINECHG;
- lvalp->str_val = yasm__xstrndup(TOK, TOKLEN);
- RETURN(FILENAME);
- }
-}
-}
-
-
- /* directive: [name value] */
-directive:
- SCANINIT();
- if (*cursor == '\0')
- goto endofinput;
-
- {
- static unsigned char yybm[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 0, 0, 0, 0, 0, 0,
- 0, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 0, 0, 0, 0, 128,
- 0, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- };
-
-{
- YYCTYPE yych;
- goto yy256;
- ++YYCURSOR;
-yy256:
- if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
- yych = *YYCURSOR;
- if(yych <= ']'){
- if(yych <= '@'){
- if(yych >= '\001') goto yy263;
- goto yy258;
- } else {
- if(yych <= 'Z') goto yy261;
- if(yych <= '\\') goto yy263;
- goto yy260;
- }
- } else {
- if(yych <= '_'){
- if(yych <= '^') goto yy263;
- goto yy261;
- } else {
- if(yych <= '`') goto yy263;
- if(yych <= 'z') goto yy261;
- goto yy263;
- }
- }
-yy258: yych = *++YYCURSOR;
- goto yy259;
-yy259:
-{ goto endofinput; }
-yy260: yych = *++YYCURSOR;
- goto yy259;
-yy261: yych = *++YYCURSOR;
- goto yy266;
-yy262:
-{
- lvalp->str_val = yasm__xstrndup(TOK, TOKLEN);
- if (yasm__strcasecmp(lvalp->str_val, "section") == 0 ||
- yasm__strcasecmp(lvalp->str_val, "segment") == 0)
- parser_nasm->state = SECTION_DIRECTIVE;
- else
- parser_nasm->state = DIRECTIVE2;
- RETURN(DIRECTIVE_NAME);
- }
-yy263: yych = *++YYCURSOR;
- goto yy264;
-yy264:
-{
- yasm_warn_set(YASM_WARN_UNREC_CHAR,
- N_("ignoring unrecognized character `%s'"),
- yasm__conv_unprint(s->tok[0]));
- goto directive;
- }
-yy265: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy266;
-yy266: if(yybm[0+yych] & 128) {
- goto yy265;
- }
- goto yy262;
-}
-}
-
-
- /* section directive (the section name portion thereof) */
-section_directive:
- SCANINIT();
- if (*cursor == '\0')
- goto endofinput;
-
- {
- static unsigned char yybm[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 64, 0, 0, 0, 64, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 64, 0, 0, 128, 128, 0, 0, 0,
- 0, 0, 0, 0, 0, 128, 128, 0,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 0, 0, 0, 0, 0, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 0, 0, 0, 0, 128,
- 0, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 0, 0, 0, 128, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- };
-
-{
- YYCTYPE yych;
- goto yy267;
- ++YYCURSOR;
-yy267:
- if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
- yych = *YYCURSOR;
- if(yych <= ','){
- if(yych <= '\037'){
- if(yych <= '\t'){
- if(yych <= '\000') goto yy275;
- if(yych <= '\b') goto yy278;
- goto yy273;
- } else {
- if(yych == '\r') goto yy273;
- goto yy278;
- }
- } else {
- if(yych <= '"'){
- if(yych <= ' ') goto yy273;
- if(yych <= '!') goto yy278;
- goto yy271;
- } else {
- if(yych <= '$') goto yy269;
- if(yych == '\'') goto yy271;
- goto yy278;
- }
- }
- } else {
- if(yych <= ']'){
- if(yych <= '9'){
- if(yych == '/') goto yy278;
- goto yy269;
- } else {
- if(yych <= '>') goto yy278;
- if(yych <= 'Z') goto yy269;
- if(yych <= '\\') goto yy278;
- goto yy277;
- }
- } else {
- if(yych <= '`'){
- if(yych != '_') goto yy278;
- goto yy269;
- } else {
- if(yych <= 'z') goto yy269;
- if(yych != '~') goto yy278;
- goto yy269;
- }
- }
- }
-yy269: yych = *++YYCURSOR;
- goto yy283;
-yy270:
-{
- lvalp->str.contents = yasm__xstrndup(TOK, TOKLEN);
- lvalp->str.len = TOKLEN;
- parser_nasm->state = DIRECTIVE2;
- RETURN(STRING);
- }
-yy271: yych = *++YYCURSOR;
- goto yy272;
-yy272:
-{
- parser_nasm->state = DIRECTIVE2;
- endch = s->tok[0];
- goto stringconst;
- }
-yy273: yych = *++YYCURSOR;
- goto yy281;
-yy274:
-{
- parser_nasm->state = DIRECTIVE2;
- goto section_directive;
- }
-yy275: yych = *++YYCURSOR;
- goto yy276;
-yy276:
-{ goto endofinput; }
-yy277: yych = *++YYCURSOR;
- goto yy276;
-yy278: yych = *++YYCURSOR;
- goto yy279;
-yy279:
-{
- yasm_warn_set(YASM_WARN_UNREC_CHAR,
- N_("ignoring unrecognized character `%s'"),
- yasm__conv_unprint(s->tok[0]));
- goto section_directive;
- }
-yy280: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy281;
-yy281: if(yybm[0+yych] & 64) {
- goto yy280;
- }
- goto yy274;
-yy282: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy283;
-yy283: if(yybm[0+yych] & 128) {
- goto yy282;
- }
- goto yy270;
-}
-}
-
-
- /* inner part of directive */
-directive2:
- SCANINIT();
- if (*cursor == '\0')
- goto endofinput;
-
- {
- static unsigned char yybm[] = {
- 0, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 3, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 3, 1,
- 255, 255, 63, 63, 63, 63, 63, 63,
- 15, 15, 1, 1, 1, 1, 1, 3,
- 3, 7, 7, 7, 7, 7, 7, 3,
- 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 1, 1, 1, 1, 167,
- 1, 7, 7, 7, 7, 7, 7, 3,
- 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 1, 1, 1, 3, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 128, 0, 0, 0, 128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 128, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- };
-
-{
- YYCTYPE yych;
- unsigned int yyaccept;
- goto yy284;
- ++YYCURSOR;
-yy284:
- if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
- yych = *YYCURSOR;
- if(yych <= '7'){
- if(yych <= '#'){
- if(yych <= '\r'){
- if(yych <= '\b'){
- if(yych <= '\000') goto yy309;
- goto yy311;
- } else {
- if(yych <= '\t') goto yy307;
- if(yych <= '\f') goto yy311;
- goto yy307;
- }
- } else {
- if(yych <= ' '){
- if(yych <= '\037') goto yy311;
- goto yy307;
- } else {
- if(yych == '"') goto yy293;
- goto yy311;
- }
- }
- } else {
- if(yych <= '-'){
- if(yych <= '%'){
- if(yych <= '$') goto yy291;
- goto yy299;
- } else {
- if(yych == '\'') goto yy293;
- goto yy300;
- }
- } else {
- if(yych <= '/'){
- if(yych <= '.') goto yy303;
- goto yy298;
- } else {
- if(yych <= '0') goto yy286;
- if(yych <= '1') goto yy288;
- goto yy289;
- }
- }
- }
- } else {
- if(yych <= '['){
- if(yych <= '='){
- if(yych <= ':'){
- if(yych <= '9') goto yy290;
- goto yy300;
- } else {
- if(yych <= ';') goto yy305;
- if(yych <= '<') goto yy295;
- goto yy300;
- }
- } else {
- if(yych <= '?'){
- if(yych <= '>') goto yy297;
- goto yy303;
- } else {
- if(yych <= '@') goto yy311;
- if(yych <= 'Z') goto yy303;
- goto yy300;
- }
- }
- } else {
- if(yych <= '`'){
- if(yych <= ']'){
- if(yych <= '\\') goto yy311;
- goto yy301;
- } else {
- if(yych <= '^') goto yy300;
- if(yych <= '_') goto yy303;
- goto yy311;
- }
- } else {
- if(yych <= '|'){
- if(yych <= 'z') goto yy303;
- if(yych <= '{') goto yy311;
- goto yy300;
- } else {
- if(yych == '~') goto yy300;
- goto yy311;
- }
- }
- }
- }
-yy286: yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 'X') goto yy352;
- if(yych == 'x') goto yy352;
- goto yy347;
-yy287:
-{
- savech = s->tok[TOKLEN];
- s->tok[TOKLEN] = '\0';
- lvalp->intn = yasm_intnum_create_dec(TOK);
- s->tok[TOKLEN] = savech;
- RETURN(INTNUM);
- }
-yy288: yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- goto yy347;
-yy289: yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- goto yy341;
-yy290: yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- goto yy334;
-yy291: yych = *++YYCURSOR;
- if(yych <= '>'){
- if(yych <= '-'){
- if(yych <= '"') goto yy292;
- if(yych <= '$') goto yy326;
- goto yy292;
- } else {
- if(yych <= '.') goto yy326;
- if(yych <= '/') goto yy292;
- if(yych <= '9') goto yy329;
- goto yy292;
- }
- } else {
- if(yych <= '`'){
- if(yych <= 'Z') goto yy326;
- if(yych == '_') goto yy326;
- goto yy292;
- } else {
- if(yych <= 'z') goto yy326;
- if(yych == '~') goto yy326;
- goto yy292;
- }
- }
-yy292:
-{ RETURN(s->tok[0]); }
-yy293: yych = *++YYCURSOR;
- goto yy294;
-yy294:
-{
- endch = s->tok[0];
- goto stringconst;
- }
-yy295: yych = *++YYCURSOR;
- if(yych == '<') goto yy324;
- goto yy296;
-yy296:
-{
- yasm_warn_set(YASM_WARN_UNREC_CHAR,
- N_("ignoring unrecognized character `%s'"),
- yasm__conv_unprint(s->tok[0]));
- goto scan;
- }
-yy297: yych = *++YYCURSOR;
- if(yych == '>') goto yy322;
- goto yy296;
-yy298: yych = *++YYCURSOR;
- if(yych == '/') goto yy320;
- goto yy292;
-yy299: yych = *++YYCURSOR;
- if(yych == '%') goto yy318;
- goto yy292;
-yy300: yych = *++YYCURSOR;
- goto yy292;
-yy301: yych = *++YYCURSOR;
- goto yy302;
-yy302:
-{ goto endofinput; }
-yy303: yych = *++YYCURSOR;
- goto yy317;
-yy304:
-{
- savech = s->tok[TOKLEN];
- s->tok[TOKLEN] = '\0';
- switch (yasm_arch_parse_check_regtmod
- (p_object->arch, TOK, TOKLEN, &lvalp->arch_data)) {
- case YASM_ARCH_REG:
- s->tok[TOKLEN] = savech;
- RETURN(REG);
- default:
- s->tok[TOKLEN] = savech;
- }
- /* Propagate errors in case we got a warning from the arch */
- yasm_errwarn_propagate(parser_nasm->errwarns, cur_line);
- /* Just an identifier, return as such. */
- lvalp->str_val = yasm__xstrndup(TOK, TOKLEN);
- RETURN(ID);
- }
-yy305: yych = *++YYCURSOR;
- goto yy315;
-yy306:
-{ goto directive2; }
-yy307: yych = *++YYCURSOR;
- goto yy313;
-yy308:
-{ goto directive2; }
-yy309: yych = *++YYCURSOR;
- goto yy310;
-yy310:
-{ goto endofinput; }
-yy311: yych = *++YYCURSOR;
- goto yy296;
-yy312: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy313;
-yy313: if(yybm[256+yych] & 128) {
- goto yy312;
- }
- goto yy308;
-yy314: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy315;
-yy315: if(yybm[0+yych] & 1) {
- goto yy314;
- }
- goto yy306;
-yy316: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy317;
-yy317: if(yybm[0+yych] & 2) {
- goto yy316;
- }
- goto yy304;
-yy318: yych = *++YYCURSOR;
- goto yy319;
-yy319:
-{ RETURN(SIGNMOD); }
-yy320: yych = *++YYCURSOR;
- goto yy321;
-yy321:
-{ RETURN(SIGNDIV); }
-yy322: yych = *++YYCURSOR;
- goto yy323;
-yy323:
-{ RETURN(RIGHT_OP); }
-yy324: yych = *++YYCURSOR;
- goto yy325;
-yy325:
-{ RETURN(LEFT_OP); }
-yy326: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy327;
-yy327: if(yych <= '>'){
- if(yych <= '-'){
- if(yych <= '"') goto yy328;
- if(yych <= '$') goto yy326;
- goto yy328;
- } else {
- if(yych == '/') goto yy328;
- if(yych <= '9') goto yy326;
- goto yy328;
- }
- } else {
- if(yych <= '`'){
- if(yych <= 'Z') goto yy326;
- if(yych == '_') goto yy326;
- goto yy328;
- } else {
- if(yych <= 'z') goto yy326;
- if(yych == '~') goto yy326;
- goto yy328;
- }
- }
-yy328:
-{
- lvalp->str_val = yasm__xstrndup(TOK, TOKLEN);
- RETURN(ID);
- }
-yy329: yych = *++YYCURSOR;
- if(yybm[0+yych] & 4) {
- goto yy330;
- }
- goto yy327;
-yy330: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy331;
-yy331: if(yybm[0+yych] & 4) {
- goto yy330;
- }
- if(yych <= '>'){
- if(yych <= '$'){
- if(yych >= '#') goto yy326;
- goto yy332;
- } else {
- if(yych == '.') goto yy326;
- goto yy332;
- }
- } else {
- if(yych <= 'z'){
- if(yych <= 'Z') goto yy326;
- if(yych >= 'g') goto yy326;
- goto yy332;
- } else {
- if(yych == '~') goto yy326;
- goto yy332;
- }
- }
-yy332:
-{
- savech = s->tok[TOKLEN];
- s->tok[TOKLEN] = '\0';
- if (s->tok[1] == 'x' || s->tok[1] == 'X')
- /* skip 0 and x */
- lvalp->intn = yasm_intnum_create_hex(TOK+2);
- else
- /* don't skip 0 */
- lvalp->intn = yasm_intnum_create_hex(TOK+1);
- s->tok[TOKLEN] = savech;
- RETURN(INTNUM);
- }
-yy333: yyaccept = 0;
- YYMARKER = ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy334;
-yy334: if(yybm[0+yych] & 8) {
- goto yy333;
- }
- if(yych <= '^'){
- if(yych <= 'F'){
- if(yych <= '@') goto yy287;
- goto yy335;
- } else {
- if(yych == 'H') goto yy338;
- goto yy287;
- }
- } else {
- if(yych <= 'f'){
- if(yych == '`') goto yy287;
- goto yy335;
- } else {
- if(yych == 'h') goto yy338;
- goto yy287;
- }
- }
-yy335: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy336;
-yy336: if(yych <= 'H'){
- if(yych <= '@'){
- if(yych <= '/') goto yy337;
- if(yych <= '9') goto yy335;
- goto yy337;
- } else {
- if(yych <= 'F') goto yy335;
- if(yych >= 'H') goto yy338;
- goto yy337;
- }
- } else {
- if(yych <= '`'){
- if(yych == '_') goto yy335;
- goto yy337;
- } else {
- if(yych <= 'f') goto yy335;
- if(yych == 'h') goto yy338;
- goto yy337;
- }
- }
-yy337: YYCURSOR = YYMARKER;
- switch(yyaccept){
- case 0: goto yy287;
- case 1: goto yy349;
- }
-yy338: yych = *++YYCURSOR;
- goto yy339;
-yy339:
-{
- s->tok[TOKLEN-1] = '\0'; /* strip off 'h' */
- lvalp->intn = yasm_intnum_create_hex(TOK);
- RETURN(INTNUM);
- }
-yy340: yyaccept = 0;
- YYMARKER = ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy341;
-yy341: if(yybm[0+yych] & 16) {
- goto yy340;
- }
- if(yych <= 'Q'){
- if(yych <= 'G'){
- if(yych <= '9'){
- if(yych <= '7') goto yy287;
- goto yy333;
- } else {
- if(yych <= '@') goto yy287;
- if(yych <= 'F') goto yy335;
- goto yy287;
- }
- } else {
- if(yych <= 'N'){
- if(yych <= 'H') goto yy338;
- goto yy287;
- } else {
- if(yych == 'P') goto yy287;
- goto yy344;
- }
- }
- } else {
- if(yych <= 'g'){
- if(yych <= '_'){
- if(yych <= '^') goto yy287;
- goto yy342;
- } else {
- if(yych <= '`') goto yy287;
- if(yych <= 'f') goto yy335;
- goto yy287;
- }
- } else {
- if(yych <= 'o'){
- if(yych <= 'h') goto yy338;
- if(yych <= 'n') goto yy287;
- goto yy344;
- } else {
- if(yych == 'q') goto yy344;
- goto yy287;
- }
- }
- }
-yy342: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy343;
-yy343: if(yybm[0+yych] & 32) {
- goto yy342;
- }
- if(yych <= 'P'){
- if(yych <= 'F'){
- if(yych <= '7') goto yy337;
- if(yych <= '9') goto yy335;
- if(yych <= '@') goto yy337;
- goto yy335;
- } else {
- if(yych <= 'H'){
- if(yych <= 'G') goto yy337;
- goto yy338;
- } else {
- if(yych != 'O') goto yy337;
- goto yy344;
- }
- }
- } else {
- if(yych <= 'h'){
- if(yych <= '`'){
- if(yych >= 'R') goto yy337;
- goto yy344;
- } else {
- if(yych <= 'f') goto yy335;
- if(yych <= 'g') goto yy337;
- goto yy338;
- }
- } else {
- if(yych <= 'o'){
- if(yych <= 'n') goto yy337;
- goto yy344;
- } else {
- if(yych != 'q') goto yy337;
- goto yy344;
- }
- }
- }
-yy344: yych = *++YYCURSOR;
- goto yy345;
-yy345:
-{
- s->tok[TOKLEN-1] = '\0'; /* strip off 'q' or 'o' */
- lvalp->intn = yasm_intnum_create_oct(TOK);
- RETURN(INTNUM);
- }
-yy346: yyaccept = 0;
- YYMARKER = ++YYCURSOR;
- if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
- yych = *YYCURSOR;
- goto yy347;
-yy347: if(yybm[0+yych] & 64) {
- goto yy346;
- }
- switch(yych){
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7': goto yy340;
- case '8':
- case '9': goto yy333;
- case 'A': case 'C':
- case 'D':
- case 'E':
- case 'F': case 'a': case 'c':
- case 'd':
- case 'e':
- case 'f': goto yy335;
- case 'B': case 'b': goto yy348;
- case 'H': case 'h': goto yy338;
- case 'O': case 'Q': case 'o': case 'q': goto yy344;
- case '_': goto yy350;
- default: goto yy287;
- }
-yy348: yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'H'){
- if(yych <= '@'){
- if(yych <= '/') goto yy349;
- if(yych <= '9') goto yy335;
- goto yy349;
- } else {
- if(yych <= 'F') goto yy335;
- if(yych >= 'H') goto yy338;
- goto yy349;
- }
- } else {
- if(yych <= '`'){
- if(yych == '_') goto yy335;
- goto yy349;
- } else {
- if(yych <= 'f') goto yy335;
- if(yych == 'h') goto yy338;
- goto yy349;
- }
- }
-yy349:
-{
- s->tok[TOKLEN-1] = '\0'; /* strip off 'b' */
- lvalp->intn = yasm_intnum_create_bin(TOK);
- RETURN(INTNUM);
- }
-yy350: ++YYCURSOR;
- if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
- yych = *YYCURSOR;
- goto yy351;
-yy351: if(yybm[0+yych] & 128) {
- goto yy350;
- }
- switch(yych){
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7': goto yy342;
- case '8':
- case '9': case 'A': case 'C':
- case 'D':
- case 'E':
- case 'F': case 'a': case 'c':
- case 'd':
- case 'e':
- case 'f': goto yy335;
- case 'B': case 'b': goto yy348;
- case 'H': case 'h': goto yy338;
- case 'O': case 'Q': case 'o': case 'q': goto yy344;
- default: goto yy337;
- }
-yy352: yych = *++YYCURSOR;
- if(yych <= 'F'){
- if(yych <= '/') goto yy337;
- if(yych <= '9') goto yy353;
- if(yych <= '@') goto yy337;
- goto yy353;
- } else {
- if(yych <= '_'){
- if(yych <= '^') goto yy337;
- goto yy353;
- } else {
- if(yych <= '`') goto yy337;
- if(yych >= 'g') goto yy337;
- goto yy353;
- }
- }
-yy353: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
- yych = *YYCURSOR;
- goto yy354;
-yy354: if(yych <= 'F'){
- if(yych <= '/') goto yy332;
- if(yych <= '9') goto yy353;
- if(yych <= '@') goto yy332;
- goto yy353;
- } else {
- if(yych <= '_'){
- if(yych <= '^') goto yy332;
- goto yy353;
- } else {
- if(yych <= '`') goto yy332;
- if(yych <= 'f') goto yy353;
- goto yy332;
- }
- }
-}
-}
-
-
- /* string/character constant values */
-stringconst:
- strbuf = yasm_xmalloc(STRBUF_ALLOC_SIZE);
- strbuf_size = STRBUF_ALLOC_SIZE;
- count = 0;
-
-stringconst_scan:
- SCANINIT();
- if (*cursor == '\0')
- goto stringconst_error;
-
- {
-
-{
- YYCTYPE yych;
- goto yy355;
- ++YYCURSOR;
-yy355:
- if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
- yych = *YYCURSOR;
- if(yych <= '"'){
- if(yych <= '\000') goto yy357;
- if(yych <= '!') goto yy362;
- goto yy361;
- } else {
- if(yych == '\'') goto yy359;
- goto yy362;
- }
-yy357: yych = *++YYCURSOR;
- goto yy358;
-yy358:
-{ goto stringconst_error; }
-yy359: yych = *++YYCURSOR;
- if(yych == '\'') goto yy363;
- goto yy360;
-yy360:
-{
- if (s->tok[0] == endch)
- goto stringconst_end;
-
- strbuf[count++] = s->tok[0];
- if (count >= strbuf_size) {
- strbuf = yasm_xrealloc(strbuf, strbuf_size + STRBUF_ALLOC_SIZE);
- strbuf_size += STRBUF_ALLOC_SIZE;
- }
-
- goto stringconst_scan;
- }
-yy361: yych = *++YYCURSOR;
- if(yych == '"') goto yy363;
- goto yy360;
-yy362: yych = *++YYCURSOR;
- goto yy360;
-yy363: yych = *++YYCURSOR;
- goto yy364;
-yy364:
-{
- if (endch != s->tok[0]) {
- strbuf[count++] = s->tok[0];
- if (count >= strbuf_size) {
- strbuf = yasm_xrealloc(strbuf,
- strbuf_size + STRBUF_ALLOC_SIZE);
- strbuf_size += STRBUF_ALLOC_SIZE;
- }
- } else if (!parser_nasm->tasm) {
- YYCURSOR--;
- goto stringconst_end;
- }
- strbuf[count++] = s->tok[0];
- if (count >= strbuf_size) {
- strbuf = yasm_xrealloc(strbuf, strbuf_size + STRBUF_ALLOC_SIZE);
- strbuf_size += STRBUF_ALLOC_SIZE;
- }
- goto stringconst_scan;
- }
-}
-}
-
-
-stringconst_error:
- yasm_error_set(YASM_ERROR_SYNTAX, N_("unterminated string"));
-
-stringconst_end:
- strbuf[count] = '\0';
- lvalp->str.contents = (char *)strbuf;
- lvalp->str.len = count;
- RETURN(STRING);
-
-endofinput:
- parser_nasm->state = INITIAL;
- RETURN(s->tok[0]);
-}
-
+/* Generated by re2c
+ */
+/*
+ * NASM-compatible re2c lexer
+ *
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Portions based on re2c's example code.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <libyasm.h>
+
+#include "modules/parsers/nasm/nasm-parser.h"
+#include "modules/preprocs/nasm/nasm.h"
+
+
+#define YYCURSOR cursor
+#define YYLIMIT (s->lim)
+#define YYMARKER (s->ptr)
+#define YYFILL(n) {}
+
+#define RETURN(i) {s->cur = cursor; parser_nasm->tokch = s->tok[0]; \
+ return i;}
+
+#define SCANINIT() {s->tok = cursor;}
+
+#define TOK ((char *)s->tok)
+#define TOKLEN (size_t)(cursor-s->tok)
+
+
+/* starting size of string buffer */
+#define STRBUF_ALLOC_SIZE 128
+
+/* string buffer used when parsing strings/character constants */
+static YYCTYPE *strbuf = NULL;
+
+/* length of strbuf (including terminating NULL character) */
+static size_t strbuf_size = 0;
+
+static int linechg_numcount;
+
+
+
+static int
+handle_dot_label(YYSTYPE *lvalp, char *tok, size_t toklen, size_t zeropos,
+ yasm_parser_nasm *parser_nasm)
+{
+ /* check for special non-local labels like ..start */
+ if (tok[zeropos+1] == '.') {
+ lvalp->str_val = yasm__xstrndup(tok+zeropos+(parser_nasm->tasm?2:0),
+ toklen-zeropos-(parser_nasm->tasm?2:0));
+ /* check for special non-local ..@label */
+ if (lvalp->str_val[zeropos+2] == '@')
+ return NONLOCAL_ID;
+ return SPECIAL_ID;
+ }
+ if (parser_nasm->masm && tok[zeropos] == '.') {
+ lvalp->str_val = yasm__xstrndup(tok + zeropos, toklen - zeropos);
+ return SPECIAL_ID;
+ }
+ if (parser_nasm->tasm && (!tasm_locals ||
+ (tok[zeropos] == '.' &&
+ tok[zeropos+1] != '@' && tok[zeropos+2] != '@'))) {
+ /* no locals on Tasm without the 'locals' directive */
+ /* .foo is never local either, but .@@foo may be (local structure
+ * members) */
+ lvalp->str_val = yasm__xstrndup(tok + zeropos, toklen - zeropos);
+ return SPECIAL_ID;
+ }
+ if (!parser_nasm->locallabel_base) {
+ lvalp->str_val = yasm__xstrndup(tok+zeropos, toklen-zeropos);
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("no non-local label before `%s'"),
+ lvalp->str_val);
+ } else {
+ size_t len = toklen - zeropos + parser_nasm->locallabel_base_len;
+ lvalp->str_val = yasm_xmalloc(len + 1);
+ strcpy(lvalp->str_val, parser_nasm->locallabel_base);
+ strncat(lvalp->str_val, tok+zeropos, toklen-zeropos);
+ lvalp->str_val[len] = '\0';
+ }
+
+ return LOCAL_ID;
+}
+
+int
+nasm_parser_lex(YYSTYPE *lvalp, yasm_parser_nasm *parser_nasm)
+{
+ yasm_scanner *s = &parser_nasm->s;
+ YYCTYPE *cursor = s->cur;
+ YYCTYPE endch;
+ size_t count;
+ YYCTYPE savech;
+
+ /* Handle one token of lookahead */
+ if (parser_nasm->peek_token != NONE) {
+ int tok = parser_nasm->peek_token;
+ *lvalp = parser_nasm->peek_tokval; /* structure copy */
+ parser_nasm->tokch = parser_nasm->peek_tokch;
+ parser_nasm->peek_token = NONE;
+ return tok;
+ }
+
+ /* Catch EOL (EOF from the scanner perspective) */
+ if (s->eof && cursor == s->eof)
+ return 0;
+
+ /* Jump to proper "exclusive" states */
+ switch (parser_nasm->state) {
+ case DIRECTIVE:
+ goto directive;
+ case SECTION_DIRECTIVE:
+ goto section_directive;
+ case DIRECTIVE2:
+ goto directive2;
+ case LINECHG:
+ goto linechg;
+ case LINECHG2:
+ goto linechg2;
+ default:
+ break;
+ }
+
+scan:
+ SCANINIT();
+ if (*cursor == '\0')
+ goto endofinput;
+
+ {
+ static unsigned char yybm[] = {
+ 0, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 3, 3, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 3, 1,
+ 255, 255, 63, 63, 63, 63, 63, 63,
+ 15, 15, 1, 1, 1, 1, 1, 3,
+ 3, 7, 7, 7, 7, 7, 7, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 1, 1, 1, 1, 167,
+ 1, 7, 7, 7, 7, 7, 7, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 1, 1, 1, 3, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 128, 0, 0, 0, 128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 128, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ };
+
+{
+ YYCTYPE yych;
+ unsigned int yyaccept;
+ goto yy0;
+ ++YYCURSOR;
+yy0:
+ if((YYLIMIT - YYCURSOR) < 8) YYFILL(8);
+ yych = *YYCURSOR;
+ switch(yych){
+ case '\000': goto yy43;
+ case '\t': case '\r': case ' ': goto yy41;
+ case '"': case '\'': goto yy9;
+ case '$': goto yy7;
+ case '%': goto yy11;
+ case '&': case '(':
+ case ')':
+ case '*':
+ case '+':
+ case ',':
+ case '-': case ':': case '=': case '[': case '^': case '|': case '~': goto yy32;
+ case '.': goto yy36;
+ case '/': goto yy31;
+ case '0': goto yy2;
+ case '1': goto yy4;
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7': goto yy5;
+ case '8':
+ case '9': goto yy6;
+ case ';': goto yy39;
+ case '<': goto yy28;
+ case '>': goto yy30;
+ case '?': goto yy33;
+ case '@': goto yy37;
+ case 'A': case 'a': goto yy26;
+ case 'B': case 'b': goto yy12;
+ case 'C': case 'F':
+ case 'G': case 'J':
+ case 'K': case 'M': case 'P': case 'U':
+ case 'V': case 'X': case 'Z': case '_': case 'c': case 'f':
+ case 'g': case 'j':
+ case 'k': case 'm': case 'p': case 'u':
+ case 'v': case 'x': case 'z': goto yy38;
+ case 'D': case 'd': goto yy16;
+ case 'E': case 'e': goto yy24;
+ case 'H': case 'h': goto yy14;
+ case 'I': case 'i': goto yy23;
+ case 'L': case 'l': goto yy17;
+ case 'N': case 'n': goto yy27;
+ case 'O': case 'o': goto yy20;
+ case 'Q': case 'q': goto yy18;
+ case 'R': case 'r': goto yy22;
+ case 'S': case 's': goto yy25;
+ case 'T': case 't': goto yy19;
+ case 'W': case 'w': goto yy15;
+ case 'Y': case 'y': goto yy21;
+ case ']': goto yy34;
+ default: goto yy45;
+ }
+yy2: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yybm[0+yych] & 64) {
+ goto yy222;
+ }
+ switch(yych){
+ case '.': goto yy203;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7': goto yy216;
+ case '8':
+ case '9': goto yy206;
+ case 'A': case 'C':
+ case 'D':
+ case 'E':
+ case 'F': case 'a': case 'c':
+ case 'd':
+ case 'e':
+ case 'f': goto yy208;
+ case 'B': case 'b': goto yy224;
+ case 'H': case 'h': goto yy210;
+ case 'O': case 'Q': case 'o': case 'q': goto yy220;
+ case 'X': case 'x': goto yy228;
+ case '_': goto yy226;
+ default: goto yy3;
+ }
+yy3:
+{
+ savech = s->tok[TOKLEN];
+ s->tok[TOKLEN] = '\0';
+ lvalp->intn = yasm_intnum_create_dec(TOK);
+ s->tok[TOKLEN] = savech;
+ RETURN(INTNUM);
+ }
+yy4: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yybm[0+yych] & 64) {
+ goto yy222;
+ }
+ switch(yych){
+ case '.': goto yy203;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7': goto yy216;
+ case '8':
+ case '9': goto yy206;
+ case 'A': case 'C':
+ case 'D':
+ case 'E':
+ case 'F': case 'a': case 'c':
+ case 'd':
+ case 'e':
+ case 'f': goto yy208;
+ case 'B': case 'b': goto yy224;
+ case 'H': case 'h': goto yy210;
+ case 'O': case 'Q': case 'o': case 'q': goto yy220;
+ case '_': goto yy226;
+ default: goto yy3;
+ }
+yy5: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yybm[0+yych] & 16) {
+ goto yy216;
+ }
+ if(yych <= 'P'){
+ if(yych <= '@'){
+ if(yych <= '.'){
+ if(yych <= '-') goto yy3;
+ goto yy203;
+ } else {
+ if(yych <= '/') goto yy3;
+ if(yych <= '9') goto yy206;
+ goto yy3;
+ }
+ } else {
+ if(yych <= 'H'){
+ if(yych <= 'F') goto yy208;
+ if(yych <= 'G') goto yy3;
+ goto yy210;
+ } else {
+ if(yych == 'O') goto yy220;
+ goto yy3;
+ }
+ }
+ } else {
+ if(yych <= 'g'){
+ if(yych <= '_'){
+ if(yych <= 'Q') goto yy220;
+ if(yych <= '^') goto yy3;
+ goto yy218;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'f') goto yy208;
+ goto yy3;
+ }
+ } else {
+ if(yych <= 'o'){
+ if(yych <= 'h') goto yy210;
+ if(yych <= 'n') goto yy3;
+ goto yy220;
+ } else {
+ if(yych == 'q') goto yy220;
+ goto yy3;
+ }
+ }
+ }
+yy6: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'G'){
+ if(yych <= '/'){
+ if(yych == '.') goto yy203;
+ goto yy3;
+ } else {
+ if(yych <= '9') goto yy206;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'F') goto yy208;
+ goto yy3;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'H') goto yy210;
+ if(yych == '_') goto yy208;
+ goto yy3;
+ } else {
+ if(yych <= 'f') goto yy208;
+ if(yych == 'h') goto yy210;
+ goto yy3;
+ }
+ }
+yy7: yych = *++YYCURSOR;
+ if(yych <= '>'){
+ if(yych <= '-'){
+ if(yych <= '"') goto yy8;
+ if(yych <= '#') goto yy194;
+ if(yych <= '$') goto yy197;
+ goto yy8;
+ } else {
+ if(yych <= '.') goto yy194;
+ if(yych <= '/') goto yy8;
+ if(yych <= '9') goto yy199;
+ goto yy8;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy194;
+ if(yych == '_') goto yy194;
+ goto yy8;
+ } else {
+ if(yych <= 'z') goto yy194;
+ if(yych == '~') goto yy194;
+ goto yy8;
+ }
+ }
+yy8:
+{ RETURN(s->tok[0]); }
+yy9: yych = *++YYCURSOR;
+ goto yy10;
+yy10:
+{
+ endch = s->tok[0];
+ goto stringconst;
+ }
+yy11: yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych == '%') goto yy186;
+ if(yych == 'l') goto yy188;
+ goto yy8;
+yy12: yych = *++YYCURSOR;
+ if(yych == 'Y') goto yy182;
+ if(yych == 'y') goto yy182;
+ goto yy51;
+yy13:
+{
+ savech = s->tok[TOKLEN];
+ s->tok[TOKLEN] = '\0';
+ if (parser_nasm->state != INSTRUCTION) {
+ uintptr_t prefix;
+ switch (yasm_arch_parse_check_insnprefix
+ (p_object->arch, TOK, TOKLEN, cur_line, &lvalp->bc,
+ &prefix)) {
+ case YASM_ARCH_INSN:
+ parser_nasm->state = INSTRUCTION;
+ s->tok[TOKLEN] = savech;
+ RETURN(INSN);
+ case YASM_ARCH_PREFIX:
+ lvalp->arch_data = prefix;
+ s->tok[TOKLEN] = savech;
+ RETURN(PREFIX);
+ default:
+ break;
+ }
+ }
+ switch (yasm_arch_parse_check_regtmod
+ (p_object->arch, TOK, TOKLEN, &lvalp->arch_data)) {
+ case YASM_ARCH_REG:
+ s->tok[TOKLEN] = savech;
+ RETURN(REG);
+ case YASM_ARCH_SEGREG:
+ s->tok[TOKLEN] = savech;
+ RETURN(SEGREG);
+ case YASM_ARCH_TARGETMOD:
+ s->tok[TOKLEN] = savech;
+ RETURN(TARGETMOD);
+ case YASM_ARCH_REGGROUP:
+ if (parser_nasm->masm) {
+ s->tok[TOKLEN] = savech;
+ RETURN(REGGROUP);
+ }
+ default:
+ break;
+ }
+ if (parser_nasm->masm) {
+ if (!yasm__strcasecmp(TOK, "offset")) {
+ s->tok[TOKLEN] = savech;
+ RETURN(OFFSET);
+ }
+ } else if (parser_nasm->tasm) {
+ if (!yasm__strcasecmp(TOK, "shl")) {
+ s->tok[TOKLEN] = savech;
+ RETURN(LEFT_OP);
+ }
+ if (!yasm__strcasecmp(TOK, "shr")) {
+ s->tok[TOKLEN] = savech;
+ RETURN(RIGHT_OP);
+ }
+ if (!yasm__strcasecmp(TOK, "and")) {
+ s->tok[TOKLEN] = savech;
+ RETURN('&');
+ }
+ if (!yasm__strcasecmp(TOK, "or")) {
+ s->tok[TOKLEN] = savech;
+ RETURN('|');
+ }
+ if (!yasm__strcasecmp(TOK, "not")) {
+ s->tok[TOKLEN] = savech;
+ RETURN('~');
+ }
+ if (!yasm__strcasecmp(TOK, "low")) {
+ s->tok[TOKLEN] = savech;
+ RETURN(LOW);
+ }
+ if (!yasm__strcasecmp(TOK, "high")) {
+ s->tok[TOKLEN] = savech;
+ RETURN(HIGH);
+ }
+ if (!yasm__strcasecmp(TOK, "offset")) {
+ s->tok[TOKLEN] = savech;
+ RETURN(OFFSET);
+ }
+ if (!yasm__strcasecmp(TOK, "fword")) {
+ s->tok[TOKLEN] = savech;
+ lvalp->int_info = yasm_arch_wordsize(p_object->arch)*2;
+ RETURN(SIZE_OVERRIDE);
+ }
+ if (!yasm__strcasecmp(TOK, "df")) {
+ s->tok[TOKLEN] = savech;
+ lvalp->int_info = yasm_arch_wordsize(p_object->arch)*3;
+ parser_nasm->state = INSTRUCTION;
+ RETURN(DECLARE_DATA);
+ }
+ if (!yasm__strcasecmp(TOK, "label")) {
+ s->tok[TOKLEN] = savech;
+ RETURN(LABEL);
+ }
+ if (!yasm__strcasecmp(TOK, "dup")) {
+ s->tok[TOKLEN] = savech;
+ RETURN(DUP);
+ }
+ }
+ /* Propagate errors in case we got a warning from the arch */
+ yasm_errwarn_propagate(parser_nasm->errwarns, cur_line);
+ /* Just an identifier, return as such. */
+ s->tok[TOKLEN] = savech;
+ lvalp->str_val = yasm__xstrndup(TOK, TOKLEN);
+ RETURN(ID);
+ }
+yy14: yych = *++YYCURSOR;
+ if(yych == 'W') goto yy177;
+ if(yych == 'w') goto yy177;
+ goto yy51;
+yy15: yych = *++YYCURSOR;
+ if(yych <= 'R'){
+ if(yych == 'O') goto yy170;
+ if(yych <= 'Q') goto yy51;
+ goto yy171;
+ } else {
+ if(yych <= 'o'){
+ if(yych <= 'n') goto yy51;
+ goto yy170;
+ } else {
+ if(yych == 'r') goto yy171;
+ goto yy51;
+ }
+ }
+yy16: yych = *++YYCURSOR;
+ switch(yych){
+ case 'B': case 'b': goto yy144;
+ case 'D': case 'd': goto yy146;
+ case 'H': case 'h': goto yy148;
+ case 'O': case 'o': goto yy149;
+ case 'Q': case 'q': goto yy151;
+ case 'T': case 't': goto yy153;
+ case 'W': case 'w': goto yy155;
+ case 'Y': case 'y': goto yy157;
+ default: goto yy51;
+ }
+yy17: yych = *++YYCURSOR;
+ if(yych == 'O') goto yy140;
+ if(yych == 'o') goto yy140;
+ goto yy51;
+yy18: yych = *++YYCURSOR;
+ if(yych == 'W') goto yy135;
+ if(yych == 'w') goto yy135;
+ goto yy51;
+yy19: yych = *++YYCURSOR;
+ if(yych <= 'W'){
+ if(yych == 'I') goto yy125;
+ if(yych <= 'V') goto yy51;
+ goto yy126;
+ } else {
+ if(yych <= 'i'){
+ if(yych <= 'h') goto yy51;
+ goto yy125;
+ } else {
+ if(yych == 'w') goto yy126;
+ goto yy51;
+ }
+ }
+yy20: yych = *++YYCURSOR;
+ if(yych == 'W') goto yy120;
+ if(yych == 'w') goto yy120;
+ goto yy51;
+yy21: yych = *++YYCURSOR;
+ if(yych == 'W') goto yy115;
+ if(yych == 'w') goto yy115;
+ goto yy51;
+yy22: yych = *++YYCURSOR;
+ if(yych == 'E') goto yy92;
+ if(yych == 'e') goto yy92;
+ goto yy51;
+yy23: yych = *++YYCURSOR;
+ if(yych == 'N') goto yy86;
+ if(yych == 'n') goto yy86;
+ goto yy51;
+yy24: yych = *++YYCURSOR;
+ if(yych == 'Q') goto yy83;
+ if(yych == 'q') goto yy83;
+ goto yy51;
+yy25: yych = *++YYCURSOR;
+ if(yych <= 'T'){
+ if(yych == 'E') goto yy74;
+ if(yych <= 'S') goto yy51;
+ goto yy75;
+ } else {
+ if(yych <= 'e'){
+ if(yych <= 'd') goto yy51;
+ goto yy74;
+ } else {
+ if(yych == 't') goto yy75;
+ goto yy51;
+ }
+ }
+yy26: yych = *++YYCURSOR;
+ if(yych == 'B') goto yy71;
+ if(yych == 'b') goto yy71;
+ goto yy51;
+yy27: yych = *++YYCURSOR;
+ if(yych == 'O') goto yy64;
+ if(yych == 'o') goto yy64;
+ goto yy51;
+yy28: yych = *++YYCURSOR;
+ if(yych == '<') goto yy62;
+ goto yy29;
+yy29:
+{
+ yasm_warn_set(YASM_WARN_UNREC_CHAR,
+ N_("ignoring unrecognized character `%s'"),
+ yasm__conv_unprint(s->tok[0]));
+ goto scan;
+ }
+yy30: yych = *++YYCURSOR;
+ if(yych == '>') goto yy60;
+ goto yy29;
+yy31: yych = *++YYCURSOR;
+ if(yych == '/') goto yy58;
+ goto yy8;
+yy32: yych = *++YYCURSOR;
+ goto yy8;
+yy33: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy8;
+yy34: yych = *++YYCURSOR;
+ goto yy35;
+yy35:
+{ RETURN(s->tok[0]); }
+yy36: yych = *++YYCURSOR;
+ if(yych <= '>'){
+ if(yych <= '-'){
+ if(yych <= '"') goto yy29;
+ if(yych <= '$') goto yy56;
+ goto yy29;
+ } else {
+ if(yych == '/') goto yy29;
+ if(yych <= '9') goto yy56;
+ goto yy29;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy56;
+ if(yych == '_') goto yy56;
+ goto yy29;
+ } else {
+ if(yych <= 'z') goto yy56;
+ if(yych == '~') goto yy56;
+ goto yy29;
+ }
+ }
+yy37: yych = *++YYCURSOR;
+ if(yych == '@') goto yy52;
+ goto yy51;
+yy38: yych = *++YYCURSOR;
+ goto yy51;
+yy39: yych = *++YYCURSOR;
+ goto yy49;
+yy40:
+{ goto scan; }
+yy41: yych = *++YYCURSOR;
+ goto yy47;
+yy42:
+{ goto scan; }
+yy43: yych = *++YYCURSOR;
+ goto yy44;
+yy44:
+{ goto endofinput; }
+yy45: yych = *++YYCURSOR;
+ goto yy29;
+yy46: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy47;
+yy47: if(yybm[256+yych] & 128) {
+ goto yy46;
+ }
+ goto yy42;
+yy48: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy49;
+yy49: if(yybm[0+yych] & 1) {
+ goto yy48;
+ }
+ goto yy40;
+yy50: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy51;
+yy51: if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy13;
+yy52: yych = *++YYCURSOR;
+ if(yych <= '>'){
+ if(yych <= '-'){
+ if(yych <= '"') goto yy13;
+ if(yych >= '%') goto yy13;
+ goto yy53;
+ } else {
+ if(yych == '/') goto yy13;
+ if(yych >= ':') goto yy13;
+ goto yy53;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy53;
+ if(yych != '_') goto yy13;
+ goto yy53;
+ } else {
+ if(yych <= 'z') goto yy53;
+ if(yych != '~') goto yy13;
+ goto yy53;
+ }
+ }
+yy53: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy54;
+yy54: if(yych <= '>'){
+ if(yych <= '-'){
+ if(yych <= '"') goto yy55;
+ if(yych <= '$') goto yy53;
+ goto yy55;
+ } else {
+ if(yych == '/') goto yy55;
+ if(yych <= '9') goto yy53;
+ goto yy55;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy53;
+ if(yych == '_') goto yy53;
+ goto yy55;
+ } else {
+ if(yych <= 'z') goto yy53;
+ if(yych == '~') goto yy53;
+ goto yy55;
+ }
+ }
+yy55:
+{
+ RETURN(handle_dot_label(lvalp, TOK, TOKLEN, 0, parser_nasm));
+ }
+yy56: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy57;
+yy57: if(yych <= '>'){
+ if(yych <= '-'){
+ if(yych <= '"') goto yy55;
+ if(yych <= '$') goto yy56;
+ goto yy55;
+ } else {
+ if(yych == '/') goto yy55;
+ if(yych <= '9') goto yy56;
+ goto yy55;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy56;
+ if(yych == '_') goto yy56;
+ goto yy55;
+ } else {
+ if(yych <= 'z') goto yy56;
+ if(yych == '~') goto yy56;
+ goto yy55;
+ }
+ }
+yy58: yych = *++YYCURSOR;
+ goto yy59;
+yy59:
+{ RETURN(SIGNDIV); }
+yy60: yych = *++YYCURSOR;
+ goto yy61;
+yy61:
+{ RETURN(RIGHT_OP); }
+yy62: yych = *++YYCURSOR;
+ goto yy63;
+yy63:
+{ RETURN(LEFT_OP); }
+yy64: yych = *++YYCURSOR;
+ if(yych == 'S') goto yy65;
+ if(yych != 's') goto yy51;
+ goto yy65;
+yy65: yych = *++YYCURSOR;
+ if(yych == 'P') goto yy66;
+ if(yych != 'p') goto yy51;
+ goto yy66;
+yy66: yych = *++YYCURSOR;
+ if(yych == 'L') goto yy67;
+ if(yych != 'l') goto yy51;
+ goto yy67;
+yy67: yych = *++YYCURSOR;
+ if(yych == 'I') goto yy68;
+ if(yych != 'i') goto yy51;
+ goto yy68;
+yy68: yych = *++YYCURSOR;
+ if(yych == 'T') goto yy69;
+ if(yych != 't') goto yy51;
+ goto yy69;
+yy69: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy70;
+yy70:
+{ RETURN(NOSPLIT); }
+yy71: yych = *++YYCURSOR;
+ if(yych == 'S') goto yy72;
+ if(yych != 's') goto yy51;
+ goto yy72;
+yy72: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy73;
+yy73:
+{ RETURN(ABS); }
+yy74: yych = *++YYCURSOR;
+ if(yych == 'G') goto yy81;
+ if(yych == 'g') goto yy81;
+ goto yy51;
+yy75: yych = *++YYCURSOR;
+ if(yych == 'R') goto yy76;
+ if(yych != 'r') goto yy51;
+ goto yy76;
+yy76: yych = *++YYCURSOR;
+ if(yych == 'I') goto yy77;
+ if(yych != 'i') goto yy51;
+ goto yy77;
+yy77: yych = *++YYCURSOR;
+ if(yych == 'C') goto yy78;
+ if(yych != 'c') goto yy51;
+ goto yy78;
+yy78: yych = *++YYCURSOR;
+ if(yych == 'T') goto yy79;
+ if(yych != 't') goto yy51;
+ goto yy79;
+yy79: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy80;
+yy80:
+{ RETURN(STRICT); }
+yy81: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy82;
+yy82:
+{ RETURN(SEG); }
+yy83: yych = *++YYCURSOR;
+ if(yych == 'U') goto yy84;
+ if(yych != 'u') goto yy51;
+ goto yy84;
+yy84: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy85;
+yy85:
+{ RETURN(EQU); }
+yy86: yych = *++YYCURSOR;
+ if(yych == 'C') goto yy87;
+ if(yych != 'c') goto yy51;
+ goto yy87;
+yy87: yych = *++YYCURSOR;
+ if(yych == 'B') goto yy88;
+ if(yych != 'b') goto yy51;
+ goto yy88;
+yy88: yych = *++YYCURSOR;
+ if(yych == 'I') goto yy89;
+ if(yych != 'i') goto yy51;
+ goto yy89;
+yy89: yych = *++YYCURSOR;
+ if(yych == 'N') goto yy90;
+ if(yych != 'n') goto yy51;
+ goto yy90;
+yy90: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy91;
+yy91:
+{ RETURN(INCBIN); }
+yy92: yych = *++YYCURSOR;
+ if(yych <= 'S'){
+ if(yych == 'L') goto yy94;
+ if(yych <= 'R') goto yy51;
+ goto yy93;
+ } else {
+ if(yych <= 'l'){
+ if(yych <= 'k') goto yy51;
+ goto yy94;
+ } else {
+ if(yych != 's') goto yy51;
+ goto yy93;
+ }
+ }
+yy93: yych = *++YYCURSOR;
+ switch(yych){
+ case 'B': case 'b': goto yy96;
+ case 'D': case 'd': goto yy98;
+ case 'H': case 'h': goto yy100;
+ case 'O': case 'o': goto yy101;
+ case 'Q': case 'q': goto yy103;
+ case 'T': case 't': goto yy105;
+ case 'W': case 'w': goto yy107;
+ case 'Y': case 'y': goto yy109;
+ default: goto yy51;
+ }
+yy94: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy95;
+yy95:
+{ RETURN(REL); }
+yy96: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy97;
+yy97:
+{
+ lvalp->int_info = 8;
+ parser_nasm->state = INSTRUCTION;
+ RETURN(RESERVE_SPACE);
+ }
+yy98: yych = *++YYCURSOR;
+ if(yych <= 'Q'){
+ if(yych <= '.'){
+ if(yych <= '"') goto yy99;
+ if(yych <= '$') goto yy50;
+ if(yych >= '.') goto yy50;
+ goto yy99;
+ } else {
+ if(yych <= '9'){
+ if(yych >= '0') goto yy50;
+ goto yy99;
+ } else {
+ if(yych <= '>') goto yy99;
+ if(yych <= 'P') goto yy50;
+ goto yy113;
+ }
+ }
+ } else {
+ if(yych <= 'p'){
+ if(yych <= '^'){
+ if(yych <= 'Z') goto yy50;
+ goto yy99;
+ } else {
+ if(yych != '`') goto yy50;
+ goto yy99;
+ }
+ } else {
+ if(yych <= 'z'){
+ if(yych <= 'q') goto yy113;
+ goto yy50;
+ } else {
+ if(yych == '~') goto yy50;
+ goto yy99;
+ }
+ }
+ }
+yy99:
+{
+ lvalp->int_info = yasm_arch_wordsize(p_object->arch)*2;
+ parser_nasm->state = INSTRUCTION;
+ RETURN(RESERVE_SPACE);
+ }
+yy100: yych = *++YYCURSOR;
+ if(yych == 'W') goto yy111;
+ if(yych == 'w') goto yy111;
+ goto yy51;
+yy101: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy102;
+yy102:
+{
+ lvalp->int_info = yasm_arch_wordsize(p_object->arch)*8;
+ parser_nasm->state = INSTRUCTION;
+ RETURN(RESERVE_SPACE);
+ }
+yy103: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy104;
+yy104:
+{
+ lvalp->int_info = yasm_arch_wordsize(p_object->arch)*4;
+ parser_nasm->state = INSTRUCTION;
+ RETURN(RESERVE_SPACE);
+ }
+yy105: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy106;
+yy106:
+{
+ lvalp->int_info = 80;
+ parser_nasm->state = INSTRUCTION;
+ RETURN(RESERVE_SPACE);
+ }
+yy107: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy108;
+yy108:
+{
+ lvalp->int_info = yasm_arch_wordsize(p_object->arch);
+ parser_nasm->state = INSTRUCTION;
+ RETURN(RESERVE_SPACE);
+ }
+yy109: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy110;
+yy110:
+{
+ lvalp->int_info = 256;
+ parser_nasm->state = INSTRUCTION;
+ RETURN(RESERVE_SPACE);
+ }
+yy111: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy112;
+yy112:
+{
+ lvalp->int_info = yasm_arch_wordsize(p_object->arch)/2;
+ parser_nasm->state = INSTRUCTION;
+ RETURN(RESERVE_SPACE);
+ }
+yy113: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy114;
+yy114:
+{
+ lvalp->int_info = yasm_arch_wordsize(p_object->arch)*8;
+ parser_nasm->state = INSTRUCTION;
+ RETURN(RESERVE_SPACE);
+ }
+yy115: yych = *++YYCURSOR;
+ if(yych == 'O') goto yy116;
+ if(yych != 'o') goto yy51;
+ goto yy116;
+yy116: yych = *++YYCURSOR;
+ if(yych == 'R') goto yy117;
+ if(yych != 'r') goto yy51;
+ goto yy117;
+yy117: yych = *++YYCURSOR;
+ if(yych == 'D') goto yy118;
+ if(yych != 'd') goto yy51;
+ goto yy118;
+yy118: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy119;
+yy119:
+{
+ lvalp->int_info = 256;
+ RETURN(SIZE_OVERRIDE);
+ }
+yy120: yych = *++YYCURSOR;
+ if(yych == 'O') goto yy121;
+ if(yych != 'o') goto yy51;
+ goto yy121;
+yy121: yych = *++YYCURSOR;
+ if(yych == 'R') goto yy122;
+ if(yych != 'r') goto yy51;
+ goto yy122;
+yy122: yych = *++YYCURSOR;
+ if(yych == 'D') goto yy123;
+ if(yych != 'd') goto yy51;
+ goto yy123;
+yy123: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy124;
+yy124:
+{
+ lvalp->int_info = yasm_arch_wordsize(p_object->arch)*8;
+ RETURN(SIZE_OVERRIDE);
+ }
+yy125: yych = *++YYCURSOR;
+ if(yych == 'M') goto yy131;
+ if(yych == 'm') goto yy131;
+ goto yy51;
+yy126: yych = *++YYCURSOR;
+ if(yych == 'O') goto yy127;
+ if(yych != 'o') goto yy51;
+ goto yy127;
+yy127: yych = *++YYCURSOR;
+ if(yych == 'R') goto yy128;
+ if(yych != 'r') goto yy51;
+ goto yy128;
+yy128: yych = *++YYCURSOR;
+ if(yych == 'D') goto yy129;
+ if(yych != 'd') goto yy51;
+ goto yy129;
+yy129: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy130;
+yy130:
+{ lvalp->int_info = 80; RETURN(SIZE_OVERRIDE); }
+yy131: yych = *++YYCURSOR;
+ if(yych == 'E') goto yy132;
+ if(yych != 'e') goto yy51;
+ goto yy132;
+yy132: yych = *++YYCURSOR;
+ if(yych == 'S') goto yy133;
+ if(yych != 's') goto yy51;
+ goto yy133;
+yy133: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy134;
+yy134:
+{ RETURN(TIMES); }
+yy135: yych = *++YYCURSOR;
+ if(yych == 'O') goto yy136;
+ if(yych != 'o') goto yy51;
+ goto yy136;
+yy136: yych = *++YYCURSOR;
+ if(yych == 'R') goto yy137;
+ if(yych != 'r') goto yy51;
+ goto yy137;
+yy137: yych = *++YYCURSOR;
+ if(yych == 'D') goto yy138;
+ if(yych != 'd') goto yy51;
+ goto yy138;
+yy138: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy139;
+yy139:
+{
+ lvalp->int_info = yasm_arch_wordsize(p_object->arch)*4;
+ RETURN(SIZE_OVERRIDE);
+ }
+yy140: yych = *++YYCURSOR;
+ if(yych == 'N') goto yy141;
+ if(yych != 'n') goto yy51;
+ goto yy141;
+yy141: yych = *++YYCURSOR;
+ if(yych == 'G') goto yy142;
+ if(yych != 'g') goto yy51;
+ goto yy142;
+yy142: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy143;
+yy143:
+{
+ lvalp->int_info = yasm_arch_wordsize(p_object->arch)*2;
+ RETURN(SIZE_OVERRIDE);
+ }
+yy144: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy145;
+yy145:
+{
+ lvalp->int_info = 8;
+ parser_nasm->state = INSTRUCTION;
+ RETURN(DECLARE_DATA);
+ }
+yy146: yych = *++YYCURSOR;
+ if(yych <= 'Q'){
+ if(yych <= '.'){
+ if(yych <= '"') goto yy147;
+ if(yych <= '$') goto yy50;
+ if(yych >= '.') goto yy50;
+ goto yy147;
+ } else {
+ if(yych <= '9'){
+ if(yych >= '0') goto yy50;
+ goto yy147;
+ } else {
+ if(yych <= '>') goto yy147;
+ if(yych <= 'P') goto yy50;
+ goto yy168;
+ }
+ }
+ } else {
+ if(yych <= 'p'){
+ if(yych <= '^'){
+ if(yych <= 'Z') goto yy50;
+ goto yy147;
+ } else {
+ if(yych != '`') goto yy50;
+ goto yy147;
+ }
+ } else {
+ if(yych <= 'z'){
+ if(yych <= 'q') goto yy168;
+ goto yy50;
+ } else {
+ if(yych == '~') goto yy50;
+ goto yy147;
+ }
+ }
+ }
+yy147:
+{
+ lvalp->int_info = yasm_arch_wordsize(p_object->arch)*2;
+ parser_nasm->state = INSTRUCTION;
+ RETURN(DECLARE_DATA);
+ }
+yy148: yych = *++YYCURSOR;
+ if(yych == 'W') goto yy166;
+ if(yych == 'w') goto yy166;
+ goto yy51;
+yy149: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy150;
+yy150:
+{
+ lvalp->int_info = yasm_arch_wordsize(p_object->arch)*8;
+ parser_nasm->state = INSTRUCTION;
+ RETURN(DECLARE_DATA);
+ }
+yy151: yych = *++YYCURSOR;
+ if(yych <= 'W'){
+ if(yych <= '.'){
+ if(yych <= '"') goto yy152;
+ if(yych <= '$') goto yy50;
+ if(yych >= '.') goto yy50;
+ goto yy152;
+ } else {
+ if(yych <= '9'){
+ if(yych >= '0') goto yy50;
+ goto yy152;
+ } else {
+ if(yych <= '>') goto yy152;
+ if(yych <= 'V') goto yy50;
+ goto yy161;
+ }
+ }
+ } else {
+ if(yych <= 'v'){
+ if(yych <= '^'){
+ if(yych <= 'Z') goto yy50;
+ goto yy152;
+ } else {
+ if(yych != '`') goto yy50;
+ goto yy152;
+ }
+ } else {
+ if(yych <= 'z'){
+ if(yych <= 'w') goto yy161;
+ goto yy50;
+ } else {
+ if(yych == '~') goto yy50;
+ goto yy152;
+ }
+ }
+ }
+yy152:
+{
+ lvalp->int_info = yasm_arch_wordsize(p_object->arch)*4;
+ parser_nasm->state = INSTRUCTION;
+ RETURN(DECLARE_DATA);
+ }
+yy153: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy154;
+yy154:
+{
+ lvalp->int_info = 80;
+ parser_nasm->state = INSTRUCTION;
+ RETURN(DECLARE_DATA);
+ }
+yy155: yych = *++YYCURSOR;
+ if(yych <= 'O'){
+ if(yych <= '.'){
+ if(yych <= '"') goto yy156;
+ if(yych <= '$') goto yy50;
+ if(yych >= '.') goto yy50;
+ goto yy156;
+ } else {
+ if(yych <= '9'){
+ if(yych >= '0') goto yy50;
+ goto yy156;
+ } else {
+ if(yych <= '>') goto yy156;
+ if(yych <= 'N') goto yy50;
+ goto yy159;
+ }
+ }
+ } else {
+ if(yych <= 'n'){
+ if(yych <= '^'){
+ if(yych <= 'Z') goto yy50;
+ goto yy156;
+ } else {
+ if(yych != '`') goto yy50;
+ goto yy156;
+ }
+ } else {
+ if(yych <= 'z'){
+ if(yych <= 'o') goto yy159;
+ goto yy50;
+ } else {
+ if(yych == '~') goto yy50;
+ goto yy156;
+ }
+ }
+ }
+yy156:
+{
+ lvalp->int_info = yasm_arch_wordsize(p_object->arch);
+ parser_nasm->state = INSTRUCTION;
+ RETURN(DECLARE_DATA);
+ }
+yy157: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy158;
+yy158:
+{
+ lvalp->int_info = 256;
+ parser_nasm->state = INSTRUCTION;
+ RETURN(DECLARE_DATA);
+ }
+yy159: yych = *++YYCURSOR;
+ if(yych == 'R') goto yy160;
+ if(yych != 'r') goto yy51;
+ goto yy160;
+yy160: yych = *++YYCURSOR;
+ if(yych == 'D') goto yy142;
+ if(yych == 'd') goto yy142;
+ goto yy51;
+yy161: yych = *++YYCURSOR;
+ if(yych == 'O') goto yy162;
+ if(yych != 'o') goto yy51;
+ goto yy162;
+yy162: yych = *++YYCURSOR;
+ if(yych == 'R') goto yy163;
+ if(yych != 'r') goto yy51;
+ goto yy163;
+yy163: yych = *++YYCURSOR;
+ if(yych == 'D') goto yy164;
+ if(yych != 'd') goto yy51;
+ goto yy164;
+yy164: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy165;
+yy165:
+{
+ lvalp->int_info = yasm_arch_wordsize(p_object->arch)*8;
+ RETURN(SIZE_OVERRIDE);
+ }
+yy166: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy167;
+yy167:
+{
+ lvalp->int_info = yasm_arch_wordsize(p_object->arch)/2;
+ parser_nasm->state = INSTRUCTION;
+ RETURN(DECLARE_DATA);
+ }
+yy168: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy169;
+yy169:
+{
+ lvalp->int_info = yasm_arch_wordsize(p_object->arch)*8;
+ parser_nasm->state = INSTRUCTION;
+ RETURN(DECLARE_DATA);
+ }
+yy170: yych = *++YYCURSOR;
+ if(yych == 'R') goto yy174;
+ if(yych == 'r') goto yy174;
+ goto yy51;
+yy171: yych = *++YYCURSOR;
+ if(yych == 'T') goto yy172;
+ if(yych != 't') goto yy51;
+ goto yy172;
+yy172: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy173;
+yy173:
+{ RETURN(WRT); }
+yy174: yych = *++YYCURSOR;
+ if(yych == 'D') goto yy175;
+ if(yych != 'd') goto yy51;
+ goto yy175;
+yy175: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy176;
+yy176:
+{
+ lvalp->int_info = yasm_arch_wordsize(p_object->arch);
+ RETURN(SIZE_OVERRIDE);
+ }
+yy177: yych = *++YYCURSOR;
+ if(yych == 'O') goto yy178;
+ if(yych != 'o') goto yy51;
+ goto yy178;
+yy178: yych = *++YYCURSOR;
+ if(yych == 'R') goto yy179;
+ if(yych != 'r') goto yy51;
+ goto yy179;
+yy179: yych = *++YYCURSOR;
+ if(yych == 'D') goto yy180;
+ if(yych != 'd') goto yy51;
+ goto yy180;
+yy180: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy181;
+yy181:
+{
+ lvalp->int_info = yasm_arch_wordsize(p_object->arch)/2;
+ RETURN(SIZE_OVERRIDE);
+ }
+yy182: yych = *++YYCURSOR;
+ if(yych == 'T') goto yy183;
+ if(yych != 't') goto yy51;
+ goto yy183;
+yy183: yych = *++YYCURSOR;
+ if(yych == 'E') goto yy184;
+ if(yych != 'e') goto yy51;
+ goto yy184;
+yy184: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 2) {
+ goto yy50;
+ }
+ goto yy185;
+yy185:
+{ lvalp->int_info = 8; RETURN(SIZE_OVERRIDE); }
+yy186: yych = *++YYCURSOR;
+ goto yy187;
+yy187:
+{ RETURN(SIGNMOD); }
+yy188: yych = *++YYCURSOR;
+ if(yych == 'i') goto yy190;
+ goto yy189;
+yy189: YYCURSOR = YYMARKER;
+ switch(yyaccept){
+ case 0: goto yy3;
+ case 3: goto yy225;
+ case 2: goto yy205;
+ case 1: goto yy8;
+ }
+yy190: yych = *++YYCURSOR;
+ if(yych != 'n') goto yy189;
+ goto yy191;
+yy191: yych = *++YYCURSOR;
+ if(yych != 'e') goto yy189;
+ goto yy192;
+yy192: yych = *++YYCURSOR;
+ goto yy193;
+yy193:
+{
+ parser_nasm->state = LINECHG;
+ linechg_numcount = 0;
+ RETURN(LINE);
+ }
+yy194: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy195;
+yy195: if(yych <= '>'){
+ if(yych <= '-'){
+ if(yych <= '"') goto yy196;
+ if(yych <= '$') goto yy194;
+ goto yy196;
+ } else {
+ if(yych == '/') goto yy196;
+ if(yych <= '9') goto yy194;
+ goto yy196;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy194;
+ if(yych == '_') goto yy194;
+ goto yy196;
+ } else {
+ if(yych <= 'z') goto yy194;
+ if(yych == '~') goto yy194;
+ goto yy196;
+ }
+ }
+yy196:
+{
+ if (TOK[1] == '.' ||
+ (parser_nasm->tasm && TOK[1] == '@' && TOK[2] == '@')) {
+ /* handle like .label */
+ RETURN(handle_dot_label(lvalp, TOK, TOKLEN, 1, parser_nasm));
+ }
+ lvalp->str_val = yasm__xstrndup(TOK+1, TOKLEN-1);
+ RETURN(ID);
+ }
+yy197: yych = *++YYCURSOR;
+ if(yych <= '>'){
+ if(yych <= '-'){
+ if(yych <= '"') goto yy198;
+ if(yych <= '$') goto yy194;
+ goto yy198;
+ } else {
+ if(yych == '/') goto yy198;
+ if(yych <= '9') goto yy194;
+ goto yy198;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy194;
+ if(yych == '_') goto yy194;
+ goto yy198;
+ } else {
+ if(yych <= 'z') goto yy194;
+ if(yych == '~') goto yy194;
+ goto yy198;
+ }
+ }
+yy198:
+{ RETURN(START_SECTION_ID); }
+yy199: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 4) {
+ goto yy200;
+ }
+ goto yy195;
+yy200: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy201;
+yy201: if(yybm[0+yych] & 4) {
+ goto yy200;
+ }
+ if(yych <= '>'){
+ if(yych <= '$'){
+ if(yych >= '#') goto yy194;
+ goto yy202;
+ } else {
+ if(yych == '.') goto yy194;
+ goto yy202;
+ }
+ } else {
+ if(yych <= 'z'){
+ if(yych <= 'Z') goto yy194;
+ if(yych >= 'g') goto yy194;
+ goto yy202;
+ } else {
+ if(yych == '~') goto yy194;
+ goto yy202;
+ }
+ }
+yy202:
+{
+ savech = s->tok[TOKLEN];
+ s->tok[TOKLEN] = '\0';
+ if (s->tok[1] == 'x' || s->tok[1] == 'X')
+ /* skip 0 and x */
+ lvalp->intn = yasm_intnum_create_hex(TOK+2);
+ else
+ /* don't skip 0 */
+ lvalp->intn = yasm_intnum_create_hex(TOK+1);
+ s->tok[TOKLEN] = savech;
+ RETURN(INTNUM);
+ }
+yy203: yyaccept = 2;
+ YYMARKER = ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+ yych = *YYCURSOR;
+ goto yy204;
+yy204: if(yybm[0+yych] & 8) {
+ goto yy203;
+ }
+ if(yych == 'E') goto yy212;
+ if(yych == 'e') goto yy212;
+ goto yy205;
+yy205:
+{
+ savech = s->tok[TOKLEN];
+ s->tok[TOKLEN] = '\0';
+ lvalp->flt = yasm_floatnum_create(TOK);
+ s->tok[TOKLEN] = savech;
+ RETURN(FLTNUM);
+ }
+yy206: yyaccept = 0;
+ YYMARKER = ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy207;
+yy207: if(yych <= 'G'){
+ if(yych <= '/'){
+ if(yych == '.') goto yy203;
+ goto yy3;
+ } else {
+ if(yych <= '9') goto yy206;
+ if(yych <= '@') goto yy3;
+ if(yych >= 'G') goto yy3;
+ goto yy208;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'H') goto yy210;
+ if(yych != '_') goto yy3;
+ goto yy208;
+ } else {
+ if(yych <= 'f') goto yy208;
+ if(yych == 'h') goto yy210;
+ goto yy3;
+ }
+ }
+yy208: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy209;
+yy209: if(yych <= 'H'){
+ if(yych <= '@'){
+ if(yych <= '/') goto yy189;
+ if(yych <= '9') goto yy208;
+ goto yy189;
+ } else {
+ if(yych <= 'F') goto yy208;
+ if(yych <= 'G') goto yy189;
+ goto yy210;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy208;
+ goto yy189;
+ } else {
+ if(yych <= 'f') goto yy208;
+ if(yych != 'h') goto yy189;
+ goto yy210;
+ }
+ }
+yy210: yych = *++YYCURSOR;
+ goto yy211;
+yy211:
+{
+ s->tok[TOKLEN-1] = '\0'; /* strip off 'h' */
+ lvalp->intn = yasm_intnum_create_hex(TOK);
+ RETURN(INTNUM);
+ }
+yy212: yych = *++YYCURSOR;
+ if(yych <= ','){
+ if(yych != '+') goto yy189;
+ goto yy213;
+ } else {
+ if(yych <= '-') goto yy213;
+ if(yych <= '/') goto yy189;
+ if(yych <= '9') goto yy214;
+ goto yy189;
+ }
+yy213: yych = *++YYCURSOR;
+ if(yych <= '/') goto yy189;
+ if(yych >= ':') goto yy189;
+ goto yy214;
+yy214: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy215;
+yy215: if(yych <= '/') goto yy205;
+ if(yych <= '9') goto yy214;
+ goto yy205;
+yy216: yyaccept = 0;
+ YYMARKER = ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy217;
+yy217: if(yybm[0+yych] & 16) {
+ goto yy216;
+ }
+ if(yych <= 'P'){
+ if(yych <= '@'){
+ if(yych <= '.'){
+ if(yych <= '-') goto yy3;
+ goto yy203;
+ } else {
+ if(yych <= '/') goto yy3;
+ if(yych <= '9') goto yy206;
+ goto yy3;
+ }
+ } else {
+ if(yych <= 'H'){
+ if(yych <= 'F') goto yy208;
+ if(yych <= 'G') goto yy3;
+ goto yy210;
+ } else {
+ if(yych == 'O') goto yy220;
+ goto yy3;
+ }
+ }
+ } else {
+ if(yych <= 'g'){
+ if(yych <= '_'){
+ if(yych <= 'Q') goto yy220;
+ if(yych <= '^') goto yy3;
+ goto yy218;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'f') goto yy208;
+ goto yy3;
+ }
+ } else {
+ if(yych <= 'o'){
+ if(yych <= 'h') goto yy210;
+ if(yych <= 'n') goto yy3;
+ goto yy220;
+ } else {
+ if(yych == 'q') goto yy220;
+ goto yy3;
+ }
+ }
+ }
+yy218: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy219;
+yy219: if(yybm[0+yych] & 32) {
+ goto yy218;
+ }
+ if(yych <= 'P'){
+ if(yych <= 'F'){
+ if(yych <= '7') goto yy189;
+ if(yych <= '9') goto yy208;
+ if(yych <= '@') goto yy189;
+ goto yy208;
+ } else {
+ if(yych <= 'H'){
+ if(yych <= 'G') goto yy189;
+ goto yy210;
+ } else {
+ if(yych != 'O') goto yy189;
+ goto yy220;
+ }
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych <= '`'){
+ if(yych >= 'R') goto yy189;
+ goto yy220;
+ } else {
+ if(yych <= 'f') goto yy208;
+ if(yych <= 'g') goto yy189;
+ goto yy210;
+ }
+ } else {
+ if(yych <= 'o'){
+ if(yych <= 'n') goto yy189;
+ goto yy220;
+ } else {
+ if(yych != 'q') goto yy189;
+ goto yy220;
+ }
+ }
+ }
+yy220: yych = *++YYCURSOR;
+ goto yy221;
+yy221:
+{
+ s->tok[TOKLEN-1] = '\0'; /* strip off 'q' or 'o' */
+ lvalp->intn = yasm_intnum_create_oct(TOK);
+ RETURN(INTNUM);
+ }
+yy222: yyaccept = 0;
+ YYMARKER = ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ yych = *YYCURSOR;
+ goto yy223;
+yy223: if(yybm[0+yych] & 64) {
+ goto yy222;
+ }
+ switch(yych){
+ case '.': goto yy203;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7': goto yy216;
+ case '8':
+ case '9': goto yy206;
+ case 'A': case 'C':
+ case 'D':
+ case 'E':
+ case 'F': case 'a': case 'c':
+ case 'd':
+ case 'e':
+ case 'f': goto yy208;
+ case 'B': case 'b': goto yy224;
+ case 'H': case 'h': goto yy210;
+ case 'O': case 'Q': case 'o': case 'q': goto yy220;
+ case '_': goto yy226;
+ default: goto yy3;
+ }
+yy224: yyaccept = 3;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'H'){
+ if(yych <= '@'){
+ if(yych <= '/') goto yy225;
+ if(yych <= '9') goto yy208;
+ goto yy225;
+ } else {
+ if(yych <= 'F') goto yy208;
+ if(yych >= 'H') goto yy210;
+ goto yy225;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy208;
+ goto yy225;
+ } else {
+ if(yych <= 'f') goto yy208;
+ if(yych == 'h') goto yy210;
+ goto yy225;
+ }
+ }
+yy225:
+{
+ s->tok[TOKLEN-1] = '\0'; /* strip off 'b' */
+ lvalp->intn = yasm_intnum_create_bin(TOK);
+ RETURN(INTNUM);
+ }
+yy226: ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ yych = *YYCURSOR;
+ goto yy227;
+yy227: if(yybm[0+yych] & 128) {
+ goto yy226;
+ }
+ switch(yych){
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7': goto yy218;
+ case '8':
+ case '9': case 'A': case 'C':
+ case 'D':
+ case 'E':
+ case 'F': case 'a': case 'c':
+ case 'd':
+ case 'e':
+ case 'f': goto yy208;
+ case 'B': case 'b': goto yy224;
+ case 'H': case 'h': goto yy210;
+ case 'O': case 'Q': case 'o': case 'q': goto yy220;
+ default: goto yy189;
+ }
+yy228: yych = *++YYCURSOR;
+ if(yych <= 'F'){
+ if(yych <= '/') goto yy189;
+ if(yych <= '9') goto yy229;
+ if(yych <= '@') goto yy189;
+ goto yy229;
+ } else {
+ if(yych <= '_'){
+ if(yych <= '^') goto yy189;
+ goto yy229;
+ } else {
+ if(yych <= '`') goto yy189;
+ if(yych >= 'g') goto yy189;
+ goto yy229;
+ }
+ }
+yy229: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy230;
+yy230: if(yych <= 'F'){
+ if(yych <= '/') goto yy202;
+ if(yych <= '9') goto yy229;
+ if(yych <= '@') goto yy202;
+ goto yy229;
+ } else {
+ if(yych <= '_'){
+ if(yych <= '^') goto yy202;
+ goto yy229;
+ } else {
+ if(yych <= '`') goto yy202;
+ if(yych <= 'f') goto yy229;
+ goto yy202;
+ }
+ }
+}
+}
+
+
+ /* %line linenum+lineinc filename */
+linechg:
+ SCANINIT();
+ if (*cursor == '\0')
+ goto endofinput;
+
+ {
+ static unsigned char yybm[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 64, 0, 0, 0, 64, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 64, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ };
+
+{
+ YYCTYPE yych;
+ goto yy231;
+ ++YYCURSOR;
+yy231:
+ if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ yych = *YYCURSOR;
+ if(yych <= '\037'){
+ if(yych <= '\t'){
+ if(yych <= '\000') goto yy235;
+ if(yych <= '\b') goto yy241;
+ goto yy239;
+ } else {
+ if(yych == '\r') goto yy239;
+ goto yy241;
+ }
+ } else {
+ if(yych <= '+'){
+ if(yych <= ' ') goto yy239;
+ if(yych <= '*') goto yy241;
+ goto yy237;
+ } else {
+ if(yych <= '/') goto yy241;
+ if(yych >= ':') goto yy241;
+ goto yy233;
+ }
+ }
+yy233: yych = *++YYCURSOR;
+ goto yy246;
+yy234:
+{
+ linechg_numcount++;
+ savech = s->tok[TOKLEN];
+ s->tok[TOKLEN] = '\0';
+ lvalp->intn = yasm_intnum_create_dec(TOK);
+ s->tok[TOKLEN] = savech;
+ RETURN(INTNUM);
+ }
+yy235: yych = *++YYCURSOR;
+ goto yy236;
+yy236:
+{ goto endofinput; }
+yy237: yych = *++YYCURSOR;
+ goto yy238;
+yy238:
+{
+ RETURN(s->tok[0]);
+ }
+yy239: yych = *++YYCURSOR;
+ goto yy244;
+yy240:
+{
+ if (linechg_numcount == 2) {
+ parser_nasm->state = LINECHG2;
+ goto linechg2;
+ }
+ goto linechg;
+ }
+yy241: yych = *++YYCURSOR;
+ goto yy242;
+yy242:
+{
+ yasm_warn_set(YASM_WARN_UNREC_CHAR,
+ N_("ignoring unrecognized character `%s'"),
+ yasm__conv_unprint(s->tok[0]));
+ goto linechg;
+ }
+yy243: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy244;
+yy244: if(yybm[0+yych] & 64) {
+ goto yy243;
+ }
+ goto yy240;
+yy245: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy246;
+yy246: if(yybm[0+yych] & 128) {
+ goto yy245;
+ }
+ goto yy234;
+}
+}
+
+
+linechg2:
+ SCANINIT();
+ if (*cursor == '\0')
+ goto endofinput;
+
+ {
+ static unsigned char yybm[] = {
+ 0, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ };
+
+{
+ YYCTYPE yych;
+ goto yy247;
+ ++YYCURSOR;
+yy247:
+ if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ yych = *YYCURSOR;
+ if(yych <= '\000') goto yy249;
+ if(yych == '\r') goto yy251;
+ goto yy253;
+yy249: yych = *++YYCURSOR;
+ goto yy250;
+yy250:
+{ goto endofinput; }
+yy251: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 128) {
+ goto yy253;
+ }
+ goto yy252;
+yy252:
+{ goto linechg2; }
+yy253: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy254;
+yy254: if(yybm[0+yych] & 128) {
+ goto yy253;
+ }
+ goto yy255;
+yy255:
+{
+ parser_nasm->state = LINECHG;
+ lvalp->str_val = yasm__xstrndup(TOK, TOKLEN);
+ RETURN(FILENAME);
+ }
+}
+}
+
+
+ /* directive: [name value] */
+directive:
+ SCANINIT();
+ if (*cursor == '\0')
+ goto endofinput;
+
+ {
+ static unsigned char yybm[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 0, 0, 0, 0, 0, 0,
+ 0, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 0, 0, 0, 0, 128,
+ 0, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ };
+
+{
+ YYCTYPE yych;
+ goto yy256;
+ ++YYCURSOR;
+yy256:
+ if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ yych = *YYCURSOR;
+ if(yych <= ']'){
+ if(yych <= '@'){
+ if(yych >= '\001') goto yy263;
+ goto yy258;
+ } else {
+ if(yych <= 'Z') goto yy261;
+ if(yych <= '\\') goto yy263;
+ goto yy260;
+ }
+ } else {
+ if(yych <= '_'){
+ if(yych <= '^') goto yy263;
+ goto yy261;
+ } else {
+ if(yych <= '`') goto yy263;
+ if(yych <= 'z') goto yy261;
+ goto yy263;
+ }
+ }
+yy258: yych = *++YYCURSOR;
+ goto yy259;
+yy259:
+{ goto endofinput; }
+yy260: yych = *++YYCURSOR;
+ goto yy259;
+yy261: yych = *++YYCURSOR;
+ goto yy266;
+yy262:
+{
+ lvalp->str_val = yasm__xstrndup(TOK, TOKLEN);
+ if (yasm__strcasecmp(lvalp->str_val, "section") == 0 ||
+ yasm__strcasecmp(lvalp->str_val, "segment") == 0)
+ parser_nasm->state = SECTION_DIRECTIVE;
+ else
+ parser_nasm->state = DIRECTIVE2;
+ RETURN(DIRECTIVE_NAME);
+ }
+yy263: yych = *++YYCURSOR;
+ goto yy264;
+yy264:
+{
+ yasm_warn_set(YASM_WARN_UNREC_CHAR,
+ N_("ignoring unrecognized character `%s'"),
+ yasm__conv_unprint(s->tok[0]));
+ goto directive;
+ }
+yy265: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy266;
+yy266: if(yybm[0+yych] & 128) {
+ goto yy265;
+ }
+ goto yy262;
+}
+}
+
+
+ /* section directive (the section name portion thereof) */
+section_directive:
+ SCANINIT();
+ if (*cursor == '\0')
+ goto endofinput;
+
+ {
+ static unsigned char yybm[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 64, 0, 0, 0, 64, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 64, 0, 0, 128, 128, 0, 0, 0,
+ 0, 0, 0, 0, 0, 128, 128, 0,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 0, 0, 0, 0, 0, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 0, 0, 0, 0, 128,
+ 0, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 0, 0, 0, 128, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ };
+
+{
+ YYCTYPE yych;
+ goto yy267;
+ ++YYCURSOR;
+yy267:
+ if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ yych = *YYCURSOR;
+ if(yych <= ','){
+ if(yych <= '\037'){
+ if(yych <= '\t'){
+ if(yych <= '\000') goto yy275;
+ if(yych <= '\b') goto yy278;
+ goto yy273;
+ } else {
+ if(yych == '\r') goto yy273;
+ goto yy278;
+ }
+ } else {
+ if(yych <= '"'){
+ if(yych <= ' ') goto yy273;
+ if(yych <= '!') goto yy278;
+ goto yy271;
+ } else {
+ if(yych <= '$') goto yy269;
+ if(yych == '\'') goto yy271;
+ goto yy278;
+ }
+ }
+ } else {
+ if(yych <= ']'){
+ if(yych <= '9'){
+ if(yych == '/') goto yy278;
+ goto yy269;
+ } else {
+ if(yych <= '>') goto yy278;
+ if(yych <= 'Z') goto yy269;
+ if(yych <= '\\') goto yy278;
+ goto yy277;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych != '_') goto yy278;
+ goto yy269;
+ } else {
+ if(yych <= 'z') goto yy269;
+ if(yych != '~') goto yy278;
+ goto yy269;
+ }
+ }
+ }
+yy269: yych = *++YYCURSOR;
+ goto yy283;
+yy270:
+{
+ lvalp->str.contents = yasm__xstrndup(TOK, TOKLEN);
+ lvalp->str.len = TOKLEN;
+ parser_nasm->state = DIRECTIVE2;
+ RETURN(STRING);
+ }
+yy271: yych = *++YYCURSOR;
+ goto yy272;
+yy272:
+{
+ parser_nasm->state = DIRECTIVE2;
+ endch = s->tok[0];
+ goto stringconst;
+ }
+yy273: yych = *++YYCURSOR;
+ goto yy281;
+yy274:
+{
+ parser_nasm->state = DIRECTIVE2;
+ goto section_directive;
+ }
+yy275: yych = *++YYCURSOR;
+ goto yy276;
+yy276:
+{ goto endofinput; }
+yy277: yych = *++YYCURSOR;
+ goto yy276;
+yy278: yych = *++YYCURSOR;
+ goto yy279;
+yy279:
+{
+ yasm_warn_set(YASM_WARN_UNREC_CHAR,
+ N_("ignoring unrecognized character `%s'"),
+ yasm__conv_unprint(s->tok[0]));
+ goto section_directive;
+ }
+yy280: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy281;
+yy281: if(yybm[0+yych] & 64) {
+ goto yy280;
+ }
+ goto yy274;
+yy282: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy283;
+yy283: if(yybm[0+yych] & 128) {
+ goto yy282;
+ }
+ goto yy270;
+}
+}
+
+
+ /* inner part of directive */
+directive2:
+ SCANINIT();
+ if (*cursor == '\0')
+ goto endofinput;
+
+ {
+ static unsigned char yybm[] = {
+ 0, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 3, 3, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 3, 1,
+ 255, 255, 63, 63, 63, 63, 63, 63,
+ 15, 15, 1, 1, 1, 1, 1, 3,
+ 3, 7, 7, 7, 7, 7, 7, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 1, 1, 1, 1, 167,
+ 1, 7, 7, 7, 7, 7, 7, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 1, 1, 1, 3, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 128, 0, 0, 0, 128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 128, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ };
+
+{
+ YYCTYPE yych;
+ unsigned int yyaccept;
+ goto yy284;
+ ++YYCURSOR;
+yy284:
+ if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+ yych = *YYCURSOR;
+ if(yych <= '7'){
+ if(yych <= '#'){
+ if(yych <= '\r'){
+ if(yych <= '\b'){
+ if(yych <= '\000') goto yy309;
+ goto yy311;
+ } else {
+ if(yych <= '\t') goto yy307;
+ if(yych <= '\f') goto yy311;
+ goto yy307;
+ }
+ } else {
+ if(yych <= ' '){
+ if(yych <= '\037') goto yy311;
+ goto yy307;
+ } else {
+ if(yych == '"') goto yy293;
+ goto yy311;
+ }
+ }
+ } else {
+ if(yych <= '-'){
+ if(yych <= '%'){
+ if(yych <= '$') goto yy291;
+ goto yy299;
+ } else {
+ if(yych == '\'') goto yy293;
+ goto yy300;
+ }
+ } else {
+ if(yych <= '/'){
+ if(yych <= '.') goto yy303;
+ goto yy298;
+ } else {
+ if(yych <= '0') goto yy286;
+ if(yych <= '1') goto yy288;
+ goto yy289;
+ }
+ }
+ }
+ } else {
+ if(yych <= '['){
+ if(yych <= '='){
+ if(yych <= ':'){
+ if(yych <= '9') goto yy290;
+ goto yy300;
+ } else {
+ if(yych <= ';') goto yy305;
+ if(yych <= '<') goto yy295;
+ goto yy300;
+ }
+ } else {
+ if(yych <= '?'){
+ if(yych <= '>') goto yy297;
+ goto yy303;
+ } else {
+ if(yych <= '@') goto yy311;
+ if(yych <= 'Z') goto yy303;
+ goto yy300;
+ }
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= ']'){
+ if(yych <= '\\') goto yy311;
+ goto yy301;
+ } else {
+ if(yych <= '^') goto yy300;
+ if(yych <= '_') goto yy303;
+ goto yy311;
+ }
+ } else {
+ if(yych <= '|'){
+ if(yych <= 'z') goto yy303;
+ if(yych <= '{') goto yy311;
+ goto yy300;
+ } else {
+ if(yych == '~') goto yy300;
+ goto yy311;
+ }
+ }
+ }
+ }
+yy286: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych == 'X') goto yy352;
+ if(yych == 'x') goto yy352;
+ goto yy347;
+yy287:
+{
+ savech = s->tok[TOKLEN];
+ s->tok[TOKLEN] = '\0';
+ lvalp->intn = yasm_intnum_create_dec(TOK);
+ s->tok[TOKLEN] = savech;
+ RETURN(INTNUM);
+ }
+yy288: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ goto yy347;
+yy289: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ goto yy341;
+yy290: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ goto yy334;
+yy291: yych = *++YYCURSOR;
+ if(yych <= '>'){
+ if(yych <= '-'){
+ if(yych <= '"') goto yy292;
+ if(yych <= '$') goto yy326;
+ goto yy292;
+ } else {
+ if(yych <= '.') goto yy326;
+ if(yych <= '/') goto yy292;
+ if(yych <= '9') goto yy329;
+ goto yy292;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy326;
+ if(yych == '_') goto yy326;
+ goto yy292;
+ } else {
+ if(yych <= 'z') goto yy326;
+ if(yych == '~') goto yy326;
+ goto yy292;
+ }
+ }
+yy292:
+{ RETURN(s->tok[0]); }
+yy293: yych = *++YYCURSOR;
+ goto yy294;
+yy294:
+{
+ endch = s->tok[0];
+ goto stringconst;
+ }
+yy295: yych = *++YYCURSOR;
+ if(yych == '<') goto yy324;
+ goto yy296;
+yy296:
+{
+ yasm_warn_set(YASM_WARN_UNREC_CHAR,
+ N_("ignoring unrecognized character `%s'"),
+ yasm__conv_unprint(s->tok[0]));
+ goto scan;
+ }
+yy297: yych = *++YYCURSOR;
+ if(yych == '>') goto yy322;
+ goto yy296;
+yy298: yych = *++YYCURSOR;
+ if(yych == '/') goto yy320;
+ goto yy292;
+yy299: yych = *++YYCURSOR;
+ if(yych == '%') goto yy318;
+ goto yy292;
+yy300: yych = *++YYCURSOR;
+ goto yy292;
+yy301: yych = *++YYCURSOR;
+ goto yy302;
+yy302:
+{ goto endofinput; }
+yy303: yych = *++YYCURSOR;
+ goto yy317;
+yy304:
+{
+ savech = s->tok[TOKLEN];
+ s->tok[TOKLEN] = '\0';
+ switch (yasm_arch_parse_check_regtmod
+ (p_object->arch, TOK, TOKLEN, &lvalp->arch_data)) {
+ case YASM_ARCH_REG:
+ s->tok[TOKLEN] = savech;
+ RETURN(REG);
+ default:
+ s->tok[TOKLEN] = savech;
+ }
+ /* Propagate errors in case we got a warning from the arch */
+ yasm_errwarn_propagate(parser_nasm->errwarns, cur_line);
+ /* Just an identifier, return as such. */
+ lvalp->str_val = yasm__xstrndup(TOK, TOKLEN);
+ RETURN(ID);
+ }
+yy305: yych = *++YYCURSOR;
+ goto yy315;
+yy306:
+{ goto directive2; }
+yy307: yych = *++YYCURSOR;
+ goto yy313;
+yy308:
+{ goto directive2; }
+yy309: yych = *++YYCURSOR;
+ goto yy310;
+yy310:
+{ goto endofinput; }
+yy311: yych = *++YYCURSOR;
+ goto yy296;
+yy312: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy313;
+yy313: if(yybm[256+yych] & 128) {
+ goto yy312;
+ }
+ goto yy308;
+yy314: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy315;
+yy315: if(yybm[0+yych] & 1) {
+ goto yy314;
+ }
+ goto yy306;
+yy316: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy317;
+yy317: if(yybm[0+yych] & 2) {
+ goto yy316;
+ }
+ goto yy304;
+yy318: yych = *++YYCURSOR;
+ goto yy319;
+yy319:
+{ RETURN(SIGNMOD); }
+yy320: yych = *++YYCURSOR;
+ goto yy321;
+yy321:
+{ RETURN(SIGNDIV); }
+yy322: yych = *++YYCURSOR;
+ goto yy323;
+yy323:
+{ RETURN(RIGHT_OP); }
+yy324: yych = *++YYCURSOR;
+ goto yy325;
+yy325:
+{ RETURN(LEFT_OP); }
+yy326: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy327;
+yy327: if(yych <= '>'){
+ if(yych <= '-'){
+ if(yych <= '"') goto yy328;
+ if(yych <= '$') goto yy326;
+ goto yy328;
+ } else {
+ if(yych == '/') goto yy328;
+ if(yych <= '9') goto yy326;
+ goto yy328;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy326;
+ if(yych == '_') goto yy326;
+ goto yy328;
+ } else {
+ if(yych <= 'z') goto yy326;
+ if(yych == '~') goto yy326;
+ goto yy328;
+ }
+ }
+yy328:
+{
+ lvalp->str_val = yasm__xstrndup(TOK, TOKLEN);
+ RETURN(ID);
+ }
+yy329: yych = *++YYCURSOR;
+ if(yybm[0+yych] & 4) {
+ goto yy330;
+ }
+ goto yy327;
+yy330: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy331;
+yy331: if(yybm[0+yych] & 4) {
+ goto yy330;
+ }
+ if(yych <= '>'){
+ if(yych <= '$'){
+ if(yych >= '#') goto yy326;
+ goto yy332;
+ } else {
+ if(yych == '.') goto yy326;
+ goto yy332;
+ }
+ } else {
+ if(yych <= 'z'){
+ if(yych <= 'Z') goto yy326;
+ if(yych >= 'g') goto yy326;
+ goto yy332;
+ } else {
+ if(yych == '~') goto yy326;
+ goto yy332;
+ }
+ }
+yy332:
+{
+ savech = s->tok[TOKLEN];
+ s->tok[TOKLEN] = '\0';
+ if (s->tok[1] == 'x' || s->tok[1] == 'X')
+ /* skip 0 and x */
+ lvalp->intn = yasm_intnum_create_hex(TOK+2);
+ else
+ /* don't skip 0 */
+ lvalp->intn = yasm_intnum_create_hex(TOK+1);
+ s->tok[TOKLEN] = savech;
+ RETURN(INTNUM);
+ }
+yy333: yyaccept = 0;
+ YYMARKER = ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy334;
+yy334: if(yybm[0+yych] & 8) {
+ goto yy333;
+ }
+ if(yych <= '^'){
+ if(yych <= 'F'){
+ if(yych <= '@') goto yy287;
+ goto yy335;
+ } else {
+ if(yych == 'H') goto yy338;
+ goto yy287;
+ }
+ } else {
+ if(yych <= 'f'){
+ if(yych == '`') goto yy287;
+ goto yy335;
+ } else {
+ if(yych == 'h') goto yy338;
+ goto yy287;
+ }
+ }
+yy335: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy336;
+yy336: if(yych <= 'H'){
+ if(yych <= '@'){
+ if(yych <= '/') goto yy337;
+ if(yych <= '9') goto yy335;
+ goto yy337;
+ } else {
+ if(yych <= 'F') goto yy335;
+ if(yych >= 'H') goto yy338;
+ goto yy337;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy335;
+ goto yy337;
+ } else {
+ if(yych <= 'f') goto yy335;
+ if(yych == 'h') goto yy338;
+ goto yy337;
+ }
+ }
+yy337: YYCURSOR = YYMARKER;
+ switch(yyaccept){
+ case 0: goto yy287;
+ case 1: goto yy349;
+ }
+yy338: yych = *++YYCURSOR;
+ goto yy339;
+yy339:
+{
+ s->tok[TOKLEN-1] = '\0'; /* strip off 'h' */
+ lvalp->intn = yasm_intnum_create_hex(TOK);
+ RETURN(INTNUM);
+ }
+yy340: yyaccept = 0;
+ YYMARKER = ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy341;
+yy341: if(yybm[0+yych] & 16) {
+ goto yy340;
+ }
+ if(yych <= 'Q'){
+ if(yych <= 'G'){
+ if(yych <= '9'){
+ if(yych <= '7') goto yy287;
+ goto yy333;
+ } else {
+ if(yych <= '@') goto yy287;
+ if(yych <= 'F') goto yy335;
+ goto yy287;
+ }
+ } else {
+ if(yych <= 'N'){
+ if(yych <= 'H') goto yy338;
+ goto yy287;
+ } else {
+ if(yych == 'P') goto yy287;
+ goto yy344;
+ }
+ }
+ } else {
+ if(yych <= 'g'){
+ if(yych <= '_'){
+ if(yych <= '^') goto yy287;
+ goto yy342;
+ } else {
+ if(yych <= '`') goto yy287;
+ if(yych <= 'f') goto yy335;
+ goto yy287;
+ }
+ } else {
+ if(yych <= 'o'){
+ if(yych <= 'h') goto yy338;
+ if(yych <= 'n') goto yy287;
+ goto yy344;
+ } else {
+ if(yych == 'q') goto yy344;
+ goto yy287;
+ }
+ }
+ }
+yy342: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy343;
+yy343: if(yybm[0+yych] & 32) {
+ goto yy342;
+ }
+ if(yych <= 'P'){
+ if(yych <= 'F'){
+ if(yych <= '7') goto yy337;
+ if(yych <= '9') goto yy335;
+ if(yych <= '@') goto yy337;
+ goto yy335;
+ } else {
+ if(yych <= 'H'){
+ if(yych <= 'G') goto yy337;
+ goto yy338;
+ } else {
+ if(yych != 'O') goto yy337;
+ goto yy344;
+ }
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych <= '`'){
+ if(yych >= 'R') goto yy337;
+ goto yy344;
+ } else {
+ if(yych <= 'f') goto yy335;
+ if(yych <= 'g') goto yy337;
+ goto yy338;
+ }
+ } else {
+ if(yych <= 'o'){
+ if(yych <= 'n') goto yy337;
+ goto yy344;
+ } else {
+ if(yych != 'q') goto yy337;
+ goto yy344;
+ }
+ }
+ }
+yy344: yych = *++YYCURSOR;
+ goto yy345;
+yy345:
+{
+ s->tok[TOKLEN-1] = '\0'; /* strip off 'q' or 'o' */
+ lvalp->intn = yasm_intnum_create_oct(TOK);
+ RETURN(INTNUM);
+ }
+yy346: yyaccept = 0;
+ YYMARKER = ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ yych = *YYCURSOR;
+ goto yy347;
+yy347: if(yybm[0+yych] & 64) {
+ goto yy346;
+ }
+ switch(yych){
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7': goto yy340;
+ case '8':
+ case '9': goto yy333;
+ case 'A': case 'C':
+ case 'D':
+ case 'E':
+ case 'F': case 'a': case 'c':
+ case 'd':
+ case 'e':
+ case 'f': goto yy335;
+ case 'B': case 'b': goto yy348;
+ case 'H': case 'h': goto yy338;
+ case 'O': case 'Q': case 'o': case 'q': goto yy344;
+ case '_': goto yy350;
+ default: goto yy287;
+ }
+yy348: yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'H'){
+ if(yych <= '@'){
+ if(yych <= '/') goto yy349;
+ if(yych <= '9') goto yy335;
+ goto yy349;
+ } else {
+ if(yych <= 'F') goto yy335;
+ if(yych >= 'H') goto yy338;
+ goto yy349;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy335;
+ goto yy349;
+ } else {
+ if(yych <= 'f') goto yy335;
+ if(yych == 'h') goto yy338;
+ goto yy349;
+ }
+ }
+yy349:
+{
+ s->tok[TOKLEN-1] = '\0'; /* strip off 'b' */
+ lvalp->intn = yasm_intnum_create_bin(TOK);
+ RETURN(INTNUM);
+ }
+yy350: ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ yych = *YYCURSOR;
+ goto yy351;
+yy351: if(yybm[0+yych] & 128) {
+ goto yy350;
+ }
+ switch(yych){
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7': goto yy342;
+ case '8':
+ case '9': case 'A': case 'C':
+ case 'D':
+ case 'E':
+ case 'F': case 'a': case 'c':
+ case 'd':
+ case 'e':
+ case 'f': goto yy335;
+ case 'B': case 'b': goto yy348;
+ case 'H': case 'h': goto yy338;
+ case 'O': case 'Q': case 'o': case 'q': goto yy344;
+ default: goto yy337;
+ }
+yy352: yych = *++YYCURSOR;
+ if(yych <= 'F'){
+ if(yych <= '/') goto yy337;
+ if(yych <= '9') goto yy353;
+ if(yych <= '@') goto yy337;
+ goto yy353;
+ } else {
+ if(yych <= '_'){
+ if(yych <= '^') goto yy337;
+ goto yy353;
+ } else {
+ if(yych <= '`') goto yy337;
+ if(yych >= 'g') goto yy337;
+ goto yy353;
+ }
+ }
+yy353: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy354;
+yy354: if(yych <= 'F'){
+ if(yych <= '/') goto yy332;
+ if(yych <= '9') goto yy353;
+ if(yych <= '@') goto yy332;
+ goto yy353;
+ } else {
+ if(yych <= '_'){
+ if(yych <= '^') goto yy332;
+ goto yy353;
+ } else {
+ if(yych <= '`') goto yy332;
+ if(yych <= 'f') goto yy353;
+ goto yy332;
+ }
+ }
+}
+}
+
+
+ /* string/character constant values */
+stringconst:
+ strbuf = yasm_xmalloc(STRBUF_ALLOC_SIZE);
+ strbuf_size = STRBUF_ALLOC_SIZE;
+ count = 0;
+
+stringconst_scan:
+ SCANINIT();
+ if (*cursor == '\0')
+ goto stringconst_error;
+
+ {
+
+{
+ YYCTYPE yych;
+ goto yy355;
+ ++YYCURSOR;
+yy355:
+ if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ yych = *YYCURSOR;
+ if(yych <= '"'){
+ if(yych <= '\000') goto yy357;
+ if(yych <= '!') goto yy362;
+ goto yy361;
+ } else {
+ if(yych == '\'') goto yy359;
+ goto yy362;
+ }
+yy357: yych = *++YYCURSOR;
+ goto yy358;
+yy358:
+{ goto stringconst_error; }
+yy359: yych = *++YYCURSOR;
+ if(yych == '\'') goto yy363;
+ goto yy360;
+yy360:
+{
+ if (s->tok[0] == endch)
+ goto stringconst_end;
+
+ strbuf[count++] = s->tok[0];
+ if (count >= strbuf_size) {
+ strbuf = yasm_xrealloc(strbuf, strbuf_size + STRBUF_ALLOC_SIZE);
+ strbuf_size += STRBUF_ALLOC_SIZE;
+ }
+
+ goto stringconst_scan;
+ }
+yy361: yych = *++YYCURSOR;
+ if(yych == '"') goto yy363;
+ goto yy360;
+yy362: yych = *++YYCURSOR;
+ goto yy360;
+yy363: yych = *++YYCURSOR;
+ goto yy364;
+yy364:
+{
+ if (endch != s->tok[0]) {
+ strbuf[count++] = s->tok[0];
+ if (count >= strbuf_size) {
+ strbuf = yasm_xrealloc(strbuf,
+ strbuf_size + STRBUF_ALLOC_SIZE);
+ strbuf_size += STRBUF_ALLOC_SIZE;
+ }
+ } else if (!parser_nasm->tasm) {
+ YYCURSOR--;
+ goto stringconst_end;
+ }
+ strbuf[count++] = s->tok[0];
+ if (count >= strbuf_size) {
+ strbuf = yasm_xrealloc(strbuf, strbuf_size + STRBUF_ALLOC_SIZE);
+ strbuf_size += STRBUF_ALLOC_SIZE;
+ }
+ goto stringconst_scan;
+ }
+}
+}
+
+
+stringconst_error:
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("unterminated string"));
+
+stringconst_end:
+ strbuf[count] = '\0';
+ lvalp->str.contents = (char *)strbuf;
+ lvalp->str.len = count;
+ RETURN(STRING);
+
+endofinput:
+ parser_nasm->state = INITIAL;
+ RETURN(s->tok[0]);
+}
+
diff --git a/contrib/tools/yasm/modules/nasm-version.c b/contrib/tools/yasm/modules/nasm-version.c
index b2722611b3..0d806749a5 100644
--- a/contrib/tools/yasm/modules/nasm-version.c
+++ b/contrib/tools/yasm/modules/nasm-version.c
@@ -1,15 +1,15 @@
-/* This file auto-generated from standard.mac by genmacro.c - don't edit it */
-
-#include <stddef.h>
-
-static const char *nasm_version_mac[] = {
- "%define __YASM_MAJOR__ 1",
- "%define __YASM_MINOR__ 3",
- "%define __YASM_SUBMINOR__ 0",
- "%define __YASM_BUILD__ 0",
- "%define __YASM_PATCHLEVEL__ 0",
- "%define __YASM_VERSION_ID__ 001030000h",
- "%define __YASM_VER__ \"1.3.0\"",
- NULL
-};
-
+/* This file auto-generated from standard.mac by genmacro.c - don't edit it */
+
+#include <stddef.h>
+
+static const char *nasm_version_mac[] = {
+ "%define __YASM_MAJOR__ 1",
+ "%define __YASM_MINOR__ 3",
+ "%define __YASM_SUBMINOR__ 0",
+ "%define __YASM_BUILD__ 0",
+ "%define __YASM_PATCHLEVEL__ 0",
+ "%define __YASM_VERSION_ID__ 001030000h",
+ "%define __YASM_VER__ \"1.3.0\"",
+ NULL
+};
+
diff --git a/contrib/tools/yasm/modules/objfmts/bin/bin-objfmt.c b/contrib/tools/yasm/modules/objfmts/bin/bin-objfmt.c
index 702bda1590..5f422245d3 100644
--- a/contrib/tools/yasm/modules/objfmts/bin/bin-objfmt.c
+++ b/contrib/tools/yasm/modules/objfmts/bin/bin-objfmt.c
@@ -1,1972 +1,1972 @@
-/*
- * Flat-format binary object format
- *
- * Copyright (C) 2002-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <libyasm.h>
-
-
-#define REGULAR_OUTBUF_SIZE 1024
-
-typedef struct bin_section_data {
- int bss; /* aka nobits */
-
- /* User-provided alignment */
- yasm_intnum *align, *valign;
-
- /* User-provided starts */
- /*@null@*/ /*@owned@*/ yasm_expr *start, *vstart;
-
- /* User-provided follows */
- /*@null@*/ /*@owned@*/ char *follows, *vfollows;
-
- /* Calculated (final) starts, used only during output() */
- /*@null@*/ /*@owned@*/ yasm_intnum *istart, *ivstart;
-
- /* Calculated (final) length, used only during output() */
- /*@null@*/ /*@owned@*/ yasm_intnum *length;
-} bin_section_data;
-
-typedef struct yasm_objfmt_bin {
- yasm_objfmt_base objfmt; /* base structure */
-
- enum {
- NO_MAP = 0,
- MAP_NONE = 0x01,
- MAP_BRIEF = 0x02,
- MAP_SECTIONS = 0x04,
- MAP_SYMBOLS = 0x08
- } map_flags;
- /*@null@*/ /*@only@*/ char *map_filename;
-
- /*@null@*/ /*@only@*/ yasm_expr *org;
-} yasm_objfmt_bin;
-
-/* symrec data is used only for the special symbols section<sectname>.start,
- * section<sectname>.vstart, and section<sectname>.length
- */
-typedef struct bin_symrec_data {
- yasm_section *section; /* referenced section */
- enum bin_ssym {
- SSYM_START,
- SSYM_VSTART,
- SSYM_LENGTH
- } which;
-} bin_symrec_data;
-
-static void bin_section_data_destroy(/*@only@*/ void *d);
-static void bin_section_data_print(void *data, FILE *f, int indent_level);
-
-static const yasm_assoc_data_callback bin_section_data_cb = {
- bin_section_data_destroy,
- bin_section_data_print
-};
-
-static void bin_symrec_data_destroy(/*@only@*/ void *d);
-static void bin_symrec_data_print(void *data, FILE *f, int indent_level);
-
-static const yasm_assoc_data_callback bin_symrec_data_cb = {
- bin_symrec_data_destroy,
- bin_symrec_data_print
-};
-
-yasm_objfmt_module yasm_bin_LTX_objfmt;
-
-
-static yasm_objfmt *
-bin_objfmt_create(yasm_object *object)
-{
- yasm_objfmt_bin *objfmt_bin = yasm_xmalloc(sizeof(yasm_objfmt_bin));
- objfmt_bin->objfmt.module = &yasm_bin_LTX_objfmt;
-
- objfmt_bin->map_flags = NO_MAP;
- objfmt_bin->map_filename = NULL;
- objfmt_bin->org = NULL;
-
- return (yasm_objfmt *)objfmt_bin;
-}
-
-typedef TAILQ_HEAD(bin_group_head, bin_group) bin_groups;
-
-typedef struct bin_group {
- TAILQ_ENTRY(bin_group) link;
- yasm_section *section;
- bin_section_data *bsd;
-
- /* Groups that (in parallel) logically come immediately after this
- * group's section.
- */
- bin_groups follow_groups;
-} bin_group;
-
-/* Recursive function to find group containing named section. */
-static bin_group *
-find_group_by_name(bin_groups *groups, const char *name)
-{
- bin_group *group, *found;
- TAILQ_FOREACH(group, groups, link) {
- if (strcmp(yasm_section_get_name(group->section), name) == 0)
- return group;
- /* Recurse to loop through follow groups */
- found = find_group_by_name(&group->follow_groups, name);
- if (found)
- return found;
- }
- return NULL;
-}
-
-/* Recursive function to find group. Returns NULL if not found. */
-static bin_group *
-find_group_by_section(bin_groups *groups, yasm_section *section)
-{
- bin_group *group, *found;
- TAILQ_FOREACH(group, groups, link) {
- if (group->section == section)
- return group;
- /* Recurse to loop through follow groups */
- found = find_group_by_section(&group->follow_groups, section);
- if (found)
- return found;
- }
- return NULL;
-}
-
-#if 0
-/* Debugging function */
-static void
-print_groups(const bin_groups *groups, int indent_level)
-{
- bin_group *group;
- TAILQ_FOREACH(group, groups, link) {
- printf("%*sSection `%s':\n", indent_level, "",
- yasm_section_get_name(group->section));
- bin_section_data_print(group->bsd, stdout, indent_level+1);
- if (!TAILQ_EMPTY(&group->follow_groups)) {
- printf("%*sFollowing groups:\n", indent_level, "");
- print_groups(&group->follow_groups, indent_level+1);
- }
- }
-}
-#endif
-
-static void
-bin_group_destroy(/*@only@*/ bin_group *group)
-{
- bin_group *follow, *group_temp;
- TAILQ_FOREACH_SAFE(follow, &group->follow_groups, link, group_temp)
- bin_group_destroy(follow);
- yasm_xfree(group);
-}
-
-typedef struct bin_objfmt_output_info {
- yasm_object *object;
- yasm_errwarns *errwarns;
- /*@dependent@*/ FILE *f;
- /*@only@*/ unsigned char *buf;
- /*@observer@*/ const yasm_section *sect;
- unsigned long start; /* what normal variables go against */
-
- yasm_intnum *origin;
- yasm_intnum *tmp_intn; /* temporary working intnum */
-
- bin_groups lma_groups, vma_groups;
-} bin_objfmt_output_info;
-
-static int
-bin_objfmt_check_sym(yasm_symrec *sym, /*@null@*/ void *d)
-{
- /*@null@*/ bin_objfmt_output_info *info = (bin_objfmt_output_info *)d;
- yasm_sym_vis vis = yasm_symrec_get_visibility(sym);
- assert(info != NULL);
-
- /* Don't check internally-generated symbols. Only internally generated
- * symbols have symrec data, so simply check for its presence.
- */
- if (yasm_symrec_get_data(sym, &bin_symrec_data_cb))
- return 0;
-
- if (vis & YASM_SYM_EXTERN) {
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("binary object format does not support extern variables"));
- yasm_errwarn_propagate(info->errwarns, yasm_symrec_get_decl_line(sym));
- } else if (vis & YASM_SYM_GLOBAL) {
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("binary object format does not support global variables"));
- yasm_errwarn_propagate(info->errwarns, yasm_symrec_get_decl_line(sym));
- } else if (vis & YASM_SYM_COMMON) {
- yasm_error_set(YASM_ERROR_TYPE,
- N_("binary object format does not support common variables"));
- yasm_errwarn_propagate(info->errwarns, yasm_symrec_get_decl_line(sym));
- }
- return 0;
-}
-
-static int
-bin_lma_create_group(yasm_section *sect, /*@null@*/ void *d)
-{
- bin_objfmt_output_info *info = (bin_objfmt_output_info *)d;
- bin_section_data *bsd = yasm_section_get_data(sect, &bin_section_data_cb);
- unsigned long align = yasm_section_get_align(sect);
- bin_group *group;
-
- assert(info != NULL);
- assert(bsd != NULL);
-
- group = yasm_xmalloc(sizeof(bin_group));
- group->section = sect;
- group->bsd = bsd;
- TAILQ_INIT(&group->follow_groups);
-
- /* Determine section alignment as necessary. */
- if (!bsd->align)
- bsd->align = yasm_intnum_create_uint(align > 4 ? align : 4);
- else {
- yasm_intnum *align_intn = yasm_intnum_create_uint(align);
- if (yasm_intnum_compare(align_intn, bsd->align) > 0) {
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("section `%s' internal align of %lu is greater than `%s' of %lu; using `%s'"),
- yasm_section_get_name(sect),
- yasm_intnum_get_uint(align_intn),
- N_("align"),
- yasm_intnum_get_uint(bsd->align),
- N_("align"));
- yasm_errwarn_propagate(info->errwarns, 0);
- }
- yasm_intnum_destroy(align_intn);
- }
-
- /* Calculate section integer start. */
- if (bsd->start) {
- bsd->istart = yasm_expr_get_intnum(&bsd->start, 0);
- if (!bsd->istart) {
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("start expression is too complex"));
- yasm_errwarn_propagate(info->errwarns, bsd->start->line);
- return 1;
- } else
- bsd->istart = yasm_intnum_copy(bsd->istart);
- } else
- bsd->istart = NULL;
-
- /* Calculate section integer vstart. */
- if (bsd->vstart) {
- bsd->ivstart = yasm_expr_get_intnum(&bsd->vstart, 0);
- if (!bsd->ivstart) {
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("vstart expression is too complex"));
- yasm_errwarn_propagate(info->errwarns, bsd->vstart->line);
- return 1;
- } else
- bsd->ivstart = yasm_intnum_copy(bsd->ivstart);
- } else
- bsd->ivstart = NULL;
-
- /* Calculate section integer length. */
- bsd->length = yasm_calc_bc_dist(yasm_section_bcs_first(sect),
- yasm_section_bcs_last(sect));
-
- TAILQ_INSERT_TAIL(&info->lma_groups, group, link);
- return 0;
-}
-
-static int
-bin_vma_create_group(yasm_section *sect, /*@null@*/ void *d)
-{
- bin_objfmt_output_info *info = (bin_objfmt_output_info *)d;
- bin_section_data *bsd = yasm_section_get_data(sect, &bin_section_data_cb);
- bin_group *group;
-
- assert(info != NULL);
- assert(bsd != NULL);
-
- group = yasm_xmalloc(sizeof(bin_group));
- group->section = sect;
- group->bsd = bsd;
- TAILQ_INIT(&group->follow_groups);
-
- TAILQ_INSERT_TAIL(&info->vma_groups, group, link);
- return 0;
-}
-
-/* Calculates new start address based on alignment constraint.
- * Start is modified (rounded up) to the closest aligned value greater than
- * what was passed in.
- * Align must be a power of 2.
- */
-static void
-bin_objfmt_align(yasm_intnum *start, const yasm_intnum *align)
-{
- /* Because alignment is always a power of two, we can use some bit
- * trickery to do this easily.
- */
- yasm_intnum *align_intn =
- yasm_intnum_create_uint(yasm_intnum_get_uint(align)-1);
- yasm_intnum_calc(align_intn, YASM_EXPR_AND, start);
- if (!yasm_intnum_is_zero(align_intn)) {
- /* start = (start & ~(align-1)) + align; */
- yasm_intnum_set_uint(align_intn, yasm_intnum_get_uint(align)-1);
- yasm_intnum_calc(align_intn, YASM_EXPR_NOT, NULL);
- yasm_intnum_calc(align_intn, YASM_EXPR_AND, start);
- yasm_intnum_set(start, align);
- yasm_intnum_calc(start, YASM_EXPR_ADD, align_intn);
- }
- yasm_intnum_destroy(align_intn);
-}
-
-/* Recursive function to assign start addresses.
- * Updates start, last, and vdelta parameters as it goes along.
- * The tmp parameter is just a working intnum so one doesn't have to be
- * locally allocated for this purpose.
- */
-static void
-group_assign_start_recurse(bin_group *group, yasm_intnum *start,
- yasm_intnum *last, yasm_intnum *vdelta,
- yasm_intnum *tmp, yasm_errwarns *errwarns)
-{
- bin_group *follow_group;
-
- /* Determine LMA */
- if (group->bsd->istart) {
- yasm_intnum_set(group->bsd->istart, start);
- if (group->bsd->align) {
- bin_objfmt_align(group->bsd->istart, group->bsd->align);
- if (yasm_intnum_compare(start, group->bsd->istart) != 0) {
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("start inconsistent with align; using aligned value"));
- yasm_errwarn_propagate(errwarns, group->bsd->start->line);
- }
- }
- } else {
- group->bsd->istart = yasm_intnum_copy(start);
- if (group->bsd->align != 0)
- bin_objfmt_align(group->bsd->istart, group->bsd->align);
- }
-
- /* Determine VMA if either just valign specified or if no v* specified */
- if (!group->bsd->vstart) {
- if (!group->bsd->vfollows && !group->bsd->valign) {
- /* No v* specified, set VMA=LMA+vdelta. */
- group->bsd->ivstart = yasm_intnum_copy(group->bsd->istart);
- yasm_intnum_calc(group->bsd->ivstart, YASM_EXPR_ADD, vdelta);
- } else if (!group->bsd->vfollows) {
- /* Just valign specified: set VMA=LMA+vdelta, align VMA, then add
- * delta between unaligned and aligned to vdelta parameter.
- */
- group->bsd->ivstart = yasm_intnum_copy(group->bsd->istart);
- yasm_intnum_calc(group->bsd->ivstart, YASM_EXPR_ADD, vdelta);
- yasm_intnum_set(tmp, group->bsd->ivstart);
- bin_objfmt_align(group->bsd->ivstart, group->bsd->valign);
- yasm_intnum_calc(vdelta, YASM_EXPR_ADD, group->bsd->ivstart);
- yasm_intnum_calc(vdelta, YASM_EXPR_SUB, tmp);
- }
- }
-
- /* Find the maximum end value */
- yasm_intnum_set(tmp, group->bsd->istart);
- yasm_intnum_calc(tmp, YASM_EXPR_ADD, group->bsd->length);
- if (yasm_intnum_compare(tmp, last) > 0) /* tmp > last */
- yasm_intnum_set(last, tmp);
-
- /* Recurse for each following group. */
- TAILQ_FOREACH(follow_group, &group->follow_groups, link) {
- /* Following sections have to follow this one,
- * so add length to start.
- */
- yasm_intnum_set(start, group->bsd->istart);
- yasm_intnum_calc(start, YASM_EXPR_ADD, group->bsd->length);
-
- group_assign_start_recurse(follow_group, start, last, vdelta, tmp,
- errwarns);
- }
-}
-
-/* Recursive function to assign start addresses.
- * Updates start parameter as it goes along.
- * The tmp parameter is just a working intnum so one doesn't have to be
- * locally allocated for this purpose.
- */
-static void
-group_assign_vstart_recurse(bin_group *group, yasm_intnum *start,
- yasm_errwarns *errwarns)
-{
- bin_group *follow_group;
-
- /* Determine VMA section alignment as necessary.
- * Default to LMA alignment if not specified.
- */
- if (!group->bsd->valign)
- group->bsd->valign = yasm_intnum_copy(group->bsd->align);
- else {
- unsigned long align = yasm_section_get_align(group->section);
- yasm_intnum *align_intn = yasm_intnum_create_uint(align);
- if (yasm_intnum_compare(align_intn, group->bsd->valign) > 0) {
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("section `%s' internal align of %lu is greater than `%s' of %lu; using `%s'"),
- yasm_section_get_name(group->section),
- yasm_intnum_get_uint(align_intn),
- N_("valign"),
- yasm_intnum_get_uint(group->bsd->valign),
- N_("valign"));
- yasm_errwarn_propagate(errwarns, 0);
- }
- yasm_intnum_destroy(align_intn);
- }
-
- /* Determine VMA */
- if (group->bsd->ivstart) {
- yasm_intnum_set(group->bsd->ivstart, start);
- if (group->bsd->valign) {
- bin_objfmt_align(group->bsd->ivstart, group->bsd->valign);
- if (yasm_intnum_compare(start, group->bsd->ivstart) != 0) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("vstart inconsistent with valign"));
- yasm_errwarn_propagate(errwarns, group->bsd->vstart->line);
- }
- }
- } else {
- group->bsd->ivstart = yasm_intnum_copy(start);
- if (group->bsd->valign)
- bin_objfmt_align(group->bsd->ivstart, group->bsd->valign);
- }
-
- /* Recurse for each following group. */
- TAILQ_FOREACH(follow_group, &group->follow_groups, link) {
- /* Following sections have to follow this one,
- * so add length to start.
- */
- yasm_intnum_set(start, group->bsd->ivstart);
- yasm_intnum_calc(start, YASM_EXPR_ADD, group->bsd->length);
-
- group_assign_vstart_recurse(follow_group, start, errwarns);
- }
-}
-
-static /*@null@*/ const yasm_intnum *
-get_ssym_value(yasm_symrec *sym)
-{
- bin_symrec_data *bsymd = yasm_symrec_get_data(sym, &bin_symrec_data_cb);
- bin_section_data *bsd;
-
- if (!bsymd)
- return NULL;
-
- bsd = yasm_section_get_data(bsymd->section, &bin_section_data_cb);
- assert(bsd != NULL);
-
- switch (bsymd->which) {
- case SSYM_START: return bsd->istart;
- case SSYM_VSTART: return bsd->ivstart;
- case SSYM_LENGTH: return bsd->length;
- }
- return NULL;
-}
-
-static /*@only@*/ yasm_expr *
-bin_objfmt_expr_xform(/*@returned@*/ /*@only@*/ yasm_expr *e,
- /*@unused@*/ /*@null@*/ void *d)
-{
- int i;
- for (i=0; i<e->numterms; i++) {
- /*@dependent@*/ yasm_section *sect;
- /*@dependent@*/ /*@null@*/ yasm_bytecode *precbc;
- /*@null@*/ yasm_intnum *dist;
- /*@null@*/ const yasm_intnum *ssymval;
-
- /* Transform symrecs or precbcs that reference sections into
- * vstart + intnum(dist).
- */
- if (((e->terms[i].type == YASM_EXPR_SYM &&
- yasm_symrec_get_label(e->terms[i].data.sym, &precbc)) ||
- (e->terms[i].type == YASM_EXPR_PRECBC &&
- (precbc = e->terms[i].data.precbc))) &&
- (sect = yasm_bc_get_section(precbc)) &&
- (dist = yasm_calc_bc_dist(yasm_section_bcs_first(sect), precbc))) {
- bin_section_data *bsd;
- bsd = yasm_section_get_data(sect, &bin_section_data_cb);
- assert(bsd != NULL);
- yasm_intnum_calc(dist, YASM_EXPR_ADD, bsd->ivstart);
- e->terms[i].type = YASM_EXPR_INT;
- e->terms[i].data.intn = dist;
- }
-
- /* Transform our special symrecs into the appropriate value */
- if (e->terms[i].type == YASM_EXPR_SYM &&
- (ssymval = get_ssym_value(e->terms[i].data.sym))) {
- e->terms[i].type = YASM_EXPR_INT;
- e->terms[i].data.intn = yasm_intnum_copy(ssymval);
- }
- }
-
- return e;
-}
-
-typedef struct map_output_info {
- /* address width */
- int bytes;
-
- /* intnum output static data areas */
- unsigned char *buf;
- yasm_intnum *intn;
-
- /* symrec output information */
- unsigned long count;
- yasm_section *section; /* NULL for EQUs */
-
- yasm_object *object; /* object */
- FILE *f; /* map output file */
-} map_output_info;
-
-static int
-map_prescan_bytes(yasm_section *sect, void *d)
-{
- bin_section_data *bsd = yasm_section_get_data(sect, &bin_section_data_cb);
- map_output_info *info = (map_output_info *)d;
-
- assert(bsd != NULL);
- assert(info != NULL);
-
- while (!yasm_intnum_check_size(bsd->length, info->bytes * 8, 0, 0))
- info->bytes *= 2;
- while (!yasm_intnum_check_size(bsd->istart, info->bytes * 8, 0, 0))
- info->bytes *= 2;
- while (!yasm_intnum_check_size(bsd->ivstart, info->bytes * 8, 0, 0))
- info->bytes *= 2;
-
- return 0;
-}
-
-static void
-map_print_intnum(const yasm_intnum *intn, map_output_info *info)
-{
- size_t i;
- yasm_intnum_get_sized(intn, info->buf, info->bytes, info->bytes*8, 0, 0,
- 0);
- for (i=info->bytes; i != 0; i--)
- fprintf(info->f, "%02X", info->buf[i-1]);
-}
-
-static void
-map_sections_summary(bin_groups *groups, map_output_info *info)
-{
- bin_group *group;
- TAILQ_FOREACH(group, groups, link) {
- bin_section_data *bsd = group->bsd;
-
- assert(bsd != NULL);
- assert(info != NULL);
-
- map_print_intnum(bsd->ivstart, info);
- fprintf(info->f, " ");
-
- yasm_intnum_set(info->intn, bsd->ivstart);
- yasm_intnum_calc(info->intn, YASM_EXPR_ADD, bsd->length);
- map_print_intnum(info->intn, info);
- fprintf(info->f, " ");
-
- map_print_intnum(bsd->istart, info);
- fprintf(info->f, " ");
-
- yasm_intnum_set(info->intn, bsd->istart);
- yasm_intnum_calc(info->intn, YASM_EXPR_ADD, bsd->length);
- map_print_intnum(info->intn, info);
- fprintf(info->f, " ");
-
- map_print_intnum(bsd->length, info);
- fprintf(info->f, " ");
-
- fprintf(info->f, "%-*s", 10, bsd->bss ? "nobits" : "progbits");
- fprintf(info->f, "%s\n", yasm_section_get_name(group->section));
-
- /* Recurse to loop through follow groups */
- map_sections_summary(&group->follow_groups, info);
- }
-}
-
-static void
-map_sections_detail(bin_groups *groups, map_output_info *info)
-{
- bin_group *group;
- TAILQ_FOREACH(group, groups, link) {
- bin_section_data *bsd = group->bsd;
- size_t i;
- const char *s;
-
- s = yasm_section_get_name(group->section);
- fprintf(info->f, "---- Section %s ", s);
- for (i=0; i<(65-strlen(s)); i++)
- fputc('-', info->f);
-
- fprintf(info->f, "\n\nclass: %s",
- bsd->bss ? "nobits" : "progbits");
- fprintf(info->f, "\nlength: ");
- map_print_intnum(bsd->length, info);
- fprintf(info->f, "\nstart: ");
- map_print_intnum(bsd->istart, info);
- fprintf(info->f, "\nalign: ");
- map_print_intnum(bsd->align, info);
- fprintf(info->f, "\nfollows: %s",
- bsd->follows ? bsd->follows : "not defined");
- fprintf(info->f, "\nvstart: ");
- map_print_intnum(bsd->ivstart, info);
- fprintf(info->f, "\nvalign: ");
- map_print_intnum(bsd->valign, info);
- fprintf(info->f, "\nvfollows: %s\n\n",
- bsd->vfollows ? bsd->vfollows : "not defined");
-
- /* Recurse to loop through follow groups */
- map_sections_detail(&group->follow_groups, info);
- }
-}
-
-static int
-map_symrec_count(yasm_symrec *sym, void *d)
-{
- map_output_info *info = (map_output_info *)d;
- /*@dependent@*/ yasm_bytecode *precbc;
-
- assert(info != NULL);
-
- /* TODO: autodetect wider size */
- if (!info->section && yasm_symrec_get_equ(sym)) {
- info->count++;
- } else if (yasm_symrec_get_label(sym, &precbc) &&
- yasm_bc_get_section(precbc) == info->section) {
- info->count++;
- }
- return 0;
-}
-
-static int
-map_symrec_output(yasm_symrec *sym, void *d)
-{
- map_output_info *info = (map_output_info *)d;
- const yasm_expr *equ;
- /*@dependent@*/ yasm_bytecode *precbc;
- /*@only@*/ char *name = yasm_symrec_get_global_name(sym, info->object);
-
- assert(info != NULL);
-
- if (!info->section && (equ = yasm_symrec_get_equ(sym))) {
- yasm_expr *realequ = yasm_expr_copy(equ);
- realequ = yasm_expr__level_tree
- (realequ, 1, 1, 1, 0, bin_objfmt_expr_xform, NULL);
- yasm_intnum_set(info->intn, yasm_expr_get_intnum(&realequ, 0));
- yasm_expr_destroy(realequ);
- map_print_intnum(info->intn, info);
- fprintf(info->f, " %s\n", name);
- } else if (yasm_symrec_get_label(sym, &precbc) &&
- yasm_bc_get_section(precbc) == info->section) {
- bin_section_data *bsd =
- yasm_section_get_data(info->section, &bin_section_data_cb);
-
- /* Real address */
- yasm_intnum_set_uint(info->intn, yasm_bc_next_offset(precbc));
- yasm_intnum_calc(info->intn, YASM_EXPR_ADD, bsd->istart);
- map_print_intnum(info->intn, info);
- fprintf(info->f, " ");
-
- /* Virtual address */
- yasm_intnum_set_uint(info->intn, yasm_bc_next_offset(precbc));
- yasm_intnum_calc(info->intn, YASM_EXPR_ADD, bsd->ivstart);
- map_print_intnum(info->intn, info);
-
- /* Name */
- fprintf(info->f, " %s\n", name);
- }
- yasm_xfree(name);
- return 0;
-}
-
-static void
-map_sections_symbols(bin_groups *groups, map_output_info *info)
-{
- bin_group *group;
- TAILQ_FOREACH(group, groups, link) {
- info->count = 0;
- info->section = group->section;
- yasm_symtab_traverse(info->object->symtab, info, map_symrec_count);
-
- if (info->count > 0) {
- const char *s = yasm_section_get_name(group->section);
- size_t i;
- fprintf(info->f, "---- Section %s ", s);
- for (i=0; i<(65-strlen(s)); i++)
- fputc('-', info->f);
- fprintf(info->f, "\n\n%-*s%-*s%s\n",
- info->bytes*2+2, "Real",
- info->bytes*2+2, "Virtual",
- "Name");
- yasm_symtab_traverse(info->object->symtab, info,
- map_symrec_output);
- fprintf(info->f, "\n\n");
- }
-
- /* Recurse to loop through follow groups */
- map_sections_symbols(&group->follow_groups, info);
- }
-}
-
-static void
-output_map(bin_objfmt_output_info *info)
-{
- yasm_objfmt_bin *objfmt_bin = (yasm_objfmt_bin *)info->object->objfmt;
- FILE *f;
- int i;
- map_output_info mapinfo;
-
- if (objfmt_bin->map_flags == NO_MAP)
- return;
-
- if (objfmt_bin->map_flags == MAP_NONE)
- objfmt_bin->map_flags = MAP_BRIEF; /* default to brief */
-
- if (!objfmt_bin->map_filename)
- f = stdout; /* default to stdout */
- else {
- f = fopen(objfmt_bin->map_filename, "wt");
- if (!f) {
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("unable to open map file `%s'"),
- objfmt_bin->map_filename);
- yasm_errwarn_propagate(info->errwarns, 0);
- return;
- }
- }
-
- mapinfo.object = info->object;
- mapinfo.f = f;
-
- /* Temporary intnum */
- mapinfo.intn = info->tmp_intn;
-
- /* Prescan all values to figure out what width we should make the output
- * fields. Start with a minimum of 4.
- */
- mapinfo.bytes = 4;
- while (!yasm_intnum_check_size(info->origin, mapinfo.bytes * 8, 0, 0))
- mapinfo.bytes *= 2;
- yasm_object_sections_traverse(info->object, &mapinfo, map_prescan_bytes);
- mapinfo.buf = yasm_xmalloc(mapinfo.bytes);
-
- fprintf(f, "\n- YASM Map file ");
- for (i=0; i<63; i++)
- fputc('-', f);
- fprintf(f, "\n\nSource file: %s\n", info->object->src_filename);
- fprintf(f, "Output file: %s\n\n", info->object->obj_filename);
-
- fprintf(f, "-- Program origin ");
- for (i=0; i<61; i++)
- fputc('-', f);
- fprintf(f, "\n\n");
- map_print_intnum(info->origin, &mapinfo);
- fprintf(f, "\n\n");
-
- if (objfmt_bin->map_flags & MAP_BRIEF) {
- fprintf(f, "-- Sections (summary) ");
- for (i=0; i<57; i++)
- fputc('-', f);
- fprintf(f, "\n\n%-*s%-*s%-*s%-*s%-*s%-*s%s\n",
- mapinfo.bytes*2+2, "Vstart",
- mapinfo.bytes*2+2, "Vstop",
- mapinfo.bytes*2+2, "Start",
- mapinfo.bytes*2+2, "Stop",
- mapinfo.bytes*2+2, "Length",
- 10, "Class", "Name");
-
- map_sections_summary(&info->lma_groups, &mapinfo);
- fprintf(f, "\n");
- }
-
- if (objfmt_bin->map_flags & MAP_SECTIONS) {
- fprintf(f, "-- Sections (detailed) ");
- for (i=0; i<56; i++)
- fputc('-', f);
- fprintf(f, "\n\n");
- map_sections_detail(&info->lma_groups, &mapinfo);
- }
-
- if (objfmt_bin->map_flags & MAP_SYMBOLS) {
- fprintf(f, "-- Symbols ");
- for (i=0; i<68; i++)
- fputc('-', f);
- fprintf(f, "\n\n");
-
- /* We do two passes for EQU and each section; the first pass
- * determines the byte width to use for the value and whether any
- * symbols are present, the second pass actually outputs the text.
- */
-
- /* EQUs */
- mapinfo.count = 0;
- mapinfo.section = NULL;
- yasm_symtab_traverse(info->object->symtab, &mapinfo, map_symrec_count);
-
- if (mapinfo.count > 0) {
- fprintf(f, "---- No Section ");
- for (i=0; i<63; i++)
- fputc('-', f);
- fprintf(f, "\n\n%-*s%s\n", mapinfo.bytes*2+2, "Value", "Name");
- yasm_symtab_traverse(info->object->symtab, &mapinfo,
- map_symrec_output);
- fprintf(f, "\n\n");
- }
-
- /* Other sections */
- map_sections_symbols(&info->lma_groups, &mapinfo);
- }
-
- if (f != stdout)
- fclose(f);
-
- yasm_xfree(mapinfo.buf);
-}
-
-/* Check for LMA overlap using a simple N^2 algorithm. */
-static int
-check_lma_overlap(yasm_section *sect, /*@null@*/ void *d)
-{
- bin_section_data *bsd, *bsd2;
- yasm_section *other = (yasm_section *)d;
- yasm_intnum *overlap;
-
- if (!d)
- return yasm_object_sections_traverse(yasm_section_get_object(sect),
- sect, check_lma_overlap);
- if (sect == other)
- return 0;
-
- bsd = yasm_section_get_data(sect, &bin_section_data_cb);
- bsd2 = yasm_section_get_data(other, &bin_section_data_cb);
-
- if (yasm_intnum_is_zero(bsd->length) ||
- yasm_intnum_is_zero(bsd2->length))
- return 0;
-
- if (yasm_intnum_compare(bsd->istart, bsd2->istart) <= 0) {
- overlap = yasm_intnum_copy(bsd->istart);
- yasm_intnum_calc(overlap, YASM_EXPR_ADD, bsd->length);
- yasm_intnum_calc(overlap, YASM_EXPR_SUB, bsd2->istart);
- } else {
- overlap = yasm_intnum_copy(bsd2->istart);
- yasm_intnum_calc(overlap, YASM_EXPR_ADD, bsd2->length);
- yasm_intnum_calc(overlap, YASM_EXPR_SUB, bsd->istart);
- }
-
- if (yasm_intnum_sign(overlap) > 0) {
- yasm_error_set(YASM_ERROR_GENERAL,
- N_("sections `%s' and `%s' overlap by %lu bytes"),
- yasm_section_get_name(sect),
- yasm_section_get_name(other),
- yasm_intnum_get_uint(overlap));
- yasm_intnum_destroy(overlap);
- return -1;
- }
-
- yasm_intnum_destroy(overlap);
- return 0;
-}
-
-static int
-bin_objfmt_output_value(yasm_value *value, unsigned char *buf,
- unsigned int destsize,
- /*@unused@*/ unsigned long offset, yasm_bytecode *bc,
- int warn, /*@null@*/ void *d)
-{
- /*@null@*/ bin_objfmt_output_info *info = (bin_objfmt_output_info *)d;
- /*@dependent@*/ /*@null@*/ yasm_bytecode *precbc;
- /*@dependent@*/ yasm_section *sect;
-
- assert(info != NULL);
-
- /* Binary objects we need to resolve against object, not against section. */
- if (value->rel) {
- unsigned int rshift = (unsigned int)value->rshift;
- yasm_expr *syme;
- /*@null@*/ const yasm_intnum *ssymval;
-
- if (yasm_symrec_is_abs(value->rel)) {
- syme = yasm_expr_create_ident(yasm_expr_int(
- yasm_intnum_create_uint(0)), bc->line);
- } else if (yasm_symrec_get_label(value->rel, &precbc)
- && (sect = yasm_bc_get_section(precbc))) {
- syme = yasm_expr_create_ident(yasm_expr_sym(value->rel), bc->line);
- } else if ((ssymval = get_ssym_value(value->rel))) {
- syme = yasm_expr_create_ident(yasm_expr_int(
- yasm_intnum_copy(ssymval)), bc->line);
- } else
- goto done;
-
- /* Handle PC-relative */
- if (value->curpos_rel) {
- yasm_expr *sube;
- sube = yasm_expr_create(YASM_EXPR_SUB, yasm_expr_precbc(bc),
- yasm_expr_int(yasm_intnum_create_uint(bc->len*bc->mult_int)),
- bc->line);
- syme = yasm_expr_create(YASM_EXPR_SUB, yasm_expr_expr(syme),
- yasm_expr_expr(sube), bc->line);
- value->curpos_rel = 0;
- value->ip_rel = 0;
- }
-
- if (value->rshift > 0)
- syme = yasm_expr_create(YASM_EXPR_SHR, yasm_expr_expr(syme),
- yasm_expr_int(yasm_intnum_create_uint(rshift)), bc->line);
-
- /* Add into absolute portion */
- if (!value->abs)
- value->abs = syme;
- else
- value->abs =
- yasm_expr_create(YASM_EXPR_ADD, yasm_expr_expr(value->abs),
- yasm_expr_expr(syme), bc->line);
- value->rel = NULL;
- value->rshift = 0;
- }
-done:
- /* Simplify absolute portion of value, transforming symrecs */
- if (value->abs)
- value->abs = yasm_expr__level_tree
- (value->abs, 1, 1, 1, 0, bin_objfmt_expr_xform, NULL);
-
- /* Output */
- switch (yasm_value_output_basic(value, buf, destsize, bc, warn,
- info->object->arch)) {
- case -1:
- return 1;
- case 0:
- break;
- default:
- return 0;
- }
-
- /* Couldn't output, assume it contains an external reference. */
- yasm_error_set(YASM_ERROR_GENERAL,
- N_("binary object format does not support external references"));
- return 1;
-}
-
-static int
-bin_objfmt_output_bytecode(yasm_bytecode *bc, /*@null@*/ void *d)
-{
- /*@null@*/ bin_objfmt_output_info *info = (bin_objfmt_output_info *)d;
- /*@null@*/ /*@only@*/ unsigned char *bigbuf;
- unsigned long size = REGULAR_OUTBUF_SIZE;
- int gap;
-
- assert(info != NULL);
-
- bigbuf = yasm_bc_tobytes(bc, info->buf, &size, &gap, info,
- bin_objfmt_output_value, NULL);
-
- /* Don't bother doing anything else if size ended up being 0. */
- if (size == 0) {
- if (bigbuf)
- yasm_xfree(bigbuf);
- return 0;
- }
-
- /* Warn that gaps are converted to 0 and write out the 0's. */
- if (gap) {
- unsigned long left;
- yasm_warn_set(YASM_WARN_UNINIT_CONTENTS,
- N_("uninitialized space declared in code/data section: zeroing"));
- /* Write out in chunks */
- memset(info->buf, 0, REGULAR_OUTBUF_SIZE);
- left = size;
- while (left > REGULAR_OUTBUF_SIZE) {
- fwrite(info->buf, REGULAR_OUTBUF_SIZE, 1, info->f);
- left -= REGULAR_OUTBUF_SIZE;
- }
- fwrite(info->buf, left, 1, info->f);
- } else {
- /* Output buf (or bigbuf if non-NULL) to file */
- fwrite(bigbuf ? bigbuf : info->buf, (size_t)size, 1, info->f);
- }
-
- /* If bigbuf was allocated, free it */
- if (bigbuf)
- yasm_xfree(bigbuf);
-
- return 0;
-}
-
-/* Check to ensure bytecode is res* (for BSS sections) */
-static int
-bin_objfmt_no_output_bytecode(yasm_bytecode *bc, /*@null@*/ void *d)
-{
- /*@null@*/ bin_objfmt_output_info *info = (bin_objfmt_output_info *)d;
- /*@null@*/ /*@only@*/ unsigned char *bigbuf;
- unsigned long size = REGULAR_OUTBUF_SIZE;
- int gap;
-
- assert(info != NULL);
-
- bigbuf = yasm_bc_tobytes(bc, info->buf, &size, &gap, info,
- bin_objfmt_output_value, NULL);
-
- /* If bigbuf was allocated, free it */
- if (bigbuf)
- yasm_xfree(bigbuf);
-
- /* Don't bother doing anything else if size ended up being 0. */
- if (size == 0)
- return 0;
-
- /* Warn if not a gap. */
- if (!gap) {
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("initialized space declared in nobits section: ignoring"));
- }
-
- return 0;
-}
-
-static int
-bin_objfmt_output_section(yasm_section *sect, /*@null@*/ void *d)
-{
- bin_section_data *bsd = yasm_section_get_data(sect, &bin_section_data_cb);
- /*@null@*/ bin_objfmt_output_info *info = (bin_objfmt_output_info *)d;
-
- assert(bsd != NULL);
- assert(info != NULL);
-
- if (bsd->bss) {
- yasm_section_bcs_traverse(sect, info->errwarns,
- info, bin_objfmt_no_output_bytecode);
- } else {
- yasm_intnum_set(info->tmp_intn, bsd->istart);
- yasm_intnum_calc(info->tmp_intn, YASM_EXPR_SUB, info->origin);
- if (yasm_intnum_sign(info->tmp_intn) < 0) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("section `%s' starts before origin (ORG)"),
- yasm_section_get_name(sect));
- yasm_errwarn_propagate(info->errwarns, 0);
- return 0;
- }
- if (!yasm_intnum_check_size(info->tmp_intn, sizeof(long)*8, 0, 1)) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("section `%s' start value too large"),
- yasm_section_get_name(sect));
- yasm_errwarn_propagate(info->errwarns, 0);
- return 0;
- }
- if (fseek(info->f, yasm_intnum_get_int(info->tmp_intn) + info->start,
- SEEK_SET) < 0)
- yasm__fatal(N_("could not seek on output file"));
- yasm_section_bcs_traverse(sect, info->errwarns,
- info, bin_objfmt_output_bytecode);
- }
-
- return 0;
-}
-
-static void
-bin_objfmt_cleanup(bin_objfmt_output_info *info)
-{
- bin_group *group, *group_temp;
-
- yasm_xfree(info->buf);
- yasm_intnum_destroy(info->origin);
- yasm_intnum_destroy(info->tmp_intn);
-
- TAILQ_FOREACH_SAFE(group, &info->lma_groups, link, group_temp)
- bin_group_destroy(group);
-
- TAILQ_FOREACH_SAFE(group, &info->vma_groups, link, group_temp)
- bin_group_destroy(group);
-}
-
-static void
-bin_objfmt_output(yasm_object *object, FILE *f, /*@unused@*/ int all_syms,
- yasm_errwarns *errwarns)
-{
- yasm_objfmt_bin *objfmt_bin = (yasm_objfmt_bin *)object->objfmt;
- bin_objfmt_output_info info;
- bin_group *group, *lma_group, *vma_group, *group_temp;
- yasm_intnum *start, *last, *vdelta;
- bin_groups unsorted_groups, bss_groups;
-
- info.start = ftell(f);
-
- /* Set ORG to 0 unless otherwise specified */
- if (objfmt_bin->org) {
- info.origin = yasm_expr_get_intnum(&objfmt_bin->org, 0);
- if (!info.origin) {
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("ORG expression is too complex"));
- yasm_errwarn_propagate(errwarns, objfmt_bin->org->line);
- return;
- }
- if (yasm_intnum_sign(info.origin) < 0) {
- yasm_error_set(YASM_ERROR_VALUE, N_("ORG expression is negative"));
- yasm_errwarn_propagate(errwarns, objfmt_bin->org->line);
- return;
- }
- info.origin = yasm_intnum_copy(info.origin);
- } else
- info.origin = yasm_intnum_create_uint(0);
-
- info.object = object;
- info.errwarns = errwarns;
- info.f = f;
- info.buf = yasm_xmalloc(REGULAR_OUTBUF_SIZE);
- info.tmp_intn = yasm_intnum_create_uint(0);
- TAILQ_INIT(&info.lma_groups);
- TAILQ_INIT(&info.vma_groups);
-
- /* Check symbol table */
- yasm_symtab_traverse(object->symtab, &info, bin_objfmt_check_sym);
-
- /* Create section groups */
- if (yasm_object_sections_traverse(object, &info, bin_lma_create_group)) {
- bin_objfmt_cleanup(&info);
- return; /* error detected */
- }
-
- /* Determine section order according to LMA.
- * Sections can be ordered either by (priority):
- * - follows
- * - start
- * - progbits/nobits setting
- * - order in the input file
- */
-
- /* Look at each group with follows specified, and find the section
- * that group is supposed to follow.
- */
- TAILQ_FOREACH_SAFE(lma_group, &info.lma_groups, link, group_temp) {
- if (lma_group->bsd->follows) {
- bin_group *found;
- /* Need to find group containing section this section follows. */
- found =
- find_group_by_name(&info.lma_groups, lma_group->bsd->follows);
- if (!found) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("section `%s' follows an invalid or unknown section `%s'"),
- yasm_section_get_name(lma_group->section),
- lma_group->bsd->follows);
- yasm_errwarn_propagate(errwarns, 0);
- bin_objfmt_cleanup(&info);
- return;
- }
-
- /* Check for loops */
- if (lma_group->section == found->section ||
- find_group_by_section(&lma_group->follow_groups,
- found->section)) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("follows loop between section `%s' and section `%s'"),
- yasm_section_get_name(lma_group->section),
- yasm_section_get_name(found->section));
- yasm_errwarn_propagate(errwarns, 0);
- bin_objfmt_cleanup(&info);
- return;
- }
-
- /* Remove this section from main lma groups list */
- TAILQ_REMOVE(&info.lma_groups, lma_group, link);
- /* Add it after the section it's supposed to follow. */
- TAILQ_INSERT_TAIL(&found->follow_groups, lma_group, link);
- }
- }
-
- /* Sort the top-level groups according to their start address.
- * Use Shell sort for ease of implementation.
- * If no start address is specified for a section, don't change the order,
- * and move BSS sections to a separate list so they can be moved to the
- * end of the lma list after all other sections are sorted.
- */
- unsorted_groups = info.lma_groups; /* structure copy */
- TAILQ_INIT(&info.lma_groups);
- TAILQ_INIT(&bss_groups);
- TAILQ_FOREACH_SAFE(lma_group, &unsorted_groups, link, group_temp) {
- bin_group *before;
-
- if (!lma_group->bsd->istart) {
- if (lma_group->bsd->bss)
- TAILQ_INSERT_TAIL(&bss_groups, lma_group, link);
- else
- TAILQ_INSERT_TAIL(&info.lma_groups, lma_group, link);
- continue;
- }
-
- before = NULL;
- TAILQ_FOREACH(group, &info.lma_groups, link) {
- if (!group->bsd->istart)
- continue;
- if (yasm_intnum_compare(group->bsd->istart,
- lma_group->bsd->istart) > 0) {
- before = group;
- break;
- }
- }
- if (before)
- TAILQ_INSERT_BEFORE(before, lma_group, link);
- else
- TAILQ_INSERT_TAIL(&info.lma_groups, lma_group, link);
- }
-
- /* Move the pure-BSS sections to the end of the LMA list. */
- TAILQ_FOREACH_SAFE(group, &bss_groups, link, group_temp)
- TAILQ_INSERT_TAIL(&info.lma_groups, group, link);
- TAILQ_INIT(&bss_groups); /* For sanity */
-
- /* Assign a LMA start address to every section.
- * Also assign VMA=LMA unless otherwise specified.
- *
- * We need to assign VMA=LMA here (while walking the tree) for the case:
- * sect1 start=0 (size=0x11)
- * sect2 follows=sect1 valign=16 (size=0x104)
- * sect3 follows=sect2 valign=16
- * Where the valign of sect2 will result in a sect3 vaddr higher than a
- * naive segment-by-segment interpretation (where sect3 and sect2 would
- * have a VMA overlap).
- *
- * Algorithm for VMA=LMA setting:
- * Start with delta=0.
- * If there's no virtual attributes, we simply set VMA = LMA+delta.
- * If there's only valign specified, we set VMA = aligned LMA, and add
- * any new alignment difference to delta.
- *
- * We could do the LMA start and VMA=LMA steps in two separate steps,
- * but it's easier to just recurse once.
- */
- start = yasm_intnum_copy(info.origin);
- last = yasm_intnum_copy(info.origin);
- vdelta = yasm_intnum_create_uint(0);
- TAILQ_FOREACH(lma_group, &info.lma_groups, link) {
- if (lma_group->bsd->istart)
- yasm_intnum_set(start, lma_group->bsd->istart);
- group_assign_start_recurse(lma_group, start, last, vdelta,
- info.tmp_intn, errwarns);
- yasm_intnum_set(start, last);
- }
- yasm_intnum_destroy(last);
- yasm_intnum_destroy(vdelta);
-
- /*
- * Determine section order according to VMA
- */
-
- /* Create section groups */
- if (yasm_object_sections_traverse(object, &info, bin_vma_create_group)) {
- yasm_intnum_destroy(start);
- bin_objfmt_cleanup(&info);
- return; /* error detected */
- }
-
- /* Look at each group with vfollows specified, and find the section
- * that group is supposed to follow.
- */
- TAILQ_FOREACH_SAFE(vma_group, &info.vma_groups, link, group_temp) {
- if (vma_group->bsd->vfollows) {
- bin_group *found;
- /* Need to find group containing section this section follows. */
- found = find_group_by_name(&info.vma_groups,
- vma_group->bsd->vfollows);
- if (!found) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("section `%s' vfollows an invalid or unknown section `%s'"),
- yasm_section_get_name(vma_group->section),
- vma_group->bsd->vfollows);
- yasm_errwarn_propagate(errwarns, 0);
- yasm_intnum_destroy(start);
- bin_objfmt_cleanup(&info);
- return;
- }
-
- /* Check for loops */
- if (vma_group->section == found->section ||
- find_group_by_section(&vma_group->follow_groups,
- found->section)) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("vfollows loop between section `%s' and section `%s'"),
- yasm_section_get_name(vma_group->section),
- yasm_section_get_name(found->section));
- yasm_errwarn_propagate(errwarns, 0);
- bin_objfmt_cleanup(&info);
- return;
- }
-
- /* Remove this section from main lma groups list */
- TAILQ_REMOVE(&info.vma_groups, vma_group, link);
- /* Add it after the section it's supposed to follow. */
- TAILQ_INSERT_TAIL(&found->follow_groups, vma_group, link);
- }
- }
-
- /* Due to the combination of steps above, we now know that all top-level
- * groups have integer ivstart:
- * Vstart Vfollows Valign Handled by
- * No No No group_assign_start_recurse()
- * No No Yes group_assign_start_recurse()
- * No Yes - vfollows loop (above)
- * Yes - - bin_lma_create_group()
- */
- TAILQ_FOREACH(vma_group, &info.vma_groups, link) {
- yasm_intnum_set(start, vma_group->bsd->ivstart);
- group_assign_vstart_recurse(vma_group, start, errwarns);
- }
-
- /* Output map file */
- output_map(&info);
-
- /* Ensure we don't have overlapping progbits LMAs.
- * Use a dumb O(N^2) algorithm as the number of sections is essentially
- * always low.
- */
- if (yasm_object_sections_traverse(object, NULL, check_lma_overlap)) {
- yasm_errwarn_propagate(errwarns, 0);
- yasm_intnum_destroy(start);
- bin_objfmt_cleanup(&info);
- return;
- }
-
- /* Output sections */
- yasm_object_sections_traverse(object, &info, bin_objfmt_output_section);
-
- /* Clean up */
- yasm_intnum_destroy(start);
- bin_objfmt_cleanup(&info);
-}
-
-static void
-bin_objfmt_destroy(yasm_objfmt *objfmt)
-{
- yasm_objfmt_bin *objfmt_bin = (yasm_objfmt_bin *)objfmt;
- if (objfmt_bin->map_filename)
- yasm_xfree(objfmt_bin->map_filename);
- yasm_expr_destroy(objfmt_bin->org);
- yasm_xfree(objfmt);
-}
-
-static void
-define_section_symbol(yasm_symtab *symtab, yasm_section *sect,
- const char *sectname, const char *suffix,
- enum bin_ssym which, unsigned long line)
-{
- yasm_symrec *sym;
- bin_symrec_data *bsymd = yasm_xmalloc(sizeof(bin_symrec_data));
- char *symname = yasm_xmalloc(8+strlen(sectname)+strlen(suffix)+1);
-
- strcpy(symname, "section.");
- strcat(symname, sectname);
- strcat(symname, suffix);
-
- bsymd->section = sect;
- bsymd->which = which;
-
- sym = yasm_symtab_declare(symtab, symname, YASM_SYM_EXTERN, line);
- yasm_xfree(symname);
- yasm_symrec_add_data(sym, &bin_symrec_data_cb, bsymd);
-}
-
-static void
-bin_objfmt_init_new_section(yasm_section *sect, unsigned long line)
-{
- yasm_object *object = yasm_section_get_object(sect);
- const char *sectname = yasm_section_get_name(sect);
- /*yasm_objfmt_bin *objfmt_bin = (yasm_objfmt_bin *)object->objfmt;*/
- bin_section_data *data;
-
- data = yasm_xmalloc(sizeof(bin_section_data));
- data->bss = 0;
- data->align = NULL;
- data->valign = NULL;
- data->start = NULL;
- data->vstart = NULL;
- data->follows = NULL;
- data->vfollows = NULL;
- data->istart = NULL;
- data->ivstart = NULL;
- data->length = NULL;
- yasm_section_add_data(sect, &bin_section_data_cb, data);
-
- define_section_symbol(object->symtab, sect, sectname, ".start",
- SSYM_START, line);
- define_section_symbol(object->symtab, sect, sectname, ".vstart",
- SSYM_VSTART, line);
- define_section_symbol(object->symtab, sect, sectname, ".length",
- SSYM_LENGTH, line);
-}
-
-static yasm_section *
-bin_objfmt_add_default_section(yasm_object *object)
-{
- yasm_section *retval;
- int isnew;
-
- retval = yasm_object_get_general(object, ".text", 0, 1, 0, &isnew, 0);
- if (isnew)
- yasm_section_set_default(retval, 1);
- return retval;
-}
-
-/* GAS-style flags */
-static int
-bin_helper_gasflags(void *obj, yasm_valparam *vp, unsigned long line, void *d,
- /*@unused@*/ uintptr_t arg)
-{
- /* TODO */
- return 0;
-}
-
-static /*@observer@*/ /*@null@*/ yasm_section *
-bin_objfmt_section_switch(yasm_object *object, yasm_valparamhead *valparams,
- /*@unused@*/ /*@null@*/
- yasm_valparamhead *objext_valparams,
- unsigned long line)
-{
- yasm_valparam *vp;
- yasm_section *retval;
- int isnew;
- int flags_override = 0;
- const char *sectname;
- bin_section_data *bsd = NULL;
-
- struct bin_section_switch_data {
- /*@only@*/ /*@null@*/ char *follows;
- /*@only@*/ /*@null@*/ char *vfollows;
- /*@only@*/ /*@null@*/ yasm_expr *start;
- /*@only@*/ /*@null@*/ yasm_expr *vstart;
- /*@only@*/ /*@null@*/ yasm_intnum *align;
- /*@only@*/ /*@null@*/ yasm_intnum *valign;
- unsigned long bss;
- unsigned long code;
- } data;
-
- static const yasm_dir_help help[] = {
- { "follows", 1, yasm_dir_helper_string,
- offsetof(struct bin_section_switch_data, follows), 0 },
- { "vfollows", 1, yasm_dir_helper_string,
- offsetof(struct bin_section_switch_data, vfollows), 0 },
- { "start", 1, yasm_dir_helper_expr,
- offsetof(struct bin_section_switch_data, start), 0 },
- { "vstart", 1, yasm_dir_helper_expr,
- offsetof(struct bin_section_switch_data, vstart), 0 },
- { "align", 1, yasm_dir_helper_intn,
- offsetof(struct bin_section_switch_data, align), 0 },
- { "valign", 1, yasm_dir_helper_intn,
- offsetof(struct bin_section_switch_data, valign), 0 },
- { "nobits", 0, yasm_dir_helper_flag_set,
- offsetof(struct bin_section_switch_data, bss), 1 },
- { "progbits", 0, yasm_dir_helper_flag_set,
- offsetof(struct bin_section_switch_data, bss), 0 },
- { "code", 0, yasm_dir_helper_flag_set,
- offsetof(struct bin_section_switch_data, code), 1 },
- { "data", 0, yasm_dir_helper_flag_set,
- offsetof(struct bin_section_switch_data, code), 0 },
- { "execute", 0, yasm_dir_helper_flag_set,
- offsetof(struct bin_section_switch_data, code), 1 },
- { "noexecute", 0, yasm_dir_helper_flag_set,
- offsetof(struct bin_section_switch_data, code), 0 },
- { "gasflags", 1, bin_helper_gasflags, 0, 0 }
- };
-
- vp = yasm_vps_first(valparams);
- sectname = yasm_vp_string(vp);
- if (!sectname)
- return NULL;
- vp = yasm_vps_next(vp);
-
- retval = yasm_object_find_general(object, sectname);
- if (retval) {
- bsd = yasm_section_get_data(retval, &bin_section_data_cb);
- assert(bsd != NULL);
- data.follows = bsd->follows;
- data.vfollows = bsd->vfollows;
- data.start = bsd->start;
- data.vstart = bsd->vstart;
- data.align = NULL;
- data.valign = NULL;
- data.bss = bsd->bss;
- data.code = yasm_section_is_code(retval);
- } else {
- data.follows = NULL;
- data.vfollows = NULL;
- data.start = NULL;
- data.vstart = NULL;
- data.align = NULL;
- data.valign = NULL;
- data.bss = strcmp(sectname, ".bss") == 0;
- data.code = strcmp(sectname, ".text") == 0;
- }
-
- flags_override = yasm_dir_helper(object, vp, line, help, NELEMS(help),
- &data, yasm_dir_helper_valparam_warn);
- if (flags_override < 0)
- return NULL; /* error occurred */
-
- if (data.start && data.follows) {
- yasm_error_set(YASM_ERROR_GENERAL,
- N_("cannot combine `start' and `follows' section attributes"));
- return NULL;
- }
-
- if (data.vstart && data.vfollows) {
- yasm_error_set(YASM_ERROR_GENERAL,
- N_("cannot combine `vstart' and `vfollows' section attributes"));
- return NULL;
- }
-
- if (data.align) {
- unsigned long align = yasm_intnum_get_uint(data.align);
-
- /* Alignments must be a power of two. */
- if (!is_exp2(align)) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("argument to `%s' is not a power of two"),
- "align");
- return NULL;
- }
- } else
- data.align = bsd ? bsd->align : NULL;
-
- if (data.valign) {
- unsigned long valign = yasm_intnum_get_uint(data.valign);
-
- /* Alignments must be a power of two. */
- if (!is_exp2(valign)) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("argument to `%s' is not a power of two"),
- "valign");
- return NULL;
- }
- } else
- data.valign = bsd ? bsd->valign : NULL;
-
- retval = yasm_object_get_general(object, sectname, 0, (int)data.code,
- (int)data.bss, &isnew, line);
-
- bsd = yasm_section_get_data(retval, &bin_section_data_cb);
-
- if (isnew || yasm_section_is_default(retval)) {
- yasm_section_set_default(retval, 0);
- }
-
- /* Update section flags */
- bsd->bss = data.bss;
- bsd->align = data.align;
- bsd->valign = data.valign;
- bsd->start = data.start;
- bsd->vstart = data.vstart;
- bsd->follows = data.follows;
- bsd->vfollows = data.vfollows;
-
- return retval;
-}
-
-static /*@observer@*/ /*@null@*/ yasm_symrec *
-bin_objfmt_get_special_sym(yasm_object *object, const char *name,
- const char *parser)
-{
- return NULL;
-}
-
-static void
-bin_objfmt_dir_org(yasm_object *object,
- /*@null@*/ yasm_valparamhead *valparams,
- /*@unused@*/ /*@null@*/
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_objfmt_bin *objfmt_bin = (yasm_objfmt_bin *)object->objfmt;
- yasm_valparam *vp;
-
- /* We only allow a single ORG in a program. */
- if (objfmt_bin->org) {
- yasm_error_set(YASM_ERROR_GENERAL, N_("program origin redefined"));
- return;
- }
-
- /* ORG takes just a simple expression as param */
- vp = yasm_vps_first(valparams);
- objfmt_bin->org = yasm_vp_expr(vp, object->symtab, line);
- if (!objfmt_bin->org) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("argument to ORG must be expression"));
- return;
- }
-}
-
-struct bin_dir_map_data {
- unsigned long flags;
- /*@only@*/ /*@null@*/ char *filename;
-};
-
-static int
-dir_map_filename(void *obj, yasm_valparam *vp, unsigned long line, void *data)
-{
- struct bin_dir_map_data *mdata = (struct bin_dir_map_data *)data;
- const char *filename;
-
- if (mdata->filename) {
- yasm_warn_set(YASM_WARN_GENERAL, N_("map file already specified"));
- return 0;
- }
-
- filename = yasm_vp_string(vp);
- if (!filename) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("unexpected expression in [map]"));
- return -1;
- }
- mdata->filename = yasm__xstrdup(filename);
-
- return 1;
-}
-
-static void
-bin_objfmt_dir_map(yasm_object *object,
- /*@null@*/ yasm_valparamhead *valparams,
- /*@unused@*/ /*@null@*/
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_objfmt_bin *objfmt_bin = (yasm_objfmt_bin *)object->objfmt;
-
- struct bin_dir_map_data data;
-
- static const yasm_dir_help help[] = {
- { "all", 0, yasm_dir_helper_flag_or,
- offsetof(struct bin_dir_map_data, flags),
- MAP_BRIEF|MAP_SECTIONS|MAP_SYMBOLS },
- { "brief", 0, yasm_dir_helper_flag_or,
- offsetof(struct bin_dir_map_data, flags), MAP_BRIEF },
- { "sections", 0, yasm_dir_helper_flag_or,
- offsetof(struct bin_dir_map_data, flags), MAP_SECTIONS },
- { "segments", 0, yasm_dir_helper_flag_or,
- offsetof(struct bin_dir_map_data, flags), MAP_SECTIONS },
- { "symbols", 0, yasm_dir_helper_flag_or,
- offsetof(struct bin_dir_map_data, flags), MAP_SYMBOLS }
- };
-
- data.flags = objfmt_bin->map_flags | MAP_NONE;
- data.filename = objfmt_bin->map_filename;
-
- if (valparams && yasm_dir_helper(object, yasm_vps_first(valparams), line, help,
- NELEMS(help), &data, dir_map_filename) < 0)
- return; /* error occurred */
-
- objfmt_bin->map_flags = data.flags;
- objfmt_bin->map_filename = data.filename;
-}
-
-static void
-bin_section_data_destroy(void *data)
-{
- bin_section_data *bsd = (bin_section_data *)data;
- if (bsd->start)
- yasm_expr_destroy(bsd->start);
- if (bsd->vstart)
- yasm_expr_destroy(bsd->vstart);
- if (bsd->follows)
- yasm_xfree(bsd->follows);
- if (bsd->vfollows)
- yasm_xfree(bsd->vfollows);
- if (bsd->istart)
- yasm_intnum_destroy(bsd->istart);
- if (bsd->ivstart)
- yasm_intnum_destroy(bsd->ivstart);
- if (bsd->length)
- yasm_intnum_destroy(bsd->length);
- yasm_xfree(data);
-}
-
-static void
-bin_section_data_print(void *data, FILE *f, int indent_level)
-{
- bin_section_data *bsd = (bin_section_data *)data;
-
- fprintf(f, "%*sbss=%d\n", indent_level, "", bsd->bss);
-
- fprintf(f, "%*salign=", indent_level, "");
- if (bsd->align)
- yasm_intnum_print(bsd->align, f);
- else
- fprintf(f, "(nil)");
- fprintf(f, "\n%*svalign=", indent_level, "");
- if (bsd->valign)
- yasm_intnum_print(bsd->valign, f);
- else
- fprintf(f, "(nil)");
-
- fprintf(f, "\n%*sstart=", indent_level, "");
- yasm_expr_print(bsd->start, f);
- fprintf(f, "\n%*svstart=", indent_level, "");
- yasm_expr_print(bsd->vstart, f);
-
- fprintf(f, "\n%*sfollows=", indent_level, "");
- if (bsd->follows)
- fprintf(f, "\"%s\"", bsd->follows);
- else
- fprintf(f, "(nil)");
- fprintf(f, "\n%*svfollows=", indent_level, "");
- if (bsd->vfollows)
- fprintf(f, "\"%s\"", bsd->vfollows);
- else
- fprintf(f, "(nil)");
-
- fprintf(f, "\n%*sistart=", indent_level, "");
- if (bsd->istart)
- yasm_intnum_print(bsd->istart, f);
- else
- fprintf(f, "(nil)");
- fprintf(f, "\n%*sivstart=", indent_level, "");
- if (bsd->ivstart)
- yasm_intnum_print(bsd->ivstart, f);
- else
- fprintf(f, "(nil)");
-
- fprintf(f, "\n%*slength=", indent_level, "");
- if (bsd->length)
- yasm_intnum_print(bsd->length, f);
- else
- fprintf(f, "(nil)");
- fprintf(f, "\n");
-}
-
-static void
-bin_symrec_data_destroy(void *data)
-{
- yasm_xfree(data);
-}
-
-static void
-bin_symrec_data_print(void *data, FILE *f, int indent_level)
-{
- bin_symrec_data *bsymd = (bin_symrec_data *)data;
-
- fprintf(f, "%*ssection=\"%s\"\n", indent_level, "",
- yasm_section_get_name(bsymd->section));
- fprintf(f, "%*swhich=", indent_level, "");
- switch (bsymd->which) {
- case SSYM_START: fprintf(f, "START"); break;
- case SSYM_VSTART: fprintf(f, "VSTART"); break;
- case SSYM_LENGTH: fprintf(f, "LENGTH"); break;
- }
- fprintf(f, "\n");
-}
-
-
-/* Define valid debug formats to use with this object format */
-static const char *bin_objfmt_dbgfmt_keywords[] = {
- "null",
- NULL
-};
-
-static const yasm_directive bin_objfmt_directives[] = {
- { "org", "nasm", bin_objfmt_dir_org, YASM_DIR_ARG_REQUIRED },
- { "map", "nasm", bin_objfmt_dir_map, YASM_DIR_ANY },
- { NULL, NULL, NULL, 0 }
-};
-
-static const char *bin_nasm_stdmac[] = {
- "%imacro org 1+.nolist",
- "[org %1]",
- "%endmacro",
- NULL
-};
-
-static const yasm_stdmac bin_objfmt_stdmacs[] = {
- { "nasm", "nasm", bin_nasm_stdmac },
- { "tasm", "tasm", bin_nasm_stdmac },
- { NULL, NULL, NULL }
-};
-
-/* Define objfmt structure -- see objfmt.h for details */
-yasm_objfmt_module yasm_bin_LTX_objfmt = {
- "Flat format binary",
- "bin",
- NULL,
- 16,
- 0,
- bin_objfmt_dbgfmt_keywords,
- "null",
- bin_objfmt_directives,
- bin_objfmt_stdmacs,
- bin_objfmt_create,
- bin_objfmt_output,
- bin_objfmt_destroy,
- bin_objfmt_add_default_section,
- bin_objfmt_init_new_section,
- bin_objfmt_section_switch,
- bin_objfmt_get_special_sym
-};
-
-#define EXE_HEADER_SIZE 0x200
-
-/* DOS .EXE binaries are just raw binaries with a header */
-yasm_objfmt_module yasm_dosexe_LTX_objfmt;
-
-static yasm_objfmt *
-dosexe_objfmt_create(yasm_object *object)
-{
- yasm_objfmt_bin *objfmt_bin = (yasm_objfmt_bin *) bin_objfmt_create(object);
- objfmt_bin->objfmt.module = &yasm_dosexe_LTX_objfmt;
- return (yasm_objfmt *)objfmt_bin;
-}
-
-static unsigned long
-get_sym(yasm_object *object, const char *name) {
- yasm_symrec *symrec = yasm_symtab_get(object->symtab, name);
- yasm_bytecode *prevbc;
- if (!symrec)
- return 0;
- if (!yasm_symrec_get_label(symrec, &prevbc))
- return 0;
- return prevbc->offset + prevbc->len;
-}
-
-static void
-dosexe_objfmt_output(yasm_object *object, FILE *f, /*@unused@*/ int all_syms,
- yasm_errwarns *errwarns)
-{
- unsigned long tot_size, size, bss_size;
- unsigned long start, bss;
- unsigned char c;
-
- fseek(f, EXE_HEADER_SIZE, SEEK_SET);
-
- bin_objfmt_output(object, f, all_syms, errwarns);
-
- tot_size = ftell(f);
-
- /* if there is a __bss_start symbol, data after it is 0, no need to write
- * it. */
- bss = get_sym(object, "__bss_start");
- if (bss)
- size = bss;
- else
- size = tot_size;
- bss_size = tot_size - size;
-#ifdef HAVE_FTRUNCATE
- if (size != tot_size)
- ftruncate(fileno(f), EXE_HEADER_SIZE + size);
-#endif
- fseek(f, 0, SEEK_SET);
-
- /* magic */
- fwrite("MZ", 1, 2, f);
-
- /* file size */
- c = size & 0xff;
- fwrite(&c, 1, 1, f);
- c = !!(size & 0x100);
- fwrite(&c, 1, 1, f);
- c = ((size + 511) >> 9) & 0xff;
- fwrite(&c, 1, 1, f);
- c = ((size + 511) >> 17) & 0xff;
- fwrite(&c, 1, 1, f);
-
- /* relocation # */
- c = 0;
- fwrite(&c, 1, 1, f);
- fwrite(&c, 1, 1, f);
-
- /* header size */
- c = EXE_HEADER_SIZE / 16;
- fwrite(&c, 1, 1, f);
- c = 0;
- fwrite(&c, 1, 1, f);
-
- /* minimum paragraph # */
- bss_size = (bss_size + 15) >> 4;
- c = bss_size & 0xff;
- fwrite(&c, 1, 1, f);
- c = (bss_size >> 8) & 0xff;
- fwrite(&c, 1, 1, f);
-
- /* maximum paragraph # */
- c = 0xFF;
- fwrite(&c, 1, 1, f);
- fwrite(&c, 1, 1, f);
-
- /* relative value of stack segment */
- c = 0;
- fwrite(&c, 1, 1, f);
- fwrite(&c, 1, 1, f);
-
- /* SP at start */
- c = 0;
- fwrite(&c, 1, 1, f);
- fwrite(&c, 1, 1, f);
-
- /* header checksum */
- c = 0;
- fwrite(&c, 1, 1, f);
- fwrite(&c, 1, 1, f);
-
- /* IP at start */
- start = get_sym(object, "start");
- if (!start) {
- yasm_error_set(YASM_ERROR_GENERAL,
- N_("%s: could not find symbol `start'"));
- return;
- }
- c = start & 0xff;
- fwrite(&c, 1, 1, f);
- c = (start >> 8) & 0xff;
- fwrite(&c, 1, 1, f);
-
- /* CS start */
- c = 0;
- fwrite(&c, 1, 1, f);
- fwrite(&c, 1, 1, f);
-
- /* reloc start */
- c = 0x22;
- fwrite(&c, 1, 1, f);
- c = 0;
- fwrite(&c, 1, 1, f);
-
- /* Overlay number */
- c = 0;
- fwrite(&c, 1, 1, f);
- fwrite(&c, 1, 1, f);
-}
-
-
-/* Define objfmt structure -- see objfmt.h for details */
-yasm_objfmt_module yasm_dosexe_LTX_objfmt = {
- "DOS .EXE format binary",
- "dosexe",
- "exe",
- 16,
- 0,
- bin_objfmt_dbgfmt_keywords,
- "null",
- bin_objfmt_directives,
- bin_objfmt_stdmacs,
- dosexe_objfmt_create,
- dosexe_objfmt_output,
- bin_objfmt_destroy,
- bin_objfmt_add_default_section,
- bin_objfmt_init_new_section,
- bin_objfmt_section_switch,
- bin_objfmt_get_special_sym
-};
+/*
+ * Flat-format binary object format
+ *
+ * Copyright (C) 2002-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include <libyasm.h>
+
+
+#define REGULAR_OUTBUF_SIZE 1024
+
+typedef struct bin_section_data {
+ int bss; /* aka nobits */
+
+ /* User-provided alignment */
+ yasm_intnum *align, *valign;
+
+ /* User-provided starts */
+ /*@null@*/ /*@owned@*/ yasm_expr *start, *vstart;
+
+ /* User-provided follows */
+ /*@null@*/ /*@owned@*/ char *follows, *vfollows;
+
+ /* Calculated (final) starts, used only during output() */
+ /*@null@*/ /*@owned@*/ yasm_intnum *istart, *ivstart;
+
+ /* Calculated (final) length, used only during output() */
+ /*@null@*/ /*@owned@*/ yasm_intnum *length;
+} bin_section_data;
+
+typedef struct yasm_objfmt_bin {
+ yasm_objfmt_base objfmt; /* base structure */
+
+ enum {
+ NO_MAP = 0,
+ MAP_NONE = 0x01,
+ MAP_BRIEF = 0x02,
+ MAP_SECTIONS = 0x04,
+ MAP_SYMBOLS = 0x08
+ } map_flags;
+ /*@null@*/ /*@only@*/ char *map_filename;
+
+ /*@null@*/ /*@only@*/ yasm_expr *org;
+} yasm_objfmt_bin;
+
+/* symrec data is used only for the special symbols section<sectname>.start,
+ * section<sectname>.vstart, and section<sectname>.length
+ */
+typedef struct bin_symrec_data {
+ yasm_section *section; /* referenced section */
+ enum bin_ssym {
+ SSYM_START,
+ SSYM_VSTART,
+ SSYM_LENGTH
+ } which;
+} bin_symrec_data;
+
+static void bin_section_data_destroy(/*@only@*/ void *d);
+static void bin_section_data_print(void *data, FILE *f, int indent_level);
+
+static const yasm_assoc_data_callback bin_section_data_cb = {
+ bin_section_data_destroy,
+ bin_section_data_print
+};
+
+static void bin_symrec_data_destroy(/*@only@*/ void *d);
+static void bin_symrec_data_print(void *data, FILE *f, int indent_level);
+
+static const yasm_assoc_data_callback bin_symrec_data_cb = {
+ bin_symrec_data_destroy,
+ bin_symrec_data_print
+};
+
+yasm_objfmt_module yasm_bin_LTX_objfmt;
+
+
+static yasm_objfmt *
+bin_objfmt_create(yasm_object *object)
+{
+ yasm_objfmt_bin *objfmt_bin = yasm_xmalloc(sizeof(yasm_objfmt_bin));
+ objfmt_bin->objfmt.module = &yasm_bin_LTX_objfmt;
+
+ objfmt_bin->map_flags = NO_MAP;
+ objfmt_bin->map_filename = NULL;
+ objfmt_bin->org = NULL;
+
+ return (yasm_objfmt *)objfmt_bin;
+}
+
+typedef TAILQ_HEAD(bin_group_head, bin_group) bin_groups;
+
+typedef struct bin_group {
+ TAILQ_ENTRY(bin_group) link;
+ yasm_section *section;
+ bin_section_data *bsd;
+
+ /* Groups that (in parallel) logically come immediately after this
+ * group's section.
+ */
+ bin_groups follow_groups;
+} bin_group;
+
+/* Recursive function to find group containing named section. */
+static bin_group *
+find_group_by_name(bin_groups *groups, const char *name)
+{
+ bin_group *group, *found;
+ TAILQ_FOREACH(group, groups, link) {
+ if (strcmp(yasm_section_get_name(group->section), name) == 0)
+ return group;
+ /* Recurse to loop through follow groups */
+ found = find_group_by_name(&group->follow_groups, name);
+ if (found)
+ return found;
+ }
+ return NULL;
+}
+
+/* Recursive function to find group. Returns NULL if not found. */
+static bin_group *
+find_group_by_section(bin_groups *groups, yasm_section *section)
+{
+ bin_group *group, *found;
+ TAILQ_FOREACH(group, groups, link) {
+ if (group->section == section)
+ return group;
+ /* Recurse to loop through follow groups */
+ found = find_group_by_section(&group->follow_groups, section);
+ if (found)
+ return found;
+ }
+ return NULL;
+}
+
+#if 0
+/* Debugging function */
+static void
+print_groups(const bin_groups *groups, int indent_level)
+{
+ bin_group *group;
+ TAILQ_FOREACH(group, groups, link) {
+ printf("%*sSection `%s':\n", indent_level, "",
+ yasm_section_get_name(group->section));
+ bin_section_data_print(group->bsd, stdout, indent_level+1);
+ if (!TAILQ_EMPTY(&group->follow_groups)) {
+ printf("%*sFollowing groups:\n", indent_level, "");
+ print_groups(&group->follow_groups, indent_level+1);
+ }
+ }
+}
+#endif
+
+static void
+bin_group_destroy(/*@only@*/ bin_group *group)
+{
+ bin_group *follow, *group_temp;
+ TAILQ_FOREACH_SAFE(follow, &group->follow_groups, link, group_temp)
+ bin_group_destroy(follow);
+ yasm_xfree(group);
+}
+
+typedef struct bin_objfmt_output_info {
+ yasm_object *object;
+ yasm_errwarns *errwarns;
+ /*@dependent@*/ FILE *f;
+ /*@only@*/ unsigned char *buf;
+ /*@observer@*/ const yasm_section *sect;
+ unsigned long start; /* what normal variables go against */
+
+ yasm_intnum *origin;
+ yasm_intnum *tmp_intn; /* temporary working intnum */
+
+ bin_groups lma_groups, vma_groups;
+} bin_objfmt_output_info;
+
+static int
+bin_objfmt_check_sym(yasm_symrec *sym, /*@null@*/ void *d)
+{
+ /*@null@*/ bin_objfmt_output_info *info = (bin_objfmt_output_info *)d;
+ yasm_sym_vis vis = yasm_symrec_get_visibility(sym);
+ assert(info != NULL);
+
+ /* Don't check internally-generated symbols. Only internally generated
+ * symbols have symrec data, so simply check for its presence.
+ */
+ if (yasm_symrec_get_data(sym, &bin_symrec_data_cb))
+ return 0;
+
+ if (vis & YASM_SYM_EXTERN) {
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("binary object format does not support extern variables"));
+ yasm_errwarn_propagate(info->errwarns, yasm_symrec_get_decl_line(sym));
+ } else if (vis & YASM_SYM_GLOBAL) {
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("binary object format does not support global variables"));
+ yasm_errwarn_propagate(info->errwarns, yasm_symrec_get_decl_line(sym));
+ } else if (vis & YASM_SYM_COMMON) {
+ yasm_error_set(YASM_ERROR_TYPE,
+ N_("binary object format does not support common variables"));
+ yasm_errwarn_propagate(info->errwarns, yasm_symrec_get_decl_line(sym));
+ }
+ return 0;
+}
+
+static int
+bin_lma_create_group(yasm_section *sect, /*@null@*/ void *d)
+{
+ bin_objfmt_output_info *info = (bin_objfmt_output_info *)d;
+ bin_section_data *bsd = yasm_section_get_data(sect, &bin_section_data_cb);
+ unsigned long align = yasm_section_get_align(sect);
+ bin_group *group;
+
+ assert(info != NULL);
+ assert(bsd != NULL);
+
+ group = yasm_xmalloc(sizeof(bin_group));
+ group->section = sect;
+ group->bsd = bsd;
+ TAILQ_INIT(&group->follow_groups);
+
+ /* Determine section alignment as necessary. */
+ if (!bsd->align)
+ bsd->align = yasm_intnum_create_uint(align > 4 ? align : 4);
+ else {
+ yasm_intnum *align_intn = yasm_intnum_create_uint(align);
+ if (yasm_intnum_compare(align_intn, bsd->align) > 0) {
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("section `%s' internal align of %lu is greater than `%s' of %lu; using `%s'"),
+ yasm_section_get_name(sect),
+ yasm_intnum_get_uint(align_intn),
+ N_("align"),
+ yasm_intnum_get_uint(bsd->align),
+ N_("align"));
+ yasm_errwarn_propagate(info->errwarns, 0);
+ }
+ yasm_intnum_destroy(align_intn);
+ }
+
+ /* Calculate section integer start. */
+ if (bsd->start) {
+ bsd->istart = yasm_expr_get_intnum(&bsd->start, 0);
+ if (!bsd->istart) {
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("start expression is too complex"));
+ yasm_errwarn_propagate(info->errwarns, bsd->start->line);
+ return 1;
+ } else
+ bsd->istart = yasm_intnum_copy(bsd->istart);
+ } else
+ bsd->istart = NULL;
+
+ /* Calculate section integer vstart. */
+ if (bsd->vstart) {
+ bsd->ivstart = yasm_expr_get_intnum(&bsd->vstart, 0);
+ if (!bsd->ivstart) {
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("vstart expression is too complex"));
+ yasm_errwarn_propagate(info->errwarns, bsd->vstart->line);
+ return 1;
+ } else
+ bsd->ivstart = yasm_intnum_copy(bsd->ivstart);
+ } else
+ bsd->ivstart = NULL;
+
+ /* Calculate section integer length. */
+ bsd->length = yasm_calc_bc_dist(yasm_section_bcs_first(sect),
+ yasm_section_bcs_last(sect));
+
+ TAILQ_INSERT_TAIL(&info->lma_groups, group, link);
+ return 0;
+}
+
+static int
+bin_vma_create_group(yasm_section *sect, /*@null@*/ void *d)
+{
+ bin_objfmt_output_info *info = (bin_objfmt_output_info *)d;
+ bin_section_data *bsd = yasm_section_get_data(sect, &bin_section_data_cb);
+ bin_group *group;
+
+ assert(info != NULL);
+ assert(bsd != NULL);
+
+ group = yasm_xmalloc(sizeof(bin_group));
+ group->section = sect;
+ group->bsd = bsd;
+ TAILQ_INIT(&group->follow_groups);
+
+ TAILQ_INSERT_TAIL(&info->vma_groups, group, link);
+ return 0;
+}
+
+/* Calculates new start address based on alignment constraint.
+ * Start is modified (rounded up) to the closest aligned value greater than
+ * what was passed in.
+ * Align must be a power of 2.
+ */
+static void
+bin_objfmt_align(yasm_intnum *start, const yasm_intnum *align)
+{
+ /* Because alignment is always a power of two, we can use some bit
+ * trickery to do this easily.
+ */
+ yasm_intnum *align_intn =
+ yasm_intnum_create_uint(yasm_intnum_get_uint(align)-1);
+ yasm_intnum_calc(align_intn, YASM_EXPR_AND, start);
+ if (!yasm_intnum_is_zero(align_intn)) {
+ /* start = (start & ~(align-1)) + align; */
+ yasm_intnum_set_uint(align_intn, yasm_intnum_get_uint(align)-1);
+ yasm_intnum_calc(align_intn, YASM_EXPR_NOT, NULL);
+ yasm_intnum_calc(align_intn, YASM_EXPR_AND, start);
+ yasm_intnum_set(start, align);
+ yasm_intnum_calc(start, YASM_EXPR_ADD, align_intn);
+ }
+ yasm_intnum_destroy(align_intn);
+}
+
+/* Recursive function to assign start addresses.
+ * Updates start, last, and vdelta parameters as it goes along.
+ * The tmp parameter is just a working intnum so one doesn't have to be
+ * locally allocated for this purpose.
+ */
+static void
+group_assign_start_recurse(bin_group *group, yasm_intnum *start,
+ yasm_intnum *last, yasm_intnum *vdelta,
+ yasm_intnum *tmp, yasm_errwarns *errwarns)
+{
+ bin_group *follow_group;
+
+ /* Determine LMA */
+ if (group->bsd->istart) {
+ yasm_intnum_set(group->bsd->istart, start);
+ if (group->bsd->align) {
+ bin_objfmt_align(group->bsd->istart, group->bsd->align);
+ if (yasm_intnum_compare(start, group->bsd->istart) != 0) {
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("start inconsistent with align; using aligned value"));
+ yasm_errwarn_propagate(errwarns, group->bsd->start->line);
+ }
+ }
+ } else {
+ group->bsd->istart = yasm_intnum_copy(start);
+ if (group->bsd->align != 0)
+ bin_objfmt_align(group->bsd->istart, group->bsd->align);
+ }
+
+ /* Determine VMA if either just valign specified or if no v* specified */
+ if (!group->bsd->vstart) {
+ if (!group->bsd->vfollows && !group->bsd->valign) {
+ /* No v* specified, set VMA=LMA+vdelta. */
+ group->bsd->ivstart = yasm_intnum_copy(group->bsd->istart);
+ yasm_intnum_calc(group->bsd->ivstart, YASM_EXPR_ADD, vdelta);
+ } else if (!group->bsd->vfollows) {
+ /* Just valign specified: set VMA=LMA+vdelta, align VMA, then add
+ * delta between unaligned and aligned to vdelta parameter.
+ */
+ group->bsd->ivstart = yasm_intnum_copy(group->bsd->istart);
+ yasm_intnum_calc(group->bsd->ivstart, YASM_EXPR_ADD, vdelta);
+ yasm_intnum_set(tmp, group->bsd->ivstart);
+ bin_objfmt_align(group->bsd->ivstart, group->bsd->valign);
+ yasm_intnum_calc(vdelta, YASM_EXPR_ADD, group->bsd->ivstart);
+ yasm_intnum_calc(vdelta, YASM_EXPR_SUB, tmp);
+ }
+ }
+
+ /* Find the maximum end value */
+ yasm_intnum_set(tmp, group->bsd->istart);
+ yasm_intnum_calc(tmp, YASM_EXPR_ADD, group->bsd->length);
+ if (yasm_intnum_compare(tmp, last) > 0) /* tmp > last */
+ yasm_intnum_set(last, tmp);
+
+ /* Recurse for each following group. */
+ TAILQ_FOREACH(follow_group, &group->follow_groups, link) {
+ /* Following sections have to follow this one,
+ * so add length to start.
+ */
+ yasm_intnum_set(start, group->bsd->istart);
+ yasm_intnum_calc(start, YASM_EXPR_ADD, group->bsd->length);
+
+ group_assign_start_recurse(follow_group, start, last, vdelta, tmp,
+ errwarns);
+ }
+}
+
+/* Recursive function to assign start addresses.
+ * Updates start parameter as it goes along.
+ * The tmp parameter is just a working intnum so one doesn't have to be
+ * locally allocated for this purpose.
+ */
+static void
+group_assign_vstart_recurse(bin_group *group, yasm_intnum *start,
+ yasm_errwarns *errwarns)
+{
+ bin_group *follow_group;
+
+ /* Determine VMA section alignment as necessary.
+ * Default to LMA alignment if not specified.
+ */
+ if (!group->bsd->valign)
+ group->bsd->valign = yasm_intnum_copy(group->bsd->align);
+ else {
+ unsigned long align = yasm_section_get_align(group->section);
+ yasm_intnum *align_intn = yasm_intnum_create_uint(align);
+ if (yasm_intnum_compare(align_intn, group->bsd->valign) > 0) {
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("section `%s' internal align of %lu is greater than `%s' of %lu; using `%s'"),
+ yasm_section_get_name(group->section),
+ yasm_intnum_get_uint(align_intn),
+ N_("valign"),
+ yasm_intnum_get_uint(group->bsd->valign),
+ N_("valign"));
+ yasm_errwarn_propagate(errwarns, 0);
+ }
+ yasm_intnum_destroy(align_intn);
+ }
+
+ /* Determine VMA */
+ if (group->bsd->ivstart) {
+ yasm_intnum_set(group->bsd->ivstart, start);
+ if (group->bsd->valign) {
+ bin_objfmt_align(group->bsd->ivstart, group->bsd->valign);
+ if (yasm_intnum_compare(start, group->bsd->ivstart) != 0) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("vstart inconsistent with valign"));
+ yasm_errwarn_propagate(errwarns, group->bsd->vstart->line);
+ }
+ }
+ } else {
+ group->bsd->ivstart = yasm_intnum_copy(start);
+ if (group->bsd->valign)
+ bin_objfmt_align(group->bsd->ivstart, group->bsd->valign);
+ }
+
+ /* Recurse for each following group. */
+ TAILQ_FOREACH(follow_group, &group->follow_groups, link) {
+ /* Following sections have to follow this one,
+ * so add length to start.
+ */
+ yasm_intnum_set(start, group->bsd->ivstart);
+ yasm_intnum_calc(start, YASM_EXPR_ADD, group->bsd->length);
+
+ group_assign_vstart_recurse(follow_group, start, errwarns);
+ }
+}
+
+static /*@null@*/ const yasm_intnum *
+get_ssym_value(yasm_symrec *sym)
+{
+ bin_symrec_data *bsymd = yasm_symrec_get_data(sym, &bin_symrec_data_cb);
+ bin_section_data *bsd;
+
+ if (!bsymd)
+ return NULL;
+
+ bsd = yasm_section_get_data(bsymd->section, &bin_section_data_cb);
+ assert(bsd != NULL);
+
+ switch (bsymd->which) {
+ case SSYM_START: return bsd->istart;
+ case SSYM_VSTART: return bsd->ivstart;
+ case SSYM_LENGTH: return bsd->length;
+ }
+ return NULL;
+}
+
+static /*@only@*/ yasm_expr *
+bin_objfmt_expr_xform(/*@returned@*/ /*@only@*/ yasm_expr *e,
+ /*@unused@*/ /*@null@*/ void *d)
+{
+ int i;
+ for (i=0; i<e->numterms; i++) {
+ /*@dependent@*/ yasm_section *sect;
+ /*@dependent@*/ /*@null@*/ yasm_bytecode *precbc;
+ /*@null@*/ yasm_intnum *dist;
+ /*@null@*/ const yasm_intnum *ssymval;
+
+ /* Transform symrecs or precbcs that reference sections into
+ * vstart + intnum(dist).
+ */
+ if (((e->terms[i].type == YASM_EXPR_SYM &&
+ yasm_symrec_get_label(e->terms[i].data.sym, &precbc)) ||
+ (e->terms[i].type == YASM_EXPR_PRECBC &&
+ (precbc = e->terms[i].data.precbc))) &&
+ (sect = yasm_bc_get_section(precbc)) &&
+ (dist = yasm_calc_bc_dist(yasm_section_bcs_first(sect), precbc))) {
+ bin_section_data *bsd;
+ bsd = yasm_section_get_data(sect, &bin_section_data_cb);
+ assert(bsd != NULL);
+ yasm_intnum_calc(dist, YASM_EXPR_ADD, bsd->ivstart);
+ e->terms[i].type = YASM_EXPR_INT;
+ e->terms[i].data.intn = dist;
+ }
+
+ /* Transform our special symrecs into the appropriate value */
+ if (e->terms[i].type == YASM_EXPR_SYM &&
+ (ssymval = get_ssym_value(e->terms[i].data.sym))) {
+ e->terms[i].type = YASM_EXPR_INT;
+ e->terms[i].data.intn = yasm_intnum_copy(ssymval);
+ }
+ }
+
+ return e;
+}
+
+typedef struct map_output_info {
+ /* address width */
+ int bytes;
+
+ /* intnum output static data areas */
+ unsigned char *buf;
+ yasm_intnum *intn;
+
+ /* symrec output information */
+ unsigned long count;
+ yasm_section *section; /* NULL for EQUs */
+
+ yasm_object *object; /* object */
+ FILE *f; /* map output file */
+} map_output_info;
+
+static int
+map_prescan_bytes(yasm_section *sect, void *d)
+{
+ bin_section_data *bsd = yasm_section_get_data(sect, &bin_section_data_cb);
+ map_output_info *info = (map_output_info *)d;
+
+ assert(bsd != NULL);
+ assert(info != NULL);
+
+ while (!yasm_intnum_check_size(bsd->length, info->bytes * 8, 0, 0))
+ info->bytes *= 2;
+ while (!yasm_intnum_check_size(bsd->istart, info->bytes * 8, 0, 0))
+ info->bytes *= 2;
+ while (!yasm_intnum_check_size(bsd->ivstart, info->bytes * 8, 0, 0))
+ info->bytes *= 2;
+
+ return 0;
+}
+
+static void
+map_print_intnum(const yasm_intnum *intn, map_output_info *info)
+{
+ size_t i;
+ yasm_intnum_get_sized(intn, info->buf, info->bytes, info->bytes*8, 0, 0,
+ 0);
+ for (i=info->bytes; i != 0; i--)
+ fprintf(info->f, "%02X", info->buf[i-1]);
+}
+
+static void
+map_sections_summary(bin_groups *groups, map_output_info *info)
+{
+ bin_group *group;
+ TAILQ_FOREACH(group, groups, link) {
+ bin_section_data *bsd = group->bsd;
+
+ assert(bsd != NULL);
+ assert(info != NULL);
+
+ map_print_intnum(bsd->ivstart, info);
+ fprintf(info->f, " ");
+
+ yasm_intnum_set(info->intn, bsd->ivstart);
+ yasm_intnum_calc(info->intn, YASM_EXPR_ADD, bsd->length);
+ map_print_intnum(info->intn, info);
+ fprintf(info->f, " ");
+
+ map_print_intnum(bsd->istart, info);
+ fprintf(info->f, " ");
+
+ yasm_intnum_set(info->intn, bsd->istart);
+ yasm_intnum_calc(info->intn, YASM_EXPR_ADD, bsd->length);
+ map_print_intnum(info->intn, info);
+ fprintf(info->f, " ");
+
+ map_print_intnum(bsd->length, info);
+ fprintf(info->f, " ");
+
+ fprintf(info->f, "%-*s", 10, bsd->bss ? "nobits" : "progbits");
+ fprintf(info->f, "%s\n", yasm_section_get_name(group->section));
+
+ /* Recurse to loop through follow groups */
+ map_sections_summary(&group->follow_groups, info);
+ }
+}
+
+static void
+map_sections_detail(bin_groups *groups, map_output_info *info)
+{
+ bin_group *group;
+ TAILQ_FOREACH(group, groups, link) {
+ bin_section_data *bsd = group->bsd;
+ size_t i;
+ const char *s;
+
+ s = yasm_section_get_name(group->section);
+ fprintf(info->f, "---- Section %s ", s);
+ for (i=0; i<(65-strlen(s)); i++)
+ fputc('-', info->f);
+
+ fprintf(info->f, "\n\nclass: %s",
+ bsd->bss ? "nobits" : "progbits");
+ fprintf(info->f, "\nlength: ");
+ map_print_intnum(bsd->length, info);
+ fprintf(info->f, "\nstart: ");
+ map_print_intnum(bsd->istart, info);
+ fprintf(info->f, "\nalign: ");
+ map_print_intnum(bsd->align, info);
+ fprintf(info->f, "\nfollows: %s",
+ bsd->follows ? bsd->follows : "not defined");
+ fprintf(info->f, "\nvstart: ");
+ map_print_intnum(bsd->ivstart, info);
+ fprintf(info->f, "\nvalign: ");
+ map_print_intnum(bsd->valign, info);
+ fprintf(info->f, "\nvfollows: %s\n\n",
+ bsd->vfollows ? bsd->vfollows : "not defined");
+
+ /* Recurse to loop through follow groups */
+ map_sections_detail(&group->follow_groups, info);
+ }
+}
+
+static int
+map_symrec_count(yasm_symrec *sym, void *d)
+{
+ map_output_info *info = (map_output_info *)d;
+ /*@dependent@*/ yasm_bytecode *precbc;
+
+ assert(info != NULL);
+
+ /* TODO: autodetect wider size */
+ if (!info->section && yasm_symrec_get_equ(sym)) {
+ info->count++;
+ } else if (yasm_symrec_get_label(sym, &precbc) &&
+ yasm_bc_get_section(precbc) == info->section) {
+ info->count++;
+ }
+ return 0;
+}
+
+static int
+map_symrec_output(yasm_symrec *sym, void *d)
+{
+ map_output_info *info = (map_output_info *)d;
+ const yasm_expr *equ;
+ /*@dependent@*/ yasm_bytecode *precbc;
+ /*@only@*/ char *name = yasm_symrec_get_global_name(sym, info->object);
+
+ assert(info != NULL);
+
+ if (!info->section && (equ = yasm_symrec_get_equ(sym))) {
+ yasm_expr *realequ = yasm_expr_copy(equ);
+ realequ = yasm_expr__level_tree
+ (realequ, 1, 1, 1, 0, bin_objfmt_expr_xform, NULL);
+ yasm_intnum_set(info->intn, yasm_expr_get_intnum(&realequ, 0));
+ yasm_expr_destroy(realequ);
+ map_print_intnum(info->intn, info);
+ fprintf(info->f, " %s\n", name);
+ } else if (yasm_symrec_get_label(sym, &precbc) &&
+ yasm_bc_get_section(precbc) == info->section) {
+ bin_section_data *bsd =
+ yasm_section_get_data(info->section, &bin_section_data_cb);
+
+ /* Real address */
+ yasm_intnum_set_uint(info->intn, yasm_bc_next_offset(precbc));
+ yasm_intnum_calc(info->intn, YASM_EXPR_ADD, bsd->istart);
+ map_print_intnum(info->intn, info);
+ fprintf(info->f, " ");
+
+ /* Virtual address */
+ yasm_intnum_set_uint(info->intn, yasm_bc_next_offset(precbc));
+ yasm_intnum_calc(info->intn, YASM_EXPR_ADD, bsd->ivstart);
+ map_print_intnum(info->intn, info);
+
+ /* Name */
+ fprintf(info->f, " %s\n", name);
+ }
+ yasm_xfree(name);
+ return 0;
+}
+
+static void
+map_sections_symbols(bin_groups *groups, map_output_info *info)
+{
+ bin_group *group;
+ TAILQ_FOREACH(group, groups, link) {
+ info->count = 0;
+ info->section = group->section;
+ yasm_symtab_traverse(info->object->symtab, info, map_symrec_count);
+
+ if (info->count > 0) {
+ const char *s = yasm_section_get_name(group->section);
+ size_t i;
+ fprintf(info->f, "---- Section %s ", s);
+ for (i=0; i<(65-strlen(s)); i++)
+ fputc('-', info->f);
+ fprintf(info->f, "\n\n%-*s%-*s%s\n",
+ info->bytes*2+2, "Real",
+ info->bytes*2+2, "Virtual",
+ "Name");
+ yasm_symtab_traverse(info->object->symtab, info,
+ map_symrec_output);
+ fprintf(info->f, "\n\n");
+ }
+
+ /* Recurse to loop through follow groups */
+ map_sections_symbols(&group->follow_groups, info);
+ }
+}
+
+static void
+output_map(bin_objfmt_output_info *info)
+{
+ yasm_objfmt_bin *objfmt_bin = (yasm_objfmt_bin *)info->object->objfmt;
+ FILE *f;
+ int i;
+ map_output_info mapinfo;
+
+ if (objfmt_bin->map_flags == NO_MAP)
+ return;
+
+ if (objfmt_bin->map_flags == MAP_NONE)
+ objfmt_bin->map_flags = MAP_BRIEF; /* default to brief */
+
+ if (!objfmt_bin->map_filename)
+ f = stdout; /* default to stdout */
+ else {
+ f = fopen(objfmt_bin->map_filename, "wt");
+ if (!f) {
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("unable to open map file `%s'"),
+ objfmt_bin->map_filename);
+ yasm_errwarn_propagate(info->errwarns, 0);
+ return;
+ }
+ }
+
+ mapinfo.object = info->object;
+ mapinfo.f = f;
+
+ /* Temporary intnum */
+ mapinfo.intn = info->tmp_intn;
+
+ /* Prescan all values to figure out what width we should make the output
+ * fields. Start with a minimum of 4.
+ */
+ mapinfo.bytes = 4;
+ while (!yasm_intnum_check_size(info->origin, mapinfo.bytes * 8, 0, 0))
+ mapinfo.bytes *= 2;
+ yasm_object_sections_traverse(info->object, &mapinfo, map_prescan_bytes);
+ mapinfo.buf = yasm_xmalloc(mapinfo.bytes);
+
+ fprintf(f, "\n- YASM Map file ");
+ for (i=0; i<63; i++)
+ fputc('-', f);
+ fprintf(f, "\n\nSource file: %s\n", info->object->src_filename);
+ fprintf(f, "Output file: %s\n\n", info->object->obj_filename);
+
+ fprintf(f, "-- Program origin ");
+ for (i=0; i<61; i++)
+ fputc('-', f);
+ fprintf(f, "\n\n");
+ map_print_intnum(info->origin, &mapinfo);
+ fprintf(f, "\n\n");
+
+ if (objfmt_bin->map_flags & MAP_BRIEF) {
+ fprintf(f, "-- Sections (summary) ");
+ for (i=0; i<57; i++)
+ fputc('-', f);
+ fprintf(f, "\n\n%-*s%-*s%-*s%-*s%-*s%-*s%s\n",
+ mapinfo.bytes*2+2, "Vstart",
+ mapinfo.bytes*2+2, "Vstop",
+ mapinfo.bytes*2+2, "Start",
+ mapinfo.bytes*2+2, "Stop",
+ mapinfo.bytes*2+2, "Length",
+ 10, "Class", "Name");
+
+ map_sections_summary(&info->lma_groups, &mapinfo);
+ fprintf(f, "\n");
+ }
+
+ if (objfmt_bin->map_flags & MAP_SECTIONS) {
+ fprintf(f, "-- Sections (detailed) ");
+ for (i=0; i<56; i++)
+ fputc('-', f);
+ fprintf(f, "\n\n");
+ map_sections_detail(&info->lma_groups, &mapinfo);
+ }
+
+ if (objfmt_bin->map_flags & MAP_SYMBOLS) {
+ fprintf(f, "-- Symbols ");
+ for (i=0; i<68; i++)
+ fputc('-', f);
+ fprintf(f, "\n\n");
+
+ /* We do two passes for EQU and each section; the first pass
+ * determines the byte width to use for the value and whether any
+ * symbols are present, the second pass actually outputs the text.
+ */
+
+ /* EQUs */
+ mapinfo.count = 0;
+ mapinfo.section = NULL;
+ yasm_symtab_traverse(info->object->symtab, &mapinfo, map_symrec_count);
+
+ if (mapinfo.count > 0) {
+ fprintf(f, "---- No Section ");
+ for (i=0; i<63; i++)
+ fputc('-', f);
+ fprintf(f, "\n\n%-*s%s\n", mapinfo.bytes*2+2, "Value", "Name");
+ yasm_symtab_traverse(info->object->symtab, &mapinfo,
+ map_symrec_output);
+ fprintf(f, "\n\n");
+ }
+
+ /* Other sections */
+ map_sections_symbols(&info->lma_groups, &mapinfo);
+ }
+
+ if (f != stdout)
+ fclose(f);
+
+ yasm_xfree(mapinfo.buf);
+}
+
+/* Check for LMA overlap using a simple N^2 algorithm. */
+static int
+check_lma_overlap(yasm_section *sect, /*@null@*/ void *d)
+{
+ bin_section_data *bsd, *bsd2;
+ yasm_section *other = (yasm_section *)d;
+ yasm_intnum *overlap;
+
+ if (!d)
+ return yasm_object_sections_traverse(yasm_section_get_object(sect),
+ sect, check_lma_overlap);
+ if (sect == other)
+ return 0;
+
+ bsd = yasm_section_get_data(sect, &bin_section_data_cb);
+ bsd2 = yasm_section_get_data(other, &bin_section_data_cb);
+
+ if (yasm_intnum_is_zero(bsd->length) ||
+ yasm_intnum_is_zero(bsd2->length))
+ return 0;
+
+ if (yasm_intnum_compare(bsd->istart, bsd2->istart) <= 0) {
+ overlap = yasm_intnum_copy(bsd->istart);
+ yasm_intnum_calc(overlap, YASM_EXPR_ADD, bsd->length);
+ yasm_intnum_calc(overlap, YASM_EXPR_SUB, bsd2->istart);
+ } else {
+ overlap = yasm_intnum_copy(bsd2->istart);
+ yasm_intnum_calc(overlap, YASM_EXPR_ADD, bsd2->length);
+ yasm_intnum_calc(overlap, YASM_EXPR_SUB, bsd->istart);
+ }
+
+ if (yasm_intnum_sign(overlap) > 0) {
+ yasm_error_set(YASM_ERROR_GENERAL,
+ N_("sections `%s' and `%s' overlap by %lu bytes"),
+ yasm_section_get_name(sect),
+ yasm_section_get_name(other),
+ yasm_intnum_get_uint(overlap));
+ yasm_intnum_destroy(overlap);
+ return -1;
+ }
+
+ yasm_intnum_destroy(overlap);
+ return 0;
+}
+
+static int
+bin_objfmt_output_value(yasm_value *value, unsigned char *buf,
+ unsigned int destsize,
+ /*@unused@*/ unsigned long offset, yasm_bytecode *bc,
+ int warn, /*@null@*/ void *d)
+{
+ /*@null@*/ bin_objfmt_output_info *info = (bin_objfmt_output_info *)d;
+ /*@dependent@*/ /*@null@*/ yasm_bytecode *precbc;
+ /*@dependent@*/ yasm_section *sect;
+
+ assert(info != NULL);
+
+ /* Binary objects we need to resolve against object, not against section. */
+ if (value->rel) {
+ unsigned int rshift = (unsigned int)value->rshift;
+ yasm_expr *syme;
+ /*@null@*/ const yasm_intnum *ssymval;
+
+ if (yasm_symrec_is_abs(value->rel)) {
+ syme = yasm_expr_create_ident(yasm_expr_int(
+ yasm_intnum_create_uint(0)), bc->line);
+ } else if (yasm_symrec_get_label(value->rel, &precbc)
+ && (sect = yasm_bc_get_section(precbc))) {
+ syme = yasm_expr_create_ident(yasm_expr_sym(value->rel), bc->line);
+ } else if ((ssymval = get_ssym_value(value->rel))) {
+ syme = yasm_expr_create_ident(yasm_expr_int(
+ yasm_intnum_copy(ssymval)), bc->line);
+ } else
+ goto done;
+
+ /* Handle PC-relative */
+ if (value->curpos_rel) {
+ yasm_expr *sube;
+ sube = yasm_expr_create(YASM_EXPR_SUB, yasm_expr_precbc(bc),
+ yasm_expr_int(yasm_intnum_create_uint(bc->len*bc->mult_int)),
+ bc->line);
+ syme = yasm_expr_create(YASM_EXPR_SUB, yasm_expr_expr(syme),
+ yasm_expr_expr(sube), bc->line);
+ value->curpos_rel = 0;
+ value->ip_rel = 0;
+ }
+
+ if (value->rshift > 0)
+ syme = yasm_expr_create(YASM_EXPR_SHR, yasm_expr_expr(syme),
+ yasm_expr_int(yasm_intnum_create_uint(rshift)), bc->line);
+
+ /* Add into absolute portion */
+ if (!value->abs)
+ value->abs = syme;
+ else
+ value->abs =
+ yasm_expr_create(YASM_EXPR_ADD, yasm_expr_expr(value->abs),
+ yasm_expr_expr(syme), bc->line);
+ value->rel = NULL;
+ value->rshift = 0;
+ }
+done:
+ /* Simplify absolute portion of value, transforming symrecs */
+ if (value->abs)
+ value->abs = yasm_expr__level_tree
+ (value->abs, 1, 1, 1, 0, bin_objfmt_expr_xform, NULL);
+
+ /* Output */
+ switch (yasm_value_output_basic(value, buf, destsize, bc, warn,
+ info->object->arch)) {
+ case -1:
+ return 1;
+ case 0:
+ break;
+ default:
+ return 0;
+ }
+
+ /* Couldn't output, assume it contains an external reference. */
+ yasm_error_set(YASM_ERROR_GENERAL,
+ N_("binary object format does not support external references"));
+ return 1;
+}
+
+static int
+bin_objfmt_output_bytecode(yasm_bytecode *bc, /*@null@*/ void *d)
+{
+ /*@null@*/ bin_objfmt_output_info *info = (bin_objfmt_output_info *)d;
+ /*@null@*/ /*@only@*/ unsigned char *bigbuf;
+ unsigned long size = REGULAR_OUTBUF_SIZE;
+ int gap;
+
+ assert(info != NULL);
+
+ bigbuf = yasm_bc_tobytes(bc, info->buf, &size, &gap, info,
+ bin_objfmt_output_value, NULL);
+
+ /* Don't bother doing anything else if size ended up being 0. */
+ if (size == 0) {
+ if (bigbuf)
+ yasm_xfree(bigbuf);
+ return 0;
+ }
+
+ /* Warn that gaps are converted to 0 and write out the 0's. */
+ if (gap) {
+ unsigned long left;
+ yasm_warn_set(YASM_WARN_UNINIT_CONTENTS,
+ N_("uninitialized space declared in code/data section: zeroing"));
+ /* Write out in chunks */
+ memset(info->buf, 0, REGULAR_OUTBUF_SIZE);
+ left = size;
+ while (left > REGULAR_OUTBUF_SIZE) {
+ fwrite(info->buf, REGULAR_OUTBUF_SIZE, 1, info->f);
+ left -= REGULAR_OUTBUF_SIZE;
+ }
+ fwrite(info->buf, left, 1, info->f);
+ } else {
+ /* Output buf (or bigbuf if non-NULL) to file */
+ fwrite(bigbuf ? bigbuf : info->buf, (size_t)size, 1, info->f);
+ }
+
+ /* If bigbuf was allocated, free it */
+ if (bigbuf)
+ yasm_xfree(bigbuf);
+
+ return 0;
+}
+
+/* Check to ensure bytecode is res* (for BSS sections) */
+static int
+bin_objfmt_no_output_bytecode(yasm_bytecode *bc, /*@null@*/ void *d)
+{
+ /*@null@*/ bin_objfmt_output_info *info = (bin_objfmt_output_info *)d;
+ /*@null@*/ /*@only@*/ unsigned char *bigbuf;
+ unsigned long size = REGULAR_OUTBUF_SIZE;
+ int gap;
+
+ assert(info != NULL);
+
+ bigbuf = yasm_bc_tobytes(bc, info->buf, &size, &gap, info,
+ bin_objfmt_output_value, NULL);
+
+ /* If bigbuf was allocated, free it */
+ if (bigbuf)
+ yasm_xfree(bigbuf);
+
+ /* Don't bother doing anything else if size ended up being 0. */
+ if (size == 0)
+ return 0;
+
+ /* Warn if not a gap. */
+ if (!gap) {
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("initialized space declared in nobits section: ignoring"));
+ }
+
+ return 0;
+}
+
+static int
+bin_objfmt_output_section(yasm_section *sect, /*@null@*/ void *d)
+{
+ bin_section_data *bsd = yasm_section_get_data(sect, &bin_section_data_cb);
+ /*@null@*/ bin_objfmt_output_info *info = (bin_objfmt_output_info *)d;
+
+ assert(bsd != NULL);
+ assert(info != NULL);
+
+ if (bsd->bss) {
+ yasm_section_bcs_traverse(sect, info->errwarns,
+ info, bin_objfmt_no_output_bytecode);
+ } else {
+ yasm_intnum_set(info->tmp_intn, bsd->istart);
+ yasm_intnum_calc(info->tmp_intn, YASM_EXPR_SUB, info->origin);
+ if (yasm_intnum_sign(info->tmp_intn) < 0) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("section `%s' starts before origin (ORG)"),
+ yasm_section_get_name(sect));
+ yasm_errwarn_propagate(info->errwarns, 0);
+ return 0;
+ }
+ if (!yasm_intnum_check_size(info->tmp_intn, sizeof(long)*8, 0, 1)) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("section `%s' start value too large"),
+ yasm_section_get_name(sect));
+ yasm_errwarn_propagate(info->errwarns, 0);
+ return 0;
+ }
+ if (fseek(info->f, yasm_intnum_get_int(info->tmp_intn) + info->start,
+ SEEK_SET) < 0)
+ yasm__fatal(N_("could not seek on output file"));
+ yasm_section_bcs_traverse(sect, info->errwarns,
+ info, bin_objfmt_output_bytecode);
+ }
+
+ return 0;
+}
+
+static void
+bin_objfmt_cleanup(bin_objfmt_output_info *info)
+{
+ bin_group *group, *group_temp;
+
+ yasm_xfree(info->buf);
+ yasm_intnum_destroy(info->origin);
+ yasm_intnum_destroy(info->tmp_intn);
+
+ TAILQ_FOREACH_SAFE(group, &info->lma_groups, link, group_temp)
+ bin_group_destroy(group);
+
+ TAILQ_FOREACH_SAFE(group, &info->vma_groups, link, group_temp)
+ bin_group_destroy(group);
+}
+
+static void
+bin_objfmt_output(yasm_object *object, FILE *f, /*@unused@*/ int all_syms,
+ yasm_errwarns *errwarns)
+{
+ yasm_objfmt_bin *objfmt_bin = (yasm_objfmt_bin *)object->objfmt;
+ bin_objfmt_output_info info;
+ bin_group *group, *lma_group, *vma_group, *group_temp;
+ yasm_intnum *start, *last, *vdelta;
+ bin_groups unsorted_groups, bss_groups;
+
+ info.start = ftell(f);
+
+ /* Set ORG to 0 unless otherwise specified */
+ if (objfmt_bin->org) {
+ info.origin = yasm_expr_get_intnum(&objfmt_bin->org, 0);
+ if (!info.origin) {
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("ORG expression is too complex"));
+ yasm_errwarn_propagate(errwarns, objfmt_bin->org->line);
+ return;
+ }
+ if (yasm_intnum_sign(info.origin) < 0) {
+ yasm_error_set(YASM_ERROR_VALUE, N_("ORG expression is negative"));
+ yasm_errwarn_propagate(errwarns, objfmt_bin->org->line);
+ return;
+ }
+ info.origin = yasm_intnum_copy(info.origin);
+ } else
+ info.origin = yasm_intnum_create_uint(0);
+
+ info.object = object;
+ info.errwarns = errwarns;
+ info.f = f;
+ info.buf = yasm_xmalloc(REGULAR_OUTBUF_SIZE);
+ info.tmp_intn = yasm_intnum_create_uint(0);
+ TAILQ_INIT(&info.lma_groups);
+ TAILQ_INIT(&info.vma_groups);
+
+ /* Check symbol table */
+ yasm_symtab_traverse(object->symtab, &info, bin_objfmt_check_sym);
+
+ /* Create section groups */
+ if (yasm_object_sections_traverse(object, &info, bin_lma_create_group)) {
+ bin_objfmt_cleanup(&info);
+ return; /* error detected */
+ }
+
+ /* Determine section order according to LMA.
+ * Sections can be ordered either by (priority):
+ * - follows
+ * - start
+ * - progbits/nobits setting
+ * - order in the input file
+ */
+
+ /* Look at each group with follows specified, and find the section
+ * that group is supposed to follow.
+ */
+ TAILQ_FOREACH_SAFE(lma_group, &info.lma_groups, link, group_temp) {
+ if (lma_group->bsd->follows) {
+ bin_group *found;
+ /* Need to find group containing section this section follows. */
+ found =
+ find_group_by_name(&info.lma_groups, lma_group->bsd->follows);
+ if (!found) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("section `%s' follows an invalid or unknown section `%s'"),
+ yasm_section_get_name(lma_group->section),
+ lma_group->bsd->follows);
+ yasm_errwarn_propagate(errwarns, 0);
+ bin_objfmt_cleanup(&info);
+ return;
+ }
+
+ /* Check for loops */
+ if (lma_group->section == found->section ||
+ find_group_by_section(&lma_group->follow_groups,
+ found->section)) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("follows loop between section `%s' and section `%s'"),
+ yasm_section_get_name(lma_group->section),
+ yasm_section_get_name(found->section));
+ yasm_errwarn_propagate(errwarns, 0);
+ bin_objfmt_cleanup(&info);
+ return;
+ }
+
+ /* Remove this section from main lma groups list */
+ TAILQ_REMOVE(&info.lma_groups, lma_group, link);
+ /* Add it after the section it's supposed to follow. */
+ TAILQ_INSERT_TAIL(&found->follow_groups, lma_group, link);
+ }
+ }
+
+ /* Sort the top-level groups according to their start address.
+ * Use Shell sort for ease of implementation.
+ * If no start address is specified for a section, don't change the order,
+ * and move BSS sections to a separate list so they can be moved to the
+ * end of the lma list after all other sections are sorted.
+ */
+ unsorted_groups = info.lma_groups; /* structure copy */
+ TAILQ_INIT(&info.lma_groups);
+ TAILQ_INIT(&bss_groups);
+ TAILQ_FOREACH_SAFE(lma_group, &unsorted_groups, link, group_temp) {
+ bin_group *before;
+
+ if (!lma_group->bsd->istart) {
+ if (lma_group->bsd->bss)
+ TAILQ_INSERT_TAIL(&bss_groups, lma_group, link);
+ else
+ TAILQ_INSERT_TAIL(&info.lma_groups, lma_group, link);
+ continue;
+ }
+
+ before = NULL;
+ TAILQ_FOREACH(group, &info.lma_groups, link) {
+ if (!group->bsd->istart)
+ continue;
+ if (yasm_intnum_compare(group->bsd->istart,
+ lma_group->bsd->istart) > 0) {
+ before = group;
+ break;
+ }
+ }
+ if (before)
+ TAILQ_INSERT_BEFORE(before, lma_group, link);
+ else
+ TAILQ_INSERT_TAIL(&info.lma_groups, lma_group, link);
+ }
+
+ /* Move the pure-BSS sections to the end of the LMA list. */
+ TAILQ_FOREACH_SAFE(group, &bss_groups, link, group_temp)
+ TAILQ_INSERT_TAIL(&info.lma_groups, group, link);
+ TAILQ_INIT(&bss_groups); /* For sanity */
+
+ /* Assign a LMA start address to every section.
+ * Also assign VMA=LMA unless otherwise specified.
+ *
+ * We need to assign VMA=LMA here (while walking the tree) for the case:
+ * sect1 start=0 (size=0x11)
+ * sect2 follows=sect1 valign=16 (size=0x104)
+ * sect3 follows=sect2 valign=16
+ * Where the valign of sect2 will result in a sect3 vaddr higher than a
+ * naive segment-by-segment interpretation (where sect3 and sect2 would
+ * have a VMA overlap).
+ *
+ * Algorithm for VMA=LMA setting:
+ * Start with delta=0.
+ * If there's no virtual attributes, we simply set VMA = LMA+delta.
+ * If there's only valign specified, we set VMA = aligned LMA, and add
+ * any new alignment difference to delta.
+ *
+ * We could do the LMA start and VMA=LMA steps in two separate steps,
+ * but it's easier to just recurse once.
+ */
+ start = yasm_intnum_copy(info.origin);
+ last = yasm_intnum_copy(info.origin);
+ vdelta = yasm_intnum_create_uint(0);
+ TAILQ_FOREACH(lma_group, &info.lma_groups, link) {
+ if (lma_group->bsd->istart)
+ yasm_intnum_set(start, lma_group->bsd->istart);
+ group_assign_start_recurse(lma_group, start, last, vdelta,
+ info.tmp_intn, errwarns);
+ yasm_intnum_set(start, last);
+ }
+ yasm_intnum_destroy(last);
+ yasm_intnum_destroy(vdelta);
+
+ /*
+ * Determine section order according to VMA
+ */
+
+ /* Create section groups */
+ if (yasm_object_sections_traverse(object, &info, bin_vma_create_group)) {
+ yasm_intnum_destroy(start);
+ bin_objfmt_cleanup(&info);
+ return; /* error detected */
+ }
+
+ /* Look at each group with vfollows specified, and find the section
+ * that group is supposed to follow.
+ */
+ TAILQ_FOREACH_SAFE(vma_group, &info.vma_groups, link, group_temp) {
+ if (vma_group->bsd->vfollows) {
+ bin_group *found;
+ /* Need to find group containing section this section follows. */
+ found = find_group_by_name(&info.vma_groups,
+ vma_group->bsd->vfollows);
+ if (!found) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("section `%s' vfollows an invalid or unknown section `%s'"),
+ yasm_section_get_name(vma_group->section),
+ vma_group->bsd->vfollows);
+ yasm_errwarn_propagate(errwarns, 0);
+ yasm_intnum_destroy(start);
+ bin_objfmt_cleanup(&info);
+ return;
+ }
+
+ /* Check for loops */
+ if (vma_group->section == found->section ||
+ find_group_by_section(&vma_group->follow_groups,
+ found->section)) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("vfollows loop between section `%s' and section `%s'"),
+ yasm_section_get_name(vma_group->section),
+ yasm_section_get_name(found->section));
+ yasm_errwarn_propagate(errwarns, 0);
+ bin_objfmt_cleanup(&info);
+ return;
+ }
+
+ /* Remove this section from main lma groups list */
+ TAILQ_REMOVE(&info.vma_groups, vma_group, link);
+ /* Add it after the section it's supposed to follow. */
+ TAILQ_INSERT_TAIL(&found->follow_groups, vma_group, link);
+ }
+ }
+
+ /* Due to the combination of steps above, we now know that all top-level
+ * groups have integer ivstart:
+ * Vstart Vfollows Valign Handled by
+ * No No No group_assign_start_recurse()
+ * No No Yes group_assign_start_recurse()
+ * No Yes - vfollows loop (above)
+ * Yes - - bin_lma_create_group()
+ */
+ TAILQ_FOREACH(vma_group, &info.vma_groups, link) {
+ yasm_intnum_set(start, vma_group->bsd->ivstart);
+ group_assign_vstart_recurse(vma_group, start, errwarns);
+ }
+
+ /* Output map file */
+ output_map(&info);
+
+ /* Ensure we don't have overlapping progbits LMAs.
+ * Use a dumb O(N^2) algorithm as the number of sections is essentially
+ * always low.
+ */
+ if (yasm_object_sections_traverse(object, NULL, check_lma_overlap)) {
+ yasm_errwarn_propagate(errwarns, 0);
+ yasm_intnum_destroy(start);
+ bin_objfmt_cleanup(&info);
+ return;
+ }
+
+ /* Output sections */
+ yasm_object_sections_traverse(object, &info, bin_objfmt_output_section);
+
+ /* Clean up */
+ yasm_intnum_destroy(start);
+ bin_objfmt_cleanup(&info);
+}
+
+static void
+bin_objfmt_destroy(yasm_objfmt *objfmt)
+{
+ yasm_objfmt_bin *objfmt_bin = (yasm_objfmt_bin *)objfmt;
+ if (objfmt_bin->map_filename)
+ yasm_xfree(objfmt_bin->map_filename);
+ yasm_expr_destroy(objfmt_bin->org);
+ yasm_xfree(objfmt);
+}
+
+static void
+define_section_symbol(yasm_symtab *symtab, yasm_section *sect,
+ const char *sectname, const char *suffix,
+ enum bin_ssym which, unsigned long line)
+{
+ yasm_symrec *sym;
+ bin_symrec_data *bsymd = yasm_xmalloc(sizeof(bin_symrec_data));
+ char *symname = yasm_xmalloc(8+strlen(sectname)+strlen(suffix)+1);
+
+ strcpy(symname, "section.");
+ strcat(symname, sectname);
+ strcat(symname, suffix);
+
+ bsymd->section = sect;
+ bsymd->which = which;
+
+ sym = yasm_symtab_declare(symtab, symname, YASM_SYM_EXTERN, line);
+ yasm_xfree(symname);
+ yasm_symrec_add_data(sym, &bin_symrec_data_cb, bsymd);
+}
+
+static void
+bin_objfmt_init_new_section(yasm_section *sect, unsigned long line)
+{
+ yasm_object *object = yasm_section_get_object(sect);
+ const char *sectname = yasm_section_get_name(sect);
+ /*yasm_objfmt_bin *objfmt_bin = (yasm_objfmt_bin *)object->objfmt;*/
+ bin_section_data *data;
+
+ data = yasm_xmalloc(sizeof(bin_section_data));
+ data->bss = 0;
+ data->align = NULL;
+ data->valign = NULL;
+ data->start = NULL;
+ data->vstart = NULL;
+ data->follows = NULL;
+ data->vfollows = NULL;
+ data->istart = NULL;
+ data->ivstart = NULL;
+ data->length = NULL;
+ yasm_section_add_data(sect, &bin_section_data_cb, data);
+
+ define_section_symbol(object->symtab, sect, sectname, ".start",
+ SSYM_START, line);
+ define_section_symbol(object->symtab, sect, sectname, ".vstart",
+ SSYM_VSTART, line);
+ define_section_symbol(object->symtab, sect, sectname, ".length",
+ SSYM_LENGTH, line);
+}
+
+static yasm_section *
+bin_objfmt_add_default_section(yasm_object *object)
+{
+ yasm_section *retval;
+ int isnew;
+
+ retval = yasm_object_get_general(object, ".text", 0, 1, 0, &isnew, 0);
+ if (isnew)
+ yasm_section_set_default(retval, 1);
+ return retval;
+}
+
+/* GAS-style flags */
+static int
+bin_helper_gasflags(void *obj, yasm_valparam *vp, unsigned long line, void *d,
+ /*@unused@*/ uintptr_t arg)
+{
+ /* TODO */
+ return 0;
+}
+
+static /*@observer@*/ /*@null@*/ yasm_section *
+bin_objfmt_section_switch(yasm_object *object, yasm_valparamhead *valparams,
+ /*@unused@*/ /*@null@*/
+ yasm_valparamhead *objext_valparams,
+ unsigned long line)
+{
+ yasm_valparam *vp;
+ yasm_section *retval;
+ int isnew;
+ int flags_override = 0;
+ const char *sectname;
+ bin_section_data *bsd = NULL;
+
+ struct bin_section_switch_data {
+ /*@only@*/ /*@null@*/ char *follows;
+ /*@only@*/ /*@null@*/ char *vfollows;
+ /*@only@*/ /*@null@*/ yasm_expr *start;
+ /*@only@*/ /*@null@*/ yasm_expr *vstart;
+ /*@only@*/ /*@null@*/ yasm_intnum *align;
+ /*@only@*/ /*@null@*/ yasm_intnum *valign;
+ unsigned long bss;
+ unsigned long code;
+ } data;
+
+ static const yasm_dir_help help[] = {
+ { "follows", 1, yasm_dir_helper_string,
+ offsetof(struct bin_section_switch_data, follows), 0 },
+ { "vfollows", 1, yasm_dir_helper_string,
+ offsetof(struct bin_section_switch_data, vfollows), 0 },
+ { "start", 1, yasm_dir_helper_expr,
+ offsetof(struct bin_section_switch_data, start), 0 },
+ { "vstart", 1, yasm_dir_helper_expr,
+ offsetof(struct bin_section_switch_data, vstart), 0 },
+ { "align", 1, yasm_dir_helper_intn,
+ offsetof(struct bin_section_switch_data, align), 0 },
+ { "valign", 1, yasm_dir_helper_intn,
+ offsetof(struct bin_section_switch_data, valign), 0 },
+ { "nobits", 0, yasm_dir_helper_flag_set,
+ offsetof(struct bin_section_switch_data, bss), 1 },
+ { "progbits", 0, yasm_dir_helper_flag_set,
+ offsetof(struct bin_section_switch_data, bss), 0 },
+ { "code", 0, yasm_dir_helper_flag_set,
+ offsetof(struct bin_section_switch_data, code), 1 },
+ { "data", 0, yasm_dir_helper_flag_set,
+ offsetof(struct bin_section_switch_data, code), 0 },
+ { "execute", 0, yasm_dir_helper_flag_set,
+ offsetof(struct bin_section_switch_data, code), 1 },
+ { "noexecute", 0, yasm_dir_helper_flag_set,
+ offsetof(struct bin_section_switch_data, code), 0 },
+ { "gasflags", 1, bin_helper_gasflags, 0, 0 }
+ };
+
+ vp = yasm_vps_first(valparams);
+ sectname = yasm_vp_string(vp);
+ if (!sectname)
+ return NULL;
+ vp = yasm_vps_next(vp);
+
+ retval = yasm_object_find_general(object, sectname);
+ if (retval) {
+ bsd = yasm_section_get_data(retval, &bin_section_data_cb);
+ assert(bsd != NULL);
+ data.follows = bsd->follows;
+ data.vfollows = bsd->vfollows;
+ data.start = bsd->start;
+ data.vstart = bsd->vstart;
+ data.align = NULL;
+ data.valign = NULL;
+ data.bss = bsd->bss;
+ data.code = yasm_section_is_code(retval);
+ } else {
+ data.follows = NULL;
+ data.vfollows = NULL;
+ data.start = NULL;
+ data.vstart = NULL;
+ data.align = NULL;
+ data.valign = NULL;
+ data.bss = strcmp(sectname, ".bss") == 0;
+ data.code = strcmp(sectname, ".text") == 0;
+ }
+
+ flags_override = yasm_dir_helper(object, vp, line, help, NELEMS(help),
+ &data, yasm_dir_helper_valparam_warn);
+ if (flags_override < 0)
+ return NULL; /* error occurred */
+
+ if (data.start && data.follows) {
+ yasm_error_set(YASM_ERROR_GENERAL,
+ N_("cannot combine `start' and `follows' section attributes"));
+ return NULL;
+ }
+
+ if (data.vstart && data.vfollows) {
+ yasm_error_set(YASM_ERROR_GENERAL,
+ N_("cannot combine `vstart' and `vfollows' section attributes"));
+ return NULL;
+ }
+
+ if (data.align) {
+ unsigned long align = yasm_intnum_get_uint(data.align);
+
+ /* Alignments must be a power of two. */
+ if (!is_exp2(align)) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("argument to `%s' is not a power of two"),
+ "align");
+ return NULL;
+ }
+ } else
+ data.align = bsd ? bsd->align : NULL;
+
+ if (data.valign) {
+ unsigned long valign = yasm_intnum_get_uint(data.valign);
+
+ /* Alignments must be a power of two. */
+ if (!is_exp2(valign)) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("argument to `%s' is not a power of two"),
+ "valign");
+ return NULL;
+ }
+ } else
+ data.valign = bsd ? bsd->valign : NULL;
+
+ retval = yasm_object_get_general(object, sectname, 0, (int)data.code,
+ (int)data.bss, &isnew, line);
+
+ bsd = yasm_section_get_data(retval, &bin_section_data_cb);
+
+ if (isnew || yasm_section_is_default(retval)) {
+ yasm_section_set_default(retval, 0);
+ }
+
+ /* Update section flags */
+ bsd->bss = data.bss;
+ bsd->align = data.align;
+ bsd->valign = data.valign;
+ bsd->start = data.start;
+ bsd->vstart = data.vstart;
+ bsd->follows = data.follows;
+ bsd->vfollows = data.vfollows;
+
+ return retval;
+}
+
+static /*@observer@*/ /*@null@*/ yasm_symrec *
+bin_objfmt_get_special_sym(yasm_object *object, const char *name,
+ const char *parser)
+{
+ return NULL;
+}
+
+static void
+bin_objfmt_dir_org(yasm_object *object,
+ /*@null@*/ yasm_valparamhead *valparams,
+ /*@unused@*/ /*@null@*/
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_objfmt_bin *objfmt_bin = (yasm_objfmt_bin *)object->objfmt;
+ yasm_valparam *vp;
+
+ /* We only allow a single ORG in a program. */
+ if (objfmt_bin->org) {
+ yasm_error_set(YASM_ERROR_GENERAL, N_("program origin redefined"));
+ return;
+ }
+
+ /* ORG takes just a simple expression as param */
+ vp = yasm_vps_first(valparams);
+ objfmt_bin->org = yasm_vp_expr(vp, object->symtab, line);
+ if (!objfmt_bin->org) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("argument to ORG must be expression"));
+ return;
+ }
+}
+
+struct bin_dir_map_data {
+ unsigned long flags;
+ /*@only@*/ /*@null@*/ char *filename;
+};
+
+static int
+dir_map_filename(void *obj, yasm_valparam *vp, unsigned long line, void *data)
+{
+ struct bin_dir_map_data *mdata = (struct bin_dir_map_data *)data;
+ const char *filename;
+
+ if (mdata->filename) {
+ yasm_warn_set(YASM_WARN_GENERAL, N_("map file already specified"));
+ return 0;
+ }
+
+ filename = yasm_vp_string(vp);
+ if (!filename) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("unexpected expression in [map]"));
+ return -1;
+ }
+ mdata->filename = yasm__xstrdup(filename);
+
+ return 1;
+}
+
+static void
+bin_objfmt_dir_map(yasm_object *object,
+ /*@null@*/ yasm_valparamhead *valparams,
+ /*@unused@*/ /*@null@*/
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_objfmt_bin *objfmt_bin = (yasm_objfmt_bin *)object->objfmt;
+
+ struct bin_dir_map_data data;
+
+ static const yasm_dir_help help[] = {
+ { "all", 0, yasm_dir_helper_flag_or,
+ offsetof(struct bin_dir_map_data, flags),
+ MAP_BRIEF|MAP_SECTIONS|MAP_SYMBOLS },
+ { "brief", 0, yasm_dir_helper_flag_or,
+ offsetof(struct bin_dir_map_data, flags), MAP_BRIEF },
+ { "sections", 0, yasm_dir_helper_flag_or,
+ offsetof(struct bin_dir_map_data, flags), MAP_SECTIONS },
+ { "segments", 0, yasm_dir_helper_flag_or,
+ offsetof(struct bin_dir_map_data, flags), MAP_SECTIONS },
+ { "symbols", 0, yasm_dir_helper_flag_or,
+ offsetof(struct bin_dir_map_data, flags), MAP_SYMBOLS }
+ };
+
+ data.flags = objfmt_bin->map_flags | MAP_NONE;
+ data.filename = objfmt_bin->map_filename;
+
+ if (valparams && yasm_dir_helper(object, yasm_vps_first(valparams), line, help,
+ NELEMS(help), &data, dir_map_filename) < 0)
+ return; /* error occurred */
+
+ objfmt_bin->map_flags = data.flags;
+ objfmt_bin->map_filename = data.filename;
+}
+
+static void
+bin_section_data_destroy(void *data)
+{
+ bin_section_data *bsd = (bin_section_data *)data;
+ if (bsd->start)
+ yasm_expr_destroy(bsd->start);
+ if (bsd->vstart)
+ yasm_expr_destroy(bsd->vstart);
+ if (bsd->follows)
+ yasm_xfree(bsd->follows);
+ if (bsd->vfollows)
+ yasm_xfree(bsd->vfollows);
+ if (bsd->istart)
+ yasm_intnum_destroy(bsd->istart);
+ if (bsd->ivstart)
+ yasm_intnum_destroy(bsd->ivstart);
+ if (bsd->length)
+ yasm_intnum_destroy(bsd->length);
+ yasm_xfree(data);
+}
+
+static void
+bin_section_data_print(void *data, FILE *f, int indent_level)
+{
+ bin_section_data *bsd = (bin_section_data *)data;
+
+ fprintf(f, "%*sbss=%d\n", indent_level, "", bsd->bss);
+
+ fprintf(f, "%*salign=", indent_level, "");
+ if (bsd->align)
+ yasm_intnum_print(bsd->align, f);
+ else
+ fprintf(f, "(nil)");
+ fprintf(f, "\n%*svalign=", indent_level, "");
+ if (bsd->valign)
+ yasm_intnum_print(bsd->valign, f);
+ else
+ fprintf(f, "(nil)");
+
+ fprintf(f, "\n%*sstart=", indent_level, "");
+ yasm_expr_print(bsd->start, f);
+ fprintf(f, "\n%*svstart=", indent_level, "");
+ yasm_expr_print(bsd->vstart, f);
+
+ fprintf(f, "\n%*sfollows=", indent_level, "");
+ if (bsd->follows)
+ fprintf(f, "\"%s\"", bsd->follows);
+ else
+ fprintf(f, "(nil)");
+ fprintf(f, "\n%*svfollows=", indent_level, "");
+ if (bsd->vfollows)
+ fprintf(f, "\"%s\"", bsd->vfollows);
+ else
+ fprintf(f, "(nil)");
+
+ fprintf(f, "\n%*sistart=", indent_level, "");
+ if (bsd->istart)
+ yasm_intnum_print(bsd->istart, f);
+ else
+ fprintf(f, "(nil)");
+ fprintf(f, "\n%*sivstart=", indent_level, "");
+ if (bsd->ivstart)
+ yasm_intnum_print(bsd->ivstart, f);
+ else
+ fprintf(f, "(nil)");
+
+ fprintf(f, "\n%*slength=", indent_level, "");
+ if (bsd->length)
+ yasm_intnum_print(bsd->length, f);
+ else
+ fprintf(f, "(nil)");
+ fprintf(f, "\n");
+}
+
+static void
+bin_symrec_data_destroy(void *data)
+{
+ yasm_xfree(data);
+}
+
+static void
+bin_symrec_data_print(void *data, FILE *f, int indent_level)
+{
+ bin_symrec_data *bsymd = (bin_symrec_data *)data;
+
+ fprintf(f, "%*ssection=\"%s\"\n", indent_level, "",
+ yasm_section_get_name(bsymd->section));
+ fprintf(f, "%*swhich=", indent_level, "");
+ switch (bsymd->which) {
+ case SSYM_START: fprintf(f, "START"); break;
+ case SSYM_VSTART: fprintf(f, "VSTART"); break;
+ case SSYM_LENGTH: fprintf(f, "LENGTH"); break;
+ }
+ fprintf(f, "\n");
+}
+
+
+/* Define valid debug formats to use with this object format */
+static const char *bin_objfmt_dbgfmt_keywords[] = {
+ "null",
+ NULL
+};
+
+static const yasm_directive bin_objfmt_directives[] = {
+ { "org", "nasm", bin_objfmt_dir_org, YASM_DIR_ARG_REQUIRED },
+ { "map", "nasm", bin_objfmt_dir_map, YASM_DIR_ANY },
+ { NULL, NULL, NULL, 0 }
+};
+
+static const char *bin_nasm_stdmac[] = {
+ "%imacro org 1+.nolist",
+ "[org %1]",
+ "%endmacro",
+ NULL
+};
+
+static const yasm_stdmac bin_objfmt_stdmacs[] = {
+ { "nasm", "nasm", bin_nasm_stdmac },
+ { "tasm", "tasm", bin_nasm_stdmac },
+ { NULL, NULL, NULL }
+};
+
+/* Define objfmt structure -- see objfmt.h for details */
+yasm_objfmt_module yasm_bin_LTX_objfmt = {
+ "Flat format binary",
+ "bin",
+ NULL,
+ 16,
+ 0,
+ bin_objfmt_dbgfmt_keywords,
+ "null",
+ bin_objfmt_directives,
+ bin_objfmt_stdmacs,
+ bin_objfmt_create,
+ bin_objfmt_output,
+ bin_objfmt_destroy,
+ bin_objfmt_add_default_section,
+ bin_objfmt_init_new_section,
+ bin_objfmt_section_switch,
+ bin_objfmt_get_special_sym
+};
+
+#define EXE_HEADER_SIZE 0x200
+
+/* DOS .EXE binaries are just raw binaries with a header */
+yasm_objfmt_module yasm_dosexe_LTX_objfmt;
+
+static yasm_objfmt *
+dosexe_objfmt_create(yasm_object *object)
+{
+ yasm_objfmt_bin *objfmt_bin = (yasm_objfmt_bin *) bin_objfmt_create(object);
+ objfmt_bin->objfmt.module = &yasm_dosexe_LTX_objfmt;
+ return (yasm_objfmt *)objfmt_bin;
+}
+
+static unsigned long
+get_sym(yasm_object *object, const char *name) {
+ yasm_symrec *symrec = yasm_symtab_get(object->symtab, name);
+ yasm_bytecode *prevbc;
+ if (!symrec)
+ return 0;
+ if (!yasm_symrec_get_label(symrec, &prevbc))
+ return 0;
+ return prevbc->offset + prevbc->len;
+}
+
+static void
+dosexe_objfmt_output(yasm_object *object, FILE *f, /*@unused@*/ int all_syms,
+ yasm_errwarns *errwarns)
+{
+ unsigned long tot_size, size, bss_size;
+ unsigned long start, bss;
+ unsigned char c;
+
+ fseek(f, EXE_HEADER_SIZE, SEEK_SET);
+
+ bin_objfmt_output(object, f, all_syms, errwarns);
+
+ tot_size = ftell(f);
+
+ /* if there is a __bss_start symbol, data after it is 0, no need to write
+ * it. */
+ bss = get_sym(object, "__bss_start");
+ if (bss)
+ size = bss;
+ else
+ size = tot_size;
+ bss_size = tot_size - size;
+#ifdef HAVE_FTRUNCATE
+ if (size != tot_size)
+ ftruncate(fileno(f), EXE_HEADER_SIZE + size);
+#endif
+ fseek(f, 0, SEEK_SET);
+
+ /* magic */
+ fwrite("MZ", 1, 2, f);
+
+ /* file size */
+ c = size & 0xff;
+ fwrite(&c, 1, 1, f);
+ c = !!(size & 0x100);
+ fwrite(&c, 1, 1, f);
+ c = ((size + 511) >> 9) & 0xff;
+ fwrite(&c, 1, 1, f);
+ c = ((size + 511) >> 17) & 0xff;
+ fwrite(&c, 1, 1, f);
+
+ /* relocation # */
+ c = 0;
+ fwrite(&c, 1, 1, f);
+ fwrite(&c, 1, 1, f);
+
+ /* header size */
+ c = EXE_HEADER_SIZE / 16;
+ fwrite(&c, 1, 1, f);
+ c = 0;
+ fwrite(&c, 1, 1, f);
+
+ /* minimum paragraph # */
+ bss_size = (bss_size + 15) >> 4;
+ c = bss_size & 0xff;
+ fwrite(&c, 1, 1, f);
+ c = (bss_size >> 8) & 0xff;
+ fwrite(&c, 1, 1, f);
+
+ /* maximum paragraph # */
+ c = 0xFF;
+ fwrite(&c, 1, 1, f);
+ fwrite(&c, 1, 1, f);
+
+ /* relative value of stack segment */
+ c = 0;
+ fwrite(&c, 1, 1, f);
+ fwrite(&c, 1, 1, f);
+
+ /* SP at start */
+ c = 0;
+ fwrite(&c, 1, 1, f);
+ fwrite(&c, 1, 1, f);
+
+ /* header checksum */
+ c = 0;
+ fwrite(&c, 1, 1, f);
+ fwrite(&c, 1, 1, f);
+
+ /* IP at start */
+ start = get_sym(object, "start");
+ if (!start) {
+ yasm_error_set(YASM_ERROR_GENERAL,
+ N_("%s: could not find symbol `start'"));
+ return;
+ }
+ c = start & 0xff;
+ fwrite(&c, 1, 1, f);
+ c = (start >> 8) & 0xff;
+ fwrite(&c, 1, 1, f);
+
+ /* CS start */
+ c = 0;
+ fwrite(&c, 1, 1, f);
+ fwrite(&c, 1, 1, f);
+
+ /* reloc start */
+ c = 0x22;
+ fwrite(&c, 1, 1, f);
+ c = 0;
+ fwrite(&c, 1, 1, f);
+
+ /* Overlay number */
+ c = 0;
+ fwrite(&c, 1, 1, f);
+ fwrite(&c, 1, 1, f);
+}
+
+
+/* Define objfmt structure -- see objfmt.h for details */
+yasm_objfmt_module yasm_dosexe_LTX_objfmt = {
+ "DOS .EXE format binary",
+ "dosexe",
+ "exe",
+ 16,
+ 0,
+ bin_objfmt_dbgfmt_keywords,
+ "null",
+ bin_objfmt_directives,
+ bin_objfmt_stdmacs,
+ dosexe_objfmt_create,
+ dosexe_objfmt_output,
+ bin_objfmt_destroy,
+ bin_objfmt_add_default_section,
+ bin_objfmt_init_new_section,
+ bin_objfmt_section_switch,
+ bin_objfmt_get_special_sym
+};
diff --git a/contrib/tools/yasm/modules/objfmts/coff/coff-objfmt.c b/contrib/tools/yasm/modules/objfmts/coff/coff-objfmt.c
index 80d9567e05..388b09af32 100644
--- a/contrib/tools/yasm/modules/objfmts/coff/coff-objfmt.c
+++ b/contrib/tools/yasm/modules/objfmts/coff/coff-objfmt.c
@@ -1,2522 +1,2522 @@
-/*
- * COFF (DJGPP) object format
- *
- * Copyright (C) 2002-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-#include <time.h>
-
-#include <libyasm.h>
-
-#include "coff-objfmt.h"
-
-
-#define REGULAR_OUTBUF_SIZE 1024
-
-/* Defining this to 0 sets all section VMA's to 0 rather than as the same as
- * the LMA. According to the DJGPP COFF Spec, this should be set to 1
- * (VMA=LMA), and indeed DJGPP's GCC output shows VMA=LMA. However, NASM
- * outputs VMA=0 (as if this was 0), and GNU objdump output looks a lot nicer
- * with VMA=0. Who's right? This is #defined as changing this setting affects
- * several places in the code.
- */
-#define COFF_SET_VMA (!objfmt_coff->win32)
-
-#define COFF_MACHINE_I386 0x014C
-#define COFF_MACHINE_AMD64 0x8664
-
-#define COFF_F_LNNO 0x0004 /* line number info NOT present */
-#define COFF_F_LSYMS 0x0008 /* local symbols NOT present */
-#define COFF_F_AR32WR 0x0100 /* 32-bit little endian file */
-
-typedef struct coff_reloc {
- yasm_reloc reloc;
- enum {
- COFF_RELOC_ABSOLUTE = 0, /* absolute, no reloc needed */
-
- /* I386 relocations */
- COFF_RELOC_I386_ADDR16 = 0x1, /* 16-bit absolute reference */
- COFF_RELOC_I386_REL16 = 0x2, /* 16-bit PC-relative reference */
- COFF_RELOC_I386_ADDR32 = 0x6, /* 32-bit absolute reference */
- COFF_RELOC_I386_ADDR32NB = 0x7, /* 32-bit absolute ref w/o base */
- COFF_RELOC_I386_SEG12 = 0x9, /* 16-bit absolute segment ref */
- COFF_RELOC_I386_SECTION = 0xA, /* section index */
- COFF_RELOC_I386_SECREL = 0xB, /* offset from start of segment */
- COFF_RELOC_I386_TOKEN = 0xC, /* CLR metadata token */
- COFF_RELOC_I386_SECREL7 = 0xD, /* 7-bit offset from base of sect */
- COFF_RELOC_I386_REL32 = 0x14, /* 32-bit PC-relative reference */
-
- /* AMD64 relocations */
- COFF_RELOC_AMD64_ADDR64 = 0x1, /* 64-bit address (VA) */
- COFF_RELOC_AMD64_ADDR32 = 0x2, /* 32-bit address (VA) */
- COFF_RELOC_AMD64_ADDR32NB = 0x3, /* 32-bit address w/o base (RVA) */
- COFF_RELOC_AMD64_REL32 = 0x4, /* 32-bit relative (0 byte dist) */
- COFF_RELOC_AMD64_REL32_1 = 0x5, /* 32-bit relative (1 byte dist) */
- COFF_RELOC_AMD64_REL32_2 = 0x6, /* 32-bit relative (2 byte dist) */
- COFF_RELOC_AMD64_REL32_3 = 0x7, /* 32-bit relative (3 byte dist) */
- COFF_RELOC_AMD64_REL32_4 = 0x8, /* 32-bit relative (4 byte dist) */
- COFF_RELOC_AMD64_REL32_5 = 0x9, /* 32-bit relative (5 byte dist) */
- COFF_RELOC_AMD64_SECTION = 0xA, /* section index */
- COFF_RELOC_AMD64_SECREL = 0xB, /* 32-bit offset from base of sect */
- COFF_RELOC_AMD64_SECREL7 = 0xC, /* 7-bit offset from base of sect */
- COFF_RELOC_AMD64_TOKEN = 0xD /* CLR metadata token */
- } type; /* type of relocation */
-} coff_reloc;
-
-#define COFF_STYP_TEXT 0x00000020UL
-#define COFF_STYP_DATA 0x00000040UL
-#define COFF_STYP_BSS 0x00000080UL
-#define COFF_STYP_INFO 0x00000200UL
-#define COFF_STYP_STD_MASK 0x000003FFUL
-#define COFF_STYP_ALIGN_MASK 0x00F00000UL
-#define COFF_STYP_ALIGN_SHIFT 20
-#define COFF_STYP_NRELOC_OVFL 0x01000000UL
-#define COFF_STYP_DISCARD 0x02000000UL
-#define COFF_STYP_NOCACHE 0x04000000UL
-#define COFF_STYP_NOPAGE 0x08000000UL
-#define COFF_STYP_SHARED 0x10000000UL
-#define COFF_STYP_EXECUTE 0x20000000UL
-#define COFF_STYP_READ 0x40000000UL
-#define COFF_STYP_WRITE 0x80000000UL
-#define COFF_STYP_WIN32_MASK 0xFF000000UL
-
-#define COFF_FLAG_NOBASE (1UL<<0) /* Use no-base (NB) relocs */
-
-typedef struct coff_section_data {
- /*@dependent@*/ yasm_symrec *sym; /* symbol created for this section */
- unsigned int scnum; /* section number (1=first section) */
- unsigned long flags; /* section flags (see COFF_STYP_* above) */
- unsigned long addr; /* starting memory address (first section -> 0) */
- unsigned long scnptr; /* file ptr to raw data */
- unsigned long size; /* size of raw data (section data) in bytes */
- unsigned long relptr; /* file ptr to relocation */
- unsigned long nreloc; /* number of relocation entries >64k -> error */
- unsigned long flags2; /* internal flags (see COFF_FLAG_* above) */
- unsigned long strtab_name; /* strtab offset of name if name > 8 chars */
- int isdebug; /* is a debug section? */
-} coff_section_data;
-
-typedef enum coff_symrec_sclass {
- COFF_SCL_EFCN = 0xff, /* physical end of function */
- COFF_SCL_NULL = 0,
- COFF_SCL_AUTO = 1, /* automatic variable */
- COFF_SCL_EXT = 2, /* external symbol */
- COFF_SCL_STAT = 3, /* static */
- COFF_SCL_REG = 4, /* register variable */
- COFF_SCL_EXTDEF = 5, /* external definition */
- COFF_SCL_LABEL = 6, /* label */
- COFF_SCL_ULABEL = 7, /* undefined label */
- COFF_SCL_MOS = 8, /* member of structure */
- COFF_SCL_ARG = 9, /* function argument */
- COFF_SCL_STRTAG = 10, /* structure tag */
- COFF_SCL_MOU = 11, /* member of union */
- COFF_SCL_UNTAG = 12, /* union tag */
- COFF_SCL_TPDEF = 13, /* type definition */
- COFF_SCL_USTATIC = 14, /* undefined static */
- COFF_SCL_ENTAG = 15, /* enumeration tag */
- COFF_SCL_MOE = 16, /* member of enumeration */
- COFF_SCL_REGPARM = 17, /* register parameter */
- COFF_SCL_FIELD = 18, /* bit field */
- COFF_SCL_AUTOARG = 19, /* auto argument */
- COFF_SCL_LASTENT = 20, /* dummy entry (end of block) */
- COFF_SCL_BLOCK = 100, /* ".bb" or ".eb" */
- COFF_SCL_FCN = 101, /* ".bf" or ".ef" */
- COFF_SCL_EOS = 102, /* end of structure */
- COFF_SCL_FILE = 103, /* file name */
- COFF_SCL_LINE = 104, /* line # reformatted as symbol table entry */
- COFF_SCL_ALIAS = 105, /* duplicate tag */
- COFF_SCL_HIDDEN = 106 /* ext symbol in dmert public lib */
-} coff_symrec_sclass;
-
-typedef union coff_symtab_auxent {
- /* no data needed for section symbol auxent, all info avail from sym */
- /*@owned@*/ char *fname; /* filename aux entry */
-} coff_symtab_auxent;
-
-typedef enum coff_symtab_auxtype {
- COFF_SYMTAB_AUX_NONE = 0,
- COFF_SYMTAB_AUX_SECT,
- COFF_SYMTAB_AUX_FILE
-} coff_symtab_auxtype;
-
-typedef struct coff_symrec_data {
- int forcevis; /* force visibility in symbol table */
- unsigned long index; /* assigned COFF symbol table index */
- unsigned int type; /* type */
- coff_symrec_sclass sclass; /* storage class */
-
- int numaux; /* number of auxiliary entries */
- coff_symtab_auxtype auxtype; /* type of aux entries */
- coff_symtab_auxent aux[1]; /* actually may be any size (including 0) */
-} coff_symrec_data;
-
-typedef struct yasm_objfmt_coff {
- yasm_objfmt_base objfmt; /* base structure */
-
- unsigned int parse_scnum; /* sect numbering in parser */
- int win32; /* nonzero for win32/64 output */
- int win64; /* nonzero for win64 output */
-
- unsigned int machine; /* COFF machine to use */
-
- coff_symrec_data *filesym_data; /* Data for .file symbol */
-
- /* data for .def/.endef and related directives */
- coff_symrec_data *def_sym; /* symbol specified by .def */
-
- /* data for win64 proc_frame and related directives */
- unsigned long proc_frame; /* Line number of start of proc, or 0 */
- unsigned long done_prolog; /* Line number of end of prologue, or 0 */
- /*@null@*/ coff_unwind_info *unwind; /* Unwind info */
-
- yasm_symrec *ssym_imagebase; /* ..imagebase symbol for win64 */
-} yasm_objfmt_coff;
-
-typedef struct coff_objfmt_output_info {
- yasm_object *object;
- yasm_objfmt_coff *objfmt_coff;
- yasm_errwarns *errwarns;
- /*@dependent@*/ FILE *f;
- /*@only@*/ unsigned char *buf;
- yasm_section *sect;
- /*@dependent@*/ coff_section_data *csd;
- unsigned long addr; /* start of next section */
-
- unsigned long indx; /* current symbol index */
- int all_syms; /* outputting all symbols? */
- unsigned long strtab_offset; /* current string table offset */
-} coff_objfmt_output_info;
-
-static void coff_section_data_destroy(/*@only@*/ void *d);
-static void coff_section_data_print(void *data, FILE *f, int indent_level);
-
-static const yasm_assoc_data_callback coff_section_data_cb = {
- coff_section_data_destroy,
- coff_section_data_print
-};
-
-static void coff_symrec_data_destroy(/*@only@*/ void *d);
-static void coff_symrec_data_print(void *data, FILE *f, int indent_level);
-
-static const yasm_assoc_data_callback coff_symrec_data_cb = {
- coff_symrec_data_destroy,
- coff_symrec_data_print
-};
-
-/* Bytecode callback function prototypes */
-static void win32_sxdata_bc_destroy(void *contents);
-static void win32_sxdata_bc_print(const void *contents, FILE *f,
- int indent_level);
-static int win32_sxdata_bc_calc_len
- (yasm_bytecode *bc, yasm_bc_add_span_func add_span, void *add_span_data);
-static int win32_sxdata_bc_tobytes
- (yasm_bytecode *bc, unsigned char **bufp, unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- /*@null@*/ yasm_output_reloc_func output_reloc);
-
-/* Bytecode callback structures */
-static const yasm_bytecode_callback win32_sxdata_bc_callback = {
- win32_sxdata_bc_destroy,
- win32_sxdata_bc_print,
- yasm_bc_finalize_common,
- NULL,
- win32_sxdata_bc_calc_len,
- yasm_bc_expand_common,
- win32_sxdata_bc_tobytes,
- 0
-};
-
-yasm_objfmt_module yasm_coff_LTX_objfmt;
-yasm_objfmt_module yasm_win32_LTX_objfmt;
-yasm_objfmt_module yasm_win64_LTX_objfmt;
-
-
-static /*@dependent@*/ coff_symrec_data *
-coff_objfmt_sym_set_data(yasm_symrec *sym, coff_symrec_sclass sclass,
- int numaux, coff_symtab_auxtype auxtype)
-{
- coff_symrec_data *sym_data;
-
- sym_data = yasm_xmalloc(sizeof(coff_symrec_data) +
- (numaux-1)*sizeof(coff_symtab_auxent));
- sym_data->forcevis = 0;
- sym_data->index = 0;
- sym_data->type = 0;
- sym_data->sclass = sclass;
- sym_data->numaux = numaux;
- sym_data->auxtype = auxtype;
-
- yasm_symrec_add_data(sym, &coff_symrec_data_cb, sym_data);
-
- return sym_data;
-}
-
-static yasm_objfmt_coff *
-coff_common_create(yasm_object *object)
-{
- yasm_objfmt_coff *objfmt_coff = yasm_xmalloc(sizeof(yasm_objfmt_coff));
- yasm_symrec *filesym;
-
- /* Only support x86 arch */
- if (yasm__strcasecmp(yasm_arch_keyword(object->arch), "x86") != 0) {
- yasm_xfree(objfmt_coff);
- return NULL;
- }
-
- objfmt_coff->parse_scnum = 1; /* section numbering starts at 1 */
-
- /* FIXME: misuse of NULL bytecode here; it works, but only barely. */
- filesym = yasm_symtab_define_special(object->symtab, ".file",
- YASM_SYM_GLOBAL);
- objfmt_coff->filesym_data =
- coff_objfmt_sym_set_data(filesym, COFF_SCL_FILE, 1,
- COFF_SYMTAB_AUX_FILE);
- /* Filename is set in coff_objfmt_output */
- objfmt_coff->filesym_data->aux[0].fname = NULL;
-
- objfmt_coff->proc_frame = 0;
- objfmt_coff->done_prolog = 0;
- objfmt_coff->unwind = NULL;
- objfmt_coff->ssym_imagebase = NULL;
-
- return objfmt_coff;
-}
-
-static yasm_objfmt *
-coff_objfmt_create(yasm_object *object)
-{
- yasm_objfmt_coff *objfmt_coff = coff_common_create(object);
-
- if (objfmt_coff) {
- /* Support x86 and amd64 machines of x86 arch */
- if (yasm__strcasecmp(yasm_arch_get_machine(object->arch), "x86") == 0)
- objfmt_coff->machine = COFF_MACHINE_I386;
- else if (yasm__strcasecmp(yasm_arch_get_machine(object->arch),
- "amd64") == 0)
- objfmt_coff->machine = COFF_MACHINE_AMD64;
- else {
- yasm_xfree(objfmt_coff);
- return NULL;
- }
-
- objfmt_coff->objfmt.module = &yasm_coff_LTX_objfmt;
- objfmt_coff->win32 = 0;
- objfmt_coff->win64 = 0;
- }
- return (yasm_objfmt *)objfmt_coff;
-}
-
-static yasm_objfmt *
-win32_objfmt_create(yasm_object *object)
-{
- yasm_objfmt_coff *objfmt_coff = coff_common_create(object);
-
- if (objfmt_coff) {
- /* Support x86 and amd64 machines of x86 arch.
- * (amd64 machine supported for backwards compatibility)
- */
- if (yasm__strcasecmp(yasm_arch_get_machine(object->arch),
- "x86") == 0) {
- objfmt_coff->machine = COFF_MACHINE_I386;
- objfmt_coff->objfmt.module = &yasm_win32_LTX_objfmt;
- objfmt_coff->win64 = 0;
- } else if (yasm__strcasecmp(yasm_arch_get_machine(object->arch),
- "amd64") == 0) {
- objfmt_coff->machine = COFF_MACHINE_AMD64;
- objfmt_coff->objfmt.module = &yasm_win64_LTX_objfmt;
- objfmt_coff->win64 = 1;
- } else {
- yasm_xfree(objfmt_coff);
- return NULL;
- }
-
- objfmt_coff->win32 = 1;
- /* Define a @feat.00 symbol for win32 safeseh handling */
- if (!objfmt_coff->win64) {
- yasm_symrec *feat00;
- coff_symrec_data *sym_data;
- feat00 = yasm_symtab_define_equ(object->symtab, "@feat.00",
- yasm_expr_create_ident(yasm_expr_int(
- yasm_intnum_create_uint(1)), 0), 0);
- sym_data = coff_objfmt_sym_set_data(feat00, COFF_SCL_STAT, 0,
- COFF_SYMTAB_AUX_NONE);
- sym_data->forcevis = 1;
- }
- }
- return (yasm_objfmt *)objfmt_coff;
-}
-
-static yasm_objfmt *
-win64_objfmt_create(yasm_object *object)
-{
- yasm_objfmt_coff *objfmt_coff = coff_common_create(object);
-
- if (objfmt_coff) {
- /* Support amd64 machine of x86 arch */
- if (yasm__strcasecmp(yasm_arch_get_machine(object->arch),
- "amd64") == 0) {
- objfmt_coff->machine = COFF_MACHINE_AMD64;
- } else {
- yasm_xfree(objfmt_coff);
- return NULL;
- }
-
- objfmt_coff->objfmt.module = &yasm_win64_LTX_objfmt;
- objfmt_coff->win32 = 1;
- objfmt_coff->win64 = 1;
- objfmt_coff->ssym_imagebase =
- yasm_symtab_define_label(object->symtab, "..imagebase", NULL, 0, 0);
- }
- return (yasm_objfmt *)objfmt_coff;
-}
-
-static void
-coff_objfmt_init_new_section(yasm_section *sect, unsigned long line)
-{
- yasm_object *object = yasm_section_get_object(sect);
- const char *sectname = yasm_section_get_name(sect);
- yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
- coff_section_data *data;
- yasm_symrec *sym;
-
- data = yasm_xmalloc(sizeof(coff_section_data));
- data->scnum = objfmt_coff->parse_scnum++;
- data->flags = 0;
- data->addr = 0;
- data->scnptr = 0;
- data->size = 0;
- data->relptr = 0;
- data->nreloc = 0;
- data->flags2 = 0;
- data->strtab_name = 0;
- data->isdebug = 0;
-
- if (yasm__strncasecmp(sectname, ".debug", 6)==0) {
- data->flags = COFF_STYP_DATA;
- if (objfmt_coff->win32)
- data->flags |= COFF_STYP_DISCARD|COFF_STYP_READ;
- data->isdebug = 1;
- } else
- data->flags = COFF_STYP_TEXT;
-
- yasm_section_add_data(sect, &coff_section_data_cb, data);
-
- sym = yasm_symtab_define_label(object->symtab, sectname,
- yasm_section_bcs_first(sect), 1, line);
- yasm_symrec_declare(sym, YASM_SYM_GLOBAL, line);
- coff_objfmt_sym_set_data(sym, COFF_SCL_STAT, 1, COFF_SYMTAB_AUX_SECT);
- data->sym = sym;
-}
-
-static int
-coff_objfmt_set_section_addr(yasm_section *sect, /*@null@*/ void *d)
-{
- /*@null@*/ coff_objfmt_output_info *info = (coff_objfmt_output_info *)d;
- /*@dependent@*/ /*@null@*/ coff_section_data *csd;
-
- assert(info != NULL);
- csd = yasm_section_get_data(sect, &coff_section_data_cb);
- assert(csd != NULL);
-
- csd->addr = info->addr;
- info->addr += yasm_bc_next_offset(yasm_section_bcs_last(sect));
-
- return 0;
-}
-
-static int
-coff_objfmt_output_value(yasm_value *value, unsigned char *buf,
- unsigned int destsize, unsigned long offset,
- yasm_bytecode *bc, int warn, /*@null@*/ void *d)
-{
- /*@null@*/ coff_objfmt_output_info *info = (coff_objfmt_output_info *)d;
- yasm_objfmt_coff *objfmt_coff;
- /*@only@*/ /*@null@*/ yasm_intnum *dist = NULL;
- /*@dependent@*/ /*@null@*/ yasm_intnum *intn;
- unsigned long intn_val, intn_minus;
- int retval;
- unsigned int valsize = value->size;
-
- assert(info != NULL);
- objfmt_coff = info->objfmt_coff;
-
- if (value->abs)
- value->abs = yasm_expr_simplify(value->abs, 1);
-
- /* Try to output constant and PC-relative section-local first.
- * Note this does NOT output any value with a SEG, WRT, external,
- * cross-section, or non-PC-relative reference (those are handled below).
- */
- switch (yasm_value_output_basic(value, buf, destsize, bc, warn,
- info->object->arch)) {
- case -1:
- return 1;
- case 0:
- break;
- default:
- return 0;
- }
-
- /* Handle other expressions, with relocation if necessary */
- if (value->rshift > 0
- || (value->seg_of && (value->wrt || value->curpos_rel))
- || (value->section_rel && (value->wrt || value->curpos_rel))) {
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("coff: relocation too complex"));
- return 1;
- }
-
- intn_val = 0;
- intn_minus = 0;
- if (value->rel) {
- yasm_sym_vis vis = yasm_symrec_get_visibility(value->rel);
- /*@dependent@*/ /*@null@*/ yasm_symrec *sym = value->rel;
- unsigned long addr;
- coff_reloc *reloc;
- int nobase = info->csd->flags2 & COFF_FLAG_NOBASE;
-
- /* Sometimes we want the relocation to be generated against one
- * symbol but the value generated correspond to a different symbol.
- * This is done through (sym being referenced) WRT (sym used for
- * reloc). Note both syms need to be in the same section!
- */
- if (value->wrt && value->wrt == objfmt_coff->ssym_imagebase)
- nobase = 1;
- else if (value->wrt) {
- /*@dependent@*/ /*@null@*/ yasm_bytecode *rel_precbc, *wrt_precbc;
-
- if (!yasm_symrec_get_label(sym, &rel_precbc)
- || !yasm_symrec_get_label(value->wrt, &wrt_precbc)) {
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("coff: wrt expression too complex"));
- return 1;
- }
- dist = yasm_calc_bc_dist(wrt_precbc, rel_precbc);
- if (!dist) {
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("coff: cannot wrt across sections"));
- return 1;
- }
- sym = value->wrt;
- }
-
- if (vis & YASM_SYM_COMMON) {
- /* In standard COFF, COMMON symbols have their length added in */
- if (!objfmt_coff->win32) {
- /*@dependent@*/ /*@null@*/ yasm_expr **csize_expr;
- /*@dependent@*/ /*@null@*/ yasm_intnum *common_size;
-
- csize_expr = yasm_symrec_get_common_size(sym);
- assert(csize_expr != NULL);
- common_size = yasm_expr_get_intnum(csize_expr, 1);
- if (!common_size) {
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("coff: common size too complex"));
- return 1;
- }
-
- if (yasm_intnum_sign(common_size) < 0) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("coff: common size is negative"));
- return 1;
- }
-
- intn_val += yasm_intnum_get_uint(common_size);
- }
- } else if (!(vis & YASM_SYM_EXTERN) && !objfmt_coff->win64) {
- /*@dependent@*/ /*@null@*/ yasm_bytecode *sym_precbc;
-
- /* Local symbols need relocation to their section's start */
- if (yasm_symrec_get_label(sym, &sym_precbc)) {
- yasm_section *sym_sect = yasm_bc_get_section(sym_precbc);
- /*@null@*/ coff_section_data *sym_csd;
- sym_csd = yasm_section_get_data(sym_sect,
- &coff_section_data_cb);
- assert(sym_csd != NULL);
- sym = sym_csd->sym;
- intn_val = yasm_bc_next_offset(sym_precbc);
- if (COFF_SET_VMA)
- intn_val += sym_csd->addr;
- }
- }
-
- if (value->curpos_rel) {
- /* For standard COFF, need to adjust to start of section, e.g.
- * subtract out the bytecode offset.
- * For Win32 COFF, need to adjust based on value size and position.
- * For Win64 COFF that's IP-relative, adjust to next bytecode;
- * the difference between the offset+destsize and BC length is
- * taken care of by special relocation types.
- */
- if (objfmt_coff->win64 && value->ip_rel)
- intn_val += bc->len*bc->mult_int;
- else if (objfmt_coff->win32)
- intn_val += offset+destsize;
- else
- intn_minus = bc->offset;
- }
-
- if (value->seg_of) {
- /* Segment generation; zero value. */
- intn_val = 0;
- intn_minus = 0;
- }
-
- /* Generate reloc */
- reloc = yasm_xmalloc(sizeof(coff_reloc));
- addr = bc->offset + offset;
- if (COFF_SET_VMA)
- addr += info->addr;
- reloc->reloc.addr = yasm_intnum_create_uint(addr);
- reloc->reloc.sym = sym;
-
- if (value->curpos_rel) {
- if (objfmt_coff->machine == COFF_MACHINE_I386) {
- if (valsize == 32)
- reloc->type = COFF_RELOC_I386_REL32;
- else {
- yasm_error_set(YASM_ERROR_TYPE,
- N_("coff: invalid relocation size"));
- return 1;
- }
- } else if (objfmt_coff->machine == COFF_MACHINE_AMD64) {
- if (valsize != 32) {
- yasm_error_set(YASM_ERROR_TYPE,
- N_("coff: invalid relocation size"));
- return 1;
- }
- if (!value->ip_rel)
- reloc->type = COFF_RELOC_AMD64_REL32;
- else switch (bc->len*bc->mult_int - (offset+destsize)) {
- case 0:
- reloc->type = COFF_RELOC_AMD64_REL32;
- break;
- case 1:
- reloc->type = COFF_RELOC_AMD64_REL32_1;
- break;
- case 2:
- reloc->type = COFF_RELOC_AMD64_REL32_2;
- break;
- case 3:
- reloc->type = COFF_RELOC_AMD64_REL32_3;
- break;
- case 4:
- reloc->type = COFF_RELOC_AMD64_REL32_4;
- break;
- case 5:
- reloc->type = COFF_RELOC_AMD64_REL32_5;
- break;
- default:
- yasm_error_set(YASM_ERROR_TYPE,
- N_("coff: invalid relocation size"));
- return 1;
- }
- } else
- yasm_internal_error(N_("coff objfmt: unrecognized machine"));
- } else if (value->seg_of) {
- if (objfmt_coff->machine == COFF_MACHINE_I386)
- reloc->type = COFF_RELOC_I386_SECTION;
- else if (objfmt_coff->machine == COFF_MACHINE_AMD64)
- reloc->type = COFF_RELOC_AMD64_SECTION;
- else
- yasm_internal_error(N_("coff objfmt: unrecognized machine"));
- } else if (value->section_rel) {
- if (objfmt_coff->machine == COFF_MACHINE_I386)
- reloc->type = COFF_RELOC_I386_SECREL;
- else if (objfmt_coff->machine == COFF_MACHINE_AMD64)
- reloc->type = COFF_RELOC_AMD64_SECREL;
- else
- yasm_internal_error(N_("coff objfmt: unrecognized machine"));
- } else {
- if (objfmt_coff->machine == COFF_MACHINE_I386) {
- if (nobase)
- reloc->type = COFF_RELOC_I386_ADDR32NB;
- else
- reloc->type = COFF_RELOC_I386_ADDR32;
- } else if (objfmt_coff->machine == COFF_MACHINE_AMD64) {
- if (valsize == 32) {
- if (nobase)
- reloc->type = COFF_RELOC_AMD64_ADDR32NB;
- else
- reloc->type = COFF_RELOC_AMD64_ADDR32;
- } else if (valsize == 64)
- reloc->type = COFF_RELOC_AMD64_ADDR64;
- else {
- yasm_error_set(YASM_ERROR_TYPE,
- N_("coff: invalid relocation size"));
- return 1;
- }
- } else
- yasm_internal_error(N_("coff objfmt: unrecognized machine"));
- }
- info->csd->nreloc++;
- yasm_section_add_reloc(info->sect, (yasm_reloc *)reloc, yasm_xfree);
- }
-
- /* Build up final integer output from intn_val, intn_minus, value->abs,
- * and dist. We do all this at the end to avoid creating temporary
- * intnums above (except for dist).
- */
- if (intn_minus <= intn_val)
- intn = yasm_intnum_create_uint(intn_val-intn_minus);
- else {
- intn = yasm_intnum_create_uint(intn_minus-intn_val);
- yasm_intnum_calc(intn, YASM_EXPR_NEG, NULL);
- }
-
- if (value->abs) {
- yasm_intnum *intn2 = yasm_expr_get_intnum(&value->abs, 0);
- if (!intn2) {
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("coff: relocation too complex"));
- yasm_intnum_destroy(intn);
- if (dist)
- yasm_intnum_destroy(dist);
- return 1;
- }
- yasm_intnum_calc(intn, YASM_EXPR_ADD, intn2);
- }
-
- if (dist) {
- yasm_intnum_calc(intn, YASM_EXPR_ADD, dist);
- yasm_intnum_destroy(dist);
- }
-
- retval = yasm_arch_intnum_tobytes(info->object->arch, intn, buf, destsize,
- valsize, 0, bc, warn);
- yasm_intnum_destroy(intn);
- return retval;
-}
-
-static int
-coff_objfmt_output_bytecode(yasm_bytecode *bc, /*@null@*/ void *d)
-{
- /*@null@*/ coff_objfmt_output_info *info = (coff_objfmt_output_info *)d;
- /*@null@*/ /*@only@*/ unsigned char *bigbuf;
- unsigned long size = REGULAR_OUTBUF_SIZE;
- int gap;
-
- assert(info != NULL);
-
- bigbuf = yasm_bc_tobytes(bc, info->buf, &size, &gap, info,
- coff_objfmt_output_value, NULL);
-
- /* Don't bother doing anything else if size ended up being 0. */
- if (size == 0) {
- if (bigbuf)
- yasm_xfree(bigbuf);
- return 0;
- }
-
- info->csd->size += size;
-
- /* Warn that gaps are converted to 0 and write out the 0's. */
- if (gap) {
- unsigned long left;
- yasm_warn_set(YASM_WARN_UNINIT_CONTENTS,
- N_("uninitialized space declared in code/data section: zeroing"));
- /* Write out in chunks */
- memset(info->buf, 0, REGULAR_OUTBUF_SIZE);
- left = size;
- while (left > REGULAR_OUTBUF_SIZE) {
- fwrite(info->buf, REGULAR_OUTBUF_SIZE, 1, info->f);
- left -= REGULAR_OUTBUF_SIZE;
- }
- fwrite(info->buf, left, 1, info->f);
- } else {
- /* Output buf (or bigbuf if non-NULL) to file */
- fwrite(bigbuf ? bigbuf : info->buf, (size_t)size, 1, info->f);
- }
-
- /* If bigbuf was allocated, free it */
- if (bigbuf)
- yasm_xfree(bigbuf);
-
- return 0;
-}
-
-static int
-coff_objfmt_output_section(yasm_section *sect, /*@null@*/ void *d)
-{
- /*@null@*/ coff_objfmt_output_info *info = (coff_objfmt_output_info *)d;
- /*@dependent@*/ /*@null@*/ coff_section_data *csd;
- long pos;
- coff_reloc *reloc;
- unsigned char *localbuf;
-
- assert(info != NULL);
- csd = yasm_section_get_data(sect, &coff_section_data_cb);
- assert(csd != NULL);
-
- /* Add to strtab if in win32 format and name > 8 chars */
- if (info->objfmt_coff->win32) {
- size_t namelen = strlen(yasm_section_get_name(sect));
- if (namelen > 8) {
- csd->strtab_name = info->strtab_offset;
- info->strtab_offset += (unsigned long)(namelen + 1);
- }
- }
-
- if (!csd->isdebug)
- csd->addr = info->addr;
-
- if ((csd->flags & COFF_STYP_STD_MASK) == COFF_STYP_BSS) {
- /* Don't output BSS sections.
- * TODO: Check for non-reserve bytecodes?
- */
- pos = 0; /* position = 0 because it's not in the file */
- csd->size = yasm_bc_next_offset(yasm_section_bcs_last(sect));
- } else {
- pos = ftell(info->f);
- if (pos == -1) {
- yasm__fatal(N_("could not get file position on output file"));
- /*@notreached@*/
- return 1;
- }
-
- info->sect = sect;
- info->csd = csd;
- yasm_section_bcs_traverse(sect, info->errwarns, info,
- coff_objfmt_output_bytecode);
-
- /* Sanity check final section size */
- if (yasm_errwarns_num_errors(info->errwarns, 0) == 0 &&
- csd->size != yasm_bc_next_offset(yasm_section_bcs_last(sect)))
- yasm_internal_error(
- N_("coff: section computed size did not match actual size"));
- }
-
- /* Empty? Go on to next section */
- if (csd->size == 0)
- return 0;
-
- if (!csd->isdebug)
- info->addr += csd->size;
- csd->scnptr = (unsigned long)pos;
-
- /* No relocations to output? Go on to next section */
- if (csd->nreloc == 0)
- return 0;
-
- pos = ftell(info->f);
- if (pos == -1) {
- yasm__fatal(N_("could not get file position on output file"));
- /*@notreached@*/
- return 1;
- }
- csd->relptr = (unsigned long)pos;
-
- /* If >=64K relocs (for Win32/64), we set a flag in the section header
- * (NRELOC_OVFL) and the first relocation contains the number of relocs.
- */
- if (csd->nreloc >= 64*1024 && info->objfmt_coff->win32) {
- localbuf = info->buf;
- YASM_WRITE_32_L(localbuf, csd->nreloc+1); /* address of relocation */
- YASM_WRITE_32_L(localbuf, 0); /* relocated symbol */
- YASM_WRITE_16_L(localbuf, 0); /* type of relocation */
- fwrite(info->buf, 10, 1, info->f);
- }
-
- reloc = (coff_reloc *)yasm_section_relocs_first(sect);
- while (reloc) {
- /*@null@*/ coff_symrec_data *csymd;
- localbuf = info->buf;
-
- csymd = yasm_symrec_get_data(reloc->reloc.sym, &coff_symrec_data_cb);
- if (!csymd)
- yasm_internal_error(
- N_("coff: no symbol data for relocated symbol"));
-
- yasm_intnum_get_sized(reloc->reloc.addr, localbuf, 4, 32, 0, 0, 0);
- localbuf += 4; /* address of relocation */
- YASM_WRITE_32_L(localbuf, csymd->index); /* relocated symbol */
- YASM_WRITE_16_L(localbuf, reloc->type); /* type of relocation */
- fwrite(info->buf, 10, 1, info->f);
-
- reloc = (coff_reloc *)yasm_section_reloc_next((yasm_reloc *)reloc);
- }
-
- return 0;
-}
-
-static int
-coff_objfmt_output_sectstr(yasm_section *sect, /*@null@*/ void *d)
-{
- /*@null@*/ coff_objfmt_output_info *info = (coff_objfmt_output_info *)d;
- const char *name;
- size_t len;
-
- /* Add to strtab if in win32 format and name > 8 chars */
- if (!info->objfmt_coff->win32)
- return 0;
-
- name = yasm_section_get_name(sect);
- len = strlen(name);
- if (len > 8)
- fwrite(name, len+1, 1, info->f);
- return 0;
-}
-
-static int
-coff_objfmt_output_secthead(yasm_section *sect, /*@null@*/ void *d)
-{
- /*@null@*/ coff_objfmt_output_info *info = (coff_objfmt_output_info *)d;
- yasm_objfmt_coff *objfmt_coff;
- /*@dependent@*/ /*@null@*/ coff_section_data *csd;
- unsigned char *localbuf;
- unsigned long align = yasm_section_get_align(sect);
-
- assert(info != NULL);
- objfmt_coff = info->objfmt_coff;
- csd = yasm_section_get_data(sect, &coff_section_data_cb);
- assert(csd != NULL);
-
- /* Check to see if alignment is supported size */
- if (align > 8192)
- align = 8192;
-
- /* Convert alignment into flags setting */
- csd->flags &= ~COFF_STYP_ALIGN_MASK;
- while (align != 0) {
- csd->flags += 1<<COFF_STYP_ALIGN_SHIFT;
- align >>= 1;
- }
-
- /* section name */
- localbuf = info->buf;
- if (strlen(yasm_section_get_name(sect)) > 8) {
- char namenum[30];
- sprintf(namenum, "/%ld", csd->strtab_name);
- strncpy((char *)localbuf, namenum, 8);
- } else
- strncpy((char *)localbuf, yasm_section_get_name(sect), 8);
- localbuf += 8;
- if (csd->isdebug) {
- YASM_WRITE_32_L(localbuf, 0); /* physical address */
- YASM_WRITE_32_L(localbuf, 0); /* virtual address */
- } else {
- YASM_WRITE_32_L(localbuf, csd->addr); /* physical address */
- if (COFF_SET_VMA)
- YASM_WRITE_32_L(localbuf, csd->addr);/* virtual address */
- else
- YASM_WRITE_32_L(localbuf, 0); /* virtual address */
- }
- YASM_WRITE_32_L(localbuf, csd->size); /* section size */
- YASM_WRITE_32_L(localbuf, csd->scnptr); /* file ptr to data */
- YASM_WRITE_32_L(localbuf, csd->relptr); /* file ptr to relocs */
- YASM_WRITE_32_L(localbuf, 0); /* file ptr to line nums */
- if (csd->nreloc >= 64*1024) {
- /* Win32/64 has special handling for this case. */
- if (objfmt_coff->win32)
- csd->flags |= COFF_STYP_NRELOC_OVFL;
- else {
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("too many relocations in section `%s'"),
- yasm_section_get_name(sect));
- yasm_errwarn_propagate(info->errwarns, 0);
- }
- YASM_WRITE_16_L(localbuf, 0xFFFF); /* max out */
- } else
- YASM_WRITE_16_L(localbuf, csd->nreloc); /* num of relocation entries */
- YASM_WRITE_16_L(localbuf, 0); /* num of line number entries */
- YASM_WRITE_32_L(localbuf, csd->flags); /* flags */
- fwrite(info->buf, 40, 1, info->f);
-
- return 0;
-}
-
-static int
-coff_objfmt_count_sym(yasm_symrec *sym, /*@null@*/ void *d)
-{
- /*@null@*/ coff_objfmt_output_info *info = (coff_objfmt_output_info *)d;
- yasm_sym_vis vis = yasm_symrec_get_visibility(sym);
- coff_symrec_data *sym_data;
-
- assert(info != NULL);
-
- sym_data = yasm_symrec_get_data(sym, &coff_symrec_data_cb);
-
- if (info->all_syms || vis != YASM_SYM_LOCAL || yasm_symrec_is_abs(sym) ||
- (sym_data && sym_data->forcevis)) {
- /* Save index in symrec data */
- if (!sym_data)
- sym_data = coff_objfmt_sym_set_data(sym, COFF_SCL_NULL, 0,
- COFF_SYMTAB_AUX_NONE);
- /* Set storage class based on visibility if not already set */
- if (sym_data->sclass == COFF_SCL_NULL) {
- if (vis & (YASM_SYM_EXTERN|YASM_SYM_GLOBAL|YASM_SYM_COMMON))
- sym_data->sclass = COFF_SCL_EXT;
- else
- sym_data->sclass = COFF_SCL_STAT;
- }
-
- sym_data->index = info->indx;
-
- info->indx += sym_data->numaux + 1;
- }
- return 0;
-}
-
-static int
-coff_objfmt_output_sym(yasm_symrec *sym, /*@null@*/ void *d)
-{
- /*@null@*/ coff_objfmt_output_info *info = (coff_objfmt_output_info *)d;
- yasm_sym_vis vis = yasm_symrec_get_visibility(sym);
- int is_abs = yasm_symrec_is_abs(sym);
- /*@dependent@*/ /*@null@*/ coff_symrec_data *csymd;
- yasm_valparamhead *objext_valparams =
- yasm_symrec_get_objext_valparams(sym);
- csymd = yasm_symrec_get_data(sym, &coff_symrec_data_cb);
-
- assert(info != NULL);
-
- /* Look for "function" flag on global syms */
- if (csymd && csymd->type == 0 && (vis & YASM_SYM_GLOBAL) != 0) {
- if (objext_valparams) {
- const char *id = yasm_vp_id(yasm_vps_first(objext_valparams));
- if (yasm__strcasecmp(id, "function") == 0)
- csymd->type = 0x20;
- }
- }
-
- /* Don't output local syms unless outputting all syms */
- if (info->all_syms || vis != YASM_SYM_LOCAL || is_abs ||
- (csymd && csymd->forcevis)) {
- /*@only*/ char *name;
- const yasm_expr *equ_val;
- const yasm_intnum *intn;
- unsigned char *localbuf;
- size_t len;
- int aux;
- unsigned long value = 0;
- unsigned int scnum = 0xfffe; /* -2 = debugging symbol */
- /*@dependent@*/ /*@null@*/ yasm_section *sect;
- /*@dependent@*/ /*@null@*/ yasm_bytecode *precbc;
- unsigned long scnlen = 0; /* for sect auxent */
- unsigned long nreloc = 0; /* for sect auxent */
- yasm_objfmt_coff *objfmt_coff = info->objfmt_coff;
-
- if (is_abs)
- name = yasm__xstrdup(".absolut");
- else
- name = yasm_symrec_get_global_name(sym, info->object);
- len = strlen(name);
-
- /* Get symrec's of_data (needed for storage class) */
- if (!csymd)
- yasm_internal_error(N_("coff: expected sym data to be present"));
-
- /* Look at symrec for value/scnum/etc. */
- if (yasm_symrec_get_label(sym, &precbc)) {
- if (precbc)
- sect = yasm_bc_get_section(precbc);
- else
- sect = NULL;
- /* it's a label: get value and offset.
- * If there is not a section, leave as debugging symbol.
- */
- if (sect) {
- /*@dependent@*/ /*@null@*/ coff_section_data *csectd;
- csectd = yasm_section_get_data(sect, &coff_section_data_cb);
- if (csectd) {
- scnum = csectd->scnum;
- scnlen = csectd->size;
- nreloc = csectd->nreloc;
- if (COFF_SET_VMA)
- value = csectd->addr;
- } else
- yasm_internal_error(N_("didn't understand section"));
- if (precbc)
- value += yasm_bc_next_offset(precbc);
- }
- } else if ((equ_val = yasm_symrec_get_equ(sym))) {
- yasm_expr *equ_val_copy = yasm_expr_copy(equ_val);
- intn = yasm_expr_get_intnum(&equ_val_copy, 1);
- if (!intn) {
- if (vis & YASM_SYM_GLOBAL) {
- yasm_error_set(YASM_ERROR_NOT_CONSTANT,
- N_("global EQU value not an integer expression"));
- yasm_errwarn_propagate(info->errwarns, equ_val->line);
- }
- } else
- value = yasm_intnum_get_uint(intn);
- yasm_expr_destroy(equ_val_copy);
-
- scnum = 0xffff; /* -1 = absolute symbol */
- } else {
- if (vis & YASM_SYM_COMMON) {
- /*@dependent@*/ /*@null@*/ yasm_expr **csize_expr;
- csize_expr = yasm_symrec_get_common_size(sym);
- assert(csize_expr != NULL);
- intn = yasm_expr_get_intnum(csize_expr, 1);
- if (!intn) {
- yasm_error_set(YASM_ERROR_NOT_CONSTANT,
- N_("COMMON data size not an integer expression"));
- yasm_errwarn_propagate(info->errwarns,
- (*csize_expr)->line);
- } else
- value = yasm_intnum_get_uint(intn);
- scnum = 0;
- }
- if (vis & YASM_SYM_EXTERN)
- scnum = 0;
- }
-
- localbuf = info->buf;
- if (len > 8) {
- YASM_WRITE_32_L(localbuf, 0); /* "zeros" field */
- YASM_WRITE_32_L(localbuf, info->strtab_offset); /* strtab offset */
- info->strtab_offset += (unsigned long)(len+1);
- } else {
- /* <8 chars, so no string table entry needed */
- strncpy((char *)localbuf, name, 8);
- localbuf += 8;
- }
- YASM_WRITE_32_L(localbuf, value); /* value */
- YASM_WRITE_16_L(localbuf, scnum); /* section number */
- YASM_WRITE_16_L(localbuf, csymd->type); /* type */
- YASM_WRITE_8(localbuf, csymd->sclass); /* storage class */
- YASM_WRITE_8(localbuf, csymd->numaux); /* number of aux entries */
- fwrite(info->buf, 18, 1, info->f);
- for (aux=0; aux<csymd->numaux; aux++) {
- localbuf = info->buf;
- memset(localbuf, 0, 18);
- switch (csymd->auxtype) {
- case COFF_SYMTAB_AUX_NONE:
- break;
- case COFF_SYMTAB_AUX_SECT:
- YASM_WRITE_32_L(localbuf, scnlen); /* section length */
- YASM_WRITE_16_L(localbuf, nreloc); /* number relocs */
- YASM_WRITE_16_L(localbuf, 0); /* number line nums */
- break;
- case COFF_SYMTAB_AUX_FILE:
- len = strlen(csymd->aux[0].fname);
- if (len > 14) {
- YASM_WRITE_32_L(localbuf, 0);
- YASM_WRITE_32_L(localbuf, info->strtab_offset);
- info->strtab_offset += (unsigned long)(len+1);
- } else
- strncpy((char *)localbuf, csymd->aux[0].fname, 14);
- break;
- default:
- yasm_internal_error(
- N_("coff: unrecognized aux symtab type"));
- }
- fwrite(info->buf, 18, 1, info->f);
- }
- yasm_xfree(name);
- }
- return 0;
-}
-
-static int
-coff_objfmt_output_str(yasm_symrec *sym, /*@null@*/ void *d)
-{
- /*@null@*/ coff_objfmt_output_info *info = (coff_objfmt_output_info *)d;
- yasm_sym_vis vis = yasm_symrec_get_visibility(sym);
- /*@dependent@*/ /*@null@*/ coff_symrec_data *csymd;
- csymd = yasm_symrec_get_data(sym, &coff_symrec_data_cb);
-
- assert(info != NULL);
-
- /* Don't output local syms unless outputting all syms */
- if (info->all_syms || vis != YASM_SYM_LOCAL ||
- (csymd && csymd->forcevis)) {
- /*@only@*/ char *name = yasm_symrec_get_global_name(sym, info->object);
- size_t len = strlen(name);
- int aux;
-
- if (!csymd)
- yasm_internal_error(N_("coff: expected sym data to be present"));
-
- if (len > 8)
- fwrite(name, len+1, 1, info->f);
- for (aux=0; aux<csymd->numaux; aux++) {
- switch (csymd->auxtype) {
- case COFF_SYMTAB_AUX_FILE:
- len = strlen(csymd->aux[0].fname);
- if (len > 14)
- fwrite(csymd->aux[0].fname, len+1, 1, info->f);
- break;
- default:
- break;
- }
- }
- yasm_xfree(name);
- }
- return 0;
-}
-
-static void
-coff_objfmt_output(yasm_object *object, FILE *f, int all_syms,
- yasm_errwarns *errwarns)
-{
- yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
- coff_objfmt_output_info info;
- unsigned char *localbuf;
- long pos;
- unsigned long symtab_pos;
- unsigned long symtab_count;
- unsigned int flags;
- unsigned long ts;
-
- if (objfmt_coff->proc_frame) {
- yasm_error_set_xref(objfmt_coff->proc_frame,
- N_("procedure started here"));
- yasm_error_set(YASM_ERROR_GENERAL,
- N_("end of file in procedure frame"));
- yasm_errwarn_propagate(errwarns, 0);
- return;
- }
-
- if (objfmt_coff->filesym_data->aux[0].fname)
- yasm_xfree(objfmt_coff->filesym_data->aux[0].fname);
+/*
+ * COFF (DJGPP) object format
+ *
+ * Copyright (C) 2002-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+#include <time.h>
+
+#include <libyasm.h>
+
+#include "coff-objfmt.h"
+
+
+#define REGULAR_OUTBUF_SIZE 1024
+
+/* Defining this to 0 sets all section VMA's to 0 rather than as the same as
+ * the LMA. According to the DJGPP COFF Spec, this should be set to 1
+ * (VMA=LMA), and indeed DJGPP's GCC output shows VMA=LMA. However, NASM
+ * outputs VMA=0 (as if this was 0), and GNU objdump output looks a lot nicer
+ * with VMA=0. Who's right? This is #defined as changing this setting affects
+ * several places in the code.
+ */
+#define COFF_SET_VMA (!objfmt_coff->win32)
+
+#define COFF_MACHINE_I386 0x014C
+#define COFF_MACHINE_AMD64 0x8664
+
+#define COFF_F_LNNO 0x0004 /* line number info NOT present */
+#define COFF_F_LSYMS 0x0008 /* local symbols NOT present */
+#define COFF_F_AR32WR 0x0100 /* 32-bit little endian file */
+
+typedef struct coff_reloc {
+ yasm_reloc reloc;
+ enum {
+ COFF_RELOC_ABSOLUTE = 0, /* absolute, no reloc needed */
+
+ /* I386 relocations */
+ COFF_RELOC_I386_ADDR16 = 0x1, /* 16-bit absolute reference */
+ COFF_RELOC_I386_REL16 = 0x2, /* 16-bit PC-relative reference */
+ COFF_RELOC_I386_ADDR32 = 0x6, /* 32-bit absolute reference */
+ COFF_RELOC_I386_ADDR32NB = 0x7, /* 32-bit absolute ref w/o base */
+ COFF_RELOC_I386_SEG12 = 0x9, /* 16-bit absolute segment ref */
+ COFF_RELOC_I386_SECTION = 0xA, /* section index */
+ COFF_RELOC_I386_SECREL = 0xB, /* offset from start of segment */
+ COFF_RELOC_I386_TOKEN = 0xC, /* CLR metadata token */
+ COFF_RELOC_I386_SECREL7 = 0xD, /* 7-bit offset from base of sect */
+ COFF_RELOC_I386_REL32 = 0x14, /* 32-bit PC-relative reference */
+
+ /* AMD64 relocations */
+ COFF_RELOC_AMD64_ADDR64 = 0x1, /* 64-bit address (VA) */
+ COFF_RELOC_AMD64_ADDR32 = 0x2, /* 32-bit address (VA) */
+ COFF_RELOC_AMD64_ADDR32NB = 0x3, /* 32-bit address w/o base (RVA) */
+ COFF_RELOC_AMD64_REL32 = 0x4, /* 32-bit relative (0 byte dist) */
+ COFF_RELOC_AMD64_REL32_1 = 0x5, /* 32-bit relative (1 byte dist) */
+ COFF_RELOC_AMD64_REL32_2 = 0x6, /* 32-bit relative (2 byte dist) */
+ COFF_RELOC_AMD64_REL32_3 = 0x7, /* 32-bit relative (3 byte dist) */
+ COFF_RELOC_AMD64_REL32_4 = 0x8, /* 32-bit relative (4 byte dist) */
+ COFF_RELOC_AMD64_REL32_5 = 0x9, /* 32-bit relative (5 byte dist) */
+ COFF_RELOC_AMD64_SECTION = 0xA, /* section index */
+ COFF_RELOC_AMD64_SECREL = 0xB, /* 32-bit offset from base of sect */
+ COFF_RELOC_AMD64_SECREL7 = 0xC, /* 7-bit offset from base of sect */
+ COFF_RELOC_AMD64_TOKEN = 0xD /* CLR metadata token */
+ } type; /* type of relocation */
+} coff_reloc;
+
+#define COFF_STYP_TEXT 0x00000020UL
+#define COFF_STYP_DATA 0x00000040UL
+#define COFF_STYP_BSS 0x00000080UL
+#define COFF_STYP_INFO 0x00000200UL
+#define COFF_STYP_STD_MASK 0x000003FFUL
+#define COFF_STYP_ALIGN_MASK 0x00F00000UL
+#define COFF_STYP_ALIGN_SHIFT 20
+#define COFF_STYP_NRELOC_OVFL 0x01000000UL
+#define COFF_STYP_DISCARD 0x02000000UL
+#define COFF_STYP_NOCACHE 0x04000000UL
+#define COFF_STYP_NOPAGE 0x08000000UL
+#define COFF_STYP_SHARED 0x10000000UL
+#define COFF_STYP_EXECUTE 0x20000000UL
+#define COFF_STYP_READ 0x40000000UL
+#define COFF_STYP_WRITE 0x80000000UL
+#define COFF_STYP_WIN32_MASK 0xFF000000UL
+
+#define COFF_FLAG_NOBASE (1UL<<0) /* Use no-base (NB) relocs */
+
+typedef struct coff_section_data {
+ /*@dependent@*/ yasm_symrec *sym; /* symbol created for this section */
+ unsigned int scnum; /* section number (1=first section) */
+ unsigned long flags; /* section flags (see COFF_STYP_* above) */
+ unsigned long addr; /* starting memory address (first section -> 0) */
+ unsigned long scnptr; /* file ptr to raw data */
+ unsigned long size; /* size of raw data (section data) in bytes */
+ unsigned long relptr; /* file ptr to relocation */
+ unsigned long nreloc; /* number of relocation entries >64k -> error */
+ unsigned long flags2; /* internal flags (see COFF_FLAG_* above) */
+ unsigned long strtab_name; /* strtab offset of name if name > 8 chars */
+ int isdebug; /* is a debug section? */
+} coff_section_data;
+
+typedef enum coff_symrec_sclass {
+ COFF_SCL_EFCN = 0xff, /* physical end of function */
+ COFF_SCL_NULL = 0,
+ COFF_SCL_AUTO = 1, /* automatic variable */
+ COFF_SCL_EXT = 2, /* external symbol */
+ COFF_SCL_STAT = 3, /* static */
+ COFF_SCL_REG = 4, /* register variable */
+ COFF_SCL_EXTDEF = 5, /* external definition */
+ COFF_SCL_LABEL = 6, /* label */
+ COFF_SCL_ULABEL = 7, /* undefined label */
+ COFF_SCL_MOS = 8, /* member of structure */
+ COFF_SCL_ARG = 9, /* function argument */
+ COFF_SCL_STRTAG = 10, /* structure tag */
+ COFF_SCL_MOU = 11, /* member of union */
+ COFF_SCL_UNTAG = 12, /* union tag */
+ COFF_SCL_TPDEF = 13, /* type definition */
+ COFF_SCL_USTATIC = 14, /* undefined static */
+ COFF_SCL_ENTAG = 15, /* enumeration tag */
+ COFF_SCL_MOE = 16, /* member of enumeration */
+ COFF_SCL_REGPARM = 17, /* register parameter */
+ COFF_SCL_FIELD = 18, /* bit field */
+ COFF_SCL_AUTOARG = 19, /* auto argument */
+ COFF_SCL_LASTENT = 20, /* dummy entry (end of block) */
+ COFF_SCL_BLOCK = 100, /* ".bb" or ".eb" */
+ COFF_SCL_FCN = 101, /* ".bf" or ".ef" */
+ COFF_SCL_EOS = 102, /* end of structure */
+ COFF_SCL_FILE = 103, /* file name */
+ COFF_SCL_LINE = 104, /* line # reformatted as symbol table entry */
+ COFF_SCL_ALIAS = 105, /* duplicate tag */
+ COFF_SCL_HIDDEN = 106 /* ext symbol in dmert public lib */
+} coff_symrec_sclass;
+
+typedef union coff_symtab_auxent {
+ /* no data needed for section symbol auxent, all info avail from sym */
+ /*@owned@*/ char *fname; /* filename aux entry */
+} coff_symtab_auxent;
+
+typedef enum coff_symtab_auxtype {
+ COFF_SYMTAB_AUX_NONE = 0,
+ COFF_SYMTAB_AUX_SECT,
+ COFF_SYMTAB_AUX_FILE
+} coff_symtab_auxtype;
+
+typedef struct coff_symrec_data {
+ int forcevis; /* force visibility in symbol table */
+ unsigned long index; /* assigned COFF symbol table index */
+ unsigned int type; /* type */
+ coff_symrec_sclass sclass; /* storage class */
+
+ int numaux; /* number of auxiliary entries */
+ coff_symtab_auxtype auxtype; /* type of aux entries */
+ coff_symtab_auxent aux[1]; /* actually may be any size (including 0) */
+} coff_symrec_data;
+
+typedef struct yasm_objfmt_coff {
+ yasm_objfmt_base objfmt; /* base structure */
+
+ unsigned int parse_scnum; /* sect numbering in parser */
+ int win32; /* nonzero for win32/64 output */
+ int win64; /* nonzero for win64 output */
+
+ unsigned int machine; /* COFF machine to use */
+
+ coff_symrec_data *filesym_data; /* Data for .file symbol */
+
+ /* data for .def/.endef and related directives */
+ coff_symrec_data *def_sym; /* symbol specified by .def */
+
+ /* data for win64 proc_frame and related directives */
+ unsigned long proc_frame; /* Line number of start of proc, or 0 */
+ unsigned long done_prolog; /* Line number of end of prologue, or 0 */
+ /*@null@*/ coff_unwind_info *unwind; /* Unwind info */
+
+ yasm_symrec *ssym_imagebase; /* ..imagebase symbol for win64 */
+} yasm_objfmt_coff;
+
+typedef struct coff_objfmt_output_info {
+ yasm_object *object;
+ yasm_objfmt_coff *objfmt_coff;
+ yasm_errwarns *errwarns;
+ /*@dependent@*/ FILE *f;
+ /*@only@*/ unsigned char *buf;
+ yasm_section *sect;
+ /*@dependent@*/ coff_section_data *csd;
+ unsigned long addr; /* start of next section */
+
+ unsigned long indx; /* current symbol index */
+ int all_syms; /* outputting all symbols? */
+ unsigned long strtab_offset; /* current string table offset */
+} coff_objfmt_output_info;
+
+static void coff_section_data_destroy(/*@only@*/ void *d);
+static void coff_section_data_print(void *data, FILE *f, int indent_level);
+
+static const yasm_assoc_data_callback coff_section_data_cb = {
+ coff_section_data_destroy,
+ coff_section_data_print
+};
+
+static void coff_symrec_data_destroy(/*@only@*/ void *d);
+static void coff_symrec_data_print(void *data, FILE *f, int indent_level);
+
+static const yasm_assoc_data_callback coff_symrec_data_cb = {
+ coff_symrec_data_destroy,
+ coff_symrec_data_print
+};
+
+/* Bytecode callback function prototypes */
+static void win32_sxdata_bc_destroy(void *contents);
+static void win32_sxdata_bc_print(const void *contents, FILE *f,
+ int indent_level);
+static int win32_sxdata_bc_calc_len
+ (yasm_bytecode *bc, yasm_bc_add_span_func add_span, void *add_span_data);
+static int win32_sxdata_bc_tobytes
+ (yasm_bytecode *bc, unsigned char **bufp, unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ /*@null@*/ yasm_output_reloc_func output_reloc);
+
+/* Bytecode callback structures */
+static const yasm_bytecode_callback win32_sxdata_bc_callback = {
+ win32_sxdata_bc_destroy,
+ win32_sxdata_bc_print,
+ yasm_bc_finalize_common,
+ NULL,
+ win32_sxdata_bc_calc_len,
+ yasm_bc_expand_common,
+ win32_sxdata_bc_tobytes,
+ 0
+};
+
+yasm_objfmt_module yasm_coff_LTX_objfmt;
+yasm_objfmt_module yasm_win32_LTX_objfmt;
+yasm_objfmt_module yasm_win64_LTX_objfmt;
+
+
+static /*@dependent@*/ coff_symrec_data *
+coff_objfmt_sym_set_data(yasm_symrec *sym, coff_symrec_sclass sclass,
+ int numaux, coff_symtab_auxtype auxtype)
+{
+ coff_symrec_data *sym_data;
+
+ sym_data = yasm_xmalloc(sizeof(coff_symrec_data) +
+ (numaux-1)*sizeof(coff_symtab_auxent));
+ sym_data->forcevis = 0;
+ sym_data->index = 0;
+ sym_data->type = 0;
+ sym_data->sclass = sclass;
+ sym_data->numaux = numaux;
+ sym_data->auxtype = auxtype;
+
+ yasm_symrec_add_data(sym, &coff_symrec_data_cb, sym_data);
+
+ return sym_data;
+}
+
+static yasm_objfmt_coff *
+coff_common_create(yasm_object *object)
+{
+ yasm_objfmt_coff *objfmt_coff = yasm_xmalloc(sizeof(yasm_objfmt_coff));
+ yasm_symrec *filesym;
+
+ /* Only support x86 arch */
+ if (yasm__strcasecmp(yasm_arch_keyword(object->arch), "x86") != 0) {
+ yasm_xfree(objfmt_coff);
+ return NULL;
+ }
+
+ objfmt_coff->parse_scnum = 1; /* section numbering starts at 1 */
+
+ /* FIXME: misuse of NULL bytecode here; it works, but only barely. */
+ filesym = yasm_symtab_define_special(object->symtab, ".file",
+ YASM_SYM_GLOBAL);
+ objfmt_coff->filesym_data =
+ coff_objfmt_sym_set_data(filesym, COFF_SCL_FILE, 1,
+ COFF_SYMTAB_AUX_FILE);
+ /* Filename is set in coff_objfmt_output */
+ objfmt_coff->filesym_data->aux[0].fname = NULL;
+
+ objfmt_coff->proc_frame = 0;
+ objfmt_coff->done_prolog = 0;
+ objfmt_coff->unwind = NULL;
+ objfmt_coff->ssym_imagebase = NULL;
+
+ return objfmt_coff;
+}
+
+static yasm_objfmt *
+coff_objfmt_create(yasm_object *object)
+{
+ yasm_objfmt_coff *objfmt_coff = coff_common_create(object);
+
+ if (objfmt_coff) {
+ /* Support x86 and amd64 machines of x86 arch */
+ if (yasm__strcasecmp(yasm_arch_get_machine(object->arch), "x86") == 0)
+ objfmt_coff->machine = COFF_MACHINE_I386;
+ else if (yasm__strcasecmp(yasm_arch_get_machine(object->arch),
+ "amd64") == 0)
+ objfmt_coff->machine = COFF_MACHINE_AMD64;
+ else {
+ yasm_xfree(objfmt_coff);
+ return NULL;
+ }
+
+ objfmt_coff->objfmt.module = &yasm_coff_LTX_objfmt;
+ objfmt_coff->win32 = 0;
+ objfmt_coff->win64 = 0;
+ }
+ return (yasm_objfmt *)objfmt_coff;
+}
+
+static yasm_objfmt *
+win32_objfmt_create(yasm_object *object)
+{
+ yasm_objfmt_coff *objfmt_coff = coff_common_create(object);
+
+ if (objfmt_coff) {
+ /* Support x86 and amd64 machines of x86 arch.
+ * (amd64 machine supported for backwards compatibility)
+ */
+ if (yasm__strcasecmp(yasm_arch_get_machine(object->arch),
+ "x86") == 0) {
+ objfmt_coff->machine = COFF_MACHINE_I386;
+ objfmt_coff->objfmt.module = &yasm_win32_LTX_objfmt;
+ objfmt_coff->win64 = 0;
+ } else if (yasm__strcasecmp(yasm_arch_get_machine(object->arch),
+ "amd64") == 0) {
+ objfmt_coff->machine = COFF_MACHINE_AMD64;
+ objfmt_coff->objfmt.module = &yasm_win64_LTX_objfmt;
+ objfmt_coff->win64 = 1;
+ } else {
+ yasm_xfree(objfmt_coff);
+ return NULL;
+ }
+
+ objfmt_coff->win32 = 1;
+ /* Define a @feat.00 symbol for win32 safeseh handling */
+ if (!objfmt_coff->win64) {
+ yasm_symrec *feat00;
+ coff_symrec_data *sym_data;
+ feat00 = yasm_symtab_define_equ(object->symtab, "@feat.00",
+ yasm_expr_create_ident(yasm_expr_int(
+ yasm_intnum_create_uint(1)), 0), 0);
+ sym_data = coff_objfmt_sym_set_data(feat00, COFF_SCL_STAT, 0,
+ COFF_SYMTAB_AUX_NONE);
+ sym_data->forcevis = 1;
+ }
+ }
+ return (yasm_objfmt *)objfmt_coff;
+}
+
+static yasm_objfmt *
+win64_objfmt_create(yasm_object *object)
+{
+ yasm_objfmt_coff *objfmt_coff = coff_common_create(object);
+
+ if (objfmt_coff) {
+ /* Support amd64 machine of x86 arch */
+ if (yasm__strcasecmp(yasm_arch_get_machine(object->arch),
+ "amd64") == 0) {
+ objfmt_coff->machine = COFF_MACHINE_AMD64;
+ } else {
+ yasm_xfree(objfmt_coff);
+ return NULL;
+ }
+
+ objfmt_coff->objfmt.module = &yasm_win64_LTX_objfmt;
+ objfmt_coff->win32 = 1;
+ objfmt_coff->win64 = 1;
+ objfmt_coff->ssym_imagebase =
+ yasm_symtab_define_label(object->symtab, "..imagebase", NULL, 0, 0);
+ }
+ return (yasm_objfmt *)objfmt_coff;
+}
+
+static void
+coff_objfmt_init_new_section(yasm_section *sect, unsigned long line)
+{
+ yasm_object *object = yasm_section_get_object(sect);
+ const char *sectname = yasm_section_get_name(sect);
+ yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
+ coff_section_data *data;
+ yasm_symrec *sym;
+
+ data = yasm_xmalloc(sizeof(coff_section_data));
+ data->scnum = objfmt_coff->parse_scnum++;
+ data->flags = 0;
+ data->addr = 0;
+ data->scnptr = 0;
+ data->size = 0;
+ data->relptr = 0;
+ data->nreloc = 0;
+ data->flags2 = 0;
+ data->strtab_name = 0;
+ data->isdebug = 0;
+
+ if (yasm__strncasecmp(sectname, ".debug", 6)==0) {
+ data->flags = COFF_STYP_DATA;
+ if (objfmt_coff->win32)
+ data->flags |= COFF_STYP_DISCARD|COFF_STYP_READ;
+ data->isdebug = 1;
+ } else
+ data->flags = COFF_STYP_TEXT;
+
+ yasm_section_add_data(sect, &coff_section_data_cb, data);
+
+ sym = yasm_symtab_define_label(object->symtab, sectname,
+ yasm_section_bcs_first(sect), 1, line);
+ yasm_symrec_declare(sym, YASM_SYM_GLOBAL, line);
+ coff_objfmt_sym_set_data(sym, COFF_SCL_STAT, 1, COFF_SYMTAB_AUX_SECT);
+ data->sym = sym;
+}
+
+static int
+coff_objfmt_set_section_addr(yasm_section *sect, /*@null@*/ void *d)
+{
+ /*@null@*/ coff_objfmt_output_info *info = (coff_objfmt_output_info *)d;
+ /*@dependent@*/ /*@null@*/ coff_section_data *csd;
+
+ assert(info != NULL);
+ csd = yasm_section_get_data(sect, &coff_section_data_cb);
+ assert(csd != NULL);
+
+ csd->addr = info->addr;
+ info->addr += yasm_bc_next_offset(yasm_section_bcs_last(sect));
+
+ return 0;
+}
+
+static int
+coff_objfmt_output_value(yasm_value *value, unsigned char *buf,
+ unsigned int destsize, unsigned long offset,
+ yasm_bytecode *bc, int warn, /*@null@*/ void *d)
+{
+ /*@null@*/ coff_objfmt_output_info *info = (coff_objfmt_output_info *)d;
+ yasm_objfmt_coff *objfmt_coff;
+ /*@only@*/ /*@null@*/ yasm_intnum *dist = NULL;
+ /*@dependent@*/ /*@null@*/ yasm_intnum *intn;
+ unsigned long intn_val, intn_minus;
+ int retval;
+ unsigned int valsize = value->size;
+
+ assert(info != NULL);
+ objfmt_coff = info->objfmt_coff;
+
+ if (value->abs)
+ value->abs = yasm_expr_simplify(value->abs, 1);
+
+ /* Try to output constant and PC-relative section-local first.
+ * Note this does NOT output any value with a SEG, WRT, external,
+ * cross-section, or non-PC-relative reference (those are handled below).
+ */
+ switch (yasm_value_output_basic(value, buf, destsize, bc, warn,
+ info->object->arch)) {
+ case -1:
+ return 1;
+ case 0:
+ break;
+ default:
+ return 0;
+ }
+
+ /* Handle other expressions, with relocation if necessary */
+ if (value->rshift > 0
+ || (value->seg_of && (value->wrt || value->curpos_rel))
+ || (value->section_rel && (value->wrt || value->curpos_rel))) {
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("coff: relocation too complex"));
+ return 1;
+ }
+
+ intn_val = 0;
+ intn_minus = 0;
+ if (value->rel) {
+ yasm_sym_vis vis = yasm_symrec_get_visibility(value->rel);
+ /*@dependent@*/ /*@null@*/ yasm_symrec *sym = value->rel;
+ unsigned long addr;
+ coff_reloc *reloc;
+ int nobase = info->csd->flags2 & COFF_FLAG_NOBASE;
+
+ /* Sometimes we want the relocation to be generated against one
+ * symbol but the value generated correspond to a different symbol.
+ * This is done through (sym being referenced) WRT (sym used for
+ * reloc). Note both syms need to be in the same section!
+ */
+ if (value->wrt && value->wrt == objfmt_coff->ssym_imagebase)
+ nobase = 1;
+ else if (value->wrt) {
+ /*@dependent@*/ /*@null@*/ yasm_bytecode *rel_precbc, *wrt_precbc;
+
+ if (!yasm_symrec_get_label(sym, &rel_precbc)
+ || !yasm_symrec_get_label(value->wrt, &wrt_precbc)) {
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("coff: wrt expression too complex"));
+ return 1;
+ }
+ dist = yasm_calc_bc_dist(wrt_precbc, rel_precbc);
+ if (!dist) {
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("coff: cannot wrt across sections"));
+ return 1;
+ }
+ sym = value->wrt;
+ }
+
+ if (vis & YASM_SYM_COMMON) {
+ /* In standard COFF, COMMON symbols have their length added in */
+ if (!objfmt_coff->win32) {
+ /*@dependent@*/ /*@null@*/ yasm_expr **csize_expr;
+ /*@dependent@*/ /*@null@*/ yasm_intnum *common_size;
+
+ csize_expr = yasm_symrec_get_common_size(sym);
+ assert(csize_expr != NULL);
+ common_size = yasm_expr_get_intnum(csize_expr, 1);
+ if (!common_size) {
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("coff: common size too complex"));
+ return 1;
+ }
+
+ if (yasm_intnum_sign(common_size) < 0) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("coff: common size is negative"));
+ return 1;
+ }
+
+ intn_val += yasm_intnum_get_uint(common_size);
+ }
+ } else if (!(vis & YASM_SYM_EXTERN) && !objfmt_coff->win64) {
+ /*@dependent@*/ /*@null@*/ yasm_bytecode *sym_precbc;
+
+ /* Local symbols need relocation to their section's start */
+ if (yasm_symrec_get_label(sym, &sym_precbc)) {
+ yasm_section *sym_sect = yasm_bc_get_section(sym_precbc);
+ /*@null@*/ coff_section_data *sym_csd;
+ sym_csd = yasm_section_get_data(sym_sect,
+ &coff_section_data_cb);
+ assert(sym_csd != NULL);
+ sym = sym_csd->sym;
+ intn_val = yasm_bc_next_offset(sym_precbc);
+ if (COFF_SET_VMA)
+ intn_val += sym_csd->addr;
+ }
+ }
+
+ if (value->curpos_rel) {
+ /* For standard COFF, need to adjust to start of section, e.g.
+ * subtract out the bytecode offset.
+ * For Win32 COFF, need to adjust based on value size and position.
+ * For Win64 COFF that's IP-relative, adjust to next bytecode;
+ * the difference between the offset+destsize and BC length is
+ * taken care of by special relocation types.
+ */
+ if (objfmt_coff->win64 && value->ip_rel)
+ intn_val += bc->len*bc->mult_int;
+ else if (objfmt_coff->win32)
+ intn_val += offset+destsize;
+ else
+ intn_minus = bc->offset;
+ }
+
+ if (value->seg_of) {
+ /* Segment generation; zero value. */
+ intn_val = 0;
+ intn_minus = 0;
+ }
+
+ /* Generate reloc */
+ reloc = yasm_xmalloc(sizeof(coff_reloc));
+ addr = bc->offset + offset;
+ if (COFF_SET_VMA)
+ addr += info->addr;
+ reloc->reloc.addr = yasm_intnum_create_uint(addr);
+ reloc->reloc.sym = sym;
+
+ if (value->curpos_rel) {
+ if (objfmt_coff->machine == COFF_MACHINE_I386) {
+ if (valsize == 32)
+ reloc->type = COFF_RELOC_I386_REL32;
+ else {
+ yasm_error_set(YASM_ERROR_TYPE,
+ N_("coff: invalid relocation size"));
+ return 1;
+ }
+ } else if (objfmt_coff->machine == COFF_MACHINE_AMD64) {
+ if (valsize != 32) {
+ yasm_error_set(YASM_ERROR_TYPE,
+ N_("coff: invalid relocation size"));
+ return 1;
+ }
+ if (!value->ip_rel)
+ reloc->type = COFF_RELOC_AMD64_REL32;
+ else switch (bc->len*bc->mult_int - (offset+destsize)) {
+ case 0:
+ reloc->type = COFF_RELOC_AMD64_REL32;
+ break;
+ case 1:
+ reloc->type = COFF_RELOC_AMD64_REL32_1;
+ break;
+ case 2:
+ reloc->type = COFF_RELOC_AMD64_REL32_2;
+ break;
+ case 3:
+ reloc->type = COFF_RELOC_AMD64_REL32_3;
+ break;
+ case 4:
+ reloc->type = COFF_RELOC_AMD64_REL32_4;
+ break;
+ case 5:
+ reloc->type = COFF_RELOC_AMD64_REL32_5;
+ break;
+ default:
+ yasm_error_set(YASM_ERROR_TYPE,
+ N_("coff: invalid relocation size"));
+ return 1;
+ }
+ } else
+ yasm_internal_error(N_("coff objfmt: unrecognized machine"));
+ } else if (value->seg_of) {
+ if (objfmt_coff->machine == COFF_MACHINE_I386)
+ reloc->type = COFF_RELOC_I386_SECTION;
+ else if (objfmt_coff->machine == COFF_MACHINE_AMD64)
+ reloc->type = COFF_RELOC_AMD64_SECTION;
+ else
+ yasm_internal_error(N_("coff objfmt: unrecognized machine"));
+ } else if (value->section_rel) {
+ if (objfmt_coff->machine == COFF_MACHINE_I386)
+ reloc->type = COFF_RELOC_I386_SECREL;
+ else if (objfmt_coff->machine == COFF_MACHINE_AMD64)
+ reloc->type = COFF_RELOC_AMD64_SECREL;
+ else
+ yasm_internal_error(N_("coff objfmt: unrecognized machine"));
+ } else {
+ if (objfmt_coff->machine == COFF_MACHINE_I386) {
+ if (nobase)
+ reloc->type = COFF_RELOC_I386_ADDR32NB;
+ else
+ reloc->type = COFF_RELOC_I386_ADDR32;
+ } else if (objfmt_coff->machine == COFF_MACHINE_AMD64) {
+ if (valsize == 32) {
+ if (nobase)
+ reloc->type = COFF_RELOC_AMD64_ADDR32NB;
+ else
+ reloc->type = COFF_RELOC_AMD64_ADDR32;
+ } else if (valsize == 64)
+ reloc->type = COFF_RELOC_AMD64_ADDR64;
+ else {
+ yasm_error_set(YASM_ERROR_TYPE,
+ N_("coff: invalid relocation size"));
+ return 1;
+ }
+ } else
+ yasm_internal_error(N_("coff objfmt: unrecognized machine"));
+ }
+ info->csd->nreloc++;
+ yasm_section_add_reloc(info->sect, (yasm_reloc *)reloc, yasm_xfree);
+ }
+
+ /* Build up final integer output from intn_val, intn_minus, value->abs,
+ * and dist. We do all this at the end to avoid creating temporary
+ * intnums above (except for dist).
+ */
+ if (intn_minus <= intn_val)
+ intn = yasm_intnum_create_uint(intn_val-intn_minus);
+ else {
+ intn = yasm_intnum_create_uint(intn_minus-intn_val);
+ yasm_intnum_calc(intn, YASM_EXPR_NEG, NULL);
+ }
+
+ if (value->abs) {
+ yasm_intnum *intn2 = yasm_expr_get_intnum(&value->abs, 0);
+ if (!intn2) {
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("coff: relocation too complex"));
+ yasm_intnum_destroy(intn);
+ if (dist)
+ yasm_intnum_destroy(dist);
+ return 1;
+ }
+ yasm_intnum_calc(intn, YASM_EXPR_ADD, intn2);
+ }
+
+ if (dist) {
+ yasm_intnum_calc(intn, YASM_EXPR_ADD, dist);
+ yasm_intnum_destroy(dist);
+ }
+
+ retval = yasm_arch_intnum_tobytes(info->object->arch, intn, buf, destsize,
+ valsize, 0, bc, warn);
+ yasm_intnum_destroy(intn);
+ return retval;
+}
+
+static int
+coff_objfmt_output_bytecode(yasm_bytecode *bc, /*@null@*/ void *d)
+{
+ /*@null@*/ coff_objfmt_output_info *info = (coff_objfmt_output_info *)d;
+ /*@null@*/ /*@only@*/ unsigned char *bigbuf;
+ unsigned long size = REGULAR_OUTBUF_SIZE;
+ int gap;
+
+ assert(info != NULL);
+
+ bigbuf = yasm_bc_tobytes(bc, info->buf, &size, &gap, info,
+ coff_objfmt_output_value, NULL);
+
+ /* Don't bother doing anything else if size ended up being 0. */
+ if (size == 0) {
+ if (bigbuf)
+ yasm_xfree(bigbuf);
+ return 0;
+ }
+
+ info->csd->size += size;
+
+ /* Warn that gaps are converted to 0 and write out the 0's. */
+ if (gap) {
+ unsigned long left;
+ yasm_warn_set(YASM_WARN_UNINIT_CONTENTS,
+ N_("uninitialized space declared in code/data section: zeroing"));
+ /* Write out in chunks */
+ memset(info->buf, 0, REGULAR_OUTBUF_SIZE);
+ left = size;
+ while (left > REGULAR_OUTBUF_SIZE) {
+ fwrite(info->buf, REGULAR_OUTBUF_SIZE, 1, info->f);
+ left -= REGULAR_OUTBUF_SIZE;
+ }
+ fwrite(info->buf, left, 1, info->f);
+ } else {
+ /* Output buf (or bigbuf if non-NULL) to file */
+ fwrite(bigbuf ? bigbuf : info->buf, (size_t)size, 1, info->f);
+ }
+
+ /* If bigbuf was allocated, free it */
+ if (bigbuf)
+ yasm_xfree(bigbuf);
+
+ return 0;
+}
+
+static int
+coff_objfmt_output_section(yasm_section *sect, /*@null@*/ void *d)
+{
+ /*@null@*/ coff_objfmt_output_info *info = (coff_objfmt_output_info *)d;
+ /*@dependent@*/ /*@null@*/ coff_section_data *csd;
+ long pos;
+ coff_reloc *reloc;
+ unsigned char *localbuf;
+
+ assert(info != NULL);
+ csd = yasm_section_get_data(sect, &coff_section_data_cb);
+ assert(csd != NULL);
+
+ /* Add to strtab if in win32 format and name > 8 chars */
+ if (info->objfmt_coff->win32) {
+ size_t namelen = strlen(yasm_section_get_name(sect));
+ if (namelen > 8) {
+ csd->strtab_name = info->strtab_offset;
+ info->strtab_offset += (unsigned long)(namelen + 1);
+ }
+ }
+
+ if (!csd->isdebug)
+ csd->addr = info->addr;
+
+ if ((csd->flags & COFF_STYP_STD_MASK) == COFF_STYP_BSS) {
+ /* Don't output BSS sections.
+ * TODO: Check for non-reserve bytecodes?
+ */
+ pos = 0; /* position = 0 because it's not in the file */
+ csd->size = yasm_bc_next_offset(yasm_section_bcs_last(sect));
+ } else {
+ pos = ftell(info->f);
+ if (pos == -1) {
+ yasm__fatal(N_("could not get file position on output file"));
+ /*@notreached@*/
+ return 1;
+ }
+
+ info->sect = sect;
+ info->csd = csd;
+ yasm_section_bcs_traverse(sect, info->errwarns, info,
+ coff_objfmt_output_bytecode);
+
+ /* Sanity check final section size */
+ if (yasm_errwarns_num_errors(info->errwarns, 0) == 0 &&
+ csd->size != yasm_bc_next_offset(yasm_section_bcs_last(sect)))
+ yasm_internal_error(
+ N_("coff: section computed size did not match actual size"));
+ }
+
+ /* Empty? Go on to next section */
+ if (csd->size == 0)
+ return 0;
+
+ if (!csd->isdebug)
+ info->addr += csd->size;
+ csd->scnptr = (unsigned long)pos;
+
+ /* No relocations to output? Go on to next section */
+ if (csd->nreloc == 0)
+ return 0;
+
+ pos = ftell(info->f);
+ if (pos == -1) {
+ yasm__fatal(N_("could not get file position on output file"));
+ /*@notreached@*/
+ return 1;
+ }
+ csd->relptr = (unsigned long)pos;
+
+ /* If >=64K relocs (for Win32/64), we set a flag in the section header
+ * (NRELOC_OVFL) and the first relocation contains the number of relocs.
+ */
+ if (csd->nreloc >= 64*1024 && info->objfmt_coff->win32) {
+ localbuf = info->buf;
+ YASM_WRITE_32_L(localbuf, csd->nreloc+1); /* address of relocation */
+ YASM_WRITE_32_L(localbuf, 0); /* relocated symbol */
+ YASM_WRITE_16_L(localbuf, 0); /* type of relocation */
+ fwrite(info->buf, 10, 1, info->f);
+ }
+
+ reloc = (coff_reloc *)yasm_section_relocs_first(sect);
+ while (reloc) {
+ /*@null@*/ coff_symrec_data *csymd;
+ localbuf = info->buf;
+
+ csymd = yasm_symrec_get_data(reloc->reloc.sym, &coff_symrec_data_cb);
+ if (!csymd)
+ yasm_internal_error(
+ N_("coff: no symbol data for relocated symbol"));
+
+ yasm_intnum_get_sized(reloc->reloc.addr, localbuf, 4, 32, 0, 0, 0);
+ localbuf += 4; /* address of relocation */
+ YASM_WRITE_32_L(localbuf, csymd->index); /* relocated symbol */
+ YASM_WRITE_16_L(localbuf, reloc->type); /* type of relocation */
+ fwrite(info->buf, 10, 1, info->f);
+
+ reloc = (coff_reloc *)yasm_section_reloc_next((yasm_reloc *)reloc);
+ }
+
+ return 0;
+}
+
+static int
+coff_objfmt_output_sectstr(yasm_section *sect, /*@null@*/ void *d)
+{
+ /*@null@*/ coff_objfmt_output_info *info = (coff_objfmt_output_info *)d;
+ const char *name;
+ size_t len;
+
+ /* Add to strtab if in win32 format and name > 8 chars */
+ if (!info->objfmt_coff->win32)
+ return 0;
+
+ name = yasm_section_get_name(sect);
+ len = strlen(name);
+ if (len > 8)
+ fwrite(name, len+1, 1, info->f);
+ return 0;
+}
+
+static int
+coff_objfmt_output_secthead(yasm_section *sect, /*@null@*/ void *d)
+{
+ /*@null@*/ coff_objfmt_output_info *info = (coff_objfmt_output_info *)d;
+ yasm_objfmt_coff *objfmt_coff;
+ /*@dependent@*/ /*@null@*/ coff_section_data *csd;
+ unsigned char *localbuf;
+ unsigned long align = yasm_section_get_align(sect);
+
+ assert(info != NULL);
+ objfmt_coff = info->objfmt_coff;
+ csd = yasm_section_get_data(sect, &coff_section_data_cb);
+ assert(csd != NULL);
+
+ /* Check to see if alignment is supported size */
+ if (align > 8192)
+ align = 8192;
+
+ /* Convert alignment into flags setting */
+ csd->flags &= ~COFF_STYP_ALIGN_MASK;
+ while (align != 0) {
+ csd->flags += 1<<COFF_STYP_ALIGN_SHIFT;
+ align >>= 1;
+ }
+
+ /* section name */
+ localbuf = info->buf;
+ if (strlen(yasm_section_get_name(sect)) > 8) {
+ char namenum[30];
+ sprintf(namenum, "/%ld", csd->strtab_name);
+ strncpy((char *)localbuf, namenum, 8);
+ } else
+ strncpy((char *)localbuf, yasm_section_get_name(sect), 8);
+ localbuf += 8;
+ if (csd->isdebug) {
+ YASM_WRITE_32_L(localbuf, 0); /* physical address */
+ YASM_WRITE_32_L(localbuf, 0); /* virtual address */
+ } else {
+ YASM_WRITE_32_L(localbuf, csd->addr); /* physical address */
+ if (COFF_SET_VMA)
+ YASM_WRITE_32_L(localbuf, csd->addr);/* virtual address */
+ else
+ YASM_WRITE_32_L(localbuf, 0); /* virtual address */
+ }
+ YASM_WRITE_32_L(localbuf, csd->size); /* section size */
+ YASM_WRITE_32_L(localbuf, csd->scnptr); /* file ptr to data */
+ YASM_WRITE_32_L(localbuf, csd->relptr); /* file ptr to relocs */
+ YASM_WRITE_32_L(localbuf, 0); /* file ptr to line nums */
+ if (csd->nreloc >= 64*1024) {
+ /* Win32/64 has special handling for this case. */
+ if (objfmt_coff->win32)
+ csd->flags |= COFF_STYP_NRELOC_OVFL;
+ else {
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("too many relocations in section `%s'"),
+ yasm_section_get_name(sect));
+ yasm_errwarn_propagate(info->errwarns, 0);
+ }
+ YASM_WRITE_16_L(localbuf, 0xFFFF); /* max out */
+ } else
+ YASM_WRITE_16_L(localbuf, csd->nreloc); /* num of relocation entries */
+ YASM_WRITE_16_L(localbuf, 0); /* num of line number entries */
+ YASM_WRITE_32_L(localbuf, csd->flags); /* flags */
+ fwrite(info->buf, 40, 1, info->f);
+
+ return 0;
+}
+
+static int
+coff_objfmt_count_sym(yasm_symrec *sym, /*@null@*/ void *d)
+{
+ /*@null@*/ coff_objfmt_output_info *info = (coff_objfmt_output_info *)d;
+ yasm_sym_vis vis = yasm_symrec_get_visibility(sym);
+ coff_symrec_data *sym_data;
+
+ assert(info != NULL);
+
+ sym_data = yasm_symrec_get_data(sym, &coff_symrec_data_cb);
+
+ if (info->all_syms || vis != YASM_SYM_LOCAL || yasm_symrec_is_abs(sym) ||
+ (sym_data && sym_data->forcevis)) {
+ /* Save index in symrec data */
+ if (!sym_data)
+ sym_data = coff_objfmt_sym_set_data(sym, COFF_SCL_NULL, 0,
+ COFF_SYMTAB_AUX_NONE);
+ /* Set storage class based on visibility if not already set */
+ if (sym_data->sclass == COFF_SCL_NULL) {
+ if (vis & (YASM_SYM_EXTERN|YASM_SYM_GLOBAL|YASM_SYM_COMMON))
+ sym_data->sclass = COFF_SCL_EXT;
+ else
+ sym_data->sclass = COFF_SCL_STAT;
+ }
+
+ sym_data->index = info->indx;
+
+ info->indx += sym_data->numaux + 1;
+ }
+ return 0;
+}
+
+static int
+coff_objfmt_output_sym(yasm_symrec *sym, /*@null@*/ void *d)
+{
+ /*@null@*/ coff_objfmt_output_info *info = (coff_objfmt_output_info *)d;
+ yasm_sym_vis vis = yasm_symrec_get_visibility(sym);
+ int is_abs = yasm_symrec_is_abs(sym);
+ /*@dependent@*/ /*@null@*/ coff_symrec_data *csymd;
+ yasm_valparamhead *objext_valparams =
+ yasm_symrec_get_objext_valparams(sym);
+ csymd = yasm_symrec_get_data(sym, &coff_symrec_data_cb);
+
+ assert(info != NULL);
+
+ /* Look for "function" flag on global syms */
+ if (csymd && csymd->type == 0 && (vis & YASM_SYM_GLOBAL) != 0) {
+ if (objext_valparams) {
+ const char *id = yasm_vp_id(yasm_vps_first(objext_valparams));
+ if (yasm__strcasecmp(id, "function") == 0)
+ csymd->type = 0x20;
+ }
+ }
+
+ /* Don't output local syms unless outputting all syms */
+ if (info->all_syms || vis != YASM_SYM_LOCAL || is_abs ||
+ (csymd && csymd->forcevis)) {
+ /*@only*/ char *name;
+ const yasm_expr *equ_val;
+ const yasm_intnum *intn;
+ unsigned char *localbuf;
+ size_t len;
+ int aux;
+ unsigned long value = 0;
+ unsigned int scnum = 0xfffe; /* -2 = debugging symbol */
+ /*@dependent@*/ /*@null@*/ yasm_section *sect;
+ /*@dependent@*/ /*@null@*/ yasm_bytecode *precbc;
+ unsigned long scnlen = 0; /* for sect auxent */
+ unsigned long nreloc = 0; /* for sect auxent */
+ yasm_objfmt_coff *objfmt_coff = info->objfmt_coff;
+
+ if (is_abs)
+ name = yasm__xstrdup(".absolut");
+ else
+ name = yasm_symrec_get_global_name(sym, info->object);
+ len = strlen(name);
+
+ /* Get symrec's of_data (needed for storage class) */
+ if (!csymd)
+ yasm_internal_error(N_("coff: expected sym data to be present"));
+
+ /* Look at symrec for value/scnum/etc. */
+ if (yasm_symrec_get_label(sym, &precbc)) {
+ if (precbc)
+ sect = yasm_bc_get_section(precbc);
+ else
+ sect = NULL;
+ /* it's a label: get value and offset.
+ * If there is not a section, leave as debugging symbol.
+ */
+ if (sect) {
+ /*@dependent@*/ /*@null@*/ coff_section_data *csectd;
+ csectd = yasm_section_get_data(sect, &coff_section_data_cb);
+ if (csectd) {
+ scnum = csectd->scnum;
+ scnlen = csectd->size;
+ nreloc = csectd->nreloc;
+ if (COFF_SET_VMA)
+ value = csectd->addr;
+ } else
+ yasm_internal_error(N_("didn't understand section"));
+ if (precbc)
+ value += yasm_bc_next_offset(precbc);
+ }
+ } else if ((equ_val = yasm_symrec_get_equ(sym))) {
+ yasm_expr *equ_val_copy = yasm_expr_copy(equ_val);
+ intn = yasm_expr_get_intnum(&equ_val_copy, 1);
+ if (!intn) {
+ if (vis & YASM_SYM_GLOBAL) {
+ yasm_error_set(YASM_ERROR_NOT_CONSTANT,
+ N_("global EQU value not an integer expression"));
+ yasm_errwarn_propagate(info->errwarns, equ_val->line);
+ }
+ } else
+ value = yasm_intnum_get_uint(intn);
+ yasm_expr_destroy(equ_val_copy);
+
+ scnum = 0xffff; /* -1 = absolute symbol */
+ } else {
+ if (vis & YASM_SYM_COMMON) {
+ /*@dependent@*/ /*@null@*/ yasm_expr **csize_expr;
+ csize_expr = yasm_symrec_get_common_size(sym);
+ assert(csize_expr != NULL);
+ intn = yasm_expr_get_intnum(csize_expr, 1);
+ if (!intn) {
+ yasm_error_set(YASM_ERROR_NOT_CONSTANT,
+ N_("COMMON data size not an integer expression"));
+ yasm_errwarn_propagate(info->errwarns,
+ (*csize_expr)->line);
+ } else
+ value = yasm_intnum_get_uint(intn);
+ scnum = 0;
+ }
+ if (vis & YASM_SYM_EXTERN)
+ scnum = 0;
+ }
+
+ localbuf = info->buf;
+ if (len > 8) {
+ YASM_WRITE_32_L(localbuf, 0); /* "zeros" field */
+ YASM_WRITE_32_L(localbuf, info->strtab_offset); /* strtab offset */
+ info->strtab_offset += (unsigned long)(len+1);
+ } else {
+ /* <8 chars, so no string table entry needed */
+ strncpy((char *)localbuf, name, 8);
+ localbuf += 8;
+ }
+ YASM_WRITE_32_L(localbuf, value); /* value */
+ YASM_WRITE_16_L(localbuf, scnum); /* section number */
+ YASM_WRITE_16_L(localbuf, csymd->type); /* type */
+ YASM_WRITE_8(localbuf, csymd->sclass); /* storage class */
+ YASM_WRITE_8(localbuf, csymd->numaux); /* number of aux entries */
+ fwrite(info->buf, 18, 1, info->f);
+ for (aux=0; aux<csymd->numaux; aux++) {
+ localbuf = info->buf;
+ memset(localbuf, 0, 18);
+ switch (csymd->auxtype) {
+ case COFF_SYMTAB_AUX_NONE:
+ break;
+ case COFF_SYMTAB_AUX_SECT:
+ YASM_WRITE_32_L(localbuf, scnlen); /* section length */
+ YASM_WRITE_16_L(localbuf, nreloc); /* number relocs */
+ YASM_WRITE_16_L(localbuf, 0); /* number line nums */
+ break;
+ case COFF_SYMTAB_AUX_FILE:
+ len = strlen(csymd->aux[0].fname);
+ if (len > 14) {
+ YASM_WRITE_32_L(localbuf, 0);
+ YASM_WRITE_32_L(localbuf, info->strtab_offset);
+ info->strtab_offset += (unsigned long)(len+1);
+ } else
+ strncpy((char *)localbuf, csymd->aux[0].fname, 14);
+ break;
+ default:
+ yasm_internal_error(
+ N_("coff: unrecognized aux symtab type"));
+ }
+ fwrite(info->buf, 18, 1, info->f);
+ }
+ yasm_xfree(name);
+ }
+ return 0;
+}
+
+static int
+coff_objfmt_output_str(yasm_symrec *sym, /*@null@*/ void *d)
+{
+ /*@null@*/ coff_objfmt_output_info *info = (coff_objfmt_output_info *)d;
+ yasm_sym_vis vis = yasm_symrec_get_visibility(sym);
+ /*@dependent@*/ /*@null@*/ coff_symrec_data *csymd;
+ csymd = yasm_symrec_get_data(sym, &coff_symrec_data_cb);
+
+ assert(info != NULL);
+
+ /* Don't output local syms unless outputting all syms */
+ if (info->all_syms || vis != YASM_SYM_LOCAL ||
+ (csymd && csymd->forcevis)) {
+ /*@only@*/ char *name = yasm_symrec_get_global_name(sym, info->object);
+ size_t len = strlen(name);
+ int aux;
+
+ if (!csymd)
+ yasm_internal_error(N_("coff: expected sym data to be present"));
+
+ if (len > 8)
+ fwrite(name, len+1, 1, info->f);
+ for (aux=0; aux<csymd->numaux; aux++) {
+ switch (csymd->auxtype) {
+ case COFF_SYMTAB_AUX_FILE:
+ len = strlen(csymd->aux[0].fname);
+ if (len > 14)
+ fwrite(csymd->aux[0].fname, len+1, 1, info->f);
+ break;
+ default:
+ break;
+ }
+ }
+ yasm_xfree(name);
+ }
+ return 0;
+}
+
+static void
+coff_objfmt_output(yasm_object *object, FILE *f, int all_syms,
+ yasm_errwarns *errwarns)
+{
+ yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
+ coff_objfmt_output_info info;
+ unsigned char *localbuf;
+ long pos;
+ unsigned long symtab_pos;
+ unsigned long symtab_count;
+ unsigned int flags;
+ unsigned long ts;
+
+ if (objfmt_coff->proc_frame) {
+ yasm_error_set_xref(objfmt_coff->proc_frame,
+ N_("procedure started here"));
+ yasm_error_set(YASM_ERROR_GENERAL,
+ N_("end of file in procedure frame"));
+ yasm_errwarn_propagate(errwarns, 0);
+ return;
+ }
+
+ if (objfmt_coff->filesym_data->aux[0].fname)
+ yasm_xfree(objfmt_coff->filesym_data->aux[0].fname);
if (!object->deb_filename) {
object->deb_filename = yasm_replace_path(
objfmt_coff->objfmt.module->replace_map, objfmt_coff->objfmt.module->replace_map_size,
object->src_filename, strlen(object->src_filename));
}
- objfmt_coff->filesym_data->aux[0].fname =
+ objfmt_coff->filesym_data->aux[0].fname =
yasm__xstrdup(object->deb_filename);
-
- /* Force all syms for win64 because they're needed for relocations.
- * FIXME: Not *all* syms need to be output, only the ones needed for
- * relocation. Find a way to do that someday.
- */
- all_syms |= objfmt_coff->win64;
-
- info.strtab_offset = 4;
- info.object = object;
- info.objfmt_coff = objfmt_coff;
- info.errwarns = errwarns;
- info.f = f;
- info.buf = yasm_xmalloc(REGULAR_OUTBUF_SIZE);
-
- /* Allocate space for headers by seeking forward */
- if (fseek(f, (long)(20+40*(objfmt_coff->parse_scnum-1)), SEEK_SET) < 0) {
- yasm__fatal(N_("could not seek on output file"));
- /*@notreached@*/
- return;
- }
-
- /* Finalize symbol table (assign index to each symbol) */
- info.indx = 0;
- info.all_syms = all_syms;
- yasm_symtab_traverse(object->symtab, &info, coff_objfmt_count_sym);
- symtab_count = info.indx;
-
- /* Section data/relocs */
- if (COFF_SET_VMA) {
- /* If we're setting the VMA, we need to do a first section pass to
- * determine each section's addr value before actually outputting
- * relocations, as a relocation's section address is added into the
- * addends in the generated code.
- */
- info.addr = 0;
- if (yasm_object_sections_traverse(object, &info,
- coff_objfmt_set_section_addr))
- return;
- }
- info.addr = 0;
- if (yasm_object_sections_traverse(object, &info,
- coff_objfmt_output_section))
- return;
-
- /* Symbol table */
- pos = ftell(f);
- if (pos == -1) {
- yasm__fatal(N_("could not get file position on output file"));
- /*@notreached@*/
- return;
- }
- symtab_pos = (unsigned long)pos;
- yasm_symtab_traverse(object->symtab, &info, coff_objfmt_output_sym);
-
- /* String table */
- yasm_fwrite_32_l(info.strtab_offset, f); /* total length */
- yasm_object_sections_traverse(object, &info, coff_objfmt_output_sectstr);
- yasm_symtab_traverse(object->symtab, &info, coff_objfmt_output_str);
-
- /* Write headers */
- if (fseek(f, 0, SEEK_SET) < 0) {
- yasm__fatal(N_("could not seek on output file"));
- /*@notreached@*/
- return;
- }
-
- localbuf = info.buf;
- YASM_WRITE_16_L(localbuf, objfmt_coff->machine); /* magic number */
- YASM_WRITE_16_L(localbuf, objfmt_coff->parse_scnum-1);/* number of sects */
- if (getenv("YASM_TEST_SUITE"))
- ts = 0;
- else
- ts = (unsigned long)time(NULL);
- YASM_WRITE_32_L(localbuf, ts); /* time/date stamp */
- YASM_WRITE_32_L(localbuf, symtab_pos); /* file ptr to symtab */
- YASM_WRITE_32_L(localbuf, symtab_count); /* number of symtabs */
- YASM_WRITE_16_L(localbuf, 0); /* size of optional header (none) */
- /* flags */
- flags = 0;
- if (strcmp(yasm_dbgfmt_keyword(object->dbgfmt), "null")==0)
- flags = COFF_F_LNNO;
- if (!all_syms)
- flags |= COFF_F_LSYMS;
- if (objfmt_coff->machine != COFF_MACHINE_AMD64)
- flags |= COFF_F_AR32WR;
- YASM_WRITE_16_L(localbuf, flags);
- fwrite(info.buf, 20, 1, f);
-
- yasm_object_sections_traverse(object, &info, coff_objfmt_output_secthead);
-
- yasm_xfree(info.buf);
-}
-
-static void
-coff_objfmt_destroy(yasm_objfmt *objfmt)
-{
- yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)objfmt;
- if (objfmt_coff->filesym_data->aux[0].fname)
- yasm_xfree(objfmt_coff->filesym_data->aux[0].fname);
- if (objfmt_coff->unwind)
- yasm_win64__uwinfo_destroy(objfmt_coff->unwind);
- yasm_xfree(objfmt);
-}
-
-static yasm_section *
-coff_objfmt_add_default_section(yasm_object *object)
-{
- yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
- yasm_section *retval;
- coff_section_data *csd;
- int isnew;
-
- retval = yasm_object_get_general(object, ".text", 16, 1, 0, &isnew, 0);
- if (isnew) {
- csd = yasm_section_get_data(retval, &coff_section_data_cb);
- csd->flags = COFF_STYP_TEXT;
- if (objfmt_coff->win32)
- csd->flags |= COFF_STYP_EXECUTE | COFF_STYP_READ;
- yasm_section_set_default(retval, 1);
- }
- return retval;
-}
-
-struct coff_section_switch_data {
- int isdefault;
- int gasflags;
- unsigned long flags;
- unsigned long flags2;
- /*@only@*/ /*@null@*/ yasm_intnum *align_intn;
-};
-
-/* GAS-style flags */
-static int
-coff_helper_gasflags(void *obj, yasm_valparam *vp, unsigned long line, void *d,
- /*@unused@*/ uintptr_t arg)
-{
- struct coff_section_switch_data *data =
- (struct coff_section_switch_data *)d;
- int alloc = 0, load = 0, readonly = 0, code = 0, datasect = 0;
- int shared = 0;
- const char *s = yasm_vp_string(vp);
- size_t i;
-
- if (!s) {
- yasm_error_set(YASM_ERROR_VALUE, N_("non-string section attribute"));
- return -1;
- }
-
- /* For GAS, default to read/write data */
- if (data->isdefault)
- data->flags = COFF_STYP_TEXT | COFF_STYP_READ | COFF_STYP_WRITE;
-
- for (i=0; i<strlen(s); i++) {
- switch (s[i]) {
- case 'a':
- break;
- case 'b':
- alloc = 1;
- load = 0;
- break;
- case 'n':
- load = 0;
- break;
- case 's':
- shared = 1;
- /*@fallthrough@*/
- case 'd':
- datasect = 1;
- load = 1;
- readonly = 0;
- break;
- case 'x':
- code = 1;
- load = 1;
- break;
- case 'r':
- datasect = 1;
- load = 1;
- readonly = 1;
- break;
- case 'w':
- readonly = 0;
- break;
- default:
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("unrecognized section attribute: `%c'"),
- s[i]);
- }
- }
-
- if (code)
- data->flags = COFF_STYP_TEXT | COFF_STYP_EXECUTE | COFF_STYP_READ;
- else if (datasect)
- data->flags = COFF_STYP_DATA | COFF_STYP_READ | COFF_STYP_WRITE;
- else if (readonly)
- data->flags = COFF_STYP_DATA | COFF_STYP_READ;
- else if (load)
- data->flags = COFF_STYP_TEXT;
- else if (alloc)
- data->flags = COFF_STYP_BSS;
-
- if (shared)
- data->flags |= COFF_STYP_SHARED;
-
- data->gasflags = 1;
- return 0;
-}
-
-static /*@observer@*/ /*@null@*/ yasm_section *
-coff_objfmt_section_switch(yasm_object *object, yasm_valparamhead *valparams,
- /*@unused@*/ /*@null@*/
- yasm_valparamhead *objext_valparams,
- unsigned long line)
-{
- yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
- yasm_valparam *vp;
- yasm_section *retval;
- int isnew;
- int iscode = 0;
- int flags_override;
- const char *sectname;
- char *realname;
- int resonly = 0;
- unsigned long align = 0;
- coff_section_data *csd;
-
- struct coff_section_switch_data data;
-
- static const yasm_dir_help help[] = {
- { "code", 0, yasm_dir_helper_flag_set,
- offsetof(struct coff_section_switch_data, flags),
- COFF_STYP_TEXT | COFF_STYP_EXECUTE | COFF_STYP_READ },
- { "text", 0, yasm_dir_helper_flag_set,
- offsetof(struct coff_section_switch_data, flags),
- COFF_STYP_TEXT | COFF_STYP_EXECUTE | COFF_STYP_READ },
- { "data", 0, yasm_dir_helper_flag_set,
- offsetof(struct coff_section_switch_data, flags),
- COFF_STYP_DATA | COFF_STYP_READ | COFF_STYP_WRITE },
- { "rdata", 0, yasm_dir_helper_flag_set,
- offsetof(struct coff_section_switch_data, flags),
- COFF_STYP_DATA | COFF_STYP_READ },
- { "bss", 0, yasm_dir_helper_flag_set,
- offsetof(struct coff_section_switch_data, flags),
- COFF_STYP_BSS | COFF_STYP_READ | COFF_STYP_WRITE },
- { "info", 0, yasm_dir_helper_flag_set,
- offsetof(struct coff_section_switch_data, flags),
- COFF_STYP_INFO | COFF_STYP_DISCARD | COFF_STYP_READ },
- { "gasflags", 1, coff_helper_gasflags, 0, 0 },
- /* Win32 only below this point */
- { "discard", 0, yasm_dir_helper_flag_or,
- offsetof(struct coff_section_switch_data, flags), COFF_STYP_DISCARD},
- { "nodiscard", 0, yasm_dir_helper_flag_and,
- offsetof(struct coff_section_switch_data, flags), COFF_STYP_DISCARD},
- { "cache", 0, yasm_dir_helper_flag_and,
- offsetof(struct coff_section_switch_data, flags), COFF_STYP_NOCACHE},
- { "nocache", 0, yasm_dir_helper_flag_or,
- offsetof(struct coff_section_switch_data, flags), COFF_STYP_NOCACHE},
- { "page", 0, yasm_dir_helper_flag_and,
- offsetof(struct coff_section_switch_data, flags), COFF_STYP_NOPAGE },
- { "nopage", 0, yasm_dir_helper_flag_or,
- offsetof(struct coff_section_switch_data, flags), COFF_STYP_NOPAGE },
- { "share", 0, yasm_dir_helper_flag_or,
- offsetof(struct coff_section_switch_data, flags), COFF_STYP_SHARED },
- { "noshare", 0, yasm_dir_helper_flag_and,
- offsetof(struct coff_section_switch_data, flags), COFF_STYP_SHARED },
- { "execute", 0, yasm_dir_helper_flag_or,
- offsetof(struct coff_section_switch_data, flags), COFF_STYP_EXECUTE},
- { "noexecute", 0, yasm_dir_helper_flag_and,
- offsetof(struct coff_section_switch_data, flags), COFF_STYP_EXECUTE},
- { "read", 0, yasm_dir_helper_flag_or,
- offsetof(struct coff_section_switch_data, flags), COFF_STYP_READ },
- { "noread", 0, yasm_dir_helper_flag_and,
- offsetof(struct coff_section_switch_data, flags), COFF_STYP_READ },
- { "write", 0, yasm_dir_helper_flag_or,
- offsetof(struct coff_section_switch_data, flags), COFF_STYP_WRITE },
- { "nowrite", 0, yasm_dir_helper_flag_and,
- offsetof(struct coff_section_switch_data, flags), COFF_STYP_WRITE },
- { "base", 0, yasm_dir_helper_flag_and,
- offsetof(struct coff_section_switch_data, flags2), COFF_FLAG_NOBASE},
- { "nobase", 0, yasm_dir_helper_flag_or,
- offsetof(struct coff_section_switch_data, flags2), COFF_FLAG_NOBASE},
- { "align", 1, yasm_dir_helper_intn,
- offsetof(struct coff_section_switch_data, align_intn), 0 }
- };
-
- vp = yasm_vps_first(valparams);
- sectname = yasm_vp_string(vp);
- if (!sectname)
- return NULL;
- vp = yasm_vps_next(vp);
-
- data.isdefault = 0;
- data.gasflags = 0;
- data.flags = 0;
- data.flags2 = 0;
- data.align_intn = NULL;
-
- if (strcmp(sectname, ".data") == 0) {
- data.flags = COFF_STYP_DATA | COFF_STYP_READ | COFF_STYP_WRITE;
- if (objfmt_coff->win32) {
- if (objfmt_coff->machine == COFF_MACHINE_AMD64)
- align = 16;
- else
- align = 4;
- }
- } else if (strcmp(sectname, ".bss") == 0) {
- data.flags = COFF_STYP_BSS | COFF_STYP_READ | COFF_STYP_WRITE;
- if (objfmt_coff->win32) {
- if (objfmt_coff->machine == COFF_MACHINE_AMD64)
- align = 16;
- else
- align = 4;
- }
- resonly = 1;
- } else if (strcmp(sectname, ".text") == 0) {
- data.flags = COFF_STYP_TEXT | COFF_STYP_EXECUTE | COFF_STYP_READ;
- if (objfmt_coff->win32)
- align = 16;
- } else if (strcmp(sectname, ".rdata") == 0
- || strncmp(sectname, ".rodata", 7) == 0
- || strncmp(sectname, ".rdata$", 7) == 0) {
- data.flags = COFF_STYP_DATA | COFF_STYP_READ;
- if (objfmt_coff->win32)
- align = 8;
- else
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("Standard COFF does not support read-only data sections"));
- } else if (strcmp(sectname, ".drectve") == 0) {
- data.flags = COFF_STYP_INFO;
- if (objfmt_coff->win32)
- data.flags |= COFF_STYP_DISCARD | COFF_STYP_READ;
- } else if (objfmt_coff->win64 && strcmp(sectname, ".pdata") == 0) {
- data.flags = COFF_STYP_DATA | COFF_STYP_READ;
- align = 4;
- data.flags2 = COFF_FLAG_NOBASE;
- } else if (objfmt_coff->win64 && strcmp(sectname, ".xdata") == 0) {
- data.flags = COFF_STYP_DATA | COFF_STYP_READ;
- align = 8;
- data.flags2 = COFF_FLAG_NOBASE;
- } else if (objfmt_coff->win32 && strcmp(sectname, ".sxdata") == 0) {
- data.flags = COFF_STYP_INFO;
- } else if (strcmp(sectname, ".comment") == 0) {
- data.flags = COFF_STYP_INFO | COFF_STYP_DISCARD | COFF_STYP_READ;
- } else if (yasm__strncasecmp(sectname, ".debug", 6)==0) {
- data.flags = COFF_STYP_DATA | COFF_STYP_DISCARD | COFF_STYP_READ;
- align = 1;
- } else {
- /* Default to code, but set a flag so if we get gasflags we can
- * change it (NASM and GAS have different defaults).
- */
- data.isdefault = 1;
- data.flags = COFF_STYP_TEXT | COFF_STYP_EXECUTE | COFF_STYP_READ;
- }
-
- flags_override = yasm_dir_helper(object, vp, line, help,
- objfmt_coff->win32 ? NELEMS(help) : 7,
- &data, yasm_dir_helper_valparam_warn);
- if (flags_override < 0)
- return NULL; /* error occurred */
-
- if (data.flags & COFF_STYP_EXECUTE)
- iscode = 1;
-
- if (!objfmt_coff->win32)
- data.flags &= ~COFF_STYP_WIN32_MASK;
-
- if (data.align_intn) {
- align = yasm_intnum_get_uint(data.align_intn);
- yasm_intnum_destroy(data.align_intn);
-
- /* Alignments must be a power of two. */
- if (!is_exp2(align)) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("argument to `%s' is not a power of two"),
- "align");
- return NULL;
- }
-
- /* Check to see if alignment is supported size */
- if (align > 8192) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("Win32 does not support alignments > 8192"));
- return NULL;
- }
- }
-
- realname = yasm__xstrdup(sectname);
- if (strlen(sectname) > 8 && !objfmt_coff->win32) {
- /* win32 format supports >8 character section names in object
- * files via "/nnnn" (where nnnn is decimal offset into string table),
- * so only warn for regular COFF.
- */
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("COFF section names limited to 8 characters: truncating"));
- realname[8] = '\0';
- }
-
- retval = yasm_object_get_general(object, realname, align, iscode,
- resonly, &isnew, line);
- yasm_xfree(realname);
-
- csd = yasm_section_get_data(retval, &coff_section_data_cb);
-
- if (isnew || yasm_section_is_default(retval)) {
- yasm_section_set_default(retval, 0);
- csd->flags = data.flags;
- csd->flags2 = data.flags2;
- yasm_section_set_align(retval, align, line);
- } else if (flags_override && !data.gasflags)
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("section flags ignored on section redeclaration"));
- return retval;
-}
-
-static /*@observer@*/ /*@null@*/ yasm_symrec *
-coff_objfmt_get_special_sym(yasm_object *object, const char *name,
- const char *parser)
-{
- return NULL;
-}
-
-static /*@observer@*/ /*@null@*/ yasm_symrec *
-win64_objfmt_get_special_sym(yasm_object *object, const char *name,
- const char *parser)
-{
- if (yasm__strcasecmp(name, "imagebase") == 0) {
- yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
- return objfmt_coff->ssym_imagebase;
- }
- return NULL;
-}
-
-static void
-coff_section_data_destroy(void *data)
-{
- yasm_xfree(data);
-}
-
-static void
-coff_section_data_print(void *data, FILE *f, int indent_level)
-{
- coff_section_data *csd = (coff_section_data *)data;
-
- fprintf(f, "%*ssym=\n", indent_level, "");
- yasm_symrec_print(csd->sym, f, indent_level+1);
- fprintf(f, "%*sscnum=%d\n", indent_level, "", csd->scnum);
- fprintf(f, "%*sflags=", indent_level, "");
- switch (csd->flags & COFF_STYP_STD_MASK) {
- case COFF_STYP_TEXT:
- fprintf(f, "TEXT");
- break;
- case COFF_STYP_DATA:
- fprintf(f, "DATA");
- break;
- case COFF_STYP_BSS:
- fprintf(f, "BSS");
- break;
- default:
- fprintf(f, "UNKNOWN");
- break;
- }
- fprintf(f, "\n%*saddr=0x%lx\n", indent_level, "", csd->addr);
- fprintf(f, "%*sscnptr=0x%lx\n", indent_level, "", csd->scnptr);
- fprintf(f, "%*ssize=%ld\n", indent_level, "", csd->size);
- fprintf(f, "%*srelptr=0x%lx\n", indent_level, "", csd->relptr);
- fprintf(f, "%*snreloc=%ld\n", indent_level, "", csd->nreloc);
- fprintf(f, "%*srelocs:\n", indent_level, "");
-}
-
-static void
-coff_symrec_data_destroy(void *data)
-{
- yasm_xfree(data);
-}
-
-static void
-coff_symrec_data_print(void *data, FILE *f, int indent_level)
-{
- coff_symrec_data *csd = (coff_symrec_data *)data;
-
- fprintf(f, "%*ssymtab index=%lu\n", indent_level, "", csd->index);
- fprintf(f, "%*ssclass=%d\n", indent_level, "", csd->sclass);
-}
-
-static void
-dir_export(yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_valparam *vp;
- /*@null@*/ const char *symname;
- int isnew;
- yasm_section *sect;
- yasm_datavalhead dvs;
-
- /* Reference exported symbol (to generate error if not declared) */
- vp = yasm_vps_first(valparams);
- symname = yasm_vp_id(vp);
- if (symname)
- yasm_symtab_use(object->symtab, symname, line);
- else {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("argument to EXPORT must be symbol name"));
- return;
- }
-
- /* Add to end of linker directives */
- sect = yasm_object_get_general(object, ".drectve", 0, 0, 0, &isnew, line);
-
- /* Initialize directive section if needed */
- if (isnew) {
- coff_section_data *csd;
- csd = yasm_section_get_data(sect, &coff_section_data_cb);
- csd->flags = COFF_STYP_INFO | COFF_STYP_DISCARD | COFF_STYP_READ;
- }
-
- /* Add text as data bytecode */
- yasm_dvs_initialize(&dvs);
- yasm_dvs_append(&dvs, yasm_dv_create_string(yasm__xstrdup("-export:"),
- strlen("-export:")));
- yasm_dvs_append(&dvs, yasm_dv_create_string(yasm__xstrdup(symname),
- strlen(symname)));
- yasm_dvs_append(&dvs, yasm_dv_create_string(yasm__xstrdup(" "), 1));
- yasm_section_bcs_append(sect, yasm_bc_create_data(&dvs, 1, 0, NULL, line));
-}
-
-static void
-dir_safeseh(yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_valparam *vp;
- /*@null@*/ const char *symname;
- yasm_symrec *sym;
- int isnew;
- yasm_section *sect;
-
- /* Reference symbol (to generate error if not declared).
- * Also, symbol must be externally visible, so force it.
- */
- vp = yasm_vps_first(valparams);
- symname = yasm_vp_id(vp);
- if (symname) {
- coff_symrec_data *sym_data;
- sym = yasm_symtab_use(object->symtab, symname, line);
- sym_data = yasm_symrec_get_data(sym, &coff_symrec_data_cb);
- if (!sym_data) {
- sym_data = coff_objfmt_sym_set_data(sym, COFF_SCL_NULL, 0,
- COFF_SYMTAB_AUX_NONE);
- }
- sym_data->forcevis = 1;
- sym_data->type = 0x20; /* function */
- } else {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("argument to SAFESEH must be symbol name"));
- return;
- }
-
- /*
- * Add symbol number to end of .sxdata section.
- */
-
- sect = yasm_object_get_general(object, ".sxdata", 0, 0, 0, &isnew, line);
-
- /* Initialize sxdata section if needed */
- if (isnew) {
- coff_section_data *csd;
- csd = yasm_section_get_data(sect, &coff_section_data_cb);
- csd->flags = COFF_STYP_INFO;
- }
-
- /* Add as sxdata bytecode */
- yasm_section_bcs_append(sect,
- yasm_bc_create_common(&win32_sxdata_bc_callback,
- sym, line));
-}
-
-static void
-win32_sxdata_bc_destroy(void *contents)
-{
- /* Contents is just the symbol pointer, so no need to delete */
-}
-
-static void
-win32_sxdata_bc_print(const void *contents, FILE *f, int indent_level)
-{
- /* TODO */
-}
-
-static int
-win32_sxdata_bc_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
- void *add_span_data)
-{
- bc->len += 4;
- return 0;
-}
-
-static int
-win32_sxdata_bc_tobytes(yasm_bytecode *bc, unsigned char **bufp,
- unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- yasm_output_reloc_func output_reloc)
-{
- yasm_symrec *sym = (yasm_symrec *)bc->contents;
- unsigned char *buf = *bufp;
- coff_symrec_data *csymd;
-
- csymd = yasm_symrec_get_data(sym, &coff_symrec_data_cb);
- if (!csymd)
- yasm_internal_error(N_("coff: no symbol data for SAFESEH symbol"));
-
- YASM_WRITE_32_L(buf, csymd->index);
-
- *bufp = buf;
- return 0;
-}
-
-static void
-dir_ident(yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
- yasm_valparamhead sect_vps;
- yasm_datavalhead dvs;
- yasm_section *comment;
- const char *sectname;
- yasm_valparam *vp, *vp2;
-
- /* Accept, but do nothing with empty ident */
- if (!valparams)
- return;
-
- vp = yasm_vps_first(valparams);
- if (!vp)
- return;
-
- if (objfmt_coff->win32) {
- /* Put ident data into .comment section for COFF, or .rdata$zzz
- * to be compatible with the GNU linker, which doesn't ignore
- * .comment (see binutils/gas/config/obj-coff.c:476-502).
- */
- sectname = ".rdata$zzz";
- } else {
- sectname = ".comment";
- }
- yasm_vps_initialize(&sect_vps);
- vp2 = yasm_vp_create_id(NULL, yasm__xstrdup(sectname), '\0');
- yasm_vps_append(&sect_vps, vp2);
- comment = coff_objfmt_section_switch(object, &sect_vps, NULL, line);
- yasm_vps_delete(&sect_vps);
-
- /* To match GAS output, if the comment section is empty, put an
- * initial 0 byte in the section.
- */
- if (yasm_section_bcs_first(comment) == yasm_section_bcs_last(comment)) {
- yasm_dvs_initialize(&dvs);
- yasm_dvs_append(&dvs, yasm_dv_create_expr(
- yasm_expr_create_ident(yasm_expr_int(yasm_intnum_create_uint(0)),
- line)));
- yasm_section_bcs_append(comment,
- yasm_bc_create_data(&dvs, 1, 0, object->arch, line));
- }
-
- yasm_dvs_initialize(&dvs);
- do {
- const char *s = yasm_vp_string(vp);
- if (!s) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_(".comment requires string parameters"));
- yasm_dvs_delete(&dvs);
- return;
- }
- yasm_dvs_append(&dvs,
- yasm_dv_create_string(yasm__xstrdup(s), strlen(s)));
- } while ((vp = yasm_vps_next(vp)));
-
- yasm_section_bcs_append(comment,
- yasm_bc_create_data(&dvs, 1, 1, object->arch, line));
-}
-
-static void
-dir_secrel32(yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_datavalhead dvs;
- yasm_valparam *vp;
-
- if (!object->cur_section) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_(".secrel32 can only be used inside of a section"));
- return;
- }
-
- vp = yasm_vps_first(valparams);
- yasm_dvs_initialize(&dvs);
- do {
- yasm_expr *e = yasm_vp_expr(vp, object->symtab, line);
- yasm_dataval *dv;
- if (!e) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_(".secrel32 requires expressions"));
- yasm_dvs_delete(&dvs);
- return;
- }
- dv = yasm_dv_create_expr(e);
- yasm_dv_get_value(dv)->section_rel = 1;
- yasm_dvs_append(&dvs, dv);
- } while ((vp = yasm_vps_next(vp)));
-
- yasm_section_bcs_append(object->cur_section,
- yasm_bc_create_data(&dvs, 4, 0, object->arch, line));
-}
-
-static void
-dir_def(yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
- yasm_valparam *vp;
- const char *symname;
- yasm_symrec *sym;
- coff_symrec_data *sym_data;
-
- if (objfmt_coff->def_sym) {
- yasm_warn_set(YASM_WARN_GENERAL,
- N_(".def pseudo-op used inside of .def/.endef; ignored"));
- return;
- }
-
- vp = yasm_vps_first(valparams);
- symname = yasm_vp_id(vp);
- if (!symname) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("argument to SAFESEH must be symbol name"));
- return;
- }
-
- sym = yasm_symtab_use(object->symtab, symname, line);
- sym_data = yasm_symrec_get_data(sym, &coff_symrec_data_cb);
- if (!sym_data) {
- sym_data = coff_objfmt_sym_set_data(sym, COFF_SCL_NULL, 0,
- COFF_SYMTAB_AUX_NONE);
- }
- objfmt_coff->def_sym = sym_data;
-}
-
-static void
-dir_scl(yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
- yasm_intnum *intn = NULL;
-
- if (!objfmt_coff->def_sym) {
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("%s pseudo-op used outside of .def/.endef; ignored"),
- ".scl");
- return;
- }
-
- if (yasm_dir_helper_intn(object, yasm_vps_first(valparams), line,
- &intn, 0) < 0)
- return;
- if (!intn)
- return;
- objfmt_coff->def_sym->sclass = yasm_intnum_get_uint(intn);
- yasm_intnum_destroy(intn);
-}
-
-static void
-dir_type(yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
- yasm_intnum *intn = NULL;
-
- if (!objfmt_coff->def_sym) {
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("%s pseudo-op used outside of .def/.endef; ignored"),
- ".type");
- return;
- }
-
- if (yasm_dir_helper_intn(object, yasm_vps_first(valparams), line,
- &intn, 0) < 0)
- return;
- if (!intn)
- return;
- objfmt_coff->def_sym->type = yasm_intnum_get_uint(intn);
- yasm_intnum_destroy(intn);
-}
-
-static void
-dir_endef(yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
- if (!objfmt_coff->def_sym) {
- yasm_warn_set(YASM_WARN_GENERAL,
- N_(".endef pseudo-op used before .def; ignored"));
- return;
- }
- objfmt_coff->def_sym = NULL;
-}
-
-static void
-dir_proc_frame(yasm_object *object, /*@null@*/ yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
- yasm_valparam *vp = yasm_vps_first(valparams);
- const char *name = yasm_vp_id(vp);
-
- if (objfmt_coff->proc_frame) {
- yasm_error_set_xref(objfmt_coff->proc_frame,
- N_("previous procedure started here"));
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("nested procedures not supported (didn't use [ENDPROC_FRAME]?)"));
- return;
- }
- objfmt_coff->proc_frame = line;
- objfmt_coff->done_prolog = 0;
- objfmt_coff->unwind = yasm_win64__uwinfo_create();
- objfmt_coff->unwind->proc = yasm_symtab_use(object->symtab, name, line);
-
- /* Optional error handler */
- vp = yasm_vps_next(vp);
- if (!vp || !(name = yasm_vp_id(vp)))
- return;
- objfmt_coff->unwind->ehandler =
- yasm_symtab_use(object->symtab, name, line);
-}
-
-static int
-procframe_checkstate(yasm_objfmt_coff *objfmt_coff, const char *dirname)
-{
- if (!objfmt_coff->proc_frame) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("[%s] without preceding [PROC_FRAME]"), dirname);
- return 0;
- }
- if (objfmt_coff->done_prolog) {
- yasm_error_set_xref(objfmt_coff->done_prolog,
- N_("prologue ended here"));
- yasm_error_set(YASM_ERROR_SYNTAX, N_("[%s] after end of prologue"),
- dirname);
- return 0;
- }
- if (!objfmt_coff->unwind)
- yasm_internal_error(N_("unwind info not present"));
- return 1;
-}
-
-/* Get current assembly position.
- * XXX: There should be a better way to do this.
- */
-static yasm_symrec *
-get_curpos(yasm_object *object, const char *dirname, unsigned long line)
-{
- if (!object->cur_section) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("[%s] can only be used inside of a section"),
- dirname);
- return NULL;
- }
- return yasm_symtab_define_curpos(object->symtab, "$",
- yasm_section_bcs_last(object->cur_section), line);
-}
-
-static void
-dir_pushreg(yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
- yasm_valparam *vp = yasm_vps_first(valparams);
- coff_unwind_code *code;
- const uintptr_t *reg;
-
- if (!procframe_checkstate(objfmt_coff, "PUSHREG"))
- return;
-
- if (vp->type != YASM_PARAM_EXPR ||
- !(reg = yasm_expr_get_reg(&vp->param.e, 0))) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("[%s] requires a register as the first parameter"),
- "PUSHREG");
- return;
- }
-
- /* Generate a PUSH_NONVOL unwind code. */
- code = yasm_xmalloc(sizeof(coff_unwind_code));
- code->proc = objfmt_coff->unwind->proc;
- code->loc = get_curpos(object, "PUSHREG", line);
- code->opcode = UWOP_PUSH_NONVOL;
- code->info = (unsigned int)(*reg & 0xF);
- yasm_value_initialize(&code->off, NULL, 0);
- SLIST_INSERT_HEAD(&objfmt_coff->unwind->codes, code, link);
-}
-
-static void
-dir_setframe(yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
- yasm_valparam *vp = yasm_vps_first(valparams);
- coff_unwind_code *code;
- const uintptr_t *reg;
- yasm_expr *off = NULL;
-
- if (!procframe_checkstate(objfmt_coff, "SETFRAME"))
- return;
-
- if (vp->type != YASM_PARAM_EXPR ||
- !(reg = yasm_expr_get_reg(&vp->param.e, 0))) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("[%s] requires a register as the first parameter"),
- "SETFRAME");
- return;
- }
-
- vp = yasm_vps_next(vp);
- if (vp)
- off = yasm_vp_expr(vp, object->symtab, line);
-
- /* Set the frame fields in the unwind info */
- objfmt_coff->unwind->framereg = (unsigned long)(*reg);
- yasm_value_initialize(&objfmt_coff->unwind->frameoff, off, 8);
-
- /* Generate a SET_FPREG unwind code */
- code = yasm_xmalloc(sizeof(coff_unwind_code));
- code->proc = objfmt_coff->unwind->proc;
- code->loc = get_curpos(object, "SETFRAME", line);
- code->opcode = UWOP_SET_FPREG;
- code->info = (unsigned int)(*reg & 0xF);
- yasm_value_initialize(&code->off, off ? yasm_expr_copy(off) : NULL, 8);
- SLIST_INSERT_HEAD(&objfmt_coff->unwind->codes, code, link);
-}
-
-static void
-dir_allocstack(yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
- yasm_valparam *vp = yasm_vps_first(valparams);
- /*@null@*/ /*@only@*/ yasm_expr *size;
- coff_unwind_code *code;
-
- if (!procframe_checkstate(objfmt_coff, "ALLOCSTACK"))
- return;
-
- size = yasm_vp_expr(vp, object->symtab, line);
- if (!size) {
- yasm_error_set(YASM_ERROR_SYNTAX, N_("[%s] requires a size"),
- "ALLOCSTACK");
- return;
- }
-
- /* Generate an ALLOC_SMALL unwind code; this will get enlarged to an
- * ALLOC_LARGE if necessary.
- */
- code = yasm_xmalloc(sizeof(coff_unwind_code));
- code->proc = objfmt_coff->unwind->proc;
- code->loc = get_curpos(object, "ALLOCSTACK", line);
- code->opcode = UWOP_ALLOC_SMALL;
- code->info = 0;
- yasm_value_initialize(&code->off, size, 7);
- SLIST_INSERT_HEAD(&objfmt_coff->unwind->codes, code, link);
-}
-
-static void
-dir_save_common(yasm_object *object, yasm_valparamhead *valparams,
- unsigned long line, const char *name, int op)
-{
- yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
- yasm_valparam *vp = yasm_vps_first(valparams);
- coff_unwind_code *code;
- const uintptr_t *reg;
- /*@only@*/ /*@null@*/ yasm_expr *offset;
-
- if (!procframe_checkstate(objfmt_coff, name))
- return;
-
- if (vp->type != YASM_PARAM_EXPR ||
- !(reg = yasm_expr_get_reg(&vp->param.e, 0))) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("[%s] requires a register as the first parameter"),
- name);
- return;
- }
-
- vp = yasm_vps_next(vp);
- offset = yasm_vp_expr(vp, object->symtab, line);
- if (!offset) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("[%s] requires an offset as the second parameter"),
- name);
- return;
- }
-
- /* Generate a SAVE_XXX unwind code; this will get enlarged to a
- * SAVE_XXX_FAR if necessary.
- */
- code = yasm_xmalloc(sizeof(coff_unwind_code));
- code->proc = objfmt_coff->unwind->proc;
- code->loc = get_curpos(object, name, line);
- code->opcode = op;
- code->info = (unsigned int)(*reg & 0xF);
- yasm_value_initialize(&code->off, offset, 16);
- SLIST_INSERT_HEAD(&objfmt_coff->unwind->codes, code, link);
-}
-
-static void
-dir_savereg(yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- dir_save_common(object, valparams, line, "SAVEREG", UWOP_SAVE_NONVOL);
-}
-
-static void
-dir_savexmm128(yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- dir_save_common(object, valparams, line, "SAVEXMM128", UWOP_SAVE_XMM128);
-}
-
-static void
-dir_pushframe(yasm_object *object, /*@null@*/ yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
- yasm_valparam *vp = yasm_vps_first(valparams);
- coff_unwind_code *code;
-
- if (!procframe_checkstate(objfmt_coff, "PUSHFRAME"))
- return;
-
- /* Generate a PUSH_MACHFRAME unwind code. If there's any parameter,
- * we set info to 1. Otherwise we set info to 0.
- */
- code = yasm_xmalloc(sizeof(coff_unwind_code));
- code->proc = objfmt_coff->unwind->proc;
- code->loc = get_curpos(object, "PUSHFRAME", line);
- code->opcode = UWOP_PUSH_MACHFRAME;
- code->info = vp != NULL;
- yasm_value_initialize(&code->off, NULL, 0);
- SLIST_INSERT_HEAD(&objfmt_coff->unwind->codes, code, link);
-}
-
-static void
-dir_endprolog(yasm_object *object, /*@null@*/ yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
- if (!procframe_checkstate(objfmt_coff, "ENDPROLOG"))
- return;
- objfmt_coff->done_prolog = line;
-
- objfmt_coff->unwind->prolog = get_curpos(object, "ENDPROLOG", line);
-}
-
-static void
-dir_endproc_frame(yasm_object *object, /*@null@*/ yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
- yasm_section *sect;
- coff_section_data *csd;
- yasm_datavalhead dvs;
- int isnew;
- /*@dependent@*/ yasm_symrec *curpos, *unwindpos, *proc_sym, *xdata_sym;
-
- if (!objfmt_coff->proc_frame) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("[%s] without preceding [PROC_FRAME]"),
- "ENDPROC_FRAME");
- return;
- }
- if (!objfmt_coff->done_prolog) {
- yasm_error_set_xref(objfmt_coff->proc_frame,
- N_("procedure started here"));
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("ended procedure without ending prologue"),
- "ENDPROC_FRAME");
- objfmt_coff->proc_frame = 0;
- yasm_win64__uwinfo_destroy(objfmt_coff->unwind);
- objfmt_coff->unwind = NULL;
- return;
- }
- if (!objfmt_coff->unwind)
- yasm_internal_error(N_("unwind info not present"));
-
- proc_sym = objfmt_coff->unwind->proc;
-
- curpos = get_curpos(object, "ENDPROC_FRAME", line);
-
- /*
- * Add unwind info to end of .xdata section.
- */
-
- sect = yasm_object_get_general(object, ".xdata", 0, 0, 0, &isnew, line);
-
- /* Initialize xdata section if needed */
- if (isnew) {
- csd = yasm_section_get_data(sect, &coff_section_data_cb);
- csd->flags = COFF_STYP_DATA | COFF_STYP_READ;
- yasm_section_set_align(sect, 8, line);
- }
-
- /* Get current position in .xdata section */
- unwindpos = yasm_symtab_define_curpos(object->symtab, "$",
- yasm_section_bcs_last(sect), line);
- /* Get symbol for .xdata as we'll want to reference it with WRT */
- csd = yasm_section_get_data(sect, &coff_section_data_cb);
- xdata_sym = csd->sym;
-
- /* Add unwind info. Use line number of start of procedure. */
- yasm_win64__unwind_generate(sect, objfmt_coff->unwind,
- objfmt_coff->proc_frame);
- objfmt_coff->unwind = NULL; /* generate keeps the unwind pointer */
-
- /*
- * Add function lookup to end of .pdata section.
- */
-
- sect = yasm_object_get_general(object, ".pdata", 0, 0, 0, &isnew, line);
-
- /* Initialize pdata section if needed */
- if (isnew) {
- csd = yasm_section_get_data(sect, &coff_section_data_cb);
- csd->flags = COFF_STYP_DATA | COFF_STYP_READ;
- csd->flags2 = COFF_FLAG_NOBASE;
- yasm_section_set_align(sect, 4, line);
- }
-
- /* Add function structure as data bytecode */
- yasm_dvs_initialize(&dvs);
- yasm_dvs_append(&dvs, yasm_dv_create_expr(
- yasm_expr_create_ident(yasm_expr_sym(proc_sym), line)));
- yasm_dvs_append(&dvs, yasm_dv_create_expr(
- yasm_expr_create(YASM_EXPR_WRT, yasm_expr_sym(curpos),
- yasm_expr_sym(proc_sym), line)));
- yasm_dvs_append(&dvs, yasm_dv_create_expr(
- yasm_expr_create(YASM_EXPR_WRT, yasm_expr_sym(unwindpos),
- yasm_expr_sym(xdata_sym), line)));
- yasm_section_bcs_append(sect, yasm_bc_create_data(&dvs, 4, 0, NULL, line));
-
- objfmt_coff->proc_frame = 0;
- objfmt_coff->done_prolog = 0;
-}
-
-/* Define valid debug formats to use with this object format */
-static const char *coff_objfmt_dbgfmt_keywords[] = {
- "null",
- "dwarf2",
- NULL
-};
-
-static const yasm_directive coff_objfmt_directives[] = {
- { ".ident", "gas", dir_ident, YASM_DIR_ANY },
- { "ident", "nasm", dir_ident, YASM_DIR_ANY },
- { ".def", "gas", dir_def, YASM_DIR_ID_REQUIRED },
- { ".endef", "gas", dir_endef, YASM_DIR_ANY },
- { ".scl", "gas", dir_scl, YASM_DIR_ARG_REQUIRED },
- { ".type", "gas", dir_type, YASM_DIR_ARG_REQUIRED },
- { ".secrel32", "gas", dir_secrel32, YASM_DIR_ARG_REQUIRED },
- { NULL, NULL, NULL, 0 }
-};
-
-/* Define objfmt structure -- see objfmt.h for details */
-yasm_objfmt_module yasm_coff_LTX_objfmt = {
- "COFF (DJGPP)",
- "coff",
- "o",
- 32,
- 0,
- coff_objfmt_dbgfmt_keywords,
- "null",
- coff_objfmt_directives,
- NULL, /* no standard macros */
- coff_objfmt_create,
- coff_objfmt_output,
- coff_objfmt_destroy,
- coff_objfmt_add_default_section,
- coff_objfmt_init_new_section,
- coff_objfmt_section_switch,
- coff_objfmt_get_special_sym
-};
-
-/* Define valid debug formats to use with this object format */
-static const char *winXX_objfmt_dbgfmt_keywords[] = {
- "null",
- "dwarf2",
- "cv8",
- NULL
-};
-
-static const yasm_directive win32_objfmt_directives[] = {
- { ".ident", "gas", dir_ident, YASM_DIR_ANY },
- { "ident", "nasm", dir_ident, YASM_DIR_ANY },
- { ".def", "gas", dir_def, YASM_DIR_ID_REQUIRED },
- { ".endef", "gas", dir_endef, YASM_DIR_ANY },
- { ".scl", "gas", dir_scl, YASM_DIR_ARG_REQUIRED },
- { ".type", "gas", dir_type, YASM_DIR_ARG_REQUIRED },
- { ".secrel32", "gas", dir_secrel32, YASM_DIR_ARG_REQUIRED },
- { ".export", "gas", dir_export, YASM_DIR_ID_REQUIRED },
- { "export", "nasm", dir_export, YASM_DIR_ID_REQUIRED },
- { ".safeseh", "gas", dir_safeseh, YASM_DIR_ID_REQUIRED },
- { "safeseh", "nasm", dir_safeseh, YASM_DIR_ID_REQUIRED },
- { NULL, NULL, NULL, 0 }
-};
-
-static const char *win32_nasm_stdmac[] = {
- "%imacro export 1+.nolist",
- "[export %1]",
- "%endmacro",
- "%imacro safeseh 1+.nolist",
- "[safeseh %1]",
- "%endmacro",
- NULL
-};
-
-static const yasm_stdmac win32_objfmt_stdmacs[] = {
- { "nasm", "nasm", win32_nasm_stdmac },
- { NULL, NULL, NULL }
-};
-
-/* Define objfmt structure -- see objfmt.h for details */
-yasm_objfmt_module yasm_win32_LTX_objfmt = {
- "Win32",
- "win32",
- "obj",
- 32,
- 1,
- winXX_objfmt_dbgfmt_keywords,
- "null",
- win32_objfmt_directives,
- win32_objfmt_stdmacs,
- win32_objfmt_create,
- coff_objfmt_output,
- coff_objfmt_destroy,
- coff_objfmt_add_default_section,
- coff_objfmt_init_new_section,
- coff_objfmt_section_switch,
- coff_objfmt_get_special_sym
-};
-
-static const yasm_directive win64_objfmt_directives[] = {
- { ".ident", "gas", dir_ident, YASM_DIR_ANY },
- { "ident", "nasm", dir_ident, YASM_DIR_ANY },
- { ".def", "gas", dir_def, YASM_DIR_ID_REQUIRED },
- { ".endef", "gas", dir_endef, YASM_DIR_ANY },
- { ".scl", "gas", dir_scl, YASM_DIR_ARG_REQUIRED },
- { ".type", "gas", dir_type, YASM_DIR_ARG_REQUIRED },
- { ".secrel32", "gas", dir_secrel32, YASM_DIR_ARG_REQUIRED },
- { ".export", "gas", dir_export, YASM_DIR_ID_REQUIRED },
- { "export", "nasm", dir_export, YASM_DIR_ID_REQUIRED },
- { ".proc_frame", "gas", dir_proc_frame, YASM_DIR_ID_REQUIRED },
- { "proc_frame", "nasm", dir_proc_frame, YASM_DIR_ID_REQUIRED },
- { ".pushreg", "gas", dir_pushreg, YASM_DIR_ARG_REQUIRED },
- { "pushreg", "nasm", dir_pushreg, YASM_DIR_ARG_REQUIRED },
- { ".setframe", "gas", dir_setframe, YASM_DIR_ARG_REQUIRED },
- { "setframe", "nasm", dir_setframe, YASM_DIR_ARG_REQUIRED },
- { ".allocstack", "gas", dir_allocstack, YASM_DIR_ARG_REQUIRED },
- { "allocstack", "nasm", dir_allocstack, YASM_DIR_ARG_REQUIRED },
- { ".savereg", "gas", dir_savereg, YASM_DIR_ARG_REQUIRED },
- { "savereg", "nasm", dir_savereg, YASM_DIR_ARG_REQUIRED },
- { ".savexmm128", "gas", dir_savexmm128, YASM_DIR_ARG_REQUIRED },
- { "savexmm128", "nasm", dir_savexmm128, YASM_DIR_ARG_REQUIRED },
- { ".pushframe", "gas", dir_pushframe, YASM_DIR_ANY },
- { "pushframe", "nasm", dir_pushframe, YASM_DIR_ANY },
- { ".endprolog", "gas", dir_endprolog, YASM_DIR_ANY },
- { "endprolog", "nasm", dir_endprolog, YASM_DIR_ANY },
- { ".endproc_frame", "gas", dir_endproc_frame, YASM_DIR_ANY },
- { "endproc_frame", "nasm", dir_endproc_frame, YASM_DIR_ANY },
- { NULL, NULL, NULL, 0 }
-};
-
-#include "win64-nasm.c"
-#include "win64-gas.c"
-
-static const yasm_stdmac win64_objfmt_stdmacs[] = {
- { "nasm", "nasm", win64_nasm_stdmac },
- { "gas", "nasm", win64_gas_stdmac },
- { NULL, NULL, NULL }
-};
-
-/* Define objfmt structure -- see objfmt.h for details */
-yasm_objfmt_module yasm_win64_LTX_objfmt = {
- "Win64",
- "win64",
- "obj",
- 64,
- 1,
- winXX_objfmt_dbgfmt_keywords,
- "null",
- win64_objfmt_directives,
- win64_objfmt_stdmacs,
- win64_objfmt_create,
- coff_objfmt_output,
- coff_objfmt_destroy,
- coff_objfmt_add_default_section,
- coff_objfmt_init_new_section,
- coff_objfmt_section_switch,
- win64_objfmt_get_special_sym
-};
-yasm_objfmt_module yasm_x64_LTX_objfmt = {
- "Win64",
- "x64",
- "obj",
- 64,
- 1,
- winXX_objfmt_dbgfmt_keywords,
- "null",
- win64_objfmt_directives,
- win64_objfmt_stdmacs,
- win64_objfmt_create,
- coff_objfmt_output,
- coff_objfmt_destroy,
- coff_objfmt_add_default_section,
- coff_objfmt_init_new_section,
- coff_objfmt_section_switch,
- win64_objfmt_get_special_sym
-};
+
+ /* Force all syms for win64 because they're needed for relocations.
+ * FIXME: Not *all* syms need to be output, only the ones needed for
+ * relocation. Find a way to do that someday.
+ */
+ all_syms |= objfmt_coff->win64;
+
+ info.strtab_offset = 4;
+ info.object = object;
+ info.objfmt_coff = objfmt_coff;
+ info.errwarns = errwarns;
+ info.f = f;
+ info.buf = yasm_xmalloc(REGULAR_OUTBUF_SIZE);
+
+ /* Allocate space for headers by seeking forward */
+ if (fseek(f, (long)(20+40*(objfmt_coff->parse_scnum-1)), SEEK_SET) < 0) {
+ yasm__fatal(N_("could not seek on output file"));
+ /*@notreached@*/
+ return;
+ }
+
+ /* Finalize symbol table (assign index to each symbol) */
+ info.indx = 0;
+ info.all_syms = all_syms;
+ yasm_symtab_traverse(object->symtab, &info, coff_objfmt_count_sym);
+ symtab_count = info.indx;
+
+ /* Section data/relocs */
+ if (COFF_SET_VMA) {
+ /* If we're setting the VMA, we need to do a first section pass to
+ * determine each section's addr value before actually outputting
+ * relocations, as a relocation's section address is added into the
+ * addends in the generated code.
+ */
+ info.addr = 0;
+ if (yasm_object_sections_traverse(object, &info,
+ coff_objfmt_set_section_addr))
+ return;
+ }
+ info.addr = 0;
+ if (yasm_object_sections_traverse(object, &info,
+ coff_objfmt_output_section))
+ return;
+
+ /* Symbol table */
+ pos = ftell(f);
+ if (pos == -1) {
+ yasm__fatal(N_("could not get file position on output file"));
+ /*@notreached@*/
+ return;
+ }
+ symtab_pos = (unsigned long)pos;
+ yasm_symtab_traverse(object->symtab, &info, coff_objfmt_output_sym);
+
+ /* String table */
+ yasm_fwrite_32_l(info.strtab_offset, f); /* total length */
+ yasm_object_sections_traverse(object, &info, coff_objfmt_output_sectstr);
+ yasm_symtab_traverse(object->symtab, &info, coff_objfmt_output_str);
+
+ /* Write headers */
+ if (fseek(f, 0, SEEK_SET) < 0) {
+ yasm__fatal(N_("could not seek on output file"));
+ /*@notreached@*/
+ return;
+ }
+
+ localbuf = info.buf;
+ YASM_WRITE_16_L(localbuf, objfmt_coff->machine); /* magic number */
+ YASM_WRITE_16_L(localbuf, objfmt_coff->parse_scnum-1);/* number of sects */
+ if (getenv("YASM_TEST_SUITE"))
+ ts = 0;
+ else
+ ts = (unsigned long)time(NULL);
+ YASM_WRITE_32_L(localbuf, ts); /* time/date stamp */
+ YASM_WRITE_32_L(localbuf, symtab_pos); /* file ptr to symtab */
+ YASM_WRITE_32_L(localbuf, symtab_count); /* number of symtabs */
+ YASM_WRITE_16_L(localbuf, 0); /* size of optional header (none) */
+ /* flags */
+ flags = 0;
+ if (strcmp(yasm_dbgfmt_keyword(object->dbgfmt), "null")==0)
+ flags = COFF_F_LNNO;
+ if (!all_syms)
+ flags |= COFF_F_LSYMS;
+ if (objfmt_coff->machine != COFF_MACHINE_AMD64)
+ flags |= COFF_F_AR32WR;
+ YASM_WRITE_16_L(localbuf, flags);
+ fwrite(info.buf, 20, 1, f);
+
+ yasm_object_sections_traverse(object, &info, coff_objfmt_output_secthead);
+
+ yasm_xfree(info.buf);
+}
+
+static void
+coff_objfmt_destroy(yasm_objfmt *objfmt)
+{
+ yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)objfmt;
+ if (objfmt_coff->filesym_data->aux[0].fname)
+ yasm_xfree(objfmt_coff->filesym_data->aux[0].fname);
+ if (objfmt_coff->unwind)
+ yasm_win64__uwinfo_destroy(objfmt_coff->unwind);
+ yasm_xfree(objfmt);
+}
+
+static yasm_section *
+coff_objfmt_add_default_section(yasm_object *object)
+{
+ yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
+ yasm_section *retval;
+ coff_section_data *csd;
+ int isnew;
+
+ retval = yasm_object_get_general(object, ".text", 16, 1, 0, &isnew, 0);
+ if (isnew) {
+ csd = yasm_section_get_data(retval, &coff_section_data_cb);
+ csd->flags = COFF_STYP_TEXT;
+ if (objfmt_coff->win32)
+ csd->flags |= COFF_STYP_EXECUTE | COFF_STYP_READ;
+ yasm_section_set_default(retval, 1);
+ }
+ return retval;
+}
+
+struct coff_section_switch_data {
+ int isdefault;
+ int gasflags;
+ unsigned long flags;
+ unsigned long flags2;
+ /*@only@*/ /*@null@*/ yasm_intnum *align_intn;
+};
+
+/* GAS-style flags */
+static int
+coff_helper_gasflags(void *obj, yasm_valparam *vp, unsigned long line, void *d,
+ /*@unused@*/ uintptr_t arg)
+{
+ struct coff_section_switch_data *data =
+ (struct coff_section_switch_data *)d;
+ int alloc = 0, load = 0, readonly = 0, code = 0, datasect = 0;
+ int shared = 0;
+ const char *s = yasm_vp_string(vp);
+ size_t i;
+
+ if (!s) {
+ yasm_error_set(YASM_ERROR_VALUE, N_("non-string section attribute"));
+ return -1;
+ }
+
+ /* For GAS, default to read/write data */
+ if (data->isdefault)
+ data->flags = COFF_STYP_TEXT | COFF_STYP_READ | COFF_STYP_WRITE;
+
+ for (i=0; i<strlen(s); i++) {
+ switch (s[i]) {
+ case 'a':
+ break;
+ case 'b':
+ alloc = 1;
+ load = 0;
+ break;
+ case 'n':
+ load = 0;
+ break;
+ case 's':
+ shared = 1;
+ /*@fallthrough@*/
+ case 'd':
+ datasect = 1;
+ load = 1;
+ readonly = 0;
+ break;
+ case 'x':
+ code = 1;
+ load = 1;
+ break;
+ case 'r':
+ datasect = 1;
+ load = 1;
+ readonly = 1;
+ break;
+ case 'w':
+ readonly = 0;
+ break;
+ default:
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("unrecognized section attribute: `%c'"),
+ s[i]);
+ }
+ }
+
+ if (code)
+ data->flags = COFF_STYP_TEXT | COFF_STYP_EXECUTE | COFF_STYP_READ;
+ else if (datasect)
+ data->flags = COFF_STYP_DATA | COFF_STYP_READ | COFF_STYP_WRITE;
+ else if (readonly)
+ data->flags = COFF_STYP_DATA | COFF_STYP_READ;
+ else if (load)
+ data->flags = COFF_STYP_TEXT;
+ else if (alloc)
+ data->flags = COFF_STYP_BSS;
+
+ if (shared)
+ data->flags |= COFF_STYP_SHARED;
+
+ data->gasflags = 1;
+ return 0;
+}
+
+static /*@observer@*/ /*@null@*/ yasm_section *
+coff_objfmt_section_switch(yasm_object *object, yasm_valparamhead *valparams,
+ /*@unused@*/ /*@null@*/
+ yasm_valparamhead *objext_valparams,
+ unsigned long line)
+{
+ yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
+ yasm_valparam *vp;
+ yasm_section *retval;
+ int isnew;
+ int iscode = 0;
+ int flags_override;
+ const char *sectname;
+ char *realname;
+ int resonly = 0;
+ unsigned long align = 0;
+ coff_section_data *csd;
+
+ struct coff_section_switch_data data;
+
+ static const yasm_dir_help help[] = {
+ { "code", 0, yasm_dir_helper_flag_set,
+ offsetof(struct coff_section_switch_data, flags),
+ COFF_STYP_TEXT | COFF_STYP_EXECUTE | COFF_STYP_READ },
+ { "text", 0, yasm_dir_helper_flag_set,
+ offsetof(struct coff_section_switch_data, flags),
+ COFF_STYP_TEXT | COFF_STYP_EXECUTE | COFF_STYP_READ },
+ { "data", 0, yasm_dir_helper_flag_set,
+ offsetof(struct coff_section_switch_data, flags),
+ COFF_STYP_DATA | COFF_STYP_READ | COFF_STYP_WRITE },
+ { "rdata", 0, yasm_dir_helper_flag_set,
+ offsetof(struct coff_section_switch_data, flags),
+ COFF_STYP_DATA | COFF_STYP_READ },
+ { "bss", 0, yasm_dir_helper_flag_set,
+ offsetof(struct coff_section_switch_data, flags),
+ COFF_STYP_BSS | COFF_STYP_READ | COFF_STYP_WRITE },
+ { "info", 0, yasm_dir_helper_flag_set,
+ offsetof(struct coff_section_switch_data, flags),
+ COFF_STYP_INFO | COFF_STYP_DISCARD | COFF_STYP_READ },
+ { "gasflags", 1, coff_helper_gasflags, 0, 0 },
+ /* Win32 only below this point */
+ { "discard", 0, yasm_dir_helper_flag_or,
+ offsetof(struct coff_section_switch_data, flags), COFF_STYP_DISCARD},
+ { "nodiscard", 0, yasm_dir_helper_flag_and,
+ offsetof(struct coff_section_switch_data, flags), COFF_STYP_DISCARD},
+ { "cache", 0, yasm_dir_helper_flag_and,
+ offsetof(struct coff_section_switch_data, flags), COFF_STYP_NOCACHE},
+ { "nocache", 0, yasm_dir_helper_flag_or,
+ offsetof(struct coff_section_switch_data, flags), COFF_STYP_NOCACHE},
+ { "page", 0, yasm_dir_helper_flag_and,
+ offsetof(struct coff_section_switch_data, flags), COFF_STYP_NOPAGE },
+ { "nopage", 0, yasm_dir_helper_flag_or,
+ offsetof(struct coff_section_switch_data, flags), COFF_STYP_NOPAGE },
+ { "share", 0, yasm_dir_helper_flag_or,
+ offsetof(struct coff_section_switch_data, flags), COFF_STYP_SHARED },
+ { "noshare", 0, yasm_dir_helper_flag_and,
+ offsetof(struct coff_section_switch_data, flags), COFF_STYP_SHARED },
+ { "execute", 0, yasm_dir_helper_flag_or,
+ offsetof(struct coff_section_switch_data, flags), COFF_STYP_EXECUTE},
+ { "noexecute", 0, yasm_dir_helper_flag_and,
+ offsetof(struct coff_section_switch_data, flags), COFF_STYP_EXECUTE},
+ { "read", 0, yasm_dir_helper_flag_or,
+ offsetof(struct coff_section_switch_data, flags), COFF_STYP_READ },
+ { "noread", 0, yasm_dir_helper_flag_and,
+ offsetof(struct coff_section_switch_data, flags), COFF_STYP_READ },
+ { "write", 0, yasm_dir_helper_flag_or,
+ offsetof(struct coff_section_switch_data, flags), COFF_STYP_WRITE },
+ { "nowrite", 0, yasm_dir_helper_flag_and,
+ offsetof(struct coff_section_switch_data, flags), COFF_STYP_WRITE },
+ { "base", 0, yasm_dir_helper_flag_and,
+ offsetof(struct coff_section_switch_data, flags2), COFF_FLAG_NOBASE},
+ { "nobase", 0, yasm_dir_helper_flag_or,
+ offsetof(struct coff_section_switch_data, flags2), COFF_FLAG_NOBASE},
+ { "align", 1, yasm_dir_helper_intn,
+ offsetof(struct coff_section_switch_data, align_intn), 0 }
+ };
+
+ vp = yasm_vps_first(valparams);
+ sectname = yasm_vp_string(vp);
+ if (!sectname)
+ return NULL;
+ vp = yasm_vps_next(vp);
+
+ data.isdefault = 0;
+ data.gasflags = 0;
+ data.flags = 0;
+ data.flags2 = 0;
+ data.align_intn = NULL;
+
+ if (strcmp(sectname, ".data") == 0) {
+ data.flags = COFF_STYP_DATA | COFF_STYP_READ | COFF_STYP_WRITE;
+ if (objfmt_coff->win32) {
+ if (objfmt_coff->machine == COFF_MACHINE_AMD64)
+ align = 16;
+ else
+ align = 4;
+ }
+ } else if (strcmp(sectname, ".bss") == 0) {
+ data.flags = COFF_STYP_BSS | COFF_STYP_READ | COFF_STYP_WRITE;
+ if (objfmt_coff->win32) {
+ if (objfmt_coff->machine == COFF_MACHINE_AMD64)
+ align = 16;
+ else
+ align = 4;
+ }
+ resonly = 1;
+ } else if (strcmp(sectname, ".text") == 0) {
+ data.flags = COFF_STYP_TEXT | COFF_STYP_EXECUTE | COFF_STYP_READ;
+ if (objfmt_coff->win32)
+ align = 16;
+ } else if (strcmp(sectname, ".rdata") == 0
+ || strncmp(sectname, ".rodata", 7) == 0
+ || strncmp(sectname, ".rdata$", 7) == 0) {
+ data.flags = COFF_STYP_DATA | COFF_STYP_READ;
+ if (objfmt_coff->win32)
+ align = 8;
+ else
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("Standard COFF does not support read-only data sections"));
+ } else if (strcmp(sectname, ".drectve") == 0) {
+ data.flags = COFF_STYP_INFO;
+ if (objfmt_coff->win32)
+ data.flags |= COFF_STYP_DISCARD | COFF_STYP_READ;
+ } else if (objfmt_coff->win64 && strcmp(sectname, ".pdata") == 0) {
+ data.flags = COFF_STYP_DATA | COFF_STYP_READ;
+ align = 4;
+ data.flags2 = COFF_FLAG_NOBASE;
+ } else if (objfmt_coff->win64 && strcmp(sectname, ".xdata") == 0) {
+ data.flags = COFF_STYP_DATA | COFF_STYP_READ;
+ align = 8;
+ data.flags2 = COFF_FLAG_NOBASE;
+ } else if (objfmt_coff->win32 && strcmp(sectname, ".sxdata") == 0) {
+ data.flags = COFF_STYP_INFO;
+ } else if (strcmp(sectname, ".comment") == 0) {
+ data.flags = COFF_STYP_INFO | COFF_STYP_DISCARD | COFF_STYP_READ;
+ } else if (yasm__strncasecmp(sectname, ".debug", 6)==0) {
+ data.flags = COFF_STYP_DATA | COFF_STYP_DISCARD | COFF_STYP_READ;
+ align = 1;
+ } else {
+ /* Default to code, but set a flag so if we get gasflags we can
+ * change it (NASM and GAS have different defaults).
+ */
+ data.isdefault = 1;
+ data.flags = COFF_STYP_TEXT | COFF_STYP_EXECUTE | COFF_STYP_READ;
+ }
+
+ flags_override = yasm_dir_helper(object, vp, line, help,
+ objfmt_coff->win32 ? NELEMS(help) : 7,
+ &data, yasm_dir_helper_valparam_warn);
+ if (flags_override < 0)
+ return NULL; /* error occurred */
+
+ if (data.flags & COFF_STYP_EXECUTE)
+ iscode = 1;
+
+ if (!objfmt_coff->win32)
+ data.flags &= ~COFF_STYP_WIN32_MASK;
+
+ if (data.align_intn) {
+ align = yasm_intnum_get_uint(data.align_intn);
+ yasm_intnum_destroy(data.align_intn);
+
+ /* Alignments must be a power of two. */
+ if (!is_exp2(align)) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("argument to `%s' is not a power of two"),
+ "align");
+ return NULL;
+ }
+
+ /* Check to see if alignment is supported size */
+ if (align > 8192) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("Win32 does not support alignments > 8192"));
+ return NULL;
+ }
+ }
+
+ realname = yasm__xstrdup(sectname);
+ if (strlen(sectname) > 8 && !objfmt_coff->win32) {
+ /* win32 format supports >8 character section names in object
+ * files via "/nnnn" (where nnnn is decimal offset into string table),
+ * so only warn for regular COFF.
+ */
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("COFF section names limited to 8 characters: truncating"));
+ realname[8] = '\0';
+ }
+
+ retval = yasm_object_get_general(object, realname, align, iscode,
+ resonly, &isnew, line);
+ yasm_xfree(realname);
+
+ csd = yasm_section_get_data(retval, &coff_section_data_cb);
+
+ if (isnew || yasm_section_is_default(retval)) {
+ yasm_section_set_default(retval, 0);
+ csd->flags = data.flags;
+ csd->flags2 = data.flags2;
+ yasm_section_set_align(retval, align, line);
+ } else if (flags_override && !data.gasflags)
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("section flags ignored on section redeclaration"));
+ return retval;
+}
+
+static /*@observer@*/ /*@null@*/ yasm_symrec *
+coff_objfmt_get_special_sym(yasm_object *object, const char *name,
+ const char *parser)
+{
+ return NULL;
+}
+
+static /*@observer@*/ /*@null@*/ yasm_symrec *
+win64_objfmt_get_special_sym(yasm_object *object, const char *name,
+ const char *parser)
+{
+ if (yasm__strcasecmp(name, "imagebase") == 0) {
+ yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
+ return objfmt_coff->ssym_imagebase;
+ }
+ return NULL;
+}
+
+static void
+coff_section_data_destroy(void *data)
+{
+ yasm_xfree(data);
+}
+
+static void
+coff_section_data_print(void *data, FILE *f, int indent_level)
+{
+ coff_section_data *csd = (coff_section_data *)data;
+
+ fprintf(f, "%*ssym=\n", indent_level, "");
+ yasm_symrec_print(csd->sym, f, indent_level+1);
+ fprintf(f, "%*sscnum=%d\n", indent_level, "", csd->scnum);
+ fprintf(f, "%*sflags=", indent_level, "");
+ switch (csd->flags & COFF_STYP_STD_MASK) {
+ case COFF_STYP_TEXT:
+ fprintf(f, "TEXT");
+ break;
+ case COFF_STYP_DATA:
+ fprintf(f, "DATA");
+ break;
+ case COFF_STYP_BSS:
+ fprintf(f, "BSS");
+ break;
+ default:
+ fprintf(f, "UNKNOWN");
+ break;
+ }
+ fprintf(f, "\n%*saddr=0x%lx\n", indent_level, "", csd->addr);
+ fprintf(f, "%*sscnptr=0x%lx\n", indent_level, "", csd->scnptr);
+ fprintf(f, "%*ssize=%ld\n", indent_level, "", csd->size);
+ fprintf(f, "%*srelptr=0x%lx\n", indent_level, "", csd->relptr);
+ fprintf(f, "%*snreloc=%ld\n", indent_level, "", csd->nreloc);
+ fprintf(f, "%*srelocs:\n", indent_level, "");
+}
+
+static void
+coff_symrec_data_destroy(void *data)
+{
+ yasm_xfree(data);
+}
+
+static void
+coff_symrec_data_print(void *data, FILE *f, int indent_level)
+{
+ coff_symrec_data *csd = (coff_symrec_data *)data;
+
+ fprintf(f, "%*ssymtab index=%lu\n", indent_level, "", csd->index);
+ fprintf(f, "%*ssclass=%d\n", indent_level, "", csd->sclass);
+}
+
+static void
+dir_export(yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_valparam *vp;
+ /*@null@*/ const char *symname;
+ int isnew;
+ yasm_section *sect;
+ yasm_datavalhead dvs;
+
+ /* Reference exported symbol (to generate error if not declared) */
+ vp = yasm_vps_first(valparams);
+ symname = yasm_vp_id(vp);
+ if (symname)
+ yasm_symtab_use(object->symtab, symname, line);
+ else {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("argument to EXPORT must be symbol name"));
+ return;
+ }
+
+ /* Add to end of linker directives */
+ sect = yasm_object_get_general(object, ".drectve", 0, 0, 0, &isnew, line);
+
+ /* Initialize directive section if needed */
+ if (isnew) {
+ coff_section_data *csd;
+ csd = yasm_section_get_data(sect, &coff_section_data_cb);
+ csd->flags = COFF_STYP_INFO | COFF_STYP_DISCARD | COFF_STYP_READ;
+ }
+
+ /* Add text as data bytecode */
+ yasm_dvs_initialize(&dvs);
+ yasm_dvs_append(&dvs, yasm_dv_create_string(yasm__xstrdup("-export:"),
+ strlen("-export:")));
+ yasm_dvs_append(&dvs, yasm_dv_create_string(yasm__xstrdup(symname),
+ strlen(symname)));
+ yasm_dvs_append(&dvs, yasm_dv_create_string(yasm__xstrdup(" "), 1));
+ yasm_section_bcs_append(sect, yasm_bc_create_data(&dvs, 1, 0, NULL, line));
+}
+
+static void
+dir_safeseh(yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_valparam *vp;
+ /*@null@*/ const char *symname;
+ yasm_symrec *sym;
+ int isnew;
+ yasm_section *sect;
+
+ /* Reference symbol (to generate error if not declared).
+ * Also, symbol must be externally visible, so force it.
+ */
+ vp = yasm_vps_first(valparams);
+ symname = yasm_vp_id(vp);
+ if (symname) {
+ coff_symrec_data *sym_data;
+ sym = yasm_symtab_use(object->symtab, symname, line);
+ sym_data = yasm_symrec_get_data(sym, &coff_symrec_data_cb);
+ if (!sym_data) {
+ sym_data = coff_objfmt_sym_set_data(sym, COFF_SCL_NULL, 0,
+ COFF_SYMTAB_AUX_NONE);
+ }
+ sym_data->forcevis = 1;
+ sym_data->type = 0x20; /* function */
+ } else {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("argument to SAFESEH must be symbol name"));
+ return;
+ }
+
+ /*
+ * Add symbol number to end of .sxdata section.
+ */
+
+ sect = yasm_object_get_general(object, ".sxdata", 0, 0, 0, &isnew, line);
+
+ /* Initialize sxdata section if needed */
+ if (isnew) {
+ coff_section_data *csd;
+ csd = yasm_section_get_data(sect, &coff_section_data_cb);
+ csd->flags = COFF_STYP_INFO;
+ }
+
+ /* Add as sxdata bytecode */
+ yasm_section_bcs_append(sect,
+ yasm_bc_create_common(&win32_sxdata_bc_callback,
+ sym, line));
+}
+
+static void
+win32_sxdata_bc_destroy(void *contents)
+{
+ /* Contents is just the symbol pointer, so no need to delete */
+}
+
+static void
+win32_sxdata_bc_print(const void *contents, FILE *f, int indent_level)
+{
+ /* TODO */
+}
+
+static int
+win32_sxdata_bc_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
+ void *add_span_data)
+{
+ bc->len += 4;
+ return 0;
+}
+
+static int
+win32_sxdata_bc_tobytes(yasm_bytecode *bc, unsigned char **bufp,
+ unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ yasm_output_reloc_func output_reloc)
+{
+ yasm_symrec *sym = (yasm_symrec *)bc->contents;
+ unsigned char *buf = *bufp;
+ coff_symrec_data *csymd;
+
+ csymd = yasm_symrec_get_data(sym, &coff_symrec_data_cb);
+ if (!csymd)
+ yasm_internal_error(N_("coff: no symbol data for SAFESEH symbol"));
+
+ YASM_WRITE_32_L(buf, csymd->index);
+
+ *bufp = buf;
+ return 0;
+}
+
+static void
+dir_ident(yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
+ yasm_valparamhead sect_vps;
+ yasm_datavalhead dvs;
+ yasm_section *comment;
+ const char *sectname;
+ yasm_valparam *vp, *vp2;
+
+ /* Accept, but do nothing with empty ident */
+ if (!valparams)
+ return;
+
+ vp = yasm_vps_first(valparams);
+ if (!vp)
+ return;
+
+ if (objfmt_coff->win32) {
+ /* Put ident data into .comment section for COFF, or .rdata$zzz
+ * to be compatible with the GNU linker, which doesn't ignore
+ * .comment (see binutils/gas/config/obj-coff.c:476-502).
+ */
+ sectname = ".rdata$zzz";
+ } else {
+ sectname = ".comment";
+ }
+ yasm_vps_initialize(&sect_vps);
+ vp2 = yasm_vp_create_id(NULL, yasm__xstrdup(sectname), '\0');
+ yasm_vps_append(&sect_vps, vp2);
+ comment = coff_objfmt_section_switch(object, &sect_vps, NULL, line);
+ yasm_vps_delete(&sect_vps);
+
+ /* To match GAS output, if the comment section is empty, put an
+ * initial 0 byte in the section.
+ */
+ if (yasm_section_bcs_first(comment) == yasm_section_bcs_last(comment)) {
+ yasm_dvs_initialize(&dvs);
+ yasm_dvs_append(&dvs, yasm_dv_create_expr(
+ yasm_expr_create_ident(yasm_expr_int(yasm_intnum_create_uint(0)),
+ line)));
+ yasm_section_bcs_append(comment,
+ yasm_bc_create_data(&dvs, 1, 0, object->arch, line));
+ }
+
+ yasm_dvs_initialize(&dvs);
+ do {
+ const char *s = yasm_vp_string(vp);
+ if (!s) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_(".comment requires string parameters"));
+ yasm_dvs_delete(&dvs);
+ return;
+ }
+ yasm_dvs_append(&dvs,
+ yasm_dv_create_string(yasm__xstrdup(s), strlen(s)));
+ } while ((vp = yasm_vps_next(vp)));
+
+ yasm_section_bcs_append(comment,
+ yasm_bc_create_data(&dvs, 1, 1, object->arch, line));
+}
+
+static void
+dir_secrel32(yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_datavalhead dvs;
+ yasm_valparam *vp;
+
+ if (!object->cur_section) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_(".secrel32 can only be used inside of a section"));
+ return;
+ }
+
+ vp = yasm_vps_first(valparams);
+ yasm_dvs_initialize(&dvs);
+ do {
+ yasm_expr *e = yasm_vp_expr(vp, object->symtab, line);
+ yasm_dataval *dv;
+ if (!e) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_(".secrel32 requires expressions"));
+ yasm_dvs_delete(&dvs);
+ return;
+ }
+ dv = yasm_dv_create_expr(e);
+ yasm_dv_get_value(dv)->section_rel = 1;
+ yasm_dvs_append(&dvs, dv);
+ } while ((vp = yasm_vps_next(vp)));
+
+ yasm_section_bcs_append(object->cur_section,
+ yasm_bc_create_data(&dvs, 4, 0, object->arch, line));
+}
+
+static void
+dir_def(yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
+ yasm_valparam *vp;
+ const char *symname;
+ yasm_symrec *sym;
+ coff_symrec_data *sym_data;
+
+ if (objfmt_coff->def_sym) {
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_(".def pseudo-op used inside of .def/.endef; ignored"));
+ return;
+ }
+
+ vp = yasm_vps_first(valparams);
+ symname = yasm_vp_id(vp);
+ if (!symname) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("argument to SAFESEH must be symbol name"));
+ return;
+ }
+
+ sym = yasm_symtab_use(object->symtab, symname, line);
+ sym_data = yasm_symrec_get_data(sym, &coff_symrec_data_cb);
+ if (!sym_data) {
+ sym_data = coff_objfmt_sym_set_data(sym, COFF_SCL_NULL, 0,
+ COFF_SYMTAB_AUX_NONE);
+ }
+ objfmt_coff->def_sym = sym_data;
+}
+
+static void
+dir_scl(yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
+ yasm_intnum *intn = NULL;
+
+ if (!objfmt_coff->def_sym) {
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("%s pseudo-op used outside of .def/.endef; ignored"),
+ ".scl");
+ return;
+ }
+
+ if (yasm_dir_helper_intn(object, yasm_vps_first(valparams), line,
+ &intn, 0) < 0)
+ return;
+ if (!intn)
+ return;
+ objfmt_coff->def_sym->sclass = yasm_intnum_get_uint(intn);
+ yasm_intnum_destroy(intn);
+}
+
+static void
+dir_type(yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
+ yasm_intnum *intn = NULL;
+
+ if (!objfmt_coff->def_sym) {
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("%s pseudo-op used outside of .def/.endef; ignored"),
+ ".type");
+ return;
+ }
+
+ if (yasm_dir_helper_intn(object, yasm_vps_first(valparams), line,
+ &intn, 0) < 0)
+ return;
+ if (!intn)
+ return;
+ objfmt_coff->def_sym->type = yasm_intnum_get_uint(intn);
+ yasm_intnum_destroy(intn);
+}
+
+static void
+dir_endef(yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
+ if (!objfmt_coff->def_sym) {
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_(".endef pseudo-op used before .def; ignored"));
+ return;
+ }
+ objfmt_coff->def_sym = NULL;
+}
+
+static void
+dir_proc_frame(yasm_object *object, /*@null@*/ yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
+ yasm_valparam *vp = yasm_vps_first(valparams);
+ const char *name = yasm_vp_id(vp);
+
+ if (objfmt_coff->proc_frame) {
+ yasm_error_set_xref(objfmt_coff->proc_frame,
+ N_("previous procedure started here"));
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("nested procedures not supported (didn't use [ENDPROC_FRAME]?)"));
+ return;
+ }
+ objfmt_coff->proc_frame = line;
+ objfmt_coff->done_prolog = 0;
+ objfmt_coff->unwind = yasm_win64__uwinfo_create();
+ objfmt_coff->unwind->proc = yasm_symtab_use(object->symtab, name, line);
+
+ /* Optional error handler */
+ vp = yasm_vps_next(vp);
+ if (!vp || !(name = yasm_vp_id(vp)))
+ return;
+ objfmt_coff->unwind->ehandler =
+ yasm_symtab_use(object->symtab, name, line);
+}
+
+static int
+procframe_checkstate(yasm_objfmt_coff *objfmt_coff, const char *dirname)
+{
+ if (!objfmt_coff->proc_frame) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("[%s] without preceding [PROC_FRAME]"), dirname);
+ return 0;
+ }
+ if (objfmt_coff->done_prolog) {
+ yasm_error_set_xref(objfmt_coff->done_prolog,
+ N_("prologue ended here"));
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("[%s] after end of prologue"),
+ dirname);
+ return 0;
+ }
+ if (!objfmt_coff->unwind)
+ yasm_internal_error(N_("unwind info not present"));
+ return 1;
+}
+
+/* Get current assembly position.
+ * XXX: There should be a better way to do this.
+ */
+static yasm_symrec *
+get_curpos(yasm_object *object, const char *dirname, unsigned long line)
+{
+ if (!object->cur_section) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("[%s] can only be used inside of a section"),
+ dirname);
+ return NULL;
+ }
+ return yasm_symtab_define_curpos(object->symtab, "$",
+ yasm_section_bcs_last(object->cur_section), line);
+}
+
+static void
+dir_pushreg(yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
+ yasm_valparam *vp = yasm_vps_first(valparams);
+ coff_unwind_code *code;
+ const uintptr_t *reg;
+
+ if (!procframe_checkstate(objfmt_coff, "PUSHREG"))
+ return;
+
+ if (vp->type != YASM_PARAM_EXPR ||
+ !(reg = yasm_expr_get_reg(&vp->param.e, 0))) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("[%s] requires a register as the first parameter"),
+ "PUSHREG");
+ return;
+ }
+
+ /* Generate a PUSH_NONVOL unwind code. */
+ code = yasm_xmalloc(sizeof(coff_unwind_code));
+ code->proc = objfmt_coff->unwind->proc;
+ code->loc = get_curpos(object, "PUSHREG", line);
+ code->opcode = UWOP_PUSH_NONVOL;
+ code->info = (unsigned int)(*reg & 0xF);
+ yasm_value_initialize(&code->off, NULL, 0);
+ SLIST_INSERT_HEAD(&objfmt_coff->unwind->codes, code, link);
+}
+
+static void
+dir_setframe(yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
+ yasm_valparam *vp = yasm_vps_first(valparams);
+ coff_unwind_code *code;
+ const uintptr_t *reg;
+ yasm_expr *off = NULL;
+
+ if (!procframe_checkstate(objfmt_coff, "SETFRAME"))
+ return;
+
+ if (vp->type != YASM_PARAM_EXPR ||
+ !(reg = yasm_expr_get_reg(&vp->param.e, 0))) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("[%s] requires a register as the first parameter"),
+ "SETFRAME");
+ return;
+ }
+
+ vp = yasm_vps_next(vp);
+ if (vp)
+ off = yasm_vp_expr(vp, object->symtab, line);
+
+ /* Set the frame fields in the unwind info */
+ objfmt_coff->unwind->framereg = (unsigned long)(*reg);
+ yasm_value_initialize(&objfmt_coff->unwind->frameoff, off, 8);
+
+ /* Generate a SET_FPREG unwind code */
+ code = yasm_xmalloc(sizeof(coff_unwind_code));
+ code->proc = objfmt_coff->unwind->proc;
+ code->loc = get_curpos(object, "SETFRAME", line);
+ code->opcode = UWOP_SET_FPREG;
+ code->info = (unsigned int)(*reg & 0xF);
+ yasm_value_initialize(&code->off, off ? yasm_expr_copy(off) : NULL, 8);
+ SLIST_INSERT_HEAD(&objfmt_coff->unwind->codes, code, link);
+}
+
+static void
+dir_allocstack(yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
+ yasm_valparam *vp = yasm_vps_first(valparams);
+ /*@null@*/ /*@only@*/ yasm_expr *size;
+ coff_unwind_code *code;
+
+ if (!procframe_checkstate(objfmt_coff, "ALLOCSTACK"))
+ return;
+
+ size = yasm_vp_expr(vp, object->symtab, line);
+ if (!size) {
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("[%s] requires a size"),
+ "ALLOCSTACK");
+ return;
+ }
+
+ /* Generate an ALLOC_SMALL unwind code; this will get enlarged to an
+ * ALLOC_LARGE if necessary.
+ */
+ code = yasm_xmalloc(sizeof(coff_unwind_code));
+ code->proc = objfmt_coff->unwind->proc;
+ code->loc = get_curpos(object, "ALLOCSTACK", line);
+ code->opcode = UWOP_ALLOC_SMALL;
+ code->info = 0;
+ yasm_value_initialize(&code->off, size, 7);
+ SLIST_INSERT_HEAD(&objfmt_coff->unwind->codes, code, link);
+}
+
+static void
+dir_save_common(yasm_object *object, yasm_valparamhead *valparams,
+ unsigned long line, const char *name, int op)
+{
+ yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
+ yasm_valparam *vp = yasm_vps_first(valparams);
+ coff_unwind_code *code;
+ const uintptr_t *reg;
+ /*@only@*/ /*@null@*/ yasm_expr *offset;
+
+ if (!procframe_checkstate(objfmt_coff, name))
+ return;
+
+ if (vp->type != YASM_PARAM_EXPR ||
+ !(reg = yasm_expr_get_reg(&vp->param.e, 0))) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("[%s] requires a register as the first parameter"),
+ name);
+ return;
+ }
+
+ vp = yasm_vps_next(vp);
+ offset = yasm_vp_expr(vp, object->symtab, line);
+ if (!offset) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("[%s] requires an offset as the second parameter"),
+ name);
+ return;
+ }
+
+ /* Generate a SAVE_XXX unwind code; this will get enlarged to a
+ * SAVE_XXX_FAR if necessary.
+ */
+ code = yasm_xmalloc(sizeof(coff_unwind_code));
+ code->proc = objfmt_coff->unwind->proc;
+ code->loc = get_curpos(object, name, line);
+ code->opcode = op;
+ code->info = (unsigned int)(*reg & 0xF);
+ yasm_value_initialize(&code->off, offset, 16);
+ SLIST_INSERT_HEAD(&objfmt_coff->unwind->codes, code, link);
+}
+
+static void
+dir_savereg(yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ dir_save_common(object, valparams, line, "SAVEREG", UWOP_SAVE_NONVOL);
+}
+
+static void
+dir_savexmm128(yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ dir_save_common(object, valparams, line, "SAVEXMM128", UWOP_SAVE_XMM128);
+}
+
+static void
+dir_pushframe(yasm_object *object, /*@null@*/ yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
+ yasm_valparam *vp = yasm_vps_first(valparams);
+ coff_unwind_code *code;
+
+ if (!procframe_checkstate(objfmt_coff, "PUSHFRAME"))
+ return;
+
+ /* Generate a PUSH_MACHFRAME unwind code. If there's any parameter,
+ * we set info to 1. Otherwise we set info to 0.
+ */
+ code = yasm_xmalloc(sizeof(coff_unwind_code));
+ code->proc = objfmt_coff->unwind->proc;
+ code->loc = get_curpos(object, "PUSHFRAME", line);
+ code->opcode = UWOP_PUSH_MACHFRAME;
+ code->info = vp != NULL;
+ yasm_value_initialize(&code->off, NULL, 0);
+ SLIST_INSERT_HEAD(&objfmt_coff->unwind->codes, code, link);
+}
+
+static void
+dir_endprolog(yasm_object *object, /*@null@*/ yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
+ if (!procframe_checkstate(objfmt_coff, "ENDPROLOG"))
+ return;
+ objfmt_coff->done_prolog = line;
+
+ objfmt_coff->unwind->prolog = get_curpos(object, "ENDPROLOG", line);
+}
+
+static void
+dir_endproc_frame(yasm_object *object, /*@null@*/ yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt;
+ yasm_section *sect;
+ coff_section_data *csd;
+ yasm_datavalhead dvs;
+ int isnew;
+ /*@dependent@*/ yasm_symrec *curpos, *unwindpos, *proc_sym, *xdata_sym;
+
+ if (!objfmt_coff->proc_frame) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("[%s] without preceding [PROC_FRAME]"),
+ "ENDPROC_FRAME");
+ return;
+ }
+ if (!objfmt_coff->done_prolog) {
+ yasm_error_set_xref(objfmt_coff->proc_frame,
+ N_("procedure started here"));
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("ended procedure without ending prologue"),
+ "ENDPROC_FRAME");
+ objfmt_coff->proc_frame = 0;
+ yasm_win64__uwinfo_destroy(objfmt_coff->unwind);
+ objfmt_coff->unwind = NULL;
+ return;
+ }
+ if (!objfmt_coff->unwind)
+ yasm_internal_error(N_("unwind info not present"));
+
+ proc_sym = objfmt_coff->unwind->proc;
+
+ curpos = get_curpos(object, "ENDPROC_FRAME", line);
+
+ /*
+ * Add unwind info to end of .xdata section.
+ */
+
+ sect = yasm_object_get_general(object, ".xdata", 0, 0, 0, &isnew, line);
+
+ /* Initialize xdata section if needed */
+ if (isnew) {
+ csd = yasm_section_get_data(sect, &coff_section_data_cb);
+ csd->flags = COFF_STYP_DATA | COFF_STYP_READ;
+ yasm_section_set_align(sect, 8, line);
+ }
+
+ /* Get current position in .xdata section */
+ unwindpos = yasm_symtab_define_curpos(object->symtab, "$",
+ yasm_section_bcs_last(sect), line);
+ /* Get symbol for .xdata as we'll want to reference it with WRT */
+ csd = yasm_section_get_data(sect, &coff_section_data_cb);
+ xdata_sym = csd->sym;
+
+ /* Add unwind info. Use line number of start of procedure. */
+ yasm_win64__unwind_generate(sect, objfmt_coff->unwind,
+ objfmt_coff->proc_frame);
+ objfmt_coff->unwind = NULL; /* generate keeps the unwind pointer */
+
+ /*
+ * Add function lookup to end of .pdata section.
+ */
+
+ sect = yasm_object_get_general(object, ".pdata", 0, 0, 0, &isnew, line);
+
+ /* Initialize pdata section if needed */
+ if (isnew) {
+ csd = yasm_section_get_data(sect, &coff_section_data_cb);
+ csd->flags = COFF_STYP_DATA | COFF_STYP_READ;
+ csd->flags2 = COFF_FLAG_NOBASE;
+ yasm_section_set_align(sect, 4, line);
+ }
+
+ /* Add function structure as data bytecode */
+ yasm_dvs_initialize(&dvs);
+ yasm_dvs_append(&dvs, yasm_dv_create_expr(
+ yasm_expr_create_ident(yasm_expr_sym(proc_sym), line)));
+ yasm_dvs_append(&dvs, yasm_dv_create_expr(
+ yasm_expr_create(YASM_EXPR_WRT, yasm_expr_sym(curpos),
+ yasm_expr_sym(proc_sym), line)));
+ yasm_dvs_append(&dvs, yasm_dv_create_expr(
+ yasm_expr_create(YASM_EXPR_WRT, yasm_expr_sym(unwindpos),
+ yasm_expr_sym(xdata_sym), line)));
+ yasm_section_bcs_append(sect, yasm_bc_create_data(&dvs, 4, 0, NULL, line));
+
+ objfmt_coff->proc_frame = 0;
+ objfmt_coff->done_prolog = 0;
+}
+
+/* Define valid debug formats to use with this object format */
+static const char *coff_objfmt_dbgfmt_keywords[] = {
+ "null",
+ "dwarf2",
+ NULL
+};
+
+static const yasm_directive coff_objfmt_directives[] = {
+ { ".ident", "gas", dir_ident, YASM_DIR_ANY },
+ { "ident", "nasm", dir_ident, YASM_DIR_ANY },
+ { ".def", "gas", dir_def, YASM_DIR_ID_REQUIRED },
+ { ".endef", "gas", dir_endef, YASM_DIR_ANY },
+ { ".scl", "gas", dir_scl, YASM_DIR_ARG_REQUIRED },
+ { ".type", "gas", dir_type, YASM_DIR_ARG_REQUIRED },
+ { ".secrel32", "gas", dir_secrel32, YASM_DIR_ARG_REQUIRED },
+ { NULL, NULL, NULL, 0 }
+};
+
+/* Define objfmt structure -- see objfmt.h for details */
+yasm_objfmt_module yasm_coff_LTX_objfmt = {
+ "COFF (DJGPP)",
+ "coff",
+ "o",
+ 32,
+ 0,
+ coff_objfmt_dbgfmt_keywords,
+ "null",
+ coff_objfmt_directives,
+ NULL, /* no standard macros */
+ coff_objfmt_create,
+ coff_objfmt_output,
+ coff_objfmt_destroy,
+ coff_objfmt_add_default_section,
+ coff_objfmt_init_new_section,
+ coff_objfmt_section_switch,
+ coff_objfmt_get_special_sym
+};
+
+/* Define valid debug formats to use with this object format */
+static const char *winXX_objfmt_dbgfmt_keywords[] = {
+ "null",
+ "dwarf2",
+ "cv8",
+ NULL
+};
+
+static const yasm_directive win32_objfmt_directives[] = {
+ { ".ident", "gas", dir_ident, YASM_DIR_ANY },
+ { "ident", "nasm", dir_ident, YASM_DIR_ANY },
+ { ".def", "gas", dir_def, YASM_DIR_ID_REQUIRED },
+ { ".endef", "gas", dir_endef, YASM_DIR_ANY },
+ { ".scl", "gas", dir_scl, YASM_DIR_ARG_REQUIRED },
+ { ".type", "gas", dir_type, YASM_DIR_ARG_REQUIRED },
+ { ".secrel32", "gas", dir_secrel32, YASM_DIR_ARG_REQUIRED },
+ { ".export", "gas", dir_export, YASM_DIR_ID_REQUIRED },
+ { "export", "nasm", dir_export, YASM_DIR_ID_REQUIRED },
+ { ".safeseh", "gas", dir_safeseh, YASM_DIR_ID_REQUIRED },
+ { "safeseh", "nasm", dir_safeseh, YASM_DIR_ID_REQUIRED },
+ { NULL, NULL, NULL, 0 }
+};
+
+static const char *win32_nasm_stdmac[] = {
+ "%imacro export 1+.nolist",
+ "[export %1]",
+ "%endmacro",
+ "%imacro safeseh 1+.nolist",
+ "[safeseh %1]",
+ "%endmacro",
+ NULL
+};
+
+static const yasm_stdmac win32_objfmt_stdmacs[] = {
+ { "nasm", "nasm", win32_nasm_stdmac },
+ { NULL, NULL, NULL }
+};
+
+/* Define objfmt structure -- see objfmt.h for details */
+yasm_objfmt_module yasm_win32_LTX_objfmt = {
+ "Win32",
+ "win32",
+ "obj",
+ 32,
+ 1,
+ winXX_objfmt_dbgfmt_keywords,
+ "null",
+ win32_objfmt_directives,
+ win32_objfmt_stdmacs,
+ win32_objfmt_create,
+ coff_objfmt_output,
+ coff_objfmt_destroy,
+ coff_objfmt_add_default_section,
+ coff_objfmt_init_new_section,
+ coff_objfmt_section_switch,
+ coff_objfmt_get_special_sym
+};
+
+static const yasm_directive win64_objfmt_directives[] = {
+ { ".ident", "gas", dir_ident, YASM_DIR_ANY },
+ { "ident", "nasm", dir_ident, YASM_DIR_ANY },
+ { ".def", "gas", dir_def, YASM_DIR_ID_REQUIRED },
+ { ".endef", "gas", dir_endef, YASM_DIR_ANY },
+ { ".scl", "gas", dir_scl, YASM_DIR_ARG_REQUIRED },
+ { ".type", "gas", dir_type, YASM_DIR_ARG_REQUIRED },
+ { ".secrel32", "gas", dir_secrel32, YASM_DIR_ARG_REQUIRED },
+ { ".export", "gas", dir_export, YASM_DIR_ID_REQUIRED },
+ { "export", "nasm", dir_export, YASM_DIR_ID_REQUIRED },
+ { ".proc_frame", "gas", dir_proc_frame, YASM_DIR_ID_REQUIRED },
+ { "proc_frame", "nasm", dir_proc_frame, YASM_DIR_ID_REQUIRED },
+ { ".pushreg", "gas", dir_pushreg, YASM_DIR_ARG_REQUIRED },
+ { "pushreg", "nasm", dir_pushreg, YASM_DIR_ARG_REQUIRED },
+ { ".setframe", "gas", dir_setframe, YASM_DIR_ARG_REQUIRED },
+ { "setframe", "nasm", dir_setframe, YASM_DIR_ARG_REQUIRED },
+ { ".allocstack", "gas", dir_allocstack, YASM_DIR_ARG_REQUIRED },
+ { "allocstack", "nasm", dir_allocstack, YASM_DIR_ARG_REQUIRED },
+ { ".savereg", "gas", dir_savereg, YASM_DIR_ARG_REQUIRED },
+ { "savereg", "nasm", dir_savereg, YASM_DIR_ARG_REQUIRED },
+ { ".savexmm128", "gas", dir_savexmm128, YASM_DIR_ARG_REQUIRED },
+ { "savexmm128", "nasm", dir_savexmm128, YASM_DIR_ARG_REQUIRED },
+ { ".pushframe", "gas", dir_pushframe, YASM_DIR_ANY },
+ { "pushframe", "nasm", dir_pushframe, YASM_DIR_ANY },
+ { ".endprolog", "gas", dir_endprolog, YASM_DIR_ANY },
+ { "endprolog", "nasm", dir_endprolog, YASM_DIR_ANY },
+ { ".endproc_frame", "gas", dir_endproc_frame, YASM_DIR_ANY },
+ { "endproc_frame", "nasm", dir_endproc_frame, YASM_DIR_ANY },
+ { NULL, NULL, NULL, 0 }
+};
+
+#include "win64-nasm.c"
+#include "win64-gas.c"
+
+static const yasm_stdmac win64_objfmt_stdmacs[] = {
+ { "nasm", "nasm", win64_nasm_stdmac },
+ { "gas", "nasm", win64_gas_stdmac },
+ { NULL, NULL, NULL }
+};
+
+/* Define objfmt structure -- see objfmt.h for details */
+yasm_objfmt_module yasm_win64_LTX_objfmt = {
+ "Win64",
+ "win64",
+ "obj",
+ 64,
+ 1,
+ winXX_objfmt_dbgfmt_keywords,
+ "null",
+ win64_objfmt_directives,
+ win64_objfmt_stdmacs,
+ win64_objfmt_create,
+ coff_objfmt_output,
+ coff_objfmt_destroy,
+ coff_objfmt_add_default_section,
+ coff_objfmt_init_new_section,
+ coff_objfmt_section_switch,
+ win64_objfmt_get_special_sym
+};
+yasm_objfmt_module yasm_x64_LTX_objfmt = {
+ "Win64",
+ "x64",
+ "obj",
+ 64,
+ 1,
+ winXX_objfmt_dbgfmt_keywords,
+ "null",
+ win64_objfmt_directives,
+ win64_objfmt_stdmacs,
+ win64_objfmt_create,
+ coff_objfmt_output,
+ coff_objfmt_destroy,
+ coff_objfmt_add_default_section,
+ coff_objfmt_init_new_section,
+ coff_objfmt_section_switch,
+ win64_objfmt_get_special_sym
+};
diff --git a/contrib/tools/yasm/modules/objfmts/coff/coff-objfmt.h b/contrib/tools/yasm/modules/objfmts/coff/coff-objfmt.h
index cdd581acb2..10d88a0982 100644
--- a/contrib/tools/yasm/modules/objfmts/coff/coff-objfmt.h
+++ b/contrib/tools/yasm/modules/objfmts/coff/coff-objfmt.h
@@ -1,77 +1,77 @@
-/*
- * COFF (DJGPP) object format
- *
- * Copyright (C) 2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef COFF_OBJFMT_H
-#define COFF_OBJFMT_H
-
-typedef struct coff_unwind_code {
- SLIST_ENTRY(coff_unwind_code) link;
-
- /*@dependent@*/ yasm_symrec *proc; /* Start of procedure */
- /*@dependent@*/ yasm_symrec *loc; /* Location of operation */
- /* Unwind operation code */
- enum {
- UWOP_PUSH_NONVOL = 0,
- UWOP_ALLOC_LARGE = 1,
- UWOP_ALLOC_SMALL = 2,
- UWOP_SET_FPREG = 3,
- UWOP_SAVE_NONVOL = 4,
- UWOP_SAVE_NONVOL_FAR = 5,
- UWOP_SAVE_XMM128 = 8,
- UWOP_SAVE_XMM128_FAR = 9,
- UWOP_PUSH_MACHFRAME = 10
- } opcode;
- unsigned int info; /* Operation info */
- yasm_value off; /* Offset expression (used for some codes) */
-} coff_unwind_code;
-
-typedef struct coff_unwind_info {
- /*@dependent@*/ yasm_symrec *proc; /* Start of procedure */
- /*@dependent@*/ yasm_symrec *prolog; /* End of prologue */
-
- /*@null@*/ /*@dependent@*/ yasm_symrec *ehandler; /* Error handler */
-
- unsigned long framereg; /* Frame register */
- yasm_value frameoff; /* Frame offset */
-
- /* Linked list of codes, in decreasing location offset order.
- * Inserting at the head of this list during assembly naturally results
- * in this sorting.
- */
- SLIST_HEAD(coff_unwind_code_head, coff_unwind_code) codes;
-
- /* These aren't used until inside of generate. */
- yasm_value prolog_size;
- yasm_value codes_count;
-} coff_unwind_info;
-
-coff_unwind_info *yasm_win64__uwinfo_create(void);
-void yasm_win64__uwinfo_destroy(coff_unwind_info *info);
-void yasm_win64__unwind_generate(yasm_section *xdata,
- /*@only@*/ coff_unwind_info *info,
- unsigned long line);
-
-#endif
+/*
+ * COFF (DJGPP) object format
+ *
+ * Copyright (C) 2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef COFF_OBJFMT_H
+#define COFF_OBJFMT_H
+
+typedef struct coff_unwind_code {
+ SLIST_ENTRY(coff_unwind_code) link;
+
+ /*@dependent@*/ yasm_symrec *proc; /* Start of procedure */
+ /*@dependent@*/ yasm_symrec *loc; /* Location of operation */
+ /* Unwind operation code */
+ enum {
+ UWOP_PUSH_NONVOL = 0,
+ UWOP_ALLOC_LARGE = 1,
+ UWOP_ALLOC_SMALL = 2,
+ UWOP_SET_FPREG = 3,
+ UWOP_SAVE_NONVOL = 4,
+ UWOP_SAVE_NONVOL_FAR = 5,
+ UWOP_SAVE_XMM128 = 8,
+ UWOP_SAVE_XMM128_FAR = 9,
+ UWOP_PUSH_MACHFRAME = 10
+ } opcode;
+ unsigned int info; /* Operation info */
+ yasm_value off; /* Offset expression (used for some codes) */
+} coff_unwind_code;
+
+typedef struct coff_unwind_info {
+ /*@dependent@*/ yasm_symrec *proc; /* Start of procedure */
+ /*@dependent@*/ yasm_symrec *prolog; /* End of prologue */
+
+ /*@null@*/ /*@dependent@*/ yasm_symrec *ehandler; /* Error handler */
+
+ unsigned long framereg; /* Frame register */
+ yasm_value frameoff; /* Frame offset */
+
+ /* Linked list of codes, in decreasing location offset order.
+ * Inserting at the head of this list during assembly naturally results
+ * in this sorting.
+ */
+ SLIST_HEAD(coff_unwind_code_head, coff_unwind_code) codes;
+
+ /* These aren't used until inside of generate. */
+ yasm_value prolog_size;
+ yasm_value codes_count;
+} coff_unwind_info;
+
+coff_unwind_info *yasm_win64__uwinfo_create(void);
+void yasm_win64__uwinfo_destroy(coff_unwind_info *info);
+void yasm_win64__unwind_generate(yasm_section *xdata,
+ /*@only@*/ coff_unwind_info *info,
+ unsigned long line);
+
+#endif
diff --git a/contrib/tools/yasm/modules/objfmts/coff/win64-except.c b/contrib/tools/yasm/modules/objfmts/coff/win64-except.c
index 8fe585df8c..8c8ecbbc49 100644
--- a/contrib/tools/yasm/modules/objfmts/coff/win64-except.c
+++ b/contrib/tools/yasm/modules/objfmts/coff/win64-except.c
@@ -1,559 +1,559 @@
-/*
- * Win64 structured exception handling support
- *
- * Copyright (C) 2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <libyasm.h>
-
-#include "coff-objfmt.h"
-
-
-#define UNW_FLAG_EHANDLER 0x01
-#define UNW_FLAG_UHANDLER 0x02
-#define UNW_FLAG_CHAININFO 0x04
-
-/* Bytecode callback function prototypes */
-static void win64_uwinfo_bc_destroy(void *contents);
-static void win64_uwinfo_bc_print(const void *contents, FILE *f,
- int indent_level);
-static void win64_uwinfo_bc_finalize(yasm_bytecode *bc,
- yasm_bytecode *prev_bc);
-static int win64_uwinfo_bc_calc_len
- (yasm_bytecode *bc, yasm_bc_add_span_func add_span, void *add_span_data);
-static int win64_uwinfo_bc_expand(yasm_bytecode *bc, int span, long old_val,
- long new_val, /*@out@*/ long *neg_thres,
- /*@out@*/ long *pos_thres);
-static int win64_uwinfo_bc_tobytes
- (yasm_bytecode *bc, unsigned char **bufp, unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- /*@null@*/ yasm_output_reloc_func output_reloc);
-
-static void win64_uwcode_bc_destroy(void *contents);
-static void win64_uwcode_bc_print(const void *contents, FILE *f,
- int indent_level);
-static void win64_uwcode_bc_finalize(yasm_bytecode *bc,
- yasm_bytecode *prev_bc);
-static int win64_uwcode_bc_calc_len
- (yasm_bytecode *bc, yasm_bc_add_span_func add_span, void *add_span_data);
-static int win64_uwcode_bc_expand(yasm_bytecode *bc, int span, long old_val,
- long new_val, /*@out@*/ long *neg_thres,
- /*@out@*/ long *pos_thres);
-static int win64_uwcode_bc_tobytes
- (yasm_bytecode *bc, unsigned char **bufp, unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- /*@null@*/ yasm_output_reloc_func output_reloc);
-
-/* Bytecode callback structures */
-static const yasm_bytecode_callback win64_uwinfo_bc_callback = {
- win64_uwinfo_bc_destroy,
- win64_uwinfo_bc_print,
- win64_uwinfo_bc_finalize,
- NULL,
- win64_uwinfo_bc_calc_len,
- win64_uwinfo_bc_expand,
- win64_uwinfo_bc_tobytes,
- 0
-};
-
-static const yasm_bytecode_callback win64_uwcode_bc_callback = {
- win64_uwcode_bc_destroy,
- win64_uwcode_bc_print,
- win64_uwcode_bc_finalize,
- NULL,
- win64_uwcode_bc_calc_len,
- win64_uwcode_bc_expand,
- win64_uwcode_bc_tobytes,
- 0
-};
-
-
-coff_unwind_info *
-yasm_win64__uwinfo_create(void)
-{
- coff_unwind_info *info = yasm_xmalloc(sizeof(coff_unwind_info));
- info->proc = NULL;
- info->prolog = NULL;
- info->ehandler = NULL;
- info->framereg = 0;
- /* Frameoff is really a 4-bit value, scaled by 16 */
- yasm_value_initialize(&info->frameoff, NULL, 8);
- SLIST_INIT(&info->codes);
- yasm_value_initialize(&info->prolog_size, NULL, 8);
- yasm_value_initialize(&info->codes_count, NULL, 8);
- return info;
-}
-
-void
-yasm_win64__uwinfo_destroy(coff_unwind_info *info)
-{
- coff_unwind_code *code;
-
- yasm_value_delete(&info->frameoff);
- yasm_value_delete(&info->prolog_size);
- yasm_value_delete(&info->codes_count);
-
- while (!SLIST_EMPTY(&info->codes)) {
- code = SLIST_FIRST(&info->codes);
- SLIST_REMOVE_HEAD(&info->codes, link);
- yasm_value_delete(&code->off);
- yasm_xfree(code);
- }
- yasm_xfree(info);
-}
-
-void
-yasm_win64__unwind_generate(yasm_section *xdata, coff_unwind_info *info,
- unsigned long line)
-{
- yasm_bytecode *infobc, *codebc = NULL;
- coff_unwind_code *code;
-
- /* 4-byte align the start of unwind info */
- yasm_section_bcs_append(xdata, yasm_bc_create_align(
- yasm_expr_create_ident(yasm_expr_int(yasm_intnum_create_uint(4)),
- line),
- NULL, NULL, NULL, line));
-
- /* Prolog size = end of prolog - start of procedure */
- yasm_value_initialize(&info->prolog_size,
- yasm_expr_create(YASM_EXPR_SUB, yasm_expr_sym(info->prolog),
- yasm_expr_sym(info->proc), line),
- 8);
-
- /* Unwind info */
- infobc = yasm_bc_create_common(&win64_uwinfo_bc_callback, info, line);
- yasm_section_bcs_append(xdata, infobc);
-
- /* Code array */
- SLIST_FOREACH(code, &info->codes, link) {
- codebc = yasm_bc_create_common(&win64_uwcode_bc_callback, code,
- yasm_symrec_get_def_line(code->loc));
- yasm_section_bcs_append(xdata, codebc);
- }
-
- /* Avoid double-free (by code destroy and uwinfo destroy). */
- SLIST_INIT(&info->codes);
-
- /* Number of codes = (Last code - end of info) >> 1 */
- if (!codebc) {
- yasm_value_initialize(&info->codes_count,
- yasm_expr_create_ident(yasm_expr_int(yasm_intnum_create_uint(0)),
- line),
- 8);
- } else {
- yasm_value_initialize(&info->codes_count,
- yasm_expr_create(YASM_EXPR_SHR, yasm_expr_expr(
- yasm_expr_create(YASM_EXPR_SUB, yasm_expr_precbc(codebc),
- yasm_expr_precbc(infobc), line)),
- yasm_expr_int(yasm_intnum_create_uint(1)), line),
- 8);
- }
-
- /* 4-byte align */
- yasm_section_bcs_append(xdata, yasm_bc_create_align(
- yasm_expr_create_ident(yasm_expr_int(yasm_intnum_create_uint(4)),
- line),
- NULL, NULL, NULL, line));
-
- /* Exception handler, if present. Use data bytecode. */
- if (info->ehandler) {
- yasm_datavalhead dvs;
-
- yasm_dvs_initialize(&dvs);
- yasm_dvs_append(&dvs, yasm_dv_create_expr(
- yasm_expr_create_ident(yasm_expr_sym(info->ehandler), line)));
- yasm_section_bcs_append(xdata,
- yasm_bc_create_data(&dvs, 4, 0, NULL, line));
- }
-}
-
-static void
-win64_uwinfo_bc_destroy(void *contents)
-{
- yasm_win64__uwinfo_destroy((coff_unwind_info *)contents);
-}
-
-static void
-win64_uwinfo_bc_print(const void *contents, FILE *f, int indent_level)
-{
- /* TODO */
-}
-
-static void
-win64_uwinfo_bc_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc)
-{
- coff_unwind_info *info = (coff_unwind_info *)bc->contents;
-
- if (yasm_value_finalize(&info->prolog_size, prev_bc))
- yasm_internal_error(N_("prolog size expression too complex"));
-
- if (yasm_value_finalize(&info->codes_count, prev_bc))
- yasm_internal_error(N_("codes count expression too complex"));
-
- if (yasm_value_finalize(&info->frameoff, prev_bc))
- yasm_error_set(YASM_ERROR_VALUE,
- N_("frame offset expression too complex"));
-}
-
-static int
-win64_uwinfo_bc_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
- void *add_span_data)
-{
- coff_unwind_info *info = (coff_unwind_info *)bc->contents;
- /*@only@*/ /*@null@*/ yasm_intnum *intn;
- long intv;
-
- /* Want to make sure prolog size and codes count doesn't exceed
- * byte-size, and scaled frame offset doesn't exceed 4 bits.
- */
- add_span(add_span_data, bc, 1, &info->prolog_size, 0, 255);
- add_span(add_span_data, bc, 2, &info->codes_count, 0, 255);
-
- intn = yasm_value_get_intnum(&info->frameoff, bc, 0);
- if (intn) {
- intv = yasm_intnum_get_int(intn);
- if (intv < 0 || intv > 240)
- yasm_error_set(YASM_ERROR_VALUE,
- N_("frame offset of %ld bytes, must be between 0 and 240"),
- intv);
- else if ((intv & 0xF) != 0)
- yasm_error_set(YASM_ERROR_VALUE,
- N_("frame offset of %ld is not a multiple of 16"), intv);
- yasm_intnum_destroy(intn);
- } else
- add_span(add_span_data, bc, 3, &info->frameoff, 0, 240);
-
- bc->len += 4;
- return 0;
-}
-
-static int
-win64_uwinfo_bc_expand(yasm_bytecode *bc, int span, long old_val, long new_val,
- /*@out@*/ long *neg_thres, /*@out@*/ long *pos_thres)
-{
- coff_unwind_info *info = (coff_unwind_info *)bc->contents;
- switch (span) {
- case 1:
- yasm_error_set_xref(yasm_symrec_get_def_line(info->prolog),
- N_("prologue ended here"));
- yasm_error_set(YASM_ERROR_VALUE,
- N_("prologue %ld bytes, must be <256"), new_val);
- return -1;
- case 2:
- yasm_error_set(YASM_ERROR_VALUE,
- N_("%ld unwind codes, maximum of 255"), new_val);
- return -1;
- case 3:
- yasm_error_set(YASM_ERROR_VALUE,
- N_("frame offset of %ld bytes, must be between 0 and 240"),
- new_val);
- return -1;
- default:
- yasm_internal_error(N_("unrecognized span id"));
- }
- return 0;
-}
-
-static int
-win64_uwinfo_bc_tobytes(yasm_bytecode *bc, unsigned char **bufp,
- unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- yasm_output_reloc_func output_reloc)
-{
- coff_unwind_info *info = (coff_unwind_info *)bc->contents;
- unsigned char *buf = *bufp;
- /*@only@*/ /*@null@*/ yasm_intnum *frameoff;
- long intv;
-
- /* Version and flags */
- if (info->ehandler)
- YASM_WRITE_8(buf, 1 | (UNW_FLAG_EHANDLER << 3));
- else
- YASM_WRITE_8(buf, 1);
-
- /* Size of prolog */
- output_value(&info->prolog_size, buf, 1, (unsigned long)(buf-bufstart),
- bc, 1, d);
- buf += 1;
-
- /* Count of codes */
- output_value(&info->codes_count, buf, 1, (unsigned long)(buf-bufstart),
- bc, 1, d);
- buf += 1;
-
- /* Frame register and offset */
- frameoff = yasm_value_get_intnum(&info->frameoff, bc, 1);
- if (!frameoff) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("frame offset expression too complex"));
- return 1;
- }
- intv = yasm_intnum_get_int(frameoff);
- if (intv < 0 || intv > 240)
- yasm_error_set(YASM_ERROR_VALUE,
- N_("frame offset of %ld bytes, must be between 0 and 240"), intv);
- else if ((intv & 0xF) != 0)
- yasm_error_set(YASM_ERROR_VALUE,
- N_("frame offset of %ld is not a multiple of 16"), intv);
-
- YASM_WRITE_8(buf, ((unsigned long)intv & 0xF0) | (info->framereg & 0x0F));
- yasm_intnum_destroy(frameoff);
-
- *bufp = buf;
- return 0;
-}
-
-static void
-win64_uwcode_bc_destroy(void *contents)
-{
- coff_unwind_code *code = (coff_unwind_code *)contents;
- yasm_value_delete(&code->off);
- yasm_xfree(contents);
-}
-
-static void
-win64_uwcode_bc_print(const void *contents, FILE *f, int indent_level)
-{
- /* TODO */
-}
-
-static void
-win64_uwcode_bc_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc)
-{
- coff_unwind_code *code = (coff_unwind_code *)bc->contents;
- if (yasm_value_finalize(&code->off, prev_bc))
- yasm_error_set(YASM_ERROR_VALUE, N_("offset expression too complex"));
-}
-
-static int
-win64_uwcode_bc_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
- void *add_span_data)
-{
- coff_unwind_code *code = (coff_unwind_code *)bc->contents;
- int span = 0;
- /*@only@*/ /*@null@*/ yasm_intnum *intn;
- long intv;
- long low, high, mask;
-
- bc->len += 2; /* Prolog offset, code, and info */
-
- switch (code->opcode) {
- case UWOP_PUSH_NONVOL:
- case UWOP_SET_FPREG:
- case UWOP_PUSH_MACHFRAME:
- /* always 1 node */
- return 0;
- case UWOP_ALLOC_SMALL:
- case UWOP_ALLOC_LARGE:
- /* Start with smallest, then work our way up as necessary */
- code->opcode = UWOP_ALLOC_SMALL;
- code->info = 0;
- span = 1; low = 8; high = 128; mask = 0x7;
- break;
- case UWOP_SAVE_NONVOL:
- case UWOP_SAVE_NONVOL_FAR:
- /* Start with smallest, then work our way up as necessary */
- code->opcode = UWOP_SAVE_NONVOL;
- bc->len += 2; /* Scaled offset */
- span = 2;
- low = 0;
- high = 8*64*1024-8; /* 16-bit field, *8 scaling */
- mask = 0x7;
- break;
- case UWOP_SAVE_XMM128:
- case UWOP_SAVE_XMM128_FAR:
- /* Start with smallest, then work our way up as necessary */
- code->opcode = UWOP_SAVE_XMM128;
- bc->len += 2; /* Scaled offset */
- span = 3;
- low = 0;
- high = 16*64*1024-16; /* 16-bit field, *16 scaling */
- mask = 0xF;
- break;
- default:
- yasm_internal_error(N_("unrecognied unwind opcode"));
- /*@unreached@*/
- return 0;
- }
-
- intn = yasm_value_get_intnum(&code->off, bc, 0);
- if (intn) {
- intv = yasm_intnum_get_int(intn);
- if (intv > high) {
- /* Expand it ourselves here if we can and we're already larger */
- if (win64_uwcode_bc_expand(bc, span, intv, intv, &low, &high) > 0)
- add_span(add_span_data, bc, span, &code->off, low, high);
- }
- if (intv < low)
- yasm_error_set(YASM_ERROR_VALUE,
- N_("negative offset not allowed"));
- if ((intv & mask) != 0)
- yasm_error_set(YASM_ERROR_VALUE,
- N_("offset of %ld is not a multiple of %ld"), intv, mask+1);
- yasm_intnum_destroy(intn);
- } else
- add_span(add_span_data, bc, span, &code->off, low, high);
- return 0;
-}
-
-static int
-win64_uwcode_bc_expand(yasm_bytecode *bc, int span, long old_val, long new_val,
- /*@out@*/ long *neg_thres, /*@out@*/ long *pos_thres)
-{
- coff_unwind_code *code = (coff_unwind_code *)bc->contents;
-
- if (new_val < 0) {
- yasm_error_set(YASM_ERROR_VALUE, N_("negative offset not allowed"));
- return -1;
- }
-
- if (span == 1) {
- /* 3 stages: SMALL, LARGE and info=0, LARGE and info=1 */
- if (code->opcode == UWOP_ALLOC_LARGE && code->info == 1)
- yasm_internal_error(N_("expansion on already largest alloc"));
-
- if (code->opcode == UWOP_ALLOC_SMALL && new_val > 128) {
- /* Overflowed small size */
- code->opcode = UWOP_ALLOC_LARGE;
- bc->len += 2;
- }
- if (new_val <= 8*64*1024-8) {
- /* Still can grow one more size */
- *pos_thres = 8*64*1024-8;
- return 1;
- }
- /* We're into the largest size */
- code->info = 1;
- bc->len += 2;
- } else if (code->opcode == UWOP_SAVE_NONVOL && span == 2) {
- code->opcode = UWOP_SAVE_NONVOL_FAR;
- bc->len += 2;
- } else if (code->opcode == UWOP_SAVE_XMM128 && span == 3) {
- code->opcode = UWOP_SAVE_XMM128_FAR;
- bc->len += 2;
- }
- return 0;
-}
-
-static int
-win64_uwcode_bc_tobytes(yasm_bytecode *bc, unsigned char **bufp,
- unsigned char *bufstart, void *d,
- yasm_output_value_func output_value,
- yasm_output_reloc_func output_reloc)
-{
- coff_unwind_code *code = (coff_unwind_code *)bc->contents;
- unsigned char *buf = *bufp;
- yasm_value val;
- unsigned int size;
- int shift;
- long intv, low, high, mask;
- yasm_intnum *intn;
-
- /* Offset in prolog */
- yasm_value_initialize(&val,
- yasm_expr_create(YASM_EXPR_SUB, yasm_expr_sym(code->loc),
- yasm_expr_sym(code->proc), bc->line),
- 8);
- output_value(&val, buf, 1, (unsigned long)(buf-bufstart), bc, 1, d);
- buf += 1;
- yasm_value_delete(&val);
-
- /* Offset value */
- switch (code->opcode) {
- case UWOP_PUSH_NONVOL:
- case UWOP_SET_FPREG:
- case UWOP_PUSH_MACHFRAME:
- /* just 1 node, no offset; write opcode and info and we're done */
- YASM_WRITE_8(buf, (code->info << 4) | (code->opcode & 0xF));
- *bufp = buf;
- return 0;
- case UWOP_ALLOC_SMALL:
- /* 1 node, but offset stored in info */
- size = 0; low = 8; high = 128; shift = 3; mask = 0x7;
- break;
- case UWOP_ALLOC_LARGE:
- if (code->info == 0) {
- size = 2; low = 136; high = 8*64*1024-8; shift = 3;
- } else {
- size = 4; low = high = 0; shift = 0;
- }
- mask = 0x7;
- break;
- case UWOP_SAVE_NONVOL:
- size = 2; low = 0; high = 8*64*1024-8; shift = 3; mask = 0x7;
- break;
- case UWOP_SAVE_XMM128:
- size = 2; low = 0; high = 16*64*1024-16; shift = 4; mask = 0xF;
- break;
- case UWOP_SAVE_NONVOL_FAR:
- size = 4; low = high = 0; shift = 0; mask = 0x7;
- break;
- case UWOP_SAVE_XMM128_FAR:
- size = 4; low = high = 0; shift = 0; mask = 0xF;
- break;
- default:
- yasm_internal_error(N_("unrecognied unwind opcode"));
- /*@unreached@*/
- return 1;
- }
-
- /* Check for overflow */
- intn = yasm_value_get_intnum(&code->off, bc, 1);
- if (!intn) {
- yasm_error_set(YASM_ERROR_VALUE, N_("offset expression too complex"));
- return 1;
- }
- intv = yasm_intnum_get_int(intn);
- if (size != 4 && (intv < low || intv > high)) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("offset of %ld bytes, must be between %ld and %ld"),
- intv, low, high);
- return 1;
- }
- if ((intv & mask) != 0) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("offset of %ld is not a multiple of %ld"),
- intv, mask+1);
- return 1;
- }
-
- /* Stored value in info instead of extra code space */
- if (size == 0)
- code->info = (yasm_intnum_get_uint(intn) >> shift)-1;
-
- /* Opcode and info */
- YASM_WRITE_8(buf, (code->info << 4) | (code->opcode & 0xF));
-
- if (size != 0) {
- yasm_intnum_get_sized(intn, buf, size, size*8, -shift, 0, 1);
- buf += size;
- }
-
- yasm_intnum_destroy(intn);
-
- *bufp = buf;
- return 0;
-}
+/*
+ * Win64 structured exception handling support
+ *
+ * Copyright (C) 2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <libyasm.h>
+
+#include "coff-objfmt.h"
+
+
+#define UNW_FLAG_EHANDLER 0x01
+#define UNW_FLAG_UHANDLER 0x02
+#define UNW_FLAG_CHAININFO 0x04
+
+/* Bytecode callback function prototypes */
+static void win64_uwinfo_bc_destroy(void *contents);
+static void win64_uwinfo_bc_print(const void *contents, FILE *f,
+ int indent_level);
+static void win64_uwinfo_bc_finalize(yasm_bytecode *bc,
+ yasm_bytecode *prev_bc);
+static int win64_uwinfo_bc_calc_len
+ (yasm_bytecode *bc, yasm_bc_add_span_func add_span, void *add_span_data);
+static int win64_uwinfo_bc_expand(yasm_bytecode *bc, int span, long old_val,
+ long new_val, /*@out@*/ long *neg_thres,
+ /*@out@*/ long *pos_thres);
+static int win64_uwinfo_bc_tobytes
+ (yasm_bytecode *bc, unsigned char **bufp, unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ /*@null@*/ yasm_output_reloc_func output_reloc);
+
+static void win64_uwcode_bc_destroy(void *contents);
+static void win64_uwcode_bc_print(const void *contents, FILE *f,
+ int indent_level);
+static void win64_uwcode_bc_finalize(yasm_bytecode *bc,
+ yasm_bytecode *prev_bc);
+static int win64_uwcode_bc_calc_len
+ (yasm_bytecode *bc, yasm_bc_add_span_func add_span, void *add_span_data);
+static int win64_uwcode_bc_expand(yasm_bytecode *bc, int span, long old_val,
+ long new_val, /*@out@*/ long *neg_thres,
+ /*@out@*/ long *pos_thres);
+static int win64_uwcode_bc_tobytes
+ (yasm_bytecode *bc, unsigned char **bufp, unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ /*@null@*/ yasm_output_reloc_func output_reloc);
+
+/* Bytecode callback structures */
+static const yasm_bytecode_callback win64_uwinfo_bc_callback = {
+ win64_uwinfo_bc_destroy,
+ win64_uwinfo_bc_print,
+ win64_uwinfo_bc_finalize,
+ NULL,
+ win64_uwinfo_bc_calc_len,
+ win64_uwinfo_bc_expand,
+ win64_uwinfo_bc_tobytes,
+ 0
+};
+
+static const yasm_bytecode_callback win64_uwcode_bc_callback = {
+ win64_uwcode_bc_destroy,
+ win64_uwcode_bc_print,
+ win64_uwcode_bc_finalize,
+ NULL,
+ win64_uwcode_bc_calc_len,
+ win64_uwcode_bc_expand,
+ win64_uwcode_bc_tobytes,
+ 0
+};
+
+
+coff_unwind_info *
+yasm_win64__uwinfo_create(void)
+{
+ coff_unwind_info *info = yasm_xmalloc(sizeof(coff_unwind_info));
+ info->proc = NULL;
+ info->prolog = NULL;
+ info->ehandler = NULL;
+ info->framereg = 0;
+ /* Frameoff is really a 4-bit value, scaled by 16 */
+ yasm_value_initialize(&info->frameoff, NULL, 8);
+ SLIST_INIT(&info->codes);
+ yasm_value_initialize(&info->prolog_size, NULL, 8);
+ yasm_value_initialize(&info->codes_count, NULL, 8);
+ return info;
+}
+
+void
+yasm_win64__uwinfo_destroy(coff_unwind_info *info)
+{
+ coff_unwind_code *code;
+
+ yasm_value_delete(&info->frameoff);
+ yasm_value_delete(&info->prolog_size);
+ yasm_value_delete(&info->codes_count);
+
+ while (!SLIST_EMPTY(&info->codes)) {
+ code = SLIST_FIRST(&info->codes);
+ SLIST_REMOVE_HEAD(&info->codes, link);
+ yasm_value_delete(&code->off);
+ yasm_xfree(code);
+ }
+ yasm_xfree(info);
+}
+
+void
+yasm_win64__unwind_generate(yasm_section *xdata, coff_unwind_info *info,
+ unsigned long line)
+{
+ yasm_bytecode *infobc, *codebc = NULL;
+ coff_unwind_code *code;
+
+ /* 4-byte align the start of unwind info */
+ yasm_section_bcs_append(xdata, yasm_bc_create_align(
+ yasm_expr_create_ident(yasm_expr_int(yasm_intnum_create_uint(4)),
+ line),
+ NULL, NULL, NULL, line));
+
+ /* Prolog size = end of prolog - start of procedure */
+ yasm_value_initialize(&info->prolog_size,
+ yasm_expr_create(YASM_EXPR_SUB, yasm_expr_sym(info->prolog),
+ yasm_expr_sym(info->proc), line),
+ 8);
+
+ /* Unwind info */
+ infobc = yasm_bc_create_common(&win64_uwinfo_bc_callback, info, line);
+ yasm_section_bcs_append(xdata, infobc);
+
+ /* Code array */
+ SLIST_FOREACH(code, &info->codes, link) {
+ codebc = yasm_bc_create_common(&win64_uwcode_bc_callback, code,
+ yasm_symrec_get_def_line(code->loc));
+ yasm_section_bcs_append(xdata, codebc);
+ }
+
+ /* Avoid double-free (by code destroy and uwinfo destroy). */
+ SLIST_INIT(&info->codes);
+
+ /* Number of codes = (Last code - end of info) >> 1 */
+ if (!codebc) {
+ yasm_value_initialize(&info->codes_count,
+ yasm_expr_create_ident(yasm_expr_int(yasm_intnum_create_uint(0)),
+ line),
+ 8);
+ } else {
+ yasm_value_initialize(&info->codes_count,
+ yasm_expr_create(YASM_EXPR_SHR, yasm_expr_expr(
+ yasm_expr_create(YASM_EXPR_SUB, yasm_expr_precbc(codebc),
+ yasm_expr_precbc(infobc), line)),
+ yasm_expr_int(yasm_intnum_create_uint(1)), line),
+ 8);
+ }
+
+ /* 4-byte align */
+ yasm_section_bcs_append(xdata, yasm_bc_create_align(
+ yasm_expr_create_ident(yasm_expr_int(yasm_intnum_create_uint(4)),
+ line),
+ NULL, NULL, NULL, line));
+
+ /* Exception handler, if present. Use data bytecode. */
+ if (info->ehandler) {
+ yasm_datavalhead dvs;
+
+ yasm_dvs_initialize(&dvs);
+ yasm_dvs_append(&dvs, yasm_dv_create_expr(
+ yasm_expr_create_ident(yasm_expr_sym(info->ehandler), line)));
+ yasm_section_bcs_append(xdata,
+ yasm_bc_create_data(&dvs, 4, 0, NULL, line));
+ }
+}
+
+static void
+win64_uwinfo_bc_destroy(void *contents)
+{
+ yasm_win64__uwinfo_destroy((coff_unwind_info *)contents);
+}
+
+static void
+win64_uwinfo_bc_print(const void *contents, FILE *f, int indent_level)
+{
+ /* TODO */
+}
+
+static void
+win64_uwinfo_bc_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc)
+{
+ coff_unwind_info *info = (coff_unwind_info *)bc->contents;
+
+ if (yasm_value_finalize(&info->prolog_size, prev_bc))
+ yasm_internal_error(N_("prolog size expression too complex"));
+
+ if (yasm_value_finalize(&info->codes_count, prev_bc))
+ yasm_internal_error(N_("codes count expression too complex"));
+
+ if (yasm_value_finalize(&info->frameoff, prev_bc))
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("frame offset expression too complex"));
+}
+
+static int
+win64_uwinfo_bc_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
+ void *add_span_data)
+{
+ coff_unwind_info *info = (coff_unwind_info *)bc->contents;
+ /*@only@*/ /*@null@*/ yasm_intnum *intn;
+ long intv;
+
+ /* Want to make sure prolog size and codes count doesn't exceed
+ * byte-size, and scaled frame offset doesn't exceed 4 bits.
+ */
+ add_span(add_span_data, bc, 1, &info->prolog_size, 0, 255);
+ add_span(add_span_data, bc, 2, &info->codes_count, 0, 255);
+
+ intn = yasm_value_get_intnum(&info->frameoff, bc, 0);
+ if (intn) {
+ intv = yasm_intnum_get_int(intn);
+ if (intv < 0 || intv > 240)
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("frame offset of %ld bytes, must be between 0 and 240"),
+ intv);
+ else if ((intv & 0xF) != 0)
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("frame offset of %ld is not a multiple of 16"), intv);
+ yasm_intnum_destroy(intn);
+ } else
+ add_span(add_span_data, bc, 3, &info->frameoff, 0, 240);
+
+ bc->len += 4;
+ return 0;
+}
+
+static int
+win64_uwinfo_bc_expand(yasm_bytecode *bc, int span, long old_val, long new_val,
+ /*@out@*/ long *neg_thres, /*@out@*/ long *pos_thres)
+{
+ coff_unwind_info *info = (coff_unwind_info *)bc->contents;
+ switch (span) {
+ case 1:
+ yasm_error_set_xref(yasm_symrec_get_def_line(info->prolog),
+ N_("prologue ended here"));
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("prologue %ld bytes, must be <256"), new_val);
+ return -1;
+ case 2:
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("%ld unwind codes, maximum of 255"), new_val);
+ return -1;
+ case 3:
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("frame offset of %ld bytes, must be between 0 and 240"),
+ new_val);
+ return -1;
+ default:
+ yasm_internal_error(N_("unrecognized span id"));
+ }
+ return 0;
+}
+
+static int
+win64_uwinfo_bc_tobytes(yasm_bytecode *bc, unsigned char **bufp,
+ unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ yasm_output_reloc_func output_reloc)
+{
+ coff_unwind_info *info = (coff_unwind_info *)bc->contents;
+ unsigned char *buf = *bufp;
+ /*@only@*/ /*@null@*/ yasm_intnum *frameoff;
+ long intv;
+
+ /* Version and flags */
+ if (info->ehandler)
+ YASM_WRITE_8(buf, 1 | (UNW_FLAG_EHANDLER << 3));
+ else
+ YASM_WRITE_8(buf, 1);
+
+ /* Size of prolog */
+ output_value(&info->prolog_size, buf, 1, (unsigned long)(buf-bufstart),
+ bc, 1, d);
+ buf += 1;
+
+ /* Count of codes */
+ output_value(&info->codes_count, buf, 1, (unsigned long)(buf-bufstart),
+ bc, 1, d);
+ buf += 1;
+
+ /* Frame register and offset */
+ frameoff = yasm_value_get_intnum(&info->frameoff, bc, 1);
+ if (!frameoff) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("frame offset expression too complex"));
+ return 1;
+ }
+ intv = yasm_intnum_get_int(frameoff);
+ if (intv < 0 || intv > 240)
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("frame offset of %ld bytes, must be between 0 and 240"), intv);
+ else if ((intv & 0xF) != 0)
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("frame offset of %ld is not a multiple of 16"), intv);
+
+ YASM_WRITE_8(buf, ((unsigned long)intv & 0xF0) | (info->framereg & 0x0F));
+ yasm_intnum_destroy(frameoff);
+
+ *bufp = buf;
+ return 0;
+}
+
+static void
+win64_uwcode_bc_destroy(void *contents)
+{
+ coff_unwind_code *code = (coff_unwind_code *)contents;
+ yasm_value_delete(&code->off);
+ yasm_xfree(contents);
+}
+
+static void
+win64_uwcode_bc_print(const void *contents, FILE *f, int indent_level)
+{
+ /* TODO */
+}
+
+static void
+win64_uwcode_bc_finalize(yasm_bytecode *bc, yasm_bytecode *prev_bc)
+{
+ coff_unwind_code *code = (coff_unwind_code *)bc->contents;
+ if (yasm_value_finalize(&code->off, prev_bc))
+ yasm_error_set(YASM_ERROR_VALUE, N_("offset expression too complex"));
+}
+
+static int
+win64_uwcode_bc_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span,
+ void *add_span_data)
+{
+ coff_unwind_code *code = (coff_unwind_code *)bc->contents;
+ int span = 0;
+ /*@only@*/ /*@null@*/ yasm_intnum *intn;
+ long intv;
+ long low, high, mask;
+
+ bc->len += 2; /* Prolog offset, code, and info */
+
+ switch (code->opcode) {
+ case UWOP_PUSH_NONVOL:
+ case UWOP_SET_FPREG:
+ case UWOP_PUSH_MACHFRAME:
+ /* always 1 node */
+ return 0;
+ case UWOP_ALLOC_SMALL:
+ case UWOP_ALLOC_LARGE:
+ /* Start with smallest, then work our way up as necessary */
+ code->opcode = UWOP_ALLOC_SMALL;
+ code->info = 0;
+ span = 1; low = 8; high = 128; mask = 0x7;
+ break;
+ case UWOP_SAVE_NONVOL:
+ case UWOP_SAVE_NONVOL_FAR:
+ /* Start with smallest, then work our way up as necessary */
+ code->opcode = UWOP_SAVE_NONVOL;
+ bc->len += 2; /* Scaled offset */
+ span = 2;
+ low = 0;
+ high = 8*64*1024-8; /* 16-bit field, *8 scaling */
+ mask = 0x7;
+ break;
+ case UWOP_SAVE_XMM128:
+ case UWOP_SAVE_XMM128_FAR:
+ /* Start with smallest, then work our way up as necessary */
+ code->opcode = UWOP_SAVE_XMM128;
+ bc->len += 2; /* Scaled offset */
+ span = 3;
+ low = 0;
+ high = 16*64*1024-16; /* 16-bit field, *16 scaling */
+ mask = 0xF;
+ break;
+ default:
+ yasm_internal_error(N_("unrecognied unwind opcode"));
+ /*@unreached@*/
+ return 0;
+ }
+
+ intn = yasm_value_get_intnum(&code->off, bc, 0);
+ if (intn) {
+ intv = yasm_intnum_get_int(intn);
+ if (intv > high) {
+ /* Expand it ourselves here if we can and we're already larger */
+ if (win64_uwcode_bc_expand(bc, span, intv, intv, &low, &high) > 0)
+ add_span(add_span_data, bc, span, &code->off, low, high);
+ }
+ if (intv < low)
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("negative offset not allowed"));
+ if ((intv & mask) != 0)
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("offset of %ld is not a multiple of %ld"), intv, mask+1);
+ yasm_intnum_destroy(intn);
+ } else
+ add_span(add_span_data, bc, span, &code->off, low, high);
+ return 0;
+}
+
+static int
+win64_uwcode_bc_expand(yasm_bytecode *bc, int span, long old_val, long new_val,
+ /*@out@*/ long *neg_thres, /*@out@*/ long *pos_thres)
+{
+ coff_unwind_code *code = (coff_unwind_code *)bc->contents;
+
+ if (new_val < 0) {
+ yasm_error_set(YASM_ERROR_VALUE, N_("negative offset not allowed"));
+ return -1;
+ }
+
+ if (span == 1) {
+ /* 3 stages: SMALL, LARGE and info=0, LARGE and info=1 */
+ if (code->opcode == UWOP_ALLOC_LARGE && code->info == 1)
+ yasm_internal_error(N_("expansion on already largest alloc"));
+
+ if (code->opcode == UWOP_ALLOC_SMALL && new_val > 128) {
+ /* Overflowed small size */
+ code->opcode = UWOP_ALLOC_LARGE;
+ bc->len += 2;
+ }
+ if (new_val <= 8*64*1024-8) {
+ /* Still can grow one more size */
+ *pos_thres = 8*64*1024-8;
+ return 1;
+ }
+ /* We're into the largest size */
+ code->info = 1;
+ bc->len += 2;
+ } else if (code->opcode == UWOP_SAVE_NONVOL && span == 2) {
+ code->opcode = UWOP_SAVE_NONVOL_FAR;
+ bc->len += 2;
+ } else if (code->opcode == UWOP_SAVE_XMM128 && span == 3) {
+ code->opcode = UWOP_SAVE_XMM128_FAR;
+ bc->len += 2;
+ }
+ return 0;
+}
+
+static int
+win64_uwcode_bc_tobytes(yasm_bytecode *bc, unsigned char **bufp,
+ unsigned char *bufstart, void *d,
+ yasm_output_value_func output_value,
+ yasm_output_reloc_func output_reloc)
+{
+ coff_unwind_code *code = (coff_unwind_code *)bc->contents;
+ unsigned char *buf = *bufp;
+ yasm_value val;
+ unsigned int size;
+ int shift;
+ long intv, low, high, mask;
+ yasm_intnum *intn;
+
+ /* Offset in prolog */
+ yasm_value_initialize(&val,
+ yasm_expr_create(YASM_EXPR_SUB, yasm_expr_sym(code->loc),
+ yasm_expr_sym(code->proc), bc->line),
+ 8);
+ output_value(&val, buf, 1, (unsigned long)(buf-bufstart), bc, 1, d);
+ buf += 1;
+ yasm_value_delete(&val);
+
+ /* Offset value */
+ switch (code->opcode) {
+ case UWOP_PUSH_NONVOL:
+ case UWOP_SET_FPREG:
+ case UWOP_PUSH_MACHFRAME:
+ /* just 1 node, no offset; write opcode and info and we're done */
+ YASM_WRITE_8(buf, (code->info << 4) | (code->opcode & 0xF));
+ *bufp = buf;
+ return 0;
+ case UWOP_ALLOC_SMALL:
+ /* 1 node, but offset stored in info */
+ size = 0; low = 8; high = 128; shift = 3; mask = 0x7;
+ break;
+ case UWOP_ALLOC_LARGE:
+ if (code->info == 0) {
+ size = 2; low = 136; high = 8*64*1024-8; shift = 3;
+ } else {
+ size = 4; low = high = 0; shift = 0;
+ }
+ mask = 0x7;
+ break;
+ case UWOP_SAVE_NONVOL:
+ size = 2; low = 0; high = 8*64*1024-8; shift = 3; mask = 0x7;
+ break;
+ case UWOP_SAVE_XMM128:
+ size = 2; low = 0; high = 16*64*1024-16; shift = 4; mask = 0xF;
+ break;
+ case UWOP_SAVE_NONVOL_FAR:
+ size = 4; low = high = 0; shift = 0; mask = 0x7;
+ break;
+ case UWOP_SAVE_XMM128_FAR:
+ size = 4; low = high = 0; shift = 0; mask = 0xF;
+ break;
+ default:
+ yasm_internal_error(N_("unrecognied unwind opcode"));
+ /*@unreached@*/
+ return 1;
+ }
+
+ /* Check for overflow */
+ intn = yasm_value_get_intnum(&code->off, bc, 1);
+ if (!intn) {
+ yasm_error_set(YASM_ERROR_VALUE, N_("offset expression too complex"));
+ return 1;
+ }
+ intv = yasm_intnum_get_int(intn);
+ if (size != 4 && (intv < low || intv > high)) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("offset of %ld bytes, must be between %ld and %ld"),
+ intv, low, high);
+ return 1;
+ }
+ if ((intv & mask) != 0) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("offset of %ld is not a multiple of %ld"),
+ intv, mask+1);
+ return 1;
+ }
+
+ /* Stored value in info instead of extra code space */
+ if (size == 0)
+ code->info = (yasm_intnum_get_uint(intn) >> shift)-1;
+
+ /* Opcode and info */
+ YASM_WRITE_8(buf, (code->info << 4) | (code->opcode & 0xF));
+
+ if (size != 0) {
+ yasm_intnum_get_sized(intn, buf, size, size*8, -shift, 0, 1);
+ buf += size;
+ }
+
+ yasm_intnum_destroy(intn);
+
+ *bufp = buf;
+ return 0;
+}
diff --git a/contrib/tools/yasm/modules/objfmts/dbg/dbg-objfmt.c b/contrib/tools/yasm/modules/objfmts/dbg/dbg-objfmt.c
index 135edef012..bdf403c762 100644
--- a/contrib/tools/yasm/modules/objfmts/dbg/dbg-objfmt.c
+++ b/contrib/tools/yasm/modules/objfmts/dbg/dbg-objfmt.c
@@ -1,183 +1,183 @@
-/*
- * Debugging object format (used to debug object format module interface)
- *
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <libyasm.h>
-
-
-typedef struct yasm_objfmt_dbg {
- yasm_objfmt_base objfmt; /* base structure */
-
- FILE *dbgfile;
-} yasm_objfmt_dbg;
-
-yasm_objfmt_module yasm_dbg_LTX_objfmt;
-
-
-static yasm_objfmt *
-dbg_objfmt_create(yasm_object *object)
-{
- yasm_objfmt_dbg *objfmt_dbg = yasm_xmalloc(sizeof(yasm_objfmt_dbg));
-
- objfmt_dbg->objfmt.module = &yasm_dbg_LTX_objfmt;
-
- objfmt_dbg->dbgfile = tmpfile();
- if (!objfmt_dbg->dbgfile) {
- fprintf(stderr, N_("could not open temporary file"));
- return 0;
- }
- fprintf(objfmt_dbg->dbgfile, "create()\n");
- return (yasm_objfmt *)objfmt_dbg;
-}
-
-static void
-dbg_objfmt_output(yasm_object *object, FILE *f, int all_syms,
- yasm_errwarns *errwarns)
-{
- yasm_objfmt_dbg *objfmt_dbg = (yasm_objfmt_dbg *)object->objfmt;
- char buf[1024];
- size_t i;
-
- /* Copy temp file to real output file */
- rewind(objfmt_dbg->dbgfile);
- while ((i = fread(buf, 1, 1024, objfmt_dbg->dbgfile))) {
- if (fwrite(buf, 1, i, f) != i)
- break;
- }
-
- /* Reassign objfmt debug file to output file */
- fclose(objfmt_dbg->dbgfile);
- objfmt_dbg->dbgfile = f;
-
- fprintf(objfmt_dbg->dbgfile, "output(f, object->\n");
- yasm_object_print(object, objfmt_dbg->dbgfile, 1);
- fprintf(objfmt_dbg->dbgfile, "%d)\n", all_syms);
- fprintf(objfmt_dbg->dbgfile, " Symbol Table:\n");
- yasm_symtab_print(object->symtab, objfmt_dbg->dbgfile, 1);
-}
-
-static void
-dbg_objfmt_destroy(yasm_objfmt *objfmt)
-{
- yasm_objfmt_dbg *objfmt_dbg = (yasm_objfmt_dbg *)objfmt;
- fprintf(objfmt_dbg->dbgfile, "destroy()\n");
- yasm_xfree(objfmt);
-}
-
-static void
-dbg_objfmt_init_new_section(yasm_section *sect, unsigned long line)
-{
- yasm_object *object = yasm_section_get_object(sect);
- yasm_objfmt_dbg *objfmt_dbg = (yasm_objfmt_dbg *)object->objfmt;
- fprintf(objfmt_dbg->dbgfile, "init_new_section(\"%s\", %lu)\n",
- yasm_section_get_name(sect), line);
- yasm_symtab_define_label(object->symtab, ".text",
- yasm_section_bcs_first(sect), 1, 0);
-}
-
-static yasm_section *
-dbg_objfmt_add_default_section(yasm_object *object)
-{
- yasm_objfmt_dbg *objfmt_dbg = (yasm_objfmt_dbg *)object->objfmt;
- yasm_section *retval;
- int isnew;
-
- fprintf(objfmt_dbg->dbgfile, "add_default_section()\n");
- retval = yasm_object_get_general(object, ".text", 0, 0, 0, &isnew, 0);
- if (isnew) {
- yasm_section_set_default(retval, 1);
- }
- return retval;
-}
-
-static /*@observer@*/ /*@null@*/ yasm_section *
-dbg_objfmt_section_switch(yasm_object *object, yasm_valparamhead *valparams,
- /*@unused@*/ /*@null@*/
- yasm_valparamhead *objext_valparams,
- unsigned long line)
-{
- yasm_objfmt_dbg *objfmt_dbg = (yasm_objfmt_dbg *)object->objfmt;
- yasm_valparam *vp;
- yasm_section *retval;
- int isnew;
-
- fprintf(objfmt_dbg->dbgfile, "section_switch(headp, ");
- yasm_vps_print(valparams, objfmt_dbg->dbgfile);
- fprintf(objfmt_dbg->dbgfile, ", ");
- yasm_vps_print(objext_valparams, objfmt_dbg->dbgfile);
- fprintf(objfmt_dbg->dbgfile, ", %lu), returning ", line);
-
- vp = yasm_vps_first(valparams);
- if (!yasm_vp_string(vp)) {
- fprintf(objfmt_dbg->dbgfile, "NULL\n");
- return NULL;
- }
- retval = yasm_object_get_general(object, yasm_vp_string(vp), 0, 0, 0,
- &isnew, line);
- if (isnew) {
- fprintf(objfmt_dbg->dbgfile, "(new) ");
- }
- yasm_section_set_default(retval, 0);
- fprintf(objfmt_dbg->dbgfile, "\"%s\" section\n", vp->val);
- return retval;
-}
-
-static /*@observer@*/ /*@null@*/ yasm_symrec *
-dbg_objfmt_get_special_sym(yasm_object *object, const char *name,
- const char *parser)
-{
- yasm_objfmt_dbg *objfmt_dbg = (yasm_objfmt_dbg *)object->objfmt;
- fprintf(objfmt_dbg->dbgfile, "get_special_sym(object, \"%s\", \"%s\")\n",
- name, parser);
- return NULL;
-}
-
-/* Define valid debug formats to use with this object format */
-static const char *dbg_objfmt_dbgfmt_keywords[] = {
- "null",
- NULL
-};
-
-/* Define objfmt structure -- see objfmt.h for details */
-yasm_objfmt_module yasm_dbg_LTX_objfmt = {
- "Trace of all info passed to object format module",
- "dbg",
- "dbg",
- 32,
- 0,
- dbg_objfmt_dbgfmt_keywords,
- "null",
- NULL, /* no directives */
- NULL, /* no standard macros */
- dbg_objfmt_create,
- dbg_objfmt_output,
- dbg_objfmt_destroy,
- dbg_objfmt_add_default_section,
- dbg_objfmt_init_new_section,
- dbg_objfmt_section_switch,
- dbg_objfmt_get_special_sym
-};
+/*
+ * Debugging object format (used to debug object format module interface)
+ *
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <libyasm.h>
+
+
+typedef struct yasm_objfmt_dbg {
+ yasm_objfmt_base objfmt; /* base structure */
+
+ FILE *dbgfile;
+} yasm_objfmt_dbg;
+
+yasm_objfmt_module yasm_dbg_LTX_objfmt;
+
+
+static yasm_objfmt *
+dbg_objfmt_create(yasm_object *object)
+{
+ yasm_objfmt_dbg *objfmt_dbg = yasm_xmalloc(sizeof(yasm_objfmt_dbg));
+
+ objfmt_dbg->objfmt.module = &yasm_dbg_LTX_objfmt;
+
+ objfmt_dbg->dbgfile = tmpfile();
+ if (!objfmt_dbg->dbgfile) {
+ fprintf(stderr, N_("could not open temporary file"));
+ return 0;
+ }
+ fprintf(objfmt_dbg->dbgfile, "create()\n");
+ return (yasm_objfmt *)objfmt_dbg;
+}
+
+static void
+dbg_objfmt_output(yasm_object *object, FILE *f, int all_syms,
+ yasm_errwarns *errwarns)
+{
+ yasm_objfmt_dbg *objfmt_dbg = (yasm_objfmt_dbg *)object->objfmt;
+ char buf[1024];
+ size_t i;
+
+ /* Copy temp file to real output file */
+ rewind(objfmt_dbg->dbgfile);
+ while ((i = fread(buf, 1, 1024, objfmt_dbg->dbgfile))) {
+ if (fwrite(buf, 1, i, f) != i)
+ break;
+ }
+
+ /* Reassign objfmt debug file to output file */
+ fclose(objfmt_dbg->dbgfile);
+ objfmt_dbg->dbgfile = f;
+
+ fprintf(objfmt_dbg->dbgfile, "output(f, object->\n");
+ yasm_object_print(object, objfmt_dbg->dbgfile, 1);
+ fprintf(objfmt_dbg->dbgfile, "%d)\n", all_syms);
+ fprintf(objfmt_dbg->dbgfile, " Symbol Table:\n");
+ yasm_symtab_print(object->symtab, objfmt_dbg->dbgfile, 1);
+}
+
+static void
+dbg_objfmt_destroy(yasm_objfmt *objfmt)
+{
+ yasm_objfmt_dbg *objfmt_dbg = (yasm_objfmt_dbg *)objfmt;
+ fprintf(objfmt_dbg->dbgfile, "destroy()\n");
+ yasm_xfree(objfmt);
+}
+
+static void
+dbg_objfmt_init_new_section(yasm_section *sect, unsigned long line)
+{
+ yasm_object *object = yasm_section_get_object(sect);
+ yasm_objfmt_dbg *objfmt_dbg = (yasm_objfmt_dbg *)object->objfmt;
+ fprintf(objfmt_dbg->dbgfile, "init_new_section(\"%s\", %lu)\n",
+ yasm_section_get_name(sect), line);
+ yasm_symtab_define_label(object->symtab, ".text",
+ yasm_section_bcs_first(sect), 1, 0);
+}
+
+static yasm_section *
+dbg_objfmt_add_default_section(yasm_object *object)
+{
+ yasm_objfmt_dbg *objfmt_dbg = (yasm_objfmt_dbg *)object->objfmt;
+ yasm_section *retval;
+ int isnew;
+
+ fprintf(objfmt_dbg->dbgfile, "add_default_section()\n");
+ retval = yasm_object_get_general(object, ".text", 0, 0, 0, &isnew, 0);
+ if (isnew) {
+ yasm_section_set_default(retval, 1);
+ }
+ return retval;
+}
+
+static /*@observer@*/ /*@null@*/ yasm_section *
+dbg_objfmt_section_switch(yasm_object *object, yasm_valparamhead *valparams,
+ /*@unused@*/ /*@null@*/
+ yasm_valparamhead *objext_valparams,
+ unsigned long line)
+{
+ yasm_objfmt_dbg *objfmt_dbg = (yasm_objfmt_dbg *)object->objfmt;
+ yasm_valparam *vp;
+ yasm_section *retval;
+ int isnew;
+
+ fprintf(objfmt_dbg->dbgfile, "section_switch(headp, ");
+ yasm_vps_print(valparams, objfmt_dbg->dbgfile);
+ fprintf(objfmt_dbg->dbgfile, ", ");
+ yasm_vps_print(objext_valparams, objfmt_dbg->dbgfile);
+ fprintf(objfmt_dbg->dbgfile, ", %lu), returning ", line);
+
+ vp = yasm_vps_first(valparams);
+ if (!yasm_vp_string(vp)) {
+ fprintf(objfmt_dbg->dbgfile, "NULL\n");
+ return NULL;
+ }
+ retval = yasm_object_get_general(object, yasm_vp_string(vp), 0, 0, 0,
+ &isnew, line);
+ if (isnew) {
+ fprintf(objfmt_dbg->dbgfile, "(new) ");
+ }
+ yasm_section_set_default(retval, 0);
+ fprintf(objfmt_dbg->dbgfile, "\"%s\" section\n", vp->val);
+ return retval;
+}
+
+static /*@observer@*/ /*@null@*/ yasm_symrec *
+dbg_objfmt_get_special_sym(yasm_object *object, const char *name,
+ const char *parser)
+{
+ yasm_objfmt_dbg *objfmt_dbg = (yasm_objfmt_dbg *)object->objfmt;
+ fprintf(objfmt_dbg->dbgfile, "get_special_sym(object, \"%s\", \"%s\")\n",
+ name, parser);
+ return NULL;
+}
+
+/* Define valid debug formats to use with this object format */
+static const char *dbg_objfmt_dbgfmt_keywords[] = {
+ "null",
+ NULL
+};
+
+/* Define objfmt structure -- see objfmt.h for details */
+yasm_objfmt_module yasm_dbg_LTX_objfmt = {
+ "Trace of all info passed to object format module",
+ "dbg",
+ "dbg",
+ 32,
+ 0,
+ dbg_objfmt_dbgfmt_keywords,
+ "null",
+ NULL, /* no directives */
+ NULL, /* no standard macros */
+ dbg_objfmt_create,
+ dbg_objfmt_output,
+ dbg_objfmt_destroy,
+ dbg_objfmt_add_default_section,
+ dbg_objfmt_init_new_section,
+ dbg_objfmt_section_switch,
+ dbg_objfmt_get_special_sym
+};
diff --git a/contrib/tools/yasm/modules/objfmts/elf/elf-machine.h b/contrib/tools/yasm/modules/objfmts/elf/elf-machine.h
index 346b4f6f34..ea6cb4ec94 100644
--- a/contrib/tools/yasm/modules/objfmts/elf/elf-machine.h
+++ b/contrib/tools/yasm/modules/objfmts/elf/elf-machine.h
@@ -1,108 +1,108 @@
-/*
- * ELF object machine specific format helpers
- *
- * Copyright (C) 2004-2007 Michael Urman
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef ELF_MACHINE_H_INCLUDED
-#define ELF_MACHINE_H_INCLUDED
-
-#define YASM_WRITE_32I_L(p, i) do {\
- assert(yasm_intnum_check_size(i, 32, 0, 2)); \
- yasm_intnum_get_sized(i, p, 4, 32, 0, 0, 0); \
- p += 4; } while (0)
-
-#define YASM_WRITE_64I_L(p, i) do {\
- assert(yasm_intnum_check_size(i, 64, 0, 2)); \
- yasm_intnum_get_sized(i, p, 8, 64, 0, 0, 0); \
- p += 8; } while (0)
-
-#define YASM_WRITE_64C_L(p, hi, lo) do {\
- YASM_WRITE_32_L(p, lo); \
- YASM_WRITE_32_L(p, hi); } while (0)
-
-#define YASM_WRITE_64Z_L(p, i) YASM_WRITE_64C_L(p, 0, i)
-
-typedef int(*func_accepts_reloc)(size_t val, yasm_symrec *wrt);
-typedef void(*func_write_symtab_entry)(unsigned char *bufp,
- elf_symtab_entry *entry,
- yasm_intnum *value_intn,
- yasm_intnum *size_intn);
-typedef void(*func_write_secthead)(unsigned char *bufp, elf_secthead *shead);
-typedef void(*func_write_secthead_rel)(unsigned char *bufp,
- elf_secthead *shead,
- elf_section_index symtab_idx,
- elf_section_index sindex);
-
-typedef void(*func_handle_reloc_addend)(yasm_intnum *intn,
- elf_reloc_entry *reloc,
- unsigned long offset);
-typedef unsigned int(*func_map_reloc_info_to_type)(elf_reloc_entry *reloc);
-typedef void(*func_write_reloc)(unsigned char *bufp,
- elf_reloc_entry *reloc,
- unsigned int r_type,
- unsigned int r_sym);
-typedef void (*func_write_proghead)(unsigned char **bufpp,
- elf_offset secthead_addr,
- unsigned long secthead_count,
- elf_section_index shstrtab_index);
-
-enum {
- ELF_SSYM_SYM_RELATIVE = 1 << 0,
- ELF_SSYM_CURPOS_ADJUST = 1 << 1,
- ELF_SSYM_THREAD_LOCAL = 1 << 2
-};
-
-typedef struct {
- const char *name; /* should be something like ..name */
- const int sym_rel; /* symbol or section-relative? */
- const unsigned int reloc; /* relocation type */
- const unsigned int size; /* legal data size */
-} elf_machine_ssym;
-
-struct elf_machine_handler {
- const char *arch;
- const char *machine;
- const char *reloc_section_prefix;
- const unsigned long symtab_entry_size;
- const unsigned long symtab_entry_align;
- const unsigned long reloc_entry_size;
- const unsigned long secthead_size;
- const unsigned long proghead_size;
- func_accepts_reloc accepts_reloc;
- func_write_symtab_entry write_symtab_entry;
- func_write_secthead write_secthead;
- func_write_secthead_rel write_secthead_rel;
- func_handle_reloc_addend handle_reloc_addend;
- func_map_reloc_info_to_type map_reloc_info_to_type;
- func_write_reloc write_reloc;
- func_write_proghead write_proghead;
-
- elf_machine_ssym *ssyms; /* array of "special" syms */
- const size_t num_ssyms; /* size of array */
-
- const int bits; /* usually 32 or 64 */
-};
-
-#endif /* ELF_MACHINE_H_INCLUDED */
+/*
+ * ELF object machine specific format helpers
+ *
+ * Copyright (C) 2004-2007 Michael Urman
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef ELF_MACHINE_H_INCLUDED
+#define ELF_MACHINE_H_INCLUDED
+
+#define YASM_WRITE_32I_L(p, i) do {\
+ assert(yasm_intnum_check_size(i, 32, 0, 2)); \
+ yasm_intnum_get_sized(i, p, 4, 32, 0, 0, 0); \
+ p += 4; } while (0)
+
+#define YASM_WRITE_64I_L(p, i) do {\
+ assert(yasm_intnum_check_size(i, 64, 0, 2)); \
+ yasm_intnum_get_sized(i, p, 8, 64, 0, 0, 0); \
+ p += 8; } while (0)
+
+#define YASM_WRITE_64C_L(p, hi, lo) do {\
+ YASM_WRITE_32_L(p, lo); \
+ YASM_WRITE_32_L(p, hi); } while (0)
+
+#define YASM_WRITE_64Z_L(p, i) YASM_WRITE_64C_L(p, 0, i)
+
+typedef int(*func_accepts_reloc)(size_t val, yasm_symrec *wrt);
+typedef void(*func_write_symtab_entry)(unsigned char *bufp,
+ elf_symtab_entry *entry,
+ yasm_intnum *value_intn,
+ yasm_intnum *size_intn);
+typedef void(*func_write_secthead)(unsigned char *bufp, elf_secthead *shead);
+typedef void(*func_write_secthead_rel)(unsigned char *bufp,
+ elf_secthead *shead,
+ elf_section_index symtab_idx,
+ elf_section_index sindex);
+
+typedef void(*func_handle_reloc_addend)(yasm_intnum *intn,
+ elf_reloc_entry *reloc,
+ unsigned long offset);
+typedef unsigned int(*func_map_reloc_info_to_type)(elf_reloc_entry *reloc);
+typedef void(*func_write_reloc)(unsigned char *bufp,
+ elf_reloc_entry *reloc,
+ unsigned int r_type,
+ unsigned int r_sym);
+typedef void (*func_write_proghead)(unsigned char **bufpp,
+ elf_offset secthead_addr,
+ unsigned long secthead_count,
+ elf_section_index shstrtab_index);
+
+enum {
+ ELF_SSYM_SYM_RELATIVE = 1 << 0,
+ ELF_SSYM_CURPOS_ADJUST = 1 << 1,
+ ELF_SSYM_THREAD_LOCAL = 1 << 2
+};
+
+typedef struct {
+ const char *name; /* should be something like ..name */
+ const int sym_rel; /* symbol or section-relative? */
+ const unsigned int reloc; /* relocation type */
+ const unsigned int size; /* legal data size */
+} elf_machine_ssym;
+
+struct elf_machine_handler {
+ const char *arch;
+ const char *machine;
+ const char *reloc_section_prefix;
+ const unsigned long symtab_entry_size;
+ const unsigned long symtab_entry_align;
+ const unsigned long reloc_entry_size;
+ const unsigned long secthead_size;
+ const unsigned long proghead_size;
+ func_accepts_reloc accepts_reloc;
+ func_write_symtab_entry write_symtab_entry;
+ func_write_secthead write_secthead;
+ func_write_secthead_rel write_secthead_rel;
+ func_handle_reloc_addend handle_reloc_addend;
+ func_map_reloc_info_to_type map_reloc_info_to_type;
+ func_write_reloc write_reloc;
+ func_write_proghead write_proghead;
+
+ elf_machine_ssym *ssyms; /* array of "special" syms */
+ const size_t num_ssyms; /* size of array */
+
+ const int bits; /* usually 32 or 64 */
+};
+
+#endif /* ELF_MACHINE_H_INCLUDED */
diff --git a/contrib/tools/yasm/modules/objfmts/elf/elf-objfmt.c b/contrib/tools/yasm/modules/objfmts/elf/elf-objfmt.c
index e447218ad5..6874a1689f 100644
--- a/contrib/tools/yasm/modules/objfmts/elf/elf-objfmt.c
+++ b/contrib/tools/yasm/modules/objfmts/elf/elf-objfmt.c
@@ -1,1403 +1,1403 @@
-/*
- * ELF object format
- *
- * Copyright (C) 2003-2007 Michael Urman
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-/* Notes
- *
- * elf-objfmt uses the "linking" view of an ELF file:
- * ELF header, an optional program header table, several sections,
- * and a section header table
- *
- * The ELF header tells us some overall program information,
- * where to find the PHT (if it exists) with phnum and phentsize,
- * and where to find the SHT with shnum and shentsize
- *
- * The PHT doesn't seem to be generated by NASM for elftest.asm
- *
- * The SHT
- *
- * Each Section is spatially disjoint, and has exactly one SHT entry.
- */
-
-#include <libyasm.h>
-
-#include "elf.h"
-#include "elf-machine.h"
-
-typedef struct yasm_objfmt_elf {
- yasm_objfmt_base objfmt; /* base structure */
-
- elf_symtab_head* elf_symtab; /* symbol table of indexed syms */
- elf_strtab_head* shstrtab; /* section name strtab */
- elf_strtab_head* strtab; /* strtab entries */
-
- elf_strtab_entry *file_strtab_entry;/* .file symbol associated string */
- yasm_symrec *dotdotsym; /* ..sym symbol */
-} yasm_objfmt_elf;
-
-typedef struct {
- yasm_objfmt_elf *objfmt_elf;
- yasm_errwarns *errwarns;
- FILE *f;
- elf_secthead *shead;
- yasm_section *sect;
- yasm_object *object;
- unsigned long sindex;
- yasm_symrec *GOT_sym;
-} elf_objfmt_output_info;
-
-typedef struct {
- yasm_object *object;
- yasm_objfmt_elf *objfmt_elf;
- yasm_errwarns *errwarns;
- int local_names;
-} build_symtab_info;
-
-yasm_objfmt_module yasm_elf_LTX_objfmt;
-yasm_objfmt_module yasm_elf32_LTX_objfmt;
-yasm_objfmt_module yasm_elf64_LTX_objfmt;
-yasm_objfmt_module yasm_elfx32_LTX_objfmt;
-
-
-static elf_symtab_entry *
-elf_objfmt_symtab_append(yasm_objfmt_elf *objfmt_elf, yasm_symrec *sym,
- elf_section_index sectidx, elf_symbol_binding bind,
- elf_symbol_type type, elf_symbol_vis vis,
- yasm_expr *size, elf_address *value,
- yasm_object *object)
-{
- elf_symtab_entry *entry = yasm_symrec_get_data(sym, &elf_symrec_data);
-
- if (!entry) {
- /*@only@*/ char *symname = yasm_symrec_get_global_name(sym, object);
- elf_strtab_entry *name =
- elf_strtab_append_str(objfmt_elf->strtab, symname);
- yasm_xfree(symname);
- entry = elf_symtab_entry_create(name, sym);
- yasm_symrec_add_data(sym, &elf_symrec_data, entry);
- }
-
- /* Only append to table if not already appended */
- if (!elf_sym_in_table(entry))
- elf_symtab_append_entry(objfmt_elf->elf_symtab, entry);
-
- elf_symtab_set_nonzero(entry, NULL, sectidx, bind, type, size, value);
- elf_sym_set_visibility(entry, vis);
-
- return entry;
-}
-
-static elf_symtab_entry *
-build_extern(yasm_objfmt_elf *objfmt_elf, yasm_symrec *sym, yasm_object *object)
-{
- yasm_valparamhead *objext_valparams =
- yasm_symrec_get_objext_valparams(sym);
-
- if (objext_valparams) {
- yasm_valparam *vp = yasm_vps_first(objext_valparams);
- for (; vp; vp = yasm_vps_next(vp)) {
- if (yasm_vp_string(vp))
- yasm_error_set(YASM_ERROR_TYPE,
- N_("unrecognized symbol type `%s'"),
- yasm_vp_string(vp));
- }
- }
-
- return elf_objfmt_symtab_append(objfmt_elf, sym, SHN_UNDEF, STB_GLOBAL, 0,
- STV_DEFAULT, NULL, NULL, object);
-}
-
-struct elf_build_global_data {
- yasm_expr *size;
- unsigned long type; /* elf_symbol_type */
- elf_symbol_vis vis;
- unsigned int vis_overrides;
-};
-
-static int
-elf_global_helper_valparam(void *obj, yasm_valparam *vp, unsigned long line,
- void *d)
-
-{
- struct elf_build_global_data *data = (struct elf_build_global_data *)d;
- const char *s;
-
- if (!vp->val && (s = yasm_vp_id(vp))) {
- yasm_error_set(YASM_ERROR_TYPE, N_("unrecognized symbol type `%s'"),
- s);
- return -1;
- } else if (!vp->val && vp->type == YASM_PARAM_EXPR && !data->size) {
- data->size = yasm_expr_copy(vp->param.e);
- return 0;
- } else
- return yasm_dir_helper_valparam_warn(obj, vp, line, d);
-}
-
-static int
-elf_global_helper_vis(void *obj, yasm_valparam *vp, unsigned long line,
- void *d, uintptr_t vis)
-{
- struct elf_build_global_data *data = (struct elf_build_global_data *)d;
- data->vis = vis;
- data->vis_overrides++;
- return 0;
-}
-
-
-static elf_symtab_entry *
-build_global(yasm_objfmt_elf *objfmt_elf, yasm_symrec *sym, yasm_object *object)
-{
- yasm_valparamhead *objext_valparams =
- yasm_symrec_get_objext_valparams(sym);
-
- struct elf_build_global_data data;
-
- static const yasm_dir_help help[] = {
- { "function", 0, yasm_dir_helper_flag_set,
- offsetof(struct elf_build_global_data, type), STT_FUNC },
- { "data", 0, yasm_dir_helper_flag_set,
- offsetof(struct elf_build_global_data, type), STT_OBJECT },
- { "object", 0, yasm_dir_helper_flag_set,
- offsetof(struct elf_build_global_data, type), STT_OBJECT },
- { "internal", 0, elf_global_helper_vis, 0, STV_INTERNAL },
- { "hidden", 0, elf_global_helper_vis, 0, STV_HIDDEN },
- { "protected", 0, elf_global_helper_vis, 0, STV_PROTECTED },
- };
-
- data.size = NULL;
- data.type = 0;
- data.vis = STV_DEFAULT;
- data.vis_overrides = 0;
-
- if (objext_valparams)
- yasm_dir_helper(sym, yasm_vps_first(objext_valparams),
- yasm_symrec_get_decl_line(sym), help, NELEMS(help),
- &data, elf_global_helper_valparam);
-
- if (data.vis_overrides > 1) {
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("More than one symbol visibility provided; using last"));
- }
-
- return elf_objfmt_symtab_append(objfmt_elf, sym, SHN_UNDEF, STB_GLOBAL,
- data.type, data.vis, data.size, NULL,
- object);
-}
-
-static /*@null@*/ elf_symtab_entry *
-build_common(yasm_objfmt_elf *objfmt_elf, yasm_symrec *sym, yasm_object *object)
-{
- yasm_expr **size = yasm_symrec_get_common_size(sym);
- yasm_valparamhead *objext_valparams =
- yasm_symrec_get_objext_valparams(sym);
- unsigned long addralign = 0;
-
- if (objext_valparams) {
- yasm_valparam *vp = yasm_vps_first(objext_valparams);
- for (; vp; vp = yasm_vps_next(vp)) {
- if (!vp->val) {
- /*@only@*/ /*@null@*/ yasm_expr *align_expr;
- /*@dependent@*/ /*@null@*/ const yasm_intnum *align_intn;
-
- if (!(align_expr = yasm_vp_expr(vp, object->symtab,
- yasm_symrec_get_def_line(sym)))
- || !(align_intn = yasm_expr_get_intnum(&align_expr, 0))) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("alignment constraint is not an integer"));
- if (align_expr)
- yasm_expr_destroy(align_expr);
- return NULL;
- }
- addralign = yasm_intnum_get_uint(align_intn);
- yasm_expr_destroy(align_expr);
-
- /* Alignments must be a power of two. */
- if (!is_exp2(addralign)) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("alignment constraint is not a power of two"));
- return NULL;
- }
- } else
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("Unrecognized qualifier `%s'"), vp->val);
- }
- }
-
- return elf_objfmt_symtab_append(objfmt_elf, sym, SHN_COMMON, STB_GLOBAL,
- 0, STV_DEFAULT, *size, &addralign, object);
-}
-
-static int
-elf_objfmt_build_symtab(yasm_symrec *sym, /*@null@*/ void *d)
-{
- build_symtab_info *info = (build_symtab_info *)d;
- yasm_sym_vis vis = yasm_symrec_get_visibility(sym);
- yasm_sym_status status = yasm_symrec_get_status(sym);
- elf_symtab_entry *entry = yasm_symrec_get_data(sym, &elf_symrec_data);
- elf_address value=0;
- yasm_section *sect=NULL;
- yasm_bytecode *precbc=NULL;
-
- assert(info != NULL);
-
- if (vis & YASM_SYM_EXTERN) {
- entry = build_extern(info->objfmt_elf, sym, info->object);
- yasm_errwarn_propagate(info->errwarns,
- yasm_symrec_get_decl_line(sym));
- return 0;
- }
-
- if (vis & YASM_SYM_COMMON) {
- entry = build_common(info->objfmt_elf, sym, info->object);
- yasm_errwarn_propagate(info->errwarns,
- yasm_symrec_get_decl_line(sym));
- /* If the COMMON variable was actually defined, fall through. */
- if (!(status & YASM_SYM_DEFINED))
- return 0;
- }
-
- /* Ignore any undefined at this point. */
- if (!(status & YASM_SYM_DEFINED))
- return 0;
-
- if (!yasm_symrec_get_label(sym, &precbc)) {
- if (!yasm_symrec_get_equ(sym) && !yasm_symrec_is_abs(sym))
- return 0;
- precbc = NULL;
- }
-
- if (precbc)
- sect = yasm_bc_get_section(precbc);
-
- if (entry && elf_sym_in_table(entry))
- ;
- else if (vis & YASM_SYM_GLOBAL) {
- entry = build_global(info->objfmt_elf, sym, info->object);
- yasm_errwarn_propagate(info->errwarns, yasm_symrec_get_decl_line(sym));
- } else {
- int is_sect = 0;
-
- /* Locals (except when debugging) do not need to be
- * in the symbol table, unless they're a section.
- */
- if (sect &&
- strcmp(yasm_symrec_get_name(sym), yasm_section_get_name(sect))==0)
- is_sect = 1;
-#if 0
- /* FIXME: to enable this we must have handling in place for special
- * symbols.
- */
- if (!info->local_names && !is_sect)
- return 0;
-#else
- if (yasm_symrec_get_equ(sym) && !yasm_symrec_is_abs(sym))
- return 0;
-#endif
- entry = yasm_symrec_get_data(sym, &elf_symrec_data);
- if (!entry) {
- /*@only@*/ char *symname =
- yasm_symrec_get_global_name(sym, info->object);
- elf_strtab_entry *name = !info->local_names || is_sect ? NULL :
- elf_strtab_append_str(info->objfmt_elf->strtab, symname);
- yasm_xfree(symname);
- entry = elf_symtab_entry_create(name, sym);
- yasm_symrec_add_data(sym, &elf_symrec_data, entry);
- }
-
- if (!elf_sym_in_table(entry))
- elf_symtab_insert_local_sym(info->objfmt_elf->elf_symtab, entry);
-
- elf_symtab_set_nonzero(entry, sect, 0, STB_LOCAL,
- is_sect ? STT_SECTION : 0, NULL, 0);
-
- if (is_sect)
- return 0;
- }
-
- if (precbc)
- value = yasm_bc_next_offset(precbc);
- elf_symtab_set_nonzero(entry, sect, 0, 0, 0, NULL, &value);
-
- return 0;
-}
-
-static yasm_objfmt *
-elf_objfmt_create_common(yasm_object *object, yasm_objfmt_module *module,
- int bits_pref,
- const elf_machine_handler **elf_march_out)
-{
- yasm_objfmt_elf *objfmt_elf = yasm_xmalloc(sizeof(yasm_objfmt_elf));
- yasm_symrec *filesym;
- elf_symtab_entry *entry;
- const elf_machine_handler *elf_march;
-
- objfmt_elf->objfmt.module = module;
- elf_march = elf_set_arch(object->arch, object->symtab, bits_pref);
- if (!elf_march) {
- yasm_xfree(objfmt_elf);
- return NULL;
- }
- if (elf_march_out)
- *elf_march_out = elf_march;
-
- objfmt_elf->shstrtab = elf_strtab_create();
- objfmt_elf->strtab = elf_strtab_create();
- objfmt_elf->elf_symtab = elf_symtab_create();
-
- /* FIXME: misuse of NULL bytecode here; it works, but only barely. */
- filesym = yasm_symtab_define_label(object->symtab, ".file", NULL, 0, 0);
+/*
+ * ELF object format
+ *
+ * Copyright (C) 2003-2007 Michael Urman
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+/* Notes
+ *
+ * elf-objfmt uses the "linking" view of an ELF file:
+ * ELF header, an optional program header table, several sections,
+ * and a section header table
+ *
+ * The ELF header tells us some overall program information,
+ * where to find the PHT (if it exists) with phnum and phentsize,
+ * and where to find the SHT with shnum and shentsize
+ *
+ * The PHT doesn't seem to be generated by NASM for elftest.asm
+ *
+ * The SHT
+ *
+ * Each Section is spatially disjoint, and has exactly one SHT entry.
+ */
+
+#include <libyasm.h>
+
+#include "elf.h"
+#include "elf-machine.h"
+
+typedef struct yasm_objfmt_elf {
+ yasm_objfmt_base objfmt; /* base structure */
+
+ elf_symtab_head* elf_symtab; /* symbol table of indexed syms */
+ elf_strtab_head* shstrtab; /* section name strtab */
+ elf_strtab_head* strtab; /* strtab entries */
+
+ elf_strtab_entry *file_strtab_entry;/* .file symbol associated string */
+ yasm_symrec *dotdotsym; /* ..sym symbol */
+} yasm_objfmt_elf;
+
+typedef struct {
+ yasm_objfmt_elf *objfmt_elf;
+ yasm_errwarns *errwarns;
+ FILE *f;
+ elf_secthead *shead;
+ yasm_section *sect;
+ yasm_object *object;
+ unsigned long sindex;
+ yasm_symrec *GOT_sym;
+} elf_objfmt_output_info;
+
+typedef struct {
+ yasm_object *object;
+ yasm_objfmt_elf *objfmt_elf;
+ yasm_errwarns *errwarns;
+ int local_names;
+} build_symtab_info;
+
+yasm_objfmt_module yasm_elf_LTX_objfmt;
+yasm_objfmt_module yasm_elf32_LTX_objfmt;
+yasm_objfmt_module yasm_elf64_LTX_objfmt;
+yasm_objfmt_module yasm_elfx32_LTX_objfmt;
+
+
+static elf_symtab_entry *
+elf_objfmt_symtab_append(yasm_objfmt_elf *objfmt_elf, yasm_symrec *sym,
+ elf_section_index sectidx, elf_symbol_binding bind,
+ elf_symbol_type type, elf_symbol_vis vis,
+ yasm_expr *size, elf_address *value,
+ yasm_object *object)
+{
+ elf_symtab_entry *entry = yasm_symrec_get_data(sym, &elf_symrec_data);
+
+ if (!entry) {
+ /*@only@*/ char *symname = yasm_symrec_get_global_name(sym, object);
+ elf_strtab_entry *name =
+ elf_strtab_append_str(objfmt_elf->strtab, symname);
+ yasm_xfree(symname);
+ entry = elf_symtab_entry_create(name, sym);
+ yasm_symrec_add_data(sym, &elf_symrec_data, entry);
+ }
+
+ /* Only append to table if not already appended */
+ if (!elf_sym_in_table(entry))
+ elf_symtab_append_entry(objfmt_elf->elf_symtab, entry);
+
+ elf_symtab_set_nonzero(entry, NULL, sectidx, bind, type, size, value);
+ elf_sym_set_visibility(entry, vis);
+
+ return entry;
+}
+
+static elf_symtab_entry *
+build_extern(yasm_objfmt_elf *objfmt_elf, yasm_symrec *sym, yasm_object *object)
+{
+ yasm_valparamhead *objext_valparams =
+ yasm_symrec_get_objext_valparams(sym);
+
+ if (objext_valparams) {
+ yasm_valparam *vp = yasm_vps_first(objext_valparams);
+ for (; vp; vp = yasm_vps_next(vp)) {
+ if (yasm_vp_string(vp))
+ yasm_error_set(YASM_ERROR_TYPE,
+ N_("unrecognized symbol type `%s'"),
+ yasm_vp_string(vp));
+ }
+ }
+
+ return elf_objfmt_symtab_append(objfmt_elf, sym, SHN_UNDEF, STB_GLOBAL, 0,
+ STV_DEFAULT, NULL, NULL, object);
+}
+
+struct elf_build_global_data {
+ yasm_expr *size;
+ unsigned long type; /* elf_symbol_type */
+ elf_symbol_vis vis;
+ unsigned int vis_overrides;
+};
+
+static int
+elf_global_helper_valparam(void *obj, yasm_valparam *vp, unsigned long line,
+ void *d)
+
+{
+ struct elf_build_global_data *data = (struct elf_build_global_data *)d;
+ const char *s;
+
+ if (!vp->val && (s = yasm_vp_id(vp))) {
+ yasm_error_set(YASM_ERROR_TYPE, N_("unrecognized symbol type `%s'"),
+ s);
+ return -1;
+ } else if (!vp->val && vp->type == YASM_PARAM_EXPR && !data->size) {
+ data->size = yasm_expr_copy(vp->param.e);
+ return 0;
+ } else
+ return yasm_dir_helper_valparam_warn(obj, vp, line, d);
+}
+
+static int
+elf_global_helper_vis(void *obj, yasm_valparam *vp, unsigned long line,
+ void *d, uintptr_t vis)
+{
+ struct elf_build_global_data *data = (struct elf_build_global_data *)d;
+ data->vis = vis;
+ data->vis_overrides++;
+ return 0;
+}
+
+
+static elf_symtab_entry *
+build_global(yasm_objfmt_elf *objfmt_elf, yasm_symrec *sym, yasm_object *object)
+{
+ yasm_valparamhead *objext_valparams =
+ yasm_symrec_get_objext_valparams(sym);
+
+ struct elf_build_global_data data;
+
+ static const yasm_dir_help help[] = {
+ { "function", 0, yasm_dir_helper_flag_set,
+ offsetof(struct elf_build_global_data, type), STT_FUNC },
+ { "data", 0, yasm_dir_helper_flag_set,
+ offsetof(struct elf_build_global_data, type), STT_OBJECT },
+ { "object", 0, yasm_dir_helper_flag_set,
+ offsetof(struct elf_build_global_data, type), STT_OBJECT },
+ { "internal", 0, elf_global_helper_vis, 0, STV_INTERNAL },
+ { "hidden", 0, elf_global_helper_vis, 0, STV_HIDDEN },
+ { "protected", 0, elf_global_helper_vis, 0, STV_PROTECTED },
+ };
+
+ data.size = NULL;
+ data.type = 0;
+ data.vis = STV_DEFAULT;
+ data.vis_overrides = 0;
+
+ if (objext_valparams)
+ yasm_dir_helper(sym, yasm_vps_first(objext_valparams),
+ yasm_symrec_get_decl_line(sym), help, NELEMS(help),
+ &data, elf_global_helper_valparam);
+
+ if (data.vis_overrides > 1) {
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("More than one symbol visibility provided; using last"));
+ }
+
+ return elf_objfmt_symtab_append(objfmt_elf, sym, SHN_UNDEF, STB_GLOBAL,
+ data.type, data.vis, data.size, NULL,
+ object);
+}
+
+static /*@null@*/ elf_symtab_entry *
+build_common(yasm_objfmt_elf *objfmt_elf, yasm_symrec *sym, yasm_object *object)
+{
+ yasm_expr **size = yasm_symrec_get_common_size(sym);
+ yasm_valparamhead *objext_valparams =
+ yasm_symrec_get_objext_valparams(sym);
+ unsigned long addralign = 0;
+
+ if (objext_valparams) {
+ yasm_valparam *vp = yasm_vps_first(objext_valparams);
+ for (; vp; vp = yasm_vps_next(vp)) {
+ if (!vp->val) {
+ /*@only@*/ /*@null@*/ yasm_expr *align_expr;
+ /*@dependent@*/ /*@null@*/ const yasm_intnum *align_intn;
+
+ if (!(align_expr = yasm_vp_expr(vp, object->symtab,
+ yasm_symrec_get_def_line(sym)))
+ || !(align_intn = yasm_expr_get_intnum(&align_expr, 0))) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("alignment constraint is not an integer"));
+ if (align_expr)
+ yasm_expr_destroy(align_expr);
+ return NULL;
+ }
+ addralign = yasm_intnum_get_uint(align_intn);
+ yasm_expr_destroy(align_expr);
+
+ /* Alignments must be a power of two. */
+ if (!is_exp2(addralign)) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("alignment constraint is not a power of two"));
+ return NULL;
+ }
+ } else
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("Unrecognized qualifier `%s'"), vp->val);
+ }
+ }
+
+ return elf_objfmt_symtab_append(objfmt_elf, sym, SHN_COMMON, STB_GLOBAL,
+ 0, STV_DEFAULT, *size, &addralign, object);
+}
+
+static int
+elf_objfmt_build_symtab(yasm_symrec *sym, /*@null@*/ void *d)
+{
+ build_symtab_info *info = (build_symtab_info *)d;
+ yasm_sym_vis vis = yasm_symrec_get_visibility(sym);
+ yasm_sym_status status = yasm_symrec_get_status(sym);
+ elf_symtab_entry *entry = yasm_symrec_get_data(sym, &elf_symrec_data);
+ elf_address value=0;
+ yasm_section *sect=NULL;
+ yasm_bytecode *precbc=NULL;
+
+ assert(info != NULL);
+
+ if (vis & YASM_SYM_EXTERN) {
+ entry = build_extern(info->objfmt_elf, sym, info->object);
+ yasm_errwarn_propagate(info->errwarns,
+ yasm_symrec_get_decl_line(sym));
+ return 0;
+ }
+
+ if (vis & YASM_SYM_COMMON) {
+ entry = build_common(info->objfmt_elf, sym, info->object);
+ yasm_errwarn_propagate(info->errwarns,
+ yasm_symrec_get_decl_line(sym));
+ /* If the COMMON variable was actually defined, fall through. */
+ if (!(status & YASM_SYM_DEFINED))
+ return 0;
+ }
+
+ /* Ignore any undefined at this point. */
+ if (!(status & YASM_SYM_DEFINED))
+ return 0;
+
+ if (!yasm_symrec_get_label(sym, &precbc)) {
+ if (!yasm_symrec_get_equ(sym) && !yasm_symrec_is_abs(sym))
+ return 0;
+ precbc = NULL;
+ }
+
+ if (precbc)
+ sect = yasm_bc_get_section(precbc);
+
+ if (entry && elf_sym_in_table(entry))
+ ;
+ else if (vis & YASM_SYM_GLOBAL) {
+ entry = build_global(info->objfmt_elf, sym, info->object);
+ yasm_errwarn_propagate(info->errwarns, yasm_symrec_get_decl_line(sym));
+ } else {
+ int is_sect = 0;
+
+ /* Locals (except when debugging) do not need to be
+ * in the symbol table, unless they're a section.
+ */
+ if (sect &&
+ strcmp(yasm_symrec_get_name(sym), yasm_section_get_name(sect))==0)
+ is_sect = 1;
+#if 0
+ /* FIXME: to enable this we must have handling in place for special
+ * symbols.
+ */
+ if (!info->local_names && !is_sect)
+ return 0;
+#else
+ if (yasm_symrec_get_equ(sym) && !yasm_symrec_is_abs(sym))
+ return 0;
+#endif
+ entry = yasm_symrec_get_data(sym, &elf_symrec_data);
+ if (!entry) {
+ /*@only@*/ char *symname =
+ yasm_symrec_get_global_name(sym, info->object);
+ elf_strtab_entry *name = !info->local_names || is_sect ? NULL :
+ elf_strtab_append_str(info->objfmt_elf->strtab, symname);
+ yasm_xfree(symname);
+ entry = elf_symtab_entry_create(name, sym);
+ yasm_symrec_add_data(sym, &elf_symrec_data, entry);
+ }
+
+ if (!elf_sym_in_table(entry))
+ elf_symtab_insert_local_sym(info->objfmt_elf->elf_symtab, entry);
+
+ elf_symtab_set_nonzero(entry, sect, 0, STB_LOCAL,
+ is_sect ? STT_SECTION : 0, NULL, 0);
+
+ if (is_sect)
+ return 0;
+ }
+
+ if (precbc)
+ value = yasm_bc_next_offset(precbc);
+ elf_symtab_set_nonzero(entry, sect, 0, 0, 0, NULL, &value);
+
+ return 0;
+}
+
+static yasm_objfmt *
+elf_objfmt_create_common(yasm_object *object, yasm_objfmt_module *module,
+ int bits_pref,
+ const elf_machine_handler **elf_march_out)
+{
+ yasm_objfmt_elf *objfmt_elf = yasm_xmalloc(sizeof(yasm_objfmt_elf));
+ yasm_symrec *filesym;
+ elf_symtab_entry *entry;
+ const elf_machine_handler *elf_march;
+
+ objfmt_elf->objfmt.module = module;
+ elf_march = elf_set_arch(object->arch, object->symtab, bits_pref);
+ if (!elf_march) {
+ yasm_xfree(objfmt_elf);
+ return NULL;
+ }
+ if (elf_march_out)
+ *elf_march_out = elf_march;
+
+ objfmt_elf->shstrtab = elf_strtab_create();
+ objfmt_elf->strtab = elf_strtab_create();
+ objfmt_elf->elf_symtab = elf_symtab_create();
+
+ /* FIXME: misuse of NULL bytecode here; it works, but only barely. */
+ filesym = yasm_symtab_define_label(object->symtab, ".file", NULL, 0, 0);
if (!object->deb_filename) {
object->deb_filename = yasm_replace_path(
module->replace_map, module->replace_map_size,
object->src_filename, strlen(object->src_filename));
}
- /* Put in current input filename; we'll replace it in output() */
- objfmt_elf->file_strtab_entry =
+ /* Put in current input filename; we'll replace it in output() */
+ objfmt_elf->file_strtab_entry =
elf_strtab_append_str(objfmt_elf->strtab, object->deb_filename);
- entry = elf_symtab_entry_create(objfmt_elf->file_strtab_entry, filesym);
- yasm_symrec_add_data(filesym, &elf_symrec_data, entry);
- elf_symtab_set_nonzero(entry, NULL, SHN_ABS, STB_LOCAL, STT_FILE, NULL,
- NULL);
- elf_symtab_append_entry(objfmt_elf->elf_symtab, entry);
-
- /* FIXME: misuse of NULL bytecode */
- objfmt_elf->dotdotsym =
- yasm_symtab_define_label(object->symtab, "..sym", NULL, 0, 0);
-
- return (yasm_objfmt *)objfmt_elf;
-}
-
-static yasm_objfmt *
-elf_objfmt_create(yasm_object *object)
-{
- const elf_machine_handler *elf_march;
- yasm_objfmt *objfmt;
- yasm_objfmt_elf *objfmt_elf;
-
- objfmt = elf_objfmt_create_common(object, &yasm_elf_LTX_objfmt, 0,
- &elf_march);
- if (objfmt) {
- objfmt_elf = (yasm_objfmt_elf *)objfmt;
- /* Figure out which bitness of object format to use */
- if (strcmp (elf_march->machine, "x32") == 0)
- objfmt_elf->objfmt.module = &yasm_elfx32_LTX_objfmt;
- else if (elf_march->bits == 32)
- objfmt_elf->objfmt.module = &yasm_elf32_LTX_objfmt;
- else if (elf_march->bits == 64)
- objfmt_elf->objfmt.module = &yasm_elf64_LTX_objfmt;
- }
- return objfmt;
-}
-
-static yasm_objfmt *
-elf32_objfmt_create(yasm_object *object)
-{
- return elf_objfmt_create_common(object, &yasm_elf32_LTX_objfmt, 32, NULL);
-}
-
-static yasm_objfmt *
-elf64_objfmt_create(yasm_object *object)
-{
- return elf_objfmt_create_common(object, &yasm_elf64_LTX_objfmt, 64, NULL);
-}
-
-static yasm_objfmt *
-elfx32_objfmt_create(yasm_object *object)
-{
- return elf_objfmt_create_common(object, &yasm_elfx32_LTX_objfmt, 32, NULL);
-}
-
-static long
-elf_objfmt_output_align(FILE *f, unsigned int align)
-{
- long pos;
- unsigned long delta;
- if (!is_exp2(align))
- yasm_internal_error("requested alignment not a power of two");
-
- pos = ftell(f);
- if (pos == -1) {
- yasm_error_set(YASM_ERROR_IO,
- N_("could not get file position on output file"));
- return -1;
- }
- delta = align - (pos & (align-1));
- if (delta != align) {
- pos += delta;
- if (fseek(f, pos, SEEK_SET) < 0) {
- yasm_error_set(YASM_ERROR_IO,
- N_("could not set file position on output file"));
- return -1;
- }
- }
- return pos;
-}
-
-static int
-elf_objfmt_output_reloc(yasm_symrec *sym, yasm_bytecode *bc,
- unsigned char *buf, unsigned int destsize,
- unsigned int valsize, int warn, void *d)
-{
- elf_reloc_entry *reloc;
- elf_objfmt_output_info *info = d;
- yasm_intnum *zero;
- int retval;
-
- reloc = elf_reloc_entry_create(sym, NULL,
- yasm_intnum_create_uint(bc->offset), 0, valsize, 0);
- if (reloc == NULL) {
- yasm_error_set(YASM_ERROR_TYPE, N_("elf: invalid relocation size"));
- return 1;
- }
- /* allocate .rel[a] sections on a need-basis */
- elf_secthead_append_reloc(info->sect, info->shead, reloc);
-
- zero = yasm_intnum_create_uint(0);
- elf_handle_reloc_addend(zero, reloc, 0);
- retval = yasm_arch_intnum_tobytes(info->object->arch, zero, buf, destsize,
- valsize, 0, bc, warn);
- yasm_intnum_destroy(zero);
- return retval;
-}
-
-static int
-elf_objfmt_output_value(yasm_value *value, unsigned char *buf,
- unsigned int destsize, unsigned long offset,
- yasm_bytecode *bc, int warn, /*@null@*/ void *d)
-{
- /*@null@*/ elf_objfmt_output_info *info = (elf_objfmt_output_info *)d;
- /*@dependent@*/ /*@null@*/ yasm_intnum *intn;
- unsigned long intn_val;
- /*@null@*/ elf_reloc_entry *reloc = NULL;
- int retval;
- unsigned int valsize = value->size;
-
- if (info == NULL)
- yasm_internal_error("null info struct");
-
- if (value->abs)
- value->abs = yasm_expr_simplify(value->abs, 1);
-
- /* Try to output constant and PC-relative section-local first.
- * Note this does NOT output any value with a SEG, WRT, external,
- * cross-section, or non-PC-relative reference (those are handled below).
- */
- switch (yasm_value_output_basic(value, buf, destsize, bc, warn,
- info->object->arch)) {
- case -1:
- return 1;
- case 0:
- break;
- default:
- return 0;
- }
-
- /* Handle other expressions, with relocation if necessary */
- if (value->seg_of || value->section_rel || value->rshift > 0) {
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("elf: relocation too complex"));
- return 1;
- }
-
- intn_val = 0;
- if (value->rel) {
- yasm_sym_vis vis = yasm_symrec_get_visibility(value->rel);
- /*@dependent@*/ /*@null@*/ yasm_symrec *sym = value->rel;
- /*@dependent@*/ /*@null@*/ yasm_symrec *wrt = value->wrt;
-
- if (wrt == info->objfmt_elf->dotdotsym)
- wrt = NULL;
- else if (wrt && elf_is_wrt_sym_relative(wrt))
- ;
- else if (wrt && elf_is_wrt_pos_adjusted(wrt))
- intn_val = offset + bc->offset;
- else if (vis == YASM_SYM_LOCAL) {
- yasm_bytecode *sym_precbc;
- /* Local symbols need relocation to their section's start, and
- * add in the offset of the bytecode (within the target section)
- * into the abs portion.
- *
- * This is only done if the symbol is relocated against the
- * section instead of the symbol itself.
- */
- if (yasm_symrec_get_label(sym, &sym_precbc)) {
- /* Relocate to section start */
- yasm_section *sym_sect = yasm_bc_get_section(sym_precbc);
- /*@null@*/ elf_secthead *sym_shead;
- sym_shead = yasm_section_get_data(sym_sect, &elf_section_data);
- assert(sym_shead != NULL);
- sym = elf_secthead_get_sym(sym_shead);
-
- intn_val = yasm_bc_next_offset(sym_precbc);
- }
- }
-
- /* For PC-relative, need to add offset of expression within bc. */
- if (value->curpos_rel)
- intn_val += offset;
-
- /* Check for _GLOBAL_OFFSET_TABLE_ symbol reference */
- reloc = elf_reloc_entry_create(sym, wrt,
- yasm_intnum_create_uint(bc->offset + offset), value->curpos_rel,
- valsize, sym == info->GOT_sym);
- if (reloc == NULL) {
- yasm_error_set(YASM_ERROR_TYPE,
- N_("elf: invalid relocation (WRT or size)"));
- return 1;
- }
- /* allocate .rel[a] sections on a need-basis */
- elf_secthead_append_reloc(info->sect, info->shead, reloc);
- }
-
- intn = yasm_intnum_create_uint(intn_val);
-
- if (value->abs) {
- yasm_intnum *intn2 = yasm_expr_get_intnum(&value->abs, 0);
- if (!intn2) {
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("elf: relocation too complex"));
- yasm_intnum_destroy(intn);
- return 1;
- }
- yasm_intnum_calc(intn, YASM_EXPR_ADD, intn2);
- }
-
- if (reloc)
- elf_handle_reloc_addend(intn, reloc, offset);
- retval = yasm_arch_intnum_tobytes(info->object->arch, intn, buf, destsize,
- valsize, 0, bc, warn);
- yasm_intnum_destroy(intn);
- return retval;
-}
-
-static int
-elf_objfmt_output_bytecode(yasm_bytecode *bc, /*@null@*/ void *d)
-{
- /*@null@*/ elf_objfmt_output_info *info = (elf_objfmt_output_info *)d;
- unsigned char buf[256];
- /*@null@*/ /*@only@*/ unsigned char *bigbuf;
- unsigned long size = 256;
- int gap;
-
- if (info == NULL)
- yasm_internal_error("null info struct");
-
- bigbuf = yasm_bc_tobytes(bc, buf, &size, &gap, info,
- elf_objfmt_output_value, elf_objfmt_output_reloc);
-
- /* Don't bother doing anything else if size ended up being 0. */
- if (size == 0) {
- if (bigbuf)
- yasm_xfree(bigbuf);
- return 0;
- }
- else {
- yasm_intnum *bcsize = yasm_intnum_create_uint(size);
- elf_secthead_add_size(info->shead, bcsize);
- yasm_intnum_destroy(bcsize);
- }
-
- /* Warn that gaps are converted to 0 and write out the 0's. */
- if (gap) {
- unsigned long left;
- yasm_warn_set(YASM_WARN_UNINIT_CONTENTS,
- N_("uninitialized space declared in code/data section: zeroing"));
- /* Write out in chunks */
- memset(buf, 0, 256);
- left = size;
- while (left > 256) {
- fwrite(buf, 256, 1, info->f);
- left -= 256;
- }
- fwrite(buf, left, 1, info->f);
- } else {
- /* Output buf (or bigbuf if non-NULL) to file */
- fwrite(bigbuf ? bigbuf : buf, (size_t)size, 1, info->f);
- }
-
- /* If bigbuf was allocated, free it */
- if (bigbuf)
- yasm_xfree(bigbuf);
-
- return 0;
-}
-
-static int
-elf_objfmt_output_section(yasm_section *sect, /*@null@*/ void *d)
-{
- /*@null@*/ elf_objfmt_output_info *info = (elf_objfmt_output_info *)d;
- /*@dependent@*/ /*@null@*/ elf_secthead *shead;
- long pos;
- char *relname;
- const char *sectname;
-
- if (info == NULL)
- yasm_internal_error("null info struct");
- shead = yasm_section_get_data(sect, &elf_section_data);
- if (shead == NULL)
- yasm_internal_error("no associated data");
-
- if (elf_secthead_get_align(shead) == 0)
- elf_secthead_set_align(shead, yasm_section_get_align(sect));
-
- /* don't output header-only sections */
- if ((elf_secthead_get_type(shead) & SHT_NOBITS) == SHT_NOBITS)
- {
- yasm_bytecode *last = yasm_section_bcs_last(sect);
- if (last) {
- yasm_intnum *sectsize;
- sectsize = yasm_intnum_create_uint(yasm_bc_next_offset(last));
- elf_secthead_add_size(shead, sectsize);
- yasm_intnum_destroy(sectsize);
- }
- elf_secthead_set_index(shead, ++info->sindex);
- return 0;
- }
-
- if ((pos = ftell(info->f)) == -1) {
- yasm_error_set(YASM_ERROR_IO,
- N_("couldn't read position on output stream"));
- yasm_errwarn_propagate(info->errwarns, 0);
- }
- pos = elf_secthead_set_file_offset(shead, pos);
- if (fseek(info->f, pos, SEEK_SET) < 0) {
- yasm_error_set(YASM_ERROR_IO, N_("couldn't seek on output stream"));
- yasm_errwarn_propagate(info->errwarns, 0);
- }
-
- info->sect = sect;
- info->shead = shead;
- yasm_section_bcs_traverse(sect, info->errwarns, info,
- elf_objfmt_output_bytecode);
-
- elf_secthead_set_index(shead, ++info->sindex);
-
- /* No relocations to output? Go on to next section */
- if (elf_secthead_write_relocs_to_file(info->f, sect, shead,
- info->errwarns) == 0)
- return 0;
- elf_secthead_set_rel_index(shead, ++info->sindex);
-
- /* name the relocation section .rel[a].foo */
- sectname = yasm_section_get_name(sect);
- relname = elf_secthead_name_reloc_section(sectname);
- elf_secthead_set_rel_name(shead,
- elf_strtab_append_str(info->objfmt_elf->shstrtab, relname));
- yasm_xfree(relname);
-
- return 0;
-}
-
-static int
-elf_objfmt_output_secthead(yasm_section *sect, /*@null@*/ void *d)
-{
- /*@null@*/ elf_objfmt_output_info *info = (elf_objfmt_output_info *)d;
- /*@dependent@*/ /*@null@*/ elf_secthead *shead;
-
- if (info == NULL)
- yasm_internal_error("null info struct");
- shead = yasm_section_get_data(sect, &elf_section_data);
- if (shead == NULL)
- yasm_internal_error("no section header attached to section");
-
- if(elf_secthead_write_to_file(info->f, shead, info->sindex+1))
- info->sindex++;
-
- /* output strtab headers here? */
-
- /* relocation entries for .foo are stored in section .rel[a].foo */
- if(elf_secthead_write_rel_to_file(info->f, 3, sect, shead,
- info->sindex+1))
- info->sindex++;
-
- return 0;
-}
-
-static void
-elf_objfmt_output(yasm_object *object, FILE *f, int all_syms,
- yasm_errwarns *errwarns)
-{
- yasm_objfmt_elf *objfmt_elf = (yasm_objfmt_elf *)object->objfmt;
- elf_objfmt_output_info info;
- build_symtab_info buildsym_info;
- long pos;
- unsigned long elf_shead_addr;
- elf_secthead *esdn;
- unsigned long elf_strtab_offset, elf_shstrtab_offset, elf_symtab_offset;
- unsigned long elf_strtab_size, elf_shstrtab_size, elf_symtab_size;
- elf_strtab_entry *elf_strtab_name, *elf_shstrtab_name, *elf_symtab_name;
- unsigned long elf_symtab_nlocal;
-
- info.object = object;
- info.objfmt_elf = objfmt_elf;
- info.errwarns = errwarns;
- info.f = f;
- info.GOT_sym = yasm_symtab_get(object->symtab, "_GLOBAL_OFFSET_TABLE_");
-
+ entry = elf_symtab_entry_create(objfmt_elf->file_strtab_entry, filesym);
+ yasm_symrec_add_data(filesym, &elf_symrec_data, entry);
+ elf_symtab_set_nonzero(entry, NULL, SHN_ABS, STB_LOCAL, STT_FILE, NULL,
+ NULL);
+ elf_symtab_append_entry(objfmt_elf->elf_symtab, entry);
+
+ /* FIXME: misuse of NULL bytecode */
+ objfmt_elf->dotdotsym =
+ yasm_symtab_define_label(object->symtab, "..sym", NULL, 0, 0);
+
+ return (yasm_objfmt *)objfmt_elf;
+}
+
+static yasm_objfmt *
+elf_objfmt_create(yasm_object *object)
+{
+ const elf_machine_handler *elf_march;
+ yasm_objfmt *objfmt;
+ yasm_objfmt_elf *objfmt_elf;
+
+ objfmt = elf_objfmt_create_common(object, &yasm_elf_LTX_objfmt, 0,
+ &elf_march);
+ if (objfmt) {
+ objfmt_elf = (yasm_objfmt_elf *)objfmt;
+ /* Figure out which bitness of object format to use */
+ if (strcmp (elf_march->machine, "x32") == 0)
+ objfmt_elf->objfmt.module = &yasm_elfx32_LTX_objfmt;
+ else if (elf_march->bits == 32)
+ objfmt_elf->objfmt.module = &yasm_elf32_LTX_objfmt;
+ else if (elf_march->bits == 64)
+ objfmt_elf->objfmt.module = &yasm_elf64_LTX_objfmt;
+ }
+ return objfmt;
+}
+
+static yasm_objfmt *
+elf32_objfmt_create(yasm_object *object)
+{
+ return elf_objfmt_create_common(object, &yasm_elf32_LTX_objfmt, 32, NULL);
+}
+
+static yasm_objfmt *
+elf64_objfmt_create(yasm_object *object)
+{
+ return elf_objfmt_create_common(object, &yasm_elf64_LTX_objfmt, 64, NULL);
+}
+
+static yasm_objfmt *
+elfx32_objfmt_create(yasm_object *object)
+{
+ return elf_objfmt_create_common(object, &yasm_elfx32_LTX_objfmt, 32, NULL);
+}
+
+static long
+elf_objfmt_output_align(FILE *f, unsigned int align)
+{
+ long pos;
+ unsigned long delta;
+ if (!is_exp2(align))
+ yasm_internal_error("requested alignment not a power of two");
+
+ pos = ftell(f);
+ if (pos == -1) {
+ yasm_error_set(YASM_ERROR_IO,
+ N_("could not get file position on output file"));
+ return -1;
+ }
+ delta = align - (pos & (align-1));
+ if (delta != align) {
+ pos += delta;
+ if (fseek(f, pos, SEEK_SET) < 0) {
+ yasm_error_set(YASM_ERROR_IO,
+ N_("could not set file position on output file"));
+ return -1;
+ }
+ }
+ return pos;
+}
+
+static int
+elf_objfmt_output_reloc(yasm_symrec *sym, yasm_bytecode *bc,
+ unsigned char *buf, unsigned int destsize,
+ unsigned int valsize, int warn, void *d)
+{
+ elf_reloc_entry *reloc;
+ elf_objfmt_output_info *info = d;
+ yasm_intnum *zero;
+ int retval;
+
+ reloc = elf_reloc_entry_create(sym, NULL,
+ yasm_intnum_create_uint(bc->offset), 0, valsize, 0);
+ if (reloc == NULL) {
+ yasm_error_set(YASM_ERROR_TYPE, N_("elf: invalid relocation size"));
+ return 1;
+ }
+ /* allocate .rel[a] sections on a need-basis */
+ elf_secthead_append_reloc(info->sect, info->shead, reloc);
+
+ zero = yasm_intnum_create_uint(0);
+ elf_handle_reloc_addend(zero, reloc, 0);
+ retval = yasm_arch_intnum_tobytes(info->object->arch, zero, buf, destsize,
+ valsize, 0, bc, warn);
+ yasm_intnum_destroy(zero);
+ return retval;
+}
+
+static int
+elf_objfmt_output_value(yasm_value *value, unsigned char *buf,
+ unsigned int destsize, unsigned long offset,
+ yasm_bytecode *bc, int warn, /*@null@*/ void *d)
+{
+ /*@null@*/ elf_objfmt_output_info *info = (elf_objfmt_output_info *)d;
+ /*@dependent@*/ /*@null@*/ yasm_intnum *intn;
+ unsigned long intn_val;
+ /*@null@*/ elf_reloc_entry *reloc = NULL;
+ int retval;
+ unsigned int valsize = value->size;
+
+ if (info == NULL)
+ yasm_internal_error("null info struct");
+
+ if (value->abs)
+ value->abs = yasm_expr_simplify(value->abs, 1);
+
+ /* Try to output constant and PC-relative section-local first.
+ * Note this does NOT output any value with a SEG, WRT, external,
+ * cross-section, or non-PC-relative reference (those are handled below).
+ */
+ switch (yasm_value_output_basic(value, buf, destsize, bc, warn,
+ info->object->arch)) {
+ case -1:
+ return 1;
+ case 0:
+ break;
+ default:
+ return 0;
+ }
+
+ /* Handle other expressions, with relocation if necessary */
+ if (value->seg_of || value->section_rel || value->rshift > 0) {
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("elf: relocation too complex"));
+ return 1;
+ }
+
+ intn_val = 0;
+ if (value->rel) {
+ yasm_sym_vis vis = yasm_symrec_get_visibility(value->rel);
+ /*@dependent@*/ /*@null@*/ yasm_symrec *sym = value->rel;
+ /*@dependent@*/ /*@null@*/ yasm_symrec *wrt = value->wrt;
+
+ if (wrt == info->objfmt_elf->dotdotsym)
+ wrt = NULL;
+ else if (wrt && elf_is_wrt_sym_relative(wrt))
+ ;
+ else if (wrt && elf_is_wrt_pos_adjusted(wrt))
+ intn_val = offset + bc->offset;
+ else if (vis == YASM_SYM_LOCAL) {
+ yasm_bytecode *sym_precbc;
+ /* Local symbols need relocation to their section's start, and
+ * add in the offset of the bytecode (within the target section)
+ * into the abs portion.
+ *
+ * This is only done if the symbol is relocated against the
+ * section instead of the symbol itself.
+ */
+ if (yasm_symrec_get_label(sym, &sym_precbc)) {
+ /* Relocate to section start */
+ yasm_section *sym_sect = yasm_bc_get_section(sym_precbc);
+ /*@null@*/ elf_secthead *sym_shead;
+ sym_shead = yasm_section_get_data(sym_sect, &elf_section_data);
+ assert(sym_shead != NULL);
+ sym = elf_secthead_get_sym(sym_shead);
+
+ intn_val = yasm_bc_next_offset(sym_precbc);
+ }
+ }
+
+ /* For PC-relative, need to add offset of expression within bc. */
+ if (value->curpos_rel)
+ intn_val += offset;
+
+ /* Check for _GLOBAL_OFFSET_TABLE_ symbol reference */
+ reloc = elf_reloc_entry_create(sym, wrt,
+ yasm_intnum_create_uint(bc->offset + offset), value->curpos_rel,
+ valsize, sym == info->GOT_sym);
+ if (reloc == NULL) {
+ yasm_error_set(YASM_ERROR_TYPE,
+ N_("elf: invalid relocation (WRT or size)"));
+ return 1;
+ }
+ /* allocate .rel[a] sections on a need-basis */
+ elf_secthead_append_reloc(info->sect, info->shead, reloc);
+ }
+
+ intn = yasm_intnum_create_uint(intn_val);
+
+ if (value->abs) {
+ yasm_intnum *intn2 = yasm_expr_get_intnum(&value->abs, 0);
+ if (!intn2) {
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("elf: relocation too complex"));
+ yasm_intnum_destroy(intn);
+ return 1;
+ }
+ yasm_intnum_calc(intn, YASM_EXPR_ADD, intn2);
+ }
+
+ if (reloc)
+ elf_handle_reloc_addend(intn, reloc, offset);
+ retval = yasm_arch_intnum_tobytes(info->object->arch, intn, buf, destsize,
+ valsize, 0, bc, warn);
+ yasm_intnum_destroy(intn);
+ return retval;
+}
+
+static int
+elf_objfmt_output_bytecode(yasm_bytecode *bc, /*@null@*/ void *d)
+{
+ /*@null@*/ elf_objfmt_output_info *info = (elf_objfmt_output_info *)d;
+ unsigned char buf[256];
+ /*@null@*/ /*@only@*/ unsigned char *bigbuf;
+ unsigned long size = 256;
+ int gap;
+
+ if (info == NULL)
+ yasm_internal_error("null info struct");
+
+ bigbuf = yasm_bc_tobytes(bc, buf, &size, &gap, info,
+ elf_objfmt_output_value, elf_objfmt_output_reloc);
+
+ /* Don't bother doing anything else if size ended up being 0. */
+ if (size == 0) {
+ if (bigbuf)
+ yasm_xfree(bigbuf);
+ return 0;
+ }
+ else {
+ yasm_intnum *bcsize = yasm_intnum_create_uint(size);
+ elf_secthead_add_size(info->shead, bcsize);
+ yasm_intnum_destroy(bcsize);
+ }
+
+ /* Warn that gaps are converted to 0 and write out the 0's. */
+ if (gap) {
+ unsigned long left;
+ yasm_warn_set(YASM_WARN_UNINIT_CONTENTS,
+ N_("uninitialized space declared in code/data section: zeroing"));
+ /* Write out in chunks */
+ memset(buf, 0, 256);
+ left = size;
+ while (left > 256) {
+ fwrite(buf, 256, 1, info->f);
+ left -= 256;
+ }
+ fwrite(buf, left, 1, info->f);
+ } else {
+ /* Output buf (or bigbuf if non-NULL) to file */
+ fwrite(bigbuf ? bigbuf : buf, (size_t)size, 1, info->f);
+ }
+
+ /* If bigbuf was allocated, free it */
+ if (bigbuf)
+ yasm_xfree(bigbuf);
+
+ return 0;
+}
+
+static int
+elf_objfmt_output_section(yasm_section *sect, /*@null@*/ void *d)
+{
+ /*@null@*/ elf_objfmt_output_info *info = (elf_objfmt_output_info *)d;
+ /*@dependent@*/ /*@null@*/ elf_secthead *shead;
+ long pos;
+ char *relname;
+ const char *sectname;
+
+ if (info == NULL)
+ yasm_internal_error("null info struct");
+ shead = yasm_section_get_data(sect, &elf_section_data);
+ if (shead == NULL)
+ yasm_internal_error("no associated data");
+
+ if (elf_secthead_get_align(shead) == 0)
+ elf_secthead_set_align(shead, yasm_section_get_align(sect));
+
+ /* don't output header-only sections */
+ if ((elf_secthead_get_type(shead) & SHT_NOBITS) == SHT_NOBITS)
+ {
+ yasm_bytecode *last = yasm_section_bcs_last(sect);
+ if (last) {
+ yasm_intnum *sectsize;
+ sectsize = yasm_intnum_create_uint(yasm_bc_next_offset(last));
+ elf_secthead_add_size(shead, sectsize);
+ yasm_intnum_destroy(sectsize);
+ }
+ elf_secthead_set_index(shead, ++info->sindex);
+ return 0;
+ }
+
+ if ((pos = ftell(info->f)) == -1) {
+ yasm_error_set(YASM_ERROR_IO,
+ N_("couldn't read position on output stream"));
+ yasm_errwarn_propagate(info->errwarns, 0);
+ }
+ pos = elf_secthead_set_file_offset(shead, pos);
+ if (fseek(info->f, pos, SEEK_SET) < 0) {
+ yasm_error_set(YASM_ERROR_IO, N_("couldn't seek on output stream"));
+ yasm_errwarn_propagate(info->errwarns, 0);
+ }
+
+ info->sect = sect;
+ info->shead = shead;
+ yasm_section_bcs_traverse(sect, info->errwarns, info,
+ elf_objfmt_output_bytecode);
+
+ elf_secthead_set_index(shead, ++info->sindex);
+
+ /* No relocations to output? Go on to next section */
+ if (elf_secthead_write_relocs_to_file(info->f, sect, shead,
+ info->errwarns) == 0)
+ return 0;
+ elf_secthead_set_rel_index(shead, ++info->sindex);
+
+ /* name the relocation section .rel[a].foo */
+ sectname = yasm_section_get_name(sect);
+ relname = elf_secthead_name_reloc_section(sectname);
+ elf_secthead_set_rel_name(shead,
+ elf_strtab_append_str(info->objfmt_elf->shstrtab, relname));
+ yasm_xfree(relname);
+
+ return 0;
+}
+
+static int
+elf_objfmt_output_secthead(yasm_section *sect, /*@null@*/ void *d)
+{
+ /*@null@*/ elf_objfmt_output_info *info = (elf_objfmt_output_info *)d;
+ /*@dependent@*/ /*@null@*/ elf_secthead *shead;
+
+ if (info == NULL)
+ yasm_internal_error("null info struct");
+ shead = yasm_section_get_data(sect, &elf_section_data);
+ if (shead == NULL)
+ yasm_internal_error("no section header attached to section");
+
+ if(elf_secthead_write_to_file(info->f, shead, info->sindex+1))
+ info->sindex++;
+
+ /* output strtab headers here? */
+
+ /* relocation entries for .foo are stored in section .rel[a].foo */
+ if(elf_secthead_write_rel_to_file(info->f, 3, sect, shead,
+ info->sindex+1))
+ info->sindex++;
+
+ return 0;
+}
+
+static void
+elf_objfmt_output(yasm_object *object, FILE *f, int all_syms,
+ yasm_errwarns *errwarns)
+{
+ yasm_objfmt_elf *objfmt_elf = (yasm_objfmt_elf *)object->objfmt;
+ elf_objfmt_output_info info;
+ build_symtab_info buildsym_info;
+ long pos;
+ unsigned long elf_shead_addr;
+ elf_secthead *esdn;
+ unsigned long elf_strtab_offset, elf_shstrtab_offset, elf_symtab_offset;
+ unsigned long elf_strtab_size, elf_shstrtab_size, elf_symtab_size;
+ elf_strtab_entry *elf_strtab_name, *elf_shstrtab_name, *elf_symtab_name;
+ unsigned long elf_symtab_nlocal;
+
+ info.object = object;
+ info.objfmt_elf = objfmt_elf;
+ info.errwarns = errwarns;
+ info.f = f;
+ info.GOT_sym = yasm_symtab_get(object->symtab, "_GLOBAL_OFFSET_TABLE_");
+
if (!object->deb_filename) {
object->deb_filename = yasm_replace_path(
objfmt_elf->objfmt.module->replace_map, objfmt_elf->objfmt.module->replace_map_size,
object->src_filename, strlen(object->src_filename));
}
- /* Update filename strtab */
- elf_strtab_entry_set_str(objfmt_elf->file_strtab_entry,
+ /* Update filename strtab */
+ elf_strtab_entry_set_str(objfmt_elf->file_strtab_entry,
object->deb_filename);
-
- /* Allocate space for Ehdr by seeking forward */
- if (fseek(f, (long)(elf_proghead_get_size()), SEEK_SET) < 0) {
- yasm_error_set(YASM_ERROR_IO, N_("could not seek on output file"));
- yasm_errwarn_propagate(errwarns, 0);
- return;
- }
-
- /* add all (local) syms to symtab because relocation needs a symtab index
- * if all_syms, register them by name. if not, use strtab entry 0 */
- buildsym_info.object = object;
- buildsym_info.objfmt_elf = objfmt_elf;
- buildsym_info.errwarns = errwarns;
- buildsym_info.local_names = all_syms;
- yasm_symtab_traverse(object->symtab, &buildsym_info,
- elf_objfmt_build_symtab);
- elf_symtab_nlocal = elf_symtab_assign_indices(objfmt_elf->elf_symtab);
-
- /* output known sections - includes reloc sections which aren't in yasm's
- * list. Assign indices as we go. */
- info.sindex = 3;
- if (yasm_object_sections_traverse(object, &info,
- elf_objfmt_output_section))
- return;
-
- /* add final sections to the shstrtab */
- elf_strtab_name = elf_strtab_append_str(objfmt_elf->shstrtab, ".strtab");
- elf_symtab_name = elf_strtab_append_str(objfmt_elf->shstrtab, ".symtab");
- elf_shstrtab_name = elf_strtab_append_str(objfmt_elf->shstrtab,
- ".shstrtab");
-
- /* output .shstrtab */
- if ((pos = elf_objfmt_output_align(f, 4)) == -1) {
- yasm_errwarn_propagate(errwarns, 0);
- return;
- }
- elf_shstrtab_offset = (unsigned long) pos;
- elf_shstrtab_size = elf_strtab_output_to_file(f, objfmt_elf->shstrtab);
-
- /* output .strtab */
- if ((pos = elf_objfmt_output_align(f, 4)) == -1) {
- yasm_errwarn_propagate(errwarns, 0);
- return;
- }
- elf_strtab_offset = (unsigned long) pos;
- elf_strtab_size = elf_strtab_output_to_file(f, objfmt_elf->strtab);
-
- /* output .symtab - last section so all others have indexes */
- if ((pos = elf_objfmt_output_align(f, 4)) == -1) {
- yasm_errwarn_propagate(errwarns, 0);
- return;
- }
- elf_symtab_offset = (unsigned long) pos;
- elf_symtab_size = elf_symtab_write_to_file(f, objfmt_elf->elf_symtab,
- errwarns);
-
- /* output section header table */
- if ((pos = elf_objfmt_output_align(f, 16)) == -1) {
- yasm_errwarn_propagate(errwarns, 0);
- return;
- }
- elf_shead_addr = (unsigned long) pos;
-
- /* stabs debugging support */
- if (strcmp(yasm_dbgfmt_keyword(object->dbgfmt), "stabs")==0) {
- yasm_section *stabsect = yasm_object_find_general(object, ".stab");
- yasm_section *stabstrsect =
- yasm_object_find_general(object, ".stabstr");
- if (stabsect && stabstrsect) {
- elf_secthead *stab =
- yasm_section_get_data(stabsect, &elf_section_data);
- elf_secthead *stabstr =
- yasm_section_get_data(stabstrsect, &elf_section_data);
- if (stab && stabstr) {
- elf_secthead_set_link(stab, elf_secthead_get_index(stabstr));
- }
- else
- yasm_internal_error(N_("missing .stab or .stabstr section/data"));
- }
- }
-
- /* output dummy section header - 0 */
- info.sindex = 0;
-
- esdn = elf_secthead_create(NULL, SHT_NULL, 0, 0, 0);
- elf_secthead_set_index(esdn, 0);
- elf_secthead_write_to_file(f, esdn, 0);
- elf_secthead_destroy(esdn);
-
- esdn = elf_secthead_create(elf_shstrtab_name, SHT_STRTAB, 0,
- elf_shstrtab_offset, elf_shstrtab_size);
- elf_secthead_set_index(esdn, 1);
- elf_secthead_write_to_file(f, esdn, 1);
- elf_secthead_destroy(esdn);
-
- esdn = elf_secthead_create(elf_strtab_name, SHT_STRTAB, 0,
- elf_strtab_offset, elf_strtab_size);
- elf_secthead_set_index(esdn, 2);
- elf_secthead_write_to_file(f, esdn, 2);
- elf_secthead_destroy(esdn);
-
- esdn = elf_secthead_create(elf_symtab_name, SHT_SYMTAB, 0,
- elf_symtab_offset, elf_symtab_size);
- elf_secthead_set_index(esdn, 3);
- elf_secthead_set_info(esdn, elf_symtab_nlocal);
- elf_secthead_set_link(esdn, 2); /* for .strtab, which is index 2 */
- elf_secthead_write_to_file(f, esdn, 3);
- elf_secthead_destroy(esdn);
-
- info.sindex = 3;
- /* output remaining section headers */
- yasm_object_sections_traverse(object, &info, elf_objfmt_output_secthead);
-
- /* output Ehdr */
- if (fseek(f, 0, SEEK_SET) < 0) {
- yasm_error_set(YASM_ERROR_IO, N_("could not seek on output file"));
- yasm_errwarn_propagate(errwarns, 0);
- return;
- }
-
- elf_proghead_write_to_file(f, elf_shead_addr, info.sindex+1, 1);
-}
-
-static void
-elf_objfmt_destroy(yasm_objfmt *objfmt)
-{
- yasm_objfmt_elf *objfmt_elf = (yasm_objfmt_elf *)objfmt;
- elf_symtab_destroy(objfmt_elf->elf_symtab);
- elf_strtab_destroy(objfmt_elf->shstrtab);
- elf_strtab_destroy(objfmt_elf->strtab);
- yasm_xfree(objfmt);
-}
-
-static void
-elf_objfmt_init_new_section(yasm_section *sect, unsigned long line)
-{
- yasm_object *object = yasm_section_get_object(sect);
- const char *sectname = yasm_section_get_name(sect);
- yasm_objfmt_elf *objfmt_elf = (yasm_objfmt_elf *)object->objfmt;
- elf_secthead *esd;
- yasm_symrec *sym;
- elf_strtab_entry *name = elf_strtab_append_str(objfmt_elf->shstrtab,
- sectname);
-
- elf_section_type type=SHT_PROGBITS;
- elf_size entsize=0;
-
- if (yasm__strcasecmp(sectname, ".stab")==0) {
- entsize = 12;
- } else if (yasm__strcasecmp(sectname, ".stabstr")==0) {
- type = SHT_STRTAB;
- }
-
- esd = elf_secthead_create(name, type, 0, 0, 0);
- elf_secthead_set_entsize(esd, entsize);
- yasm_section_add_data(sect, &elf_section_data, esd);
- sym = yasm_symtab_define_label(object->symtab, sectname,
- yasm_section_bcs_first(sect), 1, line);
-
- elf_secthead_set_sym(esd, sym);
-}
-
-static yasm_section *
-elf_objfmt_add_default_section(yasm_object *object)
-{
- yasm_section *retval;
- int isnew;
-
- retval = yasm_object_get_general(object, ".text", 16, 1, 0, &isnew, 0);
- if (isnew)
- {
- elf_secthead *esd = yasm_section_get_data(retval, &elf_section_data);
- elf_secthead_set_typeflags(esd, SHT_PROGBITS,
- SHF_ALLOC + SHF_EXECINSTR);
- yasm_section_set_default(retval, 1);
- }
- return retval;
-}
-
-struct elf_section_switch_data {
- /*@only@*/ /*@null@*/ yasm_intnum *align_intn;
- unsigned long flags;
- unsigned long type;
- int gasflags;
- int stdsect;
-};
-
-/* GAS-style flags */
-static int
-elf_helper_gasflags(void *obj, yasm_valparam *vp, unsigned long line, void *d,
- /*@unused@*/ uintptr_t arg)
-{
- struct elf_section_switch_data *data = (struct elf_section_switch_data *)d;
- const char *s = yasm_vp_string(vp);
- size_t i;
-
- if (!s) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("non-string section attribute"));
- return -1;
- }
-
- if (data->stdsect && strlen(s) == 0) {
- data->gasflags = 1;
- return 0;
- }
-
- data->flags = 0;
- for (i=0; i<strlen(s); i++) {
- switch (s[i]) {
- case 'a':
- data->flags |= SHF_ALLOC;
- break;
- case 'w':
- data->flags |= SHF_WRITE;
- break;
- case 'x':
- data->flags |= SHF_EXECINSTR;
- break;
- case 'M':
- data->flags |= SHF_MERGE;
- break;
- case 'S':
- data->flags |= SHF_STRINGS;
- break;
- case 'G':
- data->flags |= SHF_GROUP;
- break;
- case 'T':
- data->flags |= SHF_TLS;
- break;
- default:
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("unrecognized section attribute: `%c'"),
- s[i]);
- }
- }
-
- data->gasflags = 1;
- return 0;
-}
-
-static /*@observer@*/ /*@null@*/ yasm_section *
-elf_objfmt_section_switch(yasm_object *object, yasm_valparamhead *valparams,
- /*@null@*/ yasm_valparamhead *objext_valparams,
- unsigned long line)
-{
- yasm_valparam *vp;
- yasm_section *retval;
- int isnew;
- unsigned long align = 4;
- int flags_override = 0;
- const char *sectname;
- int resonly = 0;
-
- struct elf_section_switch_data data;
-
- static const yasm_dir_help help[] = {
- { "alloc", 0, yasm_dir_helper_flag_or,
- offsetof(struct elf_section_switch_data, flags), SHF_ALLOC },
- { "exec", 0, yasm_dir_helper_flag_or,
- offsetof(struct elf_section_switch_data, flags), SHF_EXECINSTR },
- { "write", 0, yasm_dir_helper_flag_or,
- offsetof(struct elf_section_switch_data, flags), SHF_WRITE },
- { "tls", 0, yasm_dir_helper_flag_or,
- offsetof(struct elf_section_switch_data, flags), SHF_TLS },
- { "progbits", 0, yasm_dir_helper_flag_set,
- offsetof(struct elf_section_switch_data, type), SHT_PROGBITS },
- { "noalloc", 0, yasm_dir_helper_flag_and,
- offsetof(struct elf_section_switch_data, flags), SHF_ALLOC },
- { "noexec", 0, yasm_dir_helper_flag_and,
- offsetof(struct elf_section_switch_data, flags), SHF_EXECINSTR },
- { "nowrite", 0, yasm_dir_helper_flag_and,
- offsetof(struct elf_section_switch_data, flags), SHF_WRITE },
- { "notls", 0, yasm_dir_helper_flag_and,
- offsetof(struct elf_section_switch_data, flags), SHF_TLS },
- { "noprogbits", 0, yasm_dir_helper_flag_set,
- offsetof(struct elf_section_switch_data, type), SHT_NOBITS },
- { "nobits", 0, yasm_dir_helper_flag_set,
- offsetof(struct elf_section_switch_data, type), SHT_NOBITS },
- { "gasflags", 1, elf_helper_gasflags, 0, 0 },
- { "align", 1, yasm_dir_helper_intn,
- offsetof(struct elf_section_switch_data, align_intn), 0 }
- };
- /*@only@*/ /*@null@*/ yasm_expr *merge_expr = NULL;
- /*@dependent@*/ /*@null@*/ const yasm_intnum *merge_intn = NULL;
- elf_secthead *esd;
-
- data.align_intn = NULL;
- data.flags = SHF_ALLOC;
- data.type = SHT_PROGBITS;
- data.gasflags = 0;
- data.stdsect = 1;
-
- vp = yasm_vps_first(valparams);
- sectname = yasm_vp_string(vp);
- if (!sectname)
- return NULL;
- vp = yasm_vps_next(vp);
-
- if (strcmp(sectname, ".bss") == 0) {
- data.type = SHT_NOBITS;
- data.flags = SHF_ALLOC + SHF_WRITE;
- resonly = 1;
- } else if (strcmp(sectname, ".data") == 0) {
- data.type = SHT_PROGBITS;
- data.flags = SHF_ALLOC + SHF_WRITE;
- } else if (strcmp(sectname, ".tdata") == 0) {
- data.type = SHT_PROGBITS;
- data.flags = SHF_ALLOC + SHF_WRITE + SHF_TLS;
- } else if (strcmp(sectname, ".rodata") == 0) {
- data.type = SHT_PROGBITS;
- data.flags = SHF_ALLOC;
- } else if (strcmp(sectname, ".text") == 0) {
- align = 16;
- data.type = SHT_PROGBITS;
- data.flags = SHF_ALLOC + SHF_EXECINSTR;
- } else if (strcmp(sectname, ".comment") == 0) {
- align = 0;
- data.type = SHT_PROGBITS;
- data.flags = 0;
- } else {
- /* Default to code */
- align = 1;
- data.stdsect = 0;
- }
-
- flags_override = yasm_dir_helper(object, vp, line, help, NELEMS(help),
- &data, yasm_dir_helper_valparam_warn);
- if (flags_override < 0)
- return NULL; /* error occurred */
-
- if (data.align_intn) {
- align = yasm_intnum_get_uint(data.align_intn);
- yasm_intnum_destroy(data.align_intn);
-
- /* Alignments must be a power of two. */
- if (!is_exp2(align)) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("argument to `%s' is not a power of two"),
- "align");
- return NULL;
- }
- }
-
- /* Handle merge entity size */
- if (data.flags & SHF_MERGE) {
- if (objext_valparams && (vp = yasm_vps_first(objext_valparams))
- && !vp->val) {
- if (!(merge_expr = yasm_vp_expr(vp, object->symtab, line)) ||
- !(merge_intn = yasm_expr_get_intnum(&merge_expr, 0)))
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("invalid merge entity size"));
- } else {
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("entity size for SHF_MERGE not specified"));
- data.flags &= ~SHF_MERGE;
- }
- }
-
- retval = yasm_object_get_general(object, sectname, align,
- (data.flags & SHF_EXECINSTR) != 0,
- resonly, &isnew, line);
-
- esd = yasm_section_get_data(retval, &elf_section_data);
-
- if (isnew || yasm_section_is_default(retval)) {
- yasm_section_set_default(retval, 0);
- elf_secthead_set_typeflags(esd, data.type, data.flags);
- if (merge_intn)
- elf_secthead_set_entsize(esd, yasm_intnum_get_uint(merge_intn));
- yasm_section_set_align(retval, align, line);
- } else if (flags_override && !data.gasflags)
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("section flags ignored on section redeclaration"));
- if (merge_expr)
- yasm_expr_destroy(merge_expr);
- return retval;
-}
-
-static /*@observer@*/ /*@null@*/ yasm_symrec *
-elf_objfmt_get_special_sym(yasm_object *object, const char *name,
- const char *parser)
-{
- if (yasm__strcasecmp(name, "sym") == 0) {
- yasm_objfmt_elf *objfmt_elf = (yasm_objfmt_elf *)object->objfmt;
- return objfmt_elf->dotdotsym;
- }
- return elf_get_special_sym(name, parser);
-}
-
-static void
-dir_type(yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_objfmt_elf *objfmt_elf = (yasm_objfmt_elf *)object->objfmt;
- yasm_valparam *vp = yasm_vps_first(valparams);
- const char *symname = yasm_vp_id(vp);
- /* Get symbol elf data */
- yasm_symrec *sym = yasm_symtab_use(object->symtab, symname, line);
- elf_symtab_entry *entry = yasm_symrec_get_data(sym, &elf_symrec_data);
- /*@null@*/ const char *type;
-
- /* Create entry if necessary */
- if (!entry) {
- entry = elf_symtab_entry_create(
- elf_strtab_append_str(objfmt_elf->strtab, symname), sym);
- yasm_symrec_add_data(sym, &elf_symrec_data, entry);
- }
-
- /* Pull new type from param */
- vp = yasm_vps_next(vp);
- if (vp && !vp->val && (type = yasm_vp_id(vp))) {
- if (yasm__strcasecmp(type, "function") == 0)
- elf_sym_set_type(entry, STT_FUNC);
- else if (yasm__strcasecmp(type, "object") == 0)
- elf_sym_set_type(entry, STT_OBJECT);
- else if (yasm__strcasecmp(type, "tls_object") == 0)
- elf_sym_set_type(entry, STT_TLS);
- else if (yasm__strcasecmp(type, "notype") == 0)
- elf_sym_set_type(entry, STT_NOTYPE);
- else
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("unrecognized symbol type `%s'"), type);
- } else
- yasm_error_set(YASM_ERROR_SYNTAX, N_("no type specified"));
-}
-
-static void
-dir_size(yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_objfmt_elf *objfmt_elf = (yasm_objfmt_elf *)object->objfmt;
- yasm_valparam *vp = yasm_vps_first(valparams);
- const char *symname = yasm_vp_id(vp);
- /* Get symbol elf data */
- yasm_symrec *sym = yasm_symtab_use(object->symtab, symname, line);
- elf_symtab_entry *entry = yasm_symrec_get_data(sym, &elf_symrec_data);
- /*@only@*/ /*@null@*/ yasm_expr *size;
-
- /* Create entry if necessary */
- if (!entry) {
- entry = elf_symtab_entry_create(
- elf_strtab_append_str(objfmt_elf->strtab, symname), sym);
- yasm_symrec_add_data(sym, &elf_symrec_data, entry);
- }
-
- /* Pull new size from param */
- vp = yasm_vps_next(vp);
- if (vp && !vp->val && (size = yasm_vp_expr(vp, object->symtab, line)))
- elf_sym_set_size(entry, size);
- else
- yasm_error_set(YASM_ERROR_SYNTAX, N_("no size specified"));
-}
-
-static void
-dir_weak(yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_objfmt_elf *objfmt_elf = (yasm_objfmt_elf *)object->objfmt;
- yasm_valparam *vp = yasm_vps_first(valparams);
- const char *symname = yasm_vp_id(vp);
- yasm_symrec *sym = yasm_symtab_declare(object->symtab, symname,
- YASM_SYM_GLOBAL, line);
- elf_objfmt_symtab_append(objfmt_elf, sym, SHN_UNDEF, STB_WEAK, 0,
- STV_DEFAULT, NULL, NULL, object);
-}
-
-static void
-dir_ident(yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_valparamhead sect_vps;
- yasm_datavalhead dvs;
- yasm_section *comment;
- yasm_valparam *vp;
- yasm_valparam *vp2;
-
- /* Accept, but do nothing with empty ident */
- if (!valparams)
- return;
- vp = yasm_vps_first(valparams);
- if (!vp)
- return;
-
- /* Put ident data into .comment section */
- yasm_vps_initialize(&sect_vps);
- vp2 = yasm_vp_create_string(NULL, yasm__xstrdup(".comment"));
- yasm_vps_append(&sect_vps, vp2);
- comment = elf_objfmt_section_switch(object, &sect_vps, NULL, line);
- yasm_vps_delete(&sect_vps);
-
- /* To match GAS output, if the comment section is empty, put an
- * initial 0 byte in the section.
- */
- if (yasm_section_bcs_first(comment) == yasm_section_bcs_last(comment)) {
- yasm_dvs_initialize(&dvs);
- yasm_dvs_append(&dvs, yasm_dv_create_expr(
- yasm_expr_create_ident(
- yasm_expr_int(yasm_intnum_create_uint(0)), line)));
- yasm_section_bcs_append(comment,
- yasm_bc_create_data(&dvs, 1, 0, object->arch, line));
- }
-
- yasm_dvs_initialize(&dvs);
- do {
- const char *s = yasm_vp_string(vp);
- if (!s) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_(".comment requires string parameters"));
- yasm_dvs_delete(&dvs);
- return;
- }
- yasm_dvs_append(&dvs,
- yasm_dv_create_string(yasm__xstrdup(s), strlen(s)));
- } while ((vp = yasm_vps_next(vp)));
-
- yasm_section_bcs_append(comment,
- yasm_bc_create_data(&dvs, 1, 1, object->arch, line));
-}
-
-/* Define valid debug formats to use with this object format */
-static const char *elf_objfmt_dbgfmt_keywords[] = {
- "null",
- "stabs",
- "dwarf2",
- NULL
-};
-
-static const yasm_directive elf_objfmt_directives[] = {
- { ".type", "gas", dir_type, YASM_DIR_ID_REQUIRED },
- { ".size", "gas", dir_size, YASM_DIR_ID_REQUIRED },
- { ".weak", "gas", dir_weak, YASM_DIR_ID_REQUIRED },
- { ".ident", "gas", dir_ident, YASM_DIR_ANY },
- { "type", "nasm", dir_type, YASM_DIR_ID_REQUIRED },
- { "size", "nasm", dir_size, YASM_DIR_ID_REQUIRED },
- { "weak", "nasm", dir_weak, YASM_DIR_ID_REQUIRED },
- { "ident", "nasm", dir_ident, YASM_DIR_ANY },
- { NULL, NULL, NULL, 0 }
-};
-
-static const char *elf_nasm_stdmac[] = {
- "%imacro type 1+.nolist",
- "[type %1]",
- "%endmacro",
- "%imacro size 1+.nolist",
- "[size %1]",
- "%endmacro",
- "%imacro weak 1+.nolist",
- "[weak %1]",
- "%endmacro",
- NULL
-};
-
-static const yasm_stdmac elf_objfmt_stdmacs[] = {
- { "nasm", "nasm", elf_nasm_stdmac },
- { NULL, NULL, NULL }
-};
-
-/* Define objfmt structure -- see objfmt.h for details */
-yasm_objfmt_module yasm_elf_LTX_objfmt = {
- "ELF",
- "elf",
- "o",
- 32,
- 0,
- elf_objfmt_dbgfmt_keywords,
- "null",
- elf_objfmt_directives,
- elf_objfmt_stdmacs,
- elf_objfmt_create,
- elf_objfmt_output,
- elf_objfmt_destroy,
- elf_objfmt_add_default_section,
- elf_objfmt_init_new_section,
- elf_objfmt_section_switch,
- elf_objfmt_get_special_sym
-};
-
-yasm_objfmt_module yasm_elf32_LTX_objfmt = {
- "ELF (32-bit)",
- "elf32",
- "o",
- 32,
- 0,
- elf_objfmt_dbgfmt_keywords,
- "null",
- elf_objfmt_directives,
- elf_objfmt_stdmacs,
- elf32_objfmt_create,
- elf_objfmt_output,
- elf_objfmt_destroy,
- elf_objfmt_add_default_section,
- elf_objfmt_init_new_section,
- elf_objfmt_section_switch,
- elf_objfmt_get_special_sym
-};
-
-yasm_objfmt_module yasm_elf64_LTX_objfmt = {
- "ELF (64-bit)",
- "elf64",
- "o",
- 64,
- 0,
- elf_objfmt_dbgfmt_keywords,
- "null",
- elf_objfmt_directives,
- elf_objfmt_stdmacs,
- elf64_objfmt_create,
- elf_objfmt_output,
- elf_objfmt_destroy,
- elf_objfmt_add_default_section,
- elf_objfmt_init_new_section,
- elf_objfmt_section_switch,
- elf_objfmt_get_special_sym
-};
-
-yasm_objfmt_module yasm_elfx32_LTX_objfmt = {
- "ELF (x32)",
- "elfx32",
- "o",
- 64,
- 0,
- elf_objfmt_dbgfmt_keywords,
- "null",
- elf_objfmt_directives,
- elf_objfmt_stdmacs,
- elfx32_objfmt_create,
- elf_objfmt_output,
- elf_objfmt_destroy,
- elf_objfmt_add_default_section,
- elf_objfmt_init_new_section,
- elf_objfmt_section_switch,
- elf_objfmt_get_special_sym
-};
+
+ /* Allocate space for Ehdr by seeking forward */
+ if (fseek(f, (long)(elf_proghead_get_size()), SEEK_SET) < 0) {
+ yasm_error_set(YASM_ERROR_IO, N_("could not seek on output file"));
+ yasm_errwarn_propagate(errwarns, 0);
+ return;
+ }
+
+ /* add all (local) syms to symtab because relocation needs a symtab index
+ * if all_syms, register them by name. if not, use strtab entry 0 */
+ buildsym_info.object = object;
+ buildsym_info.objfmt_elf = objfmt_elf;
+ buildsym_info.errwarns = errwarns;
+ buildsym_info.local_names = all_syms;
+ yasm_symtab_traverse(object->symtab, &buildsym_info,
+ elf_objfmt_build_symtab);
+ elf_symtab_nlocal = elf_symtab_assign_indices(objfmt_elf->elf_symtab);
+
+ /* output known sections - includes reloc sections which aren't in yasm's
+ * list. Assign indices as we go. */
+ info.sindex = 3;
+ if (yasm_object_sections_traverse(object, &info,
+ elf_objfmt_output_section))
+ return;
+
+ /* add final sections to the shstrtab */
+ elf_strtab_name = elf_strtab_append_str(objfmt_elf->shstrtab, ".strtab");
+ elf_symtab_name = elf_strtab_append_str(objfmt_elf->shstrtab, ".symtab");
+ elf_shstrtab_name = elf_strtab_append_str(objfmt_elf->shstrtab,
+ ".shstrtab");
+
+ /* output .shstrtab */
+ if ((pos = elf_objfmt_output_align(f, 4)) == -1) {
+ yasm_errwarn_propagate(errwarns, 0);
+ return;
+ }
+ elf_shstrtab_offset = (unsigned long) pos;
+ elf_shstrtab_size = elf_strtab_output_to_file(f, objfmt_elf->shstrtab);
+
+ /* output .strtab */
+ if ((pos = elf_objfmt_output_align(f, 4)) == -1) {
+ yasm_errwarn_propagate(errwarns, 0);
+ return;
+ }
+ elf_strtab_offset = (unsigned long) pos;
+ elf_strtab_size = elf_strtab_output_to_file(f, objfmt_elf->strtab);
+
+ /* output .symtab - last section so all others have indexes */
+ if ((pos = elf_objfmt_output_align(f, 4)) == -1) {
+ yasm_errwarn_propagate(errwarns, 0);
+ return;
+ }
+ elf_symtab_offset = (unsigned long) pos;
+ elf_symtab_size = elf_symtab_write_to_file(f, objfmt_elf->elf_symtab,
+ errwarns);
+
+ /* output section header table */
+ if ((pos = elf_objfmt_output_align(f, 16)) == -1) {
+ yasm_errwarn_propagate(errwarns, 0);
+ return;
+ }
+ elf_shead_addr = (unsigned long) pos;
+
+ /* stabs debugging support */
+ if (strcmp(yasm_dbgfmt_keyword(object->dbgfmt), "stabs")==0) {
+ yasm_section *stabsect = yasm_object_find_general(object, ".stab");
+ yasm_section *stabstrsect =
+ yasm_object_find_general(object, ".stabstr");
+ if (stabsect && stabstrsect) {
+ elf_secthead *stab =
+ yasm_section_get_data(stabsect, &elf_section_data);
+ elf_secthead *stabstr =
+ yasm_section_get_data(stabstrsect, &elf_section_data);
+ if (stab && stabstr) {
+ elf_secthead_set_link(stab, elf_secthead_get_index(stabstr));
+ }
+ else
+ yasm_internal_error(N_("missing .stab or .stabstr section/data"));
+ }
+ }
+
+ /* output dummy section header - 0 */
+ info.sindex = 0;
+
+ esdn = elf_secthead_create(NULL, SHT_NULL, 0, 0, 0);
+ elf_secthead_set_index(esdn, 0);
+ elf_secthead_write_to_file(f, esdn, 0);
+ elf_secthead_destroy(esdn);
+
+ esdn = elf_secthead_create(elf_shstrtab_name, SHT_STRTAB, 0,
+ elf_shstrtab_offset, elf_shstrtab_size);
+ elf_secthead_set_index(esdn, 1);
+ elf_secthead_write_to_file(f, esdn, 1);
+ elf_secthead_destroy(esdn);
+
+ esdn = elf_secthead_create(elf_strtab_name, SHT_STRTAB, 0,
+ elf_strtab_offset, elf_strtab_size);
+ elf_secthead_set_index(esdn, 2);
+ elf_secthead_write_to_file(f, esdn, 2);
+ elf_secthead_destroy(esdn);
+
+ esdn = elf_secthead_create(elf_symtab_name, SHT_SYMTAB, 0,
+ elf_symtab_offset, elf_symtab_size);
+ elf_secthead_set_index(esdn, 3);
+ elf_secthead_set_info(esdn, elf_symtab_nlocal);
+ elf_secthead_set_link(esdn, 2); /* for .strtab, which is index 2 */
+ elf_secthead_write_to_file(f, esdn, 3);
+ elf_secthead_destroy(esdn);
+
+ info.sindex = 3;
+ /* output remaining section headers */
+ yasm_object_sections_traverse(object, &info, elf_objfmt_output_secthead);
+
+ /* output Ehdr */
+ if (fseek(f, 0, SEEK_SET) < 0) {
+ yasm_error_set(YASM_ERROR_IO, N_("could not seek on output file"));
+ yasm_errwarn_propagate(errwarns, 0);
+ return;
+ }
+
+ elf_proghead_write_to_file(f, elf_shead_addr, info.sindex+1, 1);
+}
+
+static void
+elf_objfmt_destroy(yasm_objfmt *objfmt)
+{
+ yasm_objfmt_elf *objfmt_elf = (yasm_objfmt_elf *)objfmt;
+ elf_symtab_destroy(objfmt_elf->elf_symtab);
+ elf_strtab_destroy(objfmt_elf->shstrtab);
+ elf_strtab_destroy(objfmt_elf->strtab);
+ yasm_xfree(objfmt);
+}
+
+static void
+elf_objfmt_init_new_section(yasm_section *sect, unsigned long line)
+{
+ yasm_object *object = yasm_section_get_object(sect);
+ const char *sectname = yasm_section_get_name(sect);
+ yasm_objfmt_elf *objfmt_elf = (yasm_objfmt_elf *)object->objfmt;
+ elf_secthead *esd;
+ yasm_symrec *sym;
+ elf_strtab_entry *name = elf_strtab_append_str(objfmt_elf->shstrtab,
+ sectname);
+
+ elf_section_type type=SHT_PROGBITS;
+ elf_size entsize=0;
+
+ if (yasm__strcasecmp(sectname, ".stab")==0) {
+ entsize = 12;
+ } else if (yasm__strcasecmp(sectname, ".stabstr")==0) {
+ type = SHT_STRTAB;
+ }
+
+ esd = elf_secthead_create(name, type, 0, 0, 0);
+ elf_secthead_set_entsize(esd, entsize);
+ yasm_section_add_data(sect, &elf_section_data, esd);
+ sym = yasm_symtab_define_label(object->symtab, sectname,
+ yasm_section_bcs_first(sect), 1, line);
+
+ elf_secthead_set_sym(esd, sym);
+}
+
+static yasm_section *
+elf_objfmt_add_default_section(yasm_object *object)
+{
+ yasm_section *retval;
+ int isnew;
+
+ retval = yasm_object_get_general(object, ".text", 16, 1, 0, &isnew, 0);
+ if (isnew)
+ {
+ elf_secthead *esd = yasm_section_get_data(retval, &elf_section_data);
+ elf_secthead_set_typeflags(esd, SHT_PROGBITS,
+ SHF_ALLOC + SHF_EXECINSTR);
+ yasm_section_set_default(retval, 1);
+ }
+ return retval;
+}
+
+struct elf_section_switch_data {
+ /*@only@*/ /*@null@*/ yasm_intnum *align_intn;
+ unsigned long flags;
+ unsigned long type;
+ int gasflags;
+ int stdsect;
+};
+
+/* GAS-style flags */
+static int
+elf_helper_gasflags(void *obj, yasm_valparam *vp, unsigned long line, void *d,
+ /*@unused@*/ uintptr_t arg)
+{
+ struct elf_section_switch_data *data = (struct elf_section_switch_data *)d;
+ const char *s = yasm_vp_string(vp);
+ size_t i;
+
+ if (!s) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("non-string section attribute"));
+ return -1;
+ }
+
+ if (data->stdsect && strlen(s) == 0) {
+ data->gasflags = 1;
+ return 0;
+ }
+
+ data->flags = 0;
+ for (i=0; i<strlen(s); i++) {
+ switch (s[i]) {
+ case 'a':
+ data->flags |= SHF_ALLOC;
+ break;
+ case 'w':
+ data->flags |= SHF_WRITE;
+ break;
+ case 'x':
+ data->flags |= SHF_EXECINSTR;
+ break;
+ case 'M':
+ data->flags |= SHF_MERGE;
+ break;
+ case 'S':
+ data->flags |= SHF_STRINGS;
+ break;
+ case 'G':
+ data->flags |= SHF_GROUP;
+ break;
+ case 'T':
+ data->flags |= SHF_TLS;
+ break;
+ default:
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("unrecognized section attribute: `%c'"),
+ s[i]);
+ }
+ }
+
+ data->gasflags = 1;
+ return 0;
+}
+
+static /*@observer@*/ /*@null@*/ yasm_section *
+elf_objfmt_section_switch(yasm_object *object, yasm_valparamhead *valparams,
+ /*@null@*/ yasm_valparamhead *objext_valparams,
+ unsigned long line)
+{
+ yasm_valparam *vp;
+ yasm_section *retval;
+ int isnew;
+ unsigned long align = 4;
+ int flags_override = 0;
+ const char *sectname;
+ int resonly = 0;
+
+ struct elf_section_switch_data data;
+
+ static const yasm_dir_help help[] = {
+ { "alloc", 0, yasm_dir_helper_flag_or,
+ offsetof(struct elf_section_switch_data, flags), SHF_ALLOC },
+ { "exec", 0, yasm_dir_helper_flag_or,
+ offsetof(struct elf_section_switch_data, flags), SHF_EXECINSTR },
+ { "write", 0, yasm_dir_helper_flag_or,
+ offsetof(struct elf_section_switch_data, flags), SHF_WRITE },
+ { "tls", 0, yasm_dir_helper_flag_or,
+ offsetof(struct elf_section_switch_data, flags), SHF_TLS },
+ { "progbits", 0, yasm_dir_helper_flag_set,
+ offsetof(struct elf_section_switch_data, type), SHT_PROGBITS },
+ { "noalloc", 0, yasm_dir_helper_flag_and,
+ offsetof(struct elf_section_switch_data, flags), SHF_ALLOC },
+ { "noexec", 0, yasm_dir_helper_flag_and,
+ offsetof(struct elf_section_switch_data, flags), SHF_EXECINSTR },
+ { "nowrite", 0, yasm_dir_helper_flag_and,
+ offsetof(struct elf_section_switch_data, flags), SHF_WRITE },
+ { "notls", 0, yasm_dir_helper_flag_and,
+ offsetof(struct elf_section_switch_data, flags), SHF_TLS },
+ { "noprogbits", 0, yasm_dir_helper_flag_set,
+ offsetof(struct elf_section_switch_data, type), SHT_NOBITS },
+ { "nobits", 0, yasm_dir_helper_flag_set,
+ offsetof(struct elf_section_switch_data, type), SHT_NOBITS },
+ { "gasflags", 1, elf_helper_gasflags, 0, 0 },
+ { "align", 1, yasm_dir_helper_intn,
+ offsetof(struct elf_section_switch_data, align_intn), 0 }
+ };
+ /*@only@*/ /*@null@*/ yasm_expr *merge_expr = NULL;
+ /*@dependent@*/ /*@null@*/ const yasm_intnum *merge_intn = NULL;
+ elf_secthead *esd;
+
+ data.align_intn = NULL;
+ data.flags = SHF_ALLOC;
+ data.type = SHT_PROGBITS;
+ data.gasflags = 0;
+ data.stdsect = 1;
+
+ vp = yasm_vps_first(valparams);
+ sectname = yasm_vp_string(vp);
+ if (!sectname)
+ return NULL;
+ vp = yasm_vps_next(vp);
+
+ if (strcmp(sectname, ".bss") == 0) {
+ data.type = SHT_NOBITS;
+ data.flags = SHF_ALLOC + SHF_WRITE;
+ resonly = 1;
+ } else if (strcmp(sectname, ".data") == 0) {
+ data.type = SHT_PROGBITS;
+ data.flags = SHF_ALLOC + SHF_WRITE;
+ } else if (strcmp(sectname, ".tdata") == 0) {
+ data.type = SHT_PROGBITS;
+ data.flags = SHF_ALLOC + SHF_WRITE + SHF_TLS;
+ } else if (strcmp(sectname, ".rodata") == 0) {
+ data.type = SHT_PROGBITS;
+ data.flags = SHF_ALLOC;
+ } else if (strcmp(sectname, ".text") == 0) {
+ align = 16;
+ data.type = SHT_PROGBITS;
+ data.flags = SHF_ALLOC + SHF_EXECINSTR;
+ } else if (strcmp(sectname, ".comment") == 0) {
+ align = 0;
+ data.type = SHT_PROGBITS;
+ data.flags = 0;
+ } else {
+ /* Default to code */
+ align = 1;
+ data.stdsect = 0;
+ }
+
+ flags_override = yasm_dir_helper(object, vp, line, help, NELEMS(help),
+ &data, yasm_dir_helper_valparam_warn);
+ if (flags_override < 0)
+ return NULL; /* error occurred */
+
+ if (data.align_intn) {
+ align = yasm_intnum_get_uint(data.align_intn);
+ yasm_intnum_destroy(data.align_intn);
+
+ /* Alignments must be a power of two. */
+ if (!is_exp2(align)) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("argument to `%s' is not a power of two"),
+ "align");
+ return NULL;
+ }
+ }
+
+ /* Handle merge entity size */
+ if (data.flags & SHF_MERGE) {
+ if (objext_valparams && (vp = yasm_vps_first(objext_valparams))
+ && !vp->val) {
+ if (!(merge_expr = yasm_vp_expr(vp, object->symtab, line)) ||
+ !(merge_intn = yasm_expr_get_intnum(&merge_expr, 0)))
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("invalid merge entity size"));
+ } else {
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("entity size for SHF_MERGE not specified"));
+ data.flags &= ~SHF_MERGE;
+ }
+ }
+
+ retval = yasm_object_get_general(object, sectname, align,
+ (data.flags & SHF_EXECINSTR) != 0,
+ resonly, &isnew, line);
+
+ esd = yasm_section_get_data(retval, &elf_section_data);
+
+ if (isnew || yasm_section_is_default(retval)) {
+ yasm_section_set_default(retval, 0);
+ elf_secthead_set_typeflags(esd, data.type, data.flags);
+ if (merge_intn)
+ elf_secthead_set_entsize(esd, yasm_intnum_get_uint(merge_intn));
+ yasm_section_set_align(retval, align, line);
+ } else if (flags_override && !data.gasflags)
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("section flags ignored on section redeclaration"));
+ if (merge_expr)
+ yasm_expr_destroy(merge_expr);
+ return retval;
+}
+
+static /*@observer@*/ /*@null@*/ yasm_symrec *
+elf_objfmt_get_special_sym(yasm_object *object, const char *name,
+ const char *parser)
+{
+ if (yasm__strcasecmp(name, "sym") == 0) {
+ yasm_objfmt_elf *objfmt_elf = (yasm_objfmt_elf *)object->objfmt;
+ return objfmt_elf->dotdotsym;
+ }
+ return elf_get_special_sym(name, parser);
+}
+
+static void
+dir_type(yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_objfmt_elf *objfmt_elf = (yasm_objfmt_elf *)object->objfmt;
+ yasm_valparam *vp = yasm_vps_first(valparams);
+ const char *symname = yasm_vp_id(vp);
+ /* Get symbol elf data */
+ yasm_symrec *sym = yasm_symtab_use(object->symtab, symname, line);
+ elf_symtab_entry *entry = yasm_symrec_get_data(sym, &elf_symrec_data);
+ /*@null@*/ const char *type;
+
+ /* Create entry if necessary */
+ if (!entry) {
+ entry = elf_symtab_entry_create(
+ elf_strtab_append_str(objfmt_elf->strtab, symname), sym);
+ yasm_symrec_add_data(sym, &elf_symrec_data, entry);
+ }
+
+ /* Pull new type from param */
+ vp = yasm_vps_next(vp);
+ if (vp && !vp->val && (type = yasm_vp_id(vp))) {
+ if (yasm__strcasecmp(type, "function") == 0)
+ elf_sym_set_type(entry, STT_FUNC);
+ else if (yasm__strcasecmp(type, "object") == 0)
+ elf_sym_set_type(entry, STT_OBJECT);
+ else if (yasm__strcasecmp(type, "tls_object") == 0)
+ elf_sym_set_type(entry, STT_TLS);
+ else if (yasm__strcasecmp(type, "notype") == 0)
+ elf_sym_set_type(entry, STT_NOTYPE);
+ else
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("unrecognized symbol type `%s'"), type);
+ } else
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("no type specified"));
+}
+
+static void
+dir_size(yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_objfmt_elf *objfmt_elf = (yasm_objfmt_elf *)object->objfmt;
+ yasm_valparam *vp = yasm_vps_first(valparams);
+ const char *symname = yasm_vp_id(vp);
+ /* Get symbol elf data */
+ yasm_symrec *sym = yasm_symtab_use(object->symtab, symname, line);
+ elf_symtab_entry *entry = yasm_symrec_get_data(sym, &elf_symrec_data);
+ /*@only@*/ /*@null@*/ yasm_expr *size;
+
+ /* Create entry if necessary */
+ if (!entry) {
+ entry = elf_symtab_entry_create(
+ elf_strtab_append_str(objfmt_elf->strtab, symname), sym);
+ yasm_symrec_add_data(sym, &elf_symrec_data, entry);
+ }
+
+ /* Pull new size from param */
+ vp = yasm_vps_next(vp);
+ if (vp && !vp->val && (size = yasm_vp_expr(vp, object->symtab, line)))
+ elf_sym_set_size(entry, size);
+ else
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("no size specified"));
+}
+
+static void
+dir_weak(yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_objfmt_elf *objfmt_elf = (yasm_objfmt_elf *)object->objfmt;
+ yasm_valparam *vp = yasm_vps_first(valparams);
+ const char *symname = yasm_vp_id(vp);
+ yasm_symrec *sym = yasm_symtab_declare(object->symtab, symname,
+ YASM_SYM_GLOBAL, line);
+ elf_objfmt_symtab_append(objfmt_elf, sym, SHN_UNDEF, STB_WEAK, 0,
+ STV_DEFAULT, NULL, NULL, object);
+}
+
+static void
+dir_ident(yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_valparamhead sect_vps;
+ yasm_datavalhead dvs;
+ yasm_section *comment;
+ yasm_valparam *vp;
+ yasm_valparam *vp2;
+
+ /* Accept, but do nothing with empty ident */
+ if (!valparams)
+ return;
+ vp = yasm_vps_first(valparams);
+ if (!vp)
+ return;
+
+ /* Put ident data into .comment section */
+ yasm_vps_initialize(&sect_vps);
+ vp2 = yasm_vp_create_string(NULL, yasm__xstrdup(".comment"));
+ yasm_vps_append(&sect_vps, vp2);
+ comment = elf_objfmt_section_switch(object, &sect_vps, NULL, line);
+ yasm_vps_delete(&sect_vps);
+
+ /* To match GAS output, if the comment section is empty, put an
+ * initial 0 byte in the section.
+ */
+ if (yasm_section_bcs_first(comment) == yasm_section_bcs_last(comment)) {
+ yasm_dvs_initialize(&dvs);
+ yasm_dvs_append(&dvs, yasm_dv_create_expr(
+ yasm_expr_create_ident(
+ yasm_expr_int(yasm_intnum_create_uint(0)), line)));
+ yasm_section_bcs_append(comment,
+ yasm_bc_create_data(&dvs, 1, 0, object->arch, line));
+ }
+
+ yasm_dvs_initialize(&dvs);
+ do {
+ const char *s = yasm_vp_string(vp);
+ if (!s) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_(".comment requires string parameters"));
+ yasm_dvs_delete(&dvs);
+ return;
+ }
+ yasm_dvs_append(&dvs,
+ yasm_dv_create_string(yasm__xstrdup(s), strlen(s)));
+ } while ((vp = yasm_vps_next(vp)));
+
+ yasm_section_bcs_append(comment,
+ yasm_bc_create_data(&dvs, 1, 1, object->arch, line));
+}
+
+/* Define valid debug formats to use with this object format */
+static const char *elf_objfmt_dbgfmt_keywords[] = {
+ "null",
+ "stabs",
+ "dwarf2",
+ NULL
+};
+
+static const yasm_directive elf_objfmt_directives[] = {
+ { ".type", "gas", dir_type, YASM_DIR_ID_REQUIRED },
+ { ".size", "gas", dir_size, YASM_DIR_ID_REQUIRED },
+ { ".weak", "gas", dir_weak, YASM_DIR_ID_REQUIRED },
+ { ".ident", "gas", dir_ident, YASM_DIR_ANY },
+ { "type", "nasm", dir_type, YASM_DIR_ID_REQUIRED },
+ { "size", "nasm", dir_size, YASM_DIR_ID_REQUIRED },
+ { "weak", "nasm", dir_weak, YASM_DIR_ID_REQUIRED },
+ { "ident", "nasm", dir_ident, YASM_DIR_ANY },
+ { NULL, NULL, NULL, 0 }
+};
+
+static const char *elf_nasm_stdmac[] = {
+ "%imacro type 1+.nolist",
+ "[type %1]",
+ "%endmacro",
+ "%imacro size 1+.nolist",
+ "[size %1]",
+ "%endmacro",
+ "%imacro weak 1+.nolist",
+ "[weak %1]",
+ "%endmacro",
+ NULL
+};
+
+static const yasm_stdmac elf_objfmt_stdmacs[] = {
+ { "nasm", "nasm", elf_nasm_stdmac },
+ { NULL, NULL, NULL }
+};
+
+/* Define objfmt structure -- see objfmt.h for details */
+yasm_objfmt_module yasm_elf_LTX_objfmt = {
+ "ELF",
+ "elf",
+ "o",
+ 32,
+ 0,
+ elf_objfmt_dbgfmt_keywords,
+ "null",
+ elf_objfmt_directives,
+ elf_objfmt_stdmacs,
+ elf_objfmt_create,
+ elf_objfmt_output,
+ elf_objfmt_destroy,
+ elf_objfmt_add_default_section,
+ elf_objfmt_init_new_section,
+ elf_objfmt_section_switch,
+ elf_objfmt_get_special_sym
+};
+
+yasm_objfmt_module yasm_elf32_LTX_objfmt = {
+ "ELF (32-bit)",
+ "elf32",
+ "o",
+ 32,
+ 0,
+ elf_objfmt_dbgfmt_keywords,
+ "null",
+ elf_objfmt_directives,
+ elf_objfmt_stdmacs,
+ elf32_objfmt_create,
+ elf_objfmt_output,
+ elf_objfmt_destroy,
+ elf_objfmt_add_default_section,
+ elf_objfmt_init_new_section,
+ elf_objfmt_section_switch,
+ elf_objfmt_get_special_sym
+};
+
+yasm_objfmt_module yasm_elf64_LTX_objfmt = {
+ "ELF (64-bit)",
+ "elf64",
+ "o",
+ 64,
+ 0,
+ elf_objfmt_dbgfmt_keywords,
+ "null",
+ elf_objfmt_directives,
+ elf_objfmt_stdmacs,
+ elf64_objfmt_create,
+ elf_objfmt_output,
+ elf_objfmt_destroy,
+ elf_objfmt_add_default_section,
+ elf_objfmt_init_new_section,
+ elf_objfmt_section_switch,
+ elf_objfmt_get_special_sym
+};
+
+yasm_objfmt_module yasm_elfx32_LTX_objfmt = {
+ "ELF (x32)",
+ "elfx32",
+ "o",
+ 64,
+ 0,
+ elf_objfmt_dbgfmt_keywords,
+ "null",
+ elf_objfmt_directives,
+ elf_objfmt_stdmacs,
+ elfx32_objfmt_create,
+ elf_objfmt_output,
+ elf_objfmt_destroy,
+ elf_objfmt_add_default_section,
+ elf_objfmt_init_new_section,
+ elf_objfmt_section_switch,
+ elf_objfmt_get_special_sym
+};
diff --git a/contrib/tools/yasm/modules/objfmts/elf/elf-x86-amd64.c b/contrib/tools/yasm/modules/objfmts/elf/elf-x86-amd64.c
index 5384b768ed..3ba376af03 100644
--- a/contrib/tools/yasm/modules/objfmts/elf/elf-x86-amd64.c
+++ b/contrib/tools/yasm/modules/objfmts/elf/elf-x86-amd64.c
@@ -1,256 +1,256 @@
-/*
- * ELF object format helpers - x86:amd64
- *
- * Copyright (C) 2004-2007 Michael Urman
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <util.h>
-
-#include <libyasm.h>
-#define YASM_OBJFMT_ELF_INTERNAL
-#include "elf.h"
-#include "elf-machine.h"
-
-static elf_machine_ssym elf_x86_amd64_ssyms[] = {
- {"pltoff", ELF_SSYM_SYM_RELATIVE, R_X86_64_PLTOFF64, 64},
- {"plt", ELF_SSYM_SYM_RELATIVE, R_X86_64_PLT32, 32},
- {"gotplt", ELF_SSYM_SYM_RELATIVE, R_X86_64_GOTPLT64, 64},
- {"gotoff", ELF_SSYM_SYM_RELATIVE, R_X86_64_GOTOFF64, 64},
- {"gotpcrel", ELF_SSYM_SYM_RELATIVE, R_X86_64_GOTPCREL, 32},
- {"tlsgd", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
- R_X86_64_TLSGD, 32},
- {"tlsld", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
- R_X86_64_TLSLD, 32},
- {"gottpoff", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
- R_X86_64_GOTTPOFF, 32},
- {"tpoff", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
- R_X86_64_TPOFF32, 32},
- {"dtpoff", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
- R_X86_64_DTPOFF32, 32},
- {"got", ELF_SSYM_SYM_RELATIVE, R_X86_64_GOT32, 32},
- {"tlsdesc", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
- R_X86_64_GOTPC32_TLSDESC, 32},
- {"tlscall", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
- R_X86_64_TLSDESC_CALL, 32}
-};
-
-static int
-elf_x86_amd64_accepts_reloc(size_t val, yasm_symrec *wrt)
-{
- if (wrt) {
- const elf_machine_ssym *ssym = (elf_machine_ssym *)
- yasm_symrec_get_data(wrt, &elf_ssym_symrec_data);
- if (!ssym || val != ssym->size)
- return 0;
- return 1;
- }
- return (val&(val-1)) ? 0 : ((val & (8|16|32|64)) != 0);
-}
-
-static void
-elf_x86_amd64_write_symtab_entry(unsigned char *bufp,
- elf_symtab_entry *entry,
- yasm_intnum *value_intn,
- yasm_intnum *size_intn)
-{
- YASM_WRITE_32_L(bufp, entry->name ? entry->name->index : 0);
- YASM_WRITE_8(bufp, ELF64_ST_INFO(entry->bind, entry->type));
- YASM_WRITE_8(bufp, ELF64_ST_OTHER(entry->vis));
- if (entry->sect) {
- elf_secthead *shead =
- yasm_section_get_data(entry->sect, &elf_section_data);
- if (!shead)
- yasm_internal_error(N_("symbol references section without data"));
- YASM_WRITE_16_L(bufp, shead->index);
- } else {
- YASM_WRITE_16_L(bufp, entry->index);
- }
- YASM_WRITE_64I_L(bufp, value_intn);
- YASM_WRITE_64I_L(bufp, size_intn);
-}
-
-static void
-elf_x86_amd64_write_secthead(unsigned char *bufp, elf_secthead *shead)
-{
- YASM_WRITE_32_L(bufp, shead->name ? shead->name->index : 0);
- YASM_WRITE_32_L(bufp, shead->type);
- YASM_WRITE_64Z_L(bufp, shead->flags);
- YASM_WRITE_64Z_L(bufp, 0); /* vmem address */
- YASM_WRITE_64Z_L(bufp, shead->offset);
- YASM_WRITE_64I_L(bufp, shead->size);
-
- YASM_WRITE_32_L(bufp, shead->link);
- YASM_WRITE_32_L(bufp, shead->info);
-
- YASM_WRITE_64Z_L(bufp, shead->align);
- YASM_WRITE_64Z_L(bufp, shead->entsize);
-}
-
-static void
-elf_x86_amd64_write_secthead_rel(unsigned char *bufp,
- elf_secthead *shead,
- elf_section_index symtab_idx,
- elf_section_index sindex)
-{
- yasm_intnum *nreloc;
- yasm_intnum *relocsize;
-
- YASM_WRITE_32_L(bufp, shead->rel_name ? shead->rel_name->index : 0);
- YASM_WRITE_32_L(bufp, SHT_RELA);
- YASM_WRITE_64Z_L(bufp, 0);
- YASM_WRITE_64Z_L(bufp, 0);
- YASM_WRITE_64Z_L(bufp, shead->rel_offset);
-
- nreloc = yasm_intnum_create_uint(shead->nreloc);
- relocsize = yasm_intnum_create_uint(RELOC64A_SIZE);
- yasm_intnum_calc(relocsize, YASM_EXPR_MUL, nreloc);
- YASM_WRITE_64I_L(bufp, relocsize); /* size */
- yasm_intnum_destroy(nreloc);
- yasm_intnum_destroy(relocsize);
-
- YASM_WRITE_32_L(bufp, symtab_idx); /* link: symtab index */
- YASM_WRITE_32_L(bufp, shead->index); /* info: relocated's index */
- YASM_WRITE_64Z_L(bufp, RELOC64_ALIGN); /* align */
- YASM_WRITE_64Z_L(bufp, RELOC64A_SIZE); /* entity size */
-}
-
-static void
-elf_x86_amd64_handle_reloc_addend(yasm_intnum *intn,
- elf_reloc_entry *reloc,
- unsigned long offset)
-{
- /* .rela: copy value out as addend, replace original with 0 */
- reloc->addend = yasm_intnum_copy(intn);
- yasm_intnum_zero(intn);
-}
-
-static unsigned int
-elf_x86_amd64_map_reloc_info_to_type(elf_reloc_entry *reloc)
-{
- if (reloc->wrt) {
- const elf_machine_ssym *ssym = (elf_machine_ssym *)
- yasm_symrec_get_data(reloc->wrt, &elf_ssym_symrec_data);
- if (!ssym || reloc->valsize != ssym->size)
- yasm_internal_error(N_("Unsupported WRT"));
-
- /* Force TLS type; this is required by the linker. */
- if (ssym->sym_rel & ELF_SSYM_THREAD_LOCAL) {
- elf_symtab_entry *esym;
-
- esym = yasm_symrec_get_data(reloc->reloc.sym, &elf_symrec_data);
- if (esym)
- esym->type = STT_TLS;
- }
- /* Map PC-relative GOT to appropriate relocation */
- if (reloc->rtype_rel && ssym->reloc == R_X86_64_GOT32)
- return (unsigned char) R_X86_64_GOTPCREL;
- return (unsigned char) ssym->reloc;
- } else if (reloc->is_GOT_sym && reloc->valsize == 32) {
- return (unsigned char) R_X86_64_GOTPC32;
- } else if (reloc->is_GOT_sym && reloc->valsize == 64) {
- return (unsigned char) R_X86_64_GOTPC64;
- } else if (reloc->rtype_rel) {
- switch (reloc->valsize) {
- case 8: return (unsigned char) R_X86_64_PC8;
- case 16: return (unsigned char) R_X86_64_PC16;
- case 32: return (unsigned char) R_X86_64_PC32;
- case 64: return (unsigned char) R_X86_64_PC64;
- default: yasm_internal_error(N_("Unsupported relocation size"));
- }
- } else {
- switch (reloc->valsize) {
- case 8: return (unsigned char) R_X86_64_8;
- case 16: return (unsigned char) R_X86_64_16;
- case 32: return (unsigned char) R_X86_64_32;
- case 64: return (unsigned char) R_X86_64_64;
- default: yasm_internal_error(N_("Unsupported relocation size"));
- }
- }
- return 0;
-}
-
-static void
-elf_x86_amd64_write_reloc(unsigned char *bufp, elf_reloc_entry *reloc,
- unsigned int r_type, unsigned int r_sym)
-{
- YASM_WRITE_64I_L(bufp, reloc->reloc.addr);
- /*YASM_WRITE_64_L(bufp, ELF64_R_INFO(r_sym, r_type));*/
- YASM_WRITE_64C_L(bufp, r_sym, r_type);
- if (reloc->addend)
- YASM_WRITE_64I_L(bufp, reloc->addend);
- else {
- YASM_WRITE_32_L(bufp, 0);
- YASM_WRITE_32_L(bufp, 0);
- }
-}
-
-static void
-elf_x86_amd64_write_proghead(unsigned char **bufpp,
- elf_offset secthead_addr,
- unsigned long secthead_count,
- elf_section_index shstrtab_index)
-{
- unsigned char *bufp = *bufpp;
- unsigned char *buf = bufp-4;
- YASM_WRITE_8(bufp, ELFCLASS64); /* elf class */
- YASM_WRITE_8(bufp, ELFDATA2LSB); /* data encoding :: MSB? */
- YASM_WRITE_8(bufp, EV_CURRENT); /* elf version */
- YASM_WRITE_8(bufp, ELFOSABI_SYSV); /* os/abi */
- YASM_WRITE_8(bufp, 0); /* SYSV v3 ABI=0 */
- while (bufp-buf < EI_NIDENT) /* e_ident padding */
- YASM_WRITE_8(bufp, 0);
-
- YASM_WRITE_16_L(bufp, ET_REL); /* e_type - object file */
- YASM_WRITE_16_L(bufp, EM_X86_64); /* e_machine - or others */
- YASM_WRITE_32_L(bufp, EV_CURRENT); /* elf version */
- YASM_WRITE_64Z_L(bufp, 0); /* e_entry */
- YASM_WRITE_64Z_L(bufp, 0); /* e_phoff */
- YASM_WRITE_64Z_L(bufp, secthead_addr); /* e_shoff secthead off */
-
- YASM_WRITE_32_L(bufp, 0); /* e_flags */
- YASM_WRITE_16_L(bufp, EHDR64_SIZE); /* e_ehsize */
- YASM_WRITE_16_L(bufp, 0); /* e_phentsize */
- YASM_WRITE_16_L(bufp, 0); /* e_phnum */
- YASM_WRITE_16_L(bufp, SHDR64_SIZE); /* e_shentsize */
- YASM_WRITE_16_L(bufp, secthead_count); /* e_shnum */
- YASM_WRITE_16_L(bufp, shstrtab_index); /* e_shstrndx */
- *bufpp = bufp;
-}
-
-const elf_machine_handler
-elf_machine_handler_x86_amd64 = {
- "x86", "amd64", ".rela",
- SYMTAB64_SIZE, SYMTAB64_ALIGN, RELOC64A_SIZE, SHDR64_SIZE, EHDR64_SIZE,
- elf_x86_amd64_accepts_reloc,
- elf_x86_amd64_write_symtab_entry,
- elf_x86_amd64_write_secthead,
- elf_x86_amd64_write_secthead_rel,
- elf_x86_amd64_handle_reloc_addend,
- elf_x86_amd64_map_reloc_info_to_type,
- elf_x86_amd64_write_reloc,
- elf_x86_amd64_write_proghead,
- elf_x86_amd64_ssyms,
- sizeof(elf_x86_amd64_ssyms)/sizeof(elf_x86_amd64_ssyms[0]),
- 64
-};
+/*
+ * ELF object format helpers - x86:amd64
+ *
+ * Copyright (C) 2004-2007 Michael Urman
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <util.h>
+
+#include <libyasm.h>
+#define YASM_OBJFMT_ELF_INTERNAL
+#include "elf.h"
+#include "elf-machine.h"
+
+static elf_machine_ssym elf_x86_amd64_ssyms[] = {
+ {"pltoff", ELF_SSYM_SYM_RELATIVE, R_X86_64_PLTOFF64, 64},
+ {"plt", ELF_SSYM_SYM_RELATIVE, R_X86_64_PLT32, 32},
+ {"gotplt", ELF_SSYM_SYM_RELATIVE, R_X86_64_GOTPLT64, 64},
+ {"gotoff", ELF_SSYM_SYM_RELATIVE, R_X86_64_GOTOFF64, 64},
+ {"gotpcrel", ELF_SSYM_SYM_RELATIVE, R_X86_64_GOTPCREL, 32},
+ {"tlsgd", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
+ R_X86_64_TLSGD, 32},
+ {"tlsld", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
+ R_X86_64_TLSLD, 32},
+ {"gottpoff", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
+ R_X86_64_GOTTPOFF, 32},
+ {"tpoff", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
+ R_X86_64_TPOFF32, 32},
+ {"dtpoff", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
+ R_X86_64_DTPOFF32, 32},
+ {"got", ELF_SSYM_SYM_RELATIVE, R_X86_64_GOT32, 32},
+ {"tlsdesc", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
+ R_X86_64_GOTPC32_TLSDESC, 32},
+ {"tlscall", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
+ R_X86_64_TLSDESC_CALL, 32}
+};
+
+static int
+elf_x86_amd64_accepts_reloc(size_t val, yasm_symrec *wrt)
+{
+ if (wrt) {
+ const elf_machine_ssym *ssym = (elf_machine_ssym *)
+ yasm_symrec_get_data(wrt, &elf_ssym_symrec_data);
+ if (!ssym || val != ssym->size)
+ return 0;
+ return 1;
+ }
+ return (val&(val-1)) ? 0 : ((val & (8|16|32|64)) != 0);
+}
+
+static void
+elf_x86_amd64_write_symtab_entry(unsigned char *bufp,
+ elf_symtab_entry *entry,
+ yasm_intnum *value_intn,
+ yasm_intnum *size_intn)
+{
+ YASM_WRITE_32_L(bufp, entry->name ? entry->name->index : 0);
+ YASM_WRITE_8(bufp, ELF64_ST_INFO(entry->bind, entry->type));
+ YASM_WRITE_8(bufp, ELF64_ST_OTHER(entry->vis));
+ if (entry->sect) {
+ elf_secthead *shead =
+ yasm_section_get_data(entry->sect, &elf_section_data);
+ if (!shead)
+ yasm_internal_error(N_("symbol references section without data"));
+ YASM_WRITE_16_L(bufp, shead->index);
+ } else {
+ YASM_WRITE_16_L(bufp, entry->index);
+ }
+ YASM_WRITE_64I_L(bufp, value_intn);
+ YASM_WRITE_64I_L(bufp, size_intn);
+}
+
+static void
+elf_x86_amd64_write_secthead(unsigned char *bufp, elf_secthead *shead)
+{
+ YASM_WRITE_32_L(bufp, shead->name ? shead->name->index : 0);
+ YASM_WRITE_32_L(bufp, shead->type);
+ YASM_WRITE_64Z_L(bufp, shead->flags);
+ YASM_WRITE_64Z_L(bufp, 0); /* vmem address */
+ YASM_WRITE_64Z_L(bufp, shead->offset);
+ YASM_WRITE_64I_L(bufp, shead->size);
+
+ YASM_WRITE_32_L(bufp, shead->link);
+ YASM_WRITE_32_L(bufp, shead->info);
+
+ YASM_WRITE_64Z_L(bufp, shead->align);
+ YASM_WRITE_64Z_L(bufp, shead->entsize);
+}
+
+static void
+elf_x86_amd64_write_secthead_rel(unsigned char *bufp,
+ elf_secthead *shead,
+ elf_section_index symtab_idx,
+ elf_section_index sindex)
+{
+ yasm_intnum *nreloc;
+ yasm_intnum *relocsize;
+
+ YASM_WRITE_32_L(bufp, shead->rel_name ? shead->rel_name->index : 0);
+ YASM_WRITE_32_L(bufp, SHT_RELA);
+ YASM_WRITE_64Z_L(bufp, 0);
+ YASM_WRITE_64Z_L(bufp, 0);
+ YASM_WRITE_64Z_L(bufp, shead->rel_offset);
+
+ nreloc = yasm_intnum_create_uint(shead->nreloc);
+ relocsize = yasm_intnum_create_uint(RELOC64A_SIZE);
+ yasm_intnum_calc(relocsize, YASM_EXPR_MUL, nreloc);
+ YASM_WRITE_64I_L(bufp, relocsize); /* size */
+ yasm_intnum_destroy(nreloc);
+ yasm_intnum_destroy(relocsize);
+
+ YASM_WRITE_32_L(bufp, symtab_idx); /* link: symtab index */
+ YASM_WRITE_32_L(bufp, shead->index); /* info: relocated's index */
+ YASM_WRITE_64Z_L(bufp, RELOC64_ALIGN); /* align */
+ YASM_WRITE_64Z_L(bufp, RELOC64A_SIZE); /* entity size */
+}
+
+static void
+elf_x86_amd64_handle_reloc_addend(yasm_intnum *intn,
+ elf_reloc_entry *reloc,
+ unsigned long offset)
+{
+ /* .rela: copy value out as addend, replace original with 0 */
+ reloc->addend = yasm_intnum_copy(intn);
+ yasm_intnum_zero(intn);
+}
+
+static unsigned int
+elf_x86_amd64_map_reloc_info_to_type(elf_reloc_entry *reloc)
+{
+ if (reloc->wrt) {
+ const elf_machine_ssym *ssym = (elf_machine_ssym *)
+ yasm_symrec_get_data(reloc->wrt, &elf_ssym_symrec_data);
+ if (!ssym || reloc->valsize != ssym->size)
+ yasm_internal_error(N_("Unsupported WRT"));
+
+ /* Force TLS type; this is required by the linker. */
+ if (ssym->sym_rel & ELF_SSYM_THREAD_LOCAL) {
+ elf_symtab_entry *esym;
+
+ esym = yasm_symrec_get_data(reloc->reloc.sym, &elf_symrec_data);
+ if (esym)
+ esym->type = STT_TLS;
+ }
+ /* Map PC-relative GOT to appropriate relocation */
+ if (reloc->rtype_rel && ssym->reloc == R_X86_64_GOT32)
+ return (unsigned char) R_X86_64_GOTPCREL;
+ return (unsigned char) ssym->reloc;
+ } else if (reloc->is_GOT_sym && reloc->valsize == 32) {
+ return (unsigned char) R_X86_64_GOTPC32;
+ } else if (reloc->is_GOT_sym && reloc->valsize == 64) {
+ return (unsigned char) R_X86_64_GOTPC64;
+ } else if (reloc->rtype_rel) {
+ switch (reloc->valsize) {
+ case 8: return (unsigned char) R_X86_64_PC8;
+ case 16: return (unsigned char) R_X86_64_PC16;
+ case 32: return (unsigned char) R_X86_64_PC32;
+ case 64: return (unsigned char) R_X86_64_PC64;
+ default: yasm_internal_error(N_("Unsupported relocation size"));
+ }
+ } else {
+ switch (reloc->valsize) {
+ case 8: return (unsigned char) R_X86_64_8;
+ case 16: return (unsigned char) R_X86_64_16;
+ case 32: return (unsigned char) R_X86_64_32;
+ case 64: return (unsigned char) R_X86_64_64;
+ default: yasm_internal_error(N_("Unsupported relocation size"));
+ }
+ }
+ return 0;
+}
+
+static void
+elf_x86_amd64_write_reloc(unsigned char *bufp, elf_reloc_entry *reloc,
+ unsigned int r_type, unsigned int r_sym)
+{
+ YASM_WRITE_64I_L(bufp, reloc->reloc.addr);
+ /*YASM_WRITE_64_L(bufp, ELF64_R_INFO(r_sym, r_type));*/
+ YASM_WRITE_64C_L(bufp, r_sym, r_type);
+ if (reloc->addend)
+ YASM_WRITE_64I_L(bufp, reloc->addend);
+ else {
+ YASM_WRITE_32_L(bufp, 0);
+ YASM_WRITE_32_L(bufp, 0);
+ }
+}
+
+static void
+elf_x86_amd64_write_proghead(unsigned char **bufpp,
+ elf_offset secthead_addr,
+ unsigned long secthead_count,
+ elf_section_index shstrtab_index)
+{
+ unsigned char *bufp = *bufpp;
+ unsigned char *buf = bufp-4;
+ YASM_WRITE_8(bufp, ELFCLASS64); /* elf class */
+ YASM_WRITE_8(bufp, ELFDATA2LSB); /* data encoding :: MSB? */
+ YASM_WRITE_8(bufp, EV_CURRENT); /* elf version */
+ YASM_WRITE_8(bufp, ELFOSABI_SYSV); /* os/abi */
+ YASM_WRITE_8(bufp, 0); /* SYSV v3 ABI=0 */
+ while (bufp-buf < EI_NIDENT) /* e_ident padding */
+ YASM_WRITE_8(bufp, 0);
+
+ YASM_WRITE_16_L(bufp, ET_REL); /* e_type - object file */
+ YASM_WRITE_16_L(bufp, EM_X86_64); /* e_machine - or others */
+ YASM_WRITE_32_L(bufp, EV_CURRENT); /* elf version */
+ YASM_WRITE_64Z_L(bufp, 0); /* e_entry */
+ YASM_WRITE_64Z_L(bufp, 0); /* e_phoff */
+ YASM_WRITE_64Z_L(bufp, secthead_addr); /* e_shoff secthead off */
+
+ YASM_WRITE_32_L(bufp, 0); /* e_flags */
+ YASM_WRITE_16_L(bufp, EHDR64_SIZE); /* e_ehsize */
+ YASM_WRITE_16_L(bufp, 0); /* e_phentsize */
+ YASM_WRITE_16_L(bufp, 0); /* e_phnum */
+ YASM_WRITE_16_L(bufp, SHDR64_SIZE); /* e_shentsize */
+ YASM_WRITE_16_L(bufp, secthead_count); /* e_shnum */
+ YASM_WRITE_16_L(bufp, shstrtab_index); /* e_shstrndx */
+ *bufpp = bufp;
+}
+
+const elf_machine_handler
+elf_machine_handler_x86_amd64 = {
+ "x86", "amd64", ".rela",
+ SYMTAB64_SIZE, SYMTAB64_ALIGN, RELOC64A_SIZE, SHDR64_SIZE, EHDR64_SIZE,
+ elf_x86_amd64_accepts_reloc,
+ elf_x86_amd64_write_symtab_entry,
+ elf_x86_amd64_write_secthead,
+ elf_x86_amd64_write_secthead_rel,
+ elf_x86_amd64_handle_reloc_addend,
+ elf_x86_amd64_map_reloc_info_to_type,
+ elf_x86_amd64_write_reloc,
+ elf_x86_amd64_write_proghead,
+ elf_x86_amd64_ssyms,
+ sizeof(elf_x86_amd64_ssyms)/sizeof(elf_x86_amd64_ssyms[0]),
+ 64
+};
diff --git a/contrib/tools/yasm/modules/objfmts/elf/elf-x86-x32.c b/contrib/tools/yasm/modules/objfmts/elf/elf-x86-x32.c
index aad2d10dac..40a25a12a7 100644
--- a/contrib/tools/yasm/modules/objfmts/elf/elf-x86-x32.c
+++ b/contrib/tools/yasm/modules/objfmts/elf/elf-x86-x32.c
@@ -1,251 +1,251 @@
-/*
- * ELF object format helpers - x86:x32
- *
- * Copyright (C) 2012 Michael Urman and H.J. Lu
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <util.h>
-
-#include <libyasm.h>
-#define YASM_OBJFMT_ELF_INTERNAL
-#include "elf.h"
-#include "elf-machine.h"
-
-static elf_machine_ssym elf_x86_x32_ssyms[] = {
- {"plt", ELF_SSYM_SYM_RELATIVE, R_X86_64_PLT32, 32},
- {"gotpcrel", ELF_SSYM_SYM_RELATIVE, R_X86_64_GOTPCREL, 32},
- {"tlsgd", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
- R_X86_64_TLSGD, 32},
- {"tlsld", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
- R_X86_64_TLSLD, 32},
- {"gottpoff", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
- R_X86_64_GOTTPOFF, 32},
- {"tpoff", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
- R_X86_64_TPOFF32, 32},
- {"dtpoff", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
- R_X86_64_DTPOFF32, 32},
- {"got", ELF_SSYM_SYM_RELATIVE, R_X86_64_GOT32, 32},
- {"tlsdesc", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
- R_X86_64_GOTPC32_TLSDESC, 32},
- {"tlscall", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
- R_X86_64_TLSDESC_CALL, 32}
-};
-
-static int
-elf_x86_x32_accepts_reloc(size_t val, yasm_symrec *wrt)
-{
- if (wrt) {
- const elf_machine_ssym *ssym = (elf_machine_ssym *)
- yasm_symrec_get_data(wrt, &elf_ssym_symrec_data);
- if (!ssym || val != ssym->size)
- return 0;
- return 1;
- }
- return (val&(val-1)) ? 0 : ((val & (8|16|32)) != 0);
-}
-
-static void
-elf_x86_x32_write_symtab_entry(unsigned char *bufp,
- elf_symtab_entry *entry,
- yasm_intnum *value_intn,
- yasm_intnum *size_intn)
-{
- YASM_WRITE_32_L(bufp, entry->name ? entry->name->index : 0);
- YASM_WRITE_32I_L(bufp, value_intn);
- YASM_WRITE_32I_L(bufp, size_intn);
-
- YASM_WRITE_8(bufp, ELF32_ST_INFO(entry->bind, entry->type));
- YASM_WRITE_8(bufp, ELF32_ST_OTHER(entry->vis));
- if (entry->sect) {
- elf_secthead *shead =
- yasm_section_get_data(entry->sect, &elf_section_data);
- if (!shead)
- yasm_internal_error(N_("symbol references section without data"));
- YASM_WRITE_16_L(bufp, shead->index);
- } else {
- YASM_WRITE_16_L(bufp, entry->index);
- }
-}
-
-static void
-elf_x86_x32_write_secthead(unsigned char *bufp, elf_secthead *shead)
-{
- YASM_WRITE_32_L(bufp, shead->name ? shead->name->index : 0);
- YASM_WRITE_32_L(bufp, shead->type);
- YASM_WRITE_32_L(bufp, shead->flags);
- YASM_WRITE_32_L(bufp, 0); /* vmem address */
- YASM_WRITE_32_L(bufp, shead->offset);
- YASM_WRITE_32I_L(bufp, shead->size);
-
- YASM_WRITE_32_L(bufp, shead->link);
- YASM_WRITE_32_L(bufp, shead->info);
-
- YASM_WRITE_32_L(bufp, shead->align);
- YASM_WRITE_32_L(bufp, shead->entsize);
-}
-
-static void
-elf_x86_x32_write_secthead_rel(unsigned char *bufp,
- elf_secthead *shead,
- elf_section_index symtab_idx,
- elf_section_index sindex)
-{
- yasm_intnum *nreloc;
- yasm_intnum *relocsize;
-
- YASM_WRITE_32_L(bufp, shead->rel_name ? shead->rel_name->index : 0);
- YASM_WRITE_32_L(bufp, SHT_RELA);
- YASM_WRITE_32_L(bufp, 0);
- YASM_WRITE_32_L(bufp, 0);
- YASM_WRITE_32_L(bufp, shead->rel_offset);
-
- nreloc = yasm_intnum_create_uint(shead->nreloc);
- relocsize = yasm_intnum_create_uint(RELOC32A_SIZE);
- yasm_intnum_calc(relocsize, YASM_EXPR_MUL, nreloc);
- YASM_WRITE_32I_L(bufp, relocsize); /* size */
- yasm_intnum_destroy(nreloc);
- yasm_intnum_destroy(relocsize);
-
- YASM_WRITE_32_L(bufp, symtab_idx); /* link: symtab index */
- YASM_WRITE_32_L(bufp, shead->index); /* info: relocated's index */
- YASM_WRITE_32_L(bufp, RELOC32_ALIGN); /* align */
- YASM_WRITE_32_L(bufp, RELOC32A_SIZE); /* entity size */
-}
-
-static void
-elf_x86_x32_handle_reloc_addend(yasm_intnum *intn,
- elf_reloc_entry *reloc,
- unsigned long offset)
-{
- /* .rela: copy value out as addend, replace original with 0 */
- reloc->addend = yasm_intnum_copy(intn);
- yasm_intnum_zero(intn);
-}
-
-static unsigned int
-elf_x86_x32_map_reloc_info_to_type(elf_reloc_entry *reloc)
-{
- if (reloc->wrt) {
- const elf_machine_ssym *ssym = (elf_machine_ssym *)
- yasm_symrec_get_data(reloc->wrt, &elf_ssym_symrec_data);
- if (!ssym || reloc->valsize != ssym->size)
- yasm_internal_error(N_("Unsupported WRT"));
-
- /* Force TLS type; this is required by the linker. */
- if (ssym->sym_rel & ELF_SSYM_THREAD_LOCAL) {
- elf_symtab_entry *esym;
-
- esym = yasm_symrec_get_data(reloc->reloc.sym, &elf_symrec_data);
- if (esym)
- esym->type = STT_TLS;
- }
- /* Map PC-relative GOT to appropriate relocation */
- if (reloc->rtype_rel && ssym->reloc == R_X86_64_GOT32)
- return (unsigned char) R_X86_64_GOTPCREL;
- return (unsigned char) ssym->reloc;
- } else if (reloc->is_GOT_sym && reloc->valsize == 32) {
- return (unsigned char) R_X86_64_GOTPC32;
- } else if (reloc->is_GOT_sym && reloc->valsize == 64) {
- yasm_internal_error(N_("Unsupported relocation size"));
- } else if (reloc->rtype_rel) {
- switch (reloc->valsize) {
- case 8: return (unsigned char) R_X86_64_PC8;
- case 16: return (unsigned char) R_X86_64_PC16;
- case 32: return (unsigned char) R_X86_64_PC32;
- default: yasm_internal_error(N_("Unsupported relocation size"));
- }
- } else {
- switch (reloc->valsize) {
- case 8: return (unsigned char) R_X86_64_8;
- case 16: return (unsigned char) R_X86_64_16;
- case 32: return (unsigned char) R_X86_64_32;
- case 64: return (unsigned char) R_X86_64_64;
- default: yasm_internal_error(N_("Unsupported relocation size"));
- }
- }
- return 0;
-}
-
-static void
-elf_x86_x32_write_reloc(unsigned char *bufp, elf_reloc_entry *reloc,
- unsigned int r_type, unsigned int r_sym)
-{
- YASM_WRITE_32I_L(bufp, reloc->reloc.addr);
- YASM_WRITE_32_L(bufp, ELF32_R_INFO((unsigned long)r_sym, (unsigned char)r_type));
- if (reloc->addend)
- YASM_WRITE_32I_L(bufp, reloc->addend);
- else {
- YASM_WRITE_32_L(bufp, 0);
- }
-}
-
-static void
-elf_x86_x32_write_proghead(unsigned char **bufpp,
- elf_offset secthead_addr,
- unsigned long secthead_count,
- elf_section_index shstrtab_index)
-{
- unsigned char *bufp = *bufpp;
- unsigned char *buf = bufp-4;
- YASM_WRITE_8(bufp, ELFCLASS32); /* elf class */
- YASM_WRITE_8(bufp, ELFDATA2LSB); /* data encoding :: MSB? */
- YASM_WRITE_8(bufp, EV_CURRENT); /* elf version */
- YASM_WRITE_8(bufp, ELFOSABI_SYSV); /* os/abi */
- YASM_WRITE_8(bufp, 0); /* SYSV v3 ABI=0 */
- while (bufp-buf < EI_NIDENT) /* e_ident padding */
- YASM_WRITE_8(bufp, 0);
-
- YASM_WRITE_16_L(bufp, ET_REL); /* e_type - object file */
- YASM_WRITE_16_L(bufp, EM_X86_64); /* e_machine - or others */
- YASM_WRITE_32_L(bufp, EV_CURRENT); /* elf version */
- YASM_WRITE_32_L(bufp, 0); /* e_entry */
- YASM_WRITE_32_L(bufp, 0); /* e_phoff */
- YASM_WRITE_32_L(bufp, secthead_addr); /* e_shoff secthead off */
-
- YASM_WRITE_32_L(bufp, 0); /* e_flags */
- YASM_WRITE_16_L(bufp, EHDR32_SIZE); /* e_ehsize */
- YASM_WRITE_16_L(bufp, 0); /* e_phentsize */
- YASM_WRITE_16_L(bufp, 0); /* e_phnum */
- YASM_WRITE_16_L(bufp, SHDR32_SIZE); /* e_shentsize */
- YASM_WRITE_16_L(bufp, secthead_count); /* e_shnum */
- YASM_WRITE_16_L(bufp, shstrtab_index); /* e_shstrndx */
- *bufpp = bufp;
-}
-
-const elf_machine_handler
-elf_machine_handler_x86_x32 = {
- "x86", "x32", ".rela",
- SYMTAB32_SIZE, SYMTAB32_ALIGN, RELOC32A_SIZE, SHDR32_SIZE, EHDR32_SIZE,
- elf_x86_x32_accepts_reloc,
- elf_x86_x32_write_symtab_entry,
- elf_x86_x32_write_secthead,
- elf_x86_x32_write_secthead_rel,
- elf_x86_x32_handle_reloc_addend,
- elf_x86_x32_map_reloc_info_to_type,
- elf_x86_x32_write_reloc,
- elf_x86_x32_write_proghead,
- elf_x86_x32_ssyms,
- sizeof(elf_x86_x32_ssyms)/sizeof(elf_x86_x32_ssyms[0]),
- 32
-};
+/*
+ * ELF object format helpers - x86:x32
+ *
+ * Copyright (C) 2012 Michael Urman and H.J. Lu
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <util.h>
+
+#include <libyasm.h>
+#define YASM_OBJFMT_ELF_INTERNAL
+#include "elf.h"
+#include "elf-machine.h"
+
+static elf_machine_ssym elf_x86_x32_ssyms[] = {
+ {"plt", ELF_SSYM_SYM_RELATIVE, R_X86_64_PLT32, 32},
+ {"gotpcrel", ELF_SSYM_SYM_RELATIVE, R_X86_64_GOTPCREL, 32},
+ {"tlsgd", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
+ R_X86_64_TLSGD, 32},
+ {"tlsld", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
+ R_X86_64_TLSLD, 32},
+ {"gottpoff", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
+ R_X86_64_GOTTPOFF, 32},
+ {"tpoff", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
+ R_X86_64_TPOFF32, 32},
+ {"dtpoff", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
+ R_X86_64_DTPOFF32, 32},
+ {"got", ELF_SSYM_SYM_RELATIVE, R_X86_64_GOT32, 32},
+ {"tlsdesc", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
+ R_X86_64_GOTPC32_TLSDESC, 32},
+ {"tlscall", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
+ R_X86_64_TLSDESC_CALL, 32}
+};
+
+static int
+elf_x86_x32_accepts_reloc(size_t val, yasm_symrec *wrt)
+{
+ if (wrt) {
+ const elf_machine_ssym *ssym = (elf_machine_ssym *)
+ yasm_symrec_get_data(wrt, &elf_ssym_symrec_data);
+ if (!ssym || val != ssym->size)
+ return 0;
+ return 1;
+ }
+ return (val&(val-1)) ? 0 : ((val & (8|16|32)) != 0);
+}
+
+static void
+elf_x86_x32_write_symtab_entry(unsigned char *bufp,
+ elf_symtab_entry *entry,
+ yasm_intnum *value_intn,
+ yasm_intnum *size_intn)
+{
+ YASM_WRITE_32_L(bufp, entry->name ? entry->name->index : 0);
+ YASM_WRITE_32I_L(bufp, value_intn);
+ YASM_WRITE_32I_L(bufp, size_intn);
+
+ YASM_WRITE_8(bufp, ELF32_ST_INFO(entry->bind, entry->type));
+ YASM_WRITE_8(bufp, ELF32_ST_OTHER(entry->vis));
+ if (entry->sect) {
+ elf_secthead *shead =
+ yasm_section_get_data(entry->sect, &elf_section_data);
+ if (!shead)
+ yasm_internal_error(N_("symbol references section without data"));
+ YASM_WRITE_16_L(bufp, shead->index);
+ } else {
+ YASM_WRITE_16_L(bufp, entry->index);
+ }
+}
+
+static void
+elf_x86_x32_write_secthead(unsigned char *bufp, elf_secthead *shead)
+{
+ YASM_WRITE_32_L(bufp, shead->name ? shead->name->index : 0);
+ YASM_WRITE_32_L(bufp, shead->type);
+ YASM_WRITE_32_L(bufp, shead->flags);
+ YASM_WRITE_32_L(bufp, 0); /* vmem address */
+ YASM_WRITE_32_L(bufp, shead->offset);
+ YASM_WRITE_32I_L(bufp, shead->size);
+
+ YASM_WRITE_32_L(bufp, shead->link);
+ YASM_WRITE_32_L(bufp, shead->info);
+
+ YASM_WRITE_32_L(bufp, shead->align);
+ YASM_WRITE_32_L(bufp, shead->entsize);
+}
+
+static void
+elf_x86_x32_write_secthead_rel(unsigned char *bufp,
+ elf_secthead *shead,
+ elf_section_index symtab_idx,
+ elf_section_index sindex)
+{
+ yasm_intnum *nreloc;
+ yasm_intnum *relocsize;
+
+ YASM_WRITE_32_L(bufp, shead->rel_name ? shead->rel_name->index : 0);
+ YASM_WRITE_32_L(bufp, SHT_RELA);
+ YASM_WRITE_32_L(bufp, 0);
+ YASM_WRITE_32_L(bufp, 0);
+ YASM_WRITE_32_L(bufp, shead->rel_offset);
+
+ nreloc = yasm_intnum_create_uint(shead->nreloc);
+ relocsize = yasm_intnum_create_uint(RELOC32A_SIZE);
+ yasm_intnum_calc(relocsize, YASM_EXPR_MUL, nreloc);
+ YASM_WRITE_32I_L(bufp, relocsize); /* size */
+ yasm_intnum_destroy(nreloc);
+ yasm_intnum_destroy(relocsize);
+
+ YASM_WRITE_32_L(bufp, symtab_idx); /* link: symtab index */
+ YASM_WRITE_32_L(bufp, shead->index); /* info: relocated's index */
+ YASM_WRITE_32_L(bufp, RELOC32_ALIGN); /* align */
+ YASM_WRITE_32_L(bufp, RELOC32A_SIZE); /* entity size */
+}
+
+static void
+elf_x86_x32_handle_reloc_addend(yasm_intnum *intn,
+ elf_reloc_entry *reloc,
+ unsigned long offset)
+{
+ /* .rela: copy value out as addend, replace original with 0 */
+ reloc->addend = yasm_intnum_copy(intn);
+ yasm_intnum_zero(intn);
+}
+
+static unsigned int
+elf_x86_x32_map_reloc_info_to_type(elf_reloc_entry *reloc)
+{
+ if (reloc->wrt) {
+ const elf_machine_ssym *ssym = (elf_machine_ssym *)
+ yasm_symrec_get_data(reloc->wrt, &elf_ssym_symrec_data);
+ if (!ssym || reloc->valsize != ssym->size)
+ yasm_internal_error(N_("Unsupported WRT"));
+
+ /* Force TLS type; this is required by the linker. */
+ if (ssym->sym_rel & ELF_SSYM_THREAD_LOCAL) {
+ elf_symtab_entry *esym;
+
+ esym = yasm_symrec_get_data(reloc->reloc.sym, &elf_symrec_data);
+ if (esym)
+ esym->type = STT_TLS;
+ }
+ /* Map PC-relative GOT to appropriate relocation */
+ if (reloc->rtype_rel && ssym->reloc == R_X86_64_GOT32)
+ return (unsigned char) R_X86_64_GOTPCREL;
+ return (unsigned char) ssym->reloc;
+ } else if (reloc->is_GOT_sym && reloc->valsize == 32) {
+ return (unsigned char) R_X86_64_GOTPC32;
+ } else if (reloc->is_GOT_sym && reloc->valsize == 64) {
+ yasm_internal_error(N_("Unsupported relocation size"));
+ } else if (reloc->rtype_rel) {
+ switch (reloc->valsize) {
+ case 8: return (unsigned char) R_X86_64_PC8;
+ case 16: return (unsigned char) R_X86_64_PC16;
+ case 32: return (unsigned char) R_X86_64_PC32;
+ default: yasm_internal_error(N_("Unsupported relocation size"));
+ }
+ } else {
+ switch (reloc->valsize) {
+ case 8: return (unsigned char) R_X86_64_8;
+ case 16: return (unsigned char) R_X86_64_16;
+ case 32: return (unsigned char) R_X86_64_32;
+ case 64: return (unsigned char) R_X86_64_64;
+ default: yasm_internal_error(N_("Unsupported relocation size"));
+ }
+ }
+ return 0;
+}
+
+static void
+elf_x86_x32_write_reloc(unsigned char *bufp, elf_reloc_entry *reloc,
+ unsigned int r_type, unsigned int r_sym)
+{
+ YASM_WRITE_32I_L(bufp, reloc->reloc.addr);
+ YASM_WRITE_32_L(bufp, ELF32_R_INFO((unsigned long)r_sym, (unsigned char)r_type));
+ if (reloc->addend)
+ YASM_WRITE_32I_L(bufp, reloc->addend);
+ else {
+ YASM_WRITE_32_L(bufp, 0);
+ }
+}
+
+static void
+elf_x86_x32_write_proghead(unsigned char **bufpp,
+ elf_offset secthead_addr,
+ unsigned long secthead_count,
+ elf_section_index shstrtab_index)
+{
+ unsigned char *bufp = *bufpp;
+ unsigned char *buf = bufp-4;
+ YASM_WRITE_8(bufp, ELFCLASS32); /* elf class */
+ YASM_WRITE_8(bufp, ELFDATA2LSB); /* data encoding :: MSB? */
+ YASM_WRITE_8(bufp, EV_CURRENT); /* elf version */
+ YASM_WRITE_8(bufp, ELFOSABI_SYSV); /* os/abi */
+ YASM_WRITE_8(bufp, 0); /* SYSV v3 ABI=0 */
+ while (bufp-buf < EI_NIDENT) /* e_ident padding */
+ YASM_WRITE_8(bufp, 0);
+
+ YASM_WRITE_16_L(bufp, ET_REL); /* e_type - object file */
+ YASM_WRITE_16_L(bufp, EM_X86_64); /* e_machine - or others */
+ YASM_WRITE_32_L(bufp, EV_CURRENT); /* elf version */
+ YASM_WRITE_32_L(bufp, 0); /* e_entry */
+ YASM_WRITE_32_L(bufp, 0); /* e_phoff */
+ YASM_WRITE_32_L(bufp, secthead_addr); /* e_shoff secthead off */
+
+ YASM_WRITE_32_L(bufp, 0); /* e_flags */
+ YASM_WRITE_16_L(bufp, EHDR32_SIZE); /* e_ehsize */
+ YASM_WRITE_16_L(bufp, 0); /* e_phentsize */
+ YASM_WRITE_16_L(bufp, 0); /* e_phnum */
+ YASM_WRITE_16_L(bufp, SHDR32_SIZE); /* e_shentsize */
+ YASM_WRITE_16_L(bufp, secthead_count); /* e_shnum */
+ YASM_WRITE_16_L(bufp, shstrtab_index); /* e_shstrndx */
+ *bufpp = bufp;
+}
+
+const elf_machine_handler
+elf_machine_handler_x86_x32 = {
+ "x86", "x32", ".rela",
+ SYMTAB32_SIZE, SYMTAB32_ALIGN, RELOC32A_SIZE, SHDR32_SIZE, EHDR32_SIZE,
+ elf_x86_x32_accepts_reloc,
+ elf_x86_x32_write_symtab_entry,
+ elf_x86_x32_write_secthead,
+ elf_x86_x32_write_secthead_rel,
+ elf_x86_x32_handle_reloc_addend,
+ elf_x86_x32_map_reloc_info_to_type,
+ elf_x86_x32_write_reloc,
+ elf_x86_x32_write_proghead,
+ elf_x86_x32_ssyms,
+ sizeof(elf_x86_x32_ssyms)/sizeof(elf_x86_x32_ssyms[0]),
+ 32
+};
diff --git a/contrib/tools/yasm/modules/objfmts/elf/elf-x86-x86.c b/contrib/tools/yasm/modules/objfmts/elf/elf-x86-x86.c
index 8ebaa87381..d79ec6eabd 100644
--- a/contrib/tools/yasm/modules/objfmts/elf/elf-x86-x86.c
+++ b/contrib/tools/yasm/modules/objfmts/elf/elf-x86-x86.c
@@ -1,242 +1,242 @@
-/*
- * ELF object format helpers - x86:x86
- *
- * Copyright (C) 2004-2007 Michael Urman
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <util.h>
-
-#include <libyasm.h>
-#define YASM_OBJFMT_ELF_INTERNAL
-#include "elf.h"
-#include "elf-machine.h"
-
-static elf_machine_ssym elf_x86_x86_ssyms[] = {
- {"plt", ELF_SSYM_SYM_RELATIVE, R_386_PLT32, 32},
- {"gotoff", 0, R_386_GOTOFF, 32},
- /* special one for NASM */
- {"gotpc", ELF_SSYM_CURPOS_ADJUST, R_386_GOTPC, 32},
- {"tlsgd", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
- R_386_TLS_GD, 32},
- {"tlsldm", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
- R_386_TLS_LDM, 32},
- {"gottpoff", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
- R_386_TLS_IE_32, 32},
- {"tpoff", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
- R_386_TLS_LE_32, 32},
- {"ntpoff", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
- R_386_TLS_LE, 32},
- {"dtpoff", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
- R_386_TLS_LDO_32, 32},
- {"gotntpoff", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
- R_386_TLS_GOTIE, 32},
- {"indntpoff", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
- R_386_TLS_IE, 32},
- {"got", ELF_SSYM_SYM_RELATIVE, R_386_GOT32, 32},
- {"tlsdesc", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
- R_386_TLS_GOTDESC, 32},
- {"tlscall", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
- R_386_TLS_DESC_CALL, 32}
-};
-
-static int
-elf_x86_x86_accepts_reloc(size_t val, yasm_symrec *wrt)
-{
- if (wrt) {
- const elf_machine_ssym *ssym = (elf_machine_ssym *)
- yasm_symrec_get_data(wrt, &elf_ssym_symrec_data);
- if (!ssym || val != ssym->size)
- return 0;
- return 1;
- }
- return (val&(val-1)) ? 0 : ((val & (8|16|32)) != 0);
-}
-
-static void
-elf_x86_x86_write_symtab_entry(unsigned char *bufp,
- elf_symtab_entry *entry,
- yasm_intnum *value_intn,
- yasm_intnum *size_intn)
-{
- YASM_WRITE_32_L(bufp, entry->name ? entry->name->index : 0);
- YASM_WRITE_32I_L(bufp, value_intn);
- YASM_WRITE_32I_L(bufp, size_intn);
-
- YASM_WRITE_8(bufp, ELF32_ST_INFO(entry->bind, entry->type));
- YASM_WRITE_8(bufp, ELF32_ST_OTHER(entry->vis));
- if (entry->sect) {
- elf_secthead *shead =
- yasm_section_get_data(entry->sect, &elf_section_data);
- if (!shead)
- yasm_internal_error(N_("symbol references section without data"));
- YASM_WRITE_16_L(bufp, shead->index);
- } else {
- YASM_WRITE_16_L(bufp, entry->index);
- }
-}
-
-static void
-elf_x86_x86_write_secthead(unsigned char *bufp, elf_secthead *shead)
-{
- YASM_WRITE_32_L(bufp, shead->name ? shead->name->index : 0);
- YASM_WRITE_32_L(bufp, shead->type);
- YASM_WRITE_32_L(bufp, shead->flags);
- YASM_WRITE_32_L(bufp, 0); /* vmem address */
-
- YASM_WRITE_32_L(bufp, shead->offset);
- YASM_WRITE_32I_L(bufp, shead->size);
- YASM_WRITE_32_L(bufp, shead->link);
- YASM_WRITE_32_L(bufp, shead->info);
-
- YASM_WRITE_32_L(bufp, shead->align);
- YASM_WRITE_32_L(bufp, shead->entsize);
-
-}
-
-static void
-elf_x86_x86_write_secthead_rel(unsigned char *bufp,
- elf_secthead *shead,
- elf_section_index symtab_idx,
- elf_section_index sindex)
-{
- YASM_WRITE_32_L(bufp, shead->rel_name ? shead->rel_name->index : 0);
- YASM_WRITE_32_L(bufp, SHT_REL);
- YASM_WRITE_32_L(bufp, 0);
- YASM_WRITE_32_L(bufp, 0);
-
- YASM_WRITE_32_L(bufp, shead->rel_offset);
- YASM_WRITE_32_L(bufp, RELOC32_SIZE * shead->nreloc);/* size */
- YASM_WRITE_32_L(bufp, symtab_idx); /* link: symtab index */
- YASM_WRITE_32_L(bufp, shead->index); /* info: relocated's index */
-
- YASM_WRITE_32_L(bufp, RELOC32_ALIGN); /* align */
- YASM_WRITE_32_L(bufp, RELOC32_SIZE); /* entity size */
-}
-
-static void
-elf_x86_x86_handle_reloc_addend(yasm_intnum *intn,
- elf_reloc_entry *reloc,
- unsigned long offset)
-{
- if (!reloc->wrt && reloc->is_GOT_sym && reloc->valsize == 32 && offset != 0)
- {
- yasm_intnum *off_intn = yasm_intnum_create_uint(offset);
- yasm_intnum_calc(intn, YASM_EXPR_ADD, off_intn);
- yasm_intnum_destroy(off_intn);
- }
- return; /* .rel: Leave addend in intn */
-}
-
-static unsigned int
-elf_x86_x86_map_reloc_info_to_type(elf_reloc_entry *reloc)
-{
- if (reloc->wrt) {
- const elf_machine_ssym *ssym = (elf_machine_ssym *)
- yasm_symrec_get_data(reloc->wrt, &elf_ssym_symrec_data);
- if (!ssym || reloc->valsize != ssym->size)
- yasm_internal_error(N_("Unsupported WRT"));
-
- /* Force TLS type; this is required by the linker. */
- if (ssym->sym_rel & ELF_SSYM_THREAD_LOCAL) {
- elf_symtab_entry *esym;
-
- esym = yasm_symrec_get_data(reloc->reloc.sym, &elf_symrec_data);
- if (esym)
- esym->type = STT_TLS;
- }
- return (unsigned char) ssym->reloc;
- } else if (reloc->is_GOT_sym && reloc->valsize == 32) {
- return (unsigned char) R_386_GOTPC;
- } else if (reloc->rtype_rel) {
- switch (reloc->valsize) {
- case 8: return (unsigned char) R_386_PC8;
- case 16: return (unsigned char) R_386_PC16;
- case 32: return (unsigned char) R_386_PC32;
- default: yasm_internal_error(N_("Unsupported relocation size"));
- }
- } else {
- switch (reloc->valsize) {
- case 8: return (unsigned char) R_386_8;
- case 16: return (unsigned char) R_386_16;
- case 32: return (unsigned char) R_386_32;
- default: yasm_internal_error(N_("Unsupported relocation size"));
- }
- }
- return 0;
-}
-
-static void
-elf_x86_x86_write_reloc(unsigned char *bufp, elf_reloc_entry *reloc,
- unsigned int r_type, unsigned int r_sym)
-{
- YASM_WRITE_32I_L(bufp, reloc->reloc.addr);
- YASM_WRITE_32_L(bufp, ELF32_R_INFO((unsigned long)r_sym, (unsigned char)r_type));
-}
-
-static void
-elf_x86_x86_write_proghead(unsigned char **bufpp,
- elf_offset secthead_addr,
- unsigned long secthead_count,
- elf_section_index shstrtab_index)
-{
- unsigned char *bufp = *bufpp;
- unsigned char *buf = bufp-4;
- YASM_WRITE_8(bufp, ELFCLASS32); /* elf class */
- YASM_WRITE_8(bufp, ELFDATA2LSB); /* data encoding :: MSB? */
- YASM_WRITE_8(bufp, EV_CURRENT); /* elf version */
- while (bufp-buf < EI_NIDENT) /* e_ident padding */
- YASM_WRITE_8(bufp, 0);
-
- YASM_WRITE_16_L(bufp, ET_REL); /* e_type - object file */
- YASM_WRITE_16_L(bufp, EM_386); /* e_machine - or others */
- YASM_WRITE_32_L(bufp, EV_CURRENT); /* elf version */
- YASM_WRITE_32_L(bufp, 0); /* e_entry exection startaddr */
- YASM_WRITE_32_L(bufp, 0); /* e_phoff program header off */
- YASM_WRITE_32_L(bufp, secthead_addr); /* e_shoff section header off */
- YASM_WRITE_32_L(bufp, 0); /* e_flags also by arch */
- YASM_WRITE_16_L(bufp, EHDR32_SIZE); /* e_ehsize */
- YASM_WRITE_16_L(bufp, 0); /* e_phentsize */
- YASM_WRITE_16_L(bufp, 0); /* e_phnum */
- YASM_WRITE_16_L(bufp, SHDR32_SIZE); /* e_shentsize */
- YASM_WRITE_16_L(bufp, secthead_count); /* e_shnum */
- YASM_WRITE_16_L(bufp, shstrtab_index); /* e_shstrndx */
- *bufpp = bufp;
-}
-
-const elf_machine_handler
-elf_machine_handler_x86_x86 = {
- "x86", "x86", ".rel",
- SYMTAB32_SIZE, SYMTAB32_ALIGN, RELOC32_SIZE, SHDR32_SIZE, EHDR32_SIZE,
- elf_x86_x86_accepts_reloc,
- elf_x86_x86_write_symtab_entry,
- elf_x86_x86_write_secthead,
- elf_x86_x86_write_secthead_rel,
- elf_x86_x86_handle_reloc_addend,
- elf_x86_x86_map_reloc_info_to_type,
- elf_x86_x86_write_reloc,
- elf_x86_x86_write_proghead,
- elf_x86_x86_ssyms,
- sizeof(elf_x86_x86_ssyms)/sizeof(elf_x86_x86_ssyms[0]),
- 32
-};
+/*
+ * ELF object format helpers - x86:x86
+ *
+ * Copyright (C) 2004-2007 Michael Urman
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <util.h>
+
+#include <libyasm.h>
+#define YASM_OBJFMT_ELF_INTERNAL
+#include "elf.h"
+#include "elf-machine.h"
+
+static elf_machine_ssym elf_x86_x86_ssyms[] = {
+ {"plt", ELF_SSYM_SYM_RELATIVE, R_386_PLT32, 32},
+ {"gotoff", 0, R_386_GOTOFF, 32},
+ /* special one for NASM */
+ {"gotpc", ELF_SSYM_CURPOS_ADJUST, R_386_GOTPC, 32},
+ {"tlsgd", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
+ R_386_TLS_GD, 32},
+ {"tlsldm", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
+ R_386_TLS_LDM, 32},
+ {"gottpoff", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
+ R_386_TLS_IE_32, 32},
+ {"tpoff", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
+ R_386_TLS_LE_32, 32},
+ {"ntpoff", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
+ R_386_TLS_LE, 32},
+ {"dtpoff", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
+ R_386_TLS_LDO_32, 32},
+ {"gotntpoff", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
+ R_386_TLS_GOTIE, 32},
+ {"indntpoff", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
+ R_386_TLS_IE, 32},
+ {"got", ELF_SSYM_SYM_RELATIVE, R_386_GOT32, 32},
+ {"tlsdesc", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
+ R_386_TLS_GOTDESC, 32},
+ {"tlscall", ELF_SSYM_SYM_RELATIVE|ELF_SSYM_THREAD_LOCAL,
+ R_386_TLS_DESC_CALL, 32}
+};
+
+static int
+elf_x86_x86_accepts_reloc(size_t val, yasm_symrec *wrt)
+{
+ if (wrt) {
+ const elf_machine_ssym *ssym = (elf_machine_ssym *)
+ yasm_symrec_get_data(wrt, &elf_ssym_symrec_data);
+ if (!ssym || val != ssym->size)
+ return 0;
+ return 1;
+ }
+ return (val&(val-1)) ? 0 : ((val & (8|16|32)) != 0);
+}
+
+static void
+elf_x86_x86_write_symtab_entry(unsigned char *bufp,
+ elf_symtab_entry *entry,
+ yasm_intnum *value_intn,
+ yasm_intnum *size_intn)
+{
+ YASM_WRITE_32_L(bufp, entry->name ? entry->name->index : 0);
+ YASM_WRITE_32I_L(bufp, value_intn);
+ YASM_WRITE_32I_L(bufp, size_intn);
+
+ YASM_WRITE_8(bufp, ELF32_ST_INFO(entry->bind, entry->type));
+ YASM_WRITE_8(bufp, ELF32_ST_OTHER(entry->vis));
+ if (entry->sect) {
+ elf_secthead *shead =
+ yasm_section_get_data(entry->sect, &elf_section_data);
+ if (!shead)
+ yasm_internal_error(N_("symbol references section without data"));
+ YASM_WRITE_16_L(bufp, shead->index);
+ } else {
+ YASM_WRITE_16_L(bufp, entry->index);
+ }
+}
+
+static void
+elf_x86_x86_write_secthead(unsigned char *bufp, elf_secthead *shead)
+{
+ YASM_WRITE_32_L(bufp, shead->name ? shead->name->index : 0);
+ YASM_WRITE_32_L(bufp, shead->type);
+ YASM_WRITE_32_L(bufp, shead->flags);
+ YASM_WRITE_32_L(bufp, 0); /* vmem address */
+
+ YASM_WRITE_32_L(bufp, shead->offset);
+ YASM_WRITE_32I_L(bufp, shead->size);
+ YASM_WRITE_32_L(bufp, shead->link);
+ YASM_WRITE_32_L(bufp, shead->info);
+
+ YASM_WRITE_32_L(bufp, shead->align);
+ YASM_WRITE_32_L(bufp, shead->entsize);
+
+}
+
+static void
+elf_x86_x86_write_secthead_rel(unsigned char *bufp,
+ elf_secthead *shead,
+ elf_section_index symtab_idx,
+ elf_section_index sindex)
+{
+ YASM_WRITE_32_L(bufp, shead->rel_name ? shead->rel_name->index : 0);
+ YASM_WRITE_32_L(bufp, SHT_REL);
+ YASM_WRITE_32_L(bufp, 0);
+ YASM_WRITE_32_L(bufp, 0);
+
+ YASM_WRITE_32_L(bufp, shead->rel_offset);
+ YASM_WRITE_32_L(bufp, RELOC32_SIZE * shead->nreloc);/* size */
+ YASM_WRITE_32_L(bufp, symtab_idx); /* link: symtab index */
+ YASM_WRITE_32_L(bufp, shead->index); /* info: relocated's index */
+
+ YASM_WRITE_32_L(bufp, RELOC32_ALIGN); /* align */
+ YASM_WRITE_32_L(bufp, RELOC32_SIZE); /* entity size */
+}
+
+static void
+elf_x86_x86_handle_reloc_addend(yasm_intnum *intn,
+ elf_reloc_entry *reloc,
+ unsigned long offset)
+{
+ if (!reloc->wrt && reloc->is_GOT_sym && reloc->valsize == 32 && offset != 0)
+ {
+ yasm_intnum *off_intn = yasm_intnum_create_uint(offset);
+ yasm_intnum_calc(intn, YASM_EXPR_ADD, off_intn);
+ yasm_intnum_destroy(off_intn);
+ }
+ return; /* .rel: Leave addend in intn */
+}
+
+static unsigned int
+elf_x86_x86_map_reloc_info_to_type(elf_reloc_entry *reloc)
+{
+ if (reloc->wrt) {
+ const elf_machine_ssym *ssym = (elf_machine_ssym *)
+ yasm_symrec_get_data(reloc->wrt, &elf_ssym_symrec_data);
+ if (!ssym || reloc->valsize != ssym->size)
+ yasm_internal_error(N_("Unsupported WRT"));
+
+ /* Force TLS type; this is required by the linker. */
+ if (ssym->sym_rel & ELF_SSYM_THREAD_LOCAL) {
+ elf_symtab_entry *esym;
+
+ esym = yasm_symrec_get_data(reloc->reloc.sym, &elf_symrec_data);
+ if (esym)
+ esym->type = STT_TLS;
+ }
+ return (unsigned char) ssym->reloc;
+ } else if (reloc->is_GOT_sym && reloc->valsize == 32) {
+ return (unsigned char) R_386_GOTPC;
+ } else if (reloc->rtype_rel) {
+ switch (reloc->valsize) {
+ case 8: return (unsigned char) R_386_PC8;
+ case 16: return (unsigned char) R_386_PC16;
+ case 32: return (unsigned char) R_386_PC32;
+ default: yasm_internal_error(N_("Unsupported relocation size"));
+ }
+ } else {
+ switch (reloc->valsize) {
+ case 8: return (unsigned char) R_386_8;
+ case 16: return (unsigned char) R_386_16;
+ case 32: return (unsigned char) R_386_32;
+ default: yasm_internal_error(N_("Unsupported relocation size"));
+ }
+ }
+ return 0;
+}
+
+static void
+elf_x86_x86_write_reloc(unsigned char *bufp, elf_reloc_entry *reloc,
+ unsigned int r_type, unsigned int r_sym)
+{
+ YASM_WRITE_32I_L(bufp, reloc->reloc.addr);
+ YASM_WRITE_32_L(bufp, ELF32_R_INFO((unsigned long)r_sym, (unsigned char)r_type));
+}
+
+static void
+elf_x86_x86_write_proghead(unsigned char **bufpp,
+ elf_offset secthead_addr,
+ unsigned long secthead_count,
+ elf_section_index shstrtab_index)
+{
+ unsigned char *bufp = *bufpp;
+ unsigned char *buf = bufp-4;
+ YASM_WRITE_8(bufp, ELFCLASS32); /* elf class */
+ YASM_WRITE_8(bufp, ELFDATA2LSB); /* data encoding :: MSB? */
+ YASM_WRITE_8(bufp, EV_CURRENT); /* elf version */
+ while (bufp-buf < EI_NIDENT) /* e_ident padding */
+ YASM_WRITE_8(bufp, 0);
+
+ YASM_WRITE_16_L(bufp, ET_REL); /* e_type - object file */
+ YASM_WRITE_16_L(bufp, EM_386); /* e_machine - or others */
+ YASM_WRITE_32_L(bufp, EV_CURRENT); /* elf version */
+ YASM_WRITE_32_L(bufp, 0); /* e_entry exection startaddr */
+ YASM_WRITE_32_L(bufp, 0); /* e_phoff program header off */
+ YASM_WRITE_32_L(bufp, secthead_addr); /* e_shoff section header off */
+ YASM_WRITE_32_L(bufp, 0); /* e_flags also by arch */
+ YASM_WRITE_16_L(bufp, EHDR32_SIZE); /* e_ehsize */
+ YASM_WRITE_16_L(bufp, 0); /* e_phentsize */
+ YASM_WRITE_16_L(bufp, 0); /* e_phnum */
+ YASM_WRITE_16_L(bufp, SHDR32_SIZE); /* e_shentsize */
+ YASM_WRITE_16_L(bufp, secthead_count); /* e_shnum */
+ YASM_WRITE_16_L(bufp, shstrtab_index); /* e_shstrndx */
+ *bufpp = bufp;
+}
+
+const elf_machine_handler
+elf_machine_handler_x86_x86 = {
+ "x86", "x86", ".rel",
+ SYMTAB32_SIZE, SYMTAB32_ALIGN, RELOC32_SIZE, SHDR32_SIZE, EHDR32_SIZE,
+ elf_x86_x86_accepts_reloc,
+ elf_x86_x86_write_symtab_entry,
+ elf_x86_x86_write_secthead,
+ elf_x86_x86_write_secthead_rel,
+ elf_x86_x86_handle_reloc_addend,
+ elf_x86_x86_map_reloc_info_to_type,
+ elf_x86_x86_write_reloc,
+ elf_x86_x86_write_proghead,
+ elf_x86_x86_ssyms,
+ sizeof(elf_x86_x86_ssyms)/sizeof(elf_x86_x86_ssyms[0]),
+ 32
+};
diff --git a/contrib/tools/yasm/modules/objfmts/elf/elf.c b/contrib/tools/yasm/modules/objfmts/elf/elf.c
index 04f3fe661a..2486bba8df 100644
--- a/contrib/tools/yasm/modules/objfmts/elf/elf.c
+++ b/contrib/tools/yasm/modules/objfmts/elf/elf.c
@@ -1,960 +1,960 @@
-/*
- * ELF object format helpers
- *
- * Copyright (C) 2003-2007 Michael Urman
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <util.h>
-
-#include <libyasm.h>
-#define YASM_OBJFMT_ELF_INTERNAL
-#include "elf.h"
-#include "elf-machine.h"
-
-static void elf_section_data_destroy(void *data);
-static void elf_secthead_print(void *data, FILE *f, int indent_level);
-
-const yasm_assoc_data_callback elf_section_data = {
- elf_section_data_destroy,
- elf_secthead_print
-};
-
-static void elf_symrec_data_destroy(/*@only@*/ void *d);
-static void elf_symtab_entry_print(void *data, FILE *f, int indent_level);
-static void elf_ssym_symtab_entry_print(void *data, FILE *f, int indent_level);
-
-const yasm_assoc_data_callback elf_symrec_data = {
- elf_symrec_data_destroy,
- elf_symtab_entry_print
-};
-
-const yasm_assoc_data_callback elf_ssym_symrec_data = {
- elf_symrec_data_destroy,
- elf_ssym_symtab_entry_print
-};
-
-extern elf_machine_handler
- elf_machine_handler_x86_x86,
- elf_machine_handler_x86_amd64,
- elf_machine_handler_x86_x32;
-
-static const elf_machine_handler *elf_machine_handlers[] =
-{
- &elf_machine_handler_x86_x86,
- &elf_machine_handler_x86_amd64,
- &elf_machine_handler_x86_x32,
- NULL
-};
-static const elf_machine_handler elf_null_machine = {0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0};
-static elf_machine_handler const *elf_march = &elf_null_machine;
-static yasm_symrec **elf_ssyms;
-
-const elf_machine_handler *
-elf_set_arch(yasm_arch *arch, yasm_symtab *symtab, int bits_pref)
-{
- const char *machine = yasm_arch_get_machine(arch);
- int i;
-
- for (i=0, elf_march = elf_machine_handlers[0];
- elf_march != NULL;
- elf_march = elf_machine_handlers[++i])
- {
- if (yasm__strcasecmp(yasm_arch_keyword(arch), elf_march->arch)==0) {
- if (yasm__strcasecmp(machine, elf_march->machine)==0) {
- if (bits_pref == 0 || bits_pref == elf_march->bits)
- break;
- } else if (bits_pref == elf_march->bits
- && yasm__strcasecmp(machine, "amd64") == 0
- && yasm__strcasecmp(elf_march->machine, "x32") == 0)
- break;
- }
- }
-
- if (elf_march && elf_march->num_ssyms > 0)
- {
- /* Allocate "special" syms */
- elf_ssyms =
- yasm_xmalloc(elf_march->num_ssyms * sizeof(yasm_symrec *));
- for (i=0; (unsigned int)i<elf_march->num_ssyms; i++)
- {
- /* FIXME: misuse of NULL bytecode */
- elf_ssyms[i] = yasm_symtab_define_label(symtab,
- elf_march->ssyms[i].name,
- NULL, 0, 0);
- yasm_symrec_add_data(elf_ssyms[i], &elf_ssym_symrec_data,
- (void*)&elf_march->ssyms[i]);
- }
- }
-
- return elf_march;
-}
-
-yasm_symrec *
-elf_get_special_sym(const char *name, const char *parser)
-{
- int i;
- for (i=0; (unsigned int)i<elf_march->num_ssyms; i++) {
- if (yasm__strcasecmp(name, elf_march->ssyms[i].name) == 0)
- return elf_ssyms[i];
- }
- return NULL;
-}
-
-/* reloc functions */
-int elf_ssym_has_flag(yasm_symrec *wrt, int flag);
-
-int
-elf_is_wrt_sym_relative(yasm_symrec *wrt)
-{
- return elf_ssym_has_flag(wrt, ELF_SSYM_SYM_RELATIVE);
-}
-
-int
-elf_is_wrt_pos_adjusted(yasm_symrec *wrt)
-{
- return elf_ssym_has_flag(wrt, ELF_SSYM_CURPOS_ADJUST);
-}
-
-int
-elf_ssym_has_flag(yasm_symrec *wrt, int flag)
-{
- int i;
- for (i=0; (unsigned int)i<elf_march->num_ssyms; i++) {
- if (elf_ssyms[i] == wrt)
- return (elf_march->ssyms[i].sym_rel & flag) != 0;
- }
- return 0;
-}
-
-/* takes ownership of addr */
-elf_reloc_entry *
-elf_reloc_entry_create(yasm_symrec *sym,
- yasm_symrec *wrt,
- yasm_intnum *addr,
- int rel,
- size_t valsize,
- int is_GOT_sym)
-{
- elf_reloc_entry *entry;
-
- if (!elf_march->accepts_reloc)
- yasm_internal_error(N_("Unsupported machine for ELF output"));
-
- if (!elf_march->accepts_reloc(valsize, wrt))
- {
- if (addr)
- yasm_intnum_destroy(addr);
- return NULL;
- }
-
- if (sym == NULL)
- yasm_internal_error("sym is null");
-
- entry = yasm_xmalloc(sizeof(elf_reloc_entry));
- entry->reloc.sym = sym;
- entry->reloc.addr = addr;
- entry->rtype_rel = rel;
- entry->valsize = valsize;
- entry->addend = NULL;
- entry->wrt = wrt;
- entry->is_GOT_sym = is_GOT_sym;
-
- return entry;
-}
-
-void
-elf_reloc_entry_destroy(void *entry)
-{
- if (((elf_reloc_entry*)entry)->addend)
- yasm_intnum_destroy(((elf_reloc_entry*)entry)->addend);
- yasm_xfree(entry);
-}
-
-/* strtab functions */
-elf_strtab_entry *
-elf_strtab_entry_create(const char *str)
-{
- elf_strtab_entry *entry = yasm_xmalloc(sizeof(elf_strtab_entry));
- entry->str = yasm__xstrdup(str);
- entry->index = 0;
- return entry;
-}
-
-void
-elf_strtab_entry_set_str(elf_strtab_entry *entry, const char *str)
-{
- elf_strtab_entry *last;
- if (entry->str)
- yasm_xfree(entry->str);
- entry->str = yasm__xstrdup(str);
-
- /* Update all following indices since string length probably changes */
- last = entry;
- entry = STAILQ_NEXT(last, qlink);
- while (entry) {
- entry->index = last->index + (unsigned long)strlen(last->str) + 1;
- last = entry;
- entry = STAILQ_NEXT(last, qlink);
- }
-}
-
-elf_strtab_head *
-elf_strtab_create()
-{
- elf_strtab_head *strtab = yasm_xmalloc(sizeof(elf_strtab_head));
- elf_strtab_entry *entry = yasm_xmalloc(sizeof(elf_strtab_entry));
-
- STAILQ_INIT(strtab);
- entry->index = 0;
- entry->str = yasm__xstrdup("");
-
- STAILQ_INSERT_TAIL(strtab, entry, qlink);
- return strtab;
-}
-
-elf_strtab_entry *
-elf_strtab_append_str(elf_strtab_head *strtab, const char *str)
-{
- elf_strtab_entry *last, *entry;
-
- if (strtab == NULL)
- yasm_internal_error("strtab is null");
- if (STAILQ_EMPTY(strtab))
- yasm_internal_error("strtab is missing initial dummy entry");
-
- last = STAILQ_LAST(strtab, elf_strtab_entry, qlink);
-
- entry = elf_strtab_entry_create(str);
- entry->index = last->index + (unsigned long)strlen(last->str) + 1;
-
- STAILQ_INSERT_TAIL(strtab, entry, qlink);
- return entry;
-}
-
-void
-elf_strtab_destroy(elf_strtab_head *strtab)
-{
- elf_strtab_entry *s1, *s2;
-
- if (strtab == NULL)
- yasm_internal_error("strtab is null");
- if (STAILQ_EMPTY(strtab))
- yasm_internal_error("strtab is missing initial dummy entry");
-
- s1 = STAILQ_FIRST(strtab);
- while (s1 != NULL) {
- s2 = STAILQ_NEXT(s1, qlink);
- yasm_xfree(s1->str);
- yasm_xfree(s1);
- s1 = s2;
- }
- yasm_xfree(strtab);
-}
-
-unsigned long
-elf_strtab_output_to_file(FILE *f, elf_strtab_head *strtab)
-{
- unsigned long size = 0;
- elf_strtab_entry *entry;
-
- if (strtab == NULL)
- yasm_internal_error("strtab is null");
-
- /* consider optimizing tables here */
- STAILQ_FOREACH(entry, strtab, qlink) {
- size_t len = 1 + strlen(entry->str);
- fwrite(entry->str, len, 1, f);
- size += (unsigned long)len;
- }
- return size;
-}
-
-
-
-/* symtab functions */
-elf_symtab_entry *
-elf_symtab_entry_create(elf_strtab_entry *name,
- yasm_symrec *sym)
-{
- elf_symtab_entry *entry = yasm_xmalloc(sizeof(elf_symtab_entry));
- entry->in_table = 0;
- entry->sym = sym;
- entry->sect = NULL;
- entry->name = name;
- entry->value = 0;
-
- entry->xsize = NULL;
- entry->size = 0;
- entry->index = 0;
- entry->bind = 0;
- entry->type = STT_NOTYPE;
- entry->vis = STV_DEFAULT;
-
- return entry;
-}
-
-static void
-elf_symtab_entry_destroy(elf_symtab_entry *entry)
-{
- if (entry == NULL)
- yasm_internal_error("symtab entry is null");
-
- yasm_xfree(entry);
-}
-
-static void
-elf_symrec_data_destroy(void *data)
-{
- /* do nothing, as this stuff is in the symtab anyway... this speaks of bad
- * design/use or this stuff, i fear */
-
- /* watch for double-free here ... */
- /*elf_symtab_entry_destroy((elf_symtab_entry *)data);*/
-}
-
-static void
-elf_symtab_entry_print(void *data, FILE *f, int indent_level)
-{
- elf_symtab_entry *entry = data;
- if (entry == NULL)
- yasm_internal_error("symtab entry is null");
-
- fprintf(f, "%*sbind=", indent_level, "");
- switch (entry->bind) {
- case STB_LOCAL: fprintf(f, "local\n"); break;
- case STB_GLOBAL: fprintf(f, "global\n"); break;
- case STB_WEAK: fprintf(f, "weak\n"); break;
- default: fprintf(f, "undef\n"); break;
- }
- fprintf(f, "%*stype=", indent_level, "");
- switch (entry->type) {
- case STT_NOTYPE: fprintf(f, "notype\n"); break;
- case STT_OBJECT: fprintf(f, "object\n"); break;
- case STT_FUNC: fprintf(f, "func\n"); break;
- case STT_SECTION: fprintf(f, "section\n");break;
- case STT_FILE: fprintf(f, "file\n"); break;
- default: fprintf(f, "undef\n"); break;
- }
- fprintf(f, "%*ssize=", indent_level, "");
- if (entry->xsize)
- yasm_expr_print(entry->xsize, f);
- else
- fprintf(f, "%ld", entry->size);
- fprintf(f, "\n");
-}
-
-static void
-elf_ssym_symtab_entry_print(void *data, FILE *f, int indent_level)
-{
- /* TODO */
-}
-
-elf_symtab_head *
-elf_symtab_create()
-{
- elf_symtab_head *symtab = yasm_xmalloc(sizeof(elf_symtab_head));
- elf_symtab_entry *entry = yasm_xmalloc(sizeof(elf_symtab_entry));
-
- STAILQ_INIT(symtab);
- entry->in_table = 1;
- entry->sym = NULL;
- entry->sect = NULL;
- entry->name = NULL;
- entry->value = 0;
- entry->xsize = NULL;
- entry->size = 0;
- entry->index = SHN_UNDEF;
- entry->bind = STB_LOCAL;
- entry->type = STT_NOTYPE;
- entry->vis = STV_DEFAULT;
- entry->symindex = 0;
- STAILQ_INSERT_TAIL(symtab, entry, qlink);
- return symtab;
-}
-
-void
-elf_symtab_append_entry(elf_symtab_head *symtab, elf_symtab_entry *entry)
-{
- if (symtab == NULL)
- yasm_internal_error("symtab is null");
- if (entry == NULL)
- yasm_internal_error("symtab entry is null");
- if (STAILQ_EMPTY(symtab))
- yasm_internal_error(N_("symtab is missing initial dummy entry"));
-
- STAILQ_INSERT_TAIL(symtab, entry, qlink);
- entry->in_table = 1;
-}
-
-void
-elf_symtab_insert_local_sym(elf_symtab_head *symtab, elf_symtab_entry *entry)
-{
- elf_symtab_entry *after = STAILQ_FIRST(symtab);
- elf_symtab_entry *before = NULL;
-
- while (after && (after->bind == STB_LOCAL)) {
- before = after;
- if (before->type == STT_FILE) break;
- after = STAILQ_NEXT(after, qlink);
- }
- STAILQ_INSERT_AFTER(symtab, before, entry, qlink);
- entry->in_table = 1;
-}
-
-void
-elf_symtab_destroy(elf_symtab_head *symtab)
-{
- elf_symtab_entry *s1, *s2;
-
- if (symtab == NULL)
- yasm_internal_error("symtab is null");
- if (STAILQ_EMPTY(symtab))
- yasm_internal_error(N_("symtab is missing initial dummy entry"));
-
- s1 = STAILQ_FIRST(symtab);
- while (s1 != NULL) {
- s2 = STAILQ_NEXT(s1, qlink);
- elf_symtab_entry_destroy(s1);
- s1 = s2;
- }
- yasm_xfree(symtab);
-}
-
-unsigned long
-elf_symtab_assign_indices(elf_symtab_head *symtab)
-{
- elf_symtab_entry *entry, *prev=NULL;
- unsigned long last_local=0;
-
- if (symtab == NULL)
- yasm_internal_error("symtab is null");
- if (STAILQ_EMPTY(symtab))
- yasm_internal_error(N_("symtab is missing initial dummy entry"));
-
- STAILQ_FOREACH(entry, symtab, qlink) {
- if (prev)
- entry->symindex = prev->symindex + 1;
- if (entry->bind == STB_LOCAL)
- last_local = entry->symindex;
- prev = entry;
- }
- return last_local + 1;
-}
-
-unsigned long
-elf_symtab_write_to_file(FILE *f, elf_symtab_head *symtab,
- yasm_errwarns *errwarns)
-{
- unsigned char buf[SYMTAB_MAXSIZE], *bufp;
- elf_symtab_entry *entry;
- unsigned long size = 0;
-
- if (!symtab)
- yasm_internal_error(N_("symtab is null"));
-
- STAILQ_FOREACH(entry, symtab, qlink) {
-
- yasm_intnum *size_intn=NULL, *value_intn=NULL;
- bufp = buf;
-
- /* get size (if specified); expr overrides stored integer */
- if (entry->xsize) {
- size_intn = yasm_intnum_copy(
- yasm_expr_get_intnum(&entry->xsize, 1));
- if (!size_intn) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("size specifier not an integer expression"));
- yasm_errwarn_propagate(errwarns, entry->xsize->line);
- }
- }
- else
- size_intn = yasm_intnum_create_uint(entry->size);
-
- /* get EQU value for constants */
- if (entry->sym) {
- const yasm_expr *equ_expr_c;
- equ_expr_c = yasm_symrec_get_equ(entry->sym);
-
- if (equ_expr_c != NULL) {
- const yasm_intnum *equ_intn;
- yasm_expr *equ_expr = yasm_expr_copy(equ_expr_c);
- equ_intn = yasm_expr_get_intnum(&equ_expr, 1);
-
- if (equ_intn == NULL) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("EQU value not an integer expression"));
- yasm_errwarn_propagate(errwarns, equ_expr->line);
- } else
- value_intn = yasm_intnum_copy(equ_intn);
- entry->index = SHN_ABS;
- yasm_expr_destroy(equ_expr);
- }
- }
- if (value_intn == NULL)
- value_intn = yasm_intnum_create_uint(entry->value);
-
- /* If symbol is in a TLS section, force its type to TLS. */
- if (entry->sym) {
- yasm_bytecode *precbc;
- yasm_section *sect;
- elf_secthead *shead;
- if (yasm_symrec_get_label(entry->sym, &precbc) &&
- (sect = yasm_bc_get_section(precbc)) &&
- (shead = yasm_section_get_data(sect, &elf_section_data)) &&
- shead->flags & SHF_TLS) {
- entry->type = STT_TLS;
- }
- }
-
- if (!elf_march->write_symtab_entry || !elf_march->symtab_entry_size)
- yasm_internal_error(N_("Unsupported machine for ELF output"));
- elf_march->write_symtab_entry(bufp, entry, value_intn, size_intn);
- fwrite(buf, elf_march->symtab_entry_size, 1, f);
- size += elf_march->symtab_entry_size;
-
- yasm_intnum_destroy(size_intn);
- yasm_intnum_destroy(value_intn);
- }
- return size;
-}
-
-void elf_symtab_set_nonzero(elf_symtab_entry *entry,
- yasm_section *sect,
- elf_section_index sectidx,
- elf_symbol_binding bind,
- elf_symbol_type type,
- yasm_expr *xsize,
- elf_address *value)
-{
- if (!entry)
- yasm_internal_error("NULL entry");
- if (sect) entry->sect = sect;
- if (sectidx) entry->index = sectidx;
- if (bind) entry->bind = bind;
- if (type) entry->type = type;
- if (xsize) entry->xsize = xsize;
- if (value) entry->value = *value;
-}
-
-void
-elf_sym_set_visibility(elf_symtab_entry *entry,
- elf_symbol_vis vis)
-{
- entry->vis = ELF_ST_VISIBILITY(vis);
-}
-
-void
-elf_sym_set_type(elf_symtab_entry *entry,
- elf_symbol_type type)
-{
- entry->type = type;
-}
-
-void
-elf_sym_set_size(elf_symtab_entry *entry,
- struct yasm_expr *size)
-{
- if (entry->xsize)
- yasm_expr_destroy(entry->xsize);
- entry->xsize = size;
-}
-
-int
-elf_sym_in_table(elf_symtab_entry *entry)
-{
- return entry->in_table;
-}
-
-elf_secthead *
-elf_secthead_create(elf_strtab_entry *name,
- elf_section_type type,
- elf_section_flags flags,
- elf_address offset,
- elf_size size)
-{
- elf_secthead *esd = yasm_xmalloc(sizeof(elf_secthead));
-
- esd->type = type;
- esd->flags = flags;
- esd->offset = offset;
- esd->size = yasm_intnum_create_uint(size);
- esd->link = 0;
- esd->info = 0;
- esd->align = 0;
- esd->entsize = 0;
- esd->index = 0;
-
- esd->sym = NULL;
- esd->name = name;
- esd->index = 0;
- esd->rel_name = NULL;
- esd->rel_index = 0;
- esd->rel_offset = 0;
- esd->nreloc = 0;
-
- if (name && (strcmp(name->str, ".symtab") == 0)) {
- if (!elf_march->symtab_entry_size || !elf_march->symtab_entry_align)
- yasm_internal_error(N_("unsupported ELF format"));
- esd->entsize = elf_march->symtab_entry_size;
- esd->align = elf_march->symtab_entry_align;
- }
-
- return esd;
-}
-
-void
-elf_secthead_destroy(elf_secthead *shead)
-{
- if (shead == NULL)
- yasm_internal_error(N_("shead is null"));
-
- yasm_intnum_destroy(shead->size);
-
- yasm_xfree(shead);
-}
-
-static void
-elf_section_data_destroy(void *data)
-{
- elf_secthead_destroy((elf_secthead *)data);
-}
-
-static void
-elf_secthead_print(void *data, FILE *f, int indent_level)
-{
- elf_secthead *sect = data;
- fprintf(f, "%*sname=%s\n", indent_level, "",
- sect->name ? sect->name->str : "<undef>");
- fprintf(f, "%*ssym=\n", indent_level, "");
- yasm_symrec_print(sect->sym, f, indent_level+1);
- fprintf(f, "%*sindex=0x%x\n", indent_level, "", sect->index);
- fprintf(f, "%*sflags=", indent_level, "");
- if (sect->flags & SHF_WRITE)
- fprintf(f, "WRITE ");
- if (sect->flags & SHF_ALLOC)
- fprintf(f, "ALLOC ");
- if (sect->flags & SHF_EXECINSTR)
- fprintf(f, "EXEC ");
- /*if (sect->flags & SHF_MASKPROC)
- fprintf(f, "PROC-SPECIFIC"); */
- fprintf(f, "%*soffset=0x%lx\n", indent_level, "", sect->offset);
- fprintf(f, "%*ssize=0x%lx\n", indent_level, "",
- yasm_intnum_get_uint(sect->size));
- fprintf(f, "%*slink=0x%x\n", indent_level, "", sect->link);
- fprintf(f, "%*salign=%lu\n", indent_level, "", sect->align);
- fprintf(f, "%*snreloc=%ld\n", indent_level, "", sect->nreloc);
-}
-
-unsigned long
-elf_secthead_write_to_file(FILE *f, elf_secthead *shead,
- elf_section_index sindex)
-{
- unsigned char buf[SHDR_MAXSIZE], *bufp = buf;
- shead->index = sindex;
-
- if (shead == NULL)
- yasm_internal_error("shead is null");
-
- if (!elf_march->write_secthead || !elf_march->secthead_size)
- yasm_internal_error(N_("Unsupported machine for ELF output"));
- elf_march->write_secthead(bufp, shead);
- if (fwrite(buf, elf_march->secthead_size, 1, f))
- return elf_march->secthead_size;
- yasm_internal_error(N_("Failed to write an elf section header"));
- return 0;
-}
-
-void
-elf_secthead_append_reloc(yasm_section *sect, elf_secthead *shead,
- elf_reloc_entry *reloc)
-{
- if (sect == NULL)
- yasm_internal_error("sect is null");
- if (shead == NULL)
- yasm_internal_error("shead is null");
- if (reloc == NULL)
- yasm_internal_error("reloc is null");
-
- shead->nreloc++;
- yasm_section_add_reloc(sect, (yasm_reloc *)reloc, elf_reloc_entry_destroy);
-}
-
-char *
-elf_secthead_name_reloc_section(const char *basesect)
-{
- if (!elf_march->reloc_section_prefix)
- {
- yasm_internal_error(N_("Unsupported machine for ELF output"));
- return NULL;
- }
- else
- {
- size_t prepend_length = strlen(elf_march->reloc_section_prefix);
- char *sectname = yasm_xmalloc(prepend_length + strlen(basesect) + 1);
- strcpy(sectname, elf_march->reloc_section_prefix);
- strcat(sectname, basesect);
- return sectname;
- }
-}
-
-void
-elf_handle_reloc_addend(yasm_intnum *intn,
- elf_reloc_entry *reloc,
- unsigned long offset)
-{
- if (!elf_march->handle_reloc_addend)
- yasm_internal_error(N_("Unsupported machine for ELF output"));
- elf_march->handle_reloc_addend(intn, reloc, offset);
-}
-
-unsigned long
-elf_secthead_write_rel_to_file(FILE *f, elf_section_index symtab_idx,
- yasm_section *sect, elf_secthead *shead,
- elf_section_index sindex)
-{
- unsigned char buf[SHDR_MAXSIZE], *bufp = buf;
-
- if (shead == NULL)
- yasm_internal_error("shead is null");
-
- if (!yasm_section_relocs_first(sect))
- return 0; /* no relocations, no .rel.* section header */
-
- shead->rel_index = sindex;
-
- if (!elf_march->write_secthead_rel || !elf_march->secthead_size)
- yasm_internal_error(N_("Unsupported machine for ELF output"));
- elf_march->write_secthead_rel(bufp, shead, symtab_idx, sindex);
- if (fwrite(buf, elf_march->secthead_size, 1, f))
- return elf_march->secthead_size;
- yasm_internal_error(N_("Failed to write an elf section header"));
- return 0;
-}
-
-unsigned long
-elf_secthead_write_relocs_to_file(FILE *f, yasm_section *sect,
- elf_secthead *shead, yasm_errwarns *errwarns)
-{
- elf_reloc_entry *reloc;
- unsigned char buf[RELOC_MAXSIZE], *bufp;
- unsigned long size = 0;
- long pos;
-
- if (shead == NULL)
- yasm_internal_error("shead is null");
-
- reloc = (elf_reloc_entry *)yasm_section_relocs_first(sect);
- if (!reloc)
- return 0;
-
- /* first align section to multiple of 4 */
- pos = ftell(f);
- if (pos == -1) {
- yasm_error_set(YASM_ERROR_IO,
- N_("couldn't read position on output stream"));
- yasm_errwarn_propagate(errwarns, 0);
- }
- pos = (pos + 3) & ~3;
- if (fseek(f, pos, SEEK_SET) < 0) {
- yasm_error_set(YASM_ERROR_IO, N_("couldn't seek on output stream"));
- yasm_errwarn_propagate(errwarns, 0);
- }
- shead->rel_offset = (unsigned long)pos;
-
-
- while (reloc) {
- unsigned int r_type=0, r_sym;
- elf_symtab_entry *esym;
-
- esym = yasm_symrec_get_data(reloc->reloc.sym, &elf_symrec_data);
- if (esym)
- r_sym = esym->symindex;
- else
- r_sym = STN_UNDEF;
-
- if (!elf_march->map_reloc_info_to_type)
- yasm_internal_error(N_("Unsupported arch/machine for elf output"));
- r_type = elf_march->map_reloc_info_to_type(reloc);
-
- bufp = buf;
- if (!elf_march->write_reloc || !elf_march->reloc_entry_size)
- yasm_internal_error(N_("Unsupported arch/machine for elf output"));
- elf_march->write_reloc(bufp, reloc, r_type, r_sym);
- fwrite(buf, elf_march->reloc_entry_size, 1, f);
- size += elf_march->reloc_entry_size;
-
- reloc = (elf_reloc_entry *)
- yasm_section_reloc_next((yasm_reloc *)reloc);
- }
- return size;
-}
-
-elf_section_type
-elf_secthead_get_type(elf_secthead *shead)
-{
- return shead->type;
-}
-
-void
-elf_secthead_set_typeflags(elf_secthead *shead, elf_section_type type,
- elf_section_flags flags)
-{
- shead->type = type;
- shead->flags = flags;
-}
-
-int
-elf_secthead_is_empty(elf_secthead *shead)
-{
- return yasm_intnum_is_zero(shead->size);
-}
-
-yasm_symrec *
-elf_secthead_get_sym(elf_secthead *shead)
-{
- return shead->sym;
-}
-
-elf_section_index
-elf_secthead_get_index(elf_secthead *shead)
-{
- return shead->index;
-}
-
-unsigned long
-elf_secthead_get_align(const elf_secthead *shead)
-{
- return shead->align;
-}
-
-unsigned long
-elf_secthead_set_align(elf_secthead *shead, unsigned long align)
-{
- return shead->align = align;
-}
-
-elf_section_info
-elf_secthead_set_info(elf_secthead *shead, elf_section_info info)
-{
- return shead->info = info;
-}
-
-elf_section_index
-elf_secthead_set_index(elf_secthead *shead, elf_section_index sectidx)
-{
- return shead->index = sectidx;
-}
-
-elf_section_index
-elf_secthead_set_link(elf_secthead *shead, elf_section_index link)
-{
- return shead->link = link;
-}
-
-elf_section_index
-elf_secthead_set_rel_index(elf_secthead *shead, elf_section_index sectidx)
-{
- return shead->rel_index = sectidx;
-}
-
-elf_strtab_entry *
-elf_secthead_set_rel_name(elf_secthead *shead, elf_strtab_entry *entry)
-{
- return shead->rel_name = entry;
-}
-
-elf_size
-elf_secthead_set_entsize(elf_secthead *shead, elf_size size)
-{
- return shead->entsize = size;
-}
-
-yasm_symrec *
-elf_secthead_set_sym(elf_secthead *shead, yasm_symrec *sym)
-{
- return shead->sym = sym;
-}
-
-void
-elf_secthead_add_size(elf_secthead *shead, yasm_intnum *size)
-{
- if (size) {
- yasm_intnum_calc(shead->size, YASM_EXPR_ADD, size);
- }
-}
-
-long
-elf_secthead_set_file_offset(elf_secthead *shead, long pos)
-{
- unsigned long align = shead->align;
-
- if (align == 0 || align == 1) {
- shead->offset = (unsigned long)pos;
- return pos;
- }
- else if (align & (align - 1))
- yasm_internal_error(
- N_("alignment %d for section `%s' is not a power of 2"));
- /*, align, sect->name->str);*/
-
- shead->offset = (unsigned long)((pos + align - 1) & ~(align - 1));
- return (long)shead->offset;
-}
-
-unsigned long
-elf_proghead_get_size(void)
-{
- if (!elf_march->proghead_size)
- yasm_internal_error(N_("Unsupported ELF format for output"));
- return elf_march->proghead_size;
-}
-
-unsigned long
-elf_proghead_write_to_file(FILE *f,
- elf_offset secthead_addr,
- unsigned long secthead_count,
- elf_section_index shstrtab_index)
-{
- unsigned char buf[EHDR_MAXSIZE], *bufp = buf;
-
- YASM_WRITE_8(bufp, ELFMAG0); /* ELF magic number */
- YASM_WRITE_8(bufp, ELFMAG1);
- YASM_WRITE_8(bufp, ELFMAG2);
- YASM_WRITE_8(bufp, ELFMAG3);
-
- if (!elf_march->write_proghead || !elf_march->proghead_size)
- yasm_internal_error(N_("Unsupported ELF format for output"));
- elf_march->write_proghead(&bufp, secthead_addr, secthead_count, shstrtab_index);
-
- if (((unsigned)(bufp - buf)) != elf_march->proghead_size)
- yasm_internal_error(N_("ELF program header is not proper length"));
-
- if (fwrite(buf, elf_march->proghead_size, 1, f))
- return elf_march->proghead_size;
-
- yasm_internal_error(N_("Failed to write ELF program header"));
- return 0;
-}
+/*
+ * ELF object format helpers
+ *
+ * Copyright (C) 2003-2007 Michael Urman
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <util.h>
+
+#include <libyasm.h>
+#define YASM_OBJFMT_ELF_INTERNAL
+#include "elf.h"
+#include "elf-machine.h"
+
+static void elf_section_data_destroy(void *data);
+static void elf_secthead_print(void *data, FILE *f, int indent_level);
+
+const yasm_assoc_data_callback elf_section_data = {
+ elf_section_data_destroy,
+ elf_secthead_print
+};
+
+static void elf_symrec_data_destroy(/*@only@*/ void *d);
+static void elf_symtab_entry_print(void *data, FILE *f, int indent_level);
+static void elf_ssym_symtab_entry_print(void *data, FILE *f, int indent_level);
+
+const yasm_assoc_data_callback elf_symrec_data = {
+ elf_symrec_data_destroy,
+ elf_symtab_entry_print
+};
+
+const yasm_assoc_data_callback elf_ssym_symrec_data = {
+ elf_symrec_data_destroy,
+ elf_ssym_symtab_entry_print
+};
+
+extern elf_machine_handler
+ elf_machine_handler_x86_x86,
+ elf_machine_handler_x86_amd64,
+ elf_machine_handler_x86_x32;
+
+static const elf_machine_handler *elf_machine_handlers[] =
+{
+ &elf_machine_handler_x86_x86,
+ &elf_machine_handler_x86_amd64,
+ &elf_machine_handler_x86_x32,
+ NULL
+};
+static const elf_machine_handler elf_null_machine = {0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0};
+static elf_machine_handler const *elf_march = &elf_null_machine;
+static yasm_symrec **elf_ssyms;
+
+const elf_machine_handler *
+elf_set_arch(yasm_arch *arch, yasm_symtab *symtab, int bits_pref)
+{
+ const char *machine = yasm_arch_get_machine(arch);
+ int i;
+
+ for (i=0, elf_march = elf_machine_handlers[0];
+ elf_march != NULL;
+ elf_march = elf_machine_handlers[++i])
+ {
+ if (yasm__strcasecmp(yasm_arch_keyword(arch), elf_march->arch)==0) {
+ if (yasm__strcasecmp(machine, elf_march->machine)==0) {
+ if (bits_pref == 0 || bits_pref == elf_march->bits)
+ break;
+ } else if (bits_pref == elf_march->bits
+ && yasm__strcasecmp(machine, "amd64") == 0
+ && yasm__strcasecmp(elf_march->machine, "x32") == 0)
+ break;
+ }
+ }
+
+ if (elf_march && elf_march->num_ssyms > 0)
+ {
+ /* Allocate "special" syms */
+ elf_ssyms =
+ yasm_xmalloc(elf_march->num_ssyms * sizeof(yasm_symrec *));
+ for (i=0; (unsigned int)i<elf_march->num_ssyms; i++)
+ {
+ /* FIXME: misuse of NULL bytecode */
+ elf_ssyms[i] = yasm_symtab_define_label(symtab,
+ elf_march->ssyms[i].name,
+ NULL, 0, 0);
+ yasm_symrec_add_data(elf_ssyms[i], &elf_ssym_symrec_data,
+ (void*)&elf_march->ssyms[i]);
+ }
+ }
+
+ return elf_march;
+}
+
+yasm_symrec *
+elf_get_special_sym(const char *name, const char *parser)
+{
+ int i;
+ for (i=0; (unsigned int)i<elf_march->num_ssyms; i++) {
+ if (yasm__strcasecmp(name, elf_march->ssyms[i].name) == 0)
+ return elf_ssyms[i];
+ }
+ return NULL;
+}
+
+/* reloc functions */
+int elf_ssym_has_flag(yasm_symrec *wrt, int flag);
+
+int
+elf_is_wrt_sym_relative(yasm_symrec *wrt)
+{
+ return elf_ssym_has_flag(wrt, ELF_SSYM_SYM_RELATIVE);
+}
+
+int
+elf_is_wrt_pos_adjusted(yasm_symrec *wrt)
+{
+ return elf_ssym_has_flag(wrt, ELF_SSYM_CURPOS_ADJUST);
+}
+
+int
+elf_ssym_has_flag(yasm_symrec *wrt, int flag)
+{
+ int i;
+ for (i=0; (unsigned int)i<elf_march->num_ssyms; i++) {
+ if (elf_ssyms[i] == wrt)
+ return (elf_march->ssyms[i].sym_rel & flag) != 0;
+ }
+ return 0;
+}
+
+/* takes ownership of addr */
+elf_reloc_entry *
+elf_reloc_entry_create(yasm_symrec *sym,
+ yasm_symrec *wrt,
+ yasm_intnum *addr,
+ int rel,
+ size_t valsize,
+ int is_GOT_sym)
+{
+ elf_reloc_entry *entry;
+
+ if (!elf_march->accepts_reloc)
+ yasm_internal_error(N_("Unsupported machine for ELF output"));
+
+ if (!elf_march->accepts_reloc(valsize, wrt))
+ {
+ if (addr)
+ yasm_intnum_destroy(addr);
+ return NULL;
+ }
+
+ if (sym == NULL)
+ yasm_internal_error("sym is null");
+
+ entry = yasm_xmalloc(sizeof(elf_reloc_entry));
+ entry->reloc.sym = sym;
+ entry->reloc.addr = addr;
+ entry->rtype_rel = rel;
+ entry->valsize = valsize;
+ entry->addend = NULL;
+ entry->wrt = wrt;
+ entry->is_GOT_sym = is_GOT_sym;
+
+ return entry;
+}
+
+void
+elf_reloc_entry_destroy(void *entry)
+{
+ if (((elf_reloc_entry*)entry)->addend)
+ yasm_intnum_destroy(((elf_reloc_entry*)entry)->addend);
+ yasm_xfree(entry);
+}
+
+/* strtab functions */
+elf_strtab_entry *
+elf_strtab_entry_create(const char *str)
+{
+ elf_strtab_entry *entry = yasm_xmalloc(sizeof(elf_strtab_entry));
+ entry->str = yasm__xstrdup(str);
+ entry->index = 0;
+ return entry;
+}
+
+void
+elf_strtab_entry_set_str(elf_strtab_entry *entry, const char *str)
+{
+ elf_strtab_entry *last;
+ if (entry->str)
+ yasm_xfree(entry->str);
+ entry->str = yasm__xstrdup(str);
+
+ /* Update all following indices since string length probably changes */
+ last = entry;
+ entry = STAILQ_NEXT(last, qlink);
+ while (entry) {
+ entry->index = last->index + (unsigned long)strlen(last->str) + 1;
+ last = entry;
+ entry = STAILQ_NEXT(last, qlink);
+ }
+}
+
+elf_strtab_head *
+elf_strtab_create()
+{
+ elf_strtab_head *strtab = yasm_xmalloc(sizeof(elf_strtab_head));
+ elf_strtab_entry *entry = yasm_xmalloc(sizeof(elf_strtab_entry));
+
+ STAILQ_INIT(strtab);
+ entry->index = 0;
+ entry->str = yasm__xstrdup("");
+
+ STAILQ_INSERT_TAIL(strtab, entry, qlink);
+ return strtab;
+}
+
+elf_strtab_entry *
+elf_strtab_append_str(elf_strtab_head *strtab, const char *str)
+{
+ elf_strtab_entry *last, *entry;
+
+ if (strtab == NULL)
+ yasm_internal_error("strtab is null");
+ if (STAILQ_EMPTY(strtab))
+ yasm_internal_error("strtab is missing initial dummy entry");
+
+ last = STAILQ_LAST(strtab, elf_strtab_entry, qlink);
+
+ entry = elf_strtab_entry_create(str);
+ entry->index = last->index + (unsigned long)strlen(last->str) + 1;
+
+ STAILQ_INSERT_TAIL(strtab, entry, qlink);
+ return entry;
+}
+
+void
+elf_strtab_destroy(elf_strtab_head *strtab)
+{
+ elf_strtab_entry *s1, *s2;
+
+ if (strtab == NULL)
+ yasm_internal_error("strtab is null");
+ if (STAILQ_EMPTY(strtab))
+ yasm_internal_error("strtab is missing initial dummy entry");
+
+ s1 = STAILQ_FIRST(strtab);
+ while (s1 != NULL) {
+ s2 = STAILQ_NEXT(s1, qlink);
+ yasm_xfree(s1->str);
+ yasm_xfree(s1);
+ s1 = s2;
+ }
+ yasm_xfree(strtab);
+}
+
+unsigned long
+elf_strtab_output_to_file(FILE *f, elf_strtab_head *strtab)
+{
+ unsigned long size = 0;
+ elf_strtab_entry *entry;
+
+ if (strtab == NULL)
+ yasm_internal_error("strtab is null");
+
+ /* consider optimizing tables here */
+ STAILQ_FOREACH(entry, strtab, qlink) {
+ size_t len = 1 + strlen(entry->str);
+ fwrite(entry->str, len, 1, f);
+ size += (unsigned long)len;
+ }
+ return size;
+}
+
+
+
+/* symtab functions */
+elf_symtab_entry *
+elf_symtab_entry_create(elf_strtab_entry *name,
+ yasm_symrec *sym)
+{
+ elf_symtab_entry *entry = yasm_xmalloc(sizeof(elf_symtab_entry));
+ entry->in_table = 0;
+ entry->sym = sym;
+ entry->sect = NULL;
+ entry->name = name;
+ entry->value = 0;
+
+ entry->xsize = NULL;
+ entry->size = 0;
+ entry->index = 0;
+ entry->bind = 0;
+ entry->type = STT_NOTYPE;
+ entry->vis = STV_DEFAULT;
+
+ return entry;
+}
+
+static void
+elf_symtab_entry_destroy(elf_symtab_entry *entry)
+{
+ if (entry == NULL)
+ yasm_internal_error("symtab entry is null");
+
+ yasm_xfree(entry);
+}
+
+static void
+elf_symrec_data_destroy(void *data)
+{
+ /* do nothing, as this stuff is in the symtab anyway... this speaks of bad
+ * design/use or this stuff, i fear */
+
+ /* watch for double-free here ... */
+ /*elf_symtab_entry_destroy((elf_symtab_entry *)data);*/
+}
+
+static void
+elf_symtab_entry_print(void *data, FILE *f, int indent_level)
+{
+ elf_symtab_entry *entry = data;
+ if (entry == NULL)
+ yasm_internal_error("symtab entry is null");
+
+ fprintf(f, "%*sbind=", indent_level, "");
+ switch (entry->bind) {
+ case STB_LOCAL: fprintf(f, "local\n"); break;
+ case STB_GLOBAL: fprintf(f, "global\n"); break;
+ case STB_WEAK: fprintf(f, "weak\n"); break;
+ default: fprintf(f, "undef\n"); break;
+ }
+ fprintf(f, "%*stype=", indent_level, "");
+ switch (entry->type) {
+ case STT_NOTYPE: fprintf(f, "notype\n"); break;
+ case STT_OBJECT: fprintf(f, "object\n"); break;
+ case STT_FUNC: fprintf(f, "func\n"); break;
+ case STT_SECTION: fprintf(f, "section\n");break;
+ case STT_FILE: fprintf(f, "file\n"); break;
+ default: fprintf(f, "undef\n"); break;
+ }
+ fprintf(f, "%*ssize=", indent_level, "");
+ if (entry->xsize)
+ yasm_expr_print(entry->xsize, f);
+ else
+ fprintf(f, "%ld", entry->size);
+ fprintf(f, "\n");
+}
+
+static void
+elf_ssym_symtab_entry_print(void *data, FILE *f, int indent_level)
+{
+ /* TODO */
+}
+
+elf_symtab_head *
+elf_symtab_create()
+{
+ elf_symtab_head *symtab = yasm_xmalloc(sizeof(elf_symtab_head));
+ elf_symtab_entry *entry = yasm_xmalloc(sizeof(elf_symtab_entry));
+
+ STAILQ_INIT(symtab);
+ entry->in_table = 1;
+ entry->sym = NULL;
+ entry->sect = NULL;
+ entry->name = NULL;
+ entry->value = 0;
+ entry->xsize = NULL;
+ entry->size = 0;
+ entry->index = SHN_UNDEF;
+ entry->bind = STB_LOCAL;
+ entry->type = STT_NOTYPE;
+ entry->vis = STV_DEFAULT;
+ entry->symindex = 0;
+ STAILQ_INSERT_TAIL(symtab, entry, qlink);
+ return symtab;
+}
+
+void
+elf_symtab_append_entry(elf_symtab_head *symtab, elf_symtab_entry *entry)
+{
+ if (symtab == NULL)
+ yasm_internal_error("symtab is null");
+ if (entry == NULL)
+ yasm_internal_error("symtab entry is null");
+ if (STAILQ_EMPTY(symtab))
+ yasm_internal_error(N_("symtab is missing initial dummy entry"));
+
+ STAILQ_INSERT_TAIL(symtab, entry, qlink);
+ entry->in_table = 1;
+}
+
+void
+elf_symtab_insert_local_sym(elf_symtab_head *symtab, elf_symtab_entry *entry)
+{
+ elf_symtab_entry *after = STAILQ_FIRST(symtab);
+ elf_symtab_entry *before = NULL;
+
+ while (after && (after->bind == STB_LOCAL)) {
+ before = after;
+ if (before->type == STT_FILE) break;
+ after = STAILQ_NEXT(after, qlink);
+ }
+ STAILQ_INSERT_AFTER(symtab, before, entry, qlink);
+ entry->in_table = 1;
+}
+
+void
+elf_symtab_destroy(elf_symtab_head *symtab)
+{
+ elf_symtab_entry *s1, *s2;
+
+ if (symtab == NULL)
+ yasm_internal_error("symtab is null");
+ if (STAILQ_EMPTY(symtab))
+ yasm_internal_error(N_("symtab is missing initial dummy entry"));
+
+ s1 = STAILQ_FIRST(symtab);
+ while (s1 != NULL) {
+ s2 = STAILQ_NEXT(s1, qlink);
+ elf_symtab_entry_destroy(s1);
+ s1 = s2;
+ }
+ yasm_xfree(symtab);
+}
+
+unsigned long
+elf_symtab_assign_indices(elf_symtab_head *symtab)
+{
+ elf_symtab_entry *entry, *prev=NULL;
+ unsigned long last_local=0;
+
+ if (symtab == NULL)
+ yasm_internal_error("symtab is null");
+ if (STAILQ_EMPTY(symtab))
+ yasm_internal_error(N_("symtab is missing initial dummy entry"));
+
+ STAILQ_FOREACH(entry, symtab, qlink) {
+ if (prev)
+ entry->symindex = prev->symindex + 1;
+ if (entry->bind == STB_LOCAL)
+ last_local = entry->symindex;
+ prev = entry;
+ }
+ return last_local + 1;
+}
+
+unsigned long
+elf_symtab_write_to_file(FILE *f, elf_symtab_head *symtab,
+ yasm_errwarns *errwarns)
+{
+ unsigned char buf[SYMTAB_MAXSIZE], *bufp;
+ elf_symtab_entry *entry;
+ unsigned long size = 0;
+
+ if (!symtab)
+ yasm_internal_error(N_("symtab is null"));
+
+ STAILQ_FOREACH(entry, symtab, qlink) {
+
+ yasm_intnum *size_intn=NULL, *value_intn=NULL;
+ bufp = buf;
+
+ /* get size (if specified); expr overrides stored integer */
+ if (entry->xsize) {
+ size_intn = yasm_intnum_copy(
+ yasm_expr_get_intnum(&entry->xsize, 1));
+ if (!size_intn) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("size specifier not an integer expression"));
+ yasm_errwarn_propagate(errwarns, entry->xsize->line);
+ }
+ }
+ else
+ size_intn = yasm_intnum_create_uint(entry->size);
+
+ /* get EQU value for constants */
+ if (entry->sym) {
+ const yasm_expr *equ_expr_c;
+ equ_expr_c = yasm_symrec_get_equ(entry->sym);
+
+ if (equ_expr_c != NULL) {
+ const yasm_intnum *equ_intn;
+ yasm_expr *equ_expr = yasm_expr_copy(equ_expr_c);
+ equ_intn = yasm_expr_get_intnum(&equ_expr, 1);
+
+ if (equ_intn == NULL) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("EQU value not an integer expression"));
+ yasm_errwarn_propagate(errwarns, equ_expr->line);
+ } else
+ value_intn = yasm_intnum_copy(equ_intn);
+ entry->index = SHN_ABS;
+ yasm_expr_destroy(equ_expr);
+ }
+ }
+ if (value_intn == NULL)
+ value_intn = yasm_intnum_create_uint(entry->value);
+
+ /* If symbol is in a TLS section, force its type to TLS. */
+ if (entry->sym) {
+ yasm_bytecode *precbc;
+ yasm_section *sect;
+ elf_secthead *shead;
+ if (yasm_symrec_get_label(entry->sym, &precbc) &&
+ (sect = yasm_bc_get_section(precbc)) &&
+ (shead = yasm_section_get_data(sect, &elf_section_data)) &&
+ shead->flags & SHF_TLS) {
+ entry->type = STT_TLS;
+ }
+ }
+
+ if (!elf_march->write_symtab_entry || !elf_march->symtab_entry_size)
+ yasm_internal_error(N_("Unsupported machine for ELF output"));
+ elf_march->write_symtab_entry(bufp, entry, value_intn, size_intn);
+ fwrite(buf, elf_march->symtab_entry_size, 1, f);
+ size += elf_march->symtab_entry_size;
+
+ yasm_intnum_destroy(size_intn);
+ yasm_intnum_destroy(value_intn);
+ }
+ return size;
+}
+
+void elf_symtab_set_nonzero(elf_symtab_entry *entry,
+ yasm_section *sect,
+ elf_section_index sectidx,
+ elf_symbol_binding bind,
+ elf_symbol_type type,
+ yasm_expr *xsize,
+ elf_address *value)
+{
+ if (!entry)
+ yasm_internal_error("NULL entry");
+ if (sect) entry->sect = sect;
+ if (sectidx) entry->index = sectidx;
+ if (bind) entry->bind = bind;
+ if (type) entry->type = type;
+ if (xsize) entry->xsize = xsize;
+ if (value) entry->value = *value;
+}
+
+void
+elf_sym_set_visibility(elf_symtab_entry *entry,
+ elf_symbol_vis vis)
+{
+ entry->vis = ELF_ST_VISIBILITY(vis);
+}
+
+void
+elf_sym_set_type(elf_symtab_entry *entry,
+ elf_symbol_type type)
+{
+ entry->type = type;
+}
+
+void
+elf_sym_set_size(elf_symtab_entry *entry,
+ struct yasm_expr *size)
+{
+ if (entry->xsize)
+ yasm_expr_destroy(entry->xsize);
+ entry->xsize = size;
+}
+
+int
+elf_sym_in_table(elf_symtab_entry *entry)
+{
+ return entry->in_table;
+}
+
+elf_secthead *
+elf_secthead_create(elf_strtab_entry *name,
+ elf_section_type type,
+ elf_section_flags flags,
+ elf_address offset,
+ elf_size size)
+{
+ elf_secthead *esd = yasm_xmalloc(sizeof(elf_secthead));
+
+ esd->type = type;
+ esd->flags = flags;
+ esd->offset = offset;
+ esd->size = yasm_intnum_create_uint(size);
+ esd->link = 0;
+ esd->info = 0;
+ esd->align = 0;
+ esd->entsize = 0;
+ esd->index = 0;
+
+ esd->sym = NULL;
+ esd->name = name;
+ esd->index = 0;
+ esd->rel_name = NULL;
+ esd->rel_index = 0;
+ esd->rel_offset = 0;
+ esd->nreloc = 0;
+
+ if (name && (strcmp(name->str, ".symtab") == 0)) {
+ if (!elf_march->symtab_entry_size || !elf_march->symtab_entry_align)
+ yasm_internal_error(N_("unsupported ELF format"));
+ esd->entsize = elf_march->symtab_entry_size;
+ esd->align = elf_march->symtab_entry_align;
+ }
+
+ return esd;
+}
+
+void
+elf_secthead_destroy(elf_secthead *shead)
+{
+ if (shead == NULL)
+ yasm_internal_error(N_("shead is null"));
+
+ yasm_intnum_destroy(shead->size);
+
+ yasm_xfree(shead);
+}
+
+static void
+elf_section_data_destroy(void *data)
+{
+ elf_secthead_destroy((elf_secthead *)data);
+}
+
+static void
+elf_secthead_print(void *data, FILE *f, int indent_level)
+{
+ elf_secthead *sect = data;
+ fprintf(f, "%*sname=%s\n", indent_level, "",
+ sect->name ? sect->name->str : "<undef>");
+ fprintf(f, "%*ssym=\n", indent_level, "");
+ yasm_symrec_print(sect->sym, f, indent_level+1);
+ fprintf(f, "%*sindex=0x%x\n", indent_level, "", sect->index);
+ fprintf(f, "%*sflags=", indent_level, "");
+ if (sect->flags & SHF_WRITE)
+ fprintf(f, "WRITE ");
+ if (sect->flags & SHF_ALLOC)
+ fprintf(f, "ALLOC ");
+ if (sect->flags & SHF_EXECINSTR)
+ fprintf(f, "EXEC ");
+ /*if (sect->flags & SHF_MASKPROC)
+ fprintf(f, "PROC-SPECIFIC"); */
+ fprintf(f, "%*soffset=0x%lx\n", indent_level, "", sect->offset);
+ fprintf(f, "%*ssize=0x%lx\n", indent_level, "",
+ yasm_intnum_get_uint(sect->size));
+ fprintf(f, "%*slink=0x%x\n", indent_level, "", sect->link);
+ fprintf(f, "%*salign=%lu\n", indent_level, "", sect->align);
+ fprintf(f, "%*snreloc=%ld\n", indent_level, "", sect->nreloc);
+}
+
+unsigned long
+elf_secthead_write_to_file(FILE *f, elf_secthead *shead,
+ elf_section_index sindex)
+{
+ unsigned char buf[SHDR_MAXSIZE], *bufp = buf;
+ shead->index = sindex;
+
+ if (shead == NULL)
+ yasm_internal_error("shead is null");
+
+ if (!elf_march->write_secthead || !elf_march->secthead_size)
+ yasm_internal_error(N_("Unsupported machine for ELF output"));
+ elf_march->write_secthead(bufp, shead);
+ if (fwrite(buf, elf_march->secthead_size, 1, f))
+ return elf_march->secthead_size;
+ yasm_internal_error(N_("Failed to write an elf section header"));
+ return 0;
+}
+
+void
+elf_secthead_append_reloc(yasm_section *sect, elf_secthead *shead,
+ elf_reloc_entry *reloc)
+{
+ if (sect == NULL)
+ yasm_internal_error("sect is null");
+ if (shead == NULL)
+ yasm_internal_error("shead is null");
+ if (reloc == NULL)
+ yasm_internal_error("reloc is null");
+
+ shead->nreloc++;
+ yasm_section_add_reloc(sect, (yasm_reloc *)reloc, elf_reloc_entry_destroy);
+}
+
+char *
+elf_secthead_name_reloc_section(const char *basesect)
+{
+ if (!elf_march->reloc_section_prefix)
+ {
+ yasm_internal_error(N_("Unsupported machine for ELF output"));
+ return NULL;
+ }
+ else
+ {
+ size_t prepend_length = strlen(elf_march->reloc_section_prefix);
+ char *sectname = yasm_xmalloc(prepend_length + strlen(basesect) + 1);
+ strcpy(sectname, elf_march->reloc_section_prefix);
+ strcat(sectname, basesect);
+ return sectname;
+ }
+}
+
+void
+elf_handle_reloc_addend(yasm_intnum *intn,
+ elf_reloc_entry *reloc,
+ unsigned long offset)
+{
+ if (!elf_march->handle_reloc_addend)
+ yasm_internal_error(N_("Unsupported machine for ELF output"));
+ elf_march->handle_reloc_addend(intn, reloc, offset);
+}
+
+unsigned long
+elf_secthead_write_rel_to_file(FILE *f, elf_section_index symtab_idx,
+ yasm_section *sect, elf_secthead *shead,
+ elf_section_index sindex)
+{
+ unsigned char buf[SHDR_MAXSIZE], *bufp = buf;
+
+ if (shead == NULL)
+ yasm_internal_error("shead is null");
+
+ if (!yasm_section_relocs_first(sect))
+ return 0; /* no relocations, no .rel.* section header */
+
+ shead->rel_index = sindex;
+
+ if (!elf_march->write_secthead_rel || !elf_march->secthead_size)
+ yasm_internal_error(N_("Unsupported machine for ELF output"));
+ elf_march->write_secthead_rel(bufp, shead, symtab_idx, sindex);
+ if (fwrite(buf, elf_march->secthead_size, 1, f))
+ return elf_march->secthead_size;
+ yasm_internal_error(N_("Failed to write an elf section header"));
+ return 0;
+}
+
+unsigned long
+elf_secthead_write_relocs_to_file(FILE *f, yasm_section *sect,
+ elf_secthead *shead, yasm_errwarns *errwarns)
+{
+ elf_reloc_entry *reloc;
+ unsigned char buf[RELOC_MAXSIZE], *bufp;
+ unsigned long size = 0;
+ long pos;
+
+ if (shead == NULL)
+ yasm_internal_error("shead is null");
+
+ reloc = (elf_reloc_entry *)yasm_section_relocs_first(sect);
+ if (!reloc)
+ return 0;
+
+ /* first align section to multiple of 4 */
+ pos = ftell(f);
+ if (pos == -1) {
+ yasm_error_set(YASM_ERROR_IO,
+ N_("couldn't read position on output stream"));
+ yasm_errwarn_propagate(errwarns, 0);
+ }
+ pos = (pos + 3) & ~3;
+ if (fseek(f, pos, SEEK_SET) < 0) {
+ yasm_error_set(YASM_ERROR_IO, N_("couldn't seek on output stream"));
+ yasm_errwarn_propagate(errwarns, 0);
+ }
+ shead->rel_offset = (unsigned long)pos;
+
+
+ while (reloc) {
+ unsigned int r_type=0, r_sym;
+ elf_symtab_entry *esym;
+
+ esym = yasm_symrec_get_data(reloc->reloc.sym, &elf_symrec_data);
+ if (esym)
+ r_sym = esym->symindex;
+ else
+ r_sym = STN_UNDEF;
+
+ if (!elf_march->map_reloc_info_to_type)
+ yasm_internal_error(N_("Unsupported arch/machine for elf output"));
+ r_type = elf_march->map_reloc_info_to_type(reloc);
+
+ bufp = buf;
+ if (!elf_march->write_reloc || !elf_march->reloc_entry_size)
+ yasm_internal_error(N_("Unsupported arch/machine for elf output"));
+ elf_march->write_reloc(bufp, reloc, r_type, r_sym);
+ fwrite(buf, elf_march->reloc_entry_size, 1, f);
+ size += elf_march->reloc_entry_size;
+
+ reloc = (elf_reloc_entry *)
+ yasm_section_reloc_next((yasm_reloc *)reloc);
+ }
+ return size;
+}
+
+elf_section_type
+elf_secthead_get_type(elf_secthead *shead)
+{
+ return shead->type;
+}
+
+void
+elf_secthead_set_typeflags(elf_secthead *shead, elf_section_type type,
+ elf_section_flags flags)
+{
+ shead->type = type;
+ shead->flags = flags;
+}
+
+int
+elf_secthead_is_empty(elf_secthead *shead)
+{
+ return yasm_intnum_is_zero(shead->size);
+}
+
+yasm_symrec *
+elf_secthead_get_sym(elf_secthead *shead)
+{
+ return shead->sym;
+}
+
+elf_section_index
+elf_secthead_get_index(elf_secthead *shead)
+{
+ return shead->index;
+}
+
+unsigned long
+elf_secthead_get_align(const elf_secthead *shead)
+{
+ return shead->align;
+}
+
+unsigned long
+elf_secthead_set_align(elf_secthead *shead, unsigned long align)
+{
+ return shead->align = align;
+}
+
+elf_section_info
+elf_secthead_set_info(elf_secthead *shead, elf_section_info info)
+{
+ return shead->info = info;
+}
+
+elf_section_index
+elf_secthead_set_index(elf_secthead *shead, elf_section_index sectidx)
+{
+ return shead->index = sectidx;
+}
+
+elf_section_index
+elf_secthead_set_link(elf_secthead *shead, elf_section_index link)
+{
+ return shead->link = link;
+}
+
+elf_section_index
+elf_secthead_set_rel_index(elf_secthead *shead, elf_section_index sectidx)
+{
+ return shead->rel_index = sectidx;
+}
+
+elf_strtab_entry *
+elf_secthead_set_rel_name(elf_secthead *shead, elf_strtab_entry *entry)
+{
+ return shead->rel_name = entry;
+}
+
+elf_size
+elf_secthead_set_entsize(elf_secthead *shead, elf_size size)
+{
+ return shead->entsize = size;
+}
+
+yasm_symrec *
+elf_secthead_set_sym(elf_secthead *shead, yasm_symrec *sym)
+{
+ return shead->sym = sym;
+}
+
+void
+elf_secthead_add_size(elf_secthead *shead, yasm_intnum *size)
+{
+ if (size) {
+ yasm_intnum_calc(shead->size, YASM_EXPR_ADD, size);
+ }
+}
+
+long
+elf_secthead_set_file_offset(elf_secthead *shead, long pos)
+{
+ unsigned long align = shead->align;
+
+ if (align == 0 || align == 1) {
+ shead->offset = (unsigned long)pos;
+ return pos;
+ }
+ else if (align & (align - 1))
+ yasm_internal_error(
+ N_("alignment %d for section `%s' is not a power of 2"));
+ /*, align, sect->name->str);*/
+
+ shead->offset = (unsigned long)((pos + align - 1) & ~(align - 1));
+ return (long)shead->offset;
+}
+
+unsigned long
+elf_proghead_get_size(void)
+{
+ if (!elf_march->proghead_size)
+ yasm_internal_error(N_("Unsupported ELF format for output"));
+ return elf_march->proghead_size;
+}
+
+unsigned long
+elf_proghead_write_to_file(FILE *f,
+ elf_offset secthead_addr,
+ unsigned long secthead_count,
+ elf_section_index shstrtab_index)
+{
+ unsigned char buf[EHDR_MAXSIZE], *bufp = buf;
+
+ YASM_WRITE_8(bufp, ELFMAG0); /* ELF magic number */
+ YASM_WRITE_8(bufp, ELFMAG1);
+ YASM_WRITE_8(bufp, ELFMAG2);
+ YASM_WRITE_8(bufp, ELFMAG3);
+
+ if (!elf_march->write_proghead || !elf_march->proghead_size)
+ yasm_internal_error(N_("Unsupported ELF format for output"));
+ elf_march->write_proghead(&bufp, secthead_addr, secthead_count, shstrtab_index);
+
+ if (((unsigned)(bufp - buf)) != elf_march->proghead_size)
+ yasm_internal_error(N_("ELF program header is not proper length"));
+
+ if (fwrite(buf, elf_march->proghead_size, 1, f))
+ return elf_march->proghead_size;
+
+ yasm_internal_error(N_("Failed to write ELF program header"));
+ return 0;
+}
diff --git a/contrib/tools/yasm/modules/objfmts/elf/elf.h b/contrib/tools/yasm/modules/objfmts/elf/elf.h
index 73498477e8..fce629ae45 100644
--- a/contrib/tools/yasm/modules/objfmts/elf/elf.h
+++ b/contrib/tools/yasm/modules/objfmts/elf/elf.h
@@ -1,532 +1,532 @@
-/*
- * ELF object format helpers
- *
- * Copyright (C) 2003-2007 Michael Urman
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef ELF_H_INCLUDED
-#define ELF_H_INCLUDED
-
-typedef struct elf_reloc_entry elf_reloc_entry;
-typedef struct elf_reloc_head elf_reloc_head;
-typedef struct elf_secthead elf_secthead;
-typedef struct elf_strtab_entry elf_strtab_entry;
-typedef struct elf_strtab_head elf_strtab_head;
-typedef struct elf_symtab_entry elf_symtab_entry;
-typedef struct elf_symtab_head elf_symtab_head;
-
-typedef struct elf_machine_handler elf_machine_handler;
-
-typedef unsigned long elf_address;
-typedef unsigned long elf_offset;
-typedef unsigned long elf_size;
-typedef unsigned long elf_section_info;
-
-typedef enum {
- ET_NONE = 0,
- ET_REL = 1, /* Relocatable */
- ET_EXEC = 2, /* Executable */
- ET_DYN = 3, /* Shared object */
- ET_CORE = 4, /* Core */
- ET_LOOS = 0xfe00, /* Environment specific */
- ET_HIOS = 0xfeff,
- ET_LOPROC = 0xff00, /* Processor specific */
- ET_HIPROC = 0xffff
-} elf_file_type;
-
-typedef enum {
- EM_NONE = 0,
- EM_M32 = 1, /* AT&T WE 32100 */
- EM_SPARC = 2, /* SPARC */
- EM_386 = 3, /* Intel 80386 */
- EM_68K = 4, /* Motorola 68000 */
- EM_88K = 5, /* Motorola 88000 */
- EM_860 = 7, /* Intel 80860 */
- EM_MIPS = 8, /* MIPS RS3000 */
-
- EM_S370 = 9, /* IBM System/370 */
- EM_MIPS_RS4_BE = 10, /* MIPS R4000 Big-Endian (dep)*/
- EM_PARISC = 15, /* HPPA */
- EM_SPARC32PLUS = 18, /* SPARC v8plus */
- EM_PPC = 20, /* PowerPC 32-bit */
- EM_PPC64 = 21, /* PowerPC 64-bit */
- EM_ARM = 40, /* ARM */
- EM_SPARCV9 = 43, /* SPARC v9 64-bit */
- EM_IA_64 = 50, /* Intel IA-64 */
- EM_X86_64 = 62, /* AMD x86-64 */
- EM_ALPHA = 0x9026 /* Alpha (no ABI) */
-} elf_machine;
-
-typedef enum {
- ELFMAG0 = 0x7f,
- ELFMAG1 = 0x45,
- ELFMAG2 = 0x4c,
- ELFMAG3 = 0x46
-} elf_magic;
-
-typedef enum {
- EV_NONE = 0, /* invalid */
- EV_CURRENT = 1 /* current */
-} elf_version;
-
-typedef enum {
- EI_MAG0 = 0, /* File id */
- EI_MAG1 = 1,
- EI_MAG2 = 2,
- EI_MAG3 = 3,
- EI_CLASS = 4, /* File class */
- EI_DATA = 5, /* Data encoding */
- EI_VERSION = 6, /* File version */
- EI_OSABI = 7, /* OS and ABI */
- EI_ABIVERSION = 8, /* version of ABI */
-
- EI_PAD = 9, /* Pad to end; start here */
- EI_NIDENT = 16 /* Sizeof e_ident[] */
-} elf_identification_index;
-
-typedef enum {
- ELFOSABI_SYSV = 0, /* System V ABI */
- ELFOSABI_HPUX = 1, /* HP-UX os */
- ELFOSABI_STANDALONE = 255 /* Standalone / embedded app */
-} elf_osabi_index;
-
-typedef enum {
- ELFCLASSNONE = 0, /* invalid */
- ELFCLASS32 = 1, /* 32-bit */
- ELFCLASS64 = 2 /* 64-bit */
-} elf_class;
-
-typedef enum {
- ELFDATANONE = 0,
- ELFDATA2LSB = 1,
- ELFDATA2MSB = 2
-} elf_data_encoding;
-
-/* elf section types - index of semantics */
-typedef enum {
- SHT_NULL = 0, /* inactive section - no associated data */
- SHT_PROGBITS = 1, /* defined by program for its own meaning */
- SHT_SYMTAB = 2, /* symbol table (primarily) for linking */
- SHT_STRTAB = 3, /* string table - symbols need names */
- SHT_RELA = 4, /* relocation entries w/ explicit addends */
- SHT_HASH = 5, /* symbol hash table - for dynamic linking */
- SHT_DYNAMIC = 6, /* information for dynamic linking */
- SHT_NOTE = 7, /* extra data marking the file somehow */
- SHT_NOBITS = 8, /* no stored data, but occupies runtime space */
- SHT_REL = 9, /* relocations entries w/o explicit addends */
- SHT_SHLIB = 10, /* reserved; unspecified semantics */
- SHT_DYNSYM = 11, /* like symtab, but more for dynamic linking */
-
- SHT_LOOS = 0x60000000, /* reserved for environment specific use */
- SHT_HIOS = 0x6fffffff,
- SHT_LOPROC = 0x70000000, /* reserved for processor specific semantics */
- SHT_HIPROC = 0x7fffffff/*,
- SHT_LOUSER = 0x80000000,*/ /* reserved for applications; safe */
- /*SHT_HIUSER = 0xffffffff*/
-} elf_section_type;
-
-/* elf section flags - bitfield of attributes */
-typedef enum {
- SHF_WRITE = 0x1, /* data should be writable at runtime */
- SHF_ALLOC = 0x2, /* occupies memory at runtime */
- SHF_EXECINSTR = 0x4, /* contains machine instructions */
- SHF_MERGE = 0x10, /* data can be merged */
- SHF_STRINGS = 0x20, /* contains 0-terminated strings */
- SHF_GROUP = 0x200, /* member of a section group */
- SHF_TLS = 0x400, /* thread local storage */
- SHF_MASKOS = 0x0f000000/*,*//* environment specific use */
- /*SHF_MASKPROC = 0xf0000000*/ /* bits reserved for processor specific needs */
-} elf_section_flags;
-
-/* elf section index - just the special ones */
-typedef enum {
- SHN_UNDEF = 0, /* undefined symbol; requires other global */
- SHN_LORESERVE = 0xff00, /* reserved for various semantics */
- SHN_LOPROC = 0xff00, /* reserved for processor specific semantics */
- SHN_HIPROC = 0xff1f,
- SHN_LOOS = 0xff20, /* reserved for environment specific use */
- SHN_HIOS = 0xff3f,
- SHN_ABS = 0xfff1, /* associated symbols don't change on reloc */
- SHN_COMMON = 0xfff2, /* associated symbols refer to unallocated */
- SHN_HIRESERVE = 0xffff
-} elf_section_index;
-
-/* elf symbol binding - index of visibility/behavior */
-typedef enum {
- STB_LOCAL = 0, /* invisible outside defining file */
- STB_GLOBAL = 1, /* visible to all combined object files */
- STB_WEAK = 2, /* global but lower precedence */
-
- STB_LOOS = 10, /* Environment specific use */
- STB_HIOS = 12,
- STB_LOPROC = 13, /* reserved for processor specific semantics */
- STB_HIPROC = 15
-} elf_symbol_binding;
-
-/* elf symbol type - index of classifications */
-typedef enum {
- STT_NOTYPE = 0, /* type not specified */
- STT_OBJECT = 1, /* data object such as a variable, array, etc */
- STT_FUNC = 2, /* a function or executable code */
- STT_SECTION = 3, /* a section: often for relocation, STB_LOCAL */
- STT_FILE = 4, /* often source filename: STB_LOCAL, SHN_ABS */
- STT_COMMON = 5, /* Uninitialized common block. */
- STT_TLS = 6, /* TLS object. */
- STT_NUM = 7,
-
- STT_LOOS = 10, /* Environment specific use */
- STT_HIOS = 12,
- STT_LOPROC = 13, /* reserved for processor specific semantics */
- STT_HIPROC = 15
-} elf_symbol_type;
-
-typedef enum {
- STN_UNDEF = 0
-} elf_symbol_index;
-
-/* elf symbol visibility - lower two bits of OTHER field */
-typedef enum {
- STV_DEFAULT = 0, /* Default symbol visibility rules */
- STV_INTERNAL = 1, /* Processor specific hidden class */
- STV_HIDDEN = 2, /* Sym unavailable in other modules */
- STV_PROTECTED = 3 /* Not preemptable, not exported */
-} elf_symbol_vis;
-
-
-/* internal only object definitions */
-#ifdef YASM_OBJFMT_ELF_INTERNAL
-
-#define ELF_VISIBILITY_MASK 0x03
-#define ELF_ST_VISIBILITY(v) ((v) & ELF_VISIBILITY_MASK)
-
-#define ELF32_ST_INFO(bind, type) (((bind) << 4) + ((type) & 0xf))
-#define ELF32_R_INFO(s,t) (((s)<<8)+(unsigned char)(t))
-#define ELF32_ST_OTHER(vis) ELF_ST_VISIBILITY(vis)
-
-#define ELF64_ST_INFO(bind, type) (((bind) << 4) + ((type) & 0xf))
-#define ELF64_R_INFO(s,t) (((s)<<32) + ((t) & 0xffffffffL))
-#define ELF64_ST_OTHER(vis) ELF_ST_VISIBILITY(vis)
-
-#define EHDR32_SIZE 52
-#define EHDR64_SIZE 64
-#define EHDR_MAXSIZE 64
-
-#define SHDR32_SIZE 40
-#define SHDR64_SIZE 64
-#define SHDR_MAXSIZE 64
-
-#define SYMTAB32_SIZE 16
-#define SYMTAB64_SIZE 24
-#define SYMTAB_MAXSIZE 24
-
-#define SYMTAB32_ALIGN 4
-#define SYMTAB64_ALIGN 8
-
-#define RELOC32_SIZE 8
-#define RELOC32A_SIZE 12
-#define RELOC64_SIZE 16
-#define RELOC64A_SIZE 24
-#define RELOC_MAXSIZE 24
-
-#define RELOC32_ALIGN 4
-#define RELOC64_ALIGN 8
-
-
-/* elf relocation type - index of semantics
- *
- * A = Addend (r_addend for RELA, value at location for REL)
- * B = Base address
- * G = Offset into global offset table (GOT)
- * GOT = Address of the global offset table (GOT)
- * L = Location of procedure linkage table (PLT)
- * P = Location of location being relocated (r_offset)
- * S = Value of symbol
- */
-typedef enum {
- R_386_NONE = 0, /* none */
- R_386_32 = 1, /* word32, S + A */
- R_386_PC32 = 2, /* word32, S + A - P */
- R_386_GOT32 = 3, /* word32, G + A - P */
- R_386_PLT32 = 4, /* word32, L + A - P */
- R_386_COPY = 5, /* none */
- R_386_GLOB_DAT = 6, /* word32, S */
- R_386_JMP_SLOT = 7, /* word32, S */
- R_386_RELATIVE = 8, /* word32, B + A */
- R_386_GOTOFF = 9, /* word32, S + A - GOT */
- R_386_GOTPC = 10, /* word32, GOT + A - P */
- R_386_TLS_TPOFF = 14, /* Negative offset in static TLS block (GNU
- version) */
- R_386_TLS_IE = 15, /* Absolute address of GOT entry for negative
- static TLS block offset */
- R_386_TLS_GOTIE = 16, /* GOT entry for negative static TLS block
- offset */
- R_386_TLS_LE = 17, /* Negative offset relative to static TLS
- (GNU version) */
- R_386_TLS_GD = 18, /* Direct 32 bit for GNU version of GD TLS */
- R_386_TLS_LDM = 19, /* Direct 32 bit for GNU version of LD TLS
- in LE code */
- R_386_16 = 20, /* word16, S + A (GNU extension) */
- R_386_PC16 = 21, /* word16, S + A - P (GNU extension) */
- R_386_8 = 22, /* word8, S + A (GNU extension) */
- R_386_PC8 = 23, /* word8, S + A - P (GNU extension) */
- R_386_TLS_GD_32 = 24, /* Direct 32 bit for GD TLS */
- R_386_TLS_GD_PUSH = 25, /* Tag for pushl in GD TLS code */
- R_386_TLS_GD_CALL = 26, /* Relocation for call to */
- R_386_TLS_GD_POP = 27, /* Tag for popl in GD TLS code */
- R_386_TLS_LDM_32 = 28, /* Direct 32 bit for local dynamic code */
- R_386_TLS_LDM_PUSH = 29, /* Tag for pushl in LDM TLS code */
- R_386_TLS_LDM_CALL = 30, /* Relocation for call to */
- R_386_TLS_LDM_POP = 31, /* Tag for popl in LDM TLS code */
- R_386_TLS_LDO_32 = 32, /* Offset relative to TLS block */
- R_386_TLS_IE_32 = 33, /* GOT entry for static TLS block */
- R_386_TLS_LE_32 = 34, /* Offset relative to static TLS block */
- R_386_TLS_DTPMOD32 = 35, /* ID of module containing symbol */
- R_386_TLS_DTPOFF32 = 36, /* Offset in TLS block */
- R_386_TLS_TPOFF32 = 37, /* Offset in static TLS block */
- R_386_TLS_GOTDESC = 39,
- R_386_TLS_DESC_CALL = 40,
- R_386_TLS_DESC = 41
-} elf_386_relocation_type;
-
-typedef enum {
- R_X86_64_NONE = 0, /* none */
- R_X86_64_64 = 1, /* word64, S + A */
- R_X86_64_PC32 = 2, /* word32, S + A - P */
- R_X86_64_GOT32 = 3, /* word32, G + A */
- R_X86_64_PLT32 = 4, /* word32, L + A - P */
- R_X86_64_COPY = 5, /* none */
- R_X86_64_GLOB_DAT = 6, /* word64, S, set GOT entry to data address */
- R_X86_64_JMP_SLOT = 7, /* word64, S, set GOT entry to code address */
- R_X86_64_RELATIVE = 8, /* word64, B + A */
- R_X86_64_GOTPCREL = 9, /* word32, G + GOT + A - P */
- R_X86_64_32 = 10, /* word32 (zero extend), S + A */
- R_X86_64_32S = 11, /* word32 (sign extend), S + A */
- R_X86_64_16 = 12, /* word16, S + A */
- R_X86_64_PC16 = 13, /* word16, S + A - P */
- R_X86_64_8 = 14, /* word8, S + A */
- R_X86_64_PC8 = 15, /* word8, S + A - P */
- R_X86_64_DPTMOD64 = 16, /* word64, ID of module containing symbol */
- R_X86_64_DTPOFF64 = 17, /* word64, offset in TLS block */
- R_X86_64_TPOFF64 = 18, /* word64, offset in initial TLS block */
- R_X86_64_TLSGD = 19, /* word32, PC-rel offset to GD GOT block */
- R_X86_64_TLSLD = 20, /* word32, PC-rel offset to LD GOT block */
- R_X86_64_DTPOFF32 = 21, /* word32, offset to TLS block */
- R_X86_64_GOTTPOFF = 22, /* word32, PC-rel offset to IE GOT entry */
- R_X86_64_TPOFF32 = 23, /* word32, offset in initial TLS block */
- R_X86_64_PC64 = 24, /* word64, PC relative */
- R_X86_64_GOTOFF64 = 25, /* word64, offset to GOT */
- R_X86_64_GOTPC32 = 26, /* word32, signed pc relative to GOT */
- R_X86_64_GOT64 = 27, /* word64, GOT entry offset */
- R_X86_64_GOTPCREL64 = 28, /* word64, signed pc relative to GOT entry */
- R_X86_64_GOTPC64 = 29, /* word64, signed pc relative to GOT */
- R_X86_64_GOTPLT64 = 30, /* like GOT64, but indicates PLT entry needed */
- R_X86_64_PLTOFF64 = 31, /* word64, GOT relative offset to PLT entry */
- R_X86_64_GOTPC32_TLSDESC = 34, /* GOT offset for TLS descriptor */
- R_X86_64_TLSDESC_CALL = 35, /* Marker for call through TLS descriptor */
- R_X86_64_TLSDESC = 36 /* TLS descriptor */
-} elf_x86_64_relocation_type;
-
-struct elf_secthead {
- elf_section_type type;
- elf_section_flags flags;
- elf_address offset;
- yasm_intnum *size;
- elf_section_index link;
- elf_section_info info; /* see note ESD1 */
- unsigned long align;
- elf_size entsize;
-
- yasm_symrec *sym;
- elf_strtab_entry *name;
- elf_section_index index;
-
- elf_strtab_entry *rel_name;
- elf_section_index rel_index;
- elf_address rel_offset;
- unsigned long nreloc;
-};
-
-/* Note ESD1:
- * for section types SHT_REL, SHT_RELA:
- * link -> index of associated symbol table
- * info -> index of relocated section
- * for section types SHT_SYMTAB, SHT_DYNSYM:
- * link -> index of associated string table
- * info -> 1+index of last "local symbol" (bind == STB_LOCAL)
- * (for section type SHT_DNAMIC:
- * link -> index of string table
- * info -> 0 )
- * (for section type SHT_HASH:
- * link -> index of symbol table to which hash applies
- * info -> 0 )
- * for all others:
- * link -> SHN_UNDEF
- * info -> 0
- */
-
-struct elf_reloc_entry {
- yasm_reloc reloc;
- int rtype_rel;
- size_t valsize;
- yasm_intnum *addend;
- /*@null@*/ yasm_symrec *wrt;
- int is_GOT_sym;
-};
-
-STAILQ_HEAD(elf_strtab_head, elf_strtab_entry);
-struct elf_strtab_entry {
- STAILQ_ENTRY(elf_strtab_entry) qlink;
- unsigned long index;
- char *str;
-};
-
-STAILQ_HEAD(elf_symtab_head, elf_symtab_entry);
-struct elf_symtab_entry {
- STAILQ_ENTRY(elf_symtab_entry) qlink;
- int in_table;
- yasm_symrec *sym;
- yasm_section *sect;
- elf_strtab_entry *name;
- elf_address value;
- /*@dependent@*/ yasm_expr *xsize;
- elf_size size;
- elf_section_index index;
- elf_symbol_binding bind;
- elf_symbol_type type;
- elf_symbol_vis vis;
- elf_symbol_index symindex;
-};
-
-#endif /* defined(YASM_OBJFMT_ELF_INTERNAL) */
-
-extern const yasm_assoc_data_callback elf_section_data;
-extern const yasm_assoc_data_callback elf_symrec_data;
-extern const yasm_assoc_data_callback elf_ssym_symrec_data;
-
-
-const elf_machine_handler *elf_set_arch(struct yasm_arch *arch,
- yasm_symtab *symtab,
- int bits_pref);
-
-yasm_symrec *elf_get_special_sym(const char *name, const char *parser);
-
-/* reloc functions */
-int elf_is_wrt_sym_relative(yasm_symrec *wrt);
-int elf_is_wrt_pos_adjusted(yasm_symrec *wrt);
-elf_reloc_entry *elf_reloc_entry_create(yasm_symrec *sym,
- /*@null@*/ yasm_symrec *wrt,
- yasm_intnum *addr,
- int rel,
- size_t valsize,
- int is_GOT_sym);
-void elf_reloc_entry_destroy(void *entry);
-
-/* strtab functions */
-elf_strtab_entry *elf_strtab_entry_create(const char *str);
-void elf_strtab_entry_set_str(elf_strtab_entry *entry, const char *str);
-elf_strtab_head *elf_strtab_create(void);
-elf_strtab_entry *elf_strtab_append_str(elf_strtab_head *head, const char *str);
-void elf_strtab_destroy(elf_strtab_head *head);
-unsigned long elf_strtab_output_to_file(FILE *f, elf_strtab_head *head);
-
-/* symtab functions */
-elf_symtab_entry *elf_symtab_entry_create(elf_strtab_entry *name,
- struct yasm_symrec *sym);
-elf_symtab_head *elf_symtab_create(void);
-void elf_symtab_append_entry(elf_symtab_head *symtab, elf_symtab_entry *entry);
-void elf_symtab_insert_local_sym(elf_symtab_head *symtab,
- elf_symtab_entry *entry);
-void elf_symtab_destroy(elf_symtab_head *head);
-unsigned long elf_symtab_assign_indices(elf_symtab_head *symtab);
-unsigned long elf_symtab_write_to_file(FILE *f, elf_symtab_head *symtab,
- yasm_errwarns *errwarns);
-void elf_symtab_set_nonzero(elf_symtab_entry *entry,
- struct yasm_section *sect,
- elf_section_index sectidx,
- elf_symbol_binding bind,
- elf_symbol_type type,
- struct yasm_expr *size,
- elf_address *value);
-void elf_sym_set_visibility(elf_symtab_entry *entry,
- elf_symbol_vis vis);
-void elf_sym_set_type(elf_symtab_entry *entry, elf_symbol_type type);
-void elf_sym_set_size(elf_symtab_entry *entry, struct yasm_expr *size);
-int elf_sym_in_table(elf_symtab_entry *entry);
-
-/* section header functions */
-elf_secthead *elf_secthead_create(elf_strtab_entry *name,
- elf_section_type type,
- elf_section_flags flags,
- elf_address offset,
- elf_size size);
-void elf_secthead_destroy(elf_secthead *esd);
-unsigned long elf_secthead_write_to_file(FILE *f, elf_secthead *esd,
- elf_section_index sindex);
-void elf_secthead_append_reloc(yasm_section *sect, elf_secthead *shead,
- elf_reloc_entry *reloc);
-elf_section_type elf_secthead_get_type(elf_secthead *shead);
-void elf_secthead_set_typeflags(elf_secthead *shead, elf_section_type type,
- elf_section_flags flags);
-int elf_secthead_is_empty(elf_secthead *shead);
-struct yasm_symrec *elf_secthead_get_sym(elf_secthead *shead);
-unsigned long elf_secthead_get_align(const elf_secthead *shead);
-unsigned long elf_secthead_set_align(elf_secthead *shead, unsigned long align);
-elf_section_index elf_secthead_get_index(elf_secthead *shead);
-elf_section_info elf_secthead_set_info(elf_secthead *shead,
- elf_section_info info);
-elf_section_index elf_secthead_set_index(elf_secthead *shead,
- elf_section_index sectidx);
-elf_section_index elf_secthead_set_link(elf_secthead *shead,
- elf_section_index link);
-elf_section_index elf_secthead_set_rel_index(elf_secthead *shead,
- elf_section_index sectidx);
-elf_strtab_entry *elf_secthead_set_rel_name(elf_secthead *shead,
- elf_strtab_entry *entry);
-elf_size elf_secthead_set_entsize(elf_secthead *shead, elf_size size);
-struct yasm_symrec *elf_secthead_set_sym(elf_secthead *shead,
- struct yasm_symrec *sym);
-void elf_secthead_add_size(elf_secthead *shead, yasm_intnum *size);
-char *elf_secthead_name_reloc_section(const char *basesect);
-void elf_handle_reloc_addend(yasm_intnum *intn,
- elf_reloc_entry *reloc,
- unsigned long offset);
-unsigned long elf_secthead_write_rel_to_file(FILE *f, elf_section_index symtab,
- yasm_section *sect,
- elf_secthead *esd,
- elf_section_index sindex);
-unsigned long elf_secthead_write_relocs_to_file(FILE *f, yasm_section *sect,
- elf_secthead *shead,
- yasm_errwarns *errwarns);
-long elf_secthead_set_file_offset(elf_secthead *shead, long pos);
-
-/* program header function */
-unsigned long
-elf_proghead_get_size(void);
-unsigned long
-elf_proghead_write_to_file(FILE *f,
- elf_offset secthead_addr,
- unsigned long secthead_count,
- elf_section_index shstrtab_index);
-
-#endif /* ELF_H_INCLUDED */
+/*
+ * ELF object format helpers
+ *
+ * Copyright (C) 2003-2007 Michael Urman
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef ELF_H_INCLUDED
+#define ELF_H_INCLUDED
+
+typedef struct elf_reloc_entry elf_reloc_entry;
+typedef struct elf_reloc_head elf_reloc_head;
+typedef struct elf_secthead elf_secthead;
+typedef struct elf_strtab_entry elf_strtab_entry;
+typedef struct elf_strtab_head elf_strtab_head;
+typedef struct elf_symtab_entry elf_symtab_entry;
+typedef struct elf_symtab_head elf_symtab_head;
+
+typedef struct elf_machine_handler elf_machine_handler;
+
+typedef unsigned long elf_address;
+typedef unsigned long elf_offset;
+typedef unsigned long elf_size;
+typedef unsigned long elf_section_info;
+
+typedef enum {
+ ET_NONE = 0,
+ ET_REL = 1, /* Relocatable */
+ ET_EXEC = 2, /* Executable */
+ ET_DYN = 3, /* Shared object */
+ ET_CORE = 4, /* Core */
+ ET_LOOS = 0xfe00, /* Environment specific */
+ ET_HIOS = 0xfeff,
+ ET_LOPROC = 0xff00, /* Processor specific */
+ ET_HIPROC = 0xffff
+} elf_file_type;
+
+typedef enum {
+ EM_NONE = 0,
+ EM_M32 = 1, /* AT&T WE 32100 */
+ EM_SPARC = 2, /* SPARC */
+ EM_386 = 3, /* Intel 80386 */
+ EM_68K = 4, /* Motorola 68000 */
+ EM_88K = 5, /* Motorola 88000 */
+ EM_860 = 7, /* Intel 80860 */
+ EM_MIPS = 8, /* MIPS RS3000 */
+
+ EM_S370 = 9, /* IBM System/370 */
+ EM_MIPS_RS4_BE = 10, /* MIPS R4000 Big-Endian (dep)*/
+ EM_PARISC = 15, /* HPPA */
+ EM_SPARC32PLUS = 18, /* SPARC v8plus */
+ EM_PPC = 20, /* PowerPC 32-bit */
+ EM_PPC64 = 21, /* PowerPC 64-bit */
+ EM_ARM = 40, /* ARM */
+ EM_SPARCV9 = 43, /* SPARC v9 64-bit */
+ EM_IA_64 = 50, /* Intel IA-64 */
+ EM_X86_64 = 62, /* AMD x86-64 */
+ EM_ALPHA = 0x9026 /* Alpha (no ABI) */
+} elf_machine;
+
+typedef enum {
+ ELFMAG0 = 0x7f,
+ ELFMAG1 = 0x45,
+ ELFMAG2 = 0x4c,
+ ELFMAG3 = 0x46
+} elf_magic;
+
+typedef enum {
+ EV_NONE = 0, /* invalid */
+ EV_CURRENT = 1 /* current */
+} elf_version;
+
+typedef enum {
+ EI_MAG0 = 0, /* File id */
+ EI_MAG1 = 1,
+ EI_MAG2 = 2,
+ EI_MAG3 = 3,
+ EI_CLASS = 4, /* File class */
+ EI_DATA = 5, /* Data encoding */
+ EI_VERSION = 6, /* File version */
+ EI_OSABI = 7, /* OS and ABI */
+ EI_ABIVERSION = 8, /* version of ABI */
+
+ EI_PAD = 9, /* Pad to end; start here */
+ EI_NIDENT = 16 /* Sizeof e_ident[] */
+} elf_identification_index;
+
+typedef enum {
+ ELFOSABI_SYSV = 0, /* System V ABI */
+ ELFOSABI_HPUX = 1, /* HP-UX os */
+ ELFOSABI_STANDALONE = 255 /* Standalone / embedded app */
+} elf_osabi_index;
+
+typedef enum {
+ ELFCLASSNONE = 0, /* invalid */
+ ELFCLASS32 = 1, /* 32-bit */
+ ELFCLASS64 = 2 /* 64-bit */
+} elf_class;
+
+typedef enum {
+ ELFDATANONE = 0,
+ ELFDATA2LSB = 1,
+ ELFDATA2MSB = 2
+} elf_data_encoding;
+
+/* elf section types - index of semantics */
+typedef enum {
+ SHT_NULL = 0, /* inactive section - no associated data */
+ SHT_PROGBITS = 1, /* defined by program for its own meaning */
+ SHT_SYMTAB = 2, /* symbol table (primarily) for linking */
+ SHT_STRTAB = 3, /* string table - symbols need names */
+ SHT_RELA = 4, /* relocation entries w/ explicit addends */
+ SHT_HASH = 5, /* symbol hash table - for dynamic linking */
+ SHT_DYNAMIC = 6, /* information for dynamic linking */
+ SHT_NOTE = 7, /* extra data marking the file somehow */
+ SHT_NOBITS = 8, /* no stored data, but occupies runtime space */
+ SHT_REL = 9, /* relocations entries w/o explicit addends */
+ SHT_SHLIB = 10, /* reserved; unspecified semantics */
+ SHT_DYNSYM = 11, /* like symtab, but more for dynamic linking */
+
+ SHT_LOOS = 0x60000000, /* reserved for environment specific use */
+ SHT_HIOS = 0x6fffffff,
+ SHT_LOPROC = 0x70000000, /* reserved for processor specific semantics */
+ SHT_HIPROC = 0x7fffffff/*,
+ SHT_LOUSER = 0x80000000,*/ /* reserved for applications; safe */
+ /*SHT_HIUSER = 0xffffffff*/
+} elf_section_type;
+
+/* elf section flags - bitfield of attributes */
+typedef enum {
+ SHF_WRITE = 0x1, /* data should be writable at runtime */
+ SHF_ALLOC = 0x2, /* occupies memory at runtime */
+ SHF_EXECINSTR = 0x4, /* contains machine instructions */
+ SHF_MERGE = 0x10, /* data can be merged */
+ SHF_STRINGS = 0x20, /* contains 0-terminated strings */
+ SHF_GROUP = 0x200, /* member of a section group */
+ SHF_TLS = 0x400, /* thread local storage */
+ SHF_MASKOS = 0x0f000000/*,*//* environment specific use */
+ /*SHF_MASKPROC = 0xf0000000*/ /* bits reserved for processor specific needs */
+} elf_section_flags;
+
+/* elf section index - just the special ones */
+typedef enum {
+ SHN_UNDEF = 0, /* undefined symbol; requires other global */
+ SHN_LORESERVE = 0xff00, /* reserved for various semantics */
+ SHN_LOPROC = 0xff00, /* reserved for processor specific semantics */
+ SHN_HIPROC = 0xff1f,
+ SHN_LOOS = 0xff20, /* reserved for environment specific use */
+ SHN_HIOS = 0xff3f,
+ SHN_ABS = 0xfff1, /* associated symbols don't change on reloc */
+ SHN_COMMON = 0xfff2, /* associated symbols refer to unallocated */
+ SHN_HIRESERVE = 0xffff
+} elf_section_index;
+
+/* elf symbol binding - index of visibility/behavior */
+typedef enum {
+ STB_LOCAL = 0, /* invisible outside defining file */
+ STB_GLOBAL = 1, /* visible to all combined object files */
+ STB_WEAK = 2, /* global but lower precedence */
+
+ STB_LOOS = 10, /* Environment specific use */
+ STB_HIOS = 12,
+ STB_LOPROC = 13, /* reserved for processor specific semantics */
+ STB_HIPROC = 15
+} elf_symbol_binding;
+
+/* elf symbol type - index of classifications */
+typedef enum {
+ STT_NOTYPE = 0, /* type not specified */
+ STT_OBJECT = 1, /* data object such as a variable, array, etc */
+ STT_FUNC = 2, /* a function or executable code */
+ STT_SECTION = 3, /* a section: often for relocation, STB_LOCAL */
+ STT_FILE = 4, /* often source filename: STB_LOCAL, SHN_ABS */
+ STT_COMMON = 5, /* Uninitialized common block. */
+ STT_TLS = 6, /* TLS object. */
+ STT_NUM = 7,
+
+ STT_LOOS = 10, /* Environment specific use */
+ STT_HIOS = 12,
+ STT_LOPROC = 13, /* reserved for processor specific semantics */
+ STT_HIPROC = 15
+} elf_symbol_type;
+
+typedef enum {
+ STN_UNDEF = 0
+} elf_symbol_index;
+
+/* elf symbol visibility - lower two bits of OTHER field */
+typedef enum {
+ STV_DEFAULT = 0, /* Default symbol visibility rules */
+ STV_INTERNAL = 1, /* Processor specific hidden class */
+ STV_HIDDEN = 2, /* Sym unavailable in other modules */
+ STV_PROTECTED = 3 /* Not preemptable, not exported */
+} elf_symbol_vis;
+
+
+/* internal only object definitions */
+#ifdef YASM_OBJFMT_ELF_INTERNAL
+
+#define ELF_VISIBILITY_MASK 0x03
+#define ELF_ST_VISIBILITY(v) ((v) & ELF_VISIBILITY_MASK)
+
+#define ELF32_ST_INFO(bind, type) (((bind) << 4) + ((type) & 0xf))
+#define ELF32_R_INFO(s,t) (((s)<<8)+(unsigned char)(t))
+#define ELF32_ST_OTHER(vis) ELF_ST_VISIBILITY(vis)
+
+#define ELF64_ST_INFO(bind, type) (((bind) << 4) + ((type) & 0xf))
+#define ELF64_R_INFO(s,t) (((s)<<32) + ((t) & 0xffffffffL))
+#define ELF64_ST_OTHER(vis) ELF_ST_VISIBILITY(vis)
+
+#define EHDR32_SIZE 52
+#define EHDR64_SIZE 64
+#define EHDR_MAXSIZE 64
+
+#define SHDR32_SIZE 40
+#define SHDR64_SIZE 64
+#define SHDR_MAXSIZE 64
+
+#define SYMTAB32_SIZE 16
+#define SYMTAB64_SIZE 24
+#define SYMTAB_MAXSIZE 24
+
+#define SYMTAB32_ALIGN 4
+#define SYMTAB64_ALIGN 8
+
+#define RELOC32_SIZE 8
+#define RELOC32A_SIZE 12
+#define RELOC64_SIZE 16
+#define RELOC64A_SIZE 24
+#define RELOC_MAXSIZE 24
+
+#define RELOC32_ALIGN 4
+#define RELOC64_ALIGN 8
+
+
+/* elf relocation type - index of semantics
+ *
+ * A = Addend (r_addend for RELA, value at location for REL)
+ * B = Base address
+ * G = Offset into global offset table (GOT)
+ * GOT = Address of the global offset table (GOT)
+ * L = Location of procedure linkage table (PLT)
+ * P = Location of location being relocated (r_offset)
+ * S = Value of symbol
+ */
+typedef enum {
+ R_386_NONE = 0, /* none */
+ R_386_32 = 1, /* word32, S + A */
+ R_386_PC32 = 2, /* word32, S + A - P */
+ R_386_GOT32 = 3, /* word32, G + A - P */
+ R_386_PLT32 = 4, /* word32, L + A - P */
+ R_386_COPY = 5, /* none */
+ R_386_GLOB_DAT = 6, /* word32, S */
+ R_386_JMP_SLOT = 7, /* word32, S */
+ R_386_RELATIVE = 8, /* word32, B + A */
+ R_386_GOTOFF = 9, /* word32, S + A - GOT */
+ R_386_GOTPC = 10, /* word32, GOT + A - P */
+ R_386_TLS_TPOFF = 14, /* Negative offset in static TLS block (GNU
+ version) */
+ R_386_TLS_IE = 15, /* Absolute address of GOT entry for negative
+ static TLS block offset */
+ R_386_TLS_GOTIE = 16, /* GOT entry for negative static TLS block
+ offset */
+ R_386_TLS_LE = 17, /* Negative offset relative to static TLS
+ (GNU version) */
+ R_386_TLS_GD = 18, /* Direct 32 bit for GNU version of GD TLS */
+ R_386_TLS_LDM = 19, /* Direct 32 bit for GNU version of LD TLS
+ in LE code */
+ R_386_16 = 20, /* word16, S + A (GNU extension) */
+ R_386_PC16 = 21, /* word16, S + A - P (GNU extension) */
+ R_386_8 = 22, /* word8, S + A (GNU extension) */
+ R_386_PC8 = 23, /* word8, S + A - P (GNU extension) */
+ R_386_TLS_GD_32 = 24, /* Direct 32 bit for GD TLS */
+ R_386_TLS_GD_PUSH = 25, /* Tag for pushl in GD TLS code */
+ R_386_TLS_GD_CALL = 26, /* Relocation for call to */
+ R_386_TLS_GD_POP = 27, /* Tag for popl in GD TLS code */
+ R_386_TLS_LDM_32 = 28, /* Direct 32 bit for local dynamic code */
+ R_386_TLS_LDM_PUSH = 29, /* Tag for pushl in LDM TLS code */
+ R_386_TLS_LDM_CALL = 30, /* Relocation for call to */
+ R_386_TLS_LDM_POP = 31, /* Tag for popl in LDM TLS code */
+ R_386_TLS_LDO_32 = 32, /* Offset relative to TLS block */
+ R_386_TLS_IE_32 = 33, /* GOT entry for static TLS block */
+ R_386_TLS_LE_32 = 34, /* Offset relative to static TLS block */
+ R_386_TLS_DTPMOD32 = 35, /* ID of module containing symbol */
+ R_386_TLS_DTPOFF32 = 36, /* Offset in TLS block */
+ R_386_TLS_TPOFF32 = 37, /* Offset in static TLS block */
+ R_386_TLS_GOTDESC = 39,
+ R_386_TLS_DESC_CALL = 40,
+ R_386_TLS_DESC = 41
+} elf_386_relocation_type;
+
+typedef enum {
+ R_X86_64_NONE = 0, /* none */
+ R_X86_64_64 = 1, /* word64, S + A */
+ R_X86_64_PC32 = 2, /* word32, S + A - P */
+ R_X86_64_GOT32 = 3, /* word32, G + A */
+ R_X86_64_PLT32 = 4, /* word32, L + A - P */
+ R_X86_64_COPY = 5, /* none */
+ R_X86_64_GLOB_DAT = 6, /* word64, S, set GOT entry to data address */
+ R_X86_64_JMP_SLOT = 7, /* word64, S, set GOT entry to code address */
+ R_X86_64_RELATIVE = 8, /* word64, B + A */
+ R_X86_64_GOTPCREL = 9, /* word32, G + GOT + A - P */
+ R_X86_64_32 = 10, /* word32 (zero extend), S + A */
+ R_X86_64_32S = 11, /* word32 (sign extend), S + A */
+ R_X86_64_16 = 12, /* word16, S + A */
+ R_X86_64_PC16 = 13, /* word16, S + A - P */
+ R_X86_64_8 = 14, /* word8, S + A */
+ R_X86_64_PC8 = 15, /* word8, S + A - P */
+ R_X86_64_DPTMOD64 = 16, /* word64, ID of module containing symbol */
+ R_X86_64_DTPOFF64 = 17, /* word64, offset in TLS block */
+ R_X86_64_TPOFF64 = 18, /* word64, offset in initial TLS block */
+ R_X86_64_TLSGD = 19, /* word32, PC-rel offset to GD GOT block */
+ R_X86_64_TLSLD = 20, /* word32, PC-rel offset to LD GOT block */
+ R_X86_64_DTPOFF32 = 21, /* word32, offset to TLS block */
+ R_X86_64_GOTTPOFF = 22, /* word32, PC-rel offset to IE GOT entry */
+ R_X86_64_TPOFF32 = 23, /* word32, offset in initial TLS block */
+ R_X86_64_PC64 = 24, /* word64, PC relative */
+ R_X86_64_GOTOFF64 = 25, /* word64, offset to GOT */
+ R_X86_64_GOTPC32 = 26, /* word32, signed pc relative to GOT */
+ R_X86_64_GOT64 = 27, /* word64, GOT entry offset */
+ R_X86_64_GOTPCREL64 = 28, /* word64, signed pc relative to GOT entry */
+ R_X86_64_GOTPC64 = 29, /* word64, signed pc relative to GOT */
+ R_X86_64_GOTPLT64 = 30, /* like GOT64, but indicates PLT entry needed */
+ R_X86_64_PLTOFF64 = 31, /* word64, GOT relative offset to PLT entry */
+ R_X86_64_GOTPC32_TLSDESC = 34, /* GOT offset for TLS descriptor */
+ R_X86_64_TLSDESC_CALL = 35, /* Marker for call through TLS descriptor */
+ R_X86_64_TLSDESC = 36 /* TLS descriptor */
+} elf_x86_64_relocation_type;
+
+struct elf_secthead {
+ elf_section_type type;
+ elf_section_flags flags;
+ elf_address offset;
+ yasm_intnum *size;
+ elf_section_index link;
+ elf_section_info info; /* see note ESD1 */
+ unsigned long align;
+ elf_size entsize;
+
+ yasm_symrec *sym;
+ elf_strtab_entry *name;
+ elf_section_index index;
+
+ elf_strtab_entry *rel_name;
+ elf_section_index rel_index;
+ elf_address rel_offset;
+ unsigned long nreloc;
+};
+
+/* Note ESD1:
+ * for section types SHT_REL, SHT_RELA:
+ * link -> index of associated symbol table
+ * info -> index of relocated section
+ * for section types SHT_SYMTAB, SHT_DYNSYM:
+ * link -> index of associated string table
+ * info -> 1+index of last "local symbol" (bind == STB_LOCAL)
+ * (for section type SHT_DNAMIC:
+ * link -> index of string table
+ * info -> 0 )
+ * (for section type SHT_HASH:
+ * link -> index of symbol table to which hash applies
+ * info -> 0 )
+ * for all others:
+ * link -> SHN_UNDEF
+ * info -> 0
+ */
+
+struct elf_reloc_entry {
+ yasm_reloc reloc;
+ int rtype_rel;
+ size_t valsize;
+ yasm_intnum *addend;
+ /*@null@*/ yasm_symrec *wrt;
+ int is_GOT_sym;
+};
+
+STAILQ_HEAD(elf_strtab_head, elf_strtab_entry);
+struct elf_strtab_entry {
+ STAILQ_ENTRY(elf_strtab_entry) qlink;
+ unsigned long index;
+ char *str;
+};
+
+STAILQ_HEAD(elf_symtab_head, elf_symtab_entry);
+struct elf_symtab_entry {
+ STAILQ_ENTRY(elf_symtab_entry) qlink;
+ int in_table;
+ yasm_symrec *sym;
+ yasm_section *sect;
+ elf_strtab_entry *name;
+ elf_address value;
+ /*@dependent@*/ yasm_expr *xsize;
+ elf_size size;
+ elf_section_index index;
+ elf_symbol_binding bind;
+ elf_symbol_type type;
+ elf_symbol_vis vis;
+ elf_symbol_index symindex;
+};
+
+#endif /* defined(YASM_OBJFMT_ELF_INTERNAL) */
+
+extern const yasm_assoc_data_callback elf_section_data;
+extern const yasm_assoc_data_callback elf_symrec_data;
+extern const yasm_assoc_data_callback elf_ssym_symrec_data;
+
+
+const elf_machine_handler *elf_set_arch(struct yasm_arch *arch,
+ yasm_symtab *symtab,
+ int bits_pref);
+
+yasm_symrec *elf_get_special_sym(const char *name, const char *parser);
+
+/* reloc functions */
+int elf_is_wrt_sym_relative(yasm_symrec *wrt);
+int elf_is_wrt_pos_adjusted(yasm_symrec *wrt);
+elf_reloc_entry *elf_reloc_entry_create(yasm_symrec *sym,
+ /*@null@*/ yasm_symrec *wrt,
+ yasm_intnum *addr,
+ int rel,
+ size_t valsize,
+ int is_GOT_sym);
+void elf_reloc_entry_destroy(void *entry);
+
+/* strtab functions */
+elf_strtab_entry *elf_strtab_entry_create(const char *str);
+void elf_strtab_entry_set_str(elf_strtab_entry *entry, const char *str);
+elf_strtab_head *elf_strtab_create(void);
+elf_strtab_entry *elf_strtab_append_str(elf_strtab_head *head, const char *str);
+void elf_strtab_destroy(elf_strtab_head *head);
+unsigned long elf_strtab_output_to_file(FILE *f, elf_strtab_head *head);
+
+/* symtab functions */
+elf_symtab_entry *elf_symtab_entry_create(elf_strtab_entry *name,
+ struct yasm_symrec *sym);
+elf_symtab_head *elf_symtab_create(void);
+void elf_symtab_append_entry(elf_symtab_head *symtab, elf_symtab_entry *entry);
+void elf_symtab_insert_local_sym(elf_symtab_head *symtab,
+ elf_symtab_entry *entry);
+void elf_symtab_destroy(elf_symtab_head *head);
+unsigned long elf_symtab_assign_indices(elf_symtab_head *symtab);
+unsigned long elf_symtab_write_to_file(FILE *f, elf_symtab_head *symtab,
+ yasm_errwarns *errwarns);
+void elf_symtab_set_nonzero(elf_symtab_entry *entry,
+ struct yasm_section *sect,
+ elf_section_index sectidx,
+ elf_symbol_binding bind,
+ elf_symbol_type type,
+ struct yasm_expr *size,
+ elf_address *value);
+void elf_sym_set_visibility(elf_symtab_entry *entry,
+ elf_symbol_vis vis);
+void elf_sym_set_type(elf_symtab_entry *entry, elf_symbol_type type);
+void elf_sym_set_size(elf_symtab_entry *entry, struct yasm_expr *size);
+int elf_sym_in_table(elf_symtab_entry *entry);
+
+/* section header functions */
+elf_secthead *elf_secthead_create(elf_strtab_entry *name,
+ elf_section_type type,
+ elf_section_flags flags,
+ elf_address offset,
+ elf_size size);
+void elf_secthead_destroy(elf_secthead *esd);
+unsigned long elf_secthead_write_to_file(FILE *f, elf_secthead *esd,
+ elf_section_index sindex);
+void elf_secthead_append_reloc(yasm_section *sect, elf_secthead *shead,
+ elf_reloc_entry *reloc);
+elf_section_type elf_secthead_get_type(elf_secthead *shead);
+void elf_secthead_set_typeflags(elf_secthead *shead, elf_section_type type,
+ elf_section_flags flags);
+int elf_secthead_is_empty(elf_secthead *shead);
+struct yasm_symrec *elf_secthead_get_sym(elf_secthead *shead);
+unsigned long elf_secthead_get_align(const elf_secthead *shead);
+unsigned long elf_secthead_set_align(elf_secthead *shead, unsigned long align);
+elf_section_index elf_secthead_get_index(elf_secthead *shead);
+elf_section_info elf_secthead_set_info(elf_secthead *shead,
+ elf_section_info info);
+elf_section_index elf_secthead_set_index(elf_secthead *shead,
+ elf_section_index sectidx);
+elf_section_index elf_secthead_set_link(elf_secthead *shead,
+ elf_section_index link);
+elf_section_index elf_secthead_set_rel_index(elf_secthead *shead,
+ elf_section_index sectidx);
+elf_strtab_entry *elf_secthead_set_rel_name(elf_secthead *shead,
+ elf_strtab_entry *entry);
+elf_size elf_secthead_set_entsize(elf_secthead *shead, elf_size size);
+struct yasm_symrec *elf_secthead_set_sym(elf_secthead *shead,
+ struct yasm_symrec *sym);
+void elf_secthead_add_size(elf_secthead *shead, yasm_intnum *size);
+char *elf_secthead_name_reloc_section(const char *basesect);
+void elf_handle_reloc_addend(yasm_intnum *intn,
+ elf_reloc_entry *reloc,
+ unsigned long offset);
+unsigned long elf_secthead_write_rel_to_file(FILE *f, elf_section_index symtab,
+ yasm_section *sect,
+ elf_secthead *esd,
+ elf_section_index sindex);
+unsigned long elf_secthead_write_relocs_to_file(FILE *f, yasm_section *sect,
+ elf_secthead *shead,
+ yasm_errwarns *errwarns);
+long elf_secthead_set_file_offset(elf_secthead *shead, long pos);
+
+/* program header function */
+unsigned long
+elf_proghead_get_size(void);
+unsigned long
+elf_proghead_write_to_file(FILE *f,
+ elf_offset secthead_addr,
+ unsigned long secthead_count,
+ elf_section_index shstrtab_index);
+
+#endif /* ELF_H_INCLUDED */
diff --git a/contrib/tools/yasm/modules/objfmts/macho/macho-objfmt.c b/contrib/tools/yasm/modules/objfmts/macho/macho-objfmt.c
index ad0215cff3..0a48d9b905 100644
--- a/contrib/tools/yasm/modules/objfmts/macho/macho-objfmt.c
+++ b/contrib/tools/yasm/modules/objfmts/macho/macho-objfmt.c
@@ -1,1620 +1,1620 @@
-/*
- * Mac OS X ABI Mach-O File Format
- *
- * Copyright (C) 2007 Henryk Richter, built upon xdf objfmt (C) Peter Johnson
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- notes: This implementation is rather basic. There are several implementation
- issues to be sorted out for full compliance and error resilience.
- Some examples are given below (nasm syntax).
-
- 1) section placement
- Mach-O requires BSS sections to be placed last in object files. This
- has to be done manually.
- Example:
-
- section .text
- mov rax,[qword foo]
- section .data
- dw 0
- section .bss
- foo dw 0
-
- 2) addressing issues
-
- 2.1) symbol relative relocation (i.e. mov eax,[foo wrt bar])
- Not implemented yet.
-
- 2.2) data referencing in 64 bit mode
- While ELF allows 32 bit absolute relocations in 64 bit mode, Mach-O
- does not. Therefore code like
- lea rbx,[_foo] ;48 8d 1c 25 00 00 00 00
- mov rcx,[_bar] ;48 8b 0c 25 00 00 00 00
- with a 32 bit address field cannot be relocated into an address >= 0x100000000 (OSX actually
- uses that).
-
- Actually, the only register where a 64 bit displacement is allowed in x86-64, is rax
- as in the example 1).
-
- A plausible workaround is either classic PIC (like in C), which is in turn
- not implemented in this object format. The recommended was is PC relative
- code (called RIP-relative in x86-64). So instead of the lines above, just write:
- lea rbx,[_foo wrt rip]
- mov rcx,[_bar wrt rip]
-
- 2.3) section/data alignment
- Normally, you specify sections with a specific alignment
- and get your data layed out as desired. Unfortunately, the
- linker in MacOS X seems to ignore the section alignment requests.
- The workaround is an explicit alignment at the end of the text section.
-
- section .text
- movdqa xmm0,[_foo wrt rip]
-
- align 16
- section .data align=16
- _foo dw 32,32,32,32,32,32,32,32
-
- FIXME: perform that operation implicitly!
-
- 2.4) cross section symbol differences unsupported in current implementation
- [extern foo]
- [extern bar]
- section .data
- dq bar-foo
-
- Will currently produce an error though the necessary means are provided
- by the Mach-O specification.
-
-*/
-
-#include <util.h>
-
-#include <libyasm.h>
-
-/* MACH-O DEFINES */
-/* Mach-O in-file header structure sizes (32 BIT, see below for 64 bit defs) */
-#define MACHO_HEADER_SIZE 28
-#define MACHO_SEGCMD_SIZE 56
-#define MACHO_SECTCMD_SIZE 68
-#define MACHO_SYMCMD_SIZE 24
-#define MACHO_NLIST_SIZE 12
-#define MACHO_RELINFO_SIZE 8
-
-/* 64 bit sizes */
-#define MACHO_HEADER64_SIZE 32
-#define MACHO_SEGCMD64_SIZE 72
-#define MACHO_SECTCMD64_SIZE 80
-#define MACHO_NLIST64_SIZE 16
-#define MACHO_RELINFO64_SIZE 8
-
-
-/* Mach-O file header values */
-#define MH_MAGIC 0xfeedface
-#define MH_MAGIC_64 0xfeedfacf
-
-/* CPU machine type */
-#define CPU_TYPE_I386 7 /* x86 platform */
-#define CPU_TYPE_X86_64 (CPU_TYPE_I386|CPU_ARCH_ABI64)
-#define CPU_ARCH_ABI64 0x01000000 /* 64 bit ABI */
-
-/* CPU machine subtype, e.g. processor */
-#define CPU_SUBTYPE_I386_ALL 3 /* all-x86 compatible */
-#define CPU_SUBTYPE_X86_64_ALL CPU_SUBTYPE_I386_ALL
-#define CPU_SUBTYPE_386 3
-#define CPU_SUBTYPE_486 4
-#define CPU_SUBTYPE_486SX (4 + 128)
-#define CPU_SUBTYPE_586 5
-#define CPU_SUBTYPE_INTEL(f, m) ((f) + ((m) << 4))
-#define CPU_SUBTYPE_PENT CPU_SUBTYPE_INTEL(5, 0)
-#define CPU_SUBTYPE_PENTPRO CPU_SUBTYPE_INTEL(6, 1)
-#define CPU_SUBTYPE_PENTII_M3 CPU_SUBTYPE_INTEL(6, 3)
-#define CPU_SUBTYPE_PENTII_M5 CPU_SUBTYPE_INTEL(6, 5)
-#define CPU_SUBTYPE_PENTIUM_4 CPU_SUBTYPE_INTEL(10, 0)
-
-#define CPU_SUBTYPE_INTEL_FAMILY(x) ((x) & 15)
-#define CPU_SUBTYPE_INTEL_FAMILY_MAX 15
-
-#define CPU_SUBTYPE_INTEL_MODEL(x) ((x) >> 4)
-#define CPU_SUBTYPE_INTEL_MODEL_ALL 0
-
-#define MH_OBJECT 0x1 /* object file */
-
-#define LC_SEGMENT 0x1 /* segment load command */
-#define LC_SYMTAB 0x2 /* symbol table load command */
-#define LC_SEGMENT_64 0x19 /* segment load command */
-
-
-#define VM_PROT_NONE 0x00
-#define VM_PROT_READ 0x01
-#define VM_PROT_WRITE 0x02
-#define VM_PROT_EXECUTE 0x04
-
-#define VM_PROT_DEFAULT (VM_PROT_READ | VM_PROT_WRITE | VM_PROT_EXECUTE)
-#define VM_PROT_ALL (VM_PROT_READ | VM_PROT_WRITE | VM_PROT_EXECUTE)
-
-#define SECTION_TYPE 0x000000ff /* section type mask */
-#define SECTION_ATTRIBUTES 0xffffff00UL/* section attributes mask */
-
-#define S_REGULAR 0x0 /* standard section */
-#define S_ZEROFILL 0x1 /* zerofill, in-memory only */
-#define S_CSTRING_LITERALS 0x2 /* literal C strings */
-#define S_4BYTE_LITERALS 0x3 /* only 4-byte literals */
-#define S_8BYTE_LITERALS 0x4 /* only 8-byte literals */
-#define S_LITERAL_POINTERS 0x5 /* only pointers to literals */
-#define S_NON_LAZY_SYMBOL_POINTERS 0x6 /* only non-lazy symbol pointers */
-#define S_LAZY_SYMBOL_POINTERS 0x7 /* only lazy symbol pointers */
-#define S_SYMBOL_STUBS 0x8 /* only symbol stubs; byte size of
- * stub in the reserved2 field */
-#define S_MOD_INIT_FUNC_POINTERS 0x9 /* only function pointers for init */
-#define S_MOD_TERM_FUNC_POINTERS 0xa /* only function pointers for term */
-#define S_COALESCED 0xb /* symbols that are to be coalesced */
-#define S_GB_ZEROFILL 0xc /* >4GB zero fill on demand section */
-#define S_INTERPOSING 0xd /* only pairs of function pointers for
- * interposing */
-#define S_16BYTE_LITERALS 0xe /* only 16 byte literals */
-
-#define S_ATTR_DEBUG 0x02000000 /* a debug section */
-#define SECTION_ATTRIBUTES_SYS 0x00ffff00 /* system setable attributes */
-#define S_ATTR_SOME_INSTRUCTIONS 0x00000400 /* section contains some
- * machine instructions */
-#define S_ATTR_EXT_RELOC 0x00000200 /* section has external
- * relocation entries */
-#define S_ATTR_LOC_RELOC 0x00000100 /* section has local
- * relocation entries */
-
-#define SECTION_ATTRIBUTES_USR 0xff000000UL /* User setable attributes */
-#define S_ATTR_PURE_INSTRUCTIONS 0x80000000UL /* only true machine insns */
-#define S_ATTR_NO_TOC 0x40000000UL /* coalesced symbols that are
- * not to be in a ranlib table
- * of contents */
-#define S_ATTR_STRIP_STATIC_SYMS 0x20000000UL /* ok to strip static symbols
- * in this section in files
- * with the MH_DYLDLINK flag */
-#define S_ATTR_NO_DEAD_STRIP 0x10000000UL /* no dead stripping */
-#define S_ATTR_LIVE_SUPPORT 0x08000000UL /* blocks are live if they
- * reference live blocks */
-#define S_ATTR_SELF_MODIFYING_CODE 0x04000000UL /* Used with i386 code stubs
- * written on by dyld */
-
-/* macho references symbols in different ways whether they are linked at
- * runtime (LAZY, read library functions) or at link time (NON_LAZY, mostly
- * data)
- *
- * TODO: proper support for dynamically linkable modules would require the
- * __import sections as well as the dsymtab command
- */
-#define REFERENCE_FLAG_UNDEFINED_NON_LAZY 0x0
-#define REFERENCE_FLAG_UNDEFINED_LAZY 0x1
-
-#define align(x, y) \
- (((x) + (y) - 1) & ~((y) - 1)) /* align x to multiple of y */
-
-#define align32(x) \
- align(x, 4) /* align x to 32 bit boundary */
-
-#define macho_MAGIC 0x87654322
-
-/* Symbol table type field bit masks */
-#define N_STAB 0xe0 /* mask indicating stab entry */
-#define N_PEXT 0x10 /* private external bit */
-#define N_TYPE 0x0e /* mask for all the type bits */
-#define N_EXT 0x01 /* external (global) bit */
-
-/* Symbol table type field values */
-#define N_UNDF 0x00 /* undefined */
-#define N_ABS 0x02 /* absolute address */
-#define N_SECT 0x0e /* symbol is defined in a section */
-
-#define NO_SECT 0 /* no section for symbol in nlist */
-
-#define REGULAR_OUTBUF_SIZE 1024
-
-
-typedef struct macho_reloc {
- yasm_reloc reloc;
- int pcrel;
- int length;
- int ext;
- enum reloc_type_x86_64 {
- /* x86 relocations */
- GENERIC_RELOC_VANILLA = 0, /* generic relocation */
- GENERIC_RELOC_PAIR = 1, /* Only follows a GENERIC_RELOC_SECTDIFF */
- GENERIC_RELOC_SECTDIFF = 2,
- GENERIC_RELOC_PB_LA_PTR = 3, /* prebound lazy pointer */
- GENERIC_RELOC_LOCAL_SECTDIFF = 4,
-
- /* x86-64 relocations */
- X86_64_RELOC_UNSIGNED = 0, /* for absolute addresses */
- X86_64_RELOC_SIGNED = 1, /* for signed 32-bit displacement */
- X86_64_RELOC_BRANCH = 2, /* a CALL/JMP insn with 32-bit disp */
- X86_64_RELOC_GOT_LOAD = 3, /* a MOVQ load of a GOT entry */
- X86_64_RELOC_GOT = 4, /* other GOT references */
- X86_64_RELOC_SUBTRACTOR = 5, /* must be followed by a X86_64_RELOC_UNSIGNED */
- X86_64_RELOC_SIGNED_1 = 6, /* signed 32-bit disp, -1 addend */
- X86_64_RELOC_SIGNED_2 = 7, /* signed 32-bit disp, -2 addend */
- X86_64_RELOC_SIGNED_4 = 8 /* signed 32-bit disp, -4 addend */
- } type;
-} macho_reloc;
-
-typedef struct macho_section_data {
- /*@dependent@*/ yasm_symrec *sym; /* symbol created for this section */
- long scnum; /* section number (0=first section) */
- /*@only@*/ char *segname; /* segment name in file */
- /*@only@*/ char *sectname; /* section name in file */
- unsigned long flags; /* S_* flags */
- unsigned long size; /* size of raw data (section data) in bytes */
- unsigned long offset; /* offset in raw data within file in bytes */
- unsigned long vmoff; /* memory offset */
- unsigned long nreloc; /* number of relocation entries */
- unsigned int extreloc; /* external relocations present (0/1) */
-} macho_section_data;
-
-
-typedef struct macho_symrec_data {
- unsigned long index; /* index in output order */
- yasm_intnum *value; /* valid after writing symtable to file */
- unsigned long length; /* length + 1 (plus auto underscore) */
-} macho_symrec_data;
-
-
-typedef struct yasm_objfmt_macho {
- yasm_objfmt_base objfmt; /* base structure */
-
- long parse_scnum; /* sect numbering in parser */
- int bits; /* 32 / 64 */
-
- yasm_symrec *gotpcrel_sym; /* ..gotpcrel */
-} yasm_objfmt_macho;
-
-
-typedef struct macho_objfmt_output_info {
- yasm_object *object;
- yasm_objfmt_macho *objfmt_macho;
- yasm_errwarns *errwarns;
- /*@dependent@ */ FILE *f;
- /*@only@ */ unsigned char *buf;
- yasm_section *sect;
- /*@dependent@ */ macho_section_data *msd;
-
- unsigned int is_64; /* write object in 64 bit mode */
-
- /* vmsize and filesize available after traversing section count routine */
- unsigned long vmsize; /* raw size of all sections (including BSS) */
- unsigned long filesize; /* size of sections in file (excluding BSS) */
- unsigned long offset; /* offset within file */
-
- /* forward offset tracking */
- unsigned long rel_base; /* first relocation in file */
- unsigned long s_reloff; /* in-file offset to relocations */
-
- unsigned long indx; /* current symbol size in bytes (name length+1) */
- unsigned long symindex; /* current symbol index in output order */
- int all_syms; /* outputting all symbols? */
- unsigned long strlength; /* length of all strings */
-} macho_objfmt_output_info;
-
-
-static void macho_section_data_destroy(/*@only@*/ void *d);
-static void macho_section_data_print(void *data, FILE *f, int indent_level);
-
-static const yasm_assoc_data_callback macho_section_data_cb = {
- macho_section_data_destroy,
- macho_section_data_print
-};
-
-static void macho_symrec_data_destroy(/*@only@*/ void *d);
-static void macho_symrec_data_print(void *data, FILE *f, int indent_level);
-
-static const yasm_assoc_data_callback macho_symrec_data_cb = {
- macho_symrec_data_destroy,
- macho_symrec_data_print
-};
-
-yasm_objfmt_module yasm_macho_LTX_objfmt;
-yasm_objfmt_module yasm_macho32_LTX_objfmt;
-yasm_objfmt_module yasm_macho64_LTX_objfmt;
-
-static yasm_objfmt *
-macho_objfmt_create_common(yasm_object *object, yasm_objfmt_module *module,
- int bits_pref)
-{
- yasm_objfmt_macho *objfmt_macho = yasm_xmalloc(sizeof(yasm_objfmt_macho));
-
- objfmt_macho->objfmt.module = module;
-
- /* Only support x86 arch for now */
- if (yasm__strcasecmp(yasm_arch_keyword(object->arch), "x86") != 0) {
- yasm_xfree(objfmt_macho);
- return NULL;
- }
-
- /* Support x86 and amd64 machines of x86 arch */
- if (yasm__strcasecmp(yasm_arch_get_machine(object->arch), "x86") == 0 &&
- (bits_pref == 0 || bits_pref == 32)) {
- objfmt_macho->bits = 32;
- objfmt_macho->gotpcrel_sym = NULL;
- } else if (yasm__strcasecmp(yasm_arch_get_machine(object->arch),
- "amd64") == 0 &&
- (bits_pref == 0 || bits_pref == 64)) {
- objfmt_macho->bits = 64;
- /* FIXME: misuse of NULL bytecode */
- objfmt_macho->gotpcrel_sym =
- yasm_symtab_define_label(object->symtab, "..gotpcrel", NULL, 0, 0);
- } else {
- yasm_xfree(objfmt_macho);
- return NULL;
- }
-
- objfmt_macho->parse_scnum = 0; /* section numbering starts at 0 */
- return (yasm_objfmt *)objfmt_macho;
-}
-
-static yasm_objfmt *
-macho_objfmt_create(yasm_object *object)
-{
- yasm_objfmt *objfmt;
- yasm_objfmt_macho *objfmt_macho;
-
- objfmt = macho_objfmt_create_common(object, &yasm_macho_LTX_objfmt, 0);
- if (objfmt) {
- objfmt_macho = (yasm_objfmt_macho *)objfmt;
- /* Figure out which bitness of object format to use */
- if (objfmt_macho->bits == 32)
- objfmt_macho->objfmt.module = &yasm_macho32_LTX_objfmt;
- else if (objfmt_macho->bits == 64)
- objfmt_macho->objfmt.module = &yasm_macho64_LTX_objfmt;
- }
- return objfmt;
-}
-
-static yasm_objfmt *
-macho32_objfmt_create(yasm_object *object)
-{
- return macho_objfmt_create_common(object, &yasm_macho32_LTX_objfmt, 32);
-}
-
-static yasm_objfmt *
-macho64_objfmt_create(yasm_object *object)
-{
- return macho_objfmt_create_common(object, &yasm_macho64_LTX_objfmt, 64);
-}
-
-static int
-macho_objfmt_output_value(yasm_value *value, unsigned char *buf,
- unsigned int destsize, unsigned long offset,
- yasm_bytecode *bc, int warn, /*@null@*/ void *d)
-{
- /*@null@*/ macho_objfmt_output_info *info = (macho_objfmt_output_info *)d;
- yasm_objfmt_macho *objfmt_macho;
- /*@dependent@*/ /*@null@*/ yasm_intnum *intn;
- unsigned long intn_minus = 0, intn_plus = 0;
- int retval;
- unsigned int valsize = value->size;
- macho_reloc *reloc = NULL;
-
- assert(info != NULL);
- objfmt_macho = info->objfmt_macho;
-
- if (value->abs)
- value->abs = yasm_expr_simplify(value->abs, 1);
-
- /* Try to output constant and PC-relative section-local first.
- * Note this does NOT output any value with a SEG, WRT, external,
- * cross-section, or non-PC-relative reference (those are handled below).
- */
- switch (yasm_value_output_basic(value, buf, destsize, bc, warn,
- info->object->arch)) {
- case -1:
- return 1;
- case 0:
- break;
- default:
- return 0;
- }
-
- if (value->section_rel) {
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("macho: relocation too complex for current implementation"));
- return 1;
- }
-
- if (value->rel) {
- yasm_sym_vis vis = yasm_symrec_get_visibility(value->rel);
-
- reloc = yasm_xcalloc(sizeof(macho_reloc), 1);
- reloc->reloc.addr = yasm_intnum_create_uint(bc->offset + offset);
- reloc->reloc.sym = value->rel;
- switch (valsize) {
- case 64:
- reloc->length = 3;
- break;
- case 32:
- reloc->length = 2;
- break;
- case 16:
- reloc->length = 1;
- break;
- case 8:
- reloc->length = 0;
- break;
- default:
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("macho: relocation size unsupported"));
- yasm_xfree(reloc);
- return 1;
- }
- reloc->pcrel = 0;
- reloc->ext = 0;
- reloc->type = GENERIC_RELOC_VANILLA;
- /* R_ABS */
-
- if (value->rshift > 0) {
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("macho: shifted relocations not supported"));
- yasm_xfree(reloc);
- return 1;
- }
-
- if (value->seg_of) {
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("macho: SEG not supported"));
- yasm_xfree(reloc);
- return 1;
- }
-
- if (value->curpos_rel && objfmt_macho->gotpcrel_sym &&
- value->wrt == objfmt_macho->gotpcrel_sym) {
- reloc->type = X86_64_RELOC_GOT;
- value->wrt = NULL;
- } else if (value->wrt) {
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("macho: invalid WRT"));
- yasm_xfree(reloc);
- return 1;
- }
-
- if (value->curpos_rel) {
- reloc->pcrel = 1;
- if (!info->is_64) {
- /* Adjust to start of section, so subtract out the bytecode
- * offset.
- */
- intn_minus = bc->offset;
- } else {
- /* Add in the offset plus value size to end up with 0. */
- intn_plus = offset+destsize;
- if (reloc->type == X86_64_RELOC_GOT) {
- /* XXX: This is a hack */
- if (offset >= 2 && buf[-2] == 0x8B)
- reloc->type = X86_64_RELOC_GOT_LOAD;
- } else if (value->jump_target)
- reloc->type = X86_64_RELOC_BRANCH;
- else
- reloc->type = X86_64_RELOC_SIGNED;
- }
- } else if (info->is_64) {
- if (valsize == 32) {
- yasm_error_set(YASM_ERROR_NOT_CONSTANT,
- N_("macho: sorry, cannot apply 32 bit absolute relocations in 64 bit mode, consider \"[_symbol wrt rip]\" for mem access, \"qword\" and \"dq _foo\" for pointers."));
- return 1;
- }
- reloc->type = X86_64_RELOC_UNSIGNED;
- }
-
- /* It seems that x86-64 objects need to have all extern relocs? */
- if (info->is_64)
- reloc->ext = 1;
-
- if ((vis & YASM_SYM_EXTERN) || (vis & YASM_SYM_COMMON)) {
- reloc->ext = 1;
- info->msd->extreloc = 1; /* section has external relocations */
- } else if (!info->is_64) {
- /*@dependent@*/ /*@null@*/ yasm_bytecode *sym_precbc;
-
- /* Local symbols need valued to their actual address */
- if (yasm_symrec_get_label(value->rel, &sym_precbc)) {
- yasm_section *sym_sect = yasm_bc_get_section(sym_precbc);
- /*@null@*/ macho_section_data *msd;
- msd = yasm_section_get_data(sym_sect, &macho_section_data_cb);
- assert(msd != NULL);
- intn_plus += msd->vmoff + yasm_bc_next_offset(sym_precbc);
- }
- }
-
- info->msd->nreloc++;
- /*printf("reloc %s type %d ",yasm_symrec_get_name(reloc->reloc.sym),reloc->type);*/
- yasm_section_add_reloc(info->sect, (yasm_reloc *)reloc, yasm_xfree);
- }
-
- if (intn_minus <= intn_plus)
- intn = yasm_intnum_create_uint(intn_plus-intn_minus);
- else {
- intn = yasm_intnum_create_uint(intn_minus-intn_plus);
- yasm_intnum_calc(intn, YASM_EXPR_NEG, NULL);
- }
-
- if (value->abs) {
- yasm_intnum *intn2 = yasm_expr_get_intnum(&value->abs, 0);
-
- if (!intn2) {
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("macho: relocation too complex"));
- yasm_intnum_destroy(intn);
- return 1;
- }
- yasm_intnum_calc(intn, YASM_EXPR_ADD, intn2);
- }
-
- retval = yasm_arch_intnum_tobytes(info->object->arch, intn, buf, destsize,
- valsize, 0, bc, warn);
- /*printf("val %ld\n",yasm_intnum_get_int(intn));*/
- yasm_intnum_destroy(intn);
- return retval;
-}
-
-static int
-macho_objfmt_output_bytecode(yasm_bytecode *bc, /*@null@*/ void *d)
-{
- /*@null@*/ macho_objfmt_output_info *info = (macho_objfmt_output_info *)d;
- /*@null@*/ /*@only@*/ unsigned char *bigbuf;
- unsigned long size = REGULAR_OUTBUF_SIZE;
- int gap;
-
- assert(info != NULL);
-
- bigbuf = yasm_bc_tobytes(bc, info->buf, &size, &gap, info,
- macho_objfmt_output_value, NULL);
-
- /* Don't bother doing anything else if size ended up being 0. */
- if (size == 0) {
- if (bigbuf)
- yasm_xfree(bigbuf);
- return 0;
- }
-
- /* Warn that gaps are converted to 0 and write out the 0's. */
- if (gap) {
- unsigned long left;
-
- yasm_warn_set(YASM_WARN_UNINIT_CONTENTS,
- N_("uninitialized space: zeroing"));
- /* Write out in chunks */
- memset(info->buf, 0, REGULAR_OUTBUF_SIZE);
- left = size;
- while (left > REGULAR_OUTBUF_SIZE) {
- fwrite(info->buf, REGULAR_OUTBUF_SIZE, 1, info->f);
- left -= REGULAR_OUTBUF_SIZE;
- }
- fwrite(info->buf, left, 1, info->f);
- } else {
- /* Output buf (or bigbuf if non-NULL) to file */
- fwrite(bigbuf ? bigbuf : info->buf, (size_t) size, 1, info->f);
- }
-
- /* If bigbuf was allocated, free it */
- if (bigbuf)
- yasm_xfree(bigbuf);
-
- return 0;
-}
-
-static int
-macho_objfmt_output_section(yasm_section *sect, /*@null@ */ void *d)
-{
- /*@null@ */ macho_objfmt_output_info *info =
- (macho_objfmt_output_info *) d;
- /*@dependent@ *//*@null@ */ macho_section_data *msd;
-
- assert(info != NULL);
- msd = yasm_section_get_data(sect, &macho_section_data_cb);
- assert(msd != NULL);
-
- if (!(msd->flags & S_ZEROFILL)) {
- /* Output non-BSS sections */
- info->sect = sect;
- info->msd = msd;
- yasm_section_bcs_traverse(sect, info->errwarns, info,
- macho_objfmt_output_bytecode);
- }
- return 0;
-}
-
-static int
-macho_objfmt_output_relocs(yasm_section *sect, /*@null@*/ void *d)
-{
- /*@null@*/ macho_objfmt_output_info *info = (macho_objfmt_output_info *)d;
- /*@dependent@*/ /*@null@*/ macho_section_data *msd;
- macho_reloc *reloc;
-
- reloc = (macho_reloc *)yasm_section_relocs_first(sect);
- while (reloc) {
- unsigned char *localbuf = info->buf;
- /*@null@*/ macho_symrec_data *xsymd;
- unsigned long symnum;
-
- xsymd = yasm_symrec_get_data(reloc->reloc.sym, &macho_symrec_data_cb);
- yasm_intnum_get_sized(reloc->reloc.addr, localbuf, 4, 32, 0, 0, 0);
- localbuf += 4; /* address of relocation */
-
- if (reloc->ext)
- symnum = xsymd->index;
- else {
- /* find section where the symbol relates to */
- /*@dependent@*/ /*@null@*/ yasm_section *dsect;
- /*@dependent@*/ /*@null@*/ yasm_bytecode *precbc;
- symnum = 0; /* default to absolute */
- if (yasm_symrec_get_label(reloc->reloc.sym, &precbc) &&
- (dsect = yasm_bc_get_section(precbc)) &&
- (msd = yasm_section_get_data(dsect, &macho_section_data_cb)))
- symnum = msd->scnum+1;
- }
- YASM_WRITE_32_L(localbuf,
- (symnum & 0x00ffffff) |
- (((unsigned long)reloc->pcrel & 1) << 24) |
- (((unsigned long)reloc->length & 3) << 25) |
- (((unsigned long)reloc->ext & 1) << 27) |
- (((unsigned long)reloc->type & 0xf) << 28));
- fwrite(info->buf, 8, 1, info->f);
- reloc = (macho_reloc *)yasm_section_reloc_next((yasm_reloc *)reloc);
- }
-
- return 0;
-}
-
-static int
-exp2_to_bits(unsigned long val)
-{
- int ret = 0;
-
- while (val) {
- val >>= 1;
- ret++;
- }
- ret = (ret > 0) ? ret - 1 : 0;
-
- return ret;
-}
-
-static int
-macho_objfmt_is_section_label(yasm_symrec *sym)
-{
- /*@dependent@*/ /*@null@*/ yasm_section *sect;
- /*@dependent@*/ /*@null@*/ yasm_bytecode *precbc;
-
- /* Look at symrec for value/scnum/etc. */
- if (yasm_symrec_get_label(sym, &precbc)) {
- if (precbc)
- sect = yasm_bc_get_section(precbc);
- else
- sect = NULL;
- /* it's a label: get value and offset.
- * If there is not a section, leave as debugging symbol.
- */
- if (sect) {
- /*@dependent@*/ /*@null@*/ macho_section_data *msd;
-
- msd = yasm_section_get_data(sect, &macho_section_data_cb);
- if (msd) {
- if (msd->sym == sym)
- return 1; /* don't store section names */
- }
- }
- }
- return 0;
-}
-
-static int
-macho_objfmt_output_secthead(yasm_section *sect, /*@null@*/ void *d)
-{
- /*@null@*/ macho_objfmt_output_info *info = (macho_objfmt_output_info *)d;
- /*@dependent@*/ /*@null@*/ macho_section_data *msd;
- unsigned char *localbuf;
-
- assert(info != NULL);
- msd = yasm_section_get_data(sect, &macho_section_data_cb);
- assert(msd != NULL);
-
- localbuf = info->buf;
-
- memset(localbuf, 0, 16);
- strncpy((char *)localbuf, msd->sectname, 16);
- localbuf += 16;
- memset(localbuf, 0, 16);
- strncpy((char *)localbuf, msd->segname, 16);
- localbuf += 16;
- /* section address, size depend on 32/64 bit mode */
- YASM_WRITE_32_L(localbuf, msd->vmoff); /* address in memory */
- if (info->is_64)
- YASM_WRITE_32_L(localbuf, 0); /* 64-bit mode: upper 32 bits = 0 */
- YASM_WRITE_32_L(localbuf, msd->size); /* size in memory */
- if (info->is_64)
- YASM_WRITE_32_L(localbuf, 0); /* 64-bit mode: upper 32 bits = 0 */
-
- /* offset,align,reloff,nreloc,flags,reserved1,reserved2 are 32 bit */
- if ((msd->flags & SECTION_TYPE) != S_ZEROFILL) {
- YASM_WRITE_32_L(localbuf, msd->offset);
- YASM_WRITE_32_L(localbuf, exp2_to_bits(yasm_section_get_align(sect)));
- if (msd->nreloc) {
- msd->flags |= S_ATTR_LOC_RELOC;
- if (msd->extreloc)
- msd->flags |= S_ATTR_EXT_RELOC;
- YASM_WRITE_32_L(localbuf,
- align32((long)(info->rel_base + info->s_reloff)));
- YASM_WRITE_32_L(localbuf, msd->nreloc); /* nreloc */
- } else {
- YASM_WRITE_32_L(localbuf, 0);
- YASM_WRITE_32_L(localbuf, 0);
- }
-
- info->s_reloff += msd->nreloc * MACHO_RELINFO_SIZE; /* nreloc */
- } else {
- YASM_WRITE_32_L(localbuf, 0); /* these are zero in BSS */
- YASM_WRITE_32_L(localbuf, 0);
- YASM_WRITE_32_L(localbuf, 0);
- YASM_WRITE_32_L(localbuf, 0);
- }
-
- YASM_WRITE_32_L(localbuf, msd->flags); /* flags */
- YASM_WRITE_32_L(localbuf, 0); /* reserved 1 */
- YASM_WRITE_32_L(localbuf, 0); /* reserved 2 */
-
- if (info->is_64)
- fwrite(info->buf, MACHO_SECTCMD64_SIZE, 1, info->f);
- else
- fwrite(info->buf, MACHO_SECTCMD_SIZE, 1, info->f);
-
- return 0;
-}
-
-
-static int
-macho_objfmt_count_sym(yasm_symrec *sym, /*@null@*/ void *d)
-{
- /*@null@*/ macho_objfmt_output_info *info = (macho_objfmt_output_info *)d;
- /*@only@*/ char *name;
- yasm_sym_vis vis = yasm_symrec_get_visibility(sym);
-
- assert(info != NULL);
- if (info->all_syms ||
- vis & (YASM_SYM_GLOBAL | YASM_SYM_COMMON | YASM_SYM_EXTERN)) {
- if (0 == macho_objfmt_is_section_label(sym)) {
- /* Save index in symrec data */
- macho_symrec_data *sym_data =
- yasm_symrec_get_data(sym, &macho_symrec_data_cb);
- if (!sym_data) {
- sym_data = yasm_xcalloc(sizeof(macho_symrec_data), 1);
- yasm_symrec_add_data(sym, &macho_symrec_data_cb, sym_data);
- }
- sym_data->index = info->symindex;
- info->symindex++;
-
- name = yasm_symrec_get_global_name(sym, info->object);
- /*printf("%s\n",name); */
- /* name length + delimiter */
- sym_data->length = (unsigned long)strlen(name) + 1;
- info->strlength += sym_data->length;
- info->indx++;
- yasm_xfree(name);
- }
- }
- return 0;
-}
-
-
-static int
-macho_objfmt_output_symtable(yasm_symrec *sym, /*@null@*/ void *d)
-{
- /*@null@*/ macho_objfmt_output_info *info = (macho_objfmt_output_info *)d;
- yasm_sym_vis vis = yasm_symrec_get_visibility(sym);
-
- assert(info != NULL);
-
- if (info->all_syms ||
- vis & (YASM_SYM_GLOBAL | YASM_SYM_COMMON | YASM_SYM_EXTERN)) {
- const yasm_expr *equ_val;
- const yasm_intnum *intn;
- unsigned long value = 0;
- long scnum = -3; /* -3 = debugging symbol */
- /*@dependent@*/ /*@null@*/ yasm_section *sect;
- /*@dependent@*/ /*@null@*/ yasm_bytecode *precbc;
- unsigned char *localbuf;
- yasm_intnum *val;
- unsigned int long_int_bytes = (info->is_64) ? 8 : 4;
- unsigned int n_type = 0, n_sect = 0, n_desc = 0;
- macho_symrec_data *symd;
-
- val = yasm_intnum_create_uint(0);
-
- symd = yasm_symrec_get_data(sym, &macho_symrec_data_cb);
-
- /* Look at symrec for value/scnum/etc. */
- if (yasm_symrec_get_label(sym, &precbc)) {
- if (precbc)
- sect = yasm_bc_get_section(precbc);
- else
- sect = NULL;
- /* it's a label: get value and offset.
- * If there is not a section, leave as debugging symbol.
- */
- if (sect) {
- /*@dependent@*/ /*@null@*/ macho_section_data *msd;
-
- msd = yasm_section_get_data(sect, &macho_section_data_cb);
- if (msd) {
- if (msd->sym == sym) {
- /* don't store section names */
- yasm_intnum_destroy(val);
- return 0;
- }
- scnum = msd->scnum;
- n_type = N_SECT;
- } else
- yasm_internal_error(N_("didn't understand section"));
- if (precbc)
- value += yasm_bc_next_offset(precbc);
- /* all values are subject to correction: base offset is first
- * raw section, therefore add section offset
- */
- if (msd)
- value += msd->vmoff;
- yasm_intnum_set_uint(val, value);
- /*printf("%s offset %lx\n",name,value);*/
- }
- } else if ((equ_val = yasm_symrec_get_equ(sym))) {
- yasm_expr *equ_val_copy = yasm_expr_copy(equ_val);
-
- intn = yasm_expr_get_intnum(&equ_val_copy, 1);
- if (!intn) {
- if (vis & YASM_SYM_GLOBAL) {
- yasm_error_set(YASM_ERROR_NOT_CONSTANT,
- N_("global EQU value not an integer expression"));
- yasm_errwarn_propagate(info->errwarns, equ_val->line);
- }
- } else
- value = yasm_intnum_get_uint(intn);
- yasm_expr_destroy(equ_val_copy);
- yasm_intnum_set_uint(val, value);
- n_type = N_ABS;
- scnum = -2; /* -2 = absolute symbol */
- }
-
- if (vis & YASM_SYM_EXTERN) {
- n_type = N_EXT;
- scnum = -1;
- /*n_desc = REFERENCE_FLAG_UNDEFINED_LAZY; * FIXME: see definition of REFERENCE_FLAG_* above */
- } else if (vis & YASM_SYM_COMMON) {
- yasm_expr **csize = yasm_symrec_get_common_size(sym);
- n_type = N_UNDF | N_EXT;
- if (csize) {
- intn = yasm_expr_get_intnum(csize, 1);
- if (!intn) {
- yasm_error_set(YASM_ERROR_NOT_CONSTANT,
- N_("COMMON data size not an integer expression"));
- yasm_errwarn_propagate(info->errwarns, (*csize)->line);
- } else
- yasm_intnum_set_uint(val, yasm_intnum_get_uint(intn));
- }
- /*printf("common symbol %s val %lu\n", name, yasm_intnum_get_uint(val));*/
- } else if (vis & YASM_SYM_GLOBAL) {
- yasm_valparamhead *valparams =
- yasm_symrec_get_objext_valparams(sym);
-
- struct macho_global_data {
- unsigned long flag; /* N_PEXT */
- } data;
-
- data.flag = 0;
-
- if (valparams) {
- static const yasm_dir_help help[] = {
- { "private_extern", 0, yasm_dir_helper_flag_set,
- offsetof(struct macho_global_data, flag), N_PEXT },
- };
- yasm_dir_helper(sym, yasm_vps_first(valparams),
- yasm_symrec_get_decl_line(sym), help, NELEMS(help),
- &data, yasm_dir_helper_valparam_warn);
- }
-
- n_type |= N_EXT | data.flag;
- }
-
- localbuf = info->buf;
- YASM_WRITE_32_L(localbuf, info->indx); /* offset in string table */
- YASM_WRITE_8(localbuf, n_type); /* type of symbol entry */
- n_sect = (scnum >= 0) ? scnum + 1 : NO_SECT;
- YASM_WRITE_8(localbuf, n_sect); /* referring section where symbol is found */
- YASM_WRITE_16_L(localbuf, n_desc); /* extra description */
- yasm_intnum_get_sized(val, localbuf, long_int_bytes, ((long_int_bytes) << 3), 0, 0, 0); /* value/argument */
- localbuf += long_int_bytes;
- if (symd)
- symd->value = val;
- else
- yasm_intnum_destroy(val);
-
- info->indx += symd->length;
-
- fwrite(info->buf, 8 + long_int_bytes, 1, info->f);
- }
-
- return 0;
-}
-
-
-static int
-macho_objfmt_output_str(yasm_symrec *sym, /*@null@*/ void *d)
-{
- /*@null@*/ macho_objfmt_output_info *info = (macho_objfmt_output_info *)d;
- yasm_sym_vis vis = yasm_symrec_get_visibility(sym);
-
- assert(info != NULL);
-
- if (info->all_syms ||
- vis & (YASM_SYM_GLOBAL | YASM_SYM_COMMON | YASM_SYM_EXTERN)) {
- if (0 == macho_objfmt_is_section_label(sym)) {
- /*@only@*/ char *name =
- yasm_symrec_get_global_name(sym, info->object);
- size_t len = strlen(name);
-
- fwrite(name, len + 1, 1, info->f);
- yasm_xfree(name);
- }
- }
- return 0;
-}
-
-static int
-macho_objfmt_calc_sectsize(yasm_section *sect, /*@null@ */ void *d)
-{
- /*@null@ */ macho_objfmt_output_info *info =
- (macho_objfmt_output_info *) d;
- /*@dependent@ *//*@null@ */ macho_section_data *msd;
- unsigned long align;
-
- assert(info != NULL);
- msd = yasm_section_get_data(sect, &macho_section_data_cb);
- assert(msd != NULL);
-
- msd->size = yasm_bc_next_offset(yasm_section_bcs_last(sect));
- if (!(msd->flags & S_ZEROFILL)) {
- msd->offset = info->offset;
- info->offset += msd->size;
- info->filesize += msd->size;
- }
-
- /* accumulate size in memory */
- msd->vmoff = info->vmsize;
- info->vmsize += msd->size;
-
- /* align both start and end of section */
- align = yasm_section_get_align(sect);
- if (align != 0) {
- unsigned long delta = msd->vmoff % align;
- if (delta > 0) {
- msd->vmoff += align - delta;
- info->vmsize += align - delta;
- }
- }
-
- return 0;
-}
-
-/* write object */
-static void
-macho_objfmt_output(yasm_object *object, FILE *f, int all_syms,
- yasm_errwarns *errwarns)
-{
- yasm_objfmt_macho *objfmt_macho = (yasm_objfmt_macho *)object->objfmt;
- macho_objfmt_output_info info;
- unsigned char *localbuf;
- unsigned long symtab_count = 0;
- unsigned long headsize;
- unsigned int macho_segcmdsize, macho_sectcmdsize, macho_nlistsize;
- unsigned int macho_segcmd;
- unsigned int head_ncmds, head_sizeofcmds;
- unsigned long fileoffset, fileoff_sections;
- yasm_intnum *val;
- unsigned long long_int_bytes;
- const char pad_data[3] = "\0\0\0";
-
- info.object = object;
- info.objfmt_macho = objfmt_macho;
- info.errwarns = errwarns;
- info.f = f;
- info.buf = yasm_xmalloc(REGULAR_OUTBUF_SIZE);
-
- if (objfmt_macho->parse_scnum == 0) {
- yasm_internal_error(N_("no sections defined"));
- /*@notreached@*/
- return;
- }
-
- val = yasm_intnum_create_uint(0);
-
- /*
- * MACH-O Header, Seg CMD, Sect CMDs, Sym Tab, Reloc Data
- */
- info.is_64 = (objfmt_macho->bits == 32) ? 0 : 1;
- if (info.is_64) {
- /* this works only when SYMBOLS and SECTIONS present */
- headsize =
- MACHO_HEADER64_SIZE + MACHO_SEGCMD64_SIZE +
- (MACHO_SECTCMD64_SIZE * (objfmt_macho->parse_scnum)) +
- MACHO_SYMCMD_SIZE;
- macho_segcmd = LC_SEGMENT_64;
- macho_segcmdsize = MACHO_SEGCMD64_SIZE;
- macho_sectcmdsize = MACHO_SECTCMD64_SIZE;
- macho_nlistsize = MACHO_NLIST64_SIZE;
- long_int_bytes = 8;
- } else {
- headsize =
- MACHO_HEADER_SIZE + MACHO_SEGCMD_SIZE +
- (MACHO_SECTCMD_SIZE * (objfmt_macho->parse_scnum)) +
- MACHO_SYMCMD_SIZE;
- macho_segcmd = LC_SEGMENT;
- macho_segcmdsize = MACHO_SEGCMD_SIZE;
- macho_sectcmdsize = MACHO_SECTCMD_SIZE;
- macho_nlistsize = MACHO_NLIST_SIZE;
- long_int_bytes = 4;
- }
-
- /* Get number of symbols */
- info.symindex = 0;
- info.indx = 0;
- info.strlength = 1; /* string table starts with a zero byte */
- info.all_syms = all_syms || info.is_64;
- /*info.all_syms = 1; * force all syms into symbol table */
- yasm_symtab_traverse(object->symtab, &info, macho_objfmt_count_sym);
- symtab_count = info.indx;
-
- /* write raw section data first */
- if (fseek(f, (long)headsize, SEEK_SET) < 0) {
- yasm__fatal(N_("could not seek on output file"));
- /*@notreached@ */
- return;
- }
-
- /* get size of sections in memory (including BSS) and size of sections
- * in file (without BSS)
- */
- info.vmsize = 0;
- info.filesize = 0;
- info.offset = headsize;
- yasm_object_sections_traverse(object, &info, macho_objfmt_calc_sectsize);
-
- /* output sections to file */
- yasm_object_sections_traverse(object, &info, macho_objfmt_output_section);
-
- fileoff_sections = ftell(f);
-
- /* Write headers */
- if (fseek(f, 0, SEEK_SET) < 0) {
- yasm__fatal(N_("could not seek on output file"));
- /*@notreached@*/
- return;
- }
-
- localbuf = info.buf;
-
- /* header size is common to 32 bit and 64 bit variants */
- if (info.is_64) {
- YASM_WRITE_32_L(localbuf, MH_MAGIC_64); /* magic number */
- /* i386 64-bit ABI */
- YASM_WRITE_32_L(localbuf, CPU_ARCH_ABI64 | CPU_TYPE_I386);
- } else {
- YASM_WRITE_32_L(localbuf, MH_MAGIC); /* magic number */
- YASM_WRITE_32_L(localbuf, CPU_TYPE_I386); /* i386 32-bit ABI */
- }
- /* i386 all cpu subtype compatible */
- YASM_WRITE_32_L(localbuf, CPU_SUBTYPE_I386_ALL);
- YASM_WRITE_32_L(localbuf, MH_OBJECT); /* MACH file type */
-
- /* calculate number of commands and their size, put to stream */
- head_ncmds = 0;
- head_sizeofcmds = 0;
- if (objfmt_macho->parse_scnum > 0) {
- head_ncmds++;
- head_sizeofcmds +=
- macho_segcmdsize + macho_sectcmdsize * objfmt_macho->parse_scnum;
- }
- if (symtab_count > 0) {
- head_ncmds++;
- head_sizeofcmds += MACHO_SYMCMD_SIZE;
- }
-
- YASM_WRITE_32_L(localbuf, head_ncmds);
- YASM_WRITE_32_L(localbuf, head_sizeofcmds);
- YASM_WRITE_32_L(localbuf, 0); /* no flags (yet) */
- if (info.is_64) {
- YASM_WRITE_32_L(localbuf, 0); /* reserved in 64 bit */
- fileoffset = MACHO_HEADER64_SIZE + head_sizeofcmds;
- } else {
- /* initial offset to first section */
- fileoffset = MACHO_HEADER_SIZE + head_sizeofcmds;
- }
-
- /* --------------- write segment header command ---------------- */
- YASM_WRITE_32_L(localbuf, macho_segcmd); /* command LC_SEGMENT */
- /* size of load command including section load commands */
- YASM_WRITE_32_L(localbuf,
- macho_segcmdsize +
- macho_sectcmdsize * objfmt_macho->parse_scnum);
- /* in an MH_OBJECT file all sections are in one unnamed (name all zeros)
- * segment (16x0)
- */
- YASM_WRITE_32_L(localbuf, 0);
- YASM_WRITE_32_L(localbuf, 0);
- YASM_WRITE_32_L(localbuf, 0);
- YASM_WRITE_32_L(localbuf, 0);
-
- /* in-memory offset, in-memory size */
- yasm_intnum_set_uint(val, 0); /* offset in memory (vmaddr) */
- yasm_intnum_get_sized(val, localbuf, long_int_bytes,
- ((long_int_bytes) << 3), 0, 0, 0);
- localbuf += long_int_bytes;
- yasm_intnum_set_uint(val, info.vmsize); /* size in memory (vmsize) */
- yasm_intnum_get_sized(val, localbuf, long_int_bytes,
- ((long_int_bytes) << 3), 0, 0, 0);
- localbuf += long_int_bytes;
- /* offset in file to first section */
- yasm_intnum_set_uint(val, fileoffset);
- yasm_intnum_get_sized(val, localbuf, long_int_bytes,
- ((long_int_bytes) << 3), 0, 0, 0);
- localbuf += long_int_bytes;
- yasm_intnum_set_uint(val, info.filesize); /* overall size in file */
- yasm_intnum_get_sized(val, localbuf, long_int_bytes,
- ((long_int_bytes) << 3), 0, 0, 0);
- localbuf += long_int_bytes;
-
- YASM_WRITE_32_L(localbuf, VM_PROT_DEFAULT); /* VM protection, maximum */
- YASM_WRITE_32_L(localbuf, VM_PROT_DEFAULT); /* VM protection, initial */
- /* number of sections */
- YASM_WRITE_32_L(localbuf, objfmt_macho->parse_scnum);
- YASM_WRITE_32_L(localbuf, 0); /* no flags */
-
- /* write MACH-O header and segment command to outfile */
- fwrite(info.buf, (size_t) (localbuf - info.buf), 1, f);
-
- /* next: section headers */
- /* offset to relocs for first section */
- info.rel_base = align32((long)fileoff_sections);
- info.s_reloff = 0; /* offset for relocs of following sections */
- yasm_object_sections_traverse(object, &info, macho_objfmt_output_secthead);
-
- localbuf = info.buf;
- /* write out symbol command */
- YASM_WRITE_32_L(localbuf, LC_SYMTAB); /* cmd == LC_SYMTAB */
- YASM_WRITE_32_L(localbuf, MACHO_SYMCMD_SIZE);
- /* symbol table offset */
- YASM_WRITE_32_L(localbuf, info.rel_base + info.s_reloff);
- YASM_WRITE_32_L(localbuf, symtab_count); /* number of symbols */
-
- YASM_WRITE_32_L(localbuf, macho_nlistsize * symtab_count + info.rel_base +
- info.s_reloff); /* string table offset */
- YASM_WRITE_32_L(localbuf, info.strlength); /* string table size */
- /* write symbol command */
- fwrite(info.buf, (size_t)(localbuf - info.buf), 1, f);
-
- /*printf("num symbols %d, vmsize %d, filesize %d\n",symtab_count,
- info.vmsize, info.filesize ); */
-
- /* get back to end of raw section data */
- if (fseek(f, (long)fileoff_sections, SEEK_SET) < 0) {
- yasm__fatal(N_("could not seek on output file"));
- /*@notreached@*/
- return;
- }
-
- /* padding to long boundary */
- if ((info.rel_base - fileoff_sections) > 0) {
- fwrite(pad_data, info.rel_base - fileoff_sections, 1, f);
- }
-
- /* relocation data */
- yasm_object_sections_traverse(object, &info, macho_objfmt_output_relocs);
-
- /* symbol table (NLIST) */
- info.indx = 1; /* restart symbol table indices */
- yasm_symtab_traverse(object->symtab, &info, macho_objfmt_output_symtable);
-
- /* symbol strings */
- fwrite(pad_data, 1, 1, f);
- yasm_symtab_traverse(object->symtab, &info, macho_objfmt_output_str);
-
- yasm_intnum_destroy(val);
- yasm_xfree(info.buf);
-}
-
-static void
-macho_objfmt_destroy(yasm_objfmt *objfmt)
-{
- yasm_xfree(objfmt);
-}
-
-static void
-macho_objfmt_init_new_section(yasm_section *sect, unsigned long line)
-{
- yasm_object *object = yasm_section_get_object(sect);
- const char *sectname = yasm_section_get_name(sect);
- yasm_objfmt_macho *objfmt_macho = (yasm_objfmt_macho *)object->objfmt;
- macho_section_data *data;
- yasm_symrec *sym;
-
- data = yasm_xmalloc(sizeof(macho_section_data));
- data->scnum = objfmt_macho->parse_scnum++;
- data->segname = NULL;
- data->sectname = NULL;
- data->flags = S_REGULAR;
- data->size = 0;
- data->offset = 0;
- data->vmoff = 0;
- data->nreloc = 0;
- data->extreloc = 0;
- yasm_section_add_data(sect, &macho_section_data_cb, data);
-
- sym = yasm_symtab_define_label(object->symtab, sectname,
- yasm_section_bcs_first(sect), 1, line);
- data->sym = sym;
-}
-
-static yasm_section *
-macho_objfmt_add_default_section(yasm_object *object)
-{
- yasm_section *retval;
- macho_section_data *msd;
- int isnew;
-
- retval = yasm_object_get_general(object, "LC_SEGMENT.__TEXT.__text", 0, 1,
- 0, &isnew, 0);
- if (isnew) {
- msd = yasm_section_get_data(retval, &macho_section_data_cb);
- msd->segname = yasm__xstrdup("__TEXT");
- msd->sectname = yasm__xstrdup("__text");
- msd->flags = S_ATTR_PURE_INSTRUCTIONS;
- yasm_section_set_align(retval, 0, 0);
- yasm_section_set_default(retval, 1);
- }
- return retval;
-}
-
-static /*@observer@*/ /*@null@*/ yasm_section *
-macho_objfmt_section_switch(yasm_object *object, yasm_valparamhead *valparams,
- /*@unused@*/ /*@null@*/
- yasm_valparamhead *objext_valparams,
- unsigned long line)
-{
- yasm_valparam *vp;
- yasm_section *retval;
- int isnew;
- /*@only@*/ char *f_sectname;
- unsigned long flags;
- unsigned long align;
- int flags_override = 0;
- const char *sectname;
- char *realname;
- int resonly = 0;
- macho_section_data *msd;
- size_t i;
-
- static const struct {
- const char *in;
- const char *seg;
- const char *sect;
- unsigned long flags;
- unsigned long align;
- } section_name_translation[] = {
- {".text", "__TEXT", "__text", S_ATTR_PURE_INSTRUCTIONS, 0},
- {".const", "__TEXT", "__const", S_REGULAR, 0},
- {".static_const", "__TEXT", "__static_const", S_REGULAR, 0},
- {".cstring", "__TEXT", "__cstring", S_CSTRING_LITERALS, 0},
- {".literal4", "__TEXT", "__literal4", S_4BYTE_LITERALS, 4},
- {".literal8", "__TEXT", "__literal8", S_8BYTE_LITERALS, 8},
- {".literal16", "__TEXT", "__literal16", S_16BYTE_LITERALS, 16},
- {".constructor", "__TEXT", "__constructor", S_REGULAR, 0},
- {".destructor", "__TEXT", "__destructor", S_REGULAR, 0},
- {".fvmlib_init0", "__TEXT", "__fvmlib_init0", S_REGULAR, 0},
- {".fvmlib_init1", "__TEXT", "__fvmlib_init1", S_REGULAR, 0},
- {".mod_init_func", "__DATA", "__mod_init_func",
- S_MOD_INIT_FUNC_POINTERS, 4},
- {".mod_term_func", "__DATA", "__mod_term_func",
- S_MOD_TERM_FUNC_POINTERS, 4},
- {".dyld", "__DATA", "__dyld", S_REGULAR, 0},
- {".data", "__DATA", "__data", S_REGULAR, 0},
- {".static_data", "__DATA", "__static_data", S_REGULAR, 0},
- {".const_data", "__DATA", "__const", S_REGULAR, 0},
- {".rodata", "__DATA", "__const", S_REGULAR, 0},
- {".bss", "__DATA", "__bss", S_ZEROFILL, 0},
- {".objc_class_names", "__TEXT", "__cstring", S_CSTRING_LITERALS, 0},
- {".objc_meth_var_types","__TEXT", "__cstring", S_CSTRING_LITERALS, 0},
- {".objc_meth_var_names","__TEXT", "__cstring", S_CSTRING_LITERALS, 0},
- {".objc_selector_strs", "__OBJC", "__selector_strs",
- S_CSTRING_LITERALS, 0},
- {".objc_class", "__OBJC", "__class",
- S_ATTR_NO_DEAD_STRIP, 0},
- {".objc_meta_class", "__OBJC", "__meta_class",
- S_ATTR_NO_DEAD_STRIP, 0},
- {".objc_string_object", "__OBJC", "__string_object",
- S_ATTR_NO_DEAD_STRIP, 0},
- {".objc_protocol", "__OBJC", "__protocol",
- S_ATTR_NO_DEAD_STRIP, 0},
- {".objc_cat_cls_meth", "__OBJC", "__cat_cls_meth",
- S_ATTR_NO_DEAD_STRIP, 0},
- {".objc_cat_inst_meth", "__OBJC", "__cat_inst_meth",
- S_ATTR_NO_DEAD_STRIP, 0},
- {".objc_cls_meth", "__OBJC", "__cls_meth",
- S_ATTR_NO_DEAD_STRIP, 0},
- {".objc_inst_meth", "__OBJC", "__inst_meth",
- S_ATTR_NO_DEAD_STRIP, 0},
- {".objc_message_refs", "__OBJC", "__message_refs",
- S_LITERAL_POINTERS|S_ATTR_NO_DEAD_STRIP, 4},
- {".objc_cls_refs", "__OBJC", "__cls_refs",
- S_LITERAL_POINTERS|S_ATTR_NO_DEAD_STRIP, 4},
- {".objc_module_info", "__OBJC", "__module_info",
- S_ATTR_NO_DEAD_STRIP, 0},
- {".objc_symbols", "__OBJC", "__symbols",
- S_ATTR_NO_DEAD_STRIP, 0},
- {".objc_category", "__OBJC", "__category",
- S_ATTR_NO_DEAD_STRIP, 0},
- {".objc_class_vars", "__OBJC", "__class_vars",
- S_ATTR_NO_DEAD_STRIP, 0},
- {".objc_instance_vars", "__OBJC", "__instance_vars",
- S_ATTR_NO_DEAD_STRIP, 0}
- };
-
- struct macho_section_switch_data {
- /*@only@*/ /*@null@*/ char *f_segname;
- /*@only@*/ /*@null@*/ yasm_intnum *align_intn;
- } data;
-
- static const yasm_dir_help help[] = {
- { "segname", 1, yasm_dir_helper_string,
- offsetof(struct macho_section_switch_data, f_segname), 0 },
- { "align", 1, yasm_dir_helper_intn,
- offsetof(struct macho_section_switch_data, align_intn), 0 }
- };
-
- data.f_segname = NULL;
- data.align_intn = NULL;
-
- vp = yasm_vps_first(valparams);
- sectname = yasm_vp_string(vp);
- if (!sectname)
- return NULL;
- vp = yasm_vps_next(vp);
-
- /* translate .text,.data,.bss to __text,__data,__bss... */
- for (i=0; i<NELEMS(section_name_translation); i++) {
- if (yasm__strcasecmp(sectname, section_name_translation[i].in) == 0)
- break;
- }
-
- if (i == NELEMS(section_name_translation)) {
- const char *s;
- if (vp && !vp->val && (s = yasm_vp_string(vp))) {
- /* Treat as SEGNAME, SECTNAME */
- if (strlen(sectname) > 16)
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("segment name is too long, max 16 chars; truncating"));
- data.f_segname = yasm__xstrndup(sectname, 16);
- if (strlen(s) > 16)
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("section name is too long, max 16 chars; truncating"));
- f_sectname = yasm__xstrndup(s, 16);
- flags = S_REGULAR;
- align = 0;
-
- sectname = s;
- vp = yasm_vps_next(vp);
- } else {
- data.f_segname = NULL;
- if (strlen(sectname) > 16)
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("section name is too long, max 16 chars; truncating"));
- f_sectname = yasm__xstrndup(sectname, 16);
- flags = S_ATTR_SOME_INSTRUCTIONS;
- align = 0;
- }
- } else {
- data.f_segname = yasm__xstrdup(section_name_translation[i].seg);
- f_sectname = yasm__xstrdup(section_name_translation[i].sect);
- flags = section_name_translation[i].flags;
- align = section_name_translation[i].align;
- }
-
- flags_override = yasm_dir_helper(object, vp, line, help, NELEMS(help),
- &data, yasm_dir_helper_valparam_warn);
- if (flags_override < 0)
- return NULL; /* error occurred */
-
- if (data.align_intn) {
- align = yasm_intnum_get_uint(data.align_intn);
- yasm_intnum_destroy(data.align_intn);
-
- /* Alignments must be a power of two. */
- if (!is_exp2(align)) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("argument to `%s' is not a power of two"),
- vp->val);
- return NULL;
- }
-
- /* Check to see if alignment is supported size */
- if (align > 16384) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("macho implementation does not support alignments > 16384"));
- return NULL;
- }
- }
-
- if (!data.f_segname) {
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("Unknown section name, defaulting to __TEXT segment"));
- data.f_segname = yasm__xstrdup("__TEXT");
- }
-
- /* Build a unique sectname from f_segname and f_sectname. */
- realname = yasm_xmalloc(strlen("LC_SEGMENT") + 1 + strlen(data.f_segname) + 1 +
- strlen(f_sectname) + 1);
- sprintf(realname, "LC_SEGMENT.%s.%s", data.f_segname, f_sectname);
- retval = yasm_object_get_general(object, realname, align, 1, resonly,
- &isnew, line);
- yasm_xfree(realname);
-
- msd = yasm_section_get_data(retval, &macho_section_data_cb);
-
- if (isnew || yasm_section_is_default(retval)) {
- yasm_section_set_default(retval, 0);
- msd->segname = data.f_segname;
- msd->sectname = f_sectname;
- msd->flags = flags;
- yasm_section_set_align(retval, align, line);
- } else if (flags_override) {
- /* align is the only value used from overrides. */
- if (yasm_section_get_align(retval) != align) {
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("section flags ignored on section redeclaration"));
- }
- }
- return retval;
-}
-
-static /*@observer@*/ /*@null@*/ yasm_symrec *
-macho_objfmt_get_special_sym(yasm_object *object, const char *name,
- const char *parser)
-{
- yasm_objfmt_macho *objfmt_macho = (yasm_objfmt_macho *)object->objfmt;
- if (yasm__strcasecmp(name, "gotpcrel") == 0) {
- return objfmt_macho->gotpcrel_sym;
- }
- return NULL;
-}
-
-static void
-macho_section_data_destroy(void *data)
-{
- macho_section_data *msd = (macho_section_data *) data;
- yasm_xfree(msd->segname);
- yasm_xfree(msd->sectname);
- yasm_xfree(data);
-}
-
-static void
-macho_section_data_print(void *data, FILE *f, int indent_level)
-{
- macho_section_data *msd = (macho_section_data *) data;
-
- fprintf(f, "%*ssym=\n", indent_level, "");
- yasm_symrec_print(msd->sym, f, indent_level + 1);
- fprintf(f, "%*sscnum=%ld\n", indent_level, "", msd->scnum);
- fprintf(f, "%*sflags=0x%lx\n", indent_level, "", msd->flags);
- fprintf(f, "%*ssize=%lu\n", indent_level, "", msd->size);
- fprintf(f, "%*snreloc=%lu\n", indent_level, "", msd->nreloc);
- fprintf(f, "%*soffset=%lu\n", indent_level, "", msd->offset);
- fprintf(f, "%*sextreloc=%u\n", indent_level, "", msd->extreloc);
-}
-
-static void
-macho_symrec_data_destroy(void *data)
-{
- yasm_xfree(data);
-}
-
-static void
-macho_symrec_data_print(void *data, FILE *f, int indent_level)
-{
- macho_symrec_data *msd = (macho_symrec_data *)data;
-
- fprintf(f, "%*sindex=%ld\n", indent_level, "", msd->index);
- fprintf(f, "%*svalue=", indent_level, "");
- if (msd->value)
- fprintf(f, "%ld\n", yasm_intnum_get_int(msd->value));
- else
- fprintf(f, "nil\n");
-}
-
-
-/* Define valid debug formats to use with this object format */
-static const char *macho_objfmt_dbgfmt_keywords[] = {
- "null",
- NULL
-};
-
-/* Define objfmt structure -- see objfmt.h for details */
-yasm_objfmt_module yasm_macho_LTX_objfmt = {
- "Mac OS X ABI Mach-O File Format",
- "macho",
- "o",
- 32,
- 0,
- macho_objfmt_dbgfmt_keywords,
- "null",
- NULL, /* no directives */
- NULL, /* no standard macros */
- macho_objfmt_create,
- macho_objfmt_output,
- macho_objfmt_destroy,
- macho_objfmt_add_default_section,
- macho_objfmt_init_new_section,
- macho_objfmt_section_switch,
- macho_objfmt_get_special_sym
-};
-
-yasm_objfmt_module yasm_macho32_LTX_objfmt = {
- "Mac OS X ABI Mach-O File Format (32-bit)",
- "macho32",
- "o",
- 32,
- 0,
- macho_objfmt_dbgfmt_keywords,
- "null",
- NULL, /* no directives */
- NULL, /* no standard macros */
- macho32_objfmt_create,
- macho_objfmt_output,
- macho_objfmt_destroy,
- macho_objfmt_add_default_section,
- macho_objfmt_init_new_section,
- macho_objfmt_section_switch,
- macho_objfmt_get_special_sym
-};
-
-yasm_objfmt_module yasm_macho64_LTX_objfmt = {
- "Mac OS X ABI Mach-O File Format (64-bit)",
- "macho64",
- "o",
- 64,
- 0,
- macho_objfmt_dbgfmt_keywords,
- "null",
- NULL, /* no directives */
- NULL, /* no standard macros */
- macho64_objfmt_create,
- macho_objfmt_output,
- macho_objfmt_destroy,
- macho_objfmt_add_default_section,
- macho_objfmt_init_new_section,
- macho_objfmt_section_switch,
- macho_objfmt_get_special_sym
-};
+/*
+ * Mac OS X ABI Mach-O File Format
+ *
+ * Copyright (C) 2007 Henryk Richter, built upon xdf objfmt (C) Peter Johnson
+ *
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+/*
+ notes: This implementation is rather basic. There are several implementation
+ issues to be sorted out for full compliance and error resilience.
+ Some examples are given below (nasm syntax).
+
+ 1) section placement
+ Mach-O requires BSS sections to be placed last in object files. This
+ has to be done manually.
+ Example:
+
+ section .text
+ mov rax,[qword foo]
+ section .data
+ dw 0
+ section .bss
+ foo dw 0
+
+ 2) addressing issues
+
+ 2.1) symbol relative relocation (i.e. mov eax,[foo wrt bar])
+ Not implemented yet.
+
+ 2.2) data referencing in 64 bit mode
+ While ELF allows 32 bit absolute relocations in 64 bit mode, Mach-O
+ does not. Therefore code like
+ lea rbx,[_foo] ;48 8d 1c 25 00 00 00 00
+ mov rcx,[_bar] ;48 8b 0c 25 00 00 00 00
+ with a 32 bit address field cannot be relocated into an address >= 0x100000000 (OSX actually
+ uses that).
+
+ Actually, the only register where a 64 bit displacement is allowed in x86-64, is rax
+ as in the example 1).
+
+ A plausible workaround is either classic PIC (like in C), which is in turn
+ not implemented in this object format. The recommended was is PC relative
+ code (called RIP-relative in x86-64). So instead of the lines above, just write:
+ lea rbx,[_foo wrt rip]
+ mov rcx,[_bar wrt rip]
+
+ 2.3) section/data alignment
+ Normally, you specify sections with a specific alignment
+ and get your data layed out as desired. Unfortunately, the
+ linker in MacOS X seems to ignore the section alignment requests.
+ The workaround is an explicit alignment at the end of the text section.
+
+ section .text
+ movdqa xmm0,[_foo wrt rip]
+
+ align 16
+ section .data align=16
+ _foo dw 32,32,32,32,32,32,32,32
+
+ FIXME: perform that operation implicitly!
+
+ 2.4) cross section symbol differences unsupported in current implementation
+ [extern foo]
+ [extern bar]
+ section .data
+ dq bar-foo
+
+ Will currently produce an error though the necessary means are provided
+ by the Mach-O specification.
+
+*/
+
+#include <util.h>
+
+#include <libyasm.h>
+
+/* MACH-O DEFINES */
+/* Mach-O in-file header structure sizes (32 BIT, see below for 64 bit defs) */
+#define MACHO_HEADER_SIZE 28
+#define MACHO_SEGCMD_SIZE 56
+#define MACHO_SECTCMD_SIZE 68
+#define MACHO_SYMCMD_SIZE 24
+#define MACHO_NLIST_SIZE 12
+#define MACHO_RELINFO_SIZE 8
+
+/* 64 bit sizes */
+#define MACHO_HEADER64_SIZE 32
+#define MACHO_SEGCMD64_SIZE 72
+#define MACHO_SECTCMD64_SIZE 80
+#define MACHO_NLIST64_SIZE 16
+#define MACHO_RELINFO64_SIZE 8
+
+
+/* Mach-O file header values */
+#define MH_MAGIC 0xfeedface
+#define MH_MAGIC_64 0xfeedfacf
+
+/* CPU machine type */
+#define CPU_TYPE_I386 7 /* x86 platform */
+#define CPU_TYPE_X86_64 (CPU_TYPE_I386|CPU_ARCH_ABI64)
+#define CPU_ARCH_ABI64 0x01000000 /* 64 bit ABI */
+
+/* CPU machine subtype, e.g. processor */
+#define CPU_SUBTYPE_I386_ALL 3 /* all-x86 compatible */
+#define CPU_SUBTYPE_X86_64_ALL CPU_SUBTYPE_I386_ALL
+#define CPU_SUBTYPE_386 3
+#define CPU_SUBTYPE_486 4
+#define CPU_SUBTYPE_486SX (4 + 128)
+#define CPU_SUBTYPE_586 5
+#define CPU_SUBTYPE_INTEL(f, m) ((f) + ((m) << 4))
+#define CPU_SUBTYPE_PENT CPU_SUBTYPE_INTEL(5, 0)
+#define CPU_SUBTYPE_PENTPRO CPU_SUBTYPE_INTEL(6, 1)
+#define CPU_SUBTYPE_PENTII_M3 CPU_SUBTYPE_INTEL(6, 3)
+#define CPU_SUBTYPE_PENTII_M5 CPU_SUBTYPE_INTEL(6, 5)
+#define CPU_SUBTYPE_PENTIUM_4 CPU_SUBTYPE_INTEL(10, 0)
+
+#define CPU_SUBTYPE_INTEL_FAMILY(x) ((x) & 15)
+#define CPU_SUBTYPE_INTEL_FAMILY_MAX 15
+
+#define CPU_SUBTYPE_INTEL_MODEL(x) ((x) >> 4)
+#define CPU_SUBTYPE_INTEL_MODEL_ALL 0
+
+#define MH_OBJECT 0x1 /* object file */
+
+#define LC_SEGMENT 0x1 /* segment load command */
+#define LC_SYMTAB 0x2 /* symbol table load command */
+#define LC_SEGMENT_64 0x19 /* segment load command */
+
+
+#define VM_PROT_NONE 0x00
+#define VM_PROT_READ 0x01
+#define VM_PROT_WRITE 0x02
+#define VM_PROT_EXECUTE 0x04
+
+#define VM_PROT_DEFAULT (VM_PROT_READ | VM_PROT_WRITE | VM_PROT_EXECUTE)
+#define VM_PROT_ALL (VM_PROT_READ | VM_PROT_WRITE | VM_PROT_EXECUTE)
+
+#define SECTION_TYPE 0x000000ff /* section type mask */
+#define SECTION_ATTRIBUTES 0xffffff00UL/* section attributes mask */
+
+#define S_REGULAR 0x0 /* standard section */
+#define S_ZEROFILL 0x1 /* zerofill, in-memory only */
+#define S_CSTRING_LITERALS 0x2 /* literal C strings */
+#define S_4BYTE_LITERALS 0x3 /* only 4-byte literals */
+#define S_8BYTE_LITERALS 0x4 /* only 8-byte literals */
+#define S_LITERAL_POINTERS 0x5 /* only pointers to literals */
+#define S_NON_LAZY_SYMBOL_POINTERS 0x6 /* only non-lazy symbol pointers */
+#define S_LAZY_SYMBOL_POINTERS 0x7 /* only lazy symbol pointers */
+#define S_SYMBOL_STUBS 0x8 /* only symbol stubs; byte size of
+ * stub in the reserved2 field */
+#define S_MOD_INIT_FUNC_POINTERS 0x9 /* only function pointers for init */
+#define S_MOD_TERM_FUNC_POINTERS 0xa /* only function pointers for term */
+#define S_COALESCED 0xb /* symbols that are to be coalesced */
+#define S_GB_ZEROFILL 0xc /* >4GB zero fill on demand section */
+#define S_INTERPOSING 0xd /* only pairs of function pointers for
+ * interposing */
+#define S_16BYTE_LITERALS 0xe /* only 16 byte literals */
+
+#define S_ATTR_DEBUG 0x02000000 /* a debug section */
+#define SECTION_ATTRIBUTES_SYS 0x00ffff00 /* system setable attributes */
+#define S_ATTR_SOME_INSTRUCTIONS 0x00000400 /* section contains some
+ * machine instructions */
+#define S_ATTR_EXT_RELOC 0x00000200 /* section has external
+ * relocation entries */
+#define S_ATTR_LOC_RELOC 0x00000100 /* section has local
+ * relocation entries */
+
+#define SECTION_ATTRIBUTES_USR 0xff000000UL /* User setable attributes */
+#define S_ATTR_PURE_INSTRUCTIONS 0x80000000UL /* only true machine insns */
+#define S_ATTR_NO_TOC 0x40000000UL /* coalesced symbols that are
+ * not to be in a ranlib table
+ * of contents */
+#define S_ATTR_STRIP_STATIC_SYMS 0x20000000UL /* ok to strip static symbols
+ * in this section in files
+ * with the MH_DYLDLINK flag */
+#define S_ATTR_NO_DEAD_STRIP 0x10000000UL /* no dead stripping */
+#define S_ATTR_LIVE_SUPPORT 0x08000000UL /* blocks are live if they
+ * reference live blocks */
+#define S_ATTR_SELF_MODIFYING_CODE 0x04000000UL /* Used with i386 code stubs
+ * written on by dyld */
+
+/* macho references symbols in different ways whether they are linked at
+ * runtime (LAZY, read library functions) or at link time (NON_LAZY, mostly
+ * data)
+ *
+ * TODO: proper support for dynamically linkable modules would require the
+ * __import sections as well as the dsymtab command
+ */
+#define REFERENCE_FLAG_UNDEFINED_NON_LAZY 0x0
+#define REFERENCE_FLAG_UNDEFINED_LAZY 0x1
+
+#define align(x, y) \
+ (((x) + (y) - 1) & ~((y) - 1)) /* align x to multiple of y */
+
+#define align32(x) \
+ align(x, 4) /* align x to 32 bit boundary */
+
+#define macho_MAGIC 0x87654322
+
+/* Symbol table type field bit masks */
+#define N_STAB 0xe0 /* mask indicating stab entry */
+#define N_PEXT 0x10 /* private external bit */
+#define N_TYPE 0x0e /* mask for all the type bits */
+#define N_EXT 0x01 /* external (global) bit */
+
+/* Symbol table type field values */
+#define N_UNDF 0x00 /* undefined */
+#define N_ABS 0x02 /* absolute address */
+#define N_SECT 0x0e /* symbol is defined in a section */
+
+#define NO_SECT 0 /* no section for symbol in nlist */
+
+#define REGULAR_OUTBUF_SIZE 1024
+
+
+typedef struct macho_reloc {
+ yasm_reloc reloc;
+ int pcrel;
+ int length;
+ int ext;
+ enum reloc_type_x86_64 {
+ /* x86 relocations */
+ GENERIC_RELOC_VANILLA = 0, /* generic relocation */
+ GENERIC_RELOC_PAIR = 1, /* Only follows a GENERIC_RELOC_SECTDIFF */
+ GENERIC_RELOC_SECTDIFF = 2,
+ GENERIC_RELOC_PB_LA_PTR = 3, /* prebound lazy pointer */
+ GENERIC_RELOC_LOCAL_SECTDIFF = 4,
+
+ /* x86-64 relocations */
+ X86_64_RELOC_UNSIGNED = 0, /* for absolute addresses */
+ X86_64_RELOC_SIGNED = 1, /* for signed 32-bit displacement */
+ X86_64_RELOC_BRANCH = 2, /* a CALL/JMP insn with 32-bit disp */
+ X86_64_RELOC_GOT_LOAD = 3, /* a MOVQ load of a GOT entry */
+ X86_64_RELOC_GOT = 4, /* other GOT references */
+ X86_64_RELOC_SUBTRACTOR = 5, /* must be followed by a X86_64_RELOC_UNSIGNED */
+ X86_64_RELOC_SIGNED_1 = 6, /* signed 32-bit disp, -1 addend */
+ X86_64_RELOC_SIGNED_2 = 7, /* signed 32-bit disp, -2 addend */
+ X86_64_RELOC_SIGNED_4 = 8 /* signed 32-bit disp, -4 addend */
+ } type;
+} macho_reloc;
+
+typedef struct macho_section_data {
+ /*@dependent@*/ yasm_symrec *sym; /* symbol created for this section */
+ long scnum; /* section number (0=first section) */
+ /*@only@*/ char *segname; /* segment name in file */
+ /*@only@*/ char *sectname; /* section name in file */
+ unsigned long flags; /* S_* flags */
+ unsigned long size; /* size of raw data (section data) in bytes */
+ unsigned long offset; /* offset in raw data within file in bytes */
+ unsigned long vmoff; /* memory offset */
+ unsigned long nreloc; /* number of relocation entries */
+ unsigned int extreloc; /* external relocations present (0/1) */
+} macho_section_data;
+
+
+typedef struct macho_symrec_data {
+ unsigned long index; /* index in output order */
+ yasm_intnum *value; /* valid after writing symtable to file */
+ unsigned long length; /* length + 1 (plus auto underscore) */
+} macho_symrec_data;
+
+
+typedef struct yasm_objfmt_macho {
+ yasm_objfmt_base objfmt; /* base structure */
+
+ long parse_scnum; /* sect numbering in parser */
+ int bits; /* 32 / 64 */
+
+ yasm_symrec *gotpcrel_sym; /* ..gotpcrel */
+} yasm_objfmt_macho;
+
+
+typedef struct macho_objfmt_output_info {
+ yasm_object *object;
+ yasm_objfmt_macho *objfmt_macho;
+ yasm_errwarns *errwarns;
+ /*@dependent@ */ FILE *f;
+ /*@only@ */ unsigned char *buf;
+ yasm_section *sect;
+ /*@dependent@ */ macho_section_data *msd;
+
+ unsigned int is_64; /* write object in 64 bit mode */
+
+ /* vmsize and filesize available after traversing section count routine */
+ unsigned long vmsize; /* raw size of all sections (including BSS) */
+ unsigned long filesize; /* size of sections in file (excluding BSS) */
+ unsigned long offset; /* offset within file */
+
+ /* forward offset tracking */
+ unsigned long rel_base; /* first relocation in file */
+ unsigned long s_reloff; /* in-file offset to relocations */
+
+ unsigned long indx; /* current symbol size in bytes (name length+1) */
+ unsigned long symindex; /* current symbol index in output order */
+ int all_syms; /* outputting all symbols? */
+ unsigned long strlength; /* length of all strings */
+} macho_objfmt_output_info;
+
+
+static void macho_section_data_destroy(/*@only@*/ void *d);
+static void macho_section_data_print(void *data, FILE *f, int indent_level);
+
+static const yasm_assoc_data_callback macho_section_data_cb = {
+ macho_section_data_destroy,
+ macho_section_data_print
+};
+
+static void macho_symrec_data_destroy(/*@only@*/ void *d);
+static void macho_symrec_data_print(void *data, FILE *f, int indent_level);
+
+static const yasm_assoc_data_callback macho_symrec_data_cb = {
+ macho_symrec_data_destroy,
+ macho_symrec_data_print
+};
+
+yasm_objfmt_module yasm_macho_LTX_objfmt;
+yasm_objfmt_module yasm_macho32_LTX_objfmt;
+yasm_objfmt_module yasm_macho64_LTX_objfmt;
+
+static yasm_objfmt *
+macho_objfmt_create_common(yasm_object *object, yasm_objfmt_module *module,
+ int bits_pref)
+{
+ yasm_objfmt_macho *objfmt_macho = yasm_xmalloc(sizeof(yasm_objfmt_macho));
+
+ objfmt_macho->objfmt.module = module;
+
+ /* Only support x86 arch for now */
+ if (yasm__strcasecmp(yasm_arch_keyword(object->arch), "x86") != 0) {
+ yasm_xfree(objfmt_macho);
+ return NULL;
+ }
+
+ /* Support x86 and amd64 machines of x86 arch */
+ if (yasm__strcasecmp(yasm_arch_get_machine(object->arch), "x86") == 0 &&
+ (bits_pref == 0 || bits_pref == 32)) {
+ objfmt_macho->bits = 32;
+ objfmt_macho->gotpcrel_sym = NULL;
+ } else if (yasm__strcasecmp(yasm_arch_get_machine(object->arch),
+ "amd64") == 0 &&
+ (bits_pref == 0 || bits_pref == 64)) {
+ objfmt_macho->bits = 64;
+ /* FIXME: misuse of NULL bytecode */
+ objfmt_macho->gotpcrel_sym =
+ yasm_symtab_define_label(object->symtab, "..gotpcrel", NULL, 0, 0);
+ } else {
+ yasm_xfree(objfmt_macho);
+ return NULL;
+ }
+
+ objfmt_macho->parse_scnum = 0; /* section numbering starts at 0 */
+ return (yasm_objfmt *)objfmt_macho;
+}
+
+static yasm_objfmt *
+macho_objfmt_create(yasm_object *object)
+{
+ yasm_objfmt *objfmt;
+ yasm_objfmt_macho *objfmt_macho;
+
+ objfmt = macho_objfmt_create_common(object, &yasm_macho_LTX_objfmt, 0);
+ if (objfmt) {
+ objfmt_macho = (yasm_objfmt_macho *)objfmt;
+ /* Figure out which bitness of object format to use */
+ if (objfmt_macho->bits == 32)
+ objfmt_macho->objfmt.module = &yasm_macho32_LTX_objfmt;
+ else if (objfmt_macho->bits == 64)
+ objfmt_macho->objfmt.module = &yasm_macho64_LTX_objfmt;
+ }
+ return objfmt;
+}
+
+static yasm_objfmt *
+macho32_objfmt_create(yasm_object *object)
+{
+ return macho_objfmt_create_common(object, &yasm_macho32_LTX_objfmt, 32);
+}
+
+static yasm_objfmt *
+macho64_objfmt_create(yasm_object *object)
+{
+ return macho_objfmt_create_common(object, &yasm_macho64_LTX_objfmt, 64);
+}
+
+static int
+macho_objfmt_output_value(yasm_value *value, unsigned char *buf,
+ unsigned int destsize, unsigned long offset,
+ yasm_bytecode *bc, int warn, /*@null@*/ void *d)
+{
+ /*@null@*/ macho_objfmt_output_info *info = (macho_objfmt_output_info *)d;
+ yasm_objfmt_macho *objfmt_macho;
+ /*@dependent@*/ /*@null@*/ yasm_intnum *intn;
+ unsigned long intn_minus = 0, intn_plus = 0;
+ int retval;
+ unsigned int valsize = value->size;
+ macho_reloc *reloc = NULL;
+
+ assert(info != NULL);
+ objfmt_macho = info->objfmt_macho;
+
+ if (value->abs)
+ value->abs = yasm_expr_simplify(value->abs, 1);
+
+ /* Try to output constant and PC-relative section-local first.
+ * Note this does NOT output any value with a SEG, WRT, external,
+ * cross-section, or non-PC-relative reference (those are handled below).
+ */
+ switch (yasm_value_output_basic(value, buf, destsize, bc, warn,
+ info->object->arch)) {
+ case -1:
+ return 1;
+ case 0:
+ break;
+ default:
+ return 0;
+ }
+
+ if (value->section_rel) {
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("macho: relocation too complex for current implementation"));
+ return 1;
+ }
+
+ if (value->rel) {
+ yasm_sym_vis vis = yasm_symrec_get_visibility(value->rel);
+
+ reloc = yasm_xcalloc(sizeof(macho_reloc), 1);
+ reloc->reloc.addr = yasm_intnum_create_uint(bc->offset + offset);
+ reloc->reloc.sym = value->rel;
+ switch (valsize) {
+ case 64:
+ reloc->length = 3;
+ break;
+ case 32:
+ reloc->length = 2;
+ break;
+ case 16:
+ reloc->length = 1;
+ break;
+ case 8:
+ reloc->length = 0;
+ break;
+ default:
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("macho: relocation size unsupported"));
+ yasm_xfree(reloc);
+ return 1;
+ }
+ reloc->pcrel = 0;
+ reloc->ext = 0;
+ reloc->type = GENERIC_RELOC_VANILLA;
+ /* R_ABS */
+
+ if (value->rshift > 0) {
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("macho: shifted relocations not supported"));
+ yasm_xfree(reloc);
+ return 1;
+ }
+
+ if (value->seg_of) {
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("macho: SEG not supported"));
+ yasm_xfree(reloc);
+ return 1;
+ }
+
+ if (value->curpos_rel && objfmt_macho->gotpcrel_sym &&
+ value->wrt == objfmt_macho->gotpcrel_sym) {
+ reloc->type = X86_64_RELOC_GOT;
+ value->wrt = NULL;
+ } else if (value->wrt) {
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("macho: invalid WRT"));
+ yasm_xfree(reloc);
+ return 1;
+ }
+
+ if (value->curpos_rel) {
+ reloc->pcrel = 1;
+ if (!info->is_64) {
+ /* Adjust to start of section, so subtract out the bytecode
+ * offset.
+ */
+ intn_minus = bc->offset;
+ } else {
+ /* Add in the offset plus value size to end up with 0. */
+ intn_plus = offset+destsize;
+ if (reloc->type == X86_64_RELOC_GOT) {
+ /* XXX: This is a hack */
+ if (offset >= 2 && buf[-2] == 0x8B)
+ reloc->type = X86_64_RELOC_GOT_LOAD;
+ } else if (value->jump_target)
+ reloc->type = X86_64_RELOC_BRANCH;
+ else
+ reloc->type = X86_64_RELOC_SIGNED;
+ }
+ } else if (info->is_64) {
+ if (valsize == 32) {
+ yasm_error_set(YASM_ERROR_NOT_CONSTANT,
+ N_("macho: sorry, cannot apply 32 bit absolute relocations in 64 bit mode, consider \"[_symbol wrt rip]\" for mem access, \"qword\" and \"dq _foo\" for pointers."));
+ return 1;
+ }
+ reloc->type = X86_64_RELOC_UNSIGNED;
+ }
+
+ /* It seems that x86-64 objects need to have all extern relocs? */
+ if (info->is_64)
+ reloc->ext = 1;
+
+ if ((vis & YASM_SYM_EXTERN) || (vis & YASM_SYM_COMMON)) {
+ reloc->ext = 1;
+ info->msd->extreloc = 1; /* section has external relocations */
+ } else if (!info->is_64) {
+ /*@dependent@*/ /*@null@*/ yasm_bytecode *sym_precbc;
+
+ /* Local symbols need valued to their actual address */
+ if (yasm_symrec_get_label(value->rel, &sym_precbc)) {
+ yasm_section *sym_sect = yasm_bc_get_section(sym_precbc);
+ /*@null@*/ macho_section_data *msd;
+ msd = yasm_section_get_data(sym_sect, &macho_section_data_cb);
+ assert(msd != NULL);
+ intn_plus += msd->vmoff + yasm_bc_next_offset(sym_precbc);
+ }
+ }
+
+ info->msd->nreloc++;
+ /*printf("reloc %s type %d ",yasm_symrec_get_name(reloc->reloc.sym),reloc->type);*/
+ yasm_section_add_reloc(info->sect, (yasm_reloc *)reloc, yasm_xfree);
+ }
+
+ if (intn_minus <= intn_plus)
+ intn = yasm_intnum_create_uint(intn_plus-intn_minus);
+ else {
+ intn = yasm_intnum_create_uint(intn_minus-intn_plus);
+ yasm_intnum_calc(intn, YASM_EXPR_NEG, NULL);
+ }
+
+ if (value->abs) {
+ yasm_intnum *intn2 = yasm_expr_get_intnum(&value->abs, 0);
+
+ if (!intn2) {
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("macho: relocation too complex"));
+ yasm_intnum_destroy(intn);
+ return 1;
+ }
+ yasm_intnum_calc(intn, YASM_EXPR_ADD, intn2);
+ }
+
+ retval = yasm_arch_intnum_tobytes(info->object->arch, intn, buf, destsize,
+ valsize, 0, bc, warn);
+ /*printf("val %ld\n",yasm_intnum_get_int(intn));*/
+ yasm_intnum_destroy(intn);
+ return retval;
+}
+
+static int
+macho_objfmt_output_bytecode(yasm_bytecode *bc, /*@null@*/ void *d)
+{
+ /*@null@*/ macho_objfmt_output_info *info = (macho_objfmt_output_info *)d;
+ /*@null@*/ /*@only@*/ unsigned char *bigbuf;
+ unsigned long size = REGULAR_OUTBUF_SIZE;
+ int gap;
+
+ assert(info != NULL);
+
+ bigbuf = yasm_bc_tobytes(bc, info->buf, &size, &gap, info,
+ macho_objfmt_output_value, NULL);
+
+ /* Don't bother doing anything else if size ended up being 0. */
+ if (size == 0) {
+ if (bigbuf)
+ yasm_xfree(bigbuf);
+ return 0;
+ }
+
+ /* Warn that gaps are converted to 0 and write out the 0's. */
+ if (gap) {
+ unsigned long left;
+
+ yasm_warn_set(YASM_WARN_UNINIT_CONTENTS,
+ N_("uninitialized space: zeroing"));
+ /* Write out in chunks */
+ memset(info->buf, 0, REGULAR_OUTBUF_SIZE);
+ left = size;
+ while (left > REGULAR_OUTBUF_SIZE) {
+ fwrite(info->buf, REGULAR_OUTBUF_SIZE, 1, info->f);
+ left -= REGULAR_OUTBUF_SIZE;
+ }
+ fwrite(info->buf, left, 1, info->f);
+ } else {
+ /* Output buf (or bigbuf if non-NULL) to file */
+ fwrite(bigbuf ? bigbuf : info->buf, (size_t) size, 1, info->f);
+ }
+
+ /* If bigbuf was allocated, free it */
+ if (bigbuf)
+ yasm_xfree(bigbuf);
+
+ return 0;
+}
+
+static int
+macho_objfmt_output_section(yasm_section *sect, /*@null@ */ void *d)
+{
+ /*@null@ */ macho_objfmt_output_info *info =
+ (macho_objfmt_output_info *) d;
+ /*@dependent@ *//*@null@ */ macho_section_data *msd;
+
+ assert(info != NULL);
+ msd = yasm_section_get_data(sect, &macho_section_data_cb);
+ assert(msd != NULL);
+
+ if (!(msd->flags & S_ZEROFILL)) {
+ /* Output non-BSS sections */
+ info->sect = sect;
+ info->msd = msd;
+ yasm_section_bcs_traverse(sect, info->errwarns, info,
+ macho_objfmt_output_bytecode);
+ }
+ return 0;
+}
+
+static int
+macho_objfmt_output_relocs(yasm_section *sect, /*@null@*/ void *d)
+{
+ /*@null@*/ macho_objfmt_output_info *info = (macho_objfmt_output_info *)d;
+ /*@dependent@*/ /*@null@*/ macho_section_data *msd;
+ macho_reloc *reloc;
+
+ reloc = (macho_reloc *)yasm_section_relocs_first(sect);
+ while (reloc) {
+ unsigned char *localbuf = info->buf;
+ /*@null@*/ macho_symrec_data *xsymd;
+ unsigned long symnum;
+
+ xsymd = yasm_symrec_get_data(reloc->reloc.sym, &macho_symrec_data_cb);
+ yasm_intnum_get_sized(reloc->reloc.addr, localbuf, 4, 32, 0, 0, 0);
+ localbuf += 4; /* address of relocation */
+
+ if (reloc->ext)
+ symnum = xsymd->index;
+ else {
+ /* find section where the symbol relates to */
+ /*@dependent@*/ /*@null@*/ yasm_section *dsect;
+ /*@dependent@*/ /*@null@*/ yasm_bytecode *precbc;
+ symnum = 0; /* default to absolute */
+ if (yasm_symrec_get_label(reloc->reloc.sym, &precbc) &&
+ (dsect = yasm_bc_get_section(precbc)) &&
+ (msd = yasm_section_get_data(dsect, &macho_section_data_cb)))
+ symnum = msd->scnum+1;
+ }
+ YASM_WRITE_32_L(localbuf,
+ (symnum & 0x00ffffff) |
+ (((unsigned long)reloc->pcrel & 1) << 24) |
+ (((unsigned long)reloc->length & 3) << 25) |
+ (((unsigned long)reloc->ext & 1) << 27) |
+ (((unsigned long)reloc->type & 0xf) << 28));
+ fwrite(info->buf, 8, 1, info->f);
+ reloc = (macho_reloc *)yasm_section_reloc_next((yasm_reloc *)reloc);
+ }
+
+ return 0;
+}
+
+static int
+exp2_to_bits(unsigned long val)
+{
+ int ret = 0;
+
+ while (val) {
+ val >>= 1;
+ ret++;
+ }
+ ret = (ret > 0) ? ret - 1 : 0;
+
+ return ret;
+}
+
+static int
+macho_objfmt_is_section_label(yasm_symrec *sym)
+{
+ /*@dependent@*/ /*@null@*/ yasm_section *sect;
+ /*@dependent@*/ /*@null@*/ yasm_bytecode *precbc;
+
+ /* Look at symrec for value/scnum/etc. */
+ if (yasm_symrec_get_label(sym, &precbc)) {
+ if (precbc)
+ sect = yasm_bc_get_section(precbc);
+ else
+ sect = NULL;
+ /* it's a label: get value and offset.
+ * If there is not a section, leave as debugging symbol.
+ */
+ if (sect) {
+ /*@dependent@*/ /*@null@*/ macho_section_data *msd;
+
+ msd = yasm_section_get_data(sect, &macho_section_data_cb);
+ if (msd) {
+ if (msd->sym == sym)
+ return 1; /* don't store section names */
+ }
+ }
+ }
+ return 0;
+}
+
+static int
+macho_objfmt_output_secthead(yasm_section *sect, /*@null@*/ void *d)
+{
+ /*@null@*/ macho_objfmt_output_info *info = (macho_objfmt_output_info *)d;
+ /*@dependent@*/ /*@null@*/ macho_section_data *msd;
+ unsigned char *localbuf;
+
+ assert(info != NULL);
+ msd = yasm_section_get_data(sect, &macho_section_data_cb);
+ assert(msd != NULL);
+
+ localbuf = info->buf;
+
+ memset(localbuf, 0, 16);
+ strncpy((char *)localbuf, msd->sectname, 16);
+ localbuf += 16;
+ memset(localbuf, 0, 16);
+ strncpy((char *)localbuf, msd->segname, 16);
+ localbuf += 16;
+ /* section address, size depend on 32/64 bit mode */
+ YASM_WRITE_32_L(localbuf, msd->vmoff); /* address in memory */
+ if (info->is_64)
+ YASM_WRITE_32_L(localbuf, 0); /* 64-bit mode: upper 32 bits = 0 */
+ YASM_WRITE_32_L(localbuf, msd->size); /* size in memory */
+ if (info->is_64)
+ YASM_WRITE_32_L(localbuf, 0); /* 64-bit mode: upper 32 bits = 0 */
+
+ /* offset,align,reloff,nreloc,flags,reserved1,reserved2 are 32 bit */
+ if ((msd->flags & SECTION_TYPE) != S_ZEROFILL) {
+ YASM_WRITE_32_L(localbuf, msd->offset);
+ YASM_WRITE_32_L(localbuf, exp2_to_bits(yasm_section_get_align(sect)));
+ if (msd->nreloc) {
+ msd->flags |= S_ATTR_LOC_RELOC;
+ if (msd->extreloc)
+ msd->flags |= S_ATTR_EXT_RELOC;
+ YASM_WRITE_32_L(localbuf,
+ align32((long)(info->rel_base + info->s_reloff)));
+ YASM_WRITE_32_L(localbuf, msd->nreloc); /* nreloc */
+ } else {
+ YASM_WRITE_32_L(localbuf, 0);
+ YASM_WRITE_32_L(localbuf, 0);
+ }
+
+ info->s_reloff += msd->nreloc * MACHO_RELINFO_SIZE; /* nreloc */
+ } else {
+ YASM_WRITE_32_L(localbuf, 0); /* these are zero in BSS */
+ YASM_WRITE_32_L(localbuf, 0);
+ YASM_WRITE_32_L(localbuf, 0);
+ YASM_WRITE_32_L(localbuf, 0);
+ }
+
+ YASM_WRITE_32_L(localbuf, msd->flags); /* flags */
+ YASM_WRITE_32_L(localbuf, 0); /* reserved 1 */
+ YASM_WRITE_32_L(localbuf, 0); /* reserved 2 */
+
+ if (info->is_64)
+ fwrite(info->buf, MACHO_SECTCMD64_SIZE, 1, info->f);
+ else
+ fwrite(info->buf, MACHO_SECTCMD_SIZE, 1, info->f);
+
+ return 0;
+}
+
+
+static int
+macho_objfmt_count_sym(yasm_symrec *sym, /*@null@*/ void *d)
+{
+ /*@null@*/ macho_objfmt_output_info *info = (macho_objfmt_output_info *)d;
+ /*@only@*/ char *name;
+ yasm_sym_vis vis = yasm_symrec_get_visibility(sym);
+
+ assert(info != NULL);
+ if (info->all_syms ||
+ vis & (YASM_SYM_GLOBAL | YASM_SYM_COMMON | YASM_SYM_EXTERN)) {
+ if (0 == macho_objfmt_is_section_label(sym)) {
+ /* Save index in symrec data */
+ macho_symrec_data *sym_data =
+ yasm_symrec_get_data(sym, &macho_symrec_data_cb);
+ if (!sym_data) {
+ sym_data = yasm_xcalloc(sizeof(macho_symrec_data), 1);
+ yasm_symrec_add_data(sym, &macho_symrec_data_cb, sym_data);
+ }
+ sym_data->index = info->symindex;
+ info->symindex++;
+
+ name = yasm_symrec_get_global_name(sym, info->object);
+ /*printf("%s\n",name); */
+ /* name length + delimiter */
+ sym_data->length = (unsigned long)strlen(name) + 1;
+ info->strlength += sym_data->length;
+ info->indx++;
+ yasm_xfree(name);
+ }
+ }
+ return 0;
+}
+
+
+static int
+macho_objfmt_output_symtable(yasm_symrec *sym, /*@null@*/ void *d)
+{
+ /*@null@*/ macho_objfmt_output_info *info = (macho_objfmt_output_info *)d;
+ yasm_sym_vis vis = yasm_symrec_get_visibility(sym);
+
+ assert(info != NULL);
+
+ if (info->all_syms ||
+ vis & (YASM_SYM_GLOBAL | YASM_SYM_COMMON | YASM_SYM_EXTERN)) {
+ const yasm_expr *equ_val;
+ const yasm_intnum *intn;
+ unsigned long value = 0;
+ long scnum = -3; /* -3 = debugging symbol */
+ /*@dependent@*/ /*@null@*/ yasm_section *sect;
+ /*@dependent@*/ /*@null@*/ yasm_bytecode *precbc;
+ unsigned char *localbuf;
+ yasm_intnum *val;
+ unsigned int long_int_bytes = (info->is_64) ? 8 : 4;
+ unsigned int n_type = 0, n_sect = 0, n_desc = 0;
+ macho_symrec_data *symd;
+
+ val = yasm_intnum_create_uint(0);
+
+ symd = yasm_symrec_get_data(sym, &macho_symrec_data_cb);
+
+ /* Look at symrec for value/scnum/etc. */
+ if (yasm_symrec_get_label(sym, &precbc)) {
+ if (precbc)
+ sect = yasm_bc_get_section(precbc);
+ else
+ sect = NULL;
+ /* it's a label: get value and offset.
+ * If there is not a section, leave as debugging symbol.
+ */
+ if (sect) {
+ /*@dependent@*/ /*@null@*/ macho_section_data *msd;
+
+ msd = yasm_section_get_data(sect, &macho_section_data_cb);
+ if (msd) {
+ if (msd->sym == sym) {
+ /* don't store section names */
+ yasm_intnum_destroy(val);
+ return 0;
+ }
+ scnum = msd->scnum;
+ n_type = N_SECT;
+ } else
+ yasm_internal_error(N_("didn't understand section"));
+ if (precbc)
+ value += yasm_bc_next_offset(precbc);
+ /* all values are subject to correction: base offset is first
+ * raw section, therefore add section offset
+ */
+ if (msd)
+ value += msd->vmoff;
+ yasm_intnum_set_uint(val, value);
+ /*printf("%s offset %lx\n",name,value);*/
+ }
+ } else if ((equ_val = yasm_symrec_get_equ(sym))) {
+ yasm_expr *equ_val_copy = yasm_expr_copy(equ_val);
+
+ intn = yasm_expr_get_intnum(&equ_val_copy, 1);
+ if (!intn) {
+ if (vis & YASM_SYM_GLOBAL) {
+ yasm_error_set(YASM_ERROR_NOT_CONSTANT,
+ N_("global EQU value not an integer expression"));
+ yasm_errwarn_propagate(info->errwarns, equ_val->line);
+ }
+ } else
+ value = yasm_intnum_get_uint(intn);
+ yasm_expr_destroy(equ_val_copy);
+ yasm_intnum_set_uint(val, value);
+ n_type = N_ABS;
+ scnum = -2; /* -2 = absolute symbol */
+ }
+
+ if (vis & YASM_SYM_EXTERN) {
+ n_type = N_EXT;
+ scnum = -1;
+ /*n_desc = REFERENCE_FLAG_UNDEFINED_LAZY; * FIXME: see definition of REFERENCE_FLAG_* above */
+ } else if (vis & YASM_SYM_COMMON) {
+ yasm_expr **csize = yasm_symrec_get_common_size(sym);
+ n_type = N_UNDF | N_EXT;
+ if (csize) {
+ intn = yasm_expr_get_intnum(csize, 1);
+ if (!intn) {
+ yasm_error_set(YASM_ERROR_NOT_CONSTANT,
+ N_("COMMON data size not an integer expression"));
+ yasm_errwarn_propagate(info->errwarns, (*csize)->line);
+ } else
+ yasm_intnum_set_uint(val, yasm_intnum_get_uint(intn));
+ }
+ /*printf("common symbol %s val %lu\n", name, yasm_intnum_get_uint(val));*/
+ } else if (vis & YASM_SYM_GLOBAL) {
+ yasm_valparamhead *valparams =
+ yasm_symrec_get_objext_valparams(sym);
+
+ struct macho_global_data {
+ unsigned long flag; /* N_PEXT */
+ } data;
+
+ data.flag = 0;
+
+ if (valparams) {
+ static const yasm_dir_help help[] = {
+ { "private_extern", 0, yasm_dir_helper_flag_set,
+ offsetof(struct macho_global_data, flag), N_PEXT },
+ };
+ yasm_dir_helper(sym, yasm_vps_first(valparams),
+ yasm_symrec_get_decl_line(sym), help, NELEMS(help),
+ &data, yasm_dir_helper_valparam_warn);
+ }
+
+ n_type |= N_EXT | data.flag;
+ }
+
+ localbuf = info->buf;
+ YASM_WRITE_32_L(localbuf, info->indx); /* offset in string table */
+ YASM_WRITE_8(localbuf, n_type); /* type of symbol entry */
+ n_sect = (scnum >= 0) ? scnum + 1 : NO_SECT;
+ YASM_WRITE_8(localbuf, n_sect); /* referring section where symbol is found */
+ YASM_WRITE_16_L(localbuf, n_desc); /* extra description */
+ yasm_intnum_get_sized(val, localbuf, long_int_bytes, ((long_int_bytes) << 3), 0, 0, 0); /* value/argument */
+ localbuf += long_int_bytes;
+ if (symd)
+ symd->value = val;
+ else
+ yasm_intnum_destroy(val);
+
+ info->indx += symd->length;
+
+ fwrite(info->buf, 8 + long_int_bytes, 1, info->f);
+ }
+
+ return 0;
+}
+
+
+static int
+macho_objfmt_output_str(yasm_symrec *sym, /*@null@*/ void *d)
+{
+ /*@null@*/ macho_objfmt_output_info *info = (macho_objfmt_output_info *)d;
+ yasm_sym_vis vis = yasm_symrec_get_visibility(sym);
+
+ assert(info != NULL);
+
+ if (info->all_syms ||
+ vis & (YASM_SYM_GLOBAL | YASM_SYM_COMMON | YASM_SYM_EXTERN)) {
+ if (0 == macho_objfmt_is_section_label(sym)) {
+ /*@only@*/ char *name =
+ yasm_symrec_get_global_name(sym, info->object);
+ size_t len = strlen(name);
+
+ fwrite(name, len + 1, 1, info->f);
+ yasm_xfree(name);
+ }
+ }
+ return 0;
+}
+
+static int
+macho_objfmt_calc_sectsize(yasm_section *sect, /*@null@ */ void *d)
+{
+ /*@null@ */ macho_objfmt_output_info *info =
+ (macho_objfmt_output_info *) d;
+ /*@dependent@ *//*@null@ */ macho_section_data *msd;
+ unsigned long align;
+
+ assert(info != NULL);
+ msd = yasm_section_get_data(sect, &macho_section_data_cb);
+ assert(msd != NULL);
+
+ msd->size = yasm_bc_next_offset(yasm_section_bcs_last(sect));
+ if (!(msd->flags & S_ZEROFILL)) {
+ msd->offset = info->offset;
+ info->offset += msd->size;
+ info->filesize += msd->size;
+ }
+
+ /* accumulate size in memory */
+ msd->vmoff = info->vmsize;
+ info->vmsize += msd->size;
+
+ /* align both start and end of section */
+ align = yasm_section_get_align(sect);
+ if (align != 0) {
+ unsigned long delta = msd->vmoff % align;
+ if (delta > 0) {
+ msd->vmoff += align - delta;
+ info->vmsize += align - delta;
+ }
+ }
+
+ return 0;
+}
+
+/* write object */
+static void
+macho_objfmt_output(yasm_object *object, FILE *f, int all_syms,
+ yasm_errwarns *errwarns)
+{
+ yasm_objfmt_macho *objfmt_macho = (yasm_objfmt_macho *)object->objfmt;
+ macho_objfmt_output_info info;
+ unsigned char *localbuf;
+ unsigned long symtab_count = 0;
+ unsigned long headsize;
+ unsigned int macho_segcmdsize, macho_sectcmdsize, macho_nlistsize;
+ unsigned int macho_segcmd;
+ unsigned int head_ncmds, head_sizeofcmds;
+ unsigned long fileoffset, fileoff_sections;
+ yasm_intnum *val;
+ unsigned long long_int_bytes;
+ const char pad_data[3] = "\0\0\0";
+
+ info.object = object;
+ info.objfmt_macho = objfmt_macho;
+ info.errwarns = errwarns;
+ info.f = f;
+ info.buf = yasm_xmalloc(REGULAR_OUTBUF_SIZE);
+
+ if (objfmt_macho->parse_scnum == 0) {
+ yasm_internal_error(N_("no sections defined"));
+ /*@notreached@*/
+ return;
+ }
+
+ val = yasm_intnum_create_uint(0);
+
+ /*
+ * MACH-O Header, Seg CMD, Sect CMDs, Sym Tab, Reloc Data
+ */
+ info.is_64 = (objfmt_macho->bits == 32) ? 0 : 1;
+ if (info.is_64) {
+ /* this works only when SYMBOLS and SECTIONS present */
+ headsize =
+ MACHO_HEADER64_SIZE + MACHO_SEGCMD64_SIZE +
+ (MACHO_SECTCMD64_SIZE * (objfmt_macho->parse_scnum)) +
+ MACHO_SYMCMD_SIZE;
+ macho_segcmd = LC_SEGMENT_64;
+ macho_segcmdsize = MACHO_SEGCMD64_SIZE;
+ macho_sectcmdsize = MACHO_SECTCMD64_SIZE;
+ macho_nlistsize = MACHO_NLIST64_SIZE;
+ long_int_bytes = 8;
+ } else {
+ headsize =
+ MACHO_HEADER_SIZE + MACHO_SEGCMD_SIZE +
+ (MACHO_SECTCMD_SIZE * (objfmt_macho->parse_scnum)) +
+ MACHO_SYMCMD_SIZE;
+ macho_segcmd = LC_SEGMENT;
+ macho_segcmdsize = MACHO_SEGCMD_SIZE;
+ macho_sectcmdsize = MACHO_SECTCMD_SIZE;
+ macho_nlistsize = MACHO_NLIST_SIZE;
+ long_int_bytes = 4;
+ }
+
+ /* Get number of symbols */
+ info.symindex = 0;
+ info.indx = 0;
+ info.strlength = 1; /* string table starts with a zero byte */
+ info.all_syms = all_syms || info.is_64;
+ /*info.all_syms = 1; * force all syms into symbol table */
+ yasm_symtab_traverse(object->symtab, &info, macho_objfmt_count_sym);
+ symtab_count = info.indx;
+
+ /* write raw section data first */
+ if (fseek(f, (long)headsize, SEEK_SET) < 0) {
+ yasm__fatal(N_("could not seek on output file"));
+ /*@notreached@ */
+ return;
+ }
+
+ /* get size of sections in memory (including BSS) and size of sections
+ * in file (without BSS)
+ */
+ info.vmsize = 0;
+ info.filesize = 0;
+ info.offset = headsize;
+ yasm_object_sections_traverse(object, &info, macho_objfmt_calc_sectsize);
+
+ /* output sections to file */
+ yasm_object_sections_traverse(object, &info, macho_objfmt_output_section);
+
+ fileoff_sections = ftell(f);
+
+ /* Write headers */
+ if (fseek(f, 0, SEEK_SET) < 0) {
+ yasm__fatal(N_("could not seek on output file"));
+ /*@notreached@*/
+ return;
+ }
+
+ localbuf = info.buf;
+
+ /* header size is common to 32 bit and 64 bit variants */
+ if (info.is_64) {
+ YASM_WRITE_32_L(localbuf, MH_MAGIC_64); /* magic number */
+ /* i386 64-bit ABI */
+ YASM_WRITE_32_L(localbuf, CPU_ARCH_ABI64 | CPU_TYPE_I386);
+ } else {
+ YASM_WRITE_32_L(localbuf, MH_MAGIC); /* magic number */
+ YASM_WRITE_32_L(localbuf, CPU_TYPE_I386); /* i386 32-bit ABI */
+ }
+ /* i386 all cpu subtype compatible */
+ YASM_WRITE_32_L(localbuf, CPU_SUBTYPE_I386_ALL);
+ YASM_WRITE_32_L(localbuf, MH_OBJECT); /* MACH file type */
+
+ /* calculate number of commands and their size, put to stream */
+ head_ncmds = 0;
+ head_sizeofcmds = 0;
+ if (objfmt_macho->parse_scnum > 0) {
+ head_ncmds++;
+ head_sizeofcmds +=
+ macho_segcmdsize + macho_sectcmdsize * objfmt_macho->parse_scnum;
+ }
+ if (symtab_count > 0) {
+ head_ncmds++;
+ head_sizeofcmds += MACHO_SYMCMD_SIZE;
+ }
+
+ YASM_WRITE_32_L(localbuf, head_ncmds);
+ YASM_WRITE_32_L(localbuf, head_sizeofcmds);
+ YASM_WRITE_32_L(localbuf, 0); /* no flags (yet) */
+ if (info.is_64) {
+ YASM_WRITE_32_L(localbuf, 0); /* reserved in 64 bit */
+ fileoffset = MACHO_HEADER64_SIZE + head_sizeofcmds;
+ } else {
+ /* initial offset to first section */
+ fileoffset = MACHO_HEADER_SIZE + head_sizeofcmds;
+ }
+
+ /* --------------- write segment header command ---------------- */
+ YASM_WRITE_32_L(localbuf, macho_segcmd); /* command LC_SEGMENT */
+ /* size of load command including section load commands */
+ YASM_WRITE_32_L(localbuf,
+ macho_segcmdsize +
+ macho_sectcmdsize * objfmt_macho->parse_scnum);
+ /* in an MH_OBJECT file all sections are in one unnamed (name all zeros)
+ * segment (16x0)
+ */
+ YASM_WRITE_32_L(localbuf, 0);
+ YASM_WRITE_32_L(localbuf, 0);
+ YASM_WRITE_32_L(localbuf, 0);
+ YASM_WRITE_32_L(localbuf, 0);
+
+ /* in-memory offset, in-memory size */
+ yasm_intnum_set_uint(val, 0); /* offset in memory (vmaddr) */
+ yasm_intnum_get_sized(val, localbuf, long_int_bytes,
+ ((long_int_bytes) << 3), 0, 0, 0);
+ localbuf += long_int_bytes;
+ yasm_intnum_set_uint(val, info.vmsize); /* size in memory (vmsize) */
+ yasm_intnum_get_sized(val, localbuf, long_int_bytes,
+ ((long_int_bytes) << 3), 0, 0, 0);
+ localbuf += long_int_bytes;
+ /* offset in file to first section */
+ yasm_intnum_set_uint(val, fileoffset);
+ yasm_intnum_get_sized(val, localbuf, long_int_bytes,
+ ((long_int_bytes) << 3), 0, 0, 0);
+ localbuf += long_int_bytes;
+ yasm_intnum_set_uint(val, info.filesize); /* overall size in file */
+ yasm_intnum_get_sized(val, localbuf, long_int_bytes,
+ ((long_int_bytes) << 3), 0, 0, 0);
+ localbuf += long_int_bytes;
+
+ YASM_WRITE_32_L(localbuf, VM_PROT_DEFAULT); /* VM protection, maximum */
+ YASM_WRITE_32_L(localbuf, VM_PROT_DEFAULT); /* VM protection, initial */
+ /* number of sections */
+ YASM_WRITE_32_L(localbuf, objfmt_macho->parse_scnum);
+ YASM_WRITE_32_L(localbuf, 0); /* no flags */
+
+ /* write MACH-O header and segment command to outfile */
+ fwrite(info.buf, (size_t) (localbuf - info.buf), 1, f);
+
+ /* next: section headers */
+ /* offset to relocs for first section */
+ info.rel_base = align32((long)fileoff_sections);
+ info.s_reloff = 0; /* offset for relocs of following sections */
+ yasm_object_sections_traverse(object, &info, macho_objfmt_output_secthead);
+
+ localbuf = info.buf;
+ /* write out symbol command */
+ YASM_WRITE_32_L(localbuf, LC_SYMTAB); /* cmd == LC_SYMTAB */
+ YASM_WRITE_32_L(localbuf, MACHO_SYMCMD_SIZE);
+ /* symbol table offset */
+ YASM_WRITE_32_L(localbuf, info.rel_base + info.s_reloff);
+ YASM_WRITE_32_L(localbuf, symtab_count); /* number of symbols */
+
+ YASM_WRITE_32_L(localbuf, macho_nlistsize * symtab_count + info.rel_base +
+ info.s_reloff); /* string table offset */
+ YASM_WRITE_32_L(localbuf, info.strlength); /* string table size */
+ /* write symbol command */
+ fwrite(info.buf, (size_t)(localbuf - info.buf), 1, f);
+
+ /*printf("num symbols %d, vmsize %d, filesize %d\n",symtab_count,
+ info.vmsize, info.filesize ); */
+
+ /* get back to end of raw section data */
+ if (fseek(f, (long)fileoff_sections, SEEK_SET) < 0) {
+ yasm__fatal(N_("could not seek on output file"));
+ /*@notreached@*/
+ return;
+ }
+
+ /* padding to long boundary */
+ if ((info.rel_base - fileoff_sections) > 0) {
+ fwrite(pad_data, info.rel_base - fileoff_sections, 1, f);
+ }
+
+ /* relocation data */
+ yasm_object_sections_traverse(object, &info, macho_objfmt_output_relocs);
+
+ /* symbol table (NLIST) */
+ info.indx = 1; /* restart symbol table indices */
+ yasm_symtab_traverse(object->symtab, &info, macho_objfmt_output_symtable);
+
+ /* symbol strings */
+ fwrite(pad_data, 1, 1, f);
+ yasm_symtab_traverse(object->symtab, &info, macho_objfmt_output_str);
+
+ yasm_intnum_destroy(val);
+ yasm_xfree(info.buf);
+}
+
+static void
+macho_objfmt_destroy(yasm_objfmt *objfmt)
+{
+ yasm_xfree(objfmt);
+}
+
+static void
+macho_objfmt_init_new_section(yasm_section *sect, unsigned long line)
+{
+ yasm_object *object = yasm_section_get_object(sect);
+ const char *sectname = yasm_section_get_name(sect);
+ yasm_objfmt_macho *objfmt_macho = (yasm_objfmt_macho *)object->objfmt;
+ macho_section_data *data;
+ yasm_symrec *sym;
+
+ data = yasm_xmalloc(sizeof(macho_section_data));
+ data->scnum = objfmt_macho->parse_scnum++;
+ data->segname = NULL;
+ data->sectname = NULL;
+ data->flags = S_REGULAR;
+ data->size = 0;
+ data->offset = 0;
+ data->vmoff = 0;
+ data->nreloc = 0;
+ data->extreloc = 0;
+ yasm_section_add_data(sect, &macho_section_data_cb, data);
+
+ sym = yasm_symtab_define_label(object->symtab, sectname,
+ yasm_section_bcs_first(sect), 1, line);
+ data->sym = sym;
+}
+
+static yasm_section *
+macho_objfmt_add_default_section(yasm_object *object)
+{
+ yasm_section *retval;
+ macho_section_data *msd;
+ int isnew;
+
+ retval = yasm_object_get_general(object, "LC_SEGMENT.__TEXT.__text", 0, 1,
+ 0, &isnew, 0);
+ if (isnew) {
+ msd = yasm_section_get_data(retval, &macho_section_data_cb);
+ msd->segname = yasm__xstrdup("__TEXT");
+ msd->sectname = yasm__xstrdup("__text");
+ msd->flags = S_ATTR_PURE_INSTRUCTIONS;
+ yasm_section_set_align(retval, 0, 0);
+ yasm_section_set_default(retval, 1);
+ }
+ return retval;
+}
+
+static /*@observer@*/ /*@null@*/ yasm_section *
+macho_objfmt_section_switch(yasm_object *object, yasm_valparamhead *valparams,
+ /*@unused@*/ /*@null@*/
+ yasm_valparamhead *objext_valparams,
+ unsigned long line)
+{
+ yasm_valparam *vp;
+ yasm_section *retval;
+ int isnew;
+ /*@only@*/ char *f_sectname;
+ unsigned long flags;
+ unsigned long align;
+ int flags_override = 0;
+ const char *sectname;
+ char *realname;
+ int resonly = 0;
+ macho_section_data *msd;
+ size_t i;
+
+ static const struct {
+ const char *in;
+ const char *seg;
+ const char *sect;
+ unsigned long flags;
+ unsigned long align;
+ } section_name_translation[] = {
+ {".text", "__TEXT", "__text", S_ATTR_PURE_INSTRUCTIONS, 0},
+ {".const", "__TEXT", "__const", S_REGULAR, 0},
+ {".static_const", "__TEXT", "__static_const", S_REGULAR, 0},
+ {".cstring", "__TEXT", "__cstring", S_CSTRING_LITERALS, 0},
+ {".literal4", "__TEXT", "__literal4", S_4BYTE_LITERALS, 4},
+ {".literal8", "__TEXT", "__literal8", S_8BYTE_LITERALS, 8},
+ {".literal16", "__TEXT", "__literal16", S_16BYTE_LITERALS, 16},
+ {".constructor", "__TEXT", "__constructor", S_REGULAR, 0},
+ {".destructor", "__TEXT", "__destructor", S_REGULAR, 0},
+ {".fvmlib_init0", "__TEXT", "__fvmlib_init0", S_REGULAR, 0},
+ {".fvmlib_init1", "__TEXT", "__fvmlib_init1", S_REGULAR, 0},
+ {".mod_init_func", "__DATA", "__mod_init_func",
+ S_MOD_INIT_FUNC_POINTERS, 4},
+ {".mod_term_func", "__DATA", "__mod_term_func",
+ S_MOD_TERM_FUNC_POINTERS, 4},
+ {".dyld", "__DATA", "__dyld", S_REGULAR, 0},
+ {".data", "__DATA", "__data", S_REGULAR, 0},
+ {".static_data", "__DATA", "__static_data", S_REGULAR, 0},
+ {".const_data", "__DATA", "__const", S_REGULAR, 0},
+ {".rodata", "__DATA", "__const", S_REGULAR, 0},
+ {".bss", "__DATA", "__bss", S_ZEROFILL, 0},
+ {".objc_class_names", "__TEXT", "__cstring", S_CSTRING_LITERALS, 0},
+ {".objc_meth_var_types","__TEXT", "__cstring", S_CSTRING_LITERALS, 0},
+ {".objc_meth_var_names","__TEXT", "__cstring", S_CSTRING_LITERALS, 0},
+ {".objc_selector_strs", "__OBJC", "__selector_strs",
+ S_CSTRING_LITERALS, 0},
+ {".objc_class", "__OBJC", "__class",
+ S_ATTR_NO_DEAD_STRIP, 0},
+ {".objc_meta_class", "__OBJC", "__meta_class",
+ S_ATTR_NO_DEAD_STRIP, 0},
+ {".objc_string_object", "__OBJC", "__string_object",
+ S_ATTR_NO_DEAD_STRIP, 0},
+ {".objc_protocol", "__OBJC", "__protocol",
+ S_ATTR_NO_DEAD_STRIP, 0},
+ {".objc_cat_cls_meth", "__OBJC", "__cat_cls_meth",
+ S_ATTR_NO_DEAD_STRIP, 0},
+ {".objc_cat_inst_meth", "__OBJC", "__cat_inst_meth",
+ S_ATTR_NO_DEAD_STRIP, 0},
+ {".objc_cls_meth", "__OBJC", "__cls_meth",
+ S_ATTR_NO_DEAD_STRIP, 0},
+ {".objc_inst_meth", "__OBJC", "__inst_meth",
+ S_ATTR_NO_DEAD_STRIP, 0},
+ {".objc_message_refs", "__OBJC", "__message_refs",
+ S_LITERAL_POINTERS|S_ATTR_NO_DEAD_STRIP, 4},
+ {".objc_cls_refs", "__OBJC", "__cls_refs",
+ S_LITERAL_POINTERS|S_ATTR_NO_DEAD_STRIP, 4},
+ {".objc_module_info", "__OBJC", "__module_info",
+ S_ATTR_NO_DEAD_STRIP, 0},
+ {".objc_symbols", "__OBJC", "__symbols",
+ S_ATTR_NO_DEAD_STRIP, 0},
+ {".objc_category", "__OBJC", "__category",
+ S_ATTR_NO_DEAD_STRIP, 0},
+ {".objc_class_vars", "__OBJC", "__class_vars",
+ S_ATTR_NO_DEAD_STRIP, 0},
+ {".objc_instance_vars", "__OBJC", "__instance_vars",
+ S_ATTR_NO_DEAD_STRIP, 0}
+ };
+
+ struct macho_section_switch_data {
+ /*@only@*/ /*@null@*/ char *f_segname;
+ /*@only@*/ /*@null@*/ yasm_intnum *align_intn;
+ } data;
+
+ static const yasm_dir_help help[] = {
+ { "segname", 1, yasm_dir_helper_string,
+ offsetof(struct macho_section_switch_data, f_segname), 0 },
+ { "align", 1, yasm_dir_helper_intn,
+ offsetof(struct macho_section_switch_data, align_intn), 0 }
+ };
+
+ data.f_segname = NULL;
+ data.align_intn = NULL;
+
+ vp = yasm_vps_first(valparams);
+ sectname = yasm_vp_string(vp);
+ if (!sectname)
+ return NULL;
+ vp = yasm_vps_next(vp);
+
+ /* translate .text,.data,.bss to __text,__data,__bss... */
+ for (i=0; i<NELEMS(section_name_translation); i++) {
+ if (yasm__strcasecmp(sectname, section_name_translation[i].in) == 0)
+ break;
+ }
+
+ if (i == NELEMS(section_name_translation)) {
+ const char *s;
+ if (vp && !vp->val && (s = yasm_vp_string(vp))) {
+ /* Treat as SEGNAME, SECTNAME */
+ if (strlen(sectname) > 16)
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("segment name is too long, max 16 chars; truncating"));
+ data.f_segname = yasm__xstrndup(sectname, 16);
+ if (strlen(s) > 16)
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("section name is too long, max 16 chars; truncating"));
+ f_sectname = yasm__xstrndup(s, 16);
+ flags = S_REGULAR;
+ align = 0;
+
+ sectname = s;
+ vp = yasm_vps_next(vp);
+ } else {
+ data.f_segname = NULL;
+ if (strlen(sectname) > 16)
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("section name is too long, max 16 chars; truncating"));
+ f_sectname = yasm__xstrndup(sectname, 16);
+ flags = S_ATTR_SOME_INSTRUCTIONS;
+ align = 0;
+ }
+ } else {
+ data.f_segname = yasm__xstrdup(section_name_translation[i].seg);
+ f_sectname = yasm__xstrdup(section_name_translation[i].sect);
+ flags = section_name_translation[i].flags;
+ align = section_name_translation[i].align;
+ }
+
+ flags_override = yasm_dir_helper(object, vp, line, help, NELEMS(help),
+ &data, yasm_dir_helper_valparam_warn);
+ if (flags_override < 0)
+ return NULL; /* error occurred */
+
+ if (data.align_intn) {
+ align = yasm_intnum_get_uint(data.align_intn);
+ yasm_intnum_destroy(data.align_intn);
+
+ /* Alignments must be a power of two. */
+ if (!is_exp2(align)) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("argument to `%s' is not a power of two"),
+ vp->val);
+ return NULL;
+ }
+
+ /* Check to see if alignment is supported size */
+ if (align > 16384) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("macho implementation does not support alignments > 16384"));
+ return NULL;
+ }
+ }
+
+ if (!data.f_segname) {
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("Unknown section name, defaulting to __TEXT segment"));
+ data.f_segname = yasm__xstrdup("__TEXT");
+ }
+
+ /* Build a unique sectname from f_segname and f_sectname. */
+ realname = yasm_xmalloc(strlen("LC_SEGMENT") + 1 + strlen(data.f_segname) + 1 +
+ strlen(f_sectname) + 1);
+ sprintf(realname, "LC_SEGMENT.%s.%s", data.f_segname, f_sectname);
+ retval = yasm_object_get_general(object, realname, align, 1, resonly,
+ &isnew, line);
+ yasm_xfree(realname);
+
+ msd = yasm_section_get_data(retval, &macho_section_data_cb);
+
+ if (isnew || yasm_section_is_default(retval)) {
+ yasm_section_set_default(retval, 0);
+ msd->segname = data.f_segname;
+ msd->sectname = f_sectname;
+ msd->flags = flags;
+ yasm_section_set_align(retval, align, line);
+ } else if (flags_override) {
+ /* align is the only value used from overrides. */
+ if (yasm_section_get_align(retval) != align) {
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("section flags ignored on section redeclaration"));
+ }
+ }
+ return retval;
+}
+
+static /*@observer@*/ /*@null@*/ yasm_symrec *
+macho_objfmt_get_special_sym(yasm_object *object, const char *name,
+ const char *parser)
+{
+ yasm_objfmt_macho *objfmt_macho = (yasm_objfmt_macho *)object->objfmt;
+ if (yasm__strcasecmp(name, "gotpcrel") == 0) {
+ return objfmt_macho->gotpcrel_sym;
+ }
+ return NULL;
+}
+
+static void
+macho_section_data_destroy(void *data)
+{
+ macho_section_data *msd = (macho_section_data *) data;
+ yasm_xfree(msd->segname);
+ yasm_xfree(msd->sectname);
+ yasm_xfree(data);
+}
+
+static void
+macho_section_data_print(void *data, FILE *f, int indent_level)
+{
+ macho_section_data *msd = (macho_section_data *) data;
+
+ fprintf(f, "%*ssym=\n", indent_level, "");
+ yasm_symrec_print(msd->sym, f, indent_level + 1);
+ fprintf(f, "%*sscnum=%ld\n", indent_level, "", msd->scnum);
+ fprintf(f, "%*sflags=0x%lx\n", indent_level, "", msd->flags);
+ fprintf(f, "%*ssize=%lu\n", indent_level, "", msd->size);
+ fprintf(f, "%*snreloc=%lu\n", indent_level, "", msd->nreloc);
+ fprintf(f, "%*soffset=%lu\n", indent_level, "", msd->offset);
+ fprintf(f, "%*sextreloc=%u\n", indent_level, "", msd->extreloc);
+}
+
+static void
+macho_symrec_data_destroy(void *data)
+{
+ yasm_xfree(data);
+}
+
+static void
+macho_symrec_data_print(void *data, FILE *f, int indent_level)
+{
+ macho_symrec_data *msd = (macho_symrec_data *)data;
+
+ fprintf(f, "%*sindex=%ld\n", indent_level, "", msd->index);
+ fprintf(f, "%*svalue=", indent_level, "");
+ if (msd->value)
+ fprintf(f, "%ld\n", yasm_intnum_get_int(msd->value));
+ else
+ fprintf(f, "nil\n");
+}
+
+
+/* Define valid debug formats to use with this object format */
+static const char *macho_objfmt_dbgfmt_keywords[] = {
+ "null",
+ NULL
+};
+
+/* Define objfmt structure -- see objfmt.h for details */
+yasm_objfmt_module yasm_macho_LTX_objfmt = {
+ "Mac OS X ABI Mach-O File Format",
+ "macho",
+ "o",
+ 32,
+ 0,
+ macho_objfmt_dbgfmt_keywords,
+ "null",
+ NULL, /* no directives */
+ NULL, /* no standard macros */
+ macho_objfmt_create,
+ macho_objfmt_output,
+ macho_objfmt_destroy,
+ macho_objfmt_add_default_section,
+ macho_objfmt_init_new_section,
+ macho_objfmt_section_switch,
+ macho_objfmt_get_special_sym
+};
+
+yasm_objfmt_module yasm_macho32_LTX_objfmt = {
+ "Mac OS X ABI Mach-O File Format (32-bit)",
+ "macho32",
+ "o",
+ 32,
+ 0,
+ macho_objfmt_dbgfmt_keywords,
+ "null",
+ NULL, /* no directives */
+ NULL, /* no standard macros */
+ macho32_objfmt_create,
+ macho_objfmt_output,
+ macho_objfmt_destroy,
+ macho_objfmt_add_default_section,
+ macho_objfmt_init_new_section,
+ macho_objfmt_section_switch,
+ macho_objfmt_get_special_sym
+};
+
+yasm_objfmt_module yasm_macho64_LTX_objfmt = {
+ "Mac OS X ABI Mach-O File Format (64-bit)",
+ "macho64",
+ "o",
+ 64,
+ 0,
+ macho_objfmt_dbgfmt_keywords,
+ "null",
+ NULL, /* no directives */
+ NULL, /* no standard macros */
+ macho64_objfmt_create,
+ macho_objfmt_output,
+ macho_objfmt_destroy,
+ macho_objfmt_add_default_section,
+ macho_objfmt_init_new_section,
+ macho_objfmt_section_switch,
+ macho_objfmt_get_special_sym
+};
diff --git a/contrib/tools/yasm/modules/objfmts/rdf/rdf-objfmt.c b/contrib/tools/yasm/modules/objfmts/rdf/rdf-objfmt.c
index a65c4b94dd..eb3c66688c 100644
--- a/contrib/tools/yasm/modules/objfmts/rdf/rdf-objfmt.c
+++ b/contrib/tools/yasm/modules/objfmts/rdf/rdf-objfmt.c
@@ -1,1088 +1,1088 @@
-/*
- * Relocatable Dynamic Object File Format (RDOFF) version 2 format
- *
- * Copyright (C) 2006-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <libyasm.h>
-
-
-#define REGULAR_OUTBUF_SIZE 1024
-
-#define RDF_MAGIC "RDOFF2"
-
-/* Maximum size of an import/export label (including trailing zero) */
-#define EXIM_LABEL_MAX 64
-
-/* Maximum size of library or module name (including trailing zero) */
-#define MODLIB_NAME_MAX 128
-
-/* Maximum number of segments that we can handle in one file */
-#define RDF_MAXSEGS 64
-
-/* Record types that may present the RDOFF header */
-#define RDFREC_GENERIC 0
-#define RDFREC_RELOC 1
-#define RDFREC_IMPORT 2
-#define RDFREC_GLOBAL 3
-#define RDFREC_DLL 4
-#define RDFREC_BSS 5
-#define RDFREC_SEGRELOC 6
-#define RDFREC_FARIMPORT 7
-#define RDFREC_MODNAME 8
-#define RDFREC_COMMON 10
-
-/* Flags for ExportRec/ImportRec */
-#define SYM_DATA 1
-#define SYM_FUNCTION 2
-
-/* Flags for ExportRec */
-#define SYM_GLOBAL 4
-
-/* Flags for ImportRec */
-#define SYM_IMPORT 8
-#define SYM_FAR 16
-
-typedef struct rdf_reloc {
- yasm_reloc reloc;
- enum {
- RDF_RELOC_NORM, /* normal */
- RDF_RELOC_REL, /* relative to current position */
- RDF_RELOC_SEG /* segment containing symbol */
- } type; /* type of relocation */
- unsigned int size;
- unsigned int refseg;
-} rdf_reloc;
-
-typedef struct rdf_section_data {
- /*@dependent@*/ yasm_symrec *sym; /* symbol created for this section */
- long scnum; /* section number (0=first section) */
- enum {
- RDF_SECT_BSS = 0,
- RDF_SECT_CODE = 1,
- RDF_SECT_DATA = 2,
- RDF_SECT_COMMENT = 3,
- RDF_SECT_LCOMMENT = 4,
- RDF_SECT_PCOMMENT = 5,
- RDF_SECT_SYMDEBUG = 6,
- RDF_SECT_LINEDEBUG = 7
- } type; /* section type */
- unsigned int reserved; /* reserved data */
- unsigned long size; /* size of raw data (section data) in bytes */
-
- unsigned char *raw_data; /* raw section data, only used during output */
-} rdf_section_data;
-
-typedef struct rdf_symrec_data {
- unsigned int segment; /* assigned RDF "segment" index */
-} rdf_symrec_data;
-
-typedef STAILQ_HEAD(xdf_str_head, xdf_str) xdf_str_head;
-typedef struct xdf_str {
- STAILQ_ENTRY(xdf_str) link;
- /*@owned@*/ char *str;
-} xdf_str;
-
-typedef struct yasm_objfmt_rdf {
- yasm_objfmt_base objfmt; /* base structure */
-
- long parse_scnum; /* sect numbering in parser */
-
- /*@owned@*/ xdf_str_head module_names;
- /*@owned@*/ xdf_str_head library_names;
-} yasm_objfmt_rdf;
-
-typedef struct rdf_objfmt_output_info {
- yasm_object *object;
- yasm_objfmt_rdf *objfmt_rdf;
- yasm_errwarns *errwarns;
- /*@dependent@*/ FILE *f;
- /*@only@*/ unsigned char *buf;
- yasm_section *sect;
- /*@dependent@*/ rdf_section_data *rsd;
-
- unsigned long indx; /* symbol "segment" (extern/common only) */
-
- unsigned long bss_size; /* total BSS size */
-} rdf_objfmt_output_info;
-
-static void rdf_section_data_destroy(/*@only@*/ void *d);
-static void rdf_section_data_print(void *data, FILE *f, int indent_level);
-
-static const yasm_assoc_data_callback rdf_section_data_cb = {
- rdf_section_data_destroy,
- rdf_section_data_print
-};
-
-static void rdf_symrec_data_destroy(/*@only@*/ void *d);
-static void rdf_symrec_data_print(void *data, FILE *f, int indent_level);
-
-static const yasm_assoc_data_callback rdf_symrec_data_cb = {
- rdf_symrec_data_destroy,
- rdf_symrec_data_print
-};
-
-yasm_objfmt_module yasm_rdf_LTX_objfmt;
-
-
-static /*@dependent@*/ rdf_symrec_data *
-rdf_objfmt_sym_set_data(yasm_symrec *sym, unsigned int segment)
-{
- rdf_symrec_data *rsymd = yasm_xmalloc(sizeof(rdf_symrec_data));
-
- rsymd->segment = segment;
-
- yasm_symrec_add_data(sym, &rdf_symrec_data_cb, rsymd);
- return rsymd;
-}
-
-static yasm_objfmt *
-rdf_objfmt_create(yasm_object *object)
-{
- yasm_objfmt_rdf *objfmt_rdf = yasm_xmalloc(sizeof(yasm_objfmt_rdf));
-
- /* We theoretically support all arches, so don't check.
- * Really we only support byte-addressable ones.
- */
-
- objfmt_rdf->parse_scnum = 0; /* section numbering starts at 0 */
-
- STAILQ_INIT(&objfmt_rdf->module_names);
- STAILQ_INIT(&objfmt_rdf->library_names);
-
- objfmt_rdf->objfmt.module = &yasm_rdf_LTX_objfmt;
-
- return (yasm_objfmt *)objfmt_rdf;
-}
-
-static int
-rdf_objfmt_output_value(yasm_value *value, unsigned char *buf,
- unsigned int destsize, unsigned long offset,
- yasm_bytecode *bc, int warn, /*@null@*/ void *d)
-{
- /*@null@*/ rdf_objfmt_output_info *info = (rdf_objfmt_output_info *)d;
- /*@dependent@*/ /*@null@*/ yasm_intnum *intn;
- unsigned long intn_minus;
- unsigned long intn_plus;
- int retval;
- unsigned int valsize = value->size;
-
- assert(info != NULL);
-
- if (value->abs)
- value->abs = yasm_expr_simplify(value->abs, 1);
-
- /* Try to output constant and PC-relative section-local first.
- * Note this does NOT output any value with a SEG, WRT, external,
- * cross-section, or non-PC-relative reference (those are handled below).
- */
- switch (yasm_value_output_basic(value, buf, destsize, bc, warn,
- info->object->arch)) {
- case -1:
- return 1;
- case 0:
- break;
- default:
- return 0;
- }
-
- if (value->section_rel) {
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("rdf: relocation too complex"));
- return 1;
- }
-
- if (value->rel && value->wrt) {
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("rdf: WRT not supported"));
- return 1;
- }
-
- intn_minus = 0;
- intn_plus = 0;
- if (value->rel) {
- rdf_reloc *reloc;
- /*@null@*/ rdf_symrec_data *rsymd;
- /*@dependent@*/ yasm_bytecode *precbc;
-
- reloc = yasm_xmalloc(sizeof(rdf_reloc));
- reloc->reloc.addr = yasm_intnum_create_uint(bc->offset + offset);
- reloc->reloc.sym = value->rel;
- reloc->size = valsize/8;
-
- if (value->seg_of)
- reloc->type = RDF_RELOC_SEG;
- else if (value->curpos_rel) {
- reloc->type = RDF_RELOC_REL;
- /* Adjust to start of section, so subtract out the bytecode
- * offset.
- */
- intn_minus = bc->offset;
- } else
- reloc->type = RDF_RELOC_NORM;
-
- if (yasm_symrec_get_label(value->rel, &precbc)) {
- /* local, set the value to be the offset, and the refseg to the
- * segment number.
- */
- /*@dependent@*/ /*@null@*/ rdf_section_data *csectd;
- /*@dependent@*/ yasm_section *sect;
-
- sect = yasm_bc_get_section(precbc);
- csectd = yasm_section_get_data(sect, &rdf_section_data_cb);
- if (!csectd)
- yasm_internal_error(N_("didn't understand section"));
- reloc->refseg = csectd->scnum;
- intn_plus = yasm_bc_next_offset(precbc);
- } else {
- /* must be common/external */
- rsymd = yasm_symrec_get_data(reloc->reloc.sym,
- &rdf_symrec_data_cb);
- if (!rsymd)
- yasm_internal_error(
- N_("rdf: no symbol data for relocated symbol"));
- reloc->refseg = rsymd->segment;
- }
-
- yasm_section_add_reloc(info->sect, (yasm_reloc *)reloc, yasm_xfree);
- }
-
- if (intn_minus > 0) {
- intn = yasm_intnum_create_uint(intn_minus);
- yasm_intnum_calc(intn, YASM_EXPR_NEG, NULL);
- } else
- intn = yasm_intnum_create_uint(intn_plus);
-
- if (value->abs) {
- yasm_intnum *intn2 = yasm_expr_get_intnum(&value->abs, 0);
- if (!intn2) {
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("rdf: relocation too complex"));
- yasm_intnum_destroy(intn);
- return 1;
- }
- yasm_intnum_calc(intn, YASM_EXPR_ADD, intn2);
- }
-
- retval = yasm_arch_intnum_tobytes(info->object->arch, intn, buf, destsize,
- valsize, 0, bc, warn);
- yasm_intnum_destroy(intn);
- return retval;
-}
-
-static int
-rdf_objfmt_output_bytecode(yasm_bytecode *bc, /*@null@*/ void *d)
-{
- /*@null@*/ rdf_objfmt_output_info *info = (rdf_objfmt_output_info *)d;
- /*@null@*/ /*@only@*/ unsigned char *bigbuf;
- unsigned long size = REGULAR_OUTBUF_SIZE;
- int gap;
-
- assert(info != NULL);
-
- bigbuf = yasm_bc_tobytes(bc, info->buf, &size, &gap, info,
- rdf_objfmt_output_value, NULL);
-
- /* Don't bother doing anything else if size ended up being 0. */
- if (size == 0) {
- if (bigbuf)
- yasm_xfree(bigbuf);
- return 0;
- }
-
- /* Warn that gaps are converted to 0 and write out the 0's. */
- if (gap) {
- yasm_warn_set(YASM_WARN_UNINIT_CONTENTS,
- N_("uninitialized space: zeroing"));
- /* Write out in chunks */
- memset(&info->rsd->raw_data[info->rsd->size], 0, size);
- } else {
- /* Output buf (or bigbuf if non-NULL) to file */
- memcpy(&info->rsd->raw_data[info->rsd->size],
- bigbuf ? bigbuf : info->buf, (size_t)size);
- }
-
- info->rsd->size += size;
-
- /* If bigbuf was allocated, free it */
- if (bigbuf)
- yasm_xfree(bigbuf);
-
- return 0;
-}
-
-static int
-rdf_objfmt_output_section_mem(yasm_section *sect, /*@null@*/ void *d)
-{
- /*@null@*/ rdf_objfmt_output_info *info = (rdf_objfmt_output_info *)d;
- /*@dependent@*/ /*@null@*/ rdf_section_data *rsd;
- unsigned long size;
-
- assert(info != NULL);
- rsd = yasm_section_get_data(sect, &rdf_section_data_cb);
- assert(rsd != NULL);
-
- size = yasm_bc_next_offset(yasm_section_bcs_last(sect));
-
- if (rsd->type == RDF_SECT_BSS) {
- /* Don't output BSS sections, but remember length
- * TODO: Check for non-reserve bytecodes?
- */
- info->bss_size += size;
- return 0;
- }
-
- /* Empty? Go on to next section */
- if (size == 0)
- return 0;
-
- /* See UGH comment in output() for why we're doing this */
- rsd->raw_data = yasm_xmalloc(size);
- rsd->size = 0;
-
- info->sect = sect;
- info->rsd = rsd;
- yasm_section_bcs_traverse(sect, info->errwarns, info,
- rdf_objfmt_output_bytecode);
-
- /* Sanity check final section size */
- if (rsd->size != size)
- yasm_internal_error(
- N_("rdf: section computed size did not match actual size"));
-
- return 0;
-}
-
-static int
-rdf_objfmt_output_section_reloc(yasm_section *sect, /*@null@*/ void *d)
-{
- /*@null@*/ rdf_objfmt_output_info *info = (rdf_objfmt_output_info *)d;
- /*@dependent@*/ /*@null@*/ rdf_section_data *rsd;
- rdf_reloc *reloc;
-
- assert(info != NULL);
- rsd = yasm_section_get_data(sect, &rdf_section_data_cb);
- assert(rsd != NULL);
-
- if (rsd->type == RDF_SECT_BSS) {
- /* Don't output BSS sections. */
- return 0;
- }
-
- /* Empty? Go on to next section */
- if (rsd->size == 0)
- return 0;
-
- reloc = (rdf_reloc *)yasm_section_relocs_first(sect);
- while (reloc) {
- unsigned char *localbuf = info->buf;
-
- if (reloc->type == RDF_RELOC_SEG)
- YASM_WRITE_8(localbuf, RDFREC_SEGRELOC);
- else
- YASM_WRITE_8(localbuf, RDFREC_RELOC);
- YASM_WRITE_8(localbuf, 8); /* record length */
- /* Section number, +0x40 if relative reloc */
- YASM_WRITE_8(localbuf, rsd->scnum +
- (reloc->type == RDF_RELOC_REL ? 0x40 : 0));
- yasm_intnum_get_sized(reloc->reloc.addr, localbuf, 4, 32, 0, 0, 0);
- localbuf += 4; /* offset of relocation */
- YASM_WRITE_8(localbuf, reloc->size); /* size of relocation */
- YASM_WRITE_16_L(localbuf, reloc->refseg); /* relocated symbol */
- fwrite(info->buf, 10, 1, info->f);
-
- reloc = (rdf_reloc *)yasm_section_reloc_next((yasm_reloc *)reloc);
- }
-
- return 0;
-}
-
-static int
-rdf_objfmt_output_section_file(yasm_section *sect, /*@null@*/ void *d)
-{
- /*@null@*/ rdf_objfmt_output_info *info = (rdf_objfmt_output_info *)d;
- /*@dependent@*/ /*@null@*/ rdf_section_data *rsd;
- unsigned char *localbuf;
-
- assert(info != NULL);
- rsd = yasm_section_get_data(sect, &rdf_section_data_cb);
- assert(rsd != NULL);
-
- if (rsd->type == RDF_SECT_BSS) {
- /* Don't output BSS sections. */
- return 0;
- }
-
- /* Empty? Go on to next section */
- if (rsd->size == 0)
- return 0;
-
- /* Section header */
- localbuf = info->buf;
- YASM_WRITE_16_L(localbuf, rsd->type); /* type */
- YASM_WRITE_16_L(localbuf, rsd->scnum); /* number */
- YASM_WRITE_16_L(localbuf, rsd->reserved); /* reserved */
- YASM_WRITE_32_L(localbuf, rsd->size); /* length */
- fwrite(info->buf, 10, 1, info->f);
-
- /* Section data */
- fwrite(rsd->raw_data, rsd->size, 1, info->f);
-
- /* Free section data */
- yasm_xfree(rsd->raw_data);
- rsd->raw_data = NULL;
-
- return 0;
-}
-
-#define FLAG_EXT 0x1000
-#define FLAG_GLOB 0x2000
-#define FLAG_SET 0x4000
-#define FLAG_CLR 0x8000
-#define FLAG_MASK 0x0fff
-
-static int
-rdf_helper_flag(void *obj, yasm_valparam *vp, unsigned long line, void *d,
- uintptr_t flag)
-{
- yasm_symrec *sym = (yasm_symrec *)obj;
- yasm_sym_vis vis = yasm_symrec_get_visibility(sym);
- unsigned int *flags = (unsigned int *)d;
-
- if (((vis & YASM_SYM_GLOBAL) && (flag & FLAG_GLOB)) ||
- ((vis & YASM_SYM_EXTERN) && (flag & FLAG_EXT))) {
- if (flag & FLAG_SET)
- *flags |= flag & FLAG_MASK;
- else if (flag & FLAG_CLR)
- *flags &= ~(flag & FLAG_MASK);
- }
- return 0;
-}
-
-static unsigned int
-rdf_parse_flags(yasm_symrec *sym)
-{
- /*@dependent@*/ /*@null@*/ yasm_valparamhead *objext_valparams =
- yasm_symrec_get_objext_valparams(sym);
- unsigned int flags = 0;
-
- static const yasm_dir_help help[] = {
- { "data", 0, rdf_helper_flag, 0,
- FLAG_EXT|FLAG_GLOB|FLAG_SET|SYM_DATA },
- { "object", 0, rdf_helper_flag, 0,
- FLAG_EXT|FLAG_GLOB|FLAG_SET|SYM_DATA },
- { "proc", 0, rdf_helper_flag, 0,
- FLAG_EXT|FLAG_GLOB|FLAG_SET|SYM_FUNCTION },
- { "function", 0, rdf_helper_flag, 0,
- FLAG_EXT|FLAG_GLOB|FLAG_SET|SYM_FUNCTION },
- { "import", 0, rdf_helper_flag, 0, FLAG_EXT|FLAG_SET|SYM_IMPORT },
- { "export", 0, rdf_helper_flag, 0, FLAG_GLOB|FLAG_SET|SYM_GLOBAL },
- { "far", 0, rdf_helper_flag, 0, FLAG_EXT|FLAG_SET|SYM_FAR },
- { "near", 0, rdf_helper_flag, 0, FLAG_EXT|FLAG_CLR|SYM_FAR }
- };
-
- if (!objext_valparams)
- return 0;
-
- yasm_dir_helper(sym, yasm_vps_first(objext_valparams), 0, help,
- NELEMS(help), &flags, yasm_dir_helper_valparam_warn);
-
- return flags;
-}
-
-static int
-rdf_objfmt_output_sym(yasm_symrec *sym, /*@null@*/ void *d)
-{
- /*@null@*/ rdf_objfmt_output_info *info = (rdf_objfmt_output_info *)d;
- yasm_sym_vis vis = yasm_symrec_get_visibility(sym);
- /*@only@*/ char *name;
- size_t len;
- unsigned long value = 0;
- unsigned int scnum = 0;
- /*@dependent@*/ /*@null@*/ yasm_section *sect;
- /*@dependent@*/ /*@null@*/ yasm_bytecode *precbc;
- unsigned char *localbuf;
-
- assert(info != NULL);
-
- if (vis == YASM_SYM_LOCAL || vis == YASM_SYM_DLOCAL)
- return 0; /* skip local syms */
-
- /* Look at symrec for value/scnum/etc. */
- if (yasm_symrec_get_label(sym, &precbc)) {
- /*@dependent@*/ /*@null@*/ rdf_section_data *csectd;
-
- if (precbc)
- sect = yasm_bc_get_section(precbc);
- else
- sect = NULL;
- if (!sect)
- return 0;
-
- /* it's a label: get value and offset. */
- csectd = yasm_section_get_data(sect, &rdf_section_data_cb);
- if (csectd)
- scnum = csectd->scnum;
- else
- yasm_internal_error(N_("didn't understand section"));
- value = yasm_bc_next_offset(precbc);
- } else if (yasm_symrec_get_equ(sym)) {
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("rdf does not support exporting EQU/absolute values"));
- yasm_errwarn_propagate(info->errwarns, yasm_symrec_get_decl_line(sym));
- return 0;
- }
-
- name = yasm_symrec_get_global_name(sym, info->object);
- len = strlen(name);
-
- if (len > EXIM_LABEL_MAX-1) {
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("label name too long, truncating to %d bytes"),
- EXIM_LABEL_MAX);
- len = EXIM_LABEL_MAX-1;
- }
-
- localbuf = info->buf;
- if (vis & YASM_SYM_GLOBAL) {
- YASM_WRITE_8(localbuf, RDFREC_GLOBAL);
- YASM_WRITE_8(localbuf, 6+len+1); /* record length */
- YASM_WRITE_8(localbuf, rdf_parse_flags(sym)); /* flags */
- YASM_WRITE_8(localbuf, scnum); /* segment referred to */
- YASM_WRITE_32_L(localbuf, value); /* offset */
- } else {
- /* Save symbol segment in symrec data (for later reloc gen) */
- scnum = info->indx++;
- rdf_objfmt_sym_set_data(sym, scnum);
-
- if (vis & YASM_SYM_COMMON) {
- /*@dependent@*/ /*@null@*/ yasm_expr **csize_expr;
- const yasm_intnum *intn;
- /*@dependent@*/ /*@null@*/ yasm_valparamhead *objext_valparams =
- yasm_symrec_get_objext_valparams(sym);
- unsigned long addralign = 0;
-
- YASM_WRITE_8(localbuf, RDFREC_COMMON);
- YASM_WRITE_8(localbuf, 8+len+1); /* record length */
- YASM_WRITE_16_L(localbuf, scnum); /* segment allocated */
-
- /* size */
- csize_expr = yasm_symrec_get_common_size(sym);
- assert(csize_expr != NULL);
- intn = yasm_expr_get_intnum(csize_expr, 1);
- if (!intn) {
- yasm_error_set(YASM_ERROR_NOT_CONSTANT,
- N_("COMMON data size not an integer expression"));
- } else
- value = yasm_intnum_get_uint(intn);
- YASM_WRITE_32_L(localbuf, value);
-
- /* alignment */
- if (objext_valparams) {
- yasm_valparam *vp = yasm_vps_first(objext_valparams);
- for (; vp; vp = yasm_vps_next(vp)) {
- if (!vp->val) {
- /*@only@*/ /*@null@*/ yasm_expr *align_expr;
- /*@dependent@*/ /*@null@*/
- const yasm_intnum *align_intn;
-
- if (!(align_expr = yasm_vp_expr(vp,
- info->object->symtab,
- yasm_symrec_get_decl_line(sym))) ||
- !(align_intn = yasm_expr_get_intnum(&align_expr,
- 0))) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("argument to `%s' is not an integer"),
- vp->val);
- if (align_expr)
- yasm_expr_destroy(align_expr);
- continue;
- }
- addralign = yasm_intnum_get_uint(align_intn);
- yasm_expr_destroy(align_expr);
-
- /* Alignments must be a power of two. */
- if (!is_exp2(addralign)) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("alignment constraint is not a power of two"));
- continue;
- }
- } else
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("Unrecognized qualifier `%s'"), vp->val);
- }
- }
- YASM_WRITE_16_L(localbuf, addralign);
- } else if (vis & YASM_SYM_EXTERN) {
- unsigned int flags = rdf_parse_flags(sym);
- if (flags & SYM_FAR) {
- YASM_WRITE_8(localbuf, RDFREC_FARIMPORT);
- flags &= ~SYM_FAR;
- } else
- YASM_WRITE_8(localbuf, RDFREC_IMPORT);
- YASM_WRITE_8(localbuf, 3+len+1); /* record length */
- YASM_WRITE_8(localbuf, flags); /* flags */
- YASM_WRITE_16_L(localbuf, scnum); /* segment allocated */
- }
- }
-
- /* Symbol name */
- memcpy(localbuf, name, len);
- localbuf += len;
- YASM_WRITE_8(localbuf, 0); /* 0-terminated name */
- yasm_xfree(name);
-
- fwrite(info->buf, (unsigned long)(localbuf-info->buf), 1, info->f);
-
- yasm_errwarn_propagate(info->errwarns, yasm_symrec_get_decl_line(sym));
- return 0;
-}
-
-static void
-rdf_objfmt_output(yasm_object *object, FILE *f, int all_syms,
- yasm_errwarns *errwarns)
-{
- yasm_objfmt_rdf *objfmt_rdf = (yasm_objfmt_rdf *)object->objfmt;
- rdf_objfmt_output_info info;
- unsigned char *localbuf;
- long headerlen, filelen;
- xdf_str *cur;
- size_t len;
-
- info.object = object;
- info.objfmt_rdf = objfmt_rdf;
- info.errwarns = errwarns;
- info.f = f;
- info.buf = yasm_xmalloc(REGULAR_OUTBUF_SIZE);
- info.bss_size = 0;
-
- /* Allocate space for file header by seeking forward */
- if (fseek(f, (long)strlen(RDF_MAGIC)+8, SEEK_SET) < 0) {
- yasm__fatal(N_("could not seek on output file"));
- /*@notreached@*/
- return;
- }
-
- /* Output custom header records (library and module, etc) */
- cur = STAILQ_FIRST(&objfmt_rdf->module_names);
- while (cur) {
- len = strlen(cur->str)+1;
- localbuf = info.buf;
- YASM_WRITE_8(localbuf, RDFREC_MODNAME); /* record type */
- YASM_WRITE_8(localbuf, len); /* record length */
- fwrite(info.buf, 2, 1, f);
- fwrite(cur->str, len, 1, f);
- cur = STAILQ_NEXT(cur, link);
- }
-
- cur = STAILQ_FIRST(&objfmt_rdf->library_names);
- while (cur) {
- len = strlen(cur->str)+1;
- localbuf = info.buf;
- YASM_WRITE_8(localbuf, RDFREC_DLL); /* record type */
- YASM_WRITE_8(localbuf, len); /* record length */
- fwrite(info.buf, 2, 1, f);
- fwrite(cur->str, len, 1, f);
- cur = STAILQ_NEXT(cur, link);
- }
-
- /* Output symbol table */
- info.indx = objfmt_rdf->parse_scnum;
- yasm_symtab_traverse(object->symtab, &info, rdf_objfmt_output_sym);
-
- /* UGH! Due to the fact the relocs go at the beginning of the file, and
- * we only know if we have relocs when we output the sections, we have
- * to output the section data before we have output the relocs. But
- * we also don't know how much space to preallocate for relocs, so....
- * we output into memory buffers first (thus the UGH).
- *
- * Stupid object format design, if you ask me (basically all other
- * object formats put the relocs *after* the section data to avoid this
- * exact problem).
- *
- * We also calculate the total size of all BSS sections here.
- */
- if (yasm_object_sections_traverse(object, &info,
- rdf_objfmt_output_section_mem))
- return;
-
- /* Output all relocs */
- if (yasm_object_sections_traverse(object, &info,
- rdf_objfmt_output_section_reloc))
- return;
-
- /* Output BSS record */
- if (info.bss_size > 0) {
- localbuf = info.buf;
- YASM_WRITE_8(localbuf, RDFREC_BSS); /* record type */
- YASM_WRITE_8(localbuf, 4); /* record length */
- YASM_WRITE_32_L(localbuf, info.bss_size); /* total BSS size */
- fwrite(info.buf, 6, 1, f);
- }
-
- /* Determine header length */
- headerlen = ftell(f);
- if (headerlen == -1) {
- yasm__fatal(N_("could not get file position on output file"));
- /*@notreached@*/
- return;
- }
-
- /* Section data (to file) */
- if (yasm_object_sections_traverse(object, &info,
- rdf_objfmt_output_section_file))
- return;
-
- /* NULL section to end file */
- memset(info.buf, 0, 10);
- fwrite(info.buf, 10, 1, f);
-
- /* Determine object length */
- filelen = ftell(f);
- if (filelen == -1) {
- yasm__fatal(N_("could not get file position on output file"));
- /*@notreached@*/
- return;
- }
-
- /* Write file header */
- if (fseek(f, 0, SEEK_SET) < 0) {
- yasm__fatal(N_("could not seek on output file"));
- /*@notreached@*/
- return;
- }
-
- fwrite(RDF_MAGIC, strlen(RDF_MAGIC), 1, f);
- localbuf = info.buf;
- YASM_WRITE_32_L(localbuf, filelen-10); /* object size */
- YASM_WRITE_32_L(localbuf, headerlen-14); /* header size */
- fwrite(info.buf, 8, 1, f);
-
- yasm_xfree(info.buf);
-}
-
-static void
-rdf_objfmt_destroy(yasm_objfmt *objfmt)
-{
- yasm_objfmt_rdf *objfmt_rdf = (yasm_objfmt_rdf *)objfmt;
- xdf_str *cur, *next;
-
- cur = STAILQ_FIRST(&objfmt_rdf->module_names);
- while (cur) {
- next = STAILQ_NEXT(cur, link);
- yasm_xfree(cur->str);
- yasm_xfree(cur);
- cur = next;
- }
-
- cur = STAILQ_FIRST(&objfmt_rdf->library_names);
- while (cur) {
- next = STAILQ_NEXT(cur, link);
- yasm_xfree(cur->str);
- yasm_xfree(cur);
- cur = next;
- }
-
- yasm_xfree(objfmt);
-}
-
-static void
-rdf_objfmt_init_new_section(yasm_section *sect, unsigned long line)
-{
- yasm_object *object = yasm_section_get_object(sect);
- const char *sectname = yasm_section_get_name(sect);
- yasm_objfmt_rdf *objfmt_rdf = (yasm_objfmt_rdf *)object->objfmt;
- rdf_section_data *data;
- yasm_symrec *sym;
-
- data = yasm_xmalloc(sizeof(rdf_section_data));
- data->scnum = objfmt_rdf->parse_scnum++;
- data->type = 0;
- data->reserved = 0;
- data->size = 0;
- data->raw_data = NULL;
- yasm_section_add_data(sect, &rdf_section_data_cb, data);
-
- sym = yasm_symtab_define_label(object->symtab, sectname,
- yasm_section_bcs_first(sect), 1, line);
- data->sym = sym;
-}
-
-static yasm_section *
-rdf_objfmt_add_default_section(yasm_object *object)
-{
- yasm_section *retval;
- rdf_section_data *rsd;
- int isnew;
-
- retval = yasm_object_get_general(object, ".text", 0, 1, 0, &isnew, 0);
- if (isnew) {
- rsd = yasm_section_get_data(retval, &rdf_section_data_cb);
- rsd->type = RDF_SECT_CODE;
- rsd->reserved = 0;
- yasm_section_set_default(retval, 1);
- }
- return retval;
-}
-
-static int
-rdf_helper_set_type(void *obj, yasm_valparam *vp, unsigned long line,
- void *d, uintptr_t newtype)
-{
- unsigned int *type = (unsigned int *)d;
- *type = newtype;
- return 0;
-}
-
-struct rdf_section_switch_data {
- /*@only@*/ /*@null@*/ yasm_intnum *reserved_intn;
- unsigned int type;
-};
-
-static int
-rdf_helper_set_reserved(void *obj, yasm_valparam *vp, unsigned long line,
- void *d)
-{
- struct rdf_section_switch_data *data = (struct rdf_section_switch_data *)d;
-
- if (!vp->val && vp->type == YASM_PARAM_EXPR)
- return yasm_dir_helper_intn(obj, vp, line, &data->reserved_intn, 0);
- else
- return yasm_dir_helper_valparam_warn(obj, vp, line, d);
-}
-
-static /*@observer@*/ /*@null@*/ yasm_section *
-rdf_objfmt_section_switch(yasm_object *object, yasm_valparamhead *valparams,
- /*@unused@*/ /*@null@*/
- yasm_valparamhead *objext_valparams,
- unsigned long line)
-{
- yasm_valparam *vp = yasm_vps_first(valparams);
- yasm_section *retval;
- int isnew;
- unsigned int reserved = 0;
- int flags_override = 0;
- const char *sectname;
- rdf_section_data *rsd;
-
- struct rdf_section_switch_data data;
-
- static const yasm_dir_help help[] = {
- { "bss", 0, rdf_helper_set_type,
- offsetof(struct rdf_section_switch_data, type), RDF_SECT_BSS },
- { "code", 0, rdf_helper_set_type,
- offsetof(struct rdf_section_switch_data, type), RDF_SECT_CODE },
- { "text", 0, rdf_helper_set_type,
- offsetof(struct rdf_section_switch_data, type), RDF_SECT_CODE },
- { "data", 0, rdf_helper_set_type,
- offsetof(struct rdf_section_switch_data, type), RDF_SECT_DATA },
- { "comment", 0, rdf_helper_set_type,
- offsetof(struct rdf_section_switch_data, type), RDF_SECT_COMMENT },
- { "lcomment", 0, rdf_helper_set_type,
- offsetof(struct rdf_section_switch_data, type), RDF_SECT_LCOMMENT },
- { "pcomment", 0, rdf_helper_set_type,
- offsetof(struct rdf_section_switch_data, type), RDF_SECT_PCOMMENT },
- { "symdebug", 0, rdf_helper_set_type,
- offsetof(struct rdf_section_switch_data, type), RDF_SECT_SYMDEBUG },
- { "linedebug", 0, rdf_helper_set_type,
- offsetof(struct rdf_section_switch_data, type), RDF_SECT_LINEDEBUG },
- { "reserved", 1, yasm_dir_helper_intn,
- offsetof(struct rdf_section_switch_data, reserved_intn), 0 }
- };
-
- data.reserved_intn = NULL;
- data.type = 0xffff;
-
- vp = yasm_vps_first(valparams);
- sectname = yasm_vp_string(vp);
- if (!sectname)
- return NULL;
- vp = yasm_vps_next(vp);
-
- if (strcmp(sectname, ".text") == 0)
- data.type = RDF_SECT_CODE;
- else if (strcmp(sectname, ".data") == 0)
- data.type = RDF_SECT_DATA;
- else if (strcmp(sectname, ".bss") == 0)
- data.type = RDF_SECT_BSS;
-
- flags_override = yasm_dir_helper(object, vp, line, help, NELEMS(help),
- &data, rdf_helper_set_reserved);
- if (flags_override < 0)
- return NULL; /* error occurred */
-
- if (data.type == 0xffff) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("new segment declared without type code"));
- data.type = RDF_SECT_DATA;
- }
-
- if (data.reserved_intn) {
- reserved = yasm_intnum_get_uint(data.reserved_intn);
- yasm_intnum_destroy(data.reserved_intn);
- }
-
- retval = yasm_object_get_general(object, sectname, 0, 1,
- data.type == RDF_SECT_BSS, &isnew, line);
-
- rsd = yasm_section_get_data(retval, &rdf_section_data_cb);
-
- if (isnew || yasm_section_is_default(retval)) {
- yasm_section_set_default(retval, 0);
- rsd->type = data.type;
- rsd->reserved = reserved;
- } else if (flags_override)
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("section flags ignored on section redeclaration"));
- return retval;
-}
-
-static /*@observer@*/ /*@null@*/ yasm_symrec *
-rdf_objfmt_get_special_sym(yasm_object *object, const char *name,
- const char *parser)
-{
- return NULL;
-}
-
-static void
-rdf_section_data_destroy(void *data)
-{
- rdf_section_data *rsd = (rdf_section_data *)data;
- if (rsd->raw_data)
- yasm_xfree(rsd->raw_data);
- yasm_xfree(data);
-}
-
-static void
-rdf_section_data_print(void *data, FILE *f, int indent_level)
-{
- rdf_section_data *rsd = (rdf_section_data *)data;
-
- fprintf(f, "%*ssym=\n", indent_level, "");
- yasm_symrec_print(rsd->sym, f, indent_level+1);
- fprintf(f, "%*sscnum=%ld\n", indent_level, "", rsd->scnum);
- fprintf(f, "%*stype=0x%x\n", indent_level, "", rsd->type);
- fprintf(f, "%*sreserved=0x%x\n", indent_level, "", rsd->reserved);
- fprintf(f, "%*ssize=%ld\n", indent_level, "", rsd->size);
-}
-
-static void
-rdf_symrec_data_destroy(void *data)
-{
- yasm_xfree(data);
-}
-
-static void
-rdf_symrec_data_print(void *data, FILE *f, int indent_level)
-{
- rdf_symrec_data *rsymd = (rdf_symrec_data *)data;
-
- fprintf(f, "%*ssymtab segment=%u\n", indent_level, "", rsymd->segment);
-}
-
-static void
-rdf_objfmt_add_libmodule(yasm_object *object, char *name, int lib)
-{
- yasm_objfmt_rdf *objfmt_rdf = (yasm_objfmt_rdf *)object->objfmt;
- xdf_str *str;
-
- /* Add to list */
- str = yasm_xmalloc(sizeof(xdf_str));
- str->str = name;
- if (lib)
- STAILQ_INSERT_TAIL(&objfmt_rdf->library_names, str, link);
- else
- STAILQ_INSERT_TAIL(&objfmt_rdf->module_names, str, link);
-
- if (strlen(str->str) > MODLIB_NAME_MAX-1) {
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("name too long, truncating to %d bytes"),
- MODLIB_NAME_MAX);
- str->str[MODLIB_NAME_MAX-1] = '\0';
- }
-}
-
-static void
-dir_library(yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_valparam *vp = yasm_vps_first(valparams);
- rdf_objfmt_add_libmodule(object, yasm__xstrdup(yasm_vp_string(vp)), 1);
-}
-
-static void
-dir_module(yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_valparam *vp = yasm_vps_first(valparams);
- rdf_objfmt_add_libmodule(object, yasm__xstrdup(yasm_vp_string(vp)), 0);
-}
-
-/* Define valid debug formats to use with this object format */
-static const char *rdf_objfmt_dbgfmt_keywords[] = {
- "null",
- NULL
-};
-
-static const yasm_directive rdf_objfmt_directives[] = {
- { "library", "nasm", dir_library, YASM_DIR_ARG_REQUIRED },
- { "module", "nasm", dir_module, YASM_DIR_ARG_REQUIRED },
- { NULL, NULL, NULL, 0 }
-};
-
-static const char *rdf_nasm_stdmac[] = {
- "%imacro library 1+.nolist",
- "[library %1]",
- "%endmacro",
- "%imacro module 1+.nolist",
- "[module %1]",
- "%endmacro",
- NULL
-};
-
-static const yasm_stdmac rdf_objfmt_stdmacs[] = {
- { "nasm", "nasm", rdf_nasm_stdmac },
- { NULL, NULL, NULL }
-};
-
-/* Define objfmt structure -- see objfmt.h for details */
-yasm_objfmt_module yasm_rdf_LTX_objfmt = {
- "Relocatable Dynamic Object File Format (RDOFF) v2.0",
- "rdf",
- "rdf",
- 32,
- 0,
- rdf_objfmt_dbgfmt_keywords,
- "null",
- rdf_objfmt_directives,
- rdf_objfmt_stdmacs,
- rdf_objfmt_create,
- rdf_objfmt_output,
- rdf_objfmt_destroy,
- rdf_objfmt_add_default_section,
- rdf_objfmt_init_new_section,
- rdf_objfmt_section_switch,
- rdf_objfmt_get_special_sym
-};
+/*
+ * Relocatable Dynamic Object File Format (RDOFF) version 2 format
+ *
+ * Copyright (C) 2006-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <libyasm.h>
+
+
+#define REGULAR_OUTBUF_SIZE 1024
+
+#define RDF_MAGIC "RDOFF2"
+
+/* Maximum size of an import/export label (including trailing zero) */
+#define EXIM_LABEL_MAX 64
+
+/* Maximum size of library or module name (including trailing zero) */
+#define MODLIB_NAME_MAX 128
+
+/* Maximum number of segments that we can handle in one file */
+#define RDF_MAXSEGS 64
+
+/* Record types that may present the RDOFF header */
+#define RDFREC_GENERIC 0
+#define RDFREC_RELOC 1
+#define RDFREC_IMPORT 2
+#define RDFREC_GLOBAL 3
+#define RDFREC_DLL 4
+#define RDFREC_BSS 5
+#define RDFREC_SEGRELOC 6
+#define RDFREC_FARIMPORT 7
+#define RDFREC_MODNAME 8
+#define RDFREC_COMMON 10
+
+/* Flags for ExportRec/ImportRec */
+#define SYM_DATA 1
+#define SYM_FUNCTION 2
+
+/* Flags for ExportRec */
+#define SYM_GLOBAL 4
+
+/* Flags for ImportRec */
+#define SYM_IMPORT 8
+#define SYM_FAR 16
+
+typedef struct rdf_reloc {
+ yasm_reloc reloc;
+ enum {
+ RDF_RELOC_NORM, /* normal */
+ RDF_RELOC_REL, /* relative to current position */
+ RDF_RELOC_SEG /* segment containing symbol */
+ } type; /* type of relocation */
+ unsigned int size;
+ unsigned int refseg;
+} rdf_reloc;
+
+typedef struct rdf_section_data {
+ /*@dependent@*/ yasm_symrec *sym; /* symbol created for this section */
+ long scnum; /* section number (0=first section) */
+ enum {
+ RDF_SECT_BSS = 0,
+ RDF_SECT_CODE = 1,
+ RDF_SECT_DATA = 2,
+ RDF_SECT_COMMENT = 3,
+ RDF_SECT_LCOMMENT = 4,
+ RDF_SECT_PCOMMENT = 5,
+ RDF_SECT_SYMDEBUG = 6,
+ RDF_SECT_LINEDEBUG = 7
+ } type; /* section type */
+ unsigned int reserved; /* reserved data */
+ unsigned long size; /* size of raw data (section data) in bytes */
+
+ unsigned char *raw_data; /* raw section data, only used during output */
+} rdf_section_data;
+
+typedef struct rdf_symrec_data {
+ unsigned int segment; /* assigned RDF "segment" index */
+} rdf_symrec_data;
+
+typedef STAILQ_HEAD(xdf_str_head, xdf_str) xdf_str_head;
+typedef struct xdf_str {
+ STAILQ_ENTRY(xdf_str) link;
+ /*@owned@*/ char *str;
+} xdf_str;
+
+typedef struct yasm_objfmt_rdf {
+ yasm_objfmt_base objfmt; /* base structure */
+
+ long parse_scnum; /* sect numbering in parser */
+
+ /*@owned@*/ xdf_str_head module_names;
+ /*@owned@*/ xdf_str_head library_names;
+} yasm_objfmt_rdf;
+
+typedef struct rdf_objfmt_output_info {
+ yasm_object *object;
+ yasm_objfmt_rdf *objfmt_rdf;
+ yasm_errwarns *errwarns;
+ /*@dependent@*/ FILE *f;
+ /*@only@*/ unsigned char *buf;
+ yasm_section *sect;
+ /*@dependent@*/ rdf_section_data *rsd;
+
+ unsigned long indx; /* symbol "segment" (extern/common only) */
+
+ unsigned long bss_size; /* total BSS size */
+} rdf_objfmt_output_info;
+
+static void rdf_section_data_destroy(/*@only@*/ void *d);
+static void rdf_section_data_print(void *data, FILE *f, int indent_level);
+
+static const yasm_assoc_data_callback rdf_section_data_cb = {
+ rdf_section_data_destroy,
+ rdf_section_data_print
+};
+
+static void rdf_symrec_data_destroy(/*@only@*/ void *d);
+static void rdf_symrec_data_print(void *data, FILE *f, int indent_level);
+
+static const yasm_assoc_data_callback rdf_symrec_data_cb = {
+ rdf_symrec_data_destroy,
+ rdf_symrec_data_print
+};
+
+yasm_objfmt_module yasm_rdf_LTX_objfmt;
+
+
+static /*@dependent@*/ rdf_symrec_data *
+rdf_objfmt_sym_set_data(yasm_symrec *sym, unsigned int segment)
+{
+ rdf_symrec_data *rsymd = yasm_xmalloc(sizeof(rdf_symrec_data));
+
+ rsymd->segment = segment;
+
+ yasm_symrec_add_data(sym, &rdf_symrec_data_cb, rsymd);
+ return rsymd;
+}
+
+static yasm_objfmt *
+rdf_objfmt_create(yasm_object *object)
+{
+ yasm_objfmt_rdf *objfmt_rdf = yasm_xmalloc(sizeof(yasm_objfmt_rdf));
+
+ /* We theoretically support all arches, so don't check.
+ * Really we only support byte-addressable ones.
+ */
+
+ objfmt_rdf->parse_scnum = 0; /* section numbering starts at 0 */
+
+ STAILQ_INIT(&objfmt_rdf->module_names);
+ STAILQ_INIT(&objfmt_rdf->library_names);
+
+ objfmt_rdf->objfmt.module = &yasm_rdf_LTX_objfmt;
+
+ return (yasm_objfmt *)objfmt_rdf;
+}
+
+static int
+rdf_objfmt_output_value(yasm_value *value, unsigned char *buf,
+ unsigned int destsize, unsigned long offset,
+ yasm_bytecode *bc, int warn, /*@null@*/ void *d)
+{
+ /*@null@*/ rdf_objfmt_output_info *info = (rdf_objfmt_output_info *)d;
+ /*@dependent@*/ /*@null@*/ yasm_intnum *intn;
+ unsigned long intn_minus;
+ unsigned long intn_plus;
+ int retval;
+ unsigned int valsize = value->size;
+
+ assert(info != NULL);
+
+ if (value->abs)
+ value->abs = yasm_expr_simplify(value->abs, 1);
+
+ /* Try to output constant and PC-relative section-local first.
+ * Note this does NOT output any value with a SEG, WRT, external,
+ * cross-section, or non-PC-relative reference (those are handled below).
+ */
+ switch (yasm_value_output_basic(value, buf, destsize, bc, warn,
+ info->object->arch)) {
+ case -1:
+ return 1;
+ case 0:
+ break;
+ default:
+ return 0;
+ }
+
+ if (value->section_rel) {
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("rdf: relocation too complex"));
+ return 1;
+ }
+
+ if (value->rel && value->wrt) {
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("rdf: WRT not supported"));
+ return 1;
+ }
+
+ intn_minus = 0;
+ intn_plus = 0;
+ if (value->rel) {
+ rdf_reloc *reloc;
+ /*@null@*/ rdf_symrec_data *rsymd;
+ /*@dependent@*/ yasm_bytecode *precbc;
+
+ reloc = yasm_xmalloc(sizeof(rdf_reloc));
+ reloc->reloc.addr = yasm_intnum_create_uint(bc->offset + offset);
+ reloc->reloc.sym = value->rel;
+ reloc->size = valsize/8;
+
+ if (value->seg_of)
+ reloc->type = RDF_RELOC_SEG;
+ else if (value->curpos_rel) {
+ reloc->type = RDF_RELOC_REL;
+ /* Adjust to start of section, so subtract out the bytecode
+ * offset.
+ */
+ intn_minus = bc->offset;
+ } else
+ reloc->type = RDF_RELOC_NORM;
+
+ if (yasm_symrec_get_label(value->rel, &precbc)) {
+ /* local, set the value to be the offset, and the refseg to the
+ * segment number.
+ */
+ /*@dependent@*/ /*@null@*/ rdf_section_data *csectd;
+ /*@dependent@*/ yasm_section *sect;
+
+ sect = yasm_bc_get_section(precbc);
+ csectd = yasm_section_get_data(sect, &rdf_section_data_cb);
+ if (!csectd)
+ yasm_internal_error(N_("didn't understand section"));
+ reloc->refseg = csectd->scnum;
+ intn_plus = yasm_bc_next_offset(precbc);
+ } else {
+ /* must be common/external */
+ rsymd = yasm_symrec_get_data(reloc->reloc.sym,
+ &rdf_symrec_data_cb);
+ if (!rsymd)
+ yasm_internal_error(
+ N_("rdf: no symbol data for relocated symbol"));
+ reloc->refseg = rsymd->segment;
+ }
+
+ yasm_section_add_reloc(info->sect, (yasm_reloc *)reloc, yasm_xfree);
+ }
+
+ if (intn_minus > 0) {
+ intn = yasm_intnum_create_uint(intn_minus);
+ yasm_intnum_calc(intn, YASM_EXPR_NEG, NULL);
+ } else
+ intn = yasm_intnum_create_uint(intn_plus);
+
+ if (value->abs) {
+ yasm_intnum *intn2 = yasm_expr_get_intnum(&value->abs, 0);
+ if (!intn2) {
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("rdf: relocation too complex"));
+ yasm_intnum_destroy(intn);
+ return 1;
+ }
+ yasm_intnum_calc(intn, YASM_EXPR_ADD, intn2);
+ }
+
+ retval = yasm_arch_intnum_tobytes(info->object->arch, intn, buf, destsize,
+ valsize, 0, bc, warn);
+ yasm_intnum_destroy(intn);
+ return retval;
+}
+
+static int
+rdf_objfmt_output_bytecode(yasm_bytecode *bc, /*@null@*/ void *d)
+{
+ /*@null@*/ rdf_objfmt_output_info *info = (rdf_objfmt_output_info *)d;
+ /*@null@*/ /*@only@*/ unsigned char *bigbuf;
+ unsigned long size = REGULAR_OUTBUF_SIZE;
+ int gap;
+
+ assert(info != NULL);
+
+ bigbuf = yasm_bc_tobytes(bc, info->buf, &size, &gap, info,
+ rdf_objfmt_output_value, NULL);
+
+ /* Don't bother doing anything else if size ended up being 0. */
+ if (size == 0) {
+ if (bigbuf)
+ yasm_xfree(bigbuf);
+ return 0;
+ }
+
+ /* Warn that gaps are converted to 0 and write out the 0's. */
+ if (gap) {
+ yasm_warn_set(YASM_WARN_UNINIT_CONTENTS,
+ N_("uninitialized space: zeroing"));
+ /* Write out in chunks */
+ memset(&info->rsd->raw_data[info->rsd->size], 0, size);
+ } else {
+ /* Output buf (or bigbuf if non-NULL) to file */
+ memcpy(&info->rsd->raw_data[info->rsd->size],
+ bigbuf ? bigbuf : info->buf, (size_t)size);
+ }
+
+ info->rsd->size += size;
+
+ /* If bigbuf was allocated, free it */
+ if (bigbuf)
+ yasm_xfree(bigbuf);
+
+ return 0;
+}
+
+static int
+rdf_objfmt_output_section_mem(yasm_section *sect, /*@null@*/ void *d)
+{
+ /*@null@*/ rdf_objfmt_output_info *info = (rdf_objfmt_output_info *)d;
+ /*@dependent@*/ /*@null@*/ rdf_section_data *rsd;
+ unsigned long size;
+
+ assert(info != NULL);
+ rsd = yasm_section_get_data(sect, &rdf_section_data_cb);
+ assert(rsd != NULL);
+
+ size = yasm_bc_next_offset(yasm_section_bcs_last(sect));
+
+ if (rsd->type == RDF_SECT_BSS) {
+ /* Don't output BSS sections, but remember length
+ * TODO: Check for non-reserve bytecodes?
+ */
+ info->bss_size += size;
+ return 0;
+ }
+
+ /* Empty? Go on to next section */
+ if (size == 0)
+ return 0;
+
+ /* See UGH comment in output() for why we're doing this */
+ rsd->raw_data = yasm_xmalloc(size);
+ rsd->size = 0;
+
+ info->sect = sect;
+ info->rsd = rsd;
+ yasm_section_bcs_traverse(sect, info->errwarns, info,
+ rdf_objfmt_output_bytecode);
+
+ /* Sanity check final section size */
+ if (rsd->size != size)
+ yasm_internal_error(
+ N_("rdf: section computed size did not match actual size"));
+
+ return 0;
+}
+
+static int
+rdf_objfmt_output_section_reloc(yasm_section *sect, /*@null@*/ void *d)
+{
+ /*@null@*/ rdf_objfmt_output_info *info = (rdf_objfmt_output_info *)d;
+ /*@dependent@*/ /*@null@*/ rdf_section_data *rsd;
+ rdf_reloc *reloc;
+
+ assert(info != NULL);
+ rsd = yasm_section_get_data(sect, &rdf_section_data_cb);
+ assert(rsd != NULL);
+
+ if (rsd->type == RDF_SECT_BSS) {
+ /* Don't output BSS sections. */
+ return 0;
+ }
+
+ /* Empty? Go on to next section */
+ if (rsd->size == 0)
+ return 0;
+
+ reloc = (rdf_reloc *)yasm_section_relocs_first(sect);
+ while (reloc) {
+ unsigned char *localbuf = info->buf;
+
+ if (reloc->type == RDF_RELOC_SEG)
+ YASM_WRITE_8(localbuf, RDFREC_SEGRELOC);
+ else
+ YASM_WRITE_8(localbuf, RDFREC_RELOC);
+ YASM_WRITE_8(localbuf, 8); /* record length */
+ /* Section number, +0x40 if relative reloc */
+ YASM_WRITE_8(localbuf, rsd->scnum +
+ (reloc->type == RDF_RELOC_REL ? 0x40 : 0));
+ yasm_intnum_get_sized(reloc->reloc.addr, localbuf, 4, 32, 0, 0, 0);
+ localbuf += 4; /* offset of relocation */
+ YASM_WRITE_8(localbuf, reloc->size); /* size of relocation */
+ YASM_WRITE_16_L(localbuf, reloc->refseg); /* relocated symbol */
+ fwrite(info->buf, 10, 1, info->f);
+
+ reloc = (rdf_reloc *)yasm_section_reloc_next((yasm_reloc *)reloc);
+ }
+
+ return 0;
+}
+
+static int
+rdf_objfmt_output_section_file(yasm_section *sect, /*@null@*/ void *d)
+{
+ /*@null@*/ rdf_objfmt_output_info *info = (rdf_objfmt_output_info *)d;
+ /*@dependent@*/ /*@null@*/ rdf_section_data *rsd;
+ unsigned char *localbuf;
+
+ assert(info != NULL);
+ rsd = yasm_section_get_data(sect, &rdf_section_data_cb);
+ assert(rsd != NULL);
+
+ if (rsd->type == RDF_SECT_BSS) {
+ /* Don't output BSS sections. */
+ return 0;
+ }
+
+ /* Empty? Go on to next section */
+ if (rsd->size == 0)
+ return 0;
+
+ /* Section header */
+ localbuf = info->buf;
+ YASM_WRITE_16_L(localbuf, rsd->type); /* type */
+ YASM_WRITE_16_L(localbuf, rsd->scnum); /* number */
+ YASM_WRITE_16_L(localbuf, rsd->reserved); /* reserved */
+ YASM_WRITE_32_L(localbuf, rsd->size); /* length */
+ fwrite(info->buf, 10, 1, info->f);
+
+ /* Section data */
+ fwrite(rsd->raw_data, rsd->size, 1, info->f);
+
+ /* Free section data */
+ yasm_xfree(rsd->raw_data);
+ rsd->raw_data = NULL;
+
+ return 0;
+}
+
+#define FLAG_EXT 0x1000
+#define FLAG_GLOB 0x2000
+#define FLAG_SET 0x4000
+#define FLAG_CLR 0x8000
+#define FLAG_MASK 0x0fff
+
+static int
+rdf_helper_flag(void *obj, yasm_valparam *vp, unsigned long line, void *d,
+ uintptr_t flag)
+{
+ yasm_symrec *sym = (yasm_symrec *)obj;
+ yasm_sym_vis vis = yasm_symrec_get_visibility(sym);
+ unsigned int *flags = (unsigned int *)d;
+
+ if (((vis & YASM_SYM_GLOBAL) && (flag & FLAG_GLOB)) ||
+ ((vis & YASM_SYM_EXTERN) && (flag & FLAG_EXT))) {
+ if (flag & FLAG_SET)
+ *flags |= flag & FLAG_MASK;
+ else if (flag & FLAG_CLR)
+ *flags &= ~(flag & FLAG_MASK);
+ }
+ return 0;
+}
+
+static unsigned int
+rdf_parse_flags(yasm_symrec *sym)
+{
+ /*@dependent@*/ /*@null@*/ yasm_valparamhead *objext_valparams =
+ yasm_symrec_get_objext_valparams(sym);
+ unsigned int flags = 0;
+
+ static const yasm_dir_help help[] = {
+ { "data", 0, rdf_helper_flag, 0,
+ FLAG_EXT|FLAG_GLOB|FLAG_SET|SYM_DATA },
+ { "object", 0, rdf_helper_flag, 0,
+ FLAG_EXT|FLAG_GLOB|FLAG_SET|SYM_DATA },
+ { "proc", 0, rdf_helper_flag, 0,
+ FLAG_EXT|FLAG_GLOB|FLAG_SET|SYM_FUNCTION },
+ { "function", 0, rdf_helper_flag, 0,
+ FLAG_EXT|FLAG_GLOB|FLAG_SET|SYM_FUNCTION },
+ { "import", 0, rdf_helper_flag, 0, FLAG_EXT|FLAG_SET|SYM_IMPORT },
+ { "export", 0, rdf_helper_flag, 0, FLAG_GLOB|FLAG_SET|SYM_GLOBAL },
+ { "far", 0, rdf_helper_flag, 0, FLAG_EXT|FLAG_SET|SYM_FAR },
+ { "near", 0, rdf_helper_flag, 0, FLAG_EXT|FLAG_CLR|SYM_FAR }
+ };
+
+ if (!objext_valparams)
+ return 0;
+
+ yasm_dir_helper(sym, yasm_vps_first(objext_valparams), 0, help,
+ NELEMS(help), &flags, yasm_dir_helper_valparam_warn);
+
+ return flags;
+}
+
+static int
+rdf_objfmt_output_sym(yasm_symrec *sym, /*@null@*/ void *d)
+{
+ /*@null@*/ rdf_objfmt_output_info *info = (rdf_objfmt_output_info *)d;
+ yasm_sym_vis vis = yasm_symrec_get_visibility(sym);
+ /*@only@*/ char *name;
+ size_t len;
+ unsigned long value = 0;
+ unsigned int scnum = 0;
+ /*@dependent@*/ /*@null@*/ yasm_section *sect;
+ /*@dependent@*/ /*@null@*/ yasm_bytecode *precbc;
+ unsigned char *localbuf;
+
+ assert(info != NULL);
+
+ if (vis == YASM_SYM_LOCAL || vis == YASM_SYM_DLOCAL)
+ return 0; /* skip local syms */
+
+ /* Look at symrec for value/scnum/etc. */
+ if (yasm_symrec_get_label(sym, &precbc)) {
+ /*@dependent@*/ /*@null@*/ rdf_section_data *csectd;
+
+ if (precbc)
+ sect = yasm_bc_get_section(precbc);
+ else
+ sect = NULL;
+ if (!sect)
+ return 0;
+
+ /* it's a label: get value and offset. */
+ csectd = yasm_section_get_data(sect, &rdf_section_data_cb);
+ if (csectd)
+ scnum = csectd->scnum;
+ else
+ yasm_internal_error(N_("didn't understand section"));
+ value = yasm_bc_next_offset(precbc);
+ } else if (yasm_symrec_get_equ(sym)) {
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("rdf does not support exporting EQU/absolute values"));
+ yasm_errwarn_propagate(info->errwarns, yasm_symrec_get_decl_line(sym));
+ return 0;
+ }
+
+ name = yasm_symrec_get_global_name(sym, info->object);
+ len = strlen(name);
+
+ if (len > EXIM_LABEL_MAX-1) {
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("label name too long, truncating to %d bytes"),
+ EXIM_LABEL_MAX);
+ len = EXIM_LABEL_MAX-1;
+ }
+
+ localbuf = info->buf;
+ if (vis & YASM_SYM_GLOBAL) {
+ YASM_WRITE_8(localbuf, RDFREC_GLOBAL);
+ YASM_WRITE_8(localbuf, 6+len+1); /* record length */
+ YASM_WRITE_8(localbuf, rdf_parse_flags(sym)); /* flags */
+ YASM_WRITE_8(localbuf, scnum); /* segment referred to */
+ YASM_WRITE_32_L(localbuf, value); /* offset */
+ } else {
+ /* Save symbol segment in symrec data (for later reloc gen) */
+ scnum = info->indx++;
+ rdf_objfmt_sym_set_data(sym, scnum);
+
+ if (vis & YASM_SYM_COMMON) {
+ /*@dependent@*/ /*@null@*/ yasm_expr **csize_expr;
+ const yasm_intnum *intn;
+ /*@dependent@*/ /*@null@*/ yasm_valparamhead *objext_valparams =
+ yasm_symrec_get_objext_valparams(sym);
+ unsigned long addralign = 0;
+
+ YASM_WRITE_8(localbuf, RDFREC_COMMON);
+ YASM_WRITE_8(localbuf, 8+len+1); /* record length */
+ YASM_WRITE_16_L(localbuf, scnum); /* segment allocated */
+
+ /* size */
+ csize_expr = yasm_symrec_get_common_size(sym);
+ assert(csize_expr != NULL);
+ intn = yasm_expr_get_intnum(csize_expr, 1);
+ if (!intn) {
+ yasm_error_set(YASM_ERROR_NOT_CONSTANT,
+ N_("COMMON data size not an integer expression"));
+ } else
+ value = yasm_intnum_get_uint(intn);
+ YASM_WRITE_32_L(localbuf, value);
+
+ /* alignment */
+ if (objext_valparams) {
+ yasm_valparam *vp = yasm_vps_first(objext_valparams);
+ for (; vp; vp = yasm_vps_next(vp)) {
+ if (!vp->val) {
+ /*@only@*/ /*@null@*/ yasm_expr *align_expr;
+ /*@dependent@*/ /*@null@*/
+ const yasm_intnum *align_intn;
+
+ if (!(align_expr = yasm_vp_expr(vp,
+ info->object->symtab,
+ yasm_symrec_get_decl_line(sym))) ||
+ !(align_intn = yasm_expr_get_intnum(&align_expr,
+ 0))) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("argument to `%s' is not an integer"),
+ vp->val);
+ if (align_expr)
+ yasm_expr_destroy(align_expr);
+ continue;
+ }
+ addralign = yasm_intnum_get_uint(align_intn);
+ yasm_expr_destroy(align_expr);
+
+ /* Alignments must be a power of two. */
+ if (!is_exp2(addralign)) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("alignment constraint is not a power of two"));
+ continue;
+ }
+ } else
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("Unrecognized qualifier `%s'"), vp->val);
+ }
+ }
+ YASM_WRITE_16_L(localbuf, addralign);
+ } else if (vis & YASM_SYM_EXTERN) {
+ unsigned int flags = rdf_parse_flags(sym);
+ if (flags & SYM_FAR) {
+ YASM_WRITE_8(localbuf, RDFREC_FARIMPORT);
+ flags &= ~SYM_FAR;
+ } else
+ YASM_WRITE_8(localbuf, RDFREC_IMPORT);
+ YASM_WRITE_8(localbuf, 3+len+1); /* record length */
+ YASM_WRITE_8(localbuf, flags); /* flags */
+ YASM_WRITE_16_L(localbuf, scnum); /* segment allocated */
+ }
+ }
+
+ /* Symbol name */
+ memcpy(localbuf, name, len);
+ localbuf += len;
+ YASM_WRITE_8(localbuf, 0); /* 0-terminated name */
+ yasm_xfree(name);
+
+ fwrite(info->buf, (unsigned long)(localbuf-info->buf), 1, info->f);
+
+ yasm_errwarn_propagate(info->errwarns, yasm_symrec_get_decl_line(sym));
+ return 0;
+}
+
+static void
+rdf_objfmt_output(yasm_object *object, FILE *f, int all_syms,
+ yasm_errwarns *errwarns)
+{
+ yasm_objfmt_rdf *objfmt_rdf = (yasm_objfmt_rdf *)object->objfmt;
+ rdf_objfmt_output_info info;
+ unsigned char *localbuf;
+ long headerlen, filelen;
+ xdf_str *cur;
+ size_t len;
+
+ info.object = object;
+ info.objfmt_rdf = objfmt_rdf;
+ info.errwarns = errwarns;
+ info.f = f;
+ info.buf = yasm_xmalloc(REGULAR_OUTBUF_SIZE);
+ info.bss_size = 0;
+
+ /* Allocate space for file header by seeking forward */
+ if (fseek(f, (long)strlen(RDF_MAGIC)+8, SEEK_SET) < 0) {
+ yasm__fatal(N_("could not seek on output file"));
+ /*@notreached@*/
+ return;
+ }
+
+ /* Output custom header records (library and module, etc) */
+ cur = STAILQ_FIRST(&objfmt_rdf->module_names);
+ while (cur) {
+ len = strlen(cur->str)+1;
+ localbuf = info.buf;
+ YASM_WRITE_8(localbuf, RDFREC_MODNAME); /* record type */
+ YASM_WRITE_8(localbuf, len); /* record length */
+ fwrite(info.buf, 2, 1, f);
+ fwrite(cur->str, len, 1, f);
+ cur = STAILQ_NEXT(cur, link);
+ }
+
+ cur = STAILQ_FIRST(&objfmt_rdf->library_names);
+ while (cur) {
+ len = strlen(cur->str)+1;
+ localbuf = info.buf;
+ YASM_WRITE_8(localbuf, RDFREC_DLL); /* record type */
+ YASM_WRITE_8(localbuf, len); /* record length */
+ fwrite(info.buf, 2, 1, f);
+ fwrite(cur->str, len, 1, f);
+ cur = STAILQ_NEXT(cur, link);
+ }
+
+ /* Output symbol table */
+ info.indx = objfmt_rdf->parse_scnum;
+ yasm_symtab_traverse(object->symtab, &info, rdf_objfmt_output_sym);
+
+ /* UGH! Due to the fact the relocs go at the beginning of the file, and
+ * we only know if we have relocs when we output the sections, we have
+ * to output the section data before we have output the relocs. But
+ * we also don't know how much space to preallocate for relocs, so....
+ * we output into memory buffers first (thus the UGH).
+ *
+ * Stupid object format design, if you ask me (basically all other
+ * object formats put the relocs *after* the section data to avoid this
+ * exact problem).
+ *
+ * We also calculate the total size of all BSS sections here.
+ */
+ if (yasm_object_sections_traverse(object, &info,
+ rdf_objfmt_output_section_mem))
+ return;
+
+ /* Output all relocs */
+ if (yasm_object_sections_traverse(object, &info,
+ rdf_objfmt_output_section_reloc))
+ return;
+
+ /* Output BSS record */
+ if (info.bss_size > 0) {
+ localbuf = info.buf;
+ YASM_WRITE_8(localbuf, RDFREC_BSS); /* record type */
+ YASM_WRITE_8(localbuf, 4); /* record length */
+ YASM_WRITE_32_L(localbuf, info.bss_size); /* total BSS size */
+ fwrite(info.buf, 6, 1, f);
+ }
+
+ /* Determine header length */
+ headerlen = ftell(f);
+ if (headerlen == -1) {
+ yasm__fatal(N_("could not get file position on output file"));
+ /*@notreached@*/
+ return;
+ }
+
+ /* Section data (to file) */
+ if (yasm_object_sections_traverse(object, &info,
+ rdf_objfmt_output_section_file))
+ return;
+
+ /* NULL section to end file */
+ memset(info.buf, 0, 10);
+ fwrite(info.buf, 10, 1, f);
+
+ /* Determine object length */
+ filelen = ftell(f);
+ if (filelen == -1) {
+ yasm__fatal(N_("could not get file position on output file"));
+ /*@notreached@*/
+ return;
+ }
+
+ /* Write file header */
+ if (fseek(f, 0, SEEK_SET) < 0) {
+ yasm__fatal(N_("could not seek on output file"));
+ /*@notreached@*/
+ return;
+ }
+
+ fwrite(RDF_MAGIC, strlen(RDF_MAGIC), 1, f);
+ localbuf = info.buf;
+ YASM_WRITE_32_L(localbuf, filelen-10); /* object size */
+ YASM_WRITE_32_L(localbuf, headerlen-14); /* header size */
+ fwrite(info.buf, 8, 1, f);
+
+ yasm_xfree(info.buf);
+}
+
+static void
+rdf_objfmt_destroy(yasm_objfmt *objfmt)
+{
+ yasm_objfmt_rdf *objfmt_rdf = (yasm_objfmt_rdf *)objfmt;
+ xdf_str *cur, *next;
+
+ cur = STAILQ_FIRST(&objfmt_rdf->module_names);
+ while (cur) {
+ next = STAILQ_NEXT(cur, link);
+ yasm_xfree(cur->str);
+ yasm_xfree(cur);
+ cur = next;
+ }
+
+ cur = STAILQ_FIRST(&objfmt_rdf->library_names);
+ while (cur) {
+ next = STAILQ_NEXT(cur, link);
+ yasm_xfree(cur->str);
+ yasm_xfree(cur);
+ cur = next;
+ }
+
+ yasm_xfree(objfmt);
+}
+
+static void
+rdf_objfmt_init_new_section(yasm_section *sect, unsigned long line)
+{
+ yasm_object *object = yasm_section_get_object(sect);
+ const char *sectname = yasm_section_get_name(sect);
+ yasm_objfmt_rdf *objfmt_rdf = (yasm_objfmt_rdf *)object->objfmt;
+ rdf_section_data *data;
+ yasm_symrec *sym;
+
+ data = yasm_xmalloc(sizeof(rdf_section_data));
+ data->scnum = objfmt_rdf->parse_scnum++;
+ data->type = 0;
+ data->reserved = 0;
+ data->size = 0;
+ data->raw_data = NULL;
+ yasm_section_add_data(sect, &rdf_section_data_cb, data);
+
+ sym = yasm_symtab_define_label(object->symtab, sectname,
+ yasm_section_bcs_first(sect), 1, line);
+ data->sym = sym;
+}
+
+static yasm_section *
+rdf_objfmt_add_default_section(yasm_object *object)
+{
+ yasm_section *retval;
+ rdf_section_data *rsd;
+ int isnew;
+
+ retval = yasm_object_get_general(object, ".text", 0, 1, 0, &isnew, 0);
+ if (isnew) {
+ rsd = yasm_section_get_data(retval, &rdf_section_data_cb);
+ rsd->type = RDF_SECT_CODE;
+ rsd->reserved = 0;
+ yasm_section_set_default(retval, 1);
+ }
+ return retval;
+}
+
+static int
+rdf_helper_set_type(void *obj, yasm_valparam *vp, unsigned long line,
+ void *d, uintptr_t newtype)
+{
+ unsigned int *type = (unsigned int *)d;
+ *type = newtype;
+ return 0;
+}
+
+struct rdf_section_switch_data {
+ /*@only@*/ /*@null@*/ yasm_intnum *reserved_intn;
+ unsigned int type;
+};
+
+static int
+rdf_helper_set_reserved(void *obj, yasm_valparam *vp, unsigned long line,
+ void *d)
+{
+ struct rdf_section_switch_data *data = (struct rdf_section_switch_data *)d;
+
+ if (!vp->val && vp->type == YASM_PARAM_EXPR)
+ return yasm_dir_helper_intn(obj, vp, line, &data->reserved_intn, 0);
+ else
+ return yasm_dir_helper_valparam_warn(obj, vp, line, d);
+}
+
+static /*@observer@*/ /*@null@*/ yasm_section *
+rdf_objfmt_section_switch(yasm_object *object, yasm_valparamhead *valparams,
+ /*@unused@*/ /*@null@*/
+ yasm_valparamhead *objext_valparams,
+ unsigned long line)
+{
+ yasm_valparam *vp = yasm_vps_first(valparams);
+ yasm_section *retval;
+ int isnew;
+ unsigned int reserved = 0;
+ int flags_override = 0;
+ const char *sectname;
+ rdf_section_data *rsd;
+
+ struct rdf_section_switch_data data;
+
+ static const yasm_dir_help help[] = {
+ { "bss", 0, rdf_helper_set_type,
+ offsetof(struct rdf_section_switch_data, type), RDF_SECT_BSS },
+ { "code", 0, rdf_helper_set_type,
+ offsetof(struct rdf_section_switch_data, type), RDF_SECT_CODE },
+ { "text", 0, rdf_helper_set_type,
+ offsetof(struct rdf_section_switch_data, type), RDF_SECT_CODE },
+ { "data", 0, rdf_helper_set_type,
+ offsetof(struct rdf_section_switch_data, type), RDF_SECT_DATA },
+ { "comment", 0, rdf_helper_set_type,
+ offsetof(struct rdf_section_switch_data, type), RDF_SECT_COMMENT },
+ { "lcomment", 0, rdf_helper_set_type,
+ offsetof(struct rdf_section_switch_data, type), RDF_SECT_LCOMMENT },
+ { "pcomment", 0, rdf_helper_set_type,
+ offsetof(struct rdf_section_switch_data, type), RDF_SECT_PCOMMENT },
+ { "symdebug", 0, rdf_helper_set_type,
+ offsetof(struct rdf_section_switch_data, type), RDF_SECT_SYMDEBUG },
+ { "linedebug", 0, rdf_helper_set_type,
+ offsetof(struct rdf_section_switch_data, type), RDF_SECT_LINEDEBUG },
+ { "reserved", 1, yasm_dir_helper_intn,
+ offsetof(struct rdf_section_switch_data, reserved_intn), 0 }
+ };
+
+ data.reserved_intn = NULL;
+ data.type = 0xffff;
+
+ vp = yasm_vps_first(valparams);
+ sectname = yasm_vp_string(vp);
+ if (!sectname)
+ return NULL;
+ vp = yasm_vps_next(vp);
+
+ if (strcmp(sectname, ".text") == 0)
+ data.type = RDF_SECT_CODE;
+ else if (strcmp(sectname, ".data") == 0)
+ data.type = RDF_SECT_DATA;
+ else if (strcmp(sectname, ".bss") == 0)
+ data.type = RDF_SECT_BSS;
+
+ flags_override = yasm_dir_helper(object, vp, line, help, NELEMS(help),
+ &data, rdf_helper_set_reserved);
+ if (flags_override < 0)
+ return NULL; /* error occurred */
+
+ if (data.type == 0xffff) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("new segment declared without type code"));
+ data.type = RDF_SECT_DATA;
+ }
+
+ if (data.reserved_intn) {
+ reserved = yasm_intnum_get_uint(data.reserved_intn);
+ yasm_intnum_destroy(data.reserved_intn);
+ }
+
+ retval = yasm_object_get_general(object, sectname, 0, 1,
+ data.type == RDF_SECT_BSS, &isnew, line);
+
+ rsd = yasm_section_get_data(retval, &rdf_section_data_cb);
+
+ if (isnew || yasm_section_is_default(retval)) {
+ yasm_section_set_default(retval, 0);
+ rsd->type = data.type;
+ rsd->reserved = reserved;
+ } else if (flags_override)
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("section flags ignored on section redeclaration"));
+ return retval;
+}
+
+static /*@observer@*/ /*@null@*/ yasm_symrec *
+rdf_objfmt_get_special_sym(yasm_object *object, const char *name,
+ const char *parser)
+{
+ return NULL;
+}
+
+static void
+rdf_section_data_destroy(void *data)
+{
+ rdf_section_data *rsd = (rdf_section_data *)data;
+ if (rsd->raw_data)
+ yasm_xfree(rsd->raw_data);
+ yasm_xfree(data);
+}
+
+static void
+rdf_section_data_print(void *data, FILE *f, int indent_level)
+{
+ rdf_section_data *rsd = (rdf_section_data *)data;
+
+ fprintf(f, "%*ssym=\n", indent_level, "");
+ yasm_symrec_print(rsd->sym, f, indent_level+1);
+ fprintf(f, "%*sscnum=%ld\n", indent_level, "", rsd->scnum);
+ fprintf(f, "%*stype=0x%x\n", indent_level, "", rsd->type);
+ fprintf(f, "%*sreserved=0x%x\n", indent_level, "", rsd->reserved);
+ fprintf(f, "%*ssize=%ld\n", indent_level, "", rsd->size);
+}
+
+static void
+rdf_symrec_data_destroy(void *data)
+{
+ yasm_xfree(data);
+}
+
+static void
+rdf_symrec_data_print(void *data, FILE *f, int indent_level)
+{
+ rdf_symrec_data *rsymd = (rdf_symrec_data *)data;
+
+ fprintf(f, "%*ssymtab segment=%u\n", indent_level, "", rsymd->segment);
+}
+
+static void
+rdf_objfmt_add_libmodule(yasm_object *object, char *name, int lib)
+{
+ yasm_objfmt_rdf *objfmt_rdf = (yasm_objfmt_rdf *)object->objfmt;
+ xdf_str *str;
+
+ /* Add to list */
+ str = yasm_xmalloc(sizeof(xdf_str));
+ str->str = name;
+ if (lib)
+ STAILQ_INSERT_TAIL(&objfmt_rdf->library_names, str, link);
+ else
+ STAILQ_INSERT_TAIL(&objfmt_rdf->module_names, str, link);
+
+ if (strlen(str->str) > MODLIB_NAME_MAX-1) {
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("name too long, truncating to %d bytes"),
+ MODLIB_NAME_MAX);
+ str->str[MODLIB_NAME_MAX-1] = '\0';
+ }
+}
+
+static void
+dir_library(yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_valparam *vp = yasm_vps_first(valparams);
+ rdf_objfmt_add_libmodule(object, yasm__xstrdup(yasm_vp_string(vp)), 1);
+}
+
+static void
+dir_module(yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_valparam *vp = yasm_vps_first(valparams);
+ rdf_objfmt_add_libmodule(object, yasm__xstrdup(yasm_vp_string(vp)), 0);
+}
+
+/* Define valid debug formats to use with this object format */
+static const char *rdf_objfmt_dbgfmt_keywords[] = {
+ "null",
+ NULL
+};
+
+static const yasm_directive rdf_objfmt_directives[] = {
+ { "library", "nasm", dir_library, YASM_DIR_ARG_REQUIRED },
+ { "module", "nasm", dir_module, YASM_DIR_ARG_REQUIRED },
+ { NULL, NULL, NULL, 0 }
+};
+
+static const char *rdf_nasm_stdmac[] = {
+ "%imacro library 1+.nolist",
+ "[library %1]",
+ "%endmacro",
+ "%imacro module 1+.nolist",
+ "[module %1]",
+ "%endmacro",
+ NULL
+};
+
+static const yasm_stdmac rdf_objfmt_stdmacs[] = {
+ { "nasm", "nasm", rdf_nasm_stdmac },
+ { NULL, NULL, NULL }
+};
+
+/* Define objfmt structure -- see objfmt.h for details */
+yasm_objfmt_module yasm_rdf_LTX_objfmt = {
+ "Relocatable Dynamic Object File Format (RDOFF) v2.0",
+ "rdf",
+ "rdf",
+ 32,
+ 0,
+ rdf_objfmt_dbgfmt_keywords,
+ "null",
+ rdf_objfmt_directives,
+ rdf_objfmt_stdmacs,
+ rdf_objfmt_create,
+ rdf_objfmt_output,
+ rdf_objfmt_destroy,
+ rdf_objfmt_add_default_section,
+ rdf_objfmt_init_new_section,
+ rdf_objfmt_section_switch,
+ rdf_objfmt_get_special_sym
+};
diff --git a/contrib/tools/yasm/modules/objfmts/xdf/xdf-objfmt.c b/contrib/tools/yasm/modules/objfmts/xdf/xdf-objfmt.c
index b2ac442511..9ad0e60afa 100644
--- a/contrib/tools/yasm/modules/objfmts/xdf/xdf-objfmt.c
+++ b/contrib/tools/yasm/modules/objfmts/xdf/xdf-objfmt.c
@@ -1,842 +1,842 @@
-/*
- * Extended Dynamic Object format
- *
- * Copyright (C) 2004-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <libyasm.h>
-
-
-#define REGULAR_OUTBUF_SIZE 1024
-
-#define XDF_MAGIC 0x87654322
-
-#define XDF_SYM_EXTERN 1
-#define XDF_SYM_GLOBAL 2
-#define XDF_SYM_EQU 4
-
-typedef struct xdf_reloc {
- yasm_reloc reloc;
- /*@null@*/ yasm_symrec *base; /* base symbol (for WRT) */
- enum {
- XDF_RELOC_REL = 1, /* relative to segment */
- XDF_RELOC_WRT = 2, /* relative to symbol */
- XDF_RELOC_RIP = 4, /* RIP-relative */
- XDF_RELOC_SEG = 8 /* segment containing symbol */
- } type; /* type of relocation */
- enum {
- XDF_RELOC_8 = 1,
- XDF_RELOC_16 = 2,
- XDF_RELOC_32 = 4,
- XDF_RELOC_64 = 8
- } size; /* size of relocation */
- unsigned int shift; /* relocation shift (0,4,8,16,24,32) */
-} xdf_reloc;
-
-typedef struct xdf_section_data {
- /*@dependent@*/ yasm_symrec *sym; /* symbol created for this section */
- yasm_intnum *addr; /* starting memory address */
- yasm_intnum *vaddr; /* starting virtual address */
- long scnum; /* section number (0=first section) */
- enum {
- XDF_SECT_ABSOLUTE = 0x01,
- XDF_SECT_FLAT = 0x02,
- XDF_SECT_BSS = 0x04,
- XDF_SECT_EQU = 0x08,
- XDF_SECT_USE_16 = 0x10,
- XDF_SECT_USE_32 = 0x20,
- XDF_SECT_USE_64 = 0x40
- } flags; /* section flags */
- unsigned long scnptr; /* file ptr to raw data */
- unsigned long size; /* size of raw data (section data) in bytes */
- unsigned long relptr; /* file ptr to relocation */
- unsigned long nreloc; /* number of relocation entries >64k -> error */
-} xdf_section_data;
-
-typedef struct xdf_symrec_data {
- unsigned long index; /* assigned XDF symbol table index */
-} xdf_symrec_data;
-
-typedef struct yasm_objfmt_xdf {
- yasm_objfmt_base objfmt; /* base structure */
-
- long parse_scnum; /* sect numbering in parser */
-} yasm_objfmt_xdf;
-
-typedef struct xdf_objfmt_output_info {
- yasm_object *object;
- yasm_objfmt_xdf *objfmt_xdf;
- yasm_errwarns *errwarns;
- /*@dependent@*/ FILE *f;
- /*@only@*/ unsigned char *buf;
- yasm_section *sect;
- /*@dependent@*/ xdf_section_data *xsd;
-
- unsigned long indx; /* current symbol index */
- int all_syms; /* outputting all symbols? */
- unsigned long strtab_offset; /* current string table offset */
-} xdf_objfmt_output_info;
-
-static void xdf_section_data_destroy(/*@only@*/ void *d);
-static void xdf_section_data_print(void *data, FILE *f, int indent_level);
-
-static const yasm_assoc_data_callback xdf_section_data_cb = {
- xdf_section_data_destroy,
- xdf_section_data_print
-};
-
-static void xdf_symrec_data_destroy(/*@only@*/ void *d);
-static void xdf_symrec_data_print(void *data, FILE *f, int indent_level);
-
-static const yasm_assoc_data_callback xdf_symrec_data_cb = {
- xdf_symrec_data_destroy,
- xdf_symrec_data_print
-};
-
-yasm_objfmt_module yasm_xdf_LTX_objfmt;
-
-
-static yasm_objfmt *
-xdf_objfmt_create(yasm_object *object)
-{
- yasm_objfmt_xdf *objfmt_xdf = yasm_xmalloc(sizeof(yasm_objfmt_xdf));
-
- /* Only support x86 arch */
- if (yasm__strcasecmp(yasm_arch_keyword(object->arch), "x86") != 0) {
- yasm_xfree(objfmt_xdf);
- return NULL;
- }
-
- /* Support x86 and amd64 machines of x86 arch */
- if (yasm__strcasecmp(yasm_arch_get_machine(object->arch), "x86") &&
- yasm__strcasecmp(yasm_arch_get_machine(object->arch), "amd64")) {
- yasm_xfree(objfmt_xdf);
- return NULL;
- }
-
- objfmt_xdf->parse_scnum = 0; /* section numbering starts at 0 */
-
- objfmt_xdf->objfmt.module = &yasm_xdf_LTX_objfmt;
-
- return (yasm_objfmt *)objfmt_xdf;
-}
-
-static int
-xdf_objfmt_output_value(yasm_value *value, unsigned char *buf,
- unsigned int destsize, unsigned long offset,
- yasm_bytecode *bc, int warn, /*@null@*/ void *d)
-{
- /*@null@*/ xdf_objfmt_output_info *info = (xdf_objfmt_output_info *)d;
- /*@dependent@*/ /*@null@*/ yasm_intnum *intn;
- unsigned long intn_minus;
- int retval;
- unsigned int valsize = value->size;
-
- assert(info != NULL);
-
- if (value->abs)
- value->abs = yasm_expr_simplify(value->abs, 1);
-
- /* Try to output constant and PC-relative section-local first.
- * Note this does NOT output any value with a SEG, WRT, external,
- * cross-section, or non-PC-relative reference (those are handled below).
- */
- switch (yasm_value_output_basic(value, buf, destsize, bc, warn,
- info->object->arch)) {
- case -1:
- return 1;
- case 0:
- break;
- default:
- return 0;
- }
-
- if (value->section_rel) {
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("xdf: relocation too complex"));
- return 1;
- }
-
- intn_minus = 0;
- if (value->rel) {
- xdf_reloc *reloc;
-
- reloc = yasm_xmalloc(sizeof(xdf_reloc));
- reloc->reloc.addr = yasm_intnum_create_uint(bc->offset + offset);
- reloc->reloc.sym = value->rel;
- reloc->base = NULL;
- reloc->size = valsize/8;
- reloc->shift = value->rshift;
-
- if (value->seg_of)
- reloc->type = XDF_RELOC_SEG;
- else if (value->wrt) {
- reloc->base = value->wrt;
- reloc->type = XDF_RELOC_WRT;
- } else if (value->curpos_rel) {
- reloc->type = XDF_RELOC_RIP;
- /* Adjust to start of section, so subtract out the bytecode
- * offset.
- */
- intn_minus = bc->offset;
- } else
- reloc->type = XDF_RELOC_REL;
- info->xsd->nreloc++;
- yasm_section_add_reloc(info->sect, (yasm_reloc *)reloc, yasm_xfree);
- }
-
- if (intn_minus > 0) {
- intn = yasm_intnum_create_uint(intn_minus);
- yasm_intnum_calc(intn, YASM_EXPR_NEG, NULL);
- } else
- intn = yasm_intnum_create_uint(0);
-
- if (value->abs) {
- yasm_intnum *intn2 = yasm_expr_get_intnum(&value->abs, 0);
- if (!intn2) {
- yasm_error_set(YASM_ERROR_TOO_COMPLEX,
- N_("xdf: relocation too complex"));
- yasm_intnum_destroy(intn);
- return 1;
- }
- yasm_intnum_calc(intn, YASM_EXPR_ADD, intn2);
- }
-
- retval = yasm_arch_intnum_tobytes(info->object->arch, intn, buf, destsize,
- valsize, 0, bc, warn);
- yasm_intnum_destroy(intn);
- return retval;
-}
-
-static int
-xdf_objfmt_output_bytecode(yasm_bytecode *bc, /*@null@*/ void *d)
-{
- /*@null@*/ xdf_objfmt_output_info *info = (xdf_objfmt_output_info *)d;
- /*@null@*/ /*@only@*/ unsigned char *bigbuf;
- unsigned long size = REGULAR_OUTBUF_SIZE;
- int gap;
-
- assert(info != NULL);
-
- bigbuf = yasm_bc_tobytes(bc, info->buf, &size, &gap, info,
- xdf_objfmt_output_value, NULL);
-
- /* Don't bother doing anything else if size ended up being 0. */
- if (size == 0) {
- if (bigbuf)
- yasm_xfree(bigbuf);
- return 0;
- }
-
- info->xsd->size += size;
-
- /* Warn that gaps are converted to 0 and write out the 0's. */
- if (gap) {
- unsigned long left;
- yasm_warn_set(YASM_WARN_UNINIT_CONTENTS,
- N_("uninitialized space: zeroing"));
- /* Write out in chunks */
- memset(info->buf, 0, REGULAR_OUTBUF_SIZE);
- left = size;
- while (left > REGULAR_OUTBUF_SIZE) {
- fwrite(info->buf, REGULAR_OUTBUF_SIZE, 1, info->f);
- left -= REGULAR_OUTBUF_SIZE;
- }
- fwrite(info->buf, left, 1, info->f);
- } else {
- /* Output buf (or bigbuf if non-NULL) to file */
- fwrite(bigbuf ? bigbuf : info->buf, (size_t)size, 1, info->f);
- }
-
- /* If bigbuf was allocated, free it */
- if (bigbuf)
- yasm_xfree(bigbuf);
-
- return 0;
-}
-
-static int
-xdf_objfmt_output_section(yasm_section *sect, /*@null@*/ void *d)
-{
- /*@null@*/ xdf_objfmt_output_info *info = (xdf_objfmt_output_info *)d;
- /*@dependent@*/ /*@null@*/ xdf_section_data *xsd;
- long pos;
- xdf_reloc *reloc;
-
- assert(info != NULL);
- xsd = yasm_section_get_data(sect, &xdf_section_data_cb);
- assert(xsd != NULL);
-
- if (xsd->flags & XDF_SECT_BSS) {
- /* Don't output BSS sections.
- * TODO: Check for non-reserve bytecodes?
- */
- pos = 0; /* position = 0 because it's not in the file */
- xsd->size = yasm_bc_next_offset(yasm_section_bcs_last(sect));
- } else {
- pos = ftell(info->f);
- if (pos == -1) {
- yasm__fatal(N_("could not get file position on output file"));
- /*@notreached@*/
- return 1;
- }
-
- info->sect = sect;
- info->xsd = xsd;
- yasm_section_bcs_traverse(sect, info->errwarns, info,
- xdf_objfmt_output_bytecode);
-
- /* Sanity check final section size */
- if (xsd->size != yasm_bc_next_offset(yasm_section_bcs_last(sect)))
- yasm_internal_error(
- N_("xdf: section computed size did not match actual size"));
- }
-
- /* Empty? Go on to next section */
- if (xsd->size == 0)
- return 0;
-
- xsd->scnptr = (unsigned long)pos;
-
- /* No relocations to output? Go on to next section */
- if (xsd->nreloc == 0)
- return 0;
-
- pos = ftell(info->f);
- if (pos == -1) {
- yasm__fatal(N_("could not get file position on output file"));
- /*@notreached@*/
- return 1;
- }
- xsd->relptr = (unsigned long)pos;
-
- reloc = (xdf_reloc *)yasm_section_relocs_first(sect);
- while (reloc) {
- unsigned char *localbuf = info->buf;
- /*@null@*/ xdf_symrec_data *xsymd;
-
- xsymd = yasm_symrec_get_data(reloc->reloc.sym, &xdf_symrec_data_cb);
- if (!xsymd)
- yasm_internal_error(
- N_("xdf: no symbol data for relocated symbol"));
-
- yasm_intnum_get_sized(reloc->reloc.addr, localbuf, 4, 32, 0, 0, 0);
- localbuf += 4; /* address of relocation */
- YASM_WRITE_32_L(localbuf, xsymd->index); /* relocated symbol */
- if (reloc->base) {
- xsymd = yasm_symrec_get_data(reloc->base, &xdf_symrec_data_cb);
- if (!xsymd)
- yasm_internal_error(
- N_("xdf: no symbol data for relocated base symbol"));
- YASM_WRITE_32_L(localbuf, xsymd->index); /* base symbol */
- } else {
- if (reloc->type == XDF_RELOC_WRT)
- yasm_internal_error(
- N_("xdf: no base symbol for WRT relocation"));
- YASM_WRITE_32_L(localbuf, 0); /* no base symbol */
- }
- YASM_WRITE_8(localbuf, reloc->type); /* type of relocation */
- YASM_WRITE_8(localbuf, reloc->size); /* size of relocation */
- YASM_WRITE_8(localbuf, reloc->shift); /* relocation shift */
- YASM_WRITE_8(localbuf, 0); /* flags */
- fwrite(info->buf, 16, 1, info->f);
-
- reloc = (xdf_reloc *)yasm_section_reloc_next((yasm_reloc *)reloc);
- }
-
- return 0;
-}
-
-static int
-xdf_objfmt_output_secthead(yasm_section *sect, /*@null@*/ void *d)
-{
- /*@null@*/ xdf_objfmt_output_info *info = (xdf_objfmt_output_info *)d;
- /*@dependent@*/ /*@null@*/ xdf_section_data *xsd;
- /*@null@*/ xdf_symrec_data *xsymd;
- unsigned char *localbuf;
-
- assert(info != NULL);
- xsd = yasm_section_get_data(sect, &xdf_section_data_cb);
- assert(xsd != NULL);
-
- localbuf = info->buf;
- xsymd = yasm_symrec_get_data(xsd->sym, &xdf_symrec_data_cb);
- assert(xsymd != NULL);
-
- YASM_WRITE_32_L(localbuf, xsymd->index); /* section name symbol */
- if (xsd->addr) {
- yasm_intnum_get_sized(xsd->addr, localbuf, 8, 64, 0, 0, 0);
- localbuf += 8; /* physical address */
- } else {
- YASM_WRITE_32_L(localbuf, 0);
- YASM_WRITE_32_L(localbuf, 0);
- }
- if (xsd->vaddr) {
- yasm_intnum_get_sized(xsd->vaddr, localbuf, 8, 64, 0, 0, 0);
- localbuf += 8; /* virtual address */
- } else if (xsd->addr) {
- yasm_intnum_get_sized(xsd->addr, localbuf, 8, 64, 0, 0, 0);
- localbuf += 8; /* VA=PA */
- } else {
- YASM_WRITE_32_L(localbuf, 0);
- YASM_WRITE_32_L(localbuf, 0);
- }
- YASM_WRITE_16_L(localbuf, yasm_section_get_align(sect)); /* alignment */
- YASM_WRITE_16_L(localbuf, xsd->flags); /* flags */
- YASM_WRITE_32_L(localbuf, xsd->scnptr); /* file ptr to data */
- YASM_WRITE_32_L(localbuf, xsd->size); /* section size */
- YASM_WRITE_32_L(localbuf, xsd->relptr); /* file ptr to relocs */
- YASM_WRITE_32_L(localbuf, xsd->nreloc); /* num of relocation entries */
- fwrite(info->buf, 40, 1, info->f);
-
- return 0;
-}
-
-static int
-xdf_objfmt_count_sym(yasm_symrec *sym, /*@null@*/ void *d)
-{
- /*@null@*/ xdf_objfmt_output_info *info = (xdf_objfmt_output_info *)d;
- yasm_sym_vis vis = yasm_symrec_get_visibility(sym);
- assert(info != NULL);
- if (vis & YASM_SYM_COMMON) {
- yasm_error_set(YASM_ERROR_GENERAL,
- N_("XDF object format does not support common variables"));
- yasm_errwarn_propagate(info->errwarns, yasm_symrec_get_decl_line(sym));
- return 0;
- }
- if (info->all_syms ||
- (vis != YASM_SYM_LOCAL && !(vis & YASM_SYM_DLOCAL))) {
- /* Save index in symrec data */
- xdf_symrec_data *sym_data = yasm_xmalloc(sizeof(xdf_symrec_data));
- sym_data->index = info->indx;
- yasm_symrec_add_data(sym, &xdf_symrec_data_cb, sym_data);
-
- info->indx++;
- }
- return 0;
-}
-
-static int
-xdf_objfmt_output_sym(yasm_symrec *sym, /*@null@*/ void *d)
-{
- /*@null@*/ xdf_objfmt_output_info *info = (xdf_objfmt_output_info *)d;
- yasm_sym_vis vis = yasm_symrec_get_visibility(sym);
-
- assert(info != NULL);
-
- if (info->all_syms || vis != YASM_SYM_LOCAL) {
- /*@only@*/ char *name = yasm_symrec_get_global_name(sym, info->object);
- const yasm_expr *equ_val;
- const yasm_intnum *intn;
- size_t len = strlen(name);
- unsigned long value = 0;
- long scnum = -3; /* -3 = debugging symbol */
- /*@dependent@*/ /*@null@*/ yasm_section *sect;
- /*@dependent@*/ /*@null@*/ yasm_bytecode *precbc;
- unsigned long flags = 0;
- unsigned char *localbuf;
-
- if (vis & YASM_SYM_GLOBAL)
- flags = XDF_SYM_GLOBAL;
-
- /* Look at symrec for value/scnum/etc. */
- if (yasm_symrec_get_label(sym, &precbc)) {
- if (precbc)
- sect = yasm_bc_get_section(precbc);
- else
- sect = NULL;
- /* it's a label: get value and offset.
- * If there is not a section, leave as debugging symbol.
- */
- if (sect) {
- /*@dependent@*/ /*@null@*/ xdf_section_data *csectd;
- csectd = yasm_section_get_data(sect, &xdf_section_data_cb);
- if (csectd)
- scnum = csectd->scnum;
- else
- yasm_internal_error(N_("didn't understand section"));
- if (precbc)
- value += yasm_bc_next_offset(precbc);
- }
- } else if ((equ_val = yasm_symrec_get_equ(sym))) {
- yasm_expr *equ_val_copy = yasm_expr_copy(equ_val);
- intn = yasm_expr_get_intnum(&equ_val_copy, 1);
- if (!intn) {
- if (vis & YASM_SYM_GLOBAL) {
- yasm_error_set(YASM_ERROR_NOT_CONSTANT,
- N_("global EQU value not an integer expression"));
- yasm_errwarn_propagate(info->errwarns, equ_val->line);
- }
- } else
- value = yasm_intnum_get_uint(intn);
- yasm_expr_destroy(equ_val_copy);
-
- flags |= XDF_SYM_EQU;
- scnum = -2; /* -2 = absolute symbol */
- } else {
- if (vis & YASM_SYM_EXTERN) {
- flags = XDF_SYM_EXTERN;
- scnum = -1;
- }
- }
-
- localbuf = info->buf;
- YASM_WRITE_32_L(localbuf, scnum); /* section number */
- YASM_WRITE_32_L(localbuf, value); /* value */
- YASM_WRITE_32_L(localbuf, info->strtab_offset);
- info->strtab_offset += (unsigned long)(len+1);
- YASM_WRITE_32_L(localbuf, flags); /* flags */
- fwrite(info->buf, 16, 1, info->f);
- yasm_xfree(name);
- }
- return 0;
-}
-
-static int
-xdf_objfmt_output_str(yasm_symrec *sym, /*@null@*/ void *d)
-{
- /*@null@*/ xdf_objfmt_output_info *info = (xdf_objfmt_output_info *)d;
- yasm_sym_vis vis = yasm_symrec_get_visibility(sym);
-
- assert(info != NULL);
-
- if (info->all_syms || vis != YASM_SYM_LOCAL) {
- /*@only@*/ char *name = yasm_symrec_get_global_name(sym, info->object);
- size_t len = strlen(name);
- fwrite(name, len+1, 1, info->f);
- yasm_xfree(name);
- }
- return 0;
-}
-
-static void
-xdf_objfmt_output(yasm_object *object, FILE *f, int all_syms,
- yasm_errwarns *errwarns)
-{
- yasm_objfmt_xdf *objfmt_xdf = (yasm_objfmt_xdf *)object->objfmt;
- xdf_objfmt_output_info info;
- unsigned char *localbuf;
- unsigned long symtab_count = 0;
-
- info.object = object;
- info.objfmt_xdf = objfmt_xdf;
- info.errwarns = errwarns;
- info.f = f;
- info.buf = yasm_xmalloc(REGULAR_OUTBUF_SIZE);
-
- /* Allocate space for headers by seeking forward */
- if (fseek(f, (long)(16+40*(objfmt_xdf->parse_scnum)), SEEK_SET) < 0) {
- yasm__fatal(N_("could not seek on output file"));
- /*@notreached@*/
- return;
- }
-
- /* Get number of symbols */
- info.indx = 0;
- info.all_syms = 1; /* force all syms into symbol table */
- yasm_symtab_traverse(object->symtab, &info, xdf_objfmt_count_sym);
- symtab_count = info.indx;
-
- /* Get file offset of start of string table */
- info.strtab_offset = 16+40*(objfmt_xdf->parse_scnum)+16*symtab_count;
-
- /* Output symbol table */
- yasm_symtab_traverse(object->symtab, &info, xdf_objfmt_output_sym);
-
- /* Output string table */
- yasm_symtab_traverse(object->symtab, &info, xdf_objfmt_output_str);
-
- /* Section data/relocs */
- if (yasm_object_sections_traverse(object, &info,
- xdf_objfmt_output_section))
- return;
-
- /* Write headers */
- if (fseek(f, 0, SEEK_SET) < 0) {
- yasm__fatal(N_("could not seek on output file"));
- /*@notreached@*/
- return;
- }
-
- localbuf = info.buf;
- YASM_WRITE_32_L(localbuf, XDF_MAGIC); /* magic number */
- YASM_WRITE_32_L(localbuf, objfmt_xdf->parse_scnum); /* number of sects */
- YASM_WRITE_32_L(localbuf, symtab_count); /* number of symtabs */
- /* size of sect headers + symbol table + strings */
- YASM_WRITE_32_L(localbuf, info.strtab_offset-16);
- fwrite(info.buf, 16, 1, f);
-
- yasm_object_sections_traverse(object, &info, xdf_objfmt_output_secthead);
-
- yasm_xfree(info.buf);
-}
-
-static void
-xdf_objfmt_destroy(yasm_objfmt *objfmt)
-{
- yasm_xfree(objfmt);
-}
-
-static void
-xdf_objfmt_init_new_section(yasm_section *sect, unsigned long line)
-{
- yasm_object *object = yasm_section_get_object(sect);
- const char *sectname = yasm_section_get_name(sect);
- yasm_objfmt_xdf *objfmt_xdf = (yasm_objfmt_xdf *)object->objfmt;
- xdf_section_data *data;
- yasm_symrec *sym;
-
- data = yasm_xmalloc(sizeof(xdf_section_data));
- data->scnum = objfmt_xdf->parse_scnum++;
- data->flags = 0;
- data->addr = NULL;
- data->vaddr = NULL;
- data->scnptr = 0;
- data->size = 0;
- data->relptr = 0;
- data->nreloc = 0;
- yasm_section_add_data(sect, &xdf_section_data_cb, data);
-
- sym = yasm_symtab_define_label(object->symtab, sectname,
- yasm_section_bcs_first(sect), 1, line);
- data->sym = sym;
-}
-
-static yasm_section *
-xdf_objfmt_add_default_section(yasm_object *object)
-{
- yasm_section *retval;
- int isnew;
-
- retval = yasm_object_get_general(object, ".text", 0, 1, 0, &isnew, 0);
- if (isnew)
- yasm_section_set_default(retval, 1);
- return retval;
-}
-
-static int
-xdf_helper_use(void *obj, yasm_valparam *vp, unsigned long line, void *d,
- uintptr_t bits)
-{
- yasm_object *object = (yasm_object *)obj;
- unsigned long *flags = (unsigned long *)d;
- *flags &= ~(XDF_SECT_USE_16|XDF_SECT_USE_32|XDF_SECT_USE_64);
- switch (bits) {
- case 16: *flags |= XDF_SECT_USE_16; break;
- case 32: *flags |= XDF_SECT_USE_32; break;
- case 64: *flags |= XDF_SECT_USE_64; break;
- };
- yasm_arch_set_var(object->arch, "mode_bits", bits);
- return 0;
-}
-
-static /*@observer@*/ /*@null@*/ yasm_section *
-xdf_objfmt_section_switch(yasm_object *object, yasm_valparamhead *valparams,
- /*@unused@*/ /*@null@*/
- yasm_valparamhead *objext_valparams,
- unsigned long line)
-{
- yasm_valparam *vp;
- yasm_section *retval;
- int isnew;
- int flags_override = 0;
- const char *sectname;
- int resonly = 0;
- xdf_section_data *xsd;
- unsigned long align = 0;
-
- struct xdf_section_switch_data {
- /*@only@*/ /*@null@*/ yasm_intnum *absaddr;
- /*@only@*/ /*@null@*/ yasm_intnum *vaddr;
- /*@only@*/ /*@null@*/ yasm_intnum *align_intn;
- unsigned long flags;
- } data;
-
- static const yasm_dir_help help[] = {
- { "use16", 0, xdf_helper_use,
- offsetof(struct xdf_section_switch_data, flags), 16 },
- { "use32", 0, xdf_helper_use,
- offsetof(struct xdf_section_switch_data, flags), 32 },
- { "use64", 0, xdf_helper_use,
- offsetof(struct xdf_section_switch_data, flags), 64 },
- { "bss", 0, yasm_dir_helper_flag_or,
- offsetof(struct xdf_section_switch_data, flags), XDF_SECT_BSS },
- { "flat", 0, yasm_dir_helper_flag_or,
- offsetof(struct xdf_section_switch_data, flags), XDF_SECT_FLAT },
- { "absolute", 1, yasm_dir_helper_intn,
- offsetof(struct xdf_section_switch_data, absaddr), 0 },
- { "virtual", 1, yasm_dir_helper_intn,
- offsetof(struct xdf_section_switch_data, vaddr), 0 },
- { "align", 1, yasm_dir_helper_intn,
- offsetof(struct xdf_section_switch_data, align_intn), 0 }
- };
-
- data.absaddr = NULL;
- data.vaddr = NULL;
- data.align_intn = NULL;
- data.flags = 0;
-
- vp = yasm_vps_first(valparams);
- sectname = yasm_vp_string(vp);
- if (!sectname)
- return NULL;
- vp = yasm_vps_next(vp);
-
- flags_override = yasm_dir_helper(object, vp, line, help, NELEMS(help),
- &data, yasm_dir_helper_valparam_warn);
- if (flags_override < 0)
- return NULL; /* error occurred */
-
- if (data.absaddr)
- data.flags |= XDF_SECT_ABSOLUTE;
- if (data.align_intn) {
- align = yasm_intnum_get_uint(data.align_intn);
- yasm_intnum_destroy(data.align_intn);
-
- /* Alignments must be a power of two. */
- if (!is_exp2(align)) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("argument to `%s' is not a power of two"),
- "align");
- if (data.vaddr)
- yasm_intnum_destroy(data.vaddr);
- if (data.absaddr)
- yasm_intnum_destroy(data.absaddr);
- return NULL;
- }
-
- /* Check to see if alignment is supported size */
- if (align > 4096) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("XDF does not support alignments > 4096"));
- if (data.vaddr)
- yasm_intnum_destroy(data.vaddr);
- if (data.absaddr)
- yasm_intnum_destroy(data.absaddr);
- return NULL;
- }
- }
-
- retval = yasm_object_get_general(object, sectname, align, 1, resonly,
- &isnew, line);
-
- xsd = yasm_section_get_data(retval, &xdf_section_data_cb);
-
- if (isnew || yasm_section_is_default(retval)) {
- yasm_section_set_default(retval, 0);
- xsd->flags = data.flags;
- if (data.absaddr) {
- if (xsd->addr)
- yasm_intnum_destroy(xsd->addr);
- xsd->addr = data.absaddr;
- }
- if (data.vaddr) {
- if (xsd->vaddr)
- yasm_intnum_destroy(xsd->vaddr);
- xsd->vaddr = data.vaddr;
- }
- yasm_section_set_align(retval, align, line);
- } else if (flags_override)
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("section flags ignored on section redeclaration"));
- return retval;
-}
-
-static /*@observer@*/ /*@null@*/ yasm_symrec *
-xdf_objfmt_get_special_sym(yasm_object *object, const char *name,
- const char *parser)
-{
- return NULL;
-}
-
-static void
-xdf_section_data_destroy(void *data)
-{
- xdf_section_data *xsd = (xdf_section_data *)data;
- if (xsd->addr)
- yasm_intnum_destroy(xsd->addr);
- if (xsd->vaddr)
- yasm_intnum_destroy(xsd->vaddr);
- yasm_xfree(data);
-}
-
-static void
-xdf_section_data_print(void *data, FILE *f, int indent_level)
-{
- xdf_section_data *xsd = (xdf_section_data *)data;
-
- fprintf(f, "%*ssym=\n", indent_level, "");
- yasm_symrec_print(xsd->sym, f, indent_level+1);
- fprintf(f, "%*sscnum=%ld\n", indent_level, "", xsd->scnum);
- fprintf(f, "%*sflags=0x%x\n", indent_level, "", xsd->flags);
- fprintf(f, "%*saddr=", indent_level, "");
- yasm_intnum_print(xsd->addr, f);
- fprintf(f, "%*svaddr=", indent_level, "");
- yasm_intnum_print(xsd->vaddr, f);
- fprintf(f, "%*sscnptr=0x%lx\n", indent_level, "", xsd->scnptr);
- fprintf(f, "%*ssize=%ld\n", indent_level, "", xsd->size);
- fprintf(f, "%*srelptr=0x%lx\n", indent_level, "", xsd->relptr);
- fprintf(f, "%*snreloc=%ld\n", indent_level, "", xsd->nreloc);
-}
-
-static void
-xdf_symrec_data_destroy(void *data)
-{
- yasm_xfree(data);
-}
-
-static void
-xdf_symrec_data_print(void *data, FILE *f, int indent_level)
-{
- xdf_symrec_data *xsd = (xdf_symrec_data *)data;
-
- fprintf(f, "%*ssymtab index=%lu\n", indent_level, "", xsd->index);
-}
-
-/* Define valid debug formats to use with this object format */
-static const char *xdf_objfmt_dbgfmt_keywords[] = {
- "null",
- NULL
-};
-
-/* Define objfmt structure -- see objfmt.h for details */
-yasm_objfmt_module yasm_xdf_LTX_objfmt = {
- "Extended Dynamic Object",
- "xdf",
- "xdf",
- 32,
- 0,
- xdf_objfmt_dbgfmt_keywords,
- "null",
- NULL, /* no directives */
- NULL, /* no standard macros */
- xdf_objfmt_create,
- xdf_objfmt_output,
- xdf_objfmt_destroy,
- xdf_objfmt_add_default_section,
- xdf_objfmt_init_new_section,
- xdf_objfmt_section_switch,
- xdf_objfmt_get_special_sym
-};
+/*
+ * Extended Dynamic Object format
+ *
+ * Copyright (C) 2004-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <libyasm.h>
+
+
+#define REGULAR_OUTBUF_SIZE 1024
+
+#define XDF_MAGIC 0x87654322
+
+#define XDF_SYM_EXTERN 1
+#define XDF_SYM_GLOBAL 2
+#define XDF_SYM_EQU 4
+
+typedef struct xdf_reloc {
+ yasm_reloc reloc;
+ /*@null@*/ yasm_symrec *base; /* base symbol (for WRT) */
+ enum {
+ XDF_RELOC_REL = 1, /* relative to segment */
+ XDF_RELOC_WRT = 2, /* relative to symbol */
+ XDF_RELOC_RIP = 4, /* RIP-relative */
+ XDF_RELOC_SEG = 8 /* segment containing symbol */
+ } type; /* type of relocation */
+ enum {
+ XDF_RELOC_8 = 1,
+ XDF_RELOC_16 = 2,
+ XDF_RELOC_32 = 4,
+ XDF_RELOC_64 = 8
+ } size; /* size of relocation */
+ unsigned int shift; /* relocation shift (0,4,8,16,24,32) */
+} xdf_reloc;
+
+typedef struct xdf_section_data {
+ /*@dependent@*/ yasm_symrec *sym; /* symbol created for this section */
+ yasm_intnum *addr; /* starting memory address */
+ yasm_intnum *vaddr; /* starting virtual address */
+ long scnum; /* section number (0=first section) */
+ enum {
+ XDF_SECT_ABSOLUTE = 0x01,
+ XDF_SECT_FLAT = 0x02,
+ XDF_SECT_BSS = 0x04,
+ XDF_SECT_EQU = 0x08,
+ XDF_SECT_USE_16 = 0x10,
+ XDF_SECT_USE_32 = 0x20,
+ XDF_SECT_USE_64 = 0x40
+ } flags; /* section flags */
+ unsigned long scnptr; /* file ptr to raw data */
+ unsigned long size; /* size of raw data (section data) in bytes */
+ unsigned long relptr; /* file ptr to relocation */
+ unsigned long nreloc; /* number of relocation entries >64k -> error */
+} xdf_section_data;
+
+typedef struct xdf_symrec_data {
+ unsigned long index; /* assigned XDF symbol table index */
+} xdf_symrec_data;
+
+typedef struct yasm_objfmt_xdf {
+ yasm_objfmt_base objfmt; /* base structure */
+
+ long parse_scnum; /* sect numbering in parser */
+} yasm_objfmt_xdf;
+
+typedef struct xdf_objfmt_output_info {
+ yasm_object *object;
+ yasm_objfmt_xdf *objfmt_xdf;
+ yasm_errwarns *errwarns;
+ /*@dependent@*/ FILE *f;
+ /*@only@*/ unsigned char *buf;
+ yasm_section *sect;
+ /*@dependent@*/ xdf_section_data *xsd;
+
+ unsigned long indx; /* current symbol index */
+ int all_syms; /* outputting all symbols? */
+ unsigned long strtab_offset; /* current string table offset */
+} xdf_objfmt_output_info;
+
+static void xdf_section_data_destroy(/*@only@*/ void *d);
+static void xdf_section_data_print(void *data, FILE *f, int indent_level);
+
+static const yasm_assoc_data_callback xdf_section_data_cb = {
+ xdf_section_data_destroy,
+ xdf_section_data_print
+};
+
+static void xdf_symrec_data_destroy(/*@only@*/ void *d);
+static void xdf_symrec_data_print(void *data, FILE *f, int indent_level);
+
+static const yasm_assoc_data_callback xdf_symrec_data_cb = {
+ xdf_symrec_data_destroy,
+ xdf_symrec_data_print
+};
+
+yasm_objfmt_module yasm_xdf_LTX_objfmt;
+
+
+static yasm_objfmt *
+xdf_objfmt_create(yasm_object *object)
+{
+ yasm_objfmt_xdf *objfmt_xdf = yasm_xmalloc(sizeof(yasm_objfmt_xdf));
+
+ /* Only support x86 arch */
+ if (yasm__strcasecmp(yasm_arch_keyword(object->arch), "x86") != 0) {
+ yasm_xfree(objfmt_xdf);
+ return NULL;
+ }
+
+ /* Support x86 and amd64 machines of x86 arch */
+ if (yasm__strcasecmp(yasm_arch_get_machine(object->arch), "x86") &&
+ yasm__strcasecmp(yasm_arch_get_machine(object->arch), "amd64")) {
+ yasm_xfree(objfmt_xdf);
+ return NULL;
+ }
+
+ objfmt_xdf->parse_scnum = 0; /* section numbering starts at 0 */
+
+ objfmt_xdf->objfmt.module = &yasm_xdf_LTX_objfmt;
+
+ return (yasm_objfmt *)objfmt_xdf;
+}
+
+static int
+xdf_objfmt_output_value(yasm_value *value, unsigned char *buf,
+ unsigned int destsize, unsigned long offset,
+ yasm_bytecode *bc, int warn, /*@null@*/ void *d)
+{
+ /*@null@*/ xdf_objfmt_output_info *info = (xdf_objfmt_output_info *)d;
+ /*@dependent@*/ /*@null@*/ yasm_intnum *intn;
+ unsigned long intn_minus;
+ int retval;
+ unsigned int valsize = value->size;
+
+ assert(info != NULL);
+
+ if (value->abs)
+ value->abs = yasm_expr_simplify(value->abs, 1);
+
+ /* Try to output constant and PC-relative section-local first.
+ * Note this does NOT output any value with a SEG, WRT, external,
+ * cross-section, or non-PC-relative reference (those are handled below).
+ */
+ switch (yasm_value_output_basic(value, buf, destsize, bc, warn,
+ info->object->arch)) {
+ case -1:
+ return 1;
+ case 0:
+ break;
+ default:
+ return 0;
+ }
+
+ if (value->section_rel) {
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("xdf: relocation too complex"));
+ return 1;
+ }
+
+ intn_minus = 0;
+ if (value->rel) {
+ xdf_reloc *reloc;
+
+ reloc = yasm_xmalloc(sizeof(xdf_reloc));
+ reloc->reloc.addr = yasm_intnum_create_uint(bc->offset + offset);
+ reloc->reloc.sym = value->rel;
+ reloc->base = NULL;
+ reloc->size = valsize/8;
+ reloc->shift = value->rshift;
+
+ if (value->seg_of)
+ reloc->type = XDF_RELOC_SEG;
+ else if (value->wrt) {
+ reloc->base = value->wrt;
+ reloc->type = XDF_RELOC_WRT;
+ } else if (value->curpos_rel) {
+ reloc->type = XDF_RELOC_RIP;
+ /* Adjust to start of section, so subtract out the bytecode
+ * offset.
+ */
+ intn_minus = bc->offset;
+ } else
+ reloc->type = XDF_RELOC_REL;
+ info->xsd->nreloc++;
+ yasm_section_add_reloc(info->sect, (yasm_reloc *)reloc, yasm_xfree);
+ }
+
+ if (intn_minus > 0) {
+ intn = yasm_intnum_create_uint(intn_minus);
+ yasm_intnum_calc(intn, YASM_EXPR_NEG, NULL);
+ } else
+ intn = yasm_intnum_create_uint(0);
+
+ if (value->abs) {
+ yasm_intnum *intn2 = yasm_expr_get_intnum(&value->abs, 0);
+ if (!intn2) {
+ yasm_error_set(YASM_ERROR_TOO_COMPLEX,
+ N_("xdf: relocation too complex"));
+ yasm_intnum_destroy(intn);
+ return 1;
+ }
+ yasm_intnum_calc(intn, YASM_EXPR_ADD, intn2);
+ }
+
+ retval = yasm_arch_intnum_tobytes(info->object->arch, intn, buf, destsize,
+ valsize, 0, bc, warn);
+ yasm_intnum_destroy(intn);
+ return retval;
+}
+
+static int
+xdf_objfmt_output_bytecode(yasm_bytecode *bc, /*@null@*/ void *d)
+{
+ /*@null@*/ xdf_objfmt_output_info *info = (xdf_objfmt_output_info *)d;
+ /*@null@*/ /*@only@*/ unsigned char *bigbuf;
+ unsigned long size = REGULAR_OUTBUF_SIZE;
+ int gap;
+
+ assert(info != NULL);
+
+ bigbuf = yasm_bc_tobytes(bc, info->buf, &size, &gap, info,
+ xdf_objfmt_output_value, NULL);
+
+ /* Don't bother doing anything else if size ended up being 0. */
+ if (size == 0) {
+ if (bigbuf)
+ yasm_xfree(bigbuf);
+ return 0;
+ }
+
+ info->xsd->size += size;
+
+ /* Warn that gaps are converted to 0 and write out the 0's. */
+ if (gap) {
+ unsigned long left;
+ yasm_warn_set(YASM_WARN_UNINIT_CONTENTS,
+ N_("uninitialized space: zeroing"));
+ /* Write out in chunks */
+ memset(info->buf, 0, REGULAR_OUTBUF_SIZE);
+ left = size;
+ while (left > REGULAR_OUTBUF_SIZE) {
+ fwrite(info->buf, REGULAR_OUTBUF_SIZE, 1, info->f);
+ left -= REGULAR_OUTBUF_SIZE;
+ }
+ fwrite(info->buf, left, 1, info->f);
+ } else {
+ /* Output buf (or bigbuf if non-NULL) to file */
+ fwrite(bigbuf ? bigbuf : info->buf, (size_t)size, 1, info->f);
+ }
+
+ /* If bigbuf was allocated, free it */
+ if (bigbuf)
+ yasm_xfree(bigbuf);
+
+ return 0;
+}
+
+static int
+xdf_objfmt_output_section(yasm_section *sect, /*@null@*/ void *d)
+{
+ /*@null@*/ xdf_objfmt_output_info *info = (xdf_objfmt_output_info *)d;
+ /*@dependent@*/ /*@null@*/ xdf_section_data *xsd;
+ long pos;
+ xdf_reloc *reloc;
+
+ assert(info != NULL);
+ xsd = yasm_section_get_data(sect, &xdf_section_data_cb);
+ assert(xsd != NULL);
+
+ if (xsd->flags & XDF_SECT_BSS) {
+ /* Don't output BSS sections.
+ * TODO: Check for non-reserve bytecodes?
+ */
+ pos = 0; /* position = 0 because it's not in the file */
+ xsd->size = yasm_bc_next_offset(yasm_section_bcs_last(sect));
+ } else {
+ pos = ftell(info->f);
+ if (pos == -1) {
+ yasm__fatal(N_("could not get file position on output file"));
+ /*@notreached@*/
+ return 1;
+ }
+
+ info->sect = sect;
+ info->xsd = xsd;
+ yasm_section_bcs_traverse(sect, info->errwarns, info,
+ xdf_objfmt_output_bytecode);
+
+ /* Sanity check final section size */
+ if (xsd->size != yasm_bc_next_offset(yasm_section_bcs_last(sect)))
+ yasm_internal_error(
+ N_("xdf: section computed size did not match actual size"));
+ }
+
+ /* Empty? Go on to next section */
+ if (xsd->size == 0)
+ return 0;
+
+ xsd->scnptr = (unsigned long)pos;
+
+ /* No relocations to output? Go on to next section */
+ if (xsd->nreloc == 0)
+ return 0;
+
+ pos = ftell(info->f);
+ if (pos == -1) {
+ yasm__fatal(N_("could not get file position on output file"));
+ /*@notreached@*/
+ return 1;
+ }
+ xsd->relptr = (unsigned long)pos;
+
+ reloc = (xdf_reloc *)yasm_section_relocs_first(sect);
+ while (reloc) {
+ unsigned char *localbuf = info->buf;
+ /*@null@*/ xdf_symrec_data *xsymd;
+
+ xsymd = yasm_symrec_get_data(reloc->reloc.sym, &xdf_symrec_data_cb);
+ if (!xsymd)
+ yasm_internal_error(
+ N_("xdf: no symbol data for relocated symbol"));
+
+ yasm_intnum_get_sized(reloc->reloc.addr, localbuf, 4, 32, 0, 0, 0);
+ localbuf += 4; /* address of relocation */
+ YASM_WRITE_32_L(localbuf, xsymd->index); /* relocated symbol */
+ if (reloc->base) {
+ xsymd = yasm_symrec_get_data(reloc->base, &xdf_symrec_data_cb);
+ if (!xsymd)
+ yasm_internal_error(
+ N_("xdf: no symbol data for relocated base symbol"));
+ YASM_WRITE_32_L(localbuf, xsymd->index); /* base symbol */
+ } else {
+ if (reloc->type == XDF_RELOC_WRT)
+ yasm_internal_error(
+ N_("xdf: no base symbol for WRT relocation"));
+ YASM_WRITE_32_L(localbuf, 0); /* no base symbol */
+ }
+ YASM_WRITE_8(localbuf, reloc->type); /* type of relocation */
+ YASM_WRITE_8(localbuf, reloc->size); /* size of relocation */
+ YASM_WRITE_8(localbuf, reloc->shift); /* relocation shift */
+ YASM_WRITE_8(localbuf, 0); /* flags */
+ fwrite(info->buf, 16, 1, info->f);
+
+ reloc = (xdf_reloc *)yasm_section_reloc_next((yasm_reloc *)reloc);
+ }
+
+ return 0;
+}
+
+static int
+xdf_objfmt_output_secthead(yasm_section *sect, /*@null@*/ void *d)
+{
+ /*@null@*/ xdf_objfmt_output_info *info = (xdf_objfmt_output_info *)d;
+ /*@dependent@*/ /*@null@*/ xdf_section_data *xsd;
+ /*@null@*/ xdf_symrec_data *xsymd;
+ unsigned char *localbuf;
+
+ assert(info != NULL);
+ xsd = yasm_section_get_data(sect, &xdf_section_data_cb);
+ assert(xsd != NULL);
+
+ localbuf = info->buf;
+ xsymd = yasm_symrec_get_data(xsd->sym, &xdf_symrec_data_cb);
+ assert(xsymd != NULL);
+
+ YASM_WRITE_32_L(localbuf, xsymd->index); /* section name symbol */
+ if (xsd->addr) {
+ yasm_intnum_get_sized(xsd->addr, localbuf, 8, 64, 0, 0, 0);
+ localbuf += 8; /* physical address */
+ } else {
+ YASM_WRITE_32_L(localbuf, 0);
+ YASM_WRITE_32_L(localbuf, 0);
+ }
+ if (xsd->vaddr) {
+ yasm_intnum_get_sized(xsd->vaddr, localbuf, 8, 64, 0, 0, 0);
+ localbuf += 8; /* virtual address */
+ } else if (xsd->addr) {
+ yasm_intnum_get_sized(xsd->addr, localbuf, 8, 64, 0, 0, 0);
+ localbuf += 8; /* VA=PA */
+ } else {
+ YASM_WRITE_32_L(localbuf, 0);
+ YASM_WRITE_32_L(localbuf, 0);
+ }
+ YASM_WRITE_16_L(localbuf, yasm_section_get_align(sect)); /* alignment */
+ YASM_WRITE_16_L(localbuf, xsd->flags); /* flags */
+ YASM_WRITE_32_L(localbuf, xsd->scnptr); /* file ptr to data */
+ YASM_WRITE_32_L(localbuf, xsd->size); /* section size */
+ YASM_WRITE_32_L(localbuf, xsd->relptr); /* file ptr to relocs */
+ YASM_WRITE_32_L(localbuf, xsd->nreloc); /* num of relocation entries */
+ fwrite(info->buf, 40, 1, info->f);
+
+ return 0;
+}
+
+static int
+xdf_objfmt_count_sym(yasm_symrec *sym, /*@null@*/ void *d)
+{
+ /*@null@*/ xdf_objfmt_output_info *info = (xdf_objfmt_output_info *)d;
+ yasm_sym_vis vis = yasm_symrec_get_visibility(sym);
+ assert(info != NULL);
+ if (vis & YASM_SYM_COMMON) {
+ yasm_error_set(YASM_ERROR_GENERAL,
+ N_("XDF object format does not support common variables"));
+ yasm_errwarn_propagate(info->errwarns, yasm_symrec_get_decl_line(sym));
+ return 0;
+ }
+ if (info->all_syms ||
+ (vis != YASM_SYM_LOCAL && !(vis & YASM_SYM_DLOCAL))) {
+ /* Save index in symrec data */
+ xdf_symrec_data *sym_data = yasm_xmalloc(sizeof(xdf_symrec_data));
+ sym_data->index = info->indx;
+ yasm_symrec_add_data(sym, &xdf_symrec_data_cb, sym_data);
+
+ info->indx++;
+ }
+ return 0;
+}
+
+static int
+xdf_objfmt_output_sym(yasm_symrec *sym, /*@null@*/ void *d)
+{
+ /*@null@*/ xdf_objfmt_output_info *info = (xdf_objfmt_output_info *)d;
+ yasm_sym_vis vis = yasm_symrec_get_visibility(sym);
+
+ assert(info != NULL);
+
+ if (info->all_syms || vis != YASM_SYM_LOCAL) {
+ /*@only@*/ char *name = yasm_symrec_get_global_name(sym, info->object);
+ const yasm_expr *equ_val;
+ const yasm_intnum *intn;
+ size_t len = strlen(name);
+ unsigned long value = 0;
+ long scnum = -3; /* -3 = debugging symbol */
+ /*@dependent@*/ /*@null@*/ yasm_section *sect;
+ /*@dependent@*/ /*@null@*/ yasm_bytecode *precbc;
+ unsigned long flags = 0;
+ unsigned char *localbuf;
+
+ if (vis & YASM_SYM_GLOBAL)
+ flags = XDF_SYM_GLOBAL;
+
+ /* Look at symrec for value/scnum/etc. */
+ if (yasm_symrec_get_label(sym, &precbc)) {
+ if (precbc)
+ sect = yasm_bc_get_section(precbc);
+ else
+ sect = NULL;
+ /* it's a label: get value and offset.
+ * If there is not a section, leave as debugging symbol.
+ */
+ if (sect) {
+ /*@dependent@*/ /*@null@*/ xdf_section_data *csectd;
+ csectd = yasm_section_get_data(sect, &xdf_section_data_cb);
+ if (csectd)
+ scnum = csectd->scnum;
+ else
+ yasm_internal_error(N_("didn't understand section"));
+ if (precbc)
+ value += yasm_bc_next_offset(precbc);
+ }
+ } else if ((equ_val = yasm_symrec_get_equ(sym))) {
+ yasm_expr *equ_val_copy = yasm_expr_copy(equ_val);
+ intn = yasm_expr_get_intnum(&equ_val_copy, 1);
+ if (!intn) {
+ if (vis & YASM_SYM_GLOBAL) {
+ yasm_error_set(YASM_ERROR_NOT_CONSTANT,
+ N_("global EQU value not an integer expression"));
+ yasm_errwarn_propagate(info->errwarns, equ_val->line);
+ }
+ } else
+ value = yasm_intnum_get_uint(intn);
+ yasm_expr_destroy(equ_val_copy);
+
+ flags |= XDF_SYM_EQU;
+ scnum = -2; /* -2 = absolute symbol */
+ } else {
+ if (vis & YASM_SYM_EXTERN) {
+ flags = XDF_SYM_EXTERN;
+ scnum = -1;
+ }
+ }
+
+ localbuf = info->buf;
+ YASM_WRITE_32_L(localbuf, scnum); /* section number */
+ YASM_WRITE_32_L(localbuf, value); /* value */
+ YASM_WRITE_32_L(localbuf, info->strtab_offset);
+ info->strtab_offset += (unsigned long)(len+1);
+ YASM_WRITE_32_L(localbuf, flags); /* flags */
+ fwrite(info->buf, 16, 1, info->f);
+ yasm_xfree(name);
+ }
+ return 0;
+}
+
+static int
+xdf_objfmt_output_str(yasm_symrec *sym, /*@null@*/ void *d)
+{
+ /*@null@*/ xdf_objfmt_output_info *info = (xdf_objfmt_output_info *)d;
+ yasm_sym_vis vis = yasm_symrec_get_visibility(sym);
+
+ assert(info != NULL);
+
+ if (info->all_syms || vis != YASM_SYM_LOCAL) {
+ /*@only@*/ char *name = yasm_symrec_get_global_name(sym, info->object);
+ size_t len = strlen(name);
+ fwrite(name, len+1, 1, info->f);
+ yasm_xfree(name);
+ }
+ return 0;
+}
+
+static void
+xdf_objfmt_output(yasm_object *object, FILE *f, int all_syms,
+ yasm_errwarns *errwarns)
+{
+ yasm_objfmt_xdf *objfmt_xdf = (yasm_objfmt_xdf *)object->objfmt;
+ xdf_objfmt_output_info info;
+ unsigned char *localbuf;
+ unsigned long symtab_count = 0;
+
+ info.object = object;
+ info.objfmt_xdf = objfmt_xdf;
+ info.errwarns = errwarns;
+ info.f = f;
+ info.buf = yasm_xmalloc(REGULAR_OUTBUF_SIZE);
+
+ /* Allocate space for headers by seeking forward */
+ if (fseek(f, (long)(16+40*(objfmt_xdf->parse_scnum)), SEEK_SET) < 0) {
+ yasm__fatal(N_("could not seek on output file"));
+ /*@notreached@*/
+ return;
+ }
+
+ /* Get number of symbols */
+ info.indx = 0;
+ info.all_syms = 1; /* force all syms into symbol table */
+ yasm_symtab_traverse(object->symtab, &info, xdf_objfmt_count_sym);
+ symtab_count = info.indx;
+
+ /* Get file offset of start of string table */
+ info.strtab_offset = 16+40*(objfmt_xdf->parse_scnum)+16*symtab_count;
+
+ /* Output symbol table */
+ yasm_symtab_traverse(object->symtab, &info, xdf_objfmt_output_sym);
+
+ /* Output string table */
+ yasm_symtab_traverse(object->symtab, &info, xdf_objfmt_output_str);
+
+ /* Section data/relocs */
+ if (yasm_object_sections_traverse(object, &info,
+ xdf_objfmt_output_section))
+ return;
+
+ /* Write headers */
+ if (fseek(f, 0, SEEK_SET) < 0) {
+ yasm__fatal(N_("could not seek on output file"));
+ /*@notreached@*/
+ return;
+ }
+
+ localbuf = info.buf;
+ YASM_WRITE_32_L(localbuf, XDF_MAGIC); /* magic number */
+ YASM_WRITE_32_L(localbuf, objfmt_xdf->parse_scnum); /* number of sects */
+ YASM_WRITE_32_L(localbuf, symtab_count); /* number of symtabs */
+ /* size of sect headers + symbol table + strings */
+ YASM_WRITE_32_L(localbuf, info.strtab_offset-16);
+ fwrite(info.buf, 16, 1, f);
+
+ yasm_object_sections_traverse(object, &info, xdf_objfmt_output_secthead);
+
+ yasm_xfree(info.buf);
+}
+
+static void
+xdf_objfmt_destroy(yasm_objfmt *objfmt)
+{
+ yasm_xfree(objfmt);
+}
+
+static void
+xdf_objfmt_init_new_section(yasm_section *sect, unsigned long line)
+{
+ yasm_object *object = yasm_section_get_object(sect);
+ const char *sectname = yasm_section_get_name(sect);
+ yasm_objfmt_xdf *objfmt_xdf = (yasm_objfmt_xdf *)object->objfmt;
+ xdf_section_data *data;
+ yasm_symrec *sym;
+
+ data = yasm_xmalloc(sizeof(xdf_section_data));
+ data->scnum = objfmt_xdf->parse_scnum++;
+ data->flags = 0;
+ data->addr = NULL;
+ data->vaddr = NULL;
+ data->scnptr = 0;
+ data->size = 0;
+ data->relptr = 0;
+ data->nreloc = 0;
+ yasm_section_add_data(sect, &xdf_section_data_cb, data);
+
+ sym = yasm_symtab_define_label(object->symtab, sectname,
+ yasm_section_bcs_first(sect), 1, line);
+ data->sym = sym;
+}
+
+static yasm_section *
+xdf_objfmt_add_default_section(yasm_object *object)
+{
+ yasm_section *retval;
+ int isnew;
+
+ retval = yasm_object_get_general(object, ".text", 0, 1, 0, &isnew, 0);
+ if (isnew)
+ yasm_section_set_default(retval, 1);
+ return retval;
+}
+
+static int
+xdf_helper_use(void *obj, yasm_valparam *vp, unsigned long line, void *d,
+ uintptr_t bits)
+{
+ yasm_object *object = (yasm_object *)obj;
+ unsigned long *flags = (unsigned long *)d;
+ *flags &= ~(XDF_SECT_USE_16|XDF_SECT_USE_32|XDF_SECT_USE_64);
+ switch (bits) {
+ case 16: *flags |= XDF_SECT_USE_16; break;
+ case 32: *flags |= XDF_SECT_USE_32; break;
+ case 64: *flags |= XDF_SECT_USE_64; break;
+ };
+ yasm_arch_set_var(object->arch, "mode_bits", bits);
+ return 0;
+}
+
+static /*@observer@*/ /*@null@*/ yasm_section *
+xdf_objfmt_section_switch(yasm_object *object, yasm_valparamhead *valparams,
+ /*@unused@*/ /*@null@*/
+ yasm_valparamhead *objext_valparams,
+ unsigned long line)
+{
+ yasm_valparam *vp;
+ yasm_section *retval;
+ int isnew;
+ int flags_override = 0;
+ const char *sectname;
+ int resonly = 0;
+ xdf_section_data *xsd;
+ unsigned long align = 0;
+
+ struct xdf_section_switch_data {
+ /*@only@*/ /*@null@*/ yasm_intnum *absaddr;
+ /*@only@*/ /*@null@*/ yasm_intnum *vaddr;
+ /*@only@*/ /*@null@*/ yasm_intnum *align_intn;
+ unsigned long flags;
+ } data;
+
+ static const yasm_dir_help help[] = {
+ { "use16", 0, xdf_helper_use,
+ offsetof(struct xdf_section_switch_data, flags), 16 },
+ { "use32", 0, xdf_helper_use,
+ offsetof(struct xdf_section_switch_data, flags), 32 },
+ { "use64", 0, xdf_helper_use,
+ offsetof(struct xdf_section_switch_data, flags), 64 },
+ { "bss", 0, yasm_dir_helper_flag_or,
+ offsetof(struct xdf_section_switch_data, flags), XDF_SECT_BSS },
+ { "flat", 0, yasm_dir_helper_flag_or,
+ offsetof(struct xdf_section_switch_data, flags), XDF_SECT_FLAT },
+ { "absolute", 1, yasm_dir_helper_intn,
+ offsetof(struct xdf_section_switch_data, absaddr), 0 },
+ { "virtual", 1, yasm_dir_helper_intn,
+ offsetof(struct xdf_section_switch_data, vaddr), 0 },
+ { "align", 1, yasm_dir_helper_intn,
+ offsetof(struct xdf_section_switch_data, align_intn), 0 }
+ };
+
+ data.absaddr = NULL;
+ data.vaddr = NULL;
+ data.align_intn = NULL;
+ data.flags = 0;
+
+ vp = yasm_vps_first(valparams);
+ sectname = yasm_vp_string(vp);
+ if (!sectname)
+ return NULL;
+ vp = yasm_vps_next(vp);
+
+ flags_override = yasm_dir_helper(object, vp, line, help, NELEMS(help),
+ &data, yasm_dir_helper_valparam_warn);
+ if (flags_override < 0)
+ return NULL; /* error occurred */
+
+ if (data.absaddr)
+ data.flags |= XDF_SECT_ABSOLUTE;
+ if (data.align_intn) {
+ align = yasm_intnum_get_uint(data.align_intn);
+ yasm_intnum_destroy(data.align_intn);
+
+ /* Alignments must be a power of two. */
+ if (!is_exp2(align)) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("argument to `%s' is not a power of two"),
+ "align");
+ if (data.vaddr)
+ yasm_intnum_destroy(data.vaddr);
+ if (data.absaddr)
+ yasm_intnum_destroy(data.absaddr);
+ return NULL;
+ }
+
+ /* Check to see if alignment is supported size */
+ if (align > 4096) {
+ yasm_error_set(YASM_ERROR_VALUE,
+ N_("XDF does not support alignments > 4096"));
+ if (data.vaddr)
+ yasm_intnum_destroy(data.vaddr);
+ if (data.absaddr)
+ yasm_intnum_destroy(data.absaddr);
+ return NULL;
+ }
+ }
+
+ retval = yasm_object_get_general(object, sectname, align, 1, resonly,
+ &isnew, line);
+
+ xsd = yasm_section_get_data(retval, &xdf_section_data_cb);
+
+ if (isnew || yasm_section_is_default(retval)) {
+ yasm_section_set_default(retval, 0);
+ xsd->flags = data.flags;
+ if (data.absaddr) {
+ if (xsd->addr)
+ yasm_intnum_destroy(xsd->addr);
+ xsd->addr = data.absaddr;
+ }
+ if (data.vaddr) {
+ if (xsd->vaddr)
+ yasm_intnum_destroy(xsd->vaddr);
+ xsd->vaddr = data.vaddr;
+ }
+ yasm_section_set_align(retval, align, line);
+ } else if (flags_override)
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("section flags ignored on section redeclaration"));
+ return retval;
+}
+
+static /*@observer@*/ /*@null@*/ yasm_symrec *
+xdf_objfmt_get_special_sym(yasm_object *object, const char *name,
+ const char *parser)
+{
+ return NULL;
+}
+
+static void
+xdf_section_data_destroy(void *data)
+{
+ xdf_section_data *xsd = (xdf_section_data *)data;
+ if (xsd->addr)
+ yasm_intnum_destroy(xsd->addr);
+ if (xsd->vaddr)
+ yasm_intnum_destroy(xsd->vaddr);
+ yasm_xfree(data);
+}
+
+static void
+xdf_section_data_print(void *data, FILE *f, int indent_level)
+{
+ xdf_section_data *xsd = (xdf_section_data *)data;
+
+ fprintf(f, "%*ssym=\n", indent_level, "");
+ yasm_symrec_print(xsd->sym, f, indent_level+1);
+ fprintf(f, "%*sscnum=%ld\n", indent_level, "", xsd->scnum);
+ fprintf(f, "%*sflags=0x%x\n", indent_level, "", xsd->flags);
+ fprintf(f, "%*saddr=", indent_level, "");
+ yasm_intnum_print(xsd->addr, f);
+ fprintf(f, "%*svaddr=", indent_level, "");
+ yasm_intnum_print(xsd->vaddr, f);
+ fprintf(f, "%*sscnptr=0x%lx\n", indent_level, "", xsd->scnptr);
+ fprintf(f, "%*ssize=%ld\n", indent_level, "", xsd->size);
+ fprintf(f, "%*srelptr=0x%lx\n", indent_level, "", xsd->relptr);
+ fprintf(f, "%*snreloc=%ld\n", indent_level, "", xsd->nreloc);
+}
+
+static void
+xdf_symrec_data_destroy(void *data)
+{
+ yasm_xfree(data);
+}
+
+static void
+xdf_symrec_data_print(void *data, FILE *f, int indent_level)
+{
+ xdf_symrec_data *xsd = (xdf_symrec_data *)data;
+
+ fprintf(f, "%*ssymtab index=%lu\n", indent_level, "", xsd->index);
+}
+
+/* Define valid debug formats to use with this object format */
+static const char *xdf_objfmt_dbgfmt_keywords[] = {
+ "null",
+ NULL
+};
+
+/* Define objfmt structure -- see objfmt.h for details */
+yasm_objfmt_module yasm_xdf_LTX_objfmt = {
+ "Extended Dynamic Object",
+ "xdf",
+ "xdf",
+ 32,
+ 0,
+ xdf_objfmt_dbgfmt_keywords,
+ "null",
+ NULL, /* no directives */
+ NULL, /* no standard macros */
+ xdf_objfmt_create,
+ xdf_objfmt_output,
+ xdf_objfmt_destroy,
+ xdf_objfmt_add_default_section,
+ xdf_objfmt_init_new_section,
+ xdf_objfmt_section_switch,
+ xdf_objfmt_get_special_sym
+};
diff --git a/contrib/tools/yasm/modules/parsers/gas/gas-parse-intel.c b/contrib/tools/yasm/modules/parsers/gas/gas-parse-intel.c
index 170b0f96c2..9d412fc7d3 100644
--- a/contrib/tools/yasm/modules/parsers/gas/gas-parse-intel.c
+++ b/contrib/tools/yasm/modules/parsers/gas/gas-parse-intel.c
@@ -1,90 +1,90 @@
-/*
- * GAS-compatible parser Intel syntax support
- *
- * Copyright (C) 2010 Alexei Svitkine
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the author nor the names of other contributors
- * may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <libyasm.h>
-
-#include "modules/parsers/gas/gas-parser.h"
-#include "modules/parsers/nasm/nasm-parser-struct.h"
-
-extern yasm_bytecode *gas_intel_syntax_parse_instr(yasm_parser_nasm *parser_nasm, unsigned char *instr);
-
-#define SET_FIELDS(to, from) \
- (to)->object = (from)->object; \
- (to)->locallabel_base = (from)->locallabel_base; \
- (to)->locallabel_base_len = (from)->locallabel_base_len; \
- (to)->preproc = (from)->preproc; \
- (to)->errwarns = (from)->errwarns; \
- (to)->linemap = (from)->linemap; \
- (to)->prev_bc = (from)->prev_bc;
-
-yasm_bytecode *parse_instr_intel(yasm_parser_gas *parser_gas)
-{
- char *stok, *slim;
- unsigned char *line;
- size_t length;
-
- yasm_parser_nasm parser_nasm;
- yasm_bytecode *bc;
-
- memset(&parser_nasm, 0, sizeof(parser_nasm));
-
- yasm_arch_set_var(parser_gas->object->arch, "gas_intel_mode", 1);
- SET_FIELDS(&parser_nasm, parser_gas);
- parser_nasm.masm = 1;
-
- stok = (char *) parser_gas->s.tok;
- slim = (char *) parser_gas->s.lim;
- length = 0;
- while (&stok[length] < slim && stok[length] != '\n') {
- length++;
- }
-
- if (&stok[length] == slim && parser_gas->line) {
- line = yasm_xmalloc(length + parser_gas->lineleft + 1);
- memcpy(line, parser_gas->s.tok, length);
- memcpy(line + length, parser_gas->linepos, parser_gas->lineleft);
- length += parser_gas->lineleft;
- if (line[length - 1] == '\n') length--;
- } else {
- line = yasm_xmalloc(length + 1);
- memcpy(line, parser_gas->s.tok, length);
- }
- line[length] = '\0';
-
- bc = gas_intel_syntax_parse_instr(&parser_nasm, line);
-
- SET_FIELDS(parser_gas, &parser_nasm);
- yasm_arch_set_var(parser_gas->object->arch, "gas_intel_mode", 0);
-
- yasm_xfree(line);
-
- return bc;
-}
+/*
+ * GAS-compatible parser Intel syntax support
+ *
+ * Copyright (C) 2010 Alexei Svitkine
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the author nor the names of other contributors
+ * may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <libyasm.h>
+
+#include "modules/parsers/gas/gas-parser.h"
+#include "modules/parsers/nasm/nasm-parser-struct.h"
+
+extern yasm_bytecode *gas_intel_syntax_parse_instr(yasm_parser_nasm *parser_nasm, unsigned char *instr);
+
+#define SET_FIELDS(to, from) \
+ (to)->object = (from)->object; \
+ (to)->locallabel_base = (from)->locallabel_base; \
+ (to)->locallabel_base_len = (from)->locallabel_base_len; \
+ (to)->preproc = (from)->preproc; \
+ (to)->errwarns = (from)->errwarns; \
+ (to)->linemap = (from)->linemap; \
+ (to)->prev_bc = (from)->prev_bc;
+
+yasm_bytecode *parse_instr_intel(yasm_parser_gas *parser_gas)
+{
+ char *stok, *slim;
+ unsigned char *line;
+ size_t length;
+
+ yasm_parser_nasm parser_nasm;
+ yasm_bytecode *bc;
+
+ memset(&parser_nasm, 0, sizeof(parser_nasm));
+
+ yasm_arch_set_var(parser_gas->object->arch, "gas_intel_mode", 1);
+ SET_FIELDS(&parser_nasm, parser_gas);
+ parser_nasm.masm = 1;
+
+ stok = (char *) parser_gas->s.tok;
+ slim = (char *) parser_gas->s.lim;
+ length = 0;
+ while (&stok[length] < slim && stok[length] != '\n') {
+ length++;
+ }
+
+ if (&stok[length] == slim && parser_gas->line) {
+ line = yasm_xmalloc(length + parser_gas->lineleft + 1);
+ memcpy(line, parser_gas->s.tok, length);
+ memcpy(line + length, parser_gas->linepos, parser_gas->lineleft);
+ length += parser_gas->lineleft;
+ if (line[length - 1] == '\n') length--;
+ } else {
+ line = yasm_xmalloc(length + 1);
+ memcpy(line, parser_gas->s.tok, length);
+ }
+ line[length] = '\0';
+
+ bc = gas_intel_syntax_parse_instr(&parser_nasm, line);
+
+ SET_FIELDS(parser_gas, &parser_nasm);
+ yasm_arch_set_var(parser_gas->object->arch, "gas_intel_mode", 0);
+
+ yasm_xfree(line);
+
+ return bc;
+}
diff --git a/contrib/tools/yasm/modules/parsers/gas/gas-parse.c b/contrib/tools/yasm/modules/parsers/gas/gas-parse.c
index 5331c3ff66..14c86a70f4 100644
--- a/contrib/tools/yasm/modules/parsers/gas/gas-parse.c
+++ b/contrib/tools/yasm/modules/parsers/gas/gas-parse.c
@@ -1,1766 +1,1766 @@
-/*
- * GAS-compatible parser
- *
- * Copyright (C) 2005-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the author nor the names of other contributors
- * may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <libyasm.h>
-
-#include <ctype.h>
-#include <limits.h>
-#include <math.h>
-
-#include "modules/parsers/gas/gas-parser.h"
-
-typedef struct dir_lookup {
- const char *name;
- yasm_bytecode * (*handler) (yasm_parser_gas *, unsigned int);
- unsigned int param;
- enum gas_parser_state newstate;
-} dir_lookup;
-
-static void cpp_line_marker(yasm_parser_gas *parser_gas);
-static void nasm_line_marker(yasm_parser_gas *parser_gas);
-static yasm_bytecode *parse_instr(yasm_parser_gas *parser_gas);
-static int parse_dirvals(yasm_parser_gas *parser_gas, yasm_valparamhead *vps);
-static int parse_datavals(yasm_parser_gas *parser_gas, yasm_datavalhead *dvs);
-static int parse_strvals(yasm_parser_gas *parser_gas, yasm_datavalhead *dvs);
-static yasm_effaddr *parse_memaddr(yasm_parser_gas *parser_gas);
-static yasm_insn_operand *parse_operand(yasm_parser_gas *parser_gas);
-static yasm_expr *parse_expr(yasm_parser_gas *parser_gas);
-static yasm_expr *parse_expr0(yasm_parser_gas *parser_gas);
-static yasm_expr *parse_expr1(yasm_parser_gas *parser_gas);
-static yasm_expr *parse_expr2(yasm_parser_gas *parser_gas);
-
-static void define_label(yasm_parser_gas *parser_gas, char *name, int local);
-static void define_lcomm(yasm_parser_gas *parser_gas, /*@only@*/ char *name,
- yasm_expr *size, /*@null@*/ yasm_expr *align);
-static yasm_section *gas_get_section
- (yasm_parser_gas *parser_gas, /*@only@*/ char *name, /*@null@*/ char *flags,
- /*@null@*/ char *type, /*@null@*/ yasm_valparamhead *objext_valparams,
- int builtin);
-static void gas_switch_section
- (yasm_parser_gas *parser_gas, /*@only@*/ const char *name,
- /*@null@*/ char *flags, /*@null@*/ char *type,
- /*@null@*/ yasm_valparamhead *objext_valparams, int builtin);
-static yasm_bytecode *gas_parser_align
- (yasm_parser_gas *parser_gas, yasm_section *sect, yasm_expr *boundval,
- /*@null@*/ yasm_expr *fillval, /*@null@*/ yasm_expr *maxskipval,
- int power2);
-static yasm_bytecode *gas_parser_dir_fill
- (yasm_parser_gas *parser_gas, /*@only@*/ yasm_expr *repeat,
- /*@only@*/ /*@null@*/ yasm_expr *size,
- /*@only@*/ /*@null@*/ yasm_expr *value);
-
-#define is_eol_tok(tok) ((tok) == '\n' || (tok) == ';' || (tok) == 0)
-#define is_eol() is_eol_tok(curtok)
-
-#define get_next_token() (curtok = gas_parser_lex(&curval, parser_gas))
-
-static void
-get_peek_token(yasm_parser_gas *parser_gas)
-{
- char savech = parser_gas->tokch;
- if (parser_gas->peek_token != NONE)
- yasm_internal_error(N_("can only have one token of lookahead"));
- parser_gas->peek_token =
- gas_parser_lex(&parser_gas->peek_tokval, parser_gas);
- parser_gas->peek_tokch = parser_gas->tokch;
- parser_gas->tokch = savech;
-}
-
-static void
-destroy_curtok_(yasm_parser_gas *parser_gas)
-{
- if (curtok < 256)
- ;
- else switch ((enum tokentype)curtok) {
- case INTNUM:
- yasm_intnum_destroy(curval.intn);
- break;
- case FLTNUM:
- yasm_floatnum_destroy(curval.flt);
- break;
- case ID:
- case LABEL:
- case STRING:
- yasm_xfree(curval.str.contents);
- break;
- default:
- break;
- }
- curtok = NONE; /* sanity */
-}
-#define destroy_curtok() destroy_curtok_(parser_gas)
-
-/* Eat all remaining tokens to EOL, discarding all of them. If there's any
- * intervening tokens, generates an error (junk at end of line).
- */
-static void
-demand_eol_(yasm_parser_gas *parser_gas)
-{
- if (is_eol())
- return;
-
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("junk at end of line, first unrecognized character is `%c'"),
- parser_gas->tokch);
-
- do {
- destroy_curtok();
- get_next_token();
- } while (!is_eol());
-}
-#define demand_eol() demand_eol_(parser_gas)
-
-static int
-expect_(yasm_parser_gas *parser_gas, int token)
-{
- static char strch[] = "` '";
- const char *str;
-
- if (curtok == token)
- return 1;
-
- switch (token) {
- case INTNUM: str = "integer"; break;
- case FLTNUM: str = "floating point value"; break;
- case STRING: str = "string"; break;
- case REG: str = "register"; break;
- case REGGROUP: str = "register group"; break;
- case SEGREG: str = "segment register"; break;
- case TARGETMOD: str = "target modifier"; break;
- case LEFT_OP: str = "<<"; break;
- case RIGHT_OP: str = ">>"; break;
- case ID: str = "identifier"; break;
- case LABEL: str = "label"; break;
- default:
- strch[1] = token;
- str = strch;
- break;
- }
- yasm_error_set(YASM_ERROR_PARSE, "expected %s", str);
- destroy_curtok();
- return 0;
-}
-#define expect(token) expect_(parser_gas, token)
-
-static yasm_bytecode *
-parse_line(yasm_parser_gas *parser_gas)
-{
- yasm_bytecode *bc;
- yasm_expr *e;
- yasm_valparamhead vps;
- char *id;
- const dir_lookup *dir;
-
- if (is_eol())
- return NULL;
-
- bc = parse_instr(parser_gas);
- if (bc)
- return bc;
-
- switch (curtok) {
- case ID:
- id = ID_val;
-
- /* See if it's a gas-specific directive */
- dir = (const dir_lookup *)HAMT_search(parser_gas->dirs, id);
- if (dir) {
- parser_gas->state = dir->newstate;
- get_next_token(); /* ID */
- return dir->handler(parser_gas, dir->param);
- }
-
- get_next_token(); /* ID */
- if (curtok == ':') {
- /* Label */
- parser_gas->state = INITIAL;
- get_next_token(); /* : */
- define_label(parser_gas, id, 0);
- return parse_line(parser_gas);
- } else if (curtok == '=') {
- /* EQU */
- /* TODO: allow redefinition, assigning to . (same as .org) */
- parser_gas->state = INITIAL;
- get_next_token(); /* = */
- e = parse_expr(parser_gas);
- if (e)
- yasm_symtab_define_equ(p_symtab, id, e, cur_line);
- else
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("expression expected after `%s'"), "=");
- yasm_xfree(id);
- return NULL;
- }
-
- /* possibly a directive; try to parse it */
- parse_dirvals(parser_gas, &vps);
- if (!yasm_object_directive(p_object, id, "gas", &vps, NULL,
- cur_line)) {
- yasm_vps_delete(&vps);
- yasm_xfree(id);
- return NULL;
- }
- yasm_vps_delete(&vps);
- if (id[0] == '.')
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("directive `%s' not recognized"), id);
- else
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("instruction not recognized: `%s'"), id);
- yasm_xfree(id);
- return NULL;
- case LABEL:
- define_label(parser_gas, LABEL_val, 0);
- get_next_token(); /* LABEL */
- return parse_line(parser_gas);
- case CPP_LINE_MARKER:
- get_next_token();
- cpp_line_marker(parser_gas);
- return NULL;
- case NASM_LINE_MARKER:
- get_next_token();
- nasm_line_marker(parser_gas);
- return NULL;
- default:
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("label or instruction expected at start of line"));
- return NULL;
- }
-}
-
-/*
- Handle line markers generated by cpp.
-
- We expect a positive integer (line) followed by a string (filename). If we
- fail to find either of these, we treat the line as a comment. There is a
- possibility of false positives (mistaking a comment for a line marker, when
- the comment is not intended as a line marker) but this cannot be avoided
- without adding a filter to the input before passing it to cpp.
-
- This function is only called if the preprocessor was 'cpp', since the
- CPP_LINE_MARKER token isn't generated for any other preprocessor. With any
- other preprocessor, anything after a '#' is always treated as a comment.
-*/
-static void
-cpp_line_marker(yasm_parser_gas *parser_gas)
-{
- yasm_valparamhead vps;
- yasm_valparam *vp;
- unsigned long line;
- char *filename;
-
- /* Line number. */
- if (curtok != INTNUM) {
- /* Skip over a comment. */
- while (curtok != '\n')
- get_next_token();
-
- return;
- }
-
- if (yasm_intnum_sign(INTNUM_val) < 0) {
- get_next_token(); /* INTNUM */
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("line number is negative"));
- return;
- }
-
- line = yasm_intnum_get_uint(INTNUM_val);
-
- /*
- Set to (line - 1) since the directive indicates that the *next* line
- will have the number given.
-
- cpp should never produce line=0, but the if keeps us safe just incase.
- */
- if (line != 0)
- line--;
-
- yasm_intnum_destroy(INTNUM_val);
- get_next_token(); /* INTNUM */
-
- /* File name, in quotes. */
- if (curtok != STRING) {
- /* Skip over a comment. */
- while (curtok != '\n')
- get_next_token();
-
- return;
- }
-
- filename = STRING_val.contents;
- get_next_token();
-
- /* Set linemap. */
- yasm_linemap_set(parser_gas->linemap, filename, 0, line, 1);
-
- /*
- The first line marker in the file (which should be on the first line
- of the file) will give us the name of the source file. This information
- needs to be passed on to the debug format module.
- */
- if (parser_gas->seen_line_marker == 0) {
- parser_gas->seen_line_marker = 1;
-
- yasm_vps_initialize(&vps);
- vp = yasm_vp_create_string(NULL, filename);
- yasm_vps_append(&vps, vp);
-
- yasm_object_directive(p_object, ".file", "gas", &vps, NULL, cur_line);
-
- yasm_vps_delete(&vps);
- } else
- yasm_xfree(filename);
-
- /* Skip flags. */
- while (1) {
- switch (curtok) {
- case INTNUM:
- break;
-
- case '\n':
- return;
-
- default:
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("junk at end of cpp line marker"));
- return;
- }
- get_next_token();
- }
-}
-
-/*
- Handle line markers generated by the nasm preproc.
-
- We expect a positive integer (line) followed by a plus sign, followed by
- another positive integer, followed by a string (filename).
-
- This function is only called if the preprocessor was 'nasm', since the
- NASM_LINE_MARKER token isn't generated for any other preprocessor.
-*/
-static void
-nasm_line_marker(yasm_parser_gas *parser_gas)
-{
- yasm_valparamhead vps;
- yasm_valparam *vp;
- unsigned long line, incr;
- char *filename;
-
- /* Line number. */
- if (!expect(INTNUM)) return;
-
- if (yasm_intnum_sign(INTNUM_val) < 0) {
- get_next_token(); /* INTNUM */
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("line number is negative"));
- return;
- }
-
- line = yasm_intnum_get_uint(INTNUM_val);
-
- /*
- Set to (line - 1) since the directive indicates that the *next* line
- will have the number given.
-
- cpp should never produce line=0, but the if keeps us safe just incase.
- */
- if (line != 0)
- line--;
-
- yasm_intnum_destroy(INTNUM_val);
- get_next_token(); /* INTNUM */
-
- if (!expect('+')) return;
- get_next_token(); /* + */
-
- /* Line number increment. */
- if (!expect(INTNUM)) return;
-
- if (yasm_intnum_sign(INTNUM_val) < 0) {
- get_next_token(); /* INTNUM */
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("line increment is negative"));
- return;
- }
-
- incr = yasm_intnum_get_uint(INTNUM_val);
- yasm_intnum_destroy(INTNUM_val);
-
- /* File name is not in quotes, so need to switch to a different tokenizer
- * state.
- */
- parser_gas->state = NASM_FILENAME;
- get_next_token(); /* INTNUM */
- if (!expect(STRING)) {
- parser_gas->state = INITIAL;
- return;
- }
-
- filename = STRING_val.contents;
-
- /* Set linemap. */
- yasm_linemap_set(parser_gas->linemap, filename, 0, line, incr);
-
- /*
- The first line marker in the file (which should be on the first line
- of the file) will give us the name of the source file. This information
- needs to be passed on to the debug format module.
- */
- if (parser_gas->seen_line_marker == 0) {
- parser_gas->seen_line_marker = 1;
-
- yasm_vps_initialize(&vps);
- vp = yasm_vp_create_string(NULL, filename);
- yasm_vps_append(&vps, vp);
-
- yasm_object_directive(p_object, ".file", "gas", &vps, NULL, cur_line);
-
- yasm_vps_delete(&vps);
- } else
- yasm_xfree(filename);
-
- /* We need to poke back on the \n that was consumed by the tokenizer */
- parser_gas->peek_token = '\n';
- get_next_token();
-}
-
-/* Line directive */
-static yasm_bytecode *
-dir_line(yasm_parser_gas *parser_gas, unsigned int param)
-{
- if (!expect(INTNUM)) return NULL;
- if (yasm_intnum_sign(INTNUM_val) < 0) {
- get_next_token(); /* INTNUM */
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("line number is negative"));
- return NULL;
- }
-
- parser_gas->dir_line = yasm_intnum_get_uint(INTNUM_val);
- yasm_intnum_destroy(INTNUM_val);
- get_next_token(); /* INTNUM */
-
- if (parser_gas->dir_fileline == 3) {
- /* Have both file and line */
- yasm_linemap_set(parser_gas->linemap, NULL, 0,
- parser_gas->dir_line, 1);
- } else if (parser_gas->dir_fileline == 1) {
- /* Had previous file directive only */
- parser_gas->dir_fileline = 3;
- yasm_linemap_set(parser_gas->linemap, parser_gas->dir_file, 0,
- parser_gas->dir_line, 1);
- } else {
- /* Didn't see file yet */
- parser_gas->dir_fileline = 2;
- }
- return NULL;
-}
-
-/* Alignment directives */
-
-static yasm_bytecode *
-dir_align(yasm_parser_gas *parser_gas, unsigned int param)
-{
- yasm_expr *bound, *fill=NULL, *maxskip=NULL;
-
- bound = parse_expr(parser_gas);
- if (!bound) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_(".align directive must specify alignment"));
- return NULL;
- }
-
- if (curtok == ',') {
- get_next_token(); /* ',' */
- fill = parse_expr(parser_gas);
- if (curtok == ',') {
- get_next_token(); /* ',' */
- maxskip = parse_expr(parser_gas);
- }
- }
-
- return gas_parser_align(parser_gas, cursect, bound, fill, maxskip,
- (int)param);
-}
-
-static yasm_bytecode *
-dir_org(yasm_parser_gas *parser_gas, unsigned int param)
-{
- yasm_intnum *start, *value=NULL;
- yasm_bytecode *bc;
-
- /* TODO: support expr instead of intnum */
- if (!expect(INTNUM)) return NULL;
- start = INTNUM_val;
- get_next_token(); /* INTNUM */
-
- if (curtok == ',') {
- get_next_token(); /* ',' */
- /* TODO: support expr instead of intnum */
- if (!expect(INTNUM)) return NULL;
- value = INTNUM_val;
- get_next_token(); /* INTNUM */
- }
- if (value) {
- bc = yasm_bc_create_org(yasm_intnum_get_uint(start),
- yasm_intnum_get_uint(value), cur_line);
- yasm_intnum_destroy(value);
- } else
- bc = yasm_bc_create_org(yasm_intnum_get_uint(start), 0,
- cur_line);
- yasm_intnum_destroy(start);
- return bc;
-}
-
-/* Data visibility directives */
-
-static yasm_bytecode *
-dir_local(yasm_parser_gas *parser_gas, unsigned int param)
-{
- if (!expect(ID)) return NULL;
- yasm_symtab_declare(p_symtab, ID_val, YASM_SYM_DLOCAL, cur_line);
- yasm_xfree(ID_val);
- get_next_token(); /* ID */
- return NULL;
-}
-
-static yasm_bytecode *
-dir_comm(yasm_parser_gas *parser_gas, unsigned int is_lcomm)
-{
- yasm_expr *align = NULL;
- /*@null@*/ /*@dependent@*/ yasm_symrec *sym;
- char *id;
- yasm_expr *e;
-
- if (!expect(ID)) return NULL;
- id = ID_val;
- get_next_token(); /* ID */
- if (!expect(',')) {
- yasm_xfree(id);
- return NULL;
- }
- get_next_token(); /* , */
- e = parse_expr(parser_gas);
- if (!e) {
- yasm_error_set(YASM_ERROR_SYNTAX, N_("size expected for `%s'"),
- ".COMM");
- return NULL;
- }
- if (curtok == ',') {
- /* Optional alignment expression */
- get_next_token(); /* ',' */
- align = parse_expr(parser_gas);
- }
- /* If already explicitly declared local, treat like LCOMM */
- if (is_lcomm
- || ((sym = yasm_symtab_get(p_symtab, id))
- && yasm_symrec_get_visibility(sym) == YASM_SYM_DLOCAL)) {
- define_lcomm(parser_gas, id, e, align);
- } else if (align) {
- /* Give third parameter as objext valparam */
- yasm_valparamhead *extvps = yasm_vps_create();
- yasm_valparam *vp = yasm_vp_create_expr(NULL, align);
- yasm_vps_append(extvps, vp);
-
- sym = yasm_symtab_declare(p_symtab, id, YASM_SYM_COMMON,
- cur_line);
- yasm_symrec_set_common_size(sym, e);
- yasm_symrec_set_objext_valparams(sym, extvps);
-
- yasm_xfree(id);
- } else {
- sym = yasm_symtab_declare(p_symtab, id, YASM_SYM_COMMON,
- cur_line);
- yasm_symrec_set_common_size(sym, e);
- yasm_xfree(id);
- }
- return NULL;
-}
-
-/* Integer data definition directives */
-
-static yasm_bytecode *
-dir_ascii(yasm_parser_gas *parser_gas, unsigned int withzero)
-{
- yasm_datavalhead dvs;
- if (!parse_strvals(parser_gas, &dvs))
- return NULL;
- return yasm_bc_create_data(&dvs, 1, (int)withzero, p_object->arch,
- cur_line);
-}
-
-static yasm_bytecode *
-dir_data(yasm_parser_gas *parser_gas, unsigned int size)
-{
- yasm_datavalhead dvs;
- if (!parse_datavals(parser_gas, &dvs))
- return NULL;
- return yasm_bc_create_data(&dvs, size, 0, p_object->arch, cur_line);
-}
-
-static yasm_bytecode *
-dir_leb128(yasm_parser_gas *parser_gas, unsigned int sign)
-{
- yasm_datavalhead dvs;
- if (!parse_datavals(parser_gas, &dvs))
- return NULL;
- return yasm_bc_create_leb128(&dvs, (int)sign, cur_line);
-}
-
-/* Empty space / fill data definition directives */
-
-static yasm_bytecode *
-dir_zero(yasm_parser_gas *parser_gas, unsigned int param)
-{
- yasm_bytecode *bc;
- yasm_datavalhead dvs;
- yasm_expr *e = parse_expr(parser_gas);
- if (!e) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("expression expected after `%s'"), ".ZERO");
- return NULL;
- }
-
- yasm_dvs_initialize(&dvs);
- yasm_dvs_append(&dvs, yasm_dv_create_expr(
- p_expr_new_ident(yasm_expr_int(yasm_intnum_create_uint(0)))));
- bc = yasm_bc_create_data(&dvs, 1, 0, p_object->arch, cur_line);
- yasm_bc_set_multiple(bc, e);
- return bc;
-}
-
-static yasm_bytecode *
-dir_skip(yasm_parser_gas *parser_gas, unsigned int param)
-{
- yasm_expr *e, *e_val;
- yasm_bytecode *bc;
- yasm_datavalhead dvs;
-
- e = parse_expr(parser_gas);
- if (!e) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("expression expected after `%s'"), ".SKIP");
- return NULL;
- }
- if (curtok != ',')
- return yasm_bc_create_reserve(e, 1, cur_line);
- get_next_token(); /* ',' */
- e_val = parse_expr(parser_gas);
- yasm_dvs_initialize(&dvs);
- yasm_dvs_append(&dvs, yasm_dv_create_expr(e_val));
- bc = yasm_bc_create_data(&dvs, 1, 0, p_object->arch, cur_line);
-
- yasm_bc_set_multiple(bc, e);
- return bc;
-}
-
-/* fill data definition directive */
-static yasm_bytecode *
-dir_fill(yasm_parser_gas *parser_gas, unsigned int param)
-{
- yasm_expr *sz=NULL, *val=NULL;
- yasm_expr *e = parse_expr(parser_gas);
- if (!e) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("expression expected after `%s'"), ".FILL");
- return NULL;
- }
- if (curtok == ',') {
- get_next_token(); /* ',' */
- sz = parse_expr(parser_gas);
- if (curtok == ',') {
- get_next_token(); /* ',' */
- val = parse_expr(parser_gas);
- }
- }
- return gas_parser_dir_fill(parser_gas, e, sz, val);
-}
-
-/* Section directives */
-
-static yasm_bytecode *
-dir_bss_section(yasm_parser_gas *parser_gas, unsigned int param)
-{
- gas_switch_section(parser_gas, ".bss", NULL, NULL, NULL, 1);
- return NULL;
-}
-
-static yasm_bytecode *
-dir_data_section(yasm_parser_gas *parser_gas, unsigned int param)
-{
- gas_switch_section(parser_gas, ".data", NULL, NULL, NULL, 1);
- return NULL;
-}
-
-static yasm_bytecode *
-dir_text_section(yasm_parser_gas *parser_gas, unsigned int param)
-{
- gas_switch_section(parser_gas, ".text", NULL, NULL, NULL, 1);
- return NULL;
-}
-
-static yasm_bytecode *
-dir_section(yasm_parser_gas *parser_gas, unsigned int param)
-{
- /* DIR_SECTION ID ',' STRING ',' '@' ID ',' dirvals */
- char *sectname, *flags = NULL, *type = NULL;
- yasm_valparamhead vps;
- int have_vps = 0;
-
- if (!expect(ID)) return NULL;
- sectname = ID_val;
- get_next_token(); /* ID */
-
- if (curtok == ',') {
- get_next_token(); /* ',' */
- if (!expect(STRING)) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("flag string expected"));
- yasm_xfree(sectname);
- return NULL;
- }
- flags = STRING_val.contents;
- get_next_token(); /* STRING */
- }
-
- if (curtok == ',') {
- get_next_token(); /* ',' */
- if (!expect('@')) {
- yasm_xfree(sectname);
- yasm_xfree(flags);
- return NULL;
- }
- get_next_token(); /* '@' */
- if (!expect(ID)) {
- yasm_xfree(sectname);
- yasm_xfree(flags);
- return NULL;
- }
- type = ID_val;
- get_next_token(); /* ID */
- }
-
- if (curtok == ',') {
- get_next_token(); /* ',' */
- if (parse_dirvals(parser_gas, &vps))
- have_vps = 1;
- }
-
- gas_switch_section(parser_gas, sectname, flags, type,
- have_vps ? &vps : NULL, 0);
- yasm_xfree(sectname);
- yasm_xfree(flags);
- return NULL;
-}
-
-/* Other directives */
-
-static yasm_bytecode *
-dir_equ(yasm_parser_gas *parser_gas, unsigned int param)
-{
- yasm_expr *e;
- char *id;
-
- /* ID ',' expr */
- if (!expect(ID)) return NULL;
- id = ID_val;
- get_next_token(); /* ID */
- if (!expect(',')) {
- yasm_xfree(id);
- return NULL;
- }
- get_next_token(); /* ',' */
- e = parse_expr(parser_gas);
- if (e)
- yasm_symtab_define_equ(p_symtab, id, e, cur_line);
- else
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("expression expected after `%s'"), ",");
- yasm_xfree(id);
- return NULL;
-}
-
-static yasm_bytecode *
-dir_file(yasm_parser_gas *parser_gas, unsigned int param)
-{
- yasm_valparamhead vps;
- yasm_valparam *vp;
-
- if (curtok == STRING) {
- /* No file number; this form also sets the assembler's
- * internal line number.
- */
- char *filename = STRING_val.contents;
-
- get_next_token(); /* STRING */
- if (parser_gas->dir_fileline == 3) {
- /* Have both file and line */
- const char *old_fn;
- unsigned long old_line;
-
- yasm_linemap_lookup(parser_gas->linemap, cur_line, &old_fn,
- &old_line);
- yasm_linemap_set(parser_gas->linemap, filename, 0, old_line,
- 1);
- } else if (parser_gas->dir_fileline == 2) {
- /* Had previous line directive only */
- parser_gas->dir_fileline = 3;
- yasm_linemap_set(parser_gas->linemap, filename, 0,
- parser_gas->dir_line, 1);
- } else {
- /* Didn't see line yet, save file */
- parser_gas->dir_fileline = 1;
- if (parser_gas->dir_file)
- yasm_xfree(parser_gas->dir_file);
- parser_gas->dir_file = yasm__xstrdup(filename);
- }
-
- /* Pass change along to debug format */
- yasm_vps_initialize(&vps);
- vp = yasm_vp_create_string(NULL, filename);
- yasm_vps_append(&vps, vp);
-
- yasm_object_directive(p_object, ".file", "gas", &vps, NULL,
- cur_line);
-
- yasm_vps_delete(&vps);
- return NULL;
- }
-
- /* fileno filename form */
- yasm_vps_initialize(&vps);
-
- if (!expect(INTNUM)) return NULL;
- vp = yasm_vp_create_expr(NULL,
- p_expr_new_ident(yasm_expr_int(INTNUM_val)));
- yasm_vps_append(&vps, vp);
- get_next_token(); /* INTNUM */
-
- if (!expect(STRING)) {
- yasm_vps_delete(&vps);
- return NULL;
- }
- vp = yasm_vp_create_string(NULL, STRING_val.contents);
- yasm_vps_append(&vps, vp);
- get_next_token(); /* STRING */
-
- yasm_object_directive(p_object, ".file", "gas", &vps, NULL,
- cur_line);
-
- yasm_vps_delete(&vps);
- return NULL;
-}
-
-
-static yasm_bytecode *
-dir_intel_syntax(yasm_parser_gas *parser_gas, unsigned int param)
-{
- parser_gas->intel_syntax = 1;
-
- do {
- destroy_curtok();
- get_next_token();
- } while (!is_eol());
- return NULL;
-}
-
-static yasm_bytecode *
-dir_att_syntax(yasm_parser_gas *parser_gas, unsigned int param)
-{
- parser_gas->intel_syntax = 0;
- return NULL;
-}
-
-static yasm_bytecode *
-parse_instr(yasm_parser_gas *parser_gas)
-{
- yasm_bytecode *bc;
- char *id;
- uintptr_t prefix;
-
- if (parser_gas->intel_syntax) {
- bc = parse_instr_intel(parser_gas);
- if (bc) {
- yasm_warn_disable(YASM_WARN_UNREC_CHAR);
- do {
- destroy_curtok();
- get_next_token();
- } while (!is_eol());
- yasm_warn_enable(YASM_WARN_UNREC_CHAR);
- }
- return bc;
- }
-
- if (curtok != ID)
- return NULL;
-
- id = ID_val;
-
- /* instructions/prefixes must start with a letter */
- if (!isalpha(id[0]))
- return NULL;
-
- /* check to be sure it's not a label or equ */
- get_peek_token(parser_gas);
- if (parser_gas->peek_token == ':' || parser_gas->peek_token == '=')
- return NULL;
-
- switch (yasm_arch_parse_check_insnprefix
- (p_object->arch, ID_val, ID_len, cur_line, &bc, &prefix)) {
- case YASM_ARCH_INSN:
- {
- yasm_insn *insn;
-
- /* Propagate errors in case we got a warning from the arch */
- yasm_errwarn_propagate(parser_gas->errwarns, cur_line);
-
- insn = yasm_bc_get_insn(bc);
-
- yasm_xfree(id);
- get_next_token(); /* ID */
- if (is_eol())
- return bc; /* no operands */
-
- /* parse operands */
- for (;;) {
- yasm_insn_operand *op = parse_operand(parser_gas);
- if (!op) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("expression syntax error"));
- yasm_bc_destroy(bc);
- return NULL;
- }
- yasm_insn_ops_append(insn, op);
-
- if (is_eol())
- break;
- if (!expect(',')) {
- yasm_bc_destroy(bc);
- return NULL;
- }
- get_next_token();
- }
- return bc;
- }
- case YASM_ARCH_PREFIX:
- /* Propagate errors in case we got a warning from the arch */
- yasm_errwarn_propagate(parser_gas->errwarns, cur_line);
-
- yasm_xfree(id);
- get_next_token(); /* ID */
- bc = parse_instr(parser_gas);
- if (!bc)
- bc = yasm_arch_create_empty_insn(p_object->arch, cur_line);
- yasm_insn_add_prefix(yasm_bc_get_insn(bc), prefix);
- return bc;
- default:
- break;
- }
-
- /* Check for segment register used as prefix */
- switch (yasm_arch_parse_check_regtmod(p_object->arch, ID_val, ID_len,
- &prefix)) {
- case YASM_ARCH_SEGREG:
- yasm_xfree(id);
- get_next_token(); /* ID */
- bc = parse_instr(parser_gas);
- if (!bc)
- bc = yasm_arch_create_empty_insn(p_object->arch, cur_line);
- yasm_insn_add_seg_prefix(yasm_bc_get_insn(bc), prefix);
- return bc;
- default:
- return NULL;
- }
-}
-
-static int
-parse_dirvals(yasm_parser_gas *parser_gas, yasm_valparamhead *vps)
-{
- yasm_valparam *vp;
- yasm_expr *e;
- int num = 0;
-
- yasm_vps_initialize(vps);
-
- for (;;) {
- switch (curtok) {
- case ID:
- get_peek_token(parser_gas);
- switch (parser_gas->peek_token) {
- case '+': case '-':
- case '|': case '^': case '&': case '!':
- case '*': case '/': case '%': case LEFT_OP: case RIGHT_OP:
- e = parse_expr(parser_gas);
- vp = yasm_vp_create_expr(NULL, e);
- break;
- default:
- /* Just an ID */
- vp = yasm_vp_create_id(NULL, ID_val, '\0');
- get_next_token(); /* ID */
- break;
- }
- break;
- case STRING:
- vp = yasm_vp_create_string(NULL, STRING_val.contents);
- get_next_token(); /* STRING */
- break;
- case REG:
- e = p_expr_new_ident(yasm_expr_reg(REG_val));
- vp = yasm_vp_create_expr(NULL, e);
- get_next_token(); /* REG */
- break;
- case '@':
- /* XXX: is throwing it away *really* the right thing? */
- get_next_token(); /* @ */
- continue;
- default:
- e = parse_expr(parser_gas);
- if (!e)
- return num;
- vp = yasm_vp_create_expr(NULL, e);
- break;
- }
- yasm_vps_append(vps, vp);
- num++;
- if (curtok == ',')
- get_next_token(); /* ',' */
- }
- return num;
-}
-
-static int
-parse_datavals(yasm_parser_gas *parser_gas, yasm_datavalhead *dvs)
-{
- yasm_expr *e;
- yasm_dataval *dv;
- int num = 0;
-
- yasm_dvs_initialize(dvs);
-
- for (;;) {
- e = parse_expr(parser_gas);
- if (!e) {
- yasm_dvs_delete(dvs);
- yasm_dvs_initialize(dvs);
- return 0;
- }
- dv = yasm_dv_create_expr(e);
- yasm_dvs_append(dvs, dv);
- num++;
- if (curtok != ',')
- break;
- get_next_token(); /* ',' */
- }
- return num;
-}
-
-static int
-parse_strvals(yasm_parser_gas *parser_gas, yasm_datavalhead *dvs)
-{
- yasm_dataval *dv;
- int num = 0;
-
- yasm_dvs_initialize(dvs);
-
- for (;;) {
- if (!expect(STRING)) {
- yasm_dvs_delete(dvs);
- yasm_dvs_initialize(dvs);
- return 0;
- }
- dv = yasm_dv_create_string(STRING_val.contents, STRING_val.len);
- yasm_dvs_append(dvs, dv);
- get_next_token(); /* STRING */
- num++;
- if (curtok != ',')
- break;
- get_next_token(); /* ',' */
- }
- return num;
-}
-
-/* instruction operands */
-/* memory addresses */
-static yasm_effaddr *
-parse_memaddr(yasm_parser_gas *parser_gas)
-{
- yasm_effaddr *ea = NULL;
- yasm_expr *e1, *e2;
- int strong = 0;
-
- if (curtok == SEGREG) {
- uintptr_t segreg = SEGREG_val;
- get_next_token(); /* SEGREG */
- if (!expect(':')) return NULL;
- get_next_token(); /* ':' */
- ea = parse_memaddr(parser_gas);
- if (!ea)
- return NULL;
- yasm_ea_set_segreg(ea, segreg);
- return ea;
- }
-
- /* We want to parse a leading expression, except when it's actually
- * just a memory address (with no preceding expression) such as
- * (REG...) or (,...).
- */
- get_peek_token(parser_gas);
- if (curtok != '(' || (parser_gas->peek_token != REG
- && parser_gas->peek_token != ','))
- e1 = parse_expr(parser_gas);
- else
- e1 = NULL;
-
- if (curtok == '(') {
- int havereg = 0;
- uintptr_t reg = 0;
- yasm_intnum *scale = NULL;
-
- get_next_token(); /* '(' */
-
- /* base register */
- if (curtok == REG) {
- e2 = p_expr_new_ident(yasm_expr_reg(REG_val));
- get_next_token(); /* REG */
- } else
- e2 = p_expr_new_ident(yasm_expr_int(yasm_intnum_create_uint(0)));
-
- if (curtok == ')')
- goto done;
-
- if (!expect(',')) {
- yasm_error_set(YASM_ERROR_SYNTAX, N_("invalid memory expression"));
- if (e1) yasm_expr_destroy(e1);
- yasm_expr_destroy(e2);
- return NULL;
- }
- get_next_token(); /* ',' */
-
- if (curtok == ')')
- goto done;
-
- /* index register */
- if (curtok == REG) {
- reg = REG_val;
- havereg = 1;
- get_next_token(); /* REG */
- if (curtok != ',') {
- scale = yasm_intnum_create_uint(1);
- goto done;
- }
- get_next_token(); /* ',' */
- }
-
- /* scale */
- if (!expect(INTNUM)) {
- yasm_error_set(YASM_ERROR_SYNTAX, N_("non-integer scale"));
- if (e1) yasm_expr_destroy(e1);
- yasm_expr_destroy(e2);
- return NULL;
- }
- scale = INTNUM_val;
- get_next_token(); /* INTNUM */
-
-done:
- if (!expect(')')) {
- yasm_error_set(YASM_ERROR_SYNTAX, N_("invalid memory expression"));
- if (scale) yasm_intnum_destroy(scale);
- if (e1) yasm_expr_destroy(e1);
- yasm_expr_destroy(e2);
- return NULL;
- }
- get_next_token(); /* ')' */
-
- if (scale) {
- if (!havereg) {
- if (yasm_intnum_get_uint(scale) != 1)
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("scale factor of %u without an index register"),
- yasm_intnum_get_uint(scale));
- yasm_intnum_destroy(scale);
- } else
- e2 = p_expr_new(yasm_expr_expr(e2), YASM_EXPR_ADD,
- yasm_expr_expr(p_expr_new(yasm_expr_reg(reg), YASM_EXPR_MUL,
- yasm_expr_int(scale))));
- }
-
- if (e1) {
- /* Ordering is critical here to correctly detecting presence of
- * RIP in RIP-relative expressions.
- */
- e1 = p_expr_new_tree(e2, YASM_EXPR_ADD, e1);
- } else
- e1 = e2;
- strong = 1;
- }
-
- if (!e1)
- return NULL;
- ea = yasm_arch_ea_create(p_object->arch, e1);
- if (strong)
- ea->strong = 1;
- return ea;
-}
-
-static yasm_insn_operand *
-parse_operand(yasm_parser_gas *parser_gas)
-{
- yasm_effaddr *ea;
- yasm_insn_operand *op;
- uintptr_t reg;
-
- switch (curtok) {
- case REG:
- reg = REG_val;
- get_next_token(); /* REG */
- return yasm_operand_create_reg(reg);
- case SEGREG:
- /* need to see if it's really a memory address */
- get_peek_token(parser_gas);
- if (parser_gas->peek_token == ':') {
- ea = parse_memaddr(parser_gas);
- if (!ea)
- return NULL;
- return yasm_operand_create_mem(ea);
- }
- reg = SEGREG_val;
- get_next_token(); /* SEGREG */
- return yasm_operand_create_segreg(reg);
- case REGGROUP:
- {
- unsigned long regindex;
- reg = REGGROUP_val;
- get_next_token(); /* REGGROUP */
- if (curtok != '(')
- return yasm_operand_create_reg(reg);
- get_next_token(); /* '(' */
- if (!expect(INTNUM)) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("integer register index expected"));
- return NULL;
- }
- regindex = yasm_intnum_get_uint(INTNUM_val);
- get_next_token(); /* INTNUM */
- if (!expect(')')) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("missing closing parenthesis for register index"));
- return NULL;
- }
- get_next_token(); /* ')' */
- reg = yasm_arch_reggroup_get_reg(p_object->arch, reg, regindex);
- if (reg == 0) {
- yasm_error_set(YASM_ERROR_SYNTAX, N_("bad register index `%u'"),
- regindex);
- return NULL;
- }
- return yasm_operand_create_reg(reg);
- }
- case '$':
- {
- yasm_expr *e;
- get_next_token(); /* '$' */
- e = parse_expr(parser_gas);
- if (!e) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("expression missing after `%s'"), "$");
- return NULL;
- }
- return yasm_operand_create_imm(e);
- }
- case '*':
- get_next_token(); /* '*' */
- if (curtok == REG) {
- op = yasm_operand_create_reg(REG_val);
- get_next_token(); /* REG */
- } else {
- ea = parse_memaddr(parser_gas);
- if (!ea) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("expression missing after `%s'"), "*");
- return NULL;
- }
- op = yasm_operand_create_mem(ea);
- }
- op->deref = 1;
- return op;
- default:
- ea = parse_memaddr(parser_gas);
- if (!ea)
- return NULL;
- return yasm_operand_create_mem(ea);
- }
-}
-
-/* Expression grammar parsed is:
- *
- * expr : expr0 [ {+,-} expr0...]
- * expr0 : expr1 [ {|,^,&,!} expr1...]
- * expr1 : expr2 [ {*,/,%,<<,>>} expr2...]
- * expr2 : { ~,+,- } expr2
- * | (expr)
- * | symbol
- * | number
- */
-
-static yasm_expr *
-parse_expr(yasm_parser_gas *parser_gas)
-{
- yasm_expr *e, *f;
- e = parse_expr0(parser_gas);
- if (!e)
- return NULL;
-
- while (curtok == '+' || curtok == '-') {
- int op = curtok;
- get_next_token();
- f = parse_expr0(parser_gas);
- if (!f) {
- yasm_expr_destroy(e);
- return NULL;
- }
-
- switch (op) {
- case '+': e = p_expr_new_tree(e, YASM_EXPR_ADD, f); break;
- case '-': e = p_expr_new_tree(e, YASM_EXPR_SUB, f); break;
- }
- }
- return e;
-}
-
-static yasm_expr *
-parse_expr0(yasm_parser_gas *parser_gas)
-{
- yasm_expr *e, *f;
- e = parse_expr1(parser_gas);
- if (!e)
- return NULL;
-
- while (curtok == '|' || curtok == '^' || curtok == '&' || curtok == '!') {
- int op = curtok;
- get_next_token();
- f = parse_expr1(parser_gas);
- if (!f) {
- yasm_expr_destroy(e);
- return NULL;
- }
-
- switch (op) {
- case '|': e = p_expr_new_tree(e, YASM_EXPR_OR, f); break;
- case '^': e = p_expr_new_tree(e, YASM_EXPR_XOR, f); break;
- case '&': e = p_expr_new_tree(e, YASM_EXPR_AND, f); break;
- case '!': e = p_expr_new_tree(e, YASM_EXPR_NOR, f); break;
- }
- }
- return e;
-}
-
-static yasm_expr *
-parse_expr1(yasm_parser_gas *parser_gas)
-{
- yasm_expr *e, *f;
- e = parse_expr2(parser_gas);
- if (!e)
- return NULL;
-
- while (curtok == '*' || curtok == '/' || curtok == '%' || curtok == LEFT_OP
- || curtok == RIGHT_OP) {
- int op = curtok;
- get_next_token();
- f = parse_expr2(parser_gas);
- if (!f) {
- yasm_expr_destroy(e);
- return NULL;
- }
-
- switch (op) {
- case '*': e = p_expr_new_tree(e, YASM_EXPR_MUL, f); break;
- case '/': e = p_expr_new_tree(e, YASM_EXPR_DIV, f); break;
- case '%': e = p_expr_new_tree(e, YASM_EXPR_MOD, f); break;
- case LEFT_OP: e = p_expr_new_tree(e, YASM_EXPR_SHL, f); break;
- case RIGHT_OP: e = p_expr_new_tree(e, YASM_EXPR_SHR, f); break;
- }
- }
- return e;
-}
-
-static yasm_expr *
-parse_expr2(yasm_parser_gas *parser_gas)
-{
- yasm_expr *e;
- yasm_symrec *sym;
-
- switch (curtok) {
- case '+':
- get_next_token();
- return parse_expr2(parser_gas);
- case '-':
- get_next_token();
- e = parse_expr2(parser_gas);
- if (!e)
- return NULL;
- return p_expr_new_branch(YASM_EXPR_NEG, e);
- case '~':
- get_next_token();
- e = parse_expr2(parser_gas);
- if (!e)
- return NULL;
- return p_expr_new_branch(YASM_EXPR_NOT, e);
- case '(':
- get_next_token();
- e = parse_expr(parser_gas);
- if (!e)
- return NULL;
- if (!expect(')')) {
- yasm_error_set(YASM_ERROR_SYNTAX, N_("missing parenthesis"));
- return NULL;
- }
- get_next_token();
- return e;
- case INTNUM:
- e = p_expr_new_ident(yasm_expr_int(INTNUM_val));
- get_next_token();
- return e;
- case FLTNUM:
- e = p_expr_new_ident(yasm_expr_float(FLTNUM_val));
- get_next_token();
- return e;
- case ID:
- {
- char *name = ID_val;
- get_next_token(); /* ID */
-
- /* "." references the current assembly position */
- if (name[1] == '\0' && name[0] == '.')
- sym = yasm_symtab_define_curpos(p_symtab, ".",
- parser_gas->prev_bc, cur_line);
- else
- sym = yasm_symtab_use(p_symtab, name, cur_line);
- yasm_xfree(name);
-
- if (curtok == '@') {
- yasm_symrec *wrt;
- /* TODO: this is needed for shared objects, e.g. sym@PLT */
- get_next_token(); /* '@' */
- if (!expect(ID)) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("expected identifier after `@'"));
- return NULL;
- }
- wrt = yasm_objfmt_get_special_sym(p_object, ID_val, "gas");
- yasm_xfree(ID_val);
- get_next_token(); /* ID */
- if (!wrt) {
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("unrecognized identifier after `@'"));
- return p_expr_new_ident(yasm_expr_sym(sym));
- }
- return p_expr_new(yasm_expr_sym(sym), YASM_EXPR_WRT,
- yasm_expr_sym(wrt));
- }
-
- return p_expr_new_ident(yasm_expr_sym(sym));
- }
- default:
- return NULL;
- }
-}
-
-static void
-define_label(yasm_parser_gas *parser_gas, char *name, int local)
-{
- if (!local) {
- if (parser_gas->locallabel_base)
- yasm_xfree(parser_gas->locallabel_base);
- parser_gas->locallabel_base_len = strlen(name);
- parser_gas->locallabel_base =
- yasm_xmalloc(parser_gas->locallabel_base_len+1);
- strcpy(parser_gas->locallabel_base, name);
- }
-
- yasm_symtab_define_label(p_symtab, name, parser_gas->prev_bc, 1,
- cur_line);
- yasm_xfree(name);
-}
-
-static void
-define_lcomm(yasm_parser_gas *parser_gas, /*@only@*/ char *name,
- yasm_expr *size, /*@null@*/ yasm_expr *align)
-{
- /* Put into .bss section. */
- /*@dependent@*/ yasm_section *bss =
- gas_get_section(parser_gas, yasm__xstrdup(".bss"), NULL, NULL, NULL, 1);
-
- if (align) {
- /* XXX: assume alignment is in bytes, not power-of-two */
- yasm_section_bcs_append(bss, gas_parser_align(parser_gas, bss, align,
- NULL, NULL, 0));
- }
-
- yasm_symtab_define_label(p_symtab, name, yasm_section_bcs_last(bss), 1,
- cur_line);
- yasm_section_bcs_append(bss, yasm_bc_create_reserve(size, 1, cur_line));
- yasm_xfree(name);
-}
-
-static yasm_section *
-gas_get_section(yasm_parser_gas *parser_gas, char *name,
- /*@null@*/ char *flags, /*@null@*/ char *type,
- /*@null@*/ yasm_valparamhead *objext_valparams,
- int builtin)
-{
- yasm_valparamhead vps;
- yasm_valparam *vp;
- char *gasflags;
- yasm_section *new_section;
-
- yasm_vps_initialize(&vps);
- vp = yasm_vp_create_id(NULL, name, '\0');
- yasm_vps_append(&vps, vp);
-
- if (!builtin) {
- if (flags)
- gasflags = yasm__xstrdup(flags);
- else
- gasflags = yasm__xstrdup("");
- vp = yasm_vp_create_string(yasm__xstrdup("gasflags"), gasflags);
- yasm_vps_append(&vps, vp);
- if (type) {
- vp = yasm_vp_create_id(NULL, type, '\0');
- yasm_vps_append(&vps, vp);
- }
- }
-
- new_section = yasm_objfmt_section_switch(p_object, &vps, objext_valparams,
- cur_line);
-
- yasm_vps_delete(&vps);
- return new_section;
-}
-
-static void
-gas_switch_section(yasm_parser_gas *parser_gas, const char *name,
- /*@null@*/ char *flags, /*@null@*/ char *type,
- /*@null@*/ yasm_valparamhead *objext_valparams,
- int builtin)
-{
- yasm_section *new_section;
-
- new_section = gas_get_section(parser_gas, yasm__xstrdup(name), flags, type,
- objext_valparams, builtin);
- if (new_section) {
- cursect = new_section;
- parser_gas->prev_bc = yasm_section_bcs_last(new_section);
- } else
- yasm_error_set(YASM_ERROR_GENERAL, N_("invalid section name `%s'"),
- name);
-
- if (objext_valparams)
- yasm_vps_delete(objext_valparams);
-}
-
-static yasm_bytecode *
-gas_parser_align(yasm_parser_gas *parser_gas, yasm_section *sect,
- yasm_expr *boundval, /*@null@*/ yasm_expr *fillval,
- /*@null@*/ yasm_expr *maxskipval, int power2)
-{
- yasm_intnum *boundintn;
-
- /* Convert power of two to number of bytes if necessary */
- if (power2)
- boundval = yasm_expr_create(YASM_EXPR_SHL,
- yasm_expr_int(yasm_intnum_create_uint(1)),
- yasm_expr_expr(boundval), cur_line);
-
- /* Largest .align in the section specifies section alignment. */
- boundintn = yasm_expr_get_intnum(&boundval, 0);
- if (boundintn) {
- unsigned long boundint = yasm_intnum_get_uint(boundintn);
-
- /* Alignments must be a power of two. */
- if (is_exp2(boundint)) {
- if (boundint > yasm_section_get_align(sect))
- yasm_section_set_align(sect, boundint, cur_line);
- }
- }
-
- return yasm_bc_create_align(boundval, fillval, maxskipval,
- yasm_section_is_code(sect) ?
- yasm_arch_get_fill(p_object->arch) : NULL,
- cur_line);
-}
-
-static yasm_bytecode *
-gas_parser_dir_fill(yasm_parser_gas *parser_gas, /*@only@*/ yasm_expr *repeat,
- /*@only@*/ /*@null@*/ yasm_expr *size,
- /*@only@*/ /*@null@*/ yasm_expr *value)
-{
- yasm_datavalhead dvs;
- yasm_bytecode *bc;
- unsigned int ssize;
-
- if (size) {
- /*@dependent@*/ /*@null@*/ yasm_intnum *intn;
- intn = yasm_expr_get_intnum(&size, 0);
- if (!intn) {
- yasm_error_set(YASM_ERROR_NOT_ABSOLUTE,
- N_("size must be an absolute expression"));
- yasm_expr_destroy(repeat);
- yasm_expr_destroy(size);
- if (value)
- yasm_expr_destroy(value);
- return NULL;
- }
- ssize = yasm_intnum_get_uint(intn);
- } else
- ssize = 1;
-
- if (!value)
- value = yasm_expr_create_ident(
- yasm_expr_int(yasm_intnum_create_uint(0)), cur_line);
-
- yasm_dvs_initialize(&dvs);
- yasm_dvs_append(&dvs, yasm_dv_create_expr(value));
- bc = yasm_bc_create_data(&dvs, ssize, 0, p_object->arch, cur_line);
-
- yasm_bc_set_multiple(bc, repeat);
-
- return bc;
-}
-
-static dir_lookup dirs_static[] = {
- /* FIXME: Whether this is power-of-two or not depends on arch and objfmt. */
- {".align", dir_align, 0, INITIAL},
- {".p2align", dir_align, 1, INITIAL},
- {".balign", dir_align, 0, INITIAL},
- {".org", dir_org, 0, INITIAL},
- /* data visibility directives */
- {".local", dir_local, 0, INITIAL},
- {".comm", dir_comm, 0, INITIAL},
- {".lcomm", dir_comm, 1, INITIAL},
- /* integer data declaration directives */
- {".byte", dir_data, 1, INITIAL},
- {".2byte", dir_data, 2, INITIAL},
- {".4byte", dir_data, 4, INITIAL},
- {".8byte", dir_data, 8, INITIAL},
- {".16byte", dir_data, 16, INITIAL},
- /* TODO: These should depend on arch */
- {".short", dir_data, 2, INITIAL},
- {".int", dir_data, 4, INITIAL},
- {".long", dir_data, 4, INITIAL},
- {".hword", dir_data, 2, INITIAL},
- {".quad", dir_data, 8, INITIAL},
- {".octa", dir_data, 16, INITIAL},
- /* XXX: At least on x86, this is 2 bytes */
- {".value", dir_data, 2, INITIAL},
- /* ASCII data declaration directives */
- {".ascii", dir_ascii, 0, INITIAL}, /* no terminating zero */
- {".asciz", dir_ascii, 1, INITIAL}, /* add terminating zero */
- {".string", dir_ascii, 1, INITIAL}, /* add terminating zero */
- /* LEB128 integer data declaration directives */
- {".sleb128", dir_leb128, 1, INITIAL}, /* signed */
- {".uleb128", dir_leb128, 0, INITIAL}, /* unsigned */
- /* floating point data declaration directives */
- {".float", dir_data, 4, INITIAL},
- {".single", dir_data, 4, INITIAL},
- {".double", dir_data, 8, INITIAL},
- {".tfloat", dir_data, 10, INITIAL},
- /* section directives */
- {".bss", dir_bss_section, 0, INITIAL},
- {".data", dir_data_section, 0, INITIAL},
- {".text", dir_text_section, 0, INITIAL},
- {".section", dir_section, 0, SECTION_DIRECTIVE},
- /* empty space/fill directives */
- {".skip", dir_skip, 0, INITIAL},
- {".space", dir_skip, 0, INITIAL},
- {".fill", dir_fill, 0, INITIAL},
- {".zero", dir_zero, 0, INITIAL},
- /* syntax directives */
- {".intel_syntax", dir_intel_syntax, 0, INITIAL},
- {".att_syntax", dir_att_syntax, 0, INITIAL},
- /* other directives */
- {".equ", dir_equ, 0, INITIAL},
- {".file", dir_file, 0, INITIAL},
- {".line", dir_line, 0, INITIAL},
- {".set", dir_equ, 0, INITIAL}
-};
-
-static void
-no_delete(void *data)
-{
-}
-
-void
-gas_parser_parse(yasm_parser_gas *parser_gas)
-{
- dir_lookup word;
- unsigned int i;
- int replace = 1;
-
- word.name = ".word";
- word.handler = dir_data;
- word.param = yasm_arch_wordsize(p_object->arch)/8;
- word.newstate = INITIAL;
-
- /* Create directive lookup */
- parser_gas->dirs = HAMT_create(1, yasm_internal_error_);
- HAMT_insert(parser_gas->dirs, word.name, &word, &replace, no_delete);
- for (i=0; i<NELEMS(dirs_static); i++) {
- replace = 1;
- HAMT_insert(parser_gas->dirs, dirs_static[i].name,
- &dirs_static[i], &replace, no_delete);
- }
-
- while (get_next_token() != 0) {
- yasm_bytecode *bc = NULL, *temp_bc;
-
- if (!is_eol()) {
- bc = parse_line(parser_gas);
- demand_eol();
- }
-
- yasm_errwarn_propagate(parser_gas->errwarns, cur_line);
-
- temp_bc = yasm_section_bcs_append(cursect, bc);
- if (temp_bc)
- parser_gas->prev_bc = temp_bc;
- if (curtok == ';')
- continue; /* don't advance line number until \n */
- if (parser_gas->save_input)
- yasm_linemap_add_source(parser_gas->linemap,
- temp_bc,
- (char *)parser_gas->save_line[parser_gas->save_last ^ 1]);
- yasm_linemap_goto_next(parser_gas->linemap);
- parser_gas->dir_line++; /* keep track for .line followed by .file */
- }
-
- HAMT_destroy(parser_gas->dirs, no_delete);
-}
+/*
+ * GAS-compatible parser
+ *
+ * Copyright (C) 2005-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the author nor the names of other contributors
+ * may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <libyasm.h>
+
+#include <ctype.h>
+#include <limits.h>
+#include <math.h>
+
+#include "modules/parsers/gas/gas-parser.h"
+
+typedef struct dir_lookup {
+ const char *name;
+ yasm_bytecode * (*handler) (yasm_parser_gas *, unsigned int);
+ unsigned int param;
+ enum gas_parser_state newstate;
+} dir_lookup;
+
+static void cpp_line_marker(yasm_parser_gas *parser_gas);
+static void nasm_line_marker(yasm_parser_gas *parser_gas);
+static yasm_bytecode *parse_instr(yasm_parser_gas *parser_gas);
+static int parse_dirvals(yasm_parser_gas *parser_gas, yasm_valparamhead *vps);
+static int parse_datavals(yasm_parser_gas *parser_gas, yasm_datavalhead *dvs);
+static int parse_strvals(yasm_parser_gas *parser_gas, yasm_datavalhead *dvs);
+static yasm_effaddr *parse_memaddr(yasm_parser_gas *parser_gas);
+static yasm_insn_operand *parse_operand(yasm_parser_gas *parser_gas);
+static yasm_expr *parse_expr(yasm_parser_gas *parser_gas);
+static yasm_expr *parse_expr0(yasm_parser_gas *parser_gas);
+static yasm_expr *parse_expr1(yasm_parser_gas *parser_gas);
+static yasm_expr *parse_expr2(yasm_parser_gas *parser_gas);
+
+static void define_label(yasm_parser_gas *parser_gas, char *name, int local);
+static void define_lcomm(yasm_parser_gas *parser_gas, /*@only@*/ char *name,
+ yasm_expr *size, /*@null@*/ yasm_expr *align);
+static yasm_section *gas_get_section
+ (yasm_parser_gas *parser_gas, /*@only@*/ char *name, /*@null@*/ char *flags,
+ /*@null@*/ char *type, /*@null@*/ yasm_valparamhead *objext_valparams,
+ int builtin);
+static void gas_switch_section
+ (yasm_parser_gas *parser_gas, /*@only@*/ const char *name,
+ /*@null@*/ char *flags, /*@null@*/ char *type,
+ /*@null@*/ yasm_valparamhead *objext_valparams, int builtin);
+static yasm_bytecode *gas_parser_align
+ (yasm_parser_gas *parser_gas, yasm_section *sect, yasm_expr *boundval,
+ /*@null@*/ yasm_expr *fillval, /*@null@*/ yasm_expr *maxskipval,
+ int power2);
+static yasm_bytecode *gas_parser_dir_fill
+ (yasm_parser_gas *parser_gas, /*@only@*/ yasm_expr *repeat,
+ /*@only@*/ /*@null@*/ yasm_expr *size,
+ /*@only@*/ /*@null@*/ yasm_expr *value);
+
+#define is_eol_tok(tok) ((tok) == '\n' || (tok) == ';' || (tok) == 0)
+#define is_eol() is_eol_tok(curtok)
+
+#define get_next_token() (curtok = gas_parser_lex(&curval, parser_gas))
+
+static void
+get_peek_token(yasm_parser_gas *parser_gas)
+{
+ char savech = parser_gas->tokch;
+ if (parser_gas->peek_token != NONE)
+ yasm_internal_error(N_("can only have one token of lookahead"));
+ parser_gas->peek_token =
+ gas_parser_lex(&parser_gas->peek_tokval, parser_gas);
+ parser_gas->peek_tokch = parser_gas->tokch;
+ parser_gas->tokch = savech;
+}
+
+static void
+destroy_curtok_(yasm_parser_gas *parser_gas)
+{
+ if (curtok < 256)
+ ;
+ else switch ((enum tokentype)curtok) {
+ case INTNUM:
+ yasm_intnum_destroy(curval.intn);
+ break;
+ case FLTNUM:
+ yasm_floatnum_destroy(curval.flt);
+ break;
+ case ID:
+ case LABEL:
+ case STRING:
+ yasm_xfree(curval.str.contents);
+ break;
+ default:
+ break;
+ }
+ curtok = NONE; /* sanity */
+}
+#define destroy_curtok() destroy_curtok_(parser_gas)
+
+/* Eat all remaining tokens to EOL, discarding all of them. If there's any
+ * intervening tokens, generates an error (junk at end of line).
+ */
+static void
+demand_eol_(yasm_parser_gas *parser_gas)
+{
+ if (is_eol())
+ return;
+
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("junk at end of line, first unrecognized character is `%c'"),
+ parser_gas->tokch);
+
+ do {
+ destroy_curtok();
+ get_next_token();
+ } while (!is_eol());
+}
+#define demand_eol() demand_eol_(parser_gas)
+
+static int
+expect_(yasm_parser_gas *parser_gas, int token)
+{
+ static char strch[] = "` '";
+ const char *str;
+
+ if (curtok == token)
+ return 1;
+
+ switch (token) {
+ case INTNUM: str = "integer"; break;
+ case FLTNUM: str = "floating point value"; break;
+ case STRING: str = "string"; break;
+ case REG: str = "register"; break;
+ case REGGROUP: str = "register group"; break;
+ case SEGREG: str = "segment register"; break;
+ case TARGETMOD: str = "target modifier"; break;
+ case LEFT_OP: str = "<<"; break;
+ case RIGHT_OP: str = ">>"; break;
+ case ID: str = "identifier"; break;
+ case LABEL: str = "label"; break;
+ default:
+ strch[1] = token;
+ str = strch;
+ break;
+ }
+ yasm_error_set(YASM_ERROR_PARSE, "expected %s", str);
+ destroy_curtok();
+ return 0;
+}
+#define expect(token) expect_(parser_gas, token)
+
+static yasm_bytecode *
+parse_line(yasm_parser_gas *parser_gas)
+{
+ yasm_bytecode *bc;
+ yasm_expr *e;
+ yasm_valparamhead vps;
+ char *id;
+ const dir_lookup *dir;
+
+ if (is_eol())
+ return NULL;
+
+ bc = parse_instr(parser_gas);
+ if (bc)
+ return bc;
+
+ switch (curtok) {
+ case ID:
+ id = ID_val;
+
+ /* See if it's a gas-specific directive */
+ dir = (const dir_lookup *)HAMT_search(parser_gas->dirs, id);
+ if (dir) {
+ parser_gas->state = dir->newstate;
+ get_next_token(); /* ID */
+ return dir->handler(parser_gas, dir->param);
+ }
+
+ get_next_token(); /* ID */
+ if (curtok == ':') {
+ /* Label */
+ parser_gas->state = INITIAL;
+ get_next_token(); /* : */
+ define_label(parser_gas, id, 0);
+ return parse_line(parser_gas);
+ } else if (curtok == '=') {
+ /* EQU */
+ /* TODO: allow redefinition, assigning to . (same as .org) */
+ parser_gas->state = INITIAL;
+ get_next_token(); /* = */
+ e = parse_expr(parser_gas);
+ if (e)
+ yasm_symtab_define_equ(p_symtab, id, e, cur_line);
+ else
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("expression expected after `%s'"), "=");
+ yasm_xfree(id);
+ return NULL;
+ }
+
+ /* possibly a directive; try to parse it */
+ parse_dirvals(parser_gas, &vps);
+ if (!yasm_object_directive(p_object, id, "gas", &vps, NULL,
+ cur_line)) {
+ yasm_vps_delete(&vps);
+ yasm_xfree(id);
+ return NULL;
+ }
+ yasm_vps_delete(&vps);
+ if (id[0] == '.')
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("directive `%s' not recognized"), id);
+ else
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("instruction not recognized: `%s'"), id);
+ yasm_xfree(id);
+ return NULL;
+ case LABEL:
+ define_label(parser_gas, LABEL_val, 0);
+ get_next_token(); /* LABEL */
+ return parse_line(parser_gas);
+ case CPP_LINE_MARKER:
+ get_next_token();
+ cpp_line_marker(parser_gas);
+ return NULL;
+ case NASM_LINE_MARKER:
+ get_next_token();
+ nasm_line_marker(parser_gas);
+ return NULL;
+ default:
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("label or instruction expected at start of line"));
+ return NULL;
+ }
+}
+
+/*
+ Handle line markers generated by cpp.
+
+ We expect a positive integer (line) followed by a string (filename). If we
+ fail to find either of these, we treat the line as a comment. There is a
+ possibility of false positives (mistaking a comment for a line marker, when
+ the comment is not intended as a line marker) but this cannot be avoided
+ without adding a filter to the input before passing it to cpp.
+
+ This function is only called if the preprocessor was 'cpp', since the
+ CPP_LINE_MARKER token isn't generated for any other preprocessor. With any
+ other preprocessor, anything after a '#' is always treated as a comment.
+*/
+static void
+cpp_line_marker(yasm_parser_gas *parser_gas)
+{
+ yasm_valparamhead vps;
+ yasm_valparam *vp;
+ unsigned long line;
+ char *filename;
+
+ /* Line number. */
+ if (curtok != INTNUM) {
+ /* Skip over a comment. */
+ while (curtok != '\n')
+ get_next_token();
+
+ return;
+ }
+
+ if (yasm_intnum_sign(INTNUM_val) < 0) {
+ get_next_token(); /* INTNUM */
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("line number is negative"));
+ return;
+ }
+
+ line = yasm_intnum_get_uint(INTNUM_val);
+
+ /*
+ Set to (line - 1) since the directive indicates that the *next* line
+ will have the number given.
+
+ cpp should never produce line=0, but the if keeps us safe just incase.
+ */
+ if (line != 0)
+ line--;
+
+ yasm_intnum_destroy(INTNUM_val);
+ get_next_token(); /* INTNUM */
+
+ /* File name, in quotes. */
+ if (curtok != STRING) {
+ /* Skip over a comment. */
+ while (curtok != '\n')
+ get_next_token();
+
+ return;
+ }
+
+ filename = STRING_val.contents;
+ get_next_token();
+
+ /* Set linemap. */
+ yasm_linemap_set(parser_gas->linemap, filename, 0, line, 1);
+
+ /*
+ The first line marker in the file (which should be on the first line
+ of the file) will give us the name of the source file. This information
+ needs to be passed on to the debug format module.
+ */
+ if (parser_gas->seen_line_marker == 0) {
+ parser_gas->seen_line_marker = 1;
+
+ yasm_vps_initialize(&vps);
+ vp = yasm_vp_create_string(NULL, filename);
+ yasm_vps_append(&vps, vp);
+
+ yasm_object_directive(p_object, ".file", "gas", &vps, NULL, cur_line);
+
+ yasm_vps_delete(&vps);
+ } else
+ yasm_xfree(filename);
+
+ /* Skip flags. */
+ while (1) {
+ switch (curtok) {
+ case INTNUM:
+ break;
+
+ case '\n':
+ return;
+
+ default:
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("junk at end of cpp line marker"));
+ return;
+ }
+ get_next_token();
+ }
+}
+
+/*
+ Handle line markers generated by the nasm preproc.
+
+ We expect a positive integer (line) followed by a plus sign, followed by
+ another positive integer, followed by a string (filename).
+
+ This function is only called if the preprocessor was 'nasm', since the
+ NASM_LINE_MARKER token isn't generated for any other preprocessor.
+*/
+static void
+nasm_line_marker(yasm_parser_gas *parser_gas)
+{
+ yasm_valparamhead vps;
+ yasm_valparam *vp;
+ unsigned long line, incr;
+ char *filename;
+
+ /* Line number. */
+ if (!expect(INTNUM)) return;
+
+ if (yasm_intnum_sign(INTNUM_val) < 0) {
+ get_next_token(); /* INTNUM */
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("line number is negative"));
+ return;
+ }
+
+ line = yasm_intnum_get_uint(INTNUM_val);
+
+ /*
+ Set to (line - 1) since the directive indicates that the *next* line
+ will have the number given.
+
+ cpp should never produce line=0, but the if keeps us safe just incase.
+ */
+ if (line != 0)
+ line--;
+
+ yasm_intnum_destroy(INTNUM_val);
+ get_next_token(); /* INTNUM */
+
+ if (!expect('+')) return;
+ get_next_token(); /* + */
+
+ /* Line number increment. */
+ if (!expect(INTNUM)) return;
+
+ if (yasm_intnum_sign(INTNUM_val) < 0) {
+ get_next_token(); /* INTNUM */
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("line increment is negative"));
+ return;
+ }
+
+ incr = yasm_intnum_get_uint(INTNUM_val);
+ yasm_intnum_destroy(INTNUM_val);
+
+ /* File name is not in quotes, so need to switch to a different tokenizer
+ * state.
+ */
+ parser_gas->state = NASM_FILENAME;
+ get_next_token(); /* INTNUM */
+ if (!expect(STRING)) {
+ parser_gas->state = INITIAL;
+ return;
+ }
+
+ filename = STRING_val.contents;
+
+ /* Set linemap. */
+ yasm_linemap_set(parser_gas->linemap, filename, 0, line, incr);
+
+ /*
+ The first line marker in the file (which should be on the first line
+ of the file) will give us the name of the source file. This information
+ needs to be passed on to the debug format module.
+ */
+ if (parser_gas->seen_line_marker == 0) {
+ parser_gas->seen_line_marker = 1;
+
+ yasm_vps_initialize(&vps);
+ vp = yasm_vp_create_string(NULL, filename);
+ yasm_vps_append(&vps, vp);
+
+ yasm_object_directive(p_object, ".file", "gas", &vps, NULL, cur_line);
+
+ yasm_vps_delete(&vps);
+ } else
+ yasm_xfree(filename);
+
+ /* We need to poke back on the \n that was consumed by the tokenizer */
+ parser_gas->peek_token = '\n';
+ get_next_token();
+}
+
+/* Line directive */
+static yasm_bytecode *
+dir_line(yasm_parser_gas *parser_gas, unsigned int param)
+{
+ if (!expect(INTNUM)) return NULL;
+ if (yasm_intnum_sign(INTNUM_val) < 0) {
+ get_next_token(); /* INTNUM */
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("line number is negative"));
+ return NULL;
+ }
+
+ parser_gas->dir_line = yasm_intnum_get_uint(INTNUM_val);
+ yasm_intnum_destroy(INTNUM_val);
+ get_next_token(); /* INTNUM */
+
+ if (parser_gas->dir_fileline == 3) {
+ /* Have both file and line */
+ yasm_linemap_set(parser_gas->linemap, NULL, 0,
+ parser_gas->dir_line, 1);
+ } else if (parser_gas->dir_fileline == 1) {
+ /* Had previous file directive only */
+ parser_gas->dir_fileline = 3;
+ yasm_linemap_set(parser_gas->linemap, parser_gas->dir_file, 0,
+ parser_gas->dir_line, 1);
+ } else {
+ /* Didn't see file yet */
+ parser_gas->dir_fileline = 2;
+ }
+ return NULL;
+}
+
+/* Alignment directives */
+
+static yasm_bytecode *
+dir_align(yasm_parser_gas *parser_gas, unsigned int param)
+{
+ yasm_expr *bound, *fill=NULL, *maxskip=NULL;
+
+ bound = parse_expr(parser_gas);
+ if (!bound) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_(".align directive must specify alignment"));
+ return NULL;
+ }
+
+ if (curtok == ',') {
+ get_next_token(); /* ',' */
+ fill = parse_expr(parser_gas);
+ if (curtok == ',') {
+ get_next_token(); /* ',' */
+ maxskip = parse_expr(parser_gas);
+ }
+ }
+
+ return gas_parser_align(parser_gas, cursect, bound, fill, maxskip,
+ (int)param);
+}
+
+static yasm_bytecode *
+dir_org(yasm_parser_gas *parser_gas, unsigned int param)
+{
+ yasm_intnum *start, *value=NULL;
+ yasm_bytecode *bc;
+
+ /* TODO: support expr instead of intnum */
+ if (!expect(INTNUM)) return NULL;
+ start = INTNUM_val;
+ get_next_token(); /* INTNUM */
+
+ if (curtok == ',') {
+ get_next_token(); /* ',' */
+ /* TODO: support expr instead of intnum */
+ if (!expect(INTNUM)) return NULL;
+ value = INTNUM_val;
+ get_next_token(); /* INTNUM */
+ }
+ if (value) {
+ bc = yasm_bc_create_org(yasm_intnum_get_uint(start),
+ yasm_intnum_get_uint(value), cur_line);
+ yasm_intnum_destroy(value);
+ } else
+ bc = yasm_bc_create_org(yasm_intnum_get_uint(start), 0,
+ cur_line);
+ yasm_intnum_destroy(start);
+ return bc;
+}
+
+/* Data visibility directives */
+
+static yasm_bytecode *
+dir_local(yasm_parser_gas *parser_gas, unsigned int param)
+{
+ if (!expect(ID)) return NULL;
+ yasm_symtab_declare(p_symtab, ID_val, YASM_SYM_DLOCAL, cur_line);
+ yasm_xfree(ID_val);
+ get_next_token(); /* ID */
+ return NULL;
+}
+
+static yasm_bytecode *
+dir_comm(yasm_parser_gas *parser_gas, unsigned int is_lcomm)
+{
+ yasm_expr *align = NULL;
+ /*@null@*/ /*@dependent@*/ yasm_symrec *sym;
+ char *id;
+ yasm_expr *e;
+
+ if (!expect(ID)) return NULL;
+ id = ID_val;
+ get_next_token(); /* ID */
+ if (!expect(',')) {
+ yasm_xfree(id);
+ return NULL;
+ }
+ get_next_token(); /* , */
+ e = parse_expr(parser_gas);
+ if (!e) {
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("size expected for `%s'"),
+ ".COMM");
+ return NULL;
+ }
+ if (curtok == ',') {
+ /* Optional alignment expression */
+ get_next_token(); /* ',' */
+ align = parse_expr(parser_gas);
+ }
+ /* If already explicitly declared local, treat like LCOMM */
+ if (is_lcomm
+ || ((sym = yasm_symtab_get(p_symtab, id))
+ && yasm_symrec_get_visibility(sym) == YASM_SYM_DLOCAL)) {
+ define_lcomm(parser_gas, id, e, align);
+ } else if (align) {
+ /* Give third parameter as objext valparam */
+ yasm_valparamhead *extvps = yasm_vps_create();
+ yasm_valparam *vp = yasm_vp_create_expr(NULL, align);
+ yasm_vps_append(extvps, vp);
+
+ sym = yasm_symtab_declare(p_symtab, id, YASM_SYM_COMMON,
+ cur_line);
+ yasm_symrec_set_common_size(sym, e);
+ yasm_symrec_set_objext_valparams(sym, extvps);
+
+ yasm_xfree(id);
+ } else {
+ sym = yasm_symtab_declare(p_symtab, id, YASM_SYM_COMMON,
+ cur_line);
+ yasm_symrec_set_common_size(sym, e);
+ yasm_xfree(id);
+ }
+ return NULL;
+}
+
+/* Integer data definition directives */
+
+static yasm_bytecode *
+dir_ascii(yasm_parser_gas *parser_gas, unsigned int withzero)
+{
+ yasm_datavalhead dvs;
+ if (!parse_strvals(parser_gas, &dvs))
+ return NULL;
+ return yasm_bc_create_data(&dvs, 1, (int)withzero, p_object->arch,
+ cur_line);
+}
+
+static yasm_bytecode *
+dir_data(yasm_parser_gas *parser_gas, unsigned int size)
+{
+ yasm_datavalhead dvs;
+ if (!parse_datavals(parser_gas, &dvs))
+ return NULL;
+ return yasm_bc_create_data(&dvs, size, 0, p_object->arch, cur_line);
+}
+
+static yasm_bytecode *
+dir_leb128(yasm_parser_gas *parser_gas, unsigned int sign)
+{
+ yasm_datavalhead dvs;
+ if (!parse_datavals(parser_gas, &dvs))
+ return NULL;
+ return yasm_bc_create_leb128(&dvs, (int)sign, cur_line);
+}
+
+/* Empty space / fill data definition directives */
+
+static yasm_bytecode *
+dir_zero(yasm_parser_gas *parser_gas, unsigned int param)
+{
+ yasm_bytecode *bc;
+ yasm_datavalhead dvs;
+ yasm_expr *e = parse_expr(parser_gas);
+ if (!e) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("expression expected after `%s'"), ".ZERO");
+ return NULL;
+ }
+
+ yasm_dvs_initialize(&dvs);
+ yasm_dvs_append(&dvs, yasm_dv_create_expr(
+ p_expr_new_ident(yasm_expr_int(yasm_intnum_create_uint(0)))));
+ bc = yasm_bc_create_data(&dvs, 1, 0, p_object->arch, cur_line);
+ yasm_bc_set_multiple(bc, e);
+ return bc;
+}
+
+static yasm_bytecode *
+dir_skip(yasm_parser_gas *parser_gas, unsigned int param)
+{
+ yasm_expr *e, *e_val;
+ yasm_bytecode *bc;
+ yasm_datavalhead dvs;
+
+ e = parse_expr(parser_gas);
+ if (!e) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("expression expected after `%s'"), ".SKIP");
+ return NULL;
+ }
+ if (curtok != ',')
+ return yasm_bc_create_reserve(e, 1, cur_line);
+ get_next_token(); /* ',' */
+ e_val = parse_expr(parser_gas);
+ yasm_dvs_initialize(&dvs);
+ yasm_dvs_append(&dvs, yasm_dv_create_expr(e_val));
+ bc = yasm_bc_create_data(&dvs, 1, 0, p_object->arch, cur_line);
+
+ yasm_bc_set_multiple(bc, e);
+ return bc;
+}
+
+/* fill data definition directive */
+static yasm_bytecode *
+dir_fill(yasm_parser_gas *parser_gas, unsigned int param)
+{
+ yasm_expr *sz=NULL, *val=NULL;
+ yasm_expr *e = parse_expr(parser_gas);
+ if (!e) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("expression expected after `%s'"), ".FILL");
+ return NULL;
+ }
+ if (curtok == ',') {
+ get_next_token(); /* ',' */
+ sz = parse_expr(parser_gas);
+ if (curtok == ',') {
+ get_next_token(); /* ',' */
+ val = parse_expr(parser_gas);
+ }
+ }
+ return gas_parser_dir_fill(parser_gas, e, sz, val);
+}
+
+/* Section directives */
+
+static yasm_bytecode *
+dir_bss_section(yasm_parser_gas *parser_gas, unsigned int param)
+{
+ gas_switch_section(parser_gas, ".bss", NULL, NULL, NULL, 1);
+ return NULL;
+}
+
+static yasm_bytecode *
+dir_data_section(yasm_parser_gas *parser_gas, unsigned int param)
+{
+ gas_switch_section(parser_gas, ".data", NULL, NULL, NULL, 1);
+ return NULL;
+}
+
+static yasm_bytecode *
+dir_text_section(yasm_parser_gas *parser_gas, unsigned int param)
+{
+ gas_switch_section(parser_gas, ".text", NULL, NULL, NULL, 1);
+ return NULL;
+}
+
+static yasm_bytecode *
+dir_section(yasm_parser_gas *parser_gas, unsigned int param)
+{
+ /* DIR_SECTION ID ',' STRING ',' '@' ID ',' dirvals */
+ char *sectname, *flags = NULL, *type = NULL;
+ yasm_valparamhead vps;
+ int have_vps = 0;
+
+ if (!expect(ID)) return NULL;
+ sectname = ID_val;
+ get_next_token(); /* ID */
+
+ if (curtok == ',') {
+ get_next_token(); /* ',' */
+ if (!expect(STRING)) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("flag string expected"));
+ yasm_xfree(sectname);
+ return NULL;
+ }
+ flags = STRING_val.contents;
+ get_next_token(); /* STRING */
+ }
+
+ if (curtok == ',') {
+ get_next_token(); /* ',' */
+ if (!expect('@')) {
+ yasm_xfree(sectname);
+ yasm_xfree(flags);
+ return NULL;
+ }
+ get_next_token(); /* '@' */
+ if (!expect(ID)) {
+ yasm_xfree(sectname);
+ yasm_xfree(flags);
+ return NULL;
+ }
+ type = ID_val;
+ get_next_token(); /* ID */
+ }
+
+ if (curtok == ',') {
+ get_next_token(); /* ',' */
+ if (parse_dirvals(parser_gas, &vps))
+ have_vps = 1;
+ }
+
+ gas_switch_section(parser_gas, sectname, flags, type,
+ have_vps ? &vps : NULL, 0);
+ yasm_xfree(sectname);
+ yasm_xfree(flags);
+ return NULL;
+}
+
+/* Other directives */
+
+static yasm_bytecode *
+dir_equ(yasm_parser_gas *parser_gas, unsigned int param)
+{
+ yasm_expr *e;
+ char *id;
+
+ /* ID ',' expr */
+ if (!expect(ID)) return NULL;
+ id = ID_val;
+ get_next_token(); /* ID */
+ if (!expect(',')) {
+ yasm_xfree(id);
+ return NULL;
+ }
+ get_next_token(); /* ',' */
+ e = parse_expr(parser_gas);
+ if (e)
+ yasm_symtab_define_equ(p_symtab, id, e, cur_line);
+ else
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("expression expected after `%s'"), ",");
+ yasm_xfree(id);
+ return NULL;
+}
+
+static yasm_bytecode *
+dir_file(yasm_parser_gas *parser_gas, unsigned int param)
+{
+ yasm_valparamhead vps;
+ yasm_valparam *vp;
+
+ if (curtok == STRING) {
+ /* No file number; this form also sets the assembler's
+ * internal line number.
+ */
+ char *filename = STRING_val.contents;
+
+ get_next_token(); /* STRING */
+ if (parser_gas->dir_fileline == 3) {
+ /* Have both file and line */
+ const char *old_fn;
+ unsigned long old_line;
+
+ yasm_linemap_lookup(parser_gas->linemap, cur_line, &old_fn,
+ &old_line);
+ yasm_linemap_set(parser_gas->linemap, filename, 0, old_line,
+ 1);
+ } else if (parser_gas->dir_fileline == 2) {
+ /* Had previous line directive only */
+ parser_gas->dir_fileline = 3;
+ yasm_linemap_set(parser_gas->linemap, filename, 0,
+ parser_gas->dir_line, 1);
+ } else {
+ /* Didn't see line yet, save file */
+ parser_gas->dir_fileline = 1;
+ if (parser_gas->dir_file)
+ yasm_xfree(parser_gas->dir_file);
+ parser_gas->dir_file = yasm__xstrdup(filename);
+ }
+
+ /* Pass change along to debug format */
+ yasm_vps_initialize(&vps);
+ vp = yasm_vp_create_string(NULL, filename);
+ yasm_vps_append(&vps, vp);
+
+ yasm_object_directive(p_object, ".file", "gas", &vps, NULL,
+ cur_line);
+
+ yasm_vps_delete(&vps);
+ return NULL;
+ }
+
+ /* fileno filename form */
+ yasm_vps_initialize(&vps);
+
+ if (!expect(INTNUM)) return NULL;
+ vp = yasm_vp_create_expr(NULL,
+ p_expr_new_ident(yasm_expr_int(INTNUM_val)));
+ yasm_vps_append(&vps, vp);
+ get_next_token(); /* INTNUM */
+
+ if (!expect(STRING)) {
+ yasm_vps_delete(&vps);
+ return NULL;
+ }
+ vp = yasm_vp_create_string(NULL, STRING_val.contents);
+ yasm_vps_append(&vps, vp);
+ get_next_token(); /* STRING */
+
+ yasm_object_directive(p_object, ".file", "gas", &vps, NULL,
+ cur_line);
+
+ yasm_vps_delete(&vps);
+ return NULL;
+}
+
+
+static yasm_bytecode *
+dir_intel_syntax(yasm_parser_gas *parser_gas, unsigned int param)
+{
+ parser_gas->intel_syntax = 1;
+
+ do {
+ destroy_curtok();
+ get_next_token();
+ } while (!is_eol());
+ return NULL;
+}
+
+static yasm_bytecode *
+dir_att_syntax(yasm_parser_gas *parser_gas, unsigned int param)
+{
+ parser_gas->intel_syntax = 0;
+ return NULL;
+}
+
+static yasm_bytecode *
+parse_instr(yasm_parser_gas *parser_gas)
+{
+ yasm_bytecode *bc;
+ char *id;
+ uintptr_t prefix;
+
+ if (parser_gas->intel_syntax) {
+ bc = parse_instr_intel(parser_gas);
+ if (bc) {
+ yasm_warn_disable(YASM_WARN_UNREC_CHAR);
+ do {
+ destroy_curtok();
+ get_next_token();
+ } while (!is_eol());
+ yasm_warn_enable(YASM_WARN_UNREC_CHAR);
+ }
+ return bc;
+ }
+
+ if (curtok != ID)
+ return NULL;
+
+ id = ID_val;
+
+ /* instructions/prefixes must start with a letter */
+ if (!isalpha(id[0]))
+ return NULL;
+
+ /* check to be sure it's not a label or equ */
+ get_peek_token(parser_gas);
+ if (parser_gas->peek_token == ':' || parser_gas->peek_token == '=')
+ return NULL;
+
+ switch (yasm_arch_parse_check_insnprefix
+ (p_object->arch, ID_val, ID_len, cur_line, &bc, &prefix)) {
+ case YASM_ARCH_INSN:
+ {
+ yasm_insn *insn;
+
+ /* Propagate errors in case we got a warning from the arch */
+ yasm_errwarn_propagate(parser_gas->errwarns, cur_line);
+
+ insn = yasm_bc_get_insn(bc);
+
+ yasm_xfree(id);
+ get_next_token(); /* ID */
+ if (is_eol())
+ return bc; /* no operands */
+
+ /* parse operands */
+ for (;;) {
+ yasm_insn_operand *op = parse_operand(parser_gas);
+ if (!op) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("expression syntax error"));
+ yasm_bc_destroy(bc);
+ return NULL;
+ }
+ yasm_insn_ops_append(insn, op);
+
+ if (is_eol())
+ break;
+ if (!expect(',')) {
+ yasm_bc_destroy(bc);
+ return NULL;
+ }
+ get_next_token();
+ }
+ return bc;
+ }
+ case YASM_ARCH_PREFIX:
+ /* Propagate errors in case we got a warning from the arch */
+ yasm_errwarn_propagate(parser_gas->errwarns, cur_line);
+
+ yasm_xfree(id);
+ get_next_token(); /* ID */
+ bc = parse_instr(parser_gas);
+ if (!bc)
+ bc = yasm_arch_create_empty_insn(p_object->arch, cur_line);
+ yasm_insn_add_prefix(yasm_bc_get_insn(bc), prefix);
+ return bc;
+ default:
+ break;
+ }
+
+ /* Check for segment register used as prefix */
+ switch (yasm_arch_parse_check_regtmod(p_object->arch, ID_val, ID_len,
+ &prefix)) {
+ case YASM_ARCH_SEGREG:
+ yasm_xfree(id);
+ get_next_token(); /* ID */
+ bc = parse_instr(parser_gas);
+ if (!bc)
+ bc = yasm_arch_create_empty_insn(p_object->arch, cur_line);
+ yasm_insn_add_seg_prefix(yasm_bc_get_insn(bc), prefix);
+ return bc;
+ default:
+ return NULL;
+ }
+}
+
+static int
+parse_dirvals(yasm_parser_gas *parser_gas, yasm_valparamhead *vps)
+{
+ yasm_valparam *vp;
+ yasm_expr *e;
+ int num = 0;
+
+ yasm_vps_initialize(vps);
+
+ for (;;) {
+ switch (curtok) {
+ case ID:
+ get_peek_token(parser_gas);
+ switch (parser_gas->peek_token) {
+ case '+': case '-':
+ case '|': case '^': case '&': case '!':
+ case '*': case '/': case '%': case LEFT_OP: case RIGHT_OP:
+ e = parse_expr(parser_gas);
+ vp = yasm_vp_create_expr(NULL, e);
+ break;
+ default:
+ /* Just an ID */
+ vp = yasm_vp_create_id(NULL, ID_val, '\0');
+ get_next_token(); /* ID */
+ break;
+ }
+ break;
+ case STRING:
+ vp = yasm_vp_create_string(NULL, STRING_val.contents);
+ get_next_token(); /* STRING */
+ break;
+ case REG:
+ e = p_expr_new_ident(yasm_expr_reg(REG_val));
+ vp = yasm_vp_create_expr(NULL, e);
+ get_next_token(); /* REG */
+ break;
+ case '@':
+ /* XXX: is throwing it away *really* the right thing? */
+ get_next_token(); /* @ */
+ continue;
+ default:
+ e = parse_expr(parser_gas);
+ if (!e)
+ return num;
+ vp = yasm_vp_create_expr(NULL, e);
+ break;
+ }
+ yasm_vps_append(vps, vp);
+ num++;
+ if (curtok == ',')
+ get_next_token(); /* ',' */
+ }
+ return num;
+}
+
+static int
+parse_datavals(yasm_parser_gas *parser_gas, yasm_datavalhead *dvs)
+{
+ yasm_expr *e;
+ yasm_dataval *dv;
+ int num = 0;
+
+ yasm_dvs_initialize(dvs);
+
+ for (;;) {
+ e = parse_expr(parser_gas);
+ if (!e) {
+ yasm_dvs_delete(dvs);
+ yasm_dvs_initialize(dvs);
+ return 0;
+ }
+ dv = yasm_dv_create_expr(e);
+ yasm_dvs_append(dvs, dv);
+ num++;
+ if (curtok != ',')
+ break;
+ get_next_token(); /* ',' */
+ }
+ return num;
+}
+
+static int
+parse_strvals(yasm_parser_gas *parser_gas, yasm_datavalhead *dvs)
+{
+ yasm_dataval *dv;
+ int num = 0;
+
+ yasm_dvs_initialize(dvs);
+
+ for (;;) {
+ if (!expect(STRING)) {
+ yasm_dvs_delete(dvs);
+ yasm_dvs_initialize(dvs);
+ return 0;
+ }
+ dv = yasm_dv_create_string(STRING_val.contents, STRING_val.len);
+ yasm_dvs_append(dvs, dv);
+ get_next_token(); /* STRING */
+ num++;
+ if (curtok != ',')
+ break;
+ get_next_token(); /* ',' */
+ }
+ return num;
+}
+
+/* instruction operands */
+/* memory addresses */
+static yasm_effaddr *
+parse_memaddr(yasm_parser_gas *parser_gas)
+{
+ yasm_effaddr *ea = NULL;
+ yasm_expr *e1, *e2;
+ int strong = 0;
+
+ if (curtok == SEGREG) {
+ uintptr_t segreg = SEGREG_val;
+ get_next_token(); /* SEGREG */
+ if (!expect(':')) return NULL;
+ get_next_token(); /* ':' */
+ ea = parse_memaddr(parser_gas);
+ if (!ea)
+ return NULL;
+ yasm_ea_set_segreg(ea, segreg);
+ return ea;
+ }
+
+ /* We want to parse a leading expression, except when it's actually
+ * just a memory address (with no preceding expression) such as
+ * (REG...) or (,...).
+ */
+ get_peek_token(parser_gas);
+ if (curtok != '(' || (parser_gas->peek_token != REG
+ && parser_gas->peek_token != ','))
+ e1 = parse_expr(parser_gas);
+ else
+ e1 = NULL;
+
+ if (curtok == '(') {
+ int havereg = 0;
+ uintptr_t reg = 0;
+ yasm_intnum *scale = NULL;
+
+ get_next_token(); /* '(' */
+
+ /* base register */
+ if (curtok == REG) {
+ e2 = p_expr_new_ident(yasm_expr_reg(REG_val));
+ get_next_token(); /* REG */
+ } else
+ e2 = p_expr_new_ident(yasm_expr_int(yasm_intnum_create_uint(0)));
+
+ if (curtok == ')')
+ goto done;
+
+ if (!expect(',')) {
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("invalid memory expression"));
+ if (e1) yasm_expr_destroy(e1);
+ yasm_expr_destroy(e2);
+ return NULL;
+ }
+ get_next_token(); /* ',' */
+
+ if (curtok == ')')
+ goto done;
+
+ /* index register */
+ if (curtok == REG) {
+ reg = REG_val;
+ havereg = 1;
+ get_next_token(); /* REG */
+ if (curtok != ',') {
+ scale = yasm_intnum_create_uint(1);
+ goto done;
+ }
+ get_next_token(); /* ',' */
+ }
+
+ /* scale */
+ if (!expect(INTNUM)) {
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("non-integer scale"));
+ if (e1) yasm_expr_destroy(e1);
+ yasm_expr_destroy(e2);
+ return NULL;
+ }
+ scale = INTNUM_val;
+ get_next_token(); /* INTNUM */
+
+done:
+ if (!expect(')')) {
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("invalid memory expression"));
+ if (scale) yasm_intnum_destroy(scale);
+ if (e1) yasm_expr_destroy(e1);
+ yasm_expr_destroy(e2);
+ return NULL;
+ }
+ get_next_token(); /* ')' */
+
+ if (scale) {
+ if (!havereg) {
+ if (yasm_intnum_get_uint(scale) != 1)
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("scale factor of %u without an index register"),
+ yasm_intnum_get_uint(scale));
+ yasm_intnum_destroy(scale);
+ } else
+ e2 = p_expr_new(yasm_expr_expr(e2), YASM_EXPR_ADD,
+ yasm_expr_expr(p_expr_new(yasm_expr_reg(reg), YASM_EXPR_MUL,
+ yasm_expr_int(scale))));
+ }
+
+ if (e1) {
+ /* Ordering is critical here to correctly detecting presence of
+ * RIP in RIP-relative expressions.
+ */
+ e1 = p_expr_new_tree(e2, YASM_EXPR_ADD, e1);
+ } else
+ e1 = e2;
+ strong = 1;
+ }
+
+ if (!e1)
+ return NULL;
+ ea = yasm_arch_ea_create(p_object->arch, e1);
+ if (strong)
+ ea->strong = 1;
+ return ea;
+}
+
+static yasm_insn_operand *
+parse_operand(yasm_parser_gas *parser_gas)
+{
+ yasm_effaddr *ea;
+ yasm_insn_operand *op;
+ uintptr_t reg;
+
+ switch (curtok) {
+ case REG:
+ reg = REG_val;
+ get_next_token(); /* REG */
+ return yasm_operand_create_reg(reg);
+ case SEGREG:
+ /* need to see if it's really a memory address */
+ get_peek_token(parser_gas);
+ if (parser_gas->peek_token == ':') {
+ ea = parse_memaddr(parser_gas);
+ if (!ea)
+ return NULL;
+ return yasm_operand_create_mem(ea);
+ }
+ reg = SEGREG_val;
+ get_next_token(); /* SEGREG */
+ return yasm_operand_create_segreg(reg);
+ case REGGROUP:
+ {
+ unsigned long regindex;
+ reg = REGGROUP_val;
+ get_next_token(); /* REGGROUP */
+ if (curtok != '(')
+ return yasm_operand_create_reg(reg);
+ get_next_token(); /* '(' */
+ if (!expect(INTNUM)) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("integer register index expected"));
+ return NULL;
+ }
+ regindex = yasm_intnum_get_uint(INTNUM_val);
+ get_next_token(); /* INTNUM */
+ if (!expect(')')) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("missing closing parenthesis for register index"));
+ return NULL;
+ }
+ get_next_token(); /* ')' */
+ reg = yasm_arch_reggroup_get_reg(p_object->arch, reg, regindex);
+ if (reg == 0) {
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("bad register index `%u'"),
+ regindex);
+ return NULL;
+ }
+ return yasm_operand_create_reg(reg);
+ }
+ case '$':
+ {
+ yasm_expr *e;
+ get_next_token(); /* '$' */
+ e = parse_expr(parser_gas);
+ if (!e) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("expression missing after `%s'"), "$");
+ return NULL;
+ }
+ return yasm_operand_create_imm(e);
+ }
+ case '*':
+ get_next_token(); /* '*' */
+ if (curtok == REG) {
+ op = yasm_operand_create_reg(REG_val);
+ get_next_token(); /* REG */
+ } else {
+ ea = parse_memaddr(parser_gas);
+ if (!ea) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("expression missing after `%s'"), "*");
+ return NULL;
+ }
+ op = yasm_operand_create_mem(ea);
+ }
+ op->deref = 1;
+ return op;
+ default:
+ ea = parse_memaddr(parser_gas);
+ if (!ea)
+ return NULL;
+ return yasm_operand_create_mem(ea);
+ }
+}
+
+/* Expression grammar parsed is:
+ *
+ * expr : expr0 [ {+,-} expr0...]
+ * expr0 : expr1 [ {|,^,&,!} expr1...]
+ * expr1 : expr2 [ {*,/,%,<<,>>} expr2...]
+ * expr2 : { ~,+,- } expr2
+ * | (expr)
+ * | symbol
+ * | number
+ */
+
+static yasm_expr *
+parse_expr(yasm_parser_gas *parser_gas)
+{
+ yasm_expr *e, *f;
+ e = parse_expr0(parser_gas);
+ if (!e)
+ return NULL;
+
+ while (curtok == '+' || curtok == '-') {
+ int op = curtok;
+ get_next_token();
+ f = parse_expr0(parser_gas);
+ if (!f) {
+ yasm_expr_destroy(e);
+ return NULL;
+ }
+
+ switch (op) {
+ case '+': e = p_expr_new_tree(e, YASM_EXPR_ADD, f); break;
+ case '-': e = p_expr_new_tree(e, YASM_EXPR_SUB, f); break;
+ }
+ }
+ return e;
+}
+
+static yasm_expr *
+parse_expr0(yasm_parser_gas *parser_gas)
+{
+ yasm_expr *e, *f;
+ e = parse_expr1(parser_gas);
+ if (!e)
+ return NULL;
+
+ while (curtok == '|' || curtok == '^' || curtok == '&' || curtok == '!') {
+ int op = curtok;
+ get_next_token();
+ f = parse_expr1(parser_gas);
+ if (!f) {
+ yasm_expr_destroy(e);
+ return NULL;
+ }
+
+ switch (op) {
+ case '|': e = p_expr_new_tree(e, YASM_EXPR_OR, f); break;
+ case '^': e = p_expr_new_tree(e, YASM_EXPR_XOR, f); break;
+ case '&': e = p_expr_new_tree(e, YASM_EXPR_AND, f); break;
+ case '!': e = p_expr_new_tree(e, YASM_EXPR_NOR, f); break;
+ }
+ }
+ return e;
+}
+
+static yasm_expr *
+parse_expr1(yasm_parser_gas *parser_gas)
+{
+ yasm_expr *e, *f;
+ e = parse_expr2(parser_gas);
+ if (!e)
+ return NULL;
+
+ while (curtok == '*' || curtok == '/' || curtok == '%' || curtok == LEFT_OP
+ || curtok == RIGHT_OP) {
+ int op = curtok;
+ get_next_token();
+ f = parse_expr2(parser_gas);
+ if (!f) {
+ yasm_expr_destroy(e);
+ return NULL;
+ }
+
+ switch (op) {
+ case '*': e = p_expr_new_tree(e, YASM_EXPR_MUL, f); break;
+ case '/': e = p_expr_new_tree(e, YASM_EXPR_DIV, f); break;
+ case '%': e = p_expr_new_tree(e, YASM_EXPR_MOD, f); break;
+ case LEFT_OP: e = p_expr_new_tree(e, YASM_EXPR_SHL, f); break;
+ case RIGHT_OP: e = p_expr_new_tree(e, YASM_EXPR_SHR, f); break;
+ }
+ }
+ return e;
+}
+
+static yasm_expr *
+parse_expr2(yasm_parser_gas *parser_gas)
+{
+ yasm_expr *e;
+ yasm_symrec *sym;
+
+ switch (curtok) {
+ case '+':
+ get_next_token();
+ return parse_expr2(parser_gas);
+ case '-':
+ get_next_token();
+ e = parse_expr2(parser_gas);
+ if (!e)
+ return NULL;
+ return p_expr_new_branch(YASM_EXPR_NEG, e);
+ case '~':
+ get_next_token();
+ e = parse_expr2(parser_gas);
+ if (!e)
+ return NULL;
+ return p_expr_new_branch(YASM_EXPR_NOT, e);
+ case '(':
+ get_next_token();
+ e = parse_expr(parser_gas);
+ if (!e)
+ return NULL;
+ if (!expect(')')) {
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("missing parenthesis"));
+ return NULL;
+ }
+ get_next_token();
+ return e;
+ case INTNUM:
+ e = p_expr_new_ident(yasm_expr_int(INTNUM_val));
+ get_next_token();
+ return e;
+ case FLTNUM:
+ e = p_expr_new_ident(yasm_expr_float(FLTNUM_val));
+ get_next_token();
+ return e;
+ case ID:
+ {
+ char *name = ID_val;
+ get_next_token(); /* ID */
+
+ /* "." references the current assembly position */
+ if (name[1] == '\0' && name[0] == '.')
+ sym = yasm_symtab_define_curpos(p_symtab, ".",
+ parser_gas->prev_bc, cur_line);
+ else
+ sym = yasm_symtab_use(p_symtab, name, cur_line);
+ yasm_xfree(name);
+
+ if (curtok == '@') {
+ yasm_symrec *wrt;
+ /* TODO: this is needed for shared objects, e.g. sym@PLT */
+ get_next_token(); /* '@' */
+ if (!expect(ID)) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("expected identifier after `@'"));
+ return NULL;
+ }
+ wrt = yasm_objfmt_get_special_sym(p_object, ID_val, "gas");
+ yasm_xfree(ID_val);
+ get_next_token(); /* ID */
+ if (!wrt) {
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("unrecognized identifier after `@'"));
+ return p_expr_new_ident(yasm_expr_sym(sym));
+ }
+ return p_expr_new(yasm_expr_sym(sym), YASM_EXPR_WRT,
+ yasm_expr_sym(wrt));
+ }
+
+ return p_expr_new_ident(yasm_expr_sym(sym));
+ }
+ default:
+ return NULL;
+ }
+}
+
+static void
+define_label(yasm_parser_gas *parser_gas, char *name, int local)
+{
+ if (!local) {
+ if (parser_gas->locallabel_base)
+ yasm_xfree(parser_gas->locallabel_base);
+ parser_gas->locallabel_base_len = strlen(name);
+ parser_gas->locallabel_base =
+ yasm_xmalloc(parser_gas->locallabel_base_len+1);
+ strcpy(parser_gas->locallabel_base, name);
+ }
+
+ yasm_symtab_define_label(p_symtab, name, parser_gas->prev_bc, 1,
+ cur_line);
+ yasm_xfree(name);
+}
+
+static void
+define_lcomm(yasm_parser_gas *parser_gas, /*@only@*/ char *name,
+ yasm_expr *size, /*@null@*/ yasm_expr *align)
+{
+ /* Put into .bss section. */
+ /*@dependent@*/ yasm_section *bss =
+ gas_get_section(parser_gas, yasm__xstrdup(".bss"), NULL, NULL, NULL, 1);
+
+ if (align) {
+ /* XXX: assume alignment is in bytes, not power-of-two */
+ yasm_section_bcs_append(bss, gas_parser_align(parser_gas, bss, align,
+ NULL, NULL, 0));
+ }
+
+ yasm_symtab_define_label(p_symtab, name, yasm_section_bcs_last(bss), 1,
+ cur_line);
+ yasm_section_bcs_append(bss, yasm_bc_create_reserve(size, 1, cur_line));
+ yasm_xfree(name);
+}
+
+static yasm_section *
+gas_get_section(yasm_parser_gas *parser_gas, char *name,
+ /*@null@*/ char *flags, /*@null@*/ char *type,
+ /*@null@*/ yasm_valparamhead *objext_valparams,
+ int builtin)
+{
+ yasm_valparamhead vps;
+ yasm_valparam *vp;
+ char *gasflags;
+ yasm_section *new_section;
+
+ yasm_vps_initialize(&vps);
+ vp = yasm_vp_create_id(NULL, name, '\0');
+ yasm_vps_append(&vps, vp);
+
+ if (!builtin) {
+ if (flags)
+ gasflags = yasm__xstrdup(flags);
+ else
+ gasflags = yasm__xstrdup("");
+ vp = yasm_vp_create_string(yasm__xstrdup("gasflags"), gasflags);
+ yasm_vps_append(&vps, vp);
+ if (type) {
+ vp = yasm_vp_create_id(NULL, type, '\0');
+ yasm_vps_append(&vps, vp);
+ }
+ }
+
+ new_section = yasm_objfmt_section_switch(p_object, &vps, objext_valparams,
+ cur_line);
+
+ yasm_vps_delete(&vps);
+ return new_section;
+}
+
+static void
+gas_switch_section(yasm_parser_gas *parser_gas, const char *name,
+ /*@null@*/ char *flags, /*@null@*/ char *type,
+ /*@null@*/ yasm_valparamhead *objext_valparams,
+ int builtin)
+{
+ yasm_section *new_section;
+
+ new_section = gas_get_section(parser_gas, yasm__xstrdup(name), flags, type,
+ objext_valparams, builtin);
+ if (new_section) {
+ cursect = new_section;
+ parser_gas->prev_bc = yasm_section_bcs_last(new_section);
+ } else
+ yasm_error_set(YASM_ERROR_GENERAL, N_("invalid section name `%s'"),
+ name);
+
+ if (objext_valparams)
+ yasm_vps_delete(objext_valparams);
+}
+
+static yasm_bytecode *
+gas_parser_align(yasm_parser_gas *parser_gas, yasm_section *sect,
+ yasm_expr *boundval, /*@null@*/ yasm_expr *fillval,
+ /*@null@*/ yasm_expr *maxskipval, int power2)
+{
+ yasm_intnum *boundintn;
+
+ /* Convert power of two to number of bytes if necessary */
+ if (power2)
+ boundval = yasm_expr_create(YASM_EXPR_SHL,
+ yasm_expr_int(yasm_intnum_create_uint(1)),
+ yasm_expr_expr(boundval), cur_line);
+
+ /* Largest .align in the section specifies section alignment. */
+ boundintn = yasm_expr_get_intnum(&boundval, 0);
+ if (boundintn) {
+ unsigned long boundint = yasm_intnum_get_uint(boundintn);
+
+ /* Alignments must be a power of two. */
+ if (is_exp2(boundint)) {
+ if (boundint > yasm_section_get_align(sect))
+ yasm_section_set_align(sect, boundint, cur_line);
+ }
+ }
+
+ return yasm_bc_create_align(boundval, fillval, maxskipval,
+ yasm_section_is_code(sect) ?
+ yasm_arch_get_fill(p_object->arch) : NULL,
+ cur_line);
+}
+
+static yasm_bytecode *
+gas_parser_dir_fill(yasm_parser_gas *parser_gas, /*@only@*/ yasm_expr *repeat,
+ /*@only@*/ /*@null@*/ yasm_expr *size,
+ /*@only@*/ /*@null@*/ yasm_expr *value)
+{
+ yasm_datavalhead dvs;
+ yasm_bytecode *bc;
+ unsigned int ssize;
+
+ if (size) {
+ /*@dependent@*/ /*@null@*/ yasm_intnum *intn;
+ intn = yasm_expr_get_intnum(&size, 0);
+ if (!intn) {
+ yasm_error_set(YASM_ERROR_NOT_ABSOLUTE,
+ N_("size must be an absolute expression"));
+ yasm_expr_destroy(repeat);
+ yasm_expr_destroy(size);
+ if (value)
+ yasm_expr_destroy(value);
+ return NULL;
+ }
+ ssize = yasm_intnum_get_uint(intn);
+ } else
+ ssize = 1;
+
+ if (!value)
+ value = yasm_expr_create_ident(
+ yasm_expr_int(yasm_intnum_create_uint(0)), cur_line);
+
+ yasm_dvs_initialize(&dvs);
+ yasm_dvs_append(&dvs, yasm_dv_create_expr(value));
+ bc = yasm_bc_create_data(&dvs, ssize, 0, p_object->arch, cur_line);
+
+ yasm_bc_set_multiple(bc, repeat);
+
+ return bc;
+}
+
+static dir_lookup dirs_static[] = {
+ /* FIXME: Whether this is power-of-two or not depends on arch and objfmt. */
+ {".align", dir_align, 0, INITIAL},
+ {".p2align", dir_align, 1, INITIAL},
+ {".balign", dir_align, 0, INITIAL},
+ {".org", dir_org, 0, INITIAL},
+ /* data visibility directives */
+ {".local", dir_local, 0, INITIAL},
+ {".comm", dir_comm, 0, INITIAL},
+ {".lcomm", dir_comm, 1, INITIAL},
+ /* integer data declaration directives */
+ {".byte", dir_data, 1, INITIAL},
+ {".2byte", dir_data, 2, INITIAL},
+ {".4byte", dir_data, 4, INITIAL},
+ {".8byte", dir_data, 8, INITIAL},
+ {".16byte", dir_data, 16, INITIAL},
+ /* TODO: These should depend on arch */
+ {".short", dir_data, 2, INITIAL},
+ {".int", dir_data, 4, INITIAL},
+ {".long", dir_data, 4, INITIAL},
+ {".hword", dir_data, 2, INITIAL},
+ {".quad", dir_data, 8, INITIAL},
+ {".octa", dir_data, 16, INITIAL},
+ /* XXX: At least on x86, this is 2 bytes */
+ {".value", dir_data, 2, INITIAL},
+ /* ASCII data declaration directives */
+ {".ascii", dir_ascii, 0, INITIAL}, /* no terminating zero */
+ {".asciz", dir_ascii, 1, INITIAL}, /* add terminating zero */
+ {".string", dir_ascii, 1, INITIAL}, /* add terminating zero */
+ /* LEB128 integer data declaration directives */
+ {".sleb128", dir_leb128, 1, INITIAL}, /* signed */
+ {".uleb128", dir_leb128, 0, INITIAL}, /* unsigned */
+ /* floating point data declaration directives */
+ {".float", dir_data, 4, INITIAL},
+ {".single", dir_data, 4, INITIAL},
+ {".double", dir_data, 8, INITIAL},
+ {".tfloat", dir_data, 10, INITIAL},
+ /* section directives */
+ {".bss", dir_bss_section, 0, INITIAL},
+ {".data", dir_data_section, 0, INITIAL},
+ {".text", dir_text_section, 0, INITIAL},
+ {".section", dir_section, 0, SECTION_DIRECTIVE},
+ /* empty space/fill directives */
+ {".skip", dir_skip, 0, INITIAL},
+ {".space", dir_skip, 0, INITIAL},
+ {".fill", dir_fill, 0, INITIAL},
+ {".zero", dir_zero, 0, INITIAL},
+ /* syntax directives */
+ {".intel_syntax", dir_intel_syntax, 0, INITIAL},
+ {".att_syntax", dir_att_syntax, 0, INITIAL},
+ /* other directives */
+ {".equ", dir_equ, 0, INITIAL},
+ {".file", dir_file, 0, INITIAL},
+ {".line", dir_line, 0, INITIAL},
+ {".set", dir_equ, 0, INITIAL}
+};
+
+static void
+no_delete(void *data)
+{
+}
+
+void
+gas_parser_parse(yasm_parser_gas *parser_gas)
+{
+ dir_lookup word;
+ unsigned int i;
+ int replace = 1;
+
+ word.name = ".word";
+ word.handler = dir_data;
+ word.param = yasm_arch_wordsize(p_object->arch)/8;
+ word.newstate = INITIAL;
+
+ /* Create directive lookup */
+ parser_gas->dirs = HAMT_create(1, yasm_internal_error_);
+ HAMT_insert(parser_gas->dirs, word.name, &word, &replace, no_delete);
+ for (i=0; i<NELEMS(dirs_static); i++) {
+ replace = 1;
+ HAMT_insert(parser_gas->dirs, dirs_static[i].name,
+ &dirs_static[i], &replace, no_delete);
+ }
+
+ while (get_next_token() != 0) {
+ yasm_bytecode *bc = NULL, *temp_bc;
+
+ if (!is_eol()) {
+ bc = parse_line(parser_gas);
+ demand_eol();
+ }
+
+ yasm_errwarn_propagate(parser_gas->errwarns, cur_line);
+
+ temp_bc = yasm_section_bcs_append(cursect, bc);
+ if (temp_bc)
+ parser_gas->prev_bc = temp_bc;
+ if (curtok == ';')
+ continue; /* don't advance line number until \n */
+ if (parser_gas->save_input)
+ yasm_linemap_add_source(parser_gas->linemap,
+ temp_bc,
+ (char *)parser_gas->save_line[parser_gas->save_last ^ 1]);
+ yasm_linemap_goto_next(parser_gas->linemap);
+ parser_gas->dir_line++; /* keep track for .line followed by .file */
+ }
+
+ HAMT_destroy(parser_gas->dirs, no_delete);
+}
diff --git a/contrib/tools/yasm/modules/parsers/gas/gas-parser.c b/contrib/tools/yasm/modules/parsers/gas/gas-parser.c
index 9189b1fa08..088bcdad0a 100644
--- a/contrib/tools/yasm/modules/parsers/gas/gas-parser.c
+++ b/contrib/tools/yasm/modules/parsers/gas/gas-parser.c
@@ -1,133 +1,133 @@
-/*
- * GAS-compatible parser
- *
- * Copyright (C) 2005-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the author nor the names of other contributors
- * may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <libyasm.h>
-
-#include "gas-parser.h"
-
-
-static void
-gas_parser_do_parse(yasm_object *object, yasm_preproc *pp,
- int save_input, yasm_linemap *linemap,
- yasm_errwarns *errwarns)
-{
- yasm_parser_gas parser_gas;
- int i;
-
- parser_gas.object = object;
- parser_gas.linemap = linemap;
-
- parser_gas.locallabel_base = (char *)NULL;
- parser_gas.locallabel_base_len = 0;
-
- parser_gas.dir_fileline = 0;
- parser_gas.dir_file = NULL;
- parser_gas.dir_line = 0;
- parser_gas.seen_line_marker = 0;
-
- parser_gas.preproc = pp;
- parser_gas.errwarns = errwarns;
-
- parser_gas.prev_bc = yasm_section_bcs_first(object->cur_section);
-
- parser_gas.save_input = save_input;
- parser_gas.save_last = 0;
-
- parser_gas.peek_token = NONE;
-
- parser_gas.line = NULL;
-
- /* initialize scanner structure */
- yasm_scanner_initialize(&parser_gas.s);
-
- parser_gas.state = INITIAL;
-
- for (i=0; i<10; i++)
- parser_gas.local[i] = 0;
-
- parser_gas.intel_syntax = 0;
-
- parser_gas.is_cpp_preproc =
- yasm__strcasecmp(((yasm_preproc_base*)pp)->module->keyword, "cpp") == 0;
- parser_gas.is_nasm_preproc =
- yasm__strcasecmp(((yasm_preproc_base*)pp)->module->keyword, "nasm") == 0;
-
- gas_parser_parse(&parser_gas);
-
- /* Check for ending inside a comment */
- if (parser_gas.state == COMMENT) {
- yasm_warn_set(YASM_WARN_GENERAL, N_("end of file in comment"));
- /* XXX: Minus two to compensate for already having moved past the EOF
- * in the linemap.
- */
- yasm_errwarn_propagate(errwarns,
- yasm_linemap_get_current(parser_gas.linemap)-2);
- }
-
- yasm_scanner_delete(&parser_gas.s);
-
- /* Free locallabel base if necessary */
- if (parser_gas.locallabel_base)
- yasm_xfree(parser_gas.locallabel_base);
-
- if (parser_gas.dir_file)
- yasm_xfree(parser_gas.dir_file);
-
- /* Convert all undefined symbols into extern symbols */
- yasm_symtab_parser_finalize(object->symtab, 1, errwarns);
-}
-
-/* Define valid preprocessors to use with this parser */
-static const char *gas_parser_preproc_keywords[] = {
- "gas",
- "raw",
- "cpp",
- "nasm",
- NULL
-};
-
-/* Define parser structure -- see parser.h for details */
-yasm_parser_module yasm_gas_LTX_parser = {
- "GNU AS (GAS)-compatible parser",
- "gas",
- gas_parser_preproc_keywords,
- "gas",
- NULL, /* No standard macros */
- gas_parser_do_parse
-};
-yasm_parser_module yasm_gnu_LTX_parser = {
- "GNU AS (GAS)-compatible parser",
- "gnu",
- gas_parser_preproc_keywords,
- "gas",
- NULL, /* No standard macros */
- gas_parser_do_parse
-};
+/*
+ * GAS-compatible parser
+ *
+ * Copyright (C) 2005-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the author nor the names of other contributors
+ * may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <libyasm.h>
+
+#include "gas-parser.h"
+
+
+static void
+gas_parser_do_parse(yasm_object *object, yasm_preproc *pp,
+ int save_input, yasm_linemap *linemap,
+ yasm_errwarns *errwarns)
+{
+ yasm_parser_gas parser_gas;
+ int i;
+
+ parser_gas.object = object;
+ parser_gas.linemap = linemap;
+
+ parser_gas.locallabel_base = (char *)NULL;
+ parser_gas.locallabel_base_len = 0;
+
+ parser_gas.dir_fileline = 0;
+ parser_gas.dir_file = NULL;
+ parser_gas.dir_line = 0;
+ parser_gas.seen_line_marker = 0;
+
+ parser_gas.preproc = pp;
+ parser_gas.errwarns = errwarns;
+
+ parser_gas.prev_bc = yasm_section_bcs_first(object->cur_section);
+
+ parser_gas.save_input = save_input;
+ parser_gas.save_last = 0;
+
+ parser_gas.peek_token = NONE;
+
+ parser_gas.line = NULL;
+
+ /* initialize scanner structure */
+ yasm_scanner_initialize(&parser_gas.s);
+
+ parser_gas.state = INITIAL;
+
+ for (i=0; i<10; i++)
+ parser_gas.local[i] = 0;
+
+ parser_gas.intel_syntax = 0;
+
+ parser_gas.is_cpp_preproc =
+ yasm__strcasecmp(((yasm_preproc_base*)pp)->module->keyword, "cpp") == 0;
+ parser_gas.is_nasm_preproc =
+ yasm__strcasecmp(((yasm_preproc_base*)pp)->module->keyword, "nasm") == 0;
+
+ gas_parser_parse(&parser_gas);
+
+ /* Check for ending inside a comment */
+ if (parser_gas.state == COMMENT) {
+ yasm_warn_set(YASM_WARN_GENERAL, N_("end of file in comment"));
+ /* XXX: Minus two to compensate for already having moved past the EOF
+ * in the linemap.
+ */
+ yasm_errwarn_propagate(errwarns,
+ yasm_linemap_get_current(parser_gas.linemap)-2);
+ }
+
+ yasm_scanner_delete(&parser_gas.s);
+
+ /* Free locallabel base if necessary */
+ if (parser_gas.locallabel_base)
+ yasm_xfree(parser_gas.locallabel_base);
+
+ if (parser_gas.dir_file)
+ yasm_xfree(parser_gas.dir_file);
+
+ /* Convert all undefined symbols into extern symbols */
+ yasm_symtab_parser_finalize(object->symtab, 1, errwarns);
+}
+
+/* Define valid preprocessors to use with this parser */
+static const char *gas_parser_preproc_keywords[] = {
+ "gas",
+ "raw",
+ "cpp",
+ "nasm",
+ NULL
+};
+
+/* Define parser structure -- see parser.h for details */
+yasm_parser_module yasm_gas_LTX_parser = {
+ "GNU AS (GAS)-compatible parser",
+ "gas",
+ gas_parser_preproc_keywords,
+ "gas",
+ NULL, /* No standard macros */
+ gas_parser_do_parse
+};
+yasm_parser_module yasm_gnu_LTX_parser = {
+ "GNU AS (GAS)-compatible parser",
+ "gnu",
+ gas_parser_preproc_keywords,
+ "gas",
+ NULL, /* No standard macros */
+ gas_parser_do_parse
+};
diff --git a/contrib/tools/yasm/modules/parsers/gas/gas-parser.h b/contrib/tools/yasm/modules/parsers/gas/gas-parser.h
index 86164f78de..99659e964a 100644
--- a/contrib/tools/yasm/modules/parsers/gas/gas-parser.h
+++ b/contrib/tools/yasm/modules/parsers/gas/gas-parser.h
@@ -1,163 +1,163 @@
-/*
- * GAS-compatible parser header file
- *
- * Copyright (C) 2005-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the author nor the names of other contributors
- * may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef YASM_GAS_PARSER_H
-#define YASM_GAS_PARSER_H
-
-#define YYCTYPE unsigned char
-
-#define MAX_SAVED_LINE_LEN 80
-
-enum tokentype {
- INTNUM = 258,
- FLTNUM,
- STRING,
- REG,
- REGGROUP,
- SEGREG,
- TARGETMOD,
- LEFT_OP,
- RIGHT_OP,
- ID,
- LABEL,
- CPP_LINE_MARKER,
- NASM_LINE_MARKER,
- NONE
-};
-
-typedef union {
- unsigned int int_info;
- yasm_intnum *intn;
- yasm_floatnum *flt;
- yasm_bytecode *bc;
- uintptr_t arch_data;
- struct {
- char *contents;
- size_t len;
- } str;
-} yystype;
-#define YYSTYPE yystype
-
-enum gas_parser_state {
- INITIAL,
- COMMENT,
- SECTION_DIRECTIVE,
- NASM_FILENAME
-};
-
-typedef struct yasm_parser_gas {
- /*@only@*/ yasm_object *object;
-
- /* last "base" label for local (.) labels */
- /*@null@*/ char *locallabel_base;
- size_t locallabel_base_len;
-
- /* .line/.file: we have to see both to start setting linemap versions */
- int dir_fileline;
- /*@null@*/ char *dir_file;
- unsigned long dir_line;
-
- /* Have we seen a line marker? */
- int seen_line_marker;
-
- /*@dependent@*/ yasm_preproc *preproc;
- /*@dependent@*/ yasm_errwarns *errwarns;
-
- /*@dependent@*/ yasm_linemap *linemap;
-
- /*@null@*/ yasm_bytecode *prev_bc;
- yasm_bytecode *temp_bc;
-
- int save_input;
- YYCTYPE save_line[2][MAX_SAVED_LINE_LEN];
- int save_last;
-
- /* Line data storage used in preproc_input(). */
- char *line, *linepos;
- size_t lineleft;
-
- yasm_scanner s;
- enum gas_parser_state state;
-
- int token; /* enum tokentype or any character */
- yystype tokval;
- char tokch; /* first character of token */
-
- /* one token of lookahead; used sparingly */
- int peek_token; /* NONE if none */
- yystype peek_tokval;
- char peek_tokch;
-
- /* Index of local labels; what's stored here is the /next/ index,
- * so these are all 0 at start.
- */
- unsigned long local[10];
-
- /* Parser-handled directives HAMT lookup */
- HAMT *dirs;
-
- int intel_syntax;
-
- int is_nasm_preproc;
- int is_cpp_preproc;
-} yasm_parser_gas;
-
-/* shorter access names to commonly used parser_gas fields */
-#define p_object (parser_gas->object)
-#define p_symtab (parser_gas->object->symtab)
-#define cursect (parser_gas->object->cur_section)
-#define curtok (parser_gas->token)
-#define curval (parser_gas->tokval)
-
-#define INTNUM_val (curval.intn)
-#define FLTNUM_val (curval.flt)
-#define STRING_val (curval.str)
-#define REG_val (curval.arch_data)
-#define REGGROUP_val (curval.arch_data)
-#define SEGREG_val (curval.arch_data)
-#define TARGETMOD_val (curval.arch_data)
-#define ID_val (curval.str.contents)
-#define ID_len (curval.str.len)
-#define LABEL_val (curval.str.contents)
-#define LABEL_len (curval.str.len)
-
-#define cur_line (yasm_linemap_get_current(parser_gas->linemap))
-
-#define p_expr_new(l,o,r) yasm_expr_create(o,l,r,cur_line)
-#define p_expr_new_tree(l,o,r) yasm_expr_create_tree(l,o,r,cur_line)
-#define p_expr_new_branch(o,r) yasm_expr_create_branch(o,r,cur_line)
-#define p_expr_new_ident(r) yasm_expr_create_ident(r,cur_line)
-
-yasm_bytecode *parse_instr_intel(yasm_parser_gas *parser_gas);
-
-void gas_parser_parse(yasm_parser_gas *parser_gas);
-void gas_parser_cleanup(yasm_parser_gas *parser_gas);
-int gas_parser_lex(YYSTYPE *lvalp, yasm_parser_gas *parser_gas);
-
-#endif
+/*
+ * GAS-compatible parser header file
+ *
+ * Copyright (C) 2005-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the author nor the names of other contributors
+ * may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef YASM_GAS_PARSER_H
+#define YASM_GAS_PARSER_H
+
+#define YYCTYPE unsigned char
+
+#define MAX_SAVED_LINE_LEN 80
+
+enum tokentype {
+ INTNUM = 258,
+ FLTNUM,
+ STRING,
+ REG,
+ REGGROUP,
+ SEGREG,
+ TARGETMOD,
+ LEFT_OP,
+ RIGHT_OP,
+ ID,
+ LABEL,
+ CPP_LINE_MARKER,
+ NASM_LINE_MARKER,
+ NONE
+};
+
+typedef union {
+ unsigned int int_info;
+ yasm_intnum *intn;
+ yasm_floatnum *flt;
+ yasm_bytecode *bc;
+ uintptr_t arch_data;
+ struct {
+ char *contents;
+ size_t len;
+ } str;
+} yystype;
+#define YYSTYPE yystype
+
+enum gas_parser_state {
+ INITIAL,
+ COMMENT,
+ SECTION_DIRECTIVE,
+ NASM_FILENAME
+};
+
+typedef struct yasm_parser_gas {
+ /*@only@*/ yasm_object *object;
+
+ /* last "base" label for local (.) labels */
+ /*@null@*/ char *locallabel_base;
+ size_t locallabel_base_len;
+
+ /* .line/.file: we have to see both to start setting linemap versions */
+ int dir_fileline;
+ /*@null@*/ char *dir_file;
+ unsigned long dir_line;
+
+ /* Have we seen a line marker? */
+ int seen_line_marker;
+
+ /*@dependent@*/ yasm_preproc *preproc;
+ /*@dependent@*/ yasm_errwarns *errwarns;
+
+ /*@dependent@*/ yasm_linemap *linemap;
+
+ /*@null@*/ yasm_bytecode *prev_bc;
+ yasm_bytecode *temp_bc;
+
+ int save_input;
+ YYCTYPE save_line[2][MAX_SAVED_LINE_LEN];
+ int save_last;
+
+ /* Line data storage used in preproc_input(). */
+ char *line, *linepos;
+ size_t lineleft;
+
+ yasm_scanner s;
+ enum gas_parser_state state;
+
+ int token; /* enum tokentype or any character */
+ yystype tokval;
+ char tokch; /* first character of token */
+
+ /* one token of lookahead; used sparingly */
+ int peek_token; /* NONE if none */
+ yystype peek_tokval;
+ char peek_tokch;
+
+ /* Index of local labels; what's stored here is the /next/ index,
+ * so these are all 0 at start.
+ */
+ unsigned long local[10];
+
+ /* Parser-handled directives HAMT lookup */
+ HAMT *dirs;
+
+ int intel_syntax;
+
+ int is_nasm_preproc;
+ int is_cpp_preproc;
+} yasm_parser_gas;
+
+/* shorter access names to commonly used parser_gas fields */
+#define p_object (parser_gas->object)
+#define p_symtab (parser_gas->object->symtab)
+#define cursect (parser_gas->object->cur_section)
+#define curtok (parser_gas->token)
+#define curval (parser_gas->tokval)
+
+#define INTNUM_val (curval.intn)
+#define FLTNUM_val (curval.flt)
+#define STRING_val (curval.str)
+#define REG_val (curval.arch_data)
+#define REGGROUP_val (curval.arch_data)
+#define SEGREG_val (curval.arch_data)
+#define TARGETMOD_val (curval.arch_data)
+#define ID_val (curval.str.contents)
+#define ID_len (curval.str.len)
+#define LABEL_val (curval.str.contents)
+#define LABEL_len (curval.str.len)
+
+#define cur_line (yasm_linemap_get_current(parser_gas->linemap))
+
+#define p_expr_new(l,o,r) yasm_expr_create(o,l,r,cur_line)
+#define p_expr_new_tree(l,o,r) yasm_expr_create_tree(l,o,r,cur_line)
+#define p_expr_new_branch(o,r) yasm_expr_create_branch(o,r,cur_line)
+#define p_expr_new_ident(r) yasm_expr_create_ident(r,cur_line)
+
+yasm_bytecode *parse_instr_intel(yasm_parser_gas *parser_gas);
+
+void gas_parser_parse(yasm_parser_gas *parser_gas);
+void gas_parser_cleanup(yasm_parser_gas *parser_gas);
+int gas_parser_lex(YYSTYPE *lvalp, yasm_parser_gas *parser_gas);
+
+#endif
diff --git a/contrib/tools/yasm/modules/parsers/nasm/nasm-parse.c b/contrib/tools/yasm/modules/parsers/nasm/nasm-parse.c
index 63014abd5d..44d3b5d707 100644
--- a/contrib/tools/yasm/modules/parsers/nasm/nasm-parse.c
+++ b/contrib/tools/yasm/modules/parsers/nasm/nasm-parse.c
@@ -1,1680 +1,1680 @@
-/*
- * NASM-compatible parser
- *
- * Copyright (C) 2001-2007 Peter Johnson, Michael Urman
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <libyasm.h>
-
-#include <math.h>
-
-#include "modules/parsers/nasm/nasm-parser.h"
-#include "modules/preprocs/nasm/nasm.h"
-
-typedef enum {
- NORM_EXPR,
- DIR_EXPR, /* Can't have seg:off or WRT anywhere */
- DV_EXPR /* Can't have registers anywhere */
-} expr_type;
-
-static yasm_bytecode *parse_line(yasm_parser_nasm *parser_nasm);
-static int parse_directive_valparams(yasm_parser_nasm *parser_nasm,
- /*@out@*/ yasm_valparamhead *vps);
-static yasm_bytecode *parse_times(yasm_parser_nasm *parser_nasm);
-static yasm_bytecode *parse_exp(yasm_parser_nasm *parser_nasm);
-static yasm_bytecode *parse_instr(yasm_parser_nasm *parser_nasm);
-static yasm_insn_operand *parse_operand(yasm_parser_nasm *parser_nasm);
-static yasm_insn_operand *parse_memaddr(yasm_parser_nasm *parser_nasm);
-static yasm_expr *parse_expr(yasm_parser_nasm *parser_nasm, expr_type type);
-static yasm_expr *parse_bexpr(yasm_parser_nasm *parser_nasm, expr_type type);
-static yasm_expr *parse_expr0(yasm_parser_nasm *parser_nasm, expr_type type);
-static yasm_expr *parse_expr1(yasm_parser_nasm *parser_nasm, expr_type type);
-static yasm_expr *parse_expr2(yasm_parser_nasm *parser_nasm, expr_type type);
-static yasm_expr *parse_expr3(yasm_parser_nasm *parser_nasm, expr_type type);
-static yasm_expr *parse_expr4(yasm_parser_nasm *parser_nasm, expr_type type);
-static yasm_expr *parse_expr5(yasm_parser_nasm *parser_nasm, expr_type type);
-static yasm_expr *parse_expr6(yasm_parser_nasm *parser_nasm, expr_type type);
-
-static void nasm_parser_directive
- (yasm_parser_nasm *parser_nasm, const char *name,
- /*@null@*/ yasm_valparamhead *valparams,
- /*@null@*/ yasm_valparamhead *objext_valparams);
-static void set_nonlocal_label(yasm_parser_nasm *parser_nasm, const char *name);
-static void define_label(yasm_parser_nasm *parser_nasm, /*@only@*/ char *name,
- unsigned int size);
-
-static void yasm_ea_set_implicit_size_segment(yasm_parser_nasm *parser_nasm,
- yasm_effaddr *ea, yasm_expr *e)
-{
- if (parser_nasm->tasm) {
- const char *segment = yasm_expr_segment(e);
- ea->data_len = yasm_expr_size(e);
- if (segment) {
- const char *segreg = tasm_get_segment_register(segment);
- if (segreg)
- yasm_arch_parse_check_regtmod(p_object->arch, segreg,
- strlen(segreg), &ea->segreg);
- }
- }
-}
-
-
-#define is_eol_tok(tok) ((tok) == 0)
-#define is_eol() is_eol_tok(curtok)
-
-#define get_next_token() (curtok = nasm_parser_lex(&curval, parser_nasm))
-
-static void
-get_peek_token(yasm_parser_nasm *parser_nasm)
-{
- char savech = parser_nasm->tokch;
- if (parser_nasm->peek_token != NONE)
- yasm_internal_error(N_("only can have one token of lookahead"));
- parser_nasm->peek_token =
- nasm_parser_lex(&parser_nasm->peek_tokval, parser_nasm);
- parser_nasm->peek_tokch = parser_nasm->tokch;
- parser_nasm->tokch = savech;
-}
-
-static void
-destroy_curtok_(yasm_parser_nasm *parser_nasm)
-{
- if (curtok < 256)
- ;
- else switch ((enum tokentype)curtok) {
- case INTNUM:
- yasm_intnum_destroy(curval.intn);
- break;
- case FLTNUM:
- yasm_floatnum_destroy(curval.flt);
- break;
- case DIRECTIVE_NAME:
- case FILENAME:
- case ID:
- case LOCAL_ID:
- case SPECIAL_ID:
- case NONLOCAL_ID:
- yasm_xfree(curval.str_val);
- break;
- case STRING:
- yasm_xfree(curval.str.contents);
- break;
- case INSN:
- yasm_bc_destroy(curval.bc);
- break;
- default:
- break;
- }
- curtok = NONE; /* sanity */
-}
-#define destroy_curtok() destroy_curtok_(parser_nasm)
-
-/* Eat all remaining tokens to EOL, discarding all of them. If there's any
- * intervening tokens, generates an error (junk at end of line).
- */
-static void
-demand_eol_(yasm_parser_nasm *parser_nasm)
-{
- if (is_eol())
- return;
-
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("junk at end of line, first unrecognized character is `%c'"),
- parser_nasm->tokch);
-
- do {
- destroy_curtok();
- get_next_token();
- } while (!is_eol());
-}
-#define demand_eol() demand_eol_(parser_nasm)
-
-static const char *
-describe_token(int token)
-{
- static char strch[] = "` '";
- const char *str;
-
- switch (token) {
- case 0: str = "end of line"; break;
- case INTNUM: str = "integer"; break;
- case FLTNUM: str = "floating point value"; break;
- case DIRECTIVE_NAME: str = "directive name"; break;
- case FILENAME: str = "filename"; break;
- case STRING: str = "string"; break;
- case SIZE_OVERRIDE: str = "size override"; break;
- case DECLARE_DATA: str = "DB/DW/etc."; break;
- case RESERVE_SPACE: str = "RESB/RESW/etc."; break;
- case INCBIN: str = "INCBIN"; break;
- case EQU: str = "EQU"; break;
- case TIMES: str = "TIMES"; break;
- case SEG: str = "SEG"; break;
- case WRT: str = "WRT"; break;
- case NOSPLIT: str = "NOSPLIT"; break;
- case STRICT: str = "STRICT"; break;
- case INSN: str = "instruction"; break;
- case PREFIX: str = "instruction prefix"; break;
- case REG: str = "register"; break;
- case REGGROUP: str = "register group"; break;
- case SEGREG: str = "segment register"; break;
- case TARGETMOD: str = "target modifier"; break;
- case LEFT_OP: str = "<<"; break;
- case RIGHT_OP: str = ">>"; break;
- case SIGNDIV: str = "//"; break;
- case SIGNMOD: str = "%%"; break;
- case START_SECTION_ID: str = "$$"; break;
- case ID: str = "identifier"; break;
- case LOCAL_ID: str = ".identifier"; break;
- case SPECIAL_ID: str = "..identifier"; break;
- case NONLOCAL_ID: str = "..@identifier"; break;
- case LINE: str = "%line"; break;
- default:
- strch[1] = token;
- str = strch;
- break;
- }
-
- return str;
-}
-
-static int
-expect_(yasm_parser_nasm *parser_nasm, int token)
-{
- if (curtok == token)
- return 1;
-
- yasm_error_set(YASM_ERROR_PARSE, "expected %s", describe_token(token));
- destroy_curtok();
- return 0;
-}
-#define expect(token) expect_(parser_nasm, token)
-
-void
-nasm_parser_parse(yasm_parser_nasm *parser_nasm)
-{
- unsigned char *line;
- while ((line = (unsigned char *)
- yasm_preproc_get_line(parser_nasm->preproc)) != NULL) {
- yasm_bytecode *bc = NULL, *temp_bc;
-
- parser_nasm->s.bot = line;
- parser_nasm->s.tok = line;
- parser_nasm->s.ptr = line;
- parser_nasm->s.cur = line;
- parser_nasm->s.lim = line + strlen((char *)line)+1;
- parser_nasm->s.top = parser_nasm->s.lim;
-
- get_next_token();
- if (!is_eol()) {
- bc = parse_line(parser_nasm);
- demand_eol();
- }
-
- if (parser_nasm->abspos) {
- /* If we're inside an absolute section, just add to the absolute
- * position rather than appending bytecodes to a section.
- * Only RES* are allowed in an absolute section, so this is easy.
- */
- if (bc) {
- /*@null@*/ const yasm_expr *numitems, *multiple;
- unsigned int itemsize;
- numitems = yasm_bc_reserve_numitems(bc, &itemsize);
- if (numitems) {
- yasm_expr *e;
- e = yasm_expr_create(YASM_EXPR_MUL,
- yasm_expr_expr(yasm_expr_copy(numitems)),
- yasm_expr_int(yasm_intnum_create_uint(itemsize)),
- cur_line);
- multiple = yasm_bc_get_multiple_expr(bc);
- if (multiple)
- e = yasm_expr_create_tree(e, YASM_EXPR_MUL,
- yasm_expr_copy(multiple),
- cur_line);
- parser_nasm->abspos = yasm_expr_create_tree(
- parser_nasm->abspos, YASM_EXPR_ADD, e, cur_line);
- } else
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("only RES* allowed within absolute section"));
- yasm_bc_destroy(bc);
- }
- temp_bc = NULL;
- } else if (bc) {
- temp_bc = yasm_section_bcs_append(cursect, bc);
- if (temp_bc)
- parser_nasm->prev_bc = temp_bc;
- } else
- temp_bc = NULL;
- yasm_errwarn_propagate(parser_nasm->errwarns, cur_line);
-
- if (parser_nasm->save_input)
- yasm_linemap_add_source(parser_nasm->linemap, temp_bc,
- (char *)line);
- yasm_linemap_goto_next(parser_nasm->linemap);
- yasm_xfree(line);
- }
-}
-
-/* All parse_* functions expect to be called with curtok being their first
- * token. They should return with curtok being the token *after* their
- * information.
- */
-
-static yasm_bytecode *
-parse_line(yasm_parser_nasm *parser_nasm)
-{
- yasm_bytecode *bc;
-
- bc = parse_exp(parser_nasm);
- if (bc)
- return bc;
-
- switch (curtok) {
- case LINE: /* LINE INTNUM '+' INTNUM FILENAME */
- {
- yasm_intnum *line, *incr;
- char *filename;
-
- get_next_token();
-
- if (!expect(INTNUM)) return NULL;
- line = INTNUM_val;
- get_next_token();
-
- if (!expect('+')) return NULL;
- get_next_token();
-
- if (!expect(INTNUM)) return NULL;
- incr = INTNUM_val;
- get_next_token();
-
- if (!expect(FILENAME)) return NULL;
- filename = FILENAME_val;
- get_next_token();
-
- /* %line indicates the line number of the *next* line, so subtract
- * out the increment when setting the line number.
- */
- yasm_linemap_set(parser_nasm->linemap, filename, 0,
- yasm_intnum_get_uint(line) - yasm_intnum_get_uint(incr),
- yasm_intnum_get_uint(incr));
- yasm_intnum_destroy(line);
- yasm_intnum_destroy(incr);
- yasm_xfree(filename);
- return NULL;
- }
- case '[': /* [ directive ] */
- {
- char *dirname;
- yasm_valparamhead dir_vps;
- int have_vps = 1;
-
- parser_nasm->state = DIRECTIVE;
- get_next_token();
-
- if (!expect(DIRECTIVE_NAME))
- return NULL;
- dirname = DIRECTIVE_NAME_val;
- get_next_token();
-
- /* ignore [warning]. TODO: actually implement */
- if (yasm__strcasecmp(dirname, "warning") == 0) {
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("[warning] directive not supported; ignored"));
-
- /* throw away the rest of the directive tokens */
- while (!is_eol() && curtok != ']')
- {
- destroy_curtok();
- get_next_token();
- }
- expect(']');
- get_next_token();
- return NULL;
- }
-
- if (curtok == ']' || curtok == ':')
- have_vps = 0;
- else if (!parse_directive_valparams(parser_nasm, &dir_vps)) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("invalid arguments to [%s]"), dirname);
- yasm_xfree(dirname);
- return NULL;
- }
- if (curtok == ':') {
- yasm_valparamhead ext_vps;
- get_next_token();
- if (!parse_directive_valparams(parser_nasm, &ext_vps)) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("invalid arguments to [%s]"), dirname);
- yasm_xfree(dirname);
- return NULL;
- }
- nasm_parser_directive(parser_nasm, dirname,
- have_vps ? &dir_vps : NULL, &ext_vps);
- } else
- nasm_parser_directive(parser_nasm, dirname,
- have_vps ? &dir_vps : NULL, NULL);
- yasm_xfree(dirname);
- expect(']');
- get_next_token();
- return NULL;
- }
- case TIMES: /* TIMES expr exp */
- get_next_token();
- return parse_times(parser_nasm);
- case ID:
- case SPECIAL_ID:
- case NONLOCAL_ID:
- case LOCAL_ID:
- {
- char *name = ID_val;
- int local = parser_nasm->tasm
- ? (curtok == ID || curtok == LOCAL_ID ||
- (curtok == SPECIAL_ID && name[0] == '@'))
- : (curtok != ID);
- unsigned int size = 0;
-
- get_next_token();
- if (is_eol()) {
- /* label alone on the line */
- yasm_warn_set(YASM_WARN_ORPHAN_LABEL,
- N_("label alone on a line without a colon might be in error"));
- if (!local)
- set_nonlocal_label(parser_nasm, name);
- define_label(parser_nasm, name, 0);
- return NULL;
- }
- if (curtok == ':')
- get_next_token();
-
- if (curtok == EQU || (parser_nasm->tasm && curtok == '=')) {
- /* label EQU expr */
- yasm_expr *e;
- get_next_token();
-
- if (parser_nasm->tasm && curtok == SIZE_OVERRIDE) {
- size = SIZE_OVERRIDE_val;
- get_next_token();
- }
-
- e = parse_expr(parser_nasm, NORM_EXPR);
- if (!e) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("expression expected after %s"), "EQU");
- yasm_xfree(name);
- return NULL;
- }
- yasm_symtab_define_equ(p_symtab, name, e, cur_line);
- yasm_xfree(name);
- return NULL;
- }
-
- if (parser_nasm->tasm && curtok == LABEL)
- get_next_token();
-
- if (parser_nasm->tasm && curtok == SIZE_OVERRIDE) {
- size = SIZE_OVERRIDE_val;
- get_next_token();
- }
-
- if (!local)
- set_nonlocal_label(parser_nasm, name);
-
- if (is_eol()) {
- define_label(parser_nasm, name, size);
- return NULL;
- }
- if (curtok == TIMES) {
- define_label(parser_nasm, name, size);
- get_next_token();
- return parse_times(parser_nasm);
- }
- bc = parse_exp(parser_nasm);
- if (!parser_nasm->tasm && !bc)
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("instruction expected after label"));
- if (parser_nasm->tasm && bc && !size)
- size = yasm_bc_elem_size(bc);
- define_label(parser_nasm, name, size);
- return bc;
- }
- default:
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("label or instruction expected at start of line"));
- return NULL;
- }
-}
-
-static int
-parse_directive_valparams(yasm_parser_nasm *parser_nasm,
- /*@out@*/ yasm_valparamhead *vps)
-{
- yasm_vps_initialize(vps);
- for (;;) {
- yasm_valparam *vp;
- yasm_expr *e;
- char *id = NULL;
-
- /* Look for value first */
- if (curtok == ID) {
- get_peek_token(parser_nasm);
- if (parser_nasm->peek_token == '=') {
- id = ID_val;
- get_next_token(); /* id */
- get_next_token(); /* '=' */
- }
- }
-
- /* Look for parameter */
- switch (curtok) {
- case STRING:
- vp = yasm_vp_create_string(id, STRING_val.contents);
- get_next_token();
- break;
- case ID:
- /* We need a peek token, but avoid error if we have one
- * already; we need to work whether or not we hit the
- * "value=" if test above.
- *
- * We cheat and peek ahead to see if this is just an ID or
- * the ID is part of an expression. We assume a + or - means
- * that it's part of an expression (e.g. "x+y" is parsed as
- * the expression "x+y" and not as "x", "+y").
- */
- if (parser_nasm->peek_token == NONE)
- get_peek_token(parser_nasm);
- switch (parser_nasm->peek_token) {
- case '|': case '^': case '&': case LEFT_OP: case RIGHT_OP:
- case '+': case '-':
- case '*': case '/': case '%': case SIGNDIV: case SIGNMOD:
- break;
- default:
- /* Just an id */
- vp = yasm_vp_create_id(id, ID_val, '$');
- get_next_token();
- goto next;
- }
- /*@fallthrough@*/
- default:
- e = parse_expr(parser_nasm, DIR_EXPR);
- if (!e) {
- yasm_vps_delete(vps);
- return 0;
- }
- vp = yasm_vp_create_expr(id, e);
- break;
- }
-next:
- yasm_vps_append(vps, vp);
- if (curtok == ',')
- get_next_token();
- if (curtok == ']' || curtok == ':' || is_eol())
- return 1;
- }
-}
-
-static yasm_bytecode *
-parse_times(yasm_parser_nasm *parser_nasm)
-{
- yasm_expr *multiple;
- yasm_bytecode *bc;
-
- multiple = parse_bexpr(parser_nasm, DV_EXPR);
- if (!multiple) {
- yasm_error_set(YASM_ERROR_SYNTAX, N_("expression expected after %s"),
- "TIMES");
- return NULL;
- }
- bc = parse_exp(parser_nasm);
- if (!bc) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("instruction expected after TIMES expression"));
- yasm_expr_destroy(multiple);
- return NULL;
- }
- yasm_bc_set_multiple(bc, multiple);
- return bc;
-}
-
-static yasm_bytecode *
-parse_exp(yasm_parser_nasm *parser_nasm)
-{
- yasm_bytecode *bc;
-
- bc = parse_instr(parser_nasm);
- if (bc)
- return bc;
-
- switch (curtok) {
- case DECLARE_DATA:
- {
- unsigned int size = DECLARE_DATA_val/8;
- yasm_datavalhead dvs;
- yasm_dataval *dv;
- yasm_expr *e, *e2;
-
- get_next_token();
-
- yasm_dvs_initialize(&dvs);
- for (;;) {
- if (curtok == STRING) {
- /* Peek ahead to see if we're in an expr. If we're not,
- * then generate a real string dataval.
- */
- get_peek_token(parser_nasm);
- if (parser_nasm->peek_token == ','
- || is_eol_tok(parser_nasm->peek_token)) {
- dv = yasm_dv_create_string(STRING_val.contents,
- STRING_val.len);
- get_next_token();
- goto dv_done;
- }
- }
- if (curtok == '?') {
- yasm_dvs_delete(&dvs);
- get_next_token();
- if (! is_eol_tok(curtok)) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("can not handle more than one '?'"));
- return NULL;
- }
- return yasm_bc_create_reserve(
- p_expr_new_ident(yasm_expr_int(
- yasm_intnum_create_uint(1))),
- size, cur_line);
- }
- if (!(e = parse_bexpr(parser_nasm, DV_EXPR))) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("expression or string expected"));
- yasm_dvs_delete(&dvs);
- return NULL;
- }
- if (curtok == DUP) {
- get_next_token();
- if (curtok != '(') {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("expected ( after DUP"));
- goto error;
- }
- get_next_token();
- if (curtok == '?') {
- get_next_token();
- if (curtok != ')') {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("expected ) after DUPlicated expression"));
- goto error;
- }
- get_next_token();
- if (! is_eol_tok(curtok)) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("can not handle more than one '?'"));
- goto error;
- }
- yasm_dvs_delete(&dvs);
- return yasm_bc_create_reserve(e, size, cur_line);
- } else if ((e2 = parse_bexpr(parser_nasm, DV_EXPR))) {
- if (curtok != ')') {
- yasm_expr_destroy(e2);
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("expected ) after DUPlicated expression"));
- goto error;
- }
- get_next_token();
- dv = yasm_dv_create_expr(e2);
- yasm_dv_set_multiple(dv, e);
- } else {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("expression or string expected"));
-error:
- yasm_expr_destroy(e);
- yasm_dvs_delete(&dvs);
- return NULL;
- }
- } else
- dv = yasm_dv_create_expr(e);
-dv_done:
- yasm_dvs_append(&dvs, dv);
- if (is_eol())
- break;
- if (!expect(',')) {
- yasm_dvs_delete(&dvs);
- return NULL;
- }
- get_next_token();
- if (is_eol()) /* allow trailing , on list */
- break;
- }
- return yasm_bc_create_data(&dvs, size, 0, p_object->arch,
- cur_line);
- }
- case RESERVE_SPACE:
- {
- unsigned int size = RESERVE_SPACE_val/8;
- yasm_expr *e;
- get_next_token();
- e = parse_bexpr(parser_nasm, DV_EXPR);
- if (!e) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("expression expected after %s"), "RESx");
- return NULL;
- }
- return yasm_bc_create_reserve(e, size, cur_line);
- }
- case INCBIN:
- {
- char *filename;
- yasm_expr *start = NULL, *maxlen = NULL;
-
- get_next_token();
-
- if (!expect(STRING)) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("filename string expected after INCBIN"));
- return NULL;
- }
- filename = STRING_val.contents;
- get_next_token();
-
- /* optional start expression */
- if (curtok == ',')
- get_next_token();
- if (is_eol())
- goto incbin_done;
- start = parse_bexpr(parser_nasm, DV_EXPR);
- if (!start) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("expression expected for INCBIN start"));
- return NULL;
- }
-
- /* optional maxlen expression */
- if (curtok == ',')
- get_next_token();
- if (is_eol())
- goto incbin_done;
- maxlen = parse_bexpr(parser_nasm, DV_EXPR);
- if (!maxlen) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("expression expected for INCBIN maximum length"));
- return NULL;
- }
-
-incbin_done:
- return yasm_bc_create_incbin(filename, start, maxlen,
- parser_nasm->linemap, cur_line);
- }
- default:
- return NULL;
- }
-}
-
-static yasm_bytecode *
-parse_instr(yasm_parser_nasm *parser_nasm)
-{
- yasm_bytecode *bc;
-
- switch (curtok) {
- case INSN:
- {
- yasm_insn *insn;
- bc = INSN_val;
- insn = yasm_bc_get_insn(bc);
-
- get_next_token();
- if (is_eol())
- return bc; /* no operands */
-
- /* parse operands */
- for (;;) {
- yasm_insn_operand *op = parse_operand(parser_nasm);
- if (!op) {
- if (insn->num_operands == 0)
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("unexpected %s after instruction"),
- describe_token(curtok));
- else
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("expected operand, got %s"),
- describe_token(curtok));
- yasm_bc_destroy(bc);
- return NULL;
- }
- yasm_insn_ops_append(insn, op);
-
- if (is_eol())
- break;
- if (!expect(',')) {
- yasm_bc_destroy(bc);
- return NULL;
- }
- get_next_token();
- }
- return bc;
- }
- case PREFIX:
- {
- uintptr_t prefix = PREFIX_val;
- get_next_token();
- bc = parse_instr(parser_nasm);
- if (!bc)
- bc = yasm_arch_create_empty_insn(p_object->arch, cur_line);
- yasm_insn_add_prefix(yasm_bc_get_insn(bc), prefix);
- return bc;
- }
- case SEGREG:
- {
- uintptr_t segreg = SEGREG_val;
- get_next_token();
- bc = parse_instr(parser_nasm);
- if (!bc)
- bc = yasm_arch_create_empty_insn(p_object->arch, cur_line);
- yasm_insn_add_seg_prefix(yasm_bc_get_insn(bc), segreg);
- return bc;
- }
- default:
- return NULL;
- }
-}
-
-static yasm_insn_operand *
-parse_operand(yasm_parser_nasm *parser_nasm)
-{
- yasm_insn_operand *op;
- switch (curtok) {
- case '[':
- {
- get_next_token();
- op = parse_memaddr(parser_nasm);
-
- expect(']');
- get_next_token();
-
- if (!op) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("memory address expected"));
- return NULL;
- }
-
- if (parser_nasm->tasm && !is_eol() && curtok != ',') {
- yasm_expr *e = NULL, *f;
- yasm_effaddr *ea;
-
- switch (op->type) {
- case YASM_INSN__OPERAND_IMM:
- e = op->data.val;
- break;
- case YASM_INSN__OPERAND_MEMORY:
- if (op->data.ea->disp.rel) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("relative adressing not supported\n"));
- return NULL;
- }
- e = yasm_expr_copy(op->data.ea->disp.abs);
- yasm_arch_ea_destroy(p_object->arch, op->data.ea);
- break;
- case YASM_INSN__OPERAND_REG:
- case YASM_INSN__OPERAND_SEGREG:
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("register adressing not supported\n"));
- return NULL;
- }
- yasm_xfree(op);
- f = parse_bexpr(parser_nasm, NORM_EXPR);
- if (!f) {
- yasm_expr_destroy(e);
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("expected expression after ]"));
- return NULL;
- }
- e = p_expr_new_tree(e, YASM_EXPR_ADD, f);
- ea = yasm_arch_ea_create(p_object->arch, e);
- yasm_ea_set_implicit_size_segment(parser_nasm, ea, e);
- op = yasm_operand_create_mem(ea);
- }
- return op;
- }
- case OFFSET:
- {
- yasm_insn_operand *op2;
- get_next_token();
- if (parser_nasm->masm && curtok == ID && !yasm__strcasecmp(ID_val, "flat")) {
- get_next_token();
- if (curtok == ':') {
- get_next_token();
- }
- }
- op = parse_operand(parser_nasm);
- if (!op) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("memory address expected"));
- return NULL;
- }
- if (op->type == YASM_INSN__OPERAND_IMM)
- return op;
- if (op->type != YASM_INSN__OPERAND_MEMORY) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("OFFSET applied to non-memory operand"));
- return NULL;
- }
- if (op->data.ea->disp.rel) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("OFFSET applied to non-absolute memory operand"));
- return NULL;
- }
- if (op->data.ea->disp.abs)
- op2 = yasm_operand_create_imm(op->data.ea->disp.abs);
- else
- op2 = yasm_operand_create_imm(p_expr_new_ident(
- yasm_expr_int(yasm_intnum_create_uint(0))));
- yasm_xfree(op);
- return op2;
- }
- case SEGREG:
- {
- uintptr_t segreg = SEGREG_val;
- get_next_token();
- if (parser_nasm->tasm && curtok == ':') {
- get_next_token();
- op = parse_operand(parser_nasm);
- if (!op)
- return NULL;
- if (op->type == YASM_INSN__OPERAND_IMM) {
- yasm_effaddr *ea = yasm_arch_ea_create(p_object->arch,
- op->data.val);
- yasm_insn_operand *op2;
- yasm_ea_set_implicit_size_segment(parser_nasm, ea,
- op->data.val);
- op2 = yasm_operand_create_mem(ea);
- op2->size = op->size;
- yasm_xfree(op);
- op = op2;
- }
- if (op->type != YASM_INSN__OPERAND_MEMORY) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("segment applied to non-memory operand"));
- return NULL;
- }
- yasm_ea_set_segreg(op->data.ea, segreg);
- return op;
- }
- op = yasm_operand_create_segreg(segreg);
- return op;
- }
- case REG:
- op = yasm_operand_create_reg(REG_val);
- get_next_token();
- return op;
- case REGGROUP:
- {
- unsigned long regindex;
- uintptr_t reg = REGGROUP_val;
- get_next_token(); /* REGGROUP */
- if (curtok != '(')
- return yasm_operand_create_reg(reg);
- get_next_token(); /* '(' */
- if (!expect(INTNUM)) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("integer register index expected"));
- return NULL;
- }
- regindex = yasm_intnum_get_uint(INTNUM_val);
- get_next_token(); /* INTNUM */
- if (!expect(')')) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("missing closing parenthesis for register index"));
- return NULL;
- }
- get_next_token(); /* ')' */
- reg = yasm_arch_reggroup_get_reg(p_object->arch, reg, regindex);
- if (reg == 0) {
- yasm_error_set(YASM_ERROR_SYNTAX, N_("bad register index `%u'"),
- regindex);
- return NULL;
- }
- return yasm_operand_create_reg(reg);
- }
- case STRICT:
- get_next_token();
- op = parse_operand(parser_nasm);
- if (op)
- op->strict = 1;
- return op;
- case SIZE_OVERRIDE:
- {
- unsigned int size = SIZE_OVERRIDE_val;
- get_next_token();
- if (parser_nasm->masm && curtok == ID && !yasm__strcasecmp(ID_val, "ptr")) {
- get_next_token();
- }
- op = parse_operand(parser_nasm);
- if (!op)
- return NULL;
- if (op->type == YASM_INSN__OPERAND_REG &&
- yasm_arch_get_reg_size(p_object->arch, op->data.reg) != size)
- yasm_error_set(YASM_ERROR_TYPE,
- N_("cannot override register size"));
- else {
- /* Silently override others unless a warning is turned on.
- * This is to allow overrides such as:
- * %define arg1 dword [bp+4]
- * cmp word arg1, 2
- * Which expands to:
- * cmp word dword [bp+4], 2
- */
- if (op->size != 0) {
- if (op->size != size)
- yasm_warn_set(YASM_WARN_SIZE_OVERRIDE,
- N_("overriding operand size from %u-bit to %u-bit"),
- op->size, size);
- else
- yasm_warn_set(YASM_WARN_SIZE_OVERRIDE,
- N_("double operand size override"));
- }
- op->size = size;
- }
- return op;
- }
- case TARGETMOD:
- {
- uintptr_t tmod = TARGETMOD_val;
- get_next_token();
- op = parse_operand(parser_nasm);
- if (op)
- op->targetmod = tmod;
- return op;
- }
- case ID:
- case LOCAL_ID:
- case NONLOCAL_ID:
- if (parser_nasm->tasm) {
- get_peek_token(parser_nasm);
- if (parser_nasm->peek_token == '[') {
- yasm_symrec *sym = yasm_symtab_use(p_symtab, ID_val,
- cur_line);
- yasm_expr *e = p_expr_new_ident(yasm_expr_sym(sym)), *f;
- yasm_effaddr *ea;
- yasm_xfree(ID_val);
- get_next_token();
- get_next_token();
- f = parse_bexpr(parser_nasm, NORM_EXPR);
- if (!f) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("expected expression after ["));
- return NULL;
- }
- e = p_expr_new_tree(e, YASM_EXPR_ADD, f);
- if (!expect(']')) {
- yasm_error_set(YASM_ERROR_SYNTAX, N_("missing closing bracket"));
- return NULL;
- }
- get_next_token();
- ea = yasm_arch_ea_create(p_object->arch, e);
- yasm_ea_set_implicit_size_segment(parser_nasm, ea, e);
- op = yasm_operand_create_mem(ea);
- return op;
- }
- }
- /* Fallthrough */
- default:
- {
- yasm_expr *e = parse_bexpr(parser_nasm, NORM_EXPR);
- if (!e)
- return NULL;
- if (curtok != ':') {
- if (parser_nasm->tasm && yasm_expr_size(e)) {
- yasm_effaddr *ea = yasm_arch_ea_create(p_object->arch, e);
- yasm_ea_set_implicit_size_segment(parser_nasm, ea, e);
- op = yasm_operand_create_mem(ea);
- return op;
- } else if (curtok == '[') {
- yasm_expr *f;
- yasm_effaddr *ea;
- yasm_insn_operand *op2;
-
- op = parse_operand(parser_nasm);
- if (!op)
- return NULL;
-
- f = op->data.ea->disp.abs;
- e = p_expr_new_tree(e, YASM_EXPR_ADD, f);
- ea = yasm_arch_ea_create(p_object->arch, e);
- yasm_ea_set_implicit_size_segment(parser_nasm, ea, e);
- op2 = yasm_operand_create_mem(ea);
-
- yasm_xfree(op);
-
- return op2;
- } else {
- return yasm_operand_create_imm(e);
- }
- } else {
- yasm_expr *off;
- get_next_token();
- off = parse_bexpr(parser_nasm, NORM_EXPR);
- if (!off) {
- yasm_expr_destroy(e);
- return NULL;
- }
- op = yasm_operand_create_imm(off);
- op->seg = e;
- return op;
- }
- }
- }
-}
-
-/* memory addresses */
-static yasm_insn_operand *
-parse_memaddr(yasm_parser_nasm *parser_nasm)
-{
- yasm_insn_operand *op;
- switch (curtok) {
- case SEGREG:
- {
- uintptr_t segreg = SEGREG_val;
- get_next_token();
- if (!expect(':')) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("`:' required after segment register"));
- return NULL;
- }
- get_next_token();
- op = parse_memaddr(parser_nasm);
- if (op)
- yasm_ea_set_segreg(op->data.ea, segreg);
- return op;
- }
- case SIZE_OVERRIDE:
- {
- unsigned int size = SIZE_OVERRIDE_val;
- get_next_token();
- op = parse_memaddr(parser_nasm);
- if (op)
- op->data.ea->disp.size = size;
- return op;
- }
- case NOSPLIT:
- get_next_token();
- op = parse_memaddr(parser_nasm);
- if (op)
- op->data.ea->nosplit = 1;
- return op;
- case REL:
- get_next_token();
- op = parse_memaddr(parser_nasm);
- if (op) {
- op->data.ea->pc_rel = 1;
- op->data.ea->not_pc_rel = 0;
- }
- return op;
- case ABS:
- get_next_token();
- op = parse_memaddr(parser_nasm);
- if (op) {
- op->data.ea->pc_rel = 0;
- op->data.ea->not_pc_rel = 1;
- }
- return op;
- default:
- {
- yasm_expr *e = parse_bexpr(parser_nasm, NORM_EXPR);
- if (!e)
- return NULL;
- if (curtok != ':') {
- yasm_effaddr *ea = yasm_arch_ea_create(p_object->arch, e);
- yasm_ea_set_implicit_size_segment(parser_nasm, ea, e);
- return yasm_operand_create_mem(ea);
- } else {
- yasm_effaddr *ea;
- yasm_expr *off;
- get_next_token();
- off = parse_bexpr(parser_nasm, NORM_EXPR);
- if (!off) {
- yasm_expr_destroy(e);
- return NULL;
- }
- ea = yasm_arch_ea_create(p_object->arch, off);
- yasm_ea_set_implicit_size_segment(parser_nasm, ea, off);
- op = yasm_operand_create_mem(ea);
- op->seg = e;
- return op;
- }
- }
- }
-}
-
-/* Expression grammar parsed is:
- *
- * expr : bexpr [ : bexpr ]
- * bexpr : expr0 [ WRT expr6 ]
- * expr0 : expr1 [ {|} expr1...]
- * expr1 : expr2 [ {^} expr2...]
- * expr2 : expr3 [ {&} expr3...]
- * expr3 : expr4 [ {<<,>>} expr4...]
- * expr4 : expr5 [ {+,-} expr5...]
- * expr5 : expr6 [ {*,/,%,//,%%} expr6...]
- * expr6 : { ~,+,-,SEG } expr6
- * | (expr)
- * | symbol
- * | $
- * | number
- */
-
-#define parse_expr_common(leftfunc, tok, rightfunc, op) \
- do { \
- yasm_expr *e, *f; \
- e = leftfunc(parser_nasm, type); \
- if (!e) \
- return NULL; \
- \
- while (curtok == tok) { \
- get_next_token(); \
- f = rightfunc(parser_nasm, type); \
- if (!f) { \
- yasm_error_set(YASM_ERROR_SYNTAX, \
- N_("expected expression after %s"), \
- describe_token(op)); \
- yasm_expr_destroy(e); \
- return NULL; \
- } \
- e = p_expr_new_tree(e, op, f); \
- } \
- return e; \
- } while(0)
-
-static yasm_expr *
-parse_expr(yasm_parser_nasm *parser_nasm, expr_type type)
-{
- switch (type) {
- case DIR_EXPR:
- /* directive expressions can't handle seg:off or WRT */
- return parse_expr0(parser_nasm, type);
- default:
- parse_expr_common(parse_bexpr, ':', parse_bexpr, YASM_EXPR_SEGOFF);
- }
- /*@notreached@*/
- return NULL;
-}
-
-static yasm_expr *
-parse_bexpr(yasm_parser_nasm *parser_nasm, expr_type type)
-{
- parse_expr_common(parse_expr0, WRT, parse_expr6, YASM_EXPR_WRT);
-}
-
-static yasm_expr *
-parse_expr0(yasm_parser_nasm *parser_nasm, expr_type type)
-{
- parse_expr_common(parse_expr1, '|', parse_expr1, YASM_EXPR_OR);
-}
-
-static yasm_expr *
-parse_expr1(yasm_parser_nasm *parser_nasm, expr_type type)
-{
- parse_expr_common(parse_expr2, '^', parse_expr2, YASM_EXPR_XOR);
-}
-
-static yasm_expr *
-parse_expr2(yasm_parser_nasm *parser_nasm, expr_type type)
-{
- parse_expr_common(parse_expr3, '&', parse_expr3, YASM_EXPR_AND);
-}
-
-static yasm_expr *
-parse_expr3(yasm_parser_nasm *parser_nasm, expr_type type)
-{
- yasm_expr *e, *f;
- e = parse_expr4(parser_nasm, type);
- if (!e)
- return NULL;
-
- while (curtok == LEFT_OP || curtok == RIGHT_OP) {
- int op = curtok;
- get_next_token();
- f = parse_expr4(parser_nasm, type);
- if (!f) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("expected expression after %s"),
- describe_token(op));
- yasm_expr_destroy(e);
- return NULL;
- }
-
- switch (op) {
- case LEFT_OP: e = p_expr_new_tree(e, YASM_EXPR_SHL, f); break;
- case RIGHT_OP: e = p_expr_new_tree(e, YASM_EXPR_SHR, f); break;
- }
- }
- return e;
-}
-
-static yasm_expr *
-parse_expr4(yasm_parser_nasm *parser_nasm, expr_type type)
-{
- yasm_expr *e, *f;
- e = parse_expr5(parser_nasm, type);
- if (!e)
- return NULL;
-
- while (curtok == '+' || curtok == '-') {
- int op = curtok;
- get_next_token();
- f = parse_expr5(parser_nasm, type);
- if (!f) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("expected expression after %s"),
- describe_token(op));
- yasm_expr_destroy(e);
- return NULL;
- }
-
- switch (op) {
- case '+': e = p_expr_new_tree(e, YASM_EXPR_ADD, f); break;
- case '-': e = p_expr_new_tree(e, YASM_EXPR_SUB, f); break;
- }
- }
- return e;
-}
-
-static yasm_expr *
-parse_expr5(yasm_parser_nasm *parser_nasm, expr_type type)
-{
- yasm_expr *e, *f;
- e = parse_expr6(parser_nasm, type);
- if (!e)
- return NULL;
-
- while (curtok == '*' || curtok == '/' || curtok == '%'
- || curtok == SIGNDIV || curtok == SIGNMOD) {
- int op = curtok;
- get_next_token();
- f = parse_expr6(parser_nasm, type);
- if (!f) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("expected expression after %s"),
- describe_token(op));
- yasm_expr_destroy(e);
- return NULL;
- }
-
- switch (op) {
- case '*': e = p_expr_new_tree(e, YASM_EXPR_MUL, f); break;
- case '/': e = p_expr_new_tree(e, YASM_EXPR_DIV, f); break;
- case '%': e = p_expr_new_tree(e, YASM_EXPR_MOD, f); break;
- case SIGNDIV: e = p_expr_new_tree(e, YASM_EXPR_SIGNDIV, f); break;
- case SIGNMOD: e = p_expr_new_tree(e, YASM_EXPR_SIGNMOD, f); break;
- }
- }
- return e;
-}
-
-static yasm_expr *
-parse_expr6(yasm_parser_nasm *parser_nasm, expr_type type)
-{
- yasm_expr *e;
- yasm_symrec *sym;
-
- switch (curtok) {
- case '+':
- get_next_token();
- e = parse_expr6(parser_nasm, type);
- if (!e) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("expected expression after %s"), "`+'");
- }
- return e;
- case '-':
- get_next_token();
- e = parse_expr6(parser_nasm, type);
- if (!e) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("expected expression after %s"), "`-'");
- return NULL;
- }
- return p_expr_new_branch(YASM_EXPR_NEG, e);
- case '~':
- get_next_token();
- e = parse_expr6(parser_nasm, type);
- if (!e) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("expected expression after %s"), "`~'");
- return NULL;
- }
- return p_expr_new_branch(YASM_EXPR_NOT, e);
- case LOW:
- get_next_token();
- e = parse_expr6(parser_nasm, type);
- if (!e) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("expected expression after %s"), "LOW");
- return NULL;
- }
- return p_expr_new_tree(e, YASM_EXPR_AND,
- p_expr_new_ident(yasm_expr_int(yasm_intnum_create_uint(0xff))));
- case HIGH:
- get_next_token();
- e = parse_expr6(parser_nasm, type);
- if (!e) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("expected expression after %s"), "HIGH");
- return NULL;
- }
- return p_expr_new_tree(
- p_expr_new_tree(e, YASM_EXPR_SHR,
- p_expr_new_ident(yasm_expr_int(
- yasm_intnum_create_uint(8)))),
- YASM_EXPR_AND,
- p_expr_new_ident(yasm_expr_int(yasm_intnum_create_uint(0xff))));
- case SEG:
- get_next_token();
- e = parse_expr6(parser_nasm, type);
- if (!e) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("expected expression after %s"), "SEG");
- return NULL;
- }
- return p_expr_new_branch(YASM_EXPR_SEG, e);
- case '(':
- get_next_token();
- e = parse_expr(parser_nasm, type);
- if (!e) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("expected expression after %s"), "`('");
- return NULL;
- }
- if (!expect(')')) {
- yasm_error_set(YASM_ERROR_SYNTAX, N_("missing parenthesis"));
- return NULL;
- }
- get_next_token();
- return e;
- case INTNUM:
- e = p_expr_new_ident(yasm_expr_int(INTNUM_val));
- get_next_token();
- return e;
- case REG:
- if (type == DV_EXPR) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("data values can't have registers"));
- return NULL;
- }
- e = p_expr_new_ident(yasm_expr_reg(REG_val));
- get_next_token();
- return e;
- }
-
- /* directives allow very little and handle IDs specially */
- if (type == DIR_EXPR) {
- switch (curtok) {
- case ID:
- sym = yasm_symtab_use(p_symtab, ID_val, cur_line);
- e = p_expr_new_ident(yasm_expr_sym(sym));
- yasm_xfree(ID_val);
- break;
- default:
- return NULL;
- }
- } else switch (curtok) {
- case FLTNUM:
- e = p_expr_new_ident(yasm_expr_float(FLTNUM_val));
- break;
- case STRING:
- {
- yasm_intnum *intn;
- if (parser_nasm->tasm)
- intn = yasm_intnum_create_charconst_tasm(STRING_val.contents);
- else
- intn = yasm_intnum_create_charconst_nasm(STRING_val.contents);
- e = p_expr_new_ident(yasm_expr_int(intn));
- yasm_xfree(STRING_val.contents);
- break;
- }
- case SPECIAL_ID:
- sym = yasm_objfmt_get_special_sym(p_object, ID_val+2, "nasm");
- if (sym) {
- e = p_expr_new_ident(yasm_expr_sym(sym));
- yasm_xfree(ID_val);
- break;
- }
- /*@fallthrough@*/
- case ID:
- case LOCAL_ID:
- case NONLOCAL_ID:
- sym = yasm_symtab_use(p_symtab, ID_val, cur_line);
- e = p_expr_new_ident(yasm_expr_sym(sym));
- yasm_xfree(ID_val);
- break;
- case '$':
- /* "$" references the current assembly position */
- if (parser_nasm->abspos)
- e = yasm_expr_copy(parser_nasm->abspos);
- else {
- sym = yasm_symtab_define_curpos(p_symtab, "$",
- parser_nasm->prev_bc, cur_line);
- e = p_expr_new_ident(yasm_expr_sym(sym));
- }
- break;
- case START_SECTION_ID:
- /* "$$" references the start of the current section */
- if (parser_nasm->absstart)
- e = yasm_expr_copy(parser_nasm->absstart);
- else {
- sym = yasm_symtab_define_label(p_symtab, "$$",
- yasm_section_bcs_first(cursect), 0, cur_line);
- e = p_expr_new_ident(yasm_expr_sym(sym));
- }
- break;
- default:
- return NULL;
- }
-
- get_next_token();
- return e;
-}
-
-static void
-set_nonlocal_label(yasm_parser_nasm *parser_nasm, const char *name)
-{
- if (!parser_nasm->tasm || tasm_locals) {
- if (parser_nasm->locallabel_base)
- yasm_xfree(parser_nasm->locallabel_base);
- parser_nasm->locallabel_base_len = strlen(name);
- parser_nasm->locallabel_base =
- yasm_xmalloc(parser_nasm->locallabel_base_len+1);
- strcpy(parser_nasm->locallabel_base, name);
- }
-}
-
-static void
-define_label(yasm_parser_nasm *parser_nasm, char *name, unsigned int size)
-{
- yasm_symrec *symrec;
-
- if (parser_nasm->abspos)
- symrec = yasm_symtab_define_equ(p_symtab, name,
- yasm_expr_copy(parser_nasm->abspos),
- cur_line);
- else
- symrec = yasm_symtab_define_label(p_symtab, name, parser_nasm->prev_bc,
- 1, cur_line);
-
- yasm_symrec_set_size(symrec, size);
- yasm_symrec_set_segment(symrec, tasm_segment);
-
- yasm_xfree(name);
-}
-
-static void
-dir_align(yasm_object *object, yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams, unsigned long line)
-{
- yasm_valparam *vp = yasm_vps_first(valparams);
- yasm_expr *boundval = yasm_vp_expr(vp, object->symtab, line);
- /*@depedent@*/ yasm_intnum *boundintn;
-
- /* Largest .align in the section specifies section alignment.
- * Note: this doesn't match NASM behavior, but is a lot more
- * intelligent!
- */
- if (boundval && (boundintn = yasm_expr_get_intnum(&boundval, 0))) {
- unsigned long boundint = yasm_intnum_get_uint(boundintn);
-
- /* Alignments must be a power of two. */
- if (is_exp2(boundint)) {
- if (boundint > yasm_section_get_align(object->cur_section))
- yasm_section_set_align(object->cur_section, boundint, line);
- }
- }
-
- /* As this directive is called only when nop is used as fill, always
- * use arch (nop) fill.
- */
- yasm_section_bcs_append(object->cur_section,
- yasm_bc_create_align(boundval, NULL, NULL,
- /*yasm_section_is_code(object->cur_section) ?*/
- yasm_arch_get_fill(object->arch)/* : NULL*/,
- line));
-}
-
-static void
-nasm_parser_directive(yasm_parser_nasm *parser_nasm, const char *name,
- yasm_valparamhead *valparams,
- yasm_valparamhead *objext_valparams)
-{
- unsigned long line = cur_line;
- yasm_valparam *vp;
-
- if (!yasm_object_directive(p_object, name, "nasm", valparams,
- objext_valparams, line))
- ;
- else if (yasm__strcasecmp(name, "absolute") == 0) {
- if (!valparams) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("directive `%s' requires an argument"),
- "absolute");
- } else {
- vp = yasm_vps_first(valparams);
- if (parser_nasm->absstart)
- yasm_expr_destroy(parser_nasm->absstart);
- if (parser_nasm->abspos)
- yasm_expr_destroy(parser_nasm->abspos);
- parser_nasm->absstart = yasm_vp_expr(vp, p_object->symtab, line);
- parser_nasm->abspos = yasm_expr_copy(parser_nasm->absstart);
- cursect = NULL;
- parser_nasm->prev_bc = NULL;
- }
- } else if (yasm__strcasecmp(name, "align") == 0) {
- /* Really, we shouldn't end up with an align directive in an absolute
- * section (as it's supposed to be only used for nop fill), but handle
- * it gracefully anyway.
- */
- if (parser_nasm->abspos) {
- yasm_expr *boundval, *e;
- vp = yasm_vps_first(valparams);
- boundval = yasm_vp_expr(vp, p_object->symtab, line);
- e = yasm_expr_create_tree(
- yasm_expr_create_tree(yasm_expr_copy(parser_nasm->absstart),
- YASM_EXPR_SUB,
- yasm_expr_copy(parser_nasm->abspos),
- cur_line),
- YASM_EXPR_AND,
- yasm_expr_create(YASM_EXPR_SUB, yasm_expr_expr(boundval),
- yasm_expr_int(yasm_intnum_create_uint(1)),
- cur_line),
- cur_line);
- parser_nasm->abspos = yasm_expr_create_tree(
- parser_nasm->abspos, YASM_EXPR_ADD, e, cur_line);
- } else if (!valparams) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("directive `%s' requires an argument"), "align");
- } else
- dir_align(p_object, valparams, objext_valparams, line);
- } else if (yasm__strcasecmp(name, "default") == 0) {
- if (!valparams)
- ;
- else {
- vp = yasm_vps_first(valparams);
- while (vp) {
- const char *id = yasm_vp_id(vp);
- if (id) {
- if (yasm__strcasecmp(id, "rel") == 0)
- yasm_arch_set_var(p_object->arch, "default_rel", 1);
- else if (yasm__strcasecmp(id, "abs") == 0)
- yasm_arch_set_var(p_object->arch, "default_rel", 0);
- else
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("unrecognized default `%s'"), id);
- } else
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("unrecognized default value"));
- vp = yasm_vps_next(vp);
- }
- }
- } else
- yasm_error_set(YASM_ERROR_SYNTAX, N_("unrecognized directive `%s'"),
- name);
-
- if (parser_nasm->absstart && cursect) {
- /* We switched to a new section. Get out of absolute section mode. */
- yasm_expr_destroy(parser_nasm->absstart);
- parser_nasm->absstart = NULL;
- if (parser_nasm->abspos) {
- yasm_expr_destroy(parser_nasm->abspos);
- parser_nasm->abspos = NULL;
- }
- }
-
- if (cursect) {
- /* In case cursect changed or a bytecode was added, update prev_bc. */
- parser_nasm->prev_bc = yasm_section_bcs_last(cursect);
- }
-
- if (valparams)
- yasm_vps_delete(valparams);
- if (objext_valparams)
- yasm_vps_delete(objext_valparams);
-}
-
-yasm_bytecode *
-gas_intel_syntax_parse_instr(yasm_parser_nasm *parser_nasm, unsigned char *instr)
-{
- yasm_bytecode *bc = NULL;
- char *sinstr = (char *) instr;
-
- parser_nasm->s.bot = instr;
- parser_nasm->s.tok = instr;
- parser_nasm->s.ptr = instr;
- parser_nasm->s.cur = instr;
- parser_nasm->s.lim = instr + strlen(sinstr) + 1;
- parser_nasm->s.top = parser_nasm->s.lim;
- parser_nasm->peek_token = NONE;
-
- get_next_token();
- if (!is_eol()) {
- bc = parse_instr(parser_nasm);
- }
-
- return bc;
-}
+/*
+ * NASM-compatible parser
+ *
+ * Copyright (C) 2001-2007 Peter Johnson, Michael Urman
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <libyasm.h>
+
+#include <math.h>
+
+#include "modules/parsers/nasm/nasm-parser.h"
+#include "modules/preprocs/nasm/nasm.h"
+
+typedef enum {
+ NORM_EXPR,
+ DIR_EXPR, /* Can't have seg:off or WRT anywhere */
+ DV_EXPR /* Can't have registers anywhere */
+} expr_type;
+
+static yasm_bytecode *parse_line(yasm_parser_nasm *parser_nasm);
+static int parse_directive_valparams(yasm_parser_nasm *parser_nasm,
+ /*@out@*/ yasm_valparamhead *vps);
+static yasm_bytecode *parse_times(yasm_parser_nasm *parser_nasm);
+static yasm_bytecode *parse_exp(yasm_parser_nasm *parser_nasm);
+static yasm_bytecode *parse_instr(yasm_parser_nasm *parser_nasm);
+static yasm_insn_operand *parse_operand(yasm_parser_nasm *parser_nasm);
+static yasm_insn_operand *parse_memaddr(yasm_parser_nasm *parser_nasm);
+static yasm_expr *parse_expr(yasm_parser_nasm *parser_nasm, expr_type type);
+static yasm_expr *parse_bexpr(yasm_parser_nasm *parser_nasm, expr_type type);
+static yasm_expr *parse_expr0(yasm_parser_nasm *parser_nasm, expr_type type);
+static yasm_expr *parse_expr1(yasm_parser_nasm *parser_nasm, expr_type type);
+static yasm_expr *parse_expr2(yasm_parser_nasm *parser_nasm, expr_type type);
+static yasm_expr *parse_expr3(yasm_parser_nasm *parser_nasm, expr_type type);
+static yasm_expr *parse_expr4(yasm_parser_nasm *parser_nasm, expr_type type);
+static yasm_expr *parse_expr5(yasm_parser_nasm *parser_nasm, expr_type type);
+static yasm_expr *parse_expr6(yasm_parser_nasm *parser_nasm, expr_type type);
+
+static void nasm_parser_directive
+ (yasm_parser_nasm *parser_nasm, const char *name,
+ /*@null@*/ yasm_valparamhead *valparams,
+ /*@null@*/ yasm_valparamhead *objext_valparams);
+static void set_nonlocal_label(yasm_parser_nasm *parser_nasm, const char *name);
+static void define_label(yasm_parser_nasm *parser_nasm, /*@only@*/ char *name,
+ unsigned int size);
+
+static void yasm_ea_set_implicit_size_segment(yasm_parser_nasm *parser_nasm,
+ yasm_effaddr *ea, yasm_expr *e)
+{
+ if (parser_nasm->tasm) {
+ const char *segment = yasm_expr_segment(e);
+ ea->data_len = yasm_expr_size(e);
+ if (segment) {
+ const char *segreg = tasm_get_segment_register(segment);
+ if (segreg)
+ yasm_arch_parse_check_regtmod(p_object->arch, segreg,
+ strlen(segreg), &ea->segreg);
+ }
+ }
+}
+
+
+#define is_eol_tok(tok) ((tok) == 0)
+#define is_eol() is_eol_tok(curtok)
+
+#define get_next_token() (curtok = nasm_parser_lex(&curval, parser_nasm))
+
+static void
+get_peek_token(yasm_parser_nasm *parser_nasm)
+{
+ char savech = parser_nasm->tokch;
+ if (parser_nasm->peek_token != NONE)
+ yasm_internal_error(N_("only can have one token of lookahead"));
+ parser_nasm->peek_token =
+ nasm_parser_lex(&parser_nasm->peek_tokval, parser_nasm);
+ parser_nasm->peek_tokch = parser_nasm->tokch;
+ parser_nasm->tokch = savech;
+}
+
+static void
+destroy_curtok_(yasm_parser_nasm *parser_nasm)
+{
+ if (curtok < 256)
+ ;
+ else switch ((enum tokentype)curtok) {
+ case INTNUM:
+ yasm_intnum_destroy(curval.intn);
+ break;
+ case FLTNUM:
+ yasm_floatnum_destroy(curval.flt);
+ break;
+ case DIRECTIVE_NAME:
+ case FILENAME:
+ case ID:
+ case LOCAL_ID:
+ case SPECIAL_ID:
+ case NONLOCAL_ID:
+ yasm_xfree(curval.str_val);
+ break;
+ case STRING:
+ yasm_xfree(curval.str.contents);
+ break;
+ case INSN:
+ yasm_bc_destroy(curval.bc);
+ break;
+ default:
+ break;
+ }
+ curtok = NONE; /* sanity */
+}
+#define destroy_curtok() destroy_curtok_(parser_nasm)
+
+/* Eat all remaining tokens to EOL, discarding all of them. If there's any
+ * intervening tokens, generates an error (junk at end of line).
+ */
+static void
+demand_eol_(yasm_parser_nasm *parser_nasm)
+{
+ if (is_eol())
+ return;
+
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("junk at end of line, first unrecognized character is `%c'"),
+ parser_nasm->tokch);
+
+ do {
+ destroy_curtok();
+ get_next_token();
+ } while (!is_eol());
+}
+#define demand_eol() demand_eol_(parser_nasm)
+
+static const char *
+describe_token(int token)
+{
+ static char strch[] = "` '";
+ const char *str;
+
+ switch (token) {
+ case 0: str = "end of line"; break;
+ case INTNUM: str = "integer"; break;
+ case FLTNUM: str = "floating point value"; break;
+ case DIRECTIVE_NAME: str = "directive name"; break;
+ case FILENAME: str = "filename"; break;
+ case STRING: str = "string"; break;
+ case SIZE_OVERRIDE: str = "size override"; break;
+ case DECLARE_DATA: str = "DB/DW/etc."; break;
+ case RESERVE_SPACE: str = "RESB/RESW/etc."; break;
+ case INCBIN: str = "INCBIN"; break;
+ case EQU: str = "EQU"; break;
+ case TIMES: str = "TIMES"; break;
+ case SEG: str = "SEG"; break;
+ case WRT: str = "WRT"; break;
+ case NOSPLIT: str = "NOSPLIT"; break;
+ case STRICT: str = "STRICT"; break;
+ case INSN: str = "instruction"; break;
+ case PREFIX: str = "instruction prefix"; break;
+ case REG: str = "register"; break;
+ case REGGROUP: str = "register group"; break;
+ case SEGREG: str = "segment register"; break;
+ case TARGETMOD: str = "target modifier"; break;
+ case LEFT_OP: str = "<<"; break;
+ case RIGHT_OP: str = ">>"; break;
+ case SIGNDIV: str = "//"; break;
+ case SIGNMOD: str = "%%"; break;
+ case START_SECTION_ID: str = "$$"; break;
+ case ID: str = "identifier"; break;
+ case LOCAL_ID: str = ".identifier"; break;
+ case SPECIAL_ID: str = "..identifier"; break;
+ case NONLOCAL_ID: str = "..@identifier"; break;
+ case LINE: str = "%line"; break;
+ default:
+ strch[1] = token;
+ str = strch;
+ break;
+ }
+
+ return str;
+}
+
+static int
+expect_(yasm_parser_nasm *parser_nasm, int token)
+{
+ if (curtok == token)
+ return 1;
+
+ yasm_error_set(YASM_ERROR_PARSE, "expected %s", describe_token(token));
+ destroy_curtok();
+ return 0;
+}
+#define expect(token) expect_(parser_nasm, token)
+
+void
+nasm_parser_parse(yasm_parser_nasm *parser_nasm)
+{
+ unsigned char *line;
+ while ((line = (unsigned char *)
+ yasm_preproc_get_line(parser_nasm->preproc)) != NULL) {
+ yasm_bytecode *bc = NULL, *temp_bc;
+
+ parser_nasm->s.bot = line;
+ parser_nasm->s.tok = line;
+ parser_nasm->s.ptr = line;
+ parser_nasm->s.cur = line;
+ parser_nasm->s.lim = line + strlen((char *)line)+1;
+ parser_nasm->s.top = parser_nasm->s.lim;
+
+ get_next_token();
+ if (!is_eol()) {
+ bc = parse_line(parser_nasm);
+ demand_eol();
+ }
+
+ if (parser_nasm->abspos) {
+ /* If we're inside an absolute section, just add to the absolute
+ * position rather than appending bytecodes to a section.
+ * Only RES* are allowed in an absolute section, so this is easy.
+ */
+ if (bc) {
+ /*@null@*/ const yasm_expr *numitems, *multiple;
+ unsigned int itemsize;
+ numitems = yasm_bc_reserve_numitems(bc, &itemsize);
+ if (numitems) {
+ yasm_expr *e;
+ e = yasm_expr_create(YASM_EXPR_MUL,
+ yasm_expr_expr(yasm_expr_copy(numitems)),
+ yasm_expr_int(yasm_intnum_create_uint(itemsize)),
+ cur_line);
+ multiple = yasm_bc_get_multiple_expr(bc);
+ if (multiple)
+ e = yasm_expr_create_tree(e, YASM_EXPR_MUL,
+ yasm_expr_copy(multiple),
+ cur_line);
+ parser_nasm->abspos = yasm_expr_create_tree(
+ parser_nasm->abspos, YASM_EXPR_ADD, e, cur_line);
+ } else
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("only RES* allowed within absolute section"));
+ yasm_bc_destroy(bc);
+ }
+ temp_bc = NULL;
+ } else if (bc) {
+ temp_bc = yasm_section_bcs_append(cursect, bc);
+ if (temp_bc)
+ parser_nasm->prev_bc = temp_bc;
+ } else
+ temp_bc = NULL;
+ yasm_errwarn_propagate(parser_nasm->errwarns, cur_line);
+
+ if (parser_nasm->save_input)
+ yasm_linemap_add_source(parser_nasm->linemap, temp_bc,
+ (char *)line);
+ yasm_linemap_goto_next(parser_nasm->linemap);
+ yasm_xfree(line);
+ }
+}
+
+/* All parse_* functions expect to be called with curtok being their first
+ * token. They should return with curtok being the token *after* their
+ * information.
+ */
+
+static yasm_bytecode *
+parse_line(yasm_parser_nasm *parser_nasm)
+{
+ yasm_bytecode *bc;
+
+ bc = parse_exp(parser_nasm);
+ if (bc)
+ return bc;
+
+ switch (curtok) {
+ case LINE: /* LINE INTNUM '+' INTNUM FILENAME */
+ {
+ yasm_intnum *line, *incr;
+ char *filename;
+
+ get_next_token();
+
+ if (!expect(INTNUM)) return NULL;
+ line = INTNUM_val;
+ get_next_token();
+
+ if (!expect('+')) return NULL;
+ get_next_token();
+
+ if (!expect(INTNUM)) return NULL;
+ incr = INTNUM_val;
+ get_next_token();
+
+ if (!expect(FILENAME)) return NULL;
+ filename = FILENAME_val;
+ get_next_token();
+
+ /* %line indicates the line number of the *next* line, so subtract
+ * out the increment when setting the line number.
+ */
+ yasm_linemap_set(parser_nasm->linemap, filename, 0,
+ yasm_intnum_get_uint(line) - yasm_intnum_get_uint(incr),
+ yasm_intnum_get_uint(incr));
+ yasm_intnum_destroy(line);
+ yasm_intnum_destroy(incr);
+ yasm_xfree(filename);
+ return NULL;
+ }
+ case '[': /* [ directive ] */
+ {
+ char *dirname;
+ yasm_valparamhead dir_vps;
+ int have_vps = 1;
+
+ parser_nasm->state = DIRECTIVE;
+ get_next_token();
+
+ if (!expect(DIRECTIVE_NAME))
+ return NULL;
+ dirname = DIRECTIVE_NAME_val;
+ get_next_token();
+
+ /* ignore [warning]. TODO: actually implement */
+ if (yasm__strcasecmp(dirname, "warning") == 0) {
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("[warning] directive not supported; ignored"));
+
+ /* throw away the rest of the directive tokens */
+ while (!is_eol() && curtok != ']')
+ {
+ destroy_curtok();
+ get_next_token();
+ }
+ expect(']');
+ get_next_token();
+ return NULL;
+ }
+
+ if (curtok == ']' || curtok == ':')
+ have_vps = 0;
+ else if (!parse_directive_valparams(parser_nasm, &dir_vps)) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("invalid arguments to [%s]"), dirname);
+ yasm_xfree(dirname);
+ return NULL;
+ }
+ if (curtok == ':') {
+ yasm_valparamhead ext_vps;
+ get_next_token();
+ if (!parse_directive_valparams(parser_nasm, &ext_vps)) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("invalid arguments to [%s]"), dirname);
+ yasm_xfree(dirname);
+ return NULL;
+ }
+ nasm_parser_directive(parser_nasm, dirname,
+ have_vps ? &dir_vps : NULL, &ext_vps);
+ } else
+ nasm_parser_directive(parser_nasm, dirname,
+ have_vps ? &dir_vps : NULL, NULL);
+ yasm_xfree(dirname);
+ expect(']');
+ get_next_token();
+ return NULL;
+ }
+ case TIMES: /* TIMES expr exp */
+ get_next_token();
+ return parse_times(parser_nasm);
+ case ID:
+ case SPECIAL_ID:
+ case NONLOCAL_ID:
+ case LOCAL_ID:
+ {
+ char *name = ID_val;
+ int local = parser_nasm->tasm
+ ? (curtok == ID || curtok == LOCAL_ID ||
+ (curtok == SPECIAL_ID && name[0] == '@'))
+ : (curtok != ID);
+ unsigned int size = 0;
+
+ get_next_token();
+ if (is_eol()) {
+ /* label alone on the line */
+ yasm_warn_set(YASM_WARN_ORPHAN_LABEL,
+ N_("label alone on a line without a colon might be in error"));
+ if (!local)
+ set_nonlocal_label(parser_nasm, name);
+ define_label(parser_nasm, name, 0);
+ return NULL;
+ }
+ if (curtok == ':')
+ get_next_token();
+
+ if (curtok == EQU || (parser_nasm->tasm && curtok == '=')) {
+ /* label EQU expr */
+ yasm_expr *e;
+ get_next_token();
+
+ if (parser_nasm->tasm && curtok == SIZE_OVERRIDE) {
+ size = SIZE_OVERRIDE_val;
+ get_next_token();
+ }
+
+ e = parse_expr(parser_nasm, NORM_EXPR);
+ if (!e) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("expression expected after %s"), "EQU");
+ yasm_xfree(name);
+ return NULL;
+ }
+ yasm_symtab_define_equ(p_symtab, name, e, cur_line);
+ yasm_xfree(name);
+ return NULL;
+ }
+
+ if (parser_nasm->tasm && curtok == LABEL)
+ get_next_token();
+
+ if (parser_nasm->tasm && curtok == SIZE_OVERRIDE) {
+ size = SIZE_OVERRIDE_val;
+ get_next_token();
+ }
+
+ if (!local)
+ set_nonlocal_label(parser_nasm, name);
+
+ if (is_eol()) {
+ define_label(parser_nasm, name, size);
+ return NULL;
+ }
+ if (curtok == TIMES) {
+ define_label(parser_nasm, name, size);
+ get_next_token();
+ return parse_times(parser_nasm);
+ }
+ bc = parse_exp(parser_nasm);
+ if (!parser_nasm->tasm && !bc)
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("instruction expected after label"));
+ if (parser_nasm->tasm && bc && !size)
+ size = yasm_bc_elem_size(bc);
+ define_label(parser_nasm, name, size);
+ return bc;
+ }
+ default:
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("label or instruction expected at start of line"));
+ return NULL;
+ }
+}
+
+static int
+parse_directive_valparams(yasm_parser_nasm *parser_nasm,
+ /*@out@*/ yasm_valparamhead *vps)
+{
+ yasm_vps_initialize(vps);
+ for (;;) {
+ yasm_valparam *vp;
+ yasm_expr *e;
+ char *id = NULL;
+
+ /* Look for value first */
+ if (curtok == ID) {
+ get_peek_token(parser_nasm);
+ if (parser_nasm->peek_token == '=') {
+ id = ID_val;
+ get_next_token(); /* id */
+ get_next_token(); /* '=' */
+ }
+ }
+
+ /* Look for parameter */
+ switch (curtok) {
+ case STRING:
+ vp = yasm_vp_create_string(id, STRING_val.contents);
+ get_next_token();
+ break;
+ case ID:
+ /* We need a peek token, but avoid error if we have one
+ * already; we need to work whether or not we hit the
+ * "value=" if test above.
+ *
+ * We cheat and peek ahead to see if this is just an ID or
+ * the ID is part of an expression. We assume a + or - means
+ * that it's part of an expression (e.g. "x+y" is parsed as
+ * the expression "x+y" and not as "x", "+y").
+ */
+ if (parser_nasm->peek_token == NONE)
+ get_peek_token(parser_nasm);
+ switch (parser_nasm->peek_token) {
+ case '|': case '^': case '&': case LEFT_OP: case RIGHT_OP:
+ case '+': case '-':
+ case '*': case '/': case '%': case SIGNDIV: case SIGNMOD:
+ break;
+ default:
+ /* Just an id */
+ vp = yasm_vp_create_id(id, ID_val, '$');
+ get_next_token();
+ goto next;
+ }
+ /*@fallthrough@*/
+ default:
+ e = parse_expr(parser_nasm, DIR_EXPR);
+ if (!e) {
+ yasm_vps_delete(vps);
+ return 0;
+ }
+ vp = yasm_vp_create_expr(id, e);
+ break;
+ }
+next:
+ yasm_vps_append(vps, vp);
+ if (curtok == ',')
+ get_next_token();
+ if (curtok == ']' || curtok == ':' || is_eol())
+ return 1;
+ }
+}
+
+static yasm_bytecode *
+parse_times(yasm_parser_nasm *parser_nasm)
+{
+ yasm_expr *multiple;
+ yasm_bytecode *bc;
+
+ multiple = parse_bexpr(parser_nasm, DV_EXPR);
+ if (!multiple) {
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("expression expected after %s"),
+ "TIMES");
+ return NULL;
+ }
+ bc = parse_exp(parser_nasm);
+ if (!bc) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("instruction expected after TIMES expression"));
+ yasm_expr_destroy(multiple);
+ return NULL;
+ }
+ yasm_bc_set_multiple(bc, multiple);
+ return bc;
+}
+
+static yasm_bytecode *
+parse_exp(yasm_parser_nasm *parser_nasm)
+{
+ yasm_bytecode *bc;
+
+ bc = parse_instr(parser_nasm);
+ if (bc)
+ return bc;
+
+ switch (curtok) {
+ case DECLARE_DATA:
+ {
+ unsigned int size = DECLARE_DATA_val/8;
+ yasm_datavalhead dvs;
+ yasm_dataval *dv;
+ yasm_expr *e, *e2;
+
+ get_next_token();
+
+ yasm_dvs_initialize(&dvs);
+ for (;;) {
+ if (curtok == STRING) {
+ /* Peek ahead to see if we're in an expr. If we're not,
+ * then generate a real string dataval.
+ */
+ get_peek_token(parser_nasm);
+ if (parser_nasm->peek_token == ','
+ || is_eol_tok(parser_nasm->peek_token)) {
+ dv = yasm_dv_create_string(STRING_val.contents,
+ STRING_val.len);
+ get_next_token();
+ goto dv_done;
+ }
+ }
+ if (curtok == '?') {
+ yasm_dvs_delete(&dvs);
+ get_next_token();
+ if (! is_eol_tok(curtok)) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("can not handle more than one '?'"));
+ return NULL;
+ }
+ return yasm_bc_create_reserve(
+ p_expr_new_ident(yasm_expr_int(
+ yasm_intnum_create_uint(1))),
+ size, cur_line);
+ }
+ if (!(e = parse_bexpr(parser_nasm, DV_EXPR))) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("expression or string expected"));
+ yasm_dvs_delete(&dvs);
+ return NULL;
+ }
+ if (curtok == DUP) {
+ get_next_token();
+ if (curtok != '(') {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("expected ( after DUP"));
+ goto error;
+ }
+ get_next_token();
+ if (curtok == '?') {
+ get_next_token();
+ if (curtok != ')') {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("expected ) after DUPlicated expression"));
+ goto error;
+ }
+ get_next_token();
+ if (! is_eol_tok(curtok)) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("can not handle more than one '?'"));
+ goto error;
+ }
+ yasm_dvs_delete(&dvs);
+ return yasm_bc_create_reserve(e, size, cur_line);
+ } else if ((e2 = parse_bexpr(parser_nasm, DV_EXPR))) {
+ if (curtok != ')') {
+ yasm_expr_destroy(e2);
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("expected ) after DUPlicated expression"));
+ goto error;
+ }
+ get_next_token();
+ dv = yasm_dv_create_expr(e2);
+ yasm_dv_set_multiple(dv, e);
+ } else {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("expression or string expected"));
+error:
+ yasm_expr_destroy(e);
+ yasm_dvs_delete(&dvs);
+ return NULL;
+ }
+ } else
+ dv = yasm_dv_create_expr(e);
+dv_done:
+ yasm_dvs_append(&dvs, dv);
+ if (is_eol())
+ break;
+ if (!expect(',')) {
+ yasm_dvs_delete(&dvs);
+ return NULL;
+ }
+ get_next_token();
+ if (is_eol()) /* allow trailing , on list */
+ break;
+ }
+ return yasm_bc_create_data(&dvs, size, 0, p_object->arch,
+ cur_line);
+ }
+ case RESERVE_SPACE:
+ {
+ unsigned int size = RESERVE_SPACE_val/8;
+ yasm_expr *e;
+ get_next_token();
+ e = parse_bexpr(parser_nasm, DV_EXPR);
+ if (!e) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("expression expected after %s"), "RESx");
+ return NULL;
+ }
+ return yasm_bc_create_reserve(e, size, cur_line);
+ }
+ case INCBIN:
+ {
+ char *filename;
+ yasm_expr *start = NULL, *maxlen = NULL;
+
+ get_next_token();
+
+ if (!expect(STRING)) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("filename string expected after INCBIN"));
+ return NULL;
+ }
+ filename = STRING_val.contents;
+ get_next_token();
+
+ /* optional start expression */
+ if (curtok == ',')
+ get_next_token();
+ if (is_eol())
+ goto incbin_done;
+ start = parse_bexpr(parser_nasm, DV_EXPR);
+ if (!start) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("expression expected for INCBIN start"));
+ return NULL;
+ }
+
+ /* optional maxlen expression */
+ if (curtok == ',')
+ get_next_token();
+ if (is_eol())
+ goto incbin_done;
+ maxlen = parse_bexpr(parser_nasm, DV_EXPR);
+ if (!maxlen) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("expression expected for INCBIN maximum length"));
+ return NULL;
+ }
+
+incbin_done:
+ return yasm_bc_create_incbin(filename, start, maxlen,
+ parser_nasm->linemap, cur_line);
+ }
+ default:
+ return NULL;
+ }
+}
+
+static yasm_bytecode *
+parse_instr(yasm_parser_nasm *parser_nasm)
+{
+ yasm_bytecode *bc;
+
+ switch (curtok) {
+ case INSN:
+ {
+ yasm_insn *insn;
+ bc = INSN_val;
+ insn = yasm_bc_get_insn(bc);
+
+ get_next_token();
+ if (is_eol())
+ return bc; /* no operands */
+
+ /* parse operands */
+ for (;;) {
+ yasm_insn_operand *op = parse_operand(parser_nasm);
+ if (!op) {
+ if (insn->num_operands == 0)
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("unexpected %s after instruction"),
+ describe_token(curtok));
+ else
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("expected operand, got %s"),
+ describe_token(curtok));
+ yasm_bc_destroy(bc);
+ return NULL;
+ }
+ yasm_insn_ops_append(insn, op);
+
+ if (is_eol())
+ break;
+ if (!expect(',')) {
+ yasm_bc_destroy(bc);
+ return NULL;
+ }
+ get_next_token();
+ }
+ return bc;
+ }
+ case PREFIX:
+ {
+ uintptr_t prefix = PREFIX_val;
+ get_next_token();
+ bc = parse_instr(parser_nasm);
+ if (!bc)
+ bc = yasm_arch_create_empty_insn(p_object->arch, cur_line);
+ yasm_insn_add_prefix(yasm_bc_get_insn(bc), prefix);
+ return bc;
+ }
+ case SEGREG:
+ {
+ uintptr_t segreg = SEGREG_val;
+ get_next_token();
+ bc = parse_instr(parser_nasm);
+ if (!bc)
+ bc = yasm_arch_create_empty_insn(p_object->arch, cur_line);
+ yasm_insn_add_seg_prefix(yasm_bc_get_insn(bc), segreg);
+ return bc;
+ }
+ default:
+ return NULL;
+ }
+}
+
+static yasm_insn_operand *
+parse_operand(yasm_parser_nasm *parser_nasm)
+{
+ yasm_insn_operand *op;
+ switch (curtok) {
+ case '[':
+ {
+ get_next_token();
+ op = parse_memaddr(parser_nasm);
+
+ expect(']');
+ get_next_token();
+
+ if (!op) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("memory address expected"));
+ return NULL;
+ }
+
+ if (parser_nasm->tasm && !is_eol() && curtok != ',') {
+ yasm_expr *e = NULL, *f;
+ yasm_effaddr *ea;
+
+ switch (op->type) {
+ case YASM_INSN__OPERAND_IMM:
+ e = op->data.val;
+ break;
+ case YASM_INSN__OPERAND_MEMORY:
+ if (op->data.ea->disp.rel) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("relative adressing not supported\n"));
+ return NULL;
+ }
+ e = yasm_expr_copy(op->data.ea->disp.abs);
+ yasm_arch_ea_destroy(p_object->arch, op->data.ea);
+ break;
+ case YASM_INSN__OPERAND_REG:
+ case YASM_INSN__OPERAND_SEGREG:
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("register adressing not supported\n"));
+ return NULL;
+ }
+ yasm_xfree(op);
+ f = parse_bexpr(parser_nasm, NORM_EXPR);
+ if (!f) {
+ yasm_expr_destroy(e);
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("expected expression after ]"));
+ return NULL;
+ }
+ e = p_expr_new_tree(e, YASM_EXPR_ADD, f);
+ ea = yasm_arch_ea_create(p_object->arch, e);
+ yasm_ea_set_implicit_size_segment(parser_nasm, ea, e);
+ op = yasm_operand_create_mem(ea);
+ }
+ return op;
+ }
+ case OFFSET:
+ {
+ yasm_insn_operand *op2;
+ get_next_token();
+ if (parser_nasm->masm && curtok == ID && !yasm__strcasecmp(ID_val, "flat")) {
+ get_next_token();
+ if (curtok == ':') {
+ get_next_token();
+ }
+ }
+ op = parse_operand(parser_nasm);
+ if (!op) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("memory address expected"));
+ return NULL;
+ }
+ if (op->type == YASM_INSN__OPERAND_IMM)
+ return op;
+ if (op->type != YASM_INSN__OPERAND_MEMORY) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("OFFSET applied to non-memory operand"));
+ return NULL;
+ }
+ if (op->data.ea->disp.rel) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("OFFSET applied to non-absolute memory operand"));
+ return NULL;
+ }
+ if (op->data.ea->disp.abs)
+ op2 = yasm_operand_create_imm(op->data.ea->disp.abs);
+ else
+ op2 = yasm_operand_create_imm(p_expr_new_ident(
+ yasm_expr_int(yasm_intnum_create_uint(0))));
+ yasm_xfree(op);
+ return op2;
+ }
+ case SEGREG:
+ {
+ uintptr_t segreg = SEGREG_val;
+ get_next_token();
+ if (parser_nasm->tasm && curtok == ':') {
+ get_next_token();
+ op = parse_operand(parser_nasm);
+ if (!op)
+ return NULL;
+ if (op->type == YASM_INSN__OPERAND_IMM) {
+ yasm_effaddr *ea = yasm_arch_ea_create(p_object->arch,
+ op->data.val);
+ yasm_insn_operand *op2;
+ yasm_ea_set_implicit_size_segment(parser_nasm, ea,
+ op->data.val);
+ op2 = yasm_operand_create_mem(ea);
+ op2->size = op->size;
+ yasm_xfree(op);
+ op = op2;
+ }
+ if (op->type != YASM_INSN__OPERAND_MEMORY) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("segment applied to non-memory operand"));
+ return NULL;
+ }
+ yasm_ea_set_segreg(op->data.ea, segreg);
+ return op;
+ }
+ op = yasm_operand_create_segreg(segreg);
+ return op;
+ }
+ case REG:
+ op = yasm_operand_create_reg(REG_val);
+ get_next_token();
+ return op;
+ case REGGROUP:
+ {
+ unsigned long regindex;
+ uintptr_t reg = REGGROUP_val;
+ get_next_token(); /* REGGROUP */
+ if (curtok != '(')
+ return yasm_operand_create_reg(reg);
+ get_next_token(); /* '(' */
+ if (!expect(INTNUM)) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("integer register index expected"));
+ return NULL;
+ }
+ regindex = yasm_intnum_get_uint(INTNUM_val);
+ get_next_token(); /* INTNUM */
+ if (!expect(')')) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("missing closing parenthesis for register index"));
+ return NULL;
+ }
+ get_next_token(); /* ')' */
+ reg = yasm_arch_reggroup_get_reg(p_object->arch, reg, regindex);
+ if (reg == 0) {
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("bad register index `%u'"),
+ regindex);
+ return NULL;
+ }
+ return yasm_operand_create_reg(reg);
+ }
+ case STRICT:
+ get_next_token();
+ op = parse_operand(parser_nasm);
+ if (op)
+ op->strict = 1;
+ return op;
+ case SIZE_OVERRIDE:
+ {
+ unsigned int size = SIZE_OVERRIDE_val;
+ get_next_token();
+ if (parser_nasm->masm && curtok == ID && !yasm__strcasecmp(ID_val, "ptr")) {
+ get_next_token();
+ }
+ op = parse_operand(parser_nasm);
+ if (!op)
+ return NULL;
+ if (op->type == YASM_INSN__OPERAND_REG &&
+ yasm_arch_get_reg_size(p_object->arch, op->data.reg) != size)
+ yasm_error_set(YASM_ERROR_TYPE,
+ N_("cannot override register size"));
+ else {
+ /* Silently override others unless a warning is turned on.
+ * This is to allow overrides such as:
+ * %define arg1 dword [bp+4]
+ * cmp word arg1, 2
+ * Which expands to:
+ * cmp word dword [bp+4], 2
+ */
+ if (op->size != 0) {
+ if (op->size != size)
+ yasm_warn_set(YASM_WARN_SIZE_OVERRIDE,
+ N_("overriding operand size from %u-bit to %u-bit"),
+ op->size, size);
+ else
+ yasm_warn_set(YASM_WARN_SIZE_OVERRIDE,
+ N_("double operand size override"));
+ }
+ op->size = size;
+ }
+ return op;
+ }
+ case TARGETMOD:
+ {
+ uintptr_t tmod = TARGETMOD_val;
+ get_next_token();
+ op = parse_operand(parser_nasm);
+ if (op)
+ op->targetmod = tmod;
+ return op;
+ }
+ case ID:
+ case LOCAL_ID:
+ case NONLOCAL_ID:
+ if (parser_nasm->tasm) {
+ get_peek_token(parser_nasm);
+ if (parser_nasm->peek_token == '[') {
+ yasm_symrec *sym = yasm_symtab_use(p_symtab, ID_val,
+ cur_line);
+ yasm_expr *e = p_expr_new_ident(yasm_expr_sym(sym)), *f;
+ yasm_effaddr *ea;
+ yasm_xfree(ID_val);
+ get_next_token();
+ get_next_token();
+ f = parse_bexpr(parser_nasm, NORM_EXPR);
+ if (!f) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("expected expression after ["));
+ return NULL;
+ }
+ e = p_expr_new_tree(e, YASM_EXPR_ADD, f);
+ if (!expect(']')) {
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("missing closing bracket"));
+ return NULL;
+ }
+ get_next_token();
+ ea = yasm_arch_ea_create(p_object->arch, e);
+ yasm_ea_set_implicit_size_segment(parser_nasm, ea, e);
+ op = yasm_operand_create_mem(ea);
+ return op;
+ }
+ }
+ /* Fallthrough */
+ default:
+ {
+ yasm_expr *e = parse_bexpr(parser_nasm, NORM_EXPR);
+ if (!e)
+ return NULL;
+ if (curtok != ':') {
+ if (parser_nasm->tasm && yasm_expr_size(e)) {
+ yasm_effaddr *ea = yasm_arch_ea_create(p_object->arch, e);
+ yasm_ea_set_implicit_size_segment(parser_nasm, ea, e);
+ op = yasm_operand_create_mem(ea);
+ return op;
+ } else if (curtok == '[') {
+ yasm_expr *f;
+ yasm_effaddr *ea;
+ yasm_insn_operand *op2;
+
+ op = parse_operand(parser_nasm);
+ if (!op)
+ return NULL;
+
+ f = op->data.ea->disp.abs;
+ e = p_expr_new_tree(e, YASM_EXPR_ADD, f);
+ ea = yasm_arch_ea_create(p_object->arch, e);
+ yasm_ea_set_implicit_size_segment(parser_nasm, ea, e);
+ op2 = yasm_operand_create_mem(ea);
+
+ yasm_xfree(op);
+
+ return op2;
+ } else {
+ return yasm_operand_create_imm(e);
+ }
+ } else {
+ yasm_expr *off;
+ get_next_token();
+ off = parse_bexpr(parser_nasm, NORM_EXPR);
+ if (!off) {
+ yasm_expr_destroy(e);
+ return NULL;
+ }
+ op = yasm_operand_create_imm(off);
+ op->seg = e;
+ return op;
+ }
+ }
+ }
+}
+
+/* memory addresses */
+static yasm_insn_operand *
+parse_memaddr(yasm_parser_nasm *parser_nasm)
+{
+ yasm_insn_operand *op;
+ switch (curtok) {
+ case SEGREG:
+ {
+ uintptr_t segreg = SEGREG_val;
+ get_next_token();
+ if (!expect(':')) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("`:' required after segment register"));
+ return NULL;
+ }
+ get_next_token();
+ op = parse_memaddr(parser_nasm);
+ if (op)
+ yasm_ea_set_segreg(op->data.ea, segreg);
+ return op;
+ }
+ case SIZE_OVERRIDE:
+ {
+ unsigned int size = SIZE_OVERRIDE_val;
+ get_next_token();
+ op = parse_memaddr(parser_nasm);
+ if (op)
+ op->data.ea->disp.size = size;
+ return op;
+ }
+ case NOSPLIT:
+ get_next_token();
+ op = parse_memaddr(parser_nasm);
+ if (op)
+ op->data.ea->nosplit = 1;
+ return op;
+ case REL:
+ get_next_token();
+ op = parse_memaddr(parser_nasm);
+ if (op) {
+ op->data.ea->pc_rel = 1;
+ op->data.ea->not_pc_rel = 0;
+ }
+ return op;
+ case ABS:
+ get_next_token();
+ op = parse_memaddr(parser_nasm);
+ if (op) {
+ op->data.ea->pc_rel = 0;
+ op->data.ea->not_pc_rel = 1;
+ }
+ return op;
+ default:
+ {
+ yasm_expr *e = parse_bexpr(parser_nasm, NORM_EXPR);
+ if (!e)
+ return NULL;
+ if (curtok != ':') {
+ yasm_effaddr *ea = yasm_arch_ea_create(p_object->arch, e);
+ yasm_ea_set_implicit_size_segment(parser_nasm, ea, e);
+ return yasm_operand_create_mem(ea);
+ } else {
+ yasm_effaddr *ea;
+ yasm_expr *off;
+ get_next_token();
+ off = parse_bexpr(parser_nasm, NORM_EXPR);
+ if (!off) {
+ yasm_expr_destroy(e);
+ return NULL;
+ }
+ ea = yasm_arch_ea_create(p_object->arch, off);
+ yasm_ea_set_implicit_size_segment(parser_nasm, ea, off);
+ op = yasm_operand_create_mem(ea);
+ op->seg = e;
+ return op;
+ }
+ }
+ }
+}
+
+/* Expression grammar parsed is:
+ *
+ * expr : bexpr [ : bexpr ]
+ * bexpr : expr0 [ WRT expr6 ]
+ * expr0 : expr1 [ {|} expr1...]
+ * expr1 : expr2 [ {^} expr2...]
+ * expr2 : expr3 [ {&} expr3...]
+ * expr3 : expr4 [ {<<,>>} expr4...]
+ * expr4 : expr5 [ {+,-} expr5...]
+ * expr5 : expr6 [ {*,/,%,//,%%} expr6...]
+ * expr6 : { ~,+,-,SEG } expr6
+ * | (expr)
+ * | symbol
+ * | $
+ * | number
+ */
+
+#define parse_expr_common(leftfunc, tok, rightfunc, op) \
+ do { \
+ yasm_expr *e, *f; \
+ e = leftfunc(parser_nasm, type); \
+ if (!e) \
+ return NULL; \
+ \
+ while (curtok == tok) { \
+ get_next_token(); \
+ f = rightfunc(parser_nasm, type); \
+ if (!f) { \
+ yasm_error_set(YASM_ERROR_SYNTAX, \
+ N_("expected expression after %s"), \
+ describe_token(op)); \
+ yasm_expr_destroy(e); \
+ return NULL; \
+ } \
+ e = p_expr_new_tree(e, op, f); \
+ } \
+ return e; \
+ } while(0)
+
+static yasm_expr *
+parse_expr(yasm_parser_nasm *parser_nasm, expr_type type)
+{
+ switch (type) {
+ case DIR_EXPR:
+ /* directive expressions can't handle seg:off or WRT */
+ return parse_expr0(parser_nasm, type);
+ default:
+ parse_expr_common(parse_bexpr, ':', parse_bexpr, YASM_EXPR_SEGOFF);
+ }
+ /*@notreached@*/
+ return NULL;
+}
+
+static yasm_expr *
+parse_bexpr(yasm_parser_nasm *parser_nasm, expr_type type)
+{
+ parse_expr_common(parse_expr0, WRT, parse_expr6, YASM_EXPR_WRT);
+}
+
+static yasm_expr *
+parse_expr0(yasm_parser_nasm *parser_nasm, expr_type type)
+{
+ parse_expr_common(parse_expr1, '|', parse_expr1, YASM_EXPR_OR);
+}
+
+static yasm_expr *
+parse_expr1(yasm_parser_nasm *parser_nasm, expr_type type)
+{
+ parse_expr_common(parse_expr2, '^', parse_expr2, YASM_EXPR_XOR);
+}
+
+static yasm_expr *
+parse_expr2(yasm_parser_nasm *parser_nasm, expr_type type)
+{
+ parse_expr_common(parse_expr3, '&', parse_expr3, YASM_EXPR_AND);
+}
+
+static yasm_expr *
+parse_expr3(yasm_parser_nasm *parser_nasm, expr_type type)
+{
+ yasm_expr *e, *f;
+ e = parse_expr4(parser_nasm, type);
+ if (!e)
+ return NULL;
+
+ while (curtok == LEFT_OP || curtok == RIGHT_OP) {
+ int op = curtok;
+ get_next_token();
+ f = parse_expr4(parser_nasm, type);
+ if (!f) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("expected expression after %s"),
+ describe_token(op));
+ yasm_expr_destroy(e);
+ return NULL;
+ }
+
+ switch (op) {
+ case LEFT_OP: e = p_expr_new_tree(e, YASM_EXPR_SHL, f); break;
+ case RIGHT_OP: e = p_expr_new_tree(e, YASM_EXPR_SHR, f); break;
+ }
+ }
+ return e;
+}
+
+static yasm_expr *
+parse_expr4(yasm_parser_nasm *parser_nasm, expr_type type)
+{
+ yasm_expr *e, *f;
+ e = parse_expr5(parser_nasm, type);
+ if (!e)
+ return NULL;
+
+ while (curtok == '+' || curtok == '-') {
+ int op = curtok;
+ get_next_token();
+ f = parse_expr5(parser_nasm, type);
+ if (!f) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("expected expression after %s"),
+ describe_token(op));
+ yasm_expr_destroy(e);
+ return NULL;
+ }
+
+ switch (op) {
+ case '+': e = p_expr_new_tree(e, YASM_EXPR_ADD, f); break;
+ case '-': e = p_expr_new_tree(e, YASM_EXPR_SUB, f); break;
+ }
+ }
+ return e;
+}
+
+static yasm_expr *
+parse_expr5(yasm_parser_nasm *parser_nasm, expr_type type)
+{
+ yasm_expr *e, *f;
+ e = parse_expr6(parser_nasm, type);
+ if (!e)
+ return NULL;
+
+ while (curtok == '*' || curtok == '/' || curtok == '%'
+ || curtok == SIGNDIV || curtok == SIGNMOD) {
+ int op = curtok;
+ get_next_token();
+ f = parse_expr6(parser_nasm, type);
+ if (!f) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("expected expression after %s"),
+ describe_token(op));
+ yasm_expr_destroy(e);
+ return NULL;
+ }
+
+ switch (op) {
+ case '*': e = p_expr_new_tree(e, YASM_EXPR_MUL, f); break;
+ case '/': e = p_expr_new_tree(e, YASM_EXPR_DIV, f); break;
+ case '%': e = p_expr_new_tree(e, YASM_EXPR_MOD, f); break;
+ case SIGNDIV: e = p_expr_new_tree(e, YASM_EXPR_SIGNDIV, f); break;
+ case SIGNMOD: e = p_expr_new_tree(e, YASM_EXPR_SIGNMOD, f); break;
+ }
+ }
+ return e;
+}
+
+static yasm_expr *
+parse_expr6(yasm_parser_nasm *parser_nasm, expr_type type)
+{
+ yasm_expr *e;
+ yasm_symrec *sym;
+
+ switch (curtok) {
+ case '+':
+ get_next_token();
+ e = parse_expr6(parser_nasm, type);
+ if (!e) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("expected expression after %s"), "`+'");
+ }
+ return e;
+ case '-':
+ get_next_token();
+ e = parse_expr6(parser_nasm, type);
+ if (!e) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("expected expression after %s"), "`-'");
+ return NULL;
+ }
+ return p_expr_new_branch(YASM_EXPR_NEG, e);
+ case '~':
+ get_next_token();
+ e = parse_expr6(parser_nasm, type);
+ if (!e) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("expected expression after %s"), "`~'");
+ return NULL;
+ }
+ return p_expr_new_branch(YASM_EXPR_NOT, e);
+ case LOW:
+ get_next_token();
+ e = parse_expr6(parser_nasm, type);
+ if (!e) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("expected expression after %s"), "LOW");
+ return NULL;
+ }
+ return p_expr_new_tree(e, YASM_EXPR_AND,
+ p_expr_new_ident(yasm_expr_int(yasm_intnum_create_uint(0xff))));
+ case HIGH:
+ get_next_token();
+ e = parse_expr6(parser_nasm, type);
+ if (!e) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("expected expression after %s"), "HIGH");
+ return NULL;
+ }
+ return p_expr_new_tree(
+ p_expr_new_tree(e, YASM_EXPR_SHR,
+ p_expr_new_ident(yasm_expr_int(
+ yasm_intnum_create_uint(8)))),
+ YASM_EXPR_AND,
+ p_expr_new_ident(yasm_expr_int(yasm_intnum_create_uint(0xff))));
+ case SEG:
+ get_next_token();
+ e = parse_expr6(parser_nasm, type);
+ if (!e) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("expected expression after %s"), "SEG");
+ return NULL;
+ }
+ return p_expr_new_branch(YASM_EXPR_SEG, e);
+ case '(':
+ get_next_token();
+ e = parse_expr(parser_nasm, type);
+ if (!e) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("expected expression after %s"), "`('");
+ return NULL;
+ }
+ if (!expect(')')) {
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("missing parenthesis"));
+ return NULL;
+ }
+ get_next_token();
+ return e;
+ case INTNUM:
+ e = p_expr_new_ident(yasm_expr_int(INTNUM_val));
+ get_next_token();
+ return e;
+ case REG:
+ if (type == DV_EXPR) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("data values can't have registers"));
+ return NULL;
+ }
+ e = p_expr_new_ident(yasm_expr_reg(REG_val));
+ get_next_token();
+ return e;
+ }
+
+ /* directives allow very little and handle IDs specially */
+ if (type == DIR_EXPR) {
+ switch (curtok) {
+ case ID:
+ sym = yasm_symtab_use(p_symtab, ID_val, cur_line);
+ e = p_expr_new_ident(yasm_expr_sym(sym));
+ yasm_xfree(ID_val);
+ break;
+ default:
+ return NULL;
+ }
+ } else switch (curtok) {
+ case FLTNUM:
+ e = p_expr_new_ident(yasm_expr_float(FLTNUM_val));
+ break;
+ case STRING:
+ {
+ yasm_intnum *intn;
+ if (parser_nasm->tasm)
+ intn = yasm_intnum_create_charconst_tasm(STRING_val.contents);
+ else
+ intn = yasm_intnum_create_charconst_nasm(STRING_val.contents);
+ e = p_expr_new_ident(yasm_expr_int(intn));
+ yasm_xfree(STRING_val.contents);
+ break;
+ }
+ case SPECIAL_ID:
+ sym = yasm_objfmt_get_special_sym(p_object, ID_val+2, "nasm");
+ if (sym) {
+ e = p_expr_new_ident(yasm_expr_sym(sym));
+ yasm_xfree(ID_val);
+ break;
+ }
+ /*@fallthrough@*/
+ case ID:
+ case LOCAL_ID:
+ case NONLOCAL_ID:
+ sym = yasm_symtab_use(p_symtab, ID_val, cur_line);
+ e = p_expr_new_ident(yasm_expr_sym(sym));
+ yasm_xfree(ID_val);
+ break;
+ case '$':
+ /* "$" references the current assembly position */
+ if (parser_nasm->abspos)
+ e = yasm_expr_copy(parser_nasm->abspos);
+ else {
+ sym = yasm_symtab_define_curpos(p_symtab, "$",
+ parser_nasm->prev_bc, cur_line);
+ e = p_expr_new_ident(yasm_expr_sym(sym));
+ }
+ break;
+ case START_SECTION_ID:
+ /* "$$" references the start of the current section */
+ if (parser_nasm->absstart)
+ e = yasm_expr_copy(parser_nasm->absstart);
+ else {
+ sym = yasm_symtab_define_label(p_symtab, "$$",
+ yasm_section_bcs_first(cursect), 0, cur_line);
+ e = p_expr_new_ident(yasm_expr_sym(sym));
+ }
+ break;
+ default:
+ return NULL;
+ }
+
+ get_next_token();
+ return e;
+}
+
+static void
+set_nonlocal_label(yasm_parser_nasm *parser_nasm, const char *name)
+{
+ if (!parser_nasm->tasm || tasm_locals) {
+ if (parser_nasm->locallabel_base)
+ yasm_xfree(parser_nasm->locallabel_base);
+ parser_nasm->locallabel_base_len = strlen(name);
+ parser_nasm->locallabel_base =
+ yasm_xmalloc(parser_nasm->locallabel_base_len+1);
+ strcpy(parser_nasm->locallabel_base, name);
+ }
+}
+
+static void
+define_label(yasm_parser_nasm *parser_nasm, char *name, unsigned int size)
+{
+ yasm_symrec *symrec;
+
+ if (parser_nasm->abspos)
+ symrec = yasm_symtab_define_equ(p_symtab, name,
+ yasm_expr_copy(parser_nasm->abspos),
+ cur_line);
+ else
+ symrec = yasm_symtab_define_label(p_symtab, name, parser_nasm->prev_bc,
+ 1, cur_line);
+
+ yasm_symrec_set_size(symrec, size);
+ yasm_symrec_set_segment(symrec, tasm_segment);
+
+ yasm_xfree(name);
+}
+
+static void
+dir_align(yasm_object *object, yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams, unsigned long line)
+{
+ yasm_valparam *vp = yasm_vps_first(valparams);
+ yasm_expr *boundval = yasm_vp_expr(vp, object->symtab, line);
+ /*@depedent@*/ yasm_intnum *boundintn;
+
+ /* Largest .align in the section specifies section alignment.
+ * Note: this doesn't match NASM behavior, but is a lot more
+ * intelligent!
+ */
+ if (boundval && (boundintn = yasm_expr_get_intnum(&boundval, 0))) {
+ unsigned long boundint = yasm_intnum_get_uint(boundintn);
+
+ /* Alignments must be a power of two. */
+ if (is_exp2(boundint)) {
+ if (boundint > yasm_section_get_align(object->cur_section))
+ yasm_section_set_align(object->cur_section, boundint, line);
+ }
+ }
+
+ /* As this directive is called only when nop is used as fill, always
+ * use arch (nop) fill.
+ */
+ yasm_section_bcs_append(object->cur_section,
+ yasm_bc_create_align(boundval, NULL, NULL,
+ /*yasm_section_is_code(object->cur_section) ?*/
+ yasm_arch_get_fill(object->arch)/* : NULL*/,
+ line));
+}
+
+static void
+nasm_parser_directive(yasm_parser_nasm *parser_nasm, const char *name,
+ yasm_valparamhead *valparams,
+ yasm_valparamhead *objext_valparams)
+{
+ unsigned long line = cur_line;
+ yasm_valparam *vp;
+
+ if (!yasm_object_directive(p_object, name, "nasm", valparams,
+ objext_valparams, line))
+ ;
+ else if (yasm__strcasecmp(name, "absolute") == 0) {
+ if (!valparams) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("directive `%s' requires an argument"),
+ "absolute");
+ } else {
+ vp = yasm_vps_first(valparams);
+ if (parser_nasm->absstart)
+ yasm_expr_destroy(parser_nasm->absstart);
+ if (parser_nasm->abspos)
+ yasm_expr_destroy(parser_nasm->abspos);
+ parser_nasm->absstart = yasm_vp_expr(vp, p_object->symtab, line);
+ parser_nasm->abspos = yasm_expr_copy(parser_nasm->absstart);
+ cursect = NULL;
+ parser_nasm->prev_bc = NULL;
+ }
+ } else if (yasm__strcasecmp(name, "align") == 0) {
+ /* Really, we shouldn't end up with an align directive in an absolute
+ * section (as it's supposed to be only used for nop fill), but handle
+ * it gracefully anyway.
+ */
+ if (parser_nasm->abspos) {
+ yasm_expr *boundval, *e;
+ vp = yasm_vps_first(valparams);
+ boundval = yasm_vp_expr(vp, p_object->symtab, line);
+ e = yasm_expr_create_tree(
+ yasm_expr_create_tree(yasm_expr_copy(parser_nasm->absstart),
+ YASM_EXPR_SUB,
+ yasm_expr_copy(parser_nasm->abspos),
+ cur_line),
+ YASM_EXPR_AND,
+ yasm_expr_create(YASM_EXPR_SUB, yasm_expr_expr(boundval),
+ yasm_expr_int(yasm_intnum_create_uint(1)),
+ cur_line),
+ cur_line);
+ parser_nasm->abspos = yasm_expr_create_tree(
+ parser_nasm->abspos, YASM_EXPR_ADD, e, cur_line);
+ } else if (!valparams) {
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("directive `%s' requires an argument"), "align");
+ } else
+ dir_align(p_object, valparams, objext_valparams, line);
+ } else if (yasm__strcasecmp(name, "default") == 0) {
+ if (!valparams)
+ ;
+ else {
+ vp = yasm_vps_first(valparams);
+ while (vp) {
+ const char *id = yasm_vp_id(vp);
+ if (id) {
+ if (yasm__strcasecmp(id, "rel") == 0)
+ yasm_arch_set_var(p_object->arch, "default_rel", 1);
+ else if (yasm__strcasecmp(id, "abs") == 0)
+ yasm_arch_set_var(p_object->arch, "default_rel", 0);
+ else
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("unrecognized default `%s'"), id);
+ } else
+ yasm_error_set(YASM_ERROR_SYNTAX,
+ N_("unrecognized default value"));
+ vp = yasm_vps_next(vp);
+ }
+ }
+ } else
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("unrecognized directive `%s'"),
+ name);
+
+ if (parser_nasm->absstart && cursect) {
+ /* We switched to a new section. Get out of absolute section mode. */
+ yasm_expr_destroy(parser_nasm->absstart);
+ parser_nasm->absstart = NULL;
+ if (parser_nasm->abspos) {
+ yasm_expr_destroy(parser_nasm->abspos);
+ parser_nasm->abspos = NULL;
+ }
+ }
+
+ if (cursect) {
+ /* In case cursect changed or a bytecode was added, update prev_bc. */
+ parser_nasm->prev_bc = yasm_section_bcs_last(cursect);
+ }
+
+ if (valparams)
+ yasm_vps_delete(valparams);
+ if (objext_valparams)
+ yasm_vps_delete(objext_valparams);
+}
+
+yasm_bytecode *
+gas_intel_syntax_parse_instr(yasm_parser_nasm *parser_nasm, unsigned char *instr)
+{
+ yasm_bytecode *bc = NULL;
+ char *sinstr = (char *) instr;
+
+ parser_nasm->s.bot = instr;
+ parser_nasm->s.tok = instr;
+ parser_nasm->s.ptr = instr;
+ parser_nasm->s.cur = instr;
+ parser_nasm->s.lim = instr + strlen(sinstr) + 1;
+ parser_nasm->s.top = parser_nasm->s.lim;
+ parser_nasm->peek_token = NONE;
+
+ get_next_token();
+ if (!is_eol()) {
+ bc = parse_instr(parser_nasm);
+ }
+
+ return bc;
+}
diff --git a/contrib/tools/yasm/modules/parsers/nasm/nasm-parser-struct.h b/contrib/tools/yasm/modules/parsers/nasm/nasm-parser-struct.h
index 3cb5c8a132..b9223510ba 100644
--- a/contrib/tools/yasm/modules/parsers/nasm/nasm-parser-struct.h
+++ b/contrib/tools/yasm/modules/parsers/nasm/nasm-parser-struct.h
@@ -1,85 +1,85 @@
-/*
- * NASM-compatible parser struct header file
- *
- * Copyright (C) 2002-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef YASM_NASM_PARSER_STRUCT_H
-#define YASM_NASM_PARSER_STRUCT_H
-
-typedef union {
- unsigned int int_info;
- char *str_val;
- yasm_intnum *intn;
- yasm_floatnum *flt;
- yasm_bytecode *bc;
- uintptr_t arch_data;
- struct {
- char *contents;
- size_t len;
- } str;
-} nasm_yystype;
-
-typedef struct yasm_parser_nasm {
- int tasm;
- int masm;
-
- /*@only@*/ yasm_object *object;
-
- /* last "base" label for local (.) labels */
- /*@null@*/ char *locallabel_base;
- size_t locallabel_base_len;
-
- /*@dependent@*/ yasm_preproc *preproc;
- /*@dependent@*/ yasm_errwarns *errwarns;
-
- /*@dependent@*/ yasm_linemap *linemap;
-
- /*@null@*/ yasm_bytecode *prev_bc;
-
- int save_input;
-
- yasm_scanner s;
- int state;
-
- int token; /* enum tokentype or any character */
- nasm_yystype tokval;
- char tokch; /* first character of token */
-
- /* one token of lookahead; used sparingly */
- int peek_token; /* NONE if none */
- nasm_yystype peek_tokval;
- char peek_tokch;
-
- /* Starting point of the absolute section. NULL if not in an absolute
- * section.
- */
- /*@null@*/ yasm_expr *absstart;
-
- /* Current location inside an absolute section (including the start).
- * NULL if not in an absolute section.
- */
- /*@null@*/ yasm_expr *abspos;
-} yasm_parser_nasm;
-
-#endif
+/*
+ * NASM-compatible parser struct header file
+ *
+ * Copyright (C) 2002-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef YASM_NASM_PARSER_STRUCT_H
+#define YASM_NASM_PARSER_STRUCT_H
+
+typedef union {
+ unsigned int int_info;
+ char *str_val;
+ yasm_intnum *intn;
+ yasm_floatnum *flt;
+ yasm_bytecode *bc;
+ uintptr_t arch_data;
+ struct {
+ char *contents;
+ size_t len;
+ } str;
+} nasm_yystype;
+
+typedef struct yasm_parser_nasm {
+ int tasm;
+ int masm;
+
+ /*@only@*/ yasm_object *object;
+
+ /* last "base" label for local (.) labels */
+ /*@null@*/ char *locallabel_base;
+ size_t locallabel_base_len;
+
+ /*@dependent@*/ yasm_preproc *preproc;
+ /*@dependent@*/ yasm_errwarns *errwarns;
+
+ /*@dependent@*/ yasm_linemap *linemap;
+
+ /*@null@*/ yasm_bytecode *prev_bc;
+
+ int save_input;
+
+ yasm_scanner s;
+ int state;
+
+ int token; /* enum tokentype or any character */
+ nasm_yystype tokval;
+ char tokch; /* first character of token */
+
+ /* one token of lookahead; used sparingly */
+ int peek_token; /* NONE if none */
+ nasm_yystype peek_tokval;
+ char peek_tokch;
+
+ /* Starting point of the absolute section. NULL if not in an absolute
+ * section.
+ */
+ /*@null@*/ yasm_expr *absstart;
+
+ /* Current location inside an absolute section (including the start).
+ * NULL if not in an absolute section.
+ */
+ /*@null@*/ yasm_expr *abspos;
+} yasm_parser_nasm;
+
+#endif
diff --git a/contrib/tools/yasm/modules/parsers/nasm/nasm-parser.c b/contrib/tools/yasm/modules/parsers/nasm/nasm-parser.c
index 1ceaba7d41..bd166929f7 100644
--- a/contrib/tools/yasm/modules/parsers/nasm/nasm-parser.c
+++ b/contrib/tools/yasm/modules/parsers/nasm/nasm-parser.c
@@ -1,140 +1,140 @@
-/*
- * NASM-compatible parser
- *
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <libyasm.h>
-
-#include "nasm-parser.h"
-
-
-static void
-nasm_do_parse(yasm_object *object, yasm_preproc *pp, int save_input,
- yasm_linemap *linemap, yasm_errwarns *errwarns, int tasm)
-{
- yasm_parser_nasm parser_nasm;
-
- parser_nasm.tasm = tasm;
- parser_nasm.masm = 0;
-
- parser_nasm.object = object;
- parser_nasm.linemap = linemap;
-
- parser_nasm.locallabel_base = (char *)NULL;
- parser_nasm.locallabel_base_len = 0;
-
- parser_nasm.preproc = pp;
- parser_nasm.errwarns = errwarns;
-
- parser_nasm.prev_bc = yasm_section_bcs_first(object->cur_section);
-
- parser_nasm.save_input = save_input;
-
- parser_nasm.peek_token = NONE;
-
- parser_nasm.absstart = NULL;
- parser_nasm.abspos = NULL;
-
- /* initialize scanner structure */
- yasm_scanner_initialize(&parser_nasm.s);
-
- parser_nasm.state = INITIAL;
-
- nasm_parser_parse(&parser_nasm);
-
- /*yasm_scanner_delete(&parser_nasm.s);*/
-
- /* Free locallabel base if necessary */
- if (parser_nasm.locallabel_base)
- yasm_xfree(parser_nasm.locallabel_base);
-
- /* Check for undefined symbols */
- yasm_symtab_parser_finalize(object->symtab, 0, errwarns);
-}
-
-static void
-nasm_parser_do_parse(yasm_object *object, yasm_preproc *pp,
- int save_input, yasm_linemap *linemap,
- yasm_errwarns *errwarns)
-{
- nasm_do_parse(object, pp, save_input, linemap, errwarns, 0);
-}
-
-#include "nasm-macros.c"
-
-/* Define valid preprocessors to use with this parser */
-static const char *nasm_parser_preproc_keywords[] = {
- "raw",
- "nasm",
- NULL
-};
-
-static const yasm_stdmac nasm_parser_stdmacs[] = {
- { "nasm", "nasm", nasm_standard_mac },
- { NULL, NULL, NULL }
-};
-
-/* Define parser structure -- see parser.h for details */
-yasm_parser_module yasm_nasm_LTX_parser = {
- "NASM-compatible parser",
- "nasm",
- nasm_parser_preproc_keywords,
- "nasm",
- nasm_parser_stdmacs,
- nasm_parser_do_parse
-};
-
-static void
-tasm_parser_do_parse(yasm_object *object, yasm_preproc *pp,
- int save_input, yasm_linemap *linemap,
- yasm_errwarns *errwarns)
-{
- yasm_symtab_set_case_sensitive(object->symtab, 0);
- yasm_warn_disable(YASM_WARN_IMPLICIT_SIZE_OVERRIDE);
- nasm_do_parse(object, pp, save_input, linemap, errwarns, 1);
-}
-
-/* Define valid preprocessors to use with this parser */
-static const char *tasm_parser_preproc_keywords[] = {
- "raw",
- "tasm",
- NULL
-};
-
-static const yasm_stdmac tasm_parser_stdmacs[] = {
- { "tasm", "tasm", nasm_standard_mac },
- { NULL, NULL, NULL }
-};
-
-/* Define parser structure -- see parser.h for details */
-yasm_parser_module yasm_tasm_LTX_parser = {
- "TASM-compatible parser",
- "tasm",
- tasm_parser_preproc_keywords,
- "tasm",
- tasm_parser_stdmacs,
- tasm_parser_do_parse
-};
+/*
+ * NASM-compatible parser
+ *
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <libyasm.h>
+
+#include "nasm-parser.h"
+
+
+static void
+nasm_do_parse(yasm_object *object, yasm_preproc *pp, int save_input,
+ yasm_linemap *linemap, yasm_errwarns *errwarns, int tasm)
+{
+ yasm_parser_nasm parser_nasm;
+
+ parser_nasm.tasm = tasm;
+ parser_nasm.masm = 0;
+
+ parser_nasm.object = object;
+ parser_nasm.linemap = linemap;
+
+ parser_nasm.locallabel_base = (char *)NULL;
+ parser_nasm.locallabel_base_len = 0;
+
+ parser_nasm.preproc = pp;
+ parser_nasm.errwarns = errwarns;
+
+ parser_nasm.prev_bc = yasm_section_bcs_first(object->cur_section);
+
+ parser_nasm.save_input = save_input;
+
+ parser_nasm.peek_token = NONE;
+
+ parser_nasm.absstart = NULL;
+ parser_nasm.abspos = NULL;
+
+ /* initialize scanner structure */
+ yasm_scanner_initialize(&parser_nasm.s);
+
+ parser_nasm.state = INITIAL;
+
+ nasm_parser_parse(&parser_nasm);
+
+ /*yasm_scanner_delete(&parser_nasm.s);*/
+
+ /* Free locallabel base if necessary */
+ if (parser_nasm.locallabel_base)
+ yasm_xfree(parser_nasm.locallabel_base);
+
+ /* Check for undefined symbols */
+ yasm_symtab_parser_finalize(object->symtab, 0, errwarns);
+}
+
+static void
+nasm_parser_do_parse(yasm_object *object, yasm_preproc *pp,
+ int save_input, yasm_linemap *linemap,
+ yasm_errwarns *errwarns)
+{
+ nasm_do_parse(object, pp, save_input, linemap, errwarns, 0);
+}
+
+#include "nasm-macros.c"
+
+/* Define valid preprocessors to use with this parser */
+static const char *nasm_parser_preproc_keywords[] = {
+ "raw",
+ "nasm",
+ NULL
+};
+
+static const yasm_stdmac nasm_parser_stdmacs[] = {
+ { "nasm", "nasm", nasm_standard_mac },
+ { NULL, NULL, NULL }
+};
+
+/* Define parser structure -- see parser.h for details */
+yasm_parser_module yasm_nasm_LTX_parser = {
+ "NASM-compatible parser",
+ "nasm",
+ nasm_parser_preproc_keywords,
+ "nasm",
+ nasm_parser_stdmacs,
+ nasm_parser_do_parse
+};
+
+static void
+tasm_parser_do_parse(yasm_object *object, yasm_preproc *pp,
+ int save_input, yasm_linemap *linemap,
+ yasm_errwarns *errwarns)
+{
+ yasm_symtab_set_case_sensitive(object->symtab, 0);
+ yasm_warn_disable(YASM_WARN_IMPLICIT_SIZE_OVERRIDE);
+ nasm_do_parse(object, pp, save_input, linemap, errwarns, 1);
+}
+
+/* Define valid preprocessors to use with this parser */
+static const char *tasm_parser_preproc_keywords[] = {
+ "raw",
+ "tasm",
+ NULL
+};
+
+static const yasm_stdmac tasm_parser_stdmacs[] = {
+ { "tasm", "tasm", nasm_standard_mac },
+ { NULL, NULL, NULL }
+};
+
+/* Define parser structure -- see parser.h for details */
+yasm_parser_module yasm_tasm_LTX_parser = {
+ "TASM-compatible parser",
+ "tasm",
+ tasm_parser_preproc_keywords,
+ "tasm",
+ tasm_parser_stdmacs,
+ tasm_parser_do_parse
+};
diff --git a/contrib/tools/yasm/modules/parsers/nasm/nasm-parser.h b/contrib/tools/yasm/modules/parsers/nasm/nasm-parser.h
index 0c7cc16c73..dc19cfb5e0 100644
--- a/contrib/tools/yasm/modules/parsers/nasm/nasm-parser.h
+++ b/contrib/tools/yasm/modules/parsers/nasm/nasm-parser.h
@@ -1,123 +1,123 @@
-/*
- * NASM-compatible parser header file
- *
- * Copyright (C) 2002-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef YASM_NASM_PARSER_H
-#define YASM_NASM_PARSER_H
-
-#include "nasm-parser-struct.h"
-
-#define YYCTYPE unsigned char
-
-#define MAX_SAVED_LINE_LEN 80
-
-enum tokentype {
- INTNUM = 258,
- FLTNUM,
- DIRECTIVE_NAME,
- FILENAME,
- STRING,
- SIZE_OVERRIDE,
- OFFSET,
- DECLARE_DATA,
- RESERVE_SPACE,
- LABEL,
- INCBIN,
- EQU,
- TIMES,
- DUP,
- SEG,
- WRT,
- ABS,
- REL,
- NOSPLIT,
- STRICT,
- INSN,
- PREFIX,
- REG,
- REGGROUP,
- SEGREG,
- TARGETMOD,
- LEFT_OP,
- RIGHT_OP,
- LOW,
- HIGH,
- SIGNDIV,
- SIGNMOD,
- START_SECTION_ID,
- ID,
- LOCAL_ID,
- SPECIAL_ID,
- NONLOCAL_ID,
- LINE,
- NONE /* special token for lookahead */
-};
-
-enum nasm_parser_state {
- INITIAL,
- DIRECTIVE,
- SECTION_DIRECTIVE,
- DIRECTIVE2,
- LINECHG,
- LINECHG2,
- INSTRUCTION
-};
-
-#define YYSTYPE nasm_yystype
-
-/* shorter access names to commonly used parser_nasm fields */
-#define p_object (parser_nasm->object)
-#define p_symtab (parser_nasm->object->symtab)
-#define cursect (parser_nasm->object->cur_section)
-#define curtok (parser_nasm->token)
-#define curval (parser_nasm->tokval)
-
-#define INTNUM_val (curval.intn)
-#define FLTNUM_val (curval.flt)
-#define DIRECTIVE_NAME_val (curval.str_val)
-#define FILENAME_val (curval.str_val)
-#define STRING_val (curval.str)
-#define SIZE_OVERRIDE_val (curval.int_info)
-#define DECLARE_DATA_val (curval.int_info)
-#define RESERVE_SPACE_val (curval.int_info)
-#define INSN_val (curval.bc)
-#define PREFIX_val (curval.arch_data)
-#define REG_val (curval.arch_data)
-#define REGGROUP_val (curval.arch_data)
-#define SEGREG_val (curval.arch_data)
-#define TARGETMOD_val (curval.arch_data)
-#define ID_val (curval.str_val)
-
-#define cur_line (yasm_linemap_get_current(parser_nasm->linemap))
-
-#define p_expr_new_tree(l,o,r) yasm_expr_create_tree(l,o,r,cur_line)
-#define p_expr_new_branch(o,r) yasm_expr_create_branch(o,r,cur_line)
-#define p_expr_new_ident(r) yasm_expr_create_ident(r,cur_line)
-
-void nasm_parser_parse(yasm_parser_nasm *parser_nasm);
-void nasm_parser_cleanup(yasm_parser_nasm *parser_nasm);
-int nasm_parser_lex(YYSTYPE *lvalp, yasm_parser_nasm *parser_nasm);
-
-#endif
+/*
+ * NASM-compatible parser header file
+ *
+ * Copyright (C) 2002-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef YASM_NASM_PARSER_H
+#define YASM_NASM_PARSER_H
+
+#include "nasm-parser-struct.h"
+
+#define YYCTYPE unsigned char
+
+#define MAX_SAVED_LINE_LEN 80
+
+enum tokentype {
+ INTNUM = 258,
+ FLTNUM,
+ DIRECTIVE_NAME,
+ FILENAME,
+ STRING,
+ SIZE_OVERRIDE,
+ OFFSET,
+ DECLARE_DATA,
+ RESERVE_SPACE,
+ LABEL,
+ INCBIN,
+ EQU,
+ TIMES,
+ DUP,
+ SEG,
+ WRT,
+ ABS,
+ REL,
+ NOSPLIT,
+ STRICT,
+ INSN,
+ PREFIX,
+ REG,
+ REGGROUP,
+ SEGREG,
+ TARGETMOD,
+ LEFT_OP,
+ RIGHT_OP,
+ LOW,
+ HIGH,
+ SIGNDIV,
+ SIGNMOD,
+ START_SECTION_ID,
+ ID,
+ LOCAL_ID,
+ SPECIAL_ID,
+ NONLOCAL_ID,
+ LINE,
+ NONE /* special token for lookahead */
+};
+
+enum nasm_parser_state {
+ INITIAL,
+ DIRECTIVE,
+ SECTION_DIRECTIVE,
+ DIRECTIVE2,
+ LINECHG,
+ LINECHG2,
+ INSTRUCTION
+};
+
+#define YYSTYPE nasm_yystype
+
+/* shorter access names to commonly used parser_nasm fields */
+#define p_object (parser_nasm->object)
+#define p_symtab (parser_nasm->object->symtab)
+#define cursect (parser_nasm->object->cur_section)
+#define curtok (parser_nasm->token)
+#define curval (parser_nasm->tokval)
+
+#define INTNUM_val (curval.intn)
+#define FLTNUM_val (curval.flt)
+#define DIRECTIVE_NAME_val (curval.str_val)
+#define FILENAME_val (curval.str_val)
+#define STRING_val (curval.str)
+#define SIZE_OVERRIDE_val (curval.int_info)
+#define DECLARE_DATA_val (curval.int_info)
+#define RESERVE_SPACE_val (curval.int_info)
+#define INSN_val (curval.bc)
+#define PREFIX_val (curval.arch_data)
+#define REG_val (curval.arch_data)
+#define REGGROUP_val (curval.arch_data)
+#define SEGREG_val (curval.arch_data)
+#define TARGETMOD_val (curval.arch_data)
+#define ID_val (curval.str_val)
+
+#define cur_line (yasm_linemap_get_current(parser_nasm->linemap))
+
+#define p_expr_new_tree(l,o,r) yasm_expr_create_tree(l,o,r,cur_line)
+#define p_expr_new_branch(o,r) yasm_expr_create_branch(o,r,cur_line)
+#define p_expr_new_ident(r) yasm_expr_create_ident(r,cur_line)
+
+void nasm_parser_parse(yasm_parser_nasm *parser_nasm);
+void nasm_parser_cleanup(yasm_parser_nasm *parser_nasm);
+int nasm_parser_lex(YYSTYPE *lvalp, yasm_parser_nasm *parser_nasm);
+
+#endif
diff --git a/contrib/tools/yasm/modules/preprocs/cpp/cpp-preproc.c b/contrib/tools/yasm/modules/preprocs/cpp/cpp-preproc.c
index ec294268cc..663f726cc7 100644
--- a/contrib/tools/yasm/modules/preprocs/cpp/cpp-preproc.c
+++ b/contrib/tools/yasm/modules/preprocs/cpp/cpp-preproc.c
@@ -1,402 +1,402 @@
-/*
- * Invoke an external C preprocessor
- *
- * Copyright (C) 2007 Paul Barker
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <util.h>
-#include <libyasm.h>
-
-/* TODO: Use autoconf to get the limit on the command line length. */
-#define CMDLINE_SIZE 32770
-
-#define BSIZE 512
-
-/* Pre-declare the preprocessor module object. */
-yasm_preproc_module yasm_cpp_LTX_preproc;
-
-/*******************************************************************************
- Structures.
-*******************************************************************************/
-
-/* An entry in a list of arguments to pass to cpp. */
-typedef struct cpp_arg_entry {
- TAILQ_ENTRY(cpp_arg_entry) entry;
-
- /*
- The operator (eg "-I") and the parameter (eg "include/"). op is expected
- to point to a string literal, whereas param is expected to be a copy of
- the parameter which is free'd when no-longer needed (in
- cpp_preproc_destroy()).
- */
- const char *op;
- char *param;
-} cpp_arg_entry;
-
-typedef struct yasm_preproc_cpp {
- yasm_preproc_base preproc; /* base structure */
-
- /* List of arguments to pass to cpp. */
- TAILQ_HEAD(cpp_arg_head, cpp_arg_entry) cpp_args;
-
- char *filename;
- FILE *f, *f_deps;
- yasm_linemap *cur_lm;
- yasm_errwarns *errwarns;
-
- int flags;
-} yasm_preproc_cpp;
-
-/* Flag values for yasm_preproc_cpp->flags. */
-#define CPP_HAS_BEEN_INVOKED 0x01
-#define CPP_HAS_GENERATED_DEPS 0x02
-
-/*******************************************************************************
- Internal functions and helpers.
-*******************************************************************************/
-
-/*
- Append a string to the command line, ensuring that we don't overflow the
- buffer.
-*/
-#define APPEND(s) do { \
- size_t _len = strlen(s); \
- if (p + _len >= limit) \
- yasm__fatal(N_("command line too long!")); \
- strcpy(p, s); \
- p += _len; \
-} while (0)
-
-/*
- Put all the options together into a command line that can be used to invoke
- cpp.
-*/
-static char *
-cpp_build_cmdline(yasm_preproc_cpp *pp, const char *extra)
-{
- char *cmdline, *p, *limit;
- cpp_arg_entry *arg;
-
- /* Initialize command line. */
- cmdline = p = yasm_xmalloc(strlen(CPP_PROG)+CMDLINE_SIZE);
- limit = p + CMDLINE_SIZE;
- strcpy(p, CPP_PROG);
- p += strlen(CPP_PROG);
-
- arg = TAILQ_FIRST(&pp->cpp_args);
-
- /* Append arguments from the list. */
- while ( arg ) {
- APPEND(" ");
- APPEND(arg->op);
- APPEND(" ");
- APPEND(arg->param);
-
- arg = TAILQ_NEXT(arg, entry);
- }
-
- /* Append extra arguments. */
- if (extra) {
- APPEND(" ");
- APPEND(extra);
- }
- /* Append final arguments. */
- APPEND(" -x assembler-with-cpp ");
- APPEND(pp->filename);
-
- return cmdline;
-}
-
-/* Invoke the c preprocessor. */
-static void
-cpp_invoke(yasm_preproc_cpp *pp)
-{
- char *cmdline;
-
- cmdline = cpp_build_cmdline(pp, NULL);
-
-#ifdef HAVE_POPEN
- pp->f = popen(cmdline, "r");
- if (!pp->f)
- yasm__fatal( N_("Failed to execute preprocessor") );
-#else
- yasm__fatal( N_("Cannot execute preprocessor, no popen available") );
-#endif
-
- yasm_xfree(cmdline);
-}
-
-/* Free memory used by the list of arguments. */
-static void
-cpp_destroy_args(yasm_preproc_cpp *pp)
-{
- cpp_arg_entry *arg;
-
- while ( (arg = TAILQ_FIRST(&pp->cpp_args)) ) {
- TAILQ_REMOVE(&pp->cpp_args, arg, entry);
- yasm_xfree(arg->param);
- yasm_xfree(arg);
- }
-}
-
-/* Invoke the c preprocessor to generate dependency info. */
-static void
-cpp_generate_deps(yasm_preproc_cpp *pp)
-{
- char *cmdline;
-
- cmdline = cpp_build_cmdline(pp, "-M");
-
-#ifdef HAVE_POPEN
- pp->f_deps = popen(cmdline, "r");
- if (!pp->f_deps)
- yasm__fatal( N_("Failed to execute preprocessor") );
-#else
- yasm__fatal( N_("Cannot execute preprocessor, no popen available") );
-#endif
-
- yasm_xfree(cmdline);
-}
-
-/*******************************************************************************
- Interface functions.
-*******************************************************************************/
-static yasm_preproc *
-cpp_preproc_create(const char *in, yasm_symtab *symtab, yasm_linemap *lm,
- yasm_errwarns *errwarns)
-{
- yasm_preproc_cpp *pp = yasm_xmalloc(sizeof(yasm_preproc_cpp));
- void * iter;
- const char * inc_dir;
-
- pp->preproc.module = &yasm_cpp_LTX_preproc;
- pp->f = pp->f_deps = NULL;
- pp->cur_lm = lm;
- pp->errwarns = errwarns;
- pp->flags = 0;
- pp->filename = yasm__xstrdup(in);
-
- TAILQ_INIT(&pp->cpp_args);
-
- /* Iterate through the list of include dirs. */
- iter = NULL;
- while ((inc_dir = yasm_get_include_dir(&iter)) != NULL) {
- cpp_arg_entry *arg = yasm_xmalloc(sizeof(cpp_arg_entry));
- arg->op = "-I";
- arg->param = yasm__xstrdup(inc_dir);
-
- TAILQ_INSERT_TAIL(&pp->cpp_args, arg, entry);
- }
-
- return (yasm_preproc *)pp;
-}
-
-static void
-cpp_preproc_destroy(yasm_preproc *preproc)
-{
- yasm_preproc_cpp *pp = (yasm_preproc_cpp *)preproc;
-
- if (pp->f) {
-#ifdef HAVE_POPEN
- if (pclose(pp->f) != 0)
- yasm__fatal( N_("Preprocessor exited with failure") );
-#endif
- }
-
- cpp_destroy_args(pp);
-
- yasm_xfree(pp->filename);
- yasm_xfree(pp);
-}
-
-static char *
-cpp_preproc_get_line(yasm_preproc *preproc)
-{
- yasm_preproc_cpp *pp = (yasm_preproc_cpp *)preproc;
- int bufsize = BSIZE;
- char *buf, *p;
-
- if (! (pp->flags & CPP_HAS_BEEN_INVOKED) ) {
- pp->flags |= CPP_HAS_BEEN_INVOKED;
-
- cpp_invoke(pp);
- }
-
- /*
- Once the preprocessor has been run, we're just dealing with a normal
- file.
- */
-
- /* Loop to ensure entire line is read (don't want to limit line length). */
- buf = yasm_xmalloc((size_t)bufsize);
- p = buf;
- for (;;) {
- if (!fgets(p, bufsize-(p-buf), pp->f)) {
- if (ferror(pp->f)) {
- yasm_error_set(YASM_ERROR_IO,
- N_("error when reading from file"));
- yasm_errwarn_propagate(pp->errwarns,
- yasm_linemap_get_current(pp->cur_lm));
- }
- break;
- }
- p += strlen(p);
- if (p > buf && p[-1] == '\n')
- break;
- if ((p-buf) >= bufsize) {
- /* Increase size of buffer */
- char *oldbuf = buf;
- bufsize *= 2;
- buf = yasm_xrealloc(buf, (size_t)bufsize);
- p = buf + (p-oldbuf);
- }
- }
-
- if (p == buf) {
- /* No data; must be at EOF */
- yasm_xfree(buf);
- return NULL;
- }
-
- /* Strip the line ending */
- buf[strcspn(buf, "\r\n")] = '\0';
-
- return buf;
-}
-
-static size_t
-cpp_preproc_get_included_file(yasm_preproc *preproc, char *buf,
- size_t max_size)
-{
- char *p = buf;
- int ch = '\0';
- size_t n = 0;
- yasm_preproc_cpp *pp = (yasm_preproc_cpp *)preproc;
-
- if (! (pp->flags & CPP_HAS_GENERATED_DEPS) ) {
- pp->flags |= CPP_HAS_GENERATED_DEPS;
-
- cpp_generate_deps(pp);
-
- /* Skip target name and first dependency. */
- while (ch != ':')
- ch = fgetc(pp->f_deps);
-
- fgetc(pp->f_deps); /* Discard space after colon. */
-
- while (ch != ' ' && ch != EOF)
- ch = fgetc(pp->f_deps);
-
- if (ch == EOF)
- return 0;
- }
-
- while (n < max_size) {
- ch = fgetc(pp->f_deps);
-
- if (ch == ' ' || ch == EOF) {
- *p = '\0';
- return n;
- }
-
- /* Eat any silly characters. */
- if (ch < ' ')
- continue;
-
- *p++ = ch;
- n++;
- }
-
- /* Ensure the buffer is null-terminated. */
- *(p - 1) = '\0';
- return n;
-}
-
-static void
-cpp_preproc_add_include_file(yasm_preproc *preproc, const char *filename)
-{
- yasm_preproc_cpp *pp = (yasm_preproc_cpp *)preproc;
-
- cpp_arg_entry *arg = yasm_xmalloc(sizeof(cpp_arg_entry));
- arg->op = "-include";
- arg->param = yasm__xstrdup(filename);
-
- TAILQ_INSERT_TAIL(&pp->cpp_args, arg, entry);
-}
-
-static void
-cpp_preproc_predefine_macro(yasm_preproc *preproc, const char *macronameval)
-{
- yasm_preproc_cpp *pp = (yasm_preproc_cpp *)preproc;
-
- cpp_arg_entry *arg = yasm_xmalloc(sizeof(cpp_arg_entry));
- arg->op = "-D";
- arg->param = yasm__xstrdup(macronameval);
-
- TAILQ_INSERT_TAIL(&pp->cpp_args, arg, entry);
-}
-
-static void
-cpp_preproc_undefine_macro(yasm_preproc *preproc, const char *macroname)
-{
- yasm_preproc_cpp *pp = (yasm_preproc_cpp *)preproc;
-
- cpp_arg_entry *arg = yasm_xmalloc(sizeof(cpp_arg_entry));
- arg->op = "-U";
- arg->param = yasm__xstrdup(macroname);
-
- TAILQ_INSERT_TAIL(&pp->cpp_args, arg, entry);
-}
-
-static void
-cpp_preproc_define_builtin(yasm_preproc *preproc, const char *macronameval)
-{
- /* Handle a builtin as if it were a predefine. */
- cpp_preproc_predefine_macro(preproc, macronameval);
-}
-
-static void
-cpp_preproc_add_standard(yasm_preproc *preproc, const char **macros)
-{
- /* TODO */
-}
-
-/*******************************************************************************
- Preprocessor module object.
-*******************************************************************************/
-
-yasm_preproc_module yasm_cpp_LTX_preproc = {
- "Run input through external C preprocessor",
- "cpp",
- cpp_preproc_create,
- cpp_preproc_destroy,
- cpp_preproc_get_line,
- cpp_preproc_get_included_file,
- cpp_preproc_add_include_file,
- cpp_preproc_predefine_macro,
- cpp_preproc_undefine_macro,
- cpp_preproc_define_builtin,
- cpp_preproc_add_standard
-};
+/*
+ * Invoke an external C preprocessor
+ *
+ * Copyright (C) 2007 Paul Barker
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <util.h>
+#include <libyasm.h>
+
+/* TODO: Use autoconf to get the limit on the command line length. */
+#define CMDLINE_SIZE 32770
+
+#define BSIZE 512
+
+/* Pre-declare the preprocessor module object. */
+yasm_preproc_module yasm_cpp_LTX_preproc;
+
+/*******************************************************************************
+ Structures.
+*******************************************************************************/
+
+/* An entry in a list of arguments to pass to cpp. */
+typedef struct cpp_arg_entry {
+ TAILQ_ENTRY(cpp_arg_entry) entry;
+
+ /*
+ The operator (eg "-I") and the parameter (eg "include/"). op is expected
+ to point to a string literal, whereas param is expected to be a copy of
+ the parameter which is free'd when no-longer needed (in
+ cpp_preproc_destroy()).
+ */
+ const char *op;
+ char *param;
+} cpp_arg_entry;
+
+typedef struct yasm_preproc_cpp {
+ yasm_preproc_base preproc; /* base structure */
+
+ /* List of arguments to pass to cpp. */
+ TAILQ_HEAD(cpp_arg_head, cpp_arg_entry) cpp_args;
+
+ char *filename;
+ FILE *f, *f_deps;
+ yasm_linemap *cur_lm;
+ yasm_errwarns *errwarns;
+
+ int flags;
+} yasm_preproc_cpp;
+
+/* Flag values for yasm_preproc_cpp->flags. */
+#define CPP_HAS_BEEN_INVOKED 0x01
+#define CPP_HAS_GENERATED_DEPS 0x02
+
+/*******************************************************************************
+ Internal functions and helpers.
+*******************************************************************************/
+
+/*
+ Append a string to the command line, ensuring that we don't overflow the
+ buffer.
+*/
+#define APPEND(s) do { \
+ size_t _len = strlen(s); \
+ if (p + _len >= limit) \
+ yasm__fatal(N_("command line too long!")); \
+ strcpy(p, s); \
+ p += _len; \
+} while (0)
+
+/*
+ Put all the options together into a command line that can be used to invoke
+ cpp.
+*/
+static char *
+cpp_build_cmdline(yasm_preproc_cpp *pp, const char *extra)
+{
+ char *cmdline, *p, *limit;
+ cpp_arg_entry *arg;
+
+ /* Initialize command line. */
+ cmdline = p = yasm_xmalloc(strlen(CPP_PROG)+CMDLINE_SIZE);
+ limit = p + CMDLINE_SIZE;
+ strcpy(p, CPP_PROG);
+ p += strlen(CPP_PROG);
+
+ arg = TAILQ_FIRST(&pp->cpp_args);
+
+ /* Append arguments from the list. */
+ while ( arg ) {
+ APPEND(" ");
+ APPEND(arg->op);
+ APPEND(" ");
+ APPEND(arg->param);
+
+ arg = TAILQ_NEXT(arg, entry);
+ }
+
+ /* Append extra arguments. */
+ if (extra) {
+ APPEND(" ");
+ APPEND(extra);
+ }
+ /* Append final arguments. */
+ APPEND(" -x assembler-with-cpp ");
+ APPEND(pp->filename);
+
+ return cmdline;
+}
+
+/* Invoke the c preprocessor. */
+static void
+cpp_invoke(yasm_preproc_cpp *pp)
+{
+ char *cmdline;
+
+ cmdline = cpp_build_cmdline(pp, NULL);
+
+#ifdef HAVE_POPEN
+ pp->f = popen(cmdline, "r");
+ if (!pp->f)
+ yasm__fatal( N_("Failed to execute preprocessor") );
+#else
+ yasm__fatal( N_("Cannot execute preprocessor, no popen available") );
+#endif
+
+ yasm_xfree(cmdline);
+}
+
+/* Free memory used by the list of arguments. */
+static void
+cpp_destroy_args(yasm_preproc_cpp *pp)
+{
+ cpp_arg_entry *arg;
+
+ while ( (arg = TAILQ_FIRST(&pp->cpp_args)) ) {
+ TAILQ_REMOVE(&pp->cpp_args, arg, entry);
+ yasm_xfree(arg->param);
+ yasm_xfree(arg);
+ }
+}
+
+/* Invoke the c preprocessor to generate dependency info. */
+static void
+cpp_generate_deps(yasm_preproc_cpp *pp)
+{
+ char *cmdline;
+
+ cmdline = cpp_build_cmdline(pp, "-M");
+
+#ifdef HAVE_POPEN
+ pp->f_deps = popen(cmdline, "r");
+ if (!pp->f_deps)
+ yasm__fatal( N_("Failed to execute preprocessor") );
+#else
+ yasm__fatal( N_("Cannot execute preprocessor, no popen available") );
+#endif
+
+ yasm_xfree(cmdline);
+}
+
+/*******************************************************************************
+ Interface functions.
+*******************************************************************************/
+static yasm_preproc *
+cpp_preproc_create(const char *in, yasm_symtab *symtab, yasm_linemap *lm,
+ yasm_errwarns *errwarns)
+{
+ yasm_preproc_cpp *pp = yasm_xmalloc(sizeof(yasm_preproc_cpp));
+ void * iter;
+ const char * inc_dir;
+
+ pp->preproc.module = &yasm_cpp_LTX_preproc;
+ pp->f = pp->f_deps = NULL;
+ pp->cur_lm = lm;
+ pp->errwarns = errwarns;
+ pp->flags = 0;
+ pp->filename = yasm__xstrdup(in);
+
+ TAILQ_INIT(&pp->cpp_args);
+
+ /* Iterate through the list of include dirs. */
+ iter = NULL;
+ while ((inc_dir = yasm_get_include_dir(&iter)) != NULL) {
+ cpp_arg_entry *arg = yasm_xmalloc(sizeof(cpp_arg_entry));
+ arg->op = "-I";
+ arg->param = yasm__xstrdup(inc_dir);
+
+ TAILQ_INSERT_TAIL(&pp->cpp_args, arg, entry);
+ }
+
+ return (yasm_preproc *)pp;
+}
+
+static void
+cpp_preproc_destroy(yasm_preproc *preproc)
+{
+ yasm_preproc_cpp *pp = (yasm_preproc_cpp *)preproc;
+
+ if (pp->f) {
+#ifdef HAVE_POPEN
+ if (pclose(pp->f) != 0)
+ yasm__fatal( N_("Preprocessor exited with failure") );
+#endif
+ }
+
+ cpp_destroy_args(pp);
+
+ yasm_xfree(pp->filename);
+ yasm_xfree(pp);
+}
+
+static char *
+cpp_preproc_get_line(yasm_preproc *preproc)
+{
+ yasm_preproc_cpp *pp = (yasm_preproc_cpp *)preproc;
+ int bufsize = BSIZE;
+ char *buf, *p;
+
+ if (! (pp->flags & CPP_HAS_BEEN_INVOKED) ) {
+ pp->flags |= CPP_HAS_BEEN_INVOKED;
+
+ cpp_invoke(pp);
+ }
+
+ /*
+ Once the preprocessor has been run, we're just dealing with a normal
+ file.
+ */
+
+ /* Loop to ensure entire line is read (don't want to limit line length). */
+ buf = yasm_xmalloc((size_t)bufsize);
+ p = buf;
+ for (;;) {
+ if (!fgets(p, bufsize-(p-buf), pp->f)) {
+ if (ferror(pp->f)) {
+ yasm_error_set(YASM_ERROR_IO,
+ N_("error when reading from file"));
+ yasm_errwarn_propagate(pp->errwarns,
+ yasm_linemap_get_current(pp->cur_lm));
+ }
+ break;
+ }
+ p += strlen(p);
+ if (p > buf && p[-1] == '\n')
+ break;
+ if ((p-buf) >= bufsize) {
+ /* Increase size of buffer */
+ char *oldbuf = buf;
+ bufsize *= 2;
+ buf = yasm_xrealloc(buf, (size_t)bufsize);
+ p = buf + (p-oldbuf);
+ }
+ }
+
+ if (p == buf) {
+ /* No data; must be at EOF */
+ yasm_xfree(buf);
+ return NULL;
+ }
+
+ /* Strip the line ending */
+ buf[strcspn(buf, "\r\n")] = '\0';
+
+ return buf;
+}
+
+static size_t
+cpp_preproc_get_included_file(yasm_preproc *preproc, char *buf,
+ size_t max_size)
+{
+ char *p = buf;
+ int ch = '\0';
+ size_t n = 0;
+ yasm_preproc_cpp *pp = (yasm_preproc_cpp *)preproc;
+
+ if (! (pp->flags & CPP_HAS_GENERATED_DEPS) ) {
+ pp->flags |= CPP_HAS_GENERATED_DEPS;
+
+ cpp_generate_deps(pp);
+
+ /* Skip target name and first dependency. */
+ while (ch != ':')
+ ch = fgetc(pp->f_deps);
+
+ fgetc(pp->f_deps); /* Discard space after colon. */
+
+ while (ch != ' ' && ch != EOF)
+ ch = fgetc(pp->f_deps);
+
+ if (ch == EOF)
+ return 0;
+ }
+
+ while (n < max_size) {
+ ch = fgetc(pp->f_deps);
+
+ if (ch == ' ' || ch == EOF) {
+ *p = '\0';
+ return n;
+ }
+
+ /* Eat any silly characters. */
+ if (ch < ' ')
+ continue;
+
+ *p++ = ch;
+ n++;
+ }
+
+ /* Ensure the buffer is null-terminated. */
+ *(p - 1) = '\0';
+ return n;
+}
+
+static void
+cpp_preproc_add_include_file(yasm_preproc *preproc, const char *filename)
+{
+ yasm_preproc_cpp *pp = (yasm_preproc_cpp *)preproc;
+
+ cpp_arg_entry *arg = yasm_xmalloc(sizeof(cpp_arg_entry));
+ arg->op = "-include";
+ arg->param = yasm__xstrdup(filename);
+
+ TAILQ_INSERT_TAIL(&pp->cpp_args, arg, entry);
+}
+
+static void
+cpp_preproc_predefine_macro(yasm_preproc *preproc, const char *macronameval)
+{
+ yasm_preproc_cpp *pp = (yasm_preproc_cpp *)preproc;
+
+ cpp_arg_entry *arg = yasm_xmalloc(sizeof(cpp_arg_entry));
+ arg->op = "-D";
+ arg->param = yasm__xstrdup(macronameval);
+
+ TAILQ_INSERT_TAIL(&pp->cpp_args, arg, entry);
+}
+
+static void
+cpp_preproc_undefine_macro(yasm_preproc *preproc, const char *macroname)
+{
+ yasm_preproc_cpp *pp = (yasm_preproc_cpp *)preproc;
+
+ cpp_arg_entry *arg = yasm_xmalloc(sizeof(cpp_arg_entry));
+ arg->op = "-U";
+ arg->param = yasm__xstrdup(macroname);
+
+ TAILQ_INSERT_TAIL(&pp->cpp_args, arg, entry);
+}
+
+static void
+cpp_preproc_define_builtin(yasm_preproc *preproc, const char *macronameval)
+{
+ /* Handle a builtin as if it were a predefine. */
+ cpp_preproc_predefine_macro(preproc, macronameval);
+}
+
+static void
+cpp_preproc_add_standard(yasm_preproc *preproc, const char **macros)
+{
+ /* TODO */
+}
+
+/*******************************************************************************
+ Preprocessor module object.
+*******************************************************************************/
+
+yasm_preproc_module yasm_cpp_LTX_preproc = {
+ "Run input through external C preprocessor",
+ "cpp",
+ cpp_preproc_create,
+ cpp_preproc_destroy,
+ cpp_preproc_get_line,
+ cpp_preproc_get_included_file,
+ cpp_preproc_add_include_file,
+ cpp_preproc_predefine_macro,
+ cpp_preproc_undefine_macro,
+ cpp_preproc_define_builtin,
+ cpp_preproc_add_standard
+};
diff --git a/contrib/tools/yasm/modules/preprocs/gas/gas-eval.c b/contrib/tools/yasm/modules/preprocs/gas/gas-eval.c
index 1f274c52e8..3625c7a9be 100644
--- a/contrib/tools/yasm/modules/preprocs/gas/gas-eval.c
+++ b/contrib/tools/yasm/modules/preprocs/gas/gas-eval.c
@@ -1,444 +1,444 @@
-/* eval.c expression evaluator for the Netwide Assembler
- *
- * The Netwide Assembler is copyright (C) 1996 Simon Tatham and
- * Julian Hall. All rights reserved. The software is
- * redistributable under the licence given in the file "Licence"
- * distributed in the NASM archive.
- *
- * initial version 27/iii/95 by Simon Tatham
- */
-#include <util.h>
-#include <libyasm-stdint.h>
-#include <libyasm/coretype.h>
-#include <libyasm/intnum.h>
-#include <libyasm/expr.h>
-#include <libyasm/symrec.h>
-#include <ctype.h>
-
-#include "gas-eval.h"
-
-/* The assembler symbol table. */
-static yasm_symtab *symtab;
-
-static scanner scan; /* Address of scanner routine */
-static efunc error; /* Address of error reporting routine */
-
-static struct tokenval *tokval; /* The current token */
-static int i; /* The t_type of tokval */
-
-static void *scpriv;
-static void *epriv;
-
-/*
- * Recursive-descent parser. Called with a single boolean operand,
- * which is TRUE if the evaluation is critical (i.e. unresolved
- * symbols are an error condition). Must update the global `i' to
- * reflect the token after the parsed string. May return NULL.
- *
- * evaluate() should report its own errors: on return it is assumed
- * that if NULL has been returned, the error has already been
- * reported.
- */
-
-/*
- * Grammar parsed is:
- *
- * expr : bexpr [ WRT expr6 ]
- * bexpr : rexp0 or expr0 depending on relative-mode setting
- * rexp0 : rexp1 [ {||} rexp1...]
- * rexp1 : rexp2 [ {^^} rexp2...]
- * rexp2 : rexp3 [ {&&} rexp3...]
- * rexp3 : expr0 [ {=,==,<>,!=,<,>,<=,>=} expr0 ]
- * expr0 : expr1 [ {|} expr1...]
- * expr1 : expr2 [ {^} expr2...]
- * expr2 : expr3 [ {&} expr3...]
- * expr3 : expr4 [ {<<,>>} expr4...]
- * expr4 : expr5 [ {+,-} expr5...]
- * expr5 : expr6 [ {*,/,%,//,%%} expr6...]
- * expr6 : { ~,+,-,SEG } expr6
- * | (bexpr)
- * | symbol
- * | $
- * | number
- */
-
-static yasm_expr *rexp0(void), *rexp1(void), *rexp2(void), *rexp3(void);
-
-static yasm_expr *expr0(void), *expr1(void), *expr2(void), *expr3(void);
-static yasm_expr *expr4(void), *expr5(void), *expr6(void);
-
-static yasm_expr *(*bexpr)(void);
-
-static yasm_expr *rexp0(void)
-{
- yasm_expr *e, *f;
-
- e = rexp1();
- if (!e)
- return NULL;
-
- while (i == TOKEN_DBL_OR)
- {
- i = scan(scpriv, tokval);
- f = rexp1();
- if (!f) {
- yasm_expr_destroy(e);
- return NULL;
- }
-
- e = yasm_expr_create_tree(e, YASM_EXPR_LOR, f, 0);
+/* eval.c expression evaluator for the Netwide Assembler
+ *
+ * The Netwide Assembler is copyright (C) 1996 Simon Tatham and
+ * Julian Hall. All rights reserved. The software is
+ * redistributable under the licence given in the file "Licence"
+ * distributed in the NASM archive.
+ *
+ * initial version 27/iii/95 by Simon Tatham
+ */
+#include <util.h>
+#include <libyasm-stdint.h>
+#include <libyasm/coretype.h>
+#include <libyasm/intnum.h>
+#include <libyasm/expr.h>
+#include <libyasm/symrec.h>
+#include <ctype.h>
+
+#include "gas-eval.h"
+
+/* The assembler symbol table. */
+static yasm_symtab *symtab;
+
+static scanner scan; /* Address of scanner routine */
+static efunc error; /* Address of error reporting routine */
+
+static struct tokenval *tokval; /* The current token */
+static int i; /* The t_type of tokval */
+
+static void *scpriv;
+static void *epriv;
+
+/*
+ * Recursive-descent parser. Called with a single boolean operand,
+ * which is TRUE if the evaluation is critical (i.e. unresolved
+ * symbols are an error condition). Must update the global `i' to
+ * reflect the token after the parsed string. May return NULL.
+ *
+ * evaluate() should report its own errors: on return it is assumed
+ * that if NULL has been returned, the error has already been
+ * reported.
+ */
+
+/*
+ * Grammar parsed is:
+ *
+ * expr : bexpr [ WRT expr6 ]
+ * bexpr : rexp0 or expr0 depending on relative-mode setting
+ * rexp0 : rexp1 [ {||} rexp1...]
+ * rexp1 : rexp2 [ {^^} rexp2...]
+ * rexp2 : rexp3 [ {&&} rexp3...]
+ * rexp3 : expr0 [ {=,==,<>,!=,<,>,<=,>=} expr0 ]
+ * expr0 : expr1 [ {|} expr1...]
+ * expr1 : expr2 [ {^} expr2...]
+ * expr2 : expr3 [ {&} expr3...]
+ * expr3 : expr4 [ {<<,>>} expr4...]
+ * expr4 : expr5 [ {+,-} expr5...]
+ * expr5 : expr6 [ {*,/,%,//,%%} expr6...]
+ * expr6 : { ~,+,-,SEG } expr6
+ * | (bexpr)
+ * | symbol
+ * | $
+ * | number
+ */
+
+static yasm_expr *rexp0(void), *rexp1(void), *rexp2(void), *rexp3(void);
+
+static yasm_expr *expr0(void), *expr1(void), *expr2(void), *expr3(void);
+static yasm_expr *expr4(void), *expr5(void), *expr6(void);
+
+static yasm_expr *(*bexpr)(void);
+
+static yasm_expr *rexp0(void)
+{
+ yasm_expr *e, *f;
+
+ e = rexp1();
+ if (!e)
+ return NULL;
+
+ while (i == TOKEN_DBL_OR)
+ {
+ i = scan(scpriv, tokval);
+ f = rexp1();
+ if (!f) {
+ yasm_expr_destroy(e);
+ return NULL;
+ }
+
+ e = yasm_expr_create_tree(e, YASM_EXPR_LOR, f, 0);
+ }
+ return e;
+}
+
+static yasm_expr *rexp1(void)
+{
+ yasm_expr *e, *f;
+
+ e = rexp2();
+ if (!e)
+ return NULL;
+
+ while (i == TOKEN_DBL_XOR)
+ {
+ i = scan(scpriv, tokval);
+ f = rexp2();
+ if (!f) {
+ yasm_expr_destroy(e);
+ return NULL;
+ }
+
+ e = yasm_expr_create_tree(e, YASM_EXPR_LXOR, f, 0);
+ }
+ return e;
+}
+
+static yasm_expr *rexp2(void)
+{
+ yasm_expr *e, *f;
+
+ e = rexp3();
+ if (!e)
+ return NULL;
+ while (i == TOKEN_DBL_AND)
+ {
+ i = scan(scpriv, tokval);
+ f = rexp3();
+ if (!f) {
+ yasm_expr_destroy(e);
+ return NULL;
+ }
+
+ e = yasm_expr_create_tree(e, YASM_EXPR_LAND, f, 0);
+ }
+ return e;
+}
+
+static yasm_expr *rexp3(void)
+{
+ yasm_expr *e, *f;
+
+ e = expr0();
+ if (!e)
+ return NULL;
+
+ while (i == TOKEN_EQ || i == TOKEN_LT || i == TOKEN_GT ||
+ i == TOKEN_NE || i == TOKEN_LE || i == TOKEN_GE)
+ {
+ int j = i;
+ i = scan(scpriv, tokval);
+ f = expr0();
+ if (!f) {
+ yasm_expr_destroy(e);
+ return NULL;
+ }
+
+ switch (j)
+ {
+ case TOKEN_EQ:
+ e = yasm_expr_create_tree(e, YASM_EXPR_EQ, f, 0);
+ break;
+ case TOKEN_LT:
+ e = yasm_expr_create_tree(e, YASM_EXPR_LT, f, 0);
+ break;
+ case TOKEN_GT:
+ e = yasm_expr_create_tree(e, YASM_EXPR_GT, f, 0);
+ break;
+ case TOKEN_NE:
+ e = yasm_expr_create_tree(e, YASM_EXPR_NE, f, 0);
+ break;
+ case TOKEN_LE:
+ e = yasm_expr_create_tree(e, YASM_EXPR_LE, f, 0);
+ break;
+ case TOKEN_GE:
+ e = yasm_expr_create_tree(e, YASM_EXPR_GE, f, 0);
+ break;
+ }
+ }
+ return e;
+}
+
+static yasm_expr *expr0(void)
+{
+ yasm_expr *e, *f;
+
+ e = expr1();
+ if (!e)
+ return NULL;
+
+ while (i == '|')
+ {
+ i = scan(scpriv, tokval);
+ f = expr1();
+ if (!f) {
+ yasm_expr_destroy(e);
+ return NULL;
+ }
+
+ e = yasm_expr_create_tree(e, YASM_EXPR_OR, f, 0);
+ }
+ return e;
+}
+
+static yasm_expr *expr1(void)
+{
+ yasm_expr *e, *f;
+
+ e = expr2();
+ if (!e)
+ return NULL;
+
+ while (i == '^') {
+ i = scan(scpriv, tokval);
+ f = expr2();
+ if (!f) {
+ yasm_expr_destroy(e);
+ return NULL;
+ }
+
+ e = yasm_expr_create_tree(e, YASM_EXPR_XOR, f, 0);
+ }
+ return e;
+}
+
+static yasm_expr *expr2(void)
+{
+ yasm_expr *e, *f;
+
+ e = expr3();
+ if (!e)
+ return NULL;
+
+ while (i == '&') {
+ i = scan(scpriv, tokval);
+ f = expr3();
+ if (!f) {
+ yasm_expr_destroy(e);
+ return NULL;
+ }
+
+ e = yasm_expr_create_tree(e, YASM_EXPR_AND, f, 0);
+ }
+ return e;
+}
+
+static yasm_expr *expr3(void)
+{
+ yasm_expr *e, *f;
+
+ e = expr4();
+ if (!e)
+ return NULL;
+
+ while (i == TOKEN_SHL || i == TOKEN_SHR)
+ {
+ int j = i;
+ i = scan(scpriv, tokval);
+ f = expr4();
+ if (!f) {
+ yasm_expr_destroy(e);
+ return NULL;
+ }
+
+ switch (j) {
+ case TOKEN_SHL:
+ e = yasm_expr_create_tree(e, YASM_EXPR_SHL, f, 0);
+ break;
+ case TOKEN_SHR:
+ e = yasm_expr_create_tree(e, YASM_EXPR_SHR, f, 0);
+ break;
+ }
+ }
+ return e;
+}
+
+static yasm_expr *expr4(void)
+{
+ yasm_expr *e, *f;
+
+ e = expr5();
+ if (!e)
+ return NULL;
+ while (i == '+' || i == '-')
+ {
+ int j = i;
+ i = scan(scpriv, tokval);
+ f = expr5();
+ if (!f) {
+ yasm_expr_destroy(e);
+ return NULL;
+ }
+ switch (j) {
+ case '+':
+ e = yasm_expr_create_tree(e, YASM_EXPR_ADD, f, 0);
+ break;
+ case '-':
+ e = yasm_expr_create_tree(e, YASM_EXPR_SUB, f, 0);
+ break;
+ }
+ }
+ return e;
+}
+
+static yasm_expr *expr5(void)
+{
+ yasm_expr *e, *f;
+
+ e = expr6();
+ if (!e)
+ return NULL;
+ while (i == '*' || i == '/' || i == '%' ||
+ i == TOKEN_SDIV || i == TOKEN_SMOD)
+ {
+ int j = i;
+ i = scan(scpriv, tokval);
+ f = expr6();
+ if (!f) {
+ yasm_expr_destroy(e);
+ return NULL;
+ }
+ switch (j) {
+ case '*':
+ e = yasm_expr_create_tree(e, YASM_EXPR_MUL, f, 0);
+ break;
+ case '/':
+ e = yasm_expr_create_tree(e, YASM_EXPR_DIV, f, 0);
+ break;
+ case '%':
+ e = yasm_expr_create_tree(e, YASM_EXPR_MOD, f, 0);
+ break;
+ case TOKEN_SDIV:
+ e = yasm_expr_create_tree(e, YASM_EXPR_SIGNDIV, f, 0);
+ break;
+ case TOKEN_SMOD:
+ e = yasm_expr_create_tree(e, YASM_EXPR_SIGNMOD, f, 0);
+ break;
+ }
+ }
+ return e;
+}
+
+static yasm_expr *expr6(void)
+{
+ yasm_expr *e = NULL;
+
+ if (i == '-') {
+ i = scan(scpriv, tokval);
+ e = expr6();
+ if (!e)
+ return NULL;
+ return yasm_expr_create_branch(YASM_EXPR_NEG, e, 0);
+ } else if (i == '+') {
+ i = scan(scpriv, tokval);
+ return expr6();
+ } else if (i == '~') {
+ i = scan(scpriv, tokval);
+ e = expr6();
+ if (!e)
+ return NULL;
+ return yasm_expr_create_branch(YASM_EXPR_NOT, e, 0);
+ } else if (i == TOKEN_SEG) {
+ i = scan(scpriv, tokval);
+ e = expr6();
+ if (!e)
+ return NULL;
+ error(epriv, ERR_NONFATAL, "%s not supported", "SEG");
+ return e;
+ } else if (i == '(') {
+ i = scan(scpriv, tokval);
+ e = bexpr();
+ if (!e)
+ return NULL;
+ if (i != ')') {
+ error(epriv, ERR_NONFATAL, "expecting `)'");
+ return NULL;
+ }
+ i = scan(scpriv, tokval);
+ return e;
}
- return e;
-}
-
-static yasm_expr *rexp1(void)
-{
- yasm_expr *e, *f;
-
- e = rexp2();
- if (!e)
- return NULL;
-
- while (i == TOKEN_DBL_XOR)
- {
- i = scan(scpriv, tokval);
- f = rexp2();
- if (!f) {
- yasm_expr_destroy(e);
- return NULL;
- }
-
- e = yasm_expr_create_tree(e, YASM_EXPR_LXOR, f, 0);
- }
- return e;
-}
-
-static yasm_expr *rexp2(void)
-{
- yasm_expr *e, *f;
-
- e = rexp3();
- if (!e)
- return NULL;
- while (i == TOKEN_DBL_AND)
- {
- i = scan(scpriv, tokval);
- f = rexp3();
- if (!f) {
- yasm_expr_destroy(e);
- return NULL;
- }
-
- e = yasm_expr_create_tree(e, YASM_EXPR_LAND, f, 0);
- }
- return e;
-}
-
-static yasm_expr *rexp3(void)
-{
- yasm_expr *e, *f;
-
- e = expr0();
- if (!e)
- return NULL;
-
- while (i == TOKEN_EQ || i == TOKEN_LT || i == TOKEN_GT ||
- i == TOKEN_NE || i == TOKEN_LE || i == TOKEN_GE)
- {
- int j = i;
- i = scan(scpriv, tokval);
- f = expr0();
- if (!f) {
- yasm_expr_destroy(e);
- return NULL;
- }
-
- switch (j)
- {
- case TOKEN_EQ:
- e = yasm_expr_create_tree(e, YASM_EXPR_EQ, f, 0);
- break;
- case TOKEN_LT:
- e = yasm_expr_create_tree(e, YASM_EXPR_LT, f, 0);
- break;
- case TOKEN_GT:
- e = yasm_expr_create_tree(e, YASM_EXPR_GT, f, 0);
- break;
- case TOKEN_NE:
- e = yasm_expr_create_tree(e, YASM_EXPR_NE, f, 0);
- break;
- case TOKEN_LE:
- e = yasm_expr_create_tree(e, YASM_EXPR_LE, f, 0);
- break;
- case TOKEN_GE:
- e = yasm_expr_create_tree(e, YASM_EXPR_GE, f, 0);
- break;
- }
- }
- return e;
-}
-
-static yasm_expr *expr0(void)
-{
- yasm_expr *e, *f;
-
- e = expr1();
- if (!e)
- return NULL;
-
- while (i == '|')
- {
- i = scan(scpriv, tokval);
- f = expr1();
- if (!f) {
- yasm_expr_destroy(e);
- return NULL;
- }
-
- e = yasm_expr_create_tree(e, YASM_EXPR_OR, f, 0);
- }
- return e;
-}
-
-static yasm_expr *expr1(void)
-{
- yasm_expr *e, *f;
-
- e = expr2();
- if (!e)
- return NULL;
-
- while (i == '^') {
- i = scan(scpriv, tokval);
- f = expr2();
- if (!f) {
- yasm_expr_destroy(e);
- return NULL;
- }
-
- e = yasm_expr_create_tree(e, YASM_EXPR_XOR, f, 0);
- }
- return e;
-}
-
-static yasm_expr *expr2(void)
-{
- yasm_expr *e, *f;
-
- e = expr3();
- if (!e)
- return NULL;
-
- while (i == '&') {
- i = scan(scpriv, tokval);
- f = expr3();
- if (!f) {
- yasm_expr_destroy(e);
- return NULL;
- }
-
- e = yasm_expr_create_tree(e, YASM_EXPR_AND, f, 0);
- }
- return e;
-}
-
-static yasm_expr *expr3(void)
-{
- yasm_expr *e, *f;
-
- e = expr4();
- if (!e)
- return NULL;
-
- while (i == TOKEN_SHL || i == TOKEN_SHR)
- {
- int j = i;
- i = scan(scpriv, tokval);
- f = expr4();
- if (!f) {
- yasm_expr_destroy(e);
- return NULL;
- }
-
- switch (j) {
- case TOKEN_SHL:
- e = yasm_expr_create_tree(e, YASM_EXPR_SHL, f, 0);
- break;
- case TOKEN_SHR:
- e = yasm_expr_create_tree(e, YASM_EXPR_SHR, f, 0);
- break;
- }
- }
- return e;
-}
-
-static yasm_expr *expr4(void)
-{
- yasm_expr *e, *f;
-
- e = expr5();
- if (!e)
- return NULL;
- while (i == '+' || i == '-')
- {
- int j = i;
- i = scan(scpriv, tokval);
- f = expr5();
- if (!f) {
- yasm_expr_destroy(e);
- return NULL;
- }
- switch (j) {
- case '+':
- e = yasm_expr_create_tree(e, YASM_EXPR_ADD, f, 0);
- break;
- case '-':
- e = yasm_expr_create_tree(e, YASM_EXPR_SUB, f, 0);
- break;
- }
- }
- return e;
-}
-
-static yasm_expr *expr5(void)
-{
- yasm_expr *e, *f;
-
- e = expr6();
- if (!e)
- return NULL;
- while (i == '*' || i == '/' || i == '%' ||
- i == TOKEN_SDIV || i == TOKEN_SMOD)
- {
- int j = i;
- i = scan(scpriv, tokval);
- f = expr6();
- if (!f) {
- yasm_expr_destroy(e);
- return NULL;
- }
- switch (j) {
- case '*':
- e = yasm_expr_create_tree(e, YASM_EXPR_MUL, f, 0);
- break;
- case '/':
- e = yasm_expr_create_tree(e, YASM_EXPR_DIV, f, 0);
- break;
- case '%':
- e = yasm_expr_create_tree(e, YASM_EXPR_MOD, f, 0);
- break;
- case TOKEN_SDIV:
- e = yasm_expr_create_tree(e, YASM_EXPR_SIGNDIV, f, 0);
- break;
- case TOKEN_SMOD:
- e = yasm_expr_create_tree(e, YASM_EXPR_SIGNMOD, f, 0);
- break;
- }
- }
- return e;
-}
-
-static yasm_expr *expr6(void)
-{
- yasm_expr *e = NULL;
-
- if (i == '-') {
- i = scan(scpriv, tokval);
- e = expr6();
- if (!e)
- return NULL;
- return yasm_expr_create_branch(YASM_EXPR_NEG, e, 0);
- } else if (i == '+') {
- i = scan(scpriv, tokval);
- return expr6();
- } else if (i == '~') {
- i = scan(scpriv, tokval);
- e = expr6();
- if (!e)
- return NULL;
- return yasm_expr_create_branch(YASM_EXPR_NOT, e, 0);
- } else if (i == TOKEN_SEG) {
- i = scan(scpriv, tokval);
- e = expr6();
- if (!e)
- return NULL;
- error(epriv, ERR_NONFATAL, "%s not supported", "SEG");
- return e;
- } else if (i == '(') {
- i = scan(scpriv, tokval);
- e = bexpr();
- if (!e)
- return NULL;
- if (i != ')') {
- error(epriv, ERR_NONFATAL, "expecting `)'");
- return NULL;
- }
- i = scan(scpriv, tokval);
- return e;
- }
- else if (i == TOKEN_NUM || i == TOKEN_ID ||
- i == TOKEN_HERE || i == TOKEN_BASE)
- {
- switch (i) {
- case TOKEN_NUM:
- e = yasm_expr_create_ident(yasm_expr_int(tokval->t_integer), 0);
- tokval->t_integer = NULL;
- break;
- case TOKEN_ID:
- if (symtab) {
- yasm_symrec *sym =
- yasm_symtab_get(symtab, tokval->t_charptr);
- if (sym) {
- e = yasm_expr_create_ident(yasm_expr_sym(sym), 0);
- } else {
- error(epriv, ERR_NONFATAL,
- "undefined symbol `%s' in preprocessor",
- tokval->t_charptr);
- e = yasm_expr_create_ident(yasm_expr_int(
- yasm_intnum_create_int(1)), 0);
- }
- break;
- }
- /*fallthrough*/
- case TOKEN_HERE:
- case TOKEN_BASE:
- error(epriv, ERR_NONFATAL,
- "cannot reference symbol `%s' in preprocessor",
- (i == TOKEN_ID ? tokval->t_charptr :
- i == TOKEN_HERE ? "$" : "$$"));
- e = yasm_expr_create_ident(yasm_expr_int(yasm_intnum_create_int(1)),
- 0);
- break;
- }
- i = scan(scpriv, tokval);
- return e;
- } else {
- error(epriv, ERR_NONFATAL, "expression syntax error");
- return NULL;
- }
-}
-
-yasm_expr *evaluate (scanner sc, void *scprivate, struct tokenval *tv,
- void *eprivate, int critical, efunc report_error,
- yasm_symtab *st)
-{
- if (critical & CRITICAL) {
- critical &= ~CRITICAL;
- bexpr = rexp0;
- } else
- bexpr = expr0;
-
- scan = sc;
- scpriv = scprivate;
- tokval = tv;
- error = report_error;
- epriv = eprivate;
- symtab = st;
-
- if (tokval->t_type == TOKEN_INVALID)
- i = scan(scpriv, tokval);
- else
- i = tokval->t_type;
-
- return bexpr ();
-}
+ else if (i == TOKEN_NUM || i == TOKEN_ID ||
+ i == TOKEN_HERE || i == TOKEN_BASE)
+ {
+ switch (i) {
+ case TOKEN_NUM:
+ e = yasm_expr_create_ident(yasm_expr_int(tokval->t_integer), 0);
+ tokval->t_integer = NULL;
+ break;
+ case TOKEN_ID:
+ if (symtab) {
+ yasm_symrec *sym =
+ yasm_symtab_get(symtab, tokval->t_charptr);
+ if (sym) {
+ e = yasm_expr_create_ident(yasm_expr_sym(sym), 0);
+ } else {
+ error(epriv, ERR_NONFATAL,
+ "undefined symbol `%s' in preprocessor",
+ tokval->t_charptr);
+ e = yasm_expr_create_ident(yasm_expr_int(
+ yasm_intnum_create_int(1)), 0);
+ }
+ break;
+ }
+ /*fallthrough*/
+ case TOKEN_HERE:
+ case TOKEN_BASE:
+ error(epriv, ERR_NONFATAL,
+ "cannot reference symbol `%s' in preprocessor",
+ (i == TOKEN_ID ? tokval->t_charptr :
+ i == TOKEN_HERE ? "$" : "$$"));
+ e = yasm_expr_create_ident(yasm_expr_int(yasm_intnum_create_int(1)),
+ 0);
+ break;
+ }
+ i = scan(scpriv, tokval);
+ return e;
+ } else {
+ error(epriv, ERR_NONFATAL, "expression syntax error");
+ return NULL;
+ }
+}
+
+yasm_expr *evaluate (scanner sc, void *scprivate, struct tokenval *tv,
+ void *eprivate, int critical, efunc report_error,
+ yasm_symtab *st)
+{
+ if (critical & CRITICAL) {
+ critical &= ~CRITICAL;
+ bexpr = rexp0;
+ } else
+ bexpr = expr0;
+
+ scan = sc;
+ scpriv = scprivate;
+ tokval = tv;
+ error = report_error;
+ epriv = eprivate;
+ symtab = st;
+
+ if (tokval->t_type == TOKEN_INVALID)
+ i = scan(scpriv, tokval);
+ else
+ i = tokval->t_type;
+
+ return bexpr ();
+}
diff --git a/contrib/tools/yasm/modules/preprocs/gas/gas-eval.h b/contrib/tools/yasm/modules/preprocs/gas/gas-eval.h
index 10b2d0c7cc..18dcc517a9 100644
--- a/contrib/tools/yasm/modules/preprocs/gas/gas-eval.h
+++ b/contrib/tools/yasm/modules/preprocs/gas/gas-eval.h
@@ -1,120 +1,120 @@
-/* eval.h header file for eval.c
- *
- * The Netwide Assembler is copyright (C) 1996 Simon Tatham and
- * Julian Hall. All rights reserved. The software is
- * redistributable under the licence given in the file "Licence"
- * distributed in the NASM archive.
- */
-
-#ifndef YASM_EVAL_H
-#define YASM_EVAL_H
-
-/*
- * -------------------------
- * Error reporting functions
- * -------------------------
- */
-
-/*
- * An error reporting function should look like this.
- */
-typedef void (*efunc) (void *private_data, int severity, const char *fmt, ...);
-
-/*
- * These are the error severity codes which get passed as the first
- * argument to an efunc.
- */
-
-#define ERR_DEBUG 0x00000008 /* put out debugging message */
-#define ERR_WARNING 0x00000000 /* warn only: no further action */
-#define ERR_NONFATAL 0x00000001 /* terminate assembly after phase */
-#define ERR_FATAL 0x00000002 /* instantly fatal: exit with error */
-#define ERR_PANIC 0x00000003 /* internal error: panic instantly
- * and dump core for reference */
-#define ERR_MASK 0x0000000F /* mask off the above codes */
-#define ERR_NOFILE 0x00000010 /* don't give source file name/line */
-#define ERR_USAGE 0x00000020 /* print a usage message */
-#define ERR_PASS1 0x00000040 /* only print this error on pass one */
-
-/*
- * These codes define specific types of suppressible warning.
- */
-
-#define ERR_WARN_MASK 0x0000FF00 /* the mask for this feature */
-#define ERR_WARN_SHR 8 /* how far to shift right */
-
-#define ERR_WARN_MNP 0x00000100 /* macro-num-parameters warning */
-#define ERR_WARN_MSR 0x00000200 /* macro self-reference */
-#define ERR_WARN_OL 0x00000300 /* orphan label (no colon, and
- * alone on line) */
-#define ERR_WARN_NOV 0x00000400 /* numeric overflow */
-#define ERR_WARN_GNUELF 0x00000500 /* using GNU ELF extensions */
-#define ERR_WARN_MAX 5 /* the highest numbered one */
-
-/*
- * The expression evaluator must be passed a scanner function; a
- * standard scanner is provided as part of nasmlib.c. The
- * preprocessor will use a different one. Scanners, and the
- * token-value structures they return, look like this.
- *
- * The return value from the scanner is always a copy of the
- * `t_type' field in the structure.
- */
-struct tokenval {
- int t_type;
- yasm_intnum *t_integer, *t_inttwo;
- char *t_charptr;
-};
-typedef int (*scanner) (void *private_data, struct tokenval *tv);
-
-/*
- * Token types returned by the scanner, in addition to ordinary
- * ASCII character values, and zero for end-of-string.
- */
-enum { /* token types, other than chars */
- TOKEN_INVALID = -1, /* a placeholder value */
- TOKEN_EOS = 0, /* end of string */
- TOKEN_EQ = '=', TOKEN_GT = '>', TOKEN_LT = '<', /* aliases */
- TOKEN_ID = 256, TOKEN_NUM, TOKEN_REG, TOKEN_INSN, /* major token types */
- TOKEN_ERRNUM, /* numeric constant with error in */
- TOKEN_HERE, TOKEN_BASE, /* $ and $$ */
- TOKEN_SPECIAL, /* BYTE, WORD, DWORD, FAR, NEAR, etc */
- TOKEN_PREFIX, /* A32, O16, LOCK, REPNZ, TIMES, etc */
- TOKEN_SHL, TOKEN_SHR, /* << and >> */
- TOKEN_SDIV, TOKEN_SMOD, /* // and %% */
- TOKEN_GE, TOKEN_LE, TOKEN_NE, /* >=, <= and <> (!= is same as <>) */
- TOKEN_DBL_AND, TOKEN_DBL_OR, TOKEN_DBL_XOR, /* &&, || and ^^ */
- TOKEN_SEG, TOKEN_WRT, /* SEG and WRT */
- TOKEN_FLOAT /* floating-point constant */
-};
-
-/*
- * The actual expression evaluator function looks like this. When
- * called, it expects the first token of its expression to already
- * be in `*tv'; if it is not, set tv->t_type to TOKEN_INVALID and
- * it will start by calling the scanner.
- *
- * `critical' is non-zero if the expression may not contain forward
- * references. The evaluator will report its own error if this
- * occurs; if `critical' is 1, the error will be "symbol not
- * defined before use", whereas if `critical' is 2, the error will
- * be "symbol undefined".
- *
- * If `critical' has bit 8 set (in addition to its main value: 0x101
- * and 0x102 correspond to 1 and 2) then an extended expression
- * syntax is recognised, in which relational operators such as =, <
- * and >= are accepted, as well as low-precedence logical operators
- * &&, ^^ and ||.
- */
-#define CRITICAL 0x100
-typedef yasm_expr *(*evalfunc) (scanner sc, void *scprivate, struct tokenval *tv,
- int critical, efunc error, yasm_symtab *symtab);
-
-/*
- * The evaluator itself.
- */
-yasm_expr *evaluate (scanner sc, void *scprivate, struct tokenval *tv,
- void *eprivate, int critical, efunc report_error,
- yasm_symtab *symtab);
-
-#endif
+/* eval.h header file for eval.c
+ *
+ * The Netwide Assembler is copyright (C) 1996 Simon Tatham and
+ * Julian Hall. All rights reserved. The software is
+ * redistributable under the licence given in the file "Licence"
+ * distributed in the NASM archive.
+ */
+
+#ifndef YASM_EVAL_H
+#define YASM_EVAL_H
+
+/*
+ * -------------------------
+ * Error reporting functions
+ * -------------------------
+ */
+
+/*
+ * An error reporting function should look like this.
+ */
+typedef void (*efunc) (void *private_data, int severity, const char *fmt, ...);
+
+/*
+ * These are the error severity codes which get passed as the first
+ * argument to an efunc.
+ */
+
+#define ERR_DEBUG 0x00000008 /* put out debugging message */
+#define ERR_WARNING 0x00000000 /* warn only: no further action */
+#define ERR_NONFATAL 0x00000001 /* terminate assembly after phase */
+#define ERR_FATAL 0x00000002 /* instantly fatal: exit with error */
+#define ERR_PANIC 0x00000003 /* internal error: panic instantly
+ * and dump core for reference */
+#define ERR_MASK 0x0000000F /* mask off the above codes */
+#define ERR_NOFILE 0x00000010 /* don't give source file name/line */
+#define ERR_USAGE 0x00000020 /* print a usage message */
+#define ERR_PASS1 0x00000040 /* only print this error on pass one */
+
+/*
+ * These codes define specific types of suppressible warning.
+ */
+
+#define ERR_WARN_MASK 0x0000FF00 /* the mask for this feature */
+#define ERR_WARN_SHR 8 /* how far to shift right */
+
+#define ERR_WARN_MNP 0x00000100 /* macro-num-parameters warning */
+#define ERR_WARN_MSR 0x00000200 /* macro self-reference */
+#define ERR_WARN_OL 0x00000300 /* orphan label (no colon, and
+ * alone on line) */
+#define ERR_WARN_NOV 0x00000400 /* numeric overflow */
+#define ERR_WARN_GNUELF 0x00000500 /* using GNU ELF extensions */
+#define ERR_WARN_MAX 5 /* the highest numbered one */
+
+/*
+ * The expression evaluator must be passed a scanner function; a
+ * standard scanner is provided as part of nasmlib.c. The
+ * preprocessor will use a different one. Scanners, and the
+ * token-value structures they return, look like this.
+ *
+ * The return value from the scanner is always a copy of the
+ * `t_type' field in the structure.
+ */
+struct tokenval {
+ int t_type;
+ yasm_intnum *t_integer, *t_inttwo;
+ char *t_charptr;
+};
+typedef int (*scanner) (void *private_data, struct tokenval *tv);
+
+/*
+ * Token types returned by the scanner, in addition to ordinary
+ * ASCII character values, and zero for end-of-string.
+ */
+enum { /* token types, other than chars */
+ TOKEN_INVALID = -1, /* a placeholder value */
+ TOKEN_EOS = 0, /* end of string */
+ TOKEN_EQ = '=', TOKEN_GT = '>', TOKEN_LT = '<', /* aliases */
+ TOKEN_ID = 256, TOKEN_NUM, TOKEN_REG, TOKEN_INSN, /* major token types */
+ TOKEN_ERRNUM, /* numeric constant with error in */
+ TOKEN_HERE, TOKEN_BASE, /* $ and $$ */
+ TOKEN_SPECIAL, /* BYTE, WORD, DWORD, FAR, NEAR, etc */
+ TOKEN_PREFIX, /* A32, O16, LOCK, REPNZ, TIMES, etc */
+ TOKEN_SHL, TOKEN_SHR, /* << and >> */
+ TOKEN_SDIV, TOKEN_SMOD, /* // and %% */
+ TOKEN_GE, TOKEN_LE, TOKEN_NE, /* >=, <= and <> (!= is same as <>) */
+ TOKEN_DBL_AND, TOKEN_DBL_OR, TOKEN_DBL_XOR, /* &&, || and ^^ */
+ TOKEN_SEG, TOKEN_WRT, /* SEG and WRT */
+ TOKEN_FLOAT /* floating-point constant */
+};
+
+/*
+ * The actual expression evaluator function looks like this. When
+ * called, it expects the first token of its expression to already
+ * be in `*tv'; if it is not, set tv->t_type to TOKEN_INVALID and
+ * it will start by calling the scanner.
+ *
+ * `critical' is non-zero if the expression may not contain forward
+ * references. The evaluator will report its own error if this
+ * occurs; if `critical' is 1, the error will be "symbol not
+ * defined before use", whereas if `critical' is 2, the error will
+ * be "symbol undefined".
+ *
+ * If `critical' has bit 8 set (in addition to its main value: 0x101
+ * and 0x102 correspond to 1 and 2) then an extended expression
+ * syntax is recognised, in which relational operators such as =, <
+ * and >= are accepted, as well as low-precedence logical operators
+ * &&, ^^ and ||.
+ */
+#define CRITICAL 0x100
+typedef yasm_expr *(*evalfunc) (scanner sc, void *scprivate, struct tokenval *tv,
+ int critical, efunc error, yasm_symtab *symtab);
+
+/*
+ * The evaluator itself.
+ */
+yasm_expr *evaluate (scanner sc, void *scprivate, struct tokenval *tv,
+ void *eprivate, int critical, efunc report_error,
+ yasm_symtab *symtab);
+
+#endif
diff --git a/contrib/tools/yasm/modules/preprocs/gas/gas-preproc.c b/contrib/tools/yasm/modules/preprocs/gas/gas-preproc.c
index ecb24225fe..60c9e4f0cd 100644
--- a/contrib/tools/yasm/modules/preprocs/gas/gas-preproc.c
+++ b/contrib/tools/yasm/modules/preprocs/gas/gas-preproc.c
@@ -1,1409 +1,1409 @@
-/*
- * GAS preprocessor (emulates GNU Assembler's preprocessor)
- *
- * Copyright (C) 2009 Alexei Svitkine
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-#include <ctype.h>
-
-#include <libyasm.h>
-#include "modules/preprocs/gas/gas-eval.h"
-
-#define FALSE 0
-#define TRUE 1
-#define BSIZE 512
-
-#ifndef MAXPATHLEN
-#define MAXPATHLEN 1024
-#endif
-
-typedef struct buffered_line {
- char *line;
- int line_number;
- SLIST_ENTRY(buffered_line) next;
-} buffered_line;
-
-typedef struct included_file {
- char *filename;
- int lines_remaining;
- SLIST_ENTRY(included_file) next;
-} included_file;
-
-typedef struct macro_entry {
- char *name;
- int num_params;
- char **params;
- int num_lines;
- char **lines;
- STAILQ_ENTRY(macro_entry) next;
-} macro_entry;
-
-typedef struct deferred_define {
- char *name;
- char *value;
- SLIST_ENTRY(deferred_define) next;
-} deferred_define;
-
-typedef struct expr_state {
- const char *string;
- char *symbol;
- int string_cursor;
-} expr_state;
-
-typedef struct yasm_preproc_gas {
- yasm_preproc_base preproc; /* base structure */
-
- FILE *in;
- char *in_filename;
-
- yasm_symtab *defines;
- SLIST_HEAD(deferred_defines_head, deferred_define) deferred_defines;
-
- int depth;
- int skip_depth;
-
- int in_comment;
-
- expr_state expr;
-
- SLIST_HEAD(buffered_lines_head, buffered_line) buffered_lines;
- SLIST_HEAD(included_files_head, included_file) included_files;
- STAILQ_HEAD(macros_head, macro_entry) macros;
-
- int in_line_number;
- int next_line_number;
- int current_line_number; /* virtual (output) line number */
-
- yasm_linemap *cur_lm;
- yasm_errwarns *errwarns;
- int fatal_error;
- int detect_errors_only;
-} yasm_preproc_gas;
-
-yasm_preproc_module yasm_gas_LTX_preproc;
-
-/* Forward declarations. */
-
-static int substitute_values(yasm_preproc_gas *pp, char **line_ptr);
-
-/* String helpers. */
-
-static const char *starts_with(const char *big, const char *little)
-{
- while (*little) {
- if (*little++ != *big++) {
- return NULL;
- }
- }
- return big;
-}
-
-static void skip_whitespace(const char **line)
-{
- while (isspace(**line)) {
- (*line)++;
- }
-}
-
-static void skip_whitespace2(char **line)
-{
- while (isspace(**line)) {
- (*line)++;
- }
-}
-
-static const char *matches(const char *line, const char *directive)
-{
- skip_whitespace(&line);
-
- if (*line == '.') {
- line = starts_with(line + 1, directive);
- if (line && (!*line || isspace(*line))) {
- skip_whitespace(&line);
- return line;
- }
- }
-
- return NULL;
-}
-
-static int unquote(const char *arg, char *to, size_t to_size, char q, char expected, const char **remainder)
-{
- const char *quote;
- const char *end;
- size_t len;
-
- skip_whitespace(&arg);
- if (*arg != q) {
- return -1;
- }
-
- arg++;
-
- end = arg;
- do {
- quote = strchr(end, q);
- if (!quote) {
- return -2;
- }
- end = quote + 1;
- } while (*(quote - 1) == '\\');
-
- skip_whitespace(&end);
- if (*end != expected) {
- return -3;
- }
-
- if (remainder) {
- *remainder = end + 1;
- }
-
- len = (size_t) (quote - arg);
- if (len >= to_size) {
- return -4;
- }
-
- strncpy(to, arg, len);
- to[len] = '\0';
-
- return (int) len;
-}
-
-/* Line-reading. */
-
-static char *read_line_from_file(yasm_preproc_gas *pp, FILE *file)
-{
- int bufsize = BSIZE;
- char *buf;
- char *p;
-
- buf = yasm_xmalloc((size_t)bufsize);
-
- /* Loop to ensure entire line is read (don't want to limit line length). */
- p = buf;
- for (;;) {
- if (!fgets(p, bufsize - (p - buf), file)) {
- if (ferror(file)) {
- yasm_error_set(YASM_ERROR_IO, N_("error when reading from file"));
- yasm_errwarn_propagate(pp->errwarns, pp->current_line_number);
+/*
+ * GAS preprocessor (emulates GNU Assembler's preprocessor)
+ *
+ * Copyright (C) 2009 Alexei Svitkine
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+#include <ctype.h>
+
+#include <libyasm.h>
+#include "modules/preprocs/gas/gas-eval.h"
+
+#define FALSE 0
+#define TRUE 1
+#define BSIZE 512
+
+#ifndef MAXPATHLEN
+#define MAXPATHLEN 1024
+#endif
+
+typedef struct buffered_line {
+ char *line;
+ int line_number;
+ SLIST_ENTRY(buffered_line) next;
+} buffered_line;
+
+typedef struct included_file {
+ char *filename;
+ int lines_remaining;
+ SLIST_ENTRY(included_file) next;
+} included_file;
+
+typedef struct macro_entry {
+ char *name;
+ int num_params;
+ char **params;
+ int num_lines;
+ char **lines;
+ STAILQ_ENTRY(macro_entry) next;
+} macro_entry;
+
+typedef struct deferred_define {
+ char *name;
+ char *value;
+ SLIST_ENTRY(deferred_define) next;
+} deferred_define;
+
+typedef struct expr_state {
+ const char *string;
+ char *symbol;
+ int string_cursor;
+} expr_state;
+
+typedef struct yasm_preproc_gas {
+ yasm_preproc_base preproc; /* base structure */
+
+ FILE *in;
+ char *in_filename;
+
+ yasm_symtab *defines;
+ SLIST_HEAD(deferred_defines_head, deferred_define) deferred_defines;
+
+ int depth;
+ int skip_depth;
+
+ int in_comment;
+
+ expr_state expr;
+
+ SLIST_HEAD(buffered_lines_head, buffered_line) buffered_lines;
+ SLIST_HEAD(included_files_head, included_file) included_files;
+ STAILQ_HEAD(macros_head, macro_entry) macros;
+
+ int in_line_number;
+ int next_line_number;
+ int current_line_number; /* virtual (output) line number */
+
+ yasm_linemap *cur_lm;
+ yasm_errwarns *errwarns;
+ int fatal_error;
+ int detect_errors_only;
+} yasm_preproc_gas;
+
+yasm_preproc_module yasm_gas_LTX_preproc;
+
+/* Forward declarations. */
+
+static int substitute_values(yasm_preproc_gas *pp, char **line_ptr);
+
+/* String helpers. */
+
+static const char *starts_with(const char *big, const char *little)
+{
+ while (*little) {
+ if (*little++ != *big++) {
+ return NULL;
+ }
+ }
+ return big;
+}
+
+static void skip_whitespace(const char **line)
+{
+ while (isspace(**line)) {
+ (*line)++;
+ }
+}
+
+static void skip_whitespace2(char **line)
+{
+ while (isspace(**line)) {
+ (*line)++;
+ }
+}
+
+static const char *matches(const char *line, const char *directive)
+{
+ skip_whitespace(&line);
+
+ if (*line == '.') {
+ line = starts_with(line + 1, directive);
+ if (line && (!*line || isspace(*line))) {
+ skip_whitespace(&line);
+ return line;
+ }
+ }
+
+ return NULL;
+}
+
+static int unquote(const char *arg, char *to, size_t to_size, char q, char expected, const char **remainder)
+{
+ const char *quote;
+ const char *end;
+ size_t len;
+
+ skip_whitespace(&arg);
+ if (*arg != q) {
+ return -1;
+ }
+
+ arg++;
+
+ end = arg;
+ do {
+ quote = strchr(end, q);
+ if (!quote) {
+ return -2;
+ }
+ end = quote + 1;
+ } while (*(quote - 1) == '\\');
+
+ skip_whitespace(&end);
+ if (*end != expected) {
+ return -3;
+ }
+
+ if (remainder) {
+ *remainder = end + 1;
+ }
+
+ len = (size_t) (quote - arg);
+ if (len >= to_size) {
+ return -4;
+ }
+
+ strncpy(to, arg, len);
+ to[len] = '\0';
+
+ return (int) len;
+}
+
+/* Line-reading. */
+
+static char *read_line_from_file(yasm_preproc_gas *pp, FILE *file)
+{
+ int bufsize = BSIZE;
+ char *buf;
+ char *p;
+
+ buf = yasm_xmalloc((size_t)bufsize);
+
+ /* Loop to ensure entire line is read (don't want to limit line length). */
+ p = buf;
+ for (;;) {
+ if (!fgets(p, bufsize - (p - buf), file)) {
+ if (ferror(file)) {
+ yasm_error_set(YASM_ERROR_IO, N_("error when reading from file"));
+ yasm_errwarn_propagate(pp->errwarns, pp->current_line_number);
+ }
+ break;
+ }
+ p += strlen(p);
+ if (p > buf && p[-1] == '\n') {
+ break;
+ }
+ if ((p - buf) + 1 >= bufsize) {
+ /* Increase size of buffer */
+ char *oldbuf = buf;
+ bufsize *= 2;
+ buf = yasm_xrealloc(buf, (size_t) bufsize);
+ p = buf + (p - oldbuf);
+ }
+ }
+
+ if (p == buf) {
+ /* No data; must be at EOF */
+ yasm_xfree(buf);
+ return NULL;
+ }
+
+ /* Strip the line ending */
+ buf[strcspn(buf, "\r\n")] = '\0';
+ return buf;
+}
+
+static char *read_line(yasm_preproc_gas *pp)
+{
+ char *line;
+
+ if (!SLIST_EMPTY(&pp->included_files)) {
+ included_file *inc_file = SLIST_FIRST(&pp->included_files);
+ if (inc_file->lines_remaining <= 0) {
+ SLIST_REMOVE_HEAD(&pp->included_files, next);
+ yasm_xfree(inc_file->filename);
+ yasm_xfree(inc_file);
+ }
+ }
+
+ if (!SLIST_EMPTY(&pp->buffered_lines)) {
+ buffered_line *bline = SLIST_FIRST(&pp->buffered_lines);
+ SLIST_REMOVE_HEAD(&pp->buffered_lines, next);
+ line = bline->line;
+ if (bline->line_number != -1) {
+ pp->next_line_number = bline->line_number;
+ }
+ yasm_xfree(bline);
+ if (!SLIST_EMPTY(&pp->included_files)) {
+ SLIST_FIRST(&pp->included_files)->lines_remaining--;
+ }
+ return line;
+ }
+
+ line = read_line_from_file(pp, pp->in);
+ if (line) {
+ pp->in_line_number++;
+ pp->next_line_number = pp->in_line_number;
+ }
+
+ return line;
+}
+
+static const char *get_arg(yasm_preproc_gas *pp, const char *src, char *dest, size_t dest_size)
+{
+ const char *comma = strchr(src, ',');
+ if (comma) {
+ size_t len = (size_t) (comma - src);
+ if (len >= dest_size) {
+ len = dest_size - 1;
+ }
+ strncpy(dest, src, len);
+ dest[len] = '\0';
+ comma++;
+ skip_whitespace(&comma);
+ } else {
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("expected comma"));
+ yasm_errwarn_propagate(pp->errwarns, pp->current_line_number);
+ }
+ return comma;
+}
+
+/* GAS expression evaluation. */
+
+static char get_char(yasm_preproc_gas *pp)
+{
+ return pp->expr.string[pp->expr.string_cursor];
+}
+
+static const char *get_str(yasm_preproc_gas *pp)
+{
+ return pp->expr.string + pp->expr.string_cursor;
+}
+
+static void next_char(yasm_preproc_gas *pp)
+{
+ pp->expr.string_cursor++;
+}
+
+static int ishex(char c)
+{
+ c = tolower(c);
+ return isdigit(c) || (c >= 'a' && c <= 'f');
+}
+
+static void gas_scan_init(yasm_preproc_gas *pp, struct tokenval *tokval, const char *arg1)
+{
+ pp->expr.symbol = NULL;
+ pp->expr.string = arg1;
+ pp->expr.string_cursor = 0;
+ memset(tokval, 0, sizeof(struct tokenval));
+ tokval->t_type = TOKEN_INVALID;
+}
+
+static void gas_scan_cleanup(yasm_preproc_gas *pp, struct tokenval *tokval)
+{
+ if (tokval->t_integer) {
+ yasm_intnum_destroy(tokval->t_integer);
+ tokval->t_integer = NULL;
+ }
+ if (pp->expr.symbol) {
+ yasm_xfree(pp->expr.symbol);
+ pp->expr.symbol = NULL;
+ }
+}
+
+static int gas_scan(void *preproc, struct tokenval *tokval)
+{
+ yasm_preproc_gas *pp = (yasm_preproc_gas *) preproc;
+ char c = get_char(pp);
+ const char *str;
+
+ tokval->t_charptr = NULL;
+
+ if (c == '\0') {
+ return tokval->t_type = TOKEN_EOS;
+ }
+
+ if (isspace(c)) {
+ do {
+ next_char(pp);
+ c = get_char(pp);
+ } while (isspace(c));
+ }
+
+ if (isdigit(c)) {
+ int char_index = 0;
+ int value = 0;
+
+ do {
+ value = value*10 + (c - '0');
+ char_index++;
+ next_char(pp);
+ c = get_char(pp);
+ if (char_index == 1 && c == 'x' && value == 0) {
+ next_char(pp);
+ c = get_char(pp);
+ /* Hex notation. */
+ while (ishex(c)) {
+ if (isdigit(c)) {
+ value = (value << 4) | (c - '0');
+ } else {
+ value = (value << 4) | (tolower(c) - 'a' + 0xa);
+ }
+ next_char(pp);
+ c = get_char(pp);
+ }
+ break;
+ }
+ } while (isdigit(c));
+
+ if (tokval->t_integer) {
+ yasm_intnum_destroy(tokval->t_integer);
+ }
+ tokval->t_integer = yasm_intnum_create_int(value);
+ return tokval->t_type = TOKEN_NUM;
+ }
+
+ tokval->t_type = TOKEN_INVALID;
+ str = get_str(pp);
+
+ {
+ /* It should be tested whether GAS supports all of these or if there are missing ones. */
+ unsigned i;
+ struct {
+ const char *op;
+ int token;
+ } ops[] = {
+ { "<<", TOKEN_SHL },
+ { ">>", TOKEN_SHR },
+ { "//", TOKEN_SDIV },
+ { "%%", TOKEN_SMOD },
+ { "==", TOKEN_EQ },
+ { "!=", TOKEN_NE },
+ { "<>", TOKEN_NE },
+ { "<>", TOKEN_NE },
+ { "<=", TOKEN_LE },
+ { ">=", TOKEN_GE },
+ { "&&", TOKEN_DBL_AND },
+ { "^^", TOKEN_DBL_XOR },
+ { "||", TOKEN_DBL_OR }
+ };
+ for (i = 0; i < sizeof(ops)/sizeof(ops[0]); i++) {
+ if (!strcmp(str, ops[i].op)) {
+ tokval->t_type = ops[i].token;
+ break;
+ }
+ }
+ }
+
+ if (tokval->t_type != TOKEN_INVALID) {
+ next_char(pp);
+ next_char(pp);
+ } else {
+ str = get_str(pp);
+
+ next_char(pp);
+ tokval->t_type = c;
+
+ /* Is it a symbol? If so we need to make it a TOKEN_ID. */
+ if (isalpha(c) || c == '_' || c == '.') {
+ int symbol_length = 1;
+
+ c = get_char(pp);
+ while (isalnum(c) || c == '$' || c == '_') {
+ symbol_length++;
+ next_char(pp);
+ c = get_char(pp);
+ }
+
+ pp->expr.symbol = yasm_xrealloc(pp->expr.symbol, symbol_length + 1);
+ memcpy(pp->expr.symbol, str, symbol_length);
+ pp->expr.symbol[symbol_length] = '\0';
+
+ tokval->t_type = TOKEN_ID;
+ tokval->t_charptr = pp->expr.symbol;
+ }
+ }
+
+ return tokval->t_type;
+}
+
+static void gas_err(void *private_data, int severity, const char *fmt, ...)
+{
+ va_list args;
+ yasm_preproc_gas *pp = private_data;
+
+ if (!pp->detect_errors_only) {
+ va_start(args, fmt);
+ yasm_error_set_va(YASM_ERROR_SYNTAX, N_(fmt), args);
+ yasm_errwarn_propagate(pp->errwarns, pp->current_line_number);
+ va_end(args);
+ }
+
+ pp->fatal_error = 1;
+}
+
+static long eval_expr(yasm_preproc_gas *pp, const char *arg1)
+{
+ struct tokenval tv;
+ yasm_expr *expr;
+ yasm_intnum *intn;
+ long value;
+ expr_state prev_state;
+
+ if (!*arg1) {
+ return 0;
+ }
+
+ prev_state = pp->expr;
+ gas_scan_init(pp, &tv, arg1);
+ expr = evaluate(gas_scan, pp, &tv, pp, CRITICAL, gas_err, pp->defines);
+ intn = yasm_expr_get_intnum(&expr, 0);
+ value = yasm_intnum_get_int(intn);
+ yasm_expr_destroy(expr);
+ gas_scan_cleanup(pp, &tv);
+ pp->expr = prev_state;
+
+ return value;
+}
+
+/* If-directive helpers. */
+
+static int handle_if(yasm_preproc_gas *pp, int is_true)
+{
+ assert(pp->depth >= 0);
+ assert(pp->skip_depth == 0);
+ if (is_true) {
+ pp->depth++;
+ } else {
+ pp->skip_depth = 1;
+ }
+ return 1;
+}
+
+static int handle_endif(yasm_preproc_gas *pp)
+{
+ if (pp->depth) {
+ pp->depth--;
+ } else {
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("\".endif\" without \".if\""));
+ yasm_errwarn_propagate(pp->errwarns, pp->current_line_number);
+ return 0;
+ }
+ return 1;
+}
+
+static int handle_else(yasm_preproc_gas *pp, int is_elseif)
+{
+ if (!pp->depth) {
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("\".%s\" without \".if\""), is_elseif ? "elseif" : "else");
+ yasm_errwarn_propagate(pp->errwarns, pp->current_line_number);
+ return 0;
+ } else {
+ pp->skip_depth = 1;
+ }
+ return 1;
+}
+
+/* Directive-handling functions. */
+
+static int eval_if(yasm_preproc_gas *pp, int negate, const char *arg1)
+{
+ long value;
+ if (!*arg1) {
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("expression is required in \".if\" statement"));
+ yasm_errwarn_propagate(pp->errwarns, pp->current_line_number);
+ return 0;
+ }
+ value = eval_expr(pp, arg1);
+ handle_if(pp, (negate ? !value : !!value));
+ return 1;
+}
+
+static int eval_else(yasm_preproc_gas *pp, int unused)
+{
+ return handle_else(pp, 0);
+}
+
+static int eval_endif(yasm_preproc_gas *pp, int unused)
+{
+ return handle_endif(pp);
+}
+
+static int eval_elseif(yasm_preproc_gas *pp, int unused, const char *arg1)
+{
+ if (!*arg1) {
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("expression is required in \".elseif\" statement"));
+ yasm_errwarn_propagate(pp->errwarns, pp->current_line_number);
+ return 0;
+ }
+ if (!handle_else(pp, 1)) {
+ return 0;
+ }
+ return eval_if(pp, 0, arg1);
+}
+
+static int eval_ifb(yasm_preproc_gas *pp, int negate, const char *arg1)
+{
+ int is_blank = !*arg1;
+ return handle_if(pp, (negate ? !is_blank : is_blank));
+}
+
+static int eval_ifc(yasm_preproc_gas *pp, int negate, const char *args)
+{
+ char arg1[512], arg2[512];
+ const char *remainder;
+ int len = unquote(args, arg1, sizeof(arg1), '\'', ',', &remainder);
+ if (len >= 0) {
+ len = unquote(remainder, arg2, sizeof(arg2), '\'', '\0', NULL);
+ if (len >= 0) {
+ int result = !strcmp(arg1, arg2);
+ return handle_if(pp, (negate ? !result : result));
+ }
+ } else {
+ /* first argument was not single-quoted, assume non-quoted mode */
+ remainder = get_arg(pp, args, arg1, sizeof(arg1));
+ if (remainder) {
+ int result = !strcmp(arg1, remainder);
+ return handle_if(pp, (negate ? !result : result));
+ }
+ }
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("\"%s\" expects two single-quoted or unquoted arguments"), negate ? ".ifnc" : ".ifc");
+ yasm_errwarn_propagate(pp->errwarns, pp->current_line_number);
+ return 0;
+}
+
+static int eval_ifeqs(yasm_preproc_gas *pp, int negate, const char *args)
+{
+ char arg1[512], arg2[512];
+ const char *remainder;
+ int len = unquote(args, arg1, sizeof(arg1), '"', ',', &remainder);
+ if (len >= 0) {
+ len = unquote(remainder, arg2, sizeof(arg2), '"', '\0', NULL);
+ if (len >= 0) {
+ int result = !strcmp(arg1, arg2);
+ return handle_if(pp, (negate ? !result : result));
+ }
+ }
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("\"%s\" expects two double-quoted arguments"), negate ? ".ifnes" : ".ifeqs");
+ yasm_errwarn_propagate(pp->errwarns, pp->current_line_number);
+ return 1;
+}
+
+static int eval_ifdef(yasm_preproc_gas *pp, int negate, const char *name)
+{
+ yasm_symrec *rec = yasm_symtab_get(pp->defines, name);
+ int result = (rec != NULL);
+ return handle_if(pp, (negate ? !result : result));
+}
+
+static int eval_ifge(yasm_preproc_gas *pp, int negate, const char *arg1)
+{
+ long value = eval_expr(pp, arg1);
+ int result = (value >= 0);
+ return handle_if(pp, (negate ? !result : result));
+}
+
+static int eval_ifgt(yasm_preproc_gas *pp, int negate, const char *arg1)
+{
+ long value = eval_expr(pp, arg1);
+ int result = (value > 0);
+ return handle_if(pp, (negate ? !result : result));
+}
+
+static int eval_include(yasm_preproc_gas *pp, int unused, const char *arg1)
+{
+ char *current_filename;
+ char filename[MAXPATHLEN];
+ char *line;
+ int num_lines;
+ FILE *file;
+ buffered_line *prev_bline;
+ included_file *inc_file;
+
+ if (unquote(arg1, filename, sizeof(filename), '"', '\0', NULL) < 0) {
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("string expected"));
+ yasm_errwarn_propagate(pp->errwarns, pp->current_line_number);
+ return 0;
+ }
+
+ if (SLIST_EMPTY(&pp->included_files)) {
+ current_filename = pp->in_filename;
+ } else {
+ current_filename = SLIST_FIRST(&pp->included_files)->filename;
+ }
+ file = yasm_fopen_include(filename, current_filename, "r", NULL);
+ if (!file) {
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("unable to open included file \"%s\""), filename);
+ yasm_errwarn_propagate(pp->errwarns, pp->current_line_number);
+ return 0;
+ }
+
+ num_lines = 0;
+ prev_bline = NULL;
+ line = read_line_from_file(pp, file);
+ while (line) {
+ buffered_line *bline = yasm_xmalloc(sizeof(buffered_line));
+ bline->line = line;
+ bline->line_number = -1;
+ if (prev_bline) {
+ SLIST_INSERT_AFTER(prev_bline, bline, next);
+ } else {
+ SLIST_INSERT_HEAD(&pp->buffered_lines, bline, next);
+ }
+ prev_bline = bline;
+ line = read_line_from_file(pp, file);
+ num_lines++;
+ }
+
+ inc_file = yasm_xmalloc(sizeof(included_file));
+ inc_file->filename = yasm__xstrdup(filename);
+ inc_file->lines_remaining = num_lines;
+ SLIST_INSERT_HEAD(&pp->included_files, inc_file, next);
+ return 1;
+}
+
+static int try_eval_expr(yasm_preproc_gas *pp, const char *value, long *result)
+{
+ int success;
+
+ pp->detect_errors_only = 1;
+ *result = eval_expr(pp, value);
+ success = !pp->fatal_error;
+ pp->fatal_error = 0;
+ pp->detect_errors_only = 0;
+
+ return success;
+}
+
+static int remove_define(yasm_preproc_gas *pp, const char *name, int allow_redefine)
+{
+ yasm_symrec *rec = yasm_symtab_get(pp->defines, name);
+ if (rec) {
+ const yasm_symtab_iter *entry;
+ yasm_symtab *new_defines;
+
+ if (!allow_redefine) {
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("symbol \"%s\" is already defined"), name);
+ yasm_errwarn_propagate(pp->errwarns, pp->current_line_number);
+ return 0;
+ }
+
+ new_defines = yasm_symtab_create();
+
+ for (entry = yasm_symtab_first(pp->defines); entry; entry = yasm_symtab_next(entry)) {
+ yasm_symrec *entry_rec = yasm_symtab_iter_value(entry);
+ const char *rec_name = yasm_symrec_get_name(entry_rec);
+ if (strcmp(rec_name, name)) {
+ yasm_intnum *num = yasm_intnum_create_int(eval_expr(pp, rec_name));
+ yasm_expr *expr = yasm_expr_create_ident(yasm_expr_int(num), 0);
+ yasm_symtab_define_equ(new_defines, rec_name, expr, 0);
}
- break;
- }
- p += strlen(p);
- if (p > buf && p[-1] == '\n') {
- break;
- }
- if ((p - buf) + 1 >= bufsize) {
- /* Increase size of buffer */
- char *oldbuf = buf;
- bufsize *= 2;
- buf = yasm_xrealloc(buf, (size_t) bufsize);
- p = buf + (p - oldbuf);
- }
- }
-
- if (p == buf) {
- /* No data; must be at EOF */
- yasm_xfree(buf);
- return NULL;
- }
-
- /* Strip the line ending */
- buf[strcspn(buf, "\r\n")] = '\0';
- return buf;
-}
-
-static char *read_line(yasm_preproc_gas *pp)
-{
- char *line;
-
- if (!SLIST_EMPTY(&pp->included_files)) {
- included_file *inc_file = SLIST_FIRST(&pp->included_files);
- if (inc_file->lines_remaining <= 0) {
- SLIST_REMOVE_HEAD(&pp->included_files, next);
- yasm_xfree(inc_file->filename);
- yasm_xfree(inc_file);
- }
- }
-
- if (!SLIST_EMPTY(&pp->buffered_lines)) {
- buffered_line *bline = SLIST_FIRST(&pp->buffered_lines);
- SLIST_REMOVE_HEAD(&pp->buffered_lines, next);
- line = bline->line;
- if (bline->line_number != -1) {
- pp->next_line_number = bline->line_number;
- }
- yasm_xfree(bline);
- if (!SLIST_EMPTY(&pp->included_files)) {
- SLIST_FIRST(&pp->included_files)->lines_remaining--;
- }
- return line;
- }
-
- line = read_line_from_file(pp, pp->in);
- if (line) {
- pp->in_line_number++;
- pp->next_line_number = pp->in_line_number;
- }
-
- return line;
-}
-
-static const char *get_arg(yasm_preproc_gas *pp, const char *src, char *dest, size_t dest_size)
-{
- const char *comma = strchr(src, ',');
- if (comma) {
- size_t len = (size_t) (comma - src);
- if (len >= dest_size) {
- len = dest_size - 1;
- }
- strncpy(dest, src, len);
- dest[len] = '\0';
- comma++;
- skip_whitespace(&comma);
- } else {
- yasm_error_set(YASM_ERROR_SYNTAX, N_("expected comma"));
- yasm_errwarn_propagate(pp->errwarns, pp->current_line_number);
- }
- return comma;
-}
-
-/* GAS expression evaluation. */
-
-static char get_char(yasm_preproc_gas *pp)
-{
- return pp->expr.string[pp->expr.string_cursor];
-}
-
-static const char *get_str(yasm_preproc_gas *pp)
-{
- return pp->expr.string + pp->expr.string_cursor;
-}
-
-static void next_char(yasm_preproc_gas *pp)
-{
- pp->expr.string_cursor++;
-}
-
-static int ishex(char c)
-{
- c = tolower(c);
- return isdigit(c) || (c >= 'a' && c <= 'f');
-}
-
-static void gas_scan_init(yasm_preproc_gas *pp, struct tokenval *tokval, const char *arg1)
-{
- pp->expr.symbol = NULL;
- pp->expr.string = arg1;
- pp->expr.string_cursor = 0;
- memset(tokval, 0, sizeof(struct tokenval));
- tokval->t_type = TOKEN_INVALID;
-}
-
-static void gas_scan_cleanup(yasm_preproc_gas *pp, struct tokenval *tokval)
-{
- if (tokval->t_integer) {
- yasm_intnum_destroy(tokval->t_integer);
- tokval->t_integer = NULL;
- }
- if (pp->expr.symbol) {
- yasm_xfree(pp->expr.symbol);
- pp->expr.symbol = NULL;
- }
-}
-
-static int gas_scan(void *preproc, struct tokenval *tokval)
-{
- yasm_preproc_gas *pp = (yasm_preproc_gas *) preproc;
- char c = get_char(pp);
- const char *str;
-
- tokval->t_charptr = NULL;
-
- if (c == '\0') {
- return tokval->t_type = TOKEN_EOS;
- }
-
- if (isspace(c)) {
- do {
- next_char(pp);
- c = get_char(pp);
- } while (isspace(c));
- }
-
- if (isdigit(c)) {
- int char_index = 0;
- int value = 0;
-
- do {
- value = value*10 + (c - '0');
- char_index++;
- next_char(pp);
- c = get_char(pp);
- if (char_index == 1 && c == 'x' && value == 0) {
- next_char(pp);
- c = get_char(pp);
- /* Hex notation. */
- while (ishex(c)) {
- if (isdigit(c)) {
- value = (value << 4) | (c - '0');
- } else {
- value = (value << 4) | (tolower(c) - 'a' + 0xa);
- }
- next_char(pp);
- c = get_char(pp);
- }
- break;
- }
- } while (isdigit(c));
-
- if (tokval->t_integer) {
- yasm_intnum_destroy(tokval->t_integer);
- }
- tokval->t_integer = yasm_intnum_create_int(value);
- return tokval->t_type = TOKEN_NUM;
- }
-
- tokval->t_type = TOKEN_INVALID;
- str = get_str(pp);
-
- {
- /* It should be tested whether GAS supports all of these or if there are missing ones. */
- unsigned i;
- struct {
- const char *op;
- int token;
- } ops[] = {
- { "<<", TOKEN_SHL },
- { ">>", TOKEN_SHR },
- { "//", TOKEN_SDIV },
- { "%%", TOKEN_SMOD },
- { "==", TOKEN_EQ },
- { "!=", TOKEN_NE },
- { "<>", TOKEN_NE },
- { "<>", TOKEN_NE },
- { "<=", TOKEN_LE },
- { ">=", TOKEN_GE },
- { "&&", TOKEN_DBL_AND },
- { "^^", TOKEN_DBL_XOR },
- { "||", TOKEN_DBL_OR }
- };
- for (i = 0; i < sizeof(ops)/sizeof(ops[0]); i++) {
- if (!strcmp(str, ops[i].op)) {
- tokval->t_type = ops[i].token;
- break;
- }
- }
- }
-
- if (tokval->t_type != TOKEN_INVALID) {
- next_char(pp);
- next_char(pp);
- } else {
- str = get_str(pp);
-
- next_char(pp);
- tokval->t_type = c;
-
- /* Is it a symbol? If so we need to make it a TOKEN_ID. */
- if (isalpha(c) || c == '_' || c == '.') {
- int symbol_length = 1;
-
- c = get_char(pp);
- while (isalnum(c) || c == '$' || c == '_') {
- symbol_length++;
- next_char(pp);
- c = get_char(pp);
- }
-
- pp->expr.symbol = yasm_xrealloc(pp->expr.symbol, symbol_length + 1);
- memcpy(pp->expr.symbol, str, symbol_length);
- pp->expr.symbol[symbol_length] = '\0';
-
- tokval->t_type = TOKEN_ID;
- tokval->t_charptr = pp->expr.symbol;
- }
- }
-
- return tokval->t_type;
-}
-
-static void gas_err(void *private_data, int severity, const char *fmt, ...)
-{
- va_list args;
- yasm_preproc_gas *pp = private_data;
-
- if (!pp->detect_errors_only) {
- va_start(args, fmt);
- yasm_error_set_va(YASM_ERROR_SYNTAX, N_(fmt), args);
- yasm_errwarn_propagate(pp->errwarns, pp->current_line_number);
- va_end(args);
- }
-
- pp->fatal_error = 1;
-}
-
-static long eval_expr(yasm_preproc_gas *pp, const char *arg1)
-{
- struct tokenval tv;
- yasm_expr *expr;
- yasm_intnum *intn;
- long value;
- expr_state prev_state;
-
- if (!*arg1) {
- return 0;
- }
-
- prev_state = pp->expr;
- gas_scan_init(pp, &tv, arg1);
- expr = evaluate(gas_scan, pp, &tv, pp, CRITICAL, gas_err, pp->defines);
- intn = yasm_expr_get_intnum(&expr, 0);
- value = yasm_intnum_get_int(intn);
- yasm_expr_destroy(expr);
- gas_scan_cleanup(pp, &tv);
- pp->expr = prev_state;
-
- return value;
-}
-
-/* If-directive helpers. */
-
-static int handle_if(yasm_preproc_gas *pp, int is_true)
-{
- assert(pp->depth >= 0);
- assert(pp->skip_depth == 0);
- if (is_true) {
- pp->depth++;
- } else {
- pp->skip_depth = 1;
- }
- return 1;
-}
-
-static int handle_endif(yasm_preproc_gas *pp)
-{
- if (pp->depth) {
- pp->depth--;
- } else {
- yasm_error_set(YASM_ERROR_SYNTAX, N_("\".endif\" without \".if\""));
- yasm_errwarn_propagate(pp->errwarns, pp->current_line_number);
- return 0;
- }
- return 1;
-}
-
-static int handle_else(yasm_preproc_gas *pp, int is_elseif)
-{
- if (!pp->depth) {
- yasm_error_set(YASM_ERROR_SYNTAX, N_("\".%s\" without \".if\""), is_elseif ? "elseif" : "else");
- yasm_errwarn_propagate(pp->errwarns, pp->current_line_number);
- return 0;
- } else {
- pp->skip_depth = 1;
- }
- return 1;
-}
-
-/* Directive-handling functions. */
-
-static int eval_if(yasm_preproc_gas *pp, int negate, const char *arg1)
-{
- long value;
- if (!*arg1) {
- yasm_error_set(YASM_ERROR_SYNTAX, N_("expression is required in \".if\" statement"));
- yasm_errwarn_propagate(pp->errwarns, pp->current_line_number);
- return 0;
- }
- value = eval_expr(pp, arg1);
- handle_if(pp, (negate ? !value : !!value));
- return 1;
-}
-
-static int eval_else(yasm_preproc_gas *pp, int unused)
-{
- return handle_else(pp, 0);
-}
-
-static int eval_endif(yasm_preproc_gas *pp, int unused)
-{
- return handle_endif(pp);
-}
-
-static int eval_elseif(yasm_preproc_gas *pp, int unused, const char *arg1)
-{
- if (!*arg1) {
- yasm_error_set(YASM_ERROR_SYNTAX, N_("expression is required in \".elseif\" statement"));
- yasm_errwarn_propagate(pp->errwarns, pp->current_line_number);
- return 0;
- }
- if (!handle_else(pp, 1)) {
- return 0;
- }
- return eval_if(pp, 0, arg1);
-}
-
-static int eval_ifb(yasm_preproc_gas *pp, int negate, const char *arg1)
-{
- int is_blank = !*arg1;
- return handle_if(pp, (negate ? !is_blank : is_blank));
-}
-
-static int eval_ifc(yasm_preproc_gas *pp, int negate, const char *args)
-{
- char arg1[512], arg2[512];
- const char *remainder;
- int len = unquote(args, arg1, sizeof(arg1), '\'', ',', &remainder);
- if (len >= 0) {
- len = unquote(remainder, arg2, sizeof(arg2), '\'', '\0', NULL);
- if (len >= 0) {
- int result = !strcmp(arg1, arg2);
- return handle_if(pp, (negate ? !result : result));
- }
- } else {
- /* first argument was not single-quoted, assume non-quoted mode */
- remainder = get_arg(pp, args, arg1, sizeof(arg1));
- if (remainder) {
- int result = !strcmp(arg1, remainder);
- return handle_if(pp, (negate ? !result : result));
- }
- }
- yasm_error_set(YASM_ERROR_SYNTAX, N_("\"%s\" expects two single-quoted or unquoted arguments"), negate ? ".ifnc" : ".ifc");
- yasm_errwarn_propagate(pp->errwarns, pp->current_line_number);
- return 0;
-}
-
-static int eval_ifeqs(yasm_preproc_gas *pp, int negate, const char *args)
-{
- char arg1[512], arg2[512];
- const char *remainder;
- int len = unquote(args, arg1, sizeof(arg1), '"', ',', &remainder);
- if (len >= 0) {
- len = unquote(remainder, arg2, sizeof(arg2), '"', '\0', NULL);
- if (len >= 0) {
- int result = !strcmp(arg1, arg2);
- return handle_if(pp, (negate ? !result : result));
- }
- }
- yasm_error_set(YASM_ERROR_SYNTAX, N_("\"%s\" expects two double-quoted arguments"), negate ? ".ifnes" : ".ifeqs");
- yasm_errwarn_propagate(pp->errwarns, pp->current_line_number);
- return 1;
-}
-
-static int eval_ifdef(yasm_preproc_gas *pp, int negate, const char *name)
-{
- yasm_symrec *rec = yasm_symtab_get(pp->defines, name);
- int result = (rec != NULL);
- return handle_if(pp, (negate ? !result : result));
-}
-
-static int eval_ifge(yasm_preproc_gas *pp, int negate, const char *arg1)
-{
- long value = eval_expr(pp, arg1);
- int result = (value >= 0);
- return handle_if(pp, (negate ? !result : result));
-}
-
-static int eval_ifgt(yasm_preproc_gas *pp, int negate, const char *arg1)
-{
- long value = eval_expr(pp, arg1);
- int result = (value > 0);
- return handle_if(pp, (negate ? !result : result));
-}
-
-static int eval_include(yasm_preproc_gas *pp, int unused, const char *arg1)
-{
- char *current_filename;
- char filename[MAXPATHLEN];
- char *line;
- int num_lines;
- FILE *file;
- buffered_line *prev_bline;
- included_file *inc_file;
-
- if (unquote(arg1, filename, sizeof(filename), '"', '\0', NULL) < 0) {
- yasm_error_set(YASM_ERROR_SYNTAX, N_("string expected"));
- yasm_errwarn_propagate(pp->errwarns, pp->current_line_number);
- return 0;
- }
-
- if (SLIST_EMPTY(&pp->included_files)) {
- current_filename = pp->in_filename;
- } else {
- current_filename = SLIST_FIRST(&pp->included_files)->filename;
- }
- file = yasm_fopen_include(filename, current_filename, "r", NULL);
- if (!file) {
- yasm_error_set(YASM_ERROR_SYNTAX, N_("unable to open included file \"%s\""), filename);
- yasm_errwarn_propagate(pp->errwarns, pp->current_line_number);
- return 0;
- }
-
- num_lines = 0;
- prev_bline = NULL;
- line = read_line_from_file(pp, file);
- while (line) {
- buffered_line *bline = yasm_xmalloc(sizeof(buffered_line));
- bline->line = line;
- bline->line_number = -1;
- if (prev_bline) {
- SLIST_INSERT_AFTER(prev_bline, bline, next);
- } else {
- SLIST_INSERT_HEAD(&pp->buffered_lines, bline, next);
- }
- prev_bline = bline;
- line = read_line_from_file(pp, file);
- num_lines++;
- }
-
- inc_file = yasm_xmalloc(sizeof(included_file));
- inc_file->filename = yasm__xstrdup(filename);
- inc_file->lines_remaining = num_lines;
- SLIST_INSERT_HEAD(&pp->included_files, inc_file, next);
- return 1;
-}
-
-static int try_eval_expr(yasm_preproc_gas *pp, const char *value, long *result)
-{
- int success;
-
- pp->detect_errors_only = 1;
- *result = eval_expr(pp, value);
- success = !pp->fatal_error;
- pp->fatal_error = 0;
- pp->detect_errors_only = 0;
-
- return success;
-}
-
-static int remove_define(yasm_preproc_gas *pp, const char *name, int allow_redefine)
-{
- yasm_symrec *rec = yasm_symtab_get(pp->defines, name);
- if (rec) {
- const yasm_symtab_iter *entry;
- yasm_symtab *new_defines;
-
- if (!allow_redefine) {
- yasm_error_set(YASM_ERROR_SYNTAX, N_("symbol \"%s\" is already defined"), name);
- yasm_errwarn_propagate(pp->errwarns, pp->current_line_number);
- return 0;
- }
-
- new_defines = yasm_symtab_create();
-
- for (entry = yasm_symtab_first(pp->defines); entry; entry = yasm_symtab_next(entry)) {
- yasm_symrec *entry_rec = yasm_symtab_iter_value(entry);
- const char *rec_name = yasm_symrec_get_name(entry_rec);
- if (strcmp(rec_name, name)) {
- yasm_intnum *num = yasm_intnum_create_int(eval_expr(pp, rec_name));
- yasm_expr *expr = yasm_expr_create_ident(yasm_expr_int(num), 0);
- yasm_symtab_define_equ(new_defines, rec_name, expr, 0);
- }
- }
-
- yasm_symtab_destroy(pp->defines);
- pp->defines = new_defines;
- }
- return (rec != NULL);
-}
-
-static void add_define(yasm_preproc_gas *pp, const char *name, long value, int allow_redefine, int substitute)
-{
- deferred_define *def, *prev_def, *temp_def;
- yasm_intnum *num;
- yasm_expr *expr;
-
- remove_define(pp, name, allow_redefine);
-
- /* Add the new define. */
- num = yasm_intnum_create_int(value);
- expr = yasm_expr_create_ident(yasm_expr_int(num), 0);
- yasm_symtab_define_equ(pp->defines, name, expr, 0);
-
- /* Perform substitution on any deferred defines. */
- if (substitute) {
- prev_def = NULL;
- temp_def = NULL;
- SLIST_FOREACH_SAFE(def, &pp->deferred_defines, next, temp_def) {
- if (substitute_values(pp, &def->value)) {
- /* Value was updated - check if it can be added to the symtab. */
- if (try_eval_expr(pp, def->value, &value)) {
- add_define(pp, def->name, value, FALSE, FALSE);
- if (prev_def) {
- SLIST_NEXT(prev_def, next) = SLIST_NEXT(def, next);
- } else {
- SLIST_FIRST(&pp->deferred_defines) = SLIST_NEXT(def, next);
- }
- yasm_xfree(def->name);
- yasm_xfree(def->value);
- yasm_xfree(def);
- continue;
- }
- }
- prev_def = def;
- }
- }
-}
-
-static int eval_set(yasm_preproc_gas *pp, int allow_redefine, const char *name, const char *value)
-{
- if (!pp->skip_depth) {
- long result;
-
- if (!try_eval_expr(pp, value, &result)) {
- deferred_define *def;
- remove_define(pp, name, allow_redefine);
- def = yasm_xmalloc(sizeof(deferred_define));
- def->name = yasm__xstrdup(name);
- def->value = yasm__xstrdup(value);
- substitute_values(pp, &def->value);
- SLIST_INSERT_HEAD(&pp->deferred_defines, def, next);
- } else {
- add_define(pp, name, result, allow_redefine, TRUE);
- }
- }
- return 1;
-}
-
-static int eval_macro(yasm_preproc_gas *pp, int unused, char *args)
-{
- char *end;
- char *line;
- long nesting = 1;
- macro_entry *macro = yasm_xmalloc(sizeof(macro_entry));
-
- memset(macro, 0, sizeof(macro_entry));
-
- end = args;
- while (*end && !isspace(*end)) {
- end++;
- }
- macro->name = yasm_xmalloc(end - args + 1);
- memcpy(macro->name, args, end - args);
- macro->name[end - args] = '\0';
-
- skip_whitespace2(&end);
- while (*end) {
- args = end;
- while (*end && !isspace(*end) && *end != ',') {
- end++;
- }
- macro->num_params++;
- macro->params = yasm_xrealloc(macro->params, macro->num_params*sizeof(char *));
- macro->params[macro->num_params - 1] = yasm_xmalloc(end - args + 1);
- memcpy(macro->params[macro->num_params - 1], args, end - args);
- macro->params[macro->num_params - 1][end - args] = '\0';
- skip_whitespace2(&end);
- if (*end == ',') {
- end++;
- skip_whitespace2(&end);
- }
- }
-
- STAILQ_INSERT_TAIL(&pp->macros, macro, next);
-
- line = read_line(pp);
- while (line) {
- char *line2 = line;
- skip_whitespace2(&line2);
- if (starts_with(line2, ".macro")) {
- nesting++;
- } else if (starts_with(line, ".endm") && --nesting == 0) {
- return 1;
- }
- macro->num_lines++;
- macro->lines = yasm_xrealloc(macro->lines, macro->num_lines*sizeof(char *));
- macro->lines[macro->num_lines - 1] = line;
- line = read_line(pp);
- }
-
- yasm_error_set(YASM_ERROR_SYNTAX, N_("unexpected EOF in \".macro\" block"));
- yasm_errwarn_propagate(pp->errwarns, yasm_linemap_get_current(pp->cur_lm));
- return 0;
-}
-
-static int eval_endm(yasm_preproc_gas *pp, int unused)
-{
- yasm_error_set(YASM_ERROR_SYNTAX, N_("\".endm\" without \".macro\""));
- yasm_errwarn_propagate(pp->errwarns, yasm_linemap_get_current(pp->cur_lm));
- return 0;
-}
-
-static void get_param_value(macro_entry *macro, int param_index, const char *args, const char **value, int *length)
-{
- int arg_index = 0;
- const char *default_value = NULL;
- const char *end, *eq = strstr(macro->params[param_index], "=");
-
- if (eq) {
- default_value = eq + 1;
- }
-
- skip_whitespace(&args);
- end = args;
- while (*end) {
- args = end;
- while (*end && !isspace(*end) && *end != ',') {
- end++;
- }
- if (arg_index == param_index) {
- if (end == args && default_value) {
- *value = default_value;
- *length = strlen(default_value);
- } else {
- *value = args;
- *length = end - args;
- }
- return;
- }
- arg_index++;
- skip_whitespace(&end);
- if (*end == ',') {
- end++;
- skip_whitespace(&end);
- }
- }
-
- *value = default_value;
- *length = (default_value ? strlen(default_value) : 0);
-}
-
-static void expand_macro(yasm_preproc_gas *pp, macro_entry *macro, const char *args)
-{
- int i, j;
- buffered_line *prev_bline = NULL;
-
- for (i = 0; i < macro->num_lines; i++) {
- buffered_line *bline = yasm_xmalloc(sizeof(buffered_line));
- struct tokenval tokval;
- int prev_was_backslash = FALSE;
- int line_length = strlen(macro->lines[i]);
- char *work = yasm__xstrdup(macro->lines[i]);
- expr_state prev_state = pp->expr;
-
- gas_scan_init(pp, &tokval, work);
- while (gas_scan(pp, &tokval) != TOKEN_EOS) {
- if (prev_was_backslash) {
- if (tokval.t_type == TOKEN_ID) {
- for (j = 0; j < macro->num_params; j++) {
- char *end = strstr(macro->params[j], "=");
- int len = (end ? (size_t)(end - macro->params[j])
- : strlen(macro->params[j]));
- if (!strncmp(tokval.t_charptr, macro->params[j], len)
- && tokval.t_charptr[len] == '\0') {
- /* now, find matching argument. */
- const char *value;
- char *line = work + (pp->expr.string - work);
- int cursor = pp->expr.string_cursor;
- int value_length, delta;
-
- get_param_value(macro, j, args, &value, &value_length);
-
- len++; /* leading slash */
- delta = value_length - len;
- line_length += delta;
- if (delta > 0) {
- line = yasm_xrealloc(line, line_length + 1);
- }
- memmove(line + cursor - len + value_length, line + cursor, strlen(line + cursor) + 1);
- memcpy(line + cursor - len, value, value_length);
- pp->expr.string = work = line;
- pp->expr.string_cursor += delta;
- if (pp->expr.symbol) {
- yasm_xfree(pp->expr.symbol);
- pp->expr.symbol = NULL;
- }
- }
- }
- }
- prev_was_backslash = FALSE;
- } else if (tokval.t_type == '\\') {
- prev_was_backslash = TRUE;
- }
- }
- gas_scan_cleanup(pp, &tokval);
-
- bline->line = work + (pp->expr.string - work);
- bline->line_number = -1;
- pp->expr = prev_state;
-
- if (prev_bline) {
- SLIST_INSERT_AFTER(prev_bline, bline, next);
- } else {
- SLIST_INSERT_HEAD(&pp->buffered_lines, bline, next);
- }
- prev_bline = bline;
- }
-}
-
-static int eval_rept(yasm_preproc_gas *pp, int unused, const char *arg1)
-{
- long i, n = eval_expr(pp, arg1);
- long num_lines = 0;
- long nesting = 1;
- char *line = read_line(pp);
- buffered_line *prev_bline = NULL;
- SLIST_HEAD(buffered_lines_head, buffered_line) lines;
- int rept_start_file_line_number = pp->next_line_number - 1;
- int rept_start_output_line_number = pp->current_line_number;
-
- SLIST_INIT(&lines);
-
- while (line) {
- skip_whitespace2(&line);
- if (starts_with(line, ".rept")) {
- nesting++;
- } else if (starts_with(line, ".endr") && --nesting == 0) {
- for (i = 0; i < n; i++) {
- buffered_line *current_line;
- prev_bline = NULL;
- SLIST_FOREACH(current_line, &lines, next) {
- buffered_line *bline = yasm_xmalloc(sizeof(buffered_line));
- bline->line = yasm__xstrdup(current_line->line);
- bline->line_number = current_line->line_number;
- if (prev_bline) {
- SLIST_INSERT_AFTER(prev_bline, bline, next);
- } else {
- SLIST_INSERT_HEAD(&pp->buffered_lines, bline, next);
- }
- prev_bline = bline;
- }
- }
- if (!SLIST_EMPTY(&pp->included_files)) {
- included_file *inc_file = SLIST_FIRST(&pp->included_files);
- inc_file->lines_remaining += n * num_lines;
- }
- while (!SLIST_EMPTY(&lines)) {
- buffered_line *bline = SLIST_FIRST(&lines);
- SLIST_REMOVE_HEAD(&lines, next);
- yasm_xfree(bline->line);
- yasm_xfree(bline);
- }
- yasm_xfree(line);
- return 1;
- }
- if (n > 0) {
- buffered_line *bline = yasm_xmalloc(sizeof(buffered_line));
- bline->line = line;
- bline->line_number = pp->next_line_number;
- if (prev_bline) {
- SLIST_INSERT_AFTER(prev_bline, bline, next);
- } else {
- SLIST_INSERT_HEAD(&lines, bline, next);
- }
- prev_bline = bline;
- } else {
- yasm_xfree(line);
- }
- line = read_line(pp);
- num_lines++;
- }
- yasm_linemap_set(pp->cur_lm, pp->in_filename, rept_start_output_line_number, rept_start_file_line_number, 0);
- yasm_error_set(YASM_ERROR_SYNTAX, N_("rept without matching endr"));
- yasm_errwarn_propagate(pp->errwarns, rept_start_output_line_number);
- return 0;
-}
-
-static int eval_endr(yasm_preproc_gas *pp, int unused)
-{
- yasm_error_set(YASM_ERROR_SYNTAX, N_("\".endr\" without \".rept\""));
- yasm_errwarn_propagate(pp->errwarns, pp->current_line_number);
- return 0;
-}
-
-/* Top-level line processing. */
-
-typedef int (*pp_fn0_t)(yasm_preproc_gas *pp, int param);
-typedef int (*pp_fn1_t)(yasm_preproc_gas *pp, int param, const char *arg1);
-typedef int (*pp_fn2_t)(yasm_preproc_gas *pp, int param, const char *arg1, const char *arg2);
-
-#define FN(f) ((pp_fn0_t) &(f))
-
-static void kill_comments(yasm_preproc_gas *pp, char *line)
-{
- int next = 2;
- char *cstart;
-
- skip_whitespace2(&line);
- if (*line == '#' || !strncmp(line, "//", 2)) {
- *line = '\0';
- return;
- }
-
- if (pp->in_comment) {
- cstart = line;
- next = 0;
- } else {
- cstart = strstr(line, "/*");
- next = 2;
- }
-
- while (cstart) {
- char *cend = strstr(cstart + next, "*/");
-
- if (!cend) {
- *cstart = '\0';
- pp->in_comment = TRUE;
- return;
- }
-
- memmove(cstart, cend + 2, strlen(cend + 2) + 1);
- pp->in_comment = FALSE;
- cstart = strstr(cstart, "/*");
- next = 2;
- }
-}
-
-static int substitute_values(yasm_preproc_gas *pp, char **line_ptr)
-{
- int changed = 0;
- char *line = *line_ptr;
- int line_length = strlen(line);
- struct tokenval tokval;
- expr_state prev_state = pp->expr;
-
- gas_scan_init(pp, &tokval, line);
- while (gas_scan(pp, &tokval) != TOKEN_EOS) {
- if (tokval.t_type == TOKEN_ID) {
- yasm_symrec *rec = yasm_symtab_get(pp->defines, tokval.t_charptr);
- if (rec) {
- int cursor = pp->expr.string_cursor;
- int len = strlen(tokval.t_charptr);
- char value[64];
- int value_length = sprintf(value, "%ld", eval_expr(pp, tokval.t_charptr));
- int delta = value_length - len;
-
- line_length += delta;
- if (delta > 0) {
- line = yasm_xrealloc(line, line_length + 1);
- }
- memmove(line + cursor - len + value_length, line + cursor, strlen(line + cursor) + 1);
- memcpy(line + cursor - len, value, value_length);
- pp->expr.string = line;
- pp->expr.string_cursor = cursor + delta;
- changed = 1;
- }
- yasm_xfree(pp->expr.symbol);
- pp->expr.symbol = NULL;
- }
- }
- gas_scan_cleanup(pp, &tokval);
- pp->expr = prev_state;
-
- if (changed) {
- *line_ptr = line;
- }
-
- return changed;
-}
-
-static int process_line(yasm_preproc_gas *pp, char **line_ptr)
-{
- macro_entry *macro;
- size_t i;
- char *line = *line_ptr;
- struct {
- const char *name;
- int nargs;
- pp_fn0_t fn;
- int param;
- } directives[] = {
- {"else", 0, FN(eval_else), 0},
- {"elseif", 1, FN(eval_elseif), 0},
- {"endif", 0, FN(eval_endif), 0},
- {"if", 1, FN(eval_if), 0},
- {"ifb", 1, FN(eval_ifb), 0},
- {"ifc", 1, FN(eval_ifc), 0},
- {"ifdef", 1, FN(eval_ifdef), 0},
- {"ifeq", 1, FN(eval_if), 1},
- {"ifeqs", 1, FN(eval_ifeqs), 0},
- {"ifge", 1, FN(eval_ifge), 0},
- {"ifgt", 1, FN(eval_ifgt), 0},
- {"ifle", 1, FN(eval_ifgt), 1},
- {"iflt", 1, FN(eval_ifge), 1},
- {"ifnb", 1, FN(eval_ifb), 1},
- {"ifnc", 1, FN(eval_ifc), 1},
- {"ifndef", 1, FN(eval_ifdef), 1},
- {"ifnotdef", 1, FN(eval_ifdef), 1},
- {"ifne", 1, FN(eval_if), 0},
- {"ifnes", 1, FN(eval_ifeqs), 1},
- {"include", 1, FN(eval_include), 0},
- {"set", 2, FN(eval_set), 1},
- {"equ", 2, FN(eval_set), 1},
- {"equiv", 2, FN(eval_set), 0},
- {"macro", 1, FN(eval_macro), 0},
- {"endm", 0, FN(eval_endm), 0},
- {"rept", 1, FN(eval_rept), 0},
- {"endr", 1, FN(eval_endr), 0},
- };
-
- kill_comments(pp, line);
- skip_whitespace2(&line);
- if (*line == '\0') {
- return FALSE;
- }
-
- /* See if this is a macro call. */
- STAILQ_FOREACH(macro, &pp->macros, next) {
- const char *remainder = starts_with(line, macro->name);
- if (remainder && (!*remainder || isspace(*remainder))) {
- skip_whitespace2(&line);
- expand_macro(pp, macro, remainder);
- return FALSE;
- }
- }
-
- for (i = 0; i < sizeof(directives)/sizeof(directives[0]); i++) {
- char buf1[1024];
- const char *remainder = matches(line, directives[i].name);
-
- if (remainder) {
- if (pp->skip_depth) {
- if (!strncmp("if", directives[i].name, 2)) {
- pp->skip_depth++;
- } else if (!strcmp("endif", directives[i].name)) {
- pp->skip_depth--;
- } else if (!strcmp("else", directives[i].name)) {
- if (pp->skip_depth == 1) {
- pp->skip_depth = 0;
- pp->depth++;
- }
- }
- return FALSE;
- } else if (directives[i].nargs == 0) {
- pp_fn0_t fn = (pp_fn0_t) directives[i].fn;
- pp->fatal_error = !fn(pp, directives[i].param);
- return FALSE;
- } else if (directives[i].nargs == 1) {
- pp_fn1_t fn = (pp_fn1_t) directives[i].fn;
- skip_whitespace(&remainder);
- pp->fatal_error = !fn(pp, directives[i].param, remainder);
- return FALSE;
- } else if (directives[i].nargs == 2) {
- remainder = get_arg(pp, remainder, buf1, sizeof(buf1));
- if (!remainder || !*remainder || !*buf1) {
- yasm_error_set(YASM_ERROR_SYNTAX, N_("\".%s\" expects two arguments"), directives[i].name);
- yasm_errwarn_propagate(pp->errwarns, pp->current_line_number);
- pp->fatal_error = 1;
- } else {
- pp_fn2_t fn = (pp_fn2_t) directives[i].fn;
- pp->fatal_error = !fn(pp, directives[i].param, buf1, remainder);
- }
- return FALSE;
- }
- }
- }
-
- if (pp->skip_depth == 0) {
- substitute_values(pp, line_ptr);
- return TRUE;
- }
-
- return FALSE;
-}
-
-/* Functions exported by the preprocessor. */
-
-static yasm_preproc *
-gas_preproc_create(const char *in_filename, yasm_symtab *symtab,
- yasm_linemap *lm, yasm_errwarns *errwarns)
-{
- FILE *f;
- yasm_preproc_gas *pp = yasm_xmalloc(sizeof(yasm_preproc_gas));
-
- if (strcmp(in_filename, "-") != 0) {
- f = fopen(in_filename, "r");
- if (!f) {
+ }
+
+ yasm_symtab_destroy(pp->defines);
+ pp->defines = new_defines;
+ }
+ return (rec != NULL);
+}
+
+static void add_define(yasm_preproc_gas *pp, const char *name, long value, int allow_redefine, int substitute)
+{
+ deferred_define *def, *prev_def, *temp_def;
+ yasm_intnum *num;
+ yasm_expr *expr;
+
+ remove_define(pp, name, allow_redefine);
+
+ /* Add the new define. */
+ num = yasm_intnum_create_int(value);
+ expr = yasm_expr_create_ident(yasm_expr_int(num), 0);
+ yasm_symtab_define_equ(pp->defines, name, expr, 0);
+
+ /* Perform substitution on any deferred defines. */
+ if (substitute) {
+ prev_def = NULL;
+ temp_def = NULL;
+ SLIST_FOREACH_SAFE(def, &pp->deferred_defines, next, temp_def) {
+ if (substitute_values(pp, &def->value)) {
+ /* Value was updated - check if it can be added to the symtab. */
+ if (try_eval_expr(pp, def->value, &value)) {
+ add_define(pp, def->name, value, FALSE, FALSE);
+ if (prev_def) {
+ SLIST_NEXT(prev_def, next) = SLIST_NEXT(def, next);
+ } else {
+ SLIST_FIRST(&pp->deferred_defines) = SLIST_NEXT(def, next);
+ }
+ yasm_xfree(def->name);
+ yasm_xfree(def->value);
+ yasm_xfree(def);
+ continue;
+ }
+ }
+ prev_def = def;
+ }
+ }
+}
+
+static int eval_set(yasm_preproc_gas *pp, int allow_redefine, const char *name, const char *value)
+{
+ if (!pp->skip_depth) {
+ long result;
+
+ if (!try_eval_expr(pp, value, &result)) {
+ deferred_define *def;
+ remove_define(pp, name, allow_redefine);
+ def = yasm_xmalloc(sizeof(deferred_define));
+ def->name = yasm__xstrdup(name);
+ def->value = yasm__xstrdup(value);
+ substitute_values(pp, &def->value);
+ SLIST_INSERT_HEAD(&pp->deferred_defines, def, next);
+ } else {
+ add_define(pp, name, result, allow_redefine, TRUE);
+ }
+ }
+ return 1;
+}
+
+static int eval_macro(yasm_preproc_gas *pp, int unused, char *args)
+{
+ char *end;
+ char *line;
+ long nesting = 1;
+ macro_entry *macro = yasm_xmalloc(sizeof(macro_entry));
+
+ memset(macro, 0, sizeof(macro_entry));
+
+ end = args;
+ while (*end && !isspace(*end)) {
+ end++;
+ }
+ macro->name = yasm_xmalloc(end - args + 1);
+ memcpy(macro->name, args, end - args);
+ macro->name[end - args] = '\0';
+
+ skip_whitespace2(&end);
+ while (*end) {
+ args = end;
+ while (*end && !isspace(*end) && *end != ',') {
+ end++;
+ }
+ macro->num_params++;
+ macro->params = yasm_xrealloc(macro->params, macro->num_params*sizeof(char *));
+ macro->params[macro->num_params - 1] = yasm_xmalloc(end - args + 1);
+ memcpy(macro->params[macro->num_params - 1], args, end - args);
+ macro->params[macro->num_params - 1][end - args] = '\0';
+ skip_whitespace2(&end);
+ if (*end == ',') {
+ end++;
+ skip_whitespace2(&end);
+ }
+ }
+
+ STAILQ_INSERT_TAIL(&pp->macros, macro, next);
+
+ line = read_line(pp);
+ while (line) {
+ char *line2 = line;
+ skip_whitespace2(&line2);
+ if (starts_with(line2, ".macro")) {
+ nesting++;
+ } else if (starts_with(line, ".endm") && --nesting == 0) {
+ return 1;
+ }
+ macro->num_lines++;
+ macro->lines = yasm_xrealloc(macro->lines, macro->num_lines*sizeof(char *));
+ macro->lines[macro->num_lines - 1] = line;
+ line = read_line(pp);
+ }
+
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("unexpected EOF in \".macro\" block"));
+ yasm_errwarn_propagate(pp->errwarns, yasm_linemap_get_current(pp->cur_lm));
+ return 0;
+}
+
+static int eval_endm(yasm_preproc_gas *pp, int unused)
+{
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("\".endm\" without \".macro\""));
+ yasm_errwarn_propagate(pp->errwarns, yasm_linemap_get_current(pp->cur_lm));
+ return 0;
+}
+
+static void get_param_value(macro_entry *macro, int param_index, const char *args, const char **value, int *length)
+{
+ int arg_index = 0;
+ const char *default_value = NULL;
+ const char *end, *eq = strstr(macro->params[param_index], "=");
+
+ if (eq) {
+ default_value = eq + 1;
+ }
+
+ skip_whitespace(&args);
+ end = args;
+ while (*end) {
+ args = end;
+ while (*end && !isspace(*end) && *end != ',') {
+ end++;
+ }
+ if (arg_index == param_index) {
+ if (end == args && default_value) {
+ *value = default_value;
+ *length = strlen(default_value);
+ } else {
+ *value = args;
+ *length = end - args;
+ }
+ return;
+ }
+ arg_index++;
+ skip_whitespace(&end);
+ if (*end == ',') {
+ end++;
+ skip_whitespace(&end);
+ }
+ }
+
+ *value = default_value;
+ *length = (default_value ? strlen(default_value) : 0);
+}
+
+static void expand_macro(yasm_preproc_gas *pp, macro_entry *macro, const char *args)
+{
+ int i, j;
+ buffered_line *prev_bline = NULL;
+
+ for (i = 0; i < macro->num_lines; i++) {
+ buffered_line *bline = yasm_xmalloc(sizeof(buffered_line));
+ struct tokenval tokval;
+ int prev_was_backslash = FALSE;
+ int line_length = strlen(macro->lines[i]);
+ char *work = yasm__xstrdup(macro->lines[i]);
+ expr_state prev_state = pp->expr;
+
+ gas_scan_init(pp, &tokval, work);
+ while (gas_scan(pp, &tokval) != TOKEN_EOS) {
+ if (prev_was_backslash) {
+ if (tokval.t_type == TOKEN_ID) {
+ for (j = 0; j < macro->num_params; j++) {
+ char *end = strstr(macro->params[j], "=");
+ int len = (end ? (size_t)(end - macro->params[j])
+ : strlen(macro->params[j]));
+ if (!strncmp(tokval.t_charptr, macro->params[j], len)
+ && tokval.t_charptr[len] == '\0') {
+ /* now, find matching argument. */
+ const char *value;
+ char *line = work + (pp->expr.string - work);
+ int cursor = pp->expr.string_cursor;
+ int value_length, delta;
+
+ get_param_value(macro, j, args, &value, &value_length);
+
+ len++; /* leading slash */
+ delta = value_length - len;
+ line_length += delta;
+ if (delta > 0) {
+ line = yasm_xrealloc(line, line_length + 1);
+ }
+ memmove(line + cursor - len + value_length, line + cursor, strlen(line + cursor) + 1);
+ memcpy(line + cursor - len, value, value_length);
+ pp->expr.string = work = line;
+ pp->expr.string_cursor += delta;
+ if (pp->expr.symbol) {
+ yasm_xfree(pp->expr.symbol);
+ pp->expr.symbol = NULL;
+ }
+ }
+ }
+ }
+ prev_was_backslash = FALSE;
+ } else if (tokval.t_type == '\\') {
+ prev_was_backslash = TRUE;
+ }
+ }
+ gas_scan_cleanup(pp, &tokval);
+
+ bline->line = work + (pp->expr.string - work);
+ bline->line_number = -1;
+ pp->expr = prev_state;
+
+ if (prev_bline) {
+ SLIST_INSERT_AFTER(prev_bline, bline, next);
+ } else {
+ SLIST_INSERT_HEAD(&pp->buffered_lines, bline, next);
+ }
+ prev_bline = bline;
+ }
+}
+
+static int eval_rept(yasm_preproc_gas *pp, int unused, const char *arg1)
+{
+ long i, n = eval_expr(pp, arg1);
+ long num_lines = 0;
+ long nesting = 1;
+ char *line = read_line(pp);
+ buffered_line *prev_bline = NULL;
+ SLIST_HEAD(buffered_lines_head, buffered_line) lines;
+ int rept_start_file_line_number = pp->next_line_number - 1;
+ int rept_start_output_line_number = pp->current_line_number;
+
+ SLIST_INIT(&lines);
+
+ while (line) {
+ skip_whitespace2(&line);
+ if (starts_with(line, ".rept")) {
+ nesting++;
+ } else if (starts_with(line, ".endr") && --nesting == 0) {
+ for (i = 0; i < n; i++) {
+ buffered_line *current_line;
+ prev_bline = NULL;
+ SLIST_FOREACH(current_line, &lines, next) {
+ buffered_line *bline = yasm_xmalloc(sizeof(buffered_line));
+ bline->line = yasm__xstrdup(current_line->line);
+ bline->line_number = current_line->line_number;
+ if (prev_bline) {
+ SLIST_INSERT_AFTER(prev_bline, bline, next);
+ } else {
+ SLIST_INSERT_HEAD(&pp->buffered_lines, bline, next);
+ }
+ prev_bline = bline;
+ }
+ }
+ if (!SLIST_EMPTY(&pp->included_files)) {
+ included_file *inc_file = SLIST_FIRST(&pp->included_files);
+ inc_file->lines_remaining += n * num_lines;
+ }
+ while (!SLIST_EMPTY(&lines)) {
+ buffered_line *bline = SLIST_FIRST(&lines);
+ SLIST_REMOVE_HEAD(&lines, next);
+ yasm_xfree(bline->line);
+ yasm_xfree(bline);
+ }
+ yasm_xfree(line);
+ return 1;
+ }
+ if (n > 0) {
+ buffered_line *bline = yasm_xmalloc(sizeof(buffered_line));
+ bline->line = line;
+ bline->line_number = pp->next_line_number;
+ if (prev_bline) {
+ SLIST_INSERT_AFTER(prev_bline, bline, next);
+ } else {
+ SLIST_INSERT_HEAD(&lines, bline, next);
+ }
+ prev_bline = bline;
+ } else {
+ yasm_xfree(line);
+ }
+ line = read_line(pp);
+ num_lines++;
+ }
+ yasm_linemap_set(pp->cur_lm, pp->in_filename, rept_start_output_line_number, rept_start_file_line_number, 0);
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("rept without matching endr"));
+ yasm_errwarn_propagate(pp->errwarns, rept_start_output_line_number);
+ return 0;
+}
+
+static int eval_endr(yasm_preproc_gas *pp, int unused)
+{
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("\".endr\" without \".rept\""));
+ yasm_errwarn_propagate(pp->errwarns, pp->current_line_number);
+ return 0;
+}
+
+/* Top-level line processing. */
+
+typedef int (*pp_fn0_t)(yasm_preproc_gas *pp, int param);
+typedef int (*pp_fn1_t)(yasm_preproc_gas *pp, int param, const char *arg1);
+typedef int (*pp_fn2_t)(yasm_preproc_gas *pp, int param, const char *arg1, const char *arg2);
+
+#define FN(f) ((pp_fn0_t) &(f))
+
+static void kill_comments(yasm_preproc_gas *pp, char *line)
+{
+ int next = 2;
+ char *cstart;
+
+ skip_whitespace2(&line);
+ if (*line == '#' || !strncmp(line, "//", 2)) {
+ *line = '\0';
+ return;
+ }
+
+ if (pp->in_comment) {
+ cstart = line;
+ next = 0;
+ } else {
+ cstart = strstr(line, "/*");
+ next = 2;
+ }
+
+ while (cstart) {
+ char *cend = strstr(cstart + next, "*/");
+
+ if (!cend) {
+ *cstart = '\0';
+ pp->in_comment = TRUE;
+ return;
+ }
+
+ memmove(cstart, cend + 2, strlen(cend + 2) + 1);
+ pp->in_comment = FALSE;
+ cstart = strstr(cstart, "/*");
+ next = 2;
+ }
+}
+
+static int substitute_values(yasm_preproc_gas *pp, char **line_ptr)
+{
+ int changed = 0;
+ char *line = *line_ptr;
+ int line_length = strlen(line);
+ struct tokenval tokval;
+ expr_state prev_state = pp->expr;
+
+ gas_scan_init(pp, &tokval, line);
+ while (gas_scan(pp, &tokval) != TOKEN_EOS) {
+ if (tokval.t_type == TOKEN_ID) {
+ yasm_symrec *rec = yasm_symtab_get(pp->defines, tokval.t_charptr);
+ if (rec) {
+ int cursor = pp->expr.string_cursor;
+ int len = strlen(tokval.t_charptr);
+ char value[64];
+ int value_length = sprintf(value, "%ld", eval_expr(pp, tokval.t_charptr));
+ int delta = value_length - len;
+
+ line_length += delta;
+ if (delta > 0) {
+ line = yasm_xrealloc(line, line_length + 1);
+ }
+ memmove(line + cursor - len + value_length, line + cursor, strlen(line + cursor) + 1);
+ memcpy(line + cursor - len, value, value_length);
+ pp->expr.string = line;
+ pp->expr.string_cursor = cursor + delta;
+ changed = 1;
+ }
+ yasm_xfree(pp->expr.symbol);
+ pp->expr.symbol = NULL;
+ }
+ }
+ gas_scan_cleanup(pp, &tokval);
+ pp->expr = prev_state;
+
+ if (changed) {
+ *line_ptr = line;
+ }
+
+ return changed;
+}
+
+static int process_line(yasm_preproc_gas *pp, char **line_ptr)
+{
+ macro_entry *macro;
+ size_t i;
+ char *line = *line_ptr;
+ struct {
+ const char *name;
+ int nargs;
+ pp_fn0_t fn;
+ int param;
+ } directives[] = {
+ {"else", 0, FN(eval_else), 0},
+ {"elseif", 1, FN(eval_elseif), 0},
+ {"endif", 0, FN(eval_endif), 0},
+ {"if", 1, FN(eval_if), 0},
+ {"ifb", 1, FN(eval_ifb), 0},
+ {"ifc", 1, FN(eval_ifc), 0},
+ {"ifdef", 1, FN(eval_ifdef), 0},
+ {"ifeq", 1, FN(eval_if), 1},
+ {"ifeqs", 1, FN(eval_ifeqs), 0},
+ {"ifge", 1, FN(eval_ifge), 0},
+ {"ifgt", 1, FN(eval_ifgt), 0},
+ {"ifle", 1, FN(eval_ifgt), 1},
+ {"iflt", 1, FN(eval_ifge), 1},
+ {"ifnb", 1, FN(eval_ifb), 1},
+ {"ifnc", 1, FN(eval_ifc), 1},
+ {"ifndef", 1, FN(eval_ifdef), 1},
+ {"ifnotdef", 1, FN(eval_ifdef), 1},
+ {"ifne", 1, FN(eval_if), 0},
+ {"ifnes", 1, FN(eval_ifeqs), 1},
+ {"include", 1, FN(eval_include), 0},
+ {"set", 2, FN(eval_set), 1},
+ {"equ", 2, FN(eval_set), 1},
+ {"equiv", 2, FN(eval_set), 0},
+ {"macro", 1, FN(eval_macro), 0},
+ {"endm", 0, FN(eval_endm), 0},
+ {"rept", 1, FN(eval_rept), 0},
+ {"endr", 1, FN(eval_endr), 0},
+ };
+
+ kill_comments(pp, line);
+ skip_whitespace2(&line);
+ if (*line == '\0') {
+ return FALSE;
+ }
+
+ /* See if this is a macro call. */
+ STAILQ_FOREACH(macro, &pp->macros, next) {
+ const char *remainder = starts_with(line, macro->name);
+ if (remainder && (!*remainder || isspace(*remainder))) {
+ skip_whitespace2(&line);
+ expand_macro(pp, macro, remainder);
+ return FALSE;
+ }
+ }
+
+ for (i = 0; i < sizeof(directives)/sizeof(directives[0]); i++) {
+ char buf1[1024];
+ const char *remainder = matches(line, directives[i].name);
+
+ if (remainder) {
+ if (pp->skip_depth) {
+ if (!strncmp("if", directives[i].name, 2)) {
+ pp->skip_depth++;
+ } else if (!strcmp("endif", directives[i].name)) {
+ pp->skip_depth--;
+ } else if (!strcmp("else", directives[i].name)) {
+ if (pp->skip_depth == 1) {
+ pp->skip_depth = 0;
+ pp->depth++;
+ }
+ }
+ return FALSE;
+ } else if (directives[i].nargs == 0) {
+ pp_fn0_t fn = (pp_fn0_t) directives[i].fn;
+ pp->fatal_error = !fn(pp, directives[i].param);
+ return FALSE;
+ } else if (directives[i].nargs == 1) {
+ pp_fn1_t fn = (pp_fn1_t) directives[i].fn;
+ skip_whitespace(&remainder);
+ pp->fatal_error = !fn(pp, directives[i].param, remainder);
+ return FALSE;
+ } else if (directives[i].nargs == 2) {
+ remainder = get_arg(pp, remainder, buf1, sizeof(buf1));
+ if (!remainder || !*remainder || !*buf1) {
+ yasm_error_set(YASM_ERROR_SYNTAX, N_("\".%s\" expects two arguments"), directives[i].name);
+ yasm_errwarn_propagate(pp->errwarns, pp->current_line_number);
+ pp->fatal_error = 1;
+ } else {
+ pp_fn2_t fn = (pp_fn2_t) directives[i].fn;
+ pp->fatal_error = !fn(pp, directives[i].param, buf1, remainder);
+ }
+ return FALSE;
+ }
+ }
+ }
+
+ if (pp->skip_depth == 0) {
+ substitute_values(pp, line_ptr);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+/* Functions exported by the preprocessor. */
+
+static yasm_preproc *
+gas_preproc_create(const char *in_filename, yasm_symtab *symtab,
+ yasm_linemap *lm, yasm_errwarns *errwarns)
+{
+ FILE *f;
+ yasm_preproc_gas *pp = yasm_xmalloc(sizeof(yasm_preproc_gas));
+
+ if (strcmp(in_filename, "-") != 0) {
+ f = fopen(in_filename, "r");
+ if (!f) {
yasm__fatal_missing_input_file(N_("Could not open input file"), in_filename);
- }
- } else {
- f = stdin;
- }
-
- pp->preproc.module = &yasm_gas_LTX_preproc;
- pp->in = f;
- pp->in_filename = yasm__xstrdup(in_filename);
- pp->defines = yasm_symtab_create();
- SLIST_INIT(&pp->deferred_defines);
- yasm_symtab_set_case_sensitive(pp->defines, 1);
- pp->depth = 0;
- pp->skip_depth = 0;
- pp->in_comment = FALSE;
- SLIST_INIT(&pp->buffered_lines);
- SLIST_INIT(&pp->included_files);
- STAILQ_INIT(&pp->macros);
- pp->in_line_number = 0;
- pp->next_line_number = 0;
- pp->current_line_number = 0;
- pp->cur_lm = lm;
- pp->errwarns = errwarns;
- pp->fatal_error = 0;
- pp->detect_errors_only = 0;
-
- return (yasm_preproc *) pp;
-}
-
-static void
-gas_preproc_destroy(yasm_preproc *preproc)
-{
- yasm_preproc_gas *pp = (yasm_preproc_gas *) preproc;
- yasm_xfree(pp->in_filename);
- yasm_symtab_destroy(pp->defines);
- while (!SLIST_EMPTY(&pp->deferred_defines)) {
- deferred_define *def = SLIST_FIRST(&pp->deferred_defines);
- SLIST_REMOVE_HEAD(&pp->deferred_defines, next);
- yasm_xfree(def->name);
- yasm_xfree(def->value);
- yasm_xfree(def);
- }
- while (!SLIST_EMPTY(&pp->buffered_lines)) {
- buffered_line *bline = SLIST_FIRST(&pp->buffered_lines);
- SLIST_REMOVE_HEAD(&pp->buffered_lines, next);
- yasm_xfree(bline->line);
- yasm_xfree(bline);
- }
- while (!SLIST_EMPTY(&pp->included_files)) {
- included_file *inc_file = SLIST_FIRST(&pp->included_files);
- SLIST_REMOVE_HEAD(&pp->included_files, next);
- yasm_xfree(inc_file->filename);
- yasm_xfree(inc_file);
- }
- while (!STAILQ_EMPTY(&pp->macros)) {
- int i;
- macro_entry *macro = STAILQ_FIRST(&pp->macros);
- STAILQ_REMOVE_HEAD(&pp->macros, next);
- yasm_xfree(macro->name);
- for (i = 0; i < macro->num_params; i++)
- yasm_xfree(macro->params[i]);
- yasm_xfree(macro->params);
- for (i = 0; i < macro->num_lines; i++)
- yasm_xfree(macro->lines[i]);
- yasm_xfree(macro->lines);
- yasm_xfree(macro);
- }
- yasm_xfree(preproc);
-}
-
-static char *
-gas_preproc_get_line(yasm_preproc *preproc)
-{
- yasm_preproc_gas *pp = (yasm_preproc_gas *)preproc;
- int done = FALSE;
- char *line = NULL;
-
- pp->current_line_number++;
-
- do {
- if (line != NULL) {
- yasm_xfree(line);
- }
- if (pp->fatal_error) {
- return NULL;
- }
- line = read_line(pp);
- if (line == NULL) {
- if (pp->in_comment) {
- yasm_linemap_set(pp->cur_lm, pp->in_filename, pp->current_line_number, pp->next_line_number, 0);
- yasm_warn_set(YASM_WARN_GENERAL, N_("end of file in comment"));
- yasm_errwarn_propagate(pp->errwarns, pp->current_line_number);
- pp->in_comment = FALSE;
- }
- return NULL;
- }
- done = process_line(pp, &line);
- } while (!done);
-
- yasm_linemap_set(pp->cur_lm, pp->in_filename, pp->current_line_number, pp->next_line_number, 0);
-
- return line;
-}
-
-static size_t
-gas_preproc_get_included_file(yasm_preproc *preproc, char *buf,
- size_t max_size)
-{
- /* TODO */
- return 0;
-}
-
-static void
-gas_preproc_add_include_file(yasm_preproc *preproc, const char *filename)
-{
- yasm_preproc_gas *pp = (yasm_preproc_gas *) preproc;
- eval_include(pp, 0, filename);
-}
-
-static void
-gas_preproc_predefine_macro(yasm_preproc *preproc, const char *macronameval)
-{
- yasm_preproc_gas *pp = (yasm_preproc_gas *) preproc;
- const char *eq = strstr(macronameval, "=");
- char *name, *value;
- if (eq) {
- value = yasm__xstrdup(eq + 1);
- name = yasm_xmalloc(eq - macronameval + 1);
- memcpy(name, macronameval, eq - macronameval);
- name[eq - macronameval] = '\0';
- } else {
- name = yasm__xstrdup(macronameval);
- value = yasm__xstrdup("");
- }
- eval_set(pp, 1, name, value);
- yasm_xfree(name);
- yasm_xfree(value);
-}
-
-static void
-gas_preproc_undefine_macro(yasm_preproc *preproc, const char *macroname)
-{
- /* TODO */
-}
-
-static void
-gas_preproc_define_builtin(yasm_preproc *preproc, const char *macronameval)
-{
- /* TODO */
-}
-
-static void
-gas_preproc_add_standard(yasm_preproc *preproc, const char **macros)
-{
- /* TODO */
-}
-
-
-/* Define preproc structure -- see preproc.h for details */
-yasm_preproc_module yasm_gas_LTX_preproc = {
- "GNU AS (GAS)-compatible preprocessor",
- "gas",
- gas_preproc_create,
- gas_preproc_destroy,
- gas_preproc_get_line,
- gas_preproc_get_included_file,
- gas_preproc_add_include_file,
- gas_preproc_predefine_macro,
- gas_preproc_undefine_macro,
- gas_preproc_define_builtin,
- gas_preproc_add_standard
-};
+ }
+ } else {
+ f = stdin;
+ }
+
+ pp->preproc.module = &yasm_gas_LTX_preproc;
+ pp->in = f;
+ pp->in_filename = yasm__xstrdup(in_filename);
+ pp->defines = yasm_symtab_create();
+ SLIST_INIT(&pp->deferred_defines);
+ yasm_symtab_set_case_sensitive(pp->defines, 1);
+ pp->depth = 0;
+ pp->skip_depth = 0;
+ pp->in_comment = FALSE;
+ SLIST_INIT(&pp->buffered_lines);
+ SLIST_INIT(&pp->included_files);
+ STAILQ_INIT(&pp->macros);
+ pp->in_line_number = 0;
+ pp->next_line_number = 0;
+ pp->current_line_number = 0;
+ pp->cur_lm = lm;
+ pp->errwarns = errwarns;
+ pp->fatal_error = 0;
+ pp->detect_errors_only = 0;
+
+ return (yasm_preproc *) pp;
+}
+
+static void
+gas_preproc_destroy(yasm_preproc *preproc)
+{
+ yasm_preproc_gas *pp = (yasm_preproc_gas *) preproc;
+ yasm_xfree(pp->in_filename);
+ yasm_symtab_destroy(pp->defines);
+ while (!SLIST_EMPTY(&pp->deferred_defines)) {
+ deferred_define *def = SLIST_FIRST(&pp->deferred_defines);
+ SLIST_REMOVE_HEAD(&pp->deferred_defines, next);
+ yasm_xfree(def->name);
+ yasm_xfree(def->value);
+ yasm_xfree(def);
+ }
+ while (!SLIST_EMPTY(&pp->buffered_lines)) {
+ buffered_line *bline = SLIST_FIRST(&pp->buffered_lines);
+ SLIST_REMOVE_HEAD(&pp->buffered_lines, next);
+ yasm_xfree(bline->line);
+ yasm_xfree(bline);
+ }
+ while (!SLIST_EMPTY(&pp->included_files)) {
+ included_file *inc_file = SLIST_FIRST(&pp->included_files);
+ SLIST_REMOVE_HEAD(&pp->included_files, next);
+ yasm_xfree(inc_file->filename);
+ yasm_xfree(inc_file);
+ }
+ while (!STAILQ_EMPTY(&pp->macros)) {
+ int i;
+ macro_entry *macro = STAILQ_FIRST(&pp->macros);
+ STAILQ_REMOVE_HEAD(&pp->macros, next);
+ yasm_xfree(macro->name);
+ for (i = 0; i < macro->num_params; i++)
+ yasm_xfree(macro->params[i]);
+ yasm_xfree(macro->params);
+ for (i = 0; i < macro->num_lines; i++)
+ yasm_xfree(macro->lines[i]);
+ yasm_xfree(macro->lines);
+ yasm_xfree(macro);
+ }
+ yasm_xfree(preproc);
+}
+
+static char *
+gas_preproc_get_line(yasm_preproc *preproc)
+{
+ yasm_preproc_gas *pp = (yasm_preproc_gas *)preproc;
+ int done = FALSE;
+ char *line = NULL;
+
+ pp->current_line_number++;
+
+ do {
+ if (line != NULL) {
+ yasm_xfree(line);
+ }
+ if (pp->fatal_error) {
+ return NULL;
+ }
+ line = read_line(pp);
+ if (line == NULL) {
+ if (pp->in_comment) {
+ yasm_linemap_set(pp->cur_lm, pp->in_filename, pp->current_line_number, pp->next_line_number, 0);
+ yasm_warn_set(YASM_WARN_GENERAL, N_("end of file in comment"));
+ yasm_errwarn_propagate(pp->errwarns, pp->current_line_number);
+ pp->in_comment = FALSE;
+ }
+ return NULL;
+ }
+ done = process_line(pp, &line);
+ } while (!done);
+
+ yasm_linemap_set(pp->cur_lm, pp->in_filename, pp->current_line_number, pp->next_line_number, 0);
+
+ return line;
+}
+
+static size_t
+gas_preproc_get_included_file(yasm_preproc *preproc, char *buf,
+ size_t max_size)
+{
+ /* TODO */
+ return 0;
+}
+
+static void
+gas_preproc_add_include_file(yasm_preproc *preproc, const char *filename)
+{
+ yasm_preproc_gas *pp = (yasm_preproc_gas *) preproc;
+ eval_include(pp, 0, filename);
+}
+
+static void
+gas_preproc_predefine_macro(yasm_preproc *preproc, const char *macronameval)
+{
+ yasm_preproc_gas *pp = (yasm_preproc_gas *) preproc;
+ const char *eq = strstr(macronameval, "=");
+ char *name, *value;
+ if (eq) {
+ value = yasm__xstrdup(eq + 1);
+ name = yasm_xmalloc(eq - macronameval + 1);
+ memcpy(name, macronameval, eq - macronameval);
+ name[eq - macronameval] = '\0';
+ } else {
+ name = yasm__xstrdup(macronameval);
+ value = yasm__xstrdup("");
+ }
+ eval_set(pp, 1, name, value);
+ yasm_xfree(name);
+ yasm_xfree(value);
+}
+
+static void
+gas_preproc_undefine_macro(yasm_preproc *preproc, const char *macroname)
+{
+ /* TODO */
+}
+
+static void
+gas_preproc_define_builtin(yasm_preproc *preproc, const char *macronameval)
+{
+ /* TODO */
+}
+
+static void
+gas_preproc_add_standard(yasm_preproc *preproc, const char **macros)
+{
+ /* TODO */
+}
+
+
+/* Define preproc structure -- see preproc.h for details */
+yasm_preproc_module yasm_gas_LTX_preproc = {
+ "GNU AS (GAS)-compatible preprocessor",
+ "gas",
+ gas_preproc_create,
+ gas_preproc_destroy,
+ gas_preproc_get_line,
+ gas_preproc_get_included_file,
+ gas_preproc_add_include_file,
+ gas_preproc_predefine_macro,
+ gas_preproc_undefine_macro,
+ gas_preproc_define_builtin,
+ gas_preproc_add_standard
+};
diff --git a/contrib/tools/yasm/modules/preprocs/nasm/genversion.c b/contrib/tools/yasm/modules/preprocs/nasm/genversion.c
index 0c509c0924..164b4d6b51 100644
--- a/contrib/tools/yasm/modules/preprocs/nasm/genversion.c
+++ b/contrib/tools/yasm/modules/preprocs/nasm/genversion.c
@@ -1,81 +1,81 @@
-/*
- *
- * Generate version.mac
- *
- * Copyright (C) 2006-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include "config.h" /* for PACKAGE_VERSION */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-
-int
-main(int argc, char *argv[])
-{
- FILE *out;
- int major, minor, subminor, patchlevel, matched;
-
- if (argc != 2) {
- fprintf(stderr, "Usage: %s <outfile>\n", argv[0]);
- return EXIT_FAILURE;
- }
-
- matched = sscanf(PACKAGE_VERSION, "%d.%d.%d.%d", &major, &minor, &subminor,
- &patchlevel);
-
- if (matched == 3)
- patchlevel = 0;
- else if (matched != 4) {
- fprintf(stderr, "Version tokenizing error\n");
- return EXIT_FAILURE;
- }
-
- out = fopen(argv[1], "wt");
-
- if (!out) {
- fprintf(stderr, "Could not open `%s'.\n", argv[1]);
- return EXIT_FAILURE;
- }
-
- fprintf(out, "; This file auto-generated by genversion.c"
- " - don't edit it\n");
-
- fprintf(out, "%%define __YASM_MAJOR__ %d\n", major);
- fprintf(out, "%%define __YASM_MINOR__ %d\n", minor);
- fprintf(out, "%%define __YASM_SUBMINOR__ %d\n", subminor);
- fprintf(out, "%%define __YASM_BUILD__ %d\n", patchlevel);
- fprintf(out, "%%define __YASM_PATCHLEVEL__ %d\n", patchlevel);
-
- /* Version id (hex number) */
- fprintf(out, "%%define __YASM_VERSION_ID__ 0%02x%02x%02x%02xh\n", major,
- minor, subminor, patchlevel);
-
- /* Version string */
- fprintf(out, "%%define __YASM_VER__ \"%s\"\n", PACKAGE_VERSION);
- fclose(out);
-
- return EXIT_SUCCESS;
-}
+/*
+ *
+ * Generate version.mac
+ *
+ * Copyright (C) 2006-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "config.h" /* for PACKAGE_VERSION */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+
+int
+main(int argc, char *argv[])
+{
+ FILE *out;
+ int major, minor, subminor, patchlevel, matched;
+
+ if (argc != 2) {
+ fprintf(stderr, "Usage: %s <outfile>\n", argv[0]);
+ return EXIT_FAILURE;
+ }
+
+ matched = sscanf(PACKAGE_VERSION, "%d.%d.%d.%d", &major, &minor, &subminor,
+ &patchlevel);
+
+ if (matched == 3)
+ patchlevel = 0;
+ else if (matched != 4) {
+ fprintf(stderr, "Version tokenizing error\n");
+ return EXIT_FAILURE;
+ }
+
+ out = fopen(argv[1], "wt");
+
+ if (!out) {
+ fprintf(stderr, "Could not open `%s'.\n", argv[1]);
+ return EXIT_FAILURE;
+ }
+
+ fprintf(out, "; This file auto-generated by genversion.c"
+ " - don't edit it\n");
+
+ fprintf(out, "%%define __YASM_MAJOR__ %d\n", major);
+ fprintf(out, "%%define __YASM_MINOR__ %d\n", minor);
+ fprintf(out, "%%define __YASM_SUBMINOR__ %d\n", subminor);
+ fprintf(out, "%%define __YASM_BUILD__ %d\n", patchlevel);
+ fprintf(out, "%%define __YASM_PATCHLEVEL__ %d\n", patchlevel);
+
+ /* Version id (hex number) */
+ fprintf(out, "%%define __YASM_VERSION_ID__ 0%02x%02x%02x%02xh\n", major,
+ minor, subminor, patchlevel);
+
+ /* Version string */
+ fprintf(out, "%%define __YASM_VER__ \"%s\"\n", PACKAGE_VERSION);
+ fclose(out);
+
+ return EXIT_SUCCESS;
+}
diff --git a/contrib/tools/yasm/modules/preprocs/nasm/nasm-eval.c b/contrib/tools/yasm/modules/preprocs/nasm/nasm-eval.c
index 859cad841a..e249484cd5 100644
--- a/contrib/tools/yasm/modules/preprocs/nasm/nasm-eval.c
+++ b/contrib/tools/yasm/modules/preprocs/nasm/nasm-eval.c
@@ -1,441 +1,441 @@
-/* eval.c expression evaluator for the Netwide Assembler
- *
- * The Netwide Assembler is copyright (C) 1996 Simon Tatham and
- * Julian Hall. All rights reserved. The software is
- * redistributable under the licence given in the file "Licence"
- * distributed in the NASM archive.
- *
- * initial version 27/iii/95 by Simon Tatham
- */
-#include <util.h>
-#include <libyasm-stdint.h>
-#include <libyasm/coretype.h>
-#include <libyasm/intnum.h>
-#include <libyasm/expr.h>
-#include <libyasm/symrec.h>
-#include <ctype.h>
-
-#include "nasm.h"
-#include "nasmlib.h"
-#include "nasm-eval.h"
-
-/* The assembler symbol table. */
-extern yasm_symtab *nasm_symtab;
-
-static scanner scan; /* Address of scanner routine */
-static efunc error; /* Address of error reporting routine */
-
-static struct tokenval *tokval; /* The current token */
-static int i; /* The t_type of tokval */
-
-static void *scpriv;
-
-/*
- * Recursive-descent parser. Called with a single boolean operand,
- * which is TRUE if the evaluation is critical (i.e. unresolved
- * symbols are an error condition). Must update the global `i' to
- * reflect the token after the parsed string. May return NULL.
- *
- * evaluate() should report its own errors: on return it is assumed
- * that if NULL has been returned, the error has already been
- * reported.
- */
-
-/*
- * Grammar parsed is:
- *
- * expr : bexpr [ WRT expr6 ]
- * bexpr : rexp0 or expr0 depending on relative-mode setting
- * rexp0 : rexp1 [ {||} rexp1...]
- * rexp1 : rexp2 [ {^^} rexp2...]
- * rexp2 : rexp3 [ {&&} rexp3...]
- * rexp3 : expr0 [ {=,==,<>,!=,<,>,<=,>=} expr0 ]
- * expr0 : expr1 [ {|} expr1...]
- * expr1 : expr2 [ {^} expr2...]
- * expr2 : expr3 [ {&} expr3...]
- * expr3 : expr4 [ {<<,>>} expr4...]
- * expr4 : expr5 [ {+,-} expr5...]
- * expr5 : expr6 [ {*,/,%,//,%%} expr6...]
- * expr6 : { ~,+,-,SEG } expr6
- * | (bexpr)
- * | symbol
- * | $
- * | number
- */
-
-static yasm_expr *rexp0(void), *rexp1(void), *rexp2(void), *rexp3(void);
-
-static yasm_expr *expr0(void), *expr1(void), *expr2(void), *expr3(void);
-static yasm_expr *expr4(void), *expr5(void), *expr6(void);
-
-static yasm_expr *(*bexpr)(void);
-
-static yasm_expr *rexp0(void)
-{
- yasm_expr *e, *f;
-
- e = rexp1();
- if (!e)
- return NULL;
-
- while (i == TOKEN_DBL_OR)
- {
- i = scan(scpriv, tokval);
- f = rexp1();
- if (!f) {
- yasm_expr_destroy(e);
- return NULL;
- }
-
- e = yasm_expr_create_tree(e, YASM_EXPR_LOR, f, 0);
+/* eval.c expression evaluator for the Netwide Assembler
+ *
+ * The Netwide Assembler is copyright (C) 1996 Simon Tatham and
+ * Julian Hall. All rights reserved. The software is
+ * redistributable under the licence given in the file "Licence"
+ * distributed in the NASM archive.
+ *
+ * initial version 27/iii/95 by Simon Tatham
+ */
+#include <util.h>
+#include <libyasm-stdint.h>
+#include <libyasm/coretype.h>
+#include <libyasm/intnum.h>
+#include <libyasm/expr.h>
+#include <libyasm/symrec.h>
+#include <ctype.h>
+
+#include "nasm.h"
+#include "nasmlib.h"
+#include "nasm-eval.h"
+
+/* The assembler symbol table. */
+extern yasm_symtab *nasm_symtab;
+
+static scanner scan; /* Address of scanner routine */
+static efunc error; /* Address of error reporting routine */
+
+static struct tokenval *tokval; /* The current token */
+static int i; /* The t_type of tokval */
+
+static void *scpriv;
+
+/*
+ * Recursive-descent parser. Called with a single boolean operand,
+ * which is TRUE if the evaluation is critical (i.e. unresolved
+ * symbols are an error condition). Must update the global `i' to
+ * reflect the token after the parsed string. May return NULL.
+ *
+ * evaluate() should report its own errors: on return it is assumed
+ * that if NULL has been returned, the error has already been
+ * reported.
+ */
+
+/*
+ * Grammar parsed is:
+ *
+ * expr : bexpr [ WRT expr6 ]
+ * bexpr : rexp0 or expr0 depending on relative-mode setting
+ * rexp0 : rexp1 [ {||} rexp1...]
+ * rexp1 : rexp2 [ {^^} rexp2...]
+ * rexp2 : rexp3 [ {&&} rexp3...]
+ * rexp3 : expr0 [ {=,==,<>,!=,<,>,<=,>=} expr0 ]
+ * expr0 : expr1 [ {|} expr1...]
+ * expr1 : expr2 [ {^} expr2...]
+ * expr2 : expr3 [ {&} expr3...]
+ * expr3 : expr4 [ {<<,>>} expr4...]
+ * expr4 : expr5 [ {+,-} expr5...]
+ * expr5 : expr6 [ {*,/,%,//,%%} expr6...]
+ * expr6 : { ~,+,-,SEG } expr6
+ * | (bexpr)
+ * | symbol
+ * | $
+ * | number
+ */
+
+static yasm_expr *rexp0(void), *rexp1(void), *rexp2(void), *rexp3(void);
+
+static yasm_expr *expr0(void), *expr1(void), *expr2(void), *expr3(void);
+static yasm_expr *expr4(void), *expr5(void), *expr6(void);
+
+static yasm_expr *(*bexpr)(void);
+
+static yasm_expr *rexp0(void)
+{
+ yasm_expr *e, *f;
+
+ e = rexp1();
+ if (!e)
+ return NULL;
+
+ while (i == TOKEN_DBL_OR)
+ {
+ i = scan(scpriv, tokval);
+ f = rexp1();
+ if (!f) {
+ yasm_expr_destroy(e);
+ return NULL;
+ }
+
+ e = yasm_expr_create_tree(e, YASM_EXPR_LOR, f, 0);
+ }
+ return e;
+}
+
+static yasm_expr *rexp1(void)
+{
+ yasm_expr *e, *f;
+
+ e = rexp2();
+ if (!e)
+ return NULL;
+
+ while (i == TOKEN_DBL_XOR)
+ {
+ i = scan(scpriv, tokval);
+ f = rexp2();
+ if (!f) {
+ yasm_expr_destroy(e);
+ return NULL;
+ }
+
+ e = yasm_expr_create_tree(e, YASM_EXPR_LXOR, f, 0);
+ }
+ return e;
+}
+
+static yasm_expr *rexp2(void)
+{
+ yasm_expr *e, *f;
+
+ e = rexp3();
+ if (!e)
+ return NULL;
+ while (i == TOKEN_DBL_AND)
+ {
+ i = scan(scpriv, tokval);
+ f = rexp3();
+ if (!f) {
+ yasm_expr_destroy(e);
+ return NULL;
+ }
+
+ e = yasm_expr_create_tree(e, YASM_EXPR_LAND, f, 0);
+ }
+ return e;
+}
+
+static yasm_expr *rexp3(void)
+{
+ yasm_expr *e, *f;
+
+ e = expr0();
+ if (!e)
+ return NULL;
+
+ while (i == TOKEN_EQ || i == TOKEN_LT || i == TOKEN_GT ||
+ i == TOKEN_NE || i == TOKEN_LE || i == TOKEN_GE)
+ {
+ int j = i;
+ i = scan(scpriv, tokval);
+ f = expr0();
+ if (!f) {
+ yasm_expr_destroy(e);
+ return NULL;
+ }
+
+ switch (j)
+ {
+ case TOKEN_EQ:
+ e = yasm_expr_create_tree(e, YASM_EXPR_EQ, f, 0);
+ break;
+ case TOKEN_LT:
+ e = yasm_expr_create_tree(e, YASM_EXPR_LT, f, 0);
+ break;
+ case TOKEN_GT:
+ e = yasm_expr_create_tree(e, YASM_EXPR_GT, f, 0);
+ break;
+ case TOKEN_NE:
+ e = yasm_expr_create_tree(e, YASM_EXPR_NE, f, 0);
+ break;
+ case TOKEN_LE:
+ e = yasm_expr_create_tree(e, YASM_EXPR_LE, f, 0);
+ break;
+ case TOKEN_GE:
+ e = yasm_expr_create_tree(e, YASM_EXPR_GE, f, 0);
+ break;
+ }
+ }
+ return e;
+}
+
+static yasm_expr *expr0(void)
+{
+ yasm_expr *e, *f;
+
+ e = expr1();
+ if (!e)
+ return NULL;
+
+ while (i == '|')
+ {
+ i = scan(scpriv, tokval);
+ f = expr1();
+ if (!f) {
+ yasm_expr_destroy(e);
+ return NULL;
+ }
+
+ e = yasm_expr_create_tree(e, YASM_EXPR_OR, f, 0);
+ }
+ return e;
+}
+
+static yasm_expr *expr1(void)
+{
+ yasm_expr *e, *f;
+
+ e = expr2();
+ if (!e)
+ return NULL;
+
+ while (i == '^') {
+ i = scan(scpriv, tokval);
+ f = expr2();
+ if (!f) {
+ yasm_expr_destroy(e);
+ return NULL;
+ }
+
+ e = yasm_expr_create_tree(e, YASM_EXPR_XOR, f, 0);
+ }
+ return e;
+}
+
+static yasm_expr *expr2(void)
+{
+ yasm_expr *e, *f;
+
+ e = expr3();
+ if (!e)
+ return NULL;
+
+ while (i == '&') {
+ i = scan(scpriv, tokval);
+ f = expr3();
+ if (!f) {
+ yasm_expr_destroy(e);
+ return NULL;
+ }
+
+ e = yasm_expr_create_tree(e, YASM_EXPR_AND, f, 0);
+ }
+ return e;
+}
+
+static yasm_expr *expr3(void)
+{
+ yasm_expr *e, *f;
+
+ e = expr4();
+ if (!e)
+ return NULL;
+
+ while (i == TOKEN_SHL || i == TOKEN_SHR)
+ {
+ int j = i;
+ i = scan(scpriv, tokval);
+ f = expr4();
+ if (!f) {
+ yasm_expr_destroy(e);
+ return NULL;
+ }
+
+ switch (j) {
+ case TOKEN_SHL:
+ e = yasm_expr_create_tree(e, YASM_EXPR_SHL, f, 0);
+ break;
+ case TOKEN_SHR:
+ e = yasm_expr_create_tree(e, YASM_EXPR_SHR, f, 0);
+ break;
+ }
+ }
+ return e;
+}
+
+static yasm_expr *expr4(void)
+{
+ yasm_expr *e, *f;
+
+ e = expr5();
+ if (!e)
+ return NULL;
+ while (i == '+' || i == '-')
+ {
+ int j = i;
+ i = scan(scpriv, tokval);
+ f = expr5();
+ if (!f) {
+ yasm_expr_destroy(e);
+ return NULL;
+ }
+ switch (j) {
+ case '+':
+ e = yasm_expr_create_tree(e, YASM_EXPR_ADD, f, 0);
+ break;
+ case '-':
+ e = yasm_expr_create_tree(e, YASM_EXPR_SUB, f, 0);
+ break;
+ }
+ }
+ return e;
+}
+
+static yasm_expr *expr5(void)
+{
+ yasm_expr *e, *f;
+
+ e = expr6();
+ if (!e)
+ return NULL;
+ while (i == '*' || i == '/' || i == '%' ||
+ i == TOKEN_SDIV || i == TOKEN_SMOD)
+ {
+ int j = i;
+ i = scan(scpriv, tokval);
+ f = expr6();
+ if (!f) {
+ yasm_expr_destroy(e);
+ return NULL;
+ }
+ switch (j) {
+ case '*':
+ e = yasm_expr_create_tree(e, YASM_EXPR_MUL, f, 0);
+ break;
+ case '/':
+ e = yasm_expr_create_tree(e, YASM_EXPR_DIV, f, 0);
+ break;
+ case '%':
+ e = yasm_expr_create_tree(e, YASM_EXPR_MOD, f, 0);
+ break;
+ case TOKEN_SDIV:
+ e = yasm_expr_create_tree(e, YASM_EXPR_SIGNDIV, f, 0);
+ break;
+ case TOKEN_SMOD:
+ e = yasm_expr_create_tree(e, YASM_EXPR_SIGNMOD, f, 0);
+ break;
+ }
+ }
+ return e;
+}
+
+static yasm_expr *expr6(void)
+{
+ yasm_expr *e = NULL;
+
+ if (i == '-') {
+ i = scan(scpriv, tokval);
+ e = expr6();
+ if (!e)
+ return NULL;
+ return yasm_expr_create_branch(YASM_EXPR_NEG, e, 0);
+ } else if (i == '+') {
+ i = scan(scpriv, tokval);
+ return expr6();
+ } else if (i == '~') {
+ i = scan(scpriv, tokval);
+ e = expr6();
+ if (!e)
+ return NULL;
+ return yasm_expr_create_branch(YASM_EXPR_NOT, e, 0);
+ } else if (i == TOKEN_SEG) {
+ i = scan(scpriv, tokval);
+ e = expr6();
+ if (!e)
+ return NULL;
+ error(ERR_NONFATAL, "%s not supported", "SEG");
+ return e;
+ } else if (i == '(') {
+ i = scan(scpriv, tokval);
+ e = bexpr();
+ if (!e)
+ return NULL;
+ if (i != ')') {
+ error(ERR_NONFATAL, "expecting `)'");
+ return NULL;
+ }
+ i = scan(scpriv, tokval);
+ return e;
}
- return e;
-}
-
-static yasm_expr *rexp1(void)
-{
- yasm_expr *e, *f;
-
- e = rexp2();
- if (!e)
- return NULL;
-
- while (i == TOKEN_DBL_XOR)
- {
- i = scan(scpriv, tokval);
- f = rexp2();
- if (!f) {
- yasm_expr_destroy(e);
- return NULL;
- }
-
- e = yasm_expr_create_tree(e, YASM_EXPR_LXOR, f, 0);
- }
- return e;
-}
-
-static yasm_expr *rexp2(void)
-{
- yasm_expr *e, *f;
-
- e = rexp3();
- if (!e)
- return NULL;
- while (i == TOKEN_DBL_AND)
- {
- i = scan(scpriv, tokval);
- f = rexp3();
- if (!f) {
- yasm_expr_destroy(e);
- return NULL;
- }
-
- e = yasm_expr_create_tree(e, YASM_EXPR_LAND, f, 0);
- }
- return e;
-}
-
-static yasm_expr *rexp3(void)
-{
- yasm_expr *e, *f;
-
- e = expr0();
- if (!e)
- return NULL;
-
- while (i == TOKEN_EQ || i == TOKEN_LT || i == TOKEN_GT ||
- i == TOKEN_NE || i == TOKEN_LE || i == TOKEN_GE)
- {
- int j = i;
- i = scan(scpriv, tokval);
- f = expr0();
- if (!f) {
- yasm_expr_destroy(e);
- return NULL;
- }
-
- switch (j)
- {
- case TOKEN_EQ:
- e = yasm_expr_create_tree(e, YASM_EXPR_EQ, f, 0);
- break;
- case TOKEN_LT:
- e = yasm_expr_create_tree(e, YASM_EXPR_LT, f, 0);
- break;
- case TOKEN_GT:
- e = yasm_expr_create_tree(e, YASM_EXPR_GT, f, 0);
- break;
- case TOKEN_NE:
- e = yasm_expr_create_tree(e, YASM_EXPR_NE, f, 0);
- break;
- case TOKEN_LE:
- e = yasm_expr_create_tree(e, YASM_EXPR_LE, f, 0);
- break;
- case TOKEN_GE:
- e = yasm_expr_create_tree(e, YASM_EXPR_GE, f, 0);
- break;
- }
- }
- return e;
-}
-
-static yasm_expr *expr0(void)
-{
- yasm_expr *e, *f;
-
- e = expr1();
- if (!e)
- return NULL;
-
- while (i == '|')
- {
- i = scan(scpriv, tokval);
- f = expr1();
- if (!f) {
- yasm_expr_destroy(e);
- return NULL;
- }
-
- e = yasm_expr_create_tree(e, YASM_EXPR_OR, f, 0);
- }
- return e;
-}
-
-static yasm_expr *expr1(void)
-{
- yasm_expr *e, *f;
-
- e = expr2();
- if (!e)
- return NULL;
-
- while (i == '^') {
- i = scan(scpriv, tokval);
- f = expr2();
- if (!f) {
- yasm_expr_destroy(e);
- return NULL;
- }
-
- e = yasm_expr_create_tree(e, YASM_EXPR_XOR, f, 0);
- }
- return e;
-}
-
-static yasm_expr *expr2(void)
-{
- yasm_expr *e, *f;
-
- e = expr3();
- if (!e)
- return NULL;
-
- while (i == '&') {
- i = scan(scpriv, tokval);
- f = expr3();
- if (!f) {
- yasm_expr_destroy(e);
- return NULL;
- }
-
- e = yasm_expr_create_tree(e, YASM_EXPR_AND, f, 0);
- }
- return e;
-}
-
-static yasm_expr *expr3(void)
-{
- yasm_expr *e, *f;
-
- e = expr4();
- if (!e)
- return NULL;
-
- while (i == TOKEN_SHL || i == TOKEN_SHR)
- {
- int j = i;
- i = scan(scpriv, tokval);
- f = expr4();
- if (!f) {
- yasm_expr_destroy(e);
- return NULL;
- }
-
- switch (j) {
- case TOKEN_SHL:
- e = yasm_expr_create_tree(e, YASM_EXPR_SHL, f, 0);
- break;
- case TOKEN_SHR:
- e = yasm_expr_create_tree(e, YASM_EXPR_SHR, f, 0);
- break;
- }
- }
- return e;
-}
-
-static yasm_expr *expr4(void)
-{
- yasm_expr *e, *f;
-
- e = expr5();
- if (!e)
- return NULL;
- while (i == '+' || i == '-')
- {
- int j = i;
- i = scan(scpriv, tokval);
- f = expr5();
- if (!f) {
- yasm_expr_destroy(e);
- return NULL;
- }
- switch (j) {
- case '+':
- e = yasm_expr_create_tree(e, YASM_EXPR_ADD, f, 0);
- break;
- case '-':
- e = yasm_expr_create_tree(e, YASM_EXPR_SUB, f, 0);
- break;
- }
- }
- return e;
-}
-
-static yasm_expr *expr5(void)
-{
- yasm_expr *e, *f;
-
- e = expr6();
- if (!e)
- return NULL;
- while (i == '*' || i == '/' || i == '%' ||
- i == TOKEN_SDIV || i == TOKEN_SMOD)
- {
- int j = i;
- i = scan(scpriv, tokval);
- f = expr6();
- if (!f) {
- yasm_expr_destroy(e);
- return NULL;
- }
- switch (j) {
- case '*':
- e = yasm_expr_create_tree(e, YASM_EXPR_MUL, f, 0);
- break;
- case '/':
- e = yasm_expr_create_tree(e, YASM_EXPR_DIV, f, 0);
- break;
- case '%':
- e = yasm_expr_create_tree(e, YASM_EXPR_MOD, f, 0);
- break;
- case TOKEN_SDIV:
- e = yasm_expr_create_tree(e, YASM_EXPR_SIGNDIV, f, 0);
- break;
- case TOKEN_SMOD:
- e = yasm_expr_create_tree(e, YASM_EXPR_SIGNMOD, f, 0);
- break;
- }
- }
- return e;
-}
-
-static yasm_expr *expr6(void)
-{
- yasm_expr *e = NULL;
-
- if (i == '-') {
- i = scan(scpriv, tokval);
- e = expr6();
- if (!e)
- return NULL;
- return yasm_expr_create_branch(YASM_EXPR_NEG, e, 0);
- } else if (i == '+') {
- i = scan(scpriv, tokval);
- return expr6();
- } else if (i == '~') {
- i = scan(scpriv, tokval);
- e = expr6();
- if (!e)
- return NULL;
- return yasm_expr_create_branch(YASM_EXPR_NOT, e, 0);
- } else if (i == TOKEN_SEG) {
- i = scan(scpriv, tokval);
- e = expr6();
- if (!e)
- return NULL;
- error(ERR_NONFATAL, "%s not supported", "SEG");
- return e;
- } else if (i == '(') {
- i = scan(scpriv, tokval);
- e = bexpr();
- if (!e)
- return NULL;
- if (i != ')') {
- error(ERR_NONFATAL, "expecting `)'");
- return NULL;
- }
- i = scan(scpriv, tokval);
- return e;
- }
- else if (i == TOKEN_NUM || i == TOKEN_ID ||
- i == TOKEN_HERE || i == TOKEN_BASE)
- {
- switch (i) {
- case TOKEN_NUM:
- e = yasm_expr_create_ident(yasm_expr_int(tokval->t_integer), 0);
- break;
- case TOKEN_ID:
- if (nasm_symtab) {
- yasm_symrec *sym =
- yasm_symtab_get(nasm_symtab, tokval->t_charptr);
- if (sym) {
- e = yasm_expr_create_ident(yasm_expr_sym(sym), 0);
- } else {
- error(ERR_NONFATAL,
- "undefined symbol `%s' in preprocessor",
- tokval->t_charptr);
- e = yasm_expr_create_ident(yasm_expr_int(
- yasm_intnum_create_int(1)), 0);
- }
- break;
- }
- /*fallthrough*/
- case TOKEN_HERE:
- case TOKEN_BASE:
- error(ERR_NONFATAL,
- "cannot reference symbol `%s' in preprocessor",
- (i == TOKEN_ID ? tokval->t_charptr :
- i == TOKEN_HERE ? "$" : "$$"));
- e = yasm_expr_create_ident(yasm_expr_int(yasm_intnum_create_int(1)),
- 0);
- break;
- }
- i = scan(scpriv, tokval);
- return e;
- } else {
- error(ERR_NONFATAL, "expression syntax error");
- return NULL;
- }
-}
-
-yasm_expr *nasm_evaluate (scanner sc, void *scprivate, struct tokenval *tv,
- int critical, efunc report_error)
-{
- if (critical & CRITICAL) {
- critical &= ~CRITICAL;
- bexpr = rexp0;
- } else
- bexpr = expr0;
-
- scan = sc;
- scpriv = scprivate;
- tokval = tv;
- error = report_error;
-
- if (tokval->t_type == TOKEN_INVALID)
- i = scan(scpriv, tokval);
- else
- i = tokval->t_type;
-
- return bexpr ();
-}
+ else if (i == TOKEN_NUM || i == TOKEN_ID ||
+ i == TOKEN_HERE || i == TOKEN_BASE)
+ {
+ switch (i) {
+ case TOKEN_NUM:
+ e = yasm_expr_create_ident(yasm_expr_int(tokval->t_integer), 0);
+ break;
+ case TOKEN_ID:
+ if (nasm_symtab) {
+ yasm_symrec *sym =
+ yasm_symtab_get(nasm_symtab, tokval->t_charptr);
+ if (sym) {
+ e = yasm_expr_create_ident(yasm_expr_sym(sym), 0);
+ } else {
+ error(ERR_NONFATAL,
+ "undefined symbol `%s' in preprocessor",
+ tokval->t_charptr);
+ e = yasm_expr_create_ident(yasm_expr_int(
+ yasm_intnum_create_int(1)), 0);
+ }
+ break;
+ }
+ /*fallthrough*/
+ case TOKEN_HERE:
+ case TOKEN_BASE:
+ error(ERR_NONFATAL,
+ "cannot reference symbol `%s' in preprocessor",
+ (i == TOKEN_ID ? tokval->t_charptr :
+ i == TOKEN_HERE ? "$" : "$$"));
+ e = yasm_expr_create_ident(yasm_expr_int(yasm_intnum_create_int(1)),
+ 0);
+ break;
+ }
+ i = scan(scpriv, tokval);
+ return e;
+ } else {
+ error(ERR_NONFATAL, "expression syntax error");
+ return NULL;
+ }
+}
+
+yasm_expr *nasm_evaluate (scanner sc, void *scprivate, struct tokenval *tv,
+ int critical, efunc report_error)
+{
+ if (critical & CRITICAL) {
+ critical &= ~CRITICAL;
+ bexpr = rexp0;
+ } else
+ bexpr = expr0;
+
+ scan = sc;
+ scpriv = scprivate;
+ tokval = tv;
+ error = report_error;
+
+ if (tokval->t_type == TOKEN_INVALID)
+ i = scan(scpriv, tokval);
+ else
+ i = tokval->t_type;
+
+ return bexpr ();
+}
diff --git a/contrib/tools/yasm/modules/preprocs/nasm/nasm-eval.h b/contrib/tools/yasm/modules/preprocs/nasm/nasm-eval.h
index a02c8d83e6..f06937c5cc 100644
--- a/contrib/tools/yasm/modules/preprocs/nasm/nasm-eval.h
+++ b/contrib/tools/yasm/modules/preprocs/nasm/nasm-eval.h
@@ -1,18 +1,18 @@
-/* eval.h header file for eval.c
- *
- * The Netwide Assembler is copyright (C) 1996 Simon Tatham and
- * Julian Hall. All rights reserved. The software is
- * redistributable under the licence given in the file "Licence"
- * distributed in the NASM archive.
- */
-
-#ifndef NASM_EVAL_H
-#define NASM_EVAL_H
-
-/*
- * The evaluator itself.
- */
-yasm_expr *nasm_evaluate (scanner sc, void *scprivate, struct tokenval *tv,
- int critical, efunc report_error);
-
-#endif
+/* eval.h header file for eval.c
+ *
+ * The Netwide Assembler is copyright (C) 1996 Simon Tatham and
+ * Julian Hall. All rights reserved. The software is
+ * redistributable under the licence given in the file "Licence"
+ * distributed in the NASM archive.
+ */
+
+#ifndef NASM_EVAL_H
+#define NASM_EVAL_H
+
+/*
+ * The evaluator itself.
+ */
+yasm_expr *nasm_evaluate (scanner sc, void *scprivate, struct tokenval *tv,
+ int critical, efunc report_error);
+
+#endif
diff --git a/contrib/tools/yasm/modules/preprocs/nasm/nasm-pp.c b/contrib/tools/yasm/modules/preprocs/nasm/nasm-pp.c
index e530f728a6..27a8cc6c93 100644
--- a/contrib/tools/yasm/modules/preprocs/nasm/nasm-pp.c
+++ b/contrib/tools/yasm/modules/preprocs/nasm/nasm-pp.c
@@ -1,5317 +1,5317 @@
-/* -*- mode: c; c-file-style: "bsd" -*- */
-/* preproc.c macro preprocessor for the Netwide Assembler
+/* -*- mode: c; c-file-style: "bsd" -*- */
+/* preproc.c macro preprocessor for the Netwide Assembler
+ *
+ * The Netwide Assembler is copyright (C) 1996 Simon Tatham and
+ * Julian Hall. All rights reserved. The software is
+ * redistributable under the licence given in the file "Licence"
+ * distributed in the NASM archive.
+ *
+ * initial version 18/iii/97 by Simon Tatham
+ */
+
+/* Typical flow of text through preproc
+ *
+ * pp_getline gets tokenised lines, either
+ *
+ * from a macro expansion
+ *
+ * or
+ * {
+ * read_line gets raw text from stdmacpos, or predef, or current input file
+ * tokenise converts to tokens
+ * }
+ *
+ * expand_mmac_params is used to expand %1 etc., unless a macro is being
+ * defined or a false conditional is being processed
+ * (%0, %1, %+1, %-1, %%foo
+ *
+ * do_directive checks for directives
+ *
+ * expand_smacro is used to expand single line macros
+ *
+ * expand_mmacro is used to expand multi-line macros
+ *
+ * detoken is used to convert the line back to text
+ */
+#include <util.h>
+#include <libyasm-stdint.h>
+#include <libyasm/coretype.h>
+#include <libyasm/intnum.h>
+#include <libyasm/expr.h>
+#include <libyasm/file.h>
+#include <stdarg.h>
+#include <ctype.h>
+#include <limits.h>
+
+#include "nasm.h"
+#include "nasmlib.h"
+#include "nasm-pp.h"
+
+typedef struct SMacro SMacro;
+typedef struct MMacro MMacro;
+typedef struct Context Context;
+typedef struct Token Token;
+typedef struct Blocks Blocks;
+typedef struct Line Line;
+typedef struct Include Include;
+typedef struct Cond Cond;
+
+/*
+ * Store the definition of a single-line macro.
+ */
+struct SMacro
+{
+ SMacro *next;
+ char *name;
+ int level;
+ int casesense;
+ int nparam;
+ int in_progress;
+ Token *expansion;
+};
+
+/*
+ * Store the definition of a multi-line macro. This is also used to
+ * store the interiors of `%rep...%endrep' blocks, which are
+ * effectively self-re-invoking multi-line macros which simply
+ * don't have a name or bother to appear in the hash tables. %rep
+ * blocks are signified by having a NULL `name' field.
+ *
+ * In a MMacro describing a `%rep' block, the `in_progress' field
+ * isn't merely boolean, but gives the number of repeats left to
+ * run.
+ *
+ * The `next' field is used for storing MMacros in hash tables; the
+ * `next_active' field is for stacking them on istk entries.
+ *
+ * When a MMacro is being expanded, `params', `iline', `nparam',
+ * `paramlen', `rotate' and `unique' are local to the invocation.
+ */
+struct MMacro
+{
+ MMacro *next;
+ char *name;
+ int casesense;
+ long nparam_min, nparam_max;
+ int plus; /* is the last parameter greedy? */
+ int nolist; /* is this macro listing-inhibited? */
+ int in_progress;
+ Token *dlist; /* All defaults as one list */
+ Token **defaults; /* Parameter default pointers */
+ int ndefs; /* number of default parameters */
+ Line *expansion;
+
+ MMacro *next_active;
+ MMacro *rep_nest; /* used for nesting %rep */
+ Token **params; /* actual parameters */
+ Token *iline; /* invocation line */
+ long nparam, rotate, *paramlen;
+ unsigned long unique;
+ int lineno; /* Current line number on expansion */
+};
+
+/*
+ * The context stack is composed of a linked list of these.
+ */
+struct Context
+{
+ Context *next;
+ SMacro *localmac;
+ char *name;
+ unsigned long number;
+};
+
+/*
+ * This is the internal form which we break input lines up into.
+ * Typically stored in linked lists.
+ *
+ * Note that `type' serves a double meaning: TOK_SMAC_PARAM is not
+ * necessarily used as-is, but is intended to denote the number of
+ * the substituted parameter. So in the definition
+ *
+ * %define a(x,y) ( (x) & ~(y) )
*
- * The Netwide Assembler is copyright (C) 1996 Simon Tatham and
- * Julian Hall. All rights reserved. The software is
- * redistributable under the licence given in the file "Licence"
- * distributed in the NASM archive.
+ * the token representing `x' will have its type changed to
+ * TOK_SMAC_PARAM, but the one representing `y' will be
+ * TOK_SMAC_PARAM+1.
+ *
+ * TOK_INTERNAL_STRING is a dirty hack: it's a single string token
+ * which doesn't need quotes around it. Used in the pre-include
+ * mechanism as an alternative to trying to find a sensible type of
+ * quote to use on the filename we were passed.
+ */
+struct Token
+{
+ Token *next;
+ char *text;
+ SMacro *mac; /* associated macro for TOK_SMAC_END */
+ int type;
+};
+enum
+{
+ TOK_WHITESPACE = 1, TOK_COMMENT, TOK_ID, TOK_PREPROC_ID, TOK_STRING,
+ TOK_NUMBER, TOK_SMAC_END, TOK_OTHER, TOK_SMAC_PARAM,
+ TOK_INTERNAL_STRING
+};
+
+/*
+ * Multi-line macro definitions are stored as a linked list of
+ * these, which is essentially a container to allow several linked
+ * lists of Tokens.
*
- * initial version 18/iii/97 by Simon Tatham
- */
-
-/* Typical flow of text through preproc
- *
- * pp_getline gets tokenised lines, either
- *
- * from a macro expansion
- *
- * or
- * {
- * read_line gets raw text from stdmacpos, or predef, or current input file
- * tokenise converts to tokens
- * }
- *
- * expand_mmac_params is used to expand %1 etc., unless a macro is being
- * defined or a false conditional is being processed
- * (%0, %1, %+1, %-1, %%foo
- *
- * do_directive checks for directives
- *
- * expand_smacro is used to expand single line macros
- *
- * expand_mmacro is used to expand multi-line macros
- *
- * detoken is used to convert the line back to text
- */
-#include <util.h>
-#include <libyasm-stdint.h>
-#include <libyasm/coretype.h>
-#include <libyasm/intnum.h>
-#include <libyasm/expr.h>
-#include <libyasm/file.h>
-#include <stdarg.h>
-#include <ctype.h>
-#include <limits.h>
-
-#include "nasm.h"
-#include "nasmlib.h"
-#include "nasm-pp.h"
-
-typedef struct SMacro SMacro;
-typedef struct MMacro MMacro;
-typedef struct Context Context;
-typedef struct Token Token;
-typedef struct Blocks Blocks;
-typedef struct Line Line;
-typedef struct Include Include;
-typedef struct Cond Cond;
-
-/*
- * Store the definition of a single-line macro.
- */
-struct SMacro
-{
- SMacro *next;
- char *name;
- int level;
- int casesense;
- int nparam;
- int in_progress;
- Token *expansion;
-};
-
-/*
- * Store the definition of a multi-line macro. This is also used to
- * store the interiors of `%rep...%endrep' blocks, which are
- * effectively self-re-invoking multi-line macros which simply
- * don't have a name or bother to appear in the hash tables. %rep
- * blocks are signified by having a NULL `name' field.
- *
- * In a MMacro describing a `%rep' block, the `in_progress' field
- * isn't merely boolean, but gives the number of repeats left to
- * run.
- *
- * The `next' field is used for storing MMacros in hash tables; the
- * `next_active' field is for stacking them on istk entries.
- *
- * When a MMacro is being expanded, `params', `iline', `nparam',
- * `paramlen', `rotate' and `unique' are local to the invocation.
- */
-struct MMacro
-{
- MMacro *next;
- char *name;
- int casesense;
- long nparam_min, nparam_max;
- int plus; /* is the last parameter greedy? */
- int nolist; /* is this macro listing-inhibited? */
- int in_progress;
- Token *dlist; /* All defaults as one list */
- Token **defaults; /* Parameter default pointers */
- int ndefs; /* number of default parameters */
- Line *expansion;
-
- MMacro *next_active;
- MMacro *rep_nest; /* used for nesting %rep */
- Token **params; /* actual parameters */
- Token *iline; /* invocation line */
- long nparam, rotate, *paramlen;
- unsigned long unique;
- int lineno; /* Current line number on expansion */
-};
-
-/*
- * The context stack is composed of a linked list of these.
- */
-struct Context
-{
- Context *next;
- SMacro *localmac;
- char *name;
- unsigned long number;
-};
-
-/*
- * This is the internal form which we break input lines up into.
- * Typically stored in linked lists.
- *
- * Note that `type' serves a double meaning: TOK_SMAC_PARAM is not
- * necessarily used as-is, but is intended to denote the number of
- * the substituted parameter. So in the definition
- *
- * %define a(x,y) ( (x) & ~(y) )
- *
- * the token representing `x' will have its type changed to
- * TOK_SMAC_PARAM, but the one representing `y' will be
- * TOK_SMAC_PARAM+1.
- *
- * TOK_INTERNAL_STRING is a dirty hack: it's a single string token
- * which doesn't need quotes around it. Used in the pre-include
- * mechanism as an alternative to trying to find a sensible type of
- * quote to use on the filename we were passed.
- */
-struct Token
-{
- Token *next;
- char *text;
- SMacro *mac; /* associated macro for TOK_SMAC_END */
- int type;
-};
-enum
-{
- TOK_WHITESPACE = 1, TOK_COMMENT, TOK_ID, TOK_PREPROC_ID, TOK_STRING,
- TOK_NUMBER, TOK_SMAC_END, TOK_OTHER, TOK_SMAC_PARAM,
- TOK_INTERNAL_STRING
-};
-
-/*
- * Multi-line macro definitions are stored as a linked list of
- * these, which is essentially a container to allow several linked
- * lists of Tokens.
- *
- * Note that in this module, linked lists are treated as stacks
- * wherever possible. For this reason, Lines are _pushed_ on to the
- * `expansion' field in MMacro structures, so that the linked list,
- * if walked, would give the macro lines in reverse order; this
- * means that we can walk the list when expanding a macro, and thus
- * push the lines on to the `expansion' field in _istk_ in reverse
- * order (so that when popped back off they are in the right
- * order). It may seem cockeyed, and it relies on my design having
- * an even number of steps in, but it works...
- *
- * Some of these structures, rather than being actual lines, are
- * markers delimiting the end of the expansion of a given macro.
- * This is for use in the cycle-tracking and %rep-handling code.
- * Such structures have `finishes' non-NULL, and `first' NULL. All
- * others have `finishes' NULL, but `first' may still be NULL if
- * the line is blank.
- */
-struct Line
-{
- Line *next;
- MMacro *finishes;
- Token *first;
-};
-
-/*
- * To handle an arbitrary level of file inclusion, we maintain a
- * stack (ie linked list) of these things.
- */
-struct Include
-{
- Include *next;
- FILE *fp;
- Cond *conds;
- Line *expansion;
- char *fname;
- int lineno, lineinc;
- MMacro *mstk; /* stack of active macros/reps */
-};
-
-/*
- * Conditional assembly: we maintain a separate stack of these for
- * each level of file inclusion. (The only reason we keep the
- * stacks separate is to ensure that a stray `%endif' in a file
- * included from within the true branch of a `%if' won't terminate
- * it and cause confusion: instead, rightly, it'll cause an error.)
- */
-struct Cond
-{
- Cond *next;
- int state;
-};
-enum
-{
- /*
- * These states are for use just after %if or %elif: IF_TRUE
- * means the condition has evaluated to truth so we are
- * currently emitting, whereas IF_FALSE means we are not
- * currently emitting but will start doing so if a %else comes
- * up. In these states, all directives are admissible: %elif,
- * %else and %endif. (And of course %if.)
- */
- COND_IF_TRUE, COND_IF_FALSE,
- /*
- * These states come up after a %else: ELSE_TRUE means we're
- * emitting, and ELSE_FALSE means we're not. In ELSE_* states,
- * any %elif or %else will cause an error.
- */
- COND_ELSE_TRUE, COND_ELSE_FALSE,
- /*
- * This state means that we're not emitting now, and also that
- * nothing until %endif will be emitted at all. It's for use in
- * two circumstances: (i) when we've had our moment of emission
- * and have now started seeing %elifs, and (ii) when the
- * condition construct in question is contained within a
- * non-emitting branch of a larger condition construct.
- */
- COND_NEVER
-};
-#define emitting(x) ( (x) == COND_IF_TRUE || (x) == COND_ELSE_TRUE )
-
-/*
- * These defines are used as the possible return values for do_directive
- */
-#define NO_DIRECTIVE_FOUND 0
-#define DIRECTIVE_FOUND 1
-
-/*
- * Condition codes. Note that we use c_ prefix not C_ because C_ is
- * used in nasm.h for the "real" condition codes. At _this_ level,
- * we treat CXZ and ECXZ as condition codes, albeit non-invertible
- * ones, so we need a different enum...
- */
-static const char *conditions[] = {
- "a", "ae", "b", "be", "c", "cxz", "e", "ecxz", "g", "ge", "l", "le",
- "na", "nae", "nb", "nbe", "nc", "ne", "ng", "nge", "nl", "nle", "no",
- "np", "ns", "nz", "o", "p", "pe", "po", "s", "z"
-};
-enum
-{
- c_A, c_AE, c_B, c_BE, c_C, c_CXZ, c_E, c_ECXZ, c_G, c_GE, c_L, c_LE,
- c_NA, c_NAE, c_NB, c_NBE, c_NC, c_NE, c_NG, c_NGE, c_NL, c_NLE, c_NO,
- c_NP, c_NS, c_NZ, c_O, c_P, c_PE, c_PO, c_S, c_Z
-};
-static int inverse_ccs[] = {
- c_NA, c_NAE, c_NB, c_NBE, c_NC, -1, c_NE, -1, c_NG, c_NGE, c_NL, c_NLE,
- c_A, c_AE, c_B, c_BE, c_C, c_E, c_G, c_GE, c_L, c_LE, c_O, c_P, c_S,
- c_Z, c_NO, c_NP, c_PO, c_PE, c_NS, c_NZ
-};
-
-/*
- * Directive names.
- */
-static const char *directives[] = {
- "%arg",
- "%assign", "%clear", "%define", "%elif", "%elifctx", "%elifdef",
- "%elifid", "%elifidn", "%elifidni", "%elifmacro", "%elifnctx", "%elifndef",
- "%elifnid", "%elifnidn", "%elifnidni", "%elifnmacro", "%elifnnum", "%elifnstr",
- "%elifnum", "%elifstr", "%else", "%endif", "%endm", "%endmacro",
- "%endrep", "%endscope", "%error", "%exitrep", "%iassign", "%idefine", "%if",
- "%ifctx", "%ifdef", "%ifid", "%ifidn", "%ifidni", "%ifmacro", "%ifnctx",
- "%ifndef", "%ifnid", "%ifnidn", "%ifnidni", "%ifnmacro", "%ifnnum",
- "%ifnstr", "%ifnum", "%ifstr", "%imacro", "%include",
- "%ixdefine", "%line",
- "%local",
- "%macro", "%pop", "%push", "%rep", "%repl", "%rotate",
- "%scope", "%stacksize",
- "%strlen", "%substr", "%undef", "%xdefine"
-};
-enum
-{
- PP_ARG,
- PP_ASSIGN, PP_CLEAR, PP_DEFINE, PP_ELIF, PP_ELIFCTX, PP_ELIFDEF,
- PP_ELIFID, PP_ELIFIDN, PP_ELIFIDNI, PP_ELIFMACRO, PP_ELIFNCTX, PP_ELIFNDEF,
- PP_ELIFNID, PP_ELIFNIDN, PP_ELIFNIDNI, PP_ELIFNMACRO, PP_ELIFNNUM, PP_ELIFNSTR,
- PP_ELIFNUM, PP_ELIFSTR, PP_ELSE, PP_ENDIF, PP_ENDM, PP_ENDMACRO,
- PP_ENDREP, PP_ENDSCOPE, PP_ERROR, PP_EXITREP, PP_IASSIGN, PP_IDEFINE, PP_IF,
- PP_IFCTX, PP_IFDEF, PP_IFID, PP_IFIDN, PP_IFIDNI, PP_IFMACRO, PP_IFNCTX,
- PP_IFNDEF, PP_IFNID, PP_IFNIDN, PP_IFNIDNI, PP_IFNMACRO, PP_IFNNUM,
- PP_IFNSTR, PP_IFNUM, PP_IFSTR, PP_IMACRO, PP_INCLUDE,
- PP_IXDEFINE, PP_LINE,
- PP_LOCAL,
- PP_MACRO, PP_POP, PP_PUSH, PP_REP, PP_REPL, PP_ROTATE,
- PP_SCOPE, PP_STACKSIZE,
- PP_STRLEN, PP_SUBSTR, PP_UNDEF, PP_XDEFINE
-};
-
-/* If this is a an IF, ELIF, ELSE or ENDIF keyword */
-static int is_condition(int arg)
-{
- return ((arg >= PP_ELIF) && (arg <= PP_ENDIF)) ||
- ((arg >= PP_IF) && (arg <= PP_IFSTR));
-}
-
-/* For TASM compatibility we need to be able to recognise TASM compatible
- * conditional compilation directives. Using the NASM pre-processor does
- * not work, so we look for them specifically from the following list and
- * then jam in the equivalent NASM directive into the input stream.
- */
-
-#ifndef MAX
-# define MAX(a,b) ( ((a) > (b)) ? (a) : (b))
-#endif
-
-enum
-{
- TM_ARG, TM_ELIF, TM_ELSE, TM_ENDIF, TM_IF, TM_IFDEF, TM_IFDIFI,
- TM_IFNDEF, TM_INCLUDE, TM_LOCAL,
- TM_REPT, TM_IRP, TM_MACRO,
- TM_STRUC, TM_SEGMENT
-};
-
-static const char *tasm_directives[] = {
- "arg", "elif", "else", "endif", "if", "ifdef", "ifdifi",
- "ifndef", "include", "local"
-};
-
-static int StackSize = 4;
-static const char *StackPointer = "ebp";
-static int ArgOffset = 8;
-static int LocalOffset = 4;
-static int Level = 0;
-
-
-static Context *cstk;
-static Include *istk;
-
-static FILE *first_fp = NULL;
-
-static efunc _error; /* Pointer to client-provided error reporting function */
-static evalfunc evaluate;
-
-static int pass; /* HACK: pass 0 = generate dependencies only */
-
-static unsigned long unique; /* unique identifier numbers */
-
-static Line *builtindef = NULL;
-static Line *stddef = NULL;
-static Line *predef = NULL;
-static int first_line = 1;
-
-static ListGen *list;
-
-/*
- * The number of hash values we use for the macro lookup tables.
- * FIXME: We should *really* be able to configure this at run time,
- * or even have the hash table automatically expanding when necessary.
- */
-#define NHASH 4096
-
-/*
- * The current set of multi-line macros we have defined.
- */
-static MMacro *mmacros[NHASH];
-
-/*
- * The current set of single-line macros we have defined.
- */
-static SMacro *smacros[NHASH];
-
-/*
- * The multi-line macro we are currently defining, or the %rep
- * block we are currently reading, if any.
- */
-static MMacro *defining;
-
-/*
- * The number of macro parameters to allocate space for at a time.
- */
-#define PARAM_DELTA 16
-
-/*
- * Macros to make NASM ignore some TASM directives before the first include
- * directive.
- */
-static const char *tasm_compat_macros[] =
-{
- "%idefine IDEAL",
- "%idefine JUMPS",
- "%idefine END",
- "%idefine P8086 CPU 8086",
- "%idefine P186 CPU 186",
- "%idefine P286 CPU 286",
- "%idefine P286N CPU 286",
- "%idefine P286P CPU 286 Priv",
- "%idefine P386 CPU 386",
- "%idefine P386N CPU 386",
- "%idefine P386P CPU 386 Priv",
- "%idefine P486 CPU 486",
- "%idefine P586 CPU 586",
- "%idefine .8086 CPU 8086",
- "%idefine .186 CPU 186",
- "%idefine .286 CPU 286",
- "%idefine .286C CPU 286",
- "%idefine .286P CPU 286",
- "%idefine .386 CPU 386",
- "%idefine .386C CPU 386",
- "%idefine .386P CPU 386",
- "%idefine .486 CPU 486",
- "%idefine .486C CPU 486",
- "%idefine .486P CPU 486",
- "%idefine .586 CPU 586",
- "%idefine .586C CPU 586",
- "%idefine .586P CPU 586",
- "",
- "%imacro TITLE 1",
- "%endm",
- "%imacro NAME 1",
- "%endm",
- "",
- "%imacro EXTRN 1-*.nolist",
- "%rep %0",
- "[extern %1]",
- "%rotate 1",
- "%endrep",
- "%endmacro",
- "",
- "%imacro PUBLIC 1-*.nolist",
- "%rep %0",
- "[global %1]",
- "%rotate 1",
- "%endrep",
- "%endmacro",
- "",
- "; this is not needed",
- "%idefine PTR",
- NULL
-};
-
-static int nested_mac_count, nested_rep_count;
-
-/*
- * Tokens are allocated in blocks to improve speed
- */
-#define TOKEN_BLOCKSIZE 4096
-static Token *freeTokens = NULL;
-struct Blocks {
- Blocks *next;
- void *chunk;
-};
-
-static Blocks blocks = { NULL, NULL };
-
-/*
- * Forward declarations.
- */
-static Token *expand_mmac_params(Token * tline);
-static Token *expand_smacro(Token * tline);
-static Token *expand_id(Token * tline);
-static Context *get_ctx(char *name, int all_contexts);
-static void make_tok_num(Token * tok, yasm_intnum *val);
-static void error(int severity, const char *fmt, ...);
-static void *new_Block(size_t size);
-static void delete_Blocks(void);
-static Token *new_Token(Token * next, int type, const char *text,
- size_t txtlen);
-static Token *delete_Token(Token * t);
-static Token *tokenise(char *line);
-
-/*
- * Macros for safe checking of token pointers, avoid *(NULL)
- */
-#define tok_type_(x,t) ((x) && (x)->type == (t))
-#define skip_white_(x) if (tok_type_((x), TOK_WHITESPACE)) (x)=(x)->next
-#define tok_is_(x,v) (tok_type_((x), TOK_OTHER) && !strcmp((x)->text,(v)))
-#define tok_isnt_(x,v) ((x) && ((x)->type!=TOK_OTHER || strcmp((x)->text,(v))))
-
-/* Handle TASM specific directives, which do not contain a % in
- * front of them. We do it here because I could not find any other
- * place to do it for the moment, and it is a hack (ideally it would
- * be nice to be able to use the NASM pre-processor to do it).
- */
-
-typedef struct TMEndItem {
- int type;
- void *data;
- struct TMEndItem *next;
-} TMEndItem;
-
-static TMEndItem *EndmStack = NULL, *EndsStack = NULL;
-
-char **TMParameters;
-
-struct TStrucField {
- char *name;
- char *type;
- struct TStrucField *next;
-};
-struct TStruc {
- char *name;
- struct TStrucField *fields, *lastField;
- struct TStruc *next;
-};
-static struct TStruc *TStrucs = NULL;
-static int inTstruc = 0;
-
-struct TSegmentAssume {
- char *segreg;
- char *segment;
-};
-struct TSegmentAssume *TAssumes;
-
-const char *tasm_get_segment_register(const char *segment)
-{
- struct TSegmentAssume *assume;
- if (!TAssumes)
- return NULL;
- for (assume = TAssumes; assume->segreg; assume++) {
- if (!strcmp(assume->segment, segment))
- break;
- }
- return assume->segreg;
-}
-
-static char *
-check_tasm_directive(char *line)
-{
- int i, j, k, m;
- size_t len, len2;
- char *p, *oldline, oldchar, *q, oldchar2;
- TMEndItem *end;
-
- p = line;
-
- /* Skip whitespace */
- while (isspace(*p) && *p != 0 && *p != ';')
- p++;
-
- /* Ignore nasm directives */
- if (*p == '%')
- return line;
-
- /* Binary search for the directive name */
- len = 0;
- while (!isspace(p[len]) && p[len] != 0 && p[len] != ';')
- len++;
- if (!len)
- return line;
-
- oldchar = p[len];
- p[len] = 0;
- i = -1;
- j = elements(tasm_directives);
- while (j - i > 1)
- {
- k = (j + i) / 2;
- m = nasm_stricmp(p, tasm_directives[k]);
- if (m == 0)
- {
- /* We have found a directive, so jam a % in front of it
- * so that NASM will then recognise it as one if it's own.
- */
- p[len] = oldchar;
- len = strlen(p);
- oldline = line;
- if (k == TM_IFDIFI)
- {
- /* NASM does not recognise IFDIFI, so we convert it to
- * %ifdef BOGUS. This is not used in NASM comaptible
- * code, but does need to parse for the TASM macro
- * package.
- */
- line = nasm_malloc(13);
- strcpy(line, "%ifdef BOGUS");
- }
- else if (k == TM_INCLUDE)
- {
- /* add double quotes around file name */
- p += 7 + 1;
- while (isspace(*p) && *p)
- p++;
- len = strlen(p);
- line = nasm_malloc(1 + 7 + 1 + 1 + len + 1 + 1);
- sprintf(line, "%%include \"%s\"", p);
- }
- else
- {
- line = nasm_malloc(len + 2);
- line[0] = '%';
- memcpy(line + 1, p, len + 1);
- }
- nasm_free(oldline);
- return line;
- }
- else if (m < 0)
- {
- j = k;
- }
- else
- i = k;
- }
-
- /* Not a simple directive */
-
- if (!nasm_stricmp(p, "endm")) {
- /* handle end of endm directive */
- char **parameter;
- end = EndmStack;
- /* undef parameters */
- if (!end) {
- error(ERR_FATAL, "ENDM: not in an endm context");
- return line;
- }
- EndmStack = EndmStack->next;
- nasm_free(line);
- switch (end->type) {
- case TM_MACRO:
- len = 0;
- for (parameter = end->data; *parameter; parameter++)
- len += 6 + 1 + strlen(*parameter) + 1;
- len += 5 + 1;
- line = nasm_malloc(len);
- p = line;
- for (parameter = end->data; *parameter; parameter++) {
- p += sprintf(p, "%%undef %s\n", *parameter);
- nasm_free(*parameter);
- }
- nasm_free(end->data);
- nasm_free(end);
- sprintf(p, "%%endm");
- return line;
- case TM_REPT:
- nasm_free(end);
- return nasm_strdup("%endrep");
- case TM_IRP: {
- char **data;
- const char *irp_format =
- "%%undef %s\n"
- "%%rotate 1\n"
- "%%endrep\n"
- "%%endm\n"
- "irp %s\n"
- "%%undef irp";
- data = end->data;
- line = nasm_malloc(strlen(irp_format) - 4 + strlen(data[0])
- + strlen(data[1]));
- sprintf(line, irp_format, data[0], data[1]);
- nasm_free(data[0]);
- nasm_free(data[1]);
- nasm_free(data);
- return line;
- }
- default:
- error(ERR_FATAL, "ENDM: bogus endm context type %d\n",end->type);
- return NULL;
- }
- } else if (!nasm_stricmp(p, "end")) {
- nasm_free(line);
- return nasm_strdup("");
- } else if (!nasm_stricmp(p, "rept")) {
- /* handle repeat directive */
- end = nasm_malloc(sizeof(*end));
- end->type = TM_REPT;
- end->next = EndmStack;
- EndmStack = end;
- memcpy(p, "%rep", 4);
- p[len] = oldchar;
- return line;
- } else if (!nasm_stricmp(p, "locals")) {
- tasm_locals = 1;
- nasm_free(line);
- return nasm_strdup("");
- }
-
- if (!oldchar)
- return line;
-
- /* handle two-words directives */
- q = p + len + 1;
- /* Skip whitespaces */
- while (isspace(*q) && *q)
- q++;
-
- len2 = 0;
- while (!isspace(q[len2]) && q[len2]!=',' && q[len2] != 0)
- len2++;
- oldchar2 = q[len2];
- q[len2] = '\0';
-
- if (!nasm_stricmp(p, "irp")) {
- /* handle indefinite repeat directive */
- const char *irp_format =
- "%%imacro irp 0-*\n"
- "%%rep %%0\n"
- "%%define %s %%1\n";
- char **data;
-
- data = malloc(2*sizeof(char*));
- oldline = line;
- line = nasm_malloc(strlen(irp_format) - 2 + len2 + 1);
- sprintf(line,irp_format,q);
- data[0] = nasm_strdup(q);
-
- if (!oldchar2)
- error(ERR_FATAL, "%s: expected <values>", q + len2);
- p = strchr(q + len2 + 1, '<');
- if (!p)
- error(ERR_FATAL, "%s: expected <values>", q + len2);
- p++;
- q = strchr(p, '>');
- data[1] = nasm_strndup(p, q - p);
-
- end = nasm_malloc(sizeof(*end));
- end->type = TM_IRP;
- end->next = EndmStack;
- end->data = data;
- EndmStack = end;
-
- nasm_free(oldline);
- return line;
- } else if (!nasm_stricmp(q, "macro")) {
- char *name = p;
- /* handle MACRO */
- /* count parameters */
- j = 1;
- i = 0;
- TMParameters = nasm_malloc(j*sizeof(*TMParameters));
- len = 0;
- p = q + len2 + 1;
- /* Skip whitespaces */
- while (isspace(*p) && *p)
- p++;
- while (*p) {
- /* Get parameter name */
- for (q = p; !isspace(*q) && *q != ',' && *q; q++);
- len2 = q-p;
- if (len2 == 0)
- error(ERR_FATAL, "'%s': expected parameter name", p);
- TMParameters[i] = nasm_malloc(len2 + 1);
- memcpy(TMParameters[i], p, len2);
- TMParameters[i][len2] = '\0';
- len += len2;
- i++;
- if (i + 1 > j) {
- j *= 2;
- TMParameters = nasm_realloc(TMParameters,
- j*sizeof(*TMParameters));
- }
- if (i == 1000)
- error(ERR_FATAL, "too many parameters for macro %s", name);
- p = q;
- while (isspace(*p) && *p)
- p++;
- if (!*p)
- break;
- if (*p != ',')
- error(ERR_FATAL, "expected comma");
- p++;
- while (isspace(*p) && *p)
- p++;
- }
- TMParameters[i] = NULL;
- TMParameters = nasm_realloc(TMParameters,
- (i+1)*sizeof(*TMParameters));
- len += 1 + 6 + 1 + strlen(name) + 1 + 3; /* macro definition */
- len += i * (1 + 9 + 1 + 1 + 1 + 3 + 2); /* macro parameter definition */
- oldline = line;
- p = line = nasm_malloc(len + 1);
- p += sprintf(p, "%%imacro %s 0-*", name);
- nasm_free(oldline);
- for (j = 0; TMParameters[j]; j++) {
- p += sprintf(p, "\n%%idefine %s %%{%-u}", TMParameters[j], j + 1);
- }
- end = nasm_malloc(sizeof(*end));
- end->type = TM_MACRO;
- end->next = EndmStack;
- end->data = TMParameters;
- EndmStack = end;
- return line;
- } else if (!nasm_stricmp(q, "proc")) {
- /* handle PROC */
- oldline = line;
- line = nasm_malloc(2 + len + 1);
- sprintf(line, "..%s",p);
- nasm_free(oldline);
- return line;
- } else if (!nasm_stricmp(q, "struc")) {
- /* handle struc */
- struct TStruc *struc;
- if (inTstruc) {
- error(ERR_FATAL, "STRUC: already in a struc context");
- return line;
- }
- oldline = line;
- line = nasm_malloc(5 + 1 + len + 1);
- sprintf(line, "struc %s", p);
- struc = malloc(sizeof(*struc));
- struc->name = nasm_strdup(p);
- struc->fields = NULL;
- struc->lastField = NULL;
- struc->next = TStrucs;
- TStrucs = struc;
- inTstruc = 1;
- nasm_free(oldline);
- end = nasm_malloc(sizeof(*end));
- end->type = TM_STRUC;
- end->next = EndsStack;
- EndsStack = end;
- return line;
- } else if (!nasm_stricmp(q, "segment")) {
- /* handle SEGMENT */
- oldline = line;
- line = nasm_strdup(oldchar2?q+len2+1:"");
- if (tasm_segment) {
- error(ERR_FATAL, "SEGMENT: already in a segment context");
- return line;
- }
- tasm_segment = nasm_strdup(p);
- nasm_free(oldline);
- end = nasm_malloc(sizeof(*end));
- end->type = TM_SEGMENT;
- end->next = EndsStack;
- EndsStack = end;
- return line;
- } else if (!nasm_stricmp(p, "ends") || !nasm_stricmp(q, "ends")) {
- /* handle end of ends directive */
- end = EndsStack;
- /* undef parameters */
- if (!end) {
- error(ERR_FATAL, "ENDS: not in an ends context");
- return line;
- }
- EndsStack = EndsStack->next;
- nasm_free(line);
- switch (end->type) {
- case TM_STRUC:
- inTstruc = 0;
- return nasm_strdup("endstruc");
- case TM_SEGMENT:
- /* XXX: yes, we leak memory here, but that permits labels
- * to avoid strduping... */
- tasm_segment = NULL;
- return nasm_strdup("");
- default:
- error(ERR_FATAL, "ENDS: bogus ends context type %d",end->type);
- return NULL;
- }
- } else if (!nasm_stricmp(p, "endp") || !nasm_stricmp(q, "endp")) {
- nasm_free(line);
- return nasm_strdup("");
- } else if (!nasm_stricmp(p, "assume")) {
- struct TSegmentAssume *assume;
- /* handle ASSUME */
- if (!TAssumes) {
- TAssumes = nasm_malloc(sizeof(*TAssumes));
- TAssumes[0].segreg = NULL;
- }
- i = 0;
- q[len2] = oldchar2;
- /* Skip whitespaces */
- while (isspace(*q) && *q)
- q++;
- while (*q && *q != ';') {
- p = q;
- for (; *q && *q != ';' && *q != ':' && !isspace(*q); q++);
- if (!*q || *q == ';')
- break;
- /* segment register name */
- for (assume = TAssumes; assume->segreg; assume++)
- if (strlen(assume->segreg) == (size_t)(q-p) &&
- !yasm__strncasecmp(assume->segreg, p, q-p))
- break;
- if (!assume->segreg) {
- i = assume - TAssumes + 1;
- TAssumes = nasm_realloc(TAssumes, (i+1)*sizeof(*TAssumes));
- assume = TAssumes + i - 1;
- assume->segreg = nasm_strndup(p, q-p);
- assume[1].segreg = NULL;
- }
- for (; *q && *q != ';' && *q != ':' && isspace(*q); q++);
- if (*q != ':')
- error(ERR_FATAL, "expected `:' instead of `%c'", *q);
- for (q++; *q && isspace(*q); q++);
-
- /* segment name */
- p = q;
- for (; *q && *q != ';' && *q != ',' && !isspace(*q); q++);
- assume->segment = nasm_strndup(p, q-p);
- for (; *q && isspace(*q); q++);
- if (*q && *q != ';' && *q != ',')
- error(ERR_FATAL, "expected `,' instead of `%c'", *q);
-
- if (*q && *q != ';')
- q++;
- for (; *q && isspace(*q); q++);
- }
- TAssumes[i].segreg = NULL;
- TAssumes = nasm_realloc(TAssumes, (i+1)*sizeof(*TAssumes));
- nasm_free(line);
- return nasm_strdup("");
- } else if (inTstruc) {
- struct TStrucField *field;
- /* TODO: handle unnamed data */
- field = nasm_malloc(sizeof(*field));
- field->name = nasm_strdup(p);
- /* TODO: type struc ! */
- field->type = nasm_strdup(q);
- field->next = NULL;
- if (!TStrucs->fields)
- TStrucs->fields = field;
- else if (TStrucs->lastField)
- TStrucs->lastField->next = field;
- TStrucs->lastField = field;
- if (!oldchar2) {
- error(ERR_FATAL, "Expected struc field initializer after %s %s", p, q);
- return line;
- }
- oldline = line;
- line = nasm_malloc(1 + len + 1 + len2 + 1 + strlen(q+len2+1) + 1);
- sprintf(line, ".%s %s %s", p, q, q+len2+1);
- nasm_free(oldline);
- return line;
- }
- {
- struct TStruc *struc;
- for (struc = TStrucs; struc; struc = struc->next) {
- if (!yasm__strcasecmp(q, struc->name)) {
- char *r = q + len2 + 1, *s, *t, tasm_param[6];
- struct TStrucField *field = struc->fields;
- int size, n;
- if (!oldchar2) {
- error(ERR_FATAL, "Expected struc field initializer after %s %s", p, q);
- return line;
- }
- r = strchr(r, '<');
- if (!r) {
- error(ERR_FATAL, "Expected < for struc field initializer in %s %s %s", p, q, r);
- return line;
- }
- t = strchr(r + 1, '>');
- if (!t) {
- error(ERR_FATAL, "Expected > for struc field initializer in %s %s %s", p, q, r);
- return line;
- }
- *t = 0;
- oldline = line;
- size = len + len2 + 128;
- line = nasm_malloc(size);
- if (defining)
- for (n=0;TMParameters[n];n++)
- if (!strcmp(TMParameters[n],p)) {
- sprintf(tasm_param,"%%{%d}",n+1);
- p = tasm_param;
- break;
- }
- n = sprintf(line, "%s: istruc %s\n", p, q);
- /* use initialisers */
- while ((s = strchr(r + 1, ','))) {
- if (!field) {
- error(ERR_FATAL, "Too many initializers in structure %s %s", p, q);
- return oldline;
- }
- *s = 0;
- m = strlen(p) + 1 + strlen(field->name)*2 + 8 +
- strlen(field->type) + 1 + strlen(r+1) + 2;
- size += m;
- line = nasm_realloc(line, size);
- sprintf(line + n, "%s.%s: at .%s, %s %s\n",
- p, field->name, field->name, field->type, r + 1);
- n += m-1;
- r = s;
- field = field->next;
- }
- /* complete with last initializer and '?' */
- while(field) {
- m = strlen(p) + 1 + strlen(field->name)*2 + 8 +
- strlen(field->type) + 1 + (r ? strlen(r+1) : 1) + 2;
- size += m;
- line = nasm_realloc(line, size);
- sprintf(line + n, "%s.%s: at .%s, %s %s\n", p, field->name,
- field->name, field->type, r ? r + 1: "?");
- n += m-1;
- r = NULL;
- field = field->next;
- }
- line = nasm_realloc(line, n + 5);
- sprintf(line + n, "iend");
- nasm_free(oldline);
- return line;
- }
- }
- }
-
- q[len2] = oldchar2;
- p[len] = oldchar;
-
- return line;
-}
-
-static Token * tasm_join_tokens(Token *tline)
-{
- Token *t, *prev, *next;
- for (prev = NULL, t = tline; t; prev = t, t = next) {
- next = t->next;
- if (t->type == TOK_OTHER && !strcmp(t->text,"&")) {
- if (!prev)
- error(ERR_FATAL, "no token before &");
- else if (!next)
- error(ERR_FATAL, "no token after &");
- else if (prev->type != next->type)
- error(ERR_FATAL, "can't handle different types of token around &");
- else if (!prev->text || !next->text)
- error(ERR_FATAL, "can't handle empty token around &");
- else {
- int lenp = strlen(prev->text);
- int lenn = strlen(next->text);
- prev->text = nasm_realloc(prev->text, lenp + lenn + 1);
- strncpy(prev->text + lenp, next->text, lenn + 1);
- (void) delete_Token(t);
- prev->next = delete_Token(next);
- t = prev;
- next = t->next;
- }
- }
- }
- return tline;
-}
-
-/*
- * The pre-preprocessing stage... This function translates line
- * number indications as they emerge from GNU cpp (`# lineno "file"
- * flags') into NASM preprocessor line number indications (`%line
- * lineno file').
- */
-static char *
-prepreproc(char *line)
-{
- int lineno;
- size_t fnlen;
- char *fname, *oldline;
- char *c, *d, *ret;
- Line *l, **lp;
-
- if (line[0] == '#' && line[1] == ' ')
- {
- oldline = line;
- fname = oldline + 2;
- lineno = atoi(fname);
- fname += strspn(fname, "0123456789 ");
- if (*fname == '"')
- fname++;
- fnlen = strcspn(fname, "\"");
- line = nasm_malloc(20 + fnlen);
- sprintf(line, "%%line %d %.*s", lineno, (int)fnlen, fname);
- nasm_free(oldline);
- }
- if (tasm_compatible_mode)
- line = check_tasm_directive(line);
-
- if (!(c = strchr(line, '\n')))
- return line;
-
- /* Turn multiline macros into several lines */
- *c = '\0';
- ret = nasm_strdup(line);
-
- lp = &istk->expansion;
- do {
- d = strchr(c+1, '\n');
- if (d)
- *d = '\0';
- l = malloc(sizeof(*l));
- l -> first = tokenise(c+1);
- l -> finishes = NULL;
- l -> next = *lp;
- *lp = l;
- c = d;
- lp = &l -> next;
- } while (c);
- nasm_free(line);
- return ret;
-}
-
-/*
- * The hash function for macro lookups. Note that due to some
- * macros having case-insensitive names, the hash function must be
- * invariant under case changes. We implement this by applying a
- * perfectly normal hash function to the uppercase of the string.
- */
-static int
-hash(char *s)
-{
- unsigned int h = 0;
- unsigned int i = 0;
- /*
- * Powers of three, mod 31.
- */
- static const int multipliers[] = {
- 1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10,
- 30, 28, 22, 4, 12, 5, 15, 14, 11, 2, 6, 18, 23, 7, 21
- };
-
-
- while (*s)
- {
- h += multipliers[i] * (unsigned char) (toupper(*s));
- s++;
- if (++i >= elements(multipliers))
- i = 0;
- }
- h %= NHASH;
- return h;
-}
-
-/*
- * Free a linked list of tokens.
- */
-static void
-free_tlist(Token * list_)
-{
- while (list_)
- {
- list_ = delete_Token(list_);
- }
-}
-
-/*
- * Free a linked list of lines.
- */
-static void
-free_llist(Line * list_)
-{
- Line *l;
- while (list_)
- {
- l = list_;
- list_ = list_->next;
- free_tlist(l->first);
- nasm_free(l);
- }
-}
-
-/*
- * Free an MMacro
- */
-static void
-free_mmacro(MMacro * m)
-{
- nasm_free(m->name);
- free_tlist(m->dlist);
- nasm_free(m->defaults);
- free_llist(m->expansion);
- nasm_free(m);
-}
-
-/*
- * Pop the context stack.
- */
-static void
-ctx_pop(void)
-{
- Context *c = cstk;
- SMacro *smac, *s;
-
- cstk = cstk->next;
- smac = c->localmac;
- while (smac)
- {
- s = smac;
- smac = smac->next;
- nasm_free(s->name);
- free_tlist(s->expansion);
- nasm_free(s);
- }
- nasm_free(c->name);
- nasm_free(c);
-}
-
-#define BUF_DELTA 512
+ * Note that in this module, linked lists are treated as stacks
+ * wherever possible. For this reason, Lines are _pushed_ on to the
+ * `expansion' field in MMacro structures, so that the linked list,
+ * if walked, would give the macro lines in reverse order; this
+ * means that we can walk the list when expanding a macro, and thus
+ * push the lines on to the `expansion' field in _istk_ in reverse
+ * order (so that when popped back off they are in the right
+ * order). It may seem cockeyed, and it relies on my design having
+ * an even number of steps in, but it works...
+ *
+ * Some of these structures, rather than being actual lines, are
+ * markers delimiting the end of the expansion of a given macro.
+ * This is for use in the cycle-tracking and %rep-handling code.
+ * Such structures have `finishes' non-NULL, and `first' NULL. All
+ * others have `finishes' NULL, but `first' may still be NULL if
+ * the line is blank.
+ */
+struct Line
+{
+ Line *next;
+ MMacro *finishes;
+ Token *first;
+};
+
+/*
+ * To handle an arbitrary level of file inclusion, we maintain a
+ * stack (ie linked list) of these things.
+ */
+struct Include
+{
+ Include *next;
+ FILE *fp;
+ Cond *conds;
+ Line *expansion;
+ char *fname;
+ int lineno, lineinc;
+ MMacro *mstk; /* stack of active macros/reps */
+};
+
+/*
+ * Conditional assembly: we maintain a separate stack of these for
+ * each level of file inclusion. (The only reason we keep the
+ * stacks separate is to ensure that a stray `%endif' in a file
+ * included from within the true branch of a `%if' won't terminate
+ * it and cause confusion: instead, rightly, it'll cause an error.)
+ */
+struct Cond
+{
+ Cond *next;
+ int state;
+};
+enum
+{
+ /*
+ * These states are for use just after %if or %elif: IF_TRUE
+ * means the condition has evaluated to truth so we are
+ * currently emitting, whereas IF_FALSE means we are not
+ * currently emitting but will start doing so if a %else comes
+ * up. In these states, all directives are admissible: %elif,
+ * %else and %endif. (And of course %if.)
+ */
+ COND_IF_TRUE, COND_IF_FALSE,
+ /*
+ * These states come up after a %else: ELSE_TRUE means we're
+ * emitting, and ELSE_FALSE means we're not. In ELSE_* states,
+ * any %elif or %else will cause an error.
+ */
+ COND_ELSE_TRUE, COND_ELSE_FALSE,
+ /*
+ * This state means that we're not emitting now, and also that
+ * nothing until %endif will be emitted at all. It's for use in
+ * two circumstances: (i) when we've had our moment of emission
+ * and have now started seeing %elifs, and (ii) when the
+ * condition construct in question is contained within a
+ * non-emitting branch of a larger condition construct.
+ */
+ COND_NEVER
+};
+#define emitting(x) ( (x) == COND_IF_TRUE || (x) == COND_ELSE_TRUE )
+
/*
- * Read a line from the top file in istk, handling multiple CR/LFs
- * at the end of the line read, and handling spurious ^Zs. Will
- * return lines from the standard macro set if this has not already
- * been done.
- */
-static char *
-read_line(void)
-{
- char *buffer, *p, *q;
- int bufsize, continued_count;
-
- bufsize = BUF_DELTA;
- buffer = nasm_malloc(BUF_DELTA);
- p = buffer;
- continued_count = 0;
- while (1)
- {
- q = fgets(p, bufsize - (int)(p - buffer), istk->fp);
- if (!q)
- break;
- p += strlen(p);
- if (p > buffer && p[-1] == '\n')
- {
- /* Convert backslash-CRLF line continuation sequences into
- nothing at all (for DOS and Windows) */
- if (((p - 2) > buffer) && (p[-3] == '\\') && (p[-2] == '\r')) {
- p -= 3;
- *p = 0;
- continued_count++;
- }
- /* Also convert backslash-LF line continuation sequences into
- nothing at all (for Unix) */
- else if (((p - 1) > buffer) && (p[-2] == '\\')) {
- p -= 2;
- *p = 0;
- continued_count++;
- }
- else {
- break;
- }
- }
- if (p - buffer > bufsize - 10)
- {
- long offset = (long)(p - buffer);
- bufsize += BUF_DELTA;
- buffer = nasm_realloc(buffer, (size_t)bufsize);
- p = buffer + offset; /* prevent stale-pointer problems */
- }
- }
-
- if (!q && p == buffer)
- {
- nasm_free(buffer);
- return NULL;
- }
-
- nasm_src_set_linnum(nasm_src_get_linnum() + istk->lineinc + (continued_count * istk->lineinc));
-
- /*
- * Play safe: remove CRs as well as LFs, if any of either are
- * present at the end of the line.
- */
- while (--p >= buffer && (*p == '\n' || *p == '\r'))
- *p = '\0';
-
- /*
- * Handle spurious ^Z, which may be inserted into source files
- * by some file transfer utilities.
- */
- buffer[strcspn(buffer, "\032")] = '\0';
-
- list->line(LIST_READ, buffer);
-
- return buffer;
-}
-
-/*
- * Tokenise a line of text. This is a very simple process since we
- * don't need to parse the value out of e.g. numeric tokens: we
- * simply split one string into many.
- */
-static Token *
-tokenise(char *line)
-{
- char *p = line;
- int type;
- Token *list_ = NULL;
- Token *t, **tail = &list_;
-
- while (*line)
- {
- p = line;
- if (*p == '%')
- {
- p++;
- if ( isdigit(*p) ||
- ((*p == '-' || *p == '+') && isdigit(p[1])) ||
- ((*p == '+') && (isspace(p[1]) || !p[1])))
- {
- do
- {
- p++;
- }
- while (isdigit(*p));
- type = TOK_PREPROC_ID;
- }
- else if (*p == '{')
- {
- p++;
- while (*p && *p != '}')
- {
- p[-1] = *p;
- p++;
- }
- p[-1] = '\0';
- if (*p)
- p++;
- type = TOK_PREPROC_ID;
- }
- else if (isidchar(*p) ||
- ((*p == '!' || *p == '%' || *p == '$') &&
- isidchar(p[1])))
- {
- do
- {
- p++;
- }
- while (isidchar(*p));
- type = TOK_PREPROC_ID;
- }
- else
- {
- type = TOK_OTHER;
- if (*p == '%')
- p++;
- }
- }
- else if (isidstart(*p) || (*p == '$' && isidstart(p[1])))
- {
- type = TOK_ID;
- p++;
- while (*p && isidchar(*p))
- p++;
- }
- else if (*p == '\'' || *p == '"')
- {
- /*
- * A string token.
- */
- char c = *p;
- p++;
- type = TOK_STRING;
- while (*p && *p != c)
- p++;
-
- if (*p)
- {
- p++;
- }
- else
- {
- error(ERR_WARNING, "unterminated string");
- type = -1;
- }
- }
- else if (isnumstart(*p))
- {
- /*
- * A number token.
- */
- type = TOK_NUMBER;
- p++;
- while (*p && isnumchar(*p))
- p++;
- }
- else if (isspace(*p))
- {
- type = TOK_WHITESPACE;
- p++;
- while (*p && isspace(*p))
- p++;
- /*
- * Whitespace just before end-of-line is discarded by
- * pretending it's a comment; whitespace just before a
- * comment gets lumped into the comment.
- */
- if (!*p || *p == ';')
- {
- type = TOK_COMMENT;
- while (*p)
- p++;
- }
- }
- else if (*p == ';')
- {
- type = TOK_COMMENT;
- while (*p)
- p++;
- }
- else
- {
- /*
- * Anything else is an operator of some kind. We check
- * for all the double-character operators (>>, <<, //,
- * %%, <=, >=, ==, !=, <>, &&, ||, ^^), but anything
- * else is a single-character operator.
- */
- type = TOK_OTHER;
- if ((p[0] == '>' && p[1] == '>') ||
- (p[0] == '<' && p[1] == '<') ||
- (p[0] == '/' && p[1] == '/') ||
- (p[0] == '<' && p[1] == '=') ||
- (p[0] == '>' && p[1] == '=') ||
- (p[0] == '=' && p[1] == '=') ||
- (p[0] == '!' && p[1] == '=') ||
- (p[0] == '<' && p[1] == '>') ||
- (p[0] == '&' && p[1] == '&') ||
- (p[0] == '|' && p[1] == '|') ||
- (p[0] == '^' && p[1] == '^'))
- {
- p++;
- }
- p++;
- }
-
- /* Handle unterminated string */
- if (type == -1)
- {
- *tail = t = new_Token(NULL, TOK_STRING, line, (size_t)(p-line)+1);
- t->text[p-line] = *line;
- tail = &t->next;
- }
- else if (type != TOK_COMMENT)
- {
- *tail = t = new_Token(NULL, type, line, (size_t)(p - line));
- tail = &t->next;
- }
- line = p;
- }
- return list_;
-}
-
-/*
- * this function allocates a new managed block of memory and
- * returns a pointer to the block. The managed blocks are
- * deleted only all at once by the delete_Blocks function.
- */
-static void *
-new_Block(size_t size)
-{
- Blocks *b = &blocks;
-
- /* first, get to the end of the linked list */
- while (b->next)
- b = b->next;
- /* now allocate the requested chunk */
- b->chunk = nasm_malloc(size);
-
- /* now allocate a new block for the next request */
- b->next = nasm_malloc(sizeof(Blocks));
- /* and initialize the contents of the new block */
- b->next->next = NULL;
- b->next->chunk = NULL;
- return b->chunk;
-}
-
-/*
- * this function deletes all managed blocks of memory
- */
-static void
-delete_Blocks(void)
-{
- Blocks *a,*b = &blocks;
-
- /*
- * keep in mind that the first block, pointed to by blocks
- * is a static and not dynamically allocated, so we don't
- * free it.
- */
- while (b)
- {
- if (b->chunk)
- nasm_free(b->chunk);
- a = b;
- b = b->next;
- if (a != &blocks)
- nasm_free(a);
- }
-}
-
-/*
- * this function creates a new Token and passes a pointer to it
- * back to the caller. It sets the type and text elements, and
- * also the mac and next elements to NULL.
- */
-static Token *
-new_Token(Token * next, int type, const char *text, size_t txtlen)
-{
- Token *t;
- int i;
-
- if (freeTokens == NULL)
- {
- freeTokens = (Token *)new_Block(TOKEN_BLOCKSIZE * sizeof(Token));
- for (i = 0; i < TOKEN_BLOCKSIZE - 1; i++)
- freeTokens[i].next = &freeTokens[i + 1];
- freeTokens[i].next = NULL;
- }
- t = freeTokens;
- freeTokens = t->next;
- t->next = next;
- t->mac = NULL;
- t->type = type;
- if (type == TOK_WHITESPACE || text == NULL)
- {
- t->text = NULL;
- }
- else
- {
- if (txtlen == 0)
- txtlen = strlen(text);
- t->text = nasm_malloc(1 + txtlen);
- strncpy(t->text, text, txtlen);
- t->text[txtlen] = '\0';
- }
- return t;
-}
-
-static Token *
-delete_Token(Token * t)
-{
- Token *next = t->next;
- nasm_free(t->text);
- t->next = freeTokens;
- freeTokens = t;
- return next;
-}
-
-/*
- * Convert a line of tokens back into text.
- * If expand_locals is not zero, identifiers of the form "%$*xxx"
- * will be transformed into ..@ctxnum.xxx
- */
-static char *
-detoken(Token * tlist, int expand_locals)
-{
- Token *t;
- size_t len;
- char *line, *p;
-
- len = 0;
- for (t = tlist; t; t = t->next)
- {
- if (t->type == TOK_PREPROC_ID && t->text[1] == '!')
- {
- char *p2 = getenv(t->text + 2);
- nasm_free(t->text);
- if (p2)
- t->text = nasm_strdup(p2);
- else
- t->text = NULL;
- }
- /* Expand local macros here and not during preprocessing */
- if (expand_locals &&
- t->type == TOK_PREPROC_ID && t->text &&
- t->text[0] == '%' && t->text[1] == '$')
- {
- Context *ctx = get_ctx(t->text, FALSE);
- if (ctx)
- {
- char buffer[40];
- char *p2, *q = t->text + 2;
-
- q += strspn(q, "$");
- sprintf(buffer, "..@%lu.", ctx->number);
- p2 = nasm_strcat(buffer, q);
- nasm_free(t->text);
- t->text = p2;
- }
- }
- if (t->type == TOK_WHITESPACE)
- {
- len++;
- }
- else if (t->text)
- {
- len += strlen(t->text);
- }
- }
- p = line = nasm_malloc(len + 1);
- for (t = tlist; t; t = t->next)
- {
- if (t->type == TOK_WHITESPACE)
- {
- *p = ' ';
- p++;
- *p = '\0';
- }
- else if (t->text)
- {
- strcpy(p, t->text);
- p += strlen(p);
- }
- }
- *p = '\0';
- return line;
-}
-
-/*
- * A scanner, suitable for use by the expression evaluator, which
- * operates on a line of Tokens. Expects a pointer to a pointer to
- * the first token in the line to be passed in as its private_data
- * field.
- */
-static int
-ppscan(void *private_data, struct tokenval *tokval)
-{
- Token **tlineptr = private_data;
- Token *tline;
-
- do
- {
- tline = *tlineptr;
- *tlineptr = tline ? tline->next : NULL;
- }
- while (tline && (tline->type == TOK_WHITESPACE ||
- tline->type == TOK_COMMENT));
-
- if (!tline)
- return tokval->t_type = TOKEN_EOS;
-
- if (tline->text[0] == '$' && !tline->text[1])
- return tokval->t_type = TOKEN_HERE;
- if (tline->text[0] == '$' && tline->text[1] == '$' && !tline->text[2])
- return tokval->t_type = TOKEN_BASE;
-
- if (tline->type == TOK_ID)
- {
- tokval->t_charptr = tline->text;
- if (tline->text[0] == '$')
- {
- tokval->t_charptr++;
- return tokval->t_type = TOKEN_ID;
- }
-
+ * These defines are used as the possible return values for do_directive
+ */
+#define NO_DIRECTIVE_FOUND 0
+#define DIRECTIVE_FOUND 1
+
+/*
+ * Condition codes. Note that we use c_ prefix not C_ because C_ is
+ * used in nasm.h for the "real" condition codes. At _this_ level,
+ * we treat CXZ and ECXZ as condition codes, albeit non-invertible
+ * ones, so we need a different enum...
+ */
+static const char *conditions[] = {
+ "a", "ae", "b", "be", "c", "cxz", "e", "ecxz", "g", "ge", "l", "le",
+ "na", "nae", "nb", "nbe", "nc", "ne", "ng", "nge", "nl", "nle", "no",
+ "np", "ns", "nz", "o", "p", "pe", "po", "s", "z"
+};
+enum
+{
+ c_A, c_AE, c_B, c_BE, c_C, c_CXZ, c_E, c_ECXZ, c_G, c_GE, c_L, c_LE,
+ c_NA, c_NAE, c_NB, c_NBE, c_NC, c_NE, c_NG, c_NGE, c_NL, c_NLE, c_NO,
+ c_NP, c_NS, c_NZ, c_O, c_P, c_PE, c_PO, c_S, c_Z
+};
+static int inverse_ccs[] = {
+ c_NA, c_NAE, c_NB, c_NBE, c_NC, -1, c_NE, -1, c_NG, c_NGE, c_NL, c_NLE,
+ c_A, c_AE, c_B, c_BE, c_C, c_E, c_G, c_GE, c_L, c_LE, c_O, c_P, c_S,
+ c_Z, c_NO, c_NP, c_PO, c_PE, c_NS, c_NZ
+};
+
+/*
+ * Directive names.
+ */
+static const char *directives[] = {
+ "%arg",
+ "%assign", "%clear", "%define", "%elif", "%elifctx", "%elifdef",
+ "%elifid", "%elifidn", "%elifidni", "%elifmacro", "%elifnctx", "%elifndef",
+ "%elifnid", "%elifnidn", "%elifnidni", "%elifnmacro", "%elifnnum", "%elifnstr",
+ "%elifnum", "%elifstr", "%else", "%endif", "%endm", "%endmacro",
+ "%endrep", "%endscope", "%error", "%exitrep", "%iassign", "%idefine", "%if",
+ "%ifctx", "%ifdef", "%ifid", "%ifidn", "%ifidni", "%ifmacro", "%ifnctx",
+ "%ifndef", "%ifnid", "%ifnidn", "%ifnidni", "%ifnmacro", "%ifnnum",
+ "%ifnstr", "%ifnum", "%ifstr", "%imacro", "%include",
+ "%ixdefine", "%line",
+ "%local",
+ "%macro", "%pop", "%push", "%rep", "%repl", "%rotate",
+ "%scope", "%stacksize",
+ "%strlen", "%substr", "%undef", "%xdefine"
+};
+enum
+{
+ PP_ARG,
+ PP_ASSIGN, PP_CLEAR, PP_DEFINE, PP_ELIF, PP_ELIFCTX, PP_ELIFDEF,
+ PP_ELIFID, PP_ELIFIDN, PP_ELIFIDNI, PP_ELIFMACRO, PP_ELIFNCTX, PP_ELIFNDEF,
+ PP_ELIFNID, PP_ELIFNIDN, PP_ELIFNIDNI, PP_ELIFNMACRO, PP_ELIFNNUM, PP_ELIFNSTR,
+ PP_ELIFNUM, PP_ELIFSTR, PP_ELSE, PP_ENDIF, PP_ENDM, PP_ENDMACRO,
+ PP_ENDREP, PP_ENDSCOPE, PP_ERROR, PP_EXITREP, PP_IASSIGN, PP_IDEFINE, PP_IF,
+ PP_IFCTX, PP_IFDEF, PP_IFID, PP_IFIDN, PP_IFIDNI, PP_IFMACRO, PP_IFNCTX,
+ PP_IFNDEF, PP_IFNID, PP_IFNIDN, PP_IFNIDNI, PP_IFNMACRO, PP_IFNNUM,
+ PP_IFNSTR, PP_IFNUM, PP_IFSTR, PP_IMACRO, PP_INCLUDE,
+ PP_IXDEFINE, PP_LINE,
+ PP_LOCAL,
+ PP_MACRO, PP_POP, PP_PUSH, PP_REP, PP_REPL, PP_ROTATE,
+ PP_SCOPE, PP_STACKSIZE,
+ PP_STRLEN, PP_SUBSTR, PP_UNDEF, PP_XDEFINE
+};
+
+/* If this is a an IF, ELIF, ELSE or ENDIF keyword */
+static int is_condition(int arg)
+{
+ return ((arg >= PP_ELIF) && (arg <= PP_ENDIF)) ||
+ ((arg >= PP_IF) && (arg <= PP_IFSTR));
+}
+
+/* For TASM compatibility we need to be able to recognise TASM compatible
+ * conditional compilation directives. Using the NASM pre-processor does
+ * not work, so we look for them specifically from the following list and
+ * then jam in the equivalent NASM directive into the input stream.
+ */
+
+#ifndef MAX
+# define MAX(a,b) ( ((a) > (b)) ? (a) : (b))
+#endif
+
+enum
+{
+ TM_ARG, TM_ELIF, TM_ELSE, TM_ENDIF, TM_IF, TM_IFDEF, TM_IFDIFI,
+ TM_IFNDEF, TM_INCLUDE, TM_LOCAL,
+ TM_REPT, TM_IRP, TM_MACRO,
+ TM_STRUC, TM_SEGMENT
+};
+
+static const char *tasm_directives[] = {
+ "arg", "elif", "else", "endif", "if", "ifdef", "ifdifi",
+ "ifndef", "include", "local"
+};
+
+static int StackSize = 4;
+static const char *StackPointer = "ebp";
+static int ArgOffset = 8;
+static int LocalOffset = 4;
+static int Level = 0;
+
+
+static Context *cstk;
+static Include *istk;
+
+static FILE *first_fp = NULL;
+
+static efunc _error; /* Pointer to client-provided error reporting function */
+static evalfunc evaluate;
+
+static int pass; /* HACK: pass 0 = generate dependencies only */
+
+static unsigned long unique; /* unique identifier numbers */
+
+static Line *builtindef = NULL;
+static Line *stddef = NULL;
+static Line *predef = NULL;
+static int first_line = 1;
+
+static ListGen *list;
+
+/*
+ * The number of hash values we use for the macro lookup tables.
+ * FIXME: We should *really* be able to configure this at run time,
+ * or even have the hash table automatically expanding when necessary.
+ */
+#define NHASH 4096
+
+/*
+ * The current set of multi-line macros we have defined.
+ */
+static MMacro *mmacros[NHASH];
+
+/*
+ * The current set of single-line macros we have defined.
+ */
+static SMacro *smacros[NHASH];
+
+/*
+ * The multi-line macro we are currently defining, or the %rep
+ * block we are currently reading, if any.
+ */
+static MMacro *defining;
+
+/*
+ * The number of macro parameters to allocate space for at a time.
+ */
+#define PARAM_DELTA 16
+
+/*
+ * Macros to make NASM ignore some TASM directives before the first include
+ * directive.
+ */
+static const char *tasm_compat_macros[] =
+{
+ "%idefine IDEAL",
+ "%idefine JUMPS",
+ "%idefine END",
+ "%idefine P8086 CPU 8086",
+ "%idefine P186 CPU 186",
+ "%idefine P286 CPU 286",
+ "%idefine P286N CPU 286",
+ "%idefine P286P CPU 286 Priv",
+ "%idefine P386 CPU 386",
+ "%idefine P386N CPU 386",
+ "%idefine P386P CPU 386 Priv",
+ "%idefine P486 CPU 486",
+ "%idefine P586 CPU 586",
+ "%idefine .8086 CPU 8086",
+ "%idefine .186 CPU 186",
+ "%idefine .286 CPU 286",
+ "%idefine .286C CPU 286",
+ "%idefine .286P CPU 286",
+ "%idefine .386 CPU 386",
+ "%idefine .386C CPU 386",
+ "%idefine .386P CPU 386",
+ "%idefine .486 CPU 486",
+ "%idefine .486C CPU 486",
+ "%idefine .486P CPU 486",
+ "%idefine .586 CPU 586",
+ "%idefine .586C CPU 586",
+ "%idefine .586P CPU 586",
+ "",
+ "%imacro TITLE 1",
+ "%endm",
+ "%imacro NAME 1",
+ "%endm",
+ "",
+ "%imacro EXTRN 1-*.nolist",
+ "%rep %0",
+ "[extern %1]",
+ "%rotate 1",
+ "%endrep",
+ "%endmacro",
+ "",
+ "%imacro PUBLIC 1-*.nolist",
+ "%rep %0",
+ "[global %1]",
+ "%rotate 1",
+ "%endrep",
+ "%endmacro",
+ "",
+ "; this is not needed",
+ "%idefine PTR",
+ NULL
+};
+
+static int nested_mac_count, nested_rep_count;
+
+/*
+ * Tokens are allocated in blocks to improve speed
+ */
+#define TOKEN_BLOCKSIZE 4096
+static Token *freeTokens = NULL;
+struct Blocks {
+ Blocks *next;
+ void *chunk;
+};
+
+static Blocks blocks = { NULL, NULL };
+
+/*
+ * Forward declarations.
+ */
+static Token *expand_mmac_params(Token * tline);
+static Token *expand_smacro(Token * tline);
+static Token *expand_id(Token * tline);
+static Context *get_ctx(char *name, int all_contexts);
+static void make_tok_num(Token * tok, yasm_intnum *val);
+static void error(int severity, const char *fmt, ...);
+static void *new_Block(size_t size);
+static void delete_Blocks(void);
+static Token *new_Token(Token * next, int type, const char *text,
+ size_t txtlen);
+static Token *delete_Token(Token * t);
+static Token *tokenise(char *line);
+
+/*
+ * Macros for safe checking of token pointers, avoid *(NULL)
+ */
+#define tok_type_(x,t) ((x) && (x)->type == (t))
+#define skip_white_(x) if (tok_type_((x), TOK_WHITESPACE)) (x)=(x)->next
+#define tok_is_(x,v) (tok_type_((x), TOK_OTHER) && !strcmp((x)->text,(v)))
+#define tok_isnt_(x,v) ((x) && ((x)->type!=TOK_OTHER || strcmp((x)->text,(v))))
+
+/* Handle TASM specific directives, which do not contain a % in
+ * front of them. We do it here because I could not find any other
+ * place to do it for the moment, and it is a hack (ideally it would
+ * be nice to be able to use the NASM pre-processor to do it).
+ */
+
+typedef struct TMEndItem {
+ int type;
+ void *data;
+ struct TMEndItem *next;
+} TMEndItem;
+
+static TMEndItem *EndmStack = NULL, *EndsStack = NULL;
+
+char **TMParameters;
+
+struct TStrucField {
+ char *name;
+ char *type;
+ struct TStrucField *next;
+};
+struct TStruc {
+ char *name;
+ struct TStrucField *fields, *lastField;
+ struct TStruc *next;
+};
+static struct TStruc *TStrucs = NULL;
+static int inTstruc = 0;
+
+struct TSegmentAssume {
+ char *segreg;
+ char *segment;
+};
+struct TSegmentAssume *TAssumes;
+
+const char *tasm_get_segment_register(const char *segment)
+{
+ struct TSegmentAssume *assume;
+ if (!TAssumes)
+ return NULL;
+ for (assume = TAssumes; assume->segreg; assume++) {
+ if (!strcmp(assume->segment, segment))
+ break;
+ }
+ return assume->segreg;
+}
+
+static char *
+check_tasm_directive(char *line)
+{
+ int i, j, k, m;
+ size_t len, len2;
+ char *p, *oldline, oldchar, *q, oldchar2;
+ TMEndItem *end;
+
+ p = line;
+
+ /* Skip whitespace */
+ while (isspace(*p) && *p != 0 && *p != ';')
+ p++;
+
+ /* Ignore nasm directives */
+ if (*p == '%')
+ return line;
+
+ /* Binary search for the directive name */
+ len = 0;
+ while (!isspace(p[len]) && p[len] != 0 && p[len] != ';')
+ len++;
+ if (!len)
+ return line;
+
+ oldchar = p[len];
+ p[len] = 0;
+ i = -1;
+ j = elements(tasm_directives);
+ while (j - i > 1)
+ {
+ k = (j + i) / 2;
+ m = nasm_stricmp(p, tasm_directives[k]);
+ if (m == 0)
+ {
+ /* We have found a directive, so jam a % in front of it
+ * so that NASM will then recognise it as one if it's own.
+ */
+ p[len] = oldchar;
+ len = strlen(p);
+ oldline = line;
+ if (k == TM_IFDIFI)
+ {
+ /* NASM does not recognise IFDIFI, so we convert it to
+ * %ifdef BOGUS. This is not used in NASM comaptible
+ * code, but does need to parse for the TASM macro
+ * package.
+ */
+ line = nasm_malloc(13);
+ strcpy(line, "%ifdef BOGUS");
+ }
+ else if (k == TM_INCLUDE)
+ {
+ /* add double quotes around file name */
+ p += 7 + 1;
+ while (isspace(*p) && *p)
+ p++;
+ len = strlen(p);
+ line = nasm_malloc(1 + 7 + 1 + 1 + len + 1 + 1);
+ sprintf(line, "%%include \"%s\"", p);
+ }
+ else
+ {
+ line = nasm_malloc(len + 2);
+ line[0] = '%';
+ memcpy(line + 1, p, len + 1);
+ }
+ nasm_free(oldline);
+ return line;
+ }
+ else if (m < 0)
+ {
+ j = k;
+ }
+ else
+ i = k;
+ }
+
+ /* Not a simple directive */
+
+ if (!nasm_stricmp(p, "endm")) {
+ /* handle end of endm directive */
+ char **parameter;
+ end = EndmStack;
+ /* undef parameters */
+ if (!end) {
+ error(ERR_FATAL, "ENDM: not in an endm context");
+ return line;
+ }
+ EndmStack = EndmStack->next;
+ nasm_free(line);
+ switch (end->type) {
+ case TM_MACRO:
+ len = 0;
+ for (parameter = end->data; *parameter; parameter++)
+ len += 6 + 1 + strlen(*parameter) + 1;
+ len += 5 + 1;
+ line = nasm_malloc(len);
+ p = line;
+ for (parameter = end->data; *parameter; parameter++) {
+ p += sprintf(p, "%%undef %s\n", *parameter);
+ nasm_free(*parameter);
+ }
+ nasm_free(end->data);
+ nasm_free(end);
+ sprintf(p, "%%endm");
+ return line;
+ case TM_REPT:
+ nasm_free(end);
+ return nasm_strdup("%endrep");
+ case TM_IRP: {
+ char **data;
+ const char *irp_format =
+ "%%undef %s\n"
+ "%%rotate 1\n"
+ "%%endrep\n"
+ "%%endm\n"
+ "irp %s\n"
+ "%%undef irp";
+ data = end->data;
+ line = nasm_malloc(strlen(irp_format) - 4 + strlen(data[0])
+ + strlen(data[1]));
+ sprintf(line, irp_format, data[0], data[1]);
+ nasm_free(data[0]);
+ nasm_free(data[1]);
+ nasm_free(data);
+ return line;
+ }
+ default:
+ error(ERR_FATAL, "ENDM: bogus endm context type %d\n",end->type);
+ return NULL;
+ }
+ } else if (!nasm_stricmp(p, "end")) {
+ nasm_free(line);
+ return nasm_strdup("");
+ } else if (!nasm_stricmp(p, "rept")) {
+ /* handle repeat directive */
+ end = nasm_malloc(sizeof(*end));
+ end->type = TM_REPT;
+ end->next = EndmStack;
+ EndmStack = end;
+ memcpy(p, "%rep", 4);
+ p[len] = oldchar;
+ return line;
+ } else if (!nasm_stricmp(p, "locals")) {
+ tasm_locals = 1;
+ nasm_free(line);
+ return nasm_strdup("");
+ }
+
+ if (!oldchar)
+ return line;
+
+ /* handle two-words directives */
+ q = p + len + 1;
+ /* Skip whitespaces */
+ while (isspace(*q) && *q)
+ q++;
+
+ len2 = 0;
+ while (!isspace(q[len2]) && q[len2]!=',' && q[len2] != 0)
+ len2++;
+ oldchar2 = q[len2];
+ q[len2] = '\0';
+
+ if (!nasm_stricmp(p, "irp")) {
+ /* handle indefinite repeat directive */
+ const char *irp_format =
+ "%%imacro irp 0-*\n"
+ "%%rep %%0\n"
+ "%%define %s %%1\n";
+ char **data;
+
+ data = malloc(2*sizeof(char*));
+ oldline = line;
+ line = nasm_malloc(strlen(irp_format) - 2 + len2 + 1);
+ sprintf(line,irp_format,q);
+ data[0] = nasm_strdup(q);
+
+ if (!oldchar2)
+ error(ERR_FATAL, "%s: expected <values>", q + len2);
+ p = strchr(q + len2 + 1, '<');
+ if (!p)
+ error(ERR_FATAL, "%s: expected <values>", q + len2);
+ p++;
+ q = strchr(p, '>');
+ data[1] = nasm_strndup(p, q - p);
+
+ end = nasm_malloc(sizeof(*end));
+ end->type = TM_IRP;
+ end->next = EndmStack;
+ end->data = data;
+ EndmStack = end;
+
+ nasm_free(oldline);
+ return line;
+ } else if (!nasm_stricmp(q, "macro")) {
+ char *name = p;
+ /* handle MACRO */
+ /* count parameters */
+ j = 1;
+ i = 0;
+ TMParameters = nasm_malloc(j*sizeof(*TMParameters));
+ len = 0;
+ p = q + len2 + 1;
+ /* Skip whitespaces */
+ while (isspace(*p) && *p)
+ p++;
+ while (*p) {
+ /* Get parameter name */
+ for (q = p; !isspace(*q) && *q != ',' && *q; q++);
+ len2 = q-p;
+ if (len2 == 0)
+ error(ERR_FATAL, "'%s': expected parameter name", p);
+ TMParameters[i] = nasm_malloc(len2 + 1);
+ memcpy(TMParameters[i], p, len2);
+ TMParameters[i][len2] = '\0';
+ len += len2;
+ i++;
+ if (i + 1 > j) {
+ j *= 2;
+ TMParameters = nasm_realloc(TMParameters,
+ j*sizeof(*TMParameters));
+ }
+ if (i == 1000)
+ error(ERR_FATAL, "too many parameters for macro %s", name);
+ p = q;
+ while (isspace(*p) && *p)
+ p++;
+ if (!*p)
+ break;
+ if (*p != ',')
+ error(ERR_FATAL, "expected comma");
+ p++;
+ while (isspace(*p) && *p)
+ p++;
+ }
+ TMParameters[i] = NULL;
+ TMParameters = nasm_realloc(TMParameters,
+ (i+1)*sizeof(*TMParameters));
+ len += 1 + 6 + 1 + strlen(name) + 1 + 3; /* macro definition */
+ len += i * (1 + 9 + 1 + 1 + 1 + 3 + 2); /* macro parameter definition */
+ oldline = line;
+ p = line = nasm_malloc(len + 1);
+ p += sprintf(p, "%%imacro %s 0-*", name);
+ nasm_free(oldline);
+ for (j = 0; TMParameters[j]; j++) {
+ p += sprintf(p, "\n%%idefine %s %%{%-u}", TMParameters[j], j + 1);
+ }
+ end = nasm_malloc(sizeof(*end));
+ end->type = TM_MACRO;
+ end->next = EndmStack;
+ end->data = TMParameters;
+ EndmStack = end;
+ return line;
+ } else if (!nasm_stricmp(q, "proc")) {
+ /* handle PROC */
+ oldline = line;
+ line = nasm_malloc(2 + len + 1);
+ sprintf(line, "..%s",p);
+ nasm_free(oldline);
+ return line;
+ } else if (!nasm_stricmp(q, "struc")) {
+ /* handle struc */
+ struct TStruc *struc;
+ if (inTstruc) {
+ error(ERR_FATAL, "STRUC: already in a struc context");
+ return line;
+ }
+ oldline = line;
+ line = nasm_malloc(5 + 1 + len + 1);
+ sprintf(line, "struc %s", p);
+ struc = malloc(sizeof(*struc));
+ struc->name = nasm_strdup(p);
+ struc->fields = NULL;
+ struc->lastField = NULL;
+ struc->next = TStrucs;
+ TStrucs = struc;
+ inTstruc = 1;
+ nasm_free(oldline);
+ end = nasm_malloc(sizeof(*end));
+ end->type = TM_STRUC;
+ end->next = EndsStack;
+ EndsStack = end;
+ return line;
+ } else if (!nasm_stricmp(q, "segment")) {
+ /* handle SEGMENT */
+ oldline = line;
+ line = nasm_strdup(oldchar2?q+len2+1:"");
+ if (tasm_segment) {
+ error(ERR_FATAL, "SEGMENT: already in a segment context");
+ return line;
+ }
+ tasm_segment = nasm_strdup(p);
+ nasm_free(oldline);
+ end = nasm_malloc(sizeof(*end));
+ end->type = TM_SEGMENT;
+ end->next = EndsStack;
+ EndsStack = end;
+ return line;
+ } else if (!nasm_stricmp(p, "ends") || !nasm_stricmp(q, "ends")) {
+ /* handle end of ends directive */
+ end = EndsStack;
+ /* undef parameters */
+ if (!end) {
+ error(ERR_FATAL, "ENDS: not in an ends context");
+ return line;
+ }
+ EndsStack = EndsStack->next;
+ nasm_free(line);
+ switch (end->type) {
+ case TM_STRUC:
+ inTstruc = 0;
+ return nasm_strdup("endstruc");
+ case TM_SEGMENT:
+ /* XXX: yes, we leak memory here, but that permits labels
+ * to avoid strduping... */
+ tasm_segment = NULL;
+ return nasm_strdup("");
+ default:
+ error(ERR_FATAL, "ENDS: bogus ends context type %d",end->type);
+ return NULL;
+ }
+ } else if (!nasm_stricmp(p, "endp") || !nasm_stricmp(q, "endp")) {
+ nasm_free(line);
+ return nasm_strdup("");
+ } else if (!nasm_stricmp(p, "assume")) {
+ struct TSegmentAssume *assume;
+ /* handle ASSUME */
+ if (!TAssumes) {
+ TAssumes = nasm_malloc(sizeof(*TAssumes));
+ TAssumes[0].segreg = NULL;
+ }
+ i = 0;
+ q[len2] = oldchar2;
+ /* Skip whitespaces */
+ while (isspace(*q) && *q)
+ q++;
+ while (*q && *q != ';') {
+ p = q;
+ for (; *q && *q != ';' && *q != ':' && !isspace(*q); q++);
+ if (!*q || *q == ';')
+ break;
+ /* segment register name */
+ for (assume = TAssumes; assume->segreg; assume++)
+ if (strlen(assume->segreg) == (size_t)(q-p) &&
+ !yasm__strncasecmp(assume->segreg, p, q-p))
+ break;
+ if (!assume->segreg) {
+ i = assume - TAssumes + 1;
+ TAssumes = nasm_realloc(TAssumes, (i+1)*sizeof(*TAssumes));
+ assume = TAssumes + i - 1;
+ assume->segreg = nasm_strndup(p, q-p);
+ assume[1].segreg = NULL;
+ }
+ for (; *q && *q != ';' && *q != ':' && isspace(*q); q++);
+ if (*q != ':')
+ error(ERR_FATAL, "expected `:' instead of `%c'", *q);
+ for (q++; *q && isspace(*q); q++);
+
+ /* segment name */
+ p = q;
+ for (; *q && *q != ';' && *q != ',' && !isspace(*q); q++);
+ assume->segment = nasm_strndup(p, q-p);
+ for (; *q && isspace(*q); q++);
+ if (*q && *q != ';' && *q != ',')
+ error(ERR_FATAL, "expected `,' instead of `%c'", *q);
+
+ if (*q && *q != ';')
+ q++;
+ for (; *q && isspace(*q); q++);
+ }
+ TAssumes[i].segreg = NULL;
+ TAssumes = nasm_realloc(TAssumes, (i+1)*sizeof(*TAssumes));
+ nasm_free(line);
+ return nasm_strdup("");
+ } else if (inTstruc) {
+ struct TStrucField *field;
+ /* TODO: handle unnamed data */
+ field = nasm_malloc(sizeof(*field));
+ field->name = nasm_strdup(p);
+ /* TODO: type struc ! */
+ field->type = nasm_strdup(q);
+ field->next = NULL;
+ if (!TStrucs->fields)
+ TStrucs->fields = field;
+ else if (TStrucs->lastField)
+ TStrucs->lastField->next = field;
+ TStrucs->lastField = field;
+ if (!oldchar2) {
+ error(ERR_FATAL, "Expected struc field initializer after %s %s", p, q);
+ return line;
+ }
+ oldline = line;
+ line = nasm_malloc(1 + len + 1 + len2 + 1 + strlen(q+len2+1) + 1);
+ sprintf(line, ".%s %s %s", p, q, q+len2+1);
+ nasm_free(oldline);
+ return line;
+ }
+ {
+ struct TStruc *struc;
+ for (struc = TStrucs; struc; struc = struc->next) {
+ if (!yasm__strcasecmp(q, struc->name)) {
+ char *r = q + len2 + 1, *s, *t, tasm_param[6];
+ struct TStrucField *field = struc->fields;
+ int size, n;
+ if (!oldchar2) {
+ error(ERR_FATAL, "Expected struc field initializer after %s %s", p, q);
+ return line;
+ }
+ r = strchr(r, '<');
+ if (!r) {
+ error(ERR_FATAL, "Expected < for struc field initializer in %s %s %s", p, q, r);
+ return line;
+ }
+ t = strchr(r + 1, '>');
+ if (!t) {
+ error(ERR_FATAL, "Expected > for struc field initializer in %s %s %s", p, q, r);
+ return line;
+ }
+ *t = 0;
+ oldline = line;
+ size = len + len2 + 128;
+ line = nasm_malloc(size);
+ if (defining)
+ for (n=0;TMParameters[n];n++)
+ if (!strcmp(TMParameters[n],p)) {
+ sprintf(tasm_param,"%%{%d}",n+1);
+ p = tasm_param;
+ break;
+ }
+ n = sprintf(line, "%s: istruc %s\n", p, q);
+ /* use initialisers */
+ while ((s = strchr(r + 1, ','))) {
+ if (!field) {
+ error(ERR_FATAL, "Too many initializers in structure %s %s", p, q);
+ return oldline;
+ }
+ *s = 0;
+ m = strlen(p) + 1 + strlen(field->name)*2 + 8 +
+ strlen(field->type) + 1 + strlen(r+1) + 2;
+ size += m;
+ line = nasm_realloc(line, size);
+ sprintf(line + n, "%s.%s: at .%s, %s %s\n",
+ p, field->name, field->name, field->type, r + 1);
+ n += m-1;
+ r = s;
+ field = field->next;
+ }
+ /* complete with last initializer and '?' */
+ while(field) {
+ m = strlen(p) + 1 + strlen(field->name)*2 + 8 +
+ strlen(field->type) + 1 + (r ? strlen(r+1) : 1) + 2;
+ size += m;
+ line = nasm_realloc(line, size);
+ sprintf(line + n, "%s.%s: at .%s, %s %s\n", p, field->name,
+ field->name, field->type, r ? r + 1: "?");
+ n += m-1;
+ r = NULL;
+ field = field->next;
+ }
+ line = nasm_realloc(line, n + 5);
+ sprintf(line + n, "iend");
+ nasm_free(oldline);
+ return line;
+ }
+ }
+ }
+
+ q[len2] = oldchar2;
+ p[len] = oldchar;
+
+ return line;
+}
+
+static Token * tasm_join_tokens(Token *tline)
+{
+ Token *t, *prev, *next;
+ for (prev = NULL, t = tline; t; prev = t, t = next) {
+ next = t->next;
+ if (t->type == TOK_OTHER && !strcmp(t->text,"&")) {
+ if (!prev)
+ error(ERR_FATAL, "no token before &");
+ else if (!next)
+ error(ERR_FATAL, "no token after &");
+ else if (prev->type != next->type)
+ error(ERR_FATAL, "can't handle different types of token around &");
+ else if (!prev->text || !next->text)
+ error(ERR_FATAL, "can't handle empty token around &");
+ else {
+ int lenp = strlen(prev->text);
+ int lenn = strlen(next->text);
+ prev->text = nasm_realloc(prev->text, lenp + lenn + 1);
+ strncpy(prev->text + lenp, next->text, lenn + 1);
+ (void) delete_Token(t);
+ prev->next = delete_Token(next);
+ t = prev;
+ next = t->next;
+ }
+ }
+ }
+ return tline;
+}
+
+/*
+ * The pre-preprocessing stage... This function translates line
+ * number indications as they emerge from GNU cpp (`# lineno "file"
+ * flags') into NASM preprocessor line number indications (`%line
+ * lineno file').
+ */
+static char *
+prepreproc(char *line)
+{
+ int lineno;
+ size_t fnlen;
+ char *fname, *oldline;
+ char *c, *d, *ret;
+ Line *l, **lp;
+
+ if (line[0] == '#' && line[1] == ' ')
+ {
+ oldline = line;
+ fname = oldline + 2;
+ lineno = atoi(fname);
+ fname += strspn(fname, "0123456789 ");
+ if (*fname == '"')
+ fname++;
+ fnlen = strcspn(fname, "\"");
+ line = nasm_malloc(20 + fnlen);
+ sprintf(line, "%%line %d %.*s", lineno, (int)fnlen, fname);
+ nasm_free(oldline);
+ }
+ if (tasm_compatible_mode)
+ line = check_tasm_directive(line);
+
+ if (!(c = strchr(line, '\n')))
+ return line;
+
+ /* Turn multiline macros into several lines */
+ *c = '\0';
+ ret = nasm_strdup(line);
+
+ lp = &istk->expansion;
+ do {
+ d = strchr(c+1, '\n');
+ if (d)
+ *d = '\0';
+ l = malloc(sizeof(*l));
+ l -> first = tokenise(c+1);
+ l -> finishes = NULL;
+ l -> next = *lp;
+ *lp = l;
+ c = d;
+ lp = &l -> next;
+ } while (c);
+ nasm_free(line);
+ return ret;
+}
+
+/*
+ * The hash function for macro lookups. Note that due to some
+ * macros having case-insensitive names, the hash function must be
+ * invariant under case changes. We implement this by applying a
+ * perfectly normal hash function to the uppercase of the string.
+ */
+static int
+hash(char *s)
+{
+ unsigned int h = 0;
+ unsigned int i = 0;
+ /*
+ * Powers of three, mod 31.
+ */
+ static const int multipliers[] = {
+ 1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10,
+ 30, 28, 22, 4, 12, 5, 15, 14, 11, 2, 6, 18, 23, 7, 21
+ };
+
+
+ while (*s)
+ {
+ h += multipliers[i] * (unsigned char) (toupper(*s));
+ s++;
+ if (++i >= elements(multipliers))
+ i = 0;
+ }
+ h %= NHASH;
+ return h;
+}
+
+/*
+ * Free a linked list of tokens.
+ */
+static void
+free_tlist(Token * list_)
+{
+ while (list_)
+ {
+ list_ = delete_Token(list_);
+ }
+}
+
+/*
+ * Free a linked list of lines.
+ */
+static void
+free_llist(Line * list_)
+{
+ Line *l;
+ while (list_)
+ {
+ l = list_;
+ list_ = list_->next;
+ free_tlist(l->first);
+ nasm_free(l);
+ }
+}
+
+/*
+ * Free an MMacro
+ */
+static void
+free_mmacro(MMacro * m)
+{
+ nasm_free(m->name);
+ free_tlist(m->dlist);
+ nasm_free(m->defaults);
+ free_llist(m->expansion);
+ nasm_free(m);
+}
+
+/*
+ * Pop the context stack.
+ */
+static void
+ctx_pop(void)
+{
+ Context *c = cstk;
+ SMacro *smac, *s;
+
+ cstk = cstk->next;
+ smac = c->localmac;
+ while (smac)
+ {
+ s = smac;
+ smac = smac->next;
+ nasm_free(s->name);
+ free_tlist(s->expansion);
+ nasm_free(s);
+ }
+ nasm_free(c->name);
+ nasm_free(c);
+}
+
+#define BUF_DELTA 512
+/*
+ * Read a line from the top file in istk, handling multiple CR/LFs
+ * at the end of the line read, and handling spurious ^Zs. Will
+ * return lines from the standard macro set if this has not already
+ * been done.
+ */
+static char *
+read_line(void)
+{
+ char *buffer, *p, *q;
+ int bufsize, continued_count;
+
+ bufsize = BUF_DELTA;
+ buffer = nasm_malloc(BUF_DELTA);
+ p = buffer;
+ continued_count = 0;
+ while (1)
+ {
+ q = fgets(p, bufsize - (int)(p - buffer), istk->fp);
+ if (!q)
+ break;
+ p += strlen(p);
+ if (p > buffer && p[-1] == '\n')
+ {
+ /* Convert backslash-CRLF line continuation sequences into
+ nothing at all (for DOS and Windows) */
+ if (((p - 2) > buffer) && (p[-3] == '\\') && (p[-2] == '\r')) {
+ p -= 3;
+ *p = 0;
+ continued_count++;
+ }
+ /* Also convert backslash-LF line continuation sequences into
+ nothing at all (for Unix) */
+ else if (((p - 1) > buffer) && (p[-2] == '\\')) {
+ p -= 2;
+ *p = 0;
+ continued_count++;
+ }
+ else {
+ break;
+ }
+ }
+ if (p - buffer > bufsize - 10)
+ {
+ long offset = (long)(p - buffer);
+ bufsize += BUF_DELTA;
+ buffer = nasm_realloc(buffer, (size_t)bufsize);
+ p = buffer + offset; /* prevent stale-pointer problems */
+ }
+ }
+
+ if (!q && p == buffer)
+ {
+ nasm_free(buffer);
+ return NULL;
+ }
+
+ nasm_src_set_linnum(nasm_src_get_linnum() + istk->lineinc + (continued_count * istk->lineinc));
+
+ /*
+ * Play safe: remove CRs as well as LFs, if any of either are
+ * present at the end of the line.
+ */
+ while (--p >= buffer && (*p == '\n' || *p == '\r'))
+ *p = '\0';
+
+ /*
+ * Handle spurious ^Z, which may be inserted into source files
+ * by some file transfer utilities.
+ */
+ buffer[strcspn(buffer, "\032")] = '\0';
+
+ list->line(LIST_READ, buffer);
+
+ return buffer;
+}
+
+/*
+ * Tokenise a line of text. This is a very simple process since we
+ * don't need to parse the value out of e.g. numeric tokens: we
+ * simply split one string into many.
+ */
+static Token *
+tokenise(char *line)
+{
+ char *p = line;
+ int type;
+ Token *list_ = NULL;
+ Token *t, **tail = &list_;
+
+ while (*line)
+ {
+ p = line;
+ if (*p == '%')
+ {
+ p++;
+ if ( isdigit(*p) ||
+ ((*p == '-' || *p == '+') && isdigit(p[1])) ||
+ ((*p == '+') && (isspace(p[1]) || !p[1])))
+ {
+ do
+ {
+ p++;
+ }
+ while (isdigit(*p));
+ type = TOK_PREPROC_ID;
+ }
+ else if (*p == '{')
+ {
+ p++;
+ while (*p && *p != '}')
+ {
+ p[-1] = *p;
+ p++;
+ }
+ p[-1] = '\0';
+ if (*p)
+ p++;
+ type = TOK_PREPROC_ID;
+ }
+ else if (isidchar(*p) ||
+ ((*p == '!' || *p == '%' || *p == '$') &&
+ isidchar(p[1])))
+ {
+ do
+ {
+ p++;
+ }
+ while (isidchar(*p));
+ type = TOK_PREPROC_ID;
+ }
+ else
+ {
+ type = TOK_OTHER;
+ if (*p == '%')
+ p++;
+ }
+ }
+ else if (isidstart(*p) || (*p == '$' && isidstart(p[1])))
+ {
+ type = TOK_ID;
+ p++;
+ while (*p && isidchar(*p))
+ p++;
+ }
+ else if (*p == '\'' || *p == '"')
+ {
+ /*
+ * A string token.
+ */
+ char c = *p;
+ p++;
+ type = TOK_STRING;
+ while (*p && *p != c)
+ p++;
+
+ if (*p)
+ {
+ p++;
+ }
+ else
+ {
+ error(ERR_WARNING, "unterminated string");
+ type = -1;
+ }
+ }
+ else if (isnumstart(*p))
+ {
+ /*
+ * A number token.
+ */
+ type = TOK_NUMBER;
+ p++;
+ while (*p && isnumchar(*p))
+ p++;
+ }
+ else if (isspace(*p))
+ {
+ type = TOK_WHITESPACE;
+ p++;
+ while (*p && isspace(*p))
+ p++;
+ /*
+ * Whitespace just before end-of-line is discarded by
+ * pretending it's a comment; whitespace just before a
+ * comment gets lumped into the comment.
+ */
+ if (!*p || *p == ';')
+ {
+ type = TOK_COMMENT;
+ while (*p)
+ p++;
+ }
+ }
+ else if (*p == ';')
+ {
+ type = TOK_COMMENT;
+ while (*p)
+ p++;
+ }
+ else
+ {
+ /*
+ * Anything else is an operator of some kind. We check
+ * for all the double-character operators (>>, <<, //,
+ * %%, <=, >=, ==, !=, <>, &&, ||, ^^), but anything
+ * else is a single-character operator.
+ */
+ type = TOK_OTHER;
+ if ((p[0] == '>' && p[1] == '>') ||
+ (p[0] == '<' && p[1] == '<') ||
+ (p[0] == '/' && p[1] == '/') ||
+ (p[0] == '<' && p[1] == '=') ||
+ (p[0] == '>' && p[1] == '=') ||
+ (p[0] == '=' && p[1] == '=') ||
+ (p[0] == '!' && p[1] == '=') ||
+ (p[0] == '<' && p[1] == '>') ||
+ (p[0] == '&' && p[1] == '&') ||
+ (p[0] == '|' && p[1] == '|') ||
+ (p[0] == '^' && p[1] == '^'))
+ {
+ p++;
+ }
+ p++;
+ }
+
+ /* Handle unterminated string */
+ if (type == -1)
+ {
+ *tail = t = new_Token(NULL, TOK_STRING, line, (size_t)(p-line)+1);
+ t->text[p-line] = *line;
+ tail = &t->next;
+ }
+ else if (type != TOK_COMMENT)
+ {
+ *tail = t = new_Token(NULL, type, line, (size_t)(p - line));
+ tail = &t->next;
+ }
+ line = p;
+ }
+ return list_;
+}
+
+/*
+ * this function allocates a new managed block of memory and
+ * returns a pointer to the block. The managed blocks are
+ * deleted only all at once by the delete_Blocks function.
+ */
+static void *
+new_Block(size_t size)
+{
+ Blocks *b = &blocks;
+
+ /* first, get to the end of the linked list */
+ while (b->next)
+ b = b->next;
+ /* now allocate the requested chunk */
+ b->chunk = nasm_malloc(size);
+
+ /* now allocate a new block for the next request */
+ b->next = nasm_malloc(sizeof(Blocks));
+ /* and initialize the contents of the new block */
+ b->next->next = NULL;
+ b->next->chunk = NULL;
+ return b->chunk;
+}
+
+/*
+ * this function deletes all managed blocks of memory
+ */
+static void
+delete_Blocks(void)
+{
+ Blocks *a,*b = &blocks;
+
/*
- * This is the only special case we actually need to worry
- * about in this restricted context.
- */
- if (!nasm_stricmp(tline->text, "seg"))
- return tokval->t_type = TOKEN_SEG;
-
- return tokval->t_type = TOKEN_ID;
- }
-
- if (tline->type == TOK_NUMBER)
- {
- int rn_error;
-
- tokval->t_integer = nasm_readnum(tline->text, &rn_error);
- if (rn_error)
- return tokval->t_type = TOKEN_ERRNUM;
- tokval->t_charptr = NULL;
- return tokval->t_type = TOKEN_NUM;
- }
-
- if (tline->type == TOK_STRING)
- {
- int rn_warn;
- char q, *r;
- size_t l;
-
- r = tline->text;
- q = *r++;
- l = strlen(r);
-
- if (l == 0 || r[l - 1] != q)
- return tokval->t_type = TOKEN_ERRNUM;
- tokval->t_integer = nasm_readstrnum(r, l - 1, &rn_warn);
- if (rn_warn)
- error(ERR_WARNING | ERR_PASS1, "character constant too long");
- tokval->t_charptr = NULL;
- return tokval->t_type = TOKEN_NUM;
- }
-
- if (tline->type == TOK_OTHER)
- {
- if (!strcmp(tline->text, "<<"))
- return tokval->t_type = TOKEN_SHL;
- if (!strcmp(tline->text, ">>"))
- return tokval->t_type = TOKEN_SHR;
- if (!strcmp(tline->text, "//"))
- return tokval->t_type = TOKEN_SDIV;
- if (!strcmp(tline->text, "%%"))
- return tokval->t_type = TOKEN_SMOD;
- if (!strcmp(tline->text, "=="))
- return tokval->t_type = TOKEN_EQ;
- if (!strcmp(tline->text, "<>"))
- return tokval->t_type = TOKEN_NE;
- if (!strcmp(tline->text, "!="))
- return tokval->t_type = TOKEN_NE;
- if (!strcmp(tline->text, "<="))
- return tokval->t_type = TOKEN_LE;
- if (!strcmp(tline->text, ">="))
- return tokval->t_type = TOKEN_GE;
- if (!strcmp(tline->text, "&&"))
- return tokval->t_type = TOKEN_DBL_AND;
- if (!strcmp(tline->text, "^^"))
- return tokval->t_type = TOKEN_DBL_XOR;
- if (!strcmp(tline->text, "||"))
- return tokval->t_type = TOKEN_DBL_OR;
- }
-
- /*
- * We have no other options: just return the first character of
- * the token text.
- */
- return tokval->t_type = tline->text[0];
-}
-
-/*
- * Compare a string to the name of an existing macro; this is a
- * simple wrapper which calls either strcmp or nasm_stricmp
- * depending on the value of the `casesense' parameter.
- */
-static int
-mstrcmp(char *p, char *q, int casesense)
-{
- return casesense ? strcmp(p, q) : nasm_stricmp(p, q);
-}
-
-/*
- * Return the Context structure associated with a %$ token. Return
- * NULL, having _already_ reported an error condition, if the
- * context stack isn't deep enough for the supplied number of $
- * signs.
- * If all_contexts == TRUE, contexts that enclose current are
- * also scanned for such smacro, until it is found; if not -
- * only the context that directly results from the number of $'s
- * in variable's name.
- */
-static Context *
-get_ctx(char *name, int all_contexts)
-{
- Context *ctx;
- SMacro *m;
- size_t i;
-
- if (!name || name[0] != '%' || name[1] != '$')
- return NULL;
-
- if (!cstk)
- {
- error(ERR_NONFATAL, "`%s': context stack is empty", name);
- return NULL;
- }
-
- for (i = strspn(name + 2, "$"), ctx = cstk; (i > 0) && ctx; i--)
- {
- ctx = ctx->next;
-/* i--; Lino - 02/25/02 */
- }
- if (!ctx)
- {
- error(ERR_NONFATAL, "`%s': context stack is only"
- " %d level%s deep", name, i - 1, (i == 2 ? "" : "s"));
- return NULL;
- }
- if (!all_contexts)
- return ctx;
-
- do
- {
- /* Search for this smacro in found context */
- m = ctx->localmac;
- while (m)
- {
- if (!mstrcmp(m->name, name, m->casesense))
- return ctx;
- m = m->next;
- }
- ctx = ctx->next;
- }
- while (ctx);
- return NULL;
-}
-
-/*
- * Open an include file. This routine must always return a valid
- * file pointer if it returns - it's responsible for throwing an
- * ERR_FATAL and bombing out completely if not. It should also try
- * the include path one by one until it finds the file or reaches
- * the end of the path.
- */
-static FILE *
-inc_fopen(char *file, char **newname)
-{
- FILE *fp;
- char *combine = NULL, *c;
- char *pb, *p1, *p2, *file2 = NULL;
-
- /* Try to expand all %ENVVAR% in filename. Warn, and leave %string%
- * intact, if ENVVAR is not set in the environment.
- */
- pb = file;
- p1 = pb;
- for (;;) {
- char *env;
- while (*p1 != '\0' && *p1 != '%')
- p1++;
- if (*p1 == '\0')
- break;
- p2 = p1+1;
- while (*p2 != '\0' && *p2 != '%')
- p2++;
- if (*p2 == '\0')
- break;
- /* Okay, we have a %...%, with p1 pointing to the first %, and p2
- * pointing to the second %.
- */
- *p2 = '\0';
- env = getenv(p1+1);
- if (!env) {
- /* warn, restore %, and continue looking */
- error(ERR_WARNING, "environment variable `%s' does not exist",
- p1+1);
- *p2 = '%';
- p1 = p2+1;
- continue;
- }
- /* need to expand */
- if (!file2) {
- file2 = nasm_malloc(strlen(file)+strlen(env)+1);
- file2[0] = '\0';
- } else
- file2 = nasm_realloc(file2, strlen(file2)+strlen(env)+1);
- *p1 = '\0';
- strcat(file2, pb);
- strcat(file2, env);
- pb = p2+1;
- p1 = pb;
- }
- /* add tail end; string is long enough that we don't need to realloc */
- if (file2)
- strcat(file2, pb);
-
- fp = yasm_fopen_include(file2 ? file2 : file, nasm_src_get_fname(), "r",
- &combine);
- if (!fp && tasm_compatible_mode)
- {
- char *thefile = file2 ? file2 : file;
- /* try a few case combinations */
- do {
- for (c = thefile; *c; c++)
- *c = toupper(*c);
- fp = yasm_fopen_include(thefile, nasm_src_get_fname(), "r", &combine);
- if (fp) break;
- *thefile = tolower(*thefile);
- fp = yasm_fopen_include(thefile, nasm_src_get_fname(), "r", &combine);
- if (fp) break;
- for (c = thefile; *c; c++)
- *c = tolower(*c);
- fp = yasm_fopen_include(thefile, nasm_src_get_fname(), "r", &combine);
- if (fp) break;
- *thefile = toupper(*thefile);
- fp = yasm_fopen_include(thefile, nasm_src_get_fname(), "r", &combine);
- if (fp) break;
- } while (0);
- }
- if (!fp)
- error(ERR_FATAL, "unable to open include file `%s'",
- file2 ? file2 : file);
- nasm_preproc_add_dep(combine);
-
- if (file2)
- nasm_free(file2);
-
- *newname = combine;
- return fp;
-}
-
-/*
- * Determine if we should warn on defining a single-line macro of
- * name `name', with `nparam' parameters. If nparam is 0 or -1, will
- * return TRUE if _any_ single-line macro of that name is defined.
- * Otherwise, will return TRUE if a single-line macro with either
- * `nparam' or no parameters is defined.
- *
- * If a macro with precisely the right number of parameters is
- * defined, or nparam is -1, the address of the definition structure
- * will be returned in `defn'; otherwise NULL will be returned. If `defn'
- * is NULL, no action will be taken regarding its contents, and no
- * error will occur.
- *
- * Note that this is also called with nparam zero to resolve
- * `ifdef'.
+ * keep in mind that the first block, pointed to by blocks
+ * is a static and not dynamically allocated, so we don't
+ * free it.
+ */
+ while (b)
+ {
+ if (b->chunk)
+ nasm_free(b->chunk);
+ a = b;
+ b = b->next;
+ if (a != &blocks)
+ nasm_free(a);
+ }
+}
+
+/*
+ * this function creates a new Token and passes a pointer to it
+ * back to the caller. It sets the type and text elements, and
+ * also the mac and next elements to NULL.
+ */
+static Token *
+new_Token(Token * next, int type, const char *text, size_t txtlen)
+{
+ Token *t;
+ int i;
+
+ if (freeTokens == NULL)
+ {
+ freeTokens = (Token *)new_Block(TOKEN_BLOCKSIZE * sizeof(Token));
+ for (i = 0; i < TOKEN_BLOCKSIZE - 1; i++)
+ freeTokens[i].next = &freeTokens[i + 1];
+ freeTokens[i].next = NULL;
+ }
+ t = freeTokens;
+ freeTokens = t->next;
+ t->next = next;
+ t->mac = NULL;
+ t->type = type;
+ if (type == TOK_WHITESPACE || text == NULL)
+ {
+ t->text = NULL;
+ }
+ else
+ {
+ if (txtlen == 0)
+ txtlen = strlen(text);
+ t->text = nasm_malloc(1 + txtlen);
+ strncpy(t->text, text, txtlen);
+ t->text[txtlen] = '\0';
+ }
+ return t;
+}
+
+static Token *
+delete_Token(Token * t)
+{
+ Token *next = t->next;
+ nasm_free(t->text);
+ t->next = freeTokens;
+ freeTokens = t;
+ return next;
+}
+
+/*
+ * Convert a line of tokens back into text.
+ * If expand_locals is not zero, identifiers of the form "%$*xxx"
+ * will be transformed into ..@ctxnum.xxx
+ */
+static char *
+detoken(Token * tlist, int expand_locals)
+{
+ Token *t;
+ size_t len;
+ char *line, *p;
+
+ len = 0;
+ for (t = tlist; t; t = t->next)
+ {
+ if (t->type == TOK_PREPROC_ID && t->text[1] == '!')
+ {
+ char *p2 = getenv(t->text + 2);
+ nasm_free(t->text);
+ if (p2)
+ t->text = nasm_strdup(p2);
+ else
+ t->text = NULL;
+ }
+ /* Expand local macros here and not during preprocessing */
+ if (expand_locals &&
+ t->type == TOK_PREPROC_ID && t->text &&
+ t->text[0] == '%' && t->text[1] == '$')
+ {
+ Context *ctx = get_ctx(t->text, FALSE);
+ if (ctx)
+ {
+ char buffer[40];
+ char *p2, *q = t->text + 2;
+
+ q += strspn(q, "$");
+ sprintf(buffer, "..@%lu.", ctx->number);
+ p2 = nasm_strcat(buffer, q);
+ nasm_free(t->text);
+ t->text = p2;
+ }
+ }
+ if (t->type == TOK_WHITESPACE)
+ {
+ len++;
+ }
+ else if (t->text)
+ {
+ len += strlen(t->text);
+ }
+ }
+ p = line = nasm_malloc(len + 1);
+ for (t = tlist; t; t = t->next)
+ {
+ if (t->type == TOK_WHITESPACE)
+ {
+ *p = ' ';
+ p++;
+ *p = '\0';
+ }
+ else if (t->text)
+ {
+ strcpy(p, t->text);
+ p += strlen(p);
+ }
+ }
+ *p = '\0';
+ return line;
+}
+
+/*
+ * A scanner, suitable for use by the expression evaluator, which
+ * operates on a line of Tokens. Expects a pointer to a pointer to
+ * the first token in the line to be passed in as its private_data
+ * field.
+ */
+static int
+ppscan(void *private_data, struct tokenval *tokval)
+{
+ Token **tlineptr = private_data;
+ Token *tline;
+
+ do
+ {
+ tline = *tlineptr;
+ *tlineptr = tline ? tline->next : NULL;
+ }
+ while (tline && (tline->type == TOK_WHITESPACE ||
+ tline->type == TOK_COMMENT));
+
+ if (!tline)
+ return tokval->t_type = TOKEN_EOS;
+
+ if (tline->text[0] == '$' && !tline->text[1])
+ return tokval->t_type = TOKEN_HERE;
+ if (tline->text[0] == '$' && tline->text[1] == '$' && !tline->text[2])
+ return tokval->t_type = TOKEN_BASE;
+
+ if (tline->type == TOK_ID)
+ {
+ tokval->t_charptr = tline->text;
+ if (tline->text[0] == '$')
+ {
+ tokval->t_charptr++;
+ return tokval->t_type = TOKEN_ID;
+ }
+
+ /*
+ * This is the only special case we actually need to worry
+ * about in this restricted context.
+ */
+ if (!nasm_stricmp(tline->text, "seg"))
+ return tokval->t_type = TOKEN_SEG;
+
+ return tokval->t_type = TOKEN_ID;
+ }
+
+ if (tline->type == TOK_NUMBER)
+ {
+ int rn_error;
+
+ tokval->t_integer = nasm_readnum(tline->text, &rn_error);
+ if (rn_error)
+ return tokval->t_type = TOKEN_ERRNUM;
+ tokval->t_charptr = NULL;
+ return tokval->t_type = TOKEN_NUM;
+ }
+
+ if (tline->type == TOK_STRING)
+ {
+ int rn_warn;
+ char q, *r;
+ size_t l;
+
+ r = tline->text;
+ q = *r++;
+ l = strlen(r);
+
+ if (l == 0 || r[l - 1] != q)
+ return tokval->t_type = TOKEN_ERRNUM;
+ tokval->t_integer = nasm_readstrnum(r, l - 1, &rn_warn);
+ if (rn_warn)
+ error(ERR_WARNING | ERR_PASS1, "character constant too long");
+ tokval->t_charptr = NULL;
+ return tokval->t_type = TOKEN_NUM;
+ }
+
+ if (tline->type == TOK_OTHER)
+ {
+ if (!strcmp(tline->text, "<<"))
+ return tokval->t_type = TOKEN_SHL;
+ if (!strcmp(tline->text, ">>"))
+ return tokval->t_type = TOKEN_SHR;
+ if (!strcmp(tline->text, "//"))
+ return tokval->t_type = TOKEN_SDIV;
+ if (!strcmp(tline->text, "%%"))
+ return tokval->t_type = TOKEN_SMOD;
+ if (!strcmp(tline->text, "=="))
+ return tokval->t_type = TOKEN_EQ;
+ if (!strcmp(tline->text, "<>"))
+ return tokval->t_type = TOKEN_NE;
+ if (!strcmp(tline->text, "!="))
+ return tokval->t_type = TOKEN_NE;
+ if (!strcmp(tline->text, "<="))
+ return tokval->t_type = TOKEN_LE;
+ if (!strcmp(tline->text, ">="))
+ return tokval->t_type = TOKEN_GE;
+ if (!strcmp(tline->text, "&&"))
+ return tokval->t_type = TOKEN_DBL_AND;
+ if (!strcmp(tline->text, "^^"))
+ return tokval->t_type = TOKEN_DBL_XOR;
+ if (!strcmp(tline->text, "||"))
+ return tokval->t_type = TOKEN_DBL_OR;
+ }
+
+ /*
+ * We have no other options: just return the first character of
+ * the token text.
+ */
+ return tokval->t_type = tline->text[0];
+}
+
+/*
+ * Compare a string to the name of an existing macro; this is a
+ * simple wrapper which calls either strcmp or nasm_stricmp
+ * depending on the value of the `casesense' parameter.
+ */
+static int
+mstrcmp(char *p, char *q, int casesense)
+{
+ return casesense ? strcmp(p, q) : nasm_stricmp(p, q);
+}
+
+/*
+ * Return the Context structure associated with a %$ token. Return
+ * NULL, having _already_ reported an error condition, if the
+ * context stack isn't deep enough for the supplied number of $
+ * signs.
+ * If all_contexts == TRUE, contexts that enclose current are
+ * also scanned for such smacro, until it is found; if not -
+ * only the context that directly results from the number of $'s
+ * in variable's name.
+ */
+static Context *
+get_ctx(char *name, int all_contexts)
+{
+ Context *ctx;
+ SMacro *m;
+ size_t i;
+
+ if (!name || name[0] != '%' || name[1] != '$')
+ return NULL;
+
+ if (!cstk)
+ {
+ error(ERR_NONFATAL, "`%s': context stack is empty", name);
+ return NULL;
+ }
+
+ for (i = strspn(name + 2, "$"), ctx = cstk; (i > 0) && ctx; i--)
+ {
+ ctx = ctx->next;
+/* i--; Lino - 02/25/02 */
+ }
+ if (!ctx)
+ {
+ error(ERR_NONFATAL, "`%s': context stack is only"
+ " %d level%s deep", name, i - 1, (i == 2 ? "" : "s"));
+ return NULL;
+ }
+ if (!all_contexts)
+ return ctx;
+
+ do
+ {
+ /* Search for this smacro in found context */
+ m = ctx->localmac;
+ while (m)
+ {
+ if (!mstrcmp(m->name, name, m->casesense))
+ return ctx;
+ m = m->next;
+ }
+ ctx = ctx->next;
+ }
+ while (ctx);
+ return NULL;
+}
+
+/*
+ * Open an include file. This routine must always return a valid
+ * file pointer if it returns - it's responsible for throwing an
+ * ERR_FATAL and bombing out completely if not. It should also try
+ * the include path one by one until it finds the file or reaches
+ * the end of the path.
+ */
+static FILE *
+inc_fopen(char *file, char **newname)
+{
+ FILE *fp;
+ char *combine = NULL, *c;
+ char *pb, *p1, *p2, *file2 = NULL;
+
+ /* Try to expand all %ENVVAR% in filename. Warn, and leave %string%
+ * intact, if ENVVAR is not set in the environment.
+ */
+ pb = file;
+ p1 = pb;
+ for (;;) {
+ char *env;
+ while (*p1 != '\0' && *p1 != '%')
+ p1++;
+ if (*p1 == '\0')
+ break;
+ p2 = p1+1;
+ while (*p2 != '\0' && *p2 != '%')
+ p2++;
+ if (*p2 == '\0')
+ break;
+ /* Okay, we have a %...%, with p1 pointing to the first %, and p2
+ * pointing to the second %.
+ */
+ *p2 = '\0';
+ env = getenv(p1+1);
+ if (!env) {
+ /* warn, restore %, and continue looking */
+ error(ERR_WARNING, "environment variable `%s' does not exist",
+ p1+1);
+ *p2 = '%';
+ p1 = p2+1;
+ continue;
+ }
+ /* need to expand */
+ if (!file2) {
+ file2 = nasm_malloc(strlen(file)+strlen(env)+1);
+ file2[0] = '\0';
+ } else
+ file2 = nasm_realloc(file2, strlen(file2)+strlen(env)+1);
+ *p1 = '\0';
+ strcat(file2, pb);
+ strcat(file2, env);
+ pb = p2+1;
+ p1 = pb;
+ }
+ /* add tail end; string is long enough that we don't need to realloc */
+ if (file2)
+ strcat(file2, pb);
+
+ fp = yasm_fopen_include(file2 ? file2 : file, nasm_src_get_fname(), "r",
+ &combine);
+ if (!fp && tasm_compatible_mode)
+ {
+ char *thefile = file2 ? file2 : file;
+ /* try a few case combinations */
+ do {
+ for (c = thefile; *c; c++)
+ *c = toupper(*c);
+ fp = yasm_fopen_include(thefile, nasm_src_get_fname(), "r", &combine);
+ if (fp) break;
+ *thefile = tolower(*thefile);
+ fp = yasm_fopen_include(thefile, nasm_src_get_fname(), "r", &combine);
+ if (fp) break;
+ for (c = thefile; *c; c++)
+ *c = tolower(*c);
+ fp = yasm_fopen_include(thefile, nasm_src_get_fname(), "r", &combine);
+ if (fp) break;
+ *thefile = toupper(*thefile);
+ fp = yasm_fopen_include(thefile, nasm_src_get_fname(), "r", &combine);
+ if (fp) break;
+ } while (0);
+ }
+ if (!fp)
+ error(ERR_FATAL, "unable to open include file `%s'",
+ file2 ? file2 : file);
+ nasm_preproc_add_dep(combine);
+
+ if (file2)
+ nasm_free(file2);
+
+ *newname = combine;
+ return fp;
+}
+
+/*
+ * Determine if we should warn on defining a single-line macro of
+ * name `name', with `nparam' parameters. If nparam is 0 or -1, will
+ * return TRUE if _any_ single-line macro of that name is defined.
+ * Otherwise, will return TRUE if a single-line macro with either
+ * `nparam' or no parameters is defined.
+ *
+ * If a macro with precisely the right number of parameters is
+ * defined, or nparam is -1, the address of the definition structure
+ * will be returned in `defn'; otherwise NULL will be returned. If `defn'
+ * is NULL, no action will be taken regarding its contents, and no
+ * error will occur.
+ *
+ * Note that this is also called with nparam zero to resolve
+ * `ifdef'.
+ *
+ * If you already know which context macro belongs to, you can pass
+ * the context pointer as first parameter; if you won't but name begins
+ * with %$ the context will be automatically computed. If all_contexts
+ * is true, macro will be searched in outer contexts as well.
+ */
+static int
+smacro_defined(Context * ctx, char *name, int nparam, SMacro ** defn,
+ int nocase)
+{
+ SMacro *m;
+ int highest_level = -1;
+
+ if (ctx)
+ m = ctx->localmac;
+ else if (name[0] == '%' && name[1] == '$')
+ {
+ if (cstk)
+ ctx = get_ctx(name, FALSE);
+ if (!ctx)
+ return FALSE; /* got to return _something_ */
+ m = ctx->localmac;
+ }
+ else
+ m = smacros[hash(name)];
+
+ while (m)
+ {
+ if (!mstrcmp(m->name, name, m->casesense && nocase) &&
+ (nparam <= 0 || m->nparam == 0 || nparam == m->nparam) && (highest_level < 0 || m->level > highest_level))
+ {
+ highest_level = m->level;
+ if (defn)
+ {
+ if (nparam == m->nparam || nparam == -1)
+ *defn = m;
+ else
+ *defn = NULL;
+ }
+ }
+ m = m->next;
+ }
+
+ return highest_level >= 0;
+}
+
+/*
+ * Count and mark off the parameters in a multi-line macro call.
+ * This is called both from within the multi-line macro expansion
+ * code, and also to mark off the default parameters when provided
+ * in a %macro definition line.
+ */
+static void
+count_mmac_params(Token * t, int *nparam, Token *** params)
+{
+ int paramsize, brace;
+
+ *nparam = paramsize = 0;
+ *params = NULL;
+ while (t)
+ {
+ if (*nparam+1 >= paramsize)
+ {
+ paramsize += PARAM_DELTA;
+ *params = nasm_realloc(*params, sizeof(**params) * paramsize);
+ }
+ skip_white_(t);
+ brace = FALSE;
+ if (tok_is_(t, "{"))
+ brace = TRUE;
+ (*params)[(*nparam)++] = t;
+ while (tok_isnt_(t, brace ? "}" : ","))
+ t = t->next;
+ if (t)
+ { /* got a comma/brace */
+ t = t->next;
+ if (brace)
+ {
+ /*
+ * Now we've found the closing brace, look further
+ * for the comma.
+ */
+ skip_white_(t);
+ if (tok_isnt_(t, ","))
+ {
+ error(ERR_NONFATAL,
+ "braces do not enclose all of macro parameter");
+ while (tok_isnt_(t, ","))
+ t = t->next;
+ }
+ if (t)
+ t = t->next; /* eat the comma */
+ }
+ }
+ }
+}
+
+/*
+ * Determine whether one of the various `if' conditions is true or
+ * not.
+ *
+ * We must free the tline we get passed.
+ */
+static int
+if_condition(Token * tline, int i)
+{
+ int j, casesense;
+ Token *t, *tt, **tptr, *origline;
+ struct tokenval tokval;
+ yasm_expr *evalresult;
+ yasm_intnum *intn;
+
+ origline = tline;
+
+ switch (i)
+ {
+ case PP_IFCTX:
+ case PP_ELIFCTX:
+ case PP_IFNCTX:
+ case PP_ELIFNCTX:
+ j = FALSE; /* have we matched yet? */
+ while (cstk && tline)
+ {
+ skip_white_(tline);
+ if (!tline || tline->type != TOK_ID)
+ {
+ error(ERR_NONFATAL,
+ "`%s' expects context identifiers",
+ directives[i]);
+ free_tlist(origline);
+ return -1;
+ }
+ if (!nasm_stricmp(tline->text, cstk->name))
+ j = TRUE;
+ tline = tline->next;
+ }
+ if (i == PP_IFNCTX || i == PP_ELIFNCTX)
+ j = !j;
+ free_tlist(origline);
+ return j;
+
+ case PP_IFDEF:
+ case PP_ELIFDEF:
+ case PP_IFNDEF:
+ case PP_ELIFNDEF:
+ j = FALSE; /* have we matched yet? */
+ while (tline)
+ {
+ skip_white_(tline);
+ if (!tline || (tline->type != TOK_ID &&
+ (tline->type != TOK_PREPROC_ID ||
+ tline->text[1] != '$')))
+ {
+ error(ERR_NONFATAL,
+ "`%s' expects macro identifiers",
+ directives[i]);
+ free_tlist(origline);
+ return -1;
+ }
+ if (smacro_defined(NULL, tline->text, 0, NULL, 1))
+ j = TRUE;
+ tline = tline->next;
+ }
+ if (i == PP_IFNDEF || i == PP_ELIFNDEF)
+ j = !j;
+ free_tlist(origline);
+ return j;
+
+ case PP_IFIDN:
+ case PP_ELIFIDN:
+ case PP_IFNIDN:
+ case PP_ELIFNIDN:
+ case PP_IFIDNI:
+ case PP_ELIFIDNI:
+ case PP_IFNIDNI:
+ case PP_ELIFNIDNI:
+ tline = expand_smacro(tline);
+ t = tt = tline;
+ while (tok_isnt_(tt, ","))
+ tt = tt->next;
+ if (!tt)
+ {
+ error(ERR_NONFATAL,
+ "`%s' expects two comma-separated arguments",
+ directives[i]);
+ free_tlist(tline);
+ return -1;
+ }
+ tt = tt->next;
+ casesense = (i == PP_IFIDN || i == PP_ELIFIDN ||
+ i == PP_IFNIDN || i == PP_ELIFNIDN);
+ j = TRUE; /* assume equality unless proved not */
+ while ((t->type != TOK_OTHER || strcmp(t->text, ",")) && tt)
+ {
+ if (tt->type == TOK_OTHER && !strcmp(tt->text, ","))
+ {
+ error(ERR_NONFATAL, "`%s': more than one comma on line",
+ directives[i]);
+ free_tlist(tline);
+ return -1;
+ }
+ if (t->type == TOK_WHITESPACE)
+ {
+ t = t->next;
+ continue;
+ }
+ if (tt->type == TOK_WHITESPACE)
+ {
+ tt = tt->next;
+ continue;
+ }
+ if (tt->type != t->type)
+ {
+ j = FALSE; /* found mismatching tokens */
+ break;
+ }
+ /* Unify surrounding quotes for strings */
+ if (t->type == TOK_STRING)
+ {
+ tt->text[0] = t->text[0];
+ tt->text[strlen(tt->text) - 1] = t->text[0];
+ }
+ if (mstrcmp(tt->text, t->text, casesense) != 0)
+ {
+ j = FALSE; /* found mismatching tokens */
+ break;
+ }
+
+ t = t->next;
+ tt = tt->next;
+ }
+ if ((t->type != TOK_OTHER || strcmp(t->text, ",")) || tt)
+ j = FALSE; /* trailing gunk on one end or other */
+ if (i == PP_IFNIDN || i == PP_ELIFNIDN ||
+ i == PP_IFNIDNI || i == PP_ELIFNIDNI)
+ j = !j;
+ free_tlist(tline);
+ return j;
+
+ case PP_IFMACRO:
+ case PP_ELIFMACRO:
+ case PP_IFNMACRO:
+ case PP_ELIFNMACRO:
+ {
+ int found = 0;
+ MMacro searching, *mmac;
+
+ tline = tline->next;
+ skip_white_(tline);
+ tline = expand_id(tline);
+ if (!tok_type_(tline, TOK_ID))
+ {
+ error(ERR_NONFATAL,
+ "`%s' expects a macro name",
+ directives[i]);
+ return -1;
+ }
+ searching.name = nasm_strdup(tline->text);
+ searching.casesense = (i == PP_MACRO);
+ searching.plus = FALSE;
+ searching.nolist = FALSE;
+ searching.in_progress = FALSE;
+ searching.rep_nest = NULL;
+ searching.nparam_min = 0;
+ searching.nparam_max = INT_MAX;
+ tline = expand_smacro(tline->next);
+ skip_white_(tline);
+ if (!tline)
+ {
+ } else if (!tok_type_(tline, TOK_NUMBER))
+ {
+ error(ERR_NONFATAL,
+ "`%s' expects a parameter count or nothing",
+ directives[i]);
+ }
+ else
+ {
+ intn = nasm_readnum(tline->text, &j);
+ searching.nparam_min = searching.nparam_max =
+ yasm_intnum_get_int(intn);
+ yasm_intnum_destroy(intn);
+ if (j)
+ error(ERR_NONFATAL,
+ "unable to parse parameter count `%s'",
+ tline->text);
+ }
+ if (tline && tok_is_(tline->next, "-"))
+ {
+ tline = tline->next->next;
+ if (tok_is_(tline, "*"))
+ searching.nparam_max = INT_MAX;
+ else if (!tok_type_(tline, TOK_NUMBER))
+ error(ERR_NONFATAL,
+ "`%s' expects a parameter count after `-'",
+ directives[i]);
+ else
+ {
+ intn = nasm_readnum(tline->text, &j);
+ searching.nparam_max = yasm_intnum_get_int(intn);
+ yasm_intnum_destroy(intn);
+ if (j)
+ error(ERR_NONFATAL,
+ "unable to parse parameter count `%s'",
+ tline->text);
+ if (searching.nparam_min > searching.nparam_max)
+ error(ERR_NONFATAL,
+ "minimum parameter count exceeds maximum");
+ }
+ }
+ if (tline && tok_is_(tline->next, "+"))
+ {
+ tline = tline->next;
+ searching.plus = TRUE;
+ }
+ mmac = mmacros[hash(searching.name)];
+ while (mmac)
+ {
+ if (!strcmp(mmac->name, searching.name) &&
+ (mmac->nparam_min <= searching.nparam_max
+ || searching.plus)
+ && (searching.nparam_min <= mmac->nparam_max
+ || mmac->plus))
+ {
+ found = TRUE;
+ break;
+ }
+ mmac = mmac->next;
+ }
+ nasm_free(searching.name);
+ free_tlist(origline);
+ if (i == PP_IFNMACRO || i == PP_ELIFNMACRO)
+ found = !found;
+ return found;
+ }
+
+ case PP_IFID:
+ case PP_ELIFID:
+ case PP_IFNID:
+ case PP_ELIFNID:
+ case PP_IFNUM:
+ case PP_ELIFNUM:
+ case PP_IFNNUM:
+ case PP_ELIFNNUM:
+ case PP_IFSTR:
+ case PP_ELIFSTR:
+ case PP_IFNSTR:
+ case PP_ELIFNSTR:
+ tline = expand_smacro(tline);
+ t = tline;
+ while (tok_type_(t, TOK_WHITESPACE))
+ t = t->next;
+ j = FALSE; /* placate optimiser */
+ if (t)
+ switch (i)
+ {
+ case PP_IFID:
+ case PP_ELIFID:
+ case PP_IFNID:
+ case PP_ELIFNID:
+ j = (t->type == TOK_ID);
+ break;
+ case PP_IFNUM:
+ case PP_ELIFNUM:
+ case PP_IFNNUM:
+ case PP_ELIFNNUM:
+ j = (t->type == TOK_NUMBER);
+ break;
+ case PP_IFSTR:
+ case PP_ELIFSTR:
+ case PP_IFNSTR:
+ case PP_ELIFNSTR:
+ j = (t->type == TOK_STRING);
+ break;
+ }
+ if (i == PP_IFNID || i == PP_ELIFNID ||
+ i == PP_IFNNUM || i == PP_ELIFNNUM ||
+ i == PP_IFNSTR || i == PP_ELIFNSTR)
+ j = !j;
+ free_tlist(tline);
+ return j;
+
+ case PP_IF:
+ case PP_ELIF:
+ t = tline = expand_smacro(tline);
+ tptr = &t;
+ tokval.t_type = TOKEN_INVALID;
+ evalresult = evaluate(ppscan, tptr, &tokval, pass | CRITICAL,
+ error);
+ free_tlist(tline);
+ if (!evalresult)
+ return -1;
+ if (tokval.t_type)
+ error(ERR_WARNING,
+ "trailing garbage after expression ignored");
+ intn = yasm_expr_get_intnum(&evalresult, 0);
+ if (!intn)
+ {
+ error(ERR_NONFATAL,
+ "non-constant value given to `%s'", directives[i]);
+ yasm_expr_destroy(evalresult);
+ return -1;
+ }
+ j = !yasm_intnum_is_zero(intn);
+ yasm_expr_destroy(evalresult);
+ return j;
+
+ default:
+ error(ERR_FATAL,
+ "preprocessor directive `%s' not yet implemented",
+ directives[i]);
+ free_tlist(origline);
+ return -1; /* yeah, right */
+ }
+}
+
+/*
+ * Expand macros in a string. Used in %error and %include directives.
+ * First tokenise the string, apply "expand_smacro" and then de-tokenise back.
+ * The returned variable should ALWAYS be freed after usage.
+ */
+static void
+expand_macros_in_string(char **p)
+{
+ Token *line = tokenise(*p);
+ line = expand_smacro(line);
+ *p = detoken(line, FALSE);
+}
+
+/**
+ * find and process preprocessor directive in passed line
+ * Find out if a line contains a preprocessor directive, and deal
+ * with it if so.
*
- * If you already know which context macro belongs to, you can pass
- * the context pointer as first parameter; if you won't but name begins
- * with %$ the context will be automatically computed. If all_contexts
- * is true, macro will be searched in outer contexts as well.
- */
-static int
-smacro_defined(Context * ctx, char *name, int nparam, SMacro ** defn,
- int nocase)
-{
- SMacro *m;
- int highest_level = -1;
-
- if (ctx)
- m = ctx->localmac;
- else if (name[0] == '%' && name[1] == '$')
- {
- if (cstk)
- ctx = get_ctx(name, FALSE);
- if (!ctx)
- return FALSE; /* got to return _something_ */
- m = ctx->localmac;
- }
- else
- m = smacros[hash(name)];
-
- while (m)
- {
- if (!mstrcmp(m->name, name, m->casesense && nocase) &&
- (nparam <= 0 || m->nparam == 0 || nparam == m->nparam) && (highest_level < 0 || m->level > highest_level))
- {
- highest_level = m->level;
- if (defn)
- {
- if (nparam == m->nparam || nparam == -1)
- *defn = m;
- else
- *defn = NULL;
- }
- }
- m = m->next;
- }
-
- return highest_level >= 0;
-}
-
-/*
- * Count and mark off the parameters in a multi-line macro call.
- * This is called both from within the multi-line macro expansion
- * code, and also to mark off the default parameters when provided
- * in a %macro definition line.
- */
-static void
-count_mmac_params(Token * t, int *nparam, Token *** params)
-{
- int paramsize, brace;
-
- *nparam = paramsize = 0;
- *params = NULL;
- while (t)
- {
- if (*nparam+1 >= paramsize)
- {
- paramsize += PARAM_DELTA;
- *params = nasm_realloc(*params, sizeof(**params) * paramsize);
- }
- skip_white_(t);
- brace = FALSE;
- if (tok_is_(t, "{"))
- brace = TRUE;
- (*params)[(*nparam)++] = t;
- while (tok_isnt_(t, brace ? "}" : ","))
- t = t->next;
- if (t)
- { /* got a comma/brace */
- t = t->next;
- if (brace)
- {
- /*
- * Now we've found the closing brace, look further
- * for the comma.
- */
- skip_white_(t);
- if (tok_isnt_(t, ","))
- {
- error(ERR_NONFATAL,
- "braces do not enclose all of macro parameter");
- while (tok_isnt_(t, ","))
- t = t->next;
- }
- if (t)
- t = t->next; /* eat the comma */
- }
- }
- }
-}
-
-/*
- * Determine whether one of the various `if' conditions is true or
- * not.
+ * If a directive _is_ found, it is the responsibility of this routine
+ * (and not the caller) to free_tlist() the line.
+ *
+ * @param tline a pointer to the current tokeninzed line linked list
+ * @return DIRECTIVE_FOUND or NO_DIRECTIVE_FOUND
*
- * We must free the tline we get passed.
- */
-static int
-if_condition(Token * tline, int i)
-{
- int j, casesense;
- Token *t, *tt, **tptr, *origline;
- struct tokenval tokval;
- yasm_expr *evalresult;
- yasm_intnum *intn;
-
- origline = tline;
-
- switch (i)
- {
- case PP_IFCTX:
- case PP_ELIFCTX:
- case PP_IFNCTX:
- case PP_ELIFNCTX:
- j = FALSE; /* have we matched yet? */
- while (cstk && tline)
- {
- skip_white_(tline);
- if (!tline || tline->type != TOK_ID)
- {
- error(ERR_NONFATAL,
- "`%s' expects context identifiers",
- directives[i]);
- free_tlist(origline);
- return -1;
- }
- if (!nasm_stricmp(tline->text, cstk->name))
- j = TRUE;
- tline = tline->next;
- }
- if (i == PP_IFNCTX || i == PP_ELIFNCTX)
- j = !j;
- free_tlist(origline);
- return j;
-
- case PP_IFDEF:
- case PP_ELIFDEF:
- case PP_IFNDEF:
- case PP_ELIFNDEF:
- j = FALSE; /* have we matched yet? */
- while (tline)
- {
- skip_white_(tline);
- if (!tline || (tline->type != TOK_ID &&
- (tline->type != TOK_PREPROC_ID ||
- tline->text[1] != '$')))
- {
- error(ERR_NONFATAL,
- "`%s' expects macro identifiers",
- directives[i]);
- free_tlist(origline);
- return -1;
- }
- if (smacro_defined(NULL, tline->text, 0, NULL, 1))
- j = TRUE;
- tline = tline->next;
- }
- if (i == PP_IFNDEF || i == PP_ELIFNDEF)
- j = !j;
- free_tlist(origline);
- return j;
-
- case PP_IFIDN:
- case PP_ELIFIDN:
- case PP_IFNIDN:
- case PP_ELIFNIDN:
- case PP_IFIDNI:
- case PP_ELIFIDNI:
- case PP_IFNIDNI:
- case PP_ELIFNIDNI:
- tline = expand_smacro(tline);
- t = tt = tline;
- while (tok_isnt_(tt, ","))
- tt = tt->next;
- if (!tt)
- {
- error(ERR_NONFATAL,
- "`%s' expects two comma-separated arguments",
- directives[i]);
- free_tlist(tline);
- return -1;
- }
- tt = tt->next;
- casesense = (i == PP_IFIDN || i == PP_ELIFIDN ||
- i == PP_IFNIDN || i == PP_ELIFNIDN);
- j = TRUE; /* assume equality unless proved not */
- while ((t->type != TOK_OTHER || strcmp(t->text, ",")) && tt)
- {
- if (tt->type == TOK_OTHER && !strcmp(tt->text, ","))
- {
- error(ERR_NONFATAL, "`%s': more than one comma on line",
- directives[i]);
- free_tlist(tline);
- return -1;
- }
- if (t->type == TOK_WHITESPACE)
- {
- t = t->next;
- continue;
- }
- if (tt->type == TOK_WHITESPACE)
- {
- tt = tt->next;
- continue;
- }
- if (tt->type != t->type)
- {
- j = FALSE; /* found mismatching tokens */
- break;
- }
- /* Unify surrounding quotes for strings */
- if (t->type == TOK_STRING)
- {
- tt->text[0] = t->text[0];
- tt->text[strlen(tt->text) - 1] = t->text[0];
- }
- if (mstrcmp(tt->text, t->text, casesense) != 0)
- {
- j = FALSE; /* found mismatching tokens */
- break;
- }
-
- t = t->next;
- tt = tt->next;
- }
- if ((t->type != TOK_OTHER || strcmp(t->text, ",")) || tt)
- j = FALSE; /* trailing gunk on one end or other */
- if (i == PP_IFNIDN || i == PP_ELIFNIDN ||
- i == PP_IFNIDNI || i == PP_ELIFNIDNI)
- j = !j;
- free_tlist(tline);
- return j;
-
- case PP_IFMACRO:
- case PP_ELIFMACRO:
- case PP_IFNMACRO:
- case PP_ELIFNMACRO:
- {
- int found = 0;
- MMacro searching, *mmac;
-
- tline = tline->next;
- skip_white_(tline);
- tline = expand_id(tline);
- if (!tok_type_(tline, TOK_ID))
- {
- error(ERR_NONFATAL,
- "`%s' expects a macro name",
- directives[i]);
- return -1;
- }
- searching.name = nasm_strdup(tline->text);
- searching.casesense = (i == PP_MACRO);
- searching.plus = FALSE;
- searching.nolist = FALSE;
- searching.in_progress = FALSE;
- searching.rep_nest = NULL;
- searching.nparam_min = 0;
- searching.nparam_max = INT_MAX;
- tline = expand_smacro(tline->next);
- skip_white_(tline);
- if (!tline)
- {
- } else if (!tok_type_(tline, TOK_NUMBER))
- {
- error(ERR_NONFATAL,
- "`%s' expects a parameter count or nothing",
- directives[i]);
- }
- else
- {
- intn = nasm_readnum(tline->text, &j);
- searching.nparam_min = searching.nparam_max =
- yasm_intnum_get_int(intn);
- yasm_intnum_destroy(intn);
- if (j)
- error(ERR_NONFATAL,
- "unable to parse parameter count `%s'",
- tline->text);
- }
- if (tline && tok_is_(tline->next, "-"))
- {
- tline = tline->next->next;
- if (tok_is_(tline, "*"))
- searching.nparam_max = INT_MAX;
- else if (!tok_type_(tline, TOK_NUMBER))
- error(ERR_NONFATAL,
- "`%s' expects a parameter count after `-'",
- directives[i]);
- else
- {
- intn = nasm_readnum(tline->text, &j);
- searching.nparam_max = yasm_intnum_get_int(intn);
- yasm_intnum_destroy(intn);
- if (j)
- error(ERR_NONFATAL,
- "unable to parse parameter count `%s'",
- tline->text);
- if (searching.nparam_min > searching.nparam_max)
- error(ERR_NONFATAL,
- "minimum parameter count exceeds maximum");
- }
- }
- if (tline && tok_is_(tline->next, "+"))
- {
- tline = tline->next;
- searching.plus = TRUE;
- }
- mmac = mmacros[hash(searching.name)];
- while (mmac)
- {
- if (!strcmp(mmac->name, searching.name) &&
- (mmac->nparam_min <= searching.nparam_max
- || searching.plus)
- && (searching.nparam_min <= mmac->nparam_max
- || mmac->plus))
- {
- found = TRUE;
- break;
- }
- mmac = mmac->next;
- }
- nasm_free(searching.name);
- free_tlist(origline);
- if (i == PP_IFNMACRO || i == PP_ELIFNMACRO)
- found = !found;
- return found;
- }
-
- case PP_IFID:
- case PP_ELIFID:
- case PP_IFNID:
- case PP_ELIFNID:
- case PP_IFNUM:
- case PP_ELIFNUM:
- case PP_IFNNUM:
- case PP_ELIFNNUM:
- case PP_IFSTR:
- case PP_ELIFSTR:
- case PP_IFNSTR:
- case PP_ELIFNSTR:
- tline = expand_smacro(tline);
- t = tline;
- while (tok_type_(t, TOK_WHITESPACE))
- t = t->next;
- j = FALSE; /* placate optimiser */
- if (t)
- switch (i)
- {
- case PP_IFID:
- case PP_ELIFID:
- case PP_IFNID:
- case PP_ELIFNID:
- j = (t->type == TOK_ID);
- break;
- case PP_IFNUM:
- case PP_ELIFNUM:
- case PP_IFNNUM:
- case PP_ELIFNNUM:
- j = (t->type == TOK_NUMBER);
- break;
- case PP_IFSTR:
- case PP_ELIFSTR:
- case PP_IFNSTR:
- case PP_ELIFNSTR:
- j = (t->type == TOK_STRING);
- break;
- }
- if (i == PP_IFNID || i == PP_ELIFNID ||
- i == PP_IFNNUM || i == PP_ELIFNNUM ||
- i == PP_IFNSTR || i == PP_ELIFNSTR)
- j = !j;
- free_tlist(tline);
- return j;
-
- case PP_IF:
- case PP_ELIF:
- t = tline = expand_smacro(tline);
- tptr = &t;
- tokval.t_type = TOKEN_INVALID;
- evalresult = evaluate(ppscan, tptr, &tokval, pass | CRITICAL,
- error);
- free_tlist(tline);
- if (!evalresult)
- return -1;
- if (tokval.t_type)
- error(ERR_WARNING,
- "trailing garbage after expression ignored");
- intn = yasm_expr_get_intnum(&evalresult, 0);
- if (!intn)
- {
- error(ERR_NONFATAL,
- "non-constant value given to `%s'", directives[i]);
- yasm_expr_destroy(evalresult);
- return -1;
- }
- j = !yasm_intnum_is_zero(intn);
- yasm_expr_destroy(evalresult);
- return j;
-
- default:
- error(ERR_FATAL,
- "preprocessor directive `%s' not yet implemented",
- directives[i]);
- free_tlist(origline);
- return -1; /* yeah, right */
- }
-}
-
-/*
- * Expand macros in a string. Used in %error and %include directives.
- * First tokenise the string, apply "expand_smacro" and then de-tokenise back.
- * The returned variable should ALWAYS be freed after usage.
- */
-static void
-expand_macros_in_string(char **p)
-{
- Token *line = tokenise(*p);
- line = expand_smacro(line);
- *p = detoken(line, FALSE);
-}
-
-/**
- * find and process preprocessor directive in passed line
- * Find out if a line contains a preprocessor directive, and deal
- * with it if so.
- *
- * If a directive _is_ found, it is the responsibility of this routine
- * (and not the caller) to free_tlist() the line.
- *
- * @param tline a pointer to the current tokeninzed line linked list
- * @return DIRECTIVE_FOUND or NO_DIRECTIVE_FOUND
- *
- */
-static int
-do_directive(Token * tline)
-{
- int i, j, k, m, nparam, nolist;
- int offset;
- char *p, *mname, *newname;
- Include *inc;
- Context *ctx;
- Cond *cond;
- SMacro *smac, **smhead;
- MMacro *mmac;
- Token *t, *tt, *param_start, *macro_start, *last, **tptr, *origline;
- Line *l;
- struct tokenval tokval;
- yasm_expr *evalresult;
- MMacro *tmp_defining; /* Used when manipulating rep_nest */
- yasm_intnum *intn;
-
- origline = tline;
-
- skip_white_(tline);
- if (!tok_type_(tline, TOK_PREPROC_ID) ||
- (tline->text[1] == '%' || tline->text[1] == '$'
- || tline->text[1] == '!'))
- return NO_DIRECTIVE_FOUND;
-
- i = -1;
- j = elements(directives);
- while (j - i > 1)
- {
- k = (j + i) / 2;
- m = nasm_stricmp(tline->text, directives[k]);
- if (m == 0) {
- if (tasm_compatible_mode) {
- i = k;
- j = -2;
- } else if (k != PP_ARG && k != PP_LOCAL && k != PP_STACKSIZE) {
- i = k;
- j = -2;
- }
- break;
- }
- else if (m < 0) {
- j = k;
- }
- else
- i = k;
- }
-
- /*
- * If we're in a non-emitting branch of a condition construct,
- * or walking to the end of an already terminated %rep block,
- * we should ignore all directives except for condition
- * directives.
- */
- if (((istk->conds && !emitting(istk->conds->state)) ||
- (istk->mstk && !istk->mstk->in_progress)) &&
- !is_condition(i))
- {
- return NO_DIRECTIVE_FOUND;
- }
-
- /*
- * If we're defining a macro or reading a %rep block, we should
- * ignore all directives except for %macro/%imacro (which
- * generate an error), %endm/%endmacro, and (only if we're in a
- * %rep block) %endrep. If we're in a %rep block, another %rep
- * causes an error, so should be let through.
- */
- if (defining && i != PP_MACRO && i != PP_IMACRO &&
- i != PP_ENDMACRO && i != PP_ENDM &&
- (defining->name || (i != PP_ENDREP && i != PP_REP)))
- {
- return NO_DIRECTIVE_FOUND;
- }
-
- if (defining) {
- if (i == PP_MACRO || i == PP_IMACRO) {
- nested_mac_count++;
- return NO_DIRECTIVE_FOUND;
- } else if (nested_mac_count > 0) {
- if (i == PP_ENDMACRO) {
- nested_mac_count--;
- return NO_DIRECTIVE_FOUND;
- }
- }
- if (!defining->name) {
- if (i == PP_REP) {
- nested_rep_count++;
- return NO_DIRECTIVE_FOUND;
- } else if (nested_rep_count > 0) {
- if (i == PP_ENDREP) {
- nested_rep_count--;
- return NO_DIRECTIVE_FOUND;
- }
- }
- }
- }
-
- if (j != -2)
- {
- error(ERR_NONFATAL, "unknown preprocessor directive `%s'",
- tline->text);
- return NO_DIRECTIVE_FOUND; /* didn't get it */
- }
-
- switch (i)
- {
- case PP_STACKSIZE:
- /* Directive to tell NASM what the default stack size is. The
- * default is for a 16-bit stack, and this can be overriden with
- * %stacksize large.
- * the following form:
- *
- * ARG arg1:WORD, arg2:DWORD, arg4:QWORD
- */
- tline = tline->next;
- if (tline && tline->type == TOK_WHITESPACE)
- tline = tline->next;
- if (!tline || tline->type != TOK_ID)
- {
- error(ERR_NONFATAL, "`%%stacksize' missing size parameter");
- free_tlist(origline);
- return DIRECTIVE_FOUND;
- }
- if (nasm_stricmp(tline->text, "flat") == 0)
- {
- /* All subsequent ARG directives are for a 32-bit stack */
- StackSize = 4;
- StackPointer = "ebp";
- ArgOffset = 8;
- LocalOffset = 4;
- }
- else if (nasm_stricmp(tline->text, "large") == 0)
- {
- /* All subsequent ARG directives are for a 16-bit stack,
- * far function call.
- */
- StackSize = 2;
- StackPointer = "bp";
- ArgOffset = 4;
- LocalOffset = 2;
- }
- else if (nasm_stricmp(tline->text, "small") == 0)
- {
- /* All subsequent ARG directives are for a 16-bit stack,
- * far function call. We don't support near functions.
- */
- StackSize = 2;
- StackPointer = "bp";
- ArgOffset = 6;
- LocalOffset = 2;
- }
- else
- {
- error(ERR_NONFATAL, "`%%stacksize' invalid size type");
- free_tlist(origline);
- return DIRECTIVE_FOUND;
- }
- free_tlist(origline);
- return DIRECTIVE_FOUND;
-
- case PP_ARG:
- /* TASM like ARG directive to define arguments to functions, in
- * the following form:
- *
- * ARG arg1:WORD, arg2:DWORD, arg4:QWORD
- */
- offset = ArgOffset;
- do
- {
- char *arg, directive[256];
- int size = StackSize;
-
- /* Find the argument name */
- tline = tline->next;
- if (tline && tline->type == TOK_WHITESPACE)
- tline = tline->next;
- if (!tline || tline->type != TOK_ID)
- {
- error(ERR_NONFATAL, "`%%arg' missing argument parameter");
- free_tlist(origline);
- return DIRECTIVE_FOUND;
- }
- arg = tline->text;
-
- /* Find the argument size type */
- tline = tline->next;
- if (!tline || tline->type != TOK_OTHER
- || tline->text[0] != ':')
- {
- error(ERR_NONFATAL,
- "Syntax error processing `%%arg' directive");
- free_tlist(origline);
- return DIRECTIVE_FOUND;
- }
- tline = tline->next;
- if (!tline || tline->type != TOK_ID)
- {
- error(ERR_NONFATAL,
- "`%%arg' missing size type parameter");
- free_tlist(origline);
- return DIRECTIVE_FOUND;
- }
-
- /* Allow macro expansion of type parameter */
- tt = tokenise(tline->text);
- tt = expand_smacro(tt);
- if (nasm_stricmp(tt->text, "byte") == 0)
- {
- size = MAX(StackSize, 1);
- }
- else if (nasm_stricmp(tt->text, "word") == 0)
- {
- size = MAX(StackSize, 2);
- }
- else if (nasm_stricmp(tt->text, "dword") == 0)
- {
- size = MAX(StackSize, 4);
- }
- else if (nasm_stricmp(tt->text, "qword") == 0)
- {
- size = MAX(StackSize, 8);
- }
- else if (nasm_stricmp(tt->text, "tword") == 0)
- {
- size = MAX(StackSize, 10);
- }
- else
- {
- error(ERR_NONFATAL,
- "Invalid size type for `%%arg' missing directive");
- free_tlist(tt);
- free_tlist(origline);
- return DIRECTIVE_FOUND;
- }
- free_tlist(tt);
-
- /* Now define the macro for the argument */
- sprintf(directive, "%%define %s (%s+%d)", arg, StackPointer,
- offset);
- do_directive(tokenise(directive));
- offset += size;
-
- /* Move to the next argument in the list */
- tline = tline->next;
- if (tline && tline->type == TOK_WHITESPACE)
- tline = tline->next;
- }
- while (tline && tline->type == TOK_OTHER
- && tline->text[0] == ',');
- free_tlist(origline);
- return DIRECTIVE_FOUND;
-
- case PP_LOCAL:
- /* TASM like LOCAL directive to define local variables for a
- * function, in the following form:
- *
- * LOCAL local1:WORD, local2:DWORD, local4:QWORD = LocalSize
- *
- * The '= LocalSize' at the end is ignored by NASM, but is
- * required by TASM to define the local parameter size (and used
- * by the TASM macro package).
- */
- offset = LocalOffset;
- do
- {
- char *local, directive[256];
- int size = StackSize;
-
- /* Find the argument name */
- tline = tline->next;
- if (tline && tline->type == TOK_WHITESPACE)
- tline = tline->next;
- if (!tline || tline->type != TOK_ID)
- {
- error(ERR_NONFATAL,
- "`%%local' missing argument parameter");
- free_tlist(origline);
- return DIRECTIVE_FOUND;
- }
- local = tline->text;
-
- /* Find the argument size type */
- tline = tline->next;
- if (!tline || tline->type != TOK_OTHER
- || tline->text[0] != ':')
- {
- error(ERR_NONFATAL,
- "Syntax error processing `%%local' directive");
- free_tlist(origline);
- return DIRECTIVE_FOUND;
- }
- tline = tline->next;
- if (!tline || tline->type != TOK_ID)
- {
- error(ERR_NONFATAL,
- "`%%local' missing size type parameter");
- free_tlist(origline);
- return DIRECTIVE_FOUND;
- }
-
- /* Allow macro expansion of type parameter */
- tt = tokenise(tline->text);
- tt = expand_smacro(tt);
- if (nasm_stricmp(tt->text, "byte") == 0)
- {
- size = MAX(StackSize, 1);
- }
- else if (nasm_stricmp(tt->text, "word") == 0)
- {
- size = MAX(StackSize, 2);
- }
- else if (nasm_stricmp(tt->text, "dword") == 0)
- {
- size = MAX(StackSize, 4);
- }
- else if (nasm_stricmp(tt->text, "qword") == 0)
- {
- size = MAX(StackSize, 8);
- }
- else if (nasm_stricmp(tt->text, "tword") == 0)
- {
- size = MAX(StackSize, 10);
- }
- else
- {
- error(ERR_NONFATAL,
- "Invalid size type for `%%local' missing directive");
- free_tlist(tt);
- free_tlist(origline);
- return DIRECTIVE_FOUND;
- }
- free_tlist(tt);
-
- /* Now define the macro for the argument */
- sprintf(directive, "%%define %s (%s-%d)", local, StackPointer,
- offset);
- do_directive(tokenise(directive));
- offset += size;
-
- /* Now define the assign to setup the enter_c macro correctly */
- sprintf(directive, "%%assign %%$localsize %%$localsize+%d",
- size);
- do_directive(tokenise(directive));
-
- /* Move to the next argument in the list */
- tline = tline->next;
- if (tline && tline->type == TOK_WHITESPACE)
- tline = tline->next;
- }
- while (tline && tline->type == TOK_OTHER
- && tline->text[0] == ',');
- free_tlist(origline);
- return DIRECTIVE_FOUND;
-
- case PP_CLEAR:
- if (tline->next)
- error(ERR_WARNING,
- "trailing garbage after `%%clear' ignored");
- for (j = 0; j < NHASH; j++)
- {
- while (mmacros[j])
- {
- MMacro *m2 = mmacros[j];
- mmacros[j] = m2->next;
- free_mmacro(m2);
- }
- while (smacros[j])
- {
- SMacro *s = smacros[j];
- smacros[j] = smacros[j]->next;
- nasm_free(s->name);
- free_tlist(s->expansion);
- nasm_free(s);
- }
- }
- free_tlist(origline);
- return DIRECTIVE_FOUND;
-
- case PP_INCLUDE:
- tline = tline->next;
- skip_white_(tline);
- if (!tline || (tline->type != TOK_STRING &&
- tline->type != TOK_INTERNAL_STRING))
- {
- error(ERR_NONFATAL, "`%%include' expects a file name");
- free_tlist(origline);
- return DIRECTIVE_FOUND; /* but we did _something_ */
- }
- if (tline->next)
- error(ERR_WARNING,
- "trailing garbage after `%%include' ignored");
- if (tline->type != TOK_INTERNAL_STRING)
- {
- p = tline->text + 1; /* point past the quote to the name */
- p[strlen(p) - 1] = '\0'; /* remove the trailing quote */
+ */
+static int
+do_directive(Token * tline)
+{
+ int i, j, k, m, nparam, nolist;
+ int offset;
+ char *p, *mname, *newname;
+ Include *inc;
+ Context *ctx;
+ Cond *cond;
+ SMacro *smac, **smhead;
+ MMacro *mmac;
+ Token *t, *tt, *param_start, *macro_start, *last, **tptr, *origline;
+ Line *l;
+ struct tokenval tokval;
+ yasm_expr *evalresult;
+ MMacro *tmp_defining; /* Used when manipulating rep_nest */
+ yasm_intnum *intn;
+
+ origline = tline;
+
+ skip_white_(tline);
+ if (!tok_type_(tline, TOK_PREPROC_ID) ||
+ (tline->text[1] == '%' || tline->text[1] == '$'
+ || tline->text[1] == '!'))
+ return NO_DIRECTIVE_FOUND;
+
+ i = -1;
+ j = elements(directives);
+ while (j - i > 1)
+ {
+ k = (j + i) / 2;
+ m = nasm_stricmp(tline->text, directives[k]);
+ if (m == 0) {
+ if (tasm_compatible_mode) {
+ i = k;
+ j = -2;
+ } else if (k != PP_ARG && k != PP_LOCAL && k != PP_STACKSIZE) {
+ i = k;
+ j = -2;
+ }
+ break;
+ }
+ else if (m < 0) {
+ j = k;
+ }
+ else
+ i = k;
+ }
+
+ /*
+ * If we're in a non-emitting branch of a condition construct,
+ * or walking to the end of an already terminated %rep block,
+ * we should ignore all directives except for condition
+ * directives.
+ */
+ if (((istk->conds && !emitting(istk->conds->state)) ||
+ (istk->mstk && !istk->mstk->in_progress)) &&
+ !is_condition(i))
+ {
+ return NO_DIRECTIVE_FOUND;
+ }
+
+ /*
+ * If we're defining a macro or reading a %rep block, we should
+ * ignore all directives except for %macro/%imacro (which
+ * generate an error), %endm/%endmacro, and (only if we're in a
+ * %rep block) %endrep. If we're in a %rep block, another %rep
+ * causes an error, so should be let through.
+ */
+ if (defining && i != PP_MACRO && i != PP_IMACRO &&
+ i != PP_ENDMACRO && i != PP_ENDM &&
+ (defining->name || (i != PP_ENDREP && i != PP_REP)))
+ {
+ return NO_DIRECTIVE_FOUND;
+ }
+
+ if (defining) {
+ if (i == PP_MACRO || i == PP_IMACRO) {
+ nested_mac_count++;
+ return NO_DIRECTIVE_FOUND;
+ } else if (nested_mac_count > 0) {
+ if (i == PP_ENDMACRO) {
+ nested_mac_count--;
+ return NO_DIRECTIVE_FOUND;
+ }
+ }
+ if (!defining->name) {
+ if (i == PP_REP) {
+ nested_rep_count++;
+ return NO_DIRECTIVE_FOUND;
+ } else if (nested_rep_count > 0) {
+ if (i == PP_ENDREP) {
+ nested_rep_count--;
+ return NO_DIRECTIVE_FOUND;
+ }
+ }
+ }
+ }
+
+ if (j != -2)
+ {
+ error(ERR_NONFATAL, "unknown preprocessor directive `%s'",
+ tline->text);
+ return NO_DIRECTIVE_FOUND; /* didn't get it */
+ }
+
+ switch (i)
+ {
+ case PP_STACKSIZE:
+ /* Directive to tell NASM what the default stack size is. The
+ * default is for a 16-bit stack, and this can be overriden with
+ * %stacksize large.
+ * the following form:
+ *
+ * ARG arg1:WORD, arg2:DWORD, arg4:QWORD
+ */
+ tline = tline->next;
+ if (tline && tline->type == TOK_WHITESPACE)
+ tline = tline->next;
+ if (!tline || tline->type != TOK_ID)
+ {
+ error(ERR_NONFATAL, "`%%stacksize' missing size parameter");
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+ }
+ if (nasm_stricmp(tline->text, "flat") == 0)
+ {
+ /* All subsequent ARG directives are for a 32-bit stack */
+ StackSize = 4;
+ StackPointer = "ebp";
+ ArgOffset = 8;
+ LocalOffset = 4;
+ }
+ else if (nasm_stricmp(tline->text, "large") == 0)
+ {
+ /* All subsequent ARG directives are for a 16-bit stack,
+ * far function call.
+ */
+ StackSize = 2;
+ StackPointer = "bp";
+ ArgOffset = 4;
+ LocalOffset = 2;
+ }
+ else if (nasm_stricmp(tline->text, "small") == 0)
+ {
+ /* All subsequent ARG directives are for a 16-bit stack,
+ * far function call. We don't support near functions.
+ */
+ StackSize = 2;
+ StackPointer = "bp";
+ ArgOffset = 6;
+ LocalOffset = 2;
+ }
+ else
+ {
+ error(ERR_NONFATAL, "`%%stacksize' invalid size type");
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+ }
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+
+ case PP_ARG:
+ /* TASM like ARG directive to define arguments to functions, in
+ * the following form:
+ *
+ * ARG arg1:WORD, arg2:DWORD, arg4:QWORD
+ */
+ offset = ArgOffset;
+ do
+ {
+ char *arg, directive[256];
+ int size = StackSize;
+
+ /* Find the argument name */
+ tline = tline->next;
+ if (tline && tline->type == TOK_WHITESPACE)
+ tline = tline->next;
+ if (!tline || tline->type != TOK_ID)
+ {
+ error(ERR_NONFATAL, "`%%arg' missing argument parameter");
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+ }
+ arg = tline->text;
+
+ /* Find the argument size type */
+ tline = tline->next;
+ if (!tline || tline->type != TOK_OTHER
+ || tline->text[0] != ':')
+ {
+ error(ERR_NONFATAL,
+ "Syntax error processing `%%arg' directive");
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+ }
+ tline = tline->next;
+ if (!tline || tline->type != TOK_ID)
+ {
+ error(ERR_NONFATAL,
+ "`%%arg' missing size type parameter");
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+ }
+
+ /* Allow macro expansion of type parameter */
+ tt = tokenise(tline->text);
+ tt = expand_smacro(tt);
+ if (nasm_stricmp(tt->text, "byte") == 0)
+ {
+ size = MAX(StackSize, 1);
+ }
+ else if (nasm_stricmp(tt->text, "word") == 0)
+ {
+ size = MAX(StackSize, 2);
+ }
+ else if (nasm_stricmp(tt->text, "dword") == 0)
+ {
+ size = MAX(StackSize, 4);
+ }
+ else if (nasm_stricmp(tt->text, "qword") == 0)
+ {
+ size = MAX(StackSize, 8);
+ }
+ else if (nasm_stricmp(tt->text, "tword") == 0)
+ {
+ size = MAX(StackSize, 10);
+ }
+ else
+ {
+ error(ERR_NONFATAL,
+ "Invalid size type for `%%arg' missing directive");
+ free_tlist(tt);
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+ }
+ free_tlist(tt);
+
+ /* Now define the macro for the argument */
+ sprintf(directive, "%%define %s (%s+%d)", arg, StackPointer,
+ offset);
+ do_directive(tokenise(directive));
+ offset += size;
+
+ /* Move to the next argument in the list */
+ tline = tline->next;
+ if (tline && tline->type == TOK_WHITESPACE)
+ tline = tline->next;
+ }
+ while (tline && tline->type == TOK_OTHER
+ && tline->text[0] == ',');
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+
+ case PP_LOCAL:
+ /* TASM like LOCAL directive to define local variables for a
+ * function, in the following form:
+ *
+ * LOCAL local1:WORD, local2:DWORD, local4:QWORD = LocalSize
+ *
+ * The '= LocalSize' at the end is ignored by NASM, but is
+ * required by TASM to define the local parameter size (and used
+ * by the TASM macro package).
+ */
+ offset = LocalOffset;
+ do
+ {
+ char *local, directive[256];
+ int size = StackSize;
+
+ /* Find the argument name */
+ tline = tline->next;
+ if (tline && tline->type == TOK_WHITESPACE)
+ tline = tline->next;
+ if (!tline || tline->type != TOK_ID)
+ {
+ error(ERR_NONFATAL,
+ "`%%local' missing argument parameter");
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+ }
+ local = tline->text;
+
+ /* Find the argument size type */
+ tline = tline->next;
+ if (!tline || tline->type != TOK_OTHER
+ || tline->text[0] != ':')
+ {
+ error(ERR_NONFATAL,
+ "Syntax error processing `%%local' directive");
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+ }
+ tline = tline->next;
+ if (!tline || tline->type != TOK_ID)
+ {
+ error(ERR_NONFATAL,
+ "`%%local' missing size type parameter");
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+ }
+
+ /* Allow macro expansion of type parameter */
+ tt = tokenise(tline->text);
+ tt = expand_smacro(tt);
+ if (nasm_stricmp(tt->text, "byte") == 0)
+ {
+ size = MAX(StackSize, 1);
+ }
+ else if (nasm_stricmp(tt->text, "word") == 0)
+ {
+ size = MAX(StackSize, 2);
+ }
+ else if (nasm_stricmp(tt->text, "dword") == 0)
+ {
+ size = MAX(StackSize, 4);
+ }
+ else if (nasm_stricmp(tt->text, "qword") == 0)
+ {
+ size = MAX(StackSize, 8);
+ }
+ else if (nasm_stricmp(tt->text, "tword") == 0)
+ {
+ size = MAX(StackSize, 10);
+ }
+ else
+ {
+ error(ERR_NONFATAL,
+ "Invalid size type for `%%local' missing directive");
+ free_tlist(tt);
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+ }
+ free_tlist(tt);
+
+ /* Now define the macro for the argument */
+ sprintf(directive, "%%define %s (%s-%d)", local, StackPointer,
+ offset);
+ do_directive(tokenise(directive));
+ offset += size;
+
+ /* Now define the assign to setup the enter_c macro correctly */
+ sprintf(directive, "%%assign %%$localsize %%$localsize+%d",
+ size);
+ do_directive(tokenise(directive));
+
+ /* Move to the next argument in the list */
+ tline = tline->next;
+ if (tline && tline->type == TOK_WHITESPACE)
+ tline = tline->next;
+ }
+ while (tline && tline->type == TOK_OTHER
+ && tline->text[0] == ',');
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+
+ case PP_CLEAR:
+ if (tline->next)
+ error(ERR_WARNING,
+ "trailing garbage after `%%clear' ignored");
+ for (j = 0; j < NHASH; j++)
+ {
+ while (mmacros[j])
+ {
+ MMacro *m2 = mmacros[j];
+ mmacros[j] = m2->next;
+ free_mmacro(m2);
+ }
+ while (smacros[j])
+ {
+ SMacro *s = smacros[j];
+ smacros[j] = smacros[j]->next;
+ nasm_free(s->name);
+ free_tlist(s->expansion);
+ nasm_free(s);
+ }
+ }
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+
+ case PP_INCLUDE:
+ tline = tline->next;
+ skip_white_(tline);
+ if (!tline || (tline->type != TOK_STRING &&
+ tline->type != TOK_INTERNAL_STRING))
+ {
+ error(ERR_NONFATAL, "`%%include' expects a file name");
+ free_tlist(origline);
+ return DIRECTIVE_FOUND; /* but we did _something_ */
+ }
+ if (tline->next)
+ error(ERR_WARNING,
+ "trailing garbage after `%%include' ignored");
+ if (tline->type != TOK_INTERNAL_STRING)
+ {
+ p = tline->text + 1; /* point past the quote to the name */
+ p[strlen(p) - 1] = '\0'; /* remove the trailing quote */
+ }
+ else
+ p = tline->text; /* internal_string is easier */
+ expand_macros_in_string(&p);
+ inc = nasm_malloc(sizeof(Include));
+ inc->next = istk;
+ inc->conds = NULL;
+ inc->fp = inc_fopen(p, &newname);
+ inc->fname = nasm_src_set_fname(newname);
+ inc->lineno = nasm_src_set_linnum(0);
+ inc->lineinc = 1;
+ inc->expansion = NULL;
+ inc->mstk = NULL;
+ istk = inc;
+ list->uplevel(LIST_INCLUDE);
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+
+ case PP_PUSH:
+ tline = tline->next;
+ skip_white_(tline);
+ tline = expand_id(tline);
+ if (!tok_type_(tline, TOK_ID))
+ {
+ error(ERR_NONFATAL, "`%%push' expects a context identifier");
+ free_tlist(origline);
+ return DIRECTIVE_FOUND; /* but we did _something_ */
+ }
+ if (tline->next)
+ error(ERR_WARNING, "trailing garbage after `%%push' ignored");
+ ctx = nasm_malloc(sizeof(Context));
+ ctx->next = cstk;
+ ctx->localmac = NULL;
+ ctx->name = nasm_strdup(tline->text);
+ ctx->number = unique++;
+ cstk = ctx;
+ free_tlist(origline);
+ break;
+
+ case PP_REPL:
+ tline = tline->next;
+ skip_white_(tline);
+ tline = expand_id(tline);
+ if (!tok_type_(tline, TOK_ID))
+ {
+ error(ERR_NONFATAL, "`%%repl' expects a context identifier");
+ free_tlist(origline);
+ return DIRECTIVE_FOUND; /* but we did _something_ */
+ }
+ if (tline->next)
+ error(ERR_WARNING, "trailing garbage after `%%repl' ignored");
+ if (!cstk)
+ error(ERR_NONFATAL, "`%%repl': context stack is empty");
+ else
+ {
+ nasm_free(cstk->name);
+ cstk->name = nasm_strdup(tline->text);
+ }
+ free_tlist(origline);
+ break;
+
+ case PP_POP:
+ if (tline->next)
+ error(ERR_WARNING, "trailing garbage after `%%pop' ignored");
+ if (!cstk)
+ error(ERR_NONFATAL,
+ "`%%pop': context stack is already empty");
+ else
+ ctx_pop();
+ free_tlist(origline);
+ break;
+
+ case PP_SCOPE:
+ if (tline->next)
+ error(ERR_WARNING, "trailing garbage after `%%scope' ignored");
+ Level++;
+ free_tlist(origline);
+ break;
+
+ case PP_ENDSCOPE:
+ if (tline->next)
+ error(ERR_WARNING, "trailing garbage after `%%endscope' ignored");
+ if (!Level)
+ error(ERR_NONFATAL,
+ "`%%endscope': already popped all levels");
+ else
+ {
+ for (k = 0; k < NHASH; k++)
+ {
+ SMacro **smlast = &smacros[k];
+ smac = smacros[k];
+ while (smac)
+ {
+ if (smac->level < Level)
+ {
+ smlast = &smac->next;
+ smac = smac->next;
+ }
+ else
+ {
+ *smlast = smac->next;
+ nasm_free(smac->name);
+ free_tlist(smac->expansion);
+ nasm_free(smac);
+ smac = *smlast;
+ }
+ }
+ }
+ for (ctx = cstk; ctx; ctx = ctx->next)
+ {
+ SMacro **smlast = &ctx->localmac;
+ smac = ctx->localmac;
+ while (smac)
+ {
+ if (smac->level < Level)
+ {
+ smlast = &smac->next;
+ smac = smac->next;
+ }
+ else
+ {
+ *smlast = smac->next;
+ nasm_free(smac->name);
+ free_tlist(smac->expansion);
+ nasm_free(smac);
+ smac = *smlast;
+ }
+ }
+ }
+ Level--;
+ }
+ free_tlist(origline);
+ break;
+
+ case PP_ERROR:
+ tline->next = expand_smacro(tline->next);
+ tline = tline->next;
+ skip_white_(tline);
+ if (tok_type_(tline, TOK_STRING))
+ {
+ p = tline->text + 1; /* point past the quote to the name */
+ p[strlen(p) - 1] = '\0'; /* remove the trailing quote */
+ expand_macros_in_string(&p);
+ error(ERR_NONFATAL, "%s", p);
+ nasm_free(p);
+ }
+ else
+ {
+ p = detoken(tline, FALSE);
+ error(ERR_WARNING, "%s", p);
+ nasm_free(p);
+ }
+ free_tlist(origline);
+ break;
+
+ case PP_IF:
+ case PP_IFCTX:
+ case PP_IFDEF:
+ case PP_IFID:
+ case PP_IFIDN:
+ case PP_IFIDNI:
+ case PP_IFMACRO:
+ case PP_IFNCTX:
+ case PP_IFNDEF:
+ case PP_IFNID:
+ case PP_IFNIDN:
+ case PP_IFNIDNI:
+ case PP_IFNMACRO:
+ case PP_IFNNUM:
+ case PP_IFNSTR:
+ case PP_IFNUM:
+ case PP_IFSTR:
+ if (istk->conds && !emitting(istk->conds->state))
+ j = COND_NEVER;
+ else
+ {
+ j = if_condition(tline->next, i);
+ tline->next = NULL; /* it got freed */
+ j = j < 0 ? COND_NEVER : j ? COND_IF_TRUE : COND_IF_FALSE;
+ }
+ free_tlist(origline);
+ cond = nasm_malloc(sizeof(Cond));
+ cond->next = istk->conds;
+ cond->state = j;
+ istk->conds = cond;
+ return DIRECTIVE_FOUND;
+
+ case PP_ELIF:
+ case PP_ELIFCTX:
+ case PP_ELIFDEF:
+ case PP_ELIFID:
+ case PP_ELIFIDN:
+ case PP_ELIFIDNI:
+ case PP_ELIFMACRO:
+ case PP_ELIFNCTX:
+ case PP_ELIFNDEF:
+ case PP_ELIFNID:
+ case PP_ELIFNIDN:
+ case PP_ELIFNIDNI:
+ case PP_ELIFNMACRO:
+ case PP_ELIFNNUM:
+ case PP_ELIFNSTR:
+ case PP_ELIFNUM:
+ case PP_ELIFSTR:
+ if (!istk->conds)
+ error(ERR_FATAL, "`%s': no matching `%%if'", directives[i]);
+ if (emitting(istk->conds->state)
+ || istk->conds->state == COND_NEVER)
+ istk->conds->state = COND_NEVER;
+ else
+ {
+ /*
+ * IMPORTANT: In the case of %if, we will already have
+ * called expand_mmac_params(); however, if we're
+ * processing an %elif we must have been in a
+ * non-emitting mode, which would have inhibited
+ * the normal invocation of expand_mmac_params(). Therefore,
+ * we have to do it explicitly here.
+ */
+ j = if_condition(expand_mmac_params(tline->next), i);
+ tline->next = NULL; /* it got freed */
+ istk->conds->state =
+ j < 0 ? COND_NEVER : j ? COND_IF_TRUE : COND_IF_FALSE;
+ }
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+
+ case PP_ELSE:
+ if (tline->next)
+ error(ERR_WARNING, "trailing garbage after `%%else' ignored");
+ if (!istk->conds)
+ error(ERR_FATAL, "`%%else': no matching `%%if'");
+ if (emitting(istk->conds->state)
+ || istk->conds->state == COND_NEVER)
+ istk->conds->state = COND_ELSE_FALSE;
+ else
+ istk->conds->state = COND_ELSE_TRUE;
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+
+ case PP_ENDIF:
+ if (tline->next)
+ error(ERR_WARNING,
+ "trailing garbage after `%%endif' ignored");
+ if (!istk->conds)
+ error(ERR_FATAL, "`%%endif': no matching `%%if'");
+ cond = istk->conds;
+ istk->conds = cond->next;
+ nasm_free(cond);
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+
+ case PP_MACRO:
+ case PP_IMACRO:
+ if (defining)
+ error(ERR_FATAL,
+ "`%%%smacro': already defining a macro",
+ (i == PP_IMACRO ? "i" : ""));
+ tline = tline->next;
+ skip_white_(tline);
+ tline = expand_id(tline);
+ if (!tok_type_(tline, TOK_ID))
+ {
+ error(ERR_NONFATAL,
+ "`%%%smacro' expects a macro name",
+ (i == PP_IMACRO ? "i" : ""));
+ return DIRECTIVE_FOUND;
+ }
+ defining = nasm_malloc(sizeof(MMacro));
+ defining->name = nasm_strdup(tline->text);
+ defining->casesense = (i == PP_MACRO);
+ defining->plus = FALSE;
+ defining->nolist = FALSE;
+ defining->in_progress = FALSE;
+ defining->rep_nest = NULL;
+ tline = expand_smacro(tline->next);
+ skip_white_(tline);
+ if (!tok_type_(tline, TOK_NUMBER))
+ {
+ error(ERR_NONFATAL,
+ "`%%%smacro' expects a parameter count",
+ (i == PP_IMACRO ? "i" : ""));
+ defining->nparam_min = defining->nparam_max = 0;
+ }
+ else
+ {
+ intn = nasm_readnum(tline->text, &j);
+ defining->nparam_min = defining->nparam_max =
+ yasm_intnum_get_int(intn);
+ yasm_intnum_destroy(intn);
+ if (j)
+ error(ERR_NONFATAL,
+ "unable to parse parameter count `%s'",
+ tline->text);
+ }
+ if (tline && tok_is_(tline->next, "-"))
+ {
+ tline = tline->next->next;
+ if (tok_is_(tline, "*"))
+ defining->nparam_max = INT_MAX;
+ else if (!tok_type_(tline, TOK_NUMBER))
+ error(ERR_NONFATAL,
+ "`%%%smacro' expects a parameter count after `-'",
+ (i == PP_IMACRO ? "i" : ""));
+ else
+ {
+ intn = nasm_readnum(tline->text, &j);
+ defining->nparam_max = yasm_intnum_get_int(intn);
+ yasm_intnum_destroy(intn);
+ if (j)
+ error(ERR_NONFATAL,
+ "unable to parse parameter count `%s'",
+ tline->text);
+ if (defining->nparam_min > defining->nparam_max)
+ error(ERR_NONFATAL,
+ "minimum parameter count exceeds maximum");
+ }
+ }
+ if (tline && tok_is_(tline->next, "+"))
+ {
+ tline = tline->next;
+ defining->plus = TRUE;
+ }
+ if (tline && tok_type_(tline->next, TOK_ID) &&
+ !nasm_stricmp(tline->next->text, ".nolist"))
+ {
+ tline = tline->next;
+ defining->nolist = TRUE;
+ }
+ mmac = mmacros[hash(defining->name)];
+ while (mmac)
+ {
+ if (!strcmp(mmac->name, defining->name) &&
+ (mmac->nparam_min <= defining->nparam_max
+ || defining->plus)
+ && (defining->nparam_min <= mmac->nparam_max
+ || mmac->plus))
+ {
+ error(ERR_WARNING,
+ "redefining multi-line macro `%s'",
+ defining->name);
+ break;
+ }
+ mmac = mmac->next;
+ }
+ /*
+ * Handle default parameters.
+ */
+ if (tline && tline->next)
+ {
+ defining->dlist = tline->next;
+ tline->next = NULL;
+ count_mmac_params(defining->dlist, &defining->ndefs,
+ &defining->defaults);
+ }
+ else
+ {
+ defining->dlist = NULL;
+ defining->defaults = NULL;
+ }
+ defining->expansion = NULL;
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+
+ case PP_ENDM:
+ case PP_ENDMACRO:
+ if (!defining)
+ {
+ error(ERR_NONFATAL, "`%s': not defining a macro",
+ tline->text);
+ return DIRECTIVE_FOUND;
+ }
+ k = hash(defining->name);
+ defining->next = mmacros[k];
+ mmacros[k] = defining;
+ defining = NULL;
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+
+ case PP_ROTATE:
+ if (tline->next && tline->next->type == TOK_WHITESPACE)
+ tline = tline->next;
+ if (tline->next == NULL)
+ {
+ free_tlist(origline);
+ error(ERR_NONFATAL, "`%%rotate' missing rotate count");
+ return DIRECTIVE_FOUND;
+ }
+ t = expand_smacro(tline->next);
+ tline->next = NULL;
+ free_tlist(origline);
+ tline = t;
+ tptr = &t;
+ tokval.t_type = TOKEN_INVALID;
+ evalresult = evaluate(ppscan, tptr, &tokval, pass, error);
+ free_tlist(tline);
+ if (!evalresult)
+ return DIRECTIVE_FOUND;
+ if (tokval.t_type)
+ error(ERR_WARNING,
+ "trailing garbage after expression ignored");
+ intn = yasm_expr_get_intnum(&evalresult, 0);
+ if (!intn)
+ {
+ error(ERR_NONFATAL, "non-constant value given to `%%rotate'");
+ yasm_expr_destroy(evalresult);
+ return DIRECTIVE_FOUND;
+ }
+ mmac = istk->mstk;
+ while (mmac && !mmac->name) /* avoid mistaking %reps for macros */
+ mmac = mmac->next_active;
+ if (!mmac)
+ {
+ error(ERR_NONFATAL,
+ "`%%rotate' invoked outside a macro call");
}
- else
- p = tline->text; /* internal_string is easier */
- expand_macros_in_string(&p);
- inc = nasm_malloc(sizeof(Include));
- inc->next = istk;
- inc->conds = NULL;
- inc->fp = inc_fopen(p, &newname);
- inc->fname = nasm_src_set_fname(newname);
- inc->lineno = nasm_src_set_linnum(0);
- inc->lineinc = 1;
- inc->expansion = NULL;
- inc->mstk = NULL;
- istk = inc;
- list->uplevel(LIST_INCLUDE);
- free_tlist(origline);
- return DIRECTIVE_FOUND;
-
- case PP_PUSH:
- tline = tline->next;
- skip_white_(tline);
- tline = expand_id(tline);
- if (!tok_type_(tline, TOK_ID))
- {
- error(ERR_NONFATAL, "`%%push' expects a context identifier");
- free_tlist(origline);
- return DIRECTIVE_FOUND; /* but we did _something_ */
- }
- if (tline->next)
- error(ERR_WARNING, "trailing garbage after `%%push' ignored");
- ctx = nasm_malloc(sizeof(Context));
- ctx->next = cstk;
- ctx->localmac = NULL;
- ctx->name = nasm_strdup(tline->text);
- ctx->number = unique++;
- cstk = ctx;
- free_tlist(origline);
- break;
-
- case PP_REPL:
- tline = tline->next;
- skip_white_(tline);
- tline = expand_id(tline);
- if (!tok_type_(tline, TOK_ID))
- {
- error(ERR_NONFATAL, "`%%repl' expects a context identifier");
- free_tlist(origline);
- return DIRECTIVE_FOUND; /* but we did _something_ */
- }
- if (tline->next)
- error(ERR_WARNING, "trailing garbage after `%%repl' ignored");
- if (!cstk)
- error(ERR_NONFATAL, "`%%repl': context stack is empty");
- else
- {
- nasm_free(cstk->name);
- cstk->name = nasm_strdup(tline->text);
- }
- free_tlist(origline);
- break;
-
- case PP_POP:
- if (tline->next)
- error(ERR_WARNING, "trailing garbage after `%%pop' ignored");
- if (!cstk)
- error(ERR_NONFATAL,
- "`%%pop': context stack is already empty");
- else
- ctx_pop();
- free_tlist(origline);
- break;
-
- case PP_SCOPE:
- if (tline->next)
- error(ERR_WARNING, "trailing garbage after `%%scope' ignored");
- Level++;
- free_tlist(origline);
- break;
-
- case PP_ENDSCOPE:
- if (tline->next)
- error(ERR_WARNING, "trailing garbage after `%%endscope' ignored");
- if (!Level)
- error(ERR_NONFATAL,
- "`%%endscope': already popped all levels");
- else
- {
- for (k = 0; k < NHASH; k++)
- {
- SMacro **smlast = &smacros[k];
- smac = smacros[k];
- while (smac)
- {
- if (smac->level < Level)
- {
- smlast = &smac->next;
- smac = smac->next;
- }
- else
- {
- *smlast = smac->next;
- nasm_free(smac->name);
- free_tlist(smac->expansion);
- nasm_free(smac);
- smac = *smlast;
- }
- }
- }
- for (ctx = cstk; ctx; ctx = ctx->next)
- {
- SMacro **smlast = &ctx->localmac;
- smac = ctx->localmac;
- while (smac)
- {
- if (smac->level < Level)
- {
- smlast = &smac->next;
- smac = smac->next;
- }
- else
- {
- *smlast = smac->next;
- nasm_free(smac->name);
- free_tlist(smac->expansion);
- nasm_free(smac);
- smac = *smlast;
- }
- }
- }
- Level--;
- }
- free_tlist(origline);
- break;
-
- case PP_ERROR:
- tline->next = expand_smacro(tline->next);
- tline = tline->next;
- skip_white_(tline);
- if (tok_type_(tline, TOK_STRING))
- {
- p = tline->text + 1; /* point past the quote to the name */
- p[strlen(p) - 1] = '\0'; /* remove the trailing quote */
- expand_macros_in_string(&p);
- error(ERR_NONFATAL, "%s", p);
- nasm_free(p);
- }
- else
- {
- p = detoken(tline, FALSE);
- error(ERR_WARNING, "%s", p);
- nasm_free(p);
- }
- free_tlist(origline);
- break;
-
- case PP_IF:
- case PP_IFCTX:
- case PP_IFDEF:
- case PP_IFID:
- case PP_IFIDN:
- case PP_IFIDNI:
- case PP_IFMACRO:
- case PP_IFNCTX:
- case PP_IFNDEF:
- case PP_IFNID:
- case PP_IFNIDN:
- case PP_IFNIDNI:
- case PP_IFNMACRO:
- case PP_IFNNUM:
- case PP_IFNSTR:
- case PP_IFNUM:
- case PP_IFSTR:
- if (istk->conds && !emitting(istk->conds->state))
- j = COND_NEVER;
- else
- {
- j = if_condition(tline->next, i);
- tline->next = NULL; /* it got freed */
- j = j < 0 ? COND_NEVER : j ? COND_IF_TRUE : COND_IF_FALSE;
- }
- free_tlist(origline);
- cond = nasm_malloc(sizeof(Cond));
- cond->next = istk->conds;
- cond->state = j;
- istk->conds = cond;
- return DIRECTIVE_FOUND;
-
- case PP_ELIF:
- case PP_ELIFCTX:
- case PP_ELIFDEF:
- case PP_ELIFID:
- case PP_ELIFIDN:
- case PP_ELIFIDNI:
- case PP_ELIFMACRO:
- case PP_ELIFNCTX:
- case PP_ELIFNDEF:
- case PP_ELIFNID:
- case PP_ELIFNIDN:
- case PP_ELIFNIDNI:
- case PP_ELIFNMACRO:
- case PP_ELIFNNUM:
- case PP_ELIFNSTR:
- case PP_ELIFNUM:
- case PP_ELIFSTR:
- if (!istk->conds)
- error(ERR_FATAL, "`%s': no matching `%%if'", directives[i]);
- if (emitting(istk->conds->state)
- || istk->conds->state == COND_NEVER)
- istk->conds->state = COND_NEVER;
- else
- {
- /*
- * IMPORTANT: In the case of %if, we will already have
- * called expand_mmac_params(); however, if we're
- * processing an %elif we must have been in a
- * non-emitting mode, which would have inhibited
- * the normal invocation of expand_mmac_params(). Therefore,
- * we have to do it explicitly here.
- */
- j = if_condition(expand_mmac_params(tline->next), i);
- tline->next = NULL; /* it got freed */
- istk->conds->state =
- j < 0 ? COND_NEVER : j ? COND_IF_TRUE : COND_IF_FALSE;
- }
- free_tlist(origline);
- return DIRECTIVE_FOUND;
-
- case PP_ELSE:
- if (tline->next)
- error(ERR_WARNING, "trailing garbage after `%%else' ignored");
- if (!istk->conds)
- error(ERR_FATAL, "`%%else': no matching `%%if'");
- if (emitting(istk->conds->state)
- || istk->conds->state == COND_NEVER)
- istk->conds->state = COND_ELSE_FALSE;
- else
- istk->conds->state = COND_ELSE_TRUE;
- free_tlist(origline);
- return DIRECTIVE_FOUND;
-
- case PP_ENDIF:
- if (tline->next)
- error(ERR_WARNING,
- "trailing garbage after `%%endif' ignored");
- if (!istk->conds)
- error(ERR_FATAL, "`%%endif': no matching `%%if'");
- cond = istk->conds;
- istk->conds = cond->next;
- nasm_free(cond);
- free_tlist(origline);
- return DIRECTIVE_FOUND;
-
- case PP_MACRO:
- case PP_IMACRO:
- if (defining)
- error(ERR_FATAL,
- "`%%%smacro': already defining a macro",
- (i == PP_IMACRO ? "i" : ""));
- tline = tline->next;
- skip_white_(tline);
- tline = expand_id(tline);
- if (!tok_type_(tline, TOK_ID))
- {
- error(ERR_NONFATAL,
- "`%%%smacro' expects a macro name",
- (i == PP_IMACRO ? "i" : ""));
- return DIRECTIVE_FOUND;
- }
- defining = nasm_malloc(sizeof(MMacro));
- defining->name = nasm_strdup(tline->text);
- defining->casesense = (i == PP_MACRO);
- defining->plus = FALSE;
- defining->nolist = FALSE;
- defining->in_progress = FALSE;
- defining->rep_nest = NULL;
- tline = expand_smacro(tline->next);
- skip_white_(tline);
- if (!tok_type_(tline, TOK_NUMBER))
- {
- error(ERR_NONFATAL,
- "`%%%smacro' expects a parameter count",
- (i == PP_IMACRO ? "i" : ""));
- defining->nparam_min = defining->nparam_max = 0;
- }
- else
- {
- intn = nasm_readnum(tline->text, &j);
- defining->nparam_min = defining->nparam_max =
- yasm_intnum_get_int(intn);
- yasm_intnum_destroy(intn);
- if (j)
- error(ERR_NONFATAL,
- "unable to parse parameter count `%s'",
- tline->text);
- }
- if (tline && tok_is_(tline->next, "-"))
- {
- tline = tline->next->next;
- if (tok_is_(tline, "*"))
- defining->nparam_max = INT_MAX;
- else if (!tok_type_(tline, TOK_NUMBER))
- error(ERR_NONFATAL,
- "`%%%smacro' expects a parameter count after `-'",
- (i == PP_IMACRO ? "i" : ""));
- else
- {
- intn = nasm_readnum(tline->text, &j);
- defining->nparam_max = yasm_intnum_get_int(intn);
- yasm_intnum_destroy(intn);
- if (j)
- error(ERR_NONFATAL,
- "unable to parse parameter count `%s'",
- tline->text);
- if (defining->nparam_min > defining->nparam_max)
- error(ERR_NONFATAL,
- "minimum parameter count exceeds maximum");
- }
- }
- if (tline && tok_is_(tline->next, "+"))
- {
- tline = tline->next;
- defining->plus = TRUE;
- }
- if (tline && tok_type_(tline->next, TOK_ID) &&
- !nasm_stricmp(tline->next->text, ".nolist"))
- {
- tline = tline->next;
- defining->nolist = TRUE;
- }
- mmac = mmacros[hash(defining->name)];
- while (mmac)
- {
- if (!strcmp(mmac->name, defining->name) &&
- (mmac->nparam_min <= defining->nparam_max
- || defining->plus)
- && (defining->nparam_min <= mmac->nparam_max
- || mmac->plus))
- {
- error(ERR_WARNING,
- "redefining multi-line macro `%s'",
- defining->name);
- break;
- }
- mmac = mmac->next;
- }
- /*
- * Handle default parameters.
- */
- if (tline && tline->next)
- {
- defining->dlist = tline->next;
- tline->next = NULL;
- count_mmac_params(defining->dlist, &defining->ndefs,
- &defining->defaults);
- }
- else
- {
- defining->dlist = NULL;
- defining->defaults = NULL;
- }
- defining->expansion = NULL;
- free_tlist(origline);
- return DIRECTIVE_FOUND;
-
- case PP_ENDM:
- case PP_ENDMACRO:
- if (!defining)
- {
- error(ERR_NONFATAL, "`%s': not defining a macro",
- tline->text);
- return DIRECTIVE_FOUND;
- }
- k = hash(defining->name);
- defining->next = mmacros[k];
- mmacros[k] = defining;
- defining = NULL;
- free_tlist(origline);
- return DIRECTIVE_FOUND;
-
- case PP_ROTATE:
- if (tline->next && tline->next->type == TOK_WHITESPACE)
- tline = tline->next;
- if (tline->next == NULL)
- {
- free_tlist(origline);
- error(ERR_NONFATAL, "`%%rotate' missing rotate count");
- return DIRECTIVE_FOUND;
- }
- t = expand_smacro(tline->next);
- tline->next = NULL;
- free_tlist(origline);
- tline = t;
- tptr = &t;
- tokval.t_type = TOKEN_INVALID;
- evalresult = evaluate(ppscan, tptr, &tokval, pass, error);
- free_tlist(tline);
- if (!evalresult)
- return DIRECTIVE_FOUND;
- if (tokval.t_type)
- error(ERR_WARNING,
- "trailing garbage after expression ignored");
- intn = yasm_expr_get_intnum(&evalresult, 0);
- if (!intn)
- {
- error(ERR_NONFATAL, "non-constant value given to `%%rotate'");
- yasm_expr_destroy(evalresult);
- return DIRECTIVE_FOUND;
- }
- mmac = istk->mstk;
- while (mmac && !mmac->name) /* avoid mistaking %reps for macros */
- mmac = mmac->next_active;
- if (!mmac)
- {
- error(ERR_NONFATAL,
- "`%%rotate' invoked outside a macro call");
- }
- else if (mmac->nparam == 0)
- {
- error(ERR_NONFATAL,
- "`%%rotate' invoked within macro without parameters");
- }
- else
- {
- mmac->rotate = mmac->rotate + yasm_intnum_get_int(intn);
-
- if (mmac->rotate < 0)
- mmac->rotate =
- mmac->nparam - (-mmac->rotate) % mmac->nparam;
- mmac->rotate %= mmac->nparam;
- }
- yasm_expr_destroy(evalresult);
- return DIRECTIVE_FOUND;
-
- case PP_REP:
- nolist = FALSE;
- do {
- tline = tline->next;
- } while (tok_type_(tline, TOK_WHITESPACE));
-
- if (tok_type_(tline, TOK_ID) &&
- nasm_stricmp(tline->text, ".nolist") == 0)
- {
- nolist = TRUE;
- do {
- tline = tline->next;
- } while (tok_type_(tline, TOK_WHITESPACE));
- }
-
- if (tline)
- {
- t = expand_smacro(tline);
- tptr = &t;
- tokval.t_type = TOKEN_INVALID;
- evalresult = evaluate(ppscan, tptr, &tokval, pass, error);
- if (!evalresult)
- {
- free_tlist(origline);
- return DIRECTIVE_FOUND;
- }
- if (tokval.t_type)
- error(ERR_WARNING,
- "trailing garbage after expression ignored");
- intn = yasm_expr_get_intnum(&evalresult, 0);
- if (!intn)
- {
- error(ERR_NONFATAL, "non-constant value given to `%%rep'");
- yasm_expr_destroy(evalresult);
- return DIRECTIVE_FOUND;
- }
- i = (int)yasm_intnum_get_int(intn) + 1;
- yasm_expr_destroy(evalresult);
- }
- else
- {
- error(ERR_NONFATAL, "`%%rep' expects a repeat count");
- i = 0;
- }
- free_tlist(origline);
-
- tmp_defining = defining;
- defining = nasm_malloc(sizeof(MMacro));
- defining->name = NULL; /* flags this macro as a %rep block */
- defining->casesense = 0;
- defining->plus = FALSE;
- defining->nolist = nolist;
- defining->in_progress = i;
- defining->nparam_min = defining->nparam_max = 0;
- defining->defaults = NULL;
- defining->dlist = NULL;
- defining->expansion = NULL;
- defining->next_active = istk->mstk;
- defining->rep_nest = tmp_defining;
- return DIRECTIVE_FOUND;
-
- case PP_ENDREP:
- if (!defining || defining->name)
- {
- error(ERR_NONFATAL, "`%%endrep': no matching `%%rep'");
- return DIRECTIVE_FOUND;
- }
-
- /*
- * Now we have a "macro" defined - although it has no name
- * and we won't be entering it in the hash tables - we must
- * push a macro-end marker for it on to istk->expansion.
- * After that, it will take care of propagating itself (a
- * macro-end marker line for a macro which is really a %rep
- * block will cause the macro to be re-expanded, complete
- * with another macro-end marker to ensure the process
- * continues) until the whole expansion is forcibly removed
- * from istk->expansion by a %exitrep.
- */
- l = nasm_malloc(sizeof(Line));
- l->next = istk->expansion;
- l->finishes = defining;
- l->first = NULL;
- istk->expansion = l;
-
- istk->mstk = defining;
-
- list->uplevel(defining->nolist ? LIST_MACRO_NOLIST : LIST_MACRO);
- tmp_defining = defining;
- defining = defining->rep_nest;
- free_tlist(origline);
- return DIRECTIVE_FOUND;
-
- case PP_EXITREP:
- /*
- * We must search along istk->expansion until we hit a
- * macro-end marker for a macro with no name. Then we set
- * its `in_progress' flag to 0.
- */
- for (l = istk->expansion; l; l = l->next)
- if (l->finishes && !l->finishes->name)
- break;
-
- if (l)
- l->finishes->in_progress = 0;
- else
- error(ERR_NONFATAL, "`%%exitrep' not within `%%rep' block");
- free_tlist(origline);
- return DIRECTIVE_FOUND;
-
- case PP_XDEFINE:
- case PP_IXDEFINE:
- case PP_DEFINE:
- case PP_IDEFINE:
- tline = tline->next;
- skip_white_(tline);
- tline = expand_id(tline);
- if (!tline || (tline->type != TOK_ID &&
- (tline->type != TOK_PREPROC_ID ||
- tline->text[1] != '$')))
- {
- error(ERR_NONFATAL,
- "`%%%s%sdefine' expects a macro identifier",
- ((i == PP_IDEFINE || i == PP_IXDEFINE) ? "i" : ""),
- ((i == PP_XDEFINE || i == PP_IXDEFINE) ? "x" : ""));
- free_tlist(origline);
- return DIRECTIVE_FOUND;
- }
-
- ctx = get_ctx(tline->text, FALSE);
- if (!ctx)
- smhead = &smacros[hash(tline->text)];
- else
- smhead = &ctx->localmac;
- mname = tline->text;
- last = tline;
- param_start = tline = tline->next;
- nparam = 0;
-
- /* Expand the macro definition now for %xdefine and %ixdefine */
- if ((i == PP_XDEFINE) || (i == PP_IXDEFINE))
- tline = expand_smacro(tline);
-
- if (tok_is_(tline, "("))
- {
- /*
- * This macro has parameters.
- */
-
- tline = tline->next;
- while (1)
- {
- skip_white_(tline);
- if (!tline)
- {
- error(ERR_NONFATAL, "parameter identifier expected");
- free_tlist(origline);
- return DIRECTIVE_FOUND;
- }
- if (tline->type != TOK_ID)
- {
- error(ERR_NONFATAL,
- "`%s': parameter identifier expected",
- tline->text);
- free_tlist(origline);
- return DIRECTIVE_FOUND;
- }
- tline->type = TOK_SMAC_PARAM + nparam++;
- tline = tline->next;
- skip_white_(tline);
- if (tok_is_(tline, ","))
- {
- tline = tline->next;
- continue;
- }
- if (!tok_is_(tline, ")"))
- {
- error(ERR_NONFATAL,
- "`)' expected to terminate macro template");
- free_tlist(origline);
- return DIRECTIVE_FOUND;
- }
- break;
- }
- last = tline;
- tline = tline->next;
- }
- if (tok_type_(tline, TOK_WHITESPACE))
- last = tline, tline = tline->next;
- macro_start = NULL;
- last->next = NULL;
- t = tline;
- while (t)
- {
- if (t->type == TOK_ID)
- {
- for (tt = param_start; tt; tt = tt->next)
- if (tt->type >= TOK_SMAC_PARAM &&
- !strcmp(tt->text, t->text))
- t->type = tt->type;
- }
- tt = t->next;
- t->next = macro_start;
- macro_start = t;
- t = tt;
- }
- /*
- * Good. We now have a macro name, a parameter count, and a
- * token list (in reverse order) for an expansion. We ought
- * to be OK just to create an SMacro, store it, and let
- * free_tlist have the rest of the line (which we have
- * carefully re-terminated after chopping off the expansion
- * from the end).
- */
- if (smacro_defined(ctx, mname, nparam, &smac, i == PP_DEFINE))
- {
- if (!smac)
- {
- error(ERR_WARNING,
- "single-line macro `%s' defined both with and"
- " without parameters", mname);
- free_tlist(origline);
- free_tlist(macro_start);
- return DIRECTIVE_FOUND;
- }
- else if (smac->level == Level)
- {
- /*
- * We're redefining in the same level, so we have to
- * take over an existing SMacro structure. This means
- * freeing what was already in it.
- */
- nasm_free(smac->name);
- free_tlist(smac->expansion);
- }
- else
- {
- smac = nasm_malloc(sizeof(SMacro));
- smac->next = *smhead;
- *smhead = smac;
- }
- }
- else
- {
- smac = nasm_malloc(sizeof(SMacro));
- smac->next = *smhead;
- *smhead = smac;
- }
- smac->name = nasm_strdup(mname);
- smac->casesense = ((i == PP_DEFINE) || (i == PP_XDEFINE));
- smac->nparam = nparam;
- smac->level = Level;
- smac->expansion = macro_start;
- smac->in_progress = FALSE;
- free_tlist(origline);
- return DIRECTIVE_FOUND;
-
- case PP_UNDEF:
- tline = tline->next;
- skip_white_(tline);
- tline = expand_id(tline);
- if (!tline || (tline->type != TOK_ID &&
- (tline->type != TOK_PREPROC_ID ||
- tline->text[1] != '$')))
- {
- error(ERR_NONFATAL, "`%%undef' expects a macro identifier");
- free_tlist(origline);
- return DIRECTIVE_FOUND;
- }
- if (tline->next)
- {
- error(ERR_WARNING,
- "trailing garbage after macro name ignored");
- }
-
- /* Find the context that symbol belongs to */
- ctx = get_ctx(tline->text, FALSE);
- if (!ctx)
- smhead = &smacros[hash(tline->text)];
- else
- smhead = &ctx->localmac;
-
- mname = tline->text;
-
- /*
- * We now have a macro name... go hunt for it.
- */
- while (smacro_defined(ctx, mname, -1, &smac, 1))
- {
- /* Defined, so we need to find its predecessor and nuke it */
- SMacro **s;
- for (s = smhead; *s && *s != smac; s = &(*s)->next);
- if (*s)
- {
- *s = smac->next;
- nasm_free(smac->name);
- free_tlist(smac->expansion);
- nasm_free(smac);
- }
- }
- free_tlist(origline);
- return DIRECTIVE_FOUND;
-
- case PP_STRLEN:
- tline = tline->next;
- skip_white_(tline);
- tline = expand_id(tline);
- if (!tline || (tline->type != TOK_ID &&
- (tline->type != TOK_PREPROC_ID ||
- tline->text[1] != '$')))
- {
- error(ERR_NONFATAL,
- "`%%strlen' expects a macro identifier as first parameter");
- free_tlist(origline);
- return DIRECTIVE_FOUND;
- }
- ctx = get_ctx(tline->text, FALSE);
- if (!ctx)
- smhead = &smacros[hash(tline->text)];
- else
- smhead = &ctx->localmac;
- mname = tline->text;
- last = tline;
- tline = expand_smacro(tline->next);
- last->next = NULL;
-
- t = tline;
- while (tok_type_(t, TOK_WHITESPACE))
- t = t->next;
- /* t should now point to the string */
- if (t->type != TOK_STRING)
- {
- error(ERR_NONFATAL,
- "`%%strlen` requires string as second parameter");
- free_tlist(tline);
- free_tlist(origline);
- return DIRECTIVE_FOUND;
- }
-
- macro_start = nasm_malloc(sizeof(*macro_start));
- macro_start->next = NULL;
- make_tok_num(macro_start,
- yasm_intnum_create_uint((unsigned long)(strlen(t->text) - 2)));
- macro_start->mac = NULL;
-
- /*
- * We now have a macro name, an implicit parameter count of
- * zero, and a numeric token to use as an expansion. Create
- * and store an SMacro.
- */
- if (smacro_defined(ctx, mname, 0, &smac, i == PP_STRLEN))
- {
- if (!smac)
- error(ERR_WARNING,
- "single-line macro `%s' defined both with and"
- " without parameters", mname);
- else
- {
- /*
- * We're redefining, so we have to take over an
- * existing SMacro structure. This means freeing
- * what was already in it.
- */
- nasm_free(smac->name);
- free_tlist(smac->expansion);
- }
- }
- else
- {
- smac = nasm_malloc(sizeof(SMacro));
- smac->next = *smhead;
- *smhead = smac;
- }
- smac->name = nasm_strdup(mname);
- smac->casesense = (i == PP_STRLEN);
- smac->nparam = 0;
- smac->level = 0;
- smac->expansion = macro_start;
- smac->in_progress = FALSE;
- free_tlist(tline);
- free_tlist(origline);
- return DIRECTIVE_FOUND;
-
- case PP_SUBSTR:
- tline = tline->next;
- skip_white_(tline);
- tline = expand_id(tline);
- if (!tline || (tline->type != TOK_ID &&
- (tline->type != TOK_PREPROC_ID ||
- tline->text[1] != '$')))
- {
- error(ERR_NONFATAL,
- "`%%substr' expects a macro identifier as first parameter");
- free_tlist(origline);
- return DIRECTIVE_FOUND;
- }
- ctx = get_ctx(tline->text, FALSE);
- if (!ctx)
- smhead = &smacros[hash(tline->text)];
- else
- smhead = &ctx->localmac;
- mname = tline->text;
- last = tline;
- tline = expand_smacro(tline->next);
- last->next = NULL;
-
- t = tline->next;
- while (tok_type_(t, TOK_WHITESPACE))
- t = t->next;
-
- /* t should now point to the string */
- if (t->type != TOK_STRING)
- {
- error(ERR_NONFATAL,
- "`%%substr` requires string as second parameter");
- free_tlist(tline);
- free_tlist(origline);
- return DIRECTIVE_FOUND;
- }
-
- tt = t->next;
- tptr = &tt;
- tokval.t_type = TOKEN_INVALID;
- evalresult = evaluate(ppscan, tptr, &tokval, pass, error);
- if (!evalresult)
- {
- free_tlist(tline);
- free_tlist(origline);
- return DIRECTIVE_FOUND;
- }
- intn = yasm_expr_get_intnum(&evalresult, 0);
- if (!intn)
- {
- error(ERR_NONFATAL, "non-constant value given to `%%substr`");
- free_tlist(tline);
- free_tlist(origline);
- yasm_expr_destroy(evalresult);
- return DIRECTIVE_FOUND;
- }
-
- macro_start = nasm_malloc(sizeof(*macro_start));
- macro_start->next = NULL;
- macro_start->text = nasm_strdup("'''");
- if (yasm_intnum_sign(intn) == 1
- && yasm_intnum_get_uint(intn) < strlen(t->text) - 1)
- {
- macro_start->text[1] = t->text[yasm_intnum_get_uint(intn)];
- }
- else
- {
- macro_start->text[2] = '\0';
- }
- yasm_expr_destroy(evalresult);
- macro_start->type = TOK_STRING;
- macro_start->mac = NULL;
-
- /*
- * We now have a macro name, an implicit parameter count of
- * zero, and a numeric token to use as an expansion. Create
- * and store an SMacro.
- */
- if (smacro_defined(ctx, mname, 0, &smac, i == PP_SUBSTR))
- {
- if (!smac)
- error(ERR_WARNING,
- "single-line macro `%s' defined both with and"
- " without parameters", mname);
- else
- {
+ else if (mmac->nparam == 0)
+ {
+ error(ERR_NONFATAL,
+ "`%%rotate' invoked within macro without parameters");
+ }
+ else
+ {
+ mmac->rotate = mmac->rotate + yasm_intnum_get_int(intn);
+
+ if (mmac->rotate < 0)
+ mmac->rotate =
+ mmac->nparam - (-mmac->rotate) % mmac->nparam;
+ mmac->rotate %= mmac->nparam;
+ }
+ yasm_expr_destroy(evalresult);
+ return DIRECTIVE_FOUND;
+
+ case PP_REP:
+ nolist = FALSE;
+ do {
+ tline = tline->next;
+ } while (tok_type_(tline, TOK_WHITESPACE));
+
+ if (tok_type_(tline, TOK_ID) &&
+ nasm_stricmp(tline->text, ".nolist") == 0)
+ {
+ nolist = TRUE;
+ do {
+ tline = tline->next;
+ } while (tok_type_(tline, TOK_WHITESPACE));
+ }
+
+ if (tline)
+ {
+ t = expand_smacro(tline);
+ tptr = &t;
+ tokval.t_type = TOKEN_INVALID;
+ evalresult = evaluate(ppscan, tptr, &tokval, pass, error);
+ if (!evalresult)
+ {
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+ }
+ if (tokval.t_type)
+ error(ERR_WARNING,
+ "trailing garbage after expression ignored");
+ intn = yasm_expr_get_intnum(&evalresult, 0);
+ if (!intn)
+ {
+ error(ERR_NONFATAL, "non-constant value given to `%%rep'");
+ yasm_expr_destroy(evalresult);
+ return DIRECTIVE_FOUND;
+ }
+ i = (int)yasm_intnum_get_int(intn) + 1;
+ yasm_expr_destroy(evalresult);
+ }
+ else
+ {
+ error(ERR_NONFATAL, "`%%rep' expects a repeat count");
+ i = 0;
+ }
+ free_tlist(origline);
+
+ tmp_defining = defining;
+ defining = nasm_malloc(sizeof(MMacro));
+ defining->name = NULL; /* flags this macro as a %rep block */
+ defining->casesense = 0;
+ defining->plus = FALSE;
+ defining->nolist = nolist;
+ defining->in_progress = i;
+ defining->nparam_min = defining->nparam_max = 0;
+ defining->defaults = NULL;
+ defining->dlist = NULL;
+ defining->expansion = NULL;
+ defining->next_active = istk->mstk;
+ defining->rep_nest = tmp_defining;
+ return DIRECTIVE_FOUND;
+
+ case PP_ENDREP:
+ if (!defining || defining->name)
+ {
+ error(ERR_NONFATAL, "`%%endrep': no matching `%%rep'");
+ return DIRECTIVE_FOUND;
+ }
+
+ /*
+ * Now we have a "macro" defined - although it has no name
+ * and we won't be entering it in the hash tables - we must
+ * push a macro-end marker for it on to istk->expansion.
+ * After that, it will take care of propagating itself (a
+ * macro-end marker line for a macro which is really a %rep
+ * block will cause the macro to be re-expanded, complete
+ * with another macro-end marker to ensure the process
+ * continues) until the whole expansion is forcibly removed
+ * from istk->expansion by a %exitrep.
+ */
+ l = nasm_malloc(sizeof(Line));
+ l->next = istk->expansion;
+ l->finishes = defining;
+ l->first = NULL;
+ istk->expansion = l;
+
+ istk->mstk = defining;
+
+ list->uplevel(defining->nolist ? LIST_MACRO_NOLIST : LIST_MACRO);
+ tmp_defining = defining;
+ defining = defining->rep_nest;
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+
+ case PP_EXITREP:
+ /*
+ * We must search along istk->expansion until we hit a
+ * macro-end marker for a macro with no name. Then we set
+ * its `in_progress' flag to 0.
+ */
+ for (l = istk->expansion; l; l = l->next)
+ if (l->finishes && !l->finishes->name)
+ break;
+
+ if (l)
+ l->finishes->in_progress = 0;
+ else
+ error(ERR_NONFATAL, "`%%exitrep' not within `%%rep' block");
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+
+ case PP_XDEFINE:
+ case PP_IXDEFINE:
+ case PP_DEFINE:
+ case PP_IDEFINE:
+ tline = tline->next;
+ skip_white_(tline);
+ tline = expand_id(tline);
+ if (!tline || (tline->type != TOK_ID &&
+ (tline->type != TOK_PREPROC_ID ||
+ tline->text[1] != '$')))
+ {
+ error(ERR_NONFATAL,
+ "`%%%s%sdefine' expects a macro identifier",
+ ((i == PP_IDEFINE || i == PP_IXDEFINE) ? "i" : ""),
+ ((i == PP_XDEFINE || i == PP_IXDEFINE) ? "x" : ""));
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+ }
+
+ ctx = get_ctx(tline->text, FALSE);
+ if (!ctx)
+ smhead = &smacros[hash(tline->text)];
+ else
+ smhead = &ctx->localmac;
+ mname = tline->text;
+ last = tline;
+ param_start = tline = tline->next;
+ nparam = 0;
+
+ /* Expand the macro definition now for %xdefine and %ixdefine */
+ if ((i == PP_XDEFINE) || (i == PP_IXDEFINE))
+ tline = expand_smacro(tline);
+
+ if (tok_is_(tline, "("))
+ {
+ /*
+ * This macro has parameters.
+ */
+
+ tline = tline->next;
+ while (1)
+ {
+ skip_white_(tline);
+ if (!tline)
+ {
+ error(ERR_NONFATAL, "parameter identifier expected");
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+ }
+ if (tline->type != TOK_ID)
+ {
+ error(ERR_NONFATAL,
+ "`%s': parameter identifier expected",
+ tline->text);
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+ }
+ tline->type = TOK_SMAC_PARAM + nparam++;
+ tline = tline->next;
+ skip_white_(tline);
+ if (tok_is_(tline, ","))
+ {
+ tline = tline->next;
+ continue;
+ }
+ if (!tok_is_(tline, ")"))
+ {
+ error(ERR_NONFATAL,
+ "`)' expected to terminate macro template");
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+ }
+ break;
+ }
+ last = tline;
+ tline = tline->next;
+ }
+ if (tok_type_(tline, TOK_WHITESPACE))
+ last = tline, tline = tline->next;
+ macro_start = NULL;
+ last->next = NULL;
+ t = tline;
+ while (t)
+ {
+ if (t->type == TOK_ID)
+ {
+ for (tt = param_start; tt; tt = tt->next)
+ if (tt->type >= TOK_SMAC_PARAM &&
+ !strcmp(tt->text, t->text))
+ t->type = tt->type;
+ }
+ tt = t->next;
+ t->next = macro_start;
+ macro_start = t;
+ t = tt;
+ }
+ /*
+ * Good. We now have a macro name, a parameter count, and a
+ * token list (in reverse order) for an expansion. We ought
+ * to be OK just to create an SMacro, store it, and let
+ * free_tlist have the rest of the line (which we have
+ * carefully re-terminated after chopping off the expansion
+ * from the end).
+ */
+ if (smacro_defined(ctx, mname, nparam, &smac, i == PP_DEFINE))
+ {
+ if (!smac)
+ {
+ error(ERR_WARNING,
+ "single-line macro `%s' defined both with and"
+ " without parameters", mname);
+ free_tlist(origline);
+ free_tlist(macro_start);
+ return DIRECTIVE_FOUND;
+ }
+ else if (smac->level == Level)
+ {
+ /*
+ * We're redefining in the same level, so we have to
+ * take over an existing SMacro structure. This means
+ * freeing what was already in it.
+ */
+ nasm_free(smac->name);
+ free_tlist(smac->expansion);
+ }
+ else
+ {
+ smac = nasm_malloc(sizeof(SMacro));
+ smac->next = *smhead;
+ *smhead = smac;
+ }
+ }
+ else
+ {
+ smac = nasm_malloc(sizeof(SMacro));
+ smac->next = *smhead;
+ *smhead = smac;
+ }
+ smac->name = nasm_strdup(mname);
+ smac->casesense = ((i == PP_DEFINE) || (i == PP_XDEFINE));
+ smac->nparam = nparam;
+ smac->level = Level;
+ smac->expansion = macro_start;
+ smac->in_progress = FALSE;
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+
+ case PP_UNDEF:
+ tline = tline->next;
+ skip_white_(tline);
+ tline = expand_id(tline);
+ if (!tline || (tline->type != TOK_ID &&
+ (tline->type != TOK_PREPROC_ID ||
+ tline->text[1] != '$')))
+ {
+ error(ERR_NONFATAL, "`%%undef' expects a macro identifier");
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+ }
+ if (tline->next)
+ {
+ error(ERR_WARNING,
+ "trailing garbage after macro name ignored");
+ }
+
+ /* Find the context that symbol belongs to */
+ ctx = get_ctx(tline->text, FALSE);
+ if (!ctx)
+ smhead = &smacros[hash(tline->text)];
+ else
+ smhead = &ctx->localmac;
+
+ mname = tline->text;
+
+ /*
+ * We now have a macro name... go hunt for it.
+ */
+ while (smacro_defined(ctx, mname, -1, &smac, 1))
+ {
+ /* Defined, so we need to find its predecessor and nuke it */
+ SMacro **s;
+ for (s = smhead; *s && *s != smac; s = &(*s)->next);
+ if (*s)
+ {
+ *s = smac->next;
+ nasm_free(smac->name);
+ free_tlist(smac->expansion);
+ nasm_free(smac);
+ }
+ }
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+
+ case PP_STRLEN:
+ tline = tline->next;
+ skip_white_(tline);
+ tline = expand_id(tline);
+ if (!tline || (tline->type != TOK_ID &&
+ (tline->type != TOK_PREPROC_ID ||
+ tline->text[1] != '$')))
+ {
+ error(ERR_NONFATAL,
+ "`%%strlen' expects a macro identifier as first parameter");
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+ }
+ ctx = get_ctx(tline->text, FALSE);
+ if (!ctx)
+ smhead = &smacros[hash(tline->text)];
+ else
+ smhead = &ctx->localmac;
+ mname = tline->text;
+ last = tline;
+ tline = expand_smacro(tline->next);
+ last->next = NULL;
+
+ t = tline;
+ while (tok_type_(t, TOK_WHITESPACE))
+ t = t->next;
+ /* t should now point to the string */
+ if (t->type != TOK_STRING)
+ {
+ error(ERR_NONFATAL,
+ "`%%strlen` requires string as second parameter");
+ free_tlist(tline);
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+ }
+
+ macro_start = nasm_malloc(sizeof(*macro_start));
+ macro_start->next = NULL;
+ make_tok_num(macro_start,
+ yasm_intnum_create_uint((unsigned long)(strlen(t->text) - 2)));
+ macro_start->mac = NULL;
+
+ /*
+ * We now have a macro name, an implicit parameter count of
+ * zero, and a numeric token to use as an expansion. Create
+ * and store an SMacro.
+ */
+ if (smacro_defined(ctx, mname, 0, &smac, i == PP_STRLEN))
+ {
+ if (!smac)
+ error(ERR_WARNING,
+ "single-line macro `%s' defined both with and"
+ " without parameters", mname);
+ else
+ {
+ /*
+ * We're redefining, so we have to take over an
+ * existing SMacro structure. This means freeing
+ * what was already in it.
+ */
+ nasm_free(smac->name);
+ free_tlist(smac->expansion);
+ }
+ }
+ else
+ {
+ smac = nasm_malloc(sizeof(SMacro));
+ smac->next = *smhead;
+ *smhead = smac;
+ }
+ smac->name = nasm_strdup(mname);
+ smac->casesense = (i == PP_STRLEN);
+ smac->nparam = 0;
+ smac->level = 0;
+ smac->expansion = macro_start;
+ smac->in_progress = FALSE;
+ free_tlist(tline);
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+
+ case PP_SUBSTR:
+ tline = tline->next;
+ skip_white_(tline);
+ tline = expand_id(tline);
+ if (!tline || (tline->type != TOK_ID &&
+ (tline->type != TOK_PREPROC_ID ||
+ tline->text[1] != '$')))
+ {
+ error(ERR_NONFATAL,
+ "`%%substr' expects a macro identifier as first parameter");
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+ }
+ ctx = get_ctx(tline->text, FALSE);
+ if (!ctx)
+ smhead = &smacros[hash(tline->text)];
+ else
+ smhead = &ctx->localmac;
+ mname = tline->text;
+ last = tline;
+ tline = expand_smacro(tline->next);
+ last->next = NULL;
+
+ t = tline->next;
+ while (tok_type_(t, TOK_WHITESPACE))
+ t = t->next;
+
+ /* t should now point to the string */
+ if (t->type != TOK_STRING)
+ {
+ error(ERR_NONFATAL,
+ "`%%substr` requires string as second parameter");
+ free_tlist(tline);
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+ }
+
+ tt = t->next;
+ tptr = &tt;
+ tokval.t_type = TOKEN_INVALID;
+ evalresult = evaluate(ppscan, tptr, &tokval, pass, error);
+ if (!evalresult)
+ {
+ free_tlist(tline);
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+ }
+ intn = yasm_expr_get_intnum(&evalresult, 0);
+ if (!intn)
+ {
+ error(ERR_NONFATAL, "non-constant value given to `%%substr`");
+ free_tlist(tline);
+ free_tlist(origline);
+ yasm_expr_destroy(evalresult);
+ return DIRECTIVE_FOUND;
+ }
+
+ macro_start = nasm_malloc(sizeof(*macro_start));
+ macro_start->next = NULL;
+ macro_start->text = nasm_strdup("'''");
+ if (yasm_intnum_sign(intn) == 1
+ && yasm_intnum_get_uint(intn) < strlen(t->text) - 1)
+ {
+ macro_start->text[1] = t->text[yasm_intnum_get_uint(intn)];
+ }
+ else
+ {
+ macro_start->text[2] = '\0';
+ }
+ yasm_expr_destroy(evalresult);
+ macro_start->type = TOK_STRING;
+ macro_start->mac = NULL;
+
+ /*
+ * We now have a macro name, an implicit parameter count of
+ * zero, and a numeric token to use as an expansion. Create
+ * and store an SMacro.
+ */
+ if (smacro_defined(ctx, mname, 0, &smac, i == PP_SUBSTR))
+ {
+ if (!smac)
+ error(ERR_WARNING,
+ "single-line macro `%s' defined both with and"
+ " without parameters", mname);
+ else
+ {
+ /*
+ * We're redefining, so we have to take over an
+ * existing SMacro structure. This means freeing
+ * what was already in it.
+ */
+ nasm_free(smac->name);
+ free_tlist(smac->expansion);
+ }
+ }
+ else
+ {
+ smac = nasm_malloc(sizeof(SMacro));
+ smac->next = *smhead;
+ *smhead = smac;
+ }
+ smac->name = nasm_strdup(mname);
+ smac->casesense = (i == PP_SUBSTR);
+ smac->nparam = 0;
+ smac->level = 0;
+ smac->expansion = macro_start;
+ smac->in_progress = FALSE;
+ free_tlist(tline);
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+
+
+ case PP_ASSIGN:
+ case PP_IASSIGN:
+ tline = tline->next;
+ skip_white_(tline);
+ tline = expand_id(tline);
+ if (!tline || (tline->type != TOK_ID &&
+ (tline->type != TOK_PREPROC_ID ||
+ tline->text[1] != '$')))
+ {
+ error(ERR_NONFATAL,
+ "`%%%sassign' expects a macro identifier",
+ (i == PP_IASSIGN ? "i" : ""));
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+ }
+ ctx = get_ctx(tline->text, FALSE);
+ if (!ctx)
+ smhead = &smacros[hash(tline->text)];
+ else
+ smhead = &ctx->localmac;
+ mname = tline->text;
+ last = tline;
+ tline = expand_smacro(tline->next);
+ last->next = NULL;
+
+ t = tline;
+ tptr = &t;
+ tokval.t_type = TOKEN_INVALID;
+ evalresult = evaluate(ppscan, tptr, &tokval, pass, error);
+ free_tlist(tline);
+ if (!evalresult)
+ {
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+ }
+
+ if (tokval.t_type)
+ error(ERR_WARNING,
+ "trailing garbage after expression ignored");
+
+ intn = yasm_expr_get_intnum(&evalresult, 0);
+ if (!intn)
+ {
+ error(ERR_NONFATAL,
+ "non-constant value given to `%%%sassign'",
+ (i == PP_IASSIGN ? "i" : ""));
+ free_tlist(origline);
+ yasm_expr_destroy(evalresult);
+ return DIRECTIVE_FOUND;
+ }
+
+ macro_start = nasm_malloc(sizeof(*macro_start));
+ macro_start->next = NULL;
+ make_tok_num(macro_start, yasm_intnum_copy(intn));
+ yasm_expr_destroy(evalresult);
+ macro_start->mac = NULL;
+
+ /*
+ * We now have a macro name, an implicit parameter count of
+ * zero, and a numeric token to use as an expansion. Create
+ * and store an SMacro.
+ */
+ if (smacro_defined(ctx, mname, 0, &smac, i == PP_ASSIGN))
+ {
+ if (!smac)
+ error(ERR_WARNING,
+ "single-line macro `%s' defined both with and"
+ " without parameters", mname);
+ else
+ {
+ /*
+ * We're redefining, so we have to take over an
+ * existing SMacro structure. This means freeing
+ * what was already in it.
+ */
+ nasm_free(smac->name);
+ free_tlist(smac->expansion);
+ }
+ }
+ else
+ {
+ smac = nasm_malloc(sizeof(SMacro));
+ smac->next = *smhead;
+ *smhead = smac;
+ }
+ smac->name = nasm_strdup(mname);
+ smac->casesense = (i == PP_ASSIGN);
+ smac->nparam = 0;
+ smac->level = 0;
+ smac->expansion = macro_start;
+ smac->in_progress = FALSE;
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+
+ case PP_LINE:
+ /*
+ * Syntax is `%line nnn[+mmm] [filename]'
+ */
+ tline = tline->next;
+ skip_white_(tline);
+ if (!tok_type_(tline, TOK_NUMBER))
+ {
+ error(ERR_NONFATAL, "`%%line' expects line number");
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+ }
+ intn = nasm_readnum(tline->text, &j);
+ k = yasm_intnum_get_int(intn);
+ yasm_intnum_destroy(intn);
+ m = 1;
+ tline = tline->next;
+ if (tok_is_(tline, "+"))
+ {
+ tline = tline->next;
+ if (!tok_type_(tline, TOK_NUMBER))
+ {
+ error(ERR_NONFATAL, "`%%line' expects line increment");
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+ }
+ intn = nasm_readnum(tline->text, &j);
+ m = yasm_intnum_get_int(intn);
+ yasm_intnum_destroy(intn);
+ tline = tline->next;
+ }
+ skip_white_(tline);
+ nasm_src_set_linnum(k);
+ istk->lineinc = m;
+ if (tline)
+ {
+ nasm_free(nasm_src_set_fname(detoken(tline, FALSE)));
+ }
+ free_tlist(origline);
+ return DIRECTIVE_FOUND;
+
+ default:
+ error(ERR_FATAL,
+ "preprocessor directive `%s' not yet implemented",
+ directives[i]);
+ break;
+ }
+ return DIRECTIVE_FOUND;
+}
+
+/*
+ * Ensure that a macro parameter contains a condition code and
+ * nothing else. Return the condition code index if so, or -1
+ * otherwise.
+ */
+static int
+find_cc(Token * t)
+{
+ Token *tt;
+ int i, j, k, m;
+
+ skip_white_(t);
+ if (t->type != TOK_ID)
+ return -1;
+ tt = t->next;
+ skip_white_(tt);
+ if (tt && (tt->type != TOK_OTHER || strcmp(tt->text, ",")))
+ return -1;
+
+ i = -1;
+ j = elements(conditions);
+ while (j - i > 1)
+ {
+ k = (j + i) / 2;
+ m = nasm_stricmp(t->text, conditions[k]);
+ if (m == 0)
+ {
+ i = k;
+ j = -2;
+ break;
+ }
+ else if (m < 0)
+ {
+ j = k;
+ }
+ else
+ i = k;
+ }
+ if (j != -2)
+ return -1;
+ return i;
+}
+
+/*
+ * Expand MMacro-local things: parameter references (%0, %n, %+n,
+ * %-n) and MMacro-local identifiers (%%foo).
+ */
+static Token *
+expand_mmac_params(Token * tline)
+{
+ Token *t, *tt, **tail, *thead;
+
+ tail = &thead;
+ thead = NULL;
+
+ while (tline)
+ {
+ if (tline->type == TOK_PREPROC_ID &&
+ (((tline->text[1] == '+' || tline->text[1] == '-')
+ && tline->text[2]) || tline->text[1] == '%'
+ || (tline->text[1] >= '0' && tline->text[1] <= '9')))
+ {
+ char *text = NULL;
+ int type = 0, cc; /* type = 0 to placate optimisers */
+ char tmpbuf[30];
+ char *second_text = NULL;
+ int n, i;
+ MMacro *mac;
+
+ t = tline;
+ tline = tline->next;
+
+ second_text = strchr(t->text, ':');
+
+ mac = istk->mstk;
+ while (mac && !mac->name) /* avoid mistaking %reps for macros */
+ mac = mac->next_active;
+ if (!mac)
+ error(ERR_NONFATAL, "`%s': not in a macro call", t->text);
+ else
+ {
+ if (second_text)
+ {
+ int end = atoi(second_text+1)-1;
+ int is_fst = 1;
+ int k;
+ n = atoi(t->text + 1)-1;
+ if (end < 0)
+ end += mac->nparam;
+
+ for (k = n; k <= end; k++)
+ {
+ if (k >= mac->nparam)
+ tt = NULL;
+ else
+ {
+ if (mac->nparam > 1)
+ k = (k + mac->rotate) % mac->nparam;
+ tt = mac->params[k];
+ }
+ if (tt)
+ {
+ if (!is_fst && mac->paramlen[k])
+ {
+ *tail = new_Token(NULL, TOK_OTHER, ",", 0);
+ tail = &(*tail)->next;
+ }
+ if (mac->paramlen[k])
+ is_fst = 0;
+ for (i = 0; i < mac->paramlen[k]; i++)
+ {
+ *tail =
+ new_Token(NULL, tt->type, tt->text,
+ 0);
+ tail = &(*tail)->next;
+ tt = tt->next;
+ }
+ }
+ text = NULL; /* we've done it here */
+ }
+ }
+ else
+ {
+ switch (t->text[1])
+ {
+ /*
+ * We have to make a substitution of one of the
+ * forms %1, %-1, %+1, %%foo, %0.
+ */
+ case '0':
+ type = TOK_NUMBER;
+ sprintf(tmpbuf, "%ld", mac->nparam);
+ text = nasm_strdup(tmpbuf);
+ break;
+ case '%':
+ type = TOK_ID;
+ sprintf(tmpbuf, "..@%lu.", mac->unique);
+ text = nasm_strcat(tmpbuf, t->text + 2);
+ break;
+ case '-':
+ n = atoi(t->text + 2) - 1;
+ if (n >= mac->nparam)
+ tt = NULL;
+ else
+ {
+ if (mac->nparam > 1)
+ n = (n + mac->rotate) % mac->nparam;
+ tt = mac->params[n];
+ }
+ cc = find_cc(tt);
+ if (cc == -1)
+ {
+ error(ERR_NONFATAL,
+ "macro parameter %d is not a condition code",
+ n + 1);
+ text = NULL;
+ }
+ else
+ {
+ type = TOK_ID;
+ if (inverse_ccs[cc] == -1)
+ {
+ error(ERR_NONFATAL,
+ "condition code `%s' is not invertible",
+ conditions[cc]);
+ text = NULL;
+ }
+ else
+ text =
+ nasm_strdup(conditions[inverse_ccs
+ [cc]]);
+ }
+ break;
+ case '+':
+ n = atoi(t->text + 2) - 1;
+ if (n >= mac->nparam)
+ tt = NULL;
+ else
+ {
+ if (mac->nparam > 1)
+ n = (n + mac->rotate) % mac->nparam;
+ tt = mac->params[n];
+ }
+ cc = find_cc(tt);
+ if (cc == -1)
+ {
+ error(ERR_NONFATAL,
+ "macro parameter %d is not a condition code",
+ n + 1);
+ text = NULL;
+ }
+ else
+ {
+ type = TOK_ID;
+ text = nasm_strdup(conditions[cc]);
+ }
+ break;
+ default:
+ n = atoi(t->text + 1) - 1;
+ if (n >= mac->nparam)
+ tt = NULL;
+ else
+ {
+ if (mac->nparam > 1)
+ n = (n + mac->rotate) % mac->nparam;
+ tt = mac->params[n];
+ }
+ if (tt)
+ {
+ for (i = 0; i < mac->paramlen[n]; i++)
+ {
+ *tail =
+ new_Token(NULL, tt->type, tt->text,
+ 0);
+ tail = &(*tail)->next;
+ tt = tt->next;
+ }
+ }
+ text = NULL; /* we've done it here */
+ break;
+ }
+ }
+ }
+
+ if (!text)
+ {
+ delete_Token(t);
+ }
+ else
+ {
+ *tail = t;
+ tail = &t->next;
+ t->type = type;
+ nasm_free(t->text);
+ t->text = text;
+ t->mac = NULL;
+ }
+ continue;
+ }
+ else
+ {
+ t = *tail = tline;
+ tline = tline->next;
+ t->mac = NULL;
+ tail = &t->next;
+ }
+ }
+ *tail = NULL;
+ t = thead;
+ for (; t && (tt = t->next) != NULL; t = t->next)
+ switch (t->type)
+ {
+ case TOK_WHITESPACE:
+ if (tt->type == TOK_WHITESPACE)
+ {
+ t->next = delete_Token(tt);
+ }
+ break;
+ case TOK_ID:
+ if (tt->type == TOK_ID || tt->type == TOK_NUMBER)
+ {
+ char *tmp = nasm_strcat(t->text, tt->text);
+ nasm_free(t->text);
+ t->text = tmp;
+ t->next = delete_Token(tt);
+ }
+ break;
+ case TOK_NUMBER:
+ if (tt->type == TOK_NUMBER)
+ {
+ char *tmp = nasm_strcat(t->text, tt->text);
+ nasm_free(t->text);
+ t->text = tmp;
+ t->next = delete_Token(tt);
+ }
+ break;
+ }
+
+ return thead;
+}
+
+/*
+ * Expand all single-line macro calls made in the given line.
+ * Return the expanded version of the line. The original is deemed
+ * to be destroyed in the process. (In reality we'll just move
+ * Tokens from input to output a lot of the time, rather than
+ * actually bothering to destroy and replicate.)
+ */
+static Token *
+expand_smacro(Token * tline)
+{
+ Token *t, *tt, *mstart, **tail, *thead;
+ SMacro *head = NULL, *m;
+ Token **params;
+ int *paramsize;
+ int nparam, sparam, brackets, rescan;
+ Token *org_tline = tline;
+ Context *ctx;
+ char *mname;
+
+ /*
+ * Trick: we should avoid changing the start token pointer since it can
+ * be contained in "next" field of other token. Because of this
+ * we allocate a copy of first token and work with it; at the end of
+ * routine we copy it back
+ */
+ if (org_tline)
+ {
+ tline =
+ new_Token(org_tline->next, org_tline->type, org_tline->text,
+ 0);
+ tline->mac = org_tline->mac;
+ nasm_free(org_tline->text);
+ org_tline->text = NULL;
+ }
+
+ again:
+ tail = &thead;
+ thead = NULL;
+
+ while (tline)
+ { /* main token loop */
+ if ((mname = tline->text))
+ {
+ /* if this token is a local macro, look in local context */
+ if (tline->type == TOK_ID || tline->type == TOK_PREPROC_ID)
+ ctx = get_ctx(mname, TRUE);
+ else
+ ctx = NULL;
+ if (!ctx)
+ head = smacros[hash(mname)];
+ else
+ head = ctx->localmac;
+ /*
+ * We've hit an identifier. As in is_mmacro below, we first
+ * check whether the identifier is a single-line macro at
+ * all, then think about checking for parameters if
+ * necessary.
+ */
+ for (m = head; m; m = m->next)
+ if (!mstrcmp(m->name, mname, m->casesense))
+ break;
+ if (m)
+ {
+ mstart = tline;
+ params = NULL;
+ paramsize = NULL;
+ if (m->nparam == 0)
+ {
+ /*
+ * Simple case: the macro is parameterless. Discard the
+ * one token that the macro call took, and push the
+ * expansion back on the to-do stack.
+ */
+ if (!m->expansion)
+ {
+ if (!strcmp("__FILE__", m->name))
+ {
+ long num = 0;
+ nasm_src_get(&num, &(tline->text));
+ nasm_quote(&(tline->text));
+ tline->type = TOK_STRING;
+ continue;
+ }
+ if (!strcmp("__LINE__", m->name))
+ {
+ nasm_free(tline->text);
+ make_tok_num(tline, yasm_intnum_create_int(nasm_src_get_linnum()));
+ continue;
+ }
+ tline = delete_Token(tline);
+ continue;
+ }
+ }
+ else
+ {
+ /*
+ * Complicated case: at least one macro with this name
+ * exists and takes parameters. We must find the
+ * parameters in the call, count them, find the SMacro
+ * that corresponds to that form of the macro call, and
+ * substitute for the parameters when we expand. What a
+ * pain.
+ */
+ /*tline = tline->next;
+ skip_white_(tline);*/
+ do {
+ t = tline->next;
+ while (tok_type_(t, TOK_SMAC_END))
+ {
+ t->mac->in_progress = FALSE;
+ t->text = NULL;
+ t = tline->next = delete_Token(t);
+ }
+ tline = t;
+ } while (tok_type_(tline, TOK_WHITESPACE));
+ if (!tok_is_(tline, "("))
+ {
+ /*
+ * This macro wasn't called with parameters: ignore
+ * the call. (Behaviour borrowed from gnu cpp.)
+ */
+ tline = mstart;
+ m = NULL;
+ }
+ else
+ {
+ int paren = 0;
+ int white = 0;
+ brackets = 0;
+ nparam = 0;
+ sparam = PARAM_DELTA;
+ params = nasm_malloc(sparam * sizeof(Token *));
+ params[0] = tline->next;
+ paramsize = nasm_malloc(sparam * sizeof(int));
+ paramsize[0] = 0;
+ while (TRUE)
+ { /* parameter loop */
+ /*
+ * For some unusual expansions
+ * which concatenates function call
+ */
+ t = tline->next;
+ while (tok_type_(t, TOK_SMAC_END))
+ {
+ t->mac->in_progress = FALSE;
+ t->text = NULL;
+ t = tline->next = delete_Token(t);
+ }
+ tline = t;
+
+ if (!tline)
+ {
+ error(ERR_NONFATAL,
+ "macro call expects terminating `)'");
+ break;
+ }
+ if (tline->type == TOK_WHITESPACE
+ && brackets <= 0)
+ {
+ if (paramsize[nparam])
+ white++;
+ else
+ params[nparam] = tline->next;
+ continue; /* parameter loop */
+ }
+ if (tline->type == TOK_OTHER
+ && tline->text[1] == 0)
+ {
+ char ch = tline->text[0];
+ if (ch == ',' && !paren && brackets <= 0)
+ {
+ if (++nparam >= sparam)
+ {
+ sparam += PARAM_DELTA;
+ params = nasm_realloc(params,
+ sparam * sizeof(Token *));
+ paramsize = nasm_realloc(paramsize,
+ sparam * sizeof(int));
+ }
+ params[nparam] = tline->next;
+ paramsize[nparam] = 0;
+ white = 0;
+ continue; /* parameter loop */
+ }
+ if (ch == '{' &&
+ (brackets > 0 || (brackets == 0 &&
+ !paramsize[nparam])))
+ {
+ if (!(brackets++))
+ {
+ params[nparam] = tline->next;
+ continue; /* parameter loop */
+ }
+ }
+ if (ch == '}' && brackets > 0)
+ if (--brackets == 0)
+ {
+ brackets = -1;
+ continue; /* parameter loop */
+ }
+ if (ch == '(' && !brackets)
+ paren++;
+ if (ch == ')' && brackets <= 0)
+ if (--paren < 0)
+ break;
+ }
+ if (brackets < 0)
+ {
+ brackets = 0;
+ error(ERR_NONFATAL, "braces do not "
+ "enclose all of macro parameter");
+ }
+ paramsize[nparam] += white + 1;
+ white = 0;
+ } /* parameter loop */
+ nparam++;
+ while (m && (m->nparam != nparam ||
+ mstrcmp(m->name, mname,
+ m->casesense)))
+ m = m->next;
+ if (!m)
+ error(ERR_WARNING | ERR_WARN_MNP,
+ "macro `%s' exists, "
+ "but not taking %d parameters",
+ mstart->text, nparam);
+ }
+ }
+ if (m && m->in_progress)
+ m = NULL;
+ if (!m) /* in progess or didn't find '(' or wrong nparam */
+ {
/*
- * We're redefining, so we have to take over an
- * existing SMacro structure. This means freeing
- * what was already in it.
- */
- nasm_free(smac->name);
- free_tlist(smac->expansion);
- }
- }
- else
- {
- smac = nasm_malloc(sizeof(SMacro));
- smac->next = *smhead;
- *smhead = smac;
- }
- smac->name = nasm_strdup(mname);
- smac->casesense = (i == PP_SUBSTR);
- smac->nparam = 0;
- smac->level = 0;
- smac->expansion = macro_start;
- smac->in_progress = FALSE;
- free_tlist(tline);
- free_tlist(origline);
- return DIRECTIVE_FOUND;
-
-
- case PP_ASSIGN:
- case PP_IASSIGN:
- tline = tline->next;
- skip_white_(tline);
- tline = expand_id(tline);
- if (!tline || (tline->type != TOK_ID &&
- (tline->type != TOK_PREPROC_ID ||
- tline->text[1] != '$')))
- {
- error(ERR_NONFATAL,
- "`%%%sassign' expects a macro identifier",
- (i == PP_IASSIGN ? "i" : ""));
- free_tlist(origline);
- return DIRECTIVE_FOUND;
- }
- ctx = get_ctx(tline->text, FALSE);
- if (!ctx)
- smhead = &smacros[hash(tline->text)];
- else
- smhead = &ctx->localmac;
- mname = tline->text;
- last = tline;
- tline = expand_smacro(tline->next);
- last->next = NULL;
-
- t = tline;
- tptr = &t;
- tokval.t_type = TOKEN_INVALID;
- evalresult = evaluate(ppscan, tptr, &tokval, pass, error);
- free_tlist(tline);
- if (!evalresult)
- {
- free_tlist(origline);
- return DIRECTIVE_FOUND;
- }
-
- if (tokval.t_type)
- error(ERR_WARNING,
- "trailing garbage after expression ignored");
-
- intn = yasm_expr_get_intnum(&evalresult, 0);
- if (!intn)
- {
- error(ERR_NONFATAL,
- "non-constant value given to `%%%sassign'",
- (i == PP_IASSIGN ? "i" : ""));
- free_tlist(origline);
- yasm_expr_destroy(evalresult);
- return DIRECTIVE_FOUND;
- }
-
- macro_start = nasm_malloc(sizeof(*macro_start));
- macro_start->next = NULL;
- make_tok_num(macro_start, yasm_intnum_copy(intn));
- yasm_expr_destroy(evalresult);
- macro_start->mac = NULL;
-
- /*
- * We now have a macro name, an implicit parameter count of
- * zero, and a numeric token to use as an expansion. Create
- * and store an SMacro.
- */
- if (smacro_defined(ctx, mname, 0, &smac, i == PP_ASSIGN))
- {
- if (!smac)
- error(ERR_WARNING,
- "single-line macro `%s' defined both with and"
- " without parameters", mname);
- else
- {
- /*
- * We're redefining, so we have to take over an
- * existing SMacro structure. This means freeing
- * what was already in it.
- */
- nasm_free(smac->name);
- free_tlist(smac->expansion);
- }
- }
- else
- {
- smac = nasm_malloc(sizeof(SMacro));
- smac->next = *smhead;
- *smhead = smac;
- }
- smac->name = nasm_strdup(mname);
- smac->casesense = (i == PP_ASSIGN);
- smac->nparam = 0;
- smac->level = 0;
- smac->expansion = macro_start;
- smac->in_progress = FALSE;
- free_tlist(origline);
- return DIRECTIVE_FOUND;
-
- case PP_LINE:
- /*
- * Syntax is `%line nnn[+mmm] [filename]'
- */
- tline = tline->next;
- skip_white_(tline);
- if (!tok_type_(tline, TOK_NUMBER))
- {
- error(ERR_NONFATAL, "`%%line' expects line number");
- free_tlist(origline);
- return DIRECTIVE_FOUND;
- }
- intn = nasm_readnum(tline->text, &j);
- k = yasm_intnum_get_int(intn);
- yasm_intnum_destroy(intn);
- m = 1;
- tline = tline->next;
- if (tok_is_(tline, "+"))
- {
- tline = tline->next;
- if (!tok_type_(tline, TOK_NUMBER))
- {
- error(ERR_NONFATAL, "`%%line' expects line increment");
- free_tlist(origline);
- return DIRECTIVE_FOUND;
- }
- intn = nasm_readnum(tline->text, &j);
- m = yasm_intnum_get_int(intn);
- yasm_intnum_destroy(intn);
- tline = tline->next;
- }
- skip_white_(tline);
- nasm_src_set_linnum(k);
- istk->lineinc = m;
- if (tline)
- {
- nasm_free(nasm_src_set_fname(detoken(tline, FALSE)));
- }
- free_tlist(origline);
- return DIRECTIVE_FOUND;
-
- default:
- error(ERR_FATAL,
- "preprocessor directive `%s' not yet implemented",
- directives[i]);
- break;
- }
- return DIRECTIVE_FOUND;
-}
-
-/*
- * Ensure that a macro parameter contains a condition code and
- * nothing else. Return the condition code index if so, or -1
- * otherwise.
- */
-static int
-find_cc(Token * t)
-{
- Token *tt;
- int i, j, k, m;
-
- skip_white_(t);
- if (t->type != TOK_ID)
- return -1;
- tt = t->next;
- skip_white_(tt);
- if (tt && (tt->type != TOK_OTHER || strcmp(tt->text, ",")))
- return -1;
-
- i = -1;
- j = elements(conditions);
- while (j - i > 1)
- {
- k = (j + i) / 2;
- m = nasm_stricmp(t->text, conditions[k]);
- if (m == 0)
- {
- i = k;
- j = -2;
- break;
- }
- else if (m < 0)
- {
- j = k;
- }
- else
- i = k;
- }
- if (j != -2)
- return -1;
- return i;
-}
-
-/*
- * Expand MMacro-local things: parameter references (%0, %n, %+n,
- * %-n) and MMacro-local identifiers (%%foo).
- */
-static Token *
-expand_mmac_params(Token * tline)
-{
- Token *t, *tt, **tail, *thead;
-
- tail = &thead;
- thead = NULL;
-
- while (tline)
- {
- if (tline->type == TOK_PREPROC_ID &&
- (((tline->text[1] == '+' || tline->text[1] == '-')
- && tline->text[2]) || tline->text[1] == '%'
- || (tline->text[1] >= '0' && tline->text[1] <= '9')))
- {
- char *text = NULL;
- int type = 0, cc; /* type = 0 to placate optimisers */
- char tmpbuf[30];
- char *second_text = NULL;
- int n, i;
- MMacro *mac;
-
- t = tline;
- tline = tline->next;
-
- second_text = strchr(t->text, ':');
-
- mac = istk->mstk;
- while (mac && !mac->name) /* avoid mistaking %reps for macros */
- mac = mac->next_active;
- if (!mac)
- error(ERR_NONFATAL, "`%s': not in a macro call", t->text);
- else
- {
- if (second_text)
- {
- int end = atoi(second_text+1)-1;
- int is_fst = 1;
- int k;
- n = atoi(t->text + 1)-1;
- if (end < 0)
- end += mac->nparam;
-
- for (k = n; k <= end; k++)
- {
- if (k >= mac->nparam)
- tt = NULL;
- else
- {
- if (mac->nparam > 1)
- k = (k + mac->rotate) % mac->nparam;
- tt = mac->params[k];
- }
- if (tt)
- {
- if (!is_fst && mac->paramlen[k])
- {
- *tail = new_Token(NULL, TOK_OTHER, ",", 0);
- tail = &(*tail)->next;
- }
- if (mac->paramlen[k])
- is_fst = 0;
- for (i = 0; i < mac->paramlen[k]; i++)
- {
- *tail =
- new_Token(NULL, tt->type, tt->text,
- 0);
- tail = &(*tail)->next;
- tt = tt->next;
- }
- }
- text = NULL; /* we've done it here */
- }
- }
- else
- {
- switch (t->text[1])
- {
- /*
- * We have to make a substitution of one of the
- * forms %1, %-1, %+1, %%foo, %0.
- */
- case '0':
- type = TOK_NUMBER;
- sprintf(tmpbuf, "%ld", mac->nparam);
- text = nasm_strdup(tmpbuf);
- break;
- case '%':
- type = TOK_ID;
- sprintf(tmpbuf, "..@%lu.", mac->unique);
- text = nasm_strcat(tmpbuf, t->text + 2);
- break;
- case '-':
- n = atoi(t->text + 2) - 1;
- if (n >= mac->nparam)
- tt = NULL;
- else
- {
- if (mac->nparam > 1)
- n = (n + mac->rotate) % mac->nparam;
- tt = mac->params[n];
- }
- cc = find_cc(tt);
- if (cc == -1)
- {
- error(ERR_NONFATAL,
- "macro parameter %d is not a condition code",
- n + 1);
- text = NULL;
- }
- else
- {
- type = TOK_ID;
- if (inverse_ccs[cc] == -1)
- {
- error(ERR_NONFATAL,
- "condition code `%s' is not invertible",
- conditions[cc]);
- text = NULL;
- }
- else
- text =
- nasm_strdup(conditions[inverse_ccs
- [cc]]);
- }
- break;
- case '+':
- n = atoi(t->text + 2) - 1;
- if (n >= mac->nparam)
- tt = NULL;
- else
- {
- if (mac->nparam > 1)
- n = (n + mac->rotate) % mac->nparam;
- tt = mac->params[n];
- }
- cc = find_cc(tt);
- if (cc == -1)
- {
- error(ERR_NONFATAL,
- "macro parameter %d is not a condition code",
- n + 1);
- text = NULL;
- }
- else
- {
- type = TOK_ID;
- text = nasm_strdup(conditions[cc]);
- }
- break;
- default:
- n = atoi(t->text + 1) - 1;
- if (n >= mac->nparam)
- tt = NULL;
- else
- {
- if (mac->nparam > 1)
- n = (n + mac->rotate) % mac->nparam;
- tt = mac->params[n];
- }
- if (tt)
- {
- for (i = 0; i < mac->paramlen[n]; i++)
- {
- *tail =
- new_Token(NULL, tt->type, tt->text,
- 0);
- tail = &(*tail)->next;
- tt = tt->next;
- }
- }
- text = NULL; /* we've done it here */
- break;
- }
- }
- }
-
- if (!text)
- {
- delete_Token(t);
- }
- else
- {
- *tail = t;
- tail = &t->next;
- t->type = type;
- nasm_free(t->text);
- t->text = text;
- t->mac = NULL;
- }
- continue;
- }
- else
- {
- t = *tail = tline;
- tline = tline->next;
- t->mac = NULL;
- tail = &t->next;
- }
- }
- *tail = NULL;
- t = thead;
- for (; t && (tt = t->next) != NULL; t = t->next)
- switch (t->type)
- {
- case TOK_WHITESPACE:
- if (tt->type == TOK_WHITESPACE)
- {
- t->next = delete_Token(tt);
- }
- break;
- case TOK_ID:
- if (tt->type == TOK_ID || tt->type == TOK_NUMBER)
- {
- char *tmp = nasm_strcat(t->text, tt->text);
- nasm_free(t->text);
- t->text = tmp;
- t->next = delete_Token(tt);
- }
- break;
- case TOK_NUMBER:
- if (tt->type == TOK_NUMBER)
- {
- char *tmp = nasm_strcat(t->text, tt->text);
- nasm_free(t->text);
- t->text = tmp;
- t->next = delete_Token(tt);
- }
- break;
- }
-
- return thead;
-}
-
-/*
- * Expand all single-line macro calls made in the given line.
- * Return the expanded version of the line. The original is deemed
- * to be destroyed in the process. (In reality we'll just move
- * Tokens from input to output a lot of the time, rather than
- * actually bothering to destroy and replicate.)
- */
-static Token *
-expand_smacro(Token * tline)
-{
- Token *t, *tt, *mstart, **tail, *thead;
- SMacro *head = NULL, *m;
- Token **params;
- int *paramsize;
- int nparam, sparam, brackets, rescan;
- Token *org_tline = tline;
- Context *ctx;
- char *mname;
-
- /*
- * Trick: we should avoid changing the start token pointer since it can
- * be contained in "next" field of other token. Because of this
- * we allocate a copy of first token and work with it; at the end of
- * routine we copy it back
- */
- if (org_tline)
- {
- tline =
- new_Token(org_tline->next, org_tline->type, org_tline->text,
- 0);
- tline->mac = org_tline->mac;
- nasm_free(org_tline->text);
- org_tline->text = NULL;
- }
-
- again:
- tail = &thead;
- thead = NULL;
-
- while (tline)
- { /* main token loop */
- if ((mname = tline->text))
- {
- /* if this token is a local macro, look in local context */
- if (tline->type == TOK_ID || tline->type == TOK_PREPROC_ID)
- ctx = get_ctx(mname, TRUE);
- else
- ctx = NULL;
- if (!ctx)
- head = smacros[hash(mname)];
- else
- head = ctx->localmac;
- /*
- * We've hit an identifier. As in is_mmacro below, we first
- * check whether the identifier is a single-line macro at
- * all, then think about checking for parameters if
- * necessary.
- */
- for (m = head; m; m = m->next)
- if (!mstrcmp(m->name, mname, m->casesense))
- break;
- if (m)
- {
- mstart = tline;
- params = NULL;
- paramsize = NULL;
- if (m->nparam == 0)
- {
- /*
- * Simple case: the macro is parameterless. Discard the
- * one token that the macro call took, and push the
- * expansion back on the to-do stack.
- */
- if (!m->expansion)
- {
- if (!strcmp("__FILE__", m->name))
- {
- long num = 0;
- nasm_src_get(&num, &(tline->text));
- nasm_quote(&(tline->text));
- tline->type = TOK_STRING;
- continue;
- }
- if (!strcmp("__LINE__", m->name))
- {
- nasm_free(tline->text);
- make_tok_num(tline, yasm_intnum_create_int(nasm_src_get_linnum()));
- continue;
- }
- tline = delete_Token(tline);
- continue;
- }
- }
- else
- {
- /*
- * Complicated case: at least one macro with this name
- * exists and takes parameters. We must find the
- * parameters in the call, count them, find the SMacro
- * that corresponds to that form of the macro call, and
- * substitute for the parameters when we expand. What a
- * pain.
- */
- /*tline = tline->next;
- skip_white_(tline);*/
- do {
- t = tline->next;
- while (tok_type_(t, TOK_SMAC_END))
- {
- t->mac->in_progress = FALSE;
- t->text = NULL;
- t = tline->next = delete_Token(t);
- }
- tline = t;
- } while (tok_type_(tline, TOK_WHITESPACE));
- if (!tok_is_(tline, "("))
- {
- /*
- * This macro wasn't called with parameters: ignore
- * the call. (Behaviour borrowed from gnu cpp.)
- */
- tline = mstart;
- m = NULL;
- }
- else
- {
- int paren = 0;
- int white = 0;
- brackets = 0;
- nparam = 0;
- sparam = PARAM_DELTA;
- params = nasm_malloc(sparam * sizeof(Token *));
- params[0] = tline->next;
- paramsize = nasm_malloc(sparam * sizeof(int));
- paramsize[0] = 0;
- while (TRUE)
- { /* parameter loop */
- /*
- * For some unusual expansions
- * which concatenates function call
- */
- t = tline->next;
- while (tok_type_(t, TOK_SMAC_END))
- {
- t->mac->in_progress = FALSE;
- t->text = NULL;
- t = tline->next = delete_Token(t);
- }
- tline = t;
-
- if (!tline)
- {
- error(ERR_NONFATAL,
- "macro call expects terminating `)'");
- break;
- }
- if (tline->type == TOK_WHITESPACE
- && brackets <= 0)
- {
- if (paramsize[nparam])
- white++;
- else
- params[nparam] = tline->next;
- continue; /* parameter loop */
- }
- if (tline->type == TOK_OTHER
- && tline->text[1] == 0)
- {
- char ch = tline->text[0];
- if (ch == ',' && !paren && brackets <= 0)
- {
- if (++nparam >= sparam)
- {
- sparam += PARAM_DELTA;
- params = nasm_realloc(params,
- sparam * sizeof(Token *));
- paramsize = nasm_realloc(paramsize,
- sparam * sizeof(int));
- }
- params[nparam] = tline->next;
- paramsize[nparam] = 0;
- white = 0;
- continue; /* parameter loop */
- }
- if (ch == '{' &&
- (brackets > 0 || (brackets == 0 &&
- !paramsize[nparam])))
- {
- if (!(brackets++))
- {
- params[nparam] = tline->next;
- continue; /* parameter loop */
- }
- }
- if (ch == '}' && brackets > 0)
- if (--brackets == 0)
- {
- brackets = -1;
- continue; /* parameter loop */
- }
- if (ch == '(' && !brackets)
- paren++;
- if (ch == ')' && brackets <= 0)
- if (--paren < 0)
- break;
- }
- if (brackets < 0)
- {
- brackets = 0;
- error(ERR_NONFATAL, "braces do not "
- "enclose all of macro parameter");
- }
- paramsize[nparam] += white + 1;
- white = 0;
- } /* parameter loop */
- nparam++;
- while (m && (m->nparam != nparam ||
- mstrcmp(m->name, mname,
- m->casesense)))
- m = m->next;
- if (!m)
- error(ERR_WARNING | ERR_WARN_MNP,
- "macro `%s' exists, "
- "but not taking %d parameters",
- mstart->text, nparam);
- }
- }
- if (m && m->in_progress)
- m = NULL;
- if (!m) /* in progess or didn't find '(' or wrong nparam */
- {
- /*
- * Design question: should we handle !tline, which
- * indicates missing ')' here, or expand those
- * macros anyway, which requires the (t) test a few
- * lines down?
- */
- nasm_free(params);
- nasm_free(paramsize);
- tline = mstart;
- }
- else
- {
- /*
- * Expand the macro: we are placed on the last token of the
- * call, so that we can easily split the call from the
- * following tokens. We also start by pushing an SMAC_END
- * token for the cycle removal.
- */
- t = tline;
- if (t)
- {
- tline = t->next;
- t->next = NULL;
- }
- tt = new_Token(tline, TOK_SMAC_END, NULL, 0);
- tt->mac = m;
- m->in_progress = TRUE;
- tline = tt;
- for (t = m->expansion; t; t = t->next)
- {
- if (t->type >= TOK_SMAC_PARAM)
- {
- Token *pcopy = tline, **ptail = &pcopy;
- Token *ttt, *pt;
- int i;
-
- ttt = params[t->type - TOK_SMAC_PARAM];
- for (i = paramsize[t->type - TOK_SMAC_PARAM];
- --i >= 0;)
- {
- pt = *ptail =
- new_Token(tline, ttt->type, ttt->text,
- 0);
- ptail = &pt->next;
- ttt = ttt->next;
- }
- tline = pcopy;
- }
- else
- {
- tt = new_Token(tline, t->type, t->text, 0);
- tline = tt;
- }
- }
-
- /*
- * Having done that, get rid of the macro call, and clean
- * up the parameters.
- */
- nasm_free(params);
- nasm_free(paramsize);
- free_tlist(mstart);
- continue; /* main token loop */
- }
- }
- }
-
- if (tline->type == TOK_SMAC_END)
- {
- tline->mac->in_progress = FALSE;
- tline = delete_Token(tline);
- }
- else
- {
- t = *tail = tline;
- tline = tline->next;
- t->mac = NULL;
- t->next = NULL;
- tail = &t->next;
- }
- }
-
- /*
- * Now scan the entire line and look for successive TOK_IDs that resulted
- * after expansion (they can't be produced by tokenise()). The successive
- * TOK_IDs should be concatenated.
- * Also we look for %+ tokens and concatenate the tokens before and after
- * them (without white spaces in between).
- */
- t = thead;
- rescan = 0;
- while (t)
- {
- while (t && t->type != TOK_ID && t->type != TOK_PREPROC_ID)
- t = t->next;
- if (!t || !t->next)
- break;
- if (t->next->type == TOK_ID ||
- t->next->type == TOK_PREPROC_ID ||
- t->next->type == TOK_NUMBER)
- {
- char *p = nasm_strcat(t->text, t->next->text);
- nasm_free(t->text);
- t->next = delete_Token(t->next);
- t->text = p;
- rescan = 1;
- }
- else if (t->next->type == TOK_WHITESPACE && t->next->next &&
- t->next->next->type == TOK_PREPROC_ID &&
- strcmp(t->next->next->text, "%+") == 0)
- {
- /* free the next whitespace, the %+ token and next whitespace */
- int i;
- for (i = 1; i <= 3; i++)
- {
- if (!t->next || (i != 2 && t->next->type != TOK_WHITESPACE))
- break;
- t->next = delete_Token(t->next);
- } /* endfor */
- }
- else
- t = t->next;
- }
- /* If we concatenaded something, re-scan the line for macros */
- if (rescan)
- {
- tline = thead;
- goto again;
- }
-
- if (org_tline)
- {
- if (thead)
- {
- *org_tline = *thead;
- /* since we just gave text to org_line, don't free it */
- thead->text = NULL;
- delete_Token(thead);
- }
- else
- {
- /* the expression expanded to empty line;
- we can't return NULL for some reasons
- we just set the line to a single WHITESPACE token. */
- memset(org_tline, 0, sizeof(*org_tline));
- org_tline->text = NULL;
- org_tline->type = TOK_WHITESPACE;
- }
- thead = org_tline;
- }
-
- return thead;
-}
-
-/*
- * Similar to expand_smacro but used exclusively with macro identifiers
- * right before they are fetched in. The reason is that there can be
- * identifiers consisting of several subparts. We consider that if there
- * are more than one element forming the name, user wants a expansion,
- * otherwise it will be left as-is. Example:
- *
- * %define %$abc cde
- *
- * the identifier %$abc will be left as-is so that the handler for %define
- * will suck it and define the corresponding value. Other case:
- *
- * %define _%$abc cde
- *
- * In this case user wants name to be expanded *before* %define starts
- * working, so we'll expand %$abc into something (if it has a value;
- * otherwise it will be left as-is) then concatenate all successive
- * PP_IDs into one.
- */
-static Token *
-expand_id(Token * tline)
-{
- Token *cur, *oldnext = NULL;
-
- if (!tline || !tline->next)
- return tline;
-
- cur = tline;
- while (cur->next &&
- (cur->next->type == TOK_ID ||
- cur->next->type == TOK_PREPROC_ID || cur->next->type == TOK_NUMBER))
- cur = cur->next;
-
- /* If identifier consists of just one token, don't expand */
- if (cur == tline)
- return tline;
-
- if (cur)
- {
- oldnext = cur->next; /* Detach the tail past identifier */
- cur->next = NULL; /* so that expand_smacro stops here */
- }
-
- tline = expand_smacro(tline);
-
- if (cur)
- {
- /* expand_smacro possibly changhed tline; re-scan for EOL */
- cur = tline;
- while (cur && cur->next)
- cur = cur->next;
- if (cur)
- cur->next = oldnext;
- }
-
- return tline;
-}
-
-/*
- * Determine whether the given line constitutes a multi-line macro
- * call, and return the MMacro structure called if so. Doesn't have
- * to check for an initial label - that's taken care of in
- * expand_mmacro - but must check numbers of parameters. Guaranteed
- * to be called with tline->type == TOK_ID, so the putative macro
- * name is easy to find.
- */
-static MMacro *
-is_mmacro(Token * tline, Token *** params_array)
-{
- MMacro *head, *m;
- Token **params;
- int nparam;
-
- head = mmacros[hash(tline->text)];
-
- /*
- * Efficiency: first we see if any macro exists with the given
- * name. If not, we can return NULL immediately. _Then_ we
- * count the parameters, and then we look further along the
- * list if necessary to find the proper MMacro.
- */
- for (m = head; m; m = m->next)
- if (!mstrcmp(m->name, tline->text, m->casesense))
- break;
- if (!m)
- return NULL;
-
- /*
- * OK, we have a potential macro. Count and demarcate the
- * parameters.
- */
- count_mmac_params(tline->next, &nparam, &params);
-
- /*
- * So we know how many parameters we've got. Find the MMacro
- * structure that handles this number.
- */
- while (m)
- {
- if (m->nparam_min <= nparam && (m->plus || nparam <= m->nparam_max))
- {
- /*
- * This one is right. Just check if cycle removal
- * prohibits us using it before we actually celebrate...
- */
- if (m->in_progress)
- {
-#if 0
- error(ERR_NONFATAL,
- "self-reference in multi-line macro `%s'", m->name);
-#endif
- nasm_free(params);
- return NULL;
- }
- /*
- * It's right, and we can use it. Add its default
- * parameters to the end of our list if necessary.
- */
- if (m->defaults && nparam < m->nparam_min + m->ndefs)
- {
- params =
- nasm_realloc(params,
- ((m->nparam_min + m->ndefs + 1) * sizeof(*params)));
- while (nparam < m->nparam_min + m->ndefs)
- {
- params[nparam] = m->defaults[nparam - m->nparam_min];
- nparam++;
- }
- }
- /*
- * If we've gone over the maximum parameter count (and
- * we're in Plus mode), ignore parameters beyond
- * nparam_max.
- */
- if (m->plus && nparam > m->nparam_max)
- nparam = m->nparam_max;
- /*
- * Then terminate the parameter list, and leave.
- */
- if (!params)
- { /* need this special case */
- params = nasm_malloc(sizeof(*params));
- nparam = 0;
- }
- params[nparam] = NULL;
- *params_array = params;
- return m;
- }
- /*
- * This one wasn't right: look for the next one with the
- * same name.
- */
- for (m = m->next; m; m = m->next)
- if (!mstrcmp(m->name, tline->text, m->casesense))
- break;
- }
-
- /*
- * After all that, we didn't find one with the right number of
- * parameters. Issue a warning, and fail to expand the macro.
- */
- error(ERR_WARNING | ERR_WARN_MNP,
- "macro `%s' exists, but not taking %d parameters",
- tline->text, nparam);
- nasm_free(params);
- return NULL;
-}
-
-/*
- * Expand the multi-line macro call made by the given line, if
- * there is one to be expanded. If there is, push the expansion on
- * istk->expansion and return 1. Otherwise return 0.
- */
-static int
-expand_mmacro(Token * tline)
-{
- Token *startline = tline;
- Token *label = NULL;
- int dont_prepend = 0;
- Token **params, *t, *tt;
- MMacro *m;
- Line *l, *ll;
- int i, nparam;
- long *paramlen;
-
- t = tline;
- skip_white_(t);
-/* if (!tok_type_(t, TOK_ID)) Lino 02/25/02 */
- if (!tok_type_(t, TOK_ID) && !tok_type_(t, TOK_PREPROC_ID))
- return 0;
- m = is_mmacro(t, &params);
- if (!m)
- {
- Token *last;
- /*
- * We have an id which isn't a macro call. We'll assume
- * it might be a label; we'll also check to see if a
- * colon follows it. Then, if there's another id after
- * that lot, we'll check it again for macro-hood.
- */
- label = last = t;
- t = t->next;
- if (tok_type_(t, TOK_WHITESPACE))
- last = t, t = t->next;
- if (tok_is_(t, ":"))
- {
- dont_prepend = 1;
- last = t, t = t->next;
- if (tok_type_(t, TOK_WHITESPACE))
- last = t, t = t->next;
- }
- if (!tok_type_(t, TOK_ID) || (m = is_mmacro(t, &params)) == NULL)
- return 0;
- last->next = NULL;
- tline = t;
- }
-
- /*
- * Fix up the parameters: this involves stripping leading and
- * trailing whitespace, then stripping braces if they are
- * present.
- */
- for (nparam = 0; params[nparam]; nparam++)
- ;
- paramlen = nparam ? nasm_malloc(nparam * sizeof(*paramlen)) : NULL;
-
- for (i = 0; params[i]; i++)
- {
- int brace = FALSE;
- int comma = (!m->plus || i < nparam - 1);
-
- t = params[i];
- skip_white_(t);
- if (tok_is_(t, "{"))
- t = t->next, brace = TRUE, comma = FALSE;
- params[i] = t;
- paramlen[i] = 0;
- while (t)
- {
- if (comma && t->type == TOK_OTHER && !strcmp(t->text, ","))
- break; /* ... because we have hit a comma */
- if (comma && t->type == TOK_WHITESPACE && tok_is_(t->next, ","))
- break; /* ... or a space then a comma */
- if (brace && t->type == TOK_OTHER && !strcmp(t->text, "}"))
- break; /* ... or a brace */
- t = t->next;
- paramlen[i]++;
- }
- }
-
- /*
- * OK, we have a MMacro structure together with a set of
- * parameters. We must now go through the expansion and push
- * copies of each Line on to istk->expansion. Substitution of
- * parameter tokens and macro-local tokens doesn't get done
- * until the single-line macro substitution process; this is
- * because delaying them allows us to change the semantics
- * later through %rotate.
- *
- * First, push an end marker on to istk->expansion, mark this
- * macro as in progress, and set up its invocation-specific
- * variables.
- */
- ll = nasm_malloc(sizeof(Line));
- ll->next = istk->expansion;
- ll->finishes = m;
- ll->first = NULL;
- istk->expansion = ll;
-
- m->in_progress = TRUE;
- m->params = params;
- m->iline = tline;
- m->nparam = nparam;
- m->rotate = 0;
- m->paramlen = paramlen;
- m->unique = unique++;
- m->lineno = 0;
-
- m->next_active = istk->mstk;
- istk->mstk = m;
-
- for (l = m->expansion; l; l = l->next)
- {
- Token **tail;
-
- ll = nasm_malloc(sizeof(Line));
- ll->finishes = NULL;
- ll->next = istk->expansion;
- istk->expansion = ll;
- tail = &ll->first;
-
- for (t = l->first; t; t = t->next)
- {
- Token *x = t;
- if (t->type == TOK_PREPROC_ID &&
- t->text[1] == '0' && t->text[2] == '0')
- {
- dont_prepend = -1;
- x = label;
- if (!x)
- continue;
- }
- tt = *tail = new_Token(NULL, x->type, x->text, 0);
- tail = &tt->next;
- }
- *tail = NULL;
- }
-
- /*
- * If we had a label, push it on as the first line of
- * the macro expansion.
- */
- if (label)
- {
- if (dont_prepend < 0)
- free_tlist(startline);
- else
- {
- ll = nasm_malloc(sizeof(Line));
- ll->finishes = NULL;
- ll->next = istk->expansion;
- istk->expansion = ll;
- ll->first = startline;
- if (!dont_prepend)
- {
- while (label->next)
- label = label->next;
- label->next = tt = new_Token(NULL, TOK_OTHER, ":", 0);
- }
- }
- }
-
- list->uplevel(m->nolist ? LIST_MACRO_NOLIST : LIST_MACRO);
-
- return 1;
-}
-
-/*
- * Since preprocessor always operates only on the line that didn't
- * arrive yet, we should always use ERR_OFFBY1. Also since user
- * won't want to see same error twice (preprocessing is done once
- * per pass) we will want to show errors only during pass one.
- */
-static void
-error(int severity, const char *fmt, ...)
-{
- va_list arg;
- char buff[1024];
-
- /* If we're in a dead branch of IF or something like it, ignore the error */
- if (istk && istk->conds && !emitting(istk->conds->state))
- return;
-
- va_start(arg, fmt);
-#ifdef HAVE_VSNPRINTF
- vsnprintf(buff, sizeof(buff), fmt, arg);
-#else
- vsprintf(buff, fmt, arg);
-#endif
- va_end(arg);
-
- if (istk && istk->mstk && istk->mstk->name)
- _error(severity | ERR_PASS1, "(%s:%d) %s", istk->mstk->name,
- istk->mstk->lineno, buff);
- else
- _error(severity | ERR_PASS1, "%s", buff);
-}
-
-static void
-pp_reset(FILE *f, const char *file, int apass, efunc errfunc, evalfunc eval,
- ListGen * listgen)
-{
- int h;
-
- first_fp = f;
- _error = errfunc;
- cstk = NULL;
- istk = nasm_malloc(sizeof(Include));
- istk->next = NULL;
- istk->conds = NULL;
- istk->expansion = NULL;
- istk->mstk = NULL;
- istk->fp = f;
- istk->fname = NULL;
- nasm_free(nasm_src_set_fname(nasm_strdup(file)));
- nasm_src_set_linnum(0);
- istk->lineinc = 1;
- defining = NULL;
- nested_mac_count = 0;
- nested_rep_count = 0;
- for (h = 0; h < NHASH; h++)
- {
- mmacros[h] = NULL;
- smacros[h] = NULL;
- }
- unique = 0;
- if (tasm_compatible_mode) {
- pp_extra_stdmac(tasm_compat_macros);
- }
- list = listgen;
- evaluate = eval;
- pass = apass;
- first_line = 1;
-}
-
-/*
- * Nasty hack: here we push the contents of `predef' on
- * to the top-level expansion stack, since this is the
- * most convenient way to implement the pre-include and
- * pre-define features.
- */
-static void
-poke_predef(Line *predef_lines)
-{
- Line *pd, *l;
- Token *head, **tail, *t;
-
- for (pd = predef_lines; pd; pd = pd->next)
- {
- head = NULL;
- tail = &head;
- for (t = pd->first; t; t = t->next)
- {
- *tail = new_Token(NULL, t->type, t->text, 0);
- tail = &(*tail)->next;
- }
- l = nasm_malloc(sizeof(Line));
- l->next = istk->expansion;
- l->first = head;
- l->finishes = FALSE;
- istk->expansion = l;
- }
-}
-
-static char *
-pp_getline(void)
-{
- char *line;
- Token *tline;
-
- while (1)
- {
- /*
- * Fetch a tokenised line, either from the macro-expansion
- * buffer or from the input file.
- */
- tline = NULL;
-
- if (first_line)
- {
- /* Reverse order */
- poke_predef(predef);
- poke_predef(stddef);
- poke_predef(builtindef);
- first_line = 0;
- }
-
- if (!istk)
- return NULL;
- while (istk->expansion && istk->expansion->finishes)
- {
- Line *l = istk->expansion;
- if (!l->finishes->name && l->finishes->in_progress > 1)
- {
- Line *ll;
-
- /*
- * This is a macro-end marker for a macro with no
- * name, which means it's not really a macro at all
- * but a %rep block, and the `in_progress' field is
- * more than 1, meaning that we still need to
- * repeat. (1 means the natural last repetition; 0
- * means termination by %exitrep.) We have
- * therefore expanded up to the %endrep, and must
- * push the whole block on to the expansion buffer
- * again. We don't bother to remove the macro-end
- * marker: we'd only have to generate another one
- * if we did.
- */
- l->finishes->in_progress--;
- for (l = l->finishes->expansion; l; l = l->next)
- {
- Token *t, *tt, **tail;
-
- ll = nasm_malloc(sizeof(Line));
- ll->next = istk->expansion;
- ll->finishes = NULL;
- ll->first = NULL;
- tail = &ll->first;
-
- for (t = l->first; t; t = t->next)
- {
- if (t->text || t->type == TOK_WHITESPACE)
- {
- tt = *tail = new_Token(NULL, t->type, t->text, 0);
- tail = &tt->next;
- }
- }
-
- istk->expansion = ll;
- }
- }
- else
- {
- /*
- * Check whether a `%rep' was started and not ended
- * within this macro expansion. This can happen and
- * should be detected. It's a fatal error because
- * I'm too confused to work out how to recover
- * sensibly from it.
- */
- if (defining)
- {
- if (defining->name)
- error(ERR_PANIC, "defining with name in expansion");
- else if (istk->mstk->name)
- error(ERR_FATAL, "`%%rep' without `%%endrep' within"
- " expansion of macro `%s'", istk->mstk->name);
- }
-
- /*
- * FIXME: investigate the relationship at this point between
- * istk->mstk and l->finishes
- */
- {
- MMacro *m = istk->mstk;
- istk->mstk = m->next_active;
- if (m->name)
- {
- /*
- * This was a real macro call, not a %rep, and
- * therefore the parameter information needs to
- * be freed.
- */
- nasm_free(m->params);
- free_tlist(m->iline);
- nasm_free(m->paramlen);
- l->finishes->in_progress = FALSE;
- }
- else
- free_mmacro(m);
- }
- istk->expansion = l->next;
- nasm_free(l);
- list->downlevel(LIST_MACRO);
- }
- }
- while (1)
- { /* until we get a line we can use */
-
- if (istk->expansion)
- { /* from a macro expansion */
- char *p;
- Line *l = istk->expansion;
- if (istk->mstk)
- istk->mstk->lineno++;
- tline = l->first;
- istk->expansion = l->next;
- nasm_free(l);
- p = detoken(tline, FALSE);
- list->line(LIST_MACRO, p);
- nasm_free(p);
- break;
- }
- line = read_line();
- if (line)
- { /* from the current input file */
- line = prepreproc(line);
- tline = tokenise(line);
- nasm_free(line);
- break;
- }
- /*
- * The current file has ended; work down the istk
- */
- {
- Include *i = istk;
- if (i->fp != first_fp)
- fclose(i->fp);
- if (i->conds)
- error(ERR_FATAL, "expected `%%endif' before end of file");
- /* only set line and file name if there's a next node */
- if (i->next)
- {
- nasm_src_set_linnum(i->lineno);
- nasm_free(nasm_src_set_fname(nasm_strdup(i->fname)));
- }
- istk = i->next;
- list->downlevel(LIST_INCLUDE);
- nasm_free(i);
- if (!istk)
- return NULL;
- if (istk->expansion && istk->expansion->finishes)
- break;
- }
- }
-
- /*
- * We must expand MMacro parameters and MMacro-local labels
- * _before_ we plunge into directive processing, to cope
- * with things like `%define something %1' such as STRUC
- * uses. Unless we're _defining_ a MMacro, in which case
- * those tokens should be left alone to go into the
- * definition; and unless we're in a non-emitting
- * condition, in which case we don't want to meddle with
- * anything.
- */
- if (!defining && !(istk->conds && !emitting(istk->conds->state)))
- tline = expand_mmac_params(tline);
-
- /*
- * Check the line to see if it's a preprocessor directive.
- */
- if (do_directive(tline) == DIRECTIVE_FOUND)
- {
- continue;
- }
- else if (defining)
- {
- /*
- * We're defining a multi-line macro. We emit nothing
- * at all, and just
- * shove the tokenised line on to the macro definition.
- */
- Line *l = nasm_malloc(sizeof(Line));
- l->next = defining->expansion;
- l->first = tline;
- l->finishes = FALSE;
- defining->expansion = l;
- continue;
- }
- else if (istk->conds && !emitting(istk->conds->state))
- {
- /*
- * We're in a non-emitting branch of a condition block.
- * Emit nothing at all, not even a blank line: when we
- * emerge from the condition we'll give a line-number
- * directive so we keep our place correctly.
- */
- free_tlist(tline);
- continue;
- }
- else if (istk->mstk && !istk->mstk->in_progress)
- {
- /*
- * We're in a %rep block which has been terminated, so
- * we're walking through to the %endrep without
- * emitting anything. Emit nothing at all, not even a
- * blank line: when we emerge from the %rep block we'll
- * give a line-number directive so we keep our place
- * correctly.
- */
- free_tlist(tline);
- continue;
- }
- else
- {
- tline = expand_smacro(tline);
- if (!expand_mmacro(tline))
- {
- /*
- * De-tokenise the line again, and emit it.
- */
- if (tasm_compatible_mode)
- tline = tasm_join_tokens(tline);
-
- line = detoken(tline, TRUE);
- free_tlist(tline);
- break;
- }
- else
- {
- continue; /* expand_mmacro calls free_tlist */
- }
- }
- }
-
- return line;
-}
-
-static void
-pp_cleanup(int pass_)
-{
- int h;
-
- if (pass_ == 1)
- {
- if (defining)
- {
- error(ERR_NONFATAL, "end of file while still defining macro `%s'",
- defining->name);
- free_mmacro(defining);
- }
- return;
- }
- while (cstk)
- ctx_pop();
- for (h = 0; h < NHASH; h++)
- {
- while (mmacros[h])
- {
- MMacro *m = mmacros[h];
- mmacros[h] = mmacros[h]->next;
- free_mmacro(m);
- }
- while (smacros[h])
- {
- SMacro *s = smacros[h];
- smacros[h] = smacros[h]->next;
- nasm_free(s->name);
- free_tlist(s->expansion);
- nasm_free(s);
- }
- }
- while (istk)
- {
- Include *i = istk;
- istk = istk->next;
- if (i->fp != first_fp)
- fclose(i->fp);
- nasm_free(i->fname);
- nasm_free(i);
- }
- while (cstk)
- ctx_pop();
- if (pass_ == 0)
- {
- free_llist(builtindef);
- free_llist(stddef);
- free_llist(predef);
- builtindef = NULL;
- stddef = NULL;
- predef = NULL;
- freeTokens = NULL;
- delete_Blocks();
- blocks.next = NULL;
- blocks.chunk = NULL;
- }
-}
-
-void
-pp_pre_include(const char *fname)
-{
- Token *inc, *space, *name;
- Line *l;
-
- name = new_Token(NULL, TOK_INTERNAL_STRING, fname, 0);
- space = new_Token(name, TOK_WHITESPACE, NULL, 0);
- inc = new_Token(space, TOK_PREPROC_ID, "%include", 0);
-
- l = nasm_malloc(sizeof(Line));
- l->next = predef;
- l->first = inc;
- l->finishes = FALSE;
- predef = l;
-}
-
-void
-pp_pre_define(char *definition)
-{
- Token *def, *space;
- Line *l;
- char *equals;
-
- equals = strchr(definition, '=');
- space = new_Token(NULL, TOK_WHITESPACE, NULL, 0);
- def = new_Token(space, TOK_PREPROC_ID, "%define", 0);
- if (equals)
- *equals = ' ';
- space->next = tokenise(definition);
- if (equals)
- *equals = '=';
-
- l = nasm_malloc(sizeof(Line));
- l->next = predef;
- l->first = def;
- l->finishes = FALSE;
- predef = l;
-}
-
-void
-pp_pre_undefine(char *definition)
-{
- Token *def, *space;
- Line *l;
-
- space = new_Token(NULL, TOK_WHITESPACE, NULL, 0);
- def = new_Token(space, TOK_PREPROC_ID, "%undef", 0);
- space->next = tokenise(definition);
-
- l = nasm_malloc(sizeof(Line));
- l->next = predef;
- l->first = def;
- l->finishes = FALSE;
- predef = l;
-}
-
-void
-pp_builtin_define(char *definition)
-{
- Token *def, *space;
- Line *l;
- char *equals;
-
- equals = strchr(definition, '=');
- space = new_Token(NULL, TOK_WHITESPACE, NULL, 0);
- def = new_Token(space, TOK_PREPROC_ID, "%define", 0);
- if (equals)
- *equals = ' ';
- space->next = tokenise(definition);
- if (equals)
- *equals = '=';
-
- l = nasm_malloc(sizeof(Line));
- l->next = builtindef;
- l->first = def;
- l->finishes = FALSE;
- builtindef = l;
-}
-
-void
-pp_extra_stdmac(const char **macros)
-{
- const char **lp;
-
- for (lp=macros; *lp; lp++)
- {
- char *macro;
- Token *t;
- Line *l;
-
- macro = nasm_strdup(*lp);
- t = tokenise(macro);
- nasm_free(macro);
-
- l = nasm_malloc(sizeof(Line));
- l->next = stddef;
- l->first = t;
- l->finishes = FALSE;
- stddef = l;
- }
-}
-
-static void
-make_tok_num(Token * tok, yasm_intnum *val)
-{
- tok->text = yasm_intnum_get_str(val);
- tok->type = TOK_NUMBER;
- yasm_intnum_destroy(val);
-}
-
-Preproc nasmpp = {
- pp_reset,
- pp_getline,
- pp_cleanup
-};
+ * Design question: should we handle !tline, which
+ * indicates missing ')' here, or expand those
+ * macros anyway, which requires the (t) test a few
+ * lines down?
+ */
+ nasm_free(params);
+ nasm_free(paramsize);
+ tline = mstart;
+ }
+ else
+ {
+ /*
+ * Expand the macro: we are placed on the last token of the
+ * call, so that we can easily split the call from the
+ * following tokens. We also start by pushing an SMAC_END
+ * token for the cycle removal.
+ */
+ t = tline;
+ if (t)
+ {
+ tline = t->next;
+ t->next = NULL;
+ }
+ tt = new_Token(tline, TOK_SMAC_END, NULL, 0);
+ tt->mac = m;
+ m->in_progress = TRUE;
+ tline = tt;
+ for (t = m->expansion; t; t = t->next)
+ {
+ if (t->type >= TOK_SMAC_PARAM)
+ {
+ Token *pcopy = tline, **ptail = &pcopy;
+ Token *ttt, *pt;
+ int i;
+
+ ttt = params[t->type - TOK_SMAC_PARAM];
+ for (i = paramsize[t->type - TOK_SMAC_PARAM];
+ --i >= 0;)
+ {
+ pt = *ptail =
+ new_Token(tline, ttt->type, ttt->text,
+ 0);
+ ptail = &pt->next;
+ ttt = ttt->next;
+ }
+ tline = pcopy;
+ }
+ else
+ {
+ tt = new_Token(tline, t->type, t->text, 0);
+ tline = tt;
+ }
+ }
+
+ /*
+ * Having done that, get rid of the macro call, and clean
+ * up the parameters.
+ */
+ nasm_free(params);
+ nasm_free(paramsize);
+ free_tlist(mstart);
+ continue; /* main token loop */
+ }
+ }
+ }
+
+ if (tline->type == TOK_SMAC_END)
+ {
+ tline->mac->in_progress = FALSE;
+ tline = delete_Token(tline);
+ }
+ else
+ {
+ t = *tail = tline;
+ tline = tline->next;
+ t->mac = NULL;
+ t->next = NULL;
+ tail = &t->next;
+ }
+ }
+
+ /*
+ * Now scan the entire line and look for successive TOK_IDs that resulted
+ * after expansion (they can't be produced by tokenise()). The successive
+ * TOK_IDs should be concatenated.
+ * Also we look for %+ tokens and concatenate the tokens before and after
+ * them (without white spaces in between).
+ */
+ t = thead;
+ rescan = 0;
+ while (t)
+ {
+ while (t && t->type != TOK_ID && t->type != TOK_PREPROC_ID)
+ t = t->next;
+ if (!t || !t->next)
+ break;
+ if (t->next->type == TOK_ID ||
+ t->next->type == TOK_PREPROC_ID ||
+ t->next->type == TOK_NUMBER)
+ {
+ char *p = nasm_strcat(t->text, t->next->text);
+ nasm_free(t->text);
+ t->next = delete_Token(t->next);
+ t->text = p;
+ rescan = 1;
+ }
+ else if (t->next->type == TOK_WHITESPACE && t->next->next &&
+ t->next->next->type == TOK_PREPROC_ID &&
+ strcmp(t->next->next->text, "%+") == 0)
+ {
+ /* free the next whitespace, the %+ token and next whitespace */
+ int i;
+ for (i = 1; i <= 3; i++)
+ {
+ if (!t->next || (i != 2 && t->next->type != TOK_WHITESPACE))
+ break;
+ t->next = delete_Token(t->next);
+ } /* endfor */
+ }
+ else
+ t = t->next;
+ }
+ /* If we concatenaded something, re-scan the line for macros */
+ if (rescan)
+ {
+ tline = thead;
+ goto again;
+ }
+
+ if (org_tline)
+ {
+ if (thead)
+ {
+ *org_tline = *thead;
+ /* since we just gave text to org_line, don't free it */
+ thead->text = NULL;
+ delete_Token(thead);
+ }
+ else
+ {
+ /* the expression expanded to empty line;
+ we can't return NULL for some reasons
+ we just set the line to a single WHITESPACE token. */
+ memset(org_tline, 0, sizeof(*org_tline));
+ org_tline->text = NULL;
+ org_tline->type = TOK_WHITESPACE;
+ }
+ thead = org_tline;
+ }
+
+ return thead;
+}
+
+/*
+ * Similar to expand_smacro but used exclusively with macro identifiers
+ * right before they are fetched in. The reason is that there can be
+ * identifiers consisting of several subparts. We consider that if there
+ * are more than one element forming the name, user wants a expansion,
+ * otherwise it will be left as-is. Example:
+ *
+ * %define %$abc cde
+ *
+ * the identifier %$abc will be left as-is so that the handler for %define
+ * will suck it and define the corresponding value. Other case:
+ *
+ * %define _%$abc cde
+ *
+ * In this case user wants name to be expanded *before* %define starts
+ * working, so we'll expand %$abc into something (if it has a value;
+ * otherwise it will be left as-is) then concatenate all successive
+ * PP_IDs into one.
+ */
+static Token *
+expand_id(Token * tline)
+{
+ Token *cur, *oldnext = NULL;
+
+ if (!tline || !tline->next)
+ return tline;
+
+ cur = tline;
+ while (cur->next &&
+ (cur->next->type == TOK_ID ||
+ cur->next->type == TOK_PREPROC_ID || cur->next->type == TOK_NUMBER))
+ cur = cur->next;
+
+ /* If identifier consists of just one token, don't expand */
+ if (cur == tline)
+ return tline;
+
+ if (cur)
+ {
+ oldnext = cur->next; /* Detach the tail past identifier */
+ cur->next = NULL; /* so that expand_smacro stops here */
+ }
+
+ tline = expand_smacro(tline);
+
+ if (cur)
+ {
+ /* expand_smacro possibly changhed tline; re-scan for EOL */
+ cur = tline;
+ while (cur && cur->next)
+ cur = cur->next;
+ if (cur)
+ cur->next = oldnext;
+ }
+
+ return tline;
+}
+
+/*
+ * Determine whether the given line constitutes a multi-line macro
+ * call, and return the MMacro structure called if so. Doesn't have
+ * to check for an initial label - that's taken care of in
+ * expand_mmacro - but must check numbers of parameters. Guaranteed
+ * to be called with tline->type == TOK_ID, so the putative macro
+ * name is easy to find.
+ */
+static MMacro *
+is_mmacro(Token * tline, Token *** params_array)
+{
+ MMacro *head, *m;
+ Token **params;
+ int nparam;
+
+ head = mmacros[hash(tline->text)];
+
+ /*
+ * Efficiency: first we see if any macro exists with the given
+ * name. If not, we can return NULL immediately. _Then_ we
+ * count the parameters, and then we look further along the
+ * list if necessary to find the proper MMacro.
+ */
+ for (m = head; m; m = m->next)
+ if (!mstrcmp(m->name, tline->text, m->casesense))
+ break;
+ if (!m)
+ return NULL;
+
+ /*
+ * OK, we have a potential macro. Count and demarcate the
+ * parameters.
+ */
+ count_mmac_params(tline->next, &nparam, &params);
+
+ /*
+ * So we know how many parameters we've got. Find the MMacro
+ * structure that handles this number.
+ */
+ while (m)
+ {
+ if (m->nparam_min <= nparam && (m->plus || nparam <= m->nparam_max))
+ {
+ /*
+ * This one is right. Just check if cycle removal
+ * prohibits us using it before we actually celebrate...
+ */
+ if (m->in_progress)
+ {
+#if 0
+ error(ERR_NONFATAL,
+ "self-reference in multi-line macro `%s'", m->name);
+#endif
+ nasm_free(params);
+ return NULL;
+ }
+ /*
+ * It's right, and we can use it. Add its default
+ * parameters to the end of our list if necessary.
+ */
+ if (m->defaults && nparam < m->nparam_min + m->ndefs)
+ {
+ params =
+ nasm_realloc(params,
+ ((m->nparam_min + m->ndefs + 1) * sizeof(*params)));
+ while (nparam < m->nparam_min + m->ndefs)
+ {
+ params[nparam] = m->defaults[nparam - m->nparam_min];
+ nparam++;
+ }
+ }
+ /*
+ * If we've gone over the maximum parameter count (and
+ * we're in Plus mode), ignore parameters beyond
+ * nparam_max.
+ */
+ if (m->plus && nparam > m->nparam_max)
+ nparam = m->nparam_max;
+ /*
+ * Then terminate the parameter list, and leave.
+ */
+ if (!params)
+ { /* need this special case */
+ params = nasm_malloc(sizeof(*params));
+ nparam = 0;
+ }
+ params[nparam] = NULL;
+ *params_array = params;
+ return m;
+ }
+ /*
+ * This one wasn't right: look for the next one with the
+ * same name.
+ */
+ for (m = m->next; m; m = m->next)
+ if (!mstrcmp(m->name, tline->text, m->casesense))
+ break;
+ }
+
+ /*
+ * After all that, we didn't find one with the right number of
+ * parameters. Issue a warning, and fail to expand the macro.
+ */
+ error(ERR_WARNING | ERR_WARN_MNP,
+ "macro `%s' exists, but not taking %d parameters",
+ tline->text, nparam);
+ nasm_free(params);
+ return NULL;
+}
+
+/*
+ * Expand the multi-line macro call made by the given line, if
+ * there is one to be expanded. If there is, push the expansion on
+ * istk->expansion and return 1. Otherwise return 0.
+ */
+static int
+expand_mmacro(Token * tline)
+{
+ Token *startline = tline;
+ Token *label = NULL;
+ int dont_prepend = 0;
+ Token **params, *t, *tt;
+ MMacro *m;
+ Line *l, *ll;
+ int i, nparam;
+ long *paramlen;
+
+ t = tline;
+ skip_white_(t);
+/* if (!tok_type_(t, TOK_ID)) Lino 02/25/02 */
+ if (!tok_type_(t, TOK_ID) && !tok_type_(t, TOK_PREPROC_ID))
+ return 0;
+ m = is_mmacro(t, &params);
+ if (!m)
+ {
+ Token *last;
+ /*
+ * We have an id which isn't a macro call. We'll assume
+ * it might be a label; we'll also check to see if a
+ * colon follows it. Then, if there's another id after
+ * that lot, we'll check it again for macro-hood.
+ */
+ label = last = t;
+ t = t->next;
+ if (tok_type_(t, TOK_WHITESPACE))
+ last = t, t = t->next;
+ if (tok_is_(t, ":"))
+ {
+ dont_prepend = 1;
+ last = t, t = t->next;
+ if (tok_type_(t, TOK_WHITESPACE))
+ last = t, t = t->next;
+ }
+ if (!tok_type_(t, TOK_ID) || (m = is_mmacro(t, &params)) == NULL)
+ return 0;
+ last->next = NULL;
+ tline = t;
+ }
+
+ /*
+ * Fix up the parameters: this involves stripping leading and
+ * trailing whitespace, then stripping braces if they are
+ * present.
+ */
+ for (nparam = 0; params[nparam]; nparam++)
+ ;
+ paramlen = nparam ? nasm_malloc(nparam * sizeof(*paramlen)) : NULL;
+
+ for (i = 0; params[i]; i++)
+ {
+ int brace = FALSE;
+ int comma = (!m->plus || i < nparam - 1);
+
+ t = params[i];
+ skip_white_(t);
+ if (tok_is_(t, "{"))
+ t = t->next, brace = TRUE, comma = FALSE;
+ params[i] = t;
+ paramlen[i] = 0;
+ while (t)
+ {
+ if (comma && t->type == TOK_OTHER && !strcmp(t->text, ","))
+ break; /* ... because we have hit a comma */
+ if (comma && t->type == TOK_WHITESPACE && tok_is_(t->next, ","))
+ break; /* ... or a space then a comma */
+ if (brace && t->type == TOK_OTHER && !strcmp(t->text, "}"))
+ break; /* ... or a brace */
+ t = t->next;
+ paramlen[i]++;
+ }
+ }
+
+ /*
+ * OK, we have a MMacro structure together with a set of
+ * parameters. We must now go through the expansion and push
+ * copies of each Line on to istk->expansion. Substitution of
+ * parameter tokens and macro-local tokens doesn't get done
+ * until the single-line macro substitution process; this is
+ * because delaying them allows us to change the semantics
+ * later through %rotate.
+ *
+ * First, push an end marker on to istk->expansion, mark this
+ * macro as in progress, and set up its invocation-specific
+ * variables.
+ */
+ ll = nasm_malloc(sizeof(Line));
+ ll->next = istk->expansion;
+ ll->finishes = m;
+ ll->first = NULL;
+ istk->expansion = ll;
+
+ m->in_progress = TRUE;
+ m->params = params;
+ m->iline = tline;
+ m->nparam = nparam;
+ m->rotate = 0;
+ m->paramlen = paramlen;
+ m->unique = unique++;
+ m->lineno = 0;
+
+ m->next_active = istk->mstk;
+ istk->mstk = m;
+
+ for (l = m->expansion; l; l = l->next)
+ {
+ Token **tail;
+
+ ll = nasm_malloc(sizeof(Line));
+ ll->finishes = NULL;
+ ll->next = istk->expansion;
+ istk->expansion = ll;
+ tail = &ll->first;
+
+ for (t = l->first; t; t = t->next)
+ {
+ Token *x = t;
+ if (t->type == TOK_PREPROC_ID &&
+ t->text[1] == '0' && t->text[2] == '0')
+ {
+ dont_prepend = -1;
+ x = label;
+ if (!x)
+ continue;
+ }
+ tt = *tail = new_Token(NULL, x->type, x->text, 0);
+ tail = &tt->next;
+ }
+ *tail = NULL;
+ }
+
+ /*
+ * If we had a label, push it on as the first line of
+ * the macro expansion.
+ */
+ if (label)
+ {
+ if (dont_prepend < 0)
+ free_tlist(startline);
+ else
+ {
+ ll = nasm_malloc(sizeof(Line));
+ ll->finishes = NULL;
+ ll->next = istk->expansion;
+ istk->expansion = ll;
+ ll->first = startline;
+ if (!dont_prepend)
+ {
+ while (label->next)
+ label = label->next;
+ label->next = tt = new_Token(NULL, TOK_OTHER, ":", 0);
+ }
+ }
+ }
+
+ list->uplevel(m->nolist ? LIST_MACRO_NOLIST : LIST_MACRO);
+
+ return 1;
+}
+
+/*
+ * Since preprocessor always operates only on the line that didn't
+ * arrive yet, we should always use ERR_OFFBY1. Also since user
+ * won't want to see same error twice (preprocessing is done once
+ * per pass) we will want to show errors only during pass one.
+ */
+static void
+error(int severity, const char *fmt, ...)
+{
+ va_list arg;
+ char buff[1024];
+
+ /* If we're in a dead branch of IF or something like it, ignore the error */
+ if (istk && istk->conds && !emitting(istk->conds->state))
+ return;
+
+ va_start(arg, fmt);
+#ifdef HAVE_VSNPRINTF
+ vsnprintf(buff, sizeof(buff), fmt, arg);
+#else
+ vsprintf(buff, fmt, arg);
+#endif
+ va_end(arg);
+
+ if (istk && istk->mstk && istk->mstk->name)
+ _error(severity | ERR_PASS1, "(%s:%d) %s", istk->mstk->name,
+ istk->mstk->lineno, buff);
+ else
+ _error(severity | ERR_PASS1, "%s", buff);
+}
+
+static void
+pp_reset(FILE *f, const char *file, int apass, efunc errfunc, evalfunc eval,
+ ListGen * listgen)
+{
+ int h;
+
+ first_fp = f;
+ _error = errfunc;
+ cstk = NULL;
+ istk = nasm_malloc(sizeof(Include));
+ istk->next = NULL;
+ istk->conds = NULL;
+ istk->expansion = NULL;
+ istk->mstk = NULL;
+ istk->fp = f;
+ istk->fname = NULL;
+ nasm_free(nasm_src_set_fname(nasm_strdup(file)));
+ nasm_src_set_linnum(0);
+ istk->lineinc = 1;
+ defining = NULL;
+ nested_mac_count = 0;
+ nested_rep_count = 0;
+ for (h = 0; h < NHASH; h++)
+ {
+ mmacros[h] = NULL;
+ smacros[h] = NULL;
+ }
+ unique = 0;
+ if (tasm_compatible_mode) {
+ pp_extra_stdmac(tasm_compat_macros);
+ }
+ list = listgen;
+ evaluate = eval;
+ pass = apass;
+ first_line = 1;
+}
+
+/*
+ * Nasty hack: here we push the contents of `predef' on
+ * to the top-level expansion stack, since this is the
+ * most convenient way to implement the pre-include and
+ * pre-define features.
+ */
+static void
+poke_predef(Line *predef_lines)
+{
+ Line *pd, *l;
+ Token *head, **tail, *t;
+
+ for (pd = predef_lines; pd; pd = pd->next)
+ {
+ head = NULL;
+ tail = &head;
+ for (t = pd->first; t; t = t->next)
+ {
+ *tail = new_Token(NULL, t->type, t->text, 0);
+ tail = &(*tail)->next;
+ }
+ l = nasm_malloc(sizeof(Line));
+ l->next = istk->expansion;
+ l->first = head;
+ l->finishes = FALSE;
+ istk->expansion = l;
+ }
+}
+
+static char *
+pp_getline(void)
+{
+ char *line;
+ Token *tline;
+
+ while (1)
+ {
+ /*
+ * Fetch a tokenised line, either from the macro-expansion
+ * buffer or from the input file.
+ */
+ tline = NULL;
+
+ if (first_line)
+ {
+ /* Reverse order */
+ poke_predef(predef);
+ poke_predef(stddef);
+ poke_predef(builtindef);
+ first_line = 0;
+ }
+
+ if (!istk)
+ return NULL;
+ while (istk->expansion && istk->expansion->finishes)
+ {
+ Line *l = istk->expansion;
+ if (!l->finishes->name && l->finishes->in_progress > 1)
+ {
+ Line *ll;
+
+ /*
+ * This is a macro-end marker for a macro with no
+ * name, which means it's not really a macro at all
+ * but a %rep block, and the `in_progress' field is
+ * more than 1, meaning that we still need to
+ * repeat. (1 means the natural last repetition; 0
+ * means termination by %exitrep.) We have
+ * therefore expanded up to the %endrep, and must
+ * push the whole block on to the expansion buffer
+ * again. We don't bother to remove the macro-end
+ * marker: we'd only have to generate another one
+ * if we did.
+ */
+ l->finishes->in_progress--;
+ for (l = l->finishes->expansion; l; l = l->next)
+ {
+ Token *t, *tt, **tail;
+
+ ll = nasm_malloc(sizeof(Line));
+ ll->next = istk->expansion;
+ ll->finishes = NULL;
+ ll->first = NULL;
+ tail = &ll->first;
+
+ for (t = l->first; t; t = t->next)
+ {
+ if (t->text || t->type == TOK_WHITESPACE)
+ {
+ tt = *tail = new_Token(NULL, t->type, t->text, 0);
+ tail = &tt->next;
+ }
+ }
+
+ istk->expansion = ll;
+ }
+ }
+ else
+ {
+ /*
+ * Check whether a `%rep' was started and not ended
+ * within this macro expansion. This can happen and
+ * should be detected. It's a fatal error because
+ * I'm too confused to work out how to recover
+ * sensibly from it.
+ */
+ if (defining)
+ {
+ if (defining->name)
+ error(ERR_PANIC, "defining with name in expansion");
+ else if (istk->mstk->name)
+ error(ERR_FATAL, "`%%rep' without `%%endrep' within"
+ " expansion of macro `%s'", istk->mstk->name);
+ }
+
+ /*
+ * FIXME: investigate the relationship at this point between
+ * istk->mstk and l->finishes
+ */
+ {
+ MMacro *m = istk->mstk;
+ istk->mstk = m->next_active;
+ if (m->name)
+ {
+ /*
+ * This was a real macro call, not a %rep, and
+ * therefore the parameter information needs to
+ * be freed.
+ */
+ nasm_free(m->params);
+ free_tlist(m->iline);
+ nasm_free(m->paramlen);
+ l->finishes->in_progress = FALSE;
+ }
+ else
+ free_mmacro(m);
+ }
+ istk->expansion = l->next;
+ nasm_free(l);
+ list->downlevel(LIST_MACRO);
+ }
+ }
+ while (1)
+ { /* until we get a line we can use */
+
+ if (istk->expansion)
+ { /* from a macro expansion */
+ char *p;
+ Line *l = istk->expansion;
+ if (istk->mstk)
+ istk->mstk->lineno++;
+ tline = l->first;
+ istk->expansion = l->next;
+ nasm_free(l);
+ p = detoken(tline, FALSE);
+ list->line(LIST_MACRO, p);
+ nasm_free(p);
+ break;
+ }
+ line = read_line();
+ if (line)
+ { /* from the current input file */
+ line = prepreproc(line);
+ tline = tokenise(line);
+ nasm_free(line);
+ break;
+ }
+ /*
+ * The current file has ended; work down the istk
+ */
+ {
+ Include *i = istk;
+ if (i->fp != first_fp)
+ fclose(i->fp);
+ if (i->conds)
+ error(ERR_FATAL, "expected `%%endif' before end of file");
+ /* only set line and file name if there's a next node */
+ if (i->next)
+ {
+ nasm_src_set_linnum(i->lineno);
+ nasm_free(nasm_src_set_fname(nasm_strdup(i->fname)));
+ }
+ istk = i->next;
+ list->downlevel(LIST_INCLUDE);
+ nasm_free(i);
+ if (!istk)
+ return NULL;
+ if (istk->expansion && istk->expansion->finishes)
+ break;
+ }
+ }
+
+ /*
+ * We must expand MMacro parameters and MMacro-local labels
+ * _before_ we plunge into directive processing, to cope
+ * with things like `%define something %1' such as STRUC
+ * uses. Unless we're _defining_ a MMacro, in which case
+ * those tokens should be left alone to go into the
+ * definition; and unless we're in a non-emitting
+ * condition, in which case we don't want to meddle with
+ * anything.
+ */
+ if (!defining && !(istk->conds && !emitting(istk->conds->state)))
+ tline = expand_mmac_params(tline);
+
+ /*
+ * Check the line to see if it's a preprocessor directive.
+ */
+ if (do_directive(tline) == DIRECTIVE_FOUND)
+ {
+ continue;
+ }
+ else if (defining)
+ {
+ /*
+ * We're defining a multi-line macro. We emit nothing
+ * at all, and just
+ * shove the tokenised line on to the macro definition.
+ */
+ Line *l = nasm_malloc(sizeof(Line));
+ l->next = defining->expansion;
+ l->first = tline;
+ l->finishes = FALSE;
+ defining->expansion = l;
+ continue;
+ }
+ else if (istk->conds && !emitting(istk->conds->state))
+ {
+ /*
+ * We're in a non-emitting branch of a condition block.
+ * Emit nothing at all, not even a blank line: when we
+ * emerge from the condition we'll give a line-number
+ * directive so we keep our place correctly.
+ */
+ free_tlist(tline);
+ continue;
+ }
+ else if (istk->mstk && !istk->mstk->in_progress)
+ {
+ /*
+ * We're in a %rep block which has been terminated, so
+ * we're walking through to the %endrep without
+ * emitting anything. Emit nothing at all, not even a
+ * blank line: when we emerge from the %rep block we'll
+ * give a line-number directive so we keep our place
+ * correctly.
+ */
+ free_tlist(tline);
+ continue;
+ }
+ else
+ {
+ tline = expand_smacro(tline);
+ if (!expand_mmacro(tline))
+ {
+ /*
+ * De-tokenise the line again, and emit it.
+ */
+ if (tasm_compatible_mode)
+ tline = tasm_join_tokens(tline);
+
+ line = detoken(tline, TRUE);
+ free_tlist(tline);
+ break;
+ }
+ else
+ {
+ continue; /* expand_mmacro calls free_tlist */
+ }
+ }
+ }
+
+ return line;
+}
+
+static void
+pp_cleanup(int pass_)
+{
+ int h;
+
+ if (pass_ == 1)
+ {
+ if (defining)
+ {
+ error(ERR_NONFATAL, "end of file while still defining macro `%s'",
+ defining->name);
+ free_mmacro(defining);
+ }
+ return;
+ }
+ while (cstk)
+ ctx_pop();
+ for (h = 0; h < NHASH; h++)
+ {
+ while (mmacros[h])
+ {
+ MMacro *m = mmacros[h];
+ mmacros[h] = mmacros[h]->next;
+ free_mmacro(m);
+ }
+ while (smacros[h])
+ {
+ SMacro *s = smacros[h];
+ smacros[h] = smacros[h]->next;
+ nasm_free(s->name);
+ free_tlist(s->expansion);
+ nasm_free(s);
+ }
+ }
+ while (istk)
+ {
+ Include *i = istk;
+ istk = istk->next;
+ if (i->fp != first_fp)
+ fclose(i->fp);
+ nasm_free(i->fname);
+ nasm_free(i);
+ }
+ while (cstk)
+ ctx_pop();
+ if (pass_ == 0)
+ {
+ free_llist(builtindef);
+ free_llist(stddef);
+ free_llist(predef);
+ builtindef = NULL;
+ stddef = NULL;
+ predef = NULL;
+ freeTokens = NULL;
+ delete_Blocks();
+ blocks.next = NULL;
+ blocks.chunk = NULL;
+ }
+}
+
+void
+pp_pre_include(const char *fname)
+{
+ Token *inc, *space, *name;
+ Line *l;
+
+ name = new_Token(NULL, TOK_INTERNAL_STRING, fname, 0);
+ space = new_Token(name, TOK_WHITESPACE, NULL, 0);
+ inc = new_Token(space, TOK_PREPROC_ID, "%include", 0);
+
+ l = nasm_malloc(sizeof(Line));
+ l->next = predef;
+ l->first = inc;
+ l->finishes = FALSE;
+ predef = l;
+}
+
+void
+pp_pre_define(char *definition)
+{
+ Token *def, *space;
+ Line *l;
+ char *equals;
+
+ equals = strchr(definition, '=');
+ space = new_Token(NULL, TOK_WHITESPACE, NULL, 0);
+ def = new_Token(space, TOK_PREPROC_ID, "%define", 0);
+ if (equals)
+ *equals = ' ';
+ space->next = tokenise(definition);
+ if (equals)
+ *equals = '=';
+
+ l = nasm_malloc(sizeof(Line));
+ l->next = predef;
+ l->first = def;
+ l->finishes = FALSE;
+ predef = l;
+}
+
+void
+pp_pre_undefine(char *definition)
+{
+ Token *def, *space;
+ Line *l;
+
+ space = new_Token(NULL, TOK_WHITESPACE, NULL, 0);
+ def = new_Token(space, TOK_PREPROC_ID, "%undef", 0);
+ space->next = tokenise(definition);
+
+ l = nasm_malloc(sizeof(Line));
+ l->next = predef;
+ l->first = def;
+ l->finishes = FALSE;
+ predef = l;
+}
+
+void
+pp_builtin_define(char *definition)
+{
+ Token *def, *space;
+ Line *l;
+ char *equals;
+
+ equals = strchr(definition, '=');
+ space = new_Token(NULL, TOK_WHITESPACE, NULL, 0);
+ def = new_Token(space, TOK_PREPROC_ID, "%define", 0);
+ if (equals)
+ *equals = ' ';
+ space->next = tokenise(definition);
+ if (equals)
+ *equals = '=';
+
+ l = nasm_malloc(sizeof(Line));
+ l->next = builtindef;
+ l->first = def;
+ l->finishes = FALSE;
+ builtindef = l;
+}
+
+void
+pp_extra_stdmac(const char **macros)
+{
+ const char **lp;
+
+ for (lp=macros; *lp; lp++)
+ {
+ char *macro;
+ Token *t;
+ Line *l;
+
+ macro = nasm_strdup(*lp);
+ t = tokenise(macro);
+ nasm_free(macro);
+
+ l = nasm_malloc(sizeof(Line));
+ l->next = stddef;
+ l->first = t;
+ l->finishes = FALSE;
+ stddef = l;
+ }
+}
+
+static void
+make_tok_num(Token * tok, yasm_intnum *val)
+{
+ tok->text = yasm_intnum_get_str(val);
+ tok->type = TOK_NUMBER;
+ yasm_intnum_destroy(val);
+}
+
+Preproc nasmpp = {
+ pp_reset,
+ pp_getline,
+ pp_cleanup
+};
diff --git a/contrib/tools/yasm/modules/preprocs/nasm/nasm-pp.h b/contrib/tools/yasm/modules/preprocs/nasm/nasm-pp.h
index 0905edfb5b..a1990206f2 100644
--- a/contrib/tools/yasm/modules/preprocs/nasm/nasm-pp.h
+++ b/contrib/tools/yasm/modules/preprocs/nasm/nasm-pp.h
@@ -1,22 +1,22 @@
-/* preproc.h header file for preproc.c
- *
- * The Netwide Assembler is copyright (C) 1996 Simon Tatham and
- * Julian Hall. All rights reserved. The software is
- * redistributable under the licence given in the file "Licence"
- * distributed in the NASM archive.
- */
-
-#ifndef YASM_NASM_PREPROC_H
-#define YASM_NASM_PREPROC_H
-
-void pp_pre_include (const char *);
-void pp_pre_define (char *);
-void pp_pre_undefine (char *);
-void pp_builtin_define (char *);
-void pp_extra_stdmac (const char **);
-
-extern Preproc nasmpp;
-
-void nasm_preproc_add_dep(char *);
-
-#endif
+/* preproc.h header file for preproc.c
+ *
+ * The Netwide Assembler is copyright (C) 1996 Simon Tatham and
+ * Julian Hall. All rights reserved. The software is
+ * redistributable under the licence given in the file "Licence"
+ * distributed in the NASM archive.
+ */
+
+#ifndef YASM_NASM_PREPROC_H
+#define YASM_NASM_PREPROC_H
+
+void pp_pre_include (const char *);
+void pp_pre_define (char *);
+void pp_pre_undefine (char *);
+void pp_builtin_define (char *);
+void pp_extra_stdmac (const char **);
+
+extern Preproc nasmpp;
+
+void nasm_preproc_add_dep(char *);
+
+#endif
diff --git a/contrib/tools/yasm/modules/preprocs/nasm/nasm-preproc.c b/contrib/tools/yasm/modules/preprocs/nasm/nasm-preproc.c
index 6653be73b6..566dd8004b 100644
--- a/contrib/tools/yasm/modules/preprocs/nasm/nasm-preproc.c
+++ b/contrib/tools/yasm/modules/preprocs/nasm/nasm-preproc.c
@@ -1,342 +1,342 @@
-/*
- * Imported NASM preprocessor - glue code
- *
- * Copyright (C) 2002-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <libyasm.h>
-
-#include "nasm.h"
-#include "nasmlib.h"
-#include "nasm-pp.h"
-#include "nasm-eval.h"
-
-typedef struct yasm_preproc_nasm {
- yasm_preproc_base preproc; /* Base structure */
-
- FILE *in;
- char *line;
- char *file_name;
- long prior_linnum;
- int lineinc;
-} yasm_preproc_nasm;
-yasm_symtab *nasm_symtab;
-static yasm_linemap *cur_lm;
-static yasm_errwarns *cur_errwarns;
-int tasm_compatible_mode = 0;
-int tasm_locals;
-const char *tasm_segment;
-
-#include "nasm-version.c"
-
-typedef struct preproc_dep {
- STAILQ_ENTRY(preproc_dep) link;
- char *name;
-} preproc_dep;
-
-static STAILQ_HEAD(preproc_dep_head, preproc_dep) *preproc_deps;
-static int done_dep_preproc;
-
-yasm_preproc_module yasm_nasm_LTX_preproc;
-
-static void
-nil_listgen_init(char *p, efunc e)
-{
-}
-
-static void
-nil_listgen_cleanup(void)
-{
-}
-
-static void
-nil_listgen_output(long v, const void *d, unsigned long v2)
-{
-}
-
-static void
-nil_listgen_line(int v, char *p)
-{
-}
-
-static void
-nil_listgen_uplevel(int v)
-{
-}
-
-static void
-nil_listgen_downlevel(int v)
-{
-}
-
-static ListGen nil_list = {
- nil_listgen_init,
- nil_listgen_cleanup,
- nil_listgen_output,
- nil_listgen_line,
- nil_listgen_uplevel,
- nil_listgen_downlevel
-};
-
-
-static void
-nasm_efunc(int severity, const char *fmt, ...)
-{
- va_list va;
-
- va_start(va, fmt);
- switch (severity & ERR_MASK) {
- case ERR_WARNING:
- yasm_warn_set_va(YASM_WARN_PREPROC, fmt, va);
- break;
- case ERR_NONFATAL:
- yasm_error_set_va(YASM_ERROR_GENERAL, fmt, va);
- break;
- case ERR_FATAL:
- yasm_fatal(fmt, va);
- /*@notreached@*/
- break;
- case ERR_PANIC:
- yasm_internal_error(fmt); /* FIXME */
- break;
- case ERR_DEBUG:
- break;
- }
- va_end(va);
- yasm_errwarn_propagate(cur_errwarns,
- yasm_linemap_poke(cur_lm, nasm_src_get_fname(),
- (unsigned long)nasm_src_get_linnum()));
-}
-
-static yasm_preproc *
-nasm_preproc_create(const char *in_filename, yasm_symtab *symtab,
- yasm_linemap *lm, yasm_errwarns *errwarns)
-{
- FILE *f;
- yasm_preproc_nasm *preproc_nasm = yasm_xmalloc(sizeof(yasm_preproc_nasm));
-
- preproc_nasm->preproc.module = &yasm_nasm_LTX_preproc;
-
- if (strcmp(in_filename, "-") != 0) {
- f = fopen(in_filename, "r");
- if (!f)
+/*
+ * Imported NASM preprocessor - glue code
+ *
+ * Copyright (C) 2002-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <libyasm.h>
+
+#include "nasm.h"
+#include "nasmlib.h"
+#include "nasm-pp.h"
+#include "nasm-eval.h"
+
+typedef struct yasm_preproc_nasm {
+ yasm_preproc_base preproc; /* Base structure */
+
+ FILE *in;
+ char *line;
+ char *file_name;
+ long prior_linnum;
+ int lineinc;
+} yasm_preproc_nasm;
+yasm_symtab *nasm_symtab;
+static yasm_linemap *cur_lm;
+static yasm_errwarns *cur_errwarns;
+int tasm_compatible_mode = 0;
+int tasm_locals;
+const char *tasm_segment;
+
+#include "nasm-version.c"
+
+typedef struct preproc_dep {
+ STAILQ_ENTRY(preproc_dep) link;
+ char *name;
+} preproc_dep;
+
+static STAILQ_HEAD(preproc_dep_head, preproc_dep) *preproc_deps;
+static int done_dep_preproc;
+
+yasm_preproc_module yasm_nasm_LTX_preproc;
+
+static void
+nil_listgen_init(char *p, efunc e)
+{
+}
+
+static void
+nil_listgen_cleanup(void)
+{
+}
+
+static void
+nil_listgen_output(long v, const void *d, unsigned long v2)
+{
+}
+
+static void
+nil_listgen_line(int v, char *p)
+{
+}
+
+static void
+nil_listgen_uplevel(int v)
+{
+}
+
+static void
+nil_listgen_downlevel(int v)
+{
+}
+
+static ListGen nil_list = {
+ nil_listgen_init,
+ nil_listgen_cleanup,
+ nil_listgen_output,
+ nil_listgen_line,
+ nil_listgen_uplevel,
+ nil_listgen_downlevel
+};
+
+
+static void
+nasm_efunc(int severity, const char *fmt, ...)
+{
+ va_list va;
+
+ va_start(va, fmt);
+ switch (severity & ERR_MASK) {
+ case ERR_WARNING:
+ yasm_warn_set_va(YASM_WARN_PREPROC, fmt, va);
+ break;
+ case ERR_NONFATAL:
+ yasm_error_set_va(YASM_ERROR_GENERAL, fmt, va);
+ break;
+ case ERR_FATAL:
+ yasm_fatal(fmt, va);
+ /*@notreached@*/
+ break;
+ case ERR_PANIC:
+ yasm_internal_error(fmt); /* FIXME */
+ break;
+ case ERR_DEBUG:
+ break;
+ }
+ va_end(va);
+ yasm_errwarn_propagate(cur_errwarns,
+ yasm_linemap_poke(cur_lm, nasm_src_get_fname(),
+ (unsigned long)nasm_src_get_linnum()));
+}
+
+static yasm_preproc *
+nasm_preproc_create(const char *in_filename, yasm_symtab *symtab,
+ yasm_linemap *lm, yasm_errwarns *errwarns)
+{
+ FILE *f;
+ yasm_preproc_nasm *preproc_nasm = yasm_xmalloc(sizeof(yasm_preproc_nasm));
+
+ preproc_nasm->preproc.module = &yasm_nasm_LTX_preproc;
+
+ if (strcmp(in_filename, "-") != 0) {
+ f = fopen(in_filename, "r");
+ if (!f)
yasm__fatal_missing_input_file( N_("Could not open input file"), in_filename );
- }
- else
- f = stdin;
-
- preproc_nasm->in = f;
- nasm_symtab = symtab;
- cur_lm = lm;
- cur_errwarns = errwarns;
- preproc_deps = NULL;
- done_dep_preproc = 0;
- preproc_nasm->line = NULL;
- preproc_nasm->file_name = NULL;
- preproc_nasm->prior_linnum = 0;
- preproc_nasm->lineinc = 0;
- nasmpp.reset(f, in_filename, 2, nasm_efunc, nasm_evaluate, &nil_list);
-
- pp_extra_stdmac(nasm_version_mac);
-
- return (yasm_preproc *)preproc_nasm;
-}
-
-static void
-nasm_preproc_destroy(yasm_preproc *preproc)
-{
- yasm_preproc_nasm *preproc_nasm = (yasm_preproc_nasm *)preproc;
- nasmpp.cleanup(0);
- if (preproc_nasm->line)
- yasm_xfree(preproc_nasm->line);
- if (preproc_nasm->file_name)
- yasm_xfree(preproc_nasm->file_name);
- yasm_xfree(preproc);
- if (preproc_deps)
- yasm_xfree(preproc_deps);
-}
-
-static char *
-nasm_preproc_get_line(yasm_preproc *preproc)
-{
- yasm_preproc_nasm *preproc_nasm = (yasm_preproc_nasm *)preproc;
- long linnum;
- int altline;
- char *line;
-
- if (preproc_nasm->line) {
- char *retval = preproc_nasm->line;
- preproc_nasm->line = NULL;
- return retval;
- }
-
- line = nasmpp.getline();
- if (!line)
- {
- nasmpp.cleanup(1);
- return NULL; /* EOF */
- }
-
- linnum = preproc_nasm->prior_linnum += preproc_nasm->lineinc;
- altline = nasm_src_get(&linnum, &preproc_nasm->file_name);
- if (altline != 0) {
- preproc_nasm->lineinc =
- (altline != -1 || preproc_nasm->lineinc != 1);
- preproc_nasm->line = line;
- line = yasm_xmalloc(40+strlen(preproc_nasm->file_name));
- sprintf(line, "%%line %ld+%d %s", linnum,
- preproc_nasm->lineinc, preproc_nasm->file_name);
- preproc_nasm->prior_linnum = linnum;
- }
-
- return line;
-}
-
-void
-nasm_preproc_add_dep(char *name)
-{
- preproc_dep *dep;
-
- /* If not processing dependencies, simply return */
- if (!preproc_deps)
- return;
-
- /* Save in preproc_deps */
- dep = yasm_xmalloc(sizeof(preproc_dep));
- dep->name = yasm__xstrdup(name);
- STAILQ_INSERT_TAIL(preproc_deps, dep, link);
-}
-
-static size_t
-nasm_preproc_get_included_file(yasm_preproc *preproc, /*@out@*/ char *buf,
- size_t max_size)
-{
- if (!preproc_deps) {
- preproc_deps = yasm_xmalloc(sizeof(struct preproc_dep_head));
- STAILQ_INIT(preproc_deps);
- }
-
- for (;;) {
- char *line;
-
- /* Pull first dep out of preproc_deps and return it if there is one */
- if (!STAILQ_EMPTY(preproc_deps)) {
- char *name;
- preproc_dep *dep = STAILQ_FIRST(preproc_deps);
- STAILQ_REMOVE_HEAD(preproc_deps, link);
- name = dep->name;
- yasm_xfree(dep);
- strncpy(buf, name, max_size);
- buf[max_size-1] = '\0';
- yasm_xfree(name);
- return strlen(buf);
- }
-
- /* No more preprocessing to do */
- if (done_dep_preproc) {
- return 0;
- }
-
- /* Preprocess some more, throwing away the result */
- line = nasmpp.getline();
- if (line)
- yasm_xfree(line);
- else
- done_dep_preproc = 1;
- }
-}
-
-static void
-nasm_preproc_add_include_file(yasm_preproc *preproc, const char *filename)
-{
- pp_pre_include(filename);
-}
-
-static void
-nasm_preproc_predefine_macro(yasm_preproc *preproc, const char *macronameval)
-{
- char *mnv = yasm__xstrdup(macronameval);
- pp_pre_define(mnv);
- yasm_xfree(mnv);
-}
-
-static void
-nasm_preproc_undefine_macro(yasm_preproc *preproc, const char *macroname)
-{
- char *mn = yasm__xstrdup(macroname);
- pp_pre_undefine(mn);
- yasm_xfree(mn);
-}
-
-static void
-nasm_preproc_define_builtin(yasm_preproc *preproc, const char *macronameval)
-{
- char *mnv = yasm__xstrdup(macronameval);
- pp_builtin_define(mnv);
- yasm_xfree(mnv);
-}
-
-static void
-nasm_preproc_add_standard(yasm_preproc *preproc, const char **macros)
-{
- pp_extra_stdmac(macros);
-}
-
-/* Define preproc structure -- see preproc.h for details */
-yasm_preproc_module yasm_nasm_LTX_preproc = {
- "Real NASM Preprocessor",
- "nasm",
- nasm_preproc_create,
- nasm_preproc_destroy,
- nasm_preproc_get_line,
- nasm_preproc_get_included_file,
- nasm_preproc_add_include_file,
- nasm_preproc_predefine_macro,
- nasm_preproc_undefine_macro,
- nasm_preproc_define_builtin,
- nasm_preproc_add_standard
-};
-
-static yasm_preproc *
-tasm_preproc_create(const char *in_filename, yasm_symtab *symtab,
- yasm_linemap *lm, yasm_errwarns *errwarns)
-{
- tasm_compatible_mode = 1;
- return nasm_preproc_create(in_filename, symtab, lm, errwarns);
-}
-
-yasm_preproc_module yasm_tasm_LTX_preproc = {
- "Real TASM Preprocessor",
- "tasm",
- tasm_preproc_create,
- nasm_preproc_destroy,
- nasm_preproc_get_line,
- nasm_preproc_get_included_file,
- nasm_preproc_add_include_file,
- nasm_preproc_predefine_macro,
- nasm_preproc_undefine_macro,
- nasm_preproc_define_builtin,
- nasm_preproc_add_standard
-};
+ }
+ else
+ f = stdin;
+
+ preproc_nasm->in = f;
+ nasm_symtab = symtab;
+ cur_lm = lm;
+ cur_errwarns = errwarns;
+ preproc_deps = NULL;
+ done_dep_preproc = 0;
+ preproc_nasm->line = NULL;
+ preproc_nasm->file_name = NULL;
+ preproc_nasm->prior_linnum = 0;
+ preproc_nasm->lineinc = 0;
+ nasmpp.reset(f, in_filename, 2, nasm_efunc, nasm_evaluate, &nil_list);
+
+ pp_extra_stdmac(nasm_version_mac);
+
+ return (yasm_preproc *)preproc_nasm;
+}
+
+static void
+nasm_preproc_destroy(yasm_preproc *preproc)
+{
+ yasm_preproc_nasm *preproc_nasm = (yasm_preproc_nasm *)preproc;
+ nasmpp.cleanup(0);
+ if (preproc_nasm->line)
+ yasm_xfree(preproc_nasm->line);
+ if (preproc_nasm->file_name)
+ yasm_xfree(preproc_nasm->file_name);
+ yasm_xfree(preproc);
+ if (preproc_deps)
+ yasm_xfree(preproc_deps);
+}
+
+static char *
+nasm_preproc_get_line(yasm_preproc *preproc)
+{
+ yasm_preproc_nasm *preproc_nasm = (yasm_preproc_nasm *)preproc;
+ long linnum;
+ int altline;
+ char *line;
+
+ if (preproc_nasm->line) {
+ char *retval = preproc_nasm->line;
+ preproc_nasm->line = NULL;
+ return retval;
+ }
+
+ line = nasmpp.getline();
+ if (!line)
+ {
+ nasmpp.cleanup(1);
+ return NULL; /* EOF */
+ }
+
+ linnum = preproc_nasm->prior_linnum += preproc_nasm->lineinc;
+ altline = nasm_src_get(&linnum, &preproc_nasm->file_name);
+ if (altline != 0) {
+ preproc_nasm->lineinc =
+ (altline != -1 || preproc_nasm->lineinc != 1);
+ preproc_nasm->line = line;
+ line = yasm_xmalloc(40+strlen(preproc_nasm->file_name));
+ sprintf(line, "%%line %ld+%d %s", linnum,
+ preproc_nasm->lineinc, preproc_nasm->file_name);
+ preproc_nasm->prior_linnum = linnum;
+ }
+
+ return line;
+}
+
+void
+nasm_preproc_add_dep(char *name)
+{
+ preproc_dep *dep;
+
+ /* If not processing dependencies, simply return */
+ if (!preproc_deps)
+ return;
+
+ /* Save in preproc_deps */
+ dep = yasm_xmalloc(sizeof(preproc_dep));
+ dep->name = yasm__xstrdup(name);
+ STAILQ_INSERT_TAIL(preproc_deps, dep, link);
+}
+
+static size_t
+nasm_preproc_get_included_file(yasm_preproc *preproc, /*@out@*/ char *buf,
+ size_t max_size)
+{
+ if (!preproc_deps) {
+ preproc_deps = yasm_xmalloc(sizeof(struct preproc_dep_head));
+ STAILQ_INIT(preproc_deps);
+ }
+
+ for (;;) {
+ char *line;
+
+ /* Pull first dep out of preproc_deps and return it if there is one */
+ if (!STAILQ_EMPTY(preproc_deps)) {
+ char *name;
+ preproc_dep *dep = STAILQ_FIRST(preproc_deps);
+ STAILQ_REMOVE_HEAD(preproc_deps, link);
+ name = dep->name;
+ yasm_xfree(dep);
+ strncpy(buf, name, max_size);
+ buf[max_size-1] = '\0';
+ yasm_xfree(name);
+ return strlen(buf);
+ }
+
+ /* No more preprocessing to do */
+ if (done_dep_preproc) {
+ return 0;
+ }
+
+ /* Preprocess some more, throwing away the result */
+ line = nasmpp.getline();
+ if (line)
+ yasm_xfree(line);
+ else
+ done_dep_preproc = 1;
+ }
+}
+
+static void
+nasm_preproc_add_include_file(yasm_preproc *preproc, const char *filename)
+{
+ pp_pre_include(filename);
+}
+
+static void
+nasm_preproc_predefine_macro(yasm_preproc *preproc, const char *macronameval)
+{
+ char *mnv = yasm__xstrdup(macronameval);
+ pp_pre_define(mnv);
+ yasm_xfree(mnv);
+}
+
+static void
+nasm_preproc_undefine_macro(yasm_preproc *preproc, const char *macroname)
+{
+ char *mn = yasm__xstrdup(macroname);
+ pp_pre_undefine(mn);
+ yasm_xfree(mn);
+}
+
+static void
+nasm_preproc_define_builtin(yasm_preproc *preproc, const char *macronameval)
+{
+ char *mnv = yasm__xstrdup(macronameval);
+ pp_builtin_define(mnv);
+ yasm_xfree(mnv);
+}
+
+static void
+nasm_preproc_add_standard(yasm_preproc *preproc, const char **macros)
+{
+ pp_extra_stdmac(macros);
+}
+
+/* Define preproc structure -- see preproc.h for details */
+yasm_preproc_module yasm_nasm_LTX_preproc = {
+ "Real NASM Preprocessor",
+ "nasm",
+ nasm_preproc_create,
+ nasm_preproc_destroy,
+ nasm_preproc_get_line,
+ nasm_preproc_get_included_file,
+ nasm_preproc_add_include_file,
+ nasm_preproc_predefine_macro,
+ nasm_preproc_undefine_macro,
+ nasm_preproc_define_builtin,
+ nasm_preproc_add_standard
+};
+
+static yasm_preproc *
+tasm_preproc_create(const char *in_filename, yasm_symtab *symtab,
+ yasm_linemap *lm, yasm_errwarns *errwarns)
+{
+ tasm_compatible_mode = 1;
+ return nasm_preproc_create(in_filename, symtab, lm, errwarns);
+}
+
+yasm_preproc_module yasm_tasm_LTX_preproc = {
+ "Real TASM Preprocessor",
+ "tasm",
+ tasm_preproc_create,
+ nasm_preproc_destroy,
+ nasm_preproc_get_line,
+ nasm_preproc_get_included_file,
+ nasm_preproc_add_include_file,
+ nasm_preproc_predefine_macro,
+ nasm_preproc_undefine_macro,
+ nasm_preproc_define_builtin,
+ nasm_preproc_add_standard
+};
diff --git a/contrib/tools/yasm/modules/preprocs/nasm/nasm.h b/contrib/tools/yasm/modules/preprocs/nasm/nasm.h
index 990118f983..b3382ffe92 100644
--- a/contrib/tools/yasm/modules/preprocs/nasm/nasm.h
+++ b/contrib/tools/yasm/modules/preprocs/nasm/nasm.h
@@ -1,283 +1,283 @@
-/* nasm.h main header file for the Netwide Assembler: inter-module interface
- *
- * The Netwide Assembler is copyright (C) 1996 Simon Tatham and
- * Julian Hall. All rights reserved. The software is
- * redistributable under the licence given in the file "Licence"
- * distributed in the NASM archive.
- *
- * initial version: 27/iii/95 by Simon Tatham
- */
-#ifndef YASM_NASM_H
-#define YASM_NASM_H
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-#ifndef FALSE
-#define FALSE 0 /* comes in handy */
-#endif
-#ifndef TRUE
-#define TRUE 1
-#endif
-
-#ifndef FILENAME_MAX
-#define FILENAME_MAX 256
-#endif
-
-#ifndef PREFIX_MAX
-#define PREFIX_MAX 10
-#endif
-
-#ifndef POSTFIX_MAX
-#define POSTFIX_MAX 10
-#endif
-
-#define IDLEN_MAX 4096
-
-/*
- * -------------------------
- * Error reporting functions
- * -------------------------
- */
-
-/*
- * An error reporting function should look like this.
- */
-typedef void (*efunc) (int severity, const char *fmt, ...);
-
-/*
- * These are the error severity codes which get passed as the first
- * argument to an efunc.
- */
-
-#define ERR_DEBUG 0x00000008 /* put out debugging message */
-#define ERR_WARNING 0x00000000 /* warn only: no further action */
-#define ERR_NONFATAL 0x00000001 /* terminate assembly after phase */
-#define ERR_FATAL 0x00000002 /* instantly fatal: exit with error */
-#define ERR_PANIC 0x00000003 /* internal error: panic instantly
- * and dump core for reference */
-#define ERR_MASK 0x0000000F /* mask off the above codes */
-#define ERR_NOFILE 0x00000010 /* don't give source file name/line */
-#define ERR_USAGE 0x00000020 /* print a usage message */
-#define ERR_PASS1 0x00000040 /* only print this error on pass one */
-
-/*
- * These codes define specific types of suppressible warning.
- */
-
-#define ERR_WARN_MASK 0x0000FF00 /* the mask for this feature */
-#define ERR_WARN_SHR 8 /* how far to shift right */
-
-#define ERR_WARN_MNP 0x00000100 /* macro-num-parameters warning */
-#define ERR_WARN_MSR 0x00000200 /* macro self-reference */
-#define ERR_WARN_OL 0x00000300 /* orphan label (no colon, and
- * alone on line) */
-#define ERR_WARN_NOV 0x00000400 /* numeric overflow */
-#define ERR_WARN_GNUELF 0x00000500 /* using GNU ELF extensions */
-#define ERR_WARN_MAX 5 /* the highest numbered one */
-
-/*
- * -----------------------
- * Other function typedefs
- * -----------------------
- */
-
-/*
- * List-file generators should look like this:
- */
-typedef struct {
- /*
- * Called to initialise the listing file generator. Before this
- * is called, the other routines will silently do nothing when
- * called. The `char *' parameter is the file name to write the
- * listing to.
- */
- void (*init) (char *, efunc);
-
- /*
- * Called to clear stuff up and close the listing file.
- */
- void (*cleanup) (void);
-
- /*
- * Called to output binary data. Parameters are: the offset;
- * the data; the data type. Data types are similar to the
- * output-format interface, only OUT_ADDRESS will _always_ be
- * displayed as if it's relocatable, so ensure that any non-
- * relocatable address has been converted to OUT_RAWDATA by
- * then. Note that OUT_RAWDATA+0 is a valid data type, and is a
- * dummy call used to give the listing generator an offset to
- * work with when doing things like uplevel(LIST_TIMES) or
- * uplevel(LIST_INCBIN).
- */
- void (*output) (long, const void *, unsigned long);
-
- /*
- * Called to send a text line to the listing generator. The
- * `int' parameter is LIST_READ or LIST_MACRO depending on
- * whether the line came directly from an input file or is the
- * result of a multi-line macro expansion.
- */
- void (*line) (int, char *);
-
- /*
- * Called to change one of the various levelled mechanisms in
- * the listing generator. LIST_INCLUDE and LIST_MACRO can be
- * used to increase the nesting level of include files and
- * macro expansions; LIST_TIMES and LIST_INCBIN switch on the
- * two binary-output-suppression mechanisms for large-scale
- * pseudo-instructions.
- *
- * LIST_MACRO_NOLIST is synonymous with LIST_MACRO except that
- * it indicates the beginning of the expansion of a `nolist'
- * macro, so anything under that level won't be expanded unless
- * it includes another file.
- */
- void (*uplevel) (int);
-
- /*
- * Reverse the effects of uplevel.
- */
- void (*downlevel) (int);
-} ListGen;
-
-/*
- * The expression evaluator must be passed a scanner function; a
- * standard scanner is provided as part of nasmlib.c. The
- * preprocessor will use a different one. Scanners, and the
- * token-value structures they return, look like this.
- *
- * The return value from the scanner is always a copy of the
- * `t_type' field in the structure.
- */
-struct tokenval {
- int t_type;
- yasm_intnum *t_integer, *t_inttwo;
- char *t_charptr;
-};
-typedef int (*scanner) (void *private_data, struct tokenval *tv);
-
-/*
- * Token types returned by the scanner, in addition to ordinary
- * ASCII character values, and zero for end-of-string.
- */
-enum { /* token types, other than chars */
- TOKEN_INVALID = -1, /* a placeholder value */
- TOKEN_EOS = 0, /* end of string */
- TOKEN_EQ = '=', TOKEN_GT = '>', TOKEN_LT = '<', /* aliases */
- TOKEN_ID = 256, TOKEN_NUM, TOKEN_REG, TOKEN_INSN, /* major token types */
- TOKEN_ERRNUM, /* numeric constant with error in */
- TOKEN_HERE, TOKEN_BASE, /* $ and $$ */
- TOKEN_SPECIAL, /* BYTE, WORD, DWORD, FAR, NEAR, etc */
- TOKEN_PREFIX, /* A32, O16, LOCK, REPNZ, TIMES, etc */
- TOKEN_SHL, TOKEN_SHR, /* << and >> */
- TOKEN_SDIV, TOKEN_SMOD, /* // and %% */
- TOKEN_GE, TOKEN_LE, TOKEN_NE, /* >=, <= and <> (!= is same as <>) */
- TOKEN_DBL_AND, TOKEN_DBL_OR, TOKEN_DBL_XOR, /* &&, || and ^^ */
- TOKEN_SEG, TOKEN_WRT, /* SEG and WRT */
- TOKEN_FLOAT /* floating-point constant */
-};
-
-/*
- * The actual expression evaluator function looks like this. When
- * called, it expects the first token of its expression to already
- * be in `*tv'; if it is not, set tv->t_type to TOKEN_INVALID and
- * it will start by calling the scanner.
- *
- * `critical' is non-zero if the expression may not contain forward
- * references. The evaluator will report its own error if this
- * occurs; if `critical' is 1, the error will be "symbol not
- * defined before use", whereas if `critical' is 2, the error will
- * be "symbol undefined".
- *
- * If `critical' has bit 8 set (in addition to its main value: 0x101
- * and 0x102 correspond to 1 and 2) then an extended expression
- * syntax is recognised, in which relational operators such as =, <
- * and >= are accepted, as well as low-precedence logical operators
- * &&, ^^ and ||.
- */
-#define CRITICAL 0x100
-typedef yasm_expr *(*evalfunc) (scanner sc, void *scprivate, struct tokenval *tv,
- int critical, efunc error);
-
-/*
- * Preprocessors ought to look like this:
- */
-typedef struct {
- /*
- * Called at the start of a pass; given a file name, the number
- * of the pass, an error reporting function, an evaluator
- * function, and a listing generator to talk to.
- */
- void (*reset) (FILE *, const char *, int, efunc, evalfunc, ListGen *);
-
- /*
- * Called to fetch a line of preprocessed source. The line
- * returned has been malloc'ed, and so should be freed after
- * use.
- */
- char *(*getline) (void);
-
- /*
- * Called at the end of a pass.
- */
- void (*cleanup) (int);
-} Preproc;
-
-/*
- * ----------------------------------------------------------------
- * Some lexical properties of the NASM source language, included
- * here because they are shared between the parser and preprocessor
- * ----------------------------------------------------------------
- */
-
-/*
- * isidstart matches any character that may start an identifier, and isidchar
- * matches any character that may appear at places other than the start of an
- * identifier. E.g. a period may only appear at the start of an identifier
- * (for local labels), whereas a number may appear anywhere *but* at the
- * start.
- */
-
-#define isidstart(c) ( isalpha(c) || (c)=='_' || (c)=='.' || (c)=='?' \
- || (c)=='@' )
-#define isidchar(c) ( isidstart(c) || isdigit(c) || (c)=='$' || (c)=='#' \
- || (c)=='~' )
-
-/* Ditto for numeric constants. */
-
-#define isnumstart(c) ( isdigit(c) || (c)=='$' )
-#define isnumchar(c) ( isalnum(c) )
-
-/* This returns the numeric value of a given 'digit'. */
-
-#define numvalue(c) ((c)>='a' ? (c)-'a'+10 : (c)>='A' ? (c)-'A'+10 : (c)-'0')
-
-/*
- * Data-type flags that get passed to listing-file routines.
- */
-enum {
- LIST_READ, LIST_MACRO, LIST_MACRO_NOLIST, LIST_INCLUDE,
- LIST_INCBIN, LIST_TIMES
-};
-
-/*
- * -----
- * Other
- * -----
- */
-
-/*
- * This is a useful #define which I keep meaning to use more often:
- * the number of elements of a statically defined array.
- */
-
-#define elements(x) ( sizeof(x) / sizeof(*(x)) )
-
-extern int tasm_compatible_mode;
-extern int tasm_locals;
-extern const char *tasm_segment;
-const char *tasm_get_segment_register(const char *segment);
-
-#endif
+/* nasm.h main header file for the Netwide Assembler: inter-module interface
+ *
+ * The Netwide Assembler is copyright (C) 1996 Simon Tatham and
+ * Julian Hall. All rights reserved. The software is
+ * redistributable under the licence given in the file "Licence"
+ * distributed in the NASM archive.
+ *
+ * initial version: 27/iii/95 by Simon Tatham
+ */
+#ifndef YASM_NASM_H
+#define YASM_NASM_H
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+#ifndef FALSE
+#define FALSE 0 /* comes in handy */
+#endif
+#ifndef TRUE
+#define TRUE 1
+#endif
+
+#ifndef FILENAME_MAX
+#define FILENAME_MAX 256
+#endif
+
+#ifndef PREFIX_MAX
+#define PREFIX_MAX 10
+#endif
+
+#ifndef POSTFIX_MAX
+#define POSTFIX_MAX 10
+#endif
+
+#define IDLEN_MAX 4096
+
+/*
+ * -------------------------
+ * Error reporting functions
+ * -------------------------
+ */
+
+/*
+ * An error reporting function should look like this.
+ */
+typedef void (*efunc) (int severity, const char *fmt, ...);
+
+/*
+ * These are the error severity codes which get passed as the first
+ * argument to an efunc.
+ */
+
+#define ERR_DEBUG 0x00000008 /* put out debugging message */
+#define ERR_WARNING 0x00000000 /* warn only: no further action */
+#define ERR_NONFATAL 0x00000001 /* terminate assembly after phase */
+#define ERR_FATAL 0x00000002 /* instantly fatal: exit with error */
+#define ERR_PANIC 0x00000003 /* internal error: panic instantly
+ * and dump core for reference */
+#define ERR_MASK 0x0000000F /* mask off the above codes */
+#define ERR_NOFILE 0x00000010 /* don't give source file name/line */
+#define ERR_USAGE 0x00000020 /* print a usage message */
+#define ERR_PASS1 0x00000040 /* only print this error on pass one */
+
+/*
+ * These codes define specific types of suppressible warning.
+ */
+
+#define ERR_WARN_MASK 0x0000FF00 /* the mask for this feature */
+#define ERR_WARN_SHR 8 /* how far to shift right */
+
+#define ERR_WARN_MNP 0x00000100 /* macro-num-parameters warning */
+#define ERR_WARN_MSR 0x00000200 /* macro self-reference */
+#define ERR_WARN_OL 0x00000300 /* orphan label (no colon, and
+ * alone on line) */
+#define ERR_WARN_NOV 0x00000400 /* numeric overflow */
+#define ERR_WARN_GNUELF 0x00000500 /* using GNU ELF extensions */
+#define ERR_WARN_MAX 5 /* the highest numbered one */
+
+/*
+ * -----------------------
+ * Other function typedefs
+ * -----------------------
+ */
+
+/*
+ * List-file generators should look like this:
+ */
+typedef struct {
+ /*
+ * Called to initialise the listing file generator. Before this
+ * is called, the other routines will silently do nothing when
+ * called. The `char *' parameter is the file name to write the
+ * listing to.
+ */
+ void (*init) (char *, efunc);
+
+ /*
+ * Called to clear stuff up and close the listing file.
+ */
+ void (*cleanup) (void);
+
+ /*
+ * Called to output binary data. Parameters are: the offset;
+ * the data; the data type. Data types are similar to the
+ * output-format interface, only OUT_ADDRESS will _always_ be
+ * displayed as if it's relocatable, so ensure that any non-
+ * relocatable address has been converted to OUT_RAWDATA by
+ * then. Note that OUT_RAWDATA+0 is a valid data type, and is a
+ * dummy call used to give the listing generator an offset to
+ * work with when doing things like uplevel(LIST_TIMES) or
+ * uplevel(LIST_INCBIN).
+ */
+ void (*output) (long, const void *, unsigned long);
+
+ /*
+ * Called to send a text line to the listing generator. The
+ * `int' parameter is LIST_READ or LIST_MACRO depending on
+ * whether the line came directly from an input file or is the
+ * result of a multi-line macro expansion.
+ */
+ void (*line) (int, char *);
+
+ /*
+ * Called to change one of the various levelled mechanisms in
+ * the listing generator. LIST_INCLUDE and LIST_MACRO can be
+ * used to increase the nesting level of include files and
+ * macro expansions; LIST_TIMES and LIST_INCBIN switch on the
+ * two binary-output-suppression mechanisms for large-scale
+ * pseudo-instructions.
+ *
+ * LIST_MACRO_NOLIST is synonymous with LIST_MACRO except that
+ * it indicates the beginning of the expansion of a `nolist'
+ * macro, so anything under that level won't be expanded unless
+ * it includes another file.
+ */
+ void (*uplevel) (int);
+
+ /*
+ * Reverse the effects of uplevel.
+ */
+ void (*downlevel) (int);
+} ListGen;
+
+/*
+ * The expression evaluator must be passed a scanner function; a
+ * standard scanner is provided as part of nasmlib.c. The
+ * preprocessor will use a different one. Scanners, and the
+ * token-value structures they return, look like this.
+ *
+ * The return value from the scanner is always a copy of the
+ * `t_type' field in the structure.
+ */
+struct tokenval {
+ int t_type;
+ yasm_intnum *t_integer, *t_inttwo;
+ char *t_charptr;
+};
+typedef int (*scanner) (void *private_data, struct tokenval *tv);
+
+/*
+ * Token types returned by the scanner, in addition to ordinary
+ * ASCII character values, and zero for end-of-string.
+ */
+enum { /* token types, other than chars */
+ TOKEN_INVALID = -1, /* a placeholder value */
+ TOKEN_EOS = 0, /* end of string */
+ TOKEN_EQ = '=', TOKEN_GT = '>', TOKEN_LT = '<', /* aliases */
+ TOKEN_ID = 256, TOKEN_NUM, TOKEN_REG, TOKEN_INSN, /* major token types */
+ TOKEN_ERRNUM, /* numeric constant with error in */
+ TOKEN_HERE, TOKEN_BASE, /* $ and $$ */
+ TOKEN_SPECIAL, /* BYTE, WORD, DWORD, FAR, NEAR, etc */
+ TOKEN_PREFIX, /* A32, O16, LOCK, REPNZ, TIMES, etc */
+ TOKEN_SHL, TOKEN_SHR, /* << and >> */
+ TOKEN_SDIV, TOKEN_SMOD, /* // and %% */
+ TOKEN_GE, TOKEN_LE, TOKEN_NE, /* >=, <= and <> (!= is same as <>) */
+ TOKEN_DBL_AND, TOKEN_DBL_OR, TOKEN_DBL_XOR, /* &&, || and ^^ */
+ TOKEN_SEG, TOKEN_WRT, /* SEG and WRT */
+ TOKEN_FLOAT /* floating-point constant */
+};
+
+/*
+ * The actual expression evaluator function looks like this. When
+ * called, it expects the first token of its expression to already
+ * be in `*tv'; if it is not, set tv->t_type to TOKEN_INVALID and
+ * it will start by calling the scanner.
+ *
+ * `critical' is non-zero if the expression may not contain forward
+ * references. The evaluator will report its own error if this
+ * occurs; if `critical' is 1, the error will be "symbol not
+ * defined before use", whereas if `critical' is 2, the error will
+ * be "symbol undefined".
+ *
+ * If `critical' has bit 8 set (in addition to its main value: 0x101
+ * and 0x102 correspond to 1 and 2) then an extended expression
+ * syntax is recognised, in which relational operators such as =, <
+ * and >= are accepted, as well as low-precedence logical operators
+ * &&, ^^ and ||.
+ */
+#define CRITICAL 0x100
+typedef yasm_expr *(*evalfunc) (scanner sc, void *scprivate, struct tokenval *tv,
+ int critical, efunc error);
+
+/*
+ * Preprocessors ought to look like this:
+ */
+typedef struct {
+ /*
+ * Called at the start of a pass; given a file name, the number
+ * of the pass, an error reporting function, an evaluator
+ * function, and a listing generator to talk to.
+ */
+ void (*reset) (FILE *, const char *, int, efunc, evalfunc, ListGen *);
+
+ /*
+ * Called to fetch a line of preprocessed source. The line
+ * returned has been malloc'ed, and so should be freed after
+ * use.
+ */
+ char *(*getline) (void);
+
+ /*
+ * Called at the end of a pass.
+ */
+ void (*cleanup) (int);
+} Preproc;
+
+/*
+ * ----------------------------------------------------------------
+ * Some lexical properties of the NASM source language, included
+ * here because they are shared between the parser and preprocessor
+ * ----------------------------------------------------------------
+ */
+
+/*
+ * isidstart matches any character that may start an identifier, and isidchar
+ * matches any character that may appear at places other than the start of an
+ * identifier. E.g. a period may only appear at the start of an identifier
+ * (for local labels), whereas a number may appear anywhere *but* at the
+ * start.
+ */
+
+#define isidstart(c) ( isalpha(c) || (c)=='_' || (c)=='.' || (c)=='?' \
+ || (c)=='@' )
+#define isidchar(c) ( isidstart(c) || isdigit(c) || (c)=='$' || (c)=='#' \
+ || (c)=='~' )
+
+/* Ditto for numeric constants. */
+
+#define isnumstart(c) ( isdigit(c) || (c)=='$' )
+#define isnumchar(c) ( isalnum(c) )
+
+/* This returns the numeric value of a given 'digit'. */
+
+#define numvalue(c) ((c)>='a' ? (c)-'a'+10 : (c)>='A' ? (c)-'A'+10 : (c)-'0')
+
+/*
+ * Data-type flags that get passed to listing-file routines.
+ */
+enum {
+ LIST_READ, LIST_MACRO, LIST_MACRO_NOLIST, LIST_INCLUDE,
+ LIST_INCBIN, LIST_TIMES
+};
+
+/*
+ * -----
+ * Other
+ * -----
+ */
+
+/*
+ * This is a useful #define which I keep meaning to use more often:
+ * the number of elements of a statically defined array.
+ */
+
+#define elements(x) ( sizeof(x) / sizeof(*(x)) )
+
+extern int tasm_compatible_mode;
+extern int tasm_locals;
+extern const char *tasm_segment;
+const char *tasm_get_segment_register(const char *segment);
+
+#endif
diff --git a/contrib/tools/yasm/modules/preprocs/nasm/nasmlib.c b/contrib/tools/yasm/modules/preprocs/nasm/nasmlib.c
index de1f64f9c4..2ced911780 100644
--- a/contrib/tools/yasm/modules/preprocs/nasm/nasmlib.c
+++ b/contrib/tools/yasm/modules/preprocs/nasm/nasmlib.c
@@ -1,201 +1,201 @@
-/* nasmlib.c library routines for the Netwide Assembler
- *
- * The Netwide Assembler is copyright (C) 1996 Simon Tatham and
- * Julian Hall. All rights reserved. The software is
- * redistributable under the licence given in the file "Licence"
- * distributed in the NASM archive.
- */
-#include <util.h>
-#include <libyasm/coretype.h>
-#include <libyasm/intnum.h>
-#include <ctype.h>
-
-#include "nasm.h"
-#include "nasmlib.h"
-/*#include "insns.h"*/ /* For MAX_KEYWORD */
-
-#define lib_isnumchar(c) ( isalnum(c) || (c) == '$')
-#define numvalue(c) ((c)>='a' ? (c)-'a'+10 : (c)>='A' ? (c)-'A'+10 : (c)-'0')
-
-yasm_intnum *nasm_readnum (char *str, int *error)
-{
- char *r = str, *q, *p;
- long radix;
- yasm_intnum *intn;
- char save;
- int digit;
- int sign = 0;
-
- *error = FALSE;
-
- while (isspace(*r)) r++; /* find start of number */
-
- /*
- * If the number came from make_tok_num (as a result of an %assign), it
- * might have a '-' built into it (rather than in a preceeding token).
- */
- if (*r == '-')
- {
- r++;
- sign = 1;
- }
-
- q = r;
-
- while (lib_isnumchar(*q)) q++; /* find end of number */
-
- /*
- * If it begins 0x, 0X or $, or ends in H, it's in hex. if it
- * ends in Q, it's octal. if it ends in B, it's binary.
- * Otherwise, it's ordinary decimal.
- */
- if (*r=='0' && (r[1]=='x' || r[1]=='X'))
- radix = 16, r += 2;
- else if (*r=='$')
- radix = 16, r++;
- else if (q[-1]=='H' || q[-1]=='h')
- radix = 16 , q--;
- else if (q[-1]=='Q' || q[-1]=='q' || q[-1]=='O' || q[-1]=='o')
- radix = 8 , q--;
- else if (q[-1]=='B' || q[-1]=='b')
- radix = 2 , q--;
- else
- radix = 10;
-
- /*
- * If this number has been found for us by something other than
- * the ordinary scanners, then it might be malformed by having
- * nothing between the prefix and the suffix. Check this case
- * now.
- */
- if (r >= q) {
- *error = TRUE;
- return yasm_intnum_create_uint(0);
- }
-
- /* Check for valid number of that radix */
- p = r;
- while (*p && p < q) {
- if (*p<'0' || (*p>'9' && *p<'A') || (digit = numvalue(*p)) >= radix)
- {
- *error = TRUE;
- return yasm_intnum_create_uint(0);
- }
- p++;
- }
-
- /* Use intnum to actually do the conversion */
- save = *q;
- *q = '\0';
- switch (radix) {
- case 2:
- intn = yasm_intnum_create_bin(r);
- break;
- case 8:
- intn = yasm_intnum_create_oct(r);
- break;
- case 10:
- intn = yasm_intnum_create_dec(r);
- break;
- case 16:
- intn = yasm_intnum_create_hex(r);
- break;
- default:
- *error = TRUE;
- intn = yasm_intnum_create_uint(0);
- break;
- }
- *q = save;
-
- if (sign)
- yasm_intnum_calc(intn, YASM_EXPR_NEG, NULL);
- return intn;
-}
-
-yasm_intnum *nasm_readstrnum (char *str, size_t length, int *warn)
-{
- char save;
- yasm_intnum *intn;
-
- *warn = FALSE;
-
- save = str[length];
- str[length] = '\0';
- intn = yasm_intnum_create_charconst_nasm(str);
- str[length] = save;
-
- return intn;
-}
-
-static char *file_name = NULL;
-static long line_number = 0;
-
-char *nasm_src_set_fname(char *newname)
-{
- char *oldname = file_name;
- file_name = newname;
- return oldname;
-}
-
-char *nasm_src_get_fname(void)
-{
- return file_name;
-}
-
-long nasm_src_set_linnum(long newline)
-{
- long oldline = line_number;
- line_number = newline;
- return oldline;
-}
-
-long nasm_src_get_linnum(void)
-{
- return line_number;
-}
-
-int nasm_src_get(long *xline, char **xname)
-{
- if (!file_name || !*xname || strcmp(*xname, file_name))
- {
- nasm_free(*xname);
- *xname = file_name ? nasm_strdup(file_name) : NULL;
- *xline = line_number;
- return -2;
- }
- if (*xline != line_number)
- {
- long tmp = line_number - *xline;
- *xline = line_number;
- return tmp;
- }
- return 0;
-}
-
-void nasm_quote(char **str)
-{
- size_t ln=strlen(*str);
- char q=(*str)[0];
- char *p;
- if (ln>1 && (*str)[ln-1]==q && (q=='"' || q=='\''))
- return;
- q = '"';
- if (strchr(*str,q))
- q = '\'';
- p = nasm_malloc(ln+3);
- strcpy(p+1, *str);
- nasm_free(*str);
- p[ln+1] = p[0] = q;
- p[ln+2] = 0;
- *str = p;
-}
-
-char *nasm_strcat(const char *one, const char *two)
-{
- char *rslt;
- size_t l1=strlen(one);
- rslt = nasm_malloc(l1+strlen(two)+1);
- strcpy(rslt, one);
- strcpy(rslt+l1, two);
- return rslt;
-}
+/* nasmlib.c library routines for the Netwide Assembler
+ *
+ * The Netwide Assembler is copyright (C) 1996 Simon Tatham and
+ * Julian Hall. All rights reserved. The software is
+ * redistributable under the licence given in the file "Licence"
+ * distributed in the NASM archive.
+ */
+#include <util.h>
+#include <libyasm/coretype.h>
+#include <libyasm/intnum.h>
+#include <ctype.h>
+
+#include "nasm.h"
+#include "nasmlib.h"
+/*#include "insns.h"*/ /* For MAX_KEYWORD */
+
+#define lib_isnumchar(c) ( isalnum(c) || (c) == '$')
+#define numvalue(c) ((c)>='a' ? (c)-'a'+10 : (c)>='A' ? (c)-'A'+10 : (c)-'0')
+
+yasm_intnum *nasm_readnum (char *str, int *error)
+{
+ char *r = str, *q, *p;
+ long radix;
+ yasm_intnum *intn;
+ char save;
+ int digit;
+ int sign = 0;
+
+ *error = FALSE;
+
+ while (isspace(*r)) r++; /* find start of number */
+
+ /*
+ * If the number came from make_tok_num (as a result of an %assign), it
+ * might have a '-' built into it (rather than in a preceeding token).
+ */
+ if (*r == '-')
+ {
+ r++;
+ sign = 1;
+ }
+
+ q = r;
+
+ while (lib_isnumchar(*q)) q++; /* find end of number */
+
+ /*
+ * If it begins 0x, 0X or $, or ends in H, it's in hex. if it
+ * ends in Q, it's octal. if it ends in B, it's binary.
+ * Otherwise, it's ordinary decimal.
+ */
+ if (*r=='0' && (r[1]=='x' || r[1]=='X'))
+ radix = 16, r += 2;
+ else if (*r=='$')
+ radix = 16, r++;
+ else if (q[-1]=='H' || q[-1]=='h')
+ radix = 16 , q--;
+ else if (q[-1]=='Q' || q[-1]=='q' || q[-1]=='O' || q[-1]=='o')
+ radix = 8 , q--;
+ else if (q[-1]=='B' || q[-1]=='b')
+ radix = 2 , q--;
+ else
+ radix = 10;
+
+ /*
+ * If this number has been found for us by something other than
+ * the ordinary scanners, then it might be malformed by having
+ * nothing between the prefix and the suffix. Check this case
+ * now.
+ */
+ if (r >= q) {
+ *error = TRUE;
+ return yasm_intnum_create_uint(0);
+ }
+
+ /* Check for valid number of that radix */
+ p = r;
+ while (*p && p < q) {
+ if (*p<'0' || (*p>'9' && *p<'A') || (digit = numvalue(*p)) >= radix)
+ {
+ *error = TRUE;
+ return yasm_intnum_create_uint(0);
+ }
+ p++;
+ }
+
+ /* Use intnum to actually do the conversion */
+ save = *q;
+ *q = '\0';
+ switch (radix) {
+ case 2:
+ intn = yasm_intnum_create_bin(r);
+ break;
+ case 8:
+ intn = yasm_intnum_create_oct(r);
+ break;
+ case 10:
+ intn = yasm_intnum_create_dec(r);
+ break;
+ case 16:
+ intn = yasm_intnum_create_hex(r);
+ break;
+ default:
+ *error = TRUE;
+ intn = yasm_intnum_create_uint(0);
+ break;
+ }
+ *q = save;
+
+ if (sign)
+ yasm_intnum_calc(intn, YASM_EXPR_NEG, NULL);
+ return intn;
+}
+
+yasm_intnum *nasm_readstrnum (char *str, size_t length, int *warn)
+{
+ char save;
+ yasm_intnum *intn;
+
+ *warn = FALSE;
+
+ save = str[length];
+ str[length] = '\0';
+ intn = yasm_intnum_create_charconst_nasm(str);
+ str[length] = save;
+
+ return intn;
+}
+
+static char *file_name = NULL;
+static long line_number = 0;
+
+char *nasm_src_set_fname(char *newname)
+{
+ char *oldname = file_name;
+ file_name = newname;
+ return oldname;
+}
+
+char *nasm_src_get_fname(void)
+{
+ return file_name;
+}
+
+long nasm_src_set_linnum(long newline)
+{
+ long oldline = line_number;
+ line_number = newline;
+ return oldline;
+}
+
+long nasm_src_get_linnum(void)
+{
+ return line_number;
+}
+
+int nasm_src_get(long *xline, char **xname)
+{
+ if (!file_name || !*xname || strcmp(*xname, file_name))
+ {
+ nasm_free(*xname);
+ *xname = file_name ? nasm_strdup(file_name) : NULL;
+ *xline = line_number;
+ return -2;
+ }
+ if (*xline != line_number)
+ {
+ long tmp = line_number - *xline;
+ *xline = line_number;
+ return tmp;
+ }
+ return 0;
+}
+
+void nasm_quote(char **str)
+{
+ size_t ln=strlen(*str);
+ char q=(*str)[0];
+ char *p;
+ if (ln>1 && (*str)[ln-1]==q && (q=='"' || q=='\''))
+ return;
+ q = '"';
+ if (strchr(*str,q))
+ q = '\'';
+ p = nasm_malloc(ln+3);
+ strcpy(p+1, *str);
+ nasm_free(*str);
+ p[ln+1] = p[0] = q;
+ p[ln+2] = 0;
+ *str = p;
+}
+
+char *nasm_strcat(const char *one, const char *two)
+{
+ char *rslt;
+ size_t l1=strlen(one);
+ rslt = nasm_malloc(l1+strlen(two)+1);
+ strcpy(rslt, one);
+ strcpy(rslt+l1, two);
+ return rslt;
+}
diff --git a/contrib/tools/yasm/modules/preprocs/nasm/nasmlib.h b/contrib/tools/yasm/modules/preprocs/nasm/nasmlib.h
index 735a54e159..c26c0668b5 100644
--- a/contrib/tools/yasm/modules/preprocs/nasm/nasmlib.h
+++ b/contrib/tools/yasm/modules/preprocs/nasm/nasmlib.h
@@ -1,60 +1,60 @@
-/* nasmlib.h header file for nasmlib.c
- *
- * The Netwide Assembler is copyright (C) 1996 Simon Tatham and
- * Julian Hall. All rights reserved. The software is
- * redistributable under the licence given in the file "Licence"
- * distributed in the NASM archive.
- */
-
-#ifndef YASM_NASMLIB_H
-#define YASM_NASMLIB_H
-
-/*
- * Wrappers around malloc, realloc and free. nasm_malloc will
- * fatal-error and die rather than return NULL; nasm_realloc will
- * do likewise, and will also guarantee to work right on being
- * passed a NULL pointer; nasm_free will do nothing if it is passed
- * a NULL pointer.
- */
-#define nasm_malloc yasm_xmalloc
-#define nasm_realloc yasm_xrealloc
-#ifdef WITH_DMALLOC
-#define nasm_free(p) do { if (p) yasm_xfree(p); } while(0)
-#else
-#define nasm_free(p) yasm_xfree(p)
-#endif
-#define nasm_strdup yasm__xstrdup
-#define nasm_strndup yasm__xstrndup
-#define nasm_stricmp yasm__strcasecmp
-#define nasm_strnicmp yasm__strncasecmp
-
-/*
- * Convert a string into a number, using NASM number rules. Sets
- * `*error' to TRUE if an error occurs, and FALSE otherwise.
- */
-yasm_intnum *nasm_readnum(char *str, int *error);
-
-/*
- * Convert a character constant into a number. Sets
- * `*warn' to TRUE if an overflow occurs, and FALSE otherwise.
- * str points to and length covers the middle of the string,
- * without the quotes.
- */
-yasm_intnum *nasm_readstrnum(char *str, size_t length, int *warn);
-
-char *nasm_src_set_fname(char *newname);
-char *nasm_src_get_fname(void);
-long nasm_src_set_linnum(long newline);
-long nasm_src_get_linnum(void);
-/*
- * src_get may be used if you simply want to know the source file and line.
- * It is also used if you maintain private status about the source location
- * It return 0 if the information was the same as the last time you
- * checked, -1 if the name changed and (new-old) if just the line changed.
- */
-int nasm_src_get(long *xline, char **xname);
-
-void nasm_quote(char **str);
-char *nasm_strcat(const char *one, const char *two);
-
-#endif
+/* nasmlib.h header file for nasmlib.c
+ *
+ * The Netwide Assembler is copyright (C) 1996 Simon Tatham and
+ * Julian Hall. All rights reserved. The software is
+ * redistributable under the licence given in the file "Licence"
+ * distributed in the NASM archive.
+ */
+
+#ifndef YASM_NASMLIB_H
+#define YASM_NASMLIB_H
+
+/*
+ * Wrappers around malloc, realloc and free. nasm_malloc will
+ * fatal-error and die rather than return NULL; nasm_realloc will
+ * do likewise, and will also guarantee to work right on being
+ * passed a NULL pointer; nasm_free will do nothing if it is passed
+ * a NULL pointer.
+ */
+#define nasm_malloc yasm_xmalloc
+#define nasm_realloc yasm_xrealloc
+#ifdef WITH_DMALLOC
+#define nasm_free(p) do { if (p) yasm_xfree(p); } while(0)
+#else
+#define nasm_free(p) yasm_xfree(p)
+#endif
+#define nasm_strdup yasm__xstrdup
+#define nasm_strndup yasm__xstrndup
+#define nasm_stricmp yasm__strcasecmp
+#define nasm_strnicmp yasm__strncasecmp
+
+/*
+ * Convert a string into a number, using NASM number rules. Sets
+ * `*error' to TRUE if an error occurs, and FALSE otherwise.
+ */
+yasm_intnum *nasm_readnum(char *str, int *error);
+
+/*
+ * Convert a character constant into a number. Sets
+ * `*warn' to TRUE if an overflow occurs, and FALSE otherwise.
+ * str points to and length covers the middle of the string,
+ * without the quotes.
+ */
+yasm_intnum *nasm_readstrnum(char *str, size_t length, int *warn);
+
+char *nasm_src_set_fname(char *newname);
+char *nasm_src_get_fname(void);
+long nasm_src_set_linnum(long newline);
+long nasm_src_get_linnum(void);
+/*
+ * src_get may be used if you simply want to know the source file and line.
+ * It is also used if you maintain private status about the source location
+ * It return 0 if the information was the same as the last time you
+ * checked, -1 if the name changed and (new-old) if just the line changed.
+ */
+int nasm_src_get(long *xline, char **xname);
+
+void nasm_quote(char **str);
+char *nasm_strcat(const char *one, const char *two);
+
+#endif
diff --git a/contrib/tools/yasm/modules/preprocs/raw/raw-preproc.c b/contrib/tools/yasm/modules/preprocs/raw/raw-preproc.c
index f20fbc0f6a..9745b242fe 100644
--- a/contrib/tools/yasm/modules/preprocs/raw/raw-preproc.c
+++ b/contrib/tools/yasm/modules/preprocs/raw/raw-preproc.c
@@ -1,169 +1,169 @@
-/*
- * Raw preprocessor (preforms NO preprocessing)
- *
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#include <util.h>
-
-#include <libyasm.h>
-
-
-#define BSIZE 512
-
-typedef struct yasm_preproc_raw {
- yasm_preproc_base preproc; /* base structure */
-
- FILE *in;
- yasm_linemap *cur_lm;
- yasm_errwarns *errwarns;
-} yasm_preproc_raw;
-
-yasm_preproc_module yasm_raw_LTX_preproc;
-
-static yasm_preproc *
-raw_preproc_create(const char *in_filename, yasm_symtab *symtab,
- yasm_linemap *lm, yasm_errwarns *errwarns)
-{
- FILE *f;
- yasm_preproc_raw *preproc_raw = yasm_xmalloc(sizeof(yasm_preproc_raw));
-
- if (strcmp(in_filename, "-") != 0) {
- f = fopen(in_filename, "r");
- if (!f)
+/*
+ * Raw preprocessor (preforms NO preprocessing)
+ *
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <util.h>
+
+#include <libyasm.h>
+
+
+#define BSIZE 512
+
+typedef struct yasm_preproc_raw {
+ yasm_preproc_base preproc; /* base structure */
+
+ FILE *in;
+ yasm_linemap *cur_lm;
+ yasm_errwarns *errwarns;
+} yasm_preproc_raw;
+
+yasm_preproc_module yasm_raw_LTX_preproc;
+
+static yasm_preproc *
+raw_preproc_create(const char *in_filename, yasm_symtab *symtab,
+ yasm_linemap *lm, yasm_errwarns *errwarns)
+{
+ FILE *f;
+ yasm_preproc_raw *preproc_raw = yasm_xmalloc(sizeof(yasm_preproc_raw));
+
+ if (strcmp(in_filename, "-") != 0) {
+ f = fopen(in_filename, "r");
+ if (!f)
yasm__fatal_missing_input_file( N_("Could not open input file"), in_filename );
- }
- else
- f = stdin;
-
- preproc_raw->preproc.module = &yasm_raw_LTX_preproc;
- preproc_raw->in = f;
- preproc_raw->cur_lm = lm;
- preproc_raw->errwarns = errwarns;
-
- return (yasm_preproc *)preproc_raw;
-}
-
-static void
-raw_preproc_destroy(yasm_preproc *preproc)
-{
- yasm_xfree(preproc);
-}
-
-static char *
-raw_preproc_get_line(yasm_preproc *preproc)
-{
- yasm_preproc_raw *preproc_raw = (yasm_preproc_raw *)preproc;
- int bufsize = BSIZE;
- char *buf = yasm_xmalloc((size_t)bufsize);
- char *p;
-
- /* Loop to ensure entire line is read (don't want to limit line length). */
- p = buf;
- for (;;) {
- if (!fgets(p, bufsize-(p-buf), preproc_raw->in)) {
- if (ferror(preproc_raw->in)) {
- yasm_error_set(YASM_ERROR_IO,
- N_("error when reading from file"));
- yasm_errwarn_propagate(preproc_raw->errwarns,
- yasm_linemap_get_current(preproc_raw->cur_lm));
- }
- break;
- }
- p += strlen(p);
- if (p > buf && p[-1] == '\n')
- break;
- if ((p-buf)+1 >= bufsize) {
- /* Increase size of buffer */
- char *oldbuf = buf;
- bufsize *= 2;
- buf = yasm_xrealloc(buf, (size_t)bufsize);
- p = buf + (p-oldbuf);
- }
- }
-
- if (p == buf) {
- /* No data; must be at EOF */
- yasm_xfree(buf);
- return NULL;
- }
-
- /* Strip the line ending */
- buf[strcspn(buf, "\r\n")] = '\0';
-
- return buf;
-}
-
-static size_t
-raw_preproc_get_included_file(yasm_preproc *preproc, char *buf,
- size_t max_size)
-{
- /* no included files */
- return 0;
-}
-
-static void
-raw_preproc_add_include_file(yasm_preproc *preproc, const char *filename)
-{
- /* no pre-include files */
-}
-
-static void
-raw_preproc_predefine_macro(yasm_preproc *preproc, const char *macronameval)
-{
- /* no pre-defining macros */
-}
-
-static void
-raw_preproc_undefine_macro(yasm_preproc *preproc, const char *macroname)
-{
- /* no undefining macros */
-}
-
-static void
-raw_preproc_define_builtin(yasm_preproc *preproc, const char *macronameval)
-{
- /* no builtin defines */
-}
-
-static void
-raw_preproc_add_standard(yasm_preproc *preproc, const char **macros)
-{
- /* no standard macros */
-}
-
-
-/* Define preproc structure -- see preproc.h for details */
-yasm_preproc_module yasm_raw_LTX_preproc = {
- "Disable preprocessing",
- "raw",
- raw_preproc_create,
- raw_preproc_destroy,
- raw_preproc_get_line,
- raw_preproc_get_included_file,
- raw_preproc_add_include_file,
- raw_preproc_predefine_macro,
- raw_preproc_undefine_macro,
- raw_preproc_define_builtin,
- raw_preproc_add_standard
-};
+ }
+ else
+ f = stdin;
+
+ preproc_raw->preproc.module = &yasm_raw_LTX_preproc;
+ preproc_raw->in = f;
+ preproc_raw->cur_lm = lm;
+ preproc_raw->errwarns = errwarns;
+
+ return (yasm_preproc *)preproc_raw;
+}
+
+static void
+raw_preproc_destroy(yasm_preproc *preproc)
+{
+ yasm_xfree(preproc);
+}
+
+static char *
+raw_preproc_get_line(yasm_preproc *preproc)
+{
+ yasm_preproc_raw *preproc_raw = (yasm_preproc_raw *)preproc;
+ int bufsize = BSIZE;
+ char *buf = yasm_xmalloc((size_t)bufsize);
+ char *p;
+
+ /* Loop to ensure entire line is read (don't want to limit line length). */
+ p = buf;
+ for (;;) {
+ if (!fgets(p, bufsize-(p-buf), preproc_raw->in)) {
+ if (ferror(preproc_raw->in)) {
+ yasm_error_set(YASM_ERROR_IO,
+ N_("error when reading from file"));
+ yasm_errwarn_propagate(preproc_raw->errwarns,
+ yasm_linemap_get_current(preproc_raw->cur_lm));
+ }
+ break;
+ }
+ p += strlen(p);
+ if (p > buf && p[-1] == '\n')
+ break;
+ if ((p-buf)+1 >= bufsize) {
+ /* Increase size of buffer */
+ char *oldbuf = buf;
+ bufsize *= 2;
+ buf = yasm_xrealloc(buf, (size_t)bufsize);
+ p = buf + (p-oldbuf);
+ }
+ }
+
+ if (p == buf) {
+ /* No data; must be at EOF */
+ yasm_xfree(buf);
+ return NULL;
+ }
+
+ /* Strip the line ending */
+ buf[strcspn(buf, "\r\n")] = '\0';
+
+ return buf;
+}
+
+static size_t
+raw_preproc_get_included_file(yasm_preproc *preproc, char *buf,
+ size_t max_size)
+{
+ /* no included files */
+ return 0;
+}
+
+static void
+raw_preproc_add_include_file(yasm_preproc *preproc, const char *filename)
+{
+ /* no pre-include files */
+}
+
+static void
+raw_preproc_predefine_macro(yasm_preproc *preproc, const char *macronameval)
+{
+ /* no pre-defining macros */
+}
+
+static void
+raw_preproc_undefine_macro(yasm_preproc *preproc, const char *macroname)
+{
+ /* no undefining macros */
+}
+
+static void
+raw_preproc_define_builtin(yasm_preproc *preproc, const char *macronameval)
+{
+ /* no builtin defines */
+}
+
+static void
+raw_preproc_add_standard(yasm_preproc *preproc, const char **macros)
+{
+ /* no standard macros */
+}
+
+
+/* Define preproc structure -- see preproc.h for details */
+yasm_preproc_module yasm_raw_LTX_preproc = {
+ "Disable preprocessing",
+ "raw",
+ raw_preproc_create,
+ raw_preproc_destroy,
+ raw_preproc_get_line,
+ raw_preproc_get_included_file,
+ raw_preproc_add_include_file,
+ raw_preproc_predefine_macro,
+ raw_preproc_undefine_macro,
+ raw_preproc_define_builtin,
+ raw_preproc_add_standard
+};
diff --git a/contrib/tools/yasm/modules/win64-gas.c b/contrib/tools/yasm/modules/win64-gas.c
index a191026dfd..1ad8be329c 100644
--- a/contrib/tools/yasm/modules/win64-gas.c
+++ b/contrib/tools/yasm/modules/win64-gas.c
@@ -1,65 +1,65 @@
-/* This file auto-generated from standard.mac by genmacro.c - don't edit it */
-
-#include <stddef.h>
-
-static const char *win64_gas_stdmac[] = {
- "%imacro export 1+.nolist",
- ".export %1",
- "%endmacro",
- "%imacro proc_frame 1+.nolist",
- "%1:",
- ".proc_frame %1",
- "%endmacro",
- "%imacro endproc_frame 0.nolist",
- ".endproc_frame",
- "%endmacro",
- "%imacro push_reg 1",
- "pushq %1",
- ".pushreg %1",
- "%endmacro",
- "%imacro rex_push_reg 1",
- ".byte 0x48",
- "pushq %1",
- ".pushreg %1",
- "%endmacro",
- "%imacro push_eflags 0",
- "pushfq",
- ".allocstack 8",
- "%endmacro",
- "%imacro rex_push_eflags 0",
- ".byte 0x48",
- "pushfq",
- ".allocstack 8",
- "%endmacro",
- "%imacro alloc_stack 1",
- "subq $%1, %rsp",
- ".allocstack %1",
- "%endmacro",
- "%imacro save_reg 2",
- "movq %1, %2(%rsp)",
- ".savereg %1 %2",
- "%endmacro",
- "%imacro save_xmm128 2",
- "movdqa %1, %2(%rsp)",
- ".savexmm128 %1, %2",
- "%endmacro",
- "%imacro push_frame 0-1.nolist",
- ".pushframe %1",
- "%endmacro",
- "%imacro set_frame 1-2",
- "%if %0==1",
- "movq %rsp, %1",
- "%else",
- "leaq %2(%rsp), %1",
- "%endif",
- ".setframe %1, %2",
- "%endmacro",
- "%imacro end_prolog 0.nolist",
- ".endprolog",
- "%endmacro",
- "%imacro end_prologue 0.nolist",
- ".endprolog",
- "%endmacro",
- NULL
-};
-
+/* This file auto-generated from standard.mac by genmacro.c - don't edit it */
+
+#include <stddef.h>
+
+static const char *win64_gas_stdmac[] = {
+ "%imacro export 1+.nolist",
+ ".export %1",
+ "%endmacro",
+ "%imacro proc_frame 1+.nolist",
+ "%1:",
+ ".proc_frame %1",
+ "%endmacro",
+ "%imacro endproc_frame 0.nolist",
+ ".endproc_frame",
+ "%endmacro",
+ "%imacro push_reg 1",
+ "pushq %1",
+ ".pushreg %1",
+ "%endmacro",
+ "%imacro rex_push_reg 1",
+ ".byte 0x48",
+ "pushq %1",
+ ".pushreg %1",
+ "%endmacro",
+ "%imacro push_eflags 0",
+ "pushfq",
+ ".allocstack 8",
+ "%endmacro",
+ "%imacro rex_push_eflags 0",
+ ".byte 0x48",
+ "pushfq",
+ ".allocstack 8",
+ "%endmacro",
+ "%imacro alloc_stack 1",
+ "subq $%1, %rsp",
+ ".allocstack %1",
+ "%endmacro",
+ "%imacro save_reg 2",
+ "movq %1, %2(%rsp)",
+ ".savereg %1 %2",
+ "%endmacro",
+ "%imacro save_xmm128 2",
+ "movdqa %1, %2(%rsp)",
+ ".savexmm128 %1, %2",
+ "%endmacro",
+ "%imacro push_frame 0-1.nolist",
+ ".pushframe %1",
+ "%endmacro",
+ "%imacro set_frame 1-2",
+ "%if %0==1",
+ "movq %rsp, %1",
+ "%else",
+ "leaq %2(%rsp), %1",
+ "%endif",
+ ".setframe %1, %2",
+ "%endmacro",
+ "%imacro end_prolog 0.nolist",
+ ".endprolog",
+ "%endmacro",
+ "%imacro end_prologue 0.nolist",
+ ".endprolog",
+ "%endmacro",
+ NULL
+};
+
diff --git a/contrib/tools/yasm/modules/win64-nasm.c b/contrib/tools/yasm/modules/win64-nasm.c
index 6181cb2927..95152c3893 100644
--- a/contrib/tools/yasm/modules/win64-nasm.c
+++ b/contrib/tools/yasm/modules/win64-nasm.c
@@ -1,65 +1,65 @@
-/* This file auto-generated from standard.mac by genmacro.c - don't edit it */
-
-#include <stddef.h>
-
-static const char *win64_nasm_stdmac[] = {
- "%imacro export 1+.nolist",
- "[export %1]",
- "%endmacro",
- "%imacro proc_frame 1+.nolist",
- "%1:",
- "[proc_frame %1]",
- "%endmacro",
- "%imacro endproc_frame 0.nolist",
- "[endproc_frame]",
- "%endmacro",
- "%imacro push_reg 1",
- "push %1",
- "[pushreg %1]",
- "%endmacro",
- "%imacro rex_push_reg 1",
- "db 0x48",
- "push %1",
- "[pushreg %1]",
- "%endmacro",
- "%imacro push_eflags 0",
- "pushfq",
- "[allocstack 8]",
- "%endmacro",
- "%imacro rex_push_eflags 0",
- "db 0x48",
- "pushfq",
- "[allocstack 8]",
- "%endmacro",
- "%imacro alloc_stack 1",
- "sub rsp, %1",
- "[allocstack %1]",
- "%endmacro",
- "%imacro save_reg 2",
- "mov [rsp+%2], %1",
- "[savereg %1 %2]",
- "%endmacro",
- "%imacro save_xmm128 2",
- "movdqa [rsp+%2], %1",
- "[savexmm128 %1 %2]",
- "%endmacro",
- "%imacro push_frame 0-1.nolist",
- "[pushframe %1]",
- "%endmacro",
- "%imacro set_frame 1-2",
- "%if %0==1",
- "mov %1, rsp",
- "%else",
- "lea %1, [rsp+%2]",
- "%endif",
- "[setframe %1 %2]",
- "%endmacro",
- "%imacro end_prolog 0.nolist",
- "[endprolog]",
- "%endmacro",
- "%imacro end_prologue 0.nolist",
- "[endprolog]",
- "%endmacro",
- NULL
-};
-
+/* This file auto-generated from standard.mac by genmacro.c - don't edit it */
+
+#include <stddef.h>
+
+static const char *win64_nasm_stdmac[] = {
+ "%imacro export 1+.nolist",
+ "[export %1]",
+ "%endmacro",
+ "%imacro proc_frame 1+.nolist",
+ "%1:",
+ "[proc_frame %1]",
+ "%endmacro",
+ "%imacro endproc_frame 0.nolist",
+ "[endproc_frame]",
+ "%endmacro",
+ "%imacro push_reg 1",
+ "push %1",
+ "[pushreg %1]",
+ "%endmacro",
+ "%imacro rex_push_reg 1",
+ "db 0x48",
+ "push %1",
+ "[pushreg %1]",
+ "%endmacro",
+ "%imacro push_eflags 0",
+ "pushfq",
+ "[allocstack 8]",
+ "%endmacro",
+ "%imacro rex_push_eflags 0",
+ "db 0x48",
+ "pushfq",
+ "[allocstack 8]",
+ "%endmacro",
+ "%imacro alloc_stack 1",
+ "sub rsp, %1",
+ "[allocstack %1]",
+ "%endmacro",
+ "%imacro save_reg 2",
+ "mov [rsp+%2], %1",
+ "[savereg %1 %2]",
+ "%endmacro",
+ "%imacro save_xmm128 2",
+ "movdqa [rsp+%2], %1",
+ "[savexmm128 %1 %2]",
+ "%endmacro",
+ "%imacro push_frame 0-1.nolist",
+ "[pushframe %1]",
+ "%endmacro",
+ "%imacro set_frame 1-2",
+ "%if %0==1",
+ "mov %1, rsp",
+ "%else",
+ "lea %1, [rsp+%2]",
+ "%endif",
+ "[setframe %1 %2]",
+ "%endmacro",
+ "%imacro end_prolog 0.nolist",
+ "[endprolog]",
+ "%endmacro",
+ "%imacro end_prologue 0.nolist",
+ "[endprolog]",
+ "%endmacro",
+ NULL
+};
+
diff --git a/contrib/tools/yasm/modules/x86cpu.c b/contrib/tools/yasm/modules/x86cpu.c
index 49d2bcd477..f1677a4382 100644
--- a/contrib/tools/yasm/modules/x86cpu.c
+++ b/contrib/tools/yasm/modules/x86cpu.c
@@ -1,481 +1,481 @@
-/* ANSI-C code produced by genperf */
-
-#include <util.h>
-
-#include <ctype.h>
-#include <libyasm.h>
-#include <libyasm/phash.h>
-
-#include "modules/arch/x86/x86arch.h"
-
-#define PROC_8086 0
-#define PROC_186 1
-#define PROC_286 2
-#define PROC_386 3
-#define PROC_486 4
-#define PROC_586 5
-#define PROC_686 6
-#define PROC_p2 7
-#define PROC_p3 8
-#define PROC_p4 9
-#define PROC_prescott 10
-#define PROC_conroe 11
-#define PROC_penryn 12
-#define PROC_nehalem 13
-#define PROC_westmere 14
-#define PROC_sandybridge 15
-#define PROC_ivybridge 16
-#define PROC_haswell 17
-#define PROC_broadwell 18
-#define PROC_skylake 19
-
-static void
-x86_cpu_intel(wordptr cpu, yasm_arch_x86 *arch_x86, unsigned int data)
-{
- BitVector_Empty(cpu);
-
- BitVector_Bit_On(cpu, CPU_Priv);
- if (data >= PROC_286)
- BitVector_Bit_On(cpu, CPU_Prot);
- if (data >= PROC_386)
- BitVector_Bit_On(cpu, CPU_SMM);
- if (data >= PROC_skylake) {
- BitVector_Bit_On(cpu, CPU_SHA);
- }
- if (data >= PROC_broadwell) {
- BitVector_Bit_On(cpu, CPU_RDSEED);
- BitVector_Bit_On(cpu, CPU_ADX);
- BitVector_Bit_On(cpu, CPU_PRFCHW);
- }
- if (data >= PROC_haswell) {
- BitVector_Bit_On(cpu, CPU_FMA);
- BitVector_Bit_On(cpu, CPU_AVX2);
- BitVector_Bit_On(cpu, CPU_BMI1);
- BitVector_Bit_On(cpu, CPU_BMI2);
- BitVector_Bit_On(cpu, CPU_INVPCID);
- BitVector_Bit_On(cpu, CPU_LZCNT);
- BitVector_Bit_On(cpu, CPU_TSX);
- BitVector_Bit_On(cpu, CPU_SMAP);
- }
- if (data >= PROC_ivybridge) {
- BitVector_Bit_On(cpu, CPU_F16C);
- BitVector_Bit_On(cpu, CPU_FSGSBASE);
- BitVector_Bit_On(cpu, CPU_RDRAND);
- }
- if (data >= PROC_sandybridge) {
- BitVector_Bit_On(cpu, CPU_AVX);
- BitVector_Bit_On(cpu, CPU_XSAVEOPT);
- BitVector_Bit_On(cpu, CPU_EPTVPID);
- BitVector_Bit_On(cpu, CPU_SMX);
- }
- if (data >= PROC_westmere) {
- BitVector_Bit_On(cpu, CPU_AES);
- BitVector_Bit_On(cpu, CPU_CLMUL);
- }
- if (data >= PROC_nehalem) {
- BitVector_Bit_On(cpu, CPU_SSE42);
- BitVector_Bit_On(cpu, CPU_XSAVE);
- }
- if (data >= PROC_penryn)
- BitVector_Bit_On(cpu, CPU_SSE41);
- if (data >= PROC_conroe)
- BitVector_Bit_On(cpu, CPU_SSSE3);
- if (data >= PROC_prescott)
- BitVector_Bit_On(cpu, CPU_SSE3);
- if (data >= PROC_p4)
- BitVector_Bit_On(cpu, CPU_SSE2);
- if (data >= PROC_p3)
- BitVector_Bit_On(cpu, CPU_SSE);
- if (data >= PROC_p2)
- BitVector_Bit_On(cpu, CPU_MMX);
- if (data >= PROC_486)
- BitVector_Bit_On(cpu, CPU_FPU);
- if (data >= PROC_prescott)
- BitVector_Bit_On(cpu, CPU_EM64T);
-
- if (data >= PROC_p4)
- BitVector_Bit_On(cpu, CPU_P4);
- if (data >= PROC_p3)
- BitVector_Bit_On(cpu, CPU_P3);
- if (data >= PROC_686)
- BitVector_Bit_On(cpu, CPU_686);
- if (data >= PROC_586)
- BitVector_Bit_On(cpu, CPU_586);
- if (data >= PROC_486)
- BitVector_Bit_On(cpu, CPU_486);
- if (data >= PROC_386)
- BitVector_Bit_On(cpu, CPU_386);
- if (data >= PROC_286)
- BitVector_Bit_On(cpu, CPU_286);
- if (data >= PROC_186)
- BitVector_Bit_On(cpu, CPU_186);
- BitVector_Bit_On(cpu, CPU_086);
-
- /* Use Intel long NOPs if 686 or better */
- if (data >= PROC_686)
- arch_x86->nop = X86_NOP_INTEL;
- else
- arch_x86->nop = X86_NOP_BASIC;
-}
-
-static void
-x86_cpu_ia64(wordptr cpu, yasm_arch_x86 *arch_x86, unsigned int data)
-{
- BitVector_Empty(cpu);
- BitVector_Bit_On(cpu, CPU_Priv);
- BitVector_Bit_On(cpu, CPU_Prot);
- BitVector_Bit_On(cpu, CPU_SMM);
- BitVector_Bit_On(cpu, CPU_SSE2);
- BitVector_Bit_On(cpu, CPU_SSE);
- BitVector_Bit_On(cpu, CPU_MMX);
- BitVector_Bit_On(cpu, CPU_FPU);
- BitVector_Bit_On(cpu, CPU_IA64);
- BitVector_Bit_On(cpu, CPU_P4);
- BitVector_Bit_On(cpu, CPU_P3);
- BitVector_Bit_On(cpu, CPU_686);
- BitVector_Bit_On(cpu, CPU_586);
- BitVector_Bit_On(cpu, CPU_486);
- BitVector_Bit_On(cpu, CPU_386);
- BitVector_Bit_On(cpu, CPU_286);
- BitVector_Bit_On(cpu, CPU_186);
- BitVector_Bit_On(cpu, CPU_086);
-}
-
-#define PROC_bulldozer 11
-#define PROC_k10 10
-#define PROC_venice 9
-#define PROC_hammer 8
-#define PROC_k7 7
-#define PROC_k6 6
-
-static void
-x86_cpu_amd(wordptr cpu, yasm_arch_x86 *arch_x86, unsigned int data)
-{
- BitVector_Empty(cpu);
-
- BitVector_Bit_On(cpu, CPU_Priv);
- BitVector_Bit_On(cpu, CPU_Prot);
- BitVector_Bit_On(cpu, CPU_SMM);
- BitVector_Bit_On(cpu, CPU_3DNow);
- if (data >= PROC_bulldozer) {
- BitVector_Bit_On(cpu, CPU_XOP);
- BitVector_Bit_On(cpu, CPU_FMA4);
- }
- if (data >= PROC_k10)
- BitVector_Bit_On(cpu, CPU_SSE4a);
- if (data >= PROC_venice)
- BitVector_Bit_On(cpu, CPU_SSE3);
- if (data >= PROC_hammer)
- BitVector_Bit_On(cpu, CPU_SSE2);
- if (data >= PROC_k7)
- BitVector_Bit_On(cpu, CPU_SSE);
- if (data >= PROC_k6)
- BitVector_Bit_On(cpu, CPU_MMX);
- BitVector_Bit_On(cpu, CPU_FPU);
-
- if (data >= PROC_hammer)
- BitVector_Bit_On(cpu, CPU_Hammer);
- if (data >= PROC_k7)
- BitVector_Bit_On(cpu, CPU_Athlon);
- if (data >= PROC_k6)
- BitVector_Bit_On(cpu, CPU_K6);
- BitVector_Bit_On(cpu, CPU_686);
- BitVector_Bit_On(cpu, CPU_586);
- BitVector_Bit_On(cpu, CPU_486);
- BitVector_Bit_On(cpu, CPU_386);
- BitVector_Bit_On(cpu, CPU_286);
- BitVector_Bit_On(cpu, CPU_186);
- BitVector_Bit_On(cpu, CPU_086);
-
- /* Use AMD long NOPs if k6 or better */
- if (data >= PROC_k6)
- arch_x86->nop = X86_NOP_AMD;
- else
- arch_x86->nop = X86_NOP_BASIC;
-}
-
-static void
-x86_cpu_set(wordptr cpu, yasm_arch_x86 *arch_x86, unsigned int data)
-{
- BitVector_Bit_On(cpu, data);
-}
-
-static void
-x86_cpu_clear(wordptr cpu, yasm_arch_x86 *arch_x86, unsigned int data)
-{
- BitVector_Bit_Off(cpu, data);
-}
-
-static void
-x86_cpu_set_sse4(wordptr cpu, yasm_arch_x86 *arch_x86, unsigned int data)
-{
- BitVector_Bit_On(cpu, CPU_SSE41);
- BitVector_Bit_On(cpu, CPU_SSE42);
-}
-
-static void
-x86_cpu_clear_sse4(wordptr cpu, yasm_arch_x86 *arch_x86, unsigned int data)
-{
- BitVector_Bit_Off(cpu, CPU_SSE41);
- BitVector_Bit_Off(cpu, CPU_SSE42);
-}
-
-static void
-x86_nop(wordptr cpu, yasm_arch_x86 *arch_x86, unsigned int data)
-{
- arch_x86->nop = data;
-}
-
-struct cpu_parse_data {
- const char *name;
- void (*handler) (wordptr cpu, yasm_arch_x86 *arch_x86, unsigned int data);
- unsigned int data;
-};
-static const struct cpu_parse_data *
-cpu_find(const char *key, size_t len)
-{
- static const struct cpu_parse_data pd[179] = {
- {"noeptvpid", x86_cpu_clear, CPU_EPTVPID},
- {"amd", x86_cpu_set, CPU_AMD},
- {"sse41", x86_cpu_set, CPU_SSE41},
- {"pentium", x86_cpu_intel, PROC_586},
- {"intelnop", x86_nop, X86_NOP_INTEL},
- {"pclmulqdq", x86_cpu_set, CPU_CLMUL},
- {"sse42", x86_cpu_set, CPU_SSE42},
- {"nobmi2", x86_cpu_clear, CPU_BMI2},
- {"pentium3", x86_cpu_intel, PROC_p3},
- {"broadwell", x86_cpu_intel, PROC_broadwell},
- {"aes", x86_cpu_set, CPU_AES},
- {"eptvpid", x86_cpu_set, CPU_EPTVPID},
- {"f16c", x86_cpu_set, CPU_F16C},
- {"amdnop", x86_nop, X86_NOP_AMD},
- {"pentium-2", x86_cpu_intel, PROC_p2},
- {"nofpu", x86_cpu_clear, CPU_FPU},
- {"bmi2", x86_cpu_set, CPU_BMI2},
- {"katmai", x86_cpu_intel, PROC_p3},
- {"pentiumiii", x86_cpu_intel, PROC_p3},
- {"fpu", x86_cpu_set, CPU_FPU},
- {"noundoc", x86_cpu_clear, CPU_Undoc},
- {"no3dnow", x86_cpu_clear, CPU_3DNow},
- {"i486", x86_cpu_intel, PROC_486},
- {"noundocumented", x86_cpu_clear, CPU_Undoc},
- {"sse", x86_cpu_set, CPU_SSE},
- {"nossse3", x86_cpu_clear, CPU_SSSE3},
- {"noclmul", x86_cpu_clear, CPU_CLMUL},
- {"tsx", x86_cpu_set, CPU_TSX},
- {"nocyrix", x86_cpu_clear, CPU_Cyrix},
- {"nosse", x86_cpu_clear, CPU_SSE},
- {"nofma", x86_cpu_clear, CPU_FMA},
- {"phenom", x86_cpu_amd, PROC_k10},
- {"haswell", x86_cpu_intel, PROC_haswell},
- {"noprot", x86_cpu_clear, CPU_Prot},
- {"padlock", x86_cpu_set, CPU_PadLock},
- {"nopclmulqdq", x86_cpu_clear, CPU_CLMUL},
- {"nofma4", x86_cpu_clear, CPU_FMA4},
- {"nofsgsbase", x86_cpu_clear, CPU_FSGSBASE},
- {"prot", x86_cpu_set, CPU_Prot},
- {"opteron", x86_cpu_amd, PROC_hammer},
- {"nof16c", x86_cpu_clear, CPU_F16C},
- {"i386", x86_cpu_intel, PROC_386},
- {"ssse3", x86_cpu_set, CPU_SSSE3},
- {"protected", x86_cpu_set, CPU_Prot},
- {"bulldozer", x86_cpu_amd, PROC_bulldozer},
- {"lzcnt", x86_cpu_set, CPU_LZCNT},
- {"obs", x86_cpu_set, CPU_Obs},
- {"noprotected", x86_cpu_clear, CPU_Prot},
- {"athlon-64", x86_cpu_amd, PROC_hammer},
- {"undocumented", x86_cpu_set, CPU_Undoc},
- {"i686", x86_cpu_intel, PROC_686},
- {"k8", x86_cpu_amd, PROC_hammer},
- {"k10", x86_cpu_amd, PROC_k10},
- {"noavx2", x86_cpu_clear, CPU_AVX2},
- {"sandybridge", x86_cpu_intel, PROC_sandybridge},
- {"nommx", x86_cpu_clear, CPU_MMX},
- {"priv", x86_cpu_set, CPU_Priv},
- {"sse4.1", x86_cpu_set, CPU_SSE41},
- {"8086", x86_cpu_intel, PROC_8086},
- {"noprivileged", x86_cpu_clear, CPU_Priv},
- {"i586", x86_cpu_intel, PROC_586},
- {"ia-64", x86_cpu_ia64, 0},
- {"nosse2", x86_cpu_clear, CPU_SSE2},
- {"obsolete", x86_cpu_set, CPU_Obs},
- {"186", x86_cpu_intel, PROC_186},
- {"sse4a", x86_cpu_set, CPU_SSE4a},
- {"ia64", x86_cpu_ia64, 0},
- {"core2", x86_cpu_intel, PROC_conroe},
- {"noxsaveopt", x86_cpu_clear, CPU_XSAVEOPT},
- {"sse4.2", x86_cpu_set, CPU_SSE42},
- {"prescott", x86_cpu_intel, PROC_prescott},
- {"avx2", x86_cpu_set, CPU_AVX2},
- {"80186", x86_cpu_intel, PROC_186},
- {"nopriv", x86_cpu_clear, CPU_Priv},
- {"nosse4.1", x86_cpu_clear, CPU_SSE41},
- {"nordseed", x86_cpu_clear, CPU_RDSEED},
- {"pentium2", x86_cpu_intel, PROC_p2},
- {"conroe", x86_cpu_intel, PROC_conroe},
- {"nosse42", x86_cpu_clear, CPU_SSE42},
- {"pentium-ii", x86_cpu_intel, PROC_p2},
- {"svm", x86_cpu_set, CPU_SVM},
- {"386", x86_cpu_intel, PROC_386},
- {"em64t", x86_cpu_set, CPU_EM64T},
- {"p2", x86_cpu_intel, PROC_p2},
- {"athlon64", x86_cpu_amd, PROC_hammer},
- {"3dnow", x86_cpu_set, CPU_3DNow},
- {"nosse4", x86_cpu_clear_sse4, 0},
- {"nosmx", x86_cpu_clear, CPU_SMX},
- {"williamette", x86_cpu_intel, PROC_p4},
- {"family10h", x86_cpu_amd, PROC_k10},
- {"athlon", x86_cpu_amd, PROC_k7},
- {"586", x86_cpu_intel, PROC_586},
- {"686", x86_cpu_intel, PROC_686},
- {"smm", x86_cpu_set, CPU_SMM},
- {"xsave", x86_cpu_set, CPU_XSAVE},
- {"privileged", x86_cpu_set, CPU_Priv},
- {"p6", x86_cpu_intel, PROC_686},
- {"smap", x86_cpu_set, CPU_SMAP},
- {"avx", x86_cpu_set, CPU_AVX},
- {"pentium-4", x86_cpu_intel, PROC_p4},
- {"pentiumii", x86_cpu_intel, PROC_p2},
- {"sha", x86_cpu_set, CPU_SHA},
- {"fma4", x86_cpu_set, CPU_FMA4},
- {"pentium-iii", x86_cpu_intel, PROC_p3},
- {"skylake", x86_cpu_intel, PROC_skylake},
- {"nosse4.2", x86_cpu_clear, CPU_SSE42},
- {"pentium4", x86_cpu_intel, PROC_p4},
- {"noaes", x86_cpu_clear, CPU_AES},
- {"i186", x86_cpu_intel, PROC_186},
- {"rdrand", x86_cpu_set, CPU_RDRAND},
- {"80286", x86_cpu_intel, PROC_286},
- {"pentiumiv", x86_cpu_intel, PROC_p4},
- {"xop", x86_cpu_set, CPU_XOP},
- {"mmx", x86_cpu_set, CPU_MMX},
- {"486", x86_cpu_intel, PROC_486},
- {"clawhammer", x86_cpu_amd, PROC_hammer},
- {"rdseed", x86_cpu_set, CPU_RDSEED},
- {"i286", x86_cpu_intel, PROC_286},
- {"prfchw", x86_cpu_set, CPU_PRFCHW},
- {"nosse3", x86_cpu_clear, CPU_SSE3},
- {"sse4", x86_cpu_set_sse4, 0},
- {"pentium-iv", x86_cpu_intel, PROC_p4},
- {"p4", x86_cpu_intel, PROC_p4},
- {"nordrand", x86_cpu_clear, CPU_RDRAND},
- {"ppro", x86_cpu_intel, PROC_686},
- {"p5", x86_cpu_intel, PROC_586},
- {"notbm", x86_cpu_clear, CPU_TBM},
- {"cyrix", x86_cpu_set, CPU_Cyrix},
- {"80386", x86_cpu_intel, PROC_386},
- {"k6", x86_cpu_amd, PROC_k6},
- {"basicnop", x86_nop, X86_NOP_BASIC},
- {"nomovbe", x86_cpu_clear, CPU_MOVBE},
- {"noadx", x86_cpu_clear, CPU_ADX},
- {"nosmap", x86_cpu_clear, CPU_SMAP},
- {"nosmm", x86_cpu_clear, CPU_SMM},
- {"xsaveopt", x86_cpu_set, CPU_XSAVEOPT},
- {"pentium-3", x86_cpu_intel, PROC_p3},
- {"nosvm", x86_cpu_clear, CPU_SVM},
- {"nosha", x86_cpu_clear, CPU_SHA},
- {"invpcid", x86_cpu_set, CPU_INVPCID},
- {"nobmi1", x86_cpu_clear, CPU_BMI1},
- {"ivybridge", x86_cpu_intel, PROC_ivybridge},
- {"p3", x86_cpu_intel, PROC_p3},
- {"pentiumpro", x86_cpu_intel, PROC_686},
- {"penryn", x86_cpu_intel, PROC_penryn},
- {"80486", x86_cpu_intel, PROC_486},
- {"noxop", x86_cpu_clear, CPU_XOP},
- {"undoc", x86_cpu_set, CPU_Undoc},
- {"noobsolete", x86_cpu_clear, CPU_Obs},
- {"noavx", x86_cpu_clear, CPU_AVX},
- {"nolzcnt", x86_cpu_clear, CPU_LZCNT},
- {"noprfchw", x86_cpu_clear, CPU_PRFCHW},
- {"notsx", x86_cpu_clear, CPU_TSX},
- {"bmi1", x86_cpu_set, CPU_BMI1},
- {"itanium", x86_cpu_ia64, 0},
- {"venice", x86_cpu_amd, PROC_venice},
- {"noxsave", x86_cpu_clear, CPU_XSAVE},
- {"noamd", x86_cpu_clear, CPU_AMD},
- {"noobs", x86_cpu_clear, CPU_Obs},
- {"noem64t", x86_cpu_clear, CPU_EM64T},
- {"hammer", x86_cpu_amd, PROC_hammer},
- {"nehalem", x86_cpu_intel, PROC_nehalem},
- {"sse3", x86_cpu_set, CPU_SSE3},
- {"sse2", x86_cpu_set, CPU_SSE2},
- {"clmul", x86_cpu_set, CPU_CLMUL},
- {"smx", x86_cpu_set, CPU_SMX},
- {"nosse4a", x86_cpu_clear, CPU_SSE4a},
- {"tbm", x86_cpu_set, CPU_TBM},
- {"fma", x86_cpu_set, CPU_FMA},
- {"nopadlock", x86_cpu_clear, CPU_PadLock},
- {"nosse41", x86_cpu_clear, CPU_SSE41},
- {"adx", x86_cpu_set, CPU_ADX},
- {"westmere", x86_cpu_intel, PROC_westmere},
- {"k7", x86_cpu_amd, PROC_k7},
- {"noinvpcid", x86_cpu_clear, CPU_INVPCID},
- {"fsgsbase", x86_cpu_set, CPU_FSGSBASE},
- {"corei7", x86_cpu_intel, PROC_nehalem},
- {"movbe", x86_cpu_set, CPU_MOVBE},
- {"286", x86_cpu_intel, PROC_286}
- };
- static const unsigned char tab[] = {
- 183,125,113,40,125,0,0,0,183,146,116,85,0,113,113,183,
- 113,131,0,82,88,0,131,125,85,0,113,0,0,7,0,40,
- 22,7,0,0,125,220,87,183,184,7,0,0,0,113,11,0,
- 84,0,0,0,0,131,0,113,0,120,0,113,0,0,51,11,
- 55,190,0,0,183,61,120,131,85,135,0,0,0,0,0,82,
- 74,183,0,87,220,0,235,0,220,229,0,0,220,243,124,145,
- 0,220,131,0,221,0,0,0,237,0,135,125,124,168,0,69,
- 0,124,22,0,131,131,163,113,184,214,155,133,55,0,0,0,
- };
-
- const struct cpu_parse_data *ret;
- unsigned long rsl, val = phash_lookup(key, len, 0xdaa66d2bUL);
- rsl = ((val>>25)^tab[val&0x7f]);
- if (rsl >= 179) return NULL;
- ret = &pd[rsl];
- if (strcmp(key, ret->name) != 0) return NULL;
- return ret;
-}
-
-
-
-void
-yasm_x86__parse_cpu(yasm_arch_x86 *arch_x86, const char *cpuid,
- size_t cpuid_len)
-{
- /*@null@*/ const struct cpu_parse_data *pdata;
- wordptr new_cpu;
- size_t i;
- static char lcaseid[16];
-
- if (cpuid_len > 15)
- return;
- for (i=0; i<cpuid_len; i++)
- lcaseid[i] = tolower(cpuid[i]);
- lcaseid[cpuid_len] = '\0';
-
- pdata = cpu_find(lcaseid, cpuid_len);
- if (!pdata) {
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("unrecognized CPU identifier `%s'"), cpuid);
- return;
- }
-
- new_cpu = BitVector_Clone(arch_x86->cpu_enables[arch_x86->active_cpu]);
- pdata->handler(new_cpu, arch_x86, pdata->data);
-
- /* try to find an existing match in the CPU table first */
- for (i=0; i<arch_x86->cpu_enables_size; i++) {
- if (BitVector_equal(arch_x86->cpu_enables[i], new_cpu)) {
- arch_x86->active_cpu = i;
- BitVector_Destroy(new_cpu);
- return;
- }
- }
-
- /* not found, need to add a new entry */
- arch_x86->active_cpu = arch_x86->cpu_enables_size++;
- arch_x86->cpu_enables =
- yasm_xrealloc(arch_x86->cpu_enables,
- arch_x86->cpu_enables_size*sizeof(wordptr));
- arch_x86->cpu_enables[arch_x86->active_cpu] = new_cpu;
-}
-
+/* ANSI-C code produced by genperf */
+
+#include <util.h>
+
+#include <ctype.h>
+#include <libyasm.h>
+#include <libyasm/phash.h>
+
+#include "modules/arch/x86/x86arch.h"
+
+#define PROC_8086 0
+#define PROC_186 1
+#define PROC_286 2
+#define PROC_386 3
+#define PROC_486 4
+#define PROC_586 5
+#define PROC_686 6
+#define PROC_p2 7
+#define PROC_p3 8
+#define PROC_p4 9
+#define PROC_prescott 10
+#define PROC_conroe 11
+#define PROC_penryn 12
+#define PROC_nehalem 13
+#define PROC_westmere 14
+#define PROC_sandybridge 15
+#define PROC_ivybridge 16
+#define PROC_haswell 17
+#define PROC_broadwell 18
+#define PROC_skylake 19
+
+static void
+x86_cpu_intel(wordptr cpu, yasm_arch_x86 *arch_x86, unsigned int data)
+{
+ BitVector_Empty(cpu);
+
+ BitVector_Bit_On(cpu, CPU_Priv);
+ if (data >= PROC_286)
+ BitVector_Bit_On(cpu, CPU_Prot);
+ if (data >= PROC_386)
+ BitVector_Bit_On(cpu, CPU_SMM);
+ if (data >= PROC_skylake) {
+ BitVector_Bit_On(cpu, CPU_SHA);
+ }
+ if (data >= PROC_broadwell) {
+ BitVector_Bit_On(cpu, CPU_RDSEED);
+ BitVector_Bit_On(cpu, CPU_ADX);
+ BitVector_Bit_On(cpu, CPU_PRFCHW);
+ }
+ if (data >= PROC_haswell) {
+ BitVector_Bit_On(cpu, CPU_FMA);
+ BitVector_Bit_On(cpu, CPU_AVX2);
+ BitVector_Bit_On(cpu, CPU_BMI1);
+ BitVector_Bit_On(cpu, CPU_BMI2);
+ BitVector_Bit_On(cpu, CPU_INVPCID);
+ BitVector_Bit_On(cpu, CPU_LZCNT);
+ BitVector_Bit_On(cpu, CPU_TSX);
+ BitVector_Bit_On(cpu, CPU_SMAP);
+ }
+ if (data >= PROC_ivybridge) {
+ BitVector_Bit_On(cpu, CPU_F16C);
+ BitVector_Bit_On(cpu, CPU_FSGSBASE);
+ BitVector_Bit_On(cpu, CPU_RDRAND);
+ }
+ if (data >= PROC_sandybridge) {
+ BitVector_Bit_On(cpu, CPU_AVX);
+ BitVector_Bit_On(cpu, CPU_XSAVEOPT);
+ BitVector_Bit_On(cpu, CPU_EPTVPID);
+ BitVector_Bit_On(cpu, CPU_SMX);
+ }
+ if (data >= PROC_westmere) {
+ BitVector_Bit_On(cpu, CPU_AES);
+ BitVector_Bit_On(cpu, CPU_CLMUL);
+ }
+ if (data >= PROC_nehalem) {
+ BitVector_Bit_On(cpu, CPU_SSE42);
+ BitVector_Bit_On(cpu, CPU_XSAVE);
+ }
+ if (data >= PROC_penryn)
+ BitVector_Bit_On(cpu, CPU_SSE41);
+ if (data >= PROC_conroe)
+ BitVector_Bit_On(cpu, CPU_SSSE3);
+ if (data >= PROC_prescott)
+ BitVector_Bit_On(cpu, CPU_SSE3);
+ if (data >= PROC_p4)
+ BitVector_Bit_On(cpu, CPU_SSE2);
+ if (data >= PROC_p3)
+ BitVector_Bit_On(cpu, CPU_SSE);
+ if (data >= PROC_p2)
+ BitVector_Bit_On(cpu, CPU_MMX);
+ if (data >= PROC_486)
+ BitVector_Bit_On(cpu, CPU_FPU);
+ if (data >= PROC_prescott)
+ BitVector_Bit_On(cpu, CPU_EM64T);
+
+ if (data >= PROC_p4)
+ BitVector_Bit_On(cpu, CPU_P4);
+ if (data >= PROC_p3)
+ BitVector_Bit_On(cpu, CPU_P3);
+ if (data >= PROC_686)
+ BitVector_Bit_On(cpu, CPU_686);
+ if (data >= PROC_586)
+ BitVector_Bit_On(cpu, CPU_586);
+ if (data >= PROC_486)
+ BitVector_Bit_On(cpu, CPU_486);
+ if (data >= PROC_386)
+ BitVector_Bit_On(cpu, CPU_386);
+ if (data >= PROC_286)
+ BitVector_Bit_On(cpu, CPU_286);
+ if (data >= PROC_186)
+ BitVector_Bit_On(cpu, CPU_186);
+ BitVector_Bit_On(cpu, CPU_086);
+
+ /* Use Intel long NOPs if 686 or better */
+ if (data >= PROC_686)
+ arch_x86->nop = X86_NOP_INTEL;
+ else
+ arch_x86->nop = X86_NOP_BASIC;
+}
+
+static void
+x86_cpu_ia64(wordptr cpu, yasm_arch_x86 *arch_x86, unsigned int data)
+{
+ BitVector_Empty(cpu);
+ BitVector_Bit_On(cpu, CPU_Priv);
+ BitVector_Bit_On(cpu, CPU_Prot);
+ BitVector_Bit_On(cpu, CPU_SMM);
+ BitVector_Bit_On(cpu, CPU_SSE2);
+ BitVector_Bit_On(cpu, CPU_SSE);
+ BitVector_Bit_On(cpu, CPU_MMX);
+ BitVector_Bit_On(cpu, CPU_FPU);
+ BitVector_Bit_On(cpu, CPU_IA64);
+ BitVector_Bit_On(cpu, CPU_P4);
+ BitVector_Bit_On(cpu, CPU_P3);
+ BitVector_Bit_On(cpu, CPU_686);
+ BitVector_Bit_On(cpu, CPU_586);
+ BitVector_Bit_On(cpu, CPU_486);
+ BitVector_Bit_On(cpu, CPU_386);
+ BitVector_Bit_On(cpu, CPU_286);
+ BitVector_Bit_On(cpu, CPU_186);
+ BitVector_Bit_On(cpu, CPU_086);
+}
+
+#define PROC_bulldozer 11
+#define PROC_k10 10
+#define PROC_venice 9
+#define PROC_hammer 8
+#define PROC_k7 7
+#define PROC_k6 6
+
+static void
+x86_cpu_amd(wordptr cpu, yasm_arch_x86 *arch_x86, unsigned int data)
+{
+ BitVector_Empty(cpu);
+
+ BitVector_Bit_On(cpu, CPU_Priv);
+ BitVector_Bit_On(cpu, CPU_Prot);
+ BitVector_Bit_On(cpu, CPU_SMM);
+ BitVector_Bit_On(cpu, CPU_3DNow);
+ if (data >= PROC_bulldozer) {
+ BitVector_Bit_On(cpu, CPU_XOP);
+ BitVector_Bit_On(cpu, CPU_FMA4);
+ }
+ if (data >= PROC_k10)
+ BitVector_Bit_On(cpu, CPU_SSE4a);
+ if (data >= PROC_venice)
+ BitVector_Bit_On(cpu, CPU_SSE3);
+ if (data >= PROC_hammer)
+ BitVector_Bit_On(cpu, CPU_SSE2);
+ if (data >= PROC_k7)
+ BitVector_Bit_On(cpu, CPU_SSE);
+ if (data >= PROC_k6)
+ BitVector_Bit_On(cpu, CPU_MMX);
+ BitVector_Bit_On(cpu, CPU_FPU);
+
+ if (data >= PROC_hammer)
+ BitVector_Bit_On(cpu, CPU_Hammer);
+ if (data >= PROC_k7)
+ BitVector_Bit_On(cpu, CPU_Athlon);
+ if (data >= PROC_k6)
+ BitVector_Bit_On(cpu, CPU_K6);
+ BitVector_Bit_On(cpu, CPU_686);
+ BitVector_Bit_On(cpu, CPU_586);
+ BitVector_Bit_On(cpu, CPU_486);
+ BitVector_Bit_On(cpu, CPU_386);
+ BitVector_Bit_On(cpu, CPU_286);
+ BitVector_Bit_On(cpu, CPU_186);
+ BitVector_Bit_On(cpu, CPU_086);
+
+ /* Use AMD long NOPs if k6 or better */
+ if (data >= PROC_k6)
+ arch_x86->nop = X86_NOP_AMD;
+ else
+ arch_x86->nop = X86_NOP_BASIC;
+}
+
+static void
+x86_cpu_set(wordptr cpu, yasm_arch_x86 *arch_x86, unsigned int data)
+{
+ BitVector_Bit_On(cpu, data);
+}
+
+static void
+x86_cpu_clear(wordptr cpu, yasm_arch_x86 *arch_x86, unsigned int data)
+{
+ BitVector_Bit_Off(cpu, data);
+}
+
+static void
+x86_cpu_set_sse4(wordptr cpu, yasm_arch_x86 *arch_x86, unsigned int data)
+{
+ BitVector_Bit_On(cpu, CPU_SSE41);
+ BitVector_Bit_On(cpu, CPU_SSE42);
+}
+
+static void
+x86_cpu_clear_sse4(wordptr cpu, yasm_arch_x86 *arch_x86, unsigned int data)
+{
+ BitVector_Bit_Off(cpu, CPU_SSE41);
+ BitVector_Bit_Off(cpu, CPU_SSE42);
+}
+
+static void
+x86_nop(wordptr cpu, yasm_arch_x86 *arch_x86, unsigned int data)
+{
+ arch_x86->nop = data;
+}
+
+struct cpu_parse_data {
+ const char *name;
+ void (*handler) (wordptr cpu, yasm_arch_x86 *arch_x86, unsigned int data);
+ unsigned int data;
+};
+static const struct cpu_parse_data *
+cpu_find(const char *key, size_t len)
+{
+ static const struct cpu_parse_data pd[179] = {
+ {"noeptvpid", x86_cpu_clear, CPU_EPTVPID},
+ {"amd", x86_cpu_set, CPU_AMD},
+ {"sse41", x86_cpu_set, CPU_SSE41},
+ {"pentium", x86_cpu_intel, PROC_586},
+ {"intelnop", x86_nop, X86_NOP_INTEL},
+ {"pclmulqdq", x86_cpu_set, CPU_CLMUL},
+ {"sse42", x86_cpu_set, CPU_SSE42},
+ {"nobmi2", x86_cpu_clear, CPU_BMI2},
+ {"pentium3", x86_cpu_intel, PROC_p3},
+ {"broadwell", x86_cpu_intel, PROC_broadwell},
+ {"aes", x86_cpu_set, CPU_AES},
+ {"eptvpid", x86_cpu_set, CPU_EPTVPID},
+ {"f16c", x86_cpu_set, CPU_F16C},
+ {"amdnop", x86_nop, X86_NOP_AMD},
+ {"pentium-2", x86_cpu_intel, PROC_p2},
+ {"nofpu", x86_cpu_clear, CPU_FPU},
+ {"bmi2", x86_cpu_set, CPU_BMI2},
+ {"katmai", x86_cpu_intel, PROC_p3},
+ {"pentiumiii", x86_cpu_intel, PROC_p3},
+ {"fpu", x86_cpu_set, CPU_FPU},
+ {"noundoc", x86_cpu_clear, CPU_Undoc},
+ {"no3dnow", x86_cpu_clear, CPU_3DNow},
+ {"i486", x86_cpu_intel, PROC_486},
+ {"noundocumented", x86_cpu_clear, CPU_Undoc},
+ {"sse", x86_cpu_set, CPU_SSE},
+ {"nossse3", x86_cpu_clear, CPU_SSSE3},
+ {"noclmul", x86_cpu_clear, CPU_CLMUL},
+ {"tsx", x86_cpu_set, CPU_TSX},
+ {"nocyrix", x86_cpu_clear, CPU_Cyrix},
+ {"nosse", x86_cpu_clear, CPU_SSE},
+ {"nofma", x86_cpu_clear, CPU_FMA},
+ {"phenom", x86_cpu_amd, PROC_k10},
+ {"haswell", x86_cpu_intel, PROC_haswell},
+ {"noprot", x86_cpu_clear, CPU_Prot},
+ {"padlock", x86_cpu_set, CPU_PadLock},
+ {"nopclmulqdq", x86_cpu_clear, CPU_CLMUL},
+ {"nofma4", x86_cpu_clear, CPU_FMA4},
+ {"nofsgsbase", x86_cpu_clear, CPU_FSGSBASE},
+ {"prot", x86_cpu_set, CPU_Prot},
+ {"opteron", x86_cpu_amd, PROC_hammer},
+ {"nof16c", x86_cpu_clear, CPU_F16C},
+ {"i386", x86_cpu_intel, PROC_386},
+ {"ssse3", x86_cpu_set, CPU_SSSE3},
+ {"protected", x86_cpu_set, CPU_Prot},
+ {"bulldozer", x86_cpu_amd, PROC_bulldozer},
+ {"lzcnt", x86_cpu_set, CPU_LZCNT},
+ {"obs", x86_cpu_set, CPU_Obs},
+ {"noprotected", x86_cpu_clear, CPU_Prot},
+ {"athlon-64", x86_cpu_amd, PROC_hammer},
+ {"undocumented", x86_cpu_set, CPU_Undoc},
+ {"i686", x86_cpu_intel, PROC_686},
+ {"k8", x86_cpu_amd, PROC_hammer},
+ {"k10", x86_cpu_amd, PROC_k10},
+ {"noavx2", x86_cpu_clear, CPU_AVX2},
+ {"sandybridge", x86_cpu_intel, PROC_sandybridge},
+ {"nommx", x86_cpu_clear, CPU_MMX},
+ {"priv", x86_cpu_set, CPU_Priv},
+ {"sse4.1", x86_cpu_set, CPU_SSE41},
+ {"8086", x86_cpu_intel, PROC_8086},
+ {"noprivileged", x86_cpu_clear, CPU_Priv},
+ {"i586", x86_cpu_intel, PROC_586},
+ {"ia-64", x86_cpu_ia64, 0},
+ {"nosse2", x86_cpu_clear, CPU_SSE2},
+ {"obsolete", x86_cpu_set, CPU_Obs},
+ {"186", x86_cpu_intel, PROC_186},
+ {"sse4a", x86_cpu_set, CPU_SSE4a},
+ {"ia64", x86_cpu_ia64, 0},
+ {"core2", x86_cpu_intel, PROC_conroe},
+ {"noxsaveopt", x86_cpu_clear, CPU_XSAVEOPT},
+ {"sse4.2", x86_cpu_set, CPU_SSE42},
+ {"prescott", x86_cpu_intel, PROC_prescott},
+ {"avx2", x86_cpu_set, CPU_AVX2},
+ {"80186", x86_cpu_intel, PROC_186},
+ {"nopriv", x86_cpu_clear, CPU_Priv},
+ {"nosse4.1", x86_cpu_clear, CPU_SSE41},
+ {"nordseed", x86_cpu_clear, CPU_RDSEED},
+ {"pentium2", x86_cpu_intel, PROC_p2},
+ {"conroe", x86_cpu_intel, PROC_conroe},
+ {"nosse42", x86_cpu_clear, CPU_SSE42},
+ {"pentium-ii", x86_cpu_intel, PROC_p2},
+ {"svm", x86_cpu_set, CPU_SVM},
+ {"386", x86_cpu_intel, PROC_386},
+ {"em64t", x86_cpu_set, CPU_EM64T},
+ {"p2", x86_cpu_intel, PROC_p2},
+ {"athlon64", x86_cpu_amd, PROC_hammer},
+ {"3dnow", x86_cpu_set, CPU_3DNow},
+ {"nosse4", x86_cpu_clear_sse4, 0},
+ {"nosmx", x86_cpu_clear, CPU_SMX},
+ {"williamette", x86_cpu_intel, PROC_p4},
+ {"family10h", x86_cpu_amd, PROC_k10},
+ {"athlon", x86_cpu_amd, PROC_k7},
+ {"586", x86_cpu_intel, PROC_586},
+ {"686", x86_cpu_intel, PROC_686},
+ {"smm", x86_cpu_set, CPU_SMM},
+ {"xsave", x86_cpu_set, CPU_XSAVE},
+ {"privileged", x86_cpu_set, CPU_Priv},
+ {"p6", x86_cpu_intel, PROC_686},
+ {"smap", x86_cpu_set, CPU_SMAP},
+ {"avx", x86_cpu_set, CPU_AVX},
+ {"pentium-4", x86_cpu_intel, PROC_p4},
+ {"pentiumii", x86_cpu_intel, PROC_p2},
+ {"sha", x86_cpu_set, CPU_SHA},
+ {"fma4", x86_cpu_set, CPU_FMA4},
+ {"pentium-iii", x86_cpu_intel, PROC_p3},
+ {"skylake", x86_cpu_intel, PROC_skylake},
+ {"nosse4.2", x86_cpu_clear, CPU_SSE42},
+ {"pentium4", x86_cpu_intel, PROC_p4},
+ {"noaes", x86_cpu_clear, CPU_AES},
+ {"i186", x86_cpu_intel, PROC_186},
+ {"rdrand", x86_cpu_set, CPU_RDRAND},
+ {"80286", x86_cpu_intel, PROC_286},
+ {"pentiumiv", x86_cpu_intel, PROC_p4},
+ {"xop", x86_cpu_set, CPU_XOP},
+ {"mmx", x86_cpu_set, CPU_MMX},
+ {"486", x86_cpu_intel, PROC_486},
+ {"clawhammer", x86_cpu_amd, PROC_hammer},
+ {"rdseed", x86_cpu_set, CPU_RDSEED},
+ {"i286", x86_cpu_intel, PROC_286},
+ {"prfchw", x86_cpu_set, CPU_PRFCHW},
+ {"nosse3", x86_cpu_clear, CPU_SSE3},
+ {"sse4", x86_cpu_set_sse4, 0},
+ {"pentium-iv", x86_cpu_intel, PROC_p4},
+ {"p4", x86_cpu_intel, PROC_p4},
+ {"nordrand", x86_cpu_clear, CPU_RDRAND},
+ {"ppro", x86_cpu_intel, PROC_686},
+ {"p5", x86_cpu_intel, PROC_586},
+ {"notbm", x86_cpu_clear, CPU_TBM},
+ {"cyrix", x86_cpu_set, CPU_Cyrix},
+ {"80386", x86_cpu_intel, PROC_386},
+ {"k6", x86_cpu_amd, PROC_k6},
+ {"basicnop", x86_nop, X86_NOP_BASIC},
+ {"nomovbe", x86_cpu_clear, CPU_MOVBE},
+ {"noadx", x86_cpu_clear, CPU_ADX},
+ {"nosmap", x86_cpu_clear, CPU_SMAP},
+ {"nosmm", x86_cpu_clear, CPU_SMM},
+ {"xsaveopt", x86_cpu_set, CPU_XSAVEOPT},
+ {"pentium-3", x86_cpu_intel, PROC_p3},
+ {"nosvm", x86_cpu_clear, CPU_SVM},
+ {"nosha", x86_cpu_clear, CPU_SHA},
+ {"invpcid", x86_cpu_set, CPU_INVPCID},
+ {"nobmi1", x86_cpu_clear, CPU_BMI1},
+ {"ivybridge", x86_cpu_intel, PROC_ivybridge},
+ {"p3", x86_cpu_intel, PROC_p3},
+ {"pentiumpro", x86_cpu_intel, PROC_686},
+ {"penryn", x86_cpu_intel, PROC_penryn},
+ {"80486", x86_cpu_intel, PROC_486},
+ {"noxop", x86_cpu_clear, CPU_XOP},
+ {"undoc", x86_cpu_set, CPU_Undoc},
+ {"noobsolete", x86_cpu_clear, CPU_Obs},
+ {"noavx", x86_cpu_clear, CPU_AVX},
+ {"nolzcnt", x86_cpu_clear, CPU_LZCNT},
+ {"noprfchw", x86_cpu_clear, CPU_PRFCHW},
+ {"notsx", x86_cpu_clear, CPU_TSX},
+ {"bmi1", x86_cpu_set, CPU_BMI1},
+ {"itanium", x86_cpu_ia64, 0},
+ {"venice", x86_cpu_amd, PROC_venice},
+ {"noxsave", x86_cpu_clear, CPU_XSAVE},
+ {"noamd", x86_cpu_clear, CPU_AMD},
+ {"noobs", x86_cpu_clear, CPU_Obs},
+ {"noem64t", x86_cpu_clear, CPU_EM64T},
+ {"hammer", x86_cpu_amd, PROC_hammer},
+ {"nehalem", x86_cpu_intel, PROC_nehalem},
+ {"sse3", x86_cpu_set, CPU_SSE3},
+ {"sse2", x86_cpu_set, CPU_SSE2},
+ {"clmul", x86_cpu_set, CPU_CLMUL},
+ {"smx", x86_cpu_set, CPU_SMX},
+ {"nosse4a", x86_cpu_clear, CPU_SSE4a},
+ {"tbm", x86_cpu_set, CPU_TBM},
+ {"fma", x86_cpu_set, CPU_FMA},
+ {"nopadlock", x86_cpu_clear, CPU_PadLock},
+ {"nosse41", x86_cpu_clear, CPU_SSE41},
+ {"adx", x86_cpu_set, CPU_ADX},
+ {"westmere", x86_cpu_intel, PROC_westmere},
+ {"k7", x86_cpu_amd, PROC_k7},
+ {"noinvpcid", x86_cpu_clear, CPU_INVPCID},
+ {"fsgsbase", x86_cpu_set, CPU_FSGSBASE},
+ {"corei7", x86_cpu_intel, PROC_nehalem},
+ {"movbe", x86_cpu_set, CPU_MOVBE},
+ {"286", x86_cpu_intel, PROC_286}
+ };
+ static const unsigned char tab[] = {
+ 183,125,113,40,125,0,0,0,183,146,116,85,0,113,113,183,
+ 113,131,0,82,88,0,131,125,85,0,113,0,0,7,0,40,
+ 22,7,0,0,125,220,87,183,184,7,0,0,0,113,11,0,
+ 84,0,0,0,0,131,0,113,0,120,0,113,0,0,51,11,
+ 55,190,0,0,183,61,120,131,85,135,0,0,0,0,0,82,
+ 74,183,0,87,220,0,235,0,220,229,0,0,220,243,124,145,
+ 0,220,131,0,221,0,0,0,237,0,135,125,124,168,0,69,
+ 0,124,22,0,131,131,163,113,184,214,155,133,55,0,0,0,
+ };
+
+ const struct cpu_parse_data *ret;
+ unsigned long rsl, val = phash_lookup(key, len, 0xdaa66d2bUL);
+ rsl = ((val>>25)^tab[val&0x7f]);
+ if (rsl >= 179) return NULL;
+ ret = &pd[rsl];
+ if (strcmp(key, ret->name) != 0) return NULL;
+ return ret;
+}
+
+
+
+void
+yasm_x86__parse_cpu(yasm_arch_x86 *arch_x86, const char *cpuid,
+ size_t cpuid_len)
+{
+ /*@null@*/ const struct cpu_parse_data *pdata;
+ wordptr new_cpu;
+ size_t i;
+ static char lcaseid[16];
+
+ if (cpuid_len > 15)
+ return;
+ for (i=0; i<cpuid_len; i++)
+ lcaseid[i] = tolower(cpuid[i]);
+ lcaseid[cpuid_len] = '\0';
+
+ pdata = cpu_find(lcaseid, cpuid_len);
+ if (!pdata) {
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("unrecognized CPU identifier `%s'"), cpuid);
+ return;
+ }
+
+ new_cpu = BitVector_Clone(arch_x86->cpu_enables[arch_x86->active_cpu]);
+ pdata->handler(new_cpu, arch_x86, pdata->data);
+
+ /* try to find an existing match in the CPU table first */
+ for (i=0; i<arch_x86->cpu_enables_size; i++) {
+ if (BitVector_equal(arch_x86->cpu_enables[i], new_cpu)) {
+ arch_x86->active_cpu = i;
+ BitVector_Destroy(new_cpu);
+ return;
+ }
+ }
+
+ /* not found, need to add a new entry */
+ arch_x86->active_cpu = arch_x86->cpu_enables_size++;
+ arch_x86->cpu_enables =
+ yasm_xrealloc(arch_x86->cpu_enables,
+ arch_x86->cpu_enables_size*sizeof(wordptr));
+ arch_x86->cpu_enables[arch_x86->active_cpu] = new_cpu;
+}
+
diff --git a/contrib/tools/yasm/modules/x86insn_gas.c b/contrib/tools/yasm/modules/x86insn_gas.c
index b07e37995b..e0773185ba 100644
--- a/contrib/tools/yasm/modules/x86insn_gas.c
+++ b/contrib/tools/yasm/modules/x86insn_gas.c
@@ -1,2154 +1,2154 @@
-/* ANSI-C code produced by genperf */
-struct insnprefix_parse_data;
-static const struct insnprefix_parse_data *
-insnprefix_gas_find(const char *key, size_t len)
-{
- static const struct insnprefix_parse_data pd[2070] = {
- {"vpunpckhqdq", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x6D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"psrad", pshift_insn, 4, SUF_Z, 0xE2, 0x72, 0x04, 0, CPU_MMX, 0, 0},
- {"rsldt", cyrixsmm_insn, 1, SUF_Z, 0x7B, 0, 0, 0, CPU_486, CPU_Cyrix, CPU_SMM},
- {"ldmxcsr", ldstmxcsr_insn, 1, SUF_Z, 0x02, 0, 0, 0, CPU_SSE, 0, 0},
- {"idivl", div_insn, 8, SUF_L, 0x07, 0, 0, 0, CPU_386, 0, 0},
- {"vhaddpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x7C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"aqword", NULL, X86_ADDRSIZE>>8, 0x40, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"vcmpeq_uqsd", ssecmp_64_insn, 4, SUF_Z, 0x08, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"subl", arith_insn, 22, SUF_L, 0x28, 0x05, 0, 0, CPU_386, 0, 0},
- {"vcmple_oqsd", ssecmp_64_insn, 4, SUF_Z, 0x12, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"shrdw", shlrd_insn, 9, SUF_W, 0xAC, 0, 0, 0, CPU_386, 0, 0},
- {"xchgb", xchg_insn, 16, SUF_B, 0, 0, 0, 0, 0, 0, 0},
- {"dec", incdec_insn, 6, SUF_Z, 0x48, 0x01, 0, 0, 0, 0, 0},
- {"finit", threebyte_insn, 1, SUF_Z, 0x9B, 0xDB, 0xE3, 0, CPU_FPU, 0, 0},
- {"iret", onebyte_insn, 1, SUF_Z, 0xCF, 0, 0, 0, 0, 0, 0},
- {"mul", f6_insn, 4, SUF_Z, 0x04, 0, 0, 0, 0, 0, 0},
- {"vcvtdq2pd", avx_cvt_xmm64_insn, 3, SUF_Z, 0xF3, 0xE6, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"lzcntl", cnt_insn, 3, SUF_L, 0xBD, 0, 0, 0, CPU_LZCNT, 0, 0},
- {"vucomiss", avx_xmm_xmm32_insn, 2, SUF_Z, 0x00, 0x2E, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vblendpd", sse4imm_256_insn, 4, SUF_Z, 0x0D, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"sscal", onebyte_insn, 1, SUF_Z, 0xAF, 0x20, 0, 0, CPU_386, 0, 0},
- {"vcmpnlt_uqpd", ssecmp_128_insn, 3, SUF_Z, 0x15, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"setpob", setcc_insn, 1, SUF_B, 0x0B, 0, 0, 0, CPU_386, 0, 0},
- {"andn", vex_gpr_reg_nds_rm_0F_insn, 2, SUF_Z, 0x00, 0x38, 0xF2, ONLY_AVX, CPU_BMI1, 0, 0},
- {"scasq", onebyte_insn, 1, SUF_Z, 0xAF, 0x40, 0, ONLY_64, 0, 0, 0},
- {"xorw", arith_insn, 22, SUF_W, 0x30, 0x06, 0, 0, 0, 0, 0},
- {"vprotw", vprot_insn, 3, SUF_Z, 0x01, 0, 0, 0, CPU_XOP, 0, 0},
- {"vfmsub231sd", vfma_sd_insn, 2, SUF_Z, 0xBB, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vpmovmskbq", pmovmskb_insn, 6, SUF_Q, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"data32", NULL, X86_OPERSIZE>>8, 0x20, 0, 0, 0, 0, 0, 0, 0},
- {"movntdq", movnt_insn, 2, SUF_Z, 0x66, 0xE7, 0, 0, CPU_SSE2, 0, 0},
- {"vandps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x54, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fidivrs", fiarith_insn, 2, SUF_S, 0x07, 0xDA, 0, 0, CPU_FPU, 0, 0},
- {"vcmpfalse_osss", ssecmp_32_insn, 4, SUF_Z, 0x1B, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpneqpd", ssecmp_128_insn, 3, SUF_Z, 0x04, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpneq_oqsd", ssecmp_64_insn, 4, SUF_Z, 0x0C, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcomnequb", vpcom_insn, 1, SUF_Z, 0xEC, 0x05, 0, 0, CPU_XOP, 0, 0},
- {"vfnmadd213sd", vfma_sd_insn, 2, SUF_Z, 0xAD, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"cmplesd", ssecmp_64_insn, 4, SUF_Z, 0x02, 0xF2, 0, 0, CPU_SSE2, 0, 0},
- {"vpshaq", amd_vpshift_insn, 2, SUF_Z, 0x9B, 0, 0, 0, CPU_XOP, 0, 0},
- {"iretw", onebyte_insn, 1, SUF_Z, 0xCF, 0x10, 0, 0, 0, 0, 0},
- {"vpcomltub", vpcom_insn, 1, SUF_Z, 0xEC, 0x00, 0, 0, CPU_XOP, 0, 0},
- {"vmovupd", movau_insn, 6, SUF_Z, 0x66, 0x10, 0x01, ONLY_AVX, CPU_AVX, 0, 0},
- {"fabs", twobyte_insn, 1, SUF_Z, 0xD9, 0xE1, 0, 0, CPU_FPU, 0, 0},
- {"lgdtq", twobytemem_insn, 1, SUF_Q, 0x02, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
- {"vcmpgeps", ssecmp_128_insn, 3, SUF_Z, 0x0D, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"popfw", onebyte_insn, 1, SUF_Z, 0x9D, 0x10, 0x40, 0, 0, 0, 0},
- {"vpmovsxwd", sse4m64_insn, 4, SUF_Z, 0x23, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpsravd", vpshiftv_vexw0_avx2_insn, 2, SUF_Z, 0x46, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"vpmadcswd", vpma_insn, 1, SUF_Z, 0xB6, 0, 0, 0, CPU_XOP, 0, 0},
- {"vpmovsxbq", sse4m16_insn, 4, SUF_Z, 0x22, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcomleud", vpcom_insn, 1, SUF_Z, 0xEE, 0x01, 0, 0, CPU_XOP, 0, 0},
- {"phsubw", ssse3_insn, 5, SUF_Z, 0x05, 0, 0, 0, CPU_SSSE3, 0, 0},
- {"call", call_insn, 30, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
- {"cmovpe", cmovcc_insn, 3, SUF_Z, 0x0A, 0, 0, 0, CPU_686, 0, 0},
- {"vpcomneqq", vpcom_insn, 1, SUF_Z, 0xCF, 0x05, 0, 0, CPU_XOP, 0, 0},
- {"fcomp", fcom_insn, 6, SUF_Z, 0xD8, 0x03, 0, 0, CPU_FPU, 0, 0},
- {"vdpps", sse4imm_256_insn, 4, SUF_Z, 0x40, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pmovsxdq", sse4m64_insn, 4, SUF_Z, 0x25, 0, 0, 0, CPU_SSE41, 0, 0},
- {"rcll", shift_insn, 16, SUF_L, 0x02, 0, 0, 0, CPU_386, 0, 0},
- {"xorps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x57, 0, 0, CPU_SSE, 0, 0},
- {"cmovaq", cmovcc_insn, 3, SUF_Q, 0x07, 0, 0, ONLY_64, CPU_686, 0, 0},
- {"int3", onebyte_insn, 1, SUF_Z, 0xCC, 0, 0, 0, 0, 0, 0},
- {"fsubrp", farithp_insn, 3, SUF_Z, 0xE8, 0, 0, 0, CPU_FPU, 0, 0},
- {"pdepq", vex_gpr_reg_nds_rm_0F_insn, 2, SUF_Q, 0xF2, 0x38, 0xF5, ONLY_64|ONLY_AVX, CPU_BMI2, 0, 0},
- {"vfmadd132pd", vfma_pd_insn, 2, SUF_Z, 0x98, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"bts", bittest_insn, 6, SUF_Z, 0xAB, 0x05, 0, 0, CPU_386, 0, 0},
- {"jnge", jcc_insn, 9, SUF_Z, 0x0C, 0, 0, 0, 0, 0, 0},
- {"movbe", movbe_insn, 6, SUF_Z, 0, 0, 0, 0, CPU_MOVBE, 0, 0},
- {"rsdc", rsdc_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_486, CPU_Cyrix, CPU_SMM},
- {"psubusb", mmxsse2_insn, 2, SUF_Z, 0xD8, 0, 0, 0, CPU_MMX, 0, 0},
- {"pmaxsb", sse4_insn, 2, SUF_Z, 0x3C, 0, 0, 0, CPU_SSE41, 0, 0},
- {"ffree", ffree_insn, 1, SUF_Z, 0xDD, 0, 0, 0, CPU_FPU, 0, 0},
- {"fsubrl", farith_insn, 7, SUF_L, 0xE0, 0xE8, 0x05, 0, CPU_FPU, 0, 0},
- {"pminsb", sse4_insn, 2, SUF_Z, 0x38, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vcmpltsd", ssecmp_64_insn, 4, SUF_Z, 0x01, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcvtsd2ss", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5A, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"verr", prot286_insn, 1, SUF_Z, 0x04, 0x00, 0, 0, CPU_286, CPU_Prot, 0},
- {"pcmpgtb", mmxsse2_insn, 2, SUF_Z, 0x64, 0, 0, 0, CPU_MMX, 0, 0},
- {"lcall", ljmpcall_insn, 7, SUF_Z, 0x03, 0x9A, 0, 0, 0, 0, 0},
- {"vcmpngt_uqss", ssecmp_32_insn, 4, SUF_Z, 0x1A, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pmulhuw", mmxsse2_insn, 2, SUF_Z, 0xE4, 0, 0, 0, CPU_MMX, CPU_P3, 0},
- {"vcmpeq_ossd", ssecmp_64_insn, 4, SUF_Z, 0x10, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vmaxsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5F, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpclmulhqlqdq", pclmulqdq_fixed_insn, 2, SUF_Z, 0x01, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpunord_sps", ssecmp_128_insn, 3, SUF_Z, 0x13, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"data64", NULL, X86_OPERSIZE>>8, 0x40, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"fimul", fiarith_insn, 2, SUF_Z, 0x01, 0xDA, 0, 0, CPU_FPU, 0, 0},
- {"tzcntq", cnt_insn, 3, SUF_Q, 0xBC, 0, 0, ONLY_64, CPU_BMI1, 0, 0},
- {"cmovgel", cmovcc_insn, 3, SUF_L, 0x0D, 0, 0, 0, CPU_686, 0, 0},
- {"cmovbw", cmovcc_insn, 3, SUF_W, 0x02, 0, 0, 0, CPU_686, 0, 0},
- {"vcmpordss", ssecmp_32_insn, 4, SUF_Z, 0x07, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"blendpd", sse4imm_insn, 2, SUF_Z, 0x0D, 0, 0, 0, CPU_SSE41, 0, 0},
- {"seta", setcc_insn, 1, SUF_Z, 0x07, 0, 0, 0, CPU_386, 0, 0},
- {"vfnmaddss", fma_128_m32_insn, 3, SUF_Z, 0x7A, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"blsfilll", xop_gpr_reg_rm_09_insn, 2, SUF_L, 0x01, 0x02, 0, 0, CPU_386, CPU_TBM, 0},
- {"incw", incdec_insn, 6, SUF_W, 0x40, 0x00, 0, 0, 0, 0, 0},
- {"blsmsk", vex_gpr_ndd_rm_0F38_regext_insn, 2, SUF_Z, 0x00, 0xF3, 0x02, ONLY_AVX, CPU_BMI1, 0, 0},
- {"testq", test_insn, 20, SUF_Q, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"pushfq", onebyte_insn, 1, SUF_Z, 0x9C, 0x40, 0x40, ONLY_64, 0, 0, 0},
- {"jbe", jcc_insn, 9, SUF_Z, 0x06, 0, 0, 0, 0, 0, 0},
- {"vpcomuw", vpcom_imm_insn, 1, SUF_Z, 0xED, 0, 0, 0, CPU_XOP, 0, 0},
- {"vcomisd", avx_xmm_xmm64_insn, 2, SUF_Z, 0x66, 0x2F, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpneq_osps", ssecmp_128_insn, 3, SUF_Z, 0x1C, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpneq_usps", ssecmp_128_insn, 3, SUF_Z, 0x14, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pswapd", now3d_insn, 1, SUF_Z, 0xBB, 0, 0, 0, CPU_3DNow, CPU_Athlon, 0},
- {"blciq", xop_gpr_reg_rm_09_insn, 2, SUF_Q, 0x02, 0x06, 0, ONLY_64, CPU_TBM, 0, 0},
- {"skinit", skinit_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_SVM, 0, 0},
- {"sqrtsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x51, 0, 0, CPU_SSE2, 0, 0},
- {"frndint", twobyte_insn, 1, SUF_Z, 0xD9, 0xFC, 0, 0, CPU_FPU, 0, 0},
- {"vpxor", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xEF, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"movmskpdl", movmsk_insn, 4, SUF_L, 0x66, 0, 0, 0, CPU_SSE2, 0, 0},
- {"cmpltss", ssecmp_32_insn, 4, SUF_Z, 0x01, 0xF3, 0, 0, CPU_SSE, 0, 0},
- {"loop", loop_insn, 8, SUF_Z, 0x02, 0, 0, 0, 0, 0, 0},
- {"vphsubwd", vphaddsub_insn, 1, SUF_Z, 0xE2, 0, 0, 0, CPU_XOP, 0, 0},
- {"vpcomltuq", vpcom_insn, 1, SUF_Z, 0xEF, 0x00, 0, 0, CPU_XOP, 0, 0},
- {"psubq", mmxsse2_insn, 2, SUF_Z, 0xFB, 0, 0, 0, CPU_MMX, 0, 0},
- {"cmovcq", cmovcc_insn, 3, SUF_Q, 0x02, 0, 0, ONLY_64, CPU_686, 0, 0},
- {"vpsrlw", vpshift_insn, 8, SUF_Z, 0xD1, 0x71, 0x02, ONLY_AVX, CPU_AVX, 0, 0},
- {"setleb", setcc_insn, 1, SUF_B, 0x0E, 0, 0, 0, CPU_386, 0, 0},
- {"vcmpnltps", ssecmp_128_insn, 3, SUF_Z, 0x05, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cvtps2pi", cvt_mm_xmm64_insn, 2, SUF_Z, 0x2D, 0, 0, 0, CPU_SSE, 0, 0},
- {"lgdtw", twobytemem_insn, 1, SUF_W, 0x02, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
- {"vpcomq", vpcom_imm_insn, 1, SUF_Z, 0xCF, 0, 0, 0, CPU_XOP, 0, 0},
- {"jna", jcc_insn, 9, SUF_Z, 0x06, 0, 0, 0, 0, 0, 0},
- {"vpsubusb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xD8, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpgt_oqss", ssecmp_32_insn, 4, SUF_Z, 0x1E, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfmsub231ps", vfma_ps_insn, 2, SUF_Z, 0xBA, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vfnmsubpd", fma_128_256_insn, 4, SUF_Z, 0x7D, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"vmsave", svm_rax_insn, 2, SUF_Z, 0xDB, 0, 0, 0, CPU_SVM, 0, 0},
- {"aesdec", aes_insn, 2, SUF_Z, 0x38, 0xDE, 0, 0, CPU_AVX, 0, 0},
- {"vcvtpd2ps", avx_cvt_xmm128_insn, 2, SUF_Z, 0x66, 0x5A, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vphaddwq", vphaddsub_insn, 1, SUF_Z, 0xC7, 0, 0, 0, CPU_XOP, 0, 0},
- {"cmovpo", cmovcc_insn, 3, SUF_Z, 0x0B, 0, 0, 0, CPU_686, 0, 0},
- {"pmulld", sse4_insn, 2, SUF_Z, 0x40, 0, 0, 0, CPU_SSE41, 0, 0},
- {"cbtw", onebyte_insn, 1, SUF_Z, 0x98, 0x10, 0, 0, 0, 0, 0},
- {"loadall286", twobyte_insn, 1, SUF_Z, 0x0F, 0x05, 0, 0, CPU_286, CPU_Undoc, 0},
- {"rexy", NULL, X86_REX>>8, 0x42, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"lgsw", lfgss_insn, 3, SUF_W, 0xB5, 0, 0, 0, CPU_386, 0, 0},
- {"vcmpngeps", ssecmp_128_insn, 3, SUF_Z, 0x09, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"btc", bittest_insn, 6, SUF_Z, 0xBB, 0x07, 0, 0, CPU_386, 0, 0},
- {"vcmpeq_uqss", ssecmp_32_insn, 4, SUF_Z, 0x08, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"invept", eptvpid_insn, 2, SUF_Z, 0x00, 0, 0, 0, CPU_386, CPU_EPTVPID, 0},
- {"vfmaddsub231pd", vfma_pd_insn, 2, SUF_Z, 0xB6, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"strl", str_insn, 4, SUF_L, 0, 0, 0, 0, CPU_386, CPU_Prot, 0},
- {"shlxl", vex_gpr_reg_rm_nds_0F_insn, 2, SUF_L, 0x66, 0x38, 0xF7, ONLY_AVX, CPU_BMI2, 0, 0},
- {"loopq", loopq_insn, 4, SUF_Z, 0x02, 0x40, 0, ONLY_64, 0, 0, 0},
- {"pmvzb", cyrixmmx_insn, 1, SUF_Z, 0x58, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
- {"vshufpd", xmm_xmm128_imm_256_insn, 3, SUF_Z, 0x66, 0xC6, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpsubq", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xFB, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fnstsw", fnstsw_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_FPU, 0, 0},
- {"incl", incdec_insn, 6, SUF_L, 0x40, 0x00, 0, 0, CPU_386, 0, 0},
- {"fnop", twobyte_insn, 1, SUF_Z, 0xD9, 0xD0, 0, 0, CPU_FPU, 0, 0},
- {"punpckhdq", mmxsse2_insn, 2, SUF_Z, 0x6A, 0, 0, 0, CPU_MMX, 0, 0},
- {"vphadduwd", vphaddsub_insn, 1, SUF_Z, 0xD6, 0, 0, 0, CPU_XOP, 0, 0},
- {"vmovaps", movau_insn, 6, SUF_Z, 0x00, 0x28, 0x01, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpsllq", vpshift_insn, 8, SUF_Z, 0xF3, 0x73, 0x06, ONLY_AVX, CPU_AVX, 0, 0},
- {"pfmul", now3d_insn, 1, SUF_Z, 0xB4, 0, 0, 0, CPU_3DNow, 0, 0},
- {"vcmpfalsess", ssecmp_32_insn, 4, SUF_Z, 0x0B, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmptrue_ussd", ssecmp_64_insn, 4, SUF_Z, 0x1F, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmple_oqps", ssecmp_128_insn, 3, SUF_Z, 0x12, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpinsrwq", pinsrw_insn, 9, SUF_Q, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpminub", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xDA, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"blcfillq", xop_gpr_reg_rm_09_insn, 2, SUF_Q, 0x01, 0x01, 0, ONLY_64, CPU_TBM, 0, 0},
- {"incq", incdec_insn, 6, SUF_Q, 0x40, 0x00, 0, ONLY_64, 0, 0, 0},
- {"pdep", vex_gpr_reg_nds_rm_0F_insn, 2, SUF_Z, 0xF2, 0x38, 0xF5, ONLY_AVX, CPU_BMI2, 0, 0},
- {"cmovnc", cmovcc_insn, 3, SUF_Z, 0x03, 0, 0, 0, CPU_686, 0, 0},
- {"movntil", movnti_insn, 2, SUF_L, 0, 0, 0, 0, CPU_P4, 0, 0},
- {"cmoveq", cmovcc_insn, 3, SUF_Q, 0x04, 0, 0, ONLY_64, CPU_686, 0, 0},
- {"pfrcpit2", now3d_insn, 1, SUF_Z, 0xB6, 0, 0, 0, CPU_3DNow, 0, 0},
- {"cmovaew", cmovcc_insn, 3, SUF_W, 0x03, 0, 0, 0, CPU_686, 0, 0},
- {"vinserti128", vinsertif128_insn, 1, SUF_Z, 0x38, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"movmskpdq", movmsk_insn, 4, SUF_Q, 0x66, 0, 0, ONLY_64, CPU_SSE2, 0, 0},
- {"vpmaxud", ssse3_insn, 5, SUF_Z, 0x3F, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"xaddw", cmpxchgxadd_insn, 4, SUF_W, 0xC0, 0, 0, 0, CPU_486, 0, 0},
- {"psubb", mmxsse2_insn, 2, SUF_Z, 0xF8, 0, 0, 0, CPU_MMX, 0, 0},
- {"vminpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x5D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"mulpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x59, 0, 0, CPU_SSE2, 0, 0},
- {"fisttpl", fildstp_insn, 4, SUF_L, 0x01, 0x00, 0x01, 0, CPU_SSE3, 0, 0},
- {"vcmpordps", ssecmp_128_insn, 3, SUF_Z, 0x07, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"lgs", lfgss_insn, 3, SUF_Z, 0xB5, 0, 0, 0, CPU_386, 0, 0},
- {"lzcntq", cnt_insn, 3, SUF_Q, 0xBD, 0, 0, ONLY_64, CPU_LZCNT, 0, 0},
- {"frstor", onebytemem_insn, 1, SUF_Z, 0x04, 0xDD, 0, 0, CPU_FPU, 0, 0},
- {"vcmpge_oqpd", ssecmp_128_insn, 3, SUF_Z, 0x1D, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"setnbb", setcc_insn, 1, SUF_B, 0x03, 0, 0, 0, CPU_386, 0, 0},
- {"fcmovnbe", fcmovcc_insn, 1, SUF_Z, 0xDB, 0xD0, 0, 0, CPU_686, CPU_FPU, 0},
- {"pminub", mmxsse2_insn, 2, SUF_Z, 0xDA, 0, 0, 0, CPU_MMX, CPU_P3, 0},
- {"vcvttpd2dqx", avx_cvt_xmm128_x_insn, 1, SUF_Z, 0x66, 0xE6, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfmaddsub231ps", vfma_ps_insn, 2, SUF_Z, 0xB6, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"data16", NULL, X86_OPERSIZE>>8, 0x10, 0, 0, 0, 0, 0, 0, 0},
- {"lmsw", prot286_insn, 1, SUF_Z, 0x06, 0x01, 0, 0, CPU_286, CPU_Priv, 0},
- {"cmovnsq", cmovcc_insn, 3, SUF_Q, 0x09, 0, 0, ONLY_64, CPU_686, 0, 0},
- {"ficompl", fiarith_insn, 2, SUF_L, 0x03, 0xDA, 0, 0, CPU_FPU, 0, 0},
- {"sets", setcc_insn, 1, SUF_Z, 0x08, 0, 0, 0, CPU_386, 0, 0},
- {"vpmuldq", ssse3_insn, 5, SUF_Z, 0x28, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"mulss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x59, 0, 0, CPU_SSE, 0, 0},
- {"minpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x5D, 0, 0, CPU_SSE2, 0, 0},
- {"pshufhw", xmm_xmm128_imm_insn, 1, SUF_Z, 0xF3, 0x70, 0, 0, CPU_SSE2, 0, 0},
- {"dword", NULL, X86_OPERSIZE>>8, 0x20, 0, 0, 0, 0, 0, 0, 0},
- {"cmovnael", cmovcc_insn, 3, SUF_L, 0x02, 0, 0, 0, CPU_686, 0, 0},
- {"xtest", tsx_0x0F_0x01_insn, 1, SUF_Z, 0xD6, 0, 0, 0, CPU_TSX, 0, 0},
- {"sar", shift_insn, 16, SUF_Z, 0x07, 0, 0, 0, 0, 0, 0},
- {"cmovngel", cmovcc_insn, 3, SUF_L, 0x0C, 0, 0, 0, CPU_686, 0, 0},
- {"cmovnlew", cmovcc_insn, 3, SUF_W, 0x0F, 0, 0, 0, CPU_686, 0, 0},
- {"sidt", twobytemem_insn, 1, SUF_Z, 0x01, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
- {"fxrstor", twobytemem_insn, 1, SUF_Z, 0x01, 0x0F, 0xAE, 0, CPU_686, CPU_FPU, 0},
- {"adcxl", vex_gpr_ndd_rm_0F38_insn, 2, SUF_L, 0x66, 0xF6, 0, 0, CPU_ADX, 0, 0},
- {"mull", f6_insn, 4, SUF_L, 0x04, 0, 0, 0, CPU_386, 0, 0},
- {"wbinvd", twobyte_insn, 1, SUF_Z, 0x0F, 0x09, 0, 0, CPU_486, CPU_Priv, 0},
- {"pmaxuw", sse4_insn, 2, SUF_Z, 0x3E, 0, 0, 0, CPU_SSE41, 0, 0},
- {"setnp", setcc_insn, 1, SUF_Z, 0x0B, 0, 0, 0, CPU_386, 0, 0},
- {"decb", incdec_insn, 6, SUF_B, 0x48, 0x01, 0, 0, 0, 0, 0},
- {"fnsaves", onebytemem_insn, 1, SUF_S, 0x06, 0xDD, 0, 0, CPU_FPU, 0, 0},
- {"cmovbe", cmovcc_insn, 3, SUF_Z, 0x06, 0, 0, 0, CPU_686, 0, 0},
- {"fsaves", twobytemem_insn, 1, SUF_S, 0x06, 0x9B, 0xDD, 0, CPU_FPU, 0, 0},
- {"jz", jcc_insn, 9, SUF_Z, 0x04, 0, 0, 0, 0, 0, 0},
- {"cmovngeq", cmovcc_insn, 3, SUF_Q, 0x0C, 0, 0, ONLY_64, CPU_686, 0, 0},
- {"neg", f6_insn, 4, SUF_Z, 0x03, 0, 0, 0, 0, 0, 0},
- {"jmp", jmp_insn, 31, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
- {"fdivrp", farithp_insn, 3, SUF_Z, 0xF8, 0, 0, 0, CPU_FPU, 0, 0},
- {"cmovnsl", cmovcc_insn, 3, SUF_L, 0x09, 0, 0, 0, CPU_686, 0, 0},
- {"lesl", ldes_insn, 2, SUF_L, 0xC4, 0, 0, NOT_64, CPU_386, 0, 0},
- {"vpsllvq", vpshiftv_vexw1_avx2_insn, 2, SUF_Z, 0x47, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"movslq", movsxd_insn, 1, SUF_L, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"vmovss", movss_insn, 4, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmovbew", cmovcc_insn, 3, SUF_W, 0x06, 0, 0, 0, CPU_686, 0, 0},
- {"vpermpd", vperm_imm_avx2_insn, 1, SUF_Z, 0x01, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"vcmpfalsesd", ssecmp_64_insn, 4, SUF_Z, 0x0B, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pcmpeqd", mmxsse2_insn, 2, SUF_Z, 0x76, 0, 0, 0, CPU_MMX, 0, 0},
- {"cmovne", cmovcc_insn, 3, SUF_Z, 0x05, 0, 0, 0, CPU_686, 0, 0},
- {"vpcomeqw", vpcom_insn, 1, SUF_Z, 0xCD, 0x04, 0, 0, CPU_XOP, 0, 0},
- {"movsb", onebyte_insn, 1, SUF_Z, 0xA4, 0x00, 0, 0, 0, 0, 0},
- {"loopnzl", loopl_insn, 4, SUF_Z, 0x00, 0x20, 0, 0, 0, 0, 0},
- {"pmaxsd", sse4_insn, 2, SUF_Z, 0x3D, 0, 0, 0, CPU_SSE41, 0, 0},
- {"fld", fld_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_FPU, 0, 0},
- {"fstpt", fldstpt_insn, 1, SUF_Z, 0x07, 0, 0, 0, CPU_FPU, 0, 0},
- {"vcmplepd", ssecmp_128_insn, 3, SUF_Z, 0x02, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"lidtq", twobytemem_insn, 1, SUF_Q, 0x03, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
- {"blsmskl", vex_gpr_ndd_rm_0F38_regext_insn, 2, SUF_L, 0x00, 0xF3, 0x02, ONLY_AVX, CPU_BMI1, 0, 0},
- {"vcmpge_oqsd", ssecmp_64_insn, 4, SUF_Z, 0x1D, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"unpckhps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x15, 0, 0, CPU_SSE, 0, 0},
- {"vmreadq", vmxmemrd_insn, 2, SUF_Q, 0, 0, 0, ONLY_64, CPU_P4, 0, 0},
- {"btsw", bittest_insn, 6, SUF_W, 0xAB, 0x05, 0, 0, CPU_386, 0, 0},
- {"vpinsrwl", pinsrw_insn, 9, SUF_L, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcmpgtw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x65, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pextq", vex_gpr_reg_nds_rm_0F_insn, 2, SUF_Q, 0xF3, 0x38, 0xF5, ONLY_64|ONLY_AVX, CPU_BMI2, 0, 0},
- {"vcmpnge_uqsd", ssecmp_64_insn, 4, SUF_Z, 0x19, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pavgw", mmxsse2_insn, 2, SUF_Z, 0xE3, 0, 0, 0, CPU_MMX, CPU_P3, 0},
- {"vpunpckhbw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x68, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vmlaunch", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xC2, 0, CPU_P4, 0, 0},
- {"loopnew", loopw_insn, 4, SUF_Z, 0x00, 0x10, 0, NOT_64, 0, 0, 0},
- {"vmaxps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x5F, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"rdshr", rdwrshr_insn, 1, SUF_Z, 0x00, 0, 0, 0, CPU_686, CPU_Cyrix, CPU_SMM},
- {"setge", setcc_insn, 1, SUF_Z, 0x0D, 0, 0, 0, CPU_386, 0, 0},
- {"pcmpgtw", mmxsse2_insn, 2, SUF_Z, 0x65, 0, 0, 0, CPU_MMX, 0, 0},
- {"vsqrtpd", avx_xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x51, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fstsw", fstsw_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_FPU, 0, 0},
- {"cmovzw", cmovcc_insn, 3, SUF_W, 0x04, 0, 0, 0, CPU_686, 0, 0},
- {"frstors", onebytemem_insn, 1, SUF_S, 0x04, 0xDD, 0, 0, CPU_FPU, 0, 0},
- {"smsww", sldtmsw_insn, 6, SUF_W, 0x04, 0x01, 0, 0, CPU_286, 0, 0},
- {"vpsubusw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xD9, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fisubrs", fiarith_insn, 2, SUF_S, 0x05, 0xDA, 0, 0, CPU_FPU, 0, 0},
- {"vmovshdup", avx_xmm_xmm128_insn, 2, SUF_Z, 0xF3, 0x16, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"xacquire", NULL, X86_ACQREL>>8, 0xF2, 0, 0, 0, 0, 0, 0, 0},
- {"vcmple_oqss", ssecmp_32_insn, 4, SUF_Z, 0x12, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpgt_oqpd", ssecmp_128_insn, 3, SUF_Z, 0x1E, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pfsub", now3d_insn, 1, SUF_Z, 0x9A, 0, 0, 0, CPU_3DNow, 0, 0},
- {"vpgatherdd", gather_32x_32y_insn, 2, SUF_Z, 0x90, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"vcmpngtss", ssecmp_32_insn, 4, SUF_Z, 0x0A, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pmovzxbw", sse4m64_insn, 4, SUF_Z, 0x30, 0, 0, 0, CPU_SSE41, 0, 0},
- {"cmovgl", cmovcc_insn, 3, SUF_L, 0x0F, 0, 0, 0, CPU_686, 0, 0},
- {"movaps", movau_insn, 6, SUF_Z, 0x00, 0x28, 0x01, 0, CPU_SSE, 0, 0},
- {"rdfsbase", fs_gs_base_insn, 2, SUF_Z, 0x00, 0, 0, ONLY_64, CPU_FSGSBASE, 0, 0},
- {"wrmsr", twobyte_insn, 1, SUF_Z, 0x0F, 0x30, 0, 0, CPU_586, CPU_Priv, 0},
- {"movmskpsl", movmsk_insn, 4, SUF_L, 0, 0, 0, 0, CPU_386, CPU_SSE, 0},
- {"vcmpngtpd", ssecmp_128_insn, 3, SUF_Z, 0x0A, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"decw", incdec_insn, 6, SUF_W, 0x48, 0x01, 0, 0, 0, 0, 0},
- {"vmclear", vmxthreebytemem_insn, 1, SUF_Z, 0x66, 0, 0, 0, CPU_P4, 0, 0},
- {"vfmsub213pd", vfma_pd_insn, 2, SUF_Z, 0xAA, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"roundps", sse4imm_insn, 2, SUF_Z, 0x08, 0, 0, 0, CPU_SSE41, 0, 0},
- {"xsaveopt", twobytemem_insn, 1, SUF_Z, 0x06, 0x0F, 0xAE, 0, CPU_XSAVEOPT, 0, 0},
- {"blsmskq", vex_gpr_ndd_rm_0F38_regext_insn, 2, SUF_Q, 0x00, 0xF3, 0x02, ONLY_64|ONLY_AVX, CPU_BMI1, 0, 0},
- {"fnstcww", fldnstcw_insn, 1, SUF_W, 0x07, 0, 0, 0, CPU_FPU, 0, 0},
- {"unpcklpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x14, 0, 0, CPU_SSE2, 0, 0},
- {"pfrcp", now3d_insn, 1, SUF_Z, 0x96, 0, 0, 0, CPU_3DNow, 0, 0},
- {"phaddw", ssse3_insn, 5, SUF_Z, 0x01, 0, 0, 0, CPU_SSSE3, 0, 0},
- {"adoxq", vex_gpr_ndd_rm_0F38_insn, 2, SUF_Q, 0xF3, 0xF6, 0, ONLY_64, CPU_ADX, 0, 0},
- {"vcmpnltsd", ssecmp_64_insn, 4, SUF_Z, 0x05, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcomleub", vpcom_insn, 1, SUF_Z, 0xEC, 0x01, 0, 0, CPU_XOP, 0, 0},
- {"vpsrlq", vpshift_insn, 8, SUF_Z, 0xD3, 0x73, 0x02, ONLY_AVX, CPU_AVX, 0, 0},
- {"psllq", pshift_insn, 4, SUF_Z, 0xF3, 0x73, 0x06, 0, CPU_MMX, 0, 0},
- {"enterl", enter_insn, 3, SUF_L, 0, 0, 0, NOT_64, CPU_186, 0, 0},
- {"wrshr", rdwrshr_insn, 1, SUF_Z, 0x01, 0, 0, 0, CPU_686, CPU_Cyrix, CPU_SMM},
- {"blcsq", xop_gpr_reg_rm_09_insn, 2, SUF_Q, 0x01, 0x03, 0, ONLY_64, CPU_TBM, 0, 0},
- {"vpmadcsswd", vpma_insn, 1, SUF_Z, 0xA6, 0, 0, 0, CPU_XOP, 0, 0},
- {"fdivl", farith_insn, 7, SUF_L, 0xF8, 0xF0, 0x06, 0, CPU_FPU, 0, 0},
- {"salb", shift_insn, 16, SUF_B, 0x04, 0, 0, 0, 0, 0, 0},
- {"vpcomequq", vpcom_insn, 1, SUF_Z, 0xEF, 0x04, 0, 0, CPU_XOP, 0, 0},
- {"cmovpw", cmovcc_insn, 3, SUF_W, 0x0A, 0, 0, 0, CPU_686, 0, 0},
- {"cmovgw", cmovcc_insn, 3, SUF_W, 0x0F, 0, 0, 0, CPU_686, 0, 0},
- {"vpmovmskbl", pmovmskb_insn, 6, SUF_L, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"iretl", onebyte_insn, 1, SUF_Z, 0xCF, 0x20, 0, 0, CPU_386, 0, 0},
- {"fdiv", farith_insn, 7, SUF_Z, 0xF8, 0xF0, 0x06, 0, CPU_FPU, 0, 0},
- {"vpermps", vperm_var_avx2_insn, 1, SUF_Z, 0x16, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"vphaddwd", vphaddsub_insn, 1, SUF_Z, 0xC6, 0, 0, 0, CPU_XOP, 0, 0},
- {"vcmpnlt_uqss", ssecmp_32_insn, 4, SUF_Z, 0x15, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcomleuw", vpcom_insn, 1, SUF_Z, 0xED, 0x01, 0, 0, CPU_XOP, 0, 0},
- {"crc32l", crc32_insn, 5, SUF_L, 0, 0, 0, 0, CPU_386, CPU_SSE42, 0},
- {"cmpsq", onebyte_insn, 1, SUF_Z, 0xA7, 0x40, 0, ONLY_64, 0, 0, 0},
- {"cmovpel", cmovcc_insn, 3, SUF_L, 0x0A, 0, 0, 0, CPU_686, 0, 0},
- {"cmovnlel", cmovcc_insn, 3, SUF_L, 0x0F, 0, 0, 0, CPU_686, 0, 0},
- {"sysretl", twobyte_insn, 1, SUF_L, 0x0F, 0x07, 0, 0, CPU_686, CPU_AMD, CPU_Priv},
- {"setpo", setcc_insn, 1, SUF_Z, 0x0B, 0, 0, 0, CPU_386, 0, 0},
- {"vpcomgtq", vpcom_insn, 1, SUF_Z, 0xCF, 0x02, 0, 0, CPU_XOP, 0, 0},
- {"phsubsw", ssse3_insn, 5, SUF_Z, 0x07, 0, 0, 0, CPU_SSSE3, 0, 0},
- {"pinsrw", pinsrw_insn, 9, SUF_Z, 0, 0, 0, 0, CPU_MMX, CPU_P3, 0},
- {"vfmadd231ps", vfma_ps_insn, 2, SUF_Z, 0xB8, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"mulps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x59, 0, 0, CPU_SSE, 0, 0},
- {"setz", setcc_insn, 1, SUF_Z, 0x04, 0, 0, 0, CPU_386, 0, 0},
- {"cmpltsd", ssecmp_64_insn, 4, SUF_Z, 0x01, 0xF2, 0, 0, CPU_SSE2, 0, 0},
- {"fstl", fst_insn, 3, SUF_L, 0, 0, 0, 0, CPU_FPU, 0, 0},
- {"vcmptrueps", ssecmp_128_insn, 3, SUF_Z, 0x0F, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmovow", cmovcc_insn, 3, SUF_W, 0x00, 0, 0, 0, CPU_686, 0, 0},
- {"extrq", extrq_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_SSE4a, 0, 0},
- {"verrw", prot286_insn, 1, SUF_W, 0x04, 0x00, 0, 0, CPU_286, CPU_Prot, 0},
- {"setno", setcc_insn, 1, SUF_Z, 0x01, 0, 0, 0, CPU_386, 0, 0},
- {"lssw", lfgss_insn, 3, SUF_W, 0xB2, 0, 0, 0, CPU_386, 0, 0},
- {"cmpunordps", ssecmp_128_insn, 3, SUF_Z, 0x03, 0, 0, 0, CPU_SSE, 0, 0},
- {"shlxq", vex_gpr_reg_rm_nds_0F_insn, 2, SUF_Q, 0x66, 0x38, 0xF7, ONLY_64|ONLY_AVX, CPU_BMI2, 0, 0},
- {"emms", twobyte_insn, 1, SUF_Z, 0x0F, 0x77, 0, 0, CPU_MMX, 0, 0},
- {"sarq", shift_insn, 16, SUF_Q, 0x07, 0, 0, ONLY_64, 0, 0, 0},
- {"pminsd", sse4_insn, 2, SUF_Z, 0x39, 0, 0, 0, CPU_SSE41, 0, 0},
- {"rorw", shift_insn, 16, SUF_W, 0x01, 0, 0, 0, 0, 0, 0},
- {"pxor", mmxsse2_insn, 2, SUF_Z, 0xEF, 0, 0, 0, CPU_MMX, 0, 0},
- {"pfnacc", now3d_insn, 1, SUF_Z, 0x8A, 0, 0, 0, CPU_3DNow, CPU_Athlon, 0},
- {"pf2iw", now3d_insn, 1, SUF_Z, 0x1C, 0, 0, 0, CPU_3DNow, CPU_Athlon, 0},
- {"invpcid", invpcid_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_INVPCID, CPU_Priv},
- {"fcompl", fcom_insn, 6, SUF_L, 0xD8, 0x03, 0, 0, CPU_FPU, 0, 0},
- {"larq", larlsl_insn, 6, SUF_Q, 0x02, 0, 0, ONLY_64, CPU_286, CPU_Prot, 0},
- {"str", str_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_286, CPU_Prot, 0},
- {"movmskpsq", movmsk_insn, 4, SUF_Q, 0, 0, 0, ONLY_64, CPU_SSE, 0, 0},
- {"lds", ldes_insn, 2, SUF_Z, 0xC5, 0, 0, NOT_64, 0, 0, 0},
- {"vpinsrb", pinsrb_insn, 4, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pushf", onebyte_insn, 1, SUF_Z, 0x9C, 0x00, 0x40, 0, 0, 0, 0},
- {"vcvtsd2sil", cvt_rx_xmm64_insn, 4, SUF_L, 0xF2, 0x2D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"jge", jcc_insn, 9, SUF_Z, 0x0D, 0, 0, 0, 0, 0, 0},
- {"setpb", setcc_insn, 1, SUF_B, 0x0A, 0, 0, 0, CPU_386, 0, 0},
- {"andl", arith_insn, 22, SUF_L, 0x20, 0x04, 0, 0, CPU_386, 0, 0},
- {"vaesdec", aes_insn, 2, SUF_Z, 0x38, 0xDE, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"xstore", padlock_insn, 1, SUF_Z, 0xC0, 0x00, 0xA7, 0, CPU_PadLock, 0, 0},
- {"sha1nexte", intel_SHA1NEXTE_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SHA, 0, 0},
- {"andps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x54, 0, 0, CPU_SSE, 0, 0},
- {"vphaddbd", vphaddsub_insn, 1, SUF_Z, 0xC2, 0, 0, 0, CPU_XOP, 0, 0},
- {"rorxl", vex_gpr_reg_rm_0F_imm8_insn, 2, SUF_L, 0xF2, 0x3A, 0xF0, ONLY_AVX, CPU_BMI2, 0, 0},
- {"jmpw", jmp_insn, 31, SUF_W, 0, 0, 0, 0, 0, 0, 0},
- {"fildll", fbldstp_insn, 1, SUF_Z, 0x05, 0, 0, 0, CPU_FPU, 0, 0},
- {"out", out_insn, 12, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
- {"mulsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x59, 0, 0, CPU_SSE2, 0, 0},
- {"movss", movss_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_SSE, 0, 0},
- {"smswl", sldtmsw_insn, 6, SUF_L, 0x04, 0x01, 0, 0, CPU_386, 0, 0},
- {"aam", aadm_insn, 2, SUF_Z, 0x00, 0, 0, NOT_64, 0, 0, 0},
- {"stosw", onebyte_insn, 1, SUF_Z, 0xAB, 0x10, 0, 0, 0, 0, 0},
- {"ptest", sse4_insn, 2, SUF_Z, 0x17, 0, 0, 0, CPU_SSE41, 0, 0},
- {"lretw", retnf_insn, 6, SUF_W, 0xCA, 0x10, 0, 0, 0, 0, 0},
- {"notq", f6_insn, 4, SUF_Q, 0x02, 0, 0, ONLY_64, 0, 0, 0},
- {"vmload", svm_rax_insn, 2, SUF_Z, 0xDA, 0, 0, 0, CPU_SVM, 0, 0},
- {"andb", arith_insn, 22, SUF_B, 0x20, 0x04, 0, 0, 0, 0, 0},
- {"vcmpeq_usss", ssecmp_32_insn, 4, SUF_Z, 0x18, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpsubsw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xE9, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vmovmskpd", movmsk_insn, 4, SUF_Z, 0x66, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfnmsub231pd", vfma_pd_insn, 2, SUF_Z, 0xBE, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"cmovg", cmovcc_insn, 3, SUF_Z, 0x0F, 0, 0, 0, CPU_686, 0, 0},
- {"cmpeqpd", ssecmp_128_insn, 3, SUF_Z, 0x00, 0x66, 0, 0, CPU_SSE, 0, 0},
- {"vfmsub213sd", vfma_sd_insn, 2, SUF_Z, 0xAB, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"rex64", NULL, X86_REX>>8, 0x48, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"vpcmpistri", sse4pcmpstr_insn, 1, SUF_Z, 0x63, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpminsb", ssse3_insn, 5, SUF_Z, 0x38, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfnmadd231pd", vfma_pd_insn, 2, SUF_Z, 0xBC, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"ja", jcc_insn, 9, SUF_Z, 0x07, 0, 0, 0, 0, 0, 0},
- {"vpmullw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xD5, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcvttpd2dq", avx_cvt_xmm128_insn, 2, SUF_Z, 0x66, 0xE6, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vgatherdps", gather_32x_32y_insn, 2, SUF_Z, 0x92, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"vfmsub213ss", vfma_ss_insn, 2, SUF_Z, 0xAB, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"cmpxchgb", cmpxchgxadd_insn, 4, SUF_B, 0xB0, 0, 0, 0, CPU_486, 0, 0},
- {"sgdtw", twobytemem_insn, 1, SUF_W, 0x00, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
- {"cmpb", arith_insn, 22, SUF_B, 0x38, 0x07, 0, 0, 0, 0, 0},
- {"vmulpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x59, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cvttsd2siq", cvt_rx_xmm64_insn, 4, SUF_Q, 0xF2, 0x2C, 0, ONLY_64, CPU_SSE2, 0, 0},
- {"movzwq", movszx_insn, 5, SUF_W, 0xB6, 0, 0, ONLY_64, CPU_386, 0, 0},
- {"les", ldes_insn, 2, SUF_Z, 0xC4, 0, 0, NOT_64, 0, 0, 0},
- {"vcmpngepd", ssecmp_128_insn, 3, SUF_Z, 0x09, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"clflush", clflush_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_P3, 0, 0},
- {"leavew", onebyte_insn, 1, SUF_Z, 0xC9, 0x10, 0x00, 0, CPU_186, 0, 0},
- {"addsubps", xmm_xmm128_insn, 2, SUF_Z, 0xF2, 0xD0, 0, 0, CPU_SSE3, 0, 0},
- {"vinsertps", insertps_insn, 4, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vmresume", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xC3, 0, CPU_P4, 0, 0},
- {"cmpnlesd", ssecmp_64_insn, 4, SUF_Z, 0x06, 0xF2, 0, 0, CPU_SSE2, 0, 0},
- {"setnge", setcc_insn, 1, SUF_Z, 0x0C, 0, 0, 0, CPU_386, 0, 0},
- {"adcxq", vex_gpr_ndd_rm_0F38_insn, 2, SUF_Q, 0x66, 0xF6, 0, ONLY_64, CPU_ADX, 0, 0},
- {"xsetbv", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xD1, 0, CPU_386, CPU_Priv, CPU_XSAVE},
- {"vphsubsw", ssse3_insn, 5, SUF_Z, 0x07, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpgtsd", ssecmp_64_insn, 4, SUF_Z, 0x0E, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vphsubw", ssse3_insn, 5, SUF_Z, 0x05, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmovnbel", cmovcc_insn, 3, SUF_L, 0x07, 0, 0, 0, CPU_686, 0, 0},
- {"fcomi", fcom2_insn, 2, SUF_Z, 0xDB, 0xF0, 0, 0, CPU_686, CPU_FPU, 0},
- {"blsfillq", xop_gpr_reg_rm_09_insn, 2, SUF_Q, 0x01, 0x02, 0, ONLY_64, CPU_TBM, 0, 0},
- {"mulxl", vex_gpr_reg_nds_rm_0F_insn, 2, SUF_L, 0xF2, 0x38, 0xF6, ONLY_AVX, CPU_BMI2, 0, 0},
- {"fcomip", fcom2_insn, 2, SUF_Z, 0xDF, 0xF0, 0, 0, CPU_686, CPU_FPU, 0},
- {"vpinsrq", pinsrq_insn, 2, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcomw", vpcom_imm_insn, 1, SUF_Z, 0xCD, 0, 0, 0, CPU_XOP, 0, 0},
- {"rsts", cyrixsmm_insn, 1, SUF_Z, 0x7D, 0, 0, 0, CPU_486, CPU_Cyrix, CPU_SMM},
- {"vpcomleb", vpcom_insn, 1, SUF_Z, 0xCC, 0x01, 0, 0, CPU_XOP, 0, 0},
- {"vdivpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x5E, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"add", arith_insn, 22, SUF_Z, 0x00, 0x00, 0, 0, 0, 0, 0},
- {"sldtw", sldtmsw_insn, 6, SUF_W, 0x00, 0x00, 0, 0, CPU_286, 0, 0},
- {"rorl", shift_insn, 16, SUF_L, 0x01, 0, 0, 0, CPU_386, 0, 0},
- {"vcvtsi2sd", cvt_xmm_rmx_insn, 6, SUF_Z, 0xF2, 0x2A, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpnge_uqps", ssecmp_128_insn, 3, SUF_Z, 0x19, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfmsubpd", fma_128_256_insn, 4, SUF_Z, 0x6D, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"vpminsd", ssse3_insn, 5, SUF_Z, 0x39, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fistl", fiarith_insn, 2, SUF_L, 0x02, 0xDB, 0, 0, CPU_FPU, 0, 0},
- {"fcmovu", fcmovcc_insn, 1, SUF_Z, 0xDA, 0xD8, 0, 0, CPU_686, CPU_FPU, 0},
- {"scasb", onebyte_insn, 1, SUF_Z, 0xAE, 0x00, 0, 0, 0, 0, 0},
- {"phminposuw", sse4_insn, 2, SUF_Z, 0x41, 0, 0, 0, CPU_SSE41, 0, 0},
- {"pextrwl", pextrw_insn, 7, SUF_L, 0, 0, 0, 0, CPU_MMX, CPU_P3, 0},
- {"vpclmulqdq", pclmulqdq_insn, 2, SUF_Z, 0x3A, 0x44, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vphaddbw", vphaddsub_insn, 1, SUF_Z, 0xC1, 0, 0, 0, CPU_XOP, 0, 0},
- {"psubsb", mmxsse2_insn, 2, SUF_Z, 0xE8, 0, 0, 0, CPU_MMX, 0, 0},
- {"lss", lfgss_insn, 3, SUF_Z, 0xB2, 0, 0, 0, CPU_386, 0, 0},
- {"pushal", onebyte_insn, 1, SUF_Z, 0x60, 0x20, 0, NOT_64, CPU_386, 0, 0},
- {"setb", setcc_insn, 1, SUF_Z, 0x02, 0, 0, 0, CPU_386, 0, 0},
- {"cmpnltps", ssecmp_128_insn, 3, SUF_Z, 0x05, 0, 0, 0, CPU_SSE, 0, 0},
- {"rcpss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x53, 0, 0, CPU_SSE, 0, 0},
- {"vcmpnltpd", ssecmp_128_insn, 3, SUF_Z, 0x05, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmpneqps", ssecmp_128_insn, 3, SUF_Z, 0x04, 0, 0, 0, CPU_SSE, 0, 0},
- {"vpsadbw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xF6, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcvtss2sil", cvt_rx_xmm32_insn, 4, SUF_L, 0xF3, 0x2D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fadds", farith_insn, 7, SUF_S, 0xC0, 0xC0, 0x00, 0, CPU_FPU, 0, 0},
- {"cmovbeq", cmovcc_insn, 3, SUF_Q, 0x06, 0, 0, ONLY_64, CPU_686, 0, 0},
- {"bextrl", bextr_insn, 4, SUF_L, 0, 0, 0, ONLY_AVX, CPU_386, CPU_BMI1, 0},
- {"vsqrtps", avx_xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x51, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpunord_ssd", ssecmp_64_insn, 4, SUF_Z, 0x13, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pmaxsw", mmxsse2_insn, 2, SUF_Z, 0xEE, 0, 0, 0, CPU_MMX, CPU_P3, 0},
- {"lcallq", ljmpcall_insn, 7, SUF_Q, 0x03, 0x9A, 0, ONLY_64, 0, 0, 0},
- {"vpextrb", pextrb_insn, 3, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fchs", twobyte_insn, 1, SUF_Z, 0xD9, 0xE0, 0, 0, CPU_FPU, 0, 0},
- {"cmovnbeq", cmovcc_insn, 3, SUF_Q, 0x07, 0, 0, ONLY_64, CPU_686, 0, 0},
- {"sha1msg2", intel_SHA1MSG2_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SHA, 0, 0},
- {"vpaddusb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xDC, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"faddp", farithp_insn, 3, SUF_Z, 0xC0, 0, 0, 0, CPU_FPU, 0, 0},
- {"cmovnbe", cmovcc_insn, 3, SUF_Z, 0x07, 0, 0, 0, CPU_686, 0, 0},
- {"psrldq", pslrldq_insn, 4, SUF_Z, 0x03, 0, 0, 0, CPU_SSE2, 0, 0},
- {"movswl", movszx_insn, 5, SUF_W, 0xBE, 0, 0, 0, CPU_386, 0, 0},
- {"outsw", onebyte_insn, 1, SUF_Z, 0x6F, 0x10, 0, 0, 0, 0, 0},
- {"vpminud", ssse3_insn, 5, SUF_Z, 0x3B, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"aesimc", aesimc_insn, 1, SUF_Z, 0x38, 0xDB, 0, 0, CPU_AES, 0, 0},
- {"movsd", movsd_insn, 5, SUF_Z, 0, 0, 0, 0, CPU_386, 0, 0},
- {"fistpq", fildstp_insn, 4, SUF_Q, 0x03, 0x02, 0x07, 0, CPU_FPU, 0, 0},
- {"loopnzq", loopq_insn, 4, SUF_Z, 0x00, 0x40, 0, ONLY_64, 0, 0, 0},
- {"vcmpngt_uqps", ssecmp_128_insn, 3, SUF_Z, 0x1A, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"setsb", setcc_insn, 1, SUF_B, 0x08, 0, 0, 0, CPU_386, 0, 0},
- {"vpsignw", ssse3_insn, 5, SUF_Z, 0x09, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"scasl", onebyte_insn, 1, SUF_Z, 0xAF, 0x20, 0, 0, CPU_386, 0, 0},
- {"addb", arith_insn, 22, SUF_B, 0x00, 0x00, 0, 0, 0, 0, 0},
- {"jnc", jcc_insn, 9, SUF_Z, 0x03, 0, 0, 0, 0, 0, 0},
- {"cmpeqsd", ssecmp_64_insn, 4, SUF_Z, 0x00, 0xF2, 0, 0, CPU_SSE2, 0, 0},
- {"maxss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5F, 0, 0, CPU_SSE, 0, 0},
- {"lodsl", onebyte_insn, 1, SUF_Z, 0xAD, 0x20, 0, 0, CPU_386, 0, 0},
- {"lahf", onebyte_insn, 1, SUF_Z, 0x9F, 0, 0, 0, 0, 0, 0},
- {"setp", setcc_insn, 1, SUF_Z, 0x0A, 0, 0, 0, CPU_386, 0, 0},
- {"vpunpcklwd", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x61, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vmwritel", vmxmemwr_insn, 2, SUF_L, 0, 0, 0, NOT_64, CPU_P4, 0, 0},
- {"blendps", sse4imm_insn, 2, SUF_Z, 0x0C, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vmcall", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xC1, 0, CPU_P4, 0, 0},
- {"pushq", push_insn, 35, SUF_Q, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"vcmpnleps", ssecmp_128_insn, 3, SUF_Z, 0x06, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcomtrueuw", vpcom_insn, 1, SUF_Z, 0xED, 0x07, 0, 0, CPU_XOP, 0, 0},
- {"pmuldq", sse4_insn, 2, SUF_Z, 0x28, 0, 0, 0, CPU_SSE41, 0, 0},
- {"cmpl", arith_insn, 22, SUF_L, 0x38, 0x07, 0, 0, CPU_386, 0, 0},
- {"pfmin", now3d_insn, 1, SUF_Z, 0x94, 0, 0, 0, CPU_3DNow, 0, 0},
- {"fldpi", twobyte_insn, 1, SUF_Z, 0xD9, 0xEB, 0, 0, CPU_FPU, 0, 0},
- {"vcvtsi2sdl", cvt_xmm_rmx_insn, 6, SUF_L, 0xF2, 0x2A, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpsraw", vpshift_insn, 8, SUF_Z, 0xE1, 0x71, 0x04, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcvtps2ph", avx_cvtps2ph_insn, 4, SUF_Z, 0x66, 0x1D, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"subq", arith_insn, 22, SUF_Q, 0x28, 0x05, 0, ONLY_64, 0, 0, 0},
- {"fsubrs", farith_insn, 7, SUF_S, 0xE0, 0xE8, 0x05, 0, CPU_FPU, 0, 0},
- {"xchgq", xchg_insn, 16, SUF_Q, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"cmovsq", cmovcc_insn, 3, SUF_Q, 0x08, 0, 0, ONLY_64, CPU_686, 0, 0},
- {"shldq", shlrd_insn, 9, SUF_Q, 0xA4, 0, 0, ONLY_64, CPU_386, 0, 0},
- {"leaveq", onebyte_insn, 1, SUF_Z, 0xC9, 0x00, 0x40, ONLY_64, 0, 0, 0},
- {"stc", onebyte_insn, 1, SUF_Z, 0xF9, 0, 0, 0, 0, 0, 0},
- {"fsave", twobytemem_insn, 1, SUF_Z, 0x06, 0x9B, 0xDD, 0, CPU_FPU, 0, 0},
- {"rclb", shift_insn, 16, SUF_B, 0x02, 0, 0, 0, 0, 0, 0},
- {"fisubrl", fiarith_insn, 2, SUF_L, 0x05, 0xDA, 0, 0, CPU_FPU, 0, 0},
- {"vpsrlvd", vpshiftv_vexw0_avx2_insn, 2, SUF_Z, 0x45, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"fstenvl", twobytemem_insn, 1, SUF_L, 0x06, 0x9B, 0xD9, 0, CPU_FPU, 0, 0},
- {"paddsb", mmxsse2_insn, 2, SUF_Z, 0xEC, 0, 0, 0, CPU_MMX, 0, 0},
- {"vmwriteq", vmxmemwr_insn, 2, SUF_Q, 0, 0, 0, ONLY_64, CPU_P4, 0, 0},
- {"ud2", twobyte_insn, 1, SUF_Z, 0x0F, 0x0B, 0, 0, CPU_286, 0, 0},
- {"vfmaddsub132pd", vfma_pd_insn, 2, SUF_Z, 0x96, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"sti", onebyte_insn, 1, SUF_Z, 0xFB, 0, 0, 0, 0, 0, 0},
- {"shld", shlrd_insn, 9, SUF_Z, 0xA4, 0, 0, 0, CPU_386, 0, 0},
- {"vpabsd", avx2_ssse3_2op_insn, 2, SUF_Z, 0x1E, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"mwait", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xC9, 0, CPU_SSE3, 0, 0},
- {"cvtsi2sd", cvt_xmm_rmx_insn, 6, SUF_Z, 0xF2, 0x2A, 0, 0, CPU_SSE2, 0, 0},
- {"cmovnp", cmovcc_insn, 3, SUF_Z, 0x0B, 0, 0, 0, CPU_686, 0, 0},
- {"vcvtpd2dq", avx_cvt_xmm128_insn, 2, SUF_Z, 0xF2, 0xE6, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pmovsxbw", sse4m64_insn, 4, SUF_Z, 0x20, 0, 0, 0, CPU_SSE41, 0, 0},
- {"fisubl", fiarith_insn, 2, SUF_L, 0x04, 0xDA, 0, 0, CPU_FPU, 0, 0},
- {"daa", onebyte_insn, 1, SUF_Z, 0x27, 0, 0, NOT_64, 0, 0, 0},
- {"fdivrl", farith_insn, 7, SUF_L, 0xF0, 0xF8, 0x07, 0, CPU_FPU, 0, 0},
- {"stac", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xCB, 0, CPU_SMAP, 0, 0},
- {"testw", test_insn, 20, SUF_W, 0, 0, 0, 0, 0, 0, 0},
- {"movzwl", movszx_insn, 5, SUF_W, 0xB6, 0, 0, 0, CPU_386, 0, 0},
- {"vpblendw", sse4imm_256avx2_insn, 4, SUF_Z, 0x0E, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcomgtuq", vpcom_insn, 1, SUF_Z, 0xEF, 0x02, 0, 0, CPU_XOP, 0, 0},
- {"setnaeb", setcc_insn, 1, SUF_B, 0x02, 0, 0, 0, CPU_386, 0, 0},
- {"pextrwq", pextrw_insn, 7, SUF_Q, 0, 0, 0, ONLY_64, CPU_MMX, CPU_P3, 0},
- {"lodsq", onebyte_insn, 1, SUF_Z, 0xAD, 0x40, 0, ONLY_64, 0, 0, 0},
- {"fincstp", twobyte_insn, 1, SUF_Z, 0xD9, 0xF7, 0, 0, CPU_FPU, 0, 0},
- {"cmovlew", cmovcc_insn, 3, SUF_W, 0x0E, 0, 0, 0, CPU_686, 0, 0},
- {"insertq", insertq_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_SSE4a, 0, 0},
- {"notl", f6_insn, 4, SUF_L, 0x02, 0, 0, 0, CPU_386, 0, 0},
- {"vfnmadd132sd", vfma_sd_insn, 2, SUF_Z, 0x9D, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"cmova", cmovcc_insn, 3, SUF_Z, 0x07, 0, 0, 0, CPU_686, 0, 0},
- {"fstcw", fstcw_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_FPU, 0, 0},
- {"vpclmullqhqdq", pclmulqdq_fixed_insn, 2, SUF_Z, 0x10, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"movnti", movnti_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_P4, 0, 0},
- {"packusdw", sse4_insn, 2, SUF_Z, 0x2B, 0, 0, 0, CPU_SSE41, 0, 0},
- {"punpckhqdq", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x6D, 0, 0, CPU_SSE2, 0, 0},
- {"lzcntw", cnt_insn, 3, SUF_W, 0xBD, 0, 0, 0, CPU_LZCNT, 0, 0},
- {"pcmpistri", sse4pcmpstr_insn, 1, SUF_Z, 0x63, 0, 0, 0, CPU_SSE42, 0, 0},
- {"fimull", fiarith_insn, 2, SUF_L, 0x01, 0xDA, 0, 0, CPU_FPU, 0, 0},
- {"fnstenv", onebytemem_insn, 1, SUF_Z, 0x06, 0xD9, 0, 0, CPU_FPU, 0, 0},
- {"cmovncw", cmovcc_insn, 3, SUF_W, 0x03, 0, 0, 0, CPU_686, 0, 0},
- {"leaw", lea_insn, 3, SUF_W, 0, 0, 0, 0, 0, 0, 0},
- {"vfmadd132ss", vfma_ss_insn, 2, SUF_Z, 0x99, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"pshufd", xmm_xmm128_imm_insn, 1, SUF_Z, 0x66, 0x70, 0, 0, CPU_SSE2, 0, 0},
- {"blsil", vex_gpr_ndd_rm_0F38_regext_insn, 2, SUF_L, 0x00, 0xF3, 0x03, ONLY_AVX, CPU_BMI1, 0, 0},
- {"stosl", onebyte_insn, 1, SUF_Z, 0xAB, 0x20, 0, 0, CPU_386, 0, 0},
- {"mulq", f6_insn, 4, SUF_Q, 0x04, 0, 0, ONLY_64, 0, 0, 0},
- {"cmovbl", cmovcc_insn, 3, SUF_L, 0x02, 0, 0, 0, CPU_686, 0, 0},
- {"vpmaxsd", ssse3_insn, 5, SUF_Z, 0x3D, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"rsqrtps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x52, 0, 0, CPU_SSE, 0, 0},
- {"ror", shift_insn, 16, SUF_Z, 0x01, 0, 0, 0, 0, 0, 0},
- {"vcmptrue_usss", ssecmp_32_insn, 4, SUF_Z, 0x1F, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpermq", vperm_imm_avx2_insn, 1, SUF_Z, 0x00, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"xcryptofb", padlock_insn, 1, SUF_Z, 0xE8, 0xF3, 0xA7, 0, CPU_PadLock, 0, 0},
- {"btsl", bittest_insn, 6, SUF_L, 0xAB, 0x05, 0, 0, CPU_386, 0, 0},
- {"vfnmsub213ps", vfma_ps_insn, 2, SUF_Z, 0xAE, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"stmxcsr", ldstmxcsr_insn, 1, SUF_Z, 0x03, 0, 0, 0, CPU_SSE, 0, 0},
- {"vzeroupper", vzero_insn, 1, SUF_Z, 0xC0, 0, 0, 0, CPU_AVX, 0, 0},
- {"adcx", vex_gpr_ndd_rm_0F38_insn, 2, SUF_Z, 0x66, 0xF6, 0, 0, CPU_ADX, 0, 0},
- {"setnz", setcc_insn, 1, SUF_Z, 0x05, 0, 0, 0, CPU_386, 0, 0},
- {"fildl", fildstp_insn, 4, SUF_L, 0x00, 0x02, 0x05, 0, CPU_FPU, 0, 0},
- {"movlps", movhlp_insn, 3, SUF_Z, 0x00, 0x12, 0, 0, CPU_SSE, 0, 0},
- {"vmovmskpdq", movmsk_insn, 4, SUF_Q, 0x66, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmovngw", cmovcc_insn, 3, SUF_W, 0x0E, 0, 0, 0, CPU_686, 0, 0},
- {"cltd", onebyte_insn, 1, SUF_Z, 0x99, 0x20, 0, 0, CPU_386, 0, 0},
- {"fmuls", farith_insn, 7, SUF_S, 0xC8, 0xC8, 0x01, 0, CPU_FPU, 0, 0},
- {"fcom", fcom_insn, 6, SUF_Z, 0xD0, 0x02, 0, 0, CPU_FPU, 0, 0},
- {"andq", arith_insn, 22, SUF_Q, 0x20, 0x04, 0, ONLY_64, 0, 0, 0},
- {"vfmaddps", fma_128_256_insn, 4, SUF_Z, 0x68, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"fst", fst_insn, 3, SUF_Z, 0, 0, 0, 0, CPU_FPU, 0, 0},
- {"vmaskmovpd", vmaskmov_insn, 4, SUF_Z, 0x2D, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cld", onebyte_insn, 1, SUF_Z, 0xFC, 0, 0, 0, 0, 0, 0},
- {"vpinsrd", pinsrd_insn, 2, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"xchgl", xchg_insn, 16, SUF_L, 0, 0, 0, 0, 0, 0, 0},
- {"vcmpgtpd", ssecmp_128_insn, 3, SUF_Z, 0x0E, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmovael", cmovcc_insn, 3, SUF_L, 0x03, 0, 0, 0, CPU_686, 0, 0},
- {"phaddsw", ssse3_insn, 5, SUF_Z, 0x03, 0, 0, 0, CPU_SSSE3, 0, 0},
- {"pclmullqlqdq", pclmulqdq_fixed_insn, 2, SUF_Z, 0x00, 0, 0, 0, CPU_AVX, 0, 0},
- {"cmovnleq", cmovcc_insn, 3, SUF_Q, 0x0F, 0, 0, ONLY_64, CPU_686, 0, 0},
- {"pcmpeqb", mmxsse2_insn, 2, SUF_Z, 0x74, 0, 0, 0, CPU_MMX, 0, 0},
- {"word", NULL, X86_OPERSIZE>>8, 0x10, 0, 0, 0, 0, 0, 0, 0},
- {"blcmskq", xop_gpr_reg_rm_09_insn, 2, SUF_Q, 0x02, 0x01, 0, ONLY_64, CPU_TBM, 0, 0},
- {"vpcomgtud", vpcom_insn, 1, SUF_Z, 0xEE, 0x02, 0, 0, CPU_XOP, 0, 0},
- {"fsubr", farith_insn, 7, SUF_Z, 0xE0, 0xE8, 0x05, 0, CPU_FPU, 0, 0},
- {"cmovp", cmovcc_insn, 3, SUF_Z, 0x0A, 0, 0, 0, CPU_686, 0, 0},
- {"shrq", shift_insn, 16, SUF_Q, 0x05, 0, 0, ONLY_64, 0, 0, 0},
- {"vpcomgtd", vpcom_insn, 1, SUF_Z, 0xCE, 0x02, 0, 0, CPU_XOP, 0, 0},
- {"vfnmsub132sd", vfma_sd_insn, 2, SUF_Z, 0x9F, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vpor", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xEB, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"psllw", pshift_insn, 4, SUF_Z, 0xF1, 0x71, 0x06, 0, CPU_MMX, 0, 0},
- {"fbld", fbldstp_insn, 1, SUF_Z, 0x04, 0, 0, 0, CPU_FPU, 0, 0},
- {"subw", arith_insn, 22, SUF_W, 0x28, 0x05, 0, 0, 0, 0, 0},
- {"vmovhlps", movhllhps_insn, 2, SUF_Z, 0x12, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmovleq", cmovcc_insn, 3, SUF_Q, 0x0E, 0, 0, ONLY_64, CPU_686, 0, 0},
- {"imulw", imul_insn, 19, SUF_W, 0, 0, 0, 0, 0, 0, 0},
- {"cvttss2siq", cvt_rx_xmm32_insn, 4, SUF_Q, 0xF3, 0x2C, 0, ONLY_64, CPU_SSE, 0, 0},
- {"vgatherqpd", gather_64x_64y_insn, 2, SUF_Z, 0x93, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"imulq", imul_insn, 19, SUF_Q, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"ret", retnf_insn, 6, SUF_Z, 0xC2, 0, 0, 0, 0, 0, 0},
- {"vphminposuw", avx_ssse3_2op_insn, 1, SUF_Z, 0x41, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmpneqsd", ssecmp_64_insn, 4, SUF_Z, 0x04, 0xF2, 0, 0, CPU_SSE2, 0, 0},
- {"jae", jcc_insn, 9, SUF_Z, 0x03, 0, 0, 0, 0, 0, 0},
- {"vpavgb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xE0, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cwtd", onebyte_insn, 1, SUF_Z, 0x99, 0x10, 0, 0, 0, 0, 0},
- {"movddup", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x12, 0, 0, CPU_SSE3, 0, 0},
- {"vpcomud", vpcom_imm_insn, 1, SUF_Z, 0xEE, 0, 0, 0, CPU_XOP, 0, 0},
- {"vpmovzxwd", sse4m64_insn, 4, SUF_Z, 0x33, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfnmsubss", fma_128_m32_insn, 3, SUF_Z, 0x7E, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"cmovgew", cmovcc_insn, 3, SUF_W, 0x0D, 0, 0, 0, CPU_686, 0, 0},
- {"bzhi", vex_gpr_reg_rm_nds_0F_insn, 2, SUF_Z, 0x00, 0x38, 0xF5, ONLY_AVX, CPU_BMI2, 0, 0},
- {"setab", setcc_insn, 1, SUF_B, 0x07, 0, 0, 0, CPU_386, 0, 0},
- {"rsqrtss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x52, 0, 0, CPU_SSE, 0, 0},
- {"vfmaddsub213pd", vfma_pd_insn, 2, SUF_Z, 0xA6, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"montmul", padlock_insn, 1, SUF_Z, 0xC0, 0xF3, 0xA6, 0, CPU_PadLock, 0, 0},
- {"rcrq", shift_insn, 16, SUF_Q, 0x03, 0, 0, ONLY_64, 0, 0, 0},
- {"vpaddsb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xEC, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vbroadcastss", vbroadcastss_insn, 4, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmovnz", cmovcc_insn, 3, SUF_Z, 0x05, 0, 0, 0, CPU_686, 0, 0},
- {"cmpxchgw", cmpxchgxadd_insn, 4, SUF_W, 0xB0, 0, 0, 0, CPU_486, 0, 0},
- {"fcompp", twobyte_insn, 1, SUF_Z, 0xDE, 0xD9, 0, 0, CPU_FPU, 0, 0},
- {"vpshab", amd_vpshift_insn, 2, SUF_Z, 0x98, 0, 0, 0, CPU_XOP, 0, 0},
- {"vaddpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x58, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcvtsi2ssq", cvt_xmm_rmx_insn, 6, SUF_Q, 0xF3, 0x2A, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"clc", onebyte_insn, 1, SUF_Z, 0xF8, 0, 0, 0, 0, 0, 0},
- {"cmovlw", cmovcc_insn, 3, SUF_W, 0x0C, 0, 0, 0, CPU_686, 0, 0},
- {"lgdt", twobytemem_insn, 1, SUF_Z, 0x02, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
- {"getsec", twobyte_insn, 1, SUF_Z, 0x0F, 0x37, 0, 0, CPU_SMX, 0, 0},
- {"blsrl", vex_gpr_ndd_rm_0F38_regext_insn, 2, SUF_L, 0x00, 0xF3, 0x01, ONLY_AVX, CPU_BMI1, 0, 0},
- {"vpsignb", ssse3_insn, 5, SUF_Z, 0x08, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pblendw", sse4imm_insn, 2, SUF_Z, 0x0E, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vmovlhps", movhllhps_insn, 2, SUF_Z, 0x16, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"svdc", svdc_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_486, CPU_Cyrix, CPU_SMM},
- {"vmovlpd", movhlp_insn, 3, SUF_Z, 0x66, 0x12, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vdppd", sse4imm_insn, 2, SUF_Z, 0x41, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"xbegin", tsx_xbegin_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_TSX, 0},
- {"sldtq", sldtmsw_insn, 6, SUF_Q, 0x00, 0x00, 0, ONLY_64, CPU_286, 0, 0},
- {"vpcmpeqb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x74, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmpnless", ssecmp_32_insn, 4, SUF_Z, 0x06, 0xF3, 0, 0, CPU_SSE, 0, 0},
- {"fprem1", twobyte_insn, 1, SUF_Z, 0xD9, 0xF5, 0, 0, CPU_286, CPU_FPU, 0},
- {"lssl", lfgss_insn, 3, SUF_L, 0xB2, 0, 0, 0, CPU_386, 0, 0},
- {"inw", in_insn, 12, SUF_W, 0, 0, 0, 0, 0, 0, 0},
- {"bzhiq", vex_gpr_reg_rm_nds_0F_insn, 2, SUF_Q, 0x00, 0x38, 0xF5, ONLY_64|ONLY_AVX, CPU_BMI2, 0, 0},
- {"pop", pop_insn, 23, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
- {"vblendps", sse4imm_256_insn, 4, SUF_Z, 0x0C, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"flds", fld_insn, 4, SUF_S, 0, 0, 0, 0, CPU_FPU, 0, 0},
- {"movsxw", movszx_insn, 5, SUF_W, 0xBE, 0, 0, 0, CPU_386, 0, 0},
- {"movabsw", movabs_insn, 9, SUF_W, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"divps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x5E, 0, 0, CPU_SSE, 0, 0},
- {"vpcomfalseb", vpcom_insn, 1, SUF_Z, 0xCC, 0x06, 0, 0, CPU_XOP, 0, 0},
- {"vcmpsd", cmpsd_insn, 5, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcmpgtq", ssse3_insn, 5, SUF_Z, 0x37, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"setbb", setcc_insn, 1, SUF_B, 0x02, 0, 0, 0, CPU_386, 0, 0},
- {"shrw", shift_insn, 16, SUF_W, 0x05, 0, 0, 0, 0, 0, 0},
- {"andpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x54, 0, 0, CPU_SSE2, 0, 0},
- {"vaesdeclast", aes_insn, 2, SUF_Z, 0x38, 0xDF, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"testb", test_insn, 20, SUF_B, 0, 0, 0, 0, 0, 0, 0},
- {"vfmsub231ss", vfma_ss_insn, 2, SUF_Z, 0xBB, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"rexxz", NULL, X86_REX>>8, 0x45, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"cmpnlepd", ssecmp_128_insn, 3, SUF_Z, 0x06, 0x66, 0, 0, CPU_SSE, 0, 0},
- {"lidt", twobytemem_insn, 1, SUF_Z, 0x03, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
- {"vfmsubps", fma_128_256_insn, 4, SUF_Z, 0x6C, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"svldt", cyrixsmm_insn, 1, SUF_Z, 0x7A, 0, 0, 0, CPU_486, CPU_Cyrix, CPU_SMM},
- {"rclw", shift_insn, 16, SUF_W, 0x02, 0, 0, 0, 0, 0, 0},
- {"vphsubbw", vphaddsub_insn, 1, SUF_Z, 0xE1, 0, 0, 0, CPU_XOP, 0, 0},
- {"vcmpnge_uqss", ssecmp_32_insn, 4, SUF_Z, 0x19, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"movswq", movszx_insn, 5, SUF_W, 0xBE, 0, 0, ONLY_64, CPU_386, 0, 0},
- {"blcic", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x01, 0x05, 0, 0, CPU_386, CPU_TBM, 0},
- {"setns", setcc_insn, 1, SUF_Z, 0x09, 0, 0, 0, CPU_386, 0, 0},
- {"vcmpneq_oqps", ssecmp_128_insn, 3, SUF_Z, 0x0C, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"rorb", shift_insn, 16, SUF_B, 0x01, 0, 0, 0, 0, 0, 0},
- {"vpcomgtuw", vpcom_insn, 1, SUF_Z, 0xED, 0x02, 0, 0, CPU_XOP, 0, 0},
- {"vfmsubss", fma_128_m32_insn, 3, SUF_Z, 0x6E, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"vpperm", vpperm_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_XOP, 0, 0},
- {"cmpxchg", cmpxchgxadd_insn, 4, SUF_Z, 0xB0, 0, 0, 0, CPU_486, 0, 0},
- {"setnbeb", setcc_insn, 1, SUF_B, 0x07, 0, 0, 0, CPU_386, 0, 0},
- {"vmovsd", movsd_insn, 5, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vrcpss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x53, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pmovzxbd", sse4m32_insn, 4, SUF_Z, 0x31, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vroundpd", avx_sse4imm_insn, 3, SUF_Z, 0x09, 0, 0, ONLY_AVX, CPU_SSE41, 0, 0},
- {"popl", pop_insn, 23, SUF_L, 0, 0, 0, NOT_64, CPU_386, 0, 0},
- {"fisttpll", fildstp_insn, 4, SUF_Q, 0x07, 0, 0, 0, CPU_SSE3, 0, 0},
- {"vaddsubpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0xD0, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfmadd132ps", vfma_ps_insn, 2, SUF_Z, 0x98, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"blcfill", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x01, 0x01, 0, 0, CPU_386, CPU_TBM, 0},
- {"vandnpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x55, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"sbbb", arith_insn, 22, SUF_B, 0x18, 0x03, 0, 0, 0, 0, 0},
- {"vcmpfalseps", ssecmp_128_insn, 3, SUF_Z, 0x0B, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"popcnt", cnt_insn, 3, SUF_Z, 0xB8, 0, 0, 0, CPU_SSE42, 0, 0},
- {"vpcomnequd", vpcom_insn, 1, SUF_Z, 0xEE, 0x05, 0, 0, CPU_XOP, 0, 0},
- {"adcq", arith_insn, 22, SUF_Q, 0x10, 0x02, 0, ONLY_64, 0, 0, 0},
- {"vpcomequw", vpcom_insn, 1, SUF_Z, 0xED, 0x04, 0, 0, CPU_XOP, 0, 0},
- {"prefetcht1", twobytemem_insn, 1, SUF_Z, 0x02, 0x0F, 0x18, 0, CPU_P3, 0, 0},
- {"movdqa", movau_insn, 6, SUF_Z, 0x66, 0x6F, 0x10, 0, CPU_SSE2, 0, 0},
- {"vmovq", vmovq_insn, 5, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmpxchg16b", cmpxchg16b_insn, 1, SUF_Z, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"smovq", onebyte_insn, 1, SUF_Z, 0xA5, 0x40, 0, ONLY_64, 0, 0, 0},
- {"fildq", fildstp_insn, 4, SUF_Q, 0x00, 0x02, 0x05, 0, CPU_FPU, 0, 0},
- {"ficoml", fiarith_insn, 2, SUF_L, 0x02, 0xDA, 0, 0, CPU_FPU, 0, 0},
- {"cmovae", cmovcc_insn, 3, SUF_Z, 0x03, 0, 0, 0, CPU_686, 0, 0},
- {"vaddsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x58, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"movb", mov_insn, 69, SUF_B, 0, 0, 0, 0, 0, 0, 0},
- {"fist", fiarith_insn, 2, SUF_Z, 0x02, 0xDB, 0, 0, CPU_FPU, 0, 0},
- {"vpcomb", vpcom_imm_insn, 1, SUF_Z, 0xCC, 0, 0, 0, CPU_XOP, 0, 0},
- {"vcmpneq_oqss", ssecmp_32_insn, 4, SUF_Z, 0x0C, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"xorpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x57, 0, 0, CPU_SSE2, 0, 0},
- {"cmpsd", cmpsd_insn, 5, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
- {"movabs", movabs_insn, 9, SUF_Z, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"jrcxz", jcxz_insn, 2, SUF_Z, 0x40, 0, 0, ONLY_64, 0, 0, 0},
- {"vmovhpd", movhlp_insn, 3, SUF_Z, 0x66, 0x16, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmovpq", cmovcc_insn, 3, SUF_Q, 0x0A, 0, 0, ONLY_64, CPU_686, 0, 0},
- {"vpsubw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xF9, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"smovl", onebyte_insn, 1, SUF_Z, 0xA5, 0x20, 0, 0, CPU_386, 0, 0},
- {"and", arith_insn, 22, SUF_Z, 0x20, 0x04, 0, 0, 0, 0, 0},
- {"andw", arith_insn, 22, SUF_W, 0x20, 0x04, 0, 0, 0, 0, 0},
- {"cmpleps", ssecmp_128_insn, 3, SUF_Z, 0x02, 0, 0, 0, CPU_SSE, 0, 0},
- {"vpmovzxdq", sse4m64_insn, 4, SUF_Z, 0x35, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"subss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5C, 0, 0, CPU_SSE, 0, 0},
- {"vpcomtrueq", vpcom_insn, 1, SUF_Z, 0xCF, 0x07, 0, 0, CPU_XOP, 0, 0},
- {"fldl2e", twobyte_insn, 1, SUF_Z, 0xD9, 0xEA, 0, 0, CPU_FPU, 0, 0},
- {"negw", f6_insn, 4, SUF_W, 0x03, 0, 0, 0, 0, 0, 0},
- {"fidivl", fiarith_insn, 2, SUF_L, 0x06, 0xDA, 0, 0, CPU_FPU, 0, 0},
- {"setnc", setcc_insn, 1, SUF_Z, 0x03, 0, 0, 0, CPU_386, 0, 0},
- {"clts", twobyte_insn, 1, SUF_Z, 0x0F, 0x06, 0, 0, CPU_286, CPU_Priv, 0},
- {"vcmpgtps", ssecmp_128_insn, 3, SUF_Z, 0x0E, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"setnl", setcc_insn, 1, SUF_Z, 0x0D, 0, 0, 0, CPU_386, 0, 0},
- {"vphaddd", ssse3_insn, 5, SUF_Z, 0x02, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcomneub", vpcom_insn, 1, SUF_Z, 0xEC, 0x05, 0, 0, CPU_XOP, 0, 0},
- {"cmp", arith_insn, 22, SUF_Z, 0x38, 0x07, 0, 0, 0, 0, 0},
- {"fstsww", fstsw_insn, 2, SUF_W, 0, 0, 0, 0, CPU_FPU, 0, 0},
- {"cmpordpd", ssecmp_128_insn, 3, SUF_Z, 0x07, 0x66, 0, 0, CPU_SSE, 0, 0},
- {"punpckhbw", mmxsse2_insn, 2, SUF_Z, 0x68, 0, 0, 0, CPU_MMX, 0, 0},
- {"svts", cyrixsmm_insn, 1, SUF_Z, 0x7C, 0, 0, 0, CPU_486, CPU_Cyrix, CPU_SMM},
- {"cmpq", arith_insn, 22, SUF_Q, 0x38, 0x07, 0, ONLY_64, 0, 0, 0},
- {"cmovbq", cmovcc_insn, 3, SUF_Q, 0x02, 0, 0, ONLY_64, CPU_686, 0, 0},
- {"ficomp", fiarith_insn, 2, SUF_Z, 0x03, 0xDA, 0, 0, CPU_FPU, 0, 0},
- {"vmmcall", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xD9, 0, CPU_SVM, 0, 0},
- {"cqo", onebyte_insn, 1, SUF_Z, 0x99, 0x40, 0, ONLY_64, 0, 0, 0},
- {"vcmpnlepd", ssecmp_128_insn, 3, SUF_Z, 0x06, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"setnb", setcc_insn, 1, SUF_Z, 0x03, 0, 0, 0, CPU_386, 0, 0},
- {"vpsllvd", vpshiftv_vexw0_avx2_insn, 2, SUF_Z, 0x47, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"vcmplt_oqpd", ssecmp_128_insn, 3, SUF_Z, 0x11, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pextrw", pextrw_insn, 7, SUF_Z, 0, 0, 0, 0, CPU_MMX, CPU_P3, 0},
- {"loopzl", loopl_insn, 4, SUF_Z, 0x01, 0x20, 0, 0, 0, 0, 0},
- {"retq", retnf_insn, 6, SUF_Z, 0xC2, 0, 0, ONLY_64, 0, 0, 0},
- {"vcmpordsd", ssecmp_64_insn, 4, SUF_Z, 0x07, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"seteb", setcc_insn, 1, SUF_B, 0x04, 0, 0, 0, CPU_386, 0, 0},
- {"vmxoff", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xC4, 0, CPU_P4, 0, 0},
- {"pfcmpeq", now3d_insn, 1, SUF_Z, 0xB0, 0, 0, 0, CPU_3DNow, 0, 0},
- {"pmovsxbq", sse4m16_insn, 4, SUF_Z, 0x22, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vfnmadd231ss", vfma_ss_insn, 2, SUF_Z, 0xBD, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"loopel", loopl_insn, 4, SUF_Z, 0x01, 0x20, 0, 0, 0, 0, 0},
- {"pause", onebyte_prefix_insn, 1, SUF_Z, 0xF3, 0x90, 0, 0, CPU_P4, 0, 0},
- {"addps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x58, 0, 0, CPU_SSE, 0, 0},
- {"vcmpfalse_ossd", ssecmp_64_insn, 4, SUF_Z, 0x1B, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"rcr", shift_insn, 16, SUF_Z, 0x03, 0, 0, 0, 0, 0, 0},
- {"vfmadd213pd", vfma_pd_insn, 2, SUF_Z, 0xA8, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"xchg", xchg_insn, 16, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
- {"ucomiss", xmm_xmm32_insn, 4, SUF_Z, 0x00, 0x2E, 0, 0, CPU_SSE, 0, 0},
- {"popq", pop_insn, 23, SUF_Q, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"lfsq", lfgss_insn, 3, SUF_Q, 0xB4, 0, 0, ONLY_64, CPU_386, 0, 0},
- {"vcmpneq_usss", ssecmp_32_insn, 4, SUF_Z, 0x14, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"crc32w", crc32_insn, 5, SUF_W, 0, 0, 0, 0, CPU_386, CPU_SSE42, 0},
- {"setngeb", setcc_insn, 1, SUF_B, 0x0C, 0, 0, 0, CPU_386, 0, 0},
- {"vpalignr", sse4imm_256avx2_insn, 4, SUF_Z, 0x0F, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcomtrueuq", vpcom_insn, 1, SUF_Z, 0xEF, 0x07, 0, 0, CPU_XOP, 0, 0},
- {"pinsrb", pinsrb_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_SSE41, 0, 0},
- {"movshdup", xmm_xmm128_insn, 2, SUF_Z, 0xF3, 0x16, 0, 0, CPU_SSE3, 0, 0},
- {"cmovll", cmovcc_insn, 3, SUF_L, 0x0C, 0, 0, 0, CPU_686, 0, 0},
- {"vpextrd", pextrd_insn, 1, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"lgdtl", twobytemem_insn, 1, SUF_L, 0x02, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
- {"vpblendvb", avx2_sse4xmm0_insn, 2, SUF_Z, 0x4C, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"setlb", setcc_insn, 1, SUF_B, 0x0C, 0, 0, 0, CPU_386, 0, 0},
- {"vfmsubadd213ps", vfma_ps_insn, 2, SUF_Z, 0xA7, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"unpckhpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x15, 0, 0, CPU_SSE2, 0, 0},
- {"vpcomfalseud", vpcom_insn, 1, SUF_Z, 0xEE, 0x06, 0, 0, CPU_XOP, 0, 0},
- {"cmovnlq", cmovcc_insn, 3, SUF_Q, 0x0D, 0, 0, ONLY_64, CPU_686, 0, 0},
- {"cmovge", cmovcc_insn, 3, SUF_Z, 0x0D, 0, 0, 0, CPU_686, 0, 0},
- {"movabsb", movabs_insn, 9, SUF_B, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"popa", onebyte_insn, 1, SUF_Z, 0x61, 0x00, 0, NOT_64, CPU_186, 0, 0},
- {"invvpid", eptvpid_insn, 2, SUF_Z, 0x01, 0, 0, 0, CPU_386, CPU_EPTVPID, 0},
- {"vpcomneud", vpcom_insn, 1, SUF_Z, 0xEE, 0x05, 0, 0, CPU_XOP, 0, 0},
- {"blsrq", vex_gpr_ndd_rm_0F38_regext_insn, 2, SUF_Q, 0x00, 0xF3, 0x01, ONLY_64|ONLY_AVX, CPU_BMI1, 0, 0},
- {"ljmpl", ljmpcall_insn, 7, SUF_L, 0x05, 0xEA, 0, 0, CPU_386, 0, 0},
- {"movzx", movszx_insn, 5, SUF_Z, 0xB6, 0, 0, 0, CPU_386, 0, 0},
- {"pi2fd", now3d_insn, 1, SUF_Z, 0x0D, 0, 0, 0, CPU_3DNow, 0, 0},
- {"setng", setcc_insn, 1, SUF_Z, 0x0E, 0, 0, 0, CPU_386, 0, 0},
- {"vpcomfalsed", vpcom_insn, 1, SUF_Z, 0xCE, 0x06, 0, 0, CPU_XOP, 0, 0},
- {"vpabsb", avx2_ssse3_2op_insn, 2, SUF_Z, 0x1C, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpgesd", ssecmp_64_insn, 4, SUF_Z, 0x0D, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfnmaddsd", fma_128_m64_insn, 3, SUF_Z, 0x7B, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"rdgsbase", fs_gs_base_insn, 2, SUF_Z, 0x01, 0, 0, ONLY_64, CPU_FSGSBASE, 0, 0},
- {"testl", test_insn, 20, SUF_L, 0, 0, 0, 0, CPU_386, 0, 0},
- {"vsubsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"shrxl", vex_gpr_reg_rm_nds_0F_insn, 2, SUF_L, 0xF2, 0x38, 0xF7, ONLY_AVX, CPU_BMI2, 0, 0},
- {"enter", enter_insn, 3, SUF_Z, 0, 0, 0, 0, CPU_186, 0, 0},
- {"vpmacsdqh", vpma_insn, 1, SUF_Z, 0x9F, 0, 0, 0, CPU_XOP, 0, 0},
- {"vfnmadd213ss", vfma_ss_insn, 2, SUF_Z, 0xAD, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"setaeb", setcc_insn, 1, SUF_B, 0x03, 0, 0, 0, CPU_386, 0, 0},
- {"vpgatherdq", gather_64x_64x_insn, 2, SUF_Z, 0x90, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"cmpxchg8b", cmpxchg8b_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_586, 0, 0},
- {"cvttps2pi", cvt_mm_xmm64_insn, 2, SUF_Z, 0x2C, 0, 0, 0, CPU_SSE, 0, 0},
- {"pmovmskb", pmovmskb_insn, 6, SUF_Z, 0, 0, 0, 0, CPU_MMX, CPU_P3, 0},
- {"fdivp", farithp_insn, 3, SUF_Z, 0xF0, 0, 0, 0, CPU_FPU, 0, 0},
- {"vcmpnle_uqsd", ssecmp_64_insn, 4, SUF_Z, 0x16, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cvtsd2si", cvt_rx_xmm64_insn, 4, SUF_Z, 0xF2, 0x2D, 0, 0, CPU_386, CPU_SSE2, 0},
- {"vpcomgeq", vpcom_insn, 1, SUF_Z, 0xCF, 0x03, 0, 0, CPU_XOP, 0, 0},
- {"vfnmadd132ss", vfma_ss_insn, 2, SUF_Z, 0x9D, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vpmacssdql", vpma_insn, 1, SUF_Z, 0x87, 0, 0, 0, CPU_XOP, 0, 0},
- {"vpunpcklqdq", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x6C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"sysenter", twobyte_insn, 1, SUF_Z, 0x0F, 0x34, 0, NOT_64, CPU_686, 0, 0},
- {"popw", pop_insn, 23, SUF_W, 0, 0, 0, 0, 0, 0, 0},
- {"lodsw", onebyte_insn, 1, SUF_Z, 0xAD, 0x10, 0, 0, 0, 0, 0},
- {"vcmpgt_oqps", ssecmp_128_insn, 3, SUF_Z, 0x1E, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pmovmskbl", pmovmskb_insn, 6, SUF_L, 0, 0, 0, 0, CPU_MMX, CPU_P3, 0},
- {"pinsrq", pinsrq_insn, 2, SUF_Z, 0, 0, 0, ONLY_64, CPU_SSE41, 0, 0},
- {"movsl", onebyte_insn, 1, SUF_Z, 0xA5, 0x20, 0, 0, CPU_386, 0, 0},
- {"vcmptrue_usps", ssecmp_128_insn, 3, SUF_Z, 0x1F, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"addr64", NULL, X86_ADDRSIZE>>8, 0x40, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"fsin", twobyte_insn, 1, SUF_Z, 0xD9, 0xFE, 0, 0, CPU_286, CPU_FPU, 0},
- {"adoxl", vex_gpr_ndd_rm_0F38_insn, 2, SUF_L, 0xF3, 0xF6, 0, 0, CPU_ADX, 0, 0},
- {"vpcomnequq", vpcom_insn, 1, SUF_Z, 0xEF, 0x05, 0, 0, CPU_XOP, 0, 0},
- {"pfmax", now3d_insn, 1, SUF_Z, 0xA4, 0, 0, 0, CPU_3DNow, 0, 0},
- {"pfcmpge", now3d_insn, 1, SUF_Z, 0x90, 0, 0, 0, CPU_3DNow, 0, 0},
- {"loopnz", loop_insn, 8, SUF_Z, 0x00, 0, 0, 0, 0, 0, 0},
- {"vcmpnle_uqss", ssecmp_32_insn, 4, SUF_Z, 0x16, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"setpeb", setcc_insn, 1, SUF_B, 0x0A, 0, 0, 0, CPU_386, 0, 0},
- {"vextractps", extractps_insn, 2, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"jc", jcc_insn, 9, SUF_Z, 0x02, 0, 0, 0, 0, 0, 0},
- {"vpcomltq", vpcom_insn, 1, SUF_Z, 0xCF, 0x00, 0, 0, CPU_XOP, 0, 0},
- {"vfmsubsd", fma_128_m64_insn, 3, SUF_Z, 0x6F, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"movmskpd", movmsk_insn, 4, SUF_Z, 0x66, 0, 0, 0, CPU_SSE2, 0, 0},
- {"vfmsubadd231ps", vfma_ps_insn, 2, SUF_Z, 0xB7, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vcmpeq_usps", ssecmp_128_insn, 3, SUF_Z, 0x18, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fistpl", fildstp_insn, 4, SUF_L, 0x03, 0x02, 0x07, 0, CPU_FPU, 0, 0},
- {"fistpll", fbldstp_insn, 1, SUF_Z, 0x07, 0, 0, 0, CPU_FPU, 0, 0},
- {"jnbe", jcc_insn, 9, SUF_Z, 0x07, 0, 0, 0, 0, 0, 0},
- {"pmovsxwq", sse4m32_insn, 4, SUF_Z, 0x24, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vpcomgtub", vpcom_insn, 1, SUF_Z, 0xEC, 0x02, 0, 0, CPU_XOP, 0, 0},
- {"unpcklps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x14, 0, 0, CPU_SSE, 0, 0},
- {"btr", bittest_insn, 6, SUF_Z, 0xB3, 0x06, 0, 0, CPU_386, 0, 0},
- {"cmovnsw", cmovcc_insn, 3, SUF_W, 0x09, 0, 0, 0, CPU_686, 0, 0},
- {"sbbl", arith_insn, 22, SUF_L, 0x18, 0x03, 0, 0, CPU_386, 0, 0},
- {"idivq", div_insn, 8, SUF_Q, 0x07, 0, 0, ONLY_64, 0, 0, 0},
- {"strw", str_insn, 4, SUF_W, 0, 0, 0, 0, CPU_286, CPU_Prot, 0},
- {"psignw", ssse3_insn, 5, SUF_Z, 0x09, 0, 0, 0, CPU_SSSE3, 0, 0},
- {"vcvtsi2sdq", cvt_xmm_rmx_insn, 6, SUF_Q, 0xF2, 0x2A, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"setgb", setcc_insn, 1, SUF_B, 0x0F, 0, 0, 0, CPU_386, 0, 0},
- {"vpextrw", pextrw_insn, 7, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmoval", cmovcc_insn, 3, SUF_L, 0x07, 0, 0, 0, CPU_686, 0, 0},
- {"vpextrwq", pextrw_insn, 7, SUF_Q, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"sldtl", sldtmsw_insn, 6, SUF_L, 0x00, 0x00, 0, 0, CPU_386, 0, 0},
- {"vcmpunordss", ssecmp_32_insn, 4, SUF_Z, 0x03, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"aesenc", aes_insn, 2, SUF_Z, 0x38, 0xDC, 0, 0, CPU_AVX, 0, 0},
- {"pmaddubsw", ssse3_insn, 5, SUF_Z, 0x04, 0, 0, 0, CPU_SSSE3, 0, 0},
- {"cvtsi2ss", cvt_xmm_rmx_insn, 6, SUF_Z, 0xF3, 0x2A, 0, 0, CPU_386, CPU_SSE, 0},
- {"vphaddw", ssse3_insn, 5, SUF_Z, 0x01, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"repnz", NULL, X86_LOCKREP>>8, 0xF2, 0, 0, 0, 0, 0, 0, 0},
- {"fidivrl", fiarith_insn, 2, SUF_L, 0x07, 0xDA, 0, 0, CPU_FPU, 0, 0},
- {"fsqrt", twobyte_insn, 1, SUF_Z, 0xD9, 0xFA, 0, 0, CPU_FPU, 0, 0},
- {"fsetpm", twobyte_insn, 1, SUF_Z, 0xDB, 0xE4, 0, 0, CPU_286, CPU_FPU, CPU_Obs},
- {"insw", onebyte_insn, 1, SUF_Z, 0x6D, 0x10, 0, 0, 0, 0, 0},
- {"setbeb", setcc_insn, 1, SUF_B, 0x06, 0, 0, 0, CPU_386, 0, 0},
- {"vpsubb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xF8, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"rex64xy", NULL, X86_REX>>8, 0x4E, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"vpsrldq", pslrldq_insn, 4, SUF_Z, 0x03, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"xorq", arith_insn, 22, SUF_Q, 0x30, 0x06, 0, ONLY_64, 0, 0, 0},
- {"punpcklbw", mmxsse2_insn, 2, SUF_Z, 0x60, 0, 0, 0, CPU_MMX, 0, 0},
- {"rdtscp", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xF9, 0, CPU_686, CPU_AMD, CPU_Priv},
- {"lfence", threebyte_insn, 1, SUF_Z, 0x0F, 0xAE, 0xE8, 0, CPU_P3, 0, 0},
- {"vpcmpestri", sse4pcmpstr_insn, 1, SUF_Z, 0x61, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"divpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x5E, 0, 0, CPU_SSE2, 0, 0},
- {"vcmpss", xmm_xmm32_imm_insn, 4, SUF_Z, 0xF3, 0xC2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fidivs", fiarith_insn, 2, SUF_S, 0x06, 0xDA, 0, 0, CPU_FPU, 0, 0},
- {"pcmpeqq", sse4_insn, 2, SUF_Z, 0x29, 0, 0, 0, CPU_SSE41, 0, 0},
- {"setnbe", setcc_insn, 1, SUF_Z, 0x07, 0, 0, 0, CPU_386, 0, 0},
- {"pshufb", ssse3_insn, 5, SUF_Z, 0x00, 0, 0, 0, CPU_SSSE3, 0, 0},
- {"cmovgeq", cmovcc_insn, 3, SUF_Q, 0x0D, 0, 0, ONLY_64, CPU_686, 0, 0},
- {"vpaddq", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xD4, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"clgi", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xDD, 0, CPU_SVM, 0, 0},
- {"rcpps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x53, 0, 0, CPU_SSE, 0, 0},
- {"cmovno", cmovcc_insn, 3, SUF_Z, 0x01, 0, 0, 0, CPU_686, 0, 0},
- {"addss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x58, 0, 0, CPU_SSE, 0, 0},
- {"vcmpneqss", ssecmp_32_insn, 4, SUF_Z, 0x04, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pavgusb", now3d_insn, 1, SUF_Z, 0xBF, 0, 0, 0, CPU_3DNow, 0, 0},
- {"vfmadd213ps", vfma_ps_insn, 2, SUF_Z, 0xA8, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vpcomneqw", vpcom_insn, 1, SUF_Z, 0xCD, 0x05, 0, 0, CPU_XOP, 0, 0},
- {"vpmaxsb", ssse3_insn, 5, SUF_Z, 0x3C, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pminsw", mmxsse2_insn, 2, SUF_Z, 0xEA, 0, 0, 0, CPU_MMX, CPU_P3, 0},
- {"vcmpnge_uqpd", ssecmp_128_insn, 3, SUF_Z, 0x19, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcomtrueud", vpcom_insn, 1, SUF_Z, 0xEE, 0x07, 0, 0, CPU_XOP, 0, 0},
- {"setpe", setcc_insn, 1, SUF_Z, 0x0A, 0, 0, 0, CPU_386, 0, 0},
- {"cmovnlw", cmovcc_insn, 3, SUF_W, 0x0D, 0, 0, 0, CPU_686, 0, 0},
- {"cbw", onebyte_insn, 1, SUF_Z, 0x98, 0x10, 0, 0, 0, 0, 0},
- {"vcmpge_oqss", ssecmp_32_insn, 4, SUF_Z, 0x1D, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"jpo", jcc_insn, 9, SUF_Z, 0x0B, 0, 0, 0, 0, 0, 0},
- {"leavel", onebyte_insn, 1, SUF_Z, 0xC9, 0x00, 0x40, 0, CPU_186, 0, 0},
- {"mpsadbw", sse4imm_insn, 2, SUF_Z, 0x42, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vcvttsd2si", cvt_rx_xmm64_insn, 4, SUF_Z, 0xF2, 0x2C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vminps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x5D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmpnleps", ssecmp_128_insn, 3, SUF_Z, 0x06, 0, 0, 0, CPU_SSE, 0, 0},
- {"blendvpd", sse4xmm0_insn, 2, SUF_Z, 0x15, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vaddss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x58, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcomltuw", vpcom_insn, 1, SUF_Z, 0xED, 0x00, 0, 0, CPU_XOP, 0, 0},
- {"orw", arith_insn, 22, SUF_W, 0x08, 0x01, 0, 0, 0, 0, 0},
- {"adword", NULL, X86_ADDRSIZE>>8, 0x20, 0, 0, 0, 0, 0, 0, 0},
- {"vprotb", vprot_insn, 3, SUF_Z, 0x00, 0, 0, 0, CPU_XOP, 0, 0},
- {"pclmulhqhqdq", pclmulqdq_fixed_insn, 2, SUF_Z, 0x11, 0, 0, 0, CPU_AVX, 0, 0},
- {"shrdq", shlrd_insn, 9, SUF_Q, 0xAC, 0, 0, ONLY_64, CPU_386, 0, 0},
- {"vminss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpmaxub", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xDE, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcomltud", vpcom_insn, 1, SUF_Z, 0xEE, 0x00, 0, 0, CPU_XOP, 0, 0},
- {"vpaddusw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xDD, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"movsq", onebyte_insn, 1, SUF_Z, 0xA5, 0x40, 0, ONLY_64, 0, 0, 0},
- {"subsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5C, 0, 0, CPU_SSE2, 0, 0},
- {"vfmaddsubpd", fma_128_256_insn, 4, SUF_Z, 0x5D, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"cvtdq2ps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x5B, 0, 0, CPU_SSE2, 0, 0},
- {"prefetch", twobytemem_insn, 1, SUF_Z, 0x00, 0x0F, 0x0D, 0, CPU_3DNow, 0, 0},
- {"vaesenc", aes_insn, 2, SUF_Z, 0x38, 0xDC, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"shl", shift_insn, 16, SUF_Z, 0x04, 0, 0, 0, 0, 0, 0},
- {"vcmpunord_spd", ssecmp_128_insn, 3, SUF_Z, 0x13, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"bsfw", bsfr_insn, 3, SUF_W, 0xBC, 0, 0, 0, CPU_386, 0, 0},
- {"bswap", bswap_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_486, 0, 0},
- {"vfmadd231sd", vfma_sd_insn, 2, SUF_Z, 0xB9, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"fistps", fildstp_insn, 4, SUF_S, 0x03, 0x02, 0x07, 0, CPU_FPU, 0, 0},
- {"fdivs", farith_insn, 7, SUF_S, 0xF8, 0xF0, 0x06, 0, CPU_FPU, 0, 0},
- {"pextrq", pextrq_insn, 1, SUF_Z, 0, 0, 0, ONLY_64, CPU_SSE41, 0, 0},
- {"adcl", arith_insn, 22, SUF_L, 0x10, 0x02, 0, 0, CPU_386, 0, 0},
- {"vpmacsdql", vpma_insn, 1, SUF_Z, 0x97, 0, 0, 0, CPU_XOP, 0, 0},
- {"vpcomeqq", vpcom_insn, 1, SUF_Z, 0xCF, 0x04, 0, 0, CPU_XOP, 0, 0},
- {"tzmskq", xop_gpr_reg_rm_09_insn, 2, SUF_Q, 0x01, 0x04, 0, ONLY_64, CPU_TBM, 0, 0},
- {"rcl", shift_insn, 16, SUF_Z, 0x02, 0, 0, 0, 0, 0, 0},
- {"vsqrtsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x51, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cdqe", onebyte_insn, 1, SUF_Z, 0x98, 0x40, 0, ONLY_64, 0, 0, 0},
- {"negq", f6_insn, 4, SUF_Q, 0x03, 0, 0, ONLY_64, 0, 0, 0},
- {"pextrb", pextrb_insn, 3, SUF_Z, 0, 0, 0, 0, CPU_SSE41, 0, 0},
- {"movzbq", movszx_insn, 5, SUF_B, 0xB6, 0, 0, ONLY_64, CPU_386, 0, 0},
- {"vcmpngtps", ssecmp_128_insn, 3, SUF_Z, 0x0A, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcomgeb", vpcom_insn, 1, SUF_Z, 0xCC, 0x03, 0, 0, CPU_XOP, 0, 0},
- {"lea", lea_insn, 3, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
- {"invd", twobyte_insn, 1, SUF_Z, 0x0F, 0x08, 0, 0, CPU_486, CPU_Priv, 0},
- {"sarxl", vex_gpr_reg_rm_nds_0F_insn, 2, SUF_L, 0xF3, 0x38, 0xF7, ONLY_AVX, CPU_BMI2, 0, 0},
- {"movdqu", movau_insn, 6, SUF_Z, 0xF3, 0x6F, 0x10, 0, CPU_SSE2, 0, 0},
- {"vdivsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5E, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmpneqpd", ssecmp_128_insn, 3, SUF_Z, 0x04, 0x66, 0, 0, CPU_SSE, 0, 0},
- {"xcryptecb", padlock_insn, 1, SUF_Z, 0xC8, 0xF3, 0xA7, 0, CPU_PadLock, 0, 0},
- {"shll", shift_insn, 16, SUF_L, 0x04, 0, 0, 0, CPU_386, 0, 0},
- {"int", int_insn, 1, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
- {"wrfsbase", fs_gs_base_insn, 2, SUF_Z, 0x02, 0, 0, ONLY_64, CPU_FSGSBASE, 0, 0},
- {"shufps", xmm_xmm128_imm_insn, 1, SUF_Z, 0x00, 0xC6, 0, 0, CPU_SSE, 0, 0},
- {"subpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x5C, 0, 0, CPU_SSE2, 0, 0},
- {"vcvtpd2psy", avx_cvt_xmm128_y_insn, 1, SUF_Z, 0x66, 0x5A, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmovnew", cmovcc_insn, 3, SUF_W, 0x05, 0, 0, 0, CPU_686, 0, 0},
- {"crc32", crc32_insn, 5, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_SSE42, 0},
- {"vmovapd", movau_insn, 6, SUF_Z, 0x66, 0x28, 0x01, ONLY_AVX, CPU_AVX, 0, 0},
- {"rdrand", rdrand_insn, 3, SUF_Z, 0x06, 0, 0, 0, CPU_RDRAND, 0, 0},
- {"cmovnbew", cmovcc_insn, 3, SUF_W, 0x07, 0, 0, 0, CPU_686, 0, 0},
- {"invvpidl", eptvpid_insn, 2, SUF_L, 0x01, 0, 0, NOT_64, CPU_386, CPU_EPTVPID, 0},
- {"ljmp", ljmpcall_insn, 7, SUF_Z, 0x05, 0xEA, 0, 0, 0, 0, 0},
- {"vcmpeqpd", ssecmp_128_insn, 3, SUF_Z, 0x00, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"popfl", onebyte_insn, 1, SUF_Z, 0x9D, 0x20, 0, NOT_64, CPU_386, 0, 0},
- {"wrgsbase", fs_gs_base_insn, 2, SUF_Z, 0x03, 0, 0, ONLY_64, CPU_FSGSBASE, 0, 0},
- {"lodsb", onebyte_insn, 1, SUF_Z, 0xAC, 0x00, 0, 0, 0, 0, 0},
- {"vcmpgess", ssecmp_32_insn, 4, SUF_Z, 0x0D, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"aesenclast", aes_insn, 2, SUF_Z, 0x38, 0xDD, 0, 0, CPU_AVX, 0, 0},
- {"cmovel", cmovcc_insn, 3, SUF_L, 0x04, 0, 0, 0, CPU_686, 0, 0},
- {"vpsignd", ssse3_insn, 5, SUF_Z, 0x0A, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"stosb", onebyte_insn, 1, SUF_Z, 0xAA, 0x00, 0, 0, 0, 0, 0},
- {"smovb", onebyte_insn, 1, SUF_Z, 0xA4, 0x00, 0, 0, 0, 0, 0},
- {"vcmpeqss", ssecmp_32_insn, 4, SUF_Z, 0x00, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpandn", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xDF, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vmovmskpsl", movmsk_insn, 4, SUF_L, 0x00, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vmovntps", movnt_insn, 2, SUF_Z, 0x00, 0x2B, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcvtpd2psx", avx_cvt_xmm128_x_insn, 1, SUF_Z, 0x66, 0x5A, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmpordps", ssecmp_128_insn, 3, SUF_Z, 0x07, 0, 0, 0, CPU_SSE, 0, 0},
- {"vpaddd", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xFE, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fptan", twobyte_insn, 1, SUF_Z, 0xD9, 0xF2, 0, 0, CPU_FPU, 0, 0},
- {"shldw", shlrd_insn, 9, SUF_W, 0xA4, 0, 0, 0, CPU_386, 0, 0},
- {"outsl", onebyte_insn, 1, SUF_Z, 0x6F, 0x20, 0, 0, CPU_386, 0, 0},
- {"vmovmskpsq", movmsk_insn, 4, SUF_Q, 0x00, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fldcw", fldnstcw_insn, 1, SUF_Z, 0x05, 0, 0, 0, CPU_FPU, 0, 0},
- {"vcmpord_ssd", ssecmp_64_insn, 4, SUF_Z, 0x17, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfnmsub231sd", vfma_sd_insn, 2, SUF_Z, 0xBF, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"pmullw", mmxsse2_insn, 2, SUF_Z, 0xD5, 0, 0, 0, CPU_MMX, 0, 0},
- {"jno", jcc_insn, 9, SUF_Z, 0x01, 0, 0, 0, 0, 0, 0},
- {"vprotq", vprot_insn, 3, SUF_Z, 0x03, 0, 0, 0, CPU_XOP, 0, 0},
- {"vcmpneq_ospd", ssecmp_128_insn, 3, SUF_Z, 0x1C, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"sarb", shift_insn, 16, SUF_B, 0x07, 0, 0, 0, 0, 0, 0},
- {"aaa", onebyte_insn, 1, SUF_Z, 0x37, 0, 0, NOT_64, 0, 0, 0},
- {"psubd", mmxsse2_insn, 2, SUF_Z, 0xFA, 0, 0, 0, CPU_MMX, 0, 0},
- {"cmovpew", cmovcc_insn, 3, SUF_W, 0x0A, 0, 0, 0, CPU_686, 0, 0},
- {"blci", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x02, 0x06, 0, 0, CPU_386, CPU_TBM, 0},
- {"cmpnltsd", ssecmp_64_insn, 4, SUF_Z, 0x05, 0xF2, 0, 0, CPU_SSE2, 0, 0},
- {"rex64x", NULL, X86_REX>>8, 0x4C, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"blsr", vex_gpr_ndd_rm_0F38_regext_insn, 2, SUF_Z, 0x00, 0xF3, 0x01, ONLY_AVX, CPU_BMI1, 0, 0},
- {"vaeskeygenassist", aes_imm_insn, 1, SUF_Z, 0x3A, 0xDF, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmpnltss", ssecmp_32_insn, 4, SUF_Z, 0x05, 0xF3, 0, 0, CPU_SSE, 0, 0},
- {"cwde", onebyte_insn, 1, SUF_Z, 0x98, 0x20, 0, 0, CPU_386, 0, 0},
- {"fcmovne", fcmovcc_insn, 1, SUF_Z, 0xDB, 0xC8, 0, 0, CPU_686, CPU_FPU, 0},
- {"sscab", onebyte_insn, 1, SUF_Z, 0xAE, 0x00, 0, 0, 0, 0, 0},
- {"vphaddbq", vphaddsub_insn, 1, SUF_Z, 0xC3, 0, 0, 0, CPU_XOP, 0, 0},
- {"vcvttss2sil", cvt_rx_xmm32_insn, 4, SUF_L, 0xF3, 0x2C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"roundsd", sse4m64imm_insn, 4, SUF_Z, 0x0B, 0, 0, 0, CPU_SSE41, 0, 0},
- {"pfacc", now3d_insn, 1, SUF_Z, 0xAE, 0, 0, 0, CPU_3DNow, 0, 0},
- {"fsubl", farith_insn, 7, SUF_L, 0xE8, 0xE0, 0x04, 0, CPU_FPU, 0, 0},
- {"invlpg", twobytemem_insn, 1, SUF_Z, 0x07, 0x0F, 0x01, 0, CPU_486, CPU_Priv, 0},
- {"pextl", vex_gpr_reg_nds_rm_0F_insn, 2, SUF_L, 0xF3, 0x38, 0xF5, ONLY_AVX, CPU_BMI2, 0, 0},
- {"fldenvl", onebytemem_insn, 1, SUF_L, 0x04, 0xD9, 0, 0, CPU_FPU, 0, 0},
- {"lretq", retnf_insn, 6, SUF_Q, 0xCA, 0x40, 0, ONLY_64, 0, 0, 0},
- {"addr16", NULL, X86_ADDRSIZE>>8, 0x10, 0, 0, 0, 0, 0, 0, 0},
- {"cmovncl", cmovcc_insn, 3, SUF_L, 0x03, 0, 0, 0, CPU_686, 0, 0},
- {"movzbw", movszx_insn, 5, SUF_B, 0xB6, 0, 0, 0, CPU_386, 0, 0},
- {"pmvlzb", cyrixmmx_insn, 1, SUF_Z, 0x5B, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
- {"boundw", bound_insn, 2, SUF_W, 0, 0, 0, NOT_64, CPU_186, 0, 0},
- {"vroundsd", sse4m64imm_insn, 4, SUF_Z, 0x0B, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"loopz", loop_insn, 8, SUF_Z, 0x01, 0, 0, 0, 0, 0, 0},
- {"roundpd", sse4imm_insn, 2, SUF_Z, 0x09, 0, 0, 0, CPU_SSE41, 0, 0},
- {"sfence", threebyte_insn, 1, SUF_Z, 0x0F, 0xAE, 0xF8, 0, CPU_P3, 0, 0},
- {"vpcomgew", vpcom_insn, 1, SUF_Z, 0xCD, 0x03, 0, 0, CPU_XOP, 0, 0},
- {"vpcmpistrm", sse4pcmpstr_insn, 1, SUF_Z, 0x62, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"repz", NULL, X86_LOCKREP>>8, 0xF3, 0, 0, 0, 0, 0, 0, 0},
- {"iretq", onebyte_insn, 1, SUF_Z, 0xCF, 0x40, 0, ONLY_64, 0, 0, 0},
- {"pclmullqhqdq", pclmulqdq_fixed_insn, 2, SUF_Z, 0x10, 0, 0, 0, CPU_AVX, 0, 0},
- {"vcmplt_oqss", ssecmp_32_insn, 4, SUF_Z, 0x11, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpeq_osps", ssecmp_128_insn, 3, SUF_Z, 0x10, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmpw", arith_insn, 22, SUF_W, 0x38, 0x07, 0, 0, 0, 0, 0},
- {"adox", vex_gpr_ndd_rm_0F38_insn, 2, SUF_Z, 0xF3, 0xF6, 0, 0, CPU_ADX, 0, 0},
- {"rexyz", NULL, X86_REX>>8, 0x43, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"rorxq", vex_gpr_reg_rm_0F_imm8_insn, 2, SUF_Q, 0xF2, 0x3A, 0xF0, ONLY_64|ONLY_AVX, CPU_BMI2, 0, 0},
- {"movsxb", movszx_insn, 5, SUF_B, 0xBE, 0, 0, 0, CPU_386, 0, 0},
- {"paddsw", mmxsse2_insn, 2, SUF_Z, 0xED, 0, 0, 0, CPU_MMX, 0, 0},
- {"lldtw", prot286_insn, 1, SUF_W, 0x02, 0x00, 0, 0, CPU_286, CPU_Priv, CPU_Prot},
- {"vpcomneuw", vpcom_insn, 1, SUF_Z, 0xED, 0x05, 0, 0, CPU_XOP, 0, 0},
- {"vcmpnlesd", ssecmp_64_insn, 4, SUF_Z, 0x06, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfrczss", vfrczss_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_XOP, 0, 0},
- {"movw", mov_insn, 69, SUF_W, 0, 0, 0, 0, 0, 0, 0},
- {"crc32q", crc32_insn, 5, SUF_Q, 0, 0, 0, ONLY_64, CPU_SSE42, 0, 0},
- {"vextracti128", vextractif128_insn, 1, SUF_Z, 0x39, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"subps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x5C, 0, 0, CPU_SSE, 0, 0},
- {"inb", in_insn, 12, SUF_B, 0, 0, 0, 0, 0, 0, 0},
- {"vfnmsub231ps", vfma_ps_insn, 2, SUF_Z, 0xBE, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vphaddubw", vphaddsub_insn, 1, SUF_Z, 0xD1, 0, 0, 0, CPU_XOP, 0, 0},
- {"pmachriw", pmachriw_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
- {"vmpsadbw", sse4imm_256avx2_insn, 4, SUF_Z, 0x42, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmovngew", cmovcc_insn, 3, SUF_W, 0x0C, 0, 0, 0, CPU_686, 0, 0},
- {"popcntq", cnt_insn, 3, SUF_Q, 0xB8, 0, 0, ONLY_64, CPU_SSE42, 0, 0},
- {"insertps", insertps_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_SSE41, 0, 0},
- {"cmpxchgl", cmpxchgxadd_insn, 4, SUF_L, 0xB0, 0, 0, 0, CPU_486, 0, 0},
- {"vcomiss", avx_xmm_xmm32_insn, 2, SUF_Z, 0x00, 0x2F, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcmpgtd", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"loopzw", loopw_insn, 4, SUF_Z, 0x01, 0x10, 0, NOT_64, 0, 0, 0},
- {"retw", retnf_insn, 6, SUF_Z, 0xC2, 0x10, 0, 0, 0, 0, 0},
- {"pavgb", mmxsse2_insn, 2, SUF_Z, 0xE0, 0, 0, 0, CPU_MMX, CPU_P3, 0},
- {"loopnel", loopl_insn, 4, SUF_Z, 0x00, 0x20, 0, 0, 0, 0, 0},
- {"vpsrld", vpshift_insn, 8, SUF_Z, 0xD2, 0x72, 0x02, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcvtpd2dqx", avx_cvt_xmm128_x_insn, 1, SUF_Z, 0xF2, 0xE6, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"ficomps", fiarith_insn, 2, SUF_S, 0x03, 0xDA, 0, 0, CPU_FPU, 0, 0},
- {"fisttps", fildstp_insn, 4, SUF_S, 0x01, 0x00, 0x01, 0, CPU_SSE3, 0, 0},
- {"vandpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x54, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"haddpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x7C, 0, 0, CPU_SSE3, 0, 0},
- {"bsfl", bsfr_insn, 3, SUF_L, 0xBC, 0, 0, 0, CPU_386, 0, 0},
- {"rolq", shift_insn, 16, SUF_Q, 0x00, 0, 0, ONLY_64, 0, 0, 0},
- {"vcmpneq_ussd", ssecmp_64_insn, 4, SUF_Z, 0x14, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pinsrwl", pinsrw_insn, 9, SUF_L, 0, 0, 0, 0, CPU_MMX, CPU_P3, 0},
- {"pmovzxwd", sse4m64_insn, 4, SUF_Z, 0x33, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vcmpgt_oqsd", ssecmp_64_insn, 4, SUF_Z, 0x1E, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pslld", pshift_insn, 4, SUF_Z, 0xF2, 0x72, 0x06, 0, CPU_MMX, 0, 0},
- {"bextr", bextr_insn, 4, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_386, CPU_BMI1, 0},
- {"movsbl", movszx_insn, 5, SUF_B, 0xBE, 0, 0, 0, CPU_386, 0, 0},
- {"vpcomuq", vpcom_imm_insn, 1, SUF_Z, 0xEF, 0, 0, 0, CPU_XOP, 0, 0},
- {"pcmpestrm", sse4pcmpstr_insn, 1, SUF_Z, 0x60, 0, 0, 0, CPU_SSE42, 0, 0},
- {"pfcmpgt", now3d_insn, 1, SUF_Z, 0xA0, 0, 0, 0, CPU_3DNow, 0, 0},
- {"ltrw", prot286_insn, 1, SUF_W, 0x03, 0x00, 0, 0, CPU_286, CPU_Priv, CPU_Prot},
- {"paddusw", mmxsse2_insn, 2, SUF_Z, 0xDD, 0, 0, 0, CPU_MMX, 0, 0},
- {"vpmacsswd", vpma_insn, 1, SUF_Z, 0x86, 0, 0, 0, CPU_XOP, 0, 0},
- {"vfnmsubsd", fma_128_m64_insn, 3, SUF_Z, 0x7F, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"loopew", loopw_insn, 4, SUF_Z, 0x01, 0x10, 0, NOT_64, 0, 0, 0},
- {"vmaskmovdqu", maskmovdqu_insn, 1, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cvtsi2sdq", cvt_xmm_rmx_insn, 6, SUF_Q, 0xF2, 0x2A, 0, ONLY_64, CPU_SSE2, 0, 0},
- {"fisubs", fiarith_insn, 2, SUF_S, 0x04, 0xDA, 0, 0, CPU_FPU, 0, 0},
- {"cmpeqss", ssecmp_32_insn, 4, SUF_Z, 0x00, 0xF3, 0, 0, CPU_SSE, 0, 0},
- {"cqto", onebyte_insn, 1, SUF_Z, 0x99, 0x40, 0, ONLY_64, 0, 0, 0},
- {"vcmpunordpd", ssecmp_128_insn, 3, SUF_Z, 0x03, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"setna", setcc_insn, 1, SUF_Z, 0x06, 0, 0, 0, CPU_386, 0, 0},
- {"cvtdq2pd", xmm_xmm64_insn, 4, SUF_Z, 0xF3, 0xE6, 0, 0, CPU_SSE2, 0, 0},
- {"andnpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x55, 0, 0, CPU_SSE2, 0, 0},
- {"vcmpeq_uqps", ssecmp_128_insn, 3, SUF_Z, 0x08, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcvtsi2ss", cvt_xmm_rmx_insn, 6, SUF_Z, 0xF3, 0x2A, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"psrld", pshift_insn, 4, SUF_Z, 0xD2, 0x72, 0x02, 0, CPU_MMX, 0, 0},
- {"outl", out_insn, 12, SUF_L, 0, 0, 0, 0, CPU_386, 0, 0},
- {"vcvttss2siq", cvt_rx_xmm32_insn, 4, SUF_Q, 0xF3, 0x2C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"paddq", mmxsse2_insn, 2, SUF_Z, 0xD4, 0, 0, 0, CPU_MMX, 0, 0},
- {"cmpneqss", ssecmp_32_insn, 4, SUF_Z, 0x04, 0xF3, 0, 0, CPU_SSE, 0, 0},
- {"vfrczsd", vfrczsd_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_XOP, 0, 0},
- {"xsaveopt64", xsaveopt64_insn, 1, SUF_Z, 0x06, 0x0F, 0xAE, ONLY_64, CPU_XSAVEOPT, 0, 0},
- {"fnstsww", fnstsw_insn, 2, SUF_W, 0, 0, 0, 0, CPU_FPU, 0, 0},
- {"vfmaddss", fma_128_m32_insn, 3, SUF_Z, 0x6A, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"fsubs", farith_insn, 7, SUF_S, 0xE8, 0xE0, 0x04, 0, CPU_FPU, 0, 0},
- {"vpshufd", xmm_xmm128_imm_256avx2_insn, 2, SUF_Z, 0x66, 0x70, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fstpl", fstp_insn, 4, SUF_L, 0, 0, 0, 0, CPU_FPU, 0, 0},
- {"vcmpeq_ussd", ssecmp_64_insn, 4, SUF_Z, 0x18, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"jle", jcc_insn, 9, SUF_Z, 0x0E, 0, 0, 0, 0, 0, 0},
- {"sidtq", twobytemem_insn, 1, SUF_Q, 0x01, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
- {"vpshlb", amd_vpshift_insn, 2, SUF_Z, 0x94, 0, 0, 0, CPU_XOP, 0, 0},
- {"pinsrwq", pinsrw_insn, 9, SUF_Q, 0, 0, 0, ONLY_64, CPU_MMX, CPU_P3, 0},
- {"js", jcc_insn, 9, SUF_Z, 0x08, 0, 0, 0, 0, 0, 0},
- {"andnq", vex_gpr_reg_nds_rm_0F_insn, 2, SUF_Q, 0x00, 0x38, 0xF2, ONLY_64|ONLY_AVX, CPU_BMI1, 0, 0},
- {"cmpsl", onebyte_insn, 1, SUF_Z, 0xA7, 0x20, 0, 0, CPU_386, 0, 0},
- {"vmovlps", movhlp_insn, 3, SUF_Z, 0x00, 0x12, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pabsd", ssse3_insn, 5, SUF_Z, 0x1E, 0, 0, 0, CPU_SSSE3, 0, 0},
- {"vpcomequd", vpcom_insn, 1, SUF_Z, 0xEE, 0x04, 0, 0, CPU_XOP, 0, 0},
- {"salw", shift_insn, 16, SUF_W, 0x04, 0, 0, 0, 0, 0, 0},
- {"movntss", movntss_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SSE4a, 0, 0},
- {"movlhps", movhllhps_insn, 2, SUF_Z, 0x16, 0, 0, 0, CPU_SSE, 0, 0},
- {"vcmpltps", ssecmp_128_insn, 3, SUF_Z, 0x01, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmovoq", cmovcc_insn, 3, SUF_Q, 0x00, 0, 0, ONLY_64, CPU_686, 0, 0},
- {"rex64xz", NULL, X86_REX>>8, 0x4D, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"vfmsubadd132ps", vfma_ps_insn, 2, SUF_Z, 0x97, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vcmplt_oqsd", ssecmp_64_insn, 4, SUF_Z, 0x11, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmovnzl", cmovcc_insn, 3, SUF_L, 0x05, 0, 0, 0, CPU_686, 0, 0},
- {"cvttss2sil", cvt_rx_xmm32_insn, 4, SUF_L, 0xF3, 0x2C, 0, 0, CPU_386, CPU_SSE, 0},
- {"pand", mmxsse2_insn, 2, SUF_Z, 0xDB, 0, 0, 0, CPU_MMX, 0, 0},
- {"packuswb", mmxsse2_insn, 2, SUF_Z, 0x67, 0, 0, 0, CPU_MMX, 0, 0},
- {"rcrw", shift_insn, 16, SUF_W, 0x03, 0, 0, 0, 0, 0, 0},
- {"loadall", twobyte_insn, 1, SUF_Z, 0x0F, 0x07, 0, 0, CPU_386, CPU_Undoc, 0},
- {"vprotd", vprot_insn, 3, SUF_Z, 0x02, 0, 0, 0, CPU_XOP, 0, 0},
- {"popcntl", cnt_insn, 3, SUF_L, 0xB8, 0, 0, 0, CPU_SSE42, 0, 0},
- {"xsave", twobytemem_insn, 1, SUF_Z, 0x04, 0x0F, 0xAE, 0, CPU_386, CPU_XSAVE, 0},
- {"addq", arith_insn, 22, SUF_Q, 0x00, 0x00, 0, ONLY_64, 0, 0, 0},
- {"fldlg2", twobyte_insn, 1, SUF_Z, 0xD9, 0xEC, 0, 0, CPU_FPU, 0, 0},
- {"fwait", onebyte_insn, 1, SUF_Z, 0x9B, 0, 0, 0, CPU_FPU, 0, 0},
- {"cvtsi2sdl", cvt_xmm_rmx_insn, 6, SUF_L, 0xF2, 0x2A, 0, 0, CPU_SSE2, 0, 0},
- {"cmovl", cmovcc_insn, 3, SUF_Z, 0x0C, 0, 0, 0, CPU_686, 0, 0},
- {"rol", shift_insn, 16, SUF_Z, 0x00, 0, 0, 0, 0, 0, 0},
- {"tzmsk", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x01, 0x04, 0, 0, CPU_386, CPU_TBM, 0},
- {"loope", loop_insn, 8, SUF_Z, 0x01, 0, 0, 0, 0, 0, 0},
- {"decl", incdec_insn, 6, SUF_L, 0x48, 0x01, 0, 0, CPU_386, 0, 0},
- {"shlb", shift_insn, 16, SUF_B, 0x04, 0, 0, 0, 0, 0, 0},
- {"cmpsw", onebyte_insn, 1, SUF_Z, 0xA7, 0x10, 0, 0, 0, 0, 0},
- {"inc", incdec_insn, 6, SUF_Z, 0x40, 0x00, 0, 0, 0, 0, 0},
- {"vpshlw", amd_vpshift_insn, 2, SUF_Z, 0x95, 0, 0, 0, CPU_XOP, 0, 0},
- {"vpcomneqd", vpcom_insn, 1, SUF_Z, 0xCE, 0x05, 0, 0, CPU_XOP, 0, 0},
- {"vunpckhps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x15, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"movups", movau_insn, 6, SUF_Z, 0x00, 0x10, 0x01, 0, CPU_SSE, 0, 0},
- {"smint", twobyte_insn, 1, SUF_Z, 0x0F, 0x38, 0, 0, CPU_686, CPU_Cyrix, 0},
- {"addsubpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0xD0, 0, 0, CPU_SSE3, 0, 0},
- {"sha1msg1", intel_SHA1MSG1_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SHA, 0, 0},
- {"pmovzxdq", sse4m64_insn, 4, SUF_Z, 0x35, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vaddps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x58, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"in", in_insn, 12, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
- {"setnpb", setcc_insn, 1, SUF_B, 0x0B, 0, 0, 0, CPU_386, 0, 0},
- {"sete", setcc_insn, 1, SUF_Z, 0x04, 0, 0, 0, CPU_386, 0, 0},
- {"vcmpnlt_uqsd", ssecmp_64_insn, 4, SUF_Z, 0x15, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfmsub132sd", vfma_sd_insn, 2, SUF_Z, 0x9B, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"cmovnae", cmovcc_insn, 3, SUF_Z, 0x02, 0, 0, 0, CPU_686, 0, 0},
- {"xcryptcfb", padlock_insn, 1, SUF_Z, 0xE0, 0xF3, 0xA7, 0, CPU_PadLock, 0, 0},
- {"vcvtss2siq", cvt_rx_xmm32_insn, 4, SUF_Q, 0xF3, 0x2D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fcmovnb", fcmovcc_insn, 1, SUF_Z, 0xDB, 0xC0, 0, 0, CPU_686, CPU_FPU, 0},
- {"vfmadd213ss", vfma_ss_insn, 2, SUF_Z, 0xA9, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"pushfw", onebyte_insn, 1, SUF_Z, 0x9C, 0x10, 0x40, 0, 0, 0, 0},
- {"vcmpless", ssecmp_32_insn, 4, SUF_Z, 0x02, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"sidtl", twobytemem_insn, 1, SUF_L, 0x01, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
- {"vpcomfalsew", vpcom_insn, 1, SUF_Z, 0xCD, 0x06, 0, 0, CPU_XOP, 0, 0},
- {"xcryptctr", padlock_insn, 1, SUF_Z, 0xD8, 0xF3, 0xA7, 0, CPU_PadLock, 0, 0},
- {"fidiv", fiarith_insn, 2, SUF_Z, 0x06, 0xDA, 0, 0, CPU_FPU, 0, 0},
- {"cvtpi2pd", cvt_xmm_mm_ss_insn, 1, SUF_Z, 0x66, 0x2A, 0, 0, CPU_SSE2, 0, 0},
- {"fxrstorq", twobytemem_insn, 1, SUF_Q, 0x01, 0x0F, 0xAE, 0, CPU_686, CPU_FPU, 0},
- {"aas", onebyte_insn, 1, SUF_Z, 0x3F, 0, 0, NOT_64, 0, 0, 0},
- {"pfrsqrt", now3d_insn, 1, SUF_Z, 0x97, 0, 0, 0, CPU_3DNow, 0, 0},
- {"cmovpeq", cmovcc_insn, 3, SUF_Q, 0x0A, 0, 0, ONLY_64, CPU_686, 0, 0},
- {"vaesenclast", aes_insn, 2, SUF_Z, 0x38, 0xDD, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vmreadl", vmxmemrd_insn, 2, SUF_L, 0, 0, 0, NOT_64, CPU_P4, 0, 0},
- {"vpcomub", vpcom_imm_insn, 1, SUF_Z, 0xEC, 0, 0, 0, CPU_XOP, 0, 0},
- {"movupd", movau_insn, 6, SUF_Z, 0x66, 0x10, 0x01, 0, CPU_SSE2, 0, 0},
- {"btcw", bittest_insn, 6, SUF_W, 0xBB, 0x07, 0, 0, CPU_386, 0, 0},
- {"popfq", onebyte_insn, 1, SUF_Z, 0x9D, 0x40, 0x40, ONLY_64, 0, 0, 0},
- {"pmulhrw", now3d_insn, 1, SUF_Z, 0xB7, 0, 0, 0, CPU_3DNow, 0, 0},
- {"psubsw", mmxsse2_insn, 2, SUF_Z, 0xE9, 0, 0, 0, CPU_MMX, 0, 0},
- {"lsl", larlsl_insn, 6, SUF_Z, 0x03, 0, 0, 0, CPU_286, CPU_Prot, 0},
- {"rdtsc", twobyte_insn, 1, SUF_Z, 0x0F, 0x31, 0, 0, CPU_586, 0, 0},
- {"scasw", onebyte_insn, 1, SUF_Z, 0xAF, 0x10, 0, 0, 0, 0, 0},
- {"pmvnzb", cyrixmmx_insn, 1, SUF_Z, 0x5A, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
- {"pmulhw", mmxsse2_insn, 2, SUF_Z, 0xE5, 0, 0, 0, CPU_MMX, 0, 0},
- {"sha1rnds4", intel_SHA1RNDS4_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SHA, 0, 0},
- {"jb", jcc_insn, 9, SUF_Z, 0x02, 0, 0, 0, 0, 0, 0},
- {"blsi", vex_gpr_ndd_rm_0F38_regext_insn, 2, SUF_Z, 0x00, 0xF3, 0x03, ONLY_AVX, CPU_BMI1, 0, 0},
- {"vfmaddsub213ps", vfma_ps_insn, 2, SUF_Z, 0xA6, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vpcmpeqw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x75, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfmaddsd", fma_128_m64_insn, 3, SUF_Z, 0x6B, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"vcmpordpd", ssecmp_128_insn, 3, SUF_Z, 0x07, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpclmulhqhqdq", pclmulqdq_fixed_insn, 2, SUF_Z, 0x11, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"setne", setcc_insn, 1, SUF_Z, 0x05, 0, 0, 0, CPU_386, 0, 0},
- {"pmaddwd", mmxsse2_insn, 2, SUF_Z, 0xF5, 0, 0, 0, CPU_MMX, 0, 0},
- {"vpcomneb", vpcom_insn, 1, SUF_Z, 0xCC, 0x05, 0, 0, CPU_XOP, 0, 0},
- {"pclmulhqlqdq", pclmulqdq_fixed_insn, 2, SUF_Z, 0x01, 0, 0, 0, CPU_AVX, 0, 0},
- {"xaddb", cmpxchgxadd_insn, 4, SUF_B, 0xC0, 0, 0, 0, CPU_486, 0, 0},
- {"cmpps", xmm_xmm128_imm_insn, 1, SUF_Z, 0x00, 0xC2, 0, 0, CPU_SSE, 0, 0},
- {"movntq", movntq_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SSE, 0, 0},
- {"idivw", div_insn, 8, SUF_W, 0x07, 0, 0, 0, 0, 0, 0},
- {"push", push_insn, 35, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
- {"vfmsub231pd", vfma_pd_insn, 2, SUF_Z, 0xBA, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"test", test_insn, 20, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
- {"pslldq", pslrldq_insn, 4, SUF_Z, 0x07, 0, 0, 0, CPU_SSE2, 0, 0},
- {"sha256rnds2", intel_SHA256RNDS2_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SHA, 0, 0},
- {"cmovb", cmovcc_insn, 3, SUF_Z, 0x02, 0, 0, 0, CPU_686, 0, 0},
- {"rex64xyz", NULL, X86_REX>>8, 0x4F, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"blcs", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x01, 0x03, 0, 0, CPU_386, CPU_TBM, 0},
- {"punpcklwd", mmxsse2_insn, 2, SUF_Z, 0x61, 0, 0, 0, CPU_MMX, 0, 0},
- {"sqrtps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x51, 0, 0, CPU_SSE, 0, 0},
- {"cmovnaeq", cmovcc_insn, 3, SUF_Q, 0x02, 0, 0, ONLY_64, CPU_686, 0, 0},
- {"vmread", vmxmemrd_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_P4, 0, 0},
- {"fldz", twobyte_insn, 1, SUF_Z, 0xD9, 0xEE, 0, 0, CPU_FPU, 0, 0},
- {"vpunpckldq", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x62, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"retl", retnf_insn, 6, SUF_Z, 0xC2, 0, 0, NOT_64, 0, 0, 0},
- {"vlddqu", lddqu_insn, 2, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"loopnzw", loopw_insn, 4, SUF_Z, 0x00, 0x10, 0, NOT_64, 0, 0, 0},
- {"vmaxss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5F, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cvttpd2pi", cvt_mm_xmm_insn, 1, SUF_Z, 0x66, 0x2C, 0, 0, CPU_SSE2, 0, 0},
- {"btrl", bittest_insn, 6, SUF_L, 0xB3, 0x06, 0, 0, CPU_386, 0, 0},
- {"cvttsd2si", cvt_rx_xmm64_insn, 4, SUF_Z, 0xF2, 0x2C, 0, 0, CPU_SSE2, 0, 0},
- {"cmovns", cmovcc_insn, 3, SUF_Z, 0x09, 0, 0, 0, CPU_686, 0, 0},
- {"vblendvpd", avx_sse4xmm0_insn, 2, SUF_Z, 0x4B, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fistp", fildstp_insn, 4, SUF_Z, 0x03, 0x02, 0x07, 0, CPU_FPU, 0, 0},
- {"setbe", setcc_insn, 1, SUF_Z, 0x06, 0, 0, 0, CPU_386, 0, 0},
- {"cmpordss", ssecmp_32_insn, 4, SUF_Z, 0x07, 0xF3, 0, 0, CPU_SSE, 0, 0},
- {"vfrczps", vfrc_pdps_insn, 2, SUF_Z, 0x00, 0, 0, 0, CPU_XOP, 0, 0},
- {"sysret", twobyte_insn, 1, SUF_Z, 0x0F, 0x07, 0, 0, CPU_686, CPU_AMD, CPU_Priv},
- {"pfrsqit1", now3d_insn, 1, SUF_Z, 0xA7, 0, 0, 0, CPU_3DNow, 0, 0},
- {"pdistib", cyrixmmx_insn, 1, SUF_Z, 0x54, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
- {"sha256msg2", intel_SHA256MSG2_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SHA, 0, 0},
- {"pshuflw", xmm_xmm128_imm_insn, 1, SUF_Z, 0xF2, 0x70, 0, 0, CPU_SSE2, 0, 0},
- {"vpcomged", vpcom_insn, 1, SUF_Z, 0xCE, 0x03, 0, 0, CPU_XOP, 0, 0},
- {"addpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x58, 0, 0, CPU_SSE2, 0, 0},
- {"fstenv", twobytemem_insn, 1, SUF_Z, 0x06, 0x9B, 0xD9, 0, CPU_FPU, 0, 0},
- {"vpcomled", vpcom_insn, 1, SUF_Z, 0xCE, 0x01, 0, 0, CPU_XOP, 0, 0},
- {"vpackssdw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x6B, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmovnbl", cmovcc_insn, 3, SUF_L, 0x03, 0, 0, 0, CPU_686, 0, 0},
- {"vpcomleuq", vpcom_insn, 1, SUF_Z, 0xEF, 0x01, 0, 0, CPU_XOP, 0, 0},
- {"paddsiw", cyrixmmx_insn, 1, SUF_Z, 0x51, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
- {"dppd", sse4imm_insn, 2, SUF_Z, 0x41, 0, 0, 0, CPU_SSE41, 0, 0},
- {"incb", incdec_insn, 6, SUF_B, 0x40, 0x00, 0, 0, 0, 0, 0},
- {"vpmulhuw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xE4, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vmovmskpdl", movmsk_insn, 4, SUF_L, 0x66, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"hnt", NULL, X86_SEGREG>>8, 0x2E, 0, 0, 0, 0, 0, 0, 0},
- {"fclex", threebyte_insn, 1, SUF_Z, 0x9B, 0xDB, 0xE2, 0, CPU_FPU, 0, 0},
- {"vcmpord_sss", ssecmp_32_insn, 4, SUF_Z, 0x17, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"aeskeygenassist", aes_imm_insn, 1, SUF_Z, 0x3A, 0xDF, 0, 0, CPU_AES, 0, 0},
- {"cvtsi2ssq", cvt_xmm_rmx_insn, 6, SUF_Q, 0xF3, 0x2A, 0, ONLY_64, CPU_SSE, 0, 0},
- {"extractps", extractps_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_SSE41, 0},
- {"cmpless", ssecmp_32_insn, 4, SUF_Z, 0x02, 0xF3, 0, 0, CPU_SSE, 0, 0},
- {"psubusw", mmxsse2_insn, 2, SUF_Z, 0xD9, 0, 0, 0, CPU_MMX, 0, 0},
- {"setnzb", setcc_insn, 1, SUF_B, 0x05, 0, 0, 0, CPU_386, 0, 0},
- {"vpacksswb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x63, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pandn", mmxsse2_insn, 2, SUF_Z, 0xDF, 0, 0, 0, CPU_MMX, 0, 0},
- {"vpsubd", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xFA, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmptruesd", ssecmp_64_insn, 4, SUF_Z, 0x0F, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fucomp", fcom2_insn, 2, SUF_Z, 0xDD, 0xE8, 0, 0, CPU_286, CPU_FPU, 0},
- {"lar", larlsl_insn, 6, SUF_Z, 0x02, 0, 0, 0, CPU_286, CPU_Prot, 0},
- {"blsic", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x01, 0x06, 0, 0, CPU_386, CPU_TBM, 0},
- {"ibts", ibts_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_Obs, CPU_Undoc},
- {"sysexit", twobyte_insn, 1, SUF_Z, 0x0F, 0x35, 0, NOT_64, CPU_686, CPU_Priv, 0},
- {"vmovmskps", movmsk_insn, 4, SUF_Z, 0x00, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcvtss2sd", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5A, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vunpcklps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x14, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fdivr", farith_insn, 7, SUF_Z, 0xF0, 0xF8, 0x07, 0, CPU_FPU, 0, 0},
- {"vpshufb", ssse3_insn, 5, SUF_Z, 0x00, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmptruepd", ssecmp_128_insn, 3, SUF_Z, 0x0F, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpshufhw", xmm_xmm128_imm_256avx2_insn, 2, SUF_Z, 0xF3, 0x70, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"loopl", loopl_insn, 4, SUF_Z, 0x02, 0x20, 0, 0, 0, 0, 0},
- {"vfnmaddps", fma_128_256_insn, 4, SUF_Z, 0x78, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"movsbw", movszx_insn, 5, SUF_B, 0xBE, 0, 0, 0, CPU_386, 0, 0},
- {"fstps", fstp_insn, 4, SUF_S, 0, 0, 0, 0, CPU_FPU, 0, 0},
- {"fadd", farith_insn, 7, SUF_Z, 0xC0, 0xC0, 0x00, 0, CPU_FPU, 0, 0},
- {"vcmpeqsd", ssecmp_64_insn, 4, SUF_Z, 0x00, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpngt_uqsd", ssecmp_64_insn, 4, SUF_Z, 0x1A, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"sscaw", onebyte_insn, 1, SUF_Z, 0xAF, 0x10, 0, 0, 0, 0, 0},
- {"setnlb", setcc_insn, 1, SUF_B, 0x0D, 0, 0, 0, CPU_386, 0, 0},
- {"vpmulld", ssse3_insn, 5, SUF_Z, 0x40, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfmsub132pd", vfma_pd_insn, 2, SUF_Z, 0x9A, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"palignr", ssse3imm_insn, 2, SUF_Z, 0x0F, 0, 0, 0, CPU_SSSE3, 0, 0},
- {"orpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x56, 0, 0, CPU_SSE2, 0, 0},
- {"vminsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fsincos", twobyte_insn, 1, SUF_Z, 0xD9, 0xFB, 0, 0, CPU_286, CPU_FPU, 0},
- {"vcmple_oqpd", ssecmp_128_insn, 3, SUF_Z, 0x12, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pmagw", cyrixmmx_insn, 1, SUF_Z, 0x52, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
- {"setnleb", setcc_insn, 1, SUF_B, 0x0F, 0, 0, 0, CPU_386, 0, 0},
- {"vcmpps", xmm_xmm128_imm_256_insn, 3, SUF_Z, 0x00, 0xC2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpmulhrsw", ssse3_insn, 5, SUF_Z, 0x0B, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"setcb", setcc_insn, 1, SUF_B, 0x02, 0, 0, 0, CPU_386, 0, 0},
- {"lgsl", lfgss_insn, 3, SUF_L, 0xB5, 0, 0, 0, CPU_386, 0, 0},
- {"paveb", cyrixmmx_insn, 1, SUF_Z, 0x50, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
- {"sbbq", arith_insn, 22, SUF_Q, 0x18, 0x03, 0, ONLY_64, 0, 0, 0},
- {"vfmaddpd", fma_128_256_insn, 4, SUF_Z, 0x69, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"fcos", twobyte_insn, 1, SUF_Z, 0xD9, 0xFF, 0, 0, CPU_286, CPU_FPU, 0},
- {"cvtsi2ssl", cvt_xmm_rmx_insn, 6, SUF_L, 0xF3, 0x2A, 0, 0, CPU_386, CPU_SSE, 0},
- {"setneb", setcc_insn, 1, SUF_B, 0x05, 0, 0, 0, CPU_386, 0, 0},
- {"vfnmsub132ps", vfma_ps_insn, 2, SUF_Z, 0x9E, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"lfsw", lfgss_insn, 3, SUF_W, 0xB4, 0, 0, 0, CPU_386, 0, 0},
- {"vpcmpestrm", sse4pcmpstr_insn, 1, SUF_Z, 0x60, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"arpl", arpl_insn, 1, SUF_Z, 0, 0, 0, NOT_64, CPU_286, CPU_Prot, 0},
- {"cmovew", cmovcc_insn, 3, SUF_W, 0x04, 0, 0, 0, CPU_686, 0, 0},
- {"pminuw", sse4_insn, 2, SUF_Z, 0x3A, 0, 0, 0, CPU_SSE41, 0, 0},
- {"movabsq", movabs_insn, 9, SUF_Q, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"cmovo", cmovcc_insn, 3, SUF_Z, 0x00, 0, 0, 0, CPU_686, 0, 0},
- {"blsicl", xop_gpr_reg_rm_09_insn, 2, SUF_L, 0x01, 0x06, 0, 0, CPU_386, CPU_TBM, 0},
- {"smovw", onebyte_insn, 1, SUF_Z, 0xA5, 0x10, 0, 0, 0, 0, 0},
- {"faddl", farith_insn, 7, SUF_L, 0xC0, 0xC0, 0x00, 0, CPU_FPU, 0, 0},
- {"maxsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5F, 0, 0, CPU_SSE2, 0, 0},
- {"aad", aadm_insn, 2, SUF_Z, 0x01, 0, 0, NOT_64, 0, 0, 0},
- {"vpmaskmovq", vmaskmov_vexw1_avx2_insn, 4, SUF_Z, 0x8C, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"vfmadd132sd", vfma_sd_insn, 2, SUF_Z, 0x99, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"rep", NULL, X86_LOCKREP>>8, 0xF3, 0, 0, 0, 0, 0, 0, 0},
- {"vcmpltss", ssecmp_32_insn, 4, SUF_Z, 0x01, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"sub", arith_insn, 22, SUF_Z, 0x28, 0x05, 0, 0, 0, 0, 0},
- {"smswq", sldtmsw_insn, 6, SUF_Q, 0x04, 0x01, 0, ONLY_64, CPU_286, 0, 0},
- {"qword", NULL, X86_OPERSIZE>>8, 0x40, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"vcmpunordps", ssecmp_128_insn, 3, SUF_Z, 0x03, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cltq", onebyte_insn, 1, SUF_Z, 0x98, 0x40, 0, ONLY_64, 0, 0, 0},
- {"vfnmadd213pd", vfma_pd_insn, 2, SUF_Z, 0xAC, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"minsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5D, 0, 0, CPU_SSE2, 0, 0},
- {"fmul", farith_insn, 7, SUF_Z, 0xC8, 0xC8, 0x01, 0, CPU_FPU, 0, 0},
- {"cmpss", xmm_xmm32_imm_insn, 4, SUF_Z, 0xF3, 0xC2, 0, 0, CPU_SSE, 0, 0},
- {"vcvtsd2si", cvt_rx_xmm64_insn, 4, SUF_Z, 0xF2, 0x2D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"addsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x58, 0, 0, CPU_SSE2, 0, 0},
- {"vmulss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x59, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"btsq", bittest_insn, 6, SUF_Q, 0xAB, 0x05, 0, ONLY_64, CPU_386, 0, 0},
- {"cvtsd2sil", cvt_rx_xmm64_insn, 4, SUF_L, 0xF2, 0x2D, 0, 0, CPU_386, CPU_SSE2, 0},
- {"vpcomtrueb", vpcom_insn, 1, SUF_Z, 0xCC, 0x07, 0, 0, CPU_XOP, 0, 0},
- {"vpcomeqb", vpcom_insn, 1, SUF_Z, 0xCC, 0x04, 0, 0, CPU_XOP, 0, 0},
- {"fidivr", fiarith_insn, 2, SUF_Z, 0x07, 0xDA, 0, 0, CPU_FPU, 0, 0},
- {"vpcomgeuw", vpcom_insn, 1, SUF_Z, 0xED, 0x03, 0, 0, CPU_XOP, 0, 0},
- {"cmovnel", cmovcc_insn, 3, SUF_L, 0x05, 0, 0, 0, CPU_686, 0, 0},
- {"vpmovzxwq", sse4m32_insn, 4, SUF_Z, 0x34, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpeq_osss", ssecmp_32_insn, 4, SUF_Z, 0x10, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"shrb", shift_insn, 16, SUF_B, 0x05, 0, 0, 0, 0, 0, 0},
- {"maxpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x5F, 0, 0, CPU_SSE2, 0, 0},
- {"hsubps", xmm_xmm128_insn, 2, SUF_Z, 0xF2, 0x7D, 0, 0, CPU_SSE3, 0, 0},
- {"sarx", vex_gpr_reg_rm_nds_0F_insn, 2, SUF_Z, 0xF3, 0x38, 0xF7, ONLY_AVX, CPU_BMI2, 0, 0},
- {"vpcomgtb", vpcom_insn, 1, SUF_Z, 0xCC, 0x02, 0, 0, CPU_XOP, 0, 0},
- {"vextractf128", vextractif128_insn, 1, SUF_Z, 0x19, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcvtsi2ssl", cvt_xmm_rmx_insn, 6, SUF_L, 0xF3, 0x2A, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"movzxb", movszx_insn, 5, SUF_B, 0xB6, 0, 0, 0, CPU_386, 0, 0},
- {"vpbroadcastw", vpbroadcastw_avx2_insn, 4, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"shlw", shift_insn, 16, SUF_W, 0x04, 0, 0, 0, 0, 0, 0},
- {"cmpltps", ssecmp_128_insn, 3, SUF_Z, 0x01, 0, 0, 0, CPU_SSE, 0, 0},
- {"xlatb", onebyte_insn, 1, SUF_Z, 0xD7, 0x00, 0, 0, 0, 0, 0},
- {"xsha1", padlock_insn, 1, SUF_Z, 0xC8, 0xF3, 0xA6, 0, CPU_PadLock, 0, 0},
- {"lret", retnf_insn, 6, SUF_Z, 0xCA, 0, 0, 0, 0, 0, 0},
- {"xsha256", padlock_insn, 1, SUF_Z, 0xD0, 0xF3, 0xA6, 0, CPU_PadLock, 0, 0},
- {"vpsrad", vpshift_insn, 8, SUF_Z, 0xE2, 0x72, 0x04, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmovnpl", cmovcc_insn, 3, SUF_L, 0x0B, 0, 0, 0, CPU_686, 0, 0},
- {"addw", arith_insn, 22, SUF_W, 0x00, 0x00, 0, 0, 0, 0, 0},
- {"setg", setcc_insn, 1, SUF_Z, 0x0F, 0, 0, 0, CPU_386, 0, 0},
- {"vphaddubq", vphaddsub_insn, 1, SUF_Z, 0xD3, 0, 0, 0, CPU_XOP, 0, 0},
- {"cmovngl", cmovcc_insn, 3, SUF_L, 0x0E, 0, 0, 0, CPU_686, 0, 0},
- {"vpermilpd", vpermil_insn, 4, SUF_Z, 0x05, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpmacswd", vpma_insn, 1, SUF_Z, 0x96, 0, 0, 0, CPU_XOP, 0, 0},
- {"clac", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xCA, 0, CPU_SMAP, 0, 0},
- {"punpckhwd", mmxsse2_insn, 2, SUF_Z, 0x69, 0, 0, 0, CPU_MMX, 0, 0},
- {"vpcmpgtb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x64, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"leave", onebyte_insn, 1, SUF_Z, 0xC9, 0x00, 0x40, 0, CPU_186, 0, 0},
- {"shrd", shlrd_insn, 9, SUF_Z, 0xAC, 0, 0, 0, CPU_386, 0, 0},
- {"vfmsub132ps", vfma_ps_insn, 2, SUF_Z, 0x9A, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"lretl", retnf_insn, 6, SUF_L, 0xCA, 0, 0, 0, 0, 0, 0},
- {"cmovpol", cmovcc_insn, 3, SUF_L, 0x0B, 0, 0, 0, CPU_686, 0, 0},
- {"orl", arith_insn, 22, SUF_L, 0x08, 0x01, 0, 0, CPU_386, 0, 0},
- {"fnstcw", fldnstcw_insn, 1, SUF_Z, 0x07, 0, 0, 0, CPU_FPU, 0, 0},
- {"punpckldq", mmxsse2_insn, 2, SUF_Z, 0x62, 0, 0, 0, CPU_MMX, 0, 0},
- {"vpmaddwd", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xF5, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"mulb", f6_insn, 4, SUF_B, 0x04, 0, 0, 0, 0, 0, 0},
- {"cmppd", xmm_xmm128_imm_insn, 1, SUF_Z, 0x66, 0xC2, 0, 0, CPU_SSE2, 0, 0},
- {"rex", NULL, X86_REX>>8, 0x40, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"movd", movd_insn, 8, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_MMX, 0},
- {"vpshaw", amd_vpshift_insn, 2, SUF_Z, 0x99, 0, 0, 0, CPU_XOP, 0, 0},
- {"vrsqrtps", avx_xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x52, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcvtph2ps", avx_cvtph2ps_insn, 4, SUF_Z, 0x66, 0x13, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vsubss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"tzcntl", cnt_insn, 3, SUF_L, 0xBC, 0, 0, 0, CPU_BMI1, 0, 0},
- {"not", f6_insn, 4, SUF_Z, 0x02, 0, 0, 0, 0, 0, 0},
- {"cvtpd2pi", cvt_mm_xmm_insn, 1, SUF_Z, 0x66, 0x2D, 0, 0, CPU_SSE2, 0, 0},
- {"vcmpngtsd", ssecmp_64_insn, 4, SUF_Z, 0x0A, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"rex64yz", NULL, X86_REX>>8, 0x4B, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"vpblendd", vex_66_0F3A_imm8_avx2_insn, 2, SUF_Z, 0x02, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"vpmovmskb", pmovmskb_insn, 6, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fldt", fldstpt_insn, 1, SUF_Z, 0x05, 0, 0, 0, CPU_FPU, 0, 0},
- {"vpunpcklbw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x60, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"femms", twobyte_insn, 1, SUF_Z, 0x0F, 0x0E, 0, 0, CPU_3DNow, 0, 0},
- {"vpsrlvq", vpshiftv_vexw1_avx2_insn, 2, SUF_Z, 0x45, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"paddusb", mmxsse2_insn, 2, SUF_Z, 0xDC, 0, 0, 0, CPU_MMX, 0, 0},
- {"movdq2q", movdq2q_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SSE2, 0, 0},
- {"vfnmsub132pd", vfma_pd_insn, 2, SUF_Z, 0x9E, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"adcb", arith_insn, 22, SUF_B, 0x10, 0x02, 0, 0, 0, 0, 0},
- {"vcmpneqps", ssecmp_128_insn, 3, SUF_Z, 0x04, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"andnl", vex_gpr_reg_nds_rm_0F_insn, 2, SUF_L, 0x00, 0x38, 0xF2, ONLY_AVX, CPU_BMI1, 0, 0},
- {"fnstenvl", onebytemem_insn, 1, SUF_L, 0x06, 0xD9, 0, 0, CPU_FPU, 0, 0},
- {"smi", onebyte_insn, 1, SUF_Z, 0xF1, 0, 0, 0, CPU_386, CPU_Undoc, 0},
- {"cmovol", cmovcc_insn, 3, SUF_L, 0x00, 0, 0, 0, CPU_686, 0, 0},
- {"wait", onebyte_insn, 1, SUF_Z, 0x9B, 0, 0, 0, 0, 0, 0},
- {"vpcmov", vpcmov_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_XOP, 0, 0},
- {"vunpcklpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x14, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"jl", jcc_insn, 9, SUF_Z, 0x0C, 0, 0, 0, 0, 0, 0},
- {"fnclex", twobyte_insn, 1, SUF_Z, 0xDB, 0xE2, 0, 0, CPU_FPU, 0, 0},
- {"shlq", shift_insn, 16, SUF_Q, 0x04, 0, 0, ONLY_64, 0, 0, 0},
- {"sall", shift_insn, 16, SUF_L, 0x04, 0, 0, 0, CPU_386, 0, 0},
- {"swapgs", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xF8, ONLY_64, 0, 0, 0},
- {"cvttps2dq", xmm_xmm128_insn, 2, SUF_Z, 0xF3, 0x5B, 0, 0, CPU_SSE2, 0, 0},
- {"pmaxud", sse4_insn, 2, SUF_Z, 0x3F, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vpaddsw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xED, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"prefetcht0", twobytemem_insn, 1, SUF_Z, 0x01, 0x0F, 0x18, 0, CPU_P3, 0, 0},
- {"repne", NULL, X86_LOCKREP>>8, 0xF2, 0, 0, 0, 0, 0, 0, 0},
- {"vfmsub132ss", vfma_ss_insn, 2, SUF_Z, 0x9B, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"lsll", larlsl_insn, 6, SUF_L, 0x03, 0, 0, 0, CPU_286, CPU_Prot, 0},
- {"vgatherqps", gather_32x_32y_128_insn, 2, SUF_Z, 0x93, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"vrsqrtss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x52, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"divl", div_insn, 8, SUF_L, 0x06, 0, 0, 0, CPU_386, 0, 0},
- {"pcmpgtq", sse4_insn, 2, SUF_Z, 0x37, 0, 0, 0, CPU_SSE41, 0, 0},
- {"pmulhrsw", ssse3_insn, 5, SUF_Z, 0x0B, 0, 0, 0, CPU_SSSE3, 0, 0},
- {"repe", NULL, X86_LOCKREP>>8, 0xF3, 0, 0, 0, 0, 0, 0, 0},
- {"vpcomtrued", vpcom_insn, 1, SUF_Z, 0xCE, 0x07, 0, 0, CPU_XOP, 0, 0},
- {"fldl", fld_insn, 4, SUF_L, 0, 0, 0, 0, CPU_FPU, 0, 0},
- {"cvtps2pd", xmm_xmm64_insn, 4, SUF_Z, 0x00, 0x5A, 0, 0, CPU_SSE2, 0, 0},
- {"vcmpnless", ssecmp_32_insn, 4, SUF_Z, 0x06, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"loopeq", loopq_insn, 4, SUF_Z, 0x01, 0x40, 0, ONLY_64, 0, 0, 0},
- {"aesdeclast", aes_insn, 2, SUF_Z, 0x38, 0xDF, 0, 0, CPU_AVX, 0, 0},
- {"vpcomequb", vpcom_insn, 1, SUF_Z, 0xEC, 0x04, 0, 0, CPU_XOP, 0, 0},
- {"stgi", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xDC, 0, CPU_SVM, 0, 0},
- {"vpmovzxbd", sse4m32_insn, 4, SUF_Z, 0x31, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"psignb", ssse3_insn, 5, SUF_Z, 0x08, 0, 0, 0, CPU_SSSE3, 0, 0},
- {"vpshlq", amd_vpshift_insn, 2, SUF_Z, 0x97, 0, 0, 0, CPU_XOP, 0, 0},
- {"vpcomfalseuq", vpcom_insn, 1, SUF_Z, 0xEF, 0x06, 0, 0, CPU_XOP, 0, 0},
- {"mulxq", vex_gpr_reg_nds_rm_0F_insn, 2, SUF_Q, 0xF2, 0x38, 0xF6, ONLY_64|ONLY_AVX, CPU_BMI2, 0, 0},
- {"jmpq", jmp_insn, 31, SUF_Q, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"cvtsd2siq", cvt_rx_xmm64_insn, 4, SUF_Q, 0xF2, 0x2D, 0, ONLY_64, CPU_SSE2, 0, 0},
- {"movhpd", movhlp_insn, 3, SUF_Z, 0x66, 0x16, 0, 0, CPU_SSE2, 0, 0},
- {"punpcklqdq", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x6C, 0, 0, CPU_SSE2, 0, 0},
- {"verw", prot286_insn, 1, SUF_Z, 0x05, 0x00, 0, 0, CPU_286, CPU_Prot, 0},
- {"cmpunordsd", ssecmp_64_insn, 4, SUF_Z, 0x03, 0xF2, 0, 0, CPU_SSE2, 0, 0},
- {"vzeroall", vzero_insn, 1, SUF_Z, 0xC4, 0, 0, 0, CPU_AVX, 0, 0},
- {"vperm2i128", vperm2i128_avx2_insn, 1, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"jo", jcc_insn, 9, SUF_Z, 0x00, 0, 0, 0, 0, 0, 0},
- {"callq", call_insn, 30, SUF_Q, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"cmovle", cmovcc_insn, 3, SUF_Z, 0x0E, 0, 0, 0, CPU_686, 0, 0},
- {"sgdtq", twobytemem_insn, 1, SUF_Q, 0x00, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
- {"cmovnpq", cmovcc_insn, 3, SUF_Q, 0x0B, 0, 0, ONLY_64, CPU_686, 0, 0},
- {"cvtpd2ps", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x5A, 0, 0, CPU_SSE2, 0, 0},
- {"minss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5D, 0, 0, CPU_SSE, 0, 0},
- {"loopw", loopw_insn, 4, SUF_Z, 0x02, 0x10, 0, NOT_64, 0, 0, 0},
- {"inveptl", eptvpid_insn, 2, SUF_L, 0x00, 0, 0, NOT_64, CPU_386, CPU_EPTVPID, 0},
- {"bsr", bsfr_insn, 3, SUF_Z, 0xBD, 0, 0, 0, CPU_386, 0, 0},
- {"vcmpgtss", ssecmp_32_insn, 4, SUF_Z, 0x0E, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"negl", f6_insn, 4, SUF_L, 0x03, 0, 0, 0, CPU_386, 0, 0},
- {"psrlw", pshift_insn, 4, SUF_Z, 0xD1, 0x71, 0x02, 0, CPU_MMX, 0, 0},
- {"vpmuludq", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xF4, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pext", vex_gpr_reg_nds_rm_0F_insn, 2, SUF_Z, 0xF3, 0x38, 0xF5, ONLY_AVX, CPU_BMI2, 0, 0},
- {"rsm", twobyte_insn, 1, SUF_Z, 0x0F, 0xAA, 0, 0, CPU_586, CPU_SMM, 0},
- {"addl", arith_insn, 22, SUF_L, 0x00, 0x00, 0, 0, CPU_386, 0, 0},
- {"vpermd", vperm_var_avx2_insn, 1, SUF_Z, 0x36, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"fxsave", twobytemem_insn, 1, SUF_Z, 0x00, 0x0F, 0xAE, 0, CPU_686, CPU_FPU, 0},
- {"vphadduwq", vphaddsub_insn, 1, SUF_Z, 0xD7, 0, 0, 0, CPU_XOP, 0, 0},
- {"pminud", sse4_insn, 2, SUF_Z, 0x3B, 0, 0, 0, CPU_SSE41, 0, 0},
- {"ldsw", ldes_insn, 2, SUF_W, 0xC5, 0, 0, NOT_64, 0, 0, 0},
- {"movsw", onebyte_insn, 1, SUF_Z, 0xA5, 0x10, 0, 0, 0, 0, 0},
- {"pmaxub", mmxsse2_insn, 2, SUF_Z, 0xDE, 0, 0, 0, CPU_MMX, CPU_P3, 0},
- {"vldmxcsr", ldstmxcsr_insn, 1, SUF_Z, 0x02, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vhsubpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x7D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vucomisd", avx_xmm_xmm64_insn, 2, SUF_Z, 0x66, 0x2E, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmovpow", cmovcc_insn, 3, SUF_W, 0x0B, 0, 0, 0, CPU_686, 0, 0},
- {"pmvgezb", cyrixmmx_insn, 1, SUF_Z, 0x5C, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
- {"cvtsd2ss", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5A, 0, 0, CPU_SSE2, 0, 0},
- {"vbroadcastf128", vbroadcastif128_insn, 1, SUF_Z, 0x1A, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"lldt", prot286_insn, 1, SUF_Z, 0x02, 0x00, 0, 0, CPU_286, CPU_Priv, CPU_Prot},
- {"t1mskc", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x01, 0x07, 0, 0, CPU_386, CPU_TBM, 0},
- {"movsx", movszx_insn, 5, SUF_Z, 0xBE, 0, 0, 0, CPU_386, 0, 0},
- {"vpmacsdd", vpma_insn, 1, SUF_Z, 0x9E, 0, 0, 0, CPU_XOP, 0, 0},
- {"vcmplesd", ssecmp_64_insn, 4, SUF_Z, 0x02, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"prefetchw", twobytemem_insn, 1, SUF_Z, 0x01, 0x0F, 0x0D, 0, CPU_PRFCHW, 0, 0},
- {"pextrd", pextrd_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_SSE41, 0},
- {"vcmpfalse_osps", ssecmp_128_insn, 3, SUF_Z, 0x1B, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vptest", sse4_insn, 2, SUF_Z, 0x17, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"loopneq", loopq_insn, 4, SUF_Z, 0x00, 0x40, 0, ONLY_64, 0, 0, 0},
- {"fucompp", twobyte_insn, 1, SUF_Z, 0xDA, 0xE9, 0, 0, CPU_286, CPU_FPU, 0},
- {"vpextrq", pextrq_insn, 1, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"umov", umov_insn, 6, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_Undoc, 0},
- {"fcmovb", fcmovcc_insn, 1, SUF_Z, 0xDA, 0xC0, 0, 0, CPU_686, CPU_FPU, 0},
- {"vinsertf128", vinsertif128_insn, 1, SUF_Z, 0x18, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"std", onebyte_insn, 1, SUF_Z, 0xFD, 0, 0, 0, 0, 0, 0},
- {"cvtpd2dq", xmm_xmm128_insn, 2, SUF_Z, 0xF2, 0xE6, 0, 0, CPU_SSE2, 0, 0},
- {"vpcomned", vpcom_insn, 1, SUF_Z, 0xCE, 0x05, 0, 0, CPU_XOP, 0, 0},
- {"vpand", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xDB, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"bswapq", bswap_insn, 2, SUF_Q, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"vpmacssdqh", vpma_insn, 1, SUF_Z, 0x8F, 0, 0, 0, CPU_XOP, 0, 0},
- {"blcicl", xop_gpr_reg_rm_09_insn, 2, SUF_L, 0x01, 0x05, 0, 0, CPU_386, CPU_TBM, 0},
- {"strq", str_insn, 4, SUF_Q, 0, 0, 0, ONLY_64, CPU_286, CPU_Prot, 0},
- {"vshufps", xmm_xmm128_imm_256_insn, 3, SUF_Z, 0x00, 0xC6, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"roll", shift_insn, 16, SUF_L, 0x00, 0, 0, 0, CPU_386, 0, 0},
- {"cvttpd2dq", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0xE6, 0, 0, CPU_SSE2, 0, 0},
- {"salq", shift_insn, 16, SUF_Q, 0x04, 0, 0, ONLY_64, 0, 0, 0},
- {"vpcomfalseq", vpcom_insn, 1, SUF_Z, 0xCF, 0x06, 0, 0, CPU_XOP, 0, 0},
- {"leaq", lea_insn, 3, SUF_Q, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"vmovdqu", movau_insn, 6, SUF_Z, 0xF3, 0x6F, 0x10, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpmaddubsw", ssse3_insn, 5, SUF_Z, 0x04, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmpltpd", ssecmp_128_insn, 3, SUF_Z, 0x01, 0x66, 0, 0, CPU_SSE, 0, 0},
- {"outw", out_insn, 12, SUF_W, 0, 0, 0, 0, 0, 0, 0},
- {"cmovncq", cmovcc_insn, 3, SUF_Q, 0x03, 0, 0, ONLY_64, CPU_686, 0, 0},
- {"blcmskl", xop_gpr_reg_rm_09_insn, 2, SUF_L, 0x02, 0x01, 0, 0, CPU_386, CPU_TBM, 0},
- {"vfmadd231ss", vfma_ss_insn, 2, SUF_Z, 0xB9, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"cmpordsd", ssecmp_64_insn, 4, SUF_Z, 0x07, 0xF2, 0, 0, CPU_SSE2, 0, 0},
- {"setnle", setcc_insn, 1, SUF_Z, 0x0F, 0, 0, 0, CPU_386, 0, 0},
- {"vfmadd231pd", vfma_pd_insn, 2, SUF_Z, 0xB8, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vcmpneqsd", ssecmp_64_insn, 4, SUF_Z, 0x04, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vmptrst", vmxtwobytemem_insn, 1, SUF_Z, 0x07, 0, 0, 0, CPU_P4, 0, 0},
- {"cmovsl", cmovcc_insn, 3, SUF_L, 0x08, 0, 0, 0, CPU_686, 0, 0},
- {"vpmovsxbw", sse4m64_insn, 4, SUF_Z, 0x20, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpneq_ossd", ssecmp_64_insn, 4, SUF_Z, 0x1C, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"xgetbv", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xD0, 0, CPU_386, CPU_XSAVE, 0},
- {"addr32", NULL, X86_ADDRSIZE>>8, 0x20, 0, 0, 0, 0, 0, 0, 0},
- {"vcmpneq_osss", ssecmp_32_insn, 4, SUF_Z, 0x1C, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vmulsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x59, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"maskmovdqu", maskmovdqu_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SSE2, 0, 0},
- {"vpslldq", pslrldq_insn, 4, SUF_Z, 0x07, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"maskmovq", maskmovq_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_MMX, CPU_P3, 0},
- {"vcmpeq_uspd", ssecmp_128_insn, 3, SUF_Z, 0x18, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pmulhriw", cyrixmmx_insn, 1, SUF_Z, 0x5D, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
- {"vcvtps2dq", avx_xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x5B, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfnmsub231ss", vfma_ss_insn, 2, SUF_Z, 0xBF, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"shrx", vex_gpr_reg_rm_nds_0F_insn, 2, SUF_Z, 0xF2, 0x38, 0xF7, ONLY_AVX, CPU_BMI2, 0, 0},
- {"psadbw", mmxsse2_insn, 2, SUF_Z, 0xF6, 0, 0, 0, CPU_MMX, CPU_P3, 0},
- {"vmovd", vmovd_insn, 2, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_386, CPU_AVX, 0},
- {"pushfl", onebyte_insn, 1, SUF_Z, 0x9C, 0x20, 0, NOT_64, CPU_386, 0, 0},
- {"vfnmadd132ps", vfma_ps_insn, 2, SUF_Z, 0x9C, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"sqrtpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x51, 0, 0, CPU_SSE2, 0, 0},
- {"cvtss2sil", cvt_rx_xmm32_insn, 4, SUF_L, 0xF3, 0x2D, 0, 0, CPU_386, CPU_SSE, 0},
- {"fyl2x", twobyte_insn, 1, SUF_Z, 0xD9, 0xF1, 0, 0, CPU_FPU, 0, 0},
- {"btq", bittest_insn, 6, SUF_Q, 0xA3, 0x04, 0, ONLY_64, CPU_386, 0, 0},
- {"vpslld", vpshift_insn, 8, SUF_Z, 0xF2, 0x72, 0x06, ONLY_AVX, CPU_AVX, 0, 0},
- {"invlpga", invlpga_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_SVM, 0, 0},
- {"xorb", arith_insn, 22, SUF_B, 0x30, 0x06, 0, 0, 0, 0, 0},
- {"fsubp", farithp_insn, 3, SUF_Z, 0xE0, 0, 0, 0, CPU_FPU, 0, 0},
- {"vcvtps2pd", avx_cvt_xmm64_insn, 3, SUF_Z, 0x00, 0x5A, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfnmsub213pd", vfma_pd_insn, 2, SUF_Z, 0xAE, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vcvttsd2sil", cvt_rx_xmm64_insn, 4, SUF_L, 0xF2, 0x2C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"jp", jcc_insn, 9, SUF_Z, 0x0A, 0, 0, 0, 0, 0, 0},
- {"vsubpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x5C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"lesw", ldes_insn, 2, SUF_W, 0xC4, 0, 0, NOT_64, 0, 0, 0},
- {"vxorps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x57, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"divb", div_insn, 8, SUF_B, 0x06, 0, 0, 0, 0, 0, 0},
- {"movq", mov_insn, 69, SUF_Q, 0, 0, 0, 0, 0, 0, 0},
- {"lfsl", lfgss_insn, 3, SUF_L, 0xB4, 0, 0, 0, CPU_386, 0, 0},
- {"syscall", twobyte_insn, 1, SUF_Z, 0x0F, 0x05, 0, 0, CPU_686, CPU_AMD, 0},
- {"btl", bittest_insn, 6, SUF_L, 0xA3, 0x04, 0, 0, CPU_386, 0, 0},
- {"fucomip", fcom2_insn, 2, SUF_Z, 0xDF, 0xE8, 0, 0, CPU_686, CPU_FPU, 0},
- {"setncb", setcc_insn, 1, SUF_B, 0x03, 0, 0, 0, CPU_386, 0, 0},
- {"cmovnol", cmovcc_insn, 3, SUF_L, 0x01, 0, 0, 0, CPU_686, 0, 0},
- {"xcryptcbc", padlock_insn, 1, SUF_Z, 0xD0, 0xF3, 0xA7, 0, CPU_PadLock, 0, 0},
- {"vcmplt_oqps", ssecmp_128_insn, 3, SUF_Z, 0x11, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"btrq", bittest_insn, 6, SUF_Q, 0xB3, 0x06, 0, ONLY_64, CPU_386, 0, 0},
- {"paddw", mmxsse2_insn, 2, SUF_Z, 0xFD, 0, 0, 0, CPU_MMX, 0, 0},
- {"pmovzxbq", sse4m16_insn, 4, SUF_Z, 0x32, 0, 0, 0, CPU_SSE41, 0, 0},
- {"rorq", shift_insn, 16, SUF_Q, 0x01, 0, 0, ONLY_64, 0, 0, 0},
- {"xrelease", NULL, X86_ACQREL>>8, 0xF3, 0, 0, 0, 0, 0, 0, 0},
- {"vpshld", amd_vpshift_insn, 2, SUF_Z, 0x96, 0, 0, 0, CPU_XOP, 0, 0},
- {"fstp", fstp_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_FPU, 0, 0},
- {"movsbq", movszx_insn, 5, SUF_B, 0xBE, 0, 0, ONLY_64, CPU_386, 0, 0},
- {"fucom", fcom2_insn, 2, SUF_Z, 0xDD, 0xE0, 0, 0, CPU_286, CPU_FPU, 0},
- {"vpclmullqlqdq", pclmulqdq_fixed_insn, 2, SUF_Z, 0x00, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"hsubpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x7D, 0, 0, CPU_SSE3, 0, 0},
- {"por", mmxsse2_insn, 2, SUF_Z, 0xEB, 0, 0, 0, CPU_MMX, 0, 0},
- {"mulx", vex_gpr_reg_nds_rm_0F_insn, 2, SUF_Z, 0xF2, 0x38, 0xF6, ONLY_AVX, CPU_BMI2, 0, 0},
- {"vpcomneqb", vpcom_insn, 1, SUF_Z, 0xCC, 0x05, 0, 0, CPU_XOP, 0, 0},
- {"movmskps", movmsk_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_SSE, 0},
- {"fucomi", fcom2_insn, 2, SUF_Z, 0xDB, 0xE8, 0, 0, CPU_686, CPU_FPU, 0},
- {"ht", NULL, X86_SEGREG>>8, 0x3E, 0, 0, 0, 0, 0, 0, 0},
- {"vroundps", avx_sse4imm_insn, 3, SUF_Z, 0x08, 0, 0, ONLY_AVX, CPU_SSE41, 0, 0},
- {"ud1", twobyte_insn, 1, SUF_Z, 0x0F, 0xB9, 0, 0, CPU_286, CPU_Undoc, 0},
- {"insl", onebyte_insn, 1, SUF_Z, 0x6D, 0x20, 0, 0, CPU_386, 0, 0},
- {"vcmpngt_uqpd", ssecmp_128_insn, 3, SUF_Z, 0x1A, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"rex64y", NULL, X86_REX>>8, 0x4A, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"fldln2", twobyte_insn, 1, SUF_Z, 0xD9, 0xED, 0, 0, CPU_FPU, 0, 0},
- {"ldsl", ldes_insn, 2, SUF_L, 0xC5, 0, 0, NOT_64, CPU_386, 0, 0},
- {"tzmskl", xop_gpr_reg_rm_09_insn, 2, SUF_L, 0x01, 0x04, 0, 0, CPU_386, CPU_TBM, 0},
- {"vcmppd", xmm_xmm128_imm_256_insn, 3, SUF_Z, 0x66, 0xC2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"sidtw", twobytemem_insn, 1, SUF_W, 0x01, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
- {"vpextrwl", pextrw_insn, 7, SUF_L, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fldl2t", twobyte_insn, 1, SUF_Z, 0xD9, 0xE9, 0, 0, CPU_FPU, 0, 0},
- {"insb", onebyte_insn, 1, SUF_Z, 0x6C, 0x00, 0, 0, 0, 0, 0},
- {"bound", bound_insn, 2, SUF_Z, 0, 0, 0, NOT_64, CPU_186, 0, 0},
- {"vmwrite", vmxmemwr_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_P4, 0, 0},
- {"cmpxchgq", cmpxchgxadd_insn, 4, SUF_Q, 0xB0, 0, 0, ONLY_64, CPU_486, 0, 0},
- {"fsts", fst_insn, 3, SUF_S, 0, 0, 0, 0, CPU_FPU, 0, 0},
- {"orps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x56, 0, 0, CPU_SSE, 0, 0},
- {"vandnps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x55, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fdivrs", farith_insn, 7, SUF_S, 0xF0, 0xF8, 0x07, 0, CPU_FPU, 0, 0},
- {"fldcww", fldnstcw_insn, 1, SUF_W, 0x05, 0, 0, 0, CPU_FPU, 0, 0},
- {"movl", mov_insn, 69, SUF_L, 0, 0, 0, 0, CPU_386, 0, 0},
- {"movq2dq", movq2dq_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SSE2, 0, 0},
- {"cmpunordpd", ssecmp_128_insn, 3, SUF_Z, 0x03, 0x66, 0, 0, CPU_SSE, 0, 0},
- {"rdseed", rdrand_insn, 3, SUF_Z, 0x07, 0, 0, 0, CPU_RDSEED, 0, 0},
- {"cmovneq", cmovcc_insn, 3, SUF_Q, 0x05, 0, 0, ONLY_64, CPU_686, 0, 0},
- {"vpmovzxbq", sse4m16_insn, 4, SUF_Z, 0x32, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmpsb", onebyte_insn, 1, SUF_Z, 0xA6, 0x00, 0, 0, 0, 0, 0},
- {"vfmadd213sd", vfma_sd_insn, 2, SUF_Z, 0xA9, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"into", onebyte_insn, 1, SUF_Z, 0xCE, 0, 0, NOT_64, 0, 0, 0},
- {"cmovzl", cmovcc_insn, 3, SUF_L, 0x04, 0, 0, 0, CPU_686, 0, 0},
- {"imulb", imul_insn, 19, SUF_B, 0, 0, 0, 0, 0, 0, 0},
- {"setc", setcc_insn, 1, SUF_Z, 0x02, 0, 0, 0, CPU_386, 0, 0},
- {"vstmxcsr", ldstmxcsr_insn, 1, SUF_Z, 0x03, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fldenv", onebytemem_insn, 1, SUF_Z, 0x04, 0xD9, 0, 0, CPU_FPU, 0, 0},
- {"pmovsxwd", sse4m64_insn, 4, SUF_Z, 0x23, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vcmpnltss", ssecmp_32_insn, 4, SUF_Z, 0x05, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"movntpd", movnt_insn, 2, SUF_Z, 0x66, 0x2B, 0, 0, CPU_SSE2, 0, 0},
- {"pcmpeqw", mmxsse2_insn, 2, SUF_Z, 0x75, 0, 0, 0, CPU_MMX, 0, 0},
- {"fcoms", fcom_insn, 6, SUF_S, 0xD0, 0x02, 0, 0, CPU_FPU, 0, 0},
- {"vpaddb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xFC, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"sldt", sldtmsw_insn, 6, SUF_Z, 0x00, 0x00, 0, 0, CPU_286, 0, 0},
- {"fisttpq", fildstp_insn, 4, SUF_Q, 0x01, 0x00, 0x01, 0, CPU_SSE3, 0, 0},
- {"vpmacsww", vpma_insn, 1, SUF_Z, 0x95, 0, 0, 0, CPU_XOP, 0, 0},
- {"jne", jcc_insn, 9, SUF_Z, 0x05, 0, 0, 0, 0, 0, 0},
- {"shldl", shlrd_insn, 9, SUF_L, 0xA4, 0, 0, 0, CPU_386, 0, 0},
- {"cmc", onebyte_insn, 1, SUF_Z, 0xF5, 0, 0, 0, 0, 0, 0},
- {"cmovs", cmovcc_insn, 3, SUF_Z, 0x08, 0, 0, 0, CPU_686, 0, 0},
- {"movlpd", movhlp_insn, 3, SUF_Z, 0x66, 0x12, 0, 0, CPU_SSE2, 0, 0},
- {"calll", call_insn, 30, SUF_L, 0, 0, 0, 0, CPU_386, 0, 0},
- {"subb", arith_insn, 22, SUF_B, 0x28, 0x05, 0, 0, 0, 0, 0},
- {"lmsww", prot286_insn, 1, SUF_W, 0x06, 0x01, 0, 0, CPU_286, CPU_Priv, 0},
- {"vmrun", svm_rax_insn, 2, SUF_Z, 0xD8, 0, 0, 0, CPU_SVM, 0, 0},
- {"cmovna", cmovcc_insn, 3, SUF_Z, 0x06, 0, 0, 0, CPU_686, 0, 0},
- {"cmovnpw", cmovcc_insn, 3, SUF_W, 0x0B, 0, 0, 0, CPU_686, 0, 0},
- {"bextrq", bextr_insn, 4, SUF_Q, 0, 0, 0, ONLY_64|ONLY_AVX, CPU_BMI1, 0, 0},
- {"vpmacssww", vpma_insn, 1, SUF_Z, 0x85, 0, 0, 0, CPU_XOP, 0, 0},
- {"vdivss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5E, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"movabsl", movabs_insn, 9, SUF_L, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"callw", call_insn, 30, SUF_W, 0, 0, 0, 0, 0, 0, 0},
- {"vpcomlew", vpcom_insn, 1, SUF_Z, 0xCD, 0x01, 0, 0, CPU_XOP, 0, 0},
- {"fninit", twobyte_insn, 1, SUF_Z, 0xDB, 0xE3, 0, 0, CPU_FPU, 0, 0},
- {"vpavgw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xE3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpltpd", ssecmp_128_insn, 3, SUF_Z, 0x01, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cpuid", twobyte_insn, 1, SUF_Z, 0x0F, 0xA2, 0, 0, CPU_486, 0, 0},
- {"pmovzxwq", sse4m32_insn, 4, SUF_Z, 0x34, 0, 0, 0, CPU_SSE41, 0, 0},
- {"cmovnaew", cmovcc_insn, 3, SUF_W, 0x02, 0, 0, 0, CPU_686, 0, 0},
- {"comiss", xmm_xmm32_insn, 4, SUF_Z, 0x00, 0x2F, 0, 0, CPU_SSE, 0, 0},
- {"cmovnoq", cmovcc_insn, 3, SUF_Q, 0x01, 0, 0, ONLY_64, CPU_686, 0, 0},
- {"negb", f6_insn, 4, SUF_B, 0x03, 0, 0, 0, 0, 0, 0},
- {"vfnmadd231sd", vfma_sd_insn, 2, SUF_Z, 0xBD, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"xchgw", xchg_insn, 16, SUF_W, 0, 0, 0, 0, 0, 0, 0},
- {"rexz", NULL, X86_REX>>8, 0x41, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"sbb", arith_insn, 22, SUF_Z, 0x18, 0x03, 0, 0, 0, 0, 0},
- {"lslw", larlsl_insn, 6, SUF_W, 0x03, 0, 0, 0, CPU_286, CPU_Prot, 0},
- {"cmovnzw", cmovcc_insn, 3, SUF_W, 0x05, 0, 0, 0, CPU_686, 0, 0},
- {"vfrczpd", vfrc_pdps_insn, 2, SUF_Z, 0x01, 0, 0, 0, CPU_XOP, 0, 0},
- {"bsrw", bsfr_insn, 3, SUF_W, 0xBD, 0, 0, 0, CPU_386, 0, 0},
- {"fcomps", fcom_insn, 6, SUF_S, 0xD8, 0x03, 0, 0, CPU_FPU, 0, 0},
- {"rorx", vex_gpr_reg_rm_0F_imm8_insn, 2, SUF_Z, 0xF2, 0x3A, 0xF0, ONLY_AVX, CPU_BMI2, 0, 0},
- {"shufpd", xmm_xmm128_imm_insn, 1, SUF_Z, 0x66, 0xC6, 0, 0, CPU_SSE2, 0, 0},
- {"vpcomleq", vpcom_insn, 1, SUF_Z, 0xCF, 0x01, 0, 0, CPU_XOP, 0, 0},
- {"vcmpunordsd", ssecmp_64_insn, 4, SUF_Z, 0x03, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"minps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x5D, 0, 0, CPU_SSE, 0, 0},
- {"vaesimc", aesimc_insn, 1, SUF_Z, 0x38, 0xDB, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"movhps", movhlp_insn, 3, SUF_Z, 0x00, 0x16, 0, 0, CPU_SSE, 0, 0},
- {"vdivps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x5E, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"filds", fildstp_insn, 4, SUF_S, 0x00, 0x02, 0x05, 0, CPU_FPU, 0, 0},
- {"adc", arith_insn, 22, SUF_Z, 0x10, 0x02, 0, 0, 0, 0, 0},
- {"vtestpd", sse4_insn, 2, SUF_Z, 0x0F, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pfpnacc", now3d_insn, 1, SUF_Z, 0x8E, 0, 0, 0, CPU_3DNow, CPU_Athlon, 0},
- {"vmovsldup", avx_xmm_xmm128_insn, 2, SUF_Z, 0xF3, 0x12, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpbroadcastb", vpbroadcastb_avx2_insn, 4, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"sahf", onebyte_insn, 1, SUF_Z, 0x9E, 0, 0, 0, 0, 0, 0},
- {"vmovhps", movhlp_insn, 3, SUF_Z, 0x00, 0x16, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fpatan", twobyte_insn, 1, SUF_Z, 0xD9, 0xF3, 0, 0, CPU_FPU, 0, 0},
- {"psubw", mmxsse2_insn, 2, SUF_Z, 0xF9, 0, 0, 0, CPU_MMX, 0, 0},
- {"sqrtss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x51, 0, 0, CPU_SSE, 0, 0},
- {"vpminuw", ssse3_insn, 5, SUF_Z, 0x3A, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"rex64z", NULL, X86_REX>>8, 0x49, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"cmovng", cmovcc_insn, 3, SUF_Z, 0x0E, 0, 0, 0, CPU_686, 0, 0},
- {"cmovngq", cmovcc_insn, 3, SUF_Q, 0x0E, 0, 0, ONLY_64, CPU_686, 0, 0},
- {"blcil", xop_gpr_reg_rm_09_insn, 2, SUF_L, 0x02, 0x06, 0, 0, CPU_386, CPU_TBM, 0},
- {"setob", setcc_insn, 1, SUF_B, 0x00, 0, 0, 0, CPU_386, 0, 0},
- {"xbts", xbts_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_Obs, CPU_Undoc},
- {"loopne", loop_insn, 8, SUF_Z, 0x00, 0, 0, 0, 0, 0, 0},
- {"fxch", fxch_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_FPU, 0, 0},
- {"vfmsubadd132pd", vfma_pd_insn, 2, SUF_Z, 0x97, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vmovddup", vmovddup_insn, 3, SUF_Z, 0xF2, 0x12, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"enterq", enter_insn, 3, SUF_Q, 0, 0, 0, ONLY_64, CPU_186, 0, 0},
- {"vpcomnequw", vpcom_insn, 1, SUF_Z, 0xED, 0x05, 0, 0, CPU_XOP, 0, 0},
- {"vpunpckhdq", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x6A, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fnstenvs", onebytemem_insn, 1, SUF_S, 0x06, 0xD9, 0, 0, CPU_FPU, 0, 0},
- {"phaddd", ssse3_insn, 5, SUF_Z, 0x02, 0, 0, 0, CPU_SSSE3, 0, 0},
- {"vmovups", movau_insn, 6, SUF_Z, 0x00, 0x10, 0x01, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcomneuq", vpcom_insn, 1, SUF_Z, 0xEF, 0x05, 0, 0, CPU_XOP, 0, 0},
- {"imul", imul_insn, 19, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
- {"fimuls", fiarith_insn, 2, SUF_S, 0x01, 0xDA, 0, 0, CPU_FPU, 0, 0},
- {"jg", jcc_insn, 9, SUF_Z, 0x0F, 0, 0, 0, 0, 0, 0},
- {"fcoml", fcom_insn, 6, SUF_L, 0xD0, 0x02, 0, 0, CPU_FPU, 0, 0},
- {"vxorpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x57, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfmaddsubps", fma_128_256_insn, 4, SUF_Z, 0x5C, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"vpaddw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xFD, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vbroadcasti128", vbroadcastif128_insn, 1, SUF_Z, 0x5A, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"vcvttpd2dqy", avx_cvt_xmm128_y_insn, 1, SUF_Z, 0x66, 0xE6, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"mov", mov_insn, 69, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
- {"fmull", farith_insn, 7, SUF_L, 0xC8, 0xC8, 0x01, 0, CPU_FPU, 0, 0},
- {"vpcomfalseub", vpcom_insn, 1, SUF_Z, 0xEC, 0x06, 0, 0, CPU_XOP, 0, 0},
- {"xaddq", cmpxchgxadd_insn, 4, SUF_Q, 0xC0, 0, 0, ONLY_64, CPU_486, 0, 0},
- {"inl", in_insn, 12, SUF_L, 0, 0, 0, 0, CPU_386, 0, 0},
- {"t1mskcl", xop_gpr_reg_rm_09_insn, 2, SUF_L, 0x01, 0x07, 0, 0, CPU_386, CPU_TBM, 0},
- {"nop", onebyte_insn, 1, SUF_Z, 0x90, 0, 0, 0, 0, 0, 0},
- {"rexx", NULL, X86_REX>>8, 0x44, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"vperm2f128", vperm2f128_insn, 1, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"tzcnt", cnt_insn, 3, SUF_Z, 0xBC, 0, 0, 0, CPU_BMI1, 0, 0},
- {"hlt", onebyte_insn, 1, SUF_Z, 0xF4, 0, 0, 0, CPU_Priv, 0, 0},
- {"vcmpeq_uqpd", ssecmp_128_insn, 3, SUF_Z, 0x08, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"sgdt", twobytemem_insn, 1, SUF_Z, 0x00, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
- {"cwtl", onebyte_insn, 1, SUF_Z, 0x98, 0x20, 0, 0, CPU_386, 0, 0},
- {"xorl", arith_insn, 22, SUF_L, 0x30, 0x06, 0, 0, CPU_386, 0, 0},
- {"movapd", movau_insn, 6, SUF_Z, 0x66, 0x28, 0x01, 0, CPU_SSE2, 0, 0},
- {"vpmovsxwq", sse4m32_insn, 4, SUF_Z, 0x24, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfmsubadd231pd", vfma_pd_insn, 2, SUF_Z, 0xB7, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"cvttsd2sil", cvt_rx_xmm64_insn, 4, SUF_L, 0xF2, 0x2C, 0, 0, CPU_SSE2, 0, 0},
- {"cmpunordss", ssecmp_32_insn, 4, SUF_Z, 0x03, 0xF3, 0, 0, CPU_SSE, 0, 0},
- {"vpcomneq", vpcom_insn, 1, SUF_Z, 0xCF, 0x05, 0, 0, CPU_XOP, 0, 0},
- {"ffreep", ffree_insn, 1, SUF_Z, 0xDF, 0, 0, 0, CPU_686, CPU_FPU, CPU_Undoc},
- {"vfnmsub213ss", vfma_ss_insn, 2, SUF_Z, 0xAF, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"outsb", onebyte_insn, 1, SUF_Z, 0x6E, 0x00, 0, 0, 0, 0, 0},
- {"psubsiw", cyrixmmx_insn, 1, SUF_Z, 0x55, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
- {"jng", jcc_insn, 9, SUF_Z, 0x0E, 0, 0, 0, 0, 0, 0},
- {"vpcomltd", vpcom_insn, 1, SUF_Z, 0xCE, 0x00, 0, 0, CPU_XOP, 0, 0},
- {"t1mskcq", xop_gpr_reg_rm_09_insn, 2, SUF_Q, 0x01, 0x07, 0, ONLY_64, CPU_TBM, 0, 0},
- {"rdmsr", twobyte_insn, 1, SUF_Z, 0x0F, 0x32, 0, 0, CPU_586, CPU_Priv, 0},
- {"notb", f6_insn, 4, SUF_B, 0x02, 0, 0, 0, 0, 0, 0},
- {"idiv", div_insn, 8, SUF_Z, 0x07, 0, 0, 0, 0, 0, 0},
- {"vpshuflw", xmm_xmm128_imm_256avx2_insn, 2, SUF_Z, 0xF2, 0x70, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"paddd", mmxsse2_insn, 2, SUF_Z, 0xFE, 0, 0, 0, CPU_MMX, 0, 0},
- {"tzcntw", cnt_insn, 3, SUF_W, 0xBC, 0, 0, 0, CPU_BMI1, 0, 0},
- {"pcmpgtd", mmxsse2_insn, 2, SUF_Z, 0x66, 0, 0, 0, CPU_MMX, 0, 0},
- {"stosq", onebyte_insn, 1, SUF_Z, 0xAB, 0x40, 0, ONLY_64, 0, 0, 0},
- {"arplw", arpl_insn, 1, SUF_W, 0, 0, 0, NOT_64, CPU_286, CPU_Prot, 0},
- {"vpermilps", vpermil_insn, 4, SUF_Z, 0x04, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfnmadd231ps", vfma_ps_insn, 2, SUF_Z, 0xBC, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"xadd", cmpxchgxadd_insn, 4, SUF_Z, 0xC0, 0, 0, 0, CPU_486, 0, 0},
- {"shrdl", shlrd_insn, 9, SUF_L, 0xAC, 0, 0, 0, CPU_386, 0, 0},
- {"fscale", twobyte_insn, 1, SUF_Z, 0xD9, 0xFD, 0, 0, CPU_FPU, 0, 0},
- {"rdpmc", twobyte_insn, 1, SUF_Z, 0x0F, 0x33, 0, 0, CPU_686, 0, 0},
- {"cvtpi2ps", cvt_xmm_mm_ps_insn, 1, SUF_Z, 0x2A, 0, 0, 0, CPU_SSE, 0, 0},
- {"cmovgq", cmovcc_insn, 3, SUF_Q, 0x0F, 0, 0, ONLY_64, CPU_686, 0, 0},
- {"vfnmsubps", fma_128_256_insn, 4, SUF_Z, 0x7C, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"seto", setcc_insn, 1, SUF_Z, 0x00, 0, 0, 0, CPU_386, 0, 0},
- {"jnae", jcc_insn, 9, SUF_Z, 0x02, 0, 0, 0, 0, 0, 0},
- {"popcntw", cnt_insn, 3, SUF_W, 0xB8, 0, 0, 0, CPU_SSE42, 0, 0},
- {"vpgatherqd", gather_32x_32y_128_insn, 2, SUF_Z, 0x91, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"salc", onebyte_insn, 1, SUF_Z, 0xD6, 0, 0, NOT_64, CPU_Undoc, 0, 0},
- {"vcmpngesd", ssecmp_64_insn, 4, SUF_Z, 0x09, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcomgeud", vpcom_insn, 1, SUF_Z, 0xEE, 0x03, 0, 0, CPU_XOP, 0, 0},
- {"blcicq", xop_gpr_reg_rm_09_insn, 2, SUF_Q, 0x01, 0x05, 0, ONLY_64, CPU_TBM, 0, 0},
- {"pcmpestri", sse4pcmpstr_insn, 1, SUF_Z, 0x61, 0, 0, 0, CPU_SSE42, 0, 0},
- {"sarxq", vex_gpr_reg_rm_nds_0F_insn, 2, SUF_Q, 0xF3, 0x38, 0xF7, ONLY_64|ONLY_AVX, CPU_BMI2, 0, 0},
- {"lddqu", lddqu_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_SSE3, 0, 0},
- {"vpcomtruew", vpcom_insn, 1, SUF_Z, 0xCD, 0x07, 0, 0, CPU_XOP, 0, 0},
- {"fxam", twobyte_insn, 1, SUF_Z, 0xD9, 0xE5, 0, 0, CPU_FPU, 0, 0},
- {"crc32b", crc32_insn, 5, SUF_B, 0, 0, 0, 0, CPU_386, CPU_SSE42, 0},
- {"vpinsrw", pinsrw_insn, 9, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vphsubdq", vphaddsub_insn, 1, SUF_Z, 0xE3, 0, 0, 0, CPU_XOP, 0, 0},
- {"vfmsubaddps", fma_128_256_insn, 4, SUF_Z, 0x5E, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"btw", bittest_insn, 6, SUF_W, 0xA3, 0x04, 0, 0, CPU_386, 0, 0},
- {"pi2fw", now3d_insn, 1, SUF_Z, 0x0C, 0, 0, 0, CPU_3DNow, CPU_Athlon, 0},
- {"movhlps", movhllhps_insn, 2, SUF_Z, 0x12, 0, 0, 0, CPU_SSE, 0, 0},
- {"divsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5E, 0, 0, CPU_SSE2, 0, 0},
- {"vcmpge_oqps", ssecmp_128_insn, 3, SUF_Z, 0x1D, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"rexxyz", NULL, X86_REX>>8, 0x47, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"pf2id", now3d_insn, 1, SUF_Z, 0x1D, 0, 0, 0, CPU_3DNow, 0, 0},
- {"andnps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x55, 0, 0, CPU_SSE, 0, 0},
- {"cmovzq", cmovcc_insn, 3, SUF_Q, 0x04, 0, 0, ONLY_64, CPU_686, 0, 0},
- {"cwd", onebyte_insn, 1, SUF_Z, 0x99, 0x10, 0, 0, 0, 0, 0},
- {"blcsl", xop_gpr_reg_rm_09_insn, 2, SUF_L, 0x01, 0x03, 0, 0, CPU_386, CPU_TBM, 0},
- {"maxps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x5F, 0, 0, CPU_SSE, 0, 0},
- {"comisd", xmm_xmm64_insn, 4, SUF_Z, 0x66, 0x2F, 0, 0, CPU_SSE2, 0, 0},
- {"vcmpnle_uqps", ssecmp_128_insn, 3, SUF_Z, 0x16, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmovnzq", cmovcc_insn, 3, SUF_Q, 0x05, 0, 0, ONLY_64, CPU_686, 0, 0},
- {"ljmpw", ljmpcall_insn, 7, SUF_W, 0x05, 0xEA, 0, 0, 0, 0, 0},
- {"cmpeqps", ssecmp_128_insn, 3, SUF_Z, 0x00, 0, 0, 0, CPU_SSE, 0, 0},
- {"orb", arith_insn, 22, SUF_B, 0x08, 0x01, 0, 0, 0, 0, 0},
- {"fists", fiarith_insn, 2, SUF_S, 0x02, 0xDB, 0, 0, CPU_FPU, 0, 0},
- {"vmaskmovps", vmaskmov_insn, 4, SUF_Z, 0x2C, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"xend", tsx_0x0F_0x01_insn, 1, SUF_Z, 0xD5, 0, 0, 0, CPU_TSX, 0, 0},
- {"fiadd", fiarith_insn, 2, SUF_Z, 0x00, 0xDA, 0, 0, CPU_FPU, 0, 0},
- {"jns", jcc_insn, 9, SUF_Z, 0x09, 0, 0, 0, 0, 0, 0},
- {"vpcomfalseuw", vpcom_insn, 1, SUF_Z, 0xED, 0x06, 0, 0, CPU_XOP, 0, 0},
- {"bsrl", bsfr_insn, 3, SUF_L, 0xBD, 0, 0, 0, CPU_386, 0, 0},
- {"pabsb", ssse3_insn, 5, SUF_Z, 0x1C, 0, 0, 0, CPU_SSSE3, 0, 0},
- {"vcmptruess", ssecmp_32_insn, 4, SUF_Z, 0x0F, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"sal", shift_insn, 16, SUF_Z, 0x04, 0, 0, 0, 0, 0, 0},
- {"movzbl", movszx_insn, 5, SUF_B, 0xB6, 0, 0, 0, CPU_386, 0, 0},
- {"packssdw", mmxsse2_insn, 2, SUF_Z, 0x6B, 0, 0, 0, CPU_MMX, 0, 0},
- {"fcmovbe", fcmovcc_insn, 1, SUF_Z, 0xDA, 0xD0, 0, 0, CPU_686, CPU_FPU, 0},
- {"orq", arith_insn, 22, SUF_Q, 0x08, 0x01, 0, ONLY_64, 0, 0, 0},
- {"blsicq", xop_gpr_reg_rm_09_insn, 2, SUF_Q, 0x01, 0x06, 0, ONLY_64, CPU_TBM, 0, 0},
- {"fiaddl", fiarith_insn, 2, SUF_L, 0x00, 0xDA, 0, 0, CPU_FPU, 0, 0},
- {"fprem", twobyte_insn, 1, SUF_Z, 0xD9, 0xF8, 0, 0, CPU_FPU, 0, 0},
- {"vpcomltw", vpcom_insn, 1, SUF_Z, 0xCD, 0x00, 0, 0, CPU_XOP, 0, 0},
- {"sarl", shift_insn, 16, SUF_L, 0x07, 0, 0, 0, CPU_386, 0, 0},
- {"shr", shift_insn, 16, SUF_Z, 0x05, 0, 0, 0, 0, 0, 0},
- {"pushl", push_insn, 35, SUF_L, 0, 0, 0, 0, CPU_386, 0, 0},
- {"imull", imul_insn, 19, SUF_L, 0, 0, 0, 0, CPU_386, 0, 0},
- {"ftst", twobyte_insn, 1, SUF_Z, 0xD9, 0xE4, 0, 0, CPU_FPU, 0, 0},
- {"vcmpeqps", ssecmp_128_insn, 3, SUF_Z, 0x00, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"lcalll", ljmpcall_insn, 7, SUF_L, 0x03, 0x9A, 0, 0, CPU_386, 0, 0},
- {"lock", NULL, X86_LOCKREP>>8, 0xF0, 0, 0, 0, 0, 0, 0, 0},
- {"cmovnbw", cmovcc_insn, 3, SUF_W, 0x03, 0, 0, 0, CPU_686, 0, 0},
- {"movzxw", movszx_insn, 5, SUF_W, 0xB6, 0, 0, 0, CPU_386, 0, 0},
- {"or", arith_insn, 22, SUF_Z, 0x08, 0x01, 0, 0, 0, 0, 0},
- {"vcmpnle_uqpd", ssecmp_128_insn, 3, SUF_Z, 0x16, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"setl", setcc_insn, 1, SUF_Z, 0x0C, 0, 0, 0, CPU_386, 0, 0},
- {"movntiq", movnti_insn, 2, SUF_Q, 0, 0, 0, ONLY_64, CPU_P4, 0, 0},
- {"lfs", lfgss_insn, 3, SUF_Z, 0xB4, 0, 0, 0, CPU_386, 0, 0},
- {"vroundss", sse4m32imm_insn, 4, SUF_Z, 0x0A, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"setzb", setcc_insn, 1, SUF_B, 0x04, 0, 0, 0, CPU_386, 0, 0},
- {"pcmpistrm", sse4pcmpstr_insn, 1, SUF_Z, 0x62, 0, 0, 0, CPU_SSE42, 0, 0},
- {"je", jcc_insn, 9, SUF_Z, 0x04, 0, 0, 0, 0, 0, 0},
- {"psraw", pshift_insn, 4, SUF_Z, 0xE1, 0x71, 0x04, 0, CPU_MMX, 0, 0},
- {"shlx", vex_gpr_reg_rm_nds_0F_insn, 2, SUF_Z, 0x66, 0x38, 0xF7, ONLY_AVX, CPU_BMI2, 0, 0},
- {"mfence", threebyte_insn, 1, SUF_Z, 0x0F, 0xAE, 0xF0, 0, CPU_P3, 0, 0},
- {"vcvtsd2siq", cvt_rx_xmm64_insn, 4, SUF_Q, 0xF2, 0x2D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vtestps", sse4_insn, 2, SUF_Z, 0x0E, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"verww", prot286_insn, 1, SUF_W, 0x05, 0x00, 0, 0, CPU_286, CPU_Prot, 0},
- {"vfmsubaddpd", fma_128_256_insn, 4, SUF_Z, 0x5F, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"fyl2xp1", twobyte_insn, 1, SUF_Z, 0xD9, 0xF9, 0, 0, CPU_FPU, 0, 0},
- {"vunpckhpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x15, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vsubps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x5C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"divss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5E, 0, 0, CPU_SSE, 0, 0},
- {"blcfilll", xop_gpr_reg_rm_09_insn, 2, SUF_L, 0x01, 0x01, 0, 0, CPU_386, CPU_TBM, 0},
- {"vcmptrue_uspd", ssecmp_128_insn, 3, SUF_Z, 0x1F, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vorpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x56, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"setgeb", setcc_insn, 1, SUF_B, 0x0D, 0, 0, 0, CPU_386, 0, 0},
- {"vmxon", vmxthreebytemem_insn, 1, SUF_Z, 0xF3, 0, 0, 0, CPU_P4, 0, 0},
- {"vpmaskmovd", vmaskmov_insn, 4, SUF_Z, 0x8C, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"vfnmaddpd", fma_128_256_insn, 4, SUF_Z, 0x79, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"cmovpl", cmovcc_insn, 3, SUF_L, 0x0A, 0, 0, 0, CPU_686, 0, 0},
- {"pabsw", ssse3_insn, 5, SUF_Z, 0x1D, 0, 0, 0, CPU_SSSE3, 0, 0},
- {"cmovnge", cmovcc_insn, 3, SUF_Z, 0x0C, 0, 0, 0, CPU_686, 0, 0},
- {"aword", NULL, X86_ADDRSIZE>>8, 0x10, 0, 0, 0, 0, 0, 0, 0},
- {"sscaq", onebyte_insn, 1, SUF_Z, 0xAF, 0x40, 0, ONLY_64, 0, 0, 0},
- {"fstenvs", twobytemem_insn, 1, SUF_S, 0x06, 0x9B, 0xD9, 0, CPU_FPU, 0, 0},
- {"vpmovzxbw", sse4m64_insn, 4, SUF_Z, 0x30, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpsllw", vpshift_insn, 8, SUF_Z, 0xF1, 0x71, 0x06, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpabsw", avx2_ssse3_2op_insn, 2, SUF_Z, 0x1D, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"popf", onebyte_insn, 1, SUF_Z, 0x9D, 0x00, 0x40, 0, 0, 0, 0},
- {"vcmpunord_sss", ssecmp_32_insn, 4, SUF_Z, 0x13, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"bsf", bsfr_insn, 3, SUF_Z, 0xBC, 0, 0, 0, CPU_386, 0, 0},
- {"cmovaw", cmovcc_insn, 3, SUF_W, 0x07, 0, 0, 0, CPU_686, 0, 0},
- {"psrlq", pshift_insn, 4, SUF_Z, 0xD3, 0x73, 0x02, 0, CPU_MMX, 0, 0},
- {"divw", div_insn, 8, SUF_W, 0x06, 0, 0, 0, 0, 0, 0},
- {"cmovnal", cmovcc_insn, 3, SUF_L, 0x06, 0, 0, 0, CPU_686, 0, 0},
- {"vpcmpeqq", ssse3_insn, 5, SUF_Z, 0x29, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmovnaq", cmovcc_insn, 3, SUF_Q, 0x06, 0, 0, ONLY_64, CPU_686, 0, 0},
- {"cmove", cmovcc_insn, 3, SUF_Z, 0x04, 0, 0, 0, CPU_686, 0, 0},
- {"popaw", onebyte_insn, 1, SUF_Z, 0x61, 0x10, 0, NOT_64, CPU_186, 0, 0},
- {"invvpidq", eptvpid_insn, 2, SUF_Q, 0x01, 0, 0, ONLY_64, CPU_EPTVPID, 0, 0},
- {"vcvtdq2ps", avx_xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x5B, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vrcpps", avx_xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x53, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"packsswb", mmxsse2_insn, 2, SUF_Z, 0x63, 0, 0, 0, CPU_MMX, 0, 0},
- {"sarw", shift_insn, 16, SUF_W, 0x07, 0, 0, 0, 0, 0, 0},
- {"pfrcpit1", now3d_insn, 1, SUF_Z, 0xA6, 0, 0, 0, CPU_3DNow, 0, 0},
- {"btcl", bittest_insn, 6, SUF_L, 0xBB, 0x07, 0, 0, CPU_386, 0, 0},
- {"rolb", shift_insn, 16, SUF_B, 0x00, 0, 0, 0, 0, 0, 0},
- {"vphadddq", vphaddsub_insn, 1, SUF_Z, 0xCB, 0, 0, 0, CPU_XOP, 0, 0},
- {"vpmaxsw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xEE, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpminsw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xEA, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"jnz", jcc_insn, 9, SUF_Z, 0x05, 0, 0, 0, 0, 0, 0},
- {"vphsubd", ssse3_insn, 5, SUF_Z, 0x06, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vblendvps", avx_sse4xmm0_insn, 2, SUF_Z, 0x4A, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vhaddps", xmm_xmm128_256_insn, 4, SUF_Z, 0xF2, 0x7C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"lidtl", twobytemem_insn, 1, SUF_L, 0x03, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
- {"divq", div_insn, 8, SUF_Q, 0x06, 0, 0, ONLY_64, 0, 0, 0},
- {"outb", out_insn, 12, SUF_B, 0, 0, 0, 0, 0, 0, 0},
- {"setnsb", setcc_insn, 1, SUF_B, 0x09, 0, 0, 0, CPU_386, 0, 0},
- {"vcmpfalse_ospd", ssecmp_128_insn, 3, SUF_Z, 0x1B, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"jnb", jcc_insn, 9, SUF_Z, 0x03, 0, 0, 0, 0, 0, 0},
- {"vpmovsxdq", sse4m64_insn, 4, SUF_Z, 0x25, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"adcw", arith_insn, 22, SUF_W, 0x10, 0x02, 0, 0, 0, 0, 0},
- {"cmovbel", cmovcc_insn, 3, SUF_L, 0x06, 0, 0, 0, CPU_686, 0, 0},
- {"cmovaeq", cmovcc_insn, 3, SUF_Q, 0x03, 0, 0, ONLY_64, CPU_686, 0, 0},
- {"fcmovnu", fcmovcc_insn, 1, SUF_Z, 0xDB, 0xD8, 0, 0, CPU_686, CPU_FPU, 0},
- {"idivb", div_insn, 8, SUF_B, 0x07, 0, 0, 0, 0, 0, 0},
- {"sgdtl", twobytemem_insn, 1, SUF_L, 0x00, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
- {"jmpl", jmp_insn, 31, SUF_L, 0, 0, 0, 0, CPU_386, 0, 0},
- {"fisttp", fildstp_insn, 4, SUF_Z, 0x01, 0x00, 0x01, 0, CPU_SSE3, 0, 0},
- {"vcmpord_sps", ssecmp_128_insn, 3, SUF_Z, 0x17, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"haddps", xmm_xmm128_insn, 2, SUF_Z, 0xF2, 0x7C, 0, 0, CPU_SSE3, 0, 0},
- {"rolw", shift_insn, 16, SUF_W, 0x00, 0, 0, 0, 0, 0, 0},
- {"vcvtpd2dqy", avx_cvt_xmm128_y_insn, 1, SUF_Z, 0xF2, 0xE6, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"bt", bittest_insn, 6, SUF_Z, 0xA3, 0x04, 0, 0, CPU_386, 0, 0},
- {"vcmpfalsepd", ssecmp_128_insn, 3, SUF_Z, 0x0B, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpleps", ssecmp_128_insn, 3, SUF_Z, 0x02, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vphaddubd", vphaddsub_insn, 1, SUF_Z, 0xD2, 0, 0, 0, CPU_XOP, 0, 0},
- {"vfnmsub132ss", vfma_ss_insn, 2, SUF_Z, 0x9F, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"cmovnow", cmovcc_insn, 3, SUF_W, 0x01, 0, 0, 0, CPU_686, 0, 0},
- {"cvtps2dq", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x5B, 0, 0, CPU_SSE2, 0, 0},
- {"bsrq", bsfr_insn, 3, SUF_Q, 0xBD, 0, 0, ONLY_64, CPU_386, 0, 0},
- {"vcmpord_spd", ssecmp_128_insn, 3, SUF_Z, 0x17, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcomd", vpcom_imm_insn, 1, SUF_Z, 0xCE, 0, 0, 0, CPU_XOP, 0, 0},
- {"jnle", jcc_insn, 9, SUF_Z, 0x0F, 0, 0, 0, 0, 0, 0},
- {"vhsubps", xmm_xmm128_256_insn, 4, SUF_Z, 0xF2, 0x7D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"jcxz", jcxz_insn, 2, SUF_Z, 0x10, 0, 0, 0, 0, 0, 0},
- {"fsavel", twobytemem_insn, 1, SUF_L, 0x06, 0x9B, 0xDD, 0, CPU_FPU, 0, 0},
- {"cmovnbq", cmovcc_insn, 3, SUF_Q, 0x03, 0, 0, ONLY_64, CPU_686, 0, 0},
- {"lidtw", twobytemem_insn, 1, SUF_W, 0x03, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
- {"vcvtss2si", cvt_rx_xmm32_insn, 4, SUF_Z, 0xF3, 0x2D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"mulw", f6_insn, 4, SUF_W, 0x04, 0, 0, 0, 0, 0, 0},
- {"vbroadcastsd", vbroadcastsd_insn, 2, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmovlel", cmovcc_insn, 3, SUF_L, 0x0E, 0, 0, 0, CPU_686, 0, 0},
- {"pmovmskbq", pmovmskb_insn, 6, SUF_Q, 0, 0, 0, ONLY_64, CPU_MMX, CPU_P3, 0},
- {"frstorl", onebytemem_insn, 1, SUF_L, 0x04, 0xDD, 0, 0, CPU_FPU, 0, 0},
- {"cvttss2si", cvt_rx_xmm32_insn, 4, SUF_Z, 0xF3, 0x2C, 0, 0, CPU_386, CPU_SSE, 0},
- {"cmpnltpd", ssecmp_128_insn, 3, SUF_Z, 0x05, 0x66, 0, 0, CPU_SSE, 0, 0},
- {"vpcomgtw", vpcom_insn, 1, SUF_Z, 0xCD, 0x02, 0, 0, CPU_XOP, 0, 0},
- {"xaddl", cmpxchgxadd_insn, 4, SUF_L, 0xC0, 0, 0, 0, CPU_486, 0, 0},
- {"vpmulhw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xE5, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"lgsq", lfgss_insn, 3, SUF_Q, 0xB5, 0, 0, ONLY_64, CPU_386, 0, 0},
- {"boundl", bound_insn, 2, SUF_L, 0, 0, 0, NOT_64, CPU_386, 0, 0},
- {"vmaxpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x5F, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"movntdqa", movntdqa_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_SSE41, 0, 0},
- {"xstorerng", padlock_insn, 1, SUF_Z, 0xC0, 0x00, 0xA7, 0, CPU_PadLock, 0, 0},
- {"fxsaveq", twobytemem_insn, 1, SUF_Q, 0x00, 0x0F, 0xAE, 0, CPU_686, CPU_FPU, 0},
- {"cmplepd", ssecmp_128_insn, 3, SUF_Z, 0x02, 0x66, 0, 0, CPU_SSE, 0, 0},
- {"vpunpckhwd", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x69, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fiadds", fiarith_insn, 2, SUF_S, 0x00, 0xDA, 0, 0, CPU_FPU, 0, 0},
- {"bsfq", bsfr_insn, 3, SUF_Q, 0xBC, 0, 0, ONLY_64, CPU_386, 0, 0},
- {"cvtss2si", cvt_rx_xmm32_insn, 4, SUF_Z, 0xF3, 0x2D, 0, 0, CPU_386, CPU_SSE, 0},
- {"pushw", push_insn, 35, SUF_W, 0, 0, 0, 0, 0, 0, 0},
- {"vphaddsw", ssse3_insn, 5, SUF_Z, 0x03, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"prefetcht2", twobytemem_insn, 1, SUF_Z, 0x03, 0x0F, 0x18, 0, CPU_P3, 0, 0},
- {"setnae", setcc_insn, 1, SUF_Z, 0x02, 0, 0, 0, CPU_386, 0, 0},
- {"xor", arith_insn, 22, SUF_Z, 0x30, 0x06, 0, 0, 0, 0, 0},
- {"pshufw", pshufw_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_MMX, CPU_P3, 0},
- {"div", div_insn, 8, SUF_Z, 0x06, 0, 0, 0, 0, 0, 0},
- {"xabort", tsx_xabort_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_TSX, 0, 0},
- {"vmovntdq", movnt_insn, 2, SUF_Z, 0x66, 0xE7, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"das", onebyte_insn, 1, SUF_Z, 0x2F, 0, 0, NOT_64, 0, 0, 0},
- {"notw", f6_insn, 4, SUF_W, 0x02, 0, 0, 0, 0, 0, 0},
- {"monitor", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xC8, 0, CPU_SSE3, 0, 0},
- {"pmuludq", mmxsse2_insn, 2, SUF_Z, 0xF4, 0, 0, 0, CPU_SSE2, 0, 0},
- {"psignd", ssse3_insn, 5, SUF_Z, 0x0A, 0, 0, 0, CPU_SSSE3, 0, 0},
- {"vpmaxuw", ssse3_insn, 5, SUF_Z, 0x3E, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"rexxy", NULL, X86_REX>>8, 0x46, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"vcmpnlt_uqps", ssecmp_128_insn, 3, SUF_Z, 0x15, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"decq", incdec_insn, 6, SUF_Q, 0x48, 0x01, 0, ONLY_64, 0, 0, 0},
- {"fsub", farith_insn, 7, SUF_Z, 0xE8, 0xE0, 0x04, 0, CPU_FPU, 0, 0},
- {"ficoms", fiarith_insn, 2, SUF_S, 0x02, 0xDA, 0, 0, CPU_FPU, 0, 0},
- {"btrw", bittest_insn, 6, SUF_W, 0xB3, 0x06, 0, 0, CPU_386, 0, 0},
- {"vfnmsub213sd", vfma_sd_insn, 2, SUF_Z, 0xAF, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"setnob", setcc_insn, 1, SUF_B, 0x01, 0, 0, 0, CPU_386, 0, 0},
- {"vpcomgeub", vpcom_insn, 1, SUF_Z, 0xEC, 0x03, 0, 0, CPU_XOP, 0, 0},
- {"cmovz", cmovcc_insn, 3, SUF_Z, 0x04, 0, 0, 0, CPU_686, 0, 0},
- {"vpackuswb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x67, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cli", onebyte_insn, 1, SUF_Z, 0xFA, 0, 0, 0, 0, 0, 0},
- {"pinsrd", pinsrd_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_SSE41, 0},
- {"vfmsubadd213pd", vfma_pd_insn, 2, SUF_Z, 0xA7, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"setnab", setcc_insn, 1, SUF_B, 0x06, 0, 0, 0, CPU_386, 0, 0},
- {"larw", larlsl_insn, 6, SUF_W, 0x02, 0, 0, 0, CPU_286, CPU_Prot, 0},
- {"pusha", onebyte_insn, 1, SUF_Z, 0x60, 0x00, 0, NOT_64, CPU_186, 0, 0},
- {"pfadd", now3d_insn, 1, SUF_Z, 0x9E, 0, 0, 0, CPU_3DNow, 0, 0},
- {"bzhil", vex_gpr_reg_rm_nds_0F_insn, 2, SUF_L, 0x00, 0x38, 0xF5, ONLY_AVX, CPU_BMI2, 0, 0},
- {"cmovpoq", cmovcc_insn, 3, SUF_Q, 0x0B, 0, 0, ONLY_64, CPU_686, 0, 0},
- {"blsfill", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x01, 0x02, 0, 0, CPU_386, CPU_TBM, 0},
- {"cdq", onebyte_insn, 1, SUF_Z, 0x99, 0x20, 0, 0, CPU_386, 0, 0},
- {"cvtss2siq", cvt_rx_xmm32_insn, 4, SUF_Q, 0xF3, 0x2D, 0, ONLY_64, CPU_SSE, 0, 0},
- {"cmovnb", cmovcc_insn, 3, SUF_Z, 0x03, 0, 0, 0, CPU_686, 0, 0},
- {"vcvttsd2siq", cvt_rx_xmm64_insn, 4, SUF_Q, 0xF2, 0x2C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"setae", setcc_insn, 1, SUF_Z, 0x03, 0, 0, 0, CPU_386, 0, 0},
- {"movntps", movnt_insn, 2, SUF_Z, 0x00, 0x2B, 0, 0, CPU_SSE, 0, 0},
- {"vcmpneq_oqpd", ssecmp_128_insn, 3, SUF_Z, 0x0C, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"lssq", lfgss_insn, 3, SUF_Q, 0xB2, 0, 0, ONLY_64, CPU_386, 0, 0},
- {"jpe", jcc_insn, 9, SUF_Z, 0x0A, 0, 0, 0, 0, 0, 0},
- {"fstcww", fstcw_insn, 1, SUF_W, 0, 0, 0, 0, CPU_FPU, 0, 0},
- {"fnsave", onebytemem_insn, 1, SUF_Z, 0x06, 0xDD, 0, 0, CPU_FPU, 0, 0},
- {"movntsd", movntsd_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SSE4a, 0, 0},
- {"pblendvb", sse4xmm0_insn, 2, SUF_Z, 0x10, 0, 0, 0, CPU_SSE41, 0, 0},
- {"enterw", enter_insn, 3, SUF_W, 0, 0, 0, 0, CPU_186, 0, 0},
- {"larl", larlsl_insn, 6, SUF_L, 0x02, 0, 0, 0, CPU_286, CPU_Prot, 0},
- {"blendvps", sse4xmm0_insn, 2, SUF_Z, 0x14, 0, 0, 0, CPU_SSE41, 0, 0},
- {"pdepl", vex_gpr_reg_nds_rm_0F_insn, 2, SUF_L, 0xF2, 0x38, 0xF5, ONLY_AVX, CPU_BMI2, 0, 0},
- {"jecxz", jcxz_insn, 2, SUF_Z, 0x20, 0, 0, 0, CPU_386, 0, 0},
- {"blcmsk", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x02, 0x01, 0, 0, CPU_386, CPU_TBM, 0},
- {"vpshad", amd_vpshift_insn, 2, SUF_Z, 0x9A, 0, 0, 0, CPU_XOP, 0, 0},
- {"smsw", sldtmsw_insn, 6, SUF_Z, 0x04, 0x01, 0, 0, CPU_286, 0, 0},
- {"vcvttps2dq", avx_xmm_xmm128_insn, 2, SUF_Z, 0xF3, 0x5B, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcvttss2si", cvt_rx_xmm32_insn, 4, SUF_Z, 0xF3, 0x2C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmovcw", cmovcc_insn, 3, SUF_W, 0x02, 0, 0, 0, CPU_686, 0, 0},
- {"vpsubsb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xE8, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pfsubr", now3d_insn, 1, SUF_Z, 0xAA, 0, 0, 0, CPU_3DNow, 0, 0},
- {"dpps", sse4imm_insn, 2, SUF_Z, 0x40, 0, 0, 0, CPU_SSE41, 0, 0},
- {"pmulhrwc", cyrixmmx_insn, 1, SUF_Z, 0x59, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
- {"fdecstp", twobyte_insn, 1, SUF_Z, 0xD9, 0xF6, 0, 0, CPU_FPU, 0, 0},
- {"fld1", twobyte_insn, 1, SUF_Z, 0xD9, 0xE8, 0, 0, CPU_FPU, 0, 0},
- {"lslq", larlsl_insn, 6, SUF_Q, 0x03, 0, 0, ONLY_64, CPU_286, CPU_Prot, 0},
- {"movsldup", xmm_xmm128_insn, 2, SUF_Z, 0xF3, 0x12, 0, 0, CPU_SSE3, 0, 0},
- {"vfnmadd213ps", vfma_ps_insn, 2, SUF_Z, 0xAC, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vorps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x56, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fxtract", twobyte_insn, 1, SUF_Z, 0xD9, 0xF4, 0, 0, CPU_FPU, 0, 0},
- {"xrstor", twobytemem_insn, 1, SUF_Z, 0x05, 0x0F, 0xAE, 0, CPU_386, CPU_XSAVE, 0},
- {"vfnmadd132pd", vfma_pd_insn, 2, SUF_Z, 0x9C, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"cmovsw", cmovcc_insn, 3, SUF_W, 0x08, 0, 0, 0, CPU_686, 0, 0},
- {"vpcomnew", vpcom_insn, 1, SUF_Z, 0xCD, 0x05, 0, 0, CPU_XOP, 0, 0},
- {"cmovc", cmovcc_insn, 3, SUF_Z, 0x02, 0, 0, 0, CPU_686, 0, 0},
- {"cmpxchg8bq", cmpxchg8b_insn, 1, SUF_Q, 0, 0, 0, 0, CPU_586, 0, 0},
- {"roundss", sse4m32imm_insn, 4, SUF_Z, 0x0A, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vsqrtss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x51, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"rcrb", shift_insn, 16, SUF_B, 0x03, 0, 0, 0, 0, 0, 0},
- {"vmptrld", vmxtwobytemem_insn, 1, SUF_Z, 0x06, 0, 0, 0, CPU_P4, 0, 0},
- {"popal", onebyte_insn, 1, SUF_Z, 0x61, 0x20, 0, NOT_64, CPU_386, 0, 0},
- {"sysretq", twobyte_insn, 1, SUF_Q, 0x0F, 0x07, 0, 0, CPU_686, CPU_AMD, CPU_Priv},
- {"setle", setcc_insn, 1, SUF_Z, 0x0E, 0, 0, 0, CPU_386, 0, 0},
- {"jnl", jcc_insn, 9, SUF_Z, 0x0D, 0, 0, 0, 0, 0, 0},
- {"ucomisd", xmm_xmm64_insn, 4, SUF_Z, 0x66, 0x2E, 0, 0, CPU_SSE2, 0, 0},
- {"sbbw", arith_insn, 22, SUF_W, 0x18, 0x03, 0, 0, 0, 0, 0},
- {"fbstp", fbldstp_insn, 1, SUF_Z, 0x06, 0, 0, 0, CPU_FPU, 0, 0},
- {"vpcomtrueub", vpcom_insn, 1, SUF_Z, 0xEC, 0x07, 0, 0, CPU_XOP, 0, 0},
- {"paddb", mmxsse2_insn, 2, SUF_Z, 0xFC, 0, 0, 0, CPU_MMX, 0, 0},
- {"cmovnll", cmovcc_insn, 3, SUF_L, 0x0D, 0, 0, 0, CPU_686, 0, 0},
- {"cvtss2sd", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5A, 0, 0, CPU_SSE2, 0, 0},
- {"vpcmpeqd", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x76, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmovnl", cmovcc_insn, 3, SUF_Z, 0x0D, 0, 0, 0, CPU_686, 0, 0},
- {"vpcomltb", vpcom_insn, 1, SUF_Z, 0xCC, 0x00, 0, 0, CPU_XOP, 0, 0},
- {"setngb", setcc_insn, 1, SUF_B, 0x0E, 0, 0, 0, CPU_386, 0, 0},
- {"vphaddudq", vphaddsub_insn, 1, SUF_Z, 0xDB, 0, 0, 0, CPU_XOP, 0, 0},
- {"vpmovsxbd", sse4m32_insn, 4, SUF_Z, 0x21, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"loopzq", loopq_insn, 4, SUF_Z, 0x01, 0x40, 0, ONLY_64, 0, 0, 0},
- {"cmovnle", cmovcc_insn, 3, SUF_Z, 0x0F, 0, 0, 0, CPU_686, 0, 0},
- {"vcmpgepd", ssecmp_128_insn, 3, SUF_Z, 0x0D, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"btcq", bittest_insn, 6, SUF_Q, 0xBB, 0x07, 0, ONLY_64, CPU_386, 0, 0},
- {"rcrl", shift_insn, 16, SUF_L, 0x03, 0, 0, 0, CPU_386, 0, 0},
- {"vmovntdqa", movntdqa_insn, 2, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmovcl", cmovcc_insn, 3, SUF_L, 0x02, 0, 0, 0, CPU_686, 0, 0},
- {"vcmpeq_ospd", ssecmp_128_insn, 3, SUF_Z, 0x10, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"f2xm1", twobyte_insn, 1, SUF_Z, 0xD9, 0xF0, 0, 0, CPU_FPU, 0, 0},
- {"vpmacssdd", vpma_insn, 1, SUF_Z, 0x8E, 0, 0, 0, CPU_XOP, 0, 0},
- {"leal", lea_insn, 3, SUF_L, 0, 0, 0, 0, CPU_386, 0, 0},
- {"vpcomeqd", vpcom_insn, 1, SUF_Z, 0xCE, 0x04, 0, 0, CPU_XOP, 0, 0},
- {"ljmpq", ljmpcall_insn, 7, SUF_Q, 0x05, 0xEA, 0, ONLY_64, 0, 0, 0},
- {"vpbroadcastd", vpbroadcastd_avx2_insn, 4, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"jnp", jcc_insn, 9, SUF_Z, 0x0B, 0, 0, 0, 0, 0, 0},
- {"vpcomgeuq", vpcom_insn, 1, SUF_Z, 0xEF, 0x03, 0, 0, CPU_XOP, 0, 0},
- {"prefetchnta", twobytemem_insn, 1, SUF_Z, 0x00, 0x0F, 0x18, 0, CPU_P3, 0, 0},
- {"bswapl", bswap_insn, 2, SUF_L, 0, 0, 0, 0, CPU_486, 0, 0},
- {"pmovsxbd", sse4m32_insn, 4, SUF_Z, 0x21, 0, 0, 0, CPU_SSE41, 0, 0},
- {"lzcnt", cnt_insn, 3, SUF_Z, 0xBD, 0, 0, 0, CPU_LZCNT, 0, 0},
- {"sha256msg1", intel_SHA256MSG1_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SHA, 0, 0},
- {"cmovnaw", cmovcc_insn, 3, SUF_W, 0x06, 0, 0, 0, CPU_686, 0, 0},
- {"ficom", fiarith_insn, 2, SUF_Z, 0x02, 0xDA, 0, 0, CPU_FPU, 0, 0},
- {"vmovntpd", movnt_insn, 2, SUF_Z, 0x66, 0x2B, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpngess", ssecmp_32_insn, 4, SUF_Z, 0x09, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fisubr", fiarith_insn, 2, SUF_Z, 0x05, 0xDA, 0, 0, CPU_FPU, 0, 0},
- {"vfmaddsub132ps", vfma_ps_insn, 2, SUF_Z, 0x96, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vaddsubps", xmm_xmm128_256_insn, 4, SUF_Z, 0xF2, 0xD0, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpbroadcastq", vpbroadcastq_avx2_insn, 4, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"cmovlq", cmovcc_insn, 3, SUF_Q, 0x0C, 0, 0, ONLY_64, CPU_686, 0, 0},
- {"inveptq", eptvpid_insn, 2, SUF_Q, 0x00, 0, 0, ONLY_64, CPU_EPTVPID, 0, 0},
- {"vmulps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x59, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pclmulqdq", pclmulqdq_insn, 2, SUF_Z, 0x3A, 0x44, 0, 0, CPU_AVX, 0, 0},
- {"vfmsub213ps", vfma_ps_insn, 2, SUF_Z, 0xAA, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"phsubd", ssse3_insn, 5, SUF_Z, 0x06, 0, 0, 0, CPU_SSSE3, 0, 0},
- {"fmulp", farithp_insn, 3, SUF_Z, 0xC8, 0, 0, 0, CPU_FPU, 0, 0},
- {"lcallw", ljmpcall_insn, 7, SUF_W, 0x03, 0x9A, 0, 0, 0, 0, 0},
- {"fisub", fiarith_insn, 2, SUF_Z, 0x04, 0xDA, 0, 0, CPU_FPU, 0, 0},
- {"vpackusdw", ssse3_insn, 5, SUF_Z, 0x2B, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"smintold", twobyte_insn, 1, SUF_Z, 0x0F, 0x7E, 0, 0, CPU_486, CPU_Cyrix, CPU_Obs},
- {"vpgatherqq", gather_64x_64y_insn, 2, SUF_Z, 0x91, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"vcmpneq_uspd", ssecmp_128_insn, 3, SUF_Z, 0x14, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"blsiq", vex_gpr_ndd_rm_0F38_regext_insn, 2, SUF_Q, 0x00, 0xF3, 0x03, ONLY_64|ONLY_AVX, CPU_BMI1, 0, 0},
- {"ltr", prot286_insn, 1, SUF_Z, 0x03, 0x00, 0, 0, CPU_286, CPU_Priv, CPU_Prot},
- {"fild", fildstp_insn, 4, SUF_Z, 0x00, 0x02, 0x05, 0, CPU_FPU, 0, 0},
- {"fldenvs", onebytemem_insn, 1, SUF_S, 0x04, 0xD9, 0, 0, CPU_FPU, 0, 0},
- {"vmovdqa", movau_insn, 6, SUF_Z, 0x66, 0x6F, 0x10, ONLY_AVX, CPU_AVX, 0, 0},
- {"shrxq", vex_gpr_reg_rm_nds_0F_insn, 2, SUF_Q, 0xF2, 0x38, 0xF7, ONLY_64|ONLY_AVX, CPU_BMI2, 0, 0},
- {"fcmove", fcmovcc_insn, 1, SUF_Z, 0xDA, 0xC8, 0, 0, CPU_686, CPU_FPU, 0},
- {"shrl", shift_insn, 16, SUF_L, 0x05, 0, 0, 0, CPU_386, 0, 0},
- {"rclq", shift_insn, 16, SUF_Q, 0x02, 0, 0, ONLY_64, 0, 0, 0},
- {"fnsavel", onebytemem_insn, 1, SUF_L, 0x06, 0xDD, 0, 0, CPU_FPU, 0, 0},
- {"vgatherdpd", gather_64x_64x_insn, 2, SUF_Z, 0x92, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"pushaw", onebyte_insn, 1, SUF_Z, 0x60, 0x10, 0, NOT_64, CPU_186, 0, 0}
- };
- static const unsigned short tab[] = {
- 555,1559,555,108,108,1495,0,108,0,0,2332,555,1208,0,108,1317,
- 1317,1732,0,0,1495,555,463,517,1636,1317,988,0,1317,0,555,555,
- 1929,108,1325,0,274,555,1633,1633,555,555,1325,555,2040,274,1325,1383,
- 555,1383,0,555,1317,988,1732,555,274,1636,1633,1602,1325,1383,0,0,
- 1325,1929,2332,1514,1383,108,0,0,1383,0,0,988,1317,274,1325,1633,
- 1325,517,1383,0,0,1633,108,274,1325,555,108,0,939,0,1636,274,
- 0,1995,274,1929,1383,0,0,1317,1929,555,0,0,0,555,0,0,
- 0,0,0,1514,1383,1633,1325,0,1633,0,1325,274,0,274,1317,0,
- 1602,1317,0,2260,555,1633,1633,0,555,1325,0,1732,1325,988,1325,0,
- 1383,1495,1636,555,901,274,1495,555,1208,1912,1602,1325,1633,0,1325,2403,
- 108,1383,1317,108,0,0,517,0,673,0,0,0,1495,1325,1208,0,
- 555,1317,1317,2332,1325,0,1514,555,555,555,1732,1602,0,0,274,0,
- 517,939,0,2242,1633,0,1633,555,0,1732,555,517,2040,1633,1633,0,
- 1602,0,1317,274,1383,0,1633,517,0,673,1995,1732,1912,1636,1602,1732,
- 673,0,1732,108,1325,555,555,1633,1317,0,1732,555,555,555,939,0,
- 517,1602,0,0,1929,555,901,0,108,108,1325,517,108,1325,1317,0,
- 1325,0,1208,0,0,0,108,274,555,0,1383,1325,555,1325,1633,0,
- 1383,1602,1383,0,0,517,274,0,591,0,1455,555,555,1317,1325,555,
- 555,1317,0,108,555,0,0,108,1633,555,1602,0,1732,555,0,108,
- 0,1636,1633,1633,517,555,555,0,274,1317,0,1912,1325,1208,1325,555,
- 1383,1633,108,1317,0,1325,1495,1929,1633,673,1633,463,1317,0,0,517,
- 0,1317,1929,0,455,1633,0,0,1602,1929,0,1929,2332,1317,555,238,
- 0,274,517,1325,1317,0,274,0,555,1317,555,555,0,1192,1325,463,
- 555,939,1633,0,0,0,1929,1325,1359,555,1317,1317,274,1732,555,0,
- 555,1929,0,1325,448,0,1636,555,988,1208,108,274,555,1325,1317,555,
- 1929,1929,1317,1325,108,902,555,0,555,988,1325,901,1325,1317,1732,1101,
- 1208,1633,1732,108,1317,1317,108,555,1929,555,1995,1317,1929,1383,517,0,
- 0,1633,1602,1912,1929,274,2464,0,555,1929,1317,0,0,555,1317,2180,
- 1327,0,517,555,1633,1732,1636,1602,517,1208,555,555,1383,1317,1633,0,
- 988,1192,0,0,1495,673,673,0,555,1495,1325,517,1732,1633,555,1325,
- 108,1929,1732,1325,988,555,1325,1208,1929,274,0,673,555,1732,1633,134,
- 108,1929,673,1208,555,1208,0,0,2464,0,1633,1929,0,913,673,0,
- 108,1317,1383,1633,0,555,0,0,1995,1317,0,2040,1317,1633,2332,108,
- 1633,1495,555,0,0,2040,926,673,1929,1325,1732,1929,1342,1633,1636,517,
- 0,0,517,182,1359,108,274,2040,108,108,0,0,555,988,517,1633,
- 1633,1325,1929,673,1633,1912,1288,555,1732,1325,0,1325,517,1325,1325,555,
- 0,0,2055,108,0,1732,517,274,901,1359,1929,1417,1636,926,555,0,
- 2040,0,1633,591,1929,1325,274,926,1325,517,0,765,108,0,2040,1383,
- 1514,901,1809,666,1732,1732,555,1732,555,0,0,1912,555,555,555,1929,
- 1317,0,517,673,555,274,673,2398,1208,555,1853,1633,1325,555,0,555,
- 0,1383,1325,1317,1929,108,2037,1383,108,1728,673,555,1835,591,1732,1995,
- 0,0,939,555,666,1325,1011,555,0,1929,108,1602,2332,0,1325,1633,
- 1732,1602,555,429,2040,1633,0,555,2040,1633,0,0,1325,1929,0,1912,
- 2040,1011,0,1732,517,1732,0,0,1633,1325,555,108,517,469,1636,108,
- 1011,0,0,0,1912,926,1929,988,1636,1633,274,182,1317,108,1325,0,
- 555,988,0,0,0,1771,1633,939,1732,1995,0,858,0,555,1633,0,
- 939,0,555,108,555,1633,1995,555,2510,0,516,939,1208,1912,858,1205,
- 0,785,0,988,1495,274,1011,902,0,0,184,0,1514,108,0,0,
- 1732,1633,469,1005,455,555,0,0,1455,428,1929,0,926,1633,1317,555,
- 939,0,1317,939,0,1327,1929,0,1668,1732,555,0,1929,1633,1929,555,
- 0,0,0,555,1607,1011,1325,1495,400,1011,1924,1383,901,469,1929,1835,
- 2040,1602,227,1342,1325,1192,0,1728,2040,1343,517,227,1929,1591,1912,429,
- 988,1559,1929,1325,0,1732,1317,0,902,0,555,0,1912,988,1633,1547,
- 200,1618,1636,926,0,1636,274,999,274,1809,1929,673,902,555,1624,591,
- 1636,591,0,517,555,1383,1633,0,1809,1679,0,673,1011,555,0,108,
- 1929,1495,1111,0,988,0,108,0,1995,2403,238,514,0,1995,1317,0,
- 1343,517,913,673,988,1614,1912,1325,673,816,1212,1325,1732,1929,1835,1602,
- 0,1636,108,455,1912,555,0,816,555,274,1633,0,1325,0,1929,1111,
- 634,1636,555,1636,1559,0,1636,0,1514,2040,657,1034,1771,1853,258,1633,
- 901,555,1208,1912,1959,816,440,0,1807,1924,1514,316,182,1732,1383,1618,
- 988,1591,1559,274,274,0,858,0,1383,1929,1602,1633,1514,1005,1617,0,
- 2060,517,1715,988,1542,1732,820,1633,1011,1383,1851,0,1650,1633,108,1912,
- 1995,916,1636,1995,1208,0,0,1325,274,1645,108,0,0,0,0,440,
- 1670,2060,676,1602,1942,1420,1317,939,729,274,0,0,1965,274,975,238,
- };
-
- const struct insnprefix_parse_data *ret;
- unsigned long rsl, val = phash_lookup(key, len, 0xbc1b868fUL);
- rsl = ((val>>23)^tab[val&0x3ff]);
- if (rsl >= 2070) return NULL;
- ret = &pd[rsl];
- if (strcmp(key, ret->name) != 0) return NULL;
- return ret;
-}
-
-
+/* ANSI-C code produced by genperf */
+struct insnprefix_parse_data;
+static const struct insnprefix_parse_data *
+insnprefix_gas_find(const char *key, size_t len)
+{
+ static const struct insnprefix_parse_data pd[2070] = {
+ {"vpunpckhqdq", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x6D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"psrad", pshift_insn, 4, SUF_Z, 0xE2, 0x72, 0x04, 0, CPU_MMX, 0, 0},
+ {"rsldt", cyrixsmm_insn, 1, SUF_Z, 0x7B, 0, 0, 0, CPU_486, CPU_Cyrix, CPU_SMM},
+ {"ldmxcsr", ldstmxcsr_insn, 1, SUF_Z, 0x02, 0, 0, 0, CPU_SSE, 0, 0},
+ {"idivl", div_insn, 8, SUF_L, 0x07, 0, 0, 0, CPU_386, 0, 0},
+ {"vhaddpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x7C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"aqword", NULL, X86_ADDRSIZE>>8, 0x40, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"vcmpeq_uqsd", ssecmp_64_insn, 4, SUF_Z, 0x08, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"subl", arith_insn, 22, SUF_L, 0x28, 0x05, 0, 0, CPU_386, 0, 0},
+ {"vcmple_oqsd", ssecmp_64_insn, 4, SUF_Z, 0x12, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"shrdw", shlrd_insn, 9, SUF_W, 0xAC, 0, 0, 0, CPU_386, 0, 0},
+ {"xchgb", xchg_insn, 16, SUF_B, 0, 0, 0, 0, 0, 0, 0},
+ {"dec", incdec_insn, 6, SUF_Z, 0x48, 0x01, 0, 0, 0, 0, 0},
+ {"finit", threebyte_insn, 1, SUF_Z, 0x9B, 0xDB, 0xE3, 0, CPU_FPU, 0, 0},
+ {"iret", onebyte_insn, 1, SUF_Z, 0xCF, 0, 0, 0, 0, 0, 0},
+ {"mul", f6_insn, 4, SUF_Z, 0x04, 0, 0, 0, 0, 0, 0},
+ {"vcvtdq2pd", avx_cvt_xmm64_insn, 3, SUF_Z, 0xF3, 0xE6, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"lzcntl", cnt_insn, 3, SUF_L, 0xBD, 0, 0, 0, CPU_LZCNT, 0, 0},
+ {"vucomiss", avx_xmm_xmm32_insn, 2, SUF_Z, 0x00, 0x2E, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vblendpd", sse4imm_256_insn, 4, SUF_Z, 0x0D, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"sscal", onebyte_insn, 1, SUF_Z, 0xAF, 0x20, 0, 0, CPU_386, 0, 0},
+ {"vcmpnlt_uqpd", ssecmp_128_insn, 3, SUF_Z, 0x15, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"setpob", setcc_insn, 1, SUF_B, 0x0B, 0, 0, 0, CPU_386, 0, 0},
+ {"andn", vex_gpr_reg_nds_rm_0F_insn, 2, SUF_Z, 0x00, 0x38, 0xF2, ONLY_AVX, CPU_BMI1, 0, 0},
+ {"scasq", onebyte_insn, 1, SUF_Z, 0xAF, 0x40, 0, ONLY_64, 0, 0, 0},
+ {"xorw", arith_insn, 22, SUF_W, 0x30, 0x06, 0, 0, 0, 0, 0},
+ {"vprotw", vprot_insn, 3, SUF_Z, 0x01, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vfmsub231sd", vfma_sd_insn, 2, SUF_Z, 0xBB, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vpmovmskbq", pmovmskb_insn, 6, SUF_Q, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"data32", NULL, X86_OPERSIZE>>8, 0x20, 0, 0, 0, 0, 0, 0, 0},
+ {"movntdq", movnt_insn, 2, SUF_Z, 0x66, 0xE7, 0, 0, CPU_SSE2, 0, 0},
+ {"vandps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x54, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fidivrs", fiarith_insn, 2, SUF_S, 0x07, 0xDA, 0, 0, CPU_FPU, 0, 0},
+ {"vcmpfalse_osss", ssecmp_32_insn, 4, SUF_Z, 0x1B, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpneqpd", ssecmp_128_insn, 3, SUF_Z, 0x04, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpneq_oqsd", ssecmp_64_insn, 4, SUF_Z, 0x0C, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcomnequb", vpcom_insn, 1, SUF_Z, 0xEC, 0x05, 0, 0, CPU_XOP, 0, 0},
+ {"vfnmadd213sd", vfma_sd_insn, 2, SUF_Z, 0xAD, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"cmplesd", ssecmp_64_insn, 4, SUF_Z, 0x02, 0xF2, 0, 0, CPU_SSE2, 0, 0},
+ {"vpshaq", amd_vpshift_insn, 2, SUF_Z, 0x9B, 0, 0, 0, CPU_XOP, 0, 0},
+ {"iretw", onebyte_insn, 1, SUF_Z, 0xCF, 0x10, 0, 0, 0, 0, 0},
+ {"vpcomltub", vpcom_insn, 1, SUF_Z, 0xEC, 0x00, 0, 0, CPU_XOP, 0, 0},
+ {"vmovupd", movau_insn, 6, SUF_Z, 0x66, 0x10, 0x01, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fabs", twobyte_insn, 1, SUF_Z, 0xD9, 0xE1, 0, 0, CPU_FPU, 0, 0},
+ {"lgdtq", twobytemem_insn, 1, SUF_Q, 0x02, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
+ {"vcmpgeps", ssecmp_128_insn, 3, SUF_Z, 0x0D, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"popfw", onebyte_insn, 1, SUF_Z, 0x9D, 0x10, 0x40, 0, 0, 0, 0},
+ {"vpmovsxwd", sse4m64_insn, 4, SUF_Z, 0x23, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpsravd", vpshiftv_vexw0_avx2_insn, 2, SUF_Z, 0x46, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"vpmadcswd", vpma_insn, 1, SUF_Z, 0xB6, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vpmovsxbq", sse4m16_insn, 4, SUF_Z, 0x22, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcomleud", vpcom_insn, 1, SUF_Z, 0xEE, 0x01, 0, 0, CPU_XOP, 0, 0},
+ {"phsubw", ssse3_insn, 5, SUF_Z, 0x05, 0, 0, 0, CPU_SSSE3, 0, 0},
+ {"call", call_insn, 30, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
+ {"cmovpe", cmovcc_insn, 3, SUF_Z, 0x0A, 0, 0, 0, CPU_686, 0, 0},
+ {"vpcomneqq", vpcom_insn, 1, SUF_Z, 0xCF, 0x05, 0, 0, CPU_XOP, 0, 0},
+ {"fcomp", fcom_insn, 6, SUF_Z, 0xD8, 0x03, 0, 0, CPU_FPU, 0, 0},
+ {"vdpps", sse4imm_256_insn, 4, SUF_Z, 0x40, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pmovsxdq", sse4m64_insn, 4, SUF_Z, 0x25, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"rcll", shift_insn, 16, SUF_L, 0x02, 0, 0, 0, CPU_386, 0, 0},
+ {"xorps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x57, 0, 0, CPU_SSE, 0, 0},
+ {"cmovaq", cmovcc_insn, 3, SUF_Q, 0x07, 0, 0, ONLY_64, CPU_686, 0, 0},
+ {"int3", onebyte_insn, 1, SUF_Z, 0xCC, 0, 0, 0, 0, 0, 0},
+ {"fsubrp", farithp_insn, 3, SUF_Z, 0xE8, 0, 0, 0, CPU_FPU, 0, 0},
+ {"pdepq", vex_gpr_reg_nds_rm_0F_insn, 2, SUF_Q, 0xF2, 0x38, 0xF5, ONLY_64|ONLY_AVX, CPU_BMI2, 0, 0},
+ {"vfmadd132pd", vfma_pd_insn, 2, SUF_Z, 0x98, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"bts", bittest_insn, 6, SUF_Z, 0xAB, 0x05, 0, 0, CPU_386, 0, 0},
+ {"jnge", jcc_insn, 9, SUF_Z, 0x0C, 0, 0, 0, 0, 0, 0},
+ {"movbe", movbe_insn, 6, SUF_Z, 0, 0, 0, 0, CPU_MOVBE, 0, 0},
+ {"rsdc", rsdc_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_486, CPU_Cyrix, CPU_SMM},
+ {"psubusb", mmxsse2_insn, 2, SUF_Z, 0xD8, 0, 0, 0, CPU_MMX, 0, 0},
+ {"pmaxsb", sse4_insn, 2, SUF_Z, 0x3C, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"ffree", ffree_insn, 1, SUF_Z, 0xDD, 0, 0, 0, CPU_FPU, 0, 0},
+ {"fsubrl", farith_insn, 7, SUF_L, 0xE0, 0xE8, 0x05, 0, CPU_FPU, 0, 0},
+ {"pminsb", sse4_insn, 2, SUF_Z, 0x38, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vcmpltsd", ssecmp_64_insn, 4, SUF_Z, 0x01, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcvtsd2ss", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5A, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"verr", prot286_insn, 1, SUF_Z, 0x04, 0x00, 0, 0, CPU_286, CPU_Prot, 0},
+ {"pcmpgtb", mmxsse2_insn, 2, SUF_Z, 0x64, 0, 0, 0, CPU_MMX, 0, 0},
+ {"lcall", ljmpcall_insn, 7, SUF_Z, 0x03, 0x9A, 0, 0, 0, 0, 0},
+ {"vcmpngt_uqss", ssecmp_32_insn, 4, SUF_Z, 0x1A, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pmulhuw", mmxsse2_insn, 2, SUF_Z, 0xE4, 0, 0, 0, CPU_MMX, CPU_P3, 0},
+ {"vcmpeq_ossd", ssecmp_64_insn, 4, SUF_Z, 0x10, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vmaxsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5F, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpclmulhqlqdq", pclmulqdq_fixed_insn, 2, SUF_Z, 0x01, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpunord_sps", ssecmp_128_insn, 3, SUF_Z, 0x13, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"data64", NULL, X86_OPERSIZE>>8, 0x40, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"fimul", fiarith_insn, 2, SUF_Z, 0x01, 0xDA, 0, 0, CPU_FPU, 0, 0},
+ {"tzcntq", cnt_insn, 3, SUF_Q, 0xBC, 0, 0, ONLY_64, CPU_BMI1, 0, 0},
+ {"cmovgel", cmovcc_insn, 3, SUF_L, 0x0D, 0, 0, 0, CPU_686, 0, 0},
+ {"cmovbw", cmovcc_insn, 3, SUF_W, 0x02, 0, 0, 0, CPU_686, 0, 0},
+ {"vcmpordss", ssecmp_32_insn, 4, SUF_Z, 0x07, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"blendpd", sse4imm_insn, 2, SUF_Z, 0x0D, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"seta", setcc_insn, 1, SUF_Z, 0x07, 0, 0, 0, CPU_386, 0, 0},
+ {"vfnmaddss", fma_128_m32_insn, 3, SUF_Z, 0x7A, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"blsfilll", xop_gpr_reg_rm_09_insn, 2, SUF_L, 0x01, 0x02, 0, 0, CPU_386, CPU_TBM, 0},
+ {"incw", incdec_insn, 6, SUF_W, 0x40, 0x00, 0, 0, 0, 0, 0},
+ {"blsmsk", vex_gpr_ndd_rm_0F38_regext_insn, 2, SUF_Z, 0x00, 0xF3, 0x02, ONLY_AVX, CPU_BMI1, 0, 0},
+ {"testq", test_insn, 20, SUF_Q, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"pushfq", onebyte_insn, 1, SUF_Z, 0x9C, 0x40, 0x40, ONLY_64, 0, 0, 0},
+ {"jbe", jcc_insn, 9, SUF_Z, 0x06, 0, 0, 0, 0, 0, 0},
+ {"vpcomuw", vpcom_imm_insn, 1, SUF_Z, 0xED, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vcomisd", avx_xmm_xmm64_insn, 2, SUF_Z, 0x66, 0x2F, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpneq_osps", ssecmp_128_insn, 3, SUF_Z, 0x1C, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpneq_usps", ssecmp_128_insn, 3, SUF_Z, 0x14, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pswapd", now3d_insn, 1, SUF_Z, 0xBB, 0, 0, 0, CPU_3DNow, CPU_Athlon, 0},
+ {"blciq", xop_gpr_reg_rm_09_insn, 2, SUF_Q, 0x02, 0x06, 0, ONLY_64, CPU_TBM, 0, 0},
+ {"skinit", skinit_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_SVM, 0, 0},
+ {"sqrtsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x51, 0, 0, CPU_SSE2, 0, 0},
+ {"frndint", twobyte_insn, 1, SUF_Z, 0xD9, 0xFC, 0, 0, CPU_FPU, 0, 0},
+ {"vpxor", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xEF, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"movmskpdl", movmsk_insn, 4, SUF_L, 0x66, 0, 0, 0, CPU_SSE2, 0, 0},
+ {"cmpltss", ssecmp_32_insn, 4, SUF_Z, 0x01, 0xF3, 0, 0, CPU_SSE, 0, 0},
+ {"loop", loop_insn, 8, SUF_Z, 0x02, 0, 0, 0, 0, 0, 0},
+ {"vphsubwd", vphaddsub_insn, 1, SUF_Z, 0xE2, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vpcomltuq", vpcom_insn, 1, SUF_Z, 0xEF, 0x00, 0, 0, CPU_XOP, 0, 0},
+ {"psubq", mmxsse2_insn, 2, SUF_Z, 0xFB, 0, 0, 0, CPU_MMX, 0, 0},
+ {"cmovcq", cmovcc_insn, 3, SUF_Q, 0x02, 0, 0, ONLY_64, CPU_686, 0, 0},
+ {"vpsrlw", vpshift_insn, 8, SUF_Z, 0xD1, 0x71, 0x02, ONLY_AVX, CPU_AVX, 0, 0},
+ {"setleb", setcc_insn, 1, SUF_B, 0x0E, 0, 0, 0, CPU_386, 0, 0},
+ {"vcmpnltps", ssecmp_128_insn, 3, SUF_Z, 0x05, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cvtps2pi", cvt_mm_xmm64_insn, 2, SUF_Z, 0x2D, 0, 0, 0, CPU_SSE, 0, 0},
+ {"lgdtw", twobytemem_insn, 1, SUF_W, 0x02, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
+ {"vpcomq", vpcom_imm_insn, 1, SUF_Z, 0xCF, 0, 0, 0, CPU_XOP, 0, 0},
+ {"jna", jcc_insn, 9, SUF_Z, 0x06, 0, 0, 0, 0, 0, 0},
+ {"vpsubusb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xD8, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpgt_oqss", ssecmp_32_insn, 4, SUF_Z, 0x1E, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfmsub231ps", vfma_ps_insn, 2, SUF_Z, 0xBA, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vfnmsubpd", fma_128_256_insn, 4, SUF_Z, 0x7D, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"vmsave", svm_rax_insn, 2, SUF_Z, 0xDB, 0, 0, 0, CPU_SVM, 0, 0},
+ {"aesdec", aes_insn, 2, SUF_Z, 0x38, 0xDE, 0, 0, CPU_AVX, 0, 0},
+ {"vcvtpd2ps", avx_cvt_xmm128_insn, 2, SUF_Z, 0x66, 0x5A, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vphaddwq", vphaddsub_insn, 1, SUF_Z, 0xC7, 0, 0, 0, CPU_XOP, 0, 0},
+ {"cmovpo", cmovcc_insn, 3, SUF_Z, 0x0B, 0, 0, 0, CPU_686, 0, 0},
+ {"pmulld", sse4_insn, 2, SUF_Z, 0x40, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"cbtw", onebyte_insn, 1, SUF_Z, 0x98, 0x10, 0, 0, 0, 0, 0},
+ {"loadall286", twobyte_insn, 1, SUF_Z, 0x0F, 0x05, 0, 0, CPU_286, CPU_Undoc, 0},
+ {"rexy", NULL, X86_REX>>8, 0x42, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"lgsw", lfgss_insn, 3, SUF_W, 0xB5, 0, 0, 0, CPU_386, 0, 0},
+ {"vcmpngeps", ssecmp_128_insn, 3, SUF_Z, 0x09, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"btc", bittest_insn, 6, SUF_Z, 0xBB, 0x07, 0, 0, CPU_386, 0, 0},
+ {"vcmpeq_uqss", ssecmp_32_insn, 4, SUF_Z, 0x08, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"invept", eptvpid_insn, 2, SUF_Z, 0x00, 0, 0, 0, CPU_386, CPU_EPTVPID, 0},
+ {"vfmaddsub231pd", vfma_pd_insn, 2, SUF_Z, 0xB6, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"strl", str_insn, 4, SUF_L, 0, 0, 0, 0, CPU_386, CPU_Prot, 0},
+ {"shlxl", vex_gpr_reg_rm_nds_0F_insn, 2, SUF_L, 0x66, 0x38, 0xF7, ONLY_AVX, CPU_BMI2, 0, 0},
+ {"loopq", loopq_insn, 4, SUF_Z, 0x02, 0x40, 0, ONLY_64, 0, 0, 0},
+ {"pmvzb", cyrixmmx_insn, 1, SUF_Z, 0x58, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
+ {"vshufpd", xmm_xmm128_imm_256_insn, 3, SUF_Z, 0x66, 0xC6, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpsubq", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xFB, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fnstsw", fnstsw_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_FPU, 0, 0},
+ {"incl", incdec_insn, 6, SUF_L, 0x40, 0x00, 0, 0, CPU_386, 0, 0},
+ {"fnop", twobyte_insn, 1, SUF_Z, 0xD9, 0xD0, 0, 0, CPU_FPU, 0, 0},
+ {"punpckhdq", mmxsse2_insn, 2, SUF_Z, 0x6A, 0, 0, 0, CPU_MMX, 0, 0},
+ {"vphadduwd", vphaddsub_insn, 1, SUF_Z, 0xD6, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vmovaps", movau_insn, 6, SUF_Z, 0x00, 0x28, 0x01, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpsllq", vpshift_insn, 8, SUF_Z, 0xF3, 0x73, 0x06, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pfmul", now3d_insn, 1, SUF_Z, 0xB4, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"vcmpfalsess", ssecmp_32_insn, 4, SUF_Z, 0x0B, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmptrue_ussd", ssecmp_64_insn, 4, SUF_Z, 0x1F, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmple_oqps", ssecmp_128_insn, 3, SUF_Z, 0x12, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpinsrwq", pinsrw_insn, 9, SUF_Q, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpminub", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xDA, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"blcfillq", xop_gpr_reg_rm_09_insn, 2, SUF_Q, 0x01, 0x01, 0, ONLY_64, CPU_TBM, 0, 0},
+ {"incq", incdec_insn, 6, SUF_Q, 0x40, 0x00, 0, ONLY_64, 0, 0, 0},
+ {"pdep", vex_gpr_reg_nds_rm_0F_insn, 2, SUF_Z, 0xF2, 0x38, 0xF5, ONLY_AVX, CPU_BMI2, 0, 0},
+ {"cmovnc", cmovcc_insn, 3, SUF_Z, 0x03, 0, 0, 0, CPU_686, 0, 0},
+ {"movntil", movnti_insn, 2, SUF_L, 0, 0, 0, 0, CPU_P4, 0, 0},
+ {"cmoveq", cmovcc_insn, 3, SUF_Q, 0x04, 0, 0, ONLY_64, CPU_686, 0, 0},
+ {"pfrcpit2", now3d_insn, 1, SUF_Z, 0xB6, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"cmovaew", cmovcc_insn, 3, SUF_W, 0x03, 0, 0, 0, CPU_686, 0, 0},
+ {"vinserti128", vinsertif128_insn, 1, SUF_Z, 0x38, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"movmskpdq", movmsk_insn, 4, SUF_Q, 0x66, 0, 0, ONLY_64, CPU_SSE2, 0, 0},
+ {"vpmaxud", ssse3_insn, 5, SUF_Z, 0x3F, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"xaddw", cmpxchgxadd_insn, 4, SUF_W, 0xC0, 0, 0, 0, CPU_486, 0, 0},
+ {"psubb", mmxsse2_insn, 2, SUF_Z, 0xF8, 0, 0, 0, CPU_MMX, 0, 0},
+ {"vminpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x5D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"mulpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x59, 0, 0, CPU_SSE2, 0, 0},
+ {"fisttpl", fildstp_insn, 4, SUF_L, 0x01, 0x00, 0x01, 0, CPU_SSE3, 0, 0},
+ {"vcmpordps", ssecmp_128_insn, 3, SUF_Z, 0x07, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"lgs", lfgss_insn, 3, SUF_Z, 0xB5, 0, 0, 0, CPU_386, 0, 0},
+ {"lzcntq", cnt_insn, 3, SUF_Q, 0xBD, 0, 0, ONLY_64, CPU_LZCNT, 0, 0},
+ {"frstor", onebytemem_insn, 1, SUF_Z, 0x04, 0xDD, 0, 0, CPU_FPU, 0, 0},
+ {"vcmpge_oqpd", ssecmp_128_insn, 3, SUF_Z, 0x1D, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"setnbb", setcc_insn, 1, SUF_B, 0x03, 0, 0, 0, CPU_386, 0, 0},
+ {"fcmovnbe", fcmovcc_insn, 1, SUF_Z, 0xDB, 0xD0, 0, 0, CPU_686, CPU_FPU, 0},
+ {"pminub", mmxsse2_insn, 2, SUF_Z, 0xDA, 0, 0, 0, CPU_MMX, CPU_P3, 0},
+ {"vcvttpd2dqx", avx_cvt_xmm128_x_insn, 1, SUF_Z, 0x66, 0xE6, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfmaddsub231ps", vfma_ps_insn, 2, SUF_Z, 0xB6, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"data16", NULL, X86_OPERSIZE>>8, 0x10, 0, 0, 0, 0, 0, 0, 0},
+ {"lmsw", prot286_insn, 1, SUF_Z, 0x06, 0x01, 0, 0, CPU_286, CPU_Priv, 0},
+ {"cmovnsq", cmovcc_insn, 3, SUF_Q, 0x09, 0, 0, ONLY_64, CPU_686, 0, 0},
+ {"ficompl", fiarith_insn, 2, SUF_L, 0x03, 0xDA, 0, 0, CPU_FPU, 0, 0},
+ {"sets", setcc_insn, 1, SUF_Z, 0x08, 0, 0, 0, CPU_386, 0, 0},
+ {"vpmuldq", ssse3_insn, 5, SUF_Z, 0x28, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"mulss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x59, 0, 0, CPU_SSE, 0, 0},
+ {"minpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x5D, 0, 0, CPU_SSE2, 0, 0},
+ {"pshufhw", xmm_xmm128_imm_insn, 1, SUF_Z, 0xF3, 0x70, 0, 0, CPU_SSE2, 0, 0},
+ {"dword", NULL, X86_OPERSIZE>>8, 0x20, 0, 0, 0, 0, 0, 0, 0},
+ {"cmovnael", cmovcc_insn, 3, SUF_L, 0x02, 0, 0, 0, CPU_686, 0, 0},
+ {"xtest", tsx_0x0F_0x01_insn, 1, SUF_Z, 0xD6, 0, 0, 0, CPU_TSX, 0, 0},
+ {"sar", shift_insn, 16, SUF_Z, 0x07, 0, 0, 0, 0, 0, 0},
+ {"cmovngel", cmovcc_insn, 3, SUF_L, 0x0C, 0, 0, 0, CPU_686, 0, 0},
+ {"cmovnlew", cmovcc_insn, 3, SUF_W, 0x0F, 0, 0, 0, CPU_686, 0, 0},
+ {"sidt", twobytemem_insn, 1, SUF_Z, 0x01, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
+ {"fxrstor", twobytemem_insn, 1, SUF_Z, 0x01, 0x0F, 0xAE, 0, CPU_686, CPU_FPU, 0},
+ {"adcxl", vex_gpr_ndd_rm_0F38_insn, 2, SUF_L, 0x66, 0xF6, 0, 0, CPU_ADX, 0, 0},
+ {"mull", f6_insn, 4, SUF_L, 0x04, 0, 0, 0, CPU_386, 0, 0},
+ {"wbinvd", twobyte_insn, 1, SUF_Z, 0x0F, 0x09, 0, 0, CPU_486, CPU_Priv, 0},
+ {"pmaxuw", sse4_insn, 2, SUF_Z, 0x3E, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"setnp", setcc_insn, 1, SUF_Z, 0x0B, 0, 0, 0, CPU_386, 0, 0},
+ {"decb", incdec_insn, 6, SUF_B, 0x48, 0x01, 0, 0, 0, 0, 0},
+ {"fnsaves", onebytemem_insn, 1, SUF_S, 0x06, 0xDD, 0, 0, CPU_FPU, 0, 0},
+ {"cmovbe", cmovcc_insn, 3, SUF_Z, 0x06, 0, 0, 0, CPU_686, 0, 0},
+ {"fsaves", twobytemem_insn, 1, SUF_S, 0x06, 0x9B, 0xDD, 0, CPU_FPU, 0, 0},
+ {"jz", jcc_insn, 9, SUF_Z, 0x04, 0, 0, 0, 0, 0, 0},
+ {"cmovngeq", cmovcc_insn, 3, SUF_Q, 0x0C, 0, 0, ONLY_64, CPU_686, 0, 0},
+ {"neg", f6_insn, 4, SUF_Z, 0x03, 0, 0, 0, 0, 0, 0},
+ {"jmp", jmp_insn, 31, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
+ {"fdivrp", farithp_insn, 3, SUF_Z, 0xF8, 0, 0, 0, CPU_FPU, 0, 0},
+ {"cmovnsl", cmovcc_insn, 3, SUF_L, 0x09, 0, 0, 0, CPU_686, 0, 0},
+ {"lesl", ldes_insn, 2, SUF_L, 0xC4, 0, 0, NOT_64, CPU_386, 0, 0},
+ {"vpsllvq", vpshiftv_vexw1_avx2_insn, 2, SUF_Z, 0x47, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"movslq", movsxd_insn, 1, SUF_L, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"vmovss", movss_insn, 4, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmovbew", cmovcc_insn, 3, SUF_W, 0x06, 0, 0, 0, CPU_686, 0, 0},
+ {"vpermpd", vperm_imm_avx2_insn, 1, SUF_Z, 0x01, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"vcmpfalsesd", ssecmp_64_insn, 4, SUF_Z, 0x0B, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pcmpeqd", mmxsse2_insn, 2, SUF_Z, 0x76, 0, 0, 0, CPU_MMX, 0, 0},
+ {"cmovne", cmovcc_insn, 3, SUF_Z, 0x05, 0, 0, 0, CPU_686, 0, 0},
+ {"vpcomeqw", vpcom_insn, 1, SUF_Z, 0xCD, 0x04, 0, 0, CPU_XOP, 0, 0},
+ {"movsb", onebyte_insn, 1, SUF_Z, 0xA4, 0x00, 0, 0, 0, 0, 0},
+ {"loopnzl", loopl_insn, 4, SUF_Z, 0x00, 0x20, 0, 0, 0, 0, 0},
+ {"pmaxsd", sse4_insn, 2, SUF_Z, 0x3D, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"fld", fld_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_FPU, 0, 0},
+ {"fstpt", fldstpt_insn, 1, SUF_Z, 0x07, 0, 0, 0, CPU_FPU, 0, 0},
+ {"vcmplepd", ssecmp_128_insn, 3, SUF_Z, 0x02, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"lidtq", twobytemem_insn, 1, SUF_Q, 0x03, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
+ {"blsmskl", vex_gpr_ndd_rm_0F38_regext_insn, 2, SUF_L, 0x00, 0xF3, 0x02, ONLY_AVX, CPU_BMI1, 0, 0},
+ {"vcmpge_oqsd", ssecmp_64_insn, 4, SUF_Z, 0x1D, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"unpckhps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x15, 0, 0, CPU_SSE, 0, 0},
+ {"vmreadq", vmxmemrd_insn, 2, SUF_Q, 0, 0, 0, ONLY_64, CPU_P4, 0, 0},
+ {"btsw", bittest_insn, 6, SUF_W, 0xAB, 0x05, 0, 0, CPU_386, 0, 0},
+ {"vpinsrwl", pinsrw_insn, 9, SUF_L, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcmpgtw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x65, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pextq", vex_gpr_reg_nds_rm_0F_insn, 2, SUF_Q, 0xF3, 0x38, 0xF5, ONLY_64|ONLY_AVX, CPU_BMI2, 0, 0},
+ {"vcmpnge_uqsd", ssecmp_64_insn, 4, SUF_Z, 0x19, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pavgw", mmxsse2_insn, 2, SUF_Z, 0xE3, 0, 0, 0, CPU_MMX, CPU_P3, 0},
+ {"vpunpckhbw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x68, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vmlaunch", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xC2, 0, CPU_P4, 0, 0},
+ {"loopnew", loopw_insn, 4, SUF_Z, 0x00, 0x10, 0, NOT_64, 0, 0, 0},
+ {"vmaxps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x5F, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"rdshr", rdwrshr_insn, 1, SUF_Z, 0x00, 0, 0, 0, CPU_686, CPU_Cyrix, CPU_SMM},
+ {"setge", setcc_insn, 1, SUF_Z, 0x0D, 0, 0, 0, CPU_386, 0, 0},
+ {"pcmpgtw", mmxsse2_insn, 2, SUF_Z, 0x65, 0, 0, 0, CPU_MMX, 0, 0},
+ {"vsqrtpd", avx_xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x51, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fstsw", fstsw_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_FPU, 0, 0},
+ {"cmovzw", cmovcc_insn, 3, SUF_W, 0x04, 0, 0, 0, CPU_686, 0, 0},
+ {"frstors", onebytemem_insn, 1, SUF_S, 0x04, 0xDD, 0, 0, CPU_FPU, 0, 0},
+ {"smsww", sldtmsw_insn, 6, SUF_W, 0x04, 0x01, 0, 0, CPU_286, 0, 0},
+ {"vpsubusw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xD9, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fisubrs", fiarith_insn, 2, SUF_S, 0x05, 0xDA, 0, 0, CPU_FPU, 0, 0},
+ {"vmovshdup", avx_xmm_xmm128_insn, 2, SUF_Z, 0xF3, 0x16, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"xacquire", NULL, X86_ACQREL>>8, 0xF2, 0, 0, 0, 0, 0, 0, 0},
+ {"vcmple_oqss", ssecmp_32_insn, 4, SUF_Z, 0x12, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpgt_oqpd", ssecmp_128_insn, 3, SUF_Z, 0x1E, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pfsub", now3d_insn, 1, SUF_Z, 0x9A, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"vpgatherdd", gather_32x_32y_insn, 2, SUF_Z, 0x90, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"vcmpngtss", ssecmp_32_insn, 4, SUF_Z, 0x0A, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pmovzxbw", sse4m64_insn, 4, SUF_Z, 0x30, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"cmovgl", cmovcc_insn, 3, SUF_L, 0x0F, 0, 0, 0, CPU_686, 0, 0},
+ {"movaps", movau_insn, 6, SUF_Z, 0x00, 0x28, 0x01, 0, CPU_SSE, 0, 0},
+ {"rdfsbase", fs_gs_base_insn, 2, SUF_Z, 0x00, 0, 0, ONLY_64, CPU_FSGSBASE, 0, 0},
+ {"wrmsr", twobyte_insn, 1, SUF_Z, 0x0F, 0x30, 0, 0, CPU_586, CPU_Priv, 0},
+ {"movmskpsl", movmsk_insn, 4, SUF_L, 0, 0, 0, 0, CPU_386, CPU_SSE, 0},
+ {"vcmpngtpd", ssecmp_128_insn, 3, SUF_Z, 0x0A, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"decw", incdec_insn, 6, SUF_W, 0x48, 0x01, 0, 0, 0, 0, 0},
+ {"vmclear", vmxthreebytemem_insn, 1, SUF_Z, 0x66, 0, 0, 0, CPU_P4, 0, 0},
+ {"vfmsub213pd", vfma_pd_insn, 2, SUF_Z, 0xAA, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"roundps", sse4imm_insn, 2, SUF_Z, 0x08, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"xsaveopt", twobytemem_insn, 1, SUF_Z, 0x06, 0x0F, 0xAE, 0, CPU_XSAVEOPT, 0, 0},
+ {"blsmskq", vex_gpr_ndd_rm_0F38_regext_insn, 2, SUF_Q, 0x00, 0xF3, 0x02, ONLY_64|ONLY_AVX, CPU_BMI1, 0, 0},
+ {"fnstcww", fldnstcw_insn, 1, SUF_W, 0x07, 0, 0, 0, CPU_FPU, 0, 0},
+ {"unpcklpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x14, 0, 0, CPU_SSE2, 0, 0},
+ {"pfrcp", now3d_insn, 1, SUF_Z, 0x96, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"phaddw", ssse3_insn, 5, SUF_Z, 0x01, 0, 0, 0, CPU_SSSE3, 0, 0},
+ {"adoxq", vex_gpr_ndd_rm_0F38_insn, 2, SUF_Q, 0xF3, 0xF6, 0, ONLY_64, CPU_ADX, 0, 0},
+ {"vcmpnltsd", ssecmp_64_insn, 4, SUF_Z, 0x05, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcomleub", vpcom_insn, 1, SUF_Z, 0xEC, 0x01, 0, 0, CPU_XOP, 0, 0},
+ {"vpsrlq", vpshift_insn, 8, SUF_Z, 0xD3, 0x73, 0x02, ONLY_AVX, CPU_AVX, 0, 0},
+ {"psllq", pshift_insn, 4, SUF_Z, 0xF3, 0x73, 0x06, 0, CPU_MMX, 0, 0},
+ {"enterl", enter_insn, 3, SUF_L, 0, 0, 0, NOT_64, CPU_186, 0, 0},
+ {"wrshr", rdwrshr_insn, 1, SUF_Z, 0x01, 0, 0, 0, CPU_686, CPU_Cyrix, CPU_SMM},
+ {"blcsq", xop_gpr_reg_rm_09_insn, 2, SUF_Q, 0x01, 0x03, 0, ONLY_64, CPU_TBM, 0, 0},
+ {"vpmadcsswd", vpma_insn, 1, SUF_Z, 0xA6, 0, 0, 0, CPU_XOP, 0, 0},
+ {"fdivl", farith_insn, 7, SUF_L, 0xF8, 0xF0, 0x06, 0, CPU_FPU, 0, 0},
+ {"salb", shift_insn, 16, SUF_B, 0x04, 0, 0, 0, 0, 0, 0},
+ {"vpcomequq", vpcom_insn, 1, SUF_Z, 0xEF, 0x04, 0, 0, CPU_XOP, 0, 0},
+ {"cmovpw", cmovcc_insn, 3, SUF_W, 0x0A, 0, 0, 0, CPU_686, 0, 0},
+ {"cmovgw", cmovcc_insn, 3, SUF_W, 0x0F, 0, 0, 0, CPU_686, 0, 0},
+ {"vpmovmskbl", pmovmskb_insn, 6, SUF_L, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"iretl", onebyte_insn, 1, SUF_Z, 0xCF, 0x20, 0, 0, CPU_386, 0, 0},
+ {"fdiv", farith_insn, 7, SUF_Z, 0xF8, 0xF0, 0x06, 0, CPU_FPU, 0, 0},
+ {"vpermps", vperm_var_avx2_insn, 1, SUF_Z, 0x16, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"vphaddwd", vphaddsub_insn, 1, SUF_Z, 0xC6, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vcmpnlt_uqss", ssecmp_32_insn, 4, SUF_Z, 0x15, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcomleuw", vpcom_insn, 1, SUF_Z, 0xED, 0x01, 0, 0, CPU_XOP, 0, 0},
+ {"crc32l", crc32_insn, 5, SUF_L, 0, 0, 0, 0, CPU_386, CPU_SSE42, 0},
+ {"cmpsq", onebyte_insn, 1, SUF_Z, 0xA7, 0x40, 0, ONLY_64, 0, 0, 0},
+ {"cmovpel", cmovcc_insn, 3, SUF_L, 0x0A, 0, 0, 0, CPU_686, 0, 0},
+ {"cmovnlel", cmovcc_insn, 3, SUF_L, 0x0F, 0, 0, 0, CPU_686, 0, 0},
+ {"sysretl", twobyte_insn, 1, SUF_L, 0x0F, 0x07, 0, 0, CPU_686, CPU_AMD, CPU_Priv},
+ {"setpo", setcc_insn, 1, SUF_Z, 0x0B, 0, 0, 0, CPU_386, 0, 0},
+ {"vpcomgtq", vpcom_insn, 1, SUF_Z, 0xCF, 0x02, 0, 0, CPU_XOP, 0, 0},
+ {"phsubsw", ssse3_insn, 5, SUF_Z, 0x07, 0, 0, 0, CPU_SSSE3, 0, 0},
+ {"pinsrw", pinsrw_insn, 9, SUF_Z, 0, 0, 0, 0, CPU_MMX, CPU_P3, 0},
+ {"vfmadd231ps", vfma_ps_insn, 2, SUF_Z, 0xB8, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"mulps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x59, 0, 0, CPU_SSE, 0, 0},
+ {"setz", setcc_insn, 1, SUF_Z, 0x04, 0, 0, 0, CPU_386, 0, 0},
+ {"cmpltsd", ssecmp_64_insn, 4, SUF_Z, 0x01, 0xF2, 0, 0, CPU_SSE2, 0, 0},
+ {"fstl", fst_insn, 3, SUF_L, 0, 0, 0, 0, CPU_FPU, 0, 0},
+ {"vcmptrueps", ssecmp_128_insn, 3, SUF_Z, 0x0F, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmovow", cmovcc_insn, 3, SUF_W, 0x00, 0, 0, 0, CPU_686, 0, 0},
+ {"extrq", extrq_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_SSE4a, 0, 0},
+ {"verrw", prot286_insn, 1, SUF_W, 0x04, 0x00, 0, 0, CPU_286, CPU_Prot, 0},
+ {"setno", setcc_insn, 1, SUF_Z, 0x01, 0, 0, 0, CPU_386, 0, 0},
+ {"lssw", lfgss_insn, 3, SUF_W, 0xB2, 0, 0, 0, CPU_386, 0, 0},
+ {"cmpunordps", ssecmp_128_insn, 3, SUF_Z, 0x03, 0, 0, 0, CPU_SSE, 0, 0},
+ {"shlxq", vex_gpr_reg_rm_nds_0F_insn, 2, SUF_Q, 0x66, 0x38, 0xF7, ONLY_64|ONLY_AVX, CPU_BMI2, 0, 0},
+ {"emms", twobyte_insn, 1, SUF_Z, 0x0F, 0x77, 0, 0, CPU_MMX, 0, 0},
+ {"sarq", shift_insn, 16, SUF_Q, 0x07, 0, 0, ONLY_64, 0, 0, 0},
+ {"pminsd", sse4_insn, 2, SUF_Z, 0x39, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"rorw", shift_insn, 16, SUF_W, 0x01, 0, 0, 0, 0, 0, 0},
+ {"pxor", mmxsse2_insn, 2, SUF_Z, 0xEF, 0, 0, 0, CPU_MMX, 0, 0},
+ {"pfnacc", now3d_insn, 1, SUF_Z, 0x8A, 0, 0, 0, CPU_3DNow, CPU_Athlon, 0},
+ {"pf2iw", now3d_insn, 1, SUF_Z, 0x1C, 0, 0, 0, CPU_3DNow, CPU_Athlon, 0},
+ {"invpcid", invpcid_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_INVPCID, CPU_Priv},
+ {"fcompl", fcom_insn, 6, SUF_L, 0xD8, 0x03, 0, 0, CPU_FPU, 0, 0},
+ {"larq", larlsl_insn, 6, SUF_Q, 0x02, 0, 0, ONLY_64, CPU_286, CPU_Prot, 0},
+ {"str", str_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_286, CPU_Prot, 0},
+ {"movmskpsq", movmsk_insn, 4, SUF_Q, 0, 0, 0, ONLY_64, CPU_SSE, 0, 0},
+ {"lds", ldes_insn, 2, SUF_Z, 0xC5, 0, 0, NOT_64, 0, 0, 0},
+ {"vpinsrb", pinsrb_insn, 4, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pushf", onebyte_insn, 1, SUF_Z, 0x9C, 0x00, 0x40, 0, 0, 0, 0},
+ {"vcvtsd2sil", cvt_rx_xmm64_insn, 4, SUF_L, 0xF2, 0x2D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"jge", jcc_insn, 9, SUF_Z, 0x0D, 0, 0, 0, 0, 0, 0},
+ {"setpb", setcc_insn, 1, SUF_B, 0x0A, 0, 0, 0, CPU_386, 0, 0},
+ {"andl", arith_insn, 22, SUF_L, 0x20, 0x04, 0, 0, CPU_386, 0, 0},
+ {"vaesdec", aes_insn, 2, SUF_Z, 0x38, 0xDE, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"xstore", padlock_insn, 1, SUF_Z, 0xC0, 0x00, 0xA7, 0, CPU_PadLock, 0, 0},
+ {"sha1nexte", intel_SHA1NEXTE_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SHA, 0, 0},
+ {"andps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x54, 0, 0, CPU_SSE, 0, 0},
+ {"vphaddbd", vphaddsub_insn, 1, SUF_Z, 0xC2, 0, 0, 0, CPU_XOP, 0, 0},
+ {"rorxl", vex_gpr_reg_rm_0F_imm8_insn, 2, SUF_L, 0xF2, 0x3A, 0xF0, ONLY_AVX, CPU_BMI2, 0, 0},
+ {"jmpw", jmp_insn, 31, SUF_W, 0, 0, 0, 0, 0, 0, 0},
+ {"fildll", fbldstp_insn, 1, SUF_Z, 0x05, 0, 0, 0, CPU_FPU, 0, 0},
+ {"out", out_insn, 12, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
+ {"mulsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x59, 0, 0, CPU_SSE2, 0, 0},
+ {"movss", movss_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_SSE, 0, 0},
+ {"smswl", sldtmsw_insn, 6, SUF_L, 0x04, 0x01, 0, 0, CPU_386, 0, 0},
+ {"aam", aadm_insn, 2, SUF_Z, 0x00, 0, 0, NOT_64, 0, 0, 0},
+ {"stosw", onebyte_insn, 1, SUF_Z, 0xAB, 0x10, 0, 0, 0, 0, 0},
+ {"ptest", sse4_insn, 2, SUF_Z, 0x17, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"lretw", retnf_insn, 6, SUF_W, 0xCA, 0x10, 0, 0, 0, 0, 0},
+ {"notq", f6_insn, 4, SUF_Q, 0x02, 0, 0, ONLY_64, 0, 0, 0},
+ {"vmload", svm_rax_insn, 2, SUF_Z, 0xDA, 0, 0, 0, CPU_SVM, 0, 0},
+ {"andb", arith_insn, 22, SUF_B, 0x20, 0x04, 0, 0, 0, 0, 0},
+ {"vcmpeq_usss", ssecmp_32_insn, 4, SUF_Z, 0x18, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpsubsw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xE9, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vmovmskpd", movmsk_insn, 4, SUF_Z, 0x66, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfnmsub231pd", vfma_pd_insn, 2, SUF_Z, 0xBE, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"cmovg", cmovcc_insn, 3, SUF_Z, 0x0F, 0, 0, 0, CPU_686, 0, 0},
+ {"cmpeqpd", ssecmp_128_insn, 3, SUF_Z, 0x00, 0x66, 0, 0, CPU_SSE, 0, 0},
+ {"vfmsub213sd", vfma_sd_insn, 2, SUF_Z, 0xAB, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"rex64", NULL, X86_REX>>8, 0x48, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"vpcmpistri", sse4pcmpstr_insn, 1, SUF_Z, 0x63, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpminsb", ssse3_insn, 5, SUF_Z, 0x38, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfnmadd231pd", vfma_pd_insn, 2, SUF_Z, 0xBC, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"ja", jcc_insn, 9, SUF_Z, 0x07, 0, 0, 0, 0, 0, 0},
+ {"vpmullw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xD5, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcvttpd2dq", avx_cvt_xmm128_insn, 2, SUF_Z, 0x66, 0xE6, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vgatherdps", gather_32x_32y_insn, 2, SUF_Z, 0x92, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"vfmsub213ss", vfma_ss_insn, 2, SUF_Z, 0xAB, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"cmpxchgb", cmpxchgxadd_insn, 4, SUF_B, 0xB0, 0, 0, 0, CPU_486, 0, 0},
+ {"sgdtw", twobytemem_insn, 1, SUF_W, 0x00, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
+ {"cmpb", arith_insn, 22, SUF_B, 0x38, 0x07, 0, 0, 0, 0, 0},
+ {"vmulpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x59, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cvttsd2siq", cvt_rx_xmm64_insn, 4, SUF_Q, 0xF2, 0x2C, 0, ONLY_64, CPU_SSE2, 0, 0},
+ {"movzwq", movszx_insn, 5, SUF_W, 0xB6, 0, 0, ONLY_64, CPU_386, 0, 0},
+ {"les", ldes_insn, 2, SUF_Z, 0xC4, 0, 0, NOT_64, 0, 0, 0},
+ {"vcmpngepd", ssecmp_128_insn, 3, SUF_Z, 0x09, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"clflush", clflush_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_P3, 0, 0},
+ {"leavew", onebyte_insn, 1, SUF_Z, 0xC9, 0x10, 0x00, 0, CPU_186, 0, 0},
+ {"addsubps", xmm_xmm128_insn, 2, SUF_Z, 0xF2, 0xD0, 0, 0, CPU_SSE3, 0, 0},
+ {"vinsertps", insertps_insn, 4, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vmresume", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xC3, 0, CPU_P4, 0, 0},
+ {"cmpnlesd", ssecmp_64_insn, 4, SUF_Z, 0x06, 0xF2, 0, 0, CPU_SSE2, 0, 0},
+ {"setnge", setcc_insn, 1, SUF_Z, 0x0C, 0, 0, 0, CPU_386, 0, 0},
+ {"adcxq", vex_gpr_ndd_rm_0F38_insn, 2, SUF_Q, 0x66, 0xF6, 0, ONLY_64, CPU_ADX, 0, 0},
+ {"xsetbv", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xD1, 0, CPU_386, CPU_Priv, CPU_XSAVE},
+ {"vphsubsw", ssse3_insn, 5, SUF_Z, 0x07, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpgtsd", ssecmp_64_insn, 4, SUF_Z, 0x0E, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vphsubw", ssse3_insn, 5, SUF_Z, 0x05, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmovnbel", cmovcc_insn, 3, SUF_L, 0x07, 0, 0, 0, CPU_686, 0, 0},
+ {"fcomi", fcom2_insn, 2, SUF_Z, 0xDB, 0xF0, 0, 0, CPU_686, CPU_FPU, 0},
+ {"blsfillq", xop_gpr_reg_rm_09_insn, 2, SUF_Q, 0x01, 0x02, 0, ONLY_64, CPU_TBM, 0, 0},
+ {"mulxl", vex_gpr_reg_nds_rm_0F_insn, 2, SUF_L, 0xF2, 0x38, 0xF6, ONLY_AVX, CPU_BMI2, 0, 0},
+ {"fcomip", fcom2_insn, 2, SUF_Z, 0xDF, 0xF0, 0, 0, CPU_686, CPU_FPU, 0},
+ {"vpinsrq", pinsrq_insn, 2, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcomw", vpcom_imm_insn, 1, SUF_Z, 0xCD, 0, 0, 0, CPU_XOP, 0, 0},
+ {"rsts", cyrixsmm_insn, 1, SUF_Z, 0x7D, 0, 0, 0, CPU_486, CPU_Cyrix, CPU_SMM},
+ {"vpcomleb", vpcom_insn, 1, SUF_Z, 0xCC, 0x01, 0, 0, CPU_XOP, 0, 0},
+ {"vdivpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x5E, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"add", arith_insn, 22, SUF_Z, 0x00, 0x00, 0, 0, 0, 0, 0},
+ {"sldtw", sldtmsw_insn, 6, SUF_W, 0x00, 0x00, 0, 0, CPU_286, 0, 0},
+ {"rorl", shift_insn, 16, SUF_L, 0x01, 0, 0, 0, CPU_386, 0, 0},
+ {"vcvtsi2sd", cvt_xmm_rmx_insn, 6, SUF_Z, 0xF2, 0x2A, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpnge_uqps", ssecmp_128_insn, 3, SUF_Z, 0x19, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfmsubpd", fma_128_256_insn, 4, SUF_Z, 0x6D, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"vpminsd", ssse3_insn, 5, SUF_Z, 0x39, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fistl", fiarith_insn, 2, SUF_L, 0x02, 0xDB, 0, 0, CPU_FPU, 0, 0},
+ {"fcmovu", fcmovcc_insn, 1, SUF_Z, 0xDA, 0xD8, 0, 0, CPU_686, CPU_FPU, 0},
+ {"scasb", onebyte_insn, 1, SUF_Z, 0xAE, 0x00, 0, 0, 0, 0, 0},
+ {"phminposuw", sse4_insn, 2, SUF_Z, 0x41, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"pextrwl", pextrw_insn, 7, SUF_L, 0, 0, 0, 0, CPU_MMX, CPU_P3, 0},
+ {"vpclmulqdq", pclmulqdq_insn, 2, SUF_Z, 0x3A, 0x44, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vphaddbw", vphaddsub_insn, 1, SUF_Z, 0xC1, 0, 0, 0, CPU_XOP, 0, 0},
+ {"psubsb", mmxsse2_insn, 2, SUF_Z, 0xE8, 0, 0, 0, CPU_MMX, 0, 0},
+ {"lss", lfgss_insn, 3, SUF_Z, 0xB2, 0, 0, 0, CPU_386, 0, 0},
+ {"pushal", onebyte_insn, 1, SUF_Z, 0x60, 0x20, 0, NOT_64, CPU_386, 0, 0},
+ {"setb", setcc_insn, 1, SUF_Z, 0x02, 0, 0, 0, CPU_386, 0, 0},
+ {"cmpnltps", ssecmp_128_insn, 3, SUF_Z, 0x05, 0, 0, 0, CPU_SSE, 0, 0},
+ {"rcpss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x53, 0, 0, CPU_SSE, 0, 0},
+ {"vcmpnltpd", ssecmp_128_insn, 3, SUF_Z, 0x05, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmpneqps", ssecmp_128_insn, 3, SUF_Z, 0x04, 0, 0, 0, CPU_SSE, 0, 0},
+ {"vpsadbw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xF6, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcvtss2sil", cvt_rx_xmm32_insn, 4, SUF_L, 0xF3, 0x2D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fadds", farith_insn, 7, SUF_S, 0xC0, 0xC0, 0x00, 0, CPU_FPU, 0, 0},
+ {"cmovbeq", cmovcc_insn, 3, SUF_Q, 0x06, 0, 0, ONLY_64, CPU_686, 0, 0},
+ {"bextrl", bextr_insn, 4, SUF_L, 0, 0, 0, ONLY_AVX, CPU_386, CPU_BMI1, 0},
+ {"vsqrtps", avx_xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x51, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpunord_ssd", ssecmp_64_insn, 4, SUF_Z, 0x13, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pmaxsw", mmxsse2_insn, 2, SUF_Z, 0xEE, 0, 0, 0, CPU_MMX, CPU_P3, 0},
+ {"lcallq", ljmpcall_insn, 7, SUF_Q, 0x03, 0x9A, 0, ONLY_64, 0, 0, 0},
+ {"vpextrb", pextrb_insn, 3, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fchs", twobyte_insn, 1, SUF_Z, 0xD9, 0xE0, 0, 0, CPU_FPU, 0, 0},
+ {"cmovnbeq", cmovcc_insn, 3, SUF_Q, 0x07, 0, 0, ONLY_64, CPU_686, 0, 0},
+ {"sha1msg2", intel_SHA1MSG2_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SHA, 0, 0},
+ {"vpaddusb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xDC, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"faddp", farithp_insn, 3, SUF_Z, 0xC0, 0, 0, 0, CPU_FPU, 0, 0},
+ {"cmovnbe", cmovcc_insn, 3, SUF_Z, 0x07, 0, 0, 0, CPU_686, 0, 0},
+ {"psrldq", pslrldq_insn, 4, SUF_Z, 0x03, 0, 0, 0, CPU_SSE2, 0, 0},
+ {"movswl", movszx_insn, 5, SUF_W, 0xBE, 0, 0, 0, CPU_386, 0, 0},
+ {"outsw", onebyte_insn, 1, SUF_Z, 0x6F, 0x10, 0, 0, 0, 0, 0},
+ {"vpminud", ssse3_insn, 5, SUF_Z, 0x3B, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"aesimc", aesimc_insn, 1, SUF_Z, 0x38, 0xDB, 0, 0, CPU_AES, 0, 0},
+ {"movsd", movsd_insn, 5, SUF_Z, 0, 0, 0, 0, CPU_386, 0, 0},
+ {"fistpq", fildstp_insn, 4, SUF_Q, 0x03, 0x02, 0x07, 0, CPU_FPU, 0, 0},
+ {"loopnzq", loopq_insn, 4, SUF_Z, 0x00, 0x40, 0, ONLY_64, 0, 0, 0},
+ {"vcmpngt_uqps", ssecmp_128_insn, 3, SUF_Z, 0x1A, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"setsb", setcc_insn, 1, SUF_B, 0x08, 0, 0, 0, CPU_386, 0, 0},
+ {"vpsignw", ssse3_insn, 5, SUF_Z, 0x09, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"scasl", onebyte_insn, 1, SUF_Z, 0xAF, 0x20, 0, 0, CPU_386, 0, 0},
+ {"addb", arith_insn, 22, SUF_B, 0x00, 0x00, 0, 0, 0, 0, 0},
+ {"jnc", jcc_insn, 9, SUF_Z, 0x03, 0, 0, 0, 0, 0, 0},
+ {"cmpeqsd", ssecmp_64_insn, 4, SUF_Z, 0x00, 0xF2, 0, 0, CPU_SSE2, 0, 0},
+ {"maxss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5F, 0, 0, CPU_SSE, 0, 0},
+ {"lodsl", onebyte_insn, 1, SUF_Z, 0xAD, 0x20, 0, 0, CPU_386, 0, 0},
+ {"lahf", onebyte_insn, 1, SUF_Z, 0x9F, 0, 0, 0, 0, 0, 0},
+ {"setp", setcc_insn, 1, SUF_Z, 0x0A, 0, 0, 0, CPU_386, 0, 0},
+ {"vpunpcklwd", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x61, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vmwritel", vmxmemwr_insn, 2, SUF_L, 0, 0, 0, NOT_64, CPU_P4, 0, 0},
+ {"blendps", sse4imm_insn, 2, SUF_Z, 0x0C, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vmcall", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xC1, 0, CPU_P4, 0, 0},
+ {"pushq", push_insn, 35, SUF_Q, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"vcmpnleps", ssecmp_128_insn, 3, SUF_Z, 0x06, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcomtrueuw", vpcom_insn, 1, SUF_Z, 0xED, 0x07, 0, 0, CPU_XOP, 0, 0},
+ {"pmuldq", sse4_insn, 2, SUF_Z, 0x28, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"cmpl", arith_insn, 22, SUF_L, 0x38, 0x07, 0, 0, CPU_386, 0, 0},
+ {"pfmin", now3d_insn, 1, SUF_Z, 0x94, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"fldpi", twobyte_insn, 1, SUF_Z, 0xD9, 0xEB, 0, 0, CPU_FPU, 0, 0},
+ {"vcvtsi2sdl", cvt_xmm_rmx_insn, 6, SUF_L, 0xF2, 0x2A, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpsraw", vpshift_insn, 8, SUF_Z, 0xE1, 0x71, 0x04, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcvtps2ph", avx_cvtps2ph_insn, 4, SUF_Z, 0x66, 0x1D, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"subq", arith_insn, 22, SUF_Q, 0x28, 0x05, 0, ONLY_64, 0, 0, 0},
+ {"fsubrs", farith_insn, 7, SUF_S, 0xE0, 0xE8, 0x05, 0, CPU_FPU, 0, 0},
+ {"xchgq", xchg_insn, 16, SUF_Q, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"cmovsq", cmovcc_insn, 3, SUF_Q, 0x08, 0, 0, ONLY_64, CPU_686, 0, 0},
+ {"shldq", shlrd_insn, 9, SUF_Q, 0xA4, 0, 0, ONLY_64, CPU_386, 0, 0},
+ {"leaveq", onebyte_insn, 1, SUF_Z, 0xC9, 0x00, 0x40, ONLY_64, 0, 0, 0},
+ {"stc", onebyte_insn, 1, SUF_Z, 0xF9, 0, 0, 0, 0, 0, 0},
+ {"fsave", twobytemem_insn, 1, SUF_Z, 0x06, 0x9B, 0xDD, 0, CPU_FPU, 0, 0},
+ {"rclb", shift_insn, 16, SUF_B, 0x02, 0, 0, 0, 0, 0, 0},
+ {"fisubrl", fiarith_insn, 2, SUF_L, 0x05, 0xDA, 0, 0, CPU_FPU, 0, 0},
+ {"vpsrlvd", vpshiftv_vexw0_avx2_insn, 2, SUF_Z, 0x45, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"fstenvl", twobytemem_insn, 1, SUF_L, 0x06, 0x9B, 0xD9, 0, CPU_FPU, 0, 0},
+ {"paddsb", mmxsse2_insn, 2, SUF_Z, 0xEC, 0, 0, 0, CPU_MMX, 0, 0},
+ {"vmwriteq", vmxmemwr_insn, 2, SUF_Q, 0, 0, 0, ONLY_64, CPU_P4, 0, 0},
+ {"ud2", twobyte_insn, 1, SUF_Z, 0x0F, 0x0B, 0, 0, CPU_286, 0, 0},
+ {"vfmaddsub132pd", vfma_pd_insn, 2, SUF_Z, 0x96, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"sti", onebyte_insn, 1, SUF_Z, 0xFB, 0, 0, 0, 0, 0, 0},
+ {"shld", shlrd_insn, 9, SUF_Z, 0xA4, 0, 0, 0, CPU_386, 0, 0},
+ {"vpabsd", avx2_ssse3_2op_insn, 2, SUF_Z, 0x1E, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"mwait", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xC9, 0, CPU_SSE3, 0, 0},
+ {"cvtsi2sd", cvt_xmm_rmx_insn, 6, SUF_Z, 0xF2, 0x2A, 0, 0, CPU_SSE2, 0, 0},
+ {"cmovnp", cmovcc_insn, 3, SUF_Z, 0x0B, 0, 0, 0, CPU_686, 0, 0},
+ {"vcvtpd2dq", avx_cvt_xmm128_insn, 2, SUF_Z, 0xF2, 0xE6, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pmovsxbw", sse4m64_insn, 4, SUF_Z, 0x20, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"fisubl", fiarith_insn, 2, SUF_L, 0x04, 0xDA, 0, 0, CPU_FPU, 0, 0},
+ {"daa", onebyte_insn, 1, SUF_Z, 0x27, 0, 0, NOT_64, 0, 0, 0},
+ {"fdivrl", farith_insn, 7, SUF_L, 0xF0, 0xF8, 0x07, 0, CPU_FPU, 0, 0},
+ {"stac", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xCB, 0, CPU_SMAP, 0, 0},
+ {"testw", test_insn, 20, SUF_W, 0, 0, 0, 0, 0, 0, 0},
+ {"movzwl", movszx_insn, 5, SUF_W, 0xB6, 0, 0, 0, CPU_386, 0, 0},
+ {"vpblendw", sse4imm_256avx2_insn, 4, SUF_Z, 0x0E, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcomgtuq", vpcom_insn, 1, SUF_Z, 0xEF, 0x02, 0, 0, CPU_XOP, 0, 0},
+ {"setnaeb", setcc_insn, 1, SUF_B, 0x02, 0, 0, 0, CPU_386, 0, 0},
+ {"pextrwq", pextrw_insn, 7, SUF_Q, 0, 0, 0, ONLY_64, CPU_MMX, CPU_P3, 0},
+ {"lodsq", onebyte_insn, 1, SUF_Z, 0xAD, 0x40, 0, ONLY_64, 0, 0, 0},
+ {"fincstp", twobyte_insn, 1, SUF_Z, 0xD9, 0xF7, 0, 0, CPU_FPU, 0, 0},
+ {"cmovlew", cmovcc_insn, 3, SUF_W, 0x0E, 0, 0, 0, CPU_686, 0, 0},
+ {"insertq", insertq_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_SSE4a, 0, 0},
+ {"notl", f6_insn, 4, SUF_L, 0x02, 0, 0, 0, CPU_386, 0, 0},
+ {"vfnmadd132sd", vfma_sd_insn, 2, SUF_Z, 0x9D, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"cmova", cmovcc_insn, 3, SUF_Z, 0x07, 0, 0, 0, CPU_686, 0, 0},
+ {"fstcw", fstcw_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_FPU, 0, 0},
+ {"vpclmullqhqdq", pclmulqdq_fixed_insn, 2, SUF_Z, 0x10, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"movnti", movnti_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_P4, 0, 0},
+ {"packusdw", sse4_insn, 2, SUF_Z, 0x2B, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"punpckhqdq", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x6D, 0, 0, CPU_SSE2, 0, 0},
+ {"lzcntw", cnt_insn, 3, SUF_W, 0xBD, 0, 0, 0, CPU_LZCNT, 0, 0},
+ {"pcmpistri", sse4pcmpstr_insn, 1, SUF_Z, 0x63, 0, 0, 0, CPU_SSE42, 0, 0},
+ {"fimull", fiarith_insn, 2, SUF_L, 0x01, 0xDA, 0, 0, CPU_FPU, 0, 0},
+ {"fnstenv", onebytemem_insn, 1, SUF_Z, 0x06, 0xD9, 0, 0, CPU_FPU, 0, 0},
+ {"cmovncw", cmovcc_insn, 3, SUF_W, 0x03, 0, 0, 0, CPU_686, 0, 0},
+ {"leaw", lea_insn, 3, SUF_W, 0, 0, 0, 0, 0, 0, 0},
+ {"vfmadd132ss", vfma_ss_insn, 2, SUF_Z, 0x99, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"pshufd", xmm_xmm128_imm_insn, 1, SUF_Z, 0x66, 0x70, 0, 0, CPU_SSE2, 0, 0},
+ {"blsil", vex_gpr_ndd_rm_0F38_regext_insn, 2, SUF_L, 0x00, 0xF3, 0x03, ONLY_AVX, CPU_BMI1, 0, 0},
+ {"stosl", onebyte_insn, 1, SUF_Z, 0xAB, 0x20, 0, 0, CPU_386, 0, 0},
+ {"mulq", f6_insn, 4, SUF_Q, 0x04, 0, 0, ONLY_64, 0, 0, 0},
+ {"cmovbl", cmovcc_insn, 3, SUF_L, 0x02, 0, 0, 0, CPU_686, 0, 0},
+ {"vpmaxsd", ssse3_insn, 5, SUF_Z, 0x3D, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"rsqrtps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x52, 0, 0, CPU_SSE, 0, 0},
+ {"ror", shift_insn, 16, SUF_Z, 0x01, 0, 0, 0, 0, 0, 0},
+ {"vcmptrue_usss", ssecmp_32_insn, 4, SUF_Z, 0x1F, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpermq", vperm_imm_avx2_insn, 1, SUF_Z, 0x00, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"xcryptofb", padlock_insn, 1, SUF_Z, 0xE8, 0xF3, 0xA7, 0, CPU_PadLock, 0, 0},
+ {"btsl", bittest_insn, 6, SUF_L, 0xAB, 0x05, 0, 0, CPU_386, 0, 0},
+ {"vfnmsub213ps", vfma_ps_insn, 2, SUF_Z, 0xAE, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"stmxcsr", ldstmxcsr_insn, 1, SUF_Z, 0x03, 0, 0, 0, CPU_SSE, 0, 0},
+ {"vzeroupper", vzero_insn, 1, SUF_Z, 0xC0, 0, 0, 0, CPU_AVX, 0, 0},
+ {"adcx", vex_gpr_ndd_rm_0F38_insn, 2, SUF_Z, 0x66, 0xF6, 0, 0, CPU_ADX, 0, 0},
+ {"setnz", setcc_insn, 1, SUF_Z, 0x05, 0, 0, 0, CPU_386, 0, 0},
+ {"fildl", fildstp_insn, 4, SUF_L, 0x00, 0x02, 0x05, 0, CPU_FPU, 0, 0},
+ {"movlps", movhlp_insn, 3, SUF_Z, 0x00, 0x12, 0, 0, CPU_SSE, 0, 0},
+ {"vmovmskpdq", movmsk_insn, 4, SUF_Q, 0x66, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmovngw", cmovcc_insn, 3, SUF_W, 0x0E, 0, 0, 0, CPU_686, 0, 0},
+ {"cltd", onebyte_insn, 1, SUF_Z, 0x99, 0x20, 0, 0, CPU_386, 0, 0},
+ {"fmuls", farith_insn, 7, SUF_S, 0xC8, 0xC8, 0x01, 0, CPU_FPU, 0, 0},
+ {"fcom", fcom_insn, 6, SUF_Z, 0xD0, 0x02, 0, 0, CPU_FPU, 0, 0},
+ {"andq", arith_insn, 22, SUF_Q, 0x20, 0x04, 0, ONLY_64, 0, 0, 0},
+ {"vfmaddps", fma_128_256_insn, 4, SUF_Z, 0x68, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"fst", fst_insn, 3, SUF_Z, 0, 0, 0, 0, CPU_FPU, 0, 0},
+ {"vmaskmovpd", vmaskmov_insn, 4, SUF_Z, 0x2D, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cld", onebyte_insn, 1, SUF_Z, 0xFC, 0, 0, 0, 0, 0, 0},
+ {"vpinsrd", pinsrd_insn, 2, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"xchgl", xchg_insn, 16, SUF_L, 0, 0, 0, 0, 0, 0, 0},
+ {"vcmpgtpd", ssecmp_128_insn, 3, SUF_Z, 0x0E, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmovael", cmovcc_insn, 3, SUF_L, 0x03, 0, 0, 0, CPU_686, 0, 0},
+ {"phaddsw", ssse3_insn, 5, SUF_Z, 0x03, 0, 0, 0, CPU_SSSE3, 0, 0},
+ {"pclmullqlqdq", pclmulqdq_fixed_insn, 2, SUF_Z, 0x00, 0, 0, 0, CPU_AVX, 0, 0},
+ {"cmovnleq", cmovcc_insn, 3, SUF_Q, 0x0F, 0, 0, ONLY_64, CPU_686, 0, 0},
+ {"pcmpeqb", mmxsse2_insn, 2, SUF_Z, 0x74, 0, 0, 0, CPU_MMX, 0, 0},
+ {"word", NULL, X86_OPERSIZE>>8, 0x10, 0, 0, 0, 0, 0, 0, 0},
+ {"blcmskq", xop_gpr_reg_rm_09_insn, 2, SUF_Q, 0x02, 0x01, 0, ONLY_64, CPU_TBM, 0, 0},
+ {"vpcomgtud", vpcom_insn, 1, SUF_Z, 0xEE, 0x02, 0, 0, CPU_XOP, 0, 0},
+ {"fsubr", farith_insn, 7, SUF_Z, 0xE0, 0xE8, 0x05, 0, CPU_FPU, 0, 0},
+ {"cmovp", cmovcc_insn, 3, SUF_Z, 0x0A, 0, 0, 0, CPU_686, 0, 0},
+ {"shrq", shift_insn, 16, SUF_Q, 0x05, 0, 0, ONLY_64, 0, 0, 0},
+ {"vpcomgtd", vpcom_insn, 1, SUF_Z, 0xCE, 0x02, 0, 0, CPU_XOP, 0, 0},
+ {"vfnmsub132sd", vfma_sd_insn, 2, SUF_Z, 0x9F, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vpor", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xEB, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"psllw", pshift_insn, 4, SUF_Z, 0xF1, 0x71, 0x06, 0, CPU_MMX, 0, 0},
+ {"fbld", fbldstp_insn, 1, SUF_Z, 0x04, 0, 0, 0, CPU_FPU, 0, 0},
+ {"subw", arith_insn, 22, SUF_W, 0x28, 0x05, 0, 0, 0, 0, 0},
+ {"vmovhlps", movhllhps_insn, 2, SUF_Z, 0x12, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmovleq", cmovcc_insn, 3, SUF_Q, 0x0E, 0, 0, ONLY_64, CPU_686, 0, 0},
+ {"imulw", imul_insn, 19, SUF_W, 0, 0, 0, 0, 0, 0, 0},
+ {"cvttss2siq", cvt_rx_xmm32_insn, 4, SUF_Q, 0xF3, 0x2C, 0, ONLY_64, CPU_SSE, 0, 0},
+ {"vgatherqpd", gather_64x_64y_insn, 2, SUF_Z, 0x93, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"imulq", imul_insn, 19, SUF_Q, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"ret", retnf_insn, 6, SUF_Z, 0xC2, 0, 0, 0, 0, 0, 0},
+ {"vphminposuw", avx_ssse3_2op_insn, 1, SUF_Z, 0x41, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmpneqsd", ssecmp_64_insn, 4, SUF_Z, 0x04, 0xF2, 0, 0, CPU_SSE2, 0, 0},
+ {"jae", jcc_insn, 9, SUF_Z, 0x03, 0, 0, 0, 0, 0, 0},
+ {"vpavgb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xE0, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cwtd", onebyte_insn, 1, SUF_Z, 0x99, 0x10, 0, 0, 0, 0, 0},
+ {"movddup", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x12, 0, 0, CPU_SSE3, 0, 0},
+ {"vpcomud", vpcom_imm_insn, 1, SUF_Z, 0xEE, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vpmovzxwd", sse4m64_insn, 4, SUF_Z, 0x33, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfnmsubss", fma_128_m32_insn, 3, SUF_Z, 0x7E, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"cmovgew", cmovcc_insn, 3, SUF_W, 0x0D, 0, 0, 0, CPU_686, 0, 0},
+ {"bzhi", vex_gpr_reg_rm_nds_0F_insn, 2, SUF_Z, 0x00, 0x38, 0xF5, ONLY_AVX, CPU_BMI2, 0, 0},
+ {"setab", setcc_insn, 1, SUF_B, 0x07, 0, 0, 0, CPU_386, 0, 0},
+ {"rsqrtss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x52, 0, 0, CPU_SSE, 0, 0},
+ {"vfmaddsub213pd", vfma_pd_insn, 2, SUF_Z, 0xA6, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"montmul", padlock_insn, 1, SUF_Z, 0xC0, 0xF3, 0xA6, 0, CPU_PadLock, 0, 0},
+ {"rcrq", shift_insn, 16, SUF_Q, 0x03, 0, 0, ONLY_64, 0, 0, 0},
+ {"vpaddsb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xEC, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vbroadcastss", vbroadcastss_insn, 4, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmovnz", cmovcc_insn, 3, SUF_Z, 0x05, 0, 0, 0, CPU_686, 0, 0},
+ {"cmpxchgw", cmpxchgxadd_insn, 4, SUF_W, 0xB0, 0, 0, 0, CPU_486, 0, 0},
+ {"fcompp", twobyte_insn, 1, SUF_Z, 0xDE, 0xD9, 0, 0, CPU_FPU, 0, 0},
+ {"vpshab", amd_vpshift_insn, 2, SUF_Z, 0x98, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vaddpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x58, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcvtsi2ssq", cvt_xmm_rmx_insn, 6, SUF_Q, 0xF3, 0x2A, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"clc", onebyte_insn, 1, SUF_Z, 0xF8, 0, 0, 0, 0, 0, 0},
+ {"cmovlw", cmovcc_insn, 3, SUF_W, 0x0C, 0, 0, 0, CPU_686, 0, 0},
+ {"lgdt", twobytemem_insn, 1, SUF_Z, 0x02, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
+ {"getsec", twobyte_insn, 1, SUF_Z, 0x0F, 0x37, 0, 0, CPU_SMX, 0, 0},
+ {"blsrl", vex_gpr_ndd_rm_0F38_regext_insn, 2, SUF_L, 0x00, 0xF3, 0x01, ONLY_AVX, CPU_BMI1, 0, 0},
+ {"vpsignb", ssse3_insn, 5, SUF_Z, 0x08, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pblendw", sse4imm_insn, 2, SUF_Z, 0x0E, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vmovlhps", movhllhps_insn, 2, SUF_Z, 0x16, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"svdc", svdc_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_486, CPU_Cyrix, CPU_SMM},
+ {"vmovlpd", movhlp_insn, 3, SUF_Z, 0x66, 0x12, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vdppd", sse4imm_insn, 2, SUF_Z, 0x41, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"xbegin", tsx_xbegin_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_TSX, 0},
+ {"sldtq", sldtmsw_insn, 6, SUF_Q, 0x00, 0x00, 0, ONLY_64, CPU_286, 0, 0},
+ {"vpcmpeqb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x74, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmpnless", ssecmp_32_insn, 4, SUF_Z, 0x06, 0xF3, 0, 0, CPU_SSE, 0, 0},
+ {"fprem1", twobyte_insn, 1, SUF_Z, 0xD9, 0xF5, 0, 0, CPU_286, CPU_FPU, 0},
+ {"lssl", lfgss_insn, 3, SUF_L, 0xB2, 0, 0, 0, CPU_386, 0, 0},
+ {"inw", in_insn, 12, SUF_W, 0, 0, 0, 0, 0, 0, 0},
+ {"bzhiq", vex_gpr_reg_rm_nds_0F_insn, 2, SUF_Q, 0x00, 0x38, 0xF5, ONLY_64|ONLY_AVX, CPU_BMI2, 0, 0},
+ {"pop", pop_insn, 23, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
+ {"vblendps", sse4imm_256_insn, 4, SUF_Z, 0x0C, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"flds", fld_insn, 4, SUF_S, 0, 0, 0, 0, CPU_FPU, 0, 0},
+ {"movsxw", movszx_insn, 5, SUF_W, 0xBE, 0, 0, 0, CPU_386, 0, 0},
+ {"movabsw", movabs_insn, 9, SUF_W, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"divps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x5E, 0, 0, CPU_SSE, 0, 0},
+ {"vpcomfalseb", vpcom_insn, 1, SUF_Z, 0xCC, 0x06, 0, 0, CPU_XOP, 0, 0},
+ {"vcmpsd", cmpsd_insn, 5, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcmpgtq", ssse3_insn, 5, SUF_Z, 0x37, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"setbb", setcc_insn, 1, SUF_B, 0x02, 0, 0, 0, CPU_386, 0, 0},
+ {"shrw", shift_insn, 16, SUF_W, 0x05, 0, 0, 0, 0, 0, 0},
+ {"andpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x54, 0, 0, CPU_SSE2, 0, 0},
+ {"vaesdeclast", aes_insn, 2, SUF_Z, 0x38, 0xDF, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"testb", test_insn, 20, SUF_B, 0, 0, 0, 0, 0, 0, 0},
+ {"vfmsub231ss", vfma_ss_insn, 2, SUF_Z, 0xBB, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"rexxz", NULL, X86_REX>>8, 0x45, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"cmpnlepd", ssecmp_128_insn, 3, SUF_Z, 0x06, 0x66, 0, 0, CPU_SSE, 0, 0},
+ {"lidt", twobytemem_insn, 1, SUF_Z, 0x03, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
+ {"vfmsubps", fma_128_256_insn, 4, SUF_Z, 0x6C, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"svldt", cyrixsmm_insn, 1, SUF_Z, 0x7A, 0, 0, 0, CPU_486, CPU_Cyrix, CPU_SMM},
+ {"rclw", shift_insn, 16, SUF_W, 0x02, 0, 0, 0, 0, 0, 0},
+ {"vphsubbw", vphaddsub_insn, 1, SUF_Z, 0xE1, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vcmpnge_uqss", ssecmp_32_insn, 4, SUF_Z, 0x19, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"movswq", movszx_insn, 5, SUF_W, 0xBE, 0, 0, ONLY_64, CPU_386, 0, 0},
+ {"blcic", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x01, 0x05, 0, 0, CPU_386, CPU_TBM, 0},
+ {"setns", setcc_insn, 1, SUF_Z, 0x09, 0, 0, 0, CPU_386, 0, 0},
+ {"vcmpneq_oqps", ssecmp_128_insn, 3, SUF_Z, 0x0C, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"rorb", shift_insn, 16, SUF_B, 0x01, 0, 0, 0, 0, 0, 0},
+ {"vpcomgtuw", vpcom_insn, 1, SUF_Z, 0xED, 0x02, 0, 0, CPU_XOP, 0, 0},
+ {"vfmsubss", fma_128_m32_insn, 3, SUF_Z, 0x6E, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"vpperm", vpperm_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_XOP, 0, 0},
+ {"cmpxchg", cmpxchgxadd_insn, 4, SUF_Z, 0xB0, 0, 0, 0, CPU_486, 0, 0},
+ {"setnbeb", setcc_insn, 1, SUF_B, 0x07, 0, 0, 0, CPU_386, 0, 0},
+ {"vmovsd", movsd_insn, 5, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vrcpss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x53, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pmovzxbd", sse4m32_insn, 4, SUF_Z, 0x31, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vroundpd", avx_sse4imm_insn, 3, SUF_Z, 0x09, 0, 0, ONLY_AVX, CPU_SSE41, 0, 0},
+ {"popl", pop_insn, 23, SUF_L, 0, 0, 0, NOT_64, CPU_386, 0, 0},
+ {"fisttpll", fildstp_insn, 4, SUF_Q, 0x07, 0, 0, 0, CPU_SSE3, 0, 0},
+ {"vaddsubpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0xD0, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfmadd132ps", vfma_ps_insn, 2, SUF_Z, 0x98, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"blcfill", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x01, 0x01, 0, 0, CPU_386, CPU_TBM, 0},
+ {"vandnpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x55, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"sbbb", arith_insn, 22, SUF_B, 0x18, 0x03, 0, 0, 0, 0, 0},
+ {"vcmpfalseps", ssecmp_128_insn, 3, SUF_Z, 0x0B, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"popcnt", cnt_insn, 3, SUF_Z, 0xB8, 0, 0, 0, CPU_SSE42, 0, 0},
+ {"vpcomnequd", vpcom_insn, 1, SUF_Z, 0xEE, 0x05, 0, 0, CPU_XOP, 0, 0},
+ {"adcq", arith_insn, 22, SUF_Q, 0x10, 0x02, 0, ONLY_64, 0, 0, 0},
+ {"vpcomequw", vpcom_insn, 1, SUF_Z, 0xED, 0x04, 0, 0, CPU_XOP, 0, 0},
+ {"prefetcht1", twobytemem_insn, 1, SUF_Z, 0x02, 0x0F, 0x18, 0, CPU_P3, 0, 0},
+ {"movdqa", movau_insn, 6, SUF_Z, 0x66, 0x6F, 0x10, 0, CPU_SSE2, 0, 0},
+ {"vmovq", vmovq_insn, 5, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmpxchg16b", cmpxchg16b_insn, 1, SUF_Z, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"smovq", onebyte_insn, 1, SUF_Z, 0xA5, 0x40, 0, ONLY_64, 0, 0, 0},
+ {"fildq", fildstp_insn, 4, SUF_Q, 0x00, 0x02, 0x05, 0, CPU_FPU, 0, 0},
+ {"ficoml", fiarith_insn, 2, SUF_L, 0x02, 0xDA, 0, 0, CPU_FPU, 0, 0},
+ {"cmovae", cmovcc_insn, 3, SUF_Z, 0x03, 0, 0, 0, CPU_686, 0, 0},
+ {"vaddsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x58, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"movb", mov_insn, 69, SUF_B, 0, 0, 0, 0, 0, 0, 0},
+ {"fist", fiarith_insn, 2, SUF_Z, 0x02, 0xDB, 0, 0, CPU_FPU, 0, 0},
+ {"vpcomb", vpcom_imm_insn, 1, SUF_Z, 0xCC, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vcmpneq_oqss", ssecmp_32_insn, 4, SUF_Z, 0x0C, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"xorpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x57, 0, 0, CPU_SSE2, 0, 0},
+ {"cmpsd", cmpsd_insn, 5, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
+ {"movabs", movabs_insn, 9, SUF_Z, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"jrcxz", jcxz_insn, 2, SUF_Z, 0x40, 0, 0, ONLY_64, 0, 0, 0},
+ {"vmovhpd", movhlp_insn, 3, SUF_Z, 0x66, 0x16, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmovpq", cmovcc_insn, 3, SUF_Q, 0x0A, 0, 0, ONLY_64, CPU_686, 0, 0},
+ {"vpsubw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xF9, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"smovl", onebyte_insn, 1, SUF_Z, 0xA5, 0x20, 0, 0, CPU_386, 0, 0},
+ {"and", arith_insn, 22, SUF_Z, 0x20, 0x04, 0, 0, 0, 0, 0},
+ {"andw", arith_insn, 22, SUF_W, 0x20, 0x04, 0, 0, 0, 0, 0},
+ {"cmpleps", ssecmp_128_insn, 3, SUF_Z, 0x02, 0, 0, 0, CPU_SSE, 0, 0},
+ {"vpmovzxdq", sse4m64_insn, 4, SUF_Z, 0x35, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"subss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5C, 0, 0, CPU_SSE, 0, 0},
+ {"vpcomtrueq", vpcom_insn, 1, SUF_Z, 0xCF, 0x07, 0, 0, CPU_XOP, 0, 0},
+ {"fldl2e", twobyte_insn, 1, SUF_Z, 0xD9, 0xEA, 0, 0, CPU_FPU, 0, 0},
+ {"negw", f6_insn, 4, SUF_W, 0x03, 0, 0, 0, 0, 0, 0},
+ {"fidivl", fiarith_insn, 2, SUF_L, 0x06, 0xDA, 0, 0, CPU_FPU, 0, 0},
+ {"setnc", setcc_insn, 1, SUF_Z, 0x03, 0, 0, 0, CPU_386, 0, 0},
+ {"clts", twobyte_insn, 1, SUF_Z, 0x0F, 0x06, 0, 0, CPU_286, CPU_Priv, 0},
+ {"vcmpgtps", ssecmp_128_insn, 3, SUF_Z, 0x0E, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"setnl", setcc_insn, 1, SUF_Z, 0x0D, 0, 0, 0, CPU_386, 0, 0},
+ {"vphaddd", ssse3_insn, 5, SUF_Z, 0x02, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcomneub", vpcom_insn, 1, SUF_Z, 0xEC, 0x05, 0, 0, CPU_XOP, 0, 0},
+ {"cmp", arith_insn, 22, SUF_Z, 0x38, 0x07, 0, 0, 0, 0, 0},
+ {"fstsww", fstsw_insn, 2, SUF_W, 0, 0, 0, 0, CPU_FPU, 0, 0},
+ {"cmpordpd", ssecmp_128_insn, 3, SUF_Z, 0x07, 0x66, 0, 0, CPU_SSE, 0, 0},
+ {"punpckhbw", mmxsse2_insn, 2, SUF_Z, 0x68, 0, 0, 0, CPU_MMX, 0, 0},
+ {"svts", cyrixsmm_insn, 1, SUF_Z, 0x7C, 0, 0, 0, CPU_486, CPU_Cyrix, CPU_SMM},
+ {"cmpq", arith_insn, 22, SUF_Q, 0x38, 0x07, 0, ONLY_64, 0, 0, 0},
+ {"cmovbq", cmovcc_insn, 3, SUF_Q, 0x02, 0, 0, ONLY_64, CPU_686, 0, 0},
+ {"ficomp", fiarith_insn, 2, SUF_Z, 0x03, 0xDA, 0, 0, CPU_FPU, 0, 0},
+ {"vmmcall", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xD9, 0, CPU_SVM, 0, 0},
+ {"cqo", onebyte_insn, 1, SUF_Z, 0x99, 0x40, 0, ONLY_64, 0, 0, 0},
+ {"vcmpnlepd", ssecmp_128_insn, 3, SUF_Z, 0x06, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"setnb", setcc_insn, 1, SUF_Z, 0x03, 0, 0, 0, CPU_386, 0, 0},
+ {"vpsllvd", vpshiftv_vexw0_avx2_insn, 2, SUF_Z, 0x47, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"vcmplt_oqpd", ssecmp_128_insn, 3, SUF_Z, 0x11, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pextrw", pextrw_insn, 7, SUF_Z, 0, 0, 0, 0, CPU_MMX, CPU_P3, 0},
+ {"loopzl", loopl_insn, 4, SUF_Z, 0x01, 0x20, 0, 0, 0, 0, 0},
+ {"retq", retnf_insn, 6, SUF_Z, 0xC2, 0, 0, ONLY_64, 0, 0, 0},
+ {"vcmpordsd", ssecmp_64_insn, 4, SUF_Z, 0x07, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"seteb", setcc_insn, 1, SUF_B, 0x04, 0, 0, 0, CPU_386, 0, 0},
+ {"vmxoff", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xC4, 0, CPU_P4, 0, 0},
+ {"pfcmpeq", now3d_insn, 1, SUF_Z, 0xB0, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"pmovsxbq", sse4m16_insn, 4, SUF_Z, 0x22, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vfnmadd231ss", vfma_ss_insn, 2, SUF_Z, 0xBD, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"loopel", loopl_insn, 4, SUF_Z, 0x01, 0x20, 0, 0, 0, 0, 0},
+ {"pause", onebyte_prefix_insn, 1, SUF_Z, 0xF3, 0x90, 0, 0, CPU_P4, 0, 0},
+ {"addps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x58, 0, 0, CPU_SSE, 0, 0},
+ {"vcmpfalse_ossd", ssecmp_64_insn, 4, SUF_Z, 0x1B, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"rcr", shift_insn, 16, SUF_Z, 0x03, 0, 0, 0, 0, 0, 0},
+ {"vfmadd213pd", vfma_pd_insn, 2, SUF_Z, 0xA8, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"xchg", xchg_insn, 16, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
+ {"ucomiss", xmm_xmm32_insn, 4, SUF_Z, 0x00, 0x2E, 0, 0, CPU_SSE, 0, 0},
+ {"popq", pop_insn, 23, SUF_Q, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"lfsq", lfgss_insn, 3, SUF_Q, 0xB4, 0, 0, ONLY_64, CPU_386, 0, 0},
+ {"vcmpneq_usss", ssecmp_32_insn, 4, SUF_Z, 0x14, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"crc32w", crc32_insn, 5, SUF_W, 0, 0, 0, 0, CPU_386, CPU_SSE42, 0},
+ {"setngeb", setcc_insn, 1, SUF_B, 0x0C, 0, 0, 0, CPU_386, 0, 0},
+ {"vpalignr", sse4imm_256avx2_insn, 4, SUF_Z, 0x0F, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcomtrueuq", vpcom_insn, 1, SUF_Z, 0xEF, 0x07, 0, 0, CPU_XOP, 0, 0},
+ {"pinsrb", pinsrb_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"movshdup", xmm_xmm128_insn, 2, SUF_Z, 0xF3, 0x16, 0, 0, CPU_SSE3, 0, 0},
+ {"cmovll", cmovcc_insn, 3, SUF_L, 0x0C, 0, 0, 0, CPU_686, 0, 0},
+ {"vpextrd", pextrd_insn, 1, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"lgdtl", twobytemem_insn, 1, SUF_L, 0x02, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
+ {"vpblendvb", avx2_sse4xmm0_insn, 2, SUF_Z, 0x4C, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"setlb", setcc_insn, 1, SUF_B, 0x0C, 0, 0, 0, CPU_386, 0, 0},
+ {"vfmsubadd213ps", vfma_ps_insn, 2, SUF_Z, 0xA7, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"unpckhpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x15, 0, 0, CPU_SSE2, 0, 0},
+ {"vpcomfalseud", vpcom_insn, 1, SUF_Z, 0xEE, 0x06, 0, 0, CPU_XOP, 0, 0},
+ {"cmovnlq", cmovcc_insn, 3, SUF_Q, 0x0D, 0, 0, ONLY_64, CPU_686, 0, 0},
+ {"cmovge", cmovcc_insn, 3, SUF_Z, 0x0D, 0, 0, 0, CPU_686, 0, 0},
+ {"movabsb", movabs_insn, 9, SUF_B, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"popa", onebyte_insn, 1, SUF_Z, 0x61, 0x00, 0, NOT_64, CPU_186, 0, 0},
+ {"invvpid", eptvpid_insn, 2, SUF_Z, 0x01, 0, 0, 0, CPU_386, CPU_EPTVPID, 0},
+ {"vpcomneud", vpcom_insn, 1, SUF_Z, 0xEE, 0x05, 0, 0, CPU_XOP, 0, 0},
+ {"blsrq", vex_gpr_ndd_rm_0F38_regext_insn, 2, SUF_Q, 0x00, 0xF3, 0x01, ONLY_64|ONLY_AVX, CPU_BMI1, 0, 0},
+ {"ljmpl", ljmpcall_insn, 7, SUF_L, 0x05, 0xEA, 0, 0, CPU_386, 0, 0},
+ {"movzx", movszx_insn, 5, SUF_Z, 0xB6, 0, 0, 0, CPU_386, 0, 0},
+ {"pi2fd", now3d_insn, 1, SUF_Z, 0x0D, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"setng", setcc_insn, 1, SUF_Z, 0x0E, 0, 0, 0, CPU_386, 0, 0},
+ {"vpcomfalsed", vpcom_insn, 1, SUF_Z, 0xCE, 0x06, 0, 0, CPU_XOP, 0, 0},
+ {"vpabsb", avx2_ssse3_2op_insn, 2, SUF_Z, 0x1C, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpgesd", ssecmp_64_insn, 4, SUF_Z, 0x0D, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfnmaddsd", fma_128_m64_insn, 3, SUF_Z, 0x7B, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"rdgsbase", fs_gs_base_insn, 2, SUF_Z, 0x01, 0, 0, ONLY_64, CPU_FSGSBASE, 0, 0},
+ {"testl", test_insn, 20, SUF_L, 0, 0, 0, 0, CPU_386, 0, 0},
+ {"vsubsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"shrxl", vex_gpr_reg_rm_nds_0F_insn, 2, SUF_L, 0xF2, 0x38, 0xF7, ONLY_AVX, CPU_BMI2, 0, 0},
+ {"enter", enter_insn, 3, SUF_Z, 0, 0, 0, 0, CPU_186, 0, 0},
+ {"vpmacsdqh", vpma_insn, 1, SUF_Z, 0x9F, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vfnmadd213ss", vfma_ss_insn, 2, SUF_Z, 0xAD, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"setaeb", setcc_insn, 1, SUF_B, 0x03, 0, 0, 0, CPU_386, 0, 0},
+ {"vpgatherdq", gather_64x_64x_insn, 2, SUF_Z, 0x90, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"cmpxchg8b", cmpxchg8b_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_586, 0, 0},
+ {"cvttps2pi", cvt_mm_xmm64_insn, 2, SUF_Z, 0x2C, 0, 0, 0, CPU_SSE, 0, 0},
+ {"pmovmskb", pmovmskb_insn, 6, SUF_Z, 0, 0, 0, 0, CPU_MMX, CPU_P3, 0},
+ {"fdivp", farithp_insn, 3, SUF_Z, 0xF0, 0, 0, 0, CPU_FPU, 0, 0},
+ {"vcmpnle_uqsd", ssecmp_64_insn, 4, SUF_Z, 0x16, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cvtsd2si", cvt_rx_xmm64_insn, 4, SUF_Z, 0xF2, 0x2D, 0, 0, CPU_386, CPU_SSE2, 0},
+ {"vpcomgeq", vpcom_insn, 1, SUF_Z, 0xCF, 0x03, 0, 0, CPU_XOP, 0, 0},
+ {"vfnmadd132ss", vfma_ss_insn, 2, SUF_Z, 0x9D, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vpmacssdql", vpma_insn, 1, SUF_Z, 0x87, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vpunpcklqdq", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x6C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"sysenter", twobyte_insn, 1, SUF_Z, 0x0F, 0x34, 0, NOT_64, CPU_686, 0, 0},
+ {"popw", pop_insn, 23, SUF_W, 0, 0, 0, 0, 0, 0, 0},
+ {"lodsw", onebyte_insn, 1, SUF_Z, 0xAD, 0x10, 0, 0, 0, 0, 0},
+ {"vcmpgt_oqps", ssecmp_128_insn, 3, SUF_Z, 0x1E, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pmovmskbl", pmovmskb_insn, 6, SUF_L, 0, 0, 0, 0, CPU_MMX, CPU_P3, 0},
+ {"pinsrq", pinsrq_insn, 2, SUF_Z, 0, 0, 0, ONLY_64, CPU_SSE41, 0, 0},
+ {"movsl", onebyte_insn, 1, SUF_Z, 0xA5, 0x20, 0, 0, CPU_386, 0, 0},
+ {"vcmptrue_usps", ssecmp_128_insn, 3, SUF_Z, 0x1F, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"addr64", NULL, X86_ADDRSIZE>>8, 0x40, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"fsin", twobyte_insn, 1, SUF_Z, 0xD9, 0xFE, 0, 0, CPU_286, CPU_FPU, 0},
+ {"adoxl", vex_gpr_ndd_rm_0F38_insn, 2, SUF_L, 0xF3, 0xF6, 0, 0, CPU_ADX, 0, 0},
+ {"vpcomnequq", vpcom_insn, 1, SUF_Z, 0xEF, 0x05, 0, 0, CPU_XOP, 0, 0},
+ {"pfmax", now3d_insn, 1, SUF_Z, 0xA4, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"pfcmpge", now3d_insn, 1, SUF_Z, 0x90, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"loopnz", loop_insn, 8, SUF_Z, 0x00, 0, 0, 0, 0, 0, 0},
+ {"vcmpnle_uqss", ssecmp_32_insn, 4, SUF_Z, 0x16, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"setpeb", setcc_insn, 1, SUF_B, 0x0A, 0, 0, 0, CPU_386, 0, 0},
+ {"vextractps", extractps_insn, 2, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"jc", jcc_insn, 9, SUF_Z, 0x02, 0, 0, 0, 0, 0, 0},
+ {"vpcomltq", vpcom_insn, 1, SUF_Z, 0xCF, 0x00, 0, 0, CPU_XOP, 0, 0},
+ {"vfmsubsd", fma_128_m64_insn, 3, SUF_Z, 0x6F, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"movmskpd", movmsk_insn, 4, SUF_Z, 0x66, 0, 0, 0, CPU_SSE2, 0, 0},
+ {"vfmsubadd231ps", vfma_ps_insn, 2, SUF_Z, 0xB7, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vcmpeq_usps", ssecmp_128_insn, 3, SUF_Z, 0x18, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fistpl", fildstp_insn, 4, SUF_L, 0x03, 0x02, 0x07, 0, CPU_FPU, 0, 0},
+ {"fistpll", fbldstp_insn, 1, SUF_Z, 0x07, 0, 0, 0, CPU_FPU, 0, 0},
+ {"jnbe", jcc_insn, 9, SUF_Z, 0x07, 0, 0, 0, 0, 0, 0},
+ {"pmovsxwq", sse4m32_insn, 4, SUF_Z, 0x24, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vpcomgtub", vpcom_insn, 1, SUF_Z, 0xEC, 0x02, 0, 0, CPU_XOP, 0, 0},
+ {"unpcklps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x14, 0, 0, CPU_SSE, 0, 0},
+ {"btr", bittest_insn, 6, SUF_Z, 0xB3, 0x06, 0, 0, CPU_386, 0, 0},
+ {"cmovnsw", cmovcc_insn, 3, SUF_W, 0x09, 0, 0, 0, CPU_686, 0, 0},
+ {"sbbl", arith_insn, 22, SUF_L, 0x18, 0x03, 0, 0, CPU_386, 0, 0},
+ {"idivq", div_insn, 8, SUF_Q, 0x07, 0, 0, ONLY_64, 0, 0, 0},
+ {"strw", str_insn, 4, SUF_W, 0, 0, 0, 0, CPU_286, CPU_Prot, 0},
+ {"psignw", ssse3_insn, 5, SUF_Z, 0x09, 0, 0, 0, CPU_SSSE3, 0, 0},
+ {"vcvtsi2sdq", cvt_xmm_rmx_insn, 6, SUF_Q, 0xF2, 0x2A, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"setgb", setcc_insn, 1, SUF_B, 0x0F, 0, 0, 0, CPU_386, 0, 0},
+ {"vpextrw", pextrw_insn, 7, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmoval", cmovcc_insn, 3, SUF_L, 0x07, 0, 0, 0, CPU_686, 0, 0},
+ {"vpextrwq", pextrw_insn, 7, SUF_Q, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"sldtl", sldtmsw_insn, 6, SUF_L, 0x00, 0x00, 0, 0, CPU_386, 0, 0},
+ {"vcmpunordss", ssecmp_32_insn, 4, SUF_Z, 0x03, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"aesenc", aes_insn, 2, SUF_Z, 0x38, 0xDC, 0, 0, CPU_AVX, 0, 0},
+ {"pmaddubsw", ssse3_insn, 5, SUF_Z, 0x04, 0, 0, 0, CPU_SSSE3, 0, 0},
+ {"cvtsi2ss", cvt_xmm_rmx_insn, 6, SUF_Z, 0xF3, 0x2A, 0, 0, CPU_386, CPU_SSE, 0},
+ {"vphaddw", ssse3_insn, 5, SUF_Z, 0x01, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"repnz", NULL, X86_LOCKREP>>8, 0xF2, 0, 0, 0, 0, 0, 0, 0},
+ {"fidivrl", fiarith_insn, 2, SUF_L, 0x07, 0xDA, 0, 0, CPU_FPU, 0, 0},
+ {"fsqrt", twobyte_insn, 1, SUF_Z, 0xD9, 0xFA, 0, 0, CPU_FPU, 0, 0},
+ {"fsetpm", twobyte_insn, 1, SUF_Z, 0xDB, 0xE4, 0, 0, CPU_286, CPU_FPU, CPU_Obs},
+ {"insw", onebyte_insn, 1, SUF_Z, 0x6D, 0x10, 0, 0, 0, 0, 0},
+ {"setbeb", setcc_insn, 1, SUF_B, 0x06, 0, 0, 0, CPU_386, 0, 0},
+ {"vpsubb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xF8, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"rex64xy", NULL, X86_REX>>8, 0x4E, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"vpsrldq", pslrldq_insn, 4, SUF_Z, 0x03, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"xorq", arith_insn, 22, SUF_Q, 0x30, 0x06, 0, ONLY_64, 0, 0, 0},
+ {"punpcklbw", mmxsse2_insn, 2, SUF_Z, 0x60, 0, 0, 0, CPU_MMX, 0, 0},
+ {"rdtscp", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xF9, 0, CPU_686, CPU_AMD, CPU_Priv},
+ {"lfence", threebyte_insn, 1, SUF_Z, 0x0F, 0xAE, 0xE8, 0, CPU_P3, 0, 0},
+ {"vpcmpestri", sse4pcmpstr_insn, 1, SUF_Z, 0x61, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"divpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x5E, 0, 0, CPU_SSE2, 0, 0},
+ {"vcmpss", xmm_xmm32_imm_insn, 4, SUF_Z, 0xF3, 0xC2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fidivs", fiarith_insn, 2, SUF_S, 0x06, 0xDA, 0, 0, CPU_FPU, 0, 0},
+ {"pcmpeqq", sse4_insn, 2, SUF_Z, 0x29, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"setnbe", setcc_insn, 1, SUF_Z, 0x07, 0, 0, 0, CPU_386, 0, 0},
+ {"pshufb", ssse3_insn, 5, SUF_Z, 0x00, 0, 0, 0, CPU_SSSE3, 0, 0},
+ {"cmovgeq", cmovcc_insn, 3, SUF_Q, 0x0D, 0, 0, ONLY_64, CPU_686, 0, 0},
+ {"vpaddq", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xD4, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"clgi", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xDD, 0, CPU_SVM, 0, 0},
+ {"rcpps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x53, 0, 0, CPU_SSE, 0, 0},
+ {"cmovno", cmovcc_insn, 3, SUF_Z, 0x01, 0, 0, 0, CPU_686, 0, 0},
+ {"addss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x58, 0, 0, CPU_SSE, 0, 0},
+ {"vcmpneqss", ssecmp_32_insn, 4, SUF_Z, 0x04, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pavgusb", now3d_insn, 1, SUF_Z, 0xBF, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"vfmadd213ps", vfma_ps_insn, 2, SUF_Z, 0xA8, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vpcomneqw", vpcom_insn, 1, SUF_Z, 0xCD, 0x05, 0, 0, CPU_XOP, 0, 0},
+ {"vpmaxsb", ssse3_insn, 5, SUF_Z, 0x3C, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pminsw", mmxsse2_insn, 2, SUF_Z, 0xEA, 0, 0, 0, CPU_MMX, CPU_P3, 0},
+ {"vcmpnge_uqpd", ssecmp_128_insn, 3, SUF_Z, 0x19, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcomtrueud", vpcom_insn, 1, SUF_Z, 0xEE, 0x07, 0, 0, CPU_XOP, 0, 0},
+ {"setpe", setcc_insn, 1, SUF_Z, 0x0A, 0, 0, 0, CPU_386, 0, 0},
+ {"cmovnlw", cmovcc_insn, 3, SUF_W, 0x0D, 0, 0, 0, CPU_686, 0, 0},
+ {"cbw", onebyte_insn, 1, SUF_Z, 0x98, 0x10, 0, 0, 0, 0, 0},
+ {"vcmpge_oqss", ssecmp_32_insn, 4, SUF_Z, 0x1D, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"jpo", jcc_insn, 9, SUF_Z, 0x0B, 0, 0, 0, 0, 0, 0},
+ {"leavel", onebyte_insn, 1, SUF_Z, 0xC9, 0x00, 0x40, 0, CPU_186, 0, 0},
+ {"mpsadbw", sse4imm_insn, 2, SUF_Z, 0x42, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vcvttsd2si", cvt_rx_xmm64_insn, 4, SUF_Z, 0xF2, 0x2C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vminps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x5D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmpnleps", ssecmp_128_insn, 3, SUF_Z, 0x06, 0, 0, 0, CPU_SSE, 0, 0},
+ {"blendvpd", sse4xmm0_insn, 2, SUF_Z, 0x15, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vaddss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x58, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcomltuw", vpcom_insn, 1, SUF_Z, 0xED, 0x00, 0, 0, CPU_XOP, 0, 0},
+ {"orw", arith_insn, 22, SUF_W, 0x08, 0x01, 0, 0, 0, 0, 0},
+ {"adword", NULL, X86_ADDRSIZE>>8, 0x20, 0, 0, 0, 0, 0, 0, 0},
+ {"vprotb", vprot_insn, 3, SUF_Z, 0x00, 0, 0, 0, CPU_XOP, 0, 0},
+ {"pclmulhqhqdq", pclmulqdq_fixed_insn, 2, SUF_Z, 0x11, 0, 0, 0, CPU_AVX, 0, 0},
+ {"shrdq", shlrd_insn, 9, SUF_Q, 0xAC, 0, 0, ONLY_64, CPU_386, 0, 0},
+ {"vminss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpmaxub", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xDE, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcomltud", vpcom_insn, 1, SUF_Z, 0xEE, 0x00, 0, 0, CPU_XOP, 0, 0},
+ {"vpaddusw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xDD, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"movsq", onebyte_insn, 1, SUF_Z, 0xA5, 0x40, 0, ONLY_64, 0, 0, 0},
+ {"subsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5C, 0, 0, CPU_SSE2, 0, 0},
+ {"vfmaddsubpd", fma_128_256_insn, 4, SUF_Z, 0x5D, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"cvtdq2ps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x5B, 0, 0, CPU_SSE2, 0, 0},
+ {"prefetch", twobytemem_insn, 1, SUF_Z, 0x00, 0x0F, 0x0D, 0, CPU_3DNow, 0, 0},
+ {"vaesenc", aes_insn, 2, SUF_Z, 0x38, 0xDC, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"shl", shift_insn, 16, SUF_Z, 0x04, 0, 0, 0, 0, 0, 0},
+ {"vcmpunord_spd", ssecmp_128_insn, 3, SUF_Z, 0x13, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"bsfw", bsfr_insn, 3, SUF_W, 0xBC, 0, 0, 0, CPU_386, 0, 0},
+ {"bswap", bswap_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_486, 0, 0},
+ {"vfmadd231sd", vfma_sd_insn, 2, SUF_Z, 0xB9, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"fistps", fildstp_insn, 4, SUF_S, 0x03, 0x02, 0x07, 0, CPU_FPU, 0, 0},
+ {"fdivs", farith_insn, 7, SUF_S, 0xF8, 0xF0, 0x06, 0, CPU_FPU, 0, 0},
+ {"pextrq", pextrq_insn, 1, SUF_Z, 0, 0, 0, ONLY_64, CPU_SSE41, 0, 0},
+ {"adcl", arith_insn, 22, SUF_L, 0x10, 0x02, 0, 0, CPU_386, 0, 0},
+ {"vpmacsdql", vpma_insn, 1, SUF_Z, 0x97, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vpcomeqq", vpcom_insn, 1, SUF_Z, 0xCF, 0x04, 0, 0, CPU_XOP, 0, 0},
+ {"tzmskq", xop_gpr_reg_rm_09_insn, 2, SUF_Q, 0x01, 0x04, 0, ONLY_64, CPU_TBM, 0, 0},
+ {"rcl", shift_insn, 16, SUF_Z, 0x02, 0, 0, 0, 0, 0, 0},
+ {"vsqrtsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x51, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cdqe", onebyte_insn, 1, SUF_Z, 0x98, 0x40, 0, ONLY_64, 0, 0, 0},
+ {"negq", f6_insn, 4, SUF_Q, 0x03, 0, 0, ONLY_64, 0, 0, 0},
+ {"pextrb", pextrb_insn, 3, SUF_Z, 0, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"movzbq", movszx_insn, 5, SUF_B, 0xB6, 0, 0, ONLY_64, CPU_386, 0, 0},
+ {"vcmpngtps", ssecmp_128_insn, 3, SUF_Z, 0x0A, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcomgeb", vpcom_insn, 1, SUF_Z, 0xCC, 0x03, 0, 0, CPU_XOP, 0, 0},
+ {"lea", lea_insn, 3, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
+ {"invd", twobyte_insn, 1, SUF_Z, 0x0F, 0x08, 0, 0, CPU_486, CPU_Priv, 0},
+ {"sarxl", vex_gpr_reg_rm_nds_0F_insn, 2, SUF_L, 0xF3, 0x38, 0xF7, ONLY_AVX, CPU_BMI2, 0, 0},
+ {"movdqu", movau_insn, 6, SUF_Z, 0xF3, 0x6F, 0x10, 0, CPU_SSE2, 0, 0},
+ {"vdivsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5E, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmpneqpd", ssecmp_128_insn, 3, SUF_Z, 0x04, 0x66, 0, 0, CPU_SSE, 0, 0},
+ {"xcryptecb", padlock_insn, 1, SUF_Z, 0xC8, 0xF3, 0xA7, 0, CPU_PadLock, 0, 0},
+ {"shll", shift_insn, 16, SUF_L, 0x04, 0, 0, 0, CPU_386, 0, 0},
+ {"int", int_insn, 1, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
+ {"wrfsbase", fs_gs_base_insn, 2, SUF_Z, 0x02, 0, 0, ONLY_64, CPU_FSGSBASE, 0, 0},
+ {"shufps", xmm_xmm128_imm_insn, 1, SUF_Z, 0x00, 0xC6, 0, 0, CPU_SSE, 0, 0},
+ {"subpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x5C, 0, 0, CPU_SSE2, 0, 0},
+ {"vcvtpd2psy", avx_cvt_xmm128_y_insn, 1, SUF_Z, 0x66, 0x5A, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmovnew", cmovcc_insn, 3, SUF_W, 0x05, 0, 0, 0, CPU_686, 0, 0},
+ {"crc32", crc32_insn, 5, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_SSE42, 0},
+ {"vmovapd", movau_insn, 6, SUF_Z, 0x66, 0x28, 0x01, ONLY_AVX, CPU_AVX, 0, 0},
+ {"rdrand", rdrand_insn, 3, SUF_Z, 0x06, 0, 0, 0, CPU_RDRAND, 0, 0},
+ {"cmovnbew", cmovcc_insn, 3, SUF_W, 0x07, 0, 0, 0, CPU_686, 0, 0},
+ {"invvpidl", eptvpid_insn, 2, SUF_L, 0x01, 0, 0, NOT_64, CPU_386, CPU_EPTVPID, 0},
+ {"ljmp", ljmpcall_insn, 7, SUF_Z, 0x05, 0xEA, 0, 0, 0, 0, 0},
+ {"vcmpeqpd", ssecmp_128_insn, 3, SUF_Z, 0x00, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"popfl", onebyte_insn, 1, SUF_Z, 0x9D, 0x20, 0, NOT_64, CPU_386, 0, 0},
+ {"wrgsbase", fs_gs_base_insn, 2, SUF_Z, 0x03, 0, 0, ONLY_64, CPU_FSGSBASE, 0, 0},
+ {"lodsb", onebyte_insn, 1, SUF_Z, 0xAC, 0x00, 0, 0, 0, 0, 0},
+ {"vcmpgess", ssecmp_32_insn, 4, SUF_Z, 0x0D, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"aesenclast", aes_insn, 2, SUF_Z, 0x38, 0xDD, 0, 0, CPU_AVX, 0, 0},
+ {"cmovel", cmovcc_insn, 3, SUF_L, 0x04, 0, 0, 0, CPU_686, 0, 0},
+ {"vpsignd", ssse3_insn, 5, SUF_Z, 0x0A, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"stosb", onebyte_insn, 1, SUF_Z, 0xAA, 0x00, 0, 0, 0, 0, 0},
+ {"smovb", onebyte_insn, 1, SUF_Z, 0xA4, 0x00, 0, 0, 0, 0, 0},
+ {"vcmpeqss", ssecmp_32_insn, 4, SUF_Z, 0x00, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpandn", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xDF, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vmovmskpsl", movmsk_insn, 4, SUF_L, 0x00, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vmovntps", movnt_insn, 2, SUF_Z, 0x00, 0x2B, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcvtpd2psx", avx_cvt_xmm128_x_insn, 1, SUF_Z, 0x66, 0x5A, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmpordps", ssecmp_128_insn, 3, SUF_Z, 0x07, 0, 0, 0, CPU_SSE, 0, 0},
+ {"vpaddd", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xFE, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fptan", twobyte_insn, 1, SUF_Z, 0xD9, 0xF2, 0, 0, CPU_FPU, 0, 0},
+ {"shldw", shlrd_insn, 9, SUF_W, 0xA4, 0, 0, 0, CPU_386, 0, 0},
+ {"outsl", onebyte_insn, 1, SUF_Z, 0x6F, 0x20, 0, 0, CPU_386, 0, 0},
+ {"vmovmskpsq", movmsk_insn, 4, SUF_Q, 0x00, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fldcw", fldnstcw_insn, 1, SUF_Z, 0x05, 0, 0, 0, CPU_FPU, 0, 0},
+ {"vcmpord_ssd", ssecmp_64_insn, 4, SUF_Z, 0x17, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfnmsub231sd", vfma_sd_insn, 2, SUF_Z, 0xBF, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"pmullw", mmxsse2_insn, 2, SUF_Z, 0xD5, 0, 0, 0, CPU_MMX, 0, 0},
+ {"jno", jcc_insn, 9, SUF_Z, 0x01, 0, 0, 0, 0, 0, 0},
+ {"vprotq", vprot_insn, 3, SUF_Z, 0x03, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vcmpneq_ospd", ssecmp_128_insn, 3, SUF_Z, 0x1C, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"sarb", shift_insn, 16, SUF_B, 0x07, 0, 0, 0, 0, 0, 0},
+ {"aaa", onebyte_insn, 1, SUF_Z, 0x37, 0, 0, NOT_64, 0, 0, 0},
+ {"psubd", mmxsse2_insn, 2, SUF_Z, 0xFA, 0, 0, 0, CPU_MMX, 0, 0},
+ {"cmovpew", cmovcc_insn, 3, SUF_W, 0x0A, 0, 0, 0, CPU_686, 0, 0},
+ {"blci", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x02, 0x06, 0, 0, CPU_386, CPU_TBM, 0},
+ {"cmpnltsd", ssecmp_64_insn, 4, SUF_Z, 0x05, 0xF2, 0, 0, CPU_SSE2, 0, 0},
+ {"rex64x", NULL, X86_REX>>8, 0x4C, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"blsr", vex_gpr_ndd_rm_0F38_regext_insn, 2, SUF_Z, 0x00, 0xF3, 0x01, ONLY_AVX, CPU_BMI1, 0, 0},
+ {"vaeskeygenassist", aes_imm_insn, 1, SUF_Z, 0x3A, 0xDF, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmpnltss", ssecmp_32_insn, 4, SUF_Z, 0x05, 0xF3, 0, 0, CPU_SSE, 0, 0},
+ {"cwde", onebyte_insn, 1, SUF_Z, 0x98, 0x20, 0, 0, CPU_386, 0, 0},
+ {"fcmovne", fcmovcc_insn, 1, SUF_Z, 0xDB, 0xC8, 0, 0, CPU_686, CPU_FPU, 0},
+ {"sscab", onebyte_insn, 1, SUF_Z, 0xAE, 0x00, 0, 0, 0, 0, 0},
+ {"vphaddbq", vphaddsub_insn, 1, SUF_Z, 0xC3, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vcvttss2sil", cvt_rx_xmm32_insn, 4, SUF_L, 0xF3, 0x2C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"roundsd", sse4m64imm_insn, 4, SUF_Z, 0x0B, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"pfacc", now3d_insn, 1, SUF_Z, 0xAE, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"fsubl", farith_insn, 7, SUF_L, 0xE8, 0xE0, 0x04, 0, CPU_FPU, 0, 0},
+ {"invlpg", twobytemem_insn, 1, SUF_Z, 0x07, 0x0F, 0x01, 0, CPU_486, CPU_Priv, 0},
+ {"pextl", vex_gpr_reg_nds_rm_0F_insn, 2, SUF_L, 0xF3, 0x38, 0xF5, ONLY_AVX, CPU_BMI2, 0, 0},
+ {"fldenvl", onebytemem_insn, 1, SUF_L, 0x04, 0xD9, 0, 0, CPU_FPU, 0, 0},
+ {"lretq", retnf_insn, 6, SUF_Q, 0xCA, 0x40, 0, ONLY_64, 0, 0, 0},
+ {"addr16", NULL, X86_ADDRSIZE>>8, 0x10, 0, 0, 0, 0, 0, 0, 0},
+ {"cmovncl", cmovcc_insn, 3, SUF_L, 0x03, 0, 0, 0, CPU_686, 0, 0},
+ {"movzbw", movszx_insn, 5, SUF_B, 0xB6, 0, 0, 0, CPU_386, 0, 0},
+ {"pmvlzb", cyrixmmx_insn, 1, SUF_Z, 0x5B, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
+ {"boundw", bound_insn, 2, SUF_W, 0, 0, 0, NOT_64, CPU_186, 0, 0},
+ {"vroundsd", sse4m64imm_insn, 4, SUF_Z, 0x0B, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"loopz", loop_insn, 8, SUF_Z, 0x01, 0, 0, 0, 0, 0, 0},
+ {"roundpd", sse4imm_insn, 2, SUF_Z, 0x09, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"sfence", threebyte_insn, 1, SUF_Z, 0x0F, 0xAE, 0xF8, 0, CPU_P3, 0, 0},
+ {"vpcomgew", vpcom_insn, 1, SUF_Z, 0xCD, 0x03, 0, 0, CPU_XOP, 0, 0},
+ {"vpcmpistrm", sse4pcmpstr_insn, 1, SUF_Z, 0x62, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"repz", NULL, X86_LOCKREP>>8, 0xF3, 0, 0, 0, 0, 0, 0, 0},
+ {"iretq", onebyte_insn, 1, SUF_Z, 0xCF, 0x40, 0, ONLY_64, 0, 0, 0},
+ {"pclmullqhqdq", pclmulqdq_fixed_insn, 2, SUF_Z, 0x10, 0, 0, 0, CPU_AVX, 0, 0},
+ {"vcmplt_oqss", ssecmp_32_insn, 4, SUF_Z, 0x11, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpeq_osps", ssecmp_128_insn, 3, SUF_Z, 0x10, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmpw", arith_insn, 22, SUF_W, 0x38, 0x07, 0, 0, 0, 0, 0},
+ {"adox", vex_gpr_ndd_rm_0F38_insn, 2, SUF_Z, 0xF3, 0xF6, 0, 0, CPU_ADX, 0, 0},
+ {"rexyz", NULL, X86_REX>>8, 0x43, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"rorxq", vex_gpr_reg_rm_0F_imm8_insn, 2, SUF_Q, 0xF2, 0x3A, 0xF0, ONLY_64|ONLY_AVX, CPU_BMI2, 0, 0},
+ {"movsxb", movszx_insn, 5, SUF_B, 0xBE, 0, 0, 0, CPU_386, 0, 0},
+ {"paddsw", mmxsse2_insn, 2, SUF_Z, 0xED, 0, 0, 0, CPU_MMX, 0, 0},
+ {"lldtw", prot286_insn, 1, SUF_W, 0x02, 0x00, 0, 0, CPU_286, CPU_Priv, CPU_Prot},
+ {"vpcomneuw", vpcom_insn, 1, SUF_Z, 0xED, 0x05, 0, 0, CPU_XOP, 0, 0},
+ {"vcmpnlesd", ssecmp_64_insn, 4, SUF_Z, 0x06, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfrczss", vfrczss_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_XOP, 0, 0},
+ {"movw", mov_insn, 69, SUF_W, 0, 0, 0, 0, 0, 0, 0},
+ {"crc32q", crc32_insn, 5, SUF_Q, 0, 0, 0, ONLY_64, CPU_SSE42, 0, 0},
+ {"vextracti128", vextractif128_insn, 1, SUF_Z, 0x39, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"subps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x5C, 0, 0, CPU_SSE, 0, 0},
+ {"inb", in_insn, 12, SUF_B, 0, 0, 0, 0, 0, 0, 0},
+ {"vfnmsub231ps", vfma_ps_insn, 2, SUF_Z, 0xBE, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vphaddubw", vphaddsub_insn, 1, SUF_Z, 0xD1, 0, 0, 0, CPU_XOP, 0, 0},
+ {"pmachriw", pmachriw_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
+ {"vmpsadbw", sse4imm_256avx2_insn, 4, SUF_Z, 0x42, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmovngew", cmovcc_insn, 3, SUF_W, 0x0C, 0, 0, 0, CPU_686, 0, 0},
+ {"popcntq", cnt_insn, 3, SUF_Q, 0xB8, 0, 0, ONLY_64, CPU_SSE42, 0, 0},
+ {"insertps", insertps_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"cmpxchgl", cmpxchgxadd_insn, 4, SUF_L, 0xB0, 0, 0, 0, CPU_486, 0, 0},
+ {"vcomiss", avx_xmm_xmm32_insn, 2, SUF_Z, 0x00, 0x2F, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcmpgtd", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"loopzw", loopw_insn, 4, SUF_Z, 0x01, 0x10, 0, NOT_64, 0, 0, 0},
+ {"retw", retnf_insn, 6, SUF_Z, 0xC2, 0x10, 0, 0, 0, 0, 0},
+ {"pavgb", mmxsse2_insn, 2, SUF_Z, 0xE0, 0, 0, 0, CPU_MMX, CPU_P3, 0},
+ {"loopnel", loopl_insn, 4, SUF_Z, 0x00, 0x20, 0, 0, 0, 0, 0},
+ {"vpsrld", vpshift_insn, 8, SUF_Z, 0xD2, 0x72, 0x02, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcvtpd2dqx", avx_cvt_xmm128_x_insn, 1, SUF_Z, 0xF2, 0xE6, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"ficomps", fiarith_insn, 2, SUF_S, 0x03, 0xDA, 0, 0, CPU_FPU, 0, 0},
+ {"fisttps", fildstp_insn, 4, SUF_S, 0x01, 0x00, 0x01, 0, CPU_SSE3, 0, 0},
+ {"vandpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x54, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"haddpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x7C, 0, 0, CPU_SSE3, 0, 0},
+ {"bsfl", bsfr_insn, 3, SUF_L, 0xBC, 0, 0, 0, CPU_386, 0, 0},
+ {"rolq", shift_insn, 16, SUF_Q, 0x00, 0, 0, ONLY_64, 0, 0, 0},
+ {"vcmpneq_ussd", ssecmp_64_insn, 4, SUF_Z, 0x14, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pinsrwl", pinsrw_insn, 9, SUF_L, 0, 0, 0, 0, CPU_MMX, CPU_P3, 0},
+ {"pmovzxwd", sse4m64_insn, 4, SUF_Z, 0x33, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vcmpgt_oqsd", ssecmp_64_insn, 4, SUF_Z, 0x1E, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pslld", pshift_insn, 4, SUF_Z, 0xF2, 0x72, 0x06, 0, CPU_MMX, 0, 0},
+ {"bextr", bextr_insn, 4, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_386, CPU_BMI1, 0},
+ {"movsbl", movszx_insn, 5, SUF_B, 0xBE, 0, 0, 0, CPU_386, 0, 0},
+ {"vpcomuq", vpcom_imm_insn, 1, SUF_Z, 0xEF, 0, 0, 0, CPU_XOP, 0, 0},
+ {"pcmpestrm", sse4pcmpstr_insn, 1, SUF_Z, 0x60, 0, 0, 0, CPU_SSE42, 0, 0},
+ {"pfcmpgt", now3d_insn, 1, SUF_Z, 0xA0, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"ltrw", prot286_insn, 1, SUF_W, 0x03, 0x00, 0, 0, CPU_286, CPU_Priv, CPU_Prot},
+ {"paddusw", mmxsse2_insn, 2, SUF_Z, 0xDD, 0, 0, 0, CPU_MMX, 0, 0},
+ {"vpmacsswd", vpma_insn, 1, SUF_Z, 0x86, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vfnmsubsd", fma_128_m64_insn, 3, SUF_Z, 0x7F, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"loopew", loopw_insn, 4, SUF_Z, 0x01, 0x10, 0, NOT_64, 0, 0, 0},
+ {"vmaskmovdqu", maskmovdqu_insn, 1, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cvtsi2sdq", cvt_xmm_rmx_insn, 6, SUF_Q, 0xF2, 0x2A, 0, ONLY_64, CPU_SSE2, 0, 0},
+ {"fisubs", fiarith_insn, 2, SUF_S, 0x04, 0xDA, 0, 0, CPU_FPU, 0, 0},
+ {"cmpeqss", ssecmp_32_insn, 4, SUF_Z, 0x00, 0xF3, 0, 0, CPU_SSE, 0, 0},
+ {"cqto", onebyte_insn, 1, SUF_Z, 0x99, 0x40, 0, ONLY_64, 0, 0, 0},
+ {"vcmpunordpd", ssecmp_128_insn, 3, SUF_Z, 0x03, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"setna", setcc_insn, 1, SUF_Z, 0x06, 0, 0, 0, CPU_386, 0, 0},
+ {"cvtdq2pd", xmm_xmm64_insn, 4, SUF_Z, 0xF3, 0xE6, 0, 0, CPU_SSE2, 0, 0},
+ {"andnpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x55, 0, 0, CPU_SSE2, 0, 0},
+ {"vcmpeq_uqps", ssecmp_128_insn, 3, SUF_Z, 0x08, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcvtsi2ss", cvt_xmm_rmx_insn, 6, SUF_Z, 0xF3, 0x2A, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"psrld", pshift_insn, 4, SUF_Z, 0xD2, 0x72, 0x02, 0, CPU_MMX, 0, 0},
+ {"outl", out_insn, 12, SUF_L, 0, 0, 0, 0, CPU_386, 0, 0},
+ {"vcvttss2siq", cvt_rx_xmm32_insn, 4, SUF_Q, 0xF3, 0x2C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"paddq", mmxsse2_insn, 2, SUF_Z, 0xD4, 0, 0, 0, CPU_MMX, 0, 0},
+ {"cmpneqss", ssecmp_32_insn, 4, SUF_Z, 0x04, 0xF3, 0, 0, CPU_SSE, 0, 0},
+ {"vfrczsd", vfrczsd_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_XOP, 0, 0},
+ {"xsaveopt64", xsaveopt64_insn, 1, SUF_Z, 0x06, 0x0F, 0xAE, ONLY_64, CPU_XSAVEOPT, 0, 0},
+ {"fnstsww", fnstsw_insn, 2, SUF_W, 0, 0, 0, 0, CPU_FPU, 0, 0},
+ {"vfmaddss", fma_128_m32_insn, 3, SUF_Z, 0x6A, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"fsubs", farith_insn, 7, SUF_S, 0xE8, 0xE0, 0x04, 0, CPU_FPU, 0, 0},
+ {"vpshufd", xmm_xmm128_imm_256avx2_insn, 2, SUF_Z, 0x66, 0x70, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fstpl", fstp_insn, 4, SUF_L, 0, 0, 0, 0, CPU_FPU, 0, 0},
+ {"vcmpeq_ussd", ssecmp_64_insn, 4, SUF_Z, 0x18, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"jle", jcc_insn, 9, SUF_Z, 0x0E, 0, 0, 0, 0, 0, 0},
+ {"sidtq", twobytemem_insn, 1, SUF_Q, 0x01, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
+ {"vpshlb", amd_vpshift_insn, 2, SUF_Z, 0x94, 0, 0, 0, CPU_XOP, 0, 0},
+ {"pinsrwq", pinsrw_insn, 9, SUF_Q, 0, 0, 0, ONLY_64, CPU_MMX, CPU_P3, 0},
+ {"js", jcc_insn, 9, SUF_Z, 0x08, 0, 0, 0, 0, 0, 0},
+ {"andnq", vex_gpr_reg_nds_rm_0F_insn, 2, SUF_Q, 0x00, 0x38, 0xF2, ONLY_64|ONLY_AVX, CPU_BMI1, 0, 0},
+ {"cmpsl", onebyte_insn, 1, SUF_Z, 0xA7, 0x20, 0, 0, CPU_386, 0, 0},
+ {"vmovlps", movhlp_insn, 3, SUF_Z, 0x00, 0x12, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pabsd", ssse3_insn, 5, SUF_Z, 0x1E, 0, 0, 0, CPU_SSSE3, 0, 0},
+ {"vpcomequd", vpcom_insn, 1, SUF_Z, 0xEE, 0x04, 0, 0, CPU_XOP, 0, 0},
+ {"salw", shift_insn, 16, SUF_W, 0x04, 0, 0, 0, 0, 0, 0},
+ {"movntss", movntss_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SSE4a, 0, 0},
+ {"movlhps", movhllhps_insn, 2, SUF_Z, 0x16, 0, 0, 0, CPU_SSE, 0, 0},
+ {"vcmpltps", ssecmp_128_insn, 3, SUF_Z, 0x01, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmovoq", cmovcc_insn, 3, SUF_Q, 0x00, 0, 0, ONLY_64, CPU_686, 0, 0},
+ {"rex64xz", NULL, X86_REX>>8, 0x4D, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"vfmsubadd132ps", vfma_ps_insn, 2, SUF_Z, 0x97, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vcmplt_oqsd", ssecmp_64_insn, 4, SUF_Z, 0x11, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmovnzl", cmovcc_insn, 3, SUF_L, 0x05, 0, 0, 0, CPU_686, 0, 0},
+ {"cvttss2sil", cvt_rx_xmm32_insn, 4, SUF_L, 0xF3, 0x2C, 0, 0, CPU_386, CPU_SSE, 0},
+ {"pand", mmxsse2_insn, 2, SUF_Z, 0xDB, 0, 0, 0, CPU_MMX, 0, 0},
+ {"packuswb", mmxsse2_insn, 2, SUF_Z, 0x67, 0, 0, 0, CPU_MMX, 0, 0},
+ {"rcrw", shift_insn, 16, SUF_W, 0x03, 0, 0, 0, 0, 0, 0},
+ {"loadall", twobyte_insn, 1, SUF_Z, 0x0F, 0x07, 0, 0, CPU_386, CPU_Undoc, 0},
+ {"vprotd", vprot_insn, 3, SUF_Z, 0x02, 0, 0, 0, CPU_XOP, 0, 0},
+ {"popcntl", cnt_insn, 3, SUF_L, 0xB8, 0, 0, 0, CPU_SSE42, 0, 0},
+ {"xsave", twobytemem_insn, 1, SUF_Z, 0x04, 0x0F, 0xAE, 0, CPU_386, CPU_XSAVE, 0},
+ {"addq", arith_insn, 22, SUF_Q, 0x00, 0x00, 0, ONLY_64, 0, 0, 0},
+ {"fldlg2", twobyte_insn, 1, SUF_Z, 0xD9, 0xEC, 0, 0, CPU_FPU, 0, 0},
+ {"fwait", onebyte_insn, 1, SUF_Z, 0x9B, 0, 0, 0, CPU_FPU, 0, 0},
+ {"cvtsi2sdl", cvt_xmm_rmx_insn, 6, SUF_L, 0xF2, 0x2A, 0, 0, CPU_SSE2, 0, 0},
+ {"cmovl", cmovcc_insn, 3, SUF_Z, 0x0C, 0, 0, 0, CPU_686, 0, 0},
+ {"rol", shift_insn, 16, SUF_Z, 0x00, 0, 0, 0, 0, 0, 0},
+ {"tzmsk", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x01, 0x04, 0, 0, CPU_386, CPU_TBM, 0},
+ {"loope", loop_insn, 8, SUF_Z, 0x01, 0, 0, 0, 0, 0, 0},
+ {"decl", incdec_insn, 6, SUF_L, 0x48, 0x01, 0, 0, CPU_386, 0, 0},
+ {"shlb", shift_insn, 16, SUF_B, 0x04, 0, 0, 0, 0, 0, 0},
+ {"cmpsw", onebyte_insn, 1, SUF_Z, 0xA7, 0x10, 0, 0, 0, 0, 0},
+ {"inc", incdec_insn, 6, SUF_Z, 0x40, 0x00, 0, 0, 0, 0, 0},
+ {"vpshlw", amd_vpshift_insn, 2, SUF_Z, 0x95, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vpcomneqd", vpcom_insn, 1, SUF_Z, 0xCE, 0x05, 0, 0, CPU_XOP, 0, 0},
+ {"vunpckhps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x15, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"movups", movau_insn, 6, SUF_Z, 0x00, 0x10, 0x01, 0, CPU_SSE, 0, 0},
+ {"smint", twobyte_insn, 1, SUF_Z, 0x0F, 0x38, 0, 0, CPU_686, CPU_Cyrix, 0},
+ {"addsubpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0xD0, 0, 0, CPU_SSE3, 0, 0},
+ {"sha1msg1", intel_SHA1MSG1_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SHA, 0, 0},
+ {"pmovzxdq", sse4m64_insn, 4, SUF_Z, 0x35, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vaddps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x58, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"in", in_insn, 12, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
+ {"setnpb", setcc_insn, 1, SUF_B, 0x0B, 0, 0, 0, CPU_386, 0, 0},
+ {"sete", setcc_insn, 1, SUF_Z, 0x04, 0, 0, 0, CPU_386, 0, 0},
+ {"vcmpnlt_uqsd", ssecmp_64_insn, 4, SUF_Z, 0x15, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfmsub132sd", vfma_sd_insn, 2, SUF_Z, 0x9B, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"cmovnae", cmovcc_insn, 3, SUF_Z, 0x02, 0, 0, 0, CPU_686, 0, 0},
+ {"xcryptcfb", padlock_insn, 1, SUF_Z, 0xE0, 0xF3, 0xA7, 0, CPU_PadLock, 0, 0},
+ {"vcvtss2siq", cvt_rx_xmm32_insn, 4, SUF_Q, 0xF3, 0x2D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fcmovnb", fcmovcc_insn, 1, SUF_Z, 0xDB, 0xC0, 0, 0, CPU_686, CPU_FPU, 0},
+ {"vfmadd213ss", vfma_ss_insn, 2, SUF_Z, 0xA9, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"pushfw", onebyte_insn, 1, SUF_Z, 0x9C, 0x10, 0x40, 0, 0, 0, 0},
+ {"vcmpless", ssecmp_32_insn, 4, SUF_Z, 0x02, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"sidtl", twobytemem_insn, 1, SUF_L, 0x01, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
+ {"vpcomfalsew", vpcom_insn, 1, SUF_Z, 0xCD, 0x06, 0, 0, CPU_XOP, 0, 0},
+ {"xcryptctr", padlock_insn, 1, SUF_Z, 0xD8, 0xF3, 0xA7, 0, CPU_PadLock, 0, 0},
+ {"fidiv", fiarith_insn, 2, SUF_Z, 0x06, 0xDA, 0, 0, CPU_FPU, 0, 0},
+ {"cvtpi2pd", cvt_xmm_mm_ss_insn, 1, SUF_Z, 0x66, 0x2A, 0, 0, CPU_SSE2, 0, 0},
+ {"fxrstorq", twobytemem_insn, 1, SUF_Q, 0x01, 0x0F, 0xAE, 0, CPU_686, CPU_FPU, 0},
+ {"aas", onebyte_insn, 1, SUF_Z, 0x3F, 0, 0, NOT_64, 0, 0, 0},
+ {"pfrsqrt", now3d_insn, 1, SUF_Z, 0x97, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"cmovpeq", cmovcc_insn, 3, SUF_Q, 0x0A, 0, 0, ONLY_64, CPU_686, 0, 0},
+ {"vaesenclast", aes_insn, 2, SUF_Z, 0x38, 0xDD, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vmreadl", vmxmemrd_insn, 2, SUF_L, 0, 0, 0, NOT_64, CPU_P4, 0, 0},
+ {"vpcomub", vpcom_imm_insn, 1, SUF_Z, 0xEC, 0, 0, 0, CPU_XOP, 0, 0},
+ {"movupd", movau_insn, 6, SUF_Z, 0x66, 0x10, 0x01, 0, CPU_SSE2, 0, 0},
+ {"btcw", bittest_insn, 6, SUF_W, 0xBB, 0x07, 0, 0, CPU_386, 0, 0},
+ {"popfq", onebyte_insn, 1, SUF_Z, 0x9D, 0x40, 0x40, ONLY_64, 0, 0, 0},
+ {"pmulhrw", now3d_insn, 1, SUF_Z, 0xB7, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"psubsw", mmxsse2_insn, 2, SUF_Z, 0xE9, 0, 0, 0, CPU_MMX, 0, 0},
+ {"lsl", larlsl_insn, 6, SUF_Z, 0x03, 0, 0, 0, CPU_286, CPU_Prot, 0},
+ {"rdtsc", twobyte_insn, 1, SUF_Z, 0x0F, 0x31, 0, 0, CPU_586, 0, 0},
+ {"scasw", onebyte_insn, 1, SUF_Z, 0xAF, 0x10, 0, 0, 0, 0, 0},
+ {"pmvnzb", cyrixmmx_insn, 1, SUF_Z, 0x5A, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
+ {"pmulhw", mmxsse2_insn, 2, SUF_Z, 0xE5, 0, 0, 0, CPU_MMX, 0, 0},
+ {"sha1rnds4", intel_SHA1RNDS4_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SHA, 0, 0},
+ {"jb", jcc_insn, 9, SUF_Z, 0x02, 0, 0, 0, 0, 0, 0},
+ {"blsi", vex_gpr_ndd_rm_0F38_regext_insn, 2, SUF_Z, 0x00, 0xF3, 0x03, ONLY_AVX, CPU_BMI1, 0, 0},
+ {"vfmaddsub213ps", vfma_ps_insn, 2, SUF_Z, 0xA6, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vpcmpeqw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x75, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfmaddsd", fma_128_m64_insn, 3, SUF_Z, 0x6B, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"vcmpordpd", ssecmp_128_insn, 3, SUF_Z, 0x07, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpclmulhqhqdq", pclmulqdq_fixed_insn, 2, SUF_Z, 0x11, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"setne", setcc_insn, 1, SUF_Z, 0x05, 0, 0, 0, CPU_386, 0, 0},
+ {"pmaddwd", mmxsse2_insn, 2, SUF_Z, 0xF5, 0, 0, 0, CPU_MMX, 0, 0},
+ {"vpcomneb", vpcom_insn, 1, SUF_Z, 0xCC, 0x05, 0, 0, CPU_XOP, 0, 0},
+ {"pclmulhqlqdq", pclmulqdq_fixed_insn, 2, SUF_Z, 0x01, 0, 0, 0, CPU_AVX, 0, 0},
+ {"xaddb", cmpxchgxadd_insn, 4, SUF_B, 0xC0, 0, 0, 0, CPU_486, 0, 0},
+ {"cmpps", xmm_xmm128_imm_insn, 1, SUF_Z, 0x00, 0xC2, 0, 0, CPU_SSE, 0, 0},
+ {"movntq", movntq_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SSE, 0, 0},
+ {"idivw", div_insn, 8, SUF_W, 0x07, 0, 0, 0, 0, 0, 0},
+ {"push", push_insn, 35, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
+ {"vfmsub231pd", vfma_pd_insn, 2, SUF_Z, 0xBA, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"test", test_insn, 20, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
+ {"pslldq", pslrldq_insn, 4, SUF_Z, 0x07, 0, 0, 0, CPU_SSE2, 0, 0},
+ {"sha256rnds2", intel_SHA256RNDS2_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SHA, 0, 0},
+ {"cmovb", cmovcc_insn, 3, SUF_Z, 0x02, 0, 0, 0, CPU_686, 0, 0},
+ {"rex64xyz", NULL, X86_REX>>8, 0x4F, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"blcs", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x01, 0x03, 0, 0, CPU_386, CPU_TBM, 0},
+ {"punpcklwd", mmxsse2_insn, 2, SUF_Z, 0x61, 0, 0, 0, CPU_MMX, 0, 0},
+ {"sqrtps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x51, 0, 0, CPU_SSE, 0, 0},
+ {"cmovnaeq", cmovcc_insn, 3, SUF_Q, 0x02, 0, 0, ONLY_64, CPU_686, 0, 0},
+ {"vmread", vmxmemrd_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_P4, 0, 0},
+ {"fldz", twobyte_insn, 1, SUF_Z, 0xD9, 0xEE, 0, 0, CPU_FPU, 0, 0},
+ {"vpunpckldq", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x62, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"retl", retnf_insn, 6, SUF_Z, 0xC2, 0, 0, NOT_64, 0, 0, 0},
+ {"vlddqu", lddqu_insn, 2, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"loopnzw", loopw_insn, 4, SUF_Z, 0x00, 0x10, 0, NOT_64, 0, 0, 0},
+ {"vmaxss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5F, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cvttpd2pi", cvt_mm_xmm_insn, 1, SUF_Z, 0x66, 0x2C, 0, 0, CPU_SSE2, 0, 0},
+ {"btrl", bittest_insn, 6, SUF_L, 0xB3, 0x06, 0, 0, CPU_386, 0, 0},
+ {"cvttsd2si", cvt_rx_xmm64_insn, 4, SUF_Z, 0xF2, 0x2C, 0, 0, CPU_SSE2, 0, 0},
+ {"cmovns", cmovcc_insn, 3, SUF_Z, 0x09, 0, 0, 0, CPU_686, 0, 0},
+ {"vblendvpd", avx_sse4xmm0_insn, 2, SUF_Z, 0x4B, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fistp", fildstp_insn, 4, SUF_Z, 0x03, 0x02, 0x07, 0, CPU_FPU, 0, 0},
+ {"setbe", setcc_insn, 1, SUF_Z, 0x06, 0, 0, 0, CPU_386, 0, 0},
+ {"cmpordss", ssecmp_32_insn, 4, SUF_Z, 0x07, 0xF3, 0, 0, CPU_SSE, 0, 0},
+ {"vfrczps", vfrc_pdps_insn, 2, SUF_Z, 0x00, 0, 0, 0, CPU_XOP, 0, 0},
+ {"sysret", twobyte_insn, 1, SUF_Z, 0x0F, 0x07, 0, 0, CPU_686, CPU_AMD, CPU_Priv},
+ {"pfrsqit1", now3d_insn, 1, SUF_Z, 0xA7, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"pdistib", cyrixmmx_insn, 1, SUF_Z, 0x54, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
+ {"sha256msg2", intel_SHA256MSG2_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SHA, 0, 0},
+ {"pshuflw", xmm_xmm128_imm_insn, 1, SUF_Z, 0xF2, 0x70, 0, 0, CPU_SSE2, 0, 0},
+ {"vpcomged", vpcom_insn, 1, SUF_Z, 0xCE, 0x03, 0, 0, CPU_XOP, 0, 0},
+ {"addpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x58, 0, 0, CPU_SSE2, 0, 0},
+ {"fstenv", twobytemem_insn, 1, SUF_Z, 0x06, 0x9B, 0xD9, 0, CPU_FPU, 0, 0},
+ {"vpcomled", vpcom_insn, 1, SUF_Z, 0xCE, 0x01, 0, 0, CPU_XOP, 0, 0},
+ {"vpackssdw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x6B, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmovnbl", cmovcc_insn, 3, SUF_L, 0x03, 0, 0, 0, CPU_686, 0, 0},
+ {"vpcomleuq", vpcom_insn, 1, SUF_Z, 0xEF, 0x01, 0, 0, CPU_XOP, 0, 0},
+ {"paddsiw", cyrixmmx_insn, 1, SUF_Z, 0x51, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
+ {"dppd", sse4imm_insn, 2, SUF_Z, 0x41, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"incb", incdec_insn, 6, SUF_B, 0x40, 0x00, 0, 0, 0, 0, 0},
+ {"vpmulhuw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xE4, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vmovmskpdl", movmsk_insn, 4, SUF_L, 0x66, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"hnt", NULL, X86_SEGREG>>8, 0x2E, 0, 0, 0, 0, 0, 0, 0},
+ {"fclex", threebyte_insn, 1, SUF_Z, 0x9B, 0xDB, 0xE2, 0, CPU_FPU, 0, 0},
+ {"vcmpord_sss", ssecmp_32_insn, 4, SUF_Z, 0x17, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"aeskeygenassist", aes_imm_insn, 1, SUF_Z, 0x3A, 0xDF, 0, 0, CPU_AES, 0, 0},
+ {"cvtsi2ssq", cvt_xmm_rmx_insn, 6, SUF_Q, 0xF3, 0x2A, 0, ONLY_64, CPU_SSE, 0, 0},
+ {"extractps", extractps_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_SSE41, 0},
+ {"cmpless", ssecmp_32_insn, 4, SUF_Z, 0x02, 0xF3, 0, 0, CPU_SSE, 0, 0},
+ {"psubusw", mmxsse2_insn, 2, SUF_Z, 0xD9, 0, 0, 0, CPU_MMX, 0, 0},
+ {"setnzb", setcc_insn, 1, SUF_B, 0x05, 0, 0, 0, CPU_386, 0, 0},
+ {"vpacksswb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x63, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pandn", mmxsse2_insn, 2, SUF_Z, 0xDF, 0, 0, 0, CPU_MMX, 0, 0},
+ {"vpsubd", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xFA, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmptruesd", ssecmp_64_insn, 4, SUF_Z, 0x0F, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fucomp", fcom2_insn, 2, SUF_Z, 0xDD, 0xE8, 0, 0, CPU_286, CPU_FPU, 0},
+ {"lar", larlsl_insn, 6, SUF_Z, 0x02, 0, 0, 0, CPU_286, CPU_Prot, 0},
+ {"blsic", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x01, 0x06, 0, 0, CPU_386, CPU_TBM, 0},
+ {"ibts", ibts_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_Obs, CPU_Undoc},
+ {"sysexit", twobyte_insn, 1, SUF_Z, 0x0F, 0x35, 0, NOT_64, CPU_686, CPU_Priv, 0},
+ {"vmovmskps", movmsk_insn, 4, SUF_Z, 0x00, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcvtss2sd", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5A, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vunpcklps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x14, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fdivr", farith_insn, 7, SUF_Z, 0xF0, 0xF8, 0x07, 0, CPU_FPU, 0, 0},
+ {"vpshufb", ssse3_insn, 5, SUF_Z, 0x00, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmptruepd", ssecmp_128_insn, 3, SUF_Z, 0x0F, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpshufhw", xmm_xmm128_imm_256avx2_insn, 2, SUF_Z, 0xF3, 0x70, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"loopl", loopl_insn, 4, SUF_Z, 0x02, 0x20, 0, 0, 0, 0, 0},
+ {"vfnmaddps", fma_128_256_insn, 4, SUF_Z, 0x78, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"movsbw", movszx_insn, 5, SUF_B, 0xBE, 0, 0, 0, CPU_386, 0, 0},
+ {"fstps", fstp_insn, 4, SUF_S, 0, 0, 0, 0, CPU_FPU, 0, 0},
+ {"fadd", farith_insn, 7, SUF_Z, 0xC0, 0xC0, 0x00, 0, CPU_FPU, 0, 0},
+ {"vcmpeqsd", ssecmp_64_insn, 4, SUF_Z, 0x00, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpngt_uqsd", ssecmp_64_insn, 4, SUF_Z, 0x1A, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"sscaw", onebyte_insn, 1, SUF_Z, 0xAF, 0x10, 0, 0, 0, 0, 0},
+ {"setnlb", setcc_insn, 1, SUF_B, 0x0D, 0, 0, 0, CPU_386, 0, 0},
+ {"vpmulld", ssse3_insn, 5, SUF_Z, 0x40, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfmsub132pd", vfma_pd_insn, 2, SUF_Z, 0x9A, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"palignr", ssse3imm_insn, 2, SUF_Z, 0x0F, 0, 0, 0, CPU_SSSE3, 0, 0},
+ {"orpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x56, 0, 0, CPU_SSE2, 0, 0},
+ {"vminsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fsincos", twobyte_insn, 1, SUF_Z, 0xD9, 0xFB, 0, 0, CPU_286, CPU_FPU, 0},
+ {"vcmple_oqpd", ssecmp_128_insn, 3, SUF_Z, 0x12, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pmagw", cyrixmmx_insn, 1, SUF_Z, 0x52, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
+ {"setnleb", setcc_insn, 1, SUF_B, 0x0F, 0, 0, 0, CPU_386, 0, 0},
+ {"vcmpps", xmm_xmm128_imm_256_insn, 3, SUF_Z, 0x00, 0xC2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpmulhrsw", ssse3_insn, 5, SUF_Z, 0x0B, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"setcb", setcc_insn, 1, SUF_B, 0x02, 0, 0, 0, CPU_386, 0, 0},
+ {"lgsl", lfgss_insn, 3, SUF_L, 0xB5, 0, 0, 0, CPU_386, 0, 0},
+ {"paveb", cyrixmmx_insn, 1, SUF_Z, 0x50, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
+ {"sbbq", arith_insn, 22, SUF_Q, 0x18, 0x03, 0, ONLY_64, 0, 0, 0},
+ {"vfmaddpd", fma_128_256_insn, 4, SUF_Z, 0x69, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"fcos", twobyte_insn, 1, SUF_Z, 0xD9, 0xFF, 0, 0, CPU_286, CPU_FPU, 0},
+ {"cvtsi2ssl", cvt_xmm_rmx_insn, 6, SUF_L, 0xF3, 0x2A, 0, 0, CPU_386, CPU_SSE, 0},
+ {"setneb", setcc_insn, 1, SUF_B, 0x05, 0, 0, 0, CPU_386, 0, 0},
+ {"vfnmsub132ps", vfma_ps_insn, 2, SUF_Z, 0x9E, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"lfsw", lfgss_insn, 3, SUF_W, 0xB4, 0, 0, 0, CPU_386, 0, 0},
+ {"vpcmpestrm", sse4pcmpstr_insn, 1, SUF_Z, 0x60, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"arpl", arpl_insn, 1, SUF_Z, 0, 0, 0, NOT_64, CPU_286, CPU_Prot, 0},
+ {"cmovew", cmovcc_insn, 3, SUF_W, 0x04, 0, 0, 0, CPU_686, 0, 0},
+ {"pminuw", sse4_insn, 2, SUF_Z, 0x3A, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"movabsq", movabs_insn, 9, SUF_Q, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"cmovo", cmovcc_insn, 3, SUF_Z, 0x00, 0, 0, 0, CPU_686, 0, 0},
+ {"blsicl", xop_gpr_reg_rm_09_insn, 2, SUF_L, 0x01, 0x06, 0, 0, CPU_386, CPU_TBM, 0},
+ {"smovw", onebyte_insn, 1, SUF_Z, 0xA5, 0x10, 0, 0, 0, 0, 0},
+ {"faddl", farith_insn, 7, SUF_L, 0xC0, 0xC0, 0x00, 0, CPU_FPU, 0, 0},
+ {"maxsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5F, 0, 0, CPU_SSE2, 0, 0},
+ {"aad", aadm_insn, 2, SUF_Z, 0x01, 0, 0, NOT_64, 0, 0, 0},
+ {"vpmaskmovq", vmaskmov_vexw1_avx2_insn, 4, SUF_Z, 0x8C, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"vfmadd132sd", vfma_sd_insn, 2, SUF_Z, 0x99, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"rep", NULL, X86_LOCKREP>>8, 0xF3, 0, 0, 0, 0, 0, 0, 0},
+ {"vcmpltss", ssecmp_32_insn, 4, SUF_Z, 0x01, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"sub", arith_insn, 22, SUF_Z, 0x28, 0x05, 0, 0, 0, 0, 0},
+ {"smswq", sldtmsw_insn, 6, SUF_Q, 0x04, 0x01, 0, ONLY_64, CPU_286, 0, 0},
+ {"qword", NULL, X86_OPERSIZE>>8, 0x40, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"vcmpunordps", ssecmp_128_insn, 3, SUF_Z, 0x03, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cltq", onebyte_insn, 1, SUF_Z, 0x98, 0x40, 0, ONLY_64, 0, 0, 0},
+ {"vfnmadd213pd", vfma_pd_insn, 2, SUF_Z, 0xAC, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"minsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5D, 0, 0, CPU_SSE2, 0, 0},
+ {"fmul", farith_insn, 7, SUF_Z, 0xC8, 0xC8, 0x01, 0, CPU_FPU, 0, 0},
+ {"cmpss", xmm_xmm32_imm_insn, 4, SUF_Z, 0xF3, 0xC2, 0, 0, CPU_SSE, 0, 0},
+ {"vcvtsd2si", cvt_rx_xmm64_insn, 4, SUF_Z, 0xF2, 0x2D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"addsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x58, 0, 0, CPU_SSE2, 0, 0},
+ {"vmulss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x59, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"btsq", bittest_insn, 6, SUF_Q, 0xAB, 0x05, 0, ONLY_64, CPU_386, 0, 0},
+ {"cvtsd2sil", cvt_rx_xmm64_insn, 4, SUF_L, 0xF2, 0x2D, 0, 0, CPU_386, CPU_SSE2, 0},
+ {"vpcomtrueb", vpcom_insn, 1, SUF_Z, 0xCC, 0x07, 0, 0, CPU_XOP, 0, 0},
+ {"vpcomeqb", vpcom_insn, 1, SUF_Z, 0xCC, 0x04, 0, 0, CPU_XOP, 0, 0},
+ {"fidivr", fiarith_insn, 2, SUF_Z, 0x07, 0xDA, 0, 0, CPU_FPU, 0, 0},
+ {"vpcomgeuw", vpcom_insn, 1, SUF_Z, 0xED, 0x03, 0, 0, CPU_XOP, 0, 0},
+ {"cmovnel", cmovcc_insn, 3, SUF_L, 0x05, 0, 0, 0, CPU_686, 0, 0},
+ {"vpmovzxwq", sse4m32_insn, 4, SUF_Z, 0x34, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpeq_osss", ssecmp_32_insn, 4, SUF_Z, 0x10, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"shrb", shift_insn, 16, SUF_B, 0x05, 0, 0, 0, 0, 0, 0},
+ {"maxpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x5F, 0, 0, CPU_SSE2, 0, 0},
+ {"hsubps", xmm_xmm128_insn, 2, SUF_Z, 0xF2, 0x7D, 0, 0, CPU_SSE3, 0, 0},
+ {"sarx", vex_gpr_reg_rm_nds_0F_insn, 2, SUF_Z, 0xF3, 0x38, 0xF7, ONLY_AVX, CPU_BMI2, 0, 0},
+ {"vpcomgtb", vpcom_insn, 1, SUF_Z, 0xCC, 0x02, 0, 0, CPU_XOP, 0, 0},
+ {"vextractf128", vextractif128_insn, 1, SUF_Z, 0x19, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcvtsi2ssl", cvt_xmm_rmx_insn, 6, SUF_L, 0xF3, 0x2A, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"movzxb", movszx_insn, 5, SUF_B, 0xB6, 0, 0, 0, CPU_386, 0, 0},
+ {"vpbroadcastw", vpbroadcastw_avx2_insn, 4, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"shlw", shift_insn, 16, SUF_W, 0x04, 0, 0, 0, 0, 0, 0},
+ {"cmpltps", ssecmp_128_insn, 3, SUF_Z, 0x01, 0, 0, 0, CPU_SSE, 0, 0},
+ {"xlatb", onebyte_insn, 1, SUF_Z, 0xD7, 0x00, 0, 0, 0, 0, 0},
+ {"xsha1", padlock_insn, 1, SUF_Z, 0xC8, 0xF3, 0xA6, 0, CPU_PadLock, 0, 0},
+ {"lret", retnf_insn, 6, SUF_Z, 0xCA, 0, 0, 0, 0, 0, 0},
+ {"xsha256", padlock_insn, 1, SUF_Z, 0xD0, 0xF3, 0xA6, 0, CPU_PadLock, 0, 0},
+ {"vpsrad", vpshift_insn, 8, SUF_Z, 0xE2, 0x72, 0x04, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmovnpl", cmovcc_insn, 3, SUF_L, 0x0B, 0, 0, 0, CPU_686, 0, 0},
+ {"addw", arith_insn, 22, SUF_W, 0x00, 0x00, 0, 0, 0, 0, 0},
+ {"setg", setcc_insn, 1, SUF_Z, 0x0F, 0, 0, 0, CPU_386, 0, 0},
+ {"vphaddubq", vphaddsub_insn, 1, SUF_Z, 0xD3, 0, 0, 0, CPU_XOP, 0, 0},
+ {"cmovngl", cmovcc_insn, 3, SUF_L, 0x0E, 0, 0, 0, CPU_686, 0, 0},
+ {"vpermilpd", vpermil_insn, 4, SUF_Z, 0x05, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpmacswd", vpma_insn, 1, SUF_Z, 0x96, 0, 0, 0, CPU_XOP, 0, 0},
+ {"clac", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xCA, 0, CPU_SMAP, 0, 0},
+ {"punpckhwd", mmxsse2_insn, 2, SUF_Z, 0x69, 0, 0, 0, CPU_MMX, 0, 0},
+ {"vpcmpgtb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x64, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"leave", onebyte_insn, 1, SUF_Z, 0xC9, 0x00, 0x40, 0, CPU_186, 0, 0},
+ {"shrd", shlrd_insn, 9, SUF_Z, 0xAC, 0, 0, 0, CPU_386, 0, 0},
+ {"vfmsub132ps", vfma_ps_insn, 2, SUF_Z, 0x9A, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"lretl", retnf_insn, 6, SUF_L, 0xCA, 0, 0, 0, 0, 0, 0},
+ {"cmovpol", cmovcc_insn, 3, SUF_L, 0x0B, 0, 0, 0, CPU_686, 0, 0},
+ {"orl", arith_insn, 22, SUF_L, 0x08, 0x01, 0, 0, CPU_386, 0, 0},
+ {"fnstcw", fldnstcw_insn, 1, SUF_Z, 0x07, 0, 0, 0, CPU_FPU, 0, 0},
+ {"punpckldq", mmxsse2_insn, 2, SUF_Z, 0x62, 0, 0, 0, CPU_MMX, 0, 0},
+ {"vpmaddwd", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xF5, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"mulb", f6_insn, 4, SUF_B, 0x04, 0, 0, 0, 0, 0, 0},
+ {"cmppd", xmm_xmm128_imm_insn, 1, SUF_Z, 0x66, 0xC2, 0, 0, CPU_SSE2, 0, 0},
+ {"rex", NULL, X86_REX>>8, 0x40, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"movd", movd_insn, 8, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_MMX, 0},
+ {"vpshaw", amd_vpshift_insn, 2, SUF_Z, 0x99, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vrsqrtps", avx_xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x52, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcvtph2ps", avx_cvtph2ps_insn, 4, SUF_Z, 0x66, 0x13, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vsubss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"tzcntl", cnt_insn, 3, SUF_L, 0xBC, 0, 0, 0, CPU_BMI1, 0, 0},
+ {"not", f6_insn, 4, SUF_Z, 0x02, 0, 0, 0, 0, 0, 0},
+ {"cvtpd2pi", cvt_mm_xmm_insn, 1, SUF_Z, 0x66, 0x2D, 0, 0, CPU_SSE2, 0, 0},
+ {"vcmpngtsd", ssecmp_64_insn, 4, SUF_Z, 0x0A, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"rex64yz", NULL, X86_REX>>8, 0x4B, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"vpblendd", vex_66_0F3A_imm8_avx2_insn, 2, SUF_Z, 0x02, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"vpmovmskb", pmovmskb_insn, 6, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fldt", fldstpt_insn, 1, SUF_Z, 0x05, 0, 0, 0, CPU_FPU, 0, 0},
+ {"vpunpcklbw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x60, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"femms", twobyte_insn, 1, SUF_Z, 0x0F, 0x0E, 0, 0, CPU_3DNow, 0, 0},
+ {"vpsrlvq", vpshiftv_vexw1_avx2_insn, 2, SUF_Z, 0x45, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"paddusb", mmxsse2_insn, 2, SUF_Z, 0xDC, 0, 0, 0, CPU_MMX, 0, 0},
+ {"movdq2q", movdq2q_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SSE2, 0, 0},
+ {"vfnmsub132pd", vfma_pd_insn, 2, SUF_Z, 0x9E, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"adcb", arith_insn, 22, SUF_B, 0x10, 0x02, 0, 0, 0, 0, 0},
+ {"vcmpneqps", ssecmp_128_insn, 3, SUF_Z, 0x04, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"andnl", vex_gpr_reg_nds_rm_0F_insn, 2, SUF_L, 0x00, 0x38, 0xF2, ONLY_AVX, CPU_BMI1, 0, 0},
+ {"fnstenvl", onebytemem_insn, 1, SUF_L, 0x06, 0xD9, 0, 0, CPU_FPU, 0, 0},
+ {"smi", onebyte_insn, 1, SUF_Z, 0xF1, 0, 0, 0, CPU_386, CPU_Undoc, 0},
+ {"cmovol", cmovcc_insn, 3, SUF_L, 0x00, 0, 0, 0, CPU_686, 0, 0},
+ {"wait", onebyte_insn, 1, SUF_Z, 0x9B, 0, 0, 0, 0, 0, 0},
+ {"vpcmov", vpcmov_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vunpcklpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x14, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"jl", jcc_insn, 9, SUF_Z, 0x0C, 0, 0, 0, 0, 0, 0},
+ {"fnclex", twobyte_insn, 1, SUF_Z, 0xDB, 0xE2, 0, 0, CPU_FPU, 0, 0},
+ {"shlq", shift_insn, 16, SUF_Q, 0x04, 0, 0, ONLY_64, 0, 0, 0},
+ {"sall", shift_insn, 16, SUF_L, 0x04, 0, 0, 0, CPU_386, 0, 0},
+ {"swapgs", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xF8, ONLY_64, 0, 0, 0},
+ {"cvttps2dq", xmm_xmm128_insn, 2, SUF_Z, 0xF3, 0x5B, 0, 0, CPU_SSE2, 0, 0},
+ {"pmaxud", sse4_insn, 2, SUF_Z, 0x3F, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vpaddsw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xED, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"prefetcht0", twobytemem_insn, 1, SUF_Z, 0x01, 0x0F, 0x18, 0, CPU_P3, 0, 0},
+ {"repne", NULL, X86_LOCKREP>>8, 0xF2, 0, 0, 0, 0, 0, 0, 0},
+ {"vfmsub132ss", vfma_ss_insn, 2, SUF_Z, 0x9B, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"lsll", larlsl_insn, 6, SUF_L, 0x03, 0, 0, 0, CPU_286, CPU_Prot, 0},
+ {"vgatherqps", gather_32x_32y_128_insn, 2, SUF_Z, 0x93, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"vrsqrtss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x52, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"divl", div_insn, 8, SUF_L, 0x06, 0, 0, 0, CPU_386, 0, 0},
+ {"pcmpgtq", sse4_insn, 2, SUF_Z, 0x37, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"pmulhrsw", ssse3_insn, 5, SUF_Z, 0x0B, 0, 0, 0, CPU_SSSE3, 0, 0},
+ {"repe", NULL, X86_LOCKREP>>8, 0xF3, 0, 0, 0, 0, 0, 0, 0},
+ {"vpcomtrued", vpcom_insn, 1, SUF_Z, 0xCE, 0x07, 0, 0, CPU_XOP, 0, 0},
+ {"fldl", fld_insn, 4, SUF_L, 0, 0, 0, 0, CPU_FPU, 0, 0},
+ {"cvtps2pd", xmm_xmm64_insn, 4, SUF_Z, 0x00, 0x5A, 0, 0, CPU_SSE2, 0, 0},
+ {"vcmpnless", ssecmp_32_insn, 4, SUF_Z, 0x06, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"loopeq", loopq_insn, 4, SUF_Z, 0x01, 0x40, 0, ONLY_64, 0, 0, 0},
+ {"aesdeclast", aes_insn, 2, SUF_Z, 0x38, 0xDF, 0, 0, CPU_AVX, 0, 0},
+ {"vpcomequb", vpcom_insn, 1, SUF_Z, 0xEC, 0x04, 0, 0, CPU_XOP, 0, 0},
+ {"stgi", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xDC, 0, CPU_SVM, 0, 0},
+ {"vpmovzxbd", sse4m32_insn, 4, SUF_Z, 0x31, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"psignb", ssse3_insn, 5, SUF_Z, 0x08, 0, 0, 0, CPU_SSSE3, 0, 0},
+ {"vpshlq", amd_vpshift_insn, 2, SUF_Z, 0x97, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vpcomfalseuq", vpcom_insn, 1, SUF_Z, 0xEF, 0x06, 0, 0, CPU_XOP, 0, 0},
+ {"mulxq", vex_gpr_reg_nds_rm_0F_insn, 2, SUF_Q, 0xF2, 0x38, 0xF6, ONLY_64|ONLY_AVX, CPU_BMI2, 0, 0},
+ {"jmpq", jmp_insn, 31, SUF_Q, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"cvtsd2siq", cvt_rx_xmm64_insn, 4, SUF_Q, 0xF2, 0x2D, 0, ONLY_64, CPU_SSE2, 0, 0},
+ {"movhpd", movhlp_insn, 3, SUF_Z, 0x66, 0x16, 0, 0, CPU_SSE2, 0, 0},
+ {"punpcklqdq", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x6C, 0, 0, CPU_SSE2, 0, 0},
+ {"verw", prot286_insn, 1, SUF_Z, 0x05, 0x00, 0, 0, CPU_286, CPU_Prot, 0},
+ {"cmpunordsd", ssecmp_64_insn, 4, SUF_Z, 0x03, 0xF2, 0, 0, CPU_SSE2, 0, 0},
+ {"vzeroall", vzero_insn, 1, SUF_Z, 0xC4, 0, 0, 0, CPU_AVX, 0, 0},
+ {"vperm2i128", vperm2i128_avx2_insn, 1, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"jo", jcc_insn, 9, SUF_Z, 0x00, 0, 0, 0, 0, 0, 0},
+ {"callq", call_insn, 30, SUF_Q, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"cmovle", cmovcc_insn, 3, SUF_Z, 0x0E, 0, 0, 0, CPU_686, 0, 0},
+ {"sgdtq", twobytemem_insn, 1, SUF_Q, 0x00, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
+ {"cmovnpq", cmovcc_insn, 3, SUF_Q, 0x0B, 0, 0, ONLY_64, CPU_686, 0, 0},
+ {"cvtpd2ps", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x5A, 0, 0, CPU_SSE2, 0, 0},
+ {"minss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5D, 0, 0, CPU_SSE, 0, 0},
+ {"loopw", loopw_insn, 4, SUF_Z, 0x02, 0x10, 0, NOT_64, 0, 0, 0},
+ {"inveptl", eptvpid_insn, 2, SUF_L, 0x00, 0, 0, NOT_64, CPU_386, CPU_EPTVPID, 0},
+ {"bsr", bsfr_insn, 3, SUF_Z, 0xBD, 0, 0, 0, CPU_386, 0, 0},
+ {"vcmpgtss", ssecmp_32_insn, 4, SUF_Z, 0x0E, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"negl", f6_insn, 4, SUF_L, 0x03, 0, 0, 0, CPU_386, 0, 0},
+ {"psrlw", pshift_insn, 4, SUF_Z, 0xD1, 0x71, 0x02, 0, CPU_MMX, 0, 0},
+ {"vpmuludq", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xF4, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pext", vex_gpr_reg_nds_rm_0F_insn, 2, SUF_Z, 0xF3, 0x38, 0xF5, ONLY_AVX, CPU_BMI2, 0, 0},
+ {"rsm", twobyte_insn, 1, SUF_Z, 0x0F, 0xAA, 0, 0, CPU_586, CPU_SMM, 0},
+ {"addl", arith_insn, 22, SUF_L, 0x00, 0x00, 0, 0, CPU_386, 0, 0},
+ {"vpermd", vperm_var_avx2_insn, 1, SUF_Z, 0x36, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"fxsave", twobytemem_insn, 1, SUF_Z, 0x00, 0x0F, 0xAE, 0, CPU_686, CPU_FPU, 0},
+ {"vphadduwq", vphaddsub_insn, 1, SUF_Z, 0xD7, 0, 0, 0, CPU_XOP, 0, 0},
+ {"pminud", sse4_insn, 2, SUF_Z, 0x3B, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"ldsw", ldes_insn, 2, SUF_W, 0xC5, 0, 0, NOT_64, 0, 0, 0},
+ {"movsw", onebyte_insn, 1, SUF_Z, 0xA5, 0x10, 0, 0, 0, 0, 0},
+ {"pmaxub", mmxsse2_insn, 2, SUF_Z, 0xDE, 0, 0, 0, CPU_MMX, CPU_P3, 0},
+ {"vldmxcsr", ldstmxcsr_insn, 1, SUF_Z, 0x02, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vhsubpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x7D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vucomisd", avx_xmm_xmm64_insn, 2, SUF_Z, 0x66, 0x2E, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmovpow", cmovcc_insn, 3, SUF_W, 0x0B, 0, 0, 0, CPU_686, 0, 0},
+ {"pmvgezb", cyrixmmx_insn, 1, SUF_Z, 0x5C, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
+ {"cvtsd2ss", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5A, 0, 0, CPU_SSE2, 0, 0},
+ {"vbroadcastf128", vbroadcastif128_insn, 1, SUF_Z, 0x1A, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"lldt", prot286_insn, 1, SUF_Z, 0x02, 0x00, 0, 0, CPU_286, CPU_Priv, CPU_Prot},
+ {"t1mskc", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x01, 0x07, 0, 0, CPU_386, CPU_TBM, 0},
+ {"movsx", movszx_insn, 5, SUF_Z, 0xBE, 0, 0, 0, CPU_386, 0, 0},
+ {"vpmacsdd", vpma_insn, 1, SUF_Z, 0x9E, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vcmplesd", ssecmp_64_insn, 4, SUF_Z, 0x02, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"prefetchw", twobytemem_insn, 1, SUF_Z, 0x01, 0x0F, 0x0D, 0, CPU_PRFCHW, 0, 0},
+ {"pextrd", pextrd_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_SSE41, 0},
+ {"vcmpfalse_osps", ssecmp_128_insn, 3, SUF_Z, 0x1B, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vptest", sse4_insn, 2, SUF_Z, 0x17, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"loopneq", loopq_insn, 4, SUF_Z, 0x00, 0x40, 0, ONLY_64, 0, 0, 0},
+ {"fucompp", twobyte_insn, 1, SUF_Z, 0xDA, 0xE9, 0, 0, CPU_286, CPU_FPU, 0},
+ {"vpextrq", pextrq_insn, 1, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"umov", umov_insn, 6, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_Undoc, 0},
+ {"fcmovb", fcmovcc_insn, 1, SUF_Z, 0xDA, 0xC0, 0, 0, CPU_686, CPU_FPU, 0},
+ {"vinsertf128", vinsertif128_insn, 1, SUF_Z, 0x18, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"std", onebyte_insn, 1, SUF_Z, 0xFD, 0, 0, 0, 0, 0, 0},
+ {"cvtpd2dq", xmm_xmm128_insn, 2, SUF_Z, 0xF2, 0xE6, 0, 0, CPU_SSE2, 0, 0},
+ {"vpcomned", vpcom_insn, 1, SUF_Z, 0xCE, 0x05, 0, 0, CPU_XOP, 0, 0},
+ {"vpand", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xDB, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"bswapq", bswap_insn, 2, SUF_Q, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"vpmacssdqh", vpma_insn, 1, SUF_Z, 0x8F, 0, 0, 0, CPU_XOP, 0, 0},
+ {"blcicl", xop_gpr_reg_rm_09_insn, 2, SUF_L, 0x01, 0x05, 0, 0, CPU_386, CPU_TBM, 0},
+ {"strq", str_insn, 4, SUF_Q, 0, 0, 0, ONLY_64, CPU_286, CPU_Prot, 0},
+ {"vshufps", xmm_xmm128_imm_256_insn, 3, SUF_Z, 0x00, 0xC6, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"roll", shift_insn, 16, SUF_L, 0x00, 0, 0, 0, CPU_386, 0, 0},
+ {"cvttpd2dq", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0xE6, 0, 0, CPU_SSE2, 0, 0},
+ {"salq", shift_insn, 16, SUF_Q, 0x04, 0, 0, ONLY_64, 0, 0, 0},
+ {"vpcomfalseq", vpcom_insn, 1, SUF_Z, 0xCF, 0x06, 0, 0, CPU_XOP, 0, 0},
+ {"leaq", lea_insn, 3, SUF_Q, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"vmovdqu", movau_insn, 6, SUF_Z, 0xF3, 0x6F, 0x10, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpmaddubsw", ssse3_insn, 5, SUF_Z, 0x04, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmpltpd", ssecmp_128_insn, 3, SUF_Z, 0x01, 0x66, 0, 0, CPU_SSE, 0, 0},
+ {"outw", out_insn, 12, SUF_W, 0, 0, 0, 0, 0, 0, 0},
+ {"cmovncq", cmovcc_insn, 3, SUF_Q, 0x03, 0, 0, ONLY_64, CPU_686, 0, 0},
+ {"blcmskl", xop_gpr_reg_rm_09_insn, 2, SUF_L, 0x02, 0x01, 0, 0, CPU_386, CPU_TBM, 0},
+ {"vfmadd231ss", vfma_ss_insn, 2, SUF_Z, 0xB9, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"cmpordsd", ssecmp_64_insn, 4, SUF_Z, 0x07, 0xF2, 0, 0, CPU_SSE2, 0, 0},
+ {"setnle", setcc_insn, 1, SUF_Z, 0x0F, 0, 0, 0, CPU_386, 0, 0},
+ {"vfmadd231pd", vfma_pd_insn, 2, SUF_Z, 0xB8, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vcmpneqsd", ssecmp_64_insn, 4, SUF_Z, 0x04, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vmptrst", vmxtwobytemem_insn, 1, SUF_Z, 0x07, 0, 0, 0, CPU_P4, 0, 0},
+ {"cmovsl", cmovcc_insn, 3, SUF_L, 0x08, 0, 0, 0, CPU_686, 0, 0},
+ {"vpmovsxbw", sse4m64_insn, 4, SUF_Z, 0x20, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpneq_ossd", ssecmp_64_insn, 4, SUF_Z, 0x1C, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"xgetbv", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xD0, 0, CPU_386, CPU_XSAVE, 0},
+ {"addr32", NULL, X86_ADDRSIZE>>8, 0x20, 0, 0, 0, 0, 0, 0, 0},
+ {"vcmpneq_osss", ssecmp_32_insn, 4, SUF_Z, 0x1C, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vmulsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x59, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"maskmovdqu", maskmovdqu_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SSE2, 0, 0},
+ {"vpslldq", pslrldq_insn, 4, SUF_Z, 0x07, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"maskmovq", maskmovq_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_MMX, CPU_P3, 0},
+ {"vcmpeq_uspd", ssecmp_128_insn, 3, SUF_Z, 0x18, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pmulhriw", cyrixmmx_insn, 1, SUF_Z, 0x5D, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
+ {"vcvtps2dq", avx_xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x5B, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfnmsub231ss", vfma_ss_insn, 2, SUF_Z, 0xBF, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"shrx", vex_gpr_reg_rm_nds_0F_insn, 2, SUF_Z, 0xF2, 0x38, 0xF7, ONLY_AVX, CPU_BMI2, 0, 0},
+ {"psadbw", mmxsse2_insn, 2, SUF_Z, 0xF6, 0, 0, 0, CPU_MMX, CPU_P3, 0},
+ {"vmovd", vmovd_insn, 2, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_386, CPU_AVX, 0},
+ {"pushfl", onebyte_insn, 1, SUF_Z, 0x9C, 0x20, 0, NOT_64, CPU_386, 0, 0},
+ {"vfnmadd132ps", vfma_ps_insn, 2, SUF_Z, 0x9C, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"sqrtpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x51, 0, 0, CPU_SSE2, 0, 0},
+ {"cvtss2sil", cvt_rx_xmm32_insn, 4, SUF_L, 0xF3, 0x2D, 0, 0, CPU_386, CPU_SSE, 0},
+ {"fyl2x", twobyte_insn, 1, SUF_Z, 0xD9, 0xF1, 0, 0, CPU_FPU, 0, 0},
+ {"btq", bittest_insn, 6, SUF_Q, 0xA3, 0x04, 0, ONLY_64, CPU_386, 0, 0},
+ {"vpslld", vpshift_insn, 8, SUF_Z, 0xF2, 0x72, 0x06, ONLY_AVX, CPU_AVX, 0, 0},
+ {"invlpga", invlpga_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_SVM, 0, 0},
+ {"xorb", arith_insn, 22, SUF_B, 0x30, 0x06, 0, 0, 0, 0, 0},
+ {"fsubp", farithp_insn, 3, SUF_Z, 0xE0, 0, 0, 0, CPU_FPU, 0, 0},
+ {"vcvtps2pd", avx_cvt_xmm64_insn, 3, SUF_Z, 0x00, 0x5A, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfnmsub213pd", vfma_pd_insn, 2, SUF_Z, 0xAE, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vcvttsd2sil", cvt_rx_xmm64_insn, 4, SUF_L, 0xF2, 0x2C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"jp", jcc_insn, 9, SUF_Z, 0x0A, 0, 0, 0, 0, 0, 0},
+ {"vsubpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x5C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"lesw", ldes_insn, 2, SUF_W, 0xC4, 0, 0, NOT_64, 0, 0, 0},
+ {"vxorps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x57, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"divb", div_insn, 8, SUF_B, 0x06, 0, 0, 0, 0, 0, 0},
+ {"movq", mov_insn, 69, SUF_Q, 0, 0, 0, 0, 0, 0, 0},
+ {"lfsl", lfgss_insn, 3, SUF_L, 0xB4, 0, 0, 0, CPU_386, 0, 0},
+ {"syscall", twobyte_insn, 1, SUF_Z, 0x0F, 0x05, 0, 0, CPU_686, CPU_AMD, 0},
+ {"btl", bittest_insn, 6, SUF_L, 0xA3, 0x04, 0, 0, CPU_386, 0, 0},
+ {"fucomip", fcom2_insn, 2, SUF_Z, 0xDF, 0xE8, 0, 0, CPU_686, CPU_FPU, 0},
+ {"setncb", setcc_insn, 1, SUF_B, 0x03, 0, 0, 0, CPU_386, 0, 0},
+ {"cmovnol", cmovcc_insn, 3, SUF_L, 0x01, 0, 0, 0, CPU_686, 0, 0},
+ {"xcryptcbc", padlock_insn, 1, SUF_Z, 0xD0, 0xF3, 0xA7, 0, CPU_PadLock, 0, 0},
+ {"vcmplt_oqps", ssecmp_128_insn, 3, SUF_Z, 0x11, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"btrq", bittest_insn, 6, SUF_Q, 0xB3, 0x06, 0, ONLY_64, CPU_386, 0, 0},
+ {"paddw", mmxsse2_insn, 2, SUF_Z, 0xFD, 0, 0, 0, CPU_MMX, 0, 0},
+ {"pmovzxbq", sse4m16_insn, 4, SUF_Z, 0x32, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"rorq", shift_insn, 16, SUF_Q, 0x01, 0, 0, ONLY_64, 0, 0, 0},
+ {"xrelease", NULL, X86_ACQREL>>8, 0xF3, 0, 0, 0, 0, 0, 0, 0},
+ {"vpshld", amd_vpshift_insn, 2, SUF_Z, 0x96, 0, 0, 0, CPU_XOP, 0, 0},
+ {"fstp", fstp_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_FPU, 0, 0},
+ {"movsbq", movszx_insn, 5, SUF_B, 0xBE, 0, 0, ONLY_64, CPU_386, 0, 0},
+ {"fucom", fcom2_insn, 2, SUF_Z, 0xDD, 0xE0, 0, 0, CPU_286, CPU_FPU, 0},
+ {"vpclmullqlqdq", pclmulqdq_fixed_insn, 2, SUF_Z, 0x00, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"hsubpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x7D, 0, 0, CPU_SSE3, 0, 0},
+ {"por", mmxsse2_insn, 2, SUF_Z, 0xEB, 0, 0, 0, CPU_MMX, 0, 0},
+ {"mulx", vex_gpr_reg_nds_rm_0F_insn, 2, SUF_Z, 0xF2, 0x38, 0xF6, ONLY_AVX, CPU_BMI2, 0, 0},
+ {"vpcomneqb", vpcom_insn, 1, SUF_Z, 0xCC, 0x05, 0, 0, CPU_XOP, 0, 0},
+ {"movmskps", movmsk_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_SSE, 0},
+ {"fucomi", fcom2_insn, 2, SUF_Z, 0xDB, 0xE8, 0, 0, CPU_686, CPU_FPU, 0},
+ {"ht", NULL, X86_SEGREG>>8, 0x3E, 0, 0, 0, 0, 0, 0, 0},
+ {"vroundps", avx_sse4imm_insn, 3, SUF_Z, 0x08, 0, 0, ONLY_AVX, CPU_SSE41, 0, 0},
+ {"ud1", twobyte_insn, 1, SUF_Z, 0x0F, 0xB9, 0, 0, CPU_286, CPU_Undoc, 0},
+ {"insl", onebyte_insn, 1, SUF_Z, 0x6D, 0x20, 0, 0, CPU_386, 0, 0},
+ {"vcmpngt_uqpd", ssecmp_128_insn, 3, SUF_Z, 0x1A, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"rex64y", NULL, X86_REX>>8, 0x4A, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"fldln2", twobyte_insn, 1, SUF_Z, 0xD9, 0xED, 0, 0, CPU_FPU, 0, 0},
+ {"ldsl", ldes_insn, 2, SUF_L, 0xC5, 0, 0, NOT_64, CPU_386, 0, 0},
+ {"tzmskl", xop_gpr_reg_rm_09_insn, 2, SUF_L, 0x01, 0x04, 0, 0, CPU_386, CPU_TBM, 0},
+ {"vcmppd", xmm_xmm128_imm_256_insn, 3, SUF_Z, 0x66, 0xC2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"sidtw", twobytemem_insn, 1, SUF_W, 0x01, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
+ {"vpextrwl", pextrw_insn, 7, SUF_L, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fldl2t", twobyte_insn, 1, SUF_Z, 0xD9, 0xE9, 0, 0, CPU_FPU, 0, 0},
+ {"insb", onebyte_insn, 1, SUF_Z, 0x6C, 0x00, 0, 0, 0, 0, 0},
+ {"bound", bound_insn, 2, SUF_Z, 0, 0, 0, NOT_64, CPU_186, 0, 0},
+ {"vmwrite", vmxmemwr_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_P4, 0, 0},
+ {"cmpxchgq", cmpxchgxadd_insn, 4, SUF_Q, 0xB0, 0, 0, ONLY_64, CPU_486, 0, 0},
+ {"fsts", fst_insn, 3, SUF_S, 0, 0, 0, 0, CPU_FPU, 0, 0},
+ {"orps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x56, 0, 0, CPU_SSE, 0, 0},
+ {"vandnps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x55, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fdivrs", farith_insn, 7, SUF_S, 0xF0, 0xF8, 0x07, 0, CPU_FPU, 0, 0},
+ {"fldcww", fldnstcw_insn, 1, SUF_W, 0x05, 0, 0, 0, CPU_FPU, 0, 0},
+ {"movl", mov_insn, 69, SUF_L, 0, 0, 0, 0, CPU_386, 0, 0},
+ {"movq2dq", movq2dq_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SSE2, 0, 0},
+ {"cmpunordpd", ssecmp_128_insn, 3, SUF_Z, 0x03, 0x66, 0, 0, CPU_SSE, 0, 0},
+ {"rdseed", rdrand_insn, 3, SUF_Z, 0x07, 0, 0, 0, CPU_RDSEED, 0, 0},
+ {"cmovneq", cmovcc_insn, 3, SUF_Q, 0x05, 0, 0, ONLY_64, CPU_686, 0, 0},
+ {"vpmovzxbq", sse4m16_insn, 4, SUF_Z, 0x32, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmpsb", onebyte_insn, 1, SUF_Z, 0xA6, 0x00, 0, 0, 0, 0, 0},
+ {"vfmadd213sd", vfma_sd_insn, 2, SUF_Z, 0xA9, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"into", onebyte_insn, 1, SUF_Z, 0xCE, 0, 0, NOT_64, 0, 0, 0},
+ {"cmovzl", cmovcc_insn, 3, SUF_L, 0x04, 0, 0, 0, CPU_686, 0, 0},
+ {"imulb", imul_insn, 19, SUF_B, 0, 0, 0, 0, 0, 0, 0},
+ {"setc", setcc_insn, 1, SUF_Z, 0x02, 0, 0, 0, CPU_386, 0, 0},
+ {"vstmxcsr", ldstmxcsr_insn, 1, SUF_Z, 0x03, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fldenv", onebytemem_insn, 1, SUF_Z, 0x04, 0xD9, 0, 0, CPU_FPU, 0, 0},
+ {"pmovsxwd", sse4m64_insn, 4, SUF_Z, 0x23, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vcmpnltss", ssecmp_32_insn, 4, SUF_Z, 0x05, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"movntpd", movnt_insn, 2, SUF_Z, 0x66, 0x2B, 0, 0, CPU_SSE2, 0, 0},
+ {"pcmpeqw", mmxsse2_insn, 2, SUF_Z, 0x75, 0, 0, 0, CPU_MMX, 0, 0},
+ {"fcoms", fcom_insn, 6, SUF_S, 0xD0, 0x02, 0, 0, CPU_FPU, 0, 0},
+ {"vpaddb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xFC, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"sldt", sldtmsw_insn, 6, SUF_Z, 0x00, 0x00, 0, 0, CPU_286, 0, 0},
+ {"fisttpq", fildstp_insn, 4, SUF_Q, 0x01, 0x00, 0x01, 0, CPU_SSE3, 0, 0},
+ {"vpmacsww", vpma_insn, 1, SUF_Z, 0x95, 0, 0, 0, CPU_XOP, 0, 0},
+ {"jne", jcc_insn, 9, SUF_Z, 0x05, 0, 0, 0, 0, 0, 0},
+ {"shldl", shlrd_insn, 9, SUF_L, 0xA4, 0, 0, 0, CPU_386, 0, 0},
+ {"cmc", onebyte_insn, 1, SUF_Z, 0xF5, 0, 0, 0, 0, 0, 0},
+ {"cmovs", cmovcc_insn, 3, SUF_Z, 0x08, 0, 0, 0, CPU_686, 0, 0},
+ {"movlpd", movhlp_insn, 3, SUF_Z, 0x66, 0x12, 0, 0, CPU_SSE2, 0, 0},
+ {"calll", call_insn, 30, SUF_L, 0, 0, 0, 0, CPU_386, 0, 0},
+ {"subb", arith_insn, 22, SUF_B, 0x28, 0x05, 0, 0, 0, 0, 0},
+ {"lmsww", prot286_insn, 1, SUF_W, 0x06, 0x01, 0, 0, CPU_286, CPU_Priv, 0},
+ {"vmrun", svm_rax_insn, 2, SUF_Z, 0xD8, 0, 0, 0, CPU_SVM, 0, 0},
+ {"cmovna", cmovcc_insn, 3, SUF_Z, 0x06, 0, 0, 0, CPU_686, 0, 0},
+ {"cmovnpw", cmovcc_insn, 3, SUF_W, 0x0B, 0, 0, 0, CPU_686, 0, 0},
+ {"bextrq", bextr_insn, 4, SUF_Q, 0, 0, 0, ONLY_64|ONLY_AVX, CPU_BMI1, 0, 0},
+ {"vpmacssww", vpma_insn, 1, SUF_Z, 0x85, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vdivss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5E, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"movabsl", movabs_insn, 9, SUF_L, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"callw", call_insn, 30, SUF_W, 0, 0, 0, 0, 0, 0, 0},
+ {"vpcomlew", vpcom_insn, 1, SUF_Z, 0xCD, 0x01, 0, 0, CPU_XOP, 0, 0},
+ {"fninit", twobyte_insn, 1, SUF_Z, 0xDB, 0xE3, 0, 0, CPU_FPU, 0, 0},
+ {"vpavgw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xE3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpltpd", ssecmp_128_insn, 3, SUF_Z, 0x01, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cpuid", twobyte_insn, 1, SUF_Z, 0x0F, 0xA2, 0, 0, CPU_486, 0, 0},
+ {"pmovzxwq", sse4m32_insn, 4, SUF_Z, 0x34, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"cmovnaew", cmovcc_insn, 3, SUF_W, 0x02, 0, 0, 0, CPU_686, 0, 0},
+ {"comiss", xmm_xmm32_insn, 4, SUF_Z, 0x00, 0x2F, 0, 0, CPU_SSE, 0, 0},
+ {"cmovnoq", cmovcc_insn, 3, SUF_Q, 0x01, 0, 0, ONLY_64, CPU_686, 0, 0},
+ {"negb", f6_insn, 4, SUF_B, 0x03, 0, 0, 0, 0, 0, 0},
+ {"vfnmadd231sd", vfma_sd_insn, 2, SUF_Z, 0xBD, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"xchgw", xchg_insn, 16, SUF_W, 0, 0, 0, 0, 0, 0, 0},
+ {"rexz", NULL, X86_REX>>8, 0x41, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"sbb", arith_insn, 22, SUF_Z, 0x18, 0x03, 0, 0, 0, 0, 0},
+ {"lslw", larlsl_insn, 6, SUF_W, 0x03, 0, 0, 0, CPU_286, CPU_Prot, 0},
+ {"cmovnzw", cmovcc_insn, 3, SUF_W, 0x05, 0, 0, 0, CPU_686, 0, 0},
+ {"vfrczpd", vfrc_pdps_insn, 2, SUF_Z, 0x01, 0, 0, 0, CPU_XOP, 0, 0},
+ {"bsrw", bsfr_insn, 3, SUF_W, 0xBD, 0, 0, 0, CPU_386, 0, 0},
+ {"fcomps", fcom_insn, 6, SUF_S, 0xD8, 0x03, 0, 0, CPU_FPU, 0, 0},
+ {"rorx", vex_gpr_reg_rm_0F_imm8_insn, 2, SUF_Z, 0xF2, 0x3A, 0xF0, ONLY_AVX, CPU_BMI2, 0, 0},
+ {"shufpd", xmm_xmm128_imm_insn, 1, SUF_Z, 0x66, 0xC6, 0, 0, CPU_SSE2, 0, 0},
+ {"vpcomleq", vpcom_insn, 1, SUF_Z, 0xCF, 0x01, 0, 0, CPU_XOP, 0, 0},
+ {"vcmpunordsd", ssecmp_64_insn, 4, SUF_Z, 0x03, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"minps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x5D, 0, 0, CPU_SSE, 0, 0},
+ {"vaesimc", aesimc_insn, 1, SUF_Z, 0x38, 0xDB, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"movhps", movhlp_insn, 3, SUF_Z, 0x00, 0x16, 0, 0, CPU_SSE, 0, 0},
+ {"vdivps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x5E, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"filds", fildstp_insn, 4, SUF_S, 0x00, 0x02, 0x05, 0, CPU_FPU, 0, 0},
+ {"adc", arith_insn, 22, SUF_Z, 0x10, 0x02, 0, 0, 0, 0, 0},
+ {"vtestpd", sse4_insn, 2, SUF_Z, 0x0F, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pfpnacc", now3d_insn, 1, SUF_Z, 0x8E, 0, 0, 0, CPU_3DNow, CPU_Athlon, 0},
+ {"vmovsldup", avx_xmm_xmm128_insn, 2, SUF_Z, 0xF3, 0x12, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpbroadcastb", vpbroadcastb_avx2_insn, 4, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"sahf", onebyte_insn, 1, SUF_Z, 0x9E, 0, 0, 0, 0, 0, 0},
+ {"vmovhps", movhlp_insn, 3, SUF_Z, 0x00, 0x16, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fpatan", twobyte_insn, 1, SUF_Z, 0xD9, 0xF3, 0, 0, CPU_FPU, 0, 0},
+ {"psubw", mmxsse2_insn, 2, SUF_Z, 0xF9, 0, 0, 0, CPU_MMX, 0, 0},
+ {"sqrtss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x51, 0, 0, CPU_SSE, 0, 0},
+ {"vpminuw", ssse3_insn, 5, SUF_Z, 0x3A, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"rex64z", NULL, X86_REX>>8, 0x49, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"cmovng", cmovcc_insn, 3, SUF_Z, 0x0E, 0, 0, 0, CPU_686, 0, 0},
+ {"cmovngq", cmovcc_insn, 3, SUF_Q, 0x0E, 0, 0, ONLY_64, CPU_686, 0, 0},
+ {"blcil", xop_gpr_reg_rm_09_insn, 2, SUF_L, 0x02, 0x06, 0, 0, CPU_386, CPU_TBM, 0},
+ {"setob", setcc_insn, 1, SUF_B, 0x00, 0, 0, 0, CPU_386, 0, 0},
+ {"xbts", xbts_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_Obs, CPU_Undoc},
+ {"loopne", loop_insn, 8, SUF_Z, 0x00, 0, 0, 0, 0, 0, 0},
+ {"fxch", fxch_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_FPU, 0, 0},
+ {"vfmsubadd132pd", vfma_pd_insn, 2, SUF_Z, 0x97, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vmovddup", vmovddup_insn, 3, SUF_Z, 0xF2, 0x12, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"enterq", enter_insn, 3, SUF_Q, 0, 0, 0, ONLY_64, CPU_186, 0, 0},
+ {"vpcomnequw", vpcom_insn, 1, SUF_Z, 0xED, 0x05, 0, 0, CPU_XOP, 0, 0},
+ {"vpunpckhdq", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x6A, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fnstenvs", onebytemem_insn, 1, SUF_S, 0x06, 0xD9, 0, 0, CPU_FPU, 0, 0},
+ {"phaddd", ssse3_insn, 5, SUF_Z, 0x02, 0, 0, 0, CPU_SSSE3, 0, 0},
+ {"vmovups", movau_insn, 6, SUF_Z, 0x00, 0x10, 0x01, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcomneuq", vpcom_insn, 1, SUF_Z, 0xEF, 0x05, 0, 0, CPU_XOP, 0, 0},
+ {"imul", imul_insn, 19, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
+ {"fimuls", fiarith_insn, 2, SUF_S, 0x01, 0xDA, 0, 0, CPU_FPU, 0, 0},
+ {"jg", jcc_insn, 9, SUF_Z, 0x0F, 0, 0, 0, 0, 0, 0},
+ {"fcoml", fcom_insn, 6, SUF_L, 0xD0, 0x02, 0, 0, CPU_FPU, 0, 0},
+ {"vxorpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x57, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfmaddsubps", fma_128_256_insn, 4, SUF_Z, 0x5C, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"vpaddw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xFD, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vbroadcasti128", vbroadcastif128_insn, 1, SUF_Z, 0x5A, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"vcvttpd2dqy", avx_cvt_xmm128_y_insn, 1, SUF_Z, 0x66, 0xE6, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"mov", mov_insn, 69, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
+ {"fmull", farith_insn, 7, SUF_L, 0xC8, 0xC8, 0x01, 0, CPU_FPU, 0, 0},
+ {"vpcomfalseub", vpcom_insn, 1, SUF_Z, 0xEC, 0x06, 0, 0, CPU_XOP, 0, 0},
+ {"xaddq", cmpxchgxadd_insn, 4, SUF_Q, 0xC0, 0, 0, ONLY_64, CPU_486, 0, 0},
+ {"inl", in_insn, 12, SUF_L, 0, 0, 0, 0, CPU_386, 0, 0},
+ {"t1mskcl", xop_gpr_reg_rm_09_insn, 2, SUF_L, 0x01, 0x07, 0, 0, CPU_386, CPU_TBM, 0},
+ {"nop", onebyte_insn, 1, SUF_Z, 0x90, 0, 0, 0, 0, 0, 0},
+ {"rexx", NULL, X86_REX>>8, 0x44, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"vperm2f128", vperm2f128_insn, 1, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"tzcnt", cnt_insn, 3, SUF_Z, 0xBC, 0, 0, 0, CPU_BMI1, 0, 0},
+ {"hlt", onebyte_insn, 1, SUF_Z, 0xF4, 0, 0, 0, CPU_Priv, 0, 0},
+ {"vcmpeq_uqpd", ssecmp_128_insn, 3, SUF_Z, 0x08, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"sgdt", twobytemem_insn, 1, SUF_Z, 0x00, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
+ {"cwtl", onebyte_insn, 1, SUF_Z, 0x98, 0x20, 0, 0, CPU_386, 0, 0},
+ {"xorl", arith_insn, 22, SUF_L, 0x30, 0x06, 0, 0, CPU_386, 0, 0},
+ {"movapd", movau_insn, 6, SUF_Z, 0x66, 0x28, 0x01, 0, CPU_SSE2, 0, 0},
+ {"vpmovsxwq", sse4m32_insn, 4, SUF_Z, 0x24, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfmsubadd231pd", vfma_pd_insn, 2, SUF_Z, 0xB7, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"cvttsd2sil", cvt_rx_xmm64_insn, 4, SUF_L, 0xF2, 0x2C, 0, 0, CPU_SSE2, 0, 0},
+ {"cmpunordss", ssecmp_32_insn, 4, SUF_Z, 0x03, 0xF3, 0, 0, CPU_SSE, 0, 0},
+ {"vpcomneq", vpcom_insn, 1, SUF_Z, 0xCF, 0x05, 0, 0, CPU_XOP, 0, 0},
+ {"ffreep", ffree_insn, 1, SUF_Z, 0xDF, 0, 0, 0, CPU_686, CPU_FPU, CPU_Undoc},
+ {"vfnmsub213ss", vfma_ss_insn, 2, SUF_Z, 0xAF, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"outsb", onebyte_insn, 1, SUF_Z, 0x6E, 0x00, 0, 0, 0, 0, 0},
+ {"psubsiw", cyrixmmx_insn, 1, SUF_Z, 0x55, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
+ {"jng", jcc_insn, 9, SUF_Z, 0x0E, 0, 0, 0, 0, 0, 0},
+ {"vpcomltd", vpcom_insn, 1, SUF_Z, 0xCE, 0x00, 0, 0, CPU_XOP, 0, 0},
+ {"t1mskcq", xop_gpr_reg_rm_09_insn, 2, SUF_Q, 0x01, 0x07, 0, ONLY_64, CPU_TBM, 0, 0},
+ {"rdmsr", twobyte_insn, 1, SUF_Z, 0x0F, 0x32, 0, 0, CPU_586, CPU_Priv, 0},
+ {"notb", f6_insn, 4, SUF_B, 0x02, 0, 0, 0, 0, 0, 0},
+ {"idiv", div_insn, 8, SUF_Z, 0x07, 0, 0, 0, 0, 0, 0},
+ {"vpshuflw", xmm_xmm128_imm_256avx2_insn, 2, SUF_Z, 0xF2, 0x70, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"paddd", mmxsse2_insn, 2, SUF_Z, 0xFE, 0, 0, 0, CPU_MMX, 0, 0},
+ {"tzcntw", cnt_insn, 3, SUF_W, 0xBC, 0, 0, 0, CPU_BMI1, 0, 0},
+ {"pcmpgtd", mmxsse2_insn, 2, SUF_Z, 0x66, 0, 0, 0, CPU_MMX, 0, 0},
+ {"stosq", onebyte_insn, 1, SUF_Z, 0xAB, 0x40, 0, ONLY_64, 0, 0, 0},
+ {"arplw", arpl_insn, 1, SUF_W, 0, 0, 0, NOT_64, CPU_286, CPU_Prot, 0},
+ {"vpermilps", vpermil_insn, 4, SUF_Z, 0x04, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfnmadd231ps", vfma_ps_insn, 2, SUF_Z, 0xBC, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"xadd", cmpxchgxadd_insn, 4, SUF_Z, 0xC0, 0, 0, 0, CPU_486, 0, 0},
+ {"shrdl", shlrd_insn, 9, SUF_L, 0xAC, 0, 0, 0, CPU_386, 0, 0},
+ {"fscale", twobyte_insn, 1, SUF_Z, 0xD9, 0xFD, 0, 0, CPU_FPU, 0, 0},
+ {"rdpmc", twobyte_insn, 1, SUF_Z, 0x0F, 0x33, 0, 0, CPU_686, 0, 0},
+ {"cvtpi2ps", cvt_xmm_mm_ps_insn, 1, SUF_Z, 0x2A, 0, 0, 0, CPU_SSE, 0, 0},
+ {"cmovgq", cmovcc_insn, 3, SUF_Q, 0x0F, 0, 0, ONLY_64, CPU_686, 0, 0},
+ {"vfnmsubps", fma_128_256_insn, 4, SUF_Z, 0x7C, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"seto", setcc_insn, 1, SUF_Z, 0x00, 0, 0, 0, CPU_386, 0, 0},
+ {"jnae", jcc_insn, 9, SUF_Z, 0x02, 0, 0, 0, 0, 0, 0},
+ {"popcntw", cnt_insn, 3, SUF_W, 0xB8, 0, 0, 0, CPU_SSE42, 0, 0},
+ {"vpgatherqd", gather_32x_32y_128_insn, 2, SUF_Z, 0x91, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"salc", onebyte_insn, 1, SUF_Z, 0xD6, 0, 0, NOT_64, CPU_Undoc, 0, 0},
+ {"vcmpngesd", ssecmp_64_insn, 4, SUF_Z, 0x09, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcomgeud", vpcom_insn, 1, SUF_Z, 0xEE, 0x03, 0, 0, CPU_XOP, 0, 0},
+ {"blcicq", xop_gpr_reg_rm_09_insn, 2, SUF_Q, 0x01, 0x05, 0, ONLY_64, CPU_TBM, 0, 0},
+ {"pcmpestri", sse4pcmpstr_insn, 1, SUF_Z, 0x61, 0, 0, 0, CPU_SSE42, 0, 0},
+ {"sarxq", vex_gpr_reg_rm_nds_0F_insn, 2, SUF_Q, 0xF3, 0x38, 0xF7, ONLY_64|ONLY_AVX, CPU_BMI2, 0, 0},
+ {"lddqu", lddqu_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_SSE3, 0, 0},
+ {"vpcomtruew", vpcom_insn, 1, SUF_Z, 0xCD, 0x07, 0, 0, CPU_XOP, 0, 0},
+ {"fxam", twobyte_insn, 1, SUF_Z, 0xD9, 0xE5, 0, 0, CPU_FPU, 0, 0},
+ {"crc32b", crc32_insn, 5, SUF_B, 0, 0, 0, 0, CPU_386, CPU_SSE42, 0},
+ {"vpinsrw", pinsrw_insn, 9, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vphsubdq", vphaddsub_insn, 1, SUF_Z, 0xE3, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vfmsubaddps", fma_128_256_insn, 4, SUF_Z, 0x5E, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"btw", bittest_insn, 6, SUF_W, 0xA3, 0x04, 0, 0, CPU_386, 0, 0},
+ {"pi2fw", now3d_insn, 1, SUF_Z, 0x0C, 0, 0, 0, CPU_3DNow, CPU_Athlon, 0},
+ {"movhlps", movhllhps_insn, 2, SUF_Z, 0x12, 0, 0, 0, CPU_SSE, 0, 0},
+ {"divsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5E, 0, 0, CPU_SSE2, 0, 0},
+ {"vcmpge_oqps", ssecmp_128_insn, 3, SUF_Z, 0x1D, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"rexxyz", NULL, X86_REX>>8, 0x47, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"pf2id", now3d_insn, 1, SUF_Z, 0x1D, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"andnps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x55, 0, 0, CPU_SSE, 0, 0},
+ {"cmovzq", cmovcc_insn, 3, SUF_Q, 0x04, 0, 0, ONLY_64, CPU_686, 0, 0},
+ {"cwd", onebyte_insn, 1, SUF_Z, 0x99, 0x10, 0, 0, 0, 0, 0},
+ {"blcsl", xop_gpr_reg_rm_09_insn, 2, SUF_L, 0x01, 0x03, 0, 0, CPU_386, CPU_TBM, 0},
+ {"maxps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x5F, 0, 0, CPU_SSE, 0, 0},
+ {"comisd", xmm_xmm64_insn, 4, SUF_Z, 0x66, 0x2F, 0, 0, CPU_SSE2, 0, 0},
+ {"vcmpnle_uqps", ssecmp_128_insn, 3, SUF_Z, 0x16, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmovnzq", cmovcc_insn, 3, SUF_Q, 0x05, 0, 0, ONLY_64, CPU_686, 0, 0},
+ {"ljmpw", ljmpcall_insn, 7, SUF_W, 0x05, 0xEA, 0, 0, 0, 0, 0},
+ {"cmpeqps", ssecmp_128_insn, 3, SUF_Z, 0x00, 0, 0, 0, CPU_SSE, 0, 0},
+ {"orb", arith_insn, 22, SUF_B, 0x08, 0x01, 0, 0, 0, 0, 0},
+ {"fists", fiarith_insn, 2, SUF_S, 0x02, 0xDB, 0, 0, CPU_FPU, 0, 0},
+ {"vmaskmovps", vmaskmov_insn, 4, SUF_Z, 0x2C, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"xend", tsx_0x0F_0x01_insn, 1, SUF_Z, 0xD5, 0, 0, 0, CPU_TSX, 0, 0},
+ {"fiadd", fiarith_insn, 2, SUF_Z, 0x00, 0xDA, 0, 0, CPU_FPU, 0, 0},
+ {"jns", jcc_insn, 9, SUF_Z, 0x09, 0, 0, 0, 0, 0, 0},
+ {"vpcomfalseuw", vpcom_insn, 1, SUF_Z, 0xED, 0x06, 0, 0, CPU_XOP, 0, 0},
+ {"bsrl", bsfr_insn, 3, SUF_L, 0xBD, 0, 0, 0, CPU_386, 0, 0},
+ {"pabsb", ssse3_insn, 5, SUF_Z, 0x1C, 0, 0, 0, CPU_SSSE3, 0, 0},
+ {"vcmptruess", ssecmp_32_insn, 4, SUF_Z, 0x0F, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"sal", shift_insn, 16, SUF_Z, 0x04, 0, 0, 0, 0, 0, 0},
+ {"movzbl", movszx_insn, 5, SUF_B, 0xB6, 0, 0, 0, CPU_386, 0, 0},
+ {"packssdw", mmxsse2_insn, 2, SUF_Z, 0x6B, 0, 0, 0, CPU_MMX, 0, 0},
+ {"fcmovbe", fcmovcc_insn, 1, SUF_Z, 0xDA, 0xD0, 0, 0, CPU_686, CPU_FPU, 0},
+ {"orq", arith_insn, 22, SUF_Q, 0x08, 0x01, 0, ONLY_64, 0, 0, 0},
+ {"blsicq", xop_gpr_reg_rm_09_insn, 2, SUF_Q, 0x01, 0x06, 0, ONLY_64, CPU_TBM, 0, 0},
+ {"fiaddl", fiarith_insn, 2, SUF_L, 0x00, 0xDA, 0, 0, CPU_FPU, 0, 0},
+ {"fprem", twobyte_insn, 1, SUF_Z, 0xD9, 0xF8, 0, 0, CPU_FPU, 0, 0},
+ {"vpcomltw", vpcom_insn, 1, SUF_Z, 0xCD, 0x00, 0, 0, CPU_XOP, 0, 0},
+ {"sarl", shift_insn, 16, SUF_L, 0x07, 0, 0, 0, CPU_386, 0, 0},
+ {"shr", shift_insn, 16, SUF_Z, 0x05, 0, 0, 0, 0, 0, 0},
+ {"pushl", push_insn, 35, SUF_L, 0, 0, 0, 0, CPU_386, 0, 0},
+ {"imull", imul_insn, 19, SUF_L, 0, 0, 0, 0, CPU_386, 0, 0},
+ {"ftst", twobyte_insn, 1, SUF_Z, 0xD9, 0xE4, 0, 0, CPU_FPU, 0, 0},
+ {"vcmpeqps", ssecmp_128_insn, 3, SUF_Z, 0x00, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"lcalll", ljmpcall_insn, 7, SUF_L, 0x03, 0x9A, 0, 0, CPU_386, 0, 0},
+ {"lock", NULL, X86_LOCKREP>>8, 0xF0, 0, 0, 0, 0, 0, 0, 0},
+ {"cmovnbw", cmovcc_insn, 3, SUF_W, 0x03, 0, 0, 0, CPU_686, 0, 0},
+ {"movzxw", movszx_insn, 5, SUF_W, 0xB6, 0, 0, 0, CPU_386, 0, 0},
+ {"or", arith_insn, 22, SUF_Z, 0x08, 0x01, 0, 0, 0, 0, 0},
+ {"vcmpnle_uqpd", ssecmp_128_insn, 3, SUF_Z, 0x16, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"setl", setcc_insn, 1, SUF_Z, 0x0C, 0, 0, 0, CPU_386, 0, 0},
+ {"movntiq", movnti_insn, 2, SUF_Q, 0, 0, 0, ONLY_64, CPU_P4, 0, 0},
+ {"lfs", lfgss_insn, 3, SUF_Z, 0xB4, 0, 0, 0, CPU_386, 0, 0},
+ {"vroundss", sse4m32imm_insn, 4, SUF_Z, 0x0A, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"setzb", setcc_insn, 1, SUF_B, 0x04, 0, 0, 0, CPU_386, 0, 0},
+ {"pcmpistrm", sse4pcmpstr_insn, 1, SUF_Z, 0x62, 0, 0, 0, CPU_SSE42, 0, 0},
+ {"je", jcc_insn, 9, SUF_Z, 0x04, 0, 0, 0, 0, 0, 0},
+ {"psraw", pshift_insn, 4, SUF_Z, 0xE1, 0x71, 0x04, 0, CPU_MMX, 0, 0},
+ {"shlx", vex_gpr_reg_rm_nds_0F_insn, 2, SUF_Z, 0x66, 0x38, 0xF7, ONLY_AVX, CPU_BMI2, 0, 0},
+ {"mfence", threebyte_insn, 1, SUF_Z, 0x0F, 0xAE, 0xF0, 0, CPU_P3, 0, 0},
+ {"vcvtsd2siq", cvt_rx_xmm64_insn, 4, SUF_Q, 0xF2, 0x2D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vtestps", sse4_insn, 2, SUF_Z, 0x0E, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"verww", prot286_insn, 1, SUF_W, 0x05, 0x00, 0, 0, CPU_286, CPU_Prot, 0},
+ {"vfmsubaddpd", fma_128_256_insn, 4, SUF_Z, 0x5F, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"fyl2xp1", twobyte_insn, 1, SUF_Z, 0xD9, 0xF9, 0, 0, CPU_FPU, 0, 0},
+ {"vunpckhpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x15, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vsubps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x5C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"divss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5E, 0, 0, CPU_SSE, 0, 0},
+ {"blcfilll", xop_gpr_reg_rm_09_insn, 2, SUF_L, 0x01, 0x01, 0, 0, CPU_386, CPU_TBM, 0},
+ {"vcmptrue_uspd", ssecmp_128_insn, 3, SUF_Z, 0x1F, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vorpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x56, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"setgeb", setcc_insn, 1, SUF_B, 0x0D, 0, 0, 0, CPU_386, 0, 0},
+ {"vmxon", vmxthreebytemem_insn, 1, SUF_Z, 0xF3, 0, 0, 0, CPU_P4, 0, 0},
+ {"vpmaskmovd", vmaskmov_insn, 4, SUF_Z, 0x8C, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"vfnmaddpd", fma_128_256_insn, 4, SUF_Z, 0x79, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"cmovpl", cmovcc_insn, 3, SUF_L, 0x0A, 0, 0, 0, CPU_686, 0, 0},
+ {"pabsw", ssse3_insn, 5, SUF_Z, 0x1D, 0, 0, 0, CPU_SSSE3, 0, 0},
+ {"cmovnge", cmovcc_insn, 3, SUF_Z, 0x0C, 0, 0, 0, CPU_686, 0, 0},
+ {"aword", NULL, X86_ADDRSIZE>>8, 0x10, 0, 0, 0, 0, 0, 0, 0},
+ {"sscaq", onebyte_insn, 1, SUF_Z, 0xAF, 0x40, 0, ONLY_64, 0, 0, 0},
+ {"fstenvs", twobytemem_insn, 1, SUF_S, 0x06, 0x9B, 0xD9, 0, CPU_FPU, 0, 0},
+ {"vpmovzxbw", sse4m64_insn, 4, SUF_Z, 0x30, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpsllw", vpshift_insn, 8, SUF_Z, 0xF1, 0x71, 0x06, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpabsw", avx2_ssse3_2op_insn, 2, SUF_Z, 0x1D, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"popf", onebyte_insn, 1, SUF_Z, 0x9D, 0x00, 0x40, 0, 0, 0, 0},
+ {"vcmpunord_sss", ssecmp_32_insn, 4, SUF_Z, 0x13, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"bsf", bsfr_insn, 3, SUF_Z, 0xBC, 0, 0, 0, CPU_386, 0, 0},
+ {"cmovaw", cmovcc_insn, 3, SUF_W, 0x07, 0, 0, 0, CPU_686, 0, 0},
+ {"psrlq", pshift_insn, 4, SUF_Z, 0xD3, 0x73, 0x02, 0, CPU_MMX, 0, 0},
+ {"divw", div_insn, 8, SUF_W, 0x06, 0, 0, 0, 0, 0, 0},
+ {"cmovnal", cmovcc_insn, 3, SUF_L, 0x06, 0, 0, 0, CPU_686, 0, 0},
+ {"vpcmpeqq", ssse3_insn, 5, SUF_Z, 0x29, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmovnaq", cmovcc_insn, 3, SUF_Q, 0x06, 0, 0, ONLY_64, CPU_686, 0, 0},
+ {"cmove", cmovcc_insn, 3, SUF_Z, 0x04, 0, 0, 0, CPU_686, 0, 0},
+ {"popaw", onebyte_insn, 1, SUF_Z, 0x61, 0x10, 0, NOT_64, CPU_186, 0, 0},
+ {"invvpidq", eptvpid_insn, 2, SUF_Q, 0x01, 0, 0, ONLY_64, CPU_EPTVPID, 0, 0},
+ {"vcvtdq2ps", avx_xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x5B, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vrcpps", avx_xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x53, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"packsswb", mmxsse2_insn, 2, SUF_Z, 0x63, 0, 0, 0, CPU_MMX, 0, 0},
+ {"sarw", shift_insn, 16, SUF_W, 0x07, 0, 0, 0, 0, 0, 0},
+ {"pfrcpit1", now3d_insn, 1, SUF_Z, 0xA6, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"btcl", bittest_insn, 6, SUF_L, 0xBB, 0x07, 0, 0, CPU_386, 0, 0},
+ {"rolb", shift_insn, 16, SUF_B, 0x00, 0, 0, 0, 0, 0, 0},
+ {"vphadddq", vphaddsub_insn, 1, SUF_Z, 0xCB, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vpmaxsw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xEE, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpminsw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xEA, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"jnz", jcc_insn, 9, SUF_Z, 0x05, 0, 0, 0, 0, 0, 0},
+ {"vphsubd", ssse3_insn, 5, SUF_Z, 0x06, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vblendvps", avx_sse4xmm0_insn, 2, SUF_Z, 0x4A, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vhaddps", xmm_xmm128_256_insn, 4, SUF_Z, 0xF2, 0x7C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"lidtl", twobytemem_insn, 1, SUF_L, 0x03, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
+ {"divq", div_insn, 8, SUF_Q, 0x06, 0, 0, ONLY_64, 0, 0, 0},
+ {"outb", out_insn, 12, SUF_B, 0, 0, 0, 0, 0, 0, 0},
+ {"setnsb", setcc_insn, 1, SUF_B, 0x09, 0, 0, 0, CPU_386, 0, 0},
+ {"vcmpfalse_ospd", ssecmp_128_insn, 3, SUF_Z, 0x1B, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"jnb", jcc_insn, 9, SUF_Z, 0x03, 0, 0, 0, 0, 0, 0},
+ {"vpmovsxdq", sse4m64_insn, 4, SUF_Z, 0x25, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"adcw", arith_insn, 22, SUF_W, 0x10, 0x02, 0, 0, 0, 0, 0},
+ {"cmovbel", cmovcc_insn, 3, SUF_L, 0x06, 0, 0, 0, CPU_686, 0, 0},
+ {"cmovaeq", cmovcc_insn, 3, SUF_Q, 0x03, 0, 0, ONLY_64, CPU_686, 0, 0},
+ {"fcmovnu", fcmovcc_insn, 1, SUF_Z, 0xDB, 0xD8, 0, 0, CPU_686, CPU_FPU, 0},
+ {"idivb", div_insn, 8, SUF_B, 0x07, 0, 0, 0, 0, 0, 0},
+ {"sgdtl", twobytemem_insn, 1, SUF_L, 0x00, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
+ {"jmpl", jmp_insn, 31, SUF_L, 0, 0, 0, 0, CPU_386, 0, 0},
+ {"fisttp", fildstp_insn, 4, SUF_Z, 0x01, 0x00, 0x01, 0, CPU_SSE3, 0, 0},
+ {"vcmpord_sps", ssecmp_128_insn, 3, SUF_Z, 0x17, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"haddps", xmm_xmm128_insn, 2, SUF_Z, 0xF2, 0x7C, 0, 0, CPU_SSE3, 0, 0},
+ {"rolw", shift_insn, 16, SUF_W, 0x00, 0, 0, 0, 0, 0, 0},
+ {"vcvtpd2dqy", avx_cvt_xmm128_y_insn, 1, SUF_Z, 0xF2, 0xE6, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"bt", bittest_insn, 6, SUF_Z, 0xA3, 0x04, 0, 0, CPU_386, 0, 0},
+ {"vcmpfalsepd", ssecmp_128_insn, 3, SUF_Z, 0x0B, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpleps", ssecmp_128_insn, 3, SUF_Z, 0x02, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vphaddubd", vphaddsub_insn, 1, SUF_Z, 0xD2, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vfnmsub132ss", vfma_ss_insn, 2, SUF_Z, 0x9F, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"cmovnow", cmovcc_insn, 3, SUF_W, 0x01, 0, 0, 0, CPU_686, 0, 0},
+ {"cvtps2dq", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x5B, 0, 0, CPU_SSE2, 0, 0},
+ {"bsrq", bsfr_insn, 3, SUF_Q, 0xBD, 0, 0, ONLY_64, CPU_386, 0, 0},
+ {"vcmpord_spd", ssecmp_128_insn, 3, SUF_Z, 0x17, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcomd", vpcom_imm_insn, 1, SUF_Z, 0xCE, 0, 0, 0, CPU_XOP, 0, 0},
+ {"jnle", jcc_insn, 9, SUF_Z, 0x0F, 0, 0, 0, 0, 0, 0},
+ {"vhsubps", xmm_xmm128_256_insn, 4, SUF_Z, 0xF2, 0x7D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"jcxz", jcxz_insn, 2, SUF_Z, 0x10, 0, 0, 0, 0, 0, 0},
+ {"fsavel", twobytemem_insn, 1, SUF_L, 0x06, 0x9B, 0xDD, 0, CPU_FPU, 0, 0},
+ {"cmovnbq", cmovcc_insn, 3, SUF_Q, 0x03, 0, 0, ONLY_64, CPU_686, 0, 0},
+ {"lidtw", twobytemem_insn, 1, SUF_W, 0x03, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
+ {"vcvtss2si", cvt_rx_xmm32_insn, 4, SUF_Z, 0xF3, 0x2D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"mulw", f6_insn, 4, SUF_W, 0x04, 0, 0, 0, 0, 0, 0},
+ {"vbroadcastsd", vbroadcastsd_insn, 2, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmovlel", cmovcc_insn, 3, SUF_L, 0x0E, 0, 0, 0, CPU_686, 0, 0},
+ {"pmovmskbq", pmovmskb_insn, 6, SUF_Q, 0, 0, 0, ONLY_64, CPU_MMX, CPU_P3, 0},
+ {"frstorl", onebytemem_insn, 1, SUF_L, 0x04, 0xDD, 0, 0, CPU_FPU, 0, 0},
+ {"cvttss2si", cvt_rx_xmm32_insn, 4, SUF_Z, 0xF3, 0x2C, 0, 0, CPU_386, CPU_SSE, 0},
+ {"cmpnltpd", ssecmp_128_insn, 3, SUF_Z, 0x05, 0x66, 0, 0, CPU_SSE, 0, 0},
+ {"vpcomgtw", vpcom_insn, 1, SUF_Z, 0xCD, 0x02, 0, 0, CPU_XOP, 0, 0},
+ {"xaddl", cmpxchgxadd_insn, 4, SUF_L, 0xC0, 0, 0, 0, CPU_486, 0, 0},
+ {"vpmulhw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xE5, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"lgsq", lfgss_insn, 3, SUF_Q, 0xB5, 0, 0, ONLY_64, CPU_386, 0, 0},
+ {"boundl", bound_insn, 2, SUF_L, 0, 0, 0, NOT_64, CPU_386, 0, 0},
+ {"vmaxpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x5F, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"movntdqa", movntdqa_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"xstorerng", padlock_insn, 1, SUF_Z, 0xC0, 0x00, 0xA7, 0, CPU_PadLock, 0, 0},
+ {"fxsaveq", twobytemem_insn, 1, SUF_Q, 0x00, 0x0F, 0xAE, 0, CPU_686, CPU_FPU, 0},
+ {"cmplepd", ssecmp_128_insn, 3, SUF_Z, 0x02, 0x66, 0, 0, CPU_SSE, 0, 0},
+ {"vpunpckhwd", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x69, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fiadds", fiarith_insn, 2, SUF_S, 0x00, 0xDA, 0, 0, CPU_FPU, 0, 0},
+ {"bsfq", bsfr_insn, 3, SUF_Q, 0xBC, 0, 0, ONLY_64, CPU_386, 0, 0},
+ {"cvtss2si", cvt_rx_xmm32_insn, 4, SUF_Z, 0xF3, 0x2D, 0, 0, CPU_386, CPU_SSE, 0},
+ {"pushw", push_insn, 35, SUF_W, 0, 0, 0, 0, 0, 0, 0},
+ {"vphaddsw", ssse3_insn, 5, SUF_Z, 0x03, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"prefetcht2", twobytemem_insn, 1, SUF_Z, 0x03, 0x0F, 0x18, 0, CPU_P3, 0, 0},
+ {"setnae", setcc_insn, 1, SUF_Z, 0x02, 0, 0, 0, CPU_386, 0, 0},
+ {"xor", arith_insn, 22, SUF_Z, 0x30, 0x06, 0, 0, 0, 0, 0},
+ {"pshufw", pshufw_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_MMX, CPU_P3, 0},
+ {"div", div_insn, 8, SUF_Z, 0x06, 0, 0, 0, 0, 0, 0},
+ {"xabort", tsx_xabort_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_TSX, 0, 0},
+ {"vmovntdq", movnt_insn, 2, SUF_Z, 0x66, 0xE7, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"das", onebyte_insn, 1, SUF_Z, 0x2F, 0, 0, NOT_64, 0, 0, 0},
+ {"notw", f6_insn, 4, SUF_W, 0x02, 0, 0, 0, 0, 0, 0},
+ {"monitor", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xC8, 0, CPU_SSE3, 0, 0},
+ {"pmuludq", mmxsse2_insn, 2, SUF_Z, 0xF4, 0, 0, 0, CPU_SSE2, 0, 0},
+ {"psignd", ssse3_insn, 5, SUF_Z, 0x0A, 0, 0, 0, CPU_SSSE3, 0, 0},
+ {"vpmaxuw", ssse3_insn, 5, SUF_Z, 0x3E, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"rexxy", NULL, X86_REX>>8, 0x46, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"vcmpnlt_uqps", ssecmp_128_insn, 3, SUF_Z, 0x15, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"decq", incdec_insn, 6, SUF_Q, 0x48, 0x01, 0, ONLY_64, 0, 0, 0},
+ {"fsub", farith_insn, 7, SUF_Z, 0xE8, 0xE0, 0x04, 0, CPU_FPU, 0, 0},
+ {"ficoms", fiarith_insn, 2, SUF_S, 0x02, 0xDA, 0, 0, CPU_FPU, 0, 0},
+ {"btrw", bittest_insn, 6, SUF_W, 0xB3, 0x06, 0, 0, CPU_386, 0, 0},
+ {"vfnmsub213sd", vfma_sd_insn, 2, SUF_Z, 0xAF, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"setnob", setcc_insn, 1, SUF_B, 0x01, 0, 0, 0, CPU_386, 0, 0},
+ {"vpcomgeub", vpcom_insn, 1, SUF_Z, 0xEC, 0x03, 0, 0, CPU_XOP, 0, 0},
+ {"cmovz", cmovcc_insn, 3, SUF_Z, 0x04, 0, 0, 0, CPU_686, 0, 0},
+ {"vpackuswb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x67, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cli", onebyte_insn, 1, SUF_Z, 0xFA, 0, 0, 0, 0, 0, 0},
+ {"pinsrd", pinsrd_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_SSE41, 0},
+ {"vfmsubadd213pd", vfma_pd_insn, 2, SUF_Z, 0xA7, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"setnab", setcc_insn, 1, SUF_B, 0x06, 0, 0, 0, CPU_386, 0, 0},
+ {"larw", larlsl_insn, 6, SUF_W, 0x02, 0, 0, 0, CPU_286, CPU_Prot, 0},
+ {"pusha", onebyte_insn, 1, SUF_Z, 0x60, 0x00, 0, NOT_64, CPU_186, 0, 0},
+ {"pfadd", now3d_insn, 1, SUF_Z, 0x9E, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"bzhil", vex_gpr_reg_rm_nds_0F_insn, 2, SUF_L, 0x00, 0x38, 0xF5, ONLY_AVX, CPU_BMI2, 0, 0},
+ {"cmovpoq", cmovcc_insn, 3, SUF_Q, 0x0B, 0, 0, ONLY_64, CPU_686, 0, 0},
+ {"blsfill", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x01, 0x02, 0, 0, CPU_386, CPU_TBM, 0},
+ {"cdq", onebyte_insn, 1, SUF_Z, 0x99, 0x20, 0, 0, CPU_386, 0, 0},
+ {"cvtss2siq", cvt_rx_xmm32_insn, 4, SUF_Q, 0xF3, 0x2D, 0, ONLY_64, CPU_SSE, 0, 0},
+ {"cmovnb", cmovcc_insn, 3, SUF_Z, 0x03, 0, 0, 0, CPU_686, 0, 0},
+ {"vcvttsd2siq", cvt_rx_xmm64_insn, 4, SUF_Q, 0xF2, 0x2C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"setae", setcc_insn, 1, SUF_Z, 0x03, 0, 0, 0, CPU_386, 0, 0},
+ {"movntps", movnt_insn, 2, SUF_Z, 0x00, 0x2B, 0, 0, CPU_SSE, 0, 0},
+ {"vcmpneq_oqpd", ssecmp_128_insn, 3, SUF_Z, 0x0C, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"lssq", lfgss_insn, 3, SUF_Q, 0xB2, 0, 0, ONLY_64, CPU_386, 0, 0},
+ {"jpe", jcc_insn, 9, SUF_Z, 0x0A, 0, 0, 0, 0, 0, 0},
+ {"fstcww", fstcw_insn, 1, SUF_W, 0, 0, 0, 0, CPU_FPU, 0, 0},
+ {"fnsave", onebytemem_insn, 1, SUF_Z, 0x06, 0xDD, 0, 0, CPU_FPU, 0, 0},
+ {"movntsd", movntsd_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SSE4a, 0, 0},
+ {"pblendvb", sse4xmm0_insn, 2, SUF_Z, 0x10, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"enterw", enter_insn, 3, SUF_W, 0, 0, 0, 0, CPU_186, 0, 0},
+ {"larl", larlsl_insn, 6, SUF_L, 0x02, 0, 0, 0, CPU_286, CPU_Prot, 0},
+ {"blendvps", sse4xmm0_insn, 2, SUF_Z, 0x14, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"pdepl", vex_gpr_reg_nds_rm_0F_insn, 2, SUF_L, 0xF2, 0x38, 0xF5, ONLY_AVX, CPU_BMI2, 0, 0},
+ {"jecxz", jcxz_insn, 2, SUF_Z, 0x20, 0, 0, 0, CPU_386, 0, 0},
+ {"blcmsk", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x02, 0x01, 0, 0, CPU_386, CPU_TBM, 0},
+ {"vpshad", amd_vpshift_insn, 2, SUF_Z, 0x9A, 0, 0, 0, CPU_XOP, 0, 0},
+ {"smsw", sldtmsw_insn, 6, SUF_Z, 0x04, 0x01, 0, 0, CPU_286, 0, 0},
+ {"vcvttps2dq", avx_xmm_xmm128_insn, 2, SUF_Z, 0xF3, 0x5B, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcvttss2si", cvt_rx_xmm32_insn, 4, SUF_Z, 0xF3, 0x2C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmovcw", cmovcc_insn, 3, SUF_W, 0x02, 0, 0, 0, CPU_686, 0, 0},
+ {"vpsubsb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xE8, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pfsubr", now3d_insn, 1, SUF_Z, 0xAA, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"dpps", sse4imm_insn, 2, SUF_Z, 0x40, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"pmulhrwc", cyrixmmx_insn, 1, SUF_Z, 0x59, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
+ {"fdecstp", twobyte_insn, 1, SUF_Z, 0xD9, 0xF6, 0, 0, CPU_FPU, 0, 0},
+ {"fld1", twobyte_insn, 1, SUF_Z, 0xD9, 0xE8, 0, 0, CPU_FPU, 0, 0},
+ {"lslq", larlsl_insn, 6, SUF_Q, 0x03, 0, 0, ONLY_64, CPU_286, CPU_Prot, 0},
+ {"movsldup", xmm_xmm128_insn, 2, SUF_Z, 0xF3, 0x12, 0, 0, CPU_SSE3, 0, 0},
+ {"vfnmadd213ps", vfma_ps_insn, 2, SUF_Z, 0xAC, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vorps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x56, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fxtract", twobyte_insn, 1, SUF_Z, 0xD9, 0xF4, 0, 0, CPU_FPU, 0, 0},
+ {"xrstor", twobytemem_insn, 1, SUF_Z, 0x05, 0x0F, 0xAE, 0, CPU_386, CPU_XSAVE, 0},
+ {"vfnmadd132pd", vfma_pd_insn, 2, SUF_Z, 0x9C, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"cmovsw", cmovcc_insn, 3, SUF_W, 0x08, 0, 0, 0, CPU_686, 0, 0},
+ {"vpcomnew", vpcom_insn, 1, SUF_Z, 0xCD, 0x05, 0, 0, CPU_XOP, 0, 0},
+ {"cmovc", cmovcc_insn, 3, SUF_Z, 0x02, 0, 0, 0, CPU_686, 0, 0},
+ {"cmpxchg8bq", cmpxchg8b_insn, 1, SUF_Q, 0, 0, 0, 0, CPU_586, 0, 0},
+ {"roundss", sse4m32imm_insn, 4, SUF_Z, 0x0A, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vsqrtss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x51, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"rcrb", shift_insn, 16, SUF_B, 0x03, 0, 0, 0, 0, 0, 0},
+ {"vmptrld", vmxtwobytemem_insn, 1, SUF_Z, 0x06, 0, 0, 0, CPU_P4, 0, 0},
+ {"popal", onebyte_insn, 1, SUF_Z, 0x61, 0x20, 0, NOT_64, CPU_386, 0, 0},
+ {"sysretq", twobyte_insn, 1, SUF_Q, 0x0F, 0x07, 0, 0, CPU_686, CPU_AMD, CPU_Priv},
+ {"setle", setcc_insn, 1, SUF_Z, 0x0E, 0, 0, 0, CPU_386, 0, 0},
+ {"jnl", jcc_insn, 9, SUF_Z, 0x0D, 0, 0, 0, 0, 0, 0},
+ {"ucomisd", xmm_xmm64_insn, 4, SUF_Z, 0x66, 0x2E, 0, 0, CPU_SSE2, 0, 0},
+ {"sbbw", arith_insn, 22, SUF_W, 0x18, 0x03, 0, 0, 0, 0, 0},
+ {"fbstp", fbldstp_insn, 1, SUF_Z, 0x06, 0, 0, 0, CPU_FPU, 0, 0},
+ {"vpcomtrueub", vpcom_insn, 1, SUF_Z, 0xEC, 0x07, 0, 0, CPU_XOP, 0, 0},
+ {"paddb", mmxsse2_insn, 2, SUF_Z, 0xFC, 0, 0, 0, CPU_MMX, 0, 0},
+ {"cmovnll", cmovcc_insn, 3, SUF_L, 0x0D, 0, 0, 0, CPU_686, 0, 0},
+ {"cvtss2sd", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5A, 0, 0, CPU_SSE2, 0, 0},
+ {"vpcmpeqd", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x76, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmovnl", cmovcc_insn, 3, SUF_Z, 0x0D, 0, 0, 0, CPU_686, 0, 0},
+ {"vpcomltb", vpcom_insn, 1, SUF_Z, 0xCC, 0x00, 0, 0, CPU_XOP, 0, 0},
+ {"setngb", setcc_insn, 1, SUF_B, 0x0E, 0, 0, 0, CPU_386, 0, 0},
+ {"vphaddudq", vphaddsub_insn, 1, SUF_Z, 0xDB, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vpmovsxbd", sse4m32_insn, 4, SUF_Z, 0x21, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"loopzq", loopq_insn, 4, SUF_Z, 0x01, 0x40, 0, ONLY_64, 0, 0, 0},
+ {"cmovnle", cmovcc_insn, 3, SUF_Z, 0x0F, 0, 0, 0, CPU_686, 0, 0},
+ {"vcmpgepd", ssecmp_128_insn, 3, SUF_Z, 0x0D, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"btcq", bittest_insn, 6, SUF_Q, 0xBB, 0x07, 0, ONLY_64, CPU_386, 0, 0},
+ {"rcrl", shift_insn, 16, SUF_L, 0x03, 0, 0, 0, CPU_386, 0, 0},
+ {"vmovntdqa", movntdqa_insn, 2, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmovcl", cmovcc_insn, 3, SUF_L, 0x02, 0, 0, 0, CPU_686, 0, 0},
+ {"vcmpeq_ospd", ssecmp_128_insn, 3, SUF_Z, 0x10, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"f2xm1", twobyte_insn, 1, SUF_Z, 0xD9, 0xF0, 0, 0, CPU_FPU, 0, 0},
+ {"vpmacssdd", vpma_insn, 1, SUF_Z, 0x8E, 0, 0, 0, CPU_XOP, 0, 0},
+ {"leal", lea_insn, 3, SUF_L, 0, 0, 0, 0, CPU_386, 0, 0},
+ {"vpcomeqd", vpcom_insn, 1, SUF_Z, 0xCE, 0x04, 0, 0, CPU_XOP, 0, 0},
+ {"ljmpq", ljmpcall_insn, 7, SUF_Q, 0x05, 0xEA, 0, ONLY_64, 0, 0, 0},
+ {"vpbroadcastd", vpbroadcastd_avx2_insn, 4, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"jnp", jcc_insn, 9, SUF_Z, 0x0B, 0, 0, 0, 0, 0, 0},
+ {"vpcomgeuq", vpcom_insn, 1, SUF_Z, 0xEF, 0x03, 0, 0, CPU_XOP, 0, 0},
+ {"prefetchnta", twobytemem_insn, 1, SUF_Z, 0x00, 0x0F, 0x18, 0, CPU_P3, 0, 0},
+ {"bswapl", bswap_insn, 2, SUF_L, 0, 0, 0, 0, CPU_486, 0, 0},
+ {"pmovsxbd", sse4m32_insn, 4, SUF_Z, 0x21, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"lzcnt", cnt_insn, 3, SUF_Z, 0xBD, 0, 0, 0, CPU_LZCNT, 0, 0},
+ {"sha256msg1", intel_SHA256MSG1_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SHA, 0, 0},
+ {"cmovnaw", cmovcc_insn, 3, SUF_W, 0x06, 0, 0, 0, CPU_686, 0, 0},
+ {"ficom", fiarith_insn, 2, SUF_Z, 0x02, 0xDA, 0, 0, CPU_FPU, 0, 0},
+ {"vmovntpd", movnt_insn, 2, SUF_Z, 0x66, 0x2B, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpngess", ssecmp_32_insn, 4, SUF_Z, 0x09, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fisubr", fiarith_insn, 2, SUF_Z, 0x05, 0xDA, 0, 0, CPU_FPU, 0, 0},
+ {"vfmaddsub132ps", vfma_ps_insn, 2, SUF_Z, 0x96, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vaddsubps", xmm_xmm128_256_insn, 4, SUF_Z, 0xF2, 0xD0, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpbroadcastq", vpbroadcastq_avx2_insn, 4, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"cmovlq", cmovcc_insn, 3, SUF_Q, 0x0C, 0, 0, ONLY_64, CPU_686, 0, 0},
+ {"inveptq", eptvpid_insn, 2, SUF_Q, 0x00, 0, 0, ONLY_64, CPU_EPTVPID, 0, 0},
+ {"vmulps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x59, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pclmulqdq", pclmulqdq_insn, 2, SUF_Z, 0x3A, 0x44, 0, 0, CPU_AVX, 0, 0},
+ {"vfmsub213ps", vfma_ps_insn, 2, SUF_Z, 0xAA, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"phsubd", ssse3_insn, 5, SUF_Z, 0x06, 0, 0, 0, CPU_SSSE3, 0, 0},
+ {"fmulp", farithp_insn, 3, SUF_Z, 0xC8, 0, 0, 0, CPU_FPU, 0, 0},
+ {"lcallw", ljmpcall_insn, 7, SUF_W, 0x03, 0x9A, 0, 0, 0, 0, 0},
+ {"fisub", fiarith_insn, 2, SUF_Z, 0x04, 0xDA, 0, 0, CPU_FPU, 0, 0},
+ {"vpackusdw", ssse3_insn, 5, SUF_Z, 0x2B, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"smintold", twobyte_insn, 1, SUF_Z, 0x0F, 0x7E, 0, 0, CPU_486, CPU_Cyrix, CPU_Obs},
+ {"vpgatherqq", gather_64x_64y_insn, 2, SUF_Z, 0x91, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"vcmpneq_uspd", ssecmp_128_insn, 3, SUF_Z, 0x14, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"blsiq", vex_gpr_ndd_rm_0F38_regext_insn, 2, SUF_Q, 0x00, 0xF3, 0x03, ONLY_64|ONLY_AVX, CPU_BMI1, 0, 0},
+ {"ltr", prot286_insn, 1, SUF_Z, 0x03, 0x00, 0, 0, CPU_286, CPU_Priv, CPU_Prot},
+ {"fild", fildstp_insn, 4, SUF_Z, 0x00, 0x02, 0x05, 0, CPU_FPU, 0, 0},
+ {"fldenvs", onebytemem_insn, 1, SUF_S, 0x04, 0xD9, 0, 0, CPU_FPU, 0, 0},
+ {"vmovdqa", movau_insn, 6, SUF_Z, 0x66, 0x6F, 0x10, ONLY_AVX, CPU_AVX, 0, 0},
+ {"shrxq", vex_gpr_reg_rm_nds_0F_insn, 2, SUF_Q, 0xF2, 0x38, 0xF7, ONLY_64|ONLY_AVX, CPU_BMI2, 0, 0},
+ {"fcmove", fcmovcc_insn, 1, SUF_Z, 0xDA, 0xC8, 0, 0, CPU_686, CPU_FPU, 0},
+ {"shrl", shift_insn, 16, SUF_L, 0x05, 0, 0, 0, CPU_386, 0, 0},
+ {"rclq", shift_insn, 16, SUF_Q, 0x02, 0, 0, ONLY_64, 0, 0, 0},
+ {"fnsavel", onebytemem_insn, 1, SUF_L, 0x06, 0xDD, 0, 0, CPU_FPU, 0, 0},
+ {"vgatherdpd", gather_64x_64x_insn, 2, SUF_Z, 0x92, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"pushaw", onebyte_insn, 1, SUF_Z, 0x60, 0x10, 0, NOT_64, CPU_186, 0, 0}
+ };
+ static const unsigned short tab[] = {
+ 555,1559,555,108,108,1495,0,108,0,0,2332,555,1208,0,108,1317,
+ 1317,1732,0,0,1495,555,463,517,1636,1317,988,0,1317,0,555,555,
+ 1929,108,1325,0,274,555,1633,1633,555,555,1325,555,2040,274,1325,1383,
+ 555,1383,0,555,1317,988,1732,555,274,1636,1633,1602,1325,1383,0,0,
+ 1325,1929,2332,1514,1383,108,0,0,1383,0,0,988,1317,274,1325,1633,
+ 1325,517,1383,0,0,1633,108,274,1325,555,108,0,939,0,1636,274,
+ 0,1995,274,1929,1383,0,0,1317,1929,555,0,0,0,555,0,0,
+ 0,0,0,1514,1383,1633,1325,0,1633,0,1325,274,0,274,1317,0,
+ 1602,1317,0,2260,555,1633,1633,0,555,1325,0,1732,1325,988,1325,0,
+ 1383,1495,1636,555,901,274,1495,555,1208,1912,1602,1325,1633,0,1325,2403,
+ 108,1383,1317,108,0,0,517,0,673,0,0,0,1495,1325,1208,0,
+ 555,1317,1317,2332,1325,0,1514,555,555,555,1732,1602,0,0,274,0,
+ 517,939,0,2242,1633,0,1633,555,0,1732,555,517,2040,1633,1633,0,
+ 1602,0,1317,274,1383,0,1633,517,0,673,1995,1732,1912,1636,1602,1732,
+ 673,0,1732,108,1325,555,555,1633,1317,0,1732,555,555,555,939,0,
+ 517,1602,0,0,1929,555,901,0,108,108,1325,517,108,1325,1317,0,
+ 1325,0,1208,0,0,0,108,274,555,0,1383,1325,555,1325,1633,0,
+ 1383,1602,1383,0,0,517,274,0,591,0,1455,555,555,1317,1325,555,
+ 555,1317,0,108,555,0,0,108,1633,555,1602,0,1732,555,0,108,
+ 0,1636,1633,1633,517,555,555,0,274,1317,0,1912,1325,1208,1325,555,
+ 1383,1633,108,1317,0,1325,1495,1929,1633,673,1633,463,1317,0,0,517,
+ 0,1317,1929,0,455,1633,0,0,1602,1929,0,1929,2332,1317,555,238,
+ 0,274,517,1325,1317,0,274,0,555,1317,555,555,0,1192,1325,463,
+ 555,939,1633,0,0,0,1929,1325,1359,555,1317,1317,274,1732,555,0,
+ 555,1929,0,1325,448,0,1636,555,988,1208,108,274,555,1325,1317,555,
+ 1929,1929,1317,1325,108,902,555,0,555,988,1325,901,1325,1317,1732,1101,
+ 1208,1633,1732,108,1317,1317,108,555,1929,555,1995,1317,1929,1383,517,0,
+ 0,1633,1602,1912,1929,274,2464,0,555,1929,1317,0,0,555,1317,2180,
+ 1327,0,517,555,1633,1732,1636,1602,517,1208,555,555,1383,1317,1633,0,
+ 988,1192,0,0,1495,673,673,0,555,1495,1325,517,1732,1633,555,1325,
+ 108,1929,1732,1325,988,555,1325,1208,1929,274,0,673,555,1732,1633,134,
+ 108,1929,673,1208,555,1208,0,0,2464,0,1633,1929,0,913,673,0,
+ 108,1317,1383,1633,0,555,0,0,1995,1317,0,2040,1317,1633,2332,108,
+ 1633,1495,555,0,0,2040,926,673,1929,1325,1732,1929,1342,1633,1636,517,
+ 0,0,517,182,1359,108,274,2040,108,108,0,0,555,988,517,1633,
+ 1633,1325,1929,673,1633,1912,1288,555,1732,1325,0,1325,517,1325,1325,555,
+ 0,0,2055,108,0,1732,517,274,901,1359,1929,1417,1636,926,555,0,
+ 2040,0,1633,591,1929,1325,274,926,1325,517,0,765,108,0,2040,1383,
+ 1514,901,1809,666,1732,1732,555,1732,555,0,0,1912,555,555,555,1929,
+ 1317,0,517,673,555,274,673,2398,1208,555,1853,1633,1325,555,0,555,
+ 0,1383,1325,1317,1929,108,2037,1383,108,1728,673,555,1835,591,1732,1995,
+ 0,0,939,555,666,1325,1011,555,0,1929,108,1602,2332,0,1325,1633,
+ 1732,1602,555,429,2040,1633,0,555,2040,1633,0,0,1325,1929,0,1912,
+ 2040,1011,0,1732,517,1732,0,0,1633,1325,555,108,517,469,1636,108,
+ 1011,0,0,0,1912,926,1929,988,1636,1633,274,182,1317,108,1325,0,
+ 555,988,0,0,0,1771,1633,939,1732,1995,0,858,0,555,1633,0,
+ 939,0,555,108,555,1633,1995,555,2510,0,516,939,1208,1912,858,1205,
+ 0,785,0,988,1495,274,1011,902,0,0,184,0,1514,108,0,0,
+ 1732,1633,469,1005,455,555,0,0,1455,428,1929,0,926,1633,1317,555,
+ 939,0,1317,939,0,1327,1929,0,1668,1732,555,0,1929,1633,1929,555,
+ 0,0,0,555,1607,1011,1325,1495,400,1011,1924,1383,901,469,1929,1835,
+ 2040,1602,227,1342,1325,1192,0,1728,2040,1343,517,227,1929,1591,1912,429,
+ 988,1559,1929,1325,0,1732,1317,0,902,0,555,0,1912,988,1633,1547,
+ 200,1618,1636,926,0,1636,274,999,274,1809,1929,673,902,555,1624,591,
+ 1636,591,0,517,555,1383,1633,0,1809,1679,0,673,1011,555,0,108,
+ 1929,1495,1111,0,988,0,108,0,1995,2403,238,514,0,1995,1317,0,
+ 1343,517,913,673,988,1614,1912,1325,673,816,1212,1325,1732,1929,1835,1602,
+ 0,1636,108,455,1912,555,0,816,555,274,1633,0,1325,0,1929,1111,
+ 634,1636,555,1636,1559,0,1636,0,1514,2040,657,1034,1771,1853,258,1633,
+ 901,555,1208,1912,1959,816,440,0,1807,1924,1514,316,182,1732,1383,1618,
+ 988,1591,1559,274,274,0,858,0,1383,1929,1602,1633,1514,1005,1617,0,
+ 2060,517,1715,988,1542,1732,820,1633,1011,1383,1851,0,1650,1633,108,1912,
+ 1995,916,1636,1995,1208,0,0,1325,274,1645,108,0,0,0,0,440,
+ 1670,2060,676,1602,1942,1420,1317,939,729,274,0,0,1965,274,975,238,
+ };
+
+ const struct insnprefix_parse_data *ret;
+ unsigned long rsl, val = phash_lookup(key, len, 0xbc1b868fUL);
+ rsl = ((val>>23)^tab[val&0x3ff]);
+ if (rsl >= 2070) return NULL;
+ ret = &pd[rsl];
+ if (strcmp(key, ret->name) != 0) return NULL;
+ return ret;
+}
+
+
diff --git a/contrib/tools/yasm/modules/x86insn_nasm.c b/contrib/tools/yasm/modules/x86insn_nasm.c
index 080c05cd7d..9d59b2e24b 100644
--- a/contrib/tools/yasm/modules/x86insn_nasm.c
+++ b/contrib/tools/yasm/modules/x86insn_nasm.c
@@ -1,1506 +1,1506 @@
-/* ANSI-C code produced by genperf */
-struct insnprefix_parse_data;
-static const struct insnprefix_parse_data *
-insnprefix_nasm_find(const char *key, size_t len)
-{
- static const struct insnprefix_parse_data pd[1454] = {
- {"vpsubd", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xFA, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpltps", ssecmp_128_insn, 3, SUF_Z, 0x01, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vmovhpd", movhlp_insn, 3, SUF_Z, 0x66, 0x16, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcomisd", avx_xmm_xmm64_insn, 2, SUF_Z, 0x66, 0x2F, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmpltpd", ssecmp_128_insn, 3, SUF_Z, 0x01, 0x66, 0, 0, CPU_SSE, 0, 0},
- {"pmvgezb", cyrixmmx_insn, 1, SUF_Z, 0x5C, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
- {"cmovle", cmovcc_insn, 3, SUF_Z, 0x0E, 0, 0, 0, CPU_686, 0, 0},
- {"cvttss2si", cvt_rx_xmm32_insn, 4, SUF_Z, 0xF3, 0x2C, 0, 0, CPU_386, CPU_SSE, 0},
- {"xbegin", tsx_xbegin_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_TSX, 0},
- {"vmovapd", movau_insn, 6, SUF_Z, 0x66, 0x28, 0x01, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmovc", cmovcc_insn, 3, SUF_Z, 0x02, 0, 0, 0, CPU_686, 0, 0},
- {"fninit", twobyte_insn, 1, SUF_Z, 0xDB, 0xE3, 0, 0, CPU_FPU, 0, 0},
- {"vfrczss", vfrczss_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_XOP, 0, 0},
- {"pushfd", onebyte_insn, 1, SUF_Z, 0x9C, 0x20, 0, NOT_64, CPU_386, 0, 0},
- {"vpcomleuq", vpcom_insn, 1, SUF_Z, 0xEF, 0x01, 0, 0, CPU_XOP, 0, 0},
- {"vpmulhuw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xE4, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpsubq", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xFB, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fstpt", fldstpt_insn, 1, SUF_Z, 0x07, 0, 0, 0, CPU_FPU, 0, 0},
- {"adc", arith_insn, 22, SUF_Z, 0x10, 0x02, 0, 0, 0, 0, 0},
- {"vmulss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x59, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"stosq", onebyte_insn, 1, SUF_Z, 0xAB, 0x40, 0, ONLY_64, 0, 0, 0},
- {"vzeroupper", vzero_insn, 1, SUF_Z, 0xC0, 0, 0, 0, CPU_AVX, 0, 0},
- {"jnle", jcc_insn, 9, SUF_Z, 0x0F, 0, 0, 0, 0, 0, 0},
- {"pmulhuw", mmxsse2_insn, 2, SUF_Z, 0xE4, 0, 0, 0, CPU_MMX, CPU_P3, 0},
- {"vcmpord_sss", ssecmp_32_insn, 4, SUF_Z, 0x17, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fxsave", twobytemem_insn, 1, SUF_Z, 0x00, 0x0F, 0xAE, 0, CPU_686, CPU_FPU, 0},
- {"setnbe", setcc_insn, 1, SUF_Z, 0x07, 0, 0, 0, CPU_386, 0, 0},
- {"insertps", insertps_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_SSE41, 0, 0},
- {"rdtsc", twobyte_insn, 1, SUF_Z, 0x0F, 0x31, 0, 0, CPU_586, 0, 0},
- {"psubd", mmxsse2_insn, 2, SUF_Z, 0xFA, 0, 0, 0, CPU_MMX, 0, 0},
- {"vcmptrue_uspd", ssecmp_128_insn, 3, SUF_Z, 0x1F, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vmulps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x59, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpeq_usps", ssecmp_128_insn, 3, SUF_Z, 0x18, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cvtpd2ps", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x5A, 0, 0, CPU_SSE2, 0, 0},
- {"vfnmsubsd", fma_128_m64_insn, 3, SUF_Z, 0x7F, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"vpcomtrueq", vpcom_insn, 1, SUF_Z, 0xCF, 0x07, 0, 0, CPU_XOP, 0, 0},
- {"vpclmulqdq", pclmulqdq_insn, 2, SUF_Z, 0x3A, 0x44, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmova", cmovcc_insn, 3, SUF_Z, 0x07, 0, 0, 0, CPU_686, 0, 0},
- {"vmaxss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5F, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pi2fw", now3d_insn, 1, SUF_Z, 0x0C, 0, 0, 0, CPU_3DNow, CPU_Athlon, 0},
- {"vfnmadd132pd", vfma_pd_insn, 2, SUF_Z, 0x9C, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vdpps", sse4imm_256_insn, 4, SUF_Z, 0x40, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpclmulhqhqdq", pclmulqdq_fixed_insn, 2, SUF_Z, 0x11, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfmsub213pd", vfma_pd_insn, 2, SUF_Z, 0xAA, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"pmaxsw", mmxsse2_insn, 2, SUF_Z, 0xEE, 0, 0, 0, CPU_MMX, CPU_P3, 0},
- {"vpaddq", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xD4, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcmov", vpcmov_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_XOP, 0, 0},
- {"vpcomud", vpcom_imm_insn, 1, SUF_Z, 0xEE, 0, 0, 0, CPU_XOP, 0, 0},
- {"vpslld", vpshift_insn, 8, SUF_Z, 0xF2, 0x72, 0x06, ONLY_AVX, CPU_AVX, 0, 0},
- {"shufpd", xmm_xmm128_imm_insn, 1, SUF_Z, 0x66, 0xC6, 0, 0, CPU_SSE2, 0, 0},
- {"vpcomgtud", vpcom_insn, 1, SUF_Z, 0xEE, 0x02, 0, 0, CPU_XOP, 0, 0},
- {"cdq", onebyte_insn, 1, SUF_Z, 0x99, 0x20, 0, 0, CPU_386, 0, 0},
- {"vcmpge_oqps", ssecmp_128_insn, 3, SUF_Z, 0x1D, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"rcpss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x53, 0, 0, CPU_SSE, 0, 0},
- {"aad", aadm_insn, 2, SUF_Z, 0x01, 0, 0, NOT_64, 0, 0, 0},
- {"vinserti128", vinsertif128_insn, 1, SUF_Z, 0x38, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"vphsubd", ssse3_insn, 5, SUF_Z, 0x06, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fdiv", farith_insn, 7, SUF_Z, 0xF8, 0xF0, 0x06, 0, CPU_FPU, 0, 0},
- {"fst", fst_insn, 3, SUF_Z, 0, 0, 0, 0, CPU_FPU, 0, 0},
- {"vpcomled", vpcom_insn, 1, SUF_Z, 0xCE, 0x01, 0, 0, CPU_XOP, 0, 0},
- {"setne", setcc_insn, 1, SUF_Z, 0x05, 0, 0, 0, CPU_386, 0, 0},
- {"xcryptcfb", padlock_insn, 1, SUF_Z, 0xE0, 0xF3, 0xA7, 0, CPU_PadLock, 0, 0},
- {"pmaddubsw", ssse3_insn, 5, SUF_Z, 0x04, 0, 0, 0, CPU_SSSE3, 0, 0},
- {"bt", bittest_insn, 6, SUF_Z, 0xA3, 0x04, 0, 0, CPU_386, 0, 0},
- {"blendvpd", sse4xmm0_insn, 2, SUF_Z, 0x15, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vroundss", sse4m32imm_insn, 4, SUF_Z, 0x0A, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"iret", onebyte_insn, 1, SUF_Z, 0xCF, 0, 0, 0, 0, 0, 0},
- {"movbe", movbe_insn, 6, SUF_Z, 0, 0, 0, 0, CPU_MOVBE, 0, 0},
- {"lar", larlsl_insn, 6, SUF_Z, 0x02, 0, 0, 0, CPU_286, CPU_Prot, 0},
- {"mulss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x59, 0, 0, CPU_SSE, 0, 0},
- {"or", arith_insn, 22, SUF_Z, 0x08, 0x01, 0, 0, 0, 0, 0},
- {"cmpxchg", cmpxchgxadd_insn, 4, SUF_Z, 0xB0, 0, 0, 0, CPU_486, 0, 0},
- {"vcvttpd2dq", avx_cvt_xmm128_insn, 2, SUF_Z, 0x66, 0xE6, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"lds", ldes_insn, 2, SUF_Z, 0xC5, 0, 0, NOT_64, 0, 0, 0},
- {"vphaddubw", vphaddsub_insn, 1, SUF_Z, 0xD1, 0, 0, 0, CPU_XOP, 0, 0},
- {"jg", jcc_insn, 9, SUF_Z, 0x0F, 0, 0, 0, 0, 0, 0},
- {"movzx", movszx_insn, 5, SUF_Z, 0xB6, 0, 0, 0, CPU_386, 0, 0},
- {"vpmacssdqh", vpma_insn, 1, SUF_Z, 0x8F, 0, 0, 0, CPU_XOP, 0, 0},
- {"addsubps", xmm_xmm128_insn, 2, SUF_Z, 0xF2, 0xD0, 0, 0, CPU_SSE3, 0, 0},
- {"fsin", twobyte_insn, 1, SUF_Z, 0xD9, 0xFE, 0, 0, CPU_286, CPU_FPU, 0},
- {"vpminsb", ssse3_insn, 5, SUF_Z, 0x38, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"psignd", ssse3_insn, 5, SUF_Z, 0x0A, 0, 0, 0, CPU_SSSE3, 0, 0},
- {"fucompp", twobyte_insn, 1, SUF_Z, 0xDA, 0xE9, 0, 0, CPU_286, CPU_FPU, 0},
- {"vpunpcklqdq", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x6C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pcmpeqb", mmxsse2_insn, 2, SUF_Z, 0x74, 0, 0, 0, CPU_MMX, 0, 0},
- {"extractps", extractps_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_SSE41, 0},
- {"btc", bittest_insn, 6, SUF_Z, 0xBB, 0x07, 0, 0, CPU_386, 0, 0},
- {"vpshlb", amd_vpshift_insn, 2, SUF_Z, 0x94, 0, 0, 0, CPU_XOP, 0, 0},
- {"ror", shift_insn, 16, SUF_Z, 0x01, 0, 0, 0, 0, 0, 0},
- {"vpsravd", vpshiftv_vexw0_avx2_insn, 2, SUF_Z, 0x46, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"setge", setcc_insn, 1, SUF_Z, 0x0D, 0, 0, 0, CPU_386, 0, 0},
- {"vpcomgtub", vpcom_insn, 1, SUF_Z, 0xEC, 0x02, 0, 0, CPU_XOP, 0, 0},
- {"vfmaddsub213ps", vfma_ps_insn, 2, SUF_Z, 0xA6, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vpcomleub", vpcom_insn, 1, SUF_Z, 0xEC, 0x01, 0, 0, CPU_XOP, 0, 0},
- {"cmpordps", ssecmp_128_insn, 3, SUF_Z, 0x07, 0, 0, 0, CPU_SSE, 0, 0},
- {"movhpd", movhlp_insn, 3, SUF_Z, 0x66, 0x16, 0, 0, CPU_SSE2, 0, 0},
- {"mwait", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xC9, 0, CPU_SSE3, 0, 0},
- {"vmovmskps", movmsk_insn, 4, SUF_Z, 0x00, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpaddd", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xFE, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfmsub132ss", vfma_ss_insn, 2, SUF_Z, 0x9B, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vpminuw", ssse3_insn, 5, SUF_Z, 0x3A, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpshaq", amd_vpshift_insn, 2, SUF_Z, 0x9B, 0, 0, 0, CPU_XOP, 0, 0},
- {"dec", incdec_insn, 6, SUF_Z, 0x48, 0x01, 0, 0, 0, 0, 0},
- {"vmovss", movss_insn, 4, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfmadd132ps", vfma_ps_insn, 2, SUF_Z, 0x98, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"int03", onebyte_insn, 1, SUF_Z, 0xCC, 0, 0, 0, 0, 0, 0},
- {"blcfill", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x01, 0x01, 0, 0, CPU_386, CPU_TBM, 0},
- {"phsubsw", ssse3_insn, 5, SUF_Z, 0x07, 0, 0, 0, CPU_SSSE3, 0, 0},
- {"subpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x5C, 0, 0, CPU_SSE2, 0, 0},
- {"stmxcsr", ldstmxcsr_insn, 1, SUF_Z, 0x03, 0, 0, 0, CPU_SSE, 0, 0},
- {"cmovl", cmovcc_insn, 3, SUF_Z, 0x0C, 0, 0, 0, CPU_686, 0, 0},
- {"vpcomneud", vpcom_insn, 1, SUF_Z, 0xEE, 0x05, 0, 0, CPU_XOP, 0, 0},
- {"xorps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x57, 0, 0, CPU_SSE, 0, 0},
- {"vcmpeq_usss", ssecmp_32_insn, 4, SUF_Z, 0x18, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpngt_uqsd", ssecmp_64_insn, 4, SUF_Z, 0x1A, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vsubps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x5C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vucomiss", avx_xmm_xmm32_insn, 2, SUF_Z, 0x00, 0x2E, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmp", arith_insn, 22, SUF_Z, 0x38, 0x07, 0, 0, 0, 0, 0},
- {"bsr", bsfr_insn, 3, SUF_Z, 0xBD, 0, 0, 0, CPU_386, 0, 0},
- {"cmc", onebyte_insn, 1, SUF_Z, 0xF5, 0, 0, 0, 0, 0, 0},
- {"vpshad", amd_vpshift_insn, 2, SUF_Z, 0x9A, 0, 0, 0, CPU_XOP, 0, 0},
- {"pmovmskb", pmovmskb_insn, 6, SUF_Z, 0, 0, 0, 0, CPU_MMX, CPU_P3, 0},
- {"setz", setcc_insn, 1, SUF_Z, 0x04, 0, 0, 0, CPU_386, 0, 0},
- {"cmovo", cmovcc_insn, 3, SUF_Z, 0x00, 0, 0, 0, CPU_686, 0, 0},
- {"vfmaddsd", fma_128_m64_insn, 3, SUF_Z, 0x6B, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"vcmpnltsd", ssecmp_64_insn, 4, SUF_Z, 0x05, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"xsha1", padlock_insn, 1, SUF_Z, 0xC8, 0xF3, 0xA6, 0, CPU_PadLock, 0, 0},
- {"out", out_insn, 12, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
- {"vdivsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5E, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfrczsd", vfrczsd_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_XOP, 0, 0},
- {"vpextrw", pextrw_insn, 7, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"subss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5C, 0, 0, CPU_SSE, 0, 0},
- {"roundpd", sse4imm_insn, 2, SUF_Z, 0x09, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vpermilpd", vpermil_insn, 4, SUF_Z, 0x05, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfnmsub231ps", vfma_ps_insn, 2, SUF_Z, 0xBE, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"sysret", twobyte_insn, 1, SUF_Z, 0x0F, 0x07, 0, 0, CPU_686, CPU_AMD, CPU_Priv},
- {"sub", arith_insn, 22, SUF_Z, 0x28, 0x05, 0, 0, 0, 0, 0},
- {"popf", onebyte_insn, 1, SUF_Z, 0x9D, 0x00, 0x40, 0, 0, 0, 0},
- {"pmvlzb", cyrixmmx_insn, 1, SUF_Z, 0x5B, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
- {"vfmadd213ss", vfma_ss_insn, 2, SUF_Z, 0xA9, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"str", str_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_286, CPU_Prot, 0},
- {"lahf", onebyte_insn, 1, SUF_Z, 0x9F, 0, 0, 0, 0, 0, 0},
- {"fnstenv", onebytemem_insn, 1, SUF_Z, 0x06, 0xD9, 0, 0, CPU_FPU, 0, 0},
- {"ficom", fiarith_insn, 2, SUF_Z, 0x02, 0xDA, 0, 0, CPU_FPU, 0, 0},
- {"vpmovsxbq", sse4m16_insn, 4, SUF_Z, 0x22, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pminub", mmxsse2_insn, 2, SUF_Z, 0xDA, 0, 0, 0, CPU_MMX, CPU_P3, 0},
- {"sqrtpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x51, 0, 0, CPU_SSE2, 0, 0},
- {"stac", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xCB, 0, CPU_SMAP, 0, 0},
- {"vfmaddsub231ps", vfma_ps_insn, 2, SUF_Z, 0xB6, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vpcomltq", vpcom_insn, 1, SUF_Z, 0xCF, 0x00, 0, 0, CPU_XOP, 0, 0},
- {"cli", onebyte_insn, 1, SUF_Z, 0xFA, 0, 0, 0, 0, 0, 0},
- {"vfnmadd132sd", vfma_sd_insn, 2, SUF_Z, 0x9D, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vrcpss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x53, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fnstsw", fnstsw_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_FPU, 0, 0},
- {"vrsqrtps", avx_xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x52, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcomb", vpcom_imm_insn, 1, SUF_Z, 0xCC, 0, 0, 0, CPU_XOP, 0, 0},
- {"verr", prot286_insn, 1, SUF_Z, 0x04, 0x00, 0, 0, CPU_286, CPU_Prot, 0},
- {"pmovzxdq", sse4m64_insn, 4, SUF_Z, 0x35, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vcmpneq_oqpd", ssecmp_128_insn, 3, SUF_Z, 0x0C, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"setae", setcc_insn, 1, SUF_Z, 0x03, 0, 0, 0, CPU_386, 0, 0},
- {"vhaddpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x7C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcvtsd2si", cvt_rx_xmm64_insn, 4, SUF_Z, 0xF2, 0x2D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pmaxuw", sse4_insn, 2, SUF_Z, 0x3E, 0, 0, 0, CPU_SSE41, 0, 0},
- {"rorx", vex_gpr_reg_rm_0F_imm8_insn, 2, SUF_Z, 0xF2, 0x3A, 0xF0, ONLY_AVX, CPU_BMI2, 0, 0},
- {"andn", vex_gpr_reg_nds_rm_0F_insn, 2, SUF_Z, 0x00, 0x38, 0xF2, ONLY_AVX, CPU_BMI1, 0, 0},
- {"vpmovzxwq", sse4m32_insn, 4, SUF_Z, 0x34, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fisub", fiarith_insn, 2, SUF_Z, 0x04, 0xDA, 0, 0, CPU_FPU, 0, 0},
- {"vcmptrue_usps", ssecmp_128_insn, 3, SUF_Z, 0x1F, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcomneq", vpcom_insn, 1, SUF_Z, 0xCF, 0x05, 0, 0, CPU_XOP, 0, 0},
- {"getsec", twobyte_insn, 1, SUF_Z, 0x0F, 0x37, 0, 0, CPU_SMX, 0, 0},
- {"bzhi", vex_gpr_reg_rm_nds_0F_insn, 2, SUF_Z, 0x00, 0x38, 0xF5, ONLY_AVX, CPU_BMI2, 0, 0},
- {"cvtsd2si", cvt_rx_xmm64_insn, 4, SUF_Z, 0xF2, 0x2D, 0, 0, CPU_386, CPU_SSE2, 0},
- {"vpcomned", vpcom_insn, 1, SUF_Z, 0xCE, 0x05, 0, 0, CPU_XOP, 0, 0},
- {"xtest", tsx_0x0F_0x01_insn, 1, SUF_Z, 0xD6, 0, 0, 0, CPU_TSX, 0, 0},
- {"pclmulqdq", pclmulqdq_insn, 2, SUF_Z, 0x3A, 0x44, 0, 0, CPU_AVX, 0, 0},
- {"minsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5D, 0, 0, CPU_SSE2, 0, 0},
- {"vldmxcsr", ldstmxcsr_insn, 1, SUF_Z, 0x02, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpneq_oqps", ssecmp_128_insn, 3, SUF_Z, 0x0C, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pmovsxwd", sse4m64_insn, 4, SUF_Z, 0x23, 0, 0, 0, CPU_SSE41, 0, 0},
- {"iretd", onebyte_insn, 1, SUF_Z, 0xCF, 0x20, 0, 0, CPU_386, 0, 0},
- {"vmcall", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xC1, 0, CPU_P4, 0, 0},
- {"shl", shift_insn, 16, SUF_Z, 0x04, 0, 0, 0, 0, 0, 0},
- {"cmovnp", cmovcc_insn, 3, SUF_Z, 0x0B, 0, 0, 0, CPU_686, 0, 0},
- {"cmpltss", ssecmp_32_insn, 4, SUF_Z, 0x01, 0xF3, 0, 0, CPU_SSE, 0, 0},
- {"movddup", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x12, 0, 0, CPU_SSE3, 0, 0},
- {"xrstor", twobytemem_insn, 1, SUF_Z, 0x05, 0x0F, 0xAE, 0, CPU_386, CPU_XSAVE, 0},
- {"pinsrb", pinsrb_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_SSE41, 0, 0},
- {"pushf", onebyte_insn, 1, SUF_Z, 0x9C, 0x00, 0x40, 0, 0, 0, 0},
- {"vxorpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x57, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpunordss", ssecmp_32_insn, 4, SUF_Z, 0x03, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpmaxud", ssse3_insn, 5, SUF_Z, 0x3F, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fiadd", fiarith_insn, 2, SUF_Z, 0x00, 0xDA, 0, 0, CPU_FPU, 0, 0},
- {"vcmple_oqpd", ssecmp_128_insn, 3, SUF_Z, 0x12, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpss", xmm_xmm32_imm_insn, 4, SUF_Z, 0xF3, 0xC2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"sysenter", twobyte_insn, 1, SUF_Z, 0x0F, 0x34, 0, NOT_64, CPU_686, 0, 0},
- {"vpcomleq", vpcom_insn, 1, SUF_Z, 0xCF, 0x01, 0, 0, CPU_XOP, 0, 0},
- {"finit", threebyte_insn, 1, SUF_Z, 0x9B, 0xDB, 0xE3, 0, CPU_FPU, 0, 0},
- {"vpcomneqw", vpcom_insn, 1, SUF_Z, 0xCD, 0x05, 0, 0, CPU_XOP, 0, 0},
- {"clgi", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xDD, 0, CPU_SVM, 0, 0},
- {"vpabsb", avx2_ssse3_2op_insn, 2, SUF_Z, 0x1C, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"addpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x58, 0, 0, CPU_SSE2, 0, 0},
- {"cmovg", cmovcc_insn, 3, SUF_Z, 0x0F, 0, 0, 0, CPU_686, 0, 0},
- {"movlps", movhlp_insn, 3, SUF_Z, 0x00, 0x12, 0, 0, CPU_SSE, 0, 0},
- {"vaddss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x58, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"outsb", onebyte_insn, 1, SUF_Z, 0x6E, 0x00, 0, 0, 0, 0, 0},
- {"vpcomequd", vpcom_insn, 1, SUF_Z, 0xEE, 0x04, 0, 0, CPU_XOP, 0, 0},
- {"wrmsr", twobyte_insn, 1, SUF_Z, 0x0F, 0x30, 0, 0, CPU_586, CPU_Priv, 0},
- {"vpshufb", ssse3_insn, 5, SUF_Z, 0x00, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpackssdw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x6B, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"ftst", twobyte_insn, 1, SUF_Z, 0xD9, 0xE4, 0, 0, CPU_FPU, 0, 0},
- {"arpl", arpl_insn, 1, SUF_Z, 0, 0, 0, NOT_64, CPU_286, CPU_Prot, 0},
- {"fcmovb", fcmovcc_insn, 1, SUF_Z, 0xDA, 0xC0, 0, 0, CPU_686, CPU_FPU, 0},
- {"vfnmadd132ss", vfma_ss_insn, 2, SUF_Z, 0x9D, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"rsldt", cyrixsmm_insn, 1, SUF_Z, 0x7B, 0, 0, 0, CPU_486, CPU_Cyrix, CPU_SMM},
- {"vfmsubss", fma_128_m32_insn, 3, SUF_Z, 0x6E, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"pcmpgtw", mmxsse2_insn, 2, SUF_Z, 0x65, 0, 0, 0, CPU_MMX, 0, 0},
- {"vcmpfalse_osss", ssecmp_32_insn, 4, SUF_Z, 0x1B, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"comiss", xmm_xmm32_insn, 4, SUF_Z, 0x00, 0x2F, 0, 0, CPU_SSE, 0, 0},
- {"loopz", loop_insn, 8, SUF_Z, 0x01, 0, 0, 0, 0, 0, 0},
- {"cmpnlepd", ssecmp_128_insn, 3, SUF_Z, 0x06, 0x66, 0, 0, CPU_SSE, 0, 0},
- {"pfmin", now3d_insn, 1, SUF_Z, 0x94, 0, 0, 0, CPU_3DNow, 0, 0},
- {"xsha256", padlock_insn, 1, SUF_Z, 0xD0, 0xF3, 0xA6, 0, CPU_PadLock, 0, 0},
- {"vfnmsub132ss", vfma_ss_insn, 2, SUF_Z, 0x9F, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"fldl2t", twobyte_insn, 1, SUF_Z, 0xD9, 0xE9, 0, 0, CPU_FPU, 0, 0},
- {"vpsignd", ssse3_insn, 5, SUF_Z, 0x0A, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpaddusw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xDD, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fcmovu", fcmovcc_insn, 1, SUF_Z, 0xDA, 0xD8, 0, 0, CPU_686, CPU_FPU, 0},
- {"vmovaps", movau_insn, 6, SUF_Z, 0x00, 0x28, 0x01, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmple_oqsd", ssecmp_64_insn, 4, SUF_Z, 0x12, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpextrq", pextrq_insn, 1, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmpnltps", ssecmp_128_insn, 3, SUF_Z, 0x05, 0, 0, 0, CPU_SSE, 0, 0},
- {"vfnmadd231pd", vfma_pd_insn, 2, SUF_Z, 0xBC, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"fsubp", farithp_insn, 3, SUF_Z, 0xE8, 0, 0, 0, CPU_FPU, 0, 0},
- {"pmulld", sse4_insn, 2, SUF_Z, 0x40, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vfnmadd132ps", vfma_ps_insn, 2, SUF_Z, 0x9C, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vpunpcklbw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x60, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vorps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x56, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vmovmskpd", movmsk_insn, 4, SUF_Z, 0x66, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmpeqpd", ssecmp_128_insn, 3, SUF_Z, 0x00, 0x66, 0, 0, CPU_SSE, 0, 0},
- {"vmovdqa", movau_insn, 6, SUF_Z, 0x66, 0x6F, 0x10, ONLY_AVX, CPU_AVX, 0, 0},
- {"jl", jcc_insn, 9, SUF_Z, 0x0C, 0, 0, 0, 0, 0, 0},
- {"vcmpgesd", ssecmp_64_insn, 4, SUF_Z, 0x0D, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cvttpd2pi", cvt_mm_xmm_insn, 1, SUF_Z, 0x66, 0x2C, 0, 0, CPU_SSE2, 0, 0},
- {"phsubw", ssse3_insn, 5, SUF_Z, 0x05, 0, 0, 0, CPU_SSSE3, 0, 0},
- {"pminsw", mmxsse2_insn, 2, SUF_Z, 0xEA, 0, 0, 0, CPU_MMX, CPU_P3, 0},
- {"vpgatherqq", gather_64x_64y_insn, 2, SUF_Z, 0x91, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"vfmadd132sd", vfma_sd_insn, 2, SUF_Z, 0x99, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"setpo", setcc_insn, 1, SUF_Z, 0x0B, 0, 0, 0, CPU_386, 0, 0},
- {"fidiv", fiarith_insn, 2, SUF_Z, 0x06, 0xDA, 0, 0, CPU_FPU, 0, 0},
- {"clts", twobyte_insn, 1, SUF_Z, 0x0F, 0x06, 0, 0, CPU_286, CPU_Priv, 0},
- {"prefetcht0", twobytemem_insn, 1, SUF_Z, 0x01, 0x0F, 0x18, 0, CPU_P3, 0, 0},
- {"cvtsi2ss", cvt_xmm_rmx_insn, 6, SUF_Z, 0xF3, 0x2A, 0, 0, CPU_386, CPU_SSE, 0},
- {"vpmuludq", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xF4, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"xcryptctr", padlock_insn, 1, SUF_Z, 0xD8, 0xF3, 0xA7, 0, CPU_PadLock, 0, 0},
- {"vfmadd132ss", vfma_ss_insn, 2, SUF_Z, 0x99, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vpcmpistri", sse4pcmpstr_insn, 1, SUF_Z, 0x63, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"popfw", onebyte_insn, 1, SUF_Z, 0x9D, 0x10, 0x40, 0, 0, 0, 0},
- {"vstmxcsr", ldstmxcsr_insn, 1, SUF_Z, 0x03, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpmovzxbd", sse4m32_insn, 4, SUF_Z, 0x31, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"rsqrtps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x52, 0, 0, CPU_SSE, 0, 0},
- {"vfmsubadd213pd", vfma_pd_insn, 2, SUF_Z, 0xA7, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"prefetcht1", twobytemem_insn, 1, SUF_Z, 0x02, 0x0F, 0x18, 0, CPU_P3, 0, 0},
- {"xrelease", NULL, X86_ACQREL>>8, 0xF3, 0, 0, 0, 0, 0, 0, 0},
- {"wait", onebyte_insn, 1, SUF_Z, 0x9B, 0, 0, 0, 0, 0, 0},
- {"aesenc", aes_insn, 2, SUF_Z, 0x38, 0xDC, 0, 0, CPU_AVX, 0, 0},
- {"cmpordsd", ssecmp_64_insn, 4, SUF_Z, 0x07, 0xF2, 0, 0, CPU_SSE2, 0, 0},
- {"lodsb", onebyte_insn, 1, SUF_Z, 0xAC, 0x00, 0, 0, 0, 0, 0},
- {"vcmpeq_ussd", ssecmp_64_insn, 4, SUF_Z, 0x18, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fimul", fiarith_insn, 2, SUF_Z, 0x01, 0xDA, 0, 0, CPU_FPU, 0, 0},
- {"setns", setcc_insn, 1, SUF_Z, 0x09, 0, 0, 0, CPU_386, 0, 0},
- {"vunpcklpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x14, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"sha1nexte", intel_SHA1NEXTE_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SHA, 0, 0},
- {"xorpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x57, 0, 0, CPU_SSE2, 0, 0},
- {"jp", jcc_insn, 9, SUF_Z, 0x0A, 0, 0, 0, 0, 0, 0},
- {"vcmpfalse_ossd", ssecmp_64_insn, 4, SUF_Z, 0x1B, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vaesenc", aes_insn, 2, SUF_Z, 0x38, 0xDC, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fnop", twobyte_insn, 1, SUF_Z, 0xD9, 0xD0, 0, 0, CPU_FPU, 0, 0},
- {"nop", onebyte_insn, 1, SUF_Z, 0x90, 0, 0, 0, 0, 0, 0},
- {"test", test_insn, 20, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
- {"pmulhrsw", ssse3_insn, 5, SUF_Z, 0x0B, 0, 0, 0, CPU_SSSE3, 0, 0},
- {"cvtdq2pd", xmm_xmm64_insn, 4, SUF_Z, 0xF3, 0xE6, 0, 0, CPU_SSE2, 0, 0},
- {"pmaddwd", mmxsse2_insn, 2, SUF_Z, 0xF5, 0, 0, 0, CPU_MMX, 0, 0},
- {"vperm2i128", vperm2i128_avx2_insn, 1, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"vcmpnltss", ssecmp_32_insn, 4, SUF_Z, 0x05, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"frstor", onebytemem_insn, 1, SUF_Z, 0x04, 0xDD, 0, 0, CPU_FPU, 0, 0},
- {"vcmpnlt_uqps", ssecmp_128_insn, 3, SUF_Z, 0x15, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"blcic", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x01, 0x05, 0, 0, CPU_386, CPU_TBM, 0},
- {"vfnmsub132sd", vfma_sd_insn, 2, SUF_Z, 0x9F, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"loopnz", loop_insn, 8, SUF_Z, 0x00, 0, 0, 0, 0, 0, 0},
- {"vcmpordss", ssecmp_32_insn, 4, SUF_Z, 0x07, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"movntsd", movntsd_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SSE4a, 0, 0},
- {"mov", mov_insn, 69, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
- {"jc", jcc_insn, 9, SUF_Z, 0x02, 0, 0, 0, 0, 0, 0},
- {"cmpltps", ssecmp_128_insn, 3, SUF_Z, 0x01, 0, 0, 0, CPU_SSE, 0, 0},
- {"palignr", ssse3imm_insn, 2, SUF_Z, 0x0F, 0, 0, 0, CPU_SSSE3, 0, 0},
- {"vpmuldq", ssse3_insn, 5, SUF_Z, 0x28, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmovnz", cmovcc_insn, 3, SUF_Z, 0x05, 0, 0, 0, CPU_686, 0, 0},
- {"vpshuflw", xmm_xmm128_imm_256avx2_insn, 2, SUF_Z, 0xF2, 0x70, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpmovzxdq", sse4m64_insn, 4, SUF_Z, 0x35, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpnge_uqps", ssecmp_128_insn, 3, SUF_Z, 0x19, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fstp", fstp_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_FPU, 0, 0},
- {"vpacksswb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x63, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfmaddps", fma_128_256_insn, 4, SUF_Z, 0x68, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"vcmptruepd", ssecmp_128_insn, 3, SUF_Z, 0x0F, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vaddsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x58, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vphaddbq", vphaddsub_insn, 1, SUF_Z, 0xC3, 0, 0, 0, CPU_XOP, 0, 0},
- {"vaesimc", aesimc_insn, 1, SUF_Z, 0x38, 0xDB, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"wbinvd", twobyte_insn, 1, SUF_Z, 0x0F, 0x09, 0, 0, CPU_486, CPU_Priv, 0},
- {"salc", onebyte_insn, 1, SUF_Z, 0xD6, 0, 0, NOT_64, CPU_Undoc, 0, 0},
- {"vcmpnltps", ssecmp_128_insn, 3, SUF_Z, 0x05, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"ptest", sse4_insn, 2, SUF_Z, 0x17, 0, 0, 0, CPU_SSE41, 0, 0},
- {"jne", jcc_insn, 9, SUF_Z, 0x05, 0, 0, 0, 0, 0, 0},
- {"vpmovsxbd", sse4m32_insn, 4, SUF_Z, 0x21, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vminsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fcmovnb", fcmovcc_insn, 1, SUF_Z, 0xDB, 0xC0, 0, 0, CPU_686, CPU_FPU, 0},
- {"vpunpcklwd", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x61, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pclmullqhqdq", pclmulqdq_fixed_insn, 2, SUF_Z, 0x10, 0, 0, 0, CPU_AVX, 0, 0},
- {"loadall286", twobyte_insn, 1, SUF_Z, 0x0F, 0x05, 0, 0, CPU_286, CPU_Undoc, 0},
- {"popcnt", cnt_insn, 3, SUF_Z, 0xB8, 0, 0, 0, CPU_SSE42, 0, 0},
- {"fld", fld_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_FPU, 0, 0},
- {"vpcomfalseuw", vpcom_insn, 1, SUF_Z, 0xED, 0x06, 0, 0, CPU_XOP, 0, 0},
- {"fprem", twobyte_insn, 1, SUF_Z, 0xD9, 0xF8, 0, 0, CPU_FPU, 0, 0},
- {"vcvtps2pd", avx_cvt_xmm64_insn, 3, SUF_Z, 0x00, 0x5A, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfmsub231ss", vfma_ss_insn, 2, SUF_Z, 0xBB, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vfmadd213sd", vfma_sd_insn, 2, SUF_Z, 0xA9, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vprotw", vprot_insn, 3, SUF_Z, 0x01, 0, 0, 0, CPU_XOP, 0, 0},
- {"cmovge", cmovcc_insn, 3, SUF_Z, 0x0D, 0, 0, 0, CPU_686, 0, 0},
- {"popa", onebyte_insn, 1, SUF_Z, 0x61, 0x00, 0, NOT_64, CPU_186, 0, 0},
- {"cmovna", cmovcc_insn, 3, SUF_Z, 0x06, 0, 0, 0, CPU_686, 0, 0},
- {"vroundpd", avx_sse4imm_insn, 3, SUF_Z, 0x09, 0, 0, ONLY_AVX, CPU_SSE41, 0, 0},
- {"pcmpistrm", sse4pcmpstr_insn, 1, SUF_Z, 0x62, 0, 0, 0, CPU_SSE42, 0, 0},
- {"movq2dq", movq2dq_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SSE2, 0, 0},
- {"blsi", vex_gpr_ndd_rm_0F38_regext_insn, 2, SUF_Z, 0x00, 0xF3, 0x03, ONLY_AVX, CPU_BMI1, 0, 0},
- {"vminps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x5D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"maxsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5F, 0, 0, CPU_SSE2, 0, 0},
- {"vcmpneq_ossd", ssecmp_64_insn, 4, SUF_Z, 0x1C, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"in", in_insn, 12, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
- {"retn", retnf_insn, 6, SUF_Z, 0xC2, 0, 0, 0, 0, 0, 0},
- {"cmpsd", cmpsd_insn, 5, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
- {"psrlw", pshift_insn, 4, SUF_Z, 0xD1, 0x71, 0x02, 0, CPU_MMX, 0, 0},
- {"vpsrlvd", vpshiftv_vexw0_avx2_insn, 2, SUF_Z, 0x45, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"movsd", movsd_insn, 5, SUF_Z, 0, 0, 0, 0, CPU_386, 0, 0},
- {"subsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5C, 0, 0, CPU_SSE2, 0, 0},
- {"das", onebyte_insn, 1, SUF_Z, 0x2F, 0, 0, NOT_64, 0, 0, 0},
- {"movaps", movau_insn, 6, SUF_Z, 0x00, 0x28, 0x01, 0, CPU_SSE, 0, 0},
- {"fxtract", twobyte_insn, 1, SUF_Z, 0xD9, 0xF4, 0, 0, CPU_FPU, 0, 0},
- {"rep", NULL, X86_LOCKREP>>8, 0xF3, 0, 0, 0, 0, 0, 0, 0},
- {"vcmpnless", ssecmp_32_insn, 4, SUF_Z, 0x06, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vaeskeygenassist", aes_imm_insn, 1, SUF_Z, 0x3A, 0xDF, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpaddsb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xEC, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pand", mmxsse2_insn, 2, SUF_Z, 0xDB, 0, 0, 0, CPU_MMX, 0, 0},
- {"cmovb", cmovcc_insn, 3, SUF_Z, 0x02, 0, 0, 0, CPU_686, 0, 0},
- {"vpcmpgtd", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pmovzxwq", sse4m32_insn, 4, SUF_Z, 0x34, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vfmsubadd132ps", vfma_ps_insn, 2, SUF_Z, 0x97, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vpmovsxdq", sse4m64_insn, 4, SUF_Z, 0x25, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"psrlq", pshift_insn, 4, SUF_Z, 0xD3, 0x73, 0x02, 0, CPU_MMX, 0, 0},
- {"vshufps", xmm_xmm128_imm_256_insn, 3, SUF_Z, 0x00, 0xC6, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"ficomp", fiarith_insn, 2, SUF_Z, 0x03, 0xDA, 0, 0, CPU_FPU, 0, 0},
- {"vpcomneqq", vpcom_insn, 1, SUF_Z, 0xCF, 0x05, 0, 0, CPU_XOP, 0, 0},
- {"vphaddwd", vphaddsub_insn, 1, SUF_Z, 0xC6, 0, 0, 0, CPU_XOP, 0, 0},
- {"scasq", onebyte_insn, 1, SUF_Z, 0xAF, 0x40, 0, ONLY_64, 0, 0, 0},
- {"vcmpgess", ssecmp_32_insn, 4, SUF_Z, 0x0D, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmptrueps", ssecmp_128_insn, 3, SUF_Z, 0x0F, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"divss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5E, 0, 0, CPU_SSE, 0, 0},
- {"vblendvpd", avx_sse4xmm0_insn, 2, SUF_Z, 0x4B, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpnle_uqss", ssecmp_32_insn, 4, SUF_Z, 0x16, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"punpcklqdq", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x6C, 0, 0, CPU_SSE2, 0, 0},
- {"vphsubbw", vphaddsub_insn, 1, SUF_Z, 0xE1, 0, 0, 0, CPU_XOP, 0, 0},
- {"hsubpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x7D, 0, 0, CPU_SSE3, 0, 0},
- {"vfnmsub132ps", vfma_ps_insn, 2, SUF_Z, 0x9E, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"fxch", fxch_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_FPU, 0, 0},
- {"vpsrad", vpshift_insn, 8, SUF_Z, 0xE2, 0x72, 0x04, ONLY_AVX, CPU_AVX, 0, 0},
- {"sets", setcc_insn, 1, SUF_Z, 0x08, 0, 0, 0, CPU_386, 0, 0},
- {"montmul", padlock_insn, 1, SUF_Z, 0xC0, 0xF3, 0xA6, 0, CPU_PadLock, 0, 0},
- {"shld", shlrd_insn, 9, SUF_Z, 0xA4, 0, 0, 0, CPU_386, 0, 0},
- {"jnbe", jcc_insn, 9, SUF_Z, 0x07, 0, 0, 0, 0, 0, 0},
- {"fucomip", fcom2_insn, 2, SUF_Z, 0xDF, 0xE8, 0, 0, CPU_686, CPU_FPU, 0},
- {"vfnmsubpd", fma_128_256_insn, 4, SUF_Z, 0x7D, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"psllw", pshift_insn, 4, SUF_Z, 0xF1, 0x71, 0x06, 0, CPU_MMX, 0, 0},
- {"vpsubw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xF9, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fcomi", fcom2_insn, 2, SUF_Z, 0xDB, 0xF0, 0, 0, CPU_686, CPU_FPU, 0},
- {"pusha", onebyte_insn, 1, SUF_Z, 0x60, 0x00, 0, NOT_64, CPU_186, 0, 0},
- {"vcmpnltpd", ssecmp_128_insn, 3, SUF_Z, 0x05, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"adox", vex_gpr_ndd_rm_0F38_insn, 2, SUF_Z, 0xF3, 0xF6, 0, 0, CPU_ADX, 0, 0},
- {"cmpordpd", ssecmp_128_insn, 3, SUF_Z, 0x07, 0x66, 0, 0, CPU_SSE, 0, 0},
- {"lfence", threebyte_insn, 1, SUF_Z, 0x0F, 0xAE, 0xE8, 0, CPU_P3, 0, 0},
- {"loopne", loop_insn, 8, SUF_Z, 0x00, 0, 0, 0, 0, 0, 0},
- {"vfmadd213pd", vfma_pd_insn, 2, SUF_Z, 0xA8, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"movsq", onebyte_insn, 1, SUF_Z, 0xA5, 0x40, 0, ONLY_64, 0, 0, 0},
- {"vcmpunord_ssd", ssecmp_64_insn, 4, SUF_Z, 0x13, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pslldq", pslrldq_insn, 4, SUF_Z, 0x07, 0, 0, 0, CPU_SSE2, 0, 0},
- {"fisttp", fildstp_insn, 4, SUF_Z, 0x01, 0x00, 0x01, 0, CPU_SSE3, 0, 0},
- {"fldcw", fldnstcw_insn, 1, SUF_Z, 0x05, 0, 0, 0, CPU_FPU, 0, 0},
- {"vpcomltw", vpcom_insn, 1, SUF_Z, 0xCD, 0x00, 0, 0, CPU_XOP, 0, 0},
- {"vpackusdw", ssse3_insn, 5, SUF_Z, 0x2B, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmovng", cmovcc_insn, 3, SUF_Z, 0x0E, 0, 0, 0, CPU_686, 0, 0},
- {"andnps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x55, 0, 0, CPU_SSE, 0, 0},
- {"cwde", onebyte_insn, 1, SUF_Z, 0x98, 0x20, 0, 0, CPU_386, 0, 0},
- {"vpcomtruew", vpcom_insn, 1, SUF_Z, 0xCD, 0x07, 0, 0, CPU_XOP, 0, 0},
- {"xsetbv", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xD1, 0, CPU_386, CPU_Priv, CPU_XSAVE},
- {"movsw", onebyte_insn, 1, SUF_Z, 0xA5, 0x10, 0, 0, 0, 0, 0},
- {"vpcomw", vpcom_imm_insn, 1, SUF_Z, 0xCD, 0, 0, 0, CPU_XOP, 0, 0},
- {"pext", vex_gpr_reg_nds_rm_0F_insn, 2, SUF_Z, 0xF3, 0x38, 0xF5, ONLY_AVX, CPU_BMI2, 0, 0},
- {"pmovsxbd", sse4m32_insn, 4, SUF_Z, 0x21, 0, 0, 0, CPU_SSE41, 0, 0},
- {"cmpnleps", ssecmp_128_insn, 3, SUF_Z, 0x06, 0, 0, 0, CPU_SSE, 0, 0},
- {"vfmsubsd", fma_128_m64_insn, 3, SUF_Z, 0x6F, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"fcos", twobyte_insn, 1, SUF_Z, 0xD9, 0xFF, 0, 0, CPU_286, CPU_FPU, 0},
- {"repnz", NULL, X86_LOCKREP>>8, 0xF2, 0, 0, 0, 0, 0, 0, 0},
- {"vcmpngtsd", ssecmp_64_insn, 4, SUF_Z, 0x0A, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fsubr", farith_insn, 7, SUF_Z, 0xE0, 0xE8, 0x05, 0, CPU_FPU, 0, 0},
- {"setng", setcc_insn, 1, SUF_Z, 0x0E, 0, 0, 0, CPU_386, 0, 0},
- {"paddsiw", cyrixmmx_insn, 1, SUF_Z, 0x51, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
- {"psubusb", mmxsse2_insn, 2, SUF_Z, 0xD8, 0, 0, 0, CPU_MMX, 0, 0},
- {"psignw", ssse3_insn, 5, SUF_Z, 0x09, 0, 0, 0, CPU_SSSE3, 0, 0},
- {"cmovnae", cmovcc_insn, 3, SUF_Z, 0x02, 0, 0, 0, CPU_686, 0, 0},
- {"vpcomgeb", vpcom_insn, 1, SUF_Z, 0xCC, 0x03, 0, 0, CPU_XOP, 0, 0},
- {"vmovshdup", avx_xmm_xmm128_insn, 2, SUF_Z, 0xF3, 0x16, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pshufhw", xmm_xmm128_imm_insn, 1, SUF_Z, 0xF3, 0x70, 0, 0, CPU_SSE2, 0, 0},
- {"fldt", fldstpt_insn, 1, SUF_Z, 0x05, 0, 0, 0, CPU_FPU, 0, 0},
- {"pmovsxbq", sse4m16_insn, 4, SUF_Z, 0x22, 0, 0, 0, CPU_SSE41, 0, 0},
- {"extrq", extrq_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_SSE4a, 0, 0},
- {"fidivr", fiarith_insn, 2, SUF_Z, 0x07, 0xDA, 0, 0, CPU_FPU, 0, 0},
- {"vpabsd", avx2_ssse3_2op_insn, 2, SUF_Z, 0x1E, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vmaskmovpd", vmaskmov_insn, 4, SUF_Z, 0x2D, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"rsts", cyrixsmm_insn, 1, SUF_Z, 0x7D, 0, 0, 0, CPU_486, CPU_Cyrix, CPU_SMM},
- {"vfmsubaddpd", fma_128_256_insn, 4, SUF_Z, 0x5F, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"paddsw", mmxsse2_insn, 2, SUF_Z, 0xED, 0, 0, 0, CPU_MMX, 0, 0},
- {"cmpnless", ssecmp_32_insn, 4, SUF_Z, 0x06, 0xF3, 0, 0, CPU_SSE, 0, 0},
- {"vinsertps", insertps_insn, 4, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fcmovne", fcmovcc_insn, 1, SUF_Z, 0xDB, 0xC8, 0, 0, CPU_686, CPU_FPU, 0},
- {"vcmpneq_osps", ssecmp_128_insn, 3, SUF_Z, 0x1C, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vextractf128", vextractif128_insn, 1, SUF_Z, 0x19, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pmulhw", mmxsse2_insn, 2, SUF_Z, 0xE5, 0, 0, 0, CPU_MMX, 0, 0},
- {"vfnmsub213ps", vfma_ps_insn, 2, SUF_Z, 0xAE, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"sha256rnds2", intel_SHA256RNDS2_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SHA, 0, 0},
- {"vcmpnle_uqsd", ssecmp_64_insn, 4, SUF_Z, 0x16, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmovns", cmovcc_insn, 3, SUF_Z, 0x09, 0, 0, 0, CPU_686, 0, 0},
- {"xcryptecb", padlock_insn, 1, SUF_Z, 0xC8, 0xF3, 0xA7, 0, CPU_PadLock, 0, 0},
- {"vcvtpd2dq", avx_cvt_xmm128_insn, 2, SUF_Z, 0xF2, 0xE6, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pfadd", now3d_insn, 1, SUF_Z, 0x9E, 0, 0, 0, CPU_3DNow, 0, 0},
- {"fbld", fbldstp_insn, 1, SUF_Z, 0x04, 0, 0, 0, CPU_FPU, 0, 0},
- {"rsm", twobyte_insn, 1, SUF_Z, 0x0F, 0xAA, 0, 0, CPU_586, CPU_SMM, 0},
- {"vxorps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x57, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pmuldq", sse4_insn, 2, SUF_Z, 0x28, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vshufpd", xmm_xmm128_imm_256_insn, 3, SUF_Z, 0x66, 0xC6, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpgtps", ssecmp_128_insn, 3, SUF_Z, 0x0E, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pop", pop_insn, 23, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
- {"movhps", movhlp_insn, 3, SUF_Z, 0x00, 0x16, 0, 0, CPU_SSE, 0, 0},
- {"sqrtss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x51, 0, 0, CPU_SSE, 0, 0},
- {"vcmpord_spd", ssecmp_128_insn, 3, SUF_Z, 0x17, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cvtpi2pd", cvt_xmm_mm_ss_insn, 1, SUF_Z, 0x66, 0x2A, 0, 0, CPU_SSE2, 0, 0},
- {"vpunpckhwd", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x69, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfmsub213ps", vfma_ps_insn, 2, SUF_Z, 0xAA, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vmovntdq", movnt_insn, 2, SUF_Z, 0x66, 0xE7, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmove", cmovcc_insn, 3, SUF_Z, 0x04, 0, 0, 0, CPU_686, 0, 0},
- {"setl", setcc_insn, 1, SUF_Z, 0x0C, 0, 0, 0, CPU_386, 0, 0},
- {"vpcomnequw", vpcom_insn, 1, SUF_Z, 0xED, 0x05, 0, 0, CPU_XOP, 0, 0},
- {"vcmpeqps", ssecmp_128_insn, 3, SUF_Z, 0x00, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vmrun", svm_rax_insn, 2, SUF_Z, 0xD8, 0, 0, 0, CPU_SVM, 0, 0},
- {"pswapd", now3d_insn, 1, SUF_Z, 0xBB, 0, 0, 0, CPU_3DNow, CPU_Athlon, 0},
- {"vcmpltpd", ssecmp_128_insn, 3, SUF_Z, 0x01, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pmovsxdq", sse4m64_insn, 4, SUF_Z, 0x25, 0, 0, 0, CPU_SSE41, 0, 0},
- {"skinit", skinit_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_SVM, 0, 0},
- {"setno", setcc_insn, 1, SUF_Z, 0x01, 0, 0, 0, CPU_386, 0, 0},
- {"pmaxub", mmxsse2_insn, 2, SUF_Z, 0xDE, 0, 0, 0, CPU_MMX, CPU_P3, 0},
- {"ldmxcsr", ldstmxcsr_insn, 1, SUF_Z, 0x02, 0, 0, 0, CPU_SSE, 0, 0},
- {"setnc", setcc_insn, 1, SUF_Z, 0x03, 0, 0, 0, CPU_386, 0, 0},
- {"xsaveopt", twobytemem_insn, 1, SUF_Z, 0x06, 0x0F, 0xAE, 0, CPU_XSAVEOPT, 0, 0},
- {"vcmpnlesd", ssecmp_64_insn, 4, SUF_Z, 0x06, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpslldq", pslrldq_insn, 4, SUF_Z, 0x07, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vphsubdq", vphaddsub_insn, 1, SUF_Z, 0xE3, 0, 0, 0, CPU_XOP, 0, 0},
- {"cdqe", onebyte_insn, 1, SUF_Z, 0x98, 0x40, 0, ONLY_64, 0, 0, 0},
- {"cvtps2dq", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x5B, 0, 0, CPU_SSE2, 0, 0},
- {"vpsubusw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xD9, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"btr", bittest_insn, 6, SUF_Z, 0xB3, 0x06, 0, 0, CPU_386, 0, 0},
- {"fnclex", twobyte_insn, 1, SUF_Z, 0xDB, 0xE2, 0, 0, CPU_FPU, 0, 0},
- {"invlpg", twobytemem_insn, 1, SUF_Z, 0x07, 0x0F, 0x01, 0, CPU_486, CPU_Priv, 0},
- {"vfmaddsubpd", fma_128_256_insn, 4, SUF_Z, 0x5D, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"vpbroadcastw", vpbroadcastw_avx2_insn, 4, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"xstorerng", padlock_insn, 1, SUF_Z, 0xC0, 0x00, 0xA7, 0, CPU_PadLock, 0, 0},
- {"neg", f6_insn, 4, SUF_Z, 0x03, 0, 0, 0, 0, 0, 0},
- {"vpshufhw", xmm_xmm128_imm_256avx2_insn, 2, SUF_Z, 0xF3, 0x70, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"a64", NULL, X86_ADDRSIZE>>8, 0x40, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"insertq", insertq_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_SSE4a, 0, 0},
- {"vcmpnle_uqps", ssecmp_128_insn, 3, SUF_Z, 0x16, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"int", int_insn, 1, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
- {"vpshufd", xmm_xmm128_imm_256avx2_insn, 2, SUF_Z, 0x66, 0x70, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vsqrtss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x51, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcmpistrm", sse4pcmpstr_insn, 1, SUF_Z, 0x62, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmptruess", ssecmp_32_insn, 4, SUF_Z, 0x0F, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpunordsd", ssecmp_64_insn, 4, SUF_Z, 0x03, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"maxpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x5F, 0, 0, CPU_SSE2, 0, 0},
- {"vcmpneqss", ssecmp_32_insn, 4, SUF_Z, 0x04, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fucomi", fcom2_insn, 2, SUF_Z, 0xDB, 0xE8, 0, 0, CPU_686, CPU_FPU, 0},
- {"packusdw", sse4_insn, 2, SUF_Z, 0x2B, 0, 0, 0, CPU_SSE41, 0, 0},
- {"lodsw", onebyte_insn, 1, SUF_Z, 0xAD, 0x10, 0, 0, 0, 0, 0},
- {"vpalignr", sse4imm_256avx2_insn, 4, SUF_Z, 0x0F, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpmovmskb", pmovmskb_insn, 6, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vinsertf128", vinsertif128_insn, 1, SUF_Z, 0x18, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"paddw", mmxsse2_insn, 2, SUF_Z, 0xFD, 0, 0, 0, CPU_MMX, 0, 0},
- {"pmvnzb", cyrixmmx_insn, 1, SUF_Z, 0x5A, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
- {"pabsb", ssse3_insn, 5, SUF_Z, 0x1C, 0, 0, 0, CPU_SSSE3, 0, 0},
- {"vfnmsub231ss", vfma_ss_insn, 2, SUF_Z, 0xBF, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"pandn", mmxsse2_insn, 2, SUF_Z, 0xDF, 0, 0, 0, CPU_MMX, 0, 0},
- {"setnl", setcc_insn, 1, SUF_Z, 0x0D, 0, 0, 0, CPU_386, 0, 0},
- {"vmovupd", movau_insn, 6, SUF_Z, 0x66, 0x10, 0x01, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcvtph2ps", avx_cvtph2ps_insn, 4, SUF_Z, 0x66, 0x13, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vaddsubps", xmm_xmm128_256_insn, 4, SUF_Z, 0xF2, 0xD0, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"sarx", vex_gpr_reg_rm_nds_0F_insn, 2, SUF_Z, 0xF3, 0x38, 0xF7, ONLY_AVX, CPU_BMI2, 0, 0},
- {"vpcomtrued", vpcom_insn, 1, SUF_Z, 0xCE, 0x07, 0, 0, CPU_XOP, 0, 0},
- {"vpsllq", vpshift_insn, 8, SUF_Z, 0xF3, 0x73, 0x06, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcmpgtq", ssse3_insn, 5, SUF_Z, 0x37, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmpxchg8b", cmpxchg8b_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_586, 0, 0},
- {"vfmaddsub132ps", vfma_ps_insn, 2, SUF_Z, 0x96, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vfnmsub231sd", vfma_sd_insn, 2, SUF_Z, 0xBF, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vroundps", avx_sse4imm_insn, 3, SUF_Z, 0x08, 0, 0, ONLY_AVX, CPU_SSE41, 0, 0},
- {"xchg", xchg_insn, 16, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
- {"umov", umov_insn, 6, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_Undoc, 0},
- {"vpbroadcastd", vpbroadcastd_avx2_insn, 4, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"fild", fildstp_insn, 4, SUF_Z, 0x00, 0x02, 0x05, 0, CPU_FPU, 0, 0},
- {"sldt", sldtmsw_insn, 6, SUF_Z, 0x00, 0x00, 0, 0, CPU_286, 0, 0},
- {"fdivp", farithp_insn, 3, SUF_Z, 0xF8, 0, 0, 0, CPU_FPU, 0, 0},
- {"jna", jcc_insn, 9, SUF_Z, 0x06, 0, 0, 0, 0, 0, 0},
- {"vpcomtrueb", vpcom_insn, 1, SUF_Z, 0xCC, 0x07, 0, 0, CPU_XOP, 0, 0},
- {"aaa", onebyte_insn, 1, SUF_Z, 0x37, 0, 0, NOT_64, 0, 0, 0},
- {"bsf", bsfr_insn, 3, SUF_Z, 0xBC, 0, 0, 0, CPU_386, 0, 0},
- {"dppd", sse4imm_insn, 2, SUF_Z, 0x41, 0, 0, 0, CPU_SSE41, 0, 0},
- {"cmovnc", cmovcc_insn, 3, SUF_Z, 0x03, 0, 0, 0, CPU_686, 0, 0},
- {"vpcomltb", vpcom_insn, 1, SUF_Z, 0xCC, 0x00, 0, 0, CPU_XOP, 0, 0},
- {"cmpss", xmm_xmm32_imm_insn, 4, SUF_Z, 0xF3, 0xC2, 0, 0, CPU_SSE, 0, 0},
- {"xbts", xbts_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_Obs, CPU_Undoc},
- {"vmovsd", movsd_insn, 5, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fstsw", fstsw_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_FPU, 0, 0},
- {"xgetbv", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xD0, 0, CPU_386, CPU_XSAVE, 0},
- {"vpcomneuq", vpcom_insn, 1, SUF_Z, 0xEF, 0x05, 0, 0, CPU_XOP, 0, 0},
- {"vcmpneq_usps", ssecmp_128_insn, 3, SUF_Z, 0x14, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"roundss", sse4m32imm_insn, 4, SUF_Z, 0x0A, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vpmacsdqh", vpma_insn, 1, SUF_Z, 0x9F, 0, 0, 0, CPU_XOP, 0, 0},
- {"vcmpgepd", ssecmp_128_insn, 3, SUF_Z, 0x0D, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vphaddw", ssse3_insn, 5, SUF_Z, 0x01, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fxrstor", twobytemem_insn, 1, SUF_Z, 0x01, 0x0F, 0xAE, 0, CPU_686, CPU_FPU, 0},
- {"fsave", twobytemem_insn, 1, SUF_Z, 0x06, 0x9B, 0xDD, 0, CPU_FPU, 0, 0},
- {"hlt", onebyte_insn, 1, SUF_Z, 0xF4, 0, 0, 0, CPU_Priv, 0, 0},
- {"fldpi", twobyte_insn, 1, SUF_Z, 0xD9, 0xEB, 0, 0, CPU_FPU, 0, 0},
- {"pavgw", mmxsse2_insn, 2, SUF_Z, 0xE3, 0, 0, 0, CPU_MMX, CPU_P3, 0},
- {"vfmadd231ps", vfma_ps_insn, 2, SUF_Z, 0xB8, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vpmaxub", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xDE, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"movd", movd_insn, 8, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_MMX, 0},
- {"pabsw", ssse3_insn, 5, SUF_Z, 0x1D, 0, 0, 0, CPU_SSSE3, 0, 0},
- {"cpuid", twobyte_insn, 1, SUF_Z, 0x0F, 0xA2, 0, 0, CPU_486, 0, 0},
- {"pf2iw", now3d_insn, 1, SUF_Z, 0x1C, 0, 0, 0, CPU_3DNow, CPU_Athlon, 0},
- {"vpcomgeud", vpcom_insn, 1, SUF_Z, 0xEE, 0x03, 0, 0, CPU_XOP, 0, 0},
- {"vcmpgtss", ssecmp_32_insn, 4, SUF_Z, 0x0E, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpsd", cmpsd_insn, 5, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcomneuw", vpcom_insn, 1, SUF_Z, 0xED, 0x05, 0, 0, CPU_XOP, 0, 0},
- {"cmpunordpd", ssecmp_128_insn, 3, SUF_Z, 0x03, 0x66, 0, 0, CPU_SSE, 0, 0},
- {"pause", onebyte_prefix_insn, 1, SUF_Z, 0xF3, 0x90, 0, 0, CPU_P4, 0, 0},
- {"unpckhpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x15, 0, 0, CPU_SSE2, 0, 0},
- {"vcmpge_oqsd", ssecmp_64_insn, 4, SUF_Z, 0x1D, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"xadd", cmpxchgxadd_insn, 4, SUF_Z, 0xC0, 0, 0, 0, CPU_486, 0, 0},
- {"vpmaxuw", ssse3_insn, 5, SUF_Z, 0x3E, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cvtsd2ss", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5A, 0, 0, CPU_SSE2, 0, 0},
- {"rcr", shift_insn, 16, SUF_Z, 0x03, 0, 0, 0, 0, 0, 0},
- {"clc", onebyte_insn, 1, SUF_Z, 0xF8, 0, 0, 0, 0, 0, 0},
- {"vpcomgew", vpcom_insn, 1, SUF_Z, 0xCD, 0x03, 0, 0, CPU_XOP, 0, 0},
- {"vpminub", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xDA, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"movntps", movnt_insn, 2, SUF_Z, 0x00, 0x2B, 0, 0, CPU_SSE, 0, 0},
- {"monitor", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xC8, 0, CPU_SSE3, 0, 0},
- {"vfnmaddss", fma_128_m32_insn, 3, SUF_Z, 0x7A, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"seto", setcc_insn, 1, SUF_Z, 0x00, 0, 0, 0, CPU_386, 0, 0},
- {"vcmpneqps", ssecmp_128_insn, 3, SUF_Z, 0x04, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmplt_oqps", ssecmp_128_insn, 3, SUF_Z, 0x11, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vmread", vmxmemrd_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_P4, 0, 0},
- {"vpclmullqlqdq", pclmulqdq_fixed_insn, 2, SUF_Z, 0x00, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"punpckldq", mmxsse2_insn, 2, SUF_Z, 0x62, 0, 0, 0, CPU_MMX, 0, 0},
- {"vpavgb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xE0, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"psignb", ssse3_insn, 5, SUF_Z, 0x08, 0, 0, 0, CPU_SSSE3, 0, 0},
- {"fcmovnu", fcmovcc_insn, 1, SUF_Z, 0xDB, 0xD8, 0, 0, CPU_686, CPU_FPU, 0},
- {"vgatherqps", gather_32x_32y_128_insn, 2, SUF_Z, 0x93, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"vpcomuw", vpcom_imm_insn, 1, SUF_Z, 0xED, 0, 0, 0, CPU_XOP, 0, 0},
- {"pi2fd", now3d_insn, 1, SUF_Z, 0x0D, 0, 0, 0, CPU_3DNow, 0, 0},
- {"vpcomq", vpcom_imm_insn, 1, SUF_Z, 0xCF, 0, 0, 0, CPU_XOP, 0, 0},
- {"vhaddps", xmm_xmm128_256_insn, 4, SUF_Z, 0xF2, 0x7C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vphadddq", vphaddsub_insn, 1, SUF_Z, 0xCB, 0, 0, 0, CPU_XOP, 0, 0},
- {"vmulsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x59, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"mulx", vex_gpr_reg_nds_rm_0F_insn, 2, SUF_Z, 0xF2, 0x38, 0xF6, ONLY_AVX, CPU_BMI2, 0, 0},
- {"vpermpd", vperm_imm_avx2_insn, 1, SUF_Z, 0x01, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"vpmovzxbq", sse4m16_insn, 4, SUF_Z, 0x32, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"psraw", pshift_insn, 4, SUF_Z, 0xE1, 0x71, 0x04, 0, CPU_MMX, 0, 0},
- {"vpermilps", vpermil_insn, 4, SUF_Z, 0x04, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"jno", jcc_insn, 9, SUF_Z, 0x01, 0, 0, 0, 0, 0, 0},
- {"vcmpordpd", ssecmp_128_insn, 3, SUF_Z, 0x07, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"comisd", xmm_xmm64_insn, 4, SUF_Z, 0x66, 0x2F, 0, 0, CPU_SSE2, 0, 0},
- {"vfnmaddsd", fma_128_m64_insn, 3, SUF_Z, 0x7B, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"punpckhdq", mmxsse2_insn, 2, SUF_Z, 0x6A, 0, 0, 0, CPU_MMX, 0, 0},
- {"vcmpnle_uqpd", ssecmp_128_insn, 3, SUF_Z, 0x16, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"aesenclast", aes_insn, 2, SUF_Z, 0x38, 0xDD, 0, 0, CPU_AVX, 0, 0},
- {"pcmpeqd", mmxsse2_insn, 2, SUF_Z, 0x76, 0, 0, 0, CPU_MMX, 0, 0},
- {"sha1msg2", intel_SHA1MSG2_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SHA, 0, 0},
- {"vtestps", sse4_insn, 2, SUF_Z, 0x0E, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pmagw", cyrixmmx_insn, 1, SUF_Z, 0x52, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
- {"vpinsrw", pinsrw_insn, 9, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"movntq", movntq_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SSE, 0, 0},
- {"vfmsub231ps", vfma_ps_insn, 2, SUF_Z, 0xBA, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"cmovno", cmovcc_insn, 3, SUF_Z, 0x01, 0, 0, 0, CPU_686, 0, 0},
- {"punpckhwd", mmxsse2_insn, 2, SUF_Z, 0x69, 0, 0, 0, CPU_MMX, 0, 0},
- {"movq", movq_insn, 9, SUF_Z, 0, 0, 0, 0, CPU_MMX, 0, 0},
- {"vfnmsub132pd", vfma_pd_insn, 2, SUF_Z, 0x9E, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"push", push_insn, 35, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
- {"imul", imul_insn, 19, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
- {"popfd", onebyte_insn, 1, SUF_Z, 0x9D, 0x20, 0, NOT_64, CPU_386, 0, 0},
- {"vfmsub213sd", vfma_sd_insn, 2, SUF_Z, 0xAB, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"call", call_insn, 30, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
- {"pmvzb", cyrixmmx_insn, 1, SUF_Z, 0x58, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
- {"vsubpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x5C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpsllvq", vpshiftv_vexw1_avx2_insn, 2, SUF_Z, 0x47, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"pclmulhqhqdq", pclmulqdq_fixed_insn, 2, SUF_Z, 0x11, 0, 0, 0, CPU_AVX, 0, 0},
- {"blsmsk", vex_gpr_ndd_rm_0F38_regext_insn, 2, SUF_Z, 0x00, 0xF3, 0x02, ONLY_AVX, CPU_BMI1, 0, 0},
- {"vprotb", vprot_insn, 3, SUF_Z, 0x00, 0, 0, 0, CPU_XOP, 0, 0},
- {"loop", loop_insn, 8, SUF_Z, 0x02, 0, 0, 0, 0, 0, 0},
- {"jle", jcc_insn, 9, SUF_Z, 0x0E, 0, 0, 0, 0, 0, 0},
- {"stgi", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xDC, 0, CPU_SVM, 0, 0},
- {"not", f6_insn, 4, SUF_Z, 0x02, 0, 0, 0, 0, 0, 0},
- {"svldt", cyrixsmm_insn, 1, SUF_Z, 0x7A, 0, 0, 0, CPU_486, CPU_Cyrix, CPU_SMM},
- {"vpmaxsd", ssse3_insn, 5, SUF_Z, 0x3D, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"maxss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5F, 0, 0, CPU_SSE, 0, 0},
- {"vminpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x5D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"blcs", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x01, 0x03, 0, 0, CPU_386, CPU_TBM, 0},
- {"vpcmpeqw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x75, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"frndint", twobyte_insn, 1, SUF_Z, 0xD9, 0xFC, 0, 0, CPU_FPU, 0, 0},
- {"vpcmpestrm", sse4pcmpstr_insn, 1, SUF_Z, 0x60, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmpeqss", ssecmp_32_insn, 4, SUF_Z, 0x00, 0xF3, 0, 0, CPU_SSE, 0, 0},
- {"vfmsubadd213ps", vfma_ps_insn, 2, SUF_Z, 0xA7, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"cmovnl", cmovcc_insn, 3, SUF_Z, 0x0D, 0, 0, 0, CPU_686, 0, 0},
- {"fldlg2", twobyte_insn, 1, SUF_Z, 0xD9, 0xEC, 0, 0, CPU_FPU, 0, 0},
- {"clflush", clflush_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_P3, 0, 0},
- {"iretq", onebyte_insn, 1, SUF_Z, 0xCF, 0x40, 0, ONLY_64, 0, 0, 0},
- {"vphaddubd", vphaddsub_insn, 1, SUF_Z, 0xD2, 0, 0, 0, CPU_XOP, 0, 0},
- {"vfnmadd213ps", vfma_ps_insn, 2, SUF_Z, 0xAC, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vmload", svm_rax_insn, 2, SUF_Z, 0xDA, 0, 0, 0, CPU_SVM, 0, 0},
- {"vpminud", ssse3_insn, 5, SUF_Z, 0x3B, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"packssdw", mmxsse2_insn, 2, SUF_Z, 0x6B, 0, 0, 0, CPU_MMX, 0, 0},
- {"pcmpeqw", mmxsse2_insn, 2, SUF_Z, 0x75, 0, 0, 0, CPU_MMX, 0, 0},
- {"js", jcc_insn, 9, SUF_Z, 0x08, 0, 0, 0, 0, 0, 0},
- {"jpo", jcc_insn, 9, SUF_Z, 0x0B, 0, 0, 0, 0, 0, 0},
- {"sidt", twobytemem_insn, 1, SUF_Z, 0x01, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
- {"jnge", jcc_insn, 9, SUF_Z, 0x0C, 0, 0, 0, 0, 0, 0},
- {"loope", loop_insn, 8, SUF_Z, 0x01, 0, 0, 0, 0, 0, 0},
- {"invpcid", invpcid_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_INVPCID, CPU_Priv},
- {"pavgb", mmxsse2_insn, 2, SUF_Z, 0xE0, 0, 0, 0, CPU_MMX, CPU_P3, 0},
- {"pminsd", sse4_insn, 2, SUF_Z, 0x39, 0, 0, 0, CPU_SSE41, 0, 0},
- {"cmovnb", cmovcc_insn, 3, SUF_Z, 0x03, 0, 0, 0, CPU_686, 0, 0},
- {"mulsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x59, 0, 0, CPU_SSE2, 0, 0},
- {"vcmpgt_oqsd", ssecmp_64_insn, 4, SUF_Z, 0x1E, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"blsr", vex_gpr_ndd_rm_0F38_regext_insn, 2, SUF_Z, 0x00, 0xF3, 0x01, ONLY_AVX, CPU_BMI1, 0, 0},
- {"vcmplt_oqss", ssecmp_32_insn, 4, SUF_Z, 0x11, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfnmsub213sd", vfma_sd_insn, 2, SUF_Z, 0xAF, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"shrd", shlrd_insn, 9, SUF_Z, 0xAC, 0, 0, 0, CPU_386, 0, 0},
- {"vpackuswb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x67, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"paddd", mmxsse2_insn, 2, SUF_Z, 0xFE, 0, 0, 0, CPU_MMX, 0, 0},
- {"vcmpeq_osps", ssecmp_128_insn, 3, SUF_Z, 0x10, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vaddpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x58, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpbroadcastb", vpbroadcastb_avx2_insn, 4, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"pmuludq", mmxsse2_insn, 2, SUF_Z, 0xF4, 0, 0, 0, CPU_SSE2, 0, 0},
- {"cmpnltsd", ssecmp_64_insn, 4, SUF_Z, 0x05, 0xF2, 0, 0, CPU_SSE2, 0, 0},
- {"vcmpgt_oqpd", ssecmp_128_insn, 3, SUF_Z, 0x1E, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcmpgtb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x64, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcomfalseq", vpcom_insn, 1, SUF_Z, 0xCF, 0x06, 0, 0, CPU_XOP, 0, 0},
- {"vcmpgtpd", ssecmp_128_insn, 3, SUF_Z, 0x0E, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfnmadd231ps", vfma_ps_insn, 2, SUF_Z, 0xBC, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"paddusb", mmxsse2_insn, 2, SUF_Z, 0xDC, 0, 0, 0, CPU_MMX, 0, 0},
- {"vcmpnge_uqpd", ssecmp_128_insn, 3, SUF_Z, 0x19, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmpps", xmm_xmm128_imm_insn, 1, SUF_Z, 0x00, 0xC2, 0, 0, CPU_SSE, 0, 0},
- {"vsqrtsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x51, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"setnp", setcc_insn, 1, SUF_Z, 0x0B, 0, 0, 0, CPU_386, 0, 0},
- {"vpcmpeqb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x74, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"psubsb", mmxsse2_insn, 2, SUF_Z, 0xE8, 0, 0, 0, CPU_MMX, 0, 0},
- {"vzeroall", vzero_insn, 1, SUF_Z, 0xC4, 0, 0, 0, CPU_AVX, 0, 0},
- {"jo", jcc_insn, 9, SUF_Z, 0x00, 0, 0, 0, 0, 0, 0},
- {"vpmovzxwd", sse4m64_insn, 4, SUF_Z, 0x33, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpminsw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xEA, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"bswap", bswap_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_486, 0, 0},
- {"movntpd", movnt_insn, 2, SUF_Z, 0x66, 0x2B, 0, 0, CPU_SSE2, 0, 0},
- {"paddb", mmxsse2_insn, 2, SUF_Z, 0xFC, 0, 0, 0, CPU_MMX, 0, 0},
- {"vpmaskmovq", vmaskmov_vexw1_avx2_insn, 4, SUF_Z, 0x8C, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"vfnmsub213pd", vfma_pd_insn, 2, SUF_Z, 0xAE, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"jng", jcc_insn, 9, SUF_Z, 0x0E, 0, 0, 0, 0, 0, 0},
- {"vcmpngeps", ssecmp_128_insn, 3, SUF_Z, 0x09, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"minss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5D, 0, 0, CPU_SSE, 0, 0},
- {"vpsubusb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xD8, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vsqrtps", avx_xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x51, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fclex", threebyte_insn, 1, SUF_Z, 0x9B, 0xDB, 0xE2, 0, CPU_FPU, 0, 0},
- {"pmovzxbq", sse4m16_insn, 4, SUF_Z, 0x32, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vextracti128", vextractif128_insn, 1, SUF_Z, 0x39, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"pcmpistri", sse4pcmpstr_insn, 1, SUF_Z, 0x63, 0, 0, 0, CPU_SSE42, 0, 0},
- {"ucomisd", xmm_xmm64_insn, 4, SUF_Z, 0x66, 0x2E, 0, 0, CPU_SSE2, 0, 0},
- {"vmwrite", vmxmemwr_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_P4, 0, 0},
- {"pfacc", now3d_insn, 1, SUF_Z, 0xAE, 0, 0, 0, CPU_3DNow, 0, 0},
- {"lldt", prot286_insn, 1, SUF_Z, 0x02, 0x00, 0, 0, CPU_286, CPU_Priv, CPU_Prot},
- {"fincstp", twobyte_insn, 1, SUF_Z, 0xD9, 0xF7, 0, 0, CPU_FPU, 0, 0},
- {"vcmpps", xmm_xmm128_imm_256_insn, 3, SUF_Z, 0x00, 0xC2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fcomp", fcom_insn, 6, SUF_Z, 0xD8, 0x03, 0, 0, CPU_FPU, 0, 0},
- {"pmullw", mmxsse2_insn, 2, SUF_Z, 0xD5, 0, 0, 0, CPU_MMX, 0, 0},
- {"cqo", onebyte_insn, 1, SUF_Z, 0x99, 0x40, 0, ONLY_64, 0, 0, 0},
- {"blendvps", sse4xmm0_insn, 2, SUF_Z, 0x14, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vpcomfalseud", vpcom_insn, 1, SUF_Z, 0xEE, 0x06, 0, 0, CPU_XOP, 0, 0},
- {"vpsignw", ssse3_insn, 5, SUF_Z, 0x09, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"lgs", lfgss_insn, 3, SUF_Z, 0xB5, 0, 0, 0, CPU_386, 0, 0},
- {"vfmaddpd", fma_128_256_insn, 4, SUF_Z, 0x69, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"vcmpnge_uqss", ssecmp_32_insn, 4, SUF_Z, 0x19, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"minps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x5D, 0, 0, CPU_SSE, 0, 0},
- {"aesdec", aes_insn, 2, SUF_Z, 0x38, 0xDE, 0, 0, CPU_AVX, 0, 0},
- {"vpsignb", ssse3_insn, 5, SUF_Z, 0x08, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pminud", sse4_insn, 2, SUF_Z, 0x3B, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vpcomuq", vpcom_imm_insn, 1, SUF_Z, 0xEF, 0, 0, 0, CPU_XOP, 0, 0},
- {"vpmaxsw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xEE, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vmmcall", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xD9, 0, CPU_SVM, 0, 0},
- {"vpunpckldq", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x62, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fcompp", twobyte_insn, 1, SUF_Z, 0xDE, 0xD9, 0, 0, CPU_FPU, 0, 0},
- {"vcmpneq_ussd", ssecmp_64_insn, 4, SUF_Z, 0x14, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcomneqd", vpcom_insn, 1, SUF_Z, 0xCE, 0x05, 0, 0, CPU_XOP, 0, 0},
- {"pblendw", sse4imm_insn, 2, SUF_Z, 0x0E, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vmovq", vmovq_insn, 5, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"haddps", xmm_xmm128_insn, 2, SUF_Z, 0xF2, 0x7C, 0, 0, CPU_SSE3, 0, 0},
- {"svts", cyrixsmm_insn, 1, SUF_Z, 0x7C, 0, 0, 0, CPU_486, CPU_Cyrix, CPU_SMM},
- {"o16", NULL, X86_OPERSIZE>>8, 0x10, 0, 0, 0, 0, 0, 0, 0},
- {"rcl", shift_insn, 16, SUF_Z, 0x02, 0, 0, 0, 0, 0, 0},
- {"jge", jcc_insn, 9, SUF_Z, 0x0D, 0, 0, 0, 0, 0, 0},
- {"pfrcpit1", now3d_insn, 1, SUF_Z, 0xA6, 0, 0, 0, CPU_3DNow, 0, 0},
- {"pminsb", sse4_insn, 2, SUF_Z, 0x38, 0, 0, 0, CPU_SSE41, 0, 0},
- {"daa", onebyte_insn, 1, SUF_Z, 0x27, 0, 0, NOT_64, 0, 0, 0},
- {"vpcomtrueub", vpcom_insn, 1, SUF_Z, 0xEC, 0x07, 0, 0, CPU_XOP, 0, 0},
- {"andnpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x55, 0, 0, CPU_SSE2, 0, 0},
- {"stosw", onebyte_insn, 1, SUF_Z, 0xAB, 0x10, 0, 0, 0, 0, 0},
- {"vpabsw", avx2_ssse3_2op_insn, 2, SUF_Z, 0x1D, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pfrsqit1", now3d_insn, 1, SUF_Z, 0xA7, 0, 0, 0, CPU_3DNow, 0, 0},
- {"sqrtps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x51, 0, 0, CPU_SSE, 0, 0},
- {"fnsave", onebytemem_insn, 1, SUF_Z, 0x06, 0xDD, 0, 0, CPU_FPU, 0, 0},
- {"vpcomleuw", vpcom_insn, 1, SUF_Z, 0xED, 0x01, 0, 0, CPU_XOP, 0, 0},
- {"cvtdq2ps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x5B, 0, 0, CPU_SSE2, 0, 0},
- {"vcvtsd2ss", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5A, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vdivpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x5E, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpneq_ospd", ssecmp_128_insn, 3, SUF_Z, 0x1C, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"wrgsbase", fs_gs_base_insn, 2, SUF_Z, 0x03, 0, 0, ONLY_64, CPU_FSGSBASE, 0, 0},
- {"add", arith_insn, 22, SUF_Z, 0x00, 0x00, 0, 0, 0, 0, 0},
- {"smi", onebyte_insn, 1, SUF_Z, 0xF1, 0, 0, 0, CPU_386, CPU_Undoc, 0},
- {"vpcomequq", vpcom_insn, 1, SUF_Z, 0xEF, 0x04, 0, 0, CPU_XOP, 0, 0},
- {"movapd", movau_insn, 6, SUF_Z, 0x66, 0x28, 0x01, 0, CPU_SSE2, 0, 0},
- {"vpmulhw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xE5, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cvttps2dq", xmm_xmm128_insn, 2, SUF_Z, 0xF3, 0x5B, 0, 0, CPU_SSE2, 0, 0},
- {"addss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x58, 0, 0, CPU_SSE, 0, 0},
- {"rsqrtss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x52, 0, 0, CPU_SSE, 0, 0},
- {"vpperm", vpperm_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_XOP, 0, 0},
- {"vpcomnequq", vpcom_insn, 1, SUF_Z, 0xEF, 0x05, 0, 0, CPU_XOP, 0, 0},
- {"vcvttsd2si", cvt_rx_xmm64_insn, 4, SUF_Z, 0xF2, 0x2C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pmulhriw", cyrixmmx_insn, 1, SUF_Z, 0x5D, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
- {"mul", f6_insn, 4, SUF_Z, 0x04, 0, 0, 0, 0, 0, 0},
- {"ucomiss", xmm_xmm32_insn, 4, SUF_Z, 0x00, 0x2E, 0, 0, CPU_SSE, 0, 0},
- {"vpcomneqb", vpcom_insn, 1, SUF_Z, 0xCC, 0x05, 0, 0, CPU_XOP, 0, 0},
- {"vpsllw", vpshift_insn, 8, SUF_Z, 0xF1, 0x71, 0x06, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcomfalseb", vpcom_insn, 1, SUF_Z, 0xCC, 0x06, 0, 0, CPU_XOP, 0, 0},
- {"vpmovsxwd", sse4m64_insn, 4, SUF_Z, 0x23, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"xend", tsx_0x0F_0x01_insn, 1, SUF_Z, 0xD5, 0, 0, 0, CPU_TSX, 0, 0},
- {"pshufd", xmm_xmm128_imm_insn, 1, SUF_Z, 0x66, 0x70, 0, 0, CPU_SSE2, 0, 0},
- {"jnc", jcc_insn, 9, SUF_Z, 0x03, 0, 0, 0, 0, 0, 0},
- {"vcmpnleps", ssecmp_128_insn, 3, SUF_Z, 0x06, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"psrldq", pslrldq_insn, 4, SUF_Z, 0x03, 0, 0, 0, CPU_SSE2, 0, 0},
- {"setb", setcc_insn, 1, SUF_Z, 0x02, 0, 0, 0, CPU_386, 0, 0},
- {"pinsrw", pinsrw_insn, 9, SUF_Z, 0, 0, 0, 0, CPU_MMX, CPU_P3, 0},
- {"jnae", jcc_insn, 9, SUF_Z, 0x02, 0, 0, 0, 0, 0, 0},
- {"movupd", movau_insn, 6, SUF_Z, 0x66, 0x10, 0x01, 0, CPU_SSE2, 0, 0},
- {"vcmptrue_ussd", ssecmp_64_insn, 4, SUF_Z, 0x1F, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fcmovbe", fcmovcc_insn, 1, SUF_Z, 0xDA, 0xD0, 0, 0, CPU_686, CPU_FPU, 0},
- {"movups", movau_insn, 6, SUF_Z, 0x00, 0x10, 0x01, 0, CPU_SSE, 0, 0},
- {"fyl2x", twobyte_insn, 1, SUF_Z, 0xD9, 0xF1, 0, 0, CPU_FPU, 0, 0},
- {"stosd", onebyte_insn, 1, SUF_Z, 0xAB, 0x20, 0, 0, CPU_386, 0, 0},
- {"vcmple_oqss", ssecmp_32_insn, 4, SUF_Z, 0x12, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"jb", jcc_insn, 9, SUF_Z, 0x02, 0, 0, 0, 0, 0, 0},
- {"vpcomfalseub", vpcom_insn, 1, SUF_Z, 0xEC, 0x06, 0, 0, CPU_XOP, 0, 0},
- {"fxam", twobyte_insn, 1, SUF_Z, 0xD9, 0xE5, 0, 0, CPU_FPU, 0, 0},
- {"vmresume", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xC3, 0, CPU_P4, 0, 0},
- {"vcmpneq_osss", ssecmp_32_insn, 4, SUF_Z, 0x1C, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"swapgs", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xF8, ONLY_64, 0, 0, 0},
- {"vpunpckhqdq", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x6D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"prefetcht2", twobytemem_insn, 1, SUF_Z, 0x03, 0x0F, 0x18, 0, CPU_P3, 0, 0},
- {"pmachriw", pmachriw_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
- {"aas", onebyte_insn, 1, SUF_Z, 0x3F, 0, 0, NOT_64, 0, 0, 0},
- {"fldz", twobyte_insn, 1, SUF_Z, 0xD9, 0xEE, 0, 0, CPU_FPU, 0, 0},
- {"vcmppd", xmm_xmm128_imm_256_insn, 3, SUF_Z, 0x66, 0xC2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"retf", retnf_insn, 6, SUF_Z, 0xCA, 0x40, 0, 0, 0, 0, 0},
- {"iretw", onebyte_insn, 1, SUF_Z, 0xCF, 0x10, 0, 0, 0, 0, 0},
- {"pclmulhqlqdq", pclmulqdq_fixed_insn, 2, SUF_Z, 0x01, 0, 0, 0, CPU_AVX, 0, 0},
- {"vpcomgtw", vpcom_insn, 1, SUF_Z, 0xCD, 0x02, 0, 0, CPU_XOP, 0, 0},
- {"pfcmpeq", now3d_insn, 1, SUF_Z, 0xB0, 0, 0, 0, CPU_3DNow, 0, 0},
- {"mfence", threebyte_insn, 1, SUF_Z, 0x0F, 0xAE, 0xF0, 0, CPU_P3, 0, 0},
- {"vprotq", vprot_insn, 3, SUF_Z, 0x03, 0, 0, 0, CPU_XOP, 0, 0},
- {"jae", jcc_insn, 9, SUF_Z, 0x03, 0, 0, 0, 0, 0, 0},
- {"fpatan", twobyte_insn, 1, SUF_Z, 0xD9, 0xF3, 0, 0, CPU_FPU, 0, 0},
- {"pfsub", now3d_insn, 1, SUF_Z, 0x9A, 0, 0, 0, CPU_3DNow, 0, 0},
- {"pmaxsb", sse4_insn, 2, SUF_Z, 0x3C, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vcmpltsd", ssecmp_64_insn, 4, SUF_Z, 0x01, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcomnequb", vpcom_insn, 1, SUF_Z, 0xEC, 0x05, 0, 0, CPU_XOP, 0, 0},
- {"insw", onebyte_insn, 1, SUF_Z, 0x6D, 0x10, 0, 0, 0, 0, 0},
- {"vfmsub132sd", vfma_sd_insn, 2, SUF_Z, 0x9B, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"prefetchw", twobytemem_insn, 1, SUF_Z, 0x01, 0x0F, 0x0D, 0, CPU_PRFCHW, 0, 0},
- {"vlddqu", lddqu_insn, 2, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpfalsepd", ssecmp_128_insn, 3, SUF_Z, 0x0B, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmpxchg16b", cmpxchg16b_insn, 1, SUF_Z, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"vpmaddubsw", ssse3_insn, 5, SUF_Z, 0x04, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"smsw", sldtmsw_insn, 6, SUF_Z, 0x04, 0x01, 0, 0, CPU_286, 0, 0},
- {"movlpd", movhlp_insn, 3, SUF_Z, 0x66, 0x12, 0, 0, CPU_SSE2, 0, 0},
- {"vcmpngess", ssecmp_32_insn, 4, SUF_Z, 0x09, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"maskmovq", maskmovq_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_MMX, CPU_P3, 0},
- {"cmovae", cmovcc_insn, 3, SUF_Z, 0x03, 0, 0, 0, CPU_686, 0, 0},
- {"setnae", setcc_insn, 1, SUF_Z, 0x02, 0, 0, 0, CPU_386, 0, 0},
- {"vminss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcomgeub", vpcom_insn, 1, SUF_Z, 0xEC, 0x03, 0, 0, CPU_XOP, 0, 0},
- {"jns", jcc_insn, 9, SUF_Z, 0x09, 0, 0, 0, 0, 0, 0},
- {"ibts", ibts_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_Obs, CPU_Undoc},
- {"je", jcc_insn, 9, SUF_Z, 0x04, 0, 0, 0, 0, 0, 0},
- {"pmovsxbw", sse4m64_insn, 4, SUF_Z, 0x20, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vunpckhps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x15, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vbroadcasti128", vbroadcastif128_insn, 1, SUF_Z, 0x5A, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"cld", onebyte_insn, 1, SUF_Z, 0xFC, 0, 0, 0, 0, 0, 0},
- {"ud1", twobyte_insn, 1, SUF_Z, 0x0F, 0xB9, 0, 0, CPU_286, CPU_Undoc, 0},
- {"vmovups", movau_insn, 6, SUF_Z, 0x00, 0x10, 0x01, ONLY_AVX, CPU_AVX, 0, 0},
- {"f2xm1", twobyte_insn, 1, SUF_Z, 0xD9, 0xF0, 0, 0, CPU_FPU, 0, 0},
- {"vcmpneq_uspd", ssecmp_128_insn, 3, SUF_Z, 0x14, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfnmadd231ss", vfma_ss_insn, 2, SUF_Z, 0xBD, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vcmpneq_oqss", ssecmp_32_insn, 4, SUF_Z, 0x0C, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpor", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xEB, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"jrcxz", jcxz_insn, 2, SUF_Z, 0x40, 0, 0, ONLY_64, 0, 0, 0},
- {"vpand", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xDB, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpminsd", ssse3_insn, 5, SUF_Z, 0x39, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcomgtuq", vpcom_insn, 1, SUF_Z, 0xEF, 0x02, 0, 0, CPU_XOP, 0, 0},
- {"vpmovzxbw", sse4m64_insn, 4, SUF_Z, 0x30, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcomtrueud", vpcom_insn, 1, SUF_Z, 0xEE, 0x07, 0, 0, CPU_XOP, 0, 0},
- {"vpcomneb", vpcom_insn, 1, SUF_Z, 0xCC, 0x05, 0, 0, CPU_XOP, 0, 0},
- {"cvttps2pi", cvt_mm_xmm64_insn, 2, SUF_Z, 0x2C, 0, 0, 0, CPU_SSE, 0, 0},
- {"movmskpd", movmsk_insn, 4, SUF_Z, 0x66, 0, 0, 0, CPU_SSE2, 0, 0},
- {"pfsubr", now3d_insn, 1, SUF_Z, 0xAA, 0, 0, 0, CPU_3DNow, 0, 0},
- {"vsubss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"invvpid", eptvpid_insn, 2, SUF_Z, 0x01, 0, 0, 0, CPU_386, CPU_EPTVPID, 0},
- {"cmpleps", ssecmp_128_insn, 3, SUF_Z, 0x02, 0, 0, 0, CPU_SSE, 0, 0},
- {"vpavgw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xE3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vmovhlps", movhllhps_insn, 2, SUF_Z, 0x12, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpeq_uqpd", ssecmp_128_insn, 3, SUF_Z, 0x08, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"maxps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x5F, 0, 0, CPU_SSE, 0, 0},
- {"insb", onebyte_insn, 1, SUF_Z, 0x6C, 0x00, 0, 0, 0, 0, 0},
- {"vpmaxsb", ssse3_insn, 5, SUF_Z, 0x3C, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmplepd", ssecmp_128_insn, 3, SUF_Z, 0x02, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"popad", onebyte_insn, 1, SUF_Z, 0x61, 0x20, 0, NOT_64, CPU_386, 0, 0},
- {"cmovnge", cmovcc_insn, 3, SUF_Z, 0x0C, 0, 0, 0, CPU_686, 0, 0},
- {"unpckhps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x15, 0, 0, CPU_SSE, 0, 0},
- {"cmovpo", cmovcc_insn, 3, SUF_Z, 0x0B, 0, 0, 0, CPU_686, 0, 0},
- {"setnb", setcc_insn, 1, SUF_Z, 0x03, 0, 0, 0, CPU_386, 0, 0},
- {"sbb", arith_insn, 22, SUF_Z, 0x18, 0x03, 0, 0, 0, 0, 0},
- {"divpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x5E, 0, 0, CPU_SSE2, 0, 0},
- {"vbroadcastf128", vbroadcastif128_insn, 1, SUF_Z, 0x1A, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"insd", onebyte_insn, 1, SUF_Z, 0x6D, 0x20, 0, 0, CPU_386, 0, 0},
- {"invept", eptvpid_insn, 2, SUF_Z, 0x00, 0, 0, 0, CPU_386, CPU_EPTVPID, 0},
- {"vmaxsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5F, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmpsw", onebyte_insn, 1, SUF_Z, 0xA7, 0x10, 0, 0, 0, 0, 0},
- {"vcmpeqss", ssecmp_32_insn, 4, SUF_Z, 0x00, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"mulps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x59, 0, 0, CPU_SSE, 0, 0},
- {"vaddps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x58, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpgeps", ssecmp_128_insn, 3, SUF_Z, 0x0D, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfrczps", vfrc_pdps_insn, 2, SUF_Z, 0x00, 0, 0, 0, CPU_XOP, 0, 0},
- {"vcmpeq_uqss", ssecmp_32_insn, 4, SUF_Z, 0x08, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"sysexit", twobyte_insn, 1, SUF_Z, 0x0F, 0x35, 0, NOT_64, CPU_686, CPU_Priv, 0},
- {"xor", arith_insn, 22, SUF_Z, 0x30, 0x06, 0, 0, 0, 0, 0},
- {"pshuflw", xmm_xmm128_imm_insn, 1, SUF_Z, 0xF2, 0x70, 0, 0, CPU_SSE2, 0, 0},
- {"vfrczpd", vfrc_pdps_insn, 2, SUF_Z, 0x01, 0, 0, 0, CPU_XOP, 0, 0},
- {"vpcomleud", vpcom_insn, 1, SUF_Z, 0xEE, 0x01, 0, 0, CPU_XOP, 0, 0},
- {"vpcomlew", vpcom_insn, 1, SUF_Z, 0xCD, 0x01, 0, 0, CPU_XOP, 0, 0},
- {"addps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x58, 0, 0, CPU_SSE, 0, 0},
- {"vpsraw", vpshift_insn, 8, SUF_Z, 0xE1, 0x71, 0x04, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcomiss", avx_xmm_xmm32_insn, 2, SUF_Z, 0x00, 0x2F, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpngtpd", ssecmp_128_insn, 3, SUF_Z, 0x0A, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmpnltpd", ssecmp_128_insn, 3, SUF_Z, 0x05, 0x66, 0, 0, CPU_SSE, 0, 0},
- {"sqrtsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x51, 0, 0, CPU_SSE2, 0, 0},
- {"pfrsqrt", now3d_insn, 1, SUF_Z, 0x97, 0, 0, 0, CPU_3DNow, 0, 0},
- {"scasw", onebyte_insn, 1, SUF_Z, 0xAF, 0x10, 0, 0, 0, 0, 0},
- {"pinsrd", pinsrd_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_SSE41, 0},
- {"vaesenclast", aes_insn, 2, SUF_Z, 0x38, 0xDD, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"rdtscp", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xF9, 0, CPU_686, CPU_AMD, CPU_Priv},
- {"vcmpeq_ospd", ssecmp_128_insn, 3, SUF_Z, 0x10, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"div", div_insn, 8, SUF_Z, 0x06, 0, 0, 0, 0, 0, 0},
- {"cvtpd2pi", cvt_mm_xmm_insn, 1, SUF_Z, 0x66, 0x2D, 0, 0, CPU_SSE2, 0, 0},
- {"vcmpltss", ssecmp_32_insn, 4, SUF_Z, 0x01, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vphaddwq", vphaddsub_insn, 1, SUF_Z, 0xC7, 0, 0, 0, CPU_XOP, 0, 0},
- {"cmovz", cmovcc_insn, 3, SUF_Z, 0x04, 0, 0, 0, CPU_686, 0, 0},
- {"vpcomltud", vpcom_insn, 1, SUF_Z, 0xEE, 0x00, 0, 0, CPU_XOP, 0, 0},
- {"ret", retnf_insn, 6, SUF_Z, 0xC2, 0, 0, 0, 0, 0, 0},
- {"vpshaw", amd_vpshift_insn, 2, SUF_Z, 0x99, 0, 0, 0, CPU_XOP, 0, 0},
- {"pblendvb", sse4xmm0_insn, 2, SUF_Z, 0x10, 0, 0, 0, CPU_SSE41, 0, 0},
- {"pinsrq", pinsrq_insn, 2, SUF_Z, 0, 0, 0, ONLY_64, CPU_SSE41, 0, 0},
- {"vmulpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x59, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pmaxsd", sse4_insn, 2, SUF_Z, 0x3D, 0, 0, 0, CPU_SSE41, 0, 0},
- {"cmovne", cmovcc_insn, 3, SUF_Z, 0x05, 0, 0, 0, CPU_686, 0, 0},
- {"ltr", prot286_insn, 1, SUF_Z, 0x03, 0x00, 0, 0, CPU_286, CPU_Priv, CPU_Prot},
- {"fdecstp", twobyte_insn, 1, SUF_Z, 0xD9, 0xF6, 0, 0, CPU_FPU, 0, 0},
- {"lsl", larlsl_insn, 6, SUF_Z, 0x03, 0, 0, 0, CPU_286, CPU_Prot, 0},
- {"pcmpgtb", mmxsse2_insn, 2, SUF_Z, 0x64, 0, 0, 0, CPU_MMX, 0, 0},
- {"psrld", pshift_insn, 4, SUF_Z, 0xD2, 0x72, 0x02, 0, CPU_MMX, 0, 0},
- {"xsave", twobytemem_insn, 1, SUF_Z, 0x04, 0x0F, 0xAE, 0, CPU_386, CPU_XSAVE, 0},
- {"hsubps", xmm_xmm128_insn, 2, SUF_Z, 0xF2, 0x7D, 0, 0, CPU_SSE3, 0, 0},
- {"sti", onebyte_insn, 1, SUF_Z, 0xFB, 0, 0, 0, 0, 0, 0},
- {"pfcmpge", now3d_insn, 1, SUF_Z, 0x90, 0, 0, 0, CPU_3DNow, 0, 0},
- {"setnz", setcc_insn, 1, SUF_Z, 0x05, 0, 0, 0, CPU_386, 0, 0},
- {"vaesdeclast", aes_insn, 2, SUF_Z, 0x38, 0xDF, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfnmadd213ss", vfma_ss_insn, 2, SUF_Z, 0xAD, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"pcmpestri", sse4pcmpstr_insn, 1, SUF_Z, 0x61, 0, 0, 0, CPU_SSE42, 0, 0},
- {"vpcmpeqq", ssse3_insn, 5, SUF_Z, 0x29, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fmul", farith_insn, 7, SUF_Z, 0xC8, 0xC8, 0x01, 0, CPU_FPU, 0, 0},
- {"vmovntpd", movnt_insn, 2, SUF_Z, 0x66, 0x2B, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpmadcsswd", vpma_insn, 1, SUF_Z, 0xA6, 0, 0, 0, CPU_XOP, 0, 0},
- {"vcmpngt_uqps", ssecmp_128_insn, 3, SUF_Z, 0x1A, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"svdc", svdc_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_486, CPU_Cyrix, CPU_SMM},
- {"orpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x56, 0, 0, CPU_SSE2, 0, 0},
- {"fdivrp", farithp_insn, 3, SUF_Z, 0xF0, 0, 0, 0, CPU_FPU, 0, 0},
- {"vgatherdps", gather_32x_32y_insn, 2, SUF_Z, 0x92, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"packsswb", mmxsse2_insn, 2, SUF_Z, 0x63, 0, 0, 0, CPU_MMX, 0, 0},
- {"scasd", onebyte_insn, 1, SUF_Z, 0xAF, 0x20, 0, 0, CPU_386, 0, 0},
- {"vfmsub231pd", vfma_pd_insn, 2, SUF_Z, 0xBA, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"fptan", twobyte_insn, 1, SUF_Z, 0xD9, 0xF2, 0, 0, CPU_FPU, 0, 0},
- {"vpcomd", vpcom_imm_insn, 1, SUF_Z, 0xCE, 0, 0, 0, CPU_XOP, 0, 0},
- {"cvtsi2sd", cvt_xmm_rmx_insn, 6, SUF_Z, 0xF2, 0x2A, 0, 0, CPU_SSE2, 0, 0},
- {"vphsubwd", vphaddsub_insn, 1, SUF_Z, 0xE2, 0, 0, 0, CPU_XOP, 0, 0},
- {"vcmpnlt_uqpd", ssecmp_128_insn, 3, SUF_Z, 0x15, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmpneqpd", ssecmp_128_insn, 3, SUF_Z, 0x04, 0x66, 0, 0, CPU_SSE, 0, 0},
- {"ud2", twobyte_insn, 1, SUF_Z, 0x0F, 0x0B, 0, 0, CPU_286, 0, 0},
- {"andps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x54, 0, 0, CPU_SSE, 0, 0},
- {"vorpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x56, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"lmsw", prot286_insn, 1, SUF_Z, 0x06, 0x01, 0, 0, CPU_286, CPU_Priv, 0},
- {"tzmsk", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x01, 0x04, 0, 0, CPU_386, CPU_TBM, 0},
- {"vdppd", sse4imm_insn, 2, SUF_Z, 0x41, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"smintold", twobyte_insn, 1, SUF_Z, 0x0F, 0x7E, 0, 0, CPU_486, CPU_Cyrix, CPU_Obs},
- {"smint", twobyte_insn, 1, SUF_Z, 0x0F, 0x38, 0, 0, CPU_686, CPU_Cyrix, 0},
- {"vcmpnlt_uqss", ssecmp_32_insn, 4, SUF_Z, 0x15, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmovs", cmovcc_insn, 3, SUF_Z, 0x08, 0, 0, 0, CPU_686, 0, 0},
- {"vpcomequw", vpcom_insn, 1, SUF_Z, 0xED, 0x04, 0, 0, CPU_XOP, 0, 0},
- {"cvttsd2si", cvt_rx_xmm64_insn, 4, SUF_Z, 0xF2, 0x2C, 0, 0, CPU_SSE2, 0, 0},
- {"vcmpge_oqss", ssecmp_32_insn, 4, SUF_Z, 0x1D, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"minpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x5D, 0, 0, CPU_SSE2, 0, 0},
- {"por", mmxsse2_insn, 2, SUF_Z, 0xEB, 0, 0, 0, CPU_MMX, 0, 0},
- {"vcmpfalseps", ssecmp_128_insn, 3, SUF_Z, 0x0B, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vaddsubpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0xD0, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vmxon", vmxthreebytemem_insn, 1, SUF_Z, 0xF3, 0, 0, 0, CPU_P4, 0, 0},
- {"fldln2", twobyte_insn, 1, SUF_Z, 0xD9, 0xED, 0, 0, CPU_FPU, 0, 0},
- {"pfpnacc", now3d_insn, 1, SUF_Z, 0x8E, 0, 0, 0, CPU_3DNow, CPU_Athlon, 0},
- {"lfs", lfgss_insn, 3, SUF_Z, 0xB4, 0, 0, 0, CPU_386, 0, 0},
- {"vmovlps", movhlp_insn, 3, SUF_Z, 0x00, 0x12, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcvtsi2sd", cvt_xmm_rmx_insn, 6, SUF_Z, 0xF2, 0x2A, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcvtdq2ps", avx_xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x5B, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcvtss2sd", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5A, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpge_oqpd", ssecmp_128_insn, 3, SUF_Z, 0x1D, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfmsub132pd", vfma_pd_insn, 2, SUF_Z, 0x9A, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vpblendw", sse4imm_256avx2_insn, 4, SUF_Z, 0x0E, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pmulhrw", now3d_insn, 1, SUF_Z, 0xB7, 0, 0, 0, CPU_3DNow, 0, 0},
- {"vcmpless", ssecmp_32_insn, 4, SUF_Z, 0x02, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"movntss", movntss_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SSE4a, 0, 0},
- {"vpandn", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xDF, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pextrd", pextrd_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_SSE41, 0},
- {"divsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5E, 0, 0, CPU_SSE2, 0, 0},
- {"pmaxud", sse4_insn, 2, SUF_Z, 0x3F, 0, 0, 0, CPU_SSE41, 0, 0},
- {"pfmul", now3d_insn, 1, SUF_Z, 0xB4, 0, 0, 0, CPU_3DNow, 0, 0},
- {"vmaxpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x5F, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vgatherdpd", gather_64x_64x_insn, 2, SUF_Z, 0x92, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"movnti", movnti_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_P4, 0, 0},
- {"pxor", mmxsse2_insn, 2, SUF_Z, 0xEF, 0, 0, 0, CPU_MMX, 0, 0},
- {"vpmovsxbw", sse4m64_insn, 4, SUF_Z, 0x20, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vmovhps", movhlp_insn, 3, SUF_Z, 0x00, 0x16, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"jbe", jcc_insn, 9, SUF_Z, 0x06, 0, 0, 0, 0, 0, 0},
- {"outsw", onebyte_insn, 1, SUF_Z, 0x6F, 0x10, 0, 0, 0, 0, 0},
- {"vcmpngt_uqpd", ssecmp_128_insn, 3, SUF_Z, 0x1A, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpeqpd", ssecmp_128_insn, 3, SUF_Z, 0x00, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpermd", vperm_var_avx2_insn, 1, SUF_Z, 0x36, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"vpcomltuw", vpcom_insn, 1, SUF_Z, 0xED, 0x00, 0, 0, CPU_XOP, 0, 0},
- {"wrshr", rdwrshr_insn, 1, SUF_Z, 0x01, 0, 0, 0, CPU_686, CPU_Cyrix, CPU_SMM},
- {"vmxoff", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xC4, 0, CPU_P4, 0, 0},
- {"paddq", mmxsse2_insn, 2, SUF_Z, 0xD4, 0, 0, 0, CPU_MMX, 0, 0},
- {"fstcw", fstcw_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_FPU, 0, 0},
- {"setnle", setcc_insn, 1, SUF_Z, 0x0F, 0, 0, 0, CPU_386, 0, 0},
- {"cbw", onebyte_insn, 1, SUF_Z, 0x98, 0x10, 0, 0, 0, 0, 0},
- {"vfmsub213ss", vfma_ss_insn, 2, SUF_Z, 0xAB, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"pfmax", now3d_insn, 1, SUF_Z, 0xA4, 0, 0, 0, CPU_3DNow, 0, 0},
- {"jnb", jcc_insn, 9, SUF_Z, 0x03, 0, 0, 0, 0, 0, 0},
- {"blendps", sse4imm_insn, 2, SUF_Z, 0x0C, 0, 0, 0, CPU_SSE41, 0, 0},
- {"fsincos", twobyte_insn, 1, SUF_Z, 0xD9, 0xFB, 0, 0, CPU_286, CPU_FPU, 0},
- {"vfmadd231ss", vfma_ss_insn, 2, SUF_Z, 0xB9, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"fld1", twobyte_insn, 1, SUF_Z, 0xD9, 0xE8, 0, 0, CPU_FPU, 0, 0},
- {"t1mskc", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x01, 0x07, 0, 0, CPU_386, CPU_TBM, 0},
- {"xabort", tsx_xabort_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_TSX, 0, 0},
- {"pextrw", pextrw_insn, 7, SUF_Z, 0, 0, 0, 0, CPU_MMX, CPU_P3, 0},
- {"vfnmsub231pd", vfma_pd_insn, 2, SUF_Z, 0xBE, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"psubsw", mmxsse2_insn, 2, SUF_Z, 0xE9, 0, 0, 0, CPU_MMX, 0, 0},
- {"vfnmsubss", fma_128_m32_insn, 3, SUF_Z, 0x7E, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"lea", lea_insn, 3, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
- {"vmptrld", vmxtwobytemem_insn, 1, SUF_Z, 0x06, 0, 0, 0, CPU_P4, 0, 0},
- {"cmpeqsd", ssecmp_64_insn, 4, SUF_Z, 0x00, 0xF2, 0, 0, CPU_SSE2, 0, 0},
- {"o64", NULL, X86_OPERSIZE>>8, 0x40, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"vcvtpd2ps", avx_cvt_xmm128_insn, 2, SUF_Z, 0x66, 0x5A, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"faddp", farithp_insn, 3, SUF_Z, 0xC0, 0, 0, 0, CPU_FPU, 0, 0},
- {"vpsrldq", pslrldq_insn, 4, SUF_Z, 0x03, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpfalsesd", ssecmp_64_insn, 4, SUF_Z, 0x0B, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"lzcnt", cnt_insn, 3, SUF_Z, 0xBD, 0, 0, 0, CPU_LZCNT, 0, 0},
- {"vcmpunord_sss", ssecmp_32_insn, 4, SUF_Z, 0x13, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpleps", ssecmp_128_insn, 3, SUF_Z, 0x02, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vextractps", extractps_insn, 2, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"enter", enter_insn, 3, SUF_Z, 0, 0, 0, 0, CPU_186, 0, 0},
- {"vandnpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x55, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"roundsd", sse4m64imm_insn, 4, SUF_Z, 0x0B, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vpaddb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xFC, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmpordss", ssecmp_32_insn, 4, SUF_Z, 0x07, 0xF3, 0, 0, CPU_SSE, 0, 0},
- {"vpcomeqb", vpcom_insn, 1, SUF_Z, 0xCC, 0x04, 0, 0, CPU_XOP, 0, 0},
- {"vgatherqpd", gather_64x_64y_insn, 2, SUF_Z, 0x93, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"pcmpeqq", sse4_insn, 2, SUF_Z, 0x29, 0, 0, 0, CPU_SSE41, 0, 0},
- {"fsetpm", twobyte_insn, 1, SUF_Z, 0xDB, 0xE4, 0, 0, CPU_286, CPU_FPU, CPU_Obs},
- {"vpcomgeuw", vpcom_insn, 1, SUF_Z, 0xED, 0x03, 0, 0, CPU_XOP, 0, 0},
- {"vpmadcswd", vpma_insn, 1, SUF_Z, 0xB6, 0, 0, 0, CPU_XOP, 0, 0},
- {"vcvtps2ph", avx_cvtps2ph_insn, 4, SUF_Z, 0x66, 0x1D, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpneqpd", ssecmp_128_insn, 3, SUF_Z, 0x04, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fcmove", fcmovcc_insn, 1, SUF_Z, 0xDA, 0xC8, 0, 0, CPU_686, CPU_FPU, 0},
- {"vfmadd231pd", vfma_pd_insn, 2, SUF_Z, 0xB8, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"fprem1", twobyte_insn, 1, SUF_Z, 0xD9, 0xF5, 0, 0, CPU_286, CPU_FPU, 0},
- {"setna", setcc_insn, 1, SUF_Z, 0x06, 0, 0, 0, CPU_386, 0, 0},
- {"cwd", onebyte_insn, 1, SUF_Z, 0x99, 0x10, 0, 0, 0, 0, 0},
- {"aesimc", aesimc_insn, 1, SUF_Z, 0x38, 0xDB, 0, 0, CPU_AES, 0, 0},
- {"idiv", div_insn, 8, SUF_Z, 0x07, 0, 0, 0, 0, 0, 0},
- {"vcmplt_oqsd", ssecmp_64_insn, 4, SUF_Z, 0x11, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cvtps2pi", cvt_mm_xmm64_insn, 2, SUF_Z, 0x2D, 0, 0, 0, CPU_SSE, 0, 0},
- {"vblendps", sse4imm_256_insn, 4, SUF_Z, 0x0C, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"setnge", setcc_insn, 1, SUF_Z, 0x0C, 0, 0, 0, CPU_386, 0, 0},
- {"xsaveopt64", xsaveopt64_insn, 1, SUF_Z, 0x06, 0x0F, 0xAE, ONLY_64, CPU_XSAVEOPT, 0, 0},
- {"pcmpestrm", sse4pcmpstr_insn, 1, SUF_Z, 0x60, 0, 0, 0, CPU_SSE42, 0, 0},
- {"vpshlq", amd_vpshift_insn, 2, SUF_Z, 0x97, 0, 0, 0, CPU_XOP, 0, 0},
- {"vmaskmovdqu", maskmovdqu_insn, 1, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcomnew", vpcom_insn, 1, SUF_Z, 0xCD, 0x05, 0, 0, CPU_XOP, 0, 0},
- {"vcmpunordpd", ssecmp_128_insn, 3, SUF_Z, 0x03, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpneqsd", ssecmp_64_insn, 4, SUF_Z, 0x04, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cvttpd2dq", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0xE6, 0, 0, CPU_SSE2, 0, 0},
- {"sahf", onebyte_insn, 1, SUF_Z, 0x9E, 0, 0, 0, 0, 0, 0},
- {"vpshab", amd_vpshift_insn, 2, SUF_Z, 0x98, 0, 0, 0, CPU_XOP, 0, 0},
- {"jnz", jcc_insn, 9, SUF_Z, 0x05, 0, 0, 0, 0, 0, 0},
- {"pextrb", pextrb_insn, 3, SUF_Z, 0, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vmsave", svm_rax_insn, 2, SUF_Z, 0xDB, 0, 0, 0, CPU_SVM, 0, 0},
- {"vcmpordsd", ssecmp_64_insn, 4, SUF_Z, 0x07, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"setbe", setcc_insn, 1, SUF_Z, 0x06, 0, 0, 0, CPU_386, 0, 0},
- {"vfmsubadd231ps", vfma_ps_insn, 2, SUF_Z, 0xB7, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vpcomgtb", vpcom_insn, 1, SUF_Z, 0xCC, 0x02, 0, 0, CPU_XOP, 0, 0},
- {"vfnmsubps", fma_128_256_insn, 4, SUF_Z, 0x7C, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"shrx", vex_gpr_reg_rm_nds_0F_insn, 2, SUF_Z, 0xF2, 0x38, 0xF7, ONLY_AVX, CPU_BMI2, 0, 0},
- {"dpps", sse4imm_insn, 2, SUF_Z, 0x40, 0, 0, 0, CPU_SSE41, 0, 0},
- {"movdqa", movau_insn, 6, SUF_Z, 0x66, 0x6F, 0x10, 0, CPU_SSE2, 0, 0},
- {"xcryptofb", padlock_insn, 1, SUF_Z, 0xE8, 0xF3, 0xA7, 0, CPU_PadLock, 0, 0},
- {"jmp", jmp_insn, 31, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
- {"vpsrlq", vpshift_insn, 8, SUF_Z, 0xD3, 0x73, 0x02, ONLY_AVX, CPU_AVX, 0, 0},
- {"invlpga", invlpga_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_SVM, 0, 0},
- {"vpcomgtq", vpcom_insn, 1, SUF_Z, 0xCF, 0x02, 0, 0, CPU_XOP, 0, 0},
- {"vpsadbw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xF6, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vroundsd", sse4m64imm_insn, 4, SUF_Z, 0x0B, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfmaddss", fma_128_m32_insn, 3, SUF_Z, 0x6A, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"fbstp", fbldstp_insn, 1, SUF_Z, 0x06, 0, 0, 0, CPU_FPU, 0, 0},
- {"rdpmc", twobyte_insn, 1, SUF_Z, 0x0F, 0x33, 0, 0, CPU_686, 0, 0},
- {"pslld", pshift_insn, 4, SUF_Z, 0xF2, 0x72, 0x06, 0, CPU_MMX, 0, 0},
- {"vpcomeqd", vpcom_insn, 1, SUF_Z, 0xCE, 0x04, 0, 0, CPU_XOP, 0, 0},
- {"movntdqa", movntdqa_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_SSE41, 0, 0},
- {"subps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x5C, 0, 0, CPU_SSE, 0, 0},
- {"adcx", vex_gpr_ndd_rm_0F38_insn, 2, SUF_Z, 0x66, 0xF6, 0, 0, CPU_ADX, 0, 0},
- {"repz", NULL, X86_LOCKREP>>8, 0xF3, 0, 0, 0, 0, 0, 0, 0},
- {"ja", jcc_insn, 9, SUF_Z, 0x07, 0, 0, 0, 0, 0, 0},
- {"vpmacsdql", vpma_insn, 1, SUF_Z, 0x97, 0, 0, 0, CPU_XOP, 0, 0},
- {"psadbw", mmxsse2_insn, 2, SUF_Z, 0xF6, 0, 0, 0, CPU_MMX, CPU_P3, 0},
- {"vfnmaddps", fma_128_256_insn, 4, SUF_Z, 0x78, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"pshufb", ssse3_insn, 5, SUF_Z, 0x00, 0, 0, 0, CPU_SSSE3, 0, 0},
- {"o32", NULL, X86_OPERSIZE>>8, 0x20, 0, 0, 0, 0, 0, 0, 0},
- {"vpcomeqq", vpcom_insn, 1, SUF_Z, 0xCF, 0x04, 0, 0, CPU_XOP, 0, 0},
- {"blendpd", sse4imm_insn, 2, SUF_Z, 0x0D, 0, 0, 0, CPU_SSE41, 0, 0},
- {"popfq", onebyte_insn, 1, SUF_Z, 0x9D, 0x40, 0x40, ONLY_64, 0, 0, 0},
- {"vhsubps", xmm_xmm128_256_insn, 4, SUF_Z, 0xF2, 0x7D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpclmulhqlqdq", pclmulqdq_fixed_insn, 2, SUF_Z, 0x01, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vandpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x54, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cvtpi2ps", cvt_xmm_mm_ps_insn, 1, SUF_Z, 0x2A, 0, 0, 0, CPU_SSE, 0, 0},
- {"vpblendvb", avx2_sse4xmm0_insn, 2, SUF_Z, 0x4C, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"movntdq", movnt_insn, 2, SUF_Z, 0x66, 0xE7, 0, 0, CPU_SSE2, 0, 0},
- {"vpaddw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xFD, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcomeqw", vpcom_insn, 1, SUF_Z, 0xCD, 0x04, 0, 0, CPU_XOP, 0, 0},
- {"unpcklpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x14, 0, 0, CPU_SSE2, 0, 0},
- {"vpcomgtuw", vpcom_insn, 1, SUF_Z, 0xED, 0x02, 0, 0, CPU_XOP, 0, 0},
- {"fadd", farith_insn, 7, SUF_Z, 0xC0, 0xC0, 0x00, 0, CPU_FPU, 0, 0},
- {"fcmovnbe", fcmovcc_insn, 1, SUF_Z, 0xDB, 0xD0, 0, 0, CPU_686, CPU_FPU, 0},
- {"vpcomltub", vpcom_insn, 1, SUF_Z, 0xEC, 0x00, 0, 0, CPU_XOP, 0, 0},
- {"cmplepd", ssecmp_128_insn, 3, SUF_Z, 0x02, 0x66, 0, 0, CPU_SSE, 0, 0},
- {"fyl2xp1", twobyte_insn, 1, SUF_Z, 0xD9, 0xF9, 0, 0, CPU_FPU, 0, 0},
- {"vpmacssdql", vpma_insn, 1, SUF_Z, 0x87, 0, 0, 0, CPU_XOP, 0, 0},
- {"vmpsadbw", sse4imm_256avx2_insn, 4, SUF_Z, 0x42, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"punpckhqdq", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x6D, 0, 0, CPU_SSE2, 0, 0},
- {"pushaw", onebyte_insn, 1, SUF_Z, 0x60, 0x10, 0, NOT_64, CPU_186, 0, 0},
- {"sar", shift_insn, 16, SUF_Z, 0x07, 0, 0, 0, 0, 0, 0},
- {"shlx", vex_gpr_reg_rm_nds_0F_insn, 2, SUF_Z, 0x66, 0x38, 0xF7, ONLY_AVX, CPU_BMI2, 0, 0},
- {"vcmpunord_sps", ssecmp_128_insn, 3, SUF_Z, 0x13, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcomfalsew", vpcom_insn, 1, SUF_Z, 0xCD, 0x06, 0, 0, CPU_XOP, 0, 0},
- {"vpbroadcastq", vpbroadcastq_avx2_insn, 4, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"movdqu", movau_insn, 6, SUF_Z, 0xF3, 0x6F, 0x10, 0, CPU_SSE2, 0, 0},
- {"vcmpord_ssd", ssecmp_64_insn, 4, SUF_Z, 0x17, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpfalsess", ssecmp_32_insn, 4, SUF_Z, 0x0B, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"lddqu", lddqu_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_SSE3, 0, 0},
- {"sha1msg1", intel_SHA1MSG1_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SHA, 0, 0},
- {"lock", NULL, X86_LOCKREP>>8, 0xF0, 0, 0, 0, 0, 0, 0, 0},
- {"lss", lfgss_insn, 3, SUF_Z, 0xB2, 0, 0, 0, CPU_386, 0, 0},
- {"orps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x56, 0, 0, CPU_SSE, 0, 0},
- {"vbroadcastsd", vbroadcastsd_insn, 2, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"rsdc", rsdc_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_486, CPU_Cyrix, CPU_SMM},
- {"crc32", crc32_insn, 5, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_SSE42, 0},
- {"sal", shift_insn, 16, SUF_Z, 0x04, 0, 0, 0, 0, 0, 0},
- {"movsldup", xmm_xmm128_insn, 2, SUF_Z, 0xF3, 0x12, 0, 0, CPU_SSE3, 0, 0},
- {"vpcomneub", vpcom_insn, 1, SUF_Z, 0xEC, 0x05, 0, 0, CPU_XOP, 0, 0},
- {"movsb", onebyte_insn, 1, SUF_Z, 0xA4, 0x00, 0, 0, 0, 0, 0},
- {"jcxz", jcxz_insn, 2, SUF_Z, 0x10, 0, 0, 0, 0, 0, 0},
- {"vphadduwd", vphaddsub_insn, 1, SUF_Z, 0xD6, 0, 0, 0, CPU_XOP, 0, 0},
- {"vpcomequb", vpcom_insn, 1, SUF_Z, 0xEC, 0x04, 0, 0, CPU_XOP, 0, 0},
- {"vpcomgeq", vpcom_insn, 1, SUF_Z, 0xCF, 0x03, 0, 0, CPU_XOP, 0, 0},
- {"cmpeqps", ssecmp_128_insn, 3, SUF_Z, 0x00, 0, 0, 0, CPU_SSE, 0, 0},
- {"psubsiw", cyrixmmx_insn, 1, SUF_Z, 0x55, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
- {"vpcomfalseuq", vpcom_insn, 1, SUF_Z, 0xEF, 0x06, 0, 0, CPU_XOP, 0, 0},
- {"vcmpngesd", ssecmp_64_insn, 4, SUF_Z, 0x09, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpsubb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xF8, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpextrb", pextrb_insn, 3, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fdivr", farith_insn, 7, SUF_Z, 0xF0, 0xF8, 0x07, 0, CPU_FPU, 0, 0},
- {"cmpless", ssecmp_32_insn, 4, SUF_Z, 0x02, 0xF3, 0, 0, CPU_SSE, 0, 0},
- {"vcmpeq_ossd", ssecmp_64_insn, 4, SUF_Z, 0x10, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pabsd", ssse3_insn, 5, SUF_Z, 0x1E, 0, 0, 0, CPU_SSSE3, 0, 0},
- {"vprotd", vprot_insn, 3, SUF_Z, 0x02, 0, 0, 0, CPU_XOP, 0, 0},
- {"vpermq", vperm_imm_avx2_insn, 1, SUF_Z, 0x00, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"vmovntps", movnt_insn, 2, SUF_Z, 0x00, 0x2B, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcvtps2dq", avx_xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x5B, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pmovzxwd", sse4m64_insn, 4, SUF_Z, 0x33, 0, 0, 0, CPU_SSE41, 0, 0},
- {"phaddd", ssse3_insn, 5, SUF_Z, 0x02, 0, 0, 0, CPU_SSSE3, 0, 0},
- {"jnp", jcc_insn, 9, SUF_Z, 0x0B, 0, 0, 0, 0, 0, 0},
- {"vdivss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5E, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vunpcklps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x14, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"punpcklbw", mmxsse2_insn, 2, SUF_Z, 0x60, 0, 0, 0, CPU_MMX, 0, 0},
- {"pmovzxbd", sse4m32_insn, 4, SUF_Z, 0x31, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vcmpfalse_ospd", ssecmp_128_insn, 3, SUF_Z, 0x1B, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vmaxps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x5F, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcomub", vpcom_imm_insn, 1, SUF_Z, 0xEC, 0, 0, 0, CPU_XOP, 0, 0},
- {"vcmptrue_usss", ssecmp_32_insn, 4, SUF_Z, 0x1F, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vphaddbw", vphaddsub_insn, 1, SUF_Z, 0xC1, 0, 0, 0, CPU_XOP, 0, 0},
- {"vpmacssdd", vpma_insn, 1, SUF_Z, 0x8E, 0, 0, 0, CPU_XOP, 0, 0},
- {"sete", setcc_insn, 1, SUF_Z, 0x04, 0, 0, 0, CPU_386, 0, 0},
- {"fcom", fcom_insn, 6, SUF_Z, 0xD0, 0x02, 0, 0, CPU_FPU, 0, 0},
- {"paveb", cyrixmmx_insn, 1, SUF_Z, 0x50, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
- {"vphaddd", ssse3_insn, 5, SUF_Z, 0x02, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcomltuq", vpcom_insn, 1, SUF_Z, 0xEF, 0x00, 0, 0, CPU_XOP, 0, 0},
- {"aeskeygenassist", aes_imm_insn, 1, SUF_Z, 0x3A, 0xDF, 0, 0, CPU_AES, 0, 0},
- {"movss", movss_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_SSE, 0, 0},
- {"vpmacsswd", vpma_insn, 1, SUF_Z, 0x86, 0, 0, 0, CPU_XOP, 0, 0},
- {"fchs", twobyte_insn, 1, SUF_Z, 0xD9, 0xE0, 0, 0, CPU_FPU, 0, 0},
- {"vphminposuw", avx_ssse3_2op_insn, 1, SUF_Z, 0x41, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"les", ldes_insn, 2, SUF_Z, 0xC4, 0, 0, NOT_64, 0, 0, 0},
- {"movhlps", movhllhps_insn, 2, SUF_Z, 0x12, 0, 0, 0, CPU_SSE, 0, 0},
- {"a16", NULL, X86_ADDRSIZE>>8, 0x10, 0, 0, 0, 0, 0, 0, 0},
- {"vpaddsw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xED, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"aesdeclast", aes_insn, 2, SUF_Z, 0x38, 0xDF, 0, 0, CPU_AVX, 0, 0},
- {"lodsq", onebyte_insn, 1, SUF_Z, 0xAD, 0x40, 0, ONLY_64, 0, 0, 0},
- {"vpinsrd", pinsrd_insn, 2, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpgatherdq", gather_64x_64x_insn, 2, SUF_Z, 0x90, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"pshufw", pshufw_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_MMX, CPU_P3, 0},
- {"vpgatherqd", gather_32x_32y_128_insn, 2, SUF_Z, 0x91, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"vpblendd", vex_66_0F3A_imm8_avx2_insn, 2, SUF_Z, 0x02, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"vblendpd", sse4imm_256_insn, 4, SUF_Z, 0x0D, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pushfw", onebyte_insn, 1, SUF_Z, 0x9C, 0x10, 0x40, 0, 0, 0, 0},
- {"lodsd", onebyte_insn, 1, SUF_Z, 0xAD, 0x20, 0, 0, CPU_386, 0, 0},
- {"vfmaddsub213pd", vfma_pd_insn, 2, SUF_Z, 0xA6, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vpcomfalsed", vpcom_insn, 1, SUF_Z, 0xCE, 0x06, 0, 0, CPU_XOP, 0, 0},
- {"fnstcw", fldnstcw_insn, 1, SUF_Z, 0x07, 0, 0, 0, CPU_FPU, 0, 0},
- {"rdshr", rdwrshr_insn, 1, SUF_Z, 0x00, 0, 0, 0, CPU_686, CPU_Cyrix, CPU_SMM},
- {"phminposuw", sse4_insn, 2, SUF_Z, 0x41, 0, 0, 0, CPU_SSE41, 0, 0},
- {"pclmullqlqdq", pclmulqdq_fixed_insn, 2, SUF_Z, 0x00, 0, 0, 0, CPU_AVX, 0, 0},
- {"bound", bound_insn, 2, SUF_Z, 0, 0, 0, NOT_64, CPU_186, 0, 0},
- {"tzcnt", cnt_insn, 3, SUF_Z, 0xBC, 0, 0, 0, CPU_BMI1, 0, 0},
- {"rdrand", rdrand_insn, 3, SUF_Z, 0x06, 0, 0, 0, CPU_RDRAND, 0, 0},
- {"vpcomtrueuq", vpcom_insn, 1, SUF_Z, 0xEF, 0x07, 0, 0, CPU_XOP, 0, 0},
- {"pfrcp", now3d_insn, 1, SUF_Z, 0x96, 0, 0, 0, CPU_3DNow, 0, 0},
- {"vcmpneq_oqsd", ssecmp_64_insn, 4, SUF_Z, 0x0C, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcvttps2dq", avx_xmm_xmm128_insn, 2, SUF_Z, 0xF3, 0x5B, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpinsrb", pinsrb_insn, 4, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"movlhps", movhllhps_insn, 2, SUF_Z, 0x16, 0, 0, 0, CPU_SSE, 0, 0},
- {"vpmovsxwq", sse4m32_insn, 4, SUF_Z, 0x24, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pdistib", cyrixmmx_insn, 1, SUF_Z, 0x54, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
- {"vpxor", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xEF, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fabs", twobyte_insn, 1, SUF_Z, 0xD9, 0xE1, 0, 0, CPU_FPU, 0, 0},
- {"blci", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x02, 0x06, 0, 0, CPU_386, CPU_TBM, 0},
- {"vmovlpd", movhlp_insn, 3, SUF_Z, 0x66, 0x12, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vbroadcastss", vbroadcastss_insn, 4, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpngt_uqss", ssecmp_32_insn, 4, SUF_Z, 0x1A, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"roundps", sse4imm_insn, 2, SUF_Z, 0x08, 0, 0, 0, CPU_SSE41, 0, 0},
- {"sha256msg1", intel_SHA256MSG1_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SHA, 0, 0},
- {"movsxd", movsxd_insn, 1, SUF_Z, 0, 0, 0, ONLY_64, 0, 0, 0},
- {"fsubrp", farithp_insn, 3, SUF_Z, 0xE0, 0, 0, 0, CPU_FPU, 0, 0},
- {"vmaskmovps", vmaskmov_insn, 4, SUF_Z, 0x2C, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"movsx", movszx_insn, 5, SUF_Z, 0xBE, 0, 0, 0, CPU_386, 0, 0},
- {"fistp", fildstp_insn, 4, SUF_Z, 0x03, 0x02, 0x07, 0, CPU_FPU, 0, 0},
- {"vfmsubps", fma_128_256_insn, 4, SUF_Z, 0x6C, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"movmskps", movmsk_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_SSE, 0},
- {"cmplesd", ssecmp_64_insn, 4, SUF_Z, 0x02, 0xF2, 0, 0, CPU_SSE2, 0, 0},
- {"maskmovdqu", maskmovdqu_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SSE2, 0, 0},
- {"prefetchnta", twobytemem_insn, 1, SUF_Z, 0x00, 0x0F, 0x18, 0, CPU_P3, 0, 0},
- {"loadall", twobyte_insn, 1, SUF_Z, 0x0F, 0x07, 0, 0, CPU_386, CPU_Undoc, 0},
- {"cmpunordsd", ssecmp_64_insn, 4, SUF_Z, 0x03, 0xF2, 0, 0, CPU_SSE2, 0, 0},
- {"haddpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x7C, 0, 0, CPU_SSE3, 0, 0},
- {"vpshlw", amd_vpshift_insn, 2, SUF_Z, 0x95, 0, 0, 0, CPU_XOP, 0, 0},
- {"addsubpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0xD0, 0, 0, CPU_SSE3, 0, 0},
- {"phaddw", ssse3_insn, 5, SUF_Z, 0x01, 0, 0, 0, CPU_SSSE3, 0, 0},
- {"vphaddsw", ssse3_insn, 5, SUF_Z, 0x03, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpeq_uqsd", ssecmp_64_insn, 4, SUF_Z, 0x08, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmpunordss", ssecmp_32_insn, 4, SUF_Z, 0x03, 0xF3, 0, 0, CPU_SSE, 0, 0},
- {"cmpsb", onebyte_insn, 1, SUF_Z, 0xA6, 0x00, 0, 0, 0, 0, 0},
- {"vpcomtrueuw", vpcom_insn, 1, SUF_Z, 0xED, 0x07, 0, 0, CPU_XOP, 0, 0},
- {"rcpps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x53, 0, 0, CPU_SSE, 0, 0},
- {"packuswb", mmxsse2_insn, 2, SUF_Z, 0x67, 0, 0, 0, CPU_MMX, 0, 0},
- {"vmovlhps", movhllhps_insn, 2, SUF_Z, 0x16, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmppd", xmm_xmm128_imm_insn, 1, SUF_Z, 0x66, 0xC2, 0, 0, CPU_SSE2, 0, 0},
- {"vfmsubadd231pd", vfma_pd_insn, 2, SUF_Z, 0xB7, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vphaddudq", vphaddsub_insn, 1, SUF_Z, 0xDB, 0, 0, 0, CPU_XOP, 0, 0},
- {"vphaddubq", vphaddsub_insn, 1, SUF_Z, 0xD3, 0, 0, 0, CPU_XOP, 0, 0},
- {"scasb", onebyte_insn, 1, SUF_Z, 0xAE, 0x00, 0, 0, 0, 0, 0},
- {"vfmaddsubps", fma_128_256_insn, 4, SUF_Z, 0x5C, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"vpcomgtd", vpcom_insn, 1, SUF_Z, 0xCE, 0x02, 0, 0, CPU_XOP, 0, 0},
- {"seta", setcc_insn, 1, SUF_Z, 0x07, 0, 0, 0, CPU_386, 0, 0},
- {"pmulhrwc", cyrixmmx_insn, 1, SUF_Z, 0x59, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
- {"vtestpd", sse4_insn, 2, SUF_Z, 0x0F, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfmaddsub132pd", vfma_pd_insn, 2, SUF_Z, 0x96, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"cmpneqps", ssecmp_128_insn, 3, SUF_Z, 0x04, 0, 0, 0, CPU_SSE, 0, 0},
- {"vpmaskmovd", vmaskmov_insn, 4, SUF_Z, 0x8C, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"vcmpordps", ssecmp_128_insn, 3, SUF_Z, 0x07, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcvtsi2ss", cvt_xmm_rmx_insn, 6, SUF_Z, 0xF3, 0x2A, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vunpckhpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x15, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"setc", setcc_insn, 1, SUF_Z, 0x02, 0, 0, 0, CPU_386, 0, 0},
- {"repne", NULL, X86_LOCKREP>>8, 0xF2, 0, 0, 0, 0, 0, 0, 0},
- {"vandnps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x55, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"aam", aadm_insn, 2, SUF_Z, 0x00, 0, 0, NOT_64, 0, 0, 0},
- {"mulpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x59, 0, 0, CPU_SSE2, 0, 0},
- {"a32", NULL, X86_ADDRSIZE>>8, 0x20, 0, 0, 0, 0, 0, 0, 0},
- {"vcmpfalse_osps", ssecmp_128_insn, 3, SUF_Z, 0x1B, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"jecxz", jcxz_insn, 2, SUF_Z, 0x20, 0, 0, 0, CPU_386, 0, 0},
- {"vcmple_oqps", ssecmp_128_insn, 3, SUF_Z, 0x12, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmovpe", cmovcc_insn, 3, SUF_Z, 0x0A, 0, 0, 0, CPU_686, 0, 0},
- {"vcmpngepd", ssecmp_128_insn, 3, SUF_Z, 0x09, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vsqrtpd", avx_xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x51, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpmacsww", vpma_insn, 1, SUF_Z, 0x95, 0, 0, 0, CPU_XOP, 0, 0},
- {"vfmaddsub231pd", vfma_pd_insn, 2, SUF_Z, 0xB6, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"int3", onebyte_insn, 1, SUF_Z, 0xCC, 0, 0, 0, 0, 0, 0},
- {"vcvtdq2pd", avx_cvt_xmm64_insn, 3, SUF_Z, 0xF3, 0xE6, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fisubr", fiarith_insn, 2, SUF_Z, 0x05, 0xDA, 0, 0, CPU_FPU, 0, 0},
- {"pextrq", pextrq_insn, 1, SUF_Z, 0, 0, 0, ONLY_64, CPU_SSE41, 0, 0},
- {"popaw", onebyte_insn, 1, SUF_Z, 0x61, 0x10, 0, NOT_64, CPU_186, 0, 0},
- {"vcmpnge_uqsd", ssecmp_64_insn, 4, SUF_Z, 0x19, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfmsub132ps", vfma_ps_insn, 2, SUF_Z, 0x9A, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vcmplesd", ssecmp_64_insn, 4, SUF_Z, 0x02, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"into", onebyte_insn, 1, SUF_Z, 0xCE, 0, 0, NOT_64, 0, 0, 0},
- {"vpmacsdd", vpma_insn, 1, SUF_Z, 0x9E, 0, 0, 0, CPU_XOP, 0, 0},
- {"cmovbe", cmovcc_insn, 3, SUF_Z, 0x06, 0, 0, 0, CPU_686, 0, 0},
- {"vpsubsb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xE8, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpmulld", ssse3_insn, 5, SUF_Z, 0x40, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vphsubw", ssse3_insn, 5, SUF_Z, 0x05, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpsrlvq", vpshiftv_vexw1_avx2_insn, 2, SUF_Z, 0x45, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"vpsllvd", vpshiftv_vexw0_avx2_insn, 2, SUF_Z, 0x47, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"std", onebyte_insn, 1, SUF_Z, 0xFD, 0, 0, 0, 0, 0, 0},
- {"psrad", pshift_insn, 4, SUF_Z, 0xE2, 0x72, 0x04, 0, CPU_MMX, 0, 0},
- {"psllq", pshift_insn, 4, SUF_Z, 0xF3, 0x73, 0x06, 0, CPU_MMX, 0, 0},
- {"fucom", fcom2_insn, 2, SUF_Z, 0xDD, 0xE0, 0, 0, CPU_286, CPU_FPU, 0},
- {"vpcmpeqd", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x76, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpord_sps", ssecmp_128_insn, 3, SUF_Z, 0x17, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vmovntdqa", movntdqa_insn, 2, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpgatherdd", gather_32x_32y_insn, 2, SUF_Z, 0x90, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"vfmsubpd", fma_128_256_insn, 4, SUF_Z, 0x6D, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"vaesdec", aes_insn, 2, SUF_Z, 0x38, 0xDE, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcomged", vpcom_insn, 1, SUF_Z, 0xCE, 0x03, 0, 0, CPU_XOP, 0, 0},
- {"rol", shift_insn, 16, SUF_Z, 0x00, 0, 0, 0, 0, 0, 0},
- {"punpckhbw", mmxsse2_insn, 2, SUF_Z, 0x68, 0, 0, 0, CPU_MMX, 0, 0},
- {"vphsubsw", ssse3_insn, 5, SUF_Z, 0x07, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmpltsd", ssecmp_64_insn, 4, SUF_Z, 0x01, 0xF2, 0, 0, CPU_SSE2, 0, 0},
- {"fcomip", fcom2_insn, 2, SUF_Z, 0xDF, 0xF0, 0, 0, CPU_686, CPU_FPU, 0},
- {"vfmadd231sd", vfma_sd_insn, 2, SUF_Z, 0xB9, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"psubusw", mmxsse2_insn, 2, SUF_Z, 0xD9, 0, 0, 0, CPU_MMX, 0, 0},
- {"vcmpunord_spd", ssecmp_128_insn, 3, SUF_Z, 0x13, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpneq_usss", ssecmp_32_insn, 4, SUF_Z, 0x14, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpclmullqhqdq", pclmulqdq_fixed_insn, 2, SUF_Z, 0x10, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpeq_uspd", ssecmp_128_insn, 3, SUF_Z, 0x18, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"inc", incdec_insn, 6, SUF_Z, 0x40, 0x00, 0, 0, 0, 0, 0},
- {"psubq", mmxsse2_insn, 2, SUF_Z, 0xFB, 0, 0, 0, CPU_MMX, 0, 0},
- {"unpcklps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x14, 0, 0, CPU_SSE, 0, 0},
- {"vcmpgt_oqss", ssecmp_32_insn, 4, SUF_Z, 0x1E, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpunordps", ssecmp_128_insn, 3, SUF_Z, 0x03, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfnmadd213sd", vfma_sd_insn, 2, SUF_Z, 0xAD, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"pdep", vex_gpr_reg_nds_rm_0F_insn, 2, SUF_Z, 0xF2, 0x38, 0xF5, ONLY_AVX, CPU_BMI2, 0, 0},
- {"phaddsw", ssse3_insn, 5, SUF_Z, 0x03, 0, 0, 0, CPU_SSSE3, 0, 0},
- {"xcryptcbc", padlock_insn, 1, SUF_Z, 0xD0, 0xF3, 0xA7, 0, CPU_PadLock, 0, 0},
- {"vpmullw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xD5, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"blsfill", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x01, 0x02, 0, 0, CPU_386, CPU_TBM, 0},
- {"and", arith_insn, 22, SUF_Z, 0x20, 0x04, 0, 0, 0, 0, 0},
- {"xacquire", NULL, X86_ACQREL>>8, 0xF2, 0, 0, 0, 0, 0, 0, 0},
- {"vpcomnequd", vpcom_insn, 1, SUF_Z, 0xEE, 0x05, 0, 0, CPU_XOP, 0, 0},
- {"movshdup", xmm_xmm128_insn, 2, SUF_Z, 0xF3, 0x16, 0, 0, CPU_SSE3, 0, 0},
- {"vfnmadd231sd", vfma_sd_insn, 2, SUF_Z, 0xBD, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"femms", twobyte_insn, 1, SUF_Z, 0x0F, 0x0E, 0, 0, CPU_3DNow, 0, 0},
- {"vpcomgeuq", vpcom_insn, 1, SUF_Z, 0xEF, 0x03, 0, 0, CPU_XOP, 0, 0},
- {"vcmpnlt_uqsd", ssecmp_64_insn, 4, SUF_Z, 0x15, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pcmpgtd", mmxsse2_insn, 2, SUF_Z, 0x66, 0, 0, 0, CPU_MMX, 0, 0},
- {"andpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x54, 0, 0, CPU_SSE2, 0, 0},
- {"vhsubpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x7D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vblendvps", avx_sse4xmm0_insn, 2, SUF_Z, 0x4A, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpgtsd", ssecmp_64_insn, 4, SUF_Z, 0x0E, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpcmpestri", sse4pcmpstr_insn, 1, SUF_Z, 0x61, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"rdmsr", twobyte_insn, 1, SUF_Z, 0x0F, 0x32, 0, 0, CPU_586, CPU_Priv, 0},
- {"vpcmpgtw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x65, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pfnacc", now3d_insn, 1, SUF_Z, 0x8A, 0, 0, 0, CPU_3DNow, CPU_Athlon, 0},
- {"leave", onebyte_insn, 1, SUF_Z, 0xC9, 0x00, 0x40, 0, CPU_186, 0, 0},
- {"jz", jcc_insn, 9, SUF_Z, 0x04, 0, 0, 0, 0, 0, 0},
- {"psubw", mmxsse2_insn, 2, SUF_Z, 0xF9, 0, 0, 0, CPU_MMX, 0, 0},
- {"jnl", jcc_insn, 9, SUF_Z, 0x0D, 0, 0, 0, 0, 0, 0},
- {"repe", NULL, X86_LOCKREP>>8, 0xF3, 0, 0, 0, 0, 0, 0, 0},
- {"pushfq", onebyte_insn, 1, SUF_Z, 0x9C, 0x40, 0x40, ONLY_64, 0, 0, 0},
- {"vmlaunch", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xC2, 0, CPU_P4, 0, 0},
- {"vfmsubaddps", fma_128_256_insn, 4, SUF_Z, 0x5E, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"cmpxchg486", cmpxchgxadd_insn, 4, SUF_Z, 0xA6, 0, 0, 0, CPU_486, CPU_Undoc, 0},
- {"blsic", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x01, 0x06, 0, 0, CPU_386, CPU_TBM, 0},
- {"vcmptruesd", ssecmp_64_insn, 4, SUF_Z, 0x0F, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"stc", onebyte_insn, 1, SUF_Z, 0xF9, 0, 0, 0, 0, 0, 0},
- {"vpermps", vperm_var_avx2_insn, 1, SUF_Z, 0x16, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
- {"xlatb", onebyte_insn, 1, SUF_Z, 0xD7, 0x00, 0, 0, 0, 0, 0},
- {"vpmacssww", vpma_insn, 1, SUF_Z, 0x85, 0, 0, 0, CPU_XOP, 0, 0},
- {"pavgusb", now3d_insn, 1, SUF_Z, 0xBF, 0, 0, 0, CPU_3DNow, 0, 0},
- {"vfmsub231sd", vfma_sd_insn, 2, SUF_Z, 0xBB, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vmovd", vmovd_insn, 2, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_386, CPU_AVX, 0},
- {"cvtps2pd", xmm_xmm64_insn, 4, SUF_Z, 0x00, 0x5A, 0, 0, CPU_SSE2, 0, 0},
- {"verw", prot286_insn, 1, SUF_Z, 0x05, 0x00, 0, 0, CPU_286, CPU_Prot, 0},
- {"pushad", onebyte_insn, 1, SUF_Z, 0x60, 0x20, 0, NOT_64, CPU_386, 0, 0},
- {"wrfsbase", fs_gs_base_insn, 2, SUF_Z, 0x02, 0, 0, ONLY_64, CPU_FSGSBASE, 0, 0},
- {"paddusw", mmxsse2_insn, 2, SUF_Z, 0xDD, 0, 0, 0, CPU_MMX, 0, 0},
- {"vucomisd", avx_xmm_xmm64_insn, 2, SUF_Z, 0x66, 0x2E, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"fldenv", onebytemem_insn, 1, SUF_Z, 0x04, 0xD9, 0, 0, CPU_FPU, 0, 0},
- {"psubb", mmxsse2_insn, 2, SUF_Z, 0xF8, 0, 0, 0, CPU_MMX, 0, 0},
- {"lidt", twobytemem_insn, 1, SUF_Z, 0x03, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
- {"vfmadd213ps", vfma_ps_insn, 2, SUF_Z, 0xA8, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"cmovnbe", cmovcc_insn, 3, SUF_Z, 0x07, 0, 0, 0, CPU_686, 0, 0},
- {"shufps", xmm_xmm128_imm_insn, 1, SUF_Z, 0x00, 0xC6, 0, 0, CPU_SSE, 0, 0},
- {"emms", twobyte_insn, 1, SUF_Z, 0x0F, 0x77, 0, 0, CPU_MMX, 0, 0},
- {"vfmsubadd132pd", vfma_pd_insn, 2, SUF_Z, 0x97, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"fldl2e", twobyte_insn, 1, SUF_Z, 0xD9, 0xEA, 0, 0, CPU_FPU, 0, 0},
- {"invd", twobyte_insn, 1, SUF_Z, 0x0F, 0x08, 0, 0, CPU_486, CPU_Priv, 0},
- {"vphadduwq", vphaddsub_insn, 1, SUF_Z, 0xD7, 0, 0, 0, CPU_XOP, 0, 0},
- {"cvtss2si", cvt_rx_xmm32_insn, 4, SUF_Z, 0xF3, 0x2D, 0, 0, CPU_386, CPU_SSE, 0},
- {"vpcomltd", vpcom_insn, 1, SUF_Z, 0xCE, 0x00, 0, 0, CPU_XOP, 0, 0},
- {"shr", shift_insn, 16, SUF_Z, 0x05, 0, 0, 0, 0, 0, 0},
- {"vcvtss2si", cvt_rx_xmm32_insn, 4, SUF_Z, 0xF3, 0x2D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpeq_uqps", ssecmp_128_insn, 3, SUF_Z, 0x08, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vsubsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pminuw", sse4_insn, 2, SUF_Z, 0x3A, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vcmpgt_oqps", ssecmp_128_insn, 3, SUF_Z, 0x1E, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"xstore", padlock_insn, 1, SUF_Z, 0xC0, 0x00, 0xA7, 0, CPU_PadLock, 0, 0},
- {"pmovsxwq", sse4m32_insn, 4, SUF_Z, 0x24, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vcmpngtss", ssecmp_32_insn, 4, SUF_Z, 0x0A, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfnmadd213pd", vfma_pd_insn, 2, SUF_Z, 0xAC, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"vphaddbd", vphaddsub_insn, 1, SUF_Z, 0xC2, 0, 0, 0, CPU_XOP, 0, 0},
- {"divps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x5E, 0, 0, CPU_SSE, 0, 0},
- {"pf2id", now3d_insn, 1, SUF_Z, 0x1D, 0, 0, 0, CPU_3DNow, 0, 0},
- {"lgdt", twobytemem_insn, 1, SUF_Z, 0x02, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
- {"syscall", twobyte_insn, 1, SUF_Z, 0x0F, 0x05, 0, 0, CPU_686, CPU_AMD, 0},
- {"vpmaddwd", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xF5, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmpneqss", ssecmp_32_insn, 4, SUF_Z, 0x04, 0xF3, 0, 0, CPU_SSE, 0, 0},
- {"setle", setcc_insn, 1, SUF_Z, 0x0E, 0, 0, 0, CPU_386, 0, 0},
- {"stosb", onebyte_insn, 1, SUF_Z, 0xAA, 0x00, 0, 0, 0, 0, 0},
- {"sha1rnds4", intel_SHA1RNDS4_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SHA, 0, 0},
- {"setg", setcc_insn, 1, SUF_Z, 0x0F, 0, 0, 0, CPU_386, 0, 0},
- {"ffree", ffree_insn, 1, SUF_Z, 0xDD, 0, 0, 0, CPU_FPU, 0, 0},
- {"fmulp", farithp_insn, 3, SUF_Z, 0xC8, 0, 0, 0, CPU_FPU, 0, 0},
- {"fucomp", fcom2_insn, 2, SUF_Z, 0xDD, 0xE8, 0, 0, CPU_286, CPU_FPU, 0},
- {"cvtss2sd", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5A, 0, 0, CPU_SSE2, 0, 0},
- {"phsubd", ssse3_insn, 5, SUF_Z, 0x06, 0, 0, 0, CPU_SSSE3, 0, 0},
- {"vdivps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x5E, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"rdseed", rdrand_insn, 3, SUF_Z, 0x07, 0, 0, 0, CPU_RDSEED, 0, 0},
- {"vpsrlw", vpshift_insn, 8, SUF_Z, 0xD1, 0x71, 0x02, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpeqsd", ssecmp_64_insn, 4, SUF_Z, 0x00, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpngtps", ssecmp_128_insn, 3, SUF_Z, 0x0A, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cvtpd2dq", xmm_xmm128_insn, 2, SUF_Z, 0xF2, 0xE6, 0, 0, CPU_SSE2, 0, 0},
- {"vfnmaddpd", fma_128_256_insn, 4, SUF_Z, 0x79, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
- {"vmptrst", vmxtwobytemem_insn, 1, SUF_Z, 0x07, 0, 0, 0, CPU_P4, 0, 0},
- {"rdgsbase", fs_gs_base_insn, 2, SUF_Z, 0x01, 0, 0, ONLY_64, CPU_FSGSBASE, 0, 0},
- {"vpcomleb", vpcom_insn, 1, SUF_Z, 0xCC, 0x01, 0, 0, CPU_XOP, 0, 0},
- {"pmovzxbw", sse4m64_insn, 4, SUF_Z, 0x30, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vrsqrtss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x52, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"setpe", setcc_insn, 1, SUF_Z, 0x0A, 0, 0, 0, CPU_386, 0, 0},
- {"ffreep", ffree_insn, 1, SUF_Z, 0xDF, 0, 0, 0, CPU_686, CPU_FPU, CPU_Undoc},
- {"sgdt", twobytemem_insn, 1, SUF_Z, 0x00, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
- {"addsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x58, 0, 0, CPU_SSE2, 0, 0},
- {"sfence", threebyte_insn, 1, SUF_Z, 0x0F, 0xAE, 0xF8, 0, CPU_P3, 0, 0},
- {"mpsadbw", sse4imm_insn, 2, SUF_Z, 0x42, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vpunpckhbw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x68, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vcmpnlepd", ssecmp_128_insn, 3, SUF_Z, 0x06, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vandps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x54, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"cmpneqsd", ssecmp_64_insn, 4, SUF_Z, 0x04, 0xF2, 0, 0, CPU_SSE2, 0, 0},
- {"fsqrt", twobyte_insn, 1, SUF_Z, 0xD9, 0xFA, 0, 0, CPU_FPU, 0, 0},
- {"vpinsrq", pinsrq_insn, 2, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vmovddup", vmovddup_insn, 3, SUF_Z, 0xF2, 0x12, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpmacswd", vpma_insn, 1, SUF_Z, 0x96, 0, 0, 0, CPU_XOP, 0, 0},
- {"vcmpeq_osss", ssecmp_32_insn, 4, SUF_Z, 0x10, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"setp", setcc_insn, 1, SUF_Z, 0x0A, 0, 0, 0, CPU_386, 0, 0},
- {"cmpsq", onebyte_insn, 1, SUF_Z, 0xA7, 0x40, 0, ONLY_64, 0, 0, 0},
- {"vmovdqu", movau_insn, 6, SUF_Z, 0xF3, 0x6F, 0x10, ONLY_AVX, CPU_AVX, 0, 0},
- {"pfrcpit2", now3d_insn, 1, SUF_Z, 0xB6, 0, 0, 0, CPU_3DNow, 0, 0},
- {"jpe", jcc_insn, 9, SUF_Z, 0x0A, 0, 0, 0, 0, 0, 0},
- {"vpunpckhdq", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x6A, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"bextr", bextr_insn, 4, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_386, CPU_BMI1, 0},
- {"vmovsldup", avx_xmm_xmm128_insn, 2, SUF_Z, 0xF3, 0x12, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpaddusb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xDC, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vperm2f128", vperm2f128_insn, 1, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"pcmpgtq", sse4_insn, 2, SUF_Z, 0x37, 0, 0, 0, CPU_SSE41, 0, 0},
- {"vpshld", amd_vpshift_insn, 2, SUF_Z, 0x96, 0, 0, 0, CPU_XOP, 0, 0},
- {"fsub", farith_insn, 7, SUF_Z, 0xE8, 0xE0, 0x04, 0, CPU_FPU, 0, 0},
- {"movdq2q", movdq2q_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SSE2, 0, 0},
- {"vpsrld", vpshift_insn, 8, SUF_Z, 0xD2, 0x72, 0x02, ONLY_AVX, CPU_AVX, 0, 0},
- {"fwait", onebyte_insn, 1, SUF_Z, 0x9B, 0, 0, 0, CPU_FPU, 0, 0},
- {"cmpnltss", ssecmp_32_insn, 4, SUF_Z, 0x05, 0xF3, 0, 0, CPU_SSE, 0, 0},
- {"blcmsk", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x02, 0x01, 0, 0, CPU_386, CPU_TBM, 0},
- {"punpcklwd", mmxsse2_insn, 2, SUF_Z, 0x61, 0, 0, 0, CPU_MMX, 0, 0},
- {"cmpunordps", ssecmp_128_insn, 3, SUF_Z, 0x03, 0, 0, 0, CPU_SSE, 0, 0},
- {"cmpnlesd", ssecmp_64_insn, 4, SUF_Z, 0x06, 0xF2, 0, 0, CPU_SSE2, 0, 0},
- {"pfcmpgt", now3d_insn, 1, SUF_Z, 0xA0, 0, 0, 0, CPU_3DNow, 0, 0},
- {"cmovnle", cmovcc_insn, 3, SUF_Z, 0x0F, 0, 0, 0, CPU_686, 0, 0},
- {"vmclear", vmxthreebytemem_insn, 1, SUF_Z, 0x66, 0, 0, 0, CPU_P4, 0, 0},
- {"vcmplt_oqpd", ssecmp_128_insn, 3, SUF_Z, 0x11, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"clac", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xCA, 0, CPU_SMAP, 0, 0},
- {"fscale", twobyte_insn, 1, SUF_Z, 0xD9, 0xFD, 0, 0, CPU_FPU, 0, 0},
- {"vrcpps", avx_xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x53, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"outsd", onebyte_insn, 1, SUF_Z, 0x6F, 0x20, 0, 0, CPU_386, 0, 0},
- {"fist", fiarith_insn, 2, SUF_Z, 0x02, 0xDB, 0, 0, CPU_FPU, 0, 0},
- {"vfnmsub213ss", vfma_ss_insn, 2, SUF_Z, 0xAF, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"bts", bittest_insn, 6, SUF_Z, 0xAB, 0x05, 0, 0, CPU_386, 0, 0},
- {"paddsb", mmxsse2_insn, 2, SUF_Z, 0xEC, 0, 0, 0, CPU_MMX, 0, 0},
- {"cmovp", cmovcc_insn, 3, SUF_Z, 0x0A, 0, 0, 0, CPU_686, 0, 0},
- {"fstenv", twobytemem_insn, 1, SUF_Z, 0x06, 0x9B, 0xD9, 0, CPU_FPU, 0, 0},
- {"rdfsbase", fs_gs_base_insn, 2, SUF_Z, 0x00, 0, 0, ONLY_64, CPU_FSGSBASE, 0, 0},
- {"vcvttss2si", cvt_rx_xmm32_insn, 4, SUF_Z, 0xF3, 0x2C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vptest", sse4_insn, 2, SUF_Z, 0x17, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vfmadd132pd", vfma_pd_insn, 2, SUF_Z, 0x98, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
- {"prefetch", twobytemem_insn, 1, SUF_Z, 0x00, 0x0F, 0x0D, 0, CPU_3DNow, 0, 0},
- {"sha256msg2", intel_SHA256MSG2_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SHA, 0, 0},
- {"vpsubsw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xE9, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpmulhrsw", ssse3_insn, 5, SUF_Z, 0x0B, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
- {"vpextrd", pextrd_insn, 1, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0}
- };
- static const unsigned short tab[] = {
- 894,83,1140,0,1213,1379,1140,864,11,0,281,793,281,281,864,0,
- 0,517,0,1312,1213,0,1213,323,0,11,11,1212,0,0,764,0,
- 351,793,1140,762,323,823,323,1044,1213,323,665,764,665,665,0,1044,
- 159,764,197,1044,0,1312,1042,605,281,721,1379,333,348,1432,764,665,
- 0,629,83,764,0,508,1140,0,1140,0,0,605,764,1042,0,1059,
- 1042,11,83,517,1044,1140,1042,665,1213,629,351,630,665,348,83,924,
- 1042,11,0,517,83,395,1140,1379,988,1213,1213,281,323,629,1140,1116,
- 1477,574,1312,864,323,1000,323,823,793,281,721,1074,1044,864,1044,1044,
- 896,1213,517,11,281,0,764,1042,1312,281,1379,702,605,1203,1212,824,
- 1481,0,1232,0,1000,323,1105,0,307,764,0,508,281,764,988,0,
- 884,665,0,0,824,1312,1140,517,517,288,281,823,1140,702,823,517,
- 341,528,1042,1338,0,1044,1529,1232,988,1203,517,323,0,0,47,764,
- 399,1213,1140,333,1338,64,1213,11,864,293,1312,1109,0,988,1116,427,
- 323,1140,1432,764,11,764,323,0,1042,630,427,0,580,630,336,1312,
- 179,517,1042,1383,0,506,0,988,83,988,1140,336,11,11,1140,11,
- 1042,864,1218,630,517,83,333,1044,1312,197,0,0,864,793,702,323,
- 0,1140,574,764,83,924,111,764,1312,159,94,1481,1044,265,281,665,
- 0,1140,665,1383,62,323,528,764,574,986,764,665,935,630,1042,281,
- 988,517,1044,83,630,567,988,399,1140,1232,1042,580,764,1042,0,864,
- 1189,605,443,348,11,864,83,307,894,605,1204,1140,0,764,829,1140,
- 892,665,988,1116,517,1042,517,0,348,1213,1109,605,605,1312,1140,197,
- 1044,0,891,83,982,83,6,1185,1127,83,399,83,1042,1312,1044,1042,
- 0,281,197,1509,924,517,630,935,811,665,896,517,179,1203,605,829,
- 864,83,1295,83,0,1312,11,328,1140,891,1432,0,0,764,793,1218,
- 1217,665,1089,519,1312,570,629,1312,764,1165,307,281,257,889,1042,721,
- 764,1109,443,281,0,0,884,440,688,0,864,1140,1116,83,1140,874,
- 1042,1213,0,1053,1477,427,336,0,605,665,1312,803,0,764,442,517,
- 605,1212,1508,702,333,665,764,0,0,630,0,1140,968,525,1212,0,
- 0,1379,72,0,764,0,1027,327,83,788,145,1476,1107,0,721,358,
- 894,823,1206,307,1523,281,630,988,94,793,764,1415,721,1074,0,0,
- 629,1218,919,665,336,1474,799,733,1044,876,215,1212,1169,665,864,864,
- 764,605,342,1438,569,0,11,0,522,1212,1020,33,427,1064,265,835,
- };
-
- const struct insnprefix_parse_data *ret;
- unsigned long rsl, val = phash_lookup(key, len, 0xbe1e08bbUL);
- rsl = ((val>>23)^tab[val&0x1ff]);
- if (rsl >= 1454) return NULL;
- ret = &pd[rsl];
- if (strcmp(key, ret->name) != 0) return NULL;
- return ret;
-}
-
-
+/* ANSI-C code produced by genperf */
+struct insnprefix_parse_data;
+static const struct insnprefix_parse_data *
+insnprefix_nasm_find(const char *key, size_t len)
+{
+ static const struct insnprefix_parse_data pd[1454] = {
+ {"vpsubd", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xFA, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpltps", ssecmp_128_insn, 3, SUF_Z, 0x01, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vmovhpd", movhlp_insn, 3, SUF_Z, 0x66, 0x16, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcomisd", avx_xmm_xmm64_insn, 2, SUF_Z, 0x66, 0x2F, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmpltpd", ssecmp_128_insn, 3, SUF_Z, 0x01, 0x66, 0, 0, CPU_SSE, 0, 0},
+ {"pmvgezb", cyrixmmx_insn, 1, SUF_Z, 0x5C, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
+ {"cmovle", cmovcc_insn, 3, SUF_Z, 0x0E, 0, 0, 0, CPU_686, 0, 0},
+ {"cvttss2si", cvt_rx_xmm32_insn, 4, SUF_Z, 0xF3, 0x2C, 0, 0, CPU_386, CPU_SSE, 0},
+ {"xbegin", tsx_xbegin_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_TSX, 0},
+ {"vmovapd", movau_insn, 6, SUF_Z, 0x66, 0x28, 0x01, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmovc", cmovcc_insn, 3, SUF_Z, 0x02, 0, 0, 0, CPU_686, 0, 0},
+ {"fninit", twobyte_insn, 1, SUF_Z, 0xDB, 0xE3, 0, 0, CPU_FPU, 0, 0},
+ {"vfrczss", vfrczss_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_XOP, 0, 0},
+ {"pushfd", onebyte_insn, 1, SUF_Z, 0x9C, 0x20, 0, NOT_64, CPU_386, 0, 0},
+ {"vpcomleuq", vpcom_insn, 1, SUF_Z, 0xEF, 0x01, 0, 0, CPU_XOP, 0, 0},
+ {"vpmulhuw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xE4, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpsubq", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xFB, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fstpt", fldstpt_insn, 1, SUF_Z, 0x07, 0, 0, 0, CPU_FPU, 0, 0},
+ {"adc", arith_insn, 22, SUF_Z, 0x10, 0x02, 0, 0, 0, 0, 0},
+ {"vmulss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x59, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"stosq", onebyte_insn, 1, SUF_Z, 0xAB, 0x40, 0, ONLY_64, 0, 0, 0},
+ {"vzeroupper", vzero_insn, 1, SUF_Z, 0xC0, 0, 0, 0, CPU_AVX, 0, 0},
+ {"jnle", jcc_insn, 9, SUF_Z, 0x0F, 0, 0, 0, 0, 0, 0},
+ {"pmulhuw", mmxsse2_insn, 2, SUF_Z, 0xE4, 0, 0, 0, CPU_MMX, CPU_P3, 0},
+ {"vcmpord_sss", ssecmp_32_insn, 4, SUF_Z, 0x17, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fxsave", twobytemem_insn, 1, SUF_Z, 0x00, 0x0F, 0xAE, 0, CPU_686, CPU_FPU, 0},
+ {"setnbe", setcc_insn, 1, SUF_Z, 0x07, 0, 0, 0, CPU_386, 0, 0},
+ {"insertps", insertps_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"rdtsc", twobyte_insn, 1, SUF_Z, 0x0F, 0x31, 0, 0, CPU_586, 0, 0},
+ {"psubd", mmxsse2_insn, 2, SUF_Z, 0xFA, 0, 0, 0, CPU_MMX, 0, 0},
+ {"vcmptrue_uspd", ssecmp_128_insn, 3, SUF_Z, 0x1F, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vmulps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x59, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpeq_usps", ssecmp_128_insn, 3, SUF_Z, 0x18, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cvtpd2ps", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x5A, 0, 0, CPU_SSE2, 0, 0},
+ {"vfnmsubsd", fma_128_m64_insn, 3, SUF_Z, 0x7F, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"vpcomtrueq", vpcom_insn, 1, SUF_Z, 0xCF, 0x07, 0, 0, CPU_XOP, 0, 0},
+ {"vpclmulqdq", pclmulqdq_insn, 2, SUF_Z, 0x3A, 0x44, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmova", cmovcc_insn, 3, SUF_Z, 0x07, 0, 0, 0, CPU_686, 0, 0},
+ {"vmaxss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5F, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pi2fw", now3d_insn, 1, SUF_Z, 0x0C, 0, 0, 0, CPU_3DNow, CPU_Athlon, 0},
+ {"vfnmadd132pd", vfma_pd_insn, 2, SUF_Z, 0x9C, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vdpps", sse4imm_256_insn, 4, SUF_Z, 0x40, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpclmulhqhqdq", pclmulqdq_fixed_insn, 2, SUF_Z, 0x11, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfmsub213pd", vfma_pd_insn, 2, SUF_Z, 0xAA, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"pmaxsw", mmxsse2_insn, 2, SUF_Z, 0xEE, 0, 0, 0, CPU_MMX, CPU_P3, 0},
+ {"vpaddq", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xD4, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcmov", vpcmov_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vpcomud", vpcom_imm_insn, 1, SUF_Z, 0xEE, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vpslld", vpshift_insn, 8, SUF_Z, 0xF2, 0x72, 0x06, ONLY_AVX, CPU_AVX, 0, 0},
+ {"shufpd", xmm_xmm128_imm_insn, 1, SUF_Z, 0x66, 0xC6, 0, 0, CPU_SSE2, 0, 0},
+ {"vpcomgtud", vpcom_insn, 1, SUF_Z, 0xEE, 0x02, 0, 0, CPU_XOP, 0, 0},
+ {"cdq", onebyte_insn, 1, SUF_Z, 0x99, 0x20, 0, 0, CPU_386, 0, 0},
+ {"vcmpge_oqps", ssecmp_128_insn, 3, SUF_Z, 0x1D, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"rcpss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x53, 0, 0, CPU_SSE, 0, 0},
+ {"aad", aadm_insn, 2, SUF_Z, 0x01, 0, 0, NOT_64, 0, 0, 0},
+ {"vinserti128", vinsertif128_insn, 1, SUF_Z, 0x38, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"vphsubd", ssse3_insn, 5, SUF_Z, 0x06, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fdiv", farith_insn, 7, SUF_Z, 0xF8, 0xF0, 0x06, 0, CPU_FPU, 0, 0},
+ {"fst", fst_insn, 3, SUF_Z, 0, 0, 0, 0, CPU_FPU, 0, 0},
+ {"vpcomled", vpcom_insn, 1, SUF_Z, 0xCE, 0x01, 0, 0, CPU_XOP, 0, 0},
+ {"setne", setcc_insn, 1, SUF_Z, 0x05, 0, 0, 0, CPU_386, 0, 0},
+ {"xcryptcfb", padlock_insn, 1, SUF_Z, 0xE0, 0xF3, 0xA7, 0, CPU_PadLock, 0, 0},
+ {"pmaddubsw", ssse3_insn, 5, SUF_Z, 0x04, 0, 0, 0, CPU_SSSE3, 0, 0},
+ {"bt", bittest_insn, 6, SUF_Z, 0xA3, 0x04, 0, 0, CPU_386, 0, 0},
+ {"blendvpd", sse4xmm0_insn, 2, SUF_Z, 0x15, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vroundss", sse4m32imm_insn, 4, SUF_Z, 0x0A, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"iret", onebyte_insn, 1, SUF_Z, 0xCF, 0, 0, 0, 0, 0, 0},
+ {"movbe", movbe_insn, 6, SUF_Z, 0, 0, 0, 0, CPU_MOVBE, 0, 0},
+ {"lar", larlsl_insn, 6, SUF_Z, 0x02, 0, 0, 0, CPU_286, CPU_Prot, 0},
+ {"mulss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x59, 0, 0, CPU_SSE, 0, 0},
+ {"or", arith_insn, 22, SUF_Z, 0x08, 0x01, 0, 0, 0, 0, 0},
+ {"cmpxchg", cmpxchgxadd_insn, 4, SUF_Z, 0xB0, 0, 0, 0, CPU_486, 0, 0},
+ {"vcvttpd2dq", avx_cvt_xmm128_insn, 2, SUF_Z, 0x66, 0xE6, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"lds", ldes_insn, 2, SUF_Z, 0xC5, 0, 0, NOT_64, 0, 0, 0},
+ {"vphaddubw", vphaddsub_insn, 1, SUF_Z, 0xD1, 0, 0, 0, CPU_XOP, 0, 0},
+ {"jg", jcc_insn, 9, SUF_Z, 0x0F, 0, 0, 0, 0, 0, 0},
+ {"movzx", movszx_insn, 5, SUF_Z, 0xB6, 0, 0, 0, CPU_386, 0, 0},
+ {"vpmacssdqh", vpma_insn, 1, SUF_Z, 0x8F, 0, 0, 0, CPU_XOP, 0, 0},
+ {"addsubps", xmm_xmm128_insn, 2, SUF_Z, 0xF2, 0xD0, 0, 0, CPU_SSE3, 0, 0},
+ {"fsin", twobyte_insn, 1, SUF_Z, 0xD9, 0xFE, 0, 0, CPU_286, CPU_FPU, 0},
+ {"vpminsb", ssse3_insn, 5, SUF_Z, 0x38, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"psignd", ssse3_insn, 5, SUF_Z, 0x0A, 0, 0, 0, CPU_SSSE3, 0, 0},
+ {"fucompp", twobyte_insn, 1, SUF_Z, 0xDA, 0xE9, 0, 0, CPU_286, CPU_FPU, 0},
+ {"vpunpcklqdq", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x6C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pcmpeqb", mmxsse2_insn, 2, SUF_Z, 0x74, 0, 0, 0, CPU_MMX, 0, 0},
+ {"extractps", extractps_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_SSE41, 0},
+ {"btc", bittest_insn, 6, SUF_Z, 0xBB, 0x07, 0, 0, CPU_386, 0, 0},
+ {"vpshlb", amd_vpshift_insn, 2, SUF_Z, 0x94, 0, 0, 0, CPU_XOP, 0, 0},
+ {"ror", shift_insn, 16, SUF_Z, 0x01, 0, 0, 0, 0, 0, 0},
+ {"vpsravd", vpshiftv_vexw0_avx2_insn, 2, SUF_Z, 0x46, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"setge", setcc_insn, 1, SUF_Z, 0x0D, 0, 0, 0, CPU_386, 0, 0},
+ {"vpcomgtub", vpcom_insn, 1, SUF_Z, 0xEC, 0x02, 0, 0, CPU_XOP, 0, 0},
+ {"vfmaddsub213ps", vfma_ps_insn, 2, SUF_Z, 0xA6, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vpcomleub", vpcom_insn, 1, SUF_Z, 0xEC, 0x01, 0, 0, CPU_XOP, 0, 0},
+ {"cmpordps", ssecmp_128_insn, 3, SUF_Z, 0x07, 0, 0, 0, CPU_SSE, 0, 0},
+ {"movhpd", movhlp_insn, 3, SUF_Z, 0x66, 0x16, 0, 0, CPU_SSE2, 0, 0},
+ {"mwait", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xC9, 0, CPU_SSE3, 0, 0},
+ {"vmovmskps", movmsk_insn, 4, SUF_Z, 0x00, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpaddd", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xFE, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfmsub132ss", vfma_ss_insn, 2, SUF_Z, 0x9B, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vpminuw", ssse3_insn, 5, SUF_Z, 0x3A, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpshaq", amd_vpshift_insn, 2, SUF_Z, 0x9B, 0, 0, 0, CPU_XOP, 0, 0},
+ {"dec", incdec_insn, 6, SUF_Z, 0x48, 0x01, 0, 0, 0, 0, 0},
+ {"vmovss", movss_insn, 4, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfmadd132ps", vfma_ps_insn, 2, SUF_Z, 0x98, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"int03", onebyte_insn, 1, SUF_Z, 0xCC, 0, 0, 0, 0, 0, 0},
+ {"blcfill", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x01, 0x01, 0, 0, CPU_386, CPU_TBM, 0},
+ {"phsubsw", ssse3_insn, 5, SUF_Z, 0x07, 0, 0, 0, CPU_SSSE3, 0, 0},
+ {"subpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x5C, 0, 0, CPU_SSE2, 0, 0},
+ {"stmxcsr", ldstmxcsr_insn, 1, SUF_Z, 0x03, 0, 0, 0, CPU_SSE, 0, 0},
+ {"cmovl", cmovcc_insn, 3, SUF_Z, 0x0C, 0, 0, 0, CPU_686, 0, 0},
+ {"vpcomneud", vpcom_insn, 1, SUF_Z, 0xEE, 0x05, 0, 0, CPU_XOP, 0, 0},
+ {"xorps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x57, 0, 0, CPU_SSE, 0, 0},
+ {"vcmpeq_usss", ssecmp_32_insn, 4, SUF_Z, 0x18, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpngt_uqsd", ssecmp_64_insn, 4, SUF_Z, 0x1A, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vsubps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x5C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vucomiss", avx_xmm_xmm32_insn, 2, SUF_Z, 0x00, 0x2E, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmp", arith_insn, 22, SUF_Z, 0x38, 0x07, 0, 0, 0, 0, 0},
+ {"bsr", bsfr_insn, 3, SUF_Z, 0xBD, 0, 0, 0, CPU_386, 0, 0},
+ {"cmc", onebyte_insn, 1, SUF_Z, 0xF5, 0, 0, 0, 0, 0, 0},
+ {"vpshad", amd_vpshift_insn, 2, SUF_Z, 0x9A, 0, 0, 0, CPU_XOP, 0, 0},
+ {"pmovmskb", pmovmskb_insn, 6, SUF_Z, 0, 0, 0, 0, CPU_MMX, CPU_P3, 0},
+ {"setz", setcc_insn, 1, SUF_Z, 0x04, 0, 0, 0, CPU_386, 0, 0},
+ {"cmovo", cmovcc_insn, 3, SUF_Z, 0x00, 0, 0, 0, CPU_686, 0, 0},
+ {"vfmaddsd", fma_128_m64_insn, 3, SUF_Z, 0x6B, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"vcmpnltsd", ssecmp_64_insn, 4, SUF_Z, 0x05, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"xsha1", padlock_insn, 1, SUF_Z, 0xC8, 0xF3, 0xA6, 0, CPU_PadLock, 0, 0},
+ {"out", out_insn, 12, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
+ {"vdivsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5E, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfrczsd", vfrczsd_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vpextrw", pextrw_insn, 7, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"subss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5C, 0, 0, CPU_SSE, 0, 0},
+ {"roundpd", sse4imm_insn, 2, SUF_Z, 0x09, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vpermilpd", vpermil_insn, 4, SUF_Z, 0x05, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfnmsub231ps", vfma_ps_insn, 2, SUF_Z, 0xBE, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"sysret", twobyte_insn, 1, SUF_Z, 0x0F, 0x07, 0, 0, CPU_686, CPU_AMD, CPU_Priv},
+ {"sub", arith_insn, 22, SUF_Z, 0x28, 0x05, 0, 0, 0, 0, 0},
+ {"popf", onebyte_insn, 1, SUF_Z, 0x9D, 0x00, 0x40, 0, 0, 0, 0},
+ {"pmvlzb", cyrixmmx_insn, 1, SUF_Z, 0x5B, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
+ {"vfmadd213ss", vfma_ss_insn, 2, SUF_Z, 0xA9, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"str", str_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_286, CPU_Prot, 0},
+ {"lahf", onebyte_insn, 1, SUF_Z, 0x9F, 0, 0, 0, 0, 0, 0},
+ {"fnstenv", onebytemem_insn, 1, SUF_Z, 0x06, 0xD9, 0, 0, CPU_FPU, 0, 0},
+ {"ficom", fiarith_insn, 2, SUF_Z, 0x02, 0xDA, 0, 0, CPU_FPU, 0, 0},
+ {"vpmovsxbq", sse4m16_insn, 4, SUF_Z, 0x22, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pminub", mmxsse2_insn, 2, SUF_Z, 0xDA, 0, 0, 0, CPU_MMX, CPU_P3, 0},
+ {"sqrtpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x51, 0, 0, CPU_SSE2, 0, 0},
+ {"stac", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xCB, 0, CPU_SMAP, 0, 0},
+ {"vfmaddsub231ps", vfma_ps_insn, 2, SUF_Z, 0xB6, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vpcomltq", vpcom_insn, 1, SUF_Z, 0xCF, 0x00, 0, 0, CPU_XOP, 0, 0},
+ {"cli", onebyte_insn, 1, SUF_Z, 0xFA, 0, 0, 0, 0, 0, 0},
+ {"vfnmadd132sd", vfma_sd_insn, 2, SUF_Z, 0x9D, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vrcpss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x53, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fnstsw", fnstsw_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_FPU, 0, 0},
+ {"vrsqrtps", avx_xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x52, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcomb", vpcom_imm_insn, 1, SUF_Z, 0xCC, 0, 0, 0, CPU_XOP, 0, 0},
+ {"verr", prot286_insn, 1, SUF_Z, 0x04, 0x00, 0, 0, CPU_286, CPU_Prot, 0},
+ {"pmovzxdq", sse4m64_insn, 4, SUF_Z, 0x35, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vcmpneq_oqpd", ssecmp_128_insn, 3, SUF_Z, 0x0C, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"setae", setcc_insn, 1, SUF_Z, 0x03, 0, 0, 0, CPU_386, 0, 0},
+ {"vhaddpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x7C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcvtsd2si", cvt_rx_xmm64_insn, 4, SUF_Z, 0xF2, 0x2D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pmaxuw", sse4_insn, 2, SUF_Z, 0x3E, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"rorx", vex_gpr_reg_rm_0F_imm8_insn, 2, SUF_Z, 0xF2, 0x3A, 0xF0, ONLY_AVX, CPU_BMI2, 0, 0},
+ {"andn", vex_gpr_reg_nds_rm_0F_insn, 2, SUF_Z, 0x00, 0x38, 0xF2, ONLY_AVX, CPU_BMI1, 0, 0},
+ {"vpmovzxwq", sse4m32_insn, 4, SUF_Z, 0x34, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fisub", fiarith_insn, 2, SUF_Z, 0x04, 0xDA, 0, 0, CPU_FPU, 0, 0},
+ {"vcmptrue_usps", ssecmp_128_insn, 3, SUF_Z, 0x1F, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcomneq", vpcom_insn, 1, SUF_Z, 0xCF, 0x05, 0, 0, CPU_XOP, 0, 0},
+ {"getsec", twobyte_insn, 1, SUF_Z, 0x0F, 0x37, 0, 0, CPU_SMX, 0, 0},
+ {"bzhi", vex_gpr_reg_rm_nds_0F_insn, 2, SUF_Z, 0x00, 0x38, 0xF5, ONLY_AVX, CPU_BMI2, 0, 0},
+ {"cvtsd2si", cvt_rx_xmm64_insn, 4, SUF_Z, 0xF2, 0x2D, 0, 0, CPU_386, CPU_SSE2, 0},
+ {"vpcomned", vpcom_insn, 1, SUF_Z, 0xCE, 0x05, 0, 0, CPU_XOP, 0, 0},
+ {"xtest", tsx_0x0F_0x01_insn, 1, SUF_Z, 0xD6, 0, 0, 0, CPU_TSX, 0, 0},
+ {"pclmulqdq", pclmulqdq_insn, 2, SUF_Z, 0x3A, 0x44, 0, 0, CPU_AVX, 0, 0},
+ {"minsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5D, 0, 0, CPU_SSE2, 0, 0},
+ {"vldmxcsr", ldstmxcsr_insn, 1, SUF_Z, 0x02, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpneq_oqps", ssecmp_128_insn, 3, SUF_Z, 0x0C, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pmovsxwd", sse4m64_insn, 4, SUF_Z, 0x23, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"iretd", onebyte_insn, 1, SUF_Z, 0xCF, 0x20, 0, 0, CPU_386, 0, 0},
+ {"vmcall", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xC1, 0, CPU_P4, 0, 0},
+ {"shl", shift_insn, 16, SUF_Z, 0x04, 0, 0, 0, 0, 0, 0},
+ {"cmovnp", cmovcc_insn, 3, SUF_Z, 0x0B, 0, 0, 0, CPU_686, 0, 0},
+ {"cmpltss", ssecmp_32_insn, 4, SUF_Z, 0x01, 0xF3, 0, 0, CPU_SSE, 0, 0},
+ {"movddup", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x12, 0, 0, CPU_SSE3, 0, 0},
+ {"xrstor", twobytemem_insn, 1, SUF_Z, 0x05, 0x0F, 0xAE, 0, CPU_386, CPU_XSAVE, 0},
+ {"pinsrb", pinsrb_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"pushf", onebyte_insn, 1, SUF_Z, 0x9C, 0x00, 0x40, 0, 0, 0, 0},
+ {"vxorpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x57, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpunordss", ssecmp_32_insn, 4, SUF_Z, 0x03, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpmaxud", ssse3_insn, 5, SUF_Z, 0x3F, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fiadd", fiarith_insn, 2, SUF_Z, 0x00, 0xDA, 0, 0, CPU_FPU, 0, 0},
+ {"vcmple_oqpd", ssecmp_128_insn, 3, SUF_Z, 0x12, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpss", xmm_xmm32_imm_insn, 4, SUF_Z, 0xF3, 0xC2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"sysenter", twobyte_insn, 1, SUF_Z, 0x0F, 0x34, 0, NOT_64, CPU_686, 0, 0},
+ {"vpcomleq", vpcom_insn, 1, SUF_Z, 0xCF, 0x01, 0, 0, CPU_XOP, 0, 0},
+ {"finit", threebyte_insn, 1, SUF_Z, 0x9B, 0xDB, 0xE3, 0, CPU_FPU, 0, 0},
+ {"vpcomneqw", vpcom_insn, 1, SUF_Z, 0xCD, 0x05, 0, 0, CPU_XOP, 0, 0},
+ {"clgi", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xDD, 0, CPU_SVM, 0, 0},
+ {"vpabsb", avx2_ssse3_2op_insn, 2, SUF_Z, 0x1C, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"addpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x58, 0, 0, CPU_SSE2, 0, 0},
+ {"cmovg", cmovcc_insn, 3, SUF_Z, 0x0F, 0, 0, 0, CPU_686, 0, 0},
+ {"movlps", movhlp_insn, 3, SUF_Z, 0x00, 0x12, 0, 0, CPU_SSE, 0, 0},
+ {"vaddss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x58, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"outsb", onebyte_insn, 1, SUF_Z, 0x6E, 0x00, 0, 0, 0, 0, 0},
+ {"vpcomequd", vpcom_insn, 1, SUF_Z, 0xEE, 0x04, 0, 0, CPU_XOP, 0, 0},
+ {"wrmsr", twobyte_insn, 1, SUF_Z, 0x0F, 0x30, 0, 0, CPU_586, CPU_Priv, 0},
+ {"vpshufb", ssse3_insn, 5, SUF_Z, 0x00, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpackssdw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x6B, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"ftst", twobyte_insn, 1, SUF_Z, 0xD9, 0xE4, 0, 0, CPU_FPU, 0, 0},
+ {"arpl", arpl_insn, 1, SUF_Z, 0, 0, 0, NOT_64, CPU_286, CPU_Prot, 0},
+ {"fcmovb", fcmovcc_insn, 1, SUF_Z, 0xDA, 0xC0, 0, 0, CPU_686, CPU_FPU, 0},
+ {"vfnmadd132ss", vfma_ss_insn, 2, SUF_Z, 0x9D, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"rsldt", cyrixsmm_insn, 1, SUF_Z, 0x7B, 0, 0, 0, CPU_486, CPU_Cyrix, CPU_SMM},
+ {"vfmsubss", fma_128_m32_insn, 3, SUF_Z, 0x6E, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"pcmpgtw", mmxsse2_insn, 2, SUF_Z, 0x65, 0, 0, 0, CPU_MMX, 0, 0},
+ {"vcmpfalse_osss", ssecmp_32_insn, 4, SUF_Z, 0x1B, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"comiss", xmm_xmm32_insn, 4, SUF_Z, 0x00, 0x2F, 0, 0, CPU_SSE, 0, 0},
+ {"loopz", loop_insn, 8, SUF_Z, 0x01, 0, 0, 0, 0, 0, 0},
+ {"cmpnlepd", ssecmp_128_insn, 3, SUF_Z, 0x06, 0x66, 0, 0, CPU_SSE, 0, 0},
+ {"pfmin", now3d_insn, 1, SUF_Z, 0x94, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"xsha256", padlock_insn, 1, SUF_Z, 0xD0, 0xF3, 0xA6, 0, CPU_PadLock, 0, 0},
+ {"vfnmsub132ss", vfma_ss_insn, 2, SUF_Z, 0x9F, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"fldl2t", twobyte_insn, 1, SUF_Z, 0xD9, 0xE9, 0, 0, CPU_FPU, 0, 0},
+ {"vpsignd", ssse3_insn, 5, SUF_Z, 0x0A, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpaddusw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xDD, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fcmovu", fcmovcc_insn, 1, SUF_Z, 0xDA, 0xD8, 0, 0, CPU_686, CPU_FPU, 0},
+ {"vmovaps", movau_insn, 6, SUF_Z, 0x00, 0x28, 0x01, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmple_oqsd", ssecmp_64_insn, 4, SUF_Z, 0x12, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpextrq", pextrq_insn, 1, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmpnltps", ssecmp_128_insn, 3, SUF_Z, 0x05, 0, 0, 0, CPU_SSE, 0, 0},
+ {"vfnmadd231pd", vfma_pd_insn, 2, SUF_Z, 0xBC, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"fsubp", farithp_insn, 3, SUF_Z, 0xE8, 0, 0, 0, CPU_FPU, 0, 0},
+ {"pmulld", sse4_insn, 2, SUF_Z, 0x40, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vfnmadd132ps", vfma_ps_insn, 2, SUF_Z, 0x9C, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vpunpcklbw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x60, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vorps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x56, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vmovmskpd", movmsk_insn, 4, SUF_Z, 0x66, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmpeqpd", ssecmp_128_insn, 3, SUF_Z, 0x00, 0x66, 0, 0, CPU_SSE, 0, 0},
+ {"vmovdqa", movau_insn, 6, SUF_Z, 0x66, 0x6F, 0x10, ONLY_AVX, CPU_AVX, 0, 0},
+ {"jl", jcc_insn, 9, SUF_Z, 0x0C, 0, 0, 0, 0, 0, 0},
+ {"vcmpgesd", ssecmp_64_insn, 4, SUF_Z, 0x0D, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cvttpd2pi", cvt_mm_xmm_insn, 1, SUF_Z, 0x66, 0x2C, 0, 0, CPU_SSE2, 0, 0},
+ {"phsubw", ssse3_insn, 5, SUF_Z, 0x05, 0, 0, 0, CPU_SSSE3, 0, 0},
+ {"pminsw", mmxsse2_insn, 2, SUF_Z, 0xEA, 0, 0, 0, CPU_MMX, CPU_P3, 0},
+ {"vpgatherqq", gather_64x_64y_insn, 2, SUF_Z, 0x91, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"vfmadd132sd", vfma_sd_insn, 2, SUF_Z, 0x99, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"setpo", setcc_insn, 1, SUF_Z, 0x0B, 0, 0, 0, CPU_386, 0, 0},
+ {"fidiv", fiarith_insn, 2, SUF_Z, 0x06, 0xDA, 0, 0, CPU_FPU, 0, 0},
+ {"clts", twobyte_insn, 1, SUF_Z, 0x0F, 0x06, 0, 0, CPU_286, CPU_Priv, 0},
+ {"prefetcht0", twobytemem_insn, 1, SUF_Z, 0x01, 0x0F, 0x18, 0, CPU_P3, 0, 0},
+ {"cvtsi2ss", cvt_xmm_rmx_insn, 6, SUF_Z, 0xF3, 0x2A, 0, 0, CPU_386, CPU_SSE, 0},
+ {"vpmuludq", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xF4, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"xcryptctr", padlock_insn, 1, SUF_Z, 0xD8, 0xF3, 0xA7, 0, CPU_PadLock, 0, 0},
+ {"vfmadd132ss", vfma_ss_insn, 2, SUF_Z, 0x99, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vpcmpistri", sse4pcmpstr_insn, 1, SUF_Z, 0x63, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"popfw", onebyte_insn, 1, SUF_Z, 0x9D, 0x10, 0x40, 0, 0, 0, 0},
+ {"vstmxcsr", ldstmxcsr_insn, 1, SUF_Z, 0x03, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpmovzxbd", sse4m32_insn, 4, SUF_Z, 0x31, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"rsqrtps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x52, 0, 0, CPU_SSE, 0, 0},
+ {"vfmsubadd213pd", vfma_pd_insn, 2, SUF_Z, 0xA7, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"prefetcht1", twobytemem_insn, 1, SUF_Z, 0x02, 0x0F, 0x18, 0, CPU_P3, 0, 0},
+ {"xrelease", NULL, X86_ACQREL>>8, 0xF3, 0, 0, 0, 0, 0, 0, 0},
+ {"wait", onebyte_insn, 1, SUF_Z, 0x9B, 0, 0, 0, 0, 0, 0},
+ {"aesenc", aes_insn, 2, SUF_Z, 0x38, 0xDC, 0, 0, CPU_AVX, 0, 0},
+ {"cmpordsd", ssecmp_64_insn, 4, SUF_Z, 0x07, 0xF2, 0, 0, CPU_SSE2, 0, 0},
+ {"lodsb", onebyte_insn, 1, SUF_Z, 0xAC, 0x00, 0, 0, 0, 0, 0},
+ {"vcmpeq_ussd", ssecmp_64_insn, 4, SUF_Z, 0x18, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fimul", fiarith_insn, 2, SUF_Z, 0x01, 0xDA, 0, 0, CPU_FPU, 0, 0},
+ {"setns", setcc_insn, 1, SUF_Z, 0x09, 0, 0, 0, CPU_386, 0, 0},
+ {"vunpcklpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x14, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"sha1nexte", intel_SHA1NEXTE_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SHA, 0, 0},
+ {"xorpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x57, 0, 0, CPU_SSE2, 0, 0},
+ {"jp", jcc_insn, 9, SUF_Z, 0x0A, 0, 0, 0, 0, 0, 0},
+ {"vcmpfalse_ossd", ssecmp_64_insn, 4, SUF_Z, 0x1B, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vaesenc", aes_insn, 2, SUF_Z, 0x38, 0xDC, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fnop", twobyte_insn, 1, SUF_Z, 0xD9, 0xD0, 0, 0, CPU_FPU, 0, 0},
+ {"nop", onebyte_insn, 1, SUF_Z, 0x90, 0, 0, 0, 0, 0, 0},
+ {"test", test_insn, 20, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
+ {"pmulhrsw", ssse3_insn, 5, SUF_Z, 0x0B, 0, 0, 0, CPU_SSSE3, 0, 0},
+ {"cvtdq2pd", xmm_xmm64_insn, 4, SUF_Z, 0xF3, 0xE6, 0, 0, CPU_SSE2, 0, 0},
+ {"pmaddwd", mmxsse2_insn, 2, SUF_Z, 0xF5, 0, 0, 0, CPU_MMX, 0, 0},
+ {"vperm2i128", vperm2i128_avx2_insn, 1, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"vcmpnltss", ssecmp_32_insn, 4, SUF_Z, 0x05, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"frstor", onebytemem_insn, 1, SUF_Z, 0x04, 0xDD, 0, 0, CPU_FPU, 0, 0},
+ {"vcmpnlt_uqps", ssecmp_128_insn, 3, SUF_Z, 0x15, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"blcic", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x01, 0x05, 0, 0, CPU_386, CPU_TBM, 0},
+ {"vfnmsub132sd", vfma_sd_insn, 2, SUF_Z, 0x9F, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"loopnz", loop_insn, 8, SUF_Z, 0x00, 0, 0, 0, 0, 0, 0},
+ {"vcmpordss", ssecmp_32_insn, 4, SUF_Z, 0x07, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"movntsd", movntsd_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SSE4a, 0, 0},
+ {"mov", mov_insn, 69, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
+ {"jc", jcc_insn, 9, SUF_Z, 0x02, 0, 0, 0, 0, 0, 0},
+ {"cmpltps", ssecmp_128_insn, 3, SUF_Z, 0x01, 0, 0, 0, CPU_SSE, 0, 0},
+ {"palignr", ssse3imm_insn, 2, SUF_Z, 0x0F, 0, 0, 0, CPU_SSSE3, 0, 0},
+ {"vpmuldq", ssse3_insn, 5, SUF_Z, 0x28, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmovnz", cmovcc_insn, 3, SUF_Z, 0x05, 0, 0, 0, CPU_686, 0, 0},
+ {"vpshuflw", xmm_xmm128_imm_256avx2_insn, 2, SUF_Z, 0xF2, 0x70, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpmovzxdq", sse4m64_insn, 4, SUF_Z, 0x35, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpnge_uqps", ssecmp_128_insn, 3, SUF_Z, 0x19, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fstp", fstp_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_FPU, 0, 0},
+ {"vpacksswb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x63, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfmaddps", fma_128_256_insn, 4, SUF_Z, 0x68, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"vcmptruepd", ssecmp_128_insn, 3, SUF_Z, 0x0F, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vaddsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x58, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vphaddbq", vphaddsub_insn, 1, SUF_Z, 0xC3, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vaesimc", aesimc_insn, 1, SUF_Z, 0x38, 0xDB, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"wbinvd", twobyte_insn, 1, SUF_Z, 0x0F, 0x09, 0, 0, CPU_486, CPU_Priv, 0},
+ {"salc", onebyte_insn, 1, SUF_Z, 0xD6, 0, 0, NOT_64, CPU_Undoc, 0, 0},
+ {"vcmpnltps", ssecmp_128_insn, 3, SUF_Z, 0x05, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"ptest", sse4_insn, 2, SUF_Z, 0x17, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"jne", jcc_insn, 9, SUF_Z, 0x05, 0, 0, 0, 0, 0, 0},
+ {"vpmovsxbd", sse4m32_insn, 4, SUF_Z, 0x21, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vminsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fcmovnb", fcmovcc_insn, 1, SUF_Z, 0xDB, 0xC0, 0, 0, CPU_686, CPU_FPU, 0},
+ {"vpunpcklwd", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x61, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pclmullqhqdq", pclmulqdq_fixed_insn, 2, SUF_Z, 0x10, 0, 0, 0, CPU_AVX, 0, 0},
+ {"loadall286", twobyte_insn, 1, SUF_Z, 0x0F, 0x05, 0, 0, CPU_286, CPU_Undoc, 0},
+ {"popcnt", cnt_insn, 3, SUF_Z, 0xB8, 0, 0, 0, CPU_SSE42, 0, 0},
+ {"fld", fld_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_FPU, 0, 0},
+ {"vpcomfalseuw", vpcom_insn, 1, SUF_Z, 0xED, 0x06, 0, 0, CPU_XOP, 0, 0},
+ {"fprem", twobyte_insn, 1, SUF_Z, 0xD9, 0xF8, 0, 0, CPU_FPU, 0, 0},
+ {"vcvtps2pd", avx_cvt_xmm64_insn, 3, SUF_Z, 0x00, 0x5A, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfmsub231ss", vfma_ss_insn, 2, SUF_Z, 0xBB, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vfmadd213sd", vfma_sd_insn, 2, SUF_Z, 0xA9, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vprotw", vprot_insn, 3, SUF_Z, 0x01, 0, 0, 0, CPU_XOP, 0, 0},
+ {"cmovge", cmovcc_insn, 3, SUF_Z, 0x0D, 0, 0, 0, CPU_686, 0, 0},
+ {"popa", onebyte_insn, 1, SUF_Z, 0x61, 0x00, 0, NOT_64, CPU_186, 0, 0},
+ {"cmovna", cmovcc_insn, 3, SUF_Z, 0x06, 0, 0, 0, CPU_686, 0, 0},
+ {"vroundpd", avx_sse4imm_insn, 3, SUF_Z, 0x09, 0, 0, ONLY_AVX, CPU_SSE41, 0, 0},
+ {"pcmpistrm", sse4pcmpstr_insn, 1, SUF_Z, 0x62, 0, 0, 0, CPU_SSE42, 0, 0},
+ {"movq2dq", movq2dq_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SSE2, 0, 0},
+ {"blsi", vex_gpr_ndd_rm_0F38_regext_insn, 2, SUF_Z, 0x00, 0xF3, 0x03, ONLY_AVX, CPU_BMI1, 0, 0},
+ {"vminps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x5D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"maxsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5F, 0, 0, CPU_SSE2, 0, 0},
+ {"vcmpneq_ossd", ssecmp_64_insn, 4, SUF_Z, 0x1C, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"in", in_insn, 12, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
+ {"retn", retnf_insn, 6, SUF_Z, 0xC2, 0, 0, 0, 0, 0, 0},
+ {"cmpsd", cmpsd_insn, 5, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
+ {"psrlw", pshift_insn, 4, SUF_Z, 0xD1, 0x71, 0x02, 0, CPU_MMX, 0, 0},
+ {"vpsrlvd", vpshiftv_vexw0_avx2_insn, 2, SUF_Z, 0x45, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"movsd", movsd_insn, 5, SUF_Z, 0, 0, 0, 0, CPU_386, 0, 0},
+ {"subsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5C, 0, 0, CPU_SSE2, 0, 0},
+ {"das", onebyte_insn, 1, SUF_Z, 0x2F, 0, 0, NOT_64, 0, 0, 0},
+ {"movaps", movau_insn, 6, SUF_Z, 0x00, 0x28, 0x01, 0, CPU_SSE, 0, 0},
+ {"fxtract", twobyte_insn, 1, SUF_Z, 0xD9, 0xF4, 0, 0, CPU_FPU, 0, 0},
+ {"rep", NULL, X86_LOCKREP>>8, 0xF3, 0, 0, 0, 0, 0, 0, 0},
+ {"vcmpnless", ssecmp_32_insn, 4, SUF_Z, 0x06, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vaeskeygenassist", aes_imm_insn, 1, SUF_Z, 0x3A, 0xDF, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpaddsb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xEC, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pand", mmxsse2_insn, 2, SUF_Z, 0xDB, 0, 0, 0, CPU_MMX, 0, 0},
+ {"cmovb", cmovcc_insn, 3, SUF_Z, 0x02, 0, 0, 0, CPU_686, 0, 0},
+ {"vpcmpgtd", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pmovzxwq", sse4m32_insn, 4, SUF_Z, 0x34, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vfmsubadd132ps", vfma_ps_insn, 2, SUF_Z, 0x97, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vpmovsxdq", sse4m64_insn, 4, SUF_Z, 0x25, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"psrlq", pshift_insn, 4, SUF_Z, 0xD3, 0x73, 0x02, 0, CPU_MMX, 0, 0},
+ {"vshufps", xmm_xmm128_imm_256_insn, 3, SUF_Z, 0x00, 0xC6, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"ficomp", fiarith_insn, 2, SUF_Z, 0x03, 0xDA, 0, 0, CPU_FPU, 0, 0},
+ {"vpcomneqq", vpcom_insn, 1, SUF_Z, 0xCF, 0x05, 0, 0, CPU_XOP, 0, 0},
+ {"vphaddwd", vphaddsub_insn, 1, SUF_Z, 0xC6, 0, 0, 0, CPU_XOP, 0, 0},
+ {"scasq", onebyte_insn, 1, SUF_Z, 0xAF, 0x40, 0, ONLY_64, 0, 0, 0},
+ {"vcmpgess", ssecmp_32_insn, 4, SUF_Z, 0x0D, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmptrueps", ssecmp_128_insn, 3, SUF_Z, 0x0F, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"divss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5E, 0, 0, CPU_SSE, 0, 0},
+ {"vblendvpd", avx_sse4xmm0_insn, 2, SUF_Z, 0x4B, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpnle_uqss", ssecmp_32_insn, 4, SUF_Z, 0x16, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"punpcklqdq", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x6C, 0, 0, CPU_SSE2, 0, 0},
+ {"vphsubbw", vphaddsub_insn, 1, SUF_Z, 0xE1, 0, 0, 0, CPU_XOP, 0, 0},
+ {"hsubpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x7D, 0, 0, CPU_SSE3, 0, 0},
+ {"vfnmsub132ps", vfma_ps_insn, 2, SUF_Z, 0x9E, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"fxch", fxch_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_FPU, 0, 0},
+ {"vpsrad", vpshift_insn, 8, SUF_Z, 0xE2, 0x72, 0x04, ONLY_AVX, CPU_AVX, 0, 0},
+ {"sets", setcc_insn, 1, SUF_Z, 0x08, 0, 0, 0, CPU_386, 0, 0},
+ {"montmul", padlock_insn, 1, SUF_Z, 0xC0, 0xF3, 0xA6, 0, CPU_PadLock, 0, 0},
+ {"shld", shlrd_insn, 9, SUF_Z, 0xA4, 0, 0, 0, CPU_386, 0, 0},
+ {"jnbe", jcc_insn, 9, SUF_Z, 0x07, 0, 0, 0, 0, 0, 0},
+ {"fucomip", fcom2_insn, 2, SUF_Z, 0xDF, 0xE8, 0, 0, CPU_686, CPU_FPU, 0},
+ {"vfnmsubpd", fma_128_256_insn, 4, SUF_Z, 0x7D, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"psllw", pshift_insn, 4, SUF_Z, 0xF1, 0x71, 0x06, 0, CPU_MMX, 0, 0},
+ {"vpsubw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xF9, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fcomi", fcom2_insn, 2, SUF_Z, 0xDB, 0xF0, 0, 0, CPU_686, CPU_FPU, 0},
+ {"pusha", onebyte_insn, 1, SUF_Z, 0x60, 0x00, 0, NOT_64, CPU_186, 0, 0},
+ {"vcmpnltpd", ssecmp_128_insn, 3, SUF_Z, 0x05, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"adox", vex_gpr_ndd_rm_0F38_insn, 2, SUF_Z, 0xF3, 0xF6, 0, 0, CPU_ADX, 0, 0},
+ {"cmpordpd", ssecmp_128_insn, 3, SUF_Z, 0x07, 0x66, 0, 0, CPU_SSE, 0, 0},
+ {"lfence", threebyte_insn, 1, SUF_Z, 0x0F, 0xAE, 0xE8, 0, CPU_P3, 0, 0},
+ {"loopne", loop_insn, 8, SUF_Z, 0x00, 0, 0, 0, 0, 0, 0},
+ {"vfmadd213pd", vfma_pd_insn, 2, SUF_Z, 0xA8, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"movsq", onebyte_insn, 1, SUF_Z, 0xA5, 0x40, 0, ONLY_64, 0, 0, 0},
+ {"vcmpunord_ssd", ssecmp_64_insn, 4, SUF_Z, 0x13, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pslldq", pslrldq_insn, 4, SUF_Z, 0x07, 0, 0, 0, CPU_SSE2, 0, 0},
+ {"fisttp", fildstp_insn, 4, SUF_Z, 0x01, 0x00, 0x01, 0, CPU_SSE3, 0, 0},
+ {"fldcw", fldnstcw_insn, 1, SUF_Z, 0x05, 0, 0, 0, CPU_FPU, 0, 0},
+ {"vpcomltw", vpcom_insn, 1, SUF_Z, 0xCD, 0x00, 0, 0, CPU_XOP, 0, 0},
+ {"vpackusdw", ssse3_insn, 5, SUF_Z, 0x2B, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmovng", cmovcc_insn, 3, SUF_Z, 0x0E, 0, 0, 0, CPU_686, 0, 0},
+ {"andnps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x55, 0, 0, CPU_SSE, 0, 0},
+ {"cwde", onebyte_insn, 1, SUF_Z, 0x98, 0x20, 0, 0, CPU_386, 0, 0},
+ {"vpcomtruew", vpcom_insn, 1, SUF_Z, 0xCD, 0x07, 0, 0, CPU_XOP, 0, 0},
+ {"xsetbv", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xD1, 0, CPU_386, CPU_Priv, CPU_XSAVE},
+ {"movsw", onebyte_insn, 1, SUF_Z, 0xA5, 0x10, 0, 0, 0, 0, 0},
+ {"vpcomw", vpcom_imm_insn, 1, SUF_Z, 0xCD, 0, 0, 0, CPU_XOP, 0, 0},
+ {"pext", vex_gpr_reg_nds_rm_0F_insn, 2, SUF_Z, 0xF3, 0x38, 0xF5, ONLY_AVX, CPU_BMI2, 0, 0},
+ {"pmovsxbd", sse4m32_insn, 4, SUF_Z, 0x21, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"cmpnleps", ssecmp_128_insn, 3, SUF_Z, 0x06, 0, 0, 0, CPU_SSE, 0, 0},
+ {"vfmsubsd", fma_128_m64_insn, 3, SUF_Z, 0x6F, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"fcos", twobyte_insn, 1, SUF_Z, 0xD9, 0xFF, 0, 0, CPU_286, CPU_FPU, 0},
+ {"repnz", NULL, X86_LOCKREP>>8, 0xF2, 0, 0, 0, 0, 0, 0, 0},
+ {"vcmpngtsd", ssecmp_64_insn, 4, SUF_Z, 0x0A, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fsubr", farith_insn, 7, SUF_Z, 0xE0, 0xE8, 0x05, 0, CPU_FPU, 0, 0},
+ {"setng", setcc_insn, 1, SUF_Z, 0x0E, 0, 0, 0, CPU_386, 0, 0},
+ {"paddsiw", cyrixmmx_insn, 1, SUF_Z, 0x51, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
+ {"psubusb", mmxsse2_insn, 2, SUF_Z, 0xD8, 0, 0, 0, CPU_MMX, 0, 0},
+ {"psignw", ssse3_insn, 5, SUF_Z, 0x09, 0, 0, 0, CPU_SSSE3, 0, 0},
+ {"cmovnae", cmovcc_insn, 3, SUF_Z, 0x02, 0, 0, 0, CPU_686, 0, 0},
+ {"vpcomgeb", vpcom_insn, 1, SUF_Z, 0xCC, 0x03, 0, 0, CPU_XOP, 0, 0},
+ {"vmovshdup", avx_xmm_xmm128_insn, 2, SUF_Z, 0xF3, 0x16, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pshufhw", xmm_xmm128_imm_insn, 1, SUF_Z, 0xF3, 0x70, 0, 0, CPU_SSE2, 0, 0},
+ {"fldt", fldstpt_insn, 1, SUF_Z, 0x05, 0, 0, 0, CPU_FPU, 0, 0},
+ {"pmovsxbq", sse4m16_insn, 4, SUF_Z, 0x22, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"extrq", extrq_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_SSE4a, 0, 0},
+ {"fidivr", fiarith_insn, 2, SUF_Z, 0x07, 0xDA, 0, 0, CPU_FPU, 0, 0},
+ {"vpabsd", avx2_ssse3_2op_insn, 2, SUF_Z, 0x1E, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vmaskmovpd", vmaskmov_insn, 4, SUF_Z, 0x2D, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"rsts", cyrixsmm_insn, 1, SUF_Z, 0x7D, 0, 0, 0, CPU_486, CPU_Cyrix, CPU_SMM},
+ {"vfmsubaddpd", fma_128_256_insn, 4, SUF_Z, 0x5F, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"paddsw", mmxsse2_insn, 2, SUF_Z, 0xED, 0, 0, 0, CPU_MMX, 0, 0},
+ {"cmpnless", ssecmp_32_insn, 4, SUF_Z, 0x06, 0xF3, 0, 0, CPU_SSE, 0, 0},
+ {"vinsertps", insertps_insn, 4, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fcmovne", fcmovcc_insn, 1, SUF_Z, 0xDB, 0xC8, 0, 0, CPU_686, CPU_FPU, 0},
+ {"vcmpneq_osps", ssecmp_128_insn, 3, SUF_Z, 0x1C, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vextractf128", vextractif128_insn, 1, SUF_Z, 0x19, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pmulhw", mmxsse2_insn, 2, SUF_Z, 0xE5, 0, 0, 0, CPU_MMX, 0, 0},
+ {"vfnmsub213ps", vfma_ps_insn, 2, SUF_Z, 0xAE, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"sha256rnds2", intel_SHA256RNDS2_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SHA, 0, 0},
+ {"vcmpnle_uqsd", ssecmp_64_insn, 4, SUF_Z, 0x16, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmovns", cmovcc_insn, 3, SUF_Z, 0x09, 0, 0, 0, CPU_686, 0, 0},
+ {"xcryptecb", padlock_insn, 1, SUF_Z, 0xC8, 0xF3, 0xA7, 0, CPU_PadLock, 0, 0},
+ {"vcvtpd2dq", avx_cvt_xmm128_insn, 2, SUF_Z, 0xF2, 0xE6, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pfadd", now3d_insn, 1, SUF_Z, 0x9E, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"fbld", fbldstp_insn, 1, SUF_Z, 0x04, 0, 0, 0, CPU_FPU, 0, 0},
+ {"rsm", twobyte_insn, 1, SUF_Z, 0x0F, 0xAA, 0, 0, CPU_586, CPU_SMM, 0},
+ {"vxorps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x57, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pmuldq", sse4_insn, 2, SUF_Z, 0x28, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vshufpd", xmm_xmm128_imm_256_insn, 3, SUF_Z, 0x66, 0xC6, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpgtps", ssecmp_128_insn, 3, SUF_Z, 0x0E, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pop", pop_insn, 23, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
+ {"movhps", movhlp_insn, 3, SUF_Z, 0x00, 0x16, 0, 0, CPU_SSE, 0, 0},
+ {"sqrtss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x51, 0, 0, CPU_SSE, 0, 0},
+ {"vcmpord_spd", ssecmp_128_insn, 3, SUF_Z, 0x17, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cvtpi2pd", cvt_xmm_mm_ss_insn, 1, SUF_Z, 0x66, 0x2A, 0, 0, CPU_SSE2, 0, 0},
+ {"vpunpckhwd", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x69, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfmsub213ps", vfma_ps_insn, 2, SUF_Z, 0xAA, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vmovntdq", movnt_insn, 2, SUF_Z, 0x66, 0xE7, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmove", cmovcc_insn, 3, SUF_Z, 0x04, 0, 0, 0, CPU_686, 0, 0},
+ {"setl", setcc_insn, 1, SUF_Z, 0x0C, 0, 0, 0, CPU_386, 0, 0},
+ {"vpcomnequw", vpcom_insn, 1, SUF_Z, 0xED, 0x05, 0, 0, CPU_XOP, 0, 0},
+ {"vcmpeqps", ssecmp_128_insn, 3, SUF_Z, 0x00, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vmrun", svm_rax_insn, 2, SUF_Z, 0xD8, 0, 0, 0, CPU_SVM, 0, 0},
+ {"pswapd", now3d_insn, 1, SUF_Z, 0xBB, 0, 0, 0, CPU_3DNow, CPU_Athlon, 0},
+ {"vcmpltpd", ssecmp_128_insn, 3, SUF_Z, 0x01, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pmovsxdq", sse4m64_insn, 4, SUF_Z, 0x25, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"skinit", skinit_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_SVM, 0, 0},
+ {"setno", setcc_insn, 1, SUF_Z, 0x01, 0, 0, 0, CPU_386, 0, 0},
+ {"pmaxub", mmxsse2_insn, 2, SUF_Z, 0xDE, 0, 0, 0, CPU_MMX, CPU_P3, 0},
+ {"ldmxcsr", ldstmxcsr_insn, 1, SUF_Z, 0x02, 0, 0, 0, CPU_SSE, 0, 0},
+ {"setnc", setcc_insn, 1, SUF_Z, 0x03, 0, 0, 0, CPU_386, 0, 0},
+ {"xsaveopt", twobytemem_insn, 1, SUF_Z, 0x06, 0x0F, 0xAE, 0, CPU_XSAVEOPT, 0, 0},
+ {"vcmpnlesd", ssecmp_64_insn, 4, SUF_Z, 0x06, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpslldq", pslrldq_insn, 4, SUF_Z, 0x07, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vphsubdq", vphaddsub_insn, 1, SUF_Z, 0xE3, 0, 0, 0, CPU_XOP, 0, 0},
+ {"cdqe", onebyte_insn, 1, SUF_Z, 0x98, 0x40, 0, ONLY_64, 0, 0, 0},
+ {"cvtps2dq", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x5B, 0, 0, CPU_SSE2, 0, 0},
+ {"vpsubusw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xD9, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"btr", bittest_insn, 6, SUF_Z, 0xB3, 0x06, 0, 0, CPU_386, 0, 0},
+ {"fnclex", twobyte_insn, 1, SUF_Z, 0xDB, 0xE2, 0, 0, CPU_FPU, 0, 0},
+ {"invlpg", twobytemem_insn, 1, SUF_Z, 0x07, 0x0F, 0x01, 0, CPU_486, CPU_Priv, 0},
+ {"vfmaddsubpd", fma_128_256_insn, 4, SUF_Z, 0x5D, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"vpbroadcastw", vpbroadcastw_avx2_insn, 4, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"xstorerng", padlock_insn, 1, SUF_Z, 0xC0, 0x00, 0xA7, 0, CPU_PadLock, 0, 0},
+ {"neg", f6_insn, 4, SUF_Z, 0x03, 0, 0, 0, 0, 0, 0},
+ {"vpshufhw", xmm_xmm128_imm_256avx2_insn, 2, SUF_Z, 0xF3, 0x70, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"a64", NULL, X86_ADDRSIZE>>8, 0x40, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"insertq", insertq_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_SSE4a, 0, 0},
+ {"vcmpnle_uqps", ssecmp_128_insn, 3, SUF_Z, 0x16, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"int", int_insn, 1, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
+ {"vpshufd", xmm_xmm128_imm_256avx2_insn, 2, SUF_Z, 0x66, 0x70, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vsqrtss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x51, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcmpistrm", sse4pcmpstr_insn, 1, SUF_Z, 0x62, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmptruess", ssecmp_32_insn, 4, SUF_Z, 0x0F, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpunordsd", ssecmp_64_insn, 4, SUF_Z, 0x03, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"maxpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x5F, 0, 0, CPU_SSE2, 0, 0},
+ {"vcmpneqss", ssecmp_32_insn, 4, SUF_Z, 0x04, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fucomi", fcom2_insn, 2, SUF_Z, 0xDB, 0xE8, 0, 0, CPU_686, CPU_FPU, 0},
+ {"packusdw", sse4_insn, 2, SUF_Z, 0x2B, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"lodsw", onebyte_insn, 1, SUF_Z, 0xAD, 0x10, 0, 0, 0, 0, 0},
+ {"vpalignr", sse4imm_256avx2_insn, 4, SUF_Z, 0x0F, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpmovmskb", pmovmskb_insn, 6, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vinsertf128", vinsertif128_insn, 1, SUF_Z, 0x18, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"paddw", mmxsse2_insn, 2, SUF_Z, 0xFD, 0, 0, 0, CPU_MMX, 0, 0},
+ {"pmvnzb", cyrixmmx_insn, 1, SUF_Z, 0x5A, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
+ {"pabsb", ssse3_insn, 5, SUF_Z, 0x1C, 0, 0, 0, CPU_SSSE3, 0, 0},
+ {"vfnmsub231ss", vfma_ss_insn, 2, SUF_Z, 0xBF, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"pandn", mmxsse2_insn, 2, SUF_Z, 0xDF, 0, 0, 0, CPU_MMX, 0, 0},
+ {"setnl", setcc_insn, 1, SUF_Z, 0x0D, 0, 0, 0, CPU_386, 0, 0},
+ {"vmovupd", movau_insn, 6, SUF_Z, 0x66, 0x10, 0x01, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcvtph2ps", avx_cvtph2ps_insn, 4, SUF_Z, 0x66, 0x13, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vaddsubps", xmm_xmm128_256_insn, 4, SUF_Z, 0xF2, 0xD0, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"sarx", vex_gpr_reg_rm_nds_0F_insn, 2, SUF_Z, 0xF3, 0x38, 0xF7, ONLY_AVX, CPU_BMI2, 0, 0},
+ {"vpcomtrued", vpcom_insn, 1, SUF_Z, 0xCE, 0x07, 0, 0, CPU_XOP, 0, 0},
+ {"vpsllq", vpshift_insn, 8, SUF_Z, 0xF3, 0x73, 0x06, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcmpgtq", ssse3_insn, 5, SUF_Z, 0x37, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmpxchg8b", cmpxchg8b_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_586, 0, 0},
+ {"vfmaddsub132ps", vfma_ps_insn, 2, SUF_Z, 0x96, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vfnmsub231sd", vfma_sd_insn, 2, SUF_Z, 0xBF, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vroundps", avx_sse4imm_insn, 3, SUF_Z, 0x08, 0, 0, ONLY_AVX, CPU_SSE41, 0, 0},
+ {"xchg", xchg_insn, 16, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
+ {"umov", umov_insn, 6, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_Undoc, 0},
+ {"vpbroadcastd", vpbroadcastd_avx2_insn, 4, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"fild", fildstp_insn, 4, SUF_Z, 0x00, 0x02, 0x05, 0, CPU_FPU, 0, 0},
+ {"sldt", sldtmsw_insn, 6, SUF_Z, 0x00, 0x00, 0, 0, CPU_286, 0, 0},
+ {"fdivp", farithp_insn, 3, SUF_Z, 0xF8, 0, 0, 0, CPU_FPU, 0, 0},
+ {"jna", jcc_insn, 9, SUF_Z, 0x06, 0, 0, 0, 0, 0, 0},
+ {"vpcomtrueb", vpcom_insn, 1, SUF_Z, 0xCC, 0x07, 0, 0, CPU_XOP, 0, 0},
+ {"aaa", onebyte_insn, 1, SUF_Z, 0x37, 0, 0, NOT_64, 0, 0, 0},
+ {"bsf", bsfr_insn, 3, SUF_Z, 0xBC, 0, 0, 0, CPU_386, 0, 0},
+ {"dppd", sse4imm_insn, 2, SUF_Z, 0x41, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"cmovnc", cmovcc_insn, 3, SUF_Z, 0x03, 0, 0, 0, CPU_686, 0, 0},
+ {"vpcomltb", vpcom_insn, 1, SUF_Z, 0xCC, 0x00, 0, 0, CPU_XOP, 0, 0},
+ {"cmpss", xmm_xmm32_imm_insn, 4, SUF_Z, 0xF3, 0xC2, 0, 0, CPU_SSE, 0, 0},
+ {"xbts", xbts_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_Obs, CPU_Undoc},
+ {"vmovsd", movsd_insn, 5, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fstsw", fstsw_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_FPU, 0, 0},
+ {"xgetbv", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xD0, 0, CPU_386, CPU_XSAVE, 0},
+ {"vpcomneuq", vpcom_insn, 1, SUF_Z, 0xEF, 0x05, 0, 0, CPU_XOP, 0, 0},
+ {"vcmpneq_usps", ssecmp_128_insn, 3, SUF_Z, 0x14, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"roundss", sse4m32imm_insn, 4, SUF_Z, 0x0A, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vpmacsdqh", vpma_insn, 1, SUF_Z, 0x9F, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vcmpgepd", ssecmp_128_insn, 3, SUF_Z, 0x0D, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vphaddw", ssse3_insn, 5, SUF_Z, 0x01, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fxrstor", twobytemem_insn, 1, SUF_Z, 0x01, 0x0F, 0xAE, 0, CPU_686, CPU_FPU, 0},
+ {"fsave", twobytemem_insn, 1, SUF_Z, 0x06, 0x9B, 0xDD, 0, CPU_FPU, 0, 0},
+ {"hlt", onebyte_insn, 1, SUF_Z, 0xF4, 0, 0, 0, CPU_Priv, 0, 0},
+ {"fldpi", twobyte_insn, 1, SUF_Z, 0xD9, 0xEB, 0, 0, CPU_FPU, 0, 0},
+ {"pavgw", mmxsse2_insn, 2, SUF_Z, 0xE3, 0, 0, 0, CPU_MMX, CPU_P3, 0},
+ {"vfmadd231ps", vfma_ps_insn, 2, SUF_Z, 0xB8, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vpmaxub", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xDE, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"movd", movd_insn, 8, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_MMX, 0},
+ {"pabsw", ssse3_insn, 5, SUF_Z, 0x1D, 0, 0, 0, CPU_SSSE3, 0, 0},
+ {"cpuid", twobyte_insn, 1, SUF_Z, 0x0F, 0xA2, 0, 0, CPU_486, 0, 0},
+ {"pf2iw", now3d_insn, 1, SUF_Z, 0x1C, 0, 0, 0, CPU_3DNow, CPU_Athlon, 0},
+ {"vpcomgeud", vpcom_insn, 1, SUF_Z, 0xEE, 0x03, 0, 0, CPU_XOP, 0, 0},
+ {"vcmpgtss", ssecmp_32_insn, 4, SUF_Z, 0x0E, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpsd", cmpsd_insn, 5, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcomneuw", vpcom_insn, 1, SUF_Z, 0xED, 0x05, 0, 0, CPU_XOP, 0, 0},
+ {"cmpunordpd", ssecmp_128_insn, 3, SUF_Z, 0x03, 0x66, 0, 0, CPU_SSE, 0, 0},
+ {"pause", onebyte_prefix_insn, 1, SUF_Z, 0xF3, 0x90, 0, 0, CPU_P4, 0, 0},
+ {"unpckhpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x15, 0, 0, CPU_SSE2, 0, 0},
+ {"vcmpge_oqsd", ssecmp_64_insn, 4, SUF_Z, 0x1D, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"xadd", cmpxchgxadd_insn, 4, SUF_Z, 0xC0, 0, 0, 0, CPU_486, 0, 0},
+ {"vpmaxuw", ssse3_insn, 5, SUF_Z, 0x3E, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cvtsd2ss", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5A, 0, 0, CPU_SSE2, 0, 0},
+ {"rcr", shift_insn, 16, SUF_Z, 0x03, 0, 0, 0, 0, 0, 0},
+ {"clc", onebyte_insn, 1, SUF_Z, 0xF8, 0, 0, 0, 0, 0, 0},
+ {"vpcomgew", vpcom_insn, 1, SUF_Z, 0xCD, 0x03, 0, 0, CPU_XOP, 0, 0},
+ {"vpminub", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xDA, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"movntps", movnt_insn, 2, SUF_Z, 0x00, 0x2B, 0, 0, CPU_SSE, 0, 0},
+ {"monitor", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xC8, 0, CPU_SSE3, 0, 0},
+ {"vfnmaddss", fma_128_m32_insn, 3, SUF_Z, 0x7A, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"seto", setcc_insn, 1, SUF_Z, 0x00, 0, 0, 0, CPU_386, 0, 0},
+ {"vcmpneqps", ssecmp_128_insn, 3, SUF_Z, 0x04, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmplt_oqps", ssecmp_128_insn, 3, SUF_Z, 0x11, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vmread", vmxmemrd_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_P4, 0, 0},
+ {"vpclmullqlqdq", pclmulqdq_fixed_insn, 2, SUF_Z, 0x00, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"punpckldq", mmxsse2_insn, 2, SUF_Z, 0x62, 0, 0, 0, CPU_MMX, 0, 0},
+ {"vpavgb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xE0, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"psignb", ssse3_insn, 5, SUF_Z, 0x08, 0, 0, 0, CPU_SSSE3, 0, 0},
+ {"fcmovnu", fcmovcc_insn, 1, SUF_Z, 0xDB, 0xD8, 0, 0, CPU_686, CPU_FPU, 0},
+ {"vgatherqps", gather_32x_32y_128_insn, 2, SUF_Z, 0x93, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"vpcomuw", vpcom_imm_insn, 1, SUF_Z, 0xED, 0, 0, 0, CPU_XOP, 0, 0},
+ {"pi2fd", now3d_insn, 1, SUF_Z, 0x0D, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"vpcomq", vpcom_imm_insn, 1, SUF_Z, 0xCF, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vhaddps", xmm_xmm128_256_insn, 4, SUF_Z, 0xF2, 0x7C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vphadddq", vphaddsub_insn, 1, SUF_Z, 0xCB, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vmulsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x59, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"mulx", vex_gpr_reg_nds_rm_0F_insn, 2, SUF_Z, 0xF2, 0x38, 0xF6, ONLY_AVX, CPU_BMI2, 0, 0},
+ {"vpermpd", vperm_imm_avx2_insn, 1, SUF_Z, 0x01, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"vpmovzxbq", sse4m16_insn, 4, SUF_Z, 0x32, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"psraw", pshift_insn, 4, SUF_Z, 0xE1, 0x71, 0x04, 0, CPU_MMX, 0, 0},
+ {"vpermilps", vpermil_insn, 4, SUF_Z, 0x04, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"jno", jcc_insn, 9, SUF_Z, 0x01, 0, 0, 0, 0, 0, 0},
+ {"vcmpordpd", ssecmp_128_insn, 3, SUF_Z, 0x07, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"comisd", xmm_xmm64_insn, 4, SUF_Z, 0x66, 0x2F, 0, 0, CPU_SSE2, 0, 0},
+ {"vfnmaddsd", fma_128_m64_insn, 3, SUF_Z, 0x7B, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"punpckhdq", mmxsse2_insn, 2, SUF_Z, 0x6A, 0, 0, 0, CPU_MMX, 0, 0},
+ {"vcmpnle_uqpd", ssecmp_128_insn, 3, SUF_Z, 0x16, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"aesenclast", aes_insn, 2, SUF_Z, 0x38, 0xDD, 0, 0, CPU_AVX, 0, 0},
+ {"pcmpeqd", mmxsse2_insn, 2, SUF_Z, 0x76, 0, 0, 0, CPU_MMX, 0, 0},
+ {"sha1msg2", intel_SHA1MSG2_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SHA, 0, 0},
+ {"vtestps", sse4_insn, 2, SUF_Z, 0x0E, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pmagw", cyrixmmx_insn, 1, SUF_Z, 0x52, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
+ {"vpinsrw", pinsrw_insn, 9, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"movntq", movntq_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SSE, 0, 0},
+ {"vfmsub231ps", vfma_ps_insn, 2, SUF_Z, 0xBA, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"cmovno", cmovcc_insn, 3, SUF_Z, 0x01, 0, 0, 0, CPU_686, 0, 0},
+ {"punpckhwd", mmxsse2_insn, 2, SUF_Z, 0x69, 0, 0, 0, CPU_MMX, 0, 0},
+ {"movq", movq_insn, 9, SUF_Z, 0, 0, 0, 0, CPU_MMX, 0, 0},
+ {"vfnmsub132pd", vfma_pd_insn, 2, SUF_Z, 0x9E, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"push", push_insn, 35, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
+ {"imul", imul_insn, 19, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
+ {"popfd", onebyte_insn, 1, SUF_Z, 0x9D, 0x20, 0, NOT_64, CPU_386, 0, 0},
+ {"vfmsub213sd", vfma_sd_insn, 2, SUF_Z, 0xAB, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"call", call_insn, 30, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
+ {"pmvzb", cyrixmmx_insn, 1, SUF_Z, 0x58, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
+ {"vsubpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x5C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpsllvq", vpshiftv_vexw1_avx2_insn, 2, SUF_Z, 0x47, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"pclmulhqhqdq", pclmulqdq_fixed_insn, 2, SUF_Z, 0x11, 0, 0, 0, CPU_AVX, 0, 0},
+ {"blsmsk", vex_gpr_ndd_rm_0F38_regext_insn, 2, SUF_Z, 0x00, 0xF3, 0x02, ONLY_AVX, CPU_BMI1, 0, 0},
+ {"vprotb", vprot_insn, 3, SUF_Z, 0x00, 0, 0, 0, CPU_XOP, 0, 0},
+ {"loop", loop_insn, 8, SUF_Z, 0x02, 0, 0, 0, 0, 0, 0},
+ {"jle", jcc_insn, 9, SUF_Z, 0x0E, 0, 0, 0, 0, 0, 0},
+ {"stgi", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xDC, 0, CPU_SVM, 0, 0},
+ {"not", f6_insn, 4, SUF_Z, 0x02, 0, 0, 0, 0, 0, 0},
+ {"svldt", cyrixsmm_insn, 1, SUF_Z, 0x7A, 0, 0, 0, CPU_486, CPU_Cyrix, CPU_SMM},
+ {"vpmaxsd", ssse3_insn, 5, SUF_Z, 0x3D, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"maxss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5F, 0, 0, CPU_SSE, 0, 0},
+ {"vminpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x5D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"blcs", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x01, 0x03, 0, 0, CPU_386, CPU_TBM, 0},
+ {"vpcmpeqw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x75, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"frndint", twobyte_insn, 1, SUF_Z, 0xD9, 0xFC, 0, 0, CPU_FPU, 0, 0},
+ {"vpcmpestrm", sse4pcmpstr_insn, 1, SUF_Z, 0x60, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmpeqss", ssecmp_32_insn, 4, SUF_Z, 0x00, 0xF3, 0, 0, CPU_SSE, 0, 0},
+ {"vfmsubadd213ps", vfma_ps_insn, 2, SUF_Z, 0xA7, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"cmovnl", cmovcc_insn, 3, SUF_Z, 0x0D, 0, 0, 0, CPU_686, 0, 0},
+ {"fldlg2", twobyte_insn, 1, SUF_Z, 0xD9, 0xEC, 0, 0, CPU_FPU, 0, 0},
+ {"clflush", clflush_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_P3, 0, 0},
+ {"iretq", onebyte_insn, 1, SUF_Z, 0xCF, 0x40, 0, ONLY_64, 0, 0, 0},
+ {"vphaddubd", vphaddsub_insn, 1, SUF_Z, 0xD2, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vfnmadd213ps", vfma_ps_insn, 2, SUF_Z, 0xAC, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vmload", svm_rax_insn, 2, SUF_Z, 0xDA, 0, 0, 0, CPU_SVM, 0, 0},
+ {"vpminud", ssse3_insn, 5, SUF_Z, 0x3B, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"packssdw", mmxsse2_insn, 2, SUF_Z, 0x6B, 0, 0, 0, CPU_MMX, 0, 0},
+ {"pcmpeqw", mmxsse2_insn, 2, SUF_Z, 0x75, 0, 0, 0, CPU_MMX, 0, 0},
+ {"js", jcc_insn, 9, SUF_Z, 0x08, 0, 0, 0, 0, 0, 0},
+ {"jpo", jcc_insn, 9, SUF_Z, 0x0B, 0, 0, 0, 0, 0, 0},
+ {"sidt", twobytemem_insn, 1, SUF_Z, 0x01, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
+ {"jnge", jcc_insn, 9, SUF_Z, 0x0C, 0, 0, 0, 0, 0, 0},
+ {"loope", loop_insn, 8, SUF_Z, 0x01, 0, 0, 0, 0, 0, 0},
+ {"invpcid", invpcid_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_INVPCID, CPU_Priv},
+ {"pavgb", mmxsse2_insn, 2, SUF_Z, 0xE0, 0, 0, 0, CPU_MMX, CPU_P3, 0},
+ {"pminsd", sse4_insn, 2, SUF_Z, 0x39, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"cmovnb", cmovcc_insn, 3, SUF_Z, 0x03, 0, 0, 0, CPU_686, 0, 0},
+ {"mulsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x59, 0, 0, CPU_SSE2, 0, 0},
+ {"vcmpgt_oqsd", ssecmp_64_insn, 4, SUF_Z, 0x1E, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"blsr", vex_gpr_ndd_rm_0F38_regext_insn, 2, SUF_Z, 0x00, 0xF3, 0x01, ONLY_AVX, CPU_BMI1, 0, 0},
+ {"vcmplt_oqss", ssecmp_32_insn, 4, SUF_Z, 0x11, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfnmsub213sd", vfma_sd_insn, 2, SUF_Z, 0xAF, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"shrd", shlrd_insn, 9, SUF_Z, 0xAC, 0, 0, 0, CPU_386, 0, 0},
+ {"vpackuswb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x67, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"paddd", mmxsse2_insn, 2, SUF_Z, 0xFE, 0, 0, 0, CPU_MMX, 0, 0},
+ {"vcmpeq_osps", ssecmp_128_insn, 3, SUF_Z, 0x10, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vaddpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x58, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpbroadcastb", vpbroadcastb_avx2_insn, 4, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"pmuludq", mmxsse2_insn, 2, SUF_Z, 0xF4, 0, 0, 0, CPU_SSE2, 0, 0},
+ {"cmpnltsd", ssecmp_64_insn, 4, SUF_Z, 0x05, 0xF2, 0, 0, CPU_SSE2, 0, 0},
+ {"vcmpgt_oqpd", ssecmp_128_insn, 3, SUF_Z, 0x1E, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcmpgtb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x64, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcomfalseq", vpcom_insn, 1, SUF_Z, 0xCF, 0x06, 0, 0, CPU_XOP, 0, 0},
+ {"vcmpgtpd", ssecmp_128_insn, 3, SUF_Z, 0x0E, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfnmadd231ps", vfma_ps_insn, 2, SUF_Z, 0xBC, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"paddusb", mmxsse2_insn, 2, SUF_Z, 0xDC, 0, 0, 0, CPU_MMX, 0, 0},
+ {"vcmpnge_uqpd", ssecmp_128_insn, 3, SUF_Z, 0x19, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmpps", xmm_xmm128_imm_insn, 1, SUF_Z, 0x00, 0xC2, 0, 0, CPU_SSE, 0, 0},
+ {"vsqrtsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x51, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"setnp", setcc_insn, 1, SUF_Z, 0x0B, 0, 0, 0, CPU_386, 0, 0},
+ {"vpcmpeqb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x74, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"psubsb", mmxsse2_insn, 2, SUF_Z, 0xE8, 0, 0, 0, CPU_MMX, 0, 0},
+ {"vzeroall", vzero_insn, 1, SUF_Z, 0xC4, 0, 0, 0, CPU_AVX, 0, 0},
+ {"jo", jcc_insn, 9, SUF_Z, 0x00, 0, 0, 0, 0, 0, 0},
+ {"vpmovzxwd", sse4m64_insn, 4, SUF_Z, 0x33, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpminsw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xEA, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"bswap", bswap_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_486, 0, 0},
+ {"movntpd", movnt_insn, 2, SUF_Z, 0x66, 0x2B, 0, 0, CPU_SSE2, 0, 0},
+ {"paddb", mmxsse2_insn, 2, SUF_Z, 0xFC, 0, 0, 0, CPU_MMX, 0, 0},
+ {"vpmaskmovq", vmaskmov_vexw1_avx2_insn, 4, SUF_Z, 0x8C, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"vfnmsub213pd", vfma_pd_insn, 2, SUF_Z, 0xAE, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"jng", jcc_insn, 9, SUF_Z, 0x0E, 0, 0, 0, 0, 0, 0},
+ {"vcmpngeps", ssecmp_128_insn, 3, SUF_Z, 0x09, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"minss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5D, 0, 0, CPU_SSE, 0, 0},
+ {"vpsubusb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xD8, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vsqrtps", avx_xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x51, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fclex", threebyte_insn, 1, SUF_Z, 0x9B, 0xDB, 0xE2, 0, CPU_FPU, 0, 0},
+ {"pmovzxbq", sse4m16_insn, 4, SUF_Z, 0x32, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vextracti128", vextractif128_insn, 1, SUF_Z, 0x39, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"pcmpistri", sse4pcmpstr_insn, 1, SUF_Z, 0x63, 0, 0, 0, CPU_SSE42, 0, 0},
+ {"ucomisd", xmm_xmm64_insn, 4, SUF_Z, 0x66, 0x2E, 0, 0, CPU_SSE2, 0, 0},
+ {"vmwrite", vmxmemwr_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_P4, 0, 0},
+ {"pfacc", now3d_insn, 1, SUF_Z, 0xAE, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"lldt", prot286_insn, 1, SUF_Z, 0x02, 0x00, 0, 0, CPU_286, CPU_Priv, CPU_Prot},
+ {"fincstp", twobyte_insn, 1, SUF_Z, 0xD9, 0xF7, 0, 0, CPU_FPU, 0, 0},
+ {"vcmpps", xmm_xmm128_imm_256_insn, 3, SUF_Z, 0x00, 0xC2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fcomp", fcom_insn, 6, SUF_Z, 0xD8, 0x03, 0, 0, CPU_FPU, 0, 0},
+ {"pmullw", mmxsse2_insn, 2, SUF_Z, 0xD5, 0, 0, 0, CPU_MMX, 0, 0},
+ {"cqo", onebyte_insn, 1, SUF_Z, 0x99, 0x40, 0, ONLY_64, 0, 0, 0},
+ {"blendvps", sse4xmm0_insn, 2, SUF_Z, 0x14, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vpcomfalseud", vpcom_insn, 1, SUF_Z, 0xEE, 0x06, 0, 0, CPU_XOP, 0, 0},
+ {"vpsignw", ssse3_insn, 5, SUF_Z, 0x09, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"lgs", lfgss_insn, 3, SUF_Z, 0xB5, 0, 0, 0, CPU_386, 0, 0},
+ {"vfmaddpd", fma_128_256_insn, 4, SUF_Z, 0x69, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"vcmpnge_uqss", ssecmp_32_insn, 4, SUF_Z, 0x19, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"minps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x5D, 0, 0, CPU_SSE, 0, 0},
+ {"aesdec", aes_insn, 2, SUF_Z, 0x38, 0xDE, 0, 0, CPU_AVX, 0, 0},
+ {"vpsignb", ssse3_insn, 5, SUF_Z, 0x08, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pminud", sse4_insn, 2, SUF_Z, 0x3B, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vpcomuq", vpcom_imm_insn, 1, SUF_Z, 0xEF, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vpmaxsw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xEE, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vmmcall", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xD9, 0, CPU_SVM, 0, 0},
+ {"vpunpckldq", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x62, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fcompp", twobyte_insn, 1, SUF_Z, 0xDE, 0xD9, 0, 0, CPU_FPU, 0, 0},
+ {"vcmpneq_ussd", ssecmp_64_insn, 4, SUF_Z, 0x14, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcomneqd", vpcom_insn, 1, SUF_Z, 0xCE, 0x05, 0, 0, CPU_XOP, 0, 0},
+ {"pblendw", sse4imm_insn, 2, SUF_Z, 0x0E, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vmovq", vmovq_insn, 5, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"haddps", xmm_xmm128_insn, 2, SUF_Z, 0xF2, 0x7C, 0, 0, CPU_SSE3, 0, 0},
+ {"svts", cyrixsmm_insn, 1, SUF_Z, 0x7C, 0, 0, 0, CPU_486, CPU_Cyrix, CPU_SMM},
+ {"o16", NULL, X86_OPERSIZE>>8, 0x10, 0, 0, 0, 0, 0, 0, 0},
+ {"rcl", shift_insn, 16, SUF_Z, 0x02, 0, 0, 0, 0, 0, 0},
+ {"jge", jcc_insn, 9, SUF_Z, 0x0D, 0, 0, 0, 0, 0, 0},
+ {"pfrcpit1", now3d_insn, 1, SUF_Z, 0xA6, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"pminsb", sse4_insn, 2, SUF_Z, 0x38, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"daa", onebyte_insn, 1, SUF_Z, 0x27, 0, 0, NOT_64, 0, 0, 0},
+ {"vpcomtrueub", vpcom_insn, 1, SUF_Z, 0xEC, 0x07, 0, 0, CPU_XOP, 0, 0},
+ {"andnpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x55, 0, 0, CPU_SSE2, 0, 0},
+ {"stosw", onebyte_insn, 1, SUF_Z, 0xAB, 0x10, 0, 0, 0, 0, 0},
+ {"vpabsw", avx2_ssse3_2op_insn, 2, SUF_Z, 0x1D, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pfrsqit1", now3d_insn, 1, SUF_Z, 0xA7, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"sqrtps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x51, 0, 0, CPU_SSE, 0, 0},
+ {"fnsave", onebytemem_insn, 1, SUF_Z, 0x06, 0xDD, 0, 0, CPU_FPU, 0, 0},
+ {"vpcomleuw", vpcom_insn, 1, SUF_Z, 0xED, 0x01, 0, 0, CPU_XOP, 0, 0},
+ {"cvtdq2ps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x5B, 0, 0, CPU_SSE2, 0, 0},
+ {"vcvtsd2ss", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5A, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vdivpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x5E, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpneq_ospd", ssecmp_128_insn, 3, SUF_Z, 0x1C, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"wrgsbase", fs_gs_base_insn, 2, SUF_Z, 0x03, 0, 0, ONLY_64, CPU_FSGSBASE, 0, 0},
+ {"add", arith_insn, 22, SUF_Z, 0x00, 0x00, 0, 0, 0, 0, 0},
+ {"smi", onebyte_insn, 1, SUF_Z, 0xF1, 0, 0, 0, CPU_386, CPU_Undoc, 0},
+ {"vpcomequq", vpcom_insn, 1, SUF_Z, 0xEF, 0x04, 0, 0, CPU_XOP, 0, 0},
+ {"movapd", movau_insn, 6, SUF_Z, 0x66, 0x28, 0x01, 0, CPU_SSE2, 0, 0},
+ {"vpmulhw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xE5, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cvttps2dq", xmm_xmm128_insn, 2, SUF_Z, 0xF3, 0x5B, 0, 0, CPU_SSE2, 0, 0},
+ {"addss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x58, 0, 0, CPU_SSE, 0, 0},
+ {"rsqrtss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x52, 0, 0, CPU_SSE, 0, 0},
+ {"vpperm", vpperm_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vpcomnequq", vpcom_insn, 1, SUF_Z, 0xEF, 0x05, 0, 0, CPU_XOP, 0, 0},
+ {"vcvttsd2si", cvt_rx_xmm64_insn, 4, SUF_Z, 0xF2, 0x2C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pmulhriw", cyrixmmx_insn, 1, SUF_Z, 0x5D, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
+ {"mul", f6_insn, 4, SUF_Z, 0x04, 0, 0, 0, 0, 0, 0},
+ {"ucomiss", xmm_xmm32_insn, 4, SUF_Z, 0x00, 0x2E, 0, 0, CPU_SSE, 0, 0},
+ {"vpcomneqb", vpcom_insn, 1, SUF_Z, 0xCC, 0x05, 0, 0, CPU_XOP, 0, 0},
+ {"vpsllw", vpshift_insn, 8, SUF_Z, 0xF1, 0x71, 0x06, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcomfalseb", vpcom_insn, 1, SUF_Z, 0xCC, 0x06, 0, 0, CPU_XOP, 0, 0},
+ {"vpmovsxwd", sse4m64_insn, 4, SUF_Z, 0x23, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"xend", tsx_0x0F_0x01_insn, 1, SUF_Z, 0xD5, 0, 0, 0, CPU_TSX, 0, 0},
+ {"pshufd", xmm_xmm128_imm_insn, 1, SUF_Z, 0x66, 0x70, 0, 0, CPU_SSE2, 0, 0},
+ {"jnc", jcc_insn, 9, SUF_Z, 0x03, 0, 0, 0, 0, 0, 0},
+ {"vcmpnleps", ssecmp_128_insn, 3, SUF_Z, 0x06, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"psrldq", pslrldq_insn, 4, SUF_Z, 0x03, 0, 0, 0, CPU_SSE2, 0, 0},
+ {"setb", setcc_insn, 1, SUF_Z, 0x02, 0, 0, 0, CPU_386, 0, 0},
+ {"pinsrw", pinsrw_insn, 9, SUF_Z, 0, 0, 0, 0, CPU_MMX, CPU_P3, 0},
+ {"jnae", jcc_insn, 9, SUF_Z, 0x02, 0, 0, 0, 0, 0, 0},
+ {"movupd", movau_insn, 6, SUF_Z, 0x66, 0x10, 0x01, 0, CPU_SSE2, 0, 0},
+ {"vcmptrue_ussd", ssecmp_64_insn, 4, SUF_Z, 0x1F, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fcmovbe", fcmovcc_insn, 1, SUF_Z, 0xDA, 0xD0, 0, 0, CPU_686, CPU_FPU, 0},
+ {"movups", movau_insn, 6, SUF_Z, 0x00, 0x10, 0x01, 0, CPU_SSE, 0, 0},
+ {"fyl2x", twobyte_insn, 1, SUF_Z, 0xD9, 0xF1, 0, 0, CPU_FPU, 0, 0},
+ {"stosd", onebyte_insn, 1, SUF_Z, 0xAB, 0x20, 0, 0, CPU_386, 0, 0},
+ {"vcmple_oqss", ssecmp_32_insn, 4, SUF_Z, 0x12, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"jb", jcc_insn, 9, SUF_Z, 0x02, 0, 0, 0, 0, 0, 0},
+ {"vpcomfalseub", vpcom_insn, 1, SUF_Z, 0xEC, 0x06, 0, 0, CPU_XOP, 0, 0},
+ {"fxam", twobyte_insn, 1, SUF_Z, 0xD9, 0xE5, 0, 0, CPU_FPU, 0, 0},
+ {"vmresume", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xC3, 0, CPU_P4, 0, 0},
+ {"vcmpneq_osss", ssecmp_32_insn, 4, SUF_Z, 0x1C, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"swapgs", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xF8, ONLY_64, 0, 0, 0},
+ {"vpunpckhqdq", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x6D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"prefetcht2", twobytemem_insn, 1, SUF_Z, 0x03, 0x0F, 0x18, 0, CPU_P3, 0, 0},
+ {"pmachriw", pmachriw_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
+ {"aas", onebyte_insn, 1, SUF_Z, 0x3F, 0, 0, NOT_64, 0, 0, 0},
+ {"fldz", twobyte_insn, 1, SUF_Z, 0xD9, 0xEE, 0, 0, CPU_FPU, 0, 0},
+ {"vcmppd", xmm_xmm128_imm_256_insn, 3, SUF_Z, 0x66, 0xC2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"retf", retnf_insn, 6, SUF_Z, 0xCA, 0x40, 0, 0, 0, 0, 0},
+ {"iretw", onebyte_insn, 1, SUF_Z, 0xCF, 0x10, 0, 0, 0, 0, 0},
+ {"pclmulhqlqdq", pclmulqdq_fixed_insn, 2, SUF_Z, 0x01, 0, 0, 0, CPU_AVX, 0, 0},
+ {"vpcomgtw", vpcom_insn, 1, SUF_Z, 0xCD, 0x02, 0, 0, CPU_XOP, 0, 0},
+ {"pfcmpeq", now3d_insn, 1, SUF_Z, 0xB0, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"mfence", threebyte_insn, 1, SUF_Z, 0x0F, 0xAE, 0xF0, 0, CPU_P3, 0, 0},
+ {"vprotq", vprot_insn, 3, SUF_Z, 0x03, 0, 0, 0, CPU_XOP, 0, 0},
+ {"jae", jcc_insn, 9, SUF_Z, 0x03, 0, 0, 0, 0, 0, 0},
+ {"fpatan", twobyte_insn, 1, SUF_Z, 0xD9, 0xF3, 0, 0, CPU_FPU, 0, 0},
+ {"pfsub", now3d_insn, 1, SUF_Z, 0x9A, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"pmaxsb", sse4_insn, 2, SUF_Z, 0x3C, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vcmpltsd", ssecmp_64_insn, 4, SUF_Z, 0x01, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcomnequb", vpcom_insn, 1, SUF_Z, 0xEC, 0x05, 0, 0, CPU_XOP, 0, 0},
+ {"insw", onebyte_insn, 1, SUF_Z, 0x6D, 0x10, 0, 0, 0, 0, 0},
+ {"vfmsub132sd", vfma_sd_insn, 2, SUF_Z, 0x9B, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"prefetchw", twobytemem_insn, 1, SUF_Z, 0x01, 0x0F, 0x0D, 0, CPU_PRFCHW, 0, 0},
+ {"vlddqu", lddqu_insn, 2, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpfalsepd", ssecmp_128_insn, 3, SUF_Z, 0x0B, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmpxchg16b", cmpxchg16b_insn, 1, SUF_Z, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"vpmaddubsw", ssse3_insn, 5, SUF_Z, 0x04, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"smsw", sldtmsw_insn, 6, SUF_Z, 0x04, 0x01, 0, 0, CPU_286, 0, 0},
+ {"movlpd", movhlp_insn, 3, SUF_Z, 0x66, 0x12, 0, 0, CPU_SSE2, 0, 0},
+ {"vcmpngess", ssecmp_32_insn, 4, SUF_Z, 0x09, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"maskmovq", maskmovq_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_MMX, CPU_P3, 0},
+ {"cmovae", cmovcc_insn, 3, SUF_Z, 0x03, 0, 0, 0, CPU_686, 0, 0},
+ {"setnae", setcc_insn, 1, SUF_Z, 0x02, 0, 0, 0, CPU_386, 0, 0},
+ {"vminss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcomgeub", vpcom_insn, 1, SUF_Z, 0xEC, 0x03, 0, 0, CPU_XOP, 0, 0},
+ {"jns", jcc_insn, 9, SUF_Z, 0x09, 0, 0, 0, 0, 0, 0},
+ {"ibts", ibts_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_Obs, CPU_Undoc},
+ {"je", jcc_insn, 9, SUF_Z, 0x04, 0, 0, 0, 0, 0, 0},
+ {"pmovsxbw", sse4m64_insn, 4, SUF_Z, 0x20, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vunpckhps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x15, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vbroadcasti128", vbroadcastif128_insn, 1, SUF_Z, 0x5A, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"cld", onebyte_insn, 1, SUF_Z, 0xFC, 0, 0, 0, 0, 0, 0},
+ {"ud1", twobyte_insn, 1, SUF_Z, 0x0F, 0xB9, 0, 0, CPU_286, CPU_Undoc, 0},
+ {"vmovups", movau_insn, 6, SUF_Z, 0x00, 0x10, 0x01, ONLY_AVX, CPU_AVX, 0, 0},
+ {"f2xm1", twobyte_insn, 1, SUF_Z, 0xD9, 0xF0, 0, 0, CPU_FPU, 0, 0},
+ {"vcmpneq_uspd", ssecmp_128_insn, 3, SUF_Z, 0x14, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfnmadd231ss", vfma_ss_insn, 2, SUF_Z, 0xBD, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vcmpneq_oqss", ssecmp_32_insn, 4, SUF_Z, 0x0C, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpor", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xEB, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"jrcxz", jcxz_insn, 2, SUF_Z, 0x40, 0, 0, ONLY_64, 0, 0, 0},
+ {"vpand", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xDB, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpminsd", ssse3_insn, 5, SUF_Z, 0x39, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcomgtuq", vpcom_insn, 1, SUF_Z, 0xEF, 0x02, 0, 0, CPU_XOP, 0, 0},
+ {"vpmovzxbw", sse4m64_insn, 4, SUF_Z, 0x30, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcomtrueud", vpcom_insn, 1, SUF_Z, 0xEE, 0x07, 0, 0, CPU_XOP, 0, 0},
+ {"vpcomneb", vpcom_insn, 1, SUF_Z, 0xCC, 0x05, 0, 0, CPU_XOP, 0, 0},
+ {"cvttps2pi", cvt_mm_xmm64_insn, 2, SUF_Z, 0x2C, 0, 0, 0, CPU_SSE, 0, 0},
+ {"movmskpd", movmsk_insn, 4, SUF_Z, 0x66, 0, 0, 0, CPU_SSE2, 0, 0},
+ {"pfsubr", now3d_insn, 1, SUF_Z, 0xAA, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"vsubss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"invvpid", eptvpid_insn, 2, SUF_Z, 0x01, 0, 0, 0, CPU_386, CPU_EPTVPID, 0},
+ {"cmpleps", ssecmp_128_insn, 3, SUF_Z, 0x02, 0, 0, 0, CPU_SSE, 0, 0},
+ {"vpavgw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xE3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vmovhlps", movhllhps_insn, 2, SUF_Z, 0x12, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpeq_uqpd", ssecmp_128_insn, 3, SUF_Z, 0x08, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"maxps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x5F, 0, 0, CPU_SSE, 0, 0},
+ {"insb", onebyte_insn, 1, SUF_Z, 0x6C, 0x00, 0, 0, 0, 0, 0},
+ {"vpmaxsb", ssse3_insn, 5, SUF_Z, 0x3C, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmplepd", ssecmp_128_insn, 3, SUF_Z, 0x02, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"popad", onebyte_insn, 1, SUF_Z, 0x61, 0x20, 0, NOT_64, CPU_386, 0, 0},
+ {"cmovnge", cmovcc_insn, 3, SUF_Z, 0x0C, 0, 0, 0, CPU_686, 0, 0},
+ {"unpckhps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x15, 0, 0, CPU_SSE, 0, 0},
+ {"cmovpo", cmovcc_insn, 3, SUF_Z, 0x0B, 0, 0, 0, CPU_686, 0, 0},
+ {"setnb", setcc_insn, 1, SUF_Z, 0x03, 0, 0, 0, CPU_386, 0, 0},
+ {"sbb", arith_insn, 22, SUF_Z, 0x18, 0x03, 0, 0, 0, 0, 0},
+ {"divpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x5E, 0, 0, CPU_SSE2, 0, 0},
+ {"vbroadcastf128", vbroadcastif128_insn, 1, SUF_Z, 0x1A, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"insd", onebyte_insn, 1, SUF_Z, 0x6D, 0x20, 0, 0, CPU_386, 0, 0},
+ {"invept", eptvpid_insn, 2, SUF_Z, 0x00, 0, 0, 0, CPU_386, CPU_EPTVPID, 0},
+ {"vmaxsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5F, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmpsw", onebyte_insn, 1, SUF_Z, 0xA7, 0x10, 0, 0, 0, 0, 0},
+ {"vcmpeqss", ssecmp_32_insn, 4, SUF_Z, 0x00, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"mulps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x59, 0, 0, CPU_SSE, 0, 0},
+ {"vaddps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x58, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpgeps", ssecmp_128_insn, 3, SUF_Z, 0x0D, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfrczps", vfrc_pdps_insn, 2, SUF_Z, 0x00, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vcmpeq_uqss", ssecmp_32_insn, 4, SUF_Z, 0x08, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"sysexit", twobyte_insn, 1, SUF_Z, 0x0F, 0x35, 0, NOT_64, CPU_686, CPU_Priv, 0},
+ {"xor", arith_insn, 22, SUF_Z, 0x30, 0x06, 0, 0, 0, 0, 0},
+ {"pshuflw", xmm_xmm128_imm_insn, 1, SUF_Z, 0xF2, 0x70, 0, 0, CPU_SSE2, 0, 0},
+ {"vfrczpd", vfrc_pdps_insn, 2, SUF_Z, 0x01, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vpcomleud", vpcom_insn, 1, SUF_Z, 0xEE, 0x01, 0, 0, CPU_XOP, 0, 0},
+ {"vpcomlew", vpcom_insn, 1, SUF_Z, 0xCD, 0x01, 0, 0, CPU_XOP, 0, 0},
+ {"addps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x58, 0, 0, CPU_SSE, 0, 0},
+ {"vpsraw", vpshift_insn, 8, SUF_Z, 0xE1, 0x71, 0x04, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcomiss", avx_xmm_xmm32_insn, 2, SUF_Z, 0x00, 0x2F, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpngtpd", ssecmp_128_insn, 3, SUF_Z, 0x0A, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmpnltpd", ssecmp_128_insn, 3, SUF_Z, 0x05, 0x66, 0, 0, CPU_SSE, 0, 0},
+ {"sqrtsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x51, 0, 0, CPU_SSE2, 0, 0},
+ {"pfrsqrt", now3d_insn, 1, SUF_Z, 0x97, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"scasw", onebyte_insn, 1, SUF_Z, 0xAF, 0x10, 0, 0, 0, 0, 0},
+ {"pinsrd", pinsrd_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_SSE41, 0},
+ {"vaesenclast", aes_insn, 2, SUF_Z, 0x38, 0xDD, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"rdtscp", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xF9, 0, CPU_686, CPU_AMD, CPU_Priv},
+ {"vcmpeq_ospd", ssecmp_128_insn, 3, SUF_Z, 0x10, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"div", div_insn, 8, SUF_Z, 0x06, 0, 0, 0, 0, 0, 0},
+ {"cvtpd2pi", cvt_mm_xmm_insn, 1, SUF_Z, 0x66, 0x2D, 0, 0, CPU_SSE2, 0, 0},
+ {"vcmpltss", ssecmp_32_insn, 4, SUF_Z, 0x01, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vphaddwq", vphaddsub_insn, 1, SUF_Z, 0xC7, 0, 0, 0, CPU_XOP, 0, 0},
+ {"cmovz", cmovcc_insn, 3, SUF_Z, 0x04, 0, 0, 0, CPU_686, 0, 0},
+ {"vpcomltud", vpcom_insn, 1, SUF_Z, 0xEE, 0x00, 0, 0, CPU_XOP, 0, 0},
+ {"ret", retnf_insn, 6, SUF_Z, 0xC2, 0, 0, 0, 0, 0, 0},
+ {"vpshaw", amd_vpshift_insn, 2, SUF_Z, 0x99, 0, 0, 0, CPU_XOP, 0, 0},
+ {"pblendvb", sse4xmm0_insn, 2, SUF_Z, 0x10, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"pinsrq", pinsrq_insn, 2, SUF_Z, 0, 0, 0, ONLY_64, CPU_SSE41, 0, 0},
+ {"vmulpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x59, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pmaxsd", sse4_insn, 2, SUF_Z, 0x3D, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"cmovne", cmovcc_insn, 3, SUF_Z, 0x05, 0, 0, 0, CPU_686, 0, 0},
+ {"ltr", prot286_insn, 1, SUF_Z, 0x03, 0x00, 0, 0, CPU_286, CPU_Priv, CPU_Prot},
+ {"fdecstp", twobyte_insn, 1, SUF_Z, 0xD9, 0xF6, 0, 0, CPU_FPU, 0, 0},
+ {"lsl", larlsl_insn, 6, SUF_Z, 0x03, 0, 0, 0, CPU_286, CPU_Prot, 0},
+ {"pcmpgtb", mmxsse2_insn, 2, SUF_Z, 0x64, 0, 0, 0, CPU_MMX, 0, 0},
+ {"psrld", pshift_insn, 4, SUF_Z, 0xD2, 0x72, 0x02, 0, CPU_MMX, 0, 0},
+ {"xsave", twobytemem_insn, 1, SUF_Z, 0x04, 0x0F, 0xAE, 0, CPU_386, CPU_XSAVE, 0},
+ {"hsubps", xmm_xmm128_insn, 2, SUF_Z, 0xF2, 0x7D, 0, 0, CPU_SSE3, 0, 0},
+ {"sti", onebyte_insn, 1, SUF_Z, 0xFB, 0, 0, 0, 0, 0, 0},
+ {"pfcmpge", now3d_insn, 1, SUF_Z, 0x90, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"setnz", setcc_insn, 1, SUF_Z, 0x05, 0, 0, 0, CPU_386, 0, 0},
+ {"vaesdeclast", aes_insn, 2, SUF_Z, 0x38, 0xDF, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfnmadd213ss", vfma_ss_insn, 2, SUF_Z, 0xAD, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"pcmpestri", sse4pcmpstr_insn, 1, SUF_Z, 0x61, 0, 0, 0, CPU_SSE42, 0, 0},
+ {"vpcmpeqq", ssse3_insn, 5, SUF_Z, 0x29, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fmul", farith_insn, 7, SUF_Z, 0xC8, 0xC8, 0x01, 0, CPU_FPU, 0, 0},
+ {"vmovntpd", movnt_insn, 2, SUF_Z, 0x66, 0x2B, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpmadcsswd", vpma_insn, 1, SUF_Z, 0xA6, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vcmpngt_uqps", ssecmp_128_insn, 3, SUF_Z, 0x1A, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"svdc", svdc_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_486, CPU_Cyrix, CPU_SMM},
+ {"orpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x56, 0, 0, CPU_SSE2, 0, 0},
+ {"fdivrp", farithp_insn, 3, SUF_Z, 0xF0, 0, 0, 0, CPU_FPU, 0, 0},
+ {"vgatherdps", gather_32x_32y_insn, 2, SUF_Z, 0x92, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"packsswb", mmxsse2_insn, 2, SUF_Z, 0x63, 0, 0, 0, CPU_MMX, 0, 0},
+ {"scasd", onebyte_insn, 1, SUF_Z, 0xAF, 0x20, 0, 0, CPU_386, 0, 0},
+ {"vfmsub231pd", vfma_pd_insn, 2, SUF_Z, 0xBA, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"fptan", twobyte_insn, 1, SUF_Z, 0xD9, 0xF2, 0, 0, CPU_FPU, 0, 0},
+ {"vpcomd", vpcom_imm_insn, 1, SUF_Z, 0xCE, 0, 0, 0, CPU_XOP, 0, 0},
+ {"cvtsi2sd", cvt_xmm_rmx_insn, 6, SUF_Z, 0xF2, 0x2A, 0, 0, CPU_SSE2, 0, 0},
+ {"vphsubwd", vphaddsub_insn, 1, SUF_Z, 0xE2, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vcmpnlt_uqpd", ssecmp_128_insn, 3, SUF_Z, 0x15, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmpneqpd", ssecmp_128_insn, 3, SUF_Z, 0x04, 0x66, 0, 0, CPU_SSE, 0, 0},
+ {"ud2", twobyte_insn, 1, SUF_Z, 0x0F, 0x0B, 0, 0, CPU_286, 0, 0},
+ {"andps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x54, 0, 0, CPU_SSE, 0, 0},
+ {"vorpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x56, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"lmsw", prot286_insn, 1, SUF_Z, 0x06, 0x01, 0, 0, CPU_286, CPU_Priv, 0},
+ {"tzmsk", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x01, 0x04, 0, 0, CPU_386, CPU_TBM, 0},
+ {"vdppd", sse4imm_insn, 2, SUF_Z, 0x41, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"smintold", twobyte_insn, 1, SUF_Z, 0x0F, 0x7E, 0, 0, CPU_486, CPU_Cyrix, CPU_Obs},
+ {"smint", twobyte_insn, 1, SUF_Z, 0x0F, 0x38, 0, 0, CPU_686, CPU_Cyrix, 0},
+ {"vcmpnlt_uqss", ssecmp_32_insn, 4, SUF_Z, 0x15, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmovs", cmovcc_insn, 3, SUF_Z, 0x08, 0, 0, 0, CPU_686, 0, 0},
+ {"vpcomequw", vpcom_insn, 1, SUF_Z, 0xED, 0x04, 0, 0, CPU_XOP, 0, 0},
+ {"cvttsd2si", cvt_rx_xmm64_insn, 4, SUF_Z, 0xF2, 0x2C, 0, 0, CPU_SSE2, 0, 0},
+ {"vcmpge_oqss", ssecmp_32_insn, 4, SUF_Z, 0x1D, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"minpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x5D, 0, 0, CPU_SSE2, 0, 0},
+ {"por", mmxsse2_insn, 2, SUF_Z, 0xEB, 0, 0, 0, CPU_MMX, 0, 0},
+ {"vcmpfalseps", ssecmp_128_insn, 3, SUF_Z, 0x0B, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vaddsubpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0xD0, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vmxon", vmxthreebytemem_insn, 1, SUF_Z, 0xF3, 0, 0, 0, CPU_P4, 0, 0},
+ {"fldln2", twobyte_insn, 1, SUF_Z, 0xD9, 0xED, 0, 0, CPU_FPU, 0, 0},
+ {"pfpnacc", now3d_insn, 1, SUF_Z, 0x8E, 0, 0, 0, CPU_3DNow, CPU_Athlon, 0},
+ {"lfs", lfgss_insn, 3, SUF_Z, 0xB4, 0, 0, 0, CPU_386, 0, 0},
+ {"vmovlps", movhlp_insn, 3, SUF_Z, 0x00, 0x12, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcvtsi2sd", cvt_xmm_rmx_insn, 6, SUF_Z, 0xF2, 0x2A, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcvtdq2ps", avx_xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x5B, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcvtss2sd", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5A, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpge_oqpd", ssecmp_128_insn, 3, SUF_Z, 0x1D, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfmsub132pd", vfma_pd_insn, 2, SUF_Z, 0x9A, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vpblendw", sse4imm_256avx2_insn, 4, SUF_Z, 0x0E, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pmulhrw", now3d_insn, 1, SUF_Z, 0xB7, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"vcmpless", ssecmp_32_insn, 4, SUF_Z, 0x02, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"movntss", movntss_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SSE4a, 0, 0},
+ {"vpandn", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xDF, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pextrd", pextrd_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_SSE41, 0},
+ {"divsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5E, 0, 0, CPU_SSE2, 0, 0},
+ {"pmaxud", sse4_insn, 2, SUF_Z, 0x3F, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"pfmul", now3d_insn, 1, SUF_Z, 0xB4, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"vmaxpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x5F, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vgatherdpd", gather_64x_64x_insn, 2, SUF_Z, 0x92, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"movnti", movnti_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_P4, 0, 0},
+ {"pxor", mmxsse2_insn, 2, SUF_Z, 0xEF, 0, 0, 0, CPU_MMX, 0, 0},
+ {"vpmovsxbw", sse4m64_insn, 4, SUF_Z, 0x20, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vmovhps", movhlp_insn, 3, SUF_Z, 0x00, 0x16, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"jbe", jcc_insn, 9, SUF_Z, 0x06, 0, 0, 0, 0, 0, 0},
+ {"outsw", onebyte_insn, 1, SUF_Z, 0x6F, 0x10, 0, 0, 0, 0, 0},
+ {"vcmpngt_uqpd", ssecmp_128_insn, 3, SUF_Z, 0x1A, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpeqpd", ssecmp_128_insn, 3, SUF_Z, 0x00, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpermd", vperm_var_avx2_insn, 1, SUF_Z, 0x36, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"vpcomltuw", vpcom_insn, 1, SUF_Z, 0xED, 0x00, 0, 0, CPU_XOP, 0, 0},
+ {"wrshr", rdwrshr_insn, 1, SUF_Z, 0x01, 0, 0, 0, CPU_686, CPU_Cyrix, CPU_SMM},
+ {"vmxoff", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xC4, 0, CPU_P4, 0, 0},
+ {"paddq", mmxsse2_insn, 2, SUF_Z, 0xD4, 0, 0, 0, CPU_MMX, 0, 0},
+ {"fstcw", fstcw_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_FPU, 0, 0},
+ {"setnle", setcc_insn, 1, SUF_Z, 0x0F, 0, 0, 0, CPU_386, 0, 0},
+ {"cbw", onebyte_insn, 1, SUF_Z, 0x98, 0x10, 0, 0, 0, 0, 0},
+ {"vfmsub213ss", vfma_ss_insn, 2, SUF_Z, 0xAB, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"pfmax", now3d_insn, 1, SUF_Z, 0xA4, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"jnb", jcc_insn, 9, SUF_Z, 0x03, 0, 0, 0, 0, 0, 0},
+ {"blendps", sse4imm_insn, 2, SUF_Z, 0x0C, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"fsincos", twobyte_insn, 1, SUF_Z, 0xD9, 0xFB, 0, 0, CPU_286, CPU_FPU, 0},
+ {"vfmadd231ss", vfma_ss_insn, 2, SUF_Z, 0xB9, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"fld1", twobyte_insn, 1, SUF_Z, 0xD9, 0xE8, 0, 0, CPU_FPU, 0, 0},
+ {"t1mskc", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x01, 0x07, 0, 0, CPU_386, CPU_TBM, 0},
+ {"xabort", tsx_xabort_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_TSX, 0, 0},
+ {"pextrw", pextrw_insn, 7, SUF_Z, 0, 0, 0, 0, CPU_MMX, CPU_P3, 0},
+ {"vfnmsub231pd", vfma_pd_insn, 2, SUF_Z, 0xBE, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"psubsw", mmxsse2_insn, 2, SUF_Z, 0xE9, 0, 0, 0, CPU_MMX, 0, 0},
+ {"vfnmsubss", fma_128_m32_insn, 3, SUF_Z, 0x7E, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"lea", lea_insn, 3, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
+ {"vmptrld", vmxtwobytemem_insn, 1, SUF_Z, 0x06, 0, 0, 0, CPU_P4, 0, 0},
+ {"cmpeqsd", ssecmp_64_insn, 4, SUF_Z, 0x00, 0xF2, 0, 0, CPU_SSE2, 0, 0},
+ {"o64", NULL, X86_OPERSIZE>>8, 0x40, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"vcvtpd2ps", avx_cvt_xmm128_insn, 2, SUF_Z, 0x66, 0x5A, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"faddp", farithp_insn, 3, SUF_Z, 0xC0, 0, 0, 0, CPU_FPU, 0, 0},
+ {"vpsrldq", pslrldq_insn, 4, SUF_Z, 0x03, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpfalsesd", ssecmp_64_insn, 4, SUF_Z, 0x0B, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"lzcnt", cnt_insn, 3, SUF_Z, 0xBD, 0, 0, 0, CPU_LZCNT, 0, 0},
+ {"vcmpunord_sss", ssecmp_32_insn, 4, SUF_Z, 0x13, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpleps", ssecmp_128_insn, 3, SUF_Z, 0x02, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vextractps", extractps_insn, 2, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"enter", enter_insn, 3, SUF_Z, 0, 0, 0, 0, CPU_186, 0, 0},
+ {"vandnpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x55, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"roundsd", sse4m64imm_insn, 4, SUF_Z, 0x0B, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vpaddb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xFC, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmpordss", ssecmp_32_insn, 4, SUF_Z, 0x07, 0xF3, 0, 0, CPU_SSE, 0, 0},
+ {"vpcomeqb", vpcom_insn, 1, SUF_Z, 0xCC, 0x04, 0, 0, CPU_XOP, 0, 0},
+ {"vgatherqpd", gather_64x_64y_insn, 2, SUF_Z, 0x93, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"pcmpeqq", sse4_insn, 2, SUF_Z, 0x29, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"fsetpm", twobyte_insn, 1, SUF_Z, 0xDB, 0xE4, 0, 0, CPU_286, CPU_FPU, CPU_Obs},
+ {"vpcomgeuw", vpcom_insn, 1, SUF_Z, 0xED, 0x03, 0, 0, CPU_XOP, 0, 0},
+ {"vpmadcswd", vpma_insn, 1, SUF_Z, 0xB6, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vcvtps2ph", avx_cvtps2ph_insn, 4, SUF_Z, 0x66, 0x1D, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpneqpd", ssecmp_128_insn, 3, SUF_Z, 0x04, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fcmove", fcmovcc_insn, 1, SUF_Z, 0xDA, 0xC8, 0, 0, CPU_686, CPU_FPU, 0},
+ {"vfmadd231pd", vfma_pd_insn, 2, SUF_Z, 0xB8, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"fprem1", twobyte_insn, 1, SUF_Z, 0xD9, 0xF5, 0, 0, CPU_286, CPU_FPU, 0},
+ {"setna", setcc_insn, 1, SUF_Z, 0x06, 0, 0, 0, CPU_386, 0, 0},
+ {"cwd", onebyte_insn, 1, SUF_Z, 0x99, 0x10, 0, 0, 0, 0, 0},
+ {"aesimc", aesimc_insn, 1, SUF_Z, 0x38, 0xDB, 0, 0, CPU_AES, 0, 0},
+ {"idiv", div_insn, 8, SUF_Z, 0x07, 0, 0, 0, 0, 0, 0},
+ {"vcmplt_oqsd", ssecmp_64_insn, 4, SUF_Z, 0x11, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cvtps2pi", cvt_mm_xmm64_insn, 2, SUF_Z, 0x2D, 0, 0, 0, CPU_SSE, 0, 0},
+ {"vblendps", sse4imm_256_insn, 4, SUF_Z, 0x0C, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"setnge", setcc_insn, 1, SUF_Z, 0x0C, 0, 0, 0, CPU_386, 0, 0},
+ {"xsaveopt64", xsaveopt64_insn, 1, SUF_Z, 0x06, 0x0F, 0xAE, ONLY_64, CPU_XSAVEOPT, 0, 0},
+ {"pcmpestrm", sse4pcmpstr_insn, 1, SUF_Z, 0x60, 0, 0, 0, CPU_SSE42, 0, 0},
+ {"vpshlq", amd_vpshift_insn, 2, SUF_Z, 0x97, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vmaskmovdqu", maskmovdqu_insn, 1, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcomnew", vpcom_insn, 1, SUF_Z, 0xCD, 0x05, 0, 0, CPU_XOP, 0, 0},
+ {"vcmpunordpd", ssecmp_128_insn, 3, SUF_Z, 0x03, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpneqsd", ssecmp_64_insn, 4, SUF_Z, 0x04, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cvttpd2dq", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0xE6, 0, 0, CPU_SSE2, 0, 0},
+ {"sahf", onebyte_insn, 1, SUF_Z, 0x9E, 0, 0, 0, 0, 0, 0},
+ {"vpshab", amd_vpshift_insn, 2, SUF_Z, 0x98, 0, 0, 0, CPU_XOP, 0, 0},
+ {"jnz", jcc_insn, 9, SUF_Z, 0x05, 0, 0, 0, 0, 0, 0},
+ {"pextrb", pextrb_insn, 3, SUF_Z, 0, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vmsave", svm_rax_insn, 2, SUF_Z, 0xDB, 0, 0, 0, CPU_SVM, 0, 0},
+ {"vcmpordsd", ssecmp_64_insn, 4, SUF_Z, 0x07, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"setbe", setcc_insn, 1, SUF_Z, 0x06, 0, 0, 0, CPU_386, 0, 0},
+ {"vfmsubadd231ps", vfma_ps_insn, 2, SUF_Z, 0xB7, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vpcomgtb", vpcom_insn, 1, SUF_Z, 0xCC, 0x02, 0, 0, CPU_XOP, 0, 0},
+ {"vfnmsubps", fma_128_256_insn, 4, SUF_Z, 0x7C, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"shrx", vex_gpr_reg_rm_nds_0F_insn, 2, SUF_Z, 0xF2, 0x38, 0xF7, ONLY_AVX, CPU_BMI2, 0, 0},
+ {"dpps", sse4imm_insn, 2, SUF_Z, 0x40, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"movdqa", movau_insn, 6, SUF_Z, 0x66, 0x6F, 0x10, 0, CPU_SSE2, 0, 0},
+ {"xcryptofb", padlock_insn, 1, SUF_Z, 0xE8, 0xF3, 0xA7, 0, CPU_PadLock, 0, 0},
+ {"jmp", jmp_insn, 31, SUF_Z, 0, 0, 0, 0, 0, 0, 0},
+ {"vpsrlq", vpshift_insn, 8, SUF_Z, 0xD3, 0x73, 0x02, ONLY_AVX, CPU_AVX, 0, 0},
+ {"invlpga", invlpga_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_SVM, 0, 0},
+ {"vpcomgtq", vpcom_insn, 1, SUF_Z, 0xCF, 0x02, 0, 0, CPU_XOP, 0, 0},
+ {"vpsadbw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xF6, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vroundsd", sse4m64imm_insn, 4, SUF_Z, 0x0B, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfmaddss", fma_128_m32_insn, 3, SUF_Z, 0x6A, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"fbstp", fbldstp_insn, 1, SUF_Z, 0x06, 0, 0, 0, CPU_FPU, 0, 0},
+ {"rdpmc", twobyte_insn, 1, SUF_Z, 0x0F, 0x33, 0, 0, CPU_686, 0, 0},
+ {"pslld", pshift_insn, 4, SUF_Z, 0xF2, 0x72, 0x06, 0, CPU_MMX, 0, 0},
+ {"vpcomeqd", vpcom_insn, 1, SUF_Z, 0xCE, 0x04, 0, 0, CPU_XOP, 0, 0},
+ {"movntdqa", movntdqa_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"subps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x5C, 0, 0, CPU_SSE, 0, 0},
+ {"adcx", vex_gpr_ndd_rm_0F38_insn, 2, SUF_Z, 0x66, 0xF6, 0, 0, CPU_ADX, 0, 0},
+ {"repz", NULL, X86_LOCKREP>>8, 0xF3, 0, 0, 0, 0, 0, 0, 0},
+ {"ja", jcc_insn, 9, SUF_Z, 0x07, 0, 0, 0, 0, 0, 0},
+ {"vpmacsdql", vpma_insn, 1, SUF_Z, 0x97, 0, 0, 0, CPU_XOP, 0, 0},
+ {"psadbw", mmxsse2_insn, 2, SUF_Z, 0xF6, 0, 0, 0, CPU_MMX, CPU_P3, 0},
+ {"vfnmaddps", fma_128_256_insn, 4, SUF_Z, 0x78, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"pshufb", ssse3_insn, 5, SUF_Z, 0x00, 0, 0, 0, CPU_SSSE3, 0, 0},
+ {"o32", NULL, X86_OPERSIZE>>8, 0x20, 0, 0, 0, 0, 0, 0, 0},
+ {"vpcomeqq", vpcom_insn, 1, SUF_Z, 0xCF, 0x04, 0, 0, CPU_XOP, 0, 0},
+ {"blendpd", sse4imm_insn, 2, SUF_Z, 0x0D, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"popfq", onebyte_insn, 1, SUF_Z, 0x9D, 0x40, 0x40, ONLY_64, 0, 0, 0},
+ {"vhsubps", xmm_xmm128_256_insn, 4, SUF_Z, 0xF2, 0x7D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpclmulhqlqdq", pclmulqdq_fixed_insn, 2, SUF_Z, 0x01, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vandpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x54, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cvtpi2ps", cvt_xmm_mm_ps_insn, 1, SUF_Z, 0x2A, 0, 0, 0, CPU_SSE, 0, 0},
+ {"vpblendvb", avx2_sse4xmm0_insn, 2, SUF_Z, 0x4C, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"movntdq", movnt_insn, 2, SUF_Z, 0x66, 0xE7, 0, 0, CPU_SSE2, 0, 0},
+ {"vpaddw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xFD, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcomeqw", vpcom_insn, 1, SUF_Z, 0xCD, 0x04, 0, 0, CPU_XOP, 0, 0},
+ {"unpcklpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x14, 0, 0, CPU_SSE2, 0, 0},
+ {"vpcomgtuw", vpcom_insn, 1, SUF_Z, 0xED, 0x02, 0, 0, CPU_XOP, 0, 0},
+ {"fadd", farith_insn, 7, SUF_Z, 0xC0, 0xC0, 0x00, 0, CPU_FPU, 0, 0},
+ {"fcmovnbe", fcmovcc_insn, 1, SUF_Z, 0xDB, 0xD0, 0, 0, CPU_686, CPU_FPU, 0},
+ {"vpcomltub", vpcom_insn, 1, SUF_Z, 0xEC, 0x00, 0, 0, CPU_XOP, 0, 0},
+ {"cmplepd", ssecmp_128_insn, 3, SUF_Z, 0x02, 0x66, 0, 0, CPU_SSE, 0, 0},
+ {"fyl2xp1", twobyte_insn, 1, SUF_Z, 0xD9, 0xF9, 0, 0, CPU_FPU, 0, 0},
+ {"vpmacssdql", vpma_insn, 1, SUF_Z, 0x87, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vmpsadbw", sse4imm_256avx2_insn, 4, SUF_Z, 0x42, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"punpckhqdq", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x6D, 0, 0, CPU_SSE2, 0, 0},
+ {"pushaw", onebyte_insn, 1, SUF_Z, 0x60, 0x10, 0, NOT_64, CPU_186, 0, 0},
+ {"sar", shift_insn, 16, SUF_Z, 0x07, 0, 0, 0, 0, 0, 0},
+ {"shlx", vex_gpr_reg_rm_nds_0F_insn, 2, SUF_Z, 0x66, 0x38, 0xF7, ONLY_AVX, CPU_BMI2, 0, 0},
+ {"vcmpunord_sps", ssecmp_128_insn, 3, SUF_Z, 0x13, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcomfalsew", vpcom_insn, 1, SUF_Z, 0xCD, 0x06, 0, 0, CPU_XOP, 0, 0},
+ {"vpbroadcastq", vpbroadcastq_avx2_insn, 4, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"movdqu", movau_insn, 6, SUF_Z, 0xF3, 0x6F, 0x10, 0, CPU_SSE2, 0, 0},
+ {"vcmpord_ssd", ssecmp_64_insn, 4, SUF_Z, 0x17, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpfalsess", ssecmp_32_insn, 4, SUF_Z, 0x0B, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"lddqu", lddqu_insn, 2, SUF_Z, 0, 0, 0, 0, CPU_SSE3, 0, 0},
+ {"sha1msg1", intel_SHA1MSG1_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SHA, 0, 0},
+ {"lock", NULL, X86_LOCKREP>>8, 0xF0, 0, 0, 0, 0, 0, 0, 0},
+ {"lss", lfgss_insn, 3, SUF_Z, 0xB2, 0, 0, 0, CPU_386, 0, 0},
+ {"orps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x56, 0, 0, CPU_SSE, 0, 0},
+ {"vbroadcastsd", vbroadcastsd_insn, 2, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"rsdc", rsdc_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_486, CPU_Cyrix, CPU_SMM},
+ {"crc32", crc32_insn, 5, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_SSE42, 0},
+ {"sal", shift_insn, 16, SUF_Z, 0x04, 0, 0, 0, 0, 0, 0},
+ {"movsldup", xmm_xmm128_insn, 2, SUF_Z, 0xF3, 0x12, 0, 0, CPU_SSE3, 0, 0},
+ {"vpcomneub", vpcom_insn, 1, SUF_Z, 0xEC, 0x05, 0, 0, CPU_XOP, 0, 0},
+ {"movsb", onebyte_insn, 1, SUF_Z, 0xA4, 0x00, 0, 0, 0, 0, 0},
+ {"jcxz", jcxz_insn, 2, SUF_Z, 0x10, 0, 0, 0, 0, 0, 0},
+ {"vphadduwd", vphaddsub_insn, 1, SUF_Z, 0xD6, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vpcomequb", vpcom_insn, 1, SUF_Z, 0xEC, 0x04, 0, 0, CPU_XOP, 0, 0},
+ {"vpcomgeq", vpcom_insn, 1, SUF_Z, 0xCF, 0x03, 0, 0, CPU_XOP, 0, 0},
+ {"cmpeqps", ssecmp_128_insn, 3, SUF_Z, 0x00, 0, 0, 0, CPU_SSE, 0, 0},
+ {"psubsiw", cyrixmmx_insn, 1, SUF_Z, 0x55, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
+ {"vpcomfalseuq", vpcom_insn, 1, SUF_Z, 0xEF, 0x06, 0, 0, CPU_XOP, 0, 0},
+ {"vcmpngesd", ssecmp_64_insn, 4, SUF_Z, 0x09, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpsubb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xF8, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpextrb", pextrb_insn, 3, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fdivr", farith_insn, 7, SUF_Z, 0xF0, 0xF8, 0x07, 0, CPU_FPU, 0, 0},
+ {"cmpless", ssecmp_32_insn, 4, SUF_Z, 0x02, 0xF3, 0, 0, CPU_SSE, 0, 0},
+ {"vcmpeq_ossd", ssecmp_64_insn, 4, SUF_Z, 0x10, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pabsd", ssse3_insn, 5, SUF_Z, 0x1E, 0, 0, 0, CPU_SSSE3, 0, 0},
+ {"vprotd", vprot_insn, 3, SUF_Z, 0x02, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vpermq", vperm_imm_avx2_insn, 1, SUF_Z, 0x00, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"vmovntps", movnt_insn, 2, SUF_Z, 0x00, 0x2B, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcvtps2dq", avx_xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x5B, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pmovzxwd", sse4m64_insn, 4, SUF_Z, 0x33, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"phaddd", ssse3_insn, 5, SUF_Z, 0x02, 0, 0, 0, CPU_SSSE3, 0, 0},
+ {"jnp", jcc_insn, 9, SUF_Z, 0x0B, 0, 0, 0, 0, 0, 0},
+ {"vdivss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5E, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vunpcklps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x14, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"punpcklbw", mmxsse2_insn, 2, SUF_Z, 0x60, 0, 0, 0, CPU_MMX, 0, 0},
+ {"pmovzxbd", sse4m32_insn, 4, SUF_Z, 0x31, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vcmpfalse_ospd", ssecmp_128_insn, 3, SUF_Z, 0x1B, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vmaxps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x5F, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcomub", vpcom_imm_insn, 1, SUF_Z, 0xEC, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vcmptrue_usss", ssecmp_32_insn, 4, SUF_Z, 0x1F, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vphaddbw", vphaddsub_insn, 1, SUF_Z, 0xC1, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vpmacssdd", vpma_insn, 1, SUF_Z, 0x8E, 0, 0, 0, CPU_XOP, 0, 0},
+ {"sete", setcc_insn, 1, SUF_Z, 0x04, 0, 0, 0, CPU_386, 0, 0},
+ {"fcom", fcom_insn, 6, SUF_Z, 0xD0, 0x02, 0, 0, CPU_FPU, 0, 0},
+ {"paveb", cyrixmmx_insn, 1, SUF_Z, 0x50, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
+ {"vphaddd", ssse3_insn, 5, SUF_Z, 0x02, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcomltuq", vpcom_insn, 1, SUF_Z, 0xEF, 0x00, 0, 0, CPU_XOP, 0, 0},
+ {"aeskeygenassist", aes_imm_insn, 1, SUF_Z, 0x3A, 0xDF, 0, 0, CPU_AES, 0, 0},
+ {"movss", movss_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_SSE, 0, 0},
+ {"vpmacsswd", vpma_insn, 1, SUF_Z, 0x86, 0, 0, 0, CPU_XOP, 0, 0},
+ {"fchs", twobyte_insn, 1, SUF_Z, 0xD9, 0xE0, 0, 0, CPU_FPU, 0, 0},
+ {"vphminposuw", avx_ssse3_2op_insn, 1, SUF_Z, 0x41, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"les", ldes_insn, 2, SUF_Z, 0xC4, 0, 0, NOT_64, 0, 0, 0},
+ {"movhlps", movhllhps_insn, 2, SUF_Z, 0x12, 0, 0, 0, CPU_SSE, 0, 0},
+ {"a16", NULL, X86_ADDRSIZE>>8, 0x10, 0, 0, 0, 0, 0, 0, 0},
+ {"vpaddsw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xED, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"aesdeclast", aes_insn, 2, SUF_Z, 0x38, 0xDF, 0, 0, CPU_AVX, 0, 0},
+ {"lodsq", onebyte_insn, 1, SUF_Z, 0xAD, 0x40, 0, ONLY_64, 0, 0, 0},
+ {"vpinsrd", pinsrd_insn, 2, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpgatherdq", gather_64x_64x_insn, 2, SUF_Z, 0x90, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"pshufw", pshufw_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_MMX, CPU_P3, 0},
+ {"vpgatherqd", gather_32x_32y_128_insn, 2, SUF_Z, 0x91, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"vpblendd", vex_66_0F3A_imm8_avx2_insn, 2, SUF_Z, 0x02, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"vblendpd", sse4imm_256_insn, 4, SUF_Z, 0x0D, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pushfw", onebyte_insn, 1, SUF_Z, 0x9C, 0x10, 0x40, 0, 0, 0, 0},
+ {"lodsd", onebyte_insn, 1, SUF_Z, 0xAD, 0x20, 0, 0, CPU_386, 0, 0},
+ {"vfmaddsub213pd", vfma_pd_insn, 2, SUF_Z, 0xA6, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vpcomfalsed", vpcom_insn, 1, SUF_Z, 0xCE, 0x06, 0, 0, CPU_XOP, 0, 0},
+ {"fnstcw", fldnstcw_insn, 1, SUF_Z, 0x07, 0, 0, 0, CPU_FPU, 0, 0},
+ {"rdshr", rdwrshr_insn, 1, SUF_Z, 0x00, 0, 0, 0, CPU_686, CPU_Cyrix, CPU_SMM},
+ {"phminposuw", sse4_insn, 2, SUF_Z, 0x41, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"pclmullqlqdq", pclmulqdq_fixed_insn, 2, SUF_Z, 0x00, 0, 0, 0, CPU_AVX, 0, 0},
+ {"bound", bound_insn, 2, SUF_Z, 0, 0, 0, NOT_64, CPU_186, 0, 0},
+ {"tzcnt", cnt_insn, 3, SUF_Z, 0xBC, 0, 0, 0, CPU_BMI1, 0, 0},
+ {"rdrand", rdrand_insn, 3, SUF_Z, 0x06, 0, 0, 0, CPU_RDRAND, 0, 0},
+ {"vpcomtrueuq", vpcom_insn, 1, SUF_Z, 0xEF, 0x07, 0, 0, CPU_XOP, 0, 0},
+ {"pfrcp", now3d_insn, 1, SUF_Z, 0x96, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"vcmpneq_oqsd", ssecmp_64_insn, 4, SUF_Z, 0x0C, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcvttps2dq", avx_xmm_xmm128_insn, 2, SUF_Z, 0xF3, 0x5B, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpinsrb", pinsrb_insn, 4, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"movlhps", movhllhps_insn, 2, SUF_Z, 0x16, 0, 0, 0, CPU_SSE, 0, 0},
+ {"vpmovsxwq", sse4m32_insn, 4, SUF_Z, 0x24, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pdistib", cyrixmmx_insn, 1, SUF_Z, 0x54, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
+ {"vpxor", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xEF, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fabs", twobyte_insn, 1, SUF_Z, 0xD9, 0xE1, 0, 0, CPU_FPU, 0, 0},
+ {"blci", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x02, 0x06, 0, 0, CPU_386, CPU_TBM, 0},
+ {"vmovlpd", movhlp_insn, 3, SUF_Z, 0x66, 0x12, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vbroadcastss", vbroadcastss_insn, 4, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpngt_uqss", ssecmp_32_insn, 4, SUF_Z, 0x1A, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"roundps", sse4imm_insn, 2, SUF_Z, 0x08, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"sha256msg1", intel_SHA256MSG1_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SHA, 0, 0},
+ {"movsxd", movsxd_insn, 1, SUF_Z, 0, 0, 0, ONLY_64, 0, 0, 0},
+ {"fsubrp", farithp_insn, 3, SUF_Z, 0xE0, 0, 0, 0, CPU_FPU, 0, 0},
+ {"vmaskmovps", vmaskmov_insn, 4, SUF_Z, 0x2C, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"movsx", movszx_insn, 5, SUF_Z, 0xBE, 0, 0, 0, CPU_386, 0, 0},
+ {"fistp", fildstp_insn, 4, SUF_Z, 0x03, 0x02, 0x07, 0, CPU_FPU, 0, 0},
+ {"vfmsubps", fma_128_256_insn, 4, SUF_Z, 0x6C, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"movmskps", movmsk_insn, 4, SUF_Z, 0, 0, 0, 0, CPU_386, CPU_SSE, 0},
+ {"cmplesd", ssecmp_64_insn, 4, SUF_Z, 0x02, 0xF2, 0, 0, CPU_SSE2, 0, 0},
+ {"maskmovdqu", maskmovdqu_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SSE2, 0, 0},
+ {"prefetchnta", twobytemem_insn, 1, SUF_Z, 0x00, 0x0F, 0x18, 0, CPU_P3, 0, 0},
+ {"loadall", twobyte_insn, 1, SUF_Z, 0x0F, 0x07, 0, 0, CPU_386, CPU_Undoc, 0},
+ {"cmpunordsd", ssecmp_64_insn, 4, SUF_Z, 0x03, 0xF2, 0, 0, CPU_SSE2, 0, 0},
+ {"haddpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x7C, 0, 0, CPU_SSE3, 0, 0},
+ {"vpshlw", amd_vpshift_insn, 2, SUF_Z, 0x95, 0, 0, 0, CPU_XOP, 0, 0},
+ {"addsubpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0xD0, 0, 0, CPU_SSE3, 0, 0},
+ {"phaddw", ssse3_insn, 5, SUF_Z, 0x01, 0, 0, 0, CPU_SSSE3, 0, 0},
+ {"vphaddsw", ssse3_insn, 5, SUF_Z, 0x03, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpeq_uqsd", ssecmp_64_insn, 4, SUF_Z, 0x08, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmpunordss", ssecmp_32_insn, 4, SUF_Z, 0x03, 0xF3, 0, 0, CPU_SSE, 0, 0},
+ {"cmpsb", onebyte_insn, 1, SUF_Z, 0xA6, 0x00, 0, 0, 0, 0, 0},
+ {"vpcomtrueuw", vpcom_insn, 1, SUF_Z, 0xED, 0x07, 0, 0, CPU_XOP, 0, 0},
+ {"rcpps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x53, 0, 0, CPU_SSE, 0, 0},
+ {"packuswb", mmxsse2_insn, 2, SUF_Z, 0x67, 0, 0, 0, CPU_MMX, 0, 0},
+ {"vmovlhps", movhllhps_insn, 2, SUF_Z, 0x16, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmppd", xmm_xmm128_imm_insn, 1, SUF_Z, 0x66, 0xC2, 0, 0, CPU_SSE2, 0, 0},
+ {"vfmsubadd231pd", vfma_pd_insn, 2, SUF_Z, 0xB7, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vphaddudq", vphaddsub_insn, 1, SUF_Z, 0xDB, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vphaddubq", vphaddsub_insn, 1, SUF_Z, 0xD3, 0, 0, 0, CPU_XOP, 0, 0},
+ {"scasb", onebyte_insn, 1, SUF_Z, 0xAE, 0x00, 0, 0, 0, 0, 0},
+ {"vfmaddsubps", fma_128_256_insn, 4, SUF_Z, 0x5C, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"vpcomgtd", vpcom_insn, 1, SUF_Z, 0xCE, 0x02, 0, 0, CPU_XOP, 0, 0},
+ {"seta", setcc_insn, 1, SUF_Z, 0x07, 0, 0, 0, CPU_386, 0, 0},
+ {"pmulhrwc", cyrixmmx_insn, 1, SUF_Z, 0x59, 0, 0, 0, CPU_Cyrix, CPU_MMX, 0},
+ {"vtestpd", sse4_insn, 2, SUF_Z, 0x0F, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfmaddsub132pd", vfma_pd_insn, 2, SUF_Z, 0x96, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"cmpneqps", ssecmp_128_insn, 3, SUF_Z, 0x04, 0, 0, 0, CPU_SSE, 0, 0},
+ {"vpmaskmovd", vmaskmov_insn, 4, SUF_Z, 0x8C, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"vcmpordps", ssecmp_128_insn, 3, SUF_Z, 0x07, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcvtsi2ss", cvt_xmm_rmx_insn, 6, SUF_Z, 0xF3, 0x2A, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vunpckhpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x15, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"setc", setcc_insn, 1, SUF_Z, 0x02, 0, 0, 0, CPU_386, 0, 0},
+ {"repne", NULL, X86_LOCKREP>>8, 0xF2, 0, 0, 0, 0, 0, 0, 0},
+ {"vandnps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x55, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"aam", aadm_insn, 2, SUF_Z, 0x00, 0, 0, NOT_64, 0, 0, 0},
+ {"mulpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x59, 0, 0, CPU_SSE2, 0, 0},
+ {"a32", NULL, X86_ADDRSIZE>>8, 0x20, 0, 0, 0, 0, 0, 0, 0},
+ {"vcmpfalse_osps", ssecmp_128_insn, 3, SUF_Z, 0x1B, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"jecxz", jcxz_insn, 2, SUF_Z, 0x20, 0, 0, 0, CPU_386, 0, 0},
+ {"vcmple_oqps", ssecmp_128_insn, 3, SUF_Z, 0x12, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmovpe", cmovcc_insn, 3, SUF_Z, 0x0A, 0, 0, 0, CPU_686, 0, 0},
+ {"vcmpngepd", ssecmp_128_insn, 3, SUF_Z, 0x09, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vsqrtpd", avx_xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x51, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpmacsww", vpma_insn, 1, SUF_Z, 0x95, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vfmaddsub231pd", vfma_pd_insn, 2, SUF_Z, 0xB6, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"int3", onebyte_insn, 1, SUF_Z, 0xCC, 0, 0, 0, 0, 0, 0},
+ {"vcvtdq2pd", avx_cvt_xmm64_insn, 3, SUF_Z, 0xF3, 0xE6, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fisubr", fiarith_insn, 2, SUF_Z, 0x05, 0xDA, 0, 0, CPU_FPU, 0, 0},
+ {"pextrq", pextrq_insn, 1, SUF_Z, 0, 0, 0, ONLY_64, CPU_SSE41, 0, 0},
+ {"popaw", onebyte_insn, 1, SUF_Z, 0x61, 0x10, 0, NOT_64, CPU_186, 0, 0},
+ {"vcmpnge_uqsd", ssecmp_64_insn, 4, SUF_Z, 0x19, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfmsub132ps", vfma_ps_insn, 2, SUF_Z, 0x9A, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vcmplesd", ssecmp_64_insn, 4, SUF_Z, 0x02, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"into", onebyte_insn, 1, SUF_Z, 0xCE, 0, 0, NOT_64, 0, 0, 0},
+ {"vpmacsdd", vpma_insn, 1, SUF_Z, 0x9E, 0, 0, 0, CPU_XOP, 0, 0},
+ {"cmovbe", cmovcc_insn, 3, SUF_Z, 0x06, 0, 0, 0, CPU_686, 0, 0},
+ {"vpsubsb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xE8, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpmulld", ssse3_insn, 5, SUF_Z, 0x40, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vphsubw", ssse3_insn, 5, SUF_Z, 0x05, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpsrlvq", vpshiftv_vexw1_avx2_insn, 2, SUF_Z, 0x45, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"vpsllvd", vpshiftv_vexw0_avx2_insn, 2, SUF_Z, 0x47, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"std", onebyte_insn, 1, SUF_Z, 0xFD, 0, 0, 0, 0, 0, 0},
+ {"psrad", pshift_insn, 4, SUF_Z, 0xE2, 0x72, 0x04, 0, CPU_MMX, 0, 0},
+ {"psllq", pshift_insn, 4, SUF_Z, 0xF3, 0x73, 0x06, 0, CPU_MMX, 0, 0},
+ {"fucom", fcom2_insn, 2, SUF_Z, 0xDD, 0xE0, 0, 0, CPU_286, CPU_FPU, 0},
+ {"vpcmpeqd", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x76, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpord_sps", ssecmp_128_insn, 3, SUF_Z, 0x17, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vmovntdqa", movntdqa_insn, 2, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpgatherdd", gather_32x_32y_insn, 2, SUF_Z, 0x90, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"vfmsubpd", fma_128_256_insn, 4, SUF_Z, 0x6D, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"vaesdec", aes_insn, 2, SUF_Z, 0x38, 0xDE, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcomged", vpcom_insn, 1, SUF_Z, 0xCE, 0x03, 0, 0, CPU_XOP, 0, 0},
+ {"rol", shift_insn, 16, SUF_Z, 0x00, 0, 0, 0, 0, 0, 0},
+ {"punpckhbw", mmxsse2_insn, 2, SUF_Z, 0x68, 0, 0, 0, CPU_MMX, 0, 0},
+ {"vphsubsw", ssse3_insn, 5, SUF_Z, 0x07, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmpltsd", ssecmp_64_insn, 4, SUF_Z, 0x01, 0xF2, 0, 0, CPU_SSE2, 0, 0},
+ {"fcomip", fcom2_insn, 2, SUF_Z, 0xDF, 0xF0, 0, 0, CPU_686, CPU_FPU, 0},
+ {"vfmadd231sd", vfma_sd_insn, 2, SUF_Z, 0xB9, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"psubusw", mmxsse2_insn, 2, SUF_Z, 0xD9, 0, 0, 0, CPU_MMX, 0, 0},
+ {"vcmpunord_spd", ssecmp_128_insn, 3, SUF_Z, 0x13, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpneq_usss", ssecmp_32_insn, 4, SUF_Z, 0x14, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpclmullqhqdq", pclmulqdq_fixed_insn, 2, SUF_Z, 0x10, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpeq_uspd", ssecmp_128_insn, 3, SUF_Z, 0x18, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"inc", incdec_insn, 6, SUF_Z, 0x40, 0x00, 0, 0, 0, 0, 0},
+ {"psubq", mmxsse2_insn, 2, SUF_Z, 0xFB, 0, 0, 0, CPU_MMX, 0, 0},
+ {"unpcklps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x14, 0, 0, CPU_SSE, 0, 0},
+ {"vcmpgt_oqss", ssecmp_32_insn, 4, SUF_Z, 0x1E, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpunordps", ssecmp_128_insn, 3, SUF_Z, 0x03, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfnmadd213sd", vfma_sd_insn, 2, SUF_Z, 0xAD, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"pdep", vex_gpr_reg_nds_rm_0F_insn, 2, SUF_Z, 0xF2, 0x38, 0xF5, ONLY_AVX, CPU_BMI2, 0, 0},
+ {"phaddsw", ssse3_insn, 5, SUF_Z, 0x03, 0, 0, 0, CPU_SSSE3, 0, 0},
+ {"xcryptcbc", padlock_insn, 1, SUF_Z, 0xD0, 0xF3, 0xA7, 0, CPU_PadLock, 0, 0},
+ {"vpmullw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xD5, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"blsfill", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x01, 0x02, 0, 0, CPU_386, CPU_TBM, 0},
+ {"and", arith_insn, 22, SUF_Z, 0x20, 0x04, 0, 0, 0, 0, 0},
+ {"xacquire", NULL, X86_ACQREL>>8, 0xF2, 0, 0, 0, 0, 0, 0, 0},
+ {"vpcomnequd", vpcom_insn, 1, SUF_Z, 0xEE, 0x05, 0, 0, CPU_XOP, 0, 0},
+ {"movshdup", xmm_xmm128_insn, 2, SUF_Z, 0xF3, 0x16, 0, 0, CPU_SSE3, 0, 0},
+ {"vfnmadd231sd", vfma_sd_insn, 2, SUF_Z, 0xBD, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"femms", twobyte_insn, 1, SUF_Z, 0x0F, 0x0E, 0, 0, CPU_3DNow, 0, 0},
+ {"vpcomgeuq", vpcom_insn, 1, SUF_Z, 0xEF, 0x03, 0, 0, CPU_XOP, 0, 0},
+ {"vcmpnlt_uqsd", ssecmp_64_insn, 4, SUF_Z, 0x15, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pcmpgtd", mmxsse2_insn, 2, SUF_Z, 0x66, 0, 0, 0, CPU_MMX, 0, 0},
+ {"andpd", xmm_xmm128_insn, 2, SUF_Z, 0x66, 0x54, 0, 0, CPU_SSE2, 0, 0},
+ {"vhsubpd", xmm_xmm128_256_insn, 4, SUF_Z, 0x66, 0x7D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vblendvps", avx_sse4xmm0_insn, 2, SUF_Z, 0x4A, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpgtsd", ssecmp_64_insn, 4, SUF_Z, 0x0E, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpcmpestri", sse4pcmpstr_insn, 1, SUF_Z, 0x61, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"rdmsr", twobyte_insn, 1, SUF_Z, 0x0F, 0x32, 0, 0, CPU_586, CPU_Priv, 0},
+ {"vpcmpgtw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x65, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pfnacc", now3d_insn, 1, SUF_Z, 0x8A, 0, 0, 0, CPU_3DNow, CPU_Athlon, 0},
+ {"leave", onebyte_insn, 1, SUF_Z, 0xC9, 0x00, 0x40, 0, CPU_186, 0, 0},
+ {"jz", jcc_insn, 9, SUF_Z, 0x04, 0, 0, 0, 0, 0, 0},
+ {"psubw", mmxsse2_insn, 2, SUF_Z, 0xF9, 0, 0, 0, CPU_MMX, 0, 0},
+ {"jnl", jcc_insn, 9, SUF_Z, 0x0D, 0, 0, 0, 0, 0, 0},
+ {"repe", NULL, X86_LOCKREP>>8, 0xF3, 0, 0, 0, 0, 0, 0, 0},
+ {"pushfq", onebyte_insn, 1, SUF_Z, 0x9C, 0x40, 0x40, ONLY_64, 0, 0, 0},
+ {"vmlaunch", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xC2, 0, CPU_P4, 0, 0},
+ {"vfmsubaddps", fma_128_256_insn, 4, SUF_Z, 0x5E, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"cmpxchg486", cmpxchgxadd_insn, 4, SUF_Z, 0xA6, 0, 0, 0, CPU_486, CPU_Undoc, 0},
+ {"blsic", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x01, 0x06, 0, 0, CPU_386, CPU_TBM, 0},
+ {"vcmptruesd", ssecmp_64_insn, 4, SUF_Z, 0x0F, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"stc", onebyte_insn, 1, SUF_Z, 0xF9, 0, 0, 0, 0, 0, 0},
+ {"vpermps", vperm_var_avx2_insn, 1, SUF_Z, 0x16, 0, 0, ONLY_AVX, CPU_AVX2, 0, 0},
+ {"xlatb", onebyte_insn, 1, SUF_Z, 0xD7, 0x00, 0, 0, 0, 0, 0},
+ {"vpmacssww", vpma_insn, 1, SUF_Z, 0x85, 0, 0, 0, CPU_XOP, 0, 0},
+ {"pavgusb", now3d_insn, 1, SUF_Z, 0xBF, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"vfmsub231sd", vfma_sd_insn, 2, SUF_Z, 0xBB, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vmovd", vmovd_insn, 2, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_386, CPU_AVX, 0},
+ {"cvtps2pd", xmm_xmm64_insn, 4, SUF_Z, 0x00, 0x5A, 0, 0, CPU_SSE2, 0, 0},
+ {"verw", prot286_insn, 1, SUF_Z, 0x05, 0x00, 0, 0, CPU_286, CPU_Prot, 0},
+ {"pushad", onebyte_insn, 1, SUF_Z, 0x60, 0x20, 0, NOT_64, CPU_386, 0, 0},
+ {"wrfsbase", fs_gs_base_insn, 2, SUF_Z, 0x02, 0, 0, ONLY_64, CPU_FSGSBASE, 0, 0},
+ {"paddusw", mmxsse2_insn, 2, SUF_Z, 0xDD, 0, 0, 0, CPU_MMX, 0, 0},
+ {"vucomisd", avx_xmm_xmm64_insn, 2, SUF_Z, 0x66, 0x2E, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fldenv", onebytemem_insn, 1, SUF_Z, 0x04, 0xD9, 0, 0, CPU_FPU, 0, 0},
+ {"psubb", mmxsse2_insn, 2, SUF_Z, 0xF8, 0, 0, 0, CPU_MMX, 0, 0},
+ {"lidt", twobytemem_insn, 1, SUF_Z, 0x03, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
+ {"vfmadd213ps", vfma_ps_insn, 2, SUF_Z, 0xA8, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"cmovnbe", cmovcc_insn, 3, SUF_Z, 0x07, 0, 0, 0, CPU_686, 0, 0},
+ {"shufps", xmm_xmm128_imm_insn, 1, SUF_Z, 0x00, 0xC6, 0, 0, CPU_SSE, 0, 0},
+ {"emms", twobyte_insn, 1, SUF_Z, 0x0F, 0x77, 0, 0, CPU_MMX, 0, 0},
+ {"vfmsubadd132pd", vfma_pd_insn, 2, SUF_Z, 0x97, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"fldl2e", twobyte_insn, 1, SUF_Z, 0xD9, 0xEA, 0, 0, CPU_FPU, 0, 0},
+ {"invd", twobyte_insn, 1, SUF_Z, 0x0F, 0x08, 0, 0, CPU_486, CPU_Priv, 0},
+ {"vphadduwq", vphaddsub_insn, 1, SUF_Z, 0xD7, 0, 0, 0, CPU_XOP, 0, 0},
+ {"cvtss2si", cvt_rx_xmm32_insn, 4, SUF_Z, 0xF3, 0x2D, 0, 0, CPU_386, CPU_SSE, 0},
+ {"vpcomltd", vpcom_insn, 1, SUF_Z, 0xCE, 0x00, 0, 0, CPU_XOP, 0, 0},
+ {"shr", shift_insn, 16, SUF_Z, 0x05, 0, 0, 0, 0, 0, 0},
+ {"vcvtss2si", cvt_rx_xmm32_insn, 4, SUF_Z, 0xF3, 0x2D, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpeq_uqps", ssecmp_128_insn, 3, SUF_Z, 0x08, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vsubsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x5C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pminuw", sse4_insn, 2, SUF_Z, 0x3A, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vcmpgt_oqps", ssecmp_128_insn, 3, SUF_Z, 0x1E, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"xstore", padlock_insn, 1, SUF_Z, 0xC0, 0x00, 0xA7, 0, CPU_PadLock, 0, 0},
+ {"pmovsxwq", sse4m32_insn, 4, SUF_Z, 0x24, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vcmpngtss", ssecmp_32_insn, 4, SUF_Z, 0x0A, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfnmadd213pd", vfma_pd_insn, 2, SUF_Z, 0xAC, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"vphaddbd", vphaddsub_insn, 1, SUF_Z, 0xC2, 0, 0, 0, CPU_XOP, 0, 0},
+ {"divps", xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x5E, 0, 0, CPU_SSE, 0, 0},
+ {"pf2id", now3d_insn, 1, SUF_Z, 0x1D, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"lgdt", twobytemem_insn, 1, SUF_Z, 0x02, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
+ {"syscall", twobyte_insn, 1, SUF_Z, 0x0F, 0x05, 0, 0, CPU_686, CPU_AMD, 0},
+ {"vpmaddwd", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xF5, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmpneqss", ssecmp_32_insn, 4, SUF_Z, 0x04, 0xF3, 0, 0, CPU_SSE, 0, 0},
+ {"setle", setcc_insn, 1, SUF_Z, 0x0E, 0, 0, 0, CPU_386, 0, 0},
+ {"stosb", onebyte_insn, 1, SUF_Z, 0xAA, 0x00, 0, 0, 0, 0, 0},
+ {"sha1rnds4", intel_SHA1RNDS4_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SHA, 0, 0},
+ {"setg", setcc_insn, 1, SUF_Z, 0x0F, 0, 0, 0, CPU_386, 0, 0},
+ {"ffree", ffree_insn, 1, SUF_Z, 0xDD, 0, 0, 0, CPU_FPU, 0, 0},
+ {"fmulp", farithp_insn, 3, SUF_Z, 0xC8, 0, 0, 0, CPU_FPU, 0, 0},
+ {"fucomp", fcom2_insn, 2, SUF_Z, 0xDD, 0xE8, 0, 0, CPU_286, CPU_FPU, 0},
+ {"cvtss2sd", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x5A, 0, 0, CPU_SSE2, 0, 0},
+ {"phsubd", ssse3_insn, 5, SUF_Z, 0x06, 0, 0, 0, CPU_SSSE3, 0, 0},
+ {"vdivps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x5E, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"rdseed", rdrand_insn, 3, SUF_Z, 0x07, 0, 0, 0, CPU_RDSEED, 0, 0},
+ {"vpsrlw", vpshift_insn, 8, SUF_Z, 0xD1, 0x71, 0x02, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpeqsd", ssecmp_64_insn, 4, SUF_Z, 0x00, 0xF2, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpngtps", ssecmp_128_insn, 3, SUF_Z, 0x0A, 0x00, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cvtpd2dq", xmm_xmm128_insn, 2, SUF_Z, 0xF2, 0xE6, 0, 0, CPU_SSE2, 0, 0},
+ {"vfnmaddpd", fma_128_256_insn, 4, SUF_Z, 0x79, 0, 0, ONLY_AVX, CPU_FMA4, 0, 0},
+ {"vmptrst", vmxtwobytemem_insn, 1, SUF_Z, 0x07, 0, 0, 0, CPU_P4, 0, 0},
+ {"rdgsbase", fs_gs_base_insn, 2, SUF_Z, 0x01, 0, 0, ONLY_64, CPU_FSGSBASE, 0, 0},
+ {"vpcomleb", vpcom_insn, 1, SUF_Z, 0xCC, 0x01, 0, 0, CPU_XOP, 0, 0},
+ {"pmovzxbw", sse4m64_insn, 4, SUF_Z, 0x30, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vrsqrtss", xmm_xmm32_insn, 4, SUF_Z, 0xF3, 0x52, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"setpe", setcc_insn, 1, SUF_Z, 0x0A, 0, 0, 0, CPU_386, 0, 0},
+ {"ffreep", ffree_insn, 1, SUF_Z, 0xDF, 0, 0, 0, CPU_686, CPU_FPU, CPU_Undoc},
+ {"sgdt", twobytemem_insn, 1, SUF_Z, 0x00, 0x0F, 0x01, 0, CPU_286, CPU_Priv, 0},
+ {"addsd", xmm_xmm64_insn, 4, SUF_Z, 0xF2, 0x58, 0, 0, CPU_SSE2, 0, 0},
+ {"sfence", threebyte_insn, 1, SUF_Z, 0x0F, 0xAE, 0xF8, 0, CPU_P3, 0, 0},
+ {"mpsadbw", sse4imm_insn, 2, SUF_Z, 0x42, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vpunpckhbw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x68, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vcmpnlepd", ssecmp_128_insn, 3, SUF_Z, 0x06, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vandps", xmm_xmm128_256_insn, 4, SUF_Z, 0x00, 0x54, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"cmpneqsd", ssecmp_64_insn, 4, SUF_Z, 0x04, 0xF2, 0, 0, CPU_SSE2, 0, 0},
+ {"fsqrt", twobyte_insn, 1, SUF_Z, 0xD9, 0xFA, 0, 0, CPU_FPU, 0, 0},
+ {"vpinsrq", pinsrq_insn, 2, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vmovddup", vmovddup_insn, 3, SUF_Z, 0xF2, 0x12, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpmacswd", vpma_insn, 1, SUF_Z, 0x96, 0, 0, 0, CPU_XOP, 0, 0},
+ {"vcmpeq_osss", ssecmp_32_insn, 4, SUF_Z, 0x10, 0xF3, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"setp", setcc_insn, 1, SUF_Z, 0x0A, 0, 0, 0, CPU_386, 0, 0},
+ {"cmpsq", onebyte_insn, 1, SUF_Z, 0xA7, 0x40, 0, ONLY_64, 0, 0, 0},
+ {"vmovdqu", movau_insn, 6, SUF_Z, 0xF3, 0x6F, 0x10, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pfrcpit2", now3d_insn, 1, SUF_Z, 0xB6, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"jpe", jcc_insn, 9, SUF_Z, 0x0A, 0, 0, 0, 0, 0, 0},
+ {"vpunpckhdq", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0x6A, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"bextr", bextr_insn, 4, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_386, CPU_BMI1, 0},
+ {"vmovsldup", avx_xmm_xmm128_insn, 2, SUF_Z, 0xF3, 0x12, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpaddusb", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xDC, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vperm2f128", vperm2f128_insn, 1, SUF_Z, 0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"pcmpgtq", sse4_insn, 2, SUF_Z, 0x37, 0, 0, 0, CPU_SSE41, 0, 0},
+ {"vpshld", amd_vpshift_insn, 2, SUF_Z, 0x96, 0, 0, 0, CPU_XOP, 0, 0},
+ {"fsub", farith_insn, 7, SUF_Z, 0xE8, 0xE0, 0x04, 0, CPU_FPU, 0, 0},
+ {"movdq2q", movdq2q_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SSE2, 0, 0},
+ {"vpsrld", vpshift_insn, 8, SUF_Z, 0xD2, 0x72, 0x02, ONLY_AVX, CPU_AVX, 0, 0},
+ {"fwait", onebyte_insn, 1, SUF_Z, 0x9B, 0, 0, 0, CPU_FPU, 0, 0},
+ {"cmpnltss", ssecmp_32_insn, 4, SUF_Z, 0x05, 0xF3, 0, 0, CPU_SSE, 0, 0},
+ {"blcmsk", xop_gpr_reg_rm_09_insn, 2, SUF_Z, 0x02, 0x01, 0, 0, CPU_386, CPU_TBM, 0},
+ {"punpcklwd", mmxsse2_insn, 2, SUF_Z, 0x61, 0, 0, 0, CPU_MMX, 0, 0},
+ {"cmpunordps", ssecmp_128_insn, 3, SUF_Z, 0x03, 0, 0, 0, CPU_SSE, 0, 0},
+ {"cmpnlesd", ssecmp_64_insn, 4, SUF_Z, 0x06, 0xF2, 0, 0, CPU_SSE2, 0, 0},
+ {"pfcmpgt", now3d_insn, 1, SUF_Z, 0xA0, 0, 0, 0, CPU_3DNow, 0, 0},
+ {"cmovnle", cmovcc_insn, 3, SUF_Z, 0x0F, 0, 0, 0, CPU_686, 0, 0},
+ {"vmclear", vmxthreebytemem_insn, 1, SUF_Z, 0x66, 0, 0, 0, CPU_P4, 0, 0},
+ {"vcmplt_oqpd", ssecmp_128_insn, 3, SUF_Z, 0x11, 0x66, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"clac", threebyte_insn, 1, SUF_Z, 0x0F, 0x01, 0xCA, 0, CPU_SMAP, 0, 0},
+ {"fscale", twobyte_insn, 1, SUF_Z, 0xD9, 0xFD, 0, 0, CPU_FPU, 0, 0},
+ {"vrcpps", avx_xmm_xmm128_insn, 2, SUF_Z, 0x00, 0x53, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"outsd", onebyte_insn, 1, SUF_Z, 0x6F, 0x20, 0, 0, CPU_386, 0, 0},
+ {"fist", fiarith_insn, 2, SUF_Z, 0x02, 0xDB, 0, 0, CPU_FPU, 0, 0},
+ {"vfnmsub213ss", vfma_ss_insn, 2, SUF_Z, 0xAF, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"bts", bittest_insn, 6, SUF_Z, 0xAB, 0x05, 0, 0, CPU_386, 0, 0},
+ {"paddsb", mmxsse2_insn, 2, SUF_Z, 0xEC, 0, 0, 0, CPU_MMX, 0, 0},
+ {"cmovp", cmovcc_insn, 3, SUF_Z, 0x0A, 0, 0, 0, CPU_686, 0, 0},
+ {"fstenv", twobytemem_insn, 1, SUF_Z, 0x06, 0x9B, 0xD9, 0, CPU_FPU, 0, 0},
+ {"rdfsbase", fs_gs_base_insn, 2, SUF_Z, 0x00, 0, 0, ONLY_64, CPU_FSGSBASE, 0, 0},
+ {"vcvttss2si", cvt_rx_xmm32_insn, 4, SUF_Z, 0xF3, 0x2C, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vptest", sse4_insn, 2, SUF_Z, 0x17, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vfmadd132pd", vfma_pd_insn, 2, SUF_Z, 0x98, 0, 0, ONLY_AVX, CPU_FMA, 0, 0},
+ {"prefetch", twobytemem_insn, 1, SUF_Z, 0x00, 0x0F, 0x0D, 0, CPU_3DNow, 0, 0},
+ {"sha256msg2", intel_SHA256MSG2_insn, 1, SUF_Z, 0, 0, 0, 0, CPU_SHA, 0, 0},
+ {"vpsubsw", xmm_xmm128_256avx2_insn, 4, SUF_Z, 0x66, 0xE9, 0xC0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpmulhrsw", ssse3_insn, 5, SUF_Z, 0x0B, 0xC0, 0, ONLY_AVX, CPU_AVX, 0, 0},
+ {"vpextrd", pextrd_insn, 1, SUF_Z, 0xC0, 0, 0, ONLY_AVX, CPU_AVX, 0, 0}
+ };
+ static const unsigned short tab[] = {
+ 894,83,1140,0,1213,1379,1140,864,11,0,281,793,281,281,864,0,
+ 0,517,0,1312,1213,0,1213,323,0,11,11,1212,0,0,764,0,
+ 351,793,1140,762,323,823,323,1044,1213,323,665,764,665,665,0,1044,
+ 159,764,197,1044,0,1312,1042,605,281,721,1379,333,348,1432,764,665,
+ 0,629,83,764,0,508,1140,0,1140,0,0,605,764,1042,0,1059,
+ 1042,11,83,517,1044,1140,1042,665,1213,629,351,630,665,348,83,924,
+ 1042,11,0,517,83,395,1140,1379,988,1213,1213,281,323,629,1140,1116,
+ 1477,574,1312,864,323,1000,323,823,793,281,721,1074,1044,864,1044,1044,
+ 896,1213,517,11,281,0,764,1042,1312,281,1379,702,605,1203,1212,824,
+ 1481,0,1232,0,1000,323,1105,0,307,764,0,508,281,764,988,0,
+ 884,665,0,0,824,1312,1140,517,517,288,281,823,1140,702,823,517,
+ 341,528,1042,1338,0,1044,1529,1232,988,1203,517,323,0,0,47,764,
+ 399,1213,1140,333,1338,64,1213,11,864,293,1312,1109,0,988,1116,427,
+ 323,1140,1432,764,11,764,323,0,1042,630,427,0,580,630,336,1312,
+ 179,517,1042,1383,0,506,0,988,83,988,1140,336,11,11,1140,11,
+ 1042,864,1218,630,517,83,333,1044,1312,197,0,0,864,793,702,323,
+ 0,1140,574,764,83,924,111,764,1312,159,94,1481,1044,265,281,665,
+ 0,1140,665,1383,62,323,528,764,574,986,764,665,935,630,1042,281,
+ 988,517,1044,83,630,567,988,399,1140,1232,1042,580,764,1042,0,864,
+ 1189,605,443,348,11,864,83,307,894,605,1204,1140,0,764,829,1140,
+ 892,665,988,1116,517,1042,517,0,348,1213,1109,605,605,1312,1140,197,
+ 1044,0,891,83,982,83,6,1185,1127,83,399,83,1042,1312,1044,1042,
+ 0,281,197,1509,924,517,630,935,811,665,896,517,179,1203,605,829,
+ 864,83,1295,83,0,1312,11,328,1140,891,1432,0,0,764,793,1218,
+ 1217,665,1089,519,1312,570,629,1312,764,1165,307,281,257,889,1042,721,
+ 764,1109,443,281,0,0,884,440,688,0,864,1140,1116,83,1140,874,
+ 1042,1213,0,1053,1477,427,336,0,605,665,1312,803,0,764,442,517,
+ 605,1212,1508,702,333,665,764,0,0,630,0,1140,968,525,1212,0,
+ 0,1379,72,0,764,0,1027,327,83,788,145,1476,1107,0,721,358,
+ 894,823,1206,307,1523,281,630,988,94,793,764,1415,721,1074,0,0,
+ 629,1218,919,665,336,1474,799,733,1044,876,215,1212,1169,665,864,864,
+ 764,605,342,1438,569,0,11,0,522,1212,1020,33,427,1064,265,835,
+ };
+
+ const struct insnprefix_parse_data *ret;
+ unsigned long rsl, val = phash_lookup(key, len, 0xbe1e08bbUL);
+ rsl = ((val>>23)^tab[val&0x1ff]);
+ if (rsl >= 1454) return NULL;
+ ret = &pd[rsl];
+ if (strcmp(key, ret->name) != 0) return NULL;
+ return ret;
+}
+
+
diff --git a/contrib/tools/yasm/modules/x86insns.c b/contrib/tools/yasm/modules/x86insns.c
index 05e638bd0c..df5b6fae36 100644
--- a/contrib/tools/yasm/modules/x86insns.c
+++ b/contrib/tools/yasm/modules/x86insns.c
@@ -1,2424 +1,2424 @@
-/* Generated by gen_x86_insn.py rHEAD, do not edit */
-static const x86_info_operand insn_operands[] = {
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_Mem, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_SIMDRM, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_SIMDRM, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEXImmSrc, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_SIMDRM, OPS_256, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_VEXImmSrc, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_SIMDRM, OPS_256, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_Mem, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEXImmSrc, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_Mem, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEXImmSrc, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEXImmSrc, OPAP_None},
- {OPT_Mem, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_Mem, OPS_8, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_SpareVEX, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_Mem, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_SIMDRM, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEXImmSrc, OPAP_None},
- {OPT_SIMDRM, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_VEXImmSrc, OPAP_None},
- {OPT_SIMDRM, OPS_256, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_Mem, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEXImmSrc, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEXImmSrc, OPAP_None},
- {OPT_Mem, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_SpareVEX, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_SpareVEX, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_SpareVEX, OPAP_None},
- {OPT_Mem, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_Reg, OPS_16, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 0, 0, OPTM_None, OPA_SImm, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 0, 0, OPTM_None, OPA_SImm, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 0, 0, OPTM_None, OPA_SImm, OPAP_None},
- {OPT_Reg, OPS_16, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_16, 1, 0, OPTM_None, OPA_SImm, OPAP_SImm8},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_32, 1, 0, OPTM_None, OPA_SImm, OPAP_SImm8},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_32, 1, 0, OPTM_None, OPA_SImm, OPAP_SImm8},
- {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Mem, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_SpareVEX, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_SpareVEX, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_SpareVEX, OPAP_None},
- {OPT_Mem, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDRM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_SpareVEX, OPAP_None},
- {OPT_Mem, OPS_8, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_SpareVEX, OPAP_None},
- {OPT_Mem, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDRM, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_SpareVEX, OPAP_None},
- {OPT_SIMDRM, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_Mem, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDRM, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDRM, OPS_256, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_Mem, OPS_8, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_SpareVEX, OPAP_None},
- {OPT_SIMDRM, OPS_256, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDRM, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDRM, OPS_256, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_Mem, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_Mem, OPS_128, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_MemXMMIndex, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_MemXMMIndex, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_SpareVEX, OPAP_None},
- {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_32, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_32, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDRM, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_SpareVEX, OPAP_None},
- {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDRM, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_XMM0, OPS_128, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_MemXMMIndex, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_MemYMMIndex, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_MemYMMIndex, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_RM, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_16, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_RM, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_16, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Creg, OPS_8, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Creg, OPS_8, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Creg, OPS_8, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_MemYMMIndex, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_RM, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
- {OPT_RM, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_RM, OPS_16, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_RM, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_RM, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_16, 0, 0, OPTM_None, OPA_SpareEA, OPAP_None},
- {OPT_Imm, OPS_8, 0, 0, OPTM_None, OPA_SImm, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_SpareEA, OPAP_None},
- {OPT_Imm, OPS_8, 0, 0, OPTM_None, OPA_SImm, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_SpareEA, OPAP_None},
- {OPT_Imm, OPS_8, 0, 0, OPTM_None, OPA_SImm, OPAP_None},
- {OPT_Reg, OPS_16, 0, 0, OPTM_None, OPA_SpareEA, OPAP_None},
- {OPT_Imm, OPS_16, 1, 0, OPTM_None, OPA_SImm, OPAP_SImm8},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_SpareEA, OPAP_None},
- {OPT_Imm, OPS_32, 1, 0, OPTM_None, OPA_SImm, OPAP_SImm8},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_SpareEA, OPAP_None},
- {OPT_Imm, OPS_32, 1, 0, OPTM_None, OPA_SImm, OPAP_SImm8},
- {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Mem, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_RM, OPS_8, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_8, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Reg, OPS_8, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_8, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_ST0, OPS_80, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_Reg, OPS_80, 0, 0, OPTM_None, OPA_Op1Add, OPAP_None},
- {OPT_Reg, OPS_80, 0, 0, OPTM_None, OPA_Op1Add, OPAP_None},
- {OPT_ST0, OPS_80, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_SIMDRM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDRM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDRM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Mem, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Mem, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Areg, OPS_8, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_MemOffs, OPS_8, 1, 1, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Areg, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_MemOffs, OPS_16, 1, 1, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Areg, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_MemOffs, OPS_32, 1, 1, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Areg, OPS_64, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_MemOffs, OPS_64, 1, 1, OPTM_None, OPA_EA, OPAP_None},
- {OPT_MemOffs, OPS_8, 1, 1, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Areg, OPS_8, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_MemOffs, OPS_16, 1, 1, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Areg, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_MemOffs, OPS_32, 1, 1, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Areg, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_MemOffs, OPS_64, 1, 1, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Areg, OPS_64, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Op0Add, OPAP_None},
- {OPT_Imm, OPS_64, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Mem, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Mem, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Mem, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Areg, OPS_8, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_MemOffs, OPS_8, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Areg, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_MemOffs, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Areg, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_MemOffs, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_MemOffs, OPS_8, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Areg, OPS_8, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_MemOffs, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Areg, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_MemOffs, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Areg, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_RM, OPS_8, 1, 0, OPTM_None, OPA_EA, OPAP_ShortMov},
- {OPT_Areg, OPS_8, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_ShortMov},
- {OPT_Areg, OPS_16, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_ShortMov},
- {OPT_Areg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_ShortMov},
- {OPT_Areg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Areg, OPS_8, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_8, 1, 0, OPTM_None, OPA_EA, OPAP_ShortMov},
- {OPT_Areg, OPS_16, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_ShortMov},
- {OPT_Areg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_ShortMov},
- {OPT_Areg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_ShortMov},
- {OPT_Mem, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SegReg, OPS_16, 1, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Reg, OPS_16, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SegReg, OPS_16, 1, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SegReg, OPS_16, 1, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SegReg, OPS_16, 1, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SegReg, OPS_16, 1, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_8, 0, 0, OPTM_None, OPA_Op0Add, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_Reg, OPS_16, 0, 0, OPTM_None, OPA_Op0Add, OPAP_None},
- {OPT_Imm, OPS_16, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Op0Add, OPAP_None},
- {OPT_Imm, OPS_32, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Op0Add, OPAP_None},
- {OPT_Imm, OPS_64, 0, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Op0Add, OPAP_None},
- {OPT_Imm, OPS_64, 1, 0, OPTM_None, OPA_Imm, OPAP_SImm32Avail},
- {OPT_RM, OPS_8, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 0, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_RM, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_16, 0, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_32, 0, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_32, 0, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_RM, OPS_8, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_RM, OPS_16, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_16, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_RM, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_32, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_RM, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_32, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_CR4, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_CRReg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_CRReg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_CR4, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_CRReg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_DRReg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_DRReg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_DRReg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Mem, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Mem, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Mem, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDRM, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_16, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Reg, OPS_16, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_16, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Mem, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Mem, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_16, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Mem, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Areg, OPS_8, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_RM, OPS_8, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Areg, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_RM, OPS_16, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Areg, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_RM, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Areg, OPS_64, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_RM, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Mem, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_Any, 0, 0, OPTM_None, OPA_JmpRel, OPAP_None},
- {OPT_Creg, OPS_32, 0, 0, OPTM_None, OPA_AdSizeR, OPAP_None},
- {OPT_Imm, OPS_Any, 0, 0, OPTM_Short, OPA_JmpRel, OPAP_None},
- {OPT_Creg, OPS_32, 0, 0, OPTM_None, OPA_AdSizeR, OPAP_None},
- {OPT_SIMDRM, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDRM, OPS_256, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Imm, OPS_Any, 0, 0, OPTM_None, OPA_JmpRel, OPAP_None},
- {OPT_Creg, OPS_64, 0, 0, OPTM_None, OPA_AdSizeR, OPAP_None},
- {OPT_Imm, OPS_Any, 0, 0, OPTM_Short, OPA_JmpRel, OPAP_None},
- {OPT_Creg, OPS_64, 0, 0, OPTM_None, OPA_AdSizeR, OPAP_None},
- {OPT_Imm, OPS_Any, 0, 0, OPTM_None, OPA_JmpRel, OPAP_None},
- {OPT_Creg, OPS_16, 0, 0, OPTM_None, OPA_AdSizeR, OPAP_None},
- {OPT_Imm, OPS_Any, 0, 0, OPTM_Short, OPA_JmpRel, OPAP_None},
- {OPT_Creg, OPS_16, 0, 0, OPTM_None, OPA_AdSizeR, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_Areg, OPS_8, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_Areg, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_Areg, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_Dreg, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_Areg, OPS_8, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_Dreg, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_Areg, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_Dreg, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_Areg, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Mem, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_EAVEX, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_EAVEX, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_MemrAX, OPS_Any, 0, 0, OPTM_None, OPA_AdSizeEA, OPAP_None},
- {OPT_Creg, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_Areg, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_Reg, OPS_16, 0, 0, OPTM_None, OPA_Op0Add, OPAP_None},
- {OPT_Reg, OPS_16, 0, 0, OPTM_None, OPA_Op0Add, OPAP_None},
- {OPT_Areg, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_Areg, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Areg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Areg, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Op0Add, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Op0Add, OPAP_None},
- {OPT_Areg, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_Areg, OPS_64, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_Areg, OPS_64, 0, 0, OPTM_None, OPA_Op0Add, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Op0Add, OPAP_None},
- {OPT_Areg, OPS_64, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_Reg, OPS_16, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Mem, OPS_Any, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Mem, OPS_Any, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Mem, OPS_Any, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_8, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_16, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_8, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_RM, OPS_8, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Creg, OPS_8, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_RM, OPS_8, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm1, OPS_8, 1, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_RM, OPS_16, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Creg, OPS_8, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_RM, OPS_16, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm1, OPS_8, 1, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_RM, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Creg, OPS_8, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_RM, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm1, OPS_8, 1, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_RM, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Creg, OPS_8, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_RM, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm1, OPS_8, 1, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_Imm, OPS_16, 1, 0, OPTM_None, OPA_JmpFar, OPAP_None},
- {OPT_Imm, OPS_16, 1, 0, OPTM_None, OPA_JmpFar, OPAP_None},
- {OPT_Imm, OPS_16, 1, 0, OPTM_None, OPA_JmpFar, OPAP_None},
- {OPT_Imm, OPS_32, 1, 0, OPTM_None, OPA_JmpFar, OPAP_None},
- {OPT_Imm, OPS_16, 1, 0, OPTM_None, OPA_JmpFar, OPAP_None},
- {OPT_Imm, OPS_BITS, 1, 0, OPTM_None, OPA_JmpFar, OPAP_None},
- {OPT_Areg, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_Imm, OPS_16, 1, 0, OPTM_None, OPA_Imm, OPAP_SImm8},
- {OPT_Areg, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_Imm, OPS_32, 1, 0, OPTM_None, OPA_Imm, OPAP_SImm8},
- {OPT_Areg, OPS_64, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_Imm, OPS_32, 1, 0, OPTM_None, OPA_Imm, OPAP_SImm8},
- {OPT_RM, OPS_16, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 0, 0, OPTM_None, OPA_SImm, OPAP_None},
- {OPT_RM, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_16, 0, 0, OPTM_None, OPA_Imm, OPAP_SImm8},
- {OPT_RM, OPS_16, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_16, 1, 0, OPTM_None, OPA_Imm, OPAP_SImm8},
- {OPT_RM, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 0, 0, OPTM_None, OPA_SImm, OPAP_None},
- {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_32, 0, 0, OPTM_None, OPA_Imm, OPAP_SImm8},
- {OPT_RM, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_32, 1, 0, OPTM_None, OPA_Imm, OPAP_SImm8},
- {OPT_RM, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_8, 0, 0, OPTM_None, OPA_SImm, OPAP_None},
- {OPT_RM, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_32, 1, 0, OPTM_None, OPA_Imm, OPAP_SImm8},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Mem, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Mem, OPS_256, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Mem, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Mem, OPS_256, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Reg, OPS_16, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_8, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_16, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDRM, OPS_128, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDRM, OPS_256, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Mem, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Mem, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDRM, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Areg, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_Mem, OPS_80, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SegReg, OPS_16, 1, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDRM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Areg, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_Imm, OPS_16, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_Areg, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_Imm, OPS_32, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_Areg, OPS_64, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_Imm, OPS_32, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_SegReg, OPS_16, 1, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Mem, OPS_80, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Mem, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_Mem, OPS_128, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_8, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_8, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_SpareVEX, OPAP_None},
- {OPT_SIMDRM, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_A16},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
- {OPT_RM, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_SpareVEX, OPAP_None},
- {OPT_RM, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_SpareVEX, OPAP_None},
- {OPT_RM, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Mem, OPS_16, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Mem, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_MemEAX, OPS_Any, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_Mem, OPS_80, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Reg, OPS_BITS, 0, 0, OPTM_None, OPA_Op0Add, OPAP_None},
- {OPT_RM, OPS_BITS, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_SS, OPS_Any, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_SS, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_SS, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_DS, OPS_Any, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_DS, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_DS, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_ES, OPS_Any, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_ES, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_ES, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_FS, OPS_Any, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_FS, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_FS, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_GS, OPS_Any, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_GS, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_GS, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_Mem, OPS_Any, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_ImmNotSegOff, OPS_Any, 0, 0, OPTM_None, OPA_JmpRel, OPAP_None},
- {OPT_ImmNotSegOff, OPS_16, 0, 0, OPTM_None, OPA_JmpRel, OPAP_None},
- {OPT_ImmNotSegOff, OPS_32, 0, 0, OPTM_None, OPA_JmpRel, OPAP_None},
- {OPT_Imm, OPS_16, 0, 0, OPTM_Near, OPA_JmpRel, OPAP_None},
- {OPT_Imm, OPS_32, 0, 0, OPTM_Near, OPA_JmpRel, OPAP_None},
- {OPT_Imm, OPS_Any, 0, 0, OPTM_Near, OPA_JmpRel, OPAP_None},
- {OPT_Reg, OPS_BITS, 0, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_RM, OPS_16, 0, 0, OPTM_Near, OPA_EA, OPAP_None},
- {OPT_RM, OPS_32, 0, 0, OPTM_Near, OPA_EA, OPAP_None},
- {OPT_RM, OPS_64, 0, 0, OPTM_Near, OPA_EA, OPAP_None},
- {OPT_Mem, OPS_Any, 0, 0, OPTM_Near, OPA_EA, OPAP_None},
- {OPT_Mem, OPS_16, 0, 0, OPTM_Far, OPA_EA, OPAP_None},
- {OPT_Mem, OPS_32, 0, 0, OPTM_Far, OPA_EA, OPAP_None},
- {OPT_Mem, OPS_64, 0, 0, OPTM_Far, OPA_EA, OPAP_None},
- {OPT_Mem, OPS_Any, 0, 0, OPTM_Far, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_16, 0, 0, OPTM_Far, OPA_JmpFar, OPAP_None},
- {OPT_Imm, OPS_32, 0, 0, OPTM_Far, OPA_JmpFar, OPAP_None},
- {OPT_Imm, OPS_Any, 0, 0, OPTM_Far, OPA_JmpFar, OPAP_None},
- {OPT_Imm, OPS_16, 0, 0, OPTM_None, OPA_JmpFar, OPAP_None},
- {OPT_Imm, OPS_32, 0, 0, OPTM_None, OPA_JmpFar, OPAP_None},
- {OPT_Imm, OPS_Any, 0, 0, OPTM_None, OPA_JmpFar, OPAP_None},
- {OPT_Reg, OPS_80, 0, 0, OPTM_To, OPA_Op1Add, OPAP_None},
- {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Op1Add, OPAP_None},
- {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Op1Add, OPAP_None},
- {OPT_Mem, OPS_BITS, 1, 0, OPTM_None, OPA_EA, OPAP_None},
- {OPT_Imm, OPS_16, 0, 0, OPTM_None, OPA_JmpRel, OPAP_None},
- {OPT_Imm, OPS_32, 0, 0, OPTM_None, OPA_JmpRel, OPAP_None},
- {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_SImm, OPAP_None},
- {OPT_Imm, OPS_BITS, 1, 0, OPTM_None, OPA_Imm, OPAP_SImm8},
- {OPT_Imm, OPS_32, 0, 0, OPTM_None, OPA_SImm, OPAP_None},
- {OPT_CS, OPS_Any, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_CS, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
- {OPT_CS, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None}
-};
-
-static const x86_insn_info empty_insn[] = {
- { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0 }
-};
-
-static const x86_insn_info not64_insn[] = {
- { SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0 }
-};
-
-static const x86_insn_info onebyte_insn[] = {
- { SUF_Z, 0, 0, 0, 0, {MOD_Op0Add, MOD_OpSizeR, MOD_DOpS64R}, 0, 0, 0, 1, {0x00, 0, 0}, 0, 0, 0 }
-};
-
-static const x86_insn_info onebyte_prefix_insn[] = {
- { SUF_Z, 0, 0, 0, 0, {MOD_PreAdd, MOD_Op0Add, 0}, 0, 0, 0x00, 1, {0x00, 0, 0}, 0, 0, 0 }
-};
-
-static const x86_insn_info twobyte_insn[] = {
- { SUF_L|SUF_Q|SUF_Z, 0, 0, 0, 0, {MOD_Op0Add, MOD_Op1Add, 0}, 0, 0, 0, 2, {0x00, 0x00, 0}, 0, 0, 0 }
-};
-
-static const x86_insn_info threebyte_insn[] = {
- { SUF_Z, 0, 0, 0, 0, {MOD_Op0Add, MOD_Op1Add, MOD_Op2Add}, 0, 0, 0, 3, {0x00, 0x00, 0x00}, 0, 0, 0 }
-};
-
-static const x86_insn_info onebytemem_insn[] = {
- { SUF_L|SUF_Q|SUF_S|SUF_Z, 0, 0, 0, 0, {MOD_SpAdd, MOD_Op0Add, 0}, 0, 0, 0, 1, {0x00, 0, 0}, 0, 1, 674 }
-};
-
-static const x86_insn_info twobytemem_insn[] = {
- { SUF_L|SUF_Q|SUF_S|SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_SpAdd, MOD_Op0Add, MOD_Op1Add}, 0, 0, 0, 2, {0x00, 0x00, 0}, 0, 1, 532 }
-};
-
-static const x86_insn_info mov_insn[] = {
- { SUF_B|SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xA0, 0, 0}, 0, 2, 365 },
- { SUF_W|SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xA1, 0, 0}, 0, 2, 367 },
- { SUF_L|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xA1, 0, 0}, 0, 2, 369 },
- { SUF_B|SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xA2, 0, 0}, 0, 2, 371 },
- { SUF_W|SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xA3, 0, 0}, 0, 2, 373 },
- { SUF_L|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xA3, 0, 0}, 0, 2, 375 },
- { SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xA0, 0, 0}, 0, 2, 341 },
- { SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xA1, 0, 0}, 0, 2, 343 },
- { SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xA1, 0, 0}, 0, 2, 345 },
- { SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0xA1, 0, 0}, 0, 2, 347 },
- { SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xA2, 0, 0}, 0, 2, 349 },
- { SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xA3, 0, 0}, 0, 2, 351 },
- { SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xA3, 0, 0}, 0, 2, 353 },
- { SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0xA3, 0, 0}, 0, 2, 355 },
- { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x88, 0xA2, 0}, 0, 2, 377 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x89, 0xA3, 0}, 0, 2, 379 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x89, 0xA3, 0}, 0, 2, 381 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x89, 0xA3, 0}, 0, 2, 383 },
- { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x88, 0, 0}, 0, 2, 323 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x89, 0, 0}, 0, 2, 260 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x89, 0, 0}, 0, 2, 266 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x89, 0, 0}, 0, 2, 272 },
- { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x8A, 0xA0, 0}, 0, 2, 385 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x8B, 0xA1, 0}, 0, 2, 387 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x8B, 0xA1, 0}, 0, 2, 389 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x8B, 0xA1, 0}, 0, 2, 391 },
- { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x8A, 0, 0}, 0, 2, 325 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x8B, 0, 0}, 0, 2, 98 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x8B, 0, 0}, 0, 2, 101 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x8B, 0, 0}, 0, 2, 104 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x8C, 0, 0}, 0, 2, 393 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x8C, 0, 0}, 0, 2, 395 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x8C, 0, 0}, 0, 2, 397 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x8C, 0, 0}, 0, 2, 399 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x8E, 0, 0}, 0, 2, 401 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x8E, 0, 0}, 0, 2, 396 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x8E, 0, 0}, 0, 2, 398 },
- { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xB0, 0, 0}, 0, 2, 403 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xB8, 0, 0}, 0, 2, 405 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xB8, 0, 0}, 0, 2, 407 },
- { GAS_ILLEGAL|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0xB8, 0, 0}, 0, 2, 409 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0xB8, 0xC7, 0}, 0, 2, 411 },
- { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xC6, 0, 0}, 0, 2, 413 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xC7, 0, 0}, 0, 2, 415 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xC7, 0, 0}, 0, 2, 417 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0xC7, 0, 0}, 0, 2, 419 },
- { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xC6, 0, 0}, 0, 2, 421 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xC7, 0, 0}, 0, 2, 423 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xC7, 0, 0}, 0, 2, 425 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0xC7, 0, 0}, 0, 2, 427 },
- { SUF_L|SUF_Z, NOT_64, CPU_586, CPU_Priv, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x22, 0}, 0, 2, 429 },
- { SUF_L|SUF_Z, NOT_64, CPU_386, CPU_Priv, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x22, 0}, 0, 2, 431 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_Priv, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x22, 0}, 0, 2, 433 },
- { SUF_L|SUF_Z, NOT_64, CPU_586, CPU_Priv, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x20, 0}, 0, 2, 435 },
- { SUF_L|SUF_Z, NOT_64, CPU_386, CPU_Priv, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x20, 0}, 0, 2, 430 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_Priv, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x20, 0}, 0, 2, 437 },
- { SUF_L|SUF_Z, NOT_64, CPU_386, CPU_Priv, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x23, 0}, 0, 2, 439 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_Priv, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x23, 0}, 0, 2, 441 },
- { SUF_L|SUF_Z, NOT_64, CPU_386, CPU_Priv, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x21, 0}, 0, 2, 440 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_Priv, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x21, 0}, 0, 2, 443 },
- { GAS_ONLY|SUF_Q|SUF_Z, 0, CPU_MMX, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x6F, 0}, 0, 2, 140 },
- { GAS_ONLY|SUF_Q|SUF_Z, ONLY_64, CPU_MMX, 0, 0, {0, 0, 0}, 64, 0, 0, 2, {0x0F, 0x6E, 0}, 0, 2, 295 },
- { GAS_ONLY|SUF_Q|SUF_Z, 0, CPU_MMX, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x7F, 0}, 0, 2, 331 },
- { GAS_ONLY|SUF_Q|SUF_Z, ONLY_64, CPU_MMX, 0, 0, {0, 0, 0}, 64, 0, 0, 2, {0x0F, 0x7E, 0}, 0, 2, 297 },
- { GAS_ONLY|SUF_Q|SUF_Z, 0, CPU_SSE2, 0, 0, {0, 0, 0}, 0, 0, 0xF3, 2, {0x0F, 0x7E, 0}, 0, 2, 64 },
- { GAS_ONLY|SUF_Q|SUF_Z, 0, CPU_SSE2, 0, 0, {0, 0, 0}, 0, 0, 0xF3, 2, {0x0F, 0x7E, 0}, 0, 2, 333 },
- { GAS_ONLY|SUF_Q|SUF_Z, ONLY_64, CPU_SSE2, 0, 0, {0, 0, 0}, 64, 0, 0x66, 2, {0x0F, 0x6E, 0}, 0, 2, 301 },
- { GAS_ONLY|SUF_Q|SUF_Z, 0, CPU_SSE2, 0, 0, {0, 0, 0}, 0, 0, 0x66, 2, {0x0F, 0xD6, 0}, 0, 2, 335 },
- { GAS_ONLY|SUF_Q|SUF_Z, ONLY_64, CPU_SSE2, 0, 0, {0, 0, 0}, 64, 0, 0x66, 2, {0x0F, 0x7E, 0}, 0, 2, 182 }
-};
-
-static const x86_insn_info movabs_insn[] = {
- { SUF_B|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xA0, 0, 0}, 0, 2, 341 },
- { SUF_W|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xA1, 0, 0}, 0, 2, 343 },
- { SUF_L|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xA1, 0, 0}, 0, 2, 345 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0xA1, 0, 0}, 0, 2, 347 },
- { SUF_B|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xA2, 0, 0}, 0, 2, 349 },
- { SUF_W|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xA3, 0, 0}, 0, 2, 351 },
- { SUF_L|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xA3, 0, 0}, 0, 2, 353 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0xA3, 0, 0}, 0, 2, 355 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0xB8, 0, 0}, 0, 2, 357 }
-};
-
-static const x86_insn_info movszx_insn[] = {
- { SUF_B|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 16, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 603 },
- { SUF_B|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 32, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 537 },
- { SUF_B|SUF_Z, ONLY_64, 0, 0, 0, {MOD_Op1Add, 0, 0}, 64, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 541 },
- { SUF_W|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 32, 0, 0, 2, {0x0F, 0x01, 0}, 0, 2, 539 },
- { SUF_W|SUF_Z, ONLY_64, 0, 0, 0, {MOD_Op1Add, 0, 0}, 64, 0, 0, 2, {0x0F, 0x01, 0}, 0, 2, 605 }
-};
-
-static const x86_insn_info movsxd_insn[] = {
- { SUF_L|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x63, 0, 0}, 0, 2, 647 }
-};
-
-static const x86_insn_info push_insn[] = {
- { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0x50, 0, 0}, 0, 1, 657 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 64, 0, 1, {0x50, 0, 0}, 0, 1, 405 },
- { SUF_L|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x50, 0, 0}, 0, 1, 407 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0x50, 0, 0}, 0, 1, 357 },
- { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0xFF, 0, 0}, 6, 1, 658 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 64, 0, 1, {0xFF, 0, 0}, 6, 1, 287 },
- { SUF_L|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xFF, 0, 0}, 6, 1, 283 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0xFF, 0, 0}, 6, 1, 286 },
- { GAS_ILLEGAL|SUF_Z, 0, CPU_186, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0x6A, 0, 0}, 0, 1, 100 },
- { GAS_ONLY|SUF_Z, 0, CPU_186, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0x6A, 0, 0}, 0, 1, 702 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 64, 0, 1, {0x6A, 0x68, 0}, 0, 1, 112 },
- { GAS_ILLEGAL|SUF_Z, NOT_64, CPU_186, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x6A, 0x68, 0}, 0, 1, 703 },
- { SUF_W|SUF_Z, 0, CPU_186, 0, 0, {0, 0, 0}, 16, 64, 0, 1, {0x6A, 0x68, 0}, 0, 1, 574 },
- { SUF_L|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x6A, 0x68, 0}, 0, 1, 576 },
- { GAS_ILLEGAL|SUF_Z, 0, CPU_186, 0, 0, {0, 0, 0}, 16, 64, 0, 1, {0x68, 0, 0}, 0, 1, 416 },
- { GAS_ILLEGAL|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x68, 0, 0}, 0, 1, 418 },
- { GAS_ILLEGAL|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 64, 0, 1, {0x68, 0, 0}, 0, 1, 704 },
- { SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x0E, 0, 0}, 0, 1, 705 },
- { SUF_W|SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x0E, 0, 0}, 0, 1, 706 },
- { SUF_L|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x0E, 0, 0}, 0, 1, 707 },
- { SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x16, 0, 0}, 0, 1, 659 },
- { SUF_W|SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x16, 0, 0}, 0, 1, 660 },
- { SUF_L|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x16, 0, 0}, 0, 1, 661 },
- { SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x1E, 0, 0}, 0, 1, 662 },
- { SUF_W|SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x1E, 0, 0}, 0, 1, 663 },
- { SUF_L|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x1E, 0, 0}, 0, 1, 664 },
- { SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x06, 0, 0}, 0, 1, 665 },
- { SUF_W|SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x06, 0, 0}, 0, 1, 666 },
- { SUF_L|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x06, 0, 0}, 0, 1, 667 },
- { SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0xA0, 0}, 0, 1, 668 },
- { SUF_W|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 16, 0, 0, 2, {0x0F, 0xA0, 0}, 0, 1, 669 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 2, {0x0F, 0xA0, 0}, 0, 1, 670 },
- { SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0xA8, 0}, 0, 1, 671 },
- { SUF_W|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 16, 0, 0, 2, {0x0F, 0xA8, 0}, 0, 1, 672 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 2, {0x0F, 0xA8, 0}, 0, 1, 673 }
-};
-
-static const x86_insn_info pop_insn[] = {
- { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0x58, 0, 0}, 0, 1, 657 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 64, 0, 1, {0x58, 0, 0}, 0, 1, 405 },
- { SUF_L|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x58, 0, 0}, 0, 1, 407 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0x58, 0, 0}, 0, 1, 357 },
- { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0x8F, 0, 0}, 0, 1, 658 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 64, 0, 1, {0x8F, 0, 0}, 0, 1, 287 },
- { SUF_L|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x8F, 0, 0}, 0, 1, 283 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0x8F, 0, 0}, 0, 1, 286 },
- { SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x17, 0, 0}, 0, 1, 659 },
- { SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x17, 0, 0}, 0, 1, 660 },
- { SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x17, 0, 0}, 0, 1, 661 },
- { SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x1F, 0, 0}, 0, 1, 662 },
- { SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x1F, 0, 0}, 0, 1, 663 },
- { SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x1F, 0, 0}, 0, 1, 664 },
- { SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x07, 0, 0}, 0, 1, 665 },
- { SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x07, 0, 0}, 0, 1, 666 },
- { SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x07, 0, 0}, 0, 1, 667 },
- { SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0xA1, 0}, 0, 1, 668 },
- { SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 16, 0, 0, 2, {0x0F, 0xA1, 0}, 0, 1, 669 },
- { SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 2, {0x0F, 0xA1, 0}, 0, 1, 670 },
- { SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0xA9, 0}, 0, 1, 671 },
- { SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 16, 0, 0, 2, {0x0F, 0xA9, 0}, 0, 1, 672 },
- { SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 2, {0x0F, 0xA9, 0}, 0, 1, 673 }
-};
-
-static const x86_insn_info xchg_insn[] = {
- { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x86, 0, 0}, 0, 2, 323 },
- { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x86, 0, 0}, 0, 2, 325 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x90, 0, 0}, 0, 2, 517 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x90, 0, 0}, 0, 2, 519 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x87, 0, 0}, 0, 2, 260 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x87, 0, 0}, 0, 2, 98 },
- { SUF_L|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x87, 0, 0}, 0, 2, 521 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x90, 0, 0}, 0, 2, 523 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x90, 0, 0}, 0, 2, 525 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x87, 0, 0}, 0, 2, 266 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x87, 0, 0}, 0, 2, 101 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x90, 0, 0}, 0, 2, 527 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x90, 0, 0}, 0, 2, 356 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x90, 0, 0}, 0, 2, 529 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x87, 0, 0}, 0, 2, 272 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x87, 0, 0}, 0, 2, 104 }
-};
-
-static const x86_insn_info in_insn[] = {
- { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xE4, 0, 0}, 0, 2, 498 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xE5, 0, 0}, 0, 2, 500 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xE5, 0, 0}, 0, 2, 617 },
- { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xEC, 0, 0}, 0, 2, 504 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xED, 0, 0}, 0, 2, 506 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xED, 0, 0}, 0, 2, 502 },
- { GAS_ONLY|SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xE4, 0, 0}, 0, 1, 3 },
- { GAS_ONLY|SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xE5, 0, 0}, 0, 1, 3 },
- { GAS_ONLY|SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xE5, 0, 0}, 0, 1, 3 },
- { GAS_ONLY|SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xEC, 0, 0}, 0, 1, 503 },
- { GAS_ONLY|SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xED, 0, 0}, 0, 1, 503 },
- { GAS_ONLY|SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xED, 0, 0}, 0, 1, 503 }
-};
-
-static const x86_insn_info out_insn[] = {
- { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xE6, 0, 0}, 0, 2, 497 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xE7, 0, 0}, 0, 2, 499 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xE7, 0, 0}, 0, 2, 501 },
- { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xEE, 0, 0}, 0, 2, 503 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xEF, 0, 0}, 0, 2, 505 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xEF, 0, 0}, 0, 2, 507 },
- { GAS_ONLY|SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xE6, 0, 0}, 0, 1, 3 },
- { GAS_ONLY|SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xE7, 0, 0}, 0, 1, 3 },
- { GAS_ONLY|SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xE7, 0, 0}, 0, 1, 3 },
- { GAS_ONLY|SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xEE, 0, 0}, 0, 1, 503 },
- { GAS_ONLY|SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xEF, 0, 0}, 0, 1, 503 },
- { GAS_ONLY|SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xEF, 0, 0}, 0, 1, 503 }
-};
-
-static const x86_insn_info lea_insn[] = {
- { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x8D, 0, 0}, 0, 2, 531 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x8D, 0, 0}, 0, 2, 533 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x8D, 0, 0}, 0, 2, 535 }
-};
-
-static const x86_insn_info ldes_insn[] = {
- { SUF_W|SUF_Z, NOT_64, 0, 0, 0, {MOD_Op0Add, 0, 0}, 16, 0, 0, 1, {0x00, 0, 0}, 0, 2, 531 },
- { SUF_L|SUF_Z, NOT_64, CPU_386, 0, 0, {MOD_Op0Add, 0, 0}, 32, 0, 0, 1, {0x00, 0, 0}, 0, 2, 533 }
-};
-
-static const x86_insn_info lfgss_insn[] = {
- { SUF_W|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 16, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 531 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 32, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 533 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 64, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 535 }
-};
-
-static const x86_insn_info arith_insn[] = {
- { SUF_B|SUF_Z, 0, 0, 0, 0, {MOD_Op0Add, 0, 0}, 0, 0, 0, 1, {0x04, 0, 0}, 0, 2, 498 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_Op2Add, MOD_Op1AddSp, 0}, 16, 0, 0, 2, {0x83, 0xC0, 0x05}, 0, 2, 573 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op2Add, MOD_Op1AddSp, 0}, 32, 0, 0, 2, {0x83, 0xC0, 0x05}, 0, 2, 575 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_Op2Add, MOD_Op1AddSp, 0}, 64, 0, 0, 2, {0x83, 0xC0, 0x05}, 0, 2, 577 },
- { SUF_B|SUF_Z, 0, 0, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 0, 0, 0, 1, {0x80, 0, 0}, 0, 2, 421 },
- { SUF_B|SUF_Z, 0, 0, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 0, 0, 0, 1, {0x80, 0, 0}, 0, 2, 413 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 16, 0, 0, 1, {0x83, 0, 0}, 0, 2, 579 },
- { GAS_ILLEGAL|SUF_Z, 0, 0, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 16, 0, 0, 1, {0x83, 0x81, 0}, 0, 2, 581 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 16, 0, 0, 1, {0x83, 0x81, 0}, 0, 2, 583 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 32, 0, 0, 1, {0x83, 0, 0}, 0, 2, 585 },
- { GAS_ILLEGAL|SUF_Z, NOT_64, CPU_386, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 32, 0, 0, 1, {0x83, 0x81, 0}, 0, 2, 587 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 32, 0, 0, 1, {0x83, 0x81, 0}, 0, 2, 589 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 64, 0, 0, 1, {0x83, 0, 0}, 0, 2, 591 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 64, 0, 0, 1, {0x83, 0x81, 0}, 0, 2, 593 },
- { SUF_B|SUF_Z, 0, 0, 0, 0, {MOD_Op0Add, 0, 0}, 0, 0, 0, 1, {0x00, 0, 0}, 0, 2, 323 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_Op0Add, 0, 0}, 16, 0, 0, 1, {0x01, 0, 0}, 0, 2, 260 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op0Add, 0, 0}, 32, 0, 0, 1, {0x01, 0, 0}, 0, 2, 266 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_Op0Add, 0, 0}, 64, 0, 0, 1, {0x01, 0, 0}, 0, 2, 272 },
- { SUF_B|SUF_Z, 0, 0, 0, 0, {MOD_Op0Add, 0, 0}, 0, 0, 0, 1, {0x02, 0, 0}, 0, 2, 325 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_Op0Add, 0, 0}, 16, 0, 0, 1, {0x03, 0, 0}, 0, 2, 98 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op0Add, 0, 0}, 32, 0, 0, 1, {0x03, 0, 0}, 0, 2, 101 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_Op0Add, 0, 0}, 64, 0, 0, 1, {0x03, 0, 0}, 0, 2, 104 }
-};
-
-static const x86_insn_info incdec_insn[] = {
- { SUF_B|SUF_Z, 0, 0, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 0, 0, 0, 1, {0xFE, 0, 0}, 0, 1, 421 },
- { SUF_W|SUF_Z, NOT_64, 0, 0, 0, {MOD_Op0Add, 0, 0}, 16, 0, 0, 1, {0x00, 0, 0}, 0, 1, 405 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 16, 0, 0, 1, {0xFF, 0, 0}, 0, 1, 287 },
- { SUF_L|SUF_Z, NOT_64, CPU_386, 0, 0, {MOD_Op0Add, 0, 0}, 32, 0, 0, 1, {0x00, 0, 0}, 0, 1, 407 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 32, 0, 0, 1, {0xFF, 0, 0}, 0, 1, 283 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 64, 0, 0, 1, {0xFF, 0, 0}, 0, 1, 286 }
-};
-
-static const x86_insn_info f6_insn[] = {
- { SUF_B|SUF_Z, 0, 0, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0, 1, {0xF6, 0, 0}, 0, 1, 421 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_SpAdd, 0, 0}, 16, 0, 0, 1, {0xF7, 0, 0}, 0, 1, 287 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_SpAdd, 0, 0}, 32, 0, 0, 1, {0xF7, 0, 0}, 0, 1, 283 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_SpAdd, 0, 0}, 64, 0, 0, 1, {0xF7, 0, 0}, 0, 1, 286 }
-};
-
-static const x86_insn_info div_insn[] = {
- { SUF_B|SUF_Z, 0, 0, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0, 1, {0xF6, 0, 0}, 0, 1, 421 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_SpAdd, 0, 0}, 16, 0, 0, 1, {0xF7, 0, 0}, 0, 1, 287 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_SpAdd, 0, 0}, 32, 0, 0, 1, {0xF7, 0, 0}, 0, 1, 283 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_SpAdd, 0, 0}, 64, 0, 0, 1, {0xF7, 0, 0}, 0, 1, 286 },
- { SUF_B|SUF_Z, 0, 0, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0, 1, {0xF6, 0, 0}, 0, 2, 471 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_SpAdd, 0, 0}, 16, 0, 0, 1, {0xF7, 0, 0}, 0, 2, 473 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_SpAdd, 0, 0}, 32, 0, 0, 1, {0xF7, 0, 0}, 0, 2, 475 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_SpAdd, 0, 0}, 64, 0, 0, 1, {0xF7, 0, 0}, 0, 2, 477 }
-};
-
-static const x86_insn_info test_insn[] = {
- { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xA8, 0, 0}, 0, 2, 498 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xA9, 0, 0}, 0, 2, 623 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xA9, 0, 0}, 0, 2, 625 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0xA9, 0, 0}, 0, 2, 627 },
- { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xF6, 0, 0}, 0, 2, 421 },
- { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xF6, 0, 0}, 0, 2, 413 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xF7, 0, 0}, 0, 2, 423 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xF7, 0, 0}, 0, 2, 415 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xF7, 0, 0}, 0, 2, 425 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xF7, 0, 0}, 0, 2, 417 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0xF7, 0, 0}, 0, 2, 427 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0xF7, 0, 0}, 0, 2, 419 },
- { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x84, 0, 0}, 0, 2, 323 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x85, 0, 0}, 0, 2, 260 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x85, 0, 0}, 0, 2, 266 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x85, 0, 0}, 0, 2, 272 },
- { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x84, 0, 0}, 0, 2, 325 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x85, 0, 0}, 0, 2, 98 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x85, 0, 0}, 0, 2, 101 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x85, 0, 0}, 0, 2, 104 }
-};
-
-static const x86_insn_info aadm_insn[] = {
- { SUF_Z, 0, 0, 0, 0, {MOD_Op0Add, 0, 0}, 0, 0, 0, 2, {0xD4, 0x0A, 0}, 0, 0, 0 },
- { SUF_Z, 0, 0, 0, 0, {MOD_Op0Add, 0, 0}, 0, 0, 0, 1, {0xD4, 0, 0}, 0, 1, 3 }
-};
-
-static const x86_insn_info imul_insn[] = {
- { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xF6, 0, 0}, 5, 1, 421 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xF7, 0, 0}, 5, 1, 287 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xF7, 0, 0}, 5, 1, 283 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0xF7, 0, 0}, 5, 1, 286 },
- { SUF_W|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 16, 0, 0, 2, {0x0F, 0xAF, 0}, 0, 2, 98 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 2, {0x0F, 0xAF, 0}, 0, 2, 101 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_386, 0, 0, {0, 0, 0}, 64, 0, 0, 2, {0x0F, 0xAF, 0}, 0, 2, 104 },
- { SUF_W|SUF_Z, 0, CPU_186, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x6B, 0, 0}, 0, 3, 98 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x6B, 0, 0}, 0, 3, 101 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_186, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x6B, 0, 0}, 0, 3, 104 },
- { SUF_W|SUF_Z, 0, CPU_186, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x6B, 0, 0}, 0, 2, 303 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x6B, 0, 0}, 0, 2, 305 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_186, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x6B, 0, 0}, 0, 2, 307 },
- { SUF_W|SUF_Z, 0, CPU_186, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x6B, 0x69, 0}, 0, 3, 107 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x6B, 0x69, 0}, 0, 3, 110 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_186, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x6B, 0x69, 0}, 0, 3, 113 },
- { SUF_W|SUF_Z, 0, CPU_186, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x6B, 0x69, 0}, 0, 2, 309 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x6B, 0x69, 0}, 0, 2, 311 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_186, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x6B, 0x69, 0}, 0, 2, 313 }
-};
-
-static const x86_insn_info shift_insn[] = {
- { SUF_B|SUF_Z, 0, 0, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0, 1, {0xD2, 0, 0}, 0, 2, 551 },
- { SUF_B|SUF_Z, 0, 0, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0, 1, {0xD0, 0, 0}, 0, 2, 553 },
- { SUF_B|SUF_Z, 0, CPU_186, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0, 1, {0xC0, 0, 0}, 0, 2, 421 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_SpAdd, 0, 0}, 16, 0, 0, 1, {0xD3, 0, 0}, 0, 2, 555 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_SpAdd, 0, 0}, 16, 0, 0, 1, {0xD1, 0, 0}, 0, 2, 557 },
- { SUF_W|SUF_Z, 0, CPU_186, 0, 0, {MOD_SpAdd, 0, 0}, 16, 0, 0, 1, {0xC1, 0, 0}, 0, 2, 287 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_SpAdd, 0, 0}, 32, 0, 0, 1, {0xD3, 0, 0}, 0, 2, 559 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_SpAdd, 0, 0}, 32, 0, 0, 1, {0xD1, 0, 0}, 0, 2, 561 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_SpAdd, 0, 0}, 32, 0, 0, 1, {0xC1, 0, 0}, 0, 2, 289 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_SpAdd, 0, 0}, 64, 0, 0, 1, {0xD3, 0, 0}, 0, 2, 563 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_SpAdd, 0, 0}, 64, 0, 0, 1, {0xD1, 0, 0}, 0, 2, 565 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_186, 0, 0, {MOD_SpAdd, 0, 0}, 64, 0, 0, 1, {0xC1, 0, 0}, 0, 2, 291 },
- { GAS_ONLY|SUF_B|SUF_Z, 0, 0, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0, 1, {0xD0, 0, 0}, 0, 1, 421 },
- { GAS_ONLY|SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_SpAdd, 0, 0}, 16, 0, 0, 1, {0xD1, 0, 0}, 0, 1, 287 },
- { GAS_ONLY|SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_SpAdd, 0, 0}, 32, 0, 0, 1, {0xD1, 0, 0}, 0, 1, 283 },
- { GAS_ONLY|SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_SpAdd, 0, 0}, 64, 0, 0, 1, {0xD1, 0, 0}, 0, 1, 286 }
-};
-
-static const x86_insn_info shlrd_insn[] = {
- { SUF_W|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 16, 0, 0, 2, {0x0F, 0x00, 0}, 0, 3, 260 },
- { SUF_W|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 16, 0, 0, 2, {0x0F, 0x01, 0}, 0, 3, 263 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 32, 0, 0, 2, {0x0F, 0x00, 0}, 0, 3, 266 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 32, 0, 0, 2, {0x0F, 0x01, 0}, 0, 3, 269 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 64, 0, 0, 2, {0x0F, 0x00, 0}, 0, 3, 272 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 64, 0, 0, 2, {0x0F, 0x01, 0}, 0, 3, 275 },
- { GAS_ONLY|SUF_W|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 16, 0, 0, 2, {0x0F, 0x01, 0}, 0, 2, 260 },
- { GAS_ONLY|SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 32, 0, 0, 2, {0x0F, 0x01, 0}, 0, 2, 266 },
- { GAS_ONLY|SUF_Q|SUF_Z, ONLY_64, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 64, 0, 0, 2, {0x0F, 0x01, 0}, 0, 2, 272 }
-};
-
-static const x86_insn_info call_insn[] = {
- { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 0, {0, 0, 0}, 0, 1, 675 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 0, {0, 0, 0}, 0, 1, 676 },
- { SUF_L|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 0, {0, 0, 0}, 0, 1, 677 },
- { SUF_L|SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 0, {0, 0, 0}, 0, 1, 677 },
- { SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xE8, 0, 0}, 0, 1, 678 },
- { SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xE8, 0, 0}, 0, 1, 679 },
- { SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 64, 0, 1, {0xE8, 0, 0}, 0, 1, 679 },
- { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0xE8, 0, 0}, 0, 1, 680 },
- { SUF_W, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xFF, 0, 0}, 2, 1, 287 },
- { SUF_L, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xFF, 0, 0}, 2, 1, 283 },
- { SUF_Q, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 64, 0, 1, {0xFF, 0, 0}, 2, 1, 286 },
- { GAS_ONLY|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0xFF, 0, 0}, 2, 1, 681 },
- { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0xFF, 0, 0}, 2, 1, 674 },
- { GAS_ILLEGAL|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 64, 0, 1, {0xFF, 0, 0}, 2, 1, 682 },
- { GAS_ILLEGAL|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xFF, 0, 0}, 2, 1, 683 },
- { GAS_ILLEGAL|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 64, 0, 1, {0xFF, 0, 0}, 2, 1, 684 },
- { GAS_ILLEGAL|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0xFF, 0, 0}, 2, 1, 685 },
- { GAS_ILLEGAL|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xFF, 0, 0}, 3, 1, 686 },
- { GAS_ILLEGAL|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xFF, 0, 0}, 3, 1, 687 },
- { GAS_ILLEGAL|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0xFF, 0, 0}, 3, 1, 688 },
- { GAS_ILLEGAL|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xFF, 0, 0}, 3, 1, 689 },
- { GAS_ILLEGAL|SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x9A, 0, 0}, 0, 1, 690 },
- { GAS_ILLEGAL|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x9A, 0, 0}, 0, 1, 691 },
- { GAS_ILLEGAL|SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x9A, 0, 0}, 0, 1, 692 },
- { GAS_ILLEGAL|SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x9A, 0, 0}, 0, 1, 693 },
- { GAS_ILLEGAL|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x9A, 0, 0}, 0, 1, 694 },
- { GAS_ILLEGAL|SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x9A, 0, 0}, 0, 1, 695 },
- { GAS_ONLY|GAS_NO_REV|SUF_W, NOT_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x9A, 0, 0}, 0, 2, 567 },
- { GAS_ONLY|GAS_NO_REV|SUF_L, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x9A, 0, 0}, 0, 2, 569 },
- { GAS_ONLY|GAS_NO_REV|SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x9A, 0, 0}, 0, 2, 571 }
-};
-
-static const x86_insn_info jmp_insn[] = {
- { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 0, {0, 0, 0}, 0, 1, 675 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 0, {0, 0, 0}, 0, 1, 676 },
- { SUF_L|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x00, 0, 0}, 0, 1, 677 },
- { SUF_L|SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x00, 0, 0}, 0, 1, 677 },
- { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0xEB, 0, 0}, 0, 1, 483 },
- { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 64, 0, 1, {0xE9, 0, 0}, 0, 1, 678 },
- { SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xE9, 0, 0}, 0, 1, 679 },
- { SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 64, 0, 1, {0xE9, 0, 0}, 0, 1, 679 },
- { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0xE9, 0, 0}, 0, 1, 680 },
- { SUF_W, 0, 0, 0, 0, {0, 0, 0}, 16, 64, 0, 1, {0xFF, 0, 0}, 4, 1, 287 },
- { SUF_L, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xFF, 0, 0}, 4, 1, 283 },
- { SUF_Q, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 64, 0, 1, {0xFF, 0, 0}, 4, 1, 286 },
- { GAS_ONLY|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0xFF, 0, 0}, 4, 1, 681 },
- { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0xFF, 0, 0}, 4, 1, 674 },
- { GAS_ILLEGAL|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 64, 0, 1, {0xFF, 0, 0}, 4, 1, 682 },
- { GAS_ILLEGAL|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xFF, 0, 0}, 4, 1, 683 },
- { GAS_ILLEGAL|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 64, 0, 1, {0xFF, 0, 0}, 4, 1, 684 },
- { GAS_ILLEGAL|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0xFF, 0, 0}, 4, 1, 685 },
- { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xFF, 0, 0}, 5, 1, 686 },
- { SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xFF, 0, 0}, 5, 1, 687 },
- { SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0xFF, 0, 0}, 5, 1, 688 },
- { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xFF, 0, 0}, 5, 1, 689 },
- { SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xEA, 0, 0}, 0, 1, 690 },
- { SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xEA, 0, 0}, 0, 1, 691 },
- { SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xEA, 0, 0}, 0, 1, 692 },
- { GAS_ILLEGAL|SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xEA, 0, 0}, 0, 1, 693 },
- { GAS_ILLEGAL|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xEA, 0, 0}, 0, 1, 694 },
- { GAS_ILLEGAL|SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xEA, 0, 0}, 0, 1, 695 },
- { GAS_ONLY|GAS_NO_REV|SUF_W, NOT_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xEA, 0, 0}, 0, 2, 567 },
- { GAS_ONLY|GAS_NO_REV|SUF_L, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xEA, 0, 0}, 0, 2, 569 },
- { GAS_ONLY|GAS_NO_REV|SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xEA, 0, 0}, 0, 2, 571 }
-};
-
-static const x86_insn_info ljmpcall_insn[] = {
- { SUF_W, 0, 0, 0, 0, {MOD_SpAdd, 0, 0}, 16, 0, 0, 1, {0xFF, 0, 0}, 0, 1, 34 },
- { SUF_L, 0, CPU_386, 0, 0, {MOD_SpAdd, 0, 0}, 32, 0, 0, 1, {0xFF, 0, 0}, 0, 1, 58 },
- { SUF_Q, ONLY_64, 0, 0, 0, {MOD_SpAdd, 0, 0}, 64, 0, 0, 1, {0xFF, 0, 0}, 0, 1, 6 },
- { SUF_Z, 0, 0, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0, 1, {0xFF, 0, 0}, 0, 1, 699 },
- { GAS_NO_REV|SUF_W, NOT_64, 0, 0, 0, {MOD_Gap, MOD_Op0Add, 0}, 16, 0, 0, 1, {0x00, 0, 0}, 0, 2, 567 },
- { GAS_NO_REV|SUF_L, NOT_64, CPU_386, 0, 0, {MOD_Gap, MOD_Op0Add, 0}, 32, 0, 0, 1, {0x00, 0, 0}, 0, 2, 569 },
- { GAS_NO_REV|SUF_Z, NOT_64, 0, 0, 0, {MOD_Gap, MOD_Op0Add, 0}, 0, 0, 0, 1, {0x00, 0, 0}, 0, 2, 571 }
-};
-
-static const x86_insn_info retnf_insn[] = {
- { SUF_Z, NOT_64, 0, 0, 0, {MOD_Op0Add, 0, 0}, 0, 0, 0, 1, {0x01, 0, 0}, 0, 0, 0 },
- { SUF_Z, NOT_64, 0, 0, 0, {MOD_Op0Add, 0, 0}, 0, 0, 0, 1, {0x00, 0, 0}, 0, 1, 406 },
- { SUF_Z, ONLY_64, 0, 0, 0, {MOD_Op0Add, MOD_OpSizeR, 0}, 0, 0, 0, 1, {0x01, 0, 0}, 0, 0, 0 },
- { SUF_Z, ONLY_64, 0, 0, 0, {MOD_Op0Add, MOD_OpSizeR, 0}, 0, 0, 0, 1, {0x00, 0, 0}, 0, 1, 406 },
- { SUF_L|SUF_Q|SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_Op0Add, MOD_OpSizeR, 0}, 0, 0, 0, 1, {0x01, 0, 0}, 0, 0, 0 },
- { SUF_L|SUF_Q|SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_Op0Add, MOD_OpSizeR, 0}, 0, 0, 0, 1, {0x00, 0, 0}, 0, 1, 406 }
-};
-
-static const x86_insn_info enter_insn[] = {
- { GAS_NO_REV|SUF_L|SUF_Z, NOT_64, CPU_186, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xC8, 0, 0}, 0, 2, 645 },
- { GAS_NO_REV|SUF_Q|SUF_Z, ONLY_64, CPU_186, 0, 0, {0, 0, 0}, 64, 64, 0, 1, {0xC8, 0, 0}, 0, 2, 645 },
- { GAS_ONLY|GAS_NO_REV|SUF_W|SUF_Z, 0, CPU_186, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xC8, 0, 0}, 0, 2, 645 }
-};
-
-static const x86_insn_info jcc_insn[] = {
- { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 0, {0, 0, 0}, 0, 1, 481 },
- { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 0, {0, 0, 0}, 0, 1, 700 },
- { SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 0, {0, 0, 0}, 0, 1, 701 },
- { SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 0, {0, 0, 0}, 0, 1, 701 },
- { SUF_Z, 0, 0, 0, 0, {MOD_Op0Add, 0, 0}, 0, 64, 0, 1, {0x70, 0, 0}, 0, 1, 483 },
- { SUF_Z, 0, CPU_186, 0, 0, {MOD_Op1Add, 0, 0}, 16, 64, 0, 2, {0x0F, 0x80, 0}, 0, 1, 678 },
- { SUF_Z, NOT_64, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 32, 0, 0, 2, {0x0F, 0x80, 0}, 0, 1, 679 },
- { SUF_Z, ONLY_64, 0, 0, 0, {MOD_Op1Add, 0, 0}, 64, 64, 0, 2, {0x0F, 0x80, 0}, 0, 1, 679 },
- { SUF_Z, 0, CPU_186, 0, 0, {MOD_Op1Add, 0, 0}, 0, 64, 0, 2, {0x0F, 0x80, 0}, 0, 1, 680 }
-};
-
-static const x86_insn_info jcxz_insn[] = {
- { SUF_Z, 0, 0, 0, 0, {MOD_AdSizeR, 0, 0}, 0, 0, 0, 0, {0, 0, 0}, 0, 1, 481 },
- { SUF_Z, 0, 0, 0, 0, {MOD_AdSizeR, 0, 0}, 0, 64, 0, 1, {0xE3, 0, 0}, 0, 1, 483 }
-};
-
-static const x86_insn_info loop_insn[] = {
- { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 0, {0, 0, 0}, 0, 1, 481 },
- { SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 0, {0, 0, 0}, 0, 2, 493 },
- { SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 0, 64, 0, 0, {0, 0, 0}, 0, 2, 481 },
- { SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 0, {0, 0, 0}, 0, 2, 489 },
- { SUF_Z, NOT_64, 0, 0, 0, {MOD_Op0Add, 0, 0}, 0, 0, 0, 1, {0xE0, 0, 0}, 0, 1, 483 },
- { SUF_Z, 0, 0, 0, 0, {MOD_Op0Add, 0, 0}, 0, 64, 0, 1, {0xE0, 0, 0}, 0, 2, 495 },
- { SUF_Z, 0, CPU_386, 0, 0, {MOD_Op0Add, 0, 0}, 0, 64, 0, 1, {0xE0, 0, 0}, 0, 2, 483 },
- { SUF_Z, ONLY_64, 0, 0, 0, {MOD_Op0Add, 0, 0}, 0, 64, 0, 1, {0xE0, 0, 0}, 0, 2, 491 }
-};
-
-static const x86_insn_info loopw_insn[] = {
- { SUF_Z, NOT_64, 0, 0, 0, {MOD_Gap, MOD_AdSizeR, 0}, 0, 64, 0, 0, {0, 0, 0}, 0, 1, 481 },
- { SUF_Z, NOT_64, 0, 0, 0, {MOD_Op0Add, MOD_AdSizeR, 0}, 0, 64, 0, 1, {0xE0, 0, 0}, 0, 1, 483 },
- { SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 0, {0, 0, 0}, 0, 2, 493 },
- { SUF_Z, NOT_64, 0, 0, 0, {MOD_Op0Add, 0, 0}, 0, 64, 0, 1, {0xE0, 0, 0}, 0, 2, 495 }
-};
-
-static const x86_insn_info loopl_insn[] = {
- { SUF_Z, 0, 0, 0, 0, {MOD_Gap, MOD_AdSizeR, 0}, 0, 64, 0, 0, {0, 0, 0}, 0, 1, 481 },
- { SUF_Z, 0, 0, 0, 0, {MOD_Op0Add, MOD_AdSizeR, 0}, 0, 64, 0, 1, {0xE0, 0, 0}, 0, 1, 483 },
- { SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 0, 64, 0, 0, {0, 0, 0}, 0, 2, 481 },
- { SUF_Z, 0, CPU_386, 0, 0, {MOD_Op0Add, 0, 0}, 0, 64, 0, 1, {0xE0, 0, 0}, 0, 2, 483 }
-};
-
-static const x86_insn_info loopq_insn[] = {
- { SUF_Z, ONLY_64, 0, 0, 0, {MOD_Gap, MOD_AdSizeR, 0}, 0, 64, 0, 0, {0, 0, 0}, 0, 1, 481 },
- { SUF_Z, ONLY_64, 0, 0, 0, {MOD_Op0Add, MOD_AdSizeR, 0}, 0, 64, 0, 1, {0xE0, 0, 0}, 0, 1, 483 },
- { SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 0, {0, 0, 0}, 0, 2, 489 },
- { SUF_Z, ONLY_64, 0, 0, 0, {MOD_Op0Add, 0, 0}, 0, 64, 0, 1, {0xE0, 0, 0}, 0, 2, 491 }
-};
-
-static const x86_insn_info setcc_insn[] = {
- { SUF_B|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0x0F, 0x90, 0}, 2, 1, 323 }
-};
-
-static const x86_insn_info cmpsd_insn[] = {
- { GAS_ILLEGAL|SUF_Z, NOT_AVX, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xA7, 0, 0}, 0, 0, 0 },
- { SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0xF2, 2, {0x0F, 0xC2, 0}, 0, 3, 92 },
- { SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0xF2, 2, {0x0F, 0xC2, 0}, 0, 3, 95 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 0, 0, 0xC3, 2, {0x0F, 0xC2, 0}, 0, 4, 0 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 0, 0, 0xC3, 2, {0x0F, 0xC2, 0}, 0, 4, 4 }
-};
-
-static const x86_insn_info movsd_insn[] = {
- { SUF_Z, NOT_AVX, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xA5, 0, 0}, 0, 0, 0 },
- { SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0xF2, 2, {0x0F, 0x10, 0}, 0, 2, 92 },
- { SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0xF2, 2, {0x0F, 0x10, 0}, 0, 2, 451 },
- { SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0xF2, 2, {0x0F, 0x11, 0}, 0, 2, 47 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 0, 0, 0xC3, 2, {0x0F, 0x10, 0}, 0, 3, 0 }
-};
-
-static const x86_insn_info bittest_insn[] = {
- { SUF_W|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 16, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 260 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 32, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 266 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 64, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 272 },
- { SUF_W|SUF_Z, 0, CPU_386, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 16, 0, 0, 2, {0x0F, 0xBA, 0}, 0, 2, 287 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 32, 0, 0, 2, {0x0F, 0xBA, 0}, 0, 2, 289 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_386, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 64, 0, 0, 2, {0x0F, 0xBA, 0}, 0, 2, 291 }
-};
-
-static const x86_insn_info bsfr_insn[] = {
- { SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_Op1Add, 0, 0}, 16, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 98 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 32, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 101 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_Op1Add, 0, 0}, 64, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 104 }
-};
-
-static const x86_insn_info int_insn[] = {
- { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xCD, 0, 0}, 0, 1, 3 }
-};
-
-static const x86_insn_info bound_insn[] = {
- { SUF_W|SUF_Z, NOT_64, CPU_186, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x62, 0, 0}, 0, 2, 465 },
- { SUF_L|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x62, 0, 0}, 0, 2, 359 }
-};
-
-static const x86_insn_info larlsl_insn[] = {
- { SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_Op1Add, 0, 0}, 16, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 455 },
- { SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_Op1Add, 0, 0}, 16, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 98 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 32, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 457 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 32, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 459 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_Op1Add, 0, 0}, 64, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 461 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_Op1Add, 0, 0}, 64, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 463 }
-};
-
-static const x86_insn_info arpl_insn[] = {
- { SUF_W|SUF_Z, NOT_64, CPU_286, CPU_Prot, 0, {0, 0, 0}, 0, 0, 0, 1, {0x63, 0, 0}, 0, 2, 260 }
-};
-
-static const x86_insn_info str_insn[] = {
- { SUF_W|SUF_Z, 0, CPU_286, CPU_Prot, 0, {0, 0, 0}, 16, 0, 0, 2, {0x0F, 0x00, 0}, 1, 1, 395 },
- { SUF_L|SUF_Z, 0, CPU_386, CPU_Prot, 0, {0, 0, 0}, 32, 0, 0, 2, {0x0F, 0x00, 0}, 1, 1, 26 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_286, CPU_Prot, 0, {0, 0, 0}, 64, 0, 0, 2, {0x0F, 0x00, 0}, 1, 1, 30 },
- { SUF_L|SUF_W|SUF_Z, 0, CPU_286, CPU_Prot, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 1, 1, 99 }
-};
-
-static const x86_insn_info prot286_insn[] = {
- { SUF_W|SUF_Z, 0, CPU_286, 0, 0, {MOD_SpAdd, MOD_Op1Add, 0}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 1, 99 }
-};
-
-static const x86_insn_info sldtmsw_insn[] = {
- { SUF_W|SUF_Z, 0, CPU_286, 0, 0, {MOD_SpAdd, MOD_Op1Add, 0}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 1, 34 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_SpAdd, MOD_Op1Add, 0}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 1, 58 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_286, 0, 0, {MOD_SpAdd, MOD_Op1Add, 0}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 1, 6 },
- { SUF_W|SUF_Z, 0, CPU_286, 0, 0, {MOD_SpAdd, MOD_Op1Add, 0}, 16, 0, 0, 2, {0x0F, 0x00, 0}, 0, 1, 395 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_SpAdd, MOD_Op1Add, 0}, 32, 0, 0, 2, {0x0F, 0x00, 0}, 0, 1, 26 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_286, 0, 0, {MOD_SpAdd, MOD_Op1Add, 0}, 64, 0, 0, 2, {0x0F, 0x00, 0}, 0, 1, 30 }
-};
-
-static const x86_insn_info fld_insn[] = {
- { SUF_S|SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xD9, 0, 0}, 0, 1, 654 },
- { SUF_L|SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xDD, 0, 0}, 0, 1, 212 },
- { SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xDB, 0, 0}, 5, 1, 656 },
- { SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0xD9, 0xC0, 0}, 0, 1, 328 }
-};
-
-static const x86_insn_info fstp_insn[] = {
- { SUF_S|SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xD9, 0, 0}, 3, 1, 654 },
- { SUF_L|SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xDD, 0, 0}, 3, 1, 212 },
- { SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xDB, 0, 0}, 7, 1, 656 },
- { SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0xDD, 0xD8, 0}, 0, 1, 328 }
-};
-
-static const x86_insn_info fldstpt_insn[] = {
- { SUF_Z, 0, CPU_FPU, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0, 1, {0xDB, 0, 0}, 0, 1, 619 }
-};
-
-static const x86_insn_info fildstp_insn[] = {
- { SUF_S|SUF_Z, 0, CPU_FPU, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0, 1, {0xDF, 0, 0}, 0, 1, 653 },
- { SUF_L|SUF_Z, 0, CPU_FPU, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0, 1, {0xDB, 0, 0}, 0, 1, 654 },
- { SUF_Q|SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Gap, MOD_Op0Add, MOD_SpAdd}, 0, 0, 0, 1, {0xDD, 0, 0}, 0, 1, 212 },
- { GAS_ONLY|SUF_Z, 0, CPU_FPU, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0, 1, {0xDF, 0, 0}, 0, 1, 34 }
-};
-
-static const x86_insn_info fbldstp_insn[] = {
- { SUF_Z, 0, CPU_FPU, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0, 1, {0xDF, 0, 0}, 0, 1, 619 }
-};
-
-static const x86_insn_info fst_insn[] = {
- { SUF_S|SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xD9, 0, 0}, 2, 1, 654 },
- { SUF_L|SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xDD, 0, 0}, 2, 1, 212 },
- { SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0xDD, 0xD0, 0}, 0, 1, 328 }
-};
-
-static const x86_insn_info fxch_insn[] = {
- { SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0xD9, 0xC8, 0}, 0, 1, 328 },
- { SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0xD9, 0xC8, 0}, 0, 2, 327 },
- { SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0xD9, 0xC8, 0}, 0, 2, 329 },
- { SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0xD9, 0xC9, 0}, 0, 0, 0 }
-};
-
-static const x86_insn_info fcom_insn[] = {
- { SUF_S|SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 0, 0, 0, 1, {0xD8, 0, 0}, 0, 1, 654 },
- { SUF_L|SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 0, 0, 0, 1, {0xDC, 0, 0}, 0, 1, 212 },
- { SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0xD8, 0x00, 0}, 0, 1, 328 },
- { GAS_ONLY|SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 0, 0, 0, 1, {0xD8, 0, 0}, 0, 1, 58 },
- { GAS_ONLY|SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0xD8, 0x01, 0}, 0, 0, 0 },
- { GAS_ILLEGAL|SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0xD8, 0x00, 0}, 0, 2, 327 }
-};
-
-static const x86_insn_info fcom2_insn[] = {
- { SUF_Z, 0, CPU_286, CPU_FPU, 0, {MOD_Op0Add, MOD_Op1Add, 0}, 0, 0, 0, 2, {0x00, 0x00, 0}, 0, 1, 328 },
- { SUF_Z, 0, CPU_286, CPU_FPU, 0, {MOD_Op0Add, MOD_Op1Add, 0}, 0, 0, 0, 2, {0x00, 0x00, 0}, 0, 2, 327 }
-};
-
-static const x86_insn_info farith_insn[] = {
- { SUF_S|SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Gap, MOD_Gap, MOD_SpAdd}, 0, 0, 0, 1, {0xD8, 0, 0}, 0, 1, 654 },
- { SUF_L|SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Gap, MOD_Gap, MOD_SpAdd}, 0, 0, 0, 1, {0xDC, 0, 0}, 0, 1, 212 },
- { SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Gap, MOD_Op1Add, 0}, 0, 0, 0, 2, {0xD8, 0x00, 0}, 0, 1, 328 },
- { SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Gap, MOD_Op1Add, 0}, 0, 0, 0, 2, {0xD8, 0x00, 0}, 0, 2, 327 },
- { SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0xDC, 0x00, 0}, 0, 1, 696 },
- { GAS_ILLEGAL|SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0xDC, 0x00, 0}, 0, 2, 329 },
- { GAS_ONLY|SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Gap, MOD_Op1Add, 0}, 0, 0, 0, 2, {0xDC, 0x00, 0}, 0, 2, 329 }
-};
-
-static const x86_insn_info farithp_insn[] = {
- { SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0xDE, 0x01, 0}, 0, 0, 0 },
- { SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0xDE, 0x00, 0}, 0, 1, 328 },
- { SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0xDE, 0x00, 0}, 0, 2, 329 }
-};
-
-static const x86_insn_info fiarith_insn[] = {
- { SUF_S|SUF_Z, 0, CPU_FPU, 0, 0, {MOD_SpAdd, MOD_Op0Add, 0}, 0, 0, 0, 1, {0x04, 0, 0}, 0, 1, 653 },
- { SUF_L|SUF_Z, 0, CPU_FPU, 0, 0, {MOD_SpAdd, MOD_Op0Add, 0}, 0, 0, 0, 1, {0x00, 0, 0}, 0, 1, 654 }
-};
-
-static const x86_insn_info fldnstcw_insn[] = {
- { SUF_W|SUF_Z, 0, CPU_FPU, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0, 1, {0xD9, 0, 0}, 0, 1, 34 }
-};
-
-static const x86_insn_info fstcw_insn[] = {
- { SUF_W|SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x9B, 0xD9, 0}, 7, 1, 34 }
-};
-
-static const x86_insn_info fnstsw_insn[] = {
- { SUF_W|SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xDD, 0, 0}, 7, 1, 34 },
- { SUF_W|SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0xDF, 0xE0, 0}, 0, 1, 343 }
-};
-
-static const x86_insn_info fstsw_insn[] = {
- { SUF_W|SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x9B, 0xDD, 0}, 7, 1, 34 },
- { SUF_W|SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 3, {0x9B, 0xDF, 0xE0}, 0, 1, 343 }
-};
-
-static const x86_insn_info ffree_insn[] = {
- { SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Op0Add, 0, 0}, 0, 0, 0, 2, {0x00, 0xC0, 0}, 0, 1, 328 }
-};
-
-static const x86_insn_info bswap_insn[] = {
- { SUF_L|SUF_Z, 0, CPU_486, 0, 0, {0, 0, 0}, 32, 0, 0, 2, {0x0F, 0xC8, 0}, 0, 1, 697 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 2, {0x0F, 0xC8, 0}, 0, 1, 698 }
-};
-
-static const x86_insn_info cmpxchgxadd_insn[] = {
- { SUF_B|SUF_Z, 0, CPU_486, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 323 },
- { SUF_W|SUF_Z, 0, CPU_486, 0, 0, {MOD_Op1Add, 0, 0}, 16, 0, 0, 2, {0x0F, 0x01, 0}, 0, 2, 260 },
- { SUF_L|SUF_Z, 0, CPU_486, 0, 0, {MOD_Op1Add, 0, 0}, 32, 0, 0, 2, {0x0F, 0x01, 0}, 0, 2, 266 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_486, 0, 0, {MOD_Op1Add, 0, 0}, 64, 0, 0, 2, {0x0F, 0x01, 0}, 0, 2, 272 }
-};
-
-static const x86_insn_info cmpxchg8b_insn[] = {
- { SUF_Q|SUF_Z, 0, CPU_586, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0xC7, 0}, 1, 1, 6 }
-};
-
-static const x86_insn_info cmovcc_insn[] = {
- { SUF_W|SUF_Z, 0, CPU_686, 0, 0, {MOD_Op1Add, 0, 0}, 16, 0, 0, 2, {0x0F, 0x40, 0}, 0, 2, 98 },
- { SUF_L|SUF_Z, 0, CPU_686, 0, 0, {MOD_Op1Add, 0, 0}, 32, 0, 0, 2, {0x0F, 0x40, 0}, 0, 2, 101 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_686, 0, 0, {MOD_Op1Add, 0, 0}, 64, 0, 0, 2, {0x0F, 0x40, 0}, 0, 2, 104 }
-};
-
-static const x86_insn_info fcmovcc_insn[] = {
- { SUF_Z, 0, CPU_686, CPU_FPU, 0, {MOD_Op0Add, MOD_Op1Add, 0}, 0, 0, 0, 2, {0x00, 0x00, 0}, 0, 2, 327 }
-};
-
-static const x86_insn_info movnti_insn[] = {
- { SUF_L|SUF_Z, 0, CPU_P4, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0xC3, 0}, 0, 2, 337 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_P4, 0, 0, {0, 0, 0}, 64, 0, 0, 2, {0x0F, 0xC3, 0}, 0, 2, 339 }
-};
-
-static const x86_insn_info clflush_insn[] = {
- { SUF_Z, 0, CPU_P3, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0xAE, 0}, 7, 1, 50 }
-};
-
-static const x86_insn_info movd_insn[] = {
- { SUF_Z, 0, CPU_386, CPU_MMX, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x6E, 0}, 0, 2, 293 },
- { SUF_Z, ONLY_64, CPU_MMX, 0, 0, {0, 0, 0}, 64, 0, 0, 2, {0x0F, 0x6E, 0}, 0, 2, 295 },
- { SUF_Z, 0, CPU_386, CPU_MMX, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x7E, 0}, 0, 2, 294 },
- { SUF_Z, ONLY_64, CPU_MMX, 0, 0, {0, 0, 0}, 64, 0, 0, 2, {0x0F, 0x7E, 0}, 0, 2, 297 },
- { SUF_Z, 0, CPU_386, CPU_SSE2, 0, {0, 0, 0}, 0, 0, 0x66, 2, {0x0F, 0x6E, 0}, 0, 2, 299 },
- { SUF_Z, ONLY_64, CPU_SSE2, 0, 0, {0, 0, 0}, 64, 0, 0x66, 2, {0x0F, 0x6E, 0}, 0, 2, 301 },
- { SUF_Z, 0, CPU_386, CPU_SSE2, 0, {0, 0, 0}, 0, 0, 0x66, 2, {0x0F, 0x7E, 0}, 0, 2, 188 },
- { SUF_Z, ONLY_64, CPU_SSE2, 0, 0, {0, 0, 0}, 64, 0, 0x66, 2, {0x0F, 0x7E, 0}, 0, 2, 182 }
-};
-
-static const x86_insn_info movq_insn[] = {
- { GAS_ILLEGAL|SUF_Z, 0, CPU_MMX, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x6F, 0}, 0, 2, 140 },
- { GAS_ILLEGAL|SUF_Z, ONLY_64, CPU_MMX, 0, 0, {0, 0, 0}, 64, 0, 0, 2, {0x0F, 0x6E, 0}, 0, 2, 295 },
- { GAS_ILLEGAL|SUF_Z, 0, CPU_MMX, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x7F, 0}, 0, 2, 331 },
- { GAS_ILLEGAL|SUF_Z, ONLY_64, CPU_MMX, 0, 0, {0, 0, 0}, 64, 0, 0, 2, {0x0F, 0x7E, 0}, 0, 2, 297 },
- { GAS_ILLEGAL|SUF_Z, 0, CPU_SSE2, 0, 0, {0, 0, 0}, 0, 0, 0xF3, 2, {0x0F, 0x7E, 0}, 0, 2, 64 },
- { GAS_ILLEGAL|SUF_Z, 0, CPU_SSE2, 0, 0, {0, 0, 0}, 0, 0, 0xF3, 2, {0x0F, 0x7E, 0}, 0, 2, 333 },
- { GAS_ILLEGAL|SUF_Z, ONLY_64, CPU_SSE2, 0, 0, {0, 0, 0}, 64, 0, 0x66, 2, {0x0F, 0x6E, 0}, 0, 2, 301 },
- { GAS_ILLEGAL|SUF_Z, 0, CPU_SSE2, 0, 0, {0, 0, 0}, 0, 0, 0x66, 2, {0x0F, 0xD6, 0}, 0, 2, 335 },
- { GAS_ILLEGAL|SUF_Z, ONLY_64, CPU_SSE2, 0, 0, {0, 0, 0}, 64, 0, 0x66, 2, {0x0F, 0x7E, 0}, 0, 2, 182 }
-};
-
-static const x86_insn_info mmxsse2_insn[] = {
- { SUF_Z, 0, CPU_MMX, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 140 },
- { SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0x66, 2, {0x0F, 0x00, 0}, 0, 2, 155 }
-};
-
-static const x86_insn_info pshift_insn[] = {
- { SUF_Z, 0, CPU_MMX, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 140 },
- { SUF_Z, 0, CPU_MMX, 0, 0, {MOD_Gap, MOD_Op1Add, MOD_SpAdd}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 162 },
- { SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0x66, 2, {0x0F, 0x00, 0}, 0, 2, 155 },
- { SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_Gap, MOD_Op1Add, MOD_SpAdd}, 0, 0, 0x66, 2, {0x0F, 0x00, 0}, 0, 2, 2 }
-};
-
-static const x86_insn_info vpshift_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0xC1, 2, {0x0F, 0x00, 0}, 0, 2, 158 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Gap, MOD_Op1Add, MOD_SpAdd}, 0, 0, 0xC1, 2, {0x0F, 0x00, 0}, 0, 2, 511 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0xC1, 2, {0x0F, 0x00, 0}, 0, 3, 12 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Gap, MOD_Op1Add, MOD_SpAdd}, 0, 0, 0xC1, 2, {0x0F, 0x00, 0}, 0, 3, 1 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0xC5, 2, {0x0F, 0x00, 0}, 0, 2, 639 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Gap, MOD_Op1Add, MOD_SpAdd}, 0, 0, 0xC5, 2, {0x0F, 0x00, 0}, 0, 2, 513 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0xC5, 2, {0x0F, 0x00, 0}, 0, 3, 8 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Gap, MOD_Op1Add, MOD_SpAdd}, 0, 0, 0xC5, 2, {0x0F, 0x00, 0}, 0, 3, 200 }
-};
-
-static const x86_insn_info xmm_xmm128_256_insn[] = {
- { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 158 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 3, 12 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC4, 2, {0x0F, 0x00, 0}, 0, 2, 197 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC4, 2, {0x0F, 0x00, 0}, 0, 3, 16 }
-};
-
-static const x86_insn_info xmm_xmm128_256avx2_insn[] = {
- { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 158 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 3, 12 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC4, 2, {0x0F, 0x00, 0}, 0, 2, 197 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC4, 2, {0x0F, 0x00, 0}, 0, 3, 16 }
-};
-
-static const x86_insn_info xmm_xmm128_insn[] = {
- { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 158 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 3, 12 }
-};
-
-static const x86_insn_info cvt_rx_xmm32_insn[] = {
- { SUF_L|SUF_Z, 0, CPU_386, CPU_SSE, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 164 },
- { SUF_L|SUF_Z, 0, CPU_386, CPU_SSE, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 359 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 64, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 170 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 64, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 361 }
-};
-
-static const x86_insn_info cvt_mm_xmm64_insn[] = {
- { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 315 },
- { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 317 }
-};
-
-static const x86_insn_info cvt_xmm_mm_ps_insn[] = {
- { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 333 }
-};
-
-static const x86_insn_info cvt_xmm_rmx_insn[] = {
- { SUF_L|SUF_Z, 0, CPU_386, CPU_SSE, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 649 },
- { SUF_L|SUF_Z, NOT_64, CPU_386, CPU_SSE, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 239 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 64, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 651 },
- { SUF_L|SUF_Z, ONLY_AVX|NOT_64, CPU_386, CPU_AVX, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 3, 88 },
- { SUF_L|SUF_Z, ONLY_AVX, CPU_386, CPU_AVX, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 3, 281 },
- { SUF_Q|SUF_Z, ONLY_64|ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 64, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 3, 284 }
-};
-
-static const x86_insn_info xmm_xmm32_insn[] = {
- { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 92 },
- { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 146 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 3, 0 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 3, 56 }
-};
-
-static const x86_insn_info ssecmp_128_insn[] = {
- { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_Imm8, MOD_PreAdd, MOD_SetVEX}, 0, 0, 0, 2, {0x0F, 0xC2, 0}, 0, 2, 158 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Imm8, MOD_PreAdd, 0}, 0, 0, 0xC0, 2, {0x0F, 0xC2, 0}, 0, 3, 12 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Imm8, MOD_PreAdd, 0}, 0, 0, 0xC4, 2, {0x0F, 0xC2, 0}, 0, 3, 16 }
-};
-
-static const x86_insn_info ssecmp_32_insn[] = {
- { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_Imm8, MOD_PreAdd, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0xC2, 0}, 0, 2, 92 },
- { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_Imm8, MOD_PreAdd, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0xC2, 0}, 0, 2, 146 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Imm8, MOD_PreAdd, 0}, 0, 0, 0xC0, 2, {0x0F, 0xC2, 0}, 0, 3, 0 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Imm8, MOD_PreAdd, 0}, 0, 0, 0xC0, 2, {0x0F, 0xC2, 0}, 0, 3, 56 }
-};
-
-static const x86_insn_info xmm_xmm128_imm_insn[] = {
- { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 3, 185 }
-};
-
-static const x86_insn_info xmm_xmm128_imm_256avx2_insn[] = {
- { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 3, 185 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC4, 2, {0x0F, 0x00, 0}, 0, 3, 191 }
-};
-
-static const x86_insn_info xmm_xmm128_imm_256_insn[] = {
- { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 3, 158 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 4, 60 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC4, 2, {0x0F, 0x00, 0}, 0, 4, 20 }
-};
-
-static const x86_insn_info xmm_xmm32_imm_insn[] = {
- { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 3, 92 },
- { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 3, 146 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 4, 0 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 4, 56 }
-};
-
-static const x86_insn_info ldstmxcsr_insn[] = {
- { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_SpAdd, MOD_SetVEX, 0}, 0, 0, 0, 2, {0x0F, 0xAE, 0}, 0, 1, 58 }
-};
-
-static const x86_insn_info maskmovq_insn[] = {
- { SUF_Z, 0, CPU_MMX, CPU_P3, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0xF7, 0}, 0, 2, 641 }
-};
-
-static const x86_insn_info movau_insn[] = {
- { SUF_Z, NOT_AVX, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 155 },
- { SUF_Z, NOT_AVX, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_Op1Add}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 485 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 2, 155 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_Op1Add}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 2, 485 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC4, 2, {0x0F, 0x00, 0}, 0, 2, 191 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_Op1Add}, 0, 0, 0xC4, 2, {0x0F, 0x00, 0}, 0, 2, 487 }
-};
-
-static const x86_insn_info movhllhps_insn[] = {
- { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_Op1Add, MOD_SetVEX, 0}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 92 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 3, 0 }
-};
-
-static const x86_insn_info movhlp_insn[] = {
- { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 95 },
- { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x01, 0}, 0, 2, 47 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 3, 4 }
-};
-
-static const x86_insn_info movmsk_insn[] = {
- { SUF_L|SUF_Z, 0, CPU_386, CPU_SSE, 0, {MOD_PreAdd, MOD_SetVEX, 0}, 0, 0, 0x00, 2, {0x0F, 0x50, 0}, 0, 2, 164 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_SetVEX, 0}, 64, 0, 0x00, 2, {0x0F, 0x50, 0}, 0, 2, 170 },
- { SUF_L|SUF_Z, ONLY_AVX, CPU_386, CPU_AVX, 0, {MOD_PreAdd, 0, 0}, 0, 0, 0xC4, 2, {0x0F, 0x50, 0}, 0, 2, 319 },
- { SUF_Q|SUF_Z, ONLY_64|ONLY_AVX, CPU_SSE, 0, 0, {MOD_PreAdd, 0, 0}, 64, 0, 0xC4, 2, {0x0F, 0x50, 0}, 0, 2, 321 }
-};
-
-static const x86_insn_info movnt_insn[] = {
- { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 599 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC4, 2, {0x0F, 0x00, 0}, 0, 2, 601 }
-};
-
-static const x86_insn_info movntq_insn[] = {
- { SUF_Z, 0, CPU_SSE, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0xE7, 0}, 0, 2, 363 }
-};
-
-static const x86_insn_info movss_insn[] = {
- { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0xF3, 2, {0x0F, 0x10, 0}, 0, 2, 92 },
- { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0xF3, 2, {0x0F, 0x10, 0}, 0, 2, 336 },
- { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0xF3, 2, {0x0F, 0x11, 0}, 0, 2, 450 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 0, 0, 0xC2, 2, {0x0F, 0x10, 0}, 0, 3, 0 }
-};
-
-static const x86_insn_info pextrw_insn[] = {
- { SUF_L|SUF_Z, NOT_AVX, CPU_MMX, CPU_P3, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0xC5, 0}, 0, 3, 161 },
- { SUF_L|SUF_Z, 0, CPU_386, CPU_SSE2, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0x66, 2, {0x0F, 0xC5, 0}, 0, 3, 164 },
- { SUF_Q|SUF_Z, ONLY_64|NOT_AVX, CPU_MMX, CPU_P3, 0, {0, 0, 0}, 64, 0, 0, 2, {0x0F, 0xC5, 0}, 0, 3, 167 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_SSE2, 0, 0, {MOD_SetVEX, 0, 0}, 64, 0, 0x66, 2, {0x0F, 0xC5, 0}, 0, 3, 170 },
- { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x15}, 0, 3, 173 },
- { SUF_Z, 0, CPU_386, CPU_SSE41, 0, {MOD_SetVEX, 0, 0}, 32, 0, 0x66, 3, {0x0F, 0x3A, 0x15}, 0, 3, 176 },
- { SUF_Z, ONLY_64, CPU_SSE41, 0, 0, {MOD_SetVEX, 0, 0}, 64, 0, 0x66, 3, {0x0F, 0x3A, 0x15}, 0, 3, 179 }
-};
-
-static const x86_insn_info pinsrw_insn[] = {
- { SUF_L|SUF_Z, NOT_AVX, CPU_MMX, CPU_P3, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0xC4, 0}, 0, 3, 116 },
- { SUF_Q|SUF_Z, ONLY_64|NOT_AVX, CPU_MMX, CPU_P3, 0, {0, 0, 0}, 64, 64, 0, 2, {0x0F, 0xC4, 0}, 0, 3, 119 },
- { SUF_L|SUF_Z, NOT_AVX, CPU_MMX, CPU_P3, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0xC4, 0}, 0, 3, 122 },
- { SUF_L|SUF_Z, 0, CPU_386, CPU_SSE2, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0x66, 2, {0x0F, 0xC4, 0}, 0, 3, 125 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_SSE2, 0, 0, {MOD_SetVEX, 0, 0}, 64, 64, 0x66, 2, {0x0F, 0xC4, 0}, 0, 3, 128 },
- { SUF_L|SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0x66, 2, {0x0F, 0xC4, 0}, 0, 3, 131 },
- { SUF_L|SUF_Z, ONLY_AVX, CPU_386, CPU_AVX, 0, {0, 0, 0}, 0, 0, 0xC1, 2, {0x0F, 0xC4, 0}, 0, 4, 24 },
- { SUF_Q|SUF_Z, ONLY_64|ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 64, 64, 0xC1, 2, {0x0F, 0xC4, 0}, 0, 4, 28 },
- { SUF_L|SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 0, 0, 0xC1, 2, {0x0F, 0xC4, 0}, 0, 4, 32 }
-};
-
-static const x86_insn_info pmovmskb_insn[] = {
- { SUF_L|SUF_Z, NOT_AVX, CPU_MMX, CPU_P3, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0xD7, 0}, 0, 2, 161 },
- { SUF_L|SUF_Z, 0, CPU_386, CPU_SSE2, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0x66, 2, {0x0F, 0xD7, 0}, 0, 2, 164 },
- { SUF_L|SUF_Z, ONLY_AVX, CPU_386, CPU_AVX2, 0, {0, 0, 0}, 0, 0, 0xC5, 2, {0x0F, 0xD7, 0}, 0, 2, 319 },
- { SUF_Q|SUF_Z, ONLY_64|NOT_AVX, CPU_MMX, CPU_P3, 0, {0, 0, 0}, 64, 64, 0, 2, {0x0F, 0xD7, 0}, 0, 2, 167 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_SSE2, 0, 0, {MOD_SetVEX, 0, 0}, 64, 64, 0x66, 2, {0x0F, 0xD7, 0}, 0, 2, 170 },
- { SUF_Q|SUF_Z, ONLY_64|ONLY_AVX, CPU_SSE2, 0, 0, {0, 0, 0}, 64, 64, 0xC5, 2, {0x0F, 0xD7, 0}, 0, 2, 321 }
-};
-
-static const x86_insn_info pshufw_insn[] = {
- { SUF_Z, 0, CPU_MMX, CPU_P3, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x70, 0}, 0, 3, 140 }
-};
-
-static const x86_insn_info xmm_xmm64_insn[] = {
- { SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 92 },
- { SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 95 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 3, 0 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 3, 4 }
-};
-
-static const x86_insn_info ssecmp_64_insn[] = {
- { SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_Imm8, MOD_PreAdd, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0xC2, 0}, 0, 2, 92 },
- { SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_Imm8, MOD_PreAdd, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0xC2, 0}, 0, 2, 95 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Imm8, MOD_PreAdd, 0}, 0, 0, 0xC0, 2, {0x0F, 0xC2, 0}, 0, 3, 0 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Imm8, MOD_PreAdd, 0}, 0, 0, 0xC0, 2, {0x0F, 0xC2, 0}, 0, 3, 4 }
-};
-
-static const x86_insn_info cvt_rx_xmm64_insn[] = {
- { SUF_L|SUF_Z, 0, CPU_386, CPU_SSE2, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 164 },
- { SUF_L|SUF_Z, 0, CPU_386, CPU_SSE2, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 338 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_SSE2, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 64, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 170 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_SSE2, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 64, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 469 }
-};
-
-static const x86_insn_info cvt_mm_xmm_insn[] = {
- { SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 615 }
-};
-
-static const x86_insn_info cvt_xmm_mm_ss_insn[] = {
- { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 333 }
-};
-
-static const x86_insn_info eptvpid_insn[] = {
- { SUF_L|SUF_Z, NOT_64, CPU_386, CPU_EPTVPID, 0, {MOD_Op2Add, 0, 0}, 32, 0, 0x66, 3, {0x0F, 0x38, 0x80}, 0, 2, 611 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_EPTVPID, 0, 0, {MOD_Op2Add, 0, 0}, 64, 0, 0x66, 3, {0x0F, 0x38, 0x80}, 0, 2, 613 }
-};
-
-static const x86_insn_info vmxmemrd_insn[] = {
- { SUF_L|SUF_Z, NOT_64, CPU_P4, 0, 0, {0, 0, 0}, 32, 0, 0, 2, {0x0F, 0x78, 0}, 0, 2, 266 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_P4, 0, 0, {0, 0, 0}, 64, 64, 0, 2, {0x0F, 0x78, 0}, 0, 2, 272 }
-};
-
-static const x86_insn_info vmxmemwr_insn[] = {
- { SUF_L|SUF_Z, NOT_64, CPU_P4, 0, 0, {0, 0, 0}, 32, 0, 0, 2, {0x0F, 0x79, 0}, 0, 2, 101 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_P4, 0, 0, {0, 0, 0}, 64, 64, 0, 2, {0x0F, 0x79, 0}, 0, 2, 104 }
-};
-
-static const x86_insn_info vmxtwobytemem_insn[] = {
- { SUF_Z, 0, CPU_P4, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0, 2, {0x0F, 0xC7, 0}, 0, 1, 6 }
-};
-
-static const x86_insn_info vmxthreebytemem_insn[] = {
- { SUF_Z, 0, CPU_P4, 0, 0, {MOD_PreAdd, 0, 0}, 0, 0, 0x00, 2, {0x0F, 0xC7, 0}, 6, 1, 6 }
-};
-
-static const x86_insn_info maskmovdqu_insn[] = {
- { SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0x66, 2, {0x0F, 0xF7, 0}, 0, 2, 64 }
-};
-
-static const x86_insn_info movdq2q_insn[] = {
- { SUF_Z, 0, CPU_SSE2, 0, 0, {0, 0, 0}, 0, 0, 0xF2, 2, {0x0F, 0xD6, 0}, 0, 2, 315 }
-};
-
-static const x86_insn_info movq2dq_insn[] = {
- { SUF_Z, 0, CPU_SSE2, 0, 0, {0, 0, 0}, 0, 0, 0xF3, 2, {0x0F, 0xD6, 0}, 0, 2, 445 }
-};
-
-static const x86_insn_info pslrldq_insn[] = {
- { SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_SpAdd, MOD_SetVEX, 0}, 0, 0, 0x66, 2, {0x0F, 0x73, 0}, 0, 2, 511 },
- { SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_SpAdd, MOD_SetVEX, 0}, 0, 0, 0x66, 2, {0x0F, 0x73, 0}, 0, 3, 1 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0xC5, 2, {0x0F, 0x73, 0}, 0, 2, 513 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0xC5, 2, {0x0F, 0x73, 0}, 0, 3, 200 }
-};
-
-static const x86_insn_info lddqu_insn[] = {
- { SUF_Z, 0, CPU_SSE3, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0xF2, 2, {0x0F, 0xF0, 0}, 0, 2, 595 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 0, 0, 0xC7, 2, {0x0F, 0xF0, 0}, 0, 2, 597 }
-};
-
-static const x86_insn_info ssse3_insn[] = {
- { SUF_Z, NOT_AVX, CPU_SSSE3, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0, 3, {0x0F, 0x38, 0x00}, 0, 2, 140 },
- { SUF_Z, 0, CPU_SSSE3, 0, 0, {MOD_Op2Add, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x38, 0x00}, 0, 2, 158 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x00}, 0, 3, 12 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 2, 197 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 3, 16 }
-};
-
-static const x86_insn_info ssse3imm_insn[] = {
- { SUF_Z, 0, CPU_SSSE3, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0, 3, {0x0F, 0x3A, 0x00}, 0, 3, 140 },
- { SUF_Z, 0, CPU_SSSE3, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x00}, 0, 3, 185 }
-};
-
-static const x86_insn_info sse4_insn[] = {
- { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_Op2Add, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x38, 0x00}, 0, 2, 155 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 2, 191 }
-};
-
-static const x86_insn_info sse4imm_256_insn[] = {
- { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_Op2Add, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x00}, 0, 3, 158 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 4, 60 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x3A, 0x00}, 0, 3, 197 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x3A, 0x00}, 0, 4, 20 }
-};
-
-static const x86_insn_info sse4imm_256avx2_insn[] = {
- { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_Op2Add, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x00}, 0, 3, 158 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 4, 60 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x3A, 0x00}, 0, 3, 197 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x3A, 0x00}, 0, 4, 20 }
-};
-
-static const x86_insn_info sse4imm_insn[] = {
- { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_Op2Add, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x00}, 0, 3, 158 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 4, 60 }
-};
-
-static const x86_insn_info sse4m32imm_insn[] = {
- { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_Op2Add, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x00}, 0, 3, 92 },
- { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_Op2Add, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x00}, 0, 3, 146 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 4, 0 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 4, 56 }
-};
-
-static const x86_insn_info sse4m64imm_insn[] = {
- { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_Op2Add, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x00}, 0, 3, 92 },
- { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_Op2Add, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x00}, 0, 3, 95 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 4, 0 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 4, 4 }
-};
-
-static const x86_insn_info sse4xmm0_insn[] = {
- { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0x66, 3, {0x0F, 0x38, 0x00}, 0, 2, 155 },
- { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0x66, 3, {0x0F, 0x38, 0x00}, 0, 3, 242 }
-};
-
-static const x86_insn_info avx_sse4xmm0_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 4, 12 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x3A, 0x00}, 0, 4, 16 }
-};
-
-static const x86_insn_info avx2_sse4xmm0_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 4, 12 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x3A, 0x00}, 0, 4, 16 }
-};
-
-static const x86_insn_info crc32_insn[] = {
- { SUF_B|SUF_Z, 0, CPU_386, CPU_SSE42, 0, {0, 0, 0}, 0, 0, 0xF2, 3, {0x0F, 0x38, 0xF0}, 0, 2, 537 },
- { SUF_W|SUF_Z, 0, CPU_386, CPU_SSE42, 0, {0, 0, 0}, 16, 0, 0xF2, 3, {0x0F, 0x38, 0xF1}, 0, 2, 539 },
- { SUF_L|SUF_Z, 0, CPU_386, CPU_SSE42, 0, {0, 0, 0}, 32, 0, 0xF2, 3, {0x0F, 0x38, 0xF1}, 0, 2, 101 },
- { SUF_B|SUF_Z, ONLY_64, CPU_SSE42, 0, 0, {0, 0, 0}, 64, 0, 0xF2, 3, {0x0F, 0x38, 0xF0}, 0, 2, 541 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_SSE42, 0, 0, {0, 0, 0}, 64, 0, 0xF2, 3, {0x0F, 0x38, 0xF1}, 0, 2, 104 }
-};
-
-static const x86_insn_info extractps_insn[] = {
- { SUF_Z, 0, CPU_386, CPU_SSE41, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x17}, 0, 3, 188 },
- { SUF_Z, ONLY_64, CPU_SSE41, 0, 0, {MOD_SetVEX, 0, 0}, 64, 0, 0x66, 3, {0x0F, 0x3A, 0x17}, 0, 3, 179 }
-};
-
-static const x86_insn_info insertps_insn[] = {
- { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x21}, 0, 3, 146 },
- { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x21}, 0, 3, 92 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x21}, 0, 4, 56 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x21}, 0, 4, 0 }
-};
-
-static const x86_insn_info movntdqa_insn[] = {
- { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0x66, 3, {0x0F, 0x38, 0x2A}, 0, 2, 595 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x2A}, 0, 2, 597 }
-};
-
-static const x86_insn_info sse4pcmpstr_insn[] = {
- { SUF_Z, 0, CPU_SSE42, 0, 0, {MOD_Op2Add, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x00}, 0, 3, 185 }
-};
-
-static const x86_insn_info pextrb_insn[] = {
- { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x14}, 0, 3, 194 },
- { SUF_Z, 0, CPU_386, CPU_SSE41, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x14}, 0, 3, 176 },
- { SUF_Z, ONLY_64, CPU_SSE41, 0, 0, {MOD_SetVEX, 0, 0}, 64, 0, 0x66, 3, {0x0F, 0x3A, 0x14}, 0, 3, 179 }
-};
-
-static const x86_insn_info pextrd_insn[] = {
- { SUF_Z, 0, CPU_386, CPU_SSE41, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x16}, 0, 3, 188 }
-};
-
-static const x86_insn_info pextrq_insn[] = {
- { SUF_Z, ONLY_64, CPU_SSE41, 0, 0, {MOD_SetVEX, 0, 0}, 64, 0, 0x66, 3, {0x0F, 0x3A, 0x16}, 0, 3, 182 }
-};
-
-static const x86_insn_info pinsrb_insn[] = {
- { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x20}, 0, 3, 143 },
- { SUF_Z, 0, CPU_386, CPU_SSE41, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x20}, 0, 3, 125 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x20}, 0, 4, 48 },
- { SUF_Z, ONLY_AVX, CPU_386, CPU_AVX, 0, {0, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x20}, 0, 4, 52 }
-};
-
-static const x86_insn_info pinsrd_insn[] = {
- { SUF_Z, 0, CPU_386, CPU_SSE41, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x22}, 0, 3, 239 },
- { SUF_Z, ONLY_AVX, CPU_386, CPU_AVX, 0, {0, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x22}, 0, 4, 88 }
-};
-
-static const x86_insn_info pinsrq_insn[] = {
- { SUF_Z, ONLY_64, CPU_SSE41, 0, 0, {MOD_SetVEX, 0, 0}, 64, 0, 0x66, 3, {0x0F, 0x3A, 0x22}, 0, 3, 227 },
- { SUF_Z, ONLY_64|ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 64, 0, 0xC1, 3, {0x0F, 0x3A, 0x22}, 0, 4, 84 }
-};
-
-static const x86_insn_info sse4m16_insn[] = {
- { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_Op2Add, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x38, 0x00}, 0, 2, 447 },
- { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_Op2Add, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x38, 0x00}, 0, 2, 64 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 2, 449 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 2, 208 }
-};
-
-static const x86_insn_info sse4m32_insn[] = {
- { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_Op2Add, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x38, 0x00}, 0, 2, 336 },
- { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_Op2Add, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x38, 0x00}, 0, 2, 64 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 2, 479 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 2, 208 }
-};
-
-static const x86_insn_info sse4m64_insn[] = {
- { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_Op2Add, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x38, 0x00}, 0, 2, 451 },
- { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_Op2Add, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x38, 0x00}, 0, 2, 64 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 2, 509 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 2, 208 }
-};
-
-static const x86_insn_info cnt_insn[] = {
- { SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_Op1Add, 0, 0}, 16, 0, 0xF3, 2, {0x0F, 0x00, 0}, 0, 2, 98 },
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 32, 0, 0xF3, 2, {0x0F, 0x00, 0}, 0, 2, 101 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_Op1Add, 0, 0}, 64, 0, 0xF3, 2, {0x0F, 0x00, 0}, 0, 2, 104 }
-};
-
-static const x86_insn_info vmovd_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_386, CPU_AVX, 0, {0, 0, 0}, 0, 0, 0xC1, 2, {0x0F, 0x6E, 0}, 0, 2, 299 },
- { SUF_Z, ONLY_AVX, CPU_386, CPU_AVX, 0, {0, 0, 0}, 0, 0, 0xC1, 2, {0x0F, 0x7E, 0}, 0, 2, 188 }
-};
-
-static const x86_insn_info vmovq_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 0, 0, 0xC2, 2, {0x0F, 0x7E, 0}, 0, 2, 64 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 0, 0, 0xC2, 2, {0x0F, 0x7E, 0}, 0, 2, 451 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 0, 0, 0xC1, 2, {0x0F, 0xD6, 0}, 0, 2, 47 },
- { SUF_Z, ONLY_64|ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 64, 0, 0xC1, 2, {0x0F, 0x6E, 0}, 0, 2, 301 },
- { SUF_Z, ONLY_64|ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 64, 0, 0xC1, 2, {0x0F, 0x7E, 0}, 0, 2, 182 }
-};
-
-static const x86_insn_info avx_xmm_xmm128_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 2, 155 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC4, 2, {0x0F, 0x00, 0}, 0, 2, 191 }
-};
-
-static const x86_insn_info avx_sse4imm_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_SSE41, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 3, 185 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 3, 185 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x3A, 0x00}, 0, 3, 191 }
-};
-
-static const x86_insn_info vmovddup_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 2, 64 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 2, 451 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC4, 2, {0x0F, 0x00, 0}, 0, 2, 191 }
-};
-
-static const x86_insn_info avx_xmm_xmm64_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_SSE2, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 2, 64 },
- { SUF_Z, ONLY_AVX, CPU_SSE2, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 2, 451 }
-};
-
-static const x86_insn_info avx_xmm_xmm32_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 2, 64 },
- { SUF_Z, ONLY_AVX, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 2, 336 }
-};
-
-static const x86_insn_info avx_cvt_xmm64_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 2, 64 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 2, 451 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC4, 2, {0x0F, 0x00, 0}, 0, 2, 453 }
-};
-
-static const x86_insn_info avx_ssse3_2op_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x00}, 0, 2, 155 }
-};
-
-static const x86_insn_info avx2_ssse3_2op_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x00}, 0, 2, 155 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 2, 191 }
-};
-
-static const x86_insn_info avx_cvt_xmm128_x_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 2, 155 }
-};
-
-static const x86_insn_info avx_cvt_xmm128_y_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC4, 2, {0x0F, 0x00, 0}, 0, 2, 205 }
-};
-
-static const x86_insn_info avx_cvt_xmm128_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 2, 607 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC4, 2, {0x0F, 0x00, 0}, 0, 2, 609 }
-};
-
-static const x86_insn_info vbroadcastss_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x18}, 0, 2, 336 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x18}, 0, 2, 449 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x18}, 0, 2, 64 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x18}, 0, 2, 208 }
-};
-
-static const x86_insn_info vbroadcastsd_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x19}, 0, 2, 479 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x19}, 0, 2, 208 }
-};
-
-static const x86_insn_info vbroadcastif128_insn[] = {
- { SUF_Z, ONLY_AVX, 0, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 2, 509 }
-};
-
-static const x86_insn_info vextractif128_insn[] = {
- { SUF_Z, ONLY_AVX, 0, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x3A, 0x00}, 0, 3, 236 }
-};
-
-static const x86_insn_info vinsertif128_insn[] = {
- { SUF_Z, ONLY_AVX, 0, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x3A, 0x00}, 0, 4, 8 }
-};
-
-static const x86_insn_info vzero_insn[] = {
- { SUF_Z, 0, CPU_AVX, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0, 2, {0x0F, 0x77, 0}, 0, 0, 0 }
-};
-
-static const x86_insn_info vmaskmov_insn[] = {
- { SUF_Z, ONLY_AVX, 0, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x00}, 0, 3, 12 },
- { SUF_Z, ONLY_AVX, 0, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 3, 16 },
- { SUF_Z, ONLY_AVX, 0, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x02}, 0, 3, 203 },
- { SUF_Z, ONLY_AVX, 0, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x02}, 0, 3, 206 }
-};
-
-static const x86_insn_info vpermil_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x08}, 0, 3, 12 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x08}, 0, 3, 16 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 3, 185 },
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x3A, 0x00}, 0, 3, 191 }
-};
-
-static const x86_insn_info vperm2f128_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x3A, 0x06}, 0, 4, 20 }
-};
-
-static const x86_insn_info vperm_var_avx2_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 3, 16 }
-};
-
-static const x86_insn_info vperm_imm_avx2_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xCD, 3, {0x0F, 0x3A, 0x00}, 0, 3, 191 }
-};
-
-static const x86_insn_info vperm2i128_avx2_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x3A, 0x46}, 0, 4, 20 }
-};
-
-static const x86_insn_info vpbroadcastb_avx2_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x78}, 0, 2, 543 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x78}, 0, 2, 545 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x78}, 0, 2, 635 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x78}, 0, 2, 637 }
-};
-
-static const x86_insn_info vpbroadcastw_avx2_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x79}, 0, 2, 543 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x79}, 0, 2, 545 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x79}, 0, 2, 547 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x79}, 0, 2, 549 }
-};
-
-static const x86_insn_info vpbroadcastd_avx2_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x58}, 0, 2, 543 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x58}, 0, 2, 545 },
- { SUF_Z, ONLY_AVX, CPU_386, CPU_AVX2, 0, {0, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x58}, 0, 2, 299 },
- { SUF_Z, ONLY_AVX, CPU_386, CPU_AVX2, 0, {0, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x58}, 0, 2, 643 }
-};
-
-static const x86_insn_info vpbroadcastq_avx2_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x59}, 0, 2, 543 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x59}, 0, 2, 545 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x59}, 0, 2, 333 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x59}, 0, 2, 621 }
-};
-
-static const x86_insn_info vpshiftv_vexw0_avx2_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x00}, 0, 3, 12 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 3, 16 }
-};
-
-static const x86_insn_info vpshiftv_vexw1_avx2_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC9, 3, {0x0F, 0x38, 0x00}, 0, 3, 12 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xCD, 3, {0x0F, 0x38, 0x00}, 0, 3, 16 }
-};
-
-static const x86_insn_info vmaskmov_vexw1_avx2_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC9, 3, {0x0F, 0x38, 0x00}, 0, 3, 12 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xCD, 3, {0x0F, 0x38, 0x00}, 0, 3, 16 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC9, 3, {0x0F, 0x38, 0x02}, 0, 3, 203 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xCD, 3, {0x0F, 0x38, 0x02}, 0, 3, 206 }
-};
-
-static const x86_insn_info vex_66_0F3A_imm8_avx2_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 4, 60 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x3A, 0x00}, 0, 4, 20 }
-};
-
-static const x86_insn_info gather_64x_64x_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC9, 3, {0x0F, 0x38, 0x00}, 0, 3, 221 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xCD, 3, {0x0F, 0x38, 0x00}, 0, 3, 224 }
-};
-
-static const x86_insn_info gather_64x_64y_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC9, 3, {0x0F, 0x38, 0x00}, 0, 3, 221 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xCD, 3, {0x0F, 0x38, 0x00}, 0, 3, 278 }
-};
-
-static const x86_insn_info gather_32x_32y_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x00}, 0, 3, 245 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 3, 251 }
-};
-
-static const x86_insn_info gather_32x_32y_128_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x00}, 0, 3, 245 },
- { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 3, 248 }
-};
-
-static const x86_insn_info tsx_xabort_insn[] = {
- { SUF_Z, 0, CPU_TSX, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0xC6, 0xF8, 0}, 0, 1, 3 }
-};
-
-static const x86_insn_info tsx_xbegin_insn[] = {
- { SUF_Z, 0, CPU_386, CPU_TSX, 0, {0, 0, 0}, 0, 0, 0, 2, {0xC7, 0xF8, 0}, 0, 1, 679 },
- { SUF_Z, NOT_64, CPU_TSX, 0, 0, {0, 0, 0}, 16, 0, 0, 2, {0xC7, 0xF8, 0}, 0, 1, 678 }
-};
-
-static const x86_insn_info tsx_0x0F_0x01_insn[] = {
- { SUF_Z, 0, CPU_TSX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0, 3, {0x0F, 0x01, 0x00}, 0, 0, 0 }
-};
-
-static const x86_insn_info vfma_ps_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_FMA, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x00}, 0, 3, 12 },
- { SUF_Z, ONLY_AVX, CPU_FMA, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 3, 16 }
-};
-
-static const x86_insn_info vfma_pd_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_FMA, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC9, 3, {0x0F, 0x38, 0x00}, 0, 3, 12 },
- { SUF_Z, ONLY_AVX, CPU_FMA, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xCD, 3, {0x0F, 0x38, 0x00}, 0, 3, 16 }
-};
-
-static const x86_insn_info vfma_ss_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_FMA, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x00}, 0, 3, 0 },
- { SUF_Z, ONLY_AVX, CPU_FMA, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x00}, 0, 3, 56 }
-};
-
-static const x86_insn_info vfma_sd_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_FMA, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC9, 3, {0x0F, 0x38, 0x00}, 0, 3, 0 },
- { SUF_Z, ONLY_AVX, CPU_FMA, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC9, 3, {0x0F, 0x38, 0x00}, 0, 3, 4 }
-};
-
-static const x86_insn_info aes_insn[] = {
- { SUF_Z, 0, CPU_AES, 0, 0, {MOD_Op1Add, MOD_Op2Add, MOD_SetVEX}, 0, 0, 0x66, 3, {0x0F, 0x00, 0x00}, 0, 2, 158 },
- { SUF_Z, ONLY_AVX, CPU_AES, CPU_AVX, 0, {MOD_Op1Add, MOD_Op2Add, 0}, 0, 0, 0xC1, 3, {0x0F, 0x00, 0x00}, 0, 3, 12 }
-};
-
-static const x86_insn_info aesimc_insn[] = {
- { SUF_Z, 0, CPU_AES, 0, 0, {MOD_Op1Add, MOD_Op2Add, MOD_SetVEX}, 0, 0, 0x66, 3, {0x0F, 0x00, 0x00}, 0, 2, 155 }
-};
-
-static const x86_insn_info aes_imm_insn[] = {
- { SUF_Z, 0, CPU_AES, 0, 0, {MOD_Op1Add, MOD_Op2Add, MOD_SetVEX}, 0, 0, 0x66, 3, {0x0F, 0x00, 0x00}, 0, 3, 185 }
-};
-
-static const x86_insn_info pclmulqdq_insn[] = {
- { SUF_Z, 0, CPU_CLMUL, 0, 0, {MOD_Op1Add, MOD_Op2Add, MOD_SetVEX}, 0, 0, 0x66, 3, {0x0F, 0x00, 0x00}, 0, 3, 158 },
- { SUF_Z, ONLY_AVX, CPU_AVX, CPU_CLMUL, 0, {MOD_Op1Add, MOD_Op2Add, 0}, 0, 0, 0xC1, 3, {0x0F, 0x00, 0x00}, 0, 4, 60 }
-};
-
-static const x86_insn_info pclmulqdq_fixed_insn[] = {
- { SUF_Z, 0, CPU_CLMUL, 0, 0, {MOD_Imm8, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x44}, 0, 2, 158 },
- { SUF_Z, ONLY_AVX, CPU_AVX, CPU_CLMUL, 0, {MOD_Imm8, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x44}, 0, 3, 12 }
-};
-
-static const x86_insn_info rdrand_insn[] = {
- { SUF_Z, 0, 0, 0, 0, {MOD_SpAdd, 0, 0}, 16, 0, 0, 2, {0x0F, 0xC7, 0}, 0, 1, 395 },
- { SUF_Z, 0, CPU_386, 0, 0, {MOD_SpAdd, 0, 0}, 32, 0, 0, 2, {0x0F, 0xC7, 0}, 0, 1, 26 },
- { SUF_Z, ONLY_64, 0, 0, 0, {MOD_SpAdd, 0, 0}, 64, 0, 0, 2, {0x0F, 0xC7, 0}, 0, 1, 30 }
-};
-
-static const x86_insn_info fs_gs_base_insn[] = {
- { SUF_Z, ONLY_64, CPU_FSGSBASE, 0, 0, {MOD_SpAdd, 0, 0}, 32, 0, 0xF3, 2, {0x0F, 0xAE, 0}, 0, 1, 26 },
- { SUF_Z, ONLY_64, CPU_FSGSBASE, 0, 0, {MOD_SpAdd, 0, 0}, 64, 0, 0xF3, 2, {0x0F, 0xAE, 0}, 0, 1, 30 }
-};
-
-static const x86_insn_info avx_cvtps2ph_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_AVX, CPU_F16C, 0, {MOD_PreAdd, MOD_Op2Add, 0}, 0, 0, 0xC0, 3, {0x0F, 0x3A, 0x00}, 0, 3, 209 },
- { SUF_Z, ONLY_AVX, CPU_AVX, CPU_F16C, 0, {MOD_PreAdd, MOD_Op2Add, 0}, 0, 0, 0xC0, 3, {0x0F, 0x3A, 0x00}, 0, 3, 212 },
- { SUF_Z, ONLY_AVX, CPU_AVX, CPU_F16C, 0, {MOD_PreAdd, MOD_Op2Add, 0}, 0, 0, 0xC4, 3, {0x0F, 0x3A, 0x00}, 0, 3, 215 },
- { SUF_Z, ONLY_AVX, CPU_AVX, CPU_F16C, 0, {MOD_PreAdd, MOD_Op2Add, 0}, 0, 0, 0xC4, 3, {0x0F, 0x3A, 0x00}, 0, 3, 218 }
-};
-
-static const x86_insn_info avx_cvtph2ps_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_AVX, CPU_F16C, 0, {MOD_PreAdd, MOD_Op2Add, 0}, 0, 0, 0xC0, 3, {0x0F, 0x38, 0x00}, 0, 2, 64 },
- { SUF_Z, ONLY_AVX, CPU_AVX, CPU_F16C, 0, {MOD_PreAdd, MOD_Op2Add, 0}, 0, 0, 0xC0, 3, {0x0F, 0x38, 0x00}, 0, 2, 631 },
- { SUF_Z, ONLY_AVX, CPU_AVX, CPU_F16C, 0, {MOD_PreAdd, MOD_Op2Add, 0}, 0, 0, 0xC4, 3, {0x0F, 0x38, 0x00}, 0, 2, 208 },
- { SUF_Z, ONLY_AVX, CPU_AVX, CPU_F16C, 0, {MOD_PreAdd, MOD_Op2Add, 0}, 0, 0, 0xC4, 3, {0x0F, 0x38, 0x00}, 0, 2, 633 }
-};
-
-static const x86_insn_info extrq_insn[] = {
- { SUF_Z, 0, CPU_SSE4a, 0, 0, {0, 0, 0}, 0, 0, 0x66, 2, {0x0F, 0x78, 0}, 0, 3, 65 },
- { SUF_Z, 0, CPU_SSE4a, 0, 0, {0, 0, 0}, 0, 0, 0x66, 2, {0x0F, 0x79, 0}, 0, 2, 64 }
-};
-
-static const x86_insn_info insertq_insn[] = {
- { SUF_Z, 0, CPU_SSE4a, 0, 0, {0, 0, 0}, 0, 0, 0xF2, 2, {0x0F, 0x78, 0}, 0, 4, 64 },
- { SUF_Z, 0, CPU_SSE4a, 0, 0, {0, 0, 0}, 0, 0, 0xF2, 2, {0x0F, 0x79, 0}, 0, 2, 64 }
-};
-
-static const x86_insn_info movntsd_insn[] = {
- { SUF_Z, 0, CPU_SSE4a, 0, 0, {0, 0, 0}, 0, 0, 0xF2, 2, {0x0F, 0x2B, 0}, 0, 2, 47 }
-};
-
-static const x86_insn_info movntss_insn[] = {
- { SUF_Z, 0, CPU_SSE4a, 0, 0, {0, 0, 0}, 0, 0, 0xF3, 2, {0x0F, 0x2B, 0}, 0, 2, 450 }
-};
-
-static const x86_insn_info vfrc_pdps_insn[] = {
- { SUF_Z, 0, CPU_XOP, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0x80, 2, {0x09, 0x80, 0}, 0, 2, 155 },
- { SUF_Z, 0, CPU_XOP, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0x84, 2, {0x09, 0x80, 0}, 0, 2, 191 }
-};
-
-static const x86_insn_info vfrczsd_insn[] = {
- { SUF_Z, 0, CPU_XOP, 0, 0, {0, 0, 0}, 0, 0, 0x80, 2, {0x09, 0x83, 0}, 0, 2, 64 },
- { SUF_Z, 0, CPU_XOP, 0, 0, {0, 0, 0}, 0, 0, 0x80, 2, {0x09, 0x83, 0}, 0, 2, 451 }
-};
-
-static const x86_insn_info vfrczss_insn[] = {
- { SUF_Z, 0, CPU_XOP, 0, 0, {0, 0, 0}, 0, 0, 0x80, 2, {0x09, 0x82, 0}, 0, 2, 64 },
- { SUF_Z, 0, CPU_XOP, 0, 0, {0, 0, 0}, 0, 0, 0x80, 2, {0x09, 0x82, 0}, 0, 2, 336 }
-};
-
-static const x86_insn_info vpcmov_insn[] = {
- { SUF_Z, 0, CPU_XOP, 0, 0, {0, 0, 0}, 0, 0, 0x80, 2, {0x08, 0xA2, 0}, 0, 4, 12 },
- { SUF_Z, 0, CPU_XOP, 0, 0, {0, 0, 0}, 0, 0, 0x88, 2, {0x08, 0xA2, 0}, 0, 4, 68 },
- { SUF_Z, 0, CPU_XOP, 0, 0, {0, 0, 0}, 0, 0, 0x84, 2, {0x08, 0xA2, 0}, 0, 4, 16 },
- { SUF_Z, 0, CPU_XOP, 0, 0, {0, 0, 0}, 0, 0, 0x8C, 2, {0x08, 0xA2, 0}, 0, 4, 72 }
-};
-
-static const x86_insn_info vpcom_insn[] = {
- { SUF_Z, 0, CPU_XOP, 0, 0, {MOD_Op1Add, MOD_Imm8, 0}, 0, 0, 0x80, 2, {0x08, 0x00, 0}, 0, 3, 12 }
-};
-
-static const x86_insn_info vpcom_imm_insn[] = {
- { SUF_Z, 0, CPU_XOP, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0x80, 2, {0x08, 0x00, 0}, 0, 4, 60 }
-};
-
-static const x86_insn_info vphaddsub_insn[] = {
- { SUF_Z, 0, CPU_XOP, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0x80, 2, {0x09, 0x00, 0}, 0, 2, 155 }
-};
-
-static const x86_insn_info vpma_insn[] = {
- { SUF_Z, 0, CPU_XOP, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0x80, 2, {0x08, 0x00, 0}, 0, 4, 12 }
-};
-
-static const x86_insn_info vpperm_insn[] = {
- { SUF_Z, 0, CPU_XOP, 0, 0, {0, 0, 0}, 0, 0, 0x80, 2, {0x08, 0xA3, 0}, 0, 4, 12 },
- { SUF_Z, 0, CPU_XOP, 0, 0, {0, 0, 0}, 0, 0, 0x88, 2, {0x08, 0xA3, 0}, 0, 4, 68 }
-};
-
-static const x86_insn_info vprot_insn[] = {
- { SUF_Z, 0, CPU_XOP, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0x80, 2, {0x09, 0x90, 0}, 0, 3, 155 },
- { SUF_Z, 0, CPU_XOP, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0x88, 2, {0x09, 0x90, 0}, 0, 3, 12 },
- { SUF_Z, 0, CPU_XOP, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0x80, 2, {0x08, 0xC0, 0}, 0, 3, 185 }
-};
-
-static const x86_insn_info amd_vpshift_insn[] = {
- { SUF_Z, 0, CPU_XOP, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0x80, 2, {0x09, 0x00, 0}, 0, 3, 155 },
- { SUF_Z, 0, CPU_XOP, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0x88, 2, {0x09, 0x00, 0}, 0, 3, 12 }
-};
-
-static const x86_insn_info fma_128_256_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_FMA4, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 4, 12 },
- { SUF_Z, ONLY_AVX, CPU_FMA4, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC9, 3, {0x0F, 0x3A, 0x00}, 0, 4, 68 },
- { SUF_Z, ONLY_AVX, CPU_FMA4, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x3A, 0x00}, 0, 4, 16 },
- { SUF_Z, ONLY_AVX, CPU_FMA4, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xCD, 3, {0x0F, 0x3A, 0x00}, 0, 4, 72 }
-};
-
-static const x86_insn_info fma_128_m32_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_FMA4, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 4, 36 },
- { SUF_Z, ONLY_AVX, CPU_FMA4, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 4, 76 },
- { SUF_Z, ONLY_AVX, CPU_FMA4, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC9, 3, {0x0F, 0x3A, 0x00}, 0, 4, 80 }
-};
-
-static const x86_insn_info fma_128_m64_insn[] = {
- { SUF_Z, ONLY_AVX, CPU_FMA4, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 4, 36 },
- { SUF_Z, ONLY_AVX, CPU_FMA4, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 4, 40 },
- { SUF_Z, ONLY_AVX, CPU_FMA4, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC9, 3, {0x0F, 0x3A, 0x00}, 0, 4, 44 }
-};
-
-static const x86_insn_info xsaveopt64_insn[] = {
- { SUF_Z, ONLY_64, 0, 0, 0, {MOD_SpAdd, MOD_Op0Add, MOD_Op1Add}, 64, 0, 0, 2, {0x00, 0x00, 0}, 0, 1, 532 }
-};
-
-static const x86_insn_info movbe_insn[] = {
- { SUF_Z, 0, CPU_MOVBE, 0, 0, {0, 0, 0}, 16, 0, 0, 3, {0x0F, 0x38, 0xF0}, 0, 2, 465 },
- { SUF_Z, 0, CPU_MOVBE, 0, 0, {0, 0, 0}, 16, 0, 0, 3, {0x0F, 0x38, 0xF1}, 0, 2, 467 },
- { SUF_Z, 0, CPU_386, CPU_MOVBE, 0, {0, 0, 0}, 32, 0, 0, 3, {0x0F, 0x38, 0xF0}, 0, 2, 359 },
- { SUF_Z, 0, CPU_386, CPU_MOVBE, 0, {0, 0, 0}, 32, 0, 0, 3, {0x0F, 0x38, 0xF1}, 0, 2, 337 },
- { SUF_Z, ONLY_64, CPU_MOVBE, 0, 0, {0, 0, 0}, 64, 0, 0, 3, {0x0F, 0x38, 0xF0}, 0, 2, 469 },
- { SUF_Z, ONLY_64, CPU_MOVBE, 0, 0, {0, 0, 0}, 64, 0, 0, 3, {0x0F, 0x38, 0xF1}, 0, 2, 339 }
-};
-
-static const x86_insn_info vex_gpr_ndd_rm_0F38_regext_insn[] = {
- { SUF_L|SUF_Z, ONLY_AVX, CPU_386, 0, 0, {MOD_PreAdd, MOD_Op2Add, MOD_SpAdd}, 32, 0, 0xC0, 3, {0x0F, 0x38, 0x00}, 0, 2, 255 },
- { SUF_Q|SUF_Z, ONLY_64|ONLY_AVX, 0, 0, 0, {MOD_PreAdd, MOD_Op2Add, MOD_SpAdd}, 64, 0, 0xC0, 3, {0x0F, 0x38, 0x00}, 0, 2, 258 }
-};
-
-static const x86_insn_info vex_gpr_reg_rm_0F_imm8_insn[] = {
- { SUF_L|SUF_Z, ONLY_AVX, CPU_386, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_Op2Add}, 32, 0, 0xC0, 3, {0x0F, 0x00, 0x00}, 0, 3, 134 },
- { SUF_Q|SUF_Z, ONLY_64|ONLY_AVX, 0, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_Op2Add}, 64, 0, 0xC0, 3, {0x0F, 0x00, 0x00}, 0, 3, 137 }
-};
-
-static const x86_insn_info vex_gpr_reg_nds_rm_0F_insn[] = {
- { SUF_L|SUF_Z, ONLY_AVX, CPU_386, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_Op2Add}, 32, 0, 0xC0, 3, {0x0F, 0x00, 0x00}, 0, 3, 254 },
- { SUF_Q|SUF_Z, ONLY_64|ONLY_AVX, 0, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_Op2Add}, 64, 0, 0xC0, 3, {0x0F, 0x00, 0x00}, 0, 3, 257 }
-};
-
-static const x86_insn_info vex_gpr_reg_rm_nds_0F_insn[] = {
- { SUF_L|SUF_Z, ONLY_AVX, CPU_386, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_Op2Add}, 32, 0, 0xC0, 3, {0x0F, 0x00, 0x00}, 0, 3, 149 },
- { SUF_Q|SUF_Z, ONLY_64|ONLY_AVX, 0, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_Op2Add}, 64, 0, 0xC0, 3, {0x0F, 0x00, 0x00}, 0, 3, 152 }
-};
-
-static const x86_insn_info bextr_insn[] = {
- { SUF_L|SUF_Z, ONLY_AVX, CPU_386, CPU_BMI1, 0, {0, 0, 0}, 32, 0, 0xC0, 3, {0x0F, 0x38, 0xF7}, 0, 3, 149 },
- { SUF_L|SUF_Z, ONLY_AVX, CPU_386, CPU_TBM, 0, {0, 0, 0}, 32, 0, 0x80, 2, {0x0A, 0x10, 0}, 0, 3, 230 },
- { SUF_Q|SUF_Z, ONLY_64|ONLY_AVX, CPU_BMI1, 0, 0, {0, 0, 0}, 64, 0, 0xC0, 3, {0x0F, 0x38, 0xF7}, 0, 3, 152 },
- { SUF_Q|SUF_Z, ONLY_64|ONLY_AVX, CPU_TBM, 0, 0, {0, 0, 0}, 64, 0, 0x88, 2, {0x0A, 0x10, 0}, 0, 3, 233 }
-};
-
-static const x86_insn_info invpcid_insn[] = {
- { SUF_Z, NOT_64, CPU_386, CPU_INVPCID, CPU_Priv, {0, 0, 0}, 0, 0, 0x66, 3, {0x0F, 0x38, 0x82}, 0, 2, 611 },
- { SUF_Z, ONLY_64, CPU_INVPCID, CPU_Priv, 0, {0, 0, 0}, 0, 64, 0x66, 3, {0x0F, 0x38, 0x82}, 0, 2, 613 }
-};
-
-static const x86_insn_info intel_SHA1MSG1_insn[] = {
- { SUF_Z, 0, CPU_SHA, 0, 0, {0, 0, 0}, 0, 0, 0, 3, {0x0F, 0x38, 0xC9}, 0, 2, 155 }
-};
-
-static const x86_insn_info intel_SHA1MSG2_insn[] = {
- { SUF_Z, 0, CPU_SHA, 0, 0, {0, 0, 0}, 0, 0, 0, 3, {0x0F, 0x38, 0xCA}, 0, 2, 155 }
-};
-
-static const x86_insn_info intel_SHA1NEXTE_insn[] = {
- { SUF_Z, 0, CPU_SHA, 0, 0, {0, 0, 0}, 0, 0, 0, 3, {0x0F, 0x38, 0xC8}, 0, 2, 155 }
-};
-
-static const x86_insn_info intel_SHA1RNDS4_insn[] = {
- { SUF_Z, 0, CPU_SHA, 0, 0, {0, 0, 0}, 0, 0, 0, 3, {0x0F, 0x3A, 0xCC}, 0, 3, 185 }
-};
-
-static const x86_insn_info intel_SHA256MSG1_insn[] = {
- { SUF_Z, 0, CPU_SHA, 0, 0, {0, 0, 0}, 0, 0, 0, 3, {0x0F, 0x38, 0xCC}, 0, 2, 155 }
-};
-
-static const x86_insn_info intel_SHA256MSG2_insn[] = {
- { SUF_Z, 0, CPU_SHA, 0, 0, {0, 0, 0}, 0, 0, 0, 3, {0x0F, 0x38, 0xCD}, 0, 2, 155 }
-};
-
-static const x86_insn_info intel_SHA256RNDS2_insn[] = {
- { SUF_Z, 0, CPU_SHA, 0, 0, {0, 0, 0}, 0, 0, 0, 3, {0x0F, 0x38, 0xCB}, 0, 2, 64 }
-};
-
-static const x86_insn_info vex_gpr_ndd_rm_0F38_insn[] = {
- { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_PreAdd, MOD_Op2Add, 0}, 32, 0, 0x00, 3, {0x0F, 0x38, 0x00}, 0, 2, 101 },
- { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_PreAdd, MOD_Op2Add, 0}, 64, 0, 0x00, 3, {0x0F, 0x38, 0x00}, 0, 2, 104 }
-};
-
-static const x86_insn_info xop_gpr_reg_rm_09_insn[] = {
- { SUF_L|SUF_Z, 0, CPU_386, CPU_TBM, 0, {MOD_Op1Add, MOD_SpAdd, 0}, 32, 0, 0x80, 2, {0x09, 0x00, 0}, 0, 2, 255 },
- { SUF_Q|SUF_Z, ONLY_64, CPU_TBM, 0, 0, {MOD_Op1Add, MOD_SpAdd, 0}, 64, 0, 0x88, 2, {0x09, 0x00, 0}, 0, 2, 258 }
-};
-
-static const x86_insn_info now3d_insn[] = {
- { SUF_Z, 0, CPU_3DNow, 0, 0, {MOD_Imm8, 0, 0}, 0, 0, 0, 2, {0x0F, 0x0F, 0}, 0, 2, 140 }
-};
-
-static const x86_insn_info cmpxchg16b_insn[] = {
- { SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 2, {0x0F, 0xC7, 0}, 1, 1, 510 }
-};
-
-static const x86_insn_info invlpga_insn[] = {
- { SUF_Z, 0, CPU_SVM, 0, 0, {0, 0, 0}, 0, 0, 0, 3, {0x0F, 0x01, 0xDF}, 0, 0, 0 },
- { SUF_Z, 0, CPU_386, CPU_SVM, 0, {0, 0, 0}, 0, 0, 0, 3, {0x0F, 0x01, 0xDF}, 0, 2, 515 }
-};
-
-static const x86_insn_info skinit_insn[] = {
- { SUF_Z, 0, CPU_SVM, 0, 0, {0, 0, 0}, 0, 0, 0, 3, {0x0F, 0x01, 0xDE}, 0, 0, 0 },
- { SUF_Z, 0, CPU_SVM, 0, 0, {0, 0, 0}, 0, 0, 0, 3, {0x0F, 0x01, 0xDE}, 0, 1, 655 }
-};
-
-static const x86_insn_info svm_rax_insn[] = {
- { SUF_Z, 0, CPU_SVM, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0, 3, {0x0F, 0x01, 0x00}, 0, 0, 0 },
- { SUF_Z, 0, CPU_SVM, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0, 3, {0x0F, 0x01, 0x00}, 0, 1, 515 }
-};
-
-static const x86_insn_info padlock_insn[] = {
- { SUF_Z, 0, CPU_PadLock, 0, 0, {MOD_Imm8, MOD_PreAdd, MOD_Op1Add}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 0, 0 }
-};
-
-static const x86_insn_info cyrixmmx_insn[] = {
- { SUF_Z, 0, CPU_Cyrix, CPU_MMX, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 140 }
-};
-
-static const x86_insn_info pmachriw_insn[] = {
- { SUF_Z, 0, CPU_Cyrix, CPU_MMX, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x5E, 0}, 0, 2, 317 }
-};
-
-static const x86_insn_info rdwrshr_insn[] = {
- { SUF_Z, 0, CPU_686, CPU_Cyrix, CPU_SMM, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0x0F, 0x36, 0}, 0, 1, 90 }
-};
-
-static const x86_insn_info rsdc_insn[] = {
- { SUF_Z, 0, CPU_486, CPU_Cyrix, CPU_SMM, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x79, 0}, 0, 2, 629 }
-};
-
-static const x86_insn_info cyrixsmm_insn[] = {
- { SUF_Z, 0, CPU_486, CPU_Cyrix, CPU_SMM, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 1, 619 }
-};
-
-static const x86_insn_info svdc_insn[] = {
- { SUF_Z, 0, CPU_486, CPU_Cyrix, CPU_SMM, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x78, 0}, 0, 2, 619 }
-};
-
-static const x86_insn_info ibts_insn[] = {
- { SUF_Z, 0, CPU_386, CPU_Obs, CPU_Undoc, {0, 0, 0}, 16, 0, 0, 2, {0x0F, 0xA7, 0}, 0, 2, 260 },
- { SUF_Z, 0, CPU_386, CPU_Obs, CPU_Undoc, {0, 0, 0}, 32, 0, 0, 2, {0x0F, 0xA7, 0}, 0, 2, 266 }
-};
-
-static const x86_insn_info umov_insn[] = {
- { SUF_Z, 0, CPU_386, CPU_Undoc, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x10, 0}, 0, 2, 323 },
- { SUF_Z, 0, CPU_386, CPU_Undoc, 0, {0, 0, 0}, 16, 0, 0, 2, {0x0F, 0x11, 0}, 0, 2, 260 },
- { SUF_Z, 0, CPU_386, CPU_Undoc, 0, {0, 0, 0}, 32, 0, 0, 2, {0x0F, 0x11, 0}, 0, 2, 266 },
- { SUF_Z, 0, CPU_386, CPU_Undoc, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x12, 0}, 0, 2, 325 },
- { SUF_Z, 0, CPU_386, CPU_Undoc, 0, {0, 0, 0}, 16, 0, 0, 2, {0x0F, 0x13, 0}, 0, 2, 98 },
- { SUF_Z, 0, CPU_386, CPU_Undoc, 0, {0, 0, 0}, 32, 0, 0, 2, {0x0F, 0x13, 0}, 0, 2, 101 }
-};
-
-static const x86_insn_info xbts_insn[] = {
- { SUF_Z, 0, CPU_386, CPU_Obs, CPU_Undoc, {0, 0, 0}, 16, 0, 0, 2, {0x0F, 0xA6, 0}, 0, 2, 465 },
- { SUF_Z, 0, CPU_386, CPU_Obs, CPU_Undoc, {0, 0, 0}, 32, 0, 0, 2, {0x0F, 0xA6, 0}, 0, 2, 359 }
-};
-
-
+/* Generated by gen_x86_insn.py rHEAD, do not edit */
+static const x86_info_operand insn_operands[] = {
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_Mem, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_SIMDRM, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_SIMDRM, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEXImmSrc, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_SIMDRM, OPS_256, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_VEXImmSrc, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_SIMDRM, OPS_256, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_Mem, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEXImmSrc, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_Mem, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEXImmSrc, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEXImmSrc, OPAP_None},
+ {OPT_Mem, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_Mem, OPS_8, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_SpareVEX, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_Mem, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_SIMDRM, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEXImmSrc, OPAP_None},
+ {OPT_SIMDRM, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_VEXImmSrc, OPAP_None},
+ {OPT_SIMDRM, OPS_256, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_Mem, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEXImmSrc, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEXImmSrc, OPAP_None},
+ {OPT_Mem, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_SpareVEX, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_SpareVEX, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_SpareVEX, OPAP_None},
+ {OPT_Mem, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_Reg, OPS_16, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 0, 0, OPTM_None, OPA_SImm, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 0, 0, OPTM_None, OPA_SImm, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 0, 0, OPTM_None, OPA_SImm, OPAP_None},
+ {OPT_Reg, OPS_16, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_16, 1, 0, OPTM_None, OPA_SImm, OPAP_SImm8},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_32, 1, 0, OPTM_None, OPA_SImm, OPAP_SImm8},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_32, 1, 0, OPTM_None, OPA_SImm, OPAP_SImm8},
+ {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Mem, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_SpareVEX, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_SpareVEX, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_SpareVEX, OPAP_None},
+ {OPT_Mem, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDRM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_SpareVEX, OPAP_None},
+ {OPT_Mem, OPS_8, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_SpareVEX, OPAP_None},
+ {OPT_Mem, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDRM, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_SpareVEX, OPAP_None},
+ {OPT_SIMDRM, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_Mem, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDRM, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDRM, OPS_256, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_Mem, OPS_8, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_SpareVEX, OPAP_None},
+ {OPT_SIMDRM, OPS_256, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDRM, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDRM, OPS_256, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_Mem, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_Mem, OPS_128, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_MemXMMIndex, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_MemXMMIndex, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_SpareVEX, OPAP_None},
+ {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_32, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_32, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDRM, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_SpareVEX, OPAP_None},
+ {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDRM, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_XMM0, OPS_128, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_MemXMMIndex, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_MemYMMIndex, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_MemYMMIndex, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_RM, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_16, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_RM, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_16, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Creg, OPS_8, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Creg, OPS_8, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Creg, OPS_8, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_MemYMMIndex, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_RM, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_VEX, OPAP_None},
+ {OPT_RM, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_RM, OPS_16, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_RM, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_RM, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_16, 0, 0, OPTM_None, OPA_SpareEA, OPAP_None},
+ {OPT_Imm, OPS_8, 0, 0, OPTM_None, OPA_SImm, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_SpareEA, OPAP_None},
+ {OPT_Imm, OPS_8, 0, 0, OPTM_None, OPA_SImm, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_SpareEA, OPAP_None},
+ {OPT_Imm, OPS_8, 0, 0, OPTM_None, OPA_SImm, OPAP_None},
+ {OPT_Reg, OPS_16, 0, 0, OPTM_None, OPA_SpareEA, OPAP_None},
+ {OPT_Imm, OPS_16, 1, 0, OPTM_None, OPA_SImm, OPAP_SImm8},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_SpareEA, OPAP_None},
+ {OPT_Imm, OPS_32, 1, 0, OPTM_None, OPA_SImm, OPAP_SImm8},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_SpareEA, OPAP_None},
+ {OPT_Imm, OPS_32, 1, 0, OPTM_None, OPA_SImm, OPAP_SImm8},
+ {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Mem, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_RM, OPS_8, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_8, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Reg, OPS_8, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_8, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_ST0, OPS_80, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_Reg, OPS_80, 0, 0, OPTM_None, OPA_Op1Add, OPAP_None},
+ {OPT_Reg, OPS_80, 0, 0, OPTM_None, OPA_Op1Add, OPAP_None},
+ {OPT_ST0, OPS_80, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_SIMDRM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDRM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDRM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Mem, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Mem, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Areg, OPS_8, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_MemOffs, OPS_8, 1, 1, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Areg, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_MemOffs, OPS_16, 1, 1, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Areg, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_MemOffs, OPS_32, 1, 1, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Areg, OPS_64, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_MemOffs, OPS_64, 1, 1, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_MemOffs, OPS_8, 1, 1, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Areg, OPS_8, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_MemOffs, OPS_16, 1, 1, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Areg, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_MemOffs, OPS_32, 1, 1, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Areg, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_MemOffs, OPS_64, 1, 1, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Areg, OPS_64, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Op0Add, OPAP_None},
+ {OPT_Imm, OPS_64, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Mem, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Mem, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Mem, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Areg, OPS_8, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_MemOffs, OPS_8, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Areg, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_MemOffs, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Areg, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_MemOffs, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_MemOffs, OPS_8, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Areg, OPS_8, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_MemOffs, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Areg, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_MemOffs, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Areg, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_RM, OPS_8, 1, 0, OPTM_None, OPA_EA, OPAP_ShortMov},
+ {OPT_Areg, OPS_8, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_ShortMov},
+ {OPT_Areg, OPS_16, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_ShortMov},
+ {OPT_Areg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_ShortMov},
+ {OPT_Areg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Areg, OPS_8, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_8, 1, 0, OPTM_None, OPA_EA, OPAP_ShortMov},
+ {OPT_Areg, OPS_16, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_ShortMov},
+ {OPT_Areg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_ShortMov},
+ {OPT_Areg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_ShortMov},
+ {OPT_Mem, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SegReg, OPS_16, 1, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Reg, OPS_16, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SegReg, OPS_16, 1, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SegReg, OPS_16, 1, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SegReg, OPS_16, 1, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SegReg, OPS_16, 1, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_8, 0, 0, OPTM_None, OPA_Op0Add, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_Reg, OPS_16, 0, 0, OPTM_None, OPA_Op0Add, OPAP_None},
+ {OPT_Imm, OPS_16, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Op0Add, OPAP_None},
+ {OPT_Imm, OPS_32, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Op0Add, OPAP_None},
+ {OPT_Imm, OPS_64, 0, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Op0Add, OPAP_None},
+ {OPT_Imm, OPS_64, 1, 0, OPTM_None, OPA_Imm, OPAP_SImm32Avail},
+ {OPT_RM, OPS_8, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 0, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_RM, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_16, 0, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_32, 0, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_RM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_32, 0, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_RM, OPS_8, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_RM, OPS_16, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_16, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_RM, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_32, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_RM, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_32, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_CR4, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_CRReg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_CRReg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_CR4, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_CRReg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_DRReg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_DRReg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_DRReg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Mem, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Mem, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Mem, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDRM, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_16, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Reg, OPS_16, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_16, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Mem, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Mem, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_16, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Mem, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Areg, OPS_8, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_RM, OPS_8, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Areg, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_RM, OPS_16, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Areg, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_RM, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Areg, OPS_64, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_RM, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Mem, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_Any, 0, 0, OPTM_None, OPA_JmpRel, OPAP_None},
+ {OPT_Creg, OPS_32, 0, 0, OPTM_None, OPA_AdSizeR, OPAP_None},
+ {OPT_Imm, OPS_Any, 0, 0, OPTM_Short, OPA_JmpRel, OPAP_None},
+ {OPT_Creg, OPS_32, 0, 0, OPTM_None, OPA_AdSizeR, OPAP_None},
+ {OPT_SIMDRM, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDRM, OPS_256, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Imm, OPS_Any, 0, 0, OPTM_None, OPA_JmpRel, OPAP_None},
+ {OPT_Creg, OPS_64, 0, 0, OPTM_None, OPA_AdSizeR, OPAP_None},
+ {OPT_Imm, OPS_Any, 0, 0, OPTM_Short, OPA_JmpRel, OPAP_None},
+ {OPT_Creg, OPS_64, 0, 0, OPTM_None, OPA_AdSizeR, OPAP_None},
+ {OPT_Imm, OPS_Any, 0, 0, OPTM_None, OPA_JmpRel, OPAP_None},
+ {OPT_Creg, OPS_16, 0, 0, OPTM_None, OPA_AdSizeR, OPAP_None},
+ {OPT_Imm, OPS_Any, 0, 0, OPTM_Short, OPA_JmpRel, OPAP_None},
+ {OPT_Creg, OPS_16, 0, 0, OPTM_None, OPA_AdSizeR, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_Areg, OPS_8, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_Areg, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_Areg, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_Dreg, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_Areg, OPS_8, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_Dreg, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_Areg, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_Dreg, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_Areg, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Mem, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_EAVEX, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_EAVEX, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_MemrAX, OPS_Any, 0, 0, OPTM_None, OPA_AdSizeEA, OPAP_None},
+ {OPT_Creg, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_Areg, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_Reg, OPS_16, 0, 0, OPTM_None, OPA_Op0Add, OPAP_None},
+ {OPT_Reg, OPS_16, 0, 0, OPTM_None, OPA_Op0Add, OPAP_None},
+ {OPT_Areg, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_Areg, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Areg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Areg, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Op0Add, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Op0Add, OPAP_None},
+ {OPT_Areg, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_Areg, OPS_64, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_Areg, OPS_64, 0, 0, OPTM_None, OPA_Op0Add, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Op0Add, OPAP_None},
+ {OPT_Areg, OPS_64, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_Reg, OPS_16, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Mem, OPS_Any, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Mem, OPS_Any, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Mem, OPS_Any, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_8, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_16, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_8, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_RM, OPS_8, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Creg, OPS_8, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_RM, OPS_8, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm1, OPS_8, 1, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_RM, OPS_16, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Creg, OPS_8, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_RM, OPS_16, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm1, OPS_8, 1, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_RM, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Creg, OPS_8, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_RM, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm1, OPS_8, 1, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_RM, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Creg, OPS_8, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_RM, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm1, OPS_8, 1, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_Imm, OPS_16, 1, 0, OPTM_None, OPA_JmpFar, OPAP_None},
+ {OPT_Imm, OPS_16, 1, 0, OPTM_None, OPA_JmpFar, OPAP_None},
+ {OPT_Imm, OPS_16, 1, 0, OPTM_None, OPA_JmpFar, OPAP_None},
+ {OPT_Imm, OPS_32, 1, 0, OPTM_None, OPA_JmpFar, OPAP_None},
+ {OPT_Imm, OPS_16, 1, 0, OPTM_None, OPA_JmpFar, OPAP_None},
+ {OPT_Imm, OPS_BITS, 1, 0, OPTM_None, OPA_JmpFar, OPAP_None},
+ {OPT_Areg, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_Imm, OPS_16, 1, 0, OPTM_None, OPA_Imm, OPAP_SImm8},
+ {OPT_Areg, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_Imm, OPS_32, 1, 0, OPTM_None, OPA_Imm, OPAP_SImm8},
+ {OPT_Areg, OPS_64, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_Imm, OPS_32, 1, 0, OPTM_None, OPA_Imm, OPAP_SImm8},
+ {OPT_RM, OPS_16, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 0, 0, OPTM_None, OPA_SImm, OPAP_None},
+ {OPT_RM, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_16, 0, 0, OPTM_None, OPA_Imm, OPAP_SImm8},
+ {OPT_RM, OPS_16, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_16, 1, 0, OPTM_None, OPA_Imm, OPAP_SImm8},
+ {OPT_RM, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 0, 0, OPTM_None, OPA_SImm, OPAP_None},
+ {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_32, 0, 0, OPTM_None, OPA_Imm, OPAP_SImm8},
+ {OPT_RM, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_32, 1, 0, OPTM_None, OPA_Imm, OPAP_SImm8},
+ {OPT_RM, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_8, 0, 0, OPTM_None, OPA_SImm, OPAP_None},
+ {OPT_RM, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_32, 1, 0, OPTM_None, OPA_Imm, OPAP_SImm8},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Mem, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Mem, OPS_256, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Mem, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Mem, OPS_256, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Reg, OPS_16, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_8, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_16, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDRM, OPS_128, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDRM, OPS_256, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Mem, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Mem, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDRM, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Areg, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_Mem, OPS_80, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SegReg, OPS_16, 1, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDRM, OPS_64, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Areg, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_Imm, OPS_16, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_Areg, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_Imm, OPS_32, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_Areg, OPS_64, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_Imm, OPS_32, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_SegReg, OPS_16, 1, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Mem, OPS_80, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Mem, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_Mem, OPS_128, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_8, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_8, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_SpareVEX, OPAP_None},
+ {OPT_SIMDRM, OPS_128, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_SIMDReg, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_256, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_32, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_16, 1, 0, OPTM_None, OPA_EA, OPAP_A16},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_Imm, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Spare, OPAP_None},
+ {OPT_RM, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_SpareVEX, OPAP_None},
+ {OPT_RM, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SIMDReg, OPS_128, 0, 0, OPTM_None, OPA_SpareVEX, OPAP_None},
+ {OPT_RM, OPS_64, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Mem, OPS_16, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Mem, OPS_32, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_MemEAX, OPS_Any, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_Mem, OPS_80, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Reg, OPS_BITS, 0, 0, OPTM_None, OPA_Op0Add, OPAP_None},
+ {OPT_RM, OPS_BITS, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_SS, OPS_Any, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_SS, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_SS, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_DS, OPS_Any, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_DS, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_DS, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_ES, OPS_Any, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_ES, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_ES, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_FS, OPS_Any, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_FS, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_FS, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_GS, OPS_Any, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_GS, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_GS, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_Mem, OPS_Any, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_ImmNotSegOff, OPS_Any, 0, 0, OPTM_None, OPA_JmpRel, OPAP_None},
+ {OPT_ImmNotSegOff, OPS_16, 0, 0, OPTM_None, OPA_JmpRel, OPAP_None},
+ {OPT_ImmNotSegOff, OPS_32, 0, 0, OPTM_None, OPA_JmpRel, OPAP_None},
+ {OPT_Imm, OPS_16, 0, 0, OPTM_Near, OPA_JmpRel, OPAP_None},
+ {OPT_Imm, OPS_32, 0, 0, OPTM_Near, OPA_JmpRel, OPAP_None},
+ {OPT_Imm, OPS_Any, 0, 0, OPTM_Near, OPA_JmpRel, OPAP_None},
+ {OPT_Reg, OPS_BITS, 0, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_RM, OPS_16, 0, 0, OPTM_Near, OPA_EA, OPAP_None},
+ {OPT_RM, OPS_32, 0, 0, OPTM_Near, OPA_EA, OPAP_None},
+ {OPT_RM, OPS_64, 0, 0, OPTM_Near, OPA_EA, OPAP_None},
+ {OPT_Mem, OPS_Any, 0, 0, OPTM_Near, OPA_EA, OPAP_None},
+ {OPT_Mem, OPS_16, 0, 0, OPTM_Far, OPA_EA, OPAP_None},
+ {OPT_Mem, OPS_32, 0, 0, OPTM_Far, OPA_EA, OPAP_None},
+ {OPT_Mem, OPS_64, 0, 0, OPTM_Far, OPA_EA, OPAP_None},
+ {OPT_Mem, OPS_Any, 0, 0, OPTM_Far, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_16, 0, 0, OPTM_Far, OPA_JmpFar, OPAP_None},
+ {OPT_Imm, OPS_32, 0, 0, OPTM_Far, OPA_JmpFar, OPAP_None},
+ {OPT_Imm, OPS_Any, 0, 0, OPTM_Far, OPA_JmpFar, OPAP_None},
+ {OPT_Imm, OPS_16, 0, 0, OPTM_None, OPA_JmpFar, OPAP_None},
+ {OPT_Imm, OPS_32, 0, 0, OPTM_None, OPA_JmpFar, OPAP_None},
+ {OPT_Imm, OPS_Any, 0, 0, OPTM_None, OPA_JmpFar, OPAP_None},
+ {OPT_Reg, OPS_80, 0, 0, OPTM_To, OPA_Op1Add, OPAP_None},
+ {OPT_Reg, OPS_32, 0, 0, OPTM_None, OPA_Op1Add, OPAP_None},
+ {OPT_Reg, OPS_64, 0, 0, OPTM_None, OPA_Op1Add, OPAP_None},
+ {OPT_Mem, OPS_BITS, 1, 0, OPTM_None, OPA_EA, OPAP_None},
+ {OPT_Imm, OPS_16, 0, 0, OPTM_None, OPA_JmpRel, OPAP_None},
+ {OPT_Imm, OPS_32, 0, 0, OPTM_None, OPA_JmpRel, OPAP_None},
+ {OPT_Imm, OPS_8, 1, 0, OPTM_None, OPA_SImm, OPAP_None},
+ {OPT_Imm, OPS_BITS, 1, 0, OPTM_None, OPA_Imm, OPAP_SImm8},
+ {OPT_Imm, OPS_32, 0, 0, OPTM_None, OPA_SImm, OPAP_None},
+ {OPT_CS, OPS_Any, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_CS, OPS_16, 0, 0, OPTM_None, OPA_None, OPAP_None},
+ {OPT_CS, OPS_32, 0, 0, OPTM_None, OPA_None, OPAP_None}
+};
+
+static const x86_insn_info empty_insn[] = {
+ { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0 }
+};
+
+static const x86_insn_info not64_insn[] = {
+ { SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0 }
+};
+
+static const x86_insn_info onebyte_insn[] = {
+ { SUF_Z, 0, 0, 0, 0, {MOD_Op0Add, MOD_OpSizeR, MOD_DOpS64R}, 0, 0, 0, 1, {0x00, 0, 0}, 0, 0, 0 }
+};
+
+static const x86_insn_info onebyte_prefix_insn[] = {
+ { SUF_Z, 0, 0, 0, 0, {MOD_PreAdd, MOD_Op0Add, 0}, 0, 0, 0x00, 1, {0x00, 0, 0}, 0, 0, 0 }
+};
+
+static const x86_insn_info twobyte_insn[] = {
+ { SUF_L|SUF_Q|SUF_Z, 0, 0, 0, 0, {MOD_Op0Add, MOD_Op1Add, 0}, 0, 0, 0, 2, {0x00, 0x00, 0}, 0, 0, 0 }
+};
+
+static const x86_insn_info threebyte_insn[] = {
+ { SUF_Z, 0, 0, 0, 0, {MOD_Op0Add, MOD_Op1Add, MOD_Op2Add}, 0, 0, 0, 3, {0x00, 0x00, 0x00}, 0, 0, 0 }
+};
+
+static const x86_insn_info onebytemem_insn[] = {
+ { SUF_L|SUF_Q|SUF_S|SUF_Z, 0, 0, 0, 0, {MOD_SpAdd, MOD_Op0Add, 0}, 0, 0, 0, 1, {0x00, 0, 0}, 0, 1, 674 }
+};
+
+static const x86_insn_info twobytemem_insn[] = {
+ { SUF_L|SUF_Q|SUF_S|SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_SpAdd, MOD_Op0Add, MOD_Op1Add}, 0, 0, 0, 2, {0x00, 0x00, 0}, 0, 1, 532 }
+};
+
+static const x86_insn_info mov_insn[] = {
+ { SUF_B|SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xA0, 0, 0}, 0, 2, 365 },
+ { SUF_W|SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xA1, 0, 0}, 0, 2, 367 },
+ { SUF_L|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xA1, 0, 0}, 0, 2, 369 },
+ { SUF_B|SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xA2, 0, 0}, 0, 2, 371 },
+ { SUF_W|SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xA3, 0, 0}, 0, 2, 373 },
+ { SUF_L|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xA3, 0, 0}, 0, 2, 375 },
+ { SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xA0, 0, 0}, 0, 2, 341 },
+ { SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xA1, 0, 0}, 0, 2, 343 },
+ { SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xA1, 0, 0}, 0, 2, 345 },
+ { SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0xA1, 0, 0}, 0, 2, 347 },
+ { SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xA2, 0, 0}, 0, 2, 349 },
+ { SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xA3, 0, 0}, 0, 2, 351 },
+ { SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xA3, 0, 0}, 0, 2, 353 },
+ { SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0xA3, 0, 0}, 0, 2, 355 },
+ { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x88, 0xA2, 0}, 0, 2, 377 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x89, 0xA3, 0}, 0, 2, 379 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x89, 0xA3, 0}, 0, 2, 381 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x89, 0xA3, 0}, 0, 2, 383 },
+ { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x88, 0, 0}, 0, 2, 323 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x89, 0, 0}, 0, 2, 260 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x89, 0, 0}, 0, 2, 266 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x89, 0, 0}, 0, 2, 272 },
+ { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x8A, 0xA0, 0}, 0, 2, 385 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x8B, 0xA1, 0}, 0, 2, 387 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x8B, 0xA1, 0}, 0, 2, 389 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x8B, 0xA1, 0}, 0, 2, 391 },
+ { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x8A, 0, 0}, 0, 2, 325 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x8B, 0, 0}, 0, 2, 98 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x8B, 0, 0}, 0, 2, 101 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x8B, 0, 0}, 0, 2, 104 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x8C, 0, 0}, 0, 2, 393 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x8C, 0, 0}, 0, 2, 395 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x8C, 0, 0}, 0, 2, 397 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x8C, 0, 0}, 0, 2, 399 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x8E, 0, 0}, 0, 2, 401 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x8E, 0, 0}, 0, 2, 396 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x8E, 0, 0}, 0, 2, 398 },
+ { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xB0, 0, 0}, 0, 2, 403 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xB8, 0, 0}, 0, 2, 405 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xB8, 0, 0}, 0, 2, 407 },
+ { GAS_ILLEGAL|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0xB8, 0, 0}, 0, 2, 409 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0xB8, 0xC7, 0}, 0, 2, 411 },
+ { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xC6, 0, 0}, 0, 2, 413 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xC7, 0, 0}, 0, 2, 415 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xC7, 0, 0}, 0, 2, 417 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0xC7, 0, 0}, 0, 2, 419 },
+ { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xC6, 0, 0}, 0, 2, 421 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xC7, 0, 0}, 0, 2, 423 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xC7, 0, 0}, 0, 2, 425 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0xC7, 0, 0}, 0, 2, 427 },
+ { SUF_L|SUF_Z, NOT_64, CPU_586, CPU_Priv, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x22, 0}, 0, 2, 429 },
+ { SUF_L|SUF_Z, NOT_64, CPU_386, CPU_Priv, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x22, 0}, 0, 2, 431 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_Priv, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x22, 0}, 0, 2, 433 },
+ { SUF_L|SUF_Z, NOT_64, CPU_586, CPU_Priv, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x20, 0}, 0, 2, 435 },
+ { SUF_L|SUF_Z, NOT_64, CPU_386, CPU_Priv, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x20, 0}, 0, 2, 430 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_Priv, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x20, 0}, 0, 2, 437 },
+ { SUF_L|SUF_Z, NOT_64, CPU_386, CPU_Priv, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x23, 0}, 0, 2, 439 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_Priv, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x23, 0}, 0, 2, 441 },
+ { SUF_L|SUF_Z, NOT_64, CPU_386, CPU_Priv, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x21, 0}, 0, 2, 440 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_Priv, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x21, 0}, 0, 2, 443 },
+ { GAS_ONLY|SUF_Q|SUF_Z, 0, CPU_MMX, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x6F, 0}, 0, 2, 140 },
+ { GAS_ONLY|SUF_Q|SUF_Z, ONLY_64, CPU_MMX, 0, 0, {0, 0, 0}, 64, 0, 0, 2, {0x0F, 0x6E, 0}, 0, 2, 295 },
+ { GAS_ONLY|SUF_Q|SUF_Z, 0, CPU_MMX, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x7F, 0}, 0, 2, 331 },
+ { GAS_ONLY|SUF_Q|SUF_Z, ONLY_64, CPU_MMX, 0, 0, {0, 0, 0}, 64, 0, 0, 2, {0x0F, 0x7E, 0}, 0, 2, 297 },
+ { GAS_ONLY|SUF_Q|SUF_Z, 0, CPU_SSE2, 0, 0, {0, 0, 0}, 0, 0, 0xF3, 2, {0x0F, 0x7E, 0}, 0, 2, 64 },
+ { GAS_ONLY|SUF_Q|SUF_Z, 0, CPU_SSE2, 0, 0, {0, 0, 0}, 0, 0, 0xF3, 2, {0x0F, 0x7E, 0}, 0, 2, 333 },
+ { GAS_ONLY|SUF_Q|SUF_Z, ONLY_64, CPU_SSE2, 0, 0, {0, 0, 0}, 64, 0, 0x66, 2, {0x0F, 0x6E, 0}, 0, 2, 301 },
+ { GAS_ONLY|SUF_Q|SUF_Z, 0, CPU_SSE2, 0, 0, {0, 0, 0}, 0, 0, 0x66, 2, {0x0F, 0xD6, 0}, 0, 2, 335 },
+ { GAS_ONLY|SUF_Q|SUF_Z, ONLY_64, CPU_SSE2, 0, 0, {0, 0, 0}, 64, 0, 0x66, 2, {0x0F, 0x7E, 0}, 0, 2, 182 }
+};
+
+static const x86_insn_info movabs_insn[] = {
+ { SUF_B|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xA0, 0, 0}, 0, 2, 341 },
+ { SUF_W|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xA1, 0, 0}, 0, 2, 343 },
+ { SUF_L|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xA1, 0, 0}, 0, 2, 345 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0xA1, 0, 0}, 0, 2, 347 },
+ { SUF_B|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xA2, 0, 0}, 0, 2, 349 },
+ { SUF_W|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xA3, 0, 0}, 0, 2, 351 },
+ { SUF_L|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xA3, 0, 0}, 0, 2, 353 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0xA3, 0, 0}, 0, 2, 355 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0xB8, 0, 0}, 0, 2, 357 }
+};
+
+static const x86_insn_info movszx_insn[] = {
+ { SUF_B|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 16, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 603 },
+ { SUF_B|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 32, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 537 },
+ { SUF_B|SUF_Z, ONLY_64, 0, 0, 0, {MOD_Op1Add, 0, 0}, 64, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 541 },
+ { SUF_W|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 32, 0, 0, 2, {0x0F, 0x01, 0}, 0, 2, 539 },
+ { SUF_W|SUF_Z, ONLY_64, 0, 0, 0, {MOD_Op1Add, 0, 0}, 64, 0, 0, 2, {0x0F, 0x01, 0}, 0, 2, 605 }
+};
+
+static const x86_insn_info movsxd_insn[] = {
+ { SUF_L|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x63, 0, 0}, 0, 2, 647 }
+};
+
+static const x86_insn_info push_insn[] = {
+ { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0x50, 0, 0}, 0, 1, 657 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 64, 0, 1, {0x50, 0, 0}, 0, 1, 405 },
+ { SUF_L|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x50, 0, 0}, 0, 1, 407 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0x50, 0, 0}, 0, 1, 357 },
+ { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0xFF, 0, 0}, 6, 1, 658 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 64, 0, 1, {0xFF, 0, 0}, 6, 1, 287 },
+ { SUF_L|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xFF, 0, 0}, 6, 1, 283 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0xFF, 0, 0}, 6, 1, 286 },
+ { GAS_ILLEGAL|SUF_Z, 0, CPU_186, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0x6A, 0, 0}, 0, 1, 100 },
+ { GAS_ONLY|SUF_Z, 0, CPU_186, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0x6A, 0, 0}, 0, 1, 702 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 64, 0, 1, {0x6A, 0x68, 0}, 0, 1, 112 },
+ { GAS_ILLEGAL|SUF_Z, NOT_64, CPU_186, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x6A, 0x68, 0}, 0, 1, 703 },
+ { SUF_W|SUF_Z, 0, CPU_186, 0, 0, {0, 0, 0}, 16, 64, 0, 1, {0x6A, 0x68, 0}, 0, 1, 574 },
+ { SUF_L|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x6A, 0x68, 0}, 0, 1, 576 },
+ { GAS_ILLEGAL|SUF_Z, 0, CPU_186, 0, 0, {0, 0, 0}, 16, 64, 0, 1, {0x68, 0, 0}, 0, 1, 416 },
+ { GAS_ILLEGAL|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x68, 0, 0}, 0, 1, 418 },
+ { GAS_ILLEGAL|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 64, 0, 1, {0x68, 0, 0}, 0, 1, 704 },
+ { SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x0E, 0, 0}, 0, 1, 705 },
+ { SUF_W|SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x0E, 0, 0}, 0, 1, 706 },
+ { SUF_L|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x0E, 0, 0}, 0, 1, 707 },
+ { SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x16, 0, 0}, 0, 1, 659 },
+ { SUF_W|SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x16, 0, 0}, 0, 1, 660 },
+ { SUF_L|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x16, 0, 0}, 0, 1, 661 },
+ { SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x1E, 0, 0}, 0, 1, 662 },
+ { SUF_W|SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x1E, 0, 0}, 0, 1, 663 },
+ { SUF_L|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x1E, 0, 0}, 0, 1, 664 },
+ { SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x06, 0, 0}, 0, 1, 665 },
+ { SUF_W|SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x06, 0, 0}, 0, 1, 666 },
+ { SUF_L|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x06, 0, 0}, 0, 1, 667 },
+ { SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0xA0, 0}, 0, 1, 668 },
+ { SUF_W|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 16, 0, 0, 2, {0x0F, 0xA0, 0}, 0, 1, 669 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 2, {0x0F, 0xA0, 0}, 0, 1, 670 },
+ { SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0xA8, 0}, 0, 1, 671 },
+ { SUF_W|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 16, 0, 0, 2, {0x0F, 0xA8, 0}, 0, 1, 672 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 2, {0x0F, 0xA8, 0}, 0, 1, 673 }
+};
+
+static const x86_insn_info pop_insn[] = {
+ { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0x58, 0, 0}, 0, 1, 657 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 64, 0, 1, {0x58, 0, 0}, 0, 1, 405 },
+ { SUF_L|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x58, 0, 0}, 0, 1, 407 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0x58, 0, 0}, 0, 1, 357 },
+ { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0x8F, 0, 0}, 0, 1, 658 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 64, 0, 1, {0x8F, 0, 0}, 0, 1, 287 },
+ { SUF_L|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x8F, 0, 0}, 0, 1, 283 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0x8F, 0, 0}, 0, 1, 286 },
+ { SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x17, 0, 0}, 0, 1, 659 },
+ { SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x17, 0, 0}, 0, 1, 660 },
+ { SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x17, 0, 0}, 0, 1, 661 },
+ { SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x1F, 0, 0}, 0, 1, 662 },
+ { SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x1F, 0, 0}, 0, 1, 663 },
+ { SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x1F, 0, 0}, 0, 1, 664 },
+ { SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x07, 0, 0}, 0, 1, 665 },
+ { SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x07, 0, 0}, 0, 1, 666 },
+ { SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x07, 0, 0}, 0, 1, 667 },
+ { SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0xA1, 0}, 0, 1, 668 },
+ { SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 16, 0, 0, 2, {0x0F, 0xA1, 0}, 0, 1, 669 },
+ { SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 2, {0x0F, 0xA1, 0}, 0, 1, 670 },
+ { SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0xA9, 0}, 0, 1, 671 },
+ { SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 16, 0, 0, 2, {0x0F, 0xA9, 0}, 0, 1, 672 },
+ { SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 2, {0x0F, 0xA9, 0}, 0, 1, 673 }
+};
+
+static const x86_insn_info xchg_insn[] = {
+ { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x86, 0, 0}, 0, 2, 323 },
+ { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x86, 0, 0}, 0, 2, 325 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x90, 0, 0}, 0, 2, 517 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x90, 0, 0}, 0, 2, 519 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x87, 0, 0}, 0, 2, 260 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x87, 0, 0}, 0, 2, 98 },
+ { SUF_L|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x87, 0, 0}, 0, 2, 521 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x90, 0, 0}, 0, 2, 523 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x90, 0, 0}, 0, 2, 525 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x87, 0, 0}, 0, 2, 266 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x87, 0, 0}, 0, 2, 101 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x90, 0, 0}, 0, 2, 527 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x90, 0, 0}, 0, 2, 356 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x90, 0, 0}, 0, 2, 529 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x87, 0, 0}, 0, 2, 272 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x87, 0, 0}, 0, 2, 104 }
+};
+
+static const x86_insn_info in_insn[] = {
+ { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xE4, 0, 0}, 0, 2, 498 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xE5, 0, 0}, 0, 2, 500 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xE5, 0, 0}, 0, 2, 617 },
+ { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xEC, 0, 0}, 0, 2, 504 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xED, 0, 0}, 0, 2, 506 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xED, 0, 0}, 0, 2, 502 },
+ { GAS_ONLY|SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xE4, 0, 0}, 0, 1, 3 },
+ { GAS_ONLY|SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xE5, 0, 0}, 0, 1, 3 },
+ { GAS_ONLY|SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xE5, 0, 0}, 0, 1, 3 },
+ { GAS_ONLY|SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xEC, 0, 0}, 0, 1, 503 },
+ { GAS_ONLY|SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xED, 0, 0}, 0, 1, 503 },
+ { GAS_ONLY|SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xED, 0, 0}, 0, 1, 503 }
+};
+
+static const x86_insn_info out_insn[] = {
+ { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xE6, 0, 0}, 0, 2, 497 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xE7, 0, 0}, 0, 2, 499 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xE7, 0, 0}, 0, 2, 501 },
+ { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xEE, 0, 0}, 0, 2, 503 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xEF, 0, 0}, 0, 2, 505 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xEF, 0, 0}, 0, 2, 507 },
+ { GAS_ONLY|SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xE6, 0, 0}, 0, 1, 3 },
+ { GAS_ONLY|SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xE7, 0, 0}, 0, 1, 3 },
+ { GAS_ONLY|SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xE7, 0, 0}, 0, 1, 3 },
+ { GAS_ONLY|SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xEE, 0, 0}, 0, 1, 503 },
+ { GAS_ONLY|SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xEF, 0, 0}, 0, 1, 503 },
+ { GAS_ONLY|SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xEF, 0, 0}, 0, 1, 503 }
+};
+
+static const x86_insn_info lea_insn[] = {
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x8D, 0, 0}, 0, 2, 531 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x8D, 0, 0}, 0, 2, 533 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x8D, 0, 0}, 0, 2, 535 }
+};
+
+static const x86_insn_info ldes_insn[] = {
+ { SUF_W|SUF_Z, NOT_64, 0, 0, 0, {MOD_Op0Add, 0, 0}, 16, 0, 0, 1, {0x00, 0, 0}, 0, 2, 531 },
+ { SUF_L|SUF_Z, NOT_64, CPU_386, 0, 0, {MOD_Op0Add, 0, 0}, 32, 0, 0, 1, {0x00, 0, 0}, 0, 2, 533 }
+};
+
+static const x86_insn_info lfgss_insn[] = {
+ { SUF_W|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 16, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 531 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 32, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 533 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 64, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 535 }
+};
+
+static const x86_insn_info arith_insn[] = {
+ { SUF_B|SUF_Z, 0, 0, 0, 0, {MOD_Op0Add, 0, 0}, 0, 0, 0, 1, {0x04, 0, 0}, 0, 2, 498 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_Op2Add, MOD_Op1AddSp, 0}, 16, 0, 0, 2, {0x83, 0xC0, 0x05}, 0, 2, 573 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op2Add, MOD_Op1AddSp, 0}, 32, 0, 0, 2, {0x83, 0xC0, 0x05}, 0, 2, 575 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_Op2Add, MOD_Op1AddSp, 0}, 64, 0, 0, 2, {0x83, 0xC0, 0x05}, 0, 2, 577 },
+ { SUF_B|SUF_Z, 0, 0, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 0, 0, 0, 1, {0x80, 0, 0}, 0, 2, 421 },
+ { SUF_B|SUF_Z, 0, 0, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 0, 0, 0, 1, {0x80, 0, 0}, 0, 2, 413 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 16, 0, 0, 1, {0x83, 0, 0}, 0, 2, 579 },
+ { GAS_ILLEGAL|SUF_Z, 0, 0, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 16, 0, 0, 1, {0x83, 0x81, 0}, 0, 2, 581 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 16, 0, 0, 1, {0x83, 0x81, 0}, 0, 2, 583 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 32, 0, 0, 1, {0x83, 0, 0}, 0, 2, 585 },
+ { GAS_ILLEGAL|SUF_Z, NOT_64, CPU_386, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 32, 0, 0, 1, {0x83, 0x81, 0}, 0, 2, 587 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 32, 0, 0, 1, {0x83, 0x81, 0}, 0, 2, 589 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 64, 0, 0, 1, {0x83, 0, 0}, 0, 2, 591 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 64, 0, 0, 1, {0x83, 0x81, 0}, 0, 2, 593 },
+ { SUF_B|SUF_Z, 0, 0, 0, 0, {MOD_Op0Add, 0, 0}, 0, 0, 0, 1, {0x00, 0, 0}, 0, 2, 323 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_Op0Add, 0, 0}, 16, 0, 0, 1, {0x01, 0, 0}, 0, 2, 260 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op0Add, 0, 0}, 32, 0, 0, 1, {0x01, 0, 0}, 0, 2, 266 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_Op0Add, 0, 0}, 64, 0, 0, 1, {0x01, 0, 0}, 0, 2, 272 },
+ { SUF_B|SUF_Z, 0, 0, 0, 0, {MOD_Op0Add, 0, 0}, 0, 0, 0, 1, {0x02, 0, 0}, 0, 2, 325 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_Op0Add, 0, 0}, 16, 0, 0, 1, {0x03, 0, 0}, 0, 2, 98 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op0Add, 0, 0}, 32, 0, 0, 1, {0x03, 0, 0}, 0, 2, 101 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_Op0Add, 0, 0}, 64, 0, 0, 1, {0x03, 0, 0}, 0, 2, 104 }
+};
+
+static const x86_insn_info incdec_insn[] = {
+ { SUF_B|SUF_Z, 0, 0, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 0, 0, 0, 1, {0xFE, 0, 0}, 0, 1, 421 },
+ { SUF_W|SUF_Z, NOT_64, 0, 0, 0, {MOD_Op0Add, 0, 0}, 16, 0, 0, 1, {0x00, 0, 0}, 0, 1, 405 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 16, 0, 0, 1, {0xFF, 0, 0}, 0, 1, 287 },
+ { SUF_L|SUF_Z, NOT_64, CPU_386, 0, 0, {MOD_Op0Add, 0, 0}, 32, 0, 0, 1, {0x00, 0, 0}, 0, 1, 407 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 32, 0, 0, 1, {0xFF, 0, 0}, 0, 1, 283 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 64, 0, 0, 1, {0xFF, 0, 0}, 0, 1, 286 }
+};
+
+static const x86_insn_info f6_insn[] = {
+ { SUF_B|SUF_Z, 0, 0, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0, 1, {0xF6, 0, 0}, 0, 1, 421 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_SpAdd, 0, 0}, 16, 0, 0, 1, {0xF7, 0, 0}, 0, 1, 287 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_SpAdd, 0, 0}, 32, 0, 0, 1, {0xF7, 0, 0}, 0, 1, 283 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_SpAdd, 0, 0}, 64, 0, 0, 1, {0xF7, 0, 0}, 0, 1, 286 }
+};
+
+static const x86_insn_info div_insn[] = {
+ { SUF_B|SUF_Z, 0, 0, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0, 1, {0xF6, 0, 0}, 0, 1, 421 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_SpAdd, 0, 0}, 16, 0, 0, 1, {0xF7, 0, 0}, 0, 1, 287 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_SpAdd, 0, 0}, 32, 0, 0, 1, {0xF7, 0, 0}, 0, 1, 283 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_SpAdd, 0, 0}, 64, 0, 0, 1, {0xF7, 0, 0}, 0, 1, 286 },
+ { SUF_B|SUF_Z, 0, 0, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0, 1, {0xF6, 0, 0}, 0, 2, 471 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_SpAdd, 0, 0}, 16, 0, 0, 1, {0xF7, 0, 0}, 0, 2, 473 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_SpAdd, 0, 0}, 32, 0, 0, 1, {0xF7, 0, 0}, 0, 2, 475 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_SpAdd, 0, 0}, 64, 0, 0, 1, {0xF7, 0, 0}, 0, 2, 477 }
+};
+
+static const x86_insn_info test_insn[] = {
+ { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xA8, 0, 0}, 0, 2, 498 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xA9, 0, 0}, 0, 2, 623 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xA9, 0, 0}, 0, 2, 625 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0xA9, 0, 0}, 0, 2, 627 },
+ { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xF6, 0, 0}, 0, 2, 421 },
+ { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xF6, 0, 0}, 0, 2, 413 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xF7, 0, 0}, 0, 2, 423 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xF7, 0, 0}, 0, 2, 415 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xF7, 0, 0}, 0, 2, 425 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xF7, 0, 0}, 0, 2, 417 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0xF7, 0, 0}, 0, 2, 427 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0xF7, 0, 0}, 0, 2, 419 },
+ { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x84, 0, 0}, 0, 2, 323 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x85, 0, 0}, 0, 2, 260 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x85, 0, 0}, 0, 2, 266 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x85, 0, 0}, 0, 2, 272 },
+ { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x84, 0, 0}, 0, 2, 325 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x85, 0, 0}, 0, 2, 98 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x85, 0, 0}, 0, 2, 101 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x85, 0, 0}, 0, 2, 104 }
+};
+
+static const x86_insn_info aadm_insn[] = {
+ { SUF_Z, 0, 0, 0, 0, {MOD_Op0Add, 0, 0}, 0, 0, 0, 2, {0xD4, 0x0A, 0}, 0, 0, 0 },
+ { SUF_Z, 0, 0, 0, 0, {MOD_Op0Add, 0, 0}, 0, 0, 0, 1, {0xD4, 0, 0}, 0, 1, 3 }
+};
+
+static const x86_insn_info imul_insn[] = {
+ { SUF_B|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xF6, 0, 0}, 5, 1, 421 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xF7, 0, 0}, 5, 1, 287 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xF7, 0, 0}, 5, 1, 283 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0xF7, 0, 0}, 5, 1, 286 },
+ { SUF_W|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 16, 0, 0, 2, {0x0F, 0xAF, 0}, 0, 2, 98 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 2, {0x0F, 0xAF, 0}, 0, 2, 101 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_386, 0, 0, {0, 0, 0}, 64, 0, 0, 2, {0x0F, 0xAF, 0}, 0, 2, 104 },
+ { SUF_W|SUF_Z, 0, CPU_186, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x6B, 0, 0}, 0, 3, 98 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x6B, 0, 0}, 0, 3, 101 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_186, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x6B, 0, 0}, 0, 3, 104 },
+ { SUF_W|SUF_Z, 0, CPU_186, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x6B, 0, 0}, 0, 2, 303 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x6B, 0, 0}, 0, 2, 305 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_186, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x6B, 0, 0}, 0, 2, 307 },
+ { SUF_W|SUF_Z, 0, CPU_186, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x6B, 0x69, 0}, 0, 3, 107 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x6B, 0x69, 0}, 0, 3, 110 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_186, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x6B, 0x69, 0}, 0, 3, 113 },
+ { SUF_W|SUF_Z, 0, CPU_186, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x6B, 0x69, 0}, 0, 2, 309 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x6B, 0x69, 0}, 0, 2, 311 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_186, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x6B, 0x69, 0}, 0, 2, 313 }
+};
+
+static const x86_insn_info shift_insn[] = {
+ { SUF_B|SUF_Z, 0, 0, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0, 1, {0xD2, 0, 0}, 0, 2, 551 },
+ { SUF_B|SUF_Z, 0, 0, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0, 1, {0xD0, 0, 0}, 0, 2, 553 },
+ { SUF_B|SUF_Z, 0, CPU_186, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0, 1, {0xC0, 0, 0}, 0, 2, 421 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_SpAdd, 0, 0}, 16, 0, 0, 1, {0xD3, 0, 0}, 0, 2, 555 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_SpAdd, 0, 0}, 16, 0, 0, 1, {0xD1, 0, 0}, 0, 2, 557 },
+ { SUF_W|SUF_Z, 0, CPU_186, 0, 0, {MOD_SpAdd, 0, 0}, 16, 0, 0, 1, {0xC1, 0, 0}, 0, 2, 287 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_SpAdd, 0, 0}, 32, 0, 0, 1, {0xD3, 0, 0}, 0, 2, 559 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_SpAdd, 0, 0}, 32, 0, 0, 1, {0xD1, 0, 0}, 0, 2, 561 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_SpAdd, 0, 0}, 32, 0, 0, 1, {0xC1, 0, 0}, 0, 2, 289 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_SpAdd, 0, 0}, 64, 0, 0, 1, {0xD3, 0, 0}, 0, 2, 563 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_SpAdd, 0, 0}, 64, 0, 0, 1, {0xD1, 0, 0}, 0, 2, 565 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_186, 0, 0, {MOD_SpAdd, 0, 0}, 64, 0, 0, 1, {0xC1, 0, 0}, 0, 2, 291 },
+ { GAS_ONLY|SUF_B|SUF_Z, 0, 0, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0, 1, {0xD0, 0, 0}, 0, 1, 421 },
+ { GAS_ONLY|SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_SpAdd, 0, 0}, 16, 0, 0, 1, {0xD1, 0, 0}, 0, 1, 287 },
+ { GAS_ONLY|SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_SpAdd, 0, 0}, 32, 0, 0, 1, {0xD1, 0, 0}, 0, 1, 283 },
+ { GAS_ONLY|SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_SpAdd, 0, 0}, 64, 0, 0, 1, {0xD1, 0, 0}, 0, 1, 286 }
+};
+
+static const x86_insn_info shlrd_insn[] = {
+ { SUF_W|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 16, 0, 0, 2, {0x0F, 0x00, 0}, 0, 3, 260 },
+ { SUF_W|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 16, 0, 0, 2, {0x0F, 0x01, 0}, 0, 3, 263 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 32, 0, 0, 2, {0x0F, 0x00, 0}, 0, 3, 266 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 32, 0, 0, 2, {0x0F, 0x01, 0}, 0, 3, 269 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 64, 0, 0, 2, {0x0F, 0x00, 0}, 0, 3, 272 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 64, 0, 0, 2, {0x0F, 0x01, 0}, 0, 3, 275 },
+ { GAS_ONLY|SUF_W|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 16, 0, 0, 2, {0x0F, 0x01, 0}, 0, 2, 260 },
+ { GAS_ONLY|SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 32, 0, 0, 2, {0x0F, 0x01, 0}, 0, 2, 266 },
+ { GAS_ONLY|SUF_Q|SUF_Z, ONLY_64, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 64, 0, 0, 2, {0x0F, 0x01, 0}, 0, 2, 272 }
+};
+
+static const x86_insn_info call_insn[] = {
+ { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 0, {0, 0, 0}, 0, 1, 675 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 0, {0, 0, 0}, 0, 1, 676 },
+ { SUF_L|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 0, {0, 0, 0}, 0, 1, 677 },
+ { SUF_L|SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 0, {0, 0, 0}, 0, 1, 677 },
+ { SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xE8, 0, 0}, 0, 1, 678 },
+ { SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xE8, 0, 0}, 0, 1, 679 },
+ { SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 64, 0, 1, {0xE8, 0, 0}, 0, 1, 679 },
+ { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0xE8, 0, 0}, 0, 1, 680 },
+ { SUF_W, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xFF, 0, 0}, 2, 1, 287 },
+ { SUF_L, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xFF, 0, 0}, 2, 1, 283 },
+ { SUF_Q, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 64, 0, 1, {0xFF, 0, 0}, 2, 1, 286 },
+ { GAS_ONLY|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0xFF, 0, 0}, 2, 1, 681 },
+ { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0xFF, 0, 0}, 2, 1, 674 },
+ { GAS_ILLEGAL|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 64, 0, 1, {0xFF, 0, 0}, 2, 1, 682 },
+ { GAS_ILLEGAL|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xFF, 0, 0}, 2, 1, 683 },
+ { GAS_ILLEGAL|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 64, 0, 1, {0xFF, 0, 0}, 2, 1, 684 },
+ { GAS_ILLEGAL|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0xFF, 0, 0}, 2, 1, 685 },
+ { GAS_ILLEGAL|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xFF, 0, 0}, 3, 1, 686 },
+ { GAS_ILLEGAL|SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xFF, 0, 0}, 3, 1, 687 },
+ { GAS_ILLEGAL|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0xFF, 0, 0}, 3, 1, 688 },
+ { GAS_ILLEGAL|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xFF, 0, 0}, 3, 1, 689 },
+ { GAS_ILLEGAL|SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x9A, 0, 0}, 0, 1, 690 },
+ { GAS_ILLEGAL|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x9A, 0, 0}, 0, 1, 691 },
+ { GAS_ILLEGAL|SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x9A, 0, 0}, 0, 1, 692 },
+ { GAS_ILLEGAL|SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x9A, 0, 0}, 0, 1, 693 },
+ { GAS_ILLEGAL|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x9A, 0, 0}, 0, 1, 694 },
+ { GAS_ILLEGAL|SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x9A, 0, 0}, 0, 1, 695 },
+ { GAS_ONLY|GAS_NO_REV|SUF_W, NOT_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x9A, 0, 0}, 0, 2, 567 },
+ { GAS_ONLY|GAS_NO_REV|SUF_L, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x9A, 0, 0}, 0, 2, 569 },
+ { GAS_ONLY|GAS_NO_REV|SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0x9A, 0, 0}, 0, 2, 571 }
+};
+
+static const x86_insn_info jmp_insn[] = {
+ { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 0, {0, 0, 0}, 0, 1, 675 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 0, {0, 0, 0}, 0, 1, 676 },
+ { SUF_L|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x00, 0, 0}, 0, 1, 677 },
+ { SUF_L|SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0x00, 0, 0}, 0, 1, 677 },
+ { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0xEB, 0, 0}, 0, 1, 483 },
+ { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 64, 0, 1, {0xE9, 0, 0}, 0, 1, 678 },
+ { SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xE9, 0, 0}, 0, 1, 679 },
+ { SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 64, 0, 1, {0xE9, 0, 0}, 0, 1, 679 },
+ { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0xE9, 0, 0}, 0, 1, 680 },
+ { SUF_W, 0, 0, 0, 0, {0, 0, 0}, 16, 64, 0, 1, {0xFF, 0, 0}, 4, 1, 287 },
+ { SUF_L, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xFF, 0, 0}, 4, 1, 283 },
+ { SUF_Q, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 64, 0, 1, {0xFF, 0, 0}, 4, 1, 286 },
+ { GAS_ONLY|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0xFF, 0, 0}, 4, 1, 681 },
+ { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0xFF, 0, 0}, 4, 1, 674 },
+ { GAS_ILLEGAL|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 64, 0, 1, {0xFF, 0, 0}, 4, 1, 682 },
+ { GAS_ILLEGAL|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xFF, 0, 0}, 4, 1, 683 },
+ { GAS_ILLEGAL|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 64, 0, 1, {0xFF, 0, 0}, 4, 1, 684 },
+ { GAS_ILLEGAL|SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 1, {0xFF, 0, 0}, 4, 1, 685 },
+ { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xFF, 0, 0}, 5, 1, 686 },
+ { SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xFF, 0, 0}, 5, 1, 687 },
+ { SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 1, {0xFF, 0, 0}, 5, 1, 688 },
+ { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xFF, 0, 0}, 5, 1, 689 },
+ { SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xEA, 0, 0}, 0, 1, 690 },
+ { SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xEA, 0, 0}, 0, 1, 691 },
+ { SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xEA, 0, 0}, 0, 1, 692 },
+ { GAS_ILLEGAL|SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xEA, 0, 0}, 0, 1, 693 },
+ { GAS_ILLEGAL|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xEA, 0, 0}, 0, 1, 694 },
+ { GAS_ILLEGAL|SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xEA, 0, 0}, 0, 1, 695 },
+ { GAS_ONLY|GAS_NO_REV|SUF_W, NOT_64, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xEA, 0, 0}, 0, 2, 567 },
+ { GAS_ONLY|GAS_NO_REV|SUF_L, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xEA, 0, 0}, 0, 2, 569 },
+ { GAS_ONLY|GAS_NO_REV|SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xEA, 0, 0}, 0, 2, 571 }
+};
+
+static const x86_insn_info ljmpcall_insn[] = {
+ { SUF_W, 0, 0, 0, 0, {MOD_SpAdd, 0, 0}, 16, 0, 0, 1, {0xFF, 0, 0}, 0, 1, 34 },
+ { SUF_L, 0, CPU_386, 0, 0, {MOD_SpAdd, 0, 0}, 32, 0, 0, 1, {0xFF, 0, 0}, 0, 1, 58 },
+ { SUF_Q, ONLY_64, 0, 0, 0, {MOD_SpAdd, 0, 0}, 64, 0, 0, 1, {0xFF, 0, 0}, 0, 1, 6 },
+ { SUF_Z, 0, 0, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0, 1, {0xFF, 0, 0}, 0, 1, 699 },
+ { GAS_NO_REV|SUF_W, NOT_64, 0, 0, 0, {MOD_Gap, MOD_Op0Add, 0}, 16, 0, 0, 1, {0x00, 0, 0}, 0, 2, 567 },
+ { GAS_NO_REV|SUF_L, NOT_64, CPU_386, 0, 0, {MOD_Gap, MOD_Op0Add, 0}, 32, 0, 0, 1, {0x00, 0, 0}, 0, 2, 569 },
+ { GAS_NO_REV|SUF_Z, NOT_64, 0, 0, 0, {MOD_Gap, MOD_Op0Add, 0}, 0, 0, 0, 1, {0x00, 0, 0}, 0, 2, 571 }
+};
+
+static const x86_insn_info retnf_insn[] = {
+ { SUF_Z, NOT_64, 0, 0, 0, {MOD_Op0Add, 0, 0}, 0, 0, 0, 1, {0x01, 0, 0}, 0, 0, 0 },
+ { SUF_Z, NOT_64, 0, 0, 0, {MOD_Op0Add, 0, 0}, 0, 0, 0, 1, {0x00, 0, 0}, 0, 1, 406 },
+ { SUF_Z, ONLY_64, 0, 0, 0, {MOD_Op0Add, MOD_OpSizeR, 0}, 0, 0, 0, 1, {0x01, 0, 0}, 0, 0, 0 },
+ { SUF_Z, ONLY_64, 0, 0, 0, {MOD_Op0Add, MOD_OpSizeR, 0}, 0, 0, 0, 1, {0x00, 0, 0}, 0, 1, 406 },
+ { SUF_L|SUF_Q|SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_Op0Add, MOD_OpSizeR, 0}, 0, 0, 0, 1, {0x01, 0, 0}, 0, 0, 0 },
+ { SUF_L|SUF_Q|SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_Op0Add, MOD_OpSizeR, 0}, 0, 0, 0, 1, {0x00, 0, 0}, 0, 1, 406 }
+};
+
+static const x86_insn_info enter_insn[] = {
+ { GAS_NO_REV|SUF_L|SUF_Z, NOT_64, CPU_186, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xC8, 0, 0}, 0, 2, 645 },
+ { GAS_NO_REV|SUF_Q|SUF_Z, ONLY_64, CPU_186, 0, 0, {0, 0, 0}, 64, 64, 0, 1, {0xC8, 0, 0}, 0, 2, 645 },
+ { GAS_ONLY|GAS_NO_REV|SUF_W|SUF_Z, 0, CPU_186, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0xC8, 0, 0}, 0, 2, 645 }
+};
+
+static const x86_insn_info jcc_insn[] = {
+ { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 0, {0, 0, 0}, 0, 1, 481 },
+ { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 16, 0, 0, 0, {0, 0, 0}, 0, 1, 700 },
+ { SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 0, {0, 0, 0}, 0, 1, 701 },
+ { SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 0, {0, 0, 0}, 0, 1, 701 },
+ { SUF_Z, 0, 0, 0, 0, {MOD_Op0Add, 0, 0}, 0, 64, 0, 1, {0x70, 0, 0}, 0, 1, 483 },
+ { SUF_Z, 0, CPU_186, 0, 0, {MOD_Op1Add, 0, 0}, 16, 64, 0, 2, {0x0F, 0x80, 0}, 0, 1, 678 },
+ { SUF_Z, NOT_64, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 32, 0, 0, 2, {0x0F, 0x80, 0}, 0, 1, 679 },
+ { SUF_Z, ONLY_64, 0, 0, 0, {MOD_Op1Add, 0, 0}, 64, 64, 0, 2, {0x0F, 0x80, 0}, 0, 1, 679 },
+ { SUF_Z, 0, CPU_186, 0, 0, {MOD_Op1Add, 0, 0}, 0, 64, 0, 2, {0x0F, 0x80, 0}, 0, 1, 680 }
+};
+
+static const x86_insn_info jcxz_insn[] = {
+ { SUF_Z, 0, 0, 0, 0, {MOD_AdSizeR, 0, 0}, 0, 0, 0, 0, {0, 0, 0}, 0, 1, 481 },
+ { SUF_Z, 0, 0, 0, 0, {MOD_AdSizeR, 0, 0}, 0, 64, 0, 1, {0xE3, 0, 0}, 0, 1, 483 }
+};
+
+static const x86_insn_info loop_insn[] = {
+ { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 0, {0, 0, 0}, 0, 1, 481 },
+ { SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 0, {0, 0, 0}, 0, 2, 493 },
+ { SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 0, 64, 0, 0, {0, 0, 0}, 0, 2, 481 },
+ { SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 0, {0, 0, 0}, 0, 2, 489 },
+ { SUF_Z, NOT_64, 0, 0, 0, {MOD_Op0Add, 0, 0}, 0, 0, 0, 1, {0xE0, 0, 0}, 0, 1, 483 },
+ { SUF_Z, 0, 0, 0, 0, {MOD_Op0Add, 0, 0}, 0, 64, 0, 1, {0xE0, 0, 0}, 0, 2, 495 },
+ { SUF_Z, 0, CPU_386, 0, 0, {MOD_Op0Add, 0, 0}, 0, 64, 0, 1, {0xE0, 0, 0}, 0, 2, 483 },
+ { SUF_Z, ONLY_64, 0, 0, 0, {MOD_Op0Add, 0, 0}, 0, 64, 0, 1, {0xE0, 0, 0}, 0, 2, 491 }
+};
+
+static const x86_insn_info loopw_insn[] = {
+ { SUF_Z, NOT_64, 0, 0, 0, {MOD_Gap, MOD_AdSizeR, 0}, 0, 64, 0, 0, {0, 0, 0}, 0, 1, 481 },
+ { SUF_Z, NOT_64, 0, 0, 0, {MOD_Op0Add, MOD_AdSizeR, 0}, 0, 64, 0, 1, {0xE0, 0, 0}, 0, 1, 483 },
+ { SUF_Z, NOT_64, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 0, {0, 0, 0}, 0, 2, 493 },
+ { SUF_Z, NOT_64, 0, 0, 0, {MOD_Op0Add, 0, 0}, 0, 64, 0, 1, {0xE0, 0, 0}, 0, 2, 495 }
+};
+
+static const x86_insn_info loopl_insn[] = {
+ { SUF_Z, 0, 0, 0, 0, {MOD_Gap, MOD_AdSizeR, 0}, 0, 64, 0, 0, {0, 0, 0}, 0, 1, 481 },
+ { SUF_Z, 0, 0, 0, 0, {MOD_Op0Add, MOD_AdSizeR, 0}, 0, 64, 0, 1, {0xE0, 0, 0}, 0, 1, 483 },
+ { SUF_Z, 0, CPU_386, 0, 0, {0, 0, 0}, 0, 64, 0, 0, {0, 0, 0}, 0, 2, 481 },
+ { SUF_Z, 0, CPU_386, 0, 0, {MOD_Op0Add, 0, 0}, 0, 64, 0, 1, {0xE0, 0, 0}, 0, 2, 483 }
+};
+
+static const x86_insn_info loopq_insn[] = {
+ { SUF_Z, ONLY_64, 0, 0, 0, {MOD_Gap, MOD_AdSizeR, 0}, 0, 64, 0, 0, {0, 0, 0}, 0, 1, 481 },
+ { SUF_Z, ONLY_64, 0, 0, 0, {MOD_Op0Add, MOD_AdSizeR, 0}, 0, 64, 0, 1, {0xE0, 0, 0}, 0, 1, 483 },
+ { SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 0, 64, 0, 0, {0, 0, 0}, 0, 2, 489 },
+ { SUF_Z, ONLY_64, 0, 0, 0, {MOD_Op0Add, 0, 0}, 0, 64, 0, 1, {0xE0, 0, 0}, 0, 2, 491 }
+};
+
+static const x86_insn_info setcc_insn[] = {
+ { SUF_B|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0x0F, 0x90, 0}, 2, 1, 323 }
+};
+
+static const x86_insn_info cmpsd_insn[] = {
+ { GAS_ILLEGAL|SUF_Z, NOT_AVX, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xA7, 0, 0}, 0, 0, 0 },
+ { SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0xF2, 2, {0x0F, 0xC2, 0}, 0, 3, 92 },
+ { SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0xF2, 2, {0x0F, 0xC2, 0}, 0, 3, 95 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 0, 0, 0xC3, 2, {0x0F, 0xC2, 0}, 0, 4, 0 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 0, 0, 0xC3, 2, {0x0F, 0xC2, 0}, 0, 4, 4 }
+};
+
+static const x86_insn_info movsd_insn[] = {
+ { SUF_Z, NOT_AVX, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0xA5, 0, 0}, 0, 0, 0 },
+ { SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0xF2, 2, {0x0F, 0x10, 0}, 0, 2, 92 },
+ { SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0xF2, 2, {0x0F, 0x10, 0}, 0, 2, 451 },
+ { SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0xF2, 2, {0x0F, 0x11, 0}, 0, 2, 47 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 0, 0, 0xC3, 2, {0x0F, 0x10, 0}, 0, 3, 0 }
+};
+
+static const x86_insn_info bittest_insn[] = {
+ { SUF_W|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 16, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 260 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 32, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 266 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 64, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 272 },
+ { SUF_W|SUF_Z, 0, CPU_386, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 16, 0, 0, 2, {0x0F, 0xBA, 0}, 0, 2, 287 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 32, 0, 0, 2, {0x0F, 0xBA, 0}, 0, 2, 289 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_386, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 64, 0, 0, 2, {0x0F, 0xBA, 0}, 0, 2, 291 }
+};
+
+static const x86_insn_info bsfr_insn[] = {
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_Op1Add, 0, 0}, 16, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 98 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 32, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 101 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_Op1Add, 0, 0}, 64, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 104 }
+};
+
+static const x86_insn_info int_insn[] = {
+ { SUF_Z, 0, 0, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xCD, 0, 0}, 0, 1, 3 }
+};
+
+static const x86_insn_info bound_insn[] = {
+ { SUF_W|SUF_Z, NOT_64, CPU_186, 0, 0, {0, 0, 0}, 16, 0, 0, 1, {0x62, 0, 0}, 0, 2, 465 },
+ { SUF_L|SUF_Z, NOT_64, CPU_386, 0, 0, {0, 0, 0}, 32, 0, 0, 1, {0x62, 0, 0}, 0, 2, 359 }
+};
+
+static const x86_insn_info larlsl_insn[] = {
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_Op1Add, 0, 0}, 16, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 455 },
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_Op1Add, 0, 0}, 16, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 98 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 32, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 457 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 32, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 459 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_Op1Add, 0, 0}, 64, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 461 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_Op1Add, 0, 0}, 64, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 463 }
+};
+
+static const x86_insn_info arpl_insn[] = {
+ { SUF_W|SUF_Z, NOT_64, CPU_286, CPU_Prot, 0, {0, 0, 0}, 0, 0, 0, 1, {0x63, 0, 0}, 0, 2, 260 }
+};
+
+static const x86_insn_info str_insn[] = {
+ { SUF_W|SUF_Z, 0, CPU_286, CPU_Prot, 0, {0, 0, 0}, 16, 0, 0, 2, {0x0F, 0x00, 0}, 1, 1, 395 },
+ { SUF_L|SUF_Z, 0, CPU_386, CPU_Prot, 0, {0, 0, 0}, 32, 0, 0, 2, {0x0F, 0x00, 0}, 1, 1, 26 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_286, CPU_Prot, 0, {0, 0, 0}, 64, 0, 0, 2, {0x0F, 0x00, 0}, 1, 1, 30 },
+ { SUF_L|SUF_W|SUF_Z, 0, CPU_286, CPU_Prot, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 1, 1, 99 }
+};
+
+static const x86_insn_info prot286_insn[] = {
+ { SUF_W|SUF_Z, 0, CPU_286, 0, 0, {MOD_SpAdd, MOD_Op1Add, 0}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 1, 99 }
+};
+
+static const x86_insn_info sldtmsw_insn[] = {
+ { SUF_W|SUF_Z, 0, CPU_286, 0, 0, {MOD_SpAdd, MOD_Op1Add, 0}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 1, 34 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_SpAdd, MOD_Op1Add, 0}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 1, 58 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_286, 0, 0, {MOD_SpAdd, MOD_Op1Add, 0}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 1, 6 },
+ { SUF_W|SUF_Z, 0, CPU_286, 0, 0, {MOD_SpAdd, MOD_Op1Add, 0}, 16, 0, 0, 2, {0x0F, 0x00, 0}, 0, 1, 395 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_SpAdd, MOD_Op1Add, 0}, 32, 0, 0, 2, {0x0F, 0x00, 0}, 0, 1, 26 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_286, 0, 0, {MOD_SpAdd, MOD_Op1Add, 0}, 64, 0, 0, 2, {0x0F, 0x00, 0}, 0, 1, 30 }
+};
+
+static const x86_insn_info fld_insn[] = {
+ { SUF_S|SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xD9, 0, 0}, 0, 1, 654 },
+ { SUF_L|SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xDD, 0, 0}, 0, 1, 212 },
+ { SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xDB, 0, 0}, 5, 1, 656 },
+ { SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0xD9, 0xC0, 0}, 0, 1, 328 }
+};
+
+static const x86_insn_info fstp_insn[] = {
+ { SUF_S|SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xD9, 0, 0}, 3, 1, 654 },
+ { SUF_L|SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xDD, 0, 0}, 3, 1, 212 },
+ { SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xDB, 0, 0}, 7, 1, 656 },
+ { SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0xDD, 0xD8, 0}, 0, 1, 328 }
+};
+
+static const x86_insn_info fldstpt_insn[] = {
+ { SUF_Z, 0, CPU_FPU, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0, 1, {0xDB, 0, 0}, 0, 1, 619 }
+};
+
+static const x86_insn_info fildstp_insn[] = {
+ { SUF_S|SUF_Z, 0, CPU_FPU, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0, 1, {0xDF, 0, 0}, 0, 1, 653 },
+ { SUF_L|SUF_Z, 0, CPU_FPU, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0, 1, {0xDB, 0, 0}, 0, 1, 654 },
+ { SUF_Q|SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Gap, MOD_Op0Add, MOD_SpAdd}, 0, 0, 0, 1, {0xDD, 0, 0}, 0, 1, 212 },
+ { GAS_ONLY|SUF_Z, 0, CPU_FPU, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0, 1, {0xDF, 0, 0}, 0, 1, 34 }
+};
+
+static const x86_insn_info fbldstp_insn[] = {
+ { SUF_Z, 0, CPU_FPU, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0, 1, {0xDF, 0, 0}, 0, 1, 619 }
+};
+
+static const x86_insn_info fst_insn[] = {
+ { SUF_S|SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xD9, 0, 0}, 2, 1, 654 },
+ { SUF_L|SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xDD, 0, 0}, 2, 1, 212 },
+ { SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0xDD, 0xD0, 0}, 0, 1, 328 }
+};
+
+static const x86_insn_info fxch_insn[] = {
+ { SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0xD9, 0xC8, 0}, 0, 1, 328 },
+ { SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0xD9, 0xC8, 0}, 0, 2, 327 },
+ { SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0xD9, 0xC8, 0}, 0, 2, 329 },
+ { SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0xD9, 0xC9, 0}, 0, 0, 0 }
+};
+
+static const x86_insn_info fcom_insn[] = {
+ { SUF_S|SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 0, 0, 0, 1, {0xD8, 0, 0}, 0, 1, 654 },
+ { SUF_L|SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 0, 0, 0, 1, {0xDC, 0, 0}, 0, 1, 212 },
+ { SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0xD8, 0x00, 0}, 0, 1, 328 },
+ { GAS_ONLY|SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Gap, MOD_SpAdd, 0}, 0, 0, 0, 1, {0xD8, 0, 0}, 0, 1, 58 },
+ { GAS_ONLY|SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0xD8, 0x01, 0}, 0, 0, 0 },
+ { GAS_ILLEGAL|SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0xD8, 0x00, 0}, 0, 2, 327 }
+};
+
+static const x86_insn_info fcom2_insn[] = {
+ { SUF_Z, 0, CPU_286, CPU_FPU, 0, {MOD_Op0Add, MOD_Op1Add, 0}, 0, 0, 0, 2, {0x00, 0x00, 0}, 0, 1, 328 },
+ { SUF_Z, 0, CPU_286, CPU_FPU, 0, {MOD_Op0Add, MOD_Op1Add, 0}, 0, 0, 0, 2, {0x00, 0x00, 0}, 0, 2, 327 }
+};
+
+static const x86_insn_info farith_insn[] = {
+ { SUF_S|SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Gap, MOD_Gap, MOD_SpAdd}, 0, 0, 0, 1, {0xD8, 0, 0}, 0, 1, 654 },
+ { SUF_L|SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Gap, MOD_Gap, MOD_SpAdd}, 0, 0, 0, 1, {0xDC, 0, 0}, 0, 1, 212 },
+ { SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Gap, MOD_Op1Add, 0}, 0, 0, 0, 2, {0xD8, 0x00, 0}, 0, 1, 328 },
+ { SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Gap, MOD_Op1Add, 0}, 0, 0, 0, 2, {0xD8, 0x00, 0}, 0, 2, 327 },
+ { SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0xDC, 0x00, 0}, 0, 1, 696 },
+ { GAS_ILLEGAL|SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0xDC, 0x00, 0}, 0, 2, 329 },
+ { GAS_ONLY|SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Gap, MOD_Op1Add, 0}, 0, 0, 0, 2, {0xDC, 0x00, 0}, 0, 2, 329 }
+};
+
+static const x86_insn_info farithp_insn[] = {
+ { SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0xDE, 0x01, 0}, 0, 0, 0 },
+ { SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0xDE, 0x00, 0}, 0, 1, 328 },
+ { SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0xDE, 0x00, 0}, 0, 2, 329 }
+};
+
+static const x86_insn_info fiarith_insn[] = {
+ { SUF_S|SUF_Z, 0, CPU_FPU, 0, 0, {MOD_SpAdd, MOD_Op0Add, 0}, 0, 0, 0, 1, {0x04, 0, 0}, 0, 1, 653 },
+ { SUF_L|SUF_Z, 0, CPU_FPU, 0, 0, {MOD_SpAdd, MOD_Op0Add, 0}, 0, 0, 0, 1, {0x00, 0, 0}, 0, 1, 654 }
+};
+
+static const x86_insn_info fldnstcw_insn[] = {
+ { SUF_W|SUF_Z, 0, CPU_FPU, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0, 1, {0xD9, 0, 0}, 0, 1, 34 }
+};
+
+static const x86_insn_info fstcw_insn[] = {
+ { SUF_W|SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x9B, 0xD9, 0}, 7, 1, 34 }
+};
+
+static const x86_insn_info fnstsw_insn[] = {
+ { SUF_W|SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 1, {0xDD, 0, 0}, 7, 1, 34 },
+ { SUF_W|SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0xDF, 0xE0, 0}, 0, 1, 343 }
+};
+
+static const x86_insn_info fstsw_insn[] = {
+ { SUF_W|SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x9B, 0xDD, 0}, 7, 1, 34 },
+ { SUF_W|SUF_Z, 0, CPU_FPU, 0, 0, {0, 0, 0}, 0, 0, 0, 3, {0x9B, 0xDF, 0xE0}, 0, 1, 343 }
+};
+
+static const x86_insn_info ffree_insn[] = {
+ { SUF_Z, 0, CPU_FPU, 0, 0, {MOD_Op0Add, 0, 0}, 0, 0, 0, 2, {0x00, 0xC0, 0}, 0, 1, 328 }
+};
+
+static const x86_insn_info bswap_insn[] = {
+ { SUF_L|SUF_Z, 0, CPU_486, 0, 0, {0, 0, 0}, 32, 0, 0, 2, {0x0F, 0xC8, 0}, 0, 1, 697 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 2, {0x0F, 0xC8, 0}, 0, 1, 698 }
+};
+
+static const x86_insn_info cmpxchgxadd_insn[] = {
+ { SUF_B|SUF_Z, 0, CPU_486, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 323 },
+ { SUF_W|SUF_Z, 0, CPU_486, 0, 0, {MOD_Op1Add, 0, 0}, 16, 0, 0, 2, {0x0F, 0x01, 0}, 0, 2, 260 },
+ { SUF_L|SUF_Z, 0, CPU_486, 0, 0, {MOD_Op1Add, 0, 0}, 32, 0, 0, 2, {0x0F, 0x01, 0}, 0, 2, 266 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_486, 0, 0, {MOD_Op1Add, 0, 0}, 64, 0, 0, 2, {0x0F, 0x01, 0}, 0, 2, 272 }
+};
+
+static const x86_insn_info cmpxchg8b_insn[] = {
+ { SUF_Q|SUF_Z, 0, CPU_586, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0xC7, 0}, 1, 1, 6 }
+};
+
+static const x86_insn_info cmovcc_insn[] = {
+ { SUF_W|SUF_Z, 0, CPU_686, 0, 0, {MOD_Op1Add, 0, 0}, 16, 0, 0, 2, {0x0F, 0x40, 0}, 0, 2, 98 },
+ { SUF_L|SUF_Z, 0, CPU_686, 0, 0, {MOD_Op1Add, 0, 0}, 32, 0, 0, 2, {0x0F, 0x40, 0}, 0, 2, 101 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_686, 0, 0, {MOD_Op1Add, 0, 0}, 64, 0, 0, 2, {0x0F, 0x40, 0}, 0, 2, 104 }
+};
+
+static const x86_insn_info fcmovcc_insn[] = {
+ { SUF_Z, 0, CPU_686, CPU_FPU, 0, {MOD_Op0Add, MOD_Op1Add, 0}, 0, 0, 0, 2, {0x00, 0x00, 0}, 0, 2, 327 }
+};
+
+static const x86_insn_info movnti_insn[] = {
+ { SUF_L|SUF_Z, 0, CPU_P4, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0xC3, 0}, 0, 2, 337 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_P4, 0, 0, {0, 0, 0}, 64, 0, 0, 2, {0x0F, 0xC3, 0}, 0, 2, 339 }
+};
+
+static const x86_insn_info clflush_insn[] = {
+ { SUF_Z, 0, CPU_P3, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0xAE, 0}, 7, 1, 50 }
+};
+
+static const x86_insn_info movd_insn[] = {
+ { SUF_Z, 0, CPU_386, CPU_MMX, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x6E, 0}, 0, 2, 293 },
+ { SUF_Z, ONLY_64, CPU_MMX, 0, 0, {0, 0, 0}, 64, 0, 0, 2, {0x0F, 0x6E, 0}, 0, 2, 295 },
+ { SUF_Z, 0, CPU_386, CPU_MMX, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x7E, 0}, 0, 2, 294 },
+ { SUF_Z, ONLY_64, CPU_MMX, 0, 0, {0, 0, 0}, 64, 0, 0, 2, {0x0F, 0x7E, 0}, 0, 2, 297 },
+ { SUF_Z, 0, CPU_386, CPU_SSE2, 0, {0, 0, 0}, 0, 0, 0x66, 2, {0x0F, 0x6E, 0}, 0, 2, 299 },
+ { SUF_Z, ONLY_64, CPU_SSE2, 0, 0, {0, 0, 0}, 64, 0, 0x66, 2, {0x0F, 0x6E, 0}, 0, 2, 301 },
+ { SUF_Z, 0, CPU_386, CPU_SSE2, 0, {0, 0, 0}, 0, 0, 0x66, 2, {0x0F, 0x7E, 0}, 0, 2, 188 },
+ { SUF_Z, ONLY_64, CPU_SSE2, 0, 0, {0, 0, 0}, 64, 0, 0x66, 2, {0x0F, 0x7E, 0}, 0, 2, 182 }
+};
+
+static const x86_insn_info movq_insn[] = {
+ { GAS_ILLEGAL|SUF_Z, 0, CPU_MMX, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x6F, 0}, 0, 2, 140 },
+ { GAS_ILLEGAL|SUF_Z, ONLY_64, CPU_MMX, 0, 0, {0, 0, 0}, 64, 0, 0, 2, {0x0F, 0x6E, 0}, 0, 2, 295 },
+ { GAS_ILLEGAL|SUF_Z, 0, CPU_MMX, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x7F, 0}, 0, 2, 331 },
+ { GAS_ILLEGAL|SUF_Z, ONLY_64, CPU_MMX, 0, 0, {0, 0, 0}, 64, 0, 0, 2, {0x0F, 0x7E, 0}, 0, 2, 297 },
+ { GAS_ILLEGAL|SUF_Z, 0, CPU_SSE2, 0, 0, {0, 0, 0}, 0, 0, 0xF3, 2, {0x0F, 0x7E, 0}, 0, 2, 64 },
+ { GAS_ILLEGAL|SUF_Z, 0, CPU_SSE2, 0, 0, {0, 0, 0}, 0, 0, 0xF3, 2, {0x0F, 0x7E, 0}, 0, 2, 333 },
+ { GAS_ILLEGAL|SUF_Z, ONLY_64, CPU_SSE2, 0, 0, {0, 0, 0}, 64, 0, 0x66, 2, {0x0F, 0x6E, 0}, 0, 2, 301 },
+ { GAS_ILLEGAL|SUF_Z, 0, CPU_SSE2, 0, 0, {0, 0, 0}, 0, 0, 0x66, 2, {0x0F, 0xD6, 0}, 0, 2, 335 },
+ { GAS_ILLEGAL|SUF_Z, ONLY_64, CPU_SSE2, 0, 0, {0, 0, 0}, 64, 0, 0x66, 2, {0x0F, 0x7E, 0}, 0, 2, 182 }
+};
+
+static const x86_insn_info mmxsse2_insn[] = {
+ { SUF_Z, 0, CPU_MMX, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 140 },
+ { SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0x66, 2, {0x0F, 0x00, 0}, 0, 2, 155 }
+};
+
+static const x86_insn_info pshift_insn[] = {
+ { SUF_Z, 0, CPU_MMX, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 140 },
+ { SUF_Z, 0, CPU_MMX, 0, 0, {MOD_Gap, MOD_Op1Add, MOD_SpAdd}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 162 },
+ { SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0x66, 2, {0x0F, 0x00, 0}, 0, 2, 155 },
+ { SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_Gap, MOD_Op1Add, MOD_SpAdd}, 0, 0, 0x66, 2, {0x0F, 0x00, 0}, 0, 2, 2 }
+};
+
+static const x86_insn_info vpshift_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0xC1, 2, {0x0F, 0x00, 0}, 0, 2, 158 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Gap, MOD_Op1Add, MOD_SpAdd}, 0, 0, 0xC1, 2, {0x0F, 0x00, 0}, 0, 2, 511 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0xC1, 2, {0x0F, 0x00, 0}, 0, 3, 12 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Gap, MOD_Op1Add, MOD_SpAdd}, 0, 0, 0xC1, 2, {0x0F, 0x00, 0}, 0, 3, 1 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0xC5, 2, {0x0F, 0x00, 0}, 0, 2, 639 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Gap, MOD_Op1Add, MOD_SpAdd}, 0, 0, 0xC5, 2, {0x0F, 0x00, 0}, 0, 2, 513 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0xC5, 2, {0x0F, 0x00, 0}, 0, 3, 8 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Gap, MOD_Op1Add, MOD_SpAdd}, 0, 0, 0xC5, 2, {0x0F, 0x00, 0}, 0, 3, 200 }
+};
+
+static const x86_insn_info xmm_xmm128_256_insn[] = {
+ { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 158 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 3, 12 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC4, 2, {0x0F, 0x00, 0}, 0, 2, 197 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC4, 2, {0x0F, 0x00, 0}, 0, 3, 16 }
+};
+
+static const x86_insn_info xmm_xmm128_256avx2_insn[] = {
+ { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 158 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 3, 12 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC4, 2, {0x0F, 0x00, 0}, 0, 2, 197 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC4, 2, {0x0F, 0x00, 0}, 0, 3, 16 }
+};
+
+static const x86_insn_info xmm_xmm128_insn[] = {
+ { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 158 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 3, 12 }
+};
+
+static const x86_insn_info cvt_rx_xmm32_insn[] = {
+ { SUF_L|SUF_Z, 0, CPU_386, CPU_SSE, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 164 },
+ { SUF_L|SUF_Z, 0, CPU_386, CPU_SSE, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 359 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 64, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 170 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 64, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 361 }
+};
+
+static const x86_insn_info cvt_mm_xmm64_insn[] = {
+ { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 315 },
+ { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 317 }
+};
+
+static const x86_insn_info cvt_xmm_mm_ps_insn[] = {
+ { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 333 }
+};
+
+static const x86_insn_info cvt_xmm_rmx_insn[] = {
+ { SUF_L|SUF_Z, 0, CPU_386, CPU_SSE, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 649 },
+ { SUF_L|SUF_Z, NOT_64, CPU_386, CPU_SSE, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 239 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 64, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 651 },
+ { SUF_L|SUF_Z, ONLY_AVX|NOT_64, CPU_386, CPU_AVX, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 3, 88 },
+ { SUF_L|SUF_Z, ONLY_AVX, CPU_386, CPU_AVX, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 3, 281 },
+ { SUF_Q|SUF_Z, ONLY_64|ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 64, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 3, 284 }
+};
+
+static const x86_insn_info xmm_xmm32_insn[] = {
+ { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 92 },
+ { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 146 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 3, 0 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 3, 56 }
+};
+
+static const x86_insn_info ssecmp_128_insn[] = {
+ { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_Imm8, MOD_PreAdd, MOD_SetVEX}, 0, 0, 0, 2, {0x0F, 0xC2, 0}, 0, 2, 158 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Imm8, MOD_PreAdd, 0}, 0, 0, 0xC0, 2, {0x0F, 0xC2, 0}, 0, 3, 12 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Imm8, MOD_PreAdd, 0}, 0, 0, 0xC4, 2, {0x0F, 0xC2, 0}, 0, 3, 16 }
+};
+
+static const x86_insn_info ssecmp_32_insn[] = {
+ { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_Imm8, MOD_PreAdd, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0xC2, 0}, 0, 2, 92 },
+ { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_Imm8, MOD_PreAdd, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0xC2, 0}, 0, 2, 146 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Imm8, MOD_PreAdd, 0}, 0, 0, 0xC0, 2, {0x0F, 0xC2, 0}, 0, 3, 0 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Imm8, MOD_PreAdd, 0}, 0, 0, 0xC0, 2, {0x0F, 0xC2, 0}, 0, 3, 56 }
+};
+
+static const x86_insn_info xmm_xmm128_imm_insn[] = {
+ { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 3, 185 }
+};
+
+static const x86_insn_info xmm_xmm128_imm_256avx2_insn[] = {
+ { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 3, 185 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC4, 2, {0x0F, 0x00, 0}, 0, 3, 191 }
+};
+
+static const x86_insn_info xmm_xmm128_imm_256_insn[] = {
+ { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 3, 158 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 4, 60 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC4, 2, {0x0F, 0x00, 0}, 0, 4, 20 }
+};
+
+static const x86_insn_info xmm_xmm32_imm_insn[] = {
+ { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 3, 92 },
+ { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 3, 146 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 4, 0 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 4, 56 }
+};
+
+static const x86_insn_info ldstmxcsr_insn[] = {
+ { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_SpAdd, MOD_SetVEX, 0}, 0, 0, 0, 2, {0x0F, 0xAE, 0}, 0, 1, 58 }
+};
+
+static const x86_insn_info maskmovq_insn[] = {
+ { SUF_Z, 0, CPU_MMX, CPU_P3, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0xF7, 0}, 0, 2, 641 }
+};
+
+static const x86_insn_info movau_insn[] = {
+ { SUF_Z, NOT_AVX, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 155 },
+ { SUF_Z, NOT_AVX, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_Op1Add}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 485 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 2, 155 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_Op1Add}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 2, 485 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC4, 2, {0x0F, 0x00, 0}, 0, 2, 191 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_Op1Add}, 0, 0, 0xC4, 2, {0x0F, 0x00, 0}, 0, 2, 487 }
+};
+
+static const x86_insn_info movhllhps_insn[] = {
+ { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_Op1Add, MOD_SetVEX, 0}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 92 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 3, 0 }
+};
+
+static const x86_insn_info movhlp_insn[] = {
+ { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 95 },
+ { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x01, 0}, 0, 2, 47 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 3, 4 }
+};
+
+static const x86_insn_info movmsk_insn[] = {
+ { SUF_L|SUF_Z, 0, CPU_386, CPU_SSE, 0, {MOD_PreAdd, MOD_SetVEX, 0}, 0, 0, 0x00, 2, {0x0F, 0x50, 0}, 0, 2, 164 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_SetVEX, 0}, 64, 0, 0x00, 2, {0x0F, 0x50, 0}, 0, 2, 170 },
+ { SUF_L|SUF_Z, ONLY_AVX, CPU_386, CPU_AVX, 0, {MOD_PreAdd, 0, 0}, 0, 0, 0xC4, 2, {0x0F, 0x50, 0}, 0, 2, 319 },
+ { SUF_Q|SUF_Z, ONLY_64|ONLY_AVX, CPU_SSE, 0, 0, {MOD_PreAdd, 0, 0}, 64, 0, 0xC4, 2, {0x0F, 0x50, 0}, 0, 2, 321 }
+};
+
+static const x86_insn_info movnt_insn[] = {
+ { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 599 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC4, 2, {0x0F, 0x00, 0}, 0, 2, 601 }
+};
+
+static const x86_insn_info movntq_insn[] = {
+ { SUF_Z, 0, CPU_SSE, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0xE7, 0}, 0, 2, 363 }
+};
+
+static const x86_insn_info movss_insn[] = {
+ { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0xF3, 2, {0x0F, 0x10, 0}, 0, 2, 92 },
+ { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0xF3, 2, {0x0F, 0x10, 0}, 0, 2, 336 },
+ { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0xF3, 2, {0x0F, 0x11, 0}, 0, 2, 450 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 0, 0, 0xC2, 2, {0x0F, 0x10, 0}, 0, 3, 0 }
+};
+
+static const x86_insn_info pextrw_insn[] = {
+ { SUF_L|SUF_Z, NOT_AVX, CPU_MMX, CPU_P3, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0xC5, 0}, 0, 3, 161 },
+ { SUF_L|SUF_Z, 0, CPU_386, CPU_SSE2, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0x66, 2, {0x0F, 0xC5, 0}, 0, 3, 164 },
+ { SUF_Q|SUF_Z, ONLY_64|NOT_AVX, CPU_MMX, CPU_P3, 0, {0, 0, 0}, 64, 0, 0, 2, {0x0F, 0xC5, 0}, 0, 3, 167 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_SSE2, 0, 0, {MOD_SetVEX, 0, 0}, 64, 0, 0x66, 2, {0x0F, 0xC5, 0}, 0, 3, 170 },
+ { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x15}, 0, 3, 173 },
+ { SUF_Z, 0, CPU_386, CPU_SSE41, 0, {MOD_SetVEX, 0, 0}, 32, 0, 0x66, 3, {0x0F, 0x3A, 0x15}, 0, 3, 176 },
+ { SUF_Z, ONLY_64, CPU_SSE41, 0, 0, {MOD_SetVEX, 0, 0}, 64, 0, 0x66, 3, {0x0F, 0x3A, 0x15}, 0, 3, 179 }
+};
+
+static const x86_insn_info pinsrw_insn[] = {
+ { SUF_L|SUF_Z, NOT_AVX, CPU_MMX, CPU_P3, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0xC4, 0}, 0, 3, 116 },
+ { SUF_Q|SUF_Z, ONLY_64|NOT_AVX, CPU_MMX, CPU_P3, 0, {0, 0, 0}, 64, 64, 0, 2, {0x0F, 0xC4, 0}, 0, 3, 119 },
+ { SUF_L|SUF_Z, NOT_AVX, CPU_MMX, CPU_P3, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0xC4, 0}, 0, 3, 122 },
+ { SUF_L|SUF_Z, 0, CPU_386, CPU_SSE2, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0x66, 2, {0x0F, 0xC4, 0}, 0, 3, 125 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_SSE2, 0, 0, {MOD_SetVEX, 0, 0}, 64, 64, 0x66, 2, {0x0F, 0xC4, 0}, 0, 3, 128 },
+ { SUF_L|SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0x66, 2, {0x0F, 0xC4, 0}, 0, 3, 131 },
+ { SUF_L|SUF_Z, ONLY_AVX, CPU_386, CPU_AVX, 0, {0, 0, 0}, 0, 0, 0xC1, 2, {0x0F, 0xC4, 0}, 0, 4, 24 },
+ { SUF_Q|SUF_Z, ONLY_64|ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 64, 64, 0xC1, 2, {0x0F, 0xC4, 0}, 0, 4, 28 },
+ { SUF_L|SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 0, 0, 0xC1, 2, {0x0F, 0xC4, 0}, 0, 4, 32 }
+};
+
+static const x86_insn_info pmovmskb_insn[] = {
+ { SUF_L|SUF_Z, NOT_AVX, CPU_MMX, CPU_P3, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0xD7, 0}, 0, 2, 161 },
+ { SUF_L|SUF_Z, 0, CPU_386, CPU_SSE2, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0x66, 2, {0x0F, 0xD7, 0}, 0, 2, 164 },
+ { SUF_L|SUF_Z, ONLY_AVX, CPU_386, CPU_AVX2, 0, {0, 0, 0}, 0, 0, 0xC5, 2, {0x0F, 0xD7, 0}, 0, 2, 319 },
+ { SUF_Q|SUF_Z, ONLY_64|NOT_AVX, CPU_MMX, CPU_P3, 0, {0, 0, 0}, 64, 64, 0, 2, {0x0F, 0xD7, 0}, 0, 2, 167 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_SSE2, 0, 0, {MOD_SetVEX, 0, 0}, 64, 64, 0x66, 2, {0x0F, 0xD7, 0}, 0, 2, 170 },
+ { SUF_Q|SUF_Z, ONLY_64|ONLY_AVX, CPU_SSE2, 0, 0, {0, 0, 0}, 64, 64, 0xC5, 2, {0x0F, 0xD7, 0}, 0, 2, 321 }
+};
+
+static const x86_insn_info pshufw_insn[] = {
+ { SUF_Z, 0, CPU_MMX, CPU_P3, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x70, 0}, 0, 3, 140 }
+};
+
+static const x86_insn_info xmm_xmm64_insn[] = {
+ { SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 92 },
+ { SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 95 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 3, 0 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 3, 4 }
+};
+
+static const x86_insn_info ssecmp_64_insn[] = {
+ { SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_Imm8, MOD_PreAdd, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0xC2, 0}, 0, 2, 92 },
+ { SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_Imm8, MOD_PreAdd, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0xC2, 0}, 0, 2, 95 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Imm8, MOD_PreAdd, 0}, 0, 0, 0xC0, 2, {0x0F, 0xC2, 0}, 0, 3, 0 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Imm8, MOD_PreAdd, 0}, 0, 0, 0xC0, 2, {0x0F, 0xC2, 0}, 0, 3, 4 }
+};
+
+static const x86_insn_info cvt_rx_xmm64_insn[] = {
+ { SUF_L|SUF_Z, 0, CPU_386, CPU_SSE2, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 164 },
+ { SUF_L|SUF_Z, 0, CPU_386, CPU_SSE2, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 338 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_SSE2, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 64, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 170 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_SSE2, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_SetVEX}, 64, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 469 }
+};
+
+static const x86_insn_info cvt_mm_xmm_insn[] = {
+ { SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 615 }
+};
+
+static const x86_insn_info cvt_xmm_mm_ss_insn[] = {
+ { SUF_Z, 0, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 2, 333 }
+};
+
+static const x86_insn_info eptvpid_insn[] = {
+ { SUF_L|SUF_Z, NOT_64, CPU_386, CPU_EPTVPID, 0, {MOD_Op2Add, 0, 0}, 32, 0, 0x66, 3, {0x0F, 0x38, 0x80}, 0, 2, 611 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_EPTVPID, 0, 0, {MOD_Op2Add, 0, 0}, 64, 0, 0x66, 3, {0x0F, 0x38, 0x80}, 0, 2, 613 }
+};
+
+static const x86_insn_info vmxmemrd_insn[] = {
+ { SUF_L|SUF_Z, NOT_64, CPU_P4, 0, 0, {0, 0, 0}, 32, 0, 0, 2, {0x0F, 0x78, 0}, 0, 2, 266 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_P4, 0, 0, {0, 0, 0}, 64, 64, 0, 2, {0x0F, 0x78, 0}, 0, 2, 272 }
+};
+
+static const x86_insn_info vmxmemwr_insn[] = {
+ { SUF_L|SUF_Z, NOT_64, CPU_P4, 0, 0, {0, 0, 0}, 32, 0, 0, 2, {0x0F, 0x79, 0}, 0, 2, 101 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_P4, 0, 0, {0, 0, 0}, 64, 64, 0, 2, {0x0F, 0x79, 0}, 0, 2, 104 }
+};
+
+static const x86_insn_info vmxtwobytemem_insn[] = {
+ { SUF_Z, 0, CPU_P4, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0, 2, {0x0F, 0xC7, 0}, 0, 1, 6 }
+};
+
+static const x86_insn_info vmxthreebytemem_insn[] = {
+ { SUF_Z, 0, CPU_P4, 0, 0, {MOD_PreAdd, 0, 0}, 0, 0, 0x00, 2, {0x0F, 0xC7, 0}, 6, 1, 6 }
+};
+
+static const x86_insn_info maskmovdqu_insn[] = {
+ { SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0x66, 2, {0x0F, 0xF7, 0}, 0, 2, 64 }
+};
+
+static const x86_insn_info movdq2q_insn[] = {
+ { SUF_Z, 0, CPU_SSE2, 0, 0, {0, 0, 0}, 0, 0, 0xF2, 2, {0x0F, 0xD6, 0}, 0, 2, 315 }
+};
+
+static const x86_insn_info movq2dq_insn[] = {
+ { SUF_Z, 0, CPU_SSE2, 0, 0, {0, 0, 0}, 0, 0, 0xF3, 2, {0x0F, 0xD6, 0}, 0, 2, 445 }
+};
+
+static const x86_insn_info pslrldq_insn[] = {
+ { SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_SpAdd, MOD_SetVEX, 0}, 0, 0, 0x66, 2, {0x0F, 0x73, 0}, 0, 2, 511 },
+ { SUF_Z, 0, CPU_SSE2, 0, 0, {MOD_SpAdd, MOD_SetVEX, 0}, 0, 0, 0x66, 2, {0x0F, 0x73, 0}, 0, 3, 1 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0xC5, 2, {0x0F, 0x73, 0}, 0, 2, 513 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_SpAdd, 0, 0}, 0, 0, 0xC5, 2, {0x0F, 0x73, 0}, 0, 3, 200 }
+};
+
+static const x86_insn_info lddqu_insn[] = {
+ { SUF_Z, 0, CPU_SSE3, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0xF2, 2, {0x0F, 0xF0, 0}, 0, 2, 595 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 0, 0, 0xC7, 2, {0x0F, 0xF0, 0}, 0, 2, 597 }
+};
+
+static const x86_insn_info ssse3_insn[] = {
+ { SUF_Z, NOT_AVX, CPU_SSSE3, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0, 3, {0x0F, 0x38, 0x00}, 0, 2, 140 },
+ { SUF_Z, 0, CPU_SSSE3, 0, 0, {MOD_Op2Add, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x38, 0x00}, 0, 2, 158 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x00}, 0, 3, 12 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 2, 197 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 3, 16 }
+};
+
+static const x86_insn_info ssse3imm_insn[] = {
+ { SUF_Z, 0, CPU_SSSE3, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0, 3, {0x0F, 0x3A, 0x00}, 0, 3, 140 },
+ { SUF_Z, 0, CPU_SSSE3, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x00}, 0, 3, 185 }
+};
+
+static const x86_insn_info sse4_insn[] = {
+ { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_Op2Add, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x38, 0x00}, 0, 2, 155 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 2, 191 }
+};
+
+static const x86_insn_info sse4imm_256_insn[] = {
+ { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_Op2Add, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x00}, 0, 3, 158 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 4, 60 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x3A, 0x00}, 0, 3, 197 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x3A, 0x00}, 0, 4, 20 }
+};
+
+static const x86_insn_info sse4imm_256avx2_insn[] = {
+ { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_Op2Add, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x00}, 0, 3, 158 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 4, 60 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x3A, 0x00}, 0, 3, 197 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x3A, 0x00}, 0, 4, 20 }
+};
+
+static const x86_insn_info sse4imm_insn[] = {
+ { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_Op2Add, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x00}, 0, 3, 158 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 4, 60 }
+};
+
+static const x86_insn_info sse4m32imm_insn[] = {
+ { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_Op2Add, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x00}, 0, 3, 92 },
+ { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_Op2Add, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x00}, 0, 3, 146 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 4, 0 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 4, 56 }
+};
+
+static const x86_insn_info sse4m64imm_insn[] = {
+ { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_Op2Add, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x00}, 0, 3, 92 },
+ { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_Op2Add, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x00}, 0, 3, 95 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 4, 0 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 4, 4 }
+};
+
+static const x86_insn_info sse4xmm0_insn[] = {
+ { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0x66, 3, {0x0F, 0x38, 0x00}, 0, 2, 155 },
+ { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0x66, 3, {0x0F, 0x38, 0x00}, 0, 3, 242 }
+};
+
+static const x86_insn_info avx_sse4xmm0_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 4, 12 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x3A, 0x00}, 0, 4, 16 }
+};
+
+static const x86_insn_info avx2_sse4xmm0_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 4, 12 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x3A, 0x00}, 0, 4, 16 }
+};
+
+static const x86_insn_info crc32_insn[] = {
+ { SUF_B|SUF_Z, 0, CPU_386, CPU_SSE42, 0, {0, 0, 0}, 0, 0, 0xF2, 3, {0x0F, 0x38, 0xF0}, 0, 2, 537 },
+ { SUF_W|SUF_Z, 0, CPU_386, CPU_SSE42, 0, {0, 0, 0}, 16, 0, 0xF2, 3, {0x0F, 0x38, 0xF1}, 0, 2, 539 },
+ { SUF_L|SUF_Z, 0, CPU_386, CPU_SSE42, 0, {0, 0, 0}, 32, 0, 0xF2, 3, {0x0F, 0x38, 0xF1}, 0, 2, 101 },
+ { SUF_B|SUF_Z, ONLY_64, CPU_SSE42, 0, 0, {0, 0, 0}, 64, 0, 0xF2, 3, {0x0F, 0x38, 0xF0}, 0, 2, 541 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_SSE42, 0, 0, {0, 0, 0}, 64, 0, 0xF2, 3, {0x0F, 0x38, 0xF1}, 0, 2, 104 }
+};
+
+static const x86_insn_info extractps_insn[] = {
+ { SUF_Z, 0, CPU_386, CPU_SSE41, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x17}, 0, 3, 188 },
+ { SUF_Z, ONLY_64, CPU_SSE41, 0, 0, {MOD_SetVEX, 0, 0}, 64, 0, 0x66, 3, {0x0F, 0x3A, 0x17}, 0, 3, 179 }
+};
+
+static const x86_insn_info insertps_insn[] = {
+ { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x21}, 0, 3, 146 },
+ { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x21}, 0, 3, 92 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x21}, 0, 4, 56 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x21}, 0, 4, 0 }
+};
+
+static const x86_insn_info movntdqa_insn[] = {
+ { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0x66, 3, {0x0F, 0x38, 0x2A}, 0, 2, 595 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x2A}, 0, 2, 597 }
+};
+
+static const x86_insn_info sse4pcmpstr_insn[] = {
+ { SUF_Z, 0, CPU_SSE42, 0, 0, {MOD_Op2Add, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x00}, 0, 3, 185 }
+};
+
+static const x86_insn_info pextrb_insn[] = {
+ { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x14}, 0, 3, 194 },
+ { SUF_Z, 0, CPU_386, CPU_SSE41, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x14}, 0, 3, 176 },
+ { SUF_Z, ONLY_64, CPU_SSE41, 0, 0, {MOD_SetVEX, 0, 0}, 64, 0, 0x66, 3, {0x0F, 0x3A, 0x14}, 0, 3, 179 }
+};
+
+static const x86_insn_info pextrd_insn[] = {
+ { SUF_Z, 0, CPU_386, CPU_SSE41, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x16}, 0, 3, 188 }
+};
+
+static const x86_insn_info pextrq_insn[] = {
+ { SUF_Z, ONLY_64, CPU_SSE41, 0, 0, {MOD_SetVEX, 0, 0}, 64, 0, 0x66, 3, {0x0F, 0x3A, 0x16}, 0, 3, 182 }
+};
+
+static const x86_insn_info pinsrb_insn[] = {
+ { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x20}, 0, 3, 143 },
+ { SUF_Z, 0, CPU_386, CPU_SSE41, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x20}, 0, 3, 125 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x20}, 0, 4, 48 },
+ { SUF_Z, ONLY_AVX, CPU_386, CPU_AVX, 0, {0, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x20}, 0, 4, 52 }
+};
+
+static const x86_insn_info pinsrd_insn[] = {
+ { SUF_Z, 0, CPU_386, CPU_SSE41, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x22}, 0, 3, 239 },
+ { SUF_Z, ONLY_AVX, CPU_386, CPU_AVX, 0, {0, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x22}, 0, 4, 88 }
+};
+
+static const x86_insn_info pinsrq_insn[] = {
+ { SUF_Z, ONLY_64, CPU_SSE41, 0, 0, {MOD_SetVEX, 0, 0}, 64, 0, 0x66, 3, {0x0F, 0x3A, 0x22}, 0, 3, 227 },
+ { SUF_Z, ONLY_64|ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 64, 0, 0xC1, 3, {0x0F, 0x3A, 0x22}, 0, 4, 84 }
+};
+
+static const x86_insn_info sse4m16_insn[] = {
+ { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_Op2Add, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x38, 0x00}, 0, 2, 447 },
+ { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_Op2Add, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x38, 0x00}, 0, 2, 64 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 2, 449 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 2, 208 }
+};
+
+static const x86_insn_info sse4m32_insn[] = {
+ { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_Op2Add, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x38, 0x00}, 0, 2, 336 },
+ { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_Op2Add, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x38, 0x00}, 0, 2, 64 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 2, 479 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 2, 208 }
+};
+
+static const x86_insn_info sse4m64_insn[] = {
+ { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_Op2Add, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x38, 0x00}, 0, 2, 451 },
+ { SUF_Z, 0, CPU_SSE41, 0, 0, {MOD_Op2Add, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x38, 0x00}, 0, 2, 64 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 2, 509 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 2, 208 }
+};
+
+static const x86_insn_info cnt_insn[] = {
+ { SUF_W|SUF_Z, 0, 0, 0, 0, {MOD_Op1Add, 0, 0}, 16, 0, 0xF3, 2, {0x0F, 0x00, 0}, 0, 2, 98 },
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_Op1Add, 0, 0}, 32, 0, 0xF3, 2, {0x0F, 0x00, 0}, 0, 2, 101 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_Op1Add, 0, 0}, 64, 0, 0xF3, 2, {0x0F, 0x00, 0}, 0, 2, 104 }
+};
+
+static const x86_insn_info vmovd_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_386, CPU_AVX, 0, {0, 0, 0}, 0, 0, 0xC1, 2, {0x0F, 0x6E, 0}, 0, 2, 299 },
+ { SUF_Z, ONLY_AVX, CPU_386, CPU_AVX, 0, {0, 0, 0}, 0, 0, 0xC1, 2, {0x0F, 0x7E, 0}, 0, 2, 188 }
+};
+
+static const x86_insn_info vmovq_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 0, 0, 0xC2, 2, {0x0F, 0x7E, 0}, 0, 2, 64 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 0, 0, 0xC2, 2, {0x0F, 0x7E, 0}, 0, 2, 451 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 0, 0, 0xC1, 2, {0x0F, 0xD6, 0}, 0, 2, 47 },
+ { SUF_Z, ONLY_64|ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 64, 0, 0xC1, 2, {0x0F, 0x6E, 0}, 0, 2, 301 },
+ { SUF_Z, ONLY_64|ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 64, 0, 0xC1, 2, {0x0F, 0x7E, 0}, 0, 2, 182 }
+};
+
+static const x86_insn_info avx_xmm_xmm128_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 2, 155 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC4, 2, {0x0F, 0x00, 0}, 0, 2, 191 }
+};
+
+static const x86_insn_info avx_sse4imm_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_SSE41, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 3, 185 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 3, 185 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x3A, 0x00}, 0, 3, 191 }
+};
+
+static const x86_insn_info vmovddup_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 2, 64 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 2, 451 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC4, 2, {0x0F, 0x00, 0}, 0, 2, 191 }
+};
+
+static const x86_insn_info avx_xmm_xmm64_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_SSE2, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 2, 64 },
+ { SUF_Z, ONLY_AVX, CPU_SSE2, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 2, 451 }
+};
+
+static const x86_insn_info avx_xmm_xmm32_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 2, 64 },
+ { SUF_Z, ONLY_AVX, CPU_SSE, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 2, 336 }
+};
+
+static const x86_insn_info avx_cvt_xmm64_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 2, 64 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 2, 451 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC4, 2, {0x0F, 0x00, 0}, 0, 2, 453 }
+};
+
+static const x86_insn_info avx_ssse3_2op_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x00}, 0, 2, 155 }
+};
+
+static const x86_insn_info avx2_ssse3_2op_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x00}, 0, 2, 155 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 2, 191 }
+};
+
+static const x86_insn_info avx_cvt_xmm128_x_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 2, 155 }
+};
+
+static const x86_insn_info avx_cvt_xmm128_y_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC4, 2, {0x0F, 0x00, 0}, 0, 2, 205 }
+};
+
+static const x86_insn_info avx_cvt_xmm128_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC0, 2, {0x0F, 0x00, 0}, 0, 2, 607 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_PreAdd, MOD_Op1Add, 0}, 0, 0, 0xC4, 2, {0x0F, 0x00, 0}, 0, 2, 609 }
+};
+
+static const x86_insn_info vbroadcastss_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x18}, 0, 2, 336 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x18}, 0, 2, 449 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x18}, 0, 2, 64 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x18}, 0, 2, 208 }
+};
+
+static const x86_insn_info vbroadcastsd_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x19}, 0, 2, 479 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x19}, 0, 2, 208 }
+};
+
+static const x86_insn_info vbroadcastif128_insn[] = {
+ { SUF_Z, ONLY_AVX, 0, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 2, 509 }
+};
+
+static const x86_insn_info vextractif128_insn[] = {
+ { SUF_Z, ONLY_AVX, 0, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x3A, 0x00}, 0, 3, 236 }
+};
+
+static const x86_insn_info vinsertif128_insn[] = {
+ { SUF_Z, ONLY_AVX, 0, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x3A, 0x00}, 0, 4, 8 }
+};
+
+static const x86_insn_info vzero_insn[] = {
+ { SUF_Z, 0, CPU_AVX, 0, 0, {MOD_SetVEX, 0, 0}, 0, 0, 0, 2, {0x0F, 0x77, 0}, 0, 0, 0 }
+};
+
+static const x86_insn_info vmaskmov_insn[] = {
+ { SUF_Z, ONLY_AVX, 0, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x00}, 0, 3, 12 },
+ { SUF_Z, ONLY_AVX, 0, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 3, 16 },
+ { SUF_Z, ONLY_AVX, 0, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x02}, 0, 3, 203 },
+ { SUF_Z, ONLY_AVX, 0, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x02}, 0, 3, 206 }
+};
+
+static const x86_insn_info vpermil_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x08}, 0, 3, 12 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x08}, 0, 3, 16 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 3, 185 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x3A, 0x00}, 0, 3, 191 }
+};
+
+static const x86_insn_info vperm2f128_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_AVX, 0, 0, {0, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x3A, 0x06}, 0, 4, 20 }
+};
+
+static const x86_insn_info vperm_var_avx2_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 3, 16 }
+};
+
+static const x86_insn_info vperm_imm_avx2_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xCD, 3, {0x0F, 0x3A, 0x00}, 0, 3, 191 }
+};
+
+static const x86_insn_info vperm2i128_avx2_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x3A, 0x46}, 0, 4, 20 }
+};
+
+static const x86_insn_info vpbroadcastb_avx2_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x78}, 0, 2, 543 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x78}, 0, 2, 545 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x78}, 0, 2, 635 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x78}, 0, 2, 637 }
+};
+
+static const x86_insn_info vpbroadcastw_avx2_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x79}, 0, 2, 543 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x79}, 0, 2, 545 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x79}, 0, 2, 547 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x79}, 0, 2, 549 }
+};
+
+static const x86_insn_info vpbroadcastd_avx2_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x58}, 0, 2, 543 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x58}, 0, 2, 545 },
+ { SUF_Z, ONLY_AVX, CPU_386, CPU_AVX2, 0, {0, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x58}, 0, 2, 299 },
+ { SUF_Z, ONLY_AVX, CPU_386, CPU_AVX2, 0, {0, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x58}, 0, 2, 643 }
+};
+
+static const x86_insn_info vpbroadcastq_avx2_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x59}, 0, 2, 543 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x59}, 0, 2, 545 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x59}, 0, 2, 333 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {0, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x59}, 0, 2, 621 }
+};
+
+static const x86_insn_info vpshiftv_vexw0_avx2_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x00}, 0, 3, 12 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 3, 16 }
+};
+
+static const x86_insn_info vpshiftv_vexw1_avx2_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC9, 3, {0x0F, 0x38, 0x00}, 0, 3, 12 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xCD, 3, {0x0F, 0x38, 0x00}, 0, 3, 16 }
+};
+
+static const x86_insn_info vmaskmov_vexw1_avx2_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC9, 3, {0x0F, 0x38, 0x00}, 0, 3, 12 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xCD, 3, {0x0F, 0x38, 0x00}, 0, 3, 16 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC9, 3, {0x0F, 0x38, 0x02}, 0, 3, 203 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xCD, 3, {0x0F, 0x38, 0x02}, 0, 3, 206 }
+};
+
+static const x86_insn_info vex_66_0F3A_imm8_avx2_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 4, 60 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x3A, 0x00}, 0, 4, 20 }
+};
+
+static const x86_insn_info gather_64x_64x_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC9, 3, {0x0F, 0x38, 0x00}, 0, 3, 221 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xCD, 3, {0x0F, 0x38, 0x00}, 0, 3, 224 }
+};
+
+static const x86_insn_info gather_64x_64y_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC9, 3, {0x0F, 0x38, 0x00}, 0, 3, 221 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xCD, 3, {0x0F, 0x38, 0x00}, 0, 3, 278 }
+};
+
+static const x86_insn_info gather_32x_32y_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x00}, 0, 3, 245 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 3, 251 }
+};
+
+static const x86_insn_info gather_32x_32y_128_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x00}, 0, 3, 245 },
+ { SUF_Z, ONLY_AVX, CPU_AVX2, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 3, 248 }
+};
+
+static const x86_insn_info tsx_xabort_insn[] = {
+ { SUF_Z, 0, CPU_TSX, 0, 0, {0, 0, 0}, 0, 0, 0, 2, {0xC6, 0xF8, 0}, 0, 1, 3 }
+};
+
+static const x86_insn_info tsx_xbegin_insn[] = {
+ { SUF_Z, 0, CPU_386, CPU_TSX, 0, {0, 0, 0}, 0, 0, 0, 2, {0xC7, 0xF8, 0}, 0, 1, 679 },
+ { SUF_Z, NOT_64, CPU_TSX, 0, 0, {0, 0, 0}, 16, 0, 0, 2, {0xC7, 0xF8, 0}, 0, 1, 678 }
+};
+
+static const x86_insn_info tsx_0x0F_0x01_insn[] = {
+ { SUF_Z, 0, CPU_TSX, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0, 3, {0x0F, 0x01, 0x00}, 0, 0, 0 }
+};
+
+static const x86_insn_info vfma_ps_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_FMA, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x00}, 0, 3, 12 },
+ { SUF_Z, ONLY_AVX, CPU_FMA, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x38, 0x00}, 0, 3, 16 }
+};
+
+static const x86_insn_info vfma_pd_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_FMA, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC9, 3, {0x0F, 0x38, 0x00}, 0, 3, 12 },
+ { SUF_Z, ONLY_AVX, CPU_FMA, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xCD, 3, {0x0F, 0x38, 0x00}, 0, 3, 16 }
+};
+
+static const x86_insn_info vfma_ss_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_FMA, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x00}, 0, 3, 0 },
+ { SUF_Z, ONLY_AVX, CPU_FMA, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x38, 0x00}, 0, 3, 56 }
+};
+
+static const x86_insn_info vfma_sd_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_FMA, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC9, 3, {0x0F, 0x38, 0x00}, 0, 3, 0 },
+ { SUF_Z, ONLY_AVX, CPU_FMA, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC9, 3, {0x0F, 0x38, 0x00}, 0, 3, 4 }
+};
+
+static const x86_insn_info aes_insn[] = {
+ { SUF_Z, 0, CPU_AES, 0, 0, {MOD_Op1Add, MOD_Op2Add, MOD_SetVEX}, 0, 0, 0x66, 3, {0x0F, 0x00, 0x00}, 0, 2, 158 },
+ { SUF_Z, ONLY_AVX, CPU_AES, CPU_AVX, 0, {MOD_Op1Add, MOD_Op2Add, 0}, 0, 0, 0xC1, 3, {0x0F, 0x00, 0x00}, 0, 3, 12 }
+};
+
+static const x86_insn_info aesimc_insn[] = {
+ { SUF_Z, 0, CPU_AES, 0, 0, {MOD_Op1Add, MOD_Op2Add, MOD_SetVEX}, 0, 0, 0x66, 3, {0x0F, 0x00, 0x00}, 0, 2, 155 }
+};
+
+static const x86_insn_info aes_imm_insn[] = {
+ { SUF_Z, 0, CPU_AES, 0, 0, {MOD_Op1Add, MOD_Op2Add, MOD_SetVEX}, 0, 0, 0x66, 3, {0x0F, 0x00, 0x00}, 0, 3, 185 }
+};
+
+static const x86_insn_info pclmulqdq_insn[] = {
+ { SUF_Z, 0, CPU_CLMUL, 0, 0, {MOD_Op1Add, MOD_Op2Add, MOD_SetVEX}, 0, 0, 0x66, 3, {0x0F, 0x00, 0x00}, 0, 3, 158 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, CPU_CLMUL, 0, {MOD_Op1Add, MOD_Op2Add, 0}, 0, 0, 0xC1, 3, {0x0F, 0x00, 0x00}, 0, 4, 60 }
+};
+
+static const x86_insn_info pclmulqdq_fixed_insn[] = {
+ { SUF_Z, 0, CPU_CLMUL, 0, 0, {MOD_Imm8, MOD_SetVEX, 0}, 0, 0, 0x66, 3, {0x0F, 0x3A, 0x44}, 0, 2, 158 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, CPU_CLMUL, 0, {MOD_Imm8, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x44}, 0, 3, 12 }
+};
+
+static const x86_insn_info rdrand_insn[] = {
+ { SUF_Z, 0, 0, 0, 0, {MOD_SpAdd, 0, 0}, 16, 0, 0, 2, {0x0F, 0xC7, 0}, 0, 1, 395 },
+ { SUF_Z, 0, CPU_386, 0, 0, {MOD_SpAdd, 0, 0}, 32, 0, 0, 2, {0x0F, 0xC7, 0}, 0, 1, 26 },
+ { SUF_Z, ONLY_64, 0, 0, 0, {MOD_SpAdd, 0, 0}, 64, 0, 0, 2, {0x0F, 0xC7, 0}, 0, 1, 30 }
+};
+
+static const x86_insn_info fs_gs_base_insn[] = {
+ { SUF_Z, ONLY_64, CPU_FSGSBASE, 0, 0, {MOD_SpAdd, 0, 0}, 32, 0, 0xF3, 2, {0x0F, 0xAE, 0}, 0, 1, 26 },
+ { SUF_Z, ONLY_64, CPU_FSGSBASE, 0, 0, {MOD_SpAdd, 0, 0}, 64, 0, 0xF3, 2, {0x0F, 0xAE, 0}, 0, 1, 30 }
+};
+
+static const x86_insn_info avx_cvtps2ph_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_AVX, CPU_F16C, 0, {MOD_PreAdd, MOD_Op2Add, 0}, 0, 0, 0xC0, 3, {0x0F, 0x3A, 0x00}, 0, 3, 209 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, CPU_F16C, 0, {MOD_PreAdd, MOD_Op2Add, 0}, 0, 0, 0xC0, 3, {0x0F, 0x3A, 0x00}, 0, 3, 212 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, CPU_F16C, 0, {MOD_PreAdd, MOD_Op2Add, 0}, 0, 0, 0xC4, 3, {0x0F, 0x3A, 0x00}, 0, 3, 215 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, CPU_F16C, 0, {MOD_PreAdd, MOD_Op2Add, 0}, 0, 0, 0xC4, 3, {0x0F, 0x3A, 0x00}, 0, 3, 218 }
+};
+
+static const x86_insn_info avx_cvtph2ps_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_AVX, CPU_F16C, 0, {MOD_PreAdd, MOD_Op2Add, 0}, 0, 0, 0xC0, 3, {0x0F, 0x38, 0x00}, 0, 2, 64 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, CPU_F16C, 0, {MOD_PreAdd, MOD_Op2Add, 0}, 0, 0, 0xC0, 3, {0x0F, 0x38, 0x00}, 0, 2, 631 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, CPU_F16C, 0, {MOD_PreAdd, MOD_Op2Add, 0}, 0, 0, 0xC4, 3, {0x0F, 0x38, 0x00}, 0, 2, 208 },
+ { SUF_Z, ONLY_AVX, CPU_AVX, CPU_F16C, 0, {MOD_PreAdd, MOD_Op2Add, 0}, 0, 0, 0xC4, 3, {0x0F, 0x38, 0x00}, 0, 2, 633 }
+};
+
+static const x86_insn_info extrq_insn[] = {
+ { SUF_Z, 0, CPU_SSE4a, 0, 0, {0, 0, 0}, 0, 0, 0x66, 2, {0x0F, 0x78, 0}, 0, 3, 65 },
+ { SUF_Z, 0, CPU_SSE4a, 0, 0, {0, 0, 0}, 0, 0, 0x66, 2, {0x0F, 0x79, 0}, 0, 2, 64 }
+};
+
+static const x86_insn_info insertq_insn[] = {
+ { SUF_Z, 0, CPU_SSE4a, 0, 0, {0, 0, 0}, 0, 0, 0xF2, 2, {0x0F, 0x78, 0}, 0, 4, 64 },
+ { SUF_Z, 0, CPU_SSE4a, 0, 0, {0, 0, 0}, 0, 0, 0xF2, 2, {0x0F, 0x79, 0}, 0, 2, 64 }
+};
+
+static const x86_insn_info movntsd_insn[] = {
+ { SUF_Z, 0, CPU_SSE4a, 0, 0, {0, 0, 0}, 0, 0, 0xF2, 2, {0x0F, 0x2B, 0}, 0, 2, 47 }
+};
+
+static const x86_insn_info movntss_insn[] = {
+ { SUF_Z, 0, CPU_SSE4a, 0, 0, {0, 0, 0}, 0, 0, 0xF3, 2, {0x0F, 0x2B, 0}, 0, 2, 450 }
+};
+
+static const x86_insn_info vfrc_pdps_insn[] = {
+ { SUF_Z, 0, CPU_XOP, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0x80, 2, {0x09, 0x80, 0}, 0, 2, 155 },
+ { SUF_Z, 0, CPU_XOP, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0x84, 2, {0x09, 0x80, 0}, 0, 2, 191 }
+};
+
+static const x86_insn_info vfrczsd_insn[] = {
+ { SUF_Z, 0, CPU_XOP, 0, 0, {0, 0, 0}, 0, 0, 0x80, 2, {0x09, 0x83, 0}, 0, 2, 64 },
+ { SUF_Z, 0, CPU_XOP, 0, 0, {0, 0, 0}, 0, 0, 0x80, 2, {0x09, 0x83, 0}, 0, 2, 451 }
+};
+
+static const x86_insn_info vfrczss_insn[] = {
+ { SUF_Z, 0, CPU_XOP, 0, 0, {0, 0, 0}, 0, 0, 0x80, 2, {0x09, 0x82, 0}, 0, 2, 64 },
+ { SUF_Z, 0, CPU_XOP, 0, 0, {0, 0, 0}, 0, 0, 0x80, 2, {0x09, 0x82, 0}, 0, 2, 336 }
+};
+
+static const x86_insn_info vpcmov_insn[] = {
+ { SUF_Z, 0, CPU_XOP, 0, 0, {0, 0, 0}, 0, 0, 0x80, 2, {0x08, 0xA2, 0}, 0, 4, 12 },
+ { SUF_Z, 0, CPU_XOP, 0, 0, {0, 0, 0}, 0, 0, 0x88, 2, {0x08, 0xA2, 0}, 0, 4, 68 },
+ { SUF_Z, 0, CPU_XOP, 0, 0, {0, 0, 0}, 0, 0, 0x84, 2, {0x08, 0xA2, 0}, 0, 4, 16 },
+ { SUF_Z, 0, CPU_XOP, 0, 0, {0, 0, 0}, 0, 0, 0x8C, 2, {0x08, 0xA2, 0}, 0, 4, 72 }
+};
+
+static const x86_insn_info vpcom_insn[] = {
+ { SUF_Z, 0, CPU_XOP, 0, 0, {MOD_Op1Add, MOD_Imm8, 0}, 0, 0, 0x80, 2, {0x08, 0x00, 0}, 0, 3, 12 }
+};
+
+static const x86_insn_info vpcom_imm_insn[] = {
+ { SUF_Z, 0, CPU_XOP, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0x80, 2, {0x08, 0x00, 0}, 0, 4, 60 }
+};
+
+static const x86_insn_info vphaddsub_insn[] = {
+ { SUF_Z, 0, CPU_XOP, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0x80, 2, {0x09, 0x00, 0}, 0, 2, 155 }
+};
+
+static const x86_insn_info vpma_insn[] = {
+ { SUF_Z, 0, CPU_XOP, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0x80, 2, {0x08, 0x00, 0}, 0, 4, 12 }
+};
+
+static const x86_insn_info vpperm_insn[] = {
+ { SUF_Z, 0, CPU_XOP, 0, 0, {0, 0, 0}, 0, 0, 0x80, 2, {0x08, 0xA3, 0}, 0, 4, 12 },
+ { SUF_Z, 0, CPU_XOP, 0, 0, {0, 0, 0}, 0, 0, 0x88, 2, {0x08, 0xA3, 0}, 0, 4, 68 }
+};
+
+static const x86_insn_info vprot_insn[] = {
+ { SUF_Z, 0, CPU_XOP, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0x80, 2, {0x09, 0x90, 0}, 0, 3, 155 },
+ { SUF_Z, 0, CPU_XOP, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0x88, 2, {0x09, 0x90, 0}, 0, 3, 12 },
+ { SUF_Z, 0, CPU_XOP, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0x80, 2, {0x08, 0xC0, 0}, 0, 3, 185 }
+};
+
+static const x86_insn_info amd_vpshift_insn[] = {
+ { SUF_Z, 0, CPU_XOP, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0x80, 2, {0x09, 0x00, 0}, 0, 3, 155 },
+ { SUF_Z, 0, CPU_XOP, 0, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0x88, 2, {0x09, 0x00, 0}, 0, 3, 12 }
+};
+
+static const x86_insn_info fma_128_256_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_FMA4, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 4, 12 },
+ { SUF_Z, ONLY_AVX, CPU_FMA4, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC9, 3, {0x0F, 0x3A, 0x00}, 0, 4, 68 },
+ { SUF_Z, ONLY_AVX, CPU_FMA4, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC5, 3, {0x0F, 0x3A, 0x00}, 0, 4, 16 },
+ { SUF_Z, ONLY_AVX, CPU_FMA4, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xCD, 3, {0x0F, 0x3A, 0x00}, 0, 4, 72 }
+};
+
+static const x86_insn_info fma_128_m32_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_FMA4, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 4, 36 },
+ { SUF_Z, ONLY_AVX, CPU_FMA4, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 4, 76 },
+ { SUF_Z, ONLY_AVX, CPU_FMA4, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC9, 3, {0x0F, 0x3A, 0x00}, 0, 4, 80 }
+};
+
+static const x86_insn_info fma_128_m64_insn[] = {
+ { SUF_Z, ONLY_AVX, CPU_FMA4, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 4, 36 },
+ { SUF_Z, ONLY_AVX, CPU_FMA4, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC1, 3, {0x0F, 0x3A, 0x00}, 0, 4, 40 },
+ { SUF_Z, ONLY_AVX, CPU_FMA4, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0xC9, 3, {0x0F, 0x3A, 0x00}, 0, 4, 44 }
+};
+
+static const x86_insn_info xsaveopt64_insn[] = {
+ { SUF_Z, ONLY_64, 0, 0, 0, {MOD_SpAdd, MOD_Op0Add, MOD_Op1Add}, 64, 0, 0, 2, {0x00, 0x00, 0}, 0, 1, 532 }
+};
+
+static const x86_insn_info movbe_insn[] = {
+ { SUF_Z, 0, CPU_MOVBE, 0, 0, {0, 0, 0}, 16, 0, 0, 3, {0x0F, 0x38, 0xF0}, 0, 2, 465 },
+ { SUF_Z, 0, CPU_MOVBE, 0, 0, {0, 0, 0}, 16, 0, 0, 3, {0x0F, 0x38, 0xF1}, 0, 2, 467 },
+ { SUF_Z, 0, CPU_386, CPU_MOVBE, 0, {0, 0, 0}, 32, 0, 0, 3, {0x0F, 0x38, 0xF0}, 0, 2, 359 },
+ { SUF_Z, 0, CPU_386, CPU_MOVBE, 0, {0, 0, 0}, 32, 0, 0, 3, {0x0F, 0x38, 0xF1}, 0, 2, 337 },
+ { SUF_Z, ONLY_64, CPU_MOVBE, 0, 0, {0, 0, 0}, 64, 0, 0, 3, {0x0F, 0x38, 0xF0}, 0, 2, 469 },
+ { SUF_Z, ONLY_64, CPU_MOVBE, 0, 0, {0, 0, 0}, 64, 0, 0, 3, {0x0F, 0x38, 0xF1}, 0, 2, 339 }
+};
+
+static const x86_insn_info vex_gpr_ndd_rm_0F38_regext_insn[] = {
+ { SUF_L|SUF_Z, ONLY_AVX, CPU_386, 0, 0, {MOD_PreAdd, MOD_Op2Add, MOD_SpAdd}, 32, 0, 0xC0, 3, {0x0F, 0x38, 0x00}, 0, 2, 255 },
+ { SUF_Q|SUF_Z, ONLY_64|ONLY_AVX, 0, 0, 0, {MOD_PreAdd, MOD_Op2Add, MOD_SpAdd}, 64, 0, 0xC0, 3, {0x0F, 0x38, 0x00}, 0, 2, 258 }
+};
+
+static const x86_insn_info vex_gpr_reg_rm_0F_imm8_insn[] = {
+ { SUF_L|SUF_Z, ONLY_AVX, CPU_386, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_Op2Add}, 32, 0, 0xC0, 3, {0x0F, 0x00, 0x00}, 0, 3, 134 },
+ { SUF_Q|SUF_Z, ONLY_64|ONLY_AVX, 0, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_Op2Add}, 64, 0, 0xC0, 3, {0x0F, 0x00, 0x00}, 0, 3, 137 }
+};
+
+static const x86_insn_info vex_gpr_reg_nds_rm_0F_insn[] = {
+ { SUF_L|SUF_Z, ONLY_AVX, CPU_386, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_Op2Add}, 32, 0, 0xC0, 3, {0x0F, 0x00, 0x00}, 0, 3, 254 },
+ { SUF_Q|SUF_Z, ONLY_64|ONLY_AVX, 0, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_Op2Add}, 64, 0, 0xC0, 3, {0x0F, 0x00, 0x00}, 0, 3, 257 }
+};
+
+static const x86_insn_info vex_gpr_reg_rm_nds_0F_insn[] = {
+ { SUF_L|SUF_Z, ONLY_AVX, CPU_386, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_Op2Add}, 32, 0, 0xC0, 3, {0x0F, 0x00, 0x00}, 0, 3, 149 },
+ { SUF_Q|SUF_Z, ONLY_64|ONLY_AVX, 0, 0, 0, {MOD_PreAdd, MOD_Op1Add, MOD_Op2Add}, 64, 0, 0xC0, 3, {0x0F, 0x00, 0x00}, 0, 3, 152 }
+};
+
+static const x86_insn_info bextr_insn[] = {
+ { SUF_L|SUF_Z, ONLY_AVX, CPU_386, CPU_BMI1, 0, {0, 0, 0}, 32, 0, 0xC0, 3, {0x0F, 0x38, 0xF7}, 0, 3, 149 },
+ { SUF_L|SUF_Z, ONLY_AVX, CPU_386, CPU_TBM, 0, {0, 0, 0}, 32, 0, 0x80, 2, {0x0A, 0x10, 0}, 0, 3, 230 },
+ { SUF_Q|SUF_Z, ONLY_64|ONLY_AVX, CPU_BMI1, 0, 0, {0, 0, 0}, 64, 0, 0xC0, 3, {0x0F, 0x38, 0xF7}, 0, 3, 152 },
+ { SUF_Q|SUF_Z, ONLY_64|ONLY_AVX, CPU_TBM, 0, 0, {0, 0, 0}, 64, 0, 0x88, 2, {0x0A, 0x10, 0}, 0, 3, 233 }
+};
+
+static const x86_insn_info invpcid_insn[] = {
+ { SUF_Z, NOT_64, CPU_386, CPU_INVPCID, CPU_Priv, {0, 0, 0}, 0, 0, 0x66, 3, {0x0F, 0x38, 0x82}, 0, 2, 611 },
+ { SUF_Z, ONLY_64, CPU_INVPCID, CPU_Priv, 0, {0, 0, 0}, 0, 64, 0x66, 3, {0x0F, 0x38, 0x82}, 0, 2, 613 }
+};
+
+static const x86_insn_info intel_SHA1MSG1_insn[] = {
+ { SUF_Z, 0, CPU_SHA, 0, 0, {0, 0, 0}, 0, 0, 0, 3, {0x0F, 0x38, 0xC9}, 0, 2, 155 }
+};
+
+static const x86_insn_info intel_SHA1MSG2_insn[] = {
+ { SUF_Z, 0, CPU_SHA, 0, 0, {0, 0, 0}, 0, 0, 0, 3, {0x0F, 0x38, 0xCA}, 0, 2, 155 }
+};
+
+static const x86_insn_info intel_SHA1NEXTE_insn[] = {
+ { SUF_Z, 0, CPU_SHA, 0, 0, {0, 0, 0}, 0, 0, 0, 3, {0x0F, 0x38, 0xC8}, 0, 2, 155 }
+};
+
+static const x86_insn_info intel_SHA1RNDS4_insn[] = {
+ { SUF_Z, 0, CPU_SHA, 0, 0, {0, 0, 0}, 0, 0, 0, 3, {0x0F, 0x3A, 0xCC}, 0, 3, 185 }
+};
+
+static const x86_insn_info intel_SHA256MSG1_insn[] = {
+ { SUF_Z, 0, CPU_SHA, 0, 0, {0, 0, 0}, 0, 0, 0, 3, {0x0F, 0x38, 0xCC}, 0, 2, 155 }
+};
+
+static const x86_insn_info intel_SHA256MSG2_insn[] = {
+ { SUF_Z, 0, CPU_SHA, 0, 0, {0, 0, 0}, 0, 0, 0, 3, {0x0F, 0x38, 0xCD}, 0, 2, 155 }
+};
+
+static const x86_insn_info intel_SHA256RNDS2_insn[] = {
+ { SUF_Z, 0, CPU_SHA, 0, 0, {0, 0, 0}, 0, 0, 0, 3, {0x0F, 0x38, 0xCB}, 0, 2, 64 }
+};
+
+static const x86_insn_info vex_gpr_ndd_rm_0F38_insn[] = {
+ { SUF_L|SUF_Z, 0, CPU_386, 0, 0, {MOD_PreAdd, MOD_Op2Add, 0}, 32, 0, 0x00, 3, {0x0F, 0x38, 0x00}, 0, 2, 101 },
+ { SUF_Q|SUF_Z, ONLY_64, 0, 0, 0, {MOD_PreAdd, MOD_Op2Add, 0}, 64, 0, 0x00, 3, {0x0F, 0x38, 0x00}, 0, 2, 104 }
+};
+
+static const x86_insn_info xop_gpr_reg_rm_09_insn[] = {
+ { SUF_L|SUF_Z, 0, CPU_386, CPU_TBM, 0, {MOD_Op1Add, MOD_SpAdd, 0}, 32, 0, 0x80, 2, {0x09, 0x00, 0}, 0, 2, 255 },
+ { SUF_Q|SUF_Z, ONLY_64, CPU_TBM, 0, 0, {MOD_Op1Add, MOD_SpAdd, 0}, 64, 0, 0x88, 2, {0x09, 0x00, 0}, 0, 2, 258 }
+};
+
+static const x86_insn_info now3d_insn[] = {
+ { SUF_Z, 0, CPU_3DNow, 0, 0, {MOD_Imm8, 0, 0}, 0, 0, 0, 2, {0x0F, 0x0F, 0}, 0, 2, 140 }
+};
+
+static const x86_insn_info cmpxchg16b_insn[] = {
+ { SUF_Z, ONLY_64, 0, 0, 0, {0, 0, 0}, 64, 0, 0, 2, {0x0F, 0xC7, 0}, 1, 1, 510 }
+};
+
+static const x86_insn_info invlpga_insn[] = {
+ { SUF_Z, 0, CPU_SVM, 0, 0, {0, 0, 0}, 0, 0, 0, 3, {0x0F, 0x01, 0xDF}, 0, 0, 0 },
+ { SUF_Z, 0, CPU_386, CPU_SVM, 0, {0, 0, 0}, 0, 0, 0, 3, {0x0F, 0x01, 0xDF}, 0, 2, 515 }
+};
+
+static const x86_insn_info skinit_insn[] = {
+ { SUF_Z, 0, CPU_SVM, 0, 0, {0, 0, 0}, 0, 0, 0, 3, {0x0F, 0x01, 0xDE}, 0, 0, 0 },
+ { SUF_Z, 0, CPU_SVM, 0, 0, {0, 0, 0}, 0, 0, 0, 3, {0x0F, 0x01, 0xDE}, 0, 1, 655 }
+};
+
+static const x86_insn_info svm_rax_insn[] = {
+ { SUF_Z, 0, CPU_SVM, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0, 3, {0x0F, 0x01, 0x00}, 0, 0, 0 },
+ { SUF_Z, 0, CPU_SVM, 0, 0, {MOD_Op2Add, 0, 0}, 0, 0, 0, 3, {0x0F, 0x01, 0x00}, 0, 1, 515 }
+};
+
+static const x86_insn_info padlock_insn[] = {
+ { SUF_Z, 0, CPU_PadLock, 0, 0, {MOD_Imm8, MOD_PreAdd, MOD_Op1Add}, 0, 0, 0x00, 2, {0x0F, 0x00, 0}, 0, 0, 0 }
+};
+
+static const x86_insn_info cyrixmmx_insn[] = {
+ { SUF_Z, 0, CPU_Cyrix, CPU_MMX, 0, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 2, 140 }
+};
+
+static const x86_insn_info pmachriw_insn[] = {
+ { SUF_Z, 0, CPU_Cyrix, CPU_MMX, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x5E, 0}, 0, 2, 317 }
+};
+
+static const x86_insn_info rdwrshr_insn[] = {
+ { SUF_Z, 0, CPU_686, CPU_Cyrix, CPU_SMM, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0x0F, 0x36, 0}, 0, 1, 90 }
+};
+
+static const x86_insn_info rsdc_insn[] = {
+ { SUF_Z, 0, CPU_486, CPU_Cyrix, CPU_SMM, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x79, 0}, 0, 2, 629 }
+};
+
+static const x86_insn_info cyrixsmm_insn[] = {
+ { SUF_Z, 0, CPU_486, CPU_Cyrix, CPU_SMM, {MOD_Op1Add, 0, 0}, 0, 0, 0, 2, {0x0F, 0x00, 0}, 0, 1, 619 }
+};
+
+static const x86_insn_info svdc_insn[] = {
+ { SUF_Z, 0, CPU_486, CPU_Cyrix, CPU_SMM, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x78, 0}, 0, 2, 619 }
+};
+
+static const x86_insn_info ibts_insn[] = {
+ { SUF_Z, 0, CPU_386, CPU_Obs, CPU_Undoc, {0, 0, 0}, 16, 0, 0, 2, {0x0F, 0xA7, 0}, 0, 2, 260 },
+ { SUF_Z, 0, CPU_386, CPU_Obs, CPU_Undoc, {0, 0, 0}, 32, 0, 0, 2, {0x0F, 0xA7, 0}, 0, 2, 266 }
+};
+
+static const x86_insn_info umov_insn[] = {
+ { SUF_Z, 0, CPU_386, CPU_Undoc, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x10, 0}, 0, 2, 323 },
+ { SUF_Z, 0, CPU_386, CPU_Undoc, 0, {0, 0, 0}, 16, 0, 0, 2, {0x0F, 0x11, 0}, 0, 2, 260 },
+ { SUF_Z, 0, CPU_386, CPU_Undoc, 0, {0, 0, 0}, 32, 0, 0, 2, {0x0F, 0x11, 0}, 0, 2, 266 },
+ { SUF_Z, 0, CPU_386, CPU_Undoc, 0, {0, 0, 0}, 0, 0, 0, 2, {0x0F, 0x12, 0}, 0, 2, 325 },
+ { SUF_Z, 0, CPU_386, CPU_Undoc, 0, {0, 0, 0}, 16, 0, 0, 2, {0x0F, 0x13, 0}, 0, 2, 98 },
+ { SUF_Z, 0, CPU_386, CPU_Undoc, 0, {0, 0, 0}, 32, 0, 0, 2, {0x0F, 0x13, 0}, 0, 2, 101 }
+};
+
+static const x86_insn_info xbts_insn[] = {
+ { SUF_Z, 0, CPU_386, CPU_Obs, CPU_Undoc, {0, 0, 0}, 16, 0, 0, 2, {0x0F, 0xA6, 0}, 0, 2, 465 },
+ { SUF_Z, 0, CPU_386, CPU_Obs, CPU_Undoc, {0, 0, 0}, 32, 0, 0, 2, {0x0F, 0xA6, 0}, 0, 2, 359 }
+};
+
+
diff --git a/contrib/tools/yasm/modules/x86regtmod.c b/contrib/tools/yasm/modules/x86regtmod.c
index d4e63c5e9f..cdec3577e2 100644
--- a/contrib/tools/yasm/modules/x86regtmod.c
+++ b/contrib/tools/yasm/modules/x86regtmod.c
@@ -1,261 +1,261 @@
-/* ANSI-C code produced by genperf */
-
-#include <util.h>
-
-#include <ctype.h>
-#include <libyasm.h>
-#include <libyasm/phash.h>
-
-#include "modules/arch/x86/x86arch.h"
-
-enum regtmod_type {
- REG = 1,
- REGGROUP,
- SEGREG,
- TARGETMOD
-};
-struct regtmod_parse_data {
- const char *name;
- unsigned int type:8; /* regtmod_type */
-
- /* REG: register size
- * SEGREG: prefix encoding
- * Others: 0
- */
- unsigned int size_prefix:8;
-
- /* REG: register index
- * REGGROUP: register group type
- * SEGREG: register encoding
- * TARGETMOD: target modifier
- */
- unsigned int data:8;
-
- /* REG: required bits setting
- * SEGREG: BITS in which the segment is ignored
- * Others: 0
- */
- unsigned int bits:8;
-};
-static const struct regtmod_parse_data *
-regtmod_find(const char *key, size_t len)
-{
- static const struct regtmod_parse_data pd[152] = {
- {"st6", REG, X86_FPUREG, 6, 0},
- {"ymm1", REG, X86_YMMREG, 1, 0},
- {"rsp", REG, X86_REG64, 4, 64},
- {"r10", REG, X86_REG64, 10, 64},
- {"bp", REG, X86_REG16, 5, 0},
- {"r10b", REG, X86_REG8, 10, 64},
- {"mm2", REG, X86_MMXREG, 2, 0},
- {"rdi", REG, X86_REG64, 7, 64},
- {"ymm12", REG, X86_YMMREG, 12, 64},
- {"r8", REG, X86_REG64, 8, 64},
- {"gs", SEGREG, 0x65, 0x05, 0},
- {"r10d", REG, X86_REG32, 10, 64},
- {"rsi", REG, X86_REG64, 6, 64},
- {"eax", REG, X86_REG32, 0, 0},
- {"mm3", REG, X86_MMXREG, 3, 0},
- {"tr6", REG, X86_TRREG, 6, 0},
- {"tr0", REG, X86_TRREG, 0, 0},
- {"ah", REG, X86_REG8, 4, 0},
- {"xmm6", REG, X86_XMMREG, 6, 0},
- {"dr6", REG, X86_DRREG, 6, 0},
- {"esp", REG, X86_REG32, 4, 0},
- {"bpl", REG, X86_REG8X, 5, 64},
- {"tr5", REG, X86_TRREG, 5, 0},
- {"ax", REG, X86_REG16, 0, 0},
- {"sp", REG, X86_REG16, 4, 0},
- {"r15b", REG, X86_REG8, 15, 64},
- {"xmm14", REG, X86_XMMREG, 14, 64},
- {"xmm12", REG, X86_XMMREG, 12, 64},
- {"r11", REG, X86_REG64, 11, 64},
- {"xmm", REGGROUP, 0, X86_XMMREG, 0},
- {"ymm2", REG, X86_YMMREG, 2, 0},
- {"ebp", REG, X86_REG32, 5, 0},
- {"xmm8", REG, X86_XMMREG, 8, 64},
- {"r12d", REG, X86_REG32, 12, 64},
- {"ymm4", REG, X86_YMMREG, 4, 0},
- {"ymm3", REG, X86_YMMREG, 3, 0},
- {"rax", REG, X86_REG64, 0, 64},
- {"xmm3", REG, X86_XMMREG, 3, 0},
- {"xmm0", REG, X86_XMMREG, 0, 0},
- {"dr7", REG, X86_DRREG, 7, 0},
- {"r14w", REG, X86_REG16, 14, 64},
- {"mm1", REG, X86_MMXREG, 1, 0},
- {"bl", REG, X86_REG8, 3, 0},
- {"r9w", REG, X86_REG16, 9, 64},
- {"ymm13", REG, X86_YMMREG, 13, 64},
- {"r9b", REG, X86_REG8, 9, 64},
- {"ymm8", REG, X86_YMMREG, 8, 64},
- {"dx", REG, X86_REG16, 2, 0},
- {"r12", REG, X86_REG64, 12, 64},
- {"r12w", REG, X86_REG16, 12, 64},
- {"r9", REG, X86_REG64, 9, 64},
- {"r15w", REG, X86_REG16, 15, 64},
- {"sil", REG, X86_REG8X, 6, 64},
- {"r10w", REG, X86_REG16, 10, 64},
- {"ymm6", REG, X86_YMMREG, 6, 0},
- {"ss", SEGREG, 0x36, 0x02, 64},
- {"tr4", REG, X86_TRREG, 4, 0},
- {"cr3", REG, X86_CRREG, 3, 0},
- {"r11w", REG, X86_REG16, 11, 64},
- {"xmm4", REG, X86_XMMREG, 4, 0},
- {"st0", REG, X86_FPUREG, 0, 0},
- {"dil", REG, X86_REG8X, 7, 64},
- {"tr3", REG, X86_TRREG, 3, 0},
- {"r13d", REG, X86_REG32, 13, 64},
- {"r8w", REG, X86_REG16, 8, 64},
- {"xmm13", REG, X86_XMMREG, 13, 64},
- {"st3", REG, X86_FPUREG, 3, 0},
- {"xmm15", REG, X86_XMMREG, 15, 64},
- {"xmm10", REG, X86_XMMREG, 10, 64},
- {"es", SEGREG, 0x26, 0x00, 64},
- {"cr8", REG, X86_CRREG, 8, 64},
- {"xmm7", REG, X86_XMMREG, 7, 0},
- {"spl", REG, X86_REG8X, 4, 64},
- {"r15", REG, X86_REG64, 15, 64},
- {"cr4", REG, X86_CRREG, 4, 0},
- {"fs", SEGREG, 0x64, 0x04, 0},
- {"rcx", REG, X86_REG64, 1, 64},
- {"mm0", REG, X86_MMXREG, 0, 0},
- {"mm", REGGROUP, 0, X86_MMXREG, 0},
- {"tr1", REG, X86_TRREG, 1, 0},
- {"short", TARGETMOD, 0, X86_SHORT, 0},
- {"st4", REG, X86_FPUREG, 4, 0},
- {"cr0", REG, X86_CRREG, 0, 0},
- {"xmm11", REG, X86_XMMREG, 11, 64},
- {"mm4", REG, X86_MMXREG, 4, 0},
- {"bh", REG, X86_REG8, 7, 0},
- {"r15d", REG, X86_REG32, 15, 64},
- {"dr2", REG, X86_DRREG, 2, 0},
- {"r8d", REG, X86_REG32, 8, 64},
- {"ymm7", REG, X86_YMMREG, 7, 0},
- {"xmm9", REG, X86_XMMREG, 9, 64},
- {"r12b", REG, X86_REG8, 12, 64},
- {"st2", REG, X86_FPUREG, 2, 0},
- {"ymm9", REG, X86_YMMREG, 9, 64},
- {"st7", REG, X86_FPUREG, 7, 0},
- {"bx", REG, X86_REG16, 3, 0},
- {"ymm11", REG, X86_YMMREG, 11, 64},
- {"ymm5", REG, X86_YMMREG, 5, 0},
- {"ymm15", REG, X86_YMMREG, 15, 64},
- {"rbp", REG, X86_REG64, 5, 64},
- {"r13", REG, X86_REG64, 13, 64},
- {"mm5", REG, X86_MMXREG, 5, 0},
- {"si", REG, X86_REG16, 6, 0},
- {"dl", REG, X86_REG8, 2, 0},
- {"di", REG, X86_REG16, 7, 0},
- {"cr2", REG, X86_CRREG, 2, 0},
- {"r14d", REG, X86_REG32, 14, 64},
- {"ymm14", REG, X86_YMMREG, 14, 64},
- {"tr7", REG, X86_TRREG, 7, 0},
- {"ds", SEGREG, 0x3e, 0x03, 64},
- {"cx", REG, X86_REG16, 1, 0},
- {"st", REGGROUP, 0, X86_FPUREG, 0},
- {"edi", REG, X86_REG32, 7, 0},
- {"al", REG, X86_REG8, 0, 0},
- {"mm7", REG, X86_MMXREG, 7, 0},
- {"ebx", REG, X86_REG32, 3, 0},
- {"xmm2", REG, X86_XMMREG, 2, 0},
- {"st5", REG, X86_FPUREG, 5, 0},
- {"rip", REG, X86_RIP, 0, 64},
- {"rbx", REG, X86_REG64, 3, 64},
- {"to", TARGETMOD, 0, X86_TO, 0},
- {"r11d", REG, X86_REG32, 11, 64},
- {"dr5", REG, X86_DRREG, 5, 0},
- {"dr1", REG, X86_DRREG, 1, 0},
- {"near", TARGETMOD, 0, X86_NEAR, 0},
- {"r14", REG, X86_REG64, 14, 64},
- {"dh", REG, X86_REG8, 6, 0},
- {"cl", REG, X86_REG8, 1, 0},
- {"dr4", REG, X86_DRREG, 4, 0},
- {"ymm10", REG, X86_YMMREG, 10, 64},
- {"dr3", REG, X86_DRREG, 3, 0},
- {"xmm5", REG, X86_XMMREG, 5, 0},
- {"mm6", REG, X86_MMXREG, 6, 0},
- {"r13w", REG, X86_REG16, 13, 64},
- {"far", TARGETMOD, 0, X86_FAR, 0},
- {"ymm0", REG, X86_YMMREG, 0, 0},
- {"ymm", REGGROUP, 0, X86_YMMREG, 0},
- {"ch", REG, X86_REG8, 5, 0},
- {"xmm1", REG, X86_XMMREG, 1, 0},
- {"esi", REG, X86_REG32, 6, 0},
- {"r14b", REG, X86_REG8, 14, 64},
- {"st1", REG, X86_FPUREG, 1, 0},
- {"r8b", REG, X86_REG8, 8, 64},
- {"r11b", REG, X86_REG8, 11, 64},
- {"r13b", REG, X86_REG8, 13, 64},
- {"ecx", REG, X86_REG32, 1, 0},
- {"tr2", REG, X86_TRREG, 2, 0},
- {"rdx", REG, X86_REG64, 2, 64},
- {"r9d", REG, X86_REG32, 9, 64},
- {"cs", SEGREG, 0x2e, 0x01, 0},
- {"dr0", REG, X86_DRREG, 0, 0},
- {"edx", REG, X86_REG32, 2, 0}
- };
- static const unsigned char tab[] = {
- 0,0,125,22,0,0,85,0,85,168,0,0,0,7,113,0,
- 0,0,0,22,183,0,0,11,42,55,0,0,82,0,88,235,
- 0,0,0,0,0,0,183,85,0,0,145,113,220,125,22,0,
- 88,183,0,7,0,0,0,7,0,125,113,87,131,116,7,0,
- 113,7,0,113,0,87,87,7,7,7,113,40,85,125,113,85,
- 0,0,22,235,0,131,125,113,0,22,0,220,0,220,0,120,
- 116,0,124,184,0,0,0,183,92,125,0,92,125,0,0,177,
- 7,0,0,7,0,45,0,214,180,113,211,163,142,0,88,173,
- };
-
- const struct regtmod_parse_data *ret;
- unsigned long rsl, val = phash_lookup(key, len, 0x9e3779b9UL);
- rsl = ((val>>25)^tab[val&0x7f]);
- if (rsl >= 152) return NULL;
- ret = &pd[rsl];
- if (strcmp(key, ret->name) != 0) return NULL;
- return ret;
-}
-
-
-
-yasm_arch_regtmod
-yasm_x86__parse_check_regtmod(yasm_arch *arch, const char *id, size_t id_len,
- uintptr_t *data)
-{
- yasm_arch_x86 *arch_x86 = (yasm_arch_x86 *)arch;
- /*@null@*/ const struct regtmod_parse_data *pdata;
- size_t i;
- static char lcaseid[8];
- unsigned int bits;
- yasm_arch_regtmod type;
-
- if (id_len > 7)
- return YASM_ARCH_NOTREGTMOD;
- for (i=0; i<id_len; i++)
- lcaseid[i] = tolower(id[i]);
- lcaseid[id_len] = '\0';
-
- pdata = regtmod_find(lcaseid, id_len);
- if (!pdata)
- return YASM_ARCH_NOTREGTMOD;
-
- type = (yasm_arch_regtmod)pdata->type;
- bits = pdata->bits;
-
- if (type == YASM_ARCH_REG && bits != 0 && arch_x86->mode_bits != bits) {
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("`%s' is a register in %u-bit mode"), id, bits);
- return YASM_ARCH_NOTREGTMOD;
- }
-
- if (type == YASM_ARCH_SEGREG && bits != 0 && arch_x86->mode_bits == bits) {
- yasm_warn_set(YASM_WARN_GENERAL,
- N_("`%s' segment register ignored in %u-bit mode"), id,
- bits);
- }
-
- if (type == YASM_ARCH_SEGREG)
- *data = (pdata->size_prefix<<8) | pdata->data;
- else
- *data = pdata->size_prefix | pdata->data;
- return type;
-}
-
+/* ANSI-C code produced by genperf */
+
+#include <util.h>
+
+#include <ctype.h>
+#include <libyasm.h>
+#include <libyasm/phash.h>
+
+#include "modules/arch/x86/x86arch.h"
+
+enum regtmod_type {
+ REG = 1,
+ REGGROUP,
+ SEGREG,
+ TARGETMOD
+};
+struct regtmod_parse_data {
+ const char *name;
+ unsigned int type:8; /* regtmod_type */
+
+ /* REG: register size
+ * SEGREG: prefix encoding
+ * Others: 0
+ */
+ unsigned int size_prefix:8;
+
+ /* REG: register index
+ * REGGROUP: register group type
+ * SEGREG: register encoding
+ * TARGETMOD: target modifier
+ */
+ unsigned int data:8;
+
+ /* REG: required bits setting
+ * SEGREG: BITS in which the segment is ignored
+ * Others: 0
+ */
+ unsigned int bits:8;
+};
+static const struct regtmod_parse_data *
+regtmod_find(const char *key, size_t len)
+{
+ static const struct regtmod_parse_data pd[152] = {
+ {"st6", REG, X86_FPUREG, 6, 0},
+ {"ymm1", REG, X86_YMMREG, 1, 0},
+ {"rsp", REG, X86_REG64, 4, 64},
+ {"r10", REG, X86_REG64, 10, 64},
+ {"bp", REG, X86_REG16, 5, 0},
+ {"r10b", REG, X86_REG8, 10, 64},
+ {"mm2", REG, X86_MMXREG, 2, 0},
+ {"rdi", REG, X86_REG64, 7, 64},
+ {"ymm12", REG, X86_YMMREG, 12, 64},
+ {"r8", REG, X86_REG64, 8, 64},
+ {"gs", SEGREG, 0x65, 0x05, 0},
+ {"r10d", REG, X86_REG32, 10, 64},
+ {"rsi", REG, X86_REG64, 6, 64},
+ {"eax", REG, X86_REG32, 0, 0},
+ {"mm3", REG, X86_MMXREG, 3, 0},
+ {"tr6", REG, X86_TRREG, 6, 0},
+ {"tr0", REG, X86_TRREG, 0, 0},
+ {"ah", REG, X86_REG8, 4, 0},
+ {"xmm6", REG, X86_XMMREG, 6, 0},
+ {"dr6", REG, X86_DRREG, 6, 0},
+ {"esp", REG, X86_REG32, 4, 0},
+ {"bpl", REG, X86_REG8X, 5, 64},
+ {"tr5", REG, X86_TRREG, 5, 0},
+ {"ax", REG, X86_REG16, 0, 0},
+ {"sp", REG, X86_REG16, 4, 0},
+ {"r15b", REG, X86_REG8, 15, 64},
+ {"xmm14", REG, X86_XMMREG, 14, 64},
+ {"xmm12", REG, X86_XMMREG, 12, 64},
+ {"r11", REG, X86_REG64, 11, 64},
+ {"xmm", REGGROUP, 0, X86_XMMREG, 0},
+ {"ymm2", REG, X86_YMMREG, 2, 0},
+ {"ebp", REG, X86_REG32, 5, 0},
+ {"xmm8", REG, X86_XMMREG, 8, 64},
+ {"r12d", REG, X86_REG32, 12, 64},
+ {"ymm4", REG, X86_YMMREG, 4, 0},
+ {"ymm3", REG, X86_YMMREG, 3, 0},
+ {"rax", REG, X86_REG64, 0, 64},
+ {"xmm3", REG, X86_XMMREG, 3, 0},
+ {"xmm0", REG, X86_XMMREG, 0, 0},
+ {"dr7", REG, X86_DRREG, 7, 0},
+ {"r14w", REG, X86_REG16, 14, 64},
+ {"mm1", REG, X86_MMXREG, 1, 0},
+ {"bl", REG, X86_REG8, 3, 0},
+ {"r9w", REG, X86_REG16, 9, 64},
+ {"ymm13", REG, X86_YMMREG, 13, 64},
+ {"r9b", REG, X86_REG8, 9, 64},
+ {"ymm8", REG, X86_YMMREG, 8, 64},
+ {"dx", REG, X86_REG16, 2, 0},
+ {"r12", REG, X86_REG64, 12, 64},
+ {"r12w", REG, X86_REG16, 12, 64},
+ {"r9", REG, X86_REG64, 9, 64},
+ {"r15w", REG, X86_REG16, 15, 64},
+ {"sil", REG, X86_REG8X, 6, 64},
+ {"r10w", REG, X86_REG16, 10, 64},
+ {"ymm6", REG, X86_YMMREG, 6, 0},
+ {"ss", SEGREG, 0x36, 0x02, 64},
+ {"tr4", REG, X86_TRREG, 4, 0},
+ {"cr3", REG, X86_CRREG, 3, 0},
+ {"r11w", REG, X86_REG16, 11, 64},
+ {"xmm4", REG, X86_XMMREG, 4, 0},
+ {"st0", REG, X86_FPUREG, 0, 0},
+ {"dil", REG, X86_REG8X, 7, 64},
+ {"tr3", REG, X86_TRREG, 3, 0},
+ {"r13d", REG, X86_REG32, 13, 64},
+ {"r8w", REG, X86_REG16, 8, 64},
+ {"xmm13", REG, X86_XMMREG, 13, 64},
+ {"st3", REG, X86_FPUREG, 3, 0},
+ {"xmm15", REG, X86_XMMREG, 15, 64},
+ {"xmm10", REG, X86_XMMREG, 10, 64},
+ {"es", SEGREG, 0x26, 0x00, 64},
+ {"cr8", REG, X86_CRREG, 8, 64},
+ {"xmm7", REG, X86_XMMREG, 7, 0},
+ {"spl", REG, X86_REG8X, 4, 64},
+ {"r15", REG, X86_REG64, 15, 64},
+ {"cr4", REG, X86_CRREG, 4, 0},
+ {"fs", SEGREG, 0x64, 0x04, 0},
+ {"rcx", REG, X86_REG64, 1, 64},
+ {"mm0", REG, X86_MMXREG, 0, 0},
+ {"mm", REGGROUP, 0, X86_MMXREG, 0},
+ {"tr1", REG, X86_TRREG, 1, 0},
+ {"short", TARGETMOD, 0, X86_SHORT, 0},
+ {"st4", REG, X86_FPUREG, 4, 0},
+ {"cr0", REG, X86_CRREG, 0, 0},
+ {"xmm11", REG, X86_XMMREG, 11, 64},
+ {"mm4", REG, X86_MMXREG, 4, 0},
+ {"bh", REG, X86_REG8, 7, 0},
+ {"r15d", REG, X86_REG32, 15, 64},
+ {"dr2", REG, X86_DRREG, 2, 0},
+ {"r8d", REG, X86_REG32, 8, 64},
+ {"ymm7", REG, X86_YMMREG, 7, 0},
+ {"xmm9", REG, X86_XMMREG, 9, 64},
+ {"r12b", REG, X86_REG8, 12, 64},
+ {"st2", REG, X86_FPUREG, 2, 0},
+ {"ymm9", REG, X86_YMMREG, 9, 64},
+ {"st7", REG, X86_FPUREG, 7, 0},
+ {"bx", REG, X86_REG16, 3, 0},
+ {"ymm11", REG, X86_YMMREG, 11, 64},
+ {"ymm5", REG, X86_YMMREG, 5, 0},
+ {"ymm15", REG, X86_YMMREG, 15, 64},
+ {"rbp", REG, X86_REG64, 5, 64},
+ {"r13", REG, X86_REG64, 13, 64},
+ {"mm5", REG, X86_MMXREG, 5, 0},
+ {"si", REG, X86_REG16, 6, 0},
+ {"dl", REG, X86_REG8, 2, 0},
+ {"di", REG, X86_REG16, 7, 0},
+ {"cr2", REG, X86_CRREG, 2, 0},
+ {"r14d", REG, X86_REG32, 14, 64},
+ {"ymm14", REG, X86_YMMREG, 14, 64},
+ {"tr7", REG, X86_TRREG, 7, 0},
+ {"ds", SEGREG, 0x3e, 0x03, 64},
+ {"cx", REG, X86_REG16, 1, 0},
+ {"st", REGGROUP, 0, X86_FPUREG, 0},
+ {"edi", REG, X86_REG32, 7, 0},
+ {"al", REG, X86_REG8, 0, 0},
+ {"mm7", REG, X86_MMXREG, 7, 0},
+ {"ebx", REG, X86_REG32, 3, 0},
+ {"xmm2", REG, X86_XMMREG, 2, 0},
+ {"st5", REG, X86_FPUREG, 5, 0},
+ {"rip", REG, X86_RIP, 0, 64},
+ {"rbx", REG, X86_REG64, 3, 64},
+ {"to", TARGETMOD, 0, X86_TO, 0},
+ {"r11d", REG, X86_REG32, 11, 64},
+ {"dr5", REG, X86_DRREG, 5, 0},
+ {"dr1", REG, X86_DRREG, 1, 0},
+ {"near", TARGETMOD, 0, X86_NEAR, 0},
+ {"r14", REG, X86_REG64, 14, 64},
+ {"dh", REG, X86_REG8, 6, 0},
+ {"cl", REG, X86_REG8, 1, 0},
+ {"dr4", REG, X86_DRREG, 4, 0},
+ {"ymm10", REG, X86_YMMREG, 10, 64},
+ {"dr3", REG, X86_DRREG, 3, 0},
+ {"xmm5", REG, X86_XMMREG, 5, 0},
+ {"mm6", REG, X86_MMXREG, 6, 0},
+ {"r13w", REG, X86_REG16, 13, 64},
+ {"far", TARGETMOD, 0, X86_FAR, 0},
+ {"ymm0", REG, X86_YMMREG, 0, 0},
+ {"ymm", REGGROUP, 0, X86_YMMREG, 0},
+ {"ch", REG, X86_REG8, 5, 0},
+ {"xmm1", REG, X86_XMMREG, 1, 0},
+ {"esi", REG, X86_REG32, 6, 0},
+ {"r14b", REG, X86_REG8, 14, 64},
+ {"st1", REG, X86_FPUREG, 1, 0},
+ {"r8b", REG, X86_REG8, 8, 64},
+ {"r11b", REG, X86_REG8, 11, 64},
+ {"r13b", REG, X86_REG8, 13, 64},
+ {"ecx", REG, X86_REG32, 1, 0},
+ {"tr2", REG, X86_TRREG, 2, 0},
+ {"rdx", REG, X86_REG64, 2, 64},
+ {"r9d", REG, X86_REG32, 9, 64},
+ {"cs", SEGREG, 0x2e, 0x01, 0},
+ {"dr0", REG, X86_DRREG, 0, 0},
+ {"edx", REG, X86_REG32, 2, 0}
+ };
+ static const unsigned char tab[] = {
+ 0,0,125,22,0,0,85,0,85,168,0,0,0,7,113,0,
+ 0,0,0,22,183,0,0,11,42,55,0,0,82,0,88,235,
+ 0,0,0,0,0,0,183,85,0,0,145,113,220,125,22,0,
+ 88,183,0,7,0,0,0,7,0,125,113,87,131,116,7,0,
+ 113,7,0,113,0,87,87,7,7,7,113,40,85,125,113,85,
+ 0,0,22,235,0,131,125,113,0,22,0,220,0,220,0,120,
+ 116,0,124,184,0,0,0,183,92,125,0,92,125,0,0,177,
+ 7,0,0,7,0,45,0,214,180,113,211,163,142,0,88,173,
+ };
+
+ const struct regtmod_parse_data *ret;
+ unsigned long rsl, val = phash_lookup(key, len, 0x9e3779b9UL);
+ rsl = ((val>>25)^tab[val&0x7f]);
+ if (rsl >= 152) return NULL;
+ ret = &pd[rsl];
+ if (strcmp(key, ret->name) != 0) return NULL;
+ return ret;
+}
+
+
+
+yasm_arch_regtmod
+yasm_x86__parse_check_regtmod(yasm_arch *arch, const char *id, size_t id_len,
+ uintptr_t *data)
+{
+ yasm_arch_x86 *arch_x86 = (yasm_arch_x86 *)arch;
+ /*@null@*/ const struct regtmod_parse_data *pdata;
+ size_t i;
+ static char lcaseid[8];
+ unsigned int bits;
+ yasm_arch_regtmod type;
+
+ if (id_len > 7)
+ return YASM_ARCH_NOTREGTMOD;
+ for (i=0; i<id_len; i++)
+ lcaseid[i] = tolower(id[i]);
+ lcaseid[id_len] = '\0';
+
+ pdata = regtmod_find(lcaseid, id_len);
+ if (!pdata)
+ return YASM_ARCH_NOTREGTMOD;
+
+ type = (yasm_arch_regtmod)pdata->type;
+ bits = pdata->bits;
+
+ if (type == YASM_ARCH_REG && bits != 0 && arch_x86->mode_bits != bits) {
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("`%s' is a register in %u-bit mode"), id, bits);
+ return YASM_ARCH_NOTREGTMOD;
+ }
+
+ if (type == YASM_ARCH_SEGREG && bits != 0 && arch_x86->mode_bits == bits) {
+ yasm_warn_set(YASM_WARN_GENERAL,
+ N_("`%s' segment register ignored in %u-bit mode"), id,
+ bits);
+ }
+
+ if (type == YASM_ARCH_SEGREG)
+ *data = (pdata->size_prefix<<8) | pdata->data;
+ else
+ *data = pdata->size_prefix | pdata->data;
+ return type;
+}
+
diff --git a/contrib/tools/yasm/util.h b/contrib/tools/yasm/util.h
index 1de3fafd95..4174648a22 100644
--- a/contrib/tools/yasm/util.h
+++ b/contrib/tools/yasm/util.h
@@ -1,167 +1,167 @@
-/*
- * YASM utility functions.
- *
- * Includes standard headers and defines prototypes for replacement functions
- * if needed.
- *
- * Copyright (C) 2001-2007 Peter Johnson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef YASM_UTIL_H
-#define YASM_UTIL_H
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#if defined(HAVE_GNU_C_LIBRARY) || defined(__MINGW32__) || defined(__DJGPP__)
-
-/* Work around glibc's non-defining of certain things when using gcc -ansi */
-# ifdef __STRICT_ANSI__
-# undef __STRICT_ANSI__
-# endif
-
-/* Work around glibc's string inlines (in bits/string2.h) if needed */
-# ifdef NO_STRING_INLINES
-# define __NO_STRING_INLINES
-# endif
-
-#endif
-
-#if !defined(lint) && !defined(NDEBUG)
-# define NDEBUG
-#endif
-
-#include <stdio.h>
-#include <stdarg.h>
-
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-#ifdef HAVE_STRINGS_H
-#include <strings.h>
-#endif
-
+/*
+ * YASM utility functions.
+ *
+ * Includes standard headers and defines prototypes for replacement functions
+ * if needed.
+ *
+ * Copyright (C) 2001-2007 Peter Johnson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef YASM_UTIL_H
+#define YASM_UTIL_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#if defined(HAVE_GNU_C_LIBRARY) || defined(__MINGW32__) || defined(__DJGPP__)
+
+/* Work around glibc's non-defining of certain things when using gcc -ansi */
+# ifdef __STRICT_ANSI__
+# undef __STRICT_ANSI__
+# endif
+
+/* Work around glibc's string inlines (in bits/string2.h) if needed */
+# ifdef NO_STRING_INLINES
+# define __NO_STRING_INLINES
+# endif
+
+#endif
+
+#if !defined(lint) && !defined(NDEBUG)
+# define NDEBUG
+#endif
+
+#include <stdio.h>
+#include <stdarg.h>
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+
#if !defined(_musl_)
-#if __linux__ && __x86_64__
-__asm__(".symver memcpy,memcpy@GLIBC_2.2.5");
-#endif
+#if __linux__ && __x86_64__
+__asm__(".symver memcpy,memcpy@GLIBC_2.2.5");
+#endif
+#endif
+
+#include <libyasm-stdint.h>
+#include <libyasm/coretype.h>
+
+#ifdef lint
+# define _(String) String
+#else
+# ifdef HAVE_LOCALE_H
+# include <locale.h>
+# endif
+
+# ifdef ENABLE_NLS
+# include <libintl.h>
+# define _(String) gettext(String)
+# else
+# define gettext(Msgid) (Msgid)
+# define dgettext(Domainname, Msgid) (Msgid)
+# define dcgettext(Domainname, Msgid, Category) (Msgid)
+# define textdomain(Domainname) while (0) /* nothing */
+# define bindtextdomain(Domainname, Dirname) while (0) /* nothing */
+# define _(String) (String)
+# endif
+#endif
+
+#ifdef gettext_noop
+# define N_(String) gettext_noop(String)
+#else
+# define N_(String) (String)
+#endif
+
+#ifdef HAVE_MERGESORT
+#define yasm__mergesort(a, b, c, d) mergesort(a, b, c, d)
+#endif
+
+#ifdef HAVE_STRSEP
+#define yasm__strsep(a, b) strsep(a, b)
+#endif
+
+#ifdef HAVE_STRCASECMP
+# define yasm__strcasecmp(x, y) strcasecmp(x, y)
+# define yasm__strncasecmp(x, y, n) strncasecmp(x, y, n)
+#elif HAVE_STRICMP
+# define yasm__strcasecmp(x, y) stricmp(x, y)
+# define yasm__strncasecmp(x, y, n) strnicmp(x, y, n)
+#elif HAVE__STRICMP
+# define yasm__strcasecmp(x, y) _stricmp(x, y)
+# define yasm__strncasecmp(x, y, n) _strnicmp(x, y, n)
+#elif HAVE_STRCMPI
+# define yasm__strcasecmp(x, y) strcmpi(x, y)
+# define yasm__strncasecmp(x, y, n) strncmpi(x, y, n)
+#else
+# define USE_OUR_OWN_STRCASECMP
#endif
-
-#include <libyasm-stdint.h>
-#include <libyasm/coretype.h>
-
-#ifdef lint
-# define _(String) String
-#else
-# ifdef HAVE_LOCALE_H
-# include <locale.h>
-# endif
-
-# ifdef ENABLE_NLS
-# include <libintl.h>
-# define _(String) gettext(String)
-# else
-# define gettext(Msgid) (Msgid)
-# define dgettext(Domainname, Msgid) (Msgid)
-# define dcgettext(Domainname, Msgid, Category) (Msgid)
-# define textdomain(Domainname) while (0) /* nothing */
-# define bindtextdomain(Domainname, Dirname) while (0) /* nothing */
-# define _(String) (String)
-# endif
-#endif
-
-#ifdef gettext_noop
-# define N_(String) gettext_noop(String)
-#else
-# define N_(String) (String)
-#endif
-
-#ifdef HAVE_MERGESORT
-#define yasm__mergesort(a, b, c, d) mergesort(a, b, c, d)
-#endif
-
-#ifdef HAVE_STRSEP
-#define yasm__strsep(a, b) strsep(a, b)
-#endif
-
-#ifdef HAVE_STRCASECMP
-# define yasm__strcasecmp(x, y) strcasecmp(x, y)
-# define yasm__strncasecmp(x, y, n) strncasecmp(x, y, n)
-#elif HAVE_STRICMP
-# define yasm__strcasecmp(x, y) stricmp(x, y)
-# define yasm__strncasecmp(x, y, n) strnicmp(x, y, n)
-#elif HAVE__STRICMP
-# define yasm__strcasecmp(x, y) _stricmp(x, y)
-# define yasm__strncasecmp(x, y, n) _strnicmp(x, y, n)
-#elif HAVE_STRCMPI
-# define yasm__strcasecmp(x, y) strcmpi(x, y)
-# define yasm__strncasecmp(x, y, n) strncmpi(x, y, n)
-#else
-# define USE_OUR_OWN_STRCASECMP
-#endif
-
-#include <libyasm/compat-queue.h>
-
-#ifdef WITH_DMALLOC
-# include <dmalloc.h>
-# define yasm__xstrdup(str) xstrdup(str)
-# define yasm_xmalloc(size) xmalloc(size)
-# define yasm_xcalloc(count, size) xcalloc(count, size)
-# define yasm_xrealloc(ptr, size) xrealloc(ptr, size)
-# define yasm_xfree(ptr) xfree(ptr)
-#endif
-
-/* Bit-counting: used primarily by HAMT but also in a few other places. */
-#define BC_TWO(c) (0x1ul << (c))
-#define BC_MSK(c) (((unsigned long)(-1)) / (BC_TWO(BC_TWO(c)) + 1ul))
-#define BC_COUNT(x,c) ((x) & BC_MSK(c)) + (((x) >> (BC_TWO(c))) & BC_MSK(c))
-#define BitCount(d, s) do { \
- d = BC_COUNT(s, 0); \
- d = BC_COUNT(d, 1); \
- d = BC_COUNT(d, 2); \
- d = BC_COUNT(d, 3); \
- d = BC_COUNT(d, 4); \
- } while (0)
-
-/** Determine if a value is exactly a power of 2. Zero is treated as a power
- * of two.
- * \param x value
- * \return Nonzero if x is a power of 2.
- */
-#define is_exp2(x) ((x & (x - 1)) == 0)
-
-#ifndef NELEMS
-/** Get the number of elements in an array.
- * \internal
- * \param array array
- * \return Number of elements.
- */
-#define NELEMS(array) (sizeof(array) / sizeof(array[0]))
-#endif
-
+
+#include <libyasm/compat-queue.h>
+
+#ifdef WITH_DMALLOC
+# include <dmalloc.h>
+# define yasm__xstrdup(str) xstrdup(str)
+# define yasm_xmalloc(size) xmalloc(size)
+# define yasm_xcalloc(count, size) xcalloc(count, size)
+# define yasm_xrealloc(ptr, size) xrealloc(ptr, size)
+# define yasm_xfree(ptr) xfree(ptr)
+#endif
+
+/* Bit-counting: used primarily by HAMT but also in a few other places. */
+#define BC_TWO(c) (0x1ul << (c))
+#define BC_MSK(c) (((unsigned long)(-1)) / (BC_TWO(BC_TWO(c)) + 1ul))
+#define BC_COUNT(x,c) ((x) & BC_MSK(c)) + (((x) >> (BC_TWO(c))) & BC_MSK(c))
+#define BitCount(d, s) do { \
+ d = BC_COUNT(s, 0); \
+ d = BC_COUNT(d, 1); \
+ d = BC_COUNT(d, 2); \
+ d = BC_COUNT(d, 3); \
+ d = BC_COUNT(d, 4); \
+ } while (0)
+
+/** Determine if a value is exactly a power of 2. Zero is treated as a power
+ * of two.
+ * \param x value
+ * \return Nonzero if x is a power of 2.
+ */
+#define is_exp2(x) ((x & (x - 1)) == 0)
+
+#ifndef NELEMS
+/** Get the number of elements in an array.
+ * \internal
+ * \param array array
+ * \return Number of elements.
+ */
+#define NELEMS(array) (sizeof(array) / sizeof(array[0]))
+#endif
+
char * yasm_replace_path(const char* replace_map[], int size, const char* str, int pref_len);
-#endif
+#endif
diff --git a/contrib/tools/yasm/ya.make b/contrib/tools/yasm/ya.make
index 8a662ea4e1..d1f8adc08f 100644
--- a/contrib/tools/yasm/ya.make
+++ b/contrib/tools/yasm/ya.make
@@ -1,14 +1,14 @@
-# Autogenerated for platforms:
-# darwin-x86_64
-# linux-x86_64
-# windows-x86_64
-
-OWNER(
- somov
+# Autogenerated for platforms:
+# darwin-x86_64
+# linux-x86_64
+# windows-x86_64
+
+OWNER(
+ somov
g:contrib
g:ymake
-)
-
+)
+
VERSION(1.3.0)
IF (USE_PREBUILT_TOOLS)
@@ -21,4 +21,4 @@ ENDIF()
RECURSE(
bin
-)
+)